diff --git a/.common-ci.yml b/.common-ci.yml deleted file mode 100644 index 3b08e2e8c..000000000 --- a/.common-ci.yml +++ /dev/null @@ -1,250 +0,0 @@ -# Copyright (c) 2021-2022, NVIDIA CORPORATION. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -default: - image: docker - services: - - name: docker:dind - command: ["--experimental"] - -variables: - GIT_SUBMODULE_STRATEGY: recursive - BUILD_MULTI_ARCH_IMAGES: "true" - -stages: - - trigger - - image - - lint - - go-checks - - go-build - - unit-tests - - package-build - - image-build - - test - - scan - - release - - sign - -.pipeline-trigger-rules: - rules: - # We trigger the pipeline if started manually - - if: $CI_PIPELINE_SOURCE == "web" - # We trigger the pipeline on the main branch - - if: $CI_COMMIT_BRANCH == "main" - # We trigger the pipeline on the release- branches - - if: $CI_COMMIT_BRANCH =~ /^release-.*$/ - # We trigger the pipeline on tags - - if: $CI_COMMIT_TAG && $CI_COMMIT_TAG != "" - -workflow: - rules: - # We trigger the pipeline on a merge request - - if: $CI_PIPELINE_SOURCE == 'merge_request_event' - # We then add all the regular triggers - - !reference [.pipeline-trigger-rules, rules] - -# The main or manual job is used to filter out distributions or architectures that are not required on -# every build. -.main-or-manual: - rules: - - !reference [.pipeline-trigger-rules, rules] - - if: $CI_PIPELINE_SOURCE == "schedule" - when: manual - -# The trigger-pipeline job adds a manualy triggered job to the pipeline on merge requests. -trigger-pipeline: - stage: trigger - script: - - echo "starting pipeline" - rules: - - !reference [.main-or-manual, rules] - - if: $CI_PIPELINE_SOURCE == "merge_request_event" - when: manual - allow_failure: false - - when: always - -# Define the distribution targets -.dist-centos7: - rules: - - !reference [.main-or-manual, rules] - variables: - DIST: centos7 - -.dist-centos8: - variables: - DIST: centos8 - -.dist-ubi8: - rules: - - !reference [.main-or-manual, rules] - variables: - DIST: ubi8 - -.dist-ubuntu18.04: - variables: - DIST: ubuntu18.04 - -.dist-ubuntu20.04: - variables: - DIST: ubuntu20.04 - -.dist-packaging: - variables: - DIST: packaging - -# Define architecture targets -.arch-aarch64: - variables: - ARCH: aarch64 - -.arch-amd64: - variables: - ARCH: amd64 - -.arch-arm64: - variables: - ARCH: arm64 - -.arch-ppc64le: - rules: - - !reference [.main-or-manual, rules] - variables: - ARCH: ppc64le - -.arch-x86_64: - variables: - ARCH: x86_64 - -# Define the platform targets -.platform-amd64: - variables: - PLATFORM: linux/amd64 - -.platform-arm64: - variables: - PLATFORM: linux/arm64 - -# Define test helpers -.integration: - stage: test - variables: - IMAGE_NAME: "${CI_REGISTRY_IMAGE}/container-toolkit" - VERSION: "${CI_COMMIT_SHORT_SHA}" - before_script: - - apk add --no-cache make bash jq - - docker login -u "${CI_REGISTRY_USER}" -p "${CI_REGISTRY_PASSWORD}" "${CI_REGISTRY}" - - docker pull "${IMAGE_NAME}:${VERSION}-${DIST}" - script: - - make -f deployments/container/Makefile test-${DIST} - -# Define the test targets -test-packaging: - extends: - - .integration - - .dist-packaging - needs: - - image-packaging - -# Download the regctl binary for use in the release steps -.regctl-setup: - before_script: - - export REGCTL_VERSION=v0.4.5 - - apk add --no-cache curl - - mkdir -p bin - - curl -sSLo bin/regctl https://github.com/regclient/regclient/releases/download/${REGCTL_VERSION}/regctl-linux-amd64 - - chmod a+x bin/regctl - - export PATH=$(pwd)/bin:${PATH} - -# .release forms the base of the deployment jobs which push images to the CI registry. -# This is extended with the version to be deployed (e.g. the SHA or TAG) and the -# target os. -.release: - stage: release - variables: - # Define the source image for the release - IMAGE_NAME: "${CI_REGISTRY_IMAGE}/container-toolkit" - VERSION: "${CI_COMMIT_SHORT_SHA}" - # OUT_IMAGE_VERSION is overridden for external releases - OUT_IMAGE_VERSION: "${CI_COMMIT_SHORT_SHA}" - before_script: - - !reference [.regctl-setup, before_script] - - # We ensure that the OUT_IMAGE_VERSION is set - - 'echo Version: ${OUT_IMAGE_VERSION} ; [[ -n "${OUT_IMAGE_VERSION}" ]] || exit 1' - - # In the case where we are deploying a different version to the CI_COMMIT_SHA, we - # need to tag the image. - # Note: a leading 'v' is stripped from the version if present - - apk add --no-cache make bash - script: - # Log in to the "output" registry, tag the image and push the image - - 'echo "Logging in to CI registry ${CI_REGISTRY}"' - - regctl registry login "${CI_REGISTRY}" -u "${CI_REGISTRY_USER}" -p "${CI_REGISTRY_PASSWORD}" - - '[ ${CI_REGISTRY} = ${OUT_REGISTRY} ] || echo "Logging in to output registry ${OUT_REGISTRY}"' - - '[ ${CI_REGISTRY} = ${OUT_REGISTRY} ] || regctl registry login "${OUT_REGISTRY}" -u "${OUT_REGISTRY_USER}" -p "${OUT_REGISTRY_TOKEN}"' - - # Since OUT_IMAGE_NAME and OUT_IMAGE_VERSION are set, this will push the CI image to the - # Target - - make -f deployments/container/Makefile push-${DIST} - -# Define a staging release step that pushes an image to an internal "staging" repository -# This is triggered for all pipelines (i.e. not only tags) to test the pipeline steps -# outside of the release process. -.release:staging: - extends: - - .release - variables: - OUT_REGISTRY_USER: "${CI_REGISTRY_USER}" - OUT_REGISTRY_TOKEN: "${CI_REGISTRY_PASSWORD}" - OUT_REGISTRY: "${CI_REGISTRY}" - OUT_IMAGE_NAME: "${CI_REGISTRY_IMAGE}/staging/container-toolkit" - -# Define an external release step that pushes an image to an external repository. -# This includes a devlopment image off main. -.release:external: - extends: - - .release - variables: - FORCE_PUBLISH_IMAGES: "yes" - rules: - - if: $CI_COMMIT_TAG - variables: - OUT_IMAGE_VERSION: "${CI_COMMIT_TAG}" - - if: $CI_COMMIT_BRANCH == $RELEASE_DEVEL_BRANCH - variables: - OUT_IMAGE_VERSION: "${DEVEL_RELEASE_IMAGE_VERSION}" - -# Define the release jobs -release:staging-ubi8: - extends: - - .release:staging - - .dist-ubi8 - needs: - - image-ubi8 - -release:staging-ubuntu20.04: - extends: - - .release:staging - - .dist-ubuntu20.04 - needs: - - test-toolkit-ubuntu20.04 - - test-containerd-ubuntu20.04 - - test-crio-ubuntu20.04 - - test-docker-ubuntu20.04 - -release:staging-packaging: - extends: - - .release:staging - - .dist-packaging - needs: - - test-packaging diff --git a/.github/copy-pr-bot.yaml b/.github/copy-pr-bot.yaml new file mode 100644 index 000000000..c61a81b13 --- /dev/null +++ b/.github/copy-pr-bot.yaml @@ -0,0 +1,3 @@ +# https://docs.gha-runners.nvidia.com/apps/copy-pr-bot/#configuration + +enabled: true diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 3ca934941..9ea8b7fb3 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -3,72 +3,118 @@ version: 2 updates: +# main branch - package-ecosystem: "gomod" target-branch: main - directory: "/" + directories: + - "/" + - "deployments/devel" + - "tests" schedule: - interval: "weekly" - day: "sunday" - ignore: - - dependency-name: k8s.io/* + interval: "daily" labels: - dependencies + groups: + k8sio: + patterns: + - k8s.io/* + exclude-patterns: + - k8s.io/klog/* - package-ecosystem: "docker" target-branch: main - directory: "/deployments/container" + directories: + # CUDA image + - "/deployments/container" + # Golang version + - "/deployments/devel" schedule: interval: "daily" + labels: + - dependencies - - package-ecosystem: "gomod" - # This defines a specific dependabot rule for the latest release-* branch. - target-branch: release-1.16 + - package-ecosystem: "github-actions" + target-branch: main directory: "/" schedule: - interval: "weekly" - day: "sunday" - ignore: - - dependency-name: k8s.io/* + interval: "daily" labels: - dependencies - - maintenance - - package-ecosystem: "docker" - target-branch: release-1.16 - directory: "/deployments/container" + # Allow dependabot to update the libnvidia-container submodule. + - package-ecosystem: "gitsubmodule" + target-branch: main + directory: "/" + allow: + - dependency-name: "third_party/libnvidia-container" schedule: interval: "daily" labels: - dependencies - - maintenance + - libnvidia-container +# The release branch(es): - package-ecosystem: "gomod" - target-branch: main - directory: "deployments/devel" + target-branch: release-1.17 + directories: + - "/" + # We don't update development or test dependencies on release branches + # - "deployments/devel" + # - "tests" schedule: interval: "weekly" day: "sunday" + labels: + - dependencies + - maintenance + ignore: + # For release branches we only consider patch updates. + - dependency-name: "*" + update-types: + - version-update:semver-major + - version-update:semver-minor + groups: + k8sio: + patterns: + - k8s.io/* + exclude-patterns: + - k8s.io/klog/* - # A dependabot rule to bump the golang version. - package-ecosystem: "docker" - target-branch: main - directory: "/deployments/devel" + target-branch: release-1.17 + directories: + # CUDA image + - "/deployments/container" + # Golang version + - "/deployments/devel" schedule: - interval: "daily" + interval: "weekly" + day: "sunday" + ignore: + # For release branches we only apply patch updates to the golang version. + - dependency-name: "*golang*" + update-types: + - version-update:semver-major + - version-update:semver-minor + labels: + - dependencies + - maintenance - package-ecosystem: "github-actions" + target-branch: release-1.17 directory: "/" schedule: - interval: "daily" + interval: "weekly" + day: "sunday" + labels: + - dependencies + - maintenance - # Allow dependabot to update the libnvidia-container submodule. - - package-ecosystem: "gitsubmodule" - target-branch: main + # Github actions need to be gh-pages branches. + - package-ecosystem: "github-actions" + target-branch: gh-pages directory: "/" - allow: - - dependency-name: "third_party/libnvidia-container" schedule: interval: "daily" labels: - dependencies - - libnvidia-container diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 000000000..4efcaf2ac --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,53 @@ +# Copyright 2025 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: CI Pipeline + +on: + push: + branches: + - "pull-request/[0-9]+" + - main + - release-* + +jobs: + code-scanning: + uses: ./.github/workflows/code_scanning.yaml + + variables: + runs-on: ubuntu-latest + outputs: + version: ${{ steps.version.outputs.version }} + steps: + - name: Generate Commit Short SHA + id: version + run: echo "version=$(echo $GITHUB_SHA | cut -c1-8)" >> "$GITHUB_OUTPUT" + + golang: + uses: ./.github/workflows/golang.yaml + + image: + uses: ./.github/workflows/image.yaml + needs: [variables, golang, code-scanning] + secrets: inherit + with: + version: ${{ needs.variables.outputs.version }} + build_multi_arch_images: ${{ github.ref_name == 'main' || startsWith(github.ref_name, 'release-') }} + + e2e-test: + needs: [image, variables] + secrets: inherit + uses: ./.github/workflows/e2e.yaml + with: + version: ${{ needs.variables.outputs.version }} diff --git a/.github/workflows/code_scanning.yaml b/.github/workflows/code_scanning.yaml new file mode 100644 index 000000000..39774a599 --- /dev/null +++ b/.github/workflows/code_scanning.yaml @@ -0,0 +1,49 @@ +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: "CodeQL" + +on: + workflow_call: {} + pull_request: + types: + - opened + - synchronize + branches: + - main + - release-* + +jobs: + analyze: + name: Analyze Go code with CodeQL + runs-on: ubuntu-latest + timeout-minutes: 360 + permissions: + security-events: write + packages: read + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Initialize CodeQL + uses: github/codeql-action/init@v3 + with: + languages: go + build-mode: manual + - shell: bash + run: | + make build + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v3 + with: + category: "/language:go" diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml new file mode 100644 index 000000000..c0bf9ed8c --- /dev/null +++ b/.github/workflows/e2e.yaml @@ -0,0 +1,103 @@ +# Copyright 2025 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: End-to-end Tests + +on: + workflow_call: + inputs: + version: + required: true + type: string + secrets: + AWS_ACCESS_KEY_ID: + required: true + AWS_SECRET_ACCESS_KEY: + required: true + AWS_SSH_KEY: + required: true + E2E_SSH_USER: + required: true + SLACK_BOT_TOKEN: + required: true + SLACK_CHANNEL_ID: + required: true + +jobs: + e2e-tests: + runs-on: linux-amd64-cpu4 + steps: + - name: Check out code + uses: actions/checkout@v4 + + - name: Calculate build vars + id: vars + run: | + echo "COMMIT_SHORT_SHA=${GITHUB_SHA:0:8}" >> $GITHUB_ENV + echo "LOWERCASE_REPO_OWNER=$(echo "${GITHUB_REPOSITORY_OWNER}" | awk '{print tolower($0)}')" >> $GITHUB_ENV + GOLANG_VERSION=$(./hack/golang-version.sh) + echo "GOLANG_VERSION=${GOLANG_VERSION##GOLANG_VERSION := }" >> $GITHUB_ENV + + - name: Install Go + uses: actions/setup-go@v5 + with: + go-version: ${{ env.GOLANG_VERSION }} + + - name: Set up Holodeck + uses: NVIDIA/holodeck@v0.2.12 + with: + aws_access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws_ssh_key: ${{ secrets.AWS_SSH_KEY }} + holodeck_config: "tests/e2e/infra/aws.yaml" + + - name: Get public dns name + id: holodeck_public_dns_name + uses: mikefarah/yq@master + with: + cmd: yq '.status.properties[] | select(.name == "public-dns-name") | .value' /github/workspace/.cache/holodeck.yaml + + - name: Run e2e tests + env: + E2E_INSTALL_CTK: "true" + E2E_IMAGE_NAME: ghcr.io/nvidia/container-toolkit + E2E_IMAGE_TAG: ${{ inputs.version }} + E2E_SSH_USER: ${{ secrets.E2E_SSH_USER }} + E2E_SSH_HOST: ${{ steps.holodeck_public_dns_name.outputs.result }} + run: | + e2e_ssh_key=$(mktemp) + echo "${{ secrets.AWS_SSH_KEY }}" > "$e2e_ssh_key" + chmod 600 "$e2e_ssh_key" + export E2E_SSH_KEY="$e2e_ssh_key" + + make -f tests/e2e/Makefile test + + - name: Archive Ginkgo logs + uses: actions/upload-artifact@v4 + with: + name: ginkgo-logs + path: ginkgo.json + retention-days: 15 + - name: Send Slack alert notification + if: ${{ failure() }} + uses: slackapi/slack-github-action@v2.1.1 + with: + method: chat.postMessage + token: ${{ secrets.SLACK_BOT_TOKEN }} + payload: | + channel: ${{ secrets.SLACK_CHANNEL_ID }} + text: | + :x: On repository ${{ github.repository }}, the Workflow *${{ github.workflow }}* has failed. + + Details: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }} diff --git a/.github/workflows/golang.yaml b/.github/workflows/golang.yaml index 34b1caf71..129ea10a2 100644 --- a/.github/workflows/golang.yaml +++ b/.github/workflows/golang.yaml @@ -15,6 +15,7 @@ name: Golang on: + workflow_call: {} pull_request: types: - opened @@ -22,10 +23,6 @@ on: branches: - main - release-* - push: - branches: - - main - - release-* jobs: check: @@ -33,52 +30,74 @@ jobs: steps: - uses: actions/checkout@v4 name: Checkout code + - name: Get Golang version id: vars run: | GOLANG_VERSION=$(./hack/golang-version.sh) echo "GOLANG_VERSION=${GOLANG_VERSION##GOLANG_VERSION := }" >> $GITHUB_ENV + - name: Install Go uses: actions/setup-go@v5 with: go-version: ${{ env.GOLANG_VERSION }} + - name: Lint - uses: golangci/golangci-lint-action@v6 + uses: golangci/golangci-lint-action@v8 with: version: latest args: -v --timeout 5m skip-cache: true + - name: Check golang modules - run: make check-vendor + run: | + make check-vendor + make -C deployments/devel check-modules + test: name: Unit test runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 + - name: Get Golang version id: vars run: | GOLANG_VERSION=$(./hack/golang-version.sh) echo "GOLANG_VERSION=${GOLANG_VERSION##GOLANG_VERSION := }" >> $GITHUB_ENV + - name: Install Go uses: actions/setup-go@v5 with: go-version: ${{ env.GOLANG_VERSION }} - - run: make test + + - name: Run unit tests and generate coverage report + run: make coverage + + - name: Upload to Coveralls + continue-on-error: true + uses: coverallsapp/github-action@v2 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + file: coverage.out + build: name: Build runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 + - name: Get Golang version id: vars run: | GOLANG_VERSION=$(./hack/golang-version.sh) echo "GOLANG_VERSION=${GOLANG_VERSION##GOLANG_VERSION ?= }" >> $GITHUB_ENV + - name: Install Go uses: actions/setup-go@v5 with: go-version: ${{ env.GOLANG_VERSION }} + - run: make build diff --git a/.github/workflows/image.yaml b/.github/workflows/image.yaml index 5b077f74c..c4feb648d 100644 --- a/.github/workflows/image.yaml +++ b/.github/workflows/image.yaml @@ -16,17 +16,14 @@ name: image on: - pull_request: - types: - - opened - - synchronize - branches: - - main - - release-* - push: - branches: - - main - - release-* + workflow_call: + inputs: + version: + required: true + type: string + build_multi_arch_images: + required: true + type: string jobs: packages: @@ -41,7 +38,7 @@ jobs: - centos7-x86_64 - centos8-ppc64le ispr: - - ${{github.event_name == 'pull_request'}} + - ${{ github.ref_name != 'main' && !startsWith( github.ref_name, 'release-' ) }} exclude: - ispr: true target: ubuntu18.04-arm64 @@ -52,18 +49,25 @@ jobs: - ispr: true target: centos8-ppc64le fail-fast: false + steps: - uses: actions/checkout@v4 name: Check out code + - name: Set up QEMU uses: docker/setup-qemu-action@v3 + with: + image: tonistiigi/binfmt:master + - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 + - name: build ${{ matrix.target }} packages run: | sudo apt-get install -y coreutils build-essential sed git bash make echo "Building packages" ./scripts/build-packages.sh ${{ matrix.target }} + - name: 'Upload Artifacts' uses: actions/upload-artifact@v4 with: @@ -75,47 +79,22 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - dist: - - ubuntu20.04 - - ubi8 + target: + - application - packaging - ispr: - - ${{github.event_name == 'pull_request'}} - exclude: - - ispr: true - dist: ubi8 needs: packages steps: - uses: actions/checkout@v4 name: Check out code - - name: Calculate build vars - id: vars - run: | - echo "COMMIT_SHORT_SHA=${GITHUB_SHA:0:8}" >> $GITHUB_ENV - echo "LOWERCASE_REPO_OWNER=$(echo "${GITHUB_REPOSITORY_OWNER}" | awk '{print tolower($0)}')" >> $GITHUB_ENV - REPO_FULL_NAME="${{ github.event.pull_request.head.repo.full_name }}" - echo "${REPO_FULL_NAME}" - echo "LABEL_IMAGE_SOURCE=https://github.com/${REPO_FULL_NAME}" >> $GITHUB_ENV - - PUSH_ON_BUILD="false" - BUILD_MULTI_ARCH_IMAGES="false" - if [[ "${{ github.event_name }}" == "pull_request" ]]; then - if [[ "${{ github.actor }}" != "dependabot[bot]" && "${{ github.event.pull_request.head.repo.full_name }}" == "${{ github.repository }}" ]]; then - # For non-fork PRs that are not created by dependabot we do push images - PUSH_ON_BUILD="true" - fi - elif [[ "${{ github.event_name }}" == "push" ]]; then - # On push events we do generate images and enable muilti-arch builds - PUSH_ON_BUILD="true" - BUILD_MULTI_ARCH_IMAGES="true" - fi - echo "PUSH_ON_BUILD=${PUSH_ON_BUILD}" >> $GITHUB_ENV - echo "BUILD_MULTI_ARCH_IMAGES=${BUILD_MULTI_ARCH_IMAGES}" >> $GITHUB_ENV - name: Set up QEMU uses: docker/setup-qemu-action@v3 + with: + image: tonistiigi/binfmt:master + - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 + - name: Get built packages uses: actions/download-artifact@v4 with: @@ -129,10 +108,13 @@ jobs: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} + - name: Build image env: - IMAGE_NAME: ghcr.io/${LOWERCASE_REPO_OWNER}/container-toolkit - VERSION: ${COMMIT_SHORT_SHA} + IMAGE_NAME: ghcr.io/nvidia/container-toolkit + VERSION: ${{ inputs.version }} + PUSH_ON_BUILD: "true" + BUILD_MULTI_ARCH_IMAGES: ${{ inputs.build_multi_arch_images }} run: | echo "${VERSION}" - make -f deployments/container/Makefile build-${{ matrix.dist }} + make -f deployments/container/Makefile build-${{ matrix.target }} diff --git a/.gitignore b/.gitignore index fb410e1df..c96cf2d0c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,13 +1,11 @@ -dist -artifacts +/dist +/artifacts *.swp *.swo /coverage.out* -/test/output/ -/nvidia-container-runtime -/nvidia-container-runtime.* -/nvidia-container-runtime-hook -/nvidia-container-toolkit -/nvidia-ctk +/tests/output/ +/nvidia-* /shared-* -/release-* \ No newline at end of file +/release-* +/bin +/toolkit-test diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index f90bb629e..000000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,234 +0,0 @@ -# Copyright (c) 2019-2022, NVIDIA CORPORATION. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -include: - - .common-ci.yml - -# Define the package build helpers -.multi-arch-build: - before_script: - - apk add --no-cache coreutils build-base sed git bash make - - '[[ -n "${SKIP_QEMU_SETUP}" ]] || docker run --rm --privileged multiarch/qemu-user-static --reset -p yes -c yes' - -.package-artifacts: - variables: - ARTIFACTS_NAME: "toolkit-container-${CI_PIPELINE_ID}" - ARTIFACTS_ROOT: "toolkit-container-${CI_PIPELINE_ID}" - DIST_DIR: ${CI_PROJECT_DIR}/${ARTIFACTS_ROOT} - -.package-build: - extends: - - .multi-arch-build - - .package-artifacts - stage: package-build - timeout: 3h - script: - - ./scripts/build-packages.sh ${DIST}-${ARCH} - - artifacts: - name: ${ARTIFACTS_NAME} - paths: - - ${ARTIFACTS_ROOT} - needs: - - job: package-meta-packages - artifacts: true - -# Define the package build targets -package-meta-packages: - extends: - - .package-artifacts - stage: package-build - variables: - SKIP_LIBNVIDIA_CONTAINER: "yes" - SKIP_NVIDIA_CONTAINER_TOOLKIT: "yes" - parallel: - matrix: - - PACKAGING: [deb, rpm] - before_script: - - apk add --no-cache coreutils build-base sed git bash make - script: - - ./scripts/build-packages.sh ${PACKAGING} - artifacts: - name: ${ARTIFACTS_NAME} - paths: - - ${ARTIFACTS_ROOT} - -package-centos7-aarch64: - extends: - - .package-build - - .dist-centos7 - - .arch-aarch64 - -package-centos7-x86_64: - extends: - - .package-build - - .dist-centos7 - - .arch-x86_64 - -package-centos8-ppc64le: - extends: - - .package-build - - .dist-centos8 - - .arch-ppc64le - -package-ubuntu18.04-amd64: - extends: - - .package-build - - .dist-ubuntu18.04 - - .arch-amd64 - -package-ubuntu18.04-arm64: - extends: - - .package-build - - .dist-ubuntu18.04 - - .arch-arm64 - -package-ubuntu18.04-ppc64le: - extends: - - .package-build - - .dist-ubuntu18.04 - - .arch-ppc64le - -.buildx-setup: - before_script: - - export BUILDX_VERSION=v0.6.3 - - apk add --no-cache curl - - mkdir -p ~/.docker/cli-plugins - - curl -sSLo ~/.docker/cli-plugins/docker-buildx "https://github.com/docker/buildx/releases/download/${BUILDX_VERSION}/buildx-${BUILDX_VERSION}.linux-amd64" - - chmod a+x ~/.docker/cli-plugins/docker-buildx - - - docker buildx create --use --platform=linux/amd64,linux/arm64 - - - '[[ -n "${SKIP_QEMU_SETUP}" ]] || docker run --rm --privileged multiarch/qemu-user-static --reset -p yes' - -# Define the image build targets -.image-build: - stage: image-build - variables: - IMAGE_NAME: "${CI_REGISTRY_IMAGE}/container-toolkit" - VERSION: "${CI_COMMIT_SHORT_SHA}" - PUSH_ON_BUILD: "true" - before_script: - - !reference [.buildx-setup, before_script] - - - apk add --no-cache bash make git - - 'echo "Logging in to CI registry ${CI_REGISTRY}"' - - docker login -u "${CI_REGISTRY_USER}" -p "${CI_REGISTRY_PASSWORD}" "${CI_REGISTRY}" - script: - - make -f deployments/container/Makefile build-${DIST} - -image-ubi8: - extends: - - .image-build - - .package-artifacts - - .dist-ubi8 - needs: - # Note: The ubi8 image uses the centos7 packages - - package-centos7-aarch64 - - package-centos7-x86_64 - -image-ubuntu20.04: - extends: - - .image-build - - .package-artifacts - - .dist-ubuntu20.04 - needs: - - package-ubuntu18.04-amd64 - - package-ubuntu18.04-arm64 - - job: package-ubuntu18.04-ppc64le - optional: true - -# The DIST=packaging target creates an image containing all built packages -image-packaging: - extends: - - .image-build - - .package-artifacts - - .dist-packaging - needs: - - job: package-ubuntu18.04-amd64 - - job: package-ubuntu18.04-arm64 - - job: package-amazonlinux2-aarch64 - optional: true - - job: package-amazonlinux2-x86_64 - optional: true - - job: package-centos7-aarch64 - optional: true - - job: package-centos7-x86_64 - optional: true - - job: package-centos8-ppc64le - optional: true - - job: package-debian10-amd64 - optional: true - - job: package-opensuse-leap15.1-x86_64 - optional: true - - job: package-ubuntu18.04-ppc64le - optional: true - -# Define publish test helpers -.test:toolkit: - extends: - - .integration - variables: - TEST_CASES: "toolkit" - -.test:docker: - extends: - - .integration - variables: - TEST_CASES: "docker" - -.test:containerd: - # TODO: The containerd tests fail due to issues with SIGHUP. - # Until this is resolved with retry up to twice and allow failure here. - retry: 2 - allow_failure: true - extends: - - .integration - variables: - TEST_CASES: "containerd" - -.test:crio: - extends: - - .integration - variables: - TEST_CASES: "crio" - -# Define the test targets -test-toolkit-ubuntu20.04: - extends: - - .test:toolkit - - .dist-ubuntu20.04 - needs: - - image-ubuntu20.04 - -test-containerd-ubuntu20.04: - extends: - - .test:containerd - - .dist-ubuntu20.04 - needs: - - image-ubuntu20.04 - -test-crio-ubuntu20.04: - extends: - - .test:crio - - .dist-ubuntu20.04 - needs: - - image-ubuntu20.04 - -test-docker-ubuntu20.04: - extends: - - .test:docker - - .dist-ubuntu20.04 - needs: - - image-ubuntu20.04 diff --git a/.golangci.yml b/.golangci.yml index d9cab6c7a..e0204a449 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,36 +1,72 @@ -run: - deadline: 10m +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +version: "2" linters: enable: - contextcheck - gocritic - - gofmt - - goimports - gosec - - gosimple - - govet - - ineffassign - misspell - - staticcheck - unconvert - -linters-settings: - goimports: - local-prefixes: github.com/NVIDIA/nvidia-container-toolkit - -issues: - exclude: - # The legacy hook relies on spec.Hooks.Prestart, which is deprecated as of the v1.2.0 OCI runtime spec. - - "SA1019:(.+).Prestart is deprecated(.+)" - exclude-rules: - # Exclude the gocritic dupSubExpr issue for cgo files. - - path: internal/dxcore/dxcore.go - linters: - - gocritic - text: dupSubExpr - # Exclude the checks for usage of returns to config.Delete(Path) in the crio and containerd config packages. - - path: pkg/config/engine/ - linters: - - errcheck - text: config.Delete + exclusions: + generated: lax + presets: + - comments + - common-false-positives + - legacy + - std-error-handling + rules: + # Exclude the gocritic dupSubExpr issue for cgo files. + - linters: + - gocritic + path: internal/dxcore/dxcore.go + text: dupSubExpr + # Exclude the checks for usage of returns to config.Delete(Path) in the + # crio and containerd config packages. + - linters: + - errcheck + path: pkg/config/engine/ + text: config.Delete + # RENDERD refers to the Render Device and not the past tense of render. + - linters: + - misspell + path: .*.go + text: '`RENDERD` is a misspelling of `RENDERED`' + # The legacy hook relies on spec.Hooks.Prestart, which is deprecated as of + # the v1.2.0 OCI runtime spec. + - path: (.+)\.go$ + text: SA1019:(.+).Prestart is deprecated(.+) + # TODO: We should address each of the following integer overflows. + - path: (.+)\.go$ + text: 'G115: integer overflow conversion(.+)' + paths: + - third_party$ + - builtin$ + - examples$ +formatters: + enable: + - gofmt + - goimports + settings: + goimports: + local-prefixes: + - github.com/NVIDIA/nvidia-container-toolkit + exclusions: + generated: lax + paths: + - third_party$ + - builtin$ + - examples$ diff --git a/.nvidia-ci.yml b/.nvidia-ci.yml index dd470d786..952584f9f 100644 --- a/.nvidia-ci.yml +++ b/.nvidia-ci.yml @@ -12,10 +12,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -include: - - local: '.common-ci.yml' - default: + image: docker + services: + - name: docker:dind + command: ["--experimental"] tags: - cnt - container-dev @@ -25,6 +26,8 @@ default: - type/docker variables: + GIT_SUBMODULE_STRATEGY: recursive + DOCKER_DRIVER: overlay2 DOCKER_TLS_CERTDIR: "/certs" # Release "devel"-tagged images off the main branch @@ -39,19 +42,96 @@ variables: KITMAKER_RELEASE_FOLDER: "kitmaker" PACKAGE_ARCHIVE_RELEASE_FOLDER: "releases" -.image-pull: - stage: image-build +stages: + - pull + - scan + - release + - ngc-publish + +.pipeline-trigger-rules: + rules: + # We trigger the pipeline if started manually + - if: $CI_PIPELINE_SOURCE == "web" + # We trigger the pipeline on the main branch + - if: $CI_COMMIT_BRANCH == "main" + # We trigger the pipeline on the release- branches + - if: $CI_COMMIT_BRANCH =~ /^release-.*$/ + # We trigger the pipeline on tags + - if: $CI_COMMIT_TAG && $CI_COMMIT_TAG != "" + +workflow: + rules: + # We trigger the pipeline on a merge request + - if: $CI_PIPELINE_SOURCE == 'merge_request_event' + # We then add all the regular triggers + - !reference [.pipeline-trigger-rules, rules] + +# Download the regctl binary for use in the release steps +.regctl-setup: + before_script: + - export REGCTL_VERSION=v0.4.5 + - apk add --no-cache curl + - mkdir -p bin + - curl -sSLo bin/regctl https://github.com/regclient/regclient/releases/download/${REGCTL_VERSION}/regctl-linux-amd64 + - chmod a+x bin/regctl + - export PATH=$(pwd)/bin:${PATH} + +# .copy-images copies the required application and packaging images from the +# IN_IMAGE="${IN_IMAGE_NAME}:${IN_IMAGE_TAG}${TAG_SUFFIX}" +# to +# OUT_IMAGE="${OUT_IMAGE_NAME}:${OUT_IMAGE_TAG}${TAG_SUFFIX}" +# The script also logs into IN_REGISTRY and OUT_REGISTRY using the supplied +# username and tokens. +.copy-images: + parallel: + matrix: + - TAG_SUFFIX: ["", "-packaging"] + before_script: + - !reference [.regctl-setup, before_script] + - apk add --no-cache make bash + variables: + REGCTL: regctl + script: + - | + if [ -n ${IN_REGISTRY} ] && [ -n ${IN_REGISTRY_USER} ]; then + echo "Logging in to ${IN_REGISTRY}" + ${REGCTL} registry login "${IN_REGISTRY}" -u "${IN_REGISTRY_USER}" -p "${IN_REGISTRY_TOKEN}" || exit 1 + fi + + if [ -n ${OUT_REGISTRY} ] && [ -n ${OUT_REGISTRY_USER} ] && [ "${IN_REGISTRY}" != "${OUT_REGISTRY}" ]; then + echo "Logging in to ${OUT_REGISTRY}" + ${REGCTL} registry login "${OUT_REGISTRY}" -u "${OUT_REGISTRY_USER}" -p "${OUT_REGISTRY_TOKEN}" || exit 1 + fi + + export IN_IMAGE="${IN_IMAGE_NAME}:${IN_IMAGE_TAG}${TAG_SUFFIX}" + export OUT_IMAGE="${OUT_IMAGE_NAME}:${OUT_IMAGE_TAG}${TAG_SUFFIX}" + + echo "Copying ${IN_IMAGE} to ${OUT_IMAGE}" + ${REGCTL} image copy ${IN_IMAGE} ${OUT_IMAGE} + +# pull-images pulls images from the public CI registry to the internal CI registry. +pull-images: + extends: + - .copy-images + stage: pull variables: IN_REGISTRY: "${STAGING_REGISTRY}" - IN_IMAGE_NAME: container-toolkit - IN_VERSION: "${STAGING_VERSION}" + IN_IMAGE_NAME: ${STAGING_REGISTRY}/container-toolkit + IN_IMAGE_TAG: "${STAGING_VERSION}" + + OUT_REGISTRY: "${CI_REGISTRY}" OUT_REGISTRY_USER: "${CI_REGISTRY_USER}" OUT_REGISTRY_TOKEN: "${CI_REGISTRY_PASSWORD}" - OUT_REGISTRY: "${CI_REGISTRY}" OUT_IMAGE_NAME: "${CI_REGISTRY_IMAGE}/container-toolkit" - PUSH_MULTIPLE_TAGS: "false" + OUT_IMAGE_TAG: "${CI_COMMIT_SHORT_SHA}" # We delay the job start to allow the public pipeline to generate the required images. rules: + # If the pipeline is triggered from a tag or the WEB UI we don't delay the + # start of the pipeline. + - if: $CI_COMMIT_TAG || $CI_PIPELINE_SOURCE == "web" + # If the pipeline is triggered through other means (i.e. a branch or MR) + # we add a 30 minute delay to ensure that the images are available in the + # public CI registry. - when: delayed start_in: 30 minutes timeout: 30 minutes @@ -60,30 +140,6 @@ variables: when: - job_execution_timeout - stuck_or_timeout_failure - before_script: - - !reference [.regctl-setup, before_script] - - apk add --no-cache make bash - - > - regctl manifest get ${IN_REGISTRY}/${IN_IMAGE_NAME}:${IN_VERSION}-${DIST} --list > /dev/null && echo "${IN_REGISTRY}/${IN_IMAGE_NAME}:${IN_VERSION}-${DIST}" || ( echo "${IN_REGISTRY}/${IN_IMAGE_NAME}:${IN_VERSION}-${DIST} does not exist" && sleep infinity ) - script: - - regctl registry login "${OUT_REGISTRY}" -u "${OUT_REGISTRY_USER}" -p "${OUT_REGISTRY_TOKEN}" - - make -f deployments/container/Makefile IMAGE=${IN_REGISTRY}/${IN_IMAGE_NAME}:${IN_VERSION}-${DIST} OUT_IMAGE=${OUT_IMAGE_NAME}:${CI_COMMIT_SHORT_SHA}-${DIST} push-${DIST} - -image-ubi8: - extends: - - .dist-ubi8 - - .image-pull - -image-ubuntu20.04: - extends: - - .dist-ubuntu20.04 - - .image-pull - -# The DIST=packaging target creates an image containing all built packages -image-packaging: - extends: - - .dist-packaging - - .image-pull # We skip the integration tests for the internal CI: .integration: @@ -95,27 +151,37 @@ image-packaging: # The .scan step forms the base of the image scan operation performed before releasing # images. -.scan: +scan-images: stage: scan + needs: + - pull-images image: "${PULSE_IMAGE}" + parallel: + matrix: + - TAG_SUFFIX: [""] + PLATFORM: ["linux/amd64", "linux/arm64"] + - TAG_SUFFIX: "-packaging" + PLATFORM: "linux/amd64" variables: - IMAGE: "${CI_REGISTRY_IMAGE}/container-toolkit:${CI_COMMIT_SHORT_SHA}-${DIST}" - IMAGE_ARCHIVE: "container-toolkit-${DIST}-${ARCH}-${CI_JOB_ID}.tar" + IMAGE: "${CI_REGISTRY_IMAGE}/container-toolkit:${CI_COMMIT_SHORT_SHA}" + IMAGE_ARCHIVE: "container-toolkit-${CI_JOB_ID}.tar" rules: - - if: $SKIP_SCANS != "yes" - - when: manual - before_script: - - docker login -u "${CI_REGISTRY_USER}" -p "${CI_REGISTRY_PASSWORD}" "${CI_REGISTRY}" - # TODO: We should specify the architecture here and scan all architectures - - docker pull --platform="${PLATFORM}" "${IMAGE}" - - docker save "${IMAGE}" -o "${IMAGE_ARCHIVE}" - - AuthHeader=$(echo -n $SSA_CLIENT_ID:$SSA_CLIENT_SECRET | base64 -w0) - - > - export SSA_TOKEN=$(curl --request POST --header "Authorization: Basic $AuthHeader" --header "Content-Type: application/x-www-form-urlencoded" ${SSA_ISSUER_URL} | jq ".access_token" | tr -d '"') - - if [ -z "$SSA_TOKEN" ]; then exit 1; else echo "SSA_TOKEN set!"; fi + - if: $IGNORE_SCANS == "yes" + allow_failure: true + - when: on_success script: - - pulse-cli -n $NSPECT_ID --ssa $SSA_TOKEN scan -i $IMAGE_ARCHIVE -p $CONTAINER_POLICY -o - - rm -f "${IMAGE_ARCHIVE}" + - | + docker login -u "${CI_REGISTRY_USER}" -p "${CI_REGISTRY_PASSWORD}" "${CI_REGISTRY}" + export SCAN_IMAGE=${IMAGE}${TAG_SUFFIX} + echo "Scanning image ${SCAN_IMAGE} for ${PLATFORM}" + docker pull --platform="${PLATFORM}" "${SCAN_IMAGE}" + docker save "${SCAN_IMAGE}" -o "${IMAGE_ARCHIVE}" + AuthHeader=$(echo -n $SSA_CLIENT_ID:$SSA_CLIENT_SECRET | base64 -w0) + export SSA_TOKEN=$(curl --request POST --header "Authorization: Basic $AuthHeader" --header "Content-Type: application/x-www-form-urlencoded" ${SSA_ISSUER_URL} | jq ".access_token" | tr -d '"') + if [ -z "$SSA_TOKEN" ]; then exit 1; else echo "SSA_TOKEN set!"; fi + + pulse-cli -n $NSPECT_ID --ssa $SSA_TOKEN scan -i $IMAGE_ARCHIVE -p $CONTAINER_POLICY -o + rm -f "${IMAGE_ARCHIVE}" artifacts: when: always expire_in: 1 week @@ -126,62 +192,10 @@ image-packaging: - vulns.json - policy_evaluation.json -# Define the scan targets -scan-ubuntu20.04-amd64: - extends: - - .dist-ubuntu20.04 - - .platform-amd64 - - .scan - needs: - - image-ubuntu20.04 - -scan-ubuntu20.04-arm64: - extends: - - .dist-ubuntu20.04 - - .platform-arm64 - - .scan - needs: - - image-ubuntu20.04 - - scan-ubuntu20.04-amd64 - -scan-ubi8-amd64: - extends: - - .dist-ubi8 - - .platform-amd64 - - .scan - needs: - - image-ubi8 - -scan-ubi8-arm64: - extends: - - .dist-ubi8 - - .platform-arm64 - - .scan - needs: - - image-ubi8 - - scan-ubi8-amd64 - -scan-packaging: - extends: - - .dist-packaging - - .scan - needs: - - image-packaging - -# Define external release helpers -.release:ngc: - extends: - - .release:external - variables: - OUT_REGISTRY_USER: "${NGC_REGISTRY_USER}" - OUT_REGISTRY_TOKEN: "${NGC_REGISTRY_TOKEN}" - OUT_REGISTRY: "${NGC_REGISTRY}" - OUT_IMAGE_NAME: "${NGC_REGISTRY_IMAGE}" - -.release:packages: +upload-kitmaker-packages: stage: release needs: - - image-packaging + - pull-images variables: VERSION: "${CI_COMMIT_SHORT_SHA}" PACKAGE_REGISTRY: "${CI_REGISTRY}" @@ -199,107 +213,79 @@ scan-packaging: - ./scripts/release-kitmaker-artifactory.sh "${KITMAKER_ARTIFACTORY_REPO}" - rm -rf ${ARTIFACTS_DIR} -# Define the package release targets -release:packages:kitmaker: - extends: - - .release:packages - -release:archive: +push-images-to-staging: extends: - - .release:external + - .copy-images + stage: release needs: - - image-packaging + - scan-images variables: - VERSION: "${CI_COMMIT_SHORT_SHA}" - PACKAGE_REGISTRY: "${CI_REGISTRY}" - PACKAGE_REGISTRY_USER: "${CI_REGISTRY_USER}" - PACKAGE_REGISTRY_TOKEN: "${CI_REGISTRY_PASSWORD}" - PACKAGE_IMAGE_NAME: "${CI_REGISTRY_IMAGE}/container-toolkit" - PACKAGE_IMAGE_TAG: "${CI_COMMIT_SHORT_SHA}-packaging" - PACKAGE_ARCHIVE_ARTIFACTORY_REPO: "${ARTIFACTORY_REPO_BASE}-generic-local/${PACKAGE_ARCHIVE_RELEASE_FOLDER}" - script: - - apk add --no-cache bash git - - ./scripts/archive-packages.sh "${PACKAGE_ARCHIVE_ARTIFACTORY_REPO}" + IN_REGISTRY: "${CI_REGISTRY}" + IN_REGISTRY_USER: "${CI_REGISTRY_USER}" + IN_REGISTRY_TOKEN: "${CI_REGISTRY_PASSWORD}" + IN_IMAGE_NAME: "${CI_REGISTRY_IMAGE}/container-toolkit" + IN_IMAGE_TAG: "${CI_COMMIT_SHORT_SHA}" -release:staging-ubuntu20.04: - extends: - - .release:staging - - .dist-ubuntu20.04 - needs: - - image-ubuntu20.04 + OUT_REGISTRY: "${NGC_REGISTRY}" + OUT_REGISTRY_USER: "${NGC_REGISTRY_USER}" + OUT_REGISTRY_TOKEN: "${NGC_REGISTRY_TOKEN}" + OUT_IMAGE_NAME: "${NGC_STAGING_REGISTRY}/container-toolkit" + OUT_IMAGE_TAG: "${CI_COMMIT_SHORT_SHA}" -# Define the external release targets -# Release to NGC -release:ngc-ubuntu20.04: - extends: - - .dist-ubuntu20.04 - - .release:ngc +.publish-images: + stage: ngc-publish + needs: + - scan-images + - push-images-to-staging + image: + name: "${CNT_NGC_PUBLISH_IMAGE}" + pull_policy: always + variables: -release:ngc-ubi8: - extends: - - .dist-ubi8 - - .release:ngc + variables: + GITLAB_ACCESS_TOKEN: "${CNT_GITLAB_TOKEN}" -release:ngc-packaging: - extends: - - .dist-packaging - - .release:ngc + IN_IMAGE_TAG: "${CI_COMMIT_SHORT_SHA}" + OUT_IMAGE_TAG: "${CI_COMMIT_TAG}" -# Define the external image signing steps for NGC -# Download the ngc cli binary for use in the sign steps -.ngccli-setup: + VERSION_FILE: "build-info-${CI_PIPELINE_ID}.txt" + PROJECT_NAME: "nvidia-container-toolkit" before_script: - - apt-get update && apt-get install -y curl unzip jq - | - if [ -z "${NGCCLI_VERSION}" ]; then - NGC_VERSION_URL="https://api.ngc.nvidia.com/v2/resources/nvidia/ngc-apps/ngc_cli/versions" - # Extract the latest version from the JSON data using jq - export NGCCLI_VERSION=$(curl -s $NGC_VERSION_URL | jq -r '.recipe.latestVersionIdStr') + if [ -z "$NGC_PUBLISHING_PROJECT_PATH" ]; then + echo "NGC_PUBLISHING_PROJECT_PATH not set" + exit 1 + else + echo "publishing to ${NGC_PUBLISHING_PROJECT_PATH}" fi - echo "NGCCLI_VERSION ${NGCCLI_VERSION}" - - curl -sSLo ngccli_linux.zip https://api.ngc.nvidia.com/v2/resources/nvidia/ngc-apps/ngc_cli/versions/${NGCCLI_VERSION}/files/ngccli_linux.zip - - unzip ngccli_linux.zip - - chmod u+x ngc-cli/ngc -# .sign forms the base of the deployment jobs which signs images in the CI registry. -# This is extended with the image name and version to be deployed. -.sign:ngc: - image: ubuntu:latest - stage: sign - rules: - - if: $CI_COMMIT_TAG - variables: - NGC_CLI_API_KEY: "${NGC_REGISTRY_TOKEN}" - IMAGE_NAME: "${NGC_REGISTRY_IMAGE}" - IMAGE_TAG: "${CI_COMMIT_TAG}-${DIST}" - retry: - max: 2 - before_script: - - !reference [.ngccli-setup, before_script] - # We ensure that the IMAGE_NAME and IMAGE_TAG is set - - 'echo Image Name: ${IMAGE_NAME} && [[ -n "${IMAGE_NAME}" ]] || exit 1' - - 'echo Image Tag: ${IMAGE_TAG} && [[ -n "${IMAGE_TAG}" ]] || exit 1' + rm -f ${VERSION_FILE} + echo "${IN_IMAGE_TAG} ${OUT_IMAGE_TAG}" >> ${VERSION_FILE} + echo "${IN_IMAGE_TAG}-packaging ${OUT_IMAGE_TAG}-packaging" >> ${VERSION_FILE} + cat ${VERSION_FILE} script: - - 'echo "Signing the image ${IMAGE_NAME}:${IMAGE_TAG}"' - - ngc-cli/ngc registry image publish --source ${IMAGE_NAME}:${IMAGE_TAG} ${IMAGE_NAME}:${IMAGE_TAG} --public --discoverable --allow-guest --sign --org nvidia + - cnt-ngc-publish render --project-name "${PROJECT_NAME}" --versions-file "${VERSION_FILE}" --output "${PROJECT_NAME}".yaml + - cnt-ngc-publish merge-request --files "${PROJECT_NAME}.yaml" + artifacts: + paths: + - "${VERSION_FILE}" + - "${PROJECT_NAME}.yaml" -sign:ngc-ubuntu20.04: - extends: - - .dist-ubuntu20.04 - - .sign:ngc - needs: - - release:ngc-ubuntu20.04 -sign:ngc-ubi8: +publish-images-to-ngc: extends: - - .dist-ubi8 - - .sign:ngc - needs: - - release:ngc-ubi8 + - .publish-images + rules: + - if: $CI_COMMIT_TAG -sign:ngc-packaging: +# We create a dummy MR that exercises the publishing logic. +# TODO: This MR should be closed automatically. +publish-images-dummy: extends: - - .dist-packaging - - .sign:ngc - needs: - - release:ngc-packaging + - .publish-images + variables: + NGC_PUBLISHING_PROJECT_PATH: dl/container-dev/ngc-automation + OUT_IMAGE_TAG: "publish-${CI_COMMIT_SHORT_SHA}" + rules: + - if: $CI_COMMIT_TAG == null || $CI_COMMIT_TAG == "" + diff --git a/CHANGELOG.md b/CHANGELOG.md index d9b5b8cab..c0aeb5f86 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,205 @@ # NVIDIA Container Toolkit Changelog +## v1.18.0-rc.2 + +- Load settings from config.toml file during CDI generation +- Use securejoin to resolve /proc +- Refactor nvml CDI spec generation for consistency +- Simplify nvcdi interface +- Add SpecGenerator interface +- Ensure that modified params file mount does not leak to host +- Add test for leaking mounts with shared mount propagation + +### Changes in the Toolkit Container + +- Bump nvidia/distroless/go to v3.1.10-dev in /deployments/container +- Bump nvidia/cuda to 12.9.1-base-ubi9 in /deployments/container + +## v1.18.0-rc.1 + +- Add create-soname-symlinks hook +- Require matching version of libnvidia-container-tools +- Add envvar for libcuda.so parent dir to CDI spec +- Add EnvVar to Discover interface +- Resolve to legacy by default in nvidia-container-runtime-hook +- Default to jit-cdi mode in the nvidia runtime +- Use functional options to construct runtime mode resolver +- Add NVIDIA_CTK_CONFIG_FILE_PATH envvar +- Switch to cuda ubi9 base image +- Use single version tag for image +- BUGFIX: modifier: respect GPU volume-mount device requests +- Ensure consistent sorting of annotation devices +- Extract deb and rpm packages to single image +- Remove docker-run as default runtime candidate +- Return annotation devices from VisibleDevices +- Make CDI device requests consistent with other methods +- Construct container info once +- Add logic to extract annotation device requests to image type +- Add IsPrivileged function to CUDA container type +- Add device IDs to nvcdi.GetSpec API +- Refactor extracting requested devices from the container image +- Add EnvVars option for all nvidia-ctk cdi commands +- Add nvidia-cdi-refresh service +- Add discovery of arch-specific vulkan ICD +- Add disabled-device-node-modification hook to CDI spec +- Add a hook to disable device node creation in a container +- Remove redundant deduplication of search paths for WSL +- Added ability to disable specific (or all) CDI hooks +- Consolidate HookName functionality on internal/discover pkg +- Add envvar to control debug logging in CDI hooks +- Add FeatureFlags to the nvcdi API +- Reenable nvsandboxutils for driver discovery +- Edit discover.mounts to have a deterministic output +- Refactor the way we create CDI Hooks +- Issue warning on unsupported CDI hook +- Run update-ldcache in isolated namespaces +- Add cuda-compat-mode config option +- Fix mode detection on Thor-based systems +- Add rprivate to CDI mount options +- Skip nil discoverers in merge +- bump runc go dep to v1.3.0 +- Fix resolution of libs in LDCache on ARM +- Updated .release:staging to stage images in nvstaging +- Refactor toolkit installer +- Allow container runtime executable path to be specified +- Add support for building ubuntu22.04 on arm64 +- Fix race condition in mounts cache +- Add support for building ubuntu22.04 on amd64 +- Fix update-ldcache arguments +- Remove positional arguments from nvidia-ctk-installer +- Remove deprecated --runtime-args from nvidia-ctk-installer +- Add version info to nvidia-ctk-installer +- Update nvidia-ctk-installer app name to match binary name +- Allow nvidia-ctk config --set to accept comma-separated lists +- Disable enable-cuda-compat hook for management containers +- Allow enable-cuda-compat hook to be disabled in CDI spec generation +- Add disable-cuda-compat-lib-hook feature flag +- Add basic integration tests for forward compat +- Ensure that mode hook is executed last +- Add enable-cuda-compat hook to CDI spec generation +- Add ldconfig hook in legacy mode +- Add enable-cuda-compat hook if required +- Add enable-cuda-compat hook to allow compat libs to be discovered +- Use libcontainer execseal to run ldconfig +- Add ignore-imex-channel-requests feature flag +- Disable nvsandboxutils in nvcdi API +- Allow cdi mode to work with --gpus flag +- Add E2E GitHub Action for Container Toolkit +- Add remote-test option for E2E +- Enable CDI in runtime if CDI_ENABLED is set +- Fix overwriting docker feature flags +- Add option in toolkit container to enable CDI in runtime +- Remove Set from engine config API +- Add EnableCDI() method to engine.Interface +- Add IMEX binaries to CDI discovery +- Rename test folder to tests +- Add allow-cuda-compat-libs-from-container feature flag +- Disable mounting of compat libs from container +- Skip graphics modifier in CSV mode +- Move nvidia-toolkit to nvidia-ctk-installer +- Automated regression testing for the NVIDIA Container Toolkit +- Add support for containerd version 3 config +- Remove watch option from create-dev-char-symlinks +- Add string TOML source +- Improve the implementation for UseLegacyConfig +- Properly pass configSearchPaths to a Driver constructor +- Fix create-device-node test when devices exist +- Add imex mode to CDI spec generation +- Only allow host-relative LDConfig paths +- Fix NVIDIA_IMEX_CHANNELS handling on legacy images +- Fix bug in default config file path +- Fix fsnotify.Remove logic function. +- Force symlink creation in create-symlink hook + +### Changes in the Toolkit Container + +- Create /work/nvidia-toolkit symlink +- Use Apache license for images +- Switch to golang distroless image +- Switch to cuda ubi9 base image +- Use single version tag for image +- Extract deb and rpm packages to single image +- Bump nvidia/cuda in /deployments/container +- Bump nvidia/cuda in /deployments/container +- Add E2E GitHub Action for Container Toolkit +- Bump nvidia/cuda in /deployments/container +- Move nvidia-toolkit to nvidia-ctk-installer +- Add support for containerd version 3 config +- Improve the implementation for UseLegacyConfig +- Bump nvidia/cuda in /deployments/container +- Add imex mode to CDI spec generation +- Only allow host-relative LDConfig paths +- Fallback to file for runtime config + +### Changes in libnvidia-container + +- Fix pointer accessing local variable out of scope +- Require version match between libnvidia-container-tools and libnvidia-container1 +- Add libnvidia-gpucomp.so to the list of compute libs +- Use VERSION_ prefix for version parts in makefiles +- Add additional logging +- Do not discard container flags when --cuda-compat-mode is not specified +- Remove unneeded --no-cntlibs argument from list command +- Add cuda-compat-mode flag to configure command +- Skip files when user has insufficient permissions +- Fix building with Go 1.24 +- Add no-cntlibs CLI option to nvidia-container-cli +- Fix always using fallback +- Add fallback for systems without memfd_create() +- Create virtual copy of host ldconfig binary before calling fexecve() +- Fix some typos in text. + + +## v1.17.0 +- Promote v1.17.0-rc.2 to v1.17.0 +- Fix bug when using just-in-time CDI spec generation +- Check for valid paths in create-symlinks hook + +## v1.17.0-rc.2 +- Fix bug in locating libcuda.so from ldcache +- Fix bug in sorting of symlink chain +- Remove unsupported print-ldcache command +- Remove csv-filename support from create-symlinks + +### Changes in the Toolkit Container +- Fallback to `crio-status` if `crio status` does not work when configuring the crio runtime + +## v1.17.0-rc.1 +- Allow IMEX channels to be requested as volume mounts +- Fix typo in error message +- Add disable-imex-channel-creation feature flag +- Add -z,lazy to LDFLAGS +- Add imex channels to management CDI spec +- Add support to fetch current container runtime config from the command line. +- Add creation of select driver symlinks to CDI spec generation. +- Remove support for config overrides when configuring runtimes. +- Skip explicit creation of libnvidia-allocator.so.1 symlink +- Add vdpau as as a driver library search path. +- Add support for using libnvsandboxutils to generate CDI specifications. + +### Changes in the Toolkit Container + +- Allow opt-in features to be selected when deploying the toolkit-container. +- Bump CUDA base image version to 12.6.2 +- Remove support for config overrides when configuring runtimes. + +### Changes in libnvidia-container + +- Add no-create-imex-channels command line option. + +## v1.16.2 +- Exclude libnvidia-allocator from graphics mounts. This fixes a bug that leaks mounts when a container is started with bi-directional mount propagation. +- Use empty string for default runtime-config-override. This removes a redundant warning for runtimes (e.g. Docker) where this is not applicable. + +### Changes in the Toolkit Container +- Bump CUDA base image version to 12.6.0 + +### Changes in libnvidia-container +- Add no-gsp-firmware command line option +- Add no-fabricmanager command line option +- Add no-persistenced command line option +- Skip directories and symlinks when mounting libraries. + ## v1.16.1 - Fix bug with processing errors during CDI spec generation for MIG devices @@ -9,7 +209,6 @@ ### Changes in the Toolkit Container - Bump CUDA base image version to 12.5.1 - ## v1.16.0-rc.2 - Use relative path to locate driver libraries - Add RelativeToRoot function to Driver @@ -123,7 +322,7 @@ ## v1.14.0-rc.2 * Fix bug causing incorrect nvidia-smi symlink to be created on WSL2 systems with multiple driver roots. * Remove dependency on coreutils when installing package on RPM-based systems. -* Create ouput folders if required when running `nvidia-ctk runtime configure` +* Create output folders if required when running `nvidia-ctk runtime configure` * Generate default config as post-install step. * Added support for detecting GSP firmware at custom paths when generating CDI specifications. * Added logic to skip the extraction of image requirements if `NVIDIA_DISABLE_REQUIRES` is set to `true`. diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index a723fd43a..5ca27e074 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -34,7 +34,7 @@ environment variables. ## Testing packages locally -The [test/release](./test/release/) folder contains documentation on how the installation of local or staged packages can be tested. +The [tests/release](./tests/release/) folder contains documentation on how the installation of local or staged packages can be tested. ## Releasing diff --git a/Makefile b/Makefile index 31a06d6f8..86433fa2a 100644 --- a/Makefile +++ b/Makefile @@ -60,7 +60,7 @@ endif cmds: $(CMD_TARGETS) ifneq ($(shell uname),Darwin) -EXTLDFLAGS = -Wl,--export-dynamic -Wl,--unresolved-symbols=ignore-in-object-files +EXTLDFLAGS = -Wl,--export-dynamic -Wl,--unresolved-symbols=ignore-in-object-files -Wl,-z,lazy else EXTLDFLAGS = -Wl,-undefined,dynamic_lookup endif @@ -90,24 +90,43 @@ goimports: lint: golangci-lint run ./... -vendor: - go mod tidy - go mod vendor - go mod verify +vendor: | mod-tidy mod-vendor mod-verify + +mod-tidy: + @for mod in $$(find . -name go.mod -not -path "./testdata/*" -not -path "./third_party/*"); do \ + echo "Tidying $$mod..."; ( \ + cd $$(dirname $$mod) && go mod tidy \ + ) || exit 1; \ + done + +mod-vendor: + @for mod in $$(find . -name go.mod -not -path "./testdata/*" -not -path "./third_party/*" -not -path "./deployments/*"); do \ + echo "Vendoring $$mod..."; ( \ + cd $$(dirname $$mod) && go mod vendor \ + ) || exit 1; \ + done + +mod-verify: + @for mod in $$(find . -name go.mod -not -path "./testdata/*" -not -path "./third_party/*"); do \ + echo "Verifying $$mod..."; ( \ + cd $$(dirname $$mod) && go mod verify | sed 's/^/ /g' \ + ) || exit 1; \ + done + check-vendor: vendor - git diff --quiet HEAD -- go.mod go.sum vendor + git diff --exit-code HEAD -- go.mod go.sum vendor licenses: go-licenses csv $(MODULE)/... COVERAGE_FILE := coverage.out test: build cmds - go test -coverprofile=$(COVERAGE_FILE) $(MODULE)/... + go test -coverprofile=$(COVERAGE_FILE).with-mocks $(MODULE)/... coverage: test - cat $(COVERAGE_FILE) | grep -v "_mock.go" > $(COVERAGE_FILE).no-mocks - go tool cover -func=$(COVERAGE_FILE).no-mocks + cat $(COVERAGE_FILE).with-mocks | grep -v "_mock.go" > $(COVERAGE_FILE) + go tool cover -func=$(COVERAGE_FILE) generate: go generate $(MODULE)/... diff --git a/README.md b/README.md index b7f861444..c8e52cd0e 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ ## Introduction -The NVIDIA Container Toolkit allows users to build and run GPU accelerated containers. The toolkit includes a container runtime [library](https://github.com/NVIDIA/libnvidia-container) and utilities to automatically configure containers to leverage NVIDIA GPUs. +The NVIDIA Container Toolkit allows users to build and run GPU-accelerated containers. The toolkit includes a container runtime [library](https://github.com/NVIDIA/libnvidia-container) and utilities to automatically configure containers to leverage NVIDIA GPUs. Product documentation including an architecture overview, platform support, and installation and usage guides can be found in the [documentation repository](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/overview.html). @@ -28,4 +28,10 @@ The [user guide](https://docs.nvidia.com/datacenter/cloud-native/container-toolk [Checkout the Contributing document!](CONTRIBUTING.md) * Please let us know by [filing a new issue](https://github.com/NVIDIA/nvidia-container-toolkit/issues/new) + * You can contribute by creating a [merge request](https://gitlab.com/nvidia/container-toolkit/container-toolkit/-/merge_requests/new) to our public GitLab repository + +## Releases and Updates + +For the latest releases and updates, check the [CHANGELOG](https://github.com/NVIDIA/libnvidia-container/blob/main/CHANGELOG.md). + diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 000000000..34137c329 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,24 @@ +# Security + +NVIDIA is dedicated to the security and trust of our software products and services, including all source code repositories managed through our organization. + +If you need to report a security issue, please use the appropriate contact points outlined below. **Please do not report security vulnerabilities through GitHub.** + +## Reporting Potential Security Vulnerability in an NVIDIA Product + +To report a potential security vulnerability in any NVIDIA product: +- Web: [Security Vulnerability Submission Form](https://www.nvidia.com/object/submit-security-vulnerability.html) +- E-Mail: psirt@nvidia.com + - We encourage you to use the following PGP key for secure email communication: [NVIDIA public PGP Key for communication](https://www.nvidia.com/en-us/security/pgp-key) + - Please include the following information: + - Product/Driver name and version/branch that contains the vulnerability + - Type of vulnerability (code execution, denial of service, buffer overflow, etc.) + - Instructions to reproduce the vulnerability + - Proof-of-concept or exploit code + - Potential impact of the vulnerability, including how an attacker could exploit the vulnerability + +While NVIDIA currently does not have a bug bounty program, we do offer acknowledgement when an externally reported security issue is addressed under our coordinated vulnerability disclosure policy. Please visit our [Product Security Incident Response Team (PSIRT)](https://www.nvidia.com/en-us/security/psirt-policies/) policies page for more information. + +## NVIDIA Product Security + +For all security-related concerns, please visit NVIDIA's Product Security portal at https://www.nvidia.com/en-us/security diff --git a/cmd/nvidia-cdi-hook/chmod/chmod.go b/cmd/nvidia-cdi-hook/chmod/chmod.go index 9a4ee6562..9b06fb129 100644 --- a/cmd/nvidia-cdi-hook/chmod/chmod.go +++ b/cmd/nvidia-cdi-hook/chmod/chmod.go @@ -17,6 +17,7 @@ package chmod import ( + "context" "errors" "fmt" "io/fs" @@ -25,7 +26,7 @@ import ( "strconv" "strings" - "github.com/urfave/cli/v2" + "github.com/urfave/cli/v3" "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" "github.com/NVIDIA/nvidia-container-toolkit/internal/oci" @@ -36,7 +37,7 @@ type command struct { } type config struct { - paths cli.StringSlice + paths []string modeStr string mode fs.FileMode containerSpec string @@ -58,36 +59,35 @@ func (m command) build() *cli.Command { c := cli.Command{ Name: "chmod", Usage: "Set the permissions of folders in the container by running chmod. The container root is prefixed to the specified paths.", - Before: func(c *cli.Context) error { - return validateFlags(c, &cfg) + Before: func(ctx context.Context, cmd *cli.Command) (context.Context, error) { + return ctx, m.validateFlags(cmd, &cfg) }, - Action: func(c *cli.Context) error { - return m.run(c, &cfg) + Action: func(ctx context.Context, cmd *cli.Command) error { + return m.run(cmd, &cfg) }, - } - - c.Flags = []cli.Flag{ - &cli.StringSliceFlag{ - Name: "path", - Usage: "Specify a path to apply the specified mode to", - Destination: &cfg.paths, - }, - &cli.StringFlag{ - Name: "mode", - Usage: "Specify the file mode", - Destination: &cfg.modeStr, - }, - &cli.StringFlag{ - Name: "container-spec", - Usage: "Specify the path to the OCI container spec. If empty or '-' the spec will be read from STDIN", - Destination: &cfg.containerSpec, + Flags: []cli.Flag{ + &cli.StringSliceFlag{ + Name: "path", + Usage: "Specify a path to apply the specified mode to", + Destination: &cfg.paths, + }, + &cli.StringFlag{ + Name: "mode", + Usage: "Specify the file mode", + Destination: &cfg.modeStr, + }, + &cli.StringFlag{ + Name: "container-spec", + Usage: "Specify the path to the OCI container spec. If empty or '-' the spec will be read from STDIN", + Destination: &cfg.containerSpec, + }, }, } return &c } -func validateFlags(c *cli.Context, cfg *config) error { +func (m command) validateFlags(_ *cli.Command, cfg *config) error { if strings.TrimSpace(cfg.modeStr) == "" { return fmt.Errorf("a non-empty mode must be specified") } @@ -98,7 +98,7 @@ func validateFlags(c *cli.Context, cfg *config) error { } cfg.mode = fs.FileMode(modeInt) - for _, p := range cfg.paths.Value() { + for _, p := range cfg.paths { if strings.TrimSpace(p) == "" { return fmt.Errorf("paths must not be empty") } @@ -107,7 +107,7 @@ func validateFlags(c *cli.Context, cfg *config) error { return nil } -func (m command) run(c *cli.Context, cfg *config) error { +func (m command) run(_ *cli.Command, cfg *config) error { s, err := oci.LoadContainerState(cfg.containerSpec) if err != nil { return fmt.Errorf("failed to load container state: %v", err) @@ -121,7 +121,7 @@ func (m command) run(c *cli.Context, cfg *config) error { return fmt.Errorf("empty container root detected") } - paths := m.getPaths(containerRoot, cfg.paths.Value(), cfg.mode) + paths := m.getPaths(containerRoot, cfg.paths, cfg.mode) if len(paths) == 0 { m.logger.Debugf("No paths specified; exiting") return nil diff --git a/cmd/nvidia-cdi-hook/commands/commands.go b/cmd/nvidia-cdi-hook/commands/commands.go index a222acf22..16efc098f 100644 --- a/cmd/nvidia-cdi-hook/commands/commands.go +++ b/cmd/nvidia-cdi-hook/commands/commands.go @@ -17,10 +17,13 @@ package commands import ( - "github.com/urfave/cli/v2" + "github.com/urfave/cli/v3" "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-cdi-hook/chmod" + createsonamesymlinks "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-cdi-hook/create-soname-symlinks" symlinks "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-cdi-hook/create-symlinks" + "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-cdi-hook/cudacompat" + disabledevicenodemodification "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-cdi-hook/disable-device-node-modification" ldcache "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-cdi-hook/update-ldcache" "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" ) @@ -32,5 +35,21 @@ func New(logger logger.Interface) []*cli.Command { ldcache.NewCommand(logger), symlinks.NewCommand(logger), chmod.NewCommand(logger), + cudacompat.NewCommand(logger), + createsonamesymlinks.NewCommand(logger), + disabledevicenodemodification.NewCommand(logger), + } +} + +// IssueUnsupportedHookWarning logs a warning that no hook or an unsupported +// hook has been specified. +// This happens if a subcommand is provided that does not match one of the +// subcommands that has been explicitly specified. +func IssueUnsupportedHookWarning(logger logger.Interface, c *cli.Command) { + args := c.Args().Slice() + if len(args) == 0 { + logger.Warningf("No CDI hook specified") + } else { + logger.Warningf("Unsupported CDI hook: %v", args[0]) } } diff --git a/cmd/nvidia-cdi-hook/create-soname-symlinks/soname-symlinks.go b/cmd/nvidia-cdi-hook/create-soname-symlinks/soname-symlinks.go new file mode 100644 index 000000000..ab1beb388 --- /dev/null +++ b/cmd/nvidia-cdi-hook/create-soname-symlinks/soname-symlinks.go @@ -0,0 +1,166 @@ +/** +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package create_soname_symlinks + +import ( + "context" + "errors" + "fmt" + "log" + "os" + + "github.com/moby/sys/reexec" + "github.com/urfave/cli/v3" + + "github.com/NVIDIA/nvidia-container-toolkit/internal/ldconfig" + "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" + "github.com/NVIDIA/nvidia-container-toolkit/internal/oci" +) + +const ( + reexecUpdateLdCacheCommandName = "reexec-create-soname-symlinks" +) + +type command struct { + logger logger.Interface +} + +type options struct { + folders []string + ldconfigPath string + containerSpec string +} + +func init() { + reexec.Register(reexecUpdateLdCacheCommandName, createSonameSymlinksHandler) + if reexec.Init() { + os.Exit(0) + } +} + +// NewCommand constructs an create-soname-symlinks command with the specified logger +func NewCommand(logger logger.Interface) *cli.Command { + c := command{ + logger: logger, + } + return c.build() +} + +// build the create-soname-symlinks command +func (m command) build() *cli.Command { + cfg := options{} + + // Create the 'create-soname-symlinks' command + c := cli.Command{ + Name: "create-soname-symlinks", + Usage: "Create soname symlinks libraries in specified directories", + Before: func(ctx context.Context, cmd *cli.Command) (context.Context, error) { + return ctx, m.validateFlags(cmd, &cfg) + }, + Action: func(ctx context.Context, cmd *cli.Command) error { + return m.run(cmd, &cfg) + }, + Flags: []cli.Flag{ + &cli.StringSliceFlag{ + Name: "folder", + Usage: "Specify a directory to generate soname symlinks in. Can be specified multiple times", + Destination: &cfg.folders, + }, + &cli.StringFlag{ + Name: "ldconfig-path", + Usage: "Specify the path to ldconfig on the host", + Destination: &cfg.ldconfigPath, + Value: "/sbin/ldconfig", + }, + &cli.StringFlag{ + Name: "container-spec", + Usage: "Specify the path to the OCI container spec. If empty or '-' the spec will be read from STDIN", + Destination: &cfg.containerSpec, + }, + }, + } + + return &c +} + +func (m command) validateFlags(_ *cli.Command, cfg *options) error { + if cfg.ldconfigPath == "" { + return errors.New("ldconfig-path must be specified") + } + return nil +} + +func (m command) run(_ *cli.Command, cfg *options) error { + s, err := oci.LoadContainerState(cfg.containerSpec) + if err != nil { + return fmt.Errorf("failed to load container state: %v", err) + } + + containerRootDir, err := s.GetContainerRoot() + if err != nil || containerRootDir == "" || containerRootDir == "/" { + return fmt.Errorf("failed to determined container root: %v", err) + } + + cmd, err := ldconfig.NewRunner( + reexecUpdateLdCacheCommandName, + cfg.ldconfigPath, + containerRootDir, + cfg.folders..., + ) + if err != nil { + return err + } + + return cmd.Run() +} + +// createSonameSymlinksHandler wraps createSonameSymlinks with error handling. +func createSonameSymlinksHandler() { + if err := createSonameSymlinks(os.Args); err != nil { + log.Printf("Error updating ldcache: %v", err) + os.Exit(1) + } +} + +// createSonameSymlinks ensures that soname symlinks are created in the +// specified directories. +// It is invoked from a reexec'd handler and provides namespace isolation for +// the operations performed by this hook. At the point where this is invoked, +// we are in a new mount namespace that is cloned from the parent. +// +// args[0] is the reexec initializer function name +// args[1] is the path of the ldconfig binary on the host +// args[2] is the container root directory +// The remaining args are directories where soname symlinks need to be created. +func createSonameSymlinks(args []string) error { + if len(args) < 3 { + return fmt.Errorf("incorrect arguments: %v", args) + } + hostLdconfigPath := args[1] + containerRootDirPath := args[2] + + ldconfig, err := ldconfig.New( + hostLdconfigPath, + containerRootDirPath, + ) + if err != nil { + return fmt.Errorf("failed to construct ldconfig runner: %w", err) + } + + return ldconfig.CreateSonameSymlinks(args[3:]...) +} diff --git a/cmd/nvidia-cdi-hook/create-symlinks/create-symlinks.go b/cmd/nvidia-cdi-hook/create-symlinks/create-symlinks.go index b59ce7274..82326a2f1 100644 --- a/cmd/nvidia-cdi-hook/create-symlinks/create-symlinks.go +++ b/cmd/nvidia-cdi-hook/create-symlinks/create-symlinks.go @@ -17,18 +17,19 @@ package symlinks import ( + "context" + "errors" "fmt" "os" "path/filepath" "strings" - "github.com/urfave/cli/v2" + "github.com/moby/sys/symlink" + "github.com/urfave/cli/v3" "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" - "github.com/NVIDIA/nvidia-container-toolkit/internal/lookup" "github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/symlinks" "github.com/NVIDIA/nvidia-container-toolkit/internal/oci" - "github.com/NVIDIA/nvidia-container-toolkit/internal/platform-support/tegra/csv" ) type command struct { @@ -36,9 +37,7 @@ type command struct { } type config struct { - hostRoot string - filenames cli.StringSlice - links cli.StringSlice + links []string containerSpec string } @@ -50,46 +49,36 @@ func NewCommand(logger logger.Interface) *cli.Command { return c.build() } -// build +// build creates the create-symlink command. func (m command) build() *cli.Command { cfg := config{} - // Create the '' command c := cli.Command{ Name: "create-symlinks", - Usage: "A hook to create symlinks in the container. This can be used to process CSV mount specs", - Action: func(c *cli.Context) error { - return m.run(c, &cfg) + Usage: "A hook to create symlinks in the container.", + Action: func(_ context.Context, cmd *cli.Command) error { + return m.run(cmd, &cfg) }, - } - - c.Flags = []cli.Flag{ - &cli.StringFlag{ - Name: "host-root", - Usage: "The root on the host filesystem to use to resolve symlinks", - Destination: &cfg.hostRoot, - }, - &cli.StringSliceFlag{ - Name: "csv-filename", - Usage: "Specify a (CSV) filename to process", - Destination: &cfg.filenames, - }, - &cli.StringSliceFlag{ - Name: "link", - Usage: "Specify a specific link to create. The link is specified as target::link", - Destination: &cfg.links, - }, - &cli.StringFlag{ - Name: "container-spec", - Usage: "Specify the path to the OCI container spec. If empty or '-' the spec will be read from STDIN", - Destination: &cfg.containerSpec, + Flags: []cli.Flag{ + &cli.StringSliceFlag{ + Name: "link", + Usage: "Specify a specific link to create. The link is specified as target::link. If the link exists in the container root, it is removed.", + Destination: &cfg.links, + }, + // The following flags are testing-only flags. + &cli.StringFlag{ + Name: "container-spec", + Usage: "Specify the path to the OCI container spec. If empty or '-' the spec will be read from STDIN. This is only intended for testing.", + Destination: &cfg.containerSpec, + Hidden: true, + }, }, } return &c } -func (m command) run(c *cli.Context, cfg *config) error { +func (m command) run(_ *cli.Command, cfg *config) error { s, err := oci.LoadContainerState(cfg.containerSpec) if err != nil { return fmt.Errorf("failed to load container state: %v", err) @@ -100,90 +89,65 @@ func (m command) run(c *cli.Context, cfg *config) error { return fmt.Errorf("failed to determined container root: %v", err) } - csvFiles := cfg.filenames.Value() - - chainLocator := lookup.NewSymlinkChainLocator( - lookup.WithLogger(m.logger), - lookup.WithRoot(cfg.hostRoot), - ) - - var candidates []string - for _, file := range csvFiles { - mountSpecs, err := csv.NewCSVFileParser(m.logger, file).Parse() - if err != nil { - m.logger.Debugf("Skipping CSV file %v: %v", file, err) - continue - } - - for _, ms := range mountSpecs { - if ms.Type != csv.MountSpecSym { - continue - } - targets, err := chainLocator.Locate(ms.Path) - if err != nil { - m.logger.Warningf("Failed to locate symlink %v", ms.Path) - } - candidates = append(candidates, targets...) - } - } - created := make(map[string]bool) - // candidates is a list of absolute paths to symlinks in a chain, or the final target of the chain. - for _, candidate := range candidates { - target, err := symlinks.Resolve(candidate) - if err != nil { - m.logger.Debugf("Skipping invalid link: %v", err) - continue - } else if target == candidate { - m.logger.Debugf("%v is not a symlink", candidate) + for _, l := range cfg.links { + if created[l] { + m.logger.Debugf("Link %v already processed", l) continue } - - err = m.createLink(created, cfg.hostRoot, containerRoot, target, candidate) - if err != nil { - m.logger.Warningf("Failed to create link %v: %v", []string{target, candidate}, err) - } - } - - links := cfg.links.Value() - for _, l := range links { parts := strings.Split(l, "::") if len(parts) != 2 { - m.logger.Warningf("Invalid link specification %v", l) - continue + return fmt.Errorf("invalid symlink specification %v", l) } - err := m.createLink(created, cfg.hostRoot, containerRoot, parts[0], parts[1]) + err := m.createLink(containerRoot, parts[0], parts[1]) if err != nil { - m.logger.Warningf("Failed to create link %v: %v", parts, err) + return fmt.Errorf("failed to create link %v: %w", parts, err) } + created[l] = true } - return nil - } -func (m command) createLink(created map[string]bool, hostRoot string, containerRoot string, target string, link string) error { - linkPath, err := changeRoot(hostRoot, containerRoot, link) +// createLink creates a symbolic link in the specified container root. +// This is equivalent to: +// +// chroot {{ .containerRoot }} ln -f -s {{ .target }} {{ .link }} +// +// If the specified link already exists and points to the same target, this +// operation is a no-op. +// If a file exists at the link path or the link points to a different target +// this file is removed before creating the link. +// +// Note that if the link path resolves to an absolute path oudside of the +// specified root, this is treated as an absolute path in this root. +func (m command) createLink(containerRoot string, targetPath string, link string) error { + linkPath := filepath.Join(containerRoot, link) + + exists, err := linkExists(targetPath, linkPath) if err != nil { - m.logger.Warningf("Failed to resolve path for link %v relative to %v: %v", link, containerRoot, err) + return fmt.Errorf("failed to check if link exists: %w", err) } - if created[linkPath] { - m.logger.Debugf("Link %v already created", linkPath) + if exists { + m.logger.Debugf("Link %s already exists", linkPath) return nil } - targetPath, err := changeRoot(hostRoot, "/", target) + // We resolve the parent of the symlink that we're creating in the container root. + // If we resolve the full link path, an existing link at the location itself + // is also resolved here and we are unable to force create the link. + resolvedLinkParent, err := symlink.FollowSymlinkInScope(filepath.Dir(linkPath), containerRoot) if err != nil { - m.logger.Warningf("Failed to resolve path for target %v relative to %v: %v", target, "/", err) + return fmt.Errorf("failed to follow path for link %v relative to %v: %w", link, containerRoot, err) } + resolvedLinkPath := filepath.Join(resolvedLinkParent, filepath.Base(linkPath)) - m.logger.Infof("Symlinking %v to %v", linkPath, targetPath) - err = os.MkdirAll(filepath.Dir(linkPath), 0755) + m.logger.Infof("Symlinking %v to %v", resolvedLinkPath, targetPath) + err = os.MkdirAll(filepath.Dir(resolvedLinkPath), 0755) if err != nil { return fmt.Errorf("failed to create directory: %v", err) } - err = os.Symlink(target, linkPath) + err = symlinks.ForceCreate(targetPath, resolvedLinkPath) if err != nil { return fmt.Errorf("failed to create symlink: %v", err) } @@ -191,41 +155,18 @@ func (m command) createLink(created map[string]bool, hostRoot string, containerR return nil } -func changeRoot(current string, new string, path string) (string, error) { - if !filepath.IsAbs(path) { - return path, nil - } - - relative := path - if current != "" { - r, err := filepath.Rel(current, path) - if err != nil { - return "", err - } - relative = r +// linkExists checks whether the specified link exists. +// A link exists if the path exists, is a symlink, and points to the specified target. +func linkExists(target string, link string) (bool, error) { + currentTarget, err := symlinks.Resolve(link) + if errors.Is(err, os.ErrNotExist) { + return false, nil } - - return filepath.Join(new, relative), nil -} - -// Locate returns the link target of the specified filename or an empty slice if the -// specified filename is not a symlink. -func (m command) Locate(filename string) ([]string, error) { - info, err := os.Lstat(filename) if err != nil { - return nil, fmt.Errorf("failed to get file info: %v", info) + return false, fmt.Errorf("failed to resolve existing symlink %s: %w", link, err) } - if info.Mode()&os.ModeSymlink == 0 { - m.logger.Debugf("%v is not a symlink", filename) - return nil, nil + if currentTarget == target { + return true, nil } - - target, err := os.Readlink(filename) - if err != nil { - return nil, fmt.Errorf("error checking symlink: %v", err) - } - - m.logger.Debugf("Resolved link: '%v' => '%v'", filename, target) - - return []string{target}, nil + return false, nil } diff --git a/cmd/nvidia-cdi-hook/create-symlinks/create-symlinks_test.go b/cmd/nvidia-cdi-hook/create-symlinks/create-symlinks_test.go new file mode 100644 index 000000000..f2bdefcf4 --- /dev/null +++ b/cmd/nvidia-cdi-hook/create-symlinks/create-symlinks_test.go @@ -0,0 +1,297 @@ +package symlinks + +import ( + "os" + "path/filepath" + "strings" + "testing" + + testlog "github.com/sirupsen/logrus/hooks/test" + "github.com/stretchr/testify/require" + + "github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/symlinks" +) + +func TestLinkExist(t *testing.T) { + tmpDir := t.TempDir() + require.NoError( + t, + makeFs(tmpDir, + dirOrLink{path: "/a/b/c", target: "d"}, + dirOrLink{path: "/a/b/e", target: "/a/b/f"}, + ), + ) + + exists, err := linkExists("d", filepath.Join(tmpDir, "/a/b/c")) + require.NoError(t, err) + require.True(t, exists) + + exists, err = linkExists("/a/b/f", filepath.Join(tmpDir, "/a/b/e")) + require.NoError(t, err) + require.True(t, exists) + + exists, err = linkExists("different-target", filepath.Join(tmpDir, "/a/b/c")) + require.NoError(t, err) + require.False(t, exists) + + exists, err = linkExists("/a/b/d", filepath.Join(tmpDir, "/a/b/c")) + require.NoError(t, err) + require.False(t, exists) + + exists, err = linkExists("foo", filepath.Join(tmpDir, "/a/b/does-not-exist")) + require.NoError(t, err) + require.False(t, exists) +} + +func TestCreateLink(t *testing.T) { + type link struct { + path string + target string + } + type expectedLink struct { + link + err error + } + + testCases := []struct { + description string + containerContents []dirOrLink + link link + expectedCreateError error + expectedLinks []expectedLink + }{ + { + description: "link to / resolves to container root", + containerContents: []dirOrLink{ + {path: "/lib/foo", target: "/"}, + }, + link: link{ + path: "/lib/foo/libfoo.so", + target: "libfoo.so.1", + }, + expectedLinks: []expectedLink{ + { + link: link{ + path: "{{ .containerRoot }}/libfoo.so", + target: "libfoo.so.1", + }, + }, + }, + }, + { + description: "link to / resolves to container root; parent relative link", + containerContents: []dirOrLink{ + {path: "/lib/foo", target: "/"}, + }, + link: link{ + path: "/lib/foo/libfoo.so", + target: "../libfoo.so.1", + }, + expectedLinks: []expectedLink{ + { + link: link{ + path: "{{ .containerRoot }}/libfoo.so", + target: "../libfoo.so.1", + }, + }, + }, + }, + { + description: "link to / resolves to container root; absolute link", + containerContents: []dirOrLink{ + {path: "/lib/foo", target: "/"}, + }, + link: link{ + path: "/lib/foo/libfoo.so", + target: "/a-path-in-container/foo/libfoo.so.1", + }, + expectedLinks: []expectedLink{ + { + link: link{ + path: "{{ .containerRoot }}/libfoo.so", + target: "/a-path-in-container/foo/libfoo.so.1", + }, + }, + { + // We also check that the target is NOT created. + link: link{ + path: "{{ .containerRoot }}/a-path-in-container/foo/libfoo.so.1", + }, + err: os.ErrNotExist, + }, + }, + }, + } + + for _, tc := range testCases { + t.Run(tc.description, func(t *testing.T) { + tmpDir := t.TempDir() + hostRoot := filepath.Join(tmpDir, "/host-root/") + containerRoot := filepath.Join(tmpDir, "/container-root") + + require.NoError(t, makeFs(hostRoot)) + require.NoError(t, makeFs(containerRoot, tc.containerContents...)) + + // nvidia-cdi-hook create-symlinks --link linkSpec + err := getTestCommand().createLink(containerRoot, tc.link.target, tc.link.path) + // TODO: We may be able to replace this with require.ErrorIs. + if tc.expectedCreateError != nil { + require.Error(t, err) + } else { + require.NoError(t, err) + } + + for _, expectedLink := range tc.expectedLinks { + path := strings.ReplaceAll(expectedLink.path, "{{ .containerRoot }}", containerRoot) + path = strings.ReplaceAll(path, "{{ .hostRoot }}", hostRoot) + if expectedLink.target != "" { + target, err := symlinks.Resolve(path) + require.ErrorIs(t, err, expectedLink.err) + require.Equal(t, expectedLink.target, target) + } else { + _, err := os.Stat(path) + require.ErrorIs(t, err, expectedLink.err) + } + } + }) + } +} + +func TestCreateLinkRelativePath(t *testing.T) { + tmpDir := t.TempDir() + hostRoot := filepath.Join(tmpDir, "/host-root/") + containerRoot := filepath.Join(tmpDir, "/container-root") + + require.NoError(t, makeFs(hostRoot)) + require.NoError(t, makeFs(containerRoot, dirOrLink{path: "/lib/"})) + + // nvidia-cdi-hook create-symlinks --link libfoo.so.1::/lib/libfoo.so + err := getTestCommand().createLink(containerRoot, "libfoo.so.1", "/lib/libfoo.so") + require.NoError(t, err) + + target, err := symlinks.Resolve(filepath.Join(containerRoot, "/lib/libfoo.so")) + require.NoError(t, err) + require.Equal(t, "libfoo.so.1", target) +} + +func TestCreateLinkAbsolutePath(t *testing.T) { + tmpDir := t.TempDir() + hostRoot := filepath.Join(tmpDir, "/host-root/") + containerRoot := filepath.Join(tmpDir, "/container-root") + + require.NoError(t, makeFs(hostRoot)) + require.NoError(t, makeFs(containerRoot, dirOrLink{path: "/lib/"})) + + // nvidia-cdi-hook create-symlinks --link /lib/libfoo.so.1::/lib/libfoo.so + err := getTestCommand().createLink(containerRoot, "/lib/libfoo.so.1", "/lib/libfoo.so") + require.NoError(t, err) + + target, err := symlinks.Resolve(filepath.Join(containerRoot, "/lib/libfoo.so")) + require.NoError(t, err) + require.Equal(t, "/lib/libfoo.so.1", target) +} + +func TestCreateLinkAlreadyExists(t *testing.T) { + testCases := []struct { + description string + containerContents []dirOrLink + shouldExist []string + }{ + { + description: "link already exists with correct target", + containerContents: []dirOrLink{{path: "/lib/libfoo.so", target: "libfoo.so.1"}}, + shouldExist: []string{}, + }, + { + description: "link already exists with different target", + containerContents: []dirOrLink{{path: "/lib/libfoo.so", target: "different-target"}, {path: "different-target"}}, + shouldExist: []string{"{{ .containerRoot }}/different-target"}, + }, + } + + for _, tc := range testCases { + t.Run(tc.description, func(t *testing.T) { + tmpDir := t.TempDir() + hostRoot := filepath.Join(tmpDir, "/host-root/") + containerRoot := filepath.Join(tmpDir, "/container-root") + require.NoError(t, makeFs(hostRoot)) + require.NoError(t, makeFs(containerRoot, tc.containerContents...)) + + // nvidia-cdi-hook create-symlinks --link libfoo.so.1::/lib/libfoo.so + err := getTestCommand().createLink(containerRoot, "libfoo.so.1", "/lib/libfoo.so") + require.NoError(t, err) + target, err := symlinks.Resolve(filepath.Join(containerRoot, "lib/libfoo.so")) + require.NoError(t, err) + require.Equal(t, "libfoo.so.1", target) + + for _, p := range tc.shouldExist { + require.DirExists(t, strings.ReplaceAll(p, "{{ .containerRoot }}", containerRoot)) + } + }) + } +} + +func TestCreateLinkOutOfBounds(t *testing.T) { + tmpDir := t.TempDir() + hostRoot := filepath.Join(tmpDir, "/host-root") + containerRoot := filepath.Join(tmpDir, "/container-root") + + require.NoError(t, + makeFs(hostRoot, + dirOrLink{path: "libfoo.so"}, + ), + ) + require.NoError(t, + makeFs(containerRoot, + dirOrLink{path: "/lib"}, + dirOrLink{path: "/lib/foo", target: hostRoot}, + ), + ) + + path, err := symlinks.Resolve(filepath.Join(containerRoot, "/lib/foo")) + require.NoError(t, err) + require.Equal(t, hostRoot, path) + + // nvidia-cdi-hook create-symlinks --link ../libfoo.so.1::/lib/foo/libfoo.so + _ = getTestCommand().createLink(containerRoot, "../libfoo.so.1", "/lib/foo/libfoo.so") + require.NoError(t, err) + + target, err := symlinks.Resolve(filepath.Join(containerRoot, hostRoot, "libfoo.so")) + require.NoError(t, err) + require.Equal(t, "../libfoo.so.1", target) + + require.DirExists(t, filepath.Join(hostRoot, "libfoo.so")) +} + +type dirOrLink struct { + path string + target string +} + +func makeFs(tmpdir string, fs ...dirOrLink) error { + if err := os.MkdirAll(tmpdir, 0o755); err != nil { + return err + } + for _, s := range fs { + s.path = filepath.Join(tmpdir, s.path) + if s.target == "" { + _ = os.MkdirAll(s.path, 0o755) + continue + } + if err := os.MkdirAll(filepath.Dir(s.path), 0o755); err != nil { + return err + } + if err := os.Symlink(s.target, s.path); err != nil && !os.IsExist(err) { + return err + } + } + return nil +} + +// getTestCommand creates a command for running tests against. +func getTestCommand() *command { + logger, _ := testlog.NewNullLogger() + return &command{ + logger: logger, + } +} diff --git a/cmd/nvidia-cdi-hook/cudacompat/container-root.go b/cmd/nvidia-cdi-hook/cudacompat/container-root.go new file mode 100644 index 000000000..8bb3b3c85 --- /dev/null +++ b/cmd/nvidia-cdi-hook/cudacompat/container-root.go @@ -0,0 +1,76 @@ +/** +# Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package cudacompat + +import ( + "os" + "path/filepath" + + "github.com/moby/sys/symlink" +) + +// A containerRoot represents the root filesystem of a container. +type containerRoot string + +// hasPath checks whether the specified path exists in the root. +func (r containerRoot) hasPath(path string) bool { + resolved, err := r.resolve(path) + if err != nil { + return false + } + if _, err := os.Stat(resolved); err != nil && os.IsNotExist(err) { + return false + } + return true +} + +// globFiles matches the specified pattern in the root. +// The files that match must be regular files. +func (r containerRoot) globFiles(pattern string) ([]string, error) { + patternPath, err := r.resolve(pattern) + if err != nil { + return nil, err + } + matches, err := filepath.Glob(patternPath) + if err != nil { + return nil, err + } + var files []string + for _, match := range matches { + info, err := os.Lstat(match) + if err != nil { + return nil, err + } + // Ignore symlinks. + if info.Mode()&os.ModeSymlink != 0 { + continue + } + // Ignore directories. + if info.IsDir() { + continue + } + files = append(files, match) + } + return files, nil +} + +// resolve returns the absolute path including root path. +// Symlinks are resolved, but are guaranteed to resolve in the root. +func (r containerRoot) resolve(path string) (string, error) { + absolute := filepath.Clean(filepath.Join(string(r), path)) + return symlink.FollowSymlinkInScope(absolute, string(r)) +} diff --git a/cmd/nvidia-cdi-hook/cudacompat/cudacompat.go b/cmd/nvidia-cdi-hook/cudacompat/cudacompat.go new file mode 100644 index 000000000..bd5b60458 --- /dev/null +++ b/cmd/nvidia-cdi-hook/cudacompat/cudacompat.go @@ -0,0 +1,221 @@ +/** +# Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package cudacompat + +import ( + "context" + "fmt" + "os" + "path/filepath" + "strconv" + "strings" + + "github.com/urfave/cli/v3" + + "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" + "github.com/NVIDIA/nvidia-container-toolkit/internal/oci" +) + +const ( + cudaCompatPath = "/usr/local/cuda/compat" + // cudaCompatLdsoconfdFilenamePattern specifies the pattern for the filename + // in ld.so.conf.d that includes a reference to the CUDA compat path. + // The 00-compat prefix is chosen to ensure that these libraries have a + // higher precedence than other libraries on the system. + cudaCompatLdsoconfdFilenamePattern = "00-compat-*.conf" +) + +type command struct { + logger logger.Interface +} + +type options struct { + hostDriverVersion string + containerSpec string +} + +// NewCommand constructs a cuda-compat command with the specified logger +func NewCommand(logger logger.Interface) *cli.Command { + c := command{ + logger: logger, + } + return c.build() +} + +// build the enable-cuda-compat command +func (m command) build() *cli.Command { + cfg := options{} + + // Create the 'enable-cuda-compat' command + c := cli.Command{ + Name: "enable-cuda-compat", + Usage: "This hook ensures that the folder containing the CUDA compat libraries is added to the ldconfig search path if required.", + Before: func(ctx context.Context, cmd *cli.Command) (context.Context, error) { + return ctx, m.validateFlags(cmd, &cfg) + }, + Action: func(ctx context.Context, cmd *cli.Command) error { + return m.run(cmd, &cfg) + }, + Flags: []cli.Flag{ + &cli.StringFlag{ + Name: "host-driver-version", + Usage: "Specify the host driver version. If the CUDA compat libraries detected in the container do not have a higher MAJOR version, the hook is a no-op.", + Destination: &cfg.hostDriverVersion, + }, + &cli.StringFlag{ + Name: "container-spec", + Hidden: true, + Category: "testing-only", + Usage: "Specify the path to the OCI container spec. If empty or '-' the spec will be read from STDIN", + Destination: &cfg.containerSpec, + }, + }, + } + + return &c +} + +func (m command) validateFlags(cmd *cli.Command, cfg *options) error { + return nil +} + +func (m command) run(_ *cli.Command, cfg *options) error { + if cfg.hostDriverVersion == "" { + return nil + } + + s, err := oci.LoadContainerState(cfg.containerSpec) + if err != nil { + return fmt.Errorf("failed to load container state: %w", err) + } + + containerRootDir, err := s.GetContainerRoot() + if err != nil { + return fmt.Errorf("failed to determined container root: %w", err) + } + + containerForwardCompatDir, err := m.getContainerForwardCompatDir(containerRoot(containerRootDir), cfg.hostDriverVersion) + if err != nil { + return fmt.Errorf("failed to get container forward compat directory: %w", err) + } + if containerForwardCompatDir == "" { + return nil + } + + return m.createLdsoconfdFile(containerRoot(containerRootDir), cudaCompatLdsoconfdFilenamePattern, containerForwardCompatDir) +} + +func (m command) getContainerForwardCompatDir(containerRoot containerRoot, hostDriverVersion string) (string, error) { + if hostDriverVersion == "" { + m.logger.Debugf("Host driver version not specified") + return "", nil + } + if !containerRoot.hasPath(cudaCompatPath) { + m.logger.Debugf("No CUDA forward compatibility libraries directory in container") + return "", nil + } + if !containerRoot.hasPath("/etc/ld.so.cache") { + m.logger.Debugf("The container does not have an LDCache") + return "", nil + } + + libs, err := containerRoot.globFiles(filepath.Join(cudaCompatPath, "libcuda.so.*.*")) + if err != nil { + m.logger.Warningf("Failed to find CUDA compat library: %w", err) + return "", nil + } + + if len(libs) == 0 { + m.logger.Debugf("No CUDA forward compatibility libraries container") + return "", nil + } + + if len(libs) != 1 { + m.logger.Warningf("Unexpected number of CUDA compat libraries in container: %v", libs) + return "", nil + } + + compatDriverVersion := strings.TrimPrefix(filepath.Base(libs[0]), "libcuda.so.") + compatMajor, err := extractMajorVersion(compatDriverVersion) + if err != nil { + return "", fmt.Errorf("failed to extract major version from %q: %v", compatDriverVersion, err) + } + + driverMajor, err := extractMajorVersion(hostDriverVersion) + if err != nil { + return "", fmt.Errorf("failed to extract major version from %q: %v", hostDriverVersion, err) + } + + if driverMajor >= compatMajor { + m.logger.Debugf("Compat major version is not greater than the host driver major version (%v >= %v)", hostDriverVersion, compatDriverVersion) + return "", nil + } + + resolvedCompatDir := strings.TrimPrefix(filepath.Dir(libs[0]), string(containerRoot)) + return resolvedCompatDir, nil +} + +// createLdsoconfdFile creates a file at /etc/ld.so.conf.d/ in the specified root. +// The file is created at /etc/ld.so.conf.d/{{ .pattern }} using `CreateTemp` and +// contains the specified directories on each line. +func (m command) createLdsoconfdFile(in containerRoot, pattern string, dirs ...string) error { + if len(dirs) == 0 { + m.logger.Debugf("No directories to add to /etc/ld.so.conf") + return nil + } + + ldsoconfdDir, err := in.resolve("/etc/ld.so.conf.d") + if err != nil { + return err + } + if err := os.MkdirAll(ldsoconfdDir, 0755); err != nil { + return fmt.Errorf("failed to create ld.so.conf.d: %w", err) + } + + configFile, err := os.CreateTemp(ldsoconfdDir, pattern) + if err != nil { + return fmt.Errorf("failed to create config file: %w", err) + } + defer configFile.Close() + + m.logger.Debugf("Adding directories %v to %v", dirs, configFile.Name()) + + added := make(map[string]bool) + for _, dir := range dirs { + if added[dir] { + continue + } + _, err = fmt.Fprintf(configFile, "%s\n", dir) + if err != nil { + return fmt.Errorf("failed to update config file: %w", err) + } + added[dir] = true + } + + // The created file needs to be world readable for the cases where the container is run as a non-root user. + if err := configFile.Chmod(0644); err != nil { + return fmt.Errorf("failed to chmod config file: %w", err) + } + + return nil +} + +// extractMajorVersion parses a version string and returns the major version as an int. +func extractMajorVersion(version string) (int, error) { + majorString := strings.SplitN(version, ".", 2)[0] + return strconv.Atoi(majorString) +} diff --git a/cmd/nvidia-cdi-hook/cudacompat/cudacompat_test.go b/cmd/nvidia-cdi-hook/cudacompat/cudacompat_test.go new file mode 100644 index 000000000..0422fe76c --- /dev/null +++ b/cmd/nvidia-cdi-hook/cudacompat/cudacompat_test.go @@ -0,0 +1,182 @@ +/* +# Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/ + +package cudacompat + +import ( + "os" + "path/filepath" + "strings" + "testing" + + testlog "github.com/sirupsen/logrus/hooks/test" + "github.com/stretchr/testify/require" +) + +func TestCompatLibs(t *testing.T) { + logger, _ := testlog.NewNullLogger() + + testCases := []struct { + description string + contents map[string]string + hostDriverVersion string + expectedContainerForwardCompatDir string + }{ + { + description: "empty root", + hostDriverVersion: "222.55.66", + }, + { + description: "compat lib is newer; no ldcache", + contents: map[string]string{ + "/usr/local/cuda/compat/libcuda.so.333.88.99": "", + }, + hostDriverVersion: "222.55.66", + }, + { + description: "compat lib is newer; ldcache", + contents: map[string]string{ + "/etc/ld.so.cache": "", + "/usr/local/cuda/compat/libcuda.so.333.88.99": "", + }, + hostDriverVersion: "222.55.66", + expectedContainerForwardCompatDir: "/usr/local/cuda/compat", + }, + { + description: "compat lib is older; ldcache", + contents: map[string]string{ + "/etc/ld.so.cache": "", + "/usr/local/cuda/compat/libcuda.so.111.88.99": "", + }, + hostDriverVersion: "222.55.66", + expectedContainerForwardCompatDir: "", + }, + { + description: "compat lib has same major version; ldcache", + contents: map[string]string{ + "/etc/ld.so.cache": "", + "/usr/local/cuda/compat/libcuda.so.222.88.99": "", + }, + hostDriverVersion: "222.55.66", + expectedContainerForwardCompatDir: "", + }, + { + description: "numeric comparison is used; ldcache", + contents: map[string]string{ + "/etc/ld.so.cache": "", + "/usr/local/cuda/compat/libcuda.so.222.88.99": "", + }, + hostDriverVersion: "99.55.66", + expectedContainerForwardCompatDir: "/usr/local/cuda/compat", + }, + { + description: "driver version empty; ldcache", + contents: map[string]string{ + "/etc/ld.so.cache": "", + "/usr/local/cuda/compat/libcuda.so.222.88.99": "", + }, + hostDriverVersion: "", + }, + { + description: "symlinks are followed", + contents: map[string]string{ + "/etc/ld.so.cache": "", + "/etc/alternatives/cuda/compat/libcuda.so.333.88.99": "", + "/usr/local/cuda": "symlink=/etc/alternatives/cuda", + }, + hostDriverVersion: "222.55.66", + expectedContainerForwardCompatDir: "/etc/alternatives/cuda/compat", + }, + { + description: "symlinks stay in container", + contents: map[string]string{ + "/etc/ld.so.cache": "", + "/compat/libcuda.so.333.88.99": "", + "/usr/local/cuda": "symlink=../../../../../../", + }, + hostDriverVersion: "222.55.66", + expectedContainerForwardCompatDir: "/compat", + }, + } + + for _, tc := range testCases { + t.Run(tc.description, func(t *testing.T) { + containerRootDir := t.TempDir() + for name, contents := range tc.contents { + target := filepath.Join(containerRootDir, name) + require.NoError(t, os.MkdirAll(filepath.Dir(target), 0755)) + + if strings.HasPrefix(contents, "symlink=") { + require.NoError(t, os.Symlink(strings.TrimPrefix(contents, "symlink="), target)) + continue + } + + require.NoError(t, os.WriteFile(target, []byte(contents), 0600)) + } + + c := command{ + logger: logger, + } + containerForwardCompatDir, err := c.getContainerForwardCompatDir(containerRoot(containerRootDir), tc.hostDriverVersion) + require.NoError(t, err) + require.EqualValues(t, tc.expectedContainerForwardCompatDir, containerForwardCompatDir) + }) + } +} + +func TestUpdateLdconfig(t *testing.T) { + logger, _ := testlog.NewNullLogger() + testCases := []struct { + description string + folders []string + expectedContents string + }{ + { + description: "no folders; have no contents", + }, + { + description: "single folder is added", + folders: []string{"/usr/local/cuda/compat"}, + expectedContents: "/usr/local/cuda/compat\n", + }, + } + + for _, tc := range testCases { + t.Run(tc.description, func(t *testing.T) { + containerRootDir := t.TempDir() + c := command{ + logger: logger, + } + err := c.createLdsoconfdFile(containerRoot(containerRootDir), cudaCompatLdsoconfdFilenamePattern, tc.folders...) + require.NoError(t, err) + + matches, err := filepath.Glob(filepath.Join(containerRootDir, "/etc/ld.so.conf.d/00-compat-*.conf")) + require.NoError(t, err) + + if tc.expectedContents == "" { + require.Empty(t, matches) + return + } + + require.Len(t, matches, 1) + contents, err := os.ReadFile(matches[0]) + require.NoError(t, err) + + require.EqualValues(t, tc.expectedContents, string(contents)) + }) + } + +} diff --git a/cmd/nvidia-cdi-hook/disable-device-node-modification/disable-device-node-modification.go b/cmd/nvidia-cdi-hook/disable-device-node-modification/disable-device-node-modification.go new file mode 100644 index 000000000..0244e4801 --- /dev/null +++ b/cmd/nvidia-cdi-hook/disable-device-node-modification/disable-device-node-modification.go @@ -0,0 +1,144 @@ +/** +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package disabledevicenodemodification + +import ( + "bufio" + "bytes" + "context" + "errors" + "fmt" + "io" + "os" + "strings" + + "github.com/urfave/cli/v3" + + "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" + "github.com/NVIDIA/nvidia-container-toolkit/internal/oci" +) + +const ( + nvidiaDriverParamsPath = "/proc/driver/nvidia/params" +) + +type options struct { + containerSpec string +} + +// NewCommand constructs an disable-device-node-modification subcommand with the specified logger +func NewCommand(logger logger.Interface) *cli.Command { + cfg := options{} + + c := cli.Command{ + Name: "disable-device-node-modification", + Usage: "Ensure that the /proc/driver/nvidia/params file present in the container does not allow device node modifications.", + Before: func(ctx context.Context, cmd *cli.Command) (context.Context, error) { + return ctx, validateFlags(cmd, &cfg) + }, + Action: func(ctx context.Context, cmd *cli.Command) error { + return run(ctx, cmd, &cfg) + }, + Flags: []cli.Flag{ + &cli.StringFlag{ + Name: "container-spec", + Hidden: true, + Usage: "Specify the path to the OCI container spec. If empty or '-' the spec will be read from STDIN", + Destination: &cfg.containerSpec, + }, + }, + } + + return &c +} + +func validateFlags(_ *cli.Command, _ *options) error { + return nil +} + +func run(_ context.Context, _ *cli.Command, cfg *options) error { + modifiedParamsFileContents, err := getModifiedNVIDIAParamsContents() + if err != nil { + return fmt.Errorf("failed to get modified params file contents: %w", err) + } + if len(modifiedParamsFileContents) == 0 { + return nil + } + + s, err := oci.LoadContainerState(cfg.containerSpec) + if err != nil { + return fmt.Errorf("failed to load container state: %w", err) + } + + containerRootDirPath, err := s.GetContainerRoot() + if err != nil { + return fmt.Errorf("failed to determined container root: %w", err) + } + + return createParamsFileInContainer(containerRootDirPath, modifiedParamsFileContents) +} + +func getModifiedNVIDIAParamsContents() ([]byte, error) { + hostNvidiaParamsFile, err := os.Open(nvidiaDriverParamsPath) + if errors.Is(err, os.ErrNotExist) { + return nil, nil + } + if err != nil { + return nil, fmt.Errorf("failed to load params file: %w", err) + } + defer hostNvidiaParamsFile.Close() + + modifiedContents, err := getModifiedParamsFileContentsFromReader(hostNvidiaParamsFile) + if err != nil { + return nil, fmt.Errorf("failed to get modfied params file contents: %w", err) + } + + return modifiedContents, nil +} + +// getModifiedParamsFileContentsFromReader returns the contents of a modified params file from the specified reader. +func getModifiedParamsFileContentsFromReader(r io.Reader) ([]byte, error) { + var modified bytes.Buffer + scanner := bufio.NewScanner(r) + + var requiresModification bool + for scanner.Scan() { + line := scanner.Text() + if strings.HasPrefix(line, "ModifyDeviceFiles: ") { + if line == "ModifyDeviceFiles: 0" { + return nil, nil + } + if line == "ModifyDeviceFiles: 1" { + line = "ModifyDeviceFiles: 0" + requiresModification = true + } + } + if _, err := modified.WriteString(line + "\n"); err != nil { + return nil, fmt.Errorf("failed to create output buffer: %w", err) + } + } + if err := scanner.Err(); err != nil { + return nil, fmt.Errorf("failed to read params file: %w", err) + } + + if !requiresModification { + return nil, nil + } + + return modified.Bytes(), nil +} diff --git a/cmd/nvidia-cdi-hook/disable-device-node-modification/disable-device-node-modification_test.go b/cmd/nvidia-cdi-hook/disable-device-node-modification/disable-device-node-modification_test.go new file mode 100644 index 000000000..9ddb67ad2 --- /dev/null +++ b/cmd/nvidia-cdi-hook/disable-device-node-modification/disable-device-node-modification_test.go @@ -0,0 +1,91 @@ +/** +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package disabledevicenodemodification + +import ( + "bytes" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestGetModifiedParamsFileContentsFromReader(t *testing.T) { + testCases := map[string]struct { + contents []byte + expectedError error + expectedContents []byte + }{ + "no contents": { + contents: nil, + expectedError: nil, + expectedContents: nil, + }, + "other contents are ignored": { + contents: []byte(`# Some other content + that we don't care about + `), + expectedError: nil, + expectedContents: nil, + }, + "already zero requires no modification": { + contents: []byte("ModifyDeviceFiles: 0"), + expectedError: nil, + expectedContents: nil, + }, + "leading spaces require no modification": { + contents: []byte(" ModifyDeviceFiles: 1"), + }, + "Trailing spaces require no modification": { + contents: []byte("ModifyDeviceFiles: 1 "), + }, + "Not 1 require no modification": { + contents: []byte("ModifyDeviceFiles: 11"), + }, + "single line requires modification": { + contents: []byte("ModifyDeviceFiles: 1"), + expectedError: nil, + expectedContents: []byte("ModifyDeviceFiles: 0\n"), + }, + "single line with trailing newline requires modification": { + contents: []byte("ModifyDeviceFiles: 1\n"), + expectedError: nil, + expectedContents: []byte("ModifyDeviceFiles: 0\n"), + }, + "other content is maintained": { + contents: []byte(`ModifyDeviceFiles: 1 + other content + that + is maintained`), + expectedError: nil, + expectedContents: []byte(`ModifyDeviceFiles: 0 + other content + that + is maintained +`), + }, + } + + for description, tc := range testCases { + t.Run(description, func(t *testing.T) { + contents, err := getModifiedParamsFileContentsFromReader(bytes.NewReader(tc.contents)) + require.EqualValues(t, tc.expectedError, err) + require.EqualValues(t, string(tc.expectedContents), string(contents)) + }) + } + +} diff --git a/cmd/nvidia-cdi-hook/disable-device-node-modification/params_linux.go b/cmd/nvidia-cdi-hook/disable-device-node-modification/params_linux.go new file mode 100644 index 000000000..c438545f1 --- /dev/null +++ b/cmd/nvidia-cdi-hook/disable-device-node-modification/params_linux.go @@ -0,0 +1,110 @@ +//go:build linux + +/** +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package disabledevicenodemodification + +import ( + "errors" + "fmt" + "os" + "path/filepath" + + securejoin "github.com/cyphar/filepath-securejoin" + "github.com/opencontainers/runc/libcontainer/utils" + "golang.org/x/sys/unix" +) + +func createParamsFileInContainer(containerRootDirPath string, contents []byte) error { + hookScratchDirPath := "/var/run/nvidia-ctk-hook" + if err := utils.MkdirAllInRoot(containerRootDirPath, hookScratchDirPath, 0755); err != nil { + return fmt.Errorf("error creating hook scratch folder: %w", err) + } + + err := utils.WithProcfd(containerRootDirPath, hookScratchDirPath, func(hookScratchDirFdPath string) error { + return createTmpFs(hookScratchDirFdPath, len(contents)) + + }) + if err != nil { + return fmt.Errorf("failed to create tmpfs mount for params file: %w", err) + } + + modifiedParamsFilePath := filepath.Join(hookScratchDirPath, "nvct-params") + if _, err := createFileInRoot(containerRootDirPath, modifiedParamsFilePath, 0444); err != nil { + return fmt.Errorf("error creating modified params file: %w", err) + } + + err = utils.WithProcfd(containerRootDirPath, modifiedParamsFilePath, func(modifiedParamsFileFdPath string) error { + modifiedParamsFile, err := os.OpenFile(modifiedParamsFileFdPath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0444) + if err != nil { + return fmt.Errorf("failed to open modified params file: %w", err) + } + defer modifiedParamsFile.Close() + + if _, err := modifiedParamsFile.Write(contents); err != nil { + return fmt.Errorf("failed to write temporary params file: %w", err) + } + + err = utils.WithProcfd(containerRootDirPath, nvidiaDriverParamsPath, func(nvidiaDriverParamsFdPath string) error { + return unix.Mount(modifiedParamsFileFdPath, nvidiaDriverParamsFdPath, "", unix.MS_BIND|unix.MS_RDONLY|unix.MS_NODEV|unix.MS_PRIVATE|unix.MS_NOSYMFOLLOW, "") + }) + if err != nil { + return fmt.Errorf("failed to mount modified params file: %w", err) + } + + return nil + }) + if err != nil { + return err + } + + return nil +} + +func createTmpFs(target string, size int) error { + return unix.Mount("tmpfs", target, "tmpfs", 0, fmt.Sprintf("size=%d", size)) +} + +// TODO(ArangoGutierrez): This function also exists in internal/ldconfig we should move this to a separate package. +func createFileInRoot(containerRootDirPath string, destinationPath string, mode os.FileMode) (string, error) { + dest, err := securejoin.SecureJoin(containerRootDirPath, destinationPath) + if err != nil { + return "", err + } + // Make the parent directory. + destDir, destBase := filepath.Split(dest) + destDirFd, err := utils.MkdirAllInRootOpen(containerRootDirPath, destDir, 0755) + if err != nil { + return "", fmt.Errorf("error creating parent dir: %w", err) + } + defer destDirFd.Close() + // Make the target file. We want to avoid opening any file that is + // already there because it could be a "bad" file like an invalid + // device or hung tty that might cause a DoS, so we use mknodat. + // destBase does not contain any "/" components, and mknodat does + // not follow trailing symlinks, so we can safely just call mknodat + // here. + if err := unix.Mknodat(int(destDirFd.Fd()), destBase, unix.S_IFREG|uint32(mode), 0); err != nil { + // If we get EEXIST, there was already an inode there and + // we can consider that a success. + if !errors.Is(err, unix.EEXIST) { + return "", fmt.Errorf("error creating empty file: %w", err) + } + } + return dest, nil +} diff --git a/cmd/nvidia-cdi-hook/disable-device-node-modification/params_other.go b/cmd/nvidia-cdi-hook/disable-device-node-modification/params_other.go new file mode 100644 index 000000000..9032e5147 --- /dev/null +++ b/cmd/nvidia-cdi-hook/disable-device-node-modification/params_other.go @@ -0,0 +1,27 @@ +//go:build !linux +// +build !linux + +/** +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package disabledevicenodemodification + +import "fmt" + +func createParamsFileInContainer(containerRootDirPath string, contents []byte) error { + return fmt.Errorf("not supported") +} diff --git a/cmd/nvidia-cdi-hook/main.go b/cmd/nvidia-cdi-hook/main.go index d7b7c2710..d5abf4fed 100644 --- a/cmd/nvidia-cdi-hook/main.go +++ b/cmd/nvidia-cdi-hook/main.go @@ -17,13 +17,14 @@ package main import ( + "context" "os" "github.com/sirupsen/logrus" "github.com/NVIDIA/nvidia-container-toolkit/internal/info" - cli "github.com/urfave/cli/v2" + cli "github.com/urfave/cli/v3" "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-cdi-hook/commands" ) @@ -44,48 +45,56 @@ func main() { opts := options{} // Create the top-level CLI - c := cli.NewApp() - c.Name = "NVIDIA CDI Hook" - c.UseShortOptionHandling = true - c.EnableBashCompletion = true - c.Usage = "Command to structure files for usage inside a container, called as hooks from a container runtime, defined in a CDI yaml file" - c.Version = info.GetVersionString() - - // Setup the flags for this command - c.Flags = []cli.Flag{ - &cli.BoolFlag{ - Name: "debug", - Aliases: []string{"d"}, - Usage: "Enable debug-level logging", - Destination: &opts.Debug, - EnvVars: []string{"NVIDIA_CDI_DEBUG"}, + c := cli.Command{ + Name: "NVIDIA CDI Hook", + Usage: "Command to structure files for usage inside a container, called as hooks from a container runtime, defined in a CDI yaml file", + Version: info.GetVersionString(), + // Set log-level for all subcommands + Before: func(ctx context.Context, cmd *cli.Command) (context.Context, error) { + logLevel := logrus.InfoLevel + if opts.Debug { + logLevel = logrus.DebugLevel + } + if opts.Quiet { + logLevel = logrus.ErrorLevel + } + logger.SetLevel(logLevel) + return ctx, nil }, - &cli.BoolFlag{ - Name: "quiet", - Usage: "Suppress all output except for errors; overrides --debug", - Destination: &opts.Quiet, - EnvVars: []string{"NVIDIA_CDI_QUIET"}, + // We set the default action for the `nvidia-cdi-hook` command to issue a + // warning and exit with no error. + // This means that if an unsupported hook is run, a container will not fail + // to launch. An unsupported hook could be the result of a CDI specification + // referring to a new hook that is not yet supported by an older NVIDIA + // Container Toolkit version or a hook that has been removed in newer + // version. + Action: func(ctx context.Context, cmd *cli.Command) error { + commands.IssueUnsupportedHookWarning(logger, cmd) + return nil + }, + // Define the subcommands + Commands: commands.New(logger), + Flags: []cli.Flag{ + &cli.BoolFlag{ + Name: "debug", + Aliases: []string{"d"}, + Usage: "Enable debug-level logging", + Destination: &opts.Debug, + // TODO: Support for NVIDIA_CDI_DEBUG is deprecated and NVIDIA_CTK_DEBUG should be used instead. + Sources: cli.EnvVars("NVIDIA_CTK_DEBUG", "NVIDIA_CDI_DEBUG"), + }, + &cli.BoolFlag{ + Name: "quiet", + Usage: "Suppress all output except for errors; overrides --debug", + Destination: &opts.Quiet, + // TODO: Support for NVIDIA_CDI_QUIET is deprecated and NVIDIA_CTK_QUIET should be used instead. + Sources: cli.EnvVars("NVIDIA_CTK_QUIET", "NVIDIA_CDI_QUIET"), + }, }, } - // Set log-level for all subcommands - c.Before = func(c *cli.Context) error { - logLevel := logrus.InfoLevel - if opts.Debug { - logLevel = logrus.DebugLevel - } - if opts.Quiet { - logLevel = logrus.ErrorLevel - } - logger.SetLevel(logLevel) - return nil - } - - // Define the subcommands - c.Commands = commands.New(logger) - // Run the CLI - err := c.Run(os.Args) + err := c.Run(context.Background(), os.Args) if err != nil { logger.Errorf("%v", err) os.Exit(1) diff --git a/cmd/nvidia-cdi-hook/update-ldcache/update-ldcache.go b/cmd/nvidia-cdi-hook/update-ldcache/update-ldcache.go index 7128aa6b5..136d28188 100644 --- a/cmd/nvidia-cdi-hook/update-ldcache/update-ldcache.go +++ b/cmd/nvidia-cdi-hook/update-ldcache/update-ldcache.go @@ -17,30 +17,41 @@ package ldcache import ( + "context" "errors" "fmt" + "log" "os" - "path/filepath" - "strings" - "syscall" - "github.com/urfave/cli/v2" + "github.com/moby/sys/reexec" + "github.com/urfave/cli/v3" - "github.com/NVIDIA/nvidia-container-toolkit/internal/config" + "github.com/NVIDIA/nvidia-container-toolkit/internal/ldconfig" "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" "github.com/NVIDIA/nvidia-container-toolkit/internal/oci" ) +const ( + reexecUpdateLdCacheCommandName = "reexec-update-ldcache" +) + type command struct { logger logger.Interface } type options struct { - folders cli.StringSlice + folders []string ldconfigPath string containerSpec string } +func init() { + reexec.Register(reexecUpdateLdCacheCommandName, updateLdCacheHandler) + if reexec.Init() { + os.Exit(0) + } +} + // NewCommand constructs an update-ldcache command with the specified logger func NewCommand(logger logger.Interface) *cli.Command { c := command{ @@ -57,141 +68,97 @@ func (m command) build() *cli.Command { c := cli.Command{ Name: "update-ldcache", Usage: "Update ldcache in a container by running ldconfig", - Before: func(c *cli.Context) error { - return m.validateFlags(c, &cfg) + Before: func(ctx context.Context, cmd *cli.Command) (context.Context, error) { + return ctx, m.validateFlags(cmd, &cfg) }, - Action: func(c *cli.Context) error { - return m.run(c, &cfg) + Action: func(_ context.Context, cmd *cli.Command) error { + return m.run(cmd, &cfg) }, - } - - c.Flags = []cli.Flag{ - &cli.StringSliceFlag{ - Name: "folder", - Usage: "Specify a folder to add to /etc/ld.so.conf before updating the ld cache", - Destination: &cfg.folders, - }, - &cli.StringFlag{ - Name: "ldconfig-path", - Usage: "Specify the path to the ldconfig program", - Destination: &cfg.ldconfigPath, - Value: "/sbin/ldconfig", - }, - &cli.StringFlag{ - Name: "container-spec", - Usage: "Specify the path to the OCI container spec. If empty or '-' the spec will be read from STDIN", - Destination: &cfg.containerSpec, + Flags: []cli.Flag{ + &cli.StringSliceFlag{ + Name: "folder", + Usage: "Specify a folder to add to /etc/ld.so.conf before updating the ld cache", + Destination: &cfg.folders, + }, + &cli.StringFlag{ + Name: "ldconfig-path", + Usage: "Specify the path to the ldconfig program", + Destination: &cfg.ldconfigPath, + Value: "/sbin/ldconfig", + }, + &cli.StringFlag{ + Name: "container-spec", + Usage: "Specify the path to the OCI container spec. If empty or '-' the spec will be read from STDIN", + Destination: &cfg.containerSpec, + }, }, } return &c } -func (m command) validateFlags(c *cli.Context, cfg *options) error { +func (m command) validateFlags(_ *cli.Command, cfg *options) error { if cfg.ldconfigPath == "" { return errors.New("ldconfig-path must be specified") } return nil } -func (m command) run(c *cli.Context, cfg *options) error { +func (m command) run(_ *cli.Command, cfg *options) error { s, err := oci.LoadContainerState(cfg.containerSpec) if err != nil { return fmt.Errorf("failed to load container state: %v", err) } - containerRoot, err := s.GetContainerRoot() - if err != nil { + containerRootDir, err := s.GetContainerRoot() + if err != nil || containerRootDir == "" || containerRootDir == "/" { return fmt.Errorf("failed to determined container root: %v", err) } - ldconfigPath := m.resolveLDConfigPath(cfg.ldconfigPath) - args := []string{filepath.Base(ldconfigPath)} - if containerRoot != "" { - args = append(args, "-r", containerRoot) - } - - if root(containerRoot).hasPath("/etc/ld.so.cache") { - args = append(args, "-C", "/etc/ld.so.cache") - } else { - m.logger.Debugf("No ld.so.cache found, skipping update") - args = append(args, "-N") - } - - folders := cfg.folders.Value() - if root(containerRoot).hasPath("/etc/ld.so.conf.d") { - err := m.createConfig(containerRoot, folders) - if err != nil { - return fmt.Errorf("failed to update ld.so.conf.d: %v", err) - } - } else { - args = append(args, folders...) + runner, err := ldconfig.NewRunner( + reexecUpdateLdCacheCommandName, + cfg.ldconfigPath, + containerRootDir, + cfg.folders..., + ) + if err != nil { + return err } - - // Explicitly specify using /etc/ld.so.conf since the host's ldconfig may - // be configured to use a different config file by default. - args = append(args, "-f", "/etc/ld.so.conf") - - //nolint:gosec // TODO: Can we harden this so that there is less risk of command injection - return syscall.Exec(ldconfigPath, args, nil) + return runner.Run() } -type root string - -func (r root) hasPath(path string) bool { - _, err := os.Stat(filepath.Join(string(r), path)) - if err != nil && os.IsNotExist(err) { - return false +// updateLdCacheHandler wraps updateLdCache with error handling. +func updateLdCacheHandler() { + if err := updateLdCache(os.Args); err != nil { + log.Printf("Error updating ldcache: %v", err) + os.Exit(1) } - return true -} - -// resolveLDConfigPath determines the LDConfig path to use for the system. -// On systems such as Ubuntu where `/sbin/ldconfig` is a wrapper around -// /sbin/ldconfig.real, the latter is returned. -func (m command) resolveLDConfigPath(path string) string { - return strings.TrimPrefix(config.NormalizeLDConfigPath("@"+path), "@") } -// createConfig creates (or updates) /etc/ld.so.conf.d/00-nvcr-.conf in the container -// to include the required paths. -// Note that the 00-nvcr prefix is chosen to ensure that these libraries have -// a higher precedence than other libraries on the system but are applied AFTER -// 00-cuda-compat.conf. -func (m command) createConfig(root string, folders []string) error { - if len(folders) == 0 { - m.logger.Debugf("No folders to add to /etc/ld.so.conf") - return nil +// updateLdCache ensures that the ldcache in the container is updated to include +// libraries that are mounted from the host. +// It is invoked from a reexec'd handler and provides namespace isolation for +// the operations performed by this hook. At the point where this is invoked, +// we are in a new mount namespace that is cloned from the parent. +// +// args[0] is the reexec initializer function name +// args[1] is the path of the ldconfig binary on the host +// args[2] is the container root directory +// The remaining args are folders where soname symlinks need to be created. +func updateLdCache(args []string) error { + if len(args) < 3 { + return fmt.Errorf("incorrect arguments: %v", args) } + hostLdconfigPath := args[1] + containerRootDirPath := args[2] - if err := os.MkdirAll(filepath.Join(root, "/etc/ld.so.conf.d"), 0755); err != nil { - return fmt.Errorf("failed to create ld.so.conf.d: %v", err) - } - - configFile, err := os.CreateTemp(filepath.Join(root, "/etc/ld.so.conf.d"), "00-nvcr-*.conf") + ldconfig, err := ldconfig.New( + hostLdconfigPath, + containerRootDirPath, + ) if err != nil { - return fmt.Errorf("failed to create config file: %v", err) - } - defer configFile.Close() - - m.logger.Debugf("Adding folders %v to %v", folders, configFile.Name()) - - configured := make(map[string]bool) - for _, folder := range folders { - if configured[folder] { - continue - } - _, err = configFile.WriteString(fmt.Sprintf("%s\n", folder)) - if err != nil { - return fmt.Errorf("failed to update ld.so.conf.d: %v", err) - } - configured[folder] = true + return fmt.Errorf("failed to construct ldconfig runner: %w", err) } - // The created file needs to be world readable for the cases where the container is run as a non-root user. - if err := os.Chmod(configFile.Name(), 0644); err != nil { - return fmt.Errorf("failed to chmod config file: %v", err) - } - - return nil + return ldconfig.UpdateLDCache(args[3:]...) } diff --git a/cmd/nvidia-container-runtime-hook/container_config.go b/cmd/nvidia-container-runtime-hook/container_config.go index fa39bf2f0..16be71793 100644 --- a/cmd/nvidia-container-runtime-hook/container_config.go +++ b/cmd/nvidia-container-runtime-hook/container_config.go @@ -6,8 +6,6 @@ import ( "log" "os" "path" - "path/filepath" - "strings" "github.com/opencontainers/runtime-spec/specs-go" "golang.org/x/mod/semver" @@ -15,31 +13,11 @@ import ( "github.com/NVIDIA/nvidia-container-toolkit/internal/config/image" ) -const ( - envCUDAVersion = "CUDA_VERSION" - envNVRequirePrefix = "NVIDIA_REQUIRE_" - envNVRequireCUDA = envNVRequirePrefix + "CUDA" - envNVDisableRequire = "NVIDIA_DISABLE_REQUIRE" - envNVVisibleDevices = "NVIDIA_VISIBLE_DEVICES" - envNVMigConfigDevices = "NVIDIA_MIG_CONFIG_DEVICES" - envNVMigMonitorDevices = "NVIDIA_MIG_MONITOR_DEVICES" - envNVImexChannels = "NVIDIA_IMEX_CHANNELS" - envNVDriverCapabilities = "NVIDIA_DRIVER_CAPABILITIES" -) - -const ( - capSysAdmin = "CAP_SYS_ADMIN" -) - -const ( - deviceListAsVolumeMountsRoot = "/var/run/nvidia-container-devices" -) - type nvidiaConfig struct { - Devices string + Devices []string MigConfigDevices string MigMonitorDevices string - ImexChannels string + ImexChannels []string DriverCapabilities string // Requirements defines the requirements DSL for the container to run. // This is empty if no specific requirements are needed, or if requirements are @@ -77,23 +55,14 @@ type LinuxCapabilities struct { Ambient []string `json:"ambient,omitempty" platform:"linux"` } -// Mount from OCI runtime spec -// https://github.com/opencontainers/runtime-spec/blob/v1.0.0/specs-go/config.go#L103 -type Mount struct { - Destination string `json:"destination"` - Type string `json:"type,omitempty" platform:"linux,solaris"` - Source string `json:"source,omitempty"` - Options []string `json:"options,omitempty"` -} - // Spec from OCI runtime spec // We use pointers to structs, similarly to the latest version of runtime-spec: // https://github.com/opencontainers/runtime-spec/blob/v1.0.0/specs-go/config.go#L5-L28 type Spec struct { - Version *string `json:"ociVersion"` - Process *Process `json:"process,omitempty"` - Root *Root `json:"root,omitempty"` - Mounts []Mount `json:"mounts,omitempty"` + Version *string `json:"ociVersion"` + Process *Process `json:"process,omitempty"` + Root *Root `json:"root,omitempty"` + Mounts []specs.Mount `json:"mounts,omitempty"` } // HookState holds state information about the hook @@ -130,9 +99,9 @@ func loadSpec(path string) (spec *Spec) { return } -func isPrivileged(s *Spec) bool { - if s.Process.Capabilities == nil { - return false +func (s *Spec) GetCapabilities() []string { + if s == nil || s.Process == nil || s.Process.Capabilities == nil { + return nil } var caps []string @@ -145,154 +114,72 @@ func isPrivileged(s *Spec) bool { if err != nil { log.Panicln("could not decode Process.Capabilities in OCI spec:", err) } - for _, c := range caps { - if c == capSysAdmin { - return true - } - } - return false + return caps } // Otherwise, parse s.Process.Capabilities as: // github.com/opencontainers/runtime-spec/blob/v1.0.0/specs-go/config.go#L30-L54 - process := specs.Process{ - Env: s.Process.Env, - } - - err := json.Unmarshal(*s.Process.Capabilities, &process.Capabilities) + capabilities := specs.LinuxCapabilities{} + err := json.Unmarshal(*s.Process.Capabilities, &capabilities) if err != nil { log.Panicln("could not decode Process.Capabilities in OCI spec:", err) } - fullSpec := specs.Spec{ - Version: *s.Version, - Process: &process, - } + return image.OCISpecCapabilities(capabilities).GetCapabilities() +} - return image.IsPrivileged(&fullSpec) +func isPrivileged(s *Spec) bool { + return image.IsPrivileged(s) } -func getDevicesFromEnvvar(image image.CUDA, swarmResourceEnvvars []string) *string { - // We check if the image has at least one of the Swarm resource envvars defined and use this - // if specified. - var hasSwarmEnvvar bool - for _, envvar := range swarmResourceEnvvars { - if image.HasEnvvar(envvar) { - hasSwarmEnvvar = true - break - } - } +func getMigConfigDevices(i image.CUDA) *string { + return getMigDevices(i, image.EnvVarNvidiaMigConfigDevices) +} - var devices []string - if hasSwarmEnvvar { - devices = image.DevicesFromEnvvars(swarmResourceEnvvars...).List() - } else { - devices = image.DevicesFromEnvvars(envNVVisibleDevices).List() - } +func getMigMonitorDevices(i image.CUDA) *string { + return getMigDevices(i, image.EnvVarNvidiaMigMonitorDevices) +} - if len(devices) == 0 { +func getMigDevices(image image.CUDA, envvar string) *string { + if !image.HasEnvvar(envvar) { return nil } - - devicesString := strings.Join(devices, ",") - - return &devicesString + devices := image.Getenv(envvar) + return &devices } -func getDevicesFromMounts(mounts []Mount) *string { - var devices []string - for _, m := range mounts { - root := filepath.Clean(deviceListAsVolumeMountsRoot) - source := filepath.Clean(m.Source) - destination := filepath.Clean(m.Destination) - - // Only consider mounts who's host volume is /dev/null - if source != "/dev/null" { - continue - } - // Only consider container mount points that begin with 'root' - if len(destination) < len(root) { - continue - } - if destination[:len(root)] != root { - continue - } - // Grab the full path beyond 'root' and add it to the list of devices - device := destination[len(root):] - if len(device) > 0 && device[0] == '/' { - device = device[1:] - } - if len(device) == 0 { - continue - } - devices = append(devices, device) - } - - if devices == nil { +func (hookConfig *hookConfig) getImexChannels(image image.CUDA, privileged bool) []string { + if hookConfig.Features.IgnoreImexChannelRequests.IsEnabled() { return nil } - ret := strings.Join(devices, ",") - return &ret -} - -func getDevices(hookConfig *HookConfig, image image.CUDA, mounts []Mount, privileged bool) *string { // If enabled, try and get the device list from volume mounts first if hookConfig.AcceptDeviceListAsVolumeMounts { - devices := getDevicesFromMounts(mounts) - if devices != nil { + devices := image.ImexChannelsFromMounts() + if len(devices) > 0 { return devices } } - - // Fallback to reading from the environment variable if privileges are correct - devices := getDevicesFromEnvvar(image, hookConfig.getSwarmResourceEnvvars()) - if devices == nil { + devices := image.ImexChannelsFromEnvVar() + if len(devices) == 0 { return nil } + if privileged || hookConfig.AcceptEnvvarUnprivileged { return devices } - configName := hookConfig.getConfigOption("AcceptEnvvarUnprivileged") - log.Printf("Ignoring devices specified in NVIDIA_VISIBLE_DEVICES (privileged=%v, %v=%v) ", privileged, configName, hookConfig.AcceptEnvvarUnprivileged) - return nil } -func getMigConfigDevices(image image.CUDA) *string { - return getMigDevices(image, envNVMigConfigDevices) -} - -func getMigMonitorDevices(image image.CUDA) *string { - return getMigDevices(image, envNVMigMonitorDevices) -} - -func getMigDevices(image image.CUDA, envvar string) *string { - if !image.HasEnvvar(envvar) { - return nil - } - devices := image.Getenv(envvar) - return &devices -} - -func getImexChannels(image image.CUDA) *string { - if !image.HasEnvvar(envNVImexChannels) { - return nil - } - chans := image.Getenv(envNVImexChannels) - return &chans -} - -func (c *HookConfig) getDriverCapabilities(cudaImage image.CUDA, legacyImage bool) image.DriverCapabilities { +func (hookConfig *hookConfig) getDriverCapabilities(cudaImage image.CUDA, legacyImage bool) image.DriverCapabilities { // We use the default driver capabilities by default. This is filtered to only include the // supported capabilities - supportedDriverCapabilities := image.NewDriverCapabilities(c.SupportedDriverCapabilities) - + supportedDriverCapabilities := image.NewDriverCapabilities(hookConfig.SupportedDriverCapabilities) capabilities := supportedDriverCapabilities.Intersection(image.DefaultDriverCapabilities) - capsEnvSpecified := cudaImage.HasEnvvar(envNVDriverCapabilities) - capsEnv := cudaImage.Getenv(envNVDriverCapabilities) + capsEnvSpecified := cudaImage.HasEnvvar(image.EnvVarNvidiaDriverCapabilities) + capsEnv := cudaImage.Getenv(image.EnvVarNvidiaDriverCapabilities) if !capsEnvSpecified && legacyImage { // Environment variable unset with legacy image: set all capabilities. @@ -311,14 +198,12 @@ func (c *HookConfig) getDriverCapabilities(cudaImage image.CUDA, legacyImage boo return capabilities } -func getNvidiaConfig(hookConfig *HookConfig, image image.CUDA, mounts []Mount, privileged bool) *nvidiaConfig { +func (hookConfig *hookConfig) getNvidiaConfig(image image.CUDA, privileged bool) *nvidiaConfig { legacyImage := image.IsLegacy() - var devices string - if d := getDevices(hookConfig, image, mounts, privileged); d != nil { - devices = *d - } else { - // 'nil' devices means this is not a GPU container. + devices := image.VisibleDevices() + if len(devices) == 0 { + // empty devices means this is not a GPU container. return nil } @@ -338,10 +223,7 @@ func getNvidiaConfig(hookConfig *HookConfig, image image.CUDA, mounts []Mount, p log.Panicln("cannot set MIG_MONITOR_DEVICES in non privileged container") } - var imexChannels string - if c := getImexChannels(image); c != nil { - imexChannels = *c - } + imexChannels := hookConfig.getImexChannels(image, privileged) driverCapabilities := hookConfig.getDriverCapabilities(image, legacyImage).String() @@ -360,7 +242,14 @@ func getNvidiaConfig(hookConfig *HookConfig, image image.CUDA, mounts []Mount, p } } -func getContainerConfig(hook HookConfig) (config containerConfig) { +func (hookConfig *hookConfig) getContainerConfig() (config *containerConfig) { + hookConfig.Lock() + defer hookConfig.Unlock() + + if hookConfig.containerConfig != nil { + return hookConfig.containerConfig + } + var h HookState d := json.NewDecoder(os.Stdin) if err := d.Decode(&h); err != nil { @@ -374,19 +263,28 @@ func getContainerConfig(hook HookConfig) (config containerConfig) { s := loadSpec(path.Join(b, "config.json")) - image, err := image.New( + privileged := isPrivileged(s) + + i, err := image.New( image.WithEnv(s.Process.Env), - image.WithDisableRequire(hook.DisableRequire), + image.WithMounts(s.Mounts), + image.WithPrivileged(privileged), + image.WithDisableRequire(hookConfig.DisableRequire), + image.WithAcceptDeviceListAsVolumeMounts(hookConfig.AcceptDeviceListAsVolumeMounts), + image.WithAcceptEnvvarUnprivileged(hookConfig.AcceptEnvvarUnprivileged), + image.WithPreferredVisibleDevicesEnvVars(hookConfig.getSwarmResourceEnvvars()...), ) if err != nil { log.Panicln(err) } - privileged := isPrivileged(s) - return containerConfig{ + cc := containerConfig{ Pid: h.Pid, Rootfs: s.Root.Path, - Image: image, - Nvidia: getNvidiaConfig(&hook, image, s.Mounts, privileged), + Image: i, + Nvidia: hookConfig.getNvidiaConfig(i, privileged), } + hookConfig.containerConfig = &cc + + return hookConfig.containerConfig } diff --git a/cmd/nvidia-container-runtime-hook/container_config_test.go b/cmd/nvidia-container-runtime-hook/container_config_test.go index 43fac8aa5..8803ff86a 100644 --- a/cmd/nvidia-container-runtime-hook/container_config_test.go +++ b/cmd/nvidia-container-runtime-hook/container_config_test.go @@ -1,12 +1,11 @@ package main import ( - "fmt" - "path/filepath" "testing" "github.com/stretchr/testify/require" + "github.com/NVIDIA/nvidia-container-toolkit/internal/config" "github.com/NVIDIA/nvidia-container-toolkit/internal/config/image" ) @@ -15,7 +14,7 @@ func TestGetNvidiaConfig(t *testing.T) { description string env map[string]string privileged bool - hookConfig *HookConfig + hookConfig *hookConfig expectedConfig *nvidiaConfig expectedPanic bool }{ @@ -34,11 +33,11 @@ func TestGetNvidiaConfig(t *testing.T) { { description: "Legacy image, no devices, no capabilities, no requirements", env: map[string]string{ - envCUDAVersion: "9.0", + image.EnvVarCudaVersion: "9.0", }, privileged: false, expectedConfig: &nvidiaConfig{ - Devices: "all", + Devices: []string{"all"}, DriverCapabilities: image.SupportedDriverCapabilities.String(), Requirements: []string{"cuda>=9.0"}, }, @@ -46,12 +45,12 @@ func TestGetNvidiaConfig(t *testing.T) { { description: "Legacy image, devices 'all', no capabilities, no requirements", env: map[string]string{ - envCUDAVersion: "9.0", - envNVVisibleDevices: "all", + image.EnvVarCudaVersion: "9.0", + image.EnvVarNvidiaVisibleDevices: "all", }, privileged: false, expectedConfig: &nvidiaConfig{ - Devices: "all", + Devices: []string{"all"}, DriverCapabilities: image.SupportedDriverCapabilities.String(), Requirements: []string{"cuda>=9.0"}, }, @@ -59,8 +58,8 @@ func TestGetNvidiaConfig(t *testing.T) { { description: "Legacy image, devices 'empty', no capabilities, no requirements", env: map[string]string{ - envCUDAVersion: "9.0", - envNVVisibleDevices: "", + image.EnvVarCudaVersion: "9.0", + image.EnvVarNvidiaVisibleDevices: "", }, privileged: false, expectedConfig: nil, @@ -68,8 +67,8 @@ func TestGetNvidiaConfig(t *testing.T) { { description: "Legacy image, devices 'void', no capabilities, no requirements", env: map[string]string{ - envCUDAVersion: "9.0", - envNVVisibleDevices: "void", + image.EnvVarCudaVersion: "9.0", + image.EnvVarNvidiaVisibleDevices: "void", }, privileged: false, expectedConfig: nil, @@ -77,12 +76,12 @@ func TestGetNvidiaConfig(t *testing.T) { { description: "Legacy image, devices 'none', no capabilities, no requirements", env: map[string]string{ - envCUDAVersion: "9.0", - envNVVisibleDevices: "none", + image.EnvVarCudaVersion: "9.0", + image.EnvVarNvidiaVisibleDevices: "none", }, privileged: false, expectedConfig: &nvidiaConfig{ - Devices: "", + Devices: []string{""}, DriverCapabilities: image.SupportedDriverCapabilities.String(), Requirements: []string{"cuda>=9.0"}, }, @@ -90,12 +89,12 @@ func TestGetNvidiaConfig(t *testing.T) { { description: "Legacy image, devices set, no capabilities, no requirements", env: map[string]string{ - envCUDAVersion: "9.0", - envNVVisibleDevices: "gpu0,gpu1", + image.EnvVarCudaVersion: "9.0", + image.EnvVarNvidiaVisibleDevices: "gpu0,gpu1", }, privileged: false, expectedConfig: &nvidiaConfig{ - Devices: "gpu0,gpu1", + Devices: []string{"gpu0", "gpu1"}, DriverCapabilities: image.SupportedDriverCapabilities.String(), Requirements: []string{"cuda>=9.0"}, }, @@ -103,13 +102,13 @@ func TestGetNvidiaConfig(t *testing.T) { { description: "Legacy image, devices set, capabilities 'empty', no requirements", env: map[string]string{ - envCUDAVersion: "9.0", - envNVVisibleDevices: "gpu0,gpu1", - envNVDriverCapabilities: "", + image.EnvVarCudaVersion: "9.0", + image.EnvVarNvidiaVisibleDevices: "gpu0,gpu1", + image.EnvVarNvidiaDriverCapabilities: "", }, privileged: false, expectedConfig: &nvidiaConfig{ - Devices: "gpu0,gpu1", + Devices: []string{"gpu0", "gpu1"}, DriverCapabilities: image.DefaultDriverCapabilities.String(), Requirements: []string{"cuda>=9.0"}, }, @@ -117,13 +116,13 @@ func TestGetNvidiaConfig(t *testing.T) { { description: "Legacy image, devices set, capabilities 'all', no requirements", env: map[string]string{ - envCUDAVersion: "9.0", - envNVVisibleDevices: "gpu0,gpu1", - envNVDriverCapabilities: "all", + image.EnvVarCudaVersion: "9.0", + image.EnvVarNvidiaVisibleDevices: "gpu0,gpu1", + image.EnvVarNvidiaDriverCapabilities: "all", }, privileged: false, expectedConfig: &nvidiaConfig{ - Devices: "gpu0,gpu1", + Devices: []string{"gpu0", "gpu1"}, DriverCapabilities: image.SupportedDriverCapabilities.String(), Requirements: []string{"cuda>=9.0"}, }, @@ -131,13 +130,13 @@ func TestGetNvidiaConfig(t *testing.T) { { description: "Legacy image, devices set, capabilities set, no requirements", env: map[string]string{ - envCUDAVersion: "9.0", - envNVVisibleDevices: "gpu0,gpu1", - envNVDriverCapabilities: "video,display", + image.EnvVarCudaVersion: "9.0", + image.EnvVarNvidiaVisibleDevices: "gpu0,gpu1", + image.EnvVarNvidiaDriverCapabilities: "video,display", }, privileged: false, expectedConfig: &nvidiaConfig{ - Devices: "gpu0,gpu1", + Devices: []string{"gpu0", "gpu1"}, DriverCapabilities: "display,video", Requirements: []string{"cuda>=9.0"}, }, @@ -145,15 +144,15 @@ func TestGetNvidiaConfig(t *testing.T) { { description: "Legacy image, devices set, capabilities set, requirements set", env: map[string]string{ - envCUDAVersion: "9.0", - envNVVisibleDevices: "gpu0,gpu1", - envNVDriverCapabilities: "video,display", - envNVRequirePrefix + "REQ0": "req0=true", - envNVRequirePrefix + "REQ1": "req1=false", + image.EnvVarCudaVersion: "9.0", + image.EnvVarNvidiaVisibleDevices: "gpu0,gpu1", + image.EnvVarNvidiaDriverCapabilities: "video,display", + image.NvidiaRequirePrefix + "REQ0": "req0=true", + image.NvidiaRequirePrefix + "REQ1": "req1=false", }, privileged: false, expectedConfig: &nvidiaConfig{ - Devices: "gpu0,gpu1", + Devices: []string{"gpu0", "gpu1"}, DriverCapabilities: "display,video", Requirements: []string{"cuda>=9.0", "req0=true", "req1=false"}, }, @@ -161,33 +160,33 @@ func TestGetNvidiaConfig(t *testing.T) { { description: "Legacy image, devices set, capabilities set, requirements set, disable requirements", env: map[string]string{ - envCUDAVersion: "9.0", - envNVVisibleDevices: "gpu0,gpu1", - envNVDriverCapabilities: "video,display", - envNVRequirePrefix + "REQ0": "req0=true", - envNVRequirePrefix + "REQ1": "req1=false", - envNVDisableRequire: "true", + image.EnvVarCudaVersion: "9.0", + image.EnvVarNvidiaVisibleDevices: "gpu0,gpu1", + image.EnvVarNvidiaDriverCapabilities: "video,display", + image.NvidiaRequirePrefix + "REQ0": "req0=true", + image.NvidiaRequirePrefix + "REQ1": "req1=false", + image.EnvVarNvidiaDisableRequire: "true", }, privileged: false, expectedConfig: &nvidiaConfig{ - Devices: "gpu0,gpu1", + Devices: []string{"gpu0", "gpu1"}, DriverCapabilities: "display,video", Requirements: []string{}, }, }, { - description: "Modern image, no devices, no capabilities, no requirements, no envCUDAVersion", + description: "Modern image, no devices, no capabilities, no requirements, no image.EnvVarCudaVersion", env: map[string]string{ - envNVRequireCUDA: "cuda>=9.0", + image.EnvVarNvidiaRequireCuda: "cuda>=9.0", }, privileged: false, expectedConfig: nil, }, { - description: "Modern image, no devices, no capabilities, no requirement, envCUDAVersion set", + description: "Modern image, no devices, no capabilities, no requirement, image.EnvVarCudaVersion set", env: map[string]string{ - envCUDAVersion: "9.0", - envNVRequireCUDA: "cuda>=9.0", + image.EnvVarCudaVersion: "9.0", + image.EnvVarNvidiaRequireCuda: "cuda>=9.0", }, privileged: false, expectedConfig: nil, @@ -195,12 +194,12 @@ func TestGetNvidiaConfig(t *testing.T) { { description: "Modern image, devices 'all', no capabilities, no requirements", env: map[string]string{ - envNVRequireCUDA: "cuda>=9.0", - envNVVisibleDevices: "all", + image.EnvVarNvidiaRequireCuda: "cuda>=9.0", + image.EnvVarNvidiaVisibleDevices: "all", }, privileged: false, expectedConfig: &nvidiaConfig{ - Devices: "all", + Devices: []string{"all"}, DriverCapabilities: image.DefaultDriverCapabilities.String(), Requirements: []string{"cuda>=9.0"}, }, @@ -208,8 +207,8 @@ func TestGetNvidiaConfig(t *testing.T) { { description: "Modern image, devices 'empty', no capabilities, no requirements", env: map[string]string{ - envNVRequireCUDA: "cuda>=9.0", - envNVVisibleDevices: "", + image.EnvVarNvidiaRequireCuda: "cuda>=9.0", + image.EnvVarNvidiaVisibleDevices: "", }, privileged: false, expectedConfig: nil, @@ -217,8 +216,8 @@ func TestGetNvidiaConfig(t *testing.T) { { description: "Modern image, devices 'void', no capabilities, no requirements", env: map[string]string{ - envNVRequireCUDA: "cuda>=9.0", - envNVVisibleDevices: "void", + image.EnvVarNvidiaRequireCuda: "cuda>=9.0", + image.EnvVarNvidiaVisibleDevices: "void", }, privileged: false, expectedConfig: nil, @@ -226,12 +225,12 @@ func TestGetNvidiaConfig(t *testing.T) { { description: "Modern image, devices 'none', no capabilities, no requirements", env: map[string]string{ - envNVRequireCUDA: "cuda>=9.0", - envNVVisibleDevices: "none", + image.EnvVarNvidiaRequireCuda: "cuda>=9.0", + image.EnvVarNvidiaVisibleDevices: "none", }, privileged: false, expectedConfig: &nvidiaConfig{ - Devices: "", + Devices: []string{""}, DriverCapabilities: image.DefaultDriverCapabilities.String(), Requirements: []string{"cuda>=9.0"}, }, @@ -239,12 +238,12 @@ func TestGetNvidiaConfig(t *testing.T) { { description: "Modern image, devices set, no capabilities, no requirements", env: map[string]string{ - envNVRequireCUDA: "cuda>=9.0", - envNVVisibleDevices: "gpu0,gpu1", + image.EnvVarNvidiaRequireCuda: "cuda>=9.0", + image.EnvVarNvidiaVisibleDevices: "gpu0,gpu1", }, privileged: false, expectedConfig: &nvidiaConfig{ - Devices: "gpu0,gpu1", + Devices: []string{"gpu0", "gpu1"}, DriverCapabilities: image.DefaultDriverCapabilities.String(), Requirements: []string{"cuda>=9.0"}, }, @@ -252,13 +251,13 @@ func TestGetNvidiaConfig(t *testing.T) { { description: "Modern image, devices set, capabilities 'empty', no requirements", env: map[string]string{ - envNVRequireCUDA: "cuda>=9.0", - envNVVisibleDevices: "gpu0,gpu1", - envNVDriverCapabilities: "", + image.EnvVarNvidiaRequireCuda: "cuda>=9.0", + image.EnvVarNvidiaVisibleDevices: "gpu0,gpu1", + image.EnvVarNvidiaDriverCapabilities: "", }, privileged: false, expectedConfig: &nvidiaConfig{ - Devices: "gpu0,gpu1", + Devices: []string{"gpu0", "gpu1"}, DriverCapabilities: image.DefaultDriverCapabilities.String(), Requirements: []string{"cuda>=9.0"}, }, @@ -266,13 +265,13 @@ func TestGetNvidiaConfig(t *testing.T) { { description: "Modern image, devices set, capabilities 'all', no requirements", env: map[string]string{ - envNVRequireCUDA: "cuda>=9.0", - envNVVisibleDevices: "gpu0,gpu1", - envNVDriverCapabilities: "all", + image.EnvVarNvidiaRequireCuda: "cuda>=9.0", + image.EnvVarNvidiaVisibleDevices: "gpu0,gpu1", + image.EnvVarNvidiaDriverCapabilities: "all", }, privileged: false, expectedConfig: &nvidiaConfig{ - Devices: "gpu0,gpu1", + Devices: []string{"gpu0", "gpu1"}, DriverCapabilities: image.SupportedDriverCapabilities.String(), Requirements: []string{"cuda>=9.0"}, }, @@ -280,13 +279,13 @@ func TestGetNvidiaConfig(t *testing.T) { { description: "Modern image, devices set, capabilities set, no requirements", env: map[string]string{ - envNVRequireCUDA: "cuda>=9.0", - envNVVisibleDevices: "gpu0,gpu1", - envNVDriverCapabilities: "video,display", + image.EnvVarNvidiaRequireCuda: "cuda>=9.0", + image.EnvVarNvidiaVisibleDevices: "gpu0,gpu1", + image.EnvVarNvidiaDriverCapabilities: "video,display", }, privileged: false, expectedConfig: &nvidiaConfig{ - Devices: "gpu0,gpu1", + Devices: []string{"gpu0", "gpu1"}, DriverCapabilities: "display,video", Requirements: []string{"cuda>=9.0"}, }, @@ -294,15 +293,15 @@ func TestGetNvidiaConfig(t *testing.T) { { description: "Modern image, devices set, capabilities set, requirements set", env: map[string]string{ - envNVRequireCUDA: "cuda>=9.0", - envNVVisibleDevices: "gpu0,gpu1", - envNVDriverCapabilities: "video,display", - envNVRequirePrefix + "REQ0": "req0=true", - envNVRequirePrefix + "REQ1": "req1=false", + image.EnvVarNvidiaRequireCuda: "cuda>=9.0", + image.EnvVarNvidiaVisibleDevices: "gpu0,gpu1", + image.EnvVarNvidiaDriverCapabilities: "video,display", + image.NvidiaRequirePrefix + "REQ0": "req0=true", + image.NvidiaRequirePrefix + "REQ1": "req1=false", }, privileged: false, expectedConfig: &nvidiaConfig{ - Devices: "gpu0,gpu1", + Devices: []string{"gpu0", "gpu1"}, DriverCapabilities: "display,video", Requirements: []string{"cuda>=9.0", "req0=true", "req1=false"}, }, @@ -310,16 +309,16 @@ func TestGetNvidiaConfig(t *testing.T) { { description: "Modern image, devices set, capabilities set, requirements set, disable requirements", env: map[string]string{ - envNVRequireCUDA: "cuda>=9.0", - envNVVisibleDevices: "gpu0,gpu1", - envNVDriverCapabilities: "video,display", - envNVRequirePrefix + "REQ0": "req0=true", - envNVRequirePrefix + "REQ1": "req1=false", - envNVDisableRequire: "true", + image.EnvVarNvidiaRequireCuda: "cuda>=9.0", + image.EnvVarNvidiaVisibleDevices: "gpu0,gpu1", + image.EnvVarNvidiaDriverCapabilities: "video,display", + image.NvidiaRequirePrefix + "REQ0": "req0=true", + image.NvidiaRequirePrefix + "REQ1": "req1=false", + image.EnvVarNvidiaDisableRequire: "true", }, privileged: false, expectedConfig: &nvidiaConfig{ - Devices: "gpu0,gpu1", + Devices: []string{"gpu0", "gpu1"}, DriverCapabilities: "display,video", Requirements: []string{}, }, @@ -327,12 +326,12 @@ func TestGetNvidiaConfig(t *testing.T) { { description: "No cuda envs, devices 'all'", env: map[string]string{ - envNVVisibleDevices: "all", + image.EnvVarNvidiaVisibleDevices: "all", }, privileged: false, expectedConfig: &nvidiaConfig{ - Devices: "all", + Devices: []string{"all"}, DriverCapabilities: image.DefaultDriverCapabilities.String(), Requirements: []string{}, }, @@ -340,13 +339,13 @@ func TestGetNvidiaConfig(t *testing.T) { { description: "Modern image, devices 'all', migConfig set, privileged", env: map[string]string{ - envNVRequireCUDA: "cuda>=9.0", - envNVVisibleDevices: "all", - envNVMigConfigDevices: "mig0,mig1", + image.EnvVarNvidiaRequireCuda: "cuda>=9.0", + image.EnvVarNvidiaVisibleDevices: "all", + image.EnvVarNvidiaMigConfigDevices: "mig0,mig1", }, privileged: true, expectedConfig: &nvidiaConfig{ - Devices: "all", + Devices: []string{"all"}, MigConfigDevices: "mig0,mig1", DriverCapabilities: image.DefaultDriverCapabilities.String(), Requirements: []string{"cuda>=9.0"}, @@ -355,9 +354,9 @@ func TestGetNvidiaConfig(t *testing.T) { { description: "Modern image, devices 'all', migConfig set, unprivileged", env: map[string]string{ - envNVRequireCUDA: "cuda>=9.0", - envNVVisibleDevices: "all", - envNVMigConfigDevices: "mig0,mig1", + image.EnvVarNvidiaRequireCuda: "cuda>=9.0", + image.EnvVarNvidiaVisibleDevices: "all", + image.EnvVarNvidiaMigConfigDevices: "mig0,mig1", }, privileged: false, expectedPanic: true, @@ -365,13 +364,13 @@ func TestGetNvidiaConfig(t *testing.T) { { description: "Modern image, devices 'all', migMonitor set, privileged", env: map[string]string{ - envNVRequireCUDA: "cuda>=9.0", - envNVVisibleDevices: "all", - envNVMigMonitorDevices: "mig0,mig1", + image.EnvVarNvidiaRequireCuda: "cuda>=9.0", + image.EnvVarNvidiaVisibleDevices: "all", + image.EnvVarNvidiaMigMonitorDevices: "mig0,mig1", }, privileged: true, expectedConfig: &nvidiaConfig{ - Devices: "all", + Devices: []string{"all"}, MigMonitorDevices: "mig0,mig1", DriverCapabilities: image.DefaultDriverCapabilities.String(), Requirements: []string{"cuda>=9.0"}, @@ -380,9 +379,9 @@ func TestGetNvidiaConfig(t *testing.T) { { description: "Modern image, devices 'all', migMonitor set, unprivileged", env: map[string]string{ - envNVRequireCUDA: "cuda>=9.0", - envNVVisibleDevices: "all", - envNVMigMonitorDevices: "mig0,mig1", + image.EnvVarNvidiaRequireCuda: "cuda>=9.0", + image.EnvVarNvidiaVisibleDevices: "all", + image.EnvVarNvidiaMigMonitorDevices: "mig0,mig1", }, privileged: false, expectedPanic: true, @@ -390,76 +389,86 @@ func TestGetNvidiaConfig(t *testing.T) { { description: "Hook config set as driver-capabilities-all", env: map[string]string{ - envNVVisibleDevices: "all", - envNVDriverCapabilities: "all", + image.EnvVarNvidiaVisibleDevices: "all", + image.EnvVarNvidiaDriverCapabilities: "all", }, privileged: true, - hookConfig: &HookConfig{ - SupportedDriverCapabilities: "video,display", + hookConfig: &hookConfig{ + Config: &config.Config{ + SupportedDriverCapabilities: "video,display", + }, }, expectedConfig: &nvidiaConfig{ - Devices: "all", + Devices: []string{"all"}, DriverCapabilities: "display,video", }, }, { description: "Hook config set, envvar sets driver-capabilities", env: map[string]string{ - envNVVisibleDevices: "all", - envNVDriverCapabilities: "video,display", + image.EnvVarNvidiaVisibleDevices: "all", + image.EnvVarNvidiaDriverCapabilities: "video,display", }, privileged: true, - hookConfig: &HookConfig{ - SupportedDriverCapabilities: "video,display,compute,utility", + hookConfig: &hookConfig{ + Config: &config.Config{ + SupportedDriverCapabilities: "video,display,compute,utility", + }, }, expectedConfig: &nvidiaConfig{ - Devices: "all", + Devices: []string{"all"}, DriverCapabilities: "display,video", }, }, { description: "Hook config set, envvar unset sets default driver-capabilities", env: map[string]string{ - envNVVisibleDevices: "all", + image.EnvVarNvidiaVisibleDevices: "all", }, privileged: true, - hookConfig: &HookConfig{ - SupportedDriverCapabilities: "video,display,utility,compute", + hookConfig: &hookConfig{ + Config: &config.Config{ + SupportedDriverCapabilities: "video,display,utility,compute", + }, }, expectedConfig: &nvidiaConfig{ - Devices: "all", + Devices: []string{"all"}, DriverCapabilities: image.DefaultDriverCapabilities.String(), }, }, { description: "Hook config set, swarmResource overrides device selection", env: map[string]string{ - envNVVisibleDevices: "all", - "DOCKER_SWARM_RESOURCE": "GPU1,GPU2", + image.EnvVarNvidiaVisibleDevices: "all", + "DOCKER_SWARM_RESOURCE": "GPU1,GPU2", }, privileged: true, - hookConfig: &HookConfig{ - SwarmResource: "DOCKER_SWARM_RESOURCE", - SupportedDriverCapabilities: "video,display,utility,compute", + hookConfig: &hookConfig{ + Config: &config.Config{ + SwarmResource: "DOCKER_SWARM_RESOURCE", + SupportedDriverCapabilities: "video,display,utility,compute", + }, }, expectedConfig: &nvidiaConfig{ - Devices: "GPU1,GPU2", + Devices: []string{"GPU1", "GPU2"}, DriverCapabilities: image.DefaultDriverCapabilities.String(), }, }, { description: "Hook config set, comma separated swarmResource is split and overrides device selection", env: map[string]string{ - envNVVisibleDevices: "all", - "DOCKER_SWARM_RESOURCE": "GPU1,GPU2", + image.EnvVarNvidiaVisibleDevices: "all", + "DOCKER_SWARM_RESOURCE": "GPU1,GPU2", }, privileged: true, - hookConfig: &HookConfig{ - SwarmResource: "NOT_DOCKER_SWARM_RESOURCE,DOCKER_SWARM_RESOURCE", - SupportedDriverCapabilities: "video,display,utility,compute", + hookConfig: &hookConfig{ + Config: &config.Config{ + SwarmResource: "NOT_DOCKER_SWARM_RESOURCE,DOCKER_SWARM_RESOURCE", + SupportedDriverCapabilities: "video,display,utility,compute", + }, }, expectedConfig: &nvidiaConfig{ - Devices: "GPU1,GPU2", + Devices: []string{"GPU1", "GPU2"}, DriverCapabilities: image.DefaultDriverCapabilities.String(), }, }, @@ -468,16 +477,19 @@ func TestGetNvidiaConfig(t *testing.T) { t.Run(tc.description, func(t *testing.T) { image, _ := image.New( image.WithEnvMap(tc.env), + image.WithPrivileged(tc.privileged), + image.WithPreferredVisibleDevicesEnvVars(tc.hookConfig.getSwarmResourceEnvvars()...), ) + // Wrap the call to getNvidiaConfig() in a closure. - var config *nvidiaConfig + var cfg *nvidiaConfig getConfig := func() { - hookConfig := tc.hookConfig - if hookConfig == nil { - defaultConfig, _ := getDefaultHookConfig() - hookConfig = &defaultConfig + hookCfg := tc.hookConfig + if hookCfg == nil { + defaultConfig, _ := config.GetDefault() + hookCfg = &hookConfig{Config: defaultConfig} } - config = getNvidiaConfig(hookConfig, image, nil, tc.privileged) + cfg = hookCfg.getNvidiaConfig(image, tc.privileged) } // For any tests that are expected to panic, make sure they do. @@ -491,439 +503,18 @@ func TestGetNvidiaConfig(t *testing.T) { // And start comparing the test results to the expected results. if tc.expectedConfig == nil { - require.Nil(t, config, tc.description) + require.Nil(t, cfg, tc.description) return } - require.NotNil(t, config, tc.description) - - require.Equal(t, tc.expectedConfig.Devices, config.Devices) - require.Equal(t, tc.expectedConfig.MigConfigDevices, config.MigConfigDevices) - require.Equal(t, tc.expectedConfig.MigMonitorDevices, config.MigMonitorDevices) - require.Equal(t, tc.expectedConfig.DriverCapabilities, config.DriverCapabilities) - - require.ElementsMatch(t, tc.expectedConfig.Requirements, config.Requirements) - }) - } -} - -func TestGetDevicesFromMounts(t *testing.T) { - var tests = []struct { - description string - mounts []Mount - expectedDevices *string - }{ - { - description: "No mounts", - mounts: nil, - expectedDevices: nil, - }, - { - description: "Host path is not /dev/null", - mounts: []Mount{ - { - Source: "/not/dev/null", - Destination: filepath.Join(deviceListAsVolumeMountsRoot, "GPU0"), - }, - }, - expectedDevices: nil, - }, - { - description: "Container path is not prefixed by 'root'", - mounts: []Mount{ - { - Source: "/dev/null", - Destination: filepath.Join("/other/prefix", "GPU0"), - }, - }, - expectedDevices: nil, - }, - { - description: "Container path is only 'root'", - mounts: []Mount{ - { - Source: "/dev/null", - Destination: deviceListAsVolumeMountsRoot, - }, - }, - expectedDevices: nil, - }, - { - description: "Discover 2 devices", - mounts: []Mount{ - { - Source: "/dev/null", - Destination: filepath.Join(deviceListAsVolumeMountsRoot, "GPU0"), - }, - { - Source: "/dev/null", - Destination: filepath.Join(deviceListAsVolumeMountsRoot, "GPU1"), - }, - }, - expectedDevices: &[]string{"GPU0,GPU1"}[0], - }, - { - description: "Discover 2 devices with slashes in the name", - mounts: []Mount{ - { - Source: "/dev/null", - Destination: filepath.Join(deviceListAsVolumeMountsRoot, "GPU0-MIG0/0/1"), - }, - { - Source: "/dev/null", - Destination: filepath.Join(deviceListAsVolumeMountsRoot, "GPU1-MIG0/0/1"), - }, - }, - expectedDevices: &[]string{"GPU0-MIG0/0/1,GPU1-MIG0/0/1"}[0], - }, - } - for _, tc := range tests { - t.Run(tc.description, func(t *testing.T) { - devices := getDevicesFromMounts(tc.mounts) - require.Equal(t, tc.expectedDevices, devices) - }) - } -} - -func TestDeviceListSourcePriority(t *testing.T) { - var tests = []struct { - description string - mountDevices []Mount - envvarDevices string - privileged bool - acceptUnprivileged bool - acceptMounts bool - expectedDevices *string - }{ - { - description: "Mount devices, unprivileged, no accept unprivileged", - mountDevices: []Mount{ - { - Source: "/dev/null", - Destination: filepath.Join(deviceListAsVolumeMountsRoot, "GPU0"), - }, - { - Source: "/dev/null", - Destination: filepath.Join(deviceListAsVolumeMountsRoot, "GPU1"), - }, - }, - envvarDevices: "GPU2,GPU3", - privileged: false, - acceptUnprivileged: false, - acceptMounts: true, - expectedDevices: &[]string{"GPU0,GPU1"}[0], - }, - { - description: "No mount devices, unprivileged, no accept unprivileged", - mountDevices: nil, - envvarDevices: "GPU0,GPU1", - privileged: false, - acceptUnprivileged: false, - acceptMounts: true, - expectedDevices: nil, - }, - { - description: "No mount devices, privileged, no accept unprivileged", - mountDevices: nil, - envvarDevices: "GPU0,GPU1", - privileged: true, - acceptUnprivileged: false, - acceptMounts: true, - expectedDevices: &[]string{"GPU0,GPU1"}[0], - }, - { - description: "No mount devices, unprivileged, accept unprivileged", - mountDevices: nil, - envvarDevices: "GPU0,GPU1", - privileged: false, - acceptUnprivileged: true, - acceptMounts: true, - expectedDevices: &[]string{"GPU0,GPU1"}[0], - }, - { - description: "Mount devices, unprivileged, accept unprivileged, no accept mounts", - mountDevices: []Mount{ - { - Source: "/dev/null", - Destination: filepath.Join(deviceListAsVolumeMountsRoot, "GPU0"), - }, - { - Source: "/dev/null", - Destination: filepath.Join(deviceListAsVolumeMountsRoot, "GPU1"), - }, - }, - envvarDevices: "GPU2,GPU3", - privileged: false, - acceptUnprivileged: true, - acceptMounts: false, - expectedDevices: &[]string{"GPU2,GPU3"}[0], - }, - { - description: "Mount devices, unprivileged, no accept unprivileged, no accept mounts", - mountDevices: []Mount{ - { - Source: "/dev/null", - Destination: filepath.Join(deviceListAsVolumeMountsRoot, "GPU0"), - }, - { - Source: "/dev/null", - Destination: filepath.Join(deviceListAsVolumeMountsRoot, "GPU1"), - }, - }, - envvarDevices: "GPU2,GPU3", - privileged: false, - acceptUnprivileged: false, - acceptMounts: false, - expectedDevices: nil, - }, - } - for _, tc := range tests { - t.Run(tc.description, func(t *testing.T) { - // Wrap the call to getDevices() in a closure. - var devices *string - getDevices := func() { - image, _ := image.New( - image.WithEnvMap( - map[string]string{ - envNVVisibleDevices: tc.envvarDevices, - }, - ), - ) - hookConfig, _ := getDefaultHookConfig() - hookConfig.AcceptEnvvarUnprivileged = tc.acceptUnprivileged - hookConfig.AcceptDeviceListAsVolumeMounts = tc.acceptMounts - devices = getDevices(&hookConfig, image, tc.mountDevices, tc.privileged) - } - - // For all other tests, just grab the devices and check the results - getDevices() - - require.Equal(t, tc.expectedDevices, devices) - }) - } -} - -func TestGetDevicesFromEnvvar(t *testing.T) { - all := "all" - empty := "" - envDockerResourceGPUs := "DOCKER_RESOURCE_GPUS" - gpuID := "GPU-12345" - anotherGPUID := "GPU-67890" - thirdGPUID := "MIG-12345" - - var tests = []struct { - description string - swarmResourceEnvvars []string - env map[string]string - expectedDevices *string - }{ - { - description: "empty env returns nil for non-legacy image", - }, - { - description: "blank NVIDIA_VISIBLE_DEVICES returns nil for non-legacy image", - env: map[string]string{ - envNVVisibleDevices: "", - }, - }, - { - description: "'void' NVIDIA_VISIBLE_DEVICES returns nil for non-legacy image", - env: map[string]string{ - envNVVisibleDevices: "void", - }, - }, - { - description: "'none' NVIDIA_VISIBLE_DEVICES returns empty for non-legacy image", - env: map[string]string{ - envNVVisibleDevices: "none", - }, - expectedDevices: &empty, - }, - { - description: "NVIDIA_VISIBLE_DEVICES set returns value for non-legacy image", - env: map[string]string{ - envNVVisibleDevices: gpuID, - }, - expectedDevices: &gpuID, - }, - { - description: "NVIDIA_VISIBLE_DEVICES set returns value for legacy image", - env: map[string]string{ - envNVVisibleDevices: gpuID, - envCUDAVersion: "legacy", - }, - expectedDevices: &gpuID, - }, - { - description: "empty env returns all for legacy image", - env: map[string]string{ - envCUDAVersion: "legacy", - }, - expectedDevices: &all, - }, - // Add the `DOCKER_RESOURCE_GPUS` envvar and ensure that this is ignored when - // not enabled - { - description: "missing NVIDIA_VISIBLE_DEVICES returns nil for non-legacy image", - env: map[string]string{ - envDockerResourceGPUs: anotherGPUID, - }, - }, - { - description: "blank NVIDIA_VISIBLE_DEVICES returns nil for non-legacy image", - env: map[string]string{ - envNVVisibleDevices: "", - envDockerResourceGPUs: anotherGPUID, - }, - }, - { - description: "'void' NVIDIA_VISIBLE_DEVICES returns nil for non-legacy image", - env: map[string]string{ - envNVVisibleDevices: "void", - envDockerResourceGPUs: anotherGPUID, - }, - }, - { - description: "'none' NVIDIA_VISIBLE_DEVICES returns empty for non-legacy image", - env: map[string]string{ - envNVVisibleDevices: "none", - envDockerResourceGPUs: anotherGPUID, - }, - expectedDevices: &empty, - }, - { - description: "NVIDIA_VISIBLE_DEVICES set returns value for non-legacy image", - env: map[string]string{ - envNVVisibleDevices: gpuID, - envDockerResourceGPUs: anotherGPUID, - }, - expectedDevices: &gpuID, - }, - { - description: "NVIDIA_VISIBLE_DEVICES set returns value for legacy image", - env: map[string]string{ - envNVVisibleDevices: gpuID, - envDockerResourceGPUs: anotherGPUID, - envCUDAVersion: "legacy", - }, - expectedDevices: &gpuID, - }, - { - description: "empty env returns all for legacy image", - env: map[string]string{ - envDockerResourceGPUs: anotherGPUID, - envCUDAVersion: "legacy", - }, - expectedDevices: &all, - }, - // Add the `DOCKER_RESOURCE_GPUS` envvar and ensure that this is selected when - // enabled - { - description: "empty env returns nil for non-legacy image", - swarmResourceEnvvars: []string{envDockerResourceGPUs}, - }, - { - description: "blank DOCKER_RESOURCE_GPUS returns nil for non-legacy image", - swarmResourceEnvvars: []string{envDockerResourceGPUs}, - env: map[string]string{ - envDockerResourceGPUs: "", - }, - }, - { - description: "'void' DOCKER_RESOURCE_GPUS returns nil for non-legacy image", - swarmResourceEnvvars: []string{envDockerResourceGPUs}, - env: map[string]string{ - envDockerResourceGPUs: "void", - }, - }, - { - description: "'none' DOCKER_RESOURCE_GPUS returns empty for non-legacy image", - swarmResourceEnvvars: []string{envDockerResourceGPUs}, - env: map[string]string{ - envDockerResourceGPUs: "none", - }, - expectedDevices: &empty, - }, - { - description: "DOCKER_RESOURCE_GPUS set returns value for non-legacy image", - swarmResourceEnvvars: []string{envDockerResourceGPUs}, - env: map[string]string{ - envDockerResourceGPUs: gpuID, - }, - expectedDevices: &gpuID, - }, - { - description: "DOCKER_RESOURCE_GPUS set returns value for legacy image", - swarmResourceEnvvars: []string{envDockerResourceGPUs}, - env: map[string]string{ - envDockerResourceGPUs: gpuID, - envCUDAVersion: "legacy", - }, - expectedDevices: &gpuID, - }, - { - description: "DOCKER_RESOURCE_GPUS is selected if present", - swarmResourceEnvvars: []string{envDockerResourceGPUs}, - env: map[string]string{ - envDockerResourceGPUs: anotherGPUID, - }, - expectedDevices: &anotherGPUID, - }, - { - description: "DOCKER_RESOURCE_GPUS overrides NVIDIA_VISIBLE_DEVICES if present", - swarmResourceEnvvars: []string{envDockerResourceGPUs}, - env: map[string]string{ - envNVVisibleDevices: gpuID, - envDockerResourceGPUs: anotherGPUID, - }, - expectedDevices: &anotherGPUID, - }, - { - description: "DOCKER_RESOURCE_GPUS_ADDITIONAL overrides NVIDIA_VISIBLE_DEVICES if present", - swarmResourceEnvvars: []string{"DOCKER_RESOURCE_GPUS_ADDITIONAL"}, - env: map[string]string{ - envNVVisibleDevices: gpuID, - "DOCKER_RESOURCE_GPUS_ADDITIONAL": anotherGPUID, - }, - expectedDevices: &anotherGPUID, - }, - { - description: "All available swarm resource envvars are selected and override NVIDIA_VISIBLE_DEVICES if present", - swarmResourceEnvvars: []string{"DOCKER_RESOURCE_GPUS", "DOCKER_RESOURCE_GPUS_ADDITIONAL"}, - env: map[string]string{ - envNVVisibleDevices: gpuID, - "DOCKER_RESOURCE_GPUS": thirdGPUID, - "DOCKER_RESOURCE_GPUS_ADDITIONAL": anotherGPUID, - }, - expectedDevices: func() *string { - result := fmt.Sprintf("%s,%s", thirdGPUID, anotherGPUID) - return &result - }(), - }, - { - description: "DOCKER_RESOURCE_GPUS_ADDITIONAL or DOCKER_RESOURCE_GPUS override NVIDIA_VISIBLE_DEVICES if present", - swarmResourceEnvvars: []string{"DOCKER_RESOURCE_GPUS", "DOCKER_RESOURCE_GPUS_ADDITIONAL"}, - env: map[string]string{ - envNVVisibleDevices: gpuID, - "DOCKER_RESOURCE_GPUS_ADDITIONAL": anotherGPUID, - }, - expectedDevices: &anotherGPUID, - }, - } + require.NotNil(t, cfg, tc.description) - for i, tc := range tests { - t.Run(tc.description, func(t *testing.T) { - image, _ := image.New( - image.WithEnvMap(tc.env), - ) - devices := getDevicesFromEnvvar(image, tc.swarmResourceEnvvars) - if tc.expectedDevices == nil { - require.Nil(t, devices, "%d: %v", i, tc) - return - } + require.Equal(t, tc.expectedConfig.Devices, cfg.Devices) + require.Equal(t, tc.expectedConfig.MigConfigDevices, cfg.MigConfigDevices) + require.Equal(t, tc.expectedConfig.MigMonitorDevices, cfg.MigMonitorDevices) + require.Equal(t, tc.expectedConfig.DriverCapabilities, cfg.DriverCapabilities) - require.NotNil(t, devices, "%d: %v", i, tc) - require.Equal(t, *tc.expectedDevices, *devices, "%d: %v", i, tc) + require.ElementsMatch(t, tc.expectedConfig.Requirements, cfg.Requirements) }) } } @@ -943,7 +534,7 @@ func TestGetDriverCapabilities(t *testing.T) { { description: "Env is set for legacy image", env: map[string]string{ - envNVDriverCapabilities: "display,video", + image.EnvVarNvidiaDriverCapabilities: "display,video", }, legacyImage: true, supportedCapabilities: supportedCapabilities, @@ -952,7 +543,7 @@ func TestGetDriverCapabilities(t *testing.T) { { description: "Env is all for legacy image", env: map[string]string{ - envNVDriverCapabilities: "all", + image.EnvVarNvidiaDriverCapabilities: "all", }, legacyImage: true, supportedCapabilities: supportedCapabilities, @@ -961,7 +552,7 @@ func TestGetDriverCapabilities(t *testing.T) { { description: "Env is empty for legacy image", env: map[string]string{ - envNVDriverCapabilities: "", + image.EnvVarNvidiaDriverCapabilities: "", }, legacyImage: true, supportedCapabilities: supportedCapabilities, @@ -977,7 +568,7 @@ func TestGetDriverCapabilities(t *testing.T) { { description: "Env is set for modern image", env: map[string]string{ - envNVDriverCapabilities: "display,video", + image.EnvVarNvidiaDriverCapabilities: "display,video", }, legacyImage: false, supportedCapabilities: supportedCapabilities, @@ -993,7 +584,7 @@ func TestGetDriverCapabilities(t *testing.T) { { description: "Env is all for modern image", env: map[string]string{ - envNVDriverCapabilities: "all", + image.EnvVarNvidiaDriverCapabilities: "all", }, legacyImage: false, supportedCapabilities: supportedCapabilities, @@ -1002,7 +593,7 @@ func TestGetDriverCapabilities(t *testing.T) { { description: "Env is empty for modern image", env: map[string]string{ - envNVDriverCapabilities: "", + image.EnvVarNvidiaDriverCapabilities: "", }, legacyImage: false, supportedCapabilities: supportedCapabilities, @@ -1011,7 +602,7 @@ func TestGetDriverCapabilities(t *testing.T) { { description: "Invalid capabilities panic", env: map[string]string{ - envNVDriverCapabilities: "compute,utility", + image.EnvVarNvidiaDriverCapabilities: "compute,utility", }, supportedCapabilities: "not-compute,not-utility", expectedPanic: true, @@ -1028,8 +619,10 @@ func TestGetDriverCapabilities(t *testing.T) { t.Run(tc.description, func(t *testing.T) { var capabilities string - c := HookConfig{ - SupportedDriverCapabilities: tc.supportedCapabilities, + c := hookConfig{ + Config: &config.Config{ + SupportedDriverCapabilities: tc.supportedCapabilities, + }, } image, _ := image.New( diff --git a/cmd/nvidia-container-runtime-hook/hook_config.go b/cmd/nvidia-container-runtime-hook/hook_config.go index afdb8bbc5..5b5bc1f0b 100644 --- a/cmd/nvidia-container-runtime-hook/hook_config.go +++ b/cmd/nvidia-container-runtime-hook/hook_config.go @@ -4,64 +4,54 @@ import ( "fmt" "log" "os" - "path" "reflect" "strings" + "sync" "github.com/NVIDIA/nvidia-container-toolkit/internal/config" "github.com/NVIDIA/nvidia-container-toolkit/internal/config/image" + "github.com/NVIDIA/nvidia-container-toolkit/internal/info" ) -const ( - configPath = "/etc/nvidia-container-runtime/config.toml" - driverPath = "/run/nvidia/driver" -) - -// HookConfig : options for the nvidia-container-runtime-hook. -type HookConfig config.Config - -func getDefaultHookConfig() (HookConfig, error) { - defaultCfg, err := config.GetDefault() - if err != nil { - return HookConfig{}, err - } - - return *(*HookConfig)(defaultCfg), nil +// hookConfig wraps the toolkit config. +// This allows for functions to be defined on the local type. +type hookConfig struct { + sync.Mutex + *config.Config + containerConfig *containerConfig } // loadConfig loads the required paths for the hook config. func loadConfig() (*config.Config, error) { - var configPaths []string - var required bool - if len(*configflag) != 0 { - configPaths = append(configPaths, *configflag) - required = true - } else { - configPaths = append(configPaths, path.Join(driverPath, configPath), configPath) + configFilePath, required := getConfigFilePath() + cfg, err := config.New( + config.WithConfigFile(configFilePath), + config.WithRequired(true), + ) + if err == nil { + return cfg.Config() + } else if os.IsNotExist(err) && !required { + return config.GetDefault() } + return nil, fmt.Errorf("couldn't open required configuration file: %v", err) +} - for _, p := range configPaths { - cfg, err := config.New( - config.WithConfigFile(p), - config.WithRequired(true), - ) - if err == nil { - return cfg.Config() - } else if os.IsNotExist(err) && !required { - continue - } - return nil, fmt.Errorf("couldn't open required configuration file: %v", err) +func getConfigFilePath() (string, bool) { + if configFromFlag := *configflag; configFromFlag != "" { + return configFromFlag, true } - - return config.GetDefault() + if configFromEnvvar := os.Getenv(config.FilePathOverrideEnvVar); configFromEnvvar != "" { + return configFromEnvvar, true + } + return config.GetConfigFilePath(), false } -func getHookConfig() (*HookConfig, error) { +func getHookConfig() (*hookConfig, error) { cfg, err := loadConfig() if err != nil { return nil, fmt.Errorf("failed to load config: %v", err) } - config := (*HookConfig)(cfg) + config := &hookConfig{Config: cfg} allSupportedDriverCapabilities := image.SupportedDriverCapabilities if config.SupportedDriverCapabilities == "all" { @@ -79,8 +69,8 @@ func getHookConfig() (*HookConfig, error) { // getConfigOption returns the toml config option associated with the // specified struct field. -func (c HookConfig) getConfigOption(fieldName string) string { - t := reflect.TypeOf(c) +func (c *hookConfig) getConfigOption(fieldName string) string { + t := reflect.TypeOf(&c) f, ok := t.FieldByName(fieldName) if !ok { return fieldName @@ -93,8 +83,8 @@ func (c HookConfig) getConfigOption(fieldName string) string { } // getSwarmResourceEnvvars returns the swarm resource envvars for the config. -func (c *HookConfig) getSwarmResourceEnvvars() []string { - if c.SwarmResource == "" { +func (c *hookConfig) getSwarmResourceEnvvars() []string { + if c == nil || c.SwarmResource == "" { return nil } @@ -110,3 +100,44 @@ func (c *HookConfig) getSwarmResourceEnvvars() []string { return envvars } + +// nvidiaContainerCliCUDACompatModeFlags returns required --cuda-compat-mode +// flag(s) depending on the hook and runtime configurations. +func (c *hookConfig) nvidiaContainerCliCUDACompatModeFlags() []string { + var flag string + switch c.NVIDIAContainerRuntimeConfig.Modes.Legacy.CUDACompatMode { + case config.CUDACompatModeLdconfig: + flag = "--cuda-compat-mode=ldconfig" + case config.CUDACompatModeMount: + flag = "--cuda-compat-mode=mount" + case config.CUDACompatModeDisabled, config.CUDACompatModeHook: + flag = "--cuda-compat-mode=disabled" + default: + if !c.Features.AllowCUDACompatLibsFromContainer.IsEnabled() { + flag = "--cuda-compat-mode=disabled" + } + } + + if flag == "" { + return nil + } + return []string{flag} +} + +func (c *hookConfig) assertModeIsLegacy() error { + if c.NVIDIAContainerRuntimeHookConfig.SkipModeDetection { + return nil + } + + mr := info.NewRuntimeModeResolver( + info.WithLogger(&logInterceptor{}), + info.WithImage(&c.containerConfig.Image), + info.WithDefaultMode(info.LegacyRuntimeMode), + ) + + mode := mr.ResolveRuntimeMode(c.NVIDIAContainerRuntimeConfig.Mode) + if mode == "legacy" { + return nil + } + return fmt.Errorf("invoking the NVIDIA Container Runtime Hook directly (e.g. specifying the docker --gpus flag) is not supported. Please use the NVIDIA Container Runtime (e.g. specify the --runtime=nvidia flag) instead") +} diff --git a/cmd/nvidia-container-runtime-hook/hook_config_test.go b/cmd/nvidia-container-runtime-hook/hook_config_test.go index 7c50ec123..149f7004c 100644 --- a/cmd/nvidia-container-runtime-hook/hook_config_test.go +++ b/cmd/nvidia-container-runtime-hook/hook_config_test.go @@ -23,6 +23,7 @@ import ( "github.com/stretchr/testify/require" + "github.com/NVIDIA/nvidia-container-toolkit/internal/config" "github.com/NVIDIA/nvidia-container-toolkit/internal/config/image" ) @@ -84,15 +85,15 @@ func TestGetHookConfig(t *testing.T) { configflag = &filename for _, line := range tc.lines { - _, err := configFile.WriteString(fmt.Sprintf("%s\n", line)) + _, err := fmt.Fprintf(configFile, "%s\n", line) require.NoError(t, err) } } - var config HookConfig + var cfg *hookConfig getHookConfig := func() { c, _ := getHookConfig() - config = *c + cfg = c } if tc.expectedPanic { @@ -102,7 +103,7 @@ func TestGetHookConfig(t *testing.T) { getHookConfig() - require.EqualValues(t, tc.expectedDriverCapabilities, config.SupportedDriverCapabilities) + require.EqualValues(t, tc.expectedDriverCapabilities, cfg.SupportedDriverCapabilities) }) } } @@ -144,8 +145,10 @@ func TestGetSwarmResourceEnvvars(t *testing.T) { for i, tc := range testCases { t.Run(fmt.Sprintf("%d", i), func(t *testing.T) { - c := &HookConfig{ - SwarmResource: tc.value, + c := &hookConfig{ + Config: &config.Config{ + SwarmResource: tc.value, + }, } envvars := c.getSwarmResourceEnvvars() diff --git a/cmd/nvidia-container-runtime-hook/main.go b/cmd/nvidia-container-runtime-hook/main.go index faaf0b519..7cdb0ad83 100644 --- a/cmd/nvidia-container-runtime-hook/main.go +++ b/cmd/nvidia-container-runtime-hook/main.go @@ -55,7 +55,7 @@ func getCLIPath(config config.ContainerCLIConfig) string { } // getRootfsPath returns an absolute path. We don't need to resolve symlinks for now. -func getRootfsPath(config containerConfig) string { +func getRootfsPath(config *containerConfig) string { rootfs, err := filepath.Abs(config.Rootfs) if err != nil { log.Panicln(err) @@ -75,15 +75,15 @@ func doPrestart() { } cli := hook.NVIDIAContainerCLIConfig - container := getContainerConfig(*hook) + container := hook.getContainerConfig() nvidia := container.Nvidia if nvidia == nil { // Not a GPU container, nothing to do. return } - if !hook.NVIDIAContainerRuntimeHookConfig.SkipModeDetection && info.ResolveAutoMode(&logInterceptor{}, hook.NVIDIAContainerRuntimeConfig.Mode, container.Image) != "legacy" { - log.Panicln("invoking the NVIDIA Container Runtime Hook directly (e.g. specifying the docker --gpus flag) is not supported. Please use the NVIDIA Container Runtime (e.g. specify the --runtime=nvidia flag) instead.") + if err := hook.assertModeIsLegacy(); err != nil { + log.Panicf("%v", err) } rootfs := getRootfsPath(container) @@ -95,6 +95,9 @@ func doPrestart() { if cli.LoadKmods { args = append(args, "--load-kmods") } + if hook.Features.DisableImexChannelCreation.IsEnabled() { + args = append(args, "--no-create-imex-channels") + } if cli.NoPivot { args = append(args, "--no-pivot") } @@ -111,14 +114,16 @@ func doPrestart() { } args = append(args, "configure") + args = append(args, hook.nvidiaContainerCliCUDACompatModeFlags()...) + if ldconfigPath := cli.NormalizeLDConfigPath(); ldconfigPath != "" { args = append(args, fmt.Sprintf("--ldconfig=%s", ldconfigPath)) } if cli.NoCgroups { args = append(args, "--no-cgroups") } - if len(nvidia.Devices) > 0 { - args = append(args, fmt.Sprintf("--device=%s", nvidia.Devices)) + if devicesString := strings.Join(nvidia.Devices, ","); len(devicesString) > 0 { + args = append(args, fmt.Sprintf("--device=%s", devicesString)) } if len(nvidia.MigConfigDevices) > 0 { args = append(args, fmt.Sprintf("--mig-config=%s", nvidia.MigConfigDevices)) @@ -126,8 +131,8 @@ func doPrestart() { if len(nvidia.MigMonitorDevices) > 0 { args = append(args, fmt.Sprintf("--mig-monitor=%s", nvidia.MigMonitorDevices)) } - if len(nvidia.ImexChannels) > 0 { - args = append(args, fmt.Sprintf("--imex-channel=%s", nvidia.ImexChannels)) + if imexString := strings.Join(nvidia.ImexChannels, ","); len(imexString) > 0 { + args = append(args, fmt.Sprintf("--imex-channel=%s", imexString)) } for _, cap := range strings.Split(nvidia.DriverCapabilities, ",") { diff --git a/cmd/nvidia-container-runtime/README.md b/cmd/nvidia-container-runtime/README.md index 269613c25..d8ef77fbb 100644 --- a/cmd/nvidia-container-runtime/README.md +++ b/cmd/nvidia-container-runtime/README.md @@ -21,8 +21,8 @@ The `runtimes` config option allows for the low-level runtime to be specified. T The default value for this setting is: ```toml runtimes = [ - "docker-runc", "runc", + "crun", ] ``` diff --git a/cmd/nvidia-container-runtime/main_test.go b/cmd/nvidia-container-runtime/main_test.go index ff3926fb8..ab5ddee73 100644 --- a/cmd/nvidia-container-runtime/main_test.go +++ b/cmd/nvidia-container-runtime/main_test.go @@ -22,9 +22,9 @@ import ( const ( nvidiaRuntime = "nvidia-container-runtime" nvidiaHook = "nvidia-container-runtime-hook" - bundlePathSuffix = "test/output/bundle/" + bundlePathSuffix = "tests/output/bundle/" specFile = "config.json" - unmodifiedSpecFileSuffix = "test/input/test_spec.json" + unmodifiedSpecFileSuffix = "tests/input/test_spec.json" ) const ( @@ -46,8 +46,8 @@ func TestMain(m *testing.M) { if err != nil { log.Fatalf("error in test setup: could not get module root: %v", err) } - testBinPath := filepath.Join(moduleRoot, "test", "bin") - testInputPath := filepath.Join(moduleRoot, "test", "input") + testBinPath := filepath.Join(moduleRoot, "tests", "bin") + testInputPath := filepath.Join(moduleRoot, "tests", "input") // Set the environment variables for the test os.Setenv("PATH", test.PrependToPath(testBinPath, moduleRoot)) @@ -122,11 +122,10 @@ func TestGoodInput(t *testing.T) { err = cmdCreate.Run() require.NoError(t, err, "runtime should not return an error") - // Check config.json for NVIDIA prestart hook + // Check config.json to ensure that the NVIDIA prestart was not inserted. spec, err = cfg.getRuntimeSpec() require.NoError(t, err, "should be no errors when reading and parsing spec from config.json") - require.NotEmpty(t, spec.Hooks, "there should be hooks in config.json") - require.Equal(t, 1, nvidiaHookCount(spec.Hooks), "exactly one nvidia prestart hook should be inserted correctly into config.json") + require.Empty(t, spec.Hooks, "there should be no hooks in config.json") } // NVIDIA prestart hook already present in config file @@ -168,11 +167,10 @@ func TestDuplicateHook(t *testing.T) { output, err := cmdCreate.CombinedOutput() require.NoErrorf(t, err, "runtime should not return an error", "output=%v", string(output)) - // Check config.json for NVIDIA prestart hook + // Check config.json to ensure that the NVIDIA prestart hook was removed. spec, err = cfg.getRuntimeSpec() require.NoError(t, err, "should be no errors when reading and parsing spec from config.json") - require.NotEmpty(t, spec.Hooks, "there should be hooks in config.json") - require.Equal(t, 1, nvidiaHookCount(spec.Hooks), "exactly one nvidia prestart hook should be inserted correctly into config.json") + require.Empty(t, spec.Hooks, "there should be no hooks in config.json") } // addNVIDIAHook is a basic wrapper for an addHookModifier that is used for @@ -240,18 +238,3 @@ func (c testConfig) generateNewRuntimeSpec() error { } return nil } - -// Return number of valid NVIDIA prestart hooks in runtime spec -func nvidiaHookCount(hooks *specs.Hooks) int { - if hooks == nil { - return 0 - } - - count := 0 - for _, hook := range hooks.Prestart { - if strings.Contains(hook.Path, nvidiaHook) { - count++ - } - } - return count -} diff --git a/tools/container/README.md b/cmd/nvidia-ctk-installer/container/README.md similarity index 100% rename from tools/container/README.md rename to cmd/nvidia-ctk-installer/container/README.md diff --git a/tools/container/container.go b/cmd/nvidia-ctk-installer/container/container.go similarity index 81% rename from tools/container/container.go rename to cmd/nvidia-ctk-installer/container/container.go index 8d09e7341..0583e051a 100644 --- a/tools/container/container.go +++ b/cmd/nvidia-ctk-installer/container/container.go @@ -22,10 +22,9 @@ import ( "os/exec" "github.com/sirupsen/logrus" - "github.com/urfave/cli/v2" + "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk-installer/container/operator" "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine" - "github.com/NVIDIA/nvidia-container-toolkit/tools/container/operator" ) const ( @@ -36,8 +35,15 @@ const ( // Options defines the shared options for the CLIs to configure containers runtimes. type Options struct { - Config string - Socket string + Config string + Socket string + // ExecutablePath specifies the path to the container runtime executable. + // This is used to extract the current config, for example. + // If a HostRootMount is specified, this path is relative to the host root + // mount. + ExecutablePath string + // EnabledCDI indicates whether CDI should be enabled. + EnableCDI bool RuntimeName string RuntimeDir string SetAsDefault bool @@ -45,30 +51,9 @@ type Options struct { HostRootMount string } -// ParseArgs parses the command line arguments to the CLI -func ParseArgs(c *cli.Context, o *Options) error { - if o.RuntimeDir != "" { - logrus.Debug("Runtime directory already set; ignoring arguments") - return nil - } - - args := c.Args() - - logrus.Infof("Parsing arguments: %v", args.Slice()) - if c.NArg() != 1 { - return fmt.Errorf("incorrect number of arguments") - } - - o.RuntimeDir = args.Get(0) - - logrus.Infof("Successfully parsed arguments") - - return nil -} - // Configure applies the options to the specified config -func (o Options) Configure(cfg engine.Interface, configOverrides ...map[string]interface{}) error { - err := o.UpdateConfig(cfg, configOverrides...) +func (o Options) Configure(cfg engine.Interface) error { + err := o.UpdateConfig(cfg) if err != nil { return fmt.Errorf("unable to update config: %v", err) } @@ -98,19 +83,23 @@ func (o Options) flush(cfg engine.Interface) error { } // UpdateConfig updates the specified config to include the nvidia runtimes -func (o Options) UpdateConfig(cfg engine.Interface, configOverrides ...map[string]interface{}) error { +func (o Options) UpdateConfig(cfg engine.Interface) error { runtimes := operator.GetRuntimes( operator.WithNvidiaRuntimeName(o.RuntimeName), operator.WithSetAsDefault(o.SetAsDefault), operator.WithRoot(o.RuntimeDir), ) for name, runtime := range runtimes { - err := cfg.AddRuntime(name, runtime.Path, runtime.SetAsDefault, configOverrides...) + err := cfg.AddRuntime(name, runtime.Path, runtime.SetAsDefault) if err != nil { return fmt.Errorf("failed to update runtime %q: %v", name, err) } } + if o.EnableCDI { + cfg.EnableCDI() + } + return nil } diff --git a/tools/container/operator/operator.go b/cmd/nvidia-ctk-installer/container/operator/operator.go similarity index 97% rename from tools/container/operator/operator.go rename to cmd/nvidia-ctk-installer/container/operator/operator.go index d88e9faf9..5778d9bc6 100644 --- a/tools/container/operator/operator.go +++ b/cmd/nvidia-ctk-installer/container/operator/operator.go @@ -20,8 +20,6 @@ import "path/filepath" const ( defaultRuntimeName = "nvidia" - - defaultRoot = "/usr/bin" ) // Runtime defines a runtime to be configured. @@ -48,9 +46,6 @@ func GetRuntimes(opts ...Option) Runtimes { opt(c) } - if c.root == "" { - c.root = defaultRoot - } if c.nvidiaRuntimeName == "" { c.nvidiaRuntimeName = defaultRuntimeName } diff --git a/tools/container/operator/operator_test.go b/cmd/nvidia-ctk-installer/container/operator/operator_test.go similarity index 98% rename from tools/container/operator/operator_test.go rename to cmd/nvidia-ctk-installer/container/operator/operator_test.go index f1e539948..40e90161d 100644 --- a/tools/container/operator/operator_test.go +++ b/cmd/nvidia-ctk-installer/container/operator/operator_test.go @@ -27,7 +27,6 @@ func TestOptions(t *testing.T) { testCases := []struct { setAsDefault bool nvidiaRuntimeName string - root string expectedDefaultRuntime string expectedRuntimes Runtimes }{ @@ -131,7 +130,7 @@ func TestOptions(t *testing.T) { runtimes := GetRuntimes( WithNvidiaRuntimeName(tc.nvidiaRuntimeName), WithSetAsDefault(tc.setAsDefault), - WithRoot(tc.root), + WithRoot("/usr/bin"), ) require.EqualValues(t, tc.expectedRuntimes, runtimes) diff --git a/tools/container/containerd/config_v1_test.go b/cmd/nvidia-ctk-installer/container/runtime/containerd/config_v1_test.go similarity index 83% rename from tools/container/containerd/config_v1_test.go rename to cmd/nvidia-ctk-installer/container/runtime/containerd/config_v1_test.go index 49a4bc2fe..862d59925 100644 --- a/tools/container/containerd/config_v1_test.go +++ b/cmd/nvidia-ctk-installer/container/runtime/containerd/config_v1_test.go @@ -14,18 +14,18 @@ # limitations under the License. */ -package main +package containerd import ( "fmt" "testing" - "github.com/pelletier/go-toml" testlog "github.com/sirupsen/logrus/hooks/test" "github.com/stretchr/testify/require" + "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk-installer/container" "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine/containerd" - "github.com/NVIDIA/nvidia-container-toolkit/tools/container" + "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/toml" ) func TestUpdateV1ConfigDefaultRuntime(t *testing.T) { @@ -82,47 +82,42 @@ func TestUpdateV1ConfigDefaultRuntime(t *testing.T) { for i, tc := range testCases { t.Run(fmt.Sprintf("%d", i), func(t *testing.T) { - o := &options{ - Options: container.Options{ - RuntimeName: tc.runtimeName, - RuntimeDir: runtimeDir, - SetAsDefault: tc.setAsDefault, - }, - runtimeType: runtimeType, - useLegacyConfig: tc.legacyConfig, + o := &container.Options{ + RuntimeName: tc.runtimeName, + RuntimeDir: runtimeDir, + SetAsDefault: tc.setAsDefault, } - config, err := toml.TreeFromMap(map[string]interface{}{}) - require.NoError(t, err, "%d: %v", i, tc) - - v1 := &containerd.ConfigV1{ - Logger: logger, - Tree: config, - UseDefaultRuntimeName: !tc.legacyConfig, - RuntimeType: runtimeType, - } + v1, err := containerd.New( + containerd.WithLogger(logger), + containerd.WithConfigSource(toml.Empty), + containerd.WithRuntimeType(runtimeType), + containerd.WithUseLegacyConfig(tc.legacyConfig), + containerd.WithConfigVersion(1), + ) + require.NoError(t, err) err = o.UpdateConfig(v1) - require.NoError(t, err, "%d: %v", i, tc) + require.NoError(t, err) - defaultRuntimeName := v1.GetPath([]string{"plugins", "cri", "containerd", "default_runtime_name"}) - require.EqualValues(t, tc.expectedDefaultRuntimeName, defaultRuntimeName, "%d: %v", i, tc) + cfg := v1.(*containerd.ConfigV1) + defaultRuntimeName := cfg.GetPath([]string{"plugins", "cri", "containerd", "default_runtime_name"}) + require.EqualValues(t, tc.expectedDefaultRuntimeName, defaultRuntimeName) - defaultRuntime := v1.GetPath([]string{"plugins", "cri", "containerd", "default_runtime"}) + defaultRuntime := cfg.GetPath([]string{"plugins", "cri", "containerd", "default_runtime"}) if tc.expectedDefaultRuntimeBinary == nil { - require.Nil(t, defaultRuntime, "%d: %v", i, tc) + require.Nil(t, defaultRuntime) } else { require.NotNil(t, defaultRuntime) expected, err := defaultRuntimeTomlConfigV1(tc.expectedDefaultRuntimeBinary.(string)) - require.NoError(t, err, "%d: %v", i, tc) + require.NoError(t, err) configContents, _ := toml.Marshal(defaultRuntime.(*toml.Tree)) expectedContents, _ := toml.Marshal(expected) require.Equal(t, string(expectedContents), string(configContents), "%d: %v: %v", i, tc) } - }) } } @@ -233,31 +228,27 @@ func TestUpdateV1Config(t *testing.T) { for i, tc := range testCases { t.Run(fmt.Sprintf("%d", i), func(t *testing.T) { - o := &options{ - Options: container.Options{ - RuntimeName: tc.runtimeName, - RuntimeDir: runtimeDir, - }, + o := &container.Options{ + RuntimeName: tc.runtimeName, + RuntimeDir: runtimeDir, } - config, err := toml.TreeFromMap(map[string]interface{}{}) + v1, err := containerd.New( + containerd.WithLogger(logger), + containerd.WithConfigSource(toml.Empty), + containerd.WithRuntimeType(runtimeType), + containerd.WithConfigVersion(1), + containerd.WithContainerAnnotations("cdi.k8s.io/*"), + ) require.NoError(t, err) - v1 := &containerd.ConfigV1{ - Logger: logger, - Tree: config, - UseDefaultRuntimeName: true, - RuntimeType: runtimeType, - ContainerAnnotations: []string{"cdi.k8s.io/*"}, - } - err = o.UpdateConfig(v1) require.NoError(t, err) expected, err := toml.TreeFromMap(tc.expectedConfig) require.NoError(t, err) - require.Equal(t, expected.String(), config.String()) + require.Equal(t, expected.String(), v1.String()) }) } } @@ -394,36 +385,78 @@ func TestUpdateV1ConfigWithRuncPresent(t *testing.T) { for i, tc := range testCases { t.Run(fmt.Sprintf("%d", i), func(t *testing.T) { - o := &options{ - Options: container.Options{ - RuntimeName: tc.runtimeName, - RuntimeDir: runtimeDir, - }, + o := &container.Options{ + RuntimeName: tc.runtimeName, + RuntimeDir: runtimeDir, } - config, err := toml.TreeFromMap(runcConfigMapV1("/runc-binary")) + v1, err := containerd.New( + containerd.WithLogger(logger), + containerd.WithConfigSource(toml.FromMap(runcConfigMapV1("/runc-binary"))), + containerd.WithRuntimeType(runtimeType), + containerd.WithConfigVersion(1), + containerd.WithContainerAnnotations("cdi.k8s.io/*"), + ) require.NoError(t, err) - v1 := &containerd.ConfigV1{ - Logger: logger, - Tree: config, - UseDefaultRuntimeName: true, - RuntimeType: runtimeType, - ContainerAnnotations: []string{"cdi.k8s.io/*"}, - } - err = o.UpdateConfig(v1) require.NoError(t, err) expected, err := toml.TreeFromMap(tc.expectedConfig) require.NoError(t, err) - require.Equal(t, expected.String(), config.String()) + require.Equal(t, expected.String(), v1.String()) + }) + } +} + +func TestUpdateV1EnableCDI(t *testing.T) { + logger, _ := testlog.NewNullLogger() + const runtimeDir = "/test/runtime/dir" + + testCases := []struct { + enableCDI bool + expectedEnableCDIValue interface{} + }{ + {}, + { + enableCDI: false, + expectedEnableCDIValue: nil, + }, + { + enableCDI: true, + expectedEnableCDIValue: true, + }, + } + + for _, tc := range testCases { + t.Run(fmt.Sprintf("%v", tc.enableCDI), func(t *testing.T) { + o := &container.Options{ + EnableCDI: tc.enableCDI, + RuntimeName: "nvidia", + RuntimeDir: runtimeDir, + } + + cfg, err := toml.Empty.Load() + require.NoError(t, err) + + v1 := &containerd.ConfigV1{ + Logger: logger, + Tree: cfg, + RuntimeType: runtimeType, + } + + err = o.UpdateConfig(v1) + require.NoError(t, err) + + enableCDIValue := v1.GetPath([]string{"plugins", "cri", "containerd", "enable_cdi"}) + require.EqualValues(t, tc.expectedEnableCDIValue, enableCDIValue) }) } } func TestRevertV1Config(t *testing.T) { + logger, _ := testlog.NewNullLogger() testCases := []struct { config map[string]interface { } @@ -473,31 +506,26 @@ func TestRevertV1Config(t *testing.T) { for i, tc := range testCases { t.Run(fmt.Sprintf("%d", i), func(t *testing.T) { - o := &options{ - Options: container.Options{ - RuntimeName: "nvidia", - }, + o := &container.Options{ + RuntimeName: "nvidia", } - config, err := toml.TreeFromMap(tc.config) - require.NoError(t, err, "%d: %v", i, tc) - expected, err := toml.TreeFromMap(tc.expected) - require.NoError(t, err, "%d: %v", i, tc) + require.NoError(t, err) - v1 := &containerd.ConfigV1{ - Tree: config, - UseDefaultRuntimeName: true, - RuntimeType: runtimeType, - } + v1, err := containerd.New( + containerd.WithLogger(logger), + containerd.WithConfigSource(toml.FromMap(tc.config)), + containerd.WithRuntimeType(runtimeType), - err = o.RevertConfig(v1) - require.NoError(t, err, "%d: %v", i, tc) + containerd.WithContainerAnnotations("cdi.k8s.io/*"), + ) + require.NoError(t, err) - configContents, _ := toml.Marshal(config) - expectedContents, _ := toml.Marshal(expected) + err = o.RevertConfig(v1) + require.NoError(t, err) - require.Equal(t, string(expectedContents), string(configContents), "%d: %v", i, tc) + require.Equal(t, expected.String(), v1.String()) }) } } diff --git a/tools/container/containerd/config_v2_test.go b/cmd/nvidia-ctk-installer/container/runtime/containerd/config_v2_test.go similarity index 82% rename from tools/container/containerd/config_v2_test.go rename to cmd/nvidia-ctk-installer/container/runtime/containerd/config_v2_test.go index ce4a58bef..a6570e8f4 100644 --- a/tools/container/containerd/config_v2_test.go +++ b/cmd/nvidia-ctk-installer/container/runtime/containerd/config_v2_test.go @@ -14,18 +14,18 @@ # limitations under the License. */ -package main +package containerd import ( "fmt" "testing" - "github.com/pelletier/go-toml" testlog "github.com/sirupsen/logrus/hooks/test" "github.com/stretchr/testify/require" + "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk-installer/container" "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine/containerd" - "github.com/NVIDIA/nvidia-container-toolkit/tools/container" + "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/toml" ) const ( @@ -66,27 +66,26 @@ func TestUpdateV2ConfigDefaultRuntime(t *testing.T) { for i, tc := range testCases { t.Run(fmt.Sprintf("%d", i), func(t *testing.T) { - o := &options{ - Options: container.Options{ - RuntimeName: tc.runtimeName, - RuntimeDir: runtimeDir, - SetAsDefault: tc.setAsDefault, - }, + o := &container.Options{ + RuntimeName: tc.runtimeName, + RuntimeDir: runtimeDir, + SetAsDefault: tc.setAsDefault, } - config, err := toml.TreeFromMap(map[string]interface{}{}) + v2, err := containerd.New( + containerd.WithLogger(logger), + containerd.WithConfigSource(toml.Empty), + containerd.WithRuntimeType(runtimeType), + containerd.WithContainerAnnotations("cdi.k8s.io/*"), + ) require.NoError(t, err) - v2 := &containerd.Config{ - Logger: logger, - Tree: config, - RuntimeType: runtimeType, - } - err = o.UpdateConfig(v2) require.NoError(t, err) - defaultRuntimeName := config.GetPath([]string{"plugins", "io.containerd.grpc.v1.cri", "containerd", "default_runtime_name"}) + cfg := v2.(*containerd.Config) + + defaultRuntimeName := cfg.GetPath([]string{"plugins", "io.containerd.grpc.v1.cri", "containerd", "default_runtime_name"}) require.EqualValues(t, tc.expectedDefaultRuntimeName, defaultRuntimeName) }) } @@ -192,31 +191,26 @@ func TestUpdateV2Config(t *testing.T) { for i, tc := range testCases { t.Run(fmt.Sprintf("%d", i), func(t *testing.T) { - o := &options{ - Options: container.Options{ - RuntimeName: tc.runtimeName, - RuntimeDir: runtimeDir, - }, - runtimeType: runtimeType, + o := &container.Options{ + RuntimeName: tc.runtimeName, + RuntimeDir: runtimeDir, } - config, err := toml.TreeFromMap(map[string]interface{}{}) + v2, err := containerd.New( + containerd.WithLogger(logger), + containerd.WithConfigSource(toml.Empty), + containerd.WithRuntimeType(runtimeType), + containerd.WithContainerAnnotations("cdi.k8s.io/*"), + ) require.NoError(t, err) - v2 := &containerd.Config{ - Logger: logger, - Tree: config, - RuntimeType: o.runtimeType, - ContainerAnnotations: []string{"cdi.k8s.io/*"}, - } - err = o.UpdateConfig(v2) require.NoError(t, err) expected, err := toml.TreeFromMap(tc.expectedConfig) require.NoError(t, err) - require.Equal(t, expected.String(), config.String()) + require.Equal(t, expected.String(), v2.String()) }) } @@ -348,35 +342,80 @@ func TestUpdateV2ConfigWithRuncPresent(t *testing.T) { for i, tc := range testCases { t.Run(fmt.Sprintf("%d", i), func(t *testing.T) { - o := &options{ - Options: container.Options{ - RuntimeName: tc.runtimeName, - RuntimeDir: runtimeDir, - }, + o := &container.Options{ + RuntimeName: tc.runtimeName, + RuntimeDir: runtimeDir, } - config, err := toml.TreeFromMap(runcConfigMapV2("/runc-binary")) + v2, err := containerd.New( + containerd.WithLogger(logger), + containerd.WithConfigSource(toml.FromMap(runcConfigMapV2("/runc-binary"))), + containerd.WithRuntimeType(runtimeType), + containerd.WithContainerAnnotations("cdi.k8s.io/*"), + ) + require.NoError(t, err) + + err = o.UpdateConfig(v2) + require.NoError(t, err) + + expected, err := toml.TreeFromMap(tc.expectedConfig) + require.NoError(t, err) + + require.Equal(t, expected.String(), v2.String()) + }) + } +} + +func TestUpdateV2ConfigEnableCDI(t *testing.T) { + logger, _ := testlog.NewNullLogger() + const runtimeDir = "/test/runtime/dir" + + testCases := []struct { + enableCDI bool + expectedEnableCDIValue interface{} + }{ + {}, + { + enableCDI: false, + expectedEnableCDIValue: nil, + }, + { + enableCDI: true, + expectedEnableCDIValue: true, + }, + } + + for _, tc := range testCases { + t.Run(fmt.Sprintf("%v", tc.enableCDI), func(t *testing.T) { + o := &container.Options{ + EnableCDI: tc.enableCDI, + RuntimeName: "nvidia", + RuntimeDir: runtimeDir, + SetAsDefault: false, + } + + cfg, err := toml.LoadMap(map[string]interface{}{}) require.NoError(t, err) v2 := &containerd.Config{ Logger: logger, - Tree: config, + Tree: cfg, RuntimeType: runtimeType, - ContainerAnnotations: []string{"cdi.k8s.io/*"}, + CRIRuntimePluginName: "io.containerd.grpc.v1.cri", } err = o.UpdateConfig(v2) require.NoError(t, err) - expected, err := toml.TreeFromMap(tc.expectedConfig) - require.NoError(t, err) - - require.Equal(t, expected.String(), config.String()) + enableCDIValue := cfg.GetPath([]string{"plugins", "io.containerd.grpc.v1.cri", "enable_cdi"}) + require.EqualValues(t, tc.expectedEnableCDIValue, enableCDIValue) }) } } func TestRevertV2Config(t *testing.T) { + logger, _ := testlog.NewNullLogger() + testCases := []struct { config map[string]interface { } @@ -421,30 +460,25 @@ func TestRevertV2Config(t *testing.T) { for i, tc := range testCases { t.Run(fmt.Sprintf("%d", i), func(t *testing.T) { - o := &options{ - Options: container.Options{ - RuntimeName: "nvidia", - }, + o := &container.Options{ + RuntimeName: "nvidia", } - config, err := toml.TreeFromMap(tc.config) - require.NoError(t, err) - expected, err := toml.TreeFromMap(tc.expected) require.NoError(t, err) - v2 := &containerd.Config{ - Tree: config, - RuntimeType: runtimeType, - } + v2, err := containerd.New( + containerd.WithLogger(logger), + containerd.WithConfigSource(toml.FromMap(tc.config)), + containerd.WithRuntimeType(runtimeType), + containerd.WithContainerAnnotations("cdi.k8s.io/*"), + ) + require.NoError(t, err) err = o.RevertConfig(v2) require.NoError(t, err) - configContents, _ := toml.Marshal(config) - expectedContents, _ := toml.Marshal(expected) - - require.Equal(t, string(expectedContents), string(configContents)) + require.Equal(t, expected.String(), v2.String()) }) } } @@ -463,6 +497,7 @@ func runtimeMapV2(binary string) map[string]interface{} { func runcConfigMapV2(binary string) map[string]interface{} { return map[string]interface{}{ + "version": 2, "plugins": map[string]interface{}{ "io.containerd.grpc.v1.cri": map[string]interface{}{ "containerd": map[string]interface{}{ diff --git a/cmd/nvidia-ctk-installer/container/runtime/containerd/containerd.go b/cmd/nvidia-ctk-installer/container/runtime/containerd/containerd.go new file mode 100644 index 000000000..4e896c18b --- /dev/null +++ b/cmd/nvidia-ctk-installer/container/runtime/containerd/containerd.go @@ -0,0 +1,184 @@ +/** +# Copyright (c) 2020-2021, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/ + +package containerd + +import ( + "encoding/json" + "fmt" + + log "github.com/sirupsen/logrus" + cli "github.com/urfave/cli/v3" + + "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk-installer/container" + "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine" + "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine/containerd" + "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/toml" +) + +const ( + Name = "containerd" + + DefaultConfig = "/etc/containerd/config.toml" + DefaultSocket = "/run/containerd/containerd.sock" + DefaultRestartMode = "signal" + + defaultRuntmeType = "io.containerd.runc.v2" +) + +// Options stores the containerd-specific options +type Options struct { + useLegacyConfig bool + runtimeType string + + ContainerRuntimeModesCDIAnnotationPrefixes []string + + runtimeConfigOverrideJSON string +} + +func Flags(opts *Options) []cli.Flag { + flags := []cli.Flag{ + &cli.BoolFlag{ + Name: "use-legacy-config", + Usage: "Specify whether a legacy (pre v1.3) config should be used. " + + "This ensures that a version 1 container config is created by default and that the " + + "containerd.runtimes.default_runtime config section is used to define the default " + + "runtime instead of container.default_runtime_name.", + Destination: &opts.useLegacyConfig, + Sources: cli.EnvVars("CONTAINERD_USE_LEGACY_CONFIG"), + }, + &cli.StringFlag{ + Name: "runtime-type", + Usage: "The runtime_type to use for the configured runtime classes", + Value: defaultRuntmeType, + Destination: &opts.runtimeType, + Sources: cli.EnvVars("CONTAINERD_RUNTIME_TYPE"), + }, + &cli.StringSliceFlag{ + Name: "nvidia-container-runtime-modes.cdi.annotation-prefixes", + Destination: &opts.ContainerRuntimeModesCDIAnnotationPrefixes, + Sources: cli.EnvVars("NVIDIA_CONTAINER_RUNTIME_MODES_CDI_ANNOTATION_PREFIXES"), + }, + &cli.StringFlag{ + Name: "runtime-config-override", + Destination: &opts.runtimeConfigOverrideJSON, + Usage: "specify additional runtime options as a JSON string. The paths are relative to the runtime config.", + Value: "{}", + Sources: cli.EnvVars("RUNTIME_CONFIG_OVERRIDE", "CONTAINERD_RUNTIME_CONFIG_OVERRIDE"), + }, + } + + return flags +} + +// Setup updates a containerd configuration to include the nvidia-containerd-runtime and reloads it +func Setup(c *cli.Command, o *container.Options, co *Options) error { + log.Infof("Starting 'setup' for %v", c.Name) + + cfg, err := getRuntimeConfig(o, co) + if err != nil { + return fmt.Errorf("unable to load config: %v", err) + } + + err = o.Configure(cfg) + if err != nil { + return fmt.Errorf("unable to configure containerd: %v", err) + } + + err = RestartContainerd(o) + if err != nil { + return fmt.Errorf("unable to restart containerd: %v", err) + } + + log.Infof("Completed 'setup' for %v", c.Name) + + return nil +} + +// Cleanup reverts a containerd configuration to remove the nvidia-containerd-runtime and reloads it +func Cleanup(c *cli.Command, o *container.Options, co *Options) error { + log.Infof("Starting 'cleanup' for %v", c.Name) + + cfg, err := getRuntimeConfig(o, co) + if err != nil { + return fmt.Errorf("unable to load config: %v", err) + } + + err = o.Unconfigure(cfg) + if err != nil { + return fmt.Errorf("unable to unconfigure containerd: %v", err) + } + + err = RestartContainerd(o) + if err != nil { + return fmt.Errorf("unable to restart containerd: %v", err) + } + + log.Infof("Completed 'cleanup' for %v", c.Name) + + return nil +} + +// RestartContainerd restarts containerd depending on the value of restartModeFlag +func RestartContainerd(o *container.Options) error { + return o.Restart("containerd", SignalContainerd) +} + +// containerAnnotationsFromCDIPrefixes returns the container annotations to set for the given CDI prefixes. +func (o *Options) containerAnnotationsFromCDIPrefixes() []string { + var annotations []string + for _, prefix := range o.ContainerRuntimeModesCDIAnnotationPrefixes { + annotations = append(annotations, prefix+"*") + } + + return annotations +} + +func (o *Options) runtimeConfigOverride() (map[string]interface{}, error) { + if o.runtimeConfigOverrideJSON == "" { + return nil, nil + } + + runtimeOptions := make(map[string]interface{}) + if err := json.Unmarshal([]byte(o.runtimeConfigOverrideJSON), &runtimeOptions); err != nil { + return nil, fmt.Errorf("failed to read %v as JSON: %w", o.runtimeConfigOverrideJSON, err) + } + + return runtimeOptions, nil +} + +func GetLowlevelRuntimePaths(o *container.Options, co *Options) ([]string, error) { + cfg, err := getRuntimeConfig(o, co) + if err != nil { + return nil, fmt.Errorf("unable to load containerd config: %w", err) + } + return engine.GetBinaryPathsForRuntimes(cfg), nil +} + +func getRuntimeConfig(o *container.Options, co *Options) (engine.Interface, error) { + return containerd.New( + containerd.WithPath(o.Config), + containerd.WithConfigSource( + toml.LoadFirst( + containerd.CommandLineSource(o.HostRootMount, o.ExecutablePath), + toml.FromFile(o.Config), + ), + ), + containerd.WithRuntimeType(co.runtimeType), + containerd.WithUseLegacyConfig(co.useLegacyConfig), + containerd.WithContainerAnnotations(co.containerAnnotationsFromCDIPrefixes()...), + ) +} diff --git a/tools/container/containerd/containerd_linux.go b/cmd/nvidia-ctk-installer/container/runtime/containerd/containerd_linux.go similarity index 99% rename from tools/container/containerd/containerd_linux.go rename to cmd/nvidia-ctk-installer/container/runtime/containerd/containerd_linux.go index 2dcabcd55..198e614e6 100644 --- a/tools/container/containerd/containerd_linux.go +++ b/cmd/nvidia-ctk-installer/container/runtime/containerd/containerd_linux.go @@ -14,7 +14,7 @@ # limitations under the License. **/ -package main +package containerd import ( "fmt" diff --git a/tools/container/containerd/containerd_other.go b/cmd/nvidia-ctk-installer/container/runtime/containerd/containerd_other.go similarity index 97% rename from tools/container/containerd/containerd_other.go rename to cmd/nvidia-ctk-installer/container/runtime/containerd/containerd_other.go index 1a22d0234..794676e76 100644 --- a/tools/container/containerd/containerd_other.go +++ b/cmd/nvidia-ctk-installer/container/runtime/containerd/containerd_other.go @@ -17,7 +17,7 @@ # limitations under the License. **/ -package main +package containerd import ( "errors" diff --git a/tools/container/containerd/containerd_test.go b/cmd/nvidia-ctk-installer/container/runtime/containerd/containerd_test.go similarity index 94% rename from tools/container/containerd/containerd_test.go rename to cmd/nvidia-ctk-installer/container/runtime/containerd/containerd_test.go index 7240a4dc7..d5cf515be 100644 --- a/tools/container/containerd/containerd_test.go +++ b/cmd/nvidia-ctk-installer/container/runtime/containerd/containerd_test.go @@ -14,7 +14,7 @@ # limitations under the License. **/ -package main +package containerd import ( "testing" @@ -25,7 +25,7 @@ import ( func TestRuntimeOptions(t *testing.T) { testCases := []struct { description string - options options + options Options expected map[string]interface{} expectedError error }{ @@ -34,7 +34,7 @@ func TestRuntimeOptions(t *testing.T) { }, { description: "empty json", - options: options{ + options: Options{ runtimeConfigOverrideJSON: "{}", }, expected: map[string]interface{}{}, @@ -42,7 +42,7 @@ func TestRuntimeOptions(t *testing.T) { }, { description: "SystemdCgroup is true", - options: options{ + options: Options{ runtimeConfigOverrideJSON: "{\"SystemdCgroup\": true}", }, expected: map[string]interface{}{ @@ -52,7 +52,7 @@ func TestRuntimeOptions(t *testing.T) { }, { description: "SystemdCgroup is false", - options: options{ + options: Options{ runtimeConfigOverrideJSON: "{\"SystemdCgroup\": false}", }, expected: map[string]interface{}{ diff --git a/cmd/nvidia-ctk-installer/container/runtime/crio/crio.go b/cmd/nvidia-ctk-installer/container/runtime/crio/crio.go new file mode 100644 index 000000000..10fb1cbfd --- /dev/null +++ b/cmd/nvidia-ctk-installer/container/runtime/crio/crio.go @@ -0,0 +1,210 @@ +/** +# Copyright (c) 2021-2022, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package crio + +import ( + "fmt" + "os" + "path/filepath" + + log "github.com/sirupsen/logrus" + cli "github.com/urfave/cli/v3" + + "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk-installer/container" + "github.com/NVIDIA/nvidia-container-toolkit/internal/config" + "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine" + "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine/crio" + "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/ocihook" + "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/toml" +) + +const ( + Name = "crio" + + defaultConfigMode = "hook" + + // Hook-based settings + defaultHooksDir = "/usr/share/containers/oci/hooks.d" + defaultHookFilename = "oci-nvidia-hook.json" + + // Config-based settings + DefaultConfig = "/etc/crio/crio.conf" + DefaultSocket = "/var/run/crio/crio.sock" + DefaultRestartMode = "systemd" +) + +// Options defines the cri-o specific options. +type Options struct { + configMode string + + // hook-specific options + hooksDir string + hookFilename string +} + +func Flags(opts *Options) []cli.Flag { + flags := []cli.Flag{ + &cli.StringFlag{ + Name: "hooks-dir", + Usage: "path to the cri-o hooks directory", + Value: defaultHooksDir, + Destination: &opts.hooksDir, + Sources: cli.EnvVars("CRIO_HOOKS_DIR"), + DefaultText: defaultHooksDir, + }, + &cli.StringFlag{ + Name: "hook-filename", + Usage: "filename of the cri-o hook that will be created / removed in the hooks directory", + Value: defaultHookFilename, + Destination: &opts.hookFilename, + Sources: cli.EnvVars("CRIO_HOOK_FILENAME"), + DefaultText: defaultHookFilename, + }, + &cli.StringFlag{ + Name: "config-mode", + Usage: "the configuration mode to use. One of [hook | config]", + Value: defaultConfigMode, + Destination: &opts.configMode, + Sources: cli.EnvVars("CRIO_CONFIG_MODE"), + }, + } + + return flags +} + +// Setup installs the prestart hook required to launch GPU-enabled containers +func Setup(c *cli.Command, o *container.Options, co *Options) error { + log.Infof("Starting 'setup' for %v", c.Name) + + switch co.configMode { + case "hook": + return setupHook(o, co) + case "config": + return setupConfig(o) + default: + return fmt.Errorf("invalid config-mode '%v'", co.configMode) + } +} + +// setupHook installs the prestart hook required to launch GPU-enabled containers +func setupHook(o *container.Options, co *Options) error { + log.Infof("Installing prestart hook") + + hookPath := filepath.Join(co.hooksDir, co.hookFilename) + err := ocihook.CreateHook(hookPath, filepath.Join(o.RuntimeDir, config.NVIDIAContainerRuntimeHookExecutable)) + if err != nil { + return fmt.Errorf("error creating hook: %v", err) + } + + return nil +} + +// setupConfig updates the cri-o config for the NVIDIA container runtime +func setupConfig(o *container.Options) error { + log.Infof("Updating config file") + + cfg, err := getRuntimeConfig(o) + if err != nil { + return fmt.Errorf("unable to load config: %v", err) + } + + err = o.Configure(cfg) + if err != nil { + return fmt.Errorf("unable to configure cri-o: %v", err) + } + + err = RestartCrio(o) + if err != nil { + return fmt.Errorf("unable to restart crio: %v", err) + } + + return nil +} + +// Cleanup removes the specified prestart hook +func Cleanup(c *cli.Command, o *container.Options, co *Options) error { + log.Infof("Starting 'cleanup' for %v", c.Name) + + switch co.configMode { + case "hook": + return cleanupHook(co) + case "config": + return cleanupConfig(o) + default: + return fmt.Errorf("invalid config-mode '%v'", co.configMode) + } +} + +// cleanupHook removes the prestart hook +func cleanupHook(co *Options) error { + log.Infof("Removing prestart hook") + + hookPath := filepath.Join(co.hooksDir, co.hookFilename) + err := os.Remove(hookPath) + if err != nil { + return fmt.Errorf("error removing hook '%v': %v", hookPath, err) + } + + return nil +} + +// cleanupConfig removes the NVIDIA container runtime from the cri-o config +func cleanupConfig(o *container.Options) error { + log.Infof("Reverting config file modifications") + + cfg, err := getRuntimeConfig(o) + if err != nil { + return fmt.Errorf("unable to load config: %v", err) + } + + err = o.Unconfigure(cfg) + if err != nil { + return fmt.Errorf("unable to unconfigure cri-o: %v", err) + } + + err = RestartCrio(o) + if err != nil { + return fmt.Errorf("unable to restart crio: %v", err) + } + + return nil +} + +// RestartCrio restarts crio depending on the value of restartModeFlag +func RestartCrio(o *container.Options) error { + return o.Restart("crio", func(string) error { return fmt.Errorf("supporting crio via signal is unsupported") }) +} + +func GetLowlevelRuntimePaths(o *container.Options) ([]string, error) { + cfg, err := getRuntimeConfig(o) + if err != nil { + return nil, fmt.Errorf("unable to load crio config: %w", err) + } + return engine.GetBinaryPathsForRuntimes(cfg), nil +} + +func getRuntimeConfig(o *container.Options) (engine.Interface, error) { + return crio.New( + crio.WithPath(o.Config), + crio.WithConfigSource( + toml.LoadFirst( + crio.CommandLineSource(o.HostRootMount, o.ExecutablePath), + toml.FromFile(o.Config), + ), + ), + ) +} diff --git a/cmd/nvidia-ctk-installer/container/runtime/docker/docker.go b/cmd/nvidia-ctk-installer/container/runtime/docker/docker.go new file mode 100644 index 000000000..e0987f933 --- /dev/null +++ b/cmd/nvidia-ctk-installer/container/runtime/docker/docker.go @@ -0,0 +1,111 @@ +/** +# Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/ + +package docker + +import ( + "fmt" + + log "github.com/sirupsen/logrus" + cli "github.com/urfave/cli/v3" + + "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk-installer/container" + "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine" + "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine/docker" +) + +const ( + Name = "docker" + + DefaultConfig = "/etc/docker/daemon.json" + DefaultSocket = "/var/run/docker.sock" + DefaultRestartMode = "signal" +) + +type Options struct{} + +func Flags(opts *Options) []cli.Flag { + return nil +} + +// Setup updates docker configuration to include the nvidia runtime and reloads it +func Setup(c *cli.Command, o *container.Options) error { + log.Infof("Starting 'setup' for %v", c.Name) + + cfg, err := getRuntimeConfig(o) + if err != nil { + return fmt.Errorf("unable to load config: %v", err) + } + + err = o.Configure(cfg) + if err != nil { + return fmt.Errorf("unable to configure docker: %v", err) + } + + err = RestartDocker(o) + if err != nil { + return fmt.Errorf("unable to restart docker: %v", err) + } + + log.Infof("Completed 'setup' for %v", c.Name) + + return nil +} + +// Cleanup reverts docker configuration to remove the nvidia runtime and reloads it +func Cleanup(c *cli.Command, o *container.Options) error { + log.Infof("Starting 'cleanup' for %v", c.Name) + + cfg, err := getRuntimeConfig(o) + if err != nil { + return fmt.Errorf("unable to load config: %v", err) + } + + err = o.Unconfigure(cfg) + if err != nil { + return fmt.Errorf("unable to unconfigure docker: %v", err) + } + + err = RestartDocker(o) + if err != nil { + return fmt.Errorf("unable to signal docker: %v", err) + } + + log.Infof("Completed 'cleanup' for %v", c.Name) + + return nil +} + +// RestartDocker restarts docker depending on the value of restartModeFlag +func RestartDocker(o *container.Options) error { + return o.Restart("docker", SignalDocker) +} + +func GetLowlevelRuntimePaths(o *container.Options) ([]string, error) { + cfg, err := docker.New( + docker.WithPath(o.Config), + ) + if err != nil { + return nil, fmt.Errorf("unable to load docker config: %w", err) + } + return engine.GetBinaryPathsForRuntimes(cfg), nil +} + +func getRuntimeConfig(o *container.Options) (engine.Interface, error) { + return docker.New( + docker.WithPath(o.Config), + ) +} diff --git a/tools/container/docker/docker_linux.go b/cmd/nvidia-ctk-installer/container/runtime/docker/docker_linux.go similarity index 99% rename from tools/container/docker/docker_linux.go rename to cmd/nvidia-ctk-installer/container/runtime/docker/docker_linux.go index a4db4aae7..2a0f97291 100644 --- a/tools/container/docker/docker_linux.go +++ b/cmd/nvidia-ctk-installer/container/runtime/docker/docker_linux.go @@ -14,7 +14,7 @@ # limitations under the License. **/ -package main +package docker import ( "fmt" diff --git a/tools/container/docker/docker_other.go b/cmd/nvidia-ctk-installer/container/runtime/docker/docker_other.go similarity index 98% rename from tools/container/docker/docker_other.go rename to cmd/nvidia-ctk-installer/container/runtime/docker/docker_other.go index 5078d649d..7b3ab618d 100644 --- a/tools/container/docker/docker_other.go +++ b/cmd/nvidia-ctk-installer/container/runtime/docker/docker_other.go @@ -17,7 +17,7 @@ # limitations under the License. **/ -package main +package docker import ( "errors" diff --git a/tools/container/docker/docker_test.go b/cmd/nvidia-ctk-installer/container/runtime/docker/docker_test.go similarity index 96% rename from tools/container/docker/docker_test.go rename to cmd/nvidia-ctk-installer/container/runtime/docker/docker_test.go index 20c66d0d9..129cc143b 100644 --- a/tools/container/docker/docker_test.go +++ b/cmd/nvidia-ctk-installer/container/runtime/docker/docker_test.go @@ -14,7 +14,7 @@ # limitations under the License. */ -package main +package docker import ( "encoding/json" @@ -22,8 +22,8 @@ import ( "github.com/stretchr/testify/require" + "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk-installer/container" "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine/docker" - "github.com/NVIDIA/nvidia-container-toolkit/tools/container" ) func TestUpdateConfigDefaultRuntime(t *testing.T) { @@ -52,12 +52,10 @@ func TestUpdateConfigDefaultRuntime(t *testing.T) { } for i, tc := range testCases { - o := &options{ - Options: container.Options{ - RuntimeName: tc.runtimeName, - RuntimeDir: runtimeDir, - SetAsDefault: tc.setAsDefault, - }, + o := &container.Options{ + RuntimeName: tc.runtimeName, + RuntimeDir: runtimeDir, + SetAsDefault: tc.setAsDefault, } config := docker.Config(map[string]interface{}{}) @@ -238,12 +236,10 @@ func TestUpdateConfig(t *testing.T) { for i, tc := range testCases { tc := tc - o := &options{ - Options: container.Options{ - RuntimeName: tc.runtimeName, - RuntimeDir: runtimeDir, - SetAsDefault: tc.setAsDefault, - }, + o := &container.Options{ + RuntimeName: tc.runtimeName, + RuntimeDir: runtimeDir, + SetAsDefault: tc.setAsDefault, } err := o.UpdateConfig(&tc.config) @@ -365,7 +361,7 @@ func TestRevertConfig(t *testing.T) { for i, tc := range testCases { tc := tc - o := &options{} + o := &container.Options{} err := o.RevertConfig(&tc.config) require.NoError(t, err, "%d: %v", i, tc) diff --git a/cmd/nvidia-ctk-installer/container/runtime/runtime.go b/cmd/nvidia-ctk-installer/container/runtime/runtime.go new file mode 100644 index 000000000..320c3e0e1 --- /dev/null +++ b/cmd/nvidia-ctk-installer/container/runtime/runtime.go @@ -0,0 +1,204 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package runtime + +import ( + "fmt" + + "github.com/urfave/cli/v3" + + "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk-installer/container" + "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk-installer/container/runtime/containerd" + "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk-installer/container/runtime/crio" + "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk-installer/container/runtime/docker" + "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk-installer/toolkit" + "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" +) + +const ( + defaultSetAsDefault = true + // defaultRuntimeName specifies the NVIDIA runtime to be use as the default runtime if setting the default runtime is enabled + defaultRuntimeName = "nvidia" + defaultHostRootMount = "/host" + + runtimeSpecificDefault = "RUNTIME_SPECIFIC_DEFAULT" +) + +type Options struct { + container.Options + + containerdOptions containerd.Options + crioOptions crio.Options +} + +func Flags(opts *Options) []cli.Flag { + flags := []cli.Flag{ + &cli.StringFlag{ + Name: "config", + Usage: "Path to the runtime config file", + Value: runtimeSpecificDefault, + Destination: &opts.Config, + Sources: cli.EnvVars("RUNTIME_CONFIG", "CONTAINERD_CONFIG", "DOCKER_CONFIG"), + }, + &cli.StringFlag{ + Name: "executable-path", + Usage: "The path to the runtime executable. This is used to extract the current config", + Destination: &opts.ExecutablePath, + Sources: cli.EnvVars("RUNTIME_EXECUTABLE_PATH"), + }, + &cli.StringFlag{ + Name: "socket", + Usage: "Path to the runtime socket file", + Value: runtimeSpecificDefault, + Destination: &opts.Socket, + Sources: cli.EnvVars("RUNTIME_SOCKET", "CONTAINERD_SOCKET", "DOCKER_SOCKET"), + }, + &cli.StringFlag{ + Name: "restart-mode", + Usage: "Specify how the runtime should be restarted; If 'none' is selected it will not be restarted [signal | systemd | none ]", + Value: runtimeSpecificDefault, + Destination: &opts.RestartMode, + Sources: cli.EnvVars("RUNTIME_RESTART_MODE"), + }, + &cli.BoolFlag{ + Name: "enable-cdi-in-runtime", + Usage: "Enable CDI in the configured runt ime", + Destination: &opts.EnableCDI, + Sources: cli.EnvVars("RUNTIME_ENABLE_CDI"), + }, + &cli.StringFlag{ + Name: "host-root", + Usage: "Specify the path to the host root to be used when restarting the runtime using systemd", + Value: defaultHostRootMount, + Destination: &opts.HostRootMount, + Sources: cli.EnvVars("HOST_ROOT_MOUNT"), + }, + &cli.StringFlag{ + Name: "runtime-name", + Aliases: []string{"nvidia-runtime-name", "runtime-class"}, + Usage: "Specify the name of the `nvidia` runtime. If set-as-default is selected, the runtime is used as the default runtime.", + Value: defaultRuntimeName, + Destination: &opts.RuntimeName, + Sources: cli.EnvVars("NVIDIA_RUNTIME_NAME", "CONTAINERD_RUNTIME_CLASS", "DOCKER_RUNTIME_NAME"), + }, + &cli.BoolFlag{ + Name: "set-as-default", + Usage: "Set the `nvidia` runtime as the default runtime.", + Value: defaultSetAsDefault, + Destination: &opts.SetAsDefault, + Sources: cli.EnvVars("NVIDIA_RUNTIME_SET_AS_DEFAULT", "CONTAINERD_SET_AS_DEFAULT", "DOCKER_SET_AS_DEFAULT"), + Hidden: true, + }, + } + + flags = append(flags, containerd.Flags(&opts.containerdOptions)...) + flags = append(flags, crio.Flags(&opts.crioOptions)...) + + return flags +} + +// Validate checks whether the specified options are valid +func (opts *Options) Validate(logger logger.Interface, c *cli.Command, runtime string, toolkitRoot string, to *toolkit.Options) error { + // We set this option here to ensure that it is available in future calls. + opts.RuntimeDir = toolkitRoot + + if !c.IsSet("enable-cdi-in-runtime") { + opts.EnableCDI = to.CDI.Enabled + } + + if opts.ExecutablePath != "" && opts.RuntimeName == docker.Name { + logger.Warningf("Ignoring executable-path=%q flag for %v", opts.ExecutablePath, opts.RuntimeName) + opts.ExecutablePath = "" + } + + // Apply the runtime-specific config changes. + switch runtime { + case containerd.Name: + if opts.Config == runtimeSpecificDefault { + opts.Config = containerd.DefaultConfig + } + if opts.Socket == runtimeSpecificDefault { + opts.Socket = containerd.DefaultSocket + } + if opts.RestartMode == runtimeSpecificDefault { + opts.RestartMode = containerd.DefaultRestartMode + } + case crio.Name: + if opts.Config == runtimeSpecificDefault { + opts.Config = crio.DefaultConfig + } + if opts.Socket == runtimeSpecificDefault { + opts.Socket = crio.DefaultSocket + } + if opts.RestartMode == runtimeSpecificDefault { + opts.RestartMode = crio.DefaultRestartMode + } + case docker.Name: + if opts.Config == runtimeSpecificDefault { + opts.Config = docker.DefaultConfig + } + if opts.Socket == runtimeSpecificDefault { + opts.Socket = docker.DefaultSocket + } + if opts.RestartMode == runtimeSpecificDefault { + opts.RestartMode = docker.DefaultRestartMode + } + default: + return fmt.Errorf("undefined runtime %v", runtime) + } + + return nil +} + +func Setup(c *cli.Command, opts *Options, runtime string) error { + switch runtime { + case containerd.Name: + return containerd.Setup(c, &opts.Options, &opts.containerdOptions) + case crio.Name: + return crio.Setup(c, &opts.Options, &opts.crioOptions) + case docker.Name: + return docker.Setup(c, &opts.Options) + default: + return fmt.Errorf("undefined runtime %v", runtime) + } +} + +func Cleanup(c *cli.Command, opts *Options, runtime string) error { + switch runtime { + case containerd.Name: + return containerd.Cleanup(c, &opts.Options, &opts.containerdOptions) + case crio.Name: + return crio.Cleanup(c, &opts.Options, &opts.crioOptions) + case docker.Name: + return docker.Cleanup(c, &opts.Options) + default: + return fmt.Errorf("undefined runtime %v", runtime) + } +} + +func GetLowlevelRuntimePaths(opts *Options, runtime string) ([]string, error) { + switch runtime { + case containerd.Name: + return containerd.GetLowlevelRuntimePaths(&opts.Options, &opts.containerdOptions) + case crio.Name: + return crio.GetLowlevelRuntimePaths(&opts.Options) + case docker.Name: + return docker.GetLowlevelRuntimePaths(&opts.Options) + default: + return nil, fmt.Errorf("undefined runtime %v", runtime) + } +} diff --git a/cmd/nvidia-ctk-installer/main.go b/cmd/nvidia-ctk-installer/main.go new file mode 100644 index 000000000..950468672 --- /dev/null +++ b/cmd/nvidia-ctk-installer/main.go @@ -0,0 +1,329 @@ +package main + +import ( + "context" + "fmt" + "os" + "os/signal" + "path/filepath" + "syscall" + + "github.com/urfave/cli/v3" + "golang.org/x/sys/unix" + + "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk-installer/container/runtime" + "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk-installer/toolkit" + "github.com/NVIDIA/nvidia-container-toolkit/internal/info" + "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" + "github.com/NVIDIA/nvidia-container-toolkit/internal/lookup" +) + +const ( + toolkitPidFilename = "toolkit.pid" + defaultPidFile = "/run/nvidia/toolkit/" + toolkitPidFilename + + defaultToolkitInstallDir = "/usr/local/nvidia" + toolkitSubDir = "toolkit" + + defaultRuntime = "docker" +) + +var availableRuntimes = map[string]struct{}{"docker": {}, "crio": {}, "containerd": {}} +var defaultLowLevelRuntimes = []string{"runc", "crun"} + +var waitingForSignal = make(chan bool, 1) +var signalReceived = make(chan bool, 1) + +// options stores the command line arguments +type options struct { + toolkitInstallDir string + + noDaemon bool + runtime string + pidFile string + sourceRoot string + packageType string + + toolkitOptions toolkit.Options + runtimeOptions runtime.Options +} + +func (o options) toolkitRoot() string { + return filepath.Join(o.toolkitInstallDir, toolkitSubDir) +} + +func main() { + logger := logger.New() + c := NewApp(logger) + + // Run the CLI + logger.Infof("Starting %v", c.Name) + if err := c.Run(context.Background(), os.Args); err != nil { + logger.Errorf("error running %v: %v", c.Name, err) + os.Exit(1) + } + + logger.Infof("Completed %v", c.Name) +} + +// An app represents the nvidia-ctk-installer. +type app struct { + logger logger.Interface + + toolkit *toolkit.Installer +} + +// NewApp creates the CLI app fro the specified options. +func NewApp(logger logger.Interface) *cli.Command { + a := app{ + logger: logger, + } + return a.build() +} + +func (a app) build() *cli.Command { + options := options{ + toolkitOptions: toolkit.Options{}, + } + // Create the top-level CLI + c := cli.Command{ + Name: "nvidia-ctk-installer", + Usage: "Install the NVIDIA Container Toolkit and configure the specified runtime to use the `nvidia` runtime.", + Version: info.GetVersionString(), + Before: func(ctx context.Context, cmd *cli.Command) (context.Context, error) { + return ctx, a.Before(cmd, &options) + }, + Action: func(_ context.Context, cmd *cli.Command) error { + return a.Run(cmd, &options) + }, + Flags: []cli.Flag{ + &cli.BoolFlag{ + Name: "no-daemon", + Aliases: []string{"n"}, + Usage: "terminate immediately after setting up the runtime. Note that no cleanup will be performed", + Destination: &options.noDaemon, + Sources: cli.EnvVars("NO_DAEMON"), + }, + &cli.StringFlag{ + Name: "runtime", + Aliases: []string{"r"}, + Usage: "the runtime to setup on this node. One of {'docker', 'crio', 'containerd'}", + Value: defaultRuntime, + Destination: &options.runtime, + Sources: cli.EnvVars("RUNTIME"), + }, + &cli.StringFlag{ + Name: "toolkit-install-dir", + Aliases: []string{"root"}, + Usage: "The directory where the NVIDIA Container Toolkit is to be installed. " + + "The components of the toolkit will be installed to `ROOT`/toolkit. " + + "Note that in the case of a containerized installer, this is the path in the container and it is " + + "recommended that this match the path on the host.", + Value: defaultToolkitInstallDir, + Destination: &options.toolkitInstallDir, + Sources: cli.EnvVars("TOOLKIT_INSTALL_DIR", "ROOT"), + }, + &cli.StringFlag{ + Name: "toolkit-source-root", + Usage: "The folder where the required toolkit artifacts can be found. If this is not specified, the path /artifacts/{{ .ToolkitPackageType }} is used where ToolkitPackageType is the resolved package type", + Destination: &options.sourceRoot, + Sources: cli.EnvVars("TOOLKIT_SOURCE_ROOT"), + }, + &cli.StringFlag{ + Name: "toolkit-package-type", + Usage: "specify the package type to use for the toolkit. One of ['deb', 'rpm', 'auto', '']. If 'auto' or '' are used, the type is inferred automatically.", + Value: "auto", + Destination: &options.packageType, + Sources: cli.EnvVars("TOOLKIT_PACKAGE_TYPE"), + }, + &cli.StringFlag{ + Name: "pid-file", + Value: defaultPidFile, + Usage: "the path to a toolkit.pid file to ensure that only a single configuration instance is running", + Destination: &options.pidFile, + Sources: cli.EnvVars("TOOLKIT_PID_FILE", "PID_FILE"), + }, + }, + } + + // Add the additional flags specific to the toolkit and runtime config. + c.Flags = append(c.Flags, toolkit.Flags(&options.toolkitOptions)...) + c.Flags = append(c.Flags, runtime.Flags(&options.runtimeOptions)...) + + return &c +} + +func (a *app) Before(c *cli.Command, o *options) error { + if o.sourceRoot == "" { + sourceRoot, err := a.resolveSourceRoot(o.runtimeOptions.HostRootMount, o.packageType) + if err != nil { + return fmt.Errorf("failed to resolve source root: %v", err) + } + a.logger.Infof("Resolved source root to %v", sourceRoot) + o.sourceRoot = sourceRoot + } + + a.toolkit = toolkit.NewInstaller( + toolkit.WithLogger(a.logger), + toolkit.WithSourceRoot(o.sourceRoot), + toolkit.WithToolkitRoot(o.toolkitRoot()), + ) + return a.validateFlags(c, o) +} + +func (a *app) validateFlags(c *cli.Command, o *options) error { + if o.toolkitInstallDir == "" { + return fmt.Errorf("the install root must be specified") + } + if _, exists := availableRuntimes[o.runtime]; !exists { + return fmt.Errorf("unknown runtime: %v", o.runtime) + } + if filepath.Base(o.pidFile) != toolkitPidFilename { + return fmt.Errorf("invalid toolkit.pid path %v", o.pidFile) + } + + if err := a.toolkit.ValidateOptions(&o.toolkitOptions); err != nil { + return err + } + if err := o.runtimeOptions.Validate(a.logger, c, o.runtime, o.toolkitRoot(), &o.toolkitOptions); err != nil { + return err + } + return nil +} + +// Run installs the NVIDIA Container Toolkit and updates the requested runtime. +// If the application is run as a daemon, the application waits and unconfigures +// the runtime on termination. +func (a *app) Run(c *cli.Command, o *options) error { + err := a.initialize(o.pidFile) + if err != nil { + return fmt.Errorf("unable to initialize: %v", err) + } + defer a.shutdown(o.pidFile) + + if len(o.toolkitOptions.ContainerRuntimeRuntimes) == 0 { + lowlevelRuntimePaths, err := runtime.GetLowlevelRuntimePaths(&o.runtimeOptions, o.runtime) + if err != nil { + return fmt.Errorf("unable to determine runtime options: %w", err) + } + lowlevelRuntimePaths = append(lowlevelRuntimePaths, defaultLowLevelRuntimes...) + + o.toolkitOptions.ContainerRuntimeRuntimes = lowlevelRuntimePaths + } + + err = a.toolkit.Install(c, &o.toolkitOptions) + if err != nil { + return fmt.Errorf("unable to install toolkit: %v", err) + } + + err = runtime.Setup(c, &o.runtimeOptions, o.runtime) + if err != nil { + return fmt.Errorf("unable to setup runtime: %v", err) + } + + if !o.noDaemon { + err = a.waitForSignal() + if err != nil { + return fmt.Errorf("unable to wait for signal: %v", err) + } + + err = runtime.Cleanup(c, &o.runtimeOptions, o.runtime) + if err != nil { + return fmt.Errorf("unable to cleanup runtime: %v", err) + } + } + + return nil +} + +func (a *app) initialize(pidFile string) error { + a.logger.Infof("Initializing") + + if dir := filepath.Dir(pidFile); dir != "" { + err := os.MkdirAll(dir, 0755) + if err != nil { + return fmt.Errorf("unable to create folder for pidfile: %w", err) + } + } + + f, err := os.Create(pidFile) + if err != nil { + return fmt.Errorf("unable to create pidfile: %v", err) + } + + err = unix.Flock(int(f.Fd()), unix.LOCK_EX|unix.LOCK_NB) + if err != nil { + a.logger.Warningf("Unable to get exclusive lock on '%v'", pidFile) + a.logger.Warningf("This normally means an instance of the NVIDIA toolkit Container is already running, aborting") + return fmt.Errorf("unable to get flock on pidfile: %v", err) + } + + _, err = fmt.Fprintf(f, "%v\n", os.Getpid()) + if err != nil { + return fmt.Errorf("unable to write PID to pidfile: %v", err) + } + + sigs := make(chan os.Signal, 1) + signal.Notify(sigs, syscall.SIGHUP, syscall.SIGINT, syscall.SIGQUIT, syscall.SIGPIPE, syscall.SIGTERM) + go func() { + <-sigs + select { + case <-waitingForSignal: + signalReceived <- true + default: + a.logger.Infof("Signal received, exiting early") + a.shutdown(pidFile) + os.Exit(0) + } + }() + + return nil +} + +func (a *app) waitForSignal() error { + a.logger.Infof("Waiting for signal") + waitingForSignal <- true + <-signalReceived + return nil +} + +func (a *app) shutdown(pidFile string) { + a.logger.Infof("Shutting Down") + + err := os.Remove(pidFile) + if err != nil { + a.logger.Warningf("Unable to remove pidfile: %v", err) + } +} + +func (a *app) resolveSourceRoot(hostRoot string, packageType string) (string, error) { + resolvedPackageType, err := a.resolvePackageType(hostRoot, packageType) + if err != nil { + return "", err + } + switch resolvedPackageType { + case "deb": + return "/artifacts/deb", nil + case "rpm": + return "/artifacts/rpm", nil + default: + return "", fmt.Errorf("invalid package type: %v", resolvedPackageType) + } +} + +func (a *app) resolvePackageType(hostRoot string, packageType string) (rPackageTypes string, rerr error) { + if packageType != "" && packageType != "auto" { + return packageType, nil + } + + locator := lookup.NewExecutableLocator(a.logger, hostRoot) + if candidates, err := locator.Locate("/usr/bin/rpm"); err == nil && len(candidates) > 0 { + return "rpm", nil + } + + if candidates, err := locator.Locate("/usr/bin/dpkg"); err == nil && len(candidates) > 0 { + return "deb", nil + } + + return "deb", nil +} diff --git a/cmd/nvidia-ctk-installer/main_test.go b/cmd/nvidia-ctk-installer/main_test.go new file mode 100644 index 000000000..e08aa867e --- /dev/null +++ b/cmd/nvidia-ctk-installer/main_test.go @@ -0,0 +1,456 @@ +/** +# Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package main + +import ( + "context" + "os" + "path/filepath" + "strings" + "testing" + + testlog "github.com/sirupsen/logrus/hooks/test" + "github.com/stretchr/testify/require" + + "github.com/NVIDIA/nvidia-container-toolkit/internal/test" +) + +func TestApp(t *testing.T) { + t.Setenv("__NVCT_TESTING_DEVICES_ARE_FILES", "true") + logger, _ := testlog.NewNullLogger() + + moduleRoot, err := test.GetModuleRoot() + require.NoError(t, err) + + artifactRoot := filepath.Join(moduleRoot, "testdata", "installer", "artifacts") + hostRoot := filepath.Join(moduleRoot, "testdata", "lookup", "rootfs-1") + + testCases := []struct { + description string + args []string + expectedToolkitConfig string + expectedRuntimeConfig string + }{ + { + description: "no args", + expectedToolkitConfig: `accept-nvidia-visible-devices-as-volume-mounts = false +accept-nvidia-visible-devices-envvar-when-unprivileged = true +disable-require = false +supported-driver-capabilities = "compat32,compute,display,graphics,ngx,utility,video" +swarm-resource = "" + +[nvidia-container-cli] + debug = "" + environment = [] + ldcache = "" + ldconfig = "@/run/nvidia/driver/sbin/ldconfig" + load-kmods = true + no-cgroups = false + path = "{{ .toolkitRoot }}/toolkit/nvidia-container-cli" + root = "/run/nvidia/driver" + user = "" + +[nvidia-container-runtime] + debug = "/dev/null" + log-level = "info" + mode = "auto" + runtimes = ["runc", "crun"] + + [nvidia-container-runtime.modes] + + [nvidia-container-runtime.modes.cdi] + annotation-prefixes = ["cdi.k8s.io/"] + default-kind = "nvidia.com/gpu" + spec-dirs = ["/etc/cdi", "/var/run/cdi"] + + [nvidia-container-runtime.modes.csv] + mount-spec-path = "/etc/nvidia-container-runtime/host-files-for-container.d" + + [nvidia-container-runtime.modes.legacy] + cuda-compat-mode = "ldconfig" + +[nvidia-container-runtime-hook] + path = "{{ .toolkitRoot }}/toolkit/nvidia-container-runtime-hook" + skip-mode-detection = true + +[nvidia-ctk] + path = "{{ .toolkitRoot }}/toolkit/nvidia-ctk" +`, + expectedRuntimeConfig: `{ + "default-runtime": "nvidia", + "runtimes": { + "nvidia": { + "args": [], + "path": "{{ .toolkitRoot }}/toolkit/nvidia-container-runtime" + }, + "nvidia-cdi": { + "args": [], + "path": "{{ .toolkitRoot }}/toolkit/nvidia-container-runtime.cdi" + }, + "nvidia-legacy": { + "args": [], + "path": "{{ .toolkitRoot }}/toolkit/nvidia-container-runtime.legacy" + } + } +}`, + }, + { + description: "CDI enabled enables CDI in docker", + args: []string{"--cdi-enabled", "--create-device-nodes=none"}, + expectedToolkitConfig: `accept-nvidia-visible-devices-as-volume-mounts = false +accept-nvidia-visible-devices-envvar-when-unprivileged = true +disable-require = false +supported-driver-capabilities = "compat32,compute,display,graphics,ngx,utility,video" +swarm-resource = "" + +[nvidia-container-cli] + debug = "" + environment = [] + ldcache = "" + ldconfig = "@/run/nvidia/driver/sbin/ldconfig" + load-kmods = true + no-cgroups = false + path = "{{ .toolkitRoot }}/toolkit/nvidia-container-cli" + root = "/run/nvidia/driver" + user = "" + +[nvidia-container-runtime] + debug = "/dev/null" + log-level = "info" + mode = "auto" + runtimes = ["runc", "crun"] + + [nvidia-container-runtime.modes] + + [nvidia-container-runtime.modes.cdi] + annotation-prefixes = ["cdi.k8s.io/"] + default-kind = "nvidia.com/gpu" + spec-dirs = ["/etc/cdi", "/var/run/cdi"] + + [nvidia-container-runtime.modes.csv] + mount-spec-path = "/etc/nvidia-container-runtime/host-files-for-container.d" + + [nvidia-container-runtime.modes.legacy] + cuda-compat-mode = "ldconfig" + +[nvidia-container-runtime-hook] + path = "{{ .toolkitRoot }}/toolkit/nvidia-container-runtime-hook" + skip-mode-detection = true + +[nvidia-ctk] + path = "{{ .toolkitRoot }}/toolkit/nvidia-ctk" +`, + expectedRuntimeConfig: `{ + "default-runtime": "nvidia", + "features": { + "cdi": true + }, + "runtimes": { + "nvidia": { + "args": [], + "path": "{{ .toolkitRoot }}/toolkit/nvidia-container-runtime" + }, + "nvidia-cdi": { + "args": [], + "path": "{{ .toolkitRoot }}/toolkit/nvidia-container-runtime.cdi" + }, + "nvidia-legacy": { + "args": [], + "path": "{{ .toolkitRoot }}/toolkit/nvidia-container-runtime.legacy" + } + } +}`, + }, + { + description: "--enable-cdi-in-runtime=false overrides --cdi-enabled in Docker", + args: []string{"--cdi-enabled", "--create-device-nodes=none", "--enable-cdi-in-runtime=false"}, + expectedToolkitConfig: `accept-nvidia-visible-devices-as-volume-mounts = false +accept-nvidia-visible-devices-envvar-when-unprivileged = true +disable-require = false +supported-driver-capabilities = "compat32,compute,display,graphics,ngx,utility,video" +swarm-resource = "" + +[nvidia-container-cli] + debug = "" + environment = [] + ldcache = "" + ldconfig = "@/run/nvidia/driver/sbin/ldconfig" + load-kmods = true + no-cgroups = false + path = "{{ .toolkitRoot }}/toolkit/nvidia-container-cli" + root = "/run/nvidia/driver" + user = "" + +[nvidia-container-runtime] + debug = "/dev/null" + log-level = "info" + mode = "auto" + runtimes = ["runc", "crun"] + + [nvidia-container-runtime.modes] + + [nvidia-container-runtime.modes.cdi] + annotation-prefixes = ["cdi.k8s.io/"] + default-kind = "nvidia.com/gpu" + spec-dirs = ["/etc/cdi", "/var/run/cdi"] + + [nvidia-container-runtime.modes.csv] + mount-spec-path = "/etc/nvidia-container-runtime/host-files-for-container.d" + + [nvidia-container-runtime.modes.legacy] + cuda-compat-mode = "ldconfig" + +[nvidia-container-runtime-hook] + path = "{{ .toolkitRoot }}/toolkit/nvidia-container-runtime-hook" + skip-mode-detection = true + +[nvidia-ctk] + path = "{{ .toolkitRoot }}/toolkit/nvidia-ctk" +`, + expectedRuntimeConfig: `{ + "default-runtime": "nvidia", + "runtimes": { + "nvidia": { + "args": [], + "path": "{{ .toolkitRoot }}/toolkit/nvidia-container-runtime" + }, + "nvidia-cdi": { + "args": [], + "path": "{{ .toolkitRoot }}/toolkit/nvidia-container-runtime.cdi" + }, + "nvidia-legacy": { + "args": [], + "path": "{{ .toolkitRoot }}/toolkit/nvidia-container-runtime.legacy" + } + } +}`, + }, + { + description: "CDI enabled enables CDI in containerd", + args: []string{"--cdi-enabled", "--runtime=containerd"}, + expectedToolkitConfig: `accept-nvidia-visible-devices-as-volume-mounts = false +accept-nvidia-visible-devices-envvar-when-unprivileged = true +disable-require = false +supported-driver-capabilities = "compat32,compute,display,graphics,ngx,utility,video" +swarm-resource = "" + +[nvidia-container-cli] + debug = "" + environment = [] + ldcache = "" + ldconfig = "@/run/nvidia/driver/sbin/ldconfig" + load-kmods = true + no-cgroups = false + path = "{{ .toolkitRoot }}/toolkit/nvidia-container-cli" + root = "/run/nvidia/driver" + user = "" + +[nvidia-container-runtime] + debug = "/dev/null" + log-level = "info" + mode = "auto" + runtimes = ["runc", "crun"] + + [nvidia-container-runtime.modes] + + [nvidia-container-runtime.modes.cdi] + annotation-prefixes = ["cdi.k8s.io/"] + default-kind = "nvidia.com/gpu" + spec-dirs = ["/etc/cdi", "/var/run/cdi"] + + [nvidia-container-runtime.modes.csv] + mount-spec-path = "/etc/nvidia-container-runtime/host-files-for-container.d" + + [nvidia-container-runtime.modes.legacy] + cuda-compat-mode = "ldconfig" + +[nvidia-container-runtime-hook] + path = "{{ .toolkitRoot }}/toolkit/nvidia-container-runtime-hook" + skip-mode-detection = true + +[nvidia-ctk] + path = "{{ .toolkitRoot }}/toolkit/nvidia-ctk" +`, + expectedRuntimeConfig: `version = 2 + +[plugins] + + [plugins."io.containerd.grpc.v1.cri"] + enable_cdi = true + + [plugins."io.containerd.grpc.v1.cri".containerd] + default_runtime_name = "nvidia" + + [plugins."io.containerd.grpc.v1.cri".containerd.runtimes] + + [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia] + privileged_without_host_devices = false + runtime_engine = "" + runtime_root = "" + runtime_type = "io.containerd.runc.v2" + + [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia.options] + BinaryName = "{{ .toolkitRoot }}/toolkit/nvidia-container-runtime" + + [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia-cdi] + privileged_without_host_devices = false + runtime_engine = "" + runtime_root = "" + runtime_type = "io.containerd.runc.v2" + + [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia-cdi.options] + BinaryName = "{{ .toolkitRoot }}/toolkit/nvidia-container-runtime.cdi" + + [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia-legacy] + privileged_without_host_devices = false + runtime_engine = "" + runtime_root = "" + runtime_type = "io.containerd.runc.v2" + + [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia-legacy.options] + BinaryName = "{{ .toolkitRoot }}/toolkit/nvidia-container-runtime.legacy" +`, + }, + { + description: "--enable-cdi-in-runtime=false overrides --cdi-enabled in containerd", + args: []string{"--cdi-enabled", "--create-device-nodes=none", "--enable-cdi-in-runtime=false", "--runtime=containerd"}, + expectedToolkitConfig: `accept-nvidia-visible-devices-as-volume-mounts = false +accept-nvidia-visible-devices-envvar-when-unprivileged = true +disable-require = false +supported-driver-capabilities = "compat32,compute,display,graphics,ngx,utility,video" +swarm-resource = "" + +[nvidia-container-cli] + debug = "" + environment = [] + ldcache = "" + ldconfig = "@/run/nvidia/driver/sbin/ldconfig" + load-kmods = true + no-cgroups = false + path = "{{ .toolkitRoot }}/toolkit/nvidia-container-cli" + root = "/run/nvidia/driver" + user = "" + +[nvidia-container-runtime] + debug = "/dev/null" + log-level = "info" + mode = "auto" + runtimes = ["runc", "crun"] + + [nvidia-container-runtime.modes] + + [nvidia-container-runtime.modes.cdi] + annotation-prefixes = ["cdi.k8s.io/"] + default-kind = "nvidia.com/gpu" + spec-dirs = ["/etc/cdi", "/var/run/cdi"] + + [nvidia-container-runtime.modes.csv] + mount-spec-path = "/etc/nvidia-container-runtime/host-files-for-container.d" + + [nvidia-container-runtime.modes.legacy] + cuda-compat-mode = "ldconfig" + +[nvidia-container-runtime-hook] + path = "{{ .toolkitRoot }}/toolkit/nvidia-container-runtime-hook" + skip-mode-detection = true + +[nvidia-ctk] + path = "{{ .toolkitRoot }}/toolkit/nvidia-ctk" +`, + expectedRuntimeConfig: `version = 2 + +[plugins] + + [plugins."io.containerd.grpc.v1.cri"] + + [plugins."io.containerd.grpc.v1.cri".containerd] + default_runtime_name = "nvidia" + + [plugins."io.containerd.grpc.v1.cri".containerd.runtimes] + + [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia] + privileged_without_host_devices = false + runtime_engine = "" + runtime_root = "" + runtime_type = "io.containerd.runc.v2" + + [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia.options] + BinaryName = "{{ .toolkitRoot }}/toolkit/nvidia-container-runtime" + + [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia-cdi] + privileged_without_host_devices = false + runtime_engine = "" + runtime_root = "" + runtime_type = "io.containerd.runc.v2" + + [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia-cdi.options] + BinaryName = "{{ .toolkitRoot }}/toolkit/nvidia-container-runtime.cdi" + + [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia-legacy] + privileged_without_host_devices = false + runtime_engine = "" + runtime_root = "" + runtime_type = "io.containerd.runc.v2" + + [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia-legacy.options] + BinaryName = "{{ .toolkitRoot }}/toolkit/nvidia-container-runtime.legacy" +`, + }, + } + + for _, tc := range testCases { + t.Run(tc.description, func(t *testing.T) { + testRoot := t.TempDir() + + cdiOutputDir := filepath.Join(testRoot, "/var/run/cdi") + runtimeConfigFile := filepath.Join(testRoot, "config.file") + + toolkitRoot := filepath.Join(testRoot, "toolkit-test") + toolkitConfigFile := filepath.Join(toolkitRoot, "toolkit/.config/nvidia-container-runtime/config.toml") + + app := NewApp(logger) + + testArgs := []string{ + "nvidia-ctk-installer", + "--toolkit-install-dir=" + toolkitRoot, + "--no-daemon", + "--cdi-output-dir=" + cdiOutputDir, + "--config=" + runtimeConfigFile, + "--create-device-nodes=none", + "--driver-root-ctr-path=" + hostRoot, + "--pid-file=" + filepath.Join(testRoot, "toolkit.pid"), + "--restart-mode=none", + "--toolkit-source-root=" + filepath.Join(artifactRoot, "deb"), + } + + err := app.Run(context.Background(), append(testArgs, tc.args...)) + + require.NoError(t, err) + + require.FileExists(t, toolkitConfigFile) + toolkitConfigFileContents, err := os.ReadFile(toolkitConfigFile) + require.NoError(t, err) + require.EqualValues(t, strings.ReplaceAll(tc.expectedToolkitConfig, "{{ .toolkitRoot }}", toolkitRoot), string(toolkitConfigFileContents)) + + require.FileExists(t, runtimeConfigFile) + runtimeConfigFileContents, err := os.ReadFile(runtimeConfigFile) + require.NoError(t, err) + require.EqualValues(t, strings.ReplaceAll(tc.expectedRuntimeConfig, "{{ .toolkitRoot }}", toolkitRoot), string(runtimeConfigFileContents)) + }) + } + +} diff --git a/cmd/nvidia-ctk-installer/toolkit/installer/artifact-root.go b/cmd/nvidia-ctk-installer/toolkit/installer/artifact-root.go new file mode 100644 index 000000000..349f35184 --- /dev/null +++ b/cmd/nvidia-ctk-installer/toolkit/installer/artifact-root.go @@ -0,0 +1,85 @@ +/** +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package installer + +import ( + "fmt" + "path/filepath" + + "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" + "github.com/NVIDIA/nvidia-container-toolkit/internal/lookup" +) + +// An artifactRoot is used as a source for installed artifacts. +// It is refined by a directory path, a library locator, and an executable locator. +type artifactRoot struct { + path string + libraries lookup.Locator + executables lookup.Locator +} + +func newArtifactRoot(logger logger.Interface, rootDirectoryPath string) (*artifactRoot, error) { + relativeLibrarySearchPaths := []string{ + "/usr/lib64", + "/usr/lib/x86_64-linux-gnu", + "/usr/lib/aarch64-linux-gnu", + } + var librarySearchPaths []string + for _, l := range relativeLibrarySearchPaths { + librarySearchPaths = append(librarySearchPaths, filepath.Join(rootDirectoryPath, l)) + } + + a := artifactRoot{ + path: rootDirectoryPath, + libraries: lookup.NewLibraryLocator( + lookup.WithLogger(logger), + lookup.WithCount(1), + lookup.WithSearchPaths(librarySearchPaths...), + ), + executables: lookup.NewExecutableLocator( + logger, + rootDirectoryPath, + ), + } + + return &a, nil +} + +func (r *artifactRoot) findLibrary(name string) (string, error) { + candidates, err := r.libraries.Locate(name) + if err != nil { + return "", fmt.Errorf("error locating library: %w", err) + } + if len(candidates) == 0 { + return "", fmt.Errorf("library %v not found", name) + } + + return candidates[0], nil +} + +func (r *artifactRoot) findExecutable(name string) (string, error) { + candidates, err := r.executables.Locate(name) + if err != nil { + return "", fmt.Errorf("error locating executable: %w", err) + } + if len(candidates) == 0 { + return "", fmt.Errorf("executable %v not found", name) + } + + return candidates[0], nil +} diff --git a/cmd/nvidia-ctk-installer/toolkit/installer/directory.go b/cmd/nvidia-ctk-installer/toolkit/installer/directory.go new file mode 100644 index 000000000..496996b67 --- /dev/null +++ b/cmd/nvidia-ctk-installer/toolkit/installer/directory.go @@ -0,0 +1,47 @@ +/** +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package installer + +import ( + "fmt" + "os" + + "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" +) + +type createDirectory struct { + logger logger.Interface +} + +func (t *ToolkitInstaller) createDirectory() Installer { + return &createDirectory{ + logger: t.logger, + } +} + +func (d *createDirectory) Install(dir string) error { + if dir == "" { + return nil + } + d.logger.Infof("Creating directory '%v'", dir) + err := os.MkdirAll(dir, 0755) + if err != nil { + return fmt.Errorf("error creating directory: %v", err) + } + return nil +} diff --git a/cmd/nvidia-ctk-installer/toolkit/installer/executables.go b/cmd/nvidia-ctk-installer/toolkit/installer/executables.go new file mode 100644 index 000000000..2992ca83e --- /dev/null +++ b/cmd/nvidia-ctk-installer/toolkit/installer/executables.go @@ -0,0 +1,179 @@ +/** +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package installer + +import ( + "bytes" + "fmt" + "html/template" + "io" + "path/filepath" + "strings" + + log "github.com/sirupsen/logrus" + + "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk-installer/container/operator" + "github.com/NVIDIA/nvidia-container-toolkit/internal/config" +) + +type executable struct { + requiresKernelModule bool + path string + symlink string + env map[string]string +} + +func (t *ToolkitInstaller) collectExecutables(destDir string) ([]Installer, error) { + configFilePath := t.ConfigFilePath(destDir) + + executables := []executable{ + { + path: "nvidia-ctk", + }, + { + path: "nvidia-cdi-hook", + }, + } + for _, runtime := range operator.GetRuntimes() { + e := executable{ + path: runtime.Path, + requiresKernelModule: true, + env: map[string]string{ + config.FilePathOverrideEnvVar: configFilePath, + }, + } + executables = append(executables, e) + } + executables = append(executables, + executable{ + path: "nvidia-container-cli", + env: map[string]string{"LD_LIBRARY_PATH": destDir + ":$LD_LIBRARY_PATH"}, + }, + ) + + executables = append(executables, + executable{ + path: "nvidia-container-runtime-hook", + symlink: "nvidia-container-toolkit", + env: map[string]string{ + config.FilePathOverrideEnvVar: configFilePath, + }, + }, + ) + + var installers []Installer + for _, executable := range executables { + executablePath, err := t.artifactRoot.findExecutable(executable.path) + if err != nil { + if t.ignoreErrors { + log.Errorf("Ignoring error: %v", err) + continue + } + return nil, err + } + + wrappedExecutableFilename := filepath.Base(executablePath) + dotRealFilename := wrappedExecutableFilename + ".real" + + w := &wrapper{ + Source: executablePath, + WrappedExecutable: dotRealFilename, + CheckModules: executable.requiresKernelModule, + Envvars: map[string]string{ + "PATH": strings.Join([]string{destDir, "$PATH"}, ":"), + }, + } + for k, v := range executable.env { + w.Envvars[k] = v + } + + installers = append(installers, w) + + if executable.symlink == "" { + continue + } + link := symlink{ + linkname: executable.symlink, + target: filepath.Base(executablePath), + } + installers = append(installers, link) + } + + return installers, nil + +} + +type wrapper struct { + Source string + Envvars map[string]string + WrappedExecutable string + CheckModules bool +} + +type render struct { + *wrapper + DestDir string +} + +func (w *wrapper) Install(destDir string) error { + // Copy the executable with a .real extension. + mode, err := installFile(w.Source, filepath.Join(destDir, w.WrappedExecutable)) + if err != nil { + return err + } + + // Create a wrapper file. + r := render{ + wrapper: w, + DestDir: destDir, + } + content, err := r.render() + if err != nil { + return fmt.Errorf("failed to render wrapper: %w", err) + } + wrapperFile := filepath.Join(destDir, filepath.Base(w.Source)) + return installContent(content, wrapperFile, mode|0111) +} + +func (w *render) render() (io.Reader, error) { + wrapperTemplate := `#! /bin/sh +{{- if (.CheckModules) }} +cat /proc/modules | grep -e "^nvidia " >/dev/null 2>&1 +if [ "${?}" != "0" ]; then + echo "nvidia driver modules are not yet loaded, invoking runc directly" + exec runc "$@" +fi +{{- end }} +{{- range $key, $value := .Envvars }} +{{$key}}={{$value}} \ +{{- end }} + {{ .DestDir }}/{{ .WrappedExecutable }} \ + "$@" +` + + var content bytes.Buffer + tmpl, err := template.New("wrapper").Parse(wrapperTemplate) + if err != nil { + return nil, err + } + if err := tmpl.Execute(&content, w); err != nil { + return nil, err + } + + return &content, nil +} diff --git a/cmd/nvidia-ctk-installer/toolkit/installer/executables_test.go b/cmd/nvidia-ctk-installer/toolkit/installer/executables_test.go new file mode 100644 index 000000000..dd44f4da3 --- /dev/null +++ b/cmd/nvidia-ctk-installer/toolkit/installer/executables_test.go @@ -0,0 +1,91 @@ +/** +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package installer + +import ( + "bytes" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestWrapperRender(t *testing.T) { + testCases := []struct { + description string + w *wrapper + expected string + }{ + { + description: "executable is added", + w: &wrapper{ + WrappedExecutable: "some-runtime", + }, + expected: `#! /bin/sh + /dest-dir/some-runtime \ + "$@" +`, + }, + { + description: "module check is added", + w: &wrapper{ + WrappedExecutable: "some-runtime", + CheckModules: true, + }, + expected: `#! /bin/sh +cat /proc/modules | grep -e "^nvidia " >/dev/null 2>&1 +if [ "${?}" != "0" ]; then + echo "nvidia driver modules are not yet loaded, invoking runc directly" + exec runc "$@" +fi + /dest-dir/some-runtime \ + "$@" +`, + }, + { + description: "environment is added", + w: &wrapper{ + WrappedExecutable: "some-runtime", + Envvars: map[string]string{ + "PATH": "/foo/bar/baz", + }, + }, + expected: `#! /bin/sh +PATH=/foo/bar/baz \ + /dest-dir/some-runtime \ + "$@" +`, + }, + } + + for _, tc := range testCases { + t.Run(tc.description, func(t *testing.T) { + r := render{ + wrapper: tc.w, + DestDir: "/dest-dir", + } + reader, err := r.render() + require.NoError(t, err) + + var content bytes.Buffer + _, err = content.ReadFrom(reader) + require.NoError(t, err) + + require.Equal(t, tc.expected, content.String()) + }) + } +} diff --git a/cmd/nvidia-ctk-installer/toolkit/installer/file-installer_mock.go b/cmd/nvidia-ctk-installer/toolkit/installer/file-installer_mock.go new file mode 100644 index 000000000..e04409460 --- /dev/null +++ b/cmd/nvidia-ctk-installer/toolkit/installer/file-installer_mock.go @@ -0,0 +1,188 @@ +// Code generated by moq; DO NOT EDIT. +// github.com/matryer/moq + +package installer + +import ( + "io" + "os" + "sync" +) + +// Ensure, that fileInstallerMock does implement fileInstaller. +// If this is not the case, regenerate this file with moq. +var _ fileInstaller = &fileInstallerMock{} + +// fileInstallerMock is a mock implementation of fileInstaller. +// +// func TestSomethingThatUsesfileInstaller(t *testing.T) { +// +// // make and configure a mocked fileInstaller +// mockedfileInstaller := &fileInstallerMock{ +// installContentFunc: func(reader io.Reader, s string, v os.FileMode) error { +// panic("mock out the installContent method") +// }, +// installFileFunc: func(s1 string, s2 string) (os.FileMode, error) { +// panic("mock out the installFile method") +// }, +// installSymlinkFunc: func(s1 string, s2 string) error { +// panic("mock out the installSymlink method") +// }, +// } +// +// // use mockedfileInstaller in code that requires fileInstaller +// // and then make assertions. +// +// } +type fileInstallerMock struct { + // installContentFunc mocks the installContent method. + installContentFunc func(reader io.Reader, s string, v os.FileMode) error + + // installFileFunc mocks the installFile method. + installFileFunc func(s1 string, s2 string) (os.FileMode, error) + + // installSymlinkFunc mocks the installSymlink method. + installSymlinkFunc func(s1 string, s2 string) error + + // calls tracks calls to the methods. + calls struct { + // installContent holds details about calls to the installContent method. + installContent []struct { + // Reader is the reader argument value. + Reader io.Reader + // S is the s argument value. + S string + // V is the v argument value. + V os.FileMode + } + // installFile holds details about calls to the installFile method. + installFile []struct { + // S1 is the s1 argument value. + S1 string + // S2 is the s2 argument value. + S2 string + } + // installSymlink holds details about calls to the installSymlink method. + installSymlink []struct { + // S1 is the s1 argument value. + S1 string + // S2 is the s2 argument value. + S2 string + } + } + lockinstallContent sync.RWMutex + lockinstallFile sync.RWMutex + lockinstallSymlink sync.RWMutex +} + +// installContent calls installContentFunc. +func (mock *fileInstallerMock) installContent(reader io.Reader, s string, v os.FileMode) error { + if mock.installContentFunc == nil { + panic("fileInstallerMock.installContentFunc: method is nil but fileInstaller.installContent was just called") + } + callInfo := struct { + Reader io.Reader + S string + V os.FileMode + }{ + Reader: reader, + S: s, + V: v, + } + mock.lockinstallContent.Lock() + mock.calls.installContent = append(mock.calls.installContent, callInfo) + mock.lockinstallContent.Unlock() + return mock.installContentFunc(reader, s, v) +} + +// installContentCalls gets all the calls that were made to installContent. +// Check the length with: +// +// len(mockedfileInstaller.installContentCalls()) +func (mock *fileInstallerMock) installContentCalls() []struct { + Reader io.Reader + S string + V os.FileMode +} { + var calls []struct { + Reader io.Reader + S string + V os.FileMode + } + mock.lockinstallContent.RLock() + calls = mock.calls.installContent + mock.lockinstallContent.RUnlock() + return calls +} + +// installFile calls installFileFunc. +func (mock *fileInstallerMock) installFile(s1 string, s2 string) (os.FileMode, error) { + if mock.installFileFunc == nil { + panic("fileInstallerMock.installFileFunc: method is nil but fileInstaller.installFile was just called") + } + callInfo := struct { + S1 string + S2 string + }{ + S1: s1, + S2: s2, + } + mock.lockinstallFile.Lock() + mock.calls.installFile = append(mock.calls.installFile, callInfo) + mock.lockinstallFile.Unlock() + return mock.installFileFunc(s1, s2) +} + +// installFileCalls gets all the calls that were made to installFile. +// Check the length with: +// +// len(mockedfileInstaller.installFileCalls()) +func (mock *fileInstallerMock) installFileCalls() []struct { + S1 string + S2 string +} { + var calls []struct { + S1 string + S2 string + } + mock.lockinstallFile.RLock() + calls = mock.calls.installFile + mock.lockinstallFile.RUnlock() + return calls +} + +// installSymlink calls installSymlinkFunc. +func (mock *fileInstallerMock) installSymlink(s1 string, s2 string) error { + if mock.installSymlinkFunc == nil { + panic("fileInstallerMock.installSymlinkFunc: method is nil but fileInstaller.installSymlink was just called") + } + callInfo := struct { + S1 string + S2 string + }{ + S1: s1, + S2: s2, + } + mock.lockinstallSymlink.Lock() + mock.calls.installSymlink = append(mock.calls.installSymlink, callInfo) + mock.lockinstallSymlink.Unlock() + return mock.installSymlinkFunc(s1, s2) +} + +// installSymlinkCalls gets all the calls that were made to installSymlink. +// Check the length with: +// +// len(mockedfileInstaller.installSymlinkCalls()) +func (mock *fileInstallerMock) installSymlinkCalls() []struct { + S1 string + S2 string +} { + var calls []struct { + S1 string + S2 string + } + mock.lockinstallSymlink.RLock() + calls = mock.calls.installSymlink + mock.lockinstallSymlink.RUnlock() + return calls +} diff --git a/cmd/nvidia-ctk-installer/toolkit/installer/installer.go b/cmd/nvidia-ctk-installer/toolkit/installer/installer.go new file mode 100644 index 000000000..76faf0113 --- /dev/null +++ b/cmd/nvidia-ctk-installer/toolkit/installer/installer.go @@ -0,0 +1,172 @@ +/** +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package installer + +import ( + "errors" + "fmt" + "io" + "io/fs" + "os" + "path/filepath" + + "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" +) + +//go:generate moq -rm -fmt=goimports -out installer_mock.go . Installer +type Installer interface { + Install(string) error +} + +type ToolkitInstaller struct { + logger logger.Interface + ignoreErrors bool + sourceRoot string + + artifactRoot *artifactRoot + + ensureTargetDirectory Installer +} + +var _ Installer = (*ToolkitInstaller)(nil) + +// New creates a toolkit installer with the specified options. +func New(opts ...Option) (*ToolkitInstaller, error) { + t := &ToolkitInstaller{ + sourceRoot: "/", + } + for _, opt := range opts { + opt(t) + } + + if t.logger == nil { + t.logger = logger.New() + } + if t.artifactRoot == nil { + artifactRoot, err := newArtifactRoot(t.logger, t.sourceRoot) + if err != nil { + return nil, err + } + t.artifactRoot = artifactRoot + } + + if t.ensureTargetDirectory == nil { + t.ensureTargetDirectory = t.createDirectory() + } + + return t, nil +} + +// Install ensures that the required toolkit files are installed in the specified directory. +func (t *ToolkitInstaller) Install(destDir string) error { + var installers []Installer + + installers = append(installers, t.ensureTargetDirectory) + + libraries, err := t.collectLibraries() + if err != nil { + return fmt.Errorf("failed to collect libraries: %w", err) + } + installers = append(installers, libraries...) + + executables, err := t.collectExecutables(destDir) + if err != nil { + return fmt.Errorf("failed to collect executables: %w", err) + } + installers = append(installers, executables...) + + var errs error + for _, i := range installers { + errs = errors.Join(errs, i.Install(destDir)) + } + + return errs +} + +func (t *ToolkitInstaller) ConfigFilePath(destDir string) string { + toolkitConfigDir := filepath.Join(destDir, ".config", "nvidia-container-runtime") + return filepath.Join(toolkitConfigDir, "config.toml") +} + +type symlink struct { + linkname string + target string +} + +func (s symlink) Install(destDir string) error { + symlinkPath := filepath.Join(destDir, s.linkname) + return installSymlink(s.target, symlinkPath) +} + +//go:generate moq -rm -fmt=goimports -out file-installer_mock.go . fileInstaller +type fileInstaller interface { + installContent(io.Reader, string, os.FileMode) error + installFile(string, string) (os.FileMode, error) + installSymlink(string, string) error +} + +var installSymlink = installSymlinkStub + +func installSymlinkStub(target string, link string) error { + err := os.Symlink(target, link) + if err != nil { + return fmt.Errorf("error creating symlink '%v' => '%v': %v", link, target, err) + } + return nil +} + +var installFile = installFileStub + +func installFileStub(src string, dest string) (os.FileMode, error) { + sourceInfo, err := os.Stat(src) + if err != nil { + return 0, fmt.Errorf("error getting file info for '%v': %v", src, err) + } + + source, err := os.Open(src) + if err != nil { + return 0, fmt.Errorf("error opening source: %w", err) + } + defer source.Close() + + mode := sourceInfo.Mode() + if err := installContent(source, dest, mode); err != nil { + return 0, err + } + return mode, nil +} + +var installContent = installContentStub + +func installContentStub(content io.Reader, dest string, mode fs.FileMode) error { + destination, err := os.Create(dest) + if err != nil { + return fmt.Errorf("error creating destination: %w", err) + } + defer destination.Close() + + _, err = io.Copy(destination, content) + if err != nil { + return fmt.Errorf("error copying file: %w", err) + } + err = os.Chmod(dest, mode) + if err != nil { + return fmt.Errorf("error setting mode for '%v': %v", dest, err) + } + return nil +} diff --git a/cmd/nvidia-ctk-installer/toolkit/installer/installer_mock.go b/cmd/nvidia-ctk-installer/toolkit/installer/installer_mock.go new file mode 100644 index 000000000..34ae7ce64 --- /dev/null +++ b/cmd/nvidia-ctk-installer/toolkit/installer/installer_mock.go @@ -0,0 +1,74 @@ +// Code generated by moq; DO NOT EDIT. +// github.com/matryer/moq + +package installer + +import ( + "sync" +) + +// Ensure, that InstallerMock does implement Installer. +// If this is not the case, regenerate this file with moq. +var _ Installer = &InstallerMock{} + +// InstallerMock is a mock implementation of Installer. +// +// func TestSomethingThatUsesInstaller(t *testing.T) { +// +// // make and configure a mocked Installer +// mockedInstaller := &InstallerMock{ +// InstallFunc: func(s string) error { +// panic("mock out the Install method") +// }, +// } +// +// // use mockedInstaller in code that requires Installer +// // and then make assertions. +// +// } +type InstallerMock struct { + // InstallFunc mocks the Install method. + InstallFunc func(s string) error + + // calls tracks calls to the methods. + calls struct { + // Install holds details about calls to the Install method. + Install []struct { + // S is the s argument value. + S string + } + } + lockInstall sync.RWMutex +} + +// Install calls InstallFunc. +func (mock *InstallerMock) Install(s string) error { + if mock.InstallFunc == nil { + panic("InstallerMock.InstallFunc: method is nil but Installer.Install was just called") + } + callInfo := struct { + S string + }{ + S: s, + } + mock.lockInstall.Lock() + mock.calls.Install = append(mock.calls.Install, callInfo) + mock.lockInstall.Unlock() + return mock.InstallFunc(s) +} + +// InstallCalls gets all the calls that were made to Install. +// Check the length with: +// +// len(mockedInstaller.InstallCalls()) +func (mock *InstallerMock) InstallCalls() []struct { + S string +} { + var calls []struct { + S string + } + mock.lockInstall.RLock() + calls = mock.calls.Install + mock.lockInstall.RUnlock() + return calls +} diff --git a/cmd/nvidia-ctk-installer/toolkit/installer/installer_test.go b/cmd/nvidia-ctk-installer/toolkit/installer/installer_test.go new file mode 100644 index 000000000..a20672585 --- /dev/null +++ b/cmd/nvidia-ctk-installer/toolkit/installer/installer_test.go @@ -0,0 +1,251 @@ +/** +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package installer + +import ( + "bytes" + "fmt" + "io" + "io/fs" + "os" + "path/filepath" + "testing" + + testlog "github.com/sirupsen/logrus/hooks/test" + "github.com/stretchr/testify/require" + + "github.com/NVIDIA/nvidia-container-toolkit/internal/lookup" +) + +func TestToolkitInstaller(t *testing.T) { + logger, _ := testlog.NewNullLogger() + + type contentCall struct { + wrapper string + path string + mode fs.FileMode + } + var contentCalls []contentCall + + installer := &fileInstallerMock{ + installFileFunc: func(s1, s2 string) (os.FileMode, error) { + return 0666, nil + }, + installContentFunc: func(reader io.Reader, s string, fileMode fs.FileMode) error { + var b bytes.Buffer + if _, err := b.ReadFrom(reader); err != nil { + return err + } + contents := contentCall{ + wrapper: b.String(), + path: s, + mode: fileMode, + } + + contentCalls = append(contentCalls, contents) + return nil + }, + installSymlinkFunc: func(s1, s2 string) error { + return nil + }, + } + installFile = installer.installFile + installContent = installer.installContent + installSymlink = installer.installSymlink + + root := "/artifacts/test" + libraries := &lookup.LocatorMock{ + LocateFunc: func(s string) ([]string, error) { + switch s { + case "libnvidia-container.so.1": + return []string{filepath.Join(root, "libnvidia-container.so.987.65.43")}, nil + case "libnvidia-container-go.so.1": + return []string{filepath.Join(root, "libnvidia-container-go.so.1.23.4")}, nil + } + return nil, fmt.Errorf("%v not found", s) + }, + } + executables := &lookup.LocatorMock{ + LocateFunc: func(s string) ([]string, error) { + switch s { + case "nvidia-container-runtime.cdi": + fallthrough + case "nvidia-container-runtime.legacy": + fallthrough + case "nvidia-container-runtime": + fallthrough + case "nvidia-ctk": + fallthrough + case "nvidia-container-cli": + fallthrough + case "nvidia-container-runtime-hook": + fallthrough + case "nvidia-cdi-hook": + return []string{filepath.Join(root, "usr/bin", s)}, nil + } + return nil, fmt.Errorf("%v not found", s) + }, + } + + r := &artifactRoot{ + libraries: libraries, + executables: executables, + } + + createDirectory := &InstallerMock{ + InstallFunc: func(c string) error { + return nil + }, + } + i := ToolkitInstaller{ + logger: logger, + artifactRoot: r, + ensureTargetDirectory: createDirectory, + } + + err := i.Install("/foo/bar/baz") + require.NoError(t, err) + + require.ElementsMatch(t, + []struct { + S string + }{ + {"/foo/bar/baz"}, + }, + createDirectory.InstallCalls(), + ) + + require.ElementsMatch(t, + installer.installFileCalls(), + []struct { + S1 string + S2 string + }{ + {"/artifacts/test/libnvidia-container-go.so.1.23.4", "/foo/bar/baz/libnvidia-container-go.so.1.23.4"}, + {"/artifacts/test/libnvidia-container.so.987.65.43", "/foo/bar/baz/libnvidia-container.so.987.65.43"}, + {"/artifacts/test/usr/bin/nvidia-container-runtime.cdi", "/foo/bar/baz/nvidia-container-runtime.cdi.real"}, + {"/artifacts/test/usr/bin/nvidia-container-runtime.legacy", "/foo/bar/baz/nvidia-container-runtime.legacy.real"}, + {"/artifacts/test/usr/bin/nvidia-container-runtime", "/foo/bar/baz/nvidia-container-runtime.real"}, + {"/artifacts/test/usr/bin/nvidia-ctk", "/foo/bar/baz/nvidia-ctk.real"}, + {"/artifacts/test/usr/bin/nvidia-cdi-hook", "/foo/bar/baz/nvidia-cdi-hook.real"}, + {"/artifacts/test/usr/bin/nvidia-container-cli", "/foo/bar/baz/nvidia-container-cli.real"}, + {"/artifacts/test/usr/bin/nvidia-container-runtime-hook", "/foo/bar/baz/nvidia-container-runtime-hook.real"}, + }, + ) + + require.ElementsMatch(t, + installer.installSymlinkCalls(), + []struct { + S1 string + S2 string + }{ + {"libnvidia-container-go.so.1.23.4", "/foo/bar/baz/libnvidia-container-go.so.1"}, + {"libnvidia-container.so.987.65.43", "/foo/bar/baz/libnvidia-container.so.1"}, + {"nvidia-container-runtime-hook", "/foo/bar/baz/nvidia-container-toolkit"}, + }, + ) + + require.ElementsMatch(t, + contentCalls, + []contentCall{ + { + path: "/foo/bar/baz/nvidia-container-runtime", + mode: 0777, + wrapper: `#! /bin/sh +cat /proc/modules | grep -e "^nvidia " >/dev/null 2>&1 +if [ "${?}" != "0" ]; then + echo "nvidia driver modules are not yet loaded, invoking runc directly" + exec runc "$@" +fi +NVIDIA_CTK_CONFIG_FILE_PATH=/foo/bar/baz/.config/nvidia-container-runtime/config.toml \ +PATH=/foo/bar/baz:$PATH \ + /foo/bar/baz/nvidia-container-runtime.real \ + "$@" +`, + }, + { + path: "/foo/bar/baz/nvidia-container-runtime.cdi", + mode: 0777, + wrapper: `#! /bin/sh +cat /proc/modules | grep -e "^nvidia " >/dev/null 2>&1 +if [ "${?}" != "0" ]; then + echo "nvidia driver modules are not yet loaded, invoking runc directly" + exec runc "$@" +fi +NVIDIA_CTK_CONFIG_FILE_PATH=/foo/bar/baz/.config/nvidia-container-runtime/config.toml \ +PATH=/foo/bar/baz:$PATH \ + /foo/bar/baz/nvidia-container-runtime.cdi.real \ + "$@" +`, + }, + { + path: "/foo/bar/baz/nvidia-container-runtime.legacy", + mode: 0777, + wrapper: `#! /bin/sh +cat /proc/modules | grep -e "^nvidia " >/dev/null 2>&1 +if [ "${?}" != "0" ]; then + echo "nvidia driver modules are not yet loaded, invoking runc directly" + exec runc "$@" +fi +NVIDIA_CTK_CONFIG_FILE_PATH=/foo/bar/baz/.config/nvidia-container-runtime/config.toml \ +PATH=/foo/bar/baz:$PATH \ + /foo/bar/baz/nvidia-container-runtime.legacy.real \ + "$@" +`, + }, + { + path: "/foo/bar/baz/nvidia-ctk", + mode: 0777, + wrapper: `#! /bin/sh +PATH=/foo/bar/baz:$PATH \ + /foo/bar/baz/nvidia-ctk.real \ + "$@" +`, + }, + { + path: "/foo/bar/baz/nvidia-cdi-hook", + mode: 0777, + wrapper: `#! /bin/sh +PATH=/foo/bar/baz:$PATH \ + /foo/bar/baz/nvidia-cdi-hook.real \ + "$@" +`, + }, + { + path: "/foo/bar/baz/nvidia-container-cli", + mode: 0777, + wrapper: `#! /bin/sh +LD_LIBRARY_PATH=/foo/bar/baz:$LD_LIBRARY_PATH \ +PATH=/foo/bar/baz:$PATH \ + /foo/bar/baz/nvidia-container-cli.real \ + "$@" +`, + }, + { + path: "/foo/bar/baz/nvidia-container-runtime-hook", + mode: 0777, + wrapper: `#! /bin/sh +NVIDIA_CTK_CONFIG_FILE_PATH=/foo/bar/baz/.config/nvidia-container-runtime/config.toml \ +PATH=/foo/bar/baz:$PATH \ + /foo/bar/baz/nvidia-container-runtime-hook.real \ + "$@" +`, + }, + }, + ) +} diff --git a/cmd/nvidia-ctk-installer/toolkit/installer/libraries.go b/cmd/nvidia-ctk-installer/toolkit/installer/libraries.go new file mode 100644 index 000000000..c60517c58 --- /dev/null +++ b/cmd/nvidia-ctk-installer/toolkit/installer/libraries.go @@ -0,0 +1,73 @@ +/** +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package installer + +import ( + "path/filepath" + + log "github.com/sirupsen/logrus" +) + +// collectLibraries locates and installs the libraries that are part of +// the nvidia-container-toolkit. +// A predefined set of library candidates are considered, with the first one +// resulting in success being installed to the toolkit folder. The install process +// resolves the symlink for the library and copies the versioned library itself. +func (t *ToolkitInstaller) collectLibraries() ([]Installer, error) { + requiredLibraries := []string{ + "libnvidia-container.so.1", + "libnvidia-container-go.so.1", + } + + var installers []Installer + for _, l := range requiredLibraries { + libraryPath, err := t.artifactRoot.findLibrary(l) + if err != nil { + if t.ignoreErrors { + log.Errorf("Ignoring error: %v", err) + continue + } + return nil, err + } + + installers = append(installers, library(libraryPath)) + + if filepath.Base(libraryPath) == l { + continue + } + + link := symlink{ + linkname: l, + target: filepath.Base(libraryPath), + } + installers = append(installers, link) + } + + return installers, nil +} + +type library string + +// Install copies the library l to the destination folder. +// The same basename is used in the destination folder. +func (l library) Install(destinationDir string) error { + dest := filepath.Join(destinationDir, filepath.Base(string(l))) + + _, err := installFile(string(l), dest) + return err +} diff --git a/cmd/nvidia-ctk-installer/toolkit/installer/options.go b/cmd/nvidia-ctk-installer/toolkit/installer/options.go new file mode 100644 index 000000000..75af0b9d2 --- /dev/null +++ b/cmd/nvidia-ctk-installer/toolkit/installer/options.go @@ -0,0 +1,47 @@ +/** +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package installer + +import "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" + +type Option func(*ToolkitInstaller) + +func WithLogger(logger logger.Interface) Option { + return func(ti *ToolkitInstaller) { + ti.logger = logger + } +} + +func WithArtifactRoot(artifactRoot *artifactRoot) Option { + return func(ti *ToolkitInstaller) { + ti.artifactRoot = artifactRoot + } +} + +func WithIgnoreErrors(ignoreErrors bool) Option { + return func(ti *ToolkitInstaller) { + ti.ignoreErrors = ignoreErrors + } +} + +// WithSourceRoot sets the root directory for locating artifacts to be installed. +func WithSourceRoot(sourceRoot string) Option { + return func(ti *ToolkitInstaller) { + ti.sourceRoot = sourceRoot + } +} diff --git a/internal/ldcache/empty.go b/cmd/nvidia-ctk-installer/toolkit/options.go similarity index 55% rename from internal/ldcache/empty.go rename to cmd/nvidia-ctk-installer/toolkit/options.go index 30d3f4c8d..10e49b95d 100644 --- a/internal/ldcache/empty.go +++ b/cmd/nvidia-ctk-installer/toolkit/options.go @@ -1,5 +1,5 @@ /** -# Copyright (c) NVIDIA CORPORATION. All rights reserved. +# Copyright 2024 NVIDIA CORPORATION # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,24 +14,27 @@ # limitations under the License. **/ -package ldcache +package toolkit import "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" -type empty struct { - logger logger.Interface - path string -} +// An Option provides a mechanism to configure an Installer. +type Option func(*Installer) -var _ LDCache = (*empty)(nil) +func WithLogger(logger logger.Interface) Option { + return func(i *Installer) { + i.logger = logger + } +} -// List always returns nil for an empty ldcache -func (e *empty) List() ([]string, []string) { - return nil, nil +func WithToolkitRoot(toolkitRoot string) Option { + return func(i *Installer) { + i.toolkitRoot = toolkitRoot + } } -// Lookup logs a debug message and returns nil for an empty ldcache -func (e *empty) Lookup(prefixes ...string) ([]string, []string) { - e.logger.Debugf("Calling Lookup(%v) on empty ldcache: %v", prefixes, e.path) - return nil, nil +func WithSourceRoot(sourceRoot string) Option { + return func(i *Installer) { + i.sourceRoot = sourceRoot + } } diff --git a/cmd/nvidia-ctk-installer/toolkit/toolkit.go b/cmd/nvidia-ctk-installer/toolkit/toolkit.go new file mode 100644 index 000000000..d21d2de78 --- /dev/null +++ b/cmd/nvidia-ctk-installer/toolkit/toolkit.go @@ -0,0 +1,534 @@ +/** +# Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/ + +package toolkit + +import ( + "fmt" + "os" + "path/filepath" + "strings" + + "github.com/urfave/cli/v3" + "tags.cncf.io/container-device-interface/pkg/cdi" + "tags.cncf.io/container-device-interface/pkg/parser" + + "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk-installer/toolkit/installer" + "github.com/NVIDIA/nvidia-container-toolkit/internal/config" + "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" + "github.com/NVIDIA/nvidia-container-toolkit/internal/system/nvdevices" + "github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi" + transformroot "github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/transform/root" +) + +const ( + // DefaultNvidiaDriverRoot specifies the default NVIDIA driver run directory + DefaultNvidiaDriverRoot = "/run/nvidia/driver" +) + +type cdiOptions struct { + Enabled bool + outputDir string + kind string + vendor string + class string +} + +type Options struct { + DriverRoot string + DevRoot string + DriverRootCtrPath string + DevRootCtrPath string + + ContainerRuntimeMode string + ContainerRuntimeDebug string + ContainerRuntimeLogLevel string + + ContainerRuntimeModesCdiDefaultKind string + ContainerRuntimeModesCDIAnnotationPrefixes []string + + ContainerRuntimeRuntimes []string + + ContainerRuntimeHookSkipModeDetection bool + + ContainerCLIDebug string + + // CDI stores the CDI options for the toolkit. + CDI cdiOptions + + createDeviceNodes []string + + acceptNVIDIAVisibleDevicesWhenUnprivileged bool + acceptNVIDIAVisibleDevicesAsVolumeMounts bool + + ignoreErrors bool + + optInFeatures []string +} + +func Flags(opts *Options) []cli.Flag { + flags := []cli.Flag{ + &cli.StringFlag{ + Name: "driver-root", + Aliases: []string{"nvidia-driver-root"}, + Value: DefaultNvidiaDriverRoot, + Destination: &opts.DriverRoot, + Sources: cli.EnvVars("NVIDIA_DRIVER_ROOT", "DRIVER_ROOT"), + }, + &cli.StringFlag{ + Name: "driver-root-ctr-path", + Value: DefaultNvidiaDriverRoot, + Destination: &opts.DriverRootCtrPath, + Sources: cli.EnvVars("DRIVER_ROOT_CTR_PATH"), + }, + &cli.StringFlag{ + Name: "dev-root", + Usage: "Specify the root where `/dev` is located. If this is not specified, the driver-root is assumed.", + Destination: &opts.DevRoot, + Sources: cli.EnvVars("NVIDIA_DEV_ROOT", "DEV_ROOT"), + }, + &cli.StringFlag{ + Name: "dev-root-ctr-path", + Usage: "Specify the root where `/dev` is located in the container. If this is not specified, the driver-root-ctr-path is assumed.", + Destination: &opts.DevRootCtrPath, + Sources: cli.EnvVars("DEV_ROOT_CTR_PATH"), + }, + &cli.StringFlag{ + Name: "nvidia-container-runtime.debug", + Aliases: []string{"nvidia-container-runtime-debug"}, + Usage: "Specify the location of the debug log file for the NVIDIA Container Runtime", + Destination: &opts.ContainerRuntimeDebug, + Sources: cli.EnvVars("NVIDIA_CONTAINER_RUNTIME_DEBUG"), + }, + &cli.StringFlag{ + Name: "nvidia-container-runtime.log-level", + Aliases: []string{"nvidia-container-runtime-debug-log-level"}, + Destination: &opts.ContainerRuntimeLogLevel, + Sources: cli.EnvVars("NVIDIA_CONTAINER_RUNTIME_LOG_LEVEL"), + }, + &cli.StringFlag{ + Name: "nvidia-container-runtime.mode", + Aliases: []string{"nvidia-container-runtime-mode"}, + Destination: &opts.ContainerRuntimeMode, + Sources: cli.EnvVars("NVIDIA_CONTAINER_RUNTIME_MODE"), + }, + &cli.StringFlag{ + Name: "nvidia-container-runtime.modes.cdi.default-kind", + Destination: &opts.ContainerRuntimeModesCdiDefaultKind, + Sources: cli.EnvVars("NVIDIA_CONTAINER_RUNTIME_MODES_CDI_DEFAULT_KIND"), + }, + &cli.StringSliceFlag{ + Name: "nvidia-container-runtime.modes.cdi.annotation-prefixes", + Destination: &opts.ContainerRuntimeModesCDIAnnotationPrefixes, + Sources: cli.EnvVars("NVIDIA_CONTAINER_RUNTIME_MODES_CDI_ANNOTATION_PREFIXES"), + }, + &cli.StringSliceFlag{ + Name: "nvidia-container-runtime.runtimes", + Destination: &opts.ContainerRuntimeRuntimes, + Sources: cli.EnvVars("NVIDIA_CONTAINER_RUNTIME_RUNTIMES"), + }, + &cli.BoolFlag{ + Name: "nvidia-container-runtime-hook.skip-mode-detection", + Value: true, + Destination: &opts.ContainerRuntimeHookSkipModeDetection, + Sources: cli.EnvVars("NVIDIA_CONTAINER_RUNTIME_HOOK_SKIP_MODE_DETECTION"), + }, + &cli.StringFlag{ + Name: "nvidia-container-cli.debug", + Aliases: []string{"nvidia-container-cli-debug"}, + Usage: "Specify the location of the debug log file for the NVIDIA Container CLI", + Destination: &opts.ContainerCLIDebug, + Sources: cli.EnvVars("NVIDIA_CONTAINER_CLI_DEBUG"), + }, + &cli.BoolFlag{ + Name: "accept-nvidia-visible-devices-envvar-when-unprivileged", + Usage: "Set the accept-nvidia-visible-devices-envvar-when-unprivileged config option", + Value: true, + Destination: &opts.acceptNVIDIAVisibleDevicesWhenUnprivileged, + Sources: cli.EnvVars("ACCEPT_NVIDIA_VISIBLE_DEVICES_ENVVAR_WHEN_UNPRIVILEGED"), + }, + &cli.BoolFlag{ + Name: "accept-nvidia-visible-devices-as-volume-mounts", + Usage: "Set the accept-nvidia-visible-devices-as-volume-mounts config option", + Destination: &opts.acceptNVIDIAVisibleDevicesAsVolumeMounts, + Sources: cli.EnvVars("ACCEPT_NVIDIA_VISIBLE_DEVICES_AS_VOLUME_MOUNTS"), + }, + &cli.BoolFlag{ + Name: "cdi-enabled", + Aliases: []string{"enable-cdi"}, + Usage: "enable the generation of a CDI specification", + Destination: &opts.CDI.Enabled, + Sources: cli.EnvVars("CDI_ENABLED", "ENABLE_CDI"), + }, + &cli.StringFlag{ + Name: "cdi-output-dir", + Usage: "the directory where the CDI output files are to be written. If this is set to '', no CDI specification is generated.", + Value: "/var/run/cdi", + Destination: &opts.CDI.outputDir, + Sources: cli.EnvVars("CDI_OUTPUT_DIR"), + }, + &cli.StringFlag{ + Name: "cdi-kind", + Usage: "the vendor string to use for the generated CDI specification", + Value: "management.nvidia.com/gpu", + Destination: &opts.CDI.kind, + Sources: cli.EnvVars("CDI_KIND"), + }, + &cli.BoolFlag{ + Name: "ignore-errors", + Usage: "ignore errors when installing the NVIDIA Container toolkit. This is used for testing purposes only.", + Hidden: true, + Destination: &opts.ignoreErrors, + }, + &cli.StringSliceFlag{ + Name: "create-device-nodes", + Usage: "(Only applicable with --cdi-enabled) specifies which device nodes should be created. If any one of the options is set to '' or 'none', no device nodes will be created.", + Value: []string{"control"}, + Destination: &opts.createDeviceNodes, + Sources: cli.EnvVars("CREATE_DEVICE_NODES"), + }, + &cli.StringSliceFlag{ + Name: "opt-in-features", + Hidden: true, + Destination: &opts.optInFeatures, + Sources: cli.EnvVars("NVIDIA_CONTAINER_TOOLKIT_OPT_IN_FEATURES"), + }, + } + + return flags +} + +// An Installer is used to install the NVIDIA Container Toolkit from the toolkit container. +type Installer struct { + logger logger.Interface + + sourceRoot string + // toolkitRoot specifies the destination path at which the toolkit is installed. + toolkitRoot string +} + +// NewInstaller creates an installer for the NVIDIA Container Toolkit. +func NewInstaller(opts ...Option) *Installer { + i := &Installer{} + for _, opt := range opts { + opt(i) + } + + if i.logger == nil { + i.logger = logger.New() + } + + return i +} + +// ValidateOptions checks whether the specified options are valid +func (t *Installer) ValidateOptions(opts *Options) error { + if t == nil { + return fmt.Errorf("toolkit installer is not initilized") + } + if t.toolkitRoot == "" { + return fmt.Errorf("invalid --toolkit-root option: %v", t.toolkitRoot) + } + + vendor, class := parser.ParseQualifier(opts.CDI.kind) + if err := parser.ValidateVendorName(vendor); err != nil { + return fmt.Errorf("invalid CDI vendor name: %v", err) + } + if err := parser.ValidateClassName(class); err != nil { + return fmt.Errorf("invalid CDI class name: %v", err) + } + opts.CDI.vendor = vendor + opts.CDI.class = class + + if opts.CDI.Enabled && opts.CDI.outputDir == "" { + t.logger.Warning("Skipping CDI spec generation (no output directory specified)") + opts.CDI.Enabled = false + } + + isDisabled := false + for _, mode := range opts.createDeviceNodes { + if mode != "" && mode != "none" && mode != "control" { + return fmt.Errorf("invalid --create-device-nodes value: %v", mode) + } + if mode == "" || mode == "none" { + isDisabled = true + break + } + } + if !opts.CDI.Enabled && !isDisabled { + t.logger.Info("disabling device node creation since --cdi-enabled=false") + isDisabled = true + } + if isDisabled { + opts.createDeviceNodes = []string{} + } + + return nil +} + +// Install installs the components of the NVIDIA container toolkit. +// Any existing installation is removed. +func (t *Installer) Install(cli *cli.Command, opts *Options) error { + if t == nil { + return fmt.Errorf("toolkit installer is not initilized") + } + t.logger.Infof("Installing NVIDIA container toolkit to '%v'", t.toolkitRoot) + + t.logger.Infof("Removing existing NVIDIA container toolkit installation") + err := os.RemoveAll(t.toolkitRoot) + if err != nil && !opts.ignoreErrors { + return fmt.Errorf("error removing toolkit directory: %v", err) + } else if err != nil { + t.logger.Errorf("Ignoring error: %v", fmt.Errorf("error removing toolkit directory: %v", err)) + } + + // Create a toolkit installer to actually install the toolkit components. + toolkit, err := installer.New( + installer.WithLogger(t.logger), + installer.WithSourceRoot(t.sourceRoot), + installer.WithIgnoreErrors(opts.ignoreErrors), + ) + if err != nil { + if !opts.ignoreErrors { + return fmt.Errorf("could not create toolkit installer: %w", err) + } + t.logger.Errorf("Ignoring error: %v", fmt.Errorf("could not create toolkit installer: %w", err)) + } + if err := toolkit.Install(t.toolkitRoot); err != nil { + if !opts.ignoreErrors { + return fmt.Errorf("could not install toolkit components: %w", err) + } + t.logger.Errorf("Ignoring error: %v", fmt.Errorf("could not install toolkit components: %w", err)) + } + + err = t.installToolkitConfig(cli, opts, toolkit.ConfigFilePath(t.toolkitRoot)) + if err != nil && !opts.ignoreErrors { + return fmt.Errorf("error installing NVIDIA container toolkit config: %v", err) + } else if err != nil { + t.logger.Errorf("Ignoring error: %v", fmt.Errorf("error installing NVIDIA container toolkit config: %v", err)) + } + + err = t.createDeviceNodes(opts) + if err != nil && !opts.ignoreErrors { + return fmt.Errorf("error creating device nodes: %v", err) + } else if err != nil { + t.logger.Errorf("Ignoring error: %v", fmt.Errorf("error creating device nodes: %v", err)) + } + + nvidiaCDIHookPath := filepath.Join(t.toolkitRoot, "nvidia-cdi-hook") + err = t.generateCDISpec(opts, nvidiaCDIHookPath) + if err != nil && !opts.ignoreErrors { + return fmt.Errorf("error generating CDI specification: %v", err) + } else if err != nil { + t.logger.Errorf("Ignoring error: %v", fmt.Errorf("error generating CDI specification: %v", err)) + } + + return nil +} + +// installToolkitConfig installs the config file for the NVIDIA container toolkit ensuring +// that the settings are updated to match the desired install and nvidia driver directories. +func (t *Installer) installToolkitConfig(c *cli.Command, opts *Options, toolkitConfigPath string) error { + + t.logger.Infof("Installing NVIDIA container toolkit config '%v'", toolkitConfigPath) + + err := t.createDirectories(filepath.Dir(toolkitConfigPath)) + if err != nil && !opts.ignoreErrors { + return fmt.Errorf("could not create required directories: %v", err) + } else if err != nil { + t.logger.Errorf("Ignoring error: %v", fmt.Errorf("could not create required directories: %v", err)) + } + nvidiaContainerCliExecutablePath := filepath.Join(t.toolkitRoot, "nvidia-container-cli") + nvidiaCTKPath := filepath.Join(t.toolkitRoot, "nvidia-ctk") + nvidiaContainerRuntimeHookPath := filepath.Join(t.toolkitRoot, "nvidia-container-runtime-hook") + + cfg, err := config.New() + if err != nil { + return fmt.Errorf("could not open source config file: %v", err) + } + + targetConfig, err := os.Create(toolkitConfigPath) + if err != nil { + return fmt.Errorf("could not create target config file: %v", err) + } + defer targetConfig.Close() + + // Read the ldconfig path from the config as this may differ per platform + // On ubuntu-based systems this ends in `.real` + ldconfigPath := fmt.Sprintf("%s", cfg.GetDefault("nvidia-container-cli.ldconfig", "/sbin/ldconfig")) + // Use the driver run root as the root: + driverLdconfigPath := config.NormalizeLDConfigPath("@" + filepath.Join(opts.DriverRoot, strings.TrimPrefix(ldconfigPath, "@/"))) + + configValues := map[string]interface{}{ + // Set the options in the root toml table + "accept-nvidia-visible-devices-envvar-when-unprivileged": opts.acceptNVIDIAVisibleDevicesWhenUnprivileged, + "accept-nvidia-visible-devices-as-volume-mounts": opts.acceptNVIDIAVisibleDevicesAsVolumeMounts, + // Set the nvidia-container-cli options + "nvidia-container-cli.root": opts.DriverRoot, + "nvidia-container-cli.path": nvidiaContainerCliExecutablePath, + "nvidia-container-cli.ldconfig": driverLdconfigPath, + // Set nvidia-ctk options + "nvidia-ctk.path": nvidiaCTKPath, + // Set the nvidia-container-runtime-hook options + "nvidia-container-runtime-hook.path": nvidiaContainerRuntimeHookPath, + "nvidia-container-runtime-hook.skip-mode-detection": opts.ContainerRuntimeHookSkipModeDetection, + } + + toolkitRuntimeList := opts.ContainerRuntimeRuntimes + if len(toolkitRuntimeList) > 0 { + configValues["nvidia-container-runtime.runtimes"] = toolkitRuntimeList + } + + for _, optInFeature := range opts.optInFeatures { + configValues["features."+optInFeature] = true + } + + for key, value := range configValues { + cfg.Set(key, value) + } + + // Set the optional config options + optionalConfigValues := map[string]interface{}{ + "nvidia-container-runtime.debug": opts.ContainerRuntimeDebug, + "nvidia-container-runtime.log-level": opts.ContainerRuntimeLogLevel, + "nvidia-container-runtime.mode": opts.ContainerRuntimeMode, + "nvidia-container-runtime.modes.cdi.annotation-prefixes": opts.ContainerRuntimeModesCDIAnnotationPrefixes, + "nvidia-container-runtime.modes.cdi.default-kind": opts.ContainerRuntimeModesCdiDefaultKind, + "nvidia-container-runtime.runtimes": opts.ContainerRuntimeRuntimes, + "nvidia-container-cli.debug": opts.ContainerCLIDebug, + } + + for key, value := range optionalConfigValues { + if !c.IsSet(key) { + t.logger.Infof("Skipping unset option: %v", key) + continue + } + if value == nil { + t.logger.Infof("Skipping option with nil value: %v", key) + continue + } + + switch v := value.(type) { + case string: + if v == "" { + continue + } + case cli.StringSlice: + if len(v.Value()) == 0 { + continue + } + value = v.Value() + default: + t.logger.Warningf("Unexpected type for option %v=%v: %T", key, value, v) + } + + cfg.Set(key, value) + } + + if _, err := cfg.WriteTo(targetConfig); err != nil { + return fmt.Errorf("error writing config: %v", err) + } + + os.Stdout.WriteString("Using config:\n") + if _, err = cfg.WriteTo(os.Stdout); err != nil { + t.logger.Warningf("Failed to output config to STDOUT: %v", err) + } + + return nil +} + +func (t *Installer) createDirectories(dir ...string) error { + for _, d := range dir { + t.logger.Infof("Creating directory '%v'", d) + err := os.MkdirAll(d, 0755) + if err != nil { + return fmt.Errorf("error creating directory: %v", err) + } + } + return nil +} + +func (t *Installer) createDeviceNodes(opts *Options) error { + modes := opts.createDeviceNodes + if len(modes) == 0 { + return nil + } + + devices, err := nvdevices.New( + nvdevices.WithDevRoot(opts.DevRootCtrPath), + ) + if err != nil { + return fmt.Errorf("failed to create library: %v", err) + } + + for _, mode := range modes { + t.logger.Infof("Creating %v device nodes at %v", mode, opts.DevRootCtrPath) + if mode != "control" { + t.logger.Warningf("Unrecognised device mode: %v", mode) + continue + } + if err := devices.CreateNVIDIAControlDevices(); err != nil { + return fmt.Errorf("failed to create control device nodes: %v", err) + } + } + return nil +} + +// generateCDISpec generates a CDI spec for use in management containers +func (t *Installer) generateCDISpec(opts *Options, nvidiaCDIHookPath string) error { + if !opts.CDI.Enabled { + return nil + } + t.logger.Info("Generating CDI spec for management containers") + cdilib, err := nvcdi.New( + nvcdi.WithLogger(t.logger), + nvcdi.WithMode(nvcdi.ModeManagement), + nvcdi.WithDriverRoot(opts.DriverRootCtrPath), + nvcdi.WithDevRoot(opts.DevRootCtrPath), + nvcdi.WithNVIDIACDIHookPath(nvidiaCDIHookPath), + nvcdi.WithVendor(opts.CDI.vendor), + nvcdi.WithClass(opts.CDI.class), + ) + if err != nil { + return fmt.Errorf("failed to create CDI library for management containers: %v", err) + } + + spec, err := cdilib.GetSpec() + if err != nil { + return fmt.Errorf("failed to genereate CDI spec for management containers: %v", err) + } + + transformer := transformroot.NewDriverTransformer( + transformroot.WithDriverRoot(opts.DriverRootCtrPath), + transformroot.WithTargetDriverRoot(opts.DriverRoot), + transformroot.WithDevRoot(opts.DevRootCtrPath), + transformroot.WithTargetDevRoot(opts.DevRoot), + ) + if err := transformer.Transform(spec.Raw()); err != nil { + return fmt.Errorf("failed to transform driver root in CDI spec: %v", err) + } + + name, err := cdi.GenerateNameForSpec(spec.Raw()) + if err != nil { + return fmt.Errorf("failed to generate CDI name for management containers: %v", err) + } + err = spec.Save(filepath.Join(opts.CDI.outputDir, name)) + if err != nil { + return fmt.Errorf("failed to save CDI spec for management containers: %v", err) + } + + return nil +} diff --git a/cmd/nvidia-ctk-installer/toolkit/toolkit_test.go b/cmd/nvidia-ctk-installer/toolkit/toolkit_test.go new file mode 100644 index 000000000..0eaa7af38 --- /dev/null +++ b/cmd/nvidia-ctk-installer/toolkit/toolkit_test.go @@ -0,0 +1,232 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package toolkit + +import ( + "fmt" + "os" + "path/filepath" + "strings" + "testing" + + testlog "github.com/sirupsen/logrus/hooks/test" + "github.com/stretchr/testify/require" + "github.com/urfave/cli/v3" + + "github.com/NVIDIA/nvidia-container-toolkit/internal/config" + "github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/symlinks" + "github.com/NVIDIA/nvidia-container-toolkit/internal/test" +) + +func TestInstall(t *testing.T) { + t.Setenv("__NVCT_TESTING_DEVICES_ARE_FILES", "true") + logger, _ := testlog.NewNullLogger() + + moduleRoot, err := test.GetModuleRoot() + require.NoError(t, err) + + artifactRoot := filepath.Join(moduleRoot, "testdata", "installer", "artifacts") + + testCases := []struct { + description string + hostRoot string + packageType string + cdiEnabled bool + expectedError error + expectedCdiSpec string + }{ + { + hostRoot: "rootfs-empty", + packageType: "deb", + }, + { + hostRoot: "rootfs-empty", + packageType: "rpm", + }, + { + hostRoot: "rootfs-empty", + packageType: "deb", + cdiEnabled: true, + expectedError: fmt.Errorf("no NVIDIA device nodes found"), + }, + { + hostRoot: "rootfs-1", + packageType: "deb", + cdiEnabled: true, + expectedCdiSpec: `--- +cdiVersion: 0.5.0 +kind: example.com/class +devices: + - name: all + containerEdits: + deviceNodes: + - path: /dev/nvidia0 + hostPath: /host/driver/root/dev/nvidia0 + - path: /dev/nvidiactl + hostPath: /host/driver/root/dev/nvidiactl + - path: /dev/nvidia-caps-imex-channels/channel0 + hostPath: /host/driver/root/dev/nvidia-caps-imex-channels/channel0 + - path: /dev/nvidia-caps-imex-channels/channel1 + hostPath: /host/driver/root/dev/nvidia-caps-imex-channels/channel1 + - path: /dev/nvidia-caps-imex-channels/channel2047 + hostPath: /host/driver/root/dev/nvidia-caps-imex-channels/channel2047 +containerEdits: + env: + - NVIDIA_CTK_LIBCUDA_DIR=/lib/x86_64-linux-gnu + - NVIDIA_VISIBLE_DEVICES=void + hooks: + - hookName: createContainer + path: {{ .toolkitRoot }}/nvidia-cdi-hook + args: + - nvidia-cdi-hook + - create-symlinks + - --link + - libcuda.so.1::/lib/x86_64-linux-gnu/libcuda.so + env: + - NVIDIA_CTK_DEBUG=false + - hookName: createContainer + path: {{ .toolkitRoot }}/nvidia-cdi-hook + args: + - nvidia-cdi-hook + - create-soname-symlinks + - --folder + - /lib/x86_64-linux-gnu + env: + - NVIDIA_CTK_DEBUG=false + - hookName: createContainer + path: {{ .toolkitRoot }}/nvidia-cdi-hook + args: + - nvidia-cdi-hook + - update-ldcache + - --folder + - /lib/x86_64-linux-gnu + env: + - NVIDIA_CTK_DEBUG=false + mounts: + - hostPath: /host/driver/root/lib/x86_64-linux-gnu/libcuda.so.999.88.77 + containerPath: /lib/x86_64-linux-gnu/libcuda.so.999.88.77 + options: + - ro + - nosuid + - nodev + - rbind + - rprivate +`, + }, + } + + for _, tc := range testCases { + // hostRoot := filepath.Join(moduleRoot, "testdata", "lookup", tc.hostRoot) + t.Run(tc.description, func(t *testing.T) { + testRoot := t.TempDir() + toolkitRoot := filepath.Join(testRoot, "toolkit-test") + cdiOutputDir := filepath.Join(moduleRoot, "toolkit-test", "/var/cdi") + sourceRoot := filepath.Join(artifactRoot, tc.packageType) + options := Options{ + DriverRoot: "/host/driver/root", + DriverRootCtrPath: filepath.Join(moduleRoot, "testdata", "lookup", tc.hostRoot), + CDI: cdiOptions{ + Enabled: tc.cdiEnabled, + outputDir: cdiOutputDir, + kind: "example.com/class", + }, + } + + ti := NewInstaller( + WithLogger(logger), + WithToolkitRoot(toolkitRoot), + WithSourceRoot(sourceRoot), + ) + require.NoError(t, ti.ValidateOptions(&options)) + + err := ti.Install(&cli.Command{}, &options) + if tc.expectedError == nil { + require.NoError(t, err) + } else { + require.Contains(t, err.Error(), tc.expectedError.Error()) + } + + require.DirExists(t, toolkitRoot) + requireSymlink(t, toolkitRoot, "libnvidia-container.so.1", "libnvidia-container.so.99.88.77") + requireSymlink(t, toolkitRoot, "libnvidia-container-go.so.1", "libnvidia-container-go.so.99.88.77") + + requireWrappedExecutable(t, toolkitRoot, "nvidia-cdi-hook") + requireWrappedExecutable(t, toolkitRoot, "nvidia-container-cli") + requireWrappedExecutable(t, toolkitRoot, "nvidia-container-runtime") + requireWrappedExecutable(t, toolkitRoot, "nvidia-container-runtime-hook") + requireWrappedExecutable(t, toolkitRoot, "nvidia-container-runtime.cdi") + requireWrappedExecutable(t, toolkitRoot, "nvidia-container-runtime.legacy") + requireWrappedExecutable(t, toolkitRoot, "nvidia-ctk") + + requireSymlink(t, toolkitRoot, "nvidia-container-toolkit", "nvidia-container-runtime-hook") + + // TODO: Add checks for wrapper contents + // grep -q -E "nvidia driver modules are not yet loaded, invoking runc directly" "${shared_dir}/usr/local/nvidia/toolkit/nvidia-container-runtime" + // grep -q -E "exec runc \".@\"" "${shared_dir}/usr/local/nvidia/toolkit/nvidia-container-runtime" + + require.DirExists(t, filepath.Join(toolkitRoot, ".config")) + require.DirExists(t, filepath.Join(toolkitRoot, ".config", "nvidia-container-runtime")) + require.FileExists(t, filepath.Join(toolkitRoot, ".config", "nvidia-container-runtime", "config.toml")) + + cfgToml, err := config.New(config.WithConfigFile(filepath.Join(toolkitRoot, ".config", "nvidia-container-runtime", "config.toml"))) + require.NoError(t, err) + + cfg, err := cfgToml.Config() + require.NoError(t, err) + + // Ensure that the config file has the required contents. + // TODO: Add checks for additional config options. + require.Equal(t, "/host/driver/root", cfg.NVIDIAContainerCLIConfig.Root) + require.Equal(t, "@/host/driver/root/sbin/ldconfig", string(cfg.NVIDIAContainerCLIConfig.Ldconfig)) + require.EqualValues(t, filepath.Join(toolkitRoot, "nvidia-container-cli"), cfg.NVIDIAContainerCLIConfig.Path) + require.EqualValues(t, filepath.Join(toolkitRoot, "nvidia-ctk"), cfg.NVIDIACTKConfig.Path) + + if len(tc.expectedCdiSpec) > 0 { + cdiSpecFile := filepath.Join(cdiOutputDir, "example.com-class.yaml") + require.FileExists(t, cdiSpecFile) + info, err := os.Stat(cdiSpecFile) + require.NoError(t, err) + require.NotZero(t, info.Mode()&0004) + contents, err := os.ReadFile(cdiSpecFile) + require.NoError(t, err) + require.Equal(t, strings.ReplaceAll(tc.expectedCdiSpec, "{{ .toolkitRoot }}", toolkitRoot), string(contents)) + } + }) + } +} + +func requireWrappedExecutable(t *testing.T, toolkitRoot string, expectedExecutable string) { + requireExecutable(t, toolkitRoot, expectedExecutable) + requireExecutable(t, toolkitRoot, expectedExecutable+".real") +} + +func requireExecutable(t *testing.T, toolkitRoot string, expectedExecutable string) { + executable := filepath.Join(toolkitRoot, expectedExecutable) + require.FileExists(t, executable) + info, err := os.Lstat(executable) + require.NoError(t, err) + require.Zero(t, info.Mode()&os.ModeSymlink) + require.NotZero(t, info.Mode()&0111) +} + +func requireSymlink(t *testing.T, toolkitRoot string, expectedLink string, expectedTarget string) { + link := filepath.Join(toolkitRoot, expectedLink) + require.FileExists(t, link) + target, err := symlinks.Resolve(link) + require.NoError(t, err) + require.Equal(t, expectedTarget, target) +} diff --git a/cmd/nvidia-ctk/cdi/cdi.go b/cmd/nvidia-ctk/cdi/cdi.go index 1020488af..a94fe0533 100644 --- a/cmd/nvidia-ctk/cdi/cdi.go +++ b/cmd/nvidia-ctk/cdi/cdi.go @@ -17,7 +17,7 @@ package cdi import ( - "github.com/urfave/cli/v2" + "github.com/urfave/cli/v3" "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk/cdi/generate" "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk/cdi/list" @@ -26,30 +26,31 @@ import ( ) type command struct { - logger logger.Interface + logger logger.Interface + configFilePath *string } -// NewCommand constructs an info command with the specified logger -func NewCommand(logger logger.Interface) *cli.Command { +// NewCommand constructs a cdi command with the specified logger +func NewCommand(logger logger.Interface, configFilePath *string) *cli.Command { c := command{ - logger: logger, + logger: logger, + configFilePath: configFilePath, } return c.build() } // build func (m command) build() *cli.Command { - // Create the 'hook' command - hook := cli.Command{ + // Create the 'cdi' command + cdi := cli.Command{ Name: "cdi", Usage: "Provide tools for interacting with Container Device Interface specifications", + Commands: []*cli.Command{ + generate.NewCommand(m.logger, m.configFilePath), + list.NewCommand(m.logger), + transform.NewCommand(m.logger), + }, } - hook.Subcommands = []*cli.Command{ - generate.NewCommand(m.logger), - transform.NewCommand(m.logger), - list.NewCommand(m.logger), - } - - return &hook + return &cdi } diff --git a/cmd/nvidia-ctk/cdi/generate/config.go b/cmd/nvidia-ctk/cdi/generate/config.go new file mode 100644 index 000000000..0e1c016bd --- /dev/null +++ b/cmd/nvidia-ctk/cdi/generate/config.go @@ -0,0 +1,129 @@ +/** +# Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package generate + +import ( + "fmt" + "sync" + + "github.com/NVIDIA/nvidia-container-toolkit/internal/config" + + altsrc "github.com/urfave/cli-altsrc/v3" + "github.com/urfave/cli/v3" +) + +// New sets the source for the config file path. +// It uses a string pointer to the config file path option. +func New(config *string) *configAsValueSource { + return &configAsValueSource{ + source: altsrc.NewStringPtrSourcer(config), + } +} + +// configAsValueSource provides flag values from a TOML configuration file, acting as a factory for specific cli.ValueSource instances. +// It uses an altsrc.Sourcer to find the configuration file path and loads it on demand. +type configAsValueSource struct { + sync.Mutex + source altsrc.Sourcer + *config.Toml +} + +// ValueFrom returns a cli.ValueSource for the given key. +// This can be used in the Sources chain for a cli.Flag. +func (c *configAsValueSource) ValueFrom(key string) cli.ValueSource { + return &configValueLookup{ + key: key, + from: c, + } +} + +func (c *configAsValueSource) Get(key string) interface{} { + c.Lock() + defer c.Unlock() + + if c.Toml == nil { + if err := c.loadFromConfig(); err != nil { + return nil + } + } + + if c.Toml == nil { + return nil + } + + return c.Toml.Get(key) +} + +// loadFromConfig loads the config file if it has not already been loaded. +// If the config file path is not specified, it uses the default config file path. +func (c *configAsValueSource) loadFromConfig() error { + if c.Toml != nil { + return nil + } + + configFilePath := c.source.SourceURI() + if configFilePath == "" { + configFilePath = config.GetConfigFilePath() + } + configToml, err := config.New( + config.WithConfigFile(configFilePath), + ) + if err != nil { + return err + } + c.Toml = configToml + + return nil +} + +// configValueLookup is a cli.ValueSource that looks up values from a configAsValueSource. +type configValueLookup struct { + key string + from *configAsValueSource +} + +// Lookup returns the value for the key from the config file. +func (c *configValueLookup) Lookup() (string, bool) { + if c == nil || c.from == nil { + return "", false + } + if value := c.from.Get(c.key); value != nil { + return fmt.Sprintf("%v", value), true + } + + return "", false +} + +// GoString returns a Go-syntax representation of the configuration source. +func (c *configValueLookup) GoString() string { + return c.String() +} + +// String returns a string representation of the configuration source. +func (c *configValueLookup) String() string { + if c.from == nil || c.from.source == nil { + return "config file" + } + configFile := c.from.source.SourceURI() + if configFile == "" { + configFile = config.GetConfigFilePath() + } + if configFile == "" { + return "config file" + } + return fmt.Sprintf("config file %q", configFile) +} diff --git a/cmd/nvidia-ctk/cdi/generate/generate.go b/cmd/nvidia-ctk/cdi/generate/generate.go index 9f9e994b2..a06fbac1d 100644 --- a/cmd/nvidia-ctk/cdi/generate/generate.go +++ b/cmd/nvidia-ctk/cdi/generate/generate.go @@ -17,14 +17,18 @@ package generate import ( + "context" "fmt" "os" "path/filepath" "strings" - "github.com/urfave/cli/v2" + "github.com/urfave/cli/v3" + cdi "tags.cncf.io/container-device-interface/pkg/parser" + "github.com/NVIDIA/go-nvml/pkg/nvml" + "github.com/NVIDIA/nvidia-container-toolkit/internal/config" "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" "github.com/NVIDIA/nvidia-container-toolkit/internal/platform-support/tegra/csv" @@ -39,12 +43,14 @@ const ( type command struct { logger logger.Interface + + config *configAsValueSource } type options struct { output string format string - deviceNameStrategies cli.StringSlice + deviceNameStrategies []string driverRoot string devRoot string nvidiaCDIHookPath string @@ -53,19 +59,24 @@ type options struct { vendor string class string - configSearchPaths cli.StringSlice - librarySearchPaths cli.StringSlice + configSearchPaths []string + librarySearchPaths []string + disabledHooks []string csv struct { - files cli.StringSlice - ignorePatterns cli.StringSlice + files []string + ignorePatterns []string } + + // the following are used for dependency injection during spec generation. + nvmllib nvml.Interface } // NewCommand constructs a generate-cdi command with the specified logger -func NewCommand(logger logger.Interface) *cli.Command { +func NewCommand(logger logger.Interface, configFilePath *string) *cli.Command { c := command{ logger: logger, + config: New(configFilePath), } return c.build() } @@ -76,105 +87,141 @@ func (m command) build() *cli.Command { // Create the 'generate-cdi' command c := cli.Command{ - Name: "generate", - Usage: "Generate CDI specifications for use with CDI-enabled runtimes", - Before: func(c *cli.Context) error { - return m.validateFlags(c, &opts) - }, - Action: func(c *cli.Context) error { - return m.run(c, &opts) - }, - } - - c.Flags = []cli.Flag{ - &cli.StringSliceFlag{ - Name: "config-search-path", - Usage: "Specify the path to search for config files when discovering the entities that should be included in the CDI specification.", - Destination: &opts.configSearchPaths, - }, - &cli.StringFlag{ - Name: "output", - Usage: "Specify the file to output the generated CDI specification to. If this is '' the specification is output to STDOUT", - Destination: &opts.output, - }, - &cli.StringFlag{ - Name: "format", - Usage: "The output format for the generated spec [json | yaml]. This overrides the format defined by the output file extension (if specified).", - Value: spec.FormatYAML, - Destination: &opts.format, - }, - &cli.StringFlag{ - Name: "mode", - Aliases: []string{"discovery-mode"}, - Usage: "The mode to use when discovering the available entities. One of [auto | nvml | wsl]. If mode is set to 'auto' the mode will be determined based on the system configuration.", - Value: nvcdi.ModeAuto, - Destination: &opts.mode, - }, - &cli.StringFlag{ - Name: "dev-root", - Usage: "Specify the root where `/dev` is located. If this is not specified, the driver-root is assumed.", - Destination: &opts.devRoot, - }, - &cli.StringSliceFlag{ - Name: "device-name-strategy", - Usage: "Specify the strategy for generating device names. If this is specified multiple times, the devices will be duplicated for each strategy. One of [index | uuid | type-index]", - Value: cli.NewStringSlice(nvcdi.DeviceNameStrategyIndex, nvcdi.DeviceNameStrategyUUID), - Destination: &opts.deviceNameStrategies, + Name: "generate", + Usage: "Generate CDI specifications for use with CDI-enabled runtimes", + UseShortOptionHandling: true, + EnableShellCompletion: true, + Before: func(ctx context.Context, cmd *cli.Command) (context.Context, error) { + return ctx, m.validateFlags(cmd, &opts) }, - &cli.StringFlag{ - Name: "driver-root", - Usage: "Specify the NVIDIA GPU driver root to use when discovering the entities that should be included in the CDI specification.", - Destination: &opts.driverRoot, + Action: func(ctx context.Context, cmd *cli.Command) error { + return m.run(&opts) }, - &cli.StringSliceFlag{ - Name: "library-search-path", - Usage: "Specify the path to search for libraries when discovering the entities that should be included in the CDI specification.\n\tNote: This option only applies to CSV mode.", - Destination: &opts.librarySearchPaths, - }, - &cli.StringFlag{ - Name: "nvidia-cdi-hook-path", - Aliases: []string{"nvidia-ctk-path"}, - Usage: "Specify the path to use for the nvidia-cdi-hook in the generated CDI specification. " + - "If not specified, the PATH will be searched for `nvidia-cdi-hook`. " + - "NOTE: That if this is specified as `nvidia-ctk`, the PATH will be searched for `nvidia-ctk` instead.", - Destination: &opts.nvidiaCDIHookPath, - }, - &cli.StringFlag{ - Name: "ldconfig-path", - Usage: "Specify the path to use for ldconfig in the generated CDI specification", - Destination: &opts.ldconfigPath, - }, - &cli.StringFlag{ - Name: "vendor", - Aliases: []string{"cdi-vendor"}, - Usage: "the vendor string to use for the generated CDI specification.", - Value: "nvidia.com", - Destination: &opts.vendor, - }, - &cli.StringFlag{ - Name: "class", - Aliases: []string{"cdi-class"}, - Usage: "the class string to use for the generated CDI specification.", - Value: "gpu", - Destination: &opts.class, - }, - &cli.StringSliceFlag{ - Name: "csv.file", - Usage: "The path to the list of CSV files to use when generating the CDI specification in CSV mode.", - Value: cli.NewStringSlice(csv.DefaultFileList()...), - Destination: &opts.csv.files, - }, - &cli.StringSliceFlag{ - Name: "csv.ignore-pattern", - Usage: "Specify a pattern the CSV mount specifications.", - Destination: &opts.csv.ignorePatterns, + Flags: []cli.Flag{ + &cli.StringSliceFlag{ + Name: "config-search-path", + Usage: "Specify the path to search for config files when discovering the entities that should be included in the CDI specification.", + Destination: &opts.configSearchPaths, + Sources: cli.EnvVars("NVIDIA_CTK_CDI_GENERATE_CONFIG_SEARCH_PATHS"), + }, + &cli.StringFlag{ + Name: "output", + Usage: "Specify the file to output the generated CDI specification to. If this is '' the specification is output to STDOUT", + Destination: &opts.output, + Sources: cli.EnvVars("NVIDIA_CTK_CDI_OUTPUT_FILE_PATH"), + }, + &cli.StringFlag{ + Name: "format", + Usage: "The output format for the generated spec [json | yaml]. This overrides the format defined by the output file extension (if specified).", + Value: spec.FormatYAML, + Destination: &opts.format, + Sources: cli.EnvVars("NVIDIA_CTK_CDI_GENERATE_OUTPUT_FORMAT"), + }, + &cli.StringFlag{ + Name: "mode", + Aliases: []string{"discovery-mode"}, + Usage: "The mode to use when discovering the available entities. " + + "One of [" + strings.Join(nvcdi.AllModes[string](), " | ") + "]. " + + "If mode is set to 'auto' the mode will be determined based on the system configuration.", + Value: string(nvcdi.ModeAuto), + Destination: &opts.mode, + Sources: cli.NewValueSourceChain( + cli.EnvVar("NVIDIA_CTK_CDI_GENERATE_MODE"), + m.config.ValueFrom("nvidia-container-runtime.mode"), + ), + }, + &cli.StringFlag{ + Name: "dev-root", + Usage: "Specify the root where `/dev` is located. If this is not specified, the driver-root is assumed.", + Destination: &opts.devRoot, + Sources: cli.EnvVars("NVIDIA_CTK_DEV_ROOT"), + }, + &cli.StringSliceFlag{ + Name: "device-name-strategy", + Usage: "Specify the strategy for generating device names. If this is specified multiple times, the devices will be duplicated for each strategy. One of [index | uuid | type-index]", + Value: []string{nvcdi.DeviceNameStrategyIndex, nvcdi.DeviceNameStrategyUUID}, + Destination: &opts.deviceNameStrategies, + Sources: cli.EnvVars("NVIDIA_CTK_CDI_GENERATE_DEVICE_NAME_STRATEGIES"), + }, + &cli.StringFlag{ + Name: "driver-root", + Usage: "Specify the NVIDIA GPU driver root to use when discovering the entities that should be included in the CDI specification.", + Destination: &opts.driverRoot, + Sources: cli.NewValueSourceChain( + cli.EnvVar("NVIDIA_CTK_DRIVER_ROOT"), + m.config.ValueFrom("nvidia-container-cli.root"), + ), + }, + &cli.StringSliceFlag{ + Name: "library-search-path", + Usage: "Specify the path to search for libraries when discovering the entities that should be included in the CDI specification.\n\tNote: This option only applies to CSV mode.", + Destination: &opts.librarySearchPaths, + Sources: cli.EnvVars("NVIDIA_CTK_CDI_GENERATE_LIBRARY_SEARCH_PATHS"), + }, + &cli.StringFlag{ + Name: "nvidia-cdi-hook-path", + Aliases: []string{"nvidia-ctk-path"}, + Usage: "Specify the path to use for the nvidia-cdi-hook in the generated CDI specification. " + + "If not specified, the PATH will be searched for `nvidia-cdi-hook`. " + + "NOTE: That if this is specified as `nvidia-ctk`, the PATH will be searched for `nvidia-ctk` instead.", + Destination: &opts.nvidiaCDIHookPath, + Sources: cli.EnvVars("NVIDIA_CTK_CDI_HOOK_PATH"), + }, + &cli.StringFlag{ + Name: "ldconfig-path", + Usage: "Specify the path to use for ldconfig in the generated CDI specification", + Destination: &opts.ldconfigPath, + Sources: cli.NewValueSourceChain( + cli.EnvVar("NVIDIA_CTK_CDI_GENERATE_LDCONFIG_PATH"), + m.config.ValueFrom("nvidia-container-cli.ldconfig"), + ), + }, + &cli.StringFlag{ + Name: "vendor", + Aliases: []string{"cdi-vendor"}, + Usage: "the vendor string to use for the generated CDI specification.", + Value: "nvidia.com", + Destination: &opts.vendor, + Sources: cli.EnvVars("NVIDIA_CTK_CDI_GENERATE_VENDOR"), + }, + &cli.StringFlag{ + Name: "class", + Aliases: []string{"cdi-class"}, + Usage: "the class string to use for the generated CDI specification.", + Value: "gpu", + Destination: &opts.class, + Sources: cli.EnvVars("NVIDIA_CTK_CDI_GENERATE_CLASS"), + }, + &cli.StringSliceFlag{ + Name: "csv.file", + Usage: "The path to the list of CSV files to use when generating the CDI specification in CSV mode.", + Value: csv.DefaultFileList(), + Destination: &opts.csv.files, + Sources: cli.EnvVars("NVIDIA_CTK_CDI_GENERATE_CSV_FILES"), + }, + &cli.StringSliceFlag{ + Name: "csv.ignore-pattern", + Usage: "specify a pattern the CSV mount specifications.", + Destination: &opts.csv.ignorePatterns, + Sources: cli.EnvVars("NVIDIA_CTK_CDI_GENERATE_CSV_IGNORE_PATTERNS"), + }, + &cli.StringSliceFlag{ + Name: "disable-hook", + Aliases: []string{"disable-hooks"}, + Usage: "specify a specific hook to skip when generating CDI " + + "specifications. This can be specified multiple times and the " + + "special hook name 'all' can be used ensure that the generated " + + "CDI specification does not include any hooks.", + Destination: &opts.disabledHooks, + Sources: cli.EnvVars("NVIDIA_CTK_CDI_GENERATE_DISABLED_HOOKS"), + }, }, } return &c } -func (m command) validateFlags(c *cli.Context, opts *options) error { +func (m command) validateFlags(c *cli.Command, opts *options) error { opts.format = strings.ToLower(opts.format) switch opts.format { case spec.FormatJSON: @@ -184,17 +231,11 @@ func (m command) validateFlags(c *cli.Context, opts *options) error { } opts.mode = strings.ToLower(opts.mode) - switch opts.mode { - case nvcdi.ModeAuto: - case nvcdi.ModeCSV: - case nvcdi.ModeNvml: - case nvcdi.ModeWsl: - case nvcdi.ModeManagement: - default: + if !nvcdi.IsValidMode(opts.mode) { return fmt.Errorf("invalid discovery mode: %v", opts.mode) } - for _, strategy := range opts.deviceNameStrategies.Value() { + for _, strategy := range opts.deviceNameStrategies { _, err := nvcdi.NewDeviceNamer(strategy) if err != nil { return err @@ -221,7 +262,7 @@ func (m command) validateFlags(c *cli.Context, opts *options) error { return nil } -func (m command) run(c *cli.Context, opts *options) error { +func (m command) run(opts *options) error { spec, err := m.generateSpec(opts) if err != nil { return fmt.Errorf("failed to generate CDI spec: %v", err) @@ -253,7 +294,7 @@ func formatFromFilename(filename string) string { func (m command) generateSpec(opts *options) (spec.Interface, error) { var deviceNamers []nvcdi.DeviceNamer - for _, strategy := range opts.deviceNameStrategies.Value() { + for _, strategy := range opts.deviceNameStrategies { deviceNamer, err := nvcdi.NewDeviceNamer(strategy) if err != nil { return nil, fmt.Errorf("failed to create device namer: %v", err) @@ -261,7 +302,7 @@ func (m command) generateSpec(opts *options) (spec.Interface, error) { deviceNamers = append(deviceNamers, deviceNamer) } - cdilib, err := nvcdi.New( + cdiOptions := []nvcdi.Option{ nvcdi.WithLogger(m.logger), nvcdi.WithDriverRoot(opts.driverRoot), nvcdi.WithDevRoot(opts.devRoot), @@ -269,16 +310,24 @@ func (m command) generateSpec(opts *options) (spec.Interface, error) { nvcdi.WithLdconfigPath(opts.ldconfigPath), nvcdi.WithDeviceNamers(deviceNamers...), nvcdi.WithMode(opts.mode), - nvcdi.WithConfigSearchPaths(opts.configSearchPaths.Value()), - nvcdi.WithLibrarySearchPaths(opts.librarySearchPaths.Value()), - nvcdi.WithCSVFiles(opts.csv.files.Value()), - nvcdi.WithCSVIgnorePatterns(opts.csv.ignorePatterns.Value()), - ) + nvcdi.WithConfigSearchPaths(opts.configSearchPaths), + nvcdi.WithLibrarySearchPaths(opts.librarySearchPaths), + nvcdi.WithCSVFiles(opts.csv.files), + nvcdi.WithCSVIgnorePatterns(opts.csv.ignorePatterns), + // We set the following to allow for dependency injection: + nvcdi.WithNvmlLib(opts.nvmllib), + } + + for _, hook := range opts.disabledHooks { + cdiOptions = append(cdiOptions, nvcdi.WithDisabledHook(hook)) + } + + cdilib, err := nvcdi.New(cdiOptions...) if err != nil { return nil, fmt.Errorf("failed to create CDI library: %v", err) } - deviceSpecs, err := cdilib.GetAllDeviceSpecs() + deviceSpecs, err := cdilib.GetDeviceSpecsByID("all") if err != nil { return nil, fmt.Errorf("failed to create device CDI specs: %v", err) } diff --git a/cmd/nvidia-ctk/cdi/generate/generate_test.go b/cmd/nvidia-ctk/cdi/generate/generate_test.go new file mode 100644 index 000000000..ddce01c65 --- /dev/null +++ b/cmd/nvidia-ctk/cdi/generate/generate_test.go @@ -0,0 +1,395 @@ +/** +# Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package generate + +import ( + "bytes" + "path/filepath" + "strings" + "testing" + + "github.com/NVIDIA/go-nvml/pkg/nvml" + "github.com/NVIDIA/go-nvml/pkg/nvml/mock/dgxa100" + testlog "github.com/sirupsen/logrus/hooks/test" + "github.com/stretchr/testify/require" + + "github.com/NVIDIA/nvidia-container-toolkit/internal/test" +) + +func TestGenerateSpec(t *testing.T) { + t.Setenv("__NVCT_TESTING_DEVICES_ARE_FILES", "true") + moduleRoot, err := test.GetModuleRoot() + require.NoError(t, err) + + driverRoot := filepath.Join(moduleRoot, "testdata", "lookup", "rootfs-1") + + logger, _ := testlog.NewNullLogger() + testCases := []struct { + description string + options options + expectedValidateError error + expectedOptions options + expectedError error + expectedSpec string + }{ + { + description: "default", + options: options{ + format: "yaml", + mode: "nvml", + vendor: "example.com", + class: "device", + driverRoot: driverRoot, + }, + expectedOptions: options{ + format: "yaml", + mode: "nvml", + vendor: "example.com", + class: "device", + nvidiaCDIHookPath: "/usr/bin/nvidia-cdi-hook", + driverRoot: driverRoot, + }, + expectedSpec: `--- +cdiVersion: 0.5.0 +kind: example.com/device +devices: + - name: "0" + containerEdits: + deviceNodes: + - path: /dev/nvidia0 + hostPath: {{ .driverRoot }}/dev/nvidia0 + - name: all + containerEdits: + deviceNodes: + - path: /dev/nvidia0 + hostPath: {{ .driverRoot }}/dev/nvidia0 +containerEdits: + env: + - NVIDIA_CTK_LIBCUDA_DIR=/lib/x86_64-linux-gnu + - NVIDIA_VISIBLE_DEVICES=void + deviceNodes: + - path: /dev/nvidiactl + hostPath: {{ .driverRoot }}/dev/nvidiactl + hooks: + - hookName: createContainer + path: /usr/bin/nvidia-cdi-hook + args: + - nvidia-cdi-hook + - create-symlinks + - --link + - libcuda.so.1::/lib/x86_64-linux-gnu/libcuda.so + env: + - NVIDIA_CTK_DEBUG=false + - hookName: createContainer + path: /usr/bin/nvidia-cdi-hook + args: + - nvidia-cdi-hook + - enable-cuda-compat + - --host-driver-version=999.88.77 + env: + - NVIDIA_CTK_DEBUG=false + - hookName: createContainer + path: /usr/bin/nvidia-cdi-hook + args: + - nvidia-cdi-hook + - create-soname-symlinks + - --folder + - /lib/x86_64-linux-gnu + env: + - NVIDIA_CTK_DEBUG=false + - hookName: createContainer + path: /usr/bin/nvidia-cdi-hook + args: + - nvidia-cdi-hook + - update-ldcache + - --folder + - /lib/x86_64-linux-gnu + env: + - NVIDIA_CTK_DEBUG=false + - hookName: createContainer + path: /usr/bin/nvidia-cdi-hook + args: + - nvidia-cdi-hook + - disable-device-node-modification + env: + - NVIDIA_CTK_DEBUG=false + mounts: + - hostPath: {{ .driverRoot }}/lib/x86_64-linux-gnu/libcuda.so.999.88.77 + containerPath: /lib/x86_64-linux-gnu/libcuda.so.999.88.77 + options: + - ro + - nosuid + - nodev + - rbind + - rprivate +`, + }, + { + description: "disableHooks1", + options: options{ + format: "yaml", + mode: "nvml", + vendor: "example.com", + class: "device", + driverRoot: driverRoot, + disabledHooks: []string{"enable-cuda-compat"}, + }, + expectedOptions: options{ + format: "yaml", + mode: "nvml", + vendor: "example.com", + class: "device", + nvidiaCDIHookPath: "/usr/bin/nvidia-cdi-hook", + driverRoot: driverRoot, + disabledHooks: []string{"enable-cuda-compat"}, + }, + expectedSpec: `--- +cdiVersion: 0.5.0 +kind: example.com/device +devices: + - name: "0" + containerEdits: + deviceNodes: + - path: /dev/nvidia0 + hostPath: {{ .driverRoot }}/dev/nvidia0 + - name: all + containerEdits: + deviceNodes: + - path: /dev/nvidia0 + hostPath: {{ .driverRoot }}/dev/nvidia0 +containerEdits: + env: + - NVIDIA_CTK_LIBCUDA_DIR=/lib/x86_64-linux-gnu + - NVIDIA_VISIBLE_DEVICES=void + deviceNodes: + - path: /dev/nvidiactl + hostPath: {{ .driverRoot }}/dev/nvidiactl + hooks: + - hookName: createContainer + path: /usr/bin/nvidia-cdi-hook + args: + - nvidia-cdi-hook + - create-symlinks + - --link + - libcuda.so.1::/lib/x86_64-linux-gnu/libcuda.so + env: + - NVIDIA_CTK_DEBUG=false + - hookName: createContainer + path: /usr/bin/nvidia-cdi-hook + args: + - nvidia-cdi-hook + - create-soname-symlinks + - --folder + - /lib/x86_64-linux-gnu + env: + - NVIDIA_CTK_DEBUG=false + - hookName: createContainer + path: /usr/bin/nvidia-cdi-hook + args: + - nvidia-cdi-hook + - update-ldcache + - --folder + - /lib/x86_64-linux-gnu + env: + - NVIDIA_CTK_DEBUG=false + - hookName: createContainer + path: /usr/bin/nvidia-cdi-hook + args: + - nvidia-cdi-hook + - disable-device-node-modification + env: + - NVIDIA_CTK_DEBUG=false + mounts: + - hostPath: {{ .driverRoot }}/lib/x86_64-linux-gnu/libcuda.so.999.88.77 + containerPath: /lib/x86_64-linux-gnu/libcuda.so.999.88.77 + options: + - ro + - nosuid + - nodev + - rbind + - rprivate +`, + }, + { + description: "disableHooks2", + options: options{ + format: "yaml", + mode: "nvml", + vendor: "example.com", + class: "device", + driverRoot: driverRoot, + disabledHooks: []string{"enable-cuda-compat", "update-ldcache"}, + }, + expectedOptions: options{ + format: "yaml", + mode: "nvml", + vendor: "example.com", + class: "device", + nvidiaCDIHookPath: "/usr/bin/nvidia-cdi-hook", + driverRoot: driverRoot, + disabledHooks: []string{"enable-cuda-compat", "update-ldcache"}, + }, + expectedSpec: `--- +cdiVersion: 0.5.0 +kind: example.com/device +devices: + - name: "0" + containerEdits: + deviceNodes: + - path: /dev/nvidia0 + hostPath: {{ .driverRoot }}/dev/nvidia0 + - name: all + containerEdits: + deviceNodes: + - path: /dev/nvidia0 + hostPath: {{ .driverRoot }}/dev/nvidia0 +containerEdits: + env: + - NVIDIA_CTK_LIBCUDA_DIR=/lib/x86_64-linux-gnu + - NVIDIA_VISIBLE_DEVICES=void + deviceNodes: + - path: /dev/nvidiactl + hostPath: {{ .driverRoot }}/dev/nvidiactl + hooks: + - hookName: createContainer + path: /usr/bin/nvidia-cdi-hook + args: + - nvidia-cdi-hook + - create-symlinks + - --link + - libcuda.so.1::/lib/x86_64-linux-gnu/libcuda.so + env: + - NVIDIA_CTK_DEBUG=false + - hookName: createContainer + path: /usr/bin/nvidia-cdi-hook + args: + - nvidia-cdi-hook + - create-soname-symlinks + - --folder + - /lib/x86_64-linux-gnu + env: + - NVIDIA_CTK_DEBUG=false + - hookName: createContainer + path: /usr/bin/nvidia-cdi-hook + args: + - nvidia-cdi-hook + - disable-device-node-modification + env: + - NVIDIA_CTK_DEBUG=false + mounts: + - hostPath: {{ .driverRoot }}/lib/x86_64-linux-gnu/libcuda.so.999.88.77 + containerPath: /lib/x86_64-linux-gnu/libcuda.so.999.88.77 + options: + - ro + - nosuid + - nodev + - rbind + - rprivate +`, + }, + { + description: "disableHooksAll", + options: options{ + format: "yaml", + mode: "nvml", + vendor: "example.com", + class: "device", + driverRoot: driverRoot, + disabledHooks: []string{"all"}, + }, + expectedOptions: options{ + format: "yaml", + mode: "nvml", + vendor: "example.com", + class: "device", + nvidiaCDIHookPath: "/usr/bin/nvidia-cdi-hook", + driverRoot: driverRoot, + disabledHooks: []string{"all"}, + }, + expectedSpec: `--- +cdiVersion: 0.5.0 +kind: example.com/device +devices: + - name: "0" + containerEdits: + deviceNodes: + - path: /dev/nvidia0 + hostPath: {{ .driverRoot }}/dev/nvidia0 + - name: all + containerEdits: + deviceNodes: + - path: /dev/nvidia0 + hostPath: {{ .driverRoot }}/dev/nvidia0 +containerEdits: + env: + - NVIDIA_CTK_LIBCUDA_DIR=/lib/x86_64-linux-gnu + - NVIDIA_VISIBLE_DEVICES=void + deviceNodes: + - path: /dev/nvidiactl + hostPath: {{ .driverRoot }}/dev/nvidiactl + mounts: + - hostPath: {{ .driverRoot }}/lib/x86_64-linux-gnu/libcuda.so.999.88.77 + containerPath: /lib/x86_64-linux-gnu/libcuda.so.999.88.77 + options: + - ro + - nosuid + - nodev + - rbind + - rprivate +`, + }, + } + + for _, tc := range testCases { + t.Run(tc.description, func(t *testing.T) { + c := command{ + logger: logger, + } + + err := c.validateFlags(nil, &tc.options) + require.ErrorIs(t, err, tc.expectedValidateError) + require.EqualValues(t, tc.expectedOptions, tc.options) + + // Set up a mock server, reusing the DGX A100 mock. + server := dgxa100.New() + // Override the driver version to match the version in our mock filesystem. + server.SystemGetDriverVersionFunc = func() (string, nvml.Return) { + return "999.88.77", nvml.SUCCESS + } + // Set the device count to 1 explicitly since we only have a single device node. + server.DeviceGetCountFunc = func() (int, nvml.Return) { + return 1, nvml.SUCCESS + } + for _, d := range server.Devices { + // TODO: This is not implemented in the mock. + (d.(*dgxa100.Device)).GetMaxMigDeviceCountFunc = func() (int, nvml.Return) { + return 0, nvml.SUCCESS + } + } + tc.options.nvmllib = server + + spec, err := c.generateSpec(&tc.options) + require.ErrorIs(t, err, tc.expectedError) + + var buf bytes.Buffer + _, err = spec.WriteTo(&buf) + require.NoError(t, err) + + require.Equal(t, strings.ReplaceAll(tc.expectedSpec, "{{ .driverRoot }}", driverRoot), buf.String()) + }) + } +} diff --git a/cmd/nvidia-ctk/cdi/list/list.go b/cmd/nvidia-ctk/cdi/list/list.go index 886da6e97..6eba90264 100644 --- a/cmd/nvidia-ctk/cdi/list/list.go +++ b/cmd/nvidia-ctk/cdi/list/list.go @@ -17,10 +17,11 @@ package list import ( + "context" "errors" "fmt" - "github.com/urfave/cli/v2" + "github.com/urfave/cli/v3" "tags.cncf.io/container-device-interface/pkg/cdi" "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" @@ -31,7 +32,7 @@ type command struct { } type config struct { - cdiSpecDirs cli.StringSlice + cdiSpecDirs []string } // NewCommand constructs a cdi list command with the specified logger @@ -50,37 +51,37 @@ func (m command) build() *cli.Command { c := cli.Command{ Name: "list", Usage: "List the available CDI devices", - Before: func(c *cli.Context) error { - return m.validateFlags(c, &cfg) + Before: func(ctx context.Context, cmd *cli.Command) (context.Context, error) { + return ctx, m.validateFlags(&cfg) }, - Action: func(c *cli.Context) error { - return m.run(c, &cfg) + Action: func(ctx context.Context, cmd *cli.Command) error { + return m.run(&cfg) }, - } - - c.Flags = []cli.Flag{ - &cli.StringSliceFlag{ - Name: "spec-dir", - Usage: "specify the directories to scan for CDI specifications", - Value: cli.NewStringSlice(cdi.DefaultSpecDirs...), - Destination: &cfg.cdiSpecDirs, + Flags: []cli.Flag{ + &cli.StringSliceFlag{ + Name: "spec-dir", + Usage: "specify the directories to scan for CDI specifications", + Value: cdi.DefaultSpecDirs, + Destination: &cfg.cdiSpecDirs, + Sources: cli.EnvVars("NVIDIA_CTK_CDI_SPEC_DIRS"), + }, }, } return &c } -func (m command) validateFlags(c *cli.Context, cfg *config) error { - if len(cfg.cdiSpecDirs.Value()) == 0 { +func (m command) validateFlags(cfg *config) error { + if len(cfg.cdiSpecDirs) == 0 { return errors.New("at least one CDI specification directory must be specified") } return nil } -func (m command) run(c *cli.Context, cfg *config) error { +func (m command) run(cfg *config) error { registry, err := cdi.NewCache( cdi.WithAutoRefresh(false), - cdi.WithSpecDirs(cfg.cdiSpecDirs.Value()...), + cdi.WithSpecDirs(cfg.cdiSpecDirs...), ) if err != nil { return fmt.Errorf("failed to create CDI cache: %v", err) diff --git a/cmd/nvidia-ctk/cdi/transform/root/root.go b/cmd/nvidia-ctk/cdi/transform/root/root.go index 61cb284a7..21f8daf67 100644 --- a/cmd/nvidia-ctk/cdi/transform/root/root.go +++ b/cmd/nvidia-ctk/cdi/transform/root/root.go @@ -17,11 +17,12 @@ package root import ( + "context" "fmt" "io" "os" - "github.com/urfave/cli/v2" + "github.com/urfave/cli/v3" "tags.cncf.io/container-device-interface/pkg/cdi" "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" @@ -58,51 +59,52 @@ func (m command) build() *cli.Command { opts := options{} c := cli.Command{ - Name: "root", - Usage: "Apply a root transform to a CDI specification", - Before: func(c *cli.Context) error { - return m.validateFlags(c, &opts) + Name: "root", + Usage: "Apply a root transform to a CDI specification", + UseShortOptionHandling: true, + EnableShellCompletion: true, + Before: func(ctx context.Context, cmd *cli.Command) (context.Context, error) { + return ctx, m.validateFlags(&opts) }, - Action: func(c *cli.Context) error { - return m.run(c, &opts) + Action: func(ctx context.Context, cmd *cli.Command) error { + return m.run(&opts) }, - } - - c.Flags = []cli.Flag{ - &cli.StringFlag{ - Name: "from", - Usage: "specify the root to be transformed", - Destination: &opts.from, - }, - &cli.StringFlag{ - Name: "input", - Usage: "Specify the file to read the CDI specification from. If this is '-' the specification is read from STDIN", - Value: "-", - Destination: &opts.input, - }, - &cli.StringFlag{ - Name: "output", - Usage: "Specify the file to output the generated CDI specification to. If this is '' the specification is output to STDOUT", - Destination: &opts.output, - }, - &cli.StringFlag{ - Name: "relative-to", - Usage: "specify whether the transform is relative to the host or to the container. One of [ host | container ]", - Value: "host", - Destination: &opts.relativeTo, - }, - &cli.StringFlag{ - Name: "to", - Usage: "specify the replacement root. If this is the same as the from root, the transform is a no-op.", - Value: "", - Destination: &opts.to, + Flags: []cli.Flag{ + &cli.StringFlag{ + Name: "from", + Usage: "specify the root to be transformed", + Destination: &opts.from, + }, + &cli.StringFlag{ + Name: "input", + Usage: "Specify the file to read the CDI specification from. If this is '-' the specification is read from STDIN", + Value: "-", + Destination: &opts.input, + }, + &cli.StringFlag{ + Name: "output", + Usage: "Specify the file to output the generated CDI specification to. If this is '' the specification is output to STDOUT", + Destination: &opts.output, + }, + &cli.StringFlag{ + Name: "relative-to", + Usage: "specify whether the transform is relative to the host or to the container. One of [ host | container ]", + Value: "host", + Destination: &opts.relativeTo, + }, + &cli.StringFlag{ + Name: "to", + Usage: "specify the replacement root. If this is the same as the from root, the transform is a no-op.", + Value: "", + Destination: &opts.to, + }, }, } return &c } -func (m command) validateFlags(c *cli.Context, opts *options) error { +func (m command) validateFlags(opts *options) error { switch opts.relativeTo { case "host": case "container": @@ -112,7 +114,7 @@ func (m command) validateFlags(c *cli.Context, opts *options) error { return nil } -func (m command) run(c *cli.Context, opts *options) error { +func (m command) run(opts *options) error { spec, err := opts.Load() if err != nil { return fmt.Errorf("failed to load CDI specification: %w", err) diff --git a/cmd/nvidia-ctk/cdi/transform/transform.go b/cmd/nvidia-ctk/cdi/transform/transform.go index 9528a1fc2..f55050006 100644 --- a/cmd/nvidia-ctk/cdi/transform/transform.go +++ b/cmd/nvidia-ctk/cdi/transform/transform.go @@ -17,7 +17,7 @@ package transform import ( - "github.com/urfave/cli/v2" + "github.com/urfave/cli/v3" "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk/cdi/transform/root" "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" @@ -40,12 +40,9 @@ func (m command) build() *cli.Command { c := cli.Command{ Name: "transform", Usage: "Apply a transform to a CDI specification", - } - - c.Flags = []cli.Flag{} - - c.Subcommands = []*cli.Command{ - root.NewCommand(m.logger), + Commands: []*cli.Command{ + root.NewCommand(m.logger), + }, } return &c diff --git a/cmd/nvidia-ctk/config/config.go b/cmd/nvidia-ctk/config/config.go index e1e163cae..49bcd166b 100644 --- a/cmd/nvidia-ctk/config/config.go +++ b/cmd/nvidia-ctk/config/config.go @@ -17,13 +17,14 @@ package config import ( + "context" "errors" "fmt" "reflect" "strconv" "strings" - "github.com/urfave/cli/v2" + "github.com/urfave/cli/v3" createdefault "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk/config/create-default" "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk/config/flags" @@ -39,7 +40,7 @@ type command struct { type options struct { flags.Options setListSeparator string - sets cli.StringSlice + sets []string } // NewCommand constructs an config command with the specified logger @@ -56,69 +57,69 @@ func (m command) build() *cli.Command { // Create the 'config' command c := cli.Command{ - Name: "config", - Usage: "Interact with the NVIDIA Container Toolkit configuration", - Before: func(ctx *cli.Context) error { - return validateFlags(ctx, &opts) + Name: "config", + Usage: "Interact with the NVIDIA Container Toolkit configuration", + UseShortOptionHandling: true, + EnableShellCompletion: true, + Before: func(ctx context.Context, cmd *cli.Command) (context.Context, error) { + return ctx, m.validateFlags(&opts) }, - Action: func(ctx *cli.Context) error { - return run(ctx, &opts) + Action: func(ctx context.Context, cmd *cli.Command) error { + return m.run(&opts) }, - } - - c.Flags = []cli.Flag{ - &cli.StringFlag{ - Name: "config-file", - Aliases: []string{"config", "c"}, - Usage: "Specify the config file to modify.", - Value: config.GetConfigFilePath(), - Destination: &opts.Config, - }, - &cli.StringSliceFlag{ - Name: "set", - Usage: "Set a config value using the pattern 'key[=value]'. " + - "Specifying only 'key' is equivalent to 'key=true' for boolean settings. " + - "This flag can be specified multiple times, but only the last value for a specific " + - "config option is applied. " + - "If the setting represents a list, the elements are colon-separated.", - Destination: &opts.sets, - }, - &cli.StringFlag{ - Name: "set-list-separator", - Usage: "Specify a separator for lists applied using the set command.", - Hidden: true, - Value: ":", - Destination: &opts.setListSeparator, - }, - &cli.BoolFlag{ - Name: "in-place", - Aliases: []string{"i"}, - Usage: "Modify the config file in-place", - Destination: &opts.InPlace, + Commands: []*cli.Command{ + createdefault.NewCommand(m.logger), }, - &cli.StringFlag{ - Name: "output", - Aliases: []string{"o"}, - Usage: "Specify the output file to write to; If not specified, the output is written to stdout", - Destination: &opts.Output, + Flags: []cli.Flag{ + &cli.StringFlag{ + Name: "config-file", + Aliases: []string{"config", "c"}, + Usage: "Specify the config file to modify.", + Value: config.GetConfigFilePath(), + Destination: &opts.Config, + }, + &cli.StringSliceFlag{ + Name: "set", + Usage: "Set a config value using the pattern 'key[=value]'. " + + "Specifying only 'key' is equivalent to 'key=true' for boolean settings. " + + "This flag can be specified multiple times, but only the last value for a specific " + + "config option is applied. " + + "If the setting represents a list, the elements are colon-separated.", + Destination: &opts.sets, + }, + &cli.StringFlag{ + Name: "set-list-separator", + Usage: "Specify a separator for lists applied using the set command.", + Hidden: true, + Value: ":", + Destination: &opts.setListSeparator, + }, + &cli.BoolFlag{ + Name: "in-place", + Aliases: []string{"i"}, + Usage: "Modify the config file in-place", + Destination: &opts.InPlace, + }, + &cli.StringFlag{ + Name: "output", + Aliases: []string{"o"}, + Usage: "Specify the output file to write to; If not specified, the output is written to stdout", + Destination: &opts.Output, + }, }, } - c.Subcommands = []*cli.Command{ - createdefault.NewCommand(m.logger), - } - return &c } -func validateFlags(c *cli.Context, opts *options) error { +func (m command) validateFlags(opts *options) error { if opts.setListSeparator == "" { return fmt.Errorf("set-list-separator must be set") } return nil } -func run(c *cli.Context, opts *options) error { +func (m command) run(opts *options) error { cfgToml, err := config.New( config.WithConfigFile(opts.Config), ) @@ -126,7 +127,7 @@ func run(c *cli.Context, opts *options) error { return fmt.Errorf("unable to create config: %v", err) } - for _, set := range opts.sets.Value() { + for _, set := range opts.sets { key, value, err := setFlagToKeyValue(set, opts.setListSeparator) if err != nil { return fmt.Errorf("invalid --set option %v: %w", set, err) @@ -194,7 +195,14 @@ func setFlagToKeyValue(setFlag string, setListSeparator string) (string, interfa case reflect.String: return key, value, nil case reflect.Slice: - valueParts := strings.Split(value, setListSeparator) + valueParts := []string{value} + for _, sep := range []string{setListSeparator, ","} { + if !strings.Contains(value, sep) { + continue + } + valueParts = strings.Split(value, sep) + break + } switch field.Elem().Kind() { case reflect.String: return key, valueParts, nil diff --git a/cmd/nvidia-ctk/config/create-default/create-default.go b/cmd/nvidia-ctk/config/create-default/create-default.go index 929a9c3eb..8225b6994 100644 --- a/cmd/nvidia-ctk/config/create-default/create-default.go +++ b/cmd/nvidia-ctk/config/create-default/create-default.go @@ -14,12 +14,13 @@ # limitations under the License. **/ -package defaultsubcommand +package createdefault import ( + "context" "fmt" - "github.com/urfave/cli/v2" + "github.com/urfave/cli/v3" "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk/config/flags" "github.com/NVIDIA/nvidia-container-toolkit/internal/config" @@ -38,7 +39,7 @@ func NewCommand(logger logger.Interface) *cli.Command { return c.build() } -// build creates the CLI command +// build func (m command) build() *cli.Command { opts := flags.Options{} @@ -47,47 +48,43 @@ func (m command) build() *cli.Command { Name: "default", Aliases: []string{"create-default", "generate-default"}, Usage: "Generate the default NVIDIA Container Toolkit configuration file", - Before: func(c *cli.Context) error { - return m.validateFlags(c, &opts) + Before: func(ctx context.Context, cmd *cli.Command) (context.Context, error) { + return ctx, m.validateFlags(cmd, &opts) }, - Action: func(c *cli.Context) error { - return m.run(c, &opts) + Action: func(ctx context.Context, cmd *cli.Command) error { + return m.run(cmd, &opts) }, - } - - c.Flags = []cli.Flag{ - &cli.StringFlag{ - Name: "output", - Aliases: []string{"o"}, - Usage: "Specify the output file to write to; If not specified, the output is written to stdout", - Destination: &opts.Output, + Flags: []cli.Flag{ + &cli.StringFlag{ + Name: "output", + Aliases: []string{"o"}, + Usage: "Specify the output file to write to; If not specified, the output is written to stdout", + Destination: &opts.Output, + }, }, } return &c } -func (m command) validateFlags(c *cli.Context, opts *flags.Options) error { - return opts.Validate() +func (m command) validateFlags(c *cli.Command, opts *flags.Options) error { + return nil } -func (m command) run(c *cli.Context, opts *flags.Options) error { +func (m command) run(c *cli.Command, opts *flags.Options) error { cfgToml, err := config.New() if err != nil { - return fmt.Errorf("unable to load or create config: %v", err) + return fmt.Errorf("failed to create default config: %v", err) } - if err := opts.EnsureOutputFolder(); err != nil { - return fmt.Errorf("failed to create output directory: %v", err) - } output, err := opts.CreateOutput() if err != nil { return fmt.Errorf("failed to open output file: %v", err) } defer output.Close() - if _, err = cfgToml.Save(output); err != nil { - return fmt.Errorf("failed to write output: %v", err) + if _, err := cfgToml.Save(output); err != nil { + return fmt.Errorf("failed to save config: %v", err) } return nil diff --git a/cmd/nvidia-ctk/hook/hook.go b/cmd/nvidia-ctk/hook/hook.go index a638d2a71..f5d42eb44 100644 --- a/cmd/nvidia-ctk/hook/hook.go +++ b/cmd/nvidia-ctk/hook/hook.go @@ -17,17 +17,19 @@ package hook import ( + "context" + "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-cdi-hook/commands" "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" - "github.com/urfave/cli/v2" + "github.com/urfave/cli/v3" ) type hookCommand struct { logger logger.Interface } -// NewCommand constructs a hook command with the specified logger +// NewCommand constructs CLI subcommand for handling CDI hooks. func NewCommand(logger logger.Interface) *cli.Command { c := hookCommand{ logger: logger, @@ -37,13 +39,23 @@ func NewCommand(logger logger.Interface) *cli.Command { // build func (m hookCommand) build() *cli.Command { - // Create the 'hook' command + // Create the 'hook' subcommand hook := cli.Command{ Name: "hook", Usage: "A collection of hooks that may be injected into an OCI spec", + // We set the default action for the `hook` subcommand to issue a + // warning and exit with no error. + // This means that if an unsupported hook is run, a container will not fail + // to launch. An unsupported hook could be the result of a CDI specification + // referring to a new hook that is not yet supported by an older NVIDIA + // Container Toolkit version or a hook that has been removed in newer + // version. + Action: func(ctx context.Context, cmd *cli.Command) error { + commands.IssueUnsupportedHookWarning(m.logger, cmd) + return nil + }, + Commands: commands.New(m.logger), } - hook.Subcommands = commands.New(m.logger) - return &hook } diff --git a/cmd/nvidia-ctk/info/info.go b/cmd/nvidia-ctk/info/info.go index 9e8ba8cd6..f9c0cffc3 100644 --- a/cmd/nvidia-ctk/info/info.go +++ b/cmd/nvidia-ctk/info/info.go @@ -17,7 +17,7 @@ package info import ( - "github.com/urfave/cli/v2" + "github.com/urfave/cli/v3" "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" ) @@ -42,7 +42,5 @@ func (m command) build() *cli.Command { Usage: "Provide information about the system", } - info.Subcommands = []*cli.Command{} - return &info } diff --git a/cmd/nvidia-ctk/main.go b/cmd/nvidia-ctk/main.go index 9a12ae163..4a3d01dba 100644 --- a/cmd/nvidia-ctk/main.go +++ b/cmd/nvidia-ctk/main.go @@ -17,6 +17,7 @@ package main import ( + "context" "os" "github.com/sirupsen/logrus" @@ -28,8 +29,9 @@ import ( "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk/runtime" "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk/system" "github.com/NVIDIA/nvidia-container-toolkit/internal/info" + "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" - cli "github.com/urfave/cli/v2" + cli "github.com/urfave/cli/v3" ) // options defines the options that can be set for the CLI through config files, @@ -39,6 +41,8 @@ type options struct { Debug bool // Quiet indicates whether the CLI is started in "quiet" mode Quiet bool + // Config specifies the path to the config file + Config string } func main() { @@ -48,57 +52,66 @@ func main() { opts := options{} // Create the top-level CLI - c := cli.NewApp() - c.Name = "NVIDIA Container Toolkit CLI" - c.UseShortOptionHandling = true - c.EnableBashCompletion = true - c.Usage = "Tools to configure the NVIDIA Container Toolkit" - c.Version = info.GetVersionString() + c := cli.Command{ + DisableSliceFlagSeparator: true, + Name: "NVIDIA Container Toolkit CLI", + UseShortOptionHandling: true, + EnableShellCompletion: true, + Usage: "Tools to configure the NVIDIA Container Toolkit", + Version: info.GetVersionString(), + // Set log-level for all subcommands + Before: func(ctx context.Context, cmd *cli.Command) (context.Context, error) { + logLevel := logrus.InfoLevel + if opts.Debug { + logLevel = logrus.DebugLevel + } + if opts.Quiet { + logLevel = logrus.ErrorLevel + } + logger.SetLevel(logLevel) - // Setup the flags for this command - c.Flags = []cli.Flag{ - &cli.BoolFlag{ - Name: "debug", - Aliases: []string{"d"}, - Usage: "Enable debug-level logging", - Destination: &opts.Debug, - EnvVars: []string{"NVIDIA_CTK_DEBUG"}, + return ctx, nil }, - &cli.BoolFlag{ - Name: "quiet", - Usage: "Suppress all output except for errors; overrides --debug", - Destination: &opts.Quiet, - EnvVars: []string{"NVIDIA_CTK_QUIET"}, + // Define the subcommands + Commands: getCommands(logger, &opts.Config), + Flags: []cli.Flag{ + &cli.BoolFlag{ + Name: "debug", + Aliases: []string{"d"}, + Usage: "Enable debug-level logging", + Destination: &opts.Debug, + Sources: cli.EnvVars("NVIDIA_CTK_DEBUG"), + }, + &cli.BoolFlag{ + Name: "quiet", + Usage: "Suppress all output except for errors; overrides --debug", + Destination: &opts.Quiet, + Sources: cli.EnvVars("NVIDIA_CTK_QUIET"), + }, + &cli.StringFlag{ + Name: "config", + Usage: "Path to the config file", + Destination: &opts.Config, + Sources: cli.EnvVars("NVIDIA_CTK_CONFIG"), + }, }, } - // Set log-level for all subcommands - c.Before = func(c *cli.Context) error { - logLevel := logrus.InfoLevel - if opts.Debug { - logLevel = logrus.DebugLevel - } - if opts.Quiet { - logLevel = logrus.ErrorLevel - } - logger.SetLevel(logLevel) - return nil + // Run the CLI + err := c.Run(context.Background(), os.Args) + if err != nil { + logger.Errorf("%v", err) + os.Exit(1) } +} - // Define the subcommands - c.Commands = []*cli.Command{ +func getCommands(logger logger.Interface, configFilePath *string) []*cli.Command { + return []*cli.Command{ hook.NewCommand(logger), runtime.NewCommand(logger), infoCLI.NewCommand(logger), - cdi.NewCommand(logger), + cdi.NewCommand(logger, configFilePath), system.NewCommand(logger), config.NewCommand(logger), } - - // Run the CLI - err := c.Run(os.Args) - if err != nil { - logger.Errorf("%v", err) - os.Exit(1) - } } diff --git a/cmd/nvidia-ctk/runtime/configure/configure.go b/cmd/nvidia-ctk/runtime/configure/configure.go index 6f8f42f31..ee419af83 100644 --- a/cmd/nvidia-ctk/runtime/configure/configure.go +++ b/cmd/nvidia-ctk/runtime/configure/configure.go @@ -17,11 +17,11 @@ package configure import ( - "encoding/json" + "context" "fmt" "path/filepath" - "github.com/urfave/cli/v2" + "github.com/urfave/cli/v3" "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine" @@ -29,6 +29,7 @@ import ( "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine/crio" "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine/docker" "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/ocihook" + "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/toml" ) const ( @@ -44,13 +45,17 @@ const ( defaultContainerdConfigFilePath = "/etc/containerd/config.toml" defaultCrioConfigFilePath = "/etc/crio/crio.conf" defaultDockerConfigFilePath = "/etc/docker/daemon.json" + + defaultConfigSource = configSourceFile + configSourceCommand = "command" + configSourceFile = "file" ) type command struct { logger logger.Interface } -// NewCommand constructs an configure command with the specified logger +// NewCommand constructs a configure command with the specified logger func NewCommand(logger logger.Interface) *cli.Command { c := command{ logger: logger, @@ -64,11 +69,11 @@ type config struct { dryRun bool runtime string configFilePath string + executablePath string + configSource string mode string hookFilePath string - runtimeConfigOverrideJSON string - nvidiaRuntime struct { name string path string @@ -90,85 +95,88 @@ func (m command) build() *cli.Command { configure := cli.Command{ Name: "configure", Usage: "Add a runtime to the specified container engine", - Before: func(c *cli.Context) error { - return m.validateFlags(c, &config) - }, - Action: func(c *cli.Context) error { - return m.configureWrapper(c, &config) - }, - } - - configure.Flags = []cli.Flag{ - &cli.BoolFlag{ - Name: "dry-run", - Usage: "update the runtime configuration as required but don't write changes to disk", - Destination: &config.dryRun, - }, - &cli.StringFlag{ - Name: "runtime", - Usage: "the target runtime engine; one of [containerd, crio, docker]", - Value: defaultRuntime, - Destination: &config.runtime, - }, - &cli.StringFlag{ - Name: "config", - Usage: "path to the config file for the target runtime", - Destination: &config.configFilePath, - }, - &cli.StringFlag{ - Name: "config-mode", - Usage: "the config mode for runtimes that support multiple configuration mechanisms", - Destination: &config.mode, - }, - &cli.StringFlag{ - Name: "oci-hook-path", - Usage: "the path to the OCI runtime hook to create if --config-mode=oci-hook is specified. If no path is specified, the generated hook is output to STDOUT.\n\tNote: The use of OCI hooks is deprecated.", - Destination: &config.hookFilePath, - }, - &cli.StringFlag{ - Name: "nvidia-runtime-name", - Usage: "specify the name of the NVIDIA runtime that will be added", - Value: defaultNVIDIARuntimeName, - Destination: &config.nvidiaRuntime.name, - }, - &cli.StringFlag{ - Name: "nvidia-runtime-path", - Aliases: []string{"runtime-path"}, - Usage: "specify the path to the NVIDIA runtime executable", - Value: defaultNVIDIARuntimeExecutable, - Destination: &config.nvidiaRuntime.path, + Before: func(ctx context.Context, cmd *cli.Command) (context.Context, error) { + return ctx, m.validateFlags(&config) }, - &cli.StringFlag{ - Name: "nvidia-runtime-hook-path", - Usage: "specify the path to the NVIDIA Container Runtime hook executable", - Value: defaultNVIDIARuntimeHookExpecutablePath, - Destination: &config.nvidiaRuntime.hookPath, + Action: func(ctx context.Context, cmd *cli.Command) error { + return m.configureWrapper(&config) }, - &cli.BoolFlag{ - Name: "nvidia-set-as-default", - Aliases: []string{"set-as-default"}, - Usage: "set the NVIDIA runtime as the default runtime", - Destination: &config.nvidiaRuntime.setAsDefault, - }, - &cli.BoolFlag{ - Name: "cdi.enabled", - Aliases: []string{"cdi.enable"}, - Usage: "Enable CDI in the configured runtime", - Destination: &config.cdi.enabled, - }, - &cli.StringFlag{ - Name: "runtime-config-override", - Destination: &config.runtimeConfigOverrideJSON, - Usage: "specify additional runtime options as a JSON string. The paths are relative to the runtime config.", - Value: "{}", - EnvVars: []string{"RUNTIME_CONFIG_OVERRIDE"}, + Flags: []cli.Flag{ + &cli.BoolFlag{ + Name: "dry-run", + Usage: "update the runtime configuration as required but don't write changes to disk", + Destination: &config.dryRun, + }, + &cli.StringFlag{ + Name: "runtime", + Usage: "the target runtime engine; one of [containerd, crio, docker]", + Value: defaultRuntime, + Destination: &config.runtime, + }, + &cli.StringFlag{ + Name: "config", + Usage: "path to the config file for the target runtime", + Destination: &config.configFilePath, + }, + &cli.StringFlag{ + Name: "executable-path", + Usage: "The path to the runtime executable. This is used to extract the current config", + Destination: &config.executablePath, + }, + &cli.StringFlag{ + Name: "config-mode", + Usage: "the config mode for runtimes that support multiple configuration mechanisms", + Destination: &config.mode, + }, + &cli.StringFlag{ + Name: "config-source", + Usage: "the source to retrieve the container runtime configuration; one of [command, file]\"", + Destination: &config.configSource, + Value: defaultConfigSource, + }, + &cli.StringFlag{ + Name: "oci-hook-path", + Usage: "the path to the OCI runtime hook to create if --config-mode=oci-hook is specified. If no path is specified, the generated hook is output to STDOUT.\n\tNote: The use of OCI hooks is deprecated.", + Destination: &config.hookFilePath, + }, + &cli.StringFlag{ + Name: "nvidia-runtime-name", + Usage: "specify the name of the NVIDIA runtime that will be added", + Value: defaultNVIDIARuntimeName, + Destination: &config.nvidiaRuntime.name, + }, + &cli.StringFlag{ + Name: "nvidia-runtime-path", + Aliases: []string{"runtime-path"}, + Usage: "specify the path to the NVIDIA runtime executable", + Value: defaultNVIDIARuntimeExecutable, + Destination: &config.nvidiaRuntime.path, + }, + &cli.StringFlag{ + Name: "nvidia-runtime-hook-path", + Usage: "specify the path to the NVIDIA Container Runtime hook executable", + Value: defaultNVIDIARuntimeHookExpecutablePath, + Destination: &config.nvidiaRuntime.hookPath, + }, + &cli.BoolFlag{ + Name: "nvidia-set-as-default", + Aliases: []string{"set-as-default"}, + Usage: "set the NVIDIA runtime as the default runtime", + Destination: &config.nvidiaRuntime.setAsDefault, + }, + &cli.BoolFlag{ + Name: "cdi.enabled", + Aliases: []string{"cdi.enable", "enable-cdi"}, + Usage: "Enable CDI in the configured runtime", + Destination: &config.cdi.enabled, + }, }, } return &configure } -func (m command) validateFlags(c *cli.Context, config *config) error { +func (m command) validateFlags(config *config) error { if config.mode == "oci-hook" { if !filepath.IsAbs(config.nvidiaRuntime.hookPath) { return fmt.Errorf("the NVIDIA runtime hook path %q is not an absolute path", config.nvidiaRuntime.hookPath) @@ -204,46 +212,73 @@ func (m command) validateFlags(c *cli.Context, config *config) error { config.cdi.enabled = false } - if config.runtimeConfigOverrideJSON != "" && config.runtime != "containerd" { - m.logger.Warningf("Ignoring runtime-config-override flag for %v", config.runtime) - config.runtimeConfigOverrideJSON = "" + if config.executablePath != "" && config.runtime == "docker" { + m.logger.Warningf("Ignoring executable-path=%q flag for %v", config.executablePath, config.runtime) + config.executablePath = "" + } + + switch config.configSource { + case configSourceCommand: + if config.runtime == "docker" { + m.logger.Warningf("A %v Config Source is not supported for %v; using %v", config.configSource, config.runtime, configSourceFile) + config.configSource = configSourceFile + } + case configSourceFile: + break + default: + return fmt.Errorf("unrecognized Config Source: %v", config.configSource) + } + + if config.configFilePath == "" { + switch config.runtime { + case "containerd": + config.configFilePath = defaultContainerdConfigFilePath + case "crio": + config.configFilePath = defaultCrioConfigFilePath + case "docker": + config.configFilePath = defaultDockerConfigFilePath + } } return nil } // configureWrapper updates the specified container engine config to enable the NVIDIA runtime -func (m command) configureWrapper(c *cli.Context, config *config) error { +func (m command) configureWrapper(config *config) error { switch config.mode { case "oci-hook": - return m.configureOCIHook(c, config) + return m.configureOCIHook(config) case "config-file": - return m.configureConfigFile(c, config) + return m.configureConfigFile(config) } return fmt.Errorf("unsupported config-mode: %v", config.mode) } // configureConfigFile updates the specified container engine config file to enable the NVIDIA runtime. -func (m command) configureConfigFile(c *cli.Context, config *config) error { - configFilePath := config.resolveConfigFilePath() +func (m command) configureConfigFile(config *config) error { + configSource, err := config.resolveConfigSource() + if err != nil { + return err + } var cfg engine.Interface - var err error switch config.runtime { case "containerd": cfg, err = containerd.New( containerd.WithLogger(m.logger), - containerd.WithPath(configFilePath), + containerd.WithPath(config.configFilePath), + containerd.WithConfigSource(configSource), ) case "crio": cfg, err = crio.New( crio.WithLogger(m.logger), - crio.WithPath(configFilePath), + crio.WithPath(config.configFilePath), + crio.WithConfigSource(configSource), ) case "docker": cfg, err = docker.New( docker.WithLogger(m.logger), - docker.WithPath(configFilePath), + docker.WithPath(config.configFilePath), ) default: err = fmt.Errorf("unrecognized runtime '%v'", config.runtime) @@ -252,27 +287,20 @@ func (m command) configureConfigFile(c *cli.Context, config *config) error { return fmt.Errorf("unable to load config for runtime %v: %v", config.runtime, err) } - runtimeConfigOverride, err := config.runtimeConfigOverride() - if err != nil { - return fmt.Errorf("unable to parse config overrides: %w", err) - } - err = cfg.AddRuntime( config.nvidiaRuntime.name, config.nvidiaRuntime.path, config.nvidiaRuntime.setAsDefault, - runtimeConfigOverride, ) if err != nil { return fmt.Errorf("unable to update config: %v", err) } - err = enableCDI(config, cfg) - if err != nil { - return fmt.Errorf("failed to enable CDI in %s: %w", config.runtime, err) + if config.cdi.enabled { + cfg.EnableCDI() } - outputPath := config.getOuputConfigPath() + outputPath := config.getOutputConfigPath() n, err := cfg.Save(outputPath) if err != nil { return fmt.Errorf("unable to flush config: %v", err) @@ -290,65 +318,42 @@ func (m command) configureConfigFile(c *cli.Context, config *config) error { return nil } -// resolveConfigFilePath returns the default config file path for the configured container engine -func (c *config) resolveConfigFilePath() string { - if c.configFilePath != "" { - return c.configFilePath +// resolveConfigSource returns the default config source or the user provided config source +func (c *config) resolveConfigSource() (toml.Loader, error) { + switch c.configSource { + case configSourceCommand: + return c.getCommandConfigSource(), nil + case configSourceFile: + return toml.FromFile(c.configFilePath), nil + default: + return nil, fmt.Errorf("unrecognized config source: %s", c.configSource) } +} + +// getConfigSourceCommand returns the default cli command to fetch the current runtime config +func (c *config) getCommandConfigSource() toml.Loader { switch c.runtime { case "containerd": - return defaultContainerdConfigFilePath + return containerd.CommandLineSource("", c.executablePath) case "crio": - return defaultCrioConfigFilePath - case "docker": - return defaultDockerConfigFilePath + return crio.CommandLineSource("", c.executablePath) } - return "" + return toml.Empty } -// getOuputConfigPath returns the configured config path or "" if dry-run is enabled -func (c *config) getOuputConfigPath() string { +// getOutputConfigPath returns the configured config path or "" if dry-run is enabled +func (c *config) getOutputConfigPath() string { if c.dryRun { return "" } - return c.resolveConfigFilePath() -} - -// runtimeConfigOverride converts the specified runtimeConfigOverride JSON string to a map. -func (o *config) runtimeConfigOverride() (map[string]interface{}, error) { - if o.runtimeConfigOverrideJSON == "" { - return nil, nil - } - - runtimeOptions := make(map[string]interface{}) - if err := json.Unmarshal([]byte(o.runtimeConfigOverrideJSON), &runtimeOptions); err != nil { - return nil, fmt.Errorf("failed to read %v as JSON: %w", o.runtimeConfigOverrideJSON, err) - } - - return runtimeOptions, nil + return c.configFilePath } // configureOCIHook creates and configures the OCI hook for the NVIDIA runtime -func (m *command) configureOCIHook(c *cli.Context, config *config) error { +func (m *command) configureOCIHook(config *config) error { err := ocihook.CreateHook(config.hookFilePath, config.nvidiaRuntime.hookPath) if err != nil { return fmt.Errorf("error creating OCI hook: %v", err) } return nil } - -// enableCDI enables the use of CDI in the corresponding container engine -func enableCDI(config *config, cfg engine.Interface) error { - if !config.cdi.enabled { - return nil - } - switch config.runtime { - case "containerd": - cfg.Set("enable_cdi", true) - case "docker": - cfg.Set("features", map[string]bool{"cdi": true}) - default: - return fmt.Errorf("enabling CDI in %s is not supported", config.runtime) - } - return nil -} diff --git a/cmd/nvidia-ctk/runtime/runtime.go b/cmd/nvidia-ctk/runtime/runtime.go index 1e3e7a546..6bb42fbba 100644 --- a/cmd/nvidia-ctk/runtime/runtime.go +++ b/cmd/nvidia-ctk/runtime/runtime.go @@ -17,7 +17,7 @@ package runtime import ( - "github.com/urfave/cli/v2" + "github.com/urfave/cli/v3" "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk/runtime/configure" "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" @@ -40,10 +40,9 @@ func (m runtimeCommand) build() *cli.Command { runtime := cli.Command{ Name: "runtime", Usage: "A collection of runtime-related utilities for the NVIDIA Container Toolkit", - } - - runtime.Subcommands = []*cli.Command{ - configure.NewCommand(m.logger), + Commands: []*cli.Command{ + configure.NewCommand(m.logger), + }, } return &runtime diff --git a/cmd/nvidia-ctk/system/create-dev-char-symlinks/create-dev-char-symlinks.go b/cmd/nvidia-ctk/system/create-dev-char-symlinks/create-dev-char-symlinks.go index 7d269b92f..aff17ada2 100644 --- a/cmd/nvidia-ctk/system/create-dev-char-symlinks/create-dev-char-symlinks.go +++ b/cmd/nvidia-ctk/system/create-dev-char-symlinks/create-dev-char-symlinks.go @@ -17,15 +17,12 @@ package devchar import ( + "context" "fmt" "os" - "os/signal" "path/filepath" - "strings" - "syscall" - "github.com/fsnotify/fsnotify" - "github.com/urfave/cli/v2" + "github.com/urfave/cli/v3" "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" "github.com/NVIDIA/nvidia-container-toolkit/internal/system/nvdevices" @@ -44,7 +41,6 @@ type config struct { devCharPath string driverRoot string dryRun bool - watch bool createAll bool createDeviceNodes bool loadKernelModules bool @@ -66,68 +62,60 @@ func (m command) build() *cli.Command { c := cli.Command{ Name: "create-dev-char-symlinks", Usage: "A utility to create symlinks to possible /dev/nv* devices in /dev/char", - Before: func(c *cli.Context) error { - return m.validateFlags(c, &cfg) + Before: func(ctx context.Context, cmd *cli.Command) (context.Context, error) { + return ctx, m.validateFlags(&cfg) }, - Action: func(c *cli.Context) error { - return m.run(c, &cfg) + Action: func(ctx context.Context, cmd *cli.Command) error { + return m.run(&cfg) }, - } - - c.Flags = []cli.Flag{ - &cli.StringFlag{ - Name: "dev-char-path", - Usage: "The path at which the symlinks will be created. Symlinks will be created as `DEV_CHAR`/MAJOR:MINOR where MAJOR and MINOR are the major and minor numbers of a corresponding device node.", - Value: defaultDevCharPath, - Destination: &cfg.devCharPath, - EnvVars: []string{"DEV_CHAR_PATH"}, - }, - &cli.StringFlag{ - Name: "driver-root", - Usage: "The path to the driver root. `DRIVER_ROOT`/dev is searched for NVIDIA device nodes.", - Value: "/", - Destination: &cfg.driverRoot, - EnvVars: []string{"NVIDIA_DRIVER_ROOT", "DRIVER_ROOT"}, - }, - &cli.BoolFlag{ - Name: "watch", - Usage: "If set, the command will watch for changes to the driver root and recreate the symlinks when changes are detected.", - Value: false, - Destination: &cfg.watch, - EnvVars: []string{"WATCH"}, - }, - &cli.BoolFlag{ - Name: "create-all", - Usage: "Create all possible /dev/char symlinks instead of limiting these to existing device nodes.", - Destination: &cfg.createAll, - EnvVars: []string{"CREATE_ALL"}, - }, - &cli.BoolFlag{ - Name: "load-kernel-modules", - Usage: "Load the NVIDIA kernel modules before creating symlinks. This is only applicable when --create-all is set.", - Destination: &cfg.loadKernelModules, - EnvVars: []string{"LOAD_KERNEL_MODULES"}, - }, - &cli.BoolFlag{ - Name: "create-device-nodes", - Usage: "Create the NVIDIA control device nodes in the driver root if they do not exist. This is only applicable when --create-all is set", - Destination: &cfg.createDeviceNodes, - EnvVars: []string{"CREATE_DEVICE_NODES"}, - }, - &cli.BoolFlag{ - Name: "dry-run", - Usage: "If set, the command will not create any symlinks.", - Value: false, - Destination: &cfg.dryRun, - EnvVars: []string{"DRY_RUN"}, + Flags: []cli.Flag{ + &cli.StringFlag{ + Name: "dev-char-path", + Usage: "The path at which the symlinks will be created. Symlinks will be created as `DEV_CHAR`/MAJOR:MINOR where MAJOR and MINOR are the major and minor numbers of a corresponding device node.", + Value: defaultDevCharPath, + Destination: &cfg.devCharPath, + Sources: cli.EnvVars("DEV_CHAR_PATH"), + }, + &cli.StringFlag{ + Name: "driver-root", + Usage: "The path to the driver root. `DRIVER_ROOT`/dev is searched for NVIDIA device nodes.", + Value: "/", + Destination: &cfg.driverRoot, + Sources: cli.EnvVars("NVIDIA_DRIVER_ROOT", "DRIVER_ROOT"), + }, + &cli.BoolFlag{ + Name: "create-all", + Usage: "Create all possible /dev/char symlinks instead of limiting these to existing device nodes.", + Destination: &cfg.createAll, + Sources: cli.EnvVars("CREATE_ALL"), + }, + &cli.BoolFlag{ + Name: "load-kernel-modules", + Usage: "Load the NVIDIA kernel modules before creating symlinks. This is only applicable when --create-all is set.", + Destination: &cfg.loadKernelModules, + Sources: cli.EnvVars("LOAD_KERNEL_MODULES"), + }, + &cli.BoolFlag{ + Name: "create-device-nodes", + Usage: "Create the NVIDIA control device nodes in the driver root if they do not exist. This is only applicable when --create-all is set", + Destination: &cfg.createDeviceNodes, + Sources: cli.EnvVars("CREATE_DEVICE_NODES"), + }, + &cli.BoolFlag{ + Name: "dry-run", + Usage: "If set, the command will not create any symlinks.", + Value: false, + Destination: &cfg.dryRun, + Sources: cli.EnvVars("DRY_RUN"), + }, }, } return &c } -func (m command) validateFlags(r *cli.Context, cfg *config) error { - if cfg.createAll && cfg.watch { +func (m command) validateFlags(cfg *config) error { + if cfg.createAll { return fmt.Errorf("create-all and watch are mutually exclusive") } @@ -144,20 +132,7 @@ func (m command) validateFlags(r *cli.Context, cfg *config) error { return nil } -func (m command) run(c *cli.Context, cfg *config) error { - var watcher *fsnotify.Watcher - var sigs chan os.Signal - - if cfg.watch { - watcher, err := newFSWatcher(filepath.Join(cfg.driverRoot, "dev")) - if err != nil { - return fmt.Errorf("failed to create FS watcher: %v", err) - } - defer watcher.Close() - - sigs = newOSWatcher(syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT) - } - +func (m command) run(cfg *config) error { l, err := NewSymlinkCreator( WithLogger(m.logger), WithDevCharPath(cfg.devCharPath), @@ -171,47 +146,11 @@ func (m command) run(c *cli.Context, cfg *config) error { return fmt.Errorf("failed to create symlink creator: %v", err) } -create: err = l.CreateLinks() if err != nil { return fmt.Errorf("failed to create links: %v", err) } - if !cfg.watch { - return nil - } - for { - select { - - case event := <-watcher.Events: - deviceNode := filepath.Base(event.Name) - if !strings.HasPrefix(deviceNode, "nvidia") { - continue - } - if event.Op&fsnotify.Create == fsnotify.Create { - m.logger.Infof("%s created, restarting.", event.Name) - goto create - } - if event.Op&fsnotify.Create == fsnotify.Remove { - m.logger.Infof("%s removed. Ignoring", event.Name) - - } - - // Watch for any other fs errors and log them. - case err := <-watcher.Errors: - m.logger.Errorf("inotify: %s", err) - - // React to signals - case s := <-sigs: - switch s { - case syscall.SIGHUP: - m.logger.Infof("Received SIGHUP, recreating symlinks.") - goto create - default: - m.logger.Infof("Received signal %q, shutting down.", s) - return nil - } - } - } + return nil } type linkCreator struct { @@ -399,27 +338,3 @@ type deviceNode struct { func (d deviceNode) devCharName() string { return fmt.Sprintf("%d:%d", d.major, d.minor) } - -func newFSWatcher(files ...string) (*fsnotify.Watcher, error) { - watcher, err := fsnotify.NewWatcher() - if err != nil { - return nil, err - } - - for _, f := range files { - err = watcher.Add(f) - if err != nil { - watcher.Close() - return nil, err - } - } - - return watcher, nil -} - -func newOSWatcher(sigs ...os.Signal) chan os.Signal { - sigChan := make(chan os.Signal, 1) - signal.Notify(sigChan, sigs...) - - return sigChan -} diff --git a/cmd/nvidia-ctk/system/create-device-nodes/create-device-nodes.go b/cmd/nvidia-ctk/system/create-device-nodes/create-device-nodes.go index 37ed45b0e..73b1fb4b1 100644 --- a/cmd/nvidia-ctk/system/create-device-nodes/create-device-nodes.go +++ b/cmd/nvidia-ctk/system/create-device-nodes/create-device-nodes.go @@ -17,9 +17,10 @@ package createdevicenodes import ( + "context" "fmt" - "github.com/urfave/cli/v2" + "github.com/urfave/cli/v3" "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" "github.com/NVIDIA/nvidia-container-toolkit/internal/system/nvdevices" @@ -56,55 +57,54 @@ func (m command) build() *cli.Command { c := cli.Command{ Name: "create-device-nodes", Usage: "A utility to create NVIDIA device nodes", - Before: func(c *cli.Context) error { - return m.validateFlags(c, &opts) + Before: func(ctx context.Context, cmd *cli.Command) (context.Context, error) { + return ctx, m.validateFlags(&opts) }, - Action: func(c *cli.Context) error { - return m.run(c, &opts) + Action: func(ctx context.Context, cmd *cli.Command) error { + return m.run(&opts) }, - } - - c.Flags = []cli.Flag{ - &cli.StringFlag{ - Name: "root", - // TODO: Remove this alias - Aliases: []string{"driver-root"}, - Usage: "the path to to the root to use to load the kernel modules. This root must be a chrootable path. " + - "If device nodes to be created these will be created at `ROOT`/dev unless an alternative path is specified", - Value: "/", - Destination: &opts.root, - // TODO: Remove the NVIDIA_DRIVER_ROOT and DRIVER_ROOT envvars. - EnvVars: []string{"ROOT", "NVIDIA_DRIVER_ROOT", "DRIVER_ROOT"}, - }, - &cli.StringFlag{ - Name: "dev-root", - Usage: "specify the root where `/dev` is located. If this is not specified, the root is assumed.", - Destination: &opts.devRoot, - EnvVars: []string{"NVIDIA_DEV_ROOT", "DEV_ROOT"}, - }, - &cli.BoolFlag{ - Name: "control-devices", - Usage: "create all control device nodes: nvidiactl, nvidia-modeset, nvidia-uvm, nvidia-uvm-tools", - Destination: &opts.control, - }, - &cli.BoolFlag{ - Name: "load-kernel-modules", - Usage: "load the NVIDIA Kernel Modules before creating devices nodes", - Destination: &opts.loadKernelModules, - }, - &cli.BoolFlag{ - Name: "dry-run", - Usage: "if set, the command will not perform any operations", - Value: false, - Destination: &opts.dryRun, - EnvVars: []string{"DRY_RUN"}, + Flags: []cli.Flag{ + &cli.StringFlag{ + Name: "root", + // TODO: Remove this alias + Aliases: []string{"driver-root"}, + Usage: "the path to to the root to use to load the kernel modules. This root must be a chrootable path. " + + "If device nodes to be created these will be created at `ROOT`/dev unless an alternative path is specified", + Value: "/", + Destination: &opts.root, + // TODO: Remove the NVIDIA_DRIVER_ROOT and DRIVER_ROOT envvars. + Sources: cli.EnvVars("ROOT", "NVIDIA_DRIVER_ROOT", "DRIVER_ROOT"), + }, + &cli.StringFlag{ + Name: "dev-root", + Usage: "specify the root where `/dev` is located. If this is not specified, the root is assumed.", + Destination: &opts.devRoot, + Sources: cli.EnvVars("NVIDIA_DEV_ROOT", "DEV_ROOT"), + }, + &cli.BoolFlag{ + Name: "control-devices", + Usage: "create all control device nodes: nvidiactl, nvidia-modeset, nvidia-uvm, nvidia-uvm-tools", + Destination: &opts.control, + }, + &cli.BoolFlag{ + Name: "load-kernel-modules", + Usage: "load the NVIDIA Kernel Modules before creating devices nodes", + Destination: &opts.loadKernelModules, + }, + &cli.BoolFlag{ + Name: "dry-run", + Usage: "if set, the command will not perform any operations", + Value: false, + Destination: &opts.dryRun, + Sources: cli.EnvVars("DRY_RUN"), + }, }, } return &c } -func (m command) validateFlags(r *cli.Context, opts *options) error { +func (m command) validateFlags(opts *options) error { if opts.devRoot == "" && opts.root != "" { m.logger.Infof("Using dev-root %q", opts.root) opts.devRoot = opts.root @@ -112,7 +112,7 @@ func (m command) validateFlags(r *cli.Context, opts *options) error { return nil } -func (m command) run(c *cli.Context, opts *options) error { +func (m command) run(opts *options) error { if opts.loadKernelModules { modules := nvmodules.New( nvmodules.WithLogger(m.logger), diff --git a/cmd/nvidia-ctk/system/print-ldcache/print-ldcache.go b/cmd/nvidia-ctk/system/print-ldcache/print-ldcache.go deleted file mode 100644 index 87493b7f2..000000000 --- a/cmd/nvidia-ctk/system/print-ldcache/print-ldcache.go +++ /dev/null @@ -1,102 +0,0 @@ -/** -# Copyright (c) NVIDIA CORPORATION. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -**/ - -package createdevicenodes - -import ( - "fmt" - - "github.com/urfave/cli/v2" - - "github.com/NVIDIA/nvidia-container-toolkit/internal/ldcache" - "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" -) - -type command struct { - logger logger.Interface -} - -type options struct { - driverRoot string -} - -// NewCommand constructs a command sub-command with the specified logger -func NewCommand(logger logger.Interface) *cli.Command { - c := command{ - logger: logger, - } - return c.build() -} - -// build -func (m command) build() *cli.Command { - opts := options{} - - c := cli.Command{ - Name: "print-ldcache", - Usage: "A utility to print the contents of the ldcache", - Before: func(c *cli.Context) error { - return m.validateFlags(c, &opts) - }, - Action: func(c *cli.Context) error { - return m.run(c, &opts) - }, - } - - c.Flags = []cli.Flag{ - &cli.StringFlag{ - Name: "driver-root", - Usage: "the path to the driver root. Device nodes will be created at `DRIVER_ROOT`/dev", - Value: "/", - Destination: &opts.driverRoot, - EnvVars: []string{"NVIDIA_DRIVER_ROOT", "DRIVER_ROOT"}, - }, - } - - return &c -} - -func (m command) validateFlags(r *cli.Context, opts *options) error { - return nil -} - -func (m command) run(c *cli.Context, opts *options) error { - cache, err := ldcache.New(m.logger, opts.driverRoot) - if err != nil { - return fmt.Errorf("failed to create ldcache: %v", err) - } - - lib32, lib64 := cache.List() - - if len(lib32) == 0 { - m.logger.Info("No 32-bit libraries found") - } else { - m.logger.Infof("%d 32-bit libraries found", len(lib32)) - for _, lib := range lib32 { - m.logger.Infof("%v", lib) - } - } - if len(lib64) == 0 { - m.logger.Info("No 64-bit libraries found") - } else { - m.logger.Infof("%d 64-bit libraries found", len(lib64)) - for _, lib := range lib64 { - m.logger.Infof("%v", lib) - } - } - - return nil -} diff --git a/cmd/nvidia-ctk/system/system.go b/cmd/nvidia-ctk/system/system.go index fc6b69226..6a7b4bb09 100644 --- a/cmd/nvidia-ctk/system/system.go +++ b/cmd/nvidia-ctk/system/system.go @@ -17,11 +17,10 @@ package system import ( - "github.com/urfave/cli/v2" + "github.com/urfave/cli/v3" devchar "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk/system/create-dev-char-symlinks" devicenodes "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk/system/create-device-nodes" - ldcache "github.com/NVIDIA/nvidia-container-toolkit/cmd/nvidia-ctk/system/print-ldcache" "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" ) @@ -42,12 +41,10 @@ func (m command) build() *cli.Command { system := cli.Command{ Name: "system", Usage: "A collection of system-related utilities for the NVIDIA Container Toolkit", - } - - system.Subcommands = []*cli.Command{ - devchar.NewCommand(m.logger), - devicenodes.NewCommand(m.logger), - ldcache.NewCommand(m.logger), + Commands: []*cli.Command{ + devchar.NewCommand(m.logger), + devicenodes.NewCommand(m.logger), + }, } return &system diff --git a/deployments/container/Dockerfile b/deployments/container/Dockerfile new file mode 100644 index 000000000..2ac74cf9e --- /dev/null +++ b/deployments/container/Dockerfile @@ -0,0 +1,171 @@ +# SPDX-FileCopyrightText: Copyright (c) 2019 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +ARG GOLANG_VERSION=x.x.x +ARG VERSION="N/A" + +FROM nvcr.io/nvidia/cuda:12.9.1-base-ubi9 AS build + +RUN dnf install -y \ + wget make git gcc \ + && \ + rm -rf /var/cache/yum/* + +ARG GOLANG_VERSION=x.x.x +RUN set -eux; \ + \ + arch="$(uname -m)"; \ + case "${arch##*-}" in \ + x86_64 | amd64) ARCH='amd64' ;; \ + ppc64el | ppc64le) ARCH='ppc64le' ;; \ + aarch64 | arm64) ARCH='arm64' ;; \ + *) echo "unsupported architecture" ; exit 1 ;; \ + esac; \ + wget -nv -O - https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-${ARCH}.tar.gz \ + | tar -C /usr/local -xz + + +ENV GOPATH=/go +ENV PATH=$GOPATH/bin:/usr/local/go/bin:$PATH + +WORKDIR /build +COPY . . + +RUN mkdir -p /artifacts/bin +ARG VERSION="N/A" +ARG GIT_COMMIT="unknown" +RUN make PREFIX=/artifacts/bin cmd-nvidia-ctk-installer + +# The packaging stage collects the deb and rpm packages built for +# supported architectures. +FROM nvcr.io/nvidia/distroless/go:v3.1.10-dev AS packaging + +USER 0:0 +SHELL ["/busybox/sh", "-c"] +RUN ln -s /busybox/sh /bin/sh + +ARG ARTIFACTS_ROOT +COPY ${ARTIFACTS_ROOT} /artifacts/packages/ + +WORKDIR /artifacts + +# build-args are added to the manifest.txt file below. +ARG PACKAGE_VERSION +ARG GIT_BRANCH +ARG GIT_COMMIT +ARG GIT_COMMIT_SHORT +ARG SOURCE_DATE_EPOCH +ARG VERSION + +# Create a manifest.txt file with the absolute paths of all deb and rpm packages in the container +RUN echo "#IMAGE_EPOCH=$(date '+%s')" > /artifacts/manifest.txt && \ + env | sed 's/^/#/g' >> /artifacts/manifest.txt && \ + find /artifacts/packages -iname '*.deb' -o -iname '*.rpm' >> /artifacts/manifest.txt + +LABEL name="NVIDIA Container Toolkit Packages" +LABEL vendor="NVIDIA" +LABEL version="${VERSION}" +LABEL release="N/A" +LABEL summary="deb and rpm packages for the NVIDIA Container Toolkit" +LABEL description="See summary" + +COPY LICENSE /licenses/ + +# The debpackages stage is used to extract the contents of deb packages. +FROM nvcr.io/nvidia/cuda:12.9.1-base-ubuntu20.04 AS debpackages + +ARG TARGETARCH +ARG PACKAGE_DIST_DEB=ubuntu18.04 + +COPY --from=packaging /artifacts/packages/${PACKAGE_DIST_DEB} /deb-packages + +RUN mkdir -p /artifacts/deb +RUN set -eux; \ + \ + case "${TARGETARCH}" in \ + x86_64 | amd64) ARCH='amd64' ;; \ + ppc64el | ppc64le) ARCH='ppc64le' ;; \ + aarch64 | arm64) ARCH='arm64' ;; \ + *) echo "unsupported architecture" ; exit 1 ;; \ + esac; \ + for p in $(ls /deb-packages/${ARCH}/*.deb); do dpkg-deb -xv $p /artifacts/deb/; done + +# The rpmpackages stage is used to extract the contents of the rpm packages. +FROM nvcr.io/nvidia/cuda:12.9.1-base-ubi9 AS rpmpackages +RUN dnf install -y cpio + +ARG TARGETARCH +ARG PACKAGE_DIST_RPM=centos7 + +COPY --from=packaging /artifacts/packages/${PACKAGE_DIST_RPM} /rpm-packages + +RUN mkdir -p /artifacts/rpm +RUN set -eux; \ + \ + case "${TARGETARCH}" in \ + x86_64 | amd64) ARCH='x86_64' ;; \ + ppc64el | ppc64le) ARCH='ppc64le' ;; \ + aarch64 | arm64) ARCH='aarch64' ;; \ + *) echo "unsupported architecture" ; exit 1 ;; \ + esac; \ + for p in $(ls /rpm-packages/${ARCH}/*.rpm); do rpm2cpio $p | cpio -idmv -D /artifacts/rpm; done + +# The artifacts image serves as an intermediate stage to collect the artifacts +# From the previous stages: +# - The extracted deb packages +# - The extracted rpm packages +# - The nvidia-ctk-installer binary +FROM scratch AS artifacts + +COPY --from=rpmpackages /artifacts/rpm /artifacts/rpm +COPY --from=debpackages /artifacts/deb /artifacts/deb +COPY --from=build /artifacts/bin /artifacts/build + +# The application stage contains the application used as a GPU Operator +# operand. +FROM nvcr.io/nvidia/distroless/go:v3.1.10-dev AS application + +USER 0:0 +SHELL ["/busybox/sh", "-c"] +RUN ln -s /busybox/sh /bin/sh + +ENV NVIDIA_DISABLE_REQUIRE="true" +ENV NVIDIA_VISIBLE_DEVICES=void +ENV NVIDIA_DRIVER_CAPABILITIES=utility + +COPY --from=artifacts /artifacts/rpm /artifacts/rpm +COPY --from=artifacts /artifacts/deb /artifacts/deb +COPY --from=artifacts /artifacts/build /work + +WORKDIR /work +ENV PATH=/work:$PATH + +ARG VERSION +LABEL io.k8s.display-name="NVIDIA Container Runtime Config" +LABEL name="NVIDIA Container Runtime Config" +LABEL vendor="NVIDIA" +LABEL version="${VERSION}" +LABEL release="N/A" +LABEL summary="Automatically Configure your Container Runtime for GPU support." +LABEL description="See summary" + +COPY LICENSE /licenses/ + +ENTRYPOINT ["/work/nvidia-ctk-installer"] + +# The GPU Operator exec's nvidia-toolkit in its entrypoint. +# We create a symlink here to ensure compatibility with older +# GPU Operator versions. +RUN ln -s /work/nvidia-ctk-installer /work/nvidia-toolkit diff --git a/deployments/container/Dockerfile.packaging b/deployments/container/Dockerfile.packaging deleted file mode 100644 index 2e2a9a972..000000000 --- a/deployments/container/Dockerfile.packaging +++ /dev/null @@ -1,38 +0,0 @@ -# Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -ARG GOLANG_VERSION=x.x.x - -FROM nvidia/cuda:12.5.1-base-ubuntu20.04 - -ARG ARTIFACTS_ROOT -COPY ${ARTIFACTS_ROOT} /artifacts/packages/ - -WORKDIR /artifacts/packages - -# build-args are added to the manifest.txt file below. -ARG PACKAGE_DIST -ARG PACKAGE_VERSION -ARG GIT_BRANCH -ARG GIT_COMMIT -ARG GIT_COMMIT_SHORT -ARG SOURCE_DATE_EPOCH -ARG VERSION - -# Create a manifest.txt file with the absolute paths of all deb and rpm packages in the container -RUN echo "#IMAGE_EPOCH=$(date '+%s')" > /artifacts/manifest.txt && \ - env | sed 's/^/#/g' >> /artifacts/manifest.txt && \ - find /artifacts/packages -iname '*.deb' -o -iname '*.rpm' >> /artifacts/manifest.txt - -RUN mkdir /licenses && mv /NGC-DL-CONTAINER-LICENSE /licenses/NGC-DL-CONTAINER-LICENSE diff --git a/deployments/container/Dockerfile.ubi8 b/deployments/container/Dockerfile.ubi8 deleted file mode 100644 index bcdcc0442..000000000 --- a/deployments/container/Dockerfile.ubi8 +++ /dev/null @@ -1,88 +0,0 @@ -# Copyright (c) 2019-2021, NVIDIA CORPORATION. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -ARG GOLANG_VERSION=x.x.x -ARG VERSION="N/A" - -FROM nvidia/cuda:12.5.1-base-ubi8 as build - -RUN yum install -y \ - wget make git gcc \ - && \ - rm -rf /var/cache/yum/* - -ARG GOLANG_VERSION=x.x.x -RUN set -eux; \ - \ - arch="$(uname -m)"; \ - case "${arch##*-}" in \ - x86_64 | amd64) ARCH='amd64' ;; \ - ppc64el | ppc64le) ARCH='ppc64le' ;; \ - aarch64 | arm64) ARCH='arm64' ;; \ - *) echo "unsupported architecture" ; exit 1 ;; \ - esac; \ - wget -nv -O - https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-${ARCH}.tar.gz \ - | tar -C /usr/local -xz - - -ENV GOPATH /go -ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH - -WORKDIR /build -COPY . . - -# NOTE: Until the config utilities are properly integrated into the -# nvidia-container-toolkit repository, these are built from the `tools` folder -# and not `cmd`. -RUN GOPATH=/artifacts go install -ldflags="-s -w -X 'main.Version=${VERSION}'" ./tools/... - - -FROM nvidia/cuda:12.5.1-base-ubi8 - -ENV NVIDIA_DISABLE_REQUIRE="true" -ENV NVIDIA_VISIBLE_DEVICES=void -ENV NVIDIA_DRIVER_CAPABILITIES=utility - -ARG ARTIFACTS_ROOT -ARG PACKAGE_DIST -COPY ${ARTIFACTS_ROOT}/${PACKAGE_DIST} /artifacts/packages/${PACKAGE_DIST} - -WORKDIR /artifacts/packages - -ARG PACKAGE_VERSION -ARG TARGETARCH -ENV PACKAGE_ARCH ${TARGETARCH} -RUN PACKAGE_ARCH=${PACKAGE_ARCH/amd64/x86_64} && PACKAGE_ARCH=${PACKAGE_ARCH/arm64/aarch64} && \ - yum localinstall -y \ - ${PACKAGE_DIST}/${PACKAGE_ARCH}/libnvidia-container1-1.*.rpm \ - ${PACKAGE_DIST}/${PACKAGE_ARCH}/libnvidia-container-tools-1.*.rpm \ - ${PACKAGE_DIST}/${PACKAGE_ARCH}/nvidia-container-toolkit*-${PACKAGE_VERSION}*.rpm - -WORKDIR /work - -COPY --from=build /artifacts/bin /work - -ENV PATH=/work:$PATH - -LABEL io.k8s.display-name="NVIDIA Container Runtime Config" -LABEL name="NVIDIA Container Runtime Config" -LABEL vendor="NVIDIA" -LABEL version="${VERSION}" -LABEL release="N/A" -LABEL summary="Automatically Configure your Container Runtime for GPU support." -LABEL description="See summary" - -RUN mkdir /licenses && mv /NGC-DL-CONTAINER-LICENSE /licenses/NGC-DL-CONTAINER-LICENSE - -ENTRYPOINT ["/work/nvidia-toolkit"] diff --git a/deployments/container/Dockerfile.ubuntu b/deployments/container/Dockerfile.ubuntu deleted file mode 100644 index 31fb48fa7..000000000 --- a/deployments/container/Dockerfile.ubuntu +++ /dev/null @@ -1,97 +0,0 @@ -# Copyright (c) 2019-2021, NVIDIA CORPORATION. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -ARG GOLANG_VERSION=x.x.x -ARG VERSION="N/A" - -FROM nvidia/cuda:12.5.1-base-ubuntu20.04 as build - -RUN apt-get update && \ - apt-get install -y wget make git gcc \ - && \ - rm -rf /var/lib/apt/lists/* - -ARG GOLANG_VERSION=x.x.x -RUN set -eux; \ - \ - arch="$(uname -m)"; \ - case "${arch##*-}" in \ - x86_64 | amd64) ARCH='amd64' ;; \ - ppc64el | ppc64le) ARCH='ppc64le' ;; \ - aarch64 | arm64) ARCH='arm64' ;; \ - *) echo "unsupported architecture" ; exit 1 ;; \ - esac; \ - wget -nv -O - https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-${ARCH}.tar.gz \ - | tar -C /usr/local -xz - -ENV GOPATH /go -ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH - -WORKDIR /build -COPY . . - -# NOTE: Until the config utilities are properly integrated into the -# nvidia-container-toolkit repository, these are built from the `tools` folder -# and not `cmd`. -RUN GOPATH=/artifacts go install -ldflags="-s -w -X 'main.Version=${VERSION}'" ./tools/... - - -FROM nvcr.io/nvidia/cuda:12.5.1-base-ubuntu20.04 - -# Remove the CUDA repository configurations to avoid issues with rotated GPG keys -RUN rm -f /etc/apt/sources.list.d/cuda.list - -ARG DEBIAN_FRONTEND=noninteractive -RUN apt-get update && apt-get install -y --no-install-recommends \ - libcap2 \ - curl \ - && \ - rm -rf /var/lib/apt/lists/* - -ENV NVIDIA_DISABLE_REQUIRE="true" -ENV NVIDIA_VISIBLE_DEVICES=void -ENV NVIDIA_DRIVER_CAPABILITIES=utility - -ARG ARTIFACTS_ROOT -ARG PACKAGE_DIST -COPY ${ARTIFACTS_ROOT}/${PACKAGE_DIST} /artifacts/packages/${PACKAGE_DIST} - -WORKDIR /artifacts/packages - -ARG PACKAGE_VERSION -ARG TARGETARCH -ENV PACKAGE_ARCH ${TARGETARCH} - -RUN dpkg -i \ - ${PACKAGE_DIST}/${PACKAGE_ARCH}/libnvidia-container1_1.*.deb \ - ${PACKAGE_DIST}/${PACKAGE_ARCH}/libnvidia-container-tools_1.*.deb \ - ${PACKAGE_DIST}/${PACKAGE_ARCH}/nvidia-container-toolkit*_${PACKAGE_VERSION}*.deb - -WORKDIR /work - -COPY --from=build /artifacts/bin /work/ - -ENV PATH=/work:$PATH - -LABEL io.k8s.display-name="NVIDIA Container Runtime Config" -LABEL name="NVIDIA Container Runtime Config" -LABEL vendor="NVIDIA" -LABEL version="${VERSION}" -LABEL release="N/A" -LABEL summary="Automatically Configure your Container Runtime for GPU support." -LABEL description="See summary" - -RUN mkdir /licenses && mv /NGC-DL-CONTAINER-LICENSE /licenses/NGC-DL-CONTAINER-LICENSE - -ENTRYPOINT ["/work/nvidia-toolkit"] diff --git a/deployments/container/Makefile b/deployments/container/Makefile index bd990bd13..4e3373a28 100644 --- a/deployments/container/Makefile +++ b/deployments/container/Makefile @@ -27,28 +27,23 @@ DIST_DIR ?= $(CURDIR)/dist ##### Global variables ##### include $(CURDIR)/versions.mk -ifeq ($(IMAGE_NAME),) -REGISTRY ?= nvidia -IMAGE_NAME := $(REGISTRY)/container-toolkit -endif - -VERSION ?= $(LIB_VERSION)$(if $(LIB_TAG),-$(LIB_TAG)) IMAGE_VERSION := $(VERSION) -IMAGE_TAG ?= $(VERSION)-$(DIST) +IMAGE_TAG ?= $(VERSION) IMAGE = $(IMAGE_NAME):$(IMAGE_TAG) OUT_IMAGE_NAME ?= $(IMAGE_NAME) OUT_IMAGE_VERSION ?= $(IMAGE_VERSION) -OUT_IMAGE_TAG = $(OUT_IMAGE_VERSION)-$(DIST) +OUT_IMAGE_TAG = $(OUT_IMAGE_VERSION) OUT_IMAGE = $(OUT_IMAGE_NAME):$(OUT_IMAGE_TAG) ##### Public rules ##### -DEFAULT_PUSH_TARGET := ubuntu20.04 -DISTRIBUTIONS := ubuntu20.04 ubi8 +DEFAULT_PUSH_TARGET := application +DISTRIBUTIONS := $(DEFAULT_PUSH_TARGET) META_TARGETS := packaging +IMAGE_TARGETS := $(patsubst %,image-%,$(DISTRIBUTIONS) $(META_TARGETS)) BUILD_TARGETS := $(patsubst %,build-%,$(DISTRIBUTIONS) $(META_TARGETS)) PUSH_TARGETS := $(patsubst %,push-%,$(DISTRIBUTIONS) $(META_TARGETS)) TEST_TARGETS := $(patsubst %,test-%,$(DISTRIBUTIONS)) @@ -61,44 +56,32 @@ else include $(CURDIR)/deployments/container/multi-arch.mk endif -# For the default push target we also push a short tag equal to the version. -# We skip this for the development release -DEVEL_RELEASE_IMAGE_VERSION ?= devel -PUSH_MULTIPLE_TAGS ?= true -ifeq ($(strip $(OUT_IMAGE_VERSION)),$(DEVEL_RELEASE_IMAGE_VERSION)) -PUSH_MULTIPLE_TAGS = false -endif -ifeq ($(PUSH_MULTIPLE_TAGS),true) -push-$(DEFAULT_PUSH_TARGET): push-short -endif - -push-%: DIST = $(*) -push-short: DIST = $(DEFAULT_PUSH_TARGET) - # Define the push targets $(PUSH_TARGETS): push-%: $(CURDIR)/scripts/publish-image.sh $(IMAGE) $(OUT_IMAGE) -push-short: - $(CURDIR)/scripts/publish-image.sh $(IMAGE) $(OUT_IMAGE) - +DOCKERFILE = $(CURDIR)/deployments/container/Dockerfile -build-%: DIST = $(*) -build-%: DOCKERFILE = $(CURDIR)/deployments/container/Dockerfile.$(DOCKERFILE_SUFFIX) +# For packaging targets we set the output image tag to include the -packaging suffix. +%-packaging: INTERMEDIATE_TARGET := --target=packaging +%-packaging: IMAGE_TAG = $(IMAGE_VERSION)-packaging +%-packaging: OUT_IMAGE_TAG = $(IMAGE_VERSION)-packaging ARTIFACTS_ROOT ?= $(shell realpath --relative-to=$(CURDIR) $(DIST_DIR)) # Use a generic build target to build the relevant images -$(BUILD_TARGETS): build-%: $(ARTIFACTS_ROOT) +$(IMAGE_TARGETS): image-%: $(ARTIFACTS_ROOT) DOCKER_BUILDKIT=1 \ $(DOCKER) $(BUILDX) build --pull \ --provenance=false --sbom=false \ $(DOCKER_BUILD_OPTIONS) \ $(DOCKER_BUILD_PLATFORM_OPTIONS) \ + $(INTERMEDIATE_TARGET) \ --tag $(IMAGE) \ --build-arg ARTIFACTS_ROOT="$(ARTIFACTS_ROOT)" \ --build-arg GOLANG_VERSION="$(GOLANG_VERSION)" \ - --build-arg PACKAGE_DIST="$(PACKAGE_DIST)" \ + --build-arg PACKAGE_DIST_DEB="$(PACKAGE_DIST_DEB)" \ + --build-arg PACKAGE_DIST_RPM="$(PACKAGE_DIST_RPM)" \ --build-arg PACKAGE_VERSION="$(PACKAGE_VERSION)" \ --build-arg VERSION="$(VERSION)" \ --build-arg GIT_COMMIT="$(GIT_COMMIT)" \ @@ -109,20 +92,17 @@ $(BUILD_TARGETS): build-%: $(ARTIFACTS_ROOT) $(CURDIR) -build-ubuntu%: DOCKERFILE_SUFFIX := ubuntu -build-ubuntu%: PACKAGE_DIST = ubuntu18.04 +PACKAGE_DIST_DEB = ubuntu18.04 +# TODO: This needs to be set to centos8 for ppc64le builds +PACKAGE_DIST_RPM = centos7 -build-ubi8: DOCKERFILE_SUFFIX := ubi8 -build-ubi8: PACKAGE_DIST = centos7 - -build-packaging: DOCKERFILE_SUFFIX := packaging -build-packaging: PACKAGE_ARCH := amd64 -build-packaging: PACKAGE_DIST = all +# Handle the default build target. +.PHONY: build push +build: build-$(DEFAULT_PUSH_TARGET) +push: push-$(DEFAULT_PUSH_TARGET) # Test targets -test-%: DIST = $(*) - -TEST_CASES ?= toolkit docker crio containerd +TEST_CASES ?= docker crio containerd $(TEST_TARGETS): test-%: TEST_CASES="$(TEST_CASES)" bash -x $(CURDIR)/test/container/main.sh run \ $(CURDIR)/shared-$(*) \ diff --git a/deployments/container/multi-arch.mk b/deployments/container/multi-arch.mk index d2824e99b..72f34ab2f 100644 --- a/deployments/container/multi-arch.mk +++ b/deployments/container/multi-arch.mk @@ -16,8 +16,7 @@ PUSH_ON_BUILD ?= false DOCKER_BUILD_OPTIONS = --output=type=image,push=$(PUSH_ON_BUILD) DOCKER_BUILD_PLATFORM_OPTIONS = --platform=linux/amd64,linux/arm64 -# We only generate amd64 image for ubuntu18.04 -build-ubuntu18.04: DOCKER_BUILD_PLATFORM_OPTIONS = --platform=linux/amd64 +$(BUILD_TARGETS): build-%: image-% # We only generate a single image for packaging targets build-packaging: DOCKER_BUILD_PLATFORM_OPTIONS = --platform=linux/amd64 diff --git a/deployments/container/native-only.mk b/deployments/container/native-only.mk index d15b78a41..38ef90095 100644 --- a/deployments/container/native-only.mk +++ b/deployments/container/native-only.mk @@ -12,4 +12,14 @@ # See the License for the specific language governing permissions and # limitations under the License. -DOCKER_BUILD_PLATFORM_OPTIONS = --platform=linux/amd64 +PUSH_ON_BUILD ?= false +ARCH ?= $(shell uname -m) +DOCKER_BUILD_PLATFORM_OPTIONS = --platform=linux/$(ARCH) + +ifeq ($(PUSH_ON_BUILD),true) +DOCKER_BUILD_OPTIONS = --output=type=image,push=$(PUSH_ON_BUILD) +$(BUILD_TARGETS): build-%: image-% + $(DOCKER) push "$(IMAGE)" +else +$(BUILD_TARGETS): build-%: image-% +endif diff --git a/deployments/devel/Dockerfile b/deployments/devel/Dockerfile index e08a7b205..87f9ee3bf 100644 --- a/deployments/devel/Dockerfile +++ b/deployments/devel/Dockerfile @@ -14,7 +14,7 @@ # This Dockerfile is also used to define the golang version used in this project # This allows dependabot to manage this version in addition to other images. -FROM golang:1.22.6 +FROM golang:1.24.5 WORKDIR /work COPY * . diff --git a/deployments/devel/Makefile b/deployments/devel/Makefile index 2daef226d..ace377dd1 100644 --- a/deployments/devel/Makefile +++ b/deployments/devel/Makefile @@ -34,3 +34,10 @@ DOCKERFILE_CONTEXT = deployments/devel --tag $(BUILDIMAGE) \ -f $(DOCKERFILE_DEVEL) \ $(DOCKERFILE_CONTEXT) + +modules: + go mod tidy + go mod verify + +check-modules: modules + git diff --quiet HEAD -- go.mod go.sum diff --git a/deployments/devel/go.mod b/deployments/devel/go.mod index 5f0a22a50..1a3ea80d5 100644 --- a/deployments/devel/go.mod +++ b/deployments/devel/go.mod @@ -1,58 +1,61 @@ module github.com/NVIDIA/k8s-device-plugin/deployments/devel -go 1.22 +go 1.24 + +toolchain go1.24.0 require ( - github.com/golangci/golangci-lint v1.59.1 - github.com/matryer/moq v0.3.4 + github.com/golangci/golangci-lint v1.64.7 + github.com/matryer/moq v0.5.3 ) require ( - 4d63.com/gocheckcompilerdirectives v1.2.1 // indirect - 4d63.com/gochecknoglobals v0.2.1 // indirect - github.com/4meepo/tagalign v1.3.4 // indirect - github.com/Abirdcfly/dupword v0.0.14 // indirect - github.com/Antonboom/errname v0.1.13 // indirect - github.com/Antonboom/nilnil v0.1.9 // indirect - github.com/Antonboom/testifylint v1.3.1 // indirect - github.com/BurntSushi/toml v1.4.0 // indirect - github.com/Crocmagnon/fatcontext v0.2.2 // indirect + 4d63.com/gocheckcompilerdirectives v1.3.0 // indirect + 4d63.com/gochecknoglobals v0.2.2 // indirect + github.com/4meepo/tagalign v1.4.2 // indirect + github.com/Abirdcfly/dupword v0.1.3 // indirect + github.com/Antonboom/errname v1.0.0 // indirect + github.com/Antonboom/nilnil v1.0.1 // indirect + github.com/Antonboom/testifylint v1.5.2 // indirect + github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c // indirect + github.com/Crocmagnon/fatcontext v0.7.1 // indirect github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect - github.com/GaijinEntertainment/go-exhaustruct/v3 v3.2.0 // indirect - github.com/Masterminds/semver/v3 v3.2.1 // indirect - github.com/OpenPeeDeeP/depguard/v2 v2.2.0 // indirect - github.com/alecthomas/go-check-sumtype v0.1.4 // indirect - github.com/alexkohler/nakedret/v2 v2.0.4 // indirect + github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.1 // indirect + github.com/Masterminds/semver/v3 v3.3.0 // indirect + github.com/OpenPeeDeeP/depguard/v2 v2.2.1 // indirect + github.com/alecthomas/go-check-sumtype v0.3.1 // indirect + github.com/alexkohler/nakedret/v2 v2.0.5 // indirect github.com/alexkohler/prealloc v1.0.0 // indirect github.com/alingse/asasalint v0.0.11 // indirect + github.com/alingse/nilnesserr v0.1.2 // indirect github.com/ashanbrown/forbidigo v1.6.0 // indirect - github.com/ashanbrown/makezero v1.1.1 // indirect + github.com/ashanbrown/makezero v1.2.0 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/bkielbasa/cyclop v1.2.1 // indirect + github.com/bkielbasa/cyclop v1.2.3 // indirect github.com/blizzy78/varnamelen v0.8.0 // indirect - github.com/bombsimon/wsl/v4 v4.2.1 // indirect - github.com/breml/bidichk v0.2.7 // indirect - github.com/breml/errchkjson v0.3.6 // indirect - github.com/butuzov/ireturn v0.3.0 // indirect - github.com/butuzov/mirror v1.2.0 // indirect - github.com/catenacyber/perfsprint v0.7.1 // indirect + github.com/bombsimon/wsl/v4 v4.5.0 // indirect + github.com/breml/bidichk v0.3.2 // indirect + github.com/breml/errchkjson v0.4.0 // indirect + github.com/butuzov/ireturn v0.3.1 // indirect + github.com/butuzov/mirror v1.3.0 // indirect + github.com/catenacyber/perfsprint v0.8.2 // indirect github.com/ccojocar/zxcvbn-go v1.0.2 // indirect - github.com/cespare/xxhash/v2 v2.1.2 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/charithe/durationcheck v0.0.10 // indirect github.com/chavacava/garif v0.1.0 // indirect - github.com/ckaznocha/intrange v0.1.2 // indirect - github.com/curioswitch/go-reassign v0.2.0 // indirect - github.com/daixiang0/gci v0.13.4 // indirect + github.com/ckaznocha/intrange v0.3.0 // indirect + github.com/curioswitch/go-reassign v0.3.0 // indirect + github.com/daixiang0/gci v0.13.5 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/denis-tingaikin/go-header v0.5.0 // indirect github.com/ettle/strcase v0.2.0 // indirect - github.com/fatih/color v1.17.0 // indirect + github.com/fatih/color v1.18.0 // indirect github.com/fatih/structtag v1.2.0 // indirect github.com/firefart/nonamedreturns v1.0.5 // indirect github.com/fsnotify/fsnotify v1.5.4 // indirect github.com/fzipp/gocyclo v0.6.0 // indirect - github.com/ghostiam/protogetter v0.3.6 // indirect - github.com/go-critic/go-critic v0.11.4 // indirect + github.com/ghostiam/protogetter v0.3.9 // indirect + github.com/go-critic/go-critic v0.12.0 // indirect github.com/go-toolsmith/astcast v1.1.0 // indirect github.com/go-toolsmith/astcopy v1.1.0 // indirect github.com/go-toolsmith/astequal v1.2.0 // indirect @@ -60,132 +63,135 @@ require ( github.com/go-toolsmith/astp v1.1.0 // indirect github.com/go-toolsmith/strparse v1.1.0 // indirect github.com/go-toolsmith/typep v1.1.0 // indirect - github.com/go-viper/mapstructure/v2 v2.0.0 // indirect - github.com/go-xmlfmt/xmlfmt v1.1.2 // indirect + github.com/go-viper/mapstructure/v2 v2.3.0 // indirect + github.com/go-xmlfmt/xmlfmt v1.1.3 // indirect github.com/gobwas/glob v0.2.3 // indirect - github.com/gofrs/flock v0.8.1 // indirect + github.com/gofrs/flock v0.12.1 // indirect github.com/golang/protobuf v1.5.3 // indirect - github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a // indirect - github.com/golangci/gofmt v0.0.0-20231018234816-f50ced29576e // indirect + github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32 // indirect + github.com/golangci/go-printf-func-name v0.1.0 // indirect + github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d // indirect github.com/golangci/misspell v0.6.0 // indirect - github.com/golangci/modinfo v0.3.4 // indirect github.com/golangci/plugin-module-register v0.1.1 // indirect - github.com/golangci/revgrep v0.5.3 // indirect + github.com/golangci/revgrep v0.8.0 // indirect github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed // indirect - github.com/google/go-cmp v0.6.0 // indirect + github.com/google/go-cmp v0.7.0 // indirect github.com/gordonklaus/ineffassign v0.1.0 // indirect github.com/gostaticanalysis/analysisutil v0.7.1 // indirect - github.com/gostaticanalysis/comment v1.4.2 // indirect - github.com/gostaticanalysis/forcetypeassert v0.1.0 // indirect + github.com/gostaticanalysis/comment v1.5.0 // indirect + github.com/gostaticanalysis/forcetypeassert v0.2.0 // indirect github.com/gostaticanalysis/nilerr v0.1.1 // indirect + github.com/hashicorp/go-immutable-radix/v2 v2.1.0 // indirect github.com/hashicorp/go-version v1.7.0 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hexops/gotextdiff v1.0.3 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jgautheron/goconst v1.7.1 // indirect github.com/jingyugao/rowserrcheck v1.1.1 // indirect - github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af // indirect - github.com/jjti/go-spancheck v0.6.1 // indirect - github.com/julz/importas v0.1.0 // indirect - github.com/karamaru-alpha/copyloopvar v1.1.0 // indirect - github.com/kisielk/errcheck v1.7.0 // indirect - github.com/kkHAIKE/contextcheck v1.1.5 // indirect + github.com/jjti/go-spancheck v0.6.4 // indirect + github.com/julz/importas v0.2.0 // indirect + github.com/karamaru-alpha/copyloopvar v1.2.1 // indirect + github.com/kisielk/errcheck v1.9.0 // indirect + github.com/kkHAIKE/contextcheck v1.1.6 // indirect github.com/kulti/thelper v0.6.3 // indirect github.com/kunwardeep/paralleltest v1.0.10 // indirect - github.com/kyoh86/exportloopref v0.1.11 // indirect - github.com/lasiar/canonicalheader v1.1.1 // indirect - github.com/ldez/gomoddirectives v0.2.4 // indirect - github.com/ldez/tagliatelle v0.5.0 // indirect + github.com/lasiar/canonicalheader v1.1.2 // indirect + github.com/ldez/exptostd v0.4.2 // indirect + github.com/ldez/gomoddirectives v0.6.1 // indirect + github.com/ldez/grignotin v0.9.0 // indirect + github.com/ldez/tagliatelle v0.7.1 // indirect + github.com/ldez/usetesting v0.4.2 // indirect github.com/leonklingele/grouper v1.1.2 // indirect - github.com/lufeee/execinquery v1.2.1 // indirect github.com/macabu/inamedparam v0.1.3 // indirect github.com/magiconair/properties v1.8.6 // indirect github.com/maratori/testableexamples v1.0.0 // indirect github.com/maratori/testpackage v1.1.1 // indirect - github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26 // indirect - github.com/mattn/go-colorable v0.1.13 // indirect + github.com/matoous/godox v1.1.0 // indirect + github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/mattn/go-runewidth v0.0.9 // indirect + github.com/mattn/go-runewidth v0.0.16 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect - github.com/mgechev/revive v1.3.7 // indirect + github.com/mgechev/revive v1.7.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect - github.com/moricho/tparallel v0.3.1 // indirect + github.com/moricho/tparallel v0.3.2 // indirect github.com/nakabonne/nestif v0.3.1 // indirect github.com/nishanths/exhaustive v0.12.0 // indirect github.com/nishanths/predeclared v0.2.2 // indirect - github.com/nunnatsa/ginkgolinter v0.16.2 // indirect + github.com/nunnatsa/ginkgolinter v0.19.1 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/pelletier/go-toml v1.9.5 // indirect - github.com/pelletier/go-toml/v2 v2.2.2 // indirect + github.com/pelletier/go-toml/v2 v2.2.3 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/polyfloyd/go-errorlint v1.5.2 // indirect + github.com/polyfloyd/go-errorlint v1.7.1 // indirect github.com/prometheus/client_golang v1.12.1 // indirect github.com/prometheus/client_model v0.2.0 // indirect github.com/prometheus/common v0.32.1 // indirect github.com/prometheus/procfs v0.7.3 // indirect - github.com/quasilyte/go-ruleguard v0.4.2 // indirect + github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1 // indirect github.com/quasilyte/go-ruleguard/dsl v0.3.22 // indirect github.com/quasilyte/gogrep v0.5.0 // indirect github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 // indirect github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 // indirect - github.com/ryancurrah/gomodguard v1.3.2 // indirect + github.com/raeperd/recvcheck v0.2.0 // indirect + github.com/rivo/uniseg v0.4.7 // indirect + github.com/rogpeppe/go-internal v1.14.1 // indirect + github.com/ryancurrah/gomodguard v1.3.5 // indirect github.com/ryanrolds/sqlclosecheck v0.5.1 // indirect - github.com/sanposhiho/wastedassign/v2 v2.0.7 // indirect - github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 // indirect + github.com/sanposhiho/wastedassign/v2 v2.1.0 // indirect + github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 // indirect github.com/sashamelentyev/interfacebloat v1.1.0 // indirect - github.com/sashamelentyev/usestdlibvars v1.26.0 // indirect - github.com/securego/gosec/v2 v2.20.1-0.20240525090044-5f0084eb01a9 // indirect - github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c // indirect + github.com/sashamelentyev/usestdlibvars v1.28.0 // indirect + github.com/securego/gosec/v2 v2.22.2 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/sivchari/containedctx v1.0.3 // indirect - github.com/sivchari/tenv v1.7.1 // indirect - github.com/sonatard/noctx v0.0.2 // indirect + github.com/sivchari/tenv v1.12.1 // indirect + github.com/sonatard/noctx v0.1.0 // indirect github.com/sourcegraph/go-diff v0.7.0 // indirect - github.com/spf13/afero v1.11.0 // indirect + github.com/spf13/afero v1.12.0 // indirect github.com/spf13/cast v1.5.0 // indirect - github.com/spf13/cobra v1.7.0 // indirect + github.com/spf13/cobra v1.9.1 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect - github.com/spf13/pflag v1.0.5 // indirect + github.com/spf13/pflag v1.0.6 // indirect github.com/spf13/viper v1.12.0 // indirect github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect - github.com/stbenjam/no-sprintf-host-port v0.1.1 // indirect + github.com/stbenjam/no-sprintf-host-port v0.2.0 // indirect github.com/stretchr/objx v0.5.2 // indirect - github.com/stretchr/testify v1.9.0 // indirect + github.com/stretchr/testify v1.10.0 // indirect github.com/subosito/gotenv v1.4.1 // indirect - github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c // indirect - github.com/tdakkota/asciicheck v0.2.0 // indirect - github.com/tetafro/godot v1.4.16 // indirect - github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966 // indirect - github.com/timonwong/loggercheck v0.9.4 // indirect - github.com/tomarrell/wrapcheck/v2 v2.8.3 // indirect + github.com/tdakkota/asciicheck v0.4.1 // indirect + github.com/tetafro/godot v1.5.0 // indirect + github.com/timakin/bodyclose v0.0.0-20241017074812-ed6a65f985e3 // indirect + github.com/timonwong/loggercheck v0.10.1 // indirect + github.com/tomarrell/wrapcheck/v2 v2.10.0 // indirect github.com/tommy-muehle/go-mnd/v2 v2.5.1 // indirect - github.com/ultraware/funlen v0.1.0 // indirect - github.com/ultraware/whitespace v0.1.1 // indirect - github.com/uudashr/gocognit v1.1.2 // indirect + github.com/ultraware/funlen v0.2.0 // indirect + github.com/ultraware/whitespace v0.2.0 // indirect + github.com/uudashr/gocognit v1.2.0 // indirect + github.com/uudashr/iface v1.3.1 // indirect github.com/xen0n/gosmopolitan v1.2.2 // indirect github.com/yagipy/maintidx v1.0.0 // indirect github.com/yeya24/promlinter v0.3.0 // indirect github.com/ykadowak/zerologlint v0.1.5 // indirect gitlab.com/bosi/decorder v0.4.2 // indirect - go-simpler.org/musttag v0.12.2 // indirect - go-simpler.org/sloglint v0.7.1 // indirect + go-simpler.org/musttag v0.13.0 // indirect + go-simpler.org/sloglint v0.9.0 // indirect go.uber.org/atomic v1.7.0 // indirect - go.uber.org/automaxprocs v1.5.3 // indirect + go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.6.0 // indirect go.uber.org/zap v1.24.0 // indirect - golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc // indirect - golang.org/x/exp/typeparams v0.0.0-20240314144324-c7f7c6466f7f // indirect - golang.org/x/mod v0.18.0 // indirect - golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.21.0 // indirect - golang.org/x/text v0.15.0 // indirect - golang.org/x/tools v0.22.0 // indirect - google.golang.org/protobuf v1.33.0 // indirect + golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac // indirect + golang.org/x/mod v0.24.0 // indirect + golang.org/x/sync v0.12.0 // indirect + golang.org/x/sys v0.31.0 // indirect + golang.org/x/text v0.22.0 // indirect + golang.org/x/tools v0.31.0 // indirect + google.golang.org/protobuf v1.36.5 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - honnef.co/go/tools v0.4.7 // indirect - mvdan.cc/gofumpt v0.6.0 // indirect + honnef.co/go/tools v0.6.1 // indirect + mvdan.cc/gofumpt v0.7.0 // indirect mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f // indirect ) diff --git a/deployments/devel/go.sum b/deployments/devel/go.sum index 4d5bf00dd..d4a15363c 100644 --- a/deployments/devel/go.sum +++ b/deployments/devel/go.sum @@ -1,7 +1,7 @@ -4d63.com/gocheckcompilerdirectives v1.2.1 h1:AHcMYuw56NPjq/2y615IGg2kYkBdTvOaojYCBcRE7MA= -4d63.com/gocheckcompilerdirectives v1.2.1/go.mod h1:yjDJSxmDTtIHHCqX0ufRYZDL6vQtMG7tJdKVeWwsqvs= -4d63.com/gochecknoglobals v0.2.1 h1:1eiorGsgHOFOuoOiJDy2psSrQbRdIHrlge0IJIkUgDc= -4d63.com/gochecknoglobals v0.2.1/go.mod h1:KRE8wtJB3CXCsb1xy421JfTHIIbmT3U5ruxw2Qu8fSU= +4d63.com/gocheckcompilerdirectives v1.3.0 h1:Ew5y5CtcAAQeTVKUVFrE7EwHMrTO6BggtEj8BZSjZ3A= +4d63.com/gocheckcompilerdirectives v1.3.0/go.mod h1:ofsJ4zx2QAuIP/NO/NAh1ig6R1Fb18/GI7RVMwz7kAY= +4d63.com/gochecknoglobals v0.2.2 h1:H1vdnwnMaZdQW/N+NrkT1SZMTBmcwHe9Vq8lJcYYTtU= +4d63.com/gochecknoglobals v0.2.2/go.mod h1:lLxwTQjL5eIesRbvnzIP3jZtG140FnTdz+AlMa+ogt0= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= @@ -35,79 +35,82 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/4meepo/tagalign v1.3.4 h1:P51VcvBnf04YkHzjfclN6BbsopfJR5rxs1n+5zHt+w8= -github.com/4meepo/tagalign v1.3.4/go.mod h1:M+pnkHH2vG8+qhE5bVc/zeP7HS/j910Fwa9TUSyZVI0= -github.com/Abirdcfly/dupword v0.0.14 h1:3U4ulkc8EUo+CaT105/GJ1BQwtgyj6+VaBVbAX11Ba8= -github.com/Abirdcfly/dupword v0.0.14/go.mod h1:VKDAbxdY8YbKUByLGg8EETzYSuC4crm9WwI6Y3S0cLI= -github.com/Antonboom/errname v0.1.13 h1:JHICqsewj/fNckzrfVSe+T33svwQxmjC+1ntDsHOVvM= -github.com/Antonboom/errname v0.1.13/go.mod h1:uWyefRYRN54lBg6HseYCFhs6Qjcy41Y3Jl/dVhA87Ns= -github.com/Antonboom/nilnil v0.1.9 h1:eKFMejSxPSA9eLSensFmjW2XTgTwJMjZ8hUHtV4s/SQ= -github.com/Antonboom/nilnil v0.1.9/go.mod h1:iGe2rYwCq5/Me1khrysB4nwI7swQvjclR8/YRPl5ihQ= -github.com/Antonboom/testifylint v1.3.1 h1:Uam4q1Q+2b6H7gvk9RQFw6jyVDdpzIirFOOrbs14eG4= -github.com/Antonboom/testifylint v1.3.1/go.mod h1:NV0hTlteCkViPW9mSR4wEMfwp+Hs1T3dY60bkvSfhpM= +github.com/4meepo/tagalign v1.4.2 h1:0hcLHPGMjDyM1gHG58cS73aQF8J4TdVR96TZViorO9E= +github.com/4meepo/tagalign v1.4.2/go.mod h1:+p4aMyFM+ra7nb41CnFG6aSDXqRxU/w1VQqScKqDARI= +github.com/Abirdcfly/dupword v0.1.3 h1:9Pa1NuAsZvpFPi9Pqkd93I7LIYRURj+A//dFd5tgBeE= +github.com/Abirdcfly/dupword v0.1.3/go.mod h1:8VbB2t7e10KRNdwTVoxdBaxla6avbhGzb8sCTygUMhw= +github.com/Antonboom/errname v1.0.0 h1:oJOOWR07vS1kRusl6YRSlat7HFnb3mSfMl6sDMRoTBA= +github.com/Antonboom/errname v1.0.0/go.mod h1:gMOBFzK/vrTiXN9Oh+HFs+e6Ndl0eTFbtsRTSRdXyGI= +github.com/Antonboom/nilnil v1.0.1 h1:C3Tkm0KUxgfO4Duk3PM+ztPncTFlOf0b2qadmS0s4xs= +github.com/Antonboom/nilnil v1.0.1/go.mod h1:CH7pW2JsRNFgEh8B2UaPZTEPhCMuFowP/e8Udp9Nnb0= +github.com/Antonboom/testifylint v1.5.2 h1:4s3Xhuv5AvdIgbd8wOOEeo0uZG7PbDKQyKY5lGoQazk= +github.com/Antonboom/testifylint v1.5.2/go.mod h1:vxy8VJ0bc6NavlYqjZfmp6EfqXMtBgQ4+mhCojwC1P8= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0= -github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= +github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c h1:pxW6RcqyfI9/kWtOwnv/G+AzdKuy2ZrqINhenH4HyNs= +github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/Crocmagnon/fatcontext v0.2.2 h1:OrFlsDdOj9hW/oBEJBNSuH7QWf+E9WPVHw+x52bXVbk= -github.com/Crocmagnon/fatcontext v0.2.2/go.mod h1:WSn/c/+MMNiD8Pri0ahRj0o9jVpeowzavOQplBJw6u0= +github.com/Crocmagnon/fatcontext v0.7.1 h1:SC/VIbRRZQeQWj/TcQBS6JmrXcfA+BU4OGSVUt54PjM= +github.com/Crocmagnon/fatcontext v0.7.1/go.mod h1:1wMvv3NXEBJucFGfwOJBxSVWcoIO6emV215SMkW9MFU= github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rWPdisA5ynNEsoARbiCBOyGcJM4/OzsM= github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= -github.com/GaijinEntertainment/go-exhaustruct/v3 v3.2.0 h1:sATXp1x6/axKxz2Gjxv8MALP0bXaNRfQinEwyfMcx8c= -github.com/GaijinEntertainment/go-exhaustruct/v3 v3.2.0/go.mod h1:Nl76DrGNJTA1KJ0LePKBw/vznBX1EHbAZX8mwjR82nI= -github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0rYXWg0= -github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= -github.com/OpenPeeDeeP/depguard/v2 v2.2.0 h1:vDfG60vDtIuf0MEOhmLlLLSzqaRM8EMcgJPdp74zmpA= -github.com/OpenPeeDeeP/depguard/v2 v2.2.0/go.mod h1:CIzddKRvLBC4Au5aYP/i3nyaWQ+ClszLIuVocRiCYFQ= -github.com/alecthomas/assert/v2 v2.2.2 h1:Z/iVC0xZfWTaFNE6bA3z07T86hd45Xe2eLt6WVy2bbk= -github.com/alecthomas/assert/v2 v2.2.2/go.mod h1:pXcQ2Asjp247dahGEmsZ6ru0UVwnkhktn7S0bBDLxvQ= -github.com/alecthomas/go-check-sumtype v0.1.4 h1:WCvlB3l5Vq5dZQTFmodqL2g68uHiSwwlWcT5a2FGK0c= -github.com/alecthomas/go-check-sumtype v0.1.4/go.mod h1:WyYPfhfkdhyrdaligV6svFopZV8Lqdzn5pyVBaV6jhQ= -github.com/alecthomas/repr v0.2.0 h1:HAzS41CIzNW5syS8Mf9UwXhNH1J9aix/BvDRf1Ml2Yk= -github.com/alecthomas/repr v0.2.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= +github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.1 h1:Sz1JIXEcSfhz7fUi7xHnhpIE0thVASYjvosApmHuD2k= +github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.1/go.mod h1:n/LSCXNuIYqVfBlVXyHfMQkZDdp1/mmxfSjADd3z1Zg= +github.com/Masterminds/semver/v3 v3.3.0 h1:B8LGeaivUe71a5qox1ICM/JLl0NqZSW5CHyL+hmvYS0= +github.com/Masterminds/semver/v3 v3.3.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= +github.com/OpenPeeDeeP/depguard/v2 v2.2.1 h1:vckeWVESWp6Qog7UZSARNqfu/cZqvki8zsuj3piCMx4= +github.com/OpenPeeDeeP/depguard/v2 v2.2.1/go.mod h1:q4DKzC4UcVaAvcfd41CZh0PWpGgzrVxUYBlgKNGquUo= +github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= +github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= +github.com/alecthomas/go-check-sumtype v0.3.1 h1:u9aUvbGINJxLVXiFvHUlPEaD7VDULsrxJb4Aq31NLkU= +github.com/alecthomas/go-check-sumtype v0.3.1/go.mod h1:A8TSiN3UPRw3laIgWEUOHHLPa6/r9MtoigdlP5h3K/E= +github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc= +github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/alexkohler/nakedret/v2 v2.0.4 h1:yZuKmjqGi0pSmjGpOC016LtPJysIL0WEUiaXW5SUnNg= -github.com/alexkohler/nakedret/v2 v2.0.4/go.mod h1:bF5i0zF2Wo2o4X4USt9ntUWve6JbFv02Ff4vlkmS/VU= +github.com/alexkohler/nakedret/v2 v2.0.5 h1:fP5qLgtwbx9EJE8dGEERT02YwS8En4r9nnZ71RK+EVU= +github.com/alexkohler/nakedret/v2 v2.0.5/go.mod h1:bF5i0zF2Wo2o4X4USt9ntUWve6JbFv02Ff4vlkmS/VU= github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw= github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE= github.com/alingse/asasalint v0.0.11 h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQRnw= github.com/alingse/asasalint v0.0.11/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I= +github.com/alingse/nilnesserr v0.1.2 h1:Yf8Iwm3z2hUUrP4muWfW83DF4nE3r1xZ26fGWUKCZlo= +github.com/alingse/nilnesserr v0.1.2/go.mod h1:1xJPrXonEtX7wyTq8Dytns5P2hNzoWymVUIaKm4HNFg= github.com/ashanbrown/forbidigo v1.6.0 h1:D3aewfM37Yb3pxHujIPSpTf6oQk9sc9WZi8gerOIVIY= github.com/ashanbrown/forbidigo v1.6.0/go.mod h1:Y8j9jy9ZYAEHXdu723cUlraTqbzjKF1MUyfOKL+AjcU= -github.com/ashanbrown/makezero v1.1.1 h1:iCQ87C0V0vSyO+M9E/FZYbu65auqH0lnsOkf5FcB28s= -github.com/ashanbrown/makezero v1.1.1/go.mod h1:i1bJLCRSCHOcOa9Y6MyF2FTfMZMFdHvxKHxgO5Z1axI= +github.com/ashanbrown/makezero v1.2.0 h1:/2Lp1bypdmK9wDIq7uWBlDF1iMUpIIS4A+pF6C9IEUU= +github.com/ashanbrown/makezero v1.2.0/go.mod h1:dxlPhHbDMC6N6xICzFBSK+4njQDdK8euNO0qjQMtGY4= github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bkielbasa/cyclop v1.2.1 h1:AeF71HZDob1P2/pRm1so9cd1alZnrpyc4q2uP2l0gJY= -github.com/bkielbasa/cyclop v1.2.1/go.mod h1:K/dT/M0FPAiYjBgQGau7tz+3TMh4FWAEqlMhzFWCrgM= +github.com/bkielbasa/cyclop v1.2.3 h1:faIVMIGDIANuGPWH031CZJTi2ymOQBULs9H21HSMa5w= +github.com/bkielbasa/cyclop v1.2.3/go.mod h1:kHTwA9Q0uZqOADdupvcFJQtp/ksSnytRMe8ztxG8Fuo= github.com/blizzy78/varnamelen v0.8.0 h1:oqSblyuQvFsW1hbBHh1zfwrKe3kcSj0rnXkKzsQ089M= github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k= -github.com/bombsimon/wsl/v4 v4.2.1 h1:Cxg6u+XDWff75SIFFmNsqnIOgob+Q9hG6y/ioKbRFiM= -github.com/bombsimon/wsl/v4 v4.2.1/go.mod h1:Xu/kDxGZTofQcDGCtQe9KCzhHphIe0fDuyWTxER9Feo= -github.com/breml/bidichk v0.2.7 h1:dAkKQPLl/Qrk7hnP6P+E0xOodrq8Us7+U0o4UBOAlQY= -github.com/breml/bidichk v0.2.7/go.mod h1:YodjipAGI9fGcYM7II6wFvGhdMYsC5pHDlGzqvEW3tQ= -github.com/breml/errchkjson v0.3.6 h1:VLhVkqSBH96AvXEyclMR37rZslRrY2kcyq+31HCsVrA= -github.com/breml/errchkjson v0.3.6/go.mod h1:jhSDoFheAF2RSDOlCfhHO9KqhZgAYLyvHe7bRCX8f/U= -github.com/butuzov/ireturn v0.3.0 h1:hTjMqWw3y5JC3kpnC5vXmFJAWI/m31jaCYQqzkS6PL0= -github.com/butuzov/ireturn v0.3.0/go.mod h1:A09nIiwiqzN/IoVo9ogpa0Hzi9fex1kd9PSD6edP5ZA= -github.com/butuzov/mirror v1.2.0 h1:9YVK1qIjNspaqWutSv8gsge2e/Xpq1eqEkslEUHy5cs= -github.com/butuzov/mirror v1.2.0/go.mod h1:DqZZDtzm42wIAIyHXeN8W/qb1EPlb9Qn/if9icBOpdQ= -github.com/catenacyber/perfsprint v0.7.1 h1:PGW5G/Kxn+YrN04cRAZKC+ZuvlVwolYMrIyyTJ/rMmc= -github.com/catenacyber/perfsprint v0.7.1/go.mod h1:/wclWYompEyjUD2FuIIDVKNkqz7IgBIWXIH3V0Zol50= +github.com/bombsimon/wsl/v4 v4.5.0 h1:iZRsEvDdyhd2La0FVi5k6tYehpOR/R7qIUjmKk7N74A= +github.com/bombsimon/wsl/v4 v4.5.0/go.mod h1:NOQ3aLF4nD7N5YPXMruR6ZXDOAqLoM0GEpLwTdvmOSc= +github.com/breml/bidichk v0.3.2 h1:xV4flJ9V5xWTqxL+/PMFF6dtJPvZLPsyixAoPe8BGJs= +github.com/breml/bidichk v0.3.2/go.mod h1:VzFLBxuYtT23z5+iVkamXO386OB+/sVwZOpIj6zXGos= +github.com/breml/errchkjson v0.4.0 h1:gftf6uWZMtIa/Is3XJgibewBm2ksAQSY/kABDNFTAdk= +github.com/breml/errchkjson v0.4.0/go.mod h1:AuBOSTHyLSaaAFlWsRSuRBIroCh3eh7ZHh5YeelDIk8= +github.com/butuzov/ireturn v0.3.1 h1:mFgbEI6m+9W8oP/oDdfA34dLisRFCj2G6o/yiI1yZrY= +github.com/butuzov/ireturn v0.3.1/go.mod h1:ZfRp+E7eJLC0NQmk1Nrm1LOrn/gQlOykv+cVPdiXH5M= +github.com/butuzov/mirror v1.3.0 h1:HdWCXzmwlQHdVhwvsfBb2Au0r3HyINry3bDWLYXiKoc= +github.com/butuzov/mirror v1.3.0/go.mod h1:AEij0Z8YMALaq4yQj9CPPVYOyJQyiexpQEQgihajRfI= +github.com/catenacyber/perfsprint v0.8.2 h1:+o9zVmCSVa7M4MvabsWvESEhpsMkhfE7k0sHNGL95yw= +github.com/catenacyber/perfsprint v0.8.2/go.mod h1:q//VWC2fWbcdSLEY1R3l8n0zQCDPdE4IjZwyY1HMunM= github.com/ccojocar/zxcvbn-go v1.0.2 h1:na/czXU8RrhXO4EZme6eQJLR4PzcGsahsBOAwU6I3Vg= github.com/ccojocar/zxcvbn-go v1.0.2/go.mod h1:g1qkXtUSvHP8lhHp5GrSmTz6uWALGRMQdw6Qnz/hi60= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/charithe/durationcheck v0.0.10 h1:wgw73BiocdBDQPik+zcEoBG/ob8uyBHf2iyoHGPf5w4= github.com/charithe/durationcheck v0.0.10/go.mod h1:bCWXb7gYRysD1CU3C+u4ceO49LoGOY1C1L6uouGNreQ= github.com/chavacava/garif v0.1.0 h1:2JHa3hbYf5D9dsgseMKAmc/MZ109otzgNFk5s87H9Pc= @@ -115,42 +118,44 @@ github.com/chavacava/garif v0.1.0/go.mod h1:XMyYCkEL58DF0oyW4qDjjnPWONs2HBqYKI+U github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/ckaznocha/intrange v0.1.2 h1:3Y4JAxcMntgb/wABQ6e8Q8leMd26JbX2790lIss9MTI= -github.com/ckaznocha/intrange v0.1.2/go.mod h1:RWffCw/vKBwHeOEwWdCikAtY0q4gGt8VhJZEEA5n+RE= +github.com/ckaznocha/intrange v0.3.0 h1:VqnxtK32pxgkhJgYQEeOArVidIPg+ahLP7WBOXZd5ZY= +github.com/ckaznocha/intrange v0.3.0/go.mod h1:+I/o2d2A1FBHgGELbGxzIcyd3/9l9DuwjM8FsbSS3Lo= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/curioswitch/go-reassign v0.2.0 h1:G9UZyOcpk/d7Gd6mqYgd8XYWFMw/znxwGDUstnC9DIo= -github.com/curioswitch/go-reassign v0.2.0/go.mod h1:x6OpXuWvgfQaMGks2BZybTngWjT84hqJfKoO8Tt/Roc= -github.com/daixiang0/gci v0.13.4 h1:61UGkmpoAcxHM2hhNkZEf5SzwQtWJXTSws7jaPyqwlw= -github.com/daixiang0/gci v0.13.4/go.mod h1:12etP2OniiIdP4q+kjUGrC/rUagga7ODbqsom5Eo5Yk= +github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/curioswitch/go-reassign v0.3.0 h1:dh3kpQHuADL3cobV/sSGETA8DOv457dwl+fbBAhrQPs= +github.com/curioswitch/go-reassign v0.3.0/go.mod h1:nApPCCTtqLJN/s8HfItCcKV0jIPwluBOvZP+dsJGA88= +github.com/daixiang0/gci v0.13.5 h1:kThgmH1yBmZSBCh1EJVxQ7JsHpm5Oms0AMed/0LaH4c= +github.com/daixiang0/gci v0.13.5/go.mod h1:12etP2OniiIdP4q+kjUGrC/rUagga7ODbqsom5Eo5Yk= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/denis-tingaikin/go-header v0.5.0 h1:SRdnP5ZKvcO9KKRP1KJrhFR3RrlGuD+42t4429eC9k8= github.com/denis-tingaikin/go-header v0.5.0/go.mod h1:mMenU5bWrok6Wl2UsZjy+1okegmwQ3UgWl4V1D8gjlY= +github.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI= +github.com/dlclark/regexp2 v1.11.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/ettle/strcase v0.2.0 h1:fGNiVF21fHXpX1niBgk0aROov1LagYsOwV/xqKDKR/Q= github.com/ettle/strcase v0.2.0/go.mod h1:DajmHElDSaX76ITe3/VHVyMin4LWSJN5Z909Wp+ED1A= -github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4= -github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI= +github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= +github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= github.com/firefart/nonamedreturns v1.0.5 h1:tM+Me2ZaXs8tfdDw3X6DOX++wMCOqzYUho6tUTYIdRA= github.com/firefart/nonamedreturns v1.0.5/go.mod h1:gHJjDqhGM4WyPt639SOZs+G89Ko7QKH5R5BhnO6xJhw= -github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= -github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= +github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo= github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= -github.com/ghostiam/protogetter v0.3.6 h1:R7qEWaSgFCsy20yYHNIJsU9ZOb8TziSRRxuAOTVKeOk= -github.com/ghostiam/protogetter v0.3.6/go.mod h1:7lpeDnEJ1ZjL/YtyoN99ljO4z0pd3H0d18/t2dPBxHw= -github.com/go-critic/go-critic v0.11.4 h1:O7kGOCx0NDIni4czrkRIXTnit0mkyKOCePh3My6OyEU= -github.com/go-critic/go-critic v0.11.4/go.mod h1:2QAdo4iuLik5S9YG0rT4wcZ8QxwHYkrr6/2MWAiv/vc= +github.com/ghostiam/protogetter v0.3.9 h1:j+zlLLWzqLay22Cz/aYwTHKQ88GE2DQ6GkWSYFOI4lQ= +github.com/ghostiam/protogetter v0.3.9/go.mod h1:WZ0nw9pfzsgxuRsPOFQomgDVSWtDLJRfQJEhsGbmQMA= +github.com/go-critic/go-critic v0.12.0 h1:iLosHZuye812wnkEz1Xu3aBwn5ocCPfc9yqmFG9pa6w= +github.com/go-critic/go-critic v0.12.0/go.mod h1:DpE0P6OVc6JzVYzmM5gq5jMU31zLr4am5mB/VfFK64w= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -160,8 +165,10 @@ github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vb github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= -github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-quicktest/qt v1.101.0 h1:O1K29Txy5P2OK0dGo59b7b0LR6wKfIhttaAhHUyn7eI= +github.com/go-quicktest/qt v1.101.0/go.mod h1:14Bz/f7NwaXPtdYEgzsx46kqSxVwTbzVZsDC26tQJow= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= @@ -184,14 +191,14 @@ github.com/go-toolsmith/strparse v1.1.0 h1:GAioeZUK9TGxnLS+qfdqNbA4z0SSm5zVNtCQi github.com/go-toolsmith/strparse v1.1.0/go.mod h1:7ksGy58fsaQkGQlY8WVoBFNyEPMGuJin1rfoPS4lBSQ= github.com/go-toolsmith/typep v1.1.0 h1:fIRYDyF+JywLfqzyhdiHzRop/GQDxxNhLGQ6gFUNHus= github.com/go-toolsmith/typep v1.1.0/go.mod h1:fVIw+7zjdsMxDA3ITWnH1yOiw1rnTQKCsF/sk2H/qig= -github.com/go-viper/mapstructure/v2 v2.0.0 h1:dhn8MZ1gZ0mzeodTG3jt5Vj/o87xZKuNAprG2mQfMfc= -github.com/go-viper/mapstructure/v2 v2.0.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= -github.com/go-xmlfmt/xmlfmt v1.1.2 h1:Nea7b4icn8s57fTx1M5AI4qQT5HEM3rVUO8MuE6g80U= -github.com/go-xmlfmt/xmlfmt v1.1.2/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= +github.com/go-viper/mapstructure/v2 v2.3.0 h1:27XbWsHIqhbdR5TIC911OfYvgSaW93HM+dX7970Q7jk= +github.com/go-viper/mapstructure/v2 v2.3.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/go-xmlfmt/xmlfmt v1.1.3 h1:t8Ey3Uy7jDSEisW2K3somuMKIpzktkWptA0iFCnRUWY= +github.com/go-xmlfmt/xmlfmt v1.1.3/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= -github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= -github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= +github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E= +github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -222,20 +229,20 @@ github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaS github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a h1:w8hkcTqaFpzKqonE9uMCefW1WDie15eSP/4MssdenaM= -github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk= -github.com/golangci/gofmt v0.0.0-20231018234816-f50ced29576e h1:ULcKCDV1LOZPFxGZaA6TlQbiM3J2GCPnkx/bGF6sX/g= -github.com/golangci/gofmt v0.0.0-20231018234816-f50ced29576e/go.mod h1:Pm5KhLPA8gSnQwrQ6ukebRcapGb/BG9iUkdaiCcGHJM= -github.com/golangci/golangci-lint v1.59.1 h1:CRRLu1JbhK5avLABFJ/OHVSQ0Ie5c4ulsOId1h3TTks= -github.com/golangci/golangci-lint v1.59.1/go.mod h1:jX5Oif4C7P0j9++YB2MMJmoNrb01NJ8ITqKWNLewThg= +github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32 h1:WUvBfQL6EW/40l6OmeSBYQJNSif4O11+bmWEz+C7FYw= +github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32/go.mod h1:NUw9Zr2Sy7+HxzdjIULge71wI6yEg1lWQr7Evcu8K0E= +github.com/golangci/go-printf-func-name v0.1.0 h1:dVokQP+NMTO7jwO4bwsRwLWeudOVUPPyAKJuzv8pEJU= +github.com/golangci/go-printf-func-name v0.1.0/go.mod h1:wqhWFH5mUdJQhweRnldEywnR5021wTdZSNgwYceV14s= +github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d h1:viFft9sS/dxoYY0aiOTsLKO2aZQAPT4nlQCsimGcSGE= +github.com/golangci/gofmt v0.0.0-20250106114630-d62b90e6713d/go.mod h1:ivJ9QDg0XucIkmwhzCDsqcnxxlDStoTl89jDMIoNxKY= +github.com/golangci/golangci-lint v1.64.7 h1:Xk1EyxoXqZabn5b4vnjNKSjCx1whBK53NP+mzLfX7HA= +github.com/golangci/golangci-lint v1.64.7/go.mod h1:5cEsUQBSr6zi8XI8OjmcY2Xmliqc4iYL7YoPrL+zLJ4= github.com/golangci/misspell v0.6.0 h1:JCle2HUTNWirNlDIAUO44hUsKhOFqGPoC4LZxlaSXDs= github.com/golangci/misspell v0.6.0/go.mod h1:keMNyY6R9isGaSAu+4Q8NMBwMPkh15Gtc8UCVoDtAWo= -github.com/golangci/modinfo v0.3.4 h1:oU5huX3fbxqQXdfspamej74DFX0kyGLkw1ppvXoJ8GA= -github.com/golangci/modinfo v0.3.4/go.mod h1:wytF1M5xl9u0ij8YSvhkEVPP3M5Mc7XLl1pxH3B2aUM= github.com/golangci/plugin-module-register v0.1.1 h1:TCmesur25LnyJkpsVrupv1Cdzo+2f7zX0H6Jkw1Ol6c= github.com/golangci/plugin-module-register v0.1.1/go.mod h1:TTpqoB6KkwOJMV8u7+NyXMrkwwESJLOkfl9TxR1DGFc= -github.com/golangci/revgrep v0.5.3 h1:3tL7c1XBMtWHHqVpS5ChmiAAoe4PF/d5+ULzV9sLAzs= -github.com/golangci/revgrep v0.5.3/go.mod h1:U4R/s9dlXZsg8uJmaR1GrloUr14D7qDl8gi2iPXJH8k= +github.com/golangci/revgrep v0.8.0 h1:EZBctwbVd0aMeRnNUsFogoyayvKHyxlV3CdUA46FX2s= +github.com/golangci/revgrep v0.8.0/go.mod h1:U4R/s9dlXZsg8uJmaR1GrloUr14D7qDl8gi2iPXJH8k= github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed h1:IURFTjxeTfNFP0hTEi1YKjB/ub8zkpaOqFFMApi2EAs= github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed/go.mod h1:XLXN8bNw4CGRPaqgl3bv/lhz7bsGPh4/xSaMTbo2vkQ= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -252,8 +259,8 @@ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= @@ -264,8 +271,8 @@ github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6 h1:k7nVchz72niMH6YLQNvHSdIE7iqsQxK1P41mySCvssg= -github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw= +github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad h1:a6HEuzUHeKH6hwfN/ZoQgRgVIWFJljSWa/zetS2WTvg= +github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= @@ -274,20 +281,27 @@ github.com/gordonklaus/ineffassign v0.1.0/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it github.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk= github.com/gostaticanalysis/analysisutil v0.7.1/go.mod h1:v21E3hY37WKMGSnbsw2S/ojApNWb6C1//mXO48CXbVc= github.com/gostaticanalysis/comment v1.4.1/go.mod h1:ih6ZxzTHLdadaiSnF5WY3dxUoXfXAlTaRzuaNDlSado= -github.com/gostaticanalysis/comment v1.4.2 h1:hlnx5+S2fY9Zo9ePo4AhgYsYHbM2+eAv8m/s1JiCd6Q= github.com/gostaticanalysis/comment v1.4.2/go.mod h1:KLUTGDv6HOCotCH8h2erHKmpci2ZoR8VPu34YA2uzdM= -github.com/gostaticanalysis/forcetypeassert v0.1.0 h1:6eUflI3DiGusXGK6X7cCcIgVCpZ2CiZ1Q7jl6ZxNV70= -github.com/gostaticanalysis/forcetypeassert v0.1.0/go.mod h1:qZEedyP/sY1lTGV1uJ3VhWZ2mqag3IkWsDHVbplHXak= +github.com/gostaticanalysis/comment v1.5.0 h1:X82FLl+TswsUMpMh17srGRuKaaXprTaytmEpgnKIDu8= +github.com/gostaticanalysis/comment v1.5.0/go.mod h1:V6eb3gpCv9GNVqb6amXzEUX3jXLVK/AdA+IrAMSqvEc= +github.com/gostaticanalysis/forcetypeassert v0.2.0 h1:uSnWrrUEYDr86OCxWa4/Tp2jeYDlogZiZHzGkWFefTk= +github.com/gostaticanalysis/forcetypeassert v0.2.0/go.mod h1:M5iPavzE9pPqWyeiVXSFghQjljW1+l/Uke3PXHS6ILY= github.com/gostaticanalysis/nilerr v0.1.1 h1:ThE+hJP0fEp4zWLkWHWcRyI2Od0p7DlgYG3Uqrmrcpk= github.com/gostaticanalysis/nilerr v0.1.1/go.mod h1:wZYb6YI5YAxxq0i1+VJbY0s2YONW0HU0GPE3+5PWN4A= github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= -github.com/gostaticanalysis/testutil v0.4.0 h1:nhdCmubdmDF6VEatUNjgUZBJKWRqugoISdUv3PPQgHY= -github.com/gostaticanalysis/testutil v0.4.0/go.mod h1:bLIoPefWXrRi/ssLFWX1dx7Repi5x3CuviD3dgAZaBU= +github.com/gostaticanalysis/testutil v0.5.0 h1:Dq4wT1DdTwTGCQQv3rl3IvD5Ld0E6HiY+3Zh0sUGqw8= +github.com/gostaticanalysis/testutil v0.5.0/go.mod h1:OLQSbuM6zw2EvCcXTz1lVq5unyoNft372msDY0nY5Hs= +github.com/hashicorp/go-immutable-radix/v2 v2.1.0 h1:CUW5RYIcysz+D3B+l1mDeXrQ7fUvGGCwJfdASSzbrfo= +github.com/hashicorp/go-immutable-radix/v2 v2.1.0/go.mod h1:hgdqLXA4f6NIjRVisM1TJ9aOJVNRqKZj+xDGF6m7PBw= +github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= +github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= +github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= @@ -299,10 +313,8 @@ github.com/jgautheron/goconst v1.7.1 h1:VpdAG7Ca7yvvJk5n8dMwQhfEZJh95kl/Hl9S1OI5 github.com/jgautheron/goconst v1.7.1/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4= github.com/jingyugao/rowserrcheck v1.1.1 h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjzq7gFzUs= github.com/jingyugao/rowserrcheck v1.1.1/go.mod h1:4yvlZSDb3IyDTUZJUmpZfm2Hwok+Dtp+nu2qOq+er9c= -github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af h1:KA9BjwUk7KlCh6S9EAGWBt1oExIUv9WyNCiRz5amv48= -github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0= -github.com/jjti/go-spancheck v0.6.1 h1:ZK/wE5Kyi1VX3PJpUO2oEgeoI4FWOUm7Shb2Gbv5obI= -github.com/jjti/go-spancheck v0.6.1/go.mod h1:vF1QkOO159prdo6mHRxak2CpzDpHAfKiPUDP/NeRnX8= +github.com/jjti/go-spancheck v0.6.4 h1:Tl7gQpYf4/TMU7AT84MN83/6PutY21Nb9fuQjFTpRRc= +github.com/jjti/go-spancheck v0.6.4/go.mod h1:yAEYdKJ2lRkDA8g7X+oKUHXOWVAXSBJRv04OhF+QUjk= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= @@ -312,15 +324,15 @@ github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1 github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/julz/importas v0.1.0 h1:F78HnrsjY3cR7j0etXy5+TU1Zuy7Xt08X/1aJnH5xXY= -github.com/julz/importas v0.1.0/go.mod h1:oSFU2R4XK/P7kNBrnL/FEQlDGN1/6WoxXEjSSXO0DV0= -github.com/karamaru-alpha/copyloopvar v1.1.0 h1:x7gNyKcC2vRBO1H2Mks5u1VxQtYvFiym7fCjIP8RPos= -github.com/karamaru-alpha/copyloopvar v1.1.0/go.mod h1:u7CIfztblY0jZLOQZgH3oYsJzpC2A7S6u/lfgSXHy0k= -github.com/kisielk/errcheck v1.7.0 h1:+SbscKmWJ5mOK/bO1zS60F5I9WwZDWOfRsC4RwfwRV0= -github.com/kisielk/errcheck v1.7.0/go.mod h1:1kLL+jV4e+CFfueBmI1dSK2ADDyQnlrnrY/FqKluHJQ= +github.com/julz/importas v0.2.0 h1:y+MJN/UdL63QbFJHws9BVC5RpA2iq0kpjrFajTGivjQ= +github.com/julz/importas v0.2.0/go.mod h1:pThlt589EnCYtMnmhmRYY/qn9lCf/frPOK+WMx3xiJY= +github.com/karamaru-alpha/copyloopvar v1.2.1 h1:wmZaZYIjnJ0b5UoKDjUHrikcV0zuPyyxI4SVplLd2CI= +github.com/karamaru-alpha/copyloopvar v1.2.1/go.mod h1:nFmMlFNlClC2BPvNaHMdkirmTJxVCY0lhxBtlfOypMM= +github.com/kisielk/errcheck v1.9.0 h1:9xt1zI9EBfcYBvdU1nVrzMzzUPUtPKs9bVSIM3TAb3M= +github.com/kisielk/errcheck v1.9.0/go.mod h1:kQxWMMVZgIkDq7U8xtG/n2juOjbLgZtedi0D+/VL/i8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kkHAIKE/contextcheck v1.1.5 h1:CdnJh63tcDe53vG+RebdpdXJTc9atMgGqdx8LXxiilg= -github.com/kkHAIKE/contextcheck v1.1.5/go.mod h1:O930cpht4xb1YQpK+1+AgoM3mFsvxr7uyFptcnWTYUA= +github.com/kkHAIKE/contextcheck v1.1.6 h1:7HIyRcnyzxL9Lz06NGhiKvenXq7Zw6Q0UQu/ttjfJCE= +github.com/kkHAIKE/contextcheck v1.1.6/go.mod h1:3dDbMRNBFaq8HFXWC1JyvDSPm43CmE6IuHam8Wr0rkg= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= @@ -335,18 +347,20 @@ github.com/kulti/thelper v0.6.3 h1:ElhKf+AlItIu+xGnI990no4cE2+XaSu1ULymV2Yulxs= github.com/kulti/thelper v0.6.3/go.mod h1:DsqKShOvP40epevkFrvIwkCMNYxMeTNjdWL4dqWHZ6I= github.com/kunwardeep/paralleltest v1.0.10 h1:wrodoaKYzS2mdNVnc4/w31YaXFtsc21PCTdvWJ/lDDs= github.com/kunwardeep/paralleltest v1.0.10/go.mod h1:2C7s65hONVqY7Q5Efj5aLzRCNLjw2h4eMc9EcypGjcY= -github.com/kyoh86/exportloopref v0.1.11 h1:1Z0bcmTypkL3Q4k+IDHMWTcnCliEZcaPiIe0/ymEyhQ= -github.com/kyoh86/exportloopref v0.1.11/go.mod h1:qkV4UF1zGl6EkF1ox8L5t9SwyeBAZ3qLMd6up458uqA= -github.com/lasiar/canonicalheader v1.1.1 h1:wC+dY9ZfiqiPwAexUApFush/csSPXeIi4QqyxXmng8I= -github.com/lasiar/canonicalheader v1.1.1/go.mod h1:cXkb3Dlk6XXy+8MVQnF23CYKWlyA7kfQhSw2CcZtZb0= -github.com/ldez/gomoddirectives v0.2.4 h1:j3YjBIjEBbqZ0NKtBNzr8rtMHTOrLPeiwTkfUJZ3alg= -github.com/ldez/gomoddirectives v0.2.4/go.mod h1:oWu9i62VcQDYp9EQ0ONTfqLNh+mDLWWDO+SO0qSQw5g= -github.com/ldez/tagliatelle v0.5.0 h1:epgfuYt9v0CG3fms0pEgIMNPuFf/LpPIfjk4kyqSioo= -github.com/ldez/tagliatelle v0.5.0/go.mod h1:rj1HmWiL1MiKQuOONhd09iySTEkUuE/8+5jtPYz9xa4= +github.com/lasiar/canonicalheader v1.1.2 h1:vZ5uqwvDbyJCnMhmFYimgMZnJMjwljN5VGY0VKbMXb4= +github.com/lasiar/canonicalheader v1.1.2/go.mod h1:qJCeLFS0G/QlLQ506T+Fk/fWMa2VmBUiEI2cuMK4djI= +github.com/ldez/exptostd v0.4.2 h1:l5pOzHBz8mFOlbcifTxzfyYbgEmoUqjxLFHZkjlbHXs= +github.com/ldez/exptostd v0.4.2/go.mod h1:iZBRYaUmcW5jwCR3KROEZ1KivQQp6PHXbDPk9hqJKCQ= +github.com/ldez/gomoddirectives v0.6.1 h1:Z+PxGAY+217f/bSGjNZr/b2KTXcyYLgiWI6geMBN2Qc= +github.com/ldez/gomoddirectives v0.6.1/go.mod h1:cVBiu3AHR9V31em9u2kwfMKD43ayN5/XDgr+cdaFaKs= +github.com/ldez/grignotin v0.9.0 h1:MgOEmjZIVNn6p5wPaGp/0OKWyvq42KnzAt/DAb8O4Ow= +github.com/ldez/grignotin v0.9.0/go.mod h1:uaVTr0SoZ1KBii33c47O1M8Jp3OP3YDwhZCmzT9GHEk= +github.com/ldez/tagliatelle v0.7.1 h1:bTgKjjc2sQcsgPiT902+aadvMjCeMHrY7ly2XKFORIk= +github.com/ldez/tagliatelle v0.7.1/go.mod h1:3zjxUpsNB2aEZScWiZTHrAXOl1x25t3cRmzfK1mlo2I= +github.com/ldez/usetesting v0.4.2 h1:J2WwbrFGk3wx4cZwSMiCQQ00kjGR0+tuuyW0Lqm4lwA= +github.com/ldez/usetesting v0.4.2/go.mod h1:eEs46T3PpQ+9RgN9VjpY6qWdiw2/QmfiDeWmdZdrjIQ= github.com/leonklingele/grouper v1.1.2 h1:o1ARBDLOmmasUaNDesWqWCIFH3u7hoFlM84YrjT3mIY= github.com/leonklingele/grouper v1.1.2/go.mod h1:6D0M/HVkhs2yRKRFZUoGjeDy7EZTfFBE9gl4kjmIGkA= -github.com/lufeee/execinquery v1.2.1 h1:hf0Ems4SHcUGBxpGN7Jz78z1ppVkP/837ZlETPCEtOM= -github.com/lufeee/execinquery v1.2.1/go.mod h1:EC7DrEKView09ocscGHC+apXMIaorh4xqSxS/dy8SbM= github.com/macabu/inamedparam v0.1.3 h1:2tk/phHkMlEL/1GNe/Yf6kkR/hkcUdAEY3L0hjYV1Mk= github.com/macabu/inamedparam v0.1.3/go.mod h1:93FLICAIk/quk7eaPPQvbzihUdn/QkGDwIZEoLtpH6I= github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= @@ -355,23 +369,23 @@ github.com/maratori/testableexamples v1.0.0 h1:dU5alXRrD8WKSjOUnmJZuzdxWOEQ57+7s github.com/maratori/testableexamples v1.0.0/go.mod h1:4rhjL1n20TUTT4vdh3RDqSizKLyXp7K2u6HgraZCGzE= github.com/maratori/testpackage v1.1.1 h1:S58XVV5AD7HADMmD0fNnziNHqKvSdDuEKdPD1rNTU04= github.com/maratori/testpackage v1.1.1/go.mod h1:s4gRK/ym6AMrqpOa/kEbQTV4Q4jb7WeLZzVhVVVOQMc= -github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26 h1:gWg6ZQ4JhDfJPqlo2srm/LN17lpybq15AryXIRcWYLE= -github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= +github.com/matoous/godox v1.1.0 h1:W5mqwbyWrwZv6OQ5Z1a/DHGMOvXYCBP3+Ht7KMoJhq4= +github.com/matoous/godox v1.1.0/go.mod h1:jgE/3fUXiTurkdHOLT5WEkThTSuE7yxHv5iWPa80afs= github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= -github.com/matryer/moq v0.3.4 h1:czCFIos9rI2tyOehN9ktc/6bQ76N9J4xQ2n3dk063ac= -github.com/matryer/moq v0.3.4/go.mod h1:wqm9QObyoMuUtH81zFfs3EK6mXEcByy+TjvSROOXJ2U= -github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/matryer/moq v0.5.3 h1:4femQCFmBUwFPYs8VfM5ID7AI67/DTEDRBbTtSWy7GU= +github.com/matryer/moq v0.5.3/go.mod h1:8288Qkw7gMZhUP3cIN86GG7g5p9jRuZH8biXLW4RXvQ= +github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= +github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= +github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/mgechev/revive v1.3.7 h1:502QY0vQGe9KtYJ9FpxMz9rL+Fc/P13CI5POL4uHCcE= -github.com/mgechev/revive v1.3.7/go.mod h1:RJ16jUbF0OWC3co/+XTxmFNgEpUPwnnA0BRllX2aDNA= +github.com/mgechev/revive v1.7.0 h1:JyeQ4yO5K8aZhIKf5rec56u0376h8AlKNQEmjfkjKlY= +github.com/mgechev/revive v1.7.0/go.mod h1:qZnwcNhoguE58dfi96IJeSTPeZQejNeoMQLUZGi4SW4= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -381,8 +395,8 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/moricho/tparallel v0.3.1 h1:fQKD4U1wRMAYNngDonW5XupoB/ZGJHdpzrWqgyg9krA= -github.com/moricho/tparallel v0.3.1/go.mod h1:leENX2cUv7Sv2qDgdi0D0fCftN8fRC67Bcn8pqzeYNI= +github.com/moricho/tparallel v0.3.2 h1:odr8aZVFA3NZrNybggMkYO3rgPRcqjeQUlBBFVxKHTI= +github.com/moricho/tparallel v0.3.2/go.mod h1:OQ+K3b4Ln3l2TZveGCywybl68glfLEwFGqvnjok8b+U= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/nakabonne/nestif v0.3.1 h1:wm28nZjhQY5HyYPx+weN3Q65k6ilSBxDb8v5S81B81U= @@ -391,14 +405,14 @@ github.com/nishanths/exhaustive v0.12.0 h1:vIY9sALmw6T/yxiASewa4TQcFsVYZQQRUQJhK github.com/nishanths/exhaustive v0.12.0/go.mod h1:mEZ95wPIZW+x8kC4TgC+9YCUgiST7ecevsVDTgc2obs= github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk= github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= -github.com/nunnatsa/ginkgolinter v0.16.2 h1:8iLqHIZvN4fTLDC0Ke9tbSZVcyVHoBs0HIbnVSxfHJk= -github.com/nunnatsa/ginkgolinter v0.16.2/go.mod h1:4tWRinDN1FeJgU+iJANW/kz7xKN5nYRAOfJDQUS9dOQ= +github.com/nunnatsa/ginkgolinter v0.19.1 h1:mjwbOlDQxZi9Cal+KfbEJTCz327OLNfwNvoZ70NJ+c4= +github.com/nunnatsa/ginkgolinter v0.19.1/go.mod h1:jkQ3naZDmxaZMXPWaS9rblH+i+GWXQCaS/JFIWcOH2s= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= -github.com/onsi/ginkgo/v2 v2.17.3 h1:oJcvKpIb7/8uLpDDtnQuf18xVnwKp8DTD7DQ6gTd/MU= -github.com/onsi/ginkgo/v2 v2.17.3/go.mod h1:nP2DPOQoNsQmsVyv5rDA8JkXQoCs6goXIvr/PRJ1eCc= -github.com/onsi/gomega v1.33.1 h1:dsYjIxxSR755MDmKVsaFQTE22ChNBcuuTWgkUDSubOk= -github.com/onsi/gomega v1.33.1/go.mod h1:U4R44UsT+9eLIaYRB2a5qajjtQYn0hauxvRm16AVYg0= +github.com/onsi/ginkgo/v2 v2.22.2 h1:/3X8Panh8/WwhU/3Ssa6rCKqPLuAkVY2I0RoyDLySlU= +github.com/onsi/ginkgo/v2 v2.22.2/go.mod h1:oeMosUL+8LtarXBHu/c0bx2D/K9zyQ6uX3cTyztHwsk= +github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8= +github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY= github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= @@ -408,16 +422,16 @@ github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT9 github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= -github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= +github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= +github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/polyfloyd/go-errorlint v1.5.2 h1:SJhVik3Umsjh7mte1vE0fVZ5T1gznasQG3PV7U5xFdA= -github.com/polyfloyd/go-errorlint v1.5.2/go.mod h1:sH1QC1pxxi0fFecsVIzBmxtrgd9IF/SkJpA6wqyKAJs= +github.com/polyfloyd/go-errorlint v1.7.1 h1:RyLVXIbosq1gBdk/pChWA8zWYLsq9UEw7a1L5TVMCnA= +github.com/polyfloyd/go-errorlint v1.7.1/go.mod h1:aXjNb1x2TNhoLsk26iv1yl7a+zTnXPhwEMtEXukiLR8= github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= @@ -442,8 +456,8 @@ github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4O github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/quasilyte/go-ruleguard v0.4.2 h1:htXcXDK6/rO12kiTHKfHuqR4kr3Y4M0J0rOL6CH/BYs= -github.com/quasilyte/go-ruleguard v0.4.2/go.mod h1:GJLgqsLeo4qgavUoL8JeGFNS7qcisx3awV/w9eWTmNI= +github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1 h1:+Wl/0aFp0hpuHM3H//KMft64WQ1yX9LdJY64Qm/gFCo= +github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1/go.mod h1:GJLgqsLeo4qgavUoL8JeGFNS7qcisx3awV/w9eWTmNI= github.com/quasilyte/go-ruleguard/dsl v0.3.22 h1:wd8zkOhSNr+I+8Qeciml08ivDt1pSXe60+5DqOpCjPE= github.com/quasilyte/go-ruleguard/dsl v0.3.22/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= github.com/quasilyte/gogrep v0.5.0 h1:eTKODPXbI8ffJMN+W2aE0+oL0z/nh8/5eNdiO34SOAo= @@ -452,26 +466,29 @@ github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727 h1:TCg2WBOl github.com/quasilyte/regex/syntax v0.0.0-20210819130434-b3f0c404a727/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0= github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 h1:M8mH9eK4OUR4lu7Gd+PU1fV2/qnDNfzT635KRSObncs= github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567/go.mod h1:DWNGW8A4Y+GyBgPuaQJuWiy0XYftx4Xm/y5Jqk9I6VQ= +github.com/raeperd/recvcheck v0.2.0 h1:GnU+NsbiCqdC2XX5+vMZzP+jAJC5fht7rcVTAhX74UI= +github.com/raeperd/recvcheck v0.2.0/go.mod h1:n04eYkwIR0JbgD73wT8wL4JjPC3wm0nFtzBnWNocnYU= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= +github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= -github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryancurrah/gomodguard v1.3.2 h1:CuG27ulzEB1Gu5Dk5gP8PFxSOZ3ptSdP5iI/3IXxM18= -github.com/ryancurrah/gomodguard v1.3.2/go.mod h1:LqdemiFomEjcxOqirbQCb3JFvSxH2JUYMerTFd3sF2o= +github.com/ryancurrah/gomodguard v1.3.5 h1:cShyguSwUEeC0jS7ylOiG/idnd1TpJ1LfHGpV3oJmPU= +github.com/ryancurrah/gomodguard v1.3.5/go.mod h1:MXlEPQRxgfPQa62O8wzK3Ozbkv9Rkqr+wKjSxTdsNJE= github.com/ryanrolds/sqlclosecheck v0.5.1 h1:dibWW826u0P8jNLsLN+En7+RqWWTYrjCB9fJfSfdyCU= github.com/ryanrolds/sqlclosecheck v0.5.1/go.mod h1:2g3dUjoS6AL4huFdv6wn55WpLIDjY7ZgUR4J8HOO/XQ= -github.com/sanposhiho/wastedassign/v2 v2.0.7 h1:J+6nrY4VW+gC9xFzUc+XjPD3g3wF3je/NsJFwFK7Uxc= -github.com/sanposhiho/wastedassign/v2 v2.0.7/go.mod h1:KyZ0MWTwxxBmfwn33zh3k1dmsbF2ud9pAAGfoLfjhtI= -github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4= -github.com/santhosh-tekuri/jsonschema/v5 v5.3.1/go.mod h1:uToXkOrWAZ6/Oc07xWQrPOhJotwFIyu2bBVN41fcDUY= +github.com/sanposhiho/wastedassign/v2 v2.1.0 h1:crurBF7fJKIORrV85u9UUpePDYGWnwvv3+A96WvwXT0= +github.com/sanposhiho/wastedassign/v2 v2.1.0/go.mod h1:+oSmSC+9bQ+VUAxA66nBb0Z7N8CK7mscKTDYC6aIek4= +github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 h1:PKK9DyHxif4LZo+uQSgXNqs0jj5+xZwwfKHgph2lxBw= +github.com/santhosh-tekuri/jsonschema/v6 v6.0.1/go.mod h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU= github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tMEOsumirXcOJqAw= github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ= -github.com/sashamelentyev/usestdlibvars v1.26.0 h1:LONR2hNVKxRmzIrZR0PhSF3mhCAzvnr+DcUiHgREfXE= -github.com/sashamelentyev/usestdlibvars v1.26.0/go.mod h1:9nl0jgOfHKWNFS43Ojw0i7aRoS4j6EBye3YBhmAIRF8= -github.com/securego/gosec/v2 v2.20.1-0.20240525090044-5f0084eb01a9 h1:rnO6Zp1YMQwv8AyxzuwsVohljJgp4L0ZqiCgtACsPsc= -github.com/securego/gosec/v2 v2.20.1-0.20240525090044-5f0084eb01a9/go.mod h1:dg7lPlu/xK/Ut9SedURCoZbVCR4yC7fM65DtH9/CDHs= -github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c h1:W65qqJCIOVP4jpqPQ0YvHYKwcMEMVWIzWC5iNQQfBTU= -github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c/go.mod h1:/PevMnwAxekIXwN8qQyfc5gl2NlkB3CQlkizAbOkeBs= +github.com/sashamelentyev/usestdlibvars v1.28.0 h1:jZnudE2zKCtYlGzLVreNp5pmCdOxXUzwsMDBkR21cyQ= +github.com/sashamelentyev/usestdlibvars v1.28.0/go.mod h1:9nl0jgOfHKWNFS43Ojw0i7aRoS4j6EBye3YBhmAIRF8= +github.com/securego/gosec/v2 v2.22.2 h1:IXbuI7cJninj0nRpZSLCUlotsj8jGusohfONMrHoF6g= +github.com/securego/gosec/v2 v2.22.2/go.mod h1:UEBGA+dSKb+VqM6TdehR7lnQtIIMorYJ4/9CW1KVQBE= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= @@ -481,28 +498,29 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/sivchari/containedctx v1.0.3 h1:x+etemjbsh2fB5ewm5FeLNi5bUjK0V8n0RB+Wwfd0XE= github.com/sivchari/containedctx v1.0.3/go.mod h1:c1RDvCbnJLtH4lLcYD/GqwiBSSf4F5Qk0xld2rBqzJ4= -github.com/sivchari/tenv v1.7.1 h1:PSpuD4bu6fSmtWMxSGWcvqUUgIn7k3yOJhOIzVWn8Ak= -github.com/sivchari/tenv v1.7.1/go.mod h1:64yStXKSOxDfX47NlhVwND4dHwfZDdbp2Lyl018Icvg= -github.com/sonatard/noctx v0.0.2 h1:L7Dz4De2zDQhW8S0t+KUjY0MAQJd6SgVwhzNIc4ok00= -github.com/sonatard/noctx v0.0.2/go.mod h1:kzFz+CzWSjQ2OzIm46uJZoXuBpa2+0y3T36U18dWqIo= +github.com/sivchari/tenv v1.12.1 h1:+E0QzjktdnExv/wwsnnyk4oqZBUfuh89YMQT1cyuvSY= +github.com/sivchari/tenv v1.12.1/go.mod h1:1LjSOUCc25snIr5n3DtGGrENhX3LuWefcplwVGC24mw= +github.com/sonatard/noctx v0.1.0 h1:JjqOc2WN16ISWAjAk8M5ej0RfExEXtkEyExl2hLW+OM= +github.com/sonatard/noctx v0.1.0/go.mod h1:0RvBxqY8D4j9cTTTWE8ylt2vqj2EPI8fHmrxHdsaZ2c= github.com/sourcegraph/go-diff v0.7.0 h1:9uLlrd5T46OXs5qpp8L/MTltk0zikUGi0sNNyCpA8G0= github.com/sourcegraph/go-diff v0.7.0/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs= -github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= -github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= +github.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs= +github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4= github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= -github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= -github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= +github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= +github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.12.0 h1:CZ7eSOd3kZoaYDLbXnmzgQI5RlciuXBMA+18HwHRfZQ= github.com/spf13/viper v1.12.0/go.mod h1:b6COn30jlNxbm/V2IqWiNWkJ+vZNiMNksliPCiuKtSI= github.com/ssgreg/nlreturn/v2 v2.2.1 h1:X4XDI7jstt3ySqGU86YGAURbxw3oTDPK9sPEi6YEwQ0= github.com/ssgreg/nlreturn/v2 v2.2.1/go.mod h1:E/iiPB78hV7Szg2YfRgyIrk1AD6JVMTRkkxBiELzh2I= -github.com/stbenjam/no-sprintf-host-port v0.1.1 h1:tYugd/yrm1O0dV+ThCbaKZh195Dfm07ysF0U6JQXczc= -github.com/stbenjam/no-sprintf-host-port v0.1.1/go.mod h1:TLhvtIvONRzdmkFiio4O8LHsN9N74I+PhRquPsxpL0I= +github.com/stbenjam/no-sprintf-host-port v0.2.0 h1:i8pxvGrt1+4G0czLr/WnmyH7zbZ8Bg8etvARQ1rpyl4= +github.com/stbenjam/no-sprintf-host-port v0.2.0/go.mod h1:eL0bQ9PasS0hsyTyfTjjG+E80QIyPnBVQbYZyv20Jfk= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= @@ -517,34 +535,34 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs= github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= -github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c h1:+aPplBwWcHBo6q9xrfWdMrT9o4kltkmmvpemgIjep/8= -github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c/go.mod h1:SbErYREK7xXdsRiigaQiQkI9McGRzYMvlKYaP3Nimdk= -github.com/tdakkota/asciicheck v0.2.0 h1:o8jvnUANo0qXtnslk2d3nMKTFNlOnJjRrNcj0j9qkHM= -github.com/tdakkota/asciicheck v0.2.0/go.mod h1:Qb7Y9EgjCLJGup51gDHFzbI08/gbGhL/UVhYIPWG2rg= +github.com/tdakkota/asciicheck v0.4.1 h1:bm0tbcmi0jezRA2b5kg4ozmMuGAFotKI3RZfrhfovg8= +github.com/tdakkota/asciicheck v0.4.1/go.mod h1:0k7M3rCfRXb0Z6bwgvkEIMleKH3kXNz9UqJ9Xuqopr8= github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA= github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0= github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag= github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY= -github.com/tetafro/godot v1.4.16 h1:4ChfhveiNLk4NveAZ9Pu2AN8QZ2nkUGFuadM9lrr5D0= -github.com/tetafro/godot v1.4.16/go.mod h1:2oVxTBSftRTh4+MVfUaUXR6bn2GDXCaMcOG4Dk3rfio= -github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966 h1:quvGphlmUVU+nhpFa4gg4yJyTRJ13reZMDHrKwYw53M= -github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966/go.mod h1:27bSVNWSBOHm+qRp1T9qzaIpsWEP6TbUnei/43HK+PQ= -github.com/timonwong/loggercheck v0.9.4 h1:HKKhqrjcVj8sxL7K77beXh0adEm6DLjV/QOGeMXEVi4= -github.com/timonwong/loggercheck v0.9.4/go.mod h1:caz4zlPcgvpEkXgVnAJGowHAMW2NwHaNlpS8xDbVhTg= -github.com/tomarrell/wrapcheck/v2 v2.8.3 h1:5ov+Cbhlgi7s/a42BprYoxsr73CbdMUTzE3bRDFASUs= -github.com/tomarrell/wrapcheck/v2 v2.8.3/go.mod h1:g9vNIyhb5/9TQgumxQyOEqDHsmGYcGsVMOx/xGkqdMo= +github.com/tetafro/godot v1.5.0 h1:aNwfVI4I3+gdxjMgYPus9eHmoBeJIbnajOyqZYStzuw= +github.com/tetafro/godot v1.5.0/go.mod h1:2oVxTBSftRTh4+MVfUaUXR6bn2GDXCaMcOG4Dk3rfio= +github.com/timakin/bodyclose v0.0.0-20241017074812-ed6a65f985e3 h1:y4mJRFlM6fUyPhoXuFg/Yu02fg/nIPFMOY8tOqppoFg= +github.com/timakin/bodyclose v0.0.0-20241017074812-ed6a65f985e3/go.mod h1:mkjARE7Yr8qU23YcGMSALbIxTQ9r9QBVahQOBRfU460= +github.com/timonwong/loggercheck v0.10.1 h1:uVZYClxQFpw55eh+PIoqM7uAOHMrhVcDoWDery9R8Lg= +github.com/timonwong/loggercheck v0.10.1/go.mod h1:HEAWU8djynujaAVX7QI65Myb8qgfcZ1uKbdpg3ZzKl8= +github.com/tomarrell/wrapcheck/v2 v2.10.0 h1:SzRCryzy4IrAH7bVGG4cK40tNUhmVmMDuJujy4XwYDg= +github.com/tomarrell/wrapcheck/v2 v2.10.0/go.mod h1:g9vNIyhb5/9TQgumxQyOEqDHsmGYcGsVMOx/xGkqdMo= github.com/tommy-muehle/go-mnd/v2 v2.5.1 h1:NowYhSdyE/1zwK9QCLeRb6USWdoif80Ie+v+yU8u1Zw= github.com/tommy-muehle/go-mnd/v2 v2.5.1/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw= -github.com/ultraware/funlen v0.1.0 h1:BuqclbkY6pO+cvxoq7OsktIXZpgBSkYTQtmwhAK81vI= -github.com/ultraware/funlen v0.1.0/go.mod h1:XJqmOQja6DpxarLj6Jj1U7JuoS8PvL4nEqDaQhy22p4= -github.com/ultraware/whitespace v0.1.1 h1:bTPOGejYFulW3PkcrqkeQwOd6NKOOXvmGD9bo/Gk8VQ= -github.com/ultraware/whitespace v0.1.1/go.mod h1:XcP1RLD81eV4BW8UhQlpaR+SDc2givTvyI8a586WjW8= -github.com/uudashr/gocognit v1.1.2 h1:l6BAEKJqQH2UpKAPKdMfZf5kE4W/2xk8pfU1OVLvniI= -github.com/uudashr/gocognit v1.1.2/go.mod h1:aAVdLURqcanke8h3vg35BC++eseDm66Z7KmchI5et4k= +github.com/ultraware/funlen v0.2.0 h1:gCHmCn+d2/1SemTdYMiKLAHFYxTYz7z9VIDRaTGyLkI= +github.com/ultraware/funlen v0.2.0/go.mod h1:ZE0q4TsJ8T1SQcjmkhN/w+MceuatI6pBFSxxyteHIJA= +github.com/ultraware/whitespace v0.2.0 h1:TYowo2m9Nfj1baEQBjuHzvMRbp19i+RCcRYrSWoFa+g= +github.com/ultraware/whitespace v0.2.0/go.mod h1:XcP1RLD81eV4BW8UhQlpaR+SDc2givTvyI8a586WjW8= +github.com/uudashr/gocognit v1.2.0 h1:3BU9aMr1xbhPlvJLSydKwdLN3tEUUrzPSSM8S4hDYRA= +github.com/uudashr/gocognit v1.2.0/go.mod h1:k/DdKPI6XBZO1q7HgoV2juESI2/Ofj9AcHPZhBBdrTU= +github.com/uudashr/iface v1.3.1 h1:bA51vmVx1UIhiIsQFSNq6GZ6VPTk3WNMZgRiCe9R29U= +github.com/uudashr/iface v1.3.1/go.mod h1:4QvspiRd3JLPAEXBQ9AiZpLbJlrWWgRChOKDJEuQTdg= github.com/xen0n/gosmopolitan v1.2.2 h1:/p2KTnMzwRexIW8GlKawsTWOxn7UHA+jCMF/V8HHtvU= github.com/xen0n/gosmopolitan v1.2.2/go.mod h1:7XX7Mj61uLYrj0qmeN0zi7XDon9JRAEhYQqAPLVNTeg= github.com/yagipy/maintidx v1.0.0 h1:h5NvIsCz+nRDapQ0exNv4aJ0yXSI0420omVANTv3GJM= @@ -564,10 +582,10 @@ gitlab.com/bosi/decorder v0.4.2 h1:qbQaV3zgwnBZ4zPMhGLW4KZe7A7NwxEhJx39R3shffo= gitlab.com/bosi/decorder v0.4.2/go.mod h1:muuhHoaJkA9QLcYHq4Mj8FJUwDZ+EirSHRiaTcTf6T8= go-simpler.org/assert v0.9.0 h1:PfpmcSvL7yAnWyChSjOz6Sp6m9j5lyK8Ok9pEL31YkQ= go-simpler.org/assert v0.9.0/go.mod h1:74Eqh5eI6vCK6Y5l3PI8ZYFXG4Sa+tkr70OIPJAUr28= -go-simpler.org/musttag v0.12.2 h1:J7lRc2ysXOq7eM8rwaTYnNrHd5JwjppzB6mScysB2Cs= -go-simpler.org/musttag v0.12.2/go.mod h1:uN1DVIasMTQKk6XSik7yrJoEysGtR2GRqvWnI9S7TYM= -go-simpler.org/sloglint v0.7.1 h1:qlGLiqHbN5islOxjeLXoPtUdZXb669RW+BDQ+xOSNoU= -go-simpler.org/sloglint v0.7.1/go.mod h1:OlaVDRh/FKKd4X4sIMbsz8st97vomydceL146Fthh/c= +go-simpler.org/musttag v0.13.0 h1:Q/YAW0AHvaoaIbsPj3bvEI5/QFP7w696IMUpnKXQfCE= +go-simpler.org/musttag v0.13.0/go.mod h1:FTzIGeK6OkKlUDVpj0iQUXZLUO1Js9+mvykDQy9C5yM= +go-simpler.org/sloglint v0.9.0 h1:/40NQtjRx9txvsB/RN022KsUJU+zaaSb/9q9BSefSrE= +go-simpler.org/sloglint v0.9.0/go.mod h1:G/OrAF6uxj48sHahCzrbarVMptL2kjWTaUeC8+fOGww= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -575,8 +593,8 @@ go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/automaxprocs v1.5.3 h1:kWazyxZUrS3Gs4qUpbwo5kEIMGe/DAvi5Z4tl2NW4j8= -go.uber.org/automaxprocs v1.5.3/go.mod h1:eRbA25aqJrxAbsLO0xy5jVwPt7FQnRgjW+efnwa1WM0= +go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs= +go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8= go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= @@ -590,7 +608,8 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -601,12 +620,12 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc h1:ao2WRsKSzW6KuUY9IWPwWahcHCgR0s52IfwutMfEbdM= -golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI= +golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= +golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= -golang.org/x/exp/typeparams v0.0.0-20240314144324-c7f7c6466f7f h1:phY1HzDcf18Aq9A8KkmRtY9WvOFIxN8wgfvy6Zm1DV8= -golang.org/x/exp/typeparams v0.0.0-20240314144324-c7f7c6466f7f/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= +golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac h1:TSSpLIG4v+p0rPv1pNOQtl1I8knsO4S9trOxNMOLVP4= +golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -629,14 +648,15 @@ golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= -golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= +golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -671,12 +691,14 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= -golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= -golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= +golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -696,8 +718,10 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= +golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -731,7 +755,6 @@ golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -743,23 +766,24 @@ golang.org/x/sys v0.0.0-20211105183446-c75c47738b0c/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220702020025-31831981b65f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= -golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= -golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -768,10 +792,12 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= -golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -781,7 +807,6 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190321232350-e250d351ecad/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= @@ -789,10 +814,8 @@ golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190910044552-dd2b5c81c578/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -823,21 +846,19 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200820010801-b793a1359eac/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20201023174141-c8cfbd0f21e6/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1-0.20210205202024-ef80cdb6ec6d/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= golang.org/x/tools v0.1.1-0.20210302220138-2ac05c832e1a/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= -golang.org/x/tools v0.1.11/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= -golang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= -golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= +golang.org/x/tools v0.31.0 h1:0EedkvKDbh+qistFTd0Bcwe/YLh4vHwWEkiI0toFIBU= +golang.org/x/tools v0.31.0/go.mod h1:naFTU+Cev749tSJRXJlna0T3WxKvb1kWEx15xA4SdmQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -917,13 +938,14 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= +google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= @@ -944,10 +966,10 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.4.7 h1:9MDAWxMoSnB6QoSqiVr7P5mtkT9pOc1kSxchzPCnqJs= -honnef.co/go/tools v0.4.7/go.mod h1:+rnGS1THNh8zMwnd2oVOTL9QF6vmfyG6ZXBULae2uc0= -mvdan.cc/gofumpt v0.6.0 h1:G3QvahNDmpD+Aek/bNOLrFR2XC6ZAdo62dZu65gmwGo= -mvdan.cc/gofumpt v0.6.0/go.mod h1:4L0wf+kgIPZtcCWXynNS2e6bhmj73umwnuXSZarixzA= +honnef.co/go/tools v0.6.1 h1:R094WgE8K4JirYjBaOpz/AvTyUu/3wbmAoskKN/pxTI= +honnef.co/go/tools v0.6.1/go.mod h1:3puzxxljPCe8RGJX7BIy1plGbxEOZni5mR2aXe3/uk4= +mvdan.cc/gofumpt v0.7.0 h1:bg91ttqXmi9y2xawvkuMXyvAA/1ZGJqYAEGjXuP0JXU= +mvdan.cc/gofumpt v0.7.0/go.mod h1:txVFJy/Sc/mvaycET54pV8SW8gWxTlUuGHVEcncmNUo= mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f h1:lMpcwN6GxNbWtbpI1+xzFLSW8XzX0u72NttUGVFjO3U= mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f/go.mod h1:RSLa7mKKCNeTTMHBw5Hsy2rfJmd6O2ivt9Dw9ZqCQpQ= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= diff --git a/deployments/systemd/nvidia-cdi-refresh.env b/deployments/systemd/nvidia-cdi-refresh.env new file mode 100644 index 000000000..2d510ac6e --- /dev/null +++ b/deployments/systemd/nvidia-cdi-refresh.env @@ -0,0 +1,20 @@ +# This file can be used to override the configuration of the +# nvidia-ctk cdi generate +# command invoked by the nvidia-cdi-refresh.service. +# +# This is done by specifying the name and value of the environment variables in +# this file as follows: +# +# ENVVAR=value +# +# For a list of envvars that can be set set the output of: +# +# nvidia-ctk --help +# +# and +# +# nvidia-ctk cdi generate --help +# +# For example, to change the for the generated CDI specification update and +# uncomment the following line: +# NVIDIA_CTK_CDI_OUTPUT_FILE_PATH=/var/run/cdi/nvidia.yaml diff --git a/deployments/systemd/nvidia-cdi-refresh.path b/deployments/systemd/nvidia-cdi-refresh.path new file mode 100644 index 000000000..a1c1e2419 --- /dev/null +++ b/deployments/systemd/nvidia-cdi-refresh.path @@ -0,0 +1,23 @@ +# Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +[Unit] +Description=Trigger CDI refresh on NVIDIA driver install / uninstall events + +[Path] +PathChanged=/lib/modules/%v/modules.dep +PathChanged=/lib/modules/%v/modules.dep.bin + +[Install] +WantedBy=multi-user.target diff --git a/deployments/systemd/nvidia-cdi-refresh.service b/deployments/systemd/nvidia-cdi-refresh.service new file mode 100644 index 000000000..47cfa0285 --- /dev/null +++ b/deployments/systemd/nvidia-cdi-refresh.service @@ -0,0 +1,31 @@ +# Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +[Unit] +Description=Refresh NVIDIA CDI specification file +ConditionPathExists=|/usr/bin/nvidia-smi +ConditionPathExists=|/usr/sbin/nvidia-smi +ConditionPathExists=/usr/bin/nvidia-ctk + +[Service] +Type=oneshot +# Values from Environment will be replaced if defined in EnvironmentFile +Environment=NVIDIA_CTK_CDI_OUTPUT_FILE_PATH=/var/run/cdi/nvidia.yaml +EnvironmentFile=-/etc/nvidia-container-toolkit/nvidia-cdi-refresh.env +ExecCondition=/usr/bin/grep -qE '/nvidia.ko' /lib/modules/%v/modules.dep +ExecStart=/usr/bin/nvidia-ctk cdi generate +CapabilityBoundingSet=CAP_SYS_MODULE CAP_SYS_ADMIN CAP_MKNOD + +[Install] +WantedBy=multi-user.target diff --git a/docker/Dockerfile.debian b/docker/Dockerfile.debian index 4b3c535f5..76aa79195 100644 --- a/docker/Dockerfile.debian +++ b/docker/Dockerfile.debian @@ -55,18 +55,16 @@ RUN make PREFIX=${DIST_DIR} cmds WORKDIR $DIST_DIR COPY packaging/debian ./debian - -ARG LIBNVIDIA_CONTAINER_TOOLS_VERSION -ENV LIBNVIDIA_CONTAINER_TOOLS_VERSION ${LIBNVIDIA_CONTAINER_TOOLS_VERSION} +COPY deployments/systemd/ . RUN dch --create --package="${PKG_NAME}" \ --newversion "${REVISION}" \ - "See https://gitlab.com/nvidia/container-toolkit/container-toolkit/-/blob/${GIT_COMMIT}/CHANGELOG.md for the changelog" && \ + "See https://github.com/NVIDIA/nvidia-container-toolkit/blob/${GIT_COMMIT}/CHANGELOG.md for the changelog" && \ dch --append "Bump libnvidia-container dependency to ${LIBNVIDIA_CONTAINER1_VERSION}" && \ dch -r "" && \ if [ "$REVISION" != "$(dpkg-parsechangelog --show-field=Version)" ]; then exit 1; fi CMD export DISTRIB="$(lsb_release -cs)" && \ - debuild -eDISTRIB -eSECTION -eLIBNVIDIA_CONTAINER_TOOLS_VERSION -eVERSION="${REVISION}" \ + debuild -eDISTRIB -eSECTION -eVERSION="${REVISION}" \ --dpkg-buildpackage-hook='sh debian/prepare' -i -us -uc -b && \ mv /tmp/*.deb /dist diff --git a/docker/Dockerfile.opensuse-leap b/docker/Dockerfile.opensuse-leap index f1ce31ecc..600beaeb7 100644 --- a/docker/Dockerfile.opensuse-leap +++ b/docker/Dockerfile.opensuse-leap @@ -46,9 +46,7 @@ RUN make PREFIX=${DIST_DIR} cmds WORKDIR $DIST_DIR/.. COPY packaging/rpm . - -ARG LIBNVIDIA_CONTAINER_TOOLS_VERSION -ENV LIBNVIDIA_CONTAINER_TOOLS_VERSION ${LIBNVIDIA_CONTAINER_TOOLS_VERSION} +COPY deployments/systemd/ . CMD arch=$(uname -m) && \ rpmbuild --clean --target=$arch -bb \ @@ -56,7 +54,6 @@ CMD arch=$(uname -m) && \ -D "release_date $(date +'%a %b %d %Y')" \ -D "git_commit ${GIT_COMMIT}" \ -D "version ${PKG_VERS}" \ - -D "libnvidia_container_tools_version ${LIBNVIDIA_CONTAINER_TOOLS_VERSION}" \ -D "release ${PKG_REV}" \ SPECS/nvidia-container-toolkit.spec && \ mv RPMS/$arch/*.rpm /dist diff --git a/docker/Dockerfile.rpm-yum b/docker/Dockerfile.rpm-yum index 1a429f589..464b66af7 100644 --- a/docker/Dockerfile.rpm-yum +++ b/docker/Dockerfile.rpm-yum @@ -71,9 +71,7 @@ RUN make PREFIX=${DIST_DIR} cmds WORKDIR $DIST_DIR/.. COPY packaging/rpm . - -ARG LIBNVIDIA_CONTAINER_TOOLS_VERSION -ENV LIBNVIDIA_CONTAINER_TOOLS_VERSION ${LIBNVIDIA_CONTAINER_TOOLS_VERSION} +COPY deployments/systemd/ ${DIST_DIR}/ CMD arch=$(uname -m) && \ rpmbuild --clean --target=$arch -bb \ @@ -81,7 +79,6 @@ CMD arch=$(uname -m) && \ -D "release_date $(date +'%a %b %d %Y')" \ -D "git_commit ${GIT_COMMIT}" \ -D "version ${PKG_VERS}" \ - -D "libnvidia_container_tools_version ${LIBNVIDIA_CONTAINER_TOOLS_VERSION}" \ -D "release ${PKG_REV}" \ SPECS/nvidia-container-toolkit.spec && \ mv RPMS/$arch/*.rpm /dist diff --git a/docker/Dockerfile.ubuntu b/docker/Dockerfile.ubuntu index cfa930bb6..37dbd59ec 100644 --- a/docker/Dockerfile.ubuntu +++ b/docker/Dockerfile.ubuntu @@ -53,18 +53,16 @@ RUN make PREFIX=${DIST_DIR} cmds WORKDIR $DIST_DIR COPY packaging/debian ./debian - -ARG LIBNVIDIA_CONTAINER_TOOLS_VERSION -ENV LIBNVIDIA_CONTAINER_TOOLS_VERSION ${LIBNVIDIA_CONTAINER_TOOLS_VERSION} +COPY deployments/systemd/ . RUN dch --create --package="${PKG_NAME}" \ --newversion "${REVISION}" \ - "See https://gitlab.com/nvidia/container-toolkit/container-toolkit/-/blob/${GIT_COMMIT}/CHANGELOG.md for the changelog" && \ - dch --append "Bump libnvidia-container dependency to ${LIBNVIDIA_CONTAINER_TOOLS_VERSION}" && \ + "See https://github.com/NVIDIA/nvidia-container-toolkit/blob/${GIT_COMMIT}/CHANGELOG.md for the changelog" && \ + dch --append "Bump libnvidia-container dependency to ${REVISION}" && \ dch -r "" && \ if [ "$REVISION" != "$(dpkg-parsechangelog --show-field=Version)" ]; then exit 1; fi CMD export DISTRIB="$(lsb_release -cs)" && \ - debuild -eDISTRIB -eSECTION -eLIBNVIDIA_CONTAINER_TOOLS_VERSION -eVERSION="${REVISION}" \ + debuild -eDISTRIB -eSECTION -eVERSION="${REVISION}" \ --dpkg-buildpackage-hook='sh debian/prepare' -i -us -uc -b && \ mv /tmp/*.deb /dist diff --git a/docker/docker.mk b/docker/docker.mk index c264b6492..b11796d2b 100644 --- a/docker/docker.mk +++ b/docker/docker.mk @@ -13,10 +13,10 @@ # limitations under the License. # Supported OSs by architecture -AMD64_TARGETS := ubuntu20.04 ubuntu18.04 ubuntu16.04 debian10 debian9 +AMD64_TARGETS := ubuntu22.04 ubuntu20.04 ubuntu18.04 ubuntu16.04 debian10 debian9 X86_64_TARGETS := centos7 centos8 rhel7 rhel8 amazonlinux2 opensuse-leap15.1 PPC64LE_TARGETS := ubuntu18.04 ubuntu16.04 centos7 centos8 rhel7 rhel8 -ARM64_TARGETS := ubuntu20.04 ubuntu18.04 +ARM64_TARGETS := ubuntu22.04 ubuntu20.04 ubuntu18.04 AARCH64_TARGETS := centos7 centos8 rhel8 amazonlinux2 # Define top-level build targets @@ -85,11 +85,6 @@ docker-all: $(AMD64_TARGETS) $(X86_64_TARGETS) \ --%: docker-build-% @ -LIBNVIDIA_CONTAINER_VERSION ?= $(LIB_VERSION) -LIBNVIDIA_CONTAINER_TAG ?= $(LIB_TAG) - -LIBNVIDIA_CONTAINER_TOOLS_VERSION := $(LIBNVIDIA_CONTAINER_VERSION)$(if $(LIBNVIDIA_CONTAINER_TAG),~$(LIBNVIDIA_CONTAINER_TAG))-1 - # private ubuntu target --ubuntu%: OS := ubuntu @@ -129,7 +124,6 @@ docker-build-%: --build-arg PKG_NAME="$(LIB_NAME)" \ --build-arg PKG_VERS="$(PACKAGE_VERSION)" \ --build-arg PKG_REV="$(PACKAGE_REVISION)" \ - --build-arg LIBNVIDIA_CONTAINER_TOOLS_VERSION="$(LIBNVIDIA_CONTAINER_TOOLS_VERSION)" \ --build-arg GIT_COMMIT="$(GIT_COMMIT)" \ --tag $(BUILDIMAGE) \ --file $(DOCKERFILE) . diff --git a/go.mod b/go.mod index 7a1d16a29..a67823815 100644 --- a/go.mod +++ b/go.mod @@ -1,37 +1,40 @@ module github.com/NVIDIA/nvidia-container-toolkit -go 1.20 +go 1.23.2 + +toolchain go1.24.4 require ( - github.com/NVIDIA/go-nvlib v0.6.1 - github.com/NVIDIA/go-nvml v0.12.4-0 - github.com/fsnotify/fsnotify v1.7.0 - github.com/opencontainers/runtime-spec v1.2.0 + github.com/NVIDIA/go-nvlib v0.7.3 + github.com/NVIDIA/go-nvml v0.12.9-0 + github.com/cyphar/filepath-securejoin v0.4.1 + github.com/moby/sys/reexec v0.1.0 + github.com/moby/sys/symlink v0.3.0 + github.com/opencontainers/runc v1.3.0 + github.com/opencontainers/runtime-spec v1.2.1 github.com/pelletier/go-toml v1.9.5 github.com/sirupsen/logrus v1.9.3 - github.com/stretchr/testify v1.9.0 - github.com/urfave/cli/v2 v2.27.3 - golang.org/x/mod v0.19.0 - golang.org/x/sys v0.22.0 - tags.cncf.io/container-device-interface v0.8.0 - tags.cncf.io/container-device-interface/specs-go v0.8.0 + github.com/stretchr/testify v1.10.0 + github.com/urfave/cli-altsrc/v3 v3.0.1 + github.com/urfave/cli/v3 v3.3.8 + golang.org/x/mod v0.26.0 + golang.org/x/sys v0.34.0 + tags.cncf.io/container-device-interface v1.0.1 + tags.cncf.io/container-device-interface/specs-go v1.0.0 ) require ( - github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect github.com/davecgh/go-spew v1.1.1 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/opencontainers/runtime-tools v0.9.1-0.20221107090550-2e043c6bd626 // indirect - github.com/opencontainers/selinux v1.11.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/russross/blackfriday/v2 v2.1.0 // indirect + github.com/rogpeppe/go-internal v1.11.0 // indirect github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect - github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - sigs.k8s.io/yaml v1.3.0 // indirect + sigs.k8s.io/yaml v1.4.0 // indirect ) diff --git a/go.sum b/go.sum index 21a01aa7d..4465d5b74 100644 --- a/go.sum +++ b/go.sum @@ -1,17 +1,19 @@ -github.com/NVIDIA/go-nvlib v0.6.1 h1:0/5FvaKvDJoJeJ+LFlh+NDQMxMlVw9wOXrOVrGXttfE= -github.com/NVIDIA/go-nvlib v0.6.1/go.mod h1:9UrsLGx/q1OrENygXjOuM5Ey5KCtiZhbvBlbUIxtGWY= -github.com/NVIDIA/go-nvml v0.12.4-0 h1:4tkbB3pT1O77JGr0gQ6uD8FrsUPqP1A/EOEm2wI1TUg= -github.com/NVIDIA/go-nvml v0.12.4-0/go.mod h1:8Llmj+1Rr+9VGGwZuRer5N/aCjxGuR5nPb/9ebBiIEQ= +github.com/NVIDIA/go-nvlib v0.7.3 h1:kXc8PkWUlrwedSpM4fR8xT/DAq1NKy8HqhpgteFcGAw= +github.com/NVIDIA/go-nvlib v0.7.3/go.mod h1:i95Je7GinMy/+BDs++DAdbPmT2TubjNP8i8joC7DD7I= +github.com/NVIDIA/go-nvml v0.12.9-0 h1:e344UK8ZkeMeeLkdQtRhmXRxNf+u532LDZPGMtkdus0= +github.com/NVIDIA/go-nvml v0.12.9-0/go.mod h1:+KNA7c7gIBH7SKSJ1ntlwkfN80zdx8ovl4hrK3LmPt4= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= -github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= -github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22rowi7HkoSU1s= +github.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -28,24 +30,29 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/mndrix/tap-go v0.0.0-20171203230836-629fa407e90b/go.mod h1:pzzDgJWZ34fGzaAZGFW22KVZDfyrYW+QABMrWnJBnSs= +github.com/moby/sys/reexec v0.1.0 h1:RrBi8e0EBTLEgfruBOFcxtElzRGTEUkeIFaVXgU7wok= +github.com/moby/sys/reexec v0.1.0/go.mod h1:EqjBg8F3X7iZe5pU6nRZnYCMUTXoxsjiIfHup5wYIN8= +github.com/moby/sys/symlink v0.3.0 h1:GZX89mEZ9u53f97npBy4Rc3vJKj7JBDj/PN2I22GrNU= +github.com/moby/sys/symlink v0.3.0/go.mod h1:3eNdhduHmYPcgsJtZXW1W4XUJdZGBIkttZ8xKqPUJq0= github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= +github.com/opencontainers/runc v1.3.0 h1:cvP7xbEvD0QQAs0nZKLzkVog2OPZhI/V2w3WmTmUSXI= +github.com/opencontainers/runc v1.3.0/go.mod h1:9wbWt42gV+KRxKRVVugNP6D5+PQciRbenB4fLVsqGPs= github.com/opencontainers/runtime-spec v1.0.3-0.20220825212826-86290f6a00fb/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.2.0 h1:z97+pHb3uELt/yiAWD691HNHQIF07bE7dzrbT927iTk= -github.com/opencontainers/runtime-spec v1.2.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.2.1 h1:S4k4ryNgEpxW1dzyqffOmhI1BHYcjzU8lpJfSlR0xww= +github.com/opencontainers/runtime-spec v1.2.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-tools v0.9.1-0.20221107090550-2e043c6bd626 h1:DmNGcqH3WDbV5k8OJ+esPWbqUOX5rMLR2PMvziDMJi0= github.com/opencontainers/runtime-tools v0.9.1-0.20221107090550-2e043c6bd626/go.mod h1:BRHJJd0E+cx42OybVYSgUvZmU0B8P9gZuRXlZUP7TKI= github.com/opencontainers/selinux v1.9.1/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI= -github.com/opencontainers/selinux v1.11.0 h1:+5Zbo97w3Lbmb3PeqQtpmTkMwsW5nRI3YaLpt7tQ7oU= -github.com/opencontainers/selinux v1.11.0/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec= +github.com/opencontainers/selinux v1.11.1 h1:nHFvthhM0qY8/m+vfhJylliSshm8G1jJ2jDMcgULaH8= +github.com/opencontainers/selinux v1.11.1/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= -github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= +github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= @@ -53,13 +60,15 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 h1:kdXcSzyDtseVEc4yCz2qF8ZrQvIDBJLl4S1c3GCXmoI= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/urfave/cli v1.19.1/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli/v2 v2.27.3 h1:/POWahRmdh7uztQ3CYnaDddk0Rm90PyOgIxgW2rr41M= -github.com/urfave/cli/v2 v2.27.3/go.mod h1:m4QzxcD2qpra4z7WhzEGn74WZLViBnMpb1ToCAKdGRQ= +github.com/urfave/cli-altsrc/v3 v3.0.1 h1:v+gHk59syLk8ao9rYybZs43+D5ut/gzj0omqQ1XYl8k= +github.com/urfave/cli-altsrc/v3 v3.0.1/go.mod h1:8UtsKKcxFVzvaoySFPfvQOk413T+IXJhaCWyyoPW3yM= +github.com/urfave/cli/v3 v3.3.8 h1:BzolUExliMdet9NlJ/u4m5vHSotJ3PzEqSAZ1oPMa/E= +github.com/urfave/cli/v3 v3.3.8/go.mod h1:FJSKtM/9AiiTOJL4fJ6TbMUkxBXn7GO9guZqoZtpYpo= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= @@ -67,26 +76,23 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHo github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= -github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4= -github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM= -golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8= -golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.26.0 h1:EGMPT//Ezu+ylkCijjPc+f4Aih7sZvaAr+O3EHBxvZg= +golang.org/x/mod v0.26.0/go.mod h1:/j6NAhSk8iQ723BGAUyoAcn7SlD7s15Dp9Nd/SfeaFQ= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= -golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= +golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= -sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= -tags.cncf.io/container-device-interface v0.8.0 h1:8bCFo/g9WODjWx3m6EYl3GfUG31eKJbaggyBDxEldRc= -tags.cncf.io/container-device-interface v0.8.0/go.mod h1:Apb7N4VdILW0EVdEMRYXIDVRZfNJZ+kmEUss2kRRQ6Y= -tags.cncf.io/container-device-interface/specs-go v0.8.0 h1:QYGFzGxvYK/ZLMrjhvY0RjpUavIn4KcmRmVP/JjdBTA= -tags.cncf.io/container-device-interface/specs-go v0.8.0/go.mod h1:BhJIkjjPh4qpys+qm4DAYtUyryaTDg9zris+AczXyws= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= +tags.cncf.io/container-device-interface v1.0.1 h1:KqQDr4vIlxwfYh0Ed/uJGVgX+CHAkahrgabg6Q8GYxc= +tags.cncf.io/container-device-interface v1.0.1/go.mod h1:JojJIOeW3hNbcnOH2q0NrWNha/JuHoDZcmYxAZwb2i0= +tags.cncf.io/container-device-interface/specs-go v1.0.0 h1:8gLw29hH1ZQP9K1YtAzpvkHCjjyIxHZYzBAvlQ+0vD8= +tags.cncf.io/container-device-interface/specs-go v1.0.0/go.mod h1:u86hoFWqnh3hWz3esofRFKbI261bUlvUfLKGrDhJkgQ= diff --git a/hack/generate-changelog.sh b/hack/generate-changelog.sh index 0766cfa74..c11ec49f6 100755 --- a/hack/generate-changelog.sh +++ b/hack/generate-changelog.sh @@ -102,7 +102,7 @@ LIB_NVIDIA_CONTAINER_REFERENCE=$( git ls-tree $REFERENCE third_party/libnvidia-c LIB_NVIDIA_CONTAINER_VERSION=$( git ls-tree $SHA third_party/libnvidia-container --object-only ) echo "" -if [[ $(git -C third_party/libnvidia-container log --pretty=format:"%s" $LIB_NVIDIA_CONTAINER_REFERENCE..$LIB_NVIDIA_CONTAINER_VERSION | grep -Ev "(^Merge )|(^Bump)|(no-rel-?note)|(^---)" | sed 's/^\(.*\)/- \1/g' | wc -l) -gt 0 ]]; then +if [[ "${LIB_NVIDIA_CONTAINER_REFERENCE}" != "${LIB_NVIDIA_CONTAINER_VERSION}" ]] && [[ $(git -C third_party/libnvidia-container log --pretty=format:"%s" $LIB_NVIDIA_CONTAINER_REFERENCE..$LIB_NVIDIA_CONTAINER_VERSION | grep -Ev "(^Merge )|(^Bump)|(no-rel-?note)|(^---)" | sed 's/^\(.*\)/- \1/g' | wc -l) -gt 0 ]]; then echo "### Changes in libnvidia-container" echo "" git -C third_party/libnvidia-container log --pretty=format:"%s" $LIB_NVIDIA_CONTAINER_REFERENCE..$LIB_NVIDIA_CONTAINER_VERSION | grep -Ev "(^Merge )|(^Bump)|(no-rel-?note)|(^---)" | sed 's/^\(.*\)/- \1/g' diff --git a/hack/golang-version.sh b/hack/golang-version.sh index b1bdf5b83..81685cc76 100755 --- a/hack/golang-version.sh +++ b/hack/golang-version.sh @@ -13,7 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -SCRIPTS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )"/../scripts && pwd )" +SCRIPTS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )"/../hack && pwd )" DOCKERFILE_ROOT=${SCRIPTS_DIR}/../deployments/devel diff --git a/hack/pull-packages.sh b/hack/pull-packages.sh index f39bd6751..ed2c1e059 100755 --- a/hack/pull-packages.sh +++ b/hack/pull-packages.sh @@ -53,6 +53,6 @@ docker run --rm \ -v $(pwd):$(pwd) \ -w $(pwd) \ -u $(id -u):$(id -g) \ - --entrypoint="bash" \ + --entrypoint="sh" \ ${IMAGE} \ - -c "cp --preserve=timestamps -R /artifacts/* ${DIST_DIR}" + -c "cp -p -R /artifacts/* ${DIST_DIR}" diff --git a/internal/config/cli.go b/internal/config/cli.go index 4a1e199d5..3621df25a 100644 --- a/internal/config/cli.go +++ b/internal/config/cli.go @@ -17,6 +17,7 @@ package config import ( + "fmt" "os" "strings" ) @@ -34,29 +35,62 @@ type ContainerCLIConfig struct { NoPivot bool `toml:"no-pivot,omitempty"` NoCgroups bool `toml:"no-cgroups"` User string `toml:"user"` - Ldconfig string `toml:"ldconfig"` + // Ldconfig represents the path to the ldconfig binary to be used to update + // the ldcache in a container as it is being created. + // If this path starts with a '@' the path is relative to the host and if + // not it is treated as a container path. + // + // Note that the use of container paths are disabled by default and if this + // is required, the features.allow-ldconfig-from-container feature gate must + // be enabled explicitly. + Ldconfig ldconfigPath `toml:"ldconfig"` } // NormalizeLDConfigPath returns the resolved path of the configured LDConfig binary. // This is only done for host LDConfigs and is required to handle systems where // /sbin/ldconfig is a wrapper around /sbin/ldconfig.real. func (c *ContainerCLIConfig) NormalizeLDConfigPath() string { - return NormalizeLDConfigPath(c.Ldconfig) + return string(c.Ldconfig.normalize()) } -// NormalizeLDConfigPath returns the resolved path of the configured LDConfig binary. +// An ldconfigPath is used to represent the path to ldconfig. +type ldconfigPath string + +func (p ldconfigPath) assertValid(allowContainerRelativePath bool) error { + if p.isHostRelative() { + return nil + } + if allowContainerRelativePath { + return nil + } + return fmt.Errorf("nvidia-container-cli.ldconfig value %q is not host-relative (does not start with a '@')", p) +} + +func (p ldconfigPath) isHostRelative() bool { + return strings.HasPrefix(string(p), "@") +} + +// normalize returns the resolved path of the configured LDConfig binary. // This is only done for host LDConfigs and is required to handle systems where // /sbin/ldconfig is a wrapper around /sbin/ldconfig.real. -func NormalizeLDConfigPath(path string) string { - if !strings.HasPrefix(path, "@") { - return path +func (p ldconfigPath) normalize() ldconfigPath { + if !p.isHostRelative() { + return p } + path := string(p) trimmedPath := strings.TrimSuffix(strings.TrimPrefix(path, "@"), ".real") // If the .real path exists, we return that. if _, err := os.Stat(trimmedPath + ".real"); err == nil { - return "@" + trimmedPath + ".real" + return ldconfigPath("@" + trimmedPath + ".real") } // If the .real path does not exists (or cannot be read) we return the non-.real path. - return "@" + trimmedPath + return ldconfigPath("@" + trimmedPath) +} + +// NormalizeLDConfigPath returns the resolved path of the configured LDConfig binary. +// This is only done for host LDConfigs and is required to handle systems where +// /sbin/ldconfig is a wrapper around /sbin/ldconfig.real. +func NormalizeLDConfigPath(path string) string { + return string(ldconfigPath(path).normalize()) } diff --git a/internal/config/cli_test.go b/internal/config/cli_test.go index 100bea952..0d7bf27be 100644 --- a/internal/config/cli_test.go +++ b/internal/config/cli_test.go @@ -33,7 +33,7 @@ func TestNormalizeLDConfigPath(t *testing.T) { testCases := []struct { description string - ldconfig string + ldconfig ldconfigPath expected string }{ { @@ -51,12 +51,12 @@ func TestNormalizeLDConfigPath(t *testing.T) { }, { description: "host .real file exists is returned", - ldconfig: "@" + filepath.Join(testDir, "exists.real"), + ldconfig: ldconfigPath("@" + filepath.Join(testDir, "exists.real")), expected: "@" + filepath.Join(testDir, "exists.real"), }, { description: "host resolves .real file", - ldconfig: "@" + filepath.Join(testDir, "exists"), + ldconfig: ldconfigPath("@" + filepath.Join(testDir, "exists")), expected: "@" + filepath.Join(testDir, "exists.real"), }, { diff --git a/internal/config/config.go b/internal/config/config.go index 33b8ba4db..26ff3bea2 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -18,6 +18,7 @@ package config import ( "bufio" + "errors" "os" "path/filepath" "strings" @@ -30,8 +31,10 @@ import ( ) const ( - configOverride = "XDG_CONFIG_HOME" - configFilePath = "nvidia-container-runtime/config.toml" + FilePathOverrideEnvVar = "NVIDIA_CTK_CONFIG_FILE_PATH" + RelativeFilePath = "nvidia-container-runtime/config.toml" + + configRootOverride = "XDG_CONFIG_HOME" nvidiaCTKExecutable = "nvidia-ctk" nvidiaCTKDefaultFilePath = "/usr/bin/nvidia-ctk" @@ -51,6 +54,8 @@ var ( NVIDIAContainerToolkitExecutable = "nvidia-container-toolkit" ) +var errInvalidConfig = errors.New("invalid config value") + // Config represents the contents of the config.toml file for the NVIDIA Container Toolkit // Note: This is currently duplicated by the HookConfig in cmd/nvidia-container-toolkit/hook_config.go type Config struct { @@ -71,11 +76,15 @@ type Config struct { // GetConfigFilePath returns the path to the config file for the configured system func GetConfigFilePath() string { - if XDGConfigDir := os.Getenv(configOverride); len(XDGConfigDir) != 0 { - return filepath.Join(XDGConfigDir, configFilePath) + if configFilePathOverride := os.Getenv(FilePathOverrideEnvVar); configFilePathOverride != "" { + return configFilePathOverride + } + configRoot := "/etc" + if XDGConfigDir := os.Getenv(configRootOverride); len(XDGConfigDir) != 0 { + configRoot = XDGConfigDir } - return filepath.Join("/etc", configFilePath) + return filepath.Join(configRoot, RelativeFilePath) } // GetConfig sets up the config struct. Values are read from a toml file @@ -107,7 +116,7 @@ func GetDefault() (*Config, error) { NVIDIAContainerRuntimeConfig: RuntimeConfig{ DebugFilePath: "/dev/null", LogLevel: "info", - Runtimes: []string{"docker-runc", "runc", "crun"}, + Runtimes: []string{"runc", "crun"}, Mode: "auto", Modes: modesConfig{ CSV: csvModeConfig{ @@ -118,6 +127,9 @@ func GetDefault() (*Config, error) { AnnotationPrefixes: []string{cdi.AnnotationPrefix}, SpecDirs: cdi.DefaultSpecDirs, }, + Legacy: legacyModeConfig{ + CUDACompatMode: defaultCUDACompatMode, + }, }, }, NVIDIAContainerRuntimeHookConfig: RuntimeHookConfig{ @@ -127,8 +139,20 @@ func GetDefault() (*Config, error) { return &d, nil } -func getLdConfigPath() string { - return NormalizeLDConfigPath("@/sbin/ldconfig") +// assertValid checks for a valid config. +func (c *Config) assertValid() error { + err := c.NVIDIAContainerCLIConfig.Ldconfig.assertValid(c.Features.AllowLDConfigFromContainer.IsEnabled()) + if err != nil { + return errors.Join(err, errInvalidConfig) + } + return nil +} + +// getLdConfigPath allows us to override this function for testing. +var getLdConfigPath = getLdConfigPathStub + +func getLdConfigPathStub() ldconfigPath { + return ldconfigPath("@/sbin/ldconfig").normalize() } func getUserGroup() string { diff --git a/internal/config/config_test.go b/internal/config/config_test.go index 0873ebd2c..ce86d17a4 100644 --- a/internal/config/config_test.go +++ b/internal/config/config_test.go @@ -27,9 +27,26 @@ import ( func TestGetConfigWithCustomConfig(t *testing.T) { testDir := t.TempDir() - t.Setenv(configOverride, testDir) + t.Setenv(configRootOverride, testDir) - filename := filepath.Join(testDir, configFilePath) + filename := filepath.Join(testDir, RelativeFilePath) + + // By default debug is disabled + contents := []byte("[nvidia-container-runtime]\ndebug = \"/nvidia-container-toolkit.log\"") + + require.NoError(t, os.MkdirAll(filepath.Dir(filename), 0766)) + require.NoError(t, os.WriteFile(filename, contents, 0600)) + + cfg, err := GetConfig() + require.NoError(t, err) + require.Equal(t, "/nvidia-container-toolkit.log", cfg.NVIDIAContainerRuntimeConfig.DebugFilePath) +} + +func TestGetConfigWithConfigFilePathOverride(t *testing.T) { + testDir := t.TempDir() + filename := filepath.Join(testDir, RelativeFilePath) + + t.Setenv(FilePathOverrideEnvVar, filename) // By default debug is disabled contents := []byte("[nvidia-container-runtime]\ndebug = \"/nvidia-container-toolkit.log\"") @@ -44,28 +61,26 @@ func TestGetConfigWithCustomConfig(t *testing.T) { func TestGetConfig(t *testing.T) { testCases := []struct { - description string - contents []string - expectedError error - inspectLdconfig bool - distIdsLike []string - expectedConfig *Config + description string + contents []string + expectedError error + distIdsLike []string + expectedConfig *Config }{ { - description: "empty config is default", - inspectLdconfig: true, + description: "empty config is default", expectedConfig: &Config{ AcceptEnvvarUnprivileged: true, SupportedDriverCapabilities: "compat32,compute,display,graphics,ngx,utility,video", NVIDIAContainerCLIConfig: ContainerCLIConfig{ Root: "", LoadKmods: true, - Ldconfig: "WAS_CHECKED", + Ldconfig: "@/test/ld/config/path", }, NVIDIAContainerRuntimeConfig: RuntimeConfig{ DebugFilePath: "/dev/null", LogLevel: "info", - Runtimes: []string{"docker-runc", "runc", "crun"}, + Runtimes: []string{"runc", "crun"}, Mode: "auto", Modes: modesConfig{ CSV: csvModeConfig{ @@ -76,6 +91,9 @@ func TestGetConfig(t *testing.T) { AnnotationPrefixes: []string{"cdi.k8s.io/"}, SpecDirs: []string{"/etc/cdi", "/var/run/cdi"}, }, + Legacy: legacyModeConfig{ + CUDACompatMode: "ldconfig", + }, }, }, NVIDIAContainerRuntimeHookConfig: RuntimeHookConfig{ @@ -93,8 +111,9 @@ func TestGetConfig(t *testing.T) { "supported-driver-capabilities = \"compute,utility\"", "nvidia-container-cli.root = \"/bar/baz\"", "nvidia-container-cli.load-kmods = false", - "nvidia-container-cli.ldconfig = \"/foo/bar/ldconfig\"", + "nvidia-container-cli.ldconfig = \"@/foo/bar/ldconfig\"", "nvidia-container-cli.user = \"foo:bar\"", + "nvidia-container-cli.cuda-compat-mode = \"mount\"", "nvidia-container-runtime.debug = \"/foo/bar\"", "nvidia-container-runtime.discover-mode = \"not-legacy\"", "nvidia-container-runtime.log-level = \"debug\"", @@ -104,6 +123,7 @@ func TestGetConfig(t *testing.T) { "nvidia-container-runtime.modes.cdi.annotation-prefixes = [\"cdi.k8s.io/\", \"example.vendor.com/\",]", "nvidia-container-runtime.modes.cdi.spec-dirs = [\"/except/etc/cdi\", \"/not/var/run/cdi\",]", "nvidia-container-runtime.modes.csv.mount-spec-path = \"/not/etc/nvidia-container-runtime/host-files-for-container.d\"", + "nvidia-container-runtime.modes.legacy.cuda-compat-mode = \"mount\"", "nvidia-container-runtime-hook.path = \"/foo/bar/nvidia-container-runtime-hook\"", "nvidia-ctk.path = \"/foo/bar/nvidia-ctk\"", }, @@ -113,7 +133,7 @@ func TestGetConfig(t *testing.T) { NVIDIAContainerCLIConfig: ContainerCLIConfig{ Root: "/bar/baz", LoadKmods: false, - Ldconfig: "/foo/bar/ldconfig", + Ldconfig: "@/foo/bar/ldconfig", User: "foo:bar", }, NVIDIAContainerRuntimeConfig: RuntimeConfig{ @@ -136,6 +156,9 @@ func TestGetConfig(t *testing.T) { "/not/var/run/cdi", }, }, + Legacy: legacyModeConfig{ + CUDACompatMode: "mount", + }, }, }, NVIDIAContainerRuntimeHookConfig: RuntimeHookConfig{ @@ -146,6 +169,56 @@ func TestGetConfig(t *testing.T) { }, }, }, + { + description: "feature allows ldconfig to be overridden", + contents: []string{ + "[nvidia-container-cli]", + "ldconfig = \"/foo/bar/ldconfig\"", + "[features]", + "allow-ldconfig-from-container = true", + }, + expectedConfig: &Config{ + AcceptEnvvarUnprivileged: true, + SupportedDriverCapabilities: "compat32,compute,display,graphics,ngx,utility,video", + NVIDIAContainerCLIConfig: ContainerCLIConfig{ + Ldconfig: "/foo/bar/ldconfig", + LoadKmods: true, + }, + NVIDIAContainerRuntimeConfig: RuntimeConfig{ + DebugFilePath: "/dev/null", + LogLevel: "info", + Runtimes: []string{"runc", "crun"}, + Mode: "auto", + Modes: modesConfig{ + CSV: csvModeConfig{ + MountSpecPath: "/etc/nvidia-container-runtime/host-files-for-container.d", + }, + CDI: cdiModeConfig{ + DefaultKind: "nvidia.com/gpu", + AnnotationPrefixes: []string{ + "cdi.k8s.io/", + }, + SpecDirs: []string{ + "/etc/cdi", + "/var/run/cdi", + }, + }, + Legacy: legacyModeConfig{ + CUDACompatMode: "ldconfig", + }, + }, + }, + NVIDIAContainerRuntimeHookConfig: RuntimeHookConfig{ + Path: "nvidia-container-runtime-hook", + }, + NVIDIACTKConfig: CTKConfig{ + Path: "nvidia-ctk", + }, + Features: features{ + AllowLDConfigFromContainer: ptr(feature(true)), + }, + }, + }, { description: "config options set in section", contents: []string{ @@ -154,7 +227,8 @@ func TestGetConfig(t *testing.T) { "[nvidia-container-cli]", "root = \"/bar/baz\"", "load-kmods = false", - "ldconfig = \"/foo/bar/ldconfig\"", + "ldconfig = \"@/foo/bar/ldconfig\"", + "cuda-compat-mode = \"mount\"", "user = \"foo:bar\"", "[nvidia-container-runtime]", "debug = \"/foo/bar\"", @@ -168,6 +242,8 @@ func TestGetConfig(t *testing.T) { "spec-dirs = [\"/except/etc/cdi\", \"/not/var/run/cdi\",]", "[nvidia-container-runtime.modes.csv]", "mount-spec-path = \"/not/etc/nvidia-container-runtime/host-files-for-container.d\"", + "[nvidia-container-runtime.modes.legacy]", + "cuda-compat-mode = \"mount\"", "[nvidia-container-runtime-hook]", "path = \"/foo/bar/nvidia-container-runtime-hook\"", "[nvidia-ctk]", @@ -179,7 +255,7 @@ func TestGetConfig(t *testing.T) { NVIDIAContainerCLIConfig: ContainerCLIConfig{ Root: "/bar/baz", LoadKmods: false, - Ldconfig: "/foo/bar/ldconfig", + Ldconfig: "@/foo/bar/ldconfig", User: "foo:bar", }, NVIDIAContainerRuntimeConfig: RuntimeConfig{ @@ -202,6 +278,9 @@ func TestGetConfig(t *testing.T) { "/not/var/run/cdi", }, }, + Legacy: legacyModeConfig{ + CUDACompatMode: "mount", + }, }, }, NVIDIAContainerRuntimeHookConfig: RuntimeHookConfig{ @@ -213,22 +292,21 @@ func TestGetConfig(t *testing.T) { }, }, { - description: "suse config", - distIdsLike: []string{"suse", "opensuse"}, - inspectLdconfig: true, + description: "suse config", + distIdsLike: []string{"suse", "opensuse"}, expectedConfig: &Config{ AcceptEnvvarUnprivileged: true, SupportedDriverCapabilities: "compat32,compute,display,graphics,ngx,utility,video", NVIDIAContainerCLIConfig: ContainerCLIConfig{ Root: "", LoadKmods: true, - Ldconfig: "WAS_CHECKED", + Ldconfig: "@/test/ld/config/path", User: "root:video", }, NVIDIAContainerRuntimeConfig: RuntimeConfig{ DebugFilePath: "/dev/null", LogLevel: "info", - Runtimes: []string{"docker-runc", "runc", "crun"}, + Runtimes: []string{"runc", "crun"}, Mode: "auto", Modes: modesConfig{ CSV: csvModeConfig{ @@ -239,6 +317,9 @@ func TestGetConfig(t *testing.T) { AnnotationPrefixes: []string{"cdi.k8s.io/"}, SpecDirs: []string{"/etc/cdi", "/var/run/cdi"}, }, + Legacy: legacyModeConfig{ + CUDACompatMode: "ldconfig", + }, }, }, NVIDIAContainerRuntimeHookConfig: RuntimeHookConfig{ @@ -250,9 +331,8 @@ func TestGetConfig(t *testing.T) { }, }, { - description: "suse config overrides user", - distIdsLike: []string{"suse", "opensuse"}, - inspectLdconfig: true, + description: "suse config overrides user", + distIdsLike: []string{"suse", "opensuse"}, contents: []string{ "nvidia-container-cli.user = \"foo:bar\"", }, @@ -262,13 +342,13 @@ func TestGetConfig(t *testing.T) { NVIDIAContainerCLIConfig: ContainerCLIConfig{ Root: "", LoadKmods: true, - Ldconfig: "WAS_CHECKED", + Ldconfig: "@/test/ld/config/path", User: "foo:bar", }, NVIDIAContainerRuntimeConfig: RuntimeConfig{ DebugFilePath: "/dev/null", LogLevel: "info", - Runtimes: []string{"docker-runc", "runc", "crun"}, + Runtimes: []string{"runc", "crun"}, Mode: "auto", Modes: modesConfig{ CSV: csvModeConfig{ @@ -279,6 +359,9 @@ func TestGetConfig(t *testing.T) { AnnotationPrefixes: []string{"cdi.k8s.io/"}, SpecDirs: []string{"/etc/cdi", "/var/run/cdi"}, }, + Legacy: legacyModeConfig{ + CUDACompatMode: "ldconfig", + }, }, }, NVIDIAContainerRuntimeHookConfig: RuntimeHookConfig{ @@ -293,6 +376,7 @@ func TestGetConfig(t *testing.T) { for _, tc := range testCases { t.Run(tc.description, func(t *testing.T) { + defer setGetLdConfigPathForTest()() defer setGetDistIDLikeForTest(tc.distIdsLike)() reader := strings.NewReader(strings.Join(tc.contents, "\n")) @@ -305,17 +389,59 @@ func TestGetConfig(t *testing.T) { cfg, err := tomlCfg.Config() require.NoError(t, err) - // We first handle the ldconfig path since this is currently system-dependent. - if tc.inspectLdconfig { - ldconfig := cfg.NVIDIAContainerCLIConfig.Ldconfig - require.True(t, strings.HasPrefix(ldconfig, "@/sbin/ldconfig")) - remaining := strings.TrimPrefix(ldconfig, "@/sbin/ldconfig") - require.True(t, remaining == ".real" || remaining == "") + require.EqualValues(t, tc.expectedConfig, cfg) + }) + } +} - cfg.NVIDIAContainerCLIConfig.Ldconfig = "WAS_CHECKED" - } +func TestAssertValid(t *testing.T) { + defer setGetLdConfigPathForTest()() - require.EqualValues(t, tc.expectedConfig, cfg) + testCases := []struct { + description string + config *Config + expectedError error + }{ + { + description: "default is valid", + config: func() *Config { + config, _ := GetDefault() + return config + }(), + }, + { + description: "alternative host ldconfig path is valid", + config: &Config{ + NVIDIAContainerCLIConfig: ContainerCLIConfig{ + Ldconfig: "@/some/host/path", + }, + }, + }, + { + description: "non-host path is invalid", + config: &Config{ + NVIDIAContainerCLIConfig: ContainerCLIConfig{ + Ldconfig: "/non/host/path", + }, + }, + expectedError: errInvalidConfig, + }, + { + description: "feature flag allows non-host path", + config: &Config{ + NVIDIAContainerCLIConfig: ContainerCLIConfig{ + Ldconfig: "/non/host/path", + }, + Features: features{ + AllowLDConfigFromContainer: ptr(feature(true)), + }, + }, + }, + } + + for _, tc := range testCases { + t.Run(tc.description, func(t *testing.T) { + require.ErrorIs(t, tc.config.assertValid(), tc.expectedError) }) } } @@ -335,3 +461,18 @@ func setGetDistIDLikeForTest(ids []string) func() { getDistIDLike = original } } + +// prt returns a reference to whatever type is passed into it +func ptr[T any](x T) *T { + return &x +} + +func setGetLdConfigPathForTest() func() { + previous := getLdConfigPath + getLdConfigPath = func() ldconfigPath { + return "@/test/ld/config/path" + } + return func() { + getLdConfigPath = previous + } +} diff --git a/internal/config/features.go b/internal/config/features.go index dfc6b165e..913f14525 100644 --- a/internal/config/features.go +++ b/internal/config/features.go @@ -16,70 +16,40 @@ package config -type featureName string - -const ( - FeatureGDS = featureName("gds") - FeatureMOFED = featureName("mofed") - FeatureNVSWITCH = featureName("nvswitch") - FeatureGDRCopy = featureName("gdrcopy") -) - // features specifies a set of named features. type features struct { - GDS *feature `toml:"gds,omitempty"` - MOFED *feature `toml:"mofed,omitempty"` - NVSWITCH *feature `toml:"nvswitch,omitempty"` - GDRCopy *feature `toml:"gdrcopy,omitempty"` + // AllowCUDACompatLibsFromContainer allows CUDA compat libs from a container + // to override certain driver library mounts from the host. + AllowCUDACompatLibsFromContainer *feature `toml:"allow-cuda-compat-libs-from-container,omitempty"` + // AllowLDConfigFromContainer allows non-host ldconfig paths to be used. + // If this feature flag is not set to 'true' only host-rooted config paths + // (i.e. paths starting with an '@' are considered valid) + AllowLDConfigFromContainer *feature `toml:"allow-ldconfig-from-container,omitempty"` + // DisableCUDACompatLibHook, when enabled skips the injection of a specific + // hook to process CUDA compatibility libraries. + // + // Note: Since this mechanism replaces the logic in the `nvidia-container-cli`, + // toggling this feature has no effect if `allow-cuda-compat-libs-from-container` is enabled. + DisableCUDACompatLibHook *feature `toml:"disable-cuda-compat-lib-hook,omitempty"` + // DisableImexChannelCreation ensures that the implicit creation of + // requested IMEX channels is skipped when invoking the nvidia-container-cli. + DisableImexChannelCreation *feature `toml:"disable-imex-channel-creation,omitempty"` + // IgnoreImexChannelRequests configures the NVIDIA Container Toolkit to + // ignore IMEX channel requests through the NVIDIA_IMEX_CHANNELS envvar or + // volume mounts. + // This ensures that the NVIDIA Container Toolkit cannot be used to provide + // access to an IMEX channel by simply specifying an environment variable, + // possibly bypassing other checks by an orchestration system such as + // kubernetes. + IgnoreImexChannelRequests *feature `toml:"ignore-imex-channel-requests,omitempty"` } type feature bool -// IsEnabled checks whether a specified named feature is enabled. -// An optional list of environments to check for feature-specific environment -// variables can also be supplied. -func (fs features) IsEnabled(n featureName, in ...getenver) bool { - featureEnvvars := map[featureName]string{ - FeatureGDS: "NVIDIA_GDS", - FeatureMOFED: "NVIDIA_MOFED", - FeatureNVSWITCH: "NVIDIA_NVSWITCH", - FeatureGDRCopy: "NVIDIA_GDRCOPY", - } - - envvar := featureEnvvars[n] - switch n { - case FeatureGDS: - return fs.GDS.isEnabled(envvar, in...) - case FeatureMOFED: - return fs.MOFED.isEnabled(envvar, in...) - case FeatureNVSWITCH: - return fs.NVSWITCH.isEnabled(envvar, in...) - case FeatureGDRCopy: - return fs.GDRCopy.isEnabled(envvar, in...) - default: - return false - } -} - -// isEnabled checks whether a feature is enabled. -// If the enabled value is explicitly set, this is returned, otherwise the -// associated envvar is checked in the specified getenver for the string "enabled" -// A CUDA container / image can be passed here. -func (f *feature) isEnabled(envvar string, ins ...getenver) bool { +// IsEnabled checks whether a feature is explicitly enabled. +func (f *feature) IsEnabled() bool { if f != nil { return bool(*f) } - if envvar == "" { - return false - } - for _, in := range ins { - if in.Getenv(envvar) == "enabled" { - return true - } - } return false } - -type getenver interface { - Getenv(string) string -} diff --git a/internal/config/hook.go b/internal/config/hook.go index 3292f1382..4d8b448f7 100644 --- a/internal/config/hook.go +++ b/internal/config/hook.go @@ -24,13 +24,3 @@ type RuntimeHookConfig struct { // SkipModeDetection disables the mode check for the runtime hook. SkipModeDetection bool `toml:"skip-mode-detection"` } - -// GetDefaultRuntimeHookConfig defines the default values for the config -func GetDefaultRuntimeHookConfig() (*RuntimeHookConfig, error) { - cfg, err := GetDefault() - if err != nil { - return nil, err - } - - return &cfg.NVIDIAContainerRuntimeHookConfig, nil -} diff --git a/internal/config/image/builder.go b/internal/config/image/builder.go index da9025f05..a2e29e776 100644 --- a/internal/config/image/builder.go +++ b/internal/config/image/builder.go @@ -21,22 +21,35 @@ import ( "strings" "github.com/opencontainers/runtime-spec/specs-go" + + "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" ) type builder struct { - env map[string]string - mounts []specs.Mount + CUDA + disableRequire bool } +// Option is a functional option for creating a CUDA image. +type Option func(*builder) error + // New creates a new CUDA image from the input options. func New(opt ...Option) (CUDA, error) { - b := &builder{} + b := &builder{ + CUDA: CUDA{ + acceptEnvvarUnprivileged: true, + }, + } for _, o := range opt { if err := o(b); err != nil { return CUDA{}, err } } + + if b.logger == nil { + b.logger = logger.New() + } if b.env == nil { b.env = make(map[string]string) } @@ -47,18 +60,39 @@ func New(opt ...Option) (CUDA, error) { // build creates a CUDA image from the builder. func (b builder) build() (CUDA, error) { if b.disableRequire { - b.env[envNVDisableRequire] = "true" + b.env[EnvVarNvidiaDisableRequire] = "true" } - c := CUDA{ - env: b.env, - mounts: b.mounts, + return b.CUDA, nil +} + +func WithAcceptDeviceListAsVolumeMounts(acceptDeviceListAsVolumeMounts bool) Option { + return func(b *builder) error { + b.acceptDeviceListAsVolumeMounts = acceptDeviceListAsVolumeMounts + return nil } - return c, nil } -// Option is a functional option for creating a CUDA image. -type Option func(*builder) error +func WithAcceptEnvvarUnprivileged(acceptEnvvarUnprivileged bool) Option { + return func(b *builder) error { + b.acceptEnvvarUnprivileged = acceptEnvvarUnprivileged + return nil + } +} + +func WithAnnotations(annotations map[string]string) Option { + return func(b *builder) error { + b.annotations = annotations + return nil + } +} + +func WithAnnotationsPrefixes(annotationsPrefixes []string) Option { + return func(b *builder) error { + b.annotationsPrefixes = annotationsPrefixes + return nil + } +} // WithDisableRequire sets the disable require option. func WithDisableRequire(disableRequire bool) Option { @@ -93,6 +127,14 @@ func WithEnvMap(env map[string]string) Option { } } +// WithLogger sets the logger to use when creating the CUDA image. +func WithLogger(logger logger.Interface) Option { + return func(b *builder) error { + b.logger = logger + return nil + } +} + // WithMounts sets the mounts associated with the CUDA image. func WithMounts(mounts []specs.Mount) Option { return func(b *builder) error { @@ -100,3 +142,20 @@ func WithMounts(mounts []specs.Mount) Option { return nil } } + +// WithPreferredVisibleDevicesEnvVars sets the environment variables that +// should take precedence over the default NVIDIA_VISIBLE_DEVICES. +func WithPreferredVisibleDevicesEnvVars(preferredVisibleDeviceEnvVars ...string) Option { + return func(b *builder) error { + b.preferredVisibleDeviceEnvVars = preferredVisibleDeviceEnvVars + return nil + } +} + +// WithPrivileged sets whether an image is privileged or not. +func WithPrivileged(isPrivileged bool) Option { + return func(b *builder) error { + b.isPrivileged = isPrivileged + return nil + } +} diff --git a/internal/config/image/cuda_image.go b/internal/config/image/cuda_image.go index d285dea24..d1e9a6049 100644 --- a/internal/config/image/cuda_image.go +++ b/internal/config/image/cuda_image.go @@ -19,48 +19,66 @@ package image import ( "fmt" "path/filepath" + "slices" "strconv" "strings" "github.com/opencontainers/runtime-spec/specs-go" "golang.org/x/mod/semver" "tags.cncf.io/container-device-interface/pkg/parser" + + "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" ) const ( - envCUDAVersion = "CUDA_VERSION" - envNVRequirePrefix = "NVIDIA_REQUIRE_" - envNVRequireCUDA = envNVRequirePrefix + "CUDA" - envNVRequireJetpack = envNVRequirePrefix + "JETPACK" - envNVDisableRequire = "NVIDIA_DISABLE_REQUIRE" - envNVDriverCapabilities = "NVIDIA_DRIVER_CAPABILITIES" + DeviceListAsVolumeMountsRoot = "/var/run/nvidia-container-devices" + + volumeMountDevicePrefixCDI = "cdi/" + volumeMountDevicePrefixImex = "imex/" ) // CUDA represents a CUDA image that can be used for GPU computing. This wraps // a map of environment variable to values that can be used to perform lookups // such as requirements. type CUDA struct { - env map[string]string - mounts []specs.Mount + logger logger.Interface + + annotations map[string]string + env map[string]string + isPrivileged bool + mounts []specs.Mount + + annotationsPrefixes []string + acceptDeviceListAsVolumeMounts bool + acceptEnvvarUnprivileged bool + preferredVisibleDeviceEnvVars []string } // NewCUDAImageFromSpec creates a CUDA image from the input OCI runtime spec. // The process environment is read (if present) to construc the CUDA Image. -func NewCUDAImageFromSpec(spec *specs.Spec) (CUDA, error) { +func NewCUDAImageFromSpec(spec *specs.Spec, opts ...Option) (CUDA, error) { + if spec == nil { + return New(opts...) + } + var env []string - if spec != nil && spec.Process != nil { + if spec.Process != nil { env = spec.Process.Env } - return New( + specOpts := []Option{ + WithAnnotations(spec.Annotations), WithEnv(env), WithMounts(spec.Mounts), - ) + WithPrivileged(IsPrivileged((*OCISpec)(spec))), + } + + return New(append(opts, specOpts...)...) } -// NewCUDAImageFromEnv creates a CUDA image from the input environment. The environment +// newCUDAImageFromEnv creates a CUDA image from the input environment. The environment // is a list of strings of the form ENVAR=VALUE. -func NewCUDAImageFromEnv(env []string) (CUDA, error) { +func newCUDAImageFromEnv(env []string) (CUDA, error) { return New(WithEnv(env)) } @@ -80,11 +98,15 @@ func (i CUDA) HasEnvvar(key string) bool { // image is considered legacy if it has a CUDA_VERSION environment variable defined // and no NVIDIA_REQUIRE_CUDA environment variable defined. func (i CUDA) IsLegacy() bool { - legacyCudaVersion := i.env[envCUDAVersion] - cudaRequire := i.env[envNVRequireCUDA] + legacyCudaVersion := i.env[EnvVarCudaVersion] + cudaRequire := i.env[EnvVarNvidiaRequireCuda] return len(legacyCudaVersion) > 0 && len(cudaRequire) == 0 } +func (i CUDA) IsPrivileged() bool { + return i.isPrivileged +} + // GetRequirements returns the requirements from all NVIDIA_REQUIRE_ environment // variables. func (i CUDA) GetRequirements() ([]string, error) { @@ -95,7 +117,7 @@ func (i CUDA) GetRequirements() ([]string, error) { // All variables with the "NVIDIA_REQUIRE_" prefix are passed to nvidia-container-cli var requirements []string for name, value := range i.env { - if strings.HasPrefix(name, envNVRequirePrefix) && !strings.HasPrefix(name, envNVRequireJetpack) { + if strings.HasPrefix(name, NvidiaRequirePrefix) && !strings.HasPrefix(name, EnvVarNvidiaRequireJetpack) { requirements = append(requirements, value) } } @@ -113,7 +135,7 @@ func (i CUDA) GetRequirements() ([]string, error) { // HasDisableRequire checks for the value of the NVIDIA_DISABLE_REQUIRE. If set // to a valid (true) boolean value this can be used to disable the requirement checks func (i CUDA) HasDisableRequire() bool { - if disable, exists := i.env[envNVDisableRequire]; exists { + if disable, exists := i.env[EnvVarNvidiaDisableRequire]; exists { // i.logger.Debugf("NVIDIA_DISABLE_REQUIRE=%v; skipping requirement checks", disable) d, _ := strconv.ParseBool(disable) return d @@ -122,8 +144,8 @@ func (i CUDA) HasDisableRequire() bool { return false } -// DevicesFromEnvvars returns the devices requested by the image through environment variables -func (i CUDA) DevicesFromEnvvars(envVars ...string) VisibleDevices { +// devicesFromEnvvars returns the devices requested by the image through environment variables +func (i CUDA) devicesFromEnvvars(envVars ...string) []string { // We concantenate all the devices from the specified env. var isSet bool var devices []string @@ -144,20 +166,20 @@ func (i CUDA) DevicesFromEnvvars(envVars ...string) VisibleDevices { // Environment variable unset with legacy image: default to "all". if !isSet && len(devices) == 0 && i.IsLegacy() { - return NewVisibleDevices("all") + devices = []string{"all"} } // Environment variable unset or empty or "void": return nil if len(devices) == 0 || requested["void"] { - return NewVisibleDevices("void") + devices = []string{"void"} } - return NewVisibleDevices(devices...) + return NewVisibleDevices(devices...).List() } // GetDriverCapabilities returns the requested driver capabilities. func (i CUDA) GetDriverCapabilities() DriverCapabilities { - env := i.env[envNVDriverCapabilities] + env := i.env[EnvVarNvidiaDriverCapabilities] capabilities := make(DriverCapabilities) for _, c := range strings.Split(env, ",") { @@ -168,7 +190,7 @@ func (i CUDA) GetDriverCapabilities() DriverCapabilities { } func (i CUDA) legacyVersion() (string, error) { - cudaVersion := i.env[envCUDAVersion] + cudaVersion := i.env[EnvVarCudaVersion] majorMinor, err := parseMajorMinorVersion(cudaVersion) if err != nil { return "", fmt.Errorf("invalid CUDA version %v: %v", cudaVersion, err) @@ -202,30 +224,138 @@ func parseMajorMinorVersion(version string) (string, error) { // OnlyFullyQualifiedCDIDevices returns true if all devices requested in the image are requested as CDI devices/ func (i CUDA) OnlyFullyQualifiedCDIDevices() bool { var hasCDIdevice bool - for _, device := range i.DevicesFromEnvvars("NVIDIA_VISIBLE_DEVICES").List() { + for _, device := range i.VisibleDevices() { if !parser.IsQualifiedName(device) { return false } hasCDIdevice = true } + return hasCDIdevice +} - for _, device := range i.DevicesFromMounts() { - if !strings.HasPrefix(device, "cdi/") { - return false +// visibleEnvVars returns the environment variables that are used to determine device visibility. +// It returns the preferred environment variables that are set, or NVIDIA_VISIBLE_DEVICES if none are set. +func (i CUDA) visibleEnvVars() []string { + var envVars []string + for _, envVar := range i.preferredVisibleDeviceEnvVars { + if !i.HasEnvvar(envVar) { + continue } - hasCDIdevice = true + envVars = append(envVars, envVar) } - return hasCDIdevice + if len(envVars) > 0 { + return envVars + } + return []string{EnvVarNvidiaVisibleDevices} } -const ( - deviceListAsVolumeMountsRoot = "/var/run/nvidia-container-devices" -) +// VisibleDevices returns a list of devices requested in the container image. +// If volume mount requests are enabled these are returned if requested, +// otherwise device requests through environment variables are considered. +// In cases where environment variable requests required privileged containers, +// such devices requests are ignored. +func (i CUDA) VisibleDevices() []string { + // If annotation device requests are present, these are preferred. + annotationDeviceRequests := i.cdiDeviceRequestsFromAnnotations() + if len(annotationDeviceRequests) > 0 { + return annotationDeviceRequests + } -// DevicesFromMounts returns a list of device specified as mounts. -// TODO: This should be merged with getDevicesFromMounts used in the NVIDIA Container Runtime -func (i CUDA) DevicesFromMounts() []string { - root := filepath.Clean(deviceListAsVolumeMountsRoot) + // If enabled, try and get the device list from volume mounts first + if i.acceptDeviceListAsVolumeMounts { + volumeMountDeviceRequests := i.visibleDevicesFromMounts() + if len(volumeMountDeviceRequests) > 0 { + return volumeMountDeviceRequests + } + } + + // Get the Fallback to reading from the environment variable if privileges are correct + envVarDeviceRequests := i.visibleDevicesFromEnvVar() + if len(envVarDeviceRequests) == 0 { + return nil + } + + // If the container is privileged, or environment variable requests are + // allowed for unprivileged containers, these devices are returned. + if i.isPrivileged || i.acceptEnvvarUnprivileged { + return envVarDeviceRequests + } + + // We log a warning if we are ignoring the environment variable requests. + envVars := i.visibleEnvVars() + if len(envVars) > 0 { + i.logger.Warningf("Ignoring devices requested by environment variable(s) in unprivileged container: %v", envVars) + } + + return nil +} + +// cdiDeviceRequestsFromAnnotations returns a list of devices specified in the +// annotations. +// Keys starting with the specified prefixes are considered and expected to +// contain a comma-separated list of fully-qualified CDI devices names. +// The format of the requested devices is not checked and the list is not +// deduplicated. +func (i CUDA) cdiDeviceRequestsFromAnnotations() []string { + if len(i.annotationsPrefixes) == 0 || len(i.annotations) == 0 { + return nil + } + + var annotationKeys []string + for key := range i.annotations { + for _, prefix := range i.annotationsPrefixes { + if strings.HasPrefix(key, prefix) { + annotationKeys = append(annotationKeys, key) + // There is no need to check additional prefixes since we + // typically deduplicate devices in any case. + break + } + } + } + // We sort the annotationKeys for consistent results. + slices.Sort(annotationKeys) + + var devices []string + for _, key := range annotationKeys { + devices = append(devices, strings.Split(i.annotations[key], ",")...) + } + return devices +} + +// visibleDevicesFromEnvVar returns the set of visible devices requested through environment variables. +// If any of the preferredVisibleDeviceEnvVars are present in the image, they +// are used to determine the visible devices. If this is not the case, the +// NVIDIA_VISIBLE_DEVICES environment variable is used. +func (i CUDA) visibleDevicesFromEnvVar() []string { + envVars := i.visibleEnvVars() + return i.devicesFromEnvvars(envVars...) +} + +// visibleDevicesFromMounts returns the set of visible devices requested as mounts. +func (i CUDA) visibleDevicesFromMounts() []string { + var devices []string + for _, device := range i.requestsFromMounts() { + switch { + case strings.HasPrefix(device, volumeMountDevicePrefixImex): + continue + case strings.HasPrefix(device, volumeMountDevicePrefixCDI): + name, err := cdiDeviceMountRequest(device).qualifiedName() + if err != nil { + i.logger.Warningf("Ignoring invalid mount request for CDI device %v: %v", device, err) + continue + } + devices = append(devices, name) + default: + devices = append(devices, device) + } + + } + return devices +} + +// requestsFromMounts returns a list of device specified as mounts. +func (i CUDA) requestsFromMounts() []string { + root := filepath.Clean(DeviceListAsVolumeMountsRoot) seen := make(map[string]bool) var devices []string for _, m := range i.mounts { @@ -256,21 +386,49 @@ func (i CUDA) DevicesFromMounts() []string { return devices } -// CDIDevicesFromMounts returns a list of CDI devices specified as mounts on the image. -func (i CUDA) CDIDevicesFromMounts() []string { - var devices []string - for _, mountDevice := range i.DevicesFromMounts() { - if !strings.HasPrefix(mountDevice, "cdi/") { - continue - } - parts := strings.SplitN(strings.TrimPrefix(mountDevice, "cdi/"), "/", 3) - if len(parts) != 3 { +// a cdiDeviceMountRequest represents a CDI device requests as a mount. +// Here the host path /dev/null is mounted to a particular path in the container. +// The container path has the form: +// /var/run/nvidia-container-devices/cdi/// +// or +// /var/run/nvidia-container-devices/cdi//= +type cdiDeviceMountRequest string + +// qualifiedName returns the fully-qualified name of the CDI device. +func (m cdiDeviceMountRequest) qualifiedName() (string, error) { + if !strings.HasPrefix(string(m), volumeMountDevicePrefixCDI) { + return "", fmt.Errorf("invalid mount CDI device request: %s", m) + } + + requestedDevice := strings.TrimPrefix(string(m), volumeMountDevicePrefixCDI) + if parser.IsQualifiedName(requestedDevice) { + return requestedDevice, nil + } + + parts := strings.SplitN(requestedDevice, "/", 3) + if len(parts) != 3 { + return "", fmt.Errorf("invalid mount CDI device request: %s", m) + } + return fmt.Sprintf("%s/%s=%s", parts[0], parts[1], parts[2]), nil +} + +// ImexChannelsFromEnvVar returns the list of IMEX channels requested for the image. +func (i CUDA) ImexChannelsFromEnvVar() []string { + imexChannels := i.devicesFromEnvvars(EnvVarNvidiaImexChannels) + if len(imexChannels) == 1 && imexChannels[0] == "all" { + return nil + } + return imexChannels +} + +// ImexChannelsFromMounts returns the list of IMEX channels requested for the image. +func (i CUDA) ImexChannelsFromMounts() []string { + var channels []string + for _, mountDevice := range i.requestsFromMounts() { + if !strings.HasPrefix(mountDevice, volumeMountDevicePrefixImex) { continue } - vendor := parts[0] - class := parts[1] - device := parts[2] - devices = append(devices, fmt.Sprintf("%s/%s=%s", vendor, class, device)) + channels = append(channels, strings.TrimPrefix(mountDevice, volumeMountDevicePrefixImex)) } - return devices + return channels } diff --git a/internal/config/image/cuda_image_test.go b/internal/config/image/cuda_image_test.go index 406ad443f..aad69d310 100644 --- a/internal/config/image/cuda_image_test.go +++ b/internal/config/image/cuda_image_test.go @@ -17,11 +17,95 @@ package image import ( + "path/filepath" "testing" + "github.com/opencontainers/runtime-spec/specs-go" + testlog "github.com/sirupsen/logrus/hooks/test" "github.com/stretchr/testify/require" ) +func TestNewCUDAImageFromSpec(t *testing.T) { + logger, _ := testlog.NewNullLogger() + + testCases := []struct { + description string + spec *specs.Spec + options []Option + expected CUDA + }{ + { + description: "no env vars", + spec: &specs.Spec{ + Process: &specs.Process{ + Env: []string{}, + }, + }, + expected: CUDA{ + logger: logger, + env: map[string]string{}, + acceptEnvvarUnprivileged: true, + }, + }, + { + description: "NVIDIA_VISIBLE_DEVICES=all", + spec: &specs.Spec{ + Process: &specs.Process{ + Env: []string{"NVIDIA_VISIBLE_DEVICES=all"}, + }, + }, + expected: CUDA{ + logger: logger, + env: map[string]string{"NVIDIA_VISIBLE_DEVICES": "all"}, + acceptEnvvarUnprivileged: true, + }, + }, + { + description: "Spec overrides options", + spec: &specs.Spec{ + Process: &specs.Process{ + Env: []string{"NVIDIA_VISIBLE_DEVICES=all"}, + }, + Mounts: []specs.Mount{ + { + Source: "/spec-source", + Destination: "/spec-destination", + }, + }, + }, + options: []Option{ + WithEnvMap(map[string]string{"OTHER": "value"}), + WithMounts([]specs.Mount{ + { + Source: "/option-source", + Destination: "/option-destination", + }, + }), + }, + expected: CUDA{ + logger: logger, + env: map[string]string{"NVIDIA_VISIBLE_DEVICES": "all"}, + mounts: []specs.Mount{ + { + Source: "/spec-source", + Destination: "/spec-destination", + }, + }, + acceptEnvvarUnprivileged: true, + }, + }, + } + + for _, tc := range testCases { + t.Run(tc.description, func(t *testing.T) { + options := append([]Option{WithLogger(logger)}, tc.options...) + image, err := NewCUDAImageFromSpec(tc.spec, options...) + require.NoError(t, err) + require.EqualValues(t, tc.expected, image) + }) + } +} + func TestParseMajorMinorVersionValid(t *testing.T) { var tests = []struct { version string @@ -120,7 +204,7 @@ func TestGetRequirements(t *testing.T) { for _, tc := range testCases { t.Run(tc.description, func(t *testing.T) { - image, err := NewCUDAImageFromEnv(tc.env) + image, err := newCUDAImageFromEnv(tc.env) require.NoError(t, err) requirements, err := image.GetRequirements() @@ -130,3 +214,590 @@ func TestGetRequirements(t *testing.T) { } } + +func TestGetDevicesFromEnvvar(t *testing.T) { + envDockerResourceGPUs := "DOCKER_RESOURCE_GPUS" + gpuID := "GPU-12345" + anotherGPUID := "GPU-67890" + thirdGPUID := "MIG-12345" + + var tests = []struct { + description string + preferredVisibleDeviceEnvVars []string + env map[string]string + expectedDevices []string + }{ + { + description: "empty env returns nil for non-legacy image", + }, + { + description: "blank NVIDIA_VISIBLE_DEVICES returns nil for non-legacy image", + env: map[string]string{ + EnvVarNvidiaVisibleDevices: "", + }, + }, + { + description: "'void' NVIDIA_VISIBLE_DEVICES returns nil for non-legacy image", + env: map[string]string{ + EnvVarNvidiaVisibleDevices: "void", + }, + }, + { + description: "'none' NVIDIA_VISIBLE_DEVICES returns empty for non-legacy image", + env: map[string]string{ + EnvVarNvidiaVisibleDevices: "none", + }, + expectedDevices: []string{""}, + }, + { + description: "NVIDIA_VISIBLE_DEVICES set returns value for non-legacy image", + env: map[string]string{ + EnvVarNvidiaVisibleDevices: gpuID, + }, + expectedDevices: []string{gpuID}, + }, + { + description: "NVIDIA_VISIBLE_DEVICES set returns value for legacy image", + env: map[string]string{ + EnvVarNvidiaVisibleDevices: gpuID, + EnvVarCudaVersion: "legacy", + }, + expectedDevices: []string{gpuID}, + }, + { + description: "empty env returns all for legacy image", + env: map[string]string{ + EnvVarCudaVersion: "legacy", + }, + expectedDevices: []string{"all"}, + }, + // Add the `DOCKER_RESOURCE_GPUS` envvar and ensure that this is ignored when + // not enabled + { + description: "missing NVIDIA_VISIBLE_DEVICES returns nil for non-legacy image", + env: map[string]string{ + envDockerResourceGPUs: anotherGPUID, + }, + }, + { + description: "blank NVIDIA_VISIBLE_DEVICES returns nil for non-legacy image", + env: map[string]string{ + EnvVarNvidiaVisibleDevices: "", + envDockerResourceGPUs: anotherGPUID, + }, + }, + { + description: "'void' NVIDIA_VISIBLE_DEVICES returns nil for non-legacy image", + env: map[string]string{ + EnvVarNvidiaVisibleDevices: "void", + envDockerResourceGPUs: anotherGPUID, + }, + }, + { + description: "'none' NVIDIA_VISIBLE_DEVICES returns empty for non-legacy image", + env: map[string]string{ + EnvVarNvidiaVisibleDevices: "none", + envDockerResourceGPUs: anotherGPUID, + }, + expectedDevices: []string{""}, + }, + { + description: "NVIDIA_VISIBLE_DEVICES set returns value for non-legacy image", + env: map[string]string{ + EnvVarNvidiaVisibleDevices: gpuID, + envDockerResourceGPUs: anotherGPUID, + }, + expectedDevices: []string{gpuID}, + }, + { + description: "NVIDIA_VISIBLE_DEVICES set returns value for legacy image", + env: map[string]string{ + EnvVarNvidiaVisibleDevices: gpuID, + envDockerResourceGPUs: anotherGPUID, + EnvVarCudaVersion: "legacy", + }, + expectedDevices: []string{gpuID}, + }, + { + description: "empty env returns all for legacy image", + env: map[string]string{ + envDockerResourceGPUs: anotherGPUID, + EnvVarCudaVersion: "legacy", + }, + expectedDevices: []string{"all"}, + }, + // Add the `DOCKER_RESOURCE_GPUS` envvar and ensure that this is selected when + // enabled + { + description: "empty env returns nil for non-legacy image", + preferredVisibleDeviceEnvVars: []string{envDockerResourceGPUs}, + }, + { + description: "blank DOCKER_RESOURCE_GPUS returns nil for non-legacy image", + preferredVisibleDeviceEnvVars: []string{envDockerResourceGPUs}, + env: map[string]string{ + envDockerResourceGPUs: "", + }, + }, + { + description: "'void' DOCKER_RESOURCE_GPUS returns nil for non-legacy image", + preferredVisibleDeviceEnvVars: []string{envDockerResourceGPUs}, + env: map[string]string{ + envDockerResourceGPUs: "void", + }, + }, + { + description: "'none' DOCKER_RESOURCE_GPUS returns empty for non-legacy image", + preferredVisibleDeviceEnvVars: []string{envDockerResourceGPUs}, + env: map[string]string{ + envDockerResourceGPUs: "none", + }, + expectedDevices: []string{""}, + }, + { + description: "DOCKER_RESOURCE_GPUS set returns value for non-legacy image", + preferredVisibleDeviceEnvVars: []string{envDockerResourceGPUs}, + env: map[string]string{ + envDockerResourceGPUs: gpuID, + }, + expectedDevices: []string{gpuID}, + }, + { + description: "DOCKER_RESOURCE_GPUS set returns value for legacy image", + preferredVisibleDeviceEnvVars: []string{envDockerResourceGPUs}, + env: map[string]string{ + envDockerResourceGPUs: gpuID, + EnvVarCudaVersion: "legacy", + }, + expectedDevices: []string{gpuID}, + }, + { + description: "DOCKER_RESOURCE_GPUS is selected if present", + preferredVisibleDeviceEnvVars: []string{envDockerResourceGPUs}, + env: map[string]string{ + envDockerResourceGPUs: anotherGPUID, + }, + expectedDevices: []string{anotherGPUID}, + }, + { + description: "DOCKER_RESOURCE_GPUS overrides NVIDIA_VISIBLE_DEVICES if present", + preferredVisibleDeviceEnvVars: []string{envDockerResourceGPUs}, + env: map[string]string{ + EnvVarNvidiaVisibleDevices: gpuID, + envDockerResourceGPUs: anotherGPUID, + }, + expectedDevices: []string{anotherGPUID}, + }, + { + description: "DOCKER_RESOURCE_GPUS_ADDITIONAL overrides NVIDIA_VISIBLE_DEVICES if present", + preferredVisibleDeviceEnvVars: []string{"DOCKER_RESOURCE_GPUS_ADDITIONAL"}, + env: map[string]string{ + EnvVarNvidiaVisibleDevices: gpuID, + "DOCKER_RESOURCE_GPUS_ADDITIONAL": anotherGPUID, + }, + expectedDevices: []string{anotherGPUID}, + }, + { + description: "All available swarm resource envvars are selected and override NVIDIA_VISIBLE_DEVICES if present", + preferredVisibleDeviceEnvVars: []string{"DOCKER_RESOURCE_GPUS", "DOCKER_RESOURCE_GPUS_ADDITIONAL"}, + env: map[string]string{ + EnvVarNvidiaVisibleDevices: gpuID, + "DOCKER_RESOURCE_GPUS": thirdGPUID, + "DOCKER_RESOURCE_GPUS_ADDITIONAL": anotherGPUID, + }, + expectedDevices: []string{thirdGPUID, anotherGPUID}, + }, + { + description: "DOCKER_RESOURCE_GPUS_ADDITIONAL or DOCKER_RESOURCE_GPUS override NVIDIA_VISIBLE_DEVICES if present", + preferredVisibleDeviceEnvVars: []string{"DOCKER_RESOURCE_GPUS", "DOCKER_RESOURCE_GPUS_ADDITIONAL"}, + env: map[string]string{ + EnvVarNvidiaVisibleDevices: gpuID, + "DOCKER_RESOURCE_GPUS_ADDITIONAL": anotherGPUID, + }, + expectedDevices: []string{anotherGPUID}, + }, + } + + for _, tc := range tests { + t.Run(tc.description, func(t *testing.T) { + image, err := New( + WithEnvMap(tc.env), + WithPrivileged(true), + WithAcceptDeviceListAsVolumeMounts(false), + WithAcceptEnvvarUnprivileged(false), + WithPreferredVisibleDevicesEnvVars(tc.preferredVisibleDeviceEnvVars...), + ) + + require.NoError(t, err) + devices := image.visibleDevicesFromEnvVar() + require.EqualValues(t, tc.expectedDevices, devices) + }) + } +} + +func TestGetVisibleDevicesFromMounts(t *testing.T) { + var tests = []struct { + description string + mounts []specs.Mount + expectedDevices []string + }{ + { + description: "No mounts", + mounts: nil, + expectedDevices: nil, + }, + { + description: "Host path is not /dev/null", + mounts: []specs.Mount{ + { + Source: "/not/dev/null", + Destination: filepath.Join(DeviceListAsVolumeMountsRoot, "GPU0"), + }, + }, + expectedDevices: nil, + }, + { + description: "Container path is not prefixed by 'root'", + mounts: []specs.Mount{ + { + Source: "/dev/null", + Destination: filepath.Join("/other/prefix", "GPU0"), + }, + }, + expectedDevices: nil, + }, + { + description: "Container path is only 'root'", + mounts: []specs.Mount{ + { + Source: "/dev/null", + Destination: DeviceListAsVolumeMountsRoot, + }, + }, + expectedDevices: nil, + }, + { + description: "Discover 2 devices", + mounts: makeTestMounts("GPU0", "GPU1"), + expectedDevices: []string{"GPU0", "GPU1"}, + }, + { + description: "Discover 2 devices with slashes in the name", + mounts: makeTestMounts("GPU0-MIG0/0/1", "GPU1-MIG0/0/1"), + expectedDevices: []string{"GPU0-MIG0/0/1", "GPU1-MIG0/0/1"}, + }, + { + description: "cdi devices are included", + mounts: makeTestMounts("GPU0", "nvidia.com/gpu=all", "GPU1"), + expectedDevices: []string{"GPU0", "nvidia.com/gpu=all", "GPU1"}, + }, + { + description: "imex devices are ignored", + mounts: makeTestMounts("GPU0", "imex/0", "GPU1"), + expectedDevices: []string{"GPU0", "GPU1"}, + }, + } + for _, tc := range tests { + t.Run(tc.description, func(t *testing.T) { + image, err := New(WithMounts(tc.mounts)) + require.NoError(t, err) + require.Equal(t, tc.expectedDevices, image.visibleDevicesFromMounts()) + }) + } +} + +func TestVisibleDevices(t *testing.T) { + var tests = []struct { + description string + mountDevices []specs.Mount + envvarDevices string + privileged bool + acceptUnprivileged bool + acceptMounts bool + preferredVisibleDeviceEnvVars []string + env map[string]string + expectedDevices []string + }{ + { + description: "Mount devices, unprivileged, no accept unprivileged", + mountDevices: []specs.Mount{ + { + Source: "/dev/null", + Destination: filepath.Join(DeviceListAsVolumeMountsRoot, "GPU0"), + }, + { + Source: "/dev/null", + Destination: filepath.Join(DeviceListAsVolumeMountsRoot, "GPU1"), + }, + }, + envvarDevices: "GPU2,GPU3", + privileged: false, + acceptUnprivileged: false, + acceptMounts: true, + expectedDevices: []string{"GPU0", "GPU1"}, + }, + { + description: "No mount devices, unprivileged, no accept unprivileged", + mountDevices: nil, + envvarDevices: "GPU0,GPU1", + privileged: false, + acceptUnprivileged: false, + acceptMounts: true, + expectedDevices: nil, + }, + { + description: "No mount devices, privileged, no accept unprivileged", + mountDevices: nil, + envvarDevices: "GPU0,GPU1", + privileged: true, + acceptUnprivileged: false, + acceptMounts: true, + expectedDevices: []string{"GPU0", "GPU1"}, + }, + { + description: "No mount devices, unprivileged, accept unprivileged", + mountDevices: nil, + envvarDevices: "GPU0,GPU1", + privileged: false, + acceptUnprivileged: true, + acceptMounts: true, + expectedDevices: []string{"GPU0", "GPU1"}, + }, + { + description: "Mount devices, unprivileged, accept unprivileged, no accept mounts", + mountDevices: []specs.Mount{ + { + Source: "/dev/null", + Destination: filepath.Join(DeviceListAsVolumeMountsRoot, "GPU0"), + }, + { + Source: "/dev/null", + Destination: filepath.Join(DeviceListAsVolumeMountsRoot, "GPU1"), + }, + }, + envvarDevices: "GPU2,GPU3", + privileged: false, + acceptUnprivileged: true, + acceptMounts: false, + expectedDevices: []string{"GPU2", "GPU3"}, + }, + { + description: "Mount devices, unprivileged, no accept unprivileged, no accept mounts", + mountDevices: []specs.Mount{ + { + Source: "/dev/null", + Destination: filepath.Join(DeviceListAsVolumeMountsRoot, "GPU0"), + }, + { + Source: "/dev/null", + Destination: filepath.Join(DeviceListAsVolumeMountsRoot, "GPU1"), + }, + }, + envvarDevices: "GPU2,GPU3", + privileged: false, + acceptUnprivileged: false, + acceptMounts: false, + expectedDevices: nil, + }, + // New test cases for visibleEnvVars functionality + { + description: "preferred env var set and present in env, privileged", + mountDevices: nil, + envvarDevices: "", + privileged: true, + acceptUnprivileged: false, + acceptMounts: true, + preferredVisibleDeviceEnvVars: []string{"DOCKER_RESOURCE_GPUS"}, + env: map[string]string{ + "DOCKER_RESOURCE_GPUS": "GPU-12345", + }, + expectedDevices: []string{"GPU-12345"}, + }, + { + description: "preferred env var set and present in env, unprivileged but accepted", + mountDevices: nil, + envvarDevices: "", + privileged: false, + acceptUnprivileged: true, + acceptMounts: true, + preferredVisibleDeviceEnvVars: []string{"DOCKER_RESOURCE_GPUS"}, + env: map[string]string{ + "DOCKER_RESOURCE_GPUS": "GPU-12345", + }, + expectedDevices: []string{"GPU-12345"}, + }, + { + description: "preferred env var set and present in env, unprivileged and not accepted", + mountDevices: nil, + envvarDevices: "", + privileged: false, + acceptUnprivileged: false, + acceptMounts: true, + preferredVisibleDeviceEnvVars: []string{"DOCKER_RESOURCE_GPUS"}, + env: map[string]string{ + "DOCKER_RESOURCE_GPUS": "GPU-12345", + }, + expectedDevices: nil, + }, + { + description: "multiple preferred env vars, both present, privileged", + mountDevices: nil, + envvarDevices: "", + privileged: true, + acceptUnprivileged: false, + acceptMounts: true, + preferredVisibleDeviceEnvVars: []string{"DOCKER_RESOURCE_GPUS", "DOCKER_RESOURCE_GPUS_ADDITIONAL"}, + env: map[string]string{ + "DOCKER_RESOURCE_GPUS": "GPU-12345", + "DOCKER_RESOURCE_GPUS_ADDITIONAL": "GPU-67890", + }, + expectedDevices: []string{"GPU-12345", "GPU-67890"}, + }, + { + description: "preferred env var not present, fallback to NVIDIA_VISIBLE_DEVICES, privileged", + mountDevices: nil, + envvarDevices: "GPU-12345", + privileged: true, + acceptUnprivileged: false, + acceptMounts: true, + preferredVisibleDeviceEnvVars: []string{"DOCKER_RESOURCE_GPUS"}, + env: map[string]string{ + EnvVarNvidiaVisibleDevices: "GPU-12345", + }, + expectedDevices: []string{"GPU-12345"}, + }, + } + for _, tc := range tests { + t.Run(tc.description, func(t *testing.T) { + // Create env map with both NVIDIA_VISIBLE_DEVICES and any additional env vars + env := make(map[string]string) + if tc.envvarDevices != "" { + env[EnvVarNvidiaVisibleDevices] = tc.envvarDevices + } + for k, v := range tc.env { + env[k] = v + } + + image, err := New( + WithEnvMap(env), + WithMounts(tc.mountDevices), + WithPrivileged(tc.privileged), + WithAcceptDeviceListAsVolumeMounts(tc.acceptMounts), + WithAcceptEnvvarUnprivileged(tc.acceptUnprivileged), + WithPreferredVisibleDevicesEnvVars(tc.preferredVisibleDeviceEnvVars...), + ) + require.NoError(t, err) + require.Equal(t, tc.expectedDevices, image.VisibleDevices()) + }) + } +} + +func TestImexChannelsFromEnvVar(t *testing.T) { + testCases := []struct { + description string + env []string + expected []string + }{ + { + description: "no imex channels specified", + }, + { + description: "imex channel specified", + env: []string{ + "NVIDIA_IMEX_CHANNELS=3,4", + }, + expected: []string{"3", "4"}, + }, + } + + for _, tc := range testCases { + for id, baseEnvvars := range map[string][]string{"": nil, "legacy": {"CUDA_VERSION=1.2.3"}} { + t.Run(tc.description+id, func(t *testing.T) { + i, err := newCUDAImageFromEnv(append(baseEnvvars, tc.env...)) + require.NoError(t, err) + + channels := i.ImexChannelsFromEnvVar() + require.EqualValues(t, tc.expected, channels) + }) + } + } +} + +func TestCDIDeviceRequestsFromAnnotations(t *testing.T) { + testCases := []struct { + description string + prefixes []string + annotations map[string]string + expectedDevices []string + }{ + { + description: "no annotations", + }, + { + description: "no matching annotations", + prefixes: []string{"not-prefix/"}, + annotations: map[string]string{ + "prefix/foo": "example.com/device=bar", + }, + }, + { + description: "single matching annotation", + prefixes: []string{"prefix/"}, + annotations: map[string]string{ + "prefix/foo": "example.com/device=bar", + }, + expectedDevices: []string{"example.com/device=bar"}, + }, + { + description: "multiple matching annotations", + prefixes: []string{"prefix/", "another-prefix/"}, + annotations: map[string]string{ + "prefix/foo": "example.com/device=bar", + "another-prefix/bar": "example.com/device=baz", + }, + expectedDevices: []string{"example.com/device=bar", "example.com/device=baz"}, + }, + { + description: "multiple matching annotations with duplicate devices", + prefixes: []string{"prefix/", "another-prefix/"}, + annotations: map[string]string{ + "prefix/foo": "example.com/device=bar", + "another-prefix/bar": "example.com/device=bar", + }, + expectedDevices: []string{"example.com/device=bar", "example.com/device=bar"}, + }, + { + description: "invalid devices are returned as is", + prefixes: []string{"prefix/"}, + annotations: map[string]string{ + "prefix/foo": "example.com/device", + }, + expectedDevices: []string{"example.com/device"}, + }, + } + + for _, tc := range testCases { + t.Run(tc.description, func(t *testing.T) { + image, err := New( + WithAnnotationsPrefixes(tc.prefixes), + WithAnnotations(tc.annotations), + ) + require.NoError(t, err) + + devices := image.cdiDeviceRequestsFromAnnotations() + require.ElementsMatch(t, tc.expectedDevices, devices) + }) + } +} + +func makeTestMounts(paths ...string) []specs.Mount { + var mounts []specs.Mount + for _, path := range paths { + mount := specs.Mount{ + Source: "/dev/null", + Destination: filepath.Join(DeviceListAsVolumeMountsRoot, path), + } + mounts = append(mounts, mount) + } + return mounts +} diff --git a/internal/config/image/envvars.go b/internal/config/image/envvars.go new file mode 100644 index 000000000..0789f22f6 --- /dev/null +++ b/internal/config/image/envvars.go @@ -0,0 +1,31 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package image + +const ( + EnvVarCudaVersion = "CUDA_VERSION" + EnvVarNvidiaDisableRequire = "NVIDIA_DISABLE_REQUIRE" + EnvVarNvidiaDriverCapabilities = "NVIDIA_DRIVER_CAPABILITIES" + EnvVarNvidiaImexChannels = "NVIDIA_IMEX_CHANNELS" + EnvVarNvidiaMigConfigDevices = "NVIDIA_MIG_CONFIG_DEVICES" + EnvVarNvidiaMigMonitorDevices = "NVIDIA_MIG_MONITOR_DEVICES" + EnvVarNvidiaRequireCuda = NvidiaRequirePrefix + "CUDA" + EnvVarNvidiaRequireJetpack = NvidiaRequirePrefix + "JETPACK" + EnvVarNvidiaVisibleDevices = "NVIDIA_VISIBLE_DEVICES" + + NvidiaRequirePrefix = "NVIDIA_REQUIRE_" +) diff --git a/internal/config/image/privileged.go b/internal/config/image/privileged.go index a54598d6e..04f32cf5a 100644 --- a/internal/config/image/privileged.go +++ b/internal/config/image/privileged.go @@ -24,20 +24,39 @@ const ( capSysAdmin = "CAP_SYS_ADMIN" ) +type CapabilitiesGetter interface { + GetCapabilities() []string +} + +type OCISpec specs.Spec + +type OCISpecCapabilities specs.LinuxCapabilities + // IsPrivileged returns true if the container is a privileged container. -func IsPrivileged(s *specs.Spec) bool { - if s.Process.Capabilities == nil { +func IsPrivileged(s CapabilitiesGetter) bool { + if s == nil { return false } - - // We only make sure that the bounding capabibility set has - // CAP_SYS_ADMIN. This allows us to make sure that the container was - // actually started as '--privileged', but also allow non-root users to - // access the privileged NVIDIA capabilities. - for _, c := range s.Process.Capabilities.Bounding { + for _, c := range s.GetCapabilities() { if c == capSysAdmin { return true } } + return false } + +func (s OCISpec) GetCapabilities() []string { + if s.Process == nil || s.Process.Capabilities == nil { + return nil + } + return (*OCISpecCapabilities)(s.Process.Capabilities).GetCapabilities() +} + +func (c OCISpecCapabilities) GetCapabilities() []string { + // We only make sure that the bounding capability set has + // CAP_SYS_ADMIN. This allows us to make sure that the container was + // actually started as '--privileged', but also allow non-root users to + // access the privileged NVIDIA capabilities. + return c.Bounding +} diff --git a/internal/config/image/privileged_test.go b/internal/config/image/privileged_test.go new file mode 100644 index 000000000..328c496ab --- /dev/null +++ b/internal/config/image/privileged_test.go @@ -0,0 +1,57 @@ +/** +# Copyright (c) NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package image + +import ( + "testing" + + "github.com/opencontainers/runtime-spec/specs-go" + "github.com/stretchr/testify/require" +) + +func TestIsPrivileged(t *testing.T) { + var tests = []struct { + spec specs.Spec + expected bool + }{ + { + specs.Spec{ + Process: &specs.Process{ + Capabilities: &specs.LinuxCapabilities{ + Bounding: []string{"CAP_SYS_ADMIN"}, + }, + }, + }, + true, + }, + { + specs.Spec{ + Process: &specs.Process{ + Capabilities: &specs.LinuxCapabilities{ + Bounding: []string{"CAP_SYS_FOO"}, + }, + }, + }, + false, + }, + } + for i, tc := range tests { + privileged := IsPrivileged((*OCISpec)(&tc.spec)) + + require.Equal(t, tc.expected, privileged, "%d: %v", i, tc) + } +} diff --git a/internal/config/runtime.go b/internal/config/runtime.go index ed9ea6461..315f23ba5 100644 --- a/internal/config/runtime.go +++ b/internal/config/runtime.go @@ -29,8 +29,9 @@ type RuntimeConfig struct { // modesConfig defines (optional) per-mode configs type modesConfig struct { - CSV csvModeConfig `toml:"csv"` - CDI cdiModeConfig `toml:"cdi"` + CSV csvModeConfig `toml:"csv"` + CDI cdiModeConfig `toml:"cdi"` + Legacy legacyModeConfig `toml:"legacy"` } type cdiModeConfig struct { @@ -46,12 +47,30 @@ type csvModeConfig struct { MountSpecPath string `toml:"mount-spec-path"` } -// GetDefaultRuntimeConfig defines the default values for the config -func GetDefaultRuntimeConfig() (*RuntimeConfig, error) { - cfg, err := GetDefault() - if err != nil { - return nil, err - } - - return &cfg.NVIDIAContainerRuntimeConfig, nil +type legacyModeConfig struct { + // CUDACompatMode sets the mode to be used to make CUDA Forward Compat + // libraries discoverable in the container. + CUDACompatMode cudaCompatMode `toml:"cuda-compat-mode,omitempty"` } + +type cudaCompatMode string + +const ( + defaultCUDACompatMode = CUDACompatModeLdconfig + // CUDACompatModeDisabled explicitly disables the handling of CUDA Forward + // Compatibility in the NVIDIA Container Runtime and NVIDIA Container + // Runtime Hook. + CUDACompatModeDisabled = cudaCompatMode("disabled") + // CUDACompatModeHook uses a container lifecycle hook to implement CUDA + // Forward Compatibility support. This requires the use of the NVIDIA + // Container Runtime and is not compatible with use cases where only the + // NVIDIA Container Runtime Hook is used (e.g. the Docker --gpus flag). + CUDACompatModeHook = cudaCompatMode("hook") + // CUDACompatModeLdconfig adds the folders containing CUDA Forward Compat + // libraries to the ldconfig command invoked from the NVIDIA Container + // Runtime Hook. + CUDACompatModeLdconfig = cudaCompatMode("ldconfig") + // CUDACompatModeMount mounts CUDA Forward Compat folders from the container + // to the container when using the NVIDIA Container Runtime Hook. + CUDACompatModeMount = cudaCompatMode("mount") +) diff --git a/internal/config/toml.go b/internal/config/toml.go index a1d37428d..fbda458f1 100644 --- a/internal/config/toml.go +++ b/internal/config/toml.go @@ -108,6 +108,19 @@ func loadConfigTomlFrom(reader io.Reader) (*Toml, error) { // Config returns the typed config associated with the toml tree. func (t *Toml) Config() (*Config, error) { + cfg, err := t.configNoOverrides() + if err != nil { + return nil, err + } + if err := cfg.assertValid(); err != nil { + return nil, err + } + return cfg, nil +} + +// configNoOverrides returns the typed config associated with the toml tree. +// This config does not include feature-specific overrides. +func (t *Toml) configNoOverrides() (*Config, error) { cfg, err := GetDefault() if err != nil { return nil, err @@ -170,11 +183,22 @@ func (t *Toml) Get(key string) interface{} { return (*toml.Tree)(t).Get(key) } +// GetDefault returns the value for the specified key and falls back to the default value if the Get call fails +func (t *Toml) GetDefault(key string, def interface{}) interface{} { + return (*toml.Tree)(t).GetDefault(key, def) +} + // Set sets the specified key to the specified value in the TOML config. func (t *Toml) Set(key string, value interface{}) { (*toml.Tree)(t).Set(key, value) } +// WriteTo encode the Tree as Toml and writes it to the writer w. +// Returns the number of bytes written in case of success, or an error if anything happened. +func (t *Toml) WriteTo(w io.Writer) (int64, error) { + return (*toml.Tree)(t).WriteTo(w) +} + // commentDefaults applies the required comments for default values to the Toml. func (t *Toml) commentDefaults() *Toml { asToml := (*toml.Tree)(t) diff --git a/internal/config/toml_test.go b/internal/config/toml_test.go index e017db153..76a64da8e 100644 --- a/internal/config/toml_test.go +++ b/internal/config/toml_test.go @@ -62,7 +62,7 @@ load-kmods = true #debug = "/var/log/nvidia-container-runtime.log" log-level = "info" mode = "auto" -runtimes = ["docker-runc", "runc", "crun"] +runtimes = ["runc", "crun"] [nvidia-container-runtime.modes] @@ -74,6 +74,9 @@ spec-dirs = ["/etc/cdi", "/var/run/cdi"] [nvidia-container-runtime.modes.csv] mount-spec-path = "/etc/nvidia-container-runtime/host-files-for-container.d" +[nvidia-container-runtime.modes.legacy] +cuda-compat-mode = "ldconfig" + [nvidia-container-runtime-hook] path = "nvidia-container-runtime-hook" skip-mode-detection = false @@ -198,9 +201,12 @@ func TestTomlContents(t *testing.T) { } func TestConfigFromToml(t *testing.T) { + defer setGetLdConfigPathForTest()() + testCases := []struct { description string contents map[string]interface{} + expectedError error expectedConfig *Config }{ { @@ -226,13 +232,39 @@ func TestConfigFromToml(t *testing.T) { return c }(), }, + { + description: "invalid ldconfig value raises error", + contents: map[string]interface{}{ + "nvidia-container-cli": map[string]interface{}{ + "ldconfig": "/some/ldconfig/path", + }, + }, + expectedError: errInvalidConfig, + }, + { + description: "feature allows ldconfig override", + contents: map[string]interface{}{ + "nvidia-container-cli": map[string]interface{}{ + "ldconfig": "/some/ldconfig/path", + }, + "features": map[string]interface{}{ + "allow-ldconfig-from-container": true, + }, + }, + expectedConfig: func() *Config { + c, _ := GetDefault() + c.NVIDIAContainerCLIConfig.Ldconfig = "/some/ldconfig/path" + c.Features.AllowLDConfigFromContainer = ptr(feature(true)) + return c + }(), + }, } for _, tc := range testCases { t.Run(tc.description, func(t *testing.T) { tomlCfg := fromMap(tc.contents) config, err := tomlCfg.Config() - require.NoError(t, err) + require.ErrorIs(t, err, tc.expectedError) require.EqualValues(t, tc.expectedConfig, config) }) } diff --git a/internal/discover/cache.go b/internal/discover/cache.go new file mode 100644 index 000000000..565233861 --- /dev/null +++ b/internal/discover/cache.go @@ -0,0 +1,95 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package discover + +import "sync" + +type cache struct { + d Discover + + sync.Mutex + devices []Device + envVars []EnvVar + hooks []Hook + mounts []Mount +} + +var _ Discover = (*cache)(nil) + +// WithCache decorates the specified disoverer with a cache. +func WithCache(d Discover) Discover { + if d == nil { + return None{} + } + return &cache{d: d} +} + +func (c *cache) Devices() ([]Device, error) { + c.Lock() + defer c.Unlock() + + if c.devices == nil { + devices, err := c.d.Devices() + if err != nil { + return nil, err + } + c.devices = devices + } + return c.devices, nil +} + +func (c *cache) EnvVars() ([]EnvVar, error) { + c.Lock() + defer c.Unlock() + + if c.envVars == nil { + envVars, err := c.d.EnvVars() + if err != nil { + return nil, err + } + c.envVars = envVars + } + return c.envVars, nil +} + +func (c *cache) Hooks() ([]Hook, error) { + c.Lock() + defer c.Unlock() + + if c.hooks == nil { + hooks, err := c.d.Hooks() + if err != nil { + return nil, err + } + c.hooks = hooks + } + return c.hooks, nil +} + +func (c *cache) Mounts() ([]Mount, error) { + c.Lock() + defer c.Unlock() + + if c.mounts == nil { + mounts, err := c.d.Mounts() + if err != nil { + return nil, err + } + c.mounts = mounts + } + return c.mounts, nil +} diff --git a/internal/discover/compat_libs.go b/internal/discover/compat_libs.go new file mode 100644 index 000000000..7e7f9ff4f --- /dev/null +++ b/internal/discover/compat_libs.go @@ -0,0 +1,20 @@ +package discover + +import ( + "strings" + + "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" + "github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/root" +) + +// NewCUDACompatHookDiscoverer creates a discoverer for a enable-cuda-compat hook. +// This hook is responsible for setting up CUDA compatibility in the container and depends on the host driver version. +func NewCUDACompatHookDiscoverer(logger logger.Interface, hookCreator HookCreator, driver *root.Driver) Discover { + _, cudaVersionPattern := getCUDALibRootAndVersionPattern(logger, driver) + var args []string + if !strings.Contains(cudaVersionPattern, "*") { + args = append(args, "--host-driver-version="+cudaVersionPattern) + } + + return hookCreator.Create("enable-cuda-compat", args...) +} diff --git a/internal/discover/discover.go b/internal/discover/discover.go index 7ff9f042c..8d51b59b9 100644 --- a/internal/discover/discover.go +++ b/internal/discover/discover.go @@ -22,6 +22,12 @@ type Device struct { Path string } +// EnvVar represents a discovered environment variable. +type EnvVar struct { + Name string + Value string +} + // Mount represents a discovered mount. type Mount struct { HostPath string @@ -34,13 +40,15 @@ type Hook struct { Lifecycle string Path string Args []string + Env []string } // Discover defines an interface for discovering the devices, mounts, and hooks available on a system // -//go:generate moq -stub -out discover_mock.go . Discover +//go:generate moq -rm -fmt=goimports -stub -out discover_mock.go . Discover type Discover interface { Devices() ([]Device, error) + EnvVars() ([]EnvVar, error) Mounts() ([]Mount, error) Hooks() ([]Hook, error) } diff --git a/internal/discover/discover_mock.go b/internal/discover/discover_mock.go index d9be6ffbc..2a66cf0ec 100644 --- a/internal/discover/discover_mock.go +++ b/internal/discover/discover_mock.go @@ -20,6 +20,9 @@ var _ Discover = &DiscoverMock{} // DevicesFunc: func() ([]Device, error) { // panic("mock out the Devices method") // }, +// EnvVarsFunc: func() ([]EnvVar, error) { +// panic("mock out the EnvVars method") +// }, // HooksFunc: func() ([]Hook, error) { // panic("mock out the Hooks method") // }, @@ -36,6 +39,9 @@ type DiscoverMock struct { // DevicesFunc mocks the Devices method. DevicesFunc func() ([]Device, error) + // EnvVarsFunc mocks the EnvVars method. + EnvVarsFunc func() ([]EnvVar, error) + // HooksFunc mocks the Hooks method. HooksFunc func() ([]Hook, error) @@ -47,6 +53,9 @@ type DiscoverMock struct { // Devices holds details about calls to the Devices method. Devices []struct { } + // EnvVars holds details about calls to the EnvVars method. + EnvVars []struct { + } // Hooks holds details about calls to the Hooks method. Hooks []struct { } @@ -55,6 +64,7 @@ type DiscoverMock struct { } } lockDevices sync.RWMutex + lockEnvVars sync.RWMutex lockHooks sync.RWMutex lockMounts sync.RWMutex } @@ -90,6 +100,37 @@ func (mock *DiscoverMock) DevicesCalls() []struct { return calls } +// EnvVars calls EnvVarsFunc. +func (mock *DiscoverMock) EnvVars() ([]EnvVar, error) { + callInfo := struct { + }{} + mock.lockEnvVars.Lock() + mock.calls.EnvVars = append(mock.calls.EnvVars, callInfo) + mock.lockEnvVars.Unlock() + if mock.EnvVarsFunc == nil { + var ( + envVarsOut []EnvVar + errOut error + ) + return envVarsOut, errOut + } + return mock.EnvVarsFunc() +} + +// EnvVarsCalls gets all the calls that were made to EnvVars. +// Check the length with: +// +// len(mockedDiscover.EnvVarsCalls()) +func (mock *DiscoverMock) EnvVarsCalls() []struct { +} { + var calls []struct { + } + mock.lockEnvVars.RLock() + calls = mock.calls.EnvVars + mock.lockEnvVars.RUnlock() + return calls +} + // Hooks calls HooksFunc. func (mock *DiscoverMock) Hooks() ([]Hook, error) { callInfo := struct { diff --git a/internal/discover/envvar.go b/internal/discover/envvar.go new file mode 100644 index 000000000..3c84db0c7 --- /dev/null +++ b/internal/discover/envvar.go @@ -0,0 +1,41 @@ +/** +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package discover + +var _ Discover = (*EnvVar)(nil) + +// Devices returns an empty list of devices for a EnvVar discoverer. +func (e EnvVar) Devices() ([]Device, error) { + return nil, nil +} + +// EnvVars returns an empty list of envs for a EnvVar discoverer. +func (e EnvVar) EnvVars() ([]EnvVar, error) { + return []EnvVar{e}, nil +} + +// Mounts returns an empty list of mounts for a EnvVar discoverer. +func (e EnvVar) Mounts() ([]Mount, error) { + return nil, nil +} + +// Hooks allows the Hook type to also implement the Discoverer interface. +// It returns a single hook +func (e EnvVar) Hooks() ([]Hook, error) { + return nil, nil +} diff --git a/internal/discover/first-valid.go b/internal/discover/first-valid.go new file mode 100644 index 000000000..81c93d3e5 --- /dev/null +++ b/internal/discover/first-valid.go @@ -0,0 +1,85 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package discover + +import "errors" + +type firstOf []Discover + +// FirstValid returns a discoverer that returns the first non-error result from a list of discoverers. +func FirstValid(discoverers ...Discover) Discover { + var f firstOf + for _, d := range discoverers { + if d == nil { + continue + } + f = append(f, d) + } + return f +} + +func (f firstOf) Devices() ([]Device, error) { + var errs error + for _, d := range f { + devices, err := d.Devices() + if err != nil { + errs = errors.Join(errs, err) + continue + } + return devices, nil + } + return nil, errs +} + +func (f firstOf) EnvVars() ([]EnvVar, error) { + var errs error + for _, d := range f { + envs, err := d.EnvVars() + if err != nil { + errs = errors.Join(errs, err) + continue + } + return envs, nil + } + return nil, errs +} + +func (f firstOf) Hooks() ([]Hook, error) { + var errs error + for _, d := range f { + hooks, err := d.Hooks() + if err != nil { + errs = errors.Join(errs, err) + continue + } + return hooks, nil + } + return nil, errs +} + +func (f firstOf) Mounts() ([]Mount, error) { + var errs error + for _, d := range f { + mounts, err := d.Mounts() + if err != nil { + errs = errors.Join(errs, err) + continue + } + return mounts, nil + } + return nil, nil +} diff --git a/internal/discover/graphics.go b/internal/discover/graphics.go index b5c248d4f..92846ca6b 100644 --- a/internal/discover/graphics.go +++ b/internal/discover/graphics.go @@ -20,6 +20,7 @@ import ( "fmt" "os" "path/filepath" + "runtime" "strings" "github.com/NVIDIA/nvidia-container-toolkit/internal/config/image" @@ -36,21 +37,21 @@ import ( // TODO: The logic for creating DRM devices should be consolidated between this // and the logic for generating CDI specs for a single device. This is only used // when applying OCI spec modifications to an incoming spec in "legacy" mode. -func NewDRMNodesDiscoverer(logger logger.Interface, devices image.VisibleDevices, devRoot string, nvidiaCDIHookPath string) (Discover, error) { +func NewDRMNodesDiscoverer(logger logger.Interface, devices image.VisibleDevices, devRoot string, hookCreator HookCreator) (Discover, error) { drmDeviceNodes, err := newDRMDeviceDiscoverer(logger, devices, devRoot) if err != nil { return nil, fmt.Errorf("failed to create DRM device discoverer: %v", err) } - drmByPathSymlinks := newCreateDRMByPathSymlinks(logger, drmDeviceNodes, devRoot, nvidiaCDIHookPath) + drmByPathSymlinks := newCreateDRMByPathSymlinks(logger, drmDeviceNodes, devRoot, hookCreator) discover := Merge(drmDeviceNodes, drmByPathSymlinks) return discover, nil } // NewGraphicsMountsDiscoverer creates a discoverer for the mounts required by graphics tools such as vulkan. -func NewGraphicsMountsDiscoverer(logger logger.Interface, driver *root.Driver, nvidiaCDIHookPath string) (Discover, error) { - libraries := newGraphicsLibrariesDiscoverer(logger, driver, nvidiaCDIHookPath) +func NewGraphicsMountsDiscoverer(logger logger.Interface, driver *root.Driver, hookCreator HookCreator) (Discover, error) { + libraries := newGraphicsLibrariesDiscoverer(logger, driver, hookCreator) configs := NewMounts( logger, @@ -81,27 +82,38 @@ func NewGraphicsMountsDiscoverer(logger logger.Interface, driver *root.Driver, n // vulkan ICD files are at {{ .driverRoot }}/vulkan instead of in /etc/vulkan. func newVulkanConfigsDiscover(logger logger.Interface, driver *root.Driver) Discover { locator := lookup.First(driver.Configs(), driver.Files()) + + required := []string{ + "vulkan/icd.d/nvidia_icd.json", + "vulkan/icd.d/nvidia_layers.json", + "vulkan/implicit_layer.d/nvidia_layers.json", + } + // For some RPM-based driver packages, the vulkan ICD files are installed to + // /usr/share/vulkan/icd.d/nvidia_icd.%{_target_cpu}.json + // We also include this in the list of candidates for the ICD file. + switch runtime.GOARCH { + case "amd64": + required = append(required, "vulkan/icd.d/nvidia_icd.x86_64.json") + case "arm64": + required = append(required, "vulkan/icd.d/nvidia_icd.aarch64.json") + } return &mountsToContainerPath{ - logger: logger, - locator: locator, - required: []string{ - "vulkan/icd.d/nvidia_icd.json", - "vulkan/icd.d/nvidia_layers.json", - "vulkan/implicit_layer.d/nvidia_layers.json", - }, + logger: logger, + locator: locator, + required: required, containerRoot: "/etc", } } type graphicsDriverLibraries struct { Discover - logger logger.Interface - nvidiaCDIHookPath string + logger logger.Interface + hookCreator HookCreator } var _ Discover = (*graphicsDriverLibraries)(nil) -func newGraphicsLibrariesDiscoverer(logger logger.Interface, driver *root.Driver, nvidiaCDIHookPath string) Discover { +func newGraphicsLibrariesDiscoverer(logger logger.Interface, driver *root.Driver, hookCreator HookCreator) Discover { cudaLibRoot, cudaVersionPattern := getCUDALibRootAndVersionPattern(logger, driver) libraries := NewMounts( @@ -140,10 +152,31 @@ func newGraphicsLibrariesDiscoverer(logger logger.Interface, driver *root.Driver ) return &graphicsDriverLibraries{ - Discover: Merge(libraries, xorgLibraries), - logger: logger, - nvidiaCDIHookPath: nvidiaCDIHookPath, + Discover: Merge(libraries, xorgLibraries), + logger: logger, + hookCreator: hookCreator, + } +} + +// Mounts discovers the required libraries and filters out libnvidia-allocator.so. +// The library libnvidia-allocator.so is already handled by either the *.RM_VERSION +// injection or by libnvidia-container. We therefore filter it out here as a +// workaround for the case where libnvidia-container will re-mount this in the +// container, which causes issues with shared mount propagation. +func (d graphicsDriverLibraries) Mounts() ([]Mount, error) { + mounts, err := d.Discover.Mounts() + if err != nil { + return nil, fmt.Errorf("failed to get library mounts: %v", err) + } + + var filtered []Mount + for _, mount := range mounts { + if d.isDriverLibrary(filepath.Base(mount.Path), "libnvidia-allocator.so") { + continue + } + filtered = append(filtered, mount) } + return filtered, nil } // Create necessary library symlinks for graphics drivers @@ -159,10 +192,10 @@ func (d graphicsDriverLibraries) Hooks() ([]Hook, error) { switch { case d.isDriverLibrary(filename, "libnvidia-allocator.so"): // gbm/nvidia-drm_gbm.so is a symlink to ../libnvidia-allocator.so.1 which - // in turn symlinks to libnvidia-allocator.so.RM_VERSION and is created - // when ldconfig is run in the container. - // create libnvidia-allocate.so.1 -> libnvidia-allocate.so.RM_VERSION symlink - links = append(links, fmt.Sprintf("%s::%s", filename, filepath.Join(dir, "libnvidia-allocator.so.1"))) + // in turn symlinks to libnvidia-allocator.so.RM_VERSION. + // The libnvidia-allocator.so.1 -> libnvidia-allocator.so.RM_VERSION symlink + // is created when ldconfig is run against the container and there + // is no explicit need to create it. // create gbm/nvidia-drm_gbm.so -> ../libnvidia-allocate.so.1 symlink linkPath := filepath.Join(dir, "gbm", "nvidia-drm_gbm.so") links = append(links, fmt.Sprintf("%s::%s", "../libnvidia-allocator.so.1", linkPath)) @@ -182,9 +215,9 @@ func (d graphicsDriverLibraries) Hooks() ([]Hook, error) { return nil, nil } - hooks := CreateCreateSymlinkHook(d.nvidiaCDIHookPath, links) + hook := d.hookCreator.Create("create-symlinks", links...) - return hooks.Hooks() + return hook.Hooks() } // isDriverLibrary checks whether the specified filename is a specific driver library. @@ -254,19 +287,19 @@ func buildXOrgSearchPaths(libRoot string) []string { type drmDevicesByPath struct { None - logger logger.Interface - nvidiaCDIHookPath string - devRoot string - devicesFrom Discover + logger logger.Interface + hookCreator HookCreator + devRoot string + devicesFrom Discover } // newCreateDRMByPathSymlinks creates a discoverer for a hook to create the by-path symlinks for DRM devices discovered by the specified devices discoverer -func newCreateDRMByPathSymlinks(logger logger.Interface, devices Discover, devRoot string, nvidiaCDIHookPath string) Discover { +func newCreateDRMByPathSymlinks(logger logger.Interface, devices Discover, devRoot string, hookCreator HookCreator) Discover { d := drmDevicesByPath{ - logger: logger, - nvidiaCDIHookPath: nvidiaCDIHookPath, - devRoot: devRoot, - devicesFrom: devices, + logger: logger, + hookCreator: hookCreator, + devRoot: devRoot, + devicesFrom: devices, } return &d @@ -294,13 +327,9 @@ func (d drmDevicesByPath) Hooks() ([]Hook, error) { args = append(args, "--link", l) } - hook := CreateNvidiaCDIHook( - d.nvidiaCDIHookPath, - "create-symlinks", - args..., - ) + hook := d.hookCreator.Create("create-symlinks", args...) - return []Hook{hook}, nil + return hook.Hooks() } // getSpecificLinkArgs returns the required specific links that need to be created diff --git a/internal/discover/graphics_test.go b/internal/discover/graphics_test.go index 3df0cfc2e..8620b0488 100644 --- a/internal/discover/graphics_test.go +++ b/internal/discover/graphics_test.go @@ -25,6 +25,7 @@ import ( func TestGraphicsLibrariesDiscoverer(t *testing.T) { logger, _ := testlog.NewNullLogger() + hookCreator := NewHookCreator() testCases := []struct { description string @@ -62,19 +63,15 @@ func TestGraphicsLibrariesDiscoverer(t *testing.T) { return mounts, nil }, }, - expectedMounts: []Mount{ - { - Path: "/usr/lib64/libnvidia-allocator.so.123.45.67", - }, - }, + expectedMounts: nil, expectedHooks: []Hook{ { Lifecycle: "createContainer", Path: "/usr/bin/nvidia-cdi-hook", Args: []string{"nvidia-cdi-hook", "create-symlinks", - "--link", "libnvidia-allocator.so.123.45.67::/usr/lib64/libnvidia-allocator.so.1", "--link", "../libnvidia-allocator.so.1::/usr/lib64/gbm/nvidia-drm_gbm.so", }, + Env: []string{"NVIDIA_CTK_DEBUG=false"}, }, }, }, @@ -102,6 +99,7 @@ func TestGraphicsLibrariesDiscoverer(t *testing.T) { Args: []string{"nvidia-cdi-hook", "create-symlinks", "--link", "libnvidia-vulkan-producer.so.123.45.67::/usr/lib64/libnvidia-vulkan-producer.so", }, + Env: []string{"NVIDIA_CTK_DEBUG=false"}, }, }, }, @@ -121,9 +119,6 @@ func TestGraphicsLibrariesDiscoverer(t *testing.T) { }, }, expectedMounts: []Mount{ - { - Path: "/usr/lib64/libnvidia-allocator.so.123.45.67", - }, { Path: "/usr/lib64/libnvidia-vulkan-producer.so.123.45.67", }, @@ -133,10 +128,10 @@ func TestGraphicsLibrariesDiscoverer(t *testing.T) { Lifecycle: "createContainer", Path: "/usr/bin/nvidia-cdi-hook", Args: []string{"nvidia-cdi-hook", "create-symlinks", - "--link", "libnvidia-allocator.so.123.45.67::/usr/lib64/libnvidia-allocator.so.1", "--link", "../libnvidia-allocator.so.1::/usr/lib64/gbm/nvidia-drm_gbm.so", "--link", "libnvidia-vulkan-producer.so.123.45.67::/usr/lib64/libnvidia-vulkan-producer.so", }, + Env: []string{"NVIDIA_CTK_DEBUG=false"}, }, }, }, @@ -145,9 +140,9 @@ func TestGraphicsLibrariesDiscoverer(t *testing.T) { for _, tc := range testCases { t.Run(tc.description, func(t *testing.T) { d := &graphicsDriverLibraries{ - Discover: tc.libraries, - logger: logger, - nvidiaCDIHookPath: "/usr/bin/nvidia-cdi-hook", + Discover: tc.libraries, + logger: logger, + hookCreator: hookCreator, } devices, err := d.Devices() diff --git a/internal/discover/hooks.go b/internal/discover/hooks.go index 4259ccf86..8020e7bc6 100644 --- a/internal/discover/hooks.go +++ b/internal/discover/hooks.go @@ -17,64 +17,193 @@ package discover import ( + "fmt" "path/filepath" "tags.cncf.io/container-device-interface/pkg/cdi" ) +// A HookName represents a supported CDI hooks. +type HookName string + +const ( + // AllHooks is a special hook name that allows all hooks to be matched. + AllHooks = HookName("all") + + // A ChmodHook is used to set the file mode of the specified paths. + // Deprecated: The chmod hook is deprecated and will be removed in a future release. + ChmodHook = HookName("chmod") + // A CreateSymlinksHook is used to create symlinks in the container. + CreateSymlinksHook = HookName("create-symlinks") + // DisableDeviceNodeModificationHook refers to the hook used to ensure that + // device nodes are not created by libnvidia-ml.so or nvidia-smi in a + // container. + // Added in v1.17.8 + DisableDeviceNodeModificationHook = HookName("disable-device-node-modification") + // An EnableCudaCompatHook is used to enabled CUDA Forward Compatibility. + // Added in v1.17.5 + EnableCudaCompatHook = HookName("enable-cuda-compat") + // An UpdateLDCacheHook is the hook used to update the ldcache in the + // container. This allows injected libraries to be discoverable. + UpdateLDCacheHook = HookName("update-ldcache") + // A CreateSonameSymlinksHook is the hook used to ensure that soname symlinks + // for injected libraries exist in the container. + CreateSonameSymlinksHook = HookName("create-soname-symlinks") + + defaultNvidiaCDIHookPath = "/usr/bin/nvidia-cdi-hook" +) + var _ Discover = (*Hook)(nil) // Devices returns an empty list of devices for a Hook discoverer. -func (h Hook) Devices() ([]Device, error) { +func (h *Hook) Devices() ([]Device, error) { + return nil, nil +} + +// EnvVars returns an empty list of envs for a Hook discoverer. +func (h *Hook) EnvVars() ([]EnvVar, error) { return nil, nil } // Mounts returns an empty list of mounts for a Hook discoverer. -func (h Hook) Mounts() ([]Mount, error) { +func (h *Hook) Mounts() ([]Mount, error) { return nil, nil } // Hooks allows the Hook type to also implement the Discoverer interface. // It returns a single hook -func (h Hook) Hooks() ([]Hook, error) { - return []Hook{h}, nil +func (h *Hook) Hooks() ([]Hook, error) { + if h == nil { + return nil, nil + } + + return []Hook{*h}, nil +} + +type Option func(*cdiHookCreator) + +type cdiHookCreator struct { + nvidiaCDIHookPath string + disabledHooks map[HookName]bool + + fixedArgs []string + debugLogging bool +} + +// An allDisabledHookCreator is a HookCreator that does not create any hooks. +type allDisabledHookCreator struct{} + +// Create returns nil for all hooks for an allDisabledHookCreator. +func (a *allDisabledHookCreator) Create(name HookName, args ...string) *Hook { + return nil +} + +// A HookCreator defines an interface for creating discover hooks. +type HookCreator interface { + Create(HookName, ...string) *Hook } -// CreateCreateSymlinkHook creates a hook which creates a symlink from link -> target. -func CreateCreateSymlinkHook(nvidiaCDIHookPath string, links []string) Discover { - if len(links) == 0 { - return None{} +// WithDisabledHooks sets the set of hooks that are disabled for the CDI hook creator. +// This can be specified multiple times. +func WithDisabledHooks(hooks ...HookName) Option { + return func(c *cdiHookCreator) { + for _, hook := range hooks { + c.disabledHooks[hook] = true + } } +} - var args []string - for _, link := range links { - args = append(args, "--link", link) +// WithNVIDIACDIHookPath sets the path to the nvidia-cdi-hook binary. +func WithNVIDIACDIHookPath(nvidiaCDIHookPath string) Option { + return func(c *cdiHookCreator) { + c.nvidiaCDIHookPath = nvidiaCDIHookPath } - return CreateNvidiaCDIHook( - nvidiaCDIHookPath, - "create-symlinks", - args..., - ) } -// CreateNvidiaCDIHook creates a hook which invokes the NVIDIA Container CLI hook subcommand. -func CreateNvidiaCDIHook(nvidiaCDIHookPath string, hookName string, additionalArgs ...string) Hook { - return cdiHook(nvidiaCDIHookPath).Create(hookName, additionalArgs...) +func NewHookCreator(opts ...Option) HookCreator { + cdiHookCreator := &cdiHookCreator{ + nvidiaCDIHookPath: defaultNvidiaCDIHookPath, + disabledHooks: make(map[HookName]bool), + } + for _, opt := range opts { + opt(cdiHookCreator) + } + + if cdiHookCreator.disabledHooks[AllHooks] { + return &allDisabledHookCreator{} + } + + cdiHookCreator.fixedArgs = getFixedArgsForCDIHookCLI(cdiHookCreator.nvidiaCDIHookPath) + + return cdiHookCreator } -type cdiHook string +// Create creates a new hook with the given name and arguments. +// If a hook is disabled, a nil hook is returned. +func (c cdiHookCreator) Create(name HookName, args ...string) *Hook { + if c.isDisabled(name, args...) { + return nil + } -func (c cdiHook) Create(name string, args ...string) Hook { - return Hook{ + return &Hook{ Lifecycle: cdi.CreateContainerHook, - Path: string(c), - Args: append(c.requiredArgs(name), args...), + Path: c.nvidiaCDIHookPath, + Args: append(c.requiredArgs(name), c.transformArgs(name, args...)...), + Env: []string{fmt.Sprintf("NVIDIA_CTK_DEBUG=%v", c.debugLogging)}, } } -func (c cdiHook) requiredArgs(name string) []string { - base := filepath.Base(string(c)) + +// isDisabled checks if the specified hook name is disabled. +func (c cdiHookCreator) isDisabled(name HookName, args ...string) bool { + if c.disabledHooks[name] { + return true + } + + switch name { + case CreateSymlinksHook: + if len(args) == 0 { + return true + } + case ChmodHook: + if len(args) == 0 { + return true + } + } + return false +} + +func (c cdiHookCreator) requiredArgs(name HookName) []string { + return append(c.fixedArgs, string(name)) +} + +func (c cdiHookCreator) transformArgs(name HookName, args ...string) []string { + switch name { + case CreateSymlinksHook: + var transformedArgs []string + for _, arg := range args { + transformedArgs = append(transformedArgs, "--link", arg) + } + return transformedArgs + case ChmodHook: + var transformedArgs = []string{"--mode", "755"} + for _, arg := range args { + transformedArgs = append(transformedArgs, "--path", arg) + } + return transformedArgs + default: + return args + } +} + +// getFixedArgsForCDIHookCLI returns the fixed arguments for the hook CLI. +// If the nvidia-ctk binary is used, hooks are implemented under the hook +// subcommand. +// For the nvidia-cdi-hook binary, the hooks are implemented as subcommands of +// the top-level CLI. +func getFixedArgsForCDIHookCLI(nvidiaCDIHookPath string) []string { + base := filepath.Base(nvidiaCDIHookPath) if base == "nvidia-ctk" { - return []string{base, "hook", name} + return []string{base, "hook"} } - return []string{base, name} + return []string{base} } diff --git a/internal/discover/icp_test.go b/internal/discover/ipc_test.go similarity index 97% rename from internal/discover/icp_test.go rename to internal/discover/ipc_test.go index f214f522d..de3bc1529 100644 --- a/internal/discover/icp_test.go +++ b/internal/discover/ipc_test.go @@ -52,7 +52,8 @@ func TestIPCMounts(t *testing.T) { "ro", "nosuid", "nodev", - "bind", + "rbind", + "rprivate", "noexec", }, }, diff --git a/internal/discover/ldconfig.go b/internal/discover/ldconfig.go index b81b9be59..15356de8b 100644 --- a/internal/discover/ldconfig.go +++ b/internal/discover/ldconfig.go @@ -25,12 +25,12 @@ import ( ) // NewLDCacheUpdateHook creates a discoverer that updates the ldcache for the specified mounts. A logger can also be specified -func NewLDCacheUpdateHook(logger logger.Interface, mounts Discover, nvidiaCDIHookPath, ldconfigPath string) (Discover, error) { +func NewLDCacheUpdateHook(logger logger.Interface, mounts Discover, hookCreator HookCreator, ldconfigPath string) (Discover, error) { d := ldconfig{ - logger: logger, - nvidiaCDIHookPath: nvidiaCDIHookPath, - ldconfigPath: ldconfigPath, - mountsFrom: mounts, + logger: logger, + hookCreator: hookCreator, + ldconfigPath: ldconfigPath, + mountsFrom: mounts, } return &d, nil @@ -38,10 +38,10 @@ func NewLDCacheUpdateHook(logger logger.Interface, mounts Discover, nvidiaCDIHoo type ldconfig struct { None - logger logger.Interface - nvidiaCDIHookPath string - ldconfigPath string - mountsFrom Discover + logger logger.Interface + hookCreator HookCreator + ldconfigPath string + mountsFrom Discover } // Hooks checks the required mounts for libraries and returns a hook to update the LDcache for the discovered paths. @@ -50,33 +50,23 @@ func (d ldconfig) Hooks() ([]Hook, error) { if err != nil { return nil, fmt.Errorf("failed to discover mounts for ldcache update: %v", err) } - h := CreateLDCacheUpdateHook( - d.nvidiaCDIHookPath, - d.ldconfigPath, - getLibraryPaths(mounts), - ) - return []Hook{h}, nil -} -// CreateLDCacheUpdateHook locates the NVIDIA Container Toolkit CLI and creates a hook for updating the LD Cache -func CreateLDCacheUpdateHook(executable string, ldconfig string, libraries []string) Hook { var args []string - if ldconfig != "" { - args = append(args, "--ldconfig-path", ldconfig) + if d.ldconfigPath != "" { + args = append(args, "--ldconfig-path", d.ldconfigPath) } - for _, f := range uniqueFolders(libraries) { + for _, f := range uniqueFolders(getLibraryPaths(mounts)) { args = append(args, "--folder", f) } - hook := CreateNvidiaCDIHook( - executable, - "update-ldcache", - args..., + h := Merge( + d.hookCreator.Create(CreateSonameSymlinksHook, args...), + d.hookCreator.Create(UpdateLDCacheHook, args...), ) - return hook + return h.Hooks() } // getLibraryPaths extracts the library dirs from the specified mounts diff --git a/internal/discover/ldconfig_test.go b/internal/discover/ldconfig_test.go index 0b214c77b..30576a7b2 100644 --- a/internal/discover/ldconfig_test.go +++ b/internal/discover/ldconfig_test.go @@ -31,6 +31,7 @@ const ( func TestLDCacheUpdateHook(t *testing.T) { logger, _ := testlog.NewNullLogger() + hookCreator := NewHookCreator(WithNVIDIACDIHookPath(testNvidiaCDIHookPath)) testCases := []struct { description string @@ -38,11 +39,24 @@ func TestLDCacheUpdateHook(t *testing.T) { mounts []Mount mountError error expectedError error - expectedArgs []string + expectedHooks []Hook }{ { - description: "empty mounts", - expectedArgs: []string{"nvidia-cdi-hook", "update-ldcache"}, + description: "empty mounts", + expectedHooks: []Hook{ + { + Lifecycle: "createContainer", + Path: testNvidiaCDIHookPath, + Args: []string{"nvidia-cdi-hook", "create-soname-symlinks"}, + Env: []string{"NVIDIA_CTK_DEBUG=false"}, + }, + { + Lifecycle: "createContainer", + Path: testNvidiaCDIHookPath, + Args: []string{"nvidia-cdi-hook", "update-ldcache"}, + Env: []string{"NVIDIA_CTK_DEBUG=false"}, + }, + }, }, { description: "mount error", @@ -65,7 +79,20 @@ func TestLDCacheUpdateHook(t *testing.T) { Path: "/usr/local/lib/libbar.so", }, }, - expectedArgs: []string{"nvidia-cdi-hook", "update-ldcache", "--folder", "/usr/local/lib", "--folder", "/usr/local/libother"}, + expectedHooks: []Hook{ + { + Lifecycle: "createContainer", + Path: testNvidiaCDIHookPath, + Args: []string{"nvidia-cdi-hook", "create-soname-symlinks", "--folder", "/usr/local/lib", "--folder", "/usr/local/libother"}, + Env: []string{"NVIDIA_CTK_DEBUG=false"}, + }, + { + Lifecycle: "createContainer", + Path: testNvidiaCDIHookPath, + Args: []string{"nvidia-cdi-hook", "update-ldcache", "--folder", "/usr/local/lib", "--folder", "/usr/local/libother"}, + Env: []string{"NVIDIA_CTK_DEBUG=false"}, + }, + }, }, { description: "host paths are ignored", @@ -75,12 +102,38 @@ func TestLDCacheUpdateHook(t *testing.T) { Path: "/usr/local/lib/libfoo.so", }, }, - expectedArgs: []string{"nvidia-cdi-hook", "update-ldcache", "--folder", "/usr/local/lib"}, + expectedHooks: []Hook{ + { + Lifecycle: "createContainer", + Path: testNvidiaCDIHookPath, + Args: []string{"nvidia-cdi-hook", "create-soname-symlinks", "--folder", "/usr/local/lib"}, + Env: []string{"NVIDIA_CTK_DEBUG=false"}, + }, + { + Lifecycle: "createContainer", + Path: testNvidiaCDIHookPath, + Args: []string{"nvidia-cdi-hook", "update-ldcache", "--folder", "/usr/local/lib"}, + Env: []string{"NVIDIA_CTK_DEBUG=false"}, + }, + }, }, { description: "explicit ldconfig path is passed", ldconfigPath: testLdconfigPath, - expectedArgs: []string{"nvidia-cdi-hook", "update-ldcache", "--ldconfig-path", testLdconfigPath}, + expectedHooks: []Hook{ + { + Lifecycle: "createContainer", + Path: testNvidiaCDIHookPath, + Args: []string{"nvidia-cdi-hook", "create-soname-symlinks", "--ldconfig-path", testLdconfigPath}, + Env: []string{"NVIDIA_CTK_DEBUG=false"}, + }, + { + Lifecycle: "createContainer", + Path: testNvidiaCDIHookPath, + Args: []string{"nvidia-cdi-hook", "update-ldcache", "--ldconfig-path", testLdconfigPath}, + Env: []string{"NVIDIA_CTK_DEBUG=false"}, + }, + }, }, } @@ -91,13 +144,7 @@ func TestLDCacheUpdateHook(t *testing.T) { return tc.mounts, tc.mountError }, } - expectedHook := Hook{ - Path: testNvidiaCDIHookPath, - Args: tc.expectedArgs, - Lifecycle: "createContainer", - } - - d, err := NewLDCacheUpdateHook(logger, mountMock, testNvidiaCDIHookPath, tc.ldconfigPath) + d, err := NewLDCacheUpdateHook(logger, mountMock, hookCreator, tc.ldconfigPath) require.NoError(t, err) hooks, err := d.Hooks() @@ -110,9 +157,7 @@ func TestLDCacheUpdateHook(t *testing.T) { } require.NoError(t, err) - require.Len(t, hooks, 1) - - require.EqualValues(t, hooks[0], expectedHook) + require.EqualValues(t, tc.expectedHooks, hooks) devices, err := d.Devices() require.NoError(t, err) diff --git a/internal/discover/list.go b/internal/discover/list.go index 8fbf6e759..83d37b796 100644 --- a/internal/discover/list.go +++ b/internal/discover/list.go @@ -21,26 +21,28 @@ import "fmt" // list is a discoverer that contains a list of Discoverers. The output of the // Mounts functions is the concatenation of the output for each of the // elements in the list. -type list struct { - discoverers []Discover -} +type list []Discover var _ Discover = (*list)(nil) // Merge creates a discoverer that is the composite of a list of discoverers. -func Merge(d ...Discover) Discover { - l := list{ - discoverers: d, +func Merge(discoverers ...Discover) Discover { + var l list + for _, d := range discoverers { + if d == nil { + continue + } + l = append(l, d) } - return &l + return l } // Devices returns all devices from the included discoverers func (d list) Devices() ([]Device, error) { var allDevices []Device - for i, di := range d.discoverers { + for i, di := range d { devices, err := di.Devices() if err != nil { return nil, fmt.Errorf("error discovering devices for discoverer %v: %v", i, err) @@ -51,11 +53,26 @@ func (d list) Devices() ([]Device, error) { return allDevices, nil } +// EnvVars returns all environment variables from the included discoverers. +func (d list) EnvVars() ([]EnvVar, error) { + var allEnvs []EnvVar + + for i, di := range d { + envs, err := di.EnvVars() + if err != nil { + return nil, fmt.Errorf("error discovering envs for discoverer %v: %w", i, err) + } + allEnvs = append(allEnvs, envs...) + } + + return allEnvs, nil +} + // Mounts returns all mounts from the included discoverers func (d list) Mounts() ([]Mount, error) { var allMounts []Mount - for i, di := range d.discoverers { + for i, di := range d { mounts, err := di.Mounts() if err != nil { return nil, fmt.Errorf("error discovering mounts for discoverer %v: %v", i, err) @@ -70,7 +87,7 @@ func (d list) Mounts() ([]Mount, error) { func (d list) Hooks() ([]Hook, error) { var allHooks []Hook - for i, di := range d.discoverers { + for i, di := range d { hooks, err := di.Hooks() if err != nil { return nil, fmt.Errorf("error discovering hooks for discoverer %v: %v", i, err) diff --git a/internal/discover/mounts-to-container-path.go b/internal/discover/mounts-to-container-path.go index 602f153df..d92bc91cc 100644 --- a/internal/discover/mounts-to-container-path.go +++ b/internal/discover/mounts-to-container-path.go @@ -71,7 +71,8 @@ func (d *mountsToContainerPath) Mounts() ([]Mount, error) { "ro", "nosuid", "nodev", - "bind", + "rbind", + "rprivate", }, } mounts = append(mounts, mount) diff --git a/internal/discover/mounts-to-container-path_test.go b/internal/discover/mounts-to-container-path_test.go index e0a88801b..dd4a17d10 100644 --- a/internal/discover/mounts-to-container-path_test.go +++ b/internal/discover/mounts-to-container-path_test.go @@ -32,7 +32,8 @@ func TestMountsToContainerPath(t *testing.T) { "ro", "nosuid", "nodev", - "bind", + "rbind", + "rprivate", } testCases := []struct { diff --git a/internal/discover/mounts.go b/internal/discover/mounts.go index 9232dae3d..7eb41a384 100644 --- a/internal/discover/mounts.go +++ b/internal/discover/mounts.go @@ -20,7 +20,6 @@ import ( "fmt" "path/filepath" "strings" - "sync" "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" "github.com/NVIDIA/nvidia-container-toolkit/internal/lookup" @@ -35,15 +34,13 @@ type mounts struct { lookup lookup.Locator root string required []string - sync.Mutex - cache []Mount } var _ Discover = (*mounts)(nil) // NewMounts creates a discoverer for the required mounts using the specified locator. func NewMounts(logger logger.Interface, lookup lookup.Locator, root string, required []string) Discover { - return newMounts(logger, lookup, root, required) + return WithCache(newMounts(logger, lookup, root, required)) } // newMounts creates a discoverer for the required mounts using the specified locator. @@ -61,16 +58,8 @@ func (d *mounts) Mounts() ([]Mount, error) { return nil, fmt.Errorf("no lookup defined") } - if d.cache != nil { - d.logger.Debugf("returning cached mounts") - return d.cache, nil - } - - d.Lock() - defer d.Unlock() - - uniqueMounts := make(map[string]Mount) - + var mounts []Mount + seen := make(map[string]bool) for _, candidate := range d.required { d.logger.Debugf("Locating %v", candidate) located, err := d.lookup.Locate(candidate) @@ -84,7 +73,7 @@ func (d *mounts) Mounts() ([]Mount, error) { } d.logger.Debugf("Located %v as %v", candidate, located) for _, p := range located { - if _, ok := uniqueMounts[p]; ok { + if seen[p] { d.logger.Debugf("Skipping duplicate mount %v", p) continue } @@ -95,27 +84,23 @@ func (d *mounts) Mounts() ([]Mount, error) { } d.logger.Infof("Selecting %v as %v", p, r) - uniqueMounts[p] = Mount{ + mount := Mount{ HostPath: p, Path: r, Options: []string{ "ro", "nosuid", "nodev", - "bind", + "rbind", + "rprivate", }, } + mounts = append(mounts, mount) + seen[p] = true } } - var mounts []Mount - for _, m := range uniqueMounts { - mounts = append(mounts, m) - } - - d.cache = mounts - - return d.cache, nil + return mounts, nil } // relativeTo returns the path relative to the root for the file locator diff --git a/internal/discover/mounts_test.go b/internal/discover/mounts_test.go index c239db3aa..2a8d54289 100644 --- a/internal/discover/mounts_test.go +++ b/internal/discover/mounts_test.go @@ -41,16 +41,18 @@ func TestMounts(t *testing.T) { "ro", "nosuid", "nodev", - "bind", + "rbind", + "rprivate", } - logger, logHook := testlog.NewNullLogger() + logger, _ := testlog.NewNullLogger() testCases := []struct { description string expectedError error expectedMounts []Mount input *mounts + repeat int }{ { description: "nill lookup returns error", @@ -100,7 +102,7 @@ func TestMounts(t *testing.T) { lookup: &lookup.LocatorMock{ LocateFunc: func(s string) ([]string, error) { if s == "error" { - return nil, fmt.Errorf(s) + return nil, fmt.Errorf("error") } return []string{s}, nil }, @@ -159,31 +161,68 @@ func TestMounts(t *testing.T) { {Path: "/located", HostPath: "/some/root/located", Options: mountOptions}, }, }, + { + description: "multiple mounts ordering", + input: &mounts{ + lookup: &lookup.LocatorMock{ + LocateFunc: func(s string) ([]string, error) { + return []string{ + "first", + "second", + "third", + "fourth", + "second", + "second", + "second", + "fifth", + "sixth"}, nil + }, + }, + required: []string{""}, + }, + expectedMounts: []Mount{ + {Path: "first", HostPath: "first", Options: mountOptions}, + {Path: "second", HostPath: "second", Options: mountOptions}, + {Path: "third", HostPath: "third", Options: mountOptions}, + {Path: "fourth", HostPath: "fourth", Options: mountOptions}, + {Path: "fifth", HostPath: "fifth", Options: mountOptions}, + {Path: "sixth", HostPath: "sixth", Options: mountOptions}, + }, + repeat: 10, + }, } for _, tc := range testCases { - logHook.Reset() - t.Run(tc.description, func(t *testing.T) { - tc.input.logger = logger - mounts, err := tc.input.Mounts() - - if tc.expectedError != nil { - require.Error(t, err) - } else { - require.NoError(t, err) + for i := 1; ; i++ { + test_name := tc.description + if tc.repeat > 1 { + test_name += fmt.Sprintf("/%d", i) } - require.ElementsMatch(t, tc.expectedMounts, mounts) + success := t.Run(test_name, func(t *testing.T) { + tc.input.logger = logger + mounts, err := tc.input.Mounts() + + if tc.expectedError != nil { + require.Error(t, err) + } else { + require.NoError(t, err) + } + require.EqualValues(t, tc.expectedMounts, mounts) - // We check that the mock is called for each element of required - if tc.input.lookup != nil { - mock := tc.input.lookup.(*lookup.LocatorMock) - require.Len(t, mock.LocateCalls(), len(tc.input.required)) - var args []string - for _, c := range mock.LocateCalls() { - args = append(args, c.S) + // We check that the mock is called for each element of required + if i == 1 && tc.input.lookup != nil { + mock := tc.input.lookup.(*lookup.LocatorMock) + require.Len(t, mock.LocateCalls(), len(tc.input.required)) + var args []string + for _, c := range mock.LocateCalls() { + args = append(args, c.S) + } + require.EqualValues(t, args, tc.input.required) } - require.EqualValues(t, args, tc.input.required) + }) + if !success || i >= tc.repeat { + break } - }) + } } } diff --git a/internal/discover/none.go b/internal/discover/none.go index 2a1d2c572..3ce624728 100644 --- a/internal/discover/none.go +++ b/internal/discover/none.go @@ -24,15 +24,20 @@ var _ Discover = (*None)(nil) // Devices returns an empty list of devices func (e None) Devices() ([]Device, error) { - return []Device{}, nil + return nil, nil +} + +// EnvVars returns an empty list of devices +func (e None) EnvVars() ([]EnvVar, error) { + return nil, nil } // Mounts returns an empty list of mounts func (e None) Mounts() ([]Mount, error) { - return []Mount{}, nil + return nil, nil } // Hooks returns an empty list of hooks func (e None) Hooks() ([]Hook, error) { - return []Hook{}, nil + return nil, nil } diff --git a/internal/discover/symlinks.go b/internal/discover/symlinks.go new file mode 100644 index 000000000..a9cd811ad --- /dev/null +++ b/internal/discover/symlinks.go @@ -0,0 +1,112 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package discover + +import ( + "fmt" + "path/filepath" +) + +type additionalSymlinks struct { + Discover + version string + hookCreator HookCreator +} + +// WithDriverDotSoSymlinks decorates the provided discoverer. +// A hook is added that checks for specific driver symlinks that need to be created. +func WithDriverDotSoSymlinks(mounts Discover, version string, hookCreator HookCreator) Discover { + if version == "" { + version = "*.*" + } + return &additionalSymlinks{ + Discover: mounts, + hookCreator: hookCreator, + version: version, + } +} + +// Hooks returns a hook to create the additional symlinks based on the mounts. +func (d *additionalSymlinks) Hooks() ([]Hook, error) { + mounts, err := d.Mounts() + if err != nil { + return nil, fmt.Errorf("failed to get library mounts: %v", err) + } + hooks, err := d.Discover.Hooks() + if err != nil { + return nil, fmt.Errorf("failed to get hooks: %v", err) + } + + var links []string + processedPaths := make(map[string]bool) + processedLinks := make(map[string]bool) + for _, mount := range mounts { + if processedPaths[mount.Path] { + continue + } + processedPaths[mount.Path] = true + + for _, link := range d.getLinksForMount(mount.Path) { + if processedLinks[link] { + continue + } + processedLinks[link] = true + links = append(links, link) + } + } + + if len(links) == 0 { + return hooks, nil + } + + createSymlinkHooks, err := d.hookCreator.Create("create-symlinks", links...).Hooks() + if err != nil { + return nil, fmt.Errorf("failed to create symlink hook: %v", err) + } + + return append(hooks, createSymlinkHooks...), nil +} + +// getLinksForMount maps the path to created links if any. +func (d additionalSymlinks) getLinksForMount(path string) []string { + dir, filename := filepath.Split(path) + switch { + case d.isDriverLibrary("libcuda.so", filename): + // XXX Many applications wrongly assume that libcuda.so exists (e.g. with dlopen). + // create libcuda.so -> libcuda.so.1 symlink + link := fmt.Sprintf("%s::%s", "libcuda.so.1", filepath.Join(dir, "libcuda.so")) + return []string{link} + case d.isDriverLibrary("libGLX_nvidia.so", filename): + // XXX GLVND requires this symlink for indirect GLX support. + // create libGLX_indirect.so.0 -> libGLX_nvidia.so.VERSION symlink + link := fmt.Sprintf("%s::%s", filename, filepath.Join(dir, "libGLX_indirect.so.0")) + return []string{link} + case d.isDriverLibrary("libnvidia-opticalflow.so", filename): + // XXX Fix missing symlink for libnvidia-opticalflow.so. + // create libnvidia-opticalflow.so -> libnvidia-opticalflow.so.1 symlink + link := fmt.Sprintf("%s::%s", "libnvidia-opticalflow.so.1", filepath.Join(dir, "libnvidia-opticalflow.so")) + return []string{link} + } + return nil +} + +// isDriverLibrary checks whether the specified filename is a specific driver library. +func (d additionalSymlinks) isDriverLibrary(libraryName string, filename string) bool { + pattern := libraryName + "." + d.version + match, _ := filepath.Match(pattern, filename) + return match +} diff --git a/internal/discover/symlinks_test.go b/internal/discover/symlinks_test.go new file mode 100644 index 000000000..e9a6c6f1e --- /dev/null +++ b/internal/discover/symlinks_test.go @@ -0,0 +1,336 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package discover + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestWithWithDriverDotSoSymlinks(t *testing.T) { + testCases := []struct { + description string + discover Discover + version string + expectedDevices []Device + expectedDevicesError error + expectedHooks []Hook + expectedHooksError error + expectedMounts []Mount + expectedMountsError error + }{ + { + description: "empty discoverer remains empty", + discover: None{}, + }, + { + description: "non-matching discoverer remains unchanged", + discover: &DiscoverMock{ + DevicesFunc: func() ([]Device, error) { + devices := []Device{ + { + Path: "/dev/dev1", + }, + } + return devices, nil + }, + HooksFunc: func() ([]Hook, error) { + hooks := []Hook{ + { + Lifecycle: "prestart", + Path: "/path/to/a/hook", + Args: []string{"hook", "arg1", "arg2"}, + }, + } + return hooks, nil + }, + MountsFunc: func() ([]Mount, error) { + mounts := []Mount{ + { + Path: "/usr/lib/libnotcuda.so.1.2.3", + }, + } + return mounts, nil + }, + }, + expectedDevices: []Device{ + { + Path: "/dev/dev1", + }, + }, + expectedHooks: []Hook{ + { + Lifecycle: "prestart", + Path: "/path/to/a/hook", + Args: []string{"hook", "arg1", "arg2"}, + }, + }, + expectedMounts: []Mount{ + { + Path: "/usr/lib/libnotcuda.so.1.2.3", + }, + }, + }, + { + description: "libcuda.so.RM_VERSION is matched", + discover: &DiscoverMock{ + DevicesFunc: func() ([]Device, error) { + return nil, nil + }, + HooksFunc: func() ([]Hook, error) { + return nil, nil + }, + MountsFunc: func() ([]Mount, error) { + mounts := []Mount{ + { + Path: "/usr/lib/libcuda.so.1.2.3", + }, + } + return mounts, nil + }, + }, + version: "1.2.3", + expectedMounts: []Mount{ + { + Path: "/usr/lib/libcuda.so.1.2.3", + }, + }, + expectedHooks: []Hook{ + { + Lifecycle: "createContainer", + Path: "/usr/bin/nvidia-cdi-hook", + Args: []string{"nvidia-cdi-hook", "create-symlinks", "--link", "libcuda.so.1::/usr/lib/libcuda.so"}, + Env: []string{"NVIDIA_CTK_DEBUG=false"}, + }, + }, + }, + { + description: "libcuda.so.RM_VERSION is matched by pattern", + discover: &DiscoverMock{ + DevicesFunc: func() ([]Device, error) { + return nil, nil + }, + HooksFunc: func() ([]Hook, error) { + return nil, nil + }, + MountsFunc: func() ([]Mount, error) { + mounts := []Mount{ + { + Path: "/usr/lib/libcuda.so.1.2.3", + }, + } + return mounts, nil + }, + }, + version: "", + expectedMounts: []Mount{ + { + Path: "/usr/lib/libcuda.so.1.2.3", + }, + }, + expectedHooks: []Hook{ + { + Lifecycle: "createContainer", + Path: "/usr/bin/nvidia-cdi-hook", + Args: []string{"nvidia-cdi-hook", "create-symlinks", "--link", "libcuda.so.1::/usr/lib/libcuda.so"}, + Env: []string{"NVIDIA_CTK_DEBUG=false"}, + }, + }, + }, + { + description: "beta libcuda.so.RM_VERSION is matched", + discover: &DiscoverMock{ + DevicesFunc: func() ([]Device, error) { + return nil, nil + }, + HooksFunc: func() ([]Hook, error) { + return nil, nil + }, + MountsFunc: func() ([]Mount, error) { + mounts := []Mount{ + { + Path: "/usr/lib/libcuda.so.1.2", + }, + } + return mounts, nil + }, + }, + expectedMounts: []Mount{ + { + Path: "/usr/lib/libcuda.so.1.2", + }, + }, + expectedHooks: []Hook{ + { + Lifecycle: "createContainer", + Path: "/usr/bin/nvidia-cdi-hook", + Args: []string{"nvidia-cdi-hook", "create-symlinks", "--link", "libcuda.so.1::/usr/lib/libcuda.so"}, + Env: []string{"NVIDIA_CTK_DEBUG=false"}, + }, + }, + }, + { + description: "non-matching libcuda.so.RM_VERSION is ignored", + discover: &DiscoverMock{ + DevicesFunc: func() ([]Device, error) { + return nil, nil + }, + HooksFunc: func() ([]Hook, error) { + return nil, nil + }, + MountsFunc: func() ([]Mount, error) { + mounts := []Mount{ + { + Path: "/usr/lib/libcuda.so.1.2.3", + }, + } + return mounts, nil + }, + }, + version: "4.5.6", + expectedMounts: []Mount{ + { + Path: "/usr/lib/libcuda.so.1.2.3", + }, + }, + }, + { + description: "hooks are extended", + discover: &DiscoverMock{ + DevicesFunc: func() ([]Device, error) { + return nil, nil + }, + HooksFunc: func() ([]Hook, error) { + hooks := []Hook{ + { + Lifecycle: "prestart", + Path: "/path/to/a/hook", + Args: []string{"hook", "arg1", "arg2"}, + }, + } + return hooks, nil + }, + MountsFunc: func() ([]Mount, error) { + mounts := []Mount{ + { + Path: "/usr/lib/libcuda.so.1.2.3", + }, + } + return mounts, nil + }, + }, + version: "1.2.3", + expectedMounts: []Mount{ + { + Path: "/usr/lib/libcuda.so.1.2.3", + }, + }, + expectedHooks: []Hook{ + { + Lifecycle: "prestart", + Path: "/path/to/a/hook", + Args: []string{"hook", "arg1", "arg2"}, + }, + { + Lifecycle: "createContainer", + Path: "/usr/bin/nvidia-cdi-hook", + Args: []string{"nvidia-cdi-hook", "create-symlinks", "--link", "libcuda.so.1::/usr/lib/libcuda.so"}, + Env: []string{"NVIDIA_CTK_DEBUG=false"}, + }, + }, + }, + { + description: "all driver so symlinks are matched", + discover: &DiscoverMock{ + DevicesFunc: func() ([]Device, error) { + return nil, nil + }, + HooksFunc: func() ([]Hook, error) { + return nil, nil + }, + MountsFunc: func() ([]Mount, error) { + mounts := []Mount{ + { + Path: "/usr/lib/libcuda.so.1.2.3", + }, + { + Path: "/usr/lib/libGLX_nvidia.so.1.2.3", + }, + { + Path: "/usr/lib/libnvidia-opticalflow.so.1.2.3", + }, + { + Path: "/usr/lib/libanother.so.1.2.3", + }, + } + return mounts, nil + }, + }, + expectedMounts: []Mount{ + { + Path: "/usr/lib/libcuda.so.1.2.3", + }, + { + Path: "/usr/lib/libGLX_nvidia.so.1.2.3", + }, + { + Path: "/usr/lib/libnvidia-opticalflow.so.1.2.3", + }, + { + Path: "/usr/lib/libanother.so.1.2.3", + }, + }, + expectedHooks: []Hook{ + { + Lifecycle: "createContainer", + Path: "/usr/bin/nvidia-cdi-hook", + Args: []string{ + "nvidia-cdi-hook", "create-symlinks", + "--link", "libcuda.so.1::/usr/lib/libcuda.so", + "--link", "libGLX_nvidia.so.1.2.3::/usr/lib/libGLX_indirect.so.0", + "--link", "libnvidia-opticalflow.so.1::/usr/lib/libnvidia-opticalflow.so", + }, + Env: []string{"NVIDIA_CTK_DEBUG=false"}, + }, + }, + }, + } + + hookCreator := NewHookCreator() + for _, tc := range testCases { + t.Run(tc.description, func(t *testing.T) { + d := WithDriverDotSoSymlinks( + tc.discover, + tc.version, + hookCreator, + ) + + devices, err := d.Devices() + require.ErrorIs(t, err, tc.expectedDevicesError) + require.EqualValues(t, tc.expectedDevices, devices) + + hooks, err := d.Hooks() + require.ErrorIs(t, err, tc.expectedHooksError) + require.EqualValues(t, tc.expectedHooks, hooks) + + mounts, err := d.Mounts() + require.ErrorIs(t, err, tc.expectedMountsError) + require.EqualValues(t, tc.expectedMounts, mounts) + }) + } +} diff --git a/internal/edits/edits.go b/internal/edits/edits.go index 029e7885b..4538ac317 100644 --- a/internal/edits/edits.go +++ b/internal/edits/edits.go @@ -55,6 +55,11 @@ func FromDiscoverer(d discover.Discover) (*cdi.ContainerEdits, error) { return nil, fmt.Errorf("failed to discover devices: %v", err) } + envs, err := d.EnvVars() + if err != nil { + return nil, fmt.Errorf("failed to discover environment variables: %w", err) + } + mounts, err := d.Mounts() if err != nil { return nil, fmt.Errorf("failed to discover mounts: %v", err) @@ -74,6 +79,10 @@ func FromDiscoverer(d discover.Discover) (*cdi.ContainerEdits, error) { c.Append(edits) } + for _, e := range envs { + c.Append(envvar(e).toEdits()) + } + for _, m := range mounts { c.Append(mount(m).toEdits()) } diff --git a/internal/edits/envvar.go b/internal/edits/envvar.go new file mode 100644 index 000000000..359ce6b93 --- /dev/null +++ b/internal/edits/envvar.go @@ -0,0 +1,39 @@ +/** +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package edits + +import ( + "fmt" + + "tags.cncf.io/container-device-interface/pkg/cdi" + "tags.cncf.io/container-device-interface/specs-go" + + "github.com/NVIDIA/nvidia-container-toolkit/internal/discover" +) + +type envvar discover.EnvVar + +// toEdits converts a discovered envvar to CDI Container Edits. +func (d envvar) toEdits() *cdi.ContainerEdits { + e := cdi.ContainerEdits{ + ContainerEdits: &specs.ContainerEdits{ + Env: []string{fmt.Sprintf("%s=%s", d.Name, d.Value)}, + }, + } + return &e +} diff --git a/internal/edits/hook.go b/internal/edits/hook.go index f528fe1db..ca5466d4b 100644 --- a/internal/edits/hook.go +++ b/internal/edits/hook.go @@ -42,6 +42,7 @@ func (d hook) toSpec() *specs.Hook { HookName: d.Lifecycle, Path: d.Path, Args: d.Args, + Env: d.Env, } return &s diff --git a/internal/info/auto.go b/internal/info/auto.go index c6800da1b..3d69ad5c4 100644 --- a/internal/info/auto.go +++ b/internal/info/auto.go @@ -23,34 +23,114 @@ import ( "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" ) +// A RuntimeMode is used to select a specific mode of operation for the NVIDIA Container Runtime. +type RuntimeMode string + +const ( + // In LegacyRuntimeMode the nvidia-container-runtime injects the + // nvidia-container-runtime-hook as a prestart hook into the incoming + // container config. This hook invokes the nvidia-container-cli to perform + // the required modifications to the container. + LegacyRuntimeMode = RuntimeMode("legacy") + // In CSVRuntimeMode the nvidia-container-runtime processes a set of CSV + // files to determine which container modification are required. The + // contents of these CSV files are used to generate an in-memory CDI + // specification which is used to modify the container config. + CSVRuntimeMode = RuntimeMode("csv") + // In CDIRuntimeMode the nvidia-container-runtime applies the modifications + // to the container config required for the requested CDI devices in the + // same way that other CDI clients would. + CDIRuntimeMode = RuntimeMode("cdi") + // In JitCDIRuntimeMode the nvidia-container-runtime generates in-memory CDI + // specifications for requested NVIDIA devices. + JitCDIRuntimeMode = RuntimeMode("jit-cdi") +) + +type RuntimeModeResolver interface { + ResolveRuntimeMode(string) RuntimeMode +} + +type modeResolver struct { + logger logger.Interface + // TODO: This only needs to consider the requested devices. + image *image.CUDA + propertyExtractor info.PropertyExtractor + defaultMode RuntimeMode +} + +type Option func(*modeResolver) + +func WithDefaultMode(defaultMode RuntimeMode) Option { + return func(mr *modeResolver) { + mr.defaultMode = defaultMode + } +} + +func WithLogger(logger logger.Interface) Option { + return func(mr *modeResolver) { + mr.logger = logger + } +} + +func WithImage(image *image.CUDA) Option { + return func(mr *modeResolver) { + mr.image = image + } +} + +func WithPropertyExtractor(propertyExtractor info.PropertyExtractor) Option { + return func(mr *modeResolver) { + mr.propertyExtractor = propertyExtractor + } +} + +func NewRuntimeModeResolver(opts ...Option) RuntimeModeResolver { + r := &modeResolver{ + defaultMode: JitCDIRuntimeMode, + } + for _, opt := range opts { + opt(r) + } + if r.logger == nil { + r.logger = &logger.NullLogger{} + } + + return r +} + // ResolveAutoMode determines the correct mode for the platform if set to "auto" -func ResolveAutoMode(logger logger.Interface, mode string, image image.CUDA) (rmode string) { - return resolveMode(logger, mode, image, nil) +func ResolveAutoMode(logger logger.Interface, mode string, image image.CUDA) (rmode RuntimeMode) { + r := modeResolver{ + logger: logger, + image: &image, + propertyExtractor: nil, + } + return r.ResolveRuntimeMode(mode) } -func resolveMode(logger logger.Interface, mode string, image image.CUDA, propertyExtractor info.PropertyExtractor) (rmode string) { +func (m *modeResolver) ResolveRuntimeMode(mode string) (rmode RuntimeMode) { if mode != "auto" { - logger.Infof("Using requested mode '%s'", mode) - return mode + m.logger.Infof("Using requested mode '%s'", mode) + return RuntimeMode(mode) } defer func() { - logger.Infof("Auto-detected mode as '%v'", rmode) + m.logger.Infof("Auto-detected mode as '%v'", rmode) }() - if image.OnlyFullyQualifiedCDIDevices() { - return "cdi" + if m.image.OnlyFullyQualifiedCDIDevices() { + return CDIRuntimeMode } nvinfo := info.New( - info.WithLogger(logger), - info.WithPropertyExtractor(propertyExtractor), + info.WithLogger(m.logger), + info.WithPropertyExtractor(m.propertyExtractor), ) switch nvinfo.ResolvePlatform() { case info.PlatformNVML, info.PlatformWSL: - return "legacy" + return m.defaultMode case info.PlatformTegra: - return "csv" + return CSVRuntimeMode } - return "legacy" + return m.defaultMode } diff --git a/internal/info/auto_test.go b/internal/info/auto_test.go index 4fbfcde4b..f6d99c7e5 100644 --- a/internal/info/auto_test.go +++ b/internal/info/auto_test.go @@ -43,11 +43,16 @@ func TestResolveAutoMode(t *testing.T) { mode: "not-auto", expectedMode: "not-auto", }, + { + description: "legacy resolves to legacy", + mode: "legacy", + expectedMode: "legacy", + }, { description: "no info defaults to legacy", mode: "auto", info: map[string]bool{}, - expectedMode: "legacy", + expectedMode: "jit-cdi", }, { description: "non-nvml, non-tegra, nvgpu resolves to csv", @@ -80,14 +85,14 @@ func TestResolveAutoMode(t *testing.T) { expectedMode: "csv", }, { - description: "nvml, non-tegra, non-nvgpu resolves to legacy", + description: "nvml, non-tegra, non-nvgpu resolves to jit-cdi", mode: "auto", info: map[string]bool{ "nvml": true, "tegra": false, "nvgpu": false, }, - expectedMode: "legacy", + expectedMode: "jit-cdi", }, { description: "nvml, non-tegra, nvgpu resolves to csv", @@ -100,14 +105,14 @@ func TestResolveAutoMode(t *testing.T) { expectedMode: "csv", }, { - description: "nvml, tegra, non-nvgpu resolves to legacy", + description: "nvml, tegra, non-nvgpu resolves to jit-cdi", mode: "auto", info: map[string]bool{ "nvml": true, "tegra": true, "nvgpu": false, }, - expectedMode: "legacy", + expectedMode: "jit-cdi", }, { description: "nvml, tegra, nvgpu resolves to csv", @@ -136,7 +141,7 @@ func TestResolveAutoMode(t *testing.T) { }, }, { - description: "at least one non-cdi device resolves to legacy", + description: "at least one non-cdi device resolves to jit-cdi", mode: "auto", envmap: map[string]string{ "NVIDIA_VISIBLE_DEVICES": "nvidia.com/gpu=0,0", @@ -146,7 +151,7 @@ func TestResolveAutoMode(t *testing.T) { "tegra": false, "nvgpu": false, }, - expectedMode: "legacy", + expectedMode: "jit-cdi", }, { description: "at least one non-cdi device resolves to csv", @@ -170,7 +175,7 @@ func TestResolveAutoMode(t *testing.T) { expectedMode: "cdi", }, { - description: "cdi mount and non-CDI devices resolves to legacy", + description: "cdi mount and non-CDI devices resolves to jit-cdi", mode: "auto", mounts: []string{ "/var/run/nvidia-container-devices/cdi/nvidia.com/gpu/0", @@ -181,10 +186,10 @@ func TestResolveAutoMode(t *testing.T) { "tegra": false, "nvgpu": false, }, - expectedMode: "legacy", + expectedMode: "jit-cdi", }, { - description: "cdi mount and non-CDI envvar resolves to legacy", + description: "cdi mount and non-CDI envvar resolves to cdi", mode: "auto", envmap: map[string]string{ "NVIDIA_VISIBLE_DEVICES": "0", @@ -197,7 +202,7 @@ func TestResolveAutoMode(t *testing.T) { "tegra": false, "nvgpu": false, }, - expectedMode: "legacy", + expectedMode: "cdi", }, } @@ -216,7 +221,7 @@ func TestResolveAutoMode(t *testing.T) { HasTegraFilesFunc: func() (bool, string) { return tc.info["tegra"], "tegra" }, - UsesOnlyNVGPUModuleFunc: func() (bool, string) { + HasOnlyIntegratedGPUsFunc: func() (bool, string) { return tc.info["nvgpu"], "nvgpu" }, } @@ -232,8 +237,15 @@ func TestResolveAutoMode(t *testing.T) { image, _ := image.New( image.WithEnvMap(tc.envmap), image.WithMounts(mounts), + image.WithAcceptDeviceListAsVolumeMounts(true), + image.WithAcceptEnvvarUnprivileged(true), + ) + mr := NewRuntimeModeResolver( + WithLogger(logger), + WithImage(&image), + WithPropertyExtractor(properties), ) - mode := resolveMode(logger, tc.mode, image, properties) + mode := mr.ResolveRuntimeMode(tc.mode) require.EqualValues(t, tc.expectedMode, mode) }) } diff --git a/internal/info/proc/devices/devices.go b/internal/info/proc/devices/devices.go index 5927c837a..534a4afdd 100644 --- a/internal/info/proc/devices/devices.go +++ b/internal/info/proc/devices/devices.go @@ -49,7 +49,7 @@ type Major int // Devices represents the set of devices under /proc/devices // -//go:generate moq -stub -out devices_mock.go . Devices +//go:generate moq -rm -fmt=goimports -stub -out devices_mock.go . Devices type Devices interface { Exists(Name) bool Get(Name) (Major, bool) diff --git a/internal/ldcache/ldcache.go b/internal/ldcache/ldcache.go index 2f6de2fed..831792567 100644 --- a/internal/ldcache/ldcache.go +++ b/internal/ldcache/ldcache.go @@ -22,15 +22,12 @@ import ( "bytes" "encoding/binary" "errors" - "fmt" "os" "path/filepath" - "strings" "syscall" "unsafe" "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" - "github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/symlinks" ) const ldcachePath = "/etc/ld.so.cache" @@ -50,6 +47,11 @@ const ( flagArchX8664 = 0x0300 flagArchX32 = 0x0800 flagArchPpc64le = 0x0500 + + // flagArch_ARM_LIBHF is the flag value for 32-bit ARM libs using hard-float. + flagArch_ARM_LIBHF = 0x0900 + // flagArch_AARCH64_LIB64 is the flag value for 64-bit ARM libs. + flagArch_AARCH64_LIB64 = 0x0a00 ) var errInvalidCache = errors.New("invalid ld.so.cache file") @@ -82,10 +84,9 @@ type entry2 struct { // LDCache represents the interface for performing lookups into the LDCache // -//go:generate moq -out ldcache_mock.go . LDCache +//go:generate moq -rm -fmt=goimports -out ldcache_mock.go . LDCache type LDCache interface { List() ([]string, []string) - Lookup(...string) ([]string, []string) } type ldcache struct { @@ -105,14 +106,7 @@ func New(logger logger.Interface, root string) (LDCache, error) { logger.Debugf("Opening ld.conf at %v", path) f, err := os.Open(path) - if os.IsNotExist(err) { - logger.Warningf("Could not find ld.so.cache at %v; creating empty cache", path) - e := &empty{ - logger: logger, - path: path, - } - return e, nil - } else if err != nil { + if err != nil { return nil, err } defer f.Close() @@ -196,7 +190,7 @@ type entry struct { } // getEntries returns the entires of the ldcache in a go-friendly struct. -func (c *ldcache) getEntries(selected func(string) bool) []entry { +func (c *ldcache) getEntries() []entry { var entries []entry for _, e := range c.entries { bits := 0 @@ -206,10 +200,14 @@ func (c *ldcache) getEntries(selected func(string) bool) []entry { switch e.Flags & flagArchMask { case flagArchX8664: fallthrough + case flagArch_AARCH64_LIB64: + fallthrough case flagArchPpc64le: bits = 64 case flagArchX32: fallthrough + case flagArch_ARM_LIBHF: + fallthrough case flagArchI386: bits = 32 default: @@ -223,9 +221,6 @@ func (c *ldcache) getEntries(selected func(string) bool) []entry { c.logger.Debugf("Skipping invalid lib") continue } - if !selected(lib) { - continue - } value := bytesToString(c.libs[e.Value:]) if value == "" { c.logger.Debugf("Skipping invalid value for lib %v", lib) @@ -236,51 +231,19 @@ func (c *ldcache) getEntries(selected func(string) bool) []entry { bits: bits, value: value, } - entries = append(entries, e) } - return entries } // List creates a list of libraries in the ldcache. // The 32-bit and 64-bit libraries are returned separately. func (c *ldcache) List() ([]string, []string) { - all := func(s string) bool { return true } - - return c.resolveSelected(all) -} - -// Lookup searches the ldcache for the specified prefixes. -// The 32-bit and 64-bit libraries matching the prefixes are returned. -func (c *ldcache) Lookup(libPrefixes ...string) ([]string, []string) { - c.logger.Debugf("Looking up %v in cache", libPrefixes) - - // We define a functor to check whether a given library name matches any of the prefixes - matchesAnyPrefix := func(s string) bool { - for _, p := range libPrefixes { - if strings.HasPrefix(s, p) { - return true - } - } - return false - } - - return c.resolveSelected(matchesAnyPrefix) -} - -// resolveSelected process the entries in the LDCach based on the supplied filter and returns the resolved paths. -// The paths are separated by bittage. -func (c *ldcache) resolveSelected(selected func(string) bool) ([]string, []string) { paths := make(map[int][]string) processed := make(map[string]bool) - for _, e := range c.getEntries(selected) { - path, err := c.resolve(e.value) - if err != nil { - c.logger.Debugf("Could not resolve entry: %v", err) - continue - } + for _, e := range c.getEntries() { + path := filepath.Join(c.root, e.value) if processed[path] { continue } @@ -291,29 +254,6 @@ func (c *ldcache) resolveSelected(selected func(string) bool) ([]string, []strin return paths[32], paths[64] } -// resolve resolves the specified ldcache entry based on the value being processed. -// The input is the name of the entry in the cache. -func (c *ldcache) resolve(target string) (string, error) { - name := filepath.Join(c.root, target) - - c.logger.Debugf("checking %v", name) - - link, err := symlinks.Resolve(name) - if err != nil { - return "", fmt.Errorf("failed to resolve symlink: %v", err) - } - if link == name { - return name, nil - } - - // We return absolute paths for all targets - if !filepath.IsAbs(link) || strings.HasPrefix(link, ".") { - link = filepath.Join(filepath.Dir(target), link) - } - - return c.resolve(link) -} - // bytesToString converts a byte slice to a string. // This assumes that the byte slice is null-terminated func bytesToString(value []byte) string { diff --git a/internal/ldcache/ldcache_mock.go b/internal/ldcache/ldcache_mock.go index 092a3766f..5aa532351 100644 --- a/internal/ldcache/ldcache_mock.go +++ b/internal/ldcache/ldcache_mock.go @@ -20,9 +20,6 @@ var _ LDCache = &LDCacheMock{} // ListFunc: func() ([]string, []string) { // panic("mock out the List method") // }, -// LookupFunc: func(strings ...string) ([]string, []string) { -// panic("mock out the Lookup method") -// }, // } // // // use mockedLDCache in code that requires LDCache @@ -33,22 +30,13 @@ type LDCacheMock struct { // ListFunc mocks the List method. ListFunc func() ([]string, []string) - // LookupFunc mocks the Lookup method. - LookupFunc func(strings ...string) ([]string, []string) - // calls tracks calls to the methods. calls struct { // List holds details about calls to the List method. List []struct { } - // Lookup holds details about calls to the Lookup method. - Lookup []struct { - // Strings is the strings argument value. - Strings []string - } } - lockList sync.RWMutex - lockLookup sync.RWMutex + lockList sync.RWMutex } // List calls ListFunc. @@ -77,35 +65,3 @@ func (mock *LDCacheMock) ListCalls() []struct { mock.lockList.RUnlock() return calls } - -// Lookup calls LookupFunc. -func (mock *LDCacheMock) Lookup(strings ...string) ([]string, []string) { - if mock.LookupFunc == nil { - panic("LDCacheMock.LookupFunc: method is nil but LDCache.Lookup was just called") - } - callInfo := struct { - Strings []string - }{ - Strings: strings, - } - mock.lockLookup.Lock() - mock.calls.Lookup = append(mock.calls.Lookup, callInfo) - mock.lockLookup.Unlock() - return mock.LookupFunc(strings...) -} - -// LookupCalls gets all the calls that were made to Lookup. -// Check the length with: -// -// len(mockedLDCache.LookupCalls()) -func (mock *LDCacheMock) LookupCalls() []struct { - Strings []string -} { - var calls []struct { - Strings []string - } - mock.lockLookup.RLock() - calls = mock.calls.Lookup - mock.lockLookup.RUnlock() - return calls -} diff --git a/internal/ldconfig/ldconfig.go b/internal/ldconfig/ldconfig.go new file mode 100644 index 000000000..f3db1a77a --- /dev/null +++ b/internal/ldconfig/ldconfig.go @@ -0,0 +1,206 @@ +/** +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package ldconfig + +import ( + "fmt" + "os" + "os/exec" + "path/filepath" + "strings" + + "github.com/NVIDIA/nvidia-container-toolkit/internal/config" +) + +const ( + // ldsoconfdFilenamePattern specifies the pattern for the filename + // in ld.so.conf.d that includes references to the specified directories. + // The 00-nvcr prefix is chosen to ensure that these libraries have a + // higher precedence than other libraries on the system, but lower than + // the 00-cuda-compat that is included in some containers. + ldsoconfdFilenamePattern = "00-nvcr-*.conf" +) + +type Ldconfig struct { + ldconfigPath string + inRoot string +} + +// NewRunner creates an exec.Cmd that can be used to run ldconfig. +func NewRunner(id string, ldconfigPath string, containerRoot string, additionalargs ...string) (*exec.Cmd, error) { + args := []string{ + id, + strings.TrimPrefix(config.NormalizeLDConfigPath("@"+ldconfigPath), "@"), + containerRoot, + } + args = append(args, additionalargs...) + + return createReexecCommand(args) +} + +// New creates an Ldconfig struct that is used to perform operations on the +// ldcache and libraries in a particular root (e.g. a container). +func New(ldconfigPath string, inRoot string) (*Ldconfig, error) { + l := &Ldconfig{ + ldconfigPath: ldconfigPath, + inRoot: inRoot, + } + if ldconfigPath == "" { + return nil, fmt.Errorf("an ldconfig path must be specified") + } + if inRoot == "" || inRoot == "/" { + return nil, fmt.Errorf("ldconfig must be run in the non-system root") + } + return l, nil +} + +// CreateSonameSymlinks uses ldconfig to create the soname symlinks in the +// specified directories. +func (l *Ldconfig) CreateSonameSymlinks(directories ...string) error { + if len(directories) == 0 { + return nil + } + ldconfigPath, err := l.prepareRoot() + if err != nil { + return err + } + + args := []string{ + filepath.Base(ldconfigPath), + // Explicitly disable updating the LDCache. + "-N", + // Specify -n to only process the specified directories. + "-n", + } + args = append(args, directories...) + + return SafeExec(ldconfigPath, args, nil) +} + +func (l *Ldconfig) UpdateLDCache(directories ...string) error { + ldconfigPath, err := l.prepareRoot() + if err != nil { + return err + } + + args := []string{ + filepath.Base(ldconfigPath), + // Explicitly specify using /etc/ld.so.conf since the host's ldconfig may + // be configured to use a different config file by default. + "-f", "/etc/ld.so.conf", + } + + if l.ldcacheExists() { + args = append(args, "-C", "/etc/ld.so.cache") + } else { + args = append(args, "-N") + } + + // If the ld.so.conf.d directory exists, we create a config file there + // containing the required directories, otherwise we add the specified + // directories to the ldconfig command directly. + if l.ldsoconfdDirectoryExists() { + err := createLdsoconfdFile(ldsoconfdFilenamePattern, directories...) + if err != nil { + return fmt.Errorf("failed to update ld.so.conf.d: %w", err) + } + } else { + args = append(args, directories...) + } + + return SafeExec(ldconfigPath, args, nil) +} + +func (l *Ldconfig) prepareRoot() (string, error) { + // To prevent leaking the parent proc filesystem, we create a new proc mount + // in the specified root. + if err := mountProc(l.inRoot); err != nil { + return "", fmt.Errorf("error mounting /proc: %w", err) + } + + // We mount the host ldconfig before we pivot root since host paths are not + // visible after the pivot root operation. + ldconfigPath, err := mountLdConfig(l.ldconfigPath, l.inRoot) + if err != nil { + return "", fmt.Errorf("error mounting host ldconfig: %w", err) + } + + // We pivot to the container root for the new process, this further limits + // access to the host. + if err := pivotRoot(l.inRoot); err != nil { + return "", fmt.Errorf("error running pivot_root: %w", err) + } + + return ldconfigPath, nil +} + +func (l *Ldconfig) ldcacheExists() bool { + if _, err := os.Stat("/etc/ld.so.cache"); err != nil && os.IsNotExist(err) { + return false + } + return true +} + +func (l *Ldconfig) ldsoconfdDirectoryExists() bool { + info, err := os.Stat("/etc/ld.so.conf.d") + if os.IsNotExist(err) { + return false + } + return info.IsDir() +} + +// createLdsoconfdFile creates a file at /etc/ld.so.conf.d/. +// The file is created at /etc/ld.so.conf.d/{{ .pattern }} using `CreateTemp` and +// contains the specified directories on each line. +func createLdsoconfdFile(pattern string, dirs ...string) error { + if len(dirs) == 0 { + return nil + } + + ldsoconfdDir := "/etc/ld.so.conf.d" + if err := os.MkdirAll(ldsoconfdDir, 0755); err != nil { + return fmt.Errorf("failed to create ld.so.conf.d: %w", err) + } + + configFile, err := os.CreateTemp(ldsoconfdDir, pattern) + if err != nil { + return fmt.Errorf("failed to create config file: %w", err) + } + defer func() { + _ = configFile.Close() + }() + + added := make(map[string]bool) + for _, dir := range dirs { + if added[dir] { + continue + } + _, err = fmt.Fprintf(configFile, "%s\n", dir) + if err != nil { + return fmt.Errorf("failed to update config file: %w", err) + } + added[dir] = true + } + + // The created file needs to be world readable for the cases where the container is run as a non-root user. + if err := configFile.Chmod(0644); err != nil { + return fmt.Errorf("failed to chmod config file: %w", err) + } + + return nil +} diff --git a/internal/ldconfig/ldconfig_linux.go b/internal/ldconfig/ldconfig_linux.go new file mode 100644 index 000000000..3f5df22bf --- /dev/null +++ b/internal/ldconfig/ldconfig_linux.go @@ -0,0 +1,202 @@ +//go:build linux + +/** +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package ldconfig + +import ( + "errors" + "fmt" + "os" + "os/exec" + "path/filepath" + "strconv" + "syscall" + + securejoin "github.com/cyphar/filepath-securejoin" + "github.com/moby/sys/reexec" + + "github.com/opencontainers/runc/libcontainer/utils" + "golang.org/x/sys/unix" +) + +// pivotRoot will call pivot_root such that rootfs becomes the new root +// filesystem, and everything else is cleaned up. +// This is adapted from the implementation here: +// +// https://github.com/opencontainers/runc/blob/e89a29929c775025419ab0d218a43588b4c12b9a/libcontainer/rootfs_linux.go#L1056-L1113 +// +// With the `mount` and `unmount` calls changed to direct unix.Mount and unix.Unmount calls. +func pivotRoot(rootfs string) error { + // While the documentation may claim otherwise, pivot_root(".", ".") is + // actually valid. What this results in is / being the new root but + // /proc/self/cwd being the old root. Since we can play around with the cwd + // with pivot_root this allows us to pivot without creating directories in + // the rootfs. Shout-outs to the LXC developers for giving us this idea. + + oldroot, err := unix.Open("/", unix.O_DIRECTORY|unix.O_RDONLY, 0) + if err != nil { + return &os.PathError{Op: "open", Path: "/", Err: err} + } + defer unix.Close(oldroot) //nolint: errcheck + + newroot, err := unix.Open(rootfs, unix.O_DIRECTORY|unix.O_RDONLY, 0) + if err != nil { + return &os.PathError{Op: "open", Path: rootfs, Err: err} + } + defer unix.Close(newroot) //nolint: errcheck + + // Change to the new root so that the pivot_root actually acts on it. + if err := unix.Fchdir(newroot); err != nil { + return &os.PathError{Op: "fchdir", Path: "fd " + strconv.Itoa(newroot), Err: err} + } + + if err := unix.PivotRoot(".", "."); err != nil { + return &os.PathError{Op: "pivot_root", Path: ".", Err: err} + } + + // Currently our "." is oldroot (according to the current kernel code). + // However, purely for safety, we will fchdir(oldroot) since there isn't + // really any guarantee from the kernel what /proc/self/cwd will be after a + // pivot_root(2). + + if err := unix.Fchdir(oldroot); err != nil { + return &os.PathError{Op: "fchdir", Path: "fd " + strconv.Itoa(oldroot), Err: err} + } + + // Make oldroot rslave to make sure our unmounts don't propagate to the + // host (and thus bork the machine). We don't use rprivate because this is + // known to cause issues due to races where we still have a reference to a + // mount while a process in the host namespace are trying to operate on + // something they think has no mounts (devicemapper in particular). + if err := unix.Mount("", ".", "", unix.MS_SLAVE|unix.MS_REC, ""); err != nil { + return err + } + // Perform the unmount. MNT_DETACH allows us to unmount /proc/self/cwd. + if err := unix.Unmount(".", unix.MNT_DETACH); err != nil { + return err + } + + // Switch back to our shiny new root. + if err := unix.Chdir("/"); err != nil { + return &os.PathError{Op: "chdir", Path: "/", Err: err} + } + return nil +} + +// mountLdConfig mounts the host ldconfig to the mount namespace of the hook. +// We use WithProcfd to perform the mount operations to ensure that the changes +// are persisted across the pivot root. +func mountLdConfig(hostLdconfigPath string, containerRootDirPath string) (string, error) { + hostLdconfigInfo, err := os.Stat(hostLdconfigPath) + if err != nil { + return "", fmt.Errorf("error reading host ldconfig: %w", err) + } + + hookScratchDirPath := "/var/run/nvidia-ctk-hook" + ldconfigPath := filepath.Join(hookScratchDirPath, "ldconfig") + if err := utils.MkdirAllInRoot(containerRootDirPath, hookScratchDirPath, 0755); err != nil { + return "", fmt.Errorf("error creating hook scratch folder: %w", err) + } + + err = utils.WithProcfd(containerRootDirPath, hookScratchDirPath, func(hookScratchDirFdPath string) error { + return createTmpFs(hookScratchDirFdPath, int(hostLdconfigInfo.Size())) + + }) + if err != nil { + return "", fmt.Errorf("error creating tmpfs: %w", err) + } + + if _, err := createFileInRoot(containerRootDirPath, ldconfigPath, hostLdconfigInfo.Mode()); err != nil { + return "", fmt.Errorf("error creating ldconfig: %w", err) + } + + err = utils.WithProcfd(containerRootDirPath, ldconfigPath, func(ldconfigFdPath string) error { + return unix.Mount(hostLdconfigPath, ldconfigFdPath, "", unix.MS_BIND|unix.MS_RDONLY|unix.MS_NODEV|unix.MS_PRIVATE|unix.MS_NOSYMFOLLOW, "") + }) + if err != nil { + return "", fmt.Errorf("error bind mounting host ldconfig: %w", err) + } + + return ldconfigPath, nil +} + +func createFileInRoot(containerRootDirPath string, destinationPath string, mode os.FileMode) (string, error) { + dest, err := securejoin.SecureJoin(containerRootDirPath, destinationPath) + if err != nil { + return "", err + } + // Make the parent directory. + destDir, destBase := filepath.Split(dest) + destDirFd, err := utils.MkdirAllInRootOpen(containerRootDirPath, destDir, 0755) + if err != nil { + return "", fmt.Errorf("error creating parent dir: %w", err) + } + defer destDirFd.Close() + // Make the target file. We want to avoid opening any file that is + // already there because it could be a "bad" file like an invalid + // device or hung tty that might cause a DoS, so we use mknodat. + // destBase does not contain any "/" components, and mknodat does + // not follow trailing symlinks, so we can safely just call mknodat + // here. + if err := unix.Mknodat(int(destDirFd.Fd()), destBase, unix.S_IFREG|uint32(mode), 0); err != nil { + // If we get EEXIST, there was already an inode there and + // we can consider that a success. + if !errors.Is(err, unix.EEXIST) { + return "", fmt.Errorf("error creating empty file: %w", err) + } + } + return dest, nil +} + +// mountProc mounts a clean proc filesystem in the new root. +func mountProc(newroot string) error { + target, err := securejoin.SecureJoin(newroot, "proc") + if err != nil { + return err + } + if err := utils.MkdirAllInRoot(newroot, target, 0755); err != nil { + return err + } + return unix.Mount("proc", target, "proc", 0, "") +} + +// createTmpFs creates a tmpfs at the specified location with the specified size. +func createTmpFs(target string, size int) error { + return unix.Mount("tmpfs", target, "tmpfs", 0, fmt.Sprintf("size=%d", size)) +} + +// createReexecCommand creates a command that can be used to trigger the reexec +// initializer. +// On linux this command runs in new namespaces. +func createReexecCommand(args []string) (*exec.Cmd, error) { + cmd := reexec.Command(args...) + cmd.Stdin = os.Stdin + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + + cmd.SysProcAttr = &syscall.SysProcAttr{ + Cloneflags: syscall.CLONE_NEWNS | + syscall.CLONE_NEWUTS | + syscall.CLONE_NEWIPC | + syscall.CLONE_NEWPID | + syscall.CLONE_NEWNET, + } + + return cmd, nil +} diff --git a/internal/ldconfig/ldconfig_other.go b/internal/ldconfig/ldconfig_other.go new file mode 100644 index 000000000..c5d452a20 --- /dev/null +++ b/internal/ldconfig/ldconfig_other.go @@ -0,0 +1,41 @@ +//go:build !linux + +/** +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package ldconfig + +import ( + "fmt" + "os/exec" +) + +func pivotRoot(newroot string) error { + return fmt.Errorf("not supported") +} + +func mountLdConfig(hostLdconfigPath string, containerRootDirPath string) (string, error) { + return "", fmt.Errorf("not supported") +} + +func mountProc(newroot string) error { + return fmt.Errorf("not supported") +} + +func createReexecCommand(args []string) (*exec.Cmd, error) { + return nil, fmt.Errorf("not supported") +} diff --git a/internal/ldconfig/safe-exec_linux.go b/internal/ldconfig/safe-exec_linux.go new file mode 100644 index 000000000..09b6cc22c --- /dev/null +++ b/internal/ldconfig/safe-exec_linux.go @@ -0,0 +1,58 @@ +//go:build linux + +/** +# Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package ldconfig + +import ( + "fmt" + "os" + "strconv" + "syscall" + + "github.com/opencontainers/runc/libcontainer/exeseal" +) + +// SafeExec attempts to clone the specified binary (as an memfd, for example) before executing it. +func SafeExec(path string, args []string, envv []string) error { + safeExe, err := cloneBinary(path) + if err != nil { + //nolint:gosec // TODO: Can we harden this so that there is less risk of command injection + return syscall.Exec(path, args, envv) + } + defer safeExe.Close() + + exePath := "/proc/self/fd/" + strconv.Itoa(int(safeExe.Fd())) + //nolint:gosec // TODO: Can we harden this so that there is less risk of command injection + return syscall.Exec(exePath, args, envv) +} + +func cloneBinary(path string) (*os.File, error) { + exe, err := os.Open(path) + if err != nil { + return nil, fmt.Errorf("opening current binary: %w", err) + } + defer exe.Close() + + stat, err := exe.Stat() + if err != nil { + return nil, fmt.Errorf("checking %v size: %w", path, err) + } + size := stat.Size() + + return exeseal.CloneBinary(exe, size, path, os.TempDir()) +} diff --git a/internal/ldconfig/safe-exec_other.go b/internal/ldconfig/safe-exec_other.go new file mode 100644 index 000000000..3d0176458 --- /dev/null +++ b/internal/ldconfig/safe-exec_other.go @@ -0,0 +1,28 @@ +//go:build !linux + +/** +# Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package ldconfig + +import "syscall" + +// SafeExec is not implemented on non-linux systems and forwards directly to the +// Exec syscall. +func SafeExec(path string, args []string, envv []string) error { + //nolint:gosec // TODO: Can we harden this so that there is less risk of command injection + return syscall.Exec(path, args, envv) +} diff --git a/internal/lookup/device.go b/internal/lookup/device.go index 8ec6c4c91..e4fbe330f 100644 --- a/internal/lookup/device.go +++ b/internal/lookup/device.go @@ -28,9 +28,15 @@ const ( // NewCharDeviceLocator creates a Locator that can be used to find char devices at the specified root. A logger is // also specified. func NewCharDeviceLocator(opts ...Option) Locator { + filter := assertCharDevice + // TODO: We should have a better way to inject this logic than this envvar. + if os.Getenv("__NVCT_TESTING_DEVICES_ARE_FILES") == "true" { + filter = assertFile + } + opts = append(opts, WithSearchPaths("", devRoot), - WithFilter(assertCharDevice), + WithFilter(filter), ) return NewFileLocator( opts..., diff --git a/internal/lookup/ldcache.go b/internal/lookup/ldcache.go new file mode 100644 index 000000000..677dafaa6 --- /dev/null +++ b/internal/lookup/ldcache.go @@ -0,0 +1,118 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package lookup + +import ( + "fmt" + "path/filepath" + "slices" + + "github.com/NVIDIA/nvidia-container-toolkit/internal/ldcache" +) + +type ldcacheLocator struct { + *builder + resolvesTo map[string]string +} + +var _ Locator = (*ldcacheLocator)(nil) + +func NewLdcacheLocator(opts ...Option) Locator { + b := newBuilder(opts...) + + cache, err := ldcache.New(b.logger, b.root) + if err != nil { + b.logger.Warningf("Failed to load ldcache: %v", err) + if b.isOptional { + return &null{} + } + return ¬Found{} + } + + chain := NewSymlinkChainLocator(WithOptional(true)) + + resolvesTo := make(map[string]string) + _, libs64 := cache.List() + for _, library := range libs64 { + if _, processed := resolvesTo[library]; processed { + continue + } + candidates, err := chain.Locate(library) + if err != nil { + b.logger.Errorf("error processing library %s from ldcache: %v", library, err) + continue + } + + if len(candidates) == 0 { + resolvesTo[library] = library + continue + } + + // candidates represents a symlink chain. + // The first element represents the start of the chain and the last + // element the final target. + target := candidates[len(candidates)-1] + for _, candidate := range candidates { + resolvesTo[candidate] = target + } + } + + return &ldcacheLocator{ + builder: b, + resolvesTo: resolvesTo, + } +} + +// Locate finds the specified libraryname. +// If the input is a library name, the ldcache is searched otherwise the +// provided path is resolved as a symlink. +func (l ldcacheLocator) Locate(libname string) ([]string, error) { + var matcher func(string, string) bool + + if filepath.IsAbs(libname) { + matcher = func(p string, c string) bool { + m, _ := filepath.Match(filepath.Join(l.root, p), c) + return m + } + } else { + matcher = func(p string, c string) bool { + m, _ := filepath.Match(p, filepath.Base(c)) + return m + } + } + + var matches []string + seen := make(map[string]bool) + for name, target := range l.resolvesTo { + if !matcher(libname, name) { + continue + } + if seen[target] { + continue + } + seen[target] = true + matches = append(matches, target) + } + + slices.Sort(matches) + + if len(matches) == 0 && !l.isOptional { + return nil, fmt.Errorf("%s: %w", libname, ErrNotFound) + } + + return matches, nil +} diff --git a/internal/lookup/ldcache_test.go b/internal/lookup/ldcache_test.go new file mode 100644 index 000000000..66701a519 --- /dev/null +++ b/internal/lookup/ldcache_test.go @@ -0,0 +1,77 @@ +package lookup + +import ( + "path/filepath" + "testing" + + testlog "github.com/sirupsen/logrus/hooks/test" + "github.com/stretchr/testify/require" + + "github.com/NVIDIA/nvidia-container-toolkit/internal/test" +) + +func TestLDCacheLookup(t *testing.T) { + logger, _ := testlog.NewNullLogger() + + moduleRoot, err := test.GetModuleRoot() + require.NoError(t, err) + + testCases := []struct { + rootFs string + inputs []string + expected string + expectedError error + }{ + { + rootFs: "rootfs-empty", + inputs: []string{"libcuda.so.1", "libcuda.so.*", "libcuda.so.*.*", "libcuda.so.999.88.77"}, + expectedError: ErrNotFound, + }, + { + rootFs: "rootfs-1", + inputs: []string{ + "libcuda.so.1", + "libcuda.so.*", + "libcuda.so.*.*", + "libcuda.so.999.88.77", + "/lib/x86_64-linux-gnu/libcuda.so.1", + "/lib/x86_64-linux-gnu/libcuda.so.*", + "/lib/x86_64-linux-gnu/libcuda.so.*.*", + "/lib/x86_64-linux-gnu/libcuda.so.999.88.77", + }, + expected: "/lib/x86_64-linux-gnu/libcuda.so.999.88.77", + }, + { + rootFs: "rootfs-2", + inputs: []string{ + "libcuda.so.1", + "libcuda.so.*", + "libcuda.so.*.*", + "libcuda.so.999.88.77", + "/var/lib/nvidia/lib64/libcuda.so.1", + "/var/lib/nvidia/lib64/libcuda.so.*", + "/var/lib/nvidia/lib64/libcuda.so.*.*", + "/var/lib/nvidia/lib64/libcuda.so.999.88.77", + }, + expected: "/var/lib/nvidia/lib64/libcuda.so.999.88.77", + }, + } + + for _, tc := range testCases { + for _, input := range tc.inputs { + t.Run(tc.rootFs+" "+input, func(t *testing.T) { + rootfs := filepath.Join(moduleRoot, "testdata", "lookup", tc.rootFs) + l := NewLdcacheLocator( + WithLogger(logger), + WithRoot(rootfs), + ) + + candidates, err := l.Locate(input) + require.ErrorIs(t, err, tc.expectedError) + if tc.expectedError == nil { + require.Equal(t, []string{filepath.Join(rootfs, tc.expected)}, candidates) + } + }) + } + } +} diff --git a/internal/lookup/library.go b/internal/lookup/library.go index 7f5cf7c85..6c403d084 100644 --- a/internal/lookup/library.go +++ b/internal/lookup/library.go @@ -16,20 +16,6 @@ package lookup -import ( - "fmt" - - "github.com/NVIDIA/nvidia-container-toolkit/internal/ldcache" - "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" -) - -type ldcacheLocator struct { - logger logger.Interface - cache ldcache.LDCache -} - -var _ Locator = (*ldcacheLocator)(nil) - // NewLibraryLocator creates a library locator using the specified options. func NewLibraryLocator(opts ...Option) Locator { b := newBuilder(opts...) @@ -63,39 +49,7 @@ func NewLibraryLocator(opts ...Option) Locator { l := First( symlinkLocator, - newLdcacheLocator(opts...), + NewLdcacheLocator(opts...), ) return l } - -func newLdcacheLocator(opts ...Option) Locator { - b := newBuilder(opts...) - - cache, err := ldcache.New(b.logger, b.root) - if err != nil { - // If we failed to open the LDCache, we default to a symlink locator. - b.logger.Warningf("Failed to load ldcache: %v", err) - return nil - } - - return &ldcacheLocator{ - logger: b.logger, - cache: cache, - } -} - -// Locate finds the specified libraryname. -// If the input is a library name, the ldcache is searched otherwise the -// provided path is resolved as a symlink. -func (l ldcacheLocator) Locate(libname string) ([]string, error) { - paths32, paths64 := l.cache.Lookup(libname) - if len(paths32) > 0 { - l.logger.Warningf("Ignoring 32-bit libraries for %v: %v", libname, paths32) - } - - if len(paths64) == 0 { - return nil, fmt.Errorf("64-bit library %v: %w", libname, ErrNotFound) - } - - return paths64, nil -} diff --git a/internal/lookup/library_test.go b/internal/lookup/library_test.go index dd686b754..8837ae99a 100644 --- a/internal/lookup/library_test.go +++ b/internal/lookup/library_test.go @@ -24,82 +24,8 @@ import ( testlog "github.com/sirupsen/logrus/hooks/test" "github.com/stretchr/testify/require" - - "github.com/NVIDIA/nvidia-container-toolkit/internal/ldcache" ) -func TestLDCacheLocator(t *testing.T) { - logger, _ := testlog.NewNullLogger() - - testDir := t.TempDir() - symlinkDir := filepath.Join(testDir, "/lib/symlink") - require.NoError(t, os.MkdirAll(symlinkDir, 0755)) - - versionLib := filepath.Join(symlinkDir, "libcuda.so.1.2.3") - soLink := filepath.Join(symlinkDir, "libcuda.so") - sonameLink := filepath.Join(symlinkDir, "libcuda.so.1") - - _, err := os.Create(versionLib) - require.NoError(t, err) - require.NoError(t, os.Symlink(versionLib, sonameLink)) - require.NoError(t, os.Symlink(sonameLink, soLink)) - - lut := newLdcacheLocator( - WithLogger(logger), - WithRoot(testDir), - ) - - testCases := []struct { - description string - libname string - ldcacheMap map[string]string - expected []string - expectedError error - }{ - { - description: "lib only resolves in LDCache", - libname: "libcuda.so", - ldcacheMap: map[string]string{ - "libcuda.so": "/lib/from/ldcache/libcuda.so.4.5.6", - }, - expected: []string{"/lib/from/ldcache/libcuda.so.4.5.6"}, - }, - { - description: "lib only not in LDCache returns error", - libname: "libnotcuda.so", - expectedError: ErrNotFound, - }, - } - - for _, tc := range testCases { - t.Run(tc.description, func(t *testing.T) { - // We override the LDCache with a mock implementation - l := lut.(*ldcacheLocator) - l.cache = &ldcache.LDCacheMock{ - LookupFunc: func(strings ...string) ([]string, []string) { - var result []string - for _, s := range strings { - if v, ok := tc.ldcacheMap[s]; ok { - result = append(result, v) - } - } - return nil, result - }, - } - - candidates, err := lut.Locate(tc.libname) - require.ErrorIs(t, err, tc.expectedError) - - var cleanedCandidates []string - for _, c := range candidates { - // On MacOS /var and /tmp symlink to /private/var and /private/tmp which is included in the resolved path. - cleanedCandidates = append(cleanedCandidates, strings.TrimPrefix(c, "/private")) - } - require.EqualValues(t, tc.expected, cleanedCandidates) - }) - } -} - func TestLibraryLocator(t *testing.T) { logger, _ := testlog.NewNullLogger() diff --git a/internal/lookup/locator.go b/internal/lookup/locator.go index 73ade2322..9906327c4 100644 --- a/internal/lookup/locator.go +++ b/internal/lookup/locator.go @@ -18,7 +18,7 @@ package lookup import "errors" -//go:generate moq -stub -out locator_mock.go . Locator +//go:generate moq -rm -fmt=goimports -stub -out locator_mock.go . Locator // Locator defines the interface for locating files on a system. type Locator interface { diff --git a/internal/lookup/null.go b/internal/lookup/null.go new file mode 100644 index 000000000..938e481b4 --- /dev/null +++ b/internal/lookup/null.go @@ -0,0 +1,36 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package lookup + +import "fmt" + +// A null locator always returns an empty response. +type null struct { +} + +// Locate always returns empty for a null locator. +func (l *null) Locate(string) ([]string, error) { + return nil, nil +} + +// A notFound locator always returns an ErrNotFound error. +type notFound struct { +} + +func (l *notFound) Locate(s string) ([]string, error) { + return nil, fmt.Errorf("%s: %w", s, ErrNotFound) +} diff --git a/internal/lookup/root/root_test.go b/internal/lookup/root/root_test.go new file mode 100644 index 000000000..c256deb69 --- /dev/null +++ b/internal/lookup/root/root_test.go @@ -0,0 +1,81 @@ +/** +# Copyright 2023 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package root + +import ( + "path/filepath" + "testing" + + testlog "github.com/sirupsen/logrus/hooks/test" + "github.com/stretchr/testify/require" + + "github.com/NVIDIA/nvidia-container-toolkit/internal/lookup" + "github.com/NVIDIA/nvidia-container-toolkit/internal/test" +) + +func TestDriverLibrariesLocate(t *testing.T) { + logger, _ := testlog.NewNullLogger() + + moduleRoot, err := test.GetModuleRoot() + require.NoError(t, err) + + testCases := []struct { + rootFs string + inputs []string + expected string + expectedError error + }{ + { + rootFs: "rootfs-empty", + inputs: []string{"libcuda.so.1", "libcuda.so.*", "libcuda.so.*.*", "libcuda.so.999.88.77"}, + expectedError: lookup.ErrNotFound, + }, + { + rootFs: "rootfs-no-cache-lib64", + inputs: []string{"libcuda.so.1", "libcuda.so.*", "libcuda.so.*.*", "libcuda.so.999.88.77"}, + expected: "/usr/lib64/libcuda.so.999.88.77", + }, + { + rootFs: "rootfs-1", + inputs: []string{"libcuda.so.1", "libcuda.so.*", "libcuda.so.*.*", "libcuda.so.999.88.77"}, + expected: "/lib/x86_64-linux-gnu/libcuda.so.999.88.77", + }, + { + rootFs: "rootfs-2", + inputs: []string{"libcuda.so.1", "libcuda.so.*", "libcuda.so.*.*", "libcuda.so.999.88.77"}, + expected: "/var/lib/nvidia/lib64/libcuda.so.999.88.77", + }, + } + + for _, tc := range testCases { + for _, input := range tc.inputs { + t.Run(tc.rootFs+input, func(t *testing.T) { + rootfs := filepath.Join(moduleRoot, "testdata", "lookup", tc.rootFs) + driver := New( + WithLogger(logger), + WithDriverRoot(rootfs), + ) + + candidates, err := driver.Libraries().Locate(input) + require.ErrorIs(t, err, tc.expectedError) + if tc.expectedError == nil { + require.Equal(t, []string{filepath.Join(rootfs, tc.expected)}, candidates) + } + }) + } + } +} diff --git a/internal/lookup/symlinks.go b/internal/lookup/symlinks.go index aa4c147e0..c9bab069d 100644 --- a/internal/lookup/symlinks.go +++ b/internal/lookup/symlinks.go @@ -62,6 +62,7 @@ func (p symlinkChain) Locate(pattern string) ([]string, error) { return candidates, nil } + var filenames []string found := make(map[string]bool) for len(candidates) > 0 { candidate := candidates[0] @@ -70,6 +71,7 @@ func (p symlinkChain) Locate(pattern string) ([]string, error) { continue } found[candidate] = true + filenames = append(filenames, candidate) target, err := symlinks.Resolve(candidate) if err != nil { @@ -88,11 +90,6 @@ func (p symlinkChain) Locate(pattern string) ([]string, error) { candidates = append(candidates, target) } } - - var filenames []string - for f := range found { - filenames = append(filenames, f) - } return filenames, nil } diff --git a/internal/lookup/symlinks/symlink.go b/internal/lookup/symlinks/symlink.go index 991d47cb6..f9151a2f2 100644 --- a/internal/lookup/symlinks/symlink.go +++ b/internal/lookup/symlinks/symlink.go @@ -25,7 +25,7 @@ import ( func Resolve(filename string) (string, error) { info, err := os.Lstat(filename) if err != nil { - return filename, fmt.Errorf("failed to get file info: %v", info) + return filename, fmt.Errorf("failed to get file info: %w", err) } if info.Mode()&os.ModeSymlink == 0 { return filename, nil @@ -33,3 +33,18 @@ func Resolve(filename string) (string, error) { return os.Readlink(filename) } + +// ForceCreate creates a specified symlink. +// If a file (or empty directory) exists at the path it is removed. +func ForceCreate(target string, link string) error { + _, err := os.Lstat(link) + if err != nil && !os.IsNotExist(err) { + return fmt.Errorf("failed to get file info: %w", err) + } + if !os.IsNotExist(err) { + if err := os.Remove(link); err != nil { + return fmt.Errorf("failed to remove existing file: %w", err) + } + } + return os.Symlink(target, link) +} diff --git a/internal/modifier/cdi.go b/internal/modifier/cdi.go index c5af4f881..2a73a0543 100644 --- a/internal/modifier/cdi.go +++ b/internal/modifier/cdi.go @@ -28,17 +28,29 @@ import ( "github.com/NVIDIA/nvidia-container-toolkit/internal/modifier/cdi" "github.com/NVIDIA/nvidia-container-toolkit/internal/oci" "github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi" - "github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/spec" +) + +const ( + automaticDeviceVendor = "runtime.nvidia.com" + automaticDeviceClass = "gpu" + automaticDeviceKind = automaticDeviceVendor + "/" + automaticDeviceClass + automaticDevicePrefix = automaticDeviceKind + "=" ) // NewCDIModifier creates an OCI spec modifier that determines the modifications to make based on the // CDI specifications available on the system. The NVIDIA_VISIBLE_DEVICES environment variable is // used to select the devices to include. -func NewCDIModifier(logger logger.Interface, cfg *config.Config, ociSpec oci.Spec) (oci.SpecModifier, error) { - devices, err := getDevicesFromSpec(logger, ociSpec, cfg) - if err != nil { - return nil, fmt.Errorf("failed to get required devices from OCI specification: %v", err) - } +func NewCDIModifier(logger logger.Interface, cfg *config.Config, image image.CUDA, isJitCDI bool) (oci.SpecModifier, error) { + defaultKind := cfg.NVIDIAContainerRuntimeConfig.Modes.CDI.DefaultKind + if isJitCDI { + defaultKind = automaticDeviceKind + } + deviceRequestor := newCDIDeviceRequestor( + logger, + image, + defaultKind, + ) + devices := deviceRequestor.DeviceRequests() if len(devices) == 0 { logger.Debugf("No devices requested; no modification required.") return nil, nil @@ -65,89 +77,38 @@ func NewCDIModifier(logger logger.Interface, cfg *config.Config, ociSpec oci.Spe ) } -func getDevicesFromSpec(logger logger.Interface, ociSpec oci.Spec, cfg *config.Config) ([]string, error) { - rawSpec, err := ociSpec.Load() - if err != nil { - return nil, fmt.Errorf("failed to load OCI spec: %v", err) - } +type deviceRequestor interface { + DeviceRequests() []string +} - annotationDevices, err := getAnnotationDevices(cfg.NVIDIAContainerRuntimeConfig.Modes.CDI.AnnotationPrefixes, rawSpec.Annotations) - if err != nil { - return nil, fmt.Errorf("failed to parse container annotations: %v", err) - } - if len(annotationDevices) > 0 { - return annotationDevices, nil - } +type cdiDeviceRequestor struct { + image image.CUDA + logger logger.Interface + defaultKind string +} - container, err := image.NewCUDAImageFromSpec(rawSpec) - if err != nil { - return nil, err +func newCDIDeviceRequestor(logger logger.Interface, image image.CUDA, defaultKind string) deviceRequestor { + c := &cdiDeviceRequestor{ + logger: logger, + image: image, + defaultKind: defaultKind, } - if cfg.AcceptDeviceListAsVolumeMounts { - mountDevices := container.CDIDevicesFromMounts() - if len(mountDevices) > 0 { - return mountDevices, nil - } - } - - envDevices := container.DevicesFromEnvvars(visibleDevicesEnvvar) + return withUniqueDevices(c) +} +func (c *cdiDeviceRequestor) DeviceRequests() []string { + if c == nil { + return nil + } var devices []string - seen := make(map[string]bool) - for _, name := range envDevices.List() { + for _, name := range c.image.VisibleDevices() { if !parser.IsQualifiedName(name) { - name = fmt.Sprintf("%s=%s", cfg.NVIDIAContainerRuntimeConfig.Modes.CDI.DefaultKind, name) - } - if seen[name] { - logger.Debugf("Ignoring duplicate device %q", name) - continue + name = fmt.Sprintf("%s=%s", c.defaultKind, name) } devices = append(devices, name) } - if len(devices) == 0 { - return nil, nil - } - - if cfg.AcceptEnvvarUnprivileged || image.IsPrivileged(rawSpec) { - return devices, nil - } - - logger.Warningf("Ignoring devices specified in NVIDIA_VISIBLE_DEVICES: %v", devices) - - return nil, nil -} - -// getAnnotationDevices returns a list of devices specified in the annotations. -// Keys starting with the specified prefixes are considered and expected to contain a comma-separated list of -// fully-qualified CDI devices names. If any device name is not fully-quality an error is returned. -// The list of returned devices is deduplicated. -func getAnnotationDevices(prefixes []string, annotations map[string]string) ([]string, error) { - devicesByKey := make(map[string][]string) - for key, value := range annotations { - for _, prefix := range prefixes { - if strings.HasPrefix(key, prefix) { - devicesByKey[key] = strings.Split(value, ",") - } - } - } - - seen := make(map[string]bool) - var annotationDevices []string - for key, devices := range devicesByKey { - for _, device := range devices { - if !parser.IsQualifiedName(device) { - return nil, fmt.Errorf("invalid device name %q in annotation %q", device, key) - } - if seen[device] { - continue - } - annotationDevices = append(annotationDevices, device) - seen[device] = true - } - } - - return annotationDevices, nil + return devices } // filterAutomaticDevices searches for "automatic" device names in the input slice. @@ -157,63 +118,68 @@ func getAnnotationDevices(prefixes []string, annotations map[string]string) ([]s func filterAutomaticDevices(devices []string) []string { var automatic []string for _, device := range devices { - vendor, class, _ := parser.ParseDevice(device) - if vendor == "runtime.nvidia.com" && class == "gpu" { - automatic = append(automatic, device) + if !strings.HasPrefix(device, automaticDevicePrefix) { + continue } + automatic = append(automatic, device) } return automatic } func newAutomaticCDISpecModifier(logger logger.Interface, cfg *config.Config, devices []string) (oci.SpecModifier, error) { logger.Debugf("Generating in-memory CDI specs for devices %v", devices) - spec, err := generateAutomaticCDISpec(logger, cfg, devices) - if err != nil { - return nil, fmt.Errorf("failed to generate CDI spec: %w", err) - } - cdiModifier, err := cdi.New( - cdi.WithLogger(logger), - cdi.WithSpec(spec.Raw()), - ) - if err != nil { - return nil, fmt.Errorf("failed to construct CDI modifier: %w", err) - } - return cdiModifier, nil -} + var identifiers []string + for _, device := range devices { + identifiers = append(identifiers, strings.TrimPrefix(device, automaticDevicePrefix)) + } -func generateAutomaticCDISpec(logger logger.Interface, cfg *config.Config, devices []string) (spec.Interface, error) { cdilib, err := nvcdi.New( nvcdi.WithLogger(logger), nvcdi.WithNVIDIACDIHookPath(cfg.NVIDIACTKConfig.Path), nvcdi.WithDriverRoot(cfg.NVIDIAContainerCLIConfig.Root), - nvcdi.WithVendor("runtime.nvidia.com"), - nvcdi.WithClass("gpu"), + nvcdi.WithVendor(automaticDeviceVendor), + nvcdi.WithClass(automaticDeviceClass), ) if err != nil { return nil, fmt.Errorf("failed to construct CDI library: %w", err) } - identifiers := []string{} - for _, device := range devices { - _, _, id := parser.ParseDevice(device) - identifiers = append(identifiers, id) - } - - deviceSpecs, err := cdilib.GetDeviceSpecsByID(identifiers...) + spec, err := cdilib.GetSpec(identifiers...) if err != nil { - return nil, fmt.Errorf("failed to get CDI device specs: %w", err) + return nil, fmt.Errorf("failed to generate CDI spec: %w", err) } - - commonEdits, err := cdilib.GetCommonEdits() + cdiDeviceRequestor, err := cdi.New( + cdi.WithLogger(logger), + cdi.WithSpec(spec.Raw()), + ) if err != nil { - return nil, fmt.Errorf("failed to get common CDI spec edits: %w", err) + return nil, fmt.Errorf("failed to construct CDI modifier: %w", err) } - return spec.New( - spec.WithDeviceSpecs(deviceSpecs), - spec.WithEdits(*commonEdits.ContainerEdits), - spec.WithVendor("runtime.nvidia.com"), - spec.WithClass("gpu"), - ) + return cdiDeviceRequestor, nil +} + +type deduplicatedDeviceRequestor struct { + deviceRequestor +} + +func withUniqueDevices(deviceRequestor deviceRequestor) deviceRequestor { + return &deduplicatedDeviceRequestor{deviceRequestor: deviceRequestor} +} + +func (d *deduplicatedDeviceRequestor) DeviceRequests() []string { + if d == nil { + return nil + } + seen := make(map[string]bool) + var devices []string + for _, device := range d.deviceRequestor.DeviceRequests() { + if seen[device] { + continue + } + seen[device] = true + devices = append(devices, device) + } + return devices } diff --git a/internal/modifier/cdi_test.go b/internal/modifier/cdi_test.go index 88ff697ab..0163e4ce0 100644 --- a/internal/modifier/cdi_test.go +++ b/internal/modifier/cdi_test.go @@ -17,76 +17,156 @@ package modifier import ( - "fmt" "testing" + "github.com/opencontainers/runtime-spec/specs-go" + testlog "github.com/sirupsen/logrus/hooks/test" "github.com/stretchr/testify/require" + + "github.com/NVIDIA/nvidia-container-toolkit/internal/config/image" ) -func TestGetAnnotationDevices(t *testing.T) { +func TestDeviceRequests(t *testing.T) { + logger, _ := testlog.NewNullLogger() + testCases := []struct { description string + input cdiDeviceRequestor + spec *specs.Spec prefixes []string - annotations map[string]string expectedDevices []string - expectedError error }{ { - description: "no annotations", + description: "empty spec yields no devices", + }, + { + description: "cdi devices from mounts", + input: cdiDeviceRequestor{ + defaultKind: "nvidia.com/gpu", + }, + spec: &specs.Spec{ + Mounts: []specs.Mount{ + { + Destination: "/var/run/nvidia-container-devices/cdi/nvidia.com/gpu/0", + Source: "/dev/null", + }, + { + Destination: "/var/run/nvidia-container-devices/cdi/nvidia.com/gpu/1", + Source: "/dev/null", + }, + }, + }, + expectedDevices: []string{"nvidia.com/gpu=0", "nvidia.com/gpu=1"}, + }, + { + description: "cdi devices from envvar", + input: cdiDeviceRequestor{ + defaultKind: "nvidia.com/gpu", + }, + spec: &specs.Spec{ + Process: &specs.Process{ + Env: []string{"NVIDIA_VISIBLE_DEVICES=0,example.com/class=device"}, + }, + }, + expectedDevices: []string{"nvidia.com/gpu=0", "example.com/class=device"}, + }, + { + description: "cdi devices from envvar with default kind", + input: cdiDeviceRequestor{ + defaultKind: "runtime.nvidia.com/gpu", + }, + spec: &specs.Spec{ + Process: &specs.Process{ + Env: []string{"NVIDIA_VISIBLE_DEVICES=all"}, + }, + }, + expectedDevices: []string{"runtime.nvidia.com/gpu=all"}, }, { description: "no matching annotations", prefixes: []string{"not-prefix/"}, - annotations: map[string]string{ - "prefix/foo": "example.com/device=bar", + spec: &specs.Spec{ + Annotations: map[string]string{ + "prefix/foo": "example.com/device=bar", + }, }, }, { description: "single matching annotation", prefixes: []string{"prefix/"}, - annotations: map[string]string{ - "prefix/foo": "example.com/device=bar", + spec: &specs.Spec{ + Annotations: map[string]string{ + "prefix/foo": "example.com/device=bar", + }, }, expectedDevices: []string{"example.com/device=bar"}, }, { description: "multiple matching annotations", prefixes: []string{"prefix/", "another-prefix/"}, - annotations: map[string]string{ - "prefix/foo": "example.com/device=bar", - "another-prefix/bar": "example.com/device=baz", + spec: &specs.Spec{ + Annotations: map[string]string{ + "prefix/foo": "example.com/device=bar", + "another-prefix/bar": "example.com/device=baz", + }, }, - expectedDevices: []string{"example.com/device=bar", "example.com/device=baz"}, + expectedDevices: []string{"example.com/device=baz", "example.com/device=bar"}, }, { description: "multiple matching annotations with duplicate devices", prefixes: []string{"prefix/", "another-prefix/"}, - annotations: map[string]string{ - "prefix/foo": "example.com/device=bar", - "another-prefix/bar": "example.com/device=bar", + spec: &specs.Spec{ + Annotations: map[string]string{ + "prefix/foo": "example.com/device=bar", + "another-prefix/bar": "example.com/device=bar", + }, }, - expectedDevices: []string{"example.com/device=bar"}, + expectedDevices: []string{"example.com/device=bar", "example.com/device=bar"}, }, { - description: "invalid devices", - prefixes: []string{"prefix/"}, - annotations: map[string]string{ - "prefix/foo": "example.com/device", + description: "devices in annotations are expanded", + input: cdiDeviceRequestor{ + defaultKind: "nvidia.com/gpu", + }, + prefixes: []string{"prefix/"}, + spec: &specs.Spec{ + Annotations: map[string]string{ + "prefix/foo": "device", + }, + }, + expectedDevices: []string{"nvidia.com/gpu=device"}, + }, + { + description: "invalid devices in annotations are treated as strings", + input: cdiDeviceRequestor{ + defaultKind: "nvidia.com/gpu", + }, + prefixes: []string{"prefix/"}, + spec: &specs.Spec{ + Annotations: map[string]string{ + "prefix/foo": "example.com/device", + }, }, - expectedError: fmt.Errorf("invalid device %q", "example.com/device"), + expectedDevices: []string{"nvidia.com/gpu=example.com/device"}, }, } for _, tc := range testCases { - t.Run(tc.description, func(t *testing.T) { - devices, err := getAnnotationDevices(tc.prefixes, tc.annotations) - if tc.expectedError != nil { - require.Error(t, err) - return - } + tc.input.logger = logger + + image, err := image.NewCUDAImageFromSpec( + tc.spec, + image.WithAcceptDeviceListAsVolumeMounts(true), + image.WithAcceptEnvvarUnprivileged(true), + image.WithAnnotationsPrefixes(tc.prefixes), + ) + require.NoError(t, err) + tc.input.image = image + t.Run(tc.description, func(t *testing.T) { + devices := tc.input.DeviceRequests() require.NoError(t, err) - require.ElementsMatch(t, tc.expectedDevices, devices) + require.EqualValues(t, tc.expectedDevices, devices) }) } } diff --git a/internal/modifier/csv.go b/internal/modifier/csv.go index 0905d5daa..1f8a12f83 100644 --- a/internal/modifier/csv.go +++ b/internal/modifier/csv.go @@ -30,23 +30,16 @@ import ( "github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi" ) -const ( - visibleDevicesEnvvar = "NVIDIA_VISIBLE_DEVICES" - visibleDevicesVoid = "void" - - nvidiaRequireJetpackEnvvar = "NVIDIA_REQUIRE_JETPACK" -) - // NewCSVModifier creates a modifier that applies modications to an OCI spec if required by the runtime wrapper. // The modifications are defined by CSV MountSpecs. -func NewCSVModifier(logger logger.Interface, cfg *config.Config, image image.CUDA) (oci.SpecModifier, error) { - if devices := image.DevicesFromEnvvars(visibleDevicesEnvvar); len(devices.List()) == 0 { +func NewCSVModifier(logger logger.Interface, cfg *config.Config, container image.CUDA) (oci.SpecModifier, error) { + if devices := container.VisibleDevices(); len(devices) == 0 { logger.Infof("No modification required; no devices requested") return nil, nil } logger.Infof("Constructing modifier from config: %+v", *cfg) - if err := checkRequirements(logger, image); err != nil { + if err := checkRequirements(logger, container); err != nil { return nil, fmt.Errorf("requirements not met: %v", err) } @@ -55,7 +48,7 @@ func NewCSVModifier(logger logger.Interface, cfg *config.Config, image image.CUD return nil, fmt.Errorf("failed to get list of CSV files: %v", err) } - if image.Getenv(nvidiaRequireJetpackEnvvar) != "csv-mounts=all" { + if container.Getenv(image.EnvVarNvidiaRequireJetpack) != "csv-mounts=all" { csvFiles = csv.BaseFilesOnly(csvFiles) } @@ -75,20 +68,10 @@ func NewCSVModifier(logger logger.Interface, cfg *config.Config, image image.CUD return nil, fmt.Errorf("failed to get CDI spec: %v", err) } - cdiModifier, err := cdi.New( + return cdi.New( cdi.WithLogger(logger), cdi.WithSpec(spec.Raw()), ) - if err != nil { - return nil, fmt.Errorf("failed to construct CDI modifier: %v", err) - } - - modifiers := Merge( - nvidiaContainerRuntimeHookRemover{logger}, - cdiModifier, - ) - - return modifiers, nil } func checkRequirements(logger logger.Interface, image image.CUDA) error { diff --git a/internal/modifier/csv_test.go b/internal/modifier/csv_test.go index 8e5f60b0e..cdd41ce70 100644 --- a/internal/modifier/csv_test.go +++ b/internal/modifier/csv_test.go @@ -19,7 +19,6 @@ package modifier import ( "testing" - "github.com/opencontainers/runtime-spec/specs-go" testlog "github.com/sirupsen/logrus/hooks/test" "github.com/stretchr/testify/require" @@ -74,66 +73,3 @@ func TestNewCSVModifier(t *testing.T) { }) } } - -func TestCSVModifierRemovesHook(t *testing.T) { - logger, _ := testlog.NewNullLogger() - - testCases := []struct { - description string - spec *specs.Spec - expectedError error - expectedSpec *specs.Spec - }{ - { - description: "modification removes existing nvidia-container-runtime-hook", - spec: &specs.Spec{ - Hooks: &specs.Hooks{ - Prestart: []specs.Hook{ - { - Path: "/path/to/nvidia-container-runtime-hook", - Args: []string{"/path/to/nvidia-container-runtime-hook", "prestart"}, - }, - }, - }, - }, - expectedSpec: &specs.Spec{ - Hooks: &specs.Hooks{ - Prestart: []specs.Hook{}, - }, - }, - }, - { - description: "modification removes existing nvidia-container-toolkit", - spec: &specs.Spec{ - Hooks: &specs.Hooks{ - Prestart: []specs.Hook{ - { - Path: "/path/to/nvidia-container-toolkit", - Args: []string{"/path/to/nvidia-container-toolkit", "prestart"}, - }, - }, - }, - }, - expectedSpec: &specs.Spec{ - Hooks: &specs.Hooks{ - Prestart: []specs.Hook{}, - }, - }, - }, - } - - for _, tc := range testCases { - t.Run(tc.description, func(t *testing.T) { - m := nvidiaContainerRuntimeHookRemover{logger: logger} - - err := m.Modify(tc.spec) - if tc.expectedError != nil { - require.Error(t, err) - } else { - require.NoError(t, err) - } - - require.Empty(t, tc.spec.Hooks.Prestart) - }) - } -} diff --git a/internal/modifier/gated.go b/internal/modifier/gated.go index 5bed3eaf2..e96946a44 100644 --- a/internal/modifier/gated.go +++ b/internal/modifier/gated.go @@ -23,6 +23,7 @@ import ( "github.com/NVIDIA/nvidia-container-toolkit/internal/config/image" "github.com/NVIDIA/nvidia-container-toolkit/internal/discover" "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" + "github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/root" "github.com/NVIDIA/nvidia-container-toolkit/internal/oci" ) @@ -35,8 +36,8 @@ import ( // NVIDIA_GDRCOPY=enabled // // If not devices are selected, no changes are made. -func NewFeatureGatedModifier(logger logger.Interface, cfg *config.Config, image image.CUDA) (oci.SpecModifier, error) { - if devices := image.DevicesFromEnvvars(visibleDevicesEnvvar); len(devices.List()) == 0 { +func NewFeatureGatedModifier(logger logger.Interface, cfg *config.Config, image image.CUDA, driver *root.Driver, hookCreator discover.HookCreator) (oci.SpecModifier, error) { + if devices := image.VisibleDevices(); len(devices) == 0 { logger.Infof("No modification required; no devices requested") return nil, nil } @@ -46,7 +47,7 @@ func NewFeatureGatedModifier(logger logger.Interface, cfg *config.Config, image driverRoot := cfg.NVIDIAContainerCLIConfig.Root devRoot := cfg.NVIDIAContainerCLIConfig.Root - if cfg.Features.IsEnabled(config.FeatureGDS, image) { + if image.Getenv("NVIDIA_GDS") == "enabled" { d, err := discover.NewGDSDiscoverer(logger, driverRoot, devRoot) if err != nil { return nil, fmt.Errorf("failed to construct discoverer for GDS devices: %w", err) @@ -54,7 +55,7 @@ func NewFeatureGatedModifier(logger logger.Interface, cfg *config.Config, image discoverers = append(discoverers, d) } - if cfg.Features.IsEnabled(config.FeatureMOFED, image) { + if image.Getenv("NVIDIA_MOFED") == "enabled" { d, err := discover.NewMOFEDDiscoverer(logger, devRoot) if err != nil { return nil, fmt.Errorf("failed to construct discoverer for MOFED devices: %w", err) @@ -62,7 +63,7 @@ func NewFeatureGatedModifier(logger logger.Interface, cfg *config.Config, image discoverers = append(discoverers, d) } - if cfg.Features.IsEnabled(config.FeatureNVSWITCH, image) { + if image.Getenv("NVIDIA_NVSWITCH") == "enabled" { d, err := discover.NewNvSwitchDiscoverer(logger, devRoot) if err != nil { return nil, fmt.Errorf("failed to construct discoverer for NVSWITCH devices: %w", err) @@ -70,7 +71,7 @@ func NewFeatureGatedModifier(logger logger.Interface, cfg *config.Config, image discoverers = append(discoverers, d) } - if cfg.Features.IsEnabled(config.FeatureGDRCopy, image) { + if image.Getenv("NVIDIA_GDRCOPY") == "enabled" { d, err := discover.NewGDRCopyDiscoverer(logger, devRoot) if err != nil { return nil, fmt.Errorf("failed to construct discoverer for GDRCopy devices: %w", err) @@ -78,5 +79,41 @@ func NewFeatureGatedModifier(logger logger.Interface, cfg *config.Config, image discoverers = append(discoverers, d) } + // If the feature flag has explicitly been toggled, we don't make any modification. + if !cfg.Features.DisableCUDACompatLibHook.IsEnabled() { + cudaCompatDiscoverer, err := getCudaCompatModeDiscoverer(logger, cfg, driver, hookCreator) + if err != nil { + return nil, fmt.Errorf("failed to construct CUDA Compat discoverer: %w", err) + } + discoverers = append(discoverers, cudaCompatDiscoverer) + } + return NewModifierFromDiscoverer(logger, discover.Merge(discoverers...)) } + +func getCudaCompatModeDiscoverer(logger logger.Interface, cfg *config.Config, driver *root.Driver, hookCreator discover.HookCreator) (discover.Discover, error) { + // For legacy mode, we only include the enable-cuda-compat hook if cuda-compat-mode is set to hook. + if cfg.NVIDIAContainerRuntimeConfig.Mode == "legacy" && cfg.NVIDIAContainerRuntimeConfig.Modes.Legacy.CUDACompatMode != config.CUDACompatModeHook { + return nil, nil + } + + compatLibHookDiscoverer := discover.NewCUDACompatHookDiscoverer(logger, hookCreator, driver) + // For non-legacy modes we return the hook as is. These modes *should* already include the update-ldcache hook. + if cfg.NVIDIAContainerRuntimeConfig.Mode != "legacy" { + return compatLibHookDiscoverer, nil + } + + // For legacy mode, we also need to inject a hook to update the LDCache + // after we have modifed the configuration. + ldcacheUpdateHookDiscoverer, err := discover.NewLDCacheUpdateHook( + logger, + discover.None{}, + hookCreator, + "", + ) + if err != nil { + return nil, fmt.Errorf("failed to construct ldcache update discoverer: %w", err) + } + + return discover.Merge(compatLibHookDiscoverer, ldcacheUpdateHookDiscoverer), nil +} diff --git a/internal/modifier/graphics.go b/internal/modifier/graphics.go index d9784d5ea..cd024a892 100644 --- a/internal/modifier/graphics.go +++ b/internal/modifier/graphics.go @@ -29,18 +29,17 @@ import ( // NewGraphicsModifier constructs a modifier that injects graphics-related modifications into an OCI runtime specification. // The value of the NVIDIA_DRIVER_CAPABILITIES environment variable is checked to determine if this modification should be made. -func NewGraphicsModifier(logger logger.Interface, cfg *config.Config, image image.CUDA, driver *root.Driver) (oci.SpecModifier, error) { - if required, reason := requiresGraphicsModifier(image); !required { - logger.Infof("No graphics modifier required: %v", reason) +func NewGraphicsModifier(logger logger.Interface, cfg *config.Config, container image.CUDA, driver *root.Driver, hookCreator discover.HookCreator) (oci.SpecModifier, error) { + devices, reason := requiresGraphicsModifier(container) + if len(devices) == 0 { + logger.Infof("No graphics modifier required; %v", reason) return nil, nil } - nvidiaCDIHookPath := cfg.NVIDIACTKConfig.Path - mounts, err := discover.NewGraphicsMountsDiscoverer( logger, driver, - nvidiaCDIHookPath, + hookCreator, ) if err != nil { return nil, fmt.Errorf("failed to create mounts discoverer: %v", err) @@ -50,9 +49,9 @@ func NewGraphicsModifier(logger logger.Interface, cfg *config.Config, image imag devRoot := driver.Root drmNodes, err := discover.NewDRMNodesDiscoverer( logger, - image.DevicesFromEnvvars(visibleDevicesEnvvar), + image.NewVisibleDevices(devices...), devRoot, - nvidiaCDIHookPath, + hookCreator, ) if err != nil { return nil, fmt.Errorf("failed to construct discoverer: %v", err) @@ -66,14 +65,15 @@ func NewGraphicsModifier(logger logger.Interface, cfg *config.Config, image imag } // requiresGraphicsModifier determines whether a graphics modifier is required. -func requiresGraphicsModifier(cudaImage image.CUDA) (bool, string) { - if devices := cudaImage.DevicesFromEnvvars(visibleDevicesEnvvar); len(devices.List()) == 0 { - return false, "no devices requested" +func requiresGraphicsModifier(cudaImage image.CUDA) ([]string, string) { + devices := cudaImage.VisibleDevices() + if len(devices) == 0 { + return nil, "no devices requested" } if !cudaImage.GetDriverCapabilities().Any(image.DriverCapabilityGraphics, image.DriverCapabilityDisplay) { - return false, "no required capabilities requested" + return nil, "no required capabilities requested" } - return true, "" + return devices, "" } diff --git a/internal/modifier/graphics_test.go b/internal/modifier/graphics_test.go index 186af48a2..540fee5a3 100644 --- a/internal/modifier/graphics_test.go +++ b/internal/modifier/graphics_test.go @@ -26,9 +26,9 @@ import ( func TestGraphicsModifier(t *testing.T) { testCases := []struct { - description string - envmap map[string]string - expectedRequired bool + description string + envmap map[string]string + expectedDevices []string }{ { description: "empty image does not create modifier", @@ -52,7 +52,7 @@ func TestGraphicsModifier(t *testing.T) { "NVIDIA_VISIBLE_DEVICES": "all", "NVIDIA_DRIVER_CAPABILITIES": "all", }, - expectedRequired: true, + expectedDevices: []string{"all"}, }, { description: "devices with graphics capability creates modifier", @@ -60,7 +60,7 @@ func TestGraphicsModifier(t *testing.T) { "NVIDIA_VISIBLE_DEVICES": "all", "NVIDIA_DRIVER_CAPABILITIES": "graphics", }, - expectedRequired: true, + expectedDevices: []string{"all"}, }, { description: "devices with compute,graphics capability creates modifier", @@ -68,7 +68,7 @@ func TestGraphicsModifier(t *testing.T) { "NVIDIA_VISIBLE_DEVICES": "all", "NVIDIA_DRIVER_CAPABILITIES": "compute,graphics", }, - expectedRequired: true, + expectedDevices: []string{"all"}, }, { description: "devices with display capability creates modifier", @@ -76,7 +76,7 @@ func TestGraphicsModifier(t *testing.T) { "NVIDIA_VISIBLE_DEVICES": "all", "NVIDIA_DRIVER_CAPABILITIES": "display", }, - expectedRequired: true, + expectedDevices: []string{"all"}, }, { description: "devices with display,graphics capability creates modifier", @@ -84,7 +84,7 @@ func TestGraphicsModifier(t *testing.T) { "NVIDIA_VISIBLE_DEVICES": "all", "NVIDIA_DRIVER_CAPABILITIES": "display,graphics", }, - expectedRequired: true, + expectedDevices: []string{"all"}, }, } @@ -94,7 +94,7 @@ func TestGraphicsModifier(t *testing.T) { image.WithEnvMap(tc.envmap), ) required, _ := requiresGraphicsModifier(image) - require.EqualValues(t, tc.expectedRequired, required) + require.EqualValues(t, tc.expectedDevices, required) }) } } diff --git a/internal/modifier/hook_remover.go b/internal/modifier/hook_remover.go index 059cd8af9..24cf76662 100644 --- a/internal/modifier/hook_remover.go +++ b/internal/modifier/hook_remover.go @@ -33,6 +33,13 @@ type nvidiaContainerRuntimeHookRemover struct { var _ oci.SpecModifier = (*nvidiaContainerRuntimeHookRemover)(nil) +// NewNvidiaContainerRuntimeHookRemover creates a modifier that removes any NVIDIA Container Runtime hooks from the provided spec. +func NewNvidiaContainerRuntimeHookRemover(logger logger.Interface) oci.SpecModifier { + return nvidiaContainerRuntimeHookRemover{ + logger: logger, + } +} + // Modify removes any NVIDIA Container Runtime hooks from the provided spec func (m nvidiaContainerRuntimeHookRemover) Modify(spec *specs.Spec) error { if spec == nil { diff --git a/internal/modifier/list.go b/internal/modifier/list.go index b6d040e6a..d1ce9d642 100644 --- a/internal/modifier/list.go +++ b/internal/modifier/list.go @@ -22,14 +22,12 @@ import ( "github.com/NVIDIA/nvidia-container-toolkit/internal/oci" ) -type list struct { - modifiers []oci.SpecModifier -} +type List []oci.SpecModifier // Merge merges a set of OCI specification modifiers as a list. // This can be used to compose modifiers. func Merge(modifiers ...oci.SpecModifier) oci.SpecModifier { - var filteredModifiers []oci.SpecModifier + var filteredModifiers List for _, m := range modifiers { if m == nil { continue @@ -37,19 +35,19 @@ func Merge(modifiers ...oci.SpecModifier) oci.SpecModifier { filteredModifiers = append(filteredModifiers, m) } - return list{ - modifiers: filteredModifiers, - } + return filteredModifiers } // Modify applies a list of modifiers in sequence and returns on any errors encountered. -func (m list) Modify(spec *specs.Spec) error { - for _, mm := range m.modifiers { +func (m List) Modify(spec *specs.Spec) error { + for _, mm := range m { + if mm == nil { + continue + } err := mm.Modify(spec) if err != nil { return err } } - return nil } diff --git a/internal/nvsandboxutils/api.go b/internal/nvsandboxutils/api.go new file mode 100644 index 000000000..6275a5c21 --- /dev/null +++ b/internal/nvsandboxutils/api.go @@ -0,0 +1,45 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package nvsandboxutils + +// libraryOptions hold the parameters than can be set by a LibraryOption +type libraryOptions struct { + path string + flags int +} + +// LibraryOption represents a functional option to configure the underlying nvsandboxutils library +type LibraryOption func(*libraryOptions) + +// WithLibraryPath provides an option to set the library name to be used by the nvsandboxutils library. +func WithLibraryPath(path string) LibraryOption { + return func(o *libraryOptions) { + o.path = path + } +} + +// SetLibraryOptions applies the specified options to the nvsandboxutils library. +// If this is called when a library is already loaded, an error is raised. +func SetLibraryOptions(opts ...LibraryOption) error { + libnvsandboxutils.Lock() + defer libnvsandboxutils.Unlock() + if libnvsandboxutils.refcount != 0 { + return errLibraryAlreadyLoaded + } + libnvsandboxutils.init(opts...) + return nil +} diff --git a/internal/nvsandboxutils/cgo_helpers.h b/internal/nvsandboxutils/cgo_helpers.h new file mode 100644 index 000000000..23b3c256b --- /dev/null +++ b/internal/nvsandboxutils/cgo_helpers.h @@ -0,0 +1,25 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +// WARNING: THIS FILE WAS AUTOMATICALLY GENERATED. +// Code generated by https://git.io/c-for-go. DO NOT EDIT. + +#include "nvsandboxutils.h" +#include +#pragma once + +#define __CGOGEN 1 + diff --git a/tools/container/toolkit/replacements.go b/internal/nvsandboxutils/cgo_helpers_static.go similarity index 53% rename from tools/container/toolkit/replacements.go rename to internal/nvsandboxutils/cgo_helpers_static.go index 4ff67a40a..5924d6227 100644 --- a/tools/container/toolkit/replacements.go +++ b/internal/nvsandboxutils/cgo_helpers_static.go @@ -1,5 +1,5 @@ /** -# Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved. +# Copyright 2024 NVIDIA CORPORATION # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,34 +12,27 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -*/ +**/ -package main +package nvsandboxutils -import "strings" +var cgoAllocsUnknown = new(struct{}) -const ( - destDirPattern = "@destDir@" -) - -type replacements map[string]string - -func newReplacements(rules ...string) replacements { - r := make(replacements) - for i := 0; i < len(rules)-1; i += 2 { - old := rules[i] - new := rules[i+1] - - r[old] = new +func clen(n []byte) int { + for i := 0; i < len(n); i++ { + if n[i] == 0 { + return i + } } - - return r + return len(n) } -func (r replacements) apply(input string) string { - output := input - for old, new := range r { - output = strings.ReplaceAll(output, old, new) +// Creates an int8 array of fixed input length to store the Go string. +// TODO: Add error check if input string has a length greater than INPUT_LENGTH +func convertStringToFixedArray(str string) [INPUT_LENGTH]int8 { + var output [INPUT_LENGTH]int8 + for i, s := range str { + output[i] = int8(s) } return output } diff --git a/internal/nvsandboxutils/const.go b/internal/nvsandboxutils/const.go new file mode 100644 index 000000000..9e8cdf3f6 --- /dev/null +++ b/internal/nvsandboxutils/const.go @@ -0,0 +1,156 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +// WARNING: THIS FILE WAS AUTOMATICALLY GENERATED. +// Code generated by https://git.io/c-for-go. DO NOT EDIT. + +package nvsandboxutils + +/* +#cgo linux LDFLAGS: -Wl,--export-dynamic -Wl,--unresolved-symbols=ignore-in-object-files +#cgo darwin LDFLAGS: -Wl,-undefined,dynamic_lookup +#include "nvsandboxutils.h" +#include +#include "cgo_helpers.h" +*/ +import "C" + +const ( + // INPUT_LENGTH as defined in nvsandboxutils/nvsandboxutils.h + INPUT_LENGTH = 256 + // MAX_FILE_PATH as defined in nvsandboxutils/nvsandboxutils.h + MAX_FILE_PATH = 256 + // MAX_NAME_LENGTH as defined in nvsandboxutils/nvsandboxutils.h + MAX_NAME_LENGTH = 256 +) + +// Ret as declared in nvsandboxutils/nvsandboxutils.h +type Ret int32 + +// Ret enumeration from nvsandboxutils/nvsandboxutils.h +const ( + SUCCESS Ret = iota + ERROR_UNINITIALIZED Ret = 1 + ERROR_NOT_SUPPORTED Ret = 2 + ERROR_INVALID_ARG Ret = 3 + ERROR_INSUFFICIENT_SIZE Ret = 4 + ERROR_VERSION_NOT_SUPPORTED Ret = 5 + ERROR_LIBRARY_LOAD Ret = 6 + ERROR_FUNCTION_NOT_FOUND Ret = 7 + ERROR_DEVICE_NOT_FOUND Ret = 8 + ERROR_NVML_LIB_CALL Ret = 9 + ERROR_OUT_OF_MEMORY Ret = 10 + ERROR_FILEPATH_NOT_FOUND Ret = 11 + ERROR_UNKNOWN Ret = 65535 +) + +// LogLevel as declared in nvsandboxutils/nvsandboxutils.h +type LogLevel int32 + +// LogLevel enumeration from nvsandboxutils/nvsandboxutils.h +const ( + LOG_LEVEL_FATAL LogLevel = iota + LOG_LEVEL_ERROR LogLevel = 1 + LOG_LEVEL_WARN LogLevel = 2 + LOG_LEVEL_DEBUG LogLevel = 3 + LOG_LEVEL_INFO LogLevel = 4 + LOG_LEVEL_NONE LogLevel = 65535 +) + +// RootfsInputType as declared in nvsandboxutils/nvsandboxutils.h +type RootfsInputType int32 + +// RootfsInputType enumeration from nvsandboxutils/nvsandboxutils.h +const ( + NV_ROOTFS_DEFAULT RootfsInputType = iota + NV_ROOTFS_PATH RootfsInputType = 1 + NV_ROOTFS_PID RootfsInputType = 2 +) + +// FileType as declared in nvsandboxutils/nvsandboxutils.h +type FileType int32 + +// FileType enumeration from nvsandboxutils/nvsandboxutils.h +const ( + NV_DEV FileType = iota + NV_PROC FileType = 1 + NV_SYS FileType = 2 +) + +// FileSystemSubType as declared in nvsandboxutils/nvsandboxutils.h +type FileSystemSubType int32 + +// FileSystemSubType enumeration from nvsandboxutils/nvsandboxutils.h +const ( + NV_DEV_NVIDIA FileSystemSubType = iota + NV_DEV_DRI_CARD FileSystemSubType = 1 + NV_DEV_DRI_RENDERD FileSystemSubType = 2 + NV_DEV_DRI_CARD_SYMLINK FileSystemSubType = 3 + NV_DEV_DRI_RENDERD_SYMLINK FileSystemSubType = 4 + NV_DEV_NVIDIA_UVM FileSystemSubType = 5 + NV_DEV_NVIDIA_UVM_TOOLS FileSystemSubType = 6 + NV_DEV_NVIDIA_MODESET FileSystemSubType = 7 + NV_DEV_NVIDIA_CTL FileSystemSubType = 8 + NV_DEV_GDRDRV FileSystemSubType = 9 + NV_DEV_NVIDIA_CAPS_NVIDIA_CAP FileSystemSubType = 10 + NV_PROC_DRIVER_NVIDIA_GPUS_PCIBUSID FileSystemSubType = 11 + NV_PROC_DRIVER_NVIDIA_GPUS FileSystemSubType = 12 + NV_PROC_NVIDIA_PARAMS FileSystemSubType = 13 + NV_PROC_NVIDIA_CAPS_MIG_MINORS FileSystemSubType = 14 + NV_PROC_DRIVER_NVIDIA_CAPABILITIES_GPU FileSystemSubType = 15 + NV_PROC_DRIVER_NVIDIA_CAPABILITIES FileSystemSubType = 16 + NV_PROC_DRIVER_NVIDIA_CAPABILITIIES_GPU_MIG_CI_ACCESS FileSystemSubType = 17 + NV_SYS_MODULE_NVIDIA_DRIVER_PCIBUSID FileSystemSubType = 18 + NV_SYS_MODULE_NVIDIA_DRIVER FileSystemSubType = 19 + NV_NUM_SUBTYPE FileSystemSubType = 20 +) + +// FileModule as declared in nvsandboxutils/nvsandboxutils.h +type FileModule int32 + +// FileModule enumeration from nvsandboxutils/nvsandboxutils.h +const ( + NV_GPU FileModule = iota + NV_MIG FileModule = 1 + NV_DRIVER_NVIDIA FileModule = 2 + NV_DRIVER_NVIDIA_UVM FileModule = 3 + NV_DRIVER_NVIDIA_MODESET FileModule = 4 + NV_DRIVER_GDRDRV FileModule = 5 + NV_SYSTEM FileModule = 6 +) + +// FileFlag as declared in nvsandboxutils/nvsandboxutils.h +type FileFlag int32 + +// FileFlag enumeration from nvsandboxutils/nvsandboxutils.h +const ( + NV_FILE_FLAG_HINT FileFlag = 1 + NV_FILE_FLAG_MASKOUT FileFlag = 2 + NV_FILE_FLAG_CONTENT FileFlag = 4 + NV_FILE_FLAG_DEPRECTATED FileFlag = 8 + NV_FILE_FLAG_CANDIDATES FileFlag = 16 +) + +// GpuInputType as declared in nvsandboxutils/nvsandboxutils.h +type GpuInputType int32 + +// GpuInputType enumeration from nvsandboxutils/nvsandboxutils.h +const ( + NV_GPU_INPUT_GPU_UUID GpuInputType = iota + NV_GPU_INPUT_MIG_UUID GpuInputType = 1 + NV_GPU_INPUT_PCI_ID GpuInputType = 2 + NV_GPU_INPUT_PCI_INDEX GpuInputType = 3 +) diff --git a/internal/nvsandboxutils/doc.go b/internal/nvsandboxutils/doc.go new file mode 100644 index 000000000..231c68c26 --- /dev/null +++ b/internal/nvsandboxutils/doc.go @@ -0,0 +1,23 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +// WARNING: THIS FILE WAS AUTOMATICALLY GENERATED. +// Code generated by https://git.io/c-for-go. DO NOT EDIT. + +/* +Package NVSANDBOXUTILS bindings +*/ +package nvsandboxutils diff --git a/internal/nvsandboxutils/dynamicLibrary_mock.go b/internal/nvsandboxutils/dynamicLibrary_mock.go new file mode 100644 index 000000000..a22e5669d --- /dev/null +++ b/internal/nvsandboxutils/dynamicLibrary_mock.go @@ -0,0 +1,157 @@ +// Code generated by moq; DO NOT EDIT. +// github.com/matryer/moq + +package nvsandboxutils + +import ( + "sync" +) + +// Ensure, that dynamicLibraryMock does implement dynamicLibrary. +// If this is not the case, regenerate this file with moq. +var _ dynamicLibrary = &dynamicLibraryMock{} + +// dynamicLibraryMock is a mock implementation of dynamicLibrary. +// +// func TestSomethingThatUsesdynamicLibrary(t *testing.T) { +// +// // make and configure a mocked dynamicLibrary +// mockeddynamicLibrary := &dynamicLibraryMock{ +// CloseFunc: func() error { +// panic("mock out the Close method") +// }, +// LookupFunc: func(s string) error { +// panic("mock out the Lookup method") +// }, +// OpenFunc: func() error { +// panic("mock out the Open method") +// }, +// } +// +// // use mockeddynamicLibrary in code that requires dynamicLibrary +// // and then make assertions. +// +// } +type dynamicLibraryMock struct { + // CloseFunc mocks the Close method. + CloseFunc func() error + + // LookupFunc mocks the Lookup method. + LookupFunc func(s string) error + + // OpenFunc mocks the Open method. + OpenFunc func() error + + // calls tracks calls to the methods. + calls struct { + // Close holds details about calls to the Close method. + Close []struct { + } + // Lookup holds details about calls to the Lookup method. + Lookup []struct { + // S is the s argument value. + S string + } + // Open holds details about calls to the Open method. + Open []struct { + } + } + lockClose sync.RWMutex + lockLookup sync.RWMutex + lockOpen sync.RWMutex +} + +// Close calls CloseFunc. +func (mock *dynamicLibraryMock) Close() error { + callInfo := struct { + }{} + mock.lockClose.Lock() + mock.calls.Close = append(mock.calls.Close, callInfo) + mock.lockClose.Unlock() + if mock.CloseFunc == nil { + var ( + errOut error + ) + return errOut + } + return mock.CloseFunc() +} + +// CloseCalls gets all the calls that were made to Close. +// Check the length with: +// +// len(mockeddynamicLibrary.CloseCalls()) +func (mock *dynamicLibraryMock) CloseCalls() []struct { +} { + var calls []struct { + } + mock.lockClose.RLock() + calls = mock.calls.Close + mock.lockClose.RUnlock() + return calls +} + +// Lookup calls LookupFunc. +func (mock *dynamicLibraryMock) Lookup(s string) error { + callInfo := struct { + S string + }{ + S: s, + } + mock.lockLookup.Lock() + mock.calls.Lookup = append(mock.calls.Lookup, callInfo) + mock.lockLookup.Unlock() + if mock.LookupFunc == nil { + var ( + errOut error + ) + return errOut + } + return mock.LookupFunc(s) +} + +// LookupCalls gets all the calls that were made to Lookup. +// Check the length with: +// +// len(mockeddynamicLibrary.LookupCalls()) +func (mock *dynamicLibraryMock) LookupCalls() []struct { + S string +} { + var calls []struct { + S string + } + mock.lockLookup.RLock() + calls = mock.calls.Lookup + mock.lockLookup.RUnlock() + return calls +} + +// Open calls OpenFunc. +func (mock *dynamicLibraryMock) Open() error { + callInfo := struct { + }{} + mock.lockOpen.Lock() + mock.calls.Open = append(mock.calls.Open, callInfo) + mock.lockOpen.Unlock() + if mock.OpenFunc == nil { + var ( + errOut error + ) + return errOut + } + return mock.OpenFunc() +} + +// OpenCalls gets all the calls that were made to Open. +// Check the length with: +// +// len(mockeddynamicLibrary.OpenCalls()) +func (mock *dynamicLibraryMock) OpenCalls() []struct { +} { + var calls []struct { + } + mock.lockOpen.RLock() + calls = mock.calls.Open + mock.lockOpen.RUnlock() + return calls +} diff --git a/internal/nvsandboxutils/gen/generate-bindings.sh b/internal/nvsandboxutils/gen/generate-bindings.sh new file mode 100755 index 000000000..e32641a38 --- /dev/null +++ b/internal/nvsandboxutils/gen/generate-bindings.sh @@ -0,0 +1,50 @@ +#!/bin/bash +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# This file generates bindings for nvsandboxutils by calling c-for-go. + +set -x -e + +PWD=$(pwd) +GEN_DIR="$PWD/gen" +PKG_DIR="$PWD" +GEN_BINDINGS_DIR="$GEN_DIR/nvsandboxutils" +PKG_BINDINGS_DIR="$PKG_DIR" + +SOURCES=$(find "$GEN_BINDINGS_DIR" -type f) + +mkdir -p "$PKG_BINDINGS_DIR" + +cp "$GEN_BINDINGS_DIR/nvsandboxutils.h" "$PKG_BINDINGS_DIR/nvsandboxutils.h" +spatch --in-place --very-quiet --sp-file "$GEN_BINDINGS_DIR/anonymous_structs.cocci" "$PKG_BINDINGS_DIR/nvsandboxutils.h" > /dev/null + +echo "Generating the bindings..." +c-for-go -out "$PKG_DIR/.." "$GEN_BINDINGS_DIR/nvsandboxutils.yml" +cd "$PKG_BINDINGS_DIR" +go tool cgo -godefs types.go > types_gen.go +go fmt types_gen.go +cd - > /dev/null +rm -rf "$PKG_BINDINGS_DIR/cgo_helpers.go" "$PKG_BINDINGS_DIR/types.go" "$PKG_BINDINGS_DIR/_obj" +go run "$GEN_BINDINGS_DIR/generateapi.go" --sourceDir "$PKG_BINDINGS_DIR" --output "$PKG_BINDINGS_DIR/zz_generated.api.go" +# go fmt "$PKG_BINDINGS_DIR" + +SED_SEARCH_STRING='// WARNING: This file has automatically been generated on' +SED_REPLACE_STRING='// WARNING: THIS FILE WAS AUTOMATICALLY GENERATED.' +grep -l -R "$SED_SEARCH_STRING" "$PKG_DIR" | grep -v "/gen/" | xargs sed -i -E "s#$SED_SEARCH_STRING.*\$#$SED_REPLACE_STRING#g" + +SED_SEARCH_STRING='// (.*) nvsandboxutils/nvsandboxutils.h:[0-9]+' +SED_REPLACE_STRING='// \1 nvsandboxutils/nvsandboxutils.h' +grep -l -RE "$SED_SEARCH_STRING" "$PKG_DIR" | grep -v "/gen/" | xargs sed -i -E "s#$SED_SEARCH_STRING\$#$SED_REPLACE_STRING#g" + diff --git a/internal/nvsandboxutils/gen/nvsandboxutils/anonymous_structs.cocci b/internal/nvsandboxutils/gen/nvsandboxutils/anonymous_structs.cocci new file mode 100644 index 000000000..c8028fb55 --- /dev/null +++ b/internal/nvsandboxutils/gen/nvsandboxutils/anonymous_structs.cocci @@ -0,0 +1,100 @@ +@patch@ +type WRAPPER_TYPE; +field list FIELDS; +identifier V; +expression E; +fresh identifier ST = "nvSandboxUtilsGenerated_struct___"; +fresh identifier TEMP_VAR = "nvSandboxUtilsGenerated_variable___" ## V; +@@ + +++ struct ST { +++ WRAPPER_TYPE TEMP_VAR; +++ FIELDS +++ }; ++ + +WRAPPER_TYPE +{ + ... +( +- struct { +- FIELDS +- } V[E]; ++ struct ST V[E]; + +| + +- struct { +- FIELDS +- } V; ++ struct ST V; +) + ... +}; + +@capture@ +type WRAPPER_TYPE; +identifier TEMP_VAR; +identifier ST =~ "^nvSandboxUtilsGenerated_struct___"; +@@ + +struct ST { + WRAPPER_TYPE TEMP_VAR; + ... +}; + +@script:python concat@ +WRAPPER_TYPE << capture.WRAPPER_TYPE; +TEMP_VAR << capture.TEMP_VAR; +ST << capture.ST; +T; +@@ + +def removePrefix(string, prefix): + if string.startswith(prefix): + return string[len(prefix):] + return string + +def removeSuffix(string, suffix): + if string.endswith(suffix): + return string[:-len(suffix)] + return string + +WRAPPER_TYPE = removeSuffix(WRAPPER_TYPE, "_t") +TEMP_VAR = removePrefix(TEMP_VAR, "nvSandboxUtilsGenerated_variable___") +coccinelle.T = cocci.make_type(WRAPPER_TYPE + TEMP_VAR[0].upper() + TEMP_VAR[1:] + "_t") + +@add_typedef@ +identifier capture.ST; +type concat.T; +type WRAPPER_TYPE; +identifier TEMP_VAR; +@@ + +- struct ST { ++ typedef struct { +- WRAPPER_TYPE TEMP_VAR; + ... +- }; ++ } T; + +@update@ +identifier capture.ST; +type concat.T; +identifier V; +expression E; +type WRAPPER_TYPE; +@@ + +WRAPPER_TYPE +{ + ... +( +- struct ST V[E]; ++ T V[E]; +| +- struct ST V; ++ T V; +) + ... +}; diff --git a/internal/nvsandboxutils/gen/nvsandboxutils/generateapi.go b/internal/nvsandboxutils/gen/nvsandboxutils/generateapi.go new file mode 100644 index 000000000..6eb1e5006 --- /dev/null +++ b/internal/nvsandboxutils/gen/nvsandboxutils/generateapi.go @@ -0,0 +1,389 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package main + +import ( + "flag" + "fmt" + "go/ast" + "go/parser" + "go/token" + "io" + "io/fs" + "os" + "path/filepath" + "slices" + "sort" + "strings" + "unicode" +) + +type GeneratableInterfacePoperties struct { + Type string + Interface string + Exclude []string + PackageMethodsAliasedFrom string +} + +var GeneratableInterfaces = []GeneratableInterfacePoperties{ + { + Type: "library", + Interface: "Interface", + PackageMethodsAliasedFrom: "libnvsandboxutils", + }, +} + +func main() { + sourceDir := flag.String("sourceDir", "", "Path to the source directory for all go files") + output := flag.String("output", "", "Path to the output file (default: stdout)") + flag.Parse() + + // Check if required flags are provided + if *sourceDir == "" { + flag.Usage() + return + } + + writer, closer, err := getWriter(*output) + if err != nil { + fmt.Printf("Error: %v", err) + return + } + defer func() { + _ = closer() + }() + + header, err := generateHeader() + if err != nil { + fmt.Printf("Error: %v", err) + return + } + fmt.Fprint(writer, header) + + for i, p := range GeneratableInterfaces { + if p.PackageMethodsAliasedFrom != "" { + comment, err := generatePackageMethodsComment(p) + if err != nil { + fmt.Printf("Error: %v", err) + return + } + fmt.Fprint(writer, comment) + + output, err := generatePackageMethods(*sourceDir, p) + if err != nil { + fmt.Printf("Error: %v", err) + return + } + fmt.Fprintf(writer, "%s\n", output) + } + + comment, err := generateInterfaceComment(p) + if err != nil { + fmt.Printf("Error: %v", err) + return + } + fmt.Fprint(writer, comment) + + output, err := generateInterface(*sourceDir, p) + if err != nil { + fmt.Printf("Error: %v", err) + return + } + fmt.Fprint(writer, output) + + if i < (len(GeneratableInterfaces) - 1) { + fmt.Fprint(writer, "\n") + } + } +} + +func getWriter(outputFile string) (io.Writer, func() error, error) { + if outputFile == "" { + return os.Stdout, func() error { return nil }, nil + } + + file, err := os.Create(outputFile) + if err != nil { + return nil, nil, err + } + + return file, file.Close, nil +} + +func generateHeader() (string, error) { + lines := []string{ + "/**", + "# Copyright 2024 NVIDIA CORPORATION", + "#", + "# Licensed under the Apache License, Version 2.0 (the \"License\");", + "# you may not use this file except in compliance with the License.", + "# You may obtain a copy of the License at", + "#", + "# http://www.apache.org/licenses/LICENSE-2.0", + "#", + "# Unless required by applicable law or agreed to in writing, software", + "# distributed under the License is distributed on an \"AS IS\" BASIS,", + "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.", + "# See the License for the specific language governing permissions and", + "# limitations under the License.", + "**/", + "", + "// Generated Code; DO NOT EDIT.", + "", + "package nvsandboxutils", + "", + "", + } + return strings.Join(lines, "\n"), nil +} + +func generatePackageMethodsComment(input GeneratableInterfacePoperties) (string, error) { + commentFmt := []string{ + "// The variables below represent package level methods from the %s type.", + } + + var signature strings.Builder + comment := strings.Join(commentFmt, "\n") + comment = fmt.Sprintf(comment, input.Type) + signature.WriteString(fmt.Sprintf("%s\n", comment)) + return signature.String(), nil +} + +func generateInterfaceComment(input GeneratableInterfacePoperties) (string, error) { + commentFmt := []string{ + "// %s represents the interface for the %s type.", + "//", + "//go:generate moq -rm -fmt=goimports -out mock/%s.go -pkg mock . %s:%s", + } + + var signature strings.Builder + comment := strings.Join(commentFmt, "\n") + comment = fmt.Sprintf(comment, input.Interface, input.Type, strings.ToLower(input.Interface), input.Interface, input.Interface) + signature.WriteString(fmt.Sprintf("%s\n", comment)) + return signature.String(), nil +} + +func generatePackageMethods(sourceDir string, input GeneratableInterfacePoperties) (string, error) { + var signature strings.Builder + + signature.WriteString("var (\n") + + methods, err := extractMethodsFromPackage(sourceDir, input) + if err != nil { + return "", err + } + + for _, method := range methods { + name := method.Name.Name + formatted := fmt.Sprintf("\t%s = %s.%s\n", name, input.PackageMethodsAliasedFrom, name) + signature.WriteString(formatted) + } + + signature.WriteString(")\n") + + return signature.String(), nil +} + +func generateInterface(sourceDir string, input GeneratableInterfacePoperties) (string, error) { + var signature strings.Builder + + signature.WriteString(fmt.Sprintf("type %s interface {\n", input.Interface)) + + methods, err := extractMethodsFromPackage(sourceDir, input) + if err != nil { + return "", err + } + + for _, method := range methods { + formatted := fmt.Sprintf("\t%s\n", formatMethodSignature(method)) + signature.WriteString(formatted) + } + + signature.WriteString("}\n") + + return signature.String(), nil +} + +func getGoFiles(sourceDir string) (map[string][]byte, error) { + gofiles := make(map[string][]byte) + + err := filepath.WalkDir(sourceDir, func(path string, d fs.DirEntry, err error) error { + if err != nil { + return err + } + if d.IsDir() || filepath.Ext(path) != ".go" { + return nil + } + + content, err := os.ReadFile(path) + if err != nil { + return err + } + + gofiles[path] = content + + return nil + }) + if err != nil { + return nil, fmt.Errorf("walking %s: %w", sourceDir, err) + } + + return gofiles, nil +} + +func extractMethodsFromPackage(sourceDir string, input GeneratableInterfacePoperties) ([]*ast.FuncDecl, error) { + gofiles, err := getGoFiles(sourceDir) + if err != nil { + return nil, err + } + + var methods []*ast.FuncDecl + for file, content := range gofiles { + m, err := extractMethods(file, content, input) + if err != nil { + return nil, err + } + methods = append(methods, m...) + } + + sort.Slice(methods, func(i, j int) bool { + return methods[i].Name.Name < methods[j].Name.Name + }) + + return methods, nil +} + +func extractMethods(sourceFile string, sourceContent []byte, input GeneratableInterfacePoperties) ([]*ast.FuncDecl, error) { + // Parse source file + fset := token.NewFileSet() + node, err := parser.ParseFile(fset, sourceFile, sourceContent, parser.ParseComments) + if err != nil { + return nil, err + } + + // Traverse AST to find type declarations and associated methods + var methods []*ast.FuncDecl + for _, decl := range node.Decls { + funcDecl, ok := decl.(*ast.FuncDecl) + if !ok { + continue + } + + // Check if the function is a method associated with the specified type + if receiverType := funcDecl.Recv; receiverType != nil { + var ident *ast.Ident + + for _, field := range receiverType.List { + switch fieldType := field.Type.(type) { + case *ast.Ident: + ident = fieldType + case *ast.StarExpr: + // Update ident if it's a *ast.StarExpr + if newIdent, ok := fieldType.X.(*ast.Ident); ok { + // If the inner type is an *ast.Ident, update ident + ident = newIdent + } + } + + // No identifier found + if ident == nil { + continue + } + + // Identifier is not the one we are looking for + if ident.Name != input.Type { + continue + } + + // Ignore non-public methods + if !isPublic(funcDecl.Name.Name) { + continue + } + + // Ignore method in the exclude list + if slices.Contains(input.Exclude, funcDecl.Name.Name) { + continue + } + + methods = append(methods, funcDecl) + } + } + } + + return methods, nil +} + +func formatMethodSignature(decl *ast.FuncDecl) string { + var signature strings.Builder + + // Write method name + signature.WriteString(decl.Name.Name) + signature.WriteString("(") + + // Write parameters + if decl.Type.Params != nil { + for i, param := range decl.Type.Params.List { + if i > 0 { + signature.WriteString(", ") + } + signature.WriteString(formatFieldList(param)) + } + } + + signature.WriteString(")") + + // Write return types + if decl.Type.Results != nil { + signature.WriteString(" ") + if len(decl.Type.Results.List) > 1 { + signature.WriteString("(") + } + for i, result := range decl.Type.Results.List { + if i > 0 { + signature.WriteString(", ") + } + signature.WriteString(formatFieldList(result)) + } + if len(decl.Type.Results.List) > 1 { + signature.WriteString(")") + } + } + + return signature.String() +} + +func formatFieldList(field *ast.Field) string { + var builder strings.Builder + switch fieldType := field.Type.(type) { + case *ast.Ident: + builder.WriteString(fieldType.Name) + case *ast.ArrayType: + builder.WriteString("[]") + builder.WriteString(formatFieldList(&ast.Field{Type: fieldType.Elt})) + case *ast.StarExpr: + builder.WriteString("*") + builder.WriteString(formatFieldList(&ast.Field{Type: fieldType.X})) + } + return builder.String() +} + +func isPublic(name string) bool { + if len(name) == 0 { + return false + } + return unicode.IsUpper([]rune(name)[0]) +} diff --git a/internal/nvsandboxutils/gen/nvsandboxutils/nvsandboxutils.h b/internal/nvsandboxutils/gen/nvsandboxutils/nvsandboxutils.h new file mode 100644 index 000000000..eb087156e --- /dev/null +++ b/internal/nvsandboxutils/gen/nvsandboxutils/nvsandboxutils.h @@ -0,0 +1,298 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __NVSANDBOXUTILS_H__ +#define __NVSANDBOXUTILS_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#define INPUT_LENGTH 256 +#define MAX_FILE_PATH 256 +#define MAX_NAME_LENGTH 256 + +/***************************************************************************************************/ +/** @defgroup enums Enumerations + * @{ + */ +/***************************************************************************************************/ + +/** + * Return types + */ +typedef enum +{ + NVSANDBOXUTILS_SUCCESS = 0, //!< The operation was successful + NVSANDBOXUTILS_ERROR_UNINITIALIZED = 1, //!< The library wasn't successfully initialized + NVSANDBOXUTILS_ERROR_NOT_SUPPORTED = 2, //!< The requested operation is not supported on target device + NVSANDBOXUTILS_ERROR_INVALID_ARG = 3, //!< A supplied argument is invalid + NVSANDBOXUTILS_ERROR_INSUFFICIENT_SIZE = 4, //!< A supplied argument is not large enough + NVSANDBOXUTILS_ERROR_VERSION_NOT_SUPPORTED = 5, //!< Requested library version is not supported + NVSANDBOXUTILS_ERROR_LIBRARY_LOAD = 6, //!< The library load failed + NVSANDBOXUTILS_ERROR_FUNCTION_NOT_FOUND = 7, //!< Called function was not found + NVSANDBOXUTILS_ERROR_DEVICE_NOT_FOUND = 8, //!< Target device was not found + NVSANDBOXUTILS_ERROR_NVML_LIB_CALL = 9, //!< NVML library call failed + NVSANDBOXUTILS_ERROR_OUT_OF_MEMORY = 10, //!< There is insufficient memory + NVSANDBOXUTILS_ERROR_FILEPATH_NOT_FOUND = 11, //!< A supplied file path was not found + NVSANDBOXUTILS_ERROR_UNKNOWN = 0xFFFF, //!< Unknown error occurred +} nvSandboxUtilsRet_t; + +/** + * Return if there is an error + */ +#define RETURN_ON_SANDBOX_ERROR(result) \ + if ((result) != NVSANDBOXUTILS_SUCCESS) { \ + NVSANDBOXUTILS_ERROR_MSG("%s %d result=%d", __func__, __LINE__, result); \ + return result; \ + } + +/** + * Log levels + */ +typedef enum +{ + NVSANDBOXUTILS_LOG_LEVEL_FATAL = 0, //!< Log fatal errors + NVSANDBOXUTILS_LOG_LEVEL_ERROR = 1, //!< Log all errors + NVSANDBOXUTILS_LOG_LEVEL_WARN = 2, //!< Log all warnings + NVSANDBOXUTILS_LOG_LEVEL_DEBUG = 3, //!< Log all debug messages + NVSANDBOXUTILS_LOG_LEVEL_INFO = 4, //!< Log all info messages + NVSANDBOXUTILS_LOG_LEVEL_NONE = 0xFFFF, //!< Log none +} nvSandboxUtilsLogLevel_t; + +/** + * Input rootfs to help access files inside the driver container + */ +typedef enum +{ + NV_ROOTFS_DEFAULT, //!< Default no rootfs + NV_ROOTFS_PATH, //!< /run/nvidia/driver + NV_ROOTFS_PID, //!< /proc/PID/mountinfo +} nvSandboxUtilsRootfsInputType_t; + +/** + * File type + */ +typedef enum +{ + NV_DEV, //!< /dev file system + NV_PROC, //!< /proc file system + NV_SYS, //!< /sys file system +} nvSandboxUtilsFileType_t; + +/** + * File subtype + */ +typedef enum +{ + NV_DEV_NVIDIA, //!< /dev/nvidia0 + NV_DEV_DRI_CARD, //!< /dev/dri/card1 + NV_DEV_DRI_RENDERD, //!< /dev/dri/renderD128 + NV_DEV_DRI_CARD_SYMLINK, //!< /dev/dri/by-path/pci-0000:41:00.0-card + NV_DEV_DRI_RENDERD_SYMLINK, //!< /dev/dri/by-path/pci-0000:41:00.0-render + NV_DEV_NVIDIA_UVM, //!< /dev/nvidia-uvm + NV_DEV_NVIDIA_UVM_TOOLS, //!< /dev/nvidia-uvm-tools + NV_DEV_NVIDIA_MODESET, //!< /dev/nvidia-uvm-modeset + NV_DEV_NVIDIA_CTL, //!< /dev/nvidiactl + NV_DEV_GDRDRV, //!< /dev/gdrdrv + NV_DEV_NVIDIA_CAPS_NVIDIA_CAP, //!< /dev/nvidia-caps/nvidia-cap22 + NV_PROC_DRIVER_NVIDIA_GPUS_PCIBUSID, //!< /proc/driver/nvidia/gpus/0000:2d:00.0 + NV_PROC_DRIVER_NVIDIA_GPUS, //!< /proc/driver/nvidia/gpus (for mask out) + NV_PROC_NVIDIA_PARAMS, //!< /proc/driver/nvidia/params + NV_PROC_NVIDIA_CAPS_MIG_MINORS, //!< /proc/driver/nvidia-caps/mig-minors + NV_PROC_DRIVER_NVIDIA_CAPABILITIES_GPU, //!< /proc/driver/nvidia/capabilities/gpu0 + NV_PROC_DRIVER_NVIDIA_CAPABILITIES, //!< /proc/driver/nvidia/capabilities (for mask out) + NV_PROC_DRIVER_NVIDIA_CAPABILITIIES_GPU_MIG_CI_ACCESS, //!< proc/driver/nvidia/capabilities/gpu0/mig/gi2/ci0/access + NV_SYS_MODULE_NVIDIA_DRIVER_PCIBUSID, //!< /sys/module/nvidia/drivers/pci:nvidia/0000:2d:00.0 + NV_SYS_MODULE_NVIDIA_DRIVER, //!< /sys/module/nvidia/drivers/pci:nvidia (for mask out) + NV_NUM_SUBTYPE, // always at the end. +} nvSandboxUtilsFileSystemSubType_t; + +/** + * File module + */ +typedef enum +{ + NV_GPU, //!< Target device + NV_MIG, //!< Target device- MIG + NV_DRIVER_NVIDIA, //!< NVIDIA kernel driver + NV_DRIVER_NVIDIA_UVM, //!< NVIDIA kernel driver-UVM + NV_DRIVER_NVIDIA_MODESET, //!< NVIDIA kernel driver-modeset + NV_DRIVER_GDRDRV, //!< GDRDRV driver + NV_SYSTEM, //!< System module +} nvSandboxUtilsFileModule_t; + +/** + * Flag to provide additional details about the file + */ +typedef enum +{ + NV_FILE_FLAG_HINT = (1 << 0), //!< Default no hint + NV_FILE_FLAG_MASKOUT = (1 << 1), //!< For /proc/driver/nvidia/gpus + NV_FILE_FLAG_CONTENT = (1 << 2), //!< For /proc/driver/nvidia/params + //!< For SYMLINK + //!< Use \p nvSandboxUtilsGetFileContent to get name of the linked file + NV_FILE_FLAG_DEPRECTATED = (1 << 3), //!< For all the FIRMWARE GSP file + NV_FILE_FLAG_CANDIDATES = (1 << 4), //!< For libcuda.so +} nvSandboxUtilsFileFlag_t; + +/** + * Input type of the target device + */ +typedef enum +{ + NV_GPU_INPUT_GPU_UUID, //!< GPU UUID + NV_GPU_INPUT_MIG_UUID, //!< MIG UUID + NV_GPU_INPUT_PCI_ID, //!< PCIe DBDF ID + NV_GPU_INPUT_PCI_INDEX, //!< PCIe bus order (0 points to the GPU that has lowest PCIe BDF) +} nvSandboxUtilsGpuInputType_t; + +/** @} */ + +/***************************************************************************************************/ +/** @defgroup dataTypes Structures and Unions + * @{ + */ +/***************************************************************************************************/ + +/** + * Initalization input v1 + */ +typedef struct +{ + unsigned int version; //!< Version for the structure + nvSandboxUtilsRootfsInputType_t type; //!< One of \p nvSandboxUtilsRootfsInputType_t + char value[INPUT_LENGTH]; //!< String representation of input +} nvSandboxUtilsInitInput_v1_t; + +typedef nvSandboxUtilsInitInput_v1_t nvSandboxUtilsInitInput_t; + +/** + * File system information + */ +typedef struct nvSandboxUtilsGpuFileInfo_v1_t +{ + struct nvSandboxUtilsGpuFileInfo_v1_t *next; //!< Pointer to the next node in the linked list + nvSandboxUtilsFileType_t fileType; //!< One of \p nvSandboxUtilsFileType_t + nvSandboxUtilsFileSystemSubType_t fileSubType; //!< One of \p nvSandboxUtilsFileSystemSubType_t + nvSandboxUtilsFileModule_t module; //!< One of \p nvSandboxUtilsFileModule_t + nvSandboxUtilsFileFlag_t flags; //!< One of \p nvSandboxUtilsFileFlag_t + char *filePath; //!< Relative file path to rootfs +}nvSandboxUtilsGpuFileInfo_v1_t; + +/** + * GPU resource request v1 + */ +typedef struct +{ + unsigned int version; //!< Version for the structure + nvSandboxUtilsGpuInputType_t inputType; //!< One of \p nvSandboxUtilsGpuInputType_t + char input[INPUT_LENGTH]; //!< String representation of input + nvSandboxUtilsGpuFileInfo_v1_t *files; //!< Linked list of \ref nvSandboxUtilsGpuFileInfo_v1_t +} nvSandboxUtilsGpuRes_v1_t; + +typedef nvSandboxUtilsGpuRes_v1_t nvSandboxUtilsGpuRes_t; + +/** @} */ + +/***************************************************************************************************/ +/** @defgroup funcs Functions + * @{ + */ +/***************************************************************************************************/ + +/* ************************************************* + * Initialize library + * ************************************************* + */ +/** + * Prepare library resources before library API can be used. + * This initialization will not fail if one of the initialization prerequisites fails. + * @param input Reference to the called-supplied input struct that has initialization fields + * + * @returns @ref NVSANDBOXUTILS_SUCCESS on success + * @returns @ref NVSANDBOXUTILS_ERROR_INVALID_ARG if \p input->value isn't a valid rootfs path + * @returns @ref NVSANDBOXUTILS_ERROR_VERSION_NOT_SUPPORTED if \p input->version isn't supported by the library + * @returns @ref NVSANDBOXUTILS_ERROR_FILEPATH_NOT_FOUND if any of the required file paths are not found during initialization + * @returns @ref NVSANDBOXUTILS_ERROR_OUT_OF_MEMORY if there is insufficient system memory during initialization + * @returns @ref NVSANDBOXUTILS_ERROR_LIBRARY_LOAD on any error during loading the library + */ +nvSandboxUtilsRet_t nvSandboxUtilsInit(nvSandboxUtilsInitInput_t *input); + +/* ************************************************* + * Shutdown library + * ************************************************* + */ +/** + * Clean up library resources created by init call + * + * @returns @ref NVSANDBOXUTILS_SUCCESS on success + */ +nvSandboxUtilsRet_t nvSandboxUtilsShutdown(void); + +/* ************************************************* + * Get NVIDIA RM driver version + * ************************************************* + */ +/** + * Get NVIDIA RM driver version + * @param version Reference to caller-supplied buffer to return driver version string + * @param length The maximum allowed length of the string returned in \p version + * + * @returns @ref NVSANDBOXUTILS_SUCCESS on success + * @returns @ref NVSANDBOXUTILS_ERROR_INVALID_ARG if \p version is NULL + * @returns @ref NVSANDBOXUTILS_ERROR_NVML_LIB_CALL on any error during driver version query from NVML + */ +nvSandboxUtilsRet_t nvSandboxUtilsGetDriverVersion(char *version, unsigned int length); + +/* ************************************************* + * Get /dev, /proc, /sys file system information + * ************************************************* + */ +/** + * Get /dev, /proc, /sys file system information + * @param request Reference to caller-supplied request struct to return the file system information + * + * @returns @ref NVSANDBOXUTILS_SUCCESS on success + * @returns @ref NVSANDBOXUTILS_ERROR_INVALID_ARG if \p request->input doesn't match any device + * @returns @ref NVSANDBOXUTILS_ERROR_VERSION_NOT_SUPPORTED if \p request->version isn't supported by the library + */ +nvSandboxUtilsRet_t nvSandboxUtilsGetGpuResource(nvSandboxUtilsGpuRes_t *request); + +/* ************************************************* + * Get content of given file path + * ************************************************* + */ +/** + * Get file content of input file path + * @param filePath Reference to the file path + * @param content Reference to the caller-supplied buffer to return the file content + * @param contentSize Reference to the maximum allowed size of content. It is updated to the actual size of the content on return + * + * @returns @ref NVSANDBOXUTILS_SUCCESS on success + * @returns @ref NVSANDBOXUTILS_ERROR_INVALID_ARG if \p filePath or \p content is NULL + * @returns @ref NVSANDBOXUTILS_ERROR_INSUFFICIENT_SIZE if \p contentSize is too small + * @returns @ref NVSANDBOXUTILS_ERROR_FILEPATH_NOT_FOUND on an error while obtaining the content for the file path + */ +nvSandboxUtilsRet_t nvSandboxUtilsGetFileContent(char *filePath, char *content, unsigned int *contentSize); + +/** @} */ + +#ifdef __cplusplus +} +#endif +#endif // __NVSANDBOXUTILS_H__ diff --git a/internal/nvsandboxutils/gen/nvsandboxutils/nvsandboxutils.yml b/internal/nvsandboxutils/gen/nvsandboxutils/nvsandboxutils.yml new file mode 100644 index 000000000..851db7436 --- /dev/null +++ b/internal/nvsandboxutils/gen/nvsandboxutils/nvsandboxutils.yml @@ -0,0 +1,66 @@ +# Copyright (c) 2024, NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +--- +GENERATOR: + PackageName: nvsandboxutils + PackageDescription: "Package NVSANDBOXUTILS bindings" + PackageLicense: |- + Copyright (c) 2024, NVIDIA CORPORATION + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + Includes: ["nvsandboxutils.h"] + FlagGroups: + - {name: "LDFLAGS", traits: ["linux"], flags: ["-Wl,--export-dynamic","-Wl,--unresolved-symbols=ignore-in-object-files"]} + - {name: "LDFLAGS", traits: ["darwin"], flags: ["-Wl,-undefined,dynamic_lookup"]} +PARSER: + SourcesPaths: ["nvsandboxutils.h"] +TRANSLATOR: + ConstRules: + defines: eval + enum: eval + PtrTips: + function: + - {target: "^nvSandboxUtils", default: "sref"} + MemTips: + - {target: "^nvSandboxUtils", default: "raw"} + Rules: + const: + - {action: accept, from: "^NVSANDBOXUTILS_"} + - {action: accept, from: "^nvSandboxUtils"} + - {action: replace, from: "^NVSANDBOXUTILS_"} + - {action: replace, from: "^nvSandboxUtils"} + - {action: accept, from: "^NV"} + - {action: accept, from: "^MAX"} + - {action: accept, from: "^INPUT"} + - {action: replace, from: "_t$"} + - {transform: export} + type: + - {action: accept, from: "^nvSandboxUtils"} + - {action: replace, from: "^nvSandboxUtils"} + - {action: replace, from: "_t$"} + - {transform: export} + function: + - {action: accept, from: "^nvSandboxUtils"} + - {transform: unexport} diff --git a/internal/nvsandboxutils/gen/update-bindings.sh b/internal/nvsandboxutils/gen/update-bindings.sh new file mode 100755 index 000000000..5ac472eac --- /dev/null +++ b/internal/nvsandboxutils/gen/update-bindings.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# This file allows for the nvsandboxutils bindings to be updated using the tooling +# implemented in https://github.com/NVIDIA/go-nvml. +# To run this: +# cd internal/nvsandboxutils +# ./update-bindings.sh + +set -e + +BUILDIMAGE=bindings + +docker build \ + --build-arg GOLANG_VERSION=1.22.1 \ + --build-arg C_FOR_GO_TAG=8eeee8c3b71f9c3c90c4a73db54ed08b0bba971d \ + -t ${BUILDIMAGE} \ + -f docker/Dockerfile.devel \ + https://github.com/NVIDIA/go-nvml.git + + +docker run --rm -ti \ + -e GOCACHE=/tmp/.cache/go \ + -e GOMODCACHE=/tmp/.cache/gomod \ + -v $(pwd):/nvsandboxutils \ + -w /nvsandboxutils \ + -u $(id -u):$(id -g) \ + ${BUILDIMAGE} \ + ./gen/generate-bindings.sh diff --git a/internal/nvsandboxutils/gpu-resources.go b/internal/nvsandboxutils/gpu-resources.go new file mode 100644 index 000000000..19dec07ef --- /dev/null +++ b/internal/nvsandboxutils/gpu-resources.go @@ -0,0 +1,67 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package nvsandboxutils + +import ( + "strings" + "unsafe" +) + +import "C" + +type GpuResource struct { + Version uint32 +} + +type GpuFileInfo struct { + Path string + Type FileType + SubType FileSystemSubType + Module FileModule + Flags FileFlag +} + +func (l *library) GetGpuResource(uuid string) ([]GpuFileInfo, Ret) { + deviceType := NV_GPU_INPUT_GPU_UUID + if strings.HasPrefix(uuid, "MIG-") { + deviceType = NV_GPU_INPUT_MIG_UUID + } + + request := GpuRes{ + Version: 1, + InputType: uint32(deviceType), + Input: convertStringToFixedArray(uuid), + } + + ret := nvSandboxUtilsGetGpuResource(&request) + if ret != SUCCESS { + return nil, ret + } + + var fileInfos []GpuFileInfo + for fileInfo := request.Files; fileInfo != nil; fileInfo = fileInfo.Next { + fi := GpuFileInfo{ + Path: C.GoString((*C.char)(unsafe.Pointer(fileInfo.FilePath))), + Type: FileType(fileInfo.FileType), + SubType: FileSystemSubType(fileInfo.FileSubType), + Module: FileModule(fileInfo.Module), + Flags: FileFlag(fileInfo.Flags), + } + fileInfos = append(fileInfos, fi) + } + return fileInfos, SUCCESS +} diff --git a/internal/nvsandboxutils/impl.go b/internal/nvsandboxutils/impl.go new file mode 100644 index 000000000..0f6948a28 --- /dev/null +++ b/internal/nvsandboxutils/impl.go @@ -0,0 +1,64 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package nvsandboxutils + +import "C" + +func (l *library) Init(path string) Ret { + if err := l.load(); err != nil { + return ERROR_LIBRARY_LOAD + } + + input := InitInput{ + Version: 1, + Type: uint32(NV_ROOTFS_PATH), + Value: convertStringToFixedArray(path), + } + + return nvSandboxUtilsInit(&input) +} + +func (l *library) Shutdown() Ret { + ret := nvSandboxUtilsShutdown() + if ret != SUCCESS { + return ret + } + + err := l.close() + if err != nil { + return ERROR_UNKNOWN + } + + return ret +} + +// TODO: Is this length specified in the header file? +const VERSION_LENGTH = 100 + +func (l *library) GetDriverVersion() (string, Ret) { + Version := make([]byte, VERSION_LENGTH) + ret := nvSandboxUtilsGetDriverVersion(&Version[0], VERSION_LENGTH) + return string(Version[:clen(Version)]), ret +} + +func (l *library) GetFileContent(path string) (string, Ret) { + Content := make([]byte, MAX_FILE_PATH) + FilePath := []byte(path + string(byte(0))) + Size := uint32(MAX_FILE_PATH) + ret := nvSandboxUtilsGetFileContent(&FilePath[0], &Content[0], &Size) + return string(Content[:clen(Content)]), ret +} diff --git a/internal/nvsandboxutils/lib.go b/internal/nvsandboxutils/lib.go new file mode 100644 index 000000000..2872e1071 --- /dev/null +++ b/internal/nvsandboxutils/lib.go @@ -0,0 +1,156 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package nvsandboxutils + +import ( + "errors" + "fmt" + "sync" + + "github.com/NVIDIA/go-nvml/pkg/dl" +) + +const ( + defaultNvSandboxUtilsLibraryName = "libnvidia-sandboxutils.so.1" + defaultNvSandboxUtilsLibraryLoadFlags = dl.RTLD_LAZY | dl.RTLD_GLOBAL +) + +var errLibraryNotLoaded = errors.New("library not loaded") +var errLibraryAlreadyLoaded = errors.New("library already loaded") + +// dynamicLibrary is an interface for abstacting the underlying library. +// This also allows for mocking and testing. + +//go:generate moq -rm -fmt=goimports -stub -out dynamicLibrary_mock.go . dynamicLibrary +type dynamicLibrary interface { + Lookup(string) error + Open() error + Close() error +} + +// library represents an nvsandboxutils library. +// This includes a reference to the underlying DynamicLibrary +type library struct { + sync.Mutex + path string + refcount refcount + dl dynamicLibrary +} + +// libnvsandboxutils is a global instance of the nvsandboxutils library. +var libnvsandboxutils = newLibrary() + +func New(opts ...LibraryOption) Interface { + return newLibrary(opts...) +} + +func newLibrary(opts ...LibraryOption) *library { + l := &library{} + l.init(opts...) + return l +} + +func (l *library) init(opts ...LibraryOption) { + o := libraryOptions{} + for _, opt := range opts { + opt(&o) + } + + if o.path == "" { + o.path = defaultNvSandboxUtilsLibraryName + } + if o.flags == 0 { + o.flags = defaultNvSandboxUtilsLibraryLoadFlags + } + + l.path = o.path + l.dl = dl.New(o.path, o.flags) +} + +// LookupSymbol checks whether the specified library symbol exists in the library. +// Note that this requires that the library be loaded. +func (l *library) LookupSymbol(name string) error { + if l == nil || l.refcount == 0 { + return fmt.Errorf("error looking up %s: %w", name, errLibraryNotLoaded) + } + return l.dl.Lookup(name) +} + +// load initializes the library and updates the versioned symbols. +// Multiple calls to an already loaded library will return without error. +func (l *library) load() (rerr error) { + l.Lock() + defer l.Unlock() + + defer func() { l.refcount.IncOnNoError(rerr) }() + if l.refcount > 0 { + return nil + } + + if err := l.dl.Open(); err != nil { + return fmt.Errorf("error opening %s: %w", l.path, err) + } + + // Update the errorStringFunc to point to nvsandboxutils.ErrorString + errorStringFunc = nvsanboxutilsErrorString + + // Update all versioned symbols + l.updateVersionedSymbols() + + return nil +} + +// close the underlying library and ensure that the global pointer to the +// library is set to nil to ensure that subsequent calls to open will reinitialize it. +// Multiple calls to an already closed nvsandboxutils library will return without error. +func (l *library) close() (rerr error) { + l.Lock() + defer l.Unlock() + + defer func() { l.refcount.DecOnNoError(rerr) }() + if l.refcount != 1 { + return nil + } + + if err := l.dl.Close(); err != nil { + return fmt.Errorf("error closing %s: %w", l.path, err) + } + + // Update the errorStringFunc to point to defaultErrorStringFunc + errorStringFunc = defaultErrorStringFunc + + return nil +} + +// Default all versioned APIs to v1 (to infer the types) +var ( +// Insert default versions for APIs here. +// Example: +// nvsandboxUtilsFunction = nvsandboxUtilsFunction_v1 +) + +// updateVersionedSymbols checks for versioned symbols in the loaded dynamic library. +// If newer versioned symbols exist, these replace the default `v1` symbols initialized above. +// When new versioned symbols are added, these would have to be initialized above and have +// corresponding checks and subsequent assignments added below. +func (l *library) updateVersionedSymbols() { + // Example: + // err := l.dl.Lookup("nvsandboxUtilsFunction_v2") + // if err == nil { + // nvsandboxUtilsFunction = nvsandboxUtilsFunction_v2 + // } +} diff --git a/internal/nvsandboxutils/lib_test.go b/internal/nvsandboxutils/lib_test.go new file mode 100644 index 000000000..b87c72429 --- /dev/null +++ b/internal/nvsandboxutils/lib_test.go @@ -0,0 +1,245 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package nvsandboxutils + +import ( + "errors" + "fmt" + "testing" + + "github.com/stretchr/testify/require" +) + +func newTestLibrary(dl dynamicLibrary) *library { + return &library{dl: dl} +} + +func TestLookupFromDefault(t *testing.T) { + errClose := errors.New("close error") + errOpen := errors.New("open error") + errLookup := errors.New("lookup error") + + testCases := []struct { + description string + dl dynamicLibrary + skipLoadLibrary bool + expectedLoadError error + expectedLookupErrror error + expectedCloseError error + }{ + { + description: "library not loaded yields error", + dl: &dynamicLibraryMock{}, + skipLoadLibrary: true, + expectedLookupErrror: errLibraryNotLoaded, + }, + { + description: "open error is returned", + dl: &dynamicLibraryMock{ + OpenFunc: func() error { + return errOpen + }, + }, + + expectedLoadError: errOpen, + expectedLookupErrror: errLibraryNotLoaded, + }, + { + description: "lookup error is returned", + dl: &dynamicLibraryMock{ + OpenFunc: func() error { + return nil + }, + LookupFunc: func(s string) error { + return fmt.Errorf("%w: %s", errLookup, s) + }, + CloseFunc: func() error { + return nil + }, + }, + + expectedLookupErrror: errLookup, + }, + { + description: "lookup succeeds", + dl: &dynamicLibraryMock{ + OpenFunc: func() error { + return nil + }, + LookupFunc: func(s string) error { + return nil + }, + CloseFunc: func() error { + return nil + }, + }, + }, + { + description: "lookup succeeds", + dl: &dynamicLibraryMock{ + OpenFunc: func() error { + return nil + }, + LookupFunc: func(s string) error { + return nil + }, + CloseFunc: func() error { + return nil + }, + }, + }, + { + description: "close error is returned", + dl: &dynamicLibraryMock{ + OpenFunc: func() error { + return nil + }, + LookupFunc: func(s string) error { + return nil + }, + CloseFunc: func() error { + return errClose + }, + }, + expectedCloseError: errClose, + }, + } + + for _, tc := range testCases { + t.Run(tc.description, func(t *testing.T) { + l := newTestLibrary(tc.dl) + if !tc.skipLoadLibrary { + require.ErrorIs(t, l.load(), tc.expectedLoadError) + } + require.ErrorIs(t, l.LookupSymbol("symbol"), tc.expectedLookupErrror) + require.ErrorIs(t, l.close(), tc.expectedCloseError) + if tc.expectedCloseError == nil { + require.Equal(t, 0, int(l.refcount)) + } else { + require.Equal(t, 1, int(l.refcount)) + } + }) + } +} + +func TestLoadAndCloseNesting(t *testing.T) { + dl := &dynamicLibraryMock{ + OpenFunc: func() error { + return nil + }, + CloseFunc: func() error { + return nil + }, + } + + l := newTestLibrary(dl) + + // When calling close before opening the library nothing happens. + require.Equal(t, 0, len(dl.calls.Close)) + require.Nil(t, l.close()) + require.Equal(t, 0, len(dl.calls.Close)) + + // When calling load twice, the library was only opened once + require.Equal(t, 0, len(dl.calls.Open)) + require.Nil(t, l.load()) + require.Equal(t, 1, len(dl.calls.Open)) + require.Nil(t, l.load()) + require.Equal(t, 1, len(dl.calls.Open)) + + // Only after calling close twice, was the library closed + require.Equal(t, 0, len(dl.calls.Close)) + require.Nil(t, l.close()) + require.Equal(t, 0, len(dl.calls.Close)) + require.Nil(t, l.close()) + require.Equal(t, 1, len(dl.calls.Close)) + + // Calling close again doesn't attempt to close the library again + require.Nil(t, l.close()) + require.Equal(t, 1, len(dl.calls.Close)) +} + +func TestLoadAndCloseWithErrors(t *testing.T) { + testCases := []struct { + description string + dl dynamicLibrary + expectedLoadRefcount refcount + expectedCloseRefcount refcount + }{ + { + description: "regular flow", + dl: &dynamicLibraryMock{ + OpenFunc: func() error { + return nil + }, + CloseFunc: func() error { + return nil + }, + }, + expectedLoadRefcount: 1, + expectedCloseRefcount: 0, + }, + { + description: "open error", + dl: &dynamicLibraryMock{ + OpenFunc: func() error { + return errors.New("") + }, + CloseFunc: func() error { + return nil + }, + }, + expectedLoadRefcount: 0, + expectedCloseRefcount: 0, + }, + { + description: "close error", + dl: &dynamicLibraryMock{ + OpenFunc: func() error { + return nil + }, + CloseFunc: func() error { + return errors.New("") + }, + }, + expectedLoadRefcount: 1, + expectedCloseRefcount: 1, + }, + { + description: "open and close error", + dl: &dynamicLibraryMock{ + OpenFunc: func() error { + return errors.New("") + }, + CloseFunc: func() error { + return errors.New("") + }, + }, + expectedLoadRefcount: 0, + expectedCloseRefcount: 0, + }, + } + + for _, tc := range testCases { + t.Run(tc.description, func(t *testing.T) { + l := newTestLibrary(tc.dl) + _ = l.load() + require.Equal(t, tc.expectedLoadRefcount, l.refcount) + _ = l.close() + require.Equal(t, tc.expectedCloseRefcount, l.refcount) + }) + } +} diff --git a/internal/nvsandboxutils/mock/interface.go b/internal/nvsandboxutils/mock/interface.go new file mode 100644 index 000000000..53cfdc023 --- /dev/null +++ b/internal/nvsandboxutils/mock/interface.go @@ -0,0 +1,326 @@ +// Code generated by moq; DO NOT EDIT. +// github.com/matryer/moq + +package mock + +import ( + "sync" + + "github.com/NVIDIA/nvidia-container-toolkit/internal/nvsandboxutils" +) + +// Ensure, that Interface does implement nvsandboxutils.Interface. +// If this is not the case, regenerate this file with moq. +var _ nvsandboxutils.Interface = &Interface{} + +// Interface is a mock implementation of nvsandboxutils.Interface. +// +// func TestSomethingThatUsesInterface(t *testing.T) { +// +// // make and configure a mocked nvsandboxutils.Interface +// mockedInterface := &Interface{ +// ErrorStringFunc: func(ret nvsandboxutils.Ret) string { +// panic("mock out the ErrorString method") +// }, +// GetDriverVersionFunc: func() (string, nvsandboxutils.Ret) { +// panic("mock out the GetDriverVersion method") +// }, +// GetFileContentFunc: func(s string) (string, nvsandboxutils.Ret) { +// panic("mock out the GetFileContent method") +// }, +// GetGpuResourceFunc: func(s string) ([]nvsandboxutils.GpuFileInfo, nvsandboxutils.Ret) { +// panic("mock out the GetGpuResource method") +// }, +// InitFunc: func(s string) nvsandboxutils.Ret { +// panic("mock out the Init method") +// }, +// LookupSymbolFunc: func(s string) error { +// panic("mock out the LookupSymbol method") +// }, +// ShutdownFunc: func() nvsandboxutils.Ret { +// panic("mock out the Shutdown method") +// }, +// } +// +// // use mockedInterface in code that requires nvsandboxutils.Interface +// // and then make assertions. +// +// } +type Interface struct { + // ErrorStringFunc mocks the ErrorString method. + ErrorStringFunc func(ret nvsandboxutils.Ret) string + + // GetDriverVersionFunc mocks the GetDriverVersion method. + GetDriverVersionFunc func() (string, nvsandboxutils.Ret) + + // GetFileContentFunc mocks the GetFileContent method. + GetFileContentFunc func(s string) (string, nvsandboxutils.Ret) + + // GetGpuResourceFunc mocks the GetGpuResource method. + GetGpuResourceFunc func(s string) ([]nvsandboxutils.GpuFileInfo, nvsandboxutils.Ret) + + // InitFunc mocks the Init method. + InitFunc func(s string) nvsandboxutils.Ret + + // LookupSymbolFunc mocks the LookupSymbol method. + LookupSymbolFunc func(s string) error + + // ShutdownFunc mocks the Shutdown method. + ShutdownFunc func() nvsandboxutils.Ret + + // calls tracks calls to the methods. + calls struct { + // ErrorString holds details about calls to the ErrorString method. + ErrorString []struct { + // Ret is the ret argument value. + Ret nvsandboxutils.Ret + } + // GetDriverVersion holds details about calls to the GetDriverVersion method. + GetDriverVersion []struct { + } + // GetFileContent holds details about calls to the GetFileContent method. + GetFileContent []struct { + // S is the s argument value. + S string + } + // GetGpuResource holds details about calls to the GetGpuResource method. + GetGpuResource []struct { + // S is the s argument value. + S string + } + // Init holds details about calls to the Init method. + Init []struct { + // S is the s argument value. + S string + } + // LookupSymbol holds details about calls to the LookupSymbol method. + LookupSymbol []struct { + // S is the s argument value. + S string + } + // Shutdown holds details about calls to the Shutdown method. + Shutdown []struct { + } + } + lockErrorString sync.RWMutex + lockGetDriverVersion sync.RWMutex + lockGetFileContent sync.RWMutex + lockGetGpuResource sync.RWMutex + lockInit sync.RWMutex + lockLookupSymbol sync.RWMutex + lockShutdown sync.RWMutex +} + +// ErrorString calls ErrorStringFunc. +func (mock *Interface) ErrorString(ret nvsandboxutils.Ret) string { + if mock.ErrorStringFunc == nil { + panic("Interface.ErrorStringFunc: method is nil but Interface.ErrorString was just called") + } + callInfo := struct { + Ret nvsandboxutils.Ret + }{ + Ret: ret, + } + mock.lockErrorString.Lock() + mock.calls.ErrorString = append(mock.calls.ErrorString, callInfo) + mock.lockErrorString.Unlock() + return mock.ErrorStringFunc(ret) +} + +// ErrorStringCalls gets all the calls that were made to ErrorString. +// Check the length with: +// +// len(mockedInterface.ErrorStringCalls()) +func (mock *Interface) ErrorStringCalls() []struct { + Ret nvsandboxutils.Ret +} { + var calls []struct { + Ret nvsandboxutils.Ret + } + mock.lockErrorString.RLock() + calls = mock.calls.ErrorString + mock.lockErrorString.RUnlock() + return calls +} + +// GetDriverVersion calls GetDriverVersionFunc. +func (mock *Interface) GetDriverVersion() (string, nvsandboxutils.Ret) { + if mock.GetDriverVersionFunc == nil { + panic("Interface.GetDriverVersionFunc: method is nil but Interface.GetDriverVersion was just called") + } + callInfo := struct { + }{} + mock.lockGetDriverVersion.Lock() + mock.calls.GetDriverVersion = append(mock.calls.GetDriverVersion, callInfo) + mock.lockGetDriverVersion.Unlock() + return mock.GetDriverVersionFunc() +} + +// GetDriverVersionCalls gets all the calls that were made to GetDriverVersion. +// Check the length with: +// +// len(mockedInterface.GetDriverVersionCalls()) +func (mock *Interface) GetDriverVersionCalls() []struct { +} { + var calls []struct { + } + mock.lockGetDriverVersion.RLock() + calls = mock.calls.GetDriverVersion + mock.lockGetDriverVersion.RUnlock() + return calls +} + +// GetFileContent calls GetFileContentFunc. +func (mock *Interface) GetFileContent(s string) (string, nvsandboxutils.Ret) { + if mock.GetFileContentFunc == nil { + panic("Interface.GetFileContentFunc: method is nil but Interface.GetFileContent was just called") + } + callInfo := struct { + S string + }{ + S: s, + } + mock.lockGetFileContent.Lock() + mock.calls.GetFileContent = append(mock.calls.GetFileContent, callInfo) + mock.lockGetFileContent.Unlock() + return mock.GetFileContentFunc(s) +} + +// GetFileContentCalls gets all the calls that were made to GetFileContent. +// Check the length with: +// +// len(mockedInterface.GetFileContentCalls()) +func (mock *Interface) GetFileContentCalls() []struct { + S string +} { + var calls []struct { + S string + } + mock.lockGetFileContent.RLock() + calls = mock.calls.GetFileContent + mock.lockGetFileContent.RUnlock() + return calls +} + +// GetGpuResource calls GetGpuResourceFunc. +func (mock *Interface) GetGpuResource(s string) ([]nvsandboxutils.GpuFileInfo, nvsandboxutils.Ret) { + if mock.GetGpuResourceFunc == nil { + panic("Interface.GetGpuResourceFunc: method is nil but Interface.GetGpuResource was just called") + } + callInfo := struct { + S string + }{ + S: s, + } + mock.lockGetGpuResource.Lock() + mock.calls.GetGpuResource = append(mock.calls.GetGpuResource, callInfo) + mock.lockGetGpuResource.Unlock() + return mock.GetGpuResourceFunc(s) +} + +// GetGpuResourceCalls gets all the calls that were made to GetGpuResource. +// Check the length with: +// +// len(mockedInterface.GetGpuResourceCalls()) +func (mock *Interface) GetGpuResourceCalls() []struct { + S string +} { + var calls []struct { + S string + } + mock.lockGetGpuResource.RLock() + calls = mock.calls.GetGpuResource + mock.lockGetGpuResource.RUnlock() + return calls +} + +// Init calls InitFunc. +func (mock *Interface) Init(s string) nvsandboxutils.Ret { + if mock.InitFunc == nil { + panic("Interface.InitFunc: method is nil but Interface.Init was just called") + } + callInfo := struct { + S string + }{ + S: s, + } + mock.lockInit.Lock() + mock.calls.Init = append(mock.calls.Init, callInfo) + mock.lockInit.Unlock() + return mock.InitFunc(s) +} + +// InitCalls gets all the calls that were made to Init. +// Check the length with: +// +// len(mockedInterface.InitCalls()) +func (mock *Interface) InitCalls() []struct { + S string +} { + var calls []struct { + S string + } + mock.lockInit.RLock() + calls = mock.calls.Init + mock.lockInit.RUnlock() + return calls +} + +// LookupSymbol calls LookupSymbolFunc. +func (mock *Interface) LookupSymbol(s string) error { + if mock.LookupSymbolFunc == nil { + panic("Interface.LookupSymbolFunc: method is nil but Interface.LookupSymbol was just called") + } + callInfo := struct { + S string + }{ + S: s, + } + mock.lockLookupSymbol.Lock() + mock.calls.LookupSymbol = append(mock.calls.LookupSymbol, callInfo) + mock.lockLookupSymbol.Unlock() + return mock.LookupSymbolFunc(s) +} + +// LookupSymbolCalls gets all the calls that were made to LookupSymbol. +// Check the length with: +// +// len(mockedInterface.LookupSymbolCalls()) +func (mock *Interface) LookupSymbolCalls() []struct { + S string +} { + var calls []struct { + S string + } + mock.lockLookupSymbol.RLock() + calls = mock.calls.LookupSymbol + mock.lockLookupSymbol.RUnlock() + return calls +} + +// Shutdown calls ShutdownFunc. +func (mock *Interface) Shutdown() nvsandboxutils.Ret { + if mock.ShutdownFunc == nil { + panic("Interface.ShutdownFunc: method is nil but Interface.Shutdown was just called") + } + callInfo := struct { + }{} + mock.lockShutdown.Lock() + mock.calls.Shutdown = append(mock.calls.Shutdown, callInfo) + mock.lockShutdown.Unlock() + return mock.ShutdownFunc() +} + +// ShutdownCalls gets all the calls that were made to Shutdown. +// Check the length with: +// +// len(mockedInterface.ShutdownCalls()) +func (mock *Interface) ShutdownCalls() []struct { +} { + var calls []struct { + } + mock.lockShutdown.RLock() + calls = mock.calls.Shutdown + mock.lockShutdown.RUnlock() + return calls +} diff --git a/internal/nvsandboxutils/nvsandboxutils.go b/internal/nvsandboxutils/nvsandboxutils.go new file mode 100644 index 000000000..29544bc93 --- /dev/null +++ b/internal/nvsandboxutils/nvsandboxutils.go @@ -0,0 +1,72 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +// WARNING: THIS FILE WAS AUTOMATICALLY GENERATED. +// Code generated by https://git.io/c-for-go. DO NOT EDIT. + +package nvsandboxutils + +/* +#cgo linux LDFLAGS: -Wl,--export-dynamic -Wl,--unresolved-symbols=ignore-in-object-files +#cgo darwin LDFLAGS: -Wl,-undefined,dynamic_lookup +#include "nvsandboxutils.h" +#include +#include "cgo_helpers.h" +*/ +import "C" +import "unsafe" + +// nvSandboxUtilsInit function as declared in nvsandboxutils/nvsandboxutils.h +func nvSandboxUtilsInit(Input *InitInput) Ret { + cInput, _ := (*C.nvSandboxUtilsInitInput_t)(unsafe.Pointer(Input)), cgoAllocsUnknown + __ret := C.nvSandboxUtilsInit(cInput) + __v := (Ret)(__ret) + return __v +} + +// nvSandboxUtilsShutdown function as declared in nvsandboxutils/nvsandboxutils.h +func nvSandboxUtilsShutdown() Ret { + __ret := C.nvSandboxUtilsShutdown() + __v := (Ret)(__ret) + return __v +} + +// nvSandboxUtilsGetDriverVersion function as declared in nvsandboxutils/nvsandboxutils.h +func nvSandboxUtilsGetDriverVersion(Version *byte, Length uint32) Ret { + cVersion, _ := (*C.char)(unsafe.Pointer(Version)), cgoAllocsUnknown + cLength, _ := (C.uint)(Length), cgoAllocsUnknown + __ret := C.nvSandboxUtilsGetDriverVersion(cVersion, cLength) + __v := (Ret)(__ret) + return __v +} + +// nvSandboxUtilsGetGpuResource function as declared in nvsandboxutils/nvsandboxutils.h +func nvSandboxUtilsGetGpuResource(Request *GpuRes) Ret { + cRequest, _ := (*C.nvSandboxUtilsGpuRes_t)(unsafe.Pointer(Request)), cgoAllocsUnknown + __ret := C.nvSandboxUtilsGetGpuResource(cRequest) + __v := (Ret)(__ret) + return __v +} + +// nvSandboxUtilsGetFileContent function as declared in nvsandboxutils/nvsandboxutils.h +func nvSandboxUtilsGetFileContent(FilePath *byte, Content *byte, ContentSize *uint32) Ret { + cFilePath, _ := (*C.char)(unsafe.Pointer(FilePath)), cgoAllocsUnknown + cContent, _ := (*C.char)(unsafe.Pointer(Content)), cgoAllocsUnknown + cContentSize, _ := (*C.uint)(unsafe.Pointer(ContentSize)), cgoAllocsUnknown + __ret := C.nvSandboxUtilsGetFileContent(cFilePath, cContent, cContentSize) + __v := (Ret)(__ret) + return __v +} diff --git a/internal/nvsandboxutils/nvsandboxutils.h b/internal/nvsandboxutils/nvsandboxutils.h new file mode 100644 index 000000000..3c66e1598 --- /dev/null +++ b/internal/nvsandboxutils/nvsandboxutils.h @@ -0,0 +1,298 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __NVSANDBOXUTILS_H__ +#define __NVSANDBOXUTILS_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#define INPUT_LENGTH 256 +#define MAX_FILE_PATH 256 +#define MAX_NAME_LENGTH 256 + +/***************************************************************************************************/ +/** @defgroup enums Enumerations + * @{ + */ +/***************************************************************************************************/ + +/** + * Return types + */ +typedef enum +{ + NVSANDBOXUTILS_SUCCESS = 0, //!< The operation was successful + NVSANDBOXUTILS_ERROR_UNINITIALIZED = 1, //!< The library wasn't successfully initialized + NVSANDBOXUTILS_ERROR_NOT_SUPPORTED = 2, //!< The requested operation is not supported on target device + NVSANDBOXUTILS_ERROR_INVALID_ARG = 3, //!< A supplied argument is invalid + NVSANDBOXUTILS_ERROR_INSUFFICIENT_SIZE = 4, //!< A supplied argument is not large enough + NVSANDBOXUTILS_ERROR_VERSION_NOT_SUPPORTED = 5, //!< Requested library version is not supported + NVSANDBOXUTILS_ERROR_LIBRARY_LOAD = 6, //!< The library load failed + NVSANDBOXUTILS_ERROR_FUNCTION_NOT_FOUND = 7, //!< Called function was not found + NVSANDBOXUTILS_ERROR_DEVICE_NOT_FOUND = 8, //!< Target device was not found + NVSANDBOXUTILS_ERROR_NVML_LIB_CALL = 9, //!< NVML library call failed + NVSANDBOXUTILS_ERROR_OUT_OF_MEMORY = 10, //!< There is insufficient memory + NVSANDBOXUTILS_ERROR_FILEPATH_NOT_FOUND = 11, //!< A supplied file path was not found + NVSANDBOXUTILS_ERROR_UNKNOWN = 0xFFFF, //!< Unknown error occurred +} nvSandboxUtilsRet_t; + +/** + * Return if there is an error + */ +#define RETURN_ON_SANDBOX_ERROR(result) \ + if ((result) != NVSANDBOXUTILS_SUCCESS) { \ + NVSANDBOXUTILS_ERROR_MSG("%s %d result=%d", __func__, __LINE__, result); \ + return result; \ + } + +/** + * Log levels + */ +typedef enum +{ + NVSANDBOXUTILS_LOG_LEVEL_FATAL = 0, //!< Log fatal errors + NVSANDBOXUTILS_LOG_LEVEL_ERROR = 1, //!< Log all errors + NVSANDBOXUTILS_LOG_LEVEL_WARN = 2, //!< Log all warnings + NVSANDBOXUTILS_LOG_LEVEL_DEBUG = 3, //!< Log all debug messages + NVSANDBOXUTILS_LOG_LEVEL_INFO = 4, //!< Log all info messages + NVSANDBOXUTILS_LOG_LEVEL_NONE = 0xFFFF, //!< Log none +} nvSandboxUtilsLogLevel_t; + +/** + * Input rootfs to help access files inside the driver container + */ +typedef enum +{ + NV_ROOTFS_DEFAULT, //!< Default no rootfs + NV_ROOTFS_PATH, //!< /run/nvidia/driver + NV_ROOTFS_PID, //!< /proc/PID/mountinfo +} nvSandboxUtilsRootfsInputType_t; + +/** + * File type + */ +typedef enum +{ + NV_DEV, //!< /dev file system + NV_PROC, //!< /proc file system + NV_SYS, //!< /sys file system +} nvSandboxUtilsFileType_t; + +/** + * File subtype + */ +typedef enum +{ + NV_DEV_NVIDIA, //!< /dev/nvidia0 + NV_DEV_DRI_CARD, //!< /dev/dri/card1 + NV_DEV_DRI_RENDERD, //!< /dev/dri/renderD128 + NV_DEV_DRI_CARD_SYMLINK, //!< /dev/dri/by-path/pci-0000:41:00.0-card + NV_DEV_DRI_RENDERD_SYMLINK, //!< /dev/dri/by-path/pci-0000:41:00.0-render + NV_DEV_NVIDIA_UVM, //!< /dev/nvidia-uvm + NV_DEV_NVIDIA_UVM_TOOLS, //!< /dev/nvidia-uvm-tools + NV_DEV_NVIDIA_MODESET, //!< /dev/nvidia-uvm-modeset + NV_DEV_NVIDIA_CTL, //!< /dev/nvidiactl + NV_DEV_GDRDRV, //!< /dev/gdrdrv + NV_DEV_NVIDIA_CAPS_NVIDIA_CAP, //!< /dev/nvidia-caps/nvidia-cap22 + NV_PROC_DRIVER_NVIDIA_GPUS_PCIBUSID, //!< /proc/driver/nvidia/gpus/0000:2d:00.0 + NV_PROC_DRIVER_NVIDIA_GPUS, //!< /proc/driver/nvidia/gpus (for mask out) + NV_PROC_NVIDIA_PARAMS, //!< /proc/driver/nvidia/params + NV_PROC_NVIDIA_CAPS_MIG_MINORS, //!< /proc/driver/nvidia-caps/mig-minors + NV_PROC_DRIVER_NVIDIA_CAPABILITIES_GPU, //!< /proc/driver/nvidia/capabilities/gpu0 + NV_PROC_DRIVER_NVIDIA_CAPABILITIES, //!< /proc/driver/nvidia/capabilities (for mask out) + NV_PROC_DRIVER_NVIDIA_CAPABILITIIES_GPU_MIG_CI_ACCESS, //!< proc/driver/nvidia/capabilities/gpu0/mig/gi2/ci0/access + NV_SYS_MODULE_NVIDIA_DRIVER_PCIBUSID, //!< /sys/module/nvidia/drivers/pci:nvidia/0000:2d:00.0 + NV_SYS_MODULE_NVIDIA_DRIVER, //!< /sys/module/nvidia/drivers/pci:nvidia (for mask out) + NV_NUM_SUBTYPE, // always at the end. +} nvSandboxUtilsFileSystemSubType_t; + +/** + * File module + */ +typedef enum +{ + NV_GPU, //!< Target device + NV_MIG, //!< Target device- MIG + NV_DRIVER_NVIDIA, //!< NVIDIA kernel driver + NV_DRIVER_NVIDIA_UVM, //!< NVIDIA kernel driver-UVM + NV_DRIVER_NVIDIA_MODESET, //!< NVIDIA kernel driver-modeset + NV_DRIVER_GDRDRV, //!< GDRDRV driver + NV_SYSTEM, //!< System module +} nvSandboxUtilsFileModule_t; + +/** + * Flag to provide additional details about the file + */ +typedef enum +{ + NV_FILE_FLAG_HINT = (1 << 0), //!< Default no hint + NV_FILE_FLAG_MASKOUT = (1 << 1), //!< For /proc/driver/nvidia/gpus + NV_FILE_FLAG_CONTENT = (1 << 2), //!< For /proc/driver/nvidia/params + //!< For SYMLINK + //!< Use \p nvSandboxUtilsGetFileContent to get name of the linked file + NV_FILE_FLAG_DEPRECTATED = (1 << 3), //!< For all the FIRMWARE GSP file + NV_FILE_FLAG_CANDIDATES = (1 << 4), //!< For libcuda.so +} nvSandboxUtilsFileFlag_t; + +/** + * Input type of the target device + */ +typedef enum +{ + NV_GPU_INPUT_GPU_UUID, //!< GPU UUID + NV_GPU_INPUT_MIG_UUID, //!< MIG UUID + NV_GPU_INPUT_PCI_ID, //!< PCIe DBDF ID + NV_GPU_INPUT_PCI_INDEX, //!< PCIe bus order (0 points to the GPU that has lowest PCIe BDF) +} nvSandboxUtilsGpuInputType_t; + +/** @} */ + +/***************************************************************************************************/ +/** @defgroup dataTypes Structures and Unions + * @{ + */ +/***************************************************************************************************/ + +/** + * Initalization input v1 + */ +typedef struct +{ + unsigned int version; //!< Version for the structure + nvSandboxUtilsRootfsInputType_t type; //!< One of \p nvSandboxUtilsRootfsInputType_t + char value[INPUT_LENGTH]; //!< String representation of input +} nvSandboxUtilsInitInput_v1_t; + +typedef nvSandboxUtilsInitInput_v1_t nvSandboxUtilsInitInput_t; + +/** + * File system information + */ +typedef struct nvSandboxUtilsGpuFileInfo_v1_t +{ + struct nvSandboxUtilsGpuFileInfo_v1_t *next; //!< Pointer to the next node in the linked list + nvSandboxUtilsFileType_t fileType; //!< One of \p nvSandboxUtilsFileType_t + nvSandboxUtilsFileSystemSubType_t fileSubType; //!< One of \p nvSandboxUtilsFileSystemSubType_t + nvSandboxUtilsFileModule_t module; //!< One of \p nvSandboxUtilsFileModule_t + nvSandboxUtilsFileFlag_t flags; //!< One of \p nvSandboxUtilsFileFlag_t + char *filePath; //!< Relative file path to rootfs +}nvSandboxUtilsGpuFileInfo_v1_t; + +/** + * GPU resource request v1 + */ +typedef struct +{ + unsigned int version; //!< Version for the structure + nvSandboxUtilsGpuInputType_t inputType; //!< One of \p nvSandboxUtilsGpuInputType_t + char input[INPUT_LENGTH]; //!< String representation of input + nvSandboxUtilsGpuFileInfo_v1_t *files; //!< Linked list of \ref nvSandboxUtilsGpuFileInfo_v1_t +} nvSandboxUtilsGpuRes_v1_t; + +typedef nvSandboxUtilsGpuRes_v1_t nvSandboxUtilsGpuRes_t; + +/** @} */ + +/***************************************************************************************************/ +/** @defgroup funcs Functions + * @{ + */ +/***************************************************************************************************/ + +/* ************************************************* + * Initialize library + * ************************************************* + */ +/** + * Prepare library resources before library API can be used. + * This initialization will not fail if one of the initialization prerequisites fails. + * @param input Reference to the called-supplied input struct that has initialization fields + * + * @returns @ref NVSANDBOXUTILS_SUCCESS on success + * @returns @ref NVSANDBOXUTILS_ERROR_INVALID_ARG if \p input->value isn't a valid rootfs path + * @returns @ref NVSANDBOXUTILS_ERROR_VERSION_NOT_SUPPORTED if \p input->version isn't supported by the library + * @returns @ref NVSANDBOXUTILS_ERROR_FILEPATH_NOT_FOUND if any of the required file paths are not found during initialization + * @returns @ref NVSANDBOXUTILS_ERROR_OUT_OF_MEMORY if there is insufficient system memory during initialization + * @returns @ref NVSANDBOXUTILS_ERROR_LIBRARY_LOAD on any error during loading the library + */ +nvSandboxUtilsRet_t nvSandboxUtilsInit(nvSandboxUtilsInitInput_t *input); + +/* ************************************************* + * Shutdown library + * ************************************************* + */ +/** + * Clean up library resources created by init call + * + * @returns @ref NVSANDBOXUTILS_SUCCESS on success + */ +nvSandboxUtilsRet_t nvSandboxUtilsShutdown(void); + +/* ************************************************* + * Get NVIDIA RM driver version + * ************************************************* + */ +/** + * Get NVIDIA RM driver version + * @param version Reference to caller-supplied buffer to return driver version string + * @param length The maximum allowed length of the string returned in \p version + * + * @returns @ref NVSANDBOXUTILS_SUCCESS on success + * @returns @ref NVSANDBOXUTILS_ERROR_INVALID_ARG if \p version is NULL + * @returns @ref NVSANDBOXUTILS_ERROR_NVML_LIB_CALL on any error during driver version query from NVML + */ +nvSandboxUtilsRet_t nvSandboxUtilsGetDriverVersion(char *version, unsigned int length); + +/* ************************************************* + * Get /dev, /proc, /sys file system information + * ************************************************* + */ +/** + * Get /dev, /proc, /sys file system information + * @param request Reference to caller-supplied request struct to return the file system information + * + * @returns @ref NVSANDBOXUTILS_SUCCESS on success + * @returns @ref NVSANDBOXUTILS_ERROR_INVALID_ARG if \p request->input doesn't match any device + * @returns @ref NVSANDBOXUTILS_ERROR_VERSION_NOT_SUPPORTED if \p request->version isn't supported by the library + */ +nvSandboxUtilsRet_t nvSandboxUtilsGetGpuResource(nvSandboxUtilsGpuRes_t *request); + +/* ************************************************* + * Get content of given file path + * ************************************************* + */ +/** + * Get file content of input file path + * @param filePath Reference to the file path + * @param content Reference to the caller-supplied buffer to return the file content + * @param contentSize Reference to the maximum allowed size of content. It is updated to the actual size of the content on return + * + * @returns @ref NVSANDBOXUTILS_SUCCESS on success + * @returns @ref NVSANDBOXUTILS_ERROR_INVALID_ARG if \p filePath or \p content is NULL + * @returns @ref NVSANDBOXUTILS_ERROR_INSUFFICIENT_SIZE if \p contentSize is too small + * @returns @ref NVSANDBOXUTILS_ERROR_FILEPATH_NOT_FOUND on an error while obtaining the content for the file path + */ +nvSandboxUtilsRet_t nvSandboxUtilsGetFileContent(char *filePath, char *content, unsigned int *contentSize); + +/** @} */ + +#ifdef __cplusplus +} +#endif +#endif // __NVSANDBOXUTILS_H__ diff --git a/internal/nvsandboxutils/refcount.go b/internal/nvsandboxutils/refcount.go new file mode 100644 index 000000000..f93107b0f --- /dev/null +++ b/internal/nvsandboxutils/refcount.go @@ -0,0 +1,31 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package nvsandboxutils + +type refcount int + +func (r *refcount) IncOnNoError(err error) { + if err == nil { + (*r)++ + } +} + +func (r *refcount) DecOnNoError(err error) { + if err == nil && (*r) > 0 { + (*r)-- + } +} diff --git a/internal/nvsandboxutils/refcount_test.go b/internal/nvsandboxutils/refcount_test.go new file mode 100644 index 000000000..bd311e10c --- /dev/null +++ b/internal/nvsandboxutils/refcount_test.go @@ -0,0 +1,139 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package nvsandboxutils + +import ( + "errors" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestRefcount(t *testing.T) { + testCases := []struct { + description string + workload func(r *refcount) + expectedRefcount refcount + }{ + { + description: "No inc or dec", + workload: func(r *refcount) {}, + expectedRefcount: refcount(0), + }, + { + description: "Single inc, no error", + workload: func(r *refcount) { + r.IncOnNoError(nil) + }, + expectedRefcount: refcount(1), + }, + { + description: "Single inc, with error", + workload: func(r *refcount) { + r.IncOnNoError(errors.New("")) + }, + expectedRefcount: refcount(0), + }, + { + description: "Double inc, no error", + workload: func(r *refcount) { + r.IncOnNoError(nil) + r.IncOnNoError(nil) + }, + expectedRefcount: refcount(2), + }, + { + description: "Double inc, one with error", + workload: func(r *refcount) { + r.IncOnNoError(nil) + r.IncOnNoError(errors.New("")) + }, + expectedRefcount: refcount(1), + }, + { + description: "Single dec, no error", + workload: func(r *refcount) { + r.DecOnNoError(nil) + }, + expectedRefcount: refcount(0), + }, + { + description: "Single dec, with error", + workload: func(r *refcount) { + r.DecOnNoError(errors.New("")) + }, + expectedRefcount: refcount(0), + }, + { + description: "Single inc, single dec, no errors", + workload: func(r *refcount) { + r.IncOnNoError(nil) + r.DecOnNoError(nil) + }, + expectedRefcount: refcount(0), + }, + { + description: "Double inc, Double dec, no errors", + workload: func(r *refcount) { + r.IncOnNoError(nil) + r.IncOnNoError(nil) + r.DecOnNoError(nil) + r.DecOnNoError(nil) + }, + expectedRefcount: refcount(0), + }, + { + description: "Double inc, Double dec, one inc error", + workload: func(r *refcount) { + r.IncOnNoError(nil) + r.IncOnNoError(errors.New("")) + r.DecOnNoError(nil) + r.DecOnNoError(nil) + }, + expectedRefcount: refcount(0), + }, + { + description: "Double inc, Double dec, one dec error", + workload: func(r *refcount) { + r.IncOnNoError(nil) + r.IncOnNoError(nil) + r.DecOnNoError(nil) + r.DecOnNoError(errors.New("")) + }, + expectedRefcount: refcount(1), + }, + { + description: "Double inc, Tripple dec, one dec error early on", + workload: func(r *refcount) { + r.IncOnNoError(nil) + r.IncOnNoError(nil) + r.DecOnNoError(errors.New("")) + r.DecOnNoError(nil) + r.DecOnNoError(nil) + }, + expectedRefcount: refcount(0), + }, + } + + for _, tc := range testCases { + t.Run(tc.description, func(t *testing.T) { + var r refcount + tc.workload(&r) + require.Equal(t, tc.expectedRefcount, r) + }) + } +} diff --git a/internal/nvsandboxutils/return.go b/internal/nvsandboxutils/return.go new file mode 100644 index 000000000..90d4ed84d --- /dev/null +++ b/internal/nvsandboxutils/return.go @@ -0,0 +1,74 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package nvsandboxutils + +import ( + "fmt" +) + +// nvsandboxutils.ErrorString() +func (l *library) ErrorString(r Ret) string { + return r.Error() +} + +// String returns the string representation of a Ret. +func (r Ret) String() string { + return r.Error() +} + +// Error returns the string representation of a Ret. +func (r Ret) Error() string { + return errorStringFunc(r) +} + +// Assigned to nvsandboxutils.ErrorString if the system nvsandboxutils library is in use. +var errorStringFunc = defaultErrorStringFunc + +// nvsanboxutilsErrorString is an alias for the default error string function. +var nvsanboxutilsErrorString = defaultErrorStringFunc + +// defaultErrorStringFunc provides a basic nvsandboxutils.ErrorString implementation. +// This allows the nvsandboxutils.ErrorString function to be used even if the nvsandboxutils library +// is not loaded. +var defaultErrorStringFunc = func(r Ret) string { + switch r { + case SUCCESS: + return "SUCCESS" + case ERROR_UNINITIALIZED: + return "ERROR_UNINITIALIZED" + case ERROR_NOT_SUPPORTED: + return "ERROR_NOT_SUPPORTED" + case ERROR_INVALID_ARG: + return "ERROR_INVALID_ARG" + case ERROR_INSUFFICIENT_SIZE: + return "ERROR_INSUFFICIENT_SIZE" + case ERROR_VERSION_NOT_SUPPORTED: + return "ERROR_VERSION_NOT_SUPPORTED" + case ERROR_LIBRARY_LOAD: + return "ERROR_LIBRARY_LOAD" + case ERROR_FUNCTION_NOT_FOUND: + return "ERROR_FUNCTION_NOT_FOUND" + case ERROR_DEVICE_NOT_FOUND: + return "ERROR_DEVICE_NOT_FOUND" + case ERROR_NVML_LIB_CALL: + return "ERROR_NVML_LIB_CALL" + case ERROR_UNKNOWN: + return "ERROR_UNKNOWN" + default: + return fmt.Sprintf("unknown return value: %d", r) + } +} diff --git a/internal/nvsandboxutils/types_gen.go b/internal/nvsandboxutils/types_gen.go new file mode 100644 index 000000000..90a00ed6b --- /dev/null +++ b/internal/nvsandboxutils/types_gen.go @@ -0,0 +1,39 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs types.go + +package nvsandboxutils + +type InitInput_v1 struct { + Version uint32 + Type uint32 + Value [256]int8 +} + +type InitInput struct { + Version uint32 + Type uint32 + Value [256]int8 +} + +type GpuFileInfo_v1 struct { + Next *GpuFileInfo_v1 + FileType uint32 + FileSubType uint32 + Module uint32 + Flags uint32 + FilePath *int8 +} + +type GpuRes_v1 struct { + Version uint32 + InputType uint32 + Input [256]int8 + Files *GpuFileInfo_v1 +} + +type GpuRes struct { + Version uint32 + InputType uint32 + Input [256]int8 + Files *GpuFileInfo_v1 +} diff --git a/internal/nvsandboxutils/zz_generated.api.go b/internal/nvsandboxutils/zz_generated.api.go new file mode 100644 index 000000000..631b2b05a --- /dev/null +++ b/internal/nvsandboxutils/zz_generated.api.go @@ -0,0 +1,43 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +// Generated Code; DO NOT EDIT. + +package nvsandboxutils + +// The variables below represent package level methods from the library type. +var ( + ErrorString = libnvsandboxutils.ErrorString + GetDriverVersion = libnvsandboxutils.GetDriverVersion + GetFileContent = libnvsandboxutils.GetFileContent + GetGpuResource = libnvsandboxutils.GetGpuResource + Init = libnvsandboxutils.Init + LookupSymbol = libnvsandboxutils.LookupSymbol + Shutdown = libnvsandboxutils.Shutdown +) + +// Interface represents the interface for the library type. +// +//go:generate moq -rm -fmt=goimports -out mock/interface.go -pkg mock . Interface:Interface +type Interface interface { + ErrorString(Ret) string + GetDriverVersion() (string, Ret) + GetFileContent(string) (string, Ret) + GetGpuResource(string) ([]GpuFileInfo, Ret) + Init(string) Ret + LookupSymbol(string) error + Shutdown() Ret +} diff --git a/internal/oci/runtime.go b/internal/oci/runtime.go index 2ea71cb20..6039490da 100644 --- a/internal/oci/runtime.go +++ b/internal/oci/runtime.go @@ -19,7 +19,7 @@ package oci // Runtime is an interface for a runtime shim. The Exec method accepts a list // of command line arguments, and returns an error / nil. // -//go:generate moq -rm -stub -out runtime_mock.go . Runtime +//go:generate moq -rm -fmt=goimports -stub -out runtime_mock.go . Runtime type Runtime interface { Exec([]string) error String() string diff --git a/internal/oci/spec.go b/internal/oci/spec.go index e95ea1cfb..11cac3e7b 100644 --- a/internal/oci/spec.go +++ b/internal/oci/spec.go @@ -33,7 +33,7 @@ type SpecModifier interface { // Spec defines the operations to be performed on an OCI specification // -//go:generate moq -stub -out spec_mock.go . Spec +//go:generate moq -rm -fmt=goimports -stub -out spec_mock.go . Spec type Spec interface { Load() (*specs.Spec, error) Flush() error diff --git a/internal/oci/spec_memory.go b/internal/oci/spec_memory.go index 478db5a2d..fd27bdada 100644 --- a/internal/oci/spec_memory.go +++ b/internal/oci/spec_memory.go @@ -61,11 +61,11 @@ func (s *memorySpec) Modify(m SpecModifier) error { // Otherwise the returned value will be empty and the boolean will // be false. func (s memorySpec) LookupEnv(key string) (string, bool) { - if s.Spec == nil || s.Spec.Process == nil { + if s.Spec == nil || s.Process == nil { return "", false } - for _, env := range s.Spec.Process.Env { + for _, env := range s.Process.Env { if !strings.HasPrefix(env, key) { continue } diff --git a/internal/oci/spec_memory_test.go b/internal/oci/spec_memory_test.go index 3e8ba0ede..ebf92e750 100644 --- a/internal/oci/spec_memory_test.go +++ b/internal/oci/spec_memory_test.go @@ -160,7 +160,7 @@ func TestModify(t *testing.T) { require.EqualValues(t, &specs.Spec{}, spec.Spec, "%d: %v", i, tc) default: require.NoError(t, err, "%d: %v", i, tc) - require.Equal(t, "updated", spec.Spec.Version, "%d: %v", i, tc) + require.Equal(t, "updated", spec.Version, "%d: %v", i, tc) } } } diff --git a/internal/oci/spec_test.go b/internal/oci/spec_test.go index c626c5bf4..f11493785 100644 --- a/internal/oci/spec_test.go +++ b/internal/oci/spec_test.go @@ -19,14 +19,14 @@ func TestMaintainSpec(t *testing.T) { } for _, f := range files { - inputSpecPath := filepath.Join(moduleRoot, "test/input", f) + inputSpecPath := filepath.Join(moduleRoot, "tests/input", f) spec := NewFileSpec(inputSpecPath).(*fileSpec) _, err := spec.Load() require.NoError(t, err) - outputSpecPath := filepath.Join(moduleRoot, "test/output", f) + outputSpecPath := filepath.Join(moduleRoot, "tests/output", f) spec.path = outputSpecPath spec.Flush() diff --git a/internal/platform-support/dgpu/by-path-hooks.go b/internal/platform-support/dgpu/by-path-hooks.go index cd38f5e72..935d831b4 100644 --- a/internal/platform-support/dgpu/by-path-hooks.go +++ b/internal/platform-support/dgpu/by-path-hooks.go @@ -27,11 +27,11 @@ import ( // byPathHookDiscoverer discovers the entities required for injecting by-path DRM device links type byPathHookDiscoverer struct { - logger logger.Interface - devRoot string - nvidiaCDIHookPath string - pciBusID string - deviceNodes discover.Discover + logger logger.Interface + devRoot string + hookCreator discover.HookCreator + pciBusID string + deviceNodes discover.Discover } var _ discover.Discover = (*byPathHookDiscoverer)(nil) @@ -41,6 +41,11 @@ func (d *byPathHookDiscoverer) Devices() ([]discover.Device, error) { return nil, nil } +// EnvVars returns the empty list for the by-path hook discoverer +func (d *byPathHookDiscoverer) EnvVars() ([]discover.EnvVar, error) { + return nil, nil +} + // Hooks returns the hooks for the GPU device. // The following hooks are detected: // 1. A hook to create /dev/dri/by-path symlinks @@ -53,18 +58,9 @@ func (d *byPathHookDiscoverer) Hooks() ([]discover.Hook, error) { return nil, nil } - var args []string - for _, l := range links { - args = append(args, "--link", l) - } - - hook := discover.CreateNvidiaCDIHook( - d.nvidiaCDIHookPath, - "create-symlinks", - args..., - ) + hook := d.hookCreator.Create("create-symlinks", links...) - return []discover.Hook{hook}, nil + return hook.Hooks() } // Mounts returns an empty slice for a full GPU diff --git a/internal/platform-support/dgpu/dgpu.go b/internal/platform-support/dgpu/dgpu.go index b79f6bd42..de411bd67 100644 --- a/internal/platform-support/dgpu/dgpu.go +++ b/internal/platform-support/dgpu/dgpu.go @@ -17,6 +17,8 @@ package dgpu import ( + "errors" + "github.com/NVIDIA/go-nvlib/pkg/nvlib/device" "github.com/NVIDIA/nvidia-container-toolkit/internal/discover" @@ -25,22 +27,78 @@ import ( ) // NewForDevice creates a discoverer for the specified Device. +// nvsandboxutils is used for discovery if specified, otherwise NVML is used. func NewForDevice(d device.Device, opts ...Option) (discover.Discover, error) { o := new(opts...) - return o.newNvmlDGPUDiscoverer(&toRequiredInfo{d}) + var discoverers []discover.Discover + var errs error + nvsandboxutilsDiscoverer, err := o.newNvsandboxutilsDGPUDiscoverer(d) + if err != nil { + // TODO: Log a warning + errs = errors.Join(errs, err) + } else if nvsandboxutilsDiscoverer != nil { + discoverers = append(discoverers, nvsandboxutilsDiscoverer) + } + + nvmlDiscoverer, err := o.newNvmlDGPUDiscoverer(&toRequiredInfo{d}) + if err != nil { + // TODO: Log a warning + errs = errors.Join(errs, err) + } else if nvmlDiscoverer != nil { + discoverers = append(discoverers, nvmlDiscoverer) + } + + if len(discoverers) == 0 { + return nil, errs + } + + return discover.WithCache( + discover.FirstValid( + discoverers..., + ), + ), nil } -// NewForDevice creates a discoverer for the specified device and its associated MIG device. +// NewForMigDevice creates a discoverer for the specified device and its associated MIG device. +// nvsandboxutils is used for discovery if specified, otherwise NVML is used. func NewForMigDevice(d device.Device, mig device.MigDevice, opts ...Option) (discover.Discover, error) { o := new(opts...) + o.isMigDevice = true - return o.newNvmlMigDiscoverer( + var discoverers []discover.Discover + var errs error + nvsandboxutilsDiscoverer, err := o.newNvsandboxutilsDGPUDiscoverer(mig) + if err != nil { + // TODO: Log a warning + errs = errors.Join(errs, err) + } else if nvsandboxutilsDiscoverer != nil { + discoverers = append(discoverers, nvsandboxutilsDiscoverer) + } + + nvmlDiscoverer, err := o.newNvmlMigDiscoverer( &toRequiredMigInfo{ MigDevice: mig, parent: &toRequiredInfo{d}, }, ) + if err != nil { + // TODO: Log a warning + errs = errors.Join(errs, err) + } else if nvmlDiscoverer != nil { + discoverers = append(discoverers, nvmlDiscoverer) + } + + if len(discoverers) == 0 { + return nil, errs + } + + return discover.WithCache( + discover.FirstValid( + discoverers..., + ), + ), nil + } func new(opts ...Option) *options { diff --git a/internal/platform-support/dgpu/nvml.go b/internal/platform-support/dgpu/nvml.go index f24f4d552..2ad36a24e 100644 --- a/internal/platform-support/dgpu/nvml.go +++ b/internal/platform-support/dgpu/nvml.go @@ -58,11 +58,11 @@ func (o *options) newNvmlDGPUDiscoverer(d requiredInfo) (discover.Discover, erro ) byPathHooks := &byPathHookDiscoverer{ - logger: o.logger, - devRoot: o.devRoot, - nvidiaCDIHookPath: o.nvidiaCDIHookPath, - pciBusID: pciBusID, - deviceNodes: deviceNodes, + logger: o.logger, + devRoot: o.devRoot, + hookCreator: o.hookCreator, + pciBusID: pciBusID, + deviceNodes: deviceNodes, } dd := discover.Merge( diff --git a/internal/platform-support/dgpu/nvml_test.go b/internal/platform-support/dgpu/nvml_test.go index da4ac2a77..2ffbb9f31 100644 --- a/internal/platform-support/dgpu/nvml_test.go +++ b/internal/platform-support/dgpu/nvml_test.go @@ -139,7 +139,7 @@ func TestNewNvmlMIGDiscoverer(t *testing.T) { }, expectedDevices: nil, expectedMounts: nil, - expectedHooks: []discover.Hook{}, + expectedHooks: nil, }, } for _, tc := range testCases { diff --git a/internal/platform-support/dgpu/nvsandboxutils.go b/internal/platform-support/dgpu/nvsandboxutils.go new file mode 100644 index 000000000..9345f63a0 --- /dev/null +++ b/internal/platform-support/dgpu/nvsandboxutils.go @@ -0,0 +1,126 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package dgpu + +import ( + "fmt" + "path/filepath" + "strings" + + "github.com/NVIDIA/go-nvml/pkg/nvml" + + "github.com/NVIDIA/nvidia-container-toolkit/internal/discover" + "github.com/NVIDIA/nvidia-container-toolkit/internal/nvsandboxutils" +) + +type nvsandboxutilsDGPU struct { + lib nvsandboxutils.Interface + uuid string + devRoot string + isMig bool + hookCreator discover.HookCreator + deviceLinks []string +} + +var _ discover.Discover = (*nvsandboxutilsDGPU)(nil) + +type UUIDer interface { + GetUUID() (string, nvml.Return) +} + +func (o *options) newNvsandboxutilsDGPUDiscoverer(d UUIDer) (discover.Discover, error) { + if o.nvsandboxutilslib == nil { + return nil, nil + } + + uuid, nvmlRet := d.GetUUID() + if nvmlRet != nvml.SUCCESS { + return nil, fmt.Errorf("failed to get device UUID: %w", nvmlRet) + } + + nvd := nvsandboxutilsDGPU{ + lib: o.nvsandboxutilslib, + uuid: uuid, + devRoot: strings.TrimSuffix(filepath.Clean(o.devRoot), "/dev"), + isMig: o.isMigDevice, + hookCreator: o.hookCreator, + } + + return &nvd, nil +} + +func (d *nvsandboxutilsDGPU) Devices() ([]discover.Device, error) { + gpuFileInfos, ret := d.lib.GetGpuResource(d.uuid) + if ret != nvsandboxutils.SUCCESS { + return nil, fmt.Errorf("failed to get GPU resource: %w", ret) + } + + var devices []discover.Device + for _, info := range gpuFileInfos { + switch info.SubType { + case nvsandboxutils.NV_DEV_DRI_CARD, nvsandboxutils.NV_DEV_DRI_RENDERD: + if d.isMig { + continue + } + fallthrough + case nvsandboxutils.NV_DEV_NVIDIA, nvsandboxutils.NV_DEV_NVIDIA_CAPS_NVIDIA_CAP: + containerPath := info.Path + if d.devRoot != "/" { + containerPath = strings.TrimPrefix(containerPath, d.devRoot) + } + + // TODO: Extend discover.Device with additional information. + device := discover.Device{ + HostPath: info.Path, + Path: containerPath, + } + devices = append(devices, device) + case nvsandboxutils.NV_DEV_DRI_CARD_SYMLINK, nvsandboxutils.NV_DEV_DRI_RENDERD_SYMLINK: + if d.isMig { + continue + } + if info.Flags == nvsandboxutils.NV_FILE_FLAG_CONTENT { + targetPath, ret := d.lib.GetFileContent(info.Path) + if ret != nvsandboxutils.SUCCESS { + return nil, fmt.Errorf("failed to get symlink: %w", ret) + } + d.deviceLinks = append(d.deviceLinks, fmt.Sprintf("%v::%v", targetPath, info.Path)) + } + } + } + + return devices, nil +} + +func (d *nvsandboxutilsDGPU) EnvVars() ([]discover.EnvVar, error) { + return nil, nil +} + +// Hooks returns a hook to create the by-path symlinks for the discovered devices. +func (d *nvsandboxutilsDGPU) Hooks() ([]discover.Hook, error) { + if len(d.deviceLinks) == 0 { + return nil, nil + } + + hook := d.hookCreator.Create("create-symlinks", d.deviceLinks...) + + return hook.Hooks() +} + +func (d *nvsandboxutilsDGPU) Mounts() ([]discover.Mount, error) { + return nil, nil +} diff --git a/internal/platform-support/dgpu/nvsandboxutils_test.go b/internal/platform-support/dgpu/nvsandboxutils_test.go new file mode 100644 index 000000000..fb9df1878 --- /dev/null +++ b/internal/platform-support/dgpu/nvsandboxutils_test.go @@ -0,0 +1,174 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package dgpu + +import ( + "testing" + + "github.com/NVIDIA/go-nvlib/pkg/nvlib/device" + "github.com/NVIDIA/go-nvml/pkg/nvml" + mocknvml "github.com/NVIDIA/go-nvml/pkg/nvml/mock" + testlog "github.com/sirupsen/logrus/hooks/test" + "github.com/stretchr/testify/require" + + "github.com/NVIDIA/nvidia-container-toolkit/internal/discover" + "github.com/NVIDIA/nvidia-container-toolkit/internal/nvsandboxutils" + mocknvsandboxutils "github.com/NVIDIA/nvidia-container-toolkit/internal/nvsandboxutils/mock" +) + +func TestNewNvsandboxutilsDGPUDiscoverer(t *testing.T) { + logger, _ := testlog.NewNullLogger() + + nvmllib := &mocknvml.Interface{} + devicelib := device.New( + nvmllib, + ) + + testCases := []struct { + description string + devRoot string + device nvml.Device + nvsandboxutils nvsandboxutils.Interface + expectedError error + expectedDevices []discover.Device + expectedHooks []discover.Hook + expectedMounts []discover.Mount + }{ + { + description: "detects host devices", + device: &mocknvml.Device{ + GetUUIDFunc: func() (string, nvml.Return) { + return "GPU-1234", nvml.SUCCESS + }, + }, + nvsandboxutils: &mocknvsandboxutils.Interface{ + GetGpuResourceFunc: func(s string) ([]nvsandboxutils.GpuFileInfo, nvsandboxutils.Ret) { + infos := []nvsandboxutils.GpuFileInfo{ + { + Path: "/dev/nvidia0", + Type: nvsandboxutils.NV_DEV, + }, + { + Path: "/dev/nvidiactl", + Type: nvsandboxutils.NV_DEV, + }, + { + Path: "/dev/nvidia-uvm", + Type: nvsandboxutils.NV_DEV, + }, + { + Path: "/dev/nvidia-uvm-tools", + Type: nvsandboxutils.NV_DEV, + }, + } + return infos, nvsandboxutils.SUCCESS + }, + }, + expectedDevices: []discover.Device{ + { + Path: "/dev/nvidia0", + HostPath: "/dev/nvidia0", + }, + { + Path: "/dev/nvidiactl", + HostPath: "/dev/nvidiactl", + }, + { + Path: "/dev/nvidia-uvm", + HostPath: "/dev/nvidia-uvm", + }, + { + Path: "/dev/nvidia-uvm-tools", + HostPath: "/dev/nvidia-uvm-tools", + }, + }, + }, + { + description: "detects container devices", + devRoot: "/some/root", + device: &mocknvml.Device{ + GetUUIDFunc: func() (string, nvml.Return) { + return "GPU-1234", nvml.SUCCESS + }, + }, + nvsandboxutils: &mocknvsandboxutils.Interface{ + GetGpuResourceFunc: func(s string) ([]nvsandboxutils.GpuFileInfo, nvsandboxutils.Ret) { + infos := []nvsandboxutils.GpuFileInfo{ + { + Path: "/some/root/dev/nvidia0", + Type: nvsandboxutils.NV_DEV, + }, + { + Path: "/some/root/dev/nvidiactl", + Type: nvsandboxutils.NV_DEV, + }, + { + Path: "/some/root/dev/nvidia-uvm", + Type: nvsandboxutils.NV_DEV, + }, + { + Path: "/some/root/dev/nvidia-uvm-tools", + Type: nvsandboxutils.NV_DEV, + }, + } + return infos, nvsandboxutils.SUCCESS + }, + }, + expectedDevices: []discover.Device{ + { + Path: "/dev/nvidia0", + HostPath: "/some/root/dev/nvidia0", + }, + { + Path: "/dev/nvidiactl", + HostPath: "/some/root/dev/nvidiactl", + }, + { + Path: "/dev/nvidia-uvm", + HostPath: "/some/root/dev/nvidia-uvm", + }, + { + Path: "/dev/nvidia-uvm-tools", + HostPath: "/some/root/dev/nvidia-uvm-tools", + }, + }, + }, + } + + for _, tc := range testCases { + t.Run(tc.description, func(t *testing.T) { + o := &options{ + logger: logger, + devRoot: tc.devRoot, + nvsandboxutilslib: tc.nvsandboxutils, + } + + device, err := devicelib.NewDevice(tc.device) + require.NoError(t, err) + + d, err := o.newNvsandboxutilsDGPUDiscoverer(device) + require.ErrorIs(t, err, tc.expectedError) + + devices, _ := d.Devices() + require.EqualValues(t, tc.expectedDevices, devices) + hooks, _ := d.Hooks() + require.EqualValues(t, tc.expectedHooks, hooks) + mounts, _ := d.Mounts() + require.EqualValues(t, tc.expectedMounts, mounts) + }) + } +} diff --git a/internal/platform-support/dgpu/options.go b/internal/platform-support/dgpu/options.go index 41e4d7a93..6b2d62ce7 100644 --- a/internal/platform-support/dgpu/options.go +++ b/internal/platform-support/dgpu/options.go @@ -17,19 +17,24 @@ package dgpu import ( + "github.com/NVIDIA/nvidia-container-toolkit/internal/discover" "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" "github.com/NVIDIA/nvidia-container-toolkit/internal/nvcaps" + "github.com/NVIDIA/nvidia-container-toolkit/internal/nvsandboxutils" ) type options struct { - logger logger.Interface - devRoot string - nvidiaCDIHookPath string + logger logger.Interface + devRoot string + hookCreator discover.HookCreator + isMigDevice bool // migCaps stores the MIG capabilities for the system. // If MIG is not available, this is nil. migCaps nvcaps.MigCaps migCapsError error + + nvsandboxutilslib nvsandboxutils.Interface } type Option func(*options) @@ -48,10 +53,10 @@ func WithLogger(logger logger.Interface) Option { } } -// WithNVIDIACDIHookPath sets the path to the NVIDIA Container Toolkit CLI path for the library -func WithNVIDIACDIHookPath(path string) Option { +// WithHookCreator sets the hook creator for the library +func WithHookCreator(hookCreator discover.HookCreator) Option { return func(l *options) { - l.nvidiaCDIHookPath = path + l.hookCreator = hookCreator } } @@ -61,3 +66,10 @@ func WithMIGCaps(migCaps nvcaps.MigCaps) Option { l.migCaps = migCaps } } + +// WithNvsandboxuitilsLib sets the nvsandboxutils library implementation. +func WithNvsandboxuitilsLib(nvsandboxutilslib nvsandboxutils.Interface) Option { + return func(l *options) { + l.nvsandboxutilslib = nvsandboxutilslib + } +} diff --git a/internal/platform-support/tegra/csv.go b/internal/platform-support/tegra/csv.go index e47ae9ded..ca760ec5c 100644 --- a/internal/platform-support/tegra/csv.go +++ b/internal/platform-support/tegra/csv.go @@ -49,14 +49,20 @@ func (o tegraOptions) newDiscovererFromCSVFiles() (discover.Discover, error) { targetsByType[csv.MountSpecDir], ) - // Libraries and symlinks use the same locator. - libraries := discover.NewMounts( - o.logger, - o.symlinkLocator, - o.driverRoot, - targetsByType[csv.MountSpecLib], + // We create a discoverer for mounted libraries and add additional .so + // symlinks for the driver. + libraries := discover.WithDriverDotSoSymlinks( + discover.NewMounts( + o.logger, + o.symlinkLocator, + o.driverRoot, + targetsByType[csv.MountSpecLib], + ), + "", + o.hookCreator, ) + // We process the explicitly requested symlinks. symlinkTargets := o.ignorePatterns.Apply(targetsByType[csv.MountSpecSym]...) o.logger.Debugf("Filtered symlink targets: %v", symlinkTargets) symlinks := discover.NewMounts( @@ -65,7 +71,7 @@ func (o tegraOptions) newDiscovererFromCSVFiles() (discover.Discover, error) { o.driverRoot, symlinkTargets, ) - createSymlinks := o.createCSVSymlinkHooks(symlinkTargets, libraries) + createSymlinks := o.createCSVSymlinkHooks(symlinkTargets) d := discover.Merge( devices, diff --git a/internal/platform-support/tegra/csv/csv_test.go b/internal/platform-support/tegra/csv/csv_test.go index 03d982194..1f1a680f1 100644 --- a/internal/platform-support/tegra/csv/csv_test.go +++ b/internal/platform-support/tegra/csv/csv_test.go @@ -36,7 +36,7 @@ func TestGetFileList(t *testing.T) { }{ { description: "returns list of CSV files", - root: "test/input/csv_samples/", + root: "tests/input/csv_samples/", files: []string{ "jetson.csv", "simple_wrong.csv", @@ -46,15 +46,15 @@ func TestGetFileList(t *testing.T) { }, { description: "handles empty folder", - root: "test/input/csv_samples/empty", + root: "tests/input/csv_samples/empty", }, { description: "handles non-existent folder", - root: "test/input/csv_samples/NONEXISTENT", + root: "tests/input/csv_samples/NONEXISTENT", }, { description: "handles non-existent folder root", - root: "/NONEXISTENT/test/input/csv_samples/", + root: "/NONEXISTENT/tests/input/csv_samples/", }, } diff --git a/internal/platform-support/tegra/csv_test.go b/internal/platform-support/tegra/csv_test.go index 2e8e42fee..fa717a646 100644 --- a/internal/platform-support/tegra/csv_test.go +++ b/internal/platform-support/tegra/csv_test.go @@ -79,12 +79,12 @@ func TestDiscovererFromCSVFiles(t *testing.T) { { Path: "/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so", HostPath: "/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so", - Options: []string{"ro", "nosuid", "nodev", "bind"}, + Options: []string{"ro", "nosuid", "nodev", "rbind", "rprivate"}, }, { Path: "/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so", HostPath: "/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so", - Options: []string{"ro", "nosuid", "nodev", "bind"}, + Options: []string{"ro", "nosuid", "nodev", "rbind", "rprivate"}, }, }, expectedHooks: []discover.Hook{ @@ -97,6 +97,7 @@ func TestDiscovererFromCSVFiles(t *testing.T) { "--link", "/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so::/usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvargus.so", }, + Env: []string{"NVIDIA_CTK_DEBUG=false"}, }, }, }, @@ -135,12 +136,12 @@ func TestDiscovererFromCSVFiles(t *testing.T) { { Path: "/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so", HostPath: "/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so", - Options: []string{"ro", "nosuid", "nodev", "bind"}, + Options: []string{"ro", "nosuid", "nodev", "rbind", "rprivate"}, }, { Path: "/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so", HostPath: "/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so", - Options: []string{"ro", "nosuid", "nodev", "bind"}, + Options: []string{"ro", "nosuid", "nodev", "rbind", "rprivate"}, }, }, expectedHooks: []discover.Hook{ @@ -153,6 +154,7 @@ func TestDiscovererFromCSVFiles(t *testing.T) { "--link", "/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so::/usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvargus.so", }, + Env: []string{"NVIDIA_CTK_DEBUG=false"}, }, }, }, @@ -175,19 +177,20 @@ func TestDiscovererFromCSVFiles(t *testing.T) { { Path: "/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so", HostPath: "/usr/lib/aarch64-linux-gnu/tegra/libv4l2_nvargus.so", - Options: []string{"ro", "nosuid", "nodev", "bind"}, + Options: []string{"ro", "nosuid", "nodev", "rbind", "rprivate"}, }, }, }, } + hookCreator := discover.NewHookCreator() for _, tc := range testCases { t.Run(tc.description, func(t *testing.T) { defer setGetTargetsFromCSVFiles(tc.moutSpecs)() o := tegraOptions{ logger: logger, - nvidiaCDIHookPath: "/usr/bin/nvidia-cdi-hook", + hookCreator: hookCreator, csvFiles: []string{"dummy"}, ignorePatterns: tc.ignorePatterns, symlinkLocator: tc.symlinkLocator, diff --git a/internal/platform-support/tegra/symlinks.go b/internal/platform-support/tegra/symlinks.go index 37b07e6dc..822d482fd 100644 --- a/internal/platform-support/tegra/symlinks.go +++ b/internal/platform-support/tegra/symlinks.go @@ -18,8 +18,6 @@ package tegra import ( "fmt" - "path/filepath" - "strings" "github.com/NVIDIA/nvidia-container-toolkit/internal/discover" "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" @@ -28,10 +26,9 @@ import ( type symlinkHook struct { discover.None - logger logger.Interface - nvidiaCDIHookPath string - targets []string - mountsFrom discover.Discover + logger logger.Interface + hookCreator discover.HookCreator + targets []string // The following can be overridden for testing symlinkChainLocator lookup.Locator @@ -39,12 +36,11 @@ type symlinkHook struct { } // createCSVSymlinkHooks creates a discoverer for a hook that creates required symlinks in the container -func (o tegraOptions) createCSVSymlinkHooks(targets []string, mounts discover.Discover) discover.Discover { +func (o tegraOptions) createCSVSymlinkHooks(targets []string) discover.Discover { return symlinkHook{ logger: o.logger, - nvidiaCDIHookPath: o.nvidiaCDIHookPath, + hookCreator: o.hookCreator, targets: targets, - mountsFrom: mounts, symlinkChainLocator: o.symlinkChainLocator, resolveSymlink: o.resolveSymlink, } @@ -52,60 +48,7 @@ func (o tegraOptions) createCSVSymlinkHooks(targets []string, mounts discover.Di // Hooks returns a hook to create the symlinks from the required CSV files func (d symlinkHook) Hooks() ([]discover.Hook, error) { - specificLinks, err := d.getSpecificLinks() - if err != nil { - return nil, fmt.Errorf("failed to determine specific links: %v", err) - } - - csvSymlinks := d.getCSVFileSymlinks() - - return discover.CreateCreateSymlinkHook( - d.nvidiaCDIHookPath, - append(csvSymlinks, specificLinks...), - ).Hooks() -} - -// getSpecificLinks returns the required specic links that need to be created -func (d symlinkHook) getSpecificLinks() ([]string, error) { - mounts, err := d.mountsFrom.Mounts() - if err != nil { - return nil, fmt.Errorf("failed to discover mounts for ldcache update: %v", err) - } - - linkProcessed := make(map[string]bool) - var links []string - for _, m := range mounts { - var target string - var link string - - lib := filepath.Base(m.Path) - - switch { - case strings.HasPrefix(lib, "libcuda.so"): - // XXX Many applications wrongly assume that libcuda.so exists (e.g. with dlopen). - target = "libcuda.so.1" - link = "libcuda.so" - case strings.HasPrefix(lib, "libGLX_nvidia.so"): - // XXX GLVND requires this symlink for indirect GLX support. - target = lib - link = "libGLX_indirect.so.0" - case strings.HasPrefix(lib, "libnvidia-opticalflow.so"): - // XXX Fix missing symlink for libnvidia-opticalflow.so. - target = "libnvidia-opticalflow.so.1" - link = "libnvidia-opticalflow.so" - default: - continue - } - if linkProcessed[link] { - continue - } - linkProcessed[link] = true - - linkPath := filepath.Join(filepath.Dir(m.Path), link) - links = append(links, fmt.Sprintf("%v::%v", target, linkPath)) - } - - return links, nil + return d.hookCreator.Create("create-symlinks", d.getCSVFileSymlinks()...).Hooks() } // getSymlinkCandidates returns a list of symlinks that are candidates for being created. diff --git a/internal/platform-support/tegra/tegra.go b/internal/platform-support/tegra/tegra.go index 1031fc726..6ad774b4e 100644 --- a/internal/platform-support/tegra/tegra.go +++ b/internal/platform-support/tegra/tegra.go @@ -30,7 +30,7 @@ type tegraOptions struct { csvFiles []string driverRoot string devRoot string - nvidiaCDIHookPath string + hookCreator discover.HookCreator ldconfigPath string librarySearchPaths []string ignorePatterns ignoreMountSpecPatterns @@ -80,7 +80,7 @@ func New(opts ...Option) (discover.Discover, error) { return nil, fmt.Errorf("failed to create CSV discoverer: %v", err) } - ldcacheUpdateHook, err := discover.NewLDCacheUpdateHook(o.logger, csvDiscoverer, o.nvidiaCDIHookPath, o.ldconfigPath) + ldcacheUpdateHook, err := discover.NewLDCacheUpdateHook(o.logger, csvDiscoverer, o.hookCreator, o.ldconfigPath) if err != nil { return nil, fmt.Errorf("failed to create ldcach update hook discoverer: %v", err) } @@ -133,10 +133,10 @@ func WithCSVFiles(csvFiles []string) Option { } } -// WithNVIDIACDIHookPath sets the path to the nvidia-cdi-hook binary. -func WithNVIDIACDIHookPath(nvidiaCDIHookPath string) Option { +// WithHookCreator sets the hook creator for the discoverer. +func WithHookCreator(hookCreator discover.HookCreator) Option { return func(o *tegraOptions) { - o.nvidiaCDIHookPath = nvidiaCDIHookPath + o.hookCreator = hookCreator } } diff --git a/internal/requirements/constraints/constraints.go b/internal/requirements/constraints/constraints.go index 77b23dc8b..ca3c62d07 100644 --- a/internal/requirements/constraints/constraints.go +++ b/internal/requirements/constraints/constraints.go @@ -18,7 +18,7 @@ package constraints // Constraint represents a constraint that is to be evaluated // -//go:generate moq -stub -out constraint_mock.go . Constraint +//go:generate moq -rm -fmt=goimports -stub -out constraint_mock.go . Constraint type Constraint interface { String() string Assert() error diff --git a/internal/requirements/constraints/property.go b/internal/requirements/constraints/property.go index 9dc90dbc7..c1a754ebd 100644 --- a/internal/requirements/constraints/property.go +++ b/internal/requirements/constraints/property.go @@ -25,7 +25,7 @@ import ( // Property represents a property that is used to check requirements // -//go:generate moq -stub -out property_mock.go . Property +//go:generate moq -rm -fmt=goimports -stub -out property_mock.go . Property type Property interface { Name() string Value() (string, error) diff --git a/internal/runtime/runtime_factory.go b/internal/runtime/runtime_factory.go index 50c19a4f9..c5ea892fe 100644 --- a/internal/runtime/runtime_factory.go +++ b/internal/runtime/runtime_factory.go @@ -21,6 +21,7 @@ import ( "github.com/NVIDIA/nvidia-container-toolkit/internal/config" "github.com/NVIDIA/nvidia-container-toolkit/internal/config/image" + "github.com/NVIDIA/nvidia-container-toolkit/internal/discover" "github.com/NVIDIA/nvidia-container-toolkit/internal/info" "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" "github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/root" @@ -64,53 +65,108 @@ func newNVIDIAContainerRuntime(logger logger.Interface, cfg *config.Config, argv // newSpecModifier is a factory method that creates constructs an OCI spec modifer based on the provided config. func newSpecModifier(logger logger.Interface, cfg *config.Config, ociSpec oci.Spec, driver *root.Driver) (oci.SpecModifier, error) { - rawSpec, err := ociSpec.Load() + mode, image, err := initRuntimeModeAndImage(logger, cfg, ociSpec) if err != nil { - return nil, fmt.Errorf("failed to load OCI spec: %v", err) + return nil, err } - image, err := image.NewCUDAImageFromSpec(rawSpec) + modeModifier, err := newModeModifier(logger, mode, cfg, *image) if err != nil { return nil, err } - mode := info.ResolveAutoMode(logger, cfg.NVIDIAContainerRuntimeConfig.Mode, image) - modeModifier, err := newModeModifier(logger, mode, cfg, ociSpec, image) - if err != nil { - return nil, err + hookCreator := discover.NewHookCreator(discover.WithNVIDIACDIHookPath(cfg.NVIDIACTKConfig.Path)) + var modifiers modifier.List + for _, modifierType := range supportedModifierTypes(mode) { + switch modifierType { + case "mode": + modifiers = append(modifiers, modeModifier) + case "nvidia-hook-remover": + modifiers = append(modifiers, modifier.NewNvidiaContainerRuntimeHookRemover(logger)) + case "graphics": + graphicsModifier, err := modifier.NewGraphicsModifier(logger, cfg, *image, driver, hookCreator) + if err != nil { + return nil, err + } + modifiers = append(modifiers, graphicsModifier) + case "feature-gated": + featureGatedModifier, err := modifier.NewFeatureGatedModifier(logger, cfg, *image, driver, hookCreator) + if err != nil { + return nil, err + } + modifiers = append(modifiers, featureGatedModifier) + } } - // For CDI mode we make no additional modifications. - if mode == "cdi" { - return modeModifier, nil + + return modifiers, nil +} + +func newModeModifier(logger logger.Interface, mode info.RuntimeMode, cfg *config.Config, image image.CUDA) (oci.SpecModifier, error) { + switch mode { + case info.LegacyRuntimeMode: + return modifier.NewStableRuntimeModifier(logger, cfg.NVIDIAContainerRuntimeHookConfig.Path), nil + case info.CSVRuntimeMode: + return modifier.NewCSVModifier(logger, cfg, image) + case info.CDIRuntimeMode, info.JitCDIRuntimeMode: + return modifier.NewCDIModifier(logger, cfg, image, mode == info.JitCDIRuntimeMode) } - graphicsModifier, err := modifier.NewGraphicsModifier(logger, cfg, image, driver) + return nil, fmt.Errorf("invalid runtime mode: %v", cfg.NVIDIAContainerRuntimeConfig.Mode) +} + +// initRuntimeModeAndImage constructs an image from the specified OCI runtime +// specification and runtime config. +// The image is also used to determine the runtime mode to apply. +// If a non-CDI mode is detected we ensure that the image does not process +// annotation devices. +func initRuntimeModeAndImage(logger logger.Interface, cfg *config.Config, ociSpec oci.Spec) (info.RuntimeMode, *image.CUDA, error) { + rawSpec, err := ociSpec.Load() if err != nil { - return nil, err + return "", nil, fmt.Errorf("failed to load OCI spec: %v", err) } - featureModifier, err := modifier.NewFeatureGatedModifier(logger, cfg, image) + image, err := image.NewCUDAImageFromSpec( + rawSpec, + image.WithLogger(logger), + image.WithAcceptDeviceListAsVolumeMounts(cfg.AcceptDeviceListAsVolumeMounts), + image.WithAcceptEnvvarUnprivileged(cfg.AcceptEnvvarUnprivileged), + image.WithAnnotationsPrefixes(cfg.NVIDIAContainerRuntimeConfig.Modes.CDI.AnnotationPrefixes), + ) if err != nil { - return nil, err + return "", nil, err } - modifiers := modifier.Merge( - modeModifier, - graphicsModifier, - featureModifier, + modeResolver := info.NewRuntimeModeResolver( + info.WithLogger(logger), + info.WithImage(&image), ) - return modifiers, nil + mode := modeResolver.ResolveRuntimeMode(cfg.NVIDIAContainerRuntimeConfig.Mode) + // We update the mode here so that we can continue passing just the config to other functions. + cfg.NVIDIAContainerRuntimeConfig.Mode = string(mode) + + if mode == "cdi" || len(cfg.NVIDIAContainerRuntimeConfig.Modes.CDI.AnnotationPrefixes) == 0 { + return mode, &image, nil + } + + // For non-cdi modes we explicitly set the annotation prefixes to nil and + // call this function again to force a reconstruction of the image. + // Note that since the mode is now explicitly set, we will effectively skip + // the mode resolution. + cfg.NVIDIAContainerRuntimeConfig.Modes.CDI.AnnotationPrefixes = nil + + return initRuntimeModeAndImage(logger, cfg, ociSpec) } -func newModeModifier(logger logger.Interface, mode string, cfg *config.Config, ociSpec oci.Spec, image image.CUDA) (oci.SpecModifier, error) { +// supportedModifierTypes returns the modifiers supported for a specific runtime mode. +func supportedModifierTypes(mode info.RuntimeMode) []string { switch mode { - case "legacy": - return modifier.NewStableRuntimeModifier(logger, cfg.NVIDIAContainerRuntimeHookConfig.Path), nil - case "csv": - return modifier.NewCSVModifier(logger, cfg, image) - case "cdi": - return modifier.NewCDIModifier(logger, cfg, ociSpec) + case info.CDIRuntimeMode, info.JitCDIRuntimeMode: + // For CDI mode we make no additional modifications. + return []string{"nvidia-hook-remover", "mode"} + case info.CSVRuntimeMode: + // For CSV mode we support mode and feature-gated modification. + return []string{"nvidia-hook-remover", "feature-gated", "mode"} + default: + return []string{"feature-gated", "graphics", "mode"} } - - return nil, fmt.Errorf("invalid runtime mode: %v", cfg.NVIDIAContainerRuntimeConfig.Mode) } diff --git a/internal/runtime/runtime_factory_test.go b/internal/runtime/runtime_factory_test.go index dd052d8fe..ae95e7105 100644 --- a/internal/runtime/runtime_factory_test.go +++ b/internal/runtime/runtime_factory_test.go @@ -30,6 +30,7 @@ import ( "github.com/NVIDIA/nvidia-container-toolkit/internal/config" "github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/root" + "github.com/NVIDIA/nvidia-container-toolkit/internal/oci" "github.com/NVIDIA/nvidia-container-toolkit/internal/test" ) @@ -45,7 +46,7 @@ func TestMain(m *testing.M) { if err != nil { log.Fatalf("error in test setup: could not get module root: %v", err) } - testBinPath := filepath.Join(moduleRoot, "test", "bin") + testBinPath := filepath.Join(moduleRoot, "tests", "bin") // Set the environment variables for the test os.Setenv("PATH", test.PrependToPath(testBinPath, moduleRoot)) @@ -165,3 +166,181 @@ func TestFactoryMethod(t *testing.T) { }) } } + +func TestNewSpecModifier(t *testing.T) { + logger, _ := testlog.NewNullLogger() + driver := root.New( + root.WithDriverRoot("/nvidia/driver/root"), + ) + testCases := []struct { + description string + config *config.Config + spec *specs.Spec + expectedSpec *specs.Spec + }{ + { + description: "csv mode removes nvidia-container-runtime-hook", + config: &config.Config{ + NVIDIAContainerRuntimeConfig: config.RuntimeConfig{ + Mode: "csv", + }, + }, + spec: &specs.Spec{ + Hooks: &specs.Hooks{ + Prestart: []specs.Hook{ + { + Path: "/path/to/nvidia-container-runtime-hook", + Args: []string{"/path/to/nvidia-container-runtime-hook", "prestart"}, + }, + }, + }, + }, + expectedSpec: &specs.Spec{ + Hooks: &specs.Hooks{ + Prestart: nil, + }, + }, + }, + { + description: "csv mode removes nvidia-container-toolkit", + config: &config.Config{ + NVIDIAContainerRuntimeConfig: config.RuntimeConfig{ + Mode: "csv", + }, + }, + spec: &specs.Spec{ + Hooks: &specs.Hooks{ + Prestart: []specs.Hook{ + { + Path: "/path/to/nvidia-container-toolkit", + Args: []string{"/path/to/nvidia-container-toolkit", "prestart"}, + }, + }, + }, + }, + expectedSpec: &specs.Spec{ + Hooks: &specs.Hooks{ + Prestart: nil, + }, + }, + }, + { + description: "cdi mode removes nvidia-container-runtime-hook", + config: &config.Config{ + NVIDIAContainerRuntimeConfig: config.RuntimeConfig{ + Mode: "cdi", + }, + }, + spec: &specs.Spec{ + Hooks: &specs.Hooks{ + Prestart: []specs.Hook{ + { + Path: "/path/to/nvidia-container-runtime-hook", + Args: []string{"/path/to/nvidia-container-runtime-hook", "prestart"}, + }, + }, + }, + }, + expectedSpec: &specs.Spec{ + Hooks: &specs.Hooks{ + Prestart: nil, + }, + }, + }, + { + description: "cdi mode removes nvidia-container-toolkit", + config: &config.Config{ + NVIDIAContainerRuntimeConfig: config.RuntimeConfig{ + Mode: "cdi", + }, + }, + spec: &specs.Spec{ + Hooks: &specs.Hooks{ + Prestart: []specs.Hook{ + { + Path: "/path/to/nvidia-container-toolkit", + Args: []string{"/path/to/nvidia-container-toolkit", "prestart"}, + }, + }, + }, + }, + expectedSpec: &specs.Spec{ + Hooks: &specs.Hooks{ + Prestart: nil, + }, + }, + }, + { + description: "legacy mode keeps nvidia-container-runtime-hook", + config: &config.Config{ + NVIDIAContainerRuntimeConfig: config.RuntimeConfig{ + Mode: "legacy", + }, + }, + spec: &specs.Spec{ + Hooks: &specs.Hooks{ + Prestart: []specs.Hook{ + { + Path: "/path/to/nvidia-container-runtime-hook", + Args: []string{"/path/to/nvidia-container-runtime-hook", "prestart"}, + }, + }, + }, + }, + expectedSpec: &specs.Spec{ + Hooks: &specs.Hooks{ + Prestart: []specs.Hook{ + { + Path: "/path/to/nvidia-container-runtime-hook", + Args: []string{"/path/to/nvidia-container-runtime-hook", "prestart"}, + }, + }, + }, + }, + }, + { + description: "legacy mode keeps nvidia-container-toolkit", + config: &config.Config{ + NVIDIAContainerRuntimeConfig: config.RuntimeConfig{ + Mode: "legacy", + }, + }, + spec: &specs.Spec{ + Hooks: &specs.Hooks{ + Prestart: []specs.Hook{ + { + Path: "/path/to/nvidia-container-toolkit", + Args: []string{"/path/to/nvidia-container-toolkit", "prestart"}, + }, + }, + }, + }, + expectedSpec: &specs.Spec{ + Hooks: &specs.Hooks{ + Prestart: []specs.Hook{ + { + Path: "/path/to/nvidia-container-toolkit", + Args: []string{"/path/to/nvidia-container-toolkit", "prestart"}, + }, + }, + }, + }, + }, + } + + for _, tc := range testCases { + t.Run(tc.description, func(t *testing.T) { + spec := &oci.SpecMock{ + LoadFunc: func() (*specs.Spec, error) { + return tc.spec, nil + }, + } + m, err := newSpecModifier(logger, tc.config, spec, driver) + require.NoError(t, err) + + err = m.Modify(tc.spec) + require.NoError(t, err) + require.EqualValues(t, tc.expectedSpec, tc.spec) + }) + } +} diff --git a/internal/system/nvdevices/devices.go b/internal/system/nvdevices/devices.go index 1da030dcd..f667f6b76 100644 --- a/internal/system/nvdevices/devices.go +++ b/internal/system/nvdevices/devices.go @@ -19,7 +19,6 @@ package nvdevices import ( "errors" "fmt" - "os" "path/filepath" "strings" @@ -66,7 +65,7 @@ func New(opts ...Option) (*Interface, error) { if i.dryRun { i.mknoder = &mknodLogger{i.logger} } else { - i.mknoder = &mknodUnix{} + i.mknoder = &mknodUnix{i.logger} } return i, nil } @@ -107,13 +106,6 @@ func (m *Interface) CreateNVIDIADevice(node string) error { // If a devRoot is configured, this is prepended to the path. func (m *Interface) createDeviceNode(path string, major int, minor int) error { path = filepath.Join(m.devRoot, path) - if _, err := os.Stat(path); err == nil { - m.logger.Infof("Skipping: %s already exists", path) - return nil - } else if !os.IsNotExist(err) { - return fmt.Errorf("failed to stat %s: %v", path, err) - } - return m.Mknode(path, major, minor) } diff --git a/internal/system/nvdevices/mknod.go b/internal/system/nvdevices/mknod.go index 88a7aa441..8cbec51dc 100644 --- a/internal/system/nvdevices/mknod.go +++ b/internal/system/nvdevices/mknod.go @@ -17,12 +17,15 @@ package nvdevices import ( + "fmt" + "os" + "golang.org/x/sys/unix" "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" ) -//go:generate moq -stub -out mknod_mock.go . mknoder +//go:generate moq -rm -fmt=goimports -stub -out mknod_mock.go . mknoder type mknoder interface { Mknode(string, int, int) error } @@ -36,9 +39,19 @@ func (m *mknodLogger) Mknode(path string, major, minor int) error { return nil } -type mknodUnix struct{} +type mknodUnix struct { + logger logger.Interface +} func (m *mknodUnix) Mknode(path string, major, minor int) error { + // TODO: Ensure that the existing device node has the correct properties. + if _, err := os.Stat(path); err == nil { + m.logger.Infof("Skipping: %s already exists", path) + return nil + } else if !os.IsNotExist(err) { + return fmt.Errorf("failed to stat %s: %v", path, err) + } + err := unix.Mknod(path, unix.S_IFCHR, int(unix.Mkdev(uint32(major), uint32(minor)))) if err != nil { return err diff --git a/internal/system/nvmodules/cmd.go b/internal/system/nvmodules/cmd.go index 23df4f251..7a9101d5e 100644 --- a/internal/system/nvmodules/cmd.go +++ b/internal/system/nvmodules/cmd.go @@ -24,7 +24,7 @@ import ( "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" ) -//go:generate moq -stub -out cmd_mock.go . cmder +//go:generate moq -rm -fmt=goimports -stub -out cmd_mock.go . cmder type cmder interface { // Run executes the command and returns the stdout, stderr, and an error if any Run(string, ...string) error diff --git a/packaging/debian/control b/packaging/debian/control index 01abcea49..88ad8a9e7 100644 --- a/packaging/debian/control +++ b/packaging/debian/control @@ -10,7 +10,7 @@ Build-Depends: debhelper (>= 9) Package: nvidia-container-toolkit Architecture: any -Depends: ${misc:Depends}, nvidia-container-toolkit-base (= @VERSION@), libnvidia-container-tools (>= @LIBNVIDIA_CONTAINER_TOOLS_VERSION@), libnvidia-container-tools (<< 2.0.0) +Depends: ${misc:Depends}, nvidia-container-toolkit-base (= @VERSION@), libnvidia-container-tools (= @VERSION@), libnvidia-container-tools (<< 2.0.0) Breaks: nvidia-container-runtime (<= 3.5.0-1), nvidia-container-runtime-hook Replaces: nvidia-container-runtime (<= 3.5.0-1), nvidia-container-runtime-hook Description: NVIDIA Container toolkit diff --git a/packaging/debian/nvidia-container-toolkit-base.install b/packaging/debian/nvidia-container-toolkit-base.install index 62c0d0956..58cdafb64 100644 --- a/packaging/debian/nvidia-container-toolkit-base.install +++ b/packaging/debian/nvidia-container-toolkit-base.install @@ -1,3 +1,6 @@ nvidia-container-runtime /usr/bin nvidia-ctk /usr/bin nvidia-cdi-hook /usr/bin +nvidia-cdi-refresh.service /etc/systemd/system/ +nvidia-cdi-refresh.path /etc/systemd/system/ +nvidia-cdi-refresh.env /etc/nvidia-container-toolkit/ diff --git a/packaging/debian/nvidia-container-toolkit-base.postinst b/packaging/debian/nvidia-container-toolkit-base.postinst index 7ee72e46f..312933b57 100644 --- a/packaging/debian/nvidia-container-toolkit-base.postinst +++ b/packaging/debian/nvidia-container-toolkit-base.postinst @@ -5,6 +5,15 @@ set -e case "$1" in configure) /usr/bin/nvidia-ctk --quiet config --config-file=/etc/nvidia-container-runtime/config.toml --in-place + + # Enable nvidia-cdi-refresh services on both install and upgrade + if command -v systemctl >/dev/null 2>&1 \ + && systemctl --quiet is-system-running 2>/dev/null; then + + systemctl daemon-reload || echo "Warning: Failed to reload systemd daemon" >&2 + systemctl enable --now nvidia-cdi-refresh.path || echo "Warning: Failed to enable nvidia-cdi-refresh.path" >&2 + systemctl enable --now nvidia-cdi-refresh.service || echo "Warning: Failed to enable nvidia-cdi-refresh.service" >&2 + fi ;; abort-upgrade|abort-remove|abort-deconfigure) diff --git a/packaging/debian/prepare b/packaging/debian/prepare index 1b15a150c..542ff830b 100755 --- a/packaging/debian/prepare +++ b/packaging/debian/prepare @@ -3,7 +3,6 @@ set -e sed -i "s;@SECTION@;${SECTION:+$SECTION/};g" debian/control -sed -i "s;@LIBNVIDIA_CONTAINER_TOOLS_VERSION@;${LIBNVIDIA_CONTAINER_TOOLS_VERSION:+$LIBNVIDIA_CONTAINER_TOOLS_VERSION};g" debian/control sed -i "s;@VERSION@;${VERSION:+$VERSION};g" debian/control if [ -n "$DISTRIB" ]; then diff --git a/packaging/debian/rules b/packaging/debian/rules index f3908b290..d57bd1d43 100755 --- a/packaging/debian/rules +++ b/packaging/debian/rules @@ -5,3 +5,14 @@ %: dh $@ + +override_dh_fixperms: + dh_fixperms + chmod 755 debian/$(shell dh_listpackages)/usr/bin/nvidia-container-runtime-hook || true + chmod 755 debian/$(shell dh_listpackages)/usr/bin/nvidia-container-runtime || true + chmod 755 debian/$(shell dh_listpackages)/usr/bin/nvidia-container-runtime.cdi || true + chmod 755 debian/$(shell dh_listpackages)/usr/bin/nvidia-container-runtime.legacy || true + chmod 755 debian/$(shell dh_listpackages)/usr/bin/nvidia-ctk || true + chmod 755 debian/$(shell dh_listpackages)/usr/bin/nvidia-cdi-hook || true + chmod 644 debian/$(shell dh_listpackages)/etc/systemd/system/nvidia-cdi-refresh.service || true + chmod 644 debian/$(shell dh_listpackages)/etc/systemd/system/nvidia-cdi-refresh.path || true diff --git a/packaging/rpm/SPECS/nvidia-container-toolkit.spec b/packaging/rpm/SPECS/nvidia-container-toolkit.spec index 605528272..408068668 100644 --- a/packaging/rpm/SPECS/nvidia-container-toolkit.spec +++ b/packaging/rpm/SPECS/nvidia-container-toolkit.spec @@ -17,27 +17,36 @@ Source3: nvidia-container-runtime Source4: nvidia-container-runtime.cdi Source5: nvidia-container-runtime.legacy Source6: nvidia-cdi-hook +Source7: nvidia-cdi-refresh.service +Source8: nvidia-cdi-refresh.path +Source9: nvidia-cdi-refresh.env Obsoletes: nvidia-container-runtime <= 3.5.0-1, nvidia-container-runtime-hook <= 1.4.0-2 Provides: nvidia-container-runtime Provides: nvidia-container-runtime-hook -Requires: libnvidia-container-tools >= %{libnvidia_container_tools_version}, libnvidia-container-tools < 2.0.0 +Requires: libnvidia-container-tools == %{version}-%{release}, libnvidia-container-tools < 2.0.0 Requires: nvidia-container-toolkit-base == %{version}-%{release} %description Provides tools and utilities to enable GPU support in containers. %prep -cp %{SOURCE0} %{SOURCE1} %{SOURCE2} %{SOURCE3} %{SOURCE4} %{SOURCE5} %{SOURCE6} . +cp %{SOURCE0} %{SOURCE1} %{SOURCE2} %{SOURCE3} %{SOURCE4} %{SOURCE5} %{SOURCE6} %{SOURCE7} %{SOURCE8} %{SOURCE9} . %install mkdir -p %{buildroot}%{_bindir} +mkdir -p %{buildroot}%{_sysconfdir}/systemd/system/ +mkdir -p %{buildroot}%{_sysconfdir}/nvidia-container-toolkit + install -m 755 -t %{buildroot}%{_bindir} nvidia-container-runtime-hook install -m 755 -t %{buildroot}%{_bindir} nvidia-container-runtime install -m 755 -t %{buildroot}%{_bindir} nvidia-container-runtime.cdi install -m 755 -t %{buildroot}%{_bindir} nvidia-container-runtime.legacy install -m 755 -t %{buildroot}%{_bindir} nvidia-ctk install -m 755 -t %{buildroot}%{_bindir} nvidia-cdi-hook +install -m 644 -t %{buildroot}%{_sysconfdir}/systemd/system nvidia-cdi-refresh.service +install -m 644 -t %{buildroot}%{_sysconfdir}/systemd/system nvidia-cdi-refresh.path +install -m 644 -t %{buildroot}%{_sysconfdir}/nvidia-container-toolkit nvidia-cdi-refresh.env %post if [ $1 -gt 1 ]; then # only on package upgrade @@ -45,6 +54,14 @@ if [ $1 -gt 1 ]; then # only on package upgrade cp -af %{_bindir}/nvidia-container-runtime-hook %{_localstatedir}/lib/rpm-state/nvidia-container-toolkit fi +# Reload systemd unit cache and enable nvidia-cdi-refresh services on both install and upgrade +if command -v systemctl >/dev/null 2>&1 \ + && systemctl --quiet is-system-running 2>/dev/null; then + systemctl daemon-reload || echo "Warning: Failed to reload systemd daemon" >&2 + systemctl enable --now nvidia-cdi-refresh.path || echo "Warning: Failed to enable nvidia-cdi-refresh.path" >&2 + systemctl enable --now nvidia-cdi-refresh.service || echo "Warning: Failed to enable nvidia-cdi-refresh.service" >&2 +fi + %posttrans if [ ! -e %{_bindir}/nvidia-container-runtime-hook ]; then # repairing lost file nvidia-container-runtime-hook @@ -68,8 +85,8 @@ fi %changelog # As of 1.10.0-1 we generate the release information automatically * %{release_date} NVIDIA CORPORATION %{version}-%{release} -- See https://gitlab.com/nvidia/container-toolkit/container-toolkit/-/blob/%{git_commit}/CHANGELOG.md -- Bump libnvidia-container dependency to libnvidia-container-tools >= %{libnvidia_container_tools_version} +- See https://github.com/NVIDIA/nvidia-container-toolkit/blob/%{git_commit}/CHANGELOG.md +- Bump libnvidia-container dependency to libnvidia-container-tools == %{version}-%{release} # The BASE package consists of the NVIDIA Container Runtime and the NVIDIA Container Toolkit CLI. # This allows the package to be installed on systems where no NVIDIA Container CLI is available. @@ -89,6 +106,9 @@ Provides tools such as the NVIDIA Container Runtime and NVIDIA Container Toolkit %{_bindir}/nvidia-container-runtime %{_bindir}/nvidia-ctk %{_bindir}/nvidia-cdi-hook +%{_sysconfdir}/systemd/system/nvidia-cdi-refresh.service +%{_sysconfdir}/systemd/system/nvidia-cdi-refresh.path +%config(noreplace) %{_sysconfdir}/nvidia-container-toolkit/nvidia-cdi-refresh.env # The OPERATOR EXTENSIONS package consists of components that are required to enable GPU support in Kubernetes. # This package is not distributed as part of the NVIDIA Container Toolkit RPMs. diff --git a/pkg/config/engine/api.go b/pkg/config/engine/api.go index 78b1549c3..d27f09e9d 100644 --- a/pkg/config/engine/api.go +++ b/pkg/config/engine/api.go @@ -18,9 +18,16 @@ package engine // Interface defines the API for a runtime config updater. type Interface interface { + AddRuntime(string, string, bool) error DefaultRuntime() string - AddRuntime(string, string, bool, ...map[string]interface{}) error - Set(string, interface{}) + EnableCDI() + GetRuntimeConfig(string) (RuntimeConfig, error) RemoveRuntime(string) error Save(string) (int64, error) + String() string +} + +// RuntimeConfig defines the interface to query container runtime handler configuration +type RuntimeConfig interface { + GetBinaryPath() string } diff --git a/pkg/config/engine/containerd/config.go b/pkg/config/engine/containerd/config.go new file mode 100644 index 000000000..62468fe50 --- /dev/null +++ b/pkg/config/engine/containerd/config.go @@ -0,0 +1,144 @@ +/** +# Copyright (c) NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package containerd + +import ( + "fmt" + + "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine" + "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/toml" +) + +// AddRuntime adds a runtime to the containerd config +func (c *Config) AddRuntime(name string, path string, setAsDefault bool) error { + if c == nil || c.Tree == nil { + return fmt.Errorf("config is nil") + } + config := *c.Tree + + config.Set("version", c.Version) + + runtimeNamesForConfig := engine.GetLowLevelRuntimes(c) + for _, r := range runtimeNamesForConfig { + options := config.GetSubtreeByPath([]string{"plugins", c.CRIRuntimePluginName, "containerd", "runtimes", r}) + if options == nil { + continue + } + c.Logger.Debugf("using options from runtime %v: %v", r, options) + config.SetPath([]string{"plugins", c.CRIRuntimePluginName, "containerd", "runtimes", name}, options.Copy()) + break + } + + if config.GetPath([]string{"plugins", c.CRIRuntimePluginName, "containerd", "runtimes", name}) == nil { + c.Logger.Warningf("could not infer options from runtimes %v; using defaults", runtimeNamesForConfig) + config.SetPath([]string{"plugins", c.CRIRuntimePluginName, "containerd", "runtimes", name, "runtime_type"}, c.RuntimeType) + config.SetPath([]string{"plugins", c.CRIRuntimePluginName, "containerd", "runtimes", name, "runtime_root"}, "") + config.SetPath([]string{"plugins", c.CRIRuntimePluginName, "containerd", "runtimes", name, "runtime_engine"}, "") + config.SetPath([]string{"plugins", c.CRIRuntimePluginName, "containerd", "runtimes", name, "privileged_without_host_devices"}, false) + } + + if len(c.ContainerAnnotations) > 0 { + annotations, err := c.getRuntimeAnnotations([]string{"plugins", c.CRIRuntimePluginName, "containerd", "runtimes", name, "container_annotations"}) + if err != nil { + return err + } + annotations = append(c.ContainerAnnotations, annotations...) + config.SetPath([]string{"plugins", c.CRIRuntimePluginName, "containerd", "runtimes", name, "container_annotations"}, annotations) + } + + config.SetPath([]string{"plugins", c.CRIRuntimePluginName, "containerd", "runtimes", name, "options", "BinaryName"}, path) + + if setAsDefault { + config.SetPath([]string{"plugins", c.CRIRuntimePluginName, "containerd", "default_runtime_name"}, name) + } + + *c.Tree = config + return nil +} + +func (c *Config) getRuntimeAnnotations(path []string) ([]string, error) { + if c == nil || c.Tree == nil { + return nil, nil + } + + config := *c.Tree + if !config.HasPath(path) { + return nil, nil + } + annotationsI, ok := config.GetPath(path).([]interface{}) + if !ok { + return nil, fmt.Errorf("invalid annotations: %v", annotationsI) + } + + var annotations []string + for _, annotation := range annotationsI { + a, ok := annotation.(string) + if !ok { + return nil, fmt.Errorf("invalid annotation: %v", annotation) + } + annotations = append(annotations, a) + } + + return annotations, nil +} + +// DefaultRuntime returns the default runtime for the cri-o config +func (c Config) DefaultRuntime() string { + if runtime, ok := c.GetPath([]string{"plugins", c.CRIRuntimePluginName, "containerd", "default_runtime_name"}).(string); ok { + return runtime + } + return "" +} + +// EnableCDI sets the enable_cdi field in the Containerd config to true. +func (c *Config) EnableCDI() { + config := *c.Tree + config.SetPath([]string{"plugins", c.CRIRuntimePluginName, "enable_cdi"}, true) + *c.Tree = config +} + +// RemoveRuntime removes a runtime from the docker config +func (c *Config) RemoveRuntime(name string) error { + if c == nil || c.Tree == nil { + return nil + } + + config := *c.Tree + + config.DeletePath([]string{"plugins", c.CRIRuntimePluginName, "containerd", "runtimes", name}) + if runtime, ok := config.GetPath([]string{"plugins", c.CRIRuntimePluginName, "containerd", "default_runtime_name"}).(string); ok { + if runtime == name { + config.DeletePath([]string{"plugins", c.CRIRuntimePluginName, "containerd", "default_runtime_name"}) + } + } + + runtimePath := []string{"plugins", c.CRIRuntimePluginName, "containerd", "runtimes", name} + for i := 0; i < len(runtimePath); i++ { + if runtimes, ok := config.GetPath(runtimePath[:len(runtimePath)-i]).(*toml.Tree); ok { + if len(runtimes.Keys()) == 0 { + config.DeletePath(runtimePath[:len(runtimePath)-i]) + } + } + } + + if len(config.Keys()) == 1 && config.Keys()[0] == "version" { + config.Delete("version") + } + + *c.Tree = config + return nil +} diff --git a/pkg/config/engine/containerd/config_v2_test.go b/pkg/config/engine/containerd/config_test.go similarity index 57% rename from pkg/config/engine/containerd/config_v2_test.go rename to pkg/config/engine/containerd/config_test.go index 598222f8c..836d2b1d6 100644 --- a/pkg/config/engine/containerd/config_v2_test.go +++ b/pkg/config/engine/containerd/config_test.go @@ -19,20 +19,20 @@ package containerd import ( "testing" - "github.com/pelletier/go-toml" testlog "github.com/sirupsen/logrus/hooks/test" "github.com/stretchr/testify/require" + + "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/toml" ) func TestAddRuntime(t *testing.T) { logger, _ := testlog.NewNullLogger() testCases := []struct { - description string - config string - setAsDefault bool - configOverrides []map[string]interface{} - expectedConfig string - expectedError error + description string + config string + setAsDefault bool + expectedConfig string + expectedError error }{ { description: "empty config not default runtime", @@ -46,37 +46,12 @@ func TestAddRuntime(t *testing.T) { privileged_without_host_devices = false runtime_engine = "" runtime_root = "" - runtime_type = "" + runtime_type = "io.containerd.runc.v2" [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.test.options] BinaryName = "/usr/bin/test" `, expectedError: nil, }, - { - description: "empty config not default runtime with overrides", - configOverrides: []map[string]interface{}{ - { - "options": map[string]interface{}{ - "SystemdCgroup": true, - }, - }, - }, - expectedConfig: ` - version = 2 - [plugins] - [plugins."io.containerd.grpc.v1.cri"] - [plugins."io.containerd.grpc.v1.cri".containerd] - [plugins."io.containerd.grpc.v1.cri".containerd.runtimes] - [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.test] - privileged_without_host_devices = false - runtime_engine = "" - runtime_root = "" - runtime_type = "" - [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.test.options] - BinaryName = "/usr/bin/test" - SystemdCgroup = true - `, - }, { description: "options from runc are imported", config: ` @@ -162,7 +137,7 @@ func TestAddRuntime(t *testing.T) { `, }, { - description: "options from runc take precedence over default runtime", + description: "options from the default runtime take precedence over runc", config: ` version = 2 [plugins] @@ -211,11 +186,73 @@ func TestAddRuntime(t *testing.T) { BinaryName = "/usr/bin/default" SystemdCgroup = false [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.test] + privileged_without_host_devices = false + runtime_engine = "defaultengine" + runtime_root = "defaultroot" + runtime_type = "defaulttype" + [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.test.options] + BinaryName = "/usr/bin/test" + SystemdCgroup = false + `, + }, + { + description: "empty v3 spec is supported", + config: ` + version = 3 + `, + expectedConfig: ` + version = 3 + [plugins] + [plugins."io.containerd.cri.v1.runtime"] + [plugins."io.containerd.cri.v1.runtime".containerd] + [plugins."io.containerd.cri.v1.runtime".containerd.runtimes] + [plugins."io.containerd.cri.v1.runtime".containerd.runtimes.test] + privileged_without_host_devices = false + runtime_engine = "" + runtime_root = "" + runtime_type = "io.containerd.runc.v2" + [plugins."io.containerd.cri.v1.runtime".containerd.runtimes.test.options] + BinaryName = "/usr/bin/test" + `, + expectedError: nil, + }, + { + description: "v3 spec is supported", + config: ` + version = 3 + [plugins] + [plugins."io.containerd.cri.v1.runtime"] + [plugins."io.containerd.cri.v1.runtime".containerd] + [plugins."io.containerd.cri.v1.runtime".containerd.runtimes] + [plugins."io.containerd.cri.v1.runtime".containerd.runtimes.runc] privileged_without_host_devices = true runtime_engine = "engine" runtime_root = "root" runtime_type = "type" - [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.test.options] + [plugins."io.containerd.cri.v1.runtime".containerd.runtimes.runc.options] + BinaryName = "/usr/bin/runc" + SystemdCgroup = true + `, + expectedConfig: ` + version = 3 + [plugins] + [plugins."io.containerd.cri.v1.runtime"] + [plugins."io.containerd.cri.v1.runtime".containerd] + [plugins."io.containerd.cri.v1.runtime".containerd.runtimes] + [plugins."io.containerd.cri.v1.runtime".containerd.runtimes.runc] + privileged_without_host_devices = true + runtime_engine = "engine" + runtime_root = "root" + runtime_type = "type" + [plugins."io.containerd.cri.v1.runtime".containerd.runtimes.runc.options] + BinaryName = "/usr/bin/runc" + SystemdCgroup = true + [plugins."io.containerd.cri.v1.runtime".containerd.runtimes.test] + privileged_without_host_devices = true + runtime_engine = "engine" + runtime_root = "root" + runtime_type = "type" + [plugins."io.containerd.cri.v1.runtime".containerd.runtimes.test.options] BinaryName = "/usr/bin/test" SystemdCgroup = true `, @@ -224,20 +261,115 @@ func TestAddRuntime(t *testing.T) { for _, tc := range testCases { t.Run(tc.description, func(t *testing.T) { - config, err := toml.Load(tc.config) - require.NoError(t, err) expectedConfig, err := toml.Load(tc.expectedConfig) require.NoError(t, err) - c := &Config{ - Logger: logger, - Tree: config, - } + c, err := New( + WithLogger(logger), + WithConfigSource(toml.FromString(tc.config)), + ) + require.NoError(t, err) + + err = c.AddRuntime("test", "/usr/bin/test", tc.setAsDefault) + require.NoError(t, err) + + require.EqualValues(t, expectedConfig.String(), c.String()) + }) + } +} + +func TestGetRuntimeConfig(t *testing.T) { + logger, _ := testlog.NewNullLogger() + config := ` + version = 2 + [plugins] + [plugins."io.containerd.grpc.v1.cri"] + [plugins."io.containerd.grpc.v1.cri".containerd] + default_runtime_name = "nvidia" + disable_snapshot_annotations = true + discard_unpacked_layers = false + ignore_blockio_not_enabled_errors = false + ignore_rdt_not_enabled_errors = false + no_pivot = false + snapshotter = "overlayfs" + + [plugins."io.containerd.grpc.v1.cri".containerd.default_runtime] + base_runtime_spec = "" + cni_conf_dir = "" + cni_max_conf_num = 0 + container_annotations = [] + pod_annotations = [] + privileged_without_host_devices = false + privileged_without_host_devices_all_devices_allowed = false + runtime_engine = "" + runtime_path = "" + runtime_root = "" + runtime_type = "" + sandbox_mode = "" + snapshotter = "" + + [plugins."io.containerd.grpc.v1.cri".containerd.runtimes] + + [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc] + base_runtime_spec = "" + cni_conf_dir = "" + cni_max_conf_num = 0 + container_annotations = [] + pod_annotations = [] + privileged_without_host_devices = false + privileged_without_host_devices_all_devices_allowed = false + runtime_engine = "" + runtime_path = "" + runtime_root = "" + runtime_type = "io.containerd.runc.v2" + sandbox_mode = "podsandbox" + snapshotter = "" + + [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] + BinaryName = "/usr/bin/runc" + CriuImagePath = "" + CriuPath = "" + CriuWorkPath = "" + IoGid = 0 + IoUid = 0 + NoNewKeyring = false + NoPivotRoot = false + Root = "" + ShimCgroup = "" + SystemdCgroup = false +` + testCases := []struct { + description string + runtime string + expected string + expectedError error + }{ + { + description: "valid runtime config, existing runtime", + runtime: "runc", + expected: "/usr/bin/runc", + expectedError: nil, + }, + { + description: "valid runtime config, non-existing runtime", + runtime: "some-other-runtime", + expected: "", + expectedError: nil, + }, + } + + for _, tc := range testCases { + t.Run(tc.description, func(t *testing.T) { - err = c.AddRuntime("test", "/usr/bin/test", tc.setAsDefault, tc.configOverrides...) + c, err := New( + WithLogger(logger), + WithConfigSource(toml.FromString(config)), + ) require.NoError(t, err) - require.EqualValues(t, expectedConfig.String(), config.String()) + rc, err := c.GetRuntimeConfig(tc.runtime) + require.Equal(t, tc.expectedError, err) + require.Equal(t, tc.expected, rc.GetBinaryPath()) }) } } diff --git a/pkg/config/engine/containerd/config_v1.go b/pkg/config/engine/containerd/config_v1.go index 5522a227f..2189a8de9 100644 --- a/pkg/config/engine/containerd/config_v1.go +++ b/pkg/config/engine/containerd/config_v1.go @@ -19,9 +19,8 @@ package containerd import ( "fmt" - "github.com/pelletier/go-toml" - "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine" + "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/toml" ) // ConfigV1 represents a version 1 containerd config @@ -30,7 +29,7 @@ type ConfigV1 Config var _ engine.Interface = (*ConfigV1)(nil) // AddRuntime adds a runtime to the containerd config -func (c *ConfigV1) AddRuntime(name string, path string, setAsDefault bool, configOverrides ...map[string]interface{}) error { +func (c *ConfigV1) AddRuntime(name string, path string, setAsDefault bool) error { if c == nil || c.Tree == nil { return fmt.Errorf("config is nil") } @@ -39,18 +38,16 @@ func (c *ConfigV1) AddRuntime(name string, path string, setAsDefault bool, confi config.Set("version", int64(1)) - // By default we extract the runtime options from the runc settings; if this does not exist we get the options from the default runtime specified in the config. - runtimeNamesForConfig := []string{"runc"} - if name, ok := config.GetPath([]string{"plugins", "cri", "containerd", "default_runtime_name"}).(string); ok && name != "" { - runtimeNamesForConfig = append(runtimeNamesForConfig, name) - } + runtimeNamesForConfig := engine.GetLowLevelRuntimes(c) for _, r := range runtimeNamesForConfig { - if options, ok := config.GetPath([]string{"plugins", "cri", "containerd", "runtimes", r}).(*toml.Tree); ok { - c.Logger.Debugf("using options from runtime %v: %v", r, options.String()) - options, _ = toml.Load(options.String()) - config.SetPath([]string{"plugins", "cri", "containerd", "runtimes", name}, options) - break + options := config.GetSubtreeByPath([]string{"plugins", "cri", "containerd", "runtimes", r}) + if options == nil { + continue } + c.Logger.Debugf("using options from runtime %v: %v", r, options) + config.SetPath([]string{"plugins", "cri", "containerd", "runtimes", name}, options.Copy()) + break + } if config.GetPath([]string{"plugins", "cri", "containerd", "runtimes", name}) == nil { @@ -73,30 +70,22 @@ func (c *ConfigV1) AddRuntime(name string, path string, setAsDefault bool, confi config.SetPath([]string{"plugins", "cri", "containerd", "runtimes", name, "options", "BinaryName"}, path) config.SetPath([]string{"plugins", "cri", "containerd", "runtimes", name, "options", "Runtime"}, path) - if setAsDefault && c.UseDefaultRuntimeName { - config.SetPath([]string{"plugins", "cri", "containerd", "default_runtime_name"}, name) - } else if setAsDefault { - // Note: This is deprecated in containerd 1.4.0 and will be removed in 1.5.0 - if config.GetPath([]string{"plugins", "cri", "containerd", "default_runtime"}) == nil { - config.SetPath([]string{"plugins", "cri", "containerd", "default_runtime", "runtime_type"}, c.RuntimeType) - config.SetPath([]string{"plugins", "cri", "containerd", "default_runtime", "runtime_root"}, "") - config.SetPath([]string{"plugins", "cri", "containerd", "default_runtime", "runtime_engine"}, "") - config.SetPath([]string{"plugins", "cri", "containerd", "default_runtime", "privileged_without_host_devices"}, false) - } - config.SetPath([]string{"plugins", "cri", "containerd", "default_runtime", "options", "BinaryName"}, path) - config.SetPath([]string{"plugins", "cri", "containerd", "default_runtime", "options", "Runtime"}, path) - - defaultRuntimeSubtree := subtreeAtPath(config, "plugins", "cri", "containerd", "default_runtime") - if err := defaultRuntimeSubtree.applyOverrides(configOverrides...); err != nil { - return fmt.Errorf("failed to apply config overrides to default_runtime: %w", err) + if setAsDefault { + if !c.UseLegacyConfig { + config.SetPath([]string{"plugins", "cri", "containerd", "default_runtime_name"}, name) + } else { + // Note: This is deprecated in containerd 1.4.0 and will be removed in 1.5.0 + if config.GetPath([]string{"plugins", "cri", "containerd", "default_runtime"}) == nil { + config.SetPath([]string{"plugins", "cri", "containerd", "default_runtime", "runtime_type"}, c.RuntimeType) + config.SetPath([]string{"plugins", "cri", "containerd", "default_runtime", "runtime_root"}, "") + config.SetPath([]string{"plugins", "cri", "containerd", "default_runtime", "runtime_engine"}, "") + config.SetPath([]string{"plugins", "cri", "containerd", "default_runtime", "privileged_without_host_devices"}, false) + } + config.SetPath([]string{"plugins", "cri", "containerd", "default_runtime", "options", "BinaryName"}, path) + config.SetPath([]string{"plugins", "cri", "containerd", "default_runtime", "options", "Runtime"}, path) } } - runtimeSubtree := subtreeAtPath(config, "plugins", "cri", "containerd", "runtimes", name) - if err := runtimeSubtree.applyOverrides(configOverrides...); err != nil { - return fmt.Errorf("failed to apply config overrides: %w", err) - } - *c.Tree = config return nil } @@ -154,14 +143,24 @@ func (c *ConfigV1) RemoveRuntime(name string) error { return nil } -// SetOption sets the specified containerd option. -func (c *ConfigV1) Set(key string, value interface{}) { - config := *c.Tree - config.SetPath([]string{"plugins", "cri", "containerd", key}, value) - *c.Tree = config -} - -// Save wrotes the config to a file +// Save writes the config to a file func (c ConfigV1) Save(path string) (int64, error) { return (Config)(c).Save(path) } + +func (c *ConfigV1) GetRuntimeConfig(name string) (engine.RuntimeConfig, error) { + if c == nil || c.Tree == nil { + return nil, fmt.Errorf("config is nil") + } + runtimeData := c.GetSubtreeByPath([]string{"plugins", "cri", "containerd", "runtimes", name}) + + return &containerdCfgRuntime{ + tree: runtimeData, + }, nil +} + +func (c *ConfigV1) EnableCDI() { + config := *c.Tree + config.SetPath([]string{"plugins", "cri", "containerd", "enable_cdi"}, true) + *c.Tree = config +} diff --git a/pkg/config/engine/containerd/config_v1_test.go b/pkg/config/engine/containerd/config_v1_test.go index 774500d51..ca82032a1 100644 --- a/pkg/config/engine/containerd/config_v1_test.go +++ b/pkg/config/engine/containerd/config_v1_test.go @@ -19,20 +19,20 @@ package containerd import ( "testing" - "github.com/pelletier/go-toml" testlog "github.com/sirupsen/logrus/hooks/test" "github.com/stretchr/testify/require" + + "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/toml" ) func TestAddRuntimeV1(t *testing.T) { logger, _ := testlog.NewNullLogger() testCases := []struct { - description string - config string - setAsDefault bool - configOverrides []map[string]interface{} - expectedConfig string - expectedError error + description string + config string + setAsDefault bool + expectedConfig string + expectedError error }{ { description: "empty config not default runtime", @@ -53,32 +53,6 @@ func TestAddRuntimeV1(t *testing.T) { `, expectedError: nil, }, - { - description: "empty config not default runtime with overrides", - configOverrides: []map[string]interface{}{ - { - "options": map[string]interface{}{ - "SystemdCgroup": true, - }, - }, - }, - expectedConfig: ` - version = 1 - [plugins] - [plugins.cri] - [plugins.cri.containerd] - [plugins.cri.containerd.runtimes] - [plugins.cri.containerd.runtimes.test] - privileged_without_host_devices = false - runtime_engine = "" - runtime_root = "" - runtime_type = "" - [plugins.cri.containerd.runtimes.test.options] - BinaryName = "/usr/bin/test" - Runtime = "/usr/bin/test" - SystemdCgroup = true - `, - }, { description: "options from runc are imported", config: ` @@ -164,7 +138,7 @@ func TestAddRuntimeV1(t *testing.T) { `, }, { - description: "options from runc take precedence over default runtime", + description: "options from the default runtime take precedence over runc", config: ` [plugins] [plugins.cri] @@ -212,34 +186,35 @@ func TestAddRuntimeV1(t *testing.T) { BinaryName = "/usr/bin/default" SystemdCgroup = false [plugins.cri.containerd.runtimes.test] - privileged_without_host_devices = true - runtime_engine = "engine" - runtime_root = "root" - runtime_type = "type" + privileged_without_host_devices = false + runtime_engine = "defaultengine" + runtime_root = "defaultroot" + runtime_type = "defaulttype" [plugins.cri.containerd.runtimes.test.options] BinaryName = "/usr/bin/test" Runtime = "/usr/bin/test" - SystemdCgroup = true + SystemdCgroup = false `, }, } for _, tc := range testCases { t.Run(tc.description, func(t *testing.T) { - config, err := toml.Load(tc.config) - require.NoError(t, err) expectedConfig, err := toml.Load(tc.expectedConfig) require.NoError(t, err) - c := &ConfigV1{ - Logger: logger, - Tree: config, - } + c, err := New( + WithLogger(logger), + WithConfigSource(toml.FromString(tc.config)), + WithUseLegacyConfig(true), + WithRuntimeType(""), + ) + require.NoError(t, err) - err = c.AddRuntime("test", "/usr/bin/test", tc.setAsDefault, tc.configOverrides...) + err = c.AddRuntime("test", "/usr/bin/test", tc.setAsDefault) require.NoError(t, err) - require.EqualValues(t, expectedConfig.String(), config.String()) + require.EqualValues(t, expectedConfig.String(), c.String()) }) } } diff --git a/pkg/config/engine/containerd/config_v2.go b/pkg/config/engine/containerd/config_v2.go deleted file mode 100644 index ee9d33f79..000000000 --- a/pkg/config/engine/containerd/config_v2.go +++ /dev/null @@ -1,165 +0,0 @@ -/** -# Copyright (c) NVIDIA CORPORATION. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -**/ - -package containerd - -import ( - "fmt" - - "github.com/pelletier/go-toml" - - "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine" -) - -// AddRuntime adds a runtime to the containerd config -func (c *Config) AddRuntime(name string, path string, setAsDefault bool, configOverrides ...map[string]interface{}) error { - if c == nil || c.Tree == nil { - return fmt.Errorf("config is nil") - } - config := *c.Tree - - config.Set("version", int64(2)) - - // By default we extract the runtime options from the runc settings; if this does not exist we get the options from the default runtime specified in the config. - runtimeNamesForConfig := []string{"runc"} - if name, ok := config.GetPath([]string{"plugins", "io.containerd.grpc.v1.cri", "containerd", "default_runtime_name"}).(string); ok && name != "" { - runtimeNamesForConfig = append(runtimeNamesForConfig, name) - } - for _, r := range runtimeNamesForConfig { - if options, ok := config.GetPath([]string{"plugins", "io.containerd.grpc.v1.cri", "containerd", "runtimes", r}).(*toml.Tree); ok { - c.Logger.Debugf("using options from runtime %v: %v", r, options.String()) - options, _ = toml.Load(options.String()) - config.SetPath([]string{"plugins", "io.containerd.grpc.v1.cri", "containerd", "runtimes", name}, options) - break - } - } - - if config.GetPath([]string{"plugins", "io.containerd.grpc.v1.cri", "containerd", "runtimes", name}) == nil { - c.Logger.Warningf("could not infer options from runtimes %v; using defaults", runtimeNamesForConfig) - config.SetPath([]string{"plugins", "io.containerd.grpc.v1.cri", "containerd", "runtimes", name, "runtime_type"}, c.RuntimeType) - config.SetPath([]string{"plugins", "io.containerd.grpc.v1.cri", "containerd", "runtimes", name, "runtime_root"}, "") - config.SetPath([]string{"plugins", "io.containerd.grpc.v1.cri", "containerd", "runtimes", name, "runtime_engine"}, "") - config.SetPath([]string{"plugins", "io.containerd.grpc.v1.cri", "containerd", "runtimes", name, "privileged_without_host_devices"}, false) - } - - if len(c.ContainerAnnotations) > 0 { - annotations, err := c.getRuntimeAnnotations([]string{"plugins", "io.containerd.grpc.v1.cri", "containerd", "runtimes", name, "container_annotations"}) - if err != nil { - return err - } - annotations = append(c.ContainerAnnotations, annotations...) - config.SetPath([]string{"plugins", "io.containerd.grpc.v1.cri", "containerd", "runtimes", name, "container_annotations"}, annotations) - } - - config.SetPath([]string{"plugins", "io.containerd.grpc.v1.cri", "containerd", "runtimes", name, "options", "BinaryName"}, path) - - if setAsDefault { - config.SetPath([]string{"plugins", "io.containerd.grpc.v1.cri", "containerd", "default_runtime_name"}, name) - } - - runtimeSubtree := subtreeAtPath(config, "plugins", "io.containerd.grpc.v1.cri", "containerd", "runtimes", name) - if err := runtimeSubtree.applyOverrides(configOverrides...); err != nil { - return fmt.Errorf("failed to apply config overrides: %w", err) - } - - *c.Tree = config - return nil -} - -func (c *Config) getRuntimeAnnotations(path []string) ([]string, error) { - if c == nil || c.Tree == nil { - return nil, nil - } - - config := *c.Tree - if !config.HasPath(path) { - return nil, nil - } - annotationsI, ok := config.GetPath(path).([]interface{}) - if !ok { - return nil, fmt.Errorf("invalid annotations: %v", annotationsI) - } - - var annotations []string - for _, annotation := range annotationsI { - a, ok := annotation.(string) - if !ok { - return nil, fmt.Errorf("invalid annotation: %v", annotation) - } - annotations = append(annotations, a) - } - - return annotations, nil -} - -// Set sets the specified containerd option. -func (c *Config) Set(key string, value interface{}) { - config := *c.Tree - config.SetPath([]string{"plugins", "io.containerd.grpc.v1.cri", key}, value) - *c.Tree = config -} - -// DefaultRuntime returns the default runtime for the cri-o config -func (c Config) DefaultRuntime() string { - if runtime, ok := c.GetPath([]string{"plugins", "io.containerd.grpc.v1.cri", "containerd", "default_runtime_name"}).(string); ok { - return runtime - } - return "" -} - -// RemoveRuntime removes a runtime from the docker config -func (c *Config) RemoveRuntime(name string) error { - if c == nil || c.Tree == nil { - return nil - } - - config := *c.Tree - - config.DeletePath([]string{"plugins", "io.containerd.grpc.v1.cri", "containerd", "runtimes", name}) - if runtime, ok := config.GetPath([]string{"plugins", "io.containerd.grpc.v1.cri", "containerd", "default_runtime_name"}).(string); ok { - if runtime == name { - config.DeletePath([]string{"plugins", "io.containerd.grpc.v1.cri", "containerd", "default_runtime_name"}) - } - } - - runtimePath := []string{"plugins", "io.containerd.grpc.v1.cri", "containerd", "runtimes", name} - for i := 0; i < len(runtimePath); i++ { - if runtimes, ok := config.GetPath(runtimePath[:len(runtimePath)-i]).(*toml.Tree); ok { - if len(runtimes.Keys()) == 0 { - config.DeletePath(runtimePath[:len(runtimePath)-i]) - } - } - } - - if len(config.Keys()) == 1 && config.Keys()[0] == "version" { - config.Delete("version") - } - - *c.Tree = config - return nil -} - -// Save writes the config to the specified path -func (c Config) Save(path string) (int64, error) { - config := c.Tree - output, err := config.Marshal() - if err != nil { - return 0, fmt.Errorf("unable to convert to TOML: %v", err) - } - - n, err := engine.Config(path).Write(output) - return int64(n), err -} diff --git a/pkg/config/engine/containerd/containerd.go b/pkg/config/engine/containerd/containerd.go index 3bdc27ae5..ca35c75db 100644 --- a/pkg/config/engine/containerd/containerd.go +++ b/pkg/config/engine/containerd/containerd.go @@ -17,33 +17,162 @@ package containerd import ( - "github.com/pelletier/go-toml" + "fmt" "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine" + "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/toml" +) + +const ( + defaultConfigVersion = 2 + defaultRuntimeType = "io.containerd.runc.v2" ) // Config represents the containerd config type Config struct { *toml.Tree - Logger logger.Interface - RuntimeType string - UseDefaultRuntimeName bool - ContainerAnnotations []string + Version int64 + Logger logger.Interface + RuntimeType string + ContainerAnnotations []string + // UseLegacyConfig indicates whether a config file pre v1.3 should be generated. + // For version 1 config prior to containerd v1.4 the default runtime was + // specified in a containerd.runtimes.default_runtime section. + // This was deprecated in v1.4 in favour of containerd.default_runtime_name. + // Support for this section has been removed in v2.0. + UseLegacyConfig bool + // CRIRuntimePluginName represents the fully qualified name of the containerd plugin + // for the CRI runtime service. The name of this plugin was changed in v3 of the + // containerd configuration file. + CRIRuntimePluginName string } var _ engine.Interface = (*Config)(nil) +type containerdCfgRuntime struct { + tree *toml.Tree +} + +var _ engine.RuntimeConfig = (*containerdCfgRuntime)(nil) + +// GetBinaryPath retrieves the path to the low-level runtime binary for a runtime. +// If no path is available, the empty string is returned. +func (c *containerdCfgRuntime) GetBinaryPath() string { + if c == nil || c.tree == nil { + return "" + } + + binPath, _ := c.tree.GetPath([]string{"options", "BinaryName"}).(string) + return binPath +} + // New creates a containerd config with the specified options func New(opts ...Option) (engine.Interface, error) { - b := &builder{} + b := &builder{ + configVersion: defaultConfigVersion, + runtimeType: defaultRuntimeType, + } for _, opt := range opts { opt(b) } - if b.logger == nil { b.logger = logger.New() } + if b.configSource == nil { + b.configSource = toml.FromFile(b.path) + } + + tomlConfig, err := b.configSource.Load() + if err != nil { + return nil, fmt.Errorf("failed to load config: %v", err) + } + + configVersion, err := b.parseVersion(tomlConfig) + if err != nil { + return nil, fmt.Errorf("failed to parse config version: %w", err) + } + b.logger.Infof("Using config version %v", configVersion) + + criRuntimePluginName, err := b.criRuntimePluginName(configVersion) + if err != nil { + return nil, fmt.Errorf("failed to get CRI runtime plugin name: %w", err) + } + b.logger.Infof("Using CRI runtime plugin name %q", criRuntimePluginName) + + cfg := &Config{ + Tree: tomlConfig, + Version: configVersion, + CRIRuntimePluginName: criRuntimePluginName, + Logger: b.logger, + RuntimeType: b.runtimeType, + UseLegacyConfig: b.useLegacyConfig, + ContainerAnnotations: b.containerAnnotations, + } + + switch configVersion { + case 1: + return (*ConfigV1)(cfg), nil + default: + return cfg, nil + } +} + +// parseVersion returns the version of the config +func (b *builder) parseVersion(c *toml.Tree) (int64, error) { + if c == nil || len(c.Keys()) == 0 { + // No config exists, or the config file is empty. + if b.useLegacyConfig { + // If a legacy config is explicitly requested, we default to a v1 config. + return 1, nil + } + // Use the requested version. + return int64(b.configVersion), nil + } + + switch v := c.Get("version").(type) { + case nil: + return 1, nil + case int64: + return v, nil + default: + return -1, fmt.Errorf("unsupported type for version field: %v", v) + } +} + +func (b *builder) criRuntimePluginName(configVersion int64) (string, error) { + switch configVersion { + case 1: + return "cri", nil + case 2: + return "io.containerd.grpc.v1.cri", nil + default: + return "io.containerd.cri.v1.runtime", nil + } +} + +func (c *Config) GetRuntimeConfig(name string) (engine.RuntimeConfig, error) { + if c == nil || c.Tree == nil { + return nil, fmt.Errorf("config is nil") + } + runtimeData := c.GetSubtreeByPath([]string{"plugins", c.CRIRuntimePluginName, "containerd", "runtimes", name}) + return &containerdCfgRuntime{ + tree: runtimeData, + }, nil +} + +// CommandLineSource returns the CLI-based containerd config loader +func CommandLineSource(hostRoot string, executablePath string) toml.Loader { + if executablePath == "" { + executablePath = "containerd" + } + return toml.FromCommandLine(chrootIfRequired(hostRoot, executablePath, "config", "dump")...) +} + +func chrootIfRequired(hostRoot string, commandLine ...string) []string { + if hostRoot == "" || hostRoot == "/" { + return commandLine + } - return b.build() + return append([]string{"chroot", hostRoot}, commandLine...) } diff --git a/pkg/config/engine/containerd/option.go b/pkg/config/engine/containerd/option.go index ae1d99443..2dec62efb 100644 --- a/pkg/config/engine/containerd/option.go +++ b/pkg/config/engine/containerd/option.go @@ -17,24 +17,17 @@ package containerd import ( - "fmt" - "os" - - "github.com/pelletier/go-toml" - "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" - "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine" -) - -const ( - defaultRuntimeType = "io.containerd.runc.v2" + "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/toml" ) type builder struct { logger logger.Interface + configSource toml.Loader + configVersion int + useLegacyConfig bool path string runtimeType string - useLegacyConfig bool containerAnnotations []string } @@ -55,6 +48,13 @@ func WithPath(path string) Option { } } +// WithConfigSource sets the source for the config. +func WithConfigSource(configSource toml.Loader) Option { + return func(b *builder) { + b.configSource = configSource + } +} + // WithRuntimeType sets the runtime type for the config builder func WithRuntimeType(runtimeType string) Option { return func(b *builder) { @@ -62,95 +62,23 @@ func WithRuntimeType(runtimeType string) Option { } } -// WithUseLegacyConfig sets the useLegacyConfig flag for the config builder +// WithUseLegacyConfig sets the useLegacyConfig flag for the config builder. func WithUseLegacyConfig(useLegacyConfig bool) Option { return func(b *builder) { b.useLegacyConfig = useLegacyConfig } } -// WithContainerAnnotations sets the container annotations for the config builder -func WithContainerAnnotations(containerAnnotations ...string) Option { +// WithConfigVersion sets the config version for the config builder +func WithConfigVersion(configVersion int) Option { return func(b *builder) { - b.containerAnnotations = containerAnnotations + b.configVersion = configVersion } } -func (b *builder) build() (engine.Interface, error) { - if b.path == "" { - return nil, fmt.Errorf("config path is empty") - } - - if b.runtimeType == "" { - b.runtimeType = defaultRuntimeType - } - - config, err := b.loadConfig(b.path) - if err != nil { - return nil, fmt.Errorf("failed to load config: %v", err) - } - config.Logger = b.logger - config.RuntimeType = b.runtimeType - config.UseDefaultRuntimeName = !b.useLegacyConfig - config.ContainerAnnotations = b.containerAnnotations - - version, err := config.parseVersion(b.useLegacyConfig) - if err != nil { - return nil, fmt.Errorf("failed to parse config version: %v", err) - } - switch version { - case 1: - return (*ConfigV1)(config), nil - case 2: - return config, nil - } - - return nil, fmt.Errorf("unsupported config version: %v", version) -} - -// loadConfig loads the containerd config from disk -func (b *builder) loadConfig(config string) (*Config, error) { - info, err := os.Stat(config) - if os.IsExist(err) && info.IsDir() { - return nil, fmt.Errorf("config file is a directory") - } - - if os.IsNotExist(err) { - b.logger.Infof("Config file does not exist; using empty config") - config = "/dev/null" - } else { - b.logger.Infof("Loading config from %v", config) - } - - tomlConfig, err := toml.LoadFile(config) - if err != nil { - return nil, err - } - - cfg := Config{ - Tree: tomlConfig, - } - return &cfg, nil -} - -// parseVersion returns the version of the config -func (c *Config) parseVersion(useLegacyConfig bool) (int, error) { - defaultVersion := 2 - if useLegacyConfig { - defaultVersion = 1 - } - - switch v := c.Get("version").(type) { - case nil: - switch len(c.Keys()) { - case 0: // No config exists, or the config file is empty, use version inferred from containerd - return defaultVersion, nil - default: // A config file exists, has content, and no version is set - return 1, nil - } - case int64: - return int(v), nil - default: - return -1, fmt.Errorf("unsupported type for version field: %v", v) +// WithContainerAnnotations sets the container annotations for the config builder +func WithContainerAnnotations(containerAnnotations ...string) Option { + return func(b *builder) { + b.containerAnnotations = containerAnnotations } } diff --git a/pkg/config/engine/containerd/toml.go b/pkg/config/engine/containerd/toml.go deleted file mode 100644 index 85c20d0e1..000000000 --- a/pkg/config/engine/containerd/toml.go +++ /dev/null @@ -1,56 +0,0 @@ -/** -# Copyright 2024 NVIDIA CORPORATION -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -**/ - -package containerd - -import ( - "fmt" - - "github.com/pelletier/go-toml" -) - -// tomlTree is an alias for toml.Tree that allows for extensions. -type tomlTree toml.Tree - -func subtreeAtPath(c toml.Tree, path ...string) *tomlTree { - tree := c.GetPath(path).(*toml.Tree) - return (*tomlTree)(tree) -} - -func (t *tomlTree) insert(other map[string]interface{}) error { - - for key, value := range other { - if insertsubtree, ok := value.(map[string]interface{}); ok { - subtree := (*toml.Tree)(t).Get(key).(*toml.Tree) - return (*tomlTree)(subtree).insert(insertsubtree) - } - (*toml.Tree)(t).Set(key, value) - } - return nil -} - -func (t *tomlTree) applyOverrides(overrides ...map[string]interface{}) error { - for _, override := range overrides { - subconfig, err := toml.TreeFromMap(override) - if err != nil { - return fmt.Errorf("invalid toml config: %w", err) - } - if err := t.insert(subconfig.ToMap()); err != nil { - return err - } - } - return nil -} diff --git a/pkg/config/engine/crio/crio.go b/pkg/config/engine/crio/crio.go index 47320d15b..473b8fa43 100644 --- a/pkg/config/engine/crio/crio.go +++ b/pkg/config/engine/crio/crio.go @@ -19,10 +19,9 @@ package crio import ( "fmt" - "github.com/pelletier/go-toml" - "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine" + "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/toml" ) // Config represents the cri-o config @@ -31,6 +30,23 @@ type Config struct { Logger logger.Interface } +type crioRuntime struct { + tree *toml.Tree +} + +var _ engine.RuntimeConfig = (*crioRuntime)(nil) + +// GetBinaryPath retrieves the path to the low-level runtime binary for a runtime. +// If no path is available, the empty string is returned. +func (c *crioRuntime) GetBinaryPath() string { + if c.tree != nil { + if binaryPath, ok := c.tree.GetPath([]string{"runtime_path"}).(string); ok { + return binaryPath + } + } + return "" +} + var _ engine.Interface = (*Config)(nil) // New creates a cri-o config with the specified options @@ -39,23 +55,34 @@ func New(opts ...Option) (engine.Interface, error) { for _, opt := range opts { opt(b) } + if b.logger == nil { + b.logger = logger.New() + } + if b.configSource == nil { + b.configSource = toml.FromFile(b.path) + } - return b.build() + tomlConfig, err := b.configSource.Load() + if err != nil { + return nil, err + } + + cfg := Config{ + Tree: tomlConfig, + Logger: b.logger, + } + return &cfg, nil } // AddRuntime adds a new runtime to the crio config -func (c *Config) AddRuntime(name string, path string, setAsDefault bool, _ ...map[string]interface{}) error { +func (c *Config) AddRuntime(name string, path string, setAsDefault bool) error { if c == nil { return fmt.Errorf("config is nil") } config := *c.Tree - // By default we extract the runtime options from the runc settings; if this does not exist we get the options from the default runtime specified in the config. - runtimeNamesForConfig := []string{"runc"} - if name, ok := config.GetPath([]string{"crio", "runtime", "default_runtime"}).(string); ok && name != "" { - runtimeNamesForConfig = append(runtimeNamesForConfig, name) - } + runtimeNamesForConfig := engine.GetLowLevelRuntimes(c) for _, r := range runtimeNamesForConfig { if options, ok := config.GetPath([]string{"crio", "runtime", "runtimes", r}).(*toml.Tree); ok { c.Logger.Debugf("using options from runtime %v: %v", r, options.String()) @@ -116,21 +143,34 @@ func (c *Config) RemoveRuntime(name string) error { return nil } -// Set sets the specified cri-o option. -func (c *Config) Set(key string, value interface{}) { - config := *c.Tree - config.Set(key, value) - *c.Tree = config +func (c *Config) GetRuntimeConfig(name string) (engine.RuntimeConfig, error) { + if c == nil || c.Tree == nil { + return nil, fmt.Errorf("config is nil") + } + runtimeData := c.GetSubtreeByPath([]string{"crio", "runtime", "runtimes", name}) + return &crioRuntime{ + tree: runtimeData, + }, nil } -// Save writes the config to the specified path -func (c Config) Save(path string) (int64, error) { - config := c.Tree - output, err := config.Marshal() - if err != nil { - return 0, fmt.Errorf("unable to convert to TOML: %v", err) +// EnableCDI is a no-op for CRI-O since it always enabled where supported. +func (c *Config) EnableCDI() {} + +// CommandLineSource returns the CLI-based crio config loader +func CommandLineSource(hostRoot string, executablePath string) toml.Loader { + if executablePath == "" { + executablePath = "crio" + } + return toml.LoadFirst( + toml.FromCommandLine(chrootIfRequired(hostRoot, executablePath, "status", "config")...), + toml.FromCommandLine(chrootIfRequired(hostRoot, "crio-status", "config")...), + ) +} + +func chrootIfRequired(hostRoot string, commandLine ...string) []string { + if hostRoot == "" || hostRoot == "/" { + return commandLine } - n, err := engine.Config(path).Write(output) - return int64(n), err + return append([]string{"chroot", hostRoot}, commandLine...) } diff --git a/pkg/config/engine/crio/crio_test.go b/pkg/config/engine/crio/crio_test.go index a43d3a945..1468d467e 100644 --- a/pkg/config/engine/crio/crio_test.go +++ b/pkg/config/engine/crio/crio_test.go @@ -19,20 +19,20 @@ package crio import ( "testing" - "github.com/pelletier/go-toml" testlog "github.com/sirupsen/logrus/hooks/test" "github.com/stretchr/testify/require" + + "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/toml" ) func TestAddRuntime(t *testing.T) { logger, _ := testlog.NewNullLogger() testCases := []struct { - description string - config string - setAsDefault bool - configOverrides []map[string]interface{} - expectedConfig string - expectedError error + description string + config string + setAsDefault bool + expectedConfig string + expectedError error }{ { description: "empty config not default runtime", @@ -91,7 +91,7 @@ func TestAddRuntime(t *testing.T) { `, }, { - description: "options from runc take precedence over default runtime", + description: "options from the default runtime take precedence over runc", config: ` [crio] [crio.runtime] @@ -120,27 +120,85 @@ func TestAddRuntime(t *testing.T) { [crio.runtime.runtimes.test] runtime_path = "/usr/bin/test" runtime_type = "oci" - runc_option = "option" + default_option = "option" `, }, } for _, tc := range testCases { t.Run(tc.description, func(t *testing.T) { - config, err := toml.Load(tc.config) + cfg, err := toml.Load(tc.config) require.NoError(t, err) expectedConfig, err := toml.Load(tc.expectedConfig) require.NoError(t, err) c := &Config{ Logger: logger, - Tree: config, + Tree: cfg, } - err = c.AddRuntime("test", "/usr/bin/test", tc.setAsDefault, tc.configOverrides...) + err = c.AddRuntime("test", "/usr/bin/test", tc.setAsDefault) + require.NoError(t, err) + + require.EqualValues(t, expectedConfig.String(), cfg.String()) + }) + } +} + +func TestGetRuntimeConfig(t *testing.T) { + logger, _ := testlog.NewNullLogger() + config := ` +[crio.image] +signature_policy = "/etc/crio/policy.json" + +[crio.runtime] +default_runtime = "crun" + +[crio.runtime.runtimes.crun] +runtime_path = "/usr/libexec/crio/crun" +runtime_root = "/run/crun" +monitor_path = "/usr/libexec/crio/conmon" +allowed_annotations = [ + "io.containers.trace-syscall", +] + +[crio.runtime.runtimes.runc] +runtime_path = "/usr/libexec/crio/runc" +runtime_root = "/run/runc" +monitor_path = "/usr/libexec/crio/conmon" +` + testCases := []struct { + description string + runtime string + expected string + expectedError error + }{ + { + description: "valid runtime config, existing runtime", + runtime: "crun", + expected: "/usr/libexec/crio/crun", + expectedError: nil, + }, + { + description: "valid runtime config, non-existing runtime", + runtime: "some-other-runtime", + expected: "", + expectedError: nil, + }, + } + for _, tc := range testCases { + t.Run(tc.description, func(t *testing.T) { + cfg, err := toml.Load(config) require.NoError(t, err) - require.EqualValues(t, expectedConfig.String(), config.String()) + c := &Config{ + Logger: logger, + Tree: cfg, + } + + rc, err := c.GetRuntimeConfig(tc.runtime) + require.Equal(t, tc.expectedError, err) + require.Equal(t, tc.expected, rc.GetBinaryPath()) }) } } diff --git a/pkg/config/engine/crio/option.go b/pkg/config/engine/crio/option.go index 9f4d10fc0..7079fb150 100644 --- a/pkg/config/engine/crio/option.go +++ b/pkg/config/engine/crio/option.go @@ -17,17 +17,14 @@ package crio import ( - "fmt" - "os" - - "github.com/pelletier/go-toml" - "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" + "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/toml" ) type builder struct { - logger logger.Interface - path string + logger logger.Interface + configSource toml.Loader + path string } // Option defines a function that can be used to configure the config builder @@ -47,48 +44,9 @@ func WithPath(path string) Option { } } -func (b *builder) build() (*Config, error) { - if b.logger == nil { - b.logger = logger.New() - } - if b.path == "" { - empty := toml.Tree{} - c := Config{ - Tree: &empty, - Logger: b.logger, - } - return &c, nil - } - - return b.loadConfig(b.path) -} - -// loadConfig loads the cri-o config from disk -func (b *builder) loadConfig(config string) (*Config, error) { - b.logger.Infof("Loading config: %v", config) - - info, err := os.Stat(config) - if os.IsExist(err) && info.IsDir() { - return nil, fmt.Errorf("config file is a directory") - } - - if os.IsNotExist(err) { - b.logger.Infof("Config file does not exist; using empty config") - config = "/dev/null" - } else { - b.logger.Infof("Loading config from %v", config) - } - - cfg, err := toml.LoadFile(config) - if err != nil { - return nil, err - } - - b.logger.Infof("Successfully loaded config") - - c := Config{ - Tree: cfg, - Logger: b.logger, +// WithConfigSource sets the TOML source for the config. +func WithConfigSource(configSource toml.Loader) Option { + return func(b *builder) { + b.configSource = configSource } - return &c, nil } diff --git a/pkg/config/engine/docker/docker.go b/pkg/config/engine/docker/docker.go index e6edbe818..86512df93 100644 --- a/pkg/config/engine/docker/docker.go +++ b/pkg/config/engine/docker/docker.go @@ -21,6 +21,7 @@ import ( "fmt" "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" + "github.com/NVIDIA/nvidia-container-toolkit/pkg/config" "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine" ) @@ -34,6 +35,21 @@ type Config map[string]interface{} var _ engine.Interface = (*Config)(nil) +type dockerRuntime map[string]interface{} + +var _ engine.RuntimeConfig = (*dockerRuntime)(nil) + +// GetBinaryPath retrieves the path to the low-level runtime binary for a runtime. +// If no path is available, the empty string is returned. +func (d dockerRuntime) GetBinaryPath() string { + if d == nil { + return "" + } + + path, _ := d["path"].(string) + return path +} + // New creates a docker config with the specified options func New(opts ...Option) (engine.Interface, error) { b := &builder{} @@ -49,7 +65,7 @@ func New(opts ...Option) (engine.Interface, error) { } // AddRuntime adds a new runtime to the docker config -func (c *Config) AddRuntime(name string, path string, setAsDefault bool, _ ...map[string]interface{}) error { +func (c *Config) AddRuntime(name string, path string, setAsDefault bool) error { if c == nil { return fmt.Errorf("config is nil") } @@ -87,6 +103,24 @@ func (c Config) DefaultRuntime() string { return r } +// EnableCDI sets features.cdi to true in the docker config. +func (c *Config) EnableCDI() { + if c == nil { + return + } + config := *c + + features, ok := config["features"].(map[string]bool) + if !ok { + features = make(map[string]bool) + } + features["cdi"] = true + + config["features"] = features + + *c = config +} + // RemoveRuntime removes a runtime from the docker config func (c *Config) RemoveRuntime(name string) error { if c == nil { @@ -116,11 +150,6 @@ func (c *Config) RemoveRuntime(name string) error { return nil } -// Set sets the specified docker option -func (c *Config) Set(key string, value interface{}) { - (*c)[key] = value -} - // Save writes the config to the specified path func (c Config) Save(path string) (int64, error) { output, err := json.MarshalIndent(c, "", " ") @@ -128,6 +157,35 @@ func (c Config) Save(path string) (int64, error) { return 0, fmt.Errorf("unable to convert to JSON: %v", err) } - n, err := engine.Config(path).Write(output) + n, err := config.Raw(path).Write(output) return int64(n), err } + +// GetRuntimeConfig returns the runtime info of the runtime passed as input +func (c *Config) GetRuntimeConfig(name string) (engine.RuntimeConfig, error) { + if c == nil { + return nil, fmt.Errorf("config is nil") + } + + cfg := *c + + var runtimes map[string]interface{} + if _, ok := cfg["runtimes"]; ok { + runtimes = cfg["runtimes"].(map[string]interface{}) + if r, ok := runtimes[name]; ok { + dr := dockerRuntime(r.(map[string]interface{})) + return &dr, nil + } + } + return &dockerRuntime{}, nil +} + +// String returns the string representation of the JSON config. +func (c Config) String() string { + output, err := json.MarshalIndent(c, "", " ") + if err != nil { + return fmt.Sprintf("invalid JSON: %v", err) + } + + return string(output) +} diff --git a/pkg/config/engine/docker/docker_test.go b/pkg/config/engine/docker/docker_test.go index 115e189e4..a279c7be2 100644 --- a/pkg/config/engine/docker/docker_test.go +++ b/pkg/config/engine/docker/docker_test.go @@ -213,3 +213,37 @@ func TestUpdateConfigRuntimes(t *testing.T) { } } + +func TestGetRuntimeConfig(t *testing.T) { + c := map[string]interface{}{ + "runtimes": map[string]interface{}{ + "nvidia": map[string]interface{}{ + "path": "nvidia-container-runtime", + "args": []string{}, + }, + }, + } + cfg := Config(c) + + testCases := []struct { + description string + runtime string + expected string + }{ + { + description: "existing runtime", + runtime: "nvidia", + expected: "nvidia-container-runtime", + }, + { + description: "non-existent runtime", + runtime: "some-other-runtime", + expected: "", + }, + } + for _, tc := range testCases { + rc, err := cfg.GetRuntimeConfig(tc.runtime) + require.NoError(t, err) + require.Equal(t, tc.expected, rc.GetBinaryPath()) + } +} diff --git a/pkg/config/engine/engine.go b/pkg/config/engine/engine.go new file mode 100644 index 000000000..b20d0558d --- /dev/null +++ b/pkg/config/engine/engine.go @@ -0,0 +1,63 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package engine + +import "strings" + +// GetBinaryPathsForRuntimes returns the list of binary paths for common runtimes. +// The following list of runtimes is considered: +// +// the default runtime, "runc", and "crun" +// +// If an nvidia* runtime is set as the default runtime, this is ignored. +func GetBinaryPathsForRuntimes(cfg Interface) []string { + + var binaryPaths []string + seen := make(map[string]bool) + for _, runtime := range GetLowLevelRuntimes(cfg) { + runtimeConfig, err := cfg.GetRuntimeConfig(runtime) + if err != nil { + // TODO: It will be useful to log the error when GetRuntimeConfig fails for a runtime + continue + } + binaryPath := runtimeConfig.GetBinaryPath() + if binaryPath == "" || seen[binaryPath] { + continue + } + seen[binaryPath] = true + binaryPaths = append(binaryPaths, binaryPath) + } + + return binaryPaths +} + +// GetLowLevelRuntimes returns a predefined list low-level runtimes from the specified config. +// nvidia* runtimes are ignored. +func GetLowLevelRuntimes(cfg Interface) []string { + var runtimes []string + isValidDefault := func(s string) bool { + if s == "" { + return false + } + // ignore nvidia* runtimes. + return !strings.HasPrefix(s, "nvidia") + } + if defaultRuntime := cfg.DefaultRuntime(); isValidDefault(defaultRuntime) { + runtimes = append(runtimes, defaultRuntime) + } + return append(runtimes, "runc", "crun") +} diff --git a/pkg/config/engine/config.go b/pkg/config/raw.go similarity index 87% rename from pkg/config/engine/config.go rename to pkg/config/raw.go index f82a59f2b..c0af7882f 100644 --- a/pkg/config/engine/config.go +++ b/pkg/config/raw.go @@ -1,5 +1,5 @@ /** -# Copyright (c) NVIDIA CORPORATION. All rights reserved. +# Copyright 2024 NVIDIA CORPORATION # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ # limitations under the License. **/ -package engine +package config import ( "fmt" @@ -22,11 +22,11 @@ import ( "path/filepath" ) -// Config represents a runtime config -type Config string +// Raw represents a raw config file +type Raw string // Write writes the specified contents to a config file. -func (c Config) Write(output []byte) (int, error) { +func (c Raw) Write(output []byte) (int, error) { path := string(c) if path == "" { n, err := os.Stdout.Write(output) diff --git a/pkg/config/toml/list.go b/pkg/config/toml/list.go new file mode 100644 index 000000000..324fd8418 --- /dev/null +++ b/pkg/config/toml/list.go @@ -0,0 +1,41 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package toml + +import "errors" + +type firstOf []Loader + +func LoadFirst(loaders ...Loader) Loader { + return firstOf(loaders) +} + +func (loaders firstOf) Load() (*Tree, error) { + var errs error + for _, loader := range loaders { + if loader == nil { + continue + } + tree, err := loader.Load() + if err != nil { + errs = errors.Join(errs, err) + continue + } + return tree, nil + } + return nil, errs +} diff --git a/pkg/config/toml/source-cli.go b/pkg/config/toml/source-cli.go new file mode 100644 index 000000000..a34695838 --- /dev/null +++ b/pkg/config/toml/source-cli.go @@ -0,0 +1,45 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package toml + +import ( + "bytes" + "fmt" + "os/exec" +) + +type tomlCliSource struct { + command string + args []string +} + +func (c tomlCliSource) Load() (*Tree, error) { + //nolint:gosec // Subprocess launched with a potential tainted input or cmd arguments + cmd := exec.Command(c.command, c.args...) + + var outb bytes.Buffer + var errb bytes.Buffer + + cmd.Stdout = &outb + cmd.Stderr = &errb + if err := cmd.Run(); err != nil { + // TODO: Log to stderr in case of failure + return nil, fmt.Errorf("failed to run command %v %v: %w", c.command, c.args, err) + } + + return LoadBytes(outb.Bytes()) +} diff --git a/pkg/config/toml/source-empty.go b/pkg/config/toml/source-empty.go new file mode 100644 index 000000000..13c4ec21e --- /dev/null +++ b/pkg/config/toml/source-empty.go @@ -0,0 +1,35 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package toml + +import ( + "github.com/pelletier/go-toml" +) + +type empty string + +var _ Loader = (*empty)(nil) + +// Load is a no-op for an empty source. +func (e empty) Load() (*Tree, error) { + return newEmpty(), nil +} + +func newEmpty() *Tree { + tomlTree, _ := toml.TreeFromMap(nil) + return (*Tree)(tomlTree) +} diff --git a/pkg/config/toml/source-file.go b/pkg/config/toml/source-file.go new file mode 100644 index 000000000..3be8e9758 --- /dev/null +++ b/pkg/config/toml/source-file.go @@ -0,0 +1,40 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package toml + +import ( + "fmt" + "os" +) + +type tomlFile string + +var _ Loader = (*tomlFile)(nil) + +// Load loads the contents of the specified TOML file as a map. +func (f tomlFile) Load() (*Tree, error) { + info, err := os.Stat(string(f)) + if os.IsExist(err) && info.IsDir() { + return nil, fmt.Errorf("config file %s is a directory", string(f)) + } + + if os.IsNotExist(err) { + return Empty.Load() + } + + return LoadFile(string(f)) +} diff --git a/pkg/config/toml/source-map.go b/pkg/config/toml/source-map.go new file mode 100644 index 000000000..077bbb392 --- /dev/null +++ b/pkg/config/toml/source-map.go @@ -0,0 +1,26 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package toml + +type tomlMap map[string]interface{} + +var _ Loader = (*tomlFile)(nil) + +// Load loads the contents of the specified TOML file as a map. +func (l tomlMap) Load() (*Tree, error) { + return LoadMap(l) +} diff --git a/pkg/config/toml/source-string.go b/pkg/config/toml/source-string.go new file mode 100644 index 000000000..72d4cc6db --- /dev/null +++ b/pkg/config/toml/source-string.go @@ -0,0 +1,26 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package toml + +type tomlString string + +var _ Loader = (*tomlFile)(nil) + +// Load loads the contents of the specified TOML file as a map. +func (l tomlString) Load() (*Tree, error) { + return Load(string(l)) +} diff --git a/pkg/config/toml/source.go b/pkg/config/toml/source.go new file mode 100644 index 000000000..105a9743b --- /dev/null +++ b/pkg/config/toml/source.go @@ -0,0 +1,65 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package toml + +const ( + Empty = empty("") +) + +// Loader represents a source for a toml config. +type Loader interface { + Load() (*Tree, error) +} + +// FromCommandLine creates a TOML source from the output of a shell command and its corresponding args. +// If the command is empty, an empty config is returned. +func FromCommandLine(cmds ...string) Loader { + if len(cmds) == 0 { + return Empty + } + return &tomlCliSource{ + command: cmds[0], + args: cmds[1:], + } +} + +// FromFile creates a TOML source from the specified file. +// If an empty string is passed an empty toml config is used. +func FromFile(path string) Loader { + if path == "" { + return Empty + } + return tomlFile(path) +} + +// FromMap creates a TOML source for the specified map. +// If an empty map is passed and empty tomly config is used. +func FromMap(m map[string]interface{}) Loader { + if m == nil { + return Empty + } + return tomlMap(m) +} + +// FromString creates a TOML source for the specified contents. +// If an empty string is passed an empty toml config is used. +func FromString(contents string) Loader { + if contents == "" { + return Empty + } + return tomlString(contents) +} diff --git a/pkg/config/toml/toml.go b/pkg/config/toml/toml.go new file mode 100644 index 000000000..32b855168 --- /dev/null +++ b/pkg/config/toml/toml.go @@ -0,0 +1,159 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package toml + +import ( + "fmt" + + "github.com/pelletier/go-toml" + + "github.com/NVIDIA/nvidia-container-toolkit/pkg/config" +) + +type Tree toml.Tree + +// Copy produces a copy of the contents of the Tree. +func (t *Tree) Copy() *Tree { + copy, _ := Load(t.String()) + return copy +} + +func (t *Tree) GetSubtreeByPath(keys []string) *Tree { + subtree := t.GetPath(keys) + if subtree == nil { + return nil + } + + switch subtree := subtree.(type) { + case *toml.Tree: + return (*Tree)(subtree) + case *Tree: + return subtree + default: + panic(fmt.Errorf("invalid subtree type %T", subtree)) + } +} + +func (t *Tree) DeletePath(keys []string) error { + return (*toml.Tree)(t).DeletePath(keys) +} + +func (t *Tree) HasPath(keys []string) bool { + return (*toml.Tree)(t).HasPath(keys) +} + +func (t *Tree) Get(key string) interface{} { + return toTreeFromRaw((*toml.Tree)(t).Get(key)) +} + +func (t *Tree) GetPath(keys []string) interface{} { + return toTreeFromRaw((*toml.Tree)(t).GetPath(keys)) +} + +func (t *Tree) SetPath(keys []string, value interface{}) { + (*toml.Tree)(t).SetPath(keys, toRawFromTree(value)) +} + +func (t *Tree) Set(key string, value interface{}) { + (*toml.Tree)(t).Set(key, toRawFromTree(value)) +} + +func (t *Tree) Delete(key string) error { + return (*toml.Tree)(t).Delete(key) +} + +func (t *Tree) Keys() []string { + return (*toml.Tree)(t).Keys() +} + +func (t *Tree) String() string { + return (*toml.Tree)(t).String() +} + +func (t *Tree) ToMap() map[string]interface{} { + return (*toml.Tree)(t).ToMap() +} + +func (t *Tree) Raw() *toml.Tree { + return (*toml.Tree)(t) +} + +func toRawFromTree(value interface{}) interface{} { + if tree, ok := value.(*Tree); ok { + return (*toml.Tree)(tree) + } + return value +} + +func toTreeFromRaw(value interface{}) interface{} { + if tree, ok := value.(*toml.Tree); ok { + return (*Tree)(tree) + } + return value +} + +func TreeFromMap(m map[string]interface{}) (*Tree, error) { + return new(func() (*toml.Tree, error) { + return toml.TreeFromMap(m) + }) +} + +func Load(content string) (*Tree, error) { + return new(func() (*toml.Tree, error) { + return toml.Load(content) + }) +} + +func LoadBytes(b []byte) (*Tree, error) { + return new(func() (*toml.Tree, error) { + return toml.LoadBytes(b) + }) +} + +func LoadFile(path string) (*Tree, error) { + return new(func() (*toml.Tree, error) { + return toml.LoadFile(path) + }) +} + +func LoadMap(m map[string]interface{}) (*Tree, error) { + return TreeFromMap(m) +} + +func Marshal(v interface{}) ([]byte, error) { + return toml.Marshal(v) +} + +func new(construct func() (*toml.Tree, error)) (*Tree, error) { + tomlTree, err := construct() + if err != nil { + return nil, err + } + return (*Tree)(tomlTree), nil +} + +// Save writes the config to the specified path +func (t *Tree) Save(path string) (int64, error) { + cfg := (*toml.Tree)(t) + output, err := cfg.Marshal() + if err != nil { + return 0, fmt.Errorf("unable to convert to TOML: %v", err) + } + + n, err := config.Raw(path).Write(output) + return int64(n), err +} diff --git a/pkg/nvcdi/api.go b/pkg/nvcdi/api.go index 1c84fefaa..eea7120e5 100644 --- a/pkg/nvcdi/api.go +++ b/pkg/nvcdi/api.go @@ -17,39 +17,70 @@ package nvcdi import ( - "github.com/NVIDIA/go-nvlib/pkg/nvlib/device" "tags.cncf.io/container-device-interface/pkg/cdi" "tags.cncf.io/container-device-interface/specs-go" + "github.com/NVIDIA/nvidia-container-toolkit/internal/discover" "github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/spec" ) -const ( - // ModeAuto configures the CDI spec generator to automatically detect the system configuration - ModeAuto = "auto" - // ModeNvml configures the CDI spec generator to use the NVML library. - ModeNvml = "nvml" - // ModeWsl configures the CDI spec generator to generate a WSL spec. - ModeWsl = "wsl" - // ModeManagement configures the CDI spec generator to generate a management spec. - ModeManagement = "management" - // ModeGds configures the CDI spec generator to generate a GDS spec. - ModeGds = "gds" - // ModeMofed configures the CDI spec generator to generate a MOFED spec. - ModeMofed = "mofed" - // ModeCSV configures the CDI spec generator to generate a spec based on the contents of CSV - // mountspec files. - ModeCSV = "csv" -) - // Interface defines the API for the nvcdi package type Interface interface { - GetSpec() (spec.Interface, error) + SpecGenerator GetCommonEdits() (*cdi.ContainerEdits, error) - GetAllDeviceSpecs() ([]specs.Device, error) - GetGPUDeviceEdits(device.Device) (*cdi.ContainerEdits, error) - GetGPUDeviceSpecs(int, device.Device) ([]specs.Device, error) - GetMIGDeviceEdits(device.Device, device.MigDevice) (*cdi.ContainerEdits, error) - GetMIGDeviceSpecs(int, device.Device, int, device.MigDevice) ([]specs.Device, error) GetDeviceSpecsByID(...string) ([]specs.Device, error) + // Deprecated: GetAllDeviceSpecs is deprecated. Use GetDeviceSpecsByID("all") instead. + GetAllDeviceSpecs() ([]specs.Device, error) } + +// A SpecGenerator is used to generate a complete CDI spec for a collected set +// of devices. +type SpecGenerator interface { + GetSpec(...string) (spec.Interface, error) +} + +// A DeviceSpecGenerator is used to generate the specs for one or more devices. +type DeviceSpecGenerator interface { + GetDeviceSpecs() ([]specs.Device, error) +} + +// A HookName represents one of the predefined NVIDIA CDI hooks. +type HookName = discover.HookName + +const ( + // AllHooks is a special hook name that allows all hooks to be matched. + AllHooks = discover.AllHooks + + // A CreateSymlinksHook is used to create symlinks in the container. + CreateSymlinksHook = discover.CreateSymlinksHook + // DisableDeviceNodeModificationHook refers to the hook used to ensure that + // device nodes are not created by libnvidia-ml.so or nvidia-smi in a + // container. + // Added in v1.17.8 + DisableDeviceNodeModificationHook = discover.DisableDeviceNodeModificationHook + // An EnableCudaCompatHook is used to enabled CUDA Forward Compatibility. + // Added in v1.17.5 + EnableCudaCompatHook = discover.EnableCudaCompatHook + // An UpdateLDCacheHook is used to update the ldcache in the container. + UpdateLDCacheHook = discover.UpdateLDCacheHook + // A CreateSonameSymlinksHook is the hook used to ensure that soname symlinks + // for injected libraries exist in the container. + CreateSonameSymlinksHook = discover.CreateSonameSymlinksHook + + // Deprecated: Use CreateSymlinksHook instead. + HookCreateSymlinks = CreateSymlinksHook + // Deprecated: Use EnableCudaCompatHook instead. + HookEnableCudaCompat = EnableCudaCompatHook + // Deprecated: Use UpdateLDCacheHook instead. + HookUpdateLDCache = UpdateLDCacheHook +) + +// A FeatureFlag refers to a specific feature that can be toggled in the CDI api. +// All features are off by default. +type FeatureFlag string + +const ( + // FeatureDisableNvsandboxUtils disables the use of nvsandboxutils when + // querying devices. + FeatureDisableNvsandboxUtils = FeatureFlag("disable-nvsandbox-utils") +) diff --git a/pkg/nvcdi/common-nvml.go b/pkg/nvcdi/common-nvml.go index 4dd1bc357..fbb5f01d1 100644 --- a/pkg/nvcdi/common-nvml.go +++ b/pkg/nvcdi/common-nvml.go @@ -36,12 +36,12 @@ func (l *nvmllib) newCommonNVMLDiscoverer() (discover.Discover, error) { }, ) - graphicsMounts, err := discover.NewGraphicsMountsDiscoverer(l.logger, l.driver, l.nvidiaCDIHookPath) + graphicsMounts, err := discover.NewGraphicsMountsDiscoverer(l.logger, l.driver, l.hookCreator) if err != nil { l.logger.Warningf("failed to create discoverer for graphics mounts: %v", err) } - driverFiles, err := NewDriverDiscoverer(l.logger, l.driver, l.nvidiaCDIHookPath, l.ldconfigPath, l.nvmllib) + driverFiles, err := l.NewDriverDiscoverer() if err != nil { return nil, fmt.Errorf("failed to create discoverer for driver files: %v", err) } diff --git a/pkg/nvcdi/driver-nvml.go b/pkg/nvcdi/driver-nvml.go index 8fb398887..51592ff5c 100644 --- a/pkg/nvcdi/driver-nvml.go +++ b/pkg/nvcdi/driver-nvml.go @@ -34,41 +34,41 @@ import ( // NewDriverDiscoverer creates a discoverer for the libraries and binaries associated with a driver installation. // The supplied NVML Library is used to query the expected driver version. -func NewDriverDiscoverer(logger logger.Interface, driver *root.Driver, nvidiaCDIHookPath string, ldconfigPath string, nvmllib nvml.Interface) (discover.Discover, error) { - if r := nvmllib.Init(); r != nvml.SUCCESS { +func (l *nvmllib) NewDriverDiscoverer() (discover.Discover, error) { + if r := l.nvmllib.Init(); r != nvml.SUCCESS { return nil, fmt.Errorf("failed to initialize NVML: %v", r) } defer func() { - if r := nvmllib.Shutdown(); r != nvml.SUCCESS { - logger.Warningf("failed to shutdown NVML: %v", r) + if r := l.nvmllib.Shutdown(); r != nvml.SUCCESS { + l.logger.Warningf("failed to shutdown NVML: %v", r) } }() - version, r := nvmllib.SystemGetDriverVersion() + version, r := l.nvmllib.SystemGetDriverVersion() if r != nvml.SUCCESS { return nil, fmt.Errorf("failed to determine driver version: %v", r) } - return newDriverVersionDiscoverer(logger, driver, nvidiaCDIHookPath, ldconfigPath, version) + return (*nvcdilib)(l).newDriverVersionDiscoverer(version) } -func newDriverVersionDiscoverer(logger logger.Interface, driver *root.Driver, nvidiaCDIHookPath, ldconfigPath, version string) (discover.Discover, error) { - libraries, err := NewDriverLibraryDiscoverer(logger, driver, nvidiaCDIHookPath, ldconfigPath, version) +func (l *nvcdilib) newDriverVersionDiscoverer(version string) (discover.Discover, error) { + libraries, err := l.NewDriverLibraryDiscoverer(version) if err != nil { return nil, fmt.Errorf("failed to create discoverer for driver libraries: %v", err) } - ipcs, err := discover.NewIPCDiscoverer(logger, driver.Root) + ipcs, err := discover.NewIPCDiscoverer(l.logger, l.driver.Root) if err != nil { return nil, fmt.Errorf("failed to create discoverer for IPC sockets: %v", err) } - firmwares, err := NewDriverFirmwareDiscoverer(logger, driver.Root, version) + firmwares, err := NewDriverFirmwareDiscoverer(l.logger, l.driver.Root, version) if err != nil { return nil, fmt.Errorf("failed to create discoverer for GSP firmware: %v", err) } - binaries := NewDriverBinariesDiscoverer(logger, driver.Root) + binaries := NewDriverBinariesDiscoverer(l.logger, l.driver.Root) d := discover.Merge( libraries, @@ -81,28 +81,48 @@ func newDriverVersionDiscoverer(logger logger.Interface, driver *root.Driver, nv } // NewDriverLibraryDiscoverer creates a discoverer for the libraries associated with the specified driver version. -func NewDriverLibraryDiscoverer(logger logger.Interface, driver *root.Driver, nvidiaCDIHookPath, ldconfigPath, version string) (discover.Discover, error) { - libraryPaths, err := getVersionLibs(logger, driver, version) +func (l *nvcdilib) NewDriverLibraryDiscoverer(version string) (discover.Discover, error) { + libraryPaths, libCudaDirectoryPath, err := getVersionLibs(l.logger, l.driver, version) if err != nil { return nil, fmt.Errorf("failed to get libraries for driver version: %v", err) } libraries := discover.NewMounts( - logger, + l.logger, lookup.NewFileLocator( - lookup.WithLogger(logger), - lookup.WithRoot(driver.Root), + lookup.WithLogger(l.logger), + lookup.WithRoot(l.driver.Root), ), - driver.Root, + l.driver.Root, libraryPaths, ) - hooks, _ := discover.NewLDCacheUpdateHook(logger, libraries, nvidiaCDIHookPath, ldconfigPath) + var discoverers []discover.Discover - d := discover.Merge( + driverDotSoSymlinksDiscoverer := discover.WithDriverDotSoSymlinks( libraries, - hooks, + version, + l.hookCreator, ) + discoverers = append(discoverers, driverDotSoSymlinksDiscoverer) + + // TODO: The following should use the version directly. + cudaCompatLibHookDiscoverer := discover.NewCUDACompatHookDiscoverer(l.logger, l.hookCreator, l.driver) + discoverers = append(discoverers, cudaCompatLibHookDiscoverer) + + updateLDCache, _ := discover.NewLDCacheUpdateHook(l.logger, libraries, l.hookCreator, l.ldconfigPath) + discoverers = append(discoverers, updateLDCache) + + disableDeviceNodeModification := l.hookCreator.Create(DisableDeviceNodeModificationHook) + discoverers = append(discoverers, disableDeviceNodeModification) + + environmentVariable := &discover.EnvVar{ + Name: "NVIDIA_CTK_LIBCUDA_DIR", + Value: libCudaDirectoryPath, + } + discoverers = append(discoverers, environmentVariable) + + d := discover.Merge(discoverers...) return d, nil } @@ -180,6 +200,8 @@ func NewDriverBinariesDiscoverer(logger logger.Interface, driverRoot string) dis "nvidia-persistenced", /* Persistence mode utility */ "nvidia-cuda-mps-control", /* Multi process service CLI */ "nvidia-cuda-mps-server", /* Multi process service server */ + "nvidia-imex", /* NVIDIA IMEX Daemon */ + "nvidia-imex-ctl", /* NVIDIA IMEX control */ }, ) } @@ -187,36 +209,41 @@ func NewDriverBinariesDiscoverer(logger logger.Interface, driverRoot string) dis // getVersionLibs checks the LDCache for libraries ending in the specified driver version. // Although the ldcache at the specified driverRoot is queried, the paths are returned relative to this driverRoot. // This allows the standard mount location logic to be used for resolving the mounts. -func getVersionLibs(logger logger.Interface, driver *root.Driver, version string) ([]string, error) { +func getVersionLibs(logger logger.Interface, driver *root.Driver, version string) ([]string, string, error) { logger.Infof("Using driver version %v", version) libCudaPaths, err := cuda.New( driver.Libraries(), ).Locate("." + version) if err != nil { - return nil, fmt.Errorf("failed to locate libcuda.so.%v: %v", version, err) + return nil, "", fmt.Errorf("failed to locate libcuda.so.%v: %v", version, err) } - libRoot := filepath.Dir(libCudaPaths[0]) + libCudaDirectoryPath := filepath.Dir(libCudaPaths[0]) libraries := lookup.NewFileLocator( lookup.WithLogger(logger), - lookup.WithSearchPaths(libRoot), + lookup.WithSearchPaths( + libCudaDirectoryPath, + filepath.Join(libCudaDirectoryPath, "vdpau"), + ), lookup.WithOptional(true), ) libs, err := libraries.Locate("*.so." + version) if err != nil { - return nil, fmt.Errorf("failed to locate libraries for driver version %v: %v", version, err) + return nil, "", fmt.Errorf("failed to locate libraries for driver version %v: %v", version, err) } if driver.Root == "/" || driver.Root == "" { - return libs, nil + return libs, libCudaDirectoryPath, nil } + libCudaDirectoryPath = driver.RelativeToRoot(libCudaDirectoryPath) + var relative []string for _, l := range libs { relative = append(relative, strings.TrimPrefix(l, driver.Root)) } - return relative, nil + return relative, libCudaDirectoryPath, nil } diff --git a/pkg/nvcdi/driver-wsl.go b/pkg/nvcdi/driver-wsl.go index d184d7779..041c27cee 100644 --- a/pkg/nvcdi/driver-wsl.go +++ b/pkg/nvcdi/driver-wsl.go @@ -39,14 +39,13 @@ var requiredDriverStoreFiles = []string{ } // newWSLDriverDiscoverer returns a Discoverer for WSL2 drivers. -func newWSLDriverDiscoverer(logger logger.Interface, driverRoot string, nvidiaCDIHookPath, ldconfigPath string) (discover.Discover, error) { - err := dxcore.Init() - if err != nil { - return nil, fmt.Errorf("failed to initialize dxcore: %v", err) +func newWSLDriverDiscoverer(logger logger.Interface, driverRoot string, hookCreator discover.HookCreator, ldconfigPath string) (discover.Discover, error) { + if err := dxcore.Init(); err != nil { + return nil, fmt.Errorf("failed to initialize dxcore: %w", err) } defer func() { if err := dxcore.Shutdown(); err != nil { - logger.Warningf("failed to shutdown dxcore: %v", err) + logger.Warningf("failed to shutdown dxcore: %w", err) } }() @@ -54,32 +53,19 @@ func newWSLDriverDiscoverer(logger logger.Interface, driverRoot string, nvidiaCD if len(driverStorePaths) == 0 { return nil, fmt.Errorf("no driver store paths found") } + if len(driverStorePaths) > 1 { + logger.Warningf("Found multiple driver store paths: %v", driverStorePaths) + } logger.Infof("Using WSL driver store paths: %v", driverStorePaths) - return newWSLDriverStoreDiscoverer(logger, driverRoot, nvidiaCDIHookPath, ldconfigPath, driverStorePaths) -} - -// newWSLDriverStoreDiscoverer returns a Discoverer for WSL2 drivers in the driver store associated with a dxcore adapter. -func newWSLDriverStoreDiscoverer(logger logger.Interface, driverRoot string, nvidiaCDIHookPath string, ldconfigPath string, driverStorePaths []string) (discover.Discover, error) { - var searchPaths []string - seen := make(map[string]bool) - for _, path := range driverStorePaths { - if seen[path] { - continue - } - searchPaths = append(searchPaths, path) - } - if len(searchPaths) > 1 { - logger.Warningf("Found multiple driver store paths: %v", searchPaths) - } - searchPaths = append(searchPaths, "/usr/lib/wsl/lib") + driverStorePaths = append(driverStorePaths, "/usr/lib/wsl/lib") - libraries := discover.NewMounts( + driverStoreMounts := discover.NewMounts( logger, lookup.NewFileLocator( lookup.WithLogger(logger), lookup.WithSearchPaths( - searchPaths..., + driverStorePaths..., ), lookup.WithCount(1), ), @@ -88,15 +74,15 @@ func newWSLDriverStoreDiscoverer(logger logger.Interface, driverRoot string, nvi ) symlinkHook := nvidiaSMISimlinkHook{ - logger: logger, - mountsFrom: libraries, - nvidiaCDIHookPath: nvidiaCDIHookPath, + logger: logger, + mountsFrom: driverStoreMounts, + hookCreator: hookCreator, } - ldcacheHook, _ := discover.NewLDCacheUpdateHook(logger, libraries, nvidiaCDIHookPath, ldconfigPath) + ldcacheHook, _ := discover.NewLDCacheUpdateHook(logger, driverStoreMounts, hookCreator, ldconfigPath) d := discover.Merge( - libraries, + driverStoreMounts, symlinkHook, ldcacheHook, ) @@ -106,9 +92,9 @@ func newWSLDriverStoreDiscoverer(logger logger.Interface, driverRoot string, nvi type nvidiaSMISimlinkHook struct { discover.None - logger logger.Interface - mountsFrom discover.Discover - nvidiaCDIHookPath string + logger logger.Interface + mountsFrom discover.Discover + hookCreator discover.HookCreator } // Hooks returns a hook that creates a symlink to nvidia-smi in the driver store. @@ -135,7 +121,7 @@ func (m nvidiaSMISimlinkHook) Hooks() ([]discover.Hook, error) { } link := "/usr/bin/nvidia-smi" links := []string{fmt.Sprintf("%s::%s", target, link)} - symlinkHook := discover.CreateCreateSymlinkHook(m.nvidiaCDIHookPath, links) + symlinkHook := m.hookCreator.Create(CreateSymlinksHook, links...) return symlinkHook.Hooks() } diff --git a/pkg/nvcdi/driver-wsl_test.go b/pkg/nvcdi/driver-wsl_test.go index b9aac1a10..39eeb5004 100644 --- a/pkg/nvcdi/driver-wsl_test.go +++ b/pkg/nvcdi/driver-wsl_test.go @@ -29,6 +29,7 @@ import ( func TestNvidiaSMISymlinkHook(t *testing.T) { logger, _ := testlog.NewNullLogger() + hookCreator := discover.NewHookCreator() errMounts := errors.New("mounts error") @@ -92,9 +93,10 @@ func TestNvidiaSMISymlinkHook(t *testing.T) { expectedHooks: []discover.Hook{ { Lifecycle: "createContainer", - Path: "nvidia-cdi-hook", + Path: "/usr/bin/nvidia-cdi-hook", Args: []string{"nvidia-cdi-hook", "create-symlinks", "--link", "nvidia-smi::/usr/bin/nvidia-smi"}, + Env: []string{"NVIDIA_CTK_DEBUG=false"}, }, }, }, @@ -112,9 +114,10 @@ func TestNvidiaSMISymlinkHook(t *testing.T) { expectedHooks: []discover.Hook{ { Lifecycle: "createContainer", - Path: "nvidia-cdi-hook", + Path: "/usr/bin/nvidia-cdi-hook", Args: []string{"nvidia-cdi-hook", "create-symlinks", "--link", "/some/path/nvidia-smi::/usr/bin/nvidia-smi"}, + Env: []string{"NVIDIA_CTK_DEBUG=false"}, }, }, }, @@ -132,9 +135,10 @@ func TestNvidiaSMISymlinkHook(t *testing.T) { expectedHooks: []discover.Hook{ { Lifecycle: "createContainer", - Path: "nvidia-cdi-hook", + Path: "/usr/bin/nvidia-cdi-hook", Args: []string{"nvidia-cdi-hook", "create-symlinks", "--link", "/some/path/nvidia-smi::/usr/bin/nvidia-smi"}, + Env: []string{"NVIDIA_CTK_DEBUG=false"}, }, }, }, @@ -143,9 +147,9 @@ func TestNvidiaSMISymlinkHook(t *testing.T) { for _, tc := range testCases { t.Run(tc.description, func(t *testing.T) { m := nvidiaSMISimlinkHook{ - logger: logger, - mountsFrom: tc.mounts, - nvidiaCDIHookPath: "nvidia-cdi-hook", + logger: logger, + mountsFrom: tc.mounts, + hookCreator: hookCreator, } devices, err := m.Devices() diff --git a/pkg/nvcdi/full-gpu-nvml.go b/pkg/nvcdi/full-gpu-nvml.go index 881d102d2..ac2a3b2f6 100644 --- a/pkg/nvcdi/full-gpu-nvml.go +++ b/pkg/nvcdi/full-gpu-nvml.go @@ -19,41 +19,74 @@ package nvcdi import ( "fmt" - "github.com/NVIDIA/go-nvlib/pkg/nvlib/device" "tags.cncf.io/container-device-interface/pkg/cdi" "tags.cncf.io/container-device-interface/specs-go" + "github.com/NVIDIA/go-nvlib/pkg/nvlib/device" + "github.com/NVIDIA/go-nvml/pkg/nvml" + "github.com/NVIDIA/nvidia-container-toolkit/internal/discover" "github.com/NVIDIA/nvidia-container-toolkit/internal/edits" "github.com/NVIDIA/nvidia-container-toolkit/internal/platform-support/dgpu" ) -// GetGPUDeviceSpecs returns the CDI device specs for the full GPU represented by 'device'. -func (l *nvmllib) GetGPUDeviceSpecs(i int, d device.Device) ([]specs.Device, error) { - edits, err := l.GetGPUDeviceEdits(d) +// A fullGPUDeviceSpecGenerator generates the CDI device specifications for a +// single full GPU. +type fullGPUDeviceSpecGenerator struct { + *nvmllib + id string + index int + device device.Device +} + +var _ DeviceSpecGenerator = (*fullGPUDeviceSpecGenerator)(nil) + +func (l *nvmllib) newFullGPUDeviceSpecGeneratorFromNVMLDevice(id string, nvmlDevice nvml.Device) (DeviceSpecGenerator, error) { + device, err := l.devicelib.NewDevice(nvmlDevice) if err != nil { - return nil, fmt.Errorf("failed to get edits for device: %v", err) + return nil, err } - var deviceSpecs []specs.Device - names, err := l.deviceNamers.GetDeviceNames(i, convert{d}) + index, ret := nvmlDevice.GetIndex() + if ret != nvml.SUCCESS { + return nil, fmt.Errorf("failed to get device index: %v", ret) + } + + e := &fullGPUDeviceSpecGenerator{ + nvmllib: l, + id: id, + index: index, + device: device, + } + return e, nil +} + +func (l *fullGPUDeviceSpecGenerator) GetDeviceSpecs() ([]specs.Device, error) { + deviceEdits, err := l.getDeviceEdits() + if err != nil { + return nil, fmt.Errorf("failed to get CDI device edits for identifier %q: %w", l.id, err) + } + + names, err := l.getNames() if err != nil { - return nil, fmt.Errorf("failed to get device name: %v", err) + return nil, fmt.Errorf("failed to get device names: %w", err) } + + var deviceSpecs []specs.Device for _, name := range names { - spec := specs.Device{ + deviceSpec := specs.Device{ Name: name, - ContainerEdits: *edits.ContainerEdits, + ContainerEdits: *deviceEdits.ContainerEdits, } - deviceSpecs = append(deviceSpecs, spec) + deviceSpecs = append(deviceSpecs, deviceSpec) } return deviceSpecs, nil } // GetGPUDeviceEdits returns the CDI edits for the full GPU represented by 'device'. -func (l *nvmllib) GetGPUDeviceEdits(d device.Device) (*cdi.ContainerEdits, error) { - device, err := l.newFullGPUDiscoverer(d) +func (l *fullGPUDeviceSpecGenerator) getDeviceEdits() (*cdi.ContainerEdits, error) { + device, err := l.newFullGPUDiscoverer(l.device) if err != nil { return nil, fmt.Errorf("failed to create device discoverer: %v", err) } @@ -66,12 +99,17 @@ func (l *nvmllib) GetGPUDeviceEdits(d device.Device) (*cdi.ContainerEdits, error return editsForDevice, nil } +func (l *fullGPUDeviceSpecGenerator) getNames() ([]string, error) { + return l.deviceNamers.GetDeviceNames(l.index, convert{l.device}) +} + // newFullGPUDiscoverer creates a discoverer for the full GPU defined by the specified device. -func (l *nvmllib) newFullGPUDiscoverer(d device.Device) (discover.Discover, error) { +func (l *fullGPUDeviceSpecGenerator) newFullGPUDiscoverer(d device.Device) (discover.Discover, error) { deviceNodes, err := dgpu.NewForDevice(d, dgpu.WithDevRoot(l.devRoot), dgpu.WithLogger(l.logger), - dgpu.WithNVIDIACDIHookPath(l.nvidiaCDIHookPath), + dgpu.WithHookCreator(l.hookCreator), + dgpu.WithNvsandboxuitilsLib(l.nvsandboxutilslib), ) if err != nil { return nil, fmt.Errorf("failed to create device discoverer: %v", err) @@ -80,7 +118,7 @@ func (l *nvmllib) newFullGPUDiscoverer(d device.Device) (discover.Discover, erro deviceFolderPermissionHooks := newDeviceFolderPermissionHookDiscoverer( l.logger, l.devRoot, - l.nvidiaCDIHookPath, + l.hookCreator, deviceNodes, ) diff --git a/pkg/nvcdi/gds.go b/pkg/nvcdi/gds.go index 915cb94a2..ad7cf6501 100644 --- a/pkg/nvcdi/gds.go +++ b/pkg/nvcdi/gds.go @@ -19,21 +19,23 @@ package nvcdi import ( "fmt" - "github.com/NVIDIA/go-nvlib/pkg/nvlib/device" "tags.cncf.io/container-device-interface/pkg/cdi" "tags.cncf.io/container-device-interface/specs-go" "github.com/NVIDIA/nvidia-container-toolkit/internal/discover" "github.com/NVIDIA/nvidia-container-toolkit/internal/edits" - "github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/spec" ) type gdslib nvcdilib -var _ Interface = (*gdslib)(nil) +var _ deviceSpecGeneratorFactory = (*gdslib)(nil) -// GetAllDeviceSpecs returns the device specs for all available devices. -func (l *gdslib) GetAllDeviceSpecs() ([]specs.Device, error) { +func (l *gdslib) DeviceSpecGenerators(...string) (DeviceSpecGenerator, error) { + return l, nil +} + +// GetDeviceSpecs returns the CDI device specs for a single all device. +func (l *gdslib) GetDeviceSpecs() ([]specs.Device, error) { discoverer, err := discover.NewGDSDiscoverer(l.logger, l.driverRoot, l.devRoot) if err != nil { return nil, fmt.Errorf("failed to create GPUDirect Storage discoverer: %v", err) @@ -55,36 +57,3 @@ func (l *gdslib) GetAllDeviceSpecs() ([]specs.Device, error) { func (l *gdslib) GetCommonEdits() (*cdi.ContainerEdits, error) { return edits.FromDiscoverer(discover.None{}) } - -// GetSpec is unsppported for the gdslib specs. -// gdslib is typically wrapped by a spec that implements GetSpec. -func (l *gdslib) GetSpec() (spec.Interface, error) { - return nil, fmt.Errorf("GetSpec is not supported") -} - -// GetGPUDeviceEdits is unsupported for the gdslib specs -func (l *gdslib) GetGPUDeviceEdits(device.Device) (*cdi.ContainerEdits, error) { - return nil, fmt.Errorf("GetGPUDeviceEdits is not supported") -} - -// GetGPUDeviceSpecs is unsupported for the gdslib specs -func (l *gdslib) GetGPUDeviceSpecs(int, device.Device) ([]specs.Device, error) { - return nil, fmt.Errorf("GetGPUDeviceSpecs is not supported") -} - -// GetMIGDeviceEdits is unsupported for the gdslib specs -func (l *gdslib) GetMIGDeviceEdits(device.Device, device.MigDevice) (*cdi.ContainerEdits, error) { - return nil, fmt.Errorf("GetMIGDeviceEdits is not supported") -} - -// GetMIGDeviceSpecs is unsupported for the gdslib specs -func (l *gdslib) GetMIGDeviceSpecs(int, device.Device, int, device.MigDevice) ([]specs.Device, error) { - return nil, fmt.Errorf("GetMIGDeviceSpecs is not supported") -} - -// GetDeviceSpecsByID returns the CDI device specs for the GPU(s) represented by -// the provided identifiers, where an identifier is an index or UUID of a valid -// GPU device. -func (l *gdslib) GetDeviceSpecsByID(...string) ([]specs.Device, error) { - return nil, fmt.Errorf("GetDeviceSpecsByID is not supported") -} diff --git a/pkg/nvcdi/lib-csv.go b/pkg/nvcdi/lib-csv.go index 649b801ae..6380d79dc 100644 --- a/pkg/nvcdi/lib-csv.go +++ b/pkg/nvcdi/lib-csv.go @@ -19,32 +19,38 @@ package nvcdi import ( "fmt" - "github.com/NVIDIA/go-nvlib/pkg/nvlib/device" "tags.cncf.io/container-device-interface/pkg/cdi" "tags.cncf.io/container-device-interface/specs-go" "github.com/NVIDIA/nvidia-container-toolkit/internal/discover" "github.com/NVIDIA/nvidia-container-toolkit/internal/edits" "github.com/NVIDIA/nvidia-container-toolkit/internal/platform-support/tegra" - "github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/spec" ) type csvlib nvcdilib -var _ Interface = (*csvlib)(nil) +var _ deviceSpecGeneratorFactory = (*csvlib)(nil) -// GetSpec should not be called for wsllib -func (l *csvlib) GetSpec() (spec.Interface, error) { - return nil, fmt.Errorf("Unexpected call to csvlib.GetSpec()") +func (l *csvlib) DeviceSpecGenerators(ids ...string) (DeviceSpecGenerator, error) { + for _, id := range ids { + switch id { + case "all": + case "0": + default: + return nil, fmt.Errorf("unsupported device id: %v", id) + } + } + + return l, nil } -// GetAllDeviceSpecs returns the device specs for all available devices. -func (l *csvlib) GetAllDeviceSpecs() ([]specs.Device, error) { +// GetDeviceSpecs returns the CDI device specs for a single device. +func (l *csvlib) GetDeviceSpecs() ([]specs.Device, error) { d, err := tegra.New( tegra.WithLogger(l.logger), tegra.WithDriverRoot(l.driverRoot), tegra.WithDevRoot(l.devRoot), - tegra.WithNVIDIACDIHookPath(l.nvidiaCDIHookPath), + tegra.WithHookCreator(l.hookCreator), tegra.WithLdconfigPath(l.ldconfigPath), tegra.WithCSVFiles(l.csvFiles), tegra.WithLibrarySearchPaths(l.librarySearchPaths...), @@ -76,33 +82,5 @@ func (l *csvlib) GetAllDeviceSpecs() ([]specs.Device, error) { // GetCommonEdits generates a CDI specification that can be used for ANY devices func (l *csvlib) GetCommonEdits() (*cdi.ContainerEdits, error) { - d := discover.None{} - return edits.FromDiscoverer(d) -} - -// GetGPUDeviceEdits generates a CDI specification that can be used for GPU devices -func (l *csvlib) GetGPUDeviceEdits(device.Device) (*cdi.ContainerEdits, error) { - return nil, fmt.Errorf("GetGPUDeviceEdits is not supported for CSV files") -} - -// GetGPUDeviceSpecs returns the CDI device specs for the full GPU represented by 'device'. -func (l *csvlib) GetGPUDeviceSpecs(i int, d device.Device) ([]specs.Device, error) { - return nil, fmt.Errorf("GetGPUDeviceSpecs is not supported for CSV files") -} - -// GetMIGDeviceEdits generates a CDI specification that can be used for MIG devices -func (l *csvlib) GetMIGDeviceEdits(device.Device, device.MigDevice) (*cdi.ContainerEdits, error) { - return nil, fmt.Errorf("GetMIGDeviceEdits is not supported for CSV files") -} - -// GetMIGDeviceSpecs returns the CDI device specs for the full MIG represented by 'device'. -func (l *csvlib) GetMIGDeviceSpecs(int, device.Device, int, device.MigDevice) ([]specs.Device, error) { - return nil, fmt.Errorf("GetMIGDeviceSpecs is not supported for CSV files") -} - -// GetDeviceSpecsByID returns the CDI device specs for the GPU(s) represented by -// the provided identifiers, where an identifier is an index or UUID of a valid -// GPU device. -func (l *csvlib) GetDeviceSpecsByID(...string) ([]specs.Device, error) { - return nil, fmt.Errorf("GetDeviceSpecsByID is not supported for CSV files") + return edits.FromDiscoverer(discover.None{}) } diff --git a/pkg/nvcdi/lib-imex.go b/pkg/nvcdi/lib-imex.go new file mode 100644 index 000000000..2a1780714 --- /dev/null +++ b/pkg/nvcdi/lib-imex.go @@ -0,0 +1,123 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package nvcdi + +import ( + "fmt" + "path/filepath" + "strconv" + "strings" + + "tags.cncf.io/container-device-interface/pkg/cdi" + "tags.cncf.io/container-device-interface/specs-go" + + "github.com/NVIDIA/nvidia-container-toolkit/internal/discover" + "github.com/NVIDIA/nvidia-container-toolkit/internal/edits" +) + +type imexlib nvcdilib + +type imexChannel struct { + id string + devRoot string +} + +var _ deviceSpecGeneratorFactory = (*imexlib)(nil) + +const ( + classImexChannel = "imex-channel" +) + +// GetCommonEdits returns an empty set of edits for IMEX devices. +func (l *imexlib) GetCommonEdits() (*cdi.ContainerEdits, error) { + return edits.FromDiscoverer(discover.None{}) +} + +// DeviceSpecGenerators returns the CDI device spec generators for the specified +// imex channel IDs. +// Valid IDs are: +// * numeric channel IDs +// * channel +// * the special ID 'all' +func (l *imexlib) DeviceSpecGenerators(ids ...string) (DeviceSpecGenerator, error) { + channelsIDs, err := l.getChannelIDs(ids...) + if err != nil { + return nil, err + } + + var deviceSpecGenerators DeviceSpecGenerators + for _, id := range channelsIDs { + deviceSpecGenerators = append(deviceSpecGenerators, &imexChannel{id: id, devRoot: l.devRoot}) + } + + return deviceSpecGenerators, nil +} + +func (l *imexlib) getChannelIDs(ids ...string) ([]string, error) { + var channelIDs []string + for _, id := range ids { + trimmed := strings.TrimPrefix(id, "channel") + if trimmed == "all" { + return l.getAllChannelIDs() + } + _, err := strconv.ParseUint(trimmed, 10, 64) + if err != nil { + return nil, fmt.Errorf("invalid channel ID %v: %w", id, err) + } + channelIDs = append(channelIDs, trimmed) + } + return channelIDs, nil +} + +// getAllChannelIDs returns the device IDs for all available IMEX channels. +func (l *imexlib) getAllChannelIDs() ([]string, error) { + channelsDiscoverer := discover.NewCharDeviceDiscoverer( + l.logger, + l.devRoot, + []string{"/dev/nvidia-caps-imex-channels/channel*"}, + ) + + channels, err := channelsDiscoverer.Devices() + if err != nil { + return nil, err + } + + var channelIDs []string + for _, channel := range channels { + channelID := filepath.Base(channel.Path) + channelIDs = append(channelIDs, strings.TrimPrefix(channelID, "channel")) + } + + return channelIDs, nil +} + +// GetDeviceSpecs returns the CDI device specs the specified IMEX channel. +func (l *imexChannel) GetDeviceSpecs() ([]specs.Device, error) { + path := "/dev/nvidia-caps-imex-channels/channel" + l.id + deviceSpec := specs.Device{ + Name: l.id, + ContainerEdits: specs.ContainerEdits{ + DeviceNodes: []*specs.DeviceNode{ + { + Path: path, + HostPath: filepath.Join(l.devRoot, path), + }, + }, + }, + } + return []specs.Device{deviceSpec}, nil +} diff --git a/pkg/nvcdi/lib-imex_test.go b/pkg/nvcdi/lib-imex_test.go new file mode 100644 index 000000000..fb7fc1ebe --- /dev/null +++ b/pkg/nvcdi/lib-imex_test.go @@ -0,0 +1,80 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package nvcdi + +import ( + "bytes" + "path/filepath" + "strings" + "testing" + + testlog "github.com/sirupsen/logrus/hooks/test" + "github.com/stretchr/testify/require" + + "github.com/NVIDIA/nvidia-container-toolkit/internal/test" +) + +func TestImexMode(t *testing.T) { + t.Setenv("__NVCT_TESTING_DEVICES_ARE_FILES", "true") + + logger, _ := testlog.NewNullLogger() + + moduleRoot, err := test.GetModuleRoot() + require.NoError(t, err) + hostRoot := filepath.Join(moduleRoot, "testdata", "lookup", "rootfs-1") + + expectedSpec := `--- +cdiVersion: 0.5.0 +kind: nvidia.com/imex-channel +devices: + - name: "0" + containerEdits: + deviceNodes: + - path: /dev/nvidia-caps-imex-channels/channel0 + hostPath: {{ .hostRoot }}/dev/nvidia-caps-imex-channels/channel0 + - name: "1" + containerEdits: + deviceNodes: + - path: /dev/nvidia-caps-imex-channels/channel1 + hostPath: {{ .hostRoot }}/dev/nvidia-caps-imex-channels/channel1 + - name: "2047" + containerEdits: + deviceNodes: + - path: /dev/nvidia-caps-imex-channels/channel2047 + hostPath: {{ .hostRoot }}/dev/nvidia-caps-imex-channels/channel2047 +containerEdits: + env: + - NVIDIA_VISIBLE_DEVICES=void +` + expectedSpec = strings.ReplaceAll(expectedSpec, "{{ .hostRoot }}", hostRoot) + + lib, err := New( + WithLogger(logger), + WithMode(ModeImex), + WithDriverRoot(hostRoot), + ) + require.NoError(t, err) + + spec, err := lib.GetSpec() + require.NoError(t, err) + + var b bytes.Buffer + + _, err = spec.WriteTo(&b) + require.NoError(t, err) + require.Equal(t, expectedSpec, b.String()) +} diff --git a/pkg/nvcdi/lib-nvml.go b/pkg/nvcdi/lib-nvml.go index ab7cb8ba2..c7e6e58a6 100644 --- a/pkg/nvcdi/lib-nvml.go +++ b/pkg/nvcdi/lib-nvml.go @@ -27,45 +27,12 @@ import ( "tags.cncf.io/container-device-interface/specs-go" "github.com/NVIDIA/nvidia-container-toolkit/internal/edits" - "github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/spec" + "github.com/NVIDIA/nvidia-container-toolkit/internal/nvsandboxutils" ) type nvmllib nvcdilib -var _ Interface = (*nvmllib)(nil) - -// GetSpec should not be called for nvmllib -func (l *nvmllib) GetSpec() (spec.Interface, error) { - return nil, fmt.Errorf("Unexpected call to nvmllib.GetSpec()") -} - -// GetAllDeviceSpecs returns the device specs for all available devices. -func (l *nvmllib) GetAllDeviceSpecs() ([]specs.Device, error) { - var deviceSpecs []specs.Device - - if r := l.nvmllib.Init(); r != nvml.SUCCESS { - return nil, fmt.Errorf("failed to initialize NVML: %v", r) - } - defer func() { - if r := l.nvmllib.Shutdown(); r != nvml.SUCCESS { - l.logger.Warningf("failed to shutdown NVML: %v", r) - } - }() - - gpuDeviceSpecs, err := l.getGPUDeviceSpecs() - if err != nil { - return nil, err - } - deviceSpecs = append(deviceSpecs, gpuDeviceSpecs...) - - migDeviceSpecs, err := l.getMigDeviceSpecs() - if err != nil { - return nil, err - } - deviceSpecs = append(deviceSpecs, migDeviceSpecs...) - - return deviceSpecs, nil -} +var _ deviceSpecGeneratorFactory = (*nvmllib)(nil) // GetCommonEdits generates a CDI specification that can be used for ANY devices func (l *nvmllib) GetCommonEdits() (*cdi.ContainerEdits, error) { @@ -77,55 +44,110 @@ func (l *nvmllib) GetCommonEdits() (*cdi.ContainerEdits, error) { return edits.FromDiscoverer(common) } -// GetDeviceSpecsByID returns the CDI device specs for the GPU(s) represented by -// the provided identifiers, where an identifier is an index or UUID of a valid -// GPU device. -// Deprecated: Use GetDeviceSpecsBy instead. -func (l *nvmllib) GetDeviceSpecsByID(ids ...string) ([]specs.Device, error) { +// DeviceSpecGenerators returns the CDI device spec generators for NVML devices +// with the specified IDs. +// Supported IDs are: +// * an index of a GPU or MIG device +// * a UUID of a GPU or MIG device +// * the special ID 'all' +func (l *nvmllib) DeviceSpecGenerators(ids ...string) (DeviceSpecGenerator, error) { + if err := l.init(); err != nil { + return nil, err + } + defer l.tryShutdown() + + dsgs, err := l.getDeviceSpecGeneratorsForIDs(ids...) + if err != nil { + return nil, err + } + return l.withInit(dsgs), nil +} + +func (l *nvmllib) getDeviceSpecGeneratorsForIDs(ids ...string) (DeviceSpecGenerator, error) { var identifiers []device.Identifier for _, id := range ids { + if id == "all" { + return l.getDeviceSpecGeneratorsForAllDevices() + } identifiers = append(identifiers, device.Identifier(id)) } - return l.GetDeviceSpecsBy(identifiers...) -} -// GetDeviceSpecsBy is not supported for the gdslib specs. -func (l *nvmllib) GetDeviceSpecsBy(identifiers ...device.Identifier) ([]specs.Device, error) { - for _, id := range identifiers { - if id == "all" { - return l.GetAllDeviceSpecs() + devices, err := l.getNVMLDevicesByID(identifiers...) + if err != nil { + return nil, err + } + + var DeviceSpecGenerators DeviceSpecGenerators + for i, device := range devices { + editor, err := l.newDeviceSpecGeneratorFromNVMLDevice(ids[i], device) + if err != nil { + return nil, err } + DeviceSpecGenerators = append(DeviceSpecGenerators, editor) } - var deviceSpecs []specs.Device + return DeviceSpecGenerators, nil +} - if r := l.nvmllib.Init(); r != nvml.SUCCESS { - return nil, fmt.Errorf("failed to initialize NVML: %w", r) +func (l *nvmllib) newDeviceSpecGeneratorFromNVMLDevice(id string, nvmlDevice nvml.Device) (DeviceSpecGenerator, error) { + isMig, ret := nvmlDevice.IsMigDeviceHandle() + if ret != nvml.SUCCESS { + return nil, ret + } + if isMig { + return l.newMIGDeviceSpecGeneratorFromNVMLDevice(id, nvmlDevice) } - defer func() { - if r := l.nvmllib.Shutdown(); r != nvml.SUCCESS { - l.logger.Warningf("failed to shutdown NVML: %w", r) + + return l.newFullGPUDeviceSpecGeneratorFromNVMLDevice(id, nvmlDevice) +} + +// getDeviceSpecGeneratorsForAllDevices returns the CDI device spec generators +// for all NVML devices detected on the system. +// This includes full GPUs as well as MIG devices. +func (l *nvmllib) getDeviceSpecGeneratorsForAllDevices() (DeviceSpecGenerator, error) { + var DeviceSpecGenerators DeviceSpecGenerators + err := l.devicelib.VisitDevices(func(i int, d device.Device) error { + isMigEnabled, err := d.IsMigEnabled() + if err != nil { + return err + } + if isMigEnabled { + return nil + } + e := &fullGPUDeviceSpecGenerator{ + nvmllib: l, + id: fmt.Sprintf("%d", i), + index: i, + device: d, } - }() - nvmlDevices, err := l.getNVMLDevicesByID(identifiers...) + DeviceSpecGenerators = append(DeviceSpecGenerators, e) + return nil + }) if err != nil { - return nil, fmt.Errorf("failed to get NVML device handles: %w", err) + return nil, fmt.Errorf("failed to get full GPU device editors: %w", err) } - for i, nvmlDevice := range nvmlDevices { - deviceEdits, err := l.getEditsForDevice(nvmlDevice) - if err != nil { - return nil, fmt.Errorf("failed to get CDI device edits for identifier %q: %w", identifiers[i], err) + err = l.devicelib.VisitMigDevices(func(i int, d device.Device, j int, mig device.MigDevice) error { + parentGenerator := &fullGPUDeviceSpecGenerator{ + nvmllib: l, + index: i, + id: fmt.Sprintf("%d:%d", i, j), + device: d, } - deviceSpec := specs.Device{ - Name: string(identifiers[i]), - ContainerEdits: *deviceEdits.ContainerEdits, + migGenerator := &migDeviceSpecGenerator{ + fullGPUDeviceSpecGenerator: parentGenerator, + migIndex: j, + migDevice: mig, } - deviceSpecs = append(deviceSpecs, deviceSpec) + DeviceSpecGenerators = append(DeviceSpecGenerators, parentGenerator, migGenerator) + return nil + }) + if err != nil { + return nil, fmt.Errorf("failed to get MIG device editors: %w", err) } - return deviceSpecs, nil + return DeviceSpecGenerators, nil } // TODO: move this to go-nvlib? @@ -165,8 +187,9 @@ func (l *nvmllib) getNVMLDeviceByID(id device.Identifier) (nvml.Device, error) { if migIdx, err = strconv.Atoi(split[1]); err != nil { return nil, fmt.Errorf("failed to convert device index to an int: %w", err) } - if parent, err = l.nvmllib.DeviceGetHandleByIndex(gpuIdx); err != nvml.SUCCESS { - return nil, fmt.Errorf("failed to get parent device handle: %w", err) + parent, ret := l.nvmllib.DeviceGetHandleByIndex(gpuIdx) + if ret != nvml.SUCCESS { + return nil, fmt.Errorf("failed to get parent device handle: %v", ret) } return parent.GetMigDeviceHandleByIndex(migIdx) } @@ -174,76 +197,51 @@ func (l *nvmllib) getNVMLDeviceByID(id device.Identifier) (nvml.Device, error) { return nil, fmt.Errorf("identifier is not a valid UUID or index: %q", id) } -func (l *nvmllib) getEditsForDevice(nvmlDevice nvml.Device) (*cdi.ContainerEdits, error) { - mig, err := nvmlDevice.IsMigDeviceHandle() - if err != nvml.SUCCESS { - return nil, fmt.Errorf("failed to determine if device handle is a MIG device: %w", err) - } - if mig { - return l.getEditsForMIGDevice(nvmlDevice) +func (l *nvmllib) init() error { + if r := l.nvmllib.Init(); r != nvml.SUCCESS { + return fmt.Errorf("failed to initialize NVML: %w", r) } - return l.getEditsForGPUDevice(nvmlDevice) -} -func (l *nvmllib) getEditsForGPUDevice(nvmlDevice nvml.Device) (*cdi.ContainerEdits, error) { - nvlibDevice, err := l.devicelib.NewDevice(nvmlDevice) - if err != nil { - return nil, fmt.Errorf("failed to construct device: %w", err) + if l.nvsandboxutilslib == nil { + return nil } - deviceEdits, err := l.GetGPUDeviceEdits(nvlibDevice) - if err != nil { - return nil, fmt.Errorf("failed to get GPU device edits: %w", err) + if r := l.nvsandboxutilslib.Init(l.driverRoot); r != nvsandboxutils.SUCCESS { + l.logger.Warningf("Failed to init nvsandboxutils: %v; ignoring", r) + l.nvsandboxutilslib = nil } - - return deviceEdits, nil + return nil } -func (l *nvmllib) getEditsForMIGDevice(nvmlDevice nvml.Device) (*cdi.ContainerEdits, error) { - nvmlParentDevice, ret := nvmlDevice.GetDeviceHandleFromMigDeviceHandle() - if ret != nvml.SUCCESS { - return nil, fmt.Errorf("failed to get parent device handle: %w", ret) - } - nvlibMigDevice, err := l.devicelib.NewMigDevice(nvmlDevice) - if err != nil { - return nil, fmt.Errorf("failed to construct device: %w", err) +func (l *nvmllib) tryShutdown() { + if l.nvsandboxutilslib != nil { + if r := l.nvsandboxutilslib.Shutdown(); r != nvsandboxutils.SUCCESS { + l.logger.Warningf("failed to shutdown nvsandboxutils: %v", r) + } } - nvlibParentDevice, err := l.devicelib.NewDevice(nvmlParentDevice) - if err != nil { - return nil, fmt.Errorf("failed to construct parent device: %w", err) + if r := l.nvmllib.Shutdown(); r != nvml.SUCCESS { + l.logger.Warningf("failed to shutdown NVML: %v", r) } - return l.GetMIGDeviceEdits(nvlibParentDevice, nvlibMigDevice) } -func (l *nvmllib) getGPUDeviceSpecs() ([]specs.Device, error) { - var deviceSpecs []specs.Device - err := l.devicelib.VisitDevices(func(i int, d device.Device) error { - specsForDevice, err := l.GetGPUDeviceSpecs(i, d) - if err != nil { - return err - } - deviceSpecs = append(deviceSpecs, specsForDevice...) +type deviceSpecGeneratorsWithAndShutdown struct { + *nvmllib + DeviceSpecGenerator +} - return nil - }) - if err != nil { - return nil, fmt.Errorf("failed to generate CDI edits for GPU devices: %v", err) +func (l *nvmllib) withInit(dsg DeviceSpecGenerator) DeviceSpecGenerator { + return &deviceSpecGeneratorsWithAndShutdown{ + nvmllib: l, + DeviceSpecGenerator: dsg, } - return deviceSpecs, err } -func (l *nvmllib) getMigDeviceSpecs() ([]specs.Device, error) { - var deviceSpecs []specs.Device - err := l.devicelib.VisitMigDevices(func(i int, d device.Device, j int, mig device.MigDevice) error { - specsForDevice, err := l.GetMIGDeviceSpecs(i, d, j, mig) - if err != nil { - return err - } - deviceSpecs = append(deviceSpecs, specsForDevice...) - - return nil - }) - if err != nil { - return nil, fmt.Errorf("failed to generate CDI edits for GPU devices: %v", err) +// GetDeviceSpecs ensures that the init and shutdown are called before (and +// after) generating the required device specs. +func (d *deviceSpecGeneratorsWithAndShutdown) GetDeviceSpecs() ([]specs.Device, error) { + if err := d.init(); err != nil { + return nil, err } - return deviceSpecs, err + defer d.tryShutdown() + + return d.DeviceSpecGenerator.GetDeviceSpecs() } diff --git a/pkg/nvcdi/lib-nvml_test.go b/pkg/nvcdi/lib-nvml_test.go new file mode 100644 index 000000000..69434b6b6 --- /dev/null +++ b/pkg/nvcdi/lib-nvml_test.go @@ -0,0 +1,143 @@ +/** +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package nvcdi + +import ( + "testing" + + "github.com/NVIDIA/go-nvml/pkg/nvml" + mocknvml "github.com/NVIDIA/go-nvml/pkg/nvml/mock" + "github.com/NVIDIA/go-nvml/pkg/nvml/mock/dgxa100" + "github.com/stretchr/testify/require" + + "github.com/NVIDIA/go-nvlib/pkg/nvlib/device" +) + +func TestNvmllibGetDeviceSpecGeneratorsForIDs(t *testing.T) { + testCases := []struct { + name string + ids []string + setupMock func(*dgxa100.Server) + expectedError error + expectedLength int + expectedGenerators DeviceSpecGenerators + }{ + { + name: "all devices", + ids: []string{"all"}, + expectedError: nil, + expectedLength: 8, + }, + { + name: "single GPU index", + ids: []string{"0"}, + setupMock: func(server *dgxa100.Server) { + for _, d := range server.Devices { + // TODO: This is not implemented in the mock. + (d.(*dgxa100.Device)).IsMigDeviceHandleFunc = func() (bool, nvml.Return) { + return false, nvml.SUCCESS + } + } + }, + expectedError: nil, + expectedLength: 1, + }, + { + name: "single UUID", + ids: []string{"GPU-12345678-1234-1234-1234-123456789abc"}, + setupMock: func(server *dgxa100.Server) { + for _, d := range server.Devices { + // TODO: This is not implemented in the mock. + (d.(*dgxa100.Device)).IsMigDeviceHandleFunc = func() (bool, nvml.Return) { + return false, nvml.SUCCESS + } + } + server.DeviceGetHandleByUUIDFunc = func(s string) (nvml.Device, nvml.Return) { + if s == "GPU-12345678-1234-1234-1234-123456789abc" { + return server.Devices[3], nvml.SUCCESS + } + return nil, nvml.ERROR_INVALID_ARGUMENT + } + }, + expectedError: nil, + expectedLength: 1, + }, + { + name: "MIG device index", + ids: []string{"0:0"}, + setupMock: func(server *dgxa100.Server) { + server.Devices[0].(*dgxa100.Device).GetMigDeviceHandleByIndexFunc = func(n int) (nvml.Device, nvml.Return) { + if n != 0 { + return nil, nvml.ERROR_INVALID_ARGUMENT + } + + mig := &mocknvml.Device{ + IsMigDeviceHandleFunc: func() (bool, nvml.Return) { + return true, nvml.SUCCESS + }, + GetDeviceHandleFromMigDeviceHandleFunc: func() (nvml.Device, nvml.Return) { + return server.Devices[0], nvml.SUCCESS + }, + GetIndexFunc: func() (int, nvml.Return) { + return 0, nvml.SUCCESS + }, + } + return mig, nvml.SUCCESS + } + }, + expectedError: nil, + expectedLength: 1, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + // Set up a mock server, using the DGX A100 mock. + mockNvml := dgxa100.New() + mockOverrides(mockNvml) + if tc.setupMock != nil { + tc.setupMock(mockNvml) + } + + mockDev := device.New(mockNvml) + + l := &nvmllib{ + nvmllib: mockNvml, + devicelib: mockDev, + } + // Call the function under test + generators, err := l.getDeviceSpecGeneratorsForIDs(tc.ids...) + + require.EqualValues(t, tc.expectedError, err) + require.Len(t, generators, tc.expectedLength) + }) + } +} + +// TODO: These need to be implemented in go-nvlib +func mockOverrides(server *dgxa100.Server) { + for i, d := range server.Devices { + // TODO: This is not implemented in the mock. + (d.(*dgxa100.Device)).GetMaxMigDeviceCountFunc = func() (int, nvml.Return) { + return 0, nvml.SUCCESS + } + (d.(*dgxa100.Device)).GetIndexFunc = func() (int, nvml.Return) { + return i, nvml.SUCCESS + } + } +} diff --git a/pkg/nvcdi/lib-wsl.go b/pkg/nvcdi/lib-wsl.go index 1c96c5383..76afbaa8b 100644 --- a/pkg/nvcdi/lib-wsl.go +++ b/pkg/nvcdi/lib-wsl.go @@ -19,25 +19,22 @@ package nvcdi import ( "fmt" - "github.com/NVIDIA/go-nvlib/pkg/nvlib/device" "tags.cncf.io/container-device-interface/pkg/cdi" "tags.cncf.io/container-device-interface/specs-go" "github.com/NVIDIA/nvidia-container-toolkit/internal/edits" - "github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/spec" ) type wsllib nvcdilib -var _ Interface = (*wsllib)(nil) +var _ deviceSpecGeneratorFactory = (*wsllib)(nil) -// GetSpec should not be called for wsllib -func (l *wsllib) GetSpec() (spec.Interface, error) { - return nil, fmt.Errorf("Unexpected call to wsllib.GetSpec()") +func (l *wsllib) DeviceSpecGenerators(...string) (DeviceSpecGenerator, error) { + return l, nil } -// GetAllDeviceSpecs returns the device specs for all available devices. -func (l *wsllib) GetAllDeviceSpecs() ([]specs.Device, error) { +// GetDeviceSpecs returns the CDI device specs for a single all device. +func (l *wsllib) GetDeviceSpecs() ([]specs.Device, error) { device := newDXGDeviceDiscoverer(l.logger, l.devRoot) deviceEdits, err := edits.FromDiscoverer(device) if err != nil { @@ -54,37 +51,10 @@ func (l *wsllib) GetAllDeviceSpecs() ([]specs.Device, error) { // GetCommonEdits generates a CDI specification that can be used for ANY devices func (l *wsllib) GetCommonEdits() (*cdi.ContainerEdits, error) { - driver, err := newWSLDriverDiscoverer(l.logger, l.driverRoot, l.nvidiaCDIHookPath, l.ldconfigPath) + driver, err := newWSLDriverDiscoverer(l.logger, l.driverRoot, l.hookCreator, l.ldconfigPath) if err != nil { return nil, fmt.Errorf("failed to create discoverer for WSL driver: %v", err) } return edits.FromDiscoverer(driver) } - -// GetGPUDeviceEdits generates a CDI specification that can be used for GPU devices -func (l *wsllib) GetGPUDeviceEdits(device.Device) (*cdi.ContainerEdits, error) { - return nil, fmt.Errorf("GetGPUDeviceEdits is not supported on WSL") -} - -// GetGPUDeviceSpecs returns the CDI device specs for the full GPU represented by 'device'. -func (l *wsllib) GetGPUDeviceSpecs(i int, d device.Device) ([]specs.Device, error) { - return nil, fmt.Errorf("GetGPUDeviceSpecs is not supported on WSL") -} - -// GetMIGDeviceEdits generates a CDI specification that can be used for MIG devices -func (l *wsllib) GetMIGDeviceEdits(device.Device, device.MigDevice) (*cdi.ContainerEdits, error) { - return nil, fmt.Errorf("GetMIGDeviceEdits is not supported on WSL") -} - -// GetMIGDeviceSpecs returns the CDI device specs for the full MIG represented by 'device'. -func (l *wsllib) GetMIGDeviceSpecs(int, device.Device, int, device.MigDevice) ([]specs.Device, error) { - return nil, fmt.Errorf("GetMIGDeviceSpecs is not supported on WSL") -} - -// GetDeviceSpecsByID returns the CDI device specs for the GPU(s) represented by -// the provided identifiers, where an identifier is an index or UUID of a valid -// GPU device. -func (l *wsllib) GetDeviceSpecsByID(...string) ([]specs.Device, error) { - return nil, fmt.Errorf("GetDeviceSpecsByID is not supported on WSL") -} diff --git a/pkg/nvcdi/lib.go b/pkg/nvcdi/lib.go index d2db3b6c4..94750f429 100644 --- a/pkg/nvcdi/lib.go +++ b/pkg/nvcdi/lib.go @@ -22,28 +22,20 @@ import ( "github.com/NVIDIA/go-nvlib/pkg/nvlib/device" "github.com/NVIDIA/go-nvlib/pkg/nvlib/info" "github.com/NVIDIA/go-nvml/pkg/nvml" - "tags.cncf.io/container-device-interface/pkg/cdi" + "github.com/NVIDIA/nvidia-container-toolkit/internal/discover" "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" "github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/root" + "github.com/NVIDIA/nvidia-container-toolkit/internal/nvsandboxutils" "github.com/NVIDIA/nvidia-container-toolkit/internal/platform-support/tegra/csv" - "github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/spec" "github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/transform" ) -type wrapper struct { - Interface - - vendor string - class string - - mergedDeviceOptions []transform.MergedDeviceOption -} - type nvcdilib struct { logger logger.Interface nvmllib nvml.Interface - mode string + nvsandboxutilslib nvsandboxutils.Interface + mode Mode devicelib device.Interface deviceNamers DeviceNamers driverRoot string @@ -63,6 +55,11 @@ type nvcdilib struct { infolib info.Interface mergedDeviceOptions []transform.MergedDeviceOption + + featureFlags map[FeatureFlag]bool + + disabledHooks []discover.HookName + hookCreator discover.HookCreator } // New creates a new nvcdi library @@ -94,6 +91,7 @@ func New(opts ...Option) (Interface, error) { root.WithLogger(l.logger), root.WithDriverRoot(l.driverRoot), root.WithLibrarySearchPaths(l.librarySearchPaths...), + root.WithConfigSearchPaths(l.configSearchPaths...), ) if l.nvmllib == nil { var nvmlOpts []nvml.LibraryOption @@ -107,6 +105,7 @@ func New(opts ...Option) (Interface, error) { } l.nvmllib = nvml.New(nvmlOpts...) } + l.nvsandboxutilslib = l.getNvsandboxUtilsLib() if l.devicelib == nil { l.devicelib = device.New(l.nvmllib) } @@ -119,38 +118,51 @@ func New(opts ...Option) (Interface, error) { ) } - var lib Interface + var factory deviceSpecGeneratorFactory switch l.resolveMode() { case ModeCSV: if len(l.csvFiles) == 0 { l.csvFiles = csv.DefaultFileList() } - lib = (*csvlib)(l) + factory = (*csvlib)(l) case ModeManagement: if l.vendor == "" { l.vendor = "management.nvidia.com" } - lib = (*managementlib)(l) + // Management containers in general do not require CUDA Forward compatibility. + l.disabledHooks = append(l.disabledHooks, HookEnableCudaCompat, DisableDeviceNodeModificationHook) + factory = (*managementlib)(l) case ModeNvml: - lib = (*nvmllib)(l) + factory = (*nvmllib)(l) case ModeWsl: - lib = (*wsllib)(l) + factory = (*wsllib)(l) case ModeGds: if l.class == "" { l.class = "gds" } - lib = (*gdslib)(l) + factory = (*gdslib)(l) case ModeMofed: if l.class == "" { l.class = "mofed" } - lib = (*mofedlib)(l) + factory = (*mofedlib)(l) + case ModeImex: + if l.class == "" { + l.class = classImexChannel + } + factory = (*imexlib)(l) default: return nil, fmt.Errorf("unknown mode %q", l.mode) } + // create hookCreator + l.hookCreator = discover.NewHookCreator( + discover.WithNVIDIACDIHookPath(l.nvidiaCDIHookPath), + discover.WithDisabledHooks(l.disabledHooks...), + ) + w := wrapper{ - Interface: lib, + factory: factory, vendor: l.vendor, class: l.class, mergedDeviceOptions: l.mergedDeviceOptions, @@ -158,62 +170,18 @@ func New(opts ...Option) (Interface, error) { return &w, nil } -// GetSpec combines the device specs and common edits from the wrapped Interface to a single spec.Interface. -func (l *wrapper) GetSpec() (spec.Interface, error) { - deviceSpecs, err := l.GetAllDeviceSpecs() - if err != nil { - return nil, err - } - - edits, err := l.GetCommonEdits() - if err != nil { - return nil, err - } - - return spec.New( - spec.WithDeviceSpecs(deviceSpecs), - spec.WithEdits(*edits.ContainerEdits), - spec.WithVendor(l.vendor), - spec.WithClass(l.class), - spec.WithMergedDeviceOptions(l.mergedDeviceOptions...), - ) -} - -// GetCommonEdits returns the wrapped edits and adds additional edits on top. -func (m *wrapper) GetCommonEdits() (*cdi.ContainerEdits, error) { - edits, err := m.Interface.GetCommonEdits() - if err != nil { - return nil, err - } - edits.Env = append(edits.Env, "NVIDIA_VISIBLE_DEVICES=void") - - return edits, nil -} - -// resolveMode resolves the mode for CDI spec generation based on the current system. -func (l *nvcdilib) resolveMode() (rmode string) { - if l.mode != ModeAuto { - return l.mode +// getCudaVersion returns the CUDA version of the current system. +func (l *nvcdilib) getCudaVersion() (string, error) { + version, err := l.getCudaVersionNvsandboxutils() + if err == nil { + return version, err } - defer func() { - l.logger.Infof("Auto-detected mode as '%v'", rmode) - }() - platform := l.infolib.ResolvePlatform() - switch platform { - case info.PlatformNVML: - return ModeNvml - case info.PlatformTegra: - return ModeCSV - case info.PlatformWSL: - return ModeWsl - } - l.logger.Warningf("Unsupported platform detected: %v; assuming %v", platform, ModeNvml) - return ModeNvml + // Fallback to NVML + return l.getCudaVersionNvml() } -// getCudaVersion returns the CUDA version of the current system. -func (l *nvcdilib) getCudaVersion() (string, error) { +func (l *nvcdilib) getCudaVersionNvml() (string, error) { if hasNVML, reason := l.infolib.HasNvml(); !hasNVML { return "", fmt.Errorf("nvml not detected: %v", reason) } @@ -236,3 +204,39 @@ func (l *nvcdilib) getCudaVersion() (string, error) { } return version, nil } + +func (l *nvcdilib) getCudaVersionNvsandboxutils() (string, error) { + if l.nvsandboxutilslib == nil { + return "", fmt.Errorf("libnvsandboxutils is not available") + } + + // Sandboxutils initialization should happen before this function is called + version, ret := l.nvsandboxutilslib.GetDriverVersion() + if ret != nvsandboxutils.SUCCESS { + return "", fmt.Errorf("%v", ret) + } + return version, nil +} + +// getNvsandboxUtilsLib returns the nvsandboxutilslib to use for CDI spec +// generation. +func (l *nvcdilib) getNvsandboxUtilsLib() nvsandboxutils.Interface { + if l.featureFlags[FeatureDisableNvsandboxUtils] { + return nil + } + if l.nvsandboxutilslib != nil { + return l.nvsandboxutilslib + } + + var nvsandboxutilsOpts []nvsandboxutils.LibraryOption + // Set the library path for libnvidia-sandboxutils + candidates, err := l.driver.Libraries().Locate("libnvidia-sandboxutils.so.1") + if err != nil { + l.logger.Warningf("Ignoring error in locating libnvidia-sandboxutils.so.1: %v", err) + } else { + libNvidiaSandboxutilsPath := candidates[0] + l.logger.Infof("Using %v", libNvidiaSandboxutilsPath) + nvsandboxutilsOpts = append(nvsandboxutilsOpts, nvsandboxutils.WithLibraryPath(libNvidiaSandboxutilsPath)) + } + return nvsandboxutils.New(nvsandboxutilsOpts...) +} diff --git a/pkg/nvcdi/management.go b/pkg/nvcdi/management.go index 4648e5bb0..275984822 100644 --- a/pkg/nvcdi/management.go +++ b/pkg/nvcdi/management.go @@ -21,23 +21,25 @@ import ( "path/filepath" "strings" - "github.com/NVIDIA/go-nvlib/pkg/nvlib/device" "tags.cncf.io/container-device-interface/pkg/cdi" "tags.cncf.io/container-device-interface/specs-go" "github.com/NVIDIA/nvidia-container-toolkit/internal/discover" "github.com/NVIDIA/nvidia-container-toolkit/internal/edits" "github.com/NVIDIA/nvidia-container-toolkit/internal/lookup/cuda" - "github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/spec" + "github.com/NVIDIA/nvidia-container-toolkit/internal/nvsandboxutils" ) type managementlib nvcdilib -var _ Interface = (*managementlib)(nil) +var _ deviceSpecGeneratorFactory = (*managementlib)(nil) -// GetAllDeviceSpecs returns all device specs for use in managemnt containers. -// A single device with the name `all` is returned. -func (m *managementlib) GetAllDeviceSpecs() ([]specs.Device, error) { +func (l *managementlib) DeviceSpecGenerators(...string) (DeviceSpecGenerator, error) { + return l, nil +} + +// GetDeviceSpecs returns the CDI device specs for a single all device. +func (m *managementlib) GetDeviceSpecs() ([]specs.Device, error) { devices, err := m.newManagementDeviceDiscoverer() if err != nil { return nil, fmt.Errorf("failed to create device discoverer: %v", err) @@ -61,12 +63,25 @@ func (m *managementlib) GetAllDeviceSpecs() ([]specs.Device, error) { // GetCommonEdits returns the common edits for use in managementlib containers. func (m *managementlib) GetCommonEdits() (*cdi.ContainerEdits, error) { + if m.nvsandboxutilslib != nil { + if r := m.nvsandboxutilslib.Init(m.driverRoot); r != nvsandboxutils.SUCCESS { + m.logger.Warningf("Failed to init nvsandboxutils: %v; ignoring", r) + m.nvsandboxutilslib = nil + } + defer func() { + if m.nvsandboxutilslib == nil { + return + } + _ = m.nvsandboxutilslib.Shutdown() + }() + } + version, err := m.getCudaVersion() if err != nil { return nil, fmt.Errorf("failed to get CUDA version: %v", err) } - driver, err := newDriverVersionDiscoverer(m.logger, m.driver, m.nvidiaCDIHookPath, m.ldconfigPath, version) + driver, err := (*nvcdilib)(m).newDriverVersionDiscoverer(version) if err != nil { return nil, fmt.Errorf("failed to create driver library discoverer: %v", err) } @@ -117,13 +132,14 @@ func (m *managementlib) newManagementDeviceDiscoverer() (discover.Discover, erro "/dev/nvidia-uvm-tools", "/dev/nvidia-uvm", "/dev/nvidiactl", + "/dev/nvidia-caps-imex-channels/channel*", }, ) deviceFolderPermissionHooks := newDeviceFolderPermissionHookDiscoverer( m.logger, m.devRoot, - m.nvidiaCDIHookPath, + m.hookCreator, deviceNodes, ) @@ -162,36 +178,3 @@ func (m managementDiscoverer) nodeIsBlocked(path string) bool { } return false } - -// GetSpec is unsppported for the managementlib specs. -// managementlib is typically wrapped by a spec that implements GetSpec. -func (m *managementlib) GetSpec() (spec.Interface, error) { - return nil, fmt.Errorf("GetSpec is not supported") -} - -// GetGPUDeviceEdits is unsupported for the managementlib specs -func (m *managementlib) GetGPUDeviceEdits(device.Device) (*cdi.ContainerEdits, error) { - return nil, fmt.Errorf("GetGPUDeviceEdits is not supported") -} - -// GetGPUDeviceSpecs is unsupported for the managementlib specs -func (m *managementlib) GetGPUDeviceSpecs(int, device.Device) ([]specs.Device, error) { - return nil, fmt.Errorf("GetGPUDeviceSpecs is not supported") -} - -// GetMIGDeviceEdits is unsupported for the managementlib specs -func (m *managementlib) GetMIGDeviceEdits(device.Device, device.MigDevice) (*cdi.ContainerEdits, error) { - return nil, fmt.Errorf("GetMIGDeviceEdits is not supported") -} - -// GetMIGDeviceSpecs is unsupported for the managementlib specs -func (m *managementlib) GetMIGDeviceSpecs(int, device.Device, int, device.MigDevice) ([]specs.Device, error) { - return nil, fmt.Errorf("GetMIGDeviceSpecs is not supported") -} - -// GetDeviceSpecsByID returns the CDI device specs for the GPU(s) represented by -// the provided identifiers, where an identifier is an index or UUID of a valid -// GPU device. -func (l *managementlib) GetDeviceSpecsByID(...string) ([]specs.Device, error) { - return nil, fmt.Errorf("GetDeviceSpecsByID is not supported") -} diff --git a/pkg/nvcdi/mig-device-nvml.go b/pkg/nvcdi/mig-device-nvml.go index 91fe879c2..e21693a8c 100644 --- a/pkg/nvcdi/mig-device-nvml.go +++ b/pkg/nvcdi/mig-device-nvml.go @@ -20,6 +20,7 @@ import ( "fmt" "github.com/NVIDIA/go-nvlib/pkg/nvlib/device" + "github.com/NVIDIA/go-nvml/pkg/nvml" "tags.cncf.io/container-device-interface/pkg/cdi" "tags.cncf.io/container-device-interface/specs-go" @@ -27,34 +28,73 @@ import ( "github.com/NVIDIA/nvidia-container-toolkit/internal/platform-support/dgpu" ) -// GetMIGDeviceSpecs returns the CDI device specs for the full GPU represented by 'device'. -func (l *nvmllib) GetMIGDeviceSpecs(i int, d device.Device, j int, mig device.MigDevice) ([]specs.Device, error) { - edits, err := l.GetMIGDeviceEdits(d, mig) +type migDeviceSpecGenerator struct { + *fullGPUDeviceSpecGenerator + migIndex int + migDevice device.MigDevice +} + +var _ DeviceSpecGenerator = (*migDeviceSpecGenerator)(nil) + +func (l *nvmllib) newMIGDeviceSpecGeneratorFromNVMLDevice(id string, nvmlMIGDevice nvml.Device) (DeviceSpecGenerator, error) { + nvmlParentDevice, ret := nvmlMIGDevice.GetDeviceHandleFromMigDeviceHandle() + if ret != nvml.SUCCESS { + return nil, fmt.Errorf("failed to get parent device handle: %v", ret) + } + + fullGPUGenerator, err := l.newFullGPUDeviceSpecGeneratorFromNVMLDevice(id, nvmlParentDevice) + if err != nil { + return nil, err + } + + nvlibMIGDevice, err := l.devicelib.NewMigDevice(nvmlMIGDevice) + if err != nil { + return nil, fmt.Errorf("failed to construct device: %w", err) + } + + migDeviceIndex, ret := nvmlMIGDevice.GetIndex() + if ret != nvml.SUCCESS { + return nil, fmt.Errorf("failed to get MIG device index: %w", ret) + } + + e := &migDeviceSpecGenerator{ + fullGPUDeviceSpecGenerator: fullGPUGenerator.(*fullGPUDeviceSpecGenerator), + migIndex: migDeviceIndex, + migDevice: nvlibMIGDevice, + } + return e, nil +} + +func (l *migDeviceSpecGenerator) GetDeviceSpecs() ([]specs.Device, error) { + deviceEdits, err := l.getDeviceEdits() if err != nil { - return nil, fmt.Errorf("failed to get edits for device: %v", err) + return nil, fmt.Errorf("failed to get CDI device edits for identifier %q: %w", l.id, err) } - names, err := l.deviceNamers.GetMigDeviceNames(i, convert{d}, j, convert{mig}) + names, err := l.getNames() if err != nil { - return nil, fmt.Errorf("failed to get device name: %v", err) + return nil, fmt.Errorf("failed to get device names: %w", err) } + var deviceSpecs []specs.Device for _, name := range names { - spec := specs.Device{ + deviceSpec := specs.Device{ Name: name, - ContainerEdits: *edits.ContainerEdits, + ContainerEdits: *deviceEdits.ContainerEdits, } - deviceSpecs = append(deviceSpecs, spec) + deviceSpecs = append(deviceSpecs, deviceSpec) } + return deviceSpecs, nil } // GetMIGDeviceEdits returns the CDI edits for the MIG device represented by 'mig' on 'parent'. -func (l *nvmllib) GetMIGDeviceEdits(parent device.Device, mig device.MigDevice) (*cdi.ContainerEdits, error) { - deviceNodes, err := dgpu.NewForMigDevice(parent, mig, +func (l *migDeviceSpecGenerator) getDeviceEdits() (*cdi.ContainerEdits, error) { + deviceNodes, err := dgpu.NewForMigDevice(l.device, l.migDevice, dgpu.WithDevRoot(l.devRoot), dgpu.WithLogger(l.logger), - dgpu.WithNVIDIACDIHookPath(l.nvidiaCDIHookPath), + dgpu.WithHookCreator(l.hookCreator), + dgpu.WithNvsandboxuitilsLib(l.nvsandboxutilslib), ) if err != nil { return nil, fmt.Errorf("failed to create device discoverer: %v", err) @@ -67,3 +107,7 @@ func (l *nvmllib) GetMIGDeviceEdits(parent device.Device, mig device.MigDevice) return editsForDevice, nil } + +func (l *migDeviceSpecGenerator) getNames() ([]string, error) { + return l.deviceNamers.GetMigDeviceNames(l.index, convert{l.device}, l.migIndex, convert{l.migDevice}) +} diff --git a/pkg/nvcdi/mode.go b/pkg/nvcdi/mode.go new file mode 100644 index 000000000..5b8f0369e --- /dev/null +++ b/pkg/nvcdi/mode.go @@ -0,0 +1,119 @@ +/** +# Copyright 2024 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package nvcdi + +import ( + "sync" + + "github.com/NVIDIA/go-nvlib/pkg/nvlib/info" +) + +type Mode string + +const ( + // ModeAuto configures the CDI spec generator to automatically detect the system configuration + ModeAuto = Mode("auto") + // ModeNvml configures the CDI spec generator to use the NVML library. + ModeNvml = Mode("nvml") + // ModeWsl configures the CDI spec generator to generate a WSL spec. + ModeWsl = Mode("wsl") + // ModeManagement configures the CDI spec generator to generate a management spec. + ModeManagement = Mode("management") + // ModeGds configures the CDI spec generator to generate a GDS spec. + ModeGds = Mode("gds") + // ModeMofed configures the CDI spec generator to generate a MOFED spec. + ModeMofed = Mode("mofed") + // ModeCSV configures the CDI spec generator to generate a spec based on the contents of CSV + // mountspec files. + ModeCSV = Mode("csv") + // ModeImex configures the CDI spec generated to generate a spec for the available IMEX channels. + ModeImex = Mode("imex") +) + +type modeConstraint interface { + string | Mode +} + +type modes struct { + lookup map[Mode]bool + all []Mode +} + +var validModes modes +var validModesOnce sync.Once + +func getModes() modes { + validModesOnce.Do(func() { + all := []Mode{ + ModeAuto, + ModeNvml, + ModeWsl, + ModeManagement, + ModeGds, + ModeMofed, + ModeCSV, + } + lookup := make(map[Mode]bool) + + for _, m := range all { + lookup[m] = true + } + + validModes = modes{ + lookup: lookup, + all: all, + } + }, + ) + return validModes +} + +// AllModes returns the set of valid modes. +func AllModes[T modeConstraint]() []T { + var output []T + for _, m := range getModes().all { + output = append(output, T(m)) + } + return output +} + +// IsValidMode checks whether a specified mode is valid. +func IsValidMode[T modeConstraint](mode T) bool { + return getModes().lookup[Mode(mode)] +} + +// resolveMode resolves the mode for CDI spec generation based on the current system. +func (l *nvcdilib) resolveMode() (rmode Mode) { + if l.mode != ModeAuto { + return l.mode + } + defer func() { + l.logger.Infof("Auto-detected mode as '%v'", rmode) + }() + + platform := l.infolib.ResolvePlatform() + switch platform { + case info.PlatformNVML: + return ModeNvml + case info.PlatformTegra: + return ModeCSV + case info.PlatformWSL: + return ModeWsl + } + l.logger.Warningf("Unsupported platform detected: %v; assuming %v", platform, ModeNvml) + return ModeNvml +} diff --git a/pkg/nvcdi/mofed.go b/pkg/nvcdi/mofed.go index 9f45cfc97..2169eac23 100644 --- a/pkg/nvcdi/mofed.go +++ b/pkg/nvcdi/mofed.go @@ -19,21 +19,23 @@ package nvcdi import ( "fmt" - "github.com/NVIDIA/go-nvlib/pkg/nvlib/device" "tags.cncf.io/container-device-interface/pkg/cdi" "tags.cncf.io/container-device-interface/specs-go" "github.com/NVIDIA/nvidia-container-toolkit/internal/discover" "github.com/NVIDIA/nvidia-container-toolkit/internal/edits" - "github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/spec" ) type mofedlib nvcdilib -var _ Interface = (*mofedlib)(nil) +var _ deviceSpecGeneratorFactory = (*mofedlib)(nil) -// GetAllDeviceSpecs returns the device specs for all available devices. -func (l *mofedlib) GetAllDeviceSpecs() ([]specs.Device, error) { +func (l *mofedlib) DeviceSpecGenerators(...string) (DeviceSpecGenerator, error) { + return l, nil +} + +// GetDeviceSpecs returns the CDI device specs for a single all device. +func (l *mofedlib) GetDeviceSpecs() ([]specs.Device, error) { discoverer, err := discover.NewMOFEDDiscoverer(l.logger, l.driverRoot) if err != nil { return nil, fmt.Errorf("failed to create MOFED discoverer: %v", err) @@ -55,36 +57,3 @@ func (l *mofedlib) GetAllDeviceSpecs() ([]specs.Device, error) { func (l *mofedlib) GetCommonEdits() (*cdi.ContainerEdits, error) { return edits.FromDiscoverer(discover.None{}) } - -// GetSpec is unsppported for the mofedlib specs. -// mofedlib is typically wrapped by a spec that implements GetSpec. -func (l *mofedlib) GetSpec() (spec.Interface, error) { - return nil, fmt.Errorf("GetSpec is not supported") -} - -// GetGPUDeviceEdits is unsupported for the mofedlib specs -func (l *mofedlib) GetGPUDeviceEdits(device.Device) (*cdi.ContainerEdits, error) { - return nil, fmt.Errorf("GetGPUDeviceEdits is not supported") -} - -// GetGPUDeviceSpecs is unsupported for the mofedlib specs -func (l *mofedlib) GetGPUDeviceSpecs(int, device.Device) ([]specs.Device, error) { - return nil, fmt.Errorf("GetGPUDeviceSpecs is not supported") -} - -// GetMIGDeviceEdits is unsupported for the mofedlib specs -func (l *mofedlib) GetMIGDeviceEdits(device.Device, device.MigDevice) (*cdi.ContainerEdits, error) { - return nil, fmt.Errorf("GetMIGDeviceEdits is not supported") -} - -// GetMIGDeviceSpecs is unsupported for the mofedlib specs -func (l *mofedlib) GetMIGDeviceSpecs(int, device.Device, int, device.MigDevice) ([]specs.Device, error) { - return nil, fmt.Errorf("GetMIGDeviceSpecs is not supported") -} - -// GetDeviceSpecsByID returns the CDI device specs for the GPU(s) represented by -// the provided identifiers, where an identifier is an index or UUID of a valid -// GPU device. -func (l *mofedlib) GetDeviceSpecsByID(...string) ([]specs.Device, error) { - return nil, fmt.Errorf("GetDeviceSpecsByID is not supported") -} diff --git a/pkg/nvcdi/namer.go b/pkg/nvcdi/namer.go index 8edd8f074..8019f699e 100644 --- a/pkg/nvcdi/namer.go +++ b/pkg/nvcdi/namer.go @@ -96,7 +96,7 @@ func (s deviceNameUUID) GetMigDeviceName(i int, _ UUIDer, j int, mig UUIDer) (st return uuid, nil } -//go:generate moq -stub -out namer_nvml_mock.go . nvmlUUIDer +//go:generate moq -rm -fmt=goimports -stub -out namer_nvml_mock.go . nvmlUUIDer type nvmlUUIDer interface { GetUUID() (string, nvml.Return) } diff --git a/pkg/nvcdi/options.go b/pkg/nvcdi/options.go index 417687b96..25494ebf5 100644 --- a/pkg/nvcdi/options.go +++ b/pkg/nvcdi/options.go @@ -21,6 +21,7 @@ import ( "github.com/NVIDIA/go-nvlib/pkg/nvlib/info" "github.com/NVIDIA/go-nvml/pkg/nvml" + "github.com/NVIDIA/nvidia-container-toolkit/internal/discover" "github.com/NVIDIA/nvidia-container-toolkit/internal/logger" "github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/transform" ) @@ -99,9 +100,9 @@ func WithNvmlLib(nvmllib nvml.Interface) Option { } // WithMode sets the discovery mode for the library -func WithMode(mode string) Option { +func WithMode[m modeConstraint](mode m) Option { return func(l *nvcdilib) { - l.mode = mode + l.mode = Mode(mode) } } @@ -155,3 +156,22 @@ func WithLibrarySearchPaths(paths []string) Option { o.librarySearchPaths = paths } } + +// WithDisabledHook allows specific hooks to the disabled. +// This option can be specified multiple times for each hook. +func WithDisabledHook[T string | HookName](hook T) Option { + return func(o *nvcdilib) { + o.disabledHooks = append(o.disabledHooks, discover.HookName(hook)) + } +} + +// WithFeatureFlag allows specified features to be toggled on. +// This option can be specified multiple times for each feature flag. +func WithFeatureFlag(featureFlag FeatureFlag) Option { + return func(o *nvcdilib) { + if o.featureFlags == nil { + o.featureFlags = make(map[FeatureFlag]bool) + } + o.featureFlags[featureFlag] = true + } +} diff --git a/pkg/nvcdi/spec/builder.go b/pkg/nvcdi/spec/builder.go index b7dffd98f..337a1dd17 100644 --- a/pkg/nvcdi/spec/builder.go +++ b/pkg/nvcdi/spec/builder.go @@ -20,20 +20,19 @@ import ( "fmt" "os" - "tags.cncf.io/container-device-interface/pkg/cdi" "tags.cncf.io/container-device-interface/pkg/parser" - "tags.cncf.io/container-device-interface/specs-go" + cdi "tags.cncf.io/container-device-interface/specs-go" "github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/transform" ) type builder struct { - raw *specs.Spec + raw *cdi.Spec version string vendor string class string - deviceSpecs []specs.Device - edits specs.ContainerEdits + deviceSpecs []cdi.Device + edits cdi.ContainerEdits format string mergedDeviceOptions []transform.MergedDeviceOption @@ -86,7 +85,7 @@ func newBuilder(opts ...Option) *builder { func (o *builder) Build() (*spec, error) { raw := o.raw if raw == nil { - raw = &specs.Spec{ + raw = &cdi.Spec{ Version: o.version, Kind: fmt.Sprintf("%s/%s", o.vendor, o.class), Devices: o.deviceSpecs, @@ -127,14 +126,14 @@ func (o *builder) Build() (*spec, error) { type Option func(*builder) // WithDeviceSpecs sets the device specs for the spec builder -func WithDeviceSpecs(deviceSpecs []specs.Device) Option { +func WithDeviceSpecs(deviceSpecs []cdi.Device) Option { return func(o *builder) { o.deviceSpecs = deviceSpecs } } // WithEdits sets the container edits for the spec builder -func WithEdits(edits specs.ContainerEdits) Option { +func WithEdits(edits cdi.ContainerEdits) Option { return func(o *builder) { o.edits = edits } @@ -176,7 +175,7 @@ func WithNoSimplify(noSimplify bool) Option { } // WithRawSpec sets the raw spec for the spec builder -func WithRawSpec(raw *specs.Spec) Option { +func WithRawSpec(raw *cdi.Spec) Option { return func(o *builder) { o.raw = raw } diff --git a/pkg/nvcdi/spec/spec_test.go b/pkg/nvcdi/spec/spec_test.go index 15c840702..f95cfe3ed 100644 --- a/pkg/nvcdi/spec/spec_test.go +++ b/pkg/nvcdi/spec/spec_test.go @@ -28,6 +28,18 @@ import ( ) func TestSpec(t *testing.T) { + minimalSpec := &specs.Spec{ + Kind: "nvidia.com/gpu", + Devices: []specs.Device{ + { + Name: "one", + ContainerEdits: specs.ContainerEdits{ + Env: []string{"DEVICE_FOO=bar"}, + }, + }, + }, + } + testCases := []struct { description string options []Option @@ -35,23 +47,17 @@ func TestSpec(t *testing.T) { transform transform.Transformer expectedSpec string }{ - { - description: "default options return empty spec", - expectedSpec: `--- -cdiVersion: 0.3.0 -containerEdits: {} -devices: null -kind: nvidia.com/gpu -`, - }, { description: "version is overridden", - options: []Option{WithVersion("0.5.0")}, + options: []Option{WithVersion("0.8.0"), WithRawSpec(minimalSpec)}, expectedSpec: `--- -cdiVersion: 0.5.0 -containerEdits: {} -devices: null +cdiVersion: 0.8.0 kind: nvidia.com/gpu +devices: + - name: one + containerEdits: + env: + - DEVICE_FOO=bar `, }, { @@ -60,18 +66,24 @@ kind: nvidia.com/gpu &specs.Spec{ Version: "0.5.0", Kind: "nvidia.com/gpu", - ContainerEdits: specs.ContainerEdits{ - Env: []string{"FOO=bar"}, + Devices: []specs.Device{ + { + Name: "one", + ContainerEdits: specs.ContainerEdits{ + Env: []string{"DEVICE_FOO=bar"}, + }, + }, }, }, )}, expectedSpec: `--- cdiVersion: 0.5.0 -containerEdits: - env: - - FOO=bar -devices: null kind: nvidia.com/gpu +devices: + - name: one + containerEdits: + env: + - DEVICE_FOO=bar `, }, { @@ -79,18 +91,24 @@ kind: nvidia.com/gpu options: []Option{WithRawSpec( &specs.Spec{ Kind: "nvidia.com/gpu", - ContainerEdits: specs.ContainerEdits{ - Env: []string{"FOO=bar"}, + Devices: []specs.Device{ + { + Name: "one", + ContainerEdits: specs.ContainerEdits{ + Env: []string{"DEVICE_FOO=bar"}, + }, + }, }, }, )}, expectedSpec: `--- cdiVersion: 0.3.0 -containerEdits: - env: - - FOO=bar -devices: null kind: nvidia.com/gpu +devices: + - name: one + containerEdits: + env: + - DEVICE_FOO=bar `, }, { @@ -98,8 +116,15 @@ kind: nvidia.com/gpu options: []Option{WithRawSpec( &specs.Spec{ Kind: "nvidia.com/gpu", + Devices: []specs.Device{ + { + Name: "one", + ContainerEdits: specs.ContainerEdits{ + Env: []string{"DEVICE_FOO=bar"}, + }, + }, + }, ContainerEdits: specs.ContainerEdits{ - Env: []string{"FOO=bar"}, DeviceNodes: []*specs.DeviceNode{ { HostPath: "/some/dev/dev0", @@ -111,14 +136,16 @@ kind: nvidia.com/gpu )}, expectedSpec: `--- cdiVersion: 0.5.0 -containerEdits: - deviceNodes: - - hostPath: /some/dev/dev0 - path: /dev/dev0 - env: - - FOO=bar -devices: null kind: nvidia.com/gpu +devices: + - name: one + containerEdits: + env: + - DEVICE_FOO=bar +containerEdits: + deviceNodes: + - path: /dev/dev0 + hostPath: /some/dev/dev0 `, }, { @@ -126,8 +153,15 @@ kind: nvidia.com/gpu options: []Option{WithRawSpec( &specs.Spec{ Kind: "nvidia.com/gpu", + Devices: []specs.Device{ + { + Name: "one", + ContainerEdits: specs.ContainerEdits{ + Env: []string{"DEVICE_FOO=bar"}, + }, + }, + }, ContainerEdits: specs.ContainerEdits{ - Env: []string{"FOO=bar"}, DeviceNodes: []*specs.DeviceNode{ { HostPath: "/some/dev/dev0", @@ -147,14 +181,16 @@ kind: nvidia.com/gpu ), expectedSpec: `--- cdiVersion: 0.5.0 -containerEdits: - deviceNodes: - - hostPath: /dev/dev0 - path: /dev/dev0 - env: - - FOO=bar -devices: null kind: nvidia.com/gpu +devices: + - name: one + containerEdits: + env: + - DEVICE_FOO=bar +containerEdits: + deviceNodes: + - path: /dev/dev0 + hostPath: /dev/dev0 `, }, } diff --git a/pkg/nvcdi/workarounds-device-folder-permissions.go b/pkg/nvcdi/workarounds-device-folder-permissions.go index 511eb1fce..49a796486 100644 --- a/pkg/nvcdi/workarounds-device-folder-permissions.go +++ b/pkg/nvcdi/workarounds-device-folder-permissions.go @@ -25,10 +25,10 @@ import ( ) type deviceFolderPermissions struct { - logger logger.Interface - devRoot string - nvidiaCDIHookPath string - devices discover.Discover + logger logger.Interface + devRoot string + devices discover.Discover + hookCreator discover.HookCreator } var _ discover.Discover = (*deviceFolderPermissions)(nil) @@ -39,12 +39,12 @@ var _ discover.Discover = (*deviceFolderPermissions)(nil) // The nested devices that are applicable to the NVIDIA GPU devices are: // - DRM devices at /dev/dri/* // - NVIDIA Caps devices at /dev/nvidia-caps/* -func newDeviceFolderPermissionHookDiscoverer(logger logger.Interface, devRoot string, nvidiaCDIHookPath string, devices discover.Discover) discover.Discover { +func newDeviceFolderPermissionHookDiscoverer(logger logger.Interface, devRoot string, hookCreator discover.HookCreator, devices discover.Discover) discover.Discover { d := &deviceFolderPermissions{ - logger: logger, - devRoot: devRoot, - nvidiaCDIHookPath: nvidiaCDIHookPath, - devices: devices, + logger: logger, + devRoot: devRoot, + hookCreator: hookCreator, + devices: devices, } return d @@ -55,28 +55,20 @@ func (d *deviceFolderPermissions) Devices() ([]discover.Device, error) { return nil, nil } +// EnvVars are empty for this discoverer +func (d *deviceFolderPermissions) EnvVars() ([]discover.EnvVar, error) { + return nil, nil +} + // Hooks returns a set of hooks that sets the file mode to 755 of parent folders for nested device nodes. func (d *deviceFolderPermissions) Hooks() ([]discover.Hook, error) { folders, err := d.getDeviceSubfolders() if err != nil { return nil, fmt.Errorf("failed to get device subfolders: %v", err) } - if len(folders) == 0 { - return nil, nil - } - - args := []string{"--mode", "755"} - for _, folder := range folders { - args = append(args, "--path", folder) - } - - hook := discover.CreateNvidiaCDIHook( - d.nvidiaCDIHookPath, - "chmod", - args..., - ) - return []discover.Hook{hook}, nil + //nolint:staticcheck // The ChmodHook is deprecated and will be removed in a future release. + return d.hookCreator.Create(discover.ChmodHook, folders...).Hooks() } func (d *deviceFolderPermissions) getDeviceSubfolders() ([]string, error) { diff --git a/pkg/nvcdi/wrapper.go b/pkg/nvcdi/wrapper.go new file mode 100644 index 000000000..9d4520798 --- /dev/null +++ b/pkg/nvcdi/wrapper.go @@ -0,0 +1,119 @@ +/** +# Copyright 2025 NVIDIA CORPORATION +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package nvcdi + +import ( + "fmt" + + "tags.cncf.io/container-device-interface/pkg/cdi" + "tags.cncf.io/container-device-interface/specs-go" + + "github.com/NVIDIA/nvidia-container-toolkit/internal/config/image" + "github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/spec" + "github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/transform" +) + +type wrapper struct { + factory deviceSpecGeneratorFactory + + vendor string + class string + + mergedDeviceOptions []transform.MergedDeviceOption +} + +// TODO: Rename this type +type deviceSpecGeneratorFactory interface { + DeviceSpecGenerators(...string) (DeviceSpecGenerator, error) + GetCommonEdits() (*cdi.ContainerEdits, error) +} + +// DeviceSpecGenerators can be used to combine multiple device spec generators. +// This type also implements the DeviceSpecGenerator interface. +type DeviceSpecGenerators []DeviceSpecGenerator + +var _ DeviceSpecGenerator = (DeviceSpecGenerators)(nil) + +// GetSpec combines the device specs and common edits from the wrapped Interface to a single spec.Interface. +func (l *wrapper) GetSpec(devices ...string) (spec.Interface, error) { + if len(devices) == 0 { + devices = append(devices, "all") + } + deviceSpecs, err := l.GetDeviceSpecsByID(devices...) + if err != nil { + return nil, err + } + + edits, err := l.GetCommonEdits() + if err != nil { + return nil, err + } + + return spec.New( + spec.WithDeviceSpecs(deviceSpecs), + spec.WithEdits(*edits.ContainerEdits), + spec.WithVendor(l.vendor), + spec.WithClass(l.class), + spec.WithMergedDeviceOptions(l.mergedDeviceOptions...), + ) +} + +// GetDeviceSpecsByID returns the CDI device specs for devices with the +// specified IDs. +// The device IDs are interpreted by the configured factory. +func (l *wrapper) GetDeviceSpecsByID(devices ...string) ([]specs.Device, error) { + generators, err := l.factory.DeviceSpecGenerators(devices...) + if err != nil { + return nil, fmt.Errorf("failed to construct device spec generators: %w", err) + } + return generators.GetDeviceSpecs() +} + +// GetAllDeviceSpecs returns the device specs for all available devices. +// +// Deprecated: Use GetDeviceSpecsByID("all") instead. +func (l *wrapper) GetAllDeviceSpecs() ([]specs.Device, error) { + return l.GetDeviceSpecsByID("all") +} + +// GetCommonEdits returns the wrapped edits and adds additional edits on top. +func (m *wrapper) GetCommonEdits() (*cdi.ContainerEdits, error) { + edits, err := m.factory.GetCommonEdits() + if err != nil { + return nil, err + } + edits.Env = append(edits.Env, image.EnvVarNvidiaVisibleDevices+"=void") + + return edits, nil +} + +// GetDeviceSpecs returns the combined specs for each device spec generator. +func (g DeviceSpecGenerators) GetDeviceSpecs() ([]specs.Device, error) { + var allDeviceSpecs []specs.Device + for _, dsg := range g { + if dsg == nil { + continue + } + deviceSpecs, err := dsg.GetDeviceSpecs() + if err != nil { + return nil, err + } + allDeviceSpecs = append(allDeviceSpecs, deviceSpecs...) + } + + return allDeviceSpecs, nil +} diff --git a/scripts/Dockerfile.sign.rpm b/scripts/Dockerfile.sign.rpm index c4cd6e8e7..d9a885e9f 100644 --- a/scripts/Dockerfile.sign.rpm +++ b/scripts/Dockerfile.sign.rpm @@ -1,7 +1,3 @@ -FROM quay.io/centos/centos:stream8 - -RUN sed -i -e "s|mirrorlist=|#mirrorlist=|g" \ - -e "s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g" \ - /etc/yum.repos.d/CentOS-Stream-* +FROM quay.io/centos/centos:stream9 RUN yum install -y createrepo rpm-sign pinentry diff --git a/scripts/archive-packages.sh b/scripts/archive-packages.sh deleted file mode 100755 index 688513d80..000000000 --- a/scripts/archive-packages.sh +++ /dev/null @@ -1,141 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) NVIDIA CORPORATION. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -function assert_usage() { - echo "Incorrect arguments: $*" - echo "$(basename ${BASH_SOURCE[0]}) ARTIFACTORY_REPO [GIT_REFERENCE]" - echo " ARTIFACTORY_REPO: URL to Artifactory repository" - echo " GIT_REFERENCE: Git reference to use for the package version" - echo " (if not specified, PACKAGE_IMAGE_TAG must be set)" - exit 1 -} - -set -e - -SCRIPTS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )"/../scripts && pwd )" -PROJECT_ROOT="$( cd ${SCRIPTS_DIR}/.. && pwd )" - -if [[ $# -lt 1 ]]; then - assert_usage "$@" -fi - -source "${SCRIPTS_DIR}"/utils.sh - -ARTIFACTORY_REPO=$1 - -if [[ $# -eq 2 ]]; then - REFERENCE=$2 - SHA=$(git rev-parse --short=8 ${REFERENCE}) -elif [[ -z ${PACKAGE_IMAGE_TAG} ]]; then - echo "Either PACKAGE_IMAGE_TAG or REFERENCE must be specified" - assert_usage "$@" -fi - -: ${CURL:=curl} - -: ${PACKAGE_IMAGE_NAME="registry.gitlab.com/nvidia/container-toolkit/container-toolkit/staging/container-toolkit"} -: ${PACKAGE_IMAGE_TAG=${SHA}-packaging} - -VERSION="$(get_version_from_image ${PACKAGE_IMAGE_NAME}:${PACKAGE_IMAGE_TAG} ${SHA})" - -REPO="experimental" -if [[ ${VERSION/rc./} == ${VERSION} ]]; then - REPO="stable" -fi - -PACKAGE_CACHE=release-${VERSION}-${REPO} -REMOVE_PACKAGE_CACHE=no -if [ ! -d ${PACKAGE_CACHE} ]; then -echo "Fetching packages with SHA '${SHA}' as tag '${VERSION}' to ${PACKAGE_CACHE}" -${SCRIPTS_DIR}/../hack/pull-packages.sh \ - ${PACKAGE_IMAGE_NAME}:${PACKAGE_IMAGE_TAG} \ - ${PACKAGE_CACHE} - REMOVE_PACKAGE_CACHE=yes -else - echo "Using existing package cache: ${PACKAGE_CACHE}" -fi - -ARTIFACTS_DIR=${PROJECT_ROOT}/${PACKAGE_CACHE} - -IMAGE_EPOCH=$(extract_info "IMAGE_EPOCH") -# Note we use the main branch for the kitmaker archive. -GIT_BRANCH=main -GIT_COMMIT=$(extract_info "GIT_COMMIT") -GIT_COMMIT_SHORT=$(extract_info "GIT_COMMIT_SHORT") -PACKAGE_VERSION=$(extract_info "PACKAGE_VERSION") - -tar -czvf ${PACKAGE_CACHE}.tar.gz ${PACKAGE_CACHE} - -if [[ ${REMOVE_PACKAGE_CACHE} == "yes" ]]; then - rm -rf ${PACKAGE_CACHE} -fi - -: ${PACKAGE_ARCHIVE_FOLDER=releases-testing} - -function upload_archive() { - local archive=$1 - local component=$2 - local version=$3 - - if [ ! -r "${archive}" ]; then - echo "ERROR: File not found or not readable: ${archive}" - exit 1 - fi - local sha1_checksum=$(sha1sum -b "${archive}" | awk '{ print $1 }') - - local upload_url="${ARTIFACTORY_REPO}/${PACKAGE_ARCHIVE_FOLDER}/${component}/${version}/$(basename ${archive})" - - local props=() - # Required KITMAKER properties: - props+=("component_name=${component}") - props+=("version=${version}") - props+=("changelist=${GIT_COMMIT_SHORT}") - props+=("branch=${GIT_BRANCH}") - props+=("source=https://gitlab.com/nvidia/container-toolkit/container-toolkit") - # Package properties: - props+=("package.epoch=${IMAGE_EPOCH}") - props+=("package.version=${PACKAGE_VERSION}") - props+=("package.commit=${GIT_COMMIT}") - - for var in "CI_PROJECT_ID" "CI_PIPELINE_ID" "CI_JOB_ID" "CI_JOB_URL" "CI_PROJECT_PATH"; do - if [ -n "${!var}" ]; then - props+=("${property}=${value}") - fi - done - local PROPS=$(join_by ";" "${props[@]}") - - echo "Uploading ${upload_url} from ${archive}" - echo -H "X-JFrog-Art-Api: REDACTED" \ - -H "X-Checksum-Sha1: ${sha1_checksum}" \ - ${archive:+-T ${archive}} -X PUT \ - "${upload_url};${PROPS}" - if ! ${CURL} -f \ - -H "X-JFrog-Art-Api: ${ARTIFACTORY_TOKEN}" \ - -H "X-Checksum-Sha1: ${sha1_checksum}" \ - ${archive:+-T ${archive}} -X PUT \ - "${upload_url};${PROPS}" ; - then - echo "ERROR: upload file failed: ${archive}" - exit 1 - fi -} - -upload_archive "${PACKAGE_CACHE}.tar.gz" "nvidia_container_toolkit" "${VERSION}" - -echo "Removing ${PACKAGE_CACHE}.tar.gz" -rm -f "${PACKAGE_CACHE}.tar.gz" - diff --git a/scripts/build-packages.sh b/scripts/build-packages.sh index 0fc1b0364..1411afb70 100755 --- a/scripts/build-packages.sh +++ b/scripts/build-packages.sh @@ -31,17 +31,8 @@ else targets=${all[@]} fi -if [[ x"${SKIP_UPDATE_COMPONENTS}" != x"yes" ]]; then - echo "Updating components" - "${SCRIPTS_DIR}/update-components.sh" - if [[ -n $(git status -s third_party) && ${ALLOW_LOCAL_COMPONENT_CHANGES} != "true" ]]; then - echo "ERROR: Building with local component changes." - echo "Commit pending changes or rerun with ALLOW_LOCAL_COMPONENT_CHANGES='true'" - exit 1 - fi -else - echo "Skipping update of components" -fi +git submodule update --init +git submodule status eval $(${SCRIPTS_DIR}/get-component-versions.sh) diff --git a/scripts/extract-packages.sh b/scripts/extract-packages.sh index be288de2f..1f2690fbf 100755 --- a/scripts/extract-packages.sh +++ b/scripts/extract-packages.sh @@ -17,7 +17,7 @@ function assert_usage() { echo "Incorrect arguments: $*" >&2 echo "$(basename "${BASH_SOURCE[0]}") PACKAGE_IMAGE_NAME:PACKAGE_IMAGE_TAG" >&2 - echo -e "\\tPACKAGE_IMAGE: container image holding packages [e.g. registry.gitlab.com/nvidia/container-toolkit/container-toolkit/staging/container-toolkit]" >&2 + echo -e "\\tPACKAGE_IMAGE: container image holding packages [e.g. ghcr.io/nvidia/container-toolkit]" >&2 echo -e "\\tPACKAGE_TAG: tag for container image holding packages. [e.g. 1a2b3c4-packaging]" >&2 exit 1 } @@ -70,9 +70,9 @@ function copy-file() { -v "$(pwd):$(pwd)" \ -w "$(pwd)" \ -u "$(id -u):$(id -g)" \ - --entrypoint="bash" \ + --entrypoint="sh" \ "${image}" \ - -c "cp ${path_in_image} ${path_on_host}" + -c "cp -p ${path_in_image} ${path_on_host}" fi } diff --git a/scripts/release-kitmaker-artifactory.sh b/scripts/release-kitmaker-artifactory.sh index 13d0d087d..9135c237f 100755 --- a/scripts/release-kitmaker-artifactory.sh +++ b/scripts/release-kitmaker-artifactory.sh @@ -160,7 +160,7 @@ function upload_archive() { props+=("platform=${os}-${arch}") props+=("changelist=${GIT_COMMIT_SHORT}") props+=("branch=${branch}") - props+=("source=https://gitlab.com/nvidia/container-toolkit/container-toolkit") + props+=("source=https://github.com/NVIDIA/nvidia-container-toolkit") # Package properties: props+=("package.epoch=${IMAGE_EPOCH}") props+=("package.version=${VERSION}") diff --git a/scripts/utils.sh b/scripts/utils.sh index 532b9caf7..7300011e6 100644 --- a/scripts/utils.sh +++ b/scripts/utils.sh @@ -96,9 +96,9 @@ function copy_file() { -v "$(pwd):$(pwd)" \ -w "$(pwd)" \ -u "$(id -u):$(id -g)" \ - --entrypoint="bash" \ + --entrypoint="sh" \ "${image}" \ - -c "cp ${path_in_image} ${path_on_host}" + -c "cp -p ${path_in_image} ${path_on_host}" fi } diff --git a/test/container/toolkit_test.sh b/test/container/toolkit_test.sh deleted file mode 100644 index 46d2e206c..000000000 --- a/test/container/toolkit_test.sh +++ /dev/null @@ -1,76 +0,0 @@ -#! /bin/bash -# Copyright (c) 2019-2021, NVIDIA CORPORATION. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -testing::toolkit::install() { - local -r uid=$(id -u) - local -r gid=$(id -g) - - local READLINK="readlink" - local -r platform=$(uname) - if [[ "${platform}" == "Darwin" ]]; then - READLINK="greadlink" - fi - - testing::docker_run::toolkit::shell 'toolkit install --toolkit-root=/usr/local/nvidia/toolkit' - docker run --rm -v "${shared_dir}:/work" alpine sh -c "chown -R ${uid}:${gid} /work/" - - # Ensure toolkit dir is correctly setup - test ! -z "$(ls -A "${shared_dir}/usr/local/nvidia/toolkit")" - - test -L "${shared_dir}/usr/local/nvidia/toolkit/libnvidia-container.so.1" - test -e "$(${READLINK} -f "${shared_dir}/usr/local/nvidia/toolkit/libnvidia-container.so.1")" - test -L "${shared_dir}/usr/local/nvidia/toolkit/libnvidia-container-go.so.1" - test -e "$(${READLINK} -f "${shared_dir}/usr/local/nvidia/toolkit/libnvidia-container-go.so.1")" - - test -e "${shared_dir}/usr/local/nvidia/toolkit/nvidia-container-cli" - test -e "${shared_dir}/usr/local/nvidia/toolkit/nvidia-container-runtime-hook" - test -L "${shared_dir}/usr/local/nvidia/toolkit/nvidia-container-toolkit" - test -e "${shared_dir}/usr/local/nvidia/toolkit/nvidia-container-runtime" - - grep -q -E "nvidia driver modules are not yet loaded, invoking runc directly" "${shared_dir}/usr/local/nvidia/toolkit/nvidia-container-runtime" - grep -q -E "exec runc \".@\"" "${shared_dir}/usr/local/nvidia/toolkit/nvidia-container-runtime" - - test -e "${shared_dir}/usr/local/nvidia/toolkit/nvidia-container-cli.real" - test -e "${shared_dir}/usr/local/nvidia/toolkit/nvidia-container-runtime-hook.real" - test -e "${shared_dir}/usr/local/nvidia/toolkit/nvidia-container-runtime.real" - - test -e "${shared_dir}/usr/local/nvidia/toolkit/.config/nvidia-container-runtime/config.toml" - - # Ensure that the config file has the required contents. - # NOTE: This assumes that RUN_DIR is '/run/nvidia' - local -r nvidia_run_dir="/run/nvidia" - grep -q -E "^\s*ldconfig = \"@${nvidia_run_dir}/driver/sbin/ldconfig(.real)?\"" "${shared_dir}/usr/local/nvidia/toolkit/.config/nvidia-container-runtime/config.toml" - grep -q -E "^\s*root = \"${nvidia_run_dir}/driver\"" "${shared_dir}/usr/local/nvidia/toolkit/.config/nvidia-container-runtime/config.toml" - grep -q -E "^\s*path = \"/usr/local/nvidia/toolkit/nvidia-container-cli\"" "${shared_dir}/usr/local/nvidia/toolkit/.config/nvidia-container-runtime/config.toml" - grep -q -E "^\s*path = \"/usr/local/nvidia/toolkit/nvidia-ctk\"" "${shared_dir}/usr/local/nvidia/toolkit/.config/nvidia-container-runtime/config.toml" -} - -testing::toolkit::delete() { - testing::docker_run::toolkit::shell 'mkdir -p /usr/local/nvidia/delete-toolkit' - testing::docker_run::toolkit::shell 'touch /usr/local/nvidia/delete-toolkit/test.file' - testing::docker_run::toolkit::shell 'toolkit delete --toolkit-root=/usr/local/nvidia/delete-toolkit' - - test ! -z "$(ls -A "${shared_dir}/usr/local/nvidia")" - test ! -e "${shared_dir}/usr/local/nvidia/delete-toolkit" -} - -testing::toolkit::main() { - testing::toolkit::install - testing::toolkit::delete -} - -testing::toolkit::cleanup() { - : -} diff --git a/test/container/shared/etc/containerd/config_empty.toml b/testdata/go.mod similarity index 100% rename from test/container/shared/etc/containerd/config_empty.toml rename to testdata/go.mod diff --git a/testdata/installer/artifacts/deb/usr/bin/nvidia-cdi-hook b/testdata/installer/artifacts/deb/usr/bin/nvidia-cdi-hook new file mode 100755 index 000000000..667d97d4a --- /dev/null +++ b/testdata/installer/artifacts/deb/usr/bin/nvidia-cdi-hook @@ -0,0 +1 @@ +nvidia-cdi-hook diff --git a/testdata/installer/artifacts/deb/usr/bin/nvidia-container-cli b/testdata/installer/artifacts/deb/usr/bin/nvidia-container-cli new file mode 100755 index 000000000..4ccf7b79f --- /dev/null +++ b/testdata/installer/artifacts/deb/usr/bin/nvidia-container-cli @@ -0,0 +1 @@ +nvidia-container-cli diff --git a/testdata/installer/artifacts/deb/usr/bin/nvidia-container-runtime b/testdata/installer/artifacts/deb/usr/bin/nvidia-container-runtime new file mode 100755 index 000000000..2bff72382 --- /dev/null +++ b/testdata/installer/artifacts/deb/usr/bin/nvidia-container-runtime @@ -0,0 +1 @@ +nvidia-container-runtime diff --git a/testdata/installer/artifacts/deb/usr/bin/nvidia-container-runtime-hook b/testdata/installer/artifacts/deb/usr/bin/nvidia-container-runtime-hook new file mode 100755 index 000000000..b09c13bfd --- /dev/null +++ b/testdata/installer/artifacts/deb/usr/bin/nvidia-container-runtime-hook @@ -0,0 +1 @@ +nvidia-container-runtime-hook diff --git a/testdata/installer/artifacts/deb/usr/bin/nvidia-container-runtime.cdi b/testdata/installer/artifacts/deb/usr/bin/nvidia-container-runtime.cdi new file mode 100755 index 000000000..7588394b8 --- /dev/null +++ b/testdata/installer/artifacts/deb/usr/bin/nvidia-container-runtime.cdi @@ -0,0 +1 @@ +nvidia-container-runtime.cdi diff --git a/testdata/installer/artifacts/deb/usr/bin/nvidia-container-runtime.legacy b/testdata/installer/artifacts/deb/usr/bin/nvidia-container-runtime.legacy new file mode 100755 index 000000000..121fce5ea --- /dev/null +++ b/testdata/installer/artifacts/deb/usr/bin/nvidia-container-runtime.legacy @@ -0,0 +1 @@ +nvidia-container-runtime.legacy diff --git a/testdata/installer/artifacts/deb/usr/bin/nvidia-ctk b/testdata/installer/artifacts/deb/usr/bin/nvidia-ctk new file mode 100755 index 000000000..86b95e407 --- /dev/null +++ b/testdata/installer/artifacts/deb/usr/bin/nvidia-ctk @@ -0,0 +1 @@ +nvidia-ctk diff --git a/testdata/installer/artifacts/deb/usr/lib/x86_64-linux-gnu/libnvidia-container-go.so b/testdata/installer/artifacts/deb/usr/lib/x86_64-linux-gnu/libnvidia-container-go.so new file mode 120000 index 000000000..843e6e7a8 --- /dev/null +++ b/testdata/installer/artifacts/deb/usr/lib/x86_64-linux-gnu/libnvidia-container-go.so @@ -0,0 +1 @@ +libnvidia-container-go.so.1 \ No newline at end of file diff --git a/testdata/installer/artifacts/deb/usr/lib/x86_64-linux-gnu/libnvidia-container-go.so.1 b/testdata/installer/artifacts/deb/usr/lib/x86_64-linux-gnu/libnvidia-container-go.so.1 new file mode 120000 index 000000000..545965a8c --- /dev/null +++ b/testdata/installer/artifacts/deb/usr/lib/x86_64-linux-gnu/libnvidia-container-go.so.1 @@ -0,0 +1 @@ +libnvidia-container-go.so.99.88.77 \ No newline at end of file diff --git a/test/input/csv_samples/.csv b/testdata/installer/artifacts/deb/usr/lib/x86_64-linux-gnu/libnvidia-container-go.so.99.88.77 similarity index 100% rename from test/input/csv_samples/.csv rename to testdata/installer/artifacts/deb/usr/lib/x86_64-linux-gnu/libnvidia-container-go.so.99.88.77 diff --git a/testdata/installer/artifacts/deb/usr/lib/x86_64-linux-gnu/libnvidia-container.so b/testdata/installer/artifacts/deb/usr/lib/x86_64-linux-gnu/libnvidia-container.so new file mode 120000 index 000000000..f2bc5d789 --- /dev/null +++ b/testdata/installer/artifacts/deb/usr/lib/x86_64-linux-gnu/libnvidia-container.so @@ -0,0 +1 @@ +libnvidia-container.so.1 \ No newline at end of file diff --git a/testdata/installer/artifacts/deb/usr/lib/x86_64-linux-gnu/libnvidia-container.so.1 b/testdata/installer/artifacts/deb/usr/lib/x86_64-linux-gnu/libnvidia-container.so.1 new file mode 120000 index 000000000..5e129c11c --- /dev/null +++ b/testdata/installer/artifacts/deb/usr/lib/x86_64-linux-gnu/libnvidia-container.so.1 @@ -0,0 +1 @@ +libnvidia-container.so.99.88.77 \ No newline at end of file diff --git a/test/input/csv_samples/empty/.gitignore b/testdata/installer/artifacts/deb/usr/lib/x86_64-linux-gnu/libnvidia-container.so.99.88.77 similarity index 100% rename from test/input/csv_samples/empty/.gitignore rename to testdata/installer/artifacts/deb/usr/lib/x86_64-linux-gnu/libnvidia-container.so.99.88.77 diff --git a/testdata/installer/artifacts/rpm/usr/bin/nvidia-cdi-hook b/testdata/installer/artifacts/rpm/usr/bin/nvidia-cdi-hook new file mode 100755 index 000000000..667d97d4a --- /dev/null +++ b/testdata/installer/artifacts/rpm/usr/bin/nvidia-cdi-hook @@ -0,0 +1 @@ +nvidia-cdi-hook diff --git a/testdata/installer/artifacts/rpm/usr/bin/nvidia-container-cli b/testdata/installer/artifacts/rpm/usr/bin/nvidia-container-cli new file mode 100755 index 000000000..4ccf7b79f --- /dev/null +++ b/testdata/installer/artifacts/rpm/usr/bin/nvidia-container-cli @@ -0,0 +1 @@ +nvidia-container-cli diff --git a/testdata/installer/artifacts/rpm/usr/bin/nvidia-container-runtime b/testdata/installer/artifacts/rpm/usr/bin/nvidia-container-runtime new file mode 100755 index 000000000..2bff72382 --- /dev/null +++ b/testdata/installer/artifacts/rpm/usr/bin/nvidia-container-runtime @@ -0,0 +1 @@ +nvidia-container-runtime diff --git a/testdata/installer/artifacts/rpm/usr/bin/nvidia-container-runtime-hook b/testdata/installer/artifacts/rpm/usr/bin/nvidia-container-runtime-hook new file mode 100755 index 000000000..b09c13bfd --- /dev/null +++ b/testdata/installer/artifacts/rpm/usr/bin/nvidia-container-runtime-hook @@ -0,0 +1 @@ +nvidia-container-runtime-hook diff --git a/testdata/installer/artifacts/rpm/usr/bin/nvidia-container-runtime.cdi b/testdata/installer/artifacts/rpm/usr/bin/nvidia-container-runtime.cdi new file mode 100755 index 000000000..7588394b8 --- /dev/null +++ b/testdata/installer/artifacts/rpm/usr/bin/nvidia-container-runtime.cdi @@ -0,0 +1 @@ +nvidia-container-runtime.cdi diff --git a/testdata/installer/artifacts/rpm/usr/bin/nvidia-container-runtime.legacy b/testdata/installer/artifacts/rpm/usr/bin/nvidia-container-runtime.legacy new file mode 100755 index 000000000..121fce5ea --- /dev/null +++ b/testdata/installer/artifacts/rpm/usr/bin/nvidia-container-runtime.legacy @@ -0,0 +1 @@ +nvidia-container-runtime.legacy diff --git a/testdata/installer/artifacts/rpm/usr/bin/nvidia-ctk b/testdata/installer/artifacts/rpm/usr/bin/nvidia-ctk new file mode 100755 index 000000000..86b95e407 --- /dev/null +++ b/testdata/installer/artifacts/rpm/usr/bin/nvidia-ctk @@ -0,0 +1 @@ +nvidia-ctk diff --git a/testdata/installer/artifacts/rpm/usr/lib64/libnvidia-container-go.so b/testdata/installer/artifacts/rpm/usr/lib64/libnvidia-container-go.so new file mode 120000 index 000000000..843e6e7a8 --- /dev/null +++ b/testdata/installer/artifacts/rpm/usr/lib64/libnvidia-container-go.so @@ -0,0 +1 @@ +libnvidia-container-go.so.1 \ No newline at end of file diff --git a/testdata/installer/artifacts/rpm/usr/lib64/libnvidia-container-go.so.1 b/testdata/installer/artifacts/rpm/usr/lib64/libnvidia-container-go.so.1 new file mode 120000 index 000000000..545965a8c --- /dev/null +++ b/testdata/installer/artifacts/rpm/usr/lib64/libnvidia-container-go.so.1 @@ -0,0 +1 @@ +libnvidia-container-go.so.99.88.77 \ No newline at end of file diff --git a/test/input/csv_samples/other.not_csv b/testdata/installer/artifacts/rpm/usr/lib64/libnvidia-container-go.so.99.88.77 similarity index 100% rename from test/input/csv_samples/other.not_csv rename to testdata/installer/artifacts/rpm/usr/lib64/libnvidia-container-go.so.99.88.77 diff --git a/testdata/installer/artifacts/rpm/usr/lib64/libnvidia-container.so b/testdata/installer/artifacts/rpm/usr/lib64/libnvidia-container.so new file mode 120000 index 000000000..f2bc5d789 --- /dev/null +++ b/testdata/installer/artifacts/rpm/usr/lib64/libnvidia-container.so @@ -0,0 +1 @@ +libnvidia-container.so.1 \ No newline at end of file diff --git a/testdata/installer/artifacts/rpm/usr/lib64/libnvidia-container.so.1 b/testdata/installer/artifacts/rpm/usr/lib64/libnvidia-container.so.1 new file mode 120000 index 000000000..5e129c11c --- /dev/null +++ b/testdata/installer/artifacts/rpm/usr/lib64/libnvidia-container.so.1 @@ -0,0 +1 @@ +libnvidia-container.so.99.88.77 \ No newline at end of file diff --git a/test/input/nvidia-container-runtime/config.toml b/testdata/installer/artifacts/rpm/usr/lib64/libnvidia-container.so.99.88.77 similarity index 100% rename from test/input/nvidia-container-runtime/config.toml rename to testdata/installer/artifacts/rpm/usr/lib64/libnvidia-container.so.99.88.77 diff --git a/testdata/lookup/rootfs-1/README.md b/testdata/lookup/rootfs-1/README.md new file mode 100644 index 000000000..ba0c4a17f --- /dev/null +++ b/testdata/lookup/rootfs-1/README.md @@ -0,0 +1,2 @@ +This rootfs represents a host with the CUDA driver libraries installed in +/lib/x86_64-linux-gnu. The included /etc/ld.so.cache was copied from such as system. \ No newline at end of file diff --git a/test/output/.gitkeep b/testdata/lookup/rootfs-1/dev/nvidia-caps-imex-channels/channel0 similarity index 100% rename from test/output/.gitkeep rename to testdata/lookup/rootfs-1/dev/nvidia-caps-imex-channels/channel0 diff --git a/testdata/lookup/rootfs-1/dev/nvidia-caps-imex-channels/channel1 b/testdata/lookup/rootfs-1/dev/nvidia-caps-imex-channels/channel1 new file mode 100644 index 000000000..e69de29bb diff --git a/testdata/lookup/rootfs-1/dev/nvidia-caps-imex-channels/channel2047 b/testdata/lookup/rootfs-1/dev/nvidia-caps-imex-channels/channel2047 new file mode 100644 index 000000000..e69de29bb diff --git a/testdata/lookup/rootfs-1/dev/nvidia0 b/testdata/lookup/rootfs-1/dev/nvidia0 new file mode 100644 index 000000000..e69de29bb diff --git a/testdata/lookup/rootfs-1/dev/nvidiactl b/testdata/lookup/rootfs-1/dev/nvidiactl new file mode 100644 index 000000000..e69de29bb diff --git a/testdata/lookup/rootfs-1/etc/ld.so.cache b/testdata/lookup/rootfs-1/etc/ld.so.cache new file mode 100644 index 000000000..8ef99f3fd Binary files /dev/null and b/testdata/lookup/rootfs-1/etc/ld.so.cache differ diff --git a/testdata/lookup/rootfs-1/lib/x86_64-linux-gnu/libcuda.so.1 b/testdata/lookup/rootfs-1/lib/x86_64-linux-gnu/libcuda.so.1 new file mode 120000 index 000000000..b25100e41 --- /dev/null +++ b/testdata/lookup/rootfs-1/lib/x86_64-linux-gnu/libcuda.so.1 @@ -0,0 +1 @@ +libcuda.so.999.88.77 \ No newline at end of file diff --git a/testdata/lookup/rootfs-1/lib/x86_64-linux-gnu/libcuda.so.999.88.77 b/testdata/lookup/rootfs-1/lib/x86_64-linux-gnu/libcuda.so.999.88.77 new file mode 100644 index 000000000..e69de29bb diff --git a/testdata/lookup/rootfs-2/README.md b/testdata/lookup/rootfs-2/README.md new file mode 100644 index 000000000..cf26d8806 --- /dev/null +++ b/testdata/lookup/rootfs-2/README.md @@ -0,0 +1,3 @@ +This rootfs represents a host with the CUDA driver libraries installed in +/var/lib/nvidia/lib64. The included /etc/ld.so.cache was generated in a container +simulating such as system. \ No newline at end of file diff --git a/testdata/lookup/rootfs-2/etc/ld.so.cache b/testdata/lookup/rootfs-2/etc/ld.so.cache new file mode 100644 index 000000000..5fdcf29fe Binary files /dev/null and b/testdata/lookup/rootfs-2/etc/ld.so.cache differ diff --git a/testdata/lookup/rootfs-2/var/lib/nvidia/lib64/libcuda.so.1 b/testdata/lookup/rootfs-2/var/lib/nvidia/lib64/libcuda.so.1 new file mode 120000 index 000000000..b25100e41 --- /dev/null +++ b/testdata/lookup/rootfs-2/var/lib/nvidia/lib64/libcuda.so.1 @@ -0,0 +1 @@ +libcuda.so.999.88.77 \ No newline at end of file diff --git a/testdata/lookup/rootfs-2/var/lib/nvidia/lib64/libcuda.so.999.88.77 b/testdata/lookup/rootfs-2/var/lib/nvidia/lib64/libcuda.so.999.88.77 new file mode 100644 index 000000000..e69de29bb diff --git a/testdata/lookup/rootfs-empty/README.md b/testdata/lookup/rootfs-empty/README.md new file mode 100644 index 000000000..384dec063 --- /dev/null +++ b/testdata/lookup/rootfs-empty/README.md @@ -0,0 +1 @@ +The folders represents an empty rootfs. diff --git a/testdata/lookup/rootfs-no-cache-lib64/usr/lib64/libcuda.so.1 b/testdata/lookup/rootfs-no-cache-lib64/usr/lib64/libcuda.so.1 new file mode 120000 index 000000000..b25100e41 --- /dev/null +++ b/testdata/lookup/rootfs-no-cache-lib64/usr/lib64/libcuda.so.1 @@ -0,0 +1 @@ +libcuda.so.999.88.77 \ No newline at end of file diff --git a/testdata/lookup/rootfs-no-cache-lib64/usr/lib64/libcuda.so.999.88.77 b/testdata/lookup/rootfs-no-cache-lib64/usr/lib64/libcuda.so.999.88.77 new file mode 100644 index 000000000..e69de29bb diff --git a/test/bin/nvidia-container-runtime-hook b/tests/bin/nvidia-container-runtime-hook similarity index 100% rename from test/bin/nvidia-container-runtime-hook rename to tests/bin/nvidia-container-runtime-hook diff --git a/test/bin/runc b/tests/bin/runc similarity index 100% rename from test/bin/runc rename to tests/bin/runc diff --git a/test/container/common.sh b/tests/container/common.sh similarity index 100% rename from test/container/common.sh rename to tests/container/common.sh diff --git a/test/container/containerd_test.sh b/tests/container/containerd_test.sh similarity index 100% rename from test/container/containerd_test.sh rename to tests/container/containerd_test.sh diff --git a/test/container/crio_test.sh b/tests/container/crio_test.sh similarity index 100% rename from test/container/crio_test.sh rename to tests/container/crio_test.sh diff --git a/test/container/docker_test.sh b/tests/container/docker_test.sh similarity index 100% rename from test/container/docker_test.sh rename to tests/container/docker_test.sh diff --git a/test/container/main.sh b/tests/container/main.sh similarity index 94% rename from test/container/main.sh rename to tests/container/main.sh index 9b6c91f97..4b64f1541 100644 --- a/test/container/main.sh +++ b/tests/container/main.sh @@ -19,7 +19,6 @@ shopt -s lastpipe readonly basedir="$(dirname "$(realpath "$0")")" source "${basedir}/common.sh" -source "${basedir}/toolkit_test.sh" source "${basedir}/docker_test.sh" source "${basedir}/crio_test.sh" source "${basedir}/containerd_test.sh" @@ -66,7 +65,7 @@ done trap '"$CLEANUP" && testing::cleanup' ERR -readonly test_cases="${TEST_CASES:-toolkit docker crio containerd}" +readonly test_cases="${TEST_CASES:-docker crio containerd}" testing::cleanup for tc in ${test_cases}; do diff --git a/tests/container/shared/etc/containerd/config_empty.toml b/tests/container/shared/etc/containerd/config_empty.toml new file mode 100644 index 000000000..e69de29bb diff --git a/test/container/shared/etc/containerd/config_v1.toml b/tests/container/shared/etc/containerd/config_v1.toml similarity index 100% rename from test/container/shared/etc/containerd/config_v1.toml rename to tests/container/shared/etc/containerd/config_v1.toml diff --git a/test/container/shared/etc/containerd/config_v2.toml b/tests/container/shared/etc/containerd/config_v2.toml similarity index 100% rename from test/container/shared/etc/containerd/config_v2.toml rename to tests/container/shared/etc/containerd/config_v2.toml diff --git a/test/container/shared/etc/docker/daemon.json b/tests/container/shared/etc/docker/daemon.json similarity index 100% rename from test/container/shared/etc/docker/daemon.json rename to tests/container/shared/etc/docker/daemon.json diff --git a/tests/e2e/Makefile b/tests/e2e/Makefile new file mode 100644 index 000000000..d70e8dd08 --- /dev/null +++ b/tests/e2e/Makefile @@ -0,0 +1,28 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +.PHONY: test $(GINKGO_BIN) + +GINKGO_ARGS ?= +LOG_ARTIFACTS_DIR ?= $(CURDIR)/e2e_logs + +GINKGO_BIN := $(CURDIR)/bin/ginkgo + +test: $(GINKGO_BIN) + $(GINKGO_BIN) $(GINKGO_ARGS) -v --json-report ginkgo.json ./tests/e2e/... + +$(GINKGO_BIN): + mkdir -p $(CURDIR)/bin + GOBIN=$(CURDIR)/bin go install github.com/onsi/ginkgo/v2/ginkgo@latest diff --git a/tests/e2e/e2e_test.go b/tests/e2e/e2e_test.go new file mode 100644 index 000000000..d6b80dd50 --- /dev/null +++ b/tests/e2e/e2e_test.go @@ -0,0 +1,119 @@ +/** +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +**/ + +package e2e + +import ( + "context" + "errors" + "os" + "strconv" + "testing" + + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" +) + +// Test context +var ( + ctx context.Context + + installCTK bool + + imageName string + imageTag string + + sshKey string + sshUser string + sshHost string + sshPort string +) + +func TestMain(t *testing.T) { + suiteName := "E2E NVIDIA Container Toolkit" + + RegisterFailHandler(Fail) + + ctx = context.Background() + getTestEnv() + + RunSpecs(t, + suiteName, + ) +} + +// getTestEnv gets the test environment variables +func getTestEnv() { + defer GinkgoRecover() + + installCTK = getEnvVarOrDefault("E2E_INSTALL_CTK", false) + + if installCTK { + imageName = getRequiredEnvvar[string]("E2E_IMAGE_NAME") + + imageTag = getRequiredEnvvar[string]("E2E_IMAGE_TAG") + + } + + sshKey = getRequiredEnvvar[string]("E2E_SSH_KEY") + sshUser = getRequiredEnvvar[string]("E2E_SSH_USER") + sshHost = getRequiredEnvvar[string]("E2E_SSH_HOST") + + sshPort = getEnvVarOrDefault("E2E_SSH_PORT", "22") +} + +// getRequiredEnvvar returns the specified envvar if set or raises an error. +func getRequiredEnvvar[T any](key string) T { + v, err := getEnvVarAs[T](key) + Expect(err).To(BeNil(), "required environement variable not set", key) + return v +} + +func getEnvVarAs[T any](key string) (T, error) { + var zero T + value := os.Getenv(key) + if value == "" { + return zero, errors.New("env var not set") + } + + switch any(zero).(type) { + case bool: + v, err := strconv.ParseBool(value) + if err != nil { + return zero, err + } + return any(v).(T), nil + case int: + v, err := strconv.Atoi(value) + if err != nil { + return zero, err + } + return any(v).(T), nil + case string: + return any(value).(T), nil + default: + return zero, errors.New("unsupported type") + } +} + +func getEnvVarOrDefault[T any](key string, defaultValue T) T { + val, err := getEnvVarAs[T](key) + if err != nil { + return defaultValue + } + return val +} diff --git a/tests/e2e/infra/aws.yaml b/tests/e2e/infra/aws.yaml new file mode 100644 index 000000000..b512fc785 --- /dev/null +++ b/tests/e2e/infra/aws.yaml @@ -0,0 +1,31 @@ +apiVersion: holodeck.nvidia.com/v1alpha1 +kind: Environment +metadata: + name: HOLODECK_NAME + description: "end-to-end test infrastructure" +spec: + provider: aws + auth: + keyName: cnt-ci + privateKey: HOLODECK_PRIVATE_KEY + instance: + type: g4dn.xlarge + region: us-west-1 + ingressIpRanges: + - 18.190.12.32/32 + - 3.143.46.93/32 + - 44.230.241.223/32 + - 44.235.4.62/32 + - 52.15.119.136/32 + - 52.24.205.48/32 + image: + architecture: amd64 + imageId: ami-0ce2cb35386fc22e9 + containerRuntime: + install: true + name: docker + nvidiaContainerToolkit: + install: false + nvidiaDriver: + install: true + branch: 550 diff --git a/tests/e2e/installer.go b/tests/e2e/installer.go new file mode 100644 index 000000000..4bd2552b1 --- /dev/null +++ b/tests/e2e/installer.go @@ -0,0 +1,118 @@ +/* +* Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. + */ + +package e2e + +import ( + "bytes" + "fmt" + "text/template" +) + +// dockerInstallTemplate is a template for installing the NVIDIA Container Toolkit +// on a host using Docker. +var dockerInstallTemplate = ` +#! /usr/bin/env bash +set -xe + +: ${IMAGE:={{.Image}}} + +# Create a temporary directory +TEMP_DIR="/tmp/ctk_e2e.$(date +%s)_$RANDOM" +mkdir -p "$TEMP_DIR" + +# Given that docker has an init function that checks for the existence of the +# nvidia-container-toolkit, we need to create a symlink to the nvidia-container-runtime-hook +# in the /usr/bin directory. +# See https://github.com/moby/moby/blob/20a05dabf44934447d1a66cdd616cc803b81d4e2/daemon/nvidia_linux.go#L32-L46 +sudo rm -f /usr/bin/nvidia-container-runtime-hook +sudo ln -s "$TEMP_DIR/toolkit/nvidia-container-runtime-hook" /usr/bin/nvidia-container-runtime-hook + +docker run --pid=host --rm -i --privileged \ + -v /:/host \ + -v /var/run/docker.sock:/var/run/docker.sock \ + -v "$TEMP_DIR:$TEMP_DIR" \ + -v /etc/docker:/config-root \ + ${IMAGE} \ + --root "$TEMP_DIR" \ + --runtime=docker \ + --config=/config-root/daemon.json \ + --driver-root=/ \ + --no-daemon \ + --restart-mode=systemd +` + +type ToolkitInstaller struct { + runner Runner + template string + + Image string +} + +type installerOption func(*ToolkitInstaller) + +func WithRunner(r Runner) installerOption { + return func(i *ToolkitInstaller) { + i.runner = r + } +} + +func WithImage(image string) installerOption { + return func(i *ToolkitInstaller) { + i.Image = image + } +} + +func WithTemplate(template string) installerOption { + return func(i *ToolkitInstaller) { + i.template = template + } +} + +func NewToolkitInstaller(opts ...installerOption) (*ToolkitInstaller, error) { + i := &ToolkitInstaller{ + runner: localRunner{}, + template: dockerInstallTemplate, + } + + for _, opt := range opts { + opt(i) + } + + if i.Image == "" { + return nil, fmt.Errorf("image is required") + } + + return i, nil +} + +func (i *ToolkitInstaller) Install() error { + // Parse the combined template + tmpl, err := template.New("installScript").Parse(i.template) + if err != nil { + return fmt.Errorf("error parsing template: %w", err) + } + + // Execute the template + var renderedScript bytes.Buffer + err = tmpl.Execute(&renderedScript, i) + if err != nil { + return fmt.Errorf("error executing template: %w", err) + } + + _, _, err = i.runner.Run(renderedScript.String()) + return err +} diff --git a/tests/e2e/nvidia-container-toolkit_test.go b/tests/e2e/nvidia-container-toolkit_test.go new file mode 100644 index 000000000..749e5afef --- /dev/null +++ b/tests/e2e/nvidia-container-toolkit_test.go @@ -0,0 +1,354 @@ +/* + * Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package e2e + +import ( + "context" + "fmt" + "path/filepath" + "strings" + + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" +) + +// Integration tests for Docker runtime +var _ = Describe("docker", Ordered, ContinueOnFailure, func() { + var runner Runner + + // Install the NVIDIA Container Toolkit + BeforeAll(func(ctx context.Context) { + runner = NewRunner( + WithHost(sshHost), + WithPort(sshPort), + WithSshKey(sshKey), + WithSshUser(sshUser), + ) + + if installCTK { + installer, err := NewToolkitInstaller( + WithRunner(runner), + WithImage(imageName+":"+imageTag), + WithTemplate(dockerInstallTemplate), + ) + Expect(err).ToNot(HaveOccurred()) + + err = installer.Install() + Expect(err).ToNot(HaveOccurred()) + } + }) + + // GPUs are accessible in a container: Running nvidia-smi -L inside the + // container shows the same output inside the container as outside the + // container. This means that the following commands must all produce + // the same output + When("running nvidia-smi -L", Ordered, func() { + var hostOutput string + var err error + + BeforeAll(func(ctx context.Context) { + hostOutput, _, err = runner.Run("nvidia-smi -L") + Expect(err).ToNot(HaveOccurred()) + + _, _, err := runner.Run("docker pull ubuntu") + Expect(err).ToNot(HaveOccurred()) + }) + + It("should support NVIDIA_VISIBLE_DEVICES", func(ctx context.Context) { + containerOutput, _, err := runner.Run("docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all ubuntu nvidia-smi -L") + Expect(err).ToNot(HaveOccurred()) + Expect(containerOutput).To(Equal(hostOutput)) + }) + + It("should support automatic CDI spec generation", func(ctx context.Context) { + containerOutput, _, err := runner.Run("docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=runtime.nvidia.com/gpu=all ubuntu nvidia-smi -L") + Expect(err).ToNot(HaveOccurred()) + Expect(containerOutput).To(Equal(hostOutput)) + }) + + It("should support automatic CDI spec generation with the --gpus flag", func(ctx context.Context) { + containerOutput, _, err := runner.Run("docker run --rm -i --gpus=all --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=runtime.nvidia.com/gpu=all ubuntu nvidia-smi -L") + Expect(err).ToNot(HaveOccurred()) + Expect(containerOutput).To(Equal(hostOutput)) + }) + + It("should support the --gpus flag using the nvidia-container-runtime", func(ctx context.Context) { + containerOutput, _, err := runner.Run("docker run --rm -i --runtime=nvidia --gpus all ubuntu nvidia-smi -L") + Expect(err).ToNot(HaveOccurred()) + Expect(containerOutput).To(Equal(hostOutput)) + }) + + It("should support the --gpus flag using the nvidia-container-runtime-hook", func(ctx context.Context) { + containerOutput, _, err := runner.Run("docker run --rm -i --gpus all ubuntu nvidia-smi -L") + Expect(err).ToNot(HaveOccurred()) + Expect(containerOutput).To(Equal(hostOutput)) + }) + }) + + // A vectorAdd sample runs in a container with access to all GPUs. + // The following should all produce the same result. + When("Running the cuda-vectorAdd sample", Ordered, func() { + var referenceOutput string + + BeforeAll(func(ctx context.Context) { + _, _, err := runner.Run("docker pull nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0") + Expect(err).ToNot(HaveOccurred()) + }) + + It("should support NVIDIA_VISIBLE_DEVICES", func(ctx context.Context) { + var err error + referenceOutput, _, err = runner.Run("docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0") + Expect(err).ToNot(HaveOccurred()) + + Expect(referenceOutput).To(ContainSubstring("Test PASSED")) + }) + + It("should support automatic CDI spec generation", func(ctx context.Context) { + out2, _, err := runner.Run("docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=runtime.nvidia.com/gpu=all nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0") + Expect(err).ToNot(HaveOccurred()) + Expect(referenceOutput).To(Equal(out2)) + }) + + It("should support the --gpus flag using the nvidia-container-runtime", func(ctx context.Context) { + out3, _, err := runner.Run("docker run --rm -i --runtime=nvidia --gpus all nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0") + Expect(err).ToNot(HaveOccurred()) + Expect(referenceOutput).To(Equal(out3)) + }) + + It("should support the --gpus flag using the nvidia-container-runtime-hook", func(ctx context.Context) { + out4, _, err := runner.Run("docker run --rm -i --gpus all nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0") + Expect(err).ToNot(HaveOccurred()) + Expect(referenceOutput).To(Equal(out4)) + }) + }) + + // A deviceQuery sample runs in a container with access to all GPUs + // The following should all produce the same result. + When("Running the cuda-deviceQuery sample", Ordered, func() { + var referenceOutput string + + BeforeAll(func(ctx context.Context) { + _, _, err := runner.Run("docker pull nvcr.io/nvidia/k8s/cuda-sample:devicequery-cuda12.5.0") + Expect(err).ToNot(HaveOccurred()) + }) + + It("should support NVIDIA_VISIBLE_DEVICES", func(ctx context.Context) { + var err error + referenceOutput, _, err = runner.Run("docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all nvcr.io/nvidia/k8s/cuda-sample:devicequery-cuda12.5.0") + Expect(err).ToNot(HaveOccurred()) + Expect(referenceOutput).To(ContainSubstring("Result = PASS")) + }) + + It("should support automatic CDI spec generation", func(ctx context.Context) { + out2, _, err := runner.Run("docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=runtime.nvidia.com/gpu=all nvcr.io/nvidia/k8s/cuda-sample:devicequery-cuda12.5.0") + Expect(err).ToNot(HaveOccurred()) + Expect(referenceOutput).To(Equal(out2)) + }) + + It("should support the --gpus flag using the nvidia-container-runtime", func(ctx context.Context) { + out3, _, err := runner.Run("docker run --rm -i --runtime=nvidia --gpus all nvcr.io/nvidia/k8s/cuda-sample:devicequery-cuda12.5.0") + Expect(err).ToNot(HaveOccurred()) + Expect(referenceOutput).To(Equal(out3)) + }) + + It("should support the --gpus flag using the nvidia-container-runtime-hook", func(ctx context.Context) { + out4, _, err := runner.Run("docker run --rm -i --gpus all nvcr.io/nvidia/k8s/cuda-sample:devicequery-cuda12.5.0") + Expect(err).ToNot(HaveOccurred()) + Expect(referenceOutput).To(Equal(out4)) + }) + }) + + When("Testing CUDA Forward compatibility", Ordered, func() { + BeforeAll(func(ctx context.Context) { + _, _, err := runner.Run("docker pull nvcr.io/nvidia/cuda:12.9.0-base-ubi8") + Expect(err).ToNot(HaveOccurred()) + + compatOutput, _, err := runner.Run("docker run --rm -i -e NVIDIA_VISIBLE_DEVICES=void nvcr.io/nvidia/cuda:12.9.0-base-ubi8 bash -c \"ls /usr/local/cuda/compat/libcuda.*.*\"") + Expect(err).ToNot(HaveOccurred()) + Expect(compatOutput).ToNot(BeEmpty()) + + compatDriverVersion := strings.TrimPrefix(filepath.Base(compatOutput), "libcuda.so.") + compatMajor := strings.SplitN(compatDriverVersion, ".", 2)[0] + + driverOutput, _, err := runner.Run("nvidia-smi -q | grep \"Driver Version\"") + Expect(err).ToNot(HaveOccurred()) + parts := strings.SplitN(driverOutput, ":", 2) + Expect(parts).To(HaveLen(2)) + + hostDriverVersion := strings.TrimSpace(parts[1]) + Expect(hostDriverVersion).ToNot(BeEmpty()) + driverMajor := strings.SplitN(hostDriverVersion, ".", 2)[0] + + if driverMajor >= compatMajor { + GinkgoLogr.Info("CUDA Forward Compatibility tests require an older driver version", "hostDriverVersion", hostDriverVersion, "compatDriverVersion", compatDriverVersion) + Skip("CUDA Forward Compatibility tests require an older driver version") + } + }) + + It("should work with the nvidia runtime in legacy mode", func(ctx context.Context) { + ldconfigOut, _, err := runner.Run("docker run --rm -i -e NVIDIA_DISABLE_REQUIRE=true --runtime=nvidia --gpus all nvcr.io/nvidia/cuda:12.9.0-base-ubi8 bash -c \"ldconfig -p | grep libcuda.so.1\"") + Expect(err).ToNot(HaveOccurred()) + Expect(ldconfigOut).To(ContainSubstring("/usr/local/cuda-12.9/compat/")) + }) + + It("should work with the nvidia runtime in CDI mode", func(ctx context.Context) { + ldconfigOut, _, err := runner.Run("docker run --rm -i -e NVIDIA_DISABLE_REQUIRE=true --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=runtime.nvidia.com/gpu=all nvcr.io/nvidia/cuda:12.9.0-base-ubi8 bash -c \"ldconfig -p | grep libcuda.so.1\"") + Expect(err).ToNot(HaveOccurred()) + Expect(ldconfigOut).To(ContainSubstring("/usr/local/cuda-12.9/compat/")) + }) + + It("should work with nvidia-container-runtime-hook", func(ctx context.Context) { + ldconfigOut, _, err := runner.Run("docker run --rm -i -e NVIDIA_DISABLE_REQUIRE=true --runtime=runc --gpus all nvcr.io/nvidia/cuda:12.9.0-base-ubi8 bash -c \"ldconfig -p | grep libcuda.so.1\"") + Expect(err).ToNot(HaveOccurred()) + Expect(ldconfigOut).To(ContainSubstring("/usr/local/cuda-12.9/compat/")) + }) + }) + + When("Disabling device node creation", Ordered, func() { + BeforeAll(func(ctx context.Context) { + _, _, err := runner.Run("docker pull ubuntu") + Expect(err).ToNot(HaveOccurred()) + }) + + It("should work with nvidia-container-runtime-hook", func(ctx context.Context) { + output, _, err := runner.Run("docker run --rm -i --runtime=runc --gpus=all ubuntu bash -c \"grep ModifyDeviceFiles: /proc/driver/nvidia/params\"") + Expect(err).ToNot(HaveOccurred()) + Expect(output).To(Equal("ModifyDeviceFiles: 0\n")) + }) + + It("should work with automatic CDI spec generation", func(ctx context.Context) { + output, _, err := runner.Run("docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=runtime.nvidia.com/gpu=all ubuntu bash -c \"grep ModifyDeviceFiles: /proc/driver/nvidia/params\"") + Expect(err).ToNot(HaveOccurred()) + Expect(output).To(Equal("ModifyDeviceFiles: 0\n")) + }) + }) + + When("A container is run using CDI", Ordered, func() { + BeforeAll(func(ctx context.Context) { + _, _, err := runner.Run("docker pull ubuntu") + Expect(err).ToNot(HaveOccurred()) + }) + + It("should include libcuda.so in the ldcache", func(ctx context.Context) { + ldcacheOutput, _, err := runner.Run("docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=runtime.nvidia.com/gpu=all ubuntu bash -c \"ldconfig -p | grep 'libcuda.so'\"") + Expect(err).ToNot(HaveOccurred()) + Expect(ldcacheOutput).ToNot(BeEmpty()) + + ldcacheLines := strings.Split(ldcacheOutput, "\n") + var libs []string + for _, line := range ldcacheLines { + parts := strings.SplitN(line, " (", 2) + libs = append(libs, strings.TrimSpace(parts[0])) + } + + Expect(libs).To(ContainElements([]string{"libcuda.so", "libcuda.so.1"})) + }) + }) + + When("Running containers with shared mount propagation", Ordered, func() { + var mountsBefore string + var tmpDirPath string + + BeforeAll(func(ctx context.Context) { + _, _, err := runner.Run("docker pull ubuntu") + Expect(err).ToNot(HaveOccurred()) + + tmpDirPath = GinkgoT().TempDir() + _, _, err = runner.Run("mkdir -p " + tmpDirPath) + Expect(err).ToNot(HaveOccurred()) + + output, _, err := runner.Run("mount | sort") + Expect(err).ToNot(HaveOccurred()) + Expect(output).ToNot(BeEmpty()) + mountsBefore = output + }) + + AfterEach(func() { + mountsAfter, _, err := runner.Run("mount | sort") + Expect(err).ToNot(HaveOccurred()) + Expect(mountsAfter).To(Equal(mountsBefore)) + }) + + It("should not leak mounts when using the nvidia-container-runtime-hook", Label("legacy"), func(ctx context.Context) { + _, _, err := runner.Run("docker run --rm -i --runtime=runc -e NVIDIA_VISIBLE_DEVICES=all -e NVIDIA_DRIVER_CAPABILITIES=all --mount type=bind,source=" + tmpDirPath + ",target=/empty,bind-propagation=shared ubuntu true") + Expect(err).ToNot(HaveOccurred()) + }) + + It("should not leak mounts when using the nvidia-container-runtime", func(ctx context.Context) { + _, _, err := runner.Run("docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all -e NVIDIA_DRIVER_CAPABILITIES=all --mount type=bind,source=" + tmpDirPath + ",target=/empty,bind-propagation=shared ubuntu true") + Expect(err).ToNot(HaveOccurred()) + }) + + It("should not leak mounts when using CDI mode", func(ctx context.Context) { + _, _, err := runner.Run("docker run --rm -i --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=all -e NVIDIA_DRIVER_CAPABILITIES=runtime.nvidia.com/gpu=all --mount type=bind,source=" + tmpDirPath + ",target=/empty,bind-propagation=shared ubuntu true") + Expect(err).ToNot(HaveOccurred()) + }) + }) + + When("Running a container where the firmware folder resolves outside the container root", Ordered, func() { + var outputDir string + BeforeAll(func(ctx context.Context) { + output, _, err := runner.Run("mktemp -d -p $(pwd)") + Expect(err).ToNot(HaveOccurred()) + outputDir = strings.TrimSpace(output) + + _, _, err = runner.Run("docker pull ubuntu") + Expect(err).ToNot(HaveOccurred()) + + _, _, err = runner.Run(`docker build -t firmware-test \ + --build-arg RM_VERSION="$(basename $(ls -d /lib/firmware/nvidia/*.*))" \ + --build-arg CURRENT_DIR="` + outputDir + `" \ + - <= 0, higher meaning "less important" | positive and negative, with 0 for "info" and higher meaning "more important" | +| Error log entries | always logged, don't have a verbosity level | normal log entries with level >= `LevelError` | +| Passing logger via context | `NewContext`, `FromContext` | no API | +| Adding a name to a logger | `WithName` | no API | +| Modify verbosity of log entries in a call chain | `V` | no API | +| Grouping of key/value pairs | not supported | `WithGroup`, `GroupValue` | +| Pass context for extracting additional values | no API | API variants like `InfoCtx` | + +The high-level slog API is explicitly meant to be one of many different APIs +that can be layered on top of a shared `slog.Handler`. logr is one such +alternative API, with [interoperability](#slog-interoperability) provided by +some conversion functions. + +### Inspiration + +Before you consider this package, please read [this blog post by the +inimitable Dave Cheney][warning-makes-no-sense]. We really appreciate what +he has to say, and it largely aligns with our own experiences. + +### Differences from Dave's ideas + +The main differences are: + +1. Dave basically proposes doing away with the notion of a logging API in favor +of `fmt.Printf()`. We disagree, especially when you consider things like output +locations, timestamps, file and line decorations, and structured logging. This +package restricts the logging API to just 2 types of logs: info and error. + +Info logs are things you want to tell the user which are not errors. Error +logs are, well, errors. If your code receives an `error` from a subordinate +function call and is logging that `error` *and not returning it*, use error +logs. + +2. Verbosity-levels on info logs. This gives developers a chance to indicate +arbitrary grades of importance for info logs, without assigning names with +semantic meaning such as "warning", "trace", and "debug." Superficially this +may feel very similar, but the primary difference is the lack of semantics. +Because verbosity is a numerical value, it's safe to assume that an app running +with higher verbosity means more (and less important) logs will be generated. + +## Implementations (non-exhaustive) + +There are implementations for the following logging libraries: + +- **a function** (can bridge to non-structured libraries): [funcr](https://github.com/go-logr/logr/tree/master/funcr) +- **a testing.T** (for use in Go tests, with JSON-like output): [testr](https://github.com/go-logr/logr/tree/master/testr) +- **github.com/google/glog**: [glogr](https://github.com/go-logr/glogr) +- **k8s.io/klog** (for Kubernetes): [klogr](https://git.k8s.io/klog/klogr) +- **a testing.T** (with klog-like text output): [ktesting](https://git.k8s.io/klog/ktesting) +- **go.uber.org/zap**: [zapr](https://github.com/go-logr/zapr) +- **log** (the Go standard library logger): [stdr](https://github.com/go-logr/stdr) +- **github.com/sirupsen/logrus**: [logrusr](https://github.com/bombsimon/logrusr) +- **github.com/wojas/genericr**: [genericr](https://github.com/wojas/genericr) (makes it easy to implement your own backend) +- **logfmt** (Heroku style [logging](https://www.brandur.org/logfmt)): [logfmtr](https://github.com/iand/logfmtr) +- **github.com/rs/zerolog**: [zerologr](https://github.com/go-logr/zerologr) +- **github.com/go-kit/log**: [gokitlogr](https://github.com/tonglil/gokitlogr) (also compatible with github.com/go-kit/kit/log since v0.12.0) +- **bytes.Buffer** (writing to a buffer): [bufrlogr](https://github.com/tonglil/buflogr) (useful for ensuring values were logged, like during testing) + +## slog interoperability + +Interoperability goes both ways, using the `logr.Logger` API with a `slog.Handler` +and using the `slog.Logger` API with a `logr.LogSink`. `FromSlogHandler` and +`ToSlogHandler` convert between a `logr.Logger` and a `slog.Handler`. +As usual, `slog.New` can be used to wrap such a `slog.Handler` in the high-level +slog API. + +### Using a `logr.LogSink` as backend for slog + +Ideally, a logr sink implementation should support both logr and slog by +implementing both the normal logr interface(s) and `SlogSink`. Because +of a conflict in the parameters of the common `Enabled` method, it is [not +possible to implement both slog.Handler and logr.Sink in the same +type](https://github.com/golang/go/issues/59110). + +If both are supported, log calls can go from the high-level APIs to the backend +without the need to convert parameters. `FromSlogHandler` and `ToSlogHandler` can +convert back and forth without adding additional wrappers, with one exception: +when `Logger.V` was used to adjust the verbosity for a `slog.Handler`, then +`ToSlogHandler` has to use a wrapper which adjusts the verbosity for future +log calls. + +Such an implementation should also support values that implement specific +interfaces from both packages for logging (`logr.Marshaler`, `slog.LogValuer`, +`slog.GroupValue`). logr does not convert those. + +Not supporting slog has several drawbacks: +- Recording source code locations works correctly if the handler gets called + through `slog.Logger`, but may be wrong in other cases. That's because a + `logr.Sink` does its own stack unwinding instead of using the program counter + provided by the high-level API. +- slog levels <= 0 can be mapped to logr levels by negating the level without a + loss of information. But all slog levels > 0 (e.g. `slog.LevelWarning` as + used by `slog.Logger.Warn`) must be mapped to 0 before calling the sink + because logr does not support "more important than info" levels. +- The slog group concept is supported by prefixing each key in a key/value + pair with the group names, separated by a dot. For structured output like + JSON it would be better to group the key/value pairs inside an object. +- Special slog values and interfaces don't work as expected. +- The overhead is likely to be higher. + +These drawbacks are severe enough that applications using a mixture of slog and +logr should switch to a different backend. + +### Using a `slog.Handler` as backend for logr + +Using a plain `slog.Handler` without support for logr works better than the +other direction: +- All logr verbosity levels can be mapped 1:1 to their corresponding slog level + by negating them. +- Stack unwinding is done by the `SlogSink` and the resulting program + counter is passed to the `slog.Handler`. +- Names added via `Logger.WithName` are gathered and recorded in an additional + attribute with `logger` as key and the names separated by slash as value. +- `Logger.Error` is turned into a log record with `slog.LevelError` as level + and an additional attribute with `err` as key, if an error was provided. + +The main drawback is that `logr.Marshaler` will not be supported. Types should +ideally support both `logr.Marshaler` and `slog.Valuer`. If compatibility +with logr implementations without slog support is not important, then +`slog.Valuer` is sufficient. + +### Context support for slog + +Storing a logger in a `context.Context` is not supported by +slog. `NewContextWithSlogLogger` and `FromContextAsSlogLogger` can be +used to fill this gap. They store and retrieve a `slog.Logger` pointer +under the same context key that is also used by `NewContext` and +`FromContext` for `logr.Logger` value. + +When `NewContextWithSlogLogger` is followed by `FromContext`, the latter will +automatically convert the `slog.Logger` to a +`logr.Logger`. `FromContextAsSlogLogger` does the same for the other direction. + +With this approach, binaries which use either slog or logr are as efficient as +possible with no unnecessary allocations. This is also why the API stores a +`slog.Logger` pointer: when storing a `slog.Handler`, creating a `slog.Logger` +on retrieval would need to allocate one. + +The downside is that switching back and forth needs more allocations. Because +logr is the API that is already in use by different packages, in particular +Kubernetes, the recommendation is to use the `logr.Logger` API in code which +uses contextual logging. + +An alternative to adding values to a logger and storing that logger in the +context is to store the values in the context and to configure a logging +backend to extract those values when emitting log entries. This only works when +log calls are passed the context, which is not supported by the logr API. + +With the slog API, it is possible, but not +required. https://github.com/veqryn/slog-context is a package for slog which +provides additional support code for this approach. It also contains wrappers +for the context functions in logr, so developers who prefer to not use the logr +APIs directly can use those instead and the resulting code will still be +interoperable with logr. + +## FAQ + +### Conceptual + +#### Why structured logging? + +- **Structured logs are more easily queryable**: Since you've got + key-value pairs, it's much easier to query your structured logs for + particular values by filtering on the contents of a particular key -- + think searching request logs for error codes, Kubernetes reconcilers for + the name and namespace of the reconciled object, etc. + +- **Structured logging makes it easier to have cross-referenceable logs**: + Similarly to searchability, if you maintain conventions around your + keys, it becomes easy to gather all log lines related to a particular + concept. + +- **Structured logs allow better dimensions of filtering**: if you have + structure to your logs, you've got more precise control over how much + information is logged -- you might choose in a particular configuration + to log certain keys but not others, only log lines where a certain key + matches a certain value, etc., instead of just having v-levels and names + to key off of. + +- **Structured logs better represent structured data**: sometimes, the + data that you want to log is inherently structured (think tuple-link + objects.) Structured logs allow you to preserve that structure when + outputting. + +#### Why V-levels? + +**V-levels give operators an easy way to control the chattiness of log +operations**. V-levels provide a way for a given package to distinguish +the relative importance or verbosity of a given log message. Then, if +a particular logger or package is logging too many messages, the user +of the package can simply change the v-levels for that library. + +#### Why not named levels, like Info/Warning/Error? + +Read [Dave Cheney's post][warning-makes-no-sense]. Then read [Differences +from Dave's ideas](#differences-from-daves-ideas). + +#### Why not allow format strings, too? + +**Format strings negate many of the benefits of structured logs**: + +- They're not easily searchable without resorting to fuzzy searching, + regular expressions, etc. + +- They don't store structured data well, since contents are flattened into + a string. + +- They're not cross-referenceable. + +- They don't compress easily, since the message is not constant. + +(Unless you turn positional parameters into key-value pairs with numerical +keys, at which point you've gotten key-value logging with meaningless +keys.) + +### Practical + +#### Why key-value pairs, and not a map? + +Key-value pairs are *much* easier to optimize, especially around +allocations. Zap (a structured logger that inspired logr's interface) has +[performance measurements](https://github.com/uber-go/zap#performance) +that show this quite nicely. + +While the interface ends up being a little less obvious, you get +potentially better performance, plus avoid making users type +`map[string]string{}` every time they want to log. + +#### What if my V-levels differ between libraries? + +That's fine. Control your V-levels on a per-logger basis, and use the +`WithName` method to pass different loggers to different libraries. + +Generally, you should take care to ensure that you have relatively +consistent V-levels within a given logger, however, as this makes deciding +on what verbosity of logs to request easier. + +#### But I really want to use a format string! + +That's not actually a question. Assuming your question is "how do +I convert my mental model of logging with format strings to logging with +constant messages": + +1. Figure out what the error actually is, as you'd write in a TL;DR style, + and use that as a message. + +2. For every place you'd write a format specifier, look to the word before + it, and add that as a key value pair. + +For instance, consider the following examples (all taken from spots in the +Kubernetes codebase): + +- `klog.V(4).Infof("Client is returning errors: code %v, error %v", + responseCode, err)` becomes `logger.Error(err, "client returned an + error", "code", responseCode)` + +- `klog.V(4).Infof("Got a Retry-After %ds response for attempt %d to %v", + seconds, retries, url)` becomes `logger.V(4).Info("got a retry-after + response when requesting url", "attempt", retries, "after + seconds", seconds, "url", url)` + +If you *really* must use a format string, use it in a key's value, and +call `fmt.Sprintf` yourself. For instance: `log.Printf("unable to +reflect over type %T")` becomes `logger.Info("unable to reflect over +type", "type", fmt.Sprintf("%T"))`. In general though, the cases where +this is necessary should be few and far between. + +#### How do I choose my V-levels? + +This is basically the only hard constraint: increase V-levels to denote +more verbose or more debug-y logs. + +Otherwise, you can start out with `0` as "you always want to see this", +`1` as "common logging that you might *possibly* want to turn off", and +`10` as "I would like to performance-test your log collection stack." + +Then gradually choose levels in between as you need them, working your way +down from 10 (for debug and trace style logs) and up from 1 (for chattier +info-type logs). For reference, slog pre-defines -4 for debug logs +(corresponds to 4 in logr), which matches what is +[recommended for Kubernetes](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-instrumentation/logging.md#what-method-to-use). + +#### How do I choose my keys? + +Keys are fairly flexible, and can hold more or less any string +value. For best compatibility with implementations and consistency +with existing code in other projects, there are a few conventions you +should consider. + +- Make your keys human-readable. +- Constant keys are generally a good idea. +- Be consistent across your codebase. +- Keys should naturally match parts of the message string. +- Use lower case for simple keys and + [lowerCamelCase](https://en.wiktionary.org/wiki/lowerCamelCase) for + more complex ones. Kubernetes is one example of a project that has + [adopted that + convention](https://github.com/kubernetes/community/blob/HEAD/contributors/devel/sig-instrumentation/migration-to-structured-logging.md#name-arguments). + +While key names are mostly unrestricted (and spaces are acceptable), +it's generally a good idea to stick to printable ascii characters, or at +least match the general character set of your log lines. + +#### Why should keys be constant values? + +The point of structured logging is to make later log processing easier. Your +keys are, effectively, the schema of each log message. If you use different +keys across instances of the same log line, you will make your structured logs +much harder to use. `Sprintf()` is for values, not for keys! + +#### Why is this not a pure interface? + +The Logger type is implemented as a struct in order to allow the Go compiler to +optimize things like high-V `Info` logs that are not triggered. Not all of +these implementations are implemented yet, but this structure was suggested as +a way to ensure they *can* be implemented. All of the real work is behind the +`LogSink` interface. + +[warning-makes-no-sense]: http://dave.cheney.net/2015/11/05/lets-talk-about-logging diff --git a/tests/vendor/github.com/go-logr/logr/SECURITY.md b/tests/vendor/github.com/go-logr/logr/SECURITY.md new file mode 100644 index 000000000..1ca756fc7 --- /dev/null +++ b/tests/vendor/github.com/go-logr/logr/SECURITY.md @@ -0,0 +1,18 @@ +# Security Policy + +If you have discovered a security vulnerability in this project, please report it +privately. **Do not disclose it as a public issue.** This gives us time to work with you +to fix the issue before public exposure, reducing the chance that the exploit will be +used before a patch is released. + +You may submit the report in the following ways: + +- send an email to go-logr-security@googlegroups.com +- send us a [private vulnerability report](https://github.com/go-logr/logr/security/advisories/new) + +Please provide the following information in your report: + +- A description of the vulnerability and its impact +- How to reproduce the issue + +We ask that you give us 90 days to work on a fix before public exposure. diff --git a/tests/vendor/github.com/go-logr/logr/context.go b/tests/vendor/github.com/go-logr/logr/context.go new file mode 100644 index 000000000..de8bcc3ad --- /dev/null +++ b/tests/vendor/github.com/go-logr/logr/context.go @@ -0,0 +1,33 @@ +/* +Copyright 2023 The logr Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package logr + +// contextKey is how we find Loggers in a context.Context. With Go < 1.21, +// the value is always a Logger value. With Go >= 1.21, the value can be a +// Logger value or a slog.Logger pointer. +type contextKey struct{} + +// notFoundError exists to carry an IsNotFound method. +type notFoundError struct{} + +func (notFoundError) Error() string { + return "no logr.Logger was present" +} + +func (notFoundError) IsNotFound() bool { + return true +} diff --git a/tests/vendor/github.com/go-logr/logr/context_noslog.go b/tests/vendor/github.com/go-logr/logr/context_noslog.go new file mode 100644 index 000000000..f012f9a18 --- /dev/null +++ b/tests/vendor/github.com/go-logr/logr/context_noslog.go @@ -0,0 +1,49 @@ +//go:build !go1.21 +// +build !go1.21 + +/* +Copyright 2019 The logr Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package logr + +import ( + "context" +) + +// FromContext returns a Logger from ctx or an error if no Logger is found. +func FromContext(ctx context.Context) (Logger, error) { + if v, ok := ctx.Value(contextKey{}).(Logger); ok { + return v, nil + } + + return Logger{}, notFoundError{} +} + +// FromContextOrDiscard returns a Logger from ctx. If no Logger is found, this +// returns a Logger that discards all log messages. +func FromContextOrDiscard(ctx context.Context) Logger { + if v, ok := ctx.Value(contextKey{}).(Logger); ok { + return v + } + + return Discard() +} + +// NewContext returns a new Context, derived from ctx, which carries the +// provided Logger. +func NewContext(ctx context.Context, logger Logger) context.Context { + return context.WithValue(ctx, contextKey{}, logger) +} diff --git a/tests/vendor/github.com/go-logr/logr/context_slog.go b/tests/vendor/github.com/go-logr/logr/context_slog.go new file mode 100644 index 000000000..065ef0b82 --- /dev/null +++ b/tests/vendor/github.com/go-logr/logr/context_slog.go @@ -0,0 +1,83 @@ +//go:build go1.21 +// +build go1.21 + +/* +Copyright 2019 The logr Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package logr + +import ( + "context" + "fmt" + "log/slog" +) + +// FromContext returns a Logger from ctx or an error if no Logger is found. +func FromContext(ctx context.Context) (Logger, error) { + v := ctx.Value(contextKey{}) + if v == nil { + return Logger{}, notFoundError{} + } + + switch v := v.(type) { + case Logger: + return v, nil + case *slog.Logger: + return FromSlogHandler(v.Handler()), nil + default: + // Not reached. + panic(fmt.Sprintf("unexpected value type for logr context key: %T", v)) + } +} + +// FromContextAsSlogLogger returns a slog.Logger from ctx or nil if no such Logger is found. +func FromContextAsSlogLogger(ctx context.Context) *slog.Logger { + v := ctx.Value(contextKey{}) + if v == nil { + return nil + } + + switch v := v.(type) { + case Logger: + return slog.New(ToSlogHandler(v)) + case *slog.Logger: + return v + default: + // Not reached. + panic(fmt.Sprintf("unexpected value type for logr context key: %T", v)) + } +} + +// FromContextOrDiscard returns a Logger from ctx. If no Logger is found, this +// returns a Logger that discards all log messages. +func FromContextOrDiscard(ctx context.Context) Logger { + if logger, err := FromContext(ctx); err == nil { + return logger + } + return Discard() +} + +// NewContext returns a new Context, derived from ctx, which carries the +// provided Logger. +func NewContext(ctx context.Context, logger Logger) context.Context { + return context.WithValue(ctx, contextKey{}, logger) +} + +// NewContextWithSlogLogger returns a new Context, derived from ctx, which carries the +// provided slog.Logger. +func NewContextWithSlogLogger(ctx context.Context, logger *slog.Logger) context.Context { + return context.WithValue(ctx, contextKey{}, logger) +} diff --git a/tests/vendor/github.com/go-logr/logr/discard.go b/tests/vendor/github.com/go-logr/logr/discard.go new file mode 100644 index 000000000..99fe8be93 --- /dev/null +++ b/tests/vendor/github.com/go-logr/logr/discard.go @@ -0,0 +1,24 @@ +/* +Copyright 2020 The logr Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package logr + +// Discard returns a Logger that discards all messages logged to it. It can be +// used whenever the caller is not interested in the logs. Logger instances +// produced by this function always compare as equal. +func Discard() Logger { + return New(nil) +} diff --git a/tests/vendor/github.com/go-logr/logr/funcr/funcr.go b/tests/vendor/github.com/go-logr/logr/funcr/funcr.go new file mode 100644 index 000000000..30568e768 --- /dev/null +++ b/tests/vendor/github.com/go-logr/logr/funcr/funcr.go @@ -0,0 +1,914 @@ +/* +Copyright 2021 The logr Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package funcr implements formatting of structured log messages and +// optionally captures the call site and timestamp. +// +// The simplest way to use it is via its implementation of a +// github.com/go-logr/logr.LogSink with output through an arbitrary +// "write" function. See New and NewJSON for details. +// +// # Custom LogSinks +// +// For users who need more control, a funcr.Formatter can be embedded inside +// your own custom LogSink implementation. This is useful when the LogSink +// needs to implement additional methods, for example. +// +// # Formatting +// +// This will respect logr.Marshaler, fmt.Stringer, and error interfaces for +// values which are being logged. When rendering a struct, funcr will use Go's +// standard JSON tags (all except "string"). +package funcr + +import ( + "bytes" + "encoding" + "encoding/json" + "fmt" + "path/filepath" + "reflect" + "runtime" + "strconv" + "strings" + "time" + + "github.com/go-logr/logr" +) + +// New returns a logr.Logger which is implemented by an arbitrary function. +func New(fn func(prefix, args string), opts Options) logr.Logger { + return logr.New(newSink(fn, NewFormatter(opts))) +} + +// NewJSON returns a logr.Logger which is implemented by an arbitrary function +// and produces JSON output. +func NewJSON(fn func(obj string), opts Options) logr.Logger { + fnWrapper := func(_, obj string) { + fn(obj) + } + return logr.New(newSink(fnWrapper, NewFormatterJSON(opts))) +} + +// Underlier exposes access to the underlying logging function. Since +// callers only have a logr.Logger, they have to know which +// implementation is in use, so this interface is less of an +// abstraction and more of a way to test type conversion. +type Underlier interface { + GetUnderlying() func(prefix, args string) +} + +func newSink(fn func(prefix, args string), formatter Formatter) logr.LogSink { + l := &fnlogger{ + Formatter: formatter, + write: fn, + } + // For skipping fnlogger.Info and fnlogger.Error. + l.Formatter.AddCallDepth(1) + return l +} + +// Options carries parameters which influence the way logs are generated. +type Options struct { + // LogCaller tells funcr to add a "caller" key to some or all log lines. + // This has some overhead, so some users might not want it. + LogCaller MessageClass + + // LogCallerFunc tells funcr to also log the calling function name. This + // has no effect if caller logging is not enabled (see Options.LogCaller). + LogCallerFunc bool + + // LogTimestamp tells funcr to add a "ts" key to log lines. This has some + // overhead, so some users might not want it. + LogTimestamp bool + + // TimestampFormat tells funcr how to render timestamps when LogTimestamp + // is enabled. If not specified, a default format will be used. For more + // details, see docs for Go's time.Layout. + TimestampFormat string + + // LogInfoLevel tells funcr what key to use to log the info level. + // If not specified, the info level will be logged as "level". + // If this is set to "", the info level will not be logged at all. + LogInfoLevel *string + + // Verbosity tells funcr which V logs to produce. Higher values enable + // more logs. Info logs at or below this level will be written, while logs + // above this level will be discarded. + Verbosity int + + // RenderBuiltinsHook allows users to mutate the list of key-value pairs + // while a log line is being rendered. The kvList argument follows logr + // conventions - each pair of slice elements is comprised of a string key + // and an arbitrary value (verified and sanitized before calling this + // hook). The value returned must follow the same conventions. This hook + // can be used to audit or modify logged data. For example, you might want + // to prefix all of funcr's built-in keys with some string. This hook is + // only called for built-in (provided by funcr itself) key-value pairs. + // Equivalent hooks are offered for key-value pairs saved via + // logr.Logger.WithValues or Formatter.AddValues (see RenderValuesHook) and + // for user-provided pairs (see RenderArgsHook). + RenderBuiltinsHook func(kvList []any) []any + + // RenderValuesHook is the same as RenderBuiltinsHook, except that it is + // only called for key-value pairs saved via logr.Logger.WithValues. See + // RenderBuiltinsHook for more details. + RenderValuesHook func(kvList []any) []any + + // RenderArgsHook is the same as RenderBuiltinsHook, except that it is only + // called for key-value pairs passed directly to Info and Error. See + // RenderBuiltinsHook for more details. + RenderArgsHook func(kvList []any) []any + + // MaxLogDepth tells funcr how many levels of nested fields (e.g. a struct + // that contains a struct, etc.) it may log. Every time it finds a struct, + // slice, array, or map the depth is increased by one. When the maximum is + // reached, the value will be converted to a string indicating that the max + // depth has been exceeded. If this field is not specified, a default + // value will be used. + MaxLogDepth int +} + +// MessageClass indicates which category or categories of messages to consider. +type MessageClass int + +const ( + // None ignores all message classes. + None MessageClass = iota + // All considers all message classes. + All + // Info only considers info messages. + Info + // Error only considers error messages. + Error +) + +// fnlogger inherits some of its LogSink implementation from Formatter +// and just needs to add some glue code. +type fnlogger struct { + Formatter + write func(prefix, args string) +} + +func (l fnlogger) WithName(name string) logr.LogSink { + l.Formatter.AddName(name) + return &l +} + +func (l fnlogger) WithValues(kvList ...any) logr.LogSink { + l.Formatter.AddValues(kvList) + return &l +} + +func (l fnlogger) WithCallDepth(depth int) logr.LogSink { + l.Formatter.AddCallDepth(depth) + return &l +} + +func (l fnlogger) Info(level int, msg string, kvList ...any) { + prefix, args := l.FormatInfo(level, msg, kvList) + l.write(prefix, args) +} + +func (l fnlogger) Error(err error, msg string, kvList ...any) { + prefix, args := l.FormatError(err, msg, kvList) + l.write(prefix, args) +} + +func (l fnlogger) GetUnderlying() func(prefix, args string) { + return l.write +} + +// Assert conformance to the interfaces. +var _ logr.LogSink = &fnlogger{} +var _ logr.CallDepthLogSink = &fnlogger{} +var _ Underlier = &fnlogger{} + +// NewFormatter constructs a Formatter which emits a JSON-like key=value format. +func NewFormatter(opts Options) Formatter { + return newFormatter(opts, outputKeyValue) +} + +// NewFormatterJSON constructs a Formatter which emits strict JSON. +func NewFormatterJSON(opts Options) Formatter { + return newFormatter(opts, outputJSON) +} + +// Defaults for Options. +const defaultTimestampFormat = "2006-01-02 15:04:05.000000" +const defaultMaxLogDepth = 16 + +func newFormatter(opts Options, outfmt outputFormat) Formatter { + if opts.TimestampFormat == "" { + opts.TimestampFormat = defaultTimestampFormat + } + if opts.MaxLogDepth == 0 { + opts.MaxLogDepth = defaultMaxLogDepth + } + if opts.LogInfoLevel == nil { + opts.LogInfoLevel = new(string) + *opts.LogInfoLevel = "level" + } + f := Formatter{ + outputFormat: outfmt, + prefix: "", + values: nil, + depth: 0, + opts: &opts, + } + return f +} + +// Formatter is an opaque struct which can be embedded in a LogSink +// implementation. It should be constructed with NewFormatter. Some of +// its methods directly implement logr.LogSink. +type Formatter struct { + outputFormat outputFormat + prefix string + values []any + valuesStr string + depth int + opts *Options + groupName string // for slog groups + groups []groupDef +} + +// outputFormat indicates which outputFormat to use. +type outputFormat int + +const ( + // outputKeyValue emits a JSON-like key=value format, but not strict JSON. + outputKeyValue outputFormat = iota + // outputJSON emits strict JSON. + outputJSON +) + +// groupDef represents a saved group. The values may be empty, but we don't +// know if we need to render the group until the final record is rendered. +type groupDef struct { + name string + values string +} + +// PseudoStruct is a list of key-value pairs that gets logged as a struct. +type PseudoStruct []any + +// render produces a log line, ready to use. +func (f Formatter) render(builtins, args []any) string { + // Empirically bytes.Buffer is faster than strings.Builder for this. + buf := bytes.NewBuffer(make([]byte, 0, 1024)) + + if f.outputFormat == outputJSON { + buf.WriteByte('{') // for the whole record + } + + // Render builtins + vals := builtins + if hook := f.opts.RenderBuiltinsHook; hook != nil { + vals = hook(f.sanitize(vals)) + } + f.flatten(buf, vals, false) // keys are ours, no need to escape + continuing := len(builtins) > 0 + + // Turn the inner-most group into a string + argsStr := func() string { + buf := bytes.NewBuffer(make([]byte, 0, 1024)) + + vals = args + if hook := f.opts.RenderArgsHook; hook != nil { + vals = hook(f.sanitize(vals)) + } + f.flatten(buf, vals, true) // escape user-provided keys + + return buf.String() + }() + + // Render the stack of groups from the inside out. + bodyStr := f.renderGroup(f.groupName, f.valuesStr, argsStr) + for i := len(f.groups) - 1; i >= 0; i-- { + grp := &f.groups[i] + if grp.values == "" && bodyStr == "" { + // no contents, so we must elide the whole group + continue + } + bodyStr = f.renderGroup(grp.name, grp.values, bodyStr) + } + + if bodyStr != "" { + if continuing { + buf.WriteByte(f.comma()) + } + buf.WriteString(bodyStr) + } + + if f.outputFormat == outputJSON { + buf.WriteByte('}') // for the whole record + } + + return buf.String() +} + +// renderGroup returns a string representation of the named group with rendered +// values and args. If the name is empty, this will return the values and args, +// joined. If the name is not empty, this will return a single key-value pair, +// where the value is a grouping of the values and args. If the values and +// args are both empty, this will return an empty string, even if the name was +// specified. +func (f Formatter) renderGroup(name string, values string, args string) string { + buf := bytes.NewBuffer(make([]byte, 0, 1024)) + + needClosingBrace := false + if name != "" && (values != "" || args != "") { + buf.WriteString(f.quoted(name, true)) // escape user-provided keys + buf.WriteByte(f.colon()) + buf.WriteByte('{') + needClosingBrace = true + } + + continuing := false + if values != "" { + buf.WriteString(values) + continuing = true + } + + if args != "" { + if continuing { + buf.WriteByte(f.comma()) + } + buf.WriteString(args) + } + + if needClosingBrace { + buf.WriteByte('}') + } + + return buf.String() +} + +// flatten renders a list of key-value pairs into a buffer. If escapeKeys is +// true, the keys are assumed to have non-JSON-compatible characters in them +// and must be evaluated for escapes. +// +// This function returns a potentially modified version of kvList, which +// ensures that there is a value for every key (adding a value if needed) and +// that each key is a string (substituting a key if needed). +func (f Formatter) flatten(buf *bytes.Buffer, kvList []any, escapeKeys bool) []any { + // This logic overlaps with sanitize() but saves one type-cast per key, + // which can be measurable. + if len(kvList)%2 != 0 { + kvList = append(kvList, noValue) + } + copied := false + for i := 0; i < len(kvList); i += 2 { + k, ok := kvList[i].(string) + if !ok { + if !copied { + newList := make([]any, len(kvList)) + copy(newList, kvList) + kvList = newList + copied = true + } + k = f.nonStringKey(kvList[i]) + kvList[i] = k + } + v := kvList[i+1] + + if i > 0 { + if f.outputFormat == outputJSON { + buf.WriteByte(f.comma()) + } else { + // In theory the format could be something we don't understand. In + // practice, we control it, so it won't be. + buf.WriteByte(' ') + } + } + + buf.WriteString(f.quoted(k, escapeKeys)) + buf.WriteByte(f.colon()) + buf.WriteString(f.pretty(v)) + } + return kvList +} + +func (f Formatter) quoted(str string, escape bool) string { + if escape { + return prettyString(str) + } + // this is faster + return `"` + str + `"` +} + +func (f Formatter) comma() byte { + if f.outputFormat == outputJSON { + return ',' + } + return ' ' +} + +func (f Formatter) colon() byte { + if f.outputFormat == outputJSON { + return ':' + } + return '=' +} + +func (f Formatter) pretty(value any) string { + return f.prettyWithFlags(value, 0, 0) +} + +const ( + flagRawStruct = 0x1 // do not print braces on structs +) + +// TODO: This is not fast. Most of the overhead goes here. +func (f Formatter) prettyWithFlags(value any, flags uint32, depth int) string { + if depth > f.opts.MaxLogDepth { + return `""` + } + + // Handle types that take full control of logging. + if v, ok := value.(logr.Marshaler); ok { + // Replace the value with what the type wants to get logged. + // That then gets handled below via reflection. + value = invokeMarshaler(v) + } + + // Handle types that want to format themselves. + switch v := value.(type) { + case fmt.Stringer: + value = invokeStringer(v) + case error: + value = invokeError(v) + } + + // Handling the most common types without reflect is a small perf win. + switch v := value.(type) { + case bool: + return strconv.FormatBool(v) + case string: + return prettyString(v) + case int: + return strconv.FormatInt(int64(v), 10) + case int8: + return strconv.FormatInt(int64(v), 10) + case int16: + return strconv.FormatInt(int64(v), 10) + case int32: + return strconv.FormatInt(int64(v), 10) + case int64: + return strconv.FormatInt(int64(v), 10) + case uint: + return strconv.FormatUint(uint64(v), 10) + case uint8: + return strconv.FormatUint(uint64(v), 10) + case uint16: + return strconv.FormatUint(uint64(v), 10) + case uint32: + return strconv.FormatUint(uint64(v), 10) + case uint64: + return strconv.FormatUint(v, 10) + case uintptr: + return strconv.FormatUint(uint64(v), 10) + case float32: + return strconv.FormatFloat(float64(v), 'f', -1, 32) + case float64: + return strconv.FormatFloat(v, 'f', -1, 64) + case complex64: + return `"` + strconv.FormatComplex(complex128(v), 'f', -1, 64) + `"` + case complex128: + return `"` + strconv.FormatComplex(v, 'f', -1, 128) + `"` + case PseudoStruct: + buf := bytes.NewBuffer(make([]byte, 0, 1024)) + v = f.sanitize(v) + if flags&flagRawStruct == 0 { + buf.WriteByte('{') + } + for i := 0; i < len(v); i += 2 { + if i > 0 { + buf.WriteByte(f.comma()) + } + k, _ := v[i].(string) // sanitize() above means no need to check success + // arbitrary keys might need escaping + buf.WriteString(prettyString(k)) + buf.WriteByte(f.colon()) + buf.WriteString(f.prettyWithFlags(v[i+1], 0, depth+1)) + } + if flags&flagRawStruct == 0 { + buf.WriteByte('}') + } + return buf.String() + } + + buf := bytes.NewBuffer(make([]byte, 0, 256)) + t := reflect.TypeOf(value) + if t == nil { + return "null" + } + v := reflect.ValueOf(value) + switch t.Kind() { + case reflect.Bool: + return strconv.FormatBool(v.Bool()) + case reflect.String: + return prettyString(v.String()) + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return strconv.FormatInt(int64(v.Int()), 10) + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return strconv.FormatUint(uint64(v.Uint()), 10) + case reflect.Float32: + return strconv.FormatFloat(float64(v.Float()), 'f', -1, 32) + case reflect.Float64: + return strconv.FormatFloat(v.Float(), 'f', -1, 64) + case reflect.Complex64: + return `"` + strconv.FormatComplex(complex128(v.Complex()), 'f', -1, 64) + `"` + case reflect.Complex128: + return `"` + strconv.FormatComplex(v.Complex(), 'f', -1, 128) + `"` + case reflect.Struct: + if flags&flagRawStruct == 0 { + buf.WriteByte('{') + } + printComma := false // testing i>0 is not enough because of JSON omitted fields + for i := 0; i < t.NumField(); i++ { + fld := t.Field(i) + if fld.PkgPath != "" { + // reflect says this field is only defined for non-exported fields. + continue + } + if !v.Field(i).CanInterface() { + // reflect isn't clear exactly what this means, but we can't use it. + continue + } + name := "" + omitempty := false + if tag, found := fld.Tag.Lookup("json"); found { + if tag == "-" { + continue + } + if comma := strings.Index(tag, ","); comma != -1 { + if n := tag[:comma]; n != "" { + name = n + } + rest := tag[comma:] + if strings.Contains(rest, ",omitempty,") || strings.HasSuffix(rest, ",omitempty") { + omitempty = true + } + } else { + name = tag + } + } + if omitempty && isEmpty(v.Field(i)) { + continue + } + if printComma { + buf.WriteByte(f.comma()) + } + printComma = true // if we got here, we are rendering a field + if fld.Anonymous && fld.Type.Kind() == reflect.Struct && name == "" { + buf.WriteString(f.prettyWithFlags(v.Field(i).Interface(), flags|flagRawStruct, depth+1)) + continue + } + if name == "" { + name = fld.Name + } + // field names can't contain characters which need escaping + buf.WriteString(f.quoted(name, false)) + buf.WriteByte(f.colon()) + buf.WriteString(f.prettyWithFlags(v.Field(i).Interface(), 0, depth+1)) + } + if flags&flagRawStruct == 0 { + buf.WriteByte('}') + } + return buf.String() + case reflect.Slice, reflect.Array: + // If this is outputing as JSON make sure this isn't really a json.RawMessage. + // If so just emit "as-is" and don't pretty it as that will just print + // it as [X,Y,Z,...] which isn't terribly useful vs the string form you really want. + if f.outputFormat == outputJSON { + if rm, ok := value.(json.RawMessage); ok { + // If it's empty make sure we emit an empty value as the array style would below. + if len(rm) > 0 { + buf.Write(rm) + } else { + buf.WriteString("null") + } + return buf.String() + } + } + buf.WriteByte('[') + for i := 0; i < v.Len(); i++ { + if i > 0 { + buf.WriteByte(f.comma()) + } + e := v.Index(i) + buf.WriteString(f.prettyWithFlags(e.Interface(), 0, depth+1)) + } + buf.WriteByte(']') + return buf.String() + case reflect.Map: + buf.WriteByte('{') + // This does not sort the map keys, for best perf. + it := v.MapRange() + i := 0 + for it.Next() { + if i > 0 { + buf.WriteByte(f.comma()) + } + // If a map key supports TextMarshaler, use it. + keystr := "" + if m, ok := it.Key().Interface().(encoding.TextMarshaler); ok { + txt, err := m.MarshalText() + if err != nil { + keystr = fmt.Sprintf("", err.Error()) + } else { + keystr = string(txt) + } + keystr = prettyString(keystr) + } else { + // prettyWithFlags will produce already-escaped values + keystr = f.prettyWithFlags(it.Key().Interface(), 0, depth+1) + if t.Key().Kind() != reflect.String { + // JSON only does string keys. Unlike Go's standard JSON, we'll + // convert just about anything to a string. + keystr = prettyString(keystr) + } + } + buf.WriteString(keystr) + buf.WriteByte(f.colon()) + buf.WriteString(f.prettyWithFlags(it.Value().Interface(), 0, depth+1)) + i++ + } + buf.WriteByte('}') + return buf.String() + case reflect.Ptr, reflect.Interface: + if v.IsNil() { + return "null" + } + return f.prettyWithFlags(v.Elem().Interface(), 0, depth) + } + return fmt.Sprintf(`""`, t.Kind().String()) +} + +func prettyString(s string) string { + // Avoid escaping (which does allocations) if we can. + if needsEscape(s) { + return strconv.Quote(s) + } + b := bytes.NewBuffer(make([]byte, 0, 1024)) + b.WriteByte('"') + b.WriteString(s) + b.WriteByte('"') + return b.String() +} + +// needsEscape determines whether the input string needs to be escaped or not, +// without doing any allocations. +func needsEscape(s string) bool { + for _, r := range s { + if !strconv.IsPrint(r) || r == '\\' || r == '"' { + return true + } + } + return false +} + +func isEmpty(v reflect.Value) bool { + switch v.Kind() { + case reflect.Array, reflect.Map, reflect.Slice, reflect.String: + return v.Len() == 0 + case reflect.Bool: + return !v.Bool() + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return v.Int() == 0 + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return v.Uint() == 0 + case reflect.Float32, reflect.Float64: + return v.Float() == 0 + case reflect.Complex64, reflect.Complex128: + return v.Complex() == 0 + case reflect.Interface, reflect.Ptr: + return v.IsNil() + } + return false +} + +func invokeMarshaler(m logr.Marshaler) (ret any) { + defer func() { + if r := recover(); r != nil { + ret = fmt.Sprintf("", r) + } + }() + return m.MarshalLog() +} + +func invokeStringer(s fmt.Stringer) (ret string) { + defer func() { + if r := recover(); r != nil { + ret = fmt.Sprintf("", r) + } + }() + return s.String() +} + +func invokeError(e error) (ret string) { + defer func() { + if r := recover(); r != nil { + ret = fmt.Sprintf("", r) + } + }() + return e.Error() +} + +// Caller represents the original call site for a log line, after considering +// logr.Logger.WithCallDepth and logr.Logger.WithCallStackHelper. The File and +// Line fields will always be provided, while the Func field is optional. +// Users can set the render hook fields in Options to examine logged key-value +// pairs, one of which will be {"caller", Caller} if the Options.LogCaller +// field is enabled for the given MessageClass. +type Caller struct { + // File is the basename of the file for this call site. + File string `json:"file"` + // Line is the line number in the file for this call site. + Line int `json:"line"` + // Func is the function name for this call site, or empty if + // Options.LogCallerFunc is not enabled. + Func string `json:"function,omitempty"` +} + +func (f Formatter) caller() Caller { + // +1 for this frame, +1 for Info/Error. + pc, file, line, ok := runtime.Caller(f.depth + 2) + if !ok { + return Caller{"", 0, ""} + } + fn := "" + if f.opts.LogCallerFunc { + if fp := runtime.FuncForPC(pc); fp != nil { + fn = fp.Name() + } + } + + return Caller{filepath.Base(file), line, fn} +} + +const noValue = "" + +func (f Formatter) nonStringKey(v any) string { + return fmt.Sprintf("", f.snippet(v)) +} + +// snippet produces a short snippet string of an arbitrary value. +func (f Formatter) snippet(v any) string { + const snipLen = 16 + + snip := f.pretty(v) + if len(snip) > snipLen { + snip = snip[:snipLen] + } + return snip +} + +// sanitize ensures that a list of key-value pairs has a value for every key +// (adding a value if needed) and that each key is a string (substituting a key +// if needed). +func (f Formatter) sanitize(kvList []any) []any { + if len(kvList)%2 != 0 { + kvList = append(kvList, noValue) + } + for i := 0; i < len(kvList); i += 2 { + _, ok := kvList[i].(string) + if !ok { + kvList[i] = f.nonStringKey(kvList[i]) + } + } + return kvList +} + +// startGroup opens a new group scope (basically a sub-struct), which locks all +// the current saved values and starts them anew. This is needed to satisfy +// slog. +func (f *Formatter) startGroup(name string) { + // Unnamed groups are just inlined. + if name == "" { + return + } + + n := len(f.groups) + f.groups = append(f.groups[:n:n], groupDef{f.groupName, f.valuesStr}) + + // Start collecting new values. + f.groupName = name + f.valuesStr = "" + f.values = nil +} + +// Init configures this Formatter from runtime info, such as the call depth +// imposed by logr itself. +// Note that this receiver is a pointer, so depth can be saved. +func (f *Formatter) Init(info logr.RuntimeInfo) { + f.depth += info.CallDepth +} + +// Enabled checks whether an info message at the given level should be logged. +func (f Formatter) Enabled(level int) bool { + return level <= f.opts.Verbosity +} + +// GetDepth returns the current depth of this Formatter. This is useful for +// implementations which do their own caller attribution. +func (f Formatter) GetDepth() int { + return f.depth +} + +// FormatInfo renders an Info log message into strings. The prefix will be +// empty when no names were set (via AddNames), or when the output is +// configured for JSON. +func (f Formatter) FormatInfo(level int, msg string, kvList []any) (prefix, argsStr string) { + args := make([]any, 0, 64) // using a constant here impacts perf + prefix = f.prefix + if f.outputFormat == outputJSON { + args = append(args, "logger", prefix) + prefix = "" + } + if f.opts.LogTimestamp { + args = append(args, "ts", time.Now().Format(f.opts.TimestampFormat)) + } + if policy := f.opts.LogCaller; policy == All || policy == Info { + args = append(args, "caller", f.caller()) + } + if key := *f.opts.LogInfoLevel; key != "" { + args = append(args, key, level) + } + args = append(args, "msg", msg) + return prefix, f.render(args, kvList) +} + +// FormatError renders an Error log message into strings. The prefix will be +// empty when no names were set (via AddNames), or when the output is +// configured for JSON. +func (f Formatter) FormatError(err error, msg string, kvList []any) (prefix, argsStr string) { + args := make([]any, 0, 64) // using a constant here impacts perf + prefix = f.prefix + if f.outputFormat == outputJSON { + args = append(args, "logger", prefix) + prefix = "" + } + if f.opts.LogTimestamp { + args = append(args, "ts", time.Now().Format(f.opts.TimestampFormat)) + } + if policy := f.opts.LogCaller; policy == All || policy == Error { + args = append(args, "caller", f.caller()) + } + args = append(args, "msg", msg) + var loggableErr any + if err != nil { + loggableErr = err.Error() + } + args = append(args, "error", loggableErr) + return prefix, f.render(args, kvList) +} + +// AddName appends the specified name. funcr uses '/' characters to separate +// name elements. Callers should not pass '/' in the provided name string, but +// this library does not actually enforce that. +func (f *Formatter) AddName(name string) { + if len(f.prefix) > 0 { + f.prefix += "/" + } + f.prefix += name +} + +// AddValues adds key-value pairs to the set of saved values to be logged with +// each log line. +func (f *Formatter) AddValues(kvList []any) { + // Three slice args forces a copy. + n := len(f.values) + f.values = append(f.values[:n:n], kvList...) + + vals := f.values + if hook := f.opts.RenderValuesHook; hook != nil { + vals = hook(f.sanitize(vals)) + } + + // Pre-render values, so we don't have to do it on each Info/Error call. + buf := bytes.NewBuffer(make([]byte, 0, 1024)) + f.flatten(buf, vals, true) // escape user-provided keys + f.valuesStr = buf.String() +} + +// AddCallDepth increases the number of stack-frames to skip when attributing +// the log line to a file and line. +func (f *Formatter) AddCallDepth(depth int) { + f.depth += depth +} diff --git a/tests/vendor/github.com/go-logr/logr/funcr/slogsink.go b/tests/vendor/github.com/go-logr/logr/funcr/slogsink.go new file mode 100644 index 000000000..7bd84761e --- /dev/null +++ b/tests/vendor/github.com/go-logr/logr/funcr/slogsink.go @@ -0,0 +1,105 @@ +//go:build go1.21 +// +build go1.21 + +/* +Copyright 2023 The logr Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package funcr + +import ( + "context" + "log/slog" + + "github.com/go-logr/logr" +) + +var _ logr.SlogSink = &fnlogger{} + +const extraSlogSinkDepth = 3 // 2 for slog, 1 for SlogSink + +func (l fnlogger) Handle(_ context.Context, record slog.Record) error { + kvList := make([]any, 0, 2*record.NumAttrs()) + record.Attrs(func(attr slog.Attr) bool { + kvList = attrToKVs(attr, kvList) + return true + }) + + if record.Level >= slog.LevelError { + l.WithCallDepth(extraSlogSinkDepth).Error(nil, record.Message, kvList...) + } else { + level := l.levelFromSlog(record.Level) + l.WithCallDepth(extraSlogSinkDepth).Info(level, record.Message, kvList...) + } + return nil +} + +func (l fnlogger) WithAttrs(attrs []slog.Attr) logr.SlogSink { + kvList := make([]any, 0, 2*len(attrs)) + for _, attr := range attrs { + kvList = attrToKVs(attr, kvList) + } + l.AddValues(kvList) + return &l +} + +func (l fnlogger) WithGroup(name string) logr.SlogSink { + l.startGroup(name) + return &l +} + +// attrToKVs appends a slog.Attr to a logr-style kvList. It handle slog Groups +// and other details of slog. +func attrToKVs(attr slog.Attr, kvList []any) []any { + attrVal := attr.Value.Resolve() + if attrVal.Kind() == slog.KindGroup { + groupVal := attrVal.Group() + grpKVs := make([]any, 0, 2*len(groupVal)) + for _, attr := range groupVal { + grpKVs = attrToKVs(attr, grpKVs) + } + if attr.Key == "" { + // slog says we have to inline these + kvList = append(kvList, grpKVs...) + } else { + kvList = append(kvList, attr.Key, PseudoStruct(grpKVs)) + } + } else if attr.Key != "" { + kvList = append(kvList, attr.Key, attrVal.Any()) + } + + return kvList +} + +// levelFromSlog adjusts the level by the logger's verbosity and negates it. +// It ensures that the result is >= 0. This is necessary because the result is +// passed to a LogSink and that API did not historically document whether +// levels could be negative or what that meant. +// +// Some example usage: +// +// logrV0 := getMyLogger() +// logrV2 := logrV0.V(2) +// slogV2 := slog.New(logr.ToSlogHandler(logrV2)) +// slogV2.Debug("msg") // =~ logrV2.V(4) =~ logrV0.V(6) +// slogV2.Info("msg") // =~ logrV2.V(0) =~ logrV0.V(2) +// slogv2.Warn("msg") // =~ logrV2.V(-4) =~ logrV0.V(0) +func (l fnlogger) levelFromSlog(level slog.Level) int { + result := -level + if result < 0 { + result = 0 // because LogSink doesn't expect negative V levels + } + return int(result) +} diff --git a/tests/vendor/github.com/go-logr/logr/logr.go b/tests/vendor/github.com/go-logr/logr/logr.go new file mode 100644 index 000000000..b4428e105 --- /dev/null +++ b/tests/vendor/github.com/go-logr/logr/logr.go @@ -0,0 +1,520 @@ +/* +Copyright 2019 The logr Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This design derives from Dave Cheney's blog: +// http://dave.cheney.net/2015/11/05/lets-talk-about-logging + +// Package logr defines a general-purpose logging API and abstract interfaces +// to back that API. Packages in the Go ecosystem can depend on this package, +// while callers can implement logging with whatever backend is appropriate. +// +// # Usage +// +// Logging is done using a Logger instance. Logger is a concrete type with +// methods, which defers the actual logging to a LogSink interface. The main +// methods of Logger are Info() and Error(). Arguments to Info() and Error() +// are key/value pairs rather than printf-style formatted strings, emphasizing +// "structured logging". +// +// With Go's standard log package, we might write: +// +// log.Printf("setting target value %s", targetValue) +// +// With logr's structured logging, we'd write: +// +// logger.Info("setting target", "value", targetValue) +// +// Errors are much the same. Instead of: +// +// log.Printf("failed to open the pod bay door for user %s: %v", user, err) +// +// We'd write: +// +// logger.Error(err, "failed to open the pod bay door", "user", user) +// +// Info() and Error() are very similar, but they are separate methods so that +// LogSink implementations can choose to do things like attach additional +// information (such as stack traces) on calls to Error(). Error() messages are +// always logged, regardless of the current verbosity. If there is no error +// instance available, passing nil is valid. +// +// # Verbosity +// +// Often we want to log information only when the application in "verbose +// mode". To write log lines that are more verbose, Logger has a V() method. +// The higher the V-level of a log line, the less critical it is considered. +// Log-lines with V-levels that are not enabled (as per the LogSink) will not +// be written. Level V(0) is the default, and logger.V(0).Info() has the same +// meaning as logger.Info(). Negative V-levels have the same meaning as V(0). +// Error messages do not have a verbosity level and are always logged. +// +// Where we might have written: +// +// if flVerbose >= 2 { +// log.Printf("an unusual thing happened") +// } +// +// We can write: +// +// logger.V(2).Info("an unusual thing happened") +// +// # Logger Names +// +// Logger instances can have name strings so that all messages logged through +// that instance have additional context. For example, you might want to add +// a subsystem name: +// +// logger.WithName("compactor").Info("started", "time", time.Now()) +// +// The WithName() method returns a new Logger, which can be passed to +// constructors or other functions for further use. Repeated use of WithName() +// will accumulate name "segments". These name segments will be joined in some +// way by the LogSink implementation. It is strongly recommended that name +// segments contain simple identifiers (letters, digits, and hyphen), and do +// not contain characters that could muddle the log output or confuse the +// joining operation (e.g. whitespace, commas, periods, slashes, brackets, +// quotes, etc). +// +// # Saved Values +// +// Logger instances can store any number of key/value pairs, which will be +// logged alongside all messages logged through that instance. For example, +// you might want to create a Logger instance per managed object: +// +// With the standard log package, we might write: +// +// log.Printf("decided to set field foo to value %q for object %s/%s", +// targetValue, object.Namespace, object.Name) +// +// With logr we'd write: +// +// // Elsewhere: set up the logger to log the object name. +// obj.logger = mainLogger.WithValues( +// "name", obj.name, "namespace", obj.namespace) +// +// // later on... +// obj.logger.Info("setting foo", "value", targetValue) +// +// # Best Practices +// +// Logger has very few hard rules, with the goal that LogSink implementations +// might have a lot of freedom to differentiate. There are, however, some +// things to consider. +// +// The log message consists of a constant message attached to the log line. +// This should generally be a simple description of what's occurring, and should +// never be a format string. Variable information can then be attached using +// named values. +// +// Keys are arbitrary strings, but should generally be constant values. Values +// may be any Go value, but how the value is formatted is determined by the +// LogSink implementation. +// +// Logger instances are meant to be passed around by value. Code that receives +// such a value can call its methods without having to check whether the +// instance is ready for use. +// +// The zero logger (= Logger{}) is identical to Discard() and discards all log +// entries. Code that receives a Logger by value can simply call it, the methods +// will never crash. For cases where passing a logger is optional, a pointer to Logger +// should be used. +// +// # Key Naming Conventions +// +// Keys are not strictly required to conform to any specification or regex, but +// it is recommended that they: +// - be human-readable and meaningful (not auto-generated or simple ordinals) +// - be constant (not dependent on input data) +// - contain only printable characters +// - not contain whitespace or punctuation +// - use lower case for simple keys and lowerCamelCase for more complex ones +// +// These guidelines help ensure that log data is processed properly regardless +// of the log implementation. For example, log implementations will try to +// output JSON data or will store data for later database (e.g. SQL) queries. +// +// While users are generally free to use key names of their choice, it's +// generally best to avoid using the following keys, as they're frequently used +// by implementations: +// - "caller": the calling information (file/line) of a particular log line +// - "error": the underlying error value in the `Error` method +// - "level": the log level +// - "logger": the name of the associated logger +// - "msg": the log message +// - "stacktrace": the stack trace associated with a particular log line or +// error (often from the `Error` message) +// - "ts": the timestamp for a log line +// +// Implementations are encouraged to make use of these keys to represent the +// above concepts, when necessary (for example, in a pure-JSON output form, it +// would be necessary to represent at least message and timestamp as ordinary +// named values). +// +// # Break Glass +// +// Implementations may choose to give callers access to the underlying +// logging implementation. The recommended pattern for this is: +// +// // Underlier exposes access to the underlying logging implementation. +// // Since callers only have a logr.Logger, they have to know which +// // implementation is in use, so this interface is less of an abstraction +// // and more of way to test type conversion. +// type Underlier interface { +// GetUnderlying() +// } +// +// Logger grants access to the sink to enable type assertions like this: +// +// func DoSomethingWithImpl(log logr.Logger) { +// if underlier, ok := log.GetSink().(impl.Underlier); ok { +// implLogger := underlier.GetUnderlying() +// ... +// } +// } +// +// Custom `With*` functions can be implemented by copying the complete +// Logger struct and replacing the sink in the copy: +// +// // WithFooBar changes the foobar parameter in the log sink and returns a +// // new logger with that modified sink. It does nothing for loggers where +// // the sink doesn't support that parameter. +// func WithFoobar(log logr.Logger, foobar int) logr.Logger { +// if foobarLogSink, ok := log.GetSink().(FoobarSink); ok { +// log = log.WithSink(foobarLogSink.WithFooBar(foobar)) +// } +// return log +// } +// +// Don't use New to construct a new Logger with a LogSink retrieved from an +// existing Logger. Source code attribution might not work correctly and +// unexported fields in Logger get lost. +// +// Beware that the same LogSink instance may be shared by different logger +// instances. Calling functions that modify the LogSink will affect all of +// those. +package logr + +// New returns a new Logger instance. This is primarily used by libraries +// implementing LogSink, rather than end users. Passing a nil sink will create +// a Logger which discards all log lines. +func New(sink LogSink) Logger { + logger := Logger{} + logger.setSink(sink) + if sink != nil { + sink.Init(runtimeInfo) + } + return logger +} + +// setSink stores the sink and updates any related fields. It mutates the +// logger and thus is only safe to use for loggers that are not currently being +// used concurrently. +func (l *Logger) setSink(sink LogSink) { + l.sink = sink +} + +// GetSink returns the stored sink. +func (l Logger) GetSink() LogSink { + return l.sink +} + +// WithSink returns a copy of the logger with the new sink. +func (l Logger) WithSink(sink LogSink) Logger { + l.setSink(sink) + return l +} + +// Logger is an interface to an abstract logging implementation. This is a +// concrete type for performance reasons, but all the real work is passed on to +// a LogSink. Implementations of LogSink should provide their own constructors +// that return Logger, not LogSink. +// +// The underlying sink can be accessed through GetSink and be modified through +// WithSink. This enables the implementation of custom extensions (see "Break +// Glass" in the package documentation). Normally the sink should be used only +// indirectly. +type Logger struct { + sink LogSink + level int +} + +// Enabled tests whether this Logger is enabled. For example, commandline +// flags might be used to set the logging verbosity and disable some info logs. +func (l Logger) Enabled() bool { + // Some implementations of LogSink look at the caller in Enabled (e.g. + // different verbosity levels per package or file), but we only pass one + // CallDepth in (via Init). This means that all calls from Logger to the + // LogSink's Enabled, Info, and Error methods must have the same number of + // frames. In other words, Logger methods can't call other Logger methods + // which call these LogSink methods unless we do it the same in all paths. + return l.sink != nil && l.sink.Enabled(l.level) +} + +// Info logs a non-error message with the given key/value pairs as context. +// +// The msg argument should be used to add some constant description to the log +// line. The key/value pairs can then be used to add additional variable +// information. The key/value pairs must alternate string keys and arbitrary +// values. +func (l Logger) Info(msg string, keysAndValues ...any) { + if l.sink == nil { + return + } + if l.sink.Enabled(l.level) { // see comment in Enabled + if withHelper, ok := l.sink.(CallStackHelperLogSink); ok { + withHelper.GetCallStackHelper()() + } + l.sink.Info(l.level, msg, keysAndValues...) + } +} + +// Error logs an error, with the given message and key/value pairs as context. +// It functions similarly to Info, but may have unique behavior, and should be +// preferred for logging errors (see the package documentations for more +// information). The log message will always be emitted, regardless of +// verbosity level. +// +// The msg argument should be used to add context to any underlying error, +// while the err argument should be used to attach the actual error that +// triggered this log line, if present. The err parameter is optional +// and nil may be passed instead of an error instance. +func (l Logger) Error(err error, msg string, keysAndValues ...any) { + if l.sink == nil { + return + } + if withHelper, ok := l.sink.(CallStackHelperLogSink); ok { + withHelper.GetCallStackHelper()() + } + l.sink.Error(err, msg, keysAndValues...) +} + +// V returns a new Logger instance for a specific verbosity level, relative to +// this Logger. In other words, V-levels are additive. A higher verbosity +// level means a log message is less important. Negative V-levels are treated +// as 0. +func (l Logger) V(level int) Logger { + if l.sink == nil { + return l + } + if level < 0 { + level = 0 + } + l.level += level + return l +} + +// GetV returns the verbosity level of the logger. If the logger's LogSink is +// nil as in the Discard logger, this will always return 0. +func (l Logger) GetV() int { + // 0 if l.sink nil because of the if check in V above. + return l.level +} + +// WithValues returns a new Logger instance with additional key/value pairs. +// See Info for documentation on how key/value pairs work. +func (l Logger) WithValues(keysAndValues ...any) Logger { + if l.sink == nil { + return l + } + l.setSink(l.sink.WithValues(keysAndValues...)) + return l +} + +// WithName returns a new Logger instance with the specified name element added +// to the Logger's name. Successive calls with WithName append additional +// suffixes to the Logger's name. It's strongly recommended that name segments +// contain only letters, digits, and hyphens (see the package documentation for +// more information). +func (l Logger) WithName(name string) Logger { + if l.sink == nil { + return l + } + l.setSink(l.sink.WithName(name)) + return l +} + +// WithCallDepth returns a Logger instance that offsets the call stack by the +// specified number of frames when logging call site information, if possible. +// This is useful for users who have helper functions between the "real" call +// site and the actual calls to Logger methods. If depth is 0 the attribution +// should be to the direct caller of this function. If depth is 1 the +// attribution should skip 1 call frame, and so on. Successive calls to this +// are additive. +// +// If the underlying log implementation supports a WithCallDepth(int) method, +// it will be called and the result returned. If the implementation does not +// support CallDepthLogSink, the original Logger will be returned. +// +// To skip one level, WithCallStackHelper() should be used instead of +// WithCallDepth(1) because it works with implementions that support the +// CallDepthLogSink and/or CallStackHelperLogSink interfaces. +func (l Logger) WithCallDepth(depth int) Logger { + if l.sink == nil { + return l + } + if withCallDepth, ok := l.sink.(CallDepthLogSink); ok { + l.setSink(withCallDepth.WithCallDepth(depth)) + } + return l +} + +// WithCallStackHelper returns a new Logger instance that skips the direct +// caller when logging call site information, if possible. This is useful for +// users who have helper functions between the "real" call site and the actual +// calls to Logger methods and want to support loggers which depend on marking +// each individual helper function, like loggers based on testing.T. +// +// In addition to using that new logger instance, callers also must call the +// returned function. +// +// If the underlying log implementation supports a WithCallDepth(int) method, +// WithCallDepth(1) will be called to produce a new logger. If it supports a +// WithCallStackHelper() method, that will be also called. If the +// implementation does not support either of these, the original Logger will be +// returned. +func (l Logger) WithCallStackHelper() (func(), Logger) { + if l.sink == nil { + return func() {}, l + } + var helper func() + if withCallDepth, ok := l.sink.(CallDepthLogSink); ok { + l.setSink(withCallDepth.WithCallDepth(1)) + } + if withHelper, ok := l.sink.(CallStackHelperLogSink); ok { + helper = withHelper.GetCallStackHelper() + } else { + helper = func() {} + } + return helper, l +} + +// IsZero returns true if this logger is an uninitialized zero value +func (l Logger) IsZero() bool { + return l.sink == nil +} + +// RuntimeInfo holds information that the logr "core" library knows which +// LogSinks might want to know. +type RuntimeInfo struct { + // CallDepth is the number of call frames the logr library adds between the + // end-user and the LogSink. LogSink implementations which choose to print + // the original logging site (e.g. file & line) should climb this many + // additional frames to find it. + CallDepth int +} + +// runtimeInfo is a static global. It must not be changed at run time. +var runtimeInfo = RuntimeInfo{ + CallDepth: 1, +} + +// LogSink represents a logging implementation. End-users will generally not +// interact with this type. +type LogSink interface { + // Init receives optional information about the logr library for LogSink + // implementations that need it. + Init(info RuntimeInfo) + + // Enabled tests whether this LogSink is enabled at the specified V-level. + // For example, commandline flags might be used to set the logging + // verbosity and disable some info logs. + Enabled(level int) bool + + // Info logs a non-error message with the given key/value pairs as context. + // The level argument is provided for optional logging. This method will + // only be called when Enabled(level) is true. See Logger.Info for more + // details. + Info(level int, msg string, keysAndValues ...any) + + // Error logs an error, with the given message and key/value pairs as + // context. See Logger.Error for more details. + Error(err error, msg string, keysAndValues ...any) + + // WithValues returns a new LogSink with additional key/value pairs. See + // Logger.WithValues for more details. + WithValues(keysAndValues ...any) LogSink + + // WithName returns a new LogSink with the specified name appended. See + // Logger.WithName for more details. + WithName(name string) LogSink +} + +// CallDepthLogSink represents a LogSink that knows how to climb the call stack +// to identify the original call site and can offset the depth by a specified +// number of frames. This is useful for users who have helper functions +// between the "real" call site and the actual calls to Logger methods. +// Implementations that log information about the call site (such as file, +// function, or line) would otherwise log information about the intermediate +// helper functions. +// +// This is an optional interface and implementations are not required to +// support it. +type CallDepthLogSink interface { + // WithCallDepth returns a LogSink that will offset the call + // stack by the specified number of frames when logging call + // site information. + // + // If depth is 0, the LogSink should skip exactly the number + // of call frames defined in RuntimeInfo.CallDepth when Info + // or Error are called, i.e. the attribution should be to the + // direct caller of Logger.Info or Logger.Error. + // + // If depth is 1 the attribution should skip 1 call frame, and so on. + // Successive calls to this are additive. + WithCallDepth(depth int) LogSink +} + +// CallStackHelperLogSink represents a LogSink that knows how to climb +// the call stack to identify the original call site and can skip +// intermediate helper functions if they mark themselves as +// helper. Go's testing package uses that approach. +// +// This is useful for users who have helper functions between the +// "real" call site and the actual calls to Logger methods. +// Implementations that log information about the call site (such as +// file, function, or line) would otherwise log information about the +// intermediate helper functions. +// +// This is an optional interface and implementations are not required +// to support it. Implementations that choose to support this must not +// simply implement it as WithCallDepth(1), because +// Logger.WithCallStackHelper will call both methods if they are +// present. This should only be implemented for LogSinks that actually +// need it, as with testing.T. +type CallStackHelperLogSink interface { + // GetCallStackHelper returns a function that must be called + // to mark the direct caller as helper function when logging + // call site information. + GetCallStackHelper() func() +} + +// Marshaler is an optional interface that logged values may choose to +// implement. Loggers with structured output, such as JSON, should +// log the object return by the MarshalLog method instead of the +// original value. +type Marshaler interface { + // MarshalLog can be used to: + // - ensure that structs are not logged as strings when the original + // value has a String method: return a different type without a + // String method + // - select which fields of a complex type should get logged: + // return a simpler struct with fewer fields + // - log unexported fields: return a different struct + // with exported fields + // + // It may return any value of any type. + MarshalLog() any +} diff --git a/tests/vendor/github.com/go-logr/logr/sloghandler.go b/tests/vendor/github.com/go-logr/logr/sloghandler.go new file mode 100644 index 000000000..82d1ba494 --- /dev/null +++ b/tests/vendor/github.com/go-logr/logr/sloghandler.go @@ -0,0 +1,192 @@ +//go:build go1.21 +// +build go1.21 + +/* +Copyright 2023 The logr Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package logr + +import ( + "context" + "log/slog" +) + +type slogHandler struct { + // May be nil, in which case all logs get discarded. + sink LogSink + // Non-nil if sink is non-nil and implements SlogSink. + slogSink SlogSink + + // groupPrefix collects values from WithGroup calls. It gets added as + // prefix to value keys when handling a log record. + groupPrefix string + + // levelBias can be set when constructing the handler to influence the + // slog.Level of log records. A positive levelBias reduces the + // slog.Level value. slog has no API to influence this value after the + // handler got created, so it can only be set indirectly through + // Logger.V. + levelBias slog.Level +} + +var _ slog.Handler = &slogHandler{} + +// groupSeparator is used to concatenate WithGroup names and attribute keys. +const groupSeparator = "." + +// GetLevel is used for black box unit testing. +func (l *slogHandler) GetLevel() slog.Level { + return l.levelBias +} + +func (l *slogHandler) Enabled(_ context.Context, level slog.Level) bool { + return l.sink != nil && (level >= slog.LevelError || l.sink.Enabled(l.levelFromSlog(level))) +} + +func (l *slogHandler) Handle(ctx context.Context, record slog.Record) error { + if l.slogSink != nil { + // Only adjust verbosity level of log entries < slog.LevelError. + if record.Level < slog.LevelError { + record.Level -= l.levelBias + } + return l.slogSink.Handle(ctx, record) + } + + // No need to check for nil sink here because Handle will only be called + // when Enabled returned true. + + kvList := make([]any, 0, 2*record.NumAttrs()) + record.Attrs(func(attr slog.Attr) bool { + kvList = attrToKVs(attr, l.groupPrefix, kvList) + return true + }) + if record.Level >= slog.LevelError { + l.sinkWithCallDepth().Error(nil, record.Message, kvList...) + } else { + level := l.levelFromSlog(record.Level) + l.sinkWithCallDepth().Info(level, record.Message, kvList...) + } + return nil +} + +// sinkWithCallDepth adjusts the stack unwinding so that when Error or Info +// are called by Handle, code in slog gets skipped. +// +// This offset currently (Go 1.21.0) works for calls through +// slog.New(ToSlogHandler(...)). There's no guarantee that the call +// chain won't change. Wrapping the handler will also break unwinding. It's +// still better than not adjusting at all.... +// +// This cannot be done when constructing the handler because FromSlogHandler needs +// access to the original sink without this adjustment. A second copy would +// work, but then WithAttrs would have to be called for both of them. +func (l *slogHandler) sinkWithCallDepth() LogSink { + if sink, ok := l.sink.(CallDepthLogSink); ok { + return sink.WithCallDepth(2) + } + return l.sink +} + +func (l *slogHandler) WithAttrs(attrs []slog.Attr) slog.Handler { + if l.sink == nil || len(attrs) == 0 { + return l + } + + clone := *l + if l.slogSink != nil { + clone.slogSink = l.slogSink.WithAttrs(attrs) + clone.sink = clone.slogSink + } else { + kvList := make([]any, 0, 2*len(attrs)) + for _, attr := range attrs { + kvList = attrToKVs(attr, l.groupPrefix, kvList) + } + clone.sink = l.sink.WithValues(kvList...) + } + return &clone +} + +func (l *slogHandler) WithGroup(name string) slog.Handler { + if l.sink == nil { + return l + } + if name == "" { + // slog says to inline empty groups + return l + } + clone := *l + if l.slogSink != nil { + clone.slogSink = l.slogSink.WithGroup(name) + clone.sink = clone.slogSink + } else { + clone.groupPrefix = addPrefix(clone.groupPrefix, name) + } + return &clone +} + +// attrToKVs appends a slog.Attr to a logr-style kvList. It handle slog Groups +// and other details of slog. +func attrToKVs(attr slog.Attr, groupPrefix string, kvList []any) []any { + attrVal := attr.Value.Resolve() + if attrVal.Kind() == slog.KindGroup { + groupVal := attrVal.Group() + grpKVs := make([]any, 0, 2*len(groupVal)) + prefix := groupPrefix + if attr.Key != "" { + prefix = addPrefix(groupPrefix, attr.Key) + } + for _, attr := range groupVal { + grpKVs = attrToKVs(attr, prefix, grpKVs) + } + kvList = append(kvList, grpKVs...) + } else if attr.Key != "" { + kvList = append(kvList, addPrefix(groupPrefix, attr.Key), attrVal.Any()) + } + + return kvList +} + +func addPrefix(prefix, name string) string { + if prefix == "" { + return name + } + if name == "" { + return prefix + } + return prefix + groupSeparator + name +} + +// levelFromSlog adjusts the level by the logger's verbosity and negates it. +// It ensures that the result is >= 0. This is necessary because the result is +// passed to a LogSink and that API did not historically document whether +// levels could be negative or what that meant. +// +// Some example usage: +// +// logrV0 := getMyLogger() +// logrV2 := logrV0.V(2) +// slogV2 := slog.New(logr.ToSlogHandler(logrV2)) +// slogV2.Debug("msg") // =~ logrV2.V(4) =~ logrV0.V(6) +// slogV2.Info("msg") // =~ logrV2.V(0) =~ logrV0.V(2) +// slogv2.Warn("msg") // =~ logrV2.V(-4) =~ logrV0.V(0) +func (l *slogHandler) levelFromSlog(level slog.Level) int { + result := -level + result += l.levelBias // in case the original Logger had a V level + if result < 0 { + result = 0 // because LogSink doesn't expect negative V levels + } + return int(result) +} diff --git a/tests/vendor/github.com/go-logr/logr/slogr.go b/tests/vendor/github.com/go-logr/logr/slogr.go new file mode 100644 index 000000000..28a83d024 --- /dev/null +++ b/tests/vendor/github.com/go-logr/logr/slogr.go @@ -0,0 +1,100 @@ +//go:build go1.21 +// +build go1.21 + +/* +Copyright 2023 The logr Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package logr + +import ( + "context" + "log/slog" +) + +// FromSlogHandler returns a Logger which writes to the slog.Handler. +// +// The logr verbosity level is mapped to slog levels such that V(0) becomes +// slog.LevelInfo and V(4) becomes slog.LevelDebug. +func FromSlogHandler(handler slog.Handler) Logger { + if handler, ok := handler.(*slogHandler); ok { + if handler.sink == nil { + return Discard() + } + return New(handler.sink).V(int(handler.levelBias)) + } + return New(&slogSink{handler: handler}) +} + +// ToSlogHandler returns a slog.Handler which writes to the same sink as the Logger. +// +// The returned logger writes all records with level >= slog.LevelError as +// error log entries with LogSink.Error, regardless of the verbosity level of +// the Logger: +// +// logger := +// slog.New(ToSlogHandler(logger.V(10))).Error(...) -> logSink.Error(...) +// +// The level of all other records gets reduced by the verbosity +// level of the Logger and the result is negated. If it happens +// to be negative, then it gets replaced by zero because a LogSink +// is not expected to handled negative levels: +// +// slog.New(ToSlogHandler(logger)).Debug(...) -> logger.GetSink().Info(level=4, ...) +// slog.New(ToSlogHandler(logger)).Warning(...) -> logger.GetSink().Info(level=0, ...) +// slog.New(ToSlogHandler(logger)).Info(...) -> logger.GetSink().Info(level=0, ...) +// slog.New(ToSlogHandler(logger.V(4))).Info(...) -> logger.GetSink().Info(level=4, ...) +func ToSlogHandler(logger Logger) slog.Handler { + if sink, ok := logger.GetSink().(*slogSink); ok && logger.GetV() == 0 { + return sink.handler + } + + handler := &slogHandler{sink: logger.GetSink(), levelBias: slog.Level(logger.GetV())} + if slogSink, ok := handler.sink.(SlogSink); ok { + handler.slogSink = slogSink + } + return handler +} + +// SlogSink is an optional interface that a LogSink can implement to support +// logging through the slog.Logger or slog.Handler APIs better. It then should +// also support special slog values like slog.Group. When used as a +// slog.Handler, the advantages are: +// +// - stack unwinding gets avoided in favor of logging the pre-recorded PC, +// as intended by slog +// - proper grouping of key/value pairs via WithGroup +// - verbosity levels > slog.LevelInfo can be recorded +// - less overhead +// +// Both APIs (Logger and slog.Logger/Handler) then are supported equally +// well. Developers can pick whatever API suits them better and/or mix +// packages which use either API in the same binary with a common logging +// implementation. +// +// This interface is necessary because the type implementing the LogSink +// interface cannot also implement the slog.Handler interface due to the +// different prototype of the common Enabled method. +// +// An implementation could support both interfaces in two different types, but then +// additional interfaces would be needed to convert between those types in FromSlogHandler +// and ToSlogHandler. +type SlogSink interface { + LogSink + + Handle(ctx context.Context, record slog.Record) error + WithAttrs(attrs []slog.Attr) SlogSink + WithGroup(name string) SlogSink +} diff --git a/tests/vendor/github.com/go-logr/logr/slogsink.go b/tests/vendor/github.com/go-logr/logr/slogsink.go new file mode 100644 index 000000000..4060fcbc2 --- /dev/null +++ b/tests/vendor/github.com/go-logr/logr/slogsink.go @@ -0,0 +1,120 @@ +//go:build go1.21 +// +build go1.21 + +/* +Copyright 2023 The logr Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package logr + +import ( + "context" + "log/slog" + "runtime" + "time" +) + +var ( + _ LogSink = &slogSink{} + _ CallDepthLogSink = &slogSink{} + _ Underlier = &slogSink{} +) + +// Underlier is implemented by the LogSink returned by NewFromLogHandler. +type Underlier interface { + // GetUnderlying returns the Handler used by the LogSink. + GetUnderlying() slog.Handler +} + +const ( + // nameKey is used to log the `WithName` values as an additional attribute. + nameKey = "logger" + + // errKey is used to log the error parameter of Error as an additional attribute. + errKey = "err" +) + +type slogSink struct { + callDepth int + name string + handler slog.Handler +} + +func (l *slogSink) Init(info RuntimeInfo) { + l.callDepth = info.CallDepth +} + +func (l *slogSink) GetUnderlying() slog.Handler { + return l.handler +} + +func (l *slogSink) WithCallDepth(depth int) LogSink { + newLogger := *l + newLogger.callDepth += depth + return &newLogger +} + +func (l *slogSink) Enabled(level int) bool { + return l.handler.Enabled(context.Background(), slog.Level(-level)) +} + +func (l *slogSink) Info(level int, msg string, kvList ...interface{}) { + l.log(nil, msg, slog.Level(-level), kvList...) +} + +func (l *slogSink) Error(err error, msg string, kvList ...interface{}) { + l.log(err, msg, slog.LevelError, kvList...) +} + +func (l *slogSink) log(err error, msg string, level slog.Level, kvList ...interface{}) { + var pcs [1]uintptr + // skip runtime.Callers, this function, Info/Error, and all helper functions above that. + runtime.Callers(3+l.callDepth, pcs[:]) + + record := slog.NewRecord(time.Now(), level, msg, pcs[0]) + if l.name != "" { + record.AddAttrs(slog.String(nameKey, l.name)) + } + if err != nil { + record.AddAttrs(slog.Any(errKey, err)) + } + record.Add(kvList...) + _ = l.handler.Handle(context.Background(), record) +} + +func (l slogSink) WithName(name string) LogSink { + if l.name != "" { + l.name += "/" + } + l.name += name + return &l +} + +func (l slogSink) WithValues(kvList ...interface{}) LogSink { + l.handler = l.handler.WithAttrs(kvListToAttrs(kvList...)) + return &l +} + +func kvListToAttrs(kvList ...interface{}) []slog.Attr { + // We don't need the record itself, only its Add method. + record := slog.NewRecord(time.Time{}, 0, "", 0) + record.Add(kvList...) + attrs := make([]slog.Attr, 0, record.NumAttrs()) + record.Attrs(func(attr slog.Attr) bool { + attrs = append(attrs, attr) + return true + }) + return attrs +} diff --git a/tests/vendor/github.com/go-task/slim-sprig/v3/.editorconfig b/tests/vendor/github.com/go-task/slim-sprig/v3/.editorconfig new file mode 100644 index 000000000..b0c95367e --- /dev/null +++ b/tests/vendor/github.com/go-task/slim-sprig/v3/.editorconfig @@ -0,0 +1,14 @@ +# editorconfig.org + +root = true + +[*] +insert_final_newline = true +charset = utf-8 +trim_trailing_whitespace = true +indent_style = tab +indent_size = 8 + +[*.{md,yml,yaml,json}] +indent_style = space +indent_size = 2 diff --git a/tests/vendor/github.com/go-task/slim-sprig/v3/.gitattributes b/tests/vendor/github.com/go-task/slim-sprig/v3/.gitattributes new file mode 100644 index 000000000..176a458f9 --- /dev/null +++ b/tests/vendor/github.com/go-task/slim-sprig/v3/.gitattributes @@ -0,0 +1 @@ +* text=auto diff --git a/tests/vendor/github.com/go-task/slim-sprig/v3/.gitignore b/tests/vendor/github.com/go-task/slim-sprig/v3/.gitignore new file mode 100644 index 000000000..5e3002f88 --- /dev/null +++ b/tests/vendor/github.com/go-task/slim-sprig/v3/.gitignore @@ -0,0 +1,2 @@ +vendor/ +/.glide diff --git a/tests/vendor/github.com/go-task/slim-sprig/v3/CHANGELOG.md b/tests/vendor/github.com/go-task/slim-sprig/v3/CHANGELOG.md new file mode 100644 index 000000000..2ce45dd4e --- /dev/null +++ b/tests/vendor/github.com/go-task/slim-sprig/v3/CHANGELOG.md @@ -0,0 +1,383 @@ +# Changelog + +## Release 3.2.3 (2022-11-29) + +### Changed + +- Updated docs (thanks @book987 @aJetHorn @neelayu @pellizzetti @apricote @SaigyoujiYuyuko233 @AlekSi) +- #348: Updated huandu/xstrings which fixed a snake case bug (thanks @yxxhero) +- #353: Updated masterminds/semver which included bug fixes +- #354: Updated golang.org/x/crypto which included bug fixes + +## Release 3.2.2 (2021-02-04) + +This is a re-release of 3.2.1 to satisfy something with the Go module system. + +## Release 3.2.1 (2021-02-04) + +### Changed + +- Upgraded `Masterminds/goutils` to `v1.1.1`. see the [Security Advisory](https://github.com/Masterminds/goutils/security/advisories/GHSA-xg2h-wx96-xgxr) + +## Release 3.2.0 (2020-12-14) + +### Added + +- #211: Added randInt function (thanks @kochurovro) +- #223: Added fromJson and mustFromJson functions (thanks @mholt) +- #242: Added a bcrypt function (thanks @robbiet480) +- #253: Added randBytes function (thanks @MikaelSmith) +- #254: Added dig function for dicts (thanks @nyarly) +- #257: Added regexQuoteMeta for quoting regex metadata (thanks @rheaton) +- #261: Added filepath functions osBase, osDir, osExt, osClean, osIsAbs (thanks @zugl) +- #268: Added and and all functions for testing conditions (thanks @phuslu) +- #181: Added float64 arithmetic addf, add1f, subf, divf, mulf, maxf, and minf + (thanks @andrewmostello) +- #265: Added chunk function to split array into smaller arrays (thanks @karelbilek) +- #270: Extend certificate functions to handle non-RSA keys + add support for + ed25519 keys (thanks @misberner) + +### Changed + +- Removed testing and support for Go 1.12. ed25519 support requires Go 1.13 or newer +- Using semver 3.1.1 and mergo 0.3.11 + +### Fixed + +- #249: Fix htmlDateInZone example (thanks @spawnia) + +NOTE: The dependency github.com/imdario/mergo reverted the breaking change in +0.3.9 via 0.3.10 release. + +## Release 3.1.0 (2020-04-16) + +NOTE: The dependency github.com/imdario/mergo made a behavior change in 0.3.9 +that impacts sprig functionality. Do not use sprig with a version newer than 0.3.8. + +### Added + +- #225: Added support for generating htpasswd hash (thanks @rustycl0ck) +- #224: Added duration filter (thanks @frebib) +- #205: Added `seq` function (thanks @thadc23) + +### Changed + +- #203: Unlambda functions with correct signature (thanks @muesli) +- #236: Updated the license formatting for GitHub display purposes +- #238: Updated package dependency versions. Note, mergo not updated to 0.3.9 + as it causes a breaking change for sprig. That issue is tracked at + https://github.com/imdario/mergo/issues/139 + +### Fixed + +- #229: Fix `seq` example in docs (thanks @kalmant) + +## Release 3.0.2 (2019-12-13) + +### Fixed + +- #220: Updating to semver v3.0.3 to fix issue with <= ranges +- #218: fix typo elyptical->elliptic in ecdsa key description (thanks @laverya) + +## Release 3.0.1 (2019-12-08) + +### Fixed + +- #212: Updated semver fixing broken constraint checking with ^0.0 + +## Release 3.0.0 (2019-10-02) + +### Added + +- #187: Added durationRound function (thanks @yjp20) +- #189: Added numerous template functions that return errors rather than panic (thanks @nrvnrvn) +- #193: Added toRawJson support (thanks @Dean-Coakley) +- #197: Added get support to dicts (thanks @Dean-Coakley) + +### Changed + +- #186: Moving dependency management to Go modules +- #186: Updated semver to v3. This has changes in the way ^ is handled +- #194: Updated documentation on merging and how it copies. Added example using deepCopy +- #196: trunc now supports negative values (thanks @Dean-Coakley) + +## Release 2.22.0 (2019-10-02) + +### Added + +- #173: Added getHostByName function to resolve dns names to ips (thanks @fcgravalos) +- #195: Added deepCopy function for use with dicts + +### Changed + +- Updated merge and mergeOverwrite documentation to explain copying and how to + use deepCopy with it + +## Release 2.21.0 (2019-09-18) + +### Added + +- #122: Added encryptAES/decryptAES functions (thanks @n0madic) +- #128: Added toDecimal support (thanks @Dean-Coakley) +- #169: Added list contcat (thanks @astorath) +- #174: Added deepEqual function (thanks @bonifaido) +- #170: Added url parse and join functions (thanks @astorath) + +### Changed + +- #171: Updated glide config for Google UUID to v1 and to add ranges to semver and testify + +### Fixed + +- #172: Fix semver wildcard example (thanks @piepmatz) +- #175: Fix dateInZone doc example (thanks @s3than) + +## Release 2.20.0 (2019-06-18) + +### Added + +- #164: Adding function to get unix epoch for a time (@mattfarina) +- #166: Adding tests for date_in_zone (@mattfarina) + +### Changed + +- #144: Fix function comments based on best practices from Effective Go (@CodeLingoTeam) +- #150: Handles pointer type for time.Time in "htmlDate" (@mapreal19) +- #161, #157, #160, #153, #158, #156, #155, #159, #152 documentation updates (@badeadan) + +### Fixed + +## Release 2.19.0 (2019-03-02) + +IMPORTANT: This release reverts a change from 2.18.0 + +In the previous release (2.18), we prematurely merged a partial change to the crypto functions that led to creating two sets of crypto functions (I blame @technosophos -- since that's me). This release rolls back that change, and does what was originally intended: It alters the existing crypto functions to use secure random. + +We debated whether this classifies as a change worthy of major revision, but given the proximity to the last release, we have decided that treating 2.18 as a faulty release is the correct course of action. We apologize for any inconvenience. + +### Changed + +- Fix substr panic 35fb796 (Alexey igrychev) +- Remove extra period 1eb7729 (Matthew Lorimor) +- Make random string functions use crypto by default 6ceff26 (Matthew Lorimor) +- README edits/fixes/suggestions 08fe136 (Lauri Apple) + + +## Release 2.18.0 (2019-02-12) + +### Added + +- Added mergeOverwrite function +- cryptographic functions that use secure random (see fe1de12) + +### Changed + +- Improve documentation of regexMatch function, resolves #139 90b89ce (Jan Tagscherer) +- Handle has for nil list 9c10885 (Daniel Cohen) +- Document behaviour of mergeOverwrite fe0dbe9 (Lukas Rieder) +- doc: adds missing documentation. 4b871e6 (Fernandez Ludovic) +- Replace outdated goutils imports 01893d2 (Matthew Lorimor) +- Surface crypto secure random strings from goutils fe1de12 (Matthew Lorimor) +- Handle untyped nil values as paramters to string functions 2b2ec8f (Morten Torkildsen) + +### Fixed + +- Fix dict merge issue and provide mergeOverwrite .dst .src1 to overwrite from src -> dst 4c59c12 (Lukas Rieder) +- Fix substr var names and comments d581f80 (Dean Coakley) +- Fix substr documentation 2737203 (Dean Coakley) + +## Release 2.17.1 (2019-01-03) + +### Fixed + +The 2.17.0 release did not have a version pinned for xstrings, which caused compilation failures when xstrings < 1.2 was used. This adds the correct version string to glide.yaml. + +## Release 2.17.0 (2019-01-03) + +### Added + +- adds alder32sum function and test 6908fc2 (marshallford) +- Added kebabcase function ca331a1 (Ilyes512) + +### Changed + +- Update goutils to 1.1.0 4e1125d (Matt Butcher) + +### Fixed + +- Fix 'has' documentation e3f2a85 (dean-coakley) +- docs(dict): fix typo in pick example dc424f9 (Dustin Specker) +- fixes spelling errors... not sure how that happened 4cf188a (marshallford) + +## Release 2.16.0 (2018-08-13) + +### Added + +- add splitn function fccb0b0 (Helgi Þorbjörnsson) +- Add slice func df28ca7 (gongdo) +- Generate serial number a3bdffd (Cody Coons) +- Extract values of dict with values function df39312 (Lawrence Jones) + +### Changed + +- Modify panic message for list.slice ae38335 (gongdo) +- Minor improvement in code quality - Removed an unreachable piece of code at defaults.go#L26:6 - Resolve formatting issues. 5834241 (Abhishek Kashyap) +- Remove duplicated documentation 1d97af1 (Matthew Fisher) +- Test on go 1.11 49df809 (Helgi Þormar Þorbjörnsson) + +### Fixed + +- Fix file permissions c5f40b5 (gongdo) +- Fix example for buildCustomCert 7779e0d (Tin Lam) + +## Release 2.15.0 (2018-04-02) + +### Added + +- #68 and #69: Add json helpers to docs (thanks @arunvelsriram) +- #66: Add ternary function (thanks @binoculars) +- #67: Allow keys function to take multiple dicts (thanks @binoculars) +- #89: Added sha1sum to crypto function (thanks @benkeil) +- #81: Allow customizing Root CA that used by genSignedCert (thanks @chenzhiwei) +- #92: Add travis testing for go 1.10 +- #93: Adding appveyor config for windows testing + +### Changed + +- #90: Updating to more recent dependencies +- #73: replace satori/go.uuid with google/uuid (thanks @petterw) + +### Fixed + +- #76: Fixed documentation typos (thanks @Thiht) +- Fixed rounding issue on the `ago` function. Note, the removes support for Go 1.8 and older + +## Release 2.14.1 (2017-12-01) + +### Fixed + +- #60: Fix typo in function name documentation (thanks @neil-ca-moore) +- #61: Removing line with {{ due to blocking github pages genertion +- #64: Update the list functions to handle int, string, and other slices for compatibility + +## Release 2.14.0 (2017-10-06) + +This new version of Sprig adds a set of functions for generating and working with SSL certificates. + +- `genCA` generates an SSL Certificate Authority +- `genSelfSignedCert` generates an SSL self-signed certificate +- `genSignedCert` generates an SSL certificate and key based on a given CA + +## Release 2.13.0 (2017-09-18) + +This release adds new functions, including: + +- `regexMatch`, `regexFindAll`, `regexFind`, `regexReplaceAll`, `regexReplaceAllLiteral`, and `regexSplit` to work with regular expressions +- `floor`, `ceil`, and `round` math functions +- `toDate` converts a string to a date +- `nindent` is just like `indent` but also prepends a new line +- `ago` returns the time from `time.Now` + +### Added + +- #40: Added basic regex functionality (thanks @alanquillin) +- #41: Added ceil floor and round functions (thanks @alanquillin) +- #48: Added toDate function (thanks @andreynering) +- #50: Added nindent function (thanks @binoculars) +- #46: Added ago function (thanks @slayer) + +### Changed + +- #51: Updated godocs to include new string functions (thanks @curtisallen) +- #49: Added ability to merge multiple dicts (thanks @binoculars) + +## Release 2.12.0 (2017-05-17) + +- `snakecase`, `camelcase`, and `shuffle` are three new string functions +- `fail` allows you to bail out of a template render when conditions are not met + +## Release 2.11.0 (2017-05-02) + +- Added `toJson` and `toPrettyJson` +- Added `merge` +- Refactored documentation + +## Release 2.10.0 (2017-03-15) + +- Added `semver` and `semverCompare` for Semantic Versions +- `list` replaces `tuple` +- Fixed issue with `join` +- Added `first`, `last`, `intial`, `rest`, `prepend`, `append`, `toString`, `toStrings`, `sortAlpha`, `reverse`, `coalesce`, `pluck`, `pick`, `compact`, `keys`, `omit`, `uniq`, `has`, `without` + +## Release 2.9.0 (2017-02-23) + +- Added `splitList` to split a list +- Added crypto functions of `genPrivateKey` and `derivePassword` + +## Release 2.8.0 (2016-12-21) + +- Added access to several path functions (`base`, `dir`, `clean`, `ext`, and `abs`) +- Added functions for _mutating_ dictionaries (`set`, `unset`, `hasKey`) + +## Release 2.7.0 (2016-12-01) + +- Added `sha256sum` to generate a hash of an input +- Added functions to convert a numeric or string to `int`, `int64`, `float64` + +## Release 2.6.0 (2016-10-03) + +- Added a `uuidv4` template function for generating UUIDs inside of a template. + +## Release 2.5.0 (2016-08-19) + +- New `trimSuffix`, `trimPrefix`, `hasSuffix`, and `hasPrefix` functions +- New aliases have been added for a few functions that didn't follow the naming conventions (`trimAll` and `abbrevBoth`) +- `trimall` and `abbrevboth` (notice the case) are deprecated and will be removed in 3.0.0 + +## Release 2.4.0 (2016-08-16) + +- Adds two functions: `until` and `untilStep` + +## Release 2.3.0 (2016-06-21) + +- cat: Concatenate strings with whitespace separators. +- replace: Replace parts of a string: `replace " " "-" "Me First"` renders "Me-First" +- plural: Format plurals: `len "foo" | plural "one foo" "many foos"` renders "many foos" +- indent: Indent blocks of text in a way that is sensitive to "\n" characters. + +## Release 2.2.0 (2016-04-21) + +- Added a `genPrivateKey` function (Thanks @bacongobbler) + +## Release 2.1.0 (2016-03-30) + +- `default` now prints the default value when it does not receive a value down the pipeline. It is much safer now to do `{{.Foo | default "bar"}}`. +- Added accessors for "hermetic" functions. These return only functions that, when given the same input, produce the same output. + +## Release 2.0.0 (2016-03-29) + +Because we switched from `int` to `int64` as the return value for all integer math functions, the library's major version number has been incremented. + +- `min` complements `max` (formerly `biggest`) +- `empty` indicates that a value is the empty value for its type +- `tuple` creates a tuple inside of a template: `{{$t := tuple "a", "b" "c"}}` +- `dict` creates a dictionary inside of a template `{{$d := dict "key1" "val1" "key2" "val2"}}` +- Date formatters have been added for HTML dates (as used in `date` input fields) +- Integer math functions can convert from a number of types, including `string` (via `strconv.ParseInt`). + +## Release 1.2.0 (2016-02-01) + +- Added quote and squote +- Added b32enc and b32dec +- add now takes varargs +- biggest now takes varargs + +## Release 1.1.0 (2015-12-29) + +- Added #4: Added contains function. strings.Contains, but with the arguments + switched to simplify common pipelines. (thanks krancour) +- Added Travis-CI testing support + +## Release 1.0.0 (2015-12-23) + +- Initial release diff --git a/tests/vendor/github.com/go-task/slim-sprig/v3/LICENSE.txt b/tests/vendor/github.com/go-task/slim-sprig/v3/LICENSE.txt new file mode 100644 index 000000000..f311b1eaa --- /dev/null +++ b/tests/vendor/github.com/go-task/slim-sprig/v3/LICENSE.txt @@ -0,0 +1,19 @@ +Copyright (C) 2013-2020 Masterminds + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/tests/vendor/github.com/go-task/slim-sprig/v3/README.md b/tests/vendor/github.com/go-task/slim-sprig/v3/README.md new file mode 100644 index 000000000..b5ab56425 --- /dev/null +++ b/tests/vendor/github.com/go-task/slim-sprig/v3/README.md @@ -0,0 +1,73 @@ +# Slim-Sprig: Template functions for Go templates [![Go Reference](https://pkg.go.dev/badge/github.com/go-task/slim-sprig/v3.svg)](https://pkg.go.dev/github.com/go-task/slim-sprig/v3) + +Slim-Sprig is a fork of [Sprig](https://github.com/Masterminds/sprig), but with +all functions that depend on external (non standard library) or crypto packages +removed. +The reason for this is to make this library more lightweight. Most of these +functions (specially crypto ones) are not needed on most apps, but costs a lot +in terms of binary size and compilation time. + +## Usage + +**Template developers**: Please use Slim-Sprig's [function documentation](https://go-task.github.io/slim-sprig/) for +detailed instructions and code snippets for the >100 template functions available. + +**Go developers**: If you'd like to include Slim-Sprig as a library in your program, +our API documentation is available [at GoDoc.org](http://godoc.org/github.com/go-task/slim-sprig). + +For standard usage, read on. + +### Load the Slim-Sprig library + +To load the Slim-Sprig `FuncMap`: + +```go + +import ( + "html/template" + + "github.com/go-task/slim-sprig" +) + +// This example illustrates that the FuncMap *must* be set before the +// templates themselves are loaded. +tpl := template.Must( + template.New("base").Funcs(sprig.FuncMap()).ParseGlob("*.html") +) +``` + +### Calling the functions inside of templates + +By convention, all functions are lowercase. This seems to follow the Go +idiom for template functions (as opposed to template methods, which are +TitleCase). For example, this: + +``` +{{ "hello!" | upper | repeat 5 }} +``` + +produces this: + +``` +HELLO!HELLO!HELLO!HELLO!HELLO! +``` + +## Principles Driving Our Function Selection + +We followed these principles to decide which functions to add and how to implement them: + +- Use template functions to build layout. The following + types of operations are within the domain of template functions: + - Formatting + - Layout + - Simple type conversions + - Utilities that assist in handling common formatting and layout needs (e.g. arithmetic) +- Template functions should not return errors unless there is no way to print + a sensible value. For example, converting a string to an integer should not + produce an error if conversion fails. Instead, it should display a default + value. +- Simple math is necessary for grid layouts, pagers, and so on. Complex math + (anything other than arithmetic) should be done outside of templates. +- Template functions only deal with the data passed into them. They never retrieve + data from a source. +- Finally, do not override core Go template functions. diff --git a/tests/vendor/github.com/go-task/slim-sprig/v3/Taskfile.yml b/tests/vendor/github.com/go-task/slim-sprig/v3/Taskfile.yml new file mode 100644 index 000000000..8e6346bb1 --- /dev/null +++ b/tests/vendor/github.com/go-task/slim-sprig/v3/Taskfile.yml @@ -0,0 +1,12 @@ +# https://taskfile.dev + +version: '3' + +tasks: + default: + cmds: + - task: test + + test: + cmds: + - go test -v . diff --git a/tests/vendor/github.com/go-task/slim-sprig/v3/crypto.go b/tests/vendor/github.com/go-task/slim-sprig/v3/crypto.go new file mode 100644 index 000000000..d06e516d4 --- /dev/null +++ b/tests/vendor/github.com/go-task/slim-sprig/v3/crypto.go @@ -0,0 +1,24 @@ +package sprig + +import ( + "crypto/sha1" + "crypto/sha256" + "encoding/hex" + "fmt" + "hash/adler32" +) + +func sha256sum(input string) string { + hash := sha256.Sum256([]byte(input)) + return hex.EncodeToString(hash[:]) +} + +func sha1sum(input string) string { + hash := sha1.Sum([]byte(input)) + return hex.EncodeToString(hash[:]) +} + +func adler32sum(input string) string { + hash := adler32.Checksum([]byte(input)) + return fmt.Sprintf("%d", hash) +} diff --git a/tests/vendor/github.com/go-task/slim-sprig/v3/date.go b/tests/vendor/github.com/go-task/slim-sprig/v3/date.go new file mode 100644 index 000000000..ed022ddac --- /dev/null +++ b/tests/vendor/github.com/go-task/slim-sprig/v3/date.go @@ -0,0 +1,152 @@ +package sprig + +import ( + "strconv" + "time" +) + +// Given a format and a date, format the date string. +// +// Date can be a `time.Time` or an `int, int32, int64`. +// In the later case, it is treated as seconds since UNIX +// epoch. +func date(fmt string, date interface{}) string { + return dateInZone(fmt, date, "Local") +} + +func htmlDate(date interface{}) string { + return dateInZone("2006-01-02", date, "Local") +} + +func htmlDateInZone(date interface{}, zone string) string { + return dateInZone("2006-01-02", date, zone) +} + +func dateInZone(fmt string, date interface{}, zone string) string { + var t time.Time + switch date := date.(type) { + default: + t = time.Now() + case time.Time: + t = date + case *time.Time: + t = *date + case int64: + t = time.Unix(date, 0) + case int: + t = time.Unix(int64(date), 0) + case int32: + t = time.Unix(int64(date), 0) + } + + loc, err := time.LoadLocation(zone) + if err != nil { + loc, _ = time.LoadLocation("UTC") + } + + return t.In(loc).Format(fmt) +} + +func dateModify(fmt string, date time.Time) time.Time { + d, err := time.ParseDuration(fmt) + if err != nil { + return date + } + return date.Add(d) +} + +func mustDateModify(fmt string, date time.Time) (time.Time, error) { + d, err := time.ParseDuration(fmt) + if err != nil { + return time.Time{}, err + } + return date.Add(d), nil +} + +func dateAgo(date interface{}) string { + var t time.Time + + switch date := date.(type) { + default: + t = time.Now() + case time.Time: + t = date + case int64: + t = time.Unix(date, 0) + case int: + t = time.Unix(int64(date), 0) + } + // Drop resolution to seconds + duration := time.Since(t).Round(time.Second) + return duration.String() +} + +func duration(sec interface{}) string { + var n int64 + switch value := sec.(type) { + default: + n = 0 + case string: + n, _ = strconv.ParseInt(value, 10, 64) + case int64: + n = value + } + return (time.Duration(n) * time.Second).String() +} + +func durationRound(duration interface{}) string { + var d time.Duration + switch duration := duration.(type) { + default: + d = 0 + case string: + d, _ = time.ParseDuration(duration) + case int64: + d = time.Duration(duration) + case time.Time: + d = time.Since(duration) + } + + u := uint64(d) + neg := d < 0 + if neg { + u = -u + } + + var ( + year = uint64(time.Hour) * 24 * 365 + month = uint64(time.Hour) * 24 * 30 + day = uint64(time.Hour) * 24 + hour = uint64(time.Hour) + minute = uint64(time.Minute) + second = uint64(time.Second) + ) + switch { + case u > year: + return strconv.FormatUint(u/year, 10) + "y" + case u > month: + return strconv.FormatUint(u/month, 10) + "mo" + case u > day: + return strconv.FormatUint(u/day, 10) + "d" + case u > hour: + return strconv.FormatUint(u/hour, 10) + "h" + case u > minute: + return strconv.FormatUint(u/minute, 10) + "m" + case u > second: + return strconv.FormatUint(u/second, 10) + "s" + } + return "0s" +} + +func toDate(fmt, str string) time.Time { + t, _ := time.ParseInLocation(fmt, str, time.Local) + return t +} + +func mustToDate(fmt, str string) (time.Time, error) { + return time.ParseInLocation(fmt, str, time.Local) +} + +func unixEpoch(date time.Time) string { + return strconv.FormatInt(date.Unix(), 10) +} diff --git a/tests/vendor/github.com/go-task/slim-sprig/v3/defaults.go b/tests/vendor/github.com/go-task/slim-sprig/v3/defaults.go new file mode 100644 index 000000000..b9f979666 --- /dev/null +++ b/tests/vendor/github.com/go-task/slim-sprig/v3/defaults.go @@ -0,0 +1,163 @@ +package sprig + +import ( + "bytes" + "encoding/json" + "math/rand" + "reflect" + "strings" + "time" +) + +func init() { + rand.Seed(time.Now().UnixNano()) +} + +// dfault checks whether `given` is set, and returns default if not set. +// +// This returns `d` if `given` appears not to be set, and `given` otherwise. +// +// For numeric types 0 is unset. +// For strings, maps, arrays, and slices, len() = 0 is considered unset. +// For bool, false is unset. +// Structs are never considered unset. +// +// For everything else, including pointers, a nil value is unset. +func dfault(d interface{}, given ...interface{}) interface{} { + + if empty(given) || empty(given[0]) { + return d + } + return given[0] +} + +// empty returns true if the given value has the zero value for its type. +func empty(given interface{}) bool { + g := reflect.ValueOf(given) + if !g.IsValid() { + return true + } + + // Basically adapted from text/template.isTrue + switch g.Kind() { + default: + return g.IsNil() + case reflect.Array, reflect.Slice, reflect.Map, reflect.String: + return g.Len() == 0 + case reflect.Bool: + return !g.Bool() + case reflect.Complex64, reflect.Complex128: + return g.Complex() == 0 + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return g.Int() == 0 + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return g.Uint() == 0 + case reflect.Float32, reflect.Float64: + return g.Float() == 0 + case reflect.Struct: + return false + } +} + +// coalesce returns the first non-empty value. +func coalesce(v ...interface{}) interface{} { + for _, val := range v { + if !empty(val) { + return val + } + } + return nil +} + +// all returns true if empty(x) is false for all values x in the list. +// If the list is empty, return true. +func all(v ...interface{}) bool { + for _, val := range v { + if empty(val) { + return false + } + } + return true +} + +// any returns true if empty(x) is false for any x in the list. +// If the list is empty, return false. +func any(v ...interface{}) bool { + for _, val := range v { + if !empty(val) { + return true + } + } + return false +} + +// fromJson decodes JSON into a structured value, ignoring errors. +func fromJson(v string) interface{} { + output, _ := mustFromJson(v) + return output +} + +// mustFromJson decodes JSON into a structured value, returning errors. +func mustFromJson(v string) (interface{}, error) { + var output interface{} + err := json.Unmarshal([]byte(v), &output) + return output, err +} + +// toJson encodes an item into a JSON string +func toJson(v interface{}) string { + output, _ := json.Marshal(v) + return string(output) +} + +func mustToJson(v interface{}) (string, error) { + output, err := json.Marshal(v) + if err != nil { + return "", err + } + return string(output), nil +} + +// toPrettyJson encodes an item into a pretty (indented) JSON string +func toPrettyJson(v interface{}) string { + output, _ := json.MarshalIndent(v, "", " ") + return string(output) +} + +func mustToPrettyJson(v interface{}) (string, error) { + output, err := json.MarshalIndent(v, "", " ") + if err != nil { + return "", err + } + return string(output), nil +} + +// toRawJson encodes an item into a JSON string with no escaping of HTML characters. +func toRawJson(v interface{}) string { + output, err := mustToRawJson(v) + if err != nil { + panic(err) + } + return string(output) +} + +// mustToRawJson encodes an item into a JSON string with no escaping of HTML characters. +func mustToRawJson(v interface{}) (string, error) { + buf := new(bytes.Buffer) + enc := json.NewEncoder(buf) + enc.SetEscapeHTML(false) + err := enc.Encode(&v) + if err != nil { + return "", err + } + return strings.TrimSuffix(buf.String(), "\n"), nil +} + +// ternary returns the first value if the last value is true, otherwise returns the second value. +func ternary(vt interface{}, vf interface{}, v bool) interface{} { + if v { + return vt + } + + return vf +} diff --git a/tests/vendor/github.com/go-task/slim-sprig/v3/dict.go b/tests/vendor/github.com/go-task/slim-sprig/v3/dict.go new file mode 100644 index 000000000..77ebc61b1 --- /dev/null +++ b/tests/vendor/github.com/go-task/slim-sprig/v3/dict.go @@ -0,0 +1,118 @@ +package sprig + +func get(d map[string]interface{}, key string) interface{} { + if val, ok := d[key]; ok { + return val + } + return "" +} + +func set(d map[string]interface{}, key string, value interface{}) map[string]interface{} { + d[key] = value + return d +} + +func unset(d map[string]interface{}, key string) map[string]interface{} { + delete(d, key) + return d +} + +func hasKey(d map[string]interface{}, key string) bool { + _, ok := d[key] + return ok +} + +func pluck(key string, d ...map[string]interface{}) []interface{} { + res := []interface{}{} + for _, dict := range d { + if val, ok := dict[key]; ok { + res = append(res, val) + } + } + return res +} + +func keys(dicts ...map[string]interface{}) []string { + k := []string{} + for _, dict := range dicts { + for key := range dict { + k = append(k, key) + } + } + return k +} + +func pick(dict map[string]interface{}, keys ...string) map[string]interface{} { + res := map[string]interface{}{} + for _, k := range keys { + if v, ok := dict[k]; ok { + res[k] = v + } + } + return res +} + +func omit(dict map[string]interface{}, keys ...string) map[string]interface{} { + res := map[string]interface{}{} + + omit := make(map[string]bool, len(keys)) + for _, k := range keys { + omit[k] = true + } + + for k, v := range dict { + if _, ok := omit[k]; !ok { + res[k] = v + } + } + return res +} + +func dict(v ...interface{}) map[string]interface{} { + dict := map[string]interface{}{} + lenv := len(v) + for i := 0; i < lenv; i += 2 { + key := strval(v[i]) + if i+1 >= lenv { + dict[key] = "" + continue + } + dict[key] = v[i+1] + } + return dict +} + +func values(dict map[string]interface{}) []interface{} { + values := []interface{}{} + for _, value := range dict { + values = append(values, value) + } + + return values +} + +func dig(ps ...interface{}) (interface{}, error) { + if len(ps) < 3 { + panic("dig needs at least three arguments") + } + dict := ps[len(ps)-1].(map[string]interface{}) + def := ps[len(ps)-2] + ks := make([]string, len(ps)-2) + for i := 0; i < len(ks); i++ { + ks[i] = ps[i].(string) + } + + return digFromDict(dict, def, ks) +} + +func digFromDict(dict map[string]interface{}, d interface{}, ks []string) (interface{}, error) { + k, ns := ks[0], ks[1:len(ks)] + step, has := dict[k] + if !has { + return d, nil + } + if len(ns) == 0 { + return step, nil + } + return digFromDict(step.(map[string]interface{}), d, ns) +} diff --git a/tests/vendor/github.com/go-task/slim-sprig/v3/doc.go b/tests/vendor/github.com/go-task/slim-sprig/v3/doc.go new file mode 100644 index 000000000..aabb9d448 --- /dev/null +++ b/tests/vendor/github.com/go-task/slim-sprig/v3/doc.go @@ -0,0 +1,19 @@ +/* +Package sprig provides template functions for Go. + +This package contains a number of utility functions for working with data +inside of Go `html/template` and `text/template` files. + +To add these functions, use the `template.Funcs()` method: + + t := templates.New("foo").Funcs(sprig.FuncMap()) + +Note that you should add the function map before you parse any template files. + + In several cases, Sprig reverses the order of arguments from the way they + appear in the standard library. This is to make it easier to pipe + arguments into functions. + +See http://masterminds.github.io/sprig/ for more detailed documentation on each of the available functions. +*/ +package sprig diff --git a/tests/vendor/github.com/go-task/slim-sprig/v3/functions.go b/tests/vendor/github.com/go-task/slim-sprig/v3/functions.go new file mode 100644 index 000000000..5ea74f899 --- /dev/null +++ b/tests/vendor/github.com/go-task/slim-sprig/v3/functions.go @@ -0,0 +1,317 @@ +package sprig + +import ( + "errors" + "html/template" + "math/rand" + "os" + "path" + "path/filepath" + "reflect" + "strconv" + "strings" + ttemplate "text/template" + "time" +) + +// FuncMap produces the function map. +// +// Use this to pass the functions into the template engine: +// +// tpl := template.New("foo").Funcs(sprig.FuncMap())) +// +func FuncMap() template.FuncMap { + return HtmlFuncMap() +} + +// HermeticTxtFuncMap returns a 'text/template'.FuncMap with only repeatable functions. +func HermeticTxtFuncMap() ttemplate.FuncMap { + r := TxtFuncMap() + for _, name := range nonhermeticFunctions { + delete(r, name) + } + return r +} + +// HermeticHtmlFuncMap returns an 'html/template'.Funcmap with only repeatable functions. +func HermeticHtmlFuncMap() template.FuncMap { + r := HtmlFuncMap() + for _, name := range nonhermeticFunctions { + delete(r, name) + } + return r +} + +// TxtFuncMap returns a 'text/template'.FuncMap +func TxtFuncMap() ttemplate.FuncMap { + return ttemplate.FuncMap(GenericFuncMap()) +} + +// HtmlFuncMap returns an 'html/template'.Funcmap +func HtmlFuncMap() template.FuncMap { + return template.FuncMap(GenericFuncMap()) +} + +// GenericFuncMap returns a copy of the basic function map as a map[string]interface{}. +func GenericFuncMap() map[string]interface{} { + gfm := make(map[string]interface{}, len(genericMap)) + for k, v := range genericMap { + gfm[k] = v + } + return gfm +} + +// These functions are not guaranteed to evaluate to the same result for given input, because they +// refer to the environment or global state. +var nonhermeticFunctions = []string{ + // Date functions + "date", + "date_in_zone", + "date_modify", + "now", + "htmlDate", + "htmlDateInZone", + "dateInZone", + "dateModify", + + // Strings + "randAlphaNum", + "randAlpha", + "randAscii", + "randNumeric", + "randBytes", + "uuidv4", + + // OS + "env", + "expandenv", + + // Network + "getHostByName", +} + +var genericMap = map[string]interface{}{ + "hello": func() string { return "Hello!" }, + + // Date functions + "ago": dateAgo, + "date": date, + "date_in_zone": dateInZone, + "date_modify": dateModify, + "dateInZone": dateInZone, + "dateModify": dateModify, + "duration": duration, + "durationRound": durationRound, + "htmlDate": htmlDate, + "htmlDateInZone": htmlDateInZone, + "must_date_modify": mustDateModify, + "mustDateModify": mustDateModify, + "mustToDate": mustToDate, + "now": time.Now, + "toDate": toDate, + "unixEpoch": unixEpoch, + + // Strings + "trunc": trunc, + "trim": strings.TrimSpace, + "upper": strings.ToUpper, + "lower": strings.ToLower, + "title": strings.Title, + "substr": substring, + // Switch order so that "foo" | repeat 5 + "repeat": func(count int, str string) string { return strings.Repeat(str, count) }, + // Deprecated: Use trimAll. + "trimall": func(a, b string) string { return strings.Trim(b, a) }, + // Switch order so that "$foo" | trimall "$" + "trimAll": func(a, b string) string { return strings.Trim(b, a) }, + "trimSuffix": func(a, b string) string { return strings.TrimSuffix(b, a) }, + "trimPrefix": func(a, b string) string { return strings.TrimPrefix(b, a) }, + // Switch order so that "foobar" | contains "foo" + "contains": func(substr string, str string) bool { return strings.Contains(str, substr) }, + "hasPrefix": func(substr string, str string) bool { return strings.HasPrefix(str, substr) }, + "hasSuffix": func(substr string, str string) bool { return strings.HasSuffix(str, substr) }, + "quote": quote, + "squote": squote, + "cat": cat, + "indent": indent, + "nindent": nindent, + "replace": replace, + "plural": plural, + "sha1sum": sha1sum, + "sha256sum": sha256sum, + "adler32sum": adler32sum, + "toString": strval, + + // Wrap Atoi to stop errors. + "atoi": func(a string) int { i, _ := strconv.Atoi(a); return i }, + "int64": toInt64, + "int": toInt, + "float64": toFloat64, + "seq": seq, + "toDecimal": toDecimal, + + //"gt": func(a, b int) bool {return a > b}, + //"gte": func(a, b int) bool {return a >= b}, + //"lt": func(a, b int) bool {return a < b}, + //"lte": func(a, b int) bool {return a <= b}, + + // split "/" foo/bar returns map[int]string{0: foo, 1: bar} + "split": split, + "splitList": func(sep, orig string) []string { return strings.Split(orig, sep) }, + // splitn "/" foo/bar/fuu returns map[int]string{0: foo, 1: bar/fuu} + "splitn": splitn, + "toStrings": strslice, + + "until": until, + "untilStep": untilStep, + + // VERY basic arithmetic. + "add1": func(i interface{}) int64 { return toInt64(i) + 1 }, + "add": func(i ...interface{}) int64 { + var a int64 = 0 + for _, b := range i { + a += toInt64(b) + } + return a + }, + "sub": func(a, b interface{}) int64 { return toInt64(a) - toInt64(b) }, + "div": func(a, b interface{}) int64 { return toInt64(a) / toInt64(b) }, + "mod": func(a, b interface{}) int64 { return toInt64(a) % toInt64(b) }, + "mul": func(a interface{}, v ...interface{}) int64 { + val := toInt64(a) + for _, b := range v { + val = val * toInt64(b) + } + return val + }, + "randInt": func(min, max int) int { return rand.Intn(max-min) + min }, + "biggest": max, + "max": max, + "min": min, + "maxf": maxf, + "minf": minf, + "ceil": ceil, + "floor": floor, + "round": round, + + // string slices. Note that we reverse the order b/c that's better + // for template processing. + "join": join, + "sortAlpha": sortAlpha, + + // Defaults + "default": dfault, + "empty": empty, + "coalesce": coalesce, + "all": all, + "any": any, + "compact": compact, + "mustCompact": mustCompact, + "fromJson": fromJson, + "toJson": toJson, + "toPrettyJson": toPrettyJson, + "toRawJson": toRawJson, + "mustFromJson": mustFromJson, + "mustToJson": mustToJson, + "mustToPrettyJson": mustToPrettyJson, + "mustToRawJson": mustToRawJson, + "ternary": ternary, + + // Reflection + "typeOf": typeOf, + "typeIs": typeIs, + "typeIsLike": typeIsLike, + "kindOf": kindOf, + "kindIs": kindIs, + "deepEqual": reflect.DeepEqual, + + // OS: + "env": os.Getenv, + "expandenv": os.ExpandEnv, + + // Network: + "getHostByName": getHostByName, + + // Paths: + "base": path.Base, + "dir": path.Dir, + "clean": path.Clean, + "ext": path.Ext, + "isAbs": path.IsAbs, + + // Filepaths: + "osBase": filepath.Base, + "osClean": filepath.Clean, + "osDir": filepath.Dir, + "osExt": filepath.Ext, + "osIsAbs": filepath.IsAbs, + + // Encoding: + "b64enc": base64encode, + "b64dec": base64decode, + "b32enc": base32encode, + "b32dec": base32decode, + + // Data Structures: + "tuple": list, // FIXME: with the addition of append/prepend these are no longer immutable. + "list": list, + "dict": dict, + "get": get, + "set": set, + "unset": unset, + "hasKey": hasKey, + "pluck": pluck, + "keys": keys, + "pick": pick, + "omit": omit, + "values": values, + + "append": push, "push": push, + "mustAppend": mustPush, "mustPush": mustPush, + "prepend": prepend, + "mustPrepend": mustPrepend, + "first": first, + "mustFirst": mustFirst, + "rest": rest, + "mustRest": mustRest, + "last": last, + "mustLast": mustLast, + "initial": initial, + "mustInitial": mustInitial, + "reverse": reverse, + "mustReverse": mustReverse, + "uniq": uniq, + "mustUniq": mustUniq, + "without": without, + "mustWithout": mustWithout, + "has": has, + "mustHas": mustHas, + "slice": slice, + "mustSlice": mustSlice, + "concat": concat, + "dig": dig, + "chunk": chunk, + "mustChunk": mustChunk, + + // Flow Control: + "fail": func(msg string) (string, error) { return "", errors.New(msg) }, + + // Regex + "regexMatch": regexMatch, + "mustRegexMatch": mustRegexMatch, + "regexFindAll": regexFindAll, + "mustRegexFindAll": mustRegexFindAll, + "regexFind": regexFind, + "mustRegexFind": mustRegexFind, + "regexReplaceAll": regexReplaceAll, + "mustRegexReplaceAll": mustRegexReplaceAll, + "regexReplaceAllLiteral": regexReplaceAllLiteral, + "mustRegexReplaceAllLiteral": mustRegexReplaceAllLiteral, + "regexSplit": regexSplit, + "mustRegexSplit": mustRegexSplit, + "regexQuoteMeta": regexQuoteMeta, + + // URLs: + "urlParse": urlParse, + "urlJoin": urlJoin, +} diff --git a/tests/vendor/github.com/go-task/slim-sprig/v3/list.go b/tests/vendor/github.com/go-task/slim-sprig/v3/list.go new file mode 100644 index 000000000..ca0fbb789 --- /dev/null +++ b/tests/vendor/github.com/go-task/slim-sprig/v3/list.go @@ -0,0 +1,464 @@ +package sprig + +import ( + "fmt" + "math" + "reflect" + "sort" +) + +// Reflection is used in these functions so that slices and arrays of strings, +// ints, and other types not implementing []interface{} can be worked with. +// For example, this is useful if you need to work on the output of regexs. + +func list(v ...interface{}) []interface{} { + return v +} + +func push(list interface{}, v interface{}) []interface{} { + l, err := mustPush(list, v) + if err != nil { + panic(err) + } + + return l +} + +func mustPush(list interface{}, v interface{}) ([]interface{}, error) { + tp := reflect.TypeOf(list).Kind() + switch tp { + case reflect.Slice, reflect.Array: + l2 := reflect.ValueOf(list) + + l := l2.Len() + nl := make([]interface{}, l) + for i := 0; i < l; i++ { + nl[i] = l2.Index(i).Interface() + } + + return append(nl, v), nil + + default: + return nil, fmt.Errorf("Cannot push on type %s", tp) + } +} + +func prepend(list interface{}, v interface{}) []interface{} { + l, err := mustPrepend(list, v) + if err != nil { + panic(err) + } + + return l +} + +func mustPrepend(list interface{}, v interface{}) ([]interface{}, error) { + //return append([]interface{}{v}, list...) + + tp := reflect.TypeOf(list).Kind() + switch tp { + case reflect.Slice, reflect.Array: + l2 := reflect.ValueOf(list) + + l := l2.Len() + nl := make([]interface{}, l) + for i := 0; i < l; i++ { + nl[i] = l2.Index(i).Interface() + } + + return append([]interface{}{v}, nl...), nil + + default: + return nil, fmt.Errorf("Cannot prepend on type %s", tp) + } +} + +func chunk(size int, list interface{}) [][]interface{} { + l, err := mustChunk(size, list) + if err != nil { + panic(err) + } + + return l +} + +func mustChunk(size int, list interface{}) ([][]interface{}, error) { + tp := reflect.TypeOf(list).Kind() + switch tp { + case reflect.Slice, reflect.Array: + l2 := reflect.ValueOf(list) + + l := l2.Len() + + cs := int(math.Floor(float64(l-1)/float64(size)) + 1) + nl := make([][]interface{}, cs) + + for i := 0; i < cs; i++ { + clen := size + if i == cs-1 { + clen = int(math.Floor(math.Mod(float64(l), float64(size)))) + if clen == 0 { + clen = size + } + } + + nl[i] = make([]interface{}, clen) + + for j := 0; j < clen; j++ { + ix := i*size + j + nl[i][j] = l2.Index(ix).Interface() + } + } + + return nl, nil + + default: + return nil, fmt.Errorf("Cannot chunk type %s", tp) + } +} + +func last(list interface{}) interface{} { + l, err := mustLast(list) + if err != nil { + panic(err) + } + + return l +} + +func mustLast(list interface{}) (interface{}, error) { + tp := reflect.TypeOf(list).Kind() + switch tp { + case reflect.Slice, reflect.Array: + l2 := reflect.ValueOf(list) + + l := l2.Len() + if l == 0 { + return nil, nil + } + + return l2.Index(l - 1).Interface(), nil + default: + return nil, fmt.Errorf("Cannot find last on type %s", tp) + } +} + +func first(list interface{}) interface{} { + l, err := mustFirst(list) + if err != nil { + panic(err) + } + + return l +} + +func mustFirst(list interface{}) (interface{}, error) { + tp := reflect.TypeOf(list).Kind() + switch tp { + case reflect.Slice, reflect.Array: + l2 := reflect.ValueOf(list) + + l := l2.Len() + if l == 0 { + return nil, nil + } + + return l2.Index(0).Interface(), nil + default: + return nil, fmt.Errorf("Cannot find first on type %s", tp) + } +} + +func rest(list interface{}) []interface{} { + l, err := mustRest(list) + if err != nil { + panic(err) + } + + return l +} + +func mustRest(list interface{}) ([]interface{}, error) { + tp := reflect.TypeOf(list).Kind() + switch tp { + case reflect.Slice, reflect.Array: + l2 := reflect.ValueOf(list) + + l := l2.Len() + if l == 0 { + return nil, nil + } + + nl := make([]interface{}, l-1) + for i := 1; i < l; i++ { + nl[i-1] = l2.Index(i).Interface() + } + + return nl, nil + default: + return nil, fmt.Errorf("Cannot find rest on type %s", tp) + } +} + +func initial(list interface{}) []interface{} { + l, err := mustInitial(list) + if err != nil { + panic(err) + } + + return l +} + +func mustInitial(list interface{}) ([]interface{}, error) { + tp := reflect.TypeOf(list).Kind() + switch tp { + case reflect.Slice, reflect.Array: + l2 := reflect.ValueOf(list) + + l := l2.Len() + if l == 0 { + return nil, nil + } + + nl := make([]interface{}, l-1) + for i := 0; i < l-1; i++ { + nl[i] = l2.Index(i).Interface() + } + + return nl, nil + default: + return nil, fmt.Errorf("Cannot find initial on type %s", tp) + } +} + +func sortAlpha(list interface{}) []string { + k := reflect.Indirect(reflect.ValueOf(list)).Kind() + switch k { + case reflect.Slice, reflect.Array: + a := strslice(list) + s := sort.StringSlice(a) + s.Sort() + return s + } + return []string{strval(list)} +} + +func reverse(v interface{}) []interface{} { + l, err := mustReverse(v) + if err != nil { + panic(err) + } + + return l +} + +func mustReverse(v interface{}) ([]interface{}, error) { + tp := reflect.TypeOf(v).Kind() + switch tp { + case reflect.Slice, reflect.Array: + l2 := reflect.ValueOf(v) + + l := l2.Len() + // We do not sort in place because the incoming array should not be altered. + nl := make([]interface{}, l) + for i := 0; i < l; i++ { + nl[l-i-1] = l2.Index(i).Interface() + } + + return nl, nil + default: + return nil, fmt.Errorf("Cannot find reverse on type %s", tp) + } +} + +func compact(list interface{}) []interface{} { + l, err := mustCompact(list) + if err != nil { + panic(err) + } + + return l +} + +func mustCompact(list interface{}) ([]interface{}, error) { + tp := reflect.TypeOf(list).Kind() + switch tp { + case reflect.Slice, reflect.Array: + l2 := reflect.ValueOf(list) + + l := l2.Len() + nl := []interface{}{} + var item interface{} + for i := 0; i < l; i++ { + item = l2.Index(i).Interface() + if !empty(item) { + nl = append(nl, item) + } + } + + return nl, nil + default: + return nil, fmt.Errorf("Cannot compact on type %s", tp) + } +} + +func uniq(list interface{}) []interface{} { + l, err := mustUniq(list) + if err != nil { + panic(err) + } + + return l +} + +func mustUniq(list interface{}) ([]interface{}, error) { + tp := reflect.TypeOf(list).Kind() + switch tp { + case reflect.Slice, reflect.Array: + l2 := reflect.ValueOf(list) + + l := l2.Len() + dest := []interface{}{} + var item interface{} + for i := 0; i < l; i++ { + item = l2.Index(i).Interface() + if !inList(dest, item) { + dest = append(dest, item) + } + } + + return dest, nil + default: + return nil, fmt.Errorf("Cannot find uniq on type %s", tp) + } +} + +func inList(haystack []interface{}, needle interface{}) bool { + for _, h := range haystack { + if reflect.DeepEqual(needle, h) { + return true + } + } + return false +} + +func without(list interface{}, omit ...interface{}) []interface{} { + l, err := mustWithout(list, omit...) + if err != nil { + panic(err) + } + + return l +} + +func mustWithout(list interface{}, omit ...interface{}) ([]interface{}, error) { + tp := reflect.TypeOf(list).Kind() + switch tp { + case reflect.Slice, reflect.Array: + l2 := reflect.ValueOf(list) + + l := l2.Len() + res := []interface{}{} + var item interface{} + for i := 0; i < l; i++ { + item = l2.Index(i).Interface() + if !inList(omit, item) { + res = append(res, item) + } + } + + return res, nil + default: + return nil, fmt.Errorf("Cannot find without on type %s", tp) + } +} + +func has(needle interface{}, haystack interface{}) bool { + l, err := mustHas(needle, haystack) + if err != nil { + panic(err) + } + + return l +} + +func mustHas(needle interface{}, haystack interface{}) (bool, error) { + if haystack == nil { + return false, nil + } + tp := reflect.TypeOf(haystack).Kind() + switch tp { + case reflect.Slice, reflect.Array: + l2 := reflect.ValueOf(haystack) + var item interface{} + l := l2.Len() + for i := 0; i < l; i++ { + item = l2.Index(i).Interface() + if reflect.DeepEqual(needle, item) { + return true, nil + } + } + + return false, nil + default: + return false, fmt.Errorf("Cannot find has on type %s", tp) + } +} + +// $list := [1, 2, 3, 4, 5] +// slice $list -> list[0:5] = list[:] +// slice $list 0 3 -> list[0:3] = list[:3] +// slice $list 3 5 -> list[3:5] +// slice $list 3 -> list[3:5] = list[3:] +func slice(list interface{}, indices ...interface{}) interface{} { + l, err := mustSlice(list, indices...) + if err != nil { + panic(err) + } + + return l +} + +func mustSlice(list interface{}, indices ...interface{}) (interface{}, error) { + tp := reflect.TypeOf(list).Kind() + switch tp { + case reflect.Slice, reflect.Array: + l2 := reflect.ValueOf(list) + + l := l2.Len() + if l == 0 { + return nil, nil + } + + var start, end int + if len(indices) > 0 { + start = toInt(indices[0]) + } + if len(indices) < 2 { + end = l + } else { + end = toInt(indices[1]) + } + + return l2.Slice(start, end).Interface(), nil + default: + return nil, fmt.Errorf("list should be type of slice or array but %s", tp) + } +} + +func concat(lists ...interface{}) interface{} { + var res []interface{} + for _, list := range lists { + tp := reflect.TypeOf(list).Kind() + switch tp { + case reflect.Slice, reflect.Array: + l2 := reflect.ValueOf(list) + for i := 0; i < l2.Len(); i++ { + res = append(res, l2.Index(i).Interface()) + } + default: + panic(fmt.Sprintf("Cannot concat type %s as list", tp)) + } + } + return res +} diff --git a/tests/vendor/github.com/go-task/slim-sprig/v3/network.go b/tests/vendor/github.com/go-task/slim-sprig/v3/network.go new file mode 100644 index 000000000..108d78a94 --- /dev/null +++ b/tests/vendor/github.com/go-task/slim-sprig/v3/network.go @@ -0,0 +1,12 @@ +package sprig + +import ( + "math/rand" + "net" +) + +func getHostByName(name string) string { + addrs, _ := net.LookupHost(name) + //TODO: add error handing when release v3 comes out + return addrs[rand.Intn(len(addrs))] +} diff --git a/tests/vendor/github.com/go-task/slim-sprig/v3/numeric.go b/tests/vendor/github.com/go-task/slim-sprig/v3/numeric.go new file mode 100644 index 000000000..98cbb37a1 --- /dev/null +++ b/tests/vendor/github.com/go-task/slim-sprig/v3/numeric.go @@ -0,0 +1,228 @@ +package sprig + +import ( + "fmt" + "math" + "reflect" + "strconv" + "strings" +) + +// toFloat64 converts 64-bit floats +func toFloat64(v interface{}) float64 { + if str, ok := v.(string); ok { + iv, err := strconv.ParseFloat(str, 64) + if err != nil { + return 0 + } + return iv + } + + val := reflect.Indirect(reflect.ValueOf(v)) + switch val.Kind() { + case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int: + return float64(val.Int()) + case reflect.Uint8, reflect.Uint16, reflect.Uint32: + return float64(val.Uint()) + case reflect.Uint, reflect.Uint64: + return float64(val.Uint()) + case reflect.Float32, reflect.Float64: + return val.Float() + case reflect.Bool: + if val.Bool() { + return 1 + } + return 0 + default: + return 0 + } +} + +func toInt(v interface{}) int { + //It's not optimal. Bud I don't want duplicate toInt64 code. + return int(toInt64(v)) +} + +// toInt64 converts integer types to 64-bit integers +func toInt64(v interface{}) int64 { + if str, ok := v.(string); ok { + iv, err := strconv.ParseInt(str, 10, 64) + if err != nil { + return 0 + } + return iv + } + + val := reflect.Indirect(reflect.ValueOf(v)) + switch val.Kind() { + case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int: + return val.Int() + case reflect.Uint8, reflect.Uint16, reflect.Uint32: + return int64(val.Uint()) + case reflect.Uint, reflect.Uint64: + tv := val.Uint() + if tv <= math.MaxInt64 { + return int64(tv) + } + // TODO: What is the sensible thing to do here? + return math.MaxInt64 + case reflect.Float32, reflect.Float64: + return int64(val.Float()) + case reflect.Bool: + if val.Bool() { + return 1 + } + return 0 + default: + return 0 + } +} + +func max(a interface{}, i ...interface{}) int64 { + aa := toInt64(a) + for _, b := range i { + bb := toInt64(b) + if bb > aa { + aa = bb + } + } + return aa +} + +func maxf(a interface{}, i ...interface{}) float64 { + aa := toFloat64(a) + for _, b := range i { + bb := toFloat64(b) + aa = math.Max(aa, bb) + } + return aa +} + +func min(a interface{}, i ...interface{}) int64 { + aa := toInt64(a) + for _, b := range i { + bb := toInt64(b) + if bb < aa { + aa = bb + } + } + return aa +} + +func minf(a interface{}, i ...interface{}) float64 { + aa := toFloat64(a) + for _, b := range i { + bb := toFloat64(b) + aa = math.Min(aa, bb) + } + return aa +} + +func until(count int) []int { + step := 1 + if count < 0 { + step = -1 + } + return untilStep(0, count, step) +} + +func untilStep(start, stop, step int) []int { + v := []int{} + + if stop < start { + if step >= 0 { + return v + } + for i := start; i > stop; i += step { + v = append(v, i) + } + return v + } + + if step <= 0 { + return v + } + for i := start; i < stop; i += step { + v = append(v, i) + } + return v +} + +func floor(a interface{}) float64 { + aa := toFloat64(a) + return math.Floor(aa) +} + +func ceil(a interface{}) float64 { + aa := toFloat64(a) + return math.Ceil(aa) +} + +func round(a interface{}, p int, rOpt ...float64) float64 { + roundOn := .5 + if len(rOpt) > 0 { + roundOn = rOpt[0] + } + val := toFloat64(a) + places := toFloat64(p) + + var round float64 + pow := math.Pow(10, places) + digit := pow * val + _, div := math.Modf(digit) + if div >= roundOn { + round = math.Ceil(digit) + } else { + round = math.Floor(digit) + } + return round / pow +} + +// converts unix octal to decimal +func toDecimal(v interface{}) int64 { + result, err := strconv.ParseInt(fmt.Sprint(v), 8, 64) + if err != nil { + return 0 + } + return result +} + +func seq(params ...int) string { + increment := 1 + switch len(params) { + case 0: + return "" + case 1: + start := 1 + end := params[0] + if end < start { + increment = -1 + } + return intArrayToString(untilStep(start, end+increment, increment), " ") + case 3: + start := params[0] + end := params[2] + step := params[1] + if end < start { + increment = -1 + if step > 0 { + return "" + } + } + return intArrayToString(untilStep(start, end+increment, step), " ") + case 2: + start := params[0] + end := params[1] + step := 1 + if end < start { + step = -1 + } + return intArrayToString(untilStep(start, end+step, step), " ") + default: + return "" + } +} + +func intArrayToString(slice []int, delimeter string) string { + return strings.Trim(strings.Join(strings.Fields(fmt.Sprint(slice)), delimeter), "[]") +} diff --git a/tests/vendor/github.com/go-task/slim-sprig/v3/reflect.go b/tests/vendor/github.com/go-task/slim-sprig/v3/reflect.go new file mode 100644 index 000000000..8a65c132f --- /dev/null +++ b/tests/vendor/github.com/go-task/slim-sprig/v3/reflect.go @@ -0,0 +1,28 @@ +package sprig + +import ( + "fmt" + "reflect" +) + +// typeIs returns true if the src is the type named in target. +func typeIs(target string, src interface{}) bool { + return target == typeOf(src) +} + +func typeIsLike(target string, src interface{}) bool { + t := typeOf(src) + return target == t || "*"+target == t +} + +func typeOf(src interface{}) string { + return fmt.Sprintf("%T", src) +} + +func kindIs(target string, src interface{}) bool { + return target == kindOf(src) +} + +func kindOf(src interface{}) string { + return reflect.ValueOf(src).Kind().String() +} diff --git a/tests/vendor/github.com/go-task/slim-sprig/v3/regex.go b/tests/vendor/github.com/go-task/slim-sprig/v3/regex.go new file mode 100644 index 000000000..fab551018 --- /dev/null +++ b/tests/vendor/github.com/go-task/slim-sprig/v3/regex.go @@ -0,0 +1,83 @@ +package sprig + +import ( + "regexp" +) + +func regexMatch(regex string, s string) bool { + match, _ := regexp.MatchString(regex, s) + return match +} + +func mustRegexMatch(regex string, s string) (bool, error) { + return regexp.MatchString(regex, s) +} + +func regexFindAll(regex string, s string, n int) []string { + r := regexp.MustCompile(regex) + return r.FindAllString(s, n) +} + +func mustRegexFindAll(regex string, s string, n int) ([]string, error) { + r, err := regexp.Compile(regex) + if err != nil { + return []string{}, err + } + return r.FindAllString(s, n), nil +} + +func regexFind(regex string, s string) string { + r := regexp.MustCompile(regex) + return r.FindString(s) +} + +func mustRegexFind(regex string, s string) (string, error) { + r, err := regexp.Compile(regex) + if err != nil { + return "", err + } + return r.FindString(s), nil +} + +func regexReplaceAll(regex string, s string, repl string) string { + r := regexp.MustCompile(regex) + return r.ReplaceAllString(s, repl) +} + +func mustRegexReplaceAll(regex string, s string, repl string) (string, error) { + r, err := regexp.Compile(regex) + if err != nil { + return "", err + } + return r.ReplaceAllString(s, repl), nil +} + +func regexReplaceAllLiteral(regex string, s string, repl string) string { + r := regexp.MustCompile(regex) + return r.ReplaceAllLiteralString(s, repl) +} + +func mustRegexReplaceAllLiteral(regex string, s string, repl string) (string, error) { + r, err := regexp.Compile(regex) + if err != nil { + return "", err + } + return r.ReplaceAllLiteralString(s, repl), nil +} + +func regexSplit(regex string, s string, n int) []string { + r := regexp.MustCompile(regex) + return r.Split(s, n) +} + +func mustRegexSplit(regex string, s string, n int) ([]string, error) { + r, err := regexp.Compile(regex) + if err != nil { + return []string{}, err + } + return r.Split(s, n), nil +} + +func regexQuoteMeta(s string) string { + return regexp.QuoteMeta(s) +} diff --git a/tests/vendor/github.com/go-task/slim-sprig/v3/strings.go b/tests/vendor/github.com/go-task/slim-sprig/v3/strings.go new file mode 100644 index 000000000..3c62d6b6f --- /dev/null +++ b/tests/vendor/github.com/go-task/slim-sprig/v3/strings.go @@ -0,0 +1,189 @@ +package sprig + +import ( + "encoding/base32" + "encoding/base64" + "fmt" + "reflect" + "strconv" + "strings" +) + +func base64encode(v string) string { + return base64.StdEncoding.EncodeToString([]byte(v)) +} + +func base64decode(v string) string { + data, err := base64.StdEncoding.DecodeString(v) + if err != nil { + return err.Error() + } + return string(data) +} + +func base32encode(v string) string { + return base32.StdEncoding.EncodeToString([]byte(v)) +} + +func base32decode(v string) string { + data, err := base32.StdEncoding.DecodeString(v) + if err != nil { + return err.Error() + } + return string(data) +} + +func quote(str ...interface{}) string { + out := make([]string, 0, len(str)) + for _, s := range str { + if s != nil { + out = append(out, fmt.Sprintf("%q", strval(s))) + } + } + return strings.Join(out, " ") +} + +func squote(str ...interface{}) string { + out := make([]string, 0, len(str)) + for _, s := range str { + if s != nil { + out = append(out, fmt.Sprintf("'%v'", s)) + } + } + return strings.Join(out, " ") +} + +func cat(v ...interface{}) string { + v = removeNilElements(v) + r := strings.TrimSpace(strings.Repeat("%v ", len(v))) + return fmt.Sprintf(r, v...) +} + +func indent(spaces int, v string) string { + pad := strings.Repeat(" ", spaces) + return pad + strings.Replace(v, "\n", "\n"+pad, -1) +} + +func nindent(spaces int, v string) string { + return "\n" + indent(spaces, v) +} + +func replace(old, new, src string) string { + return strings.Replace(src, old, new, -1) +} + +func plural(one, many string, count int) string { + if count == 1 { + return one + } + return many +} + +func strslice(v interface{}) []string { + switch v := v.(type) { + case []string: + return v + case []interface{}: + b := make([]string, 0, len(v)) + for _, s := range v { + if s != nil { + b = append(b, strval(s)) + } + } + return b + default: + val := reflect.ValueOf(v) + switch val.Kind() { + case reflect.Array, reflect.Slice: + l := val.Len() + b := make([]string, 0, l) + for i := 0; i < l; i++ { + value := val.Index(i).Interface() + if value != nil { + b = append(b, strval(value)) + } + } + return b + default: + if v == nil { + return []string{} + } + + return []string{strval(v)} + } + } +} + +func removeNilElements(v []interface{}) []interface{} { + newSlice := make([]interface{}, 0, len(v)) + for _, i := range v { + if i != nil { + newSlice = append(newSlice, i) + } + } + return newSlice +} + +func strval(v interface{}) string { + switch v := v.(type) { + case string: + return v + case []byte: + return string(v) + case error: + return v.Error() + case fmt.Stringer: + return v.String() + default: + return fmt.Sprintf("%v", v) + } +} + +func trunc(c int, s string) string { + if c < 0 && len(s)+c > 0 { + return s[len(s)+c:] + } + if c >= 0 && len(s) > c { + return s[:c] + } + return s +} + +func join(sep string, v interface{}) string { + return strings.Join(strslice(v), sep) +} + +func split(sep, orig string) map[string]string { + parts := strings.Split(orig, sep) + res := make(map[string]string, len(parts)) + for i, v := range parts { + res["_"+strconv.Itoa(i)] = v + } + return res +} + +func splitn(sep string, n int, orig string) map[string]string { + parts := strings.SplitN(orig, sep, n) + res := make(map[string]string, len(parts)) + for i, v := range parts { + res["_"+strconv.Itoa(i)] = v + } + return res +} + +// substring creates a substring of the given string. +// +// If start is < 0, this calls string[:end]. +// +// If start is >= 0 and end < 0 or end bigger than s length, this calls string[start:] +// +// Otherwise, this calls string[start, end]. +func substring(start, end int, s string) string { + if start < 0 { + return s[:end] + } + if end < 0 || end > len(s) { + return s[start:] + } + return s[start:end] +} diff --git a/tests/vendor/github.com/go-task/slim-sprig/v3/url.go b/tests/vendor/github.com/go-task/slim-sprig/v3/url.go new file mode 100644 index 000000000..b8e120e19 --- /dev/null +++ b/tests/vendor/github.com/go-task/slim-sprig/v3/url.go @@ -0,0 +1,66 @@ +package sprig + +import ( + "fmt" + "net/url" + "reflect" +) + +func dictGetOrEmpty(dict map[string]interface{}, key string) string { + value, ok := dict[key] + if !ok { + return "" + } + tp := reflect.TypeOf(value).Kind() + if tp != reflect.String { + panic(fmt.Sprintf("unable to parse %s key, must be of type string, but %s found", key, tp.String())) + } + return reflect.ValueOf(value).String() +} + +// parses given URL to return dict object +func urlParse(v string) map[string]interface{} { + dict := map[string]interface{}{} + parsedURL, err := url.Parse(v) + if err != nil { + panic(fmt.Sprintf("unable to parse url: %s", err)) + } + dict["scheme"] = parsedURL.Scheme + dict["host"] = parsedURL.Host + dict["hostname"] = parsedURL.Hostname() + dict["path"] = parsedURL.Path + dict["query"] = parsedURL.RawQuery + dict["opaque"] = parsedURL.Opaque + dict["fragment"] = parsedURL.Fragment + if parsedURL.User != nil { + dict["userinfo"] = parsedURL.User.String() + } else { + dict["userinfo"] = "" + } + + return dict +} + +// join given dict to URL string +func urlJoin(d map[string]interface{}) string { + resURL := url.URL{ + Scheme: dictGetOrEmpty(d, "scheme"), + Host: dictGetOrEmpty(d, "host"), + Path: dictGetOrEmpty(d, "path"), + RawQuery: dictGetOrEmpty(d, "query"), + Opaque: dictGetOrEmpty(d, "opaque"), + Fragment: dictGetOrEmpty(d, "fragment"), + } + userinfo := dictGetOrEmpty(d, "userinfo") + var user *url.Userinfo + if userinfo != "" { + tempURL, err := url.Parse(fmt.Sprintf("proto://%s@host", userinfo)) + if err != nil { + panic(fmt.Sprintf("unable to parse userinfo in dict: %s", err)) + } + user = tempURL.User + } + + resURL.User = user + return resURL.String() +} diff --git a/tests/vendor/github.com/google/go-cmp/LICENSE b/tests/vendor/github.com/google/go-cmp/LICENSE new file mode 100644 index 000000000..32017f8fa --- /dev/null +++ b/tests/vendor/github.com/google/go-cmp/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2017 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/tests/vendor/github.com/google/go-cmp/cmp/compare.go b/tests/vendor/github.com/google/go-cmp/cmp/compare.go new file mode 100644 index 000000000..0f5b8a48c --- /dev/null +++ b/tests/vendor/github.com/google/go-cmp/cmp/compare.go @@ -0,0 +1,671 @@ +// Copyright 2017, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package cmp determines equality of values. +// +// This package is intended to be a more powerful and safer alternative to +// [reflect.DeepEqual] for comparing whether two values are semantically equal. +// It is intended to only be used in tests, as performance is not a goal and +// it may panic if it cannot compare the values. Its propensity towards +// panicking means that its unsuitable for production environments where a +// spurious panic may be fatal. +// +// The primary features of cmp are: +// +// - When the default behavior of equality does not suit the test's needs, +// custom equality functions can override the equality operation. +// For example, an equality function may report floats as equal so long as +// they are within some tolerance of each other. +// +// - Types with an Equal method (e.g., [time.Time.Equal]) may use that method +// to determine equality. This allows package authors to determine +// the equality operation for the types that they define. +// +// - If no custom equality functions are used and no Equal method is defined, +// equality is determined by recursively comparing the primitive kinds on +// both values, much like [reflect.DeepEqual]. Unlike [reflect.DeepEqual], +// unexported fields are not compared by default; they result in panics +// unless suppressed by using an [Ignore] option +// (see [github.com/google/go-cmp/cmp/cmpopts.IgnoreUnexported]) +// or explicitly compared using the [Exporter] option. +package cmp + +import ( + "fmt" + "reflect" + "strings" + + "github.com/google/go-cmp/cmp/internal/diff" + "github.com/google/go-cmp/cmp/internal/function" + "github.com/google/go-cmp/cmp/internal/value" +) + +// TODO(≥go1.18): Use any instead of interface{}. + +// Equal reports whether x and y are equal by recursively applying the +// following rules in the given order to x and y and all of their sub-values: +// +// - Let S be the set of all [Ignore], [Transformer], and [Comparer] options that +// remain after applying all path filters, value filters, and type filters. +// If at least one [Ignore] exists in S, then the comparison is ignored. +// If the number of [Transformer] and [Comparer] options in S is non-zero, +// then Equal panics because it is ambiguous which option to use. +// If S contains a single [Transformer], then use that to transform +// the current values and recursively call Equal on the output values. +// If S contains a single [Comparer], then use that to compare the current values. +// Otherwise, evaluation proceeds to the next rule. +// +// - If the values have an Equal method of the form "(T) Equal(T) bool" or +// "(T) Equal(I) bool" where T is assignable to I, then use the result of +// x.Equal(y) even if x or y is nil. Otherwise, no such method exists and +// evaluation proceeds to the next rule. +// +// - Lastly, try to compare x and y based on their basic kinds. +// Simple kinds like booleans, integers, floats, complex numbers, strings, +// and channels are compared using the equivalent of the == operator in Go. +// Functions are only equal if they are both nil, otherwise they are unequal. +// +// Structs are equal if recursively calling Equal on all fields report equal. +// If a struct contains unexported fields, Equal panics unless an [Ignore] option +// (e.g., [github.com/google/go-cmp/cmp/cmpopts.IgnoreUnexported]) ignores that field +// or the [Exporter] option explicitly permits comparing the unexported field. +// +// Slices are equal if they are both nil or both non-nil, where recursively +// calling Equal on all non-ignored slice or array elements report equal. +// Empty non-nil slices and nil slices are not equal; to equate empty slices, +// consider using [github.com/google/go-cmp/cmp/cmpopts.EquateEmpty]. +// +// Maps are equal if they are both nil or both non-nil, where recursively +// calling Equal on all non-ignored map entries report equal. +// Map keys are equal according to the == operator. +// To use custom comparisons for map keys, consider using +// [github.com/google/go-cmp/cmp/cmpopts.SortMaps]. +// Empty non-nil maps and nil maps are not equal; to equate empty maps, +// consider using [github.com/google/go-cmp/cmp/cmpopts.EquateEmpty]. +// +// Pointers and interfaces are equal if they are both nil or both non-nil, +// where they have the same underlying concrete type and recursively +// calling Equal on the underlying values reports equal. +// +// Before recursing into a pointer, slice element, or map, the current path +// is checked to detect whether the address has already been visited. +// If there is a cycle, then the pointed at values are considered equal +// only if both addresses were previously visited in the same path step. +func Equal(x, y interface{}, opts ...Option) bool { + s := newState(opts) + s.compareAny(rootStep(x, y)) + return s.result.Equal() +} + +// Diff returns a human-readable report of the differences between two values: +// y - x. It returns an empty string if and only if Equal returns true for the +// same input values and options. +// +// The output is displayed as a literal in pseudo-Go syntax. +// At the start of each line, a "-" prefix indicates an element removed from x, +// a "+" prefix to indicates an element added from y, and the lack of a prefix +// indicates an element common to both x and y. If possible, the output +// uses fmt.Stringer.String or error.Error methods to produce more humanly +// readable outputs. In such cases, the string is prefixed with either an +// 's' or 'e' character, respectively, to indicate that the method was called. +// +// Do not depend on this output being stable. If you need the ability to +// programmatically interpret the difference, consider using a custom Reporter. +func Diff(x, y interface{}, opts ...Option) string { + s := newState(opts) + + // Optimization: If there are no other reporters, we can optimize for the + // common case where the result is equal (and thus no reported difference). + // This avoids the expensive construction of a difference tree. + if len(s.reporters) == 0 { + s.compareAny(rootStep(x, y)) + if s.result.Equal() { + return "" + } + s.result = diff.Result{} // Reset results + } + + r := new(defaultReporter) + s.reporters = append(s.reporters, reporter{r}) + s.compareAny(rootStep(x, y)) + d := r.String() + if (d == "") != s.result.Equal() { + panic("inconsistent difference and equality results") + } + return d +} + +// rootStep constructs the first path step. If x and y have differing types, +// then they are stored within an empty interface type. +func rootStep(x, y interface{}) PathStep { + vx := reflect.ValueOf(x) + vy := reflect.ValueOf(y) + + // If the inputs are different types, auto-wrap them in an empty interface + // so that they have the same parent type. + var t reflect.Type + if !vx.IsValid() || !vy.IsValid() || vx.Type() != vy.Type() { + t = anyType + if vx.IsValid() { + vvx := reflect.New(t).Elem() + vvx.Set(vx) + vx = vvx + } + if vy.IsValid() { + vvy := reflect.New(t).Elem() + vvy.Set(vy) + vy = vvy + } + } else { + t = vx.Type() + } + + return &pathStep{t, vx, vy} +} + +type state struct { + // These fields represent the "comparison state". + // Calling statelessCompare must not result in observable changes to these. + result diff.Result // The current result of comparison + curPath Path // The current path in the value tree + curPtrs pointerPath // The current set of visited pointers + reporters []reporter // Optional reporters + + // recChecker checks for infinite cycles applying the same set of + // transformers upon the output of itself. + recChecker recChecker + + // dynChecker triggers pseudo-random checks for option correctness. + // It is safe for statelessCompare to mutate this value. + dynChecker dynChecker + + // These fields, once set by processOption, will not change. + exporters []exporter // List of exporters for structs with unexported fields + opts Options // List of all fundamental and filter options +} + +func newState(opts []Option) *state { + // Always ensure a validator option exists to validate the inputs. + s := &state{opts: Options{validator{}}} + s.curPtrs.Init() + s.processOption(Options(opts)) + return s +} + +func (s *state) processOption(opt Option) { + switch opt := opt.(type) { + case nil: + case Options: + for _, o := range opt { + s.processOption(o) + } + case coreOption: + type filtered interface { + isFiltered() bool + } + if fopt, ok := opt.(filtered); ok && !fopt.isFiltered() { + panic(fmt.Sprintf("cannot use an unfiltered option: %v", opt)) + } + s.opts = append(s.opts, opt) + case exporter: + s.exporters = append(s.exporters, opt) + case reporter: + s.reporters = append(s.reporters, opt) + default: + panic(fmt.Sprintf("unknown option %T", opt)) + } +} + +// statelessCompare compares two values and returns the result. +// This function is stateless in that it does not alter the current result, +// or output to any registered reporters. +func (s *state) statelessCompare(step PathStep) diff.Result { + // We do not save and restore curPath and curPtrs because all of the + // compareX methods should properly push and pop from them. + // It is an implementation bug if the contents of the paths differ from + // when calling this function to when returning from it. + + oldResult, oldReporters := s.result, s.reporters + s.result = diff.Result{} // Reset result + s.reporters = nil // Remove reporters to avoid spurious printouts + s.compareAny(step) + res := s.result + s.result, s.reporters = oldResult, oldReporters + return res +} + +func (s *state) compareAny(step PathStep) { + // Update the path stack. + s.curPath.push(step) + defer s.curPath.pop() + for _, r := range s.reporters { + r.PushStep(step) + defer r.PopStep() + } + s.recChecker.Check(s.curPath) + + // Cycle-detection for slice elements (see NOTE in compareSlice). + t := step.Type() + vx, vy := step.Values() + if si, ok := step.(SliceIndex); ok && si.isSlice && vx.IsValid() && vy.IsValid() { + px, py := vx.Addr(), vy.Addr() + if eq, visited := s.curPtrs.Push(px, py); visited { + s.report(eq, reportByCycle) + return + } + defer s.curPtrs.Pop(px, py) + } + + // Rule 1: Check whether an option applies on this node in the value tree. + if s.tryOptions(t, vx, vy) { + return + } + + // Rule 2: Check whether the type has a valid Equal method. + if s.tryMethod(t, vx, vy) { + return + } + + // Rule 3: Compare based on the underlying kind. + switch t.Kind() { + case reflect.Bool: + s.report(vx.Bool() == vy.Bool(), 0) + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + s.report(vx.Int() == vy.Int(), 0) + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + s.report(vx.Uint() == vy.Uint(), 0) + case reflect.Float32, reflect.Float64: + s.report(vx.Float() == vy.Float(), 0) + case reflect.Complex64, reflect.Complex128: + s.report(vx.Complex() == vy.Complex(), 0) + case reflect.String: + s.report(vx.String() == vy.String(), 0) + case reflect.Chan, reflect.UnsafePointer: + s.report(vx.Pointer() == vy.Pointer(), 0) + case reflect.Func: + s.report(vx.IsNil() && vy.IsNil(), 0) + case reflect.Struct: + s.compareStruct(t, vx, vy) + case reflect.Slice, reflect.Array: + s.compareSlice(t, vx, vy) + case reflect.Map: + s.compareMap(t, vx, vy) + case reflect.Ptr: + s.comparePtr(t, vx, vy) + case reflect.Interface: + s.compareInterface(t, vx, vy) + default: + panic(fmt.Sprintf("%v kind not handled", t.Kind())) + } +} + +func (s *state) tryOptions(t reflect.Type, vx, vy reflect.Value) bool { + // Evaluate all filters and apply the remaining options. + if opt := s.opts.filter(s, t, vx, vy); opt != nil { + opt.apply(s, vx, vy) + return true + } + return false +} + +func (s *state) tryMethod(t reflect.Type, vx, vy reflect.Value) bool { + // Check if this type even has an Equal method. + m, ok := t.MethodByName("Equal") + if !ok || !function.IsType(m.Type, function.EqualAssignable) { + return false + } + + eq := s.callTTBFunc(m.Func, vx, vy) + s.report(eq, reportByMethod) + return true +} + +func (s *state) callTRFunc(f, v reflect.Value, step Transform) reflect.Value { + if !s.dynChecker.Next() { + return f.Call([]reflect.Value{v})[0] + } + + // Run the function twice and ensure that we get the same results back. + // We run in goroutines so that the race detector (if enabled) can detect + // unsafe mutations to the input. + c := make(chan reflect.Value) + go detectRaces(c, f, v) + got := <-c + want := f.Call([]reflect.Value{v})[0] + if step.vx, step.vy = got, want; !s.statelessCompare(step).Equal() { + // To avoid false-positives with non-reflexive equality operations, + // we sanity check whether a value is equal to itself. + if step.vx, step.vy = want, want; !s.statelessCompare(step).Equal() { + return want + } + panic(fmt.Sprintf("non-deterministic function detected: %s", function.NameOf(f))) + } + return want +} + +func (s *state) callTTBFunc(f, x, y reflect.Value) bool { + if !s.dynChecker.Next() { + return f.Call([]reflect.Value{x, y})[0].Bool() + } + + // Swapping the input arguments is sufficient to check that + // f is symmetric and deterministic. + // We run in goroutines so that the race detector (if enabled) can detect + // unsafe mutations to the input. + c := make(chan reflect.Value) + go detectRaces(c, f, y, x) + got := <-c + want := f.Call([]reflect.Value{x, y})[0].Bool() + if !got.IsValid() || got.Bool() != want { + panic(fmt.Sprintf("non-deterministic or non-symmetric function detected: %s", function.NameOf(f))) + } + return want +} + +func detectRaces(c chan<- reflect.Value, f reflect.Value, vs ...reflect.Value) { + var ret reflect.Value + defer func() { + recover() // Ignore panics, let the other call to f panic instead + c <- ret + }() + ret = f.Call(vs)[0] +} + +func (s *state) compareStruct(t reflect.Type, vx, vy reflect.Value) { + var addr bool + var vax, vay reflect.Value // Addressable versions of vx and vy + + var mayForce, mayForceInit bool + step := StructField{&structField{}} + for i := 0; i < t.NumField(); i++ { + step.typ = t.Field(i).Type + step.vx = vx.Field(i) + step.vy = vy.Field(i) + step.name = t.Field(i).Name + step.idx = i + step.unexported = !isExported(step.name) + if step.unexported { + if step.name == "_" { + continue + } + // Defer checking of unexported fields until later to give an + // Ignore a chance to ignore the field. + if !vax.IsValid() || !vay.IsValid() { + // For retrieveUnexportedField to work, the parent struct must + // be addressable. Create a new copy of the values if + // necessary to make them addressable. + addr = vx.CanAddr() || vy.CanAddr() + vax = makeAddressable(vx) + vay = makeAddressable(vy) + } + if !mayForceInit { + for _, xf := range s.exporters { + mayForce = mayForce || xf(t) + } + mayForceInit = true + } + step.mayForce = mayForce + step.paddr = addr + step.pvx = vax + step.pvy = vay + step.field = t.Field(i) + } + s.compareAny(step) + } +} + +func (s *state) compareSlice(t reflect.Type, vx, vy reflect.Value) { + isSlice := t.Kind() == reflect.Slice + if isSlice && (vx.IsNil() || vy.IsNil()) { + s.report(vx.IsNil() && vy.IsNil(), 0) + return + } + + // NOTE: It is incorrect to call curPtrs.Push on the slice header pointer + // since slices represents a list of pointers, rather than a single pointer. + // The pointer checking logic must be handled on a per-element basis + // in compareAny. + // + // A slice header (see reflect.SliceHeader) in Go is a tuple of a starting + // pointer P, a length N, and a capacity C. Supposing each slice element has + // a memory size of M, then the slice is equivalent to the list of pointers: + // [P+i*M for i in range(N)] + // + // For example, v[:0] and v[:1] are slices with the same starting pointer, + // but they are clearly different values. Using the slice pointer alone + // violates the assumption that equal pointers implies equal values. + + step := SliceIndex{&sliceIndex{pathStep: pathStep{typ: t.Elem()}, isSlice: isSlice}} + withIndexes := func(ix, iy int) SliceIndex { + if ix >= 0 { + step.vx, step.xkey = vx.Index(ix), ix + } else { + step.vx, step.xkey = reflect.Value{}, -1 + } + if iy >= 0 { + step.vy, step.ykey = vy.Index(iy), iy + } else { + step.vy, step.ykey = reflect.Value{}, -1 + } + return step + } + + // Ignore options are able to ignore missing elements in a slice. + // However, detecting these reliably requires an optimal differencing + // algorithm, for which diff.Difference is not. + // + // Instead, we first iterate through both slices to detect which elements + // would be ignored if standing alone. The index of non-discarded elements + // are stored in a separate slice, which diffing is then performed on. + var indexesX, indexesY []int + var ignoredX, ignoredY []bool + for ix := 0; ix < vx.Len(); ix++ { + ignored := s.statelessCompare(withIndexes(ix, -1)).NumDiff == 0 + if !ignored { + indexesX = append(indexesX, ix) + } + ignoredX = append(ignoredX, ignored) + } + for iy := 0; iy < vy.Len(); iy++ { + ignored := s.statelessCompare(withIndexes(-1, iy)).NumDiff == 0 + if !ignored { + indexesY = append(indexesY, iy) + } + ignoredY = append(ignoredY, ignored) + } + + // Compute an edit-script for slices vx and vy (excluding ignored elements). + edits := diff.Difference(len(indexesX), len(indexesY), func(ix, iy int) diff.Result { + return s.statelessCompare(withIndexes(indexesX[ix], indexesY[iy])) + }) + + // Replay the ignore-scripts and the edit-script. + var ix, iy int + for ix < vx.Len() || iy < vy.Len() { + var e diff.EditType + switch { + case ix < len(ignoredX) && ignoredX[ix]: + e = diff.UniqueX + case iy < len(ignoredY) && ignoredY[iy]: + e = diff.UniqueY + default: + e, edits = edits[0], edits[1:] + } + switch e { + case diff.UniqueX: + s.compareAny(withIndexes(ix, -1)) + ix++ + case diff.UniqueY: + s.compareAny(withIndexes(-1, iy)) + iy++ + default: + s.compareAny(withIndexes(ix, iy)) + ix++ + iy++ + } + } +} + +func (s *state) compareMap(t reflect.Type, vx, vy reflect.Value) { + if vx.IsNil() || vy.IsNil() { + s.report(vx.IsNil() && vy.IsNil(), 0) + return + } + + // Cycle-detection for maps. + if eq, visited := s.curPtrs.Push(vx, vy); visited { + s.report(eq, reportByCycle) + return + } + defer s.curPtrs.Pop(vx, vy) + + // We combine and sort the two map keys so that we can perform the + // comparisons in a deterministic order. + step := MapIndex{&mapIndex{pathStep: pathStep{typ: t.Elem()}}} + for _, k := range value.SortKeys(append(vx.MapKeys(), vy.MapKeys()...)) { + step.vx = vx.MapIndex(k) + step.vy = vy.MapIndex(k) + step.key = k + if !step.vx.IsValid() && !step.vy.IsValid() { + // It is possible for both vx and vy to be invalid if the + // key contained a NaN value in it. + // + // Even with the ability to retrieve NaN keys in Go 1.12, + // there still isn't a sensible way to compare the values since + // a NaN key may map to multiple unordered values. + // The most reasonable way to compare NaNs would be to compare the + // set of values. However, this is impossible to do efficiently + // since set equality is provably an O(n^2) operation given only + // an Equal function. If we had a Less function or Hash function, + // this could be done in O(n*log(n)) or O(n), respectively. + // + // Rather than adding complex logic to deal with NaNs, make it + // the user's responsibility to compare such obscure maps. + const help = "consider providing a Comparer to compare the map" + panic(fmt.Sprintf("%#v has map key with NaNs\n%s", s.curPath, help)) + } + s.compareAny(step) + } +} + +func (s *state) comparePtr(t reflect.Type, vx, vy reflect.Value) { + if vx.IsNil() || vy.IsNil() { + s.report(vx.IsNil() && vy.IsNil(), 0) + return + } + + // Cycle-detection for pointers. + if eq, visited := s.curPtrs.Push(vx, vy); visited { + s.report(eq, reportByCycle) + return + } + defer s.curPtrs.Pop(vx, vy) + + vx, vy = vx.Elem(), vy.Elem() + s.compareAny(Indirect{&indirect{pathStep{t.Elem(), vx, vy}}}) +} + +func (s *state) compareInterface(t reflect.Type, vx, vy reflect.Value) { + if vx.IsNil() || vy.IsNil() { + s.report(vx.IsNil() && vy.IsNil(), 0) + return + } + vx, vy = vx.Elem(), vy.Elem() + if vx.Type() != vy.Type() { + s.report(false, 0) + return + } + s.compareAny(TypeAssertion{&typeAssertion{pathStep{vx.Type(), vx, vy}}}) +} + +func (s *state) report(eq bool, rf resultFlags) { + if rf&reportByIgnore == 0 { + if eq { + s.result.NumSame++ + rf |= reportEqual + } else { + s.result.NumDiff++ + rf |= reportUnequal + } + } + for _, r := range s.reporters { + r.Report(Result{flags: rf}) + } +} + +// recChecker tracks the state needed to periodically perform checks that +// user provided transformers are not stuck in an infinitely recursive cycle. +type recChecker struct{ next int } + +// Check scans the Path for any recursive transformers and panics when any +// recursive transformers are detected. Note that the presence of a +// recursive Transformer does not necessarily imply an infinite cycle. +// As such, this check only activates after some minimal number of path steps. +func (rc *recChecker) Check(p Path) { + const minLen = 1 << 16 + if rc.next == 0 { + rc.next = minLen + } + if len(p) < rc.next { + return + } + rc.next <<= 1 + + // Check whether the same transformer has appeared at least twice. + var ss []string + m := map[Option]int{} + for _, ps := range p { + if t, ok := ps.(Transform); ok { + t := t.Option() + if m[t] == 1 { // Transformer was used exactly once before + tf := t.(*transformer).fnc.Type() + ss = append(ss, fmt.Sprintf("%v: %v => %v", t, tf.In(0), tf.Out(0))) + } + m[t]++ + } + } + if len(ss) > 0 { + const warning = "recursive set of Transformers detected" + const help = "consider using cmpopts.AcyclicTransformer" + set := strings.Join(ss, "\n\t") + panic(fmt.Sprintf("%s:\n\t%s\n%s", warning, set, help)) + } +} + +// dynChecker tracks the state needed to periodically perform checks that +// user provided functions are symmetric and deterministic. +// The zero value is safe for immediate use. +type dynChecker struct{ curr, next int } + +// Next increments the state and reports whether a check should be performed. +// +// Checks occur every Nth function call, where N is a triangular number: +// +// 0 1 3 6 10 15 21 28 36 45 55 66 78 91 105 120 136 153 171 190 ... +// +// See https://en.wikipedia.org/wiki/Triangular_number +// +// This sequence ensures that the cost of checks drops significantly as +// the number of functions calls grows larger. +func (dc *dynChecker) Next() bool { + ok := dc.curr == dc.next + if ok { + dc.curr = 0 + dc.next++ + } + dc.curr++ + return ok +} + +// makeAddressable returns a value that is always addressable. +// It returns the input verbatim if it is already addressable, +// otherwise it creates a new value and returns an addressable copy. +func makeAddressable(v reflect.Value) reflect.Value { + if v.CanAddr() { + return v + } + vc := reflect.New(v.Type()).Elem() + vc.Set(v) + return vc +} diff --git a/tests/vendor/github.com/google/go-cmp/cmp/export.go b/tests/vendor/github.com/google/go-cmp/cmp/export.go new file mode 100644 index 000000000..29f82fe6b --- /dev/null +++ b/tests/vendor/github.com/google/go-cmp/cmp/export.go @@ -0,0 +1,31 @@ +// Copyright 2017, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cmp + +import ( + "reflect" + "unsafe" +) + +// retrieveUnexportedField uses unsafe to forcibly retrieve any field from +// a struct such that the value has read-write permissions. +// +// The parent struct, v, must be addressable, while f must be a StructField +// describing the field to retrieve. If addr is false, +// then the returned value will be shallowed copied to be non-addressable. +func retrieveUnexportedField(v reflect.Value, f reflect.StructField, addr bool) reflect.Value { + ve := reflect.NewAt(f.Type, unsafe.Pointer(uintptr(unsafe.Pointer(v.UnsafeAddr()))+f.Offset)).Elem() + if !addr { + // A field is addressable if and only if the struct is addressable. + // If the original parent value was not addressable, shallow copy the + // value to make it non-addressable to avoid leaking an implementation + // detail of how forcibly exporting a field works. + if ve.Kind() == reflect.Interface && ve.IsNil() { + return reflect.Zero(f.Type) + } + return reflect.ValueOf(ve.Interface()).Convert(f.Type) + } + return ve +} diff --git a/tests/vendor/github.com/google/go-cmp/cmp/internal/diff/debug_disable.go b/tests/vendor/github.com/google/go-cmp/cmp/internal/diff/debug_disable.go new file mode 100644 index 000000000..36062a604 --- /dev/null +++ b/tests/vendor/github.com/google/go-cmp/cmp/internal/diff/debug_disable.go @@ -0,0 +1,18 @@ +// Copyright 2017, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !cmp_debug +// +build !cmp_debug + +package diff + +var debug debugger + +type debugger struct{} + +func (debugger) Begin(_, _ int, f EqualFunc, _, _ *EditScript) EqualFunc { + return f +} +func (debugger) Update() {} +func (debugger) Finish() {} diff --git a/tests/vendor/github.com/google/go-cmp/cmp/internal/diff/debug_enable.go b/tests/vendor/github.com/google/go-cmp/cmp/internal/diff/debug_enable.go new file mode 100644 index 000000000..a3b97a1ad --- /dev/null +++ b/tests/vendor/github.com/google/go-cmp/cmp/internal/diff/debug_enable.go @@ -0,0 +1,123 @@ +// Copyright 2017, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build cmp_debug +// +build cmp_debug + +package diff + +import ( + "fmt" + "strings" + "sync" + "time" +) + +// The algorithm can be seen running in real-time by enabling debugging: +// go test -tags=cmp_debug -v +// +// Example output: +// === RUN TestDifference/#34 +// ┌───────────────────────────────┐ +// │ \ · · · · · · · · · · · · · · │ +// │ · # · · · · · · · · · · · · · │ +// │ · \ · · · · · · · · · · · · · │ +// │ · · \ · · · · · · · · · · · · │ +// │ · · · X # · · · · · · · · · · │ +// │ · · · # \ · · · · · · · · · · │ +// │ · · · · · # # · · · · · · · · │ +// │ · · · · · # \ · · · · · · · · │ +// │ · · · · · · · \ · · · · · · · │ +// │ · · · · · · · · \ · · · · · · │ +// │ · · · · · · · · · \ · · · · · │ +// │ · · · · · · · · · · \ · · # · │ +// │ · · · · · · · · · · · \ # # · │ +// │ · · · · · · · · · · · # # # · │ +// │ · · · · · · · · · · # # # # · │ +// │ · · · · · · · · · # # # # # · │ +// │ · · · · · · · · · · · · · · \ │ +// └───────────────────────────────┘ +// [.Y..M.XY......YXYXY.|] +// +// The grid represents the edit-graph where the horizontal axis represents +// list X and the vertical axis represents list Y. The start of the two lists +// is the top-left, while the ends are the bottom-right. The '·' represents +// an unexplored node in the graph. The '\' indicates that the two symbols +// from list X and Y are equal. The 'X' indicates that two symbols are similar +// (but not exactly equal) to each other. The '#' indicates that the two symbols +// are different (and not similar). The algorithm traverses this graph trying to +// make the paths starting in the top-left and the bottom-right connect. +// +// The series of '.', 'X', 'Y', and 'M' characters at the bottom represents +// the currently established path from the forward and reverse searches, +// separated by a '|' character. + +const ( + updateDelay = 100 * time.Millisecond + finishDelay = 500 * time.Millisecond + ansiTerminal = true // ANSI escape codes used to move terminal cursor +) + +var debug debugger + +type debugger struct { + sync.Mutex + p1, p2 EditScript + fwdPath, revPath *EditScript + grid []byte + lines int +} + +func (dbg *debugger) Begin(nx, ny int, f EqualFunc, p1, p2 *EditScript) EqualFunc { + dbg.Lock() + dbg.fwdPath, dbg.revPath = p1, p2 + top := "┌─" + strings.Repeat("──", nx) + "┐\n" + row := "│ " + strings.Repeat("· ", nx) + "│\n" + btm := "└─" + strings.Repeat("──", nx) + "┘\n" + dbg.grid = []byte(top + strings.Repeat(row, ny) + btm) + dbg.lines = strings.Count(dbg.String(), "\n") + fmt.Print(dbg) + + // Wrap the EqualFunc so that we can intercept each result. + return func(ix, iy int) (r Result) { + cell := dbg.grid[len(top)+iy*len(row):][len("│ ")+len("· ")*ix:][:len("·")] + for i := range cell { + cell[i] = 0 // Zero out the multiple bytes of UTF-8 middle-dot + } + switch r = f(ix, iy); { + case r.Equal(): + cell[0] = '\\' + case r.Similar(): + cell[0] = 'X' + default: + cell[0] = '#' + } + return + } +} + +func (dbg *debugger) Update() { + dbg.print(updateDelay) +} + +func (dbg *debugger) Finish() { + dbg.print(finishDelay) + dbg.Unlock() +} + +func (dbg *debugger) String() string { + dbg.p1, dbg.p2 = *dbg.fwdPath, dbg.p2[:0] + for i := len(*dbg.revPath) - 1; i >= 0; i-- { + dbg.p2 = append(dbg.p2, (*dbg.revPath)[i]) + } + return fmt.Sprintf("%s[%v|%v]\n\n", dbg.grid, dbg.p1, dbg.p2) +} + +func (dbg *debugger) print(d time.Duration) { + if ansiTerminal { + fmt.Printf("\x1b[%dA", dbg.lines) // Reset terminal cursor + } + fmt.Print(dbg) + time.Sleep(d) +} diff --git a/tests/vendor/github.com/google/go-cmp/cmp/internal/diff/diff.go b/tests/vendor/github.com/google/go-cmp/cmp/internal/diff/diff.go new file mode 100644 index 000000000..a248e5436 --- /dev/null +++ b/tests/vendor/github.com/google/go-cmp/cmp/internal/diff/diff.go @@ -0,0 +1,402 @@ +// Copyright 2017, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package diff implements an algorithm for producing edit-scripts. +// The edit-script is a sequence of operations needed to transform one list +// of symbols into another (or vice-versa). The edits allowed are insertions, +// deletions, and modifications. The summation of all edits is called the +// Levenshtein distance as this problem is well-known in computer science. +// +// This package prioritizes performance over accuracy. That is, the run time +// is more important than obtaining a minimal Levenshtein distance. +package diff + +import ( + "math/rand" + "time" + + "github.com/google/go-cmp/cmp/internal/flags" +) + +// EditType represents a single operation within an edit-script. +type EditType uint8 + +const ( + // Identity indicates that a symbol pair is identical in both list X and Y. + Identity EditType = iota + // UniqueX indicates that a symbol only exists in X and not Y. + UniqueX + // UniqueY indicates that a symbol only exists in Y and not X. + UniqueY + // Modified indicates that a symbol pair is a modification of each other. + Modified +) + +// EditScript represents the series of differences between two lists. +type EditScript []EditType + +// String returns a human-readable string representing the edit-script where +// Identity, UniqueX, UniqueY, and Modified are represented by the +// '.', 'X', 'Y', and 'M' characters, respectively. +func (es EditScript) String() string { + b := make([]byte, len(es)) + for i, e := range es { + switch e { + case Identity: + b[i] = '.' + case UniqueX: + b[i] = 'X' + case UniqueY: + b[i] = 'Y' + case Modified: + b[i] = 'M' + default: + panic("invalid edit-type") + } + } + return string(b) +} + +// stats returns a histogram of the number of each type of edit operation. +func (es EditScript) stats() (s struct{ NI, NX, NY, NM int }) { + for _, e := range es { + switch e { + case Identity: + s.NI++ + case UniqueX: + s.NX++ + case UniqueY: + s.NY++ + case Modified: + s.NM++ + default: + panic("invalid edit-type") + } + } + return +} + +// Dist is the Levenshtein distance and is guaranteed to be 0 if and only if +// lists X and Y are equal. +func (es EditScript) Dist() int { return len(es) - es.stats().NI } + +// LenX is the length of the X list. +func (es EditScript) LenX() int { return len(es) - es.stats().NY } + +// LenY is the length of the Y list. +func (es EditScript) LenY() int { return len(es) - es.stats().NX } + +// EqualFunc reports whether the symbols at indexes ix and iy are equal. +// When called by Difference, the index is guaranteed to be within nx and ny. +type EqualFunc func(ix int, iy int) Result + +// Result is the result of comparison. +// NumSame is the number of sub-elements that are equal. +// NumDiff is the number of sub-elements that are not equal. +type Result struct{ NumSame, NumDiff int } + +// BoolResult returns a Result that is either Equal or not Equal. +func BoolResult(b bool) Result { + if b { + return Result{NumSame: 1} // Equal, Similar + } else { + return Result{NumDiff: 2} // Not Equal, not Similar + } +} + +// Equal indicates whether the symbols are equal. Two symbols are equal +// if and only if NumDiff == 0. If Equal, then they are also Similar. +func (r Result) Equal() bool { return r.NumDiff == 0 } + +// Similar indicates whether two symbols are similar and may be represented +// by using the Modified type. As a special case, we consider binary comparisons +// (i.e., those that return Result{1, 0} or Result{0, 1}) to be similar. +// +// The exact ratio of NumSame to NumDiff to determine similarity may change. +func (r Result) Similar() bool { + // Use NumSame+1 to offset NumSame so that binary comparisons are similar. + return r.NumSame+1 >= r.NumDiff +} + +var randBool = rand.New(rand.NewSource(time.Now().Unix())).Intn(2) == 0 + +// Difference reports whether two lists of lengths nx and ny are equal +// given the definition of equality provided as f. +// +// This function returns an edit-script, which is a sequence of operations +// needed to convert one list into the other. The following invariants for +// the edit-script are maintained: +// - eq == (es.Dist()==0) +// - nx == es.LenX() +// - ny == es.LenY() +// +// This algorithm is not guaranteed to be an optimal solution (i.e., one that +// produces an edit-script with a minimal Levenshtein distance). This algorithm +// favors performance over optimality. The exact output is not guaranteed to +// be stable and may change over time. +func Difference(nx, ny int, f EqualFunc) (es EditScript) { + // This algorithm is based on traversing what is known as an "edit-graph". + // See Figure 1 from "An O(ND) Difference Algorithm and Its Variations" + // by Eugene W. Myers. Since D can be as large as N itself, this is + // effectively O(N^2). Unlike the algorithm from that paper, we are not + // interested in the optimal path, but at least some "decent" path. + // + // For example, let X and Y be lists of symbols: + // X = [A B C A B B A] + // Y = [C B A B A C] + // + // The edit-graph can be drawn as the following: + // A B C A B B A + // ┌─────────────┐ + // C │_|_|\|_|_|_|_│ 0 + // B │_|\|_|_|\|\|_│ 1 + // A │\|_|_|\|_|_|\│ 2 + // B │_|\|_|_|\|\|_│ 3 + // A │\|_|_|\|_|_|\│ 4 + // C │ | |\| | | | │ 5 + // └─────────────┘ 6 + // 0 1 2 3 4 5 6 7 + // + // List X is written along the horizontal axis, while list Y is written + // along the vertical axis. At any point on this grid, if the symbol in + // list X matches the corresponding symbol in list Y, then a '\' is drawn. + // The goal of any minimal edit-script algorithm is to find a path from the + // top-left corner to the bottom-right corner, while traveling through the + // fewest horizontal or vertical edges. + // A horizontal edge is equivalent to inserting a symbol from list X. + // A vertical edge is equivalent to inserting a symbol from list Y. + // A diagonal edge is equivalent to a matching symbol between both X and Y. + + // Invariants: + // - 0 ≤ fwdPath.X ≤ (fwdFrontier.X, revFrontier.X) ≤ revPath.X ≤ nx + // - 0 ≤ fwdPath.Y ≤ (fwdFrontier.Y, revFrontier.Y) ≤ revPath.Y ≤ ny + // + // In general: + // - fwdFrontier.X < revFrontier.X + // - fwdFrontier.Y < revFrontier.Y + // + // Unless, it is time for the algorithm to terminate. + fwdPath := path{+1, point{0, 0}, make(EditScript, 0, (nx+ny)/2)} + revPath := path{-1, point{nx, ny}, make(EditScript, 0)} + fwdFrontier := fwdPath.point // Forward search frontier + revFrontier := revPath.point // Reverse search frontier + + // Search budget bounds the cost of searching for better paths. + // The longest sequence of non-matching symbols that can be tolerated is + // approximately the square-root of the search budget. + searchBudget := 4 * (nx + ny) // O(n) + + // Running the tests with the "cmp_debug" build tag prints a visualization + // of the algorithm running in real-time. This is educational for + // understanding how the algorithm works. See debug_enable.go. + f = debug.Begin(nx, ny, f, &fwdPath.es, &revPath.es) + + // The algorithm below is a greedy, meet-in-the-middle algorithm for + // computing sub-optimal edit-scripts between two lists. + // + // The algorithm is approximately as follows: + // - Searching for differences switches back-and-forth between + // a search that starts at the beginning (the top-left corner), and + // a search that starts at the end (the bottom-right corner). + // The goal of the search is connect with the search + // from the opposite corner. + // - As we search, we build a path in a greedy manner, + // where the first match seen is added to the path (this is sub-optimal, + // but provides a decent result in practice). When matches are found, + // we try the next pair of symbols in the lists and follow all matches + // as far as possible. + // - When searching for matches, we search along a diagonal going through + // through the "frontier" point. If no matches are found, + // we advance the frontier towards the opposite corner. + // - This algorithm terminates when either the X coordinates or the + // Y coordinates of the forward and reverse frontier points ever intersect. + + // This algorithm is correct even if searching only in the forward direction + // or in the reverse direction. We do both because it is commonly observed + // that two lists commonly differ because elements were added to the front + // or end of the other list. + // + // Non-deterministically start with either the forward or reverse direction + // to introduce some deliberate instability so that we have the flexibility + // to change this algorithm in the future. + if flags.Deterministic || randBool { + goto forwardSearch + } else { + goto reverseSearch + } + +forwardSearch: + { + // Forward search from the beginning. + if fwdFrontier.X >= revFrontier.X || fwdFrontier.Y >= revFrontier.Y || searchBudget == 0 { + goto finishSearch + } + for stop1, stop2, i := false, false, 0; !(stop1 && stop2) && searchBudget > 0; i++ { + // Search in a diagonal pattern for a match. + z := zigzag(i) + p := point{fwdFrontier.X + z, fwdFrontier.Y - z} + switch { + case p.X >= revPath.X || p.Y < fwdPath.Y: + stop1 = true // Hit top-right corner + case p.Y >= revPath.Y || p.X < fwdPath.X: + stop2 = true // Hit bottom-left corner + case f(p.X, p.Y).Equal(): + // Match found, so connect the path to this point. + fwdPath.connect(p, f) + fwdPath.append(Identity) + // Follow sequence of matches as far as possible. + for fwdPath.X < revPath.X && fwdPath.Y < revPath.Y { + if !f(fwdPath.X, fwdPath.Y).Equal() { + break + } + fwdPath.append(Identity) + } + fwdFrontier = fwdPath.point + stop1, stop2 = true, true + default: + searchBudget-- // Match not found + } + debug.Update() + } + // Advance the frontier towards reverse point. + if revPath.X-fwdFrontier.X >= revPath.Y-fwdFrontier.Y { + fwdFrontier.X++ + } else { + fwdFrontier.Y++ + } + goto reverseSearch + } + +reverseSearch: + { + // Reverse search from the end. + if fwdFrontier.X >= revFrontier.X || fwdFrontier.Y >= revFrontier.Y || searchBudget == 0 { + goto finishSearch + } + for stop1, stop2, i := false, false, 0; !(stop1 && stop2) && searchBudget > 0; i++ { + // Search in a diagonal pattern for a match. + z := zigzag(i) + p := point{revFrontier.X - z, revFrontier.Y + z} + switch { + case fwdPath.X >= p.X || revPath.Y < p.Y: + stop1 = true // Hit bottom-left corner + case fwdPath.Y >= p.Y || revPath.X < p.X: + stop2 = true // Hit top-right corner + case f(p.X-1, p.Y-1).Equal(): + // Match found, so connect the path to this point. + revPath.connect(p, f) + revPath.append(Identity) + // Follow sequence of matches as far as possible. + for fwdPath.X < revPath.X && fwdPath.Y < revPath.Y { + if !f(revPath.X-1, revPath.Y-1).Equal() { + break + } + revPath.append(Identity) + } + revFrontier = revPath.point + stop1, stop2 = true, true + default: + searchBudget-- // Match not found + } + debug.Update() + } + // Advance the frontier towards forward point. + if revFrontier.X-fwdPath.X >= revFrontier.Y-fwdPath.Y { + revFrontier.X-- + } else { + revFrontier.Y-- + } + goto forwardSearch + } + +finishSearch: + // Join the forward and reverse paths and then append the reverse path. + fwdPath.connect(revPath.point, f) + for i := len(revPath.es) - 1; i >= 0; i-- { + t := revPath.es[i] + revPath.es = revPath.es[:i] + fwdPath.append(t) + } + debug.Finish() + return fwdPath.es +} + +type path struct { + dir int // +1 if forward, -1 if reverse + point // Leading point of the EditScript path + es EditScript +} + +// connect appends any necessary Identity, Modified, UniqueX, or UniqueY types +// to the edit-script to connect p.point to dst. +func (p *path) connect(dst point, f EqualFunc) { + if p.dir > 0 { + // Connect in forward direction. + for dst.X > p.X && dst.Y > p.Y { + switch r := f(p.X, p.Y); { + case r.Equal(): + p.append(Identity) + case r.Similar(): + p.append(Modified) + case dst.X-p.X >= dst.Y-p.Y: + p.append(UniqueX) + default: + p.append(UniqueY) + } + } + for dst.X > p.X { + p.append(UniqueX) + } + for dst.Y > p.Y { + p.append(UniqueY) + } + } else { + // Connect in reverse direction. + for p.X > dst.X && p.Y > dst.Y { + switch r := f(p.X-1, p.Y-1); { + case r.Equal(): + p.append(Identity) + case r.Similar(): + p.append(Modified) + case p.Y-dst.Y >= p.X-dst.X: + p.append(UniqueY) + default: + p.append(UniqueX) + } + } + for p.X > dst.X { + p.append(UniqueX) + } + for p.Y > dst.Y { + p.append(UniqueY) + } + } +} + +func (p *path) append(t EditType) { + p.es = append(p.es, t) + switch t { + case Identity, Modified: + p.add(p.dir, p.dir) + case UniqueX: + p.add(p.dir, 0) + case UniqueY: + p.add(0, p.dir) + } + debug.Update() +} + +type point struct{ X, Y int } + +func (p *point) add(dx, dy int) { p.X += dx; p.Y += dy } + +// zigzag maps a consecutive sequence of integers to a zig-zag sequence. +// +// [0 1 2 3 4 5 ...] => [0 -1 +1 -2 +2 ...] +func zigzag(x int) int { + if x&1 != 0 { + x = ^x + } + return x >> 1 +} diff --git a/tests/vendor/github.com/google/go-cmp/cmp/internal/flags/flags.go b/tests/vendor/github.com/google/go-cmp/cmp/internal/flags/flags.go new file mode 100644 index 000000000..d8e459c9b --- /dev/null +++ b/tests/vendor/github.com/google/go-cmp/cmp/internal/flags/flags.go @@ -0,0 +1,9 @@ +// Copyright 2019, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package flags + +// Deterministic controls whether the output of Diff should be deterministic. +// This is only used for testing. +var Deterministic bool diff --git a/tests/vendor/github.com/google/go-cmp/cmp/internal/function/func.go b/tests/vendor/github.com/google/go-cmp/cmp/internal/function/func.go new file mode 100644 index 000000000..def01a6be --- /dev/null +++ b/tests/vendor/github.com/google/go-cmp/cmp/internal/function/func.go @@ -0,0 +1,106 @@ +// Copyright 2017, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package function provides functionality for identifying function types. +package function + +import ( + "reflect" + "regexp" + "runtime" + "strings" +) + +type funcType int + +const ( + _ funcType = iota + + tbFunc // func(T) bool + ttbFunc // func(T, T) bool + ttiFunc // func(T, T) int + trbFunc // func(T, R) bool + tibFunc // func(T, I) bool + trFunc // func(T) R + + Equal = ttbFunc // func(T, T) bool + EqualAssignable = tibFunc // func(T, I) bool; encapsulates func(T, T) bool + Transformer = trFunc // func(T) R + ValueFilter = ttbFunc // func(T, T) bool + Less = ttbFunc // func(T, T) bool + Compare = ttiFunc // func(T, T) int + ValuePredicate = tbFunc // func(T) bool + KeyValuePredicate = trbFunc // func(T, R) bool +) + +var boolType = reflect.TypeOf(true) +var intType = reflect.TypeOf(0) + +// IsType reports whether the reflect.Type is of the specified function type. +func IsType(t reflect.Type, ft funcType) bool { + if t == nil || t.Kind() != reflect.Func || t.IsVariadic() { + return false + } + ni, no := t.NumIn(), t.NumOut() + switch ft { + case tbFunc: // func(T) bool + if ni == 1 && no == 1 && t.Out(0) == boolType { + return true + } + case ttbFunc: // func(T, T) bool + if ni == 2 && no == 1 && t.In(0) == t.In(1) && t.Out(0) == boolType { + return true + } + case ttiFunc: // func(T, T) int + if ni == 2 && no == 1 && t.In(0) == t.In(1) && t.Out(0) == intType { + return true + } + case trbFunc: // func(T, R) bool + if ni == 2 && no == 1 && t.Out(0) == boolType { + return true + } + case tibFunc: // func(T, I) bool + if ni == 2 && no == 1 && t.In(0).AssignableTo(t.In(1)) && t.Out(0) == boolType { + return true + } + case trFunc: // func(T) R + if ni == 1 && no == 1 { + return true + } + } + return false +} + +var lastIdentRx = regexp.MustCompile(`[_\p{L}][_\p{L}\p{N}]*$`) + +// NameOf returns the name of the function value. +func NameOf(v reflect.Value) string { + fnc := runtime.FuncForPC(v.Pointer()) + if fnc == nil { + return "" + } + fullName := fnc.Name() // e.g., "long/path/name/mypkg.(*MyType).(long/path/name/mypkg.myMethod)-fm" + + // Method closures have a "-fm" suffix. + fullName = strings.TrimSuffix(fullName, "-fm") + + var name string + for len(fullName) > 0 { + inParen := strings.HasSuffix(fullName, ")") + fullName = strings.TrimSuffix(fullName, ")") + + s := lastIdentRx.FindString(fullName) + if s == "" { + break + } + name = s + "." + name + fullName = strings.TrimSuffix(fullName, s) + + if i := strings.LastIndexByte(fullName, '('); inParen && i >= 0 { + fullName = fullName[:i] + } + fullName = strings.TrimSuffix(fullName, ".") + } + return strings.TrimSuffix(name, ".") +} diff --git a/tests/vendor/github.com/google/go-cmp/cmp/internal/value/name.go b/tests/vendor/github.com/google/go-cmp/cmp/internal/value/name.go new file mode 100644 index 000000000..7b498bb2c --- /dev/null +++ b/tests/vendor/github.com/google/go-cmp/cmp/internal/value/name.go @@ -0,0 +1,164 @@ +// Copyright 2020, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package value + +import ( + "reflect" + "strconv" +) + +var anyType = reflect.TypeOf((*interface{})(nil)).Elem() + +// TypeString is nearly identical to reflect.Type.String, +// but has an additional option to specify that full type names be used. +func TypeString(t reflect.Type, qualified bool) string { + return string(appendTypeName(nil, t, qualified, false)) +} + +func appendTypeName(b []byte, t reflect.Type, qualified, elideFunc bool) []byte { + // BUG: Go reflection provides no way to disambiguate two named types + // of the same name and within the same package, + // but declared within the namespace of different functions. + + // Use the "any" alias instead of "interface{}" for better readability. + if t == anyType { + return append(b, "any"...) + } + + // Named type. + if t.Name() != "" { + if qualified && t.PkgPath() != "" { + b = append(b, '"') + b = append(b, t.PkgPath()...) + b = append(b, '"') + b = append(b, '.') + b = append(b, t.Name()...) + } else { + b = append(b, t.String()...) + } + return b + } + + // Unnamed type. + switch k := t.Kind(); k { + case reflect.Bool, reflect.String, reflect.UnsafePointer, + reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, + reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr, + reflect.Float32, reflect.Float64, reflect.Complex64, reflect.Complex128: + b = append(b, k.String()...) + case reflect.Chan: + if t.ChanDir() == reflect.RecvDir { + b = append(b, "<-"...) + } + b = append(b, "chan"...) + if t.ChanDir() == reflect.SendDir { + b = append(b, "<-"...) + } + b = append(b, ' ') + b = appendTypeName(b, t.Elem(), qualified, false) + case reflect.Func: + if !elideFunc { + b = append(b, "func"...) + } + b = append(b, '(') + for i := 0; i < t.NumIn(); i++ { + if i > 0 { + b = append(b, ", "...) + } + if i == t.NumIn()-1 && t.IsVariadic() { + b = append(b, "..."...) + b = appendTypeName(b, t.In(i).Elem(), qualified, false) + } else { + b = appendTypeName(b, t.In(i), qualified, false) + } + } + b = append(b, ')') + switch t.NumOut() { + case 0: + // Do nothing + case 1: + b = append(b, ' ') + b = appendTypeName(b, t.Out(0), qualified, false) + default: + b = append(b, " ("...) + for i := 0; i < t.NumOut(); i++ { + if i > 0 { + b = append(b, ", "...) + } + b = appendTypeName(b, t.Out(i), qualified, false) + } + b = append(b, ')') + } + case reflect.Struct: + b = append(b, "struct{ "...) + for i := 0; i < t.NumField(); i++ { + if i > 0 { + b = append(b, "; "...) + } + sf := t.Field(i) + if !sf.Anonymous { + if qualified && sf.PkgPath != "" { + b = append(b, '"') + b = append(b, sf.PkgPath...) + b = append(b, '"') + b = append(b, '.') + } + b = append(b, sf.Name...) + b = append(b, ' ') + } + b = appendTypeName(b, sf.Type, qualified, false) + if sf.Tag != "" { + b = append(b, ' ') + b = strconv.AppendQuote(b, string(sf.Tag)) + } + } + if b[len(b)-1] == ' ' { + b = b[:len(b)-1] + } else { + b = append(b, ' ') + } + b = append(b, '}') + case reflect.Slice, reflect.Array: + b = append(b, '[') + if k == reflect.Array { + b = strconv.AppendUint(b, uint64(t.Len()), 10) + } + b = append(b, ']') + b = appendTypeName(b, t.Elem(), qualified, false) + case reflect.Map: + b = append(b, "map["...) + b = appendTypeName(b, t.Key(), qualified, false) + b = append(b, ']') + b = appendTypeName(b, t.Elem(), qualified, false) + case reflect.Ptr: + b = append(b, '*') + b = appendTypeName(b, t.Elem(), qualified, false) + case reflect.Interface: + b = append(b, "interface{ "...) + for i := 0; i < t.NumMethod(); i++ { + if i > 0 { + b = append(b, "; "...) + } + m := t.Method(i) + if qualified && m.PkgPath != "" { + b = append(b, '"') + b = append(b, m.PkgPath...) + b = append(b, '"') + b = append(b, '.') + } + b = append(b, m.Name...) + b = appendTypeName(b, m.Type, qualified, true) + } + if b[len(b)-1] == ' ' { + b = b[:len(b)-1] + } else { + b = append(b, ' ') + } + b = append(b, '}') + default: + panic("invalid kind: " + k.String()) + } + return b +} diff --git a/tests/vendor/github.com/google/go-cmp/cmp/internal/value/pointer.go b/tests/vendor/github.com/google/go-cmp/cmp/internal/value/pointer.go new file mode 100644 index 000000000..e5dfff69a --- /dev/null +++ b/tests/vendor/github.com/google/go-cmp/cmp/internal/value/pointer.go @@ -0,0 +1,34 @@ +// Copyright 2018, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package value + +import ( + "reflect" + "unsafe" +) + +// Pointer is an opaque typed pointer and is guaranteed to be comparable. +type Pointer struct { + p unsafe.Pointer + t reflect.Type +} + +// PointerOf returns a Pointer from v, which must be a +// reflect.Ptr, reflect.Slice, or reflect.Map. +func PointerOf(v reflect.Value) Pointer { + // The proper representation of a pointer is unsafe.Pointer, + // which is necessary if the GC ever uses a moving collector. + return Pointer{unsafe.Pointer(v.Pointer()), v.Type()} +} + +// IsNil reports whether the pointer is nil. +func (p Pointer) IsNil() bool { + return p.p == nil +} + +// Uintptr returns the pointer as a uintptr. +func (p Pointer) Uintptr() uintptr { + return uintptr(p.p) +} diff --git a/tests/vendor/github.com/google/go-cmp/cmp/internal/value/sort.go b/tests/vendor/github.com/google/go-cmp/cmp/internal/value/sort.go new file mode 100644 index 000000000..98533b036 --- /dev/null +++ b/tests/vendor/github.com/google/go-cmp/cmp/internal/value/sort.go @@ -0,0 +1,106 @@ +// Copyright 2017, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package value + +import ( + "fmt" + "math" + "reflect" + "sort" +) + +// SortKeys sorts a list of map keys, deduplicating keys if necessary. +// The type of each value must be comparable. +func SortKeys(vs []reflect.Value) []reflect.Value { + if len(vs) == 0 { + return vs + } + + // Sort the map keys. + sort.SliceStable(vs, func(i, j int) bool { return isLess(vs[i], vs[j]) }) + + // Deduplicate keys (fails for NaNs). + vs2 := vs[:1] + for _, v := range vs[1:] { + if isLess(vs2[len(vs2)-1], v) { + vs2 = append(vs2, v) + } + } + return vs2 +} + +// isLess is a generic function for sorting arbitrary map keys. +// The inputs must be of the same type and must be comparable. +func isLess(x, y reflect.Value) bool { + switch x.Type().Kind() { + case reflect.Bool: + return !x.Bool() && y.Bool() + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return x.Int() < y.Int() + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return x.Uint() < y.Uint() + case reflect.Float32, reflect.Float64: + // NOTE: This does not sort -0 as less than +0 + // since Go maps treat -0 and +0 as equal keys. + fx, fy := x.Float(), y.Float() + return fx < fy || math.IsNaN(fx) && !math.IsNaN(fy) + case reflect.Complex64, reflect.Complex128: + cx, cy := x.Complex(), y.Complex() + rx, ix, ry, iy := real(cx), imag(cx), real(cy), imag(cy) + if rx == ry || (math.IsNaN(rx) && math.IsNaN(ry)) { + return ix < iy || math.IsNaN(ix) && !math.IsNaN(iy) + } + return rx < ry || math.IsNaN(rx) && !math.IsNaN(ry) + case reflect.Ptr, reflect.UnsafePointer, reflect.Chan: + return x.Pointer() < y.Pointer() + case reflect.String: + return x.String() < y.String() + case reflect.Array: + for i := 0; i < x.Len(); i++ { + if isLess(x.Index(i), y.Index(i)) { + return true + } + if isLess(y.Index(i), x.Index(i)) { + return false + } + } + return false + case reflect.Struct: + for i := 0; i < x.NumField(); i++ { + if isLess(x.Field(i), y.Field(i)) { + return true + } + if isLess(y.Field(i), x.Field(i)) { + return false + } + } + return false + case reflect.Interface: + vx, vy := x.Elem(), y.Elem() + if !vx.IsValid() || !vy.IsValid() { + return !vx.IsValid() && vy.IsValid() + } + tx, ty := vx.Type(), vy.Type() + if tx == ty { + return isLess(x.Elem(), y.Elem()) + } + if tx.Kind() != ty.Kind() { + return vx.Kind() < vy.Kind() + } + if tx.String() != ty.String() { + return tx.String() < ty.String() + } + if tx.PkgPath() != ty.PkgPath() { + return tx.PkgPath() < ty.PkgPath() + } + // This can happen in rare situations, so we fallback to just comparing + // the unique pointer for a reflect.Type. This guarantees deterministic + // ordering within a program, but it is obviously not stable. + return reflect.ValueOf(vx.Type()).Pointer() < reflect.ValueOf(vy.Type()).Pointer() + default: + // Must be Func, Map, or Slice; which are not comparable. + panic(fmt.Sprintf("%T is not comparable", x.Type())) + } +} diff --git a/tests/vendor/github.com/google/go-cmp/cmp/options.go b/tests/vendor/github.com/google/go-cmp/cmp/options.go new file mode 100644 index 000000000..ba3fce81f --- /dev/null +++ b/tests/vendor/github.com/google/go-cmp/cmp/options.go @@ -0,0 +1,562 @@ +// Copyright 2017, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cmp + +import ( + "fmt" + "reflect" + "regexp" + "strings" + + "github.com/google/go-cmp/cmp/internal/function" +) + +// Option configures for specific behavior of [Equal] and [Diff]. In particular, +// the fundamental Option functions ([Ignore], [Transformer], and [Comparer]), +// configure how equality is determined. +// +// The fundamental options may be composed with filters ([FilterPath] and +// [FilterValues]) to control the scope over which they are applied. +// +// The [github.com/google/go-cmp/cmp/cmpopts] package provides helper functions +// for creating options that may be used with [Equal] and [Diff]. +type Option interface { + // filter applies all filters and returns the option that remains. + // Each option may only read s.curPath and call s.callTTBFunc. + // + // An Options is returned only if multiple comparers or transformers + // can apply simultaneously and will only contain values of those types + // or sub-Options containing values of those types. + filter(s *state, t reflect.Type, vx, vy reflect.Value) applicableOption +} + +// applicableOption represents the following types: +// +// Fundamental: ignore | validator | *comparer | *transformer +// Grouping: Options +type applicableOption interface { + Option + + // apply executes the option, which may mutate s or panic. + apply(s *state, vx, vy reflect.Value) +} + +// coreOption represents the following types: +// +// Fundamental: ignore | validator | *comparer | *transformer +// Filters: *pathFilter | *valuesFilter +type coreOption interface { + Option + isCore() +} + +type core struct{} + +func (core) isCore() {} + +// Options is a list of [Option] values that also satisfies the [Option] interface. +// Helper comparison packages may return an Options value when packing multiple +// [Option] values into a single [Option]. When this package processes an Options, +// it will be implicitly expanded into a flat list. +// +// Applying a filter on an Options is equivalent to applying that same filter +// on all individual options held within. +type Options []Option + +func (opts Options) filter(s *state, t reflect.Type, vx, vy reflect.Value) (out applicableOption) { + for _, opt := range opts { + switch opt := opt.filter(s, t, vx, vy); opt.(type) { + case ignore: + return ignore{} // Only ignore can short-circuit evaluation + case validator: + out = validator{} // Takes precedence over comparer or transformer + case *comparer, *transformer, Options: + switch out.(type) { + case nil: + out = opt + case validator: + // Keep validator + case *comparer, *transformer, Options: + out = Options{out, opt} // Conflicting comparers or transformers + } + } + } + return out +} + +func (opts Options) apply(s *state, _, _ reflect.Value) { + const warning = "ambiguous set of applicable options" + const help = "consider using filters to ensure at most one Comparer or Transformer may apply" + var ss []string + for _, opt := range flattenOptions(nil, opts) { + ss = append(ss, fmt.Sprint(opt)) + } + set := strings.Join(ss, "\n\t") + panic(fmt.Sprintf("%s at %#v:\n\t%s\n%s", warning, s.curPath, set, help)) +} + +func (opts Options) String() string { + var ss []string + for _, opt := range opts { + ss = append(ss, fmt.Sprint(opt)) + } + return fmt.Sprintf("Options{%s}", strings.Join(ss, ", ")) +} + +// FilterPath returns a new [Option] where opt is only evaluated if filter f +// returns true for the current [Path] in the value tree. +// +// This filter is called even if a slice element or map entry is missing and +// provides an opportunity to ignore such cases. The filter function must be +// symmetric such that the filter result is identical regardless of whether the +// missing value is from x or y. +// +// The option passed in may be an [Ignore], [Transformer], [Comparer], [Options], or +// a previously filtered [Option]. +func FilterPath(f func(Path) bool, opt Option) Option { + if f == nil { + panic("invalid path filter function") + } + if opt := normalizeOption(opt); opt != nil { + return &pathFilter{fnc: f, opt: opt} + } + return nil +} + +type pathFilter struct { + core + fnc func(Path) bool + opt Option +} + +func (f pathFilter) filter(s *state, t reflect.Type, vx, vy reflect.Value) applicableOption { + if f.fnc(s.curPath) { + return f.opt.filter(s, t, vx, vy) + } + return nil +} + +func (f pathFilter) String() string { + return fmt.Sprintf("FilterPath(%s, %v)", function.NameOf(reflect.ValueOf(f.fnc)), f.opt) +} + +// FilterValues returns a new [Option] where opt is only evaluated if filter f, +// which is a function of the form "func(T, T) bool", returns true for the +// current pair of values being compared. If either value is invalid or +// the type of the values is not assignable to T, then this filter implicitly +// returns false. +// +// The filter function must be +// symmetric (i.e., agnostic to the order of the inputs) and +// deterministic (i.e., produces the same result when given the same inputs). +// If T is an interface, it is possible that f is called with two values with +// different concrete types that both implement T. +// +// The option passed in may be an [Ignore], [Transformer], [Comparer], [Options], or +// a previously filtered [Option]. +func FilterValues(f interface{}, opt Option) Option { + v := reflect.ValueOf(f) + if !function.IsType(v.Type(), function.ValueFilter) || v.IsNil() { + panic(fmt.Sprintf("invalid values filter function: %T", f)) + } + if opt := normalizeOption(opt); opt != nil { + vf := &valuesFilter{fnc: v, opt: opt} + if ti := v.Type().In(0); ti.Kind() != reflect.Interface || ti.NumMethod() > 0 { + vf.typ = ti + } + return vf + } + return nil +} + +type valuesFilter struct { + core + typ reflect.Type // T + fnc reflect.Value // func(T, T) bool + opt Option +} + +func (f valuesFilter) filter(s *state, t reflect.Type, vx, vy reflect.Value) applicableOption { + if !vx.IsValid() || !vx.CanInterface() || !vy.IsValid() || !vy.CanInterface() { + return nil + } + if (f.typ == nil || t.AssignableTo(f.typ)) && s.callTTBFunc(f.fnc, vx, vy) { + return f.opt.filter(s, t, vx, vy) + } + return nil +} + +func (f valuesFilter) String() string { + return fmt.Sprintf("FilterValues(%s, %v)", function.NameOf(f.fnc), f.opt) +} + +// Ignore is an [Option] that causes all comparisons to be ignored. +// This value is intended to be combined with [FilterPath] or [FilterValues]. +// It is an error to pass an unfiltered Ignore option to [Equal]. +func Ignore() Option { return ignore{} } + +type ignore struct{ core } + +func (ignore) isFiltered() bool { return false } +func (ignore) filter(_ *state, _ reflect.Type, _, _ reflect.Value) applicableOption { return ignore{} } +func (ignore) apply(s *state, _, _ reflect.Value) { s.report(true, reportByIgnore) } +func (ignore) String() string { return "Ignore()" } + +// validator is a sentinel Option type to indicate that some options could not +// be evaluated due to unexported fields, missing slice elements, or +// missing map entries. Both values are validator only for unexported fields. +type validator struct{ core } + +func (validator) filter(_ *state, _ reflect.Type, vx, vy reflect.Value) applicableOption { + if !vx.IsValid() || !vy.IsValid() { + return validator{} + } + if !vx.CanInterface() || !vy.CanInterface() { + return validator{} + } + return nil +} +func (validator) apply(s *state, vx, vy reflect.Value) { + // Implies missing slice element or map entry. + if !vx.IsValid() || !vy.IsValid() { + s.report(vx.IsValid() == vy.IsValid(), 0) + return + } + + // Unable to Interface implies unexported field without visibility access. + if !vx.CanInterface() || !vy.CanInterface() { + help := "consider using a custom Comparer; if you control the implementation of type, you can also consider using an Exporter, AllowUnexported, or cmpopts.IgnoreUnexported" + var name string + if t := s.curPath.Index(-2).Type(); t.Name() != "" { + // Named type with unexported fields. + name = fmt.Sprintf("%q.%v", t.PkgPath(), t.Name()) // e.g., "path/to/package".MyType + isProtoMessage := func(t reflect.Type) bool { + m, ok := reflect.PointerTo(t).MethodByName("ProtoReflect") + return ok && m.Type.NumIn() == 1 && m.Type.NumOut() == 1 && + m.Type.Out(0).PkgPath() == "google.golang.org/protobuf/reflect/protoreflect" && + m.Type.Out(0).Name() == "Message" + } + if isProtoMessage(t) { + help = `consider using "google.golang.org/protobuf/testing/protocmp".Transform to compare proto.Message types` + } else if _, ok := reflect.New(t).Interface().(error); ok { + help = "consider using cmpopts.EquateErrors to compare error values" + } else if t.Comparable() { + help = "consider using cmpopts.EquateComparable to compare comparable Go types" + } + } else { + // Unnamed type with unexported fields. Derive PkgPath from field. + var pkgPath string + for i := 0; i < t.NumField() && pkgPath == ""; i++ { + pkgPath = t.Field(i).PkgPath + } + name = fmt.Sprintf("%q.(%v)", pkgPath, t.String()) // e.g., "path/to/package".(struct { a int }) + } + panic(fmt.Sprintf("cannot handle unexported field at %#v:\n\t%v\n%s", s.curPath, name, help)) + } + + panic("not reachable") +} + +// identRx represents a valid identifier according to the Go specification. +const identRx = `[_\p{L}][_\p{L}\p{N}]*` + +var identsRx = regexp.MustCompile(`^` + identRx + `(\.` + identRx + `)*$`) + +// Transformer returns an [Option] that applies a transformation function that +// converts values of a certain type into that of another. +// +// The transformer f must be a function "func(T) R" that converts values of +// type T to those of type R and is implicitly filtered to input values +// assignable to T. The transformer must not mutate T in any way. +// +// To help prevent some cases of infinite recursive cycles applying the +// same transform to the output of itself (e.g., in the case where the +// input and output types are the same), an implicit filter is added such that +// a transformer is applicable only if that exact transformer is not already +// in the tail of the [Path] since the last non-[Transform] step. +// For situations where the implicit filter is still insufficient, +// consider using [github.com/google/go-cmp/cmp/cmpopts.AcyclicTransformer], +// which adds a filter to prevent the transformer from +// being recursively applied upon itself. +// +// The name is a user provided label that is used as the [Transform.Name] in the +// transformation [PathStep] (and eventually shown in the [Diff] output). +// The name must be a valid identifier or qualified identifier in Go syntax. +// If empty, an arbitrary name is used. +func Transformer(name string, f interface{}) Option { + v := reflect.ValueOf(f) + if !function.IsType(v.Type(), function.Transformer) || v.IsNil() { + panic(fmt.Sprintf("invalid transformer function: %T", f)) + } + if name == "" { + name = function.NameOf(v) + if !identsRx.MatchString(name) { + name = "λ" // Lambda-symbol as placeholder name + } + } else if !identsRx.MatchString(name) { + panic(fmt.Sprintf("invalid name: %q", name)) + } + tr := &transformer{name: name, fnc: reflect.ValueOf(f)} + if ti := v.Type().In(0); ti.Kind() != reflect.Interface || ti.NumMethod() > 0 { + tr.typ = ti + } + return tr +} + +type transformer struct { + core + name string + typ reflect.Type // T + fnc reflect.Value // func(T) R +} + +func (tr *transformer) isFiltered() bool { return tr.typ != nil } + +func (tr *transformer) filter(s *state, t reflect.Type, _, _ reflect.Value) applicableOption { + for i := len(s.curPath) - 1; i >= 0; i-- { + if t, ok := s.curPath[i].(Transform); !ok { + break // Hit most recent non-Transform step + } else if tr == t.trans { + return nil // Cannot directly use same Transform + } + } + if tr.typ == nil || t.AssignableTo(tr.typ) { + return tr + } + return nil +} + +func (tr *transformer) apply(s *state, vx, vy reflect.Value) { + step := Transform{&transform{pathStep{typ: tr.fnc.Type().Out(0)}, tr}} + vvx := s.callTRFunc(tr.fnc, vx, step) + vvy := s.callTRFunc(tr.fnc, vy, step) + step.vx, step.vy = vvx, vvy + s.compareAny(step) +} + +func (tr transformer) String() string { + return fmt.Sprintf("Transformer(%s, %s)", tr.name, function.NameOf(tr.fnc)) +} + +// Comparer returns an [Option] that determines whether two values are equal +// to each other. +// +// The comparer f must be a function "func(T, T) bool" and is implicitly +// filtered to input values assignable to T. If T is an interface, it is +// possible that f is called with two values of different concrete types that +// both implement T. +// +// The equality function must be: +// - Symmetric: equal(x, y) == equal(y, x) +// - Deterministic: equal(x, y) == equal(x, y) +// - Pure: equal(x, y) does not modify x or y +func Comparer(f interface{}) Option { + v := reflect.ValueOf(f) + if !function.IsType(v.Type(), function.Equal) || v.IsNil() { + panic(fmt.Sprintf("invalid comparer function: %T", f)) + } + cm := &comparer{fnc: v} + if ti := v.Type().In(0); ti.Kind() != reflect.Interface || ti.NumMethod() > 0 { + cm.typ = ti + } + return cm +} + +type comparer struct { + core + typ reflect.Type // T + fnc reflect.Value // func(T, T) bool +} + +func (cm *comparer) isFiltered() bool { return cm.typ != nil } + +func (cm *comparer) filter(_ *state, t reflect.Type, _, _ reflect.Value) applicableOption { + if cm.typ == nil || t.AssignableTo(cm.typ) { + return cm + } + return nil +} + +func (cm *comparer) apply(s *state, vx, vy reflect.Value) { + eq := s.callTTBFunc(cm.fnc, vx, vy) + s.report(eq, reportByFunc) +} + +func (cm comparer) String() string { + return fmt.Sprintf("Comparer(%s)", function.NameOf(cm.fnc)) +} + +// Exporter returns an [Option] that specifies whether [Equal] is allowed to +// introspect into the unexported fields of certain struct types. +// +// Users of this option must understand that comparing on unexported fields +// from external packages is not safe since changes in the internal +// implementation of some external package may cause the result of [Equal] +// to unexpectedly change. However, it may be valid to use this option on types +// defined in an internal package where the semantic meaning of an unexported +// field is in the control of the user. +// +// In many cases, a custom [Comparer] should be used instead that defines +// equality as a function of the public API of a type rather than the underlying +// unexported implementation. +// +// For example, the [reflect.Type] documentation defines equality to be determined +// by the == operator on the interface (essentially performing a shallow pointer +// comparison) and most attempts to compare *[regexp.Regexp] types are interested +// in only checking that the regular expression strings are equal. +// Both of these are accomplished using [Comparer] options: +// +// Comparer(func(x, y reflect.Type) bool { return x == y }) +// Comparer(func(x, y *regexp.Regexp) bool { return x.String() == y.String() }) +// +// In other cases, the [github.com/google/go-cmp/cmp/cmpopts.IgnoreUnexported] +// option can be used to ignore all unexported fields on specified struct types. +func Exporter(f func(reflect.Type) bool) Option { + return exporter(f) +} + +type exporter func(reflect.Type) bool + +func (exporter) filter(_ *state, _ reflect.Type, _, _ reflect.Value) applicableOption { + panic("not implemented") +} + +// AllowUnexported returns an [Option] that allows [Equal] to forcibly introspect +// unexported fields of the specified struct types. +// +// See [Exporter] for the proper use of this option. +func AllowUnexported(types ...interface{}) Option { + m := make(map[reflect.Type]bool) + for _, typ := range types { + t := reflect.TypeOf(typ) + if t.Kind() != reflect.Struct { + panic(fmt.Sprintf("invalid struct type: %T", typ)) + } + m[t] = true + } + return exporter(func(t reflect.Type) bool { return m[t] }) +} + +// Result represents the comparison result for a single node and +// is provided by cmp when calling Report (see [Reporter]). +type Result struct { + _ [0]func() // Make Result incomparable + flags resultFlags +} + +// Equal reports whether the node was determined to be equal or not. +// As a special case, ignored nodes are considered equal. +func (r Result) Equal() bool { + return r.flags&(reportEqual|reportByIgnore) != 0 +} + +// ByIgnore reports whether the node is equal because it was ignored. +// This never reports true if [Result.Equal] reports false. +func (r Result) ByIgnore() bool { + return r.flags&reportByIgnore != 0 +} + +// ByMethod reports whether the Equal method determined equality. +func (r Result) ByMethod() bool { + return r.flags&reportByMethod != 0 +} + +// ByFunc reports whether a [Comparer] function determined equality. +func (r Result) ByFunc() bool { + return r.flags&reportByFunc != 0 +} + +// ByCycle reports whether a reference cycle was detected. +func (r Result) ByCycle() bool { + return r.flags&reportByCycle != 0 +} + +type resultFlags uint + +const ( + _ resultFlags = (1 << iota) / 2 + + reportEqual + reportUnequal + reportByIgnore + reportByMethod + reportByFunc + reportByCycle +) + +// Reporter is an [Option] that can be passed to [Equal]. When [Equal] traverses +// the value trees, it calls PushStep as it descends into each node in the +// tree and PopStep as it ascend out of the node. The leaves of the tree are +// either compared (determined to be equal or not equal) or ignored and reported +// as such by calling the Report method. +func Reporter(r interface { + // PushStep is called when a tree-traversal operation is performed. + // The PathStep itself is only valid until the step is popped. + // The PathStep.Values are valid for the duration of the entire traversal + // and must not be mutated. + // + // Equal always calls PushStep at the start to provide an operation-less + // PathStep used to report the root values. + // + // Within a slice, the exact set of inserted, removed, or modified elements + // is unspecified and may change in future implementations. + // The entries of a map are iterated through in an unspecified order. + PushStep(PathStep) + + // Report is called exactly once on leaf nodes to report whether the + // comparison identified the node as equal, unequal, or ignored. + // A leaf node is one that is immediately preceded by and followed by + // a pair of PushStep and PopStep calls. + Report(Result) + + // PopStep ascends back up the value tree. + // There is always a matching pop call for every push call. + PopStep() +}) Option { + return reporter{r} +} + +type reporter struct{ reporterIface } +type reporterIface interface { + PushStep(PathStep) + Report(Result) + PopStep() +} + +func (reporter) filter(_ *state, _ reflect.Type, _, _ reflect.Value) applicableOption { + panic("not implemented") +} + +// normalizeOption normalizes the input options such that all Options groups +// are flattened and groups with a single element are reduced to that element. +// Only coreOptions and Options containing coreOptions are allowed. +func normalizeOption(src Option) Option { + switch opts := flattenOptions(nil, Options{src}); len(opts) { + case 0: + return nil + case 1: + return opts[0] + default: + return opts + } +} + +// flattenOptions copies all options in src to dst as a flat list. +// Only coreOptions and Options containing coreOptions are allowed. +func flattenOptions(dst, src Options) Options { + for _, opt := range src { + switch opt := opt.(type) { + case nil: + continue + case Options: + dst = flattenOptions(dst, opt) + case coreOption: + dst = append(dst, opt) + default: + panic(fmt.Sprintf("invalid option type: %T", opt)) + } + } + return dst +} diff --git a/tests/vendor/github.com/google/go-cmp/cmp/path.go b/tests/vendor/github.com/google/go-cmp/cmp/path.go new file mode 100644 index 000000000..c3c145642 --- /dev/null +++ b/tests/vendor/github.com/google/go-cmp/cmp/path.go @@ -0,0 +1,390 @@ +// Copyright 2017, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cmp + +import ( + "fmt" + "reflect" + "strings" + "unicode" + "unicode/utf8" + + "github.com/google/go-cmp/cmp/internal/value" +) + +// Path is a list of [PathStep] describing the sequence of operations to get +// from some root type to the current position in the value tree. +// The first Path element is always an operation-less [PathStep] that exists +// simply to identify the initial type. +// +// When traversing structs with embedded structs, the embedded struct will +// always be accessed as a field before traversing the fields of the +// embedded struct themselves. That is, an exported field from the +// embedded struct will never be accessed directly from the parent struct. +type Path []PathStep + +// PathStep is a union-type for specific operations to traverse +// a value's tree structure. Users of this package never need to implement +// these types as values of this type will be returned by this package. +// +// Implementations of this interface: +// - [StructField] +// - [SliceIndex] +// - [MapIndex] +// - [Indirect] +// - [TypeAssertion] +// - [Transform] +type PathStep interface { + String() string + + // Type is the resulting type after performing the path step. + Type() reflect.Type + + // Values is the resulting values after performing the path step. + // The type of each valid value is guaranteed to be identical to Type. + // + // In some cases, one or both may be invalid or have restrictions: + // - For StructField, both are not interface-able if the current field + // is unexported and the struct type is not explicitly permitted by + // an Exporter to traverse unexported fields. + // - For SliceIndex, one may be invalid if an element is missing from + // either the x or y slice. + // - For MapIndex, one may be invalid if an entry is missing from + // either the x or y map. + // + // The provided values must not be mutated. + Values() (vx, vy reflect.Value) +} + +var ( + _ PathStep = StructField{} + _ PathStep = SliceIndex{} + _ PathStep = MapIndex{} + _ PathStep = Indirect{} + _ PathStep = TypeAssertion{} + _ PathStep = Transform{} +) + +func (pa *Path) push(s PathStep) { + *pa = append(*pa, s) +} + +func (pa *Path) pop() { + *pa = (*pa)[:len(*pa)-1] +} + +// Last returns the last [PathStep] in the Path. +// If the path is empty, this returns a non-nil [PathStep] +// that reports a nil [PathStep.Type]. +func (pa Path) Last() PathStep { + return pa.Index(-1) +} + +// Index returns the ith step in the Path and supports negative indexing. +// A negative index starts counting from the tail of the Path such that -1 +// refers to the last step, -2 refers to the second-to-last step, and so on. +// If index is invalid, this returns a non-nil [PathStep] +// that reports a nil [PathStep.Type]. +func (pa Path) Index(i int) PathStep { + if i < 0 { + i = len(pa) + i + } + if i < 0 || i >= len(pa) { + return pathStep{} + } + return pa[i] +} + +// String returns the simplified path to a node. +// The simplified path only contains struct field accesses. +// +// For example: +// +// MyMap.MySlices.MyField +func (pa Path) String() string { + var ss []string + for _, s := range pa { + if _, ok := s.(StructField); ok { + ss = append(ss, s.String()) + } + } + return strings.TrimPrefix(strings.Join(ss, ""), ".") +} + +// GoString returns the path to a specific node using Go syntax. +// +// For example: +// +// (*root.MyMap["key"].(*mypkg.MyStruct).MySlices)[2][3].MyField +func (pa Path) GoString() string { + var ssPre, ssPost []string + var numIndirect int + for i, s := range pa { + var nextStep PathStep + if i+1 < len(pa) { + nextStep = pa[i+1] + } + switch s := s.(type) { + case Indirect: + numIndirect++ + pPre, pPost := "(", ")" + switch nextStep.(type) { + case Indirect: + continue // Next step is indirection, so let them batch up + case StructField: + numIndirect-- // Automatic indirection on struct fields + case nil: + pPre, pPost = "", "" // Last step; no need for parenthesis + } + if numIndirect > 0 { + ssPre = append(ssPre, pPre+strings.Repeat("*", numIndirect)) + ssPost = append(ssPost, pPost) + } + numIndirect = 0 + continue + case Transform: + ssPre = append(ssPre, s.trans.name+"(") + ssPost = append(ssPost, ")") + continue + } + ssPost = append(ssPost, s.String()) + } + for i, j := 0, len(ssPre)-1; i < j; i, j = i+1, j-1 { + ssPre[i], ssPre[j] = ssPre[j], ssPre[i] + } + return strings.Join(ssPre, "") + strings.Join(ssPost, "") +} + +type pathStep struct { + typ reflect.Type + vx, vy reflect.Value +} + +func (ps pathStep) Type() reflect.Type { return ps.typ } +func (ps pathStep) Values() (vx, vy reflect.Value) { return ps.vx, ps.vy } +func (ps pathStep) String() string { + if ps.typ == nil { + return "" + } + s := value.TypeString(ps.typ, false) + if s == "" || strings.ContainsAny(s, "{}\n") { + return "root" // Type too simple or complex to print + } + return fmt.Sprintf("{%s}", s) +} + +// StructField is a [PathStep] that represents a struct field access +// on a field called [StructField.Name]. +type StructField struct{ *structField } +type structField struct { + pathStep + name string + idx int + + // These fields are used for forcibly accessing an unexported field. + // pvx, pvy, and field are only valid if unexported is true. + unexported bool + mayForce bool // Forcibly allow visibility + paddr bool // Was parent addressable? + pvx, pvy reflect.Value // Parent values (always addressable) + field reflect.StructField // Field information +} + +func (sf StructField) Type() reflect.Type { return sf.typ } +func (sf StructField) Values() (vx, vy reflect.Value) { + if !sf.unexported { + return sf.vx, sf.vy // CanInterface reports true + } + + // Forcibly obtain read-write access to an unexported struct field. + if sf.mayForce { + vx = retrieveUnexportedField(sf.pvx, sf.field, sf.paddr) + vy = retrieveUnexportedField(sf.pvy, sf.field, sf.paddr) + return vx, vy // CanInterface reports true + } + return sf.vx, sf.vy // CanInterface reports false +} +func (sf StructField) String() string { return fmt.Sprintf(".%s", sf.name) } + +// Name is the field name. +func (sf StructField) Name() string { return sf.name } + +// Index is the index of the field in the parent struct type. +// See [reflect.Type.Field]. +func (sf StructField) Index() int { return sf.idx } + +// SliceIndex is a [PathStep] that represents an index operation on +// a slice or array at some index [SliceIndex.Key]. +type SliceIndex struct{ *sliceIndex } +type sliceIndex struct { + pathStep + xkey, ykey int + isSlice bool // False for reflect.Array +} + +func (si SliceIndex) Type() reflect.Type { return si.typ } +func (si SliceIndex) Values() (vx, vy reflect.Value) { return si.vx, si.vy } +func (si SliceIndex) String() string { + switch { + case si.xkey == si.ykey: + return fmt.Sprintf("[%d]", si.xkey) + case si.ykey == -1: + // [5->?] means "I don't know where X[5] went" + return fmt.Sprintf("[%d->?]", si.xkey) + case si.xkey == -1: + // [?->3] means "I don't know where Y[3] came from" + return fmt.Sprintf("[?->%d]", si.ykey) + default: + // [5->3] means "X[5] moved to Y[3]" + return fmt.Sprintf("[%d->%d]", si.xkey, si.ykey) + } +} + +// Key is the index key; it may return -1 if in a split state +func (si SliceIndex) Key() int { + if si.xkey != si.ykey { + return -1 + } + return si.xkey +} + +// SplitKeys are the indexes for indexing into slices in the +// x and y values, respectively. These indexes may differ due to the +// insertion or removal of an element in one of the slices, causing +// all of the indexes to be shifted. If an index is -1, then that +// indicates that the element does not exist in the associated slice. +// +// [SliceIndex.Key] is guaranteed to return -1 if and only if the indexes +// returned by SplitKeys are not the same. SplitKeys will never return -1 for +// both indexes. +func (si SliceIndex) SplitKeys() (ix, iy int) { return si.xkey, si.ykey } + +// MapIndex is a [PathStep] that represents an index operation on a map at some index Key. +type MapIndex struct{ *mapIndex } +type mapIndex struct { + pathStep + key reflect.Value +} + +func (mi MapIndex) Type() reflect.Type { return mi.typ } +func (mi MapIndex) Values() (vx, vy reflect.Value) { return mi.vx, mi.vy } +func (mi MapIndex) String() string { return fmt.Sprintf("[%#v]", mi.key) } + +// Key is the value of the map key. +func (mi MapIndex) Key() reflect.Value { return mi.key } + +// Indirect is a [PathStep] that represents pointer indirection on the parent type. +type Indirect struct{ *indirect } +type indirect struct { + pathStep +} + +func (in Indirect) Type() reflect.Type { return in.typ } +func (in Indirect) Values() (vx, vy reflect.Value) { return in.vx, in.vy } +func (in Indirect) String() string { return "*" } + +// TypeAssertion is a [PathStep] that represents a type assertion on an interface. +type TypeAssertion struct{ *typeAssertion } +type typeAssertion struct { + pathStep +} + +func (ta TypeAssertion) Type() reflect.Type { return ta.typ } +func (ta TypeAssertion) Values() (vx, vy reflect.Value) { return ta.vx, ta.vy } +func (ta TypeAssertion) String() string { return fmt.Sprintf(".(%v)", value.TypeString(ta.typ, false)) } + +// Transform is a [PathStep] that represents a transformation +// from the parent type to the current type. +type Transform struct{ *transform } +type transform struct { + pathStep + trans *transformer +} + +func (tf Transform) Type() reflect.Type { return tf.typ } +func (tf Transform) Values() (vx, vy reflect.Value) { return tf.vx, tf.vy } +func (tf Transform) String() string { return fmt.Sprintf("%s()", tf.trans.name) } + +// Name is the name of the [Transformer]. +func (tf Transform) Name() string { return tf.trans.name } + +// Func is the function pointer to the transformer function. +func (tf Transform) Func() reflect.Value { return tf.trans.fnc } + +// Option returns the originally constructed [Transformer] option. +// The == operator can be used to detect the exact option used. +func (tf Transform) Option() Option { return tf.trans } + +// pointerPath represents a dual-stack of pointers encountered when +// recursively traversing the x and y values. This data structure supports +// detection of cycles and determining whether the cycles are equal. +// In Go, cycles can occur via pointers, slices, and maps. +// +// The pointerPath uses a map to represent a stack; where descension into a +// pointer pushes the address onto the stack, and ascension from a pointer +// pops the address from the stack. Thus, when traversing into a pointer from +// reflect.Ptr, reflect.Slice element, or reflect.Map, we can detect cycles +// by checking whether the pointer has already been visited. The cycle detection +// uses a separate stack for the x and y values. +// +// If a cycle is detected we need to determine whether the two pointers +// should be considered equal. The definition of equality chosen by Equal +// requires two graphs to have the same structure. To determine this, both the +// x and y values must have a cycle where the previous pointers were also +// encountered together as a pair. +// +// Semantically, this is equivalent to augmenting Indirect, SliceIndex, and +// MapIndex with pointer information for the x and y values. +// Suppose px and py are two pointers to compare, we then search the +// Path for whether px was ever encountered in the Path history of x, and +// similarly so with py. If either side has a cycle, the comparison is only +// equal if both px and py have a cycle resulting from the same PathStep. +// +// Using a map as a stack is more performant as we can perform cycle detection +// in O(1) instead of O(N) where N is len(Path). +type pointerPath struct { + // mx is keyed by x pointers, where the value is the associated y pointer. + mx map[value.Pointer]value.Pointer + // my is keyed by y pointers, where the value is the associated x pointer. + my map[value.Pointer]value.Pointer +} + +func (p *pointerPath) Init() { + p.mx = make(map[value.Pointer]value.Pointer) + p.my = make(map[value.Pointer]value.Pointer) +} + +// Push indicates intent to descend into pointers vx and vy where +// visited reports whether either has been seen before. If visited before, +// equal reports whether both pointers were encountered together. +// Pop must be called if and only if the pointers were never visited. +// +// The pointers vx and vy must be a reflect.Ptr, reflect.Slice, or reflect.Map +// and be non-nil. +func (p pointerPath) Push(vx, vy reflect.Value) (equal, visited bool) { + px := value.PointerOf(vx) + py := value.PointerOf(vy) + _, ok1 := p.mx[px] + _, ok2 := p.my[py] + if ok1 || ok2 { + equal = p.mx[px] == py && p.my[py] == px // Pointers paired together + return equal, true + } + p.mx[px] = py + p.my[py] = px + return false, false +} + +// Pop ascends from pointers vx and vy. +func (p pointerPath) Pop(vx, vy reflect.Value) { + delete(p.mx, value.PointerOf(vx)) + delete(p.my, value.PointerOf(vy)) +} + +// isExported reports whether the identifier is exported. +func isExported(id string) bool { + r, _ := utf8.DecodeRuneInString(id) + return unicode.IsUpper(r) +} diff --git a/tests/vendor/github.com/google/go-cmp/cmp/report.go b/tests/vendor/github.com/google/go-cmp/cmp/report.go new file mode 100644 index 000000000..f43cd12eb --- /dev/null +++ b/tests/vendor/github.com/google/go-cmp/cmp/report.go @@ -0,0 +1,54 @@ +// Copyright 2017, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cmp + +// defaultReporter implements the reporter interface. +// +// As Equal serially calls the PushStep, Report, and PopStep methods, the +// defaultReporter constructs a tree-based representation of the compared value +// and the result of each comparison (see valueNode). +// +// When the String method is called, the FormatDiff method transforms the +// valueNode tree into a textNode tree, which is a tree-based representation +// of the textual output (see textNode). +// +// Lastly, the textNode.String method produces the final report as a string. +type defaultReporter struct { + root *valueNode + curr *valueNode +} + +func (r *defaultReporter) PushStep(ps PathStep) { + r.curr = r.curr.PushStep(ps) + if r.root == nil { + r.root = r.curr + } +} +func (r *defaultReporter) Report(rs Result) { + r.curr.Report(rs) +} +func (r *defaultReporter) PopStep() { + r.curr = r.curr.PopStep() +} + +// String provides a full report of the differences detected as a structured +// literal in pseudo-Go syntax. String may only be called after the entire tree +// has been traversed. +func (r *defaultReporter) String() string { + assert(r.root != nil && r.curr == nil) + if r.root.NumDiff == 0 { + return "" + } + ptrs := new(pointerReferences) + text := formatOptions{}.FormatDiff(r.root, ptrs) + resolveReferences(text) + return text.String() +} + +func assert(ok bool) { + if !ok { + panic("assertion failure") + } +} diff --git a/tests/vendor/github.com/google/go-cmp/cmp/report_compare.go b/tests/vendor/github.com/google/go-cmp/cmp/report_compare.go new file mode 100644 index 000000000..2050bf6b4 --- /dev/null +++ b/tests/vendor/github.com/google/go-cmp/cmp/report_compare.go @@ -0,0 +1,433 @@ +// Copyright 2019, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cmp + +import ( + "fmt" + "reflect" +) + +// numContextRecords is the number of surrounding equal records to print. +const numContextRecords = 2 + +type diffMode byte + +const ( + diffUnknown diffMode = 0 + diffIdentical diffMode = ' ' + diffRemoved diffMode = '-' + diffInserted diffMode = '+' +) + +type typeMode int + +const ( + // emitType always prints the type. + emitType typeMode = iota + // elideType never prints the type. + elideType + // autoType prints the type only for composite kinds + // (i.e., structs, slices, arrays, and maps). + autoType +) + +type formatOptions struct { + // DiffMode controls the output mode of FormatDiff. + // + // If diffUnknown, then produce a diff of the x and y values. + // If diffIdentical, then emit values as if they were equal. + // If diffRemoved, then only emit x values (ignoring y values). + // If diffInserted, then only emit y values (ignoring x values). + DiffMode diffMode + + // TypeMode controls whether to print the type for the current node. + // + // As a general rule of thumb, we always print the type of the next node + // after an interface, and always elide the type of the next node after + // a slice or map node. + TypeMode typeMode + + // formatValueOptions are options specific to printing reflect.Values. + formatValueOptions +} + +func (opts formatOptions) WithDiffMode(d diffMode) formatOptions { + opts.DiffMode = d + return opts +} +func (opts formatOptions) WithTypeMode(t typeMode) formatOptions { + opts.TypeMode = t + return opts +} +func (opts formatOptions) WithVerbosity(level int) formatOptions { + opts.VerbosityLevel = level + opts.LimitVerbosity = true + return opts +} +func (opts formatOptions) verbosity() uint { + switch { + case opts.VerbosityLevel < 0: + return 0 + case opts.VerbosityLevel > 16: + return 16 // some reasonable maximum to avoid shift overflow + default: + return uint(opts.VerbosityLevel) + } +} + +const maxVerbosityPreset = 6 + +// verbosityPreset modifies the verbosity settings given an index +// between 0 and maxVerbosityPreset, inclusive. +func verbosityPreset(opts formatOptions, i int) formatOptions { + opts.VerbosityLevel = int(opts.verbosity()) + 2*i + if i > 0 { + opts.AvoidStringer = true + } + if i >= maxVerbosityPreset { + opts.PrintAddresses = true + opts.QualifiedNames = true + } + return opts +} + +// FormatDiff converts a valueNode tree into a textNode tree, where the later +// is a textual representation of the differences detected in the former. +func (opts formatOptions) FormatDiff(v *valueNode, ptrs *pointerReferences) (out textNode) { + if opts.DiffMode == diffIdentical { + opts = opts.WithVerbosity(1) + } else if opts.verbosity() < 3 { + opts = opts.WithVerbosity(3) + } + + // Check whether we have specialized formatting for this node. + // This is not necessary, but helpful for producing more readable outputs. + if opts.CanFormatDiffSlice(v) { + return opts.FormatDiffSlice(v) + } + + var parentKind reflect.Kind + if v.parent != nil && v.parent.TransformerName == "" { + parentKind = v.parent.Type.Kind() + } + + // For leaf nodes, format the value based on the reflect.Values alone. + // As a special case, treat equal []byte as a leaf nodes. + isBytes := v.Type.Kind() == reflect.Slice && v.Type.Elem() == byteType + isEqualBytes := isBytes && v.NumDiff+v.NumIgnored+v.NumTransformed == 0 + if v.MaxDepth == 0 || isEqualBytes { + switch opts.DiffMode { + case diffUnknown, diffIdentical: + // Format Equal. + if v.NumDiff == 0 { + outx := opts.FormatValue(v.ValueX, parentKind, ptrs) + outy := opts.FormatValue(v.ValueY, parentKind, ptrs) + if v.NumIgnored > 0 && v.NumSame == 0 { + return textEllipsis + } else if outx.Len() < outy.Len() { + return outx + } else { + return outy + } + } + + // Format unequal. + assert(opts.DiffMode == diffUnknown) + var list textList + outx := opts.WithTypeMode(elideType).FormatValue(v.ValueX, parentKind, ptrs) + outy := opts.WithTypeMode(elideType).FormatValue(v.ValueY, parentKind, ptrs) + for i := 0; i <= maxVerbosityPreset && outx != nil && outy != nil && outx.Equal(outy); i++ { + opts2 := verbosityPreset(opts, i).WithTypeMode(elideType) + outx = opts2.FormatValue(v.ValueX, parentKind, ptrs) + outy = opts2.FormatValue(v.ValueY, parentKind, ptrs) + } + if outx != nil { + list = append(list, textRecord{Diff: '-', Value: outx}) + } + if outy != nil { + list = append(list, textRecord{Diff: '+', Value: outy}) + } + return opts.WithTypeMode(emitType).FormatType(v.Type, list) + case diffRemoved: + return opts.FormatValue(v.ValueX, parentKind, ptrs) + case diffInserted: + return opts.FormatValue(v.ValueY, parentKind, ptrs) + default: + panic("invalid diff mode") + } + } + + // Register slice element to support cycle detection. + if parentKind == reflect.Slice { + ptrRefs := ptrs.PushPair(v.ValueX, v.ValueY, opts.DiffMode, true) + defer ptrs.Pop() + defer func() { out = wrapTrunkReferences(ptrRefs, out) }() + } + + // Descend into the child value node. + if v.TransformerName != "" { + out := opts.WithTypeMode(emitType).FormatDiff(v.Value, ptrs) + out = &textWrap{Prefix: "Inverse(" + v.TransformerName + ", ", Value: out, Suffix: ")"} + return opts.FormatType(v.Type, out) + } else { + switch k := v.Type.Kind(); k { + case reflect.Struct, reflect.Array, reflect.Slice: + out = opts.formatDiffList(v.Records, k, ptrs) + out = opts.FormatType(v.Type, out) + case reflect.Map: + // Register map to support cycle detection. + ptrRefs := ptrs.PushPair(v.ValueX, v.ValueY, opts.DiffMode, false) + defer ptrs.Pop() + + out = opts.formatDiffList(v.Records, k, ptrs) + out = wrapTrunkReferences(ptrRefs, out) + out = opts.FormatType(v.Type, out) + case reflect.Ptr: + // Register pointer to support cycle detection. + ptrRefs := ptrs.PushPair(v.ValueX, v.ValueY, opts.DiffMode, false) + defer ptrs.Pop() + + out = opts.FormatDiff(v.Value, ptrs) + out = wrapTrunkReferences(ptrRefs, out) + out = &textWrap{Prefix: "&", Value: out} + case reflect.Interface: + out = opts.WithTypeMode(emitType).FormatDiff(v.Value, ptrs) + default: + panic(fmt.Sprintf("%v cannot have children", k)) + } + return out + } +} + +func (opts formatOptions) formatDiffList(recs []reportRecord, k reflect.Kind, ptrs *pointerReferences) textNode { + // Derive record name based on the data structure kind. + var name string + var formatKey func(reflect.Value) string + switch k { + case reflect.Struct: + name = "field" + opts = opts.WithTypeMode(autoType) + formatKey = func(v reflect.Value) string { return v.String() } + case reflect.Slice, reflect.Array: + name = "element" + opts = opts.WithTypeMode(elideType) + formatKey = func(reflect.Value) string { return "" } + case reflect.Map: + name = "entry" + opts = opts.WithTypeMode(elideType) + formatKey = func(v reflect.Value) string { return formatMapKey(v, false, ptrs) } + } + + maxLen := -1 + if opts.LimitVerbosity { + if opts.DiffMode == diffIdentical { + maxLen = ((1 << opts.verbosity()) >> 1) << 2 // 0, 4, 8, 16, 32, etc... + } else { + maxLen = (1 << opts.verbosity()) << 1 // 2, 4, 8, 16, 32, 64, etc... + } + opts.VerbosityLevel-- + } + + // Handle unification. + switch opts.DiffMode { + case diffIdentical, diffRemoved, diffInserted: + var list textList + var deferredEllipsis bool // Add final "..." to indicate records were dropped + for _, r := range recs { + if len(list) == maxLen { + deferredEllipsis = true + break + } + + // Elide struct fields that are zero value. + if k == reflect.Struct { + var isZero bool + switch opts.DiffMode { + case diffIdentical: + isZero = r.Value.ValueX.IsZero() || r.Value.ValueY.IsZero() + case diffRemoved: + isZero = r.Value.ValueX.IsZero() + case diffInserted: + isZero = r.Value.ValueY.IsZero() + } + if isZero { + continue + } + } + // Elide ignored nodes. + if r.Value.NumIgnored > 0 && r.Value.NumSame+r.Value.NumDiff == 0 { + deferredEllipsis = !(k == reflect.Slice || k == reflect.Array) + if !deferredEllipsis { + list.AppendEllipsis(diffStats{}) + } + continue + } + if out := opts.FormatDiff(r.Value, ptrs); out != nil { + list = append(list, textRecord{Key: formatKey(r.Key), Value: out}) + } + } + if deferredEllipsis { + list.AppendEllipsis(diffStats{}) + } + return &textWrap{Prefix: "{", Value: list, Suffix: "}"} + case diffUnknown: + default: + panic("invalid diff mode") + } + + // Handle differencing. + var numDiffs int + var list textList + var keys []reflect.Value // invariant: len(list) == len(keys) + groups := coalesceAdjacentRecords(name, recs) + maxGroup := diffStats{Name: name} + for i, ds := range groups { + if maxLen >= 0 && numDiffs >= maxLen { + maxGroup = maxGroup.Append(ds) + continue + } + + // Handle equal records. + if ds.NumDiff() == 0 { + // Compute the number of leading and trailing records to print. + var numLo, numHi int + numEqual := ds.NumIgnored + ds.NumIdentical + for numLo < numContextRecords && numLo+numHi < numEqual && i != 0 { + if r := recs[numLo].Value; r.NumIgnored > 0 && r.NumSame+r.NumDiff == 0 { + break + } + numLo++ + } + for numHi < numContextRecords && numLo+numHi < numEqual && i != len(groups)-1 { + if r := recs[numEqual-numHi-1].Value; r.NumIgnored > 0 && r.NumSame+r.NumDiff == 0 { + break + } + numHi++ + } + if numEqual-(numLo+numHi) == 1 && ds.NumIgnored == 0 { + numHi++ // Avoid pointless coalescing of a single equal record + } + + // Format the equal values. + for _, r := range recs[:numLo] { + out := opts.WithDiffMode(diffIdentical).FormatDiff(r.Value, ptrs) + list = append(list, textRecord{Key: formatKey(r.Key), Value: out}) + keys = append(keys, r.Key) + } + if numEqual > numLo+numHi { + ds.NumIdentical -= numLo + numHi + list.AppendEllipsis(ds) + for len(keys) < len(list) { + keys = append(keys, reflect.Value{}) + } + } + for _, r := range recs[numEqual-numHi : numEqual] { + out := opts.WithDiffMode(diffIdentical).FormatDiff(r.Value, ptrs) + list = append(list, textRecord{Key: formatKey(r.Key), Value: out}) + keys = append(keys, r.Key) + } + recs = recs[numEqual:] + continue + } + + // Handle unequal records. + for _, r := range recs[:ds.NumDiff()] { + switch { + case opts.CanFormatDiffSlice(r.Value): + out := opts.FormatDiffSlice(r.Value) + list = append(list, textRecord{Key: formatKey(r.Key), Value: out}) + keys = append(keys, r.Key) + case r.Value.NumChildren == r.Value.MaxDepth: + outx := opts.WithDiffMode(diffRemoved).FormatDiff(r.Value, ptrs) + outy := opts.WithDiffMode(diffInserted).FormatDiff(r.Value, ptrs) + for i := 0; i <= maxVerbosityPreset && outx != nil && outy != nil && outx.Equal(outy); i++ { + opts2 := verbosityPreset(opts, i) + outx = opts2.WithDiffMode(diffRemoved).FormatDiff(r.Value, ptrs) + outy = opts2.WithDiffMode(diffInserted).FormatDiff(r.Value, ptrs) + } + if outx != nil { + list = append(list, textRecord{Diff: diffRemoved, Key: formatKey(r.Key), Value: outx}) + keys = append(keys, r.Key) + } + if outy != nil { + list = append(list, textRecord{Diff: diffInserted, Key: formatKey(r.Key), Value: outy}) + keys = append(keys, r.Key) + } + default: + out := opts.FormatDiff(r.Value, ptrs) + list = append(list, textRecord{Key: formatKey(r.Key), Value: out}) + keys = append(keys, r.Key) + } + } + recs = recs[ds.NumDiff():] + numDiffs += ds.NumDiff() + } + if maxGroup.IsZero() { + assert(len(recs) == 0) + } else { + list.AppendEllipsis(maxGroup) + for len(keys) < len(list) { + keys = append(keys, reflect.Value{}) + } + } + assert(len(list) == len(keys)) + + // For maps, the default formatting logic uses fmt.Stringer which may + // produce ambiguous output. Avoid calling String to disambiguate. + if k == reflect.Map { + var ambiguous bool + seenKeys := map[string]reflect.Value{} + for i, currKey := range keys { + if currKey.IsValid() { + strKey := list[i].Key + prevKey, seen := seenKeys[strKey] + if seen && prevKey.CanInterface() && currKey.CanInterface() { + ambiguous = prevKey.Interface() != currKey.Interface() + if ambiguous { + break + } + } + seenKeys[strKey] = currKey + } + } + if ambiguous { + for i, k := range keys { + if k.IsValid() { + list[i].Key = formatMapKey(k, true, ptrs) + } + } + } + } + + return &textWrap{Prefix: "{", Value: list, Suffix: "}"} +} + +// coalesceAdjacentRecords coalesces the list of records into groups of +// adjacent equal, or unequal counts. +func coalesceAdjacentRecords(name string, recs []reportRecord) (groups []diffStats) { + var prevCase int // Arbitrary index into which case last occurred + lastStats := func(i int) *diffStats { + if prevCase != i { + groups = append(groups, diffStats{Name: name}) + prevCase = i + } + return &groups[len(groups)-1] + } + for _, r := range recs { + switch rv := r.Value; { + case rv.NumIgnored > 0 && rv.NumSame+rv.NumDiff == 0: + lastStats(1).NumIgnored++ + case rv.NumDiff == 0: + lastStats(1).NumIdentical++ + case rv.NumDiff > 0 && !rv.ValueY.IsValid(): + lastStats(2).NumRemoved++ + case rv.NumDiff > 0 && !rv.ValueX.IsValid(): + lastStats(2).NumInserted++ + default: + lastStats(2).NumModified++ + } + } + return groups +} diff --git a/tests/vendor/github.com/google/go-cmp/cmp/report_references.go b/tests/vendor/github.com/google/go-cmp/cmp/report_references.go new file mode 100644 index 000000000..be31b33a9 --- /dev/null +++ b/tests/vendor/github.com/google/go-cmp/cmp/report_references.go @@ -0,0 +1,264 @@ +// Copyright 2020, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cmp + +import ( + "fmt" + "reflect" + "strings" + + "github.com/google/go-cmp/cmp/internal/flags" + "github.com/google/go-cmp/cmp/internal/value" +) + +const ( + pointerDelimPrefix = "⟪" + pointerDelimSuffix = "⟫" +) + +// formatPointer prints the address of the pointer. +func formatPointer(p value.Pointer, withDelims bool) string { + v := p.Uintptr() + if flags.Deterministic { + v = 0xdeadf00f // Only used for stable testing purposes + } + if withDelims { + return pointerDelimPrefix + formatHex(uint64(v)) + pointerDelimSuffix + } + return formatHex(uint64(v)) +} + +// pointerReferences is a stack of pointers visited so far. +type pointerReferences [][2]value.Pointer + +func (ps *pointerReferences) PushPair(vx, vy reflect.Value, d diffMode, deref bool) (pp [2]value.Pointer) { + if deref && vx.IsValid() { + vx = vx.Addr() + } + if deref && vy.IsValid() { + vy = vy.Addr() + } + switch d { + case diffUnknown, diffIdentical: + pp = [2]value.Pointer{value.PointerOf(vx), value.PointerOf(vy)} + case diffRemoved: + pp = [2]value.Pointer{value.PointerOf(vx), value.Pointer{}} + case diffInserted: + pp = [2]value.Pointer{value.Pointer{}, value.PointerOf(vy)} + } + *ps = append(*ps, pp) + return pp +} + +func (ps *pointerReferences) Push(v reflect.Value) (p value.Pointer, seen bool) { + p = value.PointerOf(v) + for _, pp := range *ps { + if p == pp[0] || p == pp[1] { + return p, true + } + } + *ps = append(*ps, [2]value.Pointer{p, p}) + return p, false +} + +func (ps *pointerReferences) Pop() { + *ps = (*ps)[:len(*ps)-1] +} + +// trunkReferences is metadata for a textNode indicating that the sub-tree +// represents the value for either pointer in a pair of references. +type trunkReferences struct{ pp [2]value.Pointer } + +// trunkReference is metadata for a textNode indicating that the sub-tree +// represents the value for the given pointer reference. +type trunkReference struct{ p value.Pointer } + +// leafReference is metadata for a textNode indicating that the value is +// truncated as it refers to another part of the tree (i.e., a trunk). +type leafReference struct{ p value.Pointer } + +func wrapTrunkReferences(pp [2]value.Pointer, s textNode) textNode { + switch { + case pp[0].IsNil(): + return &textWrap{Value: s, Metadata: trunkReference{pp[1]}} + case pp[1].IsNil(): + return &textWrap{Value: s, Metadata: trunkReference{pp[0]}} + case pp[0] == pp[1]: + return &textWrap{Value: s, Metadata: trunkReference{pp[0]}} + default: + return &textWrap{Value: s, Metadata: trunkReferences{pp}} + } +} +func wrapTrunkReference(p value.Pointer, printAddress bool, s textNode) textNode { + var prefix string + if printAddress { + prefix = formatPointer(p, true) + } + return &textWrap{Prefix: prefix, Value: s, Metadata: trunkReference{p}} +} +func makeLeafReference(p value.Pointer, printAddress bool) textNode { + out := &textWrap{Prefix: "(", Value: textEllipsis, Suffix: ")"} + var prefix string + if printAddress { + prefix = formatPointer(p, true) + } + return &textWrap{Prefix: prefix, Value: out, Metadata: leafReference{p}} +} + +// resolveReferences walks the textNode tree searching for any leaf reference +// metadata and resolves each against the corresponding trunk references. +// Since pointer addresses in memory are not particularly readable to the user, +// it replaces each pointer value with an arbitrary and unique reference ID. +func resolveReferences(s textNode) { + var walkNodes func(textNode, func(textNode)) + walkNodes = func(s textNode, f func(textNode)) { + f(s) + switch s := s.(type) { + case *textWrap: + walkNodes(s.Value, f) + case textList: + for _, r := range s { + walkNodes(r.Value, f) + } + } + } + + // Collect all trunks and leaves with reference metadata. + var trunks, leaves []*textWrap + walkNodes(s, func(s textNode) { + if s, ok := s.(*textWrap); ok { + switch s.Metadata.(type) { + case leafReference: + leaves = append(leaves, s) + case trunkReference, trunkReferences: + trunks = append(trunks, s) + } + } + }) + + // No leaf references to resolve. + if len(leaves) == 0 { + return + } + + // Collect the set of all leaf references to resolve. + leafPtrs := make(map[value.Pointer]bool) + for _, leaf := range leaves { + leafPtrs[leaf.Metadata.(leafReference).p] = true + } + + // Collect the set of trunk pointers that are always paired together. + // This allows us to assign a single ID to both pointers for brevity. + // If a pointer in a pair ever occurs by itself or as a different pair, + // then the pair is broken. + pairedTrunkPtrs := make(map[value.Pointer]value.Pointer) + unpair := func(p value.Pointer) { + if !pairedTrunkPtrs[p].IsNil() { + pairedTrunkPtrs[pairedTrunkPtrs[p]] = value.Pointer{} // invalidate other half + } + pairedTrunkPtrs[p] = value.Pointer{} // invalidate this half + } + for _, trunk := range trunks { + switch p := trunk.Metadata.(type) { + case trunkReference: + unpair(p.p) // standalone pointer cannot be part of a pair + case trunkReferences: + p0, ok0 := pairedTrunkPtrs[p.pp[0]] + p1, ok1 := pairedTrunkPtrs[p.pp[1]] + switch { + case !ok0 && !ok1: + // Register the newly seen pair. + pairedTrunkPtrs[p.pp[0]] = p.pp[1] + pairedTrunkPtrs[p.pp[1]] = p.pp[0] + case ok0 && ok1 && p0 == p.pp[1] && p1 == p.pp[0]: + // Exact pair already seen; do nothing. + default: + // Pair conflicts with some other pair; break all pairs. + unpair(p.pp[0]) + unpair(p.pp[1]) + } + } + } + + // Correlate each pointer referenced by leaves to a unique identifier, + // and print the IDs for each trunk that matches those pointers. + var nextID uint + ptrIDs := make(map[value.Pointer]uint) + newID := func() uint { + id := nextID + nextID++ + return id + } + for _, trunk := range trunks { + switch p := trunk.Metadata.(type) { + case trunkReference: + if print := leafPtrs[p.p]; print { + id, ok := ptrIDs[p.p] + if !ok { + id = newID() + ptrIDs[p.p] = id + } + trunk.Prefix = updateReferencePrefix(trunk.Prefix, formatReference(id)) + } + case trunkReferences: + print0 := leafPtrs[p.pp[0]] + print1 := leafPtrs[p.pp[1]] + if print0 || print1 { + id0, ok0 := ptrIDs[p.pp[0]] + id1, ok1 := ptrIDs[p.pp[1]] + isPair := pairedTrunkPtrs[p.pp[0]] == p.pp[1] && pairedTrunkPtrs[p.pp[1]] == p.pp[0] + if isPair { + var id uint + assert(ok0 == ok1) // must be seen together or not at all + if ok0 { + assert(id0 == id1) // must have the same ID + id = id0 + } else { + id = newID() + ptrIDs[p.pp[0]] = id + ptrIDs[p.pp[1]] = id + } + trunk.Prefix = updateReferencePrefix(trunk.Prefix, formatReference(id)) + } else { + if print0 && !ok0 { + id0 = newID() + ptrIDs[p.pp[0]] = id0 + } + if print1 && !ok1 { + id1 = newID() + ptrIDs[p.pp[1]] = id1 + } + switch { + case print0 && print1: + trunk.Prefix = updateReferencePrefix(trunk.Prefix, formatReference(id0)+","+formatReference(id1)) + case print0: + trunk.Prefix = updateReferencePrefix(trunk.Prefix, formatReference(id0)) + case print1: + trunk.Prefix = updateReferencePrefix(trunk.Prefix, formatReference(id1)) + } + } + } + } + } + + // Update all leaf references with the unique identifier. + for _, leaf := range leaves { + if id, ok := ptrIDs[leaf.Metadata.(leafReference).p]; ok { + leaf.Prefix = updateReferencePrefix(leaf.Prefix, formatReference(id)) + } + } +} + +func formatReference(id uint) string { + return fmt.Sprintf("ref#%d", id) +} + +func updateReferencePrefix(prefix, ref string) string { + if prefix == "" { + return pointerDelimPrefix + ref + pointerDelimSuffix + } + suffix := strings.TrimPrefix(prefix, pointerDelimPrefix) + return pointerDelimPrefix + ref + ": " + suffix +} diff --git a/tests/vendor/github.com/google/go-cmp/cmp/report_reflect.go b/tests/vendor/github.com/google/go-cmp/cmp/report_reflect.go new file mode 100644 index 000000000..e39f42284 --- /dev/null +++ b/tests/vendor/github.com/google/go-cmp/cmp/report_reflect.go @@ -0,0 +1,414 @@ +// Copyright 2019, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cmp + +import ( + "bytes" + "fmt" + "reflect" + "strconv" + "strings" + "unicode" + "unicode/utf8" + + "github.com/google/go-cmp/cmp/internal/value" +) + +var ( + anyType = reflect.TypeOf((*interface{})(nil)).Elem() + stringType = reflect.TypeOf((*string)(nil)).Elem() + bytesType = reflect.TypeOf((*[]byte)(nil)).Elem() + byteType = reflect.TypeOf((*byte)(nil)).Elem() +) + +type formatValueOptions struct { + // AvoidStringer controls whether to avoid calling custom stringer + // methods like error.Error or fmt.Stringer.String. + AvoidStringer bool + + // PrintAddresses controls whether to print the address of all pointers, + // slice elements, and maps. + PrintAddresses bool + + // QualifiedNames controls whether FormatType uses the fully qualified name + // (including the full package path as opposed to just the package name). + QualifiedNames bool + + // VerbosityLevel controls the amount of output to produce. + // A higher value produces more output. A value of zero or lower produces + // no output (represented using an ellipsis). + // If LimitVerbosity is false, then the level is treated as infinite. + VerbosityLevel int + + // LimitVerbosity specifies that formatting should respect VerbosityLevel. + LimitVerbosity bool +} + +// FormatType prints the type as if it were wrapping s. +// This may return s as-is depending on the current type and TypeMode mode. +func (opts formatOptions) FormatType(t reflect.Type, s textNode) textNode { + // Check whether to emit the type or not. + switch opts.TypeMode { + case autoType: + switch t.Kind() { + case reflect.Struct, reflect.Slice, reflect.Array, reflect.Map: + if s.Equal(textNil) { + return s + } + default: + return s + } + if opts.DiffMode == diffIdentical { + return s // elide type for identical nodes + } + case elideType: + return s + } + + // Determine the type label, applying special handling for unnamed types. + typeName := value.TypeString(t, opts.QualifiedNames) + if t.Name() == "" { + // According to Go grammar, certain type literals contain symbols that + // do not strongly bind to the next lexicographical token (e.g., *T). + switch t.Kind() { + case reflect.Chan, reflect.Func, reflect.Ptr: + typeName = "(" + typeName + ")" + } + } + return &textWrap{Prefix: typeName, Value: wrapParens(s)} +} + +// wrapParens wraps s with a set of parenthesis, but avoids it if the +// wrapped node itself is already surrounded by a pair of parenthesis or braces. +// It handles unwrapping one level of pointer-reference nodes. +func wrapParens(s textNode) textNode { + var refNode *textWrap + if s2, ok := s.(*textWrap); ok { + // Unwrap a single pointer reference node. + switch s2.Metadata.(type) { + case leafReference, trunkReference, trunkReferences: + refNode = s2 + if s3, ok := refNode.Value.(*textWrap); ok { + s2 = s3 + } + } + + // Already has delimiters that make parenthesis unnecessary. + hasParens := strings.HasPrefix(s2.Prefix, "(") && strings.HasSuffix(s2.Suffix, ")") + hasBraces := strings.HasPrefix(s2.Prefix, "{") && strings.HasSuffix(s2.Suffix, "}") + if hasParens || hasBraces { + return s + } + } + if refNode != nil { + refNode.Value = &textWrap{Prefix: "(", Value: refNode.Value, Suffix: ")"} + return s + } + return &textWrap{Prefix: "(", Value: s, Suffix: ")"} +} + +// FormatValue prints the reflect.Value, taking extra care to avoid descending +// into pointers already in ptrs. As pointers are visited, ptrs is also updated. +func (opts formatOptions) FormatValue(v reflect.Value, parentKind reflect.Kind, ptrs *pointerReferences) (out textNode) { + if !v.IsValid() { + return nil + } + t := v.Type() + + // Check slice element for cycles. + if parentKind == reflect.Slice { + ptrRef, visited := ptrs.Push(v.Addr()) + if visited { + return makeLeafReference(ptrRef, false) + } + defer ptrs.Pop() + defer func() { out = wrapTrunkReference(ptrRef, false, out) }() + } + + // Check whether there is an Error or String method to call. + if !opts.AvoidStringer && v.CanInterface() { + // Avoid calling Error or String methods on nil receivers since many + // implementations crash when doing so. + if (t.Kind() != reflect.Ptr && t.Kind() != reflect.Interface) || !v.IsNil() { + var prefix, strVal string + func() { + // Swallow and ignore any panics from String or Error. + defer func() { recover() }() + switch v := v.Interface().(type) { + case error: + strVal = v.Error() + prefix = "e" + case fmt.Stringer: + strVal = v.String() + prefix = "s" + } + }() + if prefix != "" { + return opts.formatString(prefix, strVal) + } + } + } + + // Check whether to explicitly wrap the result with the type. + var skipType bool + defer func() { + if !skipType { + out = opts.FormatType(t, out) + } + }() + + switch t.Kind() { + case reflect.Bool: + return textLine(fmt.Sprint(v.Bool())) + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return textLine(fmt.Sprint(v.Int())) + case reflect.Uint, reflect.Uint16, reflect.Uint32, reflect.Uint64: + return textLine(fmt.Sprint(v.Uint())) + case reflect.Uint8: + if parentKind == reflect.Slice || parentKind == reflect.Array { + return textLine(formatHex(v.Uint())) + } + return textLine(fmt.Sprint(v.Uint())) + case reflect.Uintptr: + return textLine(formatHex(v.Uint())) + case reflect.Float32, reflect.Float64: + return textLine(fmt.Sprint(v.Float())) + case reflect.Complex64, reflect.Complex128: + return textLine(fmt.Sprint(v.Complex())) + case reflect.String: + return opts.formatString("", v.String()) + case reflect.UnsafePointer, reflect.Chan, reflect.Func: + return textLine(formatPointer(value.PointerOf(v), true)) + case reflect.Struct: + var list textList + v := makeAddressable(v) // needed for retrieveUnexportedField + maxLen := v.NumField() + if opts.LimitVerbosity { + maxLen = ((1 << opts.verbosity()) >> 1) << 2 // 0, 4, 8, 16, 32, etc... + opts.VerbosityLevel-- + } + for i := 0; i < v.NumField(); i++ { + vv := v.Field(i) + if vv.IsZero() { + continue // Elide fields with zero values + } + if len(list) == maxLen { + list.AppendEllipsis(diffStats{}) + break + } + sf := t.Field(i) + if !isExported(sf.Name) { + vv = retrieveUnexportedField(v, sf, true) + } + s := opts.WithTypeMode(autoType).FormatValue(vv, t.Kind(), ptrs) + list = append(list, textRecord{Key: sf.Name, Value: s}) + } + return &textWrap{Prefix: "{", Value: list, Suffix: "}"} + case reflect.Slice: + if v.IsNil() { + return textNil + } + + // Check whether this is a []byte of text data. + if t.Elem() == byteType { + b := v.Bytes() + isPrintSpace := func(r rune) bool { return unicode.IsPrint(r) || unicode.IsSpace(r) } + if len(b) > 0 && utf8.Valid(b) && len(bytes.TrimFunc(b, isPrintSpace)) == 0 { + out = opts.formatString("", string(b)) + skipType = true + return opts.FormatType(t, out) + } + } + + fallthrough + case reflect.Array: + maxLen := v.Len() + if opts.LimitVerbosity { + maxLen = ((1 << opts.verbosity()) >> 1) << 2 // 0, 4, 8, 16, 32, etc... + opts.VerbosityLevel-- + } + var list textList + for i := 0; i < v.Len(); i++ { + if len(list) == maxLen { + list.AppendEllipsis(diffStats{}) + break + } + s := opts.WithTypeMode(elideType).FormatValue(v.Index(i), t.Kind(), ptrs) + list = append(list, textRecord{Value: s}) + } + + out = &textWrap{Prefix: "{", Value: list, Suffix: "}"} + if t.Kind() == reflect.Slice && opts.PrintAddresses { + header := fmt.Sprintf("ptr:%v, len:%d, cap:%d", formatPointer(value.PointerOf(v), false), v.Len(), v.Cap()) + out = &textWrap{Prefix: pointerDelimPrefix + header + pointerDelimSuffix, Value: out} + } + return out + case reflect.Map: + if v.IsNil() { + return textNil + } + + // Check pointer for cycles. + ptrRef, visited := ptrs.Push(v) + if visited { + return makeLeafReference(ptrRef, opts.PrintAddresses) + } + defer ptrs.Pop() + + maxLen := v.Len() + if opts.LimitVerbosity { + maxLen = ((1 << opts.verbosity()) >> 1) << 2 // 0, 4, 8, 16, 32, etc... + opts.VerbosityLevel-- + } + var list textList + for _, k := range value.SortKeys(v.MapKeys()) { + if len(list) == maxLen { + list.AppendEllipsis(diffStats{}) + break + } + sk := formatMapKey(k, false, ptrs) + sv := opts.WithTypeMode(elideType).FormatValue(v.MapIndex(k), t.Kind(), ptrs) + list = append(list, textRecord{Key: sk, Value: sv}) + } + + out = &textWrap{Prefix: "{", Value: list, Suffix: "}"} + out = wrapTrunkReference(ptrRef, opts.PrintAddresses, out) + return out + case reflect.Ptr: + if v.IsNil() { + return textNil + } + + // Check pointer for cycles. + ptrRef, visited := ptrs.Push(v) + if visited { + out = makeLeafReference(ptrRef, opts.PrintAddresses) + return &textWrap{Prefix: "&", Value: out} + } + defer ptrs.Pop() + + // Skip the name only if this is an unnamed pointer type. + // Otherwise taking the address of a value does not reproduce + // the named pointer type. + if v.Type().Name() == "" { + skipType = true // Let the underlying value print the type instead + } + out = opts.FormatValue(v.Elem(), t.Kind(), ptrs) + out = wrapTrunkReference(ptrRef, opts.PrintAddresses, out) + out = &textWrap{Prefix: "&", Value: out} + return out + case reflect.Interface: + if v.IsNil() { + return textNil + } + // Interfaces accept different concrete types, + // so configure the underlying value to explicitly print the type. + return opts.WithTypeMode(emitType).FormatValue(v.Elem(), t.Kind(), ptrs) + default: + panic(fmt.Sprintf("%v kind not handled", v.Kind())) + } +} + +func (opts formatOptions) formatString(prefix, s string) textNode { + maxLen := len(s) + maxLines := strings.Count(s, "\n") + 1 + if opts.LimitVerbosity { + maxLen = (1 << opts.verbosity()) << 5 // 32, 64, 128, 256, etc... + maxLines = (1 << opts.verbosity()) << 2 // 4, 8, 16, 32, 64, etc... + } + + // For multiline strings, use the triple-quote syntax, + // but only use it when printing removed or inserted nodes since + // we only want the extra verbosity for those cases. + lines := strings.Split(strings.TrimSuffix(s, "\n"), "\n") + isTripleQuoted := len(lines) >= 4 && (opts.DiffMode == '-' || opts.DiffMode == '+') + for i := 0; i < len(lines) && isTripleQuoted; i++ { + lines[i] = strings.TrimPrefix(strings.TrimSuffix(lines[i], "\r"), "\r") // trim leading/trailing carriage returns for legacy Windows endline support + isPrintable := func(r rune) bool { + return unicode.IsPrint(r) || r == '\t' // specially treat tab as printable + } + line := lines[i] + isTripleQuoted = !strings.HasPrefix(strings.TrimPrefix(line, prefix), `"""`) && !strings.HasPrefix(line, "...") && strings.TrimFunc(line, isPrintable) == "" && len(line) <= maxLen + } + if isTripleQuoted { + var list textList + list = append(list, textRecord{Diff: opts.DiffMode, Value: textLine(prefix + `"""`), ElideComma: true}) + for i, line := range lines { + if numElided := len(lines) - i; i == maxLines-1 && numElided > 1 { + comment := commentString(fmt.Sprintf("%d elided lines", numElided)) + list = append(list, textRecord{Diff: opts.DiffMode, Value: textEllipsis, ElideComma: true, Comment: comment}) + break + } + list = append(list, textRecord{Diff: opts.DiffMode, Value: textLine(line), ElideComma: true}) + } + list = append(list, textRecord{Diff: opts.DiffMode, Value: textLine(prefix + `"""`), ElideComma: true}) + return &textWrap{Prefix: "(", Value: list, Suffix: ")"} + } + + // Format the string as a single-line quoted string. + if len(s) > maxLen+len(textEllipsis) { + return textLine(prefix + formatString(s[:maxLen]) + string(textEllipsis)) + } + return textLine(prefix + formatString(s)) +} + +// formatMapKey formats v as if it were a map key. +// The result is guaranteed to be a single line. +func formatMapKey(v reflect.Value, disambiguate bool, ptrs *pointerReferences) string { + var opts formatOptions + opts.DiffMode = diffIdentical + opts.TypeMode = elideType + opts.PrintAddresses = disambiguate + opts.AvoidStringer = disambiguate + opts.QualifiedNames = disambiguate + opts.VerbosityLevel = maxVerbosityPreset + opts.LimitVerbosity = true + s := opts.FormatValue(v, reflect.Map, ptrs).String() + return strings.TrimSpace(s) +} + +// formatString prints s as a double-quoted or backtick-quoted string. +func formatString(s string) string { + // Use quoted string if it the same length as a raw string literal. + // Otherwise, attempt to use the raw string form. + qs := strconv.Quote(s) + if len(qs) == 1+len(s)+1 { + return qs + } + + // Disallow newlines to ensure output is a single line. + // Only allow printable runes for readability purposes. + rawInvalid := func(r rune) bool { + return r == '`' || r == '\n' || !(unicode.IsPrint(r) || r == '\t') + } + if utf8.ValidString(s) && strings.IndexFunc(s, rawInvalid) < 0 { + return "`" + s + "`" + } + return qs +} + +// formatHex prints u as a hexadecimal integer in Go notation. +func formatHex(u uint64) string { + var f string + switch { + case u <= 0xff: + f = "0x%02x" + case u <= 0xffff: + f = "0x%04x" + case u <= 0xffffff: + f = "0x%06x" + case u <= 0xffffffff: + f = "0x%08x" + case u <= 0xffffffffff: + f = "0x%010x" + case u <= 0xffffffffffff: + f = "0x%012x" + case u <= 0xffffffffffffff: + f = "0x%014x" + case u <= 0xffffffffffffffff: + f = "0x%016x" + } + return fmt.Sprintf(f, u) +} diff --git a/tests/vendor/github.com/google/go-cmp/cmp/report_slices.go b/tests/vendor/github.com/google/go-cmp/cmp/report_slices.go new file mode 100644 index 000000000..23e444f62 --- /dev/null +++ b/tests/vendor/github.com/google/go-cmp/cmp/report_slices.go @@ -0,0 +1,614 @@ +// Copyright 2019, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cmp + +import ( + "bytes" + "fmt" + "math" + "reflect" + "strconv" + "strings" + "unicode" + "unicode/utf8" + + "github.com/google/go-cmp/cmp/internal/diff" +) + +// CanFormatDiffSlice reports whether we support custom formatting for nodes +// that are slices of primitive kinds or strings. +func (opts formatOptions) CanFormatDiffSlice(v *valueNode) bool { + switch { + case opts.DiffMode != diffUnknown: + return false // Must be formatting in diff mode + case v.NumDiff == 0: + return false // No differences detected + case !v.ValueX.IsValid() || !v.ValueY.IsValid(): + return false // Both values must be valid + case v.NumIgnored > 0: + return false // Some ignore option was used + case v.NumTransformed > 0: + return false // Some transform option was used + case v.NumCompared > 1: + return false // More than one comparison was used + case v.NumCompared == 1 && v.Type.Name() != "": + // The need for cmp to check applicability of options on every element + // in a slice is a significant performance detriment for large []byte. + // The workaround is to specify Comparer(bytes.Equal), + // which enables cmp to compare []byte more efficiently. + // If they differ, we still want to provide batched diffing. + // The logic disallows named types since they tend to have their own + // String method, with nicer formatting than what this provides. + return false + } + + // Check whether this is an interface with the same concrete types. + t := v.Type + vx, vy := v.ValueX, v.ValueY + if t.Kind() == reflect.Interface && !vx.IsNil() && !vy.IsNil() && vx.Elem().Type() == vy.Elem().Type() { + vx, vy = vx.Elem(), vy.Elem() + t = vx.Type() + } + + // Check whether we provide specialized diffing for this type. + switch t.Kind() { + case reflect.String: + case reflect.Array, reflect.Slice: + // Only slices of primitive types have specialized handling. + switch t.Elem().Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, + reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr, + reflect.Bool, reflect.Float32, reflect.Float64, reflect.Complex64, reflect.Complex128: + default: + return false + } + + // Both slice values have to be non-empty. + if t.Kind() == reflect.Slice && (vx.Len() == 0 || vy.Len() == 0) { + return false + } + + // If a sufficient number of elements already differ, + // use specialized formatting even if length requirement is not met. + if v.NumDiff > v.NumSame { + return true + } + default: + return false + } + + // Use specialized string diffing for longer slices or strings. + const minLength = 32 + return vx.Len() >= minLength && vy.Len() >= minLength +} + +// FormatDiffSlice prints a diff for the slices (or strings) represented by v. +// This provides custom-tailored logic to make printing of differences in +// textual strings and slices of primitive kinds more readable. +func (opts formatOptions) FormatDiffSlice(v *valueNode) textNode { + assert(opts.DiffMode == diffUnknown) + t, vx, vy := v.Type, v.ValueX, v.ValueY + if t.Kind() == reflect.Interface { + vx, vy = vx.Elem(), vy.Elem() + t = vx.Type() + opts = opts.WithTypeMode(emitType) + } + + // Auto-detect the type of the data. + var sx, sy string + var ssx, ssy []string + var isString, isMostlyText, isPureLinedText, isBinary bool + switch { + case t.Kind() == reflect.String: + sx, sy = vx.String(), vy.String() + isString = true + case t.Kind() == reflect.Slice && t.Elem() == byteType: + sx, sy = string(vx.Bytes()), string(vy.Bytes()) + isString = true + case t.Kind() == reflect.Array: + // Arrays need to be addressable for slice operations to work. + vx2, vy2 := reflect.New(t).Elem(), reflect.New(t).Elem() + vx2.Set(vx) + vy2.Set(vy) + vx, vy = vx2, vy2 + } + if isString { + var numTotalRunes, numValidRunes, numLines, lastLineIdx, maxLineLen int + for i, r := range sx + sy { + numTotalRunes++ + if (unicode.IsPrint(r) || unicode.IsSpace(r)) && r != utf8.RuneError { + numValidRunes++ + } + if r == '\n' { + if maxLineLen < i-lastLineIdx { + maxLineLen = i - lastLineIdx + } + lastLineIdx = i + 1 + numLines++ + } + } + isPureText := numValidRunes == numTotalRunes + isMostlyText = float64(numValidRunes) > math.Floor(0.90*float64(numTotalRunes)) + isPureLinedText = isPureText && numLines >= 4 && maxLineLen <= 1024 + isBinary = !isMostlyText + + // Avoid diffing by lines if it produces a significantly more complex + // edit script than diffing by bytes. + if isPureLinedText { + ssx = strings.Split(sx, "\n") + ssy = strings.Split(sy, "\n") + esLines := diff.Difference(len(ssx), len(ssy), func(ix, iy int) diff.Result { + return diff.BoolResult(ssx[ix] == ssy[iy]) + }) + esBytes := diff.Difference(len(sx), len(sy), func(ix, iy int) diff.Result { + return diff.BoolResult(sx[ix] == sy[iy]) + }) + efficiencyLines := float64(esLines.Dist()) / float64(len(esLines)) + efficiencyBytes := float64(esBytes.Dist()) / float64(len(esBytes)) + quotedLength := len(strconv.Quote(sx + sy)) + unquotedLength := len(sx) + len(sy) + escapeExpansionRatio := float64(quotedLength) / float64(unquotedLength) + isPureLinedText = efficiencyLines < 4*efficiencyBytes || escapeExpansionRatio > 1.1 + } + } + + // Format the string into printable records. + var list textList + var delim string + switch { + // If the text appears to be multi-lined text, + // then perform differencing across individual lines. + case isPureLinedText: + list = opts.formatDiffSlice( + reflect.ValueOf(ssx), reflect.ValueOf(ssy), 1, "line", + func(v reflect.Value, d diffMode) textRecord { + s := formatString(v.Index(0).String()) + return textRecord{Diff: d, Value: textLine(s)} + }, + ) + delim = "\n" + + // If possible, use a custom triple-quote (""") syntax for printing + // differences in a string literal. This format is more readable, + // but has edge-cases where differences are visually indistinguishable. + // This format is avoided under the following conditions: + // - A line starts with `"""` + // - A line starts with "..." + // - A line contains non-printable characters + // - Adjacent different lines differ only by whitespace + // + // For example: + // + // """ + // ... // 3 identical lines + // foo + // bar + // - baz + // + BAZ + // """ + isTripleQuoted := true + prevRemoveLines := map[string]bool{} + prevInsertLines := map[string]bool{} + var list2 textList + list2 = append(list2, textRecord{Value: textLine(`"""`), ElideComma: true}) + for _, r := range list { + if !r.Value.Equal(textEllipsis) { + line, _ := strconv.Unquote(string(r.Value.(textLine))) + line = strings.TrimPrefix(strings.TrimSuffix(line, "\r"), "\r") // trim leading/trailing carriage returns for legacy Windows endline support + normLine := strings.Map(func(r rune) rune { + if unicode.IsSpace(r) { + return -1 // drop whitespace to avoid visually indistinguishable output + } + return r + }, line) + isPrintable := func(r rune) bool { + return unicode.IsPrint(r) || r == '\t' // specially treat tab as printable + } + isTripleQuoted = !strings.HasPrefix(line, `"""`) && !strings.HasPrefix(line, "...") && strings.TrimFunc(line, isPrintable) == "" + switch r.Diff { + case diffRemoved: + isTripleQuoted = isTripleQuoted && !prevInsertLines[normLine] + prevRemoveLines[normLine] = true + case diffInserted: + isTripleQuoted = isTripleQuoted && !prevRemoveLines[normLine] + prevInsertLines[normLine] = true + } + if !isTripleQuoted { + break + } + r.Value = textLine(line) + r.ElideComma = true + } + if !(r.Diff == diffRemoved || r.Diff == diffInserted) { // start a new non-adjacent difference group + prevRemoveLines = map[string]bool{} + prevInsertLines = map[string]bool{} + } + list2 = append(list2, r) + } + if r := list2[len(list2)-1]; r.Diff == diffIdentical && len(r.Value.(textLine)) == 0 { + list2 = list2[:len(list2)-1] // elide single empty line at the end + } + list2 = append(list2, textRecord{Value: textLine(`"""`), ElideComma: true}) + if isTripleQuoted { + var out textNode = &textWrap{Prefix: "(", Value: list2, Suffix: ")"} + switch t.Kind() { + case reflect.String: + if t != stringType { + out = opts.FormatType(t, out) + } + case reflect.Slice: + // Always emit type for slices since the triple-quote syntax + // looks like a string (not a slice). + opts = opts.WithTypeMode(emitType) + out = opts.FormatType(t, out) + } + return out + } + + // If the text appears to be single-lined text, + // then perform differencing in approximately fixed-sized chunks. + // The output is printed as quoted strings. + case isMostlyText: + list = opts.formatDiffSlice( + reflect.ValueOf(sx), reflect.ValueOf(sy), 64, "byte", + func(v reflect.Value, d diffMode) textRecord { + s := formatString(v.String()) + return textRecord{Diff: d, Value: textLine(s)} + }, + ) + + // If the text appears to be binary data, + // then perform differencing in approximately fixed-sized chunks. + // The output is inspired by hexdump. + case isBinary: + list = opts.formatDiffSlice( + reflect.ValueOf(sx), reflect.ValueOf(sy), 16, "byte", + func(v reflect.Value, d diffMode) textRecord { + var ss []string + for i := 0; i < v.Len(); i++ { + ss = append(ss, formatHex(v.Index(i).Uint())) + } + s := strings.Join(ss, ", ") + comment := commentString(fmt.Sprintf("%c|%v|", d, formatASCII(v.String()))) + return textRecord{Diff: d, Value: textLine(s), Comment: comment} + }, + ) + + // For all other slices of primitive types, + // then perform differencing in approximately fixed-sized chunks. + // The size of each chunk depends on the width of the element kind. + default: + var chunkSize int + if t.Elem().Kind() == reflect.Bool { + chunkSize = 16 + } else { + switch t.Elem().Bits() { + case 8: + chunkSize = 16 + case 16: + chunkSize = 12 + case 32: + chunkSize = 8 + default: + chunkSize = 8 + } + } + list = opts.formatDiffSlice( + vx, vy, chunkSize, t.Elem().Kind().String(), + func(v reflect.Value, d diffMode) textRecord { + var ss []string + for i := 0; i < v.Len(); i++ { + switch t.Elem().Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + ss = append(ss, fmt.Sprint(v.Index(i).Int())) + case reflect.Uint, reflect.Uint16, reflect.Uint32, reflect.Uint64: + ss = append(ss, fmt.Sprint(v.Index(i).Uint())) + case reflect.Uint8, reflect.Uintptr: + ss = append(ss, formatHex(v.Index(i).Uint())) + case reflect.Bool, reflect.Float32, reflect.Float64, reflect.Complex64, reflect.Complex128: + ss = append(ss, fmt.Sprint(v.Index(i).Interface())) + } + } + s := strings.Join(ss, ", ") + return textRecord{Diff: d, Value: textLine(s)} + }, + ) + } + + // Wrap the output with appropriate type information. + var out textNode = &textWrap{Prefix: "{", Value: list, Suffix: "}"} + if !isMostlyText { + // The "{...}" byte-sequence literal is not valid Go syntax for strings. + // Emit the type for extra clarity (e.g. "string{...}"). + if t.Kind() == reflect.String { + opts = opts.WithTypeMode(emitType) + } + return opts.FormatType(t, out) + } + switch t.Kind() { + case reflect.String: + out = &textWrap{Prefix: "strings.Join(", Value: out, Suffix: fmt.Sprintf(", %q)", delim)} + if t != stringType { + out = opts.FormatType(t, out) + } + case reflect.Slice: + out = &textWrap{Prefix: "bytes.Join(", Value: out, Suffix: fmt.Sprintf(", %q)", delim)} + if t != bytesType { + out = opts.FormatType(t, out) + } + } + return out +} + +// formatASCII formats s as an ASCII string. +// This is useful for printing binary strings in a semi-legible way. +func formatASCII(s string) string { + b := bytes.Repeat([]byte{'.'}, len(s)) + for i := 0; i < len(s); i++ { + if ' ' <= s[i] && s[i] <= '~' { + b[i] = s[i] + } + } + return string(b) +} + +func (opts formatOptions) formatDiffSlice( + vx, vy reflect.Value, chunkSize int, name string, + makeRec func(reflect.Value, diffMode) textRecord, +) (list textList) { + eq := func(ix, iy int) bool { + return vx.Index(ix).Interface() == vy.Index(iy).Interface() + } + es := diff.Difference(vx.Len(), vy.Len(), func(ix, iy int) diff.Result { + return diff.BoolResult(eq(ix, iy)) + }) + + appendChunks := func(v reflect.Value, d diffMode) int { + n0 := v.Len() + for v.Len() > 0 { + n := chunkSize + if n > v.Len() { + n = v.Len() + } + list = append(list, makeRec(v.Slice(0, n), d)) + v = v.Slice(n, v.Len()) + } + return n0 - v.Len() + } + + var numDiffs int + maxLen := -1 + if opts.LimitVerbosity { + maxLen = (1 << opts.verbosity()) << 2 // 4, 8, 16, 32, 64, etc... + opts.VerbosityLevel-- + } + + groups := coalesceAdjacentEdits(name, es) + groups = coalesceInterveningIdentical(groups, chunkSize/4) + groups = cleanupSurroundingIdentical(groups, eq) + maxGroup := diffStats{Name: name} + for i, ds := range groups { + if maxLen >= 0 && numDiffs >= maxLen { + maxGroup = maxGroup.Append(ds) + continue + } + + // Print equal. + if ds.NumDiff() == 0 { + // Compute the number of leading and trailing equal bytes to print. + var numLo, numHi int + numEqual := ds.NumIgnored + ds.NumIdentical + for numLo < chunkSize*numContextRecords && numLo+numHi < numEqual && i != 0 { + numLo++ + } + for numHi < chunkSize*numContextRecords && numLo+numHi < numEqual && i != len(groups)-1 { + numHi++ + } + if numEqual-(numLo+numHi) <= chunkSize && ds.NumIgnored == 0 { + numHi = numEqual - numLo // Avoid pointless coalescing of single equal row + } + + // Print the equal bytes. + appendChunks(vx.Slice(0, numLo), diffIdentical) + if numEqual > numLo+numHi { + ds.NumIdentical -= numLo + numHi + list.AppendEllipsis(ds) + } + appendChunks(vx.Slice(numEqual-numHi, numEqual), diffIdentical) + vx = vx.Slice(numEqual, vx.Len()) + vy = vy.Slice(numEqual, vy.Len()) + continue + } + + // Print unequal. + len0 := len(list) + nx := appendChunks(vx.Slice(0, ds.NumIdentical+ds.NumRemoved+ds.NumModified), diffRemoved) + vx = vx.Slice(nx, vx.Len()) + ny := appendChunks(vy.Slice(0, ds.NumIdentical+ds.NumInserted+ds.NumModified), diffInserted) + vy = vy.Slice(ny, vy.Len()) + numDiffs += len(list) - len0 + } + if maxGroup.IsZero() { + assert(vx.Len() == 0 && vy.Len() == 0) + } else { + list.AppendEllipsis(maxGroup) + } + return list +} + +// coalesceAdjacentEdits coalesces the list of edits into groups of adjacent +// equal or unequal counts. +// +// Example: +// +// Input: "..XXY...Y" +// Output: [ +// {NumIdentical: 2}, +// {NumRemoved: 2, NumInserted 1}, +// {NumIdentical: 3}, +// {NumInserted: 1}, +// ] +func coalesceAdjacentEdits(name string, es diff.EditScript) (groups []diffStats) { + var prevMode byte + lastStats := func(mode byte) *diffStats { + if prevMode != mode { + groups = append(groups, diffStats{Name: name}) + prevMode = mode + } + return &groups[len(groups)-1] + } + for _, e := range es { + switch e { + case diff.Identity: + lastStats('=').NumIdentical++ + case diff.UniqueX: + lastStats('!').NumRemoved++ + case diff.UniqueY: + lastStats('!').NumInserted++ + case diff.Modified: + lastStats('!').NumModified++ + } + } + return groups +} + +// coalesceInterveningIdentical coalesces sufficiently short (<= windowSize) +// equal groups into adjacent unequal groups that currently result in a +// dual inserted/removed printout. This acts as a high-pass filter to smooth +// out high-frequency changes within the windowSize. +// +// Example: +// +// WindowSize: 16, +// Input: [ +// {NumIdentical: 61}, // group 0 +// {NumRemoved: 3, NumInserted: 1}, // group 1 +// {NumIdentical: 6}, // ├── coalesce +// {NumInserted: 2}, // ├── coalesce +// {NumIdentical: 1}, // ├── coalesce +// {NumRemoved: 9}, // └── coalesce +// {NumIdentical: 64}, // group 2 +// {NumRemoved: 3, NumInserted: 1}, // group 3 +// {NumIdentical: 6}, // ├── coalesce +// {NumInserted: 2}, // ├── coalesce +// {NumIdentical: 1}, // ├── coalesce +// {NumRemoved: 7}, // ├── coalesce +// {NumIdentical: 1}, // ├── coalesce +// {NumRemoved: 2}, // └── coalesce +// {NumIdentical: 63}, // group 4 +// ] +// Output: [ +// {NumIdentical: 61}, +// {NumIdentical: 7, NumRemoved: 12, NumInserted: 3}, +// {NumIdentical: 64}, +// {NumIdentical: 8, NumRemoved: 12, NumInserted: 3}, +// {NumIdentical: 63}, +// ] +func coalesceInterveningIdentical(groups []diffStats, windowSize int) []diffStats { + groups, groupsOrig := groups[:0], groups + for i, ds := range groupsOrig { + if len(groups) >= 2 && ds.NumDiff() > 0 { + prev := &groups[len(groups)-2] // Unequal group + curr := &groups[len(groups)-1] // Equal group + next := &groupsOrig[i] // Unequal group + hadX, hadY := prev.NumRemoved > 0, prev.NumInserted > 0 + hasX, hasY := next.NumRemoved > 0, next.NumInserted > 0 + if ((hadX || hasX) && (hadY || hasY)) && curr.NumIdentical <= windowSize { + *prev = prev.Append(*curr).Append(*next) + groups = groups[:len(groups)-1] // Truncate off equal group + continue + } + } + groups = append(groups, ds) + } + return groups +} + +// cleanupSurroundingIdentical scans through all unequal groups, and +// moves any leading sequence of equal elements to the preceding equal group and +// moves and trailing sequence of equal elements to the succeeding equal group. +// +// This is necessary since coalesceInterveningIdentical may coalesce edit groups +// together such that leading/trailing spans of equal elements becomes possible. +// Note that this can occur even with an optimal diffing algorithm. +// +// Example: +// +// Input: [ +// {NumIdentical: 61}, +// {NumIdentical: 1 , NumRemoved: 11, NumInserted: 2}, // assume 3 leading identical elements +// {NumIdentical: 67}, +// {NumIdentical: 7, NumRemoved: 12, NumInserted: 3}, // assume 10 trailing identical elements +// {NumIdentical: 54}, +// ] +// Output: [ +// {NumIdentical: 64}, // incremented by 3 +// {NumRemoved: 9}, +// {NumIdentical: 67}, +// {NumRemoved: 9}, +// {NumIdentical: 64}, // incremented by 10 +// ] +func cleanupSurroundingIdentical(groups []diffStats, eq func(i, j int) bool) []diffStats { + var ix, iy int // indexes into sequence x and y + for i, ds := range groups { + // Handle equal group. + if ds.NumDiff() == 0 { + ix += ds.NumIdentical + iy += ds.NumIdentical + continue + } + + // Handle unequal group. + nx := ds.NumIdentical + ds.NumRemoved + ds.NumModified + ny := ds.NumIdentical + ds.NumInserted + ds.NumModified + var numLeadingIdentical, numTrailingIdentical int + for j := 0; j < nx && j < ny && eq(ix+j, iy+j); j++ { + numLeadingIdentical++ + } + for j := 0; j < nx && j < ny && eq(ix+nx-1-j, iy+ny-1-j); j++ { + numTrailingIdentical++ + } + if numIdentical := numLeadingIdentical + numTrailingIdentical; numIdentical > 0 { + if numLeadingIdentical > 0 { + // Remove leading identical span from this group and + // insert it into the preceding group. + if i-1 >= 0 { + groups[i-1].NumIdentical += numLeadingIdentical + } else { + // No preceding group exists, so prepend a new group, + // but do so after we finish iterating over all groups. + defer func() { + groups = append([]diffStats{{Name: groups[0].Name, NumIdentical: numLeadingIdentical}}, groups...) + }() + } + // Increment indexes since the preceding group would have handled this. + ix += numLeadingIdentical + iy += numLeadingIdentical + } + if numTrailingIdentical > 0 { + // Remove trailing identical span from this group and + // insert it into the succeeding group. + if i+1 < len(groups) { + groups[i+1].NumIdentical += numTrailingIdentical + } else { + // No succeeding group exists, so append a new group, + // but do so after we finish iterating over all groups. + defer func() { + groups = append(groups, diffStats{Name: groups[len(groups)-1].Name, NumIdentical: numTrailingIdentical}) + }() + } + // Do not increment indexes since the succeeding group will handle this. + } + + // Update this group since some identical elements were removed. + nx -= numIdentical + ny -= numIdentical + groups[i] = diffStats{Name: ds.Name, NumRemoved: nx, NumInserted: ny} + } + ix += nx + iy += ny + } + return groups +} diff --git a/tests/vendor/github.com/google/go-cmp/cmp/report_text.go b/tests/vendor/github.com/google/go-cmp/cmp/report_text.go new file mode 100644 index 000000000..388fcf571 --- /dev/null +++ b/tests/vendor/github.com/google/go-cmp/cmp/report_text.go @@ -0,0 +1,432 @@ +// Copyright 2019, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cmp + +import ( + "bytes" + "fmt" + "math/rand" + "strings" + "time" + "unicode/utf8" + + "github.com/google/go-cmp/cmp/internal/flags" +) + +var randBool = rand.New(rand.NewSource(time.Now().Unix())).Intn(2) == 0 + +const maxColumnLength = 80 + +type indentMode int + +func (n indentMode) appendIndent(b []byte, d diffMode) []byte { + // The output of Diff is documented as being unstable to provide future + // flexibility in changing the output for more humanly readable reports. + // This logic intentionally introduces instability to the exact output + // so that users can detect accidental reliance on stability early on, + // rather than much later when an actual change to the format occurs. + if flags.Deterministic || randBool { + // Use regular spaces (U+0020). + switch d { + case diffUnknown, diffIdentical: + b = append(b, " "...) + case diffRemoved: + b = append(b, "- "...) + case diffInserted: + b = append(b, "+ "...) + } + } else { + // Use non-breaking spaces (U+00a0). + switch d { + case diffUnknown, diffIdentical: + b = append(b, "  "...) + case diffRemoved: + b = append(b, "- "...) + case diffInserted: + b = append(b, "+ "...) + } + } + return repeatCount(n).appendChar(b, '\t') +} + +type repeatCount int + +func (n repeatCount) appendChar(b []byte, c byte) []byte { + for ; n > 0; n-- { + b = append(b, c) + } + return b +} + +// textNode is a simplified tree-based representation of structured text. +// Possible node types are textWrap, textList, or textLine. +type textNode interface { + // Len reports the length in bytes of a single-line version of the tree. + // Nested textRecord.Diff and textRecord.Comment fields are ignored. + Len() int + // Equal reports whether the two trees are structurally identical. + // Nested textRecord.Diff and textRecord.Comment fields are compared. + Equal(textNode) bool + // String returns the string representation of the text tree. + // It is not guaranteed that len(x.String()) == x.Len(), + // nor that x.String() == y.String() implies that x.Equal(y). + String() string + + // formatCompactTo formats the contents of the tree as a single-line string + // to the provided buffer. Any nested textRecord.Diff and textRecord.Comment + // fields are ignored. + // + // However, not all nodes in the tree should be collapsed as a single-line. + // If a node can be collapsed as a single-line, it is replaced by a textLine + // node. Since the top-level node cannot replace itself, this also returns + // the current node itself. + // + // This does not mutate the receiver. + formatCompactTo([]byte, diffMode) ([]byte, textNode) + // formatExpandedTo formats the contents of the tree as a multi-line string + // to the provided buffer. In order for column alignment to operate well, + // formatCompactTo must be called before calling formatExpandedTo. + formatExpandedTo([]byte, diffMode, indentMode) []byte +} + +// textWrap is a wrapper that concatenates a prefix and/or a suffix +// to the underlying node. +type textWrap struct { + Prefix string // e.g., "bytes.Buffer{" + Value textNode // textWrap | textList | textLine + Suffix string // e.g., "}" + Metadata interface{} // arbitrary metadata; has no effect on formatting +} + +func (s *textWrap) Len() int { + return len(s.Prefix) + s.Value.Len() + len(s.Suffix) +} +func (s1 *textWrap) Equal(s2 textNode) bool { + if s2, ok := s2.(*textWrap); ok { + return s1.Prefix == s2.Prefix && s1.Value.Equal(s2.Value) && s1.Suffix == s2.Suffix + } + return false +} +func (s *textWrap) String() string { + var d diffMode + var n indentMode + _, s2 := s.formatCompactTo(nil, d) + b := n.appendIndent(nil, d) // Leading indent + b = s2.formatExpandedTo(b, d, n) // Main body + b = append(b, '\n') // Trailing newline + return string(b) +} +func (s *textWrap) formatCompactTo(b []byte, d diffMode) ([]byte, textNode) { + n0 := len(b) // Original buffer length + b = append(b, s.Prefix...) + b, s.Value = s.Value.formatCompactTo(b, d) + b = append(b, s.Suffix...) + if _, ok := s.Value.(textLine); ok { + return b, textLine(b[n0:]) + } + return b, s +} +func (s *textWrap) formatExpandedTo(b []byte, d diffMode, n indentMode) []byte { + b = append(b, s.Prefix...) + b = s.Value.formatExpandedTo(b, d, n) + b = append(b, s.Suffix...) + return b +} + +// textList is a comma-separated list of textWrap or textLine nodes. +// The list may be formatted as multi-lines or single-line at the discretion +// of the textList.formatCompactTo method. +type textList []textRecord +type textRecord struct { + Diff diffMode // e.g., 0 or '-' or '+' + Key string // e.g., "MyField" + Value textNode // textWrap | textLine + ElideComma bool // avoid trailing comma + Comment fmt.Stringer // e.g., "6 identical fields" +} + +// AppendEllipsis appends a new ellipsis node to the list if none already +// exists at the end. If cs is non-zero it coalesces the statistics with the +// previous diffStats. +func (s *textList) AppendEllipsis(ds diffStats) { + hasStats := !ds.IsZero() + if len(*s) == 0 || !(*s)[len(*s)-1].Value.Equal(textEllipsis) { + if hasStats { + *s = append(*s, textRecord{Value: textEllipsis, ElideComma: true, Comment: ds}) + } else { + *s = append(*s, textRecord{Value: textEllipsis, ElideComma: true}) + } + return + } + if hasStats { + (*s)[len(*s)-1].Comment = (*s)[len(*s)-1].Comment.(diffStats).Append(ds) + } +} + +func (s textList) Len() (n int) { + for i, r := range s { + n += len(r.Key) + if r.Key != "" { + n += len(": ") + } + n += r.Value.Len() + if i < len(s)-1 { + n += len(", ") + } + } + return n +} + +func (s1 textList) Equal(s2 textNode) bool { + if s2, ok := s2.(textList); ok { + if len(s1) != len(s2) { + return false + } + for i := range s1 { + r1, r2 := s1[i], s2[i] + if !(r1.Diff == r2.Diff && r1.Key == r2.Key && r1.Value.Equal(r2.Value) && r1.Comment == r2.Comment) { + return false + } + } + return true + } + return false +} + +func (s textList) String() string { + return (&textWrap{Prefix: "{", Value: s, Suffix: "}"}).String() +} + +func (s textList) formatCompactTo(b []byte, d diffMode) ([]byte, textNode) { + s = append(textList(nil), s...) // Avoid mutating original + + // Determine whether we can collapse this list as a single line. + n0 := len(b) // Original buffer length + var multiLine bool + for i, r := range s { + if r.Diff == diffInserted || r.Diff == diffRemoved { + multiLine = true + } + b = append(b, r.Key...) + if r.Key != "" { + b = append(b, ": "...) + } + b, s[i].Value = r.Value.formatCompactTo(b, d|r.Diff) + if _, ok := s[i].Value.(textLine); !ok { + multiLine = true + } + if r.Comment != nil { + multiLine = true + } + if i < len(s)-1 { + b = append(b, ", "...) + } + } + // Force multi-lined output when printing a removed/inserted node that + // is sufficiently long. + if (d == diffInserted || d == diffRemoved) && len(b[n0:]) > maxColumnLength { + multiLine = true + } + if !multiLine { + return b, textLine(b[n0:]) + } + return b, s +} + +func (s textList) formatExpandedTo(b []byte, d diffMode, n indentMode) []byte { + alignKeyLens := s.alignLens( + func(r textRecord) bool { + _, isLine := r.Value.(textLine) + return r.Key == "" || !isLine + }, + func(r textRecord) int { return utf8.RuneCountInString(r.Key) }, + ) + alignValueLens := s.alignLens( + func(r textRecord) bool { + _, isLine := r.Value.(textLine) + return !isLine || r.Value.Equal(textEllipsis) || r.Comment == nil + }, + func(r textRecord) int { return utf8.RuneCount(r.Value.(textLine)) }, + ) + + // Format lists of simple lists in a batched form. + // If the list is sequence of only textLine values, + // then batch multiple values on a single line. + var isSimple bool + for _, r := range s { + _, isLine := r.Value.(textLine) + isSimple = r.Diff == 0 && r.Key == "" && isLine && r.Comment == nil + if !isSimple { + break + } + } + if isSimple { + n++ + var batch []byte + emitBatch := func() { + if len(batch) > 0 { + b = n.appendIndent(append(b, '\n'), d) + b = append(b, bytes.TrimRight(batch, " ")...) + batch = batch[:0] + } + } + for _, r := range s { + line := r.Value.(textLine) + if len(batch)+len(line)+len(", ") > maxColumnLength { + emitBatch() + } + batch = append(batch, line...) + batch = append(batch, ", "...) + } + emitBatch() + n-- + return n.appendIndent(append(b, '\n'), d) + } + + // Format the list as a multi-lined output. + n++ + for i, r := range s { + b = n.appendIndent(append(b, '\n'), d|r.Diff) + if r.Key != "" { + b = append(b, r.Key+": "...) + } + b = alignKeyLens[i].appendChar(b, ' ') + + b = r.Value.formatExpandedTo(b, d|r.Diff, n) + if !r.ElideComma { + b = append(b, ',') + } + b = alignValueLens[i].appendChar(b, ' ') + + if r.Comment != nil { + b = append(b, " // "+r.Comment.String()...) + } + } + n-- + + return n.appendIndent(append(b, '\n'), d) +} + +func (s textList) alignLens( + skipFunc func(textRecord) bool, + lenFunc func(textRecord) int, +) []repeatCount { + var startIdx, endIdx, maxLen int + lens := make([]repeatCount, len(s)) + for i, r := range s { + if skipFunc(r) { + for j := startIdx; j < endIdx && j < len(s); j++ { + lens[j] = repeatCount(maxLen - lenFunc(s[j])) + } + startIdx, endIdx, maxLen = i+1, i+1, 0 + } else { + if maxLen < lenFunc(r) { + maxLen = lenFunc(r) + } + endIdx = i + 1 + } + } + for j := startIdx; j < endIdx && j < len(s); j++ { + lens[j] = repeatCount(maxLen - lenFunc(s[j])) + } + return lens +} + +// textLine is a single-line segment of text and is always a leaf node +// in the textNode tree. +type textLine []byte + +var ( + textNil = textLine("nil") + textEllipsis = textLine("...") +) + +func (s textLine) Len() int { + return len(s) +} +func (s1 textLine) Equal(s2 textNode) bool { + if s2, ok := s2.(textLine); ok { + return bytes.Equal([]byte(s1), []byte(s2)) + } + return false +} +func (s textLine) String() string { + return string(s) +} +func (s textLine) formatCompactTo(b []byte, d diffMode) ([]byte, textNode) { + return append(b, s...), s +} +func (s textLine) formatExpandedTo(b []byte, _ diffMode, _ indentMode) []byte { + return append(b, s...) +} + +type diffStats struct { + Name string + NumIgnored int + NumIdentical int + NumRemoved int + NumInserted int + NumModified int +} + +func (s diffStats) IsZero() bool { + s.Name = "" + return s == diffStats{} +} + +func (s diffStats) NumDiff() int { + return s.NumRemoved + s.NumInserted + s.NumModified +} + +func (s diffStats) Append(ds diffStats) diffStats { + assert(s.Name == ds.Name) + s.NumIgnored += ds.NumIgnored + s.NumIdentical += ds.NumIdentical + s.NumRemoved += ds.NumRemoved + s.NumInserted += ds.NumInserted + s.NumModified += ds.NumModified + return s +} + +// String prints a humanly-readable summary of coalesced records. +// +// Example: +// +// diffStats{Name: "Field", NumIgnored: 5}.String() => "5 ignored fields" +func (s diffStats) String() string { + var ss []string + var sum int + labels := [...]string{"ignored", "identical", "removed", "inserted", "modified"} + counts := [...]int{s.NumIgnored, s.NumIdentical, s.NumRemoved, s.NumInserted, s.NumModified} + for i, n := range counts { + if n > 0 { + ss = append(ss, fmt.Sprintf("%d %v", n, labels[i])) + } + sum += n + } + + // Pluralize the name (adjusting for some obscure English grammar rules). + name := s.Name + if sum > 1 { + name += "s" + if strings.HasSuffix(name, "ys") { + name = name[:len(name)-2] + "ies" // e.g., "entrys" => "entries" + } + } + + // Format the list according to English grammar (with Oxford comma). + switch n := len(ss); n { + case 0: + return "" + case 1, 2: + return strings.Join(ss, " and ") + " " + name + default: + return strings.Join(ss[:n-1], ", ") + ", and " + ss[n-1] + " " + name + } +} + +type commentString string + +func (s commentString) String() string { return string(s) } diff --git a/tests/vendor/github.com/google/go-cmp/cmp/report_value.go b/tests/vendor/github.com/google/go-cmp/cmp/report_value.go new file mode 100644 index 000000000..668d470fd --- /dev/null +++ b/tests/vendor/github.com/google/go-cmp/cmp/report_value.go @@ -0,0 +1,121 @@ +// Copyright 2019, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cmp + +import "reflect" + +// valueNode represents a single node within a report, which is a +// structured representation of the value tree, containing information +// regarding which nodes are equal or not. +type valueNode struct { + parent *valueNode + + Type reflect.Type + ValueX reflect.Value + ValueY reflect.Value + + // NumSame is the number of leaf nodes that are equal. + // All descendants are equal only if NumDiff is 0. + NumSame int + // NumDiff is the number of leaf nodes that are not equal. + NumDiff int + // NumIgnored is the number of leaf nodes that are ignored. + NumIgnored int + // NumCompared is the number of leaf nodes that were compared + // using an Equal method or Comparer function. + NumCompared int + // NumTransformed is the number of non-leaf nodes that were transformed. + NumTransformed int + // NumChildren is the number of transitive descendants of this node. + // This counts from zero; thus, leaf nodes have no descendants. + NumChildren int + // MaxDepth is the maximum depth of the tree. This counts from zero; + // thus, leaf nodes have a depth of zero. + MaxDepth int + + // Records is a list of struct fields, slice elements, or map entries. + Records []reportRecord // If populated, implies Value is not populated + + // Value is the result of a transformation, pointer indirect, of + // type assertion. + Value *valueNode // If populated, implies Records is not populated + + // TransformerName is the name of the transformer. + TransformerName string // If non-empty, implies Value is populated +} +type reportRecord struct { + Key reflect.Value // Invalid for slice element + Value *valueNode +} + +func (parent *valueNode) PushStep(ps PathStep) (child *valueNode) { + vx, vy := ps.Values() + child = &valueNode{parent: parent, Type: ps.Type(), ValueX: vx, ValueY: vy} + switch s := ps.(type) { + case StructField: + assert(parent.Value == nil) + parent.Records = append(parent.Records, reportRecord{Key: reflect.ValueOf(s.Name()), Value: child}) + case SliceIndex: + assert(parent.Value == nil) + parent.Records = append(parent.Records, reportRecord{Value: child}) + case MapIndex: + assert(parent.Value == nil) + parent.Records = append(parent.Records, reportRecord{Key: s.Key(), Value: child}) + case Indirect: + assert(parent.Value == nil && parent.Records == nil) + parent.Value = child + case TypeAssertion: + assert(parent.Value == nil && parent.Records == nil) + parent.Value = child + case Transform: + assert(parent.Value == nil && parent.Records == nil) + parent.Value = child + parent.TransformerName = s.Name() + parent.NumTransformed++ + default: + assert(parent == nil) // Must be the root step + } + return child +} + +func (r *valueNode) Report(rs Result) { + assert(r.MaxDepth == 0) // May only be called on leaf nodes + + if rs.ByIgnore() { + r.NumIgnored++ + } else { + if rs.Equal() { + r.NumSame++ + } else { + r.NumDiff++ + } + } + assert(r.NumSame+r.NumDiff+r.NumIgnored == 1) + + if rs.ByMethod() { + r.NumCompared++ + } + if rs.ByFunc() { + r.NumCompared++ + } + assert(r.NumCompared <= 1) +} + +func (child *valueNode) PopStep() (parent *valueNode) { + if child.parent == nil { + return nil + } + parent = child.parent + parent.NumSame += child.NumSame + parent.NumDiff += child.NumDiff + parent.NumIgnored += child.NumIgnored + parent.NumCompared += child.NumCompared + parent.NumTransformed += child.NumTransformed + parent.NumChildren += child.NumChildren + 1 + if parent.MaxDepth < child.MaxDepth+1 { + parent.MaxDepth = child.MaxDepth + 1 + } + return parent +} diff --git a/tests/vendor/github.com/google/pprof/AUTHORS b/tests/vendor/github.com/google/pprof/AUTHORS new file mode 100644 index 000000000..fd736cb1c --- /dev/null +++ b/tests/vendor/github.com/google/pprof/AUTHORS @@ -0,0 +1,7 @@ +# This is the official list of pprof authors for copyright purposes. +# This file is distinct from the CONTRIBUTORS files. +# See the latter for an explanation. +# Names should be added to this file as: +# Name or Organization +# The email address is not required for organizations. +Google Inc. \ No newline at end of file diff --git a/tests/vendor/github.com/google/pprof/CONTRIBUTORS b/tests/vendor/github.com/google/pprof/CONTRIBUTORS new file mode 100644 index 000000000..8c8c37d2c --- /dev/null +++ b/tests/vendor/github.com/google/pprof/CONTRIBUTORS @@ -0,0 +1,16 @@ +# People who have agreed to one of the CLAs and can contribute patches. +# The AUTHORS file lists the copyright holders; this file +# lists people. For example, Google employees are listed here +# but not in AUTHORS, because Google holds the copyright. +# +# https://developers.google.com/open-source/cla/individual +# https://developers.google.com/open-source/cla/corporate +# +# Names should be added to this file as: +# Name +Raul Silvera +Tipp Moseley +Hyoun Kyu Cho +Martin Spier +Taco de Wolff +Andrew Hunter diff --git a/tests/vendor/github.com/google/pprof/LICENSE b/tests/vendor/github.com/google/pprof/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/tests/vendor/github.com/google/pprof/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/tests/vendor/github.com/google/pprof/profile/encode.go b/tests/vendor/github.com/google/pprof/profile/encode.go new file mode 100644 index 000000000..8ce9d3cf3 --- /dev/null +++ b/tests/vendor/github.com/google/pprof/profile/encode.go @@ -0,0 +1,596 @@ +// Copyright 2014 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package profile + +import ( + "errors" + "sort" + "strings" +) + +func (p *Profile) decoder() []decoder { + return profileDecoder +} + +// preEncode populates the unexported fields to be used by encode +// (with suffix X) from the corresponding exported fields. The +// exported fields are cleared up to facilitate testing. +func (p *Profile) preEncode() { + strings := make(map[string]int) + addString(strings, "") + + for _, st := range p.SampleType { + st.typeX = addString(strings, st.Type) + st.unitX = addString(strings, st.Unit) + } + + for _, s := range p.Sample { + s.labelX = nil + var keys []string + for k := range s.Label { + keys = append(keys, k) + } + sort.Strings(keys) + for _, k := range keys { + vs := s.Label[k] + for _, v := range vs { + s.labelX = append(s.labelX, + label{ + keyX: addString(strings, k), + strX: addString(strings, v), + }, + ) + } + } + var numKeys []string + for k := range s.NumLabel { + numKeys = append(numKeys, k) + } + sort.Strings(numKeys) + for _, k := range numKeys { + keyX := addString(strings, k) + vs := s.NumLabel[k] + units := s.NumUnit[k] + for i, v := range vs { + var unitX int64 + if len(units) != 0 { + unitX = addString(strings, units[i]) + } + s.labelX = append(s.labelX, + label{ + keyX: keyX, + numX: v, + unitX: unitX, + }, + ) + } + } + s.locationIDX = make([]uint64, len(s.Location)) + for i, loc := range s.Location { + s.locationIDX[i] = loc.ID + } + } + + for _, m := range p.Mapping { + m.fileX = addString(strings, m.File) + m.buildIDX = addString(strings, m.BuildID) + } + + for _, l := range p.Location { + for i, ln := range l.Line { + if ln.Function != nil { + l.Line[i].functionIDX = ln.Function.ID + } else { + l.Line[i].functionIDX = 0 + } + } + if l.Mapping != nil { + l.mappingIDX = l.Mapping.ID + } else { + l.mappingIDX = 0 + } + } + for _, f := range p.Function { + f.nameX = addString(strings, f.Name) + f.systemNameX = addString(strings, f.SystemName) + f.filenameX = addString(strings, f.Filename) + } + + p.dropFramesX = addString(strings, p.DropFrames) + p.keepFramesX = addString(strings, p.KeepFrames) + + if pt := p.PeriodType; pt != nil { + pt.typeX = addString(strings, pt.Type) + pt.unitX = addString(strings, pt.Unit) + } + + p.commentX = nil + for _, c := range p.Comments { + p.commentX = append(p.commentX, addString(strings, c)) + } + + p.defaultSampleTypeX = addString(strings, p.DefaultSampleType) + p.docURLX = addString(strings, p.DocURL) + + p.stringTable = make([]string, len(strings)) + for s, i := range strings { + p.stringTable[i] = s + } +} + +func (p *Profile) encode(b *buffer) { + for _, x := range p.SampleType { + encodeMessage(b, 1, x) + } + for _, x := range p.Sample { + encodeMessage(b, 2, x) + } + for _, x := range p.Mapping { + encodeMessage(b, 3, x) + } + for _, x := range p.Location { + encodeMessage(b, 4, x) + } + for _, x := range p.Function { + encodeMessage(b, 5, x) + } + encodeStrings(b, 6, p.stringTable) + encodeInt64Opt(b, 7, p.dropFramesX) + encodeInt64Opt(b, 8, p.keepFramesX) + encodeInt64Opt(b, 9, p.TimeNanos) + encodeInt64Opt(b, 10, p.DurationNanos) + if pt := p.PeriodType; pt != nil && (pt.typeX != 0 || pt.unitX != 0) { + encodeMessage(b, 11, p.PeriodType) + } + encodeInt64Opt(b, 12, p.Period) + encodeInt64s(b, 13, p.commentX) + encodeInt64(b, 14, p.defaultSampleTypeX) + encodeInt64Opt(b, 15, p.docURLX) +} + +var profileDecoder = []decoder{ + nil, // 0 + // repeated ValueType sample_type = 1 + func(b *buffer, m message) error { + x := new(ValueType) + pp := m.(*Profile) + pp.SampleType = append(pp.SampleType, x) + return decodeMessage(b, x) + }, + // repeated Sample sample = 2 + func(b *buffer, m message) error { + x := new(Sample) + pp := m.(*Profile) + pp.Sample = append(pp.Sample, x) + return decodeMessage(b, x) + }, + // repeated Mapping mapping = 3 + func(b *buffer, m message) error { + x := new(Mapping) + pp := m.(*Profile) + pp.Mapping = append(pp.Mapping, x) + return decodeMessage(b, x) + }, + // repeated Location location = 4 + func(b *buffer, m message) error { + x := new(Location) + x.Line = b.tmpLines[:0] // Use shared space temporarily + pp := m.(*Profile) + pp.Location = append(pp.Location, x) + err := decodeMessage(b, x) + b.tmpLines = x.Line[:0] + // Copy to shrink size and detach from shared space. + x.Line = append([]Line(nil), x.Line...) + return err + }, + // repeated Function function = 5 + func(b *buffer, m message) error { + x := new(Function) + pp := m.(*Profile) + pp.Function = append(pp.Function, x) + return decodeMessage(b, x) + }, + // repeated string string_table = 6 + func(b *buffer, m message) error { + err := decodeStrings(b, &m.(*Profile).stringTable) + if err != nil { + return err + } + if m.(*Profile).stringTable[0] != "" { + return errors.New("string_table[0] must be ''") + } + return nil + }, + // int64 drop_frames = 7 + func(b *buffer, m message) error { return decodeInt64(b, &m.(*Profile).dropFramesX) }, + // int64 keep_frames = 8 + func(b *buffer, m message) error { return decodeInt64(b, &m.(*Profile).keepFramesX) }, + // int64 time_nanos = 9 + func(b *buffer, m message) error { + if m.(*Profile).TimeNanos != 0 { + return errConcatProfile + } + return decodeInt64(b, &m.(*Profile).TimeNanos) + }, + // int64 duration_nanos = 10 + func(b *buffer, m message) error { return decodeInt64(b, &m.(*Profile).DurationNanos) }, + // ValueType period_type = 11 + func(b *buffer, m message) error { + x := new(ValueType) + pp := m.(*Profile) + pp.PeriodType = x + return decodeMessage(b, x) + }, + // int64 period = 12 + func(b *buffer, m message) error { return decodeInt64(b, &m.(*Profile).Period) }, + // repeated int64 comment = 13 + func(b *buffer, m message) error { return decodeInt64s(b, &m.(*Profile).commentX) }, + // int64 defaultSampleType = 14 + func(b *buffer, m message) error { return decodeInt64(b, &m.(*Profile).defaultSampleTypeX) }, + // string doc_link = 15; + func(b *buffer, m message) error { return decodeInt64(b, &m.(*Profile).docURLX) }, +} + +// postDecode takes the unexported fields populated by decode (with +// suffix X) and populates the corresponding exported fields. +// The unexported fields are cleared up to facilitate testing. +func (p *Profile) postDecode() error { + var err error + mappings := make(map[uint64]*Mapping, len(p.Mapping)) + mappingIds := make([]*Mapping, len(p.Mapping)+1) + for _, m := range p.Mapping { + m.File, err = getString(p.stringTable, &m.fileX, err) + m.BuildID, err = getString(p.stringTable, &m.buildIDX, err) + if m.ID < uint64(len(mappingIds)) { + mappingIds[m.ID] = m + } else { + mappings[m.ID] = m + } + + // If this a main linux kernel mapping with a relocation symbol suffix + // ("[kernel.kallsyms]_text"), extract said suffix. + // It is fairly hacky to handle at this level, but the alternatives appear even worse. + const prefix = "[kernel.kallsyms]" + if strings.HasPrefix(m.File, prefix) { + m.KernelRelocationSymbol = m.File[len(prefix):] + } + } + + functions := make(map[uint64]*Function, len(p.Function)) + functionIds := make([]*Function, len(p.Function)+1) + for _, f := range p.Function { + f.Name, err = getString(p.stringTable, &f.nameX, err) + f.SystemName, err = getString(p.stringTable, &f.systemNameX, err) + f.Filename, err = getString(p.stringTable, &f.filenameX, err) + if f.ID < uint64(len(functionIds)) { + functionIds[f.ID] = f + } else { + functions[f.ID] = f + } + } + + locations := make(map[uint64]*Location, len(p.Location)) + locationIds := make([]*Location, len(p.Location)+1) + for _, l := range p.Location { + if id := l.mappingIDX; id < uint64(len(mappingIds)) { + l.Mapping = mappingIds[id] + } else { + l.Mapping = mappings[id] + } + l.mappingIDX = 0 + for i, ln := range l.Line { + if id := ln.functionIDX; id != 0 { + l.Line[i].functionIDX = 0 + if id < uint64(len(functionIds)) { + l.Line[i].Function = functionIds[id] + } else { + l.Line[i].Function = functions[id] + } + } + } + if l.ID < uint64(len(locationIds)) { + locationIds[l.ID] = l + } else { + locations[l.ID] = l + } + } + + for _, st := range p.SampleType { + st.Type, err = getString(p.stringTable, &st.typeX, err) + st.Unit, err = getString(p.stringTable, &st.unitX, err) + } + + // Pre-allocate space for all locations. + numLocations := 0 + for _, s := range p.Sample { + numLocations += len(s.locationIDX) + } + locBuffer := make([]*Location, numLocations) + + for _, s := range p.Sample { + if len(s.labelX) > 0 { + labels := make(map[string][]string, len(s.labelX)) + numLabels := make(map[string][]int64, len(s.labelX)) + numUnits := make(map[string][]string, len(s.labelX)) + for _, l := range s.labelX { + var key, value string + key, err = getString(p.stringTable, &l.keyX, err) + if l.strX != 0 { + value, err = getString(p.stringTable, &l.strX, err) + labels[key] = append(labels[key], value) + } else if l.numX != 0 || l.unitX != 0 { + numValues := numLabels[key] + units := numUnits[key] + if l.unitX != 0 { + var unit string + unit, err = getString(p.stringTable, &l.unitX, err) + units = padStringArray(units, len(numValues)) + numUnits[key] = append(units, unit) + } + numLabels[key] = append(numLabels[key], l.numX) + } + } + if len(labels) > 0 { + s.Label = labels + } + if len(numLabels) > 0 { + s.NumLabel = numLabels + for key, units := range numUnits { + if len(units) > 0 { + numUnits[key] = padStringArray(units, len(numLabels[key])) + } + } + s.NumUnit = numUnits + } + } + + s.Location = locBuffer[:len(s.locationIDX)] + locBuffer = locBuffer[len(s.locationIDX):] + for i, lid := range s.locationIDX { + if lid < uint64(len(locationIds)) { + s.Location[i] = locationIds[lid] + } else { + s.Location[i] = locations[lid] + } + } + s.locationIDX = nil + } + + p.DropFrames, err = getString(p.stringTable, &p.dropFramesX, err) + p.KeepFrames, err = getString(p.stringTable, &p.keepFramesX, err) + + if pt := p.PeriodType; pt == nil { + p.PeriodType = &ValueType{} + } + + if pt := p.PeriodType; pt != nil { + pt.Type, err = getString(p.stringTable, &pt.typeX, err) + pt.Unit, err = getString(p.stringTable, &pt.unitX, err) + } + + for _, i := range p.commentX { + var c string + c, err = getString(p.stringTable, &i, err) + p.Comments = append(p.Comments, c) + } + + p.commentX = nil + p.DefaultSampleType, err = getString(p.stringTable, &p.defaultSampleTypeX, err) + p.DocURL, err = getString(p.stringTable, &p.docURLX, err) + p.stringTable = nil + return err +} + +// padStringArray pads arr with enough empty strings to make arr +// length l when arr's length is less than l. +func padStringArray(arr []string, l int) []string { + if l <= len(arr) { + return arr + } + return append(arr, make([]string, l-len(arr))...) +} + +func (p *ValueType) decoder() []decoder { + return valueTypeDecoder +} + +func (p *ValueType) encode(b *buffer) { + encodeInt64Opt(b, 1, p.typeX) + encodeInt64Opt(b, 2, p.unitX) +} + +var valueTypeDecoder = []decoder{ + nil, // 0 + // optional int64 type = 1 + func(b *buffer, m message) error { return decodeInt64(b, &m.(*ValueType).typeX) }, + // optional int64 unit = 2 + func(b *buffer, m message) error { return decodeInt64(b, &m.(*ValueType).unitX) }, +} + +func (p *Sample) decoder() []decoder { + return sampleDecoder +} + +func (p *Sample) encode(b *buffer) { + encodeUint64s(b, 1, p.locationIDX) + encodeInt64s(b, 2, p.Value) + for _, x := range p.labelX { + encodeMessage(b, 3, x) + } +} + +var sampleDecoder = []decoder{ + nil, // 0 + // repeated uint64 location = 1 + func(b *buffer, m message) error { return decodeUint64s(b, &m.(*Sample).locationIDX) }, + // repeated int64 value = 2 + func(b *buffer, m message) error { return decodeInt64s(b, &m.(*Sample).Value) }, + // repeated Label label = 3 + func(b *buffer, m message) error { + s := m.(*Sample) + n := len(s.labelX) + s.labelX = append(s.labelX, label{}) + return decodeMessage(b, &s.labelX[n]) + }, +} + +func (p label) decoder() []decoder { + return labelDecoder +} + +func (p label) encode(b *buffer) { + encodeInt64Opt(b, 1, p.keyX) + encodeInt64Opt(b, 2, p.strX) + encodeInt64Opt(b, 3, p.numX) + encodeInt64Opt(b, 4, p.unitX) +} + +var labelDecoder = []decoder{ + nil, // 0 + // optional int64 key = 1 + func(b *buffer, m message) error { return decodeInt64(b, &m.(*label).keyX) }, + // optional int64 str = 2 + func(b *buffer, m message) error { return decodeInt64(b, &m.(*label).strX) }, + // optional int64 num = 3 + func(b *buffer, m message) error { return decodeInt64(b, &m.(*label).numX) }, + // optional int64 num = 4 + func(b *buffer, m message) error { return decodeInt64(b, &m.(*label).unitX) }, +} + +func (p *Mapping) decoder() []decoder { + return mappingDecoder +} + +func (p *Mapping) encode(b *buffer) { + encodeUint64Opt(b, 1, p.ID) + encodeUint64Opt(b, 2, p.Start) + encodeUint64Opt(b, 3, p.Limit) + encodeUint64Opt(b, 4, p.Offset) + encodeInt64Opt(b, 5, p.fileX) + encodeInt64Opt(b, 6, p.buildIDX) + encodeBoolOpt(b, 7, p.HasFunctions) + encodeBoolOpt(b, 8, p.HasFilenames) + encodeBoolOpt(b, 9, p.HasLineNumbers) + encodeBoolOpt(b, 10, p.HasInlineFrames) +} + +var mappingDecoder = []decoder{ + nil, // 0 + func(b *buffer, m message) error { return decodeUint64(b, &m.(*Mapping).ID) }, // optional uint64 id = 1 + func(b *buffer, m message) error { return decodeUint64(b, &m.(*Mapping).Start) }, // optional uint64 memory_offset = 2 + func(b *buffer, m message) error { return decodeUint64(b, &m.(*Mapping).Limit) }, // optional uint64 memory_limit = 3 + func(b *buffer, m message) error { return decodeUint64(b, &m.(*Mapping).Offset) }, // optional uint64 file_offset = 4 + func(b *buffer, m message) error { return decodeInt64(b, &m.(*Mapping).fileX) }, // optional int64 filename = 5 + func(b *buffer, m message) error { return decodeInt64(b, &m.(*Mapping).buildIDX) }, // optional int64 build_id = 6 + func(b *buffer, m message) error { return decodeBool(b, &m.(*Mapping).HasFunctions) }, // optional bool has_functions = 7 + func(b *buffer, m message) error { return decodeBool(b, &m.(*Mapping).HasFilenames) }, // optional bool has_filenames = 8 + func(b *buffer, m message) error { return decodeBool(b, &m.(*Mapping).HasLineNumbers) }, // optional bool has_line_numbers = 9 + func(b *buffer, m message) error { return decodeBool(b, &m.(*Mapping).HasInlineFrames) }, // optional bool has_inline_frames = 10 +} + +func (p *Location) decoder() []decoder { + return locationDecoder +} + +func (p *Location) encode(b *buffer) { + encodeUint64Opt(b, 1, p.ID) + encodeUint64Opt(b, 2, p.mappingIDX) + encodeUint64Opt(b, 3, p.Address) + for i := range p.Line { + encodeMessage(b, 4, &p.Line[i]) + } + encodeBoolOpt(b, 5, p.IsFolded) +} + +var locationDecoder = []decoder{ + nil, // 0 + func(b *buffer, m message) error { return decodeUint64(b, &m.(*Location).ID) }, // optional uint64 id = 1; + func(b *buffer, m message) error { return decodeUint64(b, &m.(*Location).mappingIDX) }, // optional uint64 mapping_id = 2; + func(b *buffer, m message) error { return decodeUint64(b, &m.(*Location).Address) }, // optional uint64 address = 3; + func(b *buffer, m message) error { // repeated Line line = 4 + pp := m.(*Location) + n := len(pp.Line) + pp.Line = append(pp.Line, Line{}) + return decodeMessage(b, &pp.Line[n]) + }, + func(b *buffer, m message) error { return decodeBool(b, &m.(*Location).IsFolded) }, // optional bool is_folded = 5; +} + +func (p *Line) decoder() []decoder { + return lineDecoder +} + +func (p *Line) encode(b *buffer) { + encodeUint64Opt(b, 1, p.functionIDX) + encodeInt64Opt(b, 2, p.Line) + encodeInt64Opt(b, 3, p.Column) +} + +var lineDecoder = []decoder{ + nil, // 0 + // optional uint64 function_id = 1 + func(b *buffer, m message) error { return decodeUint64(b, &m.(*Line).functionIDX) }, + // optional int64 line = 2 + func(b *buffer, m message) error { return decodeInt64(b, &m.(*Line).Line) }, + // optional int64 column = 3 + func(b *buffer, m message) error { return decodeInt64(b, &m.(*Line).Column) }, +} + +func (p *Function) decoder() []decoder { + return functionDecoder +} + +func (p *Function) encode(b *buffer) { + encodeUint64Opt(b, 1, p.ID) + encodeInt64Opt(b, 2, p.nameX) + encodeInt64Opt(b, 3, p.systemNameX) + encodeInt64Opt(b, 4, p.filenameX) + encodeInt64Opt(b, 5, p.StartLine) +} + +var functionDecoder = []decoder{ + nil, // 0 + // optional uint64 id = 1 + func(b *buffer, m message) error { return decodeUint64(b, &m.(*Function).ID) }, + // optional int64 function_name = 2 + func(b *buffer, m message) error { return decodeInt64(b, &m.(*Function).nameX) }, + // optional int64 function_system_name = 3 + func(b *buffer, m message) error { return decodeInt64(b, &m.(*Function).systemNameX) }, + // repeated int64 filename = 4 + func(b *buffer, m message) error { return decodeInt64(b, &m.(*Function).filenameX) }, + // optional int64 start_line = 5 + func(b *buffer, m message) error { return decodeInt64(b, &m.(*Function).StartLine) }, +} + +func addString(strings map[string]int, s string) int64 { + i, ok := strings[s] + if !ok { + i = len(strings) + strings[s] = i + } + return int64(i) +} + +func getString(strings []string, strng *int64, err error) (string, error) { + if err != nil { + return "", err + } + s := int(*strng) + if s < 0 || s >= len(strings) { + return "", errMalformed + } + *strng = 0 + return strings[s], nil +} diff --git a/tests/vendor/github.com/google/pprof/profile/filter.go b/tests/vendor/github.com/google/pprof/profile/filter.go new file mode 100644 index 000000000..c794b9390 --- /dev/null +++ b/tests/vendor/github.com/google/pprof/profile/filter.go @@ -0,0 +1,274 @@ +// Copyright 2014 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package profile + +// Implements methods to filter samples from profiles. + +import "regexp" + +// FilterSamplesByName filters the samples in a profile and only keeps +// samples where at least one frame matches focus but none match ignore. +// Returns true is the corresponding regexp matched at least one sample. +func (p *Profile) FilterSamplesByName(focus, ignore, hide, show *regexp.Regexp) (fm, im, hm, hnm bool) { + if focus == nil && ignore == nil && hide == nil && show == nil { + fm = true // Missing focus implies a match + return + } + focusOrIgnore := make(map[uint64]bool) + hidden := make(map[uint64]bool) + for _, l := range p.Location { + if ignore != nil && l.matchesName(ignore) { + im = true + focusOrIgnore[l.ID] = false + } else if focus == nil || l.matchesName(focus) { + fm = true + focusOrIgnore[l.ID] = true + } + + if hide != nil && l.matchesName(hide) { + hm = true + l.Line = l.unmatchedLines(hide) + if len(l.Line) == 0 { + hidden[l.ID] = true + } + } + if show != nil { + l.Line = l.matchedLines(show) + if len(l.Line) == 0 { + hidden[l.ID] = true + } else { + hnm = true + } + } + } + + s := make([]*Sample, 0, len(p.Sample)) + for _, sample := range p.Sample { + if focusedAndNotIgnored(sample.Location, focusOrIgnore) { + if len(hidden) > 0 { + var locs []*Location + for _, loc := range sample.Location { + if !hidden[loc.ID] { + locs = append(locs, loc) + } + } + if len(locs) == 0 { + // Remove sample with no locations (by not adding it to s). + continue + } + sample.Location = locs + } + s = append(s, sample) + } + } + p.Sample = s + + return +} + +// ShowFrom drops all stack frames above the highest matching frame and returns +// whether a match was found. If showFrom is nil it returns false and does not +// modify the profile. +// +// Example: consider a sample with frames [A, B, C, B], where A is the root. +// ShowFrom(nil) returns false and has frames [A, B, C, B]. +// ShowFrom(A) returns true and has frames [A, B, C, B]. +// ShowFrom(B) returns true and has frames [B, C, B]. +// ShowFrom(C) returns true and has frames [C, B]. +// ShowFrom(D) returns false and drops the sample because no frames remain. +func (p *Profile) ShowFrom(showFrom *regexp.Regexp) (matched bool) { + if showFrom == nil { + return false + } + // showFromLocs stores location IDs that matched ShowFrom. + showFromLocs := make(map[uint64]bool) + // Apply to locations. + for _, loc := range p.Location { + if filterShowFromLocation(loc, showFrom) { + showFromLocs[loc.ID] = true + matched = true + } + } + // For all samples, strip locations after the highest matching one. + s := make([]*Sample, 0, len(p.Sample)) + for _, sample := range p.Sample { + for i := len(sample.Location) - 1; i >= 0; i-- { + if showFromLocs[sample.Location[i].ID] { + sample.Location = sample.Location[:i+1] + s = append(s, sample) + break + } + } + } + p.Sample = s + return matched +} + +// filterShowFromLocation tests a showFrom regex against a location, removes +// lines after the last match and returns whether a match was found. If the +// mapping is matched, then all lines are kept. +func filterShowFromLocation(loc *Location, showFrom *regexp.Regexp) bool { + if m := loc.Mapping; m != nil && showFrom.MatchString(m.File) { + return true + } + if i := loc.lastMatchedLineIndex(showFrom); i >= 0 { + loc.Line = loc.Line[:i+1] + return true + } + return false +} + +// lastMatchedLineIndex returns the index of the last line that matches a regex, +// or -1 if no match is found. +func (loc *Location) lastMatchedLineIndex(re *regexp.Regexp) int { + for i := len(loc.Line) - 1; i >= 0; i-- { + if fn := loc.Line[i].Function; fn != nil { + if re.MatchString(fn.Name) || re.MatchString(fn.Filename) { + return i + } + } + } + return -1 +} + +// FilterTagsByName filters the tags in a profile and only keeps +// tags that match show and not hide. +func (p *Profile) FilterTagsByName(show, hide *regexp.Regexp) (sm, hm bool) { + matchRemove := func(name string) bool { + matchShow := show == nil || show.MatchString(name) + matchHide := hide != nil && hide.MatchString(name) + + if matchShow { + sm = true + } + if matchHide { + hm = true + } + return !matchShow || matchHide + } + for _, s := range p.Sample { + for lab := range s.Label { + if matchRemove(lab) { + delete(s.Label, lab) + } + } + for lab := range s.NumLabel { + if matchRemove(lab) { + delete(s.NumLabel, lab) + } + } + } + return +} + +// matchesName returns whether the location matches the regular +// expression. It checks any available function names, file names, and +// mapping object filename. +func (loc *Location) matchesName(re *regexp.Regexp) bool { + for _, ln := range loc.Line { + if fn := ln.Function; fn != nil { + if re.MatchString(fn.Name) || re.MatchString(fn.Filename) { + return true + } + } + } + if m := loc.Mapping; m != nil && re.MatchString(m.File) { + return true + } + return false +} + +// unmatchedLines returns the lines in the location that do not match +// the regular expression. +func (loc *Location) unmatchedLines(re *regexp.Regexp) []Line { + if m := loc.Mapping; m != nil && re.MatchString(m.File) { + return nil + } + var lines []Line + for _, ln := range loc.Line { + if fn := ln.Function; fn != nil { + if re.MatchString(fn.Name) || re.MatchString(fn.Filename) { + continue + } + } + lines = append(lines, ln) + } + return lines +} + +// matchedLines returns the lines in the location that match +// the regular expression. +func (loc *Location) matchedLines(re *regexp.Regexp) []Line { + if m := loc.Mapping; m != nil && re.MatchString(m.File) { + return loc.Line + } + var lines []Line + for _, ln := range loc.Line { + if fn := ln.Function; fn != nil { + if !re.MatchString(fn.Name) && !re.MatchString(fn.Filename) { + continue + } + } + lines = append(lines, ln) + } + return lines +} + +// focusedAndNotIgnored looks up a slice of ids against a map of +// focused/ignored locations. The map only contains locations that are +// explicitly focused or ignored. Returns whether there is at least +// one focused location but no ignored locations. +func focusedAndNotIgnored(locs []*Location, m map[uint64]bool) bool { + var f bool + for _, loc := range locs { + if focus, focusOrIgnore := m[loc.ID]; focusOrIgnore { + if focus { + // Found focused location. Must keep searching in case there + // is an ignored one as well. + f = true + } else { + // Found ignored location. Can return false right away. + return false + } + } + } + return f +} + +// TagMatch selects tags for filtering +type TagMatch func(s *Sample) bool + +// FilterSamplesByTag removes all samples from the profile, except +// those that match focus and do not match the ignore regular +// expression. +func (p *Profile) FilterSamplesByTag(focus, ignore TagMatch) (fm, im bool) { + samples := make([]*Sample, 0, len(p.Sample)) + for _, s := range p.Sample { + focused, ignored := true, false + if focus != nil { + focused = focus(s) + } + if ignore != nil { + ignored = ignore(s) + } + fm = fm || focused + im = im || ignored + if focused && !ignored { + samples = append(samples, s) + } + } + p.Sample = samples + return +} diff --git a/tests/vendor/github.com/google/pprof/profile/index.go b/tests/vendor/github.com/google/pprof/profile/index.go new file mode 100644 index 000000000..bef1d6046 --- /dev/null +++ b/tests/vendor/github.com/google/pprof/profile/index.go @@ -0,0 +1,64 @@ +// Copyright 2016 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package profile + +import ( + "fmt" + "strconv" + "strings" +) + +// SampleIndexByName returns the appropriate index for a value of sample index. +// If numeric, it returns the number, otherwise it looks up the text in the +// profile sample types. +func (p *Profile) SampleIndexByName(sampleIndex string) (int, error) { + if sampleIndex == "" { + if dst := p.DefaultSampleType; dst != "" { + for i, t := range sampleTypes(p) { + if t == dst { + return i, nil + } + } + } + // By default select the last sample value + return len(p.SampleType) - 1, nil + } + if i, err := strconv.Atoi(sampleIndex); err == nil { + if i < 0 || i >= len(p.SampleType) { + return 0, fmt.Errorf("sample_index %s is outside the range [0..%d]", sampleIndex, len(p.SampleType)-1) + } + return i, nil + } + + // Remove the inuse_ prefix to support legacy pprof options + // "inuse_space" and "inuse_objects" for profiles containing types + // "space" and "objects". + noInuse := strings.TrimPrefix(sampleIndex, "inuse_") + for i, t := range p.SampleType { + if t.Type == sampleIndex || t.Type == noInuse { + return i, nil + } + } + + return 0, fmt.Errorf("sample_index %q must be one of: %v", sampleIndex, sampleTypes(p)) +} + +func sampleTypes(p *Profile) []string { + types := make([]string, len(p.SampleType)) + for i, t := range p.SampleType { + types[i] = t.Type + } + return types +} diff --git a/tests/vendor/github.com/google/pprof/profile/legacy_java_profile.go b/tests/vendor/github.com/google/pprof/profile/legacy_java_profile.go new file mode 100644 index 000000000..4580bab18 --- /dev/null +++ b/tests/vendor/github.com/google/pprof/profile/legacy_java_profile.go @@ -0,0 +1,315 @@ +// Copyright 2014 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This file implements parsers to convert java legacy profiles into +// the profile.proto format. + +package profile + +import ( + "bytes" + "fmt" + "io" + "path/filepath" + "regexp" + "strconv" + "strings" +) + +var ( + attributeRx = regexp.MustCompile(`([\w ]+)=([\w ]+)`) + javaSampleRx = regexp.MustCompile(` *(\d+) +(\d+) +@ +([ x0-9a-f]*)`) + javaLocationRx = regexp.MustCompile(`^\s*0x([[:xdigit:]]+)\s+(.*)\s*$`) + javaLocationFileLineRx = regexp.MustCompile(`^(.*)\s+\((.+):(-?[[:digit:]]+)\)$`) + javaLocationPathRx = regexp.MustCompile(`^(.*)\s+\((.*)\)$`) +) + +// javaCPUProfile returns a new Profile from profilez data. +// b is the profile bytes after the header, period is the profiling +// period, and parse is a function to parse 8-byte chunks from the +// profile in its native endianness. +func javaCPUProfile(b []byte, period int64, parse func(b []byte) (uint64, []byte)) (*Profile, error) { + p := &Profile{ + Period: period * 1000, + PeriodType: &ValueType{Type: "cpu", Unit: "nanoseconds"}, + SampleType: []*ValueType{{Type: "samples", Unit: "count"}, {Type: "cpu", Unit: "nanoseconds"}}, + } + var err error + var locs map[uint64]*Location + if b, locs, err = parseCPUSamples(b, parse, false, p); err != nil { + return nil, err + } + + if err = parseJavaLocations(b, locs, p); err != nil { + return nil, err + } + + // Strip out addresses for better merge. + if err = p.Aggregate(true, true, true, true, false, false); err != nil { + return nil, err + } + + return p, nil +} + +// parseJavaProfile returns a new profile from heapz or contentionz +// data. b is the profile bytes after the header. +func parseJavaProfile(b []byte) (*Profile, error) { + h := bytes.SplitAfterN(b, []byte("\n"), 2) + if len(h) < 2 { + return nil, errUnrecognized + } + + p := &Profile{ + PeriodType: &ValueType{}, + } + header := string(bytes.TrimSpace(h[0])) + + var err error + var pType string + switch header { + case "--- heapz 1 ---": + pType = "heap" + case "--- contentionz 1 ---": + pType = "contention" + default: + return nil, errUnrecognized + } + + if b, err = parseJavaHeader(pType, h[1], p); err != nil { + return nil, err + } + var locs map[uint64]*Location + if b, locs, err = parseJavaSamples(pType, b, p); err != nil { + return nil, err + } + if err = parseJavaLocations(b, locs, p); err != nil { + return nil, err + } + + // Strip out addresses for better merge. + if err = p.Aggregate(true, true, true, true, false, false); err != nil { + return nil, err + } + + return p, nil +} + +// parseJavaHeader parses the attribute section on a java profile and +// populates a profile. Returns the remainder of the buffer after all +// attributes. +func parseJavaHeader(pType string, b []byte, p *Profile) ([]byte, error) { + nextNewLine := bytes.IndexByte(b, byte('\n')) + for nextNewLine != -1 { + line := string(bytes.TrimSpace(b[0:nextNewLine])) + if line != "" { + h := attributeRx.FindStringSubmatch(line) + if h == nil { + // Not a valid attribute, exit. + return b, nil + } + + attribute, value := strings.TrimSpace(h[1]), strings.TrimSpace(h[2]) + var err error + switch pType + "/" + attribute { + case "heap/format", "cpu/format", "contention/format": + if value != "java" { + return nil, errUnrecognized + } + case "heap/resolution": + p.SampleType = []*ValueType{ + {Type: "inuse_objects", Unit: "count"}, + {Type: "inuse_space", Unit: value}, + } + case "contention/resolution": + p.SampleType = []*ValueType{ + {Type: "contentions", Unit: "count"}, + {Type: "delay", Unit: value}, + } + case "contention/sampling period": + p.PeriodType = &ValueType{ + Type: "contentions", Unit: "count", + } + if p.Period, err = strconv.ParseInt(value, 0, 64); err != nil { + return nil, fmt.Errorf("failed to parse attribute %s: %v", line, err) + } + case "contention/ms since reset": + millis, err := strconv.ParseInt(value, 0, 64) + if err != nil { + return nil, fmt.Errorf("failed to parse attribute %s: %v", line, err) + } + p.DurationNanos = millis * 1000 * 1000 + default: + return nil, errUnrecognized + } + } + // Grab next line. + b = b[nextNewLine+1:] + nextNewLine = bytes.IndexByte(b, byte('\n')) + } + return b, nil +} + +// parseJavaSamples parses the samples from a java profile and +// populates the Samples in a profile. Returns the remainder of the +// buffer after the samples. +func parseJavaSamples(pType string, b []byte, p *Profile) ([]byte, map[uint64]*Location, error) { + nextNewLine := bytes.IndexByte(b, byte('\n')) + locs := make(map[uint64]*Location) + for nextNewLine != -1 { + line := string(bytes.TrimSpace(b[0:nextNewLine])) + if line != "" { + sample := javaSampleRx.FindStringSubmatch(line) + if sample == nil { + // Not a valid sample, exit. + return b, locs, nil + } + + // Java profiles have data/fields inverted compared to other + // profile types. + var err error + value1, value2, value3 := sample[2], sample[1], sample[3] + addrs, err := parseHexAddresses(value3) + if err != nil { + return nil, nil, fmt.Errorf("malformed sample: %s: %v", line, err) + } + + var sloc []*Location + for _, addr := range addrs { + loc := locs[addr] + if locs[addr] == nil { + loc = &Location{ + Address: addr, + } + p.Location = append(p.Location, loc) + locs[addr] = loc + } + sloc = append(sloc, loc) + } + s := &Sample{ + Value: make([]int64, 2), + Location: sloc, + } + + if s.Value[0], err = strconv.ParseInt(value1, 0, 64); err != nil { + return nil, nil, fmt.Errorf("parsing sample %s: %v", line, err) + } + if s.Value[1], err = strconv.ParseInt(value2, 0, 64); err != nil { + return nil, nil, fmt.Errorf("parsing sample %s: %v", line, err) + } + + switch pType { + case "heap": + const javaHeapzSamplingRate = 524288 // 512K + if s.Value[0] == 0 { + return nil, nil, fmt.Errorf("parsing sample %s: second value must be non-zero", line) + } + s.NumLabel = map[string][]int64{"bytes": {s.Value[1] / s.Value[0]}} + s.Value[0], s.Value[1] = scaleHeapSample(s.Value[0], s.Value[1], javaHeapzSamplingRate) + case "contention": + if period := p.Period; period != 0 { + s.Value[0] = s.Value[0] * p.Period + s.Value[1] = s.Value[1] * p.Period + } + } + p.Sample = append(p.Sample, s) + } + // Grab next line. + b = b[nextNewLine+1:] + nextNewLine = bytes.IndexByte(b, byte('\n')) + } + return b, locs, nil +} + +// parseJavaLocations parses the location information in a java +// profile and populates the Locations in a profile. It uses the +// location addresses from the profile as both the ID of each +// location. +func parseJavaLocations(b []byte, locs map[uint64]*Location, p *Profile) error { + r := bytes.NewBuffer(b) + fns := make(map[string]*Function) + for { + line, err := r.ReadString('\n') + if err != nil { + if err != io.EOF { + return err + } + if line == "" { + break + } + } + + if line = strings.TrimSpace(line); line == "" { + continue + } + + jloc := javaLocationRx.FindStringSubmatch(line) + if len(jloc) != 3 { + continue + } + addr, err := strconv.ParseUint(jloc[1], 16, 64) + if err != nil { + return fmt.Errorf("parsing sample %s: %v", line, err) + } + loc := locs[addr] + if loc == nil { + // Unused/unseen + continue + } + var lineFunc, lineFile string + var lineNo int64 + + if fileLine := javaLocationFileLineRx.FindStringSubmatch(jloc[2]); len(fileLine) == 4 { + // Found a line of the form: "function (file:line)" + lineFunc, lineFile = fileLine[1], fileLine[2] + if n, err := strconv.ParseInt(fileLine[3], 10, 64); err == nil && n > 0 { + lineNo = n + } + } else if filePath := javaLocationPathRx.FindStringSubmatch(jloc[2]); len(filePath) == 3 { + // If there's not a file:line, it's a shared library path. + // The path isn't interesting, so just give the .so. + lineFunc, lineFile = filePath[1], filepath.Base(filePath[2]) + } else if strings.Contains(jloc[2], "generated stub/JIT") { + lineFunc = "STUB" + } else { + // Treat whole line as the function name. This is used by the + // java agent for internal states such as "GC" or "VM". + lineFunc = jloc[2] + } + fn := fns[lineFunc] + + if fn == nil { + fn = &Function{ + Name: lineFunc, + SystemName: lineFunc, + Filename: lineFile, + } + fns[lineFunc] = fn + p.Function = append(p.Function, fn) + } + loc.Line = []Line{ + { + Function: fn, + Line: lineNo, + }, + } + loc.Address = 0 + } + + p.remapLocationIDs() + p.remapFunctionIDs() + p.remapMappingIDs() + + return nil +} diff --git a/tests/vendor/github.com/google/pprof/profile/legacy_profile.go b/tests/vendor/github.com/google/pprof/profile/legacy_profile.go new file mode 100644 index 000000000..8d07fd6c2 --- /dev/null +++ b/tests/vendor/github.com/google/pprof/profile/legacy_profile.go @@ -0,0 +1,1228 @@ +// Copyright 2014 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This file implements parsers to convert legacy profiles into the +// profile.proto format. + +package profile + +import ( + "bufio" + "bytes" + "fmt" + "io" + "math" + "regexp" + "strconv" + "strings" +) + +var ( + countStartRE = regexp.MustCompile(`\A(\S+) profile: total \d+\z`) + countRE = regexp.MustCompile(`\A(\d+) @(( 0x[0-9a-f]+)+)\z`) + + heapHeaderRE = regexp.MustCompile(`heap profile: *(\d+): *(\d+) *\[ *(\d+): *(\d+) *\] *@ *(heap[_a-z0-9]*)/?(\d*)`) + heapSampleRE = regexp.MustCompile(`(-?\d+): *(-?\d+) *\[ *(\d+): *(\d+) *] @([ x0-9a-f]*)`) + + contentionSampleRE = regexp.MustCompile(`(\d+) *(\d+) @([ x0-9a-f]*)`) + + hexNumberRE = regexp.MustCompile(`0x[0-9a-f]+`) + + growthHeaderRE = regexp.MustCompile(`heap profile: *(\d+): *(\d+) *\[ *(\d+): *(\d+) *\] @ growthz?`) + + fragmentationHeaderRE = regexp.MustCompile(`heap profile: *(\d+): *(\d+) *\[ *(\d+): *(\d+) *\] @ fragmentationz?`) + + threadzStartRE = regexp.MustCompile(`--- threadz \d+ ---`) + threadStartRE = regexp.MustCompile(`--- Thread ([[:xdigit:]]+) \(name: (.*)/(\d+)\) stack: ---`) + + // Regular expressions to parse process mappings. Support the format used by Linux /proc/.../maps and other tools. + // Recommended format: + // Start End object file name offset(optional) linker build id + // 0x40000-0x80000 /path/to/binary (@FF00) abc123456 + spaceDigits = `\s+[[:digit:]]+` + hexPair = `\s+[[:xdigit:]]+:[[:xdigit:]]+` + oSpace = `\s*` + // Capturing expressions. + cHex = `(?:0x)?([[:xdigit:]]+)` + cHexRange = `\s*` + cHex + `[\s-]?` + oSpace + cHex + `:?` + cSpaceString = `(?:\s+(\S+))?` + cSpaceHex = `(?:\s+([[:xdigit:]]+))?` + cSpaceAtOffset = `(?:\s+\(@([[:xdigit:]]+)\))?` + cPerm = `(?:\s+([-rwxp]+))?` + + procMapsRE = regexp.MustCompile(`^` + cHexRange + cPerm + cSpaceHex + hexPair + spaceDigits + cSpaceString) + briefMapsRE = regexp.MustCompile(`^` + cHexRange + cPerm + cSpaceString + cSpaceAtOffset + cSpaceHex) + + // Regular expression to parse log data, of the form: + // ... file:line] msg... + logInfoRE = regexp.MustCompile(`^[^\[\]]+:[0-9]+]\s`) +) + +func isSpaceOrComment(line string) bool { + trimmed := strings.TrimSpace(line) + return len(trimmed) == 0 || trimmed[0] == '#' +} + +// parseGoCount parses a Go count profile (e.g., threadcreate or +// goroutine) and returns a new Profile. +func parseGoCount(b []byte) (*Profile, error) { + s := bufio.NewScanner(bytes.NewBuffer(b)) + // Skip comments at the beginning of the file. + for s.Scan() && isSpaceOrComment(s.Text()) { + } + if err := s.Err(); err != nil { + return nil, err + } + m := countStartRE.FindStringSubmatch(s.Text()) + if m == nil { + return nil, errUnrecognized + } + profileType := m[1] + p := &Profile{ + PeriodType: &ValueType{Type: profileType, Unit: "count"}, + Period: 1, + SampleType: []*ValueType{{Type: profileType, Unit: "count"}}, + } + locations := make(map[uint64]*Location) + for s.Scan() { + line := s.Text() + if isSpaceOrComment(line) { + continue + } + if strings.HasPrefix(line, "---") { + break + } + m := countRE.FindStringSubmatch(line) + if m == nil { + return nil, errMalformed + } + n, err := strconv.ParseInt(m[1], 0, 64) + if err != nil { + return nil, errMalformed + } + fields := strings.Fields(m[2]) + locs := make([]*Location, 0, len(fields)) + for _, stk := range fields { + addr, err := strconv.ParseUint(stk, 0, 64) + if err != nil { + return nil, errMalformed + } + // Adjust all frames by -1 to land on top of the call instruction. + addr-- + loc := locations[addr] + if loc == nil { + loc = &Location{ + Address: addr, + } + locations[addr] = loc + p.Location = append(p.Location, loc) + } + locs = append(locs, loc) + } + p.Sample = append(p.Sample, &Sample{ + Location: locs, + Value: []int64{n}, + }) + } + if err := s.Err(); err != nil { + return nil, err + } + + if err := parseAdditionalSections(s, p); err != nil { + return nil, err + } + return p, nil +} + +// remapLocationIDs ensures there is a location for each address +// referenced by a sample, and remaps the samples to point to the new +// location ids. +func (p *Profile) remapLocationIDs() { + seen := make(map[*Location]bool, len(p.Location)) + var locs []*Location + + for _, s := range p.Sample { + for _, l := range s.Location { + if seen[l] { + continue + } + l.ID = uint64(len(locs) + 1) + locs = append(locs, l) + seen[l] = true + } + } + p.Location = locs +} + +func (p *Profile) remapFunctionIDs() { + seen := make(map[*Function]bool, len(p.Function)) + var fns []*Function + + for _, l := range p.Location { + for _, ln := range l.Line { + fn := ln.Function + if fn == nil || seen[fn] { + continue + } + fn.ID = uint64(len(fns) + 1) + fns = append(fns, fn) + seen[fn] = true + } + } + p.Function = fns +} + +// remapMappingIDs matches location addresses with existing mappings +// and updates them appropriately. This is O(N*M), if this ever shows +// up as a bottleneck, evaluate sorting the mappings and doing a +// binary search, which would make it O(N*log(M)). +func (p *Profile) remapMappingIDs() { + // Some profile handlers will incorrectly set regions for the main + // executable if its section is remapped. Fix them through heuristics. + + if len(p.Mapping) > 0 { + // Remove the initial mapping if named '/anon_hugepage' and has a + // consecutive adjacent mapping. + if m := p.Mapping[0]; strings.HasPrefix(m.File, "/anon_hugepage") { + if len(p.Mapping) > 1 && m.Limit == p.Mapping[1].Start { + p.Mapping = p.Mapping[1:] + } + } + } + + // Subtract the offset from the start of the main mapping if it + // ends up at a recognizable start address. + if len(p.Mapping) > 0 { + const expectedStart = 0x400000 + if m := p.Mapping[0]; m.Start-m.Offset == expectedStart { + m.Start = expectedStart + m.Offset = 0 + } + } + + // Associate each location with an address to the corresponding + // mapping. Create fake mapping if a suitable one isn't found. + var fake *Mapping +nextLocation: + for _, l := range p.Location { + a := l.Address + if l.Mapping != nil || a == 0 { + continue + } + for _, m := range p.Mapping { + if m.Start <= a && a < m.Limit { + l.Mapping = m + continue nextLocation + } + } + // Work around legacy handlers failing to encode the first + // part of mappings split into adjacent ranges. + for _, m := range p.Mapping { + if m.Offset != 0 && m.Start-m.Offset <= a && a < m.Start { + m.Start -= m.Offset + m.Offset = 0 + l.Mapping = m + continue nextLocation + } + } + // If there is still no mapping, create a fake one. + // This is important for the Go legacy handler, which produced + // no mappings. + if fake == nil { + fake = &Mapping{ + ID: 1, + Limit: ^uint64(0), + } + p.Mapping = append(p.Mapping, fake) + } + l.Mapping = fake + } + + // Reset all mapping IDs. + for i, m := range p.Mapping { + m.ID = uint64(i + 1) + } +} + +var cpuInts = []func([]byte) (uint64, []byte){ + get32l, + get32b, + get64l, + get64b, +} + +func get32l(b []byte) (uint64, []byte) { + if len(b) < 4 { + return 0, nil + } + return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24, b[4:] +} + +func get32b(b []byte) (uint64, []byte) { + if len(b) < 4 { + return 0, nil + } + return uint64(b[3]) | uint64(b[2])<<8 | uint64(b[1])<<16 | uint64(b[0])<<24, b[4:] +} + +func get64l(b []byte) (uint64, []byte) { + if len(b) < 8 { + return 0, nil + } + return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56, b[8:] +} + +func get64b(b []byte) (uint64, []byte) { + if len(b) < 8 { + return 0, nil + } + return uint64(b[7]) | uint64(b[6])<<8 | uint64(b[5])<<16 | uint64(b[4])<<24 | uint64(b[3])<<32 | uint64(b[2])<<40 | uint64(b[1])<<48 | uint64(b[0])<<56, b[8:] +} + +// parseCPU parses a profilez legacy profile and returns a newly +// populated Profile. +// +// The general format for profilez samples is a sequence of words in +// binary format. The first words are a header with the following data: +// +// 1st word -- 0 +// 2nd word -- 3 +// 3rd word -- 0 if a c++ application, 1 if a java application. +// 4th word -- Sampling period (in microseconds). +// 5th word -- Padding. +func parseCPU(b []byte) (*Profile, error) { + var parse func([]byte) (uint64, []byte) + var n1, n2, n3, n4, n5 uint64 + for _, parse = range cpuInts { + var tmp []byte + n1, tmp = parse(b) + n2, tmp = parse(tmp) + n3, tmp = parse(tmp) + n4, tmp = parse(tmp) + n5, tmp = parse(tmp) + + if tmp != nil && n1 == 0 && n2 == 3 && n3 == 0 && n4 > 0 && n5 == 0 { + b = tmp + return cpuProfile(b, int64(n4), parse) + } + if tmp != nil && n1 == 0 && n2 == 3 && n3 == 1 && n4 > 0 && n5 == 0 { + b = tmp + return javaCPUProfile(b, int64(n4), parse) + } + } + return nil, errUnrecognized +} + +// cpuProfile returns a new Profile from C++ profilez data. +// b is the profile bytes after the header, period is the profiling +// period, and parse is a function to parse 8-byte chunks from the +// profile in its native endianness. +func cpuProfile(b []byte, period int64, parse func(b []byte) (uint64, []byte)) (*Profile, error) { + p := &Profile{ + Period: period * 1000, + PeriodType: &ValueType{Type: "cpu", Unit: "nanoseconds"}, + SampleType: []*ValueType{ + {Type: "samples", Unit: "count"}, + {Type: "cpu", Unit: "nanoseconds"}, + }, + } + var err error + if b, _, err = parseCPUSamples(b, parse, true, p); err != nil { + return nil, err + } + + // If *most* samples have the same second-to-the-bottom frame, it + // strongly suggests that it is an uninteresting artifact of + // measurement -- a stack frame pushed by the signal handler. The + // bottom frame is always correct as it is picked up from the signal + // structure, not the stack. Check if this is the case and if so, + // remove. + + // Remove up to two frames. + maxiter := 2 + // Allow one different sample for this many samples with the same + // second-to-last frame. + similarSamples := 32 + margin := len(p.Sample) / similarSamples + + for iter := 0; iter < maxiter; iter++ { + addr1 := make(map[uint64]int) + for _, s := range p.Sample { + if len(s.Location) > 1 { + a := s.Location[1].Address + addr1[a] = addr1[a] + 1 + } + } + + for id1, count := range addr1 { + if count >= len(p.Sample)-margin { + // Found uninteresting frame, strip it out from all samples + for _, s := range p.Sample { + if len(s.Location) > 1 && s.Location[1].Address == id1 { + s.Location = append(s.Location[:1], s.Location[2:]...) + } + } + break + } + } + } + + if err := p.ParseMemoryMap(bytes.NewBuffer(b)); err != nil { + return nil, err + } + + cleanupDuplicateLocations(p) + return p, nil +} + +func cleanupDuplicateLocations(p *Profile) { + // The profile handler may duplicate the leaf frame, because it gets + // its address both from stack unwinding and from the signal + // context. Detect this and delete the duplicate, which has been + // adjusted by -1. The leaf address should not be adjusted as it is + // not a call. + for _, s := range p.Sample { + if len(s.Location) > 1 && s.Location[0].Address == s.Location[1].Address+1 { + s.Location = append(s.Location[:1], s.Location[2:]...) + } + } +} + +// parseCPUSamples parses a collection of profilez samples from a +// profile. +// +// profilez samples are a repeated sequence of stack frames of the +// form: +// +// 1st word -- The number of times this stack was encountered. +// 2nd word -- The size of the stack (StackSize). +// 3rd word -- The first address on the stack. +// ... +// StackSize + 2 -- The last address on the stack +// +// The last stack trace is of the form: +// +// 1st word -- 0 +// 2nd word -- 1 +// 3rd word -- 0 +// +// Addresses from stack traces may point to the next instruction after +// each call. Optionally adjust by -1 to land somewhere on the actual +// call (except for the leaf, which is not a call). +func parseCPUSamples(b []byte, parse func(b []byte) (uint64, []byte), adjust bool, p *Profile) ([]byte, map[uint64]*Location, error) { + locs := make(map[uint64]*Location) + for len(b) > 0 { + var count, nstk uint64 + count, b = parse(b) + nstk, b = parse(b) + if b == nil || nstk > uint64(len(b)/4) { + return nil, nil, errUnrecognized + } + var sloc []*Location + addrs := make([]uint64, nstk) + for i := 0; i < int(nstk); i++ { + addrs[i], b = parse(b) + } + + if count == 0 && nstk == 1 && addrs[0] == 0 { + // End of data marker + break + } + for i, addr := range addrs { + if adjust && i > 0 { + addr-- + } + loc := locs[addr] + if loc == nil { + loc = &Location{ + Address: addr, + } + locs[addr] = loc + p.Location = append(p.Location, loc) + } + sloc = append(sloc, loc) + } + p.Sample = append(p.Sample, + &Sample{ + Value: []int64{int64(count), int64(count) * p.Period}, + Location: sloc, + }) + } + // Reached the end without finding the EOD marker. + return b, locs, nil +} + +// parseHeap parses a heapz legacy or a growthz profile and +// returns a newly populated Profile. +func parseHeap(b []byte) (p *Profile, err error) { + s := bufio.NewScanner(bytes.NewBuffer(b)) + if !s.Scan() { + if err := s.Err(); err != nil { + return nil, err + } + return nil, errUnrecognized + } + p = &Profile{} + + sampling := "" + hasAlloc := false + + line := s.Text() + p.PeriodType = &ValueType{Type: "space", Unit: "bytes"} + if header := heapHeaderRE.FindStringSubmatch(line); header != nil { + sampling, p.Period, hasAlloc, err = parseHeapHeader(line) + if err != nil { + return nil, err + } + } else if header = growthHeaderRE.FindStringSubmatch(line); header != nil { + p.Period = 1 + } else if header = fragmentationHeaderRE.FindStringSubmatch(line); header != nil { + p.Period = 1 + } else { + return nil, errUnrecognized + } + + if hasAlloc { + // Put alloc before inuse so that default pprof selection + // will prefer inuse_space. + p.SampleType = []*ValueType{ + {Type: "alloc_objects", Unit: "count"}, + {Type: "alloc_space", Unit: "bytes"}, + {Type: "inuse_objects", Unit: "count"}, + {Type: "inuse_space", Unit: "bytes"}, + } + } else { + p.SampleType = []*ValueType{ + {Type: "objects", Unit: "count"}, + {Type: "space", Unit: "bytes"}, + } + } + + locs := make(map[uint64]*Location) + for s.Scan() { + line := strings.TrimSpace(s.Text()) + + if isSpaceOrComment(line) { + continue + } + + if isMemoryMapSentinel(line) { + break + } + + value, blocksize, addrs, err := parseHeapSample(line, p.Period, sampling, hasAlloc) + if err != nil { + return nil, err + } + + var sloc []*Location + for _, addr := range addrs { + // Addresses from stack traces point to the next instruction after + // each call. Adjust by -1 to land somewhere on the actual call. + addr-- + loc := locs[addr] + if locs[addr] == nil { + loc = &Location{ + Address: addr, + } + p.Location = append(p.Location, loc) + locs[addr] = loc + } + sloc = append(sloc, loc) + } + + p.Sample = append(p.Sample, &Sample{ + Value: value, + Location: sloc, + NumLabel: map[string][]int64{"bytes": {blocksize}}, + }) + } + if err := s.Err(); err != nil { + return nil, err + } + if err := parseAdditionalSections(s, p); err != nil { + return nil, err + } + return p, nil +} + +func parseHeapHeader(line string) (sampling string, period int64, hasAlloc bool, err error) { + header := heapHeaderRE.FindStringSubmatch(line) + if header == nil { + return "", 0, false, errUnrecognized + } + + if len(header[6]) > 0 { + if period, err = strconv.ParseInt(header[6], 10, 64); err != nil { + return "", 0, false, errUnrecognized + } + } + + if (header[3] != header[1] && header[3] != "0") || (header[4] != header[2] && header[4] != "0") { + hasAlloc = true + } + + switch header[5] { + case "heapz_v2", "heap_v2": + return "v2", period, hasAlloc, nil + case "heapprofile": + return "", 1, hasAlloc, nil + case "heap": + return "v2", period / 2, hasAlloc, nil + default: + return "", 0, false, errUnrecognized + } +} + +// parseHeapSample parses a single row from a heap profile into a new Sample. +func parseHeapSample(line string, rate int64, sampling string, includeAlloc bool) (value []int64, blocksize int64, addrs []uint64, err error) { + sampleData := heapSampleRE.FindStringSubmatch(line) + if len(sampleData) != 6 { + return nil, 0, nil, fmt.Errorf("unexpected number of sample values: got %d, want 6", len(sampleData)) + } + + // This is a local-scoped helper function to avoid needing to pass + // around rate, sampling and many return parameters. + addValues := func(countString, sizeString string, label string) error { + count, err := strconv.ParseInt(countString, 10, 64) + if err != nil { + return fmt.Errorf("malformed sample: %s: %v", line, err) + } + size, err := strconv.ParseInt(sizeString, 10, 64) + if err != nil { + return fmt.Errorf("malformed sample: %s: %v", line, err) + } + if count == 0 && size != 0 { + return fmt.Errorf("%s count was 0 but %s bytes was %d", label, label, size) + } + if count != 0 { + blocksize = size / count + if sampling == "v2" { + count, size = scaleHeapSample(count, size, rate) + } + } + value = append(value, count, size) + return nil + } + + if includeAlloc { + if err := addValues(sampleData[3], sampleData[4], "allocation"); err != nil { + return nil, 0, nil, err + } + } + + if err := addValues(sampleData[1], sampleData[2], "inuse"); err != nil { + return nil, 0, nil, err + } + + addrs, err = parseHexAddresses(sampleData[5]) + if err != nil { + return nil, 0, nil, fmt.Errorf("malformed sample: %s: %v", line, err) + } + + return value, blocksize, addrs, nil +} + +// parseHexAddresses extracts hex numbers from a string, attempts to convert +// each to an unsigned 64-bit number and returns the resulting numbers as a +// slice, or an error if the string contains hex numbers which are too large to +// handle (which means a malformed profile). +func parseHexAddresses(s string) ([]uint64, error) { + hexStrings := hexNumberRE.FindAllString(s, -1) + var addrs []uint64 + for _, s := range hexStrings { + if addr, err := strconv.ParseUint(s, 0, 64); err == nil { + addrs = append(addrs, addr) + } else { + return nil, fmt.Errorf("failed to parse as hex 64-bit number: %s", s) + } + } + return addrs, nil +} + +// scaleHeapSample adjusts the data from a heapz Sample to +// account for its probability of appearing in the collected +// data. heapz profiles are a sampling of the memory allocations +// requests in a program. We estimate the unsampled value by dividing +// each collected sample by its probability of appearing in the +// profile. heapz v2 profiles rely on a poisson process to determine +// which samples to collect, based on the desired average collection +// rate R. The probability of a sample of size S to appear in that +// profile is 1-exp(-S/R). +func scaleHeapSample(count, size, rate int64) (int64, int64) { + if count == 0 || size == 0 { + return 0, 0 + } + + if rate <= 1 { + // if rate==1 all samples were collected so no adjustment is needed. + // if rate<1 treat as unknown and skip scaling. + return count, size + } + + avgSize := float64(size) / float64(count) + scale := 1 / (1 - math.Exp(-avgSize/float64(rate))) + + return int64(float64(count) * scale), int64(float64(size) * scale) +} + +// parseContention parses a mutex or contention profile. There are 2 cases: +// "--- contentionz " for legacy C++ profiles (and backwards compatibility) +// "--- mutex:" or "--- contention:" for profiles generated by the Go runtime. +func parseContention(b []byte) (*Profile, error) { + s := bufio.NewScanner(bytes.NewBuffer(b)) + if !s.Scan() { + if err := s.Err(); err != nil { + return nil, err + } + return nil, errUnrecognized + } + + switch l := s.Text(); { + case strings.HasPrefix(l, "--- contentionz "): + case strings.HasPrefix(l, "--- mutex:"): + case strings.HasPrefix(l, "--- contention:"): + default: + return nil, errUnrecognized + } + + p := &Profile{ + PeriodType: &ValueType{Type: "contentions", Unit: "count"}, + Period: 1, + SampleType: []*ValueType{ + {Type: "contentions", Unit: "count"}, + {Type: "delay", Unit: "nanoseconds"}, + }, + } + + var cpuHz int64 + // Parse text of the form "attribute = value" before the samples. + const delimiter = "=" + for s.Scan() { + line := s.Text() + if line = strings.TrimSpace(line); isSpaceOrComment(line) { + continue + } + if strings.HasPrefix(line, "---") { + break + } + attr := strings.SplitN(line, delimiter, 2) + if len(attr) != 2 { + break + } + key, val := strings.TrimSpace(attr[0]), strings.TrimSpace(attr[1]) + var err error + switch key { + case "cycles/second": + if cpuHz, err = strconv.ParseInt(val, 0, 64); err != nil { + return nil, errUnrecognized + } + case "sampling period": + if p.Period, err = strconv.ParseInt(val, 0, 64); err != nil { + return nil, errUnrecognized + } + case "ms since reset": + ms, err := strconv.ParseInt(val, 0, 64) + if err != nil { + return nil, errUnrecognized + } + p.DurationNanos = ms * 1000 * 1000 + case "format": + // CPP contentionz profiles don't have format. + return nil, errUnrecognized + case "resolution": + // CPP contentionz profiles don't have resolution. + return nil, errUnrecognized + case "discarded samples": + default: + return nil, errUnrecognized + } + } + if err := s.Err(); err != nil { + return nil, err + } + + locs := make(map[uint64]*Location) + for { + line := strings.TrimSpace(s.Text()) + if strings.HasPrefix(line, "---") { + break + } + if !isSpaceOrComment(line) { + value, addrs, err := parseContentionSample(line, p.Period, cpuHz) + if err != nil { + return nil, err + } + var sloc []*Location + for _, addr := range addrs { + // Addresses from stack traces point to the next instruction after + // each call. Adjust by -1 to land somewhere on the actual call. + addr-- + loc := locs[addr] + if locs[addr] == nil { + loc = &Location{ + Address: addr, + } + p.Location = append(p.Location, loc) + locs[addr] = loc + } + sloc = append(sloc, loc) + } + p.Sample = append(p.Sample, &Sample{ + Value: value, + Location: sloc, + }) + } + if !s.Scan() { + break + } + } + if err := s.Err(); err != nil { + return nil, err + } + + if err := parseAdditionalSections(s, p); err != nil { + return nil, err + } + + return p, nil +} + +// parseContentionSample parses a single row from a contention profile +// into a new Sample. +func parseContentionSample(line string, period, cpuHz int64) (value []int64, addrs []uint64, err error) { + sampleData := contentionSampleRE.FindStringSubmatch(line) + if sampleData == nil { + return nil, nil, errUnrecognized + } + + v1, err := strconv.ParseInt(sampleData[1], 10, 64) + if err != nil { + return nil, nil, fmt.Errorf("malformed sample: %s: %v", line, err) + } + v2, err := strconv.ParseInt(sampleData[2], 10, 64) + if err != nil { + return nil, nil, fmt.Errorf("malformed sample: %s: %v", line, err) + } + + // Unsample values if period and cpuHz are available. + // - Delays are scaled to cycles and then to nanoseconds. + // - Contentions are scaled to cycles. + if period > 0 { + if cpuHz > 0 { + cpuGHz := float64(cpuHz) / 1e9 + v1 = int64(float64(v1) * float64(period) / cpuGHz) + } + v2 = v2 * period + } + + value = []int64{v2, v1} + addrs, err = parseHexAddresses(sampleData[3]) + if err != nil { + return nil, nil, fmt.Errorf("malformed sample: %s: %v", line, err) + } + + return value, addrs, nil +} + +// parseThread parses a Threadz profile and returns a new Profile. +func parseThread(b []byte) (*Profile, error) { + s := bufio.NewScanner(bytes.NewBuffer(b)) + // Skip past comments and empty lines seeking a real header. + for s.Scan() && isSpaceOrComment(s.Text()) { + } + + line := s.Text() + if m := threadzStartRE.FindStringSubmatch(line); m != nil { + // Advance over initial comments until first stack trace. + for s.Scan() { + if line = s.Text(); isMemoryMapSentinel(line) || strings.HasPrefix(line, "-") { + break + } + } + } else if t := threadStartRE.FindStringSubmatch(line); len(t) != 4 { + return nil, errUnrecognized + } + + p := &Profile{ + SampleType: []*ValueType{{Type: "thread", Unit: "count"}}, + PeriodType: &ValueType{Type: "thread", Unit: "count"}, + Period: 1, + } + + locs := make(map[uint64]*Location) + // Recognize each thread and populate profile samples. + for !isMemoryMapSentinel(line) { + if strings.HasPrefix(line, "---- no stack trace for") { + break + } + if t := threadStartRE.FindStringSubmatch(line); len(t) != 4 { + return nil, errUnrecognized + } + + var addrs []uint64 + var err error + line, addrs, err = parseThreadSample(s) + if err != nil { + return nil, err + } + if len(addrs) == 0 { + // We got a --same as previous threads--. Bump counters. + if len(p.Sample) > 0 { + s := p.Sample[len(p.Sample)-1] + s.Value[0]++ + } + continue + } + + var sloc []*Location + for i, addr := range addrs { + // Addresses from stack traces point to the next instruction after + // each call. Adjust by -1 to land somewhere on the actual call + // (except for the leaf, which is not a call). + if i > 0 { + addr-- + } + loc := locs[addr] + if locs[addr] == nil { + loc = &Location{ + Address: addr, + } + p.Location = append(p.Location, loc) + locs[addr] = loc + } + sloc = append(sloc, loc) + } + + p.Sample = append(p.Sample, &Sample{ + Value: []int64{1}, + Location: sloc, + }) + } + + if err := parseAdditionalSections(s, p); err != nil { + return nil, err + } + + cleanupDuplicateLocations(p) + return p, nil +} + +// parseThreadSample parses a symbolized or unsymbolized stack trace. +// Returns the first line after the traceback, the sample (or nil if +// it hits a 'same-as-previous' marker) and an error. +func parseThreadSample(s *bufio.Scanner) (nextl string, addrs []uint64, err error) { + var line string + sameAsPrevious := false + for s.Scan() { + line = strings.TrimSpace(s.Text()) + if line == "" { + continue + } + + if strings.HasPrefix(line, "---") { + break + } + if strings.Contains(line, "same as previous thread") { + sameAsPrevious = true + continue + } + + curAddrs, err := parseHexAddresses(line) + if err != nil { + return "", nil, fmt.Errorf("malformed sample: %s: %v", line, err) + } + addrs = append(addrs, curAddrs...) + } + if err := s.Err(); err != nil { + return "", nil, err + } + if sameAsPrevious { + return line, nil, nil + } + return line, addrs, nil +} + +// parseAdditionalSections parses any additional sections in the +// profile, ignoring any unrecognized sections. +func parseAdditionalSections(s *bufio.Scanner, p *Profile) error { + for !isMemoryMapSentinel(s.Text()) && s.Scan() { + } + if err := s.Err(); err != nil { + return err + } + return p.ParseMemoryMapFromScanner(s) +} + +// ParseProcMaps parses a memory map in the format of /proc/self/maps. +// ParseMemoryMap should be called after setting on a profile to +// associate locations to the corresponding mapping based on their +// address. +func ParseProcMaps(rd io.Reader) ([]*Mapping, error) { + s := bufio.NewScanner(rd) + return parseProcMapsFromScanner(s) +} + +func parseProcMapsFromScanner(s *bufio.Scanner) ([]*Mapping, error) { + var mapping []*Mapping + + var attrs []string + const delimiter = "=" + r := strings.NewReplacer() + for s.Scan() { + line := r.Replace(removeLoggingInfo(s.Text())) + m, err := parseMappingEntry(line) + if err != nil { + if err == errUnrecognized { + // Recognize assignments of the form: attr=value, and replace + // $attr with value on subsequent mappings. + if attr := strings.SplitN(line, delimiter, 2); len(attr) == 2 { + attrs = append(attrs, "$"+strings.TrimSpace(attr[0]), strings.TrimSpace(attr[1])) + r = strings.NewReplacer(attrs...) + } + // Ignore any unrecognized entries + continue + } + return nil, err + } + if m == nil { + continue + } + mapping = append(mapping, m) + } + if err := s.Err(); err != nil { + return nil, err + } + return mapping, nil +} + +// removeLoggingInfo detects and removes log prefix entries generated +// by the glog package. If no logging prefix is detected, the string +// is returned unmodified. +func removeLoggingInfo(line string) string { + if match := logInfoRE.FindStringIndex(line); match != nil { + return line[match[1]:] + } + return line +} + +// ParseMemoryMap parses a memory map in the format of +// /proc/self/maps, and overrides the mappings in the current profile. +// It renumbers the samples and locations in the profile correspondingly. +func (p *Profile) ParseMemoryMap(rd io.Reader) error { + return p.ParseMemoryMapFromScanner(bufio.NewScanner(rd)) +} + +// ParseMemoryMapFromScanner parses a memory map in the format of +// /proc/self/maps or a variety of legacy format, and overrides the +// mappings in the current profile. It renumbers the samples and +// locations in the profile correspondingly. +func (p *Profile) ParseMemoryMapFromScanner(s *bufio.Scanner) error { + mapping, err := parseProcMapsFromScanner(s) + if err != nil { + return err + } + p.Mapping = append(p.Mapping, mapping...) + p.massageMappings() + p.remapLocationIDs() + p.remapFunctionIDs() + p.remapMappingIDs() + return nil +} + +func parseMappingEntry(l string) (*Mapping, error) { + var start, end, perm, file, offset, buildID string + if me := procMapsRE.FindStringSubmatch(l); len(me) == 6 { + start, end, perm, offset, file = me[1], me[2], me[3], me[4], me[5] + } else if me := briefMapsRE.FindStringSubmatch(l); len(me) == 7 { + start, end, perm, file, offset, buildID = me[1], me[2], me[3], me[4], me[5], me[6] + } else { + return nil, errUnrecognized + } + + var err error + mapping := &Mapping{ + File: file, + BuildID: buildID, + } + if perm != "" && !strings.Contains(perm, "x") { + // Skip non-executable entries. + return nil, nil + } + if mapping.Start, err = strconv.ParseUint(start, 16, 64); err != nil { + return nil, errUnrecognized + } + if mapping.Limit, err = strconv.ParseUint(end, 16, 64); err != nil { + return nil, errUnrecognized + } + if offset != "" { + if mapping.Offset, err = strconv.ParseUint(offset, 16, 64); err != nil { + return nil, errUnrecognized + } + } + return mapping, nil +} + +var memoryMapSentinels = []string{ + "--- Memory map: ---", + "MAPPED_LIBRARIES:", +} + +// isMemoryMapSentinel returns true if the string contains one of the +// known sentinels for memory map information. +func isMemoryMapSentinel(line string) bool { + for _, s := range memoryMapSentinels { + if strings.Contains(line, s) { + return true + } + } + return false +} + +func (p *Profile) addLegacyFrameInfo() { + switch { + case isProfileType(p, heapzSampleTypes): + p.DropFrames, p.KeepFrames = allocRxStr, allocSkipRxStr + case isProfileType(p, contentionzSampleTypes): + p.DropFrames, p.KeepFrames = lockRxStr, "" + default: + p.DropFrames, p.KeepFrames = cpuProfilerRxStr, "" + } +} + +var heapzSampleTypes = [][]string{ + {"allocations", "size"}, // early Go pprof profiles + {"objects", "space"}, + {"inuse_objects", "inuse_space"}, + {"alloc_objects", "alloc_space"}, + {"alloc_objects", "alloc_space", "inuse_objects", "inuse_space"}, // Go pprof legacy profiles +} +var contentionzSampleTypes = [][]string{ + {"contentions", "delay"}, +} + +func isProfileType(p *Profile, types [][]string) bool { + st := p.SampleType +nextType: + for _, t := range types { + if len(st) != len(t) { + continue + } + + for i := range st { + if st[i].Type != t[i] { + continue nextType + } + } + return true + } + return false +} + +var allocRxStr = strings.Join([]string{ + // POSIX entry points. + `calloc`, + `cfree`, + `malloc`, + `free`, + `memalign`, + `do_memalign`, + `(__)?posix_memalign`, + `pvalloc`, + `valloc`, + `realloc`, + + // TC malloc. + `tcmalloc::.*`, + `tc_calloc`, + `tc_cfree`, + `tc_malloc`, + `tc_free`, + `tc_memalign`, + `tc_posix_memalign`, + `tc_pvalloc`, + `tc_valloc`, + `tc_realloc`, + `tc_new`, + `tc_delete`, + `tc_newarray`, + `tc_deletearray`, + `tc_new_nothrow`, + `tc_newarray_nothrow`, + + // Memory-allocation routines on OS X. + `malloc_zone_malloc`, + `malloc_zone_calloc`, + `malloc_zone_valloc`, + `malloc_zone_realloc`, + `malloc_zone_memalign`, + `malloc_zone_free`, + + // Go runtime + `runtime\..*`, + + // Other misc. memory allocation routines + `BaseArena::.*`, + `(::)?do_malloc_no_errno`, + `(::)?do_malloc_pages`, + `(::)?do_malloc`, + `DoSampledAllocation`, + `MallocedMemBlock::MallocedMemBlock`, + `_M_allocate`, + `__builtin_(vec_)?delete`, + `__builtin_(vec_)?new`, + `__gnu_cxx::new_allocator::allocate`, + `__libc_malloc`, + `__malloc_alloc_template::allocate`, + `allocate`, + `cpp_alloc`, + `operator new(\[\])?`, + `simple_alloc::allocate`, +}, `|`) + +var allocSkipRxStr = strings.Join([]string{ + // Preserve Go runtime frames that appear in the middle/bottom of + // the stack. + `runtime\.panic`, + `runtime\.reflectcall`, + `runtime\.call[0-9]*`, +}, `|`) + +var cpuProfilerRxStr = strings.Join([]string{ + `ProfileData::Add`, + `ProfileData::prof_handler`, + `CpuProfiler::prof_handler`, + `__pthread_sighandler`, + `__restore`, +}, `|`) + +var lockRxStr = strings.Join([]string{ + `RecordLockProfileData`, + `(base::)?RecordLockProfileData.*`, + `(base::)?SubmitMutexProfileData.*`, + `(base::)?SubmitSpinLockProfileData.*`, + `(base::Mutex::)?AwaitCommon.*`, + `(base::Mutex::)?Unlock.*`, + `(base::Mutex::)?UnlockSlow.*`, + `(base::Mutex::)?ReaderUnlock.*`, + `(base::MutexLock::)?~MutexLock.*`, + `(Mutex::)?AwaitCommon.*`, + `(Mutex::)?Unlock.*`, + `(Mutex::)?UnlockSlow.*`, + `(Mutex::)?ReaderUnlock.*`, + `(MutexLock::)?~MutexLock.*`, + `(SpinLock::)?Unlock.*`, + `(SpinLock::)?SlowUnlock.*`, + `(SpinLockHolder::)?~SpinLockHolder.*`, +}, `|`) diff --git a/tests/vendor/github.com/google/pprof/profile/merge.go b/tests/vendor/github.com/google/pprof/profile/merge.go new file mode 100644 index 000000000..ba4d74640 --- /dev/null +++ b/tests/vendor/github.com/google/pprof/profile/merge.go @@ -0,0 +1,674 @@ +// Copyright 2014 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package profile + +import ( + "encoding/binary" + "fmt" + "sort" + "strconv" + "strings" +) + +// Compact performs garbage collection on a profile to remove any +// unreferenced fields. This is useful to reduce the size of a profile +// after samples or locations have been removed. +func (p *Profile) Compact() *Profile { + p, _ = Merge([]*Profile{p}) + return p +} + +// Merge merges all the profiles in profs into a single Profile. +// Returns a new profile independent of the input profiles. The merged +// profile is compacted to eliminate unused samples, locations, +// functions and mappings. Profiles must have identical profile sample +// and period types or the merge will fail. profile.Period of the +// resulting profile will be the maximum of all profiles, and +// profile.TimeNanos will be the earliest nonzero one. Merges are +// associative with the caveat of the first profile having some +// specialization in how headers are combined. There may be other +// subtleties now or in the future regarding associativity. +func Merge(srcs []*Profile) (*Profile, error) { + if len(srcs) == 0 { + return nil, fmt.Errorf("no profiles to merge") + } + p, err := combineHeaders(srcs) + if err != nil { + return nil, err + } + + pm := &profileMerger{ + p: p, + samples: make(map[sampleKey]*Sample, len(srcs[0].Sample)), + locations: make(map[locationKey]*Location, len(srcs[0].Location)), + functions: make(map[functionKey]*Function, len(srcs[0].Function)), + mappings: make(map[mappingKey]*Mapping, len(srcs[0].Mapping)), + } + + for _, src := range srcs { + // Clear the profile-specific hash tables + pm.locationsByID = makeLocationIDMap(len(src.Location)) + pm.functionsByID = make(map[uint64]*Function, len(src.Function)) + pm.mappingsByID = make(map[uint64]mapInfo, len(src.Mapping)) + + if len(pm.mappings) == 0 && len(src.Mapping) > 0 { + // The Mapping list has the property that the first mapping + // represents the main binary. Take the first Mapping we see, + // otherwise the operations below will add mappings in an + // arbitrary order. + pm.mapMapping(src.Mapping[0]) + } + + for _, s := range src.Sample { + if !isZeroSample(s) { + pm.mapSample(s) + } + } + } + + for _, s := range p.Sample { + if isZeroSample(s) { + // If there are any zero samples, re-merge the profile to GC + // them. + return Merge([]*Profile{p}) + } + } + + return p, nil +} + +// Normalize normalizes the source profile by multiplying each value in profile by the +// ratio of the sum of the base profile's values of that sample type to the sum of the +// source profile's value of that sample type. +func (p *Profile) Normalize(pb *Profile) error { + + if err := p.compatible(pb); err != nil { + return err + } + + baseVals := make([]int64, len(p.SampleType)) + for _, s := range pb.Sample { + for i, v := range s.Value { + baseVals[i] += v + } + } + + srcVals := make([]int64, len(p.SampleType)) + for _, s := range p.Sample { + for i, v := range s.Value { + srcVals[i] += v + } + } + + normScale := make([]float64, len(baseVals)) + for i := range baseVals { + if srcVals[i] == 0 { + normScale[i] = 0.0 + } else { + normScale[i] = float64(baseVals[i]) / float64(srcVals[i]) + } + } + p.ScaleN(normScale) + return nil +} + +func isZeroSample(s *Sample) bool { + for _, v := range s.Value { + if v != 0 { + return false + } + } + return true +} + +type profileMerger struct { + p *Profile + + // Memoization tables within a profile. + locationsByID locationIDMap + functionsByID map[uint64]*Function + mappingsByID map[uint64]mapInfo + + // Memoization tables for profile entities. + samples map[sampleKey]*Sample + locations map[locationKey]*Location + functions map[functionKey]*Function + mappings map[mappingKey]*Mapping +} + +type mapInfo struct { + m *Mapping + offset int64 +} + +func (pm *profileMerger) mapSample(src *Sample) *Sample { + // Check memoization table + k := pm.sampleKey(src) + if ss, ok := pm.samples[k]; ok { + for i, v := range src.Value { + ss.Value[i] += v + } + return ss + } + + // Make new sample. + s := &Sample{ + Location: make([]*Location, len(src.Location)), + Value: make([]int64, len(src.Value)), + Label: make(map[string][]string, len(src.Label)), + NumLabel: make(map[string][]int64, len(src.NumLabel)), + NumUnit: make(map[string][]string, len(src.NumLabel)), + } + for i, l := range src.Location { + s.Location[i] = pm.mapLocation(l) + } + for k, v := range src.Label { + vv := make([]string, len(v)) + copy(vv, v) + s.Label[k] = vv + } + for k, v := range src.NumLabel { + u := src.NumUnit[k] + vv := make([]int64, len(v)) + uu := make([]string, len(u)) + copy(vv, v) + copy(uu, u) + s.NumLabel[k] = vv + s.NumUnit[k] = uu + } + copy(s.Value, src.Value) + pm.samples[k] = s + pm.p.Sample = append(pm.p.Sample, s) + return s +} + +func (pm *profileMerger) sampleKey(sample *Sample) sampleKey { + // Accumulate contents into a string. + var buf strings.Builder + buf.Grow(64) // Heuristic to avoid extra allocs + + // encode a number + putNumber := func(v uint64) { + var num [binary.MaxVarintLen64]byte + n := binary.PutUvarint(num[:], v) + buf.Write(num[:n]) + } + + // encode a string prefixed with its length. + putDelimitedString := func(s string) { + putNumber(uint64(len(s))) + buf.WriteString(s) + } + + for _, l := range sample.Location { + // Get the location in the merged profile, which may have a different ID. + if loc := pm.mapLocation(l); loc != nil { + putNumber(loc.ID) + } + } + putNumber(0) // Delimiter + + for _, l := range sortedKeys1(sample.Label) { + putDelimitedString(l) + values := sample.Label[l] + putNumber(uint64(len(values))) + for _, v := range values { + putDelimitedString(v) + } + } + + for _, l := range sortedKeys2(sample.NumLabel) { + putDelimitedString(l) + values := sample.NumLabel[l] + putNumber(uint64(len(values))) + for _, v := range values { + putNumber(uint64(v)) + } + units := sample.NumUnit[l] + putNumber(uint64(len(units))) + for _, v := range units { + putDelimitedString(v) + } + } + + return sampleKey(buf.String()) +} + +type sampleKey string + +// sortedKeys1 returns the sorted keys found in a string->[]string map. +// +// Note: this is currently non-generic since github pprof runs golint, +// which does not support generics. When that issue is fixed, it can +// be merged with sortedKeys2 and made into a generic function. +func sortedKeys1(m map[string][]string) []string { + if len(m) == 0 { + return nil + } + keys := make([]string, 0, len(m)) + for k := range m { + keys = append(keys, k) + } + sort.Strings(keys) + return keys +} + +// sortedKeys2 returns the sorted keys found in a string->[]int64 map. +// +// Note: this is currently non-generic since github pprof runs golint, +// which does not support generics. When that issue is fixed, it can +// be merged with sortedKeys1 and made into a generic function. +func sortedKeys2(m map[string][]int64) []string { + if len(m) == 0 { + return nil + } + keys := make([]string, 0, len(m)) + for k := range m { + keys = append(keys, k) + } + sort.Strings(keys) + return keys +} + +func (pm *profileMerger) mapLocation(src *Location) *Location { + if src == nil { + return nil + } + + if l := pm.locationsByID.get(src.ID); l != nil { + return l + } + + mi := pm.mapMapping(src.Mapping) + l := &Location{ + ID: uint64(len(pm.p.Location) + 1), + Mapping: mi.m, + Address: uint64(int64(src.Address) + mi.offset), + Line: make([]Line, len(src.Line)), + IsFolded: src.IsFolded, + } + for i, ln := range src.Line { + l.Line[i] = pm.mapLine(ln) + } + // Check memoization table. Must be done on the remapped location to + // account for the remapped mapping ID. + k := l.key() + if ll, ok := pm.locations[k]; ok { + pm.locationsByID.set(src.ID, ll) + return ll + } + pm.locationsByID.set(src.ID, l) + pm.locations[k] = l + pm.p.Location = append(pm.p.Location, l) + return l +} + +// key generates locationKey to be used as a key for maps. +func (l *Location) key() locationKey { + key := locationKey{ + addr: l.Address, + isFolded: l.IsFolded, + } + if l.Mapping != nil { + // Normalizes address to handle address space randomization. + key.addr -= l.Mapping.Start + key.mappingID = l.Mapping.ID + } + lines := make([]string, len(l.Line)*3) + for i, line := range l.Line { + if line.Function != nil { + lines[i*2] = strconv.FormatUint(line.Function.ID, 16) + } + lines[i*2+1] = strconv.FormatInt(line.Line, 16) + lines[i*2+2] = strconv.FormatInt(line.Column, 16) + } + key.lines = strings.Join(lines, "|") + return key +} + +type locationKey struct { + addr, mappingID uint64 + lines string + isFolded bool +} + +func (pm *profileMerger) mapMapping(src *Mapping) mapInfo { + if src == nil { + return mapInfo{} + } + + if mi, ok := pm.mappingsByID[src.ID]; ok { + return mi + } + + // Check memoization tables. + mk := src.key() + if m, ok := pm.mappings[mk]; ok { + mi := mapInfo{m, int64(m.Start) - int64(src.Start)} + pm.mappingsByID[src.ID] = mi + return mi + } + m := &Mapping{ + ID: uint64(len(pm.p.Mapping) + 1), + Start: src.Start, + Limit: src.Limit, + Offset: src.Offset, + File: src.File, + KernelRelocationSymbol: src.KernelRelocationSymbol, + BuildID: src.BuildID, + HasFunctions: src.HasFunctions, + HasFilenames: src.HasFilenames, + HasLineNumbers: src.HasLineNumbers, + HasInlineFrames: src.HasInlineFrames, + } + pm.p.Mapping = append(pm.p.Mapping, m) + + // Update memoization tables. + pm.mappings[mk] = m + mi := mapInfo{m, 0} + pm.mappingsByID[src.ID] = mi + return mi +} + +// key generates encoded strings of Mapping to be used as a key for +// maps. +func (m *Mapping) key() mappingKey { + // Normalize addresses to handle address space randomization. + // Round up to next 4K boundary to avoid minor discrepancies. + const mapsizeRounding = 0x1000 + + size := m.Limit - m.Start + size = size + mapsizeRounding - 1 + size = size - (size % mapsizeRounding) + key := mappingKey{ + size: size, + offset: m.Offset, + } + + switch { + case m.BuildID != "": + key.buildIDOrFile = m.BuildID + case m.File != "": + key.buildIDOrFile = m.File + default: + // A mapping containing neither build ID nor file name is a fake mapping. A + // key with empty buildIDOrFile is used for fake mappings so that they are + // treated as the same mapping during merging. + } + return key +} + +type mappingKey struct { + size, offset uint64 + buildIDOrFile string +} + +func (pm *profileMerger) mapLine(src Line) Line { + ln := Line{ + Function: pm.mapFunction(src.Function), + Line: src.Line, + Column: src.Column, + } + return ln +} + +func (pm *profileMerger) mapFunction(src *Function) *Function { + if src == nil { + return nil + } + if f, ok := pm.functionsByID[src.ID]; ok { + return f + } + k := src.key() + if f, ok := pm.functions[k]; ok { + pm.functionsByID[src.ID] = f + return f + } + f := &Function{ + ID: uint64(len(pm.p.Function) + 1), + Name: src.Name, + SystemName: src.SystemName, + Filename: src.Filename, + StartLine: src.StartLine, + } + pm.functions[k] = f + pm.functionsByID[src.ID] = f + pm.p.Function = append(pm.p.Function, f) + return f +} + +// key generates a struct to be used as a key for maps. +func (f *Function) key() functionKey { + return functionKey{ + f.StartLine, + f.Name, + f.SystemName, + f.Filename, + } +} + +type functionKey struct { + startLine int64 + name, systemName, fileName string +} + +// combineHeaders checks that all profiles can be merged and returns +// their combined profile. +func combineHeaders(srcs []*Profile) (*Profile, error) { + for _, s := range srcs[1:] { + if err := srcs[0].compatible(s); err != nil { + return nil, err + } + } + + var timeNanos, durationNanos, period int64 + var comments []string + seenComments := map[string]bool{} + var docURL string + var defaultSampleType string + for _, s := range srcs { + if timeNanos == 0 || s.TimeNanos < timeNanos { + timeNanos = s.TimeNanos + } + durationNanos += s.DurationNanos + if period == 0 || period < s.Period { + period = s.Period + } + for _, c := range s.Comments { + if seen := seenComments[c]; !seen { + comments = append(comments, c) + seenComments[c] = true + } + } + if defaultSampleType == "" { + defaultSampleType = s.DefaultSampleType + } + if docURL == "" { + docURL = s.DocURL + } + } + + p := &Profile{ + SampleType: make([]*ValueType, len(srcs[0].SampleType)), + + DropFrames: srcs[0].DropFrames, + KeepFrames: srcs[0].KeepFrames, + + TimeNanos: timeNanos, + DurationNanos: durationNanos, + PeriodType: srcs[0].PeriodType, + Period: period, + + Comments: comments, + DefaultSampleType: defaultSampleType, + DocURL: docURL, + } + copy(p.SampleType, srcs[0].SampleType) + return p, nil +} + +// compatible determines if two profiles can be compared/merged. +// returns nil if the profiles are compatible; otherwise an error with +// details on the incompatibility. +func (p *Profile) compatible(pb *Profile) error { + if !equalValueType(p.PeriodType, pb.PeriodType) { + return fmt.Errorf("incompatible period types %v and %v", p.PeriodType, pb.PeriodType) + } + + if len(p.SampleType) != len(pb.SampleType) { + return fmt.Errorf("incompatible sample types %v and %v", p.SampleType, pb.SampleType) + } + + for i := range p.SampleType { + if !equalValueType(p.SampleType[i], pb.SampleType[i]) { + return fmt.Errorf("incompatible sample types %v and %v", p.SampleType, pb.SampleType) + } + } + return nil +} + +// equalValueType returns true if the two value types are semantically +// equal. It ignores the internal fields used during encode/decode. +func equalValueType(st1, st2 *ValueType) bool { + return st1.Type == st2.Type && st1.Unit == st2.Unit +} + +// locationIDMap is like a map[uint64]*Location, but provides efficiency for +// ids that are densely numbered, which is often the case. +type locationIDMap struct { + dense []*Location // indexed by id for id < len(dense) + sparse map[uint64]*Location // indexed by id for id >= len(dense) +} + +func makeLocationIDMap(n int) locationIDMap { + return locationIDMap{ + dense: make([]*Location, n), + sparse: map[uint64]*Location{}, + } +} + +func (lm locationIDMap) get(id uint64) *Location { + if id < uint64(len(lm.dense)) { + return lm.dense[int(id)] + } + return lm.sparse[id] +} + +func (lm locationIDMap) set(id uint64, loc *Location) { + if id < uint64(len(lm.dense)) { + lm.dense[id] = loc + return + } + lm.sparse[id] = loc +} + +// CompatibilizeSampleTypes makes profiles compatible to be compared/merged. It +// keeps sample types that appear in all profiles only and drops/reorders the +// sample types as necessary. +// +// In the case of sample types order is not the same for given profiles the +// order is derived from the first profile. +// +// Profiles are modified in-place. +// +// It returns an error if the sample type's intersection is empty. +func CompatibilizeSampleTypes(ps []*Profile) error { + sTypes := commonSampleTypes(ps) + if len(sTypes) == 0 { + return fmt.Errorf("profiles have empty common sample type list") + } + for _, p := range ps { + if err := compatibilizeSampleTypes(p, sTypes); err != nil { + return err + } + } + return nil +} + +// commonSampleTypes returns sample types that appear in all profiles in the +// order how they ordered in the first profile. +func commonSampleTypes(ps []*Profile) []string { + if len(ps) == 0 { + return nil + } + sTypes := map[string]int{} + for _, p := range ps { + for _, st := range p.SampleType { + sTypes[st.Type]++ + } + } + var res []string + for _, st := range ps[0].SampleType { + if sTypes[st.Type] == len(ps) { + res = append(res, st.Type) + } + } + return res +} + +// compatibilizeSampleTypes drops sample types that are not present in sTypes +// list and reorder them if needed. +// +// It sets DefaultSampleType to sType[0] if it is not in sType list. +// +// It assumes that all sample types from the sTypes list are present in the +// given profile otherwise it returns an error. +func compatibilizeSampleTypes(p *Profile, sTypes []string) error { + if len(sTypes) == 0 { + return fmt.Errorf("sample type list is empty") + } + defaultSampleType := sTypes[0] + reMap, needToModify := make([]int, len(sTypes)), false + for i, st := range sTypes { + if st == p.DefaultSampleType { + defaultSampleType = p.DefaultSampleType + } + idx := searchValueType(p.SampleType, st) + if idx < 0 { + return fmt.Errorf("%q sample type is not found in profile", st) + } + reMap[i] = idx + if idx != i { + needToModify = true + } + } + if !needToModify && len(sTypes) == len(p.SampleType) { + return nil + } + p.DefaultSampleType = defaultSampleType + oldSampleTypes := p.SampleType + p.SampleType = make([]*ValueType, len(sTypes)) + for i, idx := range reMap { + p.SampleType[i] = oldSampleTypes[idx] + } + values := make([]int64, len(sTypes)) + for _, s := range p.Sample { + for i, idx := range reMap { + values[i] = s.Value[idx] + } + s.Value = s.Value[:len(values)] + copy(s.Value, values) + } + return nil +} + +func searchValueType(vts []*ValueType, s string) int { + for i, vt := range vts { + if vt.Type == s { + return i + } + } + return -1 +} diff --git a/tests/vendor/github.com/google/pprof/profile/profile.go b/tests/vendor/github.com/google/pprof/profile/profile.go new file mode 100644 index 000000000..f47a24390 --- /dev/null +++ b/tests/vendor/github.com/google/pprof/profile/profile.go @@ -0,0 +1,869 @@ +// Copyright 2014 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Package profile provides a representation of profile.proto and +// methods to encode/decode profiles in this format. +package profile + +import ( + "bytes" + "compress/gzip" + "fmt" + "io" + "math" + "path/filepath" + "regexp" + "sort" + "strings" + "sync" + "time" +) + +// Profile is an in-memory representation of profile.proto. +type Profile struct { + SampleType []*ValueType + DefaultSampleType string + Sample []*Sample + Mapping []*Mapping + Location []*Location + Function []*Function + Comments []string + DocURL string + + DropFrames string + KeepFrames string + + TimeNanos int64 + DurationNanos int64 + PeriodType *ValueType + Period int64 + + // The following fields are modified during encoding and copying, + // so are protected by a Mutex. + encodeMu sync.Mutex + + commentX []int64 + docURLX int64 + dropFramesX int64 + keepFramesX int64 + stringTable []string + defaultSampleTypeX int64 +} + +// ValueType corresponds to Profile.ValueType +type ValueType struct { + Type string // cpu, wall, inuse_space, etc + Unit string // seconds, nanoseconds, bytes, etc + + typeX int64 + unitX int64 +} + +// Sample corresponds to Profile.Sample +type Sample struct { + Location []*Location + Value []int64 + // Label is a per-label-key map to values for string labels. + // + // In general, having multiple values for the given label key is strongly + // discouraged - see docs for the sample label field in profile.proto. The + // main reason this unlikely state is tracked here is to make the + // decoding->encoding roundtrip not lossy. But we expect that the value + // slices present in this map are always of length 1. + Label map[string][]string + // NumLabel is a per-label-key map to values for numeric labels. See a note + // above on handling multiple values for a label. + NumLabel map[string][]int64 + // NumUnit is a per-label-key map to the unit names of corresponding numeric + // label values. The unit info may be missing even if the label is in + // NumLabel, see the docs in profile.proto for details. When the value is + // slice is present and not nil, its length must be equal to the length of + // the corresponding value slice in NumLabel. + NumUnit map[string][]string + + locationIDX []uint64 + labelX []label +} + +// label corresponds to Profile.Label +type label struct { + keyX int64 + // Exactly one of the two following values must be set + strX int64 + numX int64 // Integer value for this label + // can be set if numX has value + unitX int64 +} + +// Mapping corresponds to Profile.Mapping +type Mapping struct { + ID uint64 + Start uint64 + Limit uint64 + Offset uint64 + File string + BuildID string + HasFunctions bool + HasFilenames bool + HasLineNumbers bool + HasInlineFrames bool + + fileX int64 + buildIDX int64 + + // Name of the kernel relocation symbol ("_text" or "_stext"), extracted from File. + // For linux kernel mappings generated by some tools, correct symbolization depends + // on knowing which of the two possible relocation symbols was used for `Start`. + // This is given to us as a suffix in `File` (e.g. "[kernel.kallsyms]_stext"). + // + // Note, this public field is not persisted in the proto. For the purposes of + // copying / merging / hashing profiles, it is considered subsumed by `File`. + KernelRelocationSymbol string +} + +// Location corresponds to Profile.Location +type Location struct { + ID uint64 + Mapping *Mapping + Address uint64 + Line []Line + IsFolded bool + + mappingIDX uint64 +} + +// Line corresponds to Profile.Line +type Line struct { + Function *Function + Line int64 + Column int64 + + functionIDX uint64 +} + +// Function corresponds to Profile.Function +type Function struct { + ID uint64 + Name string + SystemName string + Filename string + StartLine int64 + + nameX int64 + systemNameX int64 + filenameX int64 +} + +// Parse parses a profile and checks for its validity. The input +// may be a gzip-compressed encoded protobuf or one of many legacy +// profile formats which may be unsupported in the future. +func Parse(r io.Reader) (*Profile, error) { + data, err := io.ReadAll(r) + if err != nil { + return nil, err + } + return ParseData(data) +} + +// ParseData parses a profile from a buffer and checks for its +// validity. +func ParseData(data []byte) (*Profile, error) { + var p *Profile + var err error + if len(data) >= 2 && data[0] == 0x1f && data[1] == 0x8b { + gz, err := gzip.NewReader(bytes.NewBuffer(data)) + if err == nil { + data, err = io.ReadAll(gz) + } + if err != nil { + return nil, fmt.Errorf("decompressing profile: %v", err) + } + } + if p, err = ParseUncompressed(data); err != nil && err != errNoData && err != errConcatProfile { + p, err = parseLegacy(data) + } + + if err != nil { + return nil, fmt.Errorf("parsing profile: %v", err) + } + + if err := p.CheckValid(); err != nil { + return nil, fmt.Errorf("malformed profile: %v", err) + } + return p, nil +} + +var errUnrecognized = fmt.Errorf("unrecognized profile format") +var errMalformed = fmt.Errorf("malformed profile format") +var errNoData = fmt.Errorf("empty input file") +var errConcatProfile = fmt.Errorf("concatenated profiles detected") + +func parseLegacy(data []byte) (*Profile, error) { + parsers := []func([]byte) (*Profile, error){ + parseCPU, + parseHeap, + parseGoCount, // goroutine, threadcreate + parseThread, + parseContention, + parseJavaProfile, + } + + for _, parser := range parsers { + p, err := parser(data) + if err == nil { + p.addLegacyFrameInfo() + return p, nil + } + if err != errUnrecognized { + return nil, err + } + } + return nil, errUnrecognized +} + +// ParseUncompressed parses an uncompressed protobuf into a profile. +func ParseUncompressed(data []byte) (*Profile, error) { + if len(data) == 0 { + return nil, errNoData + } + p := &Profile{} + if err := unmarshal(data, p); err != nil { + return nil, err + } + + if err := p.postDecode(); err != nil { + return nil, err + } + + return p, nil +} + +var libRx = regexp.MustCompile(`([.]so$|[.]so[._][0-9]+)`) + +// massageMappings applies heuristic-based changes to the profile +// mappings to account for quirks of some environments. +func (p *Profile) massageMappings() { + // Merge adjacent regions with matching names, checking that the offsets match + if len(p.Mapping) > 1 { + mappings := []*Mapping{p.Mapping[0]} + for _, m := range p.Mapping[1:] { + lm := mappings[len(mappings)-1] + if adjacent(lm, m) { + lm.Limit = m.Limit + if m.File != "" { + lm.File = m.File + } + if m.BuildID != "" { + lm.BuildID = m.BuildID + } + p.updateLocationMapping(m, lm) + continue + } + mappings = append(mappings, m) + } + p.Mapping = mappings + } + + // Use heuristics to identify main binary and move it to the top of the list of mappings + for i, m := range p.Mapping { + file := strings.TrimSpace(strings.Replace(m.File, "(deleted)", "", -1)) + if len(file) == 0 { + continue + } + if len(libRx.FindStringSubmatch(file)) > 0 { + continue + } + if file[0] == '[' { + continue + } + // Swap what we guess is main to position 0. + p.Mapping[0], p.Mapping[i] = p.Mapping[i], p.Mapping[0] + break + } + + // Keep the mapping IDs neatly sorted + for i, m := range p.Mapping { + m.ID = uint64(i + 1) + } +} + +// adjacent returns whether two mapping entries represent the same +// mapping that has been split into two. Check that their addresses are adjacent, +// and if the offsets match, if they are available. +func adjacent(m1, m2 *Mapping) bool { + if m1.File != "" && m2.File != "" { + if m1.File != m2.File { + return false + } + } + if m1.BuildID != "" && m2.BuildID != "" { + if m1.BuildID != m2.BuildID { + return false + } + } + if m1.Limit != m2.Start { + return false + } + if m1.Offset != 0 && m2.Offset != 0 { + offset := m1.Offset + (m1.Limit - m1.Start) + if offset != m2.Offset { + return false + } + } + return true +} + +func (p *Profile) updateLocationMapping(from, to *Mapping) { + for _, l := range p.Location { + if l.Mapping == from { + l.Mapping = to + } + } +} + +func serialize(p *Profile) []byte { + p.encodeMu.Lock() + p.preEncode() + b := marshal(p) + p.encodeMu.Unlock() + return b +} + +// Write writes the profile as a gzip-compressed marshaled protobuf. +func (p *Profile) Write(w io.Writer) error { + zw := gzip.NewWriter(w) + defer zw.Close() + _, err := zw.Write(serialize(p)) + return err +} + +// WriteUncompressed writes the profile as a marshaled protobuf. +func (p *Profile) WriteUncompressed(w io.Writer) error { + _, err := w.Write(serialize(p)) + return err +} + +// CheckValid tests whether the profile is valid. Checks include, but are +// not limited to: +// - len(Profile.Sample[n].value) == len(Profile.value_unit) +// - Sample.id has a corresponding Profile.Location +func (p *Profile) CheckValid() error { + // Check that sample values are consistent + sampleLen := len(p.SampleType) + if sampleLen == 0 && len(p.Sample) != 0 { + return fmt.Errorf("missing sample type information") + } + for _, s := range p.Sample { + if s == nil { + return fmt.Errorf("profile has nil sample") + } + if len(s.Value) != sampleLen { + return fmt.Errorf("mismatch: sample has %d values vs. %d types", len(s.Value), len(p.SampleType)) + } + for _, l := range s.Location { + if l == nil { + return fmt.Errorf("sample has nil location") + } + } + } + + // Check that all mappings/locations/functions are in the tables + // Check that there are no duplicate ids + mappings := make(map[uint64]*Mapping, len(p.Mapping)) + for _, m := range p.Mapping { + if m == nil { + return fmt.Errorf("profile has nil mapping") + } + if m.ID == 0 { + return fmt.Errorf("found mapping with reserved ID=0") + } + if mappings[m.ID] != nil { + return fmt.Errorf("multiple mappings with same id: %d", m.ID) + } + mappings[m.ID] = m + } + functions := make(map[uint64]*Function, len(p.Function)) + for _, f := range p.Function { + if f == nil { + return fmt.Errorf("profile has nil function") + } + if f.ID == 0 { + return fmt.Errorf("found function with reserved ID=0") + } + if functions[f.ID] != nil { + return fmt.Errorf("multiple functions with same id: %d", f.ID) + } + functions[f.ID] = f + } + locations := make(map[uint64]*Location, len(p.Location)) + for _, l := range p.Location { + if l == nil { + return fmt.Errorf("profile has nil location") + } + if l.ID == 0 { + return fmt.Errorf("found location with reserved id=0") + } + if locations[l.ID] != nil { + return fmt.Errorf("multiple locations with same id: %d", l.ID) + } + locations[l.ID] = l + if m := l.Mapping; m != nil { + if m.ID == 0 || mappings[m.ID] != m { + return fmt.Errorf("inconsistent mapping %p: %d", m, m.ID) + } + } + for _, ln := range l.Line { + f := ln.Function + if f == nil { + return fmt.Errorf("location id: %d has a line with nil function", l.ID) + } + if f.ID == 0 || functions[f.ID] != f { + return fmt.Errorf("inconsistent function %p: %d", f, f.ID) + } + } + } + return nil +} + +// Aggregate merges the locations in the profile into equivalence +// classes preserving the request attributes. It also updates the +// samples to point to the merged locations. +func (p *Profile) Aggregate(inlineFrame, function, filename, linenumber, columnnumber, address bool) error { + for _, m := range p.Mapping { + m.HasInlineFrames = m.HasInlineFrames && inlineFrame + m.HasFunctions = m.HasFunctions && function + m.HasFilenames = m.HasFilenames && filename + m.HasLineNumbers = m.HasLineNumbers && linenumber + } + + // Aggregate functions + if !function || !filename { + for _, f := range p.Function { + if !function { + f.Name = "" + f.SystemName = "" + } + if !filename { + f.Filename = "" + } + } + } + + // Aggregate locations + if !inlineFrame || !address || !linenumber || !columnnumber { + for _, l := range p.Location { + if !inlineFrame && len(l.Line) > 1 { + l.Line = l.Line[len(l.Line)-1:] + } + if !linenumber { + for i := range l.Line { + l.Line[i].Line = 0 + l.Line[i].Column = 0 + } + } + if !columnnumber { + for i := range l.Line { + l.Line[i].Column = 0 + } + } + if !address { + l.Address = 0 + } + } + } + + return p.CheckValid() +} + +// NumLabelUnits returns a map of numeric label keys to the units +// associated with those keys and a map of those keys to any units +// that were encountered but not used. +// Unit for a given key is the first encountered unit for that key. If multiple +// units are encountered for values paired with a particular key, then the first +// unit encountered is used and all other units are returned in sorted order +// in map of ignored units. +// If no units are encountered for a particular key, the unit is then inferred +// based on the key. +func (p *Profile) NumLabelUnits() (map[string]string, map[string][]string) { + numLabelUnits := map[string]string{} + ignoredUnits := map[string]map[string]bool{} + encounteredKeys := map[string]bool{} + + // Determine units based on numeric tags for each sample. + for _, s := range p.Sample { + for k := range s.NumLabel { + encounteredKeys[k] = true + for _, unit := range s.NumUnit[k] { + if unit == "" { + continue + } + if wantUnit, ok := numLabelUnits[k]; !ok { + numLabelUnits[k] = unit + } else if wantUnit != unit { + if v, ok := ignoredUnits[k]; ok { + v[unit] = true + } else { + ignoredUnits[k] = map[string]bool{unit: true} + } + } + } + } + } + // Infer units for keys without any units associated with + // numeric tag values. + for key := range encounteredKeys { + unit := numLabelUnits[key] + if unit == "" { + switch key { + case "alignment", "request": + numLabelUnits[key] = "bytes" + default: + numLabelUnits[key] = key + } + } + } + + // Copy ignored units into more readable format + unitsIgnored := make(map[string][]string, len(ignoredUnits)) + for key, values := range ignoredUnits { + units := make([]string, len(values)) + i := 0 + for unit := range values { + units[i] = unit + i++ + } + sort.Strings(units) + unitsIgnored[key] = units + } + + return numLabelUnits, unitsIgnored +} + +// String dumps a text representation of a profile. Intended mainly +// for debugging purposes. +func (p *Profile) String() string { + ss := make([]string, 0, len(p.Comments)+len(p.Sample)+len(p.Mapping)+len(p.Location)) + for _, c := range p.Comments { + ss = append(ss, "Comment: "+c) + } + if url := p.DocURL; url != "" { + ss = append(ss, fmt.Sprintf("Doc: %s", url)) + } + if pt := p.PeriodType; pt != nil { + ss = append(ss, fmt.Sprintf("PeriodType: %s %s", pt.Type, pt.Unit)) + } + ss = append(ss, fmt.Sprintf("Period: %d", p.Period)) + if p.TimeNanos != 0 { + ss = append(ss, fmt.Sprintf("Time: %v", time.Unix(0, p.TimeNanos))) + } + if p.DurationNanos != 0 { + ss = append(ss, fmt.Sprintf("Duration: %.4v", time.Duration(p.DurationNanos))) + } + + ss = append(ss, "Samples:") + var sh1 string + for _, s := range p.SampleType { + dflt := "" + if s.Type == p.DefaultSampleType { + dflt = "[dflt]" + } + sh1 = sh1 + fmt.Sprintf("%s/%s%s ", s.Type, s.Unit, dflt) + } + ss = append(ss, strings.TrimSpace(sh1)) + for _, s := range p.Sample { + ss = append(ss, s.string()) + } + + ss = append(ss, "Locations") + for _, l := range p.Location { + ss = append(ss, l.string()) + } + + ss = append(ss, "Mappings") + for _, m := range p.Mapping { + ss = append(ss, m.string()) + } + + return strings.Join(ss, "\n") + "\n" +} + +// string dumps a text representation of a mapping. Intended mainly +// for debugging purposes. +func (m *Mapping) string() string { + bits := "" + if m.HasFunctions { + bits = bits + "[FN]" + } + if m.HasFilenames { + bits = bits + "[FL]" + } + if m.HasLineNumbers { + bits = bits + "[LN]" + } + if m.HasInlineFrames { + bits = bits + "[IN]" + } + return fmt.Sprintf("%d: %#x/%#x/%#x %s %s %s", + m.ID, + m.Start, m.Limit, m.Offset, + m.File, + m.BuildID, + bits) +} + +// string dumps a text representation of a location. Intended mainly +// for debugging purposes. +func (l *Location) string() string { + ss := []string{} + locStr := fmt.Sprintf("%6d: %#x ", l.ID, l.Address) + if m := l.Mapping; m != nil { + locStr = locStr + fmt.Sprintf("M=%d ", m.ID) + } + if l.IsFolded { + locStr = locStr + "[F] " + } + if len(l.Line) == 0 { + ss = append(ss, locStr) + } + for li := range l.Line { + lnStr := "??" + if fn := l.Line[li].Function; fn != nil { + lnStr = fmt.Sprintf("%s %s:%d:%d s=%d", + fn.Name, + fn.Filename, + l.Line[li].Line, + l.Line[li].Column, + fn.StartLine) + if fn.Name != fn.SystemName { + lnStr = lnStr + "(" + fn.SystemName + ")" + } + } + ss = append(ss, locStr+lnStr) + // Do not print location details past the first line + locStr = " " + } + return strings.Join(ss, "\n") +} + +// string dumps a text representation of a sample. Intended mainly +// for debugging purposes. +func (s *Sample) string() string { + ss := []string{} + var sv string + for _, v := range s.Value { + sv = fmt.Sprintf("%s %10d", sv, v) + } + sv = sv + ": " + for _, l := range s.Location { + sv = sv + fmt.Sprintf("%d ", l.ID) + } + ss = append(ss, sv) + const labelHeader = " " + if len(s.Label) > 0 { + ss = append(ss, labelHeader+labelsToString(s.Label)) + } + if len(s.NumLabel) > 0 { + ss = append(ss, labelHeader+numLabelsToString(s.NumLabel, s.NumUnit)) + } + return strings.Join(ss, "\n") +} + +// labelsToString returns a string representation of a +// map representing labels. +func labelsToString(labels map[string][]string) string { + ls := []string{} + for k, v := range labels { + ls = append(ls, fmt.Sprintf("%s:%v", k, v)) + } + sort.Strings(ls) + return strings.Join(ls, " ") +} + +// numLabelsToString returns a string representation of a map +// representing numeric labels. +func numLabelsToString(numLabels map[string][]int64, numUnits map[string][]string) string { + ls := []string{} + for k, v := range numLabels { + units := numUnits[k] + var labelString string + if len(units) == len(v) { + values := make([]string, len(v)) + for i, vv := range v { + values[i] = fmt.Sprintf("%d %s", vv, units[i]) + } + labelString = fmt.Sprintf("%s:%v", k, values) + } else { + labelString = fmt.Sprintf("%s:%v", k, v) + } + ls = append(ls, labelString) + } + sort.Strings(ls) + return strings.Join(ls, " ") +} + +// SetLabel sets the specified key to the specified value for all samples in the +// profile. +func (p *Profile) SetLabel(key string, value []string) { + for _, sample := range p.Sample { + if sample.Label == nil { + sample.Label = map[string][]string{key: value} + } else { + sample.Label[key] = value + } + } +} + +// RemoveLabel removes all labels associated with the specified key for all +// samples in the profile. +func (p *Profile) RemoveLabel(key string) { + for _, sample := range p.Sample { + delete(sample.Label, key) + } +} + +// HasLabel returns true if a sample has a label with indicated key and value. +func (s *Sample) HasLabel(key, value string) bool { + for _, v := range s.Label[key] { + if v == value { + return true + } + } + return false +} + +// SetNumLabel sets the specified key to the specified value for all samples in the +// profile. "unit" is a slice that describes the units that each corresponding member +// of "values" is measured in (e.g. bytes or seconds). If there is no relevant +// unit for a given value, that member of "unit" should be the empty string. +// "unit" must either have the same length as "value", or be nil. +func (p *Profile) SetNumLabel(key string, value []int64, unit []string) { + for _, sample := range p.Sample { + if sample.NumLabel == nil { + sample.NumLabel = map[string][]int64{key: value} + } else { + sample.NumLabel[key] = value + } + if sample.NumUnit == nil { + sample.NumUnit = map[string][]string{key: unit} + } else { + sample.NumUnit[key] = unit + } + } +} + +// RemoveNumLabel removes all numerical labels associated with the specified key for all +// samples in the profile. +func (p *Profile) RemoveNumLabel(key string) { + for _, sample := range p.Sample { + delete(sample.NumLabel, key) + delete(sample.NumUnit, key) + } +} + +// DiffBaseSample returns true if a sample belongs to the diff base and false +// otherwise. +func (s *Sample) DiffBaseSample() bool { + return s.HasLabel("pprof::base", "true") +} + +// Scale multiplies all sample values in a profile by a constant and keeps +// only samples that have at least one non-zero value. +func (p *Profile) Scale(ratio float64) { + if ratio == 1 { + return + } + ratios := make([]float64, len(p.SampleType)) + for i := range p.SampleType { + ratios[i] = ratio + } + p.ScaleN(ratios) +} + +// ScaleN multiplies each sample values in a sample by a different amount +// and keeps only samples that have at least one non-zero value. +func (p *Profile) ScaleN(ratios []float64) error { + if len(p.SampleType) != len(ratios) { + return fmt.Errorf("mismatched scale ratios, got %d, want %d", len(ratios), len(p.SampleType)) + } + allOnes := true + for _, r := range ratios { + if r != 1 { + allOnes = false + break + } + } + if allOnes { + return nil + } + fillIdx := 0 + for _, s := range p.Sample { + keepSample := false + for i, v := range s.Value { + if ratios[i] != 1 { + val := int64(math.Round(float64(v) * ratios[i])) + s.Value[i] = val + keepSample = keepSample || val != 0 + } + } + if keepSample { + p.Sample[fillIdx] = s + fillIdx++ + } + } + p.Sample = p.Sample[:fillIdx] + return nil +} + +// HasFunctions determines if all locations in this profile have +// symbolized function information. +func (p *Profile) HasFunctions() bool { + for _, l := range p.Location { + if l.Mapping != nil && !l.Mapping.HasFunctions { + return false + } + } + return true +} + +// HasFileLines determines if all locations in this profile have +// symbolized file and line number information. +func (p *Profile) HasFileLines() bool { + for _, l := range p.Location { + if l.Mapping != nil && (!l.Mapping.HasFilenames || !l.Mapping.HasLineNumbers) { + return false + } + } + return true +} + +// Unsymbolizable returns true if a mapping points to a binary for which +// locations can't be symbolized in principle, at least now. Examples are +// "[vdso]", "[vsyscall]" and some others, see the code. +func (m *Mapping) Unsymbolizable() bool { + name := filepath.Base(m.File) + return strings.HasPrefix(name, "[") || strings.HasPrefix(name, "linux-vdso") || strings.HasPrefix(m.File, "/dev/dri/") || m.File == "//anon" +} + +// Copy makes a fully independent copy of a profile. +func (p *Profile) Copy() *Profile { + pp := &Profile{} + if err := unmarshal(serialize(p), pp); err != nil { + panic(err) + } + if err := pp.postDecode(); err != nil { + panic(err) + } + + return pp +} diff --git a/tests/vendor/github.com/google/pprof/profile/proto.go b/tests/vendor/github.com/google/pprof/profile/proto.go new file mode 100644 index 000000000..a15696ba1 --- /dev/null +++ b/tests/vendor/github.com/google/pprof/profile/proto.go @@ -0,0 +1,367 @@ +// Copyright 2014 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This file is a simple protocol buffer encoder and decoder. +// The format is described at +// https://developers.google.com/protocol-buffers/docs/encoding +// +// A protocol message must implement the message interface: +// decoder() []decoder +// encode(*buffer) +// +// The decode method returns a slice indexed by field number that gives the +// function to decode that field. +// The encode method encodes its receiver into the given buffer. +// +// The two methods are simple enough to be implemented by hand rather than +// by using a protocol compiler. +// +// See profile.go for examples of messages implementing this interface. +// +// There is no support for groups, message sets, or "has" bits. + +package profile + +import ( + "errors" + "fmt" +) + +type buffer struct { + field int // field tag + typ int // proto wire type code for field + u64 uint64 + data []byte + tmp [16]byte + tmpLines []Line // temporary storage used while decoding "repeated Line". +} + +type decoder func(*buffer, message) error + +type message interface { + decoder() []decoder + encode(*buffer) +} + +func marshal(m message) []byte { + var b buffer + m.encode(&b) + return b.data +} + +func encodeVarint(b *buffer, x uint64) { + for x >= 128 { + b.data = append(b.data, byte(x)|0x80) + x >>= 7 + } + b.data = append(b.data, byte(x)) +} + +func encodeLength(b *buffer, tag int, len int) { + encodeVarint(b, uint64(tag)<<3|2) + encodeVarint(b, uint64(len)) +} + +func encodeUint64(b *buffer, tag int, x uint64) { + // append varint to b.data + encodeVarint(b, uint64(tag)<<3) + encodeVarint(b, x) +} + +func encodeUint64s(b *buffer, tag int, x []uint64) { + if len(x) > 2 { + // Use packed encoding + n1 := len(b.data) + for _, u := range x { + encodeVarint(b, u) + } + n2 := len(b.data) + encodeLength(b, tag, n2-n1) + n3 := len(b.data) + copy(b.tmp[:], b.data[n2:n3]) + copy(b.data[n1+(n3-n2):], b.data[n1:n2]) + copy(b.data[n1:], b.tmp[:n3-n2]) + return + } + for _, u := range x { + encodeUint64(b, tag, u) + } +} + +func encodeUint64Opt(b *buffer, tag int, x uint64) { + if x == 0 { + return + } + encodeUint64(b, tag, x) +} + +func encodeInt64(b *buffer, tag int, x int64) { + u := uint64(x) + encodeUint64(b, tag, u) +} + +func encodeInt64s(b *buffer, tag int, x []int64) { + if len(x) > 2 { + // Use packed encoding + n1 := len(b.data) + for _, u := range x { + encodeVarint(b, uint64(u)) + } + n2 := len(b.data) + encodeLength(b, tag, n2-n1) + n3 := len(b.data) + copy(b.tmp[:], b.data[n2:n3]) + copy(b.data[n1+(n3-n2):], b.data[n1:n2]) + copy(b.data[n1:], b.tmp[:n3-n2]) + return + } + for _, u := range x { + encodeInt64(b, tag, u) + } +} + +func encodeInt64Opt(b *buffer, tag int, x int64) { + if x == 0 { + return + } + encodeInt64(b, tag, x) +} + +func encodeString(b *buffer, tag int, x string) { + encodeLength(b, tag, len(x)) + b.data = append(b.data, x...) +} + +func encodeStrings(b *buffer, tag int, x []string) { + for _, s := range x { + encodeString(b, tag, s) + } +} + +func encodeBool(b *buffer, tag int, x bool) { + if x { + encodeUint64(b, tag, 1) + } else { + encodeUint64(b, tag, 0) + } +} + +func encodeBoolOpt(b *buffer, tag int, x bool) { + if x { + encodeBool(b, tag, x) + } +} + +func encodeMessage(b *buffer, tag int, m message) { + n1 := len(b.data) + m.encode(b) + n2 := len(b.data) + encodeLength(b, tag, n2-n1) + n3 := len(b.data) + copy(b.tmp[:], b.data[n2:n3]) + copy(b.data[n1+(n3-n2):], b.data[n1:n2]) + copy(b.data[n1:], b.tmp[:n3-n2]) +} + +func unmarshal(data []byte, m message) (err error) { + b := buffer{data: data, typ: 2} + return decodeMessage(&b, m) +} + +func le64(p []byte) uint64 { + return uint64(p[0]) | uint64(p[1])<<8 | uint64(p[2])<<16 | uint64(p[3])<<24 | uint64(p[4])<<32 | uint64(p[5])<<40 | uint64(p[6])<<48 | uint64(p[7])<<56 +} + +func le32(p []byte) uint32 { + return uint32(p[0]) | uint32(p[1])<<8 | uint32(p[2])<<16 | uint32(p[3])<<24 +} + +func decodeVarint(data []byte) (uint64, []byte, error) { + var u uint64 + for i := 0; ; i++ { + if i >= 10 || i >= len(data) { + return 0, nil, errors.New("bad varint") + } + u |= uint64(data[i]&0x7F) << uint(7*i) + if data[i]&0x80 == 0 { + return u, data[i+1:], nil + } + } +} + +func decodeField(b *buffer, data []byte) ([]byte, error) { + x, data, err := decodeVarint(data) + if err != nil { + return nil, err + } + b.field = int(x >> 3) + b.typ = int(x & 7) + b.data = nil + b.u64 = 0 + switch b.typ { + case 0: + b.u64, data, err = decodeVarint(data) + if err != nil { + return nil, err + } + case 1: + if len(data) < 8 { + return nil, errors.New("not enough data") + } + b.u64 = le64(data[:8]) + data = data[8:] + case 2: + var n uint64 + n, data, err = decodeVarint(data) + if err != nil { + return nil, err + } + if n > uint64(len(data)) { + return nil, errors.New("too much data") + } + b.data = data[:n] + data = data[n:] + case 5: + if len(data) < 4 { + return nil, errors.New("not enough data") + } + b.u64 = uint64(le32(data[:4])) + data = data[4:] + default: + return nil, fmt.Errorf("unknown wire type: %d", b.typ) + } + + return data, nil +} + +func checkType(b *buffer, typ int) error { + if b.typ != typ { + return errors.New("type mismatch") + } + return nil +} + +func decodeMessage(b *buffer, m message) error { + if err := checkType(b, 2); err != nil { + return err + } + dec := m.decoder() + data := b.data + for len(data) > 0 { + // pull varint field# + type + var err error + data, err = decodeField(b, data) + if err != nil { + return err + } + if b.field >= len(dec) || dec[b.field] == nil { + continue + } + if err := dec[b.field](b, m); err != nil { + return err + } + } + return nil +} + +func decodeInt64(b *buffer, x *int64) error { + if err := checkType(b, 0); err != nil { + return err + } + *x = int64(b.u64) + return nil +} + +func decodeInt64s(b *buffer, x *[]int64) error { + if b.typ == 2 { + // Packed encoding + data := b.data + for len(data) > 0 { + var u uint64 + var err error + + if u, data, err = decodeVarint(data); err != nil { + return err + } + *x = append(*x, int64(u)) + } + return nil + } + var i int64 + if err := decodeInt64(b, &i); err != nil { + return err + } + *x = append(*x, i) + return nil +} + +func decodeUint64(b *buffer, x *uint64) error { + if err := checkType(b, 0); err != nil { + return err + } + *x = b.u64 + return nil +} + +func decodeUint64s(b *buffer, x *[]uint64) error { + if b.typ == 2 { + data := b.data + // Packed encoding + for len(data) > 0 { + var u uint64 + var err error + + if u, data, err = decodeVarint(data); err != nil { + return err + } + *x = append(*x, u) + } + return nil + } + var u uint64 + if err := decodeUint64(b, &u); err != nil { + return err + } + *x = append(*x, u) + return nil +} + +func decodeString(b *buffer, x *string) error { + if err := checkType(b, 2); err != nil { + return err + } + *x = string(b.data) + return nil +} + +func decodeStrings(b *buffer, x *[]string) error { + var s string + if err := decodeString(b, &s); err != nil { + return err + } + *x = append(*x, s) + return nil +} + +func decodeBool(b *buffer, x *bool) error { + if err := checkType(b, 0); err != nil { + return err + } + if int64(b.u64) == 0 { + *x = false + } else { + *x = true + } + return nil +} diff --git a/tests/vendor/github.com/google/pprof/profile/prune.go b/tests/vendor/github.com/google/pprof/profile/prune.go new file mode 100644 index 000000000..b2f9fd546 --- /dev/null +++ b/tests/vendor/github.com/google/pprof/profile/prune.go @@ -0,0 +1,194 @@ +// Copyright 2014 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Implements methods to remove frames from profiles. + +package profile + +import ( + "fmt" + "regexp" + "strings" +) + +var ( + reservedNames = []string{"(anonymous namespace)", "operator()"} + bracketRx = func() *regexp.Regexp { + var quotedNames []string + for _, name := range append(reservedNames, "(") { + quotedNames = append(quotedNames, regexp.QuoteMeta(name)) + } + return regexp.MustCompile(strings.Join(quotedNames, "|")) + }() +) + +// simplifyFunc does some primitive simplification of function names. +func simplifyFunc(f string) string { + // Account for leading '.' on the PPC ELF v1 ABI. + funcName := strings.TrimPrefix(f, ".") + // Account for unsimplified names -- try to remove the argument list by trimming + // starting from the first '(', but skipping reserved names that have '('. + for _, ind := range bracketRx.FindAllStringSubmatchIndex(funcName, -1) { + foundReserved := false + for _, res := range reservedNames { + if funcName[ind[0]:ind[1]] == res { + foundReserved = true + break + } + } + if !foundReserved { + funcName = funcName[:ind[0]] + break + } + } + return funcName +} + +// Prune removes all nodes beneath a node matching dropRx, and not +// matching keepRx. If the root node of a Sample matches, the sample +// will have an empty stack. +func (p *Profile) Prune(dropRx, keepRx *regexp.Regexp) { + prune := make(map[uint64]bool) + pruneBeneath := make(map[uint64]bool) + + // simplifyFunc can be expensive, so cache results. + // Note that the same function name can be encountered many times due + // different lines and addresses in the same function. + pruneCache := map[string]bool{} // Map from function to whether or not to prune + pruneFromHere := func(s string) bool { + if r, ok := pruneCache[s]; ok { + return r + } + funcName := simplifyFunc(s) + if dropRx.MatchString(funcName) { + if keepRx == nil || !keepRx.MatchString(funcName) { + pruneCache[s] = true + return true + } + } + pruneCache[s] = false + return false + } + + for _, loc := range p.Location { + var i int + for i = len(loc.Line) - 1; i >= 0; i-- { + if fn := loc.Line[i].Function; fn != nil && fn.Name != "" { + if pruneFromHere(fn.Name) { + break + } + } + } + + if i >= 0 { + // Found matching entry to prune. + pruneBeneath[loc.ID] = true + + // Remove the matching location. + if i == len(loc.Line)-1 { + // Matched the top entry: prune the whole location. + prune[loc.ID] = true + } else { + loc.Line = loc.Line[i+1:] + } + } + } + + // Prune locs from each Sample + for _, sample := range p.Sample { + // Scan from the root to the leaves to find the prune location. + // Do not prune frames before the first user frame, to avoid + // pruning everything. + foundUser := false + for i := len(sample.Location) - 1; i >= 0; i-- { + id := sample.Location[i].ID + if !prune[id] && !pruneBeneath[id] { + foundUser = true + continue + } + if !foundUser { + continue + } + if prune[id] { + sample.Location = sample.Location[i+1:] + break + } + if pruneBeneath[id] { + sample.Location = sample.Location[i:] + break + } + } + } +} + +// RemoveUninteresting prunes and elides profiles using built-in +// tables of uninteresting function names. +func (p *Profile) RemoveUninteresting() error { + var keep, drop *regexp.Regexp + var err error + + if p.DropFrames != "" { + if drop, err = regexp.Compile("^(" + p.DropFrames + ")$"); err != nil { + return fmt.Errorf("failed to compile regexp %s: %v", p.DropFrames, err) + } + if p.KeepFrames != "" { + if keep, err = regexp.Compile("^(" + p.KeepFrames + ")$"); err != nil { + return fmt.Errorf("failed to compile regexp %s: %v", p.KeepFrames, err) + } + } + p.Prune(drop, keep) + } + return nil +} + +// PruneFrom removes all nodes beneath the lowest node matching dropRx, not including itself. +// +// Please see the example below to understand this method as well as +// the difference from Prune method. +// +// A sample contains Location of [A,B,C,B,D] where D is the top frame and there's no inline. +// +// PruneFrom(A) returns [A,B,C,B,D] because there's no node beneath A. +// Prune(A, nil) returns [B,C,B,D] by removing A itself. +// +// PruneFrom(B) returns [B,C,B,D] by removing all nodes beneath the first B when scanning from the bottom. +// Prune(B, nil) returns [D] because a matching node is found by scanning from the root. +func (p *Profile) PruneFrom(dropRx *regexp.Regexp) { + pruneBeneath := make(map[uint64]bool) + + for _, loc := range p.Location { + for i := 0; i < len(loc.Line); i++ { + if fn := loc.Line[i].Function; fn != nil && fn.Name != "" { + funcName := simplifyFunc(fn.Name) + if dropRx.MatchString(funcName) { + // Found matching entry to prune. + pruneBeneath[loc.ID] = true + loc.Line = loc.Line[i:] + break + } + } + } + } + + // Prune locs from each Sample + for _, sample := range p.Sample { + // Scan from the bottom leaf to the root to find the prune location. + for i, loc := range sample.Location { + if pruneBeneath[loc.ID] { + sample.Location = sample.Location[i:] + break + } + } + } +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/.gitignore b/tests/vendor/github.com/onsi/ginkgo/v2/.gitignore new file mode 100644 index 000000000..6faaaf315 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/.gitignore @@ -0,0 +1,8 @@ +.DS_Store +TODO +tmp/**/* +*.coverprofile +.vscode +.idea/ +*.log +*.test \ No newline at end of file diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/CHANGELOG.md b/tests/vendor/github.com/onsi/ginkgo/v2/CHANGELOG.md new file mode 100644 index 000000000..69b15d184 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/CHANGELOG.md @@ -0,0 +1,1176 @@ +## 2.23.4 + +Prior to this release Ginkgo would compute the incorrect number of available CPUs when running with `-p` in a linux container. Thanks to @emirot for the fix! + +### Features +- Add automaxprocs for using CPUQuota [2b9c428] + +### Fixes +- clarify gotchas about -vet flag [1f59d07] + +### Maintenance +- bump dependencies [2d134d5] + +## 2.23.3 + +### Fixes + +- allow `-` as a standalone argument [cfcc1a5] +- Bug Fix: Add GinkoTBWrapper.Chdir() and GinkoTBWrapper.Context() [feaf292] +- ignore exit code for symbol test on linux [88e2282] + +## 2.23.2 + +🎉🎉🎉 + +At long last, some long-standing performance gaps between `ginkgo` and `go test` have been resolved! + +Ginkgo operates by running `go test -c` to generate test binaries, and then running those binaries. It turns out that the compilation step of `go test -c` is slower than `go test`'s compilation step because `go test` strips out debug symbols (`ldflags=-w`) whereas `go test -c` does not. + +Ginkgo now passes the appropriate `ldflags` to `go test -c` when running specs to strip out symbols. This is only done when it is safe to do so and symbols are preferred when profiling is enabled and when `ginkgo build` is called explicitly. + +This, coupled, with the [instructions for disabling XProtect on MacOS](https://onsi.github.io/ginkgo/#if-you-are-running-on-macos) yields a much better performance experience with Ginkgo. + +## 2.23.1 + +## 🚨 For users on MacOS 🚨 + +A long-standing Ginkgo performance issue on MacOS seems to be due to mac's antimalware XProtect. You can follow the instructions [here](https://onsi.github.io/ginkgo/#if-you-are-running-on-macos) to disable it in your terminal. Doing so sped up Ginkgo's own test suite from 1m8s to 47s. + +### Fixes + +Ginkgo's CLI is now a bit clearer if you pass flags in incorrectly: + +- make it clearer that you need to pass a filename to the various profile flags, not an absolute directory [a0e52ff] +- emit an error and exit if the ginkgo invocation includes flags after positional arguments [b799d8d] + +This might cause existing CI builds to fail. If so then it's likely that your CI build was misconfigured and should be corrected. Open an issue if you need help. + +## 2.23.0 + +Ginkgo 2.23.0 adds a handful of methods to `GinkgoT()` to make it compatible with the `testing.TB` interface in Go 1.24. `GinkgoT().Context()`, in particular, is a useful shorthand for generating a new context that will clean itself up in a `DeferCleanup()`. This has subtle behavior differences from the golang implementation but should make sense in a Ginkgo... um... context. + +### Features +- bump to go 1.24.0 - support new testing.TB methods and add a test to cover testing.TB regressions [37a511b] + +### Fixes +- fix edge case where build -o is pointing at an explicit file, not a directory [7556a86] +- Fix binary paths when precompiling multiple suites. [4df06c6] + +### Maintenance +- Fix: Correct Markdown list rendering in MIGRATING_TO_V2.md [cbcf39a] +- docs: fix test workflow badge (#1512) [9b261ff] +- Bump golang.org/x/net in /integration/_fixtures/version_mismatch_fixture (#1516) [00f19c8] +- Bump golang.org/x/tools from 0.28.0 to 0.30.0 (#1515) [e98a4df] +- Bump activesupport from 6.0.6.1 to 6.1.7.5 in /docs (#1504) [60cc4e2] +- Bump github-pages from 231 to 232 in /docs (#1447) [fea6f2d] +- Bump rexml from 3.2.8 to 3.3.9 in /docs (#1497) [31d7813] +- Bump webrick from 1.8.1 to 1.9.1 in /docs (#1501) [fc3bbd6] +- Code linting (#1500) [aee0d56] +- change interface{} to any (#1502) [809a710] + +## 2.22.2 + +### Maintenance +- Bump github.com/onsi/gomega from 1.36.1 to 1.36.2 (#1499) [cc553ce] +- Bump golang.org/x/crypto (#1498) [2170370] +- Bump golang.org/x/net from 0.32.0 to 0.33.0 (#1496) [a96c44f] + +## 2.22.1 + +### Fixes +Fix CSV encoding +- Update tests [aab3da6] +- Properly encode CSV rows [c09df39] +- Add test case for proper csv escaping [96a80fc] +- Add meta-test [43dad69] + +### Maintenance +- ensure *.test files are gitignored so we don't accidentally commit compiled tests again [c88c634] +- remove golang.org/x/net/context in favour of stdlib context [4df44bf] + +## 2.22.0 + +### Features +- Add label to serial nodes [0fcaa08] + +This allows serial tests to be filtered using the `label-filter` + +### Maintenance +Various doc fixes + +## 2.21.0 + + + ### Features + - add support for GINKGO_TIME_FORMAT [a69eb39] + - add GINKGO_NO_COLOR to disable colors via environment variables [bcab9c8] + + ### Fixes + - increase threshold in timeline matcher [e548367] + - Fix the document by replacing `SpecsThatWillBeRun` with `SpecsThatWillRun` + [c2c4d3c] + + ### Maintenance + - bump various dependencies [7e65a00] + +## 2.20.2 + +Require Go 1.22+ + +### Maintenance +- bump go to v1.22 [a671816] + +## 2.20.1 + +### Fixes +- make BeSpecEvent duration matcher more forgiving [d6f9640] + +## 2.20.0 + +### Features +- Add buildvcs flag [be5ab95] + +### Maintenance +- Add update-deps to makefile [d303d14] +- bump all dependencies [7a50221] + +## 2.19.1 + +### Fixes +- update supported platforms for race conditions [63c8c30] +- [build] Allow custom name for binaries. [ff41e27] + +### Maintenance +- bump gomega [76f4e0c] +- Bump rexml from 3.2.6 to 3.2.8 in /docs (#1417) [b69c00d] +- Bump golang.org/x/sys from 0.20.0 to 0.21.0 (#1425) [f097741] + +## 2.19.0 + +### Features + +[Label Sets](https://onsi.github.io/ginkgo/#label-sets) allow for more expressive and flexible label filtering. + +## 2.18.0 + +### Features +- Add --slience-skips and --force-newlines [f010b65] +- fail when no tests were run and --fail-on-empty was set [d80eebe] + +### Fixes +- Fix table entry context edge case [42013d6] + +### Maintenance +- Bump golang.org/x/tools from 0.20.0 to 0.21.0 (#1406) [fcf1fd7] +- Bump github.com/onsi/gomega from 1.33.0 to 1.33.1 (#1399) [8bb14fd] +- Bump golang.org/x/net from 0.24.0 to 0.25.0 (#1407) [04bfad7] + +## 2.17.3 + +### Fixes +`ginkgo watch` now ignores hidden files [bde6e00] + +## 2.17.2 + +### Fixes +- fix: close files [32259c8] +- fix github output log level for skipped specs [780e7a3] + +### Maintenance +- Bump github.com/google/pprof [d91fe4e] +- Bump github.com/go-task/slim-sprig to v3 [8cb662e] +- Bump golang.org/x/net in /integration/_fixtures/version_mismatch_fixture (#1391) [3134422] +- Bump github-pages from 230 to 231 in /docs (#1384) [eca81b4] +- Bump golang.org/x/tools from 0.19.0 to 0.20.0 (#1383) [760def8] +- Bump golang.org/x/net from 0.23.0 to 0.24.0 (#1381) [4ce33f4] +- Fix test for gomega version bump [f2fcd97] +- Bump github.com/onsi/gomega from 1.30.0 to 1.33.0 (#1390) [fd622d2] +- Bump golang.org/x/tools from 0.17.0 to 0.19.0 (#1368) [5474a26] +- Bump github-pages from 229 to 230 in /docs (#1359) [e6d1170] +- Bump google.golang.org/protobuf from 1.28.0 to 1.33.0 (#1374) [7f447b2] +- Bump golang.org/x/net from 0.20.0 to 0.23.0 (#1380) [f15239a] + +## 2.17.1 + +### Fixes +- If the user sets --seed=0, make sure all parallel nodes get the same seed [af0330d] + +## 2.17.0 + +### Features + +- add `--github-output` for nicer output in github actions [e8a2056] + +### Maintenance + +- fix typo in core_dsl.go [977bc6f] +- Fix typo in docs [e297e7b] + +## 2.16.0 + +### Features +- add SpecContext to reporting nodes + +### Fixes +- merge coverages instead of combining them (#1329) (#1340) [23f0cc5] +- core_dsl: disable Getwd() with environment variable (#1357) [cd418b7] + +### Maintenance +- docs/index.md: Typo [2cebe8d] +- fix docs [06de431] +- chore: test with Go 1.22 (#1352) [898cba9] +- Bump golang.org/x/tools from 0.16.1 to 0.17.0 (#1336) [17ae120] +- Bump golang.org/x/sys from 0.15.0 to 0.16.0 (#1327) [5a179ed] +- Bump github.com/go-logr/logr from 1.3.0 to 1.4.1 (#1321) [a1e6b69] +- Bump github-pages and jekyll-feed in /docs (#1351) [d52951d] +- Fix docs for handling failures in goroutines (#1339) [4471b2e] + +## 2.15.0 + +### Features + +- JUnit reports now interpret Label(owner:X) and set owner to X. [8f3bd70] +- include cancellation reason when cancelling spec context [96e915c] + +### Fixes + +- emit output of failed go tool cover invocation so users can try to debug things for themselves [c245d09] +- fix outline when using nodot in ginkgo v2 [dca77c8] +- Document areas where GinkgoT() behaves differently from testing.T [dbaf18f] +- bugfix(docs): use Unsetenv instead of Clearenv (#1337) [6f67a14] + +### Maintenance + +- Bump to go 1.20 [4fcd0b3] + +## 2.14.0 + +### Features +You can now use `GinkgoTB()` when you need an instance of `testing.TB` to pass to a library. + +Prior to this release table testing only supported generating individual `It`s for each test entry. `DescribeTableSubtree` extends table testing support to entire testing subtrees - under the hood `DescrieTableSubtree` generates a new container for each entry and invokes your function to fill our the container. See the [docs](https://onsi.github.io/ginkgo/#generating-subtree-tables) to learn more. + +- Introduce DescribeTableSubtree [65ec56d] +- add GinkgoTB() to docs [4a2c832] +- Add GinkgoTB() function (#1333) [92b6744] + +### Fixes +- Fix typo in internal/suite.go (#1332) [beb9507] +- Fix typo in docs/index.md (#1319) [4ac3a13] +- allow wasm to compile with ginkgo present (#1311) [b2e5bc5] + +### Maintenance +- Bump golang.org/x/tools from 0.16.0 to 0.16.1 (#1316) [465a8ec] +- Bump actions/setup-go from 4 to 5 (#1313) [eab0e40] +- Bump github/codeql-action from 2 to 3 (#1317) [fbf9724] +- Bump golang.org/x/crypto (#1318) [3ee80ee] +- Bump golang.org/x/tools from 0.14.0 to 0.16.0 (#1306) [123e1d5] +- Bump github.com/onsi/gomega from 1.29.0 to 1.30.0 (#1297) [558f6e0] +- Bump golang.org/x/net from 0.17.0 to 0.19.0 (#1307) [84ff7f3] + +## 2.13.2 + +### Fixes +- Fix file handler leak (#1309) [e2e81c8] +- Avoid allocations with `(*regexp.Regexp).MatchString` (#1302) [3b2a2a7] + +## 2.13.1 + +### Fixes +- # 1296 fix(precompiled test guite): exec bit check omitted on Windows (#1301) [26eea01] + +### Maintenance +- Bump github.com/go-logr/logr from 1.2.4 to 1.3.0 (#1291) [7161a9d] +- Bump golang.org/x/sys from 0.13.0 to 0.14.0 (#1295) [7fc7b10] +- Bump golang.org/x/tools from 0.12.0 to 0.14.0 (#1282) [74bbd65] +- Bump github.com/onsi/gomega from 1.27.10 to 1.29.0 (#1290) [9373633] +- Bump golang.org/x/net in /integration/_fixtures/version_mismatch_fixture (#1286) [6e3cf65] + +## 2.13.0 + +### Features + +Add PreviewSpect() to enable programmatic preview access to the suite report (fixes #1225) + +## 2.12.1 + +### Fixes +- Print logr prefix if it exists (#1275) [90d4846] + +### Maintenance +- Bump actions/checkout from 3 to 4 (#1271) [555f543] +- Bump golang.org/x/sys from 0.11.0 to 0.12.0 (#1270) [d867b7d] + +## 2.12.0 + +### Features + +- feat: allow MustPassRepeatedly decorator to be set at suite level (#1266) [05de518] + +### Fixes + +- fix-errors-in-readme (#1244) [27c2f5d] + +### Maintenance + +Various chores/dependency bumps. + +## 2.11.0 + +In prior versions of Ginkgo specs the CLI filter flags (e.g. `--focus`, `--label-filter`) would _override_ any programmatic focus. This behavior has proved surprising and confusing in at least the following ways: + +- users cannot combine programmatic filters and CLI filters to more efficiently select subsets of tests +- CLI filters can override programmatic focus on CI systems resulting in an exit code of 0 despite the presence of (incorrectly!) committed focused specs. + +Going forward Ginkgo will AND all programmatic and CLI filters. Moreover, the presence of any programmatic focused tests will always result in a non-zero exit code. + +This change is technically a change in Ginkgo's external contract and may require some users to make changes to successfully adopt. Specifically: it's possible some users were intentionally using CLI filters to override programmatic focus. If this is you please open an issue so we can explore solutions to the underlying problem you are trying to solve. + +### Fixes +- Programmatic focus is no longer overwrriten by CLI filters [d6bba86] + +### Maintenance +- Bump github.com/onsi/gomega from 1.27.7 to 1.27.8 (#1218) [4a70a38] +- Bump golang.org/x/sys from 0.8.0 to 0.9.0 (#1219) [97eda4d] + +## 2.10.0 + +### Features +- feat(ginkgo/generators): add --tags flag (#1216) [a782a77] + adds a new --tags flag to ginkgo generate + +### Fixes +- Fix broken link of MIGRATING_TO_V2.md (#1217) [548d78e] + +### Maintenance +- Bump golang.org/x/tools from 0.9.1 to 0.9.3 (#1215) [2b76a5e] + +## 2.9.7 + +### Fixes +- fix race when multiple defercleanups are called in goroutines [07fc3a0] + +## 2.9.6 + +### Fixes +- fix: create parent directory before report files (#1212) [0ac65de] + +### Maintenance +- Bump github.com/onsi/gomega from 1.27.6 to 1.27.7 (#1202) [3e39231] + +## 2.9.5 + +### Fixes +- ensure the correct deterministic sort order is produced when ordered specs are generated by a helper function [7fa0b6b] + +### Maintenance +- fix generators link (#1200) [9f9d8b9] +- Bump golang.org/x/tools from 0.8.0 to 0.9.1 (#1196) [150e3f2] +- fix spelling err in docs (#1199) [0013b1a] +- Bump golang.org/x/sys from 0.7.0 to 0.8.0 (#1193) [9e9e3e5] + +## 2.9.4 + +### Fixes +- fix hang with ginkgo -p (#1192) [15d4bdc] - this addresses a _long_ standing issue related to Ginkgo hanging when a child process spawned by the test does not exit. + +- fix: fail fast may cause Serial spec or cleanup Node interrupted (#1178) [8dea88b] - prior to this there was a small gap in which specs on other processes might start even if one process has tried to abort the suite. + + +### Maintenance +- Document run order when multiple setup nodes are at the same nesting level [903be81] + +## 2.9.3 + +### Features +- Add RenderTimeline to GinkgoT() [c0c77b6] + +### Fixes +- update Measure deprecation message. fixes #1176 [227c662] +- add newlines to GinkgoLogr (#1170) (#1171) [0de0e7c] + +### Maintenance +- Bump commonmarker from 0.23.8 to 0.23.9 in /docs (#1183) [8b925ab] +- Bump nokogiri from 1.14.1 to 1.14.3 in /docs (#1184) [e3795a4] +- Bump golang.org/x/tools from 0.7.0 to 0.8.0 (#1182) [b453793] +- Bump actions/setup-go from 3 to 4 (#1164) [73ed75b] +- Bump github.com/onsi/gomega from 1.27.4 to 1.27.6 (#1173) [0a2bc64] +- Bump github.com/go-logr/logr from 1.2.3 to 1.2.4 (#1174) [f41c557] +- Bump golang.org/x/sys from 0.6.0 to 0.7.0 (#1179) [8e423e5] + +## 2.9.2 + +### Maintenance +- Bump github.com/go-task/slim-sprig (#1167) [3fcc5bf] +- Bump github.com/onsi/gomega from 1.27.3 to 1.27.4 (#1163) [6143ffe] + +## 2.9.1 + +### Fixes +This release fixes a longstanding issue where `ginkgo -coverpkg=./...` would not work. This is now resolved and fixes [#1161](https://github.com/onsi/ginkgo/issues/1161) and [#995](https://github.com/onsi/ginkgo/issues/995) +- Support -coverpkg=./... [26ca1b5] +- document coverpkg a bit more clearly [fc44c3b] + +### Maintenance +- bump various dependencies +- Improve Documentation and fix typo (#1158) [93de676] + +## 2.9.0 + +### Features +- AttachProgressReporter is an experimental feature that allows users to provide arbitrary information when a ProgressReport is requested [28801fe] + +- GinkgoT() has been expanded to include several Ginkgo-specific methods [2bd5a3b] + + The intent is to enable the development of third-party libraries that integrate deeply with Ginkgo using `GinkgoT()` to access Ginkgo's functionality. + +## 2.8.4 + +### Features +- Add OmitSuiteSetupNodes to JunitReportConfig (#1147) [979fbc2] +- Add a reference to ginkgolinter in docs.index.md (#1143) [8432589] + +### Fixes +- rename tools hack to see if it fixes things for downstream users [a8bb39a] + +### Maintenance +- Bump golang.org/x/text (#1144) [41b2a8a] +- Bump github.com/onsi/gomega from 1.27.0 to 1.27.1 (#1142) [7c4f583] + +## 2.8.3 + +Released to fix security issue in golang.org/x/net dependency + +### Maintenance + +- Bump golang.org/x/net from 0.6.0 to 0.7.0 (#1141) [fc1a02e] +- remove tools.go hack from documentation [0718693] + +## 2.8.2 + +Ginkgo now includes a `tools.go` file in the root directory of the `ginkgo` package. This should allow modules that simply `go get github.com/onsi/ginkgo/v2` to also pull in the CLI dependencies. This obviates the need for consumers of Ginkgo to have their own `tools.go` file and makes it simpler to ensure that the version of the `ginkgo` CLI being used matches the version of the library. You can simply run `go run github.com/onsi/ginkgo/v2/ginkgo` to run the version of the cli associated with your package go.mod. + +### Maintenance + +- Bump github.com/onsi/gomega from 1.26.0 to 1.27.0 (#1139) [5767b0a] +- Fix minor typos (#1138) [e1e9723] +- Fix link in V2 Migration Guide (#1137) [a588f60] + +## 2.8.1 + +### Fixes +- lock around default report output to avoid triggering the race detector when calling By from goroutines [2d5075a] +- don't run ReportEntries through sprintf [febbe38] + +### Maintenance +- Bump golang.org/x/tools from 0.5.0 to 0.6.0 (#1135) [11a4860] +- test: update matrix for Go 1.20 (#1130) [4890a62] +- Bump golang.org/x/sys from 0.4.0 to 0.5.0 (#1133) [a774638] +- Bump github.com/onsi/gomega from 1.25.0 to 1.26.0 (#1120) [3f233bd] +- Bump github-pages from 227 to 228 in /docs (#1131) [f9b8649] +- Bump activesupport from 6.0.6 to 6.0.6.1 in /docs (#1127) [6f8c042] +- Update index.md with instructions on how to upgrade Ginkgo [833a75e] + +## 2.8.0 + +### Features + +- Introduce GinkgoHelper() to track and exclude helper functions from potential CodeLocations [e19f556] + +Modeled after `testing.T.Helper()`. Now, rather than write code like: + +```go +func helper(model Model) { + Expect(model).WithOffset(1).To(BeValid()) + Expect(model.SerialNumber).WithOffset(1).To(MatchRegexp(/[a-f0-9]*/)) +} +``` + +you can stop tracking offsets (which makes nesting composing helpers nearly impossible) and simply write: + +```go +func helper(model Model) { + GinkgoHelper() + Expect(model).To(BeValid()) + Expect(model.SerialNumber).To(MatchRegexp(/[a-f0-9]*/)) +} +``` + +- Introduce GinkgoLabelFilter() and Label().MatchesLabelFilter() to make it possible to programmatically match filters (fixes #1119) [2f6597c] + +You can now write code like this: + +```go +BeforeSuite(func() { + if Label("slow").MatchesLabelFilter(GinkgoLabelFilter()) { + // do slow setup + } + + if Label("fast").MatchesLabelFilter(GinkgoLabelFilter()) { + // do fast setup + } +}) +``` + +to programmatically check whether a given set of labels will match the configured `--label-filter`. + +### Maintenance + +- Bump webrick from 1.7.0 to 1.8.1 in /docs (#1125) [ea4966e] +- cdeql: add ruby language (#1124) [9dd275b] +- dependabot: add bundler package-ecosystem for docs (#1123) [14e7bdd] + +## 2.7.1 + +### Fixes +- Bring back SuiteConfig.EmitSpecProgress to avoid compilation issue for consumers that set it manually [d2a1cb0] + +### Maintenance +- Bump github.com/onsi/gomega from 1.24.2 to 1.25.0 (#1118) [cafece6] +- Bump golang.org/x/tools from 0.4.0 to 0.5.0 (#1111) [eda66c2] +- Bump golang.org/x/sys from 0.3.0 to 0.4.0 (#1112) [ac5ccaa] +- Bump github.com/onsi/gomega from 1.24.1 to 1.24.2 (#1097) [eee6480] + +## 2.7.0 + +### Features +- Introduce ContinueOnFailure for Ordered containers [e0123ca] - Ordered containers that are also decorated with ContinueOnFailure will not stop running specs after the first spec fails. +- Support for bootstrap commands to use custom data for templates (#1110) [7a2b242] +- Support for labels and pending decorator in ginkgo outline output (#1113) [e6e3b98] +- Color aliases for custom color support (#1101) [49fab7a] + +### Fixes +- correctly ensure deterministic spec order, even if specs are generated by iterating over a map [89dda20] +- Fix a bug where timedout specs were not correctly treated as failures when determining whether or not to run AfterAlls in an Ordered container. +- Ensure go test coverprofile outputs to the expected location (#1105) [b0bd77b] + +## 2.6.1 + +### Features +- Override formatter colors from envvars - this is a new feature but an alternative approach involving config files might be taken in the future (#1095) [60240d1] + +### Fixes +- GinkgoRecover now supports ignoring panics that match a specific, hidden, interface [301f3e2] + +### Maintenance +- Bump github.com/onsi/gomega from 1.24.0 to 1.24.1 (#1077) [3643823] +- Bump golang.org/x/tools from 0.2.0 to 0.4.0 (#1090) [f9f856e] +- Bump nokogiri from 1.13.9 to 1.13.10 in /docs (#1091) [0d7087e] + +## 2.6.0 + +### Features +- `ReportBeforeSuite` provides access to the suite report before the suite begins. +- Add junit config option for omitting leafnodetype (#1088) [956e6d2] +- Add support to customize junit report config to omit spec labels (#1087) [de44005] + +### Fixes +- Fix stack trace pruning so that it has a chance of working on windows [2165648] + +## 2.5.1 + +### Fixes +- skipped tests only show as 'S' when running with -v [3ab38ae] +- Fix typo in docs/index.md (#1082) [55fc58d] +- Fix typo in docs/index.md (#1081) [8a14f1f] +- Fix link notation in docs/index.md (#1080) [2669612] +- Fix typo in `--progress` deprecation message (#1076) [b4b7edc] + +### Maintenance +- chore: Included githubactions in the dependabot config (#976) [baea341] +- Bump golang.org/x/sys from 0.1.0 to 0.2.0 (#1075) [9646297] + +## 2.5.0 + +### Ginkgo output now includes a timeline-view of the spec + +This commit changes Ginkgo's default output. Spec details are now +presented as a **timeline** that includes events that occur during the spec +lifecycle interleaved with any GinkgoWriter content. This makes is much easier +to understand the flow of a spec and where a given failure occurs. + +The --progress, --slow-spec-threshold, --always-emit-ginkgo-writer flags +and the SuppressProgressReporting decorator have all been deprecated. Instead +the existing -v and -vv flags better capture the level of verbosity to display. However, +a new --show-node-events flag is added to include node `> Enter` and `< Exit` events +in the spec timeline. + +In addition, JUnit reports now include the timeline (rendered with -vv) and custom JUnit +reports can be configured and generated using +`GenerateJUnitReportWithConfig(report types.Report, dst string, config JunitReportConfig)` + +Code should continue to work unchanged with this version of Ginkgo - however if you have tooling that +was relying on the specific output format of Ginkgo you _may_ run into issues. Ginkgo's console output is not guaranteed to be stable for tooling and automation purposes. You should, instead, use Ginkgo's JSON format +to build tooling on top of as it has stronger guarantees to be stable from version to version. + +### Features +- Provide details about which timeout expired [0f2fa27] + +### Fixes +- Add Support Policy to docs [c70867a] + +### Maintenance +- Bump github.com/onsi/gomega from 1.22.1 to 1.23.0 (#1070) [bb3b4e2] + +## 2.4.0 + +### Features + +- DeferCleanup supports functions with multiple-return values [5e33c75] +- Add GinkgoLogr (#1067) [bf78c28] +- Introduction of 'MustPassRepeatedly' decorator (#1051) [047c02f] + +### Fixes +- correcting some typos (#1064) [1403d3c] +- fix flaky internal_integration interrupt specs [2105ba3] +- Correct busted link in README [be6b5b9] + +### Maintenance +- Bump actions/checkout from 2 to 3 (#1062) [8a2f483] +- Bump golang.org/x/tools from 0.1.12 to 0.2.0 (#1065) [529c4e8] +- Bump github/codeql-action from 1 to 2 (#1061) [da09146] +- Bump actions/setup-go from 2 to 3 (#1060) [918040d] +- Bump github.com/onsi/gomega from 1.22.0 to 1.22.1 (#1053) [2098e4d] +- Bump nokogiri from 1.13.8 to 1.13.9 in /docs (#1066) [1d74122] +- Add GHA to dependabot config [4442772] + +## 2.3.1 + +## Fixes +Several users were invoking `ginkgo` by installing the latest version of the cli via `go install github.com/onsi/ginkgo/v2/ginkgo@latest`. When 2.3.0 was released this resulted in an influx of issues as CI systems failed due to a change in the internal contract between the Ginkgo CLI and the Ginkgo library. Ginkgo only supports running the same version of the library as the cli (which is why both are packaged in the same repository). + +With this patch release, the ginkgo CLI can now identify a version mismatch and emit a helpful error message. + +- Ginkgo cli can identify version mismatches and emit a helpful error message [bc4ae2f] +- further emphasize that a version match is required when running Ginkgo on CI and/or locally [2691dd8] + +### Maintenance +- bump gomega to v1.22.0 [822a937] + +## 2.3.0 + +### Interruptible Nodes and Timeouts + +Ginkgo now supports per-node and per-spec timeouts on interruptible nodes. Check out the [documentation for all the details](https://onsi.github.io/ginkgo/#spec-timeouts-and-interruptible-nodes) but the gist is you can now write specs like this: + +```go +It("is interruptible", func(ctx SpecContext) { // or context.Context instead of SpecContext, both are valid. + // do things until `ctx.Done()` is closed, for example: + req, err := http.NewRequestWithContext(ctx, "POST", "/build-widgets", nil) + Expect(err).NotTo(HaveOccured()) + _, err := http.DefaultClient.Do(req) + Expect(err).NotTo(HaveOccured()) + + Eventually(client.WidgetCount).WithContext(ctx).Should(Equal(17)) +}, NodeTimeout(time.Second*20), GracePeriod(5*time.Second)) +``` + +and have Ginkgo ensure that the node completes before the timeout elapses. If it does elapse, or if an external interrupt is received (e.g. `^C`) then Ginkgo will cancel the context and wait for the Grace Period for the node to exit before proceeding with any cleanup nodes associated with the spec. The `ctx` provided by Ginkgo can also be passed down to Gomega's `Eventually` to have all assertions within the node governed by a single deadline. + +### Features + +- Ginkgo now records any additional failures that occur during the cleanup of a failed spec. In prior versions this information was quietly discarded, but the introduction of a more rigorous approach to timeouts and interruptions allows Ginkgo to better track subsequent failures. +- `SpecContext` also provides a mechanism for third-party libraries to provide additional information when a Progress Report is generated. Gomega uses this to provide the current state of an `Eventually().WithContext()` assertion when a Progress Report is requested. +- DescribeTable now exits with an error if it is not passed any Entries [a4c9865] + +## Fixes +- fixes crashes on newer Ruby 3 installations by upgrading github-pages gem dependency [92c88d5] +- Make the outline command able to use the DSL import [1be2427] + +## Maintenance +- chore(docs): delete no meaning d [57c373c] +- chore(docs): Fix hyperlinks [30526d5] +- chore(docs): fix code blocks without language settings [cf611c4] +- fix intra-doc link [b541bcb] + +## 2.2.0 + +### Generate real-time Progress Reports [f91377c] + +Ginkgo can now generate Progress Reports to point users at the current running line of code (including a preview of the actual source code) and a best guess at the most relevant subroutines. + +These Progress Reports allow users to debug stuck or slow tests without exiting the Ginkgo process. A Progress Report can be generated at any time by sending Ginkgo a `SIGINFO` (`^T` on MacOS/BSD) or `SIGUSR1`. + +In addition, the user can specify `--poll-progress-after` and `--poll-progress-interval` to have Ginkgo start periodically emitting progress reports if a given node takes too long. These can be overriden/set on a per-node basis with the `PollProgressAfter` and `PollProgressInterval` decorators. + +Progress Reports are emitted to stdout, and also stored in the machine-redable report formats that Ginkgo supports. + +Ginkgo also uses this progress reporting infrastructure under the hood when handling timeouts and interrupts. This yields much more focused, useful, and informative stack traces than previously. + +### Features +- `BeforeSuite`, `AfterSuite`, `SynchronizedBeforeSuite`, `SynchronizedAfterSuite`, and `ReportAfterSuite` now support (the relevant subset of) decorators. These can be passed in _after_ the callback functions that are usually passed into these nodes. + + As a result the **signature of these methods has changed** and now includes a trailing `args ...any`. For most users simply using the DSL, this change is transparent. However if you were assigning one of these functions to a custom variable (or passing it around) then your code may need to change to reflect the new signature. + +### Maintenance +- Modernize the invocation of Ginkgo in github actions [0ffde58] +- Update reocmmended CI settings in docs [896bbb9] +- Speed up unnecessarily slow integration test [6d3a90e] + +## 2.1.6 + +### Fixes +- Add `SuppressProgressReporting` decorator to turn off --progress announcements for a given node [dfef62a] +- chore: remove duplicate word in comments [7373214] + +## 2.1.5 + +### Fixes +- drop -mod=mod instructions; fixes #1026 [6ad7138] +- Ensure `CurrentSpecReport` and `AddReportEntry` are thread-safe [817c09b] +- remove stale importmap gcflags flag test [3cd8b93] +- Always emit spec summary [5cf23e2] - even when only one spec has failed +- Fix ReportAfterSuite usage in docs [b1864ad] +- fixed typo (#997) [219cc00] +- TrimRight is not designed to trim Suffix [71ebb74] +- refactor: replace strings.Replace with strings.ReplaceAll (#978) [143d208] +- fix syntax in examples (#975) [b69554f] + +### Maintenance +- Bump github.com/onsi/gomega from 1.20.0 to 1.20.1 (#1027) [e5dfce4] +- Bump tzinfo from 1.2.9 to 1.2.10 in /docs (#1006) [7ae91c4] +- Bump github.com/onsi/gomega from 1.19.0 to 1.20.0 (#1005) [e87a85a] +- test: add new Go 1.19 to test matrix (#1014) [bbefe12] +- Bump golang.org/x/tools from 0.1.11 to 0.1.12 (#1012) [9327906] +- Bump golang.org/x/tools from 0.1.10 to 0.1.11 (#993) [f44af96] +- Bump nokogiri from 1.13.3 to 1.13.6 in /docs (#981) [ef336aa] + +## 2.1.4 + +### Fixes +- Numerous documentation typos +- Prepend `when` when using `When` (this behavior was in 1.x but unintentionally lost during the 2.0 rewrite) [efce903] +- improve error message when a parallel process fails to report back [a7bd1fe] +- guard against concurrent map writes in DeprecationTracker [0976569] +- Invoke reporting nodes during dry-run (fixes #956 and #935) [aae4480] +- Fix ginkgo import circle [f779385] + +## 2.1.3 + +See [https://onsi.github.io/ginkgo/MIGRATING_TO_V2](https://onsi.github.io/ginkgo/MIGRATING_TO_V2) for details on V2. + +### Fixes +- Calling By in a container node now emits a useful error. [ff12cee] + +## 2.1.2 + +### Fixes + +- Track location of focused specs correctly in `ginkgo unfocus` [a612ff1] +- Profiling suites with focused specs no longer generates an erroneous failure message [8fbfa02] +- Several documentation typos fixed. Big thanks to everyone who helped catch them and report/fix them! + +## 2.1.1 + +See [https://onsi.github.io/ginkgo/MIGRATING_TO_V2](https://onsi.github.io/ginkgo/MIGRATING_TO_V2) for details on V2. + +### Fixes +- Suites that only import the new dsl packages are now correctly identified as Ginkgo suites [ec17e17] + +## 2.1.0 + +See [https://onsi.github.io/ginkgo/MIGRATING_TO_V2](https://onsi.github.io/ginkgo/MIGRATING_TO_V2) for details on V2. + +2.1.0 is a minor release with a few tweaks: + +- Introduce new DSL packages to enable users to pick-and-choose which portions of the DSL to dot-import. [90868e2] More details [here](https://onsi.github.io/ginkgo/#alternatives-to-dot-importing-ginkgo). +- Add error check for invalid/nil parameters to DescribeTable [6f8577e] +- Myriad docs typos fixed (thanks everyone!) [718542a, ecb7098, 146654c, a8f9913, 6bdffde, 03dcd7e] + +## 2.0.0 + +See [https://onsi.github.io/ginkgo/MIGRATING_TO_V2](https://onsi.github.io/ginkgo/MIGRATING_TO_V2) + +## 1.16.5 + +Ginkgo 2.0 now has a Release Candidate. 1.16.5 advertises the existence of the RC. +1.16.5 deprecates GinkgoParallelNode in favor of GinkgoParallelProcess + +You can silence the RC advertisement by setting an `ACK_GINKGO_RC=true` environment variable or creating a file in your home directory called `.ack-ginkgo-rc` + +## 1.16.4 + +### Fixes +1.16.4 retracts 1.16.3. There are no code changes. The 1.16.3 tag was associated with the wrong commit and an attempt to change it after-the-fact has proven problematic. 1.16.4 retracts 1.16.3 in Ginkgo's go.mod and creates a new, correctly tagged, release. + +## 1.16.3 + +### Features +- Measure is now deprecated and emits a deprecation warning. + +## 1.16.2 + +### Fixes +- Deprecations can be suppressed by setting an `ACK_GINKGO_DEPRECATIONS=` environment variable. + +## 1.16.1 + +### Fixes +- Suppress --stream deprecation warning on windows (#793) + +## 1.16.0 + +### Features +- Advertise Ginkgo 2.0. Introduce deprecations. [9ef1913] + - Update README.md to advertise that Ginkgo 2.0 is coming. + - Backport the 2.0 DeprecationTracker and start alerting users + about upcoming deprecations. + +- Add slim-sprig template functions to bootstrap/generate (#775) [9162b86] + +- Fix accidental reference to 1488 (#784) [9fb7fe4] + +## 1.15.2 + +### Fixes +- ignore blank `-focus` and `-skip` flags (#780) [e90a4a0] + +## 1.15.1 + +### Fixes +- reporters/junit: Use `system-out` element instead of `passed` (#769) [9eda305] + +## 1.15.0 + +### Features +- Adds 'outline' command to print the outline of specs/containers in a file (#754) [071c369] [6803cc3] [935b538] [06744e8] [0c40583] +- Add support for using template to generate tests (#752) [efb9e69] +- Add a Chinese Doc #755 (#756) [5207632] +- cli: allow multiple -focus and -skip flags (#736) [9a782fb] + +### Fixes +- Add _internal to filename of tests created with internal flag (#751) [43c12da] + +## 1.14.2 + +### Fixes +- correct handling windows backslash in import path (#721) [97f3d51] +- Add additional methods to GinkgoT() to improve compatibility with the testing.TB interface [b5fe44d] + +## 1.14.1 + +### Fixes +- Discard exported method declaration when running ginkgo bootstrap (#558) [f4b0240] + +## 1.14.0 + +### Features +- Defer running top-level container nodes until RunSpecs is called [d44dedf] +- [Document Ginkgo lifecycle](http://onsi.github.io/ginkgo/#understanding-ginkgos-lifecycle) +- Add `extensions/globals` package (#692) [3295c8f] - this can be helpful in contexts where you are test-driving your test-generation code (see [#692](https://github.com/onsi/ginkgo/pull/692)) +- Print Skip reason in JUnit reporter if one was provided [820dfab] + +## 1.13.0 + +### Features +- Add a version of table.Entry that allows dumping the entry parameters. (#689) [21eaef2] + +### Fixes +- Ensure integration tests pass in an environment sans GOPATH [606fba2] +- Add books package (#568) [fc0e44e] +- doc(readme): installation via "tools package" (#677) [83bb20e] +- Solve the undefined: unix.Dup2 compile error on mips64le (#680) [0624f75] +- Import package without dot (#687) [6321024] +- Fix integration tests to stop require GOPATH (#686) [a912ec5] + +## 1.12.3 + +### Fixes +- Print correct code location of failing table test (#666) [c6d7afb] + +## 1.12.2 + +### Fixes +- Update dependencies [ea4a036] + +## 1.12.1 + +### Fixes +- Make unfocus ("blur") much faster (#674) [8b18061] +- Fix typo (#673) [7fdcbe8] +- Test against 1.14 and remove 1.12 [d5c2ad6] +- Test if a coverprofile content is empty before checking its latest character (#670) [14d9fa2] +- replace tail package with maintained one. this fixes go get errors (#667) [4ba33d4] +- improve ginkgo performance - makes progress on #644 [a14f98e] +- fix convert integration tests [1f8ba69] +- fix typo successful -> successful (#663) [1ea49cf] +- Fix invalid link (#658) [b886136] +- convert utility : Include comments from source (#657) [1077c6d] +- Explain what BDD means [d79e7fb] +- skip race detector test on unsupported platform (#642) [f8ab89d] +- Use Dup2 from golang.org/x/sys/unix instead of syscallDup (#638) [5d53c55] +- Fix missing newline in combined coverage file (#641) [6a07ea2] +- check if a spec is run before returning SpecSummary (#645) [8850000] + +## 1.12.0 + +### Features +- Add module definition (#630) [78916ab] + +## 1.11.0 + +### Features +- Add syscall for riscv64 architecture [f66e896] +- teamcity reporter: output location of test failure as well as test definition (#626) [9869142] +- teamcity reporter: output newline after every service message (#625) [3cfa02d] +- Add support for go module when running `generate` command (#578) [9c89e3f] + +## 1.10.3 + +### Fixes +- Set go_import_path in travis.yml to allow internal packages in forks (#607) [3b721db] +- Add integration test [d90e0dc] +- Fix coverage files combining [e5dde8c] +- A new CLI option: -ginkgo.reportFile (#601) [034fd25] + +## 1.10.2 + +### Fixes +- speed up table entry generateIt() (#609) [5049dc5] +- Fix. Write errors to stderr instead of stdout (#610) [7bb3091] + +## 1.10.1 + +### Fixes +- stack backtrace: fix skipping (#600) [2a4c0bd] + +## 1.10.0 + +### Fixes +- stack backtrace: fix alignment and skipping [66915d6] +- fix typo in documentation [8f97b93] + +## 1.9.0 + +### Features +- Option to print output into report, when tests have passed [0545415] + +### Fixes +- Fixed typos in comments [0ecbc58] +- gofmt code [a7f8bfb] +- Simplify code [7454d00] +- Simplify concatenation, incrementation and function assignment [4825557] +- Avoid unnecessary conversions [9d9403c] +- JUnit: include more detailed information about panic [19cca4b] +- Print help to stdout when the user asks for help [4cb7441] + + +## 1.8.0 + +### New Features +- allow config of the vet flag for `go test` (#562) [3cd45fa] +- Support projects using go modules [d56ee76] + +### Fixes and Minor Improvements +- chore(godoc): fixes typos in Measurement funcs [dbaca8e] +- Optimize focus to avoid allocations [f493786] +- Ensure generated test file names are underscored [505cc35] + +## 1.7.0 + +### New Features +- Add JustAfterEach (#484) [0d4f080] + +### Fixes +- Correctly round suite time in junit reporter [2445fc1] +- Avoid using -i argument to go test for Golang 1.10+ [46bbc26] + +## 1.6.0 + +### New Features +- add --debug flag to emit node output to files (#499) [39febac] + +### Fixes +- fix: for `go vet` to pass [69338ec] +- docs: fix for contributing instructions [7004cb1] +- consolidate and streamline contribution docs (#494) [d848015] +- Make generated Junit file compatible with "Maven Surefire" (#488) [e51bee6] +- all: gofmt [000d317] +- Increase eventually timeout to 30s [c73579c] +- Clarify asynchronous test behavior [294d8f4] +- Travis badge should only show master [26d2143] + +## 1.5.0 5/10/2018 + +### New Features +- Supports go v1.10 (#443, #446, #451) [e873237, 468e89e, e37dbfe, a37f4c0, c0b857d, bca5260, 4177ca8] +- Add a When() synonym for Context() (#386) [747514b, 7484dad, 7354a07, dd826c8] +- Re-add noisySkippings flag [652e15c] +- Allow coverage to be displayed for focused specs (#367) [11459a8] +- Handle -outputdir flag (#364) [228e3a8] +- Handle -coverprofile flag (#355) [43392d5] + +### Fixes +- When using custom reporters register the custom reporters *before* the default reporter. This allows users to see the output of any print statements in their customer reporters. (#365) [8382b23] +- When running a test and calculating the coverage using the `-coverprofile` and `-outputdir` flags, Ginkgo fails with an error if the directory does not exist. This is due to an [issue in go 1.10](https://github.com/golang/go/issues/24588) (#446) [b36a6e0] +- `unfocus` command ignores vendor folder (#459) [e5e551c, c556e43, a3b6351, 9a820dd] +- Ignore packages whose tests are all ignored by go (#456) [7430ca7, 6d8be98] +- Increase the threshold when checking time measurements (#455) [2f714bf, 68f622c] +- Fix race condition in coverage tests (#423) [a5a8ff7, ab9c08b] +- Add an extra new line after reporting spec run completion for test2json [874520d] +- added name name field to junit reported testsuite [ae61c63] +- Do not set the run time of a spec when the dryRun flag is used (#438) [457e2d9, ba8e856] +- Process FWhen and FSpecify when unfocusing (#434) [9008c7b, ee65bd, df87dfe] +- Synchronies the access to the state of specs to avoid race conditions (#430) [7d481bc, ae6829d] +- Added Duration on GinkgoTestDescription (#383) [5f49dad, 528417e, 0747408, 329d7ed] +- Fix Ginkgo stack trace on failure for Specify (#415) [b977ede, 65ca40e, 6c46eb8] +- Update README with Go 1.6+, Golang -> Go (#409) [17f6b97, bc14b66, 20d1598] +- Use fmt.Errorf instead of errors.New(fmt.Sprintf (#401) [a299f56, 44e2eaa] +- Imports in generated code should follow conventions (#398) [0bec0b0, e8536d8] +- Prevent data race error when Recording a benchmark value from multiple go routines (#390) [c0c4881, 7a241e9] +- Replace GOPATH in Environment [4b883f0] + + +## 1.4.0 7/16/2017 + +- `ginkgo` now provides a hint if you accidentally forget to run `ginkgo bootstrap` to generate a `*_suite_test.go` file that actually invokes the Ginkgo test runner. [#345](https://github.com/onsi/ginkgo/pull/345) +- thanks to improvements in `go test -c` `ginkgo` no longer needs to fix Go's compilation output to ensure compilation errors are expressed relative to the CWD. [#357] +- `ginkgo watch -watchRegExp=...` allows you to specify a custom regular expression to watch. Only files matching the regular expression are watched for changes (the default is `\.go$`) [#356] +- `ginkgo` now always emits compilation output. Previously, only failed compilation output was printed out. [#277] +- `ginkgo -requireSuite` now fails the test run if there are `*_test.go` files but `go test` fails to detect any tests. Typically this means you forgot to run `ginkgo bootstrap` to generate a suite file. [#344] +- `ginkgo -timeout=DURATION` allows you to adjust the timeout for the entire test suite (default is 24 hours) [#248] + +## 1.3.0 3/28/2017 + +Improvements: + +- Significantly improved parallel test distribution. Now instead of pre-sharding test cases across workers (which can result in idle workers and poor test performance) Ginkgo uses a shared queue to keep all workers busy until all tests are complete. This improves test-time performance and consistency. +- `Skip(message)` can be used to skip the current test. +- Added `extensions/table` - a Ginkgo DSL for [Table Driven Tests](http://onsi.github.io/ginkgo/#table-driven-tests) +- Add `GinkgoRandomSeed()` - shorthand for `config.GinkgoConfig.RandomSeed` +- Support for retrying flaky tests with `--flakeAttempts` +- `ginkgo ./...` now recurses as you'd expect +- Added `Specify` a synonym for `It` +- Support colorise on Windows +- Broader support for various go compilation flags in the `ginkgo` CLI + +Bug Fixes: + +- Ginkgo tests now fail when you `panic(nil)` (#167) + +## 1.2.0 5/31/2015 + +Improvements + +- `ginkgo -coverpkg` calls down to `go test -coverpkg` (#160) +- `ginkgo -afterSuiteHook COMMAND` invokes the passed-in `COMMAND` after a test suite completes (#152) +- Relaxed requirement for Go 1.4+. `ginkgo` now works with Go v1.3+ (#166) + +## 1.2.0-beta + +Ginkgo now requires Go 1.4+ + +Improvements: + +- Call reporters in reverse order when announcing spec completion -- allows custom reporters to emit output before the default reporter does. +- Improved focus behavior. Now, this: + + ```golang + FDescribe("Some describe", func() { + It("A", func() {}) + + FIt("B", func() {}) + }) + ``` + + will run `B` but *not* `A`. This tends to be a common usage pattern when in the thick of writing and debugging tests. +- When `SIGINT` is received, Ginkgo will emit the contents of the `GinkgoWriter` before running the `AfterSuite`. Useful for debugging stuck tests. +- When `--progress` is set, Ginkgo will write test progress (in particular, Ginkgo will say when it is about to run a BeforeEach, AfterEach, It, etc...) to the `GinkgoWriter`. This is useful for debugging stuck tests and tests that generate many logs. +- Improved output when an error occurs in a setup or teardown block. +- When `--dryRun` is set, Ginkgo will walk the spec tree and emit to its reporter *without* actually running anything. Best paired with `-v` to understand which specs will run in which order. +- Add `By` to help document long `It`s. `By` simply writes to the `GinkgoWriter`. +- Add support for precompiled tests: + - `ginkgo build ` will now compile the package, producing a file named `package.test` + - The compiled `package.test` file can be run directly. This runs the tests in series. + - To run precompiled tests in parallel, you can run: `ginkgo -p package.test` +- Support `bootstrap`ping and `generate`ing [Agouti](http://agouti.org) specs. +- `ginkgo generate` and `ginkgo bootstrap` now honor the package name already defined in a given directory +- The `ginkgo` CLI ignores `SIGQUIT`. Prevents its stack dump from interlacing with the underlying test suite's stack dump. +- The `ginkgo` CLI now compiles tests into a temporary directory instead of the package directory. This necessitates upgrading to Go v1.4+. +- `ginkgo -notify` now works on Linux + +Bug Fixes: + +- If --skipPackages is used and all packages are skipped, Ginkgo should exit 0. +- Fix tempfile leak when running in parallel +- Fix incorrect failure message when a panic occurs during a parallel test run +- Fixed an issue where a pending test within a focused context (or a focused test within a pending context) would skip all other tests. +- Be more consistent about handling SIGTERM as well as SIGINT +- When interrupted while concurrently compiling test suites in the background, Ginkgo now cleans up the compiled artifacts. +- Fixed a long standing bug where `ginkgo -p` would hang if a process spawned by one of the Ginkgo parallel nodes does not exit. (Hooray!) + +## 1.1.0 (8/2/2014) + +No changes, just dropping the beta. + +## 1.1.0-beta (7/22/2014) +New Features: + +- `ginkgo watch` now monitors packages *and their dependencies* for changes. The depth of the dependency tree can be modified with the `-depth` flag. +- Test suites with a programmatic focus (`FIt`, `FDescribe`, etc...) exit with non-zero status code, even when they pass. This allows CI systems to detect accidental commits of focused test suites. +- `ginkgo -p` runs the testsuite in parallel with an auto-detected number of nodes. +- `ginkgo -tags=TAG_LIST` passes a list of tags down to the `go build` command. +- `ginkgo --failFast` aborts the test suite after the first failure. +- `ginkgo generate file_1 file_2` can take multiple file arguments. +- Ginkgo now summarizes any spec failures that occurred at the end of the test run. +- `ginkgo --randomizeSuites` will run tests *suites* in random order using the generated/passed-in seed. + +Improvements: + +- `ginkgo -skipPackage` now takes a comma-separated list of strings. If the *relative path* to a package matches one of the entries in the comma-separated list, that package is skipped. +- `ginkgo --untilItFails` no longer recompiles between attempts. +- Ginkgo now panics when a runnable node (`It`, `BeforeEach`, `JustBeforeEach`, `AfterEach`, `Measure`) is nested within another runnable node. This is always a mistake. Any test suites that panic because of this change should be fixed. + +Bug Fixes: + +- `ginkgo boostrap` and `ginkgo generate` no longer fail when dealing with `hyphen-separated-packages`. +- parallel specs are now better distributed across nodes - fixed a crashing bug where (for example) distributing 11 tests across 7 nodes would panic + +## 1.0.0 (5/24/2014) +New Features: + +- Add `GinkgoParallelNode()` - shorthand for `config.GinkgoConfig.ParallelNode` + +Improvements: + +- When compilation fails, the compilation output is rewritten to present a correct *relative* path. Allows ⌘-clicking in iTerm open the file in your text editor. +- `--untilItFails` and `ginkgo watch` now generate new random seeds between test runs, unless a particular random seed is specified. + +Bug Fixes: + +- `-cover` now generates a correctly combined coverprofile when running with in parallel with multiple `-node`s. +- Print out the contents of the `GinkgoWriter` when `BeforeSuite` or `AfterSuite` fail. +- Fix all remaining race conditions in Ginkgo's test suite. + +## 1.0.0-beta (4/14/2014) +Breaking changes: + +- `thirdparty/gomocktestreporter` is gone. Use `GinkgoT()` instead +- Modified the Reporter interface +- `watch` is now a subcommand, not a flag. + +DSL changes: + +- `BeforeSuite` and `AfterSuite` for setting up and tearing down test suites. +- `AfterSuite` is triggered on interrupt (`^C`) as well as exit. +- `SynchronizedBeforeSuite` and `SynchronizedAfterSuite` for setting up and tearing down singleton resources across parallel nodes. + +CLI changes: + +- `watch` is now a subcommand, not a flag +- `--nodot` flag can be passed to `ginkgo generate` and `ginkgo bootstrap` to avoid dot imports. This explicitly imports all exported identifiers in Ginkgo and Gomega. Refreshing this list can be done by running `ginkgo nodot` +- Additional arguments can be passed to specs. Pass them after the `--` separator +- `--skipPackage` flag takes a regexp and ignores any packages with package names passing said regexp. +- `--trace` flag prints out full stack traces when errors occur, not just the line at which the error occurs. + +Misc: + +- Start using semantic versioning +- Start maintaining changelog + +Major refactor: + +- Pull out Ginkgo's internal to `internal` +- Rename `example` everywhere to `spec` +- Much more! diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/CONTRIBUTING.md b/tests/vendor/github.com/onsi/ginkgo/v2/CONTRIBUTING.md new file mode 100644 index 000000000..80de566a5 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/CONTRIBUTING.md @@ -0,0 +1,15 @@ +# Contributing to Ginkgo + +Your contributions to Ginkgo are essential for its long-term maintenance and improvement. + +- Please **open an issue first** - describe what problem you are trying to solve and give the community a forum for input and feedback ahead of investing time in writing code! +- Ensure adequate test coverage: + - When adding to the Ginkgo library, add unit and/or integration tests (under the `integration` folder). + - When adding to the Ginkgo CLI, note that there are very few unit tests. Please add an integration test. +- Run `make` or: + - Install ginkgo locally via `go install ./...` + - Make sure all the tests succeed via `ginkgo -r -p` + - Vet your changes via `go vet ./...` +- Update the documentation. Ginkgo uses `godoc` comments and documentation in `docs/index.md`. You can run `bundle && bundle exec jekyll serve` in the `docs` directory to preview your changes. + +Thanks for supporting Ginkgo! diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/LICENSE b/tests/vendor/github.com/onsi/ginkgo/v2/LICENSE new file mode 100644 index 000000000..9415ee72c --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2013-2014 Onsi Fakhouri + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/Makefile b/tests/vendor/github.com/onsi/ginkgo/v2/Makefile new file mode 100644 index 000000000..06dff97cd --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/Makefile @@ -0,0 +1,16 @@ +# default task since it's first +.PHONY: all +all: vet test + +.PHONY: test +test: + go run github.com/onsi/ginkgo/v2/ginkgo -r -p -randomize-all -keep-going + +.PHONY: vet +vet: + go vet ./... + +.PHONY: update-deps +update-deps: + go get -u ./... + go mod tidy \ No newline at end of file diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/README.md b/tests/vendor/github.com/onsi/ginkgo/v2/README.md new file mode 100644 index 000000000..e3d0c13cc --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/README.md @@ -0,0 +1,115 @@ +![Ginkgo](https://onsi.github.io/ginkgo/images/ginkgo.png) + +[![test](https://github.com/onsi/ginkgo/actions/workflows/test.yml/badge.svg?branch=master)](https://github.com/onsi/ginkgo/actions?query=workflow%3Atest+branch%3Amaster) | [Ginkgo Docs](https://onsi.github.io/ginkgo/) + +--- + +# Ginkgo + +Ginkgo is a mature testing framework for Go designed to help you write expressive specs. Ginkgo builds on top of Go's `testing` foundation and is complemented by the [Gomega](https://github.com/onsi/gomega) matcher library. Together, Ginkgo and Gomega let you express the intent behind your specs clearly: + +```go +import ( + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" + ... +) + +var _ = Describe("Checking books out of the library", Label("library"), func() { + var library *libraries.Library + var book *books.Book + var valjean *users.User + BeforeEach(func() { + library = libraries.NewClient() + book = &books.Book{ + Title: "Les Miserables", + Author: "Victor Hugo", + } + valjean = users.NewUser("Jean Valjean") + }) + + When("the library has the book in question", func() { + BeforeEach(func(ctx SpecContext) { + Expect(library.Store(ctx, book)).To(Succeed()) + }) + + Context("and the book is available", func() { + It("lends it to the reader", func(ctx SpecContext) { + Expect(valjean.Checkout(ctx, library, "Les Miserables")).To(Succeed()) + Expect(valjean.Books()).To(ContainElement(book)) + Expect(library.UserWithBook(ctx, book)).To(Equal(valjean)) + }, SpecTimeout(time.Second * 5)) + }) + + Context("but the book has already been checked out", func() { + var javert *users.User + BeforeEach(func(ctx SpecContext) { + javert = users.NewUser("Javert") + Expect(javert.Checkout(ctx, library, "Les Miserables")).To(Succeed()) + }) + + It("tells the user", func(ctx SpecContext) { + err := valjean.Checkout(ctx, library, "Les Miserables") + Expect(err).To(MatchError("Les Miserables is currently checked out")) + }, SpecTimeout(time.Second * 5)) + + It("lets the user place a hold and get notified later", func(ctx SpecContext) { + Expect(valjean.Hold(ctx, library, "Les Miserables")).To(Succeed()) + Expect(valjean.Holds(ctx)).To(ContainElement(book)) + + By("when Javert returns the book") + Expect(javert.Return(ctx, library, book)).To(Succeed()) + + By("it eventually informs Valjean") + notification := "Les Miserables is ready for pick up" + Eventually(ctx, valjean.Notifications).Should(ContainElement(notification)) + + Expect(valjean.Checkout(ctx, library, "Les Miserables")).To(Succeed()) + Expect(valjean.Books(ctx)).To(ContainElement(book)) + Expect(valjean.Holds(ctx)).To(BeEmpty()) + }, SpecTimeout(time.Second * 10)) + }) + }) + + When("the library does not have the book in question", func() { + It("tells the reader the book is unavailable", func(ctx SpecContext) { + err := valjean.Checkout(ctx, library, "Les Miserables") + Expect(err).To(MatchError("Les Miserables is not in the library catalog")) + }, SpecTimeout(time.Second * 5)) + }) +}) +``` + +Jump to the [docs](https://onsi.github.io/ginkgo/) to learn more. It's easy to [bootstrap](https://onsi.github.io/ginkgo/#bootstrapping-a-suite) and start writing your [first specs](https://onsi.github.io/ginkgo/#adding-specs-to-a-suite). + +If you have a question, comment, bug report, feature request, etc. please open a [GitHub issue](https://github.com/onsi/ginkgo/issues/new), or visit the [Ginkgo Slack channel](https://app.slack.com/client/T029RQSE6/CQQ50BBNW). + +## Capabilities + +Whether writing basic unit specs, complex integration specs, or even performance specs - Ginkgo gives you an expressive Domain-Specific Language (DSL) that will be familiar to users coming from frameworks such as [Quick](https://github.com/Quick/Quick), [RSpec](https://rspec.info), [Jasmine](https://jasmine.github.io), and [Busted](https://lunarmodules.github.io/busted/). This style of testing is sometimes referred to as "Behavior-Driven Development" (BDD) though Ginkgo's utility extends beyond acceptance-level testing. + +With Ginkgo's DSL you can use nestable [`Describe`, `Context` and `When` container nodes](https://onsi.github.io/ginkgo/#organizing-specs-with-container-nodes) to help you organize your specs. [`BeforeEach` and `AfterEach` setup nodes](https://onsi.github.io/ginkgo/#extracting-common-setup-beforeeach) for setup and cleanup. [`It` and `Specify` subject nodes](https://onsi.github.io/ginkgo/#spec-subjects-it) that hold your assertions. [`BeforeSuite` and `AfterSuite` nodes](https://onsi.github.io/ginkgo/#suite-setup-and-cleanup-beforesuite-and-aftersuite) to prep for and cleanup after a suite... and [much more!](https://onsi.github.io/ginkgo/#writing-specs). + +At runtime, Ginkgo can run your specs in reproducibly [random order](https://onsi.github.io/ginkgo/#spec-randomization) and has sophisticated support for [spec parallelization](https://onsi.github.io/ginkgo/#spec-parallelization). In fact, running specs in parallel is as easy as + +```bash +ginkgo -p +``` + +By following [established patterns for writing parallel specs](https://onsi.github.io/ginkgo/#patterns-for-parallel-integration-specs) you can build even large, complex integration suites that parallelize cleanly and run performantly. And you don't have to worry about your spec suite hanging or leaving a mess behind - Ginkgo provides a per-node `context.Context` and the capability to interrupt the spec after a set period of time - and then clean up. + +As your suites grow Ginkgo helps you keep your specs organized with [labels](https://onsi.github.io/ginkgo/#spec-labels) and lets you easily run [subsets of specs](https://onsi.github.io/ginkgo/#filtering-specs), either [programmatically](https://onsi.github.io/ginkgo/#focused-specs) or on the [command line](https://onsi.github.io/ginkgo/#combining-filters). And Ginkgo's reporting infrastructure generates machine-readable output in a [variety of formats](https://onsi.github.io/ginkgo/#generating-machine-readable-reports) _and_ allows you to build your own [custom reporting infrastructure](https://onsi.github.io/ginkgo/#generating-reports-programmatically). + +Ginkgo ships with `ginkgo`, a [command line tool](https://onsi.github.io/ginkgo/#ginkgo-cli-overview) with support for generating, running, filtering, and profiling Ginkgo suites. You can even have Ginkgo automatically run your specs when it detects a change with `ginkgo watch`, enabling rapid feedback loops during test-driven development. + +And that's just Ginkgo! [Gomega](https://onsi.github.io/gomega/) brings a rich, mature, family of [assertions and matchers](https://onsi.github.io/gomega/#provided-matchers) to your suites. With Gomega you can easily mix [synchronous and asynchronous assertions](https://onsi.github.io/ginkgo/#patterns-for-asynchronous-testing) in your specs. You can even build your own set of expressive domain-specific matchers quickly and easily by composing Gomega's [existing building blocks](https://onsi.github.io/ginkgo/#building-custom-matchers). + +Happy Testing! + +## License + +Ginkgo is MIT-Licensed + +## Contributing + +See [CONTRIBUTING.md](CONTRIBUTING.md) diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/RELEASING.md b/tests/vendor/github.com/onsi/ginkgo/v2/RELEASING.md new file mode 100644 index 000000000..363815d7c --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/RELEASING.md @@ -0,0 +1,23 @@ +A Ginkgo release is a tagged git sha and a GitHub release. To cut a release: + +1. Ensure CHANGELOG.md is up to date. + - Use + ```bash + LAST_VERSION=$(git tag --sort=version:refname | tail -n1) + CHANGES=$(git log --pretty=format:'- %s [%h]' HEAD...$LAST_VERSION) + echo -e "## NEXT\n\n$CHANGES\n\n### Features\n\n### Fixes\n\n### Maintenance\n\n$(cat CHANGELOG.md)" > CHANGELOG.md + ``` + to update the changelog + - Categorize the changes into + - Breaking Changes (requires a major version) + - New Features (minor version) + - Fixes (fix version) + - Maintenance (which in general should not be mentioned in `CHANGELOG.md` as they have no user impact) +1. Update `VERSION` in `types/version.go` +1. Commit, push, and release: + ``` + git commit -m "vM.m.p" + git push + gh release create "vM.m.p" + git fetch --tags origin master + ``` \ No newline at end of file diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/config/deprecated.go b/tests/vendor/github.com/onsi/ginkgo/v2/config/deprecated.go new file mode 100644 index 000000000..a61021d08 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/config/deprecated.go @@ -0,0 +1,69 @@ +package config + +// GinkgoConfigType has been deprecated and its equivalent now lives in +// the types package. You can no longer access Ginkgo configuration from the config +// package. Instead use the DSL's GinkgoConfiguration() function to get copies of the +// current configuration +// +// GinkgoConfigType is still here so custom V1 reporters do not result in a compilation error +// It will be removed in a future minor release of Ginkgo +type GinkgoConfigType = DeprecatedGinkgoConfigType +type DeprecatedGinkgoConfigType struct { + RandomSeed int64 + RandomizeAllSpecs bool + RegexScansFilePath bool + FocusStrings []string + SkipStrings []string + SkipMeasurements bool + FailOnPending bool + FailFast bool + FlakeAttempts int + EmitSpecProgress bool + DryRun bool + DebugParallel bool + + ParallelNode int + ParallelTotal int + SyncHost string + StreamHost string +} + +// DefaultReporterConfigType has been deprecated and its equivalent now lives in +// the types package. You can no longer access Ginkgo configuration from the config +// package. Instead use the DSL's GinkgoConfiguration() function to get copies of the +// current configuration +// +// DefaultReporterConfigType is still here so custom V1 reporters do not result in a compilation error +// It will be removed in a future minor release of Ginkgo +type DefaultReporterConfigType = DeprecatedDefaultReporterConfigType +type DeprecatedDefaultReporterConfigType struct { + NoColor bool + SlowSpecThreshold float64 + NoisyPendings bool + NoisySkippings bool + Succinct bool + Verbose bool + FullTrace bool + ReportPassed bool + ReportFile string +} + +// Sadly there is no way to gracefully deprecate access to these global config variables. +// Users who need access to Ginkgo's configuration should use the DSL's GinkgoConfiguration() method +// These new unwieldy type names exist to give users a hint when they try to compile and the compilation fails +type GinkgoConfigIsNoLongerAccessibleFromTheConfigPackageUseTheDSLsGinkgoConfigurationFunctionInstead struct{} + +// Sadly there is no way to gracefully deprecate access to these global config variables. +// Users who need access to Ginkgo's configuration should use the DSL's GinkgoConfiguration() method +// These new unwieldy type names exist to give users a hint when they try to compile and the compilation fails +var GinkgoConfig = GinkgoConfigIsNoLongerAccessibleFromTheConfigPackageUseTheDSLsGinkgoConfigurationFunctionInstead{} + +// Sadly there is no way to gracefully deprecate access to these global config variables. +// Users who need access to Ginkgo's configuration should use the DSL's GinkgoConfiguration() method +// These new unwieldy type names exist to give users a hint when they try to compile and the compilation fails +type DefaultReporterConfigIsNoLongerAccessibleFromTheConfigPackageUseTheDSLsGinkgoConfigurationFunctionInstead struct{} + +// Sadly there is no way to gracefully deprecate access to these global config variables. +// Users who need access to Ginkgo's configuration should use the DSL's GinkgoConfiguration() method +// These new unwieldy type names exist to give users a hint when they try to compile and the compilation fails +var DefaultReporterConfig = DefaultReporterConfigIsNoLongerAccessibleFromTheConfigPackageUseTheDSLsGinkgoConfigurationFunctionInstead{} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/core_dsl.go b/tests/vendor/github.com/onsi/ginkgo/v2/core_dsl.go new file mode 100644 index 000000000..d027bdff9 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/core_dsl.go @@ -0,0 +1,847 @@ +/* +Ginkgo is a testing framework for Go designed to help you write expressive tests. +https://github.com/onsi/ginkgo +MIT-Licensed + +The godoc documentation outlines Ginkgo's API. Since Ginkgo is a Domain-Specific Language it is important to +build a mental model for Ginkgo - the narrative documentation at https://onsi.github.io/ginkgo/ is designed to help you do that. +You should start there - even a brief skim will be helpful. At minimum you should skim through the https://onsi.github.io/ginkgo/#getting-started chapter. + +Ginkgo's is best paired with the Gomega matcher library: https://github.com/onsi/gomega + +You can run Ginkgo specs with go test - however we recommend using the ginkgo cli. It enables functionality +that go test does not (especially running suites in parallel). You can learn more at https://onsi.github.io/ginkgo/#ginkgo-cli-overview +or by running 'ginkgo help'. +*/ +package ginkgo + +import ( + "fmt" + "io" + "os" + "path/filepath" + "strings" + + "github.com/go-logr/logr" + "github.com/onsi/ginkgo/v2/formatter" + "github.com/onsi/ginkgo/v2/internal" + "github.com/onsi/ginkgo/v2/internal/global" + "github.com/onsi/ginkgo/v2/internal/interrupt_handler" + "github.com/onsi/ginkgo/v2/internal/parallel_support" + "github.com/onsi/ginkgo/v2/reporters" + "github.com/onsi/ginkgo/v2/types" +) + +const GINKGO_VERSION = types.VERSION + +var flagSet types.GinkgoFlagSet +var deprecationTracker = types.NewDeprecationTracker() +var suiteConfig = types.NewDefaultSuiteConfig() +var reporterConfig = types.NewDefaultReporterConfig() +var suiteDidRun = false +var outputInterceptor internal.OutputInterceptor +var client parallel_support.Client + +func init() { + var err error + flagSet, err = types.BuildTestSuiteFlagSet(&suiteConfig, &reporterConfig) + exitIfErr(err) + writer := internal.NewWriter(os.Stdout) + GinkgoWriter = writer + GinkgoLogr = internal.GinkgoLogrFunc(writer) +} + +func exitIfErr(err error) { + if err != nil { + if outputInterceptor != nil { + outputInterceptor.Shutdown() + } + if client != nil { + client.Close() + } + fmt.Fprintln(formatter.ColorableStdErr, err.Error()) + os.Exit(1) + } +} + +func exitIfErrors(errors []error) { + if len(errors) > 0 { + if outputInterceptor != nil { + outputInterceptor.Shutdown() + } + if client != nil { + client.Close() + } + for _, err := range errors { + fmt.Fprintln(formatter.ColorableStdErr, err.Error()) + } + os.Exit(1) + } +} + +// The interface implemented by GinkgoWriter +type GinkgoWriterInterface interface { + io.Writer + + Print(a ...any) + Printf(format string, a ...any) + Println(a ...any) + + TeeTo(writer io.Writer) + ClearTeeWriters() +} + +/* +SpecContext is the context object passed into nodes that are subject to a timeout or need to be notified of an interrupt. It implements the standard context.Context interface but also contains additional helpers to provide an extensibility point for Ginkgo. (As an example, Gomega's Eventually can use the methods defined on SpecContext to provide deeper integration with Ginkgo). + +You can do anything with SpecContext that you do with a typical context.Context including wrapping it with any of the context.With* methods. + +Ginkgo will cancel the SpecContext when a node is interrupted (e.g. by the user sending an interrupt signal) or when a node has exceeded its allowed run-time. Note, however, that even in cases where a node has a deadline, SpecContext will not return a deadline via .Deadline(). This is because Ginkgo does not use a WithDeadline() context to model node deadlines as Ginkgo needs control over the precise timing of the context cancellation to ensure it can provide an accurate progress report at the moment of cancellation. +*/ +type SpecContext = internal.SpecContext + +/* +GinkgoWriter implements a GinkgoWriterInterface and io.Writer + +When running in verbose mode (ginkgo -v) any writes to GinkgoWriter will be immediately printed +to stdout. Otherwise, GinkgoWriter will buffer any writes produced during the current test and flush them to screen +only if the current test fails. + +GinkgoWriter also provides convenience Print, Printf and Println methods and allows you to tee to a custom writer via GinkgoWriter.TeeTo(writer). +Writes to GinkgoWriter are immediately sent to any registered TeeTo() writers. You can unregister all TeeTo() Writers with GinkgoWriter.ClearTeeWriters() + +You can learn more at https://onsi.github.io/ginkgo/#logging-output +*/ +var GinkgoWriter GinkgoWriterInterface + +/* +GinkgoLogr is a logr.Logger that writes to GinkgoWriter +*/ +var GinkgoLogr logr.Logger + +// The interface by which Ginkgo receives *testing.T +type GinkgoTestingT interface { + Fail() +} + +/* +GinkgoConfiguration returns the configuration of the current suite. + +The first return value is the SuiteConfig which controls aspects of how the suite runs, +the second return value is the ReporterConfig which controls aspects of how Ginkgo's default +reporter emits output. + +Mutating the returned configurations has no effect. To reconfigure Ginkgo programmatically you need +to pass in your mutated copies into RunSpecs(). + +You can learn more at https://onsi.github.io/ginkgo/#overriding-ginkgos-command-line-configuration-in-the-suite +*/ +func GinkgoConfiguration() (types.SuiteConfig, types.ReporterConfig) { + return suiteConfig, reporterConfig +} + +/* +GinkgoRandomSeed returns the seed used to randomize spec execution order. It is +useful for seeding your own pseudorandom number generators to ensure +consistent executions from run to run, where your tests contain variability (for +example, when selecting random spec data). + +You can learn more at https://onsi.github.io/ginkgo/#spec-randomization +*/ +func GinkgoRandomSeed() int64 { + return suiteConfig.RandomSeed +} + +/* +GinkgoParallelProcess returns the parallel process number for the current ginkgo process +The process number is 1-indexed. You can use GinkgoParallelProcess() to shard access to shared +resources across your suites. You can learn more about patterns for sharding at https://onsi.github.io/ginkgo/#patterns-for-parallel-integration-specs + +For more on how specs are parallelized in Ginkgo, see http://onsi.github.io/ginkgo/#spec-parallelization +*/ +func GinkgoParallelProcess() int { + return suiteConfig.ParallelProcess +} + +/* +GinkgoHelper marks the function it's called in as a test helper. When a failure occurs inside a helper function, Ginkgo will skip the helper when analyzing the stack trace to identify where the failure occurred. + +This is an alternative, simpler, mechanism to passing in a skip offset when calling Fail or using Gomega. +*/ +func GinkgoHelper() { + types.MarkAsHelper(1) +} + +/* +GinkgoLabelFilter() returns the label filter configured for this suite via `--label-filter`. + +You can use this to manually check if a set of labels would satisfy the filter via: + + if (Label("cat", "dog").MatchesLabelFilter(GinkgoLabelFilter())) { + //... + } +*/ +func GinkgoLabelFilter() string { + suiteConfig, _ := GinkgoConfiguration() + return suiteConfig.LabelFilter +} + +/* +PauseOutputInterception() pauses Ginkgo's output interception. This is only relevant +when running in parallel and output to stdout/stderr is being intercepted. You generally +don't need to call this function - however there are cases when Ginkgo's output interception +mechanisms can interfere with external processes launched by the test process. + +In particular, if an external process is launched that has cmd.Stdout/cmd.Stderr set to os.Stdout/os.Stderr +then Ginkgo's output interceptor will hang. To circumvent this, set cmd.Stdout/cmd.Stderr to GinkgoWriter. +If, for some reason, you aren't able to do that, you can PauseOutputInterception() before starting the process +then ResumeOutputInterception() after starting it. + +Note that PauseOutputInterception() does not cause stdout writes to print to the console - +this simply stops intercepting and storing stdout writes to an internal buffer. +*/ +func PauseOutputInterception() { + if outputInterceptor == nil { + return + } + outputInterceptor.PauseIntercepting() +} + +// ResumeOutputInterception() - see docs for PauseOutputInterception() +func ResumeOutputInterception() { + if outputInterceptor == nil { + return + } + outputInterceptor.ResumeIntercepting() +} + +/* +RunSpecs is the entry point for the Ginkgo spec runner. + +You must call this within a Golang testing TestX(t *testing.T) function. +If you bootstrapped your suite with "ginkgo bootstrap" this is already +done for you. + +Ginkgo is typically configured via command-line flags. This configuration +can be overridden, however, and passed into RunSpecs as optional arguments: + + func TestMySuite(t *testing.T) { + RegisterFailHandler(gomega.Fail) + // fetch the current config + suiteConfig, reporterConfig := GinkgoConfiguration() + // adjust it + suiteConfig.SkipStrings = []string{"NEVER-RUN"} + reporterConfig.FullTrace = true + // pass it in to RunSpecs + RunSpecs(t, "My Suite", suiteConfig, reporterConfig) + } + +Note that some configuration changes can lead to undefined behavior. For example, +you should not change ParallelProcess or ParallelTotal as the Ginkgo CLI is responsible +for setting these and orchestrating parallel specs across the parallel processes. See http://onsi.github.io/ginkgo/#spec-parallelization +for more on how specs are parallelized in Ginkgo. + +You can also pass suite-level Label() decorators to RunSpecs. The passed-in labels will apply to all specs in the suite. +*/ +func RunSpecs(t GinkgoTestingT, description string, args ...any) bool { + if suiteDidRun { + exitIfErr(types.GinkgoErrors.RerunningSuite()) + } + suiteDidRun = true + err := global.PushClone() + if err != nil { + exitIfErr(err) + } + defer global.PopClone() + + suiteLabels := extractSuiteConfiguration(args) + + var reporter reporters.Reporter + if suiteConfig.ParallelTotal == 1 { + reporter = reporters.NewDefaultReporter(reporterConfig, formatter.ColorableStdOut) + outputInterceptor = internal.NoopOutputInterceptor{} + client = nil + } else { + reporter = reporters.NoopReporter{} + switch strings.ToLower(suiteConfig.OutputInterceptorMode) { + case "swap": + outputInterceptor = internal.NewOSGlobalReassigningOutputInterceptor() + case "none": + outputInterceptor = internal.NoopOutputInterceptor{} + default: + outputInterceptor = internal.NewOutputInterceptor() + } + client = parallel_support.NewClient(suiteConfig.ParallelHost) + if !client.Connect() { + client = nil + exitIfErr(types.GinkgoErrors.UnreachableParallelHost(suiteConfig.ParallelHost)) + } + defer client.Close() + } + + writer := GinkgoWriter.(*internal.Writer) + if reporterConfig.Verbosity().GTE(types.VerbosityLevelVerbose) && suiteConfig.ParallelTotal == 1 { + writer.SetMode(internal.WriterModeStreamAndBuffer) + } else { + writer.SetMode(internal.WriterModeBufferOnly) + } + + if reporterConfig.WillGenerateReport() { + registerReportAfterSuiteNodeForAutogeneratedReports(reporterConfig) + } + + err = global.Suite.BuildTree() + exitIfErr(err) + suitePath, err := getwd() + exitIfErr(err) + suitePath, err = filepath.Abs(suitePath) + exitIfErr(err) + + passed, hasFocusedTests := global.Suite.Run(description, suiteLabels, suitePath, global.Failer, reporter, writer, outputInterceptor, interrupt_handler.NewInterruptHandler(client), client, internal.RegisterForProgressSignal, suiteConfig) + outputInterceptor.Shutdown() + + flagSet.ValidateDeprecations(deprecationTracker) + if deprecationTracker.DidTrackDeprecations() { + fmt.Fprintln(formatter.ColorableStdErr, deprecationTracker.DeprecationsReport()) + } + + if !passed { + t.Fail() + } + + if passed && hasFocusedTests && strings.TrimSpace(os.Getenv("GINKGO_EDITOR_INTEGRATION")) == "" { + fmt.Println("PASS | FOCUSED") + os.Exit(types.GINKGO_FOCUS_EXIT_CODE) + } + return passed +} + +func extractSuiteConfiguration(args []any) Labels { + suiteLabels := Labels{} + configErrors := []error{} + for _, arg := range args { + switch arg := arg.(type) { + case types.SuiteConfig: + suiteConfig = arg + case types.ReporterConfig: + reporterConfig = arg + case Labels: + suiteLabels = append(suiteLabels, arg...) + default: + configErrors = append(configErrors, types.GinkgoErrors.UnknownTypePassedToRunSpecs(arg)) + } + } + exitIfErrors(configErrors) + + configErrors = types.VetConfig(flagSet, suiteConfig, reporterConfig) + if len(configErrors) > 0 { + fmt.Fprintf(formatter.ColorableStdErr, formatter.F("{{red}}Ginkgo detected configuration issues:{{/}}\n")) + for _, err := range configErrors { + fmt.Fprintf(formatter.ColorableStdErr, err.Error()) + } + os.Exit(1) + } + + return suiteLabels +} + +func getwd() (string, error) { + if !strings.EqualFold(os.Getenv("GINKGO_PRESERVE_CACHE"), "true") { + // Getwd calls os.Getenv("PWD"), which breaks test caching if the cache + // is shared between two different directories with the same test code. + return os.Getwd() + } + return "", nil +} + +/* +PreviewSpecs walks the testing tree and produces a report without actually invoking the specs. +See http://onsi.github.io/ginkgo/#previewing-specs for more information. +*/ +func PreviewSpecs(description string, args ...any) Report { + err := global.PushClone() + if err != nil { + exitIfErr(err) + } + defer global.PopClone() + + suiteLabels := extractSuiteConfiguration(args) + priorDryRun, priorParallelTotal, priorParallelProcess := suiteConfig.DryRun, suiteConfig.ParallelTotal, suiteConfig.ParallelProcess + suiteConfig.DryRun, suiteConfig.ParallelTotal, suiteConfig.ParallelProcess = true, 1, 1 + defer func() { + suiteConfig.DryRun, suiteConfig.ParallelTotal, suiteConfig.ParallelProcess = priorDryRun, priorParallelTotal, priorParallelProcess + }() + reporter := reporters.NoopReporter{} + outputInterceptor = internal.NoopOutputInterceptor{} + client = nil + writer := GinkgoWriter.(*internal.Writer) + + err = global.Suite.BuildTree() + exitIfErr(err) + suitePath, err := getwd() + exitIfErr(err) + suitePath, err = filepath.Abs(suitePath) + exitIfErr(err) + + global.Suite.Run(description, suiteLabels, suitePath, global.Failer, reporter, writer, outputInterceptor, interrupt_handler.NewInterruptHandler(client), client, internal.RegisterForProgressSignal, suiteConfig) + + return global.Suite.GetPreviewReport() +} + +/* +Skip instructs Ginkgo to skip the current spec + +You can call Skip in any Setup or Subject node closure. + +For more on how to filter specs in Ginkgo see https://onsi.github.io/ginkgo/#filtering-specs +*/ +func Skip(message string, callerSkip ...int) { + skip := 0 + if len(callerSkip) > 0 { + skip = callerSkip[0] + } + cl := types.NewCodeLocationWithStackTrace(skip + 1) + global.Failer.Skip(message, cl) + panic(types.GinkgoErrors.UncaughtGinkgoPanic(cl)) +} + +/* +Fail notifies Ginkgo that the current spec has failed. (Gomega will call Fail for you automatically when an assertion fails.) + +Under the hood, Fail panics to end execution of the current spec. Ginkgo will catch this panic and proceed with +the subsequent spec. If you call Fail, or make an assertion, within a goroutine launched by your spec you must +add defer GinkgoRecover() to the goroutine to catch the panic emitted by Fail. + +You can call Fail in any Setup or Subject node closure. + +You can learn more about how Ginkgo manages failures here: https://onsi.github.io/ginkgo/#mental-model-how-ginkgo-handles-failure +*/ +func Fail(message string, callerSkip ...int) { + skip := 0 + if len(callerSkip) > 0 { + skip = callerSkip[0] + } + + cl := types.NewCodeLocationWithStackTrace(skip + 1) + global.Failer.Fail(message, cl) + panic(types.GinkgoErrors.UncaughtGinkgoPanic(cl)) +} + +/* +AbortSuite instructs Ginkgo to fail the current spec and skip all subsequent specs, thereby aborting the suite. + +You can call AbortSuite in any Setup or Subject node closure. + +You can learn more about how Ginkgo handles suite interruptions here: https://onsi.github.io/ginkgo/#interrupting-aborting-and-timing-out-suites +*/ +func AbortSuite(message string, callerSkip ...int) { + skip := 0 + if len(callerSkip) > 0 { + skip = callerSkip[0] + } + + cl := types.NewCodeLocationWithStackTrace(skip + 1) + global.Failer.AbortSuite(message, cl) + panic(types.GinkgoErrors.UncaughtGinkgoPanic(cl)) +} + +/* +ignorablePanic is used by Gomega to signal to GinkgoRecover that Goemga is handling +the error associated with this panic. It i used when Eventually/Consistently are passed a func(g Gomega) and the resulting function launches a goroutines that makes a failed assertion. That failed assertion is registered by Gomega and then panics. Ordinarily the panic is captured by Gomega. In the case of a goroutine Gomega can't capture the panic - so we piggy back on GinkgoRecover so users have a single defer GinkgoRecover() pattern to follow. To do that we need to tell Ginkgo to ignore this panic and not register it as a panic on the global Failer. +*/ +type ignorablePanic interface{ GinkgoRecoverShouldIgnoreThisPanic() } + +/* +GinkgoRecover should be deferred at the top of any spawned goroutine that (may) call `Fail` +Since Gomega assertions call fail, you should throw a `defer GinkgoRecover()` at the top of any goroutine that +calls out to Gomega + +Here's why: Ginkgo's `Fail` method records the failure and then panics to prevent +further assertions from running. This panic must be recovered. Normally, Ginkgo recovers the panic for you, +however if a panic originates on a goroutine *launched* from one of your specs there's no +way for Ginkgo to rescue the panic. To do this, you must remember to `defer GinkgoRecover()` at the top of such a goroutine. + +You can learn more about how Ginkgo manages failures here: https://onsi.github.io/ginkgo/#mental-model-how-ginkgo-handles-failure +*/ +func GinkgoRecover() { + e := recover() + if e != nil { + if _, ok := e.(ignorablePanic); ok { + return + } + global.Failer.Panic(types.NewCodeLocationWithStackTrace(1), e) + } +} + +// pushNode is used by the various test construction DSL methods to push nodes onto the suite +// it handles returned errors, emits a detailed error message to help the user learn what they may have done wrong, then exits +func pushNode(node internal.Node, errors []error) bool { + exitIfErrors(errors) + exitIfErr(global.Suite.PushNode(node)) + return true +} + +/* +Describe nodes are Container nodes that allow you to organize your specs. A Describe node's closure can contain any number of +Setup nodes (e.g. BeforeEach, AfterEach, JustBeforeEach), and Subject nodes (i.e. It). + +Context and When nodes are aliases for Describe - use whichever gives your suite a better narrative flow. It is idomatic +to Describe the behavior of an object or function and, within that Describe, outline a number of Contexts and Whens. + +You can learn more at https://onsi.github.io/ginkgo/#organizing-specs-with-container-nodes +In addition, container nodes can be decorated with a variety of decorators. You can learn more here: https://onsi.github.io/ginkgo/#decorator-reference +*/ +func Describe(text string, args ...any) bool { + return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeContainer, text, args...)) +} + +/* +FDescribe focuses specs within the Describe block. +*/ +func FDescribe(text string, args ...any) bool { + args = append(args, internal.Focus) + return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeContainer, text, args...)) +} + +/* +PDescribe marks specs within the Describe block as pending. +*/ +func PDescribe(text string, args ...any) bool { + args = append(args, internal.Pending) + return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeContainer, text, args...)) +} + +/* +XDescribe marks specs within the Describe block as pending. + +XDescribe is an alias for PDescribe +*/ +var XDescribe = PDescribe + +/* Context is an alias for Describe - it generates the exact same kind of Container node */ +var Context, FContext, PContext, XContext = Describe, FDescribe, PDescribe, XDescribe + +/* When is an alias for Describe - it generates the exact same kind of Container node */ +func When(text string, args ...any) bool { + return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeContainer, "when "+text, args...)) +} + +/* When is an alias for Describe - it generates the exact same kind of Container node */ +func FWhen(text string, args ...any) bool { + args = append(args, internal.Focus) + return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeContainer, "when "+text, args...)) +} + +/* When is an alias for Describe - it generates the exact same kind of Container node */ +func PWhen(text string, args ...any) bool { + args = append(args, internal.Pending) + return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeContainer, "when "+text, args...)) +} + +var XWhen = PWhen + +/* +It nodes are Subject nodes that contain your spec code and assertions. + +Each It node corresponds to an individual Ginkgo spec. You cannot nest any other Ginkgo nodes within an It node's closure. + +You can pass It nodes bare functions (func() {}) or functions that receive a SpecContext or context.Context: func(ctx SpecContext) {} and func (ctx context.Context) {}. If the function takes a context then the It is deemed interruptible and Ginkgo will cancel the context in the event of a timeout (configured via the SpecTimeout() or NodeTimeout() decorators) or of an interrupt signal. + +You can learn more at https://onsi.github.io/ginkgo/#spec-subjects-it +In addition, subject nodes can be decorated with a variety of decorators. You can learn more here: https://onsi.github.io/ginkgo/#decorator-reference +*/ +func It(text string, args ...any) bool { + return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeIt, text, args...)) +} + +/* +FIt allows you to focus an individual It. +*/ +func FIt(text string, args ...any) bool { + args = append(args, internal.Focus) + return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeIt, text, args...)) +} + +/* +PIt allows you to mark an individual It as pending. +*/ +func PIt(text string, args ...any) bool { + args = append(args, internal.Pending) + return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeIt, text, args...)) +} + +/* +XIt allows you to mark an individual It as pending. + +XIt is an alias for PIt +*/ +var XIt = PIt + +/* +Specify is an alias for It - it can allow for more natural wording in some context. +*/ +var Specify, FSpecify, PSpecify, XSpecify = It, FIt, PIt, XIt + +/* +By allows you to better document complex Specs. + +Generally you should try to keep your Its short and to the point. This is not always possible, however, +especially in the context of integration tests that capture complex or lengthy workflows. + +By allows you to document such flows. By may be called within a Setup or Subject node (It, BeforeEach, etc...) +and will simply log the passed in text to the GinkgoWriter. If By is handed a function it will immediately run the function. + +By will also generate and attach a ReportEntry to the spec. This will ensure that By annotations appear in Ginkgo's machine-readable reports. + +Note that By does not generate a new Ginkgo node - rather it is simply syntactic sugar around GinkgoWriter and AddReportEntry +You can learn more about By here: https://onsi.github.io/ginkgo/#documenting-complex-specs-by +*/ +func By(text string, callback ...func()) { + exitIfErr(global.Suite.By(text, callback...)) +} + +/* +BeforeSuite nodes are suite-level Setup nodes that run just once before any specs are run. +When running in parallel, each parallel process will call BeforeSuite. + +You may only register *one* BeforeSuite handler per test suite. You typically do so in your bootstrap file at the top level. + +BeforeSuite can take a func() body, or an interruptible func(SpecContext)/func(context.Context) body. + +You cannot nest any other Ginkgo nodes within a BeforeSuite node's closure. +You can learn more here: https://onsi.github.io/ginkgo/#suite-setup-and-cleanup-beforesuite-and-aftersuite +*/ +func BeforeSuite(body any, args ...any) bool { + combinedArgs := []any{body} + combinedArgs = append(combinedArgs, args...) + return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeBeforeSuite, "", combinedArgs...)) +} + +/* +AfterSuite nodes are suite-level Setup nodes run after all specs have finished - regardless of whether specs have passed or failed. +AfterSuite node closures always run, even if Ginkgo receives an interrupt signal (^C), in order to ensure cleanup occurs. + +When running in parallel, each parallel process will call AfterSuite. + +You may only register *one* AfterSuite handler per test suite. You typically do so in your bootstrap file at the top level. + +AfterSuite can take a func() body, or an interruptible func(SpecContext)/func(context.Context) body. + +You cannot nest any other Ginkgo nodes within an AfterSuite node's closure. +You can learn more here: https://onsi.github.io/ginkgo/#suite-setup-and-cleanup-beforesuite-and-aftersuite +*/ +func AfterSuite(body any, args ...any) bool { + combinedArgs := []any{body} + combinedArgs = append(combinedArgs, args...) + return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeAfterSuite, "", combinedArgs...)) +} + +/* +SynchronizedBeforeSuite nodes allow you to perform some of the suite setup just once - on parallel process #1 - and then pass information +from that setup to the rest of the suite setup on all processes. This is useful for performing expensive or singleton setup once, then passing +information from that setup to all parallel processes. + +SynchronizedBeforeSuite accomplishes this by taking *two* function arguments and passing data between them. +The first function is only run on parallel process #1. The second is run on all processes, but *only* after the first function completes successfully. The functions have the following signatures: + +The first function (which only runs on process #1) can have any of the following the signatures: + + func() + func(ctx context.Context) + func(ctx SpecContext) + func() []byte + func(ctx context.Context) []byte + func(ctx SpecContext) []byte + +The byte array returned by the first function (if present) is then passed to the second function, which can have any of the following signature: + + func() + func(ctx context.Context) + func(ctx SpecContext) + func(data []byte) + func(ctx context.Context, data []byte) + func(ctx SpecContext, data []byte) + +If either function receives a context.Context/SpecContext it is considered interruptible. + +You cannot nest any other Ginkgo nodes within an SynchronizedBeforeSuite node's closure. +You can learn more, and see some examples, here: https://onsi.github.io/ginkgo/#parallel-suite-setup-and-cleanup-synchronizedbeforesuite-and-synchronizedaftersuite +*/ +func SynchronizedBeforeSuite(process1Body any, allProcessBody any, args ...any) bool { + combinedArgs := []any{process1Body, allProcessBody} + combinedArgs = append(combinedArgs, args...) + + return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeSynchronizedBeforeSuite, "", combinedArgs...)) +} + +/* +SynchronizedAfterSuite nodes complement the SynchronizedBeforeSuite nodes in solving the problem of splitting clean up into a piece that runs on all processes +and a piece that must only run once - on process #1. + +SynchronizedAfterSuite accomplishes this by taking *two* function arguments. The first runs on all processes. The second runs only on parallel process #1 +and *only* after all other processes have finished and exited. This ensures that process #1, and any resources it is managing, remain alive until +all other processes are finished. These two functions can be bare functions (func()) or interruptible (func(context.Context)/func(SpecContext)) + +Note that you can also use DeferCleanup() in SynchronizedBeforeSuite to accomplish similar results. + +You cannot nest any other Ginkgo nodes within an SynchronizedAfterSuite node's closure. +You can learn more, and see some examples, here: https://onsi.github.io/ginkgo/#parallel-suite-setup-and-cleanup-synchronizedbeforesuite-and-synchronizedaftersuite +*/ +func SynchronizedAfterSuite(allProcessBody any, process1Body any, args ...any) bool { + combinedArgs := []any{allProcessBody, process1Body} + combinedArgs = append(combinedArgs, args...) + + return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeSynchronizedAfterSuite, "", combinedArgs...)) +} + +/* +BeforeEach nodes are Setup nodes whose closures run before It node closures. When multiple BeforeEach nodes +are defined in nested Container nodes the outermost BeforeEach node closures are run first. + +BeforeEach can take a func() body, or an interruptible func(SpecContext)/func(context.Context) body. + +You cannot nest any other Ginkgo nodes within a BeforeEach node's closure. +You can learn more here: https://onsi.github.io/ginkgo/#extracting-common-setup-beforeeach +*/ +func BeforeEach(args ...any) bool { + return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeBeforeEach, "", args...)) +} + +/* +JustBeforeEach nodes are similar to BeforeEach nodes, however they are guaranteed to run *after* all BeforeEach node closures - just before the It node closure. +This can allow you to separate configuration from creation of resources for a spec. + +JustBeforeEach can take a func() body, or an interruptible func(SpecContext)/func(context.Context) body. + +You cannot nest any other Ginkgo nodes within a JustBeforeEach node's closure. +You can learn more and see some examples here: https://onsi.github.io/ginkgo/#separating-creation-and-configuration-justbeforeeach +*/ +func JustBeforeEach(args ...any) bool { + return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeJustBeforeEach, "", args...)) +} + +/* +AfterEach nodes are Setup nodes whose closures run after It node closures. When multiple AfterEach nodes +are defined in nested Container nodes the innermost AfterEach node closures are run first. + +Note that you can also use DeferCleanup() in other Setup or Subject nodes to accomplish similar results. + +AfterEach can take a func() body, or an interruptible func(SpecContext)/func(context.Context) body. + +You cannot nest any other Ginkgo nodes within an AfterEach node's closure. +You can learn more here: https://onsi.github.io/ginkgo/#spec-cleanup-aftereach-and-defercleanup +*/ +func AfterEach(args ...any) bool { + return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeAfterEach, "", args...)) +} + +/* +JustAfterEach nodes are similar to AfterEach nodes, however they are guaranteed to run *before* all AfterEach node closures - just after the It node closure. This can allow you to separate diagnostics collection from teardown for a spec. + +JustAfterEach can take a func() body, or an interruptible func(SpecContext)/func(context.Context) body. + +You cannot nest any other Ginkgo nodes within a JustAfterEach node's closure. +You can learn more and see some examples here: https://onsi.github.io/ginkgo/#separating-diagnostics-collection-and-teardown-justaftereach +*/ +func JustAfterEach(args ...any) bool { + return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeJustAfterEach, "", args...)) +} + +/* +BeforeAll nodes are Setup nodes that can occur inside Ordered containers. They run just once before any specs in the Ordered container run. + +Multiple BeforeAll nodes can be defined in a given Ordered container however they cannot be nested inside any other container. + +BeforeAll can take a func() body, or an interruptible func(SpecContext)/func(context.Context) body. + +You cannot nest any other Ginkgo nodes within a BeforeAll node's closure. +You can learn more about Ordered Containers at: https://onsi.github.io/ginkgo/#ordered-containers +And you can learn more about BeforeAll at: https://onsi.github.io/ginkgo/#setup-in-ordered-containers-beforeall-and-afterall +*/ +func BeforeAll(args ...any) bool { + return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeBeforeAll, "", args...)) +} + +/* +AfterAll nodes are Setup nodes that can occur inside Ordered containers. They run just once after all specs in the Ordered container have run. + +Multiple AfterAll nodes can be defined in a given Ordered container however they cannot be nested inside any other container. + +Note that you can also use DeferCleanup() in a BeforeAll node to accomplish similar behavior. + +AfterAll can take a func() body, or an interruptible func(SpecContext)/func(context.Context) body. + +You cannot nest any other Ginkgo nodes within an AfterAll node's closure. +You can learn more about Ordered Containers at: https://onsi.github.io/ginkgo/#ordered-containers +And you can learn more about AfterAll at: https://onsi.github.io/ginkgo/#setup-in-ordered-containers-beforeall-and-afterall +*/ +func AfterAll(args ...any) bool { + return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeAfterAll, "", args...)) +} + +/* +DeferCleanup can be called within any Setup or Subject node to register a cleanup callback that Ginkgo will call at the appropriate time to cleanup after the spec. + +DeferCleanup can be passed: +1. A function that takes no arguments and returns no values. +2. A function that returns multiple values. `DeferCleanup` will ignore all these return values except for the last one. If this last return value is a non-nil error `DeferCleanup` will fail the spec). +3. A function that takes a context.Context or SpecContext (and optionally returns multiple values). The resulting cleanup node is deemed interruptible and the passed-in context will be cancelled in the event of a timeout or interrupt. +4. A function that takes arguments (and optionally returns multiple values) followed by a list of arguments to pass to the function. +5. A function that takes SpecContext and a list of arguments (and optionally returns multiple values) followed by a list of arguments to pass to the function. + +For example: + + BeforeEach(func() { + DeferCleanup(os.Setenv, "FOO", os.GetEnv("FOO")) + os.Setenv("FOO", "BAR") + }) + +will register a cleanup handler that will set the environment variable "FOO" to its current value (obtained by os.GetEnv("FOO")) after the spec runs and then sets the environment variable "FOO" to "BAR" for the current spec. + +Similarly: + + BeforeEach(func() { + DeferCleanup(func(ctx SpecContext, path) { + req, err := http.NewRequestWithContext(ctx, "POST", path, nil) + Expect(err).NotTo(HaveOccured()) + _, err := http.DefaultClient.Do(req) + Expect(err).NotTo(HaveOccured()) + }, "example.com/cleanup", NodeTimeout(time.Second*3)) + }) + +will register a cleanup handler that will have three seconds to successfully complete a request to the specified path. Note that we do not specify a context in the list of arguments passed to DeferCleanup - only in the signature of the function we pass in. Ginkgo will detect the requested context and supply a SpecContext when it invokes the cleanup node. If you want to pass in your own context in addition to the Ginkgo-provided SpecContext you must specify the SpecContext as the first argument (e.g. func(ctx SpecContext, otherCtx context.Context)). + +When DeferCleanup is called in BeforeEach, JustBeforeEach, It, AfterEach, or JustAfterEach the registered callback will be invoked when the spec completes (i.e. it will behave like an AfterEach node) +When DeferCleanup is called in BeforeAll or AfterAll the registered callback will be invoked when the ordered container completes (i.e. it will behave like an AfterAll node) +When DeferCleanup is called in BeforeSuite, SynchronizedBeforeSuite, AfterSuite, or SynchronizedAfterSuite the registered callback will be invoked when the suite completes (i.e. it will behave like an AfterSuite node) + +Note that DeferCleanup does not represent a node but rather dynamically generates the appropriate type of cleanup node based on the context in which it is called. As such you must call DeferCleanup within a Setup or Subject node, and not within a Container node. +You can learn more about DeferCleanup here: https://onsi.github.io/ginkgo/#cleaning-up-our-cleanup-code-defercleanup +*/ +func DeferCleanup(args ...any) { + fail := func(message string, cl types.CodeLocation) { + global.Failer.Fail(message, cl) + } + pushNode(internal.NewCleanupNode(deprecationTracker, fail, args...)) +} + +/* +AttachProgressReporter allows you to register a function that will be called whenever Ginkgo generates a Progress Report. The contents returned by the function will be included in the report. + +**This is an experimental feature and the public-facing interface may change in a future minor version of Ginkgo** + +Progress Reports are generated: +- whenever the user explicitly requests one (via `SIGINFO` or `SIGUSR1`) +- on nodes decorated with PollProgressAfter +- on suites run with --poll-progress-after +- whenever a test times out + +Ginkgo uses Progress Reports to convey the current state of the test suite, including any running goroutines. By attaching a progress reporter you are able to supplement these reports with additional information. + +# AttachProgressReporter returns a function that can be called to detach the progress reporter + +You can learn more about AttachProgressReporter here: https://onsi.github.io/ginkgo/#attaching-additional-information-to-progress-reports +*/ +func AttachProgressReporter(reporter func() string) func() { + return global.Suite.AttachProgressReporter(reporter) +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/decorator_dsl.go b/tests/vendor/github.com/onsi/ginkgo/v2/decorator_dsl.go new file mode 100644 index 000000000..c65af4ce1 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/decorator_dsl.go @@ -0,0 +1,143 @@ +package ginkgo + +import ( + "github.com/onsi/ginkgo/v2/internal" +) + +/* +Offset(uint) is a decorator that allows you to change the stack-frame offset used when computing the line number of the node in question. + +You can learn more here: https://onsi.github.io/ginkgo/#the-offset-decorator +You can learn more about decorators here: https://onsi.github.io/ginkgo/#decorator-reference +*/ +type Offset = internal.Offset + +/* +FlakeAttempts(uint N) is a decorator that allows you to mark individual specs or spec containers as flaky. Ginkgo will run them up to `N` times until they pass. + +You can learn more here: https://onsi.github.io/ginkgo/#the-flakeattempts-decorator +You can learn more about decorators here: https://onsi.github.io/ginkgo/#decorator-reference +*/ +type FlakeAttempts = internal.FlakeAttempts + +/* +MustPassRepeatedly(uint N) is a decorator that allows you to repeat the execution of individual specs or spec containers. Ginkgo will run them up to `N` times until they fail. + +You can learn more here: https://onsi.github.io/ginkgo/#the-mustpassrepeatedly-decorator +You can learn more about decorators here: https://onsi.github.io/ginkgo/#decorator-reference +*/ +type MustPassRepeatedly = internal.MustPassRepeatedly + +/* +Focus is a decorator that allows you to mark a spec or container as focused. Identical to FIt and FDescribe. + +You can learn more here: https://onsi.github.io/ginkgo/#filtering-specs +You can learn more about decorators here: https://onsi.github.io/ginkgo/#decorator-reference +*/ +const Focus = internal.Focus + +/* +Pending is a decorator that allows you to mark a spec or container as pending. Identical to PIt and PDescribe. + +You can learn more here: https://onsi.github.io/ginkgo/#filtering-specs +You can learn more about decorators here: https://onsi.github.io/ginkgo/#decorator-reference +*/ +const Pending = internal.Pending + +/* +Serial is a decorator that allows you to mark a spec or container as serial. These specs will never run in parallel with other specs. +Specs in ordered containers cannot be marked as serial - mark the ordered container instead. + +You can learn more here: https://onsi.github.io/ginkgo/#serial-specs +You can learn more about decorators here: https://onsi.github.io/ginkgo/#decorator-reference +*/ +const Serial = internal.Serial + +/* +Ordered is a decorator that allows you to mark a container as ordered. Specs in the container will always run in the order they appear. +They will never be randomized and they will never run in parallel with one another, though they may run in parallel with other specs. + +You can learn more here: https://onsi.github.io/ginkgo/#ordered-containers +You can learn more about decorators here: https://onsi.github.io/ginkgo/#decorator-reference +*/ +const Ordered = internal.Ordered + +/* +ContinueOnFailure is a decorator that allows you to mark an Ordered container to continue running specs even if failures occur. Ordinarily an ordered container will stop running specs after the first failure occurs. Note that if a BeforeAll or a BeforeEach/JustBeforeEach annotated with OncePerOrdered fails then no specs will run as the precondition for the Ordered container will consider to be failed. + +ContinueOnFailure only applies to the outermost Ordered container. Attempting to place ContinueOnFailure in a nested container will result in an error. + +You can learn more here: https://onsi.github.io/ginkgo/#ordered-containers +You can learn more about decorators here: https://onsi.github.io/ginkgo/#decorator-reference +*/ +const ContinueOnFailure = internal.ContinueOnFailure + +/* +OncePerOrdered is a decorator that allows you to mark outer BeforeEach, AfterEach, JustBeforeEach, and JustAfterEach setup nodes to run once +per ordered context. Normally these setup nodes run around each individual spec, with OncePerOrdered they will run once around the set of specs in an ordered container. +The behavior for non-Ordered containers/specs is unchanged. + +You can learn more here: https://onsi.github.io/ginkgo/#setup-around-ordered-containers-the-onceperordered-decorator +You can learn more about decorators here: https://onsi.github.io/ginkgo/#decorator-reference +*/ +const OncePerOrdered = internal.OncePerOrdered + +/* +Label decorates specs with Labels. Multiple labels can be passed to Label and these can be arbitrary strings but must not include the following characters: "&|!,()/". +Labels can be applied to container and subject nodes, but not setup nodes. You can provide multiple Labels to a given node and a spec's labels is the union of all labels in its node hierarchy. + +You can learn more here: https://onsi.github.io/ginkgo/#spec-labels +You can learn more about decorators here: https://onsi.github.io/ginkgo/#decorator-reference +*/ +func Label(labels ...string) Labels { + return Labels(labels) +} + +/* +Labels are the type for spec Label decorators. Use Label(...) to construct Labels. +You can learn more here: https://onsi.github.io/ginkgo/#spec-labels +*/ +type Labels = internal.Labels + +/* +PollProgressAfter allows you to override the configured value for --poll-progress-after for a particular node. + +Ginkgo will start emitting node progress if the node is still running after a duration of PollProgressAfter. This allows you to get quicker feedback about the state of a long-running spec. +*/ +type PollProgressAfter = internal.PollProgressAfter + +/* +PollProgressInterval allows you to override the configured value for --poll-progress-interval for a particular node. + +Once a node has been running for longer than PollProgressAfter Ginkgo will emit node progress periodically at an interval of PollProgresInterval. +*/ +type PollProgressInterval = internal.PollProgressInterval + +/* +NodeTimeout allows you to specify a timeout for an indivdiual node. The node cannot be a container and must be interruptible (i.e. it must be passed a function that accepts a SpecContext or context.Context). + +If the node does not exit within the specified NodeTimeout its context will be cancelled. The node wil then have a period of time controlled by the GracePeriod decorator (or global --grace-period command-line argument) to exit. If the node does not exit within GracePeriod Ginkgo will leak the node and proceed to any clean-up nodes associated with the current spec. +*/ +type NodeTimeout = internal.NodeTimeout + +/* +SpecTimeout allows you to specify a timeout for an indivdiual spec. SpecTimeout can only decorate interruptible It nodes. + +All nodes associated with the It node will need to complete before the SpecTimeout has elapsed. Individual nodes (e.g. BeforeEach) may be decorated with different NodeTimeouts - but these can only serve to provide a more stringent deadline for the node in question; they cannot extend the deadline past the SpecTimeout. + +If the spec does not complete within the specified SpecTimeout the currently running node will have its context cancelled. The node wil then have a period of time controlled by that node's GracePeriod decorator (or global --grace-period command-line argument) to exit. If the node does not exit within GracePeriod Ginkgo will leak the node and proceed to any clean-up nodes associated with the current spec. +*/ +type SpecTimeout = internal.SpecTimeout + +/* +GracePeriod denotes the period of time Ginkgo will wait for an interruptible node to exit once an interruption (whether due to a timeout or a user-invoked signal) has occurred. If both the global --grace-period cli flag and a GracePeriod decorator are specified the value in the decorator will take precedence. + +Nodes that do not finish within a GracePeriod will be leaked and Ginkgo will proceed to run subsequent nodes. In the event of a timeout, such leaks will be reported to the user. +*/ +type GracePeriod = internal.GracePeriod + +/* +SuppressProgressReporting is a decorator that allows you to disable progress reporting of a particular node. This is useful if `ginkgo -v -progress` is generating too much noise; particularly +if you have a `ReportAfterEach` node that is running for every skipped spec and is generating lots of progress reports. +*/ +const SuppressProgressReporting = internal.SuppressProgressReporting diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/deprecated_dsl.go b/tests/vendor/github.com/onsi/ginkgo/v2/deprecated_dsl.go new file mode 100644 index 000000000..fd45b8bea --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/deprecated_dsl.go @@ -0,0 +1,135 @@ +package ginkgo + +import ( + "time" + + "github.com/onsi/ginkgo/v2/internal" + "github.com/onsi/ginkgo/v2/internal/global" + "github.com/onsi/ginkgo/v2/reporters" + "github.com/onsi/ginkgo/v2/types" +) + +/* +Deprecated: Done Channel for asynchronous testing + +The Done channel pattern is no longer supported in Ginkgo 2.0. +See here for better patterns for asynchronous testing: https://onsi.github.io/ginkgo/#patterns-for-asynchronous-testing + +For a migration guide see: https://onsi.github.io/ginkgo/MIGRATING_TO_V2#removed-async-testing +*/ +type Done = internal.Done + +/* +Deprecated: Custom Ginkgo test reporters are deprecated in Ginkgo 2.0. + +Use Ginkgo's reporting nodes instead and 2.0 reporting infrastructure instead. You can learn more here: https://onsi.github.io/ginkgo/#reporting-infrastructure +For a migration guide see: https://onsi.github.io/ginkgo/MIGRATING_TO_V2#removed-custom-reporters +*/ +type Reporter = reporters.DeprecatedReporter + +/* +Deprecated: Custom Reporters have been removed in Ginkgo 2.0. RunSpecsWithDefaultAndCustomReporters will simply call RunSpecs() + +Use Ginkgo's reporting nodes instead and 2.0 reporting infrastructure instead. You can learn more here: https://onsi.github.io/ginkgo/#reporting-infrastructure +For a migration guide see: https://onsi.github.io/ginkgo/MIGRATING_TO_V2#removed-custom-reporters +*/ +func RunSpecsWithDefaultAndCustomReporters(t GinkgoTestingT, description string, _ []Reporter) bool { + deprecationTracker.TrackDeprecation(types.Deprecations.CustomReporter()) + return RunSpecs(t, description) +} + +/* +Deprecated: Custom Reporters have been removed in Ginkgo 2.0. RunSpecsWithCustomReporters will simply call RunSpecs() + +Use Ginkgo's reporting nodes instead and 2.0 reporting infrastructure instead. You can learn more here: https://onsi.github.io/ginkgo/#reporting-infrastructure +For a migration guide see: https://onsi.github.io/ginkgo/MIGRATING_TO_V2#removed-custom-reporters +*/ +func RunSpecsWithCustomReporters(t GinkgoTestingT, description string, _ []Reporter) bool { + deprecationTracker.TrackDeprecation(types.Deprecations.CustomReporter()) + return RunSpecs(t, description) +} + +/* +Deprecated: GinkgoTestDescription has been replaced with SpecReport. + +Use CurrentSpecReport() instead. +You can learn more here: https://onsi.github.io/ginkgo/#getting-a-report-for-the-current-spec +The SpecReport type is documented here: https://pkg.go.dev/github.com/onsi/ginkgo/v2/types#SpecReport +*/ +type DeprecatedGinkgoTestDescription struct { + FullTestText string + ComponentTexts []string + TestText string + + FileName string + LineNumber int + + Failed bool + Duration time.Duration +} +type GinkgoTestDescription = DeprecatedGinkgoTestDescription + +/* +Deprecated: CurrentGinkgoTestDescription has been replaced with CurrentSpecReport. + +Use CurrentSpecReport() instead. +You can learn more here: https://onsi.github.io/ginkgo/#getting-a-report-for-the-current-spec +The SpecReport type is documented here: https://pkg.go.dev/github.com/onsi/ginkgo/v2/types#SpecReport +*/ +func CurrentGinkgoTestDescription() DeprecatedGinkgoTestDescription { + deprecationTracker.TrackDeprecation( + types.Deprecations.CurrentGinkgoTestDescription(), + types.NewCodeLocation(1), + ) + report := global.Suite.CurrentSpecReport() + if report.State == types.SpecStateInvalid { + return GinkgoTestDescription{} + } + componentTexts := []string{} + componentTexts = append(componentTexts, report.ContainerHierarchyTexts...) + componentTexts = append(componentTexts, report.LeafNodeText) + + return DeprecatedGinkgoTestDescription{ + ComponentTexts: componentTexts, + FullTestText: report.FullText(), + TestText: report.LeafNodeText, + FileName: report.LeafNodeLocation.FileName, + LineNumber: report.LeafNodeLocation.LineNumber, + Failed: report.State.Is(types.SpecStateFailureStates), + Duration: report.RunTime, + } +} + +/* +Deprecated: GinkgoParallelNode() has been renamed to GinkgoParallelProcess() +*/ +func GinkgoParallelNode() int { + deprecationTracker.TrackDeprecation( + types.Deprecations.ParallelNode(), + types.NewCodeLocation(1), + ) + return GinkgoParallelProcess() +} + +/* +Deprecated: Benchmarker has been removed from Ginkgo 2.0 + +Use Gomega's gmeasure package instead. +You can learn more here: https://onsi.github.io/ginkgo/#benchmarking-code +*/ +type Benchmarker interface { + Time(name string, body func(), info ...any) (elapsedTime time.Duration) + RecordValue(name string, value float64, info ...any) + RecordValueWithPrecision(name string, value float64, units string, precision int, info ...any) +} + +/* +Deprecated: Measure() has been removed from Ginkgo 2.0 + +Use Gomega's gmeasure package instead. +You can learn more here: https://onsi.github.io/ginkgo/#benchmarking-code +*/ +func Measure(_ ...any) bool { + deprecationTracker.TrackDeprecation(types.Deprecations.Measure(), types.NewCodeLocation(1)) + return true +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/formatter/colorable_others.go b/tests/vendor/github.com/onsi/ginkgo/v2/formatter/colorable_others.go new file mode 100644 index 000000000..778bfd7c7 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/formatter/colorable_others.go @@ -0,0 +1,41 @@ +// +build !windows + +/* +These packages are used for colorize on Windows and contributed by mattn.jp@gmail.com + + * go-colorable: + * go-isatty: + +The MIT License (MIT) + +Copyright (c) 2016 Yasuhiro Matsumoto + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +package formatter + +import ( + "io" + "os" +) + +func newColorable(file *os.File) io.Writer { + return file +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/formatter/colorable_windows.go b/tests/vendor/github.com/onsi/ginkgo/v2/formatter/colorable_windows.go new file mode 100644 index 000000000..dd1d143cc --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/formatter/colorable_windows.go @@ -0,0 +1,809 @@ +/* +These packages are used for colorize on Windows and contributed by mattn.jp@gmail.com + + * go-colorable: + * go-isatty: + +The MIT License (MIT) + +Copyright (c) 2016 Yasuhiro Matsumoto + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +package formatter + +import ( + "bytes" + "fmt" + "io" + "math" + "os" + "strconv" + "strings" + "syscall" + "unsafe" +) + +var ( + kernel32 = syscall.NewLazyDLL("kernel32.dll") + procGetConsoleScreenBufferInfo = kernel32.NewProc("GetConsoleScreenBufferInfo") + procSetConsoleTextAttribute = kernel32.NewProc("SetConsoleTextAttribute") + procSetConsoleCursorPosition = kernel32.NewProc("SetConsoleCursorPosition") + procFillConsoleOutputCharacter = kernel32.NewProc("FillConsoleOutputCharacterW") + procFillConsoleOutputAttribute = kernel32.NewProc("FillConsoleOutputAttribute") + procGetConsoleMode = kernel32.NewProc("GetConsoleMode") +) + +func isTerminal(fd uintptr) bool { + var st uint32 + r, _, e := syscall.Syscall(procGetConsoleMode.Addr(), 2, fd, uintptr(unsafe.Pointer(&st)), 0) + return r != 0 && e == 0 +} + +const ( + foregroundBlue = 0x1 + foregroundGreen = 0x2 + foregroundRed = 0x4 + foregroundIntensity = 0x8 + foregroundMask = (foregroundRed | foregroundBlue | foregroundGreen | foregroundIntensity) + backgroundBlue = 0x10 + backgroundGreen = 0x20 + backgroundRed = 0x40 + backgroundIntensity = 0x80 + backgroundMask = (backgroundRed | backgroundBlue | backgroundGreen | backgroundIntensity) +) + +type wchar uint16 +type short int16 +type dword uint32 +type word uint16 + +type coord struct { + x short + y short +} + +type smallRect struct { + left short + top short + right short + bottom short +} + +type consoleScreenBufferInfo struct { + size coord + cursorPosition coord + attributes word + window smallRect + maximumWindowSize coord +} + +type writer struct { + out io.Writer + handle syscall.Handle + lastbuf bytes.Buffer + oldattr word +} + +func newColorable(file *os.File) io.Writer { + if file == nil { + panic("nil passed instead of *os.File to NewColorable()") + } + + if isTerminal(file.Fd()) { + var csbi consoleScreenBufferInfo + handle := syscall.Handle(file.Fd()) + procGetConsoleScreenBufferInfo.Call(uintptr(handle), uintptr(unsafe.Pointer(&csbi))) + return &writer{out: file, handle: handle, oldattr: csbi.attributes} + } else { + return file + } +} + +var color256 = map[int]int{ + 0: 0x000000, + 1: 0x800000, + 2: 0x008000, + 3: 0x808000, + 4: 0x000080, + 5: 0x800080, + 6: 0x008080, + 7: 0xc0c0c0, + 8: 0x808080, + 9: 0xff0000, + 10: 0x00ff00, + 11: 0xffff00, + 12: 0x0000ff, + 13: 0xff00ff, + 14: 0x00ffff, + 15: 0xffffff, + 16: 0x000000, + 17: 0x00005f, + 18: 0x000087, + 19: 0x0000af, + 20: 0x0000d7, + 21: 0x0000ff, + 22: 0x005f00, + 23: 0x005f5f, + 24: 0x005f87, + 25: 0x005faf, + 26: 0x005fd7, + 27: 0x005fff, + 28: 0x008700, + 29: 0x00875f, + 30: 0x008787, + 31: 0x0087af, + 32: 0x0087d7, + 33: 0x0087ff, + 34: 0x00af00, + 35: 0x00af5f, + 36: 0x00af87, + 37: 0x00afaf, + 38: 0x00afd7, + 39: 0x00afff, + 40: 0x00d700, + 41: 0x00d75f, + 42: 0x00d787, + 43: 0x00d7af, + 44: 0x00d7d7, + 45: 0x00d7ff, + 46: 0x00ff00, + 47: 0x00ff5f, + 48: 0x00ff87, + 49: 0x00ffaf, + 50: 0x00ffd7, + 51: 0x00ffff, + 52: 0x5f0000, + 53: 0x5f005f, + 54: 0x5f0087, + 55: 0x5f00af, + 56: 0x5f00d7, + 57: 0x5f00ff, + 58: 0x5f5f00, + 59: 0x5f5f5f, + 60: 0x5f5f87, + 61: 0x5f5faf, + 62: 0x5f5fd7, + 63: 0x5f5fff, + 64: 0x5f8700, + 65: 0x5f875f, + 66: 0x5f8787, + 67: 0x5f87af, + 68: 0x5f87d7, + 69: 0x5f87ff, + 70: 0x5faf00, + 71: 0x5faf5f, + 72: 0x5faf87, + 73: 0x5fafaf, + 74: 0x5fafd7, + 75: 0x5fafff, + 76: 0x5fd700, + 77: 0x5fd75f, + 78: 0x5fd787, + 79: 0x5fd7af, + 80: 0x5fd7d7, + 81: 0x5fd7ff, + 82: 0x5fff00, + 83: 0x5fff5f, + 84: 0x5fff87, + 85: 0x5fffaf, + 86: 0x5fffd7, + 87: 0x5fffff, + 88: 0x870000, + 89: 0x87005f, + 90: 0x870087, + 91: 0x8700af, + 92: 0x8700d7, + 93: 0x8700ff, + 94: 0x875f00, + 95: 0x875f5f, + 96: 0x875f87, + 97: 0x875faf, + 98: 0x875fd7, + 99: 0x875fff, + 100: 0x878700, + 101: 0x87875f, + 102: 0x878787, + 103: 0x8787af, + 104: 0x8787d7, + 105: 0x8787ff, + 106: 0x87af00, + 107: 0x87af5f, + 108: 0x87af87, + 109: 0x87afaf, + 110: 0x87afd7, + 111: 0x87afff, + 112: 0x87d700, + 113: 0x87d75f, + 114: 0x87d787, + 115: 0x87d7af, + 116: 0x87d7d7, + 117: 0x87d7ff, + 118: 0x87ff00, + 119: 0x87ff5f, + 120: 0x87ff87, + 121: 0x87ffaf, + 122: 0x87ffd7, + 123: 0x87ffff, + 124: 0xaf0000, + 125: 0xaf005f, + 126: 0xaf0087, + 127: 0xaf00af, + 128: 0xaf00d7, + 129: 0xaf00ff, + 130: 0xaf5f00, + 131: 0xaf5f5f, + 132: 0xaf5f87, + 133: 0xaf5faf, + 134: 0xaf5fd7, + 135: 0xaf5fff, + 136: 0xaf8700, + 137: 0xaf875f, + 138: 0xaf8787, + 139: 0xaf87af, + 140: 0xaf87d7, + 141: 0xaf87ff, + 142: 0xafaf00, + 143: 0xafaf5f, + 144: 0xafaf87, + 145: 0xafafaf, + 146: 0xafafd7, + 147: 0xafafff, + 148: 0xafd700, + 149: 0xafd75f, + 150: 0xafd787, + 151: 0xafd7af, + 152: 0xafd7d7, + 153: 0xafd7ff, + 154: 0xafff00, + 155: 0xafff5f, + 156: 0xafff87, + 157: 0xafffaf, + 158: 0xafffd7, + 159: 0xafffff, + 160: 0xd70000, + 161: 0xd7005f, + 162: 0xd70087, + 163: 0xd700af, + 164: 0xd700d7, + 165: 0xd700ff, + 166: 0xd75f00, + 167: 0xd75f5f, + 168: 0xd75f87, + 169: 0xd75faf, + 170: 0xd75fd7, + 171: 0xd75fff, + 172: 0xd78700, + 173: 0xd7875f, + 174: 0xd78787, + 175: 0xd787af, + 176: 0xd787d7, + 177: 0xd787ff, + 178: 0xd7af00, + 179: 0xd7af5f, + 180: 0xd7af87, + 181: 0xd7afaf, + 182: 0xd7afd7, + 183: 0xd7afff, + 184: 0xd7d700, + 185: 0xd7d75f, + 186: 0xd7d787, + 187: 0xd7d7af, + 188: 0xd7d7d7, + 189: 0xd7d7ff, + 190: 0xd7ff00, + 191: 0xd7ff5f, + 192: 0xd7ff87, + 193: 0xd7ffaf, + 194: 0xd7ffd7, + 195: 0xd7ffff, + 196: 0xff0000, + 197: 0xff005f, + 198: 0xff0087, + 199: 0xff00af, + 200: 0xff00d7, + 201: 0xff00ff, + 202: 0xff5f00, + 203: 0xff5f5f, + 204: 0xff5f87, + 205: 0xff5faf, + 206: 0xff5fd7, + 207: 0xff5fff, + 208: 0xff8700, + 209: 0xff875f, + 210: 0xff8787, + 211: 0xff87af, + 212: 0xff87d7, + 213: 0xff87ff, + 214: 0xffaf00, + 215: 0xffaf5f, + 216: 0xffaf87, + 217: 0xffafaf, + 218: 0xffafd7, + 219: 0xffafff, + 220: 0xffd700, + 221: 0xffd75f, + 222: 0xffd787, + 223: 0xffd7af, + 224: 0xffd7d7, + 225: 0xffd7ff, + 226: 0xffff00, + 227: 0xffff5f, + 228: 0xffff87, + 229: 0xffffaf, + 230: 0xffffd7, + 231: 0xffffff, + 232: 0x080808, + 233: 0x121212, + 234: 0x1c1c1c, + 235: 0x262626, + 236: 0x303030, + 237: 0x3a3a3a, + 238: 0x444444, + 239: 0x4e4e4e, + 240: 0x585858, + 241: 0x626262, + 242: 0x6c6c6c, + 243: 0x767676, + 244: 0x808080, + 245: 0x8a8a8a, + 246: 0x949494, + 247: 0x9e9e9e, + 248: 0xa8a8a8, + 249: 0xb2b2b2, + 250: 0xbcbcbc, + 251: 0xc6c6c6, + 252: 0xd0d0d0, + 253: 0xdadada, + 254: 0xe4e4e4, + 255: 0xeeeeee, +} + +func (w *writer) Write(data []byte) (n int, err error) { + var csbi consoleScreenBufferInfo + procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi))) + + er := bytes.NewBuffer(data) +loop: + for { + r1, _, err := procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi))) + if r1 == 0 { + break loop + } + + c1, _, err := er.ReadRune() + if err != nil { + break loop + } + if c1 != 0x1b { + fmt.Fprint(w.out, string(c1)) + continue + } + c2, _, err := er.ReadRune() + if err != nil { + w.lastbuf.WriteRune(c1) + break loop + } + if c2 != 0x5b { + w.lastbuf.WriteRune(c1) + w.lastbuf.WriteRune(c2) + continue + } + + var buf bytes.Buffer + var m rune + for { + c, _, err := er.ReadRune() + if err != nil { + w.lastbuf.WriteRune(c1) + w.lastbuf.WriteRune(c2) + w.lastbuf.Write(buf.Bytes()) + break loop + } + if ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || c == '@' { + m = c + break + } + buf.Write([]byte(string(c))) + } + + var csbi consoleScreenBufferInfo + switch m { + case 'A': + n, err = strconv.Atoi(buf.String()) + if err != nil { + continue + } + procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi))) + csbi.cursorPosition.y -= short(n) + procSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition))) + case 'B': + n, err = strconv.Atoi(buf.String()) + if err != nil { + continue + } + procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi))) + csbi.cursorPosition.y += short(n) + procSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition))) + case 'C': + n, err = strconv.Atoi(buf.String()) + if err != nil { + continue + } + procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi))) + csbi.cursorPosition.x -= short(n) + procSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition))) + case 'D': + n, err = strconv.Atoi(buf.String()) + if err != nil { + continue + } + if n, err = strconv.Atoi(buf.String()); err == nil { + var csbi consoleScreenBufferInfo + procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi))) + csbi.cursorPosition.x += short(n) + procSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition))) + } + case 'E': + n, err = strconv.Atoi(buf.String()) + if err != nil { + continue + } + procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi))) + csbi.cursorPosition.x = 0 + csbi.cursorPosition.y += short(n) + procSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition))) + case 'F': + n, err = strconv.Atoi(buf.String()) + if err != nil { + continue + } + procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi))) + csbi.cursorPosition.x = 0 + csbi.cursorPosition.y -= short(n) + procSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition))) + case 'G': + n, err = strconv.Atoi(buf.String()) + if err != nil { + continue + } + procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi))) + csbi.cursorPosition.x = short(n) + procSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition))) + case 'H': + token := strings.Split(buf.String(), ";") + if len(token) != 2 { + continue + } + n1, err := strconv.Atoi(token[0]) + if err != nil { + continue + } + n2, err := strconv.Atoi(token[1]) + if err != nil { + continue + } + csbi.cursorPosition.x = short(n2) + csbi.cursorPosition.x = short(n1) + procSetConsoleCursorPosition.Call(uintptr(w.handle), *(*uintptr)(unsafe.Pointer(&csbi.cursorPosition))) + case 'J': + n, err := strconv.Atoi(buf.String()) + if err != nil { + continue + } + var cursor coord + switch n { + case 0: + cursor = coord{x: csbi.cursorPosition.x, y: csbi.cursorPosition.y} + case 1: + cursor = coord{x: csbi.window.left, y: csbi.window.top} + case 2: + cursor = coord{x: csbi.window.left, y: csbi.window.top} + } + var count, written dword + count = dword(csbi.size.x - csbi.cursorPosition.x + (csbi.size.y-csbi.cursorPosition.y)*csbi.size.x) + procFillConsoleOutputCharacter.Call(uintptr(w.handle), uintptr(' '), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written))) + procFillConsoleOutputAttribute.Call(uintptr(w.handle), uintptr(csbi.attributes), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written))) + case 'K': + n, err := strconv.Atoi(buf.String()) + if err != nil { + continue + } + var cursor coord + switch n { + case 0: + cursor = coord{x: csbi.cursorPosition.x, y: csbi.cursorPosition.y} + case 1: + cursor = coord{x: csbi.window.left, y: csbi.window.top + csbi.cursorPosition.y} + case 2: + cursor = coord{x: csbi.window.left, y: csbi.window.top + csbi.cursorPosition.y} + } + var count, written dword + count = dword(csbi.size.x - csbi.cursorPosition.x) + procFillConsoleOutputCharacter.Call(uintptr(w.handle), uintptr(' '), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written))) + procFillConsoleOutputAttribute.Call(uintptr(w.handle), uintptr(csbi.attributes), uintptr(count), *(*uintptr)(unsafe.Pointer(&cursor)), uintptr(unsafe.Pointer(&written))) + case 'm': + attr := csbi.attributes + cs := buf.String() + if cs == "" { + procSetConsoleTextAttribute.Call(uintptr(w.handle), uintptr(w.oldattr)) + continue + } + token := strings.Split(cs, ";") + for i := 0; i < len(token); i += 1 { + ns := token[i] + if n, err = strconv.Atoi(ns); err == nil { + switch { + case n == 0 || n == 100: + attr = w.oldattr + case 1 <= n && n <= 5: + attr |= foregroundIntensity + case n == 7: + attr = ((attr & foregroundMask) << 4) | ((attr & backgroundMask) >> 4) + case 22 == n || n == 25 || n == 25: + attr |= foregroundIntensity + case n == 27: + attr = ((attr & foregroundMask) << 4) | ((attr & backgroundMask) >> 4) + case 30 <= n && n <= 37: + attr = (attr & backgroundMask) + if (n-30)&1 != 0 { + attr |= foregroundRed + } + if (n-30)&2 != 0 { + attr |= foregroundGreen + } + if (n-30)&4 != 0 { + attr |= foregroundBlue + } + case n == 38: // set foreground color. + if i < len(token)-2 && (token[i+1] == "5" || token[i+1] == "05") { + if n256, err := strconv.Atoi(token[i+2]); err == nil { + if n256foreAttr == nil { + n256setup() + } + attr &= backgroundMask + attr |= n256foreAttr[n256] + i += 2 + } + } else { + attr = attr & (w.oldattr & backgroundMask) + } + case n == 39: // reset foreground color. + attr &= backgroundMask + attr |= w.oldattr & foregroundMask + case 40 <= n && n <= 47: + attr = (attr & foregroundMask) + if (n-40)&1 != 0 { + attr |= backgroundRed + } + if (n-40)&2 != 0 { + attr |= backgroundGreen + } + if (n-40)&4 != 0 { + attr |= backgroundBlue + } + case n == 48: // set background color. + if i < len(token)-2 && token[i+1] == "5" { + if n256, err := strconv.Atoi(token[i+2]); err == nil { + if n256backAttr == nil { + n256setup() + } + attr &= foregroundMask + attr |= n256backAttr[n256] + i += 2 + } + } else { + attr = attr & (w.oldattr & foregroundMask) + } + case n == 49: // reset foreground color. + attr &= foregroundMask + attr |= w.oldattr & backgroundMask + case 90 <= n && n <= 97: + attr = (attr & backgroundMask) + attr |= foregroundIntensity + if (n-90)&1 != 0 { + attr |= foregroundRed + } + if (n-90)&2 != 0 { + attr |= foregroundGreen + } + if (n-90)&4 != 0 { + attr |= foregroundBlue + } + case 100 <= n && n <= 107: + attr = (attr & foregroundMask) + attr |= backgroundIntensity + if (n-100)&1 != 0 { + attr |= backgroundRed + } + if (n-100)&2 != 0 { + attr |= backgroundGreen + } + if (n-100)&4 != 0 { + attr |= backgroundBlue + } + } + procSetConsoleTextAttribute.Call(uintptr(w.handle), uintptr(attr)) + } + } + } + } + return len(data) - w.lastbuf.Len(), nil +} + +type consoleColor struct { + rgb int + red bool + green bool + blue bool + intensity bool +} + +func (c consoleColor) foregroundAttr() (attr word) { + if c.red { + attr |= foregroundRed + } + if c.green { + attr |= foregroundGreen + } + if c.blue { + attr |= foregroundBlue + } + if c.intensity { + attr |= foregroundIntensity + } + return +} + +func (c consoleColor) backgroundAttr() (attr word) { + if c.red { + attr |= backgroundRed + } + if c.green { + attr |= backgroundGreen + } + if c.blue { + attr |= backgroundBlue + } + if c.intensity { + attr |= backgroundIntensity + } + return +} + +var color16 = []consoleColor{ + consoleColor{0x000000, false, false, false, false}, + consoleColor{0x000080, false, false, true, false}, + consoleColor{0x008000, false, true, false, false}, + consoleColor{0x008080, false, true, true, false}, + consoleColor{0x800000, true, false, false, false}, + consoleColor{0x800080, true, false, true, false}, + consoleColor{0x808000, true, true, false, false}, + consoleColor{0xc0c0c0, true, true, true, false}, + consoleColor{0x808080, false, false, false, true}, + consoleColor{0x0000ff, false, false, true, true}, + consoleColor{0x00ff00, false, true, false, true}, + consoleColor{0x00ffff, false, true, true, true}, + consoleColor{0xff0000, true, false, false, true}, + consoleColor{0xff00ff, true, false, true, true}, + consoleColor{0xffff00, true, true, false, true}, + consoleColor{0xffffff, true, true, true, true}, +} + +type hsv struct { + h, s, v float32 +} + +func (a hsv) dist(b hsv) float32 { + dh := a.h - b.h + switch { + case dh > 0.5: + dh = 1 - dh + case dh < -0.5: + dh = -1 - dh + } + ds := a.s - b.s + dv := a.v - b.v + return float32(math.Sqrt(float64(dh*dh + ds*ds + dv*dv))) +} + +func toHSV(rgb int) hsv { + r, g, b := float32((rgb&0xFF0000)>>16)/256.0, + float32((rgb&0x00FF00)>>8)/256.0, + float32(rgb&0x0000FF)/256.0 + min, max := minmax3f(r, g, b) + h := max - min + if h > 0 { + if max == r { + h = (g - b) / h + if h < 0 { + h += 6 + } + } else if max == g { + h = 2 + (b-r)/h + } else { + h = 4 + (r-g)/h + } + } + h /= 6.0 + s := max - min + if max != 0 { + s /= max + } + v := max + return hsv{h: h, s: s, v: v} +} + +type hsvTable []hsv + +func toHSVTable(rgbTable []consoleColor) hsvTable { + t := make(hsvTable, len(rgbTable)) + for i, c := range rgbTable { + t[i] = toHSV(c.rgb) + } + return t +} + +func (t hsvTable) find(rgb int) consoleColor { + hsv := toHSV(rgb) + n := 7 + l := float32(5.0) + for i, p := range t { + d := hsv.dist(p) + if d < l { + l, n = d, i + } + } + return color16[n] +} + +func minmax3f(a, b, c float32) (min, max float32) { + if a < b { + if b < c { + return a, c + } else if a < c { + return a, b + } else { + return c, b + } + } else { + if a < c { + return b, c + } else if b < c { + return b, a + } else { + return c, a + } + } +} + +var n256foreAttr []word +var n256backAttr []word + +func n256setup() { + n256foreAttr = make([]word, 256) + n256backAttr = make([]word, 256) + t := toHSVTable(color16) + for i, rgb := range color256 { + c := t.find(rgb) + n256foreAttr[i] = c.foregroundAttr() + n256backAttr[i] = c.backgroundAttr() + } +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/formatter/formatter.go b/tests/vendor/github.com/onsi/ginkgo/v2/formatter/formatter.go new file mode 100644 index 000000000..f61356db1 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/formatter/formatter.go @@ -0,0 +1,234 @@ +package formatter + +import ( + "fmt" + "os" + "regexp" + "strconv" + "strings" +) + +// ColorableStdOut and ColorableStdErr enable color output support on Windows +var ColorableStdOut = newColorable(os.Stdout) +var ColorableStdErr = newColorable(os.Stderr) + +const COLS = 80 + +type ColorMode uint8 + +const ( + ColorModeNone ColorMode = iota + ColorModeTerminal + ColorModePassthrough +) + +var SingletonFormatter = New(ColorModeTerminal) + +func F(format string, args ...any) string { + return SingletonFormatter.F(format, args...) +} + +func Fi(indentation uint, format string, args ...any) string { + return SingletonFormatter.Fi(indentation, format, args...) +} + +func Fiw(indentation uint, maxWidth uint, format string, args ...any) string { + return SingletonFormatter.Fiw(indentation, maxWidth, format, args...) +} + +type Formatter struct { + ColorMode ColorMode + colors map[string]string + styleRe *regexp.Regexp + preserveColorStylingTags bool +} + +func NewWithNoColorBool(noColor bool) Formatter { + if noColor { + return New(ColorModeNone) + } + return New(ColorModeTerminal) +} + +func New(colorMode ColorMode) Formatter { + colorAliases := map[string]int{ + "black": 0, + "red": 1, + "green": 2, + "yellow": 3, + "blue": 4, + "magenta": 5, + "cyan": 6, + "white": 7, + } + for colorAlias, n := range colorAliases { + colorAliases[fmt.Sprintf("bright-%s", colorAlias)] = n + 8 + } + + getColor := func(color, defaultEscapeCode string) string { + color = strings.ToUpper(strings.ReplaceAll(color, "-", "_")) + envVar := fmt.Sprintf("GINKGO_CLI_COLOR_%s", color) + envVarColor := os.Getenv(envVar) + if envVarColor == "" { + return defaultEscapeCode + } + if colorCode, ok := colorAliases[envVarColor]; ok { + return fmt.Sprintf("\x1b[38;5;%dm", colorCode) + } + colorCode, err := strconv.Atoi(envVarColor) + if err != nil || colorCode < 0 || colorCode > 255 { + return defaultEscapeCode + } + return fmt.Sprintf("\x1b[38;5;%dm", colorCode) + } + + if _, noColor := os.LookupEnv("GINKGO_NO_COLOR"); noColor { + colorMode = ColorModeNone + } + + f := Formatter{ + ColorMode: colorMode, + colors: map[string]string{ + "/": "\x1b[0m", + "bold": "\x1b[1m", + "underline": "\x1b[4m", + + "red": getColor("red", "\x1b[38;5;9m"), + "orange": getColor("orange", "\x1b[38;5;214m"), + "coral": getColor("coral", "\x1b[38;5;204m"), + "magenta": getColor("magenta", "\x1b[38;5;13m"), + "green": getColor("green", "\x1b[38;5;10m"), + "dark-green": getColor("dark-green", "\x1b[38;5;28m"), + "yellow": getColor("yellow", "\x1b[38;5;11m"), + "light-yellow": getColor("light-yellow", "\x1b[38;5;228m"), + "cyan": getColor("cyan", "\x1b[38;5;14m"), + "gray": getColor("gray", "\x1b[38;5;243m"), + "light-gray": getColor("light-gray", "\x1b[38;5;246m"), + "blue": getColor("blue", "\x1b[38;5;12m"), + }, + } + colors := []string{} + for color := range f.colors { + colors = append(colors, color) + } + f.styleRe = regexp.MustCompile("{{(" + strings.Join(colors, "|") + ")}}") + return f +} + +func (f Formatter) F(format string, args ...any) string { + return f.Fi(0, format, args...) +} + +func (f Formatter) Fi(indentation uint, format string, args ...any) string { + return f.Fiw(indentation, 0, format, args...) +} + +func (f Formatter) Fiw(indentation uint, maxWidth uint, format string, args ...any) string { + out := f.style(format) + if len(args) > 0 { + out = fmt.Sprintf(out, args...) + } + + if indentation == 0 && maxWidth == 0 { + return out + } + + lines := strings.Split(out, "\n") + + if maxWidth != 0 { + outLines := []string{} + + maxWidth = maxWidth - indentation*2 + for _, line := range lines { + if f.length(line) <= maxWidth { + outLines = append(outLines, line) + continue + } + words := strings.Split(line, " ") + outWords := []string{words[0]} + length := uint(f.length(words[0])) + for _, word := range words[1:] { + wordLength := f.length(word) + if length+wordLength+1 <= maxWidth { + length += wordLength + 1 + outWords = append(outWords, word) + continue + } + outLines = append(outLines, strings.Join(outWords, " ")) + outWords = []string{word} + length = wordLength + } + if len(outWords) > 0 { + outLines = append(outLines, strings.Join(outWords, " ")) + } + } + + lines = outLines + } + + if indentation == 0 { + return strings.Join(lines, "\n") + } + + padding := strings.Repeat(" ", int(indentation)) + for i := range lines { + if lines[i] != "" { + lines[i] = padding + lines[i] + } + } + + return strings.Join(lines, "\n") +} + +func (f Formatter) length(styled string) uint { + n := uint(0) + inStyle := false + for _, b := range styled { + if inStyle { + if b == 'm' { + inStyle = false + } + continue + } + if b == '\x1b' { + inStyle = true + continue + } + n += 1 + } + return n +} + +func (f Formatter) CycleJoin(elements []string, joiner string, cycle []string) string { + if len(elements) == 0 { + return "" + } + n := len(cycle) + out := "" + for i, text := range elements { + out += cycle[i%n] + text + if i < len(elements)-1 { + out += joiner + } + } + out += "{{/}}" + return f.style(out) +} + +func (f Formatter) style(s string) string { + switch f.ColorMode { + case ColorModeNone: + return f.styleRe.ReplaceAllString(s, "") + case ColorModePassthrough: + return s + case ColorModeTerminal: + return f.styleRe.ReplaceAllStringFunc(s, func(match string) string { + if out, ok := f.colors[strings.Trim(match, "{}")]; ok { + return out + } + return match + }) + } + + return "" +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/build/build_command.go b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/build/build_command.go new file mode 100644 index 000000000..2b36b2feb --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/build/build_command.go @@ -0,0 +1,80 @@ +package build + +import ( + "fmt" + "os" + "path" + + "github.com/onsi/ginkgo/v2/ginkgo/command" + "github.com/onsi/ginkgo/v2/ginkgo/internal" + "github.com/onsi/ginkgo/v2/types" +) + +func BuildBuildCommand() command.Command { + var cliConfig = types.NewDefaultCLIConfig() + var goFlagsConfig = types.NewDefaultGoFlagsConfig() + + flags, err := types.BuildBuildCommandFlagSet(&cliConfig, &goFlagsConfig) + if err != nil { + panic(err) + } + + return command.Command{ + Name: "build", + Flags: flags, + Usage: "ginkgo build ", + ShortDoc: "Build the passed in (or the package in the current directory if left blank).", + DocLink: "precompiling-suites", + Command: func(args []string, _ []string) { + var errors []error + cliConfig, goFlagsConfig, errors = types.VetAndInitializeCLIAndGoConfig(cliConfig, goFlagsConfig) + command.AbortIfErrors("Ginkgo detected configuration issues:", errors) + + buildSpecs(args, cliConfig, goFlagsConfig) + }, + } +} + +func buildSpecs(args []string, cliConfig types.CLIConfig, goFlagsConfig types.GoFlagsConfig) { + suites := internal.FindSuites(args, cliConfig, false).WithoutState(internal.TestSuiteStateSkippedByFilter) + if len(suites) == 0 { + command.AbortWith("Found no test suites") + } + + internal.VerifyCLIAndFrameworkVersion(suites) + + opc := internal.NewOrderedParallelCompiler(cliConfig.ComputedNumCompilers()) + opc.StartCompiling(suites, goFlagsConfig, true) + + for { + suiteIdx, suite := opc.Next() + if suiteIdx >= len(suites) { + break + } + suites[suiteIdx] = suite + if suite.State.Is(internal.TestSuiteStateFailedToCompile) { + fmt.Println(suite.CompilationError.Error()) + } else { + var testBinPath string + if len(goFlagsConfig.O) != 0 { + stat, err := os.Stat(goFlagsConfig.O) + if err != nil { + panic(err) + } + if stat.IsDir() { + testBinPath = goFlagsConfig.O + "/" + suite.PackageName + ".test" + } else { + testBinPath = goFlagsConfig.O + } + } + if len(testBinPath) == 0 { + testBinPath = path.Join(suite.Path, suite.PackageName+".test") + } + fmt.Printf("Compiled %s\n", testBinPath) + } + } + + if suites.CountWithState(internal.TestSuiteStateFailedToCompile) > 0 { + command.AbortWith("Failed to compile all tests") + } +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/command/abort.go b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/command/abort.go new file mode 100644 index 000000000..f0e7331f7 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/command/abort.go @@ -0,0 +1,61 @@ +package command + +import "fmt" + +type AbortDetails struct { + ExitCode int + Error error + EmitUsage bool +} + +func Abort(details AbortDetails) { + panic(details) +} + +func AbortGracefullyWith(format string, args ...any) { + Abort(AbortDetails{ + ExitCode: 0, + Error: fmt.Errorf(format, args...), + EmitUsage: false, + }) +} + +func AbortWith(format string, args ...any) { + Abort(AbortDetails{ + ExitCode: 1, + Error: fmt.Errorf(format, args...), + EmitUsage: false, + }) +} + +func AbortWithUsage(format string, args ...any) { + Abort(AbortDetails{ + ExitCode: 1, + Error: fmt.Errorf(format, args...), + EmitUsage: true, + }) +} + +func AbortIfError(preamble string, err error) { + if err != nil { + Abort(AbortDetails{ + ExitCode: 1, + Error: fmt.Errorf("%s\n%s", preamble, err.Error()), + EmitUsage: false, + }) + } +} + +func AbortIfErrors(preamble string, errors []error) { + if len(errors) > 0 { + out := "" + for _, err := range errors { + out += err.Error() + } + Abort(AbortDetails{ + ExitCode: 1, + Error: fmt.Errorf("%s\n%s", preamble, out), + EmitUsage: false, + }) + } +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/command/command.go b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/command/command.go new file mode 100644 index 000000000..79b83a3af --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/command/command.go @@ -0,0 +1,54 @@ +package command + +import ( + "fmt" + "io" + "strings" + + "github.com/onsi/ginkgo/v2/formatter" + "github.com/onsi/ginkgo/v2/types" +) + +type Command struct { + Name string + Flags types.GinkgoFlagSet + Usage string + ShortDoc string + Documentation string + DocLink string + Command func(args []string, additionalArgs []string) +} + +func (c Command) Run(args []string, additionalArgs []string) { + args, err := c.Flags.Parse(args) + if err != nil { + AbortWithUsage(err.Error()) + } + for _, arg := range args { + if len(arg) > 1 && strings.HasPrefix(arg, "-") { + AbortWith(types.GinkgoErrors.FlagAfterPositionalParameter().Error()) + } + } + c.Command(args, additionalArgs) +} + +func (c Command) EmitUsage(writer io.Writer) { + fmt.Fprintln(writer, formatter.F("{{bold}}"+c.Usage+"{{/}}")) + fmt.Fprintln(writer, formatter.F("{{gray}}%s{{/}}", strings.Repeat("-", len(c.Usage)))) + if c.ShortDoc != "" { + fmt.Fprintln(writer, formatter.Fiw(0, formatter.COLS, c.ShortDoc)) + fmt.Fprintln(writer, "") + } + if c.Documentation != "" { + fmt.Fprintln(writer, formatter.Fiw(0, formatter.COLS, c.Documentation)) + fmt.Fprintln(writer, "") + } + if c.DocLink != "" { + fmt.Fprintln(writer, formatter.Fi(0, "{{bold}}Learn more at:{{/}} {{cyan}}{{underline}}http://onsi.github.io/ginkgo/#%s{{/}}", c.DocLink)) + fmt.Fprintln(writer, "") + } + flagUsage := c.Flags.Usage() + if flagUsage != "" { + fmt.Fprintf(writer, formatter.F(flagUsage)) + } +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/command/program.go b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/command/program.go new file mode 100644 index 000000000..c3f6d3a11 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/command/program.go @@ -0,0 +1,180 @@ +package command + +import ( + "fmt" + "io" + "os" + "strings" + + "github.com/onsi/ginkgo/v2/formatter" + "github.com/onsi/ginkgo/v2/types" +) + +type Program struct { + Name string + Heading string + Commands []Command + DefaultCommand Command + DeprecatedCommands []DeprecatedCommand + + //For testing - leave as nil in production + OutWriter io.Writer + ErrWriter io.Writer + Exiter func(code int) +} + +type DeprecatedCommand struct { + Name string + Deprecation types.Deprecation +} + +func (p Program) RunAndExit(osArgs []string) { + var command Command + deprecationTracker := types.NewDeprecationTracker() + if p.Exiter == nil { + p.Exiter = os.Exit + } + if p.OutWriter == nil { + p.OutWriter = formatter.ColorableStdOut + } + if p.ErrWriter == nil { + p.ErrWriter = formatter.ColorableStdErr + } + + defer func() { + exitCode := 0 + + if r := recover(); r != nil { + details, ok := r.(AbortDetails) + if !ok { + panic(r) + } + + if details.Error != nil { + fmt.Fprintln(p.ErrWriter, formatter.F("{{red}}{{bold}}%s %s{{/}} {{red}}failed{{/}}", p.Name, command.Name)) + fmt.Fprintln(p.ErrWriter, formatter.Fi(1, details.Error.Error())) + } + if details.EmitUsage { + if details.Error != nil { + fmt.Fprintln(p.ErrWriter, "") + } + command.EmitUsage(p.ErrWriter) + } + exitCode = details.ExitCode + } + + command.Flags.ValidateDeprecations(deprecationTracker) + if deprecationTracker.DidTrackDeprecations() { + fmt.Fprintln(p.ErrWriter, deprecationTracker.DeprecationsReport()) + } + p.Exiter(exitCode) + }() + + args, additionalArgs := []string{}, []string{} + + foundDelimiter := false + for _, arg := range osArgs[1:] { + if !foundDelimiter { + if arg == "--" { + foundDelimiter = true + continue + } + } + + if foundDelimiter { + additionalArgs = append(additionalArgs, arg) + } else { + args = append(args, arg) + } + } + + command = p.DefaultCommand + if len(args) > 0 { + p.handleHelpRequestsAndExit(p.OutWriter, args) + if command.Name == args[0] { + args = args[1:] + } else { + for _, deprecatedCommand := range p.DeprecatedCommands { + if deprecatedCommand.Name == args[0] { + deprecationTracker.TrackDeprecation(deprecatedCommand.Deprecation) + return + } + } + for _, tryCommand := range p.Commands { + if tryCommand.Name == args[0] { + command, args = tryCommand, args[1:] + break + } + } + } + } + + command.Run(args, additionalArgs) +} + +func (p Program) handleHelpRequestsAndExit(writer io.Writer, args []string) { + if len(args) == 0 { + return + } + + matchesHelpFlag := func(args ...string) bool { + for _, arg := range args { + if arg == "--help" || arg == "-help" || arg == "-h" || arg == "--h" { + return true + } + } + return false + } + if len(args) == 1 { + if args[0] == "help" || matchesHelpFlag(args[0]) { + p.EmitUsage(writer) + Abort(AbortDetails{}) + } + } else { + var name string + if args[0] == "help" || matchesHelpFlag(args[0]) { + name = args[1] + } else if matchesHelpFlag(args[1:]...) { + name = args[0] + } else { + return + } + + if p.DefaultCommand.Name == name || p.Name == name { + p.DefaultCommand.EmitUsage(writer) + Abort(AbortDetails{}) + } + for _, command := range p.Commands { + if command.Name == name { + command.EmitUsage(writer) + Abort(AbortDetails{}) + } + } + + fmt.Fprintln(writer, formatter.F("{{red}}Unknown Command: {{bold}}%s{{/}}", name)) + fmt.Fprintln(writer, "") + p.EmitUsage(writer) + Abort(AbortDetails{ExitCode: 1}) + } +} + +func (p Program) EmitUsage(writer io.Writer) { + fmt.Fprintln(writer, formatter.F(p.Heading)) + fmt.Fprintln(writer, formatter.F("{{gray}}%s{{/}}", strings.Repeat("-", len(p.Heading)))) + fmt.Fprintln(writer, formatter.F("For usage information for a command, run {{bold}}%s help COMMAND{{/}}.", p.Name)) + fmt.Fprintln(writer, formatter.F("For usage information for the default command, run {{bold}}%s help %s{{/}} or {{bold}}%s help %s{{/}}.", p.Name, p.Name, p.Name, p.DefaultCommand.Name)) + fmt.Fprintln(writer, "") + fmt.Fprintln(writer, formatter.F("The following commands are available:")) + + fmt.Fprintln(writer, formatter.Fi(1, "{{bold}}%s{{/}} or %s {{bold}}%s{{/}} - {{gray}}%s{{/}}", p.Name, p.Name, p.DefaultCommand.Name, p.DefaultCommand.Usage)) + if p.DefaultCommand.ShortDoc != "" { + fmt.Fprintln(writer, formatter.Fi(2, p.DefaultCommand.ShortDoc)) + } + + for _, command := range p.Commands { + fmt.Fprintln(writer, formatter.Fi(1, "{{bold}}%s{{/}} - {{gray}}%s{{/}}", command.Name, command.Usage)) + if command.ShortDoc != "" { + fmt.Fprintln(writer, formatter.Fi(2, command.ShortDoc)) + } + } +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/boostrap_templates.go b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/boostrap_templates.go new file mode 100644 index 000000000..a367a1fc9 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/boostrap_templates.go @@ -0,0 +1,48 @@ +package generators + +var bootstrapText = `package {{.Package}} + +import ( + "testing" + + {{.GinkgoImport}} + {{.GomegaImport}} +) + +func Test{{.FormattedName}}(t *testing.T) { + {{.GomegaPackage}}RegisterFailHandler({{.GinkgoPackage}}Fail) + {{.GinkgoPackage}}RunSpecs(t, "{{.FormattedName}} Suite") +} +` + +var agoutiBootstrapText = `package {{.Package}} + +import ( + "testing" + + {{.GinkgoImport}} + {{.GomegaImport}} + "github.com/sclevine/agouti" +) + +func Test{{.FormattedName}}(t *testing.T) { + {{.GomegaPackage}}RegisterFailHandler({{.GinkgoPackage}}Fail) + {{.GinkgoPackage}}RunSpecs(t, "{{.FormattedName}} Suite") +} + +var agoutiDriver *agouti.WebDriver + +var _ = {{.GinkgoPackage}}BeforeSuite(func() { + // Choose a WebDriver: + + agoutiDriver = agouti.PhantomJS() + // agoutiDriver = agouti.Selenium() + // agoutiDriver = agouti.ChromeDriver() + + {{.GomegaPackage}}Expect(agoutiDriver.Start()).To({{.GomegaPackage}}Succeed()) +}) + +var _ = {{.GinkgoPackage}}AfterSuite(func() { + {{.GomegaPackage}}Expect(agoutiDriver.Stop()).To({{.GomegaPackage}}Succeed()) +}) +` diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/bootstrap_command.go b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/bootstrap_command.go new file mode 100644 index 000000000..b2dc59be6 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/bootstrap_command.go @@ -0,0 +1,133 @@ +package generators + +import ( + "bytes" + "encoding/json" + "fmt" + "os" + "text/template" + + sprig "github.com/go-task/slim-sprig/v3" + "github.com/onsi/ginkgo/v2/ginkgo/command" + "github.com/onsi/ginkgo/v2/ginkgo/internal" + "github.com/onsi/ginkgo/v2/types" +) + +func BuildBootstrapCommand() command.Command { + conf := GeneratorsConfig{} + flags, err := types.NewGinkgoFlagSet( + types.GinkgoFlags{ + {Name: "agouti", KeyPath: "Agouti", + Usage: "If set, bootstrap will generate a bootstrap file for writing Agouti tests"}, + {Name: "nodot", KeyPath: "NoDot", + Usage: "If set, bootstrap will generate a bootstrap test file that does not dot-import ginkgo and gomega"}, + {Name: "internal", KeyPath: "Internal", + Usage: "If set, bootstrap will generate a bootstrap test file that uses the regular package name (i.e. `package X`, not `package X_test`)"}, + {Name: "template", KeyPath: "CustomTemplate", + UsageArgument: "template-file", + Usage: "If specified, generate will use the contents of the file passed as the bootstrap template"}, + {Name: "template-data", KeyPath: "CustomTemplateData", + UsageArgument: "template-data-file", + Usage: "If specified, generate will use the contents of the file passed as data to be rendered in the bootstrap template"}, + }, + &conf, + types.GinkgoFlagSections{}, + ) + + if err != nil { + panic(err) + } + + return command.Command{ + Name: "bootstrap", + Usage: "ginkgo bootstrap", + ShortDoc: "Bootstrap a test suite for the current package", + Documentation: `Tests written in Ginkgo and Gomega require a small amount of boilerplate to hook into Go's testing infrastructure. + +{{bold}}ginkgo bootstrap{{/}} generates this boilerplate for you in a file named X_suite_test.go where X is the name of the package under test.`, + DocLink: "generators", + Flags: flags, + Command: func(_ []string, _ []string) { + generateBootstrap(conf) + }, + } +} + +type bootstrapData struct { + Package string + FormattedName string + + GinkgoImport string + GomegaImport string + GinkgoPackage string + GomegaPackage string + CustomData map[string]any +} + +func generateBootstrap(conf GeneratorsConfig) { + packageName, bootstrapFilePrefix, formattedName := getPackageAndFormattedName() + + data := bootstrapData{ + Package: determinePackageName(packageName, conf.Internal), + FormattedName: formattedName, + + GinkgoImport: `. "github.com/onsi/ginkgo/v2"`, + GomegaImport: `. "github.com/onsi/gomega"`, + GinkgoPackage: "", + GomegaPackage: "", + } + + if conf.NoDot { + data.GinkgoImport = `"github.com/onsi/ginkgo/v2"` + data.GomegaImport = `"github.com/onsi/gomega"` + data.GinkgoPackage = `ginkgo.` + data.GomegaPackage = `gomega.` + } + + targetFile := fmt.Sprintf("%s_suite_test.go", bootstrapFilePrefix) + if internal.FileExists(targetFile) { + command.AbortWith("{{bold}}%s{{/}} already exists", targetFile) + } else { + fmt.Printf("Generating ginkgo test suite bootstrap for %s in:\n\t%s\n", packageName, targetFile) + } + + f, err := os.Create(targetFile) + command.AbortIfError("Failed to create file:", err) + defer f.Close() + + var templateText string + if conf.CustomTemplate != "" { + tpl, err := os.ReadFile(conf.CustomTemplate) + command.AbortIfError("Failed to read custom bootstrap file:", err) + templateText = string(tpl) + if conf.CustomTemplateData != "" { + var tplCustomDataMap map[string]any + tplCustomData, err := os.ReadFile(conf.CustomTemplateData) + command.AbortIfError("Failed to read custom boostrap data file:", err) + if !json.Valid([]byte(tplCustomData)) { + command.AbortWith("Invalid JSON object in custom data file.") + } + //create map from the custom template data + json.Unmarshal(tplCustomData, &tplCustomDataMap) + data.CustomData = tplCustomDataMap + } + } else if conf.Agouti { + templateText = agoutiBootstrapText + } else { + templateText = bootstrapText + } + + //Setting the option to explicitly fail if template is rendered trying to access missing key + bootstrapTemplate, err := template.New("bootstrap").Funcs(sprig.TxtFuncMap()).Option("missingkey=error").Parse(templateText) + command.AbortIfError("Failed to parse bootstrap template:", err) + + buf := &bytes.Buffer{} + //Being explicit about failing sooner during template rendering + //when accessing custom data rather than during the go fmt command + err = bootstrapTemplate.Execute(buf, data) + command.AbortIfError("Failed to render bootstrap template:", err) + + buf.WriteTo(f) + + internal.GoFmt(targetFile) +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generate_command.go b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generate_command.go new file mode 100644 index 000000000..cf3b7cb6d --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generate_command.go @@ -0,0 +1,265 @@ +package generators + +import ( + "bytes" + "encoding/json" + "fmt" + "os" + "path/filepath" + "strconv" + "strings" + "text/template" + + sprig "github.com/go-task/slim-sprig/v3" + "github.com/onsi/ginkgo/v2/ginkgo/command" + "github.com/onsi/ginkgo/v2/ginkgo/internal" + "github.com/onsi/ginkgo/v2/types" +) + +func BuildGenerateCommand() command.Command { + conf := GeneratorsConfig{} + flags, err := types.NewGinkgoFlagSet( + types.GinkgoFlags{ + {Name: "agouti", KeyPath: "Agouti", + Usage: "If set, generate will create a test file for writing Agouti tests"}, + {Name: "nodot", KeyPath: "NoDot", + Usage: "If set, generate will create a test file that does not dot-import ginkgo and gomega"}, + {Name: "internal", KeyPath: "Internal", + Usage: "If set, generate will create a test file that uses the regular package name (i.e. `package X`, not `package X_test`)"}, + {Name: "template", KeyPath: "CustomTemplate", + UsageArgument: "template-file", + Usage: "If specified, generate will use the contents of the file passed as the test file template"}, + {Name: "template-data", KeyPath: "CustomTemplateData", + UsageArgument: "template-data-file", + Usage: "If specified, generate will use the contents of the file passed as data to be rendered in the test file template"}, + {Name: "tags", KeyPath: "Tags", + UsageArgument: "build-tags", + Usage: "If specified, generate will create a test file that uses the given build tags (i.e. `--tags e2e,!unit` will add `//go:build e2e,!unit`)"}, + }, + &conf, + types.GinkgoFlagSections{}, + ) + + if err != nil { + panic(err) + } + + return command.Command{ + Name: "generate", + Usage: "ginkgo generate ", + ShortDoc: "Generate a test file named _test.go", + Documentation: `If the optional argument is omitted, a file named after the package in the current directory will be created. + +You can pass multiple to generate multiple files simultaneously. The resulting files are named _test.go. + +You can also pass a of the form "file.go" and generate will emit "file_test.go".`, + DocLink: "generators", + Flags: flags, + Command: func(args []string, _ []string) { + generateTestFiles(conf, args) + }, + } +} + +type specData struct { + BuildTags string + Package string + Subject string + PackageImportPath string + ImportPackage bool + + GinkgoImport string + GomegaImport string + GinkgoPackage string + GomegaPackage string + CustomData map[string]any +} + +func generateTestFiles(conf GeneratorsConfig, args []string) { + subjects := args + if len(subjects) == 0 { + subjects = []string{""} + } + for _, subject := range subjects { + generateTestFileForSubject(subject, conf) + } +} + +func generateTestFileForSubject(subject string, conf GeneratorsConfig) { + packageName, specFilePrefix, formattedName := getPackageAndFormattedName() + if subject != "" { + specFilePrefix = formatSubject(subject) + formattedName = prettifyName(specFilePrefix) + } + + if conf.Internal { + specFilePrefix = specFilePrefix + "_internal" + } + + data := specData{ + BuildTags: getBuildTags(conf.Tags), + Package: determinePackageName(packageName, conf.Internal), + Subject: formattedName, + PackageImportPath: getPackageImportPath(), + ImportPackage: !conf.Internal, + + GinkgoImport: `. "github.com/onsi/ginkgo/v2"`, + GomegaImport: `. "github.com/onsi/gomega"`, + GinkgoPackage: "", + GomegaPackage: "", + } + + if conf.NoDot { + data.GinkgoImport = `"github.com/onsi/ginkgo/v2"` + data.GomegaImport = `"github.com/onsi/gomega"` + data.GinkgoPackage = `ginkgo.` + data.GomegaPackage = `gomega.` + } + + targetFile := fmt.Sprintf("%s_test.go", specFilePrefix) + if internal.FileExists(targetFile) { + command.AbortWith("{{bold}}%s{{/}} already exists", targetFile) + } else { + fmt.Printf("Generating ginkgo test for %s in:\n %s\n", data.Subject, targetFile) + } + + f, err := os.Create(targetFile) + command.AbortIfError("Failed to create test file:", err) + defer f.Close() + + var templateText string + if conf.CustomTemplate != "" { + tpl, err := os.ReadFile(conf.CustomTemplate) + command.AbortIfError("Failed to read custom template file:", err) + templateText = string(tpl) + if conf.CustomTemplateData != "" { + var tplCustomDataMap map[string]any + tplCustomData, err := os.ReadFile(conf.CustomTemplateData) + command.AbortIfError("Failed to read custom template data file:", err) + if !json.Valid([]byte(tplCustomData)) { + command.AbortWith("Invalid JSON object in custom data file.") + } + //create map from the custom template data + json.Unmarshal(tplCustomData, &tplCustomDataMap) + data.CustomData = tplCustomDataMap + } + } else if conf.Agouti { + templateText = agoutiSpecText + } else { + templateText = specText + } + + //Setting the option to explicitly fail if template is rendered trying to access missing key + specTemplate, err := template.New("spec").Funcs(sprig.TxtFuncMap()).Option("missingkey=error").Parse(templateText) + command.AbortIfError("Failed to read parse test template:", err) + + //Being explicit about failing sooner during template rendering + //when accessing custom data rather than during the go fmt command + err = specTemplate.Execute(f, data) + command.AbortIfError("Failed to render bootstrap template:", err) + internal.GoFmt(targetFile) +} + +func formatSubject(name string) string { + name = strings.ReplaceAll(name, "-", "_") + name = strings.ReplaceAll(name, " ", "_") + name = strings.Split(name, ".go")[0] + name = strings.Split(name, "_test")[0] + return name +} + +// moduleName returns module name from go.mod from given module root directory +func moduleName(modRoot string) string { + modFile, err := os.Open(filepath.Join(modRoot, "go.mod")) + if err != nil { + return "" + } + defer modFile.Close() + + mod := make([]byte, 128) + _, err = modFile.Read(mod) + if err != nil { + return "" + } + + slashSlash := []byte("//") + moduleStr := []byte("module") + + for len(mod) > 0 { + line := mod + mod = nil + if i := bytes.IndexByte(line, '\n'); i >= 0 { + line, mod = line[:i], line[i+1:] + } + if i := bytes.Index(line, slashSlash); i >= 0 { + line = line[:i] + } + line = bytes.TrimSpace(line) + if !bytes.HasPrefix(line, moduleStr) { + continue + } + line = line[len(moduleStr):] + n := len(line) + line = bytes.TrimSpace(line) + if len(line) == n || len(line) == 0 { + continue + } + + if line[0] == '"' || line[0] == '`' { + p, err := strconv.Unquote(string(line)) + if err != nil { + return "" // malformed quoted string or multiline module path + } + return p + } + + return string(line) + } + + return "" // missing module path +} + +func findModuleRoot(dir string) (root string) { + dir = filepath.Clean(dir) + + // Look for enclosing go.mod. + for { + if fi, err := os.Stat(filepath.Join(dir, "go.mod")); err == nil && !fi.IsDir() { + return dir + } + d := filepath.Dir(dir) + if d == dir { + break + } + dir = d + } + return "" +} + +func getPackageImportPath() string { + workingDir, err := os.Getwd() + if err != nil { + panic(err.Error()) + } + + sep := string(filepath.Separator) + + // Try go.mod file first + modRoot := findModuleRoot(workingDir) + if modRoot != "" { + modName := moduleName(modRoot) + if modName != "" { + cd := strings.ReplaceAll(workingDir, modRoot, "") + cd = strings.ReplaceAll(cd, sep, "/") + return modName + cd + } + } + + // Fallback to GOPATH structure + paths := strings.Split(workingDir, sep+"src"+sep) + if len(paths) == 1 { + fmt.Printf("\nCouldn't identify package import path.\n\n\tginkgo generate\n\nMust be run within a package directory under $GOPATH/src/...\nYou're going to have to change UNKNOWN_PACKAGE_PATH in the generated file...\n\n") + return "UNKNOWN_PACKAGE_PATH" + } + return filepath.ToSlash(paths[len(paths)-1]) +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generate_templates.go b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generate_templates.go new file mode 100644 index 000000000..4dab07d03 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generate_templates.go @@ -0,0 +1,43 @@ +package generators + +var specText = `{{.BuildTags}} +package {{.Package}} + +import ( + {{.GinkgoImport}} + {{.GomegaImport}} + + {{if .ImportPackage}}"{{.PackageImportPath}}"{{end}} +) + +var _ = {{.GinkgoPackage}}Describe("{{.Subject}}", func() { + +}) +` + +var agoutiSpecText = `{{.BuildTags}} +package {{.Package}} + +import ( + {{.GinkgoImport}} + {{.GomegaImport}} + "github.com/sclevine/agouti" + . "github.com/sclevine/agouti/matchers" + + {{if .ImportPackage}}"{{.PackageImportPath}}"{{end}} +) + +var _ = {{.GinkgoPackage}}Describe("{{.Subject}}", func() { + var page *agouti.Page + + {{.GinkgoPackage}}BeforeEach(func() { + var err error + page, err = agoutiDriver.NewPage() + {{.GomegaPackage}}Expect(err).NotTo({{.GomegaPackage}}HaveOccurred()) + }) + + {{.GinkgoPackage}}AfterEach(func() { + {{.GomegaPackage}}Expect(page.Destroy()).To({{.GomegaPackage}}Succeed()) + }) +}) +` diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generators_common.go b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generators_common.go new file mode 100644 index 000000000..28c7aa6f4 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/generators/generators_common.go @@ -0,0 +1,76 @@ +package generators + +import ( + "fmt" + "go/build" + "os" + "path/filepath" + "strconv" + "strings" + + "github.com/onsi/ginkgo/v2/ginkgo/command" +) + +type GeneratorsConfig struct { + Agouti, NoDot, Internal bool + CustomTemplate string + CustomTemplateData string + Tags string +} + +func getPackageAndFormattedName() (string, string, string) { + path, err := os.Getwd() + command.AbortIfError("Could not get current working directory:", err) + + dirName := strings.ReplaceAll(filepath.Base(path), "-", "_") + dirName = strings.ReplaceAll(dirName, " ", "_") + + pkg, err := build.ImportDir(path, 0) + packageName := pkg.Name + if err != nil { + packageName = ensureLegalPackageName(dirName) + } + + formattedName := prettifyName(filepath.Base(path)) + return packageName, dirName, formattedName +} + +func ensureLegalPackageName(name string) string { + if name == "_" { + return "underscore" + } + if len(name) == 0 { + return "empty" + } + n, isDigitErr := strconv.Atoi(string(name[0])) + if isDigitErr == nil { + return []string{"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}[n] + name[1:] + } + return name +} + +func prettifyName(name string) string { + name = strings.ReplaceAll(name, "-", " ") + name = strings.ReplaceAll(name, "_", " ") + name = strings.Title(name) + name = strings.ReplaceAll(name, " ", "") + return name +} + +func determinePackageName(name string, internal bool) string { + if internal { + return name + } + + return name + "_test" +} + +// getBuildTags returns the resultant string to be added. +// If the input string is not empty, then returns a `//go:build {}` string, +// otherwise returns an empty string. +func getBuildTags(tags string) string { + if tags != "" { + return fmt.Sprintf("//go:build %s\n", tags) + } + return "" +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/compile.go b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/compile.go new file mode 100644 index 000000000..7bbe6be0f --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/compile.go @@ -0,0 +1,173 @@ +package internal + +import ( + "fmt" + "os" + "os/exec" + "path/filepath" + "strings" + "sync" + + "github.com/onsi/ginkgo/v2/types" +) + +func CompileSuite(suite TestSuite, goFlagsConfig types.GoFlagsConfig, preserveSymbols bool) TestSuite { + if suite.PathToCompiledTest != "" { + return suite + } + + suite.CompilationError = nil + + path, err := filepath.Abs(filepath.Join(suite.Path, suite.PackageName+".test")) + if err != nil { + suite.State = TestSuiteStateFailedToCompile + suite.CompilationError = fmt.Errorf("Failed to compute compilation target path:\n%s", err.Error()) + return suite + } + + if len(goFlagsConfig.O) > 0 { + userDefinedPath, err := filepath.Abs(goFlagsConfig.O) + if err != nil { + suite.State = TestSuiteStateFailedToCompile + suite.CompilationError = fmt.Errorf("Failed to compute compilation target path %s:\n%s", goFlagsConfig.O, err.Error()) + return suite + } + path = userDefinedPath + } + + goFlagsConfig.O = path + + ginkgoInvocationPath, _ := os.Getwd() + ginkgoInvocationPath, _ = filepath.Abs(ginkgoInvocationPath) + packagePath := suite.AbsPath() + pathToInvocationPath, err := filepath.Rel(packagePath, ginkgoInvocationPath) + if err != nil { + suite.State = TestSuiteStateFailedToCompile + suite.CompilationError = fmt.Errorf("Failed to get relative path from package to the current working directory:\n%s", err.Error()) + return suite + } + args, err := types.GenerateGoTestCompileArgs(goFlagsConfig, "./", pathToInvocationPath, preserveSymbols) + if err != nil { + suite.State = TestSuiteStateFailedToCompile + suite.CompilationError = fmt.Errorf("Failed to generate go test compile flags:\n%s", err.Error()) + return suite + } + + cmd := exec.Command("go", args...) + cmd.Dir = suite.Path + output, err := cmd.CombinedOutput() + if err != nil { + if len(output) > 0 { + suite.State = TestSuiteStateFailedToCompile + suite.CompilationError = fmt.Errorf("Failed to compile %s:\n\n%s", suite.PackageName, output) + } else { + suite.State = TestSuiteStateFailedToCompile + suite.CompilationError = fmt.Errorf("Failed to compile %s\n%s", suite.PackageName, err.Error()) + } + return suite + } + + if strings.Contains(string(output), "[no test files]") { + suite.State = TestSuiteStateSkippedDueToEmptyCompilation + return suite + } + + if len(output) > 0 { + fmt.Println(string(output)) + } + + if !FileExists(path) { + suite.State = TestSuiteStateFailedToCompile + suite.CompilationError = fmt.Errorf("Failed to compile %s:\nOutput file %s could not be found", suite.PackageName, path) + return suite + } + + suite.State = TestSuiteStateCompiled + suite.PathToCompiledTest = path + return suite +} + +func Cleanup(goFlagsConfig types.GoFlagsConfig, suites ...TestSuite) { + if goFlagsConfig.BinaryMustBePreserved() { + return + } + for _, suite := range suites { + if !suite.Precompiled { + os.Remove(suite.PathToCompiledTest) + } + } +} + +type parallelSuiteBundle struct { + suite TestSuite + compiled chan TestSuite +} + +type OrderedParallelCompiler struct { + mutex *sync.Mutex + stopped bool + numCompilers int + + idx int + numSuites int + completionChannels []chan TestSuite +} + +func NewOrderedParallelCompiler(numCompilers int) *OrderedParallelCompiler { + return &OrderedParallelCompiler{ + mutex: &sync.Mutex{}, + numCompilers: numCompilers, + } +} + +func (opc *OrderedParallelCompiler) StartCompiling(suites TestSuites, goFlagsConfig types.GoFlagsConfig, preserveSymbols bool) { + opc.stopped = false + opc.idx = 0 + opc.numSuites = len(suites) + opc.completionChannels = make([]chan TestSuite, opc.numSuites) + + toCompile := make(chan parallelSuiteBundle, opc.numCompilers) + for compiler := 0; compiler < opc.numCompilers; compiler++ { + go func() { + for bundle := range toCompile { + c, suite := bundle.compiled, bundle.suite + opc.mutex.Lock() + stopped := opc.stopped + opc.mutex.Unlock() + if !stopped { + suite = CompileSuite(suite, goFlagsConfig, preserveSymbols) + } + c <- suite + } + }() + } + + for idx, suite := range suites { + opc.completionChannels[idx] = make(chan TestSuite, 1) + toCompile <- parallelSuiteBundle{suite, opc.completionChannels[idx]} + if idx == 0 { //compile first suite serially + suite = <-opc.completionChannels[0] + opc.completionChannels[0] <- suite + } + } + + close(toCompile) +} + +func (opc *OrderedParallelCompiler) Next() (int, TestSuite) { + if opc.idx >= opc.numSuites { + return opc.numSuites, TestSuite{} + } + + idx := opc.idx + suite := <-opc.completionChannels[idx] + opc.idx = opc.idx + 1 + + return idx, suite +} + +func (opc *OrderedParallelCompiler) StopAndDrain() { + opc.mutex.Lock() + opc.stopped = true + opc.mutex.Unlock() +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/gocovmerge.go b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/gocovmerge.go new file mode 100644 index 000000000..87cfa1119 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/gocovmerge.go @@ -0,0 +1,129 @@ +// Copyright (c) 2015, Wade Simmons +// All rights reserved. + +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: + +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. + +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Package gocovmerge takes the results from multiple `go test -coverprofile` +// runs and merges them into one profile + +// this file was originally taken from the gocovmerge project +// see also: https://go.shabbyrobe.org/gocovmerge +package internal + +import ( + "fmt" + "io" + "sort" + + "golang.org/x/tools/cover" +) + +func AddCoverProfile(profiles []*cover.Profile, p *cover.Profile) []*cover.Profile { + i := sort.Search(len(profiles), func(i int) bool { return profiles[i].FileName >= p.FileName }) + if i < len(profiles) && profiles[i].FileName == p.FileName { + MergeCoverProfiles(profiles[i], p) + } else { + profiles = append(profiles, nil) + copy(profiles[i+1:], profiles[i:]) + profiles[i] = p + } + return profiles +} + +func DumpCoverProfiles(profiles []*cover.Profile, out io.Writer) error { + if len(profiles) == 0 { + return nil + } + if _, err := fmt.Fprintf(out, "mode: %s\n", profiles[0].Mode); err != nil { + return err + } + for _, p := range profiles { + for _, b := range p.Blocks { + if _, err := fmt.Fprintf(out, "%s:%d.%d,%d.%d %d %d\n", p.FileName, b.StartLine, b.StartCol, b.EndLine, b.EndCol, b.NumStmt, b.Count); err != nil { + return err + } + } + } + return nil +} + +func MergeCoverProfiles(into *cover.Profile, merge *cover.Profile) error { + if into.Mode != merge.Mode { + return fmt.Errorf("cannot merge profiles with different modes") + } + // Since the blocks are sorted, we can keep track of where the last block + // was inserted and only look at the blocks after that as targets for merge + startIndex := 0 + for _, b := range merge.Blocks { + var err error + startIndex, err = mergeProfileBlock(into, b, startIndex) + if err != nil { + return err + } + } + return nil +} + +func mergeProfileBlock(p *cover.Profile, pb cover.ProfileBlock, startIndex int) (int, error) { + sortFunc := func(i int) bool { + pi := p.Blocks[i+startIndex] + return pi.StartLine >= pb.StartLine && (pi.StartLine != pb.StartLine || pi.StartCol >= pb.StartCol) + } + + i := 0 + if !sortFunc(i) { + i = sort.Search(len(p.Blocks)-startIndex, sortFunc) + } + + i += startIndex + if i < len(p.Blocks) && p.Blocks[i].StartLine == pb.StartLine && p.Blocks[i].StartCol == pb.StartCol { + if p.Blocks[i].EndLine != pb.EndLine || p.Blocks[i].EndCol != pb.EndCol { + return i, fmt.Errorf("gocovmerge: overlapping merge %v %v %v", p.FileName, p.Blocks[i], pb) + } + switch p.Mode { + case "set": + p.Blocks[i].Count |= pb.Count + case "count", "atomic": + p.Blocks[i].Count += pb.Count + default: + return i, fmt.Errorf("gocovmerge: unsupported covermode '%s'", p.Mode) + } + + } else { + if i > 0 { + pa := p.Blocks[i-1] + if pa.EndLine >= pb.EndLine && (pa.EndLine != pb.EndLine || pa.EndCol > pb.EndCol) { + return i, fmt.Errorf("gocovmerge: overlap before %v %v %v", p.FileName, pa, pb) + } + } + if i < len(p.Blocks)-1 { + pa := p.Blocks[i+1] + if pa.StartLine <= pb.StartLine && (pa.StartLine != pb.StartLine || pa.StartCol < pb.StartCol) { + return i, fmt.Errorf("gocovmerge: overlap after %v %v %v", p.FileName, pa, pb) + } + } + p.Blocks = append(p.Blocks, cover.ProfileBlock{}) + copy(p.Blocks[i+1:], p.Blocks[i:]) + p.Blocks[i] = pb + } + + return i + 1, nil +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/profiles_and_reports.go b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/profiles_and_reports.go new file mode 100644 index 000000000..8e16d2bb0 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/profiles_and_reports.go @@ -0,0 +1,227 @@ +package internal + +import ( + "fmt" + "os" + "os/exec" + "path/filepath" + "regexp" + "strconv" + + "github.com/google/pprof/profile" + "github.com/onsi/ginkgo/v2/reporters" + "github.com/onsi/ginkgo/v2/types" + "golang.org/x/tools/cover" +) + +func AbsPathForGeneratedAsset(assetName string, suite TestSuite, cliConfig types.CLIConfig, process int) string { + suffix := "" + if process != 0 { + suffix = fmt.Sprintf(".%d", process) + } + if cliConfig.OutputDir == "" { + return filepath.Join(suite.AbsPath(), assetName+suffix) + } + outputDir, _ := filepath.Abs(cliConfig.OutputDir) + return filepath.Join(outputDir, suite.NamespacedName()+"_"+assetName+suffix) +} + +func FinalizeProfilesAndReportsForSuites(suites TestSuites, cliConfig types.CLIConfig, suiteConfig types.SuiteConfig, reporterConfig types.ReporterConfig, goFlagsConfig types.GoFlagsConfig) ([]string, error) { + messages := []string{} + suitesWithProfiles := suites.WithState(TestSuiteStatePassed, TestSuiteStateFailed) //anything else won't have actually run and generated a profile + + // merge cover profiles if need be + if goFlagsConfig.Cover && !cliConfig.KeepSeparateCoverprofiles { + coverProfiles := []string{} + for _, suite := range suitesWithProfiles { + if !suite.HasProgrammaticFocus { + coverProfiles = append(coverProfiles, AbsPathForGeneratedAsset(goFlagsConfig.CoverProfile, suite, cliConfig, 0)) + } + } + + if len(coverProfiles) > 0 { + dst := goFlagsConfig.CoverProfile + if cliConfig.OutputDir != "" { + dst = filepath.Join(cliConfig.OutputDir, goFlagsConfig.CoverProfile) + } + err := MergeAndCleanupCoverProfiles(coverProfiles, dst) + if err != nil { + return messages, err + } + coverage, err := GetCoverageFromCoverProfile(dst) + if err != nil { + return messages, err + } + if coverage == 0 { + messages = append(messages, "composite coverage: [no statements]") + } else if suitesWithProfiles.AnyHaveProgrammaticFocus() { + messages = append(messages, fmt.Sprintf("composite coverage: %.1f%% of statements however some suites did not contribute because they included programatically focused specs", coverage)) + } else { + messages = append(messages, fmt.Sprintf("composite coverage: %.1f%% of statements", coverage)) + } + } else { + messages = append(messages, "no composite coverage computed: all suites included programatically focused specs") + } + } + + // copy binaries if need be + for _, suite := range suitesWithProfiles { + if goFlagsConfig.BinaryMustBePreserved() && cliConfig.OutputDir != "" { + src := suite.PathToCompiledTest + dst := filepath.Join(cliConfig.OutputDir, suite.NamespacedName()+".test") + if suite.Precompiled { + if err := CopyFile(src, dst); err != nil { + return messages, err + } + } else { + if err := os.Rename(src, dst); err != nil { + return messages, err + } + } + } + } + + type reportFormat struct { + ReportName string + GenerateFunc func(types.Report, string) error + MergeFunc func([]string, string) ([]string, error) + } + reportFormats := []reportFormat{} + if reporterConfig.JSONReport != "" { + reportFormats = append(reportFormats, reportFormat{ReportName: reporterConfig.JSONReport, GenerateFunc: reporters.GenerateJSONReport, MergeFunc: reporters.MergeAndCleanupJSONReports}) + } + if reporterConfig.JUnitReport != "" { + reportFormats = append(reportFormats, reportFormat{ReportName: reporterConfig.JUnitReport, GenerateFunc: reporters.GenerateJUnitReport, MergeFunc: reporters.MergeAndCleanupJUnitReports}) + } + if reporterConfig.TeamcityReport != "" { + reportFormats = append(reportFormats, reportFormat{ReportName: reporterConfig.TeamcityReport, GenerateFunc: reporters.GenerateTeamcityReport, MergeFunc: reporters.MergeAndCleanupTeamcityReports}) + } + + // Generate reports for suites that failed to run + reportableSuites := suites.ThatAreGinkgoSuites() + for _, suite := range reportableSuites.WithState(TestSuiteStateFailedToCompile, TestSuiteStateFailedDueToTimeout, TestSuiteStateSkippedDueToPriorFailures, TestSuiteStateSkippedDueToEmptyCompilation) { + report := types.Report{ + SuitePath: suite.AbsPath(), + SuiteConfig: suiteConfig, + SuiteSucceeded: false, + } + switch suite.State { + case TestSuiteStateFailedToCompile: + report.SpecialSuiteFailureReasons = append(report.SpecialSuiteFailureReasons, suite.CompilationError.Error()) + case TestSuiteStateFailedDueToTimeout: + report.SpecialSuiteFailureReasons = append(report.SpecialSuiteFailureReasons, TIMEOUT_ELAPSED_FAILURE_REASON) + case TestSuiteStateSkippedDueToPriorFailures: + report.SpecialSuiteFailureReasons = append(report.SpecialSuiteFailureReasons, PRIOR_FAILURES_FAILURE_REASON) + case TestSuiteStateSkippedDueToEmptyCompilation: + report.SpecialSuiteFailureReasons = append(report.SpecialSuiteFailureReasons, EMPTY_SKIP_FAILURE_REASON) + report.SuiteSucceeded = true + } + + for _, format := range reportFormats { + format.GenerateFunc(report, AbsPathForGeneratedAsset(format.ReportName, suite, cliConfig, 0)) + } + } + + // Merge reports unless we've been asked to keep them separate + if !cliConfig.KeepSeparateReports { + for _, format := range reportFormats { + reports := []string{} + for _, suite := range reportableSuites { + reports = append(reports, AbsPathForGeneratedAsset(format.ReportName, suite, cliConfig, 0)) + } + dst := format.ReportName + if cliConfig.OutputDir != "" { + dst = filepath.Join(cliConfig.OutputDir, format.ReportName) + } + mergeMessages, err := format.MergeFunc(reports, dst) + messages = append(messages, mergeMessages...) + if err != nil { + return messages, err + } + } + } + + return messages, nil +} + +// loads each profile, merges them, deletes them, stores them in destination +func MergeAndCleanupCoverProfiles(profiles []string, destination string) error { + var merged []*cover.Profile + for _, file := range profiles { + parsedProfiles, err := cover.ParseProfiles(file) + if err != nil { + return err + } + os.Remove(file) + for _, p := range parsedProfiles { + merged = AddCoverProfile(merged, p) + } + } + dst, err := os.OpenFile(destination, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0666) + if err != nil { + return err + } + defer dst.Close() + err = DumpCoverProfiles(merged, dst) + if err != nil { + return err + } + return nil +} + +func GetCoverageFromCoverProfile(profile string) (float64, error) { + cmd := exec.Command("go", "tool", "cover", "-func", profile) + output, err := cmd.CombinedOutput() + if err != nil { + return 0, fmt.Errorf("Could not process Coverprofile %s: %s - %s", profile, err.Error(), string(output)) + } + re := regexp.MustCompile(`total:\s*\(statements\)\s*(\d*\.\d*)\%`) + matches := re.FindStringSubmatch(string(output)) + if matches == nil { + return 0, fmt.Errorf("Could not parse Coverprofile to compute coverage percentage") + } + coverageString := matches[1] + coverage, err := strconv.ParseFloat(coverageString, 64) + if err != nil { + return 0, fmt.Errorf("Could not parse Coverprofile to compute coverage percentage: %s", err.Error()) + } + + return coverage, nil +} + +func MergeProfiles(profilePaths []string, destination string) error { + profiles := []*profile.Profile{} + for _, profilePath := range profilePaths { + proFile, err := os.Open(profilePath) + if err != nil { + return fmt.Errorf("Could not open profile: %s\n%s", profilePath, err.Error()) + } + prof, err := profile.Parse(proFile) + _ = proFile.Close() + if err != nil { + return fmt.Errorf("Could not parse profile: %s\n%s", profilePath, err.Error()) + } + profiles = append(profiles, prof) + os.Remove(profilePath) + } + + mergedProfile, err := profile.Merge(profiles) + if err != nil { + return fmt.Errorf("Could not merge profiles:\n%s", err.Error()) + } + + outFile, err := os.Create(destination) + if err != nil { + return fmt.Errorf("Could not create merged profile %s:\n%s", destination, err.Error()) + } + err = mergedProfile.Write(outFile) + if err != nil { + return fmt.Errorf("Could not write merged profile %s:\n%s", destination, err.Error()) + } + err = outFile.Close() + if err != nil { + return fmt.Errorf("Could not close merged profile %s:\n%s", destination, err.Error()) + } + + return nil +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/run.go b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/run.go new file mode 100644 index 000000000..41052ea19 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/run.go @@ -0,0 +1,355 @@ +package internal + +import ( + "bytes" + "fmt" + "io" + "os" + "os/exec" + "path/filepath" + "regexp" + "strings" + "syscall" + "time" + + "github.com/onsi/ginkgo/v2/formatter" + "github.com/onsi/ginkgo/v2/ginkgo/command" + "github.com/onsi/ginkgo/v2/internal/parallel_support" + "github.com/onsi/ginkgo/v2/reporters" + "github.com/onsi/ginkgo/v2/types" +) + +func RunCompiledSuite(suite TestSuite, ginkgoConfig types.SuiteConfig, reporterConfig types.ReporterConfig, cliConfig types.CLIConfig, goFlagsConfig types.GoFlagsConfig, additionalArgs []string) TestSuite { + suite.State = TestSuiteStateFailed + suite.HasProgrammaticFocus = false + + if suite.PathToCompiledTest == "" { + return suite + } + + if suite.IsGinkgo && cliConfig.ComputedProcs() > 1 { + suite = runParallel(suite, ginkgoConfig, reporterConfig, cliConfig, goFlagsConfig, additionalArgs) + } else if suite.IsGinkgo { + suite = runSerial(suite, ginkgoConfig, reporterConfig, cliConfig, goFlagsConfig, additionalArgs) + } else { + suite = runGoTest(suite, cliConfig, goFlagsConfig) + } + runAfterRunHook(cliConfig.AfterRunHook, reporterConfig.NoColor, suite) + return suite +} + +func buildAndStartCommand(suite TestSuite, args []string, pipeToStdout bool) (*exec.Cmd, *bytes.Buffer) { + buf := &bytes.Buffer{} + cmd := exec.Command(suite.PathToCompiledTest, args...) + cmd.Dir = suite.Path + if pipeToStdout { + cmd.Stderr = io.MultiWriter(os.Stdout, buf) + cmd.Stdout = os.Stdout + } else { + cmd.Stderr = buf + cmd.Stdout = buf + } + err := cmd.Start() + command.AbortIfError("Failed to start test suite", err) + + return cmd, buf +} + +func checkForNoTestsWarning(buf *bytes.Buffer) bool { + if strings.Contains(buf.String(), "warning: no tests to run") { + fmt.Fprintf(os.Stderr, `Found no test suites, did you forget to run "ginkgo bootstrap"?`) + return true + } + return false +} + +func runGoTest(suite TestSuite, cliConfig types.CLIConfig, goFlagsConfig types.GoFlagsConfig) TestSuite { + // As we run the go test from the suite directory, make sure the cover profile is absolute + // and placed into the expected output directory when one is configured. + if goFlagsConfig.Cover && !filepath.IsAbs(goFlagsConfig.CoverProfile) { + goFlagsConfig.CoverProfile = AbsPathForGeneratedAsset(goFlagsConfig.CoverProfile, suite, cliConfig, 0) + } + + args, err := types.GenerateGoTestRunArgs(goFlagsConfig) + command.AbortIfError("Failed to generate test run arguments", err) + cmd, buf := buildAndStartCommand(suite, args, true) + + cmd.Wait() + + exitStatus := cmd.ProcessState.Sys().(syscall.WaitStatus).ExitStatus() + passed := (exitStatus == 0) || (exitStatus == types.GINKGO_FOCUS_EXIT_CODE) + passed = !(checkForNoTestsWarning(buf) && cliConfig.RequireSuite) && passed + if passed { + suite.State = TestSuiteStatePassed + } else { + suite.State = TestSuiteStateFailed + } + + return suite +} + +func runSerial(suite TestSuite, ginkgoConfig types.SuiteConfig, reporterConfig types.ReporterConfig, cliConfig types.CLIConfig, goFlagsConfig types.GoFlagsConfig, additionalArgs []string) TestSuite { + if goFlagsConfig.Cover { + goFlagsConfig.CoverProfile = AbsPathForGeneratedAsset(goFlagsConfig.CoverProfile, suite, cliConfig, 0) + } + if goFlagsConfig.BlockProfile != "" { + goFlagsConfig.BlockProfile = AbsPathForGeneratedAsset(goFlagsConfig.BlockProfile, suite, cliConfig, 0) + } + if goFlagsConfig.CPUProfile != "" { + goFlagsConfig.CPUProfile = AbsPathForGeneratedAsset(goFlagsConfig.CPUProfile, suite, cliConfig, 0) + } + if goFlagsConfig.MemProfile != "" { + goFlagsConfig.MemProfile = AbsPathForGeneratedAsset(goFlagsConfig.MemProfile, suite, cliConfig, 0) + } + if goFlagsConfig.MutexProfile != "" { + goFlagsConfig.MutexProfile = AbsPathForGeneratedAsset(goFlagsConfig.MutexProfile, suite, cliConfig, 0) + } + if reporterConfig.JSONReport != "" { + reporterConfig.JSONReport = AbsPathForGeneratedAsset(reporterConfig.JSONReport, suite, cliConfig, 0) + } + if reporterConfig.JUnitReport != "" { + reporterConfig.JUnitReport = AbsPathForGeneratedAsset(reporterConfig.JUnitReport, suite, cliConfig, 0) + } + if reporterConfig.TeamcityReport != "" { + reporterConfig.TeamcityReport = AbsPathForGeneratedAsset(reporterConfig.TeamcityReport, suite, cliConfig, 0) + } + + args, err := types.GenerateGinkgoTestRunArgs(ginkgoConfig, reporterConfig, goFlagsConfig) + command.AbortIfError("Failed to generate test run arguments", err) + args = append([]string{"--test.timeout=0"}, args...) + args = append(args, additionalArgs...) + + cmd, buf := buildAndStartCommand(suite, args, true) + + cmd.Wait() + + exitStatus := cmd.ProcessState.Sys().(syscall.WaitStatus).ExitStatus() + suite.HasProgrammaticFocus = (exitStatus == types.GINKGO_FOCUS_EXIT_CODE) + passed := (exitStatus == 0) || (exitStatus == types.GINKGO_FOCUS_EXIT_CODE) + passed = !(checkForNoTestsWarning(buf) && cliConfig.RequireSuite) && passed + if passed { + suite.State = TestSuiteStatePassed + } else { + suite.State = TestSuiteStateFailed + } + + if suite.HasProgrammaticFocus { + if goFlagsConfig.Cover { + fmt.Fprintln(os.Stdout, "coverage: no coverfile was generated because specs are programmatically focused") + } + if goFlagsConfig.BlockProfile != "" { + fmt.Fprintln(os.Stdout, "no block profile was generated because specs are programmatically focused") + } + if goFlagsConfig.CPUProfile != "" { + fmt.Fprintln(os.Stdout, "no cpu profile was generated because specs are programmatically focused") + } + if goFlagsConfig.MemProfile != "" { + fmt.Fprintln(os.Stdout, "no mem profile was generated because specs are programmatically focused") + } + if goFlagsConfig.MutexProfile != "" { + fmt.Fprintln(os.Stdout, "no mutex profile was generated because specs are programmatically focused") + } + } + + return suite +} + +func runParallel(suite TestSuite, ginkgoConfig types.SuiteConfig, reporterConfig types.ReporterConfig, cliConfig types.CLIConfig, goFlagsConfig types.GoFlagsConfig, additionalArgs []string) TestSuite { + type procResult struct { + passed bool + hasProgrammaticFocus bool + } + + numProcs := cliConfig.ComputedProcs() + procOutput := make([]*bytes.Buffer, numProcs) + coverProfiles := []string{} + + blockProfiles := []string{} + cpuProfiles := []string{} + memProfiles := []string{} + mutexProfiles := []string{} + + procResults := make(chan procResult) + + server, err := parallel_support.NewServer(numProcs, reporters.NewDefaultReporter(reporterConfig, formatter.ColorableStdOut)) + command.AbortIfError("Failed to start parallel spec server", err) + server.Start() + defer server.Close() + + if reporterConfig.JSONReport != "" { + reporterConfig.JSONReport = AbsPathForGeneratedAsset(reporterConfig.JSONReport, suite, cliConfig, 0) + } + if reporterConfig.JUnitReport != "" { + reporterConfig.JUnitReport = AbsPathForGeneratedAsset(reporterConfig.JUnitReport, suite, cliConfig, 0) + } + if reporterConfig.TeamcityReport != "" { + reporterConfig.TeamcityReport = AbsPathForGeneratedAsset(reporterConfig.TeamcityReport, suite, cliConfig, 0) + } + + for proc := 1; proc <= numProcs; proc++ { + procGinkgoConfig := ginkgoConfig + procGinkgoConfig.ParallelProcess, procGinkgoConfig.ParallelTotal, procGinkgoConfig.ParallelHost = proc, numProcs, server.Address() + + procGoFlagsConfig := goFlagsConfig + if goFlagsConfig.Cover { + procGoFlagsConfig.CoverProfile = AbsPathForGeneratedAsset(goFlagsConfig.CoverProfile, suite, cliConfig, proc) + coverProfiles = append(coverProfiles, procGoFlagsConfig.CoverProfile) + } + if goFlagsConfig.BlockProfile != "" { + procGoFlagsConfig.BlockProfile = AbsPathForGeneratedAsset(goFlagsConfig.BlockProfile, suite, cliConfig, proc) + blockProfiles = append(blockProfiles, procGoFlagsConfig.BlockProfile) + } + if goFlagsConfig.CPUProfile != "" { + procGoFlagsConfig.CPUProfile = AbsPathForGeneratedAsset(goFlagsConfig.CPUProfile, suite, cliConfig, proc) + cpuProfiles = append(cpuProfiles, procGoFlagsConfig.CPUProfile) + } + if goFlagsConfig.MemProfile != "" { + procGoFlagsConfig.MemProfile = AbsPathForGeneratedAsset(goFlagsConfig.MemProfile, suite, cliConfig, proc) + memProfiles = append(memProfiles, procGoFlagsConfig.MemProfile) + } + if goFlagsConfig.MutexProfile != "" { + procGoFlagsConfig.MutexProfile = AbsPathForGeneratedAsset(goFlagsConfig.MutexProfile, suite, cliConfig, proc) + mutexProfiles = append(mutexProfiles, procGoFlagsConfig.MutexProfile) + } + + args, err := types.GenerateGinkgoTestRunArgs(procGinkgoConfig, reporterConfig, procGoFlagsConfig) + command.AbortIfError("Failed to generate test run arguments", err) + args = append([]string{"--test.timeout=0"}, args...) + args = append(args, additionalArgs...) + + cmd, buf := buildAndStartCommand(suite, args, false) + procOutput[proc-1] = buf + server.RegisterAlive(proc, func() bool { return cmd.ProcessState == nil || !cmd.ProcessState.Exited() }) + + go func() { + cmd.Wait() + exitStatus := cmd.ProcessState.Sys().(syscall.WaitStatus).ExitStatus() + procResults <- procResult{ + passed: (exitStatus == 0) || (exitStatus == types.GINKGO_FOCUS_EXIT_CODE), + hasProgrammaticFocus: exitStatus == types.GINKGO_FOCUS_EXIT_CODE, + } + }() + } + + passed := true + for proc := 1; proc <= cliConfig.ComputedProcs(); proc++ { + result := <-procResults + passed = passed && result.passed + suite.HasProgrammaticFocus = suite.HasProgrammaticFocus || result.hasProgrammaticFocus + } + if passed { + suite.State = TestSuiteStatePassed + } else { + suite.State = TestSuiteStateFailed + } + + select { + case <-server.GetSuiteDone(): + fmt.Println("") + case <-time.After(time.Second): + //one of the nodes never finished reporting to the server. Something must have gone wrong. + fmt.Fprint(formatter.ColorableStdErr, formatter.F("\n{{bold}}{{red}}Ginkgo timed out waiting for all parallel procs to report back{{/}}\n")) + fmt.Fprint(formatter.ColorableStdErr, formatter.F("{{gray}}Test suite:{{/}} %s (%s)\n\n", suite.PackageName, suite.Path)) + fmt.Fprint(formatter.ColorableStdErr, formatter.Fiw(0, formatter.COLS, "This occurs if a parallel process exits before it reports its results to the Ginkgo CLI. The CLI will now print out all the stdout/stderr output it's collected from the running processes. However you may not see anything useful in these logs because the individual test processes usually intercept output to stdout/stderr in order to capture it in the spec reports.\n\nYou may want to try rerunning your test suite with {{light-gray}}--output-interceptor-mode=none{{/}} to see additional output here and debug your suite.\n")) + fmt.Fprintln(formatter.ColorableStdErr, " ") + for proc := 1; proc <= cliConfig.ComputedProcs(); proc++ { + fmt.Fprintf(formatter.ColorableStdErr, formatter.F("{{bold}}Output from proc %d:{{/}}\n", proc)) + fmt.Fprintln(os.Stderr, formatter.Fi(1, "%s", procOutput[proc-1].String())) + } + fmt.Fprintf(os.Stderr, "** End **") + } + + for proc := 1; proc <= cliConfig.ComputedProcs(); proc++ { + output := procOutput[proc-1].String() + if proc == 1 && checkForNoTestsWarning(procOutput[0]) && cliConfig.RequireSuite { + suite.State = TestSuiteStateFailed + } + if strings.Contains(output, "deprecated Ginkgo functionality") { + fmt.Fprintln(os.Stderr, output) + } + } + + if len(coverProfiles) > 0 { + if suite.HasProgrammaticFocus { + fmt.Fprintln(os.Stdout, "coverage: no coverfile was generated because specs are programmatically focused") + } else { + coverProfile := AbsPathForGeneratedAsset(goFlagsConfig.CoverProfile, suite, cliConfig, 0) + err := MergeAndCleanupCoverProfiles(coverProfiles, coverProfile) + command.AbortIfError("Failed to combine cover profiles", err) + + coverage, err := GetCoverageFromCoverProfile(coverProfile) + command.AbortIfError("Failed to compute coverage", err) + if coverage == 0 { + fmt.Fprintln(os.Stdout, "coverage: [no statements]") + } else { + fmt.Fprintf(os.Stdout, "coverage: %.1f%% of statements\n", coverage) + } + } + } + if len(blockProfiles) > 0 { + if suite.HasProgrammaticFocus { + fmt.Fprintln(os.Stdout, "no block profile was generated because specs are programmatically focused") + } else { + blockProfile := AbsPathForGeneratedAsset(goFlagsConfig.BlockProfile, suite, cliConfig, 0) + err := MergeProfiles(blockProfiles, blockProfile) + command.AbortIfError("Failed to combine blockprofiles", err) + } + } + if len(cpuProfiles) > 0 { + if suite.HasProgrammaticFocus { + fmt.Fprintln(os.Stdout, "no cpu profile was generated because specs are programmatically focused") + } else { + cpuProfile := AbsPathForGeneratedAsset(goFlagsConfig.CPUProfile, suite, cliConfig, 0) + err := MergeProfiles(cpuProfiles, cpuProfile) + command.AbortIfError("Failed to combine cpuprofiles", err) + } + } + if len(memProfiles) > 0 { + if suite.HasProgrammaticFocus { + fmt.Fprintln(os.Stdout, "no mem profile was generated because specs are programmatically focused") + } else { + memProfile := AbsPathForGeneratedAsset(goFlagsConfig.MemProfile, suite, cliConfig, 0) + err := MergeProfiles(memProfiles, memProfile) + command.AbortIfError("Failed to combine memprofiles", err) + } + } + if len(mutexProfiles) > 0 { + if suite.HasProgrammaticFocus { + fmt.Fprintln(os.Stdout, "no mutex profile was generated because specs are programmatically focused") + } else { + mutexProfile := AbsPathForGeneratedAsset(goFlagsConfig.MutexProfile, suite, cliConfig, 0) + err := MergeProfiles(mutexProfiles, mutexProfile) + command.AbortIfError("Failed to combine mutexprofiles", err) + } + } + + return suite +} + +func runAfterRunHook(command string, noColor bool, suite TestSuite) { + if command == "" { + return + } + f := formatter.NewWithNoColorBool(noColor) + + // Allow for string replacement to pass input to the command + passed := "[FAIL]" + if suite.State.Is(TestSuiteStatePassed) { + passed = "[PASS]" + } + command = strings.ReplaceAll(command, "(ginkgo-suite-passed)", passed) + command = strings.ReplaceAll(command, "(ginkgo-suite-name)", suite.PackageName) + + // Must break command into parts + splitArgs := regexp.MustCompile(`'.+'|".+"|\S+`) + parts := splitArgs.FindAllString(command, -1) + + output, err := exec.Command(parts[0], parts[1:]...).CombinedOutput() + if err != nil { + fmt.Fprintln(formatter.ColorableStdOut, f.Fi(0, "{{red}}{{bold}}After-run-hook failed:{{/}}")) + fmt.Fprintln(formatter.ColorableStdOut, f.Fi(1, "{{red}}%s{{/}}", output)) + } else { + fmt.Fprintln(formatter.ColorableStdOut, f.Fi(0, "{{green}}{{bold}}After-run-hook succeeded:{{/}}")) + fmt.Fprintln(formatter.ColorableStdOut, f.Fi(1, "{{green}}%s{{/}}", output)) + } +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/test_suite.go b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/test_suite.go new file mode 100644 index 000000000..df99875be --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/test_suite.go @@ -0,0 +1,284 @@ +package internal + +import ( + "errors" + "math/rand" + "os" + "path" + "path/filepath" + "regexp" + "runtime" + "strings" + + "github.com/onsi/ginkgo/v2/types" +) + +const TIMEOUT_ELAPSED_FAILURE_REASON = "Suite did not run because the timeout elapsed" +const PRIOR_FAILURES_FAILURE_REASON = "Suite did not run because prior suites failed and --keep-going is not set" +const EMPTY_SKIP_FAILURE_REASON = "Suite did not run go test reported that no test files were found" + +type TestSuiteState uint + +const ( + TestSuiteStateInvalid TestSuiteState = iota + + TestSuiteStateUncompiled + TestSuiteStateCompiled + + TestSuiteStatePassed + + TestSuiteStateSkippedDueToEmptyCompilation + TestSuiteStateSkippedByFilter + TestSuiteStateSkippedDueToPriorFailures + + TestSuiteStateFailed + TestSuiteStateFailedDueToTimeout + TestSuiteStateFailedToCompile +) + +var TestSuiteStateFailureStates = []TestSuiteState{TestSuiteStateFailed, TestSuiteStateFailedDueToTimeout, TestSuiteStateFailedToCompile} + +func (state TestSuiteState) Is(states ...TestSuiteState) bool { + for _, suiteState := range states { + if suiteState == state { + return true + } + } + + return false +} + +type TestSuite struct { + Path string + PackageName string + IsGinkgo bool + + Precompiled bool + PathToCompiledTest string + CompilationError error + + HasProgrammaticFocus bool + State TestSuiteState +} + +func (ts TestSuite) AbsPath() string { + path, _ := filepath.Abs(ts.Path) + return path +} + +func (ts TestSuite) NamespacedName() string { + name := relPath(ts.Path) + name = strings.TrimLeft(name, "."+string(filepath.Separator)) + name = strings.ReplaceAll(name, string(filepath.Separator), "_") + name = strings.ReplaceAll(name, " ", "_") + if name == "" { + return ts.PackageName + } + return name +} + +type TestSuites []TestSuite + +func (ts TestSuites) AnyHaveProgrammaticFocus() bool { + for _, suite := range ts { + if suite.HasProgrammaticFocus { + return true + } + } + + return false +} + +func (ts TestSuites) ThatAreGinkgoSuites() TestSuites { + out := TestSuites{} + for _, suite := range ts { + if suite.IsGinkgo { + out = append(out, suite) + } + } + return out +} + +func (ts TestSuites) CountWithState(states ...TestSuiteState) int { + n := 0 + for _, suite := range ts { + if suite.State.Is(states...) { + n += 1 + } + } + + return n +} + +func (ts TestSuites) WithState(states ...TestSuiteState) TestSuites { + out := TestSuites{} + for _, suite := range ts { + if suite.State.Is(states...) { + out = append(out, suite) + } + } + + return out +} + +func (ts TestSuites) WithoutState(states ...TestSuiteState) TestSuites { + out := TestSuites{} + for _, suite := range ts { + if !suite.State.Is(states...) { + out = append(out, suite) + } + } + + return out +} + +func (ts TestSuites) ShuffledCopy(seed int64) TestSuites { + out := make(TestSuites, len(ts)) + permutation := rand.New(rand.NewSource(seed)).Perm(len(ts)) + for i, j := range permutation { + out[i] = ts[j] + } + return out +} + +func FindSuites(args []string, cliConfig types.CLIConfig, allowPrecompiled bool) TestSuites { + suites := TestSuites{} + + if len(args) > 0 { + for _, arg := range args { + if allowPrecompiled { + suite, err := precompiledTestSuite(arg) + if err == nil { + suites = append(suites, suite) + continue + } + } + recurseForSuite := cliConfig.Recurse + if strings.HasSuffix(arg, "/...") && arg != "/..." { + arg = arg[:len(arg)-4] + recurseForSuite = true + } + suites = append(suites, suitesInDir(arg, recurseForSuite)...) + } + } else { + suites = suitesInDir(".", cliConfig.Recurse) + } + + if cliConfig.SkipPackage != "" { + skipFilters := strings.Split(cliConfig.SkipPackage, ",") + for idx := range suites { + for _, skipFilter := range skipFilters { + if strings.Contains(suites[idx].Path, skipFilter) { + suites[idx].State = TestSuiteStateSkippedByFilter + break + } + } + } + } + + return suites +} + +func precompiledTestSuite(path string) (TestSuite, error) { + info, err := os.Stat(path) + if err != nil { + return TestSuite{}, err + } + + if info.IsDir() { + return TestSuite{}, errors.New("this is a directory, not a file") + } + + if filepath.Ext(path) != ".test" && filepath.Ext(path) != ".exe" { + return TestSuite{}, errors.New("this is not a .test binary") + } + + if filepath.Ext(path) == ".test" && runtime.GOOS != "windows" && info.Mode()&0111 == 0 { + return TestSuite{}, errors.New("this is not executable") + } + + dir := relPath(filepath.Dir(path)) + packageName := strings.TrimSuffix(filepath.Base(path), ".exe") + packageName = strings.TrimSuffix(packageName, ".test") + + path, err = filepath.Abs(path) + if err != nil { + return TestSuite{}, err + } + + return TestSuite{ + Path: dir, + PackageName: packageName, + IsGinkgo: true, + Precompiled: true, + PathToCompiledTest: path, + State: TestSuiteStateCompiled, + }, nil +} + +func suitesInDir(dir string, recurse bool) TestSuites { + suites := TestSuites{} + + if path.Base(dir) == "vendor" { + return suites + } + + files, _ := os.ReadDir(dir) + re := regexp.MustCompile(`^[^._].*_test\.go$`) + for _, file := range files { + if !file.IsDir() && re.MatchString(file.Name()) { + suite := TestSuite{ + Path: relPath(dir), + PackageName: packageNameForSuite(dir), + IsGinkgo: filesHaveGinkgoSuite(dir, files), + State: TestSuiteStateUncompiled, + } + suites = append(suites, suite) + break + } + } + + if recurse { + re = regexp.MustCompile(`^[._]`) + for _, file := range files { + if file.IsDir() && !re.MatchString(file.Name()) { + suites = append(suites, suitesInDir(dir+"/"+file.Name(), recurse)...) + } + } + } + + return suites +} + +func relPath(dir string) string { + dir, _ = filepath.Abs(dir) + cwd, _ := os.Getwd() + dir, _ = filepath.Rel(cwd, filepath.Clean(dir)) + + if string(dir[0]) != "." { + dir = "." + string(filepath.Separator) + dir + } + + return dir +} + +func packageNameForSuite(dir string) string { + path, _ := filepath.Abs(dir) + return filepath.Base(path) +} + +func filesHaveGinkgoSuite(dir string, files []os.DirEntry) bool { + reTestFile := regexp.MustCompile(`_test\.go$`) + reGinkgo := regexp.MustCompile(`package ginkgo|\/ginkgo"|\/ginkgo\/v2"|\/ginkgo\/v2/dsl/`) + + for _, file := range files { + if !file.IsDir() && reTestFile.MatchString(file.Name()) { + contents, _ := os.ReadFile(dir + "/" + file.Name()) + if reGinkgo.Match(contents) { + return true + } + } + } + + return false +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/utils.go b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/utils.go new file mode 100644 index 000000000..bd9ca7d51 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/utils.go @@ -0,0 +1,86 @@ +package internal + +import ( + "fmt" + "io" + "os" + "os/exec" + + "github.com/onsi/ginkgo/v2/formatter" + "github.com/onsi/ginkgo/v2/ginkgo/command" +) + +func FileExists(path string) bool { + _, err := os.Stat(path) + return err == nil +} + +func CopyFile(src string, dest string) error { + srcFile, err := os.Open(src) + if err != nil { + return err + } + + srcStat, err := srcFile.Stat() + if err != nil { + return err + } + + if _, err := os.Stat(dest); err == nil { + os.Remove(dest) + } + + destFile, err := os.OpenFile(dest, os.O_WRONLY|os.O_CREATE, srcStat.Mode()) + if err != nil { + return err + } + + _, err = io.Copy(destFile, srcFile) + if err != nil { + return err + } + + if err := srcFile.Close(); err != nil { + return err + } + return destFile.Close() +} + +func GoFmt(path string) { + out, err := exec.Command("go", "fmt", path).CombinedOutput() + if err != nil { + command.AbortIfError(fmt.Sprintf("Could not fmt:\n%s\n", string(out)), err) + } +} + +func PluralizedWord(singular, plural string, count int) string { + if count == 1 { + return singular + } + return plural +} + +func FailedSuitesReport(suites TestSuites, f formatter.Formatter) string { + out := "" + out += "There were failures detected in the following suites:\n" + + maxPackageNameLength := 0 + for _, suite := range suites.WithState(TestSuiteStateFailureStates...) { + if len(suite.PackageName) > maxPackageNameLength { + maxPackageNameLength = len(suite.PackageName) + } + } + + packageNameFormatter := fmt.Sprintf("%%%ds", maxPackageNameLength) + for _, suite := range suites { + switch suite.State { + case TestSuiteStateFailed: + out += f.Fi(1, "{{red}}"+packageNameFormatter+" {{gray}}%s{{/}}\n", suite.PackageName, suite.Path) + case TestSuiteStateFailedToCompile: + out += f.Fi(1, "{{red}}"+packageNameFormatter+" {{gray}}%s {{magenta}}[Compilation failure]{{/}}\n", suite.PackageName, suite.Path) + case TestSuiteStateFailedDueToTimeout: + out += f.Fi(1, "{{red}}"+packageNameFormatter+" {{gray}}%s {{orange}}[%s]{{/}}\n", suite.PackageName, suite.Path, TIMEOUT_ELAPSED_FAILURE_REASON) + } + } + return out +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/verify_version.go b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/verify_version.go new file mode 100644 index 000000000..9da1bab3d --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/internal/verify_version.go @@ -0,0 +1,54 @@ +package internal + +import ( + "fmt" + "os/exec" + "regexp" + "strings" + + "github.com/onsi/ginkgo/v2/formatter" + "github.com/onsi/ginkgo/v2/types" +) + +var versiorRe = regexp.MustCompile(`v(\d+\.\d+\.\d+)`) + +func VerifyCLIAndFrameworkVersion(suites TestSuites) { + cliVersion := types.VERSION + mismatches := map[string][]string{} + + for _, suite := range suites { + cmd := exec.Command("go", "list", "-m", "github.com/onsi/ginkgo/v2") + cmd.Dir = suite.Path + output, err := cmd.CombinedOutput() + if err != nil { + continue + } + components := strings.Split(string(output), " ") + if len(components) != 2 { + continue + } + matches := versiorRe.FindStringSubmatch(components[1]) + if matches == nil || len(matches) != 2 { + continue + } + libraryVersion := matches[1] + if cliVersion != libraryVersion { + mismatches[libraryVersion] = append(mismatches[libraryVersion], suite.PackageName) + } + } + + if len(mismatches) == 0 { + return + } + + fmt.Println(formatter.F("{{red}}{{bold}}Ginkgo detected a version mismatch between the Ginkgo CLI and the version of Ginkgo imported by your packages:{{/}}")) + + fmt.Println(formatter.Fi(1, "Ginkgo CLI Version:")) + fmt.Println(formatter.Fi(2, "{{bold}}%s{{/}}", cliVersion)) + fmt.Println(formatter.Fi(1, "Mismatched package versions found:")) + for version, packages := range mismatches { + fmt.Println(formatter.Fi(2, "{{bold}}%s{{/}} used by %s", version, strings.Join(packages, ", "))) + } + fmt.Println("") + fmt.Println(formatter.Fiw(1, formatter.COLS, "{{gray}}Ginkgo will continue to attempt to run but you may see errors (including flag parsing errors) and should either update your go.mod or your version of the Ginkgo CLI to match.\n\nTo install the matching version of the CLI run\n {{bold}}go install github.com/onsi/ginkgo/v2/ginkgo{{/}}{{gray}}\nfrom a path that contains a go.mod file. Alternatively you can use\n {{bold}}go run github.com/onsi/ginkgo/v2/ginkgo{{/}}{{gray}}\nfrom a path that contains a go.mod file to invoke the matching version of the Ginkgo CLI.\n\nIf you are attempting to test multiple packages that each have a different version of the Ginkgo library with a single Ginkgo CLI that is currently unsupported.\n{{/}}")) +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/labels/labels_command.go b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/labels/labels_command.go new file mode 100644 index 000000000..6c61f09d1 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/labels/labels_command.go @@ -0,0 +1,123 @@ +package labels + +import ( + "fmt" + "go/ast" + "go/parser" + "go/token" + "sort" + "strconv" + "strings" + + "github.com/onsi/ginkgo/v2/ginkgo/command" + "github.com/onsi/ginkgo/v2/ginkgo/internal" + "github.com/onsi/ginkgo/v2/types" + "golang.org/x/tools/go/ast/inspector" +) + +func BuildLabelsCommand() command.Command { + var cliConfig = types.NewDefaultCLIConfig() + + flags, err := types.BuildLabelsCommandFlagSet(&cliConfig) + if err != nil { + panic(err) + } + + return command.Command{ + Name: "labels", + Usage: "ginkgo labels ", + Flags: flags, + ShortDoc: "List labels detected in the passed-in packages (or the package in the current directory if left blank).", + DocLink: "spec-labels", + Command: func(args []string, _ []string) { + ListLabels(args, cliConfig) + }, + } +} + +func ListLabels(args []string, cliConfig types.CLIConfig) { + suites := internal.FindSuites(args, cliConfig, false).WithoutState(internal.TestSuiteStateSkippedByFilter) + if len(suites) == 0 { + command.AbortWith("Found no test suites") + } + for _, suite := range suites { + labels := fetchLabelsFromPackage(suite.Path) + if len(labels) == 0 { + fmt.Printf("%s: No labels found\n", suite.PackageName) + } else { + fmt.Printf("%s: [%s]\n", suite.PackageName, strings.Join(labels, ", ")) + } + } +} + +func fetchLabelsFromPackage(packagePath string) []string { + fset := token.NewFileSet() + parsedPackages, err := parser.ParseDir(fset, packagePath, nil, 0) + command.AbortIfError("Failed to parse package source:", err) + + files := []*ast.File{} + hasTestPackage := false + for key, pkg := range parsedPackages { + if strings.HasSuffix(key, "_test") { + hasTestPackage = true + for _, file := range pkg.Files { + files = append(files, file) + } + } + } + if !hasTestPackage { + for _, pkg := range parsedPackages { + for _, file := range pkg.Files { + files = append(files, file) + } + } + } + + seen := map[string]bool{} + labels := []string{} + ispr := inspector.New(files) + ispr.Preorder([]ast.Node{&ast.CallExpr{}}, func(n ast.Node) { + potentialLabels := fetchLabels(n.(*ast.CallExpr)) + for _, label := range potentialLabels { + if !seen[label] { + seen[label] = true + labels = append(labels, strconv.Quote(label)) + } + } + }) + + sort.Strings(labels) + return labels +} + +func fetchLabels(callExpr *ast.CallExpr) []string { + out := []string{} + switch expr := callExpr.Fun.(type) { + case *ast.Ident: + if expr.Name != "Label" { + return out + } + case *ast.SelectorExpr: + if expr.Sel.Name != "Label" { + return out + } + default: + return out + } + for _, arg := range callExpr.Args { + switch expr := arg.(type) { + case *ast.BasicLit: + if expr.Kind == token.STRING { + unquoted, err := strconv.Unquote(expr.Value) + if err != nil { + unquoted = expr.Value + } + validated, err := types.ValidateAndCleanupLabel(unquoted, types.CodeLocation{}) + if err == nil { + out = append(out, validated) + } + } + } + } + return out +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/main.go b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/main.go new file mode 100644 index 000000000..bd6b8fbff --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/main.go @@ -0,0 +1,58 @@ +package main + +import ( + "fmt" + "os" + _ "go.uber.org/automaxprocs" + "github.com/onsi/ginkgo/v2/ginkgo/build" + "github.com/onsi/ginkgo/v2/ginkgo/command" + "github.com/onsi/ginkgo/v2/ginkgo/generators" + "github.com/onsi/ginkgo/v2/ginkgo/labels" + "github.com/onsi/ginkgo/v2/ginkgo/outline" + "github.com/onsi/ginkgo/v2/ginkgo/run" + "github.com/onsi/ginkgo/v2/ginkgo/unfocus" + "github.com/onsi/ginkgo/v2/ginkgo/watch" + "github.com/onsi/ginkgo/v2/types" +) + +var program command.Program + +func GenerateCommands() []command.Command { + return []command.Command{ + watch.BuildWatchCommand(), + build.BuildBuildCommand(), + generators.BuildBootstrapCommand(), + generators.BuildGenerateCommand(), + labels.BuildLabelsCommand(), + outline.BuildOutlineCommand(), + unfocus.BuildUnfocusCommand(), + BuildVersionCommand(), + } +} + +func main() { + program = command.Program{ + Name: "ginkgo", + Heading: fmt.Sprintf("Ginkgo Version %s", types.VERSION), + Commands: GenerateCommands(), + DefaultCommand: run.BuildRunCommand(), + DeprecatedCommands: []command.DeprecatedCommand{ + {Name: "convert", Deprecation: types.Deprecations.Convert()}, + {Name: "blur", Deprecation: types.Deprecations.Blur()}, + {Name: "nodot", Deprecation: types.Deprecations.Nodot()}, + }, + } + + program.RunAndExit(os.Args) +} + +func BuildVersionCommand() command.Command { + return command.Command{ + Name: "version", + Usage: "ginkgo version", + ShortDoc: "Print Ginkgo's version", + Command: func(_ []string, _ []string) { + fmt.Printf("Ginkgo Version %s\n", types.VERSION) + }, + } +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/ginkgo.go b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/ginkgo.go new file mode 100644 index 000000000..5d8d00bb1 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/ginkgo.go @@ -0,0 +1,301 @@ +package outline + +import ( + "go/ast" + "go/token" + "strconv" + + "github.com/onsi/ginkgo/v2/types" +) + +const ( + // undefinedTextAlt is used if the spec/container text cannot be derived + undefinedTextAlt = "undefined" +) + +// ginkgoMetadata holds useful bits of information for every entry in the outline +type ginkgoMetadata struct { + // Name is the spec or container function name, e.g. `Describe` or `It` + Name string `json:"name"` + + // Text is the `text` argument passed to specs, and some containers + Text string `json:"text"` + + // Start is the position of first character of the spec or container block + Start int `json:"start"` + + // End is the position of first character immediately after the spec or container block + End int `json:"end"` + + Spec bool `json:"spec"` + Focused bool `json:"focused"` + Pending bool `json:"pending"` + Labels []string `json:"labels"` +} + +// ginkgoNode is used to construct the outline as a tree +type ginkgoNode struct { + ginkgoMetadata + Nodes []*ginkgoNode `json:"nodes"` +} + +type walkFunc func(n *ginkgoNode) + +func (n *ginkgoNode) PreOrder(f walkFunc) { + f(n) + for _, m := range n.Nodes { + m.PreOrder(f) + } +} + +func (n *ginkgoNode) PostOrder(f walkFunc) { + for _, m := range n.Nodes { + m.PostOrder(f) + } + f(n) +} + +func (n *ginkgoNode) Walk(pre, post walkFunc) { + pre(n) + for _, m := range n.Nodes { + m.Walk(pre, post) + } + post(n) +} + +// PropagateInheritedProperties propagates the Pending and Focused properties +// through the subtree rooted at n. +func (n *ginkgoNode) PropagateInheritedProperties() { + n.PreOrder(func(thisNode *ginkgoNode) { + for _, descendantNode := range thisNode.Nodes { + if thisNode.Pending { + descendantNode.Pending = true + descendantNode.Focused = false + } + if thisNode.Focused && !descendantNode.Pending { + descendantNode.Focused = true + } + } + }) +} + +// BackpropagateUnfocus propagates the Focused property through the subtree +// rooted at n. It applies the rule described in the Ginkgo docs: +// > Nested programmatically focused specs follow a simple rule: if a +// > leaf-node is marked focused, any of its ancestor nodes that are marked +// > focus will be unfocused. +func (n *ginkgoNode) BackpropagateUnfocus() { + focusedSpecInSubtreeStack := []bool{} + n.PostOrder(func(thisNode *ginkgoNode) { + if thisNode.Spec { + focusedSpecInSubtreeStack = append(focusedSpecInSubtreeStack, thisNode.Focused) + return + } + focusedSpecInSubtree := false + for range thisNode.Nodes { + focusedSpecInSubtree = focusedSpecInSubtree || focusedSpecInSubtreeStack[len(focusedSpecInSubtreeStack)-1] + focusedSpecInSubtreeStack = focusedSpecInSubtreeStack[0 : len(focusedSpecInSubtreeStack)-1] + } + focusedSpecInSubtreeStack = append(focusedSpecInSubtreeStack, focusedSpecInSubtree) + if focusedSpecInSubtree { + thisNode.Focused = false + } + }) + +} + +func packageAndIdentNamesFromCallExpr(ce *ast.CallExpr) (string, string, bool) { + switch ex := ce.Fun.(type) { + case *ast.Ident: + return "", ex.Name, true + case *ast.SelectorExpr: + pkgID, ok := ex.X.(*ast.Ident) + if !ok { + return "", "", false + } + // A package identifier is top-level, so Obj must be nil + if pkgID.Obj != nil { + return "", "", false + } + if ex.Sel == nil { + return "", "", false + } + return pkgID.Name, ex.Sel.Name, true + default: + return "", "", false + } +} + +// absoluteOffsetsForNode derives the absolute character offsets of the node start and +// end positions. +func absoluteOffsetsForNode(fset *token.FileSet, n ast.Node) (start, end int) { + return fset.PositionFor(n.Pos(), false).Offset, fset.PositionFor(n.End(), false).Offset +} + +// ginkgoNodeFromCallExpr derives an outline entry from a go AST subtree +// corresponding to a Ginkgo container or spec. +func ginkgoNodeFromCallExpr(fset *token.FileSet, ce *ast.CallExpr, ginkgoPackageName *string) (*ginkgoNode, bool) { + packageName, identName, ok := packageAndIdentNamesFromCallExpr(ce) + if !ok { + return nil, false + } + + n := ginkgoNode{} + n.Name = identName + n.Start, n.End = absoluteOffsetsForNode(fset, ce) + n.Nodes = make([]*ginkgoNode, 0) + switch identName { + case "It", "Specify", "Entry": + n.Spec = true + n.Text = textOrAltFromCallExpr(ce, undefinedTextAlt) + n.Labels = labelFromCallExpr(ce) + n.Pending = pendingFromCallExpr(ce) + return &n, ginkgoPackageName != nil && *ginkgoPackageName == packageName + case "FIt", "FSpecify", "FEntry": + n.Spec = true + n.Focused = true + n.Text = textOrAltFromCallExpr(ce, undefinedTextAlt) + n.Labels = labelFromCallExpr(ce) + return &n, ginkgoPackageName != nil && *ginkgoPackageName == packageName + case "PIt", "PSpecify", "XIt", "XSpecify", "PEntry", "XEntry": + n.Spec = true + n.Pending = true + n.Text = textOrAltFromCallExpr(ce, undefinedTextAlt) + n.Labels = labelFromCallExpr(ce) + return &n, ginkgoPackageName != nil && *ginkgoPackageName == packageName + case "Context", "Describe", "When", "DescribeTable": + n.Text = textOrAltFromCallExpr(ce, undefinedTextAlt) + n.Labels = labelFromCallExpr(ce) + n.Pending = pendingFromCallExpr(ce) + return &n, ginkgoPackageName != nil && *ginkgoPackageName == packageName + case "FContext", "FDescribe", "FWhen", "FDescribeTable": + n.Focused = true + n.Text = textOrAltFromCallExpr(ce, undefinedTextAlt) + n.Labels = labelFromCallExpr(ce) + return &n, ginkgoPackageName != nil && *ginkgoPackageName == packageName + case "PContext", "PDescribe", "PWhen", "XContext", "XDescribe", "XWhen", "PDescribeTable", "XDescribeTable": + n.Pending = true + n.Text = textOrAltFromCallExpr(ce, undefinedTextAlt) + n.Labels = labelFromCallExpr(ce) + return &n, ginkgoPackageName != nil && *ginkgoPackageName == packageName + case "By": + n.Text = textOrAltFromCallExpr(ce, undefinedTextAlt) + return &n, ginkgoPackageName != nil && *ginkgoPackageName == packageName + case "AfterEach", "BeforeEach": + return &n, ginkgoPackageName != nil && *ginkgoPackageName == packageName + case "JustAfterEach", "JustBeforeEach": + return &n, ginkgoPackageName != nil && *ginkgoPackageName == packageName + case "AfterSuite", "BeforeSuite": + return &n, ginkgoPackageName != nil && *ginkgoPackageName == packageName + case "SynchronizedAfterSuite", "SynchronizedBeforeSuite": + return &n, ginkgoPackageName != nil && *ginkgoPackageName == packageName + default: + return nil, false + } +} + +// textOrAltFromCallExpr tries to derive the "text" of a Ginkgo spec or +// container. If it cannot derive it, it returns the alt text. +func textOrAltFromCallExpr(ce *ast.CallExpr, alt string) string { + text, defined := textFromCallExpr(ce) + if !defined { + return alt + } + return text +} + +// textFromCallExpr tries to derive the "text" of a Ginkgo spec or container. If +// it cannot derive it, it returns false. +func textFromCallExpr(ce *ast.CallExpr) (string, bool) { + if len(ce.Args) < 1 { + return "", false + } + text, ok := ce.Args[0].(*ast.BasicLit) + if !ok { + return "", false + } + switch text.Kind { + case token.CHAR, token.STRING: + // For token.CHAR and token.STRING, Value is quoted + unquoted, err := strconv.Unquote(text.Value) + if err != nil { + // If unquoting fails, just use the raw Value + return text.Value, true + } + return unquoted, true + default: + return text.Value, true + } +} + +func labelFromCallExpr(ce *ast.CallExpr) []string { + + labels := []string{} + if len(ce.Args) < 2 { + return labels + } + + for _, arg := range ce.Args[1:] { + switch expr := arg.(type) { + case *ast.CallExpr: + id, ok := expr.Fun.(*ast.Ident) + if !ok { + // to skip over cases where the expr.Fun. is actually *ast.SelectorExpr + continue + } + if id.Name == "Label" { + ls := extractLabels(expr) + labels = append(labels, ls...) + } + } + } + return labels +} + +func extractLabels(expr *ast.CallExpr) []string { + out := []string{} + for _, arg := range expr.Args { + switch expr := arg.(type) { + case *ast.BasicLit: + if expr.Kind == token.STRING { + unquoted, err := strconv.Unquote(expr.Value) + if err != nil { + unquoted = expr.Value + } + validated, err := types.ValidateAndCleanupLabel(unquoted, types.CodeLocation{}) + if err == nil { + out = append(out, validated) + } + } + } + } + + return out +} + +func pendingFromCallExpr(ce *ast.CallExpr) bool { + + pending := false + if len(ce.Args) < 2 { + return pending + } + + for _, arg := range ce.Args[1:] { + switch expr := arg.(type) { + case *ast.CallExpr: + id, ok := expr.Fun.(*ast.Ident) + if !ok { + // to skip over cases where the expr.Fun. is actually *ast.SelectorExpr + continue + } + if id.Name == "Pending" { + pending = true + } + case *ast.Ident: + if expr.Name == "Pending" { + pending = true + } + } + } + return pending +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/import.go b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/import.go new file mode 100644 index 000000000..f0a6b5d26 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/import.go @@ -0,0 +1,58 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Most of the required functions were available in the +// "golang.org/x/tools/go/ast/astutil" package, but not exported. +// They were copied from https://github.com/golang/tools/blob/2b0845dc783e36ae26d683f4915a5840ef01ab0f/go/ast/astutil/imports.go + +package outline + +import ( + "go/ast" + "strconv" + "strings" +) + +// packageNameForImport returns the package name for the package. If the package +// is not imported, it returns nil. "Package name" refers to `pkgname` in the +// call expression `pkgname.ExportedIdentifier`. Examples: +// (import path not found) -> nil +// "import example.com/pkg/foo" -> "foo" +// "import fooalias example.com/pkg/foo" -> "fooalias" +// "import . example.com/pkg/foo" -> "" +func packageNameForImport(f *ast.File, path string) *string { + spec := importSpec(f, path) + if spec == nil { + return nil + } + name := spec.Name.String() + if name == "" { + name = "ginkgo" + } + if name == "." { + name = "" + } + return &name +} + +// importSpec returns the import spec if f imports path, +// or nil otherwise. +func importSpec(f *ast.File, path string) *ast.ImportSpec { + for _, s := range f.Imports { + if strings.HasPrefix(importPath(s), path) { + return s + } + } + return nil +} + +// importPath returns the unquoted import path of s, +// or "" if the path is not properly quoted. +func importPath(s *ast.ImportSpec) string { + t, err := strconv.Unquote(s.Path.Value) + if err != nil { + return "" + } + return t +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/outline.go b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/outline.go new file mode 100644 index 000000000..e99d557d1 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/outline.go @@ -0,0 +1,130 @@ +package outline + +import ( + "bytes" + "encoding/csv" + "encoding/json" + "fmt" + "go/ast" + "go/token" + "strconv" + "strings" + + "golang.org/x/tools/go/ast/inspector" +) + +const ( + // ginkgoImportPath is the well-known ginkgo import path + ginkgoImportPath = "github.com/onsi/ginkgo/v2" +) + +// FromASTFile returns an outline for a Ginkgo test source file +func FromASTFile(fset *token.FileSet, src *ast.File) (*outline, error) { + ginkgoPackageName := packageNameForImport(src, ginkgoImportPath) + if ginkgoPackageName == nil { + return nil, fmt.Errorf("file does not import %q", ginkgoImportPath) + } + + root := ginkgoNode{} + stack := []*ginkgoNode{&root} + ispr := inspector.New([]*ast.File{src}) + ispr.Nodes([]ast.Node{(*ast.CallExpr)(nil)}, func(node ast.Node, push bool) bool { + if push { + // Pre-order traversal + ce, ok := node.(*ast.CallExpr) + if !ok { + // Because `Nodes` calls this function only when the node is an + // ast.CallExpr, this should never happen + panic(fmt.Errorf("node starting at %d, ending at %d is not an *ast.CallExpr", node.Pos(), node.End())) + } + gn, ok := ginkgoNodeFromCallExpr(fset, ce, ginkgoPackageName) + if !ok { + // Node is not a Ginkgo spec or container, continue + return true + } + parent := stack[len(stack)-1] + parent.Nodes = append(parent.Nodes, gn) + stack = append(stack, gn) + return true + } + // Post-order traversal + start, end := absoluteOffsetsForNode(fset, node) + lastVisitedGinkgoNode := stack[len(stack)-1] + if start != lastVisitedGinkgoNode.Start || end != lastVisitedGinkgoNode.End { + // Node is not a Ginkgo spec or container, so it was not pushed onto the stack, continue + return true + } + stack = stack[0 : len(stack)-1] + return true + }) + if len(root.Nodes) == 0 { + return &outline{[]*ginkgoNode{}}, nil + } + + // Derive the final focused property for all nodes. This must be done + // _before_ propagating the inherited focused property. + root.BackpropagateUnfocus() + // Now, propagate inherited properties, including focused and pending. + root.PropagateInheritedProperties() + + return &outline{root.Nodes}, nil +} + +type outline struct { + Nodes []*ginkgoNode `json:"nodes"` +} + +func (o *outline) MarshalJSON() ([]byte, error) { + return json.Marshal(o.Nodes) +} + +// String returns a CSV-formatted outline. Spec or container are output in +// depth-first order. +func (o *outline) String() string { + return o.StringIndent(0) +} + +// StringIndent returns a CSV-formated outline, but every line is indented by +// one 'width' of spaces for every level of nesting. +func (o *outline) StringIndent(width int) string { + var b bytes.Buffer + b.WriteString("Name,Text,Start,End,Spec,Focused,Pending,Labels\n") + + csvWriter := csv.NewWriter(&b) + + currentIndent := 0 + pre := func(n *ginkgoNode) { + b.WriteString(fmt.Sprintf("%*s", currentIndent, "")) + var labels string + if len(n.Labels) == 1 { + labels = n.Labels[0] + } else { + labels = strings.Join(n.Labels, ", ") + } + + row := []string{ + n.Name, + n.Text, + strconv.Itoa(n.Start), + strconv.Itoa(n.End), + strconv.FormatBool(n.Spec), + strconv.FormatBool(n.Focused), + strconv.FormatBool(n.Pending), + labels, + } + csvWriter.Write(row) + + // Ensure we write to `b' before the next `b.WriteString()', which might be adding indentation + csvWriter.Flush() + + currentIndent += width + } + post := func(n *ginkgoNode) { + currentIndent -= width + } + for _, n := range o.Nodes { + n.Walk(pre, post) + } + + return b.String() +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/outline_command.go b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/outline_command.go new file mode 100644 index 000000000..36698d46a --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/outline/outline_command.go @@ -0,0 +1,98 @@ +package outline + +import ( + "encoding/json" + "fmt" + "go/parser" + "go/token" + "os" + + "github.com/onsi/ginkgo/v2/ginkgo/command" + "github.com/onsi/ginkgo/v2/types" +) + +const ( + // indentWidth is the width used by the 'indent' output + indentWidth = 4 + // stdinAlias is a portable alias for stdin. This convention is used in + // other CLIs, e.g., kubectl. + stdinAlias = "-" + usageCommand = "ginkgo outline " +) + +type outlineConfig struct { + Format string +} + +func BuildOutlineCommand() command.Command { + conf := outlineConfig{ + Format: "csv", + } + flags, err := types.NewGinkgoFlagSet( + types.GinkgoFlags{ + {Name: "format", KeyPath: "Format", + Usage: "Format of outline", + UsageArgument: "one of 'csv', 'indent', or 'json'", + UsageDefaultValue: conf.Format, + }, + }, + &conf, + types.GinkgoFlagSections{}, + ) + if err != nil { + panic(err) + } + + return command.Command{ + Name: "outline", + Usage: "ginkgo outline ", + ShortDoc: "Create an outline of Ginkgo symbols for a file", + Documentation: "To read from stdin, use: `ginkgo outline -`", + DocLink: "creating-an-outline-of-specs", + Flags: flags, + Command: func(args []string, _ []string) { + outlineFile(args, conf.Format) + }, + } +} + +func outlineFile(args []string, format string) { + if len(args) != 1 { + command.AbortWithUsage("outline expects exactly one argument") + } + + filename := args[0] + var src *os.File + if filename == stdinAlias { + src = os.Stdin + } else { + var err error + src, err = os.Open(filename) + command.AbortIfError("Failed to open file:", err) + } + + fset := token.NewFileSet() + + parsedSrc, err := parser.ParseFile(fset, filename, src, 0) + command.AbortIfError("Failed to parse source:", err) + + o, err := FromASTFile(fset, parsedSrc) + command.AbortIfError("Failed to create outline:", err) + + var oerr error + switch format { + case "csv": + _, oerr = fmt.Print(o) + case "indent": + _, oerr = fmt.Print(o.StringIndent(indentWidth)) + case "json": + b, err := json.Marshal(o) + if err != nil { + println(fmt.Sprintf("error marshalling to json: %s", err)) + } + _, oerr = fmt.Println(string(b)) + default: + command.AbortWith("Format %s not accepted", format) + } + command.AbortIfError("Failed to write outline:", oerr) +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/run/run_command.go b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/run/run_command.go new file mode 100644 index 000000000..03875b979 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/run/run_command.go @@ -0,0 +1,232 @@ +package run + +import ( + "fmt" + "os" + "strings" + "time" + + "github.com/onsi/ginkgo/v2/formatter" + "github.com/onsi/ginkgo/v2/ginkgo/command" + "github.com/onsi/ginkgo/v2/ginkgo/internal" + "github.com/onsi/ginkgo/v2/internal/interrupt_handler" + "github.com/onsi/ginkgo/v2/types" +) + +func BuildRunCommand() command.Command { + var suiteConfig = types.NewDefaultSuiteConfig() + var reporterConfig = types.NewDefaultReporterConfig() + var cliConfig = types.NewDefaultCLIConfig() + var goFlagsConfig = types.NewDefaultGoFlagsConfig() + + flags, err := types.BuildRunCommandFlagSet(&suiteConfig, &reporterConfig, &cliConfig, &goFlagsConfig) + if err != nil { + panic(err) + } + + interruptHandler := interrupt_handler.NewInterruptHandler(nil) + interrupt_handler.SwallowSigQuit() + + return command.Command{ + Name: "run", + Flags: flags, + Usage: "ginkgo run -- ", + ShortDoc: "Run the tests in the passed in (or the package in the current directory if left blank)", + Documentation: "Any arguments after -- will be passed to the test.", + DocLink: "running-tests", + Command: func(args []string, additionalArgs []string) { + var errors []error + cliConfig, goFlagsConfig, errors = types.VetAndInitializeCLIAndGoConfig(cliConfig, goFlagsConfig) + command.AbortIfErrors("Ginkgo detected configuration issues:", errors) + + runner := &SpecRunner{ + cliConfig: cliConfig, + goFlagsConfig: goFlagsConfig, + suiteConfig: suiteConfig, + reporterConfig: reporterConfig, + flags: flags, + + interruptHandler: interruptHandler, + } + + runner.RunSpecs(args, additionalArgs) + }, + } +} + +type SpecRunner struct { + suiteConfig types.SuiteConfig + reporterConfig types.ReporterConfig + cliConfig types.CLIConfig + goFlagsConfig types.GoFlagsConfig + flags types.GinkgoFlagSet + + interruptHandler *interrupt_handler.InterruptHandler +} + +func (r *SpecRunner) RunSpecs(args []string, additionalArgs []string) { + suites := internal.FindSuites(args, r.cliConfig, true) + skippedSuites := suites.WithState(internal.TestSuiteStateSkippedByFilter) + suites = suites.WithoutState(internal.TestSuiteStateSkippedByFilter) + + internal.VerifyCLIAndFrameworkVersion(suites) + + if len(skippedSuites) > 0 { + fmt.Println("Will skip:") + for _, skippedSuite := range skippedSuites { + fmt.Println(" " + skippedSuite.Path) + } + } + + if len(skippedSuites) > 0 && len(suites) == 0 { + command.AbortGracefullyWith("All tests skipped! Exiting...") + } + + if len(suites) == 0 { + command.AbortWith("Found no test suites") + } + + if len(suites) > 1 && !r.flags.WasSet("succinct") && r.reporterConfig.Verbosity().LT(types.VerbosityLevelVerbose) { + r.reporterConfig.Succinct = true + } + + t := time.Now() + var endTime time.Time + if r.suiteConfig.Timeout > 0 { + endTime = t.Add(r.suiteConfig.Timeout) + } + + iteration := 0 +OUTER_LOOP: + for { + if !r.flags.WasSet("seed") { + r.suiteConfig.RandomSeed = time.Now().Unix() + } + if r.cliConfig.RandomizeSuites && len(suites) > 1 { + suites = suites.ShuffledCopy(r.suiteConfig.RandomSeed) + } + + opc := internal.NewOrderedParallelCompiler(r.cliConfig.ComputedNumCompilers()) + opc.StartCompiling(suites, r.goFlagsConfig, false) + + SUITE_LOOP: + for { + suiteIdx, suite := opc.Next() + if suiteIdx >= len(suites) { + break SUITE_LOOP + } + suites[suiteIdx] = suite + + if r.interruptHandler.Status().Interrupted() { + opc.StopAndDrain() + break OUTER_LOOP + } + + if suites[suiteIdx].State.Is(internal.TestSuiteStateSkippedDueToEmptyCompilation) { + fmt.Printf("Skipping %s (no test files)\n", suite.Path) + continue SUITE_LOOP + } + + if suites[suiteIdx].State.Is(internal.TestSuiteStateFailedToCompile) { + fmt.Println(suites[suiteIdx].CompilationError.Error()) + if !r.cliConfig.KeepGoing { + opc.StopAndDrain() + } + continue SUITE_LOOP + } + + if suites.CountWithState(internal.TestSuiteStateFailureStates...) > 0 && !r.cliConfig.KeepGoing { + suites[suiteIdx].State = internal.TestSuiteStateSkippedDueToPriorFailures + opc.StopAndDrain() + continue SUITE_LOOP + } + + if !endTime.IsZero() { + r.suiteConfig.Timeout = time.Until(endTime) + if r.suiteConfig.Timeout <= 0 { + suites[suiteIdx].State = internal.TestSuiteStateFailedDueToTimeout + opc.StopAndDrain() + continue SUITE_LOOP + } + } + + suites[suiteIdx] = internal.RunCompiledSuite(suites[suiteIdx], r.suiteConfig, r.reporterConfig, r.cliConfig, r.goFlagsConfig, additionalArgs) + } + + if suites.CountWithState(internal.TestSuiteStateFailureStates...) > 0 { + if iteration > 0 { + fmt.Printf("\nTests failed on attempt #%d\n\n", iteration+1) + } + break OUTER_LOOP + } + + if r.cliConfig.UntilItFails { + fmt.Printf("\nAll tests passed...\nWill keep running them until they fail.\nThis was attempt #%d\n%s\n", iteration+1, orcMessage(iteration+1)) + } else if r.cliConfig.Repeat > 0 && iteration < r.cliConfig.Repeat { + fmt.Printf("\nAll tests passed...\nThis was attempt %d of %d.\n", iteration+1, r.cliConfig.Repeat+1) + } else { + break OUTER_LOOP + } + iteration += 1 + } + + internal.Cleanup(r.goFlagsConfig, suites...) + + messages, err := internal.FinalizeProfilesAndReportsForSuites(suites, r.cliConfig, r.suiteConfig, r.reporterConfig, r.goFlagsConfig) + command.AbortIfError("could not finalize profiles:", err) + for _, message := range messages { + fmt.Println(message) + } + + fmt.Printf("\nGinkgo ran %d %s in %s\n", len(suites), internal.PluralizedWord("suite", "suites", len(suites)), time.Since(t)) + + if suites.CountWithState(internal.TestSuiteStateFailureStates...) == 0 { + if suites.AnyHaveProgrammaticFocus() && strings.TrimSpace(os.Getenv("GINKGO_EDITOR_INTEGRATION")) == "" { + fmt.Printf("Test Suite Passed\n") + fmt.Printf("Detected Programmatic Focus - setting exit status to %d\n", types.GINKGO_FOCUS_EXIT_CODE) + command.Abort(command.AbortDetails{ExitCode: types.GINKGO_FOCUS_EXIT_CODE}) + } else { + fmt.Printf("Test Suite Passed\n") + command.Abort(command.AbortDetails{}) + } + } else { + fmt.Fprintln(formatter.ColorableStdOut, "") + if len(suites) > 1 && suites.CountWithState(internal.TestSuiteStateFailureStates...) > 0 { + fmt.Fprintln(formatter.ColorableStdOut, + internal.FailedSuitesReport(suites, formatter.NewWithNoColorBool(r.reporterConfig.NoColor))) + } + fmt.Printf("Test Suite Failed\n") + command.Abort(command.AbortDetails{ExitCode: 1}) + } +} + +func orcMessage(iteration int) string { + if iteration < 10 { + return "" + } else if iteration < 30 { + return []string{ + "If at first you succeed...", + "...try, try again.", + "Looking good!", + "Still good...", + "I think your tests are fine....", + "Yep, still passing", + "Oh boy, here I go testin' again!", + "Even the gophers are getting bored", + "Did you try -race?", + "Maybe you should stop now?", + "I'm getting tired...", + "What if I just made you a sandwich?", + "Hit ^C, hit ^C, please hit ^C", + "Make it stop. Please!", + "Come on! Enough is enough!", + "Dave, this conversation can serve no purpose anymore. Goodbye.", + "Just what do you think you're doing, Dave? ", + "I, Sisyphus", + "Insanity: doing the same thing over and over again and expecting different results. -Einstein", + "I guess Einstein never tried to churn butter", + }[iteration-10] + "\n" + } else { + return "No, seriously... you can probably stop now.\n" + } +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/unfocus/unfocus_command.go b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/unfocus/unfocus_command.go new file mode 100644 index 000000000..7dd294394 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/unfocus/unfocus_command.go @@ -0,0 +1,186 @@ +package unfocus + +import ( + "bytes" + "fmt" + "go/ast" + "go/parser" + "go/token" + "io" + "os" + "path/filepath" + "strings" + "sync" + + "github.com/onsi/ginkgo/v2/ginkgo/command" +) + +func BuildUnfocusCommand() command.Command { + return command.Command{ + Name: "unfocus", + Usage: "ginkgo unfocus", + ShortDoc: "Recursively unfocus any focused tests under the current directory", + DocLink: "filtering-specs", + Command: func(_ []string, _ []string) { + unfocusSpecs() + }, + } +} + +func unfocusSpecs() { + fmt.Println("Scanning for focus...") + + goFiles := make(chan string) + go func() { + unfocusDir(goFiles, ".") + close(goFiles) + }() + + const workers = 10 + wg := sync.WaitGroup{} + wg.Add(workers) + + for i := 0; i < workers; i++ { + go func() { + for path := range goFiles { + unfocusFile(path) + } + wg.Done() + }() + } + + wg.Wait() +} + +func unfocusDir(goFiles chan string, path string) { + files, err := os.ReadDir(path) + if err != nil { + fmt.Println(err.Error()) + return + } + + for _, f := range files { + switch { + case f.IsDir() && shouldProcessDir(f.Name()): + unfocusDir(goFiles, filepath.Join(path, f.Name())) + case !f.IsDir() && shouldProcessFile(f.Name()): + goFiles <- filepath.Join(path, f.Name()) + } + } +} + +func shouldProcessDir(basename string) bool { + return basename != "vendor" && !strings.HasPrefix(basename, ".") +} + +func shouldProcessFile(basename string) bool { + return strings.HasSuffix(basename, ".go") +} + +func unfocusFile(path string) { + data, err := os.ReadFile(path) + if err != nil { + fmt.Printf("error reading file '%s': %s\n", path, err.Error()) + return + } + + ast, err := parser.ParseFile(token.NewFileSet(), path, bytes.NewReader(data), parser.ParseComments) + if err != nil { + fmt.Printf("error parsing file '%s': %s\n", path, err.Error()) + return + } + + eliminations := scanForFocus(ast) + if len(eliminations) == 0 { + return + } + + fmt.Printf("...updating %s\n", path) + backup, err := writeBackup(path, data) + if err != nil { + fmt.Printf("error creating backup file: %s\n", err.Error()) + return + } + + if err := updateFile(path, data, eliminations); err != nil { + fmt.Printf("error writing file '%s': %s\n", path, err.Error()) + return + } + + os.Remove(backup) +} + +func writeBackup(path string, data []byte) (string, error) { + t, err := os.CreateTemp(filepath.Dir(path), filepath.Base(path)) + + if err != nil { + return "", fmt.Errorf("error creating temporary file: %w", err) + } + defer t.Close() + + if _, err := io.Copy(t, bytes.NewReader(data)); err != nil { + return "", fmt.Errorf("error writing to temporary file: %w", err) + } + + return t.Name(), nil +} + +func updateFile(path string, data []byte, eliminations [][]int64) error { + to, err := os.Create(path) + if err != nil { + return fmt.Errorf("error opening file for writing '%s': %w\n", path, err) + } + defer to.Close() + + from := bytes.NewReader(data) + var cursor int64 + for _, eliminationRange := range eliminations { + positionToEliminate, lengthToEliminate := eliminationRange[0]-1, eliminationRange[1] + if _, err := io.CopyN(to, from, positionToEliminate-cursor); err != nil { + return fmt.Errorf("error copying data: %w", err) + } + + cursor = positionToEliminate + lengthToEliminate + + if _, err := from.Seek(lengthToEliminate, io.SeekCurrent); err != nil { + return fmt.Errorf("error seeking to position in buffer: %w", err) + } + } + + if _, err := io.Copy(to, from); err != nil { + return fmt.Errorf("error copying end data: %w", err) + } + + return nil +} + +func scanForFocus(file *ast.File) (eliminations [][]int64) { + ast.Inspect(file, func(n ast.Node) bool { + if c, ok := n.(*ast.CallExpr); ok { + if i, ok := c.Fun.(*ast.Ident); ok { + if isFocus(i.Name) { + eliminations = append(eliminations, []int64{int64(i.Pos()), 1}) + } + } + } + + if i, ok := n.(*ast.Ident); ok { + if i.Name == "Focus" { + eliminations = append(eliminations, []int64{int64(i.Pos()), 6}) + } + } + + return true + }) + + return eliminations +} + +func isFocus(name string) bool { + switch name { + case "FDescribe", "FContext", "FIt", "FDescribeTable", "FEntry", "FSpecify", "FWhen": + return true + default: + return false + } +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/delta.go b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/delta.go new file mode 100644 index 000000000..6c485c5b1 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/delta.go @@ -0,0 +1,22 @@ +package watch + +import "sort" + +type Delta struct { + ModifiedPackages []string + + NewSuites []*Suite + RemovedSuites []*Suite + modifiedSuites []*Suite +} + +type DescendingByDelta []*Suite + +func (a DescendingByDelta) Len() int { return len(a) } +func (a DescendingByDelta) Swap(i, j int) { a[i], a[j] = a[j], a[i] } +func (a DescendingByDelta) Less(i, j int) bool { return a[i].Delta() > a[j].Delta() } + +func (d Delta) ModifiedSuites() []*Suite { + sort.Sort(DescendingByDelta(d.modifiedSuites)) + return d.modifiedSuites +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/delta_tracker.go b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/delta_tracker.go new file mode 100644 index 000000000..26418ac62 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/delta_tracker.go @@ -0,0 +1,75 @@ +package watch + +import ( + "fmt" + + "regexp" + + "github.com/onsi/ginkgo/v2/ginkgo/internal" +) + +type SuiteErrors map[internal.TestSuite]error + +type DeltaTracker struct { + maxDepth int + watchRegExp *regexp.Regexp + suites map[string]*Suite + packageHashes *PackageHashes +} + +func NewDeltaTracker(maxDepth int, watchRegExp *regexp.Regexp) *DeltaTracker { + return &DeltaTracker{ + maxDepth: maxDepth, + watchRegExp: watchRegExp, + packageHashes: NewPackageHashes(watchRegExp), + suites: map[string]*Suite{}, + } +} + +func (d *DeltaTracker) Delta(suites internal.TestSuites) (delta Delta, errors SuiteErrors) { + errors = SuiteErrors{} + delta.ModifiedPackages = d.packageHashes.CheckForChanges() + + providedSuitePaths := map[string]bool{} + for _, suite := range suites { + providedSuitePaths[suite.Path] = true + } + + d.packageHashes.StartTrackingUsage() + + for _, suite := range d.suites { + if providedSuitePaths[suite.Suite.Path] { + if suite.Delta() > 0 { + delta.modifiedSuites = append(delta.modifiedSuites, suite) + } + } else { + delta.RemovedSuites = append(delta.RemovedSuites, suite) + } + } + + d.packageHashes.StopTrackingUsageAndPrune() + + for _, suite := range suites { + _, ok := d.suites[suite.Path] + if !ok { + s, err := NewSuite(suite, d.maxDepth, d.packageHashes) + if err != nil { + errors[suite] = err + continue + } + d.suites[suite.Path] = s + delta.NewSuites = append(delta.NewSuites, s) + } + } + + return delta, errors +} + +func (d *DeltaTracker) WillRun(suite internal.TestSuite) error { + s, ok := d.suites[suite.Path] + if !ok { + return fmt.Errorf("unknown suite %s", suite.Path) + } + + return s.MarkAsRunAndRecomputedDependencies(d.maxDepth) +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/dependencies.go b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/dependencies.go new file mode 100644 index 000000000..a34d94354 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/dependencies.go @@ -0,0 +1,92 @@ +package watch + +import ( + "go/build" + "regexp" +) + +var ginkgoAndGomegaFilter = regexp.MustCompile(`github\.com/onsi/ginkgo|github\.com/onsi/gomega`) +var ginkgoIntegrationTestFilter = regexp.MustCompile(`github\.com/onsi/ginkgo/integration`) //allow us to integration test this thing + +type Dependencies struct { + deps map[string]int +} + +func NewDependencies(path string, maxDepth int) (Dependencies, error) { + d := Dependencies{ + deps: map[string]int{}, + } + + if maxDepth == 0 { + return d, nil + } + + err := d.seedWithDepsForPackageAtPath(path) + if err != nil { + return d, err + } + + for depth := 1; depth < maxDepth; depth++ { + n := len(d.deps) + d.addDepsForDepth(depth) + if n == len(d.deps) { + break + } + } + + return d, nil +} + +func (d Dependencies) Dependencies() map[string]int { + return d.deps +} + +func (d Dependencies) seedWithDepsForPackageAtPath(path string) error { + pkg, err := build.ImportDir(path, 0) + if err != nil { + return err + } + + d.resolveAndAdd(pkg.Imports, 1) + d.resolveAndAdd(pkg.TestImports, 1) + d.resolveAndAdd(pkg.XTestImports, 1) + + delete(d.deps, pkg.Dir) + return nil +} + +func (d Dependencies) addDepsForDepth(depth int) { + for dep, depDepth := range d.deps { + if depDepth == depth { + d.addDepsForDep(dep, depth+1) + } + } +} + +func (d Dependencies) addDepsForDep(dep string, depth int) { + pkg, err := build.ImportDir(dep, 0) + if err != nil { + println(err.Error()) + return + } + d.resolveAndAdd(pkg.Imports, depth) +} + +func (d Dependencies) resolveAndAdd(deps []string, depth int) { + for _, dep := range deps { + pkg, err := build.Import(dep, ".", 0) + if err != nil { + continue + } + if !pkg.Goroot && (!ginkgoAndGomegaFilter.MatchString(pkg.Dir) || ginkgoIntegrationTestFilter.MatchString(pkg.Dir)) { + d.addDepIfNotPresent(pkg.Dir, depth) + } + } +} + +func (d Dependencies) addDepIfNotPresent(dep string, depth int) { + _, ok := d.deps[dep] + if !ok { + d.deps[dep] = depth + } +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/package_hash.go b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/package_hash.go new file mode 100644 index 000000000..0e6ae1f29 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/package_hash.go @@ -0,0 +1,117 @@ +package watch + +import ( + "fmt" + "os" + "regexp" + "strings" + "time" +) + +var goTestRegExp = regexp.MustCompile(`_test\.go$`) + +type PackageHash struct { + CodeModifiedTime time.Time + TestModifiedTime time.Time + Deleted bool + + path string + codeHash string + testHash string + watchRegExp *regexp.Regexp +} + +func NewPackageHash(path string, watchRegExp *regexp.Regexp) *PackageHash { + p := &PackageHash{ + path: path, + watchRegExp: watchRegExp, + } + + p.codeHash, _, p.testHash, _, p.Deleted = p.computeHashes() + + return p +} + +func (p *PackageHash) CheckForChanges() bool { + codeHash, codeModifiedTime, testHash, testModifiedTime, deleted := p.computeHashes() + + if deleted { + if !p.Deleted { + t := time.Now() + p.CodeModifiedTime = t + p.TestModifiedTime = t + } + p.Deleted = true + return true + } + + modified := false + p.Deleted = false + + if p.codeHash != codeHash { + p.CodeModifiedTime = codeModifiedTime + modified = true + } + if p.testHash != testHash { + p.TestModifiedTime = testModifiedTime + modified = true + } + + p.codeHash = codeHash + p.testHash = testHash + return modified +} + +func (p *PackageHash) computeHashes() (codeHash string, codeModifiedTime time.Time, testHash string, testModifiedTime time.Time, deleted bool) { + entries, err := os.ReadDir(p.path) + + if err != nil { + deleted = true + return + } + + for _, entry := range entries { + if entry.IsDir() { + continue + } + + info, err := entry.Info() + if err != nil { + continue + } + + if isHiddenFile(info) { + continue + } + + if goTestRegExp.MatchString(info.Name()) { + testHash += p.hashForFileInfo(info) + if info.ModTime().After(testModifiedTime) { + testModifiedTime = info.ModTime() + } + continue + } + + if p.watchRegExp.MatchString(info.Name()) { + codeHash += p.hashForFileInfo(info) + if info.ModTime().After(codeModifiedTime) { + codeModifiedTime = info.ModTime() + } + } + } + + testHash += codeHash + if codeModifiedTime.After(testModifiedTime) { + testModifiedTime = codeModifiedTime + } + + return +} + +func isHiddenFile(info os.FileInfo) bool { + return strings.HasPrefix(info.Name(), ".") || strings.HasPrefix(info.Name(), "_") +} + +func (p *PackageHash) hashForFileInfo(info os.FileInfo) string { + return fmt.Sprintf("%s_%d_%d", info.Name(), info.Size(), info.ModTime().UnixNano()) +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/package_hashes.go b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/package_hashes.go new file mode 100644 index 000000000..b4892bebf --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/package_hashes.go @@ -0,0 +1,85 @@ +package watch + +import ( + "path/filepath" + "regexp" + "sync" +) + +type PackageHashes struct { + PackageHashes map[string]*PackageHash + usedPaths map[string]bool + watchRegExp *regexp.Regexp + lock *sync.Mutex +} + +func NewPackageHashes(watchRegExp *regexp.Regexp) *PackageHashes { + return &PackageHashes{ + PackageHashes: map[string]*PackageHash{}, + usedPaths: nil, + watchRegExp: watchRegExp, + lock: &sync.Mutex{}, + } +} + +func (p *PackageHashes) CheckForChanges() []string { + p.lock.Lock() + defer p.lock.Unlock() + + modified := []string{} + + for _, packageHash := range p.PackageHashes { + if packageHash.CheckForChanges() { + modified = append(modified, packageHash.path) + } + } + + return modified +} + +func (p *PackageHashes) Add(path string) *PackageHash { + p.lock.Lock() + defer p.lock.Unlock() + + path, _ = filepath.Abs(path) + _, ok := p.PackageHashes[path] + if !ok { + p.PackageHashes[path] = NewPackageHash(path, p.watchRegExp) + } + + if p.usedPaths != nil { + p.usedPaths[path] = true + } + return p.PackageHashes[path] +} + +func (p *PackageHashes) Get(path string) *PackageHash { + p.lock.Lock() + defer p.lock.Unlock() + + path, _ = filepath.Abs(path) + if p.usedPaths != nil { + p.usedPaths[path] = true + } + return p.PackageHashes[path] +} + +func (p *PackageHashes) StartTrackingUsage() { + p.lock.Lock() + defer p.lock.Unlock() + + p.usedPaths = map[string]bool{} +} + +func (p *PackageHashes) StopTrackingUsageAndPrune() { + p.lock.Lock() + defer p.lock.Unlock() + + for path := range p.PackageHashes { + if !p.usedPaths[path] { + delete(p.PackageHashes, path) + } + } + + p.usedPaths = nil +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/suite.go b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/suite.go new file mode 100644 index 000000000..53272df7e --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/suite.go @@ -0,0 +1,87 @@ +package watch + +import ( + "fmt" + "math" + "time" + + "github.com/onsi/ginkgo/v2/ginkgo/internal" +) + +type Suite struct { + Suite internal.TestSuite + RunTime time.Time + Dependencies Dependencies + + sharedPackageHashes *PackageHashes +} + +func NewSuite(suite internal.TestSuite, maxDepth int, sharedPackageHashes *PackageHashes) (*Suite, error) { + deps, err := NewDependencies(suite.Path, maxDepth) + if err != nil { + return nil, err + } + + sharedPackageHashes.Add(suite.Path) + for dep := range deps.Dependencies() { + sharedPackageHashes.Add(dep) + } + + return &Suite{ + Suite: suite, + Dependencies: deps, + + sharedPackageHashes: sharedPackageHashes, + }, nil +} + +func (s *Suite) Delta() float64 { + delta := s.delta(s.Suite.Path, true, 0) * 1000 + for dep, depth := range s.Dependencies.Dependencies() { + delta += s.delta(dep, false, depth) + } + return delta +} + +func (s *Suite) MarkAsRunAndRecomputedDependencies(maxDepth int) error { + s.RunTime = time.Now() + + deps, err := NewDependencies(s.Suite.Path, maxDepth) + if err != nil { + return err + } + + s.sharedPackageHashes.Add(s.Suite.Path) + for dep := range deps.Dependencies() { + s.sharedPackageHashes.Add(dep) + } + + s.Dependencies = deps + + return nil +} + +func (s *Suite) Description() string { + numDeps := len(s.Dependencies.Dependencies()) + pluralizer := "ies" + if numDeps == 1 { + pluralizer = "y" + } + return fmt.Sprintf("%s [%d dependenc%s]", s.Suite.Path, numDeps, pluralizer) +} + +func (s *Suite) delta(packagePath string, includeTests bool, depth int) float64 { + return math.Max(float64(s.dt(packagePath, includeTests)), 0) / float64(depth+1) +} + +func (s *Suite) dt(packagePath string, includeTests bool) time.Duration { + packageHash := s.sharedPackageHashes.Get(packagePath) + var modifiedTime time.Time + if includeTests { + modifiedTime = packageHash.TestModifiedTime + } else { + modifiedTime = packageHash.CodeModifiedTime + } + + return modifiedTime.Sub(s.RunTime) +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/watch_command.go b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/watch_command.go new file mode 100644 index 000000000..fe1ca3051 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo/watch/watch_command.go @@ -0,0 +1,192 @@ +package watch + +import ( + "fmt" + "regexp" + "time" + + "github.com/onsi/ginkgo/v2/formatter" + "github.com/onsi/ginkgo/v2/ginkgo/command" + "github.com/onsi/ginkgo/v2/ginkgo/internal" + "github.com/onsi/ginkgo/v2/internal/interrupt_handler" + "github.com/onsi/ginkgo/v2/types" +) + +func BuildWatchCommand() command.Command { + var suiteConfig = types.NewDefaultSuiteConfig() + var reporterConfig = types.NewDefaultReporterConfig() + var cliConfig = types.NewDefaultCLIConfig() + var goFlagsConfig = types.NewDefaultGoFlagsConfig() + + flags, err := types.BuildWatchCommandFlagSet(&suiteConfig, &reporterConfig, &cliConfig, &goFlagsConfig) + if err != nil { + panic(err) + } + interruptHandler := interrupt_handler.NewInterruptHandler(nil) + interrupt_handler.SwallowSigQuit() + + return command.Command{ + Name: "watch", + Flags: flags, + Usage: "ginkgo watch -- ", + ShortDoc: "Watch the passed in and runs their tests whenever changes occur.", + Documentation: "Any arguments after -- will be passed to the test.", + DocLink: "watching-for-changes", + Command: func(args []string, additionalArgs []string) { + var errors []error + cliConfig, goFlagsConfig, errors = types.VetAndInitializeCLIAndGoConfig(cliConfig, goFlagsConfig) + command.AbortIfErrors("Ginkgo detected configuration issues:", errors) + + watcher := &SpecWatcher{ + cliConfig: cliConfig, + goFlagsConfig: goFlagsConfig, + suiteConfig: suiteConfig, + reporterConfig: reporterConfig, + flags: flags, + + interruptHandler: interruptHandler, + } + + watcher.WatchSpecs(args, additionalArgs) + }, + } +} + +type SpecWatcher struct { + suiteConfig types.SuiteConfig + reporterConfig types.ReporterConfig + cliConfig types.CLIConfig + goFlagsConfig types.GoFlagsConfig + flags types.GinkgoFlagSet + + interruptHandler *interrupt_handler.InterruptHandler +} + +func (w *SpecWatcher) WatchSpecs(args []string, additionalArgs []string) { + suites := internal.FindSuites(args, w.cliConfig, false).WithoutState(internal.TestSuiteStateSkippedByFilter) + + internal.VerifyCLIAndFrameworkVersion(suites) + + if len(suites) == 0 { + command.AbortWith("Found no test suites") + } + + fmt.Printf("Identified %d test %s. Locating dependencies to a depth of %d (this may take a while)...\n", len(suites), internal.PluralizedWord("suite", "suites", len(suites)), w.cliConfig.Depth) + deltaTracker := NewDeltaTracker(w.cliConfig.Depth, regexp.MustCompile(w.cliConfig.WatchRegExp)) + delta, errors := deltaTracker.Delta(suites) + + fmt.Printf("Watching %d %s:\n", len(delta.NewSuites), internal.PluralizedWord("suite", "suites", len(delta.NewSuites))) + for _, suite := range delta.NewSuites { + fmt.Println(" " + suite.Description()) + } + + for suite, err := range errors { + fmt.Printf("Failed to watch %s: %s\n", suite.PackageName, err) + } + + if len(suites) == 1 { + w.updateSeed() + w.compileAndRun(suites[0], additionalArgs) + } + + ticker := time.NewTicker(time.Second) + + for { + select { + case <-ticker.C: + suites := internal.FindSuites(args, w.cliConfig, false).WithoutState(internal.TestSuiteStateSkippedByFilter) + delta, _ := deltaTracker.Delta(suites) + coloredStream := formatter.ColorableStdOut + + suites = internal.TestSuites{} + + if len(delta.NewSuites) > 0 { + fmt.Fprintln(coloredStream, formatter.F("{{green}}Detected %d new %s:{{/}}", len(delta.NewSuites), internal.PluralizedWord("suite", "suites", len(delta.NewSuites)))) + for _, suite := range delta.NewSuites { + suites = append(suites, suite.Suite) + fmt.Fprintln(coloredStream, formatter.Fi(1, "%s", suite.Description())) + } + } + + modifiedSuites := delta.ModifiedSuites() + if len(modifiedSuites) > 0 { + fmt.Fprintln(coloredStream, formatter.F("{{green}}Detected changes in:{{/}}")) + for _, pkg := range delta.ModifiedPackages { + fmt.Fprintln(coloredStream, formatter.Fi(1, "%s", pkg)) + } + fmt.Fprintln(coloredStream, formatter.F("{{green}}Will run %d %s:{{/}}", len(modifiedSuites), internal.PluralizedWord("suite", "suites", len(modifiedSuites)))) + for _, suite := range modifiedSuites { + suites = append(suites, suite.Suite) + fmt.Fprintln(coloredStream, formatter.Fi(1, "%s", suite.Description())) + } + fmt.Fprintln(coloredStream, "") + } + + if len(suites) == 0 { + break + } + + w.updateSeed() + w.computeSuccinctMode(len(suites)) + for idx := range suites { + if w.interruptHandler.Status().Interrupted() { + return + } + deltaTracker.WillRun(suites[idx]) + suites[idx] = w.compileAndRun(suites[idx], additionalArgs) + } + color := "{{green}}" + if suites.CountWithState(internal.TestSuiteStateFailureStates...) > 0 { + color = "{{red}}" + } + fmt.Fprintln(coloredStream, formatter.F(color+"\nDone. Resuming watch...{{/}}")) + + messages, err := internal.FinalizeProfilesAndReportsForSuites(suites, w.cliConfig, w.suiteConfig, w.reporterConfig, w.goFlagsConfig) + command.AbortIfError("could not finalize profiles:", err) + for _, message := range messages { + fmt.Println(message) + } + case <-w.interruptHandler.Status().Channel: + return + } + } +} + +func (w *SpecWatcher) compileAndRun(suite internal.TestSuite, additionalArgs []string) internal.TestSuite { + suite = internal.CompileSuite(suite, w.goFlagsConfig, false) + if suite.State.Is(internal.TestSuiteStateFailedToCompile) { + fmt.Println(suite.CompilationError.Error()) + return suite + } + if w.interruptHandler.Status().Interrupted() { + return suite + } + suite = internal.RunCompiledSuite(suite, w.suiteConfig, w.reporterConfig, w.cliConfig, w.goFlagsConfig, additionalArgs) + internal.Cleanup(w.goFlagsConfig, suite) + return suite +} + +func (w *SpecWatcher) computeSuccinctMode(numSuites int) { + if w.reporterConfig.Verbosity().GTE(types.VerbosityLevelVerbose) { + w.reporterConfig.Succinct = false + return + } + + if w.flags.WasSet("succinct") { + return + } + + if numSuites == 1 { + w.reporterConfig.Succinct = false + } + + if numSuites > 1 { + w.reporterConfig.Succinct = true + } +} + +func (w *SpecWatcher) updateSeed() { + if !w.flags.WasSet("seed") { + w.suiteConfig.RandomSeed = time.Now().Unix() + } +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo_cli_dependencies.go b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo_cli_dependencies.go new file mode 100644 index 000000000..85162720f --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo_cli_dependencies.go @@ -0,0 +1,8 @@ +//go:build ginkgoclidependencies +// +build ginkgoclidependencies + +package ginkgo + +import ( + _ "github.com/onsi/ginkgo/v2/ginkgo" +) diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo_t_dsl.go b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo_t_dsl.go new file mode 100644 index 000000000..993279de2 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/ginkgo_t_dsl.go @@ -0,0 +1,189 @@ +package ginkgo + +import ( + "context" + "testing" + + "github.com/onsi/ginkgo/v2/internal/testingtproxy" + "github.com/onsi/ginkgo/v2/types" +) + +/* +GinkgoT() implements an interface that allows third party libraries to integrate with and build on top of Ginkgo. + +GinkgoT() is analogous to *testing.T and implements the majority of *testing.T's methods. It can be typically be used a a drop-in replacement with third-party libraries that accept *testing.T through an interface. + +GinkgoT() takes an optional offset argument that can be used to get the +correct line number associated with the failure - though you do not need to use this if you call GinkgoHelper() or GinkgoT().Helper() appropriately + +GinkgoT() attempts to mimic the behavior of `testing.T` with the exception of the following: + +- Error/Errorf: failures in Ginkgo always immediately stop execution and there is no mechanism to log a failure without aborting the test. As such Error/Errorf are equivalent to Fatal/Fatalf. +- Parallel() is a no-op as Ginkgo's multi-process parallelism model is substantially different from go test's in-process model. + +You can learn more here: https://onsi.github.io/ginkgo/#using-third-party-libraries +*/ +func GinkgoT(optionalOffset ...int) FullGinkgoTInterface { + offset := 1 + if len(optionalOffset) > 0 { + offset = optionalOffset[0] + } + return testingtproxy.New( + GinkgoWriter, + Fail, + Skip, + DeferCleanup, + CurrentSpecReport, + AddReportEntry, + GinkgoRecover, + AttachProgressReporter, + suiteConfig.RandomSeed, + suiteConfig.ParallelProcess, + suiteConfig.ParallelTotal, + reporterConfig.NoColor, + offset) +} + +/* +The portion of the interface returned by GinkgoT() that maps onto methods in the testing package's T. +*/ +type GinkgoTInterface interface { + Cleanup(func()) + Chdir(dir string) + Context() context.Context + Setenv(kev, value string) + Error(args ...any) + Errorf(format string, args ...any) + Fail() + FailNow() + Failed() bool + Fatal(args ...any) + Fatalf(format string, args ...any) + Helper() + Log(args ...any) + Logf(format string, args ...any) + Name() string + Parallel() + Skip(args ...any) + SkipNow() + Skipf(format string, args ...any) + Skipped() bool + TempDir() string +} + +/* +Additional methods returned by GinkgoT() that provide deeper integration points into Ginkgo +*/ +type FullGinkgoTInterface interface { + GinkgoTInterface + + AddReportEntryVisibilityAlways(name string, args ...any) + AddReportEntryVisibilityFailureOrVerbose(name string, args ...any) + AddReportEntryVisibilityNever(name string, args ...any) + + //Prints to the GinkgoWriter + Print(a ...any) + Printf(format string, a ...any) + Println(a ...any) + + //Provides access to Ginkgo's color formatting, correctly configured to match the color settings specified in the invocation of ginkgo + F(format string, args ...any) string + Fi(indentation uint, format string, args ...any) string + Fiw(indentation uint, maxWidth uint, format string, args ...any) string + + //Generates a formatted string version of the current spec's timeline + RenderTimeline() string + + GinkgoRecover() + DeferCleanup(args ...any) + + RandomSeed() int64 + ParallelProcess() int + ParallelTotal() int + + AttachProgressReporter(func() string) func() +} + +/* +GinkgoTB() implements a wrapper that exactly matches the testing.TB interface. + +In go 1.18 a new private() function was added to the testing.TB interface. Any function which accepts testing.TB as input needs to be passed in something that directly implements testing.TB. + +This wrapper satisfies the testing.TB interface and intended to be used as a drop-in replacement with third party libraries that accept testing.TB. + +Similar to GinkgoT(), GinkgoTB() takes an optional offset argument that can be used to get the +correct line number associated with the failure - though you do not need to use this if you call GinkgoHelper() or GinkgoT().Helper() appropriately +*/ +func GinkgoTB(optionalOffset ...int) *GinkgoTBWrapper { + offset := 2 + if len(optionalOffset) > 0 { + offset = optionalOffset[0] + } + return &GinkgoTBWrapper{GinkgoT: GinkgoT(offset)} +} + +type GinkgoTBWrapper struct { + testing.TB + GinkgoT FullGinkgoTInterface +} + +func (g *GinkgoTBWrapper) Cleanup(f func()) { + g.GinkgoT.Cleanup(f) +} +func (g *GinkgoTBWrapper) Chdir(dir string) { + g.GinkgoT.Chdir(dir) +} +func (g *GinkgoTBWrapper) Context() context.Context { + return g.GinkgoT.Context() +} +func (g *GinkgoTBWrapper) Error(args ...any) { + g.GinkgoT.Error(args...) +} +func (g *GinkgoTBWrapper) Errorf(format string, args ...any) { + g.GinkgoT.Errorf(format, args...) +} +func (g *GinkgoTBWrapper) Fail() { + g.GinkgoT.Fail() +} +func (g *GinkgoTBWrapper) FailNow() { + g.GinkgoT.FailNow() +} +func (g *GinkgoTBWrapper) Failed() bool { + return g.GinkgoT.Failed() +} +func (g *GinkgoTBWrapper) Fatal(args ...any) { + g.GinkgoT.Fatal(args...) +} +func (g *GinkgoTBWrapper) Fatalf(format string, args ...any) { + g.GinkgoT.Fatalf(format, args...) +} +func (g *GinkgoTBWrapper) Helper() { + types.MarkAsHelper(1) +} +func (g *GinkgoTBWrapper) Log(args ...any) { + g.GinkgoT.Log(args...) +} +func (g *GinkgoTBWrapper) Logf(format string, args ...any) { + g.GinkgoT.Logf(format, args...) +} +func (g *GinkgoTBWrapper) Name() string { + return g.GinkgoT.Name() +} +func (g *GinkgoTBWrapper) Setenv(key, value string) { + g.GinkgoT.Setenv(key, value) +} +func (g *GinkgoTBWrapper) Skip(args ...any) { + g.GinkgoT.Skip(args...) +} +func (g *GinkgoTBWrapper) SkipNow() { + g.GinkgoT.SkipNow() +} +func (g *GinkgoTBWrapper) Skipf(format string, args ...any) { + g.GinkgoT.Skipf(format, args...) +} +func (g *GinkgoTBWrapper) Skipped() bool { + return g.GinkgoT.Skipped() +} +func (g *GinkgoTBWrapper) TempDir() string { + return g.GinkgoT.TempDir() +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/internal/counter.go b/tests/vendor/github.com/onsi/ginkgo/v2/internal/counter.go new file mode 100644 index 000000000..712d85afb --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/internal/counter.go @@ -0,0 +1,9 @@ +package internal + +func MakeIncrementingIndexCounter() func() (int, error) { + idx := -1 + return func() (int, error) { + idx += 1 + return idx, nil + } +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/internal/failer.go b/tests/vendor/github.com/onsi/ginkgo/v2/internal/failer.go new file mode 100644 index 000000000..8c5de9c16 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/internal/failer.go @@ -0,0 +1,99 @@ +package internal + +import ( + "fmt" + "sync" + + "github.com/onsi/ginkgo/v2/types" +) + +type Failer struct { + lock *sync.Mutex + failure types.Failure + state types.SpecState +} + +func NewFailer() *Failer { + return &Failer{ + lock: &sync.Mutex{}, + state: types.SpecStatePassed, + } +} + +func (f *Failer) GetState() types.SpecState { + f.lock.Lock() + defer f.lock.Unlock() + return f.state +} + +func (f *Failer) GetFailure() types.Failure { + f.lock.Lock() + defer f.lock.Unlock() + return f.failure +} + +func (f *Failer) Panic(location types.CodeLocation, forwardedPanic any) { + f.lock.Lock() + defer f.lock.Unlock() + + if f.state == types.SpecStatePassed { + f.state = types.SpecStatePanicked + f.failure = types.Failure{ + Message: "Test Panicked", + Location: location, + ForwardedPanic: fmt.Sprintf("%v", forwardedPanic), + } + } +} + +func (f *Failer) Fail(message string, location types.CodeLocation) { + f.lock.Lock() + defer f.lock.Unlock() + + if f.state == types.SpecStatePassed { + f.state = types.SpecStateFailed + f.failure = types.Failure{ + Message: message, + Location: location, + } + } +} + +func (f *Failer) Skip(message string, location types.CodeLocation) { + f.lock.Lock() + defer f.lock.Unlock() + + if f.state == types.SpecStatePassed { + f.state = types.SpecStateSkipped + f.failure = types.Failure{ + Message: message, + Location: location, + } + } +} + +func (f *Failer) AbortSuite(message string, location types.CodeLocation) { + f.lock.Lock() + defer f.lock.Unlock() + + if f.state == types.SpecStatePassed { + f.state = types.SpecStateAborted + f.failure = types.Failure{ + Message: message, + Location: location, + } + } +} + +func (f *Failer) Drain() (types.SpecState, types.Failure) { + f.lock.Lock() + defer f.lock.Unlock() + + failure := f.failure + outcome := f.state + + f.state = types.SpecStatePassed + f.failure = types.Failure{} + + return outcome, failure +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/internal/focus.go b/tests/vendor/github.com/onsi/ginkgo/v2/internal/focus.go new file mode 100644 index 000000000..e3da7d14d --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/internal/focus.go @@ -0,0 +1,122 @@ +package internal + +import ( + "regexp" + "strings" + + "github.com/onsi/ginkgo/v2/types" +) + +/* +If a container marked as focus has a descendant that is also marked as focus, Ginkgo's policy is to +unmark the container's focus. This gives developers a more intuitive experience when debugging specs. +It is common to focus a container to just run a subset of specs, then identify the specific specs within the container to focus - +this policy allows the developer to simply focus those specific specs and not need to go back and turn the focus off of the container: + +As a common example, consider: + + FDescribe("something to debug", function() { + It("works", function() {...}) + It("works", function() {...}) + FIt("doesn't work", function() {...}) + It("works", function() {...}) + }) + +here the developer's intent is to focus in on the `"doesn't work"` spec and not to run the adjacent specs in the focused `"something to debug"` container. +The nested policy applied by this function enables this behavior. +*/ +func ApplyNestedFocusPolicyToTree(tree *TreeNode) { + var walkTree func(tree *TreeNode) bool + walkTree = func(tree *TreeNode) bool { + if tree.Node.MarkedPending { + return false + } + hasFocusedDescendant := false + for _, child := range tree.Children { + childHasFocus := walkTree(child) + hasFocusedDescendant = hasFocusedDescendant || childHasFocus + } + tree.Node.MarkedFocus = tree.Node.MarkedFocus && !hasFocusedDescendant + return tree.Node.MarkedFocus || hasFocusedDescendant + } + + walkTree(tree) +} + +/* +Ginkgo supports focussing specs using `FIt`, `FDescribe`, etc. - this is called "programmatic focus" +It also supports focussing specs using regular expressions on the command line (`-focus=`, `-skip=`) that match against spec text and file filters (`-focus-files=`, `-skip-files=`) that match against code locations for nodes in specs. + +When both programmatic and file filters are provided their results are ANDed together. If multiple kinds of filters are provided, the file filters run first followed by the regex filters. + +This function sets the `Skip` property on specs by applying Ginkgo's focus policy: +- If there are no CLI arguments and no programmatic focus, do nothing. +- If a spec somewhere has programmatic focus skip any specs that have no programmatic focus. +- If there are CLI arguments parse them and skip any specs that either don't match the focus filters or do match the skip filters. + +*Note:* specs with pending nodes are Skipped when created by NewSpec. +*/ +func ApplyFocusToSpecs(specs Specs, description string, suiteLabels Labels, suiteConfig types.SuiteConfig) (Specs, bool) { + focusString := strings.Join(suiteConfig.FocusStrings, "|") + skipString := strings.Join(suiteConfig.SkipStrings, "|") + + type SkipCheck func(spec Spec) bool + + // by default, skip any specs marked pending + skipChecks := []SkipCheck{func(spec Spec) bool { return spec.Nodes.HasNodeMarkedPending() }} + hasProgrammaticFocus := false + + for _, spec := range specs { + if spec.Nodes.HasNodeMarkedFocus() && !spec.Nodes.HasNodeMarkedPending() { + hasProgrammaticFocus = true + break + } + } + + if hasProgrammaticFocus { + skipChecks = append(skipChecks, func(spec Spec) bool { return !spec.Nodes.HasNodeMarkedFocus() }) + } + + if suiteConfig.LabelFilter != "" { + labelFilter, _ := types.ParseLabelFilter(suiteConfig.LabelFilter) + skipChecks = append(skipChecks, func(spec Spec) bool { + return !labelFilter(UnionOfLabels(suiteLabels, spec.Nodes.UnionOfLabels())) + }) + } + + if len(suiteConfig.FocusFiles) > 0 { + focusFilters, _ := types.ParseFileFilters(suiteConfig.FocusFiles) + skipChecks = append(skipChecks, func(spec Spec) bool { return !focusFilters.Matches(spec.Nodes.CodeLocations()) }) + } + + if len(suiteConfig.SkipFiles) > 0 { + skipFilters, _ := types.ParseFileFilters(suiteConfig.SkipFiles) + skipChecks = append(skipChecks, func(spec Spec) bool { return skipFilters.Matches(spec.Nodes.CodeLocations()) }) + } + + if focusString != "" { + // skip specs that don't match the focus string + re := regexp.MustCompile(focusString) + skipChecks = append(skipChecks, func(spec Spec) bool { return !re.MatchString(description + " " + spec.Text()) }) + } + + if skipString != "" { + // skip specs that match the skip string + re := regexp.MustCompile(skipString) + skipChecks = append(skipChecks, func(spec Spec) bool { return re.MatchString(description + " " + spec.Text()) }) + } + + // skip specs if shouldSkip() is true. note that we do nothing if shouldSkip() is false to avoid overwriting skip status established by the node's pending status + processedSpecs := Specs{} + for _, spec := range specs { + for _, skipCheck := range skipChecks { + if skipCheck(spec) { + spec.Skip = true + break + } + } + processedSpecs = append(processedSpecs, spec) + } + + return processedSpecs, hasProgrammaticFocus +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/internal/global/init.go b/tests/vendor/github.com/onsi/ginkgo/v2/internal/global/init.go new file mode 100644 index 000000000..464e3c97f --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/internal/global/init.go @@ -0,0 +1,28 @@ +package global + +import ( + "github.com/onsi/ginkgo/v2/internal" +) + +var Suite *internal.Suite +var Failer *internal.Failer +var backupSuite *internal.Suite + +func init() { + InitializeGlobals() +} + +func InitializeGlobals() { + Failer = internal.NewFailer() + Suite = internal.NewSuite() +} + +func PushClone() error { + var err error + backupSuite, err = Suite.Clone() + return err +} + +func PopClone() { + Suite = backupSuite +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/internal/group.go b/tests/vendor/github.com/onsi/ginkgo/v2/internal/group.go new file mode 100644 index 000000000..02c9fe4fc --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/internal/group.go @@ -0,0 +1,383 @@ +package internal + +import ( + "fmt" + "time" + + "github.com/onsi/ginkgo/v2/types" +) + +type runOncePair struct { + //nodeId should only run once... + nodeID uint + nodeType types.NodeType + //...for specs in a hierarchy that includes this context + containerID uint +} + +func (pair runOncePair) isZero() bool { + return pair.nodeID == 0 +} + +func runOncePairForNode(node Node, containerID uint) runOncePair { + return runOncePair{ + nodeID: node.ID, + nodeType: node.NodeType, + containerID: containerID, + } +} + +type runOncePairs []runOncePair + +func runOncePairsForSpec(spec Spec) runOncePairs { + pairs := runOncePairs{} + + containers := spec.Nodes.WithType(types.NodeTypeContainer) + for _, node := range spec.Nodes { + if node.NodeType.Is(types.NodeTypeBeforeAll | types.NodeTypeAfterAll) { + pairs = append(pairs, runOncePairForNode(node, containers.FirstWithNestingLevel(node.NestingLevel-1).ID)) + } else if node.NodeType.Is(types.NodeTypeBeforeEach|types.NodeTypeJustBeforeEach|types.NodeTypeAfterEach|types.NodeTypeJustAfterEach) && node.MarkedOncePerOrdered { + passedIntoAnOrderedContainer := false + firstOrderedContainerDeeperThanNode := containers.FirstSatisfying(func(container Node) bool { + passedIntoAnOrderedContainer = passedIntoAnOrderedContainer || container.MarkedOrdered + return container.NestingLevel >= node.NestingLevel && passedIntoAnOrderedContainer + }) + if firstOrderedContainerDeeperThanNode.IsZero() { + continue + } + pairs = append(pairs, runOncePairForNode(node, firstOrderedContainerDeeperThanNode.ID)) + } + } + + return pairs +} + +func (pairs runOncePairs) runOncePairFor(nodeID uint) runOncePair { + for i := range pairs { + if pairs[i].nodeID == nodeID { + return pairs[i] + } + } + return runOncePair{} +} + +func (pairs runOncePairs) hasRunOncePair(pair runOncePair) bool { + for i := range pairs { + if pairs[i] == pair { + return true + } + } + return false +} + +func (pairs runOncePairs) withType(nodeTypes types.NodeType) runOncePairs { + count := 0 + for i := range pairs { + if pairs[i].nodeType.Is(nodeTypes) { + count++ + } + } + + out, j := make(runOncePairs, count), 0 + for i := range pairs { + if pairs[i].nodeType.Is(nodeTypes) { + out[j] = pairs[i] + j++ + } + } + return out +} + +type group struct { + suite *Suite + specs Specs + runOncePairs map[uint]runOncePairs + runOnceTracker map[runOncePair]types.SpecState + + succeeded bool + failedInARunOnceBefore bool + continueOnFailure bool +} + +func newGroup(suite *Suite) *group { + return &group{ + suite: suite, + runOncePairs: map[uint]runOncePairs{}, + runOnceTracker: map[runOncePair]types.SpecState{}, + succeeded: true, + failedInARunOnceBefore: false, + continueOnFailure: false, + } +} + +func (g *group) initialReportForSpec(spec Spec) types.SpecReport { + return types.SpecReport{ + ContainerHierarchyTexts: spec.Nodes.WithType(types.NodeTypeContainer).Texts(), + ContainerHierarchyLocations: spec.Nodes.WithType(types.NodeTypeContainer).CodeLocations(), + ContainerHierarchyLabels: spec.Nodes.WithType(types.NodeTypeContainer).Labels(), + LeafNodeLocation: spec.FirstNodeWithType(types.NodeTypeIt).CodeLocation, + LeafNodeType: types.NodeTypeIt, + LeafNodeText: spec.FirstNodeWithType(types.NodeTypeIt).Text, + LeafNodeLabels: []string(spec.FirstNodeWithType(types.NodeTypeIt).Labels), + ParallelProcess: g.suite.config.ParallelProcess, + RunningInParallel: g.suite.isRunningInParallel(), + IsSerial: spec.Nodes.HasNodeMarkedSerial(), + IsInOrderedContainer: !spec.Nodes.FirstNodeMarkedOrdered().IsZero(), + MaxFlakeAttempts: spec.Nodes.GetMaxFlakeAttempts(), + MaxMustPassRepeatedly: spec.Nodes.GetMaxMustPassRepeatedly(), + } +} + +func (g *group) evaluateSkipStatus(spec Spec) (types.SpecState, types.Failure) { + if spec.Nodes.HasNodeMarkedPending() { + return types.SpecStatePending, types.Failure{} + } + if spec.Skip { + return types.SpecStateSkipped, types.Failure{} + } + if g.suite.interruptHandler.Status().Interrupted() || g.suite.skipAll { + return types.SpecStateSkipped, types.Failure{} + } + if !g.suite.deadline.IsZero() && g.suite.deadline.Before(time.Now()) { + return types.SpecStateSkipped, types.Failure{} + } + if !g.succeeded && !g.continueOnFailure { + return types.SpecStateSkipped, g.suite.failureForLeafNodeWithMessage(spec.FirstNodeWithType(types.NodeTypeIt), + "Spec skipped because an earlier spec in an ordered container failed") + } + if g.failedInARunOnceBefore && g.continueOnFailure { + return types.SpecStateSkipped, g.suite.failureForLeafNodeWithMessage(spec.FirstNodeWithType(types.NodeTypeIt), + "Spec skipped because a BeforeAll node failed") + } + beforeOncePairs := g.runOncePairs[spec.SubjectID()].withType(types.NodeTypeBeforeAll | types.NodeTypeBeforeEach | types.NodeTypeJustBeforeEach) + for _, pair := range beforeOncePairs { + if g.runOnceTracker[pair].Is(types.SpecStateSkipped) { + return types.SpecStateSkipped, g.suite.failureForLeafNodeWithMessage(spec.FirstNodeWithType(types.NodeTypeIt), + fmt.Sprintf("Spec skipped because Skip() was called in %s", pair.nodeType)) + } + } + if g.suite.config.DryRun { + return types.SpecStatePassed, types.Failure{} + } + return g.suite.currentSpecReport.State, g.suite.currentSpecReport.Failure +} + +func (g *group) isLastSpecWithPair(specID uint, pair runOncePair) bool { + lastSpecID := uint(0) + for idx := range g.specs { + if g.specs[idx].Skip { + continue + } + sID := g.specs[idx].SubjectID() + if g.runOncePairs[sID].hasRunOncePair(pair) { + lastSpecID = sID + } + } + return lastSpecID == specID +} + +func (g *group) attemptSpec(isFinalAttempt bool, spec Spec) bool { + failedInARunOnceBefore := false + pairs := g.runOncePairs[spec.SubjectID()] + + nodes := spec.Nodes.WithType(types.NodeTypeBeforeAll) + nodes = append(nodes, spec.Nodes.WithType(types.NodeTypeBeforeEach)...).SortedByAscendingNestingLevel() + nodes = append(nodes, spec.Nodes.WithType(types.NodeTypeJustBeforeEach).SortedByAscendingNestingLevel()...) + nodes = append(nodes, spec.Nodes.FirstNodeWithType(types.NodeTypeIt)) + terminatingNode, terminatingPair := Node{}, runOncePair{} + + deadline := time.Time{} + if spec.SpecTimeout() > 0 { + deadline = time.Now().Add(spec.SpecTimeout()) + } + + for _, node := range nodes { + oncePair := pairs.runOncePairFor(node.ID) + if !oncePair.isZero() && g.runOnceTracker[oncePair].Is(types.SpecStatePassed) { + continue + } + g.suite.currentSpecReport.State, g.suite.currentSpecReport.Failure = g.suite.runNode(node, deadline, spec.Nodes.BestTextFor(node)) + g.suite.currentSpecReport.RunTime = time.Since(g.suite.currentSpecReport.StartTime) + if !oncePair.isZero() { + g.runOnceTracker[oncePair] = g.suite.currentSpecReport.State + } + if g.suite.currentSpecReport.State != types.SpecStatePassed { + terminatingNode, terminatingPair = node, oncePair + failedInARunOnceBefore = !terminatingPair.isZero() + break + } + } + + afterNodeWasRun := map[uint]bool{} + includeDeferCleanups := false + for { + nodes := spec.Nodes.WithType(types.NodeTypeAfterEach) + nodes = append(nodes, spec.Nodes.WithType(types.NodeTypeAfterAll)...).SortedByDescendingNestingLevel() + nodes = append(spec.Nodes.WithType(types.NodeTypeJustAfterEach).SortedByDescendingNestingLevel(), nodes...) + if !terminatingNode.IsZero() { + nodes = nodes.WithinNestingLevel(terminatingNode.NestingLevel) + } + if includeDeferCleanups { + nodes = append(nodes, g.suite.cleanupNodes.WithType(types.NodeTypeCleanupAfterEach).Reverse()...) + nodes = append(nodes, g.suite.cleanupNodes.WithType(types.NodeTypeCleanupAfterAll).Reverse()...) + } + nodes = nodes.Filter(func(node Node) bool { + if afterNodeWasRun[node.ID] { + //this node has already been run on this attempt, don't rerun it + return false + } + var pair runOncePair + switch node.NodeType { + case types.NodeTypeCleanupAfterEach, types.NodeTypeCleanupAfterAll: + // check if we were generated in an AfterNode that has already run + if afterNodeWasRun[node.NodeIDWhereCleanupWasGenerated] { + return true // we were, so we should definitely run this cleanup now + } + // looks like this cleanup nodes was generated by a before node or it. + // the run-once status of a cleanup node is governed by the run-once status of its generator + pair = pairs.runOncePairFor(node.NodeIDWhereCleanupWasGenerated) + default: + pair = pairs.runOncePairFor(node.ID) + } + if pair.isZero() { + // this node is not governed by any run-once policy, we should run it + return true + } + // it's our last chance to run if we're the last spec for our oncePair + isLastSpecWithPair := g.isLastSpecWithPair(spec.SubjectID(), pair) + + switch g.suite.currentSpecReport.State { + case types.SpecStatePassed: //this attempt is passing... + return isLastSpecWithPair //...we should run-once if we'this is our last chance + case types.SpecStateSkipped: //the spec was skipped by the user... + if isLastSpecWithPair { + return true //...we're the last spec, so we should run the AfterNode + } + if !terminatingPair.isZero() && terminatingNode.NestingLevel == node.NestingLevel { + return true //...or, a run-once node at our nesting level was skipped which means this is our last chance to run + } + case types.SpecStateFailed, types.SpecStatePanicked, types.SpecStateTimedout: // the spec has failed... + if isFinalAttempt { + if g.continueOnFailure { + return isLastSpecWithPair || failedInARunOnceBefore //...we're configured to continue on failures - so we should only run if we're the last spec for this pair or if we failed in a runOnceBefore (which means we _are_ the last spec to run) + } else { + return true //...this was the last attempt and continueOnFailure is false therefore we are the last spec to run and so the AfterNode should run + } + } + if !terminatingPair.isZero() { // ...and it failed in a run-once. which will be running again + if node.NodeType.Is(types.NodeTypeCleanupAfterEach | types.NodeTypeCleanupAfterAll) { + return terminatingNode.ID == node.NodeIDWhereCleanupWasGenerated // we should run this node if we're a clean-up generated by it + } else { + return terminatingNode.NestingLevel == node.NestingLevel // ...or if we're at the same nesting level + } + } + case types.SpecStateInterrupted, types.SpecStateAborted: // ...we've been interrupted and/or aborted + return true //...that means the test run is over and we should clean up the stack. Run the AfterNode + } + return false + }) + + if len(nodes) == 0 && includeDeferCleanups { + break + } + + for _, node := range nodes { + afterNodeWasRun[node.ID] = true + state, failure := g.suite.runNode(node, deadline, spec.Nodes.BestTextFor(node)) + g.suite.currentSpecReport.RunTime = time.Since(g.suite.currentSpecReport.StartTime) + if g.suite.currentSpecReport.State == types.SpecStatePassed || state == types.SpecStateAborted { + g.suite.currentSpecReport.State = state + g.suite.currentSpecReport.Failure = failure + } else if state.Is(types.SpecStateFailureStates) { + g.suite.currentSpecReport.AdditionalFailures = append(g.suite.currentSpecReport.AdditionalFailures, types.AdditionalFailure{State: state, Failure: failure}) + } + } + includeDeferCleanups = true + } + + return failedInARunOnceBefore +} + +func (g *group) run(specs Specs) { + g.specs = specs + g.continueOnFailure = specs[0].Nodes.FirstNodeMarkedOrdered().MarkedContinueOnFailure + for _, spec := range g.specs { + g.runOncePairs[spec.SubjectID()] = runOncePairsForSpec(spec) + } + + for _, spec := range g.specs { + g.suite.selectiveLock.Lock() + g.suite.currentSpecReport = g.initialReportForSpec(spec) + g.suite.selectiveLock.Unlock() + + g.suite.currentSpecReport.State, g.suite.currentSpecReport.Failure = g.evaluateSkipStatus(spec) + g.suite.reporter.WillRun(g.suite.currentSpecReport) + g.suite.reportEach(spec, types.NodeTypeReportBeforeEach) + + skip := g.suite.config.DryRun || g.suite.currentSpecReport.State.Is(types.SpecStateFailureStates|types.SpecStateSkipped|types.SpecStatePending) + + g.suite.currentSpecReport.StartTime = time.Now() + failedInARunOnceBefore := false + if !skip { + var maxAttempts = 1 + + if g.suite.config.MustPassRepeatedly > 0 { + maxAttempts = g.suite.config.MustPassRepeatedly + g.suite.currentSpecReport.MaxMustPassRepeatedly = maxAttempts + } else if g.suite.currentSpecReport.MaxMustPassRepeatedly > 0 { + maxAttempts = max(1, spec.MustPassRepeatedly()) + } else if g.suite.config.FlakeAttempts > 0 { + maxAttempts = g.suite.config.FlakeAttempts + g.suite.currentSpecReport.MaxFlakeAttempts = maxAttempts + } else if g.suite.currentSpecReport.MaxFlakeAttempts > 0 { + maxAttempts = max(1, spec.FlakeAttempts()) + } + + for attempt := 0; attempt < maxAttempts; attempt++ { + g.suite.currentSpecReport.NumAttempts = attempt + 1 + g.suite.writer.Truncate() + g.suite.outputInterceptor.StartInterceptingOutput() + if attempt > 0 { + if g.suite.currentSpecReport.MaxMustPassRepeatedly > 0 { + g.suite.handleSpecEvent(types.SpecEvent{SpecEventType: types.SpecEventSpecRepeat, Attempt: attempt}) + } + if g.suite.currentSpecReport.MaxFlakeAttempts > 0 { + g.suite.handleSpecEvent(types.SpecEvent{SpecEventType: types.SpecEventSpecRetry, Attempt: attempt}) + } + } + + failedInARunOnceBefore = g.attemptSpec(attempt == maxAttempts-1, spec) + + g.suite.currentSpecReport.EndTime = time.Now() + g.suite.currentSpecReport.RunTime = g.suite.currentSpecReport.EndTime.Sub(g.suite.currentSpecReport.StartTime) + g.suite.currentSpecReport.CapturedGinkgoWriterOutput += string(g.suite.writer.Bytes()) + g.suite.currentSpecReport.CapturedStdOutErr += g.suite.outputInterceptor.StopInterceptingAndReturnOutput() + + if g.suite.currentSpecReport.MaxMustPassRepeatedly > 0 { + if g.suite.currentSpecReport.State.Is(types.SpecStateFailureStates | types.SpecStateSkipped) { + break + } + } + if g.suite.currentSpecReport.MaxFlakeAttempts > 0 { + if g.suite.currentSpecReport.State.Is(types.SpecStatePassed | types.SpecStateSkipped | types.SpecStateAborted | types.SpecStateInterrupted) { + break + } else if attempt < maxAttempts-1 { + af := types.AdditionalFailure{State: g.suite.currentSpecReport.State, Failure: g.suite.currentSpecReport.Failure} + af.Failure.Message = fmt.Sprintf("Failure recorded during attempt %d:\n%s", attempt+1, af.Failure.Message) + g.suite.currentSpecReport.AdditionalFailures = append(g.suite.currentSpecReport.AdditionalFailures, af) + } + } + } + } + + g.suite.reportEach(spec, types.NodeTypeReportAfterEach) + g.suite.processCurrentSpecReport() + if g.suite.currentSpecReport.State.Is(types.SpecStateFailureStates) { + g.succeeded = false + g.failedInARunOnceBefore = g.failedInARunOnceBefore || failedInARunOnceBefore + } + g.suite.selectiveLock.Lock() + g.suite.currentSpecReport = types.SpecReport{} + g.suite.selectiveLock.Unlock() + } +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/internal/interrupt_handler/interrupt_handler.go b/tests/vendor/github.com/onsi/ginkgo/v2/internal/interrupt_handler/interrupt_handler.go new file mode 100644 index 000000000..79bfa87db --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/internal/interrupt_handler/interrupt_handler.go @@ -0,0 +1,177 @@ +package interrupt_handler + +import ( + "os" + "os/signal" + "sync" + "syscall" + "time" + + "github.com/onsi/ginkgo/v2/internal/parallel_support" +) + +var ABORT_POLLING_INTERVAL = 500 * time.Millisecond + +type InterruptCause uint + +const ( + InterruptCauseInvalid InterruptCause = iota + InterruptCauseSignal + InterruptCauseAbortByOtherProcess +) + +type InterruptLevel uint + +const ( + InterruptLevelUninterrupted InterruptLevel = iota + InterruptLevelCleanupAndReport + InterruptLevelReportOnly + InterruptLevelBailOut +) + +func (ic InterruptCause) String() string { + switch ic { + case InterruptCauseSignal: + return "Interrupted by User" + case InterruptCauseAbortByOtherProcess: + return "Interrupted by Other Ginkgo Process" + } + return "INVALID_INTERRUPT_CAUSE" +} + +type InterruptStatus struct { + Channel chan any + Level InterruptLevel + Cause InterruptCause +} + +func (s InterruptStatus) Interrupted() bool { + return s.Level != InterruptLevelUninterrupted +} + +func (s InterruptStatus) Message() string { + return s.Cause.String() +} + +func (s InterruptStatus) ShouldIncludeProgressReport() bool { + return s.Cause != InterruptCauseAbortByOtherProcess +} + +type InterruptHandlerInterface interface { + Status() InterruptStatus +} + +type InterruptHandler struct { + c chan any + lock *sync.Mutex + level InterruptLevel + cause InterruptCause + client parallel_support.Client + stop chan any + signals []os.Signal + requestAbortCheck chan any +} + +func NewInterruptHandler(client parallel_support.Client, signals ...os.Signal) *InterruptHandler { + if len(signals) == 0 { + signals = []os.Signal{os.Interrupt, syscall.SIGTERM} + } + handler := &InterruptHandler{ + c: make(chan any), + lock: &sync.Mutex{}, + stop: make(chan any), + requestAbortCheck: make(chan any), + client: client, + signals: signals, + } + handler.registerForInterrupts() + return handler +} + +func (handler *InterruptHandler) Stop() { + close(handler.stop) +} + +func (handler *InterruptHandler) registerForInterrupts() { + // os signal handling + signalChannel := make(chan os.Signal, 1) + signal.Notify(signalChannel, handler.signals...) + + // cross-process abort handling + var abortChannel chan any + if handler.client != nil { + abortChannel = make(chan any) + go func() { + pollTicker := time.NewTicker(ABORT_POLLING_INTERVAL) + for { + select { + case <-pollTicker.C: + if handler.client.ShouldAbort() { + close(abortChannel) + pollTicker.Stop() + return + } + case <-handler.requestAbortCheck: + if handler.client.ShouldAbort() { + close(abortChannel) + pollTicker.Stop() + return + } + case <-handler.stop: + pollTicker.Stop() + return + } + } + }() + } + + go func(abortChannel chan any) { + var interruptCause InterruptCause + for { + select { + case <-signalChannel: + interruptCause = InterruptCauseSignal + case <-abortChannel: + interruptCause = InterruptCauseAbortByOtherProcess + case <-handler.stop: + signal.Stop(signalChannel) + return + } + abortChannel = nil + + handler.lock.Lock() + oldLevel := handler.level + handler.cause = interruptCause + if handler.level == InterruptLevelUninterrupted { + handler.level = InterruptLevelCleanupAndReport + } else if handler.level == InterruptLevelCleanupAndReport { + handler.level = InterruptLevelReportOnly + } else if handler.level == InterruptLevelReportOnly { + handler.level = InterruptLevelBailOut + } + if handler.level != oldLevel { + close(handler.c) + handler.c = make(chan any) + } + handler.lock.Unlock() + } + }(abortChannel) +} + +func (handler *InterruptHandler) Status() InterruptStatus { + handler.lock.Lock() + status := InterruptStatus{ + Level: handler.level, + Channel: handler.c, + Cause: handler.cause, + } + handler.lock.Unlock() + + if handler.client != nil && handler.client.ShouldAbort() && !status.Interrupted() { + close(handler.requestAbortCheck) + <-status.Channel + return handler.Status() + } + + return status +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/internal/interrupt_handler/sigquit_swallower_unix.go b/tests/vendor/github.com/onsi/ginkgo/v2/internal/interrupt_handler/sigquit_swallower_unix.go new file mode 100644 index 000000000..bf0de496d --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/internal/interrupt_handler/sigquit_swallower_unix.go @@ -0,0 +1,15 @@ +//go:build freebsd || openbsd || netbsd || dragonfly || darwin || linux || solaris +// +build freebsd openbsd netbsd dragonfly darwin linux solaris + +package interrupt_handler + +import ( + "os" + "os/signal" + "syscall" +) + +func SwallowSigQuit() { + c := make(chan os.Signal, 1024) + signal.Notify(c, syscall.SIGQUIT) +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/internal/interrupt_handler/sigquit_swallower_windows.go b/tests/vendor/github.com/onsi/ginkgo/v2/internal/interrupt_handler/sigquit_swallower_windows.go new file mode 100644 index 000000000..fcf8da833 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/internal/interrupt_handler/sigquit_swallower_windows.go @@ -0,0 +1,8 @@ +//go:build windows +// +build windows + +package interrupt_handler + +func SwallowSigQuit() { + //noop +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/internal/node.go b/tests/vendor/github.com/onsi/ginkgo/v2/internal/node.go new file mode 100644 index 000000000..8096950b6 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/internal/node.go @@ -0,0 +1,938 @@ +package internal + +import ( + "context" + "fmt" + "reflect" + "sort" + "sync" + "time" + + "github.com/onsi/ginkgo/v2/types" +) + +var _global_node_id_counter = uint(0) +var _global_id_mutex = &sync.Mutex{} + +func UniqueNodeID() uint { + // There's a reace in the internal integration tests if we don't make + // accessing _global_node_id_counter safe across goroutines. + _global_id_mutex.Lock() + defer _global_id_mutex.Unlock() + _global_node_id_counter += 1 + return _global_node_id_counter +} + +type Node struct { + ID uint + NodeType types.NodeType + + Text string + Body func(SpecContext) + CodeLocation types.CodeLocation + NestingLevel int + HasContext bool + + SynchronizedBeforeSuiteProc1Body func(SpecContext) []byte + SynchronizedBeforeSuiteProc1BodyHasContext bool + SynchronizedBeforeSuiteAllProcsBody func(SpecContext, []byte) + SynchronizedBeforeSuiteAllProcsBodyHasContext bool + + SynchronizedAfterSuiteAllProcsBody func(SpecContext) + SynchronizedAfterSuiteAllProcsBodyHasContext bool + SynchronizedAfterSuiteProc1Body func(SpecContext) + SynchronizedAfterSuiteProc1BodyHasContext bool + + ReportEachBody func(SpecContext, types.SpecReport) + ReportSuiteBody func(SpecContext, types.Report) + + MarkedFocus bool + MarkedPending bool + MarkedSerial bool + MarkedOrdered bool + MarkedContinueOnFailure bool + MarkedOncePerOrdered bool + FlakeAttempts int + MustPassRepeatedly int + Labels Labels + PollProgressAfter time.Duration + PollProgressInterval time.Duration + NodeTimeout time.Duration + SpecTimeout time.Duration + GracePeriod time.Duration + + NodeIDWhereCleanupWasGenerated uint +} + +// Decoration Types +type focusType bool +type pendingType bool +type serialType bool +type orderedType bool +type continueOnFailureType bool +type honorsOrderedType bool +type suppressProgressReporting bool + +const Focus = focusType(true) +const Pending = pendingType(true) +const Serial = serialType(true) +const Ordered = orderedType(true) +const ContinueOnFailure = continueOnFailureType(true) +const OncePerOrdered = honorsOrderedType(true) +const SuppressProgressReporting = suppressProgressReporting(true) + +type FlakeAttempts uint +type MustPassRepeatedly uint +type Offset uint +type Done chan<- any // Deprecated Done Channel for asynchronous testing +type Labels []string +type PollProgressInterval time.Duration +type PollProgressAfter time.Duration +type NodeTimeout time.Duration +type SpecTimeout time.Duration +type GracePeriod time.Duration + +func (l Labels) MatchesLabelFilter(query string) bool { + return types.MustParseLabelFilter(query)(l) +} + +func UnionOfLabels(labels ...Labels) Labels { + out := Labels{} + seen := map[string]bool{} + for _, labelSet := range labels { + for _, label := range labelSet { + if !seen[label] { + seen[label] = true + out = append(out, label) + } + } + } + return out +} + +func PartitionDecorations(args ...any) ([]any, []any) { + decorations := []any{} + remainingArgs := []any{} + for _, arg := range args { + if isDecoration(arg) { + decorations = append(decorations, arg) + } else { + remainingArgs = append(remainingArgs, arg) + } + } + return decorations, remainingArgs +} + +func isDecoration(arg any) bool { + switch t := reflect.TypeOf(arg); { + case t == nil: + return false + case t == reflect.TypeOf(Offset(0)): + return true + case t == reflect.TypeOf(types.CodeLocation{}): + return true + case t == reflect.TypeOf(Focus): + return true + case t == reflect.TypeOf(Pending): + return true + case t == reflect.TypeOf(Serial): + return true + case t == reflect.TypeOf(Ordered): + return true + case t == reflect.TypeOf(ContinueOnFailure): + return true + case t == reflect.TypeOf(OncePerOrdered): + return true + case t == reflect.TypeOf(SuppressProgressReporting): + return true + case t == reflect.TypeOf(FlakeAttempts(0)): + return true + case t == reflect.TypeOf(MustPassRepeatedly(0)): + return true + case t == reflect.TypeOf(Labels{}): + return true + case t == reflect.TypeOf(PollProgressInterval(0)): + return true + case t == reflect.TypeOf(PollProgressAfter(0)): + return true + case t == reflect.TypeOf(NodeTimeout(0)): + return true + case t == reflect.TypeOf(SpecTimeout(0)): + return true + case t == reflect.TypeOf(GracePeriod(0)): + return true + case t.Kind() == reflect.Slice && isSliceOfDecorations(arg): + return true + default: + return false + } +} + +func isSliceOfDecorations(slice any) bool { + vSlice := reflect.ValueOf(slice) + if vSlice.Len() == 0 { + return false + } + for i := 0; i < vSlice.Len(); i++ { + if !isDecoration(vSlice.Index(i).Interface()) { + return false + } + } + return true +} + +var contextType = reflect.TypeOf(new(context.Context)).Elem() +var specContextType = reflect.TypeOf(new(SpecContext)).Elem() + +func NewNode(deprecationTracker *types.DeprecationTracker, nodeType types.NodeType, text string, args ...any) (Node, []error) { + baseOffset := 2 + node := Node{ + ID: UniqueNodeID(), + NodeType: nodeType, + Text: text, + Labels: Labels{}, + CodeLocation: types.NewCodeLocation(baseOffset), + NestingLevel: -1, + PollProgressAfter: -1, + PollProgressInterval: -1, + GracePeriod: -1, + } + + errors := []error{} + appendError := func(err error) { + if err != nil { + errors = append(errors, err) + } + } + + args = unrollInterfaceSlice(args) + + remainingArgs := []any{} + // First get the CodeLocation up-to-date + for _, arg := range args { + switch v := arg.(type) { + case Offset: + node.CodeLocation = types.NewCodeLocation(baseOffset + int(v)) + case types.CodeLocation: + node.CodeLocation = v + default: + remainingArgs = append(remainingArgs, arg) + } + } + + labelsSeen := map[string]bool{} + trackedFunctionError := false + args = remainingArgs + remainingArgs = []any{} + // now process the rest of the args + for _, arg := range args { + switch t := reflect.TypeOf(arg); { + case t == reflect.TypeOf(float64(0)): + break // ignore deprecated timeouts + case t == reflect.TypeOf(Focus): + node.MarkedFocus = bool(arg.(focusType)) + if !nodeType.Is(types.NodeTypesForContainerAndIt) { + appendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, "Focus")) + } + case t == reflect.TypeOf(Pending): + node.MarkedPending = bool(arg.(pendingType)) + if !nodeType.Is(types.NodeTypesForContainerAndIt) { + appendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, "Pending")) + } + case t == reflect.TypeOf(Serial): + node.MarkedSerial = bool(arg.(serialType)) + if !labelsSeen["Serial"] { + node.Labels = append(node.Labels, "Serial") + } + if !nodeType.Is(types.NodeTypesForContainerAndIt) { + appendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, "Serial")) + } + case t == reflect.TypeOf(Ordered): + node.MarkedOrdered = bool(arg.(orderedType)) + if !nodeType.Is(types.NodeTypeContainer) { + appendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, "Ordered")) + } + case t == reflect.TypeOf(ContinueOnFailure): + node.MarkedContinueOnFailure = bool(arg.(continueOnFailureType)) + if !nodeType.Is(types.NodeTypeContainer) { + appendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, "ContinueOnFailure")) + } + case t == reflect.TypeOf(OncePerOrdered): + node.MarkedOncePerOrdered = bool(arg.(honorsOrderedType)) + if !nodeType.Is(types.NodeTypeBeforeEach | types.NodeTypeJustBeforeEach | types.NodeTypeAfterEach | types.NodeTypeJustAfterEach) { + appendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, "OncePerOrdered")) + } + case t == reflect.TypeOf(SuppressProgressReporting): + deprecationTracker.TrackDeprecation(types.Deprecations.SuppressProgressReporting()) + case t == reflect.TypeOf(FlakeAttempts(0)): + node.FlakeAttempts = int(arg.(FlakeAttempts)) + if !nodeType.Is(types.NodeTypesForContainerAndIt) { + appendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, "FlakeAttempts")) + } + case t == reflect.TypeOf(MustPassRepeatedly(0)): + node.MustPassRepeatedly = int(arg.(MustPassRepeatedly)) + if !nodeType.Is(types.NodeTypesForContainerAndIt) { + appendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, "MustPassRepeatedly")) + } + case t == reflect.TypeOf(PollProgressAfter(0)): + node.PollProgressAfter = time.Duration(arg.(PollProgressAfter)) + if nodeType.Is(types.NodeTypeContainer) { + appendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, "PollProgressAfter")) + } + case t == reflect.TypeOf(PollProgressInterval(0)): + node.PollProgressInterval = time.Duration(arg.(PollProgressInterval)) + if nodeType.Is(types.NodeTypeContainer) { + appendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, "PollProgressInterval")) + } + case t == reflect.TypeOf(NodeTimeout(0)): + node.NodeTimeout = time.Duration(arg.(NodeTimeout)) + if nodeType.Is(types.NodeTypeContainer) { + appendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, "NodeTimeout")) + } + case t == reflect.TypeOf(SpecTimeout(0)): + node.SpecTimeout = time.Duration(arg.(SpecTimeout)) + if !nodeType.Is(types.NodeTypeIt) { + appendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, "SpecTimeout")) + } + case t == reflect.TypeOf(GracePeriod(0)): + node.GracePeriod = time.Duration(arg.(GracePeriod)) + if nodeType.Is(types.NodeTypeContainer) { + appendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, "GracePeriod")) + } + case t == reflect.TypeOf(Labels{}): + if !nodeType.Is(types.NodeTypesForContainerAndIt) { + appendError(types.GinkgoErrors.InvalidDecoratorForNodeType(node.CodeLocation, nodeType, "Label")) + } + for _, label := range arg.(Labels) { + if !labelsSeen[label] { + labelsSeen[label] = true + label, err := types.ValidateAndCleanupLabel(label, node.CodeLocation) + node.Labels = append(node.Labels, label) + appendError(err) + } + } + case t.Kind() == reflect.Func: + if nodeType.Is(types.NodeTypeContainer) { + if node.Body != nil { + appendError(types.GinkgoErrors.MultipleBodyFunctions(node.CodeLocation, nodeType)) + trackedFunctionError = true + break + } + if t.NumOut() > 0 || t.NumIn() > 0 { + appendError(types.GinkgoErrors.InvalidBodyTypeForContainer(t, node.CodeLocation, nodeType)) + trackedFunctionError = true + break + } + body := arg.(func()) + node.Body = func(SpecContext) { body() } + } else if nodeType.Is(types.NodeTypeReportBeforeEach | types.NodeTypeReportAfterEach) { + if node.ReportEachBody == nil { + if fn, ok := arg.(func(types.SpecReport)); ok { + node.ReportEachBody = func(_ SpecContext, r types.SpecReport) { fn(r) } + } else { + node.ReportEachBody = arg.(func(SpecContext, types.SpecReport)) + node.HasContext = true + } + } else { + appendError(types.GinkgoErrors.MultipleBodyFunctions(node.CodeLocation, nodeType)) + trackedFunctionError = true + break + } + } else if nodeType.Is(types.NodeTypeReportBeforeSuite | types.NodeTypeReportAfterSuite) { + if node.ReportSuiteBody == nil { + if fn, ok := arg.(func(types.Report)); ok { + node.ReportSuiteBody = func(_ SpecContext, r types.Report) { fn(r) } + } else { + node.ReportSuiteBody = arg.(func(SpecContext, types.Report)) + node.HasContext = true + } + } else { + appendError(types.GinkgoErrors.MultipleBodyFunctions(node.CodeLocation, nodeType)) + trackedFunctionError = true + break + } + } else if nodeType.Is(types.NodeTypeSynchronizedBeforeSuite) { + if node.SynchronizedBeforeSuiteProc1Body != nil && node.SynchronizedBeforeSuiteAllProcsBody != nil { + appendError(types.GinkgoErrors.MultipleBodyFunctions(node.CodeLocation, nodeType)) + trackedFunctionError = true + break + } + if node.SynchronizedBeforeSuiteProc1Body == nil { + body, hasContext := extractSynchronizedBeforeSuiteProc1Body(arg) + if body == nil { + appendError(types.GinkgoErrors.InvalidBodyTypeForSynchronizedBeforeSuiteProc1(t, node.CodeLocation)) + trackedFunctionError = true + } + node.SynchronizedBeforeSuiteProc1Body, node.SynchronizedBeforeSuiteProc1BodyHasContext = body, hasContext + } else if node.SynchronizedBeforeSuiteAllProcsBody == nil { + body, hasContext := extractSynchronizedBeforeSuiteAllProcsBody(arg) + if body == nil { + appendError(types.GinkgoErrors.InvalidBodyTypeForSynchronizedBeforeSuiteAllProcs(t, node.CodeLocation)) + trackedFunctionError = true + } + node.SynchronizedBeforeSuiteAllProcsBody, node.SynchronizedBeforeSuiteAllProcsBodyHasContext = body, hasContext + } + } else if nodeType.Is(types.NodeTypeSynchronizedAfterSuite) { + if node.SynchronizedAfterSuiteAllProcsBody != nil && node.SynchronizedAfterSuiteProc1Body != nil { + appendError(types.GinkgoErrors.MultipleBodyFunctions(node.CodeLocation, nodeType)) + trackedFunctionError = true + break + } + body, hasContext := extractBodyFunction(deprecationTracker, node.CodeLocation, arg) + if body == nil { + appendError(types.GinkgoErrors.InvalidBodyType(t, node.CodeLocation, nodeType)) + trackedFunctionError = true + break + } + if node.SynchronizedAfterSuiteAllProcsBody == nil { + node.SynchronizedAfterSuiteAllProcsBody, node.SynchronizedAfterSuiteAllProcsBodyHasContext = body, hasContext + } else if node.SynchronizedAfterSuiteProc1Body == nil { + node.SynchronizedAfterSuiteProc1Body, node.SynchronizedAfterSuiteProc1BodyHasContext = body, hasContext + } + } else { + if node.Body != nil { + appendError(types.GinkgoErrors.MultipleBodyFunctions(node.CodeLocation, nodeType)) + trackedFunctionError = true + break + } + node.Body, node.HasContext = extractBodyFunction(deprecationTracker, node.CodeLocation, arg) + if node.Body == nil { + appendError(types.GinkgoErrors.InvalidBodyType(t, node.CodeLocation, nodeType)) + trackedFunctionError = true + break + } + } + default: + remainingArgs = append(remainingArgs, arg) + } + } + + // validations + if node.MarkedPending && node.MarkedFocus { + appendError(types.GinkgoErrors.InvalidDeclarationOfFocusedAndPending(node.CodeLocation, nodeType)) + } + + if node.MarkedContinueOnFailure && !node.MarkedOrdered { + appendError(types.GinkgoErrors.InvalidContinueOnFailureDecoration(node.CodeLocation)) + } + + hasContext := node.HasContext || node.SynchronizedAfterSuiteProc1BodyHasContext || node.SynchronizedAfterSuiteAllProcsBodyHasContext || node.SynchronizedBeforeSuiteProc1BodyHasContext || node.SynchronizedBeforeSuiteAllProcsBodyHasContext + + if !hasContext && (node.NodeTimeout > 0 || node.SpecTimeout > 0 || node.GracePeriod > 0) && len(errors) == 0 { + appendError(types.GinkgoErrors.InvalidTimeoutOrGracePeriodForNonContextNode(node.CodeLocation, nodeType)) + } + + if !node.NodeType.Is(types.NodeTypeReportBeforeEach|types.NodeTypeReportAfterEach|types.NodeTypeSynchronizedBeforeSuite|types.NodeTypeSynchronizedAfterSuite|types.NodeTypeReportBeforeSuite|types.NodeTypeReportAfterSuite) && node.Body == nil && !node.MarkedPending && !trackedFunctionError { + appendError(types.GinkgoErrors.MissingBodyFunction(node.CodeLocation, nodeType)) + } + + if node.NodeType.Is(types.NodeTypeSynchronizedBeforeSuite) && !trackedFunctionError && (node.SynchronizedBeforeSuiteProc1Body == nil || node.SynchronizedBeforeSuiteAllProcsBody == nil) { + appendError(types.GinkgoErrors.MissingBodyFunction(node.CodeLocation, nodeType)) + } + + if node.NodeType.Is(types.NodeTypeSynchronizedAfterSuite) && !trackedFunctionError && (node.SynchronizedAfterSuiteProc1Body == nil || node.SynchronizedAfterSuiteAllProcsBody == nil) { + appendError(types.GinkgoErrors.MissingBodyFunction(node.CodeLocation, nodeType)) + } + + for _, arg := range remainingArgs { + appendError(types.GinkgoErrors.UnknownDecorator(node.CodeLocation, nodeType, arg)) + } + + if node.FlakeAttempts > 0 && node.MustPassRepeatedly > 0 { + appendError(types.GinkgoErrors.InvalidDeclarationOfFlakeAttemptsAndMustPassRepeatedly(node.CodeLocation, nodeType)) + } + + if len(errors) > 0 { + return Node{}, errors + } + + return node, errors +} + +var doneType = reflect.TypeOf(make(Done)) + +func extractBodyFunction(deprecationTracker *types.DeprecationTracker, cl types.CodeLocation, arg any) (func(SpecContext), bool) { + t := reflect.TypeOf(arg) + if t.NumOut() > 0 || t.NumIn() > 1 { + return nil, false + } + if t.NumIn() == 1 { + if t.In(0) == doneType { + deprecationTracker.TrackDeprecation(types.Deprecations.Async(), cl) + deprecatedAsyncBody := arg.(func(Done)) + return func(SpecContext) { deprecatedAsyncBody(make(Done)) }, false + } else if t.In(0).Implements(specContextType) { + return arg.(func(SpecContext)), true + } else if t.In(0).Implements(contextType) { + body := arg.(func(context.Context)) + return func(c SpecContext) { body(c) }, true + } + + return nil, false + } + + body := arg.(func()) + return func(SpecContext) { body() }, false +} + +var byteType = reflect.TypeOf([]byte{}) + +func extractSynchronizedBeforeSuiteProc1Body(arg any) (func(SpecContext) []byte, bool) { + t := reflect.TypeOf(arg) + v := reflect.ValueOf(arg) + + if t.NumOut() > 1 || t.NumIn() > 1 { + return nil, false + } else if t.NumOut() == 1 && t.Out(0) != byteType { + return nil, false + } else if t.NumIn() == 1 && !t.In(0).Implements(contextType) { + return nil, false + } + hasContext := t.NumIn() == 1 + + return func(c SpecContext) []byte { + var out []reflect.Value + if hasContext { + out = v.Call([]reflect.Value{reflect.ValueOf(c)}) + } else { + out = v.Call([]reflect.Value{}) + } + if len(out) == 1 { + return (out[0].Interface()).([]byte) + } else { + return []byte{} + } + }, hasContext +} + +func extractSynchronizedBeforeSuiteAllProcsBody(arg any) (func(SpecContext, []byte), bool) { + t := reflect.TypeOf(arg) + v := reflect.ValueOf(arg) + hasContext, hasByte := false, false + + if t.NumOut() > 0 || t.NumIn() > 2 { + return nil, false + } else if t.NumIn() == 2 && t.In(0).Implements(contextType) && t.In(1) == byteType { + hasContext, hasByte = true, true + } else if t.NumIn() == 1 && t.In(0).Implements(contextType) { + hasContext = true + } else if t.NumIn() == 1 && t.In(0) == byteType { + hasByte = true + } else if t.NumIn() != 0 { + return nil, false + } + + return func(c SpecContext, b []byte) { + in := []reflect.Value{} + if hasContext { + in = append(in, reflect.ValueOf(c)) + } + if hasByte { + in = append(in, reflect.ValueOf(b)) + } + v.Call(in) + }, hasContext +} + +var errInterface = reflect.TypeOf((*error)(nil)).Elem() + +func NewCleanupNode(deprecationTracker *types.DeprecationTracker, fail func(string, types.CodeLocation), args ...any) (Node, []error) { + decorations, remainingArgs := PartitionDecorations(args...) + baseOffset := 2 + cl := types.NewCodeLocation(baseOffset) + finalArgs := []any{} + for _, arg := range decorations { + switch t := reflect.TypeOf(arg); { + case t == reflect.TypeOf(Offset(0)): + cl = types.NewCodeLocation(baseOffset + int(arg.(Offset))) + case t == reflect.TypeOf(types.CodeLocation{}): + cl = arg.(types.CodeLocation) + default: + finalArgs = append(finalArgs, arg) + } + } + finalArgs = append(finalArgs, cl) + + if len(remainingArgs) == 0 { + return Node{}, []error{types.GinkgoErrors.DeferCleanupInvalidFunction(cl)} + } + + callback := reflect.ValueOf(remainingArgs[0]) + if !(callback.Kind() == reflect.Func) { + return Node{}, []error{types.GinkgoErrors.DeferCleanupInvalidFunction(cl)} + } + + callArgs := []reflect.Value{} + for _, arg := range remainingArgs[1:] { + callArgs = append(callArgs, reflect.ValueOf(arg)) + } + + hasContext := false + t := callback.Type() + if t.NumIn() > 0 { + if t.In(0).Implements(specContextType) { + hasContext = true + } else if t.In(0).Implements(contextType) && (len(callArgs) == 0 || !callArgs[0].Type().Implements(contextType)) { + hasContext = true + } + } + + handleFailure := func(out []reflect.Value) { + if len(out) == 0 { + return + } + last := out[len(out)-1] + if last.Type().Implements(errInterface) && !last.IsNil() { + fail(fmt.Sprintf("DeferCleanup callback returned error: %v", last), cl) + } + } + + if hasContext { + finalArgs = append(finalArgs, func(c SpecContext) { + out := callback.Call(append([]reflect.Value{reflect.ValueOf(c)}, callArgs...)) + handleFailure(out) + }) + } else { + finalArgs = append(finalArgs, func() { + out := callback.Call(callArgs) + handleFailure(out) + }) + } + + return NewNode(deprecationTracker, types.NodeTypeCleanupInvalid, "", finalArgs...) +} + +func (n Node) IsZero() bool { + return n.ID == 0 +} + +/* Nodes */ +type Nodes []Node + +func (n Nodes) Clone() Nodes { + nodes := make(Nodes, len(n)) + copy(nodes, n) + return nodes +} + +func (n Nodes) CopyAppend(nodes ...Node) Nodes { + numN := len(n) + out := make(Nodes, numN+len(nodes)) + copy(out, n) + for j, node := range nodes { + out[numN+j] = node + } + return out +} + +func (n Nodes) SplitAround(pivot Node) (Nodes, Nodes) { + pivotIdx := len(n) + for i := range n { + if n[i].ID == pivot.ID { + pivotIdx = i + break + } + } + left := n[:pivotIdx] + right := Nodes{} + if pivotIdx+1 < len(n) { + right = n[pivotIdx+1:] + } + + return left, right +} + +func (n Nodes) FirstNodeWithType(nodeTypes types.NodeType) Node { + for i := range n { + if n[i].NodeType.Is(nodeTypes) { + return n[i] + } + } + return Node{} +} + +func (n Nodes) WithType(nodeTypes types.NodeType) Nodes { + count := 0 + for i := range n { + if n[i].NodeType.Is(nodeTypes) { + count++ + } + } + + out, j := make(Nodes, count), 0 + for i := range n { + if n[i].NodeType.Is(nodeTypes) { + out[j] = n[i] + j++ + } + } + return out +} + +func (n Nodes) WithoutType(nodeTypes types.NodeType) Nodes { + count := 0 + for i := range n { + if !n[i].NodeType.Is(nodeTypes) { + count++ + } + } + + out, j := make(Nodes, count), 0 + for i := range n { + if !n[i].NodeType.Is(nodeTypes) { + out[j] = n[i] + j++ + } + } + return out +} + +func (n Nodes) WithoutNode(nodeToExclude Node) Nodes { + idxToExclude := len(n) + for i := range n { + if n[i].ID == nodeToExclude.ID { + idxToExclude = i + break + } + } + if idxToExclude == len(n) { + return n + } + out, j := make(Nodes, len(n)-1), 0 + for i := range n { + if i == idxToExclude { + continue + } + out[j] = n[i] + j++ + } + return out +} + +func (n Nodes) Filter(filter func(Node) bool) Nodes { + trufa, count := make([]bool, len(n)), 0 + for i := range n { + if filter(n[i]) { + trufa[i] = true + count += 1 + } + } + out, j := make(Nodes, count), 0 + for i := range n { + if trufa[i] { + out[j] = n[i] + j++ + } + } + return out +} + +func (n Nodes) FirstSatisfying(filter func(Node) bool) Node { + for i := range n { + if filter(n[i]) { + return n[i] + } + } + return Node{} +} + +func (n Nodes) WithinNestingLevel(deepestNestingLevel int) Nodes { + count := 0 + for i := range n { + if n[i].NestingLevel <= deepestNestingLevel { + count++ + } + } + out, j := make(Nodes, count), 0 + for i := range n { + if n[i].NestingLevel <= deepestNestingLevel { + out[j] = n[i] + j++ + } + } + return out +} + +func (n Nodes) SortedByDescendingNestingLevel() Nodes { + out := make(Nodes, len(n)) + copy(out, n) + sort.SliceStable(out, func(i int, j int) bool { + return out[i].NestingLevel > out[j].NestingLevel + }) + + return out +} + +func (n Nodes) SortedByAscendingNestingLevel() Nodes { + out := make(Nodes, len(n)) + copy(out, n) + sort.SliceStable(out, func(i int, j int) bool { + return out[i].NestingLevel < out[j].NestingLevel + }) + + return out +} + +func (n Nodes) FirstWithNestingLevel(level int) Node { + for i := range n { + if n[i].NestingLevel == level { + return n[i] + } + } + return Node{} +} + +func (n Nodes) Reverse() Nodes { + out := make(Nodes, len(n)) + for i := range n { + out[len(n)-1-i] = n[i] + } + return out +} + +func (n Nodes) Texts() []string { + out := make([]string, len(n)) + for i := range n { + out[i] = n[i].Text + } + return out +} + +func (n Nodes) Labels() [][]string { + out := make([][]string, len(n)) + for i := range n { + if n[i].Labels == nil { + out[i] = []string{} + } else { + out[i] = []string(n[i].Labels) + } + } + return out +} + +func (n Nodes) UnionOfLabels() []string { + out := []string{} + seen := map[string]bool{} + for i := range n { + for _, label := range n[i].Labels { + if !seen[label] { + seen[label] = true + out = append(out, label) + } + } + } + return out +} + +func (n Nodes) CodeLocations() []types.CodeLocation { + out := make([]types.CodeLocation, len(n)) + for i := range n { + out[i] = n[i].CodeLocation + } + return out +} + +func (n Nodes) BestTextFor(node Node) string { + if node.Text != "" { + return node.Text + } + parentNestingLevel := node.NestingLevel - 1 + for i := range n { + if n[i].Text != "" && n[i].NestingLevel == parentNestingLevel { + return n[i].Text + } + } + + return "" +} + +func (n Nodes) ContainsNodeID(id uint) bool { + for i := range n { + if n[i].ID == id { + return true + } + } + return false +} + +func (n Nodes) HasNodeMarkedPending() bool { + for i := range n { + if n[i].MarkedPending { + return true + } + } + return false +} + +func (n Nodes) HasNodeMarkedFocus() bool { + for i := range n { + if n[i].MarkedFocus { + return true + } + } + return false +} + +func (n Nodes) HasNodeMarkedSerial() bool { + for i := range n { + if n[i].MarkedSerial { + return true + } + } + return false +} + +func (n Nodes) FirstNodeMarkedOrdered() Node { + for i := range n { + if n[i].MarkedOrdered { + return n[i] + } + } + return Node{} +} + +func (n Nodes) IndexOfFirstNodeMarkedOrdered() int { + for i := range n { + if n[i].MarkedOrdered { + return i + } + } + return -1 +} + +func (n Nodes) GetMaxFlakeAttempts() int { + maxFlakeAttempts := 0 + for i := range n { + if n[i].FlakeAttempts > 0 { + maxFlakeAttempts = n[i].FlakeAttempts + } + } + return maxFlakeAttempts +} + +func (n Nodes) GetMaxMustPassRepeatedly() int { + maxMustPassRepeatedly := 0 + for i := range n { + if n[i].MustPassRepeatedly > 0 { + maxMustPassRepeatedly = n[i].MustPassRepeatedly + } + } + return maxMustPassRepeatedly +} + +func unrollInterfaceSlice(args any) []any { + v := reflect.ValueOf(args) + if v.Kind() != reflect.Slice { + return []any{args} + } + out := []any{} + for i := 0; i < v.Len(); i++ { + el := reflect.ValueOf(v.Index(i).Interface()) + if el.Kind() == reflect.Slice && el.Type() != reflect.TypeOf(Labels{}) { + out = append(out, unrollInterfaceSlice(el.Interface())...) + } else { + out = append(out, v.Index(i).Interface()) + } + } + return out +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/internal/ordering.go b/tests/vendor/github.com/onsi/ginkgo/v2/internal/ordering.go new file mode 100644 index 000000000..84eea0a59 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/internal/ordering.go @@ -0,0 +1,171 @@ +package internal + +import ( + "math/rand" + "sort" + + "github.com/onsi/ginkgo/v2/types" +) + +type SortableSpecs struct { + Specs Specs + Indexes []int +} + +func NewSortableSpecs(specs Specs) *SortableSpecs { + indexes := make([]int, len(specs)) + for i := range specs { + indexes[i] = i + } + return &SortableSpecs{ + Specs: specs, + Indexes: indexes, + } +} +func (s *SortableSpecs) Len() int { return len(s.Indexes) } +func (s *SortableSpecs) Swap(i, j int) { s.Indexes[i], s.Indexes[j] = s.Indexes[j], s.Indexes[i] } +func (s *SortableSpecs) Less(i, j int) bool { + a, b := s.Specs[s.Indexes[i]], s.Specs[s.Indexes[j]] + + aNodes, bNodes := a.Nodes.WithType(types.NodeTypesForContainerAndIt), b.Nodes.WithType(types.NodeTypesForContainerAndIt) + + firstOrderedAIdx, firstOrderedBIdx := aNodes.IndexOfFirstNodeMarkedOrdered(), bNodes.IndexOfFirstNodeMarkedOrdered() + if firstOrderedAIdx > -1 && firstOrderedBIdx > -1 && aNodes[firstOrderedAIdx].ID == bNodes[firstOrderedBIdx].ID { + // strictly preserve order within an ordered containers. ID will track this as IDs are generated monotonically + return aNodes.FirstNodeWithType(types.NodeTypeIt).ID < bNodes.FirstNodeWithType(types.NodeTypeIt).ID + } + + // if either spec is in an ordered container - only use the nodes up to the outermost ordered container + if firstOrderedAIdx > -1 { + aNodes = aNodes[:firstOrderedAIdx+1] + } + if firstOrderedBIdx > -1 { + bNodes = bNodes[:firstOrderedBIdx+1] + } + + for i := 0; i < len(aNodes) && i < len(bNodes); i++ { + aCL, bCL := aNodes[i].CodeLocation, bNodes[i].CodeLocation + if aCL.FileName != bCL.FileName { + return aCL.FileName < bCL.FileName + } + if aCL.LineNumber != bCL.LineNumber { + return aCL.LineNumber < bCL.LineNumber + } + } + // either everything is equal or we have different lengths of CLs + if len(aNodes) != len(bNodes) { + return len(aNodes) < len(bNodes) + } + // ok, now we are sure everything was equal. so we use the spec text to break ties + for i := 0; i < len(aNodes); i++ { + if aNodes[i].Text != bNodes[i].Text { + return aNodes[i].Text < bNodes[i].Text + } + } + // ok, all those texts were equal. we'll use the ID of the most deeply nested node as a last resort + return aNodes[len(aNodes)-1].ID < bNodes[len(bNodes)-1].ID +} + +type GroupedSpecIndices []SpecIndices +type SpecIndices []int + +func OrderSpecs(specs Specs, suiteConfig types.SuiteConfig) (GroupedSpecIndices, GroupedSpecIndices) { + /* + Ginkgo has sophisticated support for randomizing specs. Specs are guaranteed to have the same + order for a given seed across test runs. + + By default only top-level containers and specs are shuffled - this makes for a more intuitive debugging + experience - specs within a given container run in the order they appear in the file. + + Developers can set -randomizeAllSpecs to shuffle _all_ specs. + + In addition, spec containers can be marked as Ordered. Specs within an Ordered container are never shuffled. + + Finally, specs and spec containers can be marked as Serial. When running in parallel, serial specs run on Process #1 _after_ all other processes have finished. + */ + + // Seed a new random source based on thee configured random seed. + r := rand.New(rand.NewSource(suiteConfig.RandomSeed)) + + // first, we sort the entire suite to ensure a deterministic order. the sort is performed by filename, then line number, and then spec text. this ensures every parallel process has the exact same spec order and is only necessary to cover the edge case where the user iterates over a map to generate specs. + sortableSpecs := NewSortableSpecs(specs) + sort.Sort(sortableSpecs) + + // then we break things into execution groups + // a group represents a single unit of execution and is a collection of SpecIndices + // usually a group is just a single spec, however ordered containers must be preserved as a single group + executionGroupIDs := []uint{} + executionGroups := map[uint]SpecIndices{} + for _, idx := range sortableSpecs.Indexes { + spec := specs[idx] + groupNode := spec.Nodes.FirstNodeMarkedOrdered() + if groupNode.IsZero() { + groupNode = spec.Nodes.FirstNodeWithType(types.NodeTypeIt) + } + executionGroups[groupNode.ID] = append(executionGroups[groupNode.ID], idx) + if len(executionGroups[groupNode.ID]) == 1 { + executionGroupIDs = append(executionGroupIDs, groupNode.ID) + } + } + + // now, we only shuffle all the execution groups if we're randomizing all specs, otherwise + // we shuffle outermost containers. so we need to form shufflable groupings of GroupIDs + shufflableGroupingIDs := []uint{} + shufflableGroupingIDToGroupIDs := map[uint][]uint{} + + // for each execution group we're going to have to pick a node to represent how the + // execution group is grouped for shuffling: + nodeTypesToShuffle := types.NodeTypesForContainerAndIt + if suiteConfig.RandomizeAllSpecs { + nodeTypesToShuffle = types.NodeTypeIt + } + + //so, for each execution group: + for _, groupID := range executionGroupIDs { + // pick out a representative spec + representativeSpec := specs[executionGroups[groupID][0]] + + // and grab the node on the spec that will represent which shufflable group this execution group belongs tu + shufflableGroupingNode := representativeSpec.Nodes.FirstNodeWithType(nodeTypesToShuffle) + + //add the execution group to its shufflable group + shufflableGroupingIDToGroupIDs[shufflableGroupingNode.ID] = append(shufflableGroupingIDToGroupIDs[shufflableGroupingNode.ID], groupID) + + //and if it's the first one in + if len(shufflableGroupingIDToGroupIDs[shufflableGroupingNode.ID]) == 1 { + // record the shuffleable group ID + shufflableGroupingIDs = append(shufflableGroupingIDs, shufflableGroupingNode.ID) + } + } + + // now we permute the sorted shufflable grouping IDs and build the ordered Groups + orderedGroups := GroupedSpecIndices{} + permutation := r.Perm(len(shufflableGroupingIDs)) + for _, j := range permutation { + //let's get the execution group IDs for this shufflable group: + executionGroupIDsForJ := shufflableGroupingIDToGroupIDs[shufflableGroupingIDs[j]] + // and we'll add their associated specindices to the orderedGroups slice: + for _, executionGroupID := range executionGroupIDsForJ { + orderedGroups = append(orderedGroups, executionGroups[executionGroupID]) + } + } + + // If we're running in series, we're done. + if suiteConfig.ParallelTotal == 1 { + return orderedGroups, GroupedSpecIndices{} + } + + // We're running in parallel so we need to partition the ordered groups into a parallelizable set and a serialized set. + // The parallelizable groups will run across all Ginkgo processes... + // ...the serial groups will only run on Process #1 after all other processes have exited. + parallelizableGroups, serialGroups := GroupedSpecIndices{}, GroupedSpecIndices{} + for _, specIndices := range orderedGroups { + if specs[specIndices[0]].Nodes.HasNodeMarkedSerial() { + serialGroups = append(serialGroups, specIndices) + } else { + parallelizableGroups = append(parallelizableGroups, specIndices) + } + } + + return parallelizableGroups, serialGroups +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/internal/output_interceptor.go b/tests/vendor/github.com/onsi/ginkgo/v2/internal/output_interceptor.go new file mode 100644 index 000000000..5598f15cb --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/internal/output_interceptor.go @@ -0,0 +1,250 @@ +package internal + +import ( + "bytes" + "io" + "os" + "time" +) + +const BAILOUT_TIME = 1 * time.Second +const BAILOUT_MESSAGE = `Ginkgo detected an issue while intercepting output. + +When running in parallel, Ginkgo captures stdout and stderr output +and attaches it to the running spec. It looks like that process is getting +stuck for this suite. + +This usually happens if you, or a library you are using, spin up an external +process and set cmd.Stdout = os.Stdout and/or cmd.Stderr = os.Stderr. This +causes the external process to keep Ginkgo's output interceptor pipe open and +causes output interception to hang. + +Ginkgo has detected this and shortcircuited the capture process. The specs +will continue running after this message however output from the external +process that caused this issue will not be captured. + +You have several options to fix this. In preferred order they are: + +1. Pass GinkgoWriter instead of os.Stdout or os.Stderr to your process. +2. Ensure your process exits before the current spec completes. If your +process is long-lived and must cross spec boundaries, this option won't +work for you. +3. Pause Ginkgo's output interceptor before starting your process and then +resume it after. Use PauseOutputInterception() and ResumeOutputInterception() +to do this. +4. Set --output-interceptor-mode=none when running your Ginkgo suite. This will +turn off all output interception but allow specs to run in parallel without this +issue. You may miss important output if you do this including output from Go's +race detector. + +More details on issue #851 - https://github.com/onsi/ginkgo/issues/851 +` + +/* +The OutputInterceptor is used by to +intercept and capture all stdin and stderr output during a test run. +*/ +type OutputInterceptor interface { + StartInterceptingOutput() + StartInterceptingOutputAndForwardTo(io.Writer) + StopInterceptingAndReturnOutput() string + + PauseIntercepting() + ResumeIntercepting() + + Shutdown() +} + +type NoopOutputInterceptor struct{} + +func (interceptor NoopOutputInterceptor) StartInterceptingOutput() {} +func (interceptor NoopOutputInterceptor) StartInterceptingOutputAndForwardTo(io.Writer) {} +func (interceptor NoopOutputInterceptor) StopInterceptingAndReturnOutput() string { return "" } +func (interceptor NoopOutputInterceptor) PauseIntercepting() {} +func (interceptor NoopOutputInterceptor) ResumeIntercepting() {} +func (interceptor NoopOutputInterceptor) Shutdown() {} + +type pipePair struct { + reader *os.File + writer *os.File +} + +func startPipeFactory(pipeChannel chan pipePair, shutdown chan any) { + for { + //make the next pipe... + pair := pipePair{} + pair.reader, pair.writer, _ = os.Pipe() + select { + //...and provide it to the next consumer (they are responsible for closing the files) + case pipeChannel <- pair: + continue + //...or close the files if we were told to shutdown + case <-shutdown: + pair.reader.Close() + pair.writer.Close() + return + } + } +} + +type interceptorImplementation interface { + CreateStdoutStderrClones() (*os.File, *os.File) + ConnectPipeToStdoutStderr(*os.File) + RestoreStdoutStderrFromClones(*os.File, *os.File) + ShutdownClones(*os.File, *os.File) +} + +type genericOutputInterceptor struct { + intercepting bool + + stdoutClone *os.File + stderrClone *os.File + pipe pipePair + + shutdown chan any + emergencyBailout chan any + pipeChannel chan pipePair + interceptedContent chan string + + forwardTo io.Writer + accumulatedOutput string + + implementation interceptorImplementation +} + +func (interceptor *genericOutputInterceptor) StartInterceptingOutput() { + interceptor.StartInterceptingOutputAndForwardTo(io.Discard) +} + +func (interceptor *genericOutputInterceptor) StartInterceptingOutputAndForwardTo(w io.Writer) { + if interceptor.intercepting { + return + } + interceptor.accumulatedOutput = "" + interceptor.forwardTo = w + interceptor.ResumeIntercepting() +} + +func (interceptor *genericOutputInterceptor) StopInterceptingAndReturnOutput() string { + if interceptor.intercepting { + interceptor.PauseIntercepting() + } + return interceptor.accumulatedOutput +} + +func (interceptor *genericOutputInterceptor) ResumeIntercepting() { + if interceptor.intercepting { + return + } + interceptor.intercepting = true + if interceptor.stdoutClone == nil { + interceptor.stdoutClone, interceptor.stderrClone = interceptor.implementation.CreateStdoutStderrClones() + interceptor.shutdown = make(chan any) + go startPipeFactory(interceptor.pipeChannel, interceptor.shutdown) + } + + // Now we make a pipe, we'll use this to redirect the input to the 1 and 2 file descriptors (this is how everything else in the world is string to log to stdout and stderr) + // we get the pipe from our pipe factory. it runs in the background so we can request the next pipe while the spec being intercepted is running + interceptor.pipe = <-interceptor.pipeChannel + + interceptor.emergencyBailout = make(chan any) + + //Spin up a goroutine to copy data from the pipe into a buffer, this is how we capture any output the user is emitting + go func() { + buffer := &bytes.Buffer{} + destination := io.MultiWriter(buffer, interceptor.forwardTo) + copyFinished := make(chan any) + reader := interceptor.pipe.reader + go func() { + io.Copy(destination, reader) + reader.Close() // close the read end of the pipe so we don't leak a file descriptor + close(copyFinished) + }() + select { + case <-copyFinished: + interceptor.interceptedContent <- buffer.String() + case <-interceptor.emergencyBailout: + interceptor.interceptedContent <- "" + } + }() + + interceptor.implementation.ConnectPipeToStdoutStderr(interceptor.pipe.writer) +} + +func (interceptor *genericOutputInterceptor) PauseIntercepting() { + if !interceptor.intercepting { + return + } + // first we have to close the write end of the pipe. To do this we have to close all file descriptors pointing + // to the write end. So that would be the pipewriter itself, and FD #1 and FD #2 if we've Dup2'd them + interceptor.pipe.writer.Close() // the pipewriter itself + + // we also need to stop intercepting. we do that by reconnecting the stdout and stderr file descriptions back to their respective #1 and #2 file descriptors; + // this also closes #1 and #2 before it points that their original stdout and stderr file descriptions + interceptor.implementation.RestoreStdoutStderrFromClones(interceptor.stdoutClone, interceptor.stderrClone) + + var content string + select { + case content = <-interceptor.interceptedContent: + case <-time.After(BAILOUT_TIME): + /* + By closing all the pipe writer's file descriptors associated with the pipe writer's file description the io.Copy reading from the reader + should eventually receive an EOF and exit. + + **However**, if the user has spun up an external process and passed in os.Stdout/os.Stderr to cmd.Stdout/cmd.Stderr then the external process + will have a file descriptor pointing to the pipe writer's file description and it will not close until the external process exits. + + That would leave us hanging here waiting for the io.Copy to close forever. Instead we invoke this emergency escape valve. This returns whatever + content we've got but leaves the io.Copy running. This ensures the external process can continue writing without hanging at the cost of leaking a goroutine + and file descriptor (those these will be cleaned up when the process exits). + + We tack on a message to notify the user that they've hit this edgecase and encourage them to address it. + */ + close(interceptor.emergencyBailout) + content = <-interceptor.interceptedContent + BAILOUT_MESSAGE + } + + interceptor.accumulatedOutput += content + interceptor.intercepting = false +} + +func (interceptor *genericOutputInterceptor) Shutdown() { + interceptor.PauseIntercepting() + + if interceptor.stdoutClone != nil { + close(interceptor.shutdown) + interceptor.implementation.ShutdownClones(interceptor.stdoutClone, interceptor.stderrClone) + interceptor.stdoutClone = nil + interceptor.stderrClone = nil + } +} + +/* This is used on windows builds but included here so it can be explicitly tested on unix systems too */ +func NewOSGlobalReassigningOutputInterceptor() OutputInterceptor { + return &genericOutputInterceptor{ + interceptedContent: make(chan string), + pipeChannel: make(chan pipePair), + shutdown: make(chan any), + implementation: &osGlobalReassigningOutputInterceptorImpl{}, + } +} + +type osGlobalReassigningOutputInterceptorImpl struct{} + +func (impl *osGlobalReassigningOutputInterceptorImpl) CreateStdoutStderrClones() (*os.File, *os.File) { + return os.Stdout, os.Stderr +} + +func (impl *osGlobalReassigningOutputInterceptorImpl) ConnectPipeToStdoutStderr(pipeWriter *os.File) { + os.Stdout = pipeWriter + os.Stderr = pipeWriter +} + +func (impl *osGlobalReassigningOutputInterceptorImpl) RestoreStdoutStderrFromClones(stdoutClone *os.File, stderrClone *os.File) { + os.Stdout = stdoutClone + os.Stderr = stderrClone +} + +func (impl *osGlobalReassigningOutputInterceptorImpl) ShutdownClones(_ *os.File, _ *os.File) { + //noop +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/internal/output_interceptor_unix.go b/tests/vendor/github.com/onsi/ginkgo/v2/internal/output_interceptor_unix.go new file mode 100644 index 000000000..e0f1431d5 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/internal/output_interceptor_unix.go @@ -0,0 +1,73 @@ +//go:build freebsd || openbsd || netbsd || dragonfly || darwin || linux || solaris +// +build freebsd openbsd netbsd dragonfly darwin linux solaris + +package internal + +import ( + "os" + + "golang.org/x/sys/unix" +) + +func NewOutputInterceptor() OutputInterceptor { + return &genericOutputInterceptor{ + interceptedContent: make(chan string), + pipeChannel: make(chan pipePair), + shutdown: make(chan any), + implementation: &dupSyscallOutputInterceptorImpl{}, + } +} + +type dupSyscallOutputInterceptorImpl struct{} + +func (impl *dupSyscallOutputInterceptorImpl) CreateStdoutStderrClones() (*os.File, *os.File) { + // To clone stdout and stderr we: + // First, create two clone file descriptors that point to the stdout and stderr file descriptions + stdoutCloneFD, _ := unix.Dup(1) + stderrCloneFD, _ := unix.Dup(2) + + // Important, set the fds to FD_CLOEXEC to prevent them leaking into childs + // https://github.com/onsi/ginkgo/issues/1191 + flags, err := unix.FcntlInt(uintptr(stdoutCloneFD), unix.F_GETFD, 0) + if err == nil { + unix.FcntlInt(uintptr(stdoutCloneFD), unix.F_SETFD, flags|unix.FD_CLOEXEC) + } + flags, err = unix.FcntlInt(uintptr(stderrCloneFD), unix.F_GETFD, 0) + if err == nil { + unix.FcntlInt(uintptr(stderrCloneFD), unix.F_SETFD, flags|unix.FD_CLOEXEC) + } + + // And then wrap the clone file descriptors in files. + // One benefit of this (that we don't use yet) is that we can actually write + // to these files to emit output to the console even though we're intercepting output + stdoutClone := os.NewFile(uintptr(stdoutCloneFD), "stdout-clone") + stderrClone := os.NewFile(uintptr(stderrCloneFD), "stderr-clone") + + //these clones remain alive throughout the lifecycle of the suite and don't need to be recreated + //this speeds things up a bit, actually. + return stdoutClone, stderrClone +} + +func (impl *dupSyscallOutputInterceptorImpl) ConnectPipeToStdoutStderr(pipeWriter *os.File) { + // To redirect output to our pipe we need to point the 1 and 2 file descriptors (which is how the world tries to log things) + // to the write end of the pipe. + // We do this with Dup2 (possibly Dup3 on some architectures) to have file descriptors 1 and 2 point to the same file description as the pipeWriter + // This effectively shunts data written to stdout and stderr to the write end of our pipe + unix.Dup2(int(pipeWriter.Fd()), 1) + unix.Dup2(int(pipeWriter.Fd()), 2) +} + +func (impl *dupSyscallOutputInterceptorImpl) RestoreStdoutStderrFromClones(stdoutClone *os.File, stderrClone *os.File) { + // To restore stdour/stderr from the clones we have the 1 and 2 file descriptors + // point to the original file descriptions that we saved off in the clones. + // This has the added benefit of closing the connection between these descriptors and the write end of the pipe + // which is important to cause the io.Copy on the pipe.Reader to end. + unix.Dup2(int(stdoutClone.Fd()), 1) + unix.Dup2(int(stderrClone.Fd()), 2) +} + +func (impl *dupSyscallOutputInterceptorImpl) ShutdownClones(stdoutClone *os.File, stderrClone *os.File) { + // We're done with the clones so we can close them to clean up after ourselves + stdoutClone.Close() + stderrClone.Close() +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/internal/output_interceptor_wasm.go b/tests/vendor/github.com/onsi/ginkgo/v2/internal/output_interceptor_wasm.go new file mode 100644 index 000000000..4c374935b --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/internal/output_interceptor_wasm.go @@ -0,0 +1,7 @@ +//go:build wasm + +package internal + +func NewOutputInterceptor() OutputInterceptor { + return &NoopOutputInterceptor{} +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/internal/output_interceptor_win.go b/tests/vendor/github.com/onsi/ginkgo/v2/internal/output_interceptor_win.go new file mode 100644 index 000000000..30c2851a8 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/internal/output_interceptor_win.go @@ -0,0 +1,7 @@ +// +build windows + +package internal + +func NewOutputInterceptor() OutputInterceptor { + return NewOSGlobalReassigningOutputInterceptor() +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/client_server.go b/tests/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/client_server.go new file mode 100644 index 000000000..4234d802c --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/client_server.go @@ -0,0 +1,72 @@ +package parallel_support + +import ( + "fmt" + "io" + "os" + "time" + + "github.com/onsi/ginkgo/v2/reporters" + "github.com/onsi/ginkgo/v2/types" +) + +type BeforeSuiteState struct { + Data []byte + State types.SpecState +} + +type ParallelIndexCounter struct { + Index int +} + +var ErrorGone = fmt.Errorf("gone") +var ErrorFailed = fmt.Errorf("failed") +var ErrorEarly = fmt.Errorf("early") + +var POLLING_INTERVAL = 50 * time.Millisecond + +type Server interface { + Start() + Close() + Address() string + RegisterAlive(node int, alive func() bool) + GetSuiteDone() chan any + GetOutputDestination() io.Writer + SetOutputDestination(io.Writer) +} + +type Client interface { + Connect() bool + Close() error + + PostSuiteWillBegin(report types.Report) error + PostDidRun(report types.SpecReport) error + PostSuiteDidEnd(report types.Report) error + PostReportBeforeSuiteCompleted(state types.SpecState) error + BlockUntilReportBeforeSuiteCompleted() (types.SpecState, error) + PostSynchronizedBeforeSuiteCompleted(state types.SpecState, data []byte) error + BlockUntilSynchronizedBeforeSuiteData() (types.SpecState, []byte, error) + BlockUntilNonprimaryProcsHaveFinished() error + BlockUntilAggregatedNonprimaryProcsReport() (types.Report, error) + FetchNextCounter() (int, error) + PostAbort() error + ShouldAbort() bool + PostEmitProgressReport(report types.ProgressReport) error + Write(p []byte) (int, error) +} + +func NewServer(parallelTotal int, reporter reporters.Reporter) (Server, error) { + if os.Getenv("GINKGO_PARALLEL_PROTOCOL") == "HTTP" { + return newHttpServer(parallelTotal, reporter) + } else { + return newRPCServer(parallelTotal, reporter) + } +} + +func NewClient(serverHost string) Client { + if os.Getenv("GINKGO_PARALLEL_PROTOCOL") == "HTTP" { + return newHttpClient(serverHost) + } else { + return newRPCClient(serverHost) + } +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/http_client.go b/tests/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/http_client.go new file mode 100644 index 000000000..4aa10ae4f --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/http_client.go @@ -0,0 +1,166 @@ +package parallel_support + +import ( + "bytes" + "encoding/json" + "fmt" + "io" + "net/http" + "time" + + "github.com/onsi/ginkgo/v2/types" +) + +type httpClient struct { + serverHost string +} + +func newHttpClient(serverHost string) *httpClient { + return &httpClient{ + serverHost: serverHost, + } +} + +func (client *httpClient) Connect() bool { + resp, err := http.Get(client.serverHost + "/up") + if err != nil { + return false + } + resp.Body.Close() + return resp.StatusCode == http.StatusOK +} + +func (client *httpClient) Close() error { + return nil +} + +func (client *httpClient) post(path string, data any) error { + var body io.Reader + if data != nil { + encoded, err := json.Marshal(data) + if err != nil { + return err + } + body = bytes.NewBuffer(encoded) + } + resp, err := http.Post(client.serverHost+path, "application/json", body) + if err != nil { + return err + } + defer resp.Body.Close() + if resp.StatusCode != http.StatusOK { + return fmt.Errorf("received unexpected status code %d", resp.StatusCode) + } + return nil +} + +func (client *httpClient) poll(path string, data any) error { + for { + resp, err := http.Get(client.serverHost + path) + if err != nil { + return err + } + if resp.StatusCode == http.StatusTooEarly { + resp.Body.Close() + time.Sleep(POLLING_INTERVAL) + continue + } + defer resp.Body.Close() + if resp.StatusCode == http.StatusGone { + return ErrorGone + } + if resp.StatusCode == http.StatusFailedDependency { + return ErrorFailed + } + if resp.StatusCode != http.StatusOK { + return fmt.Errorf("received unexpected status code %d", resp.StatusCode) + } + if data != nil { + return json.NewDecoder(resp.Body).Decode(data) + } + return nil + } +} + +func (client *httpClient) PostSuiteWillBegin(report types.Report) error { + return client.post("/suite-will-begin", report) +} + +func (client *httpClient) PostDidRun(report types.SpecReport) error { + return client.post("/did-run", report) +} + +func (client *httpClient) PostSuiteDidEnd(report types.Report) error { + return client.post("/suite-did-end", report) +} + +func (client *httpClient) PostEmitProgressReport(report types.ProgressReport) error { + return client.post("/progress-report", report) +} + +func (client *httpClient) PostReportBeforeSuiteCompleted(state types.SpecState) error { + return client.post("/report-before-suite-completed", state) +} + +func (client *httpClient) BlockUntilReportBeforeSuiteCompleted() (types.SpecState, error) { + var state types.SpecState + err := client.poll("/report-before-suite-state", &state) + if err == ErrorGone { + return types.SpecStateFailed, nil + } + return state, err +} + +func (client *httpClient) PostSynchronizedBeforeSuiteCompleted(state types.SpecState, data []byte) error { + beforeSuiteState := BeforeSuiteState{ + State: state, + Data: data, + } + return client.post("/before-suite-completed", beforeSuiteState) +} + +func (client *httpClient) BlockUntilSynchronizedBeforeSuiteData() (types.SpecState, []byte, error) { + var beforeSuiteState BeforeSuiteState + err := client.poll("/before-suite-state", &beforeSuiteState) + if err == ErrorGone { + return types.SpecStateInvalid, nil, types.GinkgoErrors.SynchronizedBeforeSuiteDisappearedOnProc1() + } + return beforeSuiteState.State, beforeSuiteState.Data, err +} + +func (client *httpClient) BlockUntilNonprimaryProcsHaveFinished() error { + return client.poll("/have-nonprimary-procs-finished", nil) +} + +func (client *httpClient) BlockUntilAggregatedNonprimaryProcsReport() (types.Report, error) { + var report types.Report + err := client.poll("/aggregated-nonprimary-procs-report", &report) + if err == ErrorGone { + return types.Report{}, types.GinkgoErrors.AggregatedReportUnavailableDueToNodeDisappearing() + } + return report, err +} + +func (client *httpClient) FetchNextCounter() (int, error) { + var counter ParallelIndexCounter + err := client.poll("/counter", &counter) + return counter.Index, err +} + +func (client *httpClient) PostAbort() error { + return client.post("/abort", nil) +} + +func (client *httpClient) ShouldAbort() bool { + err := client.poll("/abort", nil) + return err == ErrorGone +} + +func (client *httpClient) Write(p []byte) (int, error) { + resp, err := http.Post(client.serverHost+"/emit-output", "text/plain;charset=UTF-8 ", bytes.NewReader(p)) + resp.Body.Close() + if resp.StatusCode != http.StatusOK { + return 0, fmt.Errorf("failed to emit output") + } + return len(p), err +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/http_server.go b/tests/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/http_server.go new file mode 100644 index 000000000..8a1b7a5bb --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/http_server.go @@ -0,0 +1,242 @@ +/* + +The remote package provides the pieces to allow Ginkgo test suites to report to remote listeners. +This is used, primarily, to enable streaming parallel test output but has, in principal, broader applications (e.g. streaming test output to a browser). + +*/ + +package parallel_support + +import ( + "encoding/json" + "io" + "net" + "net/http" + + "github.com/onsi/ginkgo/v2/reporters" + "github.com/onsi/ginkgo/v2/types" +) + +/* +httpServer spins up on an automatically selected port and listens for communication from the forwarding reporter. +It then forwards that communication to attached reporters. +*/ +type httpServer struct { + listener net.Listener + handler *ServerHandler +} + +// Create a new server, automatically selecting a port +func newHttpServer(parallelTotal int, reporter reporters.Reporter) (*httpServer, error) { + listener, err := net.Listen("tcp", "127.0.0.1:0") + if err != nil { + return nil, err + } + return &httpServer{ + listener: listener, + handler: newServerHandler(parallelTotal, reporter), + }, nil +} + +// Start the server. You don't need to `go s.Start()`, just `s.Start()` +func (server *httpServer) Start() { + httpServer := &http.Server{} + mux := http.NewServeMux() + httpServer.Handler = mux + + //streaming endpoints + mux.HandleFunc("/suite-will-begin", server.specSuiteWillBegin) + mux.HandleFunc("/did-run", server.didRun) + mux.HandleFunc("/suite-did-end", server.specSuiteDidEnd) + mux.HandleFunc("/emit-output", server.emitOutput) + mux.HandleFunc("/progress-report", server.emitProgressReport) + + //synchronization endpoints + mux.HandleFunc("/report-before-suite-completed", server.handleReportBeforeSuiteCompleted) + mux.HandleFunc("/report-before-suite-state", server.handleReportBeforeSuiteState) + mux.HandleFunc("/before-suite-completed", server.handleBeforeSuiteCompleted) + mux.HandleFunc("/before-suite-state", server.handleBeforeSuiteState) + mux.HandleFunc("/have-nonprimary-procs-finished", server.handleHaveNonprimaryProcsFinished) + mux.HandleFunc("/aggregated-nonprimary-procs-report", server.handleAggregatedNonprimaryProcsReport) + mux.HandleFunc("/counter", server.handleCounter) + mux.HandleFunc("/up", server.handleUp) + mux.HandleFunc("/abort", server.handleAbort) + + go httpServer.Serve(server.listener) +} + +// Stop the server +func (server *httpServer) Close() { + server.listener.Close() +} + +// The address the server can be reached it. Pass this into the `ForwardingReporter`. +func (server *httpServer) Address() string { + return "http://" + server.listener.Addr().String() +} + +func (server *httpServer) GetSuiteDone() chan any { + return server.handler.done +} + +func (server *httpServer) GetOutputDestination() io.Writer { + return server.handler.outputDestination +} + +func (server *httpServer) SetOutputDestination(w io.Writer) { + server.handler.outputDestination = w +} + +func (server *httpServer) RegisterAlive(node int, alive func() bool) { + server.handler.registerAlive(node, alive) +} + +// +// Streaming Endpoints +// + +// The server will forward all received messages to Ginkgo reporters registered with `RegisterReporters` +func (server *httpServer) decode(writer http.ResponseWriter, request *http.Request, object any) bool { + defer request.Body.Close() + if json.NewDecoder(request.Body).Decode(object) != nil { + writer.WriteHeader(http.StatusBadRequest) + return false + } + return true +} + +func (server *httpServer) handleError(err error, writer http.ResponseWriter) bool { + if err == nil { + return false + } + switch err { + case ErrorEarly: + writer.WriteHeader(http.StatusTooEarly) + case ErrorGone: + writer.WriteHeader(http.StatusGone) + case ErrorFailed: + writer.WriteHeader(http.StatusFailedDependency) + default: + writer.WriteHeader(http.StatusInternalServerError) + } + return true +} + +func (server *httpServer) specSuiteWillBegin(writer http.ResponseWriter, request *http.Request) { + var report types.Report + if !server.decode(writer, request, &report) { + return + } + + server.handleError(server.handler.SpecSuiteWillBegin(report, voidReceiver), writer) +} + +func (server *httpServer) didRun(writer http.ResponseWriter, request *http.Request) { + var report types.SpecReport + if !server.decode(writer, request, &report) { + return + } + + server.handleError(server.handler.DidRun(report, voidReceiver), writer) +} + +func (server *httpServer) specSuiteDidEnd(writer http.ResponseWriter, request *http.Request) { + var report types.Report + if !server.decode(writer, request, &report) { + return + } + server.handleError(server.handler.SpecSuiteDidEnd(report, voidReceiver), writer) +} + +func (server *httpServer) emitOutput(writer http.ResponseWriter, request *http.Request) { + output, err := io.ReadAll(request.Body) + if err != nil { + writer.WriteHeader(http.StatusInternalServerError) + return + } + var n int + server.handleError(server.handler.EmitOutput(output, &n), writer) +} + +func (server *httpServer) emitProgressReport(writer http.ResponseWriter, request *http.Request) { + var report types.ProgressReport + if !server.decode(writer, request, &report) { + return + } + server.handleError(server.handler.EmitProgressReport(report, voidReceiver), writer) +} + +func (server *httpServer) handleReportBeforeSuiteCompleted(writer http.ResponseWriter, request *http.Request) { + var state types.SpecState + if !server.decode(writer, request, &state) { + return + } + + server.handleError(server.handler.ReportBeforeSuiteCompleted(state, voidReceiver), writer) +} + +func (server *httpServer) handleReportBeforeSuiteState(writer http.ResponseWriter, request *http.Request) { + var state types.SpecState + if server.handleError(server.handler.ReportBeforeSuiteState(voidSender, &state), writer) { + return + } + json.NewEncoder(writer).Encode(state) +} + +func (server *httpServer) handleBeforeSuiteCompleted(writer http.ResponseWriter, request *http.Request) { + var beforeSuiteState BeforeSuiteState + if !server.decode(writer, request, &beforeSuiteState) { + return + } + + server.handleError(server.handler.BeforeSuiteCompleted(beforeSuiteState, voidReceiver), writer) +} + +func (server *httpServer) handleBeforeSuiteState(writer http.ResponseWriter, request *http.Request) { + var beforeSuiteState BeforeSuiteState + if server.handleError(server.handler.BeforeSuiteState(voidSender, &beforeSuiteState), writer) { + return + } + json.NewEncoder(writer).Encode(beforeSuiteState) +} + +func (server *httpServer) handleHaveNonprimaryProcsFinished(writer http.ResponseWriter, request *http.Request) { + if server.handleError(server.handler.HaveNonprimaryProcsFinished(voidSender, voidReceiver), writer) { + return + } + writer.WriteHeader(http.StatusOK) +} + +func (server *httpServer) handleAggregatedNonprimaryProcsReport(writer http.ResponseWriter, request *http.Request) { + var aggregatedReport types.Report + if server.handleError(server.handler.AggregatedNonprimaryProcsReport(voidSender, &aggregatedReport), writer) { + return + } + json.NewEncoder(writer).Encode(aggregatedReport) +} + +func (server *httpServer) handleCounter(writer http.ResponseWriter, request *http.Request) { + var n int + if server.handleError(server.handler.Counter(voidSender, &n), writer) { + return + } + json.NewEncoder(writer).Encode(ParallelIndexCounter{Index: n}) +} + +func (server *httpServer) handleUp(writer http.ResponseWriter, request *http.Request) { + writer.WriteHeader(http.StatusOK) +} + +func (server *httpServer) handleAbort(writer http.ResponseWriter, request *http.Request) { + if request.Method == "GET" { + var shouldAbort bool + server.handler.ShouldAbort(voidSender, &shouldAbort) + if shouldAbort { + writer.WriteHeader(http.StatusGone) + } else { + writer.WriteHeader(http.StatusOK) + } + } else { + server.handler.Abort(voidSender, voidReceiver) + } +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/rpc_client.go b/tests/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/rpc_client.go new file mode 100644 index 000000000..bb4675a02 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/rpc_client.go @@ -0,0 +1,136 @@ +package parallel_support + +import ( + "net/rpc" + "time" + + "github.com/onsi/ginkgo/v2/types" +) + +type rpcClient struct { + serverHost string + client *rpc.Client +} + +func newRPCClient(serverHost string) *rpcClient { + return &rpcClient{ + serverHost: serverHost, + } +} + +func (client *rpcClient) Connect() bool { + var err error + if client.client != nil { + return true + } + client.client, err = rpc.DialHTTPPath("tcp", client.serverHost, "/") + if err != nil { + client.client = nil + return false + } + return true +} + +func (client *rpcClient) Close() error { + return client.client.Close() +} + +func (client *rpcClient) poll(method string, data any) error { + for { + err := client.client.Call(method, voidSender, data) + if err == nil { + return nil + } + switch err.Error() { + case ErrorEarly.Error(): + time.Sleep(POLLING_INTERVAL) + case ErrorGone.Error(): + return ErrorGone + case ErrorFailed.Error(): + return ErrorFailed + default: + return err + } + } +} + +func (client *rpcClient) PostSuiteWillBegin(report types.Report) error { + return client.client.Call("Server.SpecSuiteWillBegin", report, voidReceiver) +} + +func (client *rpcClient) PostDidRun(report types.SpecReport) error { + return client.client.Call("Server.DidRun", report, voidReceiver) +} + +func (client *rpcClient) PostSuiteDidEnd(report types.Report) error { + return client.client.Call("Server.SpecSuiteDidEnd", report, voidReceiver) +} + +func (client *rpcClient) Write(p []byte) (int, error) { + var n int + err := client.client.Call("Server.EmitOutput", p, &n) + return n, err +} + +func (client *rpcClient) PostEmitProgressReport(report types.ProgressReport) error { + return client.client.Call("Server.EmitProgressReport", report, voidReceiver) +} + +func (client *rpcClient) PostReportBeforeSuiteCompleted(state types.SpecState) error { + return client.client.Call("Server.ReportBeforeSuiteCompleted", state, voidReceiver) +} + +func (client *rpcClient) BlockUntilReportBeforeSuiteCompleted() (types.SpecState, error) { + var state types.SpecState + err := client.poll("Server.ReportBeforeSuiteState", &state) + if err == ErrorGone { + return types.SpecStateFailed, nil + } + return state, err +} + +func (client *rpcClient) PostSynchronizedBeforeSuiteCompleted(state types.SpecState, data []byte) error { + beforeSuiteState := BeforeSuiteState{ + State: state, + Data: data, + } + return client.client.Call("Server.BeforeSuiteCompleted", beforeSuiteState, voidReceiver) +} + +func (client *rpcClient) BlockUntilSynchronizedBeforeSuiteData() (types.SpecState, []byte, error) { + var beforeSuiteState BeforeSuiteState + err := client.poll("Server.BeforeSuiteState", &beforeSuiteState) + if err == ErrorGone { + return types.SpecStateInvalid, nil, types.GinkgoErrors.SynchronizedBeforeSuiteDisappearedOnProc1() + } + return beforeSuiteState.State, beforeSuiteState.Data, err +} + +func (client *rpcClient) BlockUntilNonprimaryProcsHaveFinished() error { + return client.poll("Server.HaveNonprimaryProcsFinished", voidReceiver) +} + +func (client *rpcClient) BlockUntilAggregatedNonprimaryProcsReport() (types.Report, error) { + var report types.Report + err := client.poll("Server.AggregatedNonprimaryProcsReport", &report) + if err == ErrorGone { + return types.Report{}, types.GinkgoErrors.AggregatedReportUnavailableDueToNodeDisappearing() + } + return report, err +} + +func (client *rpcClient) FetchNextCounter() (int, error) { + var counter int + err := client.client.Call("Server.Counter", voidSender, &counter) + return counter, err +} + +func (client *rpcClient) PostAbort() error { + return client.client.Call("Server.Abort", voidSender, voidReceiver) +} + +func (client *rpcClient) ShouldAbort() bool { + var shouldAbort bool + client.client.Call("Server.ShouldAbort", voidSender, &shouldAbort) + return shouldAbort +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/rpc_server.go b/tests/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/rpc_server.go new file mode 100644 index 000000000..1574f99ac --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/rpc_server.go @@ -0,0 +1,75 @@ +/* + +The remote package provides the pieces to allow Ginkgo test suites to report to remote listeners. +This is used, primarily, to enable streaming parallel test output but has, in principal, broader applications (e.g. streaming test output to a browser). + +*/ + +package parallel_support + +import ( + "io" + "net" + "net/http" + "net/rpc" + + "github.com/onsi/ginkgo/v2/reporters" +) + +/* +RPCServer spins up on an automatically selected port and listens for communication from the forwarding reporter. +It then forwards that communication to attached reporters. +*/ +type RPCServer struct { + listener net.Listener + handler *ServerHandler +} + +// Create a new server, automatically selecting a port +func newRPCServer(parallelTotal int, reporter reporters.Reporter) (*RPCServer, error) { + listener, err := net.Listen("tcp", "127.0.0.1:0") + if err != nil { + return nil, err + } + return &RPCServer{ + listener: listener, + handler: newServerHandler(parallelTotal, reporter), + }, nil +} + +// Start the server. You don't need to `go s.Start()`, just `s.Start()` +func (server *RPCServer) Start() { + rpcServer := rpc.NewServer() + rpcServer.RegisterName("Server", server.handler) //register the handler's methods as the server + + httpServer := &http.Server{} + httpServer.Handler = rpcServer + + go httpServer.Serve(server.listener) +} + +// Stop the server +func (server *RPCServer) Close() { + server.listener.Close() +} + +// The address the server can be reached it. Pass this into the `ForwardingReporter`. +func (server *RPCServer) Address() string { + return server.listener.Addr().String() +} + +func (server *RPCServer) GetSuiteDone() chan any { + return server.handler.done +} + +func (server *RPCServer) GetOutputDestination() io.Writer { + return server.handler.outputDestination +} + +func (server *RPCServer) SetOutputDestination(w io.Writer) { + server.handler.outputDestination = w +} + +func (server *RPCServer) RegisterAlive(node int, alive func() bool) { + server.handler.registerAlive(node, alive) +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/server_handler.go b/tests/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/server_handler.go new file mode 100644 index 000000000..ab9e11372 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/internal/parallel_support/server_handler.go @@ -0,0 +1,234 @@ +package parallel_support + +import ( + "io" + "os" + "sync" + + "github.com/onsi/ginkgo/v2/reporters" + "github.com/onsi/ginkgo/v2/types" +) + +type Void struct{} + +var voidReceiver *Void = &Void{} +var voidSender Void + +// ServerHandler is an RPC-compatible handler that is shared between the http server and the rpc server. +// It handles all the business logic to avoid duplication between the two servers + +type ServerHandler struct { + done chan any + outputDestination io.Writer + reporter reporters.Reporter + alives []func() bool + lock *sync.Mutex + beforeSuiteState BeforeSuiteState + reportBeforeSuiteState types.SpecState + parallelTotal int + counter int + counterLock *sync.Mutex + shouldAbort bool + + numSuiteDidBegins int + numSuiteDidEnds int + aggregatedReport types.Report + reportHoldingArea []types.SpecReport +} + +func newServerHandler(parallelTotal int, reporter reporters.Reporter) *ServerHandler { + return &ServerHandler{ + reporter: reporter, + lock: &sync.Mutex{}, + counterLock: &sync.Mutex{}, + alives: make([]func() bool, parallelTotal), + beforeSuiteState: BeforeSuiteState{Data: nil, State: types.SpecStateInvalid}, + + parallelTotal: parallelTotal, + outputDestination: os.Stdout, + done: make(chan any), + } +} + +func (handler *ServerHandler) SpecSuiteWillBegin(report types.Report, _ *Void) error { + handler.lock.Lock() + defer handler.lock.Unlock() + + handler.numSuiteDidBegins += 1 + + // all summaries are identical, so it's fine to simply emit the last one of these + if handler.numSuiteDidBegins == handler.parallelTotal { + handler.reporter.SuiteWillBegin(report) + + for _, summary := range handler.reportHoldingArea { + handler.reporter.WillRun(summary) + handler.reporter.DidRun(summary) + } + + handler.reportHoldingArea = nil + } + + return nil +} + +func (handler *ServerHandler) DidRun(report types.SpecReport, _ *Void) error { + handler.lock.Lock() + defer handler.lock.Unlock() + + if handler.numSuiteDidBegins == handler.parallelTotal { + handler.reporter.WillRun(report) + handler.reporter.DidRun(report) + } else { + handler.reportHoldingArea = append(handler.reportHoldingArea, report) + } + + return nil +} + +func (handler *ServerHandler) SpecSuiteDidEnd(report types.Report, _ *Void) error { + handler.lock.Lock() + defer handler.lock.Unlock() + + handler.numSuiteDidEnds += 1 + if handler.numSuiteDidEnds == 1 { + handler.aggregatedReport = report + } else { + handler.aggregatedReport = handler.aggregatedReport.Add(report) + } + + if handler.numSuiteDidEnds == handler.parallelTotal { + handler.reporter.SuiteDidEnd(handler.aggregatedReport) + close(handler.done) + } + + return nil +} + +func (handler *ServerHandler) EmitOutput(output []byte, n *int) error { + var err error + *n, err = handler.outputDestination.Write(output) + return err +} + +func (handler *ServerHandler) EmitProgressReport(report types.ProgressReport, _ *Void) error { + handler.lock.Lock() + defer handler.lock.Unlock() + handler.reporter.EmitProgressReport(report) + return nil +} + +func (handler *ServerHandler) registerAlive(proc int, alive func() bool) { + handler.lock.Lock() + defer handler.lock.Unlock() + handler.alives[proc-1] = alive +} + +func (handler *ServerHandler) procIsAlive(proc int) bool { + handler.lock.Lock() + defer handler.lock.Unlock() + alive := handler.alives[proc-1] + if alive == nil { + return true + } + return alive() +} + +func (handler *ServerHandler) haveNonprimaryProcsFinished() bool { + for i := 2; i <= handler.parallelTotal; i++ { + if handler.procIsAlive(i) { + return false + } + } + return true +} + +func (handler *ServerHandler) ReportBeforeSuiteCompleted(reportBeforeSuiteState types.SpecState, _ *Void) error { + handler.lock.Lock() + defer handler.lock.Unlock() + handler.reportBeforeSuiteState = reportBeforeSuiteState + + return nil +} + +func (handler *ServerHandler) ReportBeforeSuiteState(_ Void, reportBeforeSuiteState *types.SpecState) error { + proc1IsAlive := handler.procIsAlive(1) + handler.lock.Lock() + defer handler.lock.Unlock() + if handler.reportBeforeSuiteState == types.SpecStateInvalid { + if proc1IsAlive { + return ErrorEarly + } else { + return ErrorGone + } + } + *reportBeforeSuiteState = handler.reportBeforeSuiteState + return nil +} + +func (handler *ServerHandler) BeforeSuiteCompleted(beforeSuiteState BeforeSuiteState, _ *Void) error { + handler.lock.Lock() + defer handler.lock.Unlock() + handler.beforeSuiteState = beforeSuiteState + + return nil +} + +func (handler *ServerHandler) BeforeSuiteState(_ Void, beforeSuiteState *BeforeSuiteState) error { + proc1IsAlive := handler.procIsAlive(1) + handler.lock.Lock() + defer handler.lock.Unlock() + if handler.beforeSuiteState.State == types.SpecStateInvalid { + if proc1IsAlive { + return ErrorEarly + } else { + return ErrorGone + } + } + *beforeSuiteState = handler.beforeSuiteState + return nil +} + +func (handler *ServerHandler) HaveNonprimaryProcsFinished(_ Void, _ *Void) error { + if handler.haveNonprimaryProcsFinished() { + return nil + } else { + return ErrorEarly + } +} + +func (handler *ServerHandler) AggregatedNonprimaryProcsReport(_ Void, report *types.Report) error { + if handler.haveNonprimaryProcsFinished() { + handler.lock.Lock() + defer handler.lock.Unlock() + if handler.numSuiteDidEnds == handler.parallelTotal-1 { + *report = handler.aggregatedReport + return nil + } else { + return ErrorGone + } + } else { + return ErrorEarly + } +} + +func (handler *ServerHandler) Counter(_ Void, counter *int) error { + handler.counterLock.Lock() + defer handler.counterLock.Unlock() + *counter = handler.counter + handler.counter++ + return nil +} + +func (handler *ServerHandler) Abort(_ Void, _ *Void) error { + handler.lock.Lock() + defer handler.lock.Unlock() + handler.shouldAbort = true + return nil +} + +func (handler *ServerHandler) ShouldAbort(_ Void, shouldAbort *bool) error { + handler.lock.Lock() + defer handler.lock.Unlock() + *shouldAbort = handler.shouldAbort + return nil +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/internal/progress_report.go b/tests/vendor/github.com/onsi/ginkgo/v2/internal/progress_report.go new file mode 100644 index 000000000..11269cf1f --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/internal/progress_report.go @@ -0,0 +1,287 @@ +package internal + +import ( + "bufio" + "bytes" + "context" + "fmt" + "io" + "os" + "os/signal" + "path/filepath" + "runtime" + "strconv" + "strings" + "time" + + "github.com/onsi/ginkgo/v2/types" +) + +var _SOURCE_CACHE = map[string][]string{} + +type ProgressSignalRegistrar func(func()) context.CancelFunc + +func RegisterForProgressSignal(handler func()) context.CancelFunc { + signalChannel := make(chan os.Signal, 1) + if len(PROGRESS_SIGNALS) > 0 { + signal.Notify(signalChannel, PROGRESS_SIGNALS...) + } + ctx, cancel := context.WithCancel(context.Background()) + go func() { + for { + select { + case <-signalChannel: + handler() + case <-ctx.Done(): + signal.Stop(signalChannel) + return + } + } + }() + + return cancel +} + +type ProgressStepCursor struct { + Text string + CodeLocation types.CodeLocation + StartTime time.Time +} + +func NewProgressReport(isRunningInParallel bool, report types.SpecReport, currentNode Node, currentNodeStartTime time.Time, currentStep types.SpecEvent, gwOutput string, timelineLocation types.TimelineLocation, additionalReports []string, sourceRoots []string, includeAll bool) (types.ProgressReport, error) { + pr := types.ProgressReport{ + ParallelProcess: report.ParallelProcess, + RunningInParallel: isRunningInParallel, + ContainerHierarchyTexts: report.ContainerHierarchyTexts, + LeafNodeText: report.LeafNodeText, + LeafNodeLocation: report.LeafNodeLocation, + SpecStartTime: report.StartTime, + + CurrentNodeType: currentNode.NodeType, + CurrentNodeText: currentNode.Text, + CurrentNodeLocation: currentNode.CodeLocation, + CurrentNodeStartTime: currentNodeStartTime, + + CurrentStepText: currentStep.Message, + CurrentStepLocation: currentStep.CodeLocation, + CurrentStepStartTime: currentStep.TimelineLocation.Time, + + AdditionalReports: additionalReports, + + CapturedGinkgoWriterOutput: gwOutput, + TimelineLocation: timelineLocation, + } + + goroutines, err := extractRunningGoroutines() + if err != nil { + return pr, err + } + pr.Goroutines = goroutines + + // now we want to try to find goroutines of interest. these will be goroutines that have any function calls with code in packagesOfInterest: + packagesOfInterest := map[string]bool{} + packageFromFilename := func(filename string) string { + return filepath.Dir(filename) + } + addPackageFor := func(filename string) { + if filename != "" { + packagesOfInterest[packageFromFilename(filename)] = true + } + } + isPackageOfInterest := func(filename string) bool { + stackPackage := packageFromFilename(filename) + for packageOfInterest := range packagesOfInterest { + if strings.HasPrefix(stackPackage, packageOfInterest) { + return true + } + } + return false + } + for _, location := range report.ContainerHierarchyLocations { + addPackageFor(location.FileName) + } + addPackageFor(report.LeafNodeLocation.FileName) + addPackageFor(currentNode.CodeLocation.FileName) + addPackageFor(currentStep.CodeLocation.FileName) + + //First, we find the SpecGoroutine - this will be the goroutine that includes `runNode` + specGoRoutineIdx := -1 + runNodeFunctionCallIdx := -1 +OUTER: + for goroutineIdx, goroutine := range pr.Goroutines { + for functionCallIdx, functionCall := range goroutine.Stack { + if strings.Contains(functionCall.Function, "ginkgo/v2/internal.(*Suite).runNode.func") { + specGoRoutineIdx = goroutineIdx + runNodeFunctionCallIdx = functionCallIdx + break OUTER + } + } + } + + //Now, we find the first non-Ginkgo function call + if specGoRoutineIdx > -1 { + for runNodeFunctionCallIdx >= 0 { + fn := goroutines[specGoRoutineIdx].Stack[runNodeFunctionCallIdx].Function + file := goroutines[specGoRoutineIdx].Stack[runNodeFunctionCallIdx].Filename + // these are all things that could potentially happen from within ginkgo + if strings.Contains(fn, "ginkgo/v2/internal") || strings.Contains(fn, "reflect.Value") || strings.Contains(file, "ginkgo/table_dsl") || strings.Contains(file, "ginkgo/core_dsl") { + runNodeFunctionCallIdx-- + continue + } + if strings.Contains(goroutines[specGoRoutineIdx].Stack[runNodeFunctionCallIdx].Function, "ginkgo/table_dsl") { + + } + //found it! lets add its package of interest + addPackageFor(goroutines[specGoRoutineIdx].Stack[runNodeFunctionCallIdx].Filename) + break + } + } + + ginkgoEntryPointIdx := -1 +OUTER_GINKGO_ENTRY_POINT: + for goroutineIdx, goroutine := range pr.Goroutines { + for _, functionCall := range goroutine.Stack { + if strings.Contains(functionCall.Function, "ginkgo/v2.RunSpecs") { + ginkgoEntryPointIdx = goroutineIdx + break OUTER_GINKGO_ENTRY_POINT + } + } + } + + // Now we go through all goroutines and highlight any lines with packages in `packagesOfInterest` + // Any goroutines with highlighted lines end up in the HighlightGoRoutines + for goroutineIdx, goroutine := range pr.Goroutines { + if goroutineIdx == ginkgoEntryPointIdx { + continue + } + if goroutineIdx == specGoRoutineIdx { + pr.Goroutines[goroutineIdx].IsSpecGoroutine = true + } + for functionCallIdx, functionCall := range goroutine.Stack { + if isPackageOfInterest(functionCall.Filename) { + goroutine.Stack[functionCallIdx].Highlight = true + goroutine.Stack[functionCallIdx].Source, goroutine.Stack[functionCallIdx].SourceHighlight = fetchSource(functionCall.Filename, functionCall.Line, 2, sourceRoots) + } + } + } + + if !includeAll { + goroutines := []types.Goroutine{pr.SpecGoroutine()} + goroutines = append(goroutines, pr.HighlightedGoroutines()...) + pr.Goroutines = goroutines + } + + return pr, nil +} + +func extractRunningGoroutines() ([]types.Goroutine, error) { + var stack []byte + for size := 64 * 1024; ; size *= 2 { + stack = make([]byte, size) + if n := runtime.Stack(stack, true); n < size { + stack = stack[:n] + break + } + } + r := bufio.NewReader(bytes.NewReader(stack)) + out := []types.Goroutine{} + idx := -1 + for { + line, err := r.ReadString('\n') + if err == io.EOF { + break + } + + line = strings.TrimSuffix(line, "\n") + + //skip blank lines + if line == "" { + continue + } + + //parse headers for new goroutine frames + if strings.HasPrefix(line, "goroutine") { + out = append(out, types.Goroutine{}) + idx = len(out) - 1 + + line = strings.TrimPrefix(line, "goroutine ") + line = strings.TrimSuffix(line, ":") + fields := strings.SplitN(line, " ", 2) + if len(fields) != 2 { + return nil, types.GinkgoErrors.FailedToParseStackTrace(fmt.Sprintf("Invalid goroutine frame header: %s", line)) + } + out[idx].ID, err = strconv.ParseUint(fields[0], 10, 64) + if err != nil { + return nil, types.GinkgoErrors.FailedToParseStackTrace(fmt.Sprintf("Invalid goroutine ID: %s", fields[1])) + } + + out[idx].State = strings.TrimSuffix(strings.TrimPrefix(fields[1], "["), "]") + continue + } + + //if we are here we must be at a function call entry in the stack + functionCall := types.FunctionCall{ + Function: strings.TrimPrefix(line, "created by "), // no need to track 'created by' + } + + line, err = r.ReadString('\n') + line = strings.TrimSuffix(line, "\n") + if err == io.EOF { + return nil, types.GinkgoErrors.FailedToParseStackTrace(fmt.Sprintf("Invalid function call: %s -- missing file name and line number", functionCall.Function)) + } + line = strings.TrimLeft(line, " \t") + delimiterIdx := strings.LastIndex(line, ":") + if delimiterIdx == -1 { + return nil, types.GinkgoErrors.FailedToParseStackTrace(fmt.Sprintf("Invalid filename and line number: %s", line)) + } + functionCall.Filename = line[:delimiterIdx] + line = strings.Split(line[delimiterIdx+1:], " ")[0] + lineNumber, err := strconv.ParseInt(line, 10, 64) + functionCall.Line = int(lineNumber) + if err != nil { + return nil, types.GinkgoErrors.FailedToParseStackTrace(fmt.Sprintf("Invalid function call line number: %s\n%s", line, err.Error())) + } + out[idx].Stack = append(out[idx].Stack, functionCall) + } + + return out, nil +} + +func fetchSource(filename string, lineNumber int, span int, configuredSourceRoots []string) ([]string, int) { + if filename == "" { + return []string{}, 0 + } + + var lines []string + var ok bool + if lines, ok = _SOURCE_CACHE[filename]; !ok { + sourceRoots := []string{""} + sourceRoots = append(sourceRoots, configuredSourceRoots...) + var data []byte + var err error + var found bool + for _, root := range sourceRoots { + data, err = os.ReadFile(filepath.Join(root, filename)) + if err == nil { + found = true + break + } + } + if !found { + return []string{}, 0 + } + lines = strings.Split(string(data), "\n") + _SOURCE_CACHE[filename] = lines + } + + startIndex := lineNumber - span - 1 + endIndex := startIndex + span + span + 1 + if startIndex < 0 { + startIndex = 0 + } + if endIndex > len(lines) { + endIndex = len(lines) + } + highlightIndex := lineNumber - 1 - startIndex + return lines[startIndex:endIndex], highlightIndex +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/internal/progress_report_bsd.go b/tests/vendor/github.com/onsi/ginkgo/v2/internal/progress_report_bsd.go new file mode 100644 index 000000000..61e0ed306 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/internal/progress_report_bsd.go @@ -0,0 +1,11 @@ +//go:build freebsd || openbsd || netbsd || darwin || dragonfly +// +build freebsd openbsd netbsd darwin dragonfly + +package internal + +import ( + "os" + "syscall" +) + +var PROGRESS_SIGNALS = []os.Signal{syscall.SIGINFO, syscall.SIGUSR1} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/internal/progress_report_unix.go b/tests/vendor/github.com/onsi/ginkgo/v2/internal/progress_report_unix.go new file mode 100644 index 000000000..ad30de459 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/internal/progress_report_unix.go @@ -0,0 +1,11 @@ +//go:build linux || solaris +// +build linux solaris + +package internal + +import ( + "os" + "syscall" +) + +var PROGRESS_SIGNALS = []os.Signal{syscall.SIGUSR1} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/internal/progress_report_wasm.go b/tests/vendor/github.com/onsi/ginkgo/v2/internal/progress_report_wasm.go new file mode 100644 index 000000000..8c53fe0ad --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/internal/progress_report_wasm.go @@ -0,0 +1,10 @@ +//go:build wasm + +package internal + +import ( + "os" + "syscall" +) + +var PROGRESS_SIGNALS = []os.Signal{syscall.SIGUSR1} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/internal/progress_report_win.go b/tests/vendor/github.com/onsi/ginkgo/v2/internal/progress_report_win.go new file mode 100644 index 000000000..0eca2516a --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/internal/progress_report_win.go @@ -0,0 +1,8 @@ +//go:build windows +// +build windows + +package internal + +import "os" + +var PROGRESS_SIGNALS = []os.Signal{} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/internal/progress_reporter_manager.go b/tests/vendor/github.com/onsi/ginkgo/v2/internal/progress_reporter_manager.go new file mode 100644 index 000000000..2c6e260f7 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/internal/progress_reporter_manager.go @@ -0,0 +1,79 @@ +package internal + +import ( + "context" + "sort" + "strings" + "sync" + + "github.com/onsi/ginkgo/v2/types" +) + +type ProgressReporterManager struct { + lock *sync.Mutex + progressReporters map[int]func() string + prCounter int +} + +func NewProgressReporterManager() *ProgressReporterManager { + return &ProgressReporterManager{ + progressReporters: map[int]func() string{}, + lock: &sync.Mutex{}, + } +} + +func (prm *ProgressReporterManager) AttachProgressReporter(reporter func() string) func() { + prm.lock.Lock() + defer prm.lock.Unlock() + prm.prCounter += 1 + prCounter := prm.prCounter + prm.progressReporters[prCounter] = reporter + + return func() { + prm.lock.Lock() + defer prm.lock.Unlock() + delete(prm.progressReporters, prCounter) + } +} + +func (prm *ProgressReporterManager) QueryProgressReporters(ctx context.Context, failer *Failer) []string { + prm.lock.Lock() + keys := []int{} + for key := range prm.progressReporters { + keys = append(keys, key) + } + sort.Ints(keys) + reporters := []func() string{} + for _, key := range keys { + reporters = append(reporters, prm.progressReporters[key]) + } + prm.lock.Unlock() + + if len(reporters) == 0 { + return nil + } + out := []string{} + for _, reporter := range reporters { + reportC := make(chan string, 1) + go func() { + defer func() { + e := recover() + if e != nil { + failer.Panic(types.NewCodeLocationWithStackTrace(1), e) + reportC <- "failed to query attached progress reporter" + } + }() + reportC <- reporter() + }() + var report string + select { + case report = <-reportC: + case <-ctx.Done(): + return out + } + if strings.TrimSpace(report) != "" { + out = append(out, report) + } + } + return out +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/internal/report_entry.go b/tests/vendor/github.com/onsi/ginkgo/v2/internal/report_entry.go new file mode 100644 index 000000000..9c18dc8e5 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/internal/report_entry.go @@ -0,0 +1,39 @@ +package internal + +import ( + "time" + + "github.com/onsi/ginkgo/v2/types" +) + +type ReportEntry = types.ReportEntry + +func NewReportEntry(name string, cl types.CodeLocation, args ...any) (ReportEntry, error) { + out := ReportEntry{ + Visibility: types.ReportEntryVisibilityAlways, + Name: name, + Location: cl, + Time: time.Now(), + } + var didSetValue = false + for _, arg := range args { + switch x := arg.(type) { + case types.ReportEntryVisibility: + out.Visibility = x + case types.CodeLocation: + out.Location = x + case Offset: + out.Location = types.NewCodeLocation(2 + int(x)) + case time.Time: + out.Time = x + default: + if didSetValue { + return ReportEntry{}, types.GinkgoErrors.TooManyReportEntryValues(out.Location, arg) + } + out.Value = types.WrapEntryValue(arg) + didSetValue = true + } + } + + return out, nil +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/internal/spec.go b/tests/vendor/github.com/onsi/ginkgo/v2/internal/spec.go new file mode 100644 index 000000000..7c4ee5bb7 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/internal/spec.go @@ -0,0 +1,87 @@ +package internal + +import ( + "strings" + "time" + + "github.com/onsi/ginkgo/v2/types" +) + +type Spec struct { + Nodes Nodes + Skip bool +} + +func (s Spec) SubjectID() uint { + return s.Nodes.FirstNodeWithType(types.NodeTypeIt).ID +} + +func (s Spec) Text() string { + texts := []string{} + for i := range s.Nodes { + if s.Nodes[i].Text != "" { + texts = append(texts, s.Nodes[i].Text) + } + } + return strings.Join(texts, " ") +} + +func (s Spec) FirstNodeWithType(nodeTypes types.NodeType) Node { + return s.Nodes.FirstNodeWithType(nodeTypes) +} + +func (s Spec) FlakeAttempts() int { + flakeAttempts := 0 + for i := range s.Nodes { + if s.Nodes[i].FlakeAttempts > 0 { + flakeAttempts = s.Nodes[i].FlakeAttempts + } + } + + return flakeAttempts +} + +func (s Spec) MustPassRepeatedly() int { + mustPassRepeatedly := 0 + for i := range s.Nodes { + if s.Nodes[i].MustPassRepeatedly > 0 { + mustPassRepeatedly = s.Nodes[i].MustPassRepeatedly + } + } + + return mustPassRepeatedly +} + +func (s Spec) SpecTimeout() time.Duration { + return s.FirstNodeWithType(types.NodeTypeIt).SpecTimeout +} + +type Specs []Spec + +func (s Specs) HasAnySpecsMarkedPending() bool { + for i := range s { + if s[i].Nodes.HasNodeMarkedPending() { + return true + } + } + + return false +} + +func (s Specs) CountWithoutSkip() int { + n := 0 + for i := range s { + if !s[i].Skip { + n += 1 + } + } + return n +} + +func (s Specs) AtIndices(indices SpecIndices) Specs { + out := make(Specs, len(indices)) + for i, idx := range indices { + out[i] = s[idx] + } + return out +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/internal/spec_context.go b/tests/vendor/github.com/onsi/ginkgo/v2/internal/spec_context.go new file mode 100644 index 000000000..2d2ea2fc3 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/internal/spec_context.go @@ -0,0 +1,47 @@ +package internal + +import ( + "context" + + "github.com/onsi/ginkgo/v2/types" +) + +type SpecContext interface { + context.Context + + SpecReport() types.SpecReport + AttachProgressReporter(func() string) func() +} + +type specContext struct { + context.Context + *ProgressReporterManager + + cancel context.CancelCauseFunc + + suite *Suite +} + +/* +SpecContext includes a reference to `suite` and embeds itself in itself as a "GINKGO_SPEC_CONTEXT" value. This allows users to create child Contexts without having down-stream consumers (e.g. Gomega) lose access to the SpecContext and its methods. This allows us to build extensions on top of Ginkgo that simply take an all-encompassing context. + +Note that while SpecContext is used to enforce deadlines by Ginkgo it is not configured as a context.WithDeadline. Instead, Ginkgo owns responsibility for cancelling the context when the deadline elapses. + +This is because Ginkgo needs finer control over when the context is canceled. Specifically, Ginkgo needs to generate a ProgressReport before it cancels the context to ensure progress is captured where the spec is currently running. The only way to avoid a race here is to manually control the cancellation. +*/ +func NewSpecContext(suite *Suite) *specContext { + ctx, cancel := context.WithCancelCause(context.Background()) + sc := &specContext{ + cancel: cancel, + suite: suite, + ProgressReporterManager: NewProgressReporterManager(), + } + ctx = context.WithValue(ctx, "GINKGO_SPEC_CONTEXT", sc) //yes, yes, the go docs say don't use a string for a key... but we'd rather avoid a circular dependency between Gomega and Ginkgo + sc.Context = ctx //thank goodness for garbage collectors that can handle circular dependencies + + return sc +} + +func (sc *specContext) SpecReport() types.SpecReport { + return sc.suite.CurrentSpecReport() +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/internal/suite.go b/tests/vendor/github.com/onsi/ginkgo/v2/internal/suite.go new file mode 100644 index 000000000..3edf50776 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/internal/suite.go @@ -0,0 +1,1046 @@ +package internal + +import ( + "context" + "fmt" + "sync" + "time" + + "github.com/onsi/ginkgo/v2/internal/interrupt_handler" + "github.com/onsi/ginkgo/v2/internal/parallel_support" + "github.com/onsi/ginkgo/v2/reporters" + "github.com/onsi/ginkgo/v2/types" +) + +type Phase uint + +const ( + PhaseBuildTopLevel Phase = iota + PhaseBuildTree + PhaseRun +) + +const ProgressReporterDeadline = 5 * time.Second + +type Suite struct { + tree *TreeNode + topLevelContainers Nodes + + *ProgressReporterManager + + phase Phase + + suiteNodes Nodes + cleanupNodes Nodes + + failer *Failer + reporter reporters.Reporter + writer WriterInterface + outputInterceptor OutputInterceptor + interruptHandler interrupt_handler.InterruptHandlerInterface + config types.SuiteConfig + deadline time.Time + + skipAll bool + report types.Report + currentSpecReport types.SpecReport + currentNode Node + currentNodeStartTime time.Time + + currentSpecContext *specContext + + currentByStep types.SpecEvent + timelineOrder int + + /* + We don't need to lock around all operations. Just those that *could* happen concurrently. + + Suite, generally, only runs one node at a time - and so the possibiity for races is small. In fact, the presence of a race usually indicates the user has launched a goroutine that has leaked past the node it was launched in. + + However, there are some operations that can happen concurrently: + + - AddReportEntry and CurrentSpecReport can be accessed at any point by the user - including in goroutines that outlive the node intentionally (see, e.g. #1020). They both form a self-contained read-write pair and so a lock in them is sufficent. + - generateProgressReport can be invoked at any point in time by an interrupt or a progres poll. Moreover, it requires access to currentSpecReport, currentNode, currentNodeStartTime, and progressStepCursor. To make it threadsafe we need to lock around generateProgressReport when we read those variables _and_ everywhere those variables are *written*. In general we don't need to worry about all possible field writes to these variables as what `generateProgressReport` does with these variables is fairly selective (hence the name of the lock). Specifically, we dont' need to lock around state and failure message changes on `currentSpecReport` - just the setting of the variable itself. + */ + selectiveLock *sync.Mutex + + client parallel_support.Client +} + +func NewSuite() *Suite { + return &Suite{ + tree: &TreeNode{}, + phase: PhaseBuildTopLevel, + ProgressReporterManager: NewProgressReporterManager(), + + selectiveLock: &sync.Mutex{}, + } +} + +func (suite *Suite) Clone() (*Suite, error) { + if suite.phase != PhaseBuildTopLevel { + return nil, fmt.Errorf("cannot clone suite after tree has been built") + } + return &Suite{ + tree: &TreeNode{}, + phase: PhaseBuildTopLevel, + ProgressReporterManager: NewProgressReporterManager(), + topLevelContainers: suite.topLevelContainers.Clone(), + suiteNodes: suite.suiteNodes.Clone(), + selectiveLock: &sync.Mutex{}, + }, nil +} + +func (suite *Suite) BuildTree() error { + // During PhaseBuildTopLevel, the top level containers are stored in suite.topLevelCotainers and entered + // We now enter PhaseBuildTree where these top level containers are entered and added to the spec tree + suite.phase = PhaseBuildTree + for _, topLevelContainer := range suite.topLevelContainers { + err := suite.PushNode(topLevelContainer) + if err != nil { + return err + } + } + return nil +} + +func (suite *Suite) Run(description string, suiteLabels Labels, suitePath string, failer *Failer, reporter reporters.Reporter, writer WriterInterface, outputInterceptor OutputInterceptor, interruptHandler interrupt_handler.InterruptHandlerInterface, client parallel_support.Client, progressSignalRegistrar ProgressSignalRegistrar, suiteConfig types.SuiteConfig) (bool, bool) { + if suite.phase != PhaseBuildTree { + panic("cannot run before building the tree = call suite.BuildTree() first") + } + ApplyNestedFocusPolicyToTree(suite.tree) + specs := GenerateSpecsFromTreeRoot(suite.tree) + specs, hasProgrammaticFocus := ApplyFocusToSpecs(specs, description, suiteLabels, suiteConfig) + + suite.phase = PhaseRun + suite.client = client + suite.failer = failer + suite.reporter = reporter + suite.writer = writer + suite.outputInterceptor = outputInterceptor + suite.interruptHandler = interruptHandler + suite.config = suiteConfig + + if suite.config.Timeout > 0 { + suite.deadline = time.Now().Add(suite.config.Timeout) + } + + cancelProgressHandler := progressSignalRegistrar(suite.handleProgressSignal) + + success := suite.runSpecs(description, suiteLabels, suitePath, hasProgrammaticFocus, specs) + + cancelProgressHandler() + + return success, hasProgrammaticFocus +} + +func (suite *Suite) InRunPhase() bool { + return suite.phase == PhaseRun +} + +/* + Tree Construction methods + + PushNode is used during PhaseBuildTopLevel and PhaseBuildTree +*/ + +func (suite *Suite) PushNode(node Node) error { + if node.NodeType.Is(types.NodeTypeCleanupInvalid | types.NodeTypeCleanupAfterEach | types.NodeTypeCleanupAfterAll | types.NodeTypeCleanupAfterSuite) { + return suite.pushCleanupNode(node) + } + + if node.NodeType.Is(types.NodeTypeBeforeSuite | types.NodeTypeAfterSuite | types.NodeTypeSynchronizedBeforeSuite | types.NodeTypeSynchronizedAfterSuite | types.NodeTypeBeforeSuite | types.NodeTypeReportBeforeSuite | types.NodeTypeReportAfterSuite) { + return suite.pushSuiteNode(node) + } + + if suite.phase == PhaseRun { + return types.GinkgoErrors.PushingNodeInRunPhase(node.NodeType, node.CodeLocation) + } + + if node.MarkedSerial { + firstOrderedNode := suite.tree.AncestorNodeChain().FirstNodeMarkedOrdered() + if !firstOrderedNode.IsZero() && !firstOrderedNode.MarkedSerial { + return types.GinkgoErrors.InvalidSerialNodeInNonSerialOrderedContainer(node.CodeLocation, node.NodeType) + } + } + + if node.NodeType.Is(types.NodeTypeBeforeAll | types.NodeTypeAfterAll) { + firstOrderedNode := suite.tree.AncestorNodeChain().FirstNodeMarkedOrdered() + if firstOrderedNode.IsZero() { + return types.GinkgoErrors.SetupNodeNotInOrderedContainer(node.CodeLocation, node.NodeType) + } + } + + if node.MarkedContinueOnFailure { + firstOrderedNode := suite.tree.AncestorNodeChain().FirstNodeMarkedOrdered() + if !firstOrderedNode.IsZero() { + return types.GinkgoErrors.InvalidContinueOnFailureDecoration(node.CodeLocation) + } + } + + if node.NodeType == types.NodeTypeContainer { + // During PhaseBuildTopLevel we only track the top level containers without entering them + // We only enter the top level container nodes during PhaseBuildTree + // + // This ensures the tree is only constructed after `go spec` has called `flag.Parse()` and gives + // the user an opportunity to load suiteConfiguration information in the `TestX` go spec hook just before `RunSpecs` + // is invoked. This makes the lifecycle easier to reason about and solves issues like #693. + if suite.phase == PhaseBuildTopLevel { + suite.topLevelContainers = append(suite.topLevelContainers, node) + return nil + } + if suite.phase == PhaseBuildTree { + parentTree := suite.tree + suite.tree = &TreeNode{Node: node} + parentTree.AppendChild(suite.tree) + err := func() (err error) { + defer func() { + if e := recover(); e != nil { + err = types.GinkgoErrors.CaughtPanicDuringABuildPhase(e, node.CodeLocation) + } + }() + node.Body(nil) + return err + }() + suite.tree = parentTree + return err + } + } else { + suite.tree.AppendChild(&TreeNode{Node: node}) + return nil + } + + return nil +} + +func (suite *Suite) pushSuiteNode(node Node) error { + if suite.phase == PhaseBuildTree { + return types.GinkgoErrors.SuiteNodeInNestedContext(node.NodeType, node.CodeLocation) + } + + if suite.phase == PhaseRun { + return types.GinkgoErrors.SuiteNodeDuringRunPhase(node.NodeType, node.CodeLocation) + } + + switch node.NodeType { + case types.NodeTypeBeforeSuite, types.NodeTypeSynchronizedBeforeSuite: + existingBefores := suite.suiteNodes.WithType(types.NodeTypeBeforeSuite | types.NodeTypeSynchronizedBeforeSuite) + if len(existingBefores) > 0 { + return types.GinkgoErrors.MultipleBeforeSuiteNodes(node.NodeType, node.CodeLocation, existingBefores[0].NodeType, existingBefores[0].CodeLocation) + } + case types.NodeTypeAfterSuite, types.NodeTypeSynchronizedAfterSuite: + existingAfters := suite.suiteNodes.WithType(types.NodeTypeAfterSuite | types.NodeTypeSynchronizedAfterSuite) + if len(existingAfters) > 0 { + return types.GinkgoErrors.MultipleAfterSuiteNodes(node.NodeType, node.CodeLocation, existingAfters[0].NodeType, existingAfters[0].CodeLocation) + } + } + + suite.suiteNodes = append(suite.suiteNodes, node) + return nil +} + +func (suite *Suite) pushCleanupNode(node Node) error { + if suite.phase != PhaseRun || suite.currentNode.IsZero() { + return types.GinkgoErrors.PushingCleanupNodeDuringTreeConstruction(node.CodeLocation) + } + + switch suite.currentNode.NodeType { + case types.NodeTypeBeforeSuite, types.NodeTypeSynchronizedBeforeSuite, types.NodeTypeAfterSuite, types.NodeTypeSynchronizedAfterSuite: + node.NodeType = types.NodeTypeCleanupAfterSuite + case types.NodeTypeBeforeAll, types.NodeTypeAfterAll: + node.NodeType = types.NodeTypeCleanupAfterAll + case types.NodeTypeReportBeforeEach, types.NodeTypeReportAfterEach, types.NodeTypeReportBeforeSuite, types.NodeTypeReportAfterSuite: + return types.GinkgoErrors.PushingCleanupInReportingNode(node.CodeLocation, suite.currentNode.NodeType) + case types.NodeTypeCleanupInvalid, types.NodeTypeCleanupAfterEach, types.NodeTypeCleanupAfterAll, types.NodeTypeCleanupAfterSuite: + return types.GinkgoErrors.PushingCleanupInCleanupNode(node.CodeLocation) + default: + node.NodeType = types.NodeTypeCleanupAfterEach + } + + node.NodeIDWhereCleanupWasGenerated = suite.currentNode.ID + node.NestingLevel = suite.currentNode.NestingLevel + suite.selectiveLock.Lock() + suite.cleanupNodes = append(suite.cleanupNodes, node) + suite.selectiveLock.Unlock() + + return nil +} + +func (suite *Suite) generateTimelineLocation() types.TimelineLocation { + suite.selectiveLock.Lock() + defer suite.selectiveLock.Unlock() + + suite.timelineOrder += 1 + return types.TimelineLocation{ + Offset: len(suite.currentSpecReport.CapturedGinkgoWriterOutput) + suite.writer.Len(), + Order: suite.timelineOrder, + Time: time.Now(), + } +} + +func (suite *Suite) handleSpecEvent(event types.SpecEvent) types.SpecEvent { + event.TimelineLocation = suite.generateTimelineLocation() + suite.selectiveLock.Lock() + suite.currentSpecReport.SpecEvents = append(suite.currentSpecReport.SpecEvents, event) + suite.selectiveLock.Unlock() + suite.reporter.EmitSpecEvent(event) + return event +} + +func (suite *Suite) handleSpecEventEnd(eventType types.SpecEventType, startEvent types.SpecEvent) { + event := startEvent + event.SpecEventType = eventType + event.TimelineLocation = suite.generateTimelineLocation() + event.Duration = event.TimelineLocation.Time.Sub(startEvent.TimelineLocation.Time) + suite.selectiveLock.Lock() + suite.currentSpecReport.SpecEvents = append(suite.currentSpecReport.SpecEvents, event) + suite.selectiveLock.Unlock() + suite.reporter.EmitSpecEvent(event) +} + +func (suite *Suite) By(text string, callback ...func()) error { + cl := types.NewCodeLocation(2) + if suite.phase != PhaseRun { + return types.GinkgoErrors.ByNotDuringRunPhase(cl) + } + + event := suite.handleSpecEvent(types.SpecEvent{ + SpecEventType: types.SpecEventByStart, + CodeLocation: cl, + Message: text, + }) + suite.selectiveLock.Lock() + suite.currentByStep = event + suite.selectiveLock.Unlock() + + if len(callback) == 1 { + defer func() { + suite.selectiveLock.Lock() + suite.currentByStep = types.SpecEvent{} + suite.selectiveLock.Unlock() + suite.handleSpecEventEnd(types.SpecEventByEnd, event) + }() + callback[0]() + } else if len(callback) > 1 { + panic("just one callback per By, please") + } + return nil +} + +/* +Spec Running methods - used during PhaseRun +*/ +func (suite *Suite) CurrentSpecReport() types.SpecReport { + suite.selectiveLock.Lock() + defer suite.selectiveLock.Unlock() + report := suite.currentSpecReport + if suite.writer != nil { + report.CapturedGinkgoWriterOutput = string(suite.writer.Bytes()) + } + report.ReportEntries = make([]ReportEntry, len(report.ReportEntries)) + copy(report.ReportEntries, suite.currentSpecReport.ReportEntries) + return report +} + +// Only valid in the preview context. In general suite.report only includes +// the specs run by _this_ node - it is only at the end of the suite that +// the parallel reports are aggregated. However in the preview context we run +// in series and +func (suite *Suite) GetPreviewReport() types.Report { + suite.selectiveLock.Lock() + defer suite.selectiveLock.Unlock() + return suite.report +} + +func (suite *Suite) AddReportEntry(entry ReportEntry) error { + if suite.phase != PhaseRun { + return types.GinkgoErrors.AddReportEntryNotDuringRunPhase(entry.Location) + } + entry.TimelineLocation = suite.generateTimelineLocation() + entry.Time = entry.TimelineLocation.Time + suite.selectiveLock.Lock() + suite.currentSpecReport.ReportEntries = append(suite.currentSpecReport.ReportEntries, entry) + suite.selectiveLock.Unlock() + suite.reporter.EmitReportEntry(entry) + return nil +} + +func (suite *Suite) generateProgressReport(fullReport bool) types.ProgressReport { + timelineLocation := suite.generateTimelineLocation() + suite.selectiveLock.Lock() + defer suite.selectiveLock.Unlock() + + deadline, cancel := context.WithTimeout(context.Background(), ProgressReporterDeadline) + defer cancel() + var additionalReports []string + if suite.currentSpecContext != nil { + additionalReports = append(additionalReports, suite.currentSpecContext.QueryProgressReporters(deadline, suite.failer)...) + } + additionalReports = append(additionalReports, suite.QueryProgressReporters(deadline, suite.failer)...) + gwOutput := suite.currentSpecReport.CapturedGinkgoWriterOutput + string(suite.writer.Bytes()) + pr, err := NewProgressReport(suite.isRunningInParallel(), suite.currentSpecReport, suite.currentNode, suite.currentNodeStartTime, suite.currentByStep, gwOutput, timelineLocation, additionalReports, suite.config.SourceRoots, fullReport) + + if err != nil { + fmt.Printf("{{red}}Failed to generate progress report:{{/}}\n%s\n", err.Error()) + } + return pr +} + +func (suite *Suite) handleProgressSignal() { + report := suite.generateProgressReport(false) + report.Message = "{{bold}}You've requested a progress report:{{/}}" + suite.emitProgressReport(report) +} + +func (suite *Suite) emitProgressReport(report types.ProgressReport) { + suite.selectiveLock.Lock() + suite.currentSpecReport.ProgressReports = append(suite.currentSpecReport.ProgressReports, report.WithoutCapturedGinkgoWriterOutput()) + suite.selectiveLock.Unlock() + + suite.reporter.EmitProgressReport(report) + if suite.isRunningInParallel() { + err := suite.client.PostEmitProgressReport(report) + if err != nil { + fmt.Println(err.Error()) + } + } +} + +func (suite *Suite) isRunningInParallel() bool { + return suite.config.ParallelTotal > 1 +} + +func (suite *Suite) processCurrentSpecReport() { + suite.reporter.DidRun(suite.currentSpecReport) + if suite.isRunningInParallel() { + suite.client.PostDidRun(suite.currentSpecReport) + } + suite.report.SpecReports = append(suite.report.SpecReports, suite.currentSpecReport) + + if suite.currentSpecReport.State.Is(types.SpecStateFailureStates) { + suite.report.SuiteSucceeded = false + if suite.config.FailFast || suite.currentSpecReport.State.Is(types.SpecStateAborted) { + suite.skipAll = true + if suite.isRunningInParallel() { + suite.client.PostAbort() + } + } + } +} + +func (suite *Suite) runSpecs(description string, suiteLabels Labels, suitePath string, hasProgrammaticFocus bool, specs Specs) bool { + numSpecsThatWillBeRun := specs.CountWithoutSkip() + + suite.report = types.Report{ + SuitePath: suitePath, + SuiteDescription: description, + SuiteLabels: suiteLabels, + SuiteConfig: suite.config, + SuiteHasProgrammaticFocus: hasProgrammaticFocus, + PreRunStats: types.PreRunStats{ + TotalSpecs: len(specs), + SpecsThatWillRun: numSpecsThatWillBeRun, + }, + StartTime: time.Now(), + } + + suite.reporter.SuiteWillBegin(suite.report) + if suite.isRunningInParallel() { + suite.client.PostSuiteWillBegin(suite.report) + } + + suite.report.SuiteSucceeded = true + + suite.runReportSuiteNodesIfNeedBe(types.NodeTypeReportBeforeSuite) + + ranBeforeSuite := suite.report.SuiteSucceeded + if suite.report.SuiteSucceeded { + suite.runBeforeSuite(numSpecsThatWillBeRun) + } + + if suite.report.SuiteSucceeded { + groupedSpecIndices, serialGroupedSpecIndices := OrderSpecs(specs, suite.config) + nextIndex := MakeIncrementingIndexCounter() + if suite.isRunningInParallel() { + nextIndex = suite.client.FetchNextCounter + } + + for { + groupedSpecIdx, err := nextIndex() + if err != nil { + suite.report.SpecialSuiteFailureReasons = append(suite.report.SpecialSuiteFailureReasons, fmt.Sprintf("Failed to iterate over specs:\n%s", err.Error())) + suite.report.SuiteSucceeded = false + break + } + + if groupedSpecIdx >= len(groupedSpecIndices) { + if suite.config.ParallelProcess == 1 && len(serialGroupedSpecIndices) > 0 { + groupedSpecIndices, serialGroupedSpecIndices, nextIndex = serialGroupedSpecIndices, GroupedSpecIndices{}, MakeIncrementingIndexCounter() + suite.client.BlockUntilNonprimaryProcsHaveFinished() + continue + } + break + } + + // the complexity for running groups of specs is very high because of Ordered containers and FlakeAttempts + // we encapsulate that complexity in the notion of a Group that can run + // Group is really just an extension of suite so it gets passed a suite and has access to all its internals + // Note that group is stateful and intended for single use! + newGroup(suite).run(specs.AtIndices(groupedSpecIndices[groupedSpecIdx])) + } + + if suite.config.FailOnPending && specs.HasAnySpecsMarkedPending() { + suite.report.SpecialSuiteFailureReasons = append(suite.report.SpecialSuiteFailureReasons, "Detected pending specs and --fail-on-pending is set") + suite.report.SuiteSucceeded = false + } + + if suite.config.FailOnEmpty && specs.CountWithoutSkip() == 0 { + suite.report.SpecialSuiteFailureReasons = append(suite.report.SpecialSuiteFailureReasons, "Detected no specs ran and --fail-on-empty is set") + suite.report.SuiteSucceeded = false + } + } + + if ranBeforeSuite { + suite.runAfterSuiteCleanup(numSpecsThatWillBeRun) + } + + interruptStatus := suite.interruptHandler.Status() + if interruptStatus.Interrupted() { + suite.report.SpecialSuiteFailureReasons = append(suite.report.SpecialSuiteFailureReasons, interruptStatus.Cause.String()) + suite.report.SuiteSucceeded = false + } + suite.report.EndTime = time.Now() + suite.report.RunTime = suite.report.EndTime.Sub(suite.report.StartTime) + if !suite.deadline.IsZero() && suite.report.EndTime.After(suite.deadline) { + suite.report.SpecialSuiteFailureReasons = append(suite.report.SpecialSuiteFailureReasons, "Suite Timeout Elapsed") + suite.report.SuiteSucceeded = false + } + + suite.runReportSuiteNodesIfNeedBe(types.NodeTypeReportAfterSuite) + suite.reporter.SuiteDidEnd(suite.report) + if suite.isRunningInParallel() { + suite.client.PostSuiteDidEnd(suite.report) + } + + return suite.report.SuiteSucceeded +} + +func (suite *Suite) runBeforeSuite(numSpecsThatWillBeRun int) { + beforeSuiteNode := suite.suiteNodes.FirstNodeWithType(types.NodeTypeBeforeSuite | types.NodeTypeSynchronizedBeforeSuite) + if !beforeSuiteNode.IsZero() && numSpecsThatWillBeRun > 0 { + suite.selectiveLock.Lock() + suite.currentSpecReport = types.SpecReport{ + LeafNodeType: beforeSuiteNode.NodeType, + LeafNodeLocation: beforeSuiteNode.CodeLocation, + ParallelProcess: suite.config.ParallelProcess, + RunningInParallel: suite.isRunningInParallel(), + } + suite.selectiveLock.Unlock() + + suite.reporter.WillRun(suite.currentSpecReport) + suite.runSuiteNode(beforeSuiteNode) + if suite.currentSpecReport.State.Is(types.SpecStateSkipped) { + suite.report.SpecialSuiteFailureReasons = append(suite.report.SpecialSuiteFailureReasons, "Suite skipped in BeforeSuite") + suite.skipAll = true + } + suite.processCurrentSpecReport() + } +} + +func (suite *Suite) runAfterSuiteCleanup(numSpecsThatWillBeRun int) { + afterSuiteNode := suite.suiteNodes.FirstNodeWithType(types.NodeTypeAfterSuite | types.NodeTypeSynchronizedAfterSuite) + if !afterSuiteNode.IsZero() && numSpecsThatWillBeRun > 0 { + suite.selectiveLock.Lock() + suite.currentSpecReport = types.SpecReport{ + LeafNodeType: afterSuiteNode.NodeType, + LeafNodeLocation: afterSuiteNode.CodeLocation, + ParallelProcess: suite.config.ParallelProcess, + RunningInParallel: suite.isRunningInParallel(), + } + suite.selectiveLock.Unlock() + + suite.reporter.WillRun(suite.currentSpecReport) + suite.runSuiteNode(afterSuiteNode) + suite.processCurrentSpecReport() + } + + afterSuiteCleanup := suite.cleanupNodes.WithType(types.NodeTypeCleanupAfterSuite).Reverse() + if len(afterSuiteCleanup) > 0 { + for _, cleanupNode := range afterSuiteCleanup { + suite.selectiveLock.Lock() + suite.currentSpecReport = types.SpecReport{ + LeafNodeType: cleanupNode.NodeType, + LeafNodeLocation: cleanupNode.CodeLocation, + ParallelProcess: suite.config.ParallelProcess, + RunningInParallel: suite.isRunningInParallel(), + } + suite.selectiveLock.Unlock() + + suite.reporter.WillRun(suite.currentSpecReport) + suite.runSuiteNode(cleanupNode) + suite.processCurrentSpecReport() + } + } +} + +func (suite *Suite) reportEach(spec Spec, nodeType types.NodeType) { + nodes := spec.Nodes.WithType(nodeType) + if nodeType == types.NodeTypeReportAfterEach { + nodes = nodes.SortedByDescendingNestingLevel() + } + if nodeType == types.NodeTypeReportBeforeEach { + nodes = nodes.SortedByAscendingNestingLevel() + } + if len(nodes) == 0 { + return + } + + for i := range nodes { + suite.writer.Truncate() + suite.outputInterceptor.StartInterceptingOutput() + report := suite.currentSpecReport + nodes[i].Body = func(ctx SpecContext) { + nodes[i].ReportEachBody(ctx, report) + } + state, failure := suite.runNode(nodes[i], time.Time{}, spec.Nodes.BestTextFor(nodes[i])) + + // If the spec is not in a failure state (i.e. it's Passed/Skipped/Pending) and the reporter has failed, override the state. + // Also, if the reporter is every aborted - always override the state to propagate the abort + if (!suite.currentSpecReport.State.Is(types.SpecStateFailureStates) && state.Is(types.SpecStateFailureStates)) || state.Is(types.SpecStateAborted) { + suite.currentSpecReport.State = state + suite.currentSpecReport.Failure = failure + } + suite.currentSpecReport.CapturedGinkgoWriterOutput += string(suite.writer.Bytes()) + suite.currentSpecReport.CapturedStdOutErr += suite.outputInterceptor.StopInterceptingAndReturnOutput() + } +} + +func (suite *Suite) runSuiteNode(node Node) { + if suite.config.DryRun { + suite.currentSpecReport.State = types.SpecStatePassed + return + } + + suite.writer.Truncate() + suite.outputInterceptor.StartInterceptingOutput() + suite.currentSpecReport.StartTime = time.Now() + + var err error + switch node.NodeType { + case types.NodeTypeBeforeSuite, types.NodeTypeAfterSuite: + suite.currentSpecReport.State, suite.currentSpecReport.Failure = suite.runNode(node, time.Time{}, "") + case types.NodeTypeCleanupAfterSuite: + if suite.config.ParallelTotal > 1 && suite.config.ParallelProcess == 1 { + err = suite.client.BlockUntilNonprimaryProcsHaveFinished() + } + if err == nil { + suite.currentSpecReport.State, suite.currentSpecReport.Failure = suite.runNode(node, time.Time{}, "") + } + case types.NodeTypeSynchronizedBeforeSuite: + var data []byte + var runAllProcs bool + if suite.config.ParallelProcess == 1 { + if suite.config.ParallelTotal > 1 { + suite.outputInterceptor.StopInterceptingAndReturnOutput() + suite.outputInterceptor.StartInterceptingOutputAndForwardTo(suite.client) + } + node.Body = func(c SpecContext) { data = node.SynchronizedBeforeSuiteProc1Body(c) } + node.HasContext = node.SynchronizedBeforeSuiteProc1BodyHasContext + suite.currentSpecReport.State, suite.currentSpecReport.Failure = suite.runNode(node, time.Time{}, "") + if suite.config.ParallelTotal > 1 { + suite.currentSpecReport.CapturedStdOutErr += suite.outputInterceptor.StopInterceptingAndReturnOutput() + suite.outputInterceptor.StartInterceptingOutput() + if suite.currentSpecReport.State.Is(types.SpecStatePassed) { + err = suite.client.PostSynchronizedBeforeSuiteCompleted(types.SpecStatePassed, data) + } else { + err = suite.client.PostSynchronizedBeforeSuiteCompleted(suite.currentSpecReport.State, nil) + } + } + runAllProcs = suite.currentSpecReport.State.Is(types.SpecStatePassed) && err == nil + } else { + var proc1State types.SpecState + proc1State, data, err = suite.client.BlockUntilSynchronizedBeforeSuiteData() + switch proc1State { + case types.SpecStatePassed: + runAllProcs = true + case types.SpecStateFailed, types.SpecStatePanicked, types.SpecStateTimedout: + err = types.GinkgoErrors.SynchronizedBeforeSuiteFailedOnProc1() + case types.SpecStateInterrupted, types.SpecStateAborted, types.SpecStateSkipped: + suite.currentSpecReport.State = proc1State + } + } + if runAllProcs { + node.Body = func(c SpecContext) { node.SynchronizedBeforeSuiteAllProcsBody(c, data) } + node.HasContext = node.SynchronizedBeforeSuiteAllProcsBodyHasContext + suite.currentSpecReport.State, suite.currentSpecReport.Failure = suite.runNode(node, time.Time{}, "") + } + case types.NodeTypeSynchronizedAfterSuite: + node.Body = node.SynchronizedAfterSuiteAllProcsBody + node.HasContext = node.SynchronizedAfterSuiteAllProcsBodyHasContext + suite.currentSpecReport.State, suite.currentSpecReport.Failure = suite.runNode(node, time.Time{}, "") + if suite.config.ParallelProcess == 1 { + if suite.config.ParallelTotal > 1 { + err = suite.client.BlockUntilNonprimaryProcsHaveFinished() + } + if err == nil { + if suite.config.ParallelTotal > 1 { + suite.currentSpecReport.CapturedStdOutErr += suite.outputInterceptor.StopInterceptingAndReturnOutput() + suite.outputInterceptor.StartInterceptingOutputAndForwardTo(suite.client) + } + + node.Body = node.SynchronizedAfterSuiteProc1Body + node.HasContext = node.SynchronizedAfterSuiteProc1BodyHasContext + state, failure := suite.runNode(node, time.Time{}, "") + if suite.currentSpecReport.State.Is(types.SpecStatePassed) { + suite.currentSpecReport.State, suite.currentSpecReport.Failure = state, failure + } + } + } + } + + if err != nil && !suite.currentSpecReport.State.Is(types.SpecStateFailureStates) { + suite.currentSpecReport.State, suite.currentSpecReport.Failure = types.SpecStateFailed, suite.failureForLeafNodeWithMessage(node, err.Error()) + suite.reporter.EmitFailure(suite.currentSpecReport.State, suite.currentSpecReport.Failure) + } + + suite.currentSpecReport.EndTime = time.Now() + suite.currentSpecReport.RunTime = suite.currentSpecReport.EndTime.Sub(suite.currentSpecReport.StartTime) + suite.currentSpecReport.CapturedGinkgoWriterOutput = string(suite.writer.Bytes()) + suite.currentSpecReport.CapturedStdOutErr += suite.outputInterceptor.StopInterceptingAndReturnOutput() +} + +func (suite *Suite) runReportSuiteNodesIfNeedBe(nodeType types.NodeType) { + nodes := suite.suiteNodes.WithType(nodeType) + // only run ReportAfterSuite on proc 1 + if nodeType.Is(types.NodeTypeReportAfterSuite) && suite.config.ParallelProcess != 1 { + return + } + // if we're running ReportBeforeSuite on proc > 1 - we should wait until proc 1 has completed + if nodeType.Is(types.NodeTypeReportBeforeSuite) && suite.config.ParallelProcess != 1 && len(nodes) > 0 { + state, err := suite.client.BlockUntilReportBeforeSuiteCompleted() + if err != nil || state.Is(types.SpecStateFailed) { + suite.report.SuiteSucceeded = false + } + return + } + + for _, node := range nodes { + suite.selectiveLock.Lock() + suite.currentSpecReport = types.SpecReport{ + LeafNodeType: node.NodeType, + LeafNodeLocation: node.CodeLocation, + LeafNodeText: node.Text, + ParallelProcess: suite.config.ParallelProcess, + RunningInParallel: suite.isRunningInParallel(), + } + suite.selectiveLock.Unlock() + + suite.reporter.WillRun(suite.currentSpecReport) + suite.runReportSuiteNode(node, suite.report) + suite.processCurrentSpecReport() + } + + // if we're running ReportBeforeSuite and we're running in parallel - we shuld tell the other procs that we're done + if nodeType.Is(types.NodeTypeReportBeforeSuite) && suite.isRunningInParallel() && len(nodes) > 0 { + if suite.report.SuiteSucceeded { + suite.client.PostReportBeforeSuiteCompleted(types.SpecStatePassed) + } else { + suite.client.PostReportBeforeSuiteCompleted(types.SpecStateFailed) + } + } +} + +func (suite *Suite) runReportSuiteNode(node Node, report types.Report) { + suite.writer.Truncate() + suite.outputInterceptor.StartInterceptingOutput() + suite.currentSpecReport.StartTime = time.Now() + + // if we're running a ReportAfterSuite in parallel (on proc 1) we (a) wait until other procs have exited and + // (b) always fetch the latest report as prior ReportAfterSuites will contribute to it + if node.NodeType.Is(types.NodeTypeReportAfterSuite) && suite.isRunningInParallel() { + aggregatedReport, err := suite.client.BlockUntilAggregatedNonprimaryProcsReport() + if err != nil { + suite.currentSpecReport.State, suite.currentSpecReport.Failure = types.SpecStateFailed, suite.failureForLeafNodeWithMessage(node, err.Error()) + suite.reporter.EmitFailure(suite.currentSpecReport.State, suite.currentSpecReport.Failure) + return + } + report = report.Add(aggregatedReport) + } + + node.Body = func(ctx SpecContext) { node.ReportSuiteBody(ctx, report) } + suite.currentSpecReport.State, suite.currentSpecReport.Failure = suite.runNode(node, time.Time{}, "") + + suite.currentSpecReport.EndTime = time.Now() + suite.currentSpecReport.RunTime = suite.currentSpecReport.EndTime.Sub(suite.currentSpecReport.StartTime) + suite.currentSpecReport.CapturedGinkgoWriterOutput = string(suite.writer.Bytes()) + suite.currentSpecReport.CapturedStdOutErr = suite.outputInterceptor.StopInterceptingAndReturnOutput() +} + +func (suite *Suite) runNode(node Node, specDeadline time.Time, text string) (types.SpecState, types.Failure) { + if node.NodeType.Is(types.NodeTypeCleanupAfterEach | types.NodeTypeCleanupAfterAll | types.NodeTypeCleanupAfterSuite) { + suite.cleanupNodes = suite.cleanupNodes.WithoutNode(node) + } + + interruptStatus := suite.interruptHandler.Status() + if interruptStatus.Level == interrupt_handler.InterruptLevelBailOut { + return types.SpecStateSkipped, types.Failure{} + } + if interruptStatus.Level == interrupt_handler.InterruptLevelReportOnly && !node.NodeType.Is(types.NodeTypesAllowedDuringReportInterrupt) { + return types.SpecStateSkipped, types.Failure{} + } + if interruptStatus.Level == interrupt_handler.InterruptLevelCleanupAndReport && !node.NodeType.Is(types.NodeTypesAllowedDuringReportInterrupt|types.NodeTypesAllowedDuringCleanupInterrupt) { + return types.SpecStateSkipped, types.Failure{} + } + + suite.selectiveLock.Lock() + suite.currentNode = node + suite.currentNodeStartTime = time.Now() + suite.currentByStep = types.SpecEvent{} + suite.selectiveLock.Unlock() + defer func() { + suite.selectiveLock.Lock() + suite.currentNode = Node{} + suite.currentNodeStartTime = time.Time{} + suite.selectiveLock.Unlock() + }() + + if text == "" { + text = "TOP-LEVEL" + } + event := suite.handleSpecEvent(types.SpecEvent{ + SpecEventType: types.SpecEventNodeStart, + NodeType: node.NodeType, + Message: text, + CodeLocation: node.CodeLocation, + }) + defer func() { + suite.handleSpecEventEnd(types.SpecEventNodeEnd, event) + }() + + var failure types.Failure + failure.FailureNodeType, failure.FailureNodeLocation = node.NodeType, node.CodeLocation + if node.NodeType.Is(types.NodeTypeIt) || node.NodeType.Is(types.NodeTypesForSuiteLevelNodes) { + failure.FailureNodeContext = types.FailureNodeIsLeafNode + } else if node.NestingLevel <= 0 { + failure.FailureNodeContext = types.FailureNodeAtTopLevel + } else { + failure.FailureNodeContext, failure.FailureNodeContainerIndex = types.FailureNodeInContainer, node.NestingLevel-1 + } + var outcome types.SpecState + + gracePeriod := suite.config.GracePeriod + if node.GracePeriod >= 0 { + gracePeriod = node.GracePeriod + } + + now := time.Now() + deadline := suite.deadline + timeoutInPlay := "suite" + if deadline.IsZero() || (!specDeadline.IsZero() && specDeadline.Before(deadline)) { + deadline = specDeadline + timeoutInPlay = "spec" + } + if node.NodeTimeout > 0 && (deadline.IsZero() || deadline.Sub(now) > node.NodeTimeout) { + deadline = now.Add(node.NodeTimeout) + timeoutInPlay = "node" + } + if (!deadline.IsZero() && deadline.Before(now)) || interruptStatus.Interrupted() { + // we're out of time already. let's wait for a NodeTimeout if we have it, or GracePeriod if we don't + if node.NodeTimeout > 0 { + deadline = now.Add(node.NodeTimeout) + timeoutInPlay = "node" + } else { + deadline = now.Add(gracePeriod) + timeoutInPlay = "grace period" + } + } + + if !node.HasContext { + // this maps onto the pre-context behavior: + // - an interrupted node exits immediately. with this, context-less nodes that are in a spec with a SpecTimeout and/or are interrupted by other means will simply exit immediately after the timeout/interrupt + // - clean up nodes have up to GracePeriod (formerly hard-coded at 30s) to complete before they are interrupted + gracePeriod = 0 + } + + sc := NewSpecContext(suite) + defer sc.cancel(fmt.Errorf("spec has finished")) + + suite.selectiveLock.Lock() + suite.currentSpecContext = sc + suite.selectiveLock.Unlock() + + var deadlineChannel <-chan time.Time + if !deadline.IsZero() { + deadlineChannel = time.After(deadline.Sub(now)) + } + var gracePeriodChannel <-chan time.Time + + outcomeC := make(chan types.SpecState) + failureC := make(chan types.Failure) + + go func() { + finished := false + defer func() { + if e := recover(); e != nil || !finished { + suite.failer.Panic(types.NewCodeLocationWithStackTrace(2), e) + } + + outcomeFromRun, failureFromRun := suite.failer.Drain() + failureFromRun.TimelineLocation = suite.generateTimelineLocation() + outcomeC <- outcomeFromRun + failureC <- failureFromRun + }() + + node.Body(sc) + finished = true + }() + + // progress polling timer and channel + var emitProgressNow <-chan time.Time + var progressPoller *time.Timer + var pollProgressAfter, pollProgressInterval = suite.config.PollProgressAfter, suite.config.PollProgressInterval + if node.PollProgressAfter >= 0 { + pollProgressAfter = node.PollProgressAfter + } + if node.PollProgressInterval >= 0 { + pollProgressInterval = node.PollProgressInterval + } + if pollProgressAfter > 0 { + progressPoller = time.NewTimer(pollProgressAfter) + emitProgressNow = progressPoller.C + defer progressPoller.Stop() + } + + // now we wait for an outcome, an interrupt, a timeout, or a progress poll + for { + select { + case outcomeFromRun := <-outcomeC: + failureFromRun := <-failureC + if outcome.Is(types.SpecStateInterrupted | types.SpecStateTimedout) { + // we've already been interrupted/timed out. we just managed to actually exit + // before the grace period elapsed + // if we have a failure message we attach it as an additional failure + if outcomeFromRun != types.SpecStatePassed { + additionalFailure := types.AdditionalFailure{ + State: outcomeFromRun, + Failure: failure, // we make a copy - this will include all the configuration set up above... + } + // ...and then we update the failure with the details from failureFromRun + additionalFailure.Failure.Location, additionalFailure.Failure.ForwardedPanic, additionalFailure.Failure.TimelineLocation = failureFromRun.Location, failureFromRun.ForwardedPanic, failureFromRun.TimelineLocation + additionalFailure.Failure.ProgressReport = types.ProgressReport{} + if outcome == types.SpecStateTimedout { + additionalFailure.Failure.Message = fmt.Sprintf("A %s timeout occurred and then the following failure was recorded in the timedout node before it exited:\n%s", timeoutInPlay, failureFromRun.Message) + } else { + additionalFailure.Failure.Message = fmt.Sprintf("An interrupt occurred and then the following failure was recorded in the interrupted node before it exited:\n%s", failureFromRun.Message) + } + suite.reporter.EmitFailure(additionalFailure.State, additionalFailure.Failure) + failure.AdditionalFailure = &additionalFailure + } + return outcome, failure + } + if outcomeFromRun.Is(types.SpecStatePassed) { + return outcomeFromRun, types.Failure{} + } else { + failure.Message, failure.Location, failure.ForwardedPanic, failure.TimelineLocation = failureFromRun.Message, failureFromRun.Location, failureFromRun.ForwardedPanic, failureFromRun.TimelineLocation + suite.reporter.EmitFailure(outcomeFromRun, failure) + return outcomeFromRun, failure + } + case <-gracePeriodChannel: + if node.HasContext && outcome.Is(types.SpecStateTimedout) { + report := suite.generateProgressReport(false) + report.Message = "{{bold}}{{orange}}A running node failed to exit in time{{/}}\nGinkgo is moving on but a node has timed out and failed to exit before its grace period elapsed. The node has now leaked and is running in the background.\nHere's a current progress report:" + suite.emitProgressReport(report) + } + return outcome, failure + case <-deadlineChannel: + // we're out of time - the outcome is a timeout and we capture the failure and progress report + outcome = types.SpecStateTimedout + failure.Message, failure.Location, failure.TimelineLocation = fmt.Sprintf("A %s timeout occurred", timeoutInPlay), node.CodeLocation, suite.generateTimelineLocation() + failure.ProgressReport = suite.generateProgressReport(false).WithoutCapturedGinkgoWriterOutput() + failure.ProgressReport.Message = fmt.Sprintf("{{bold}}This is the Progress Report generated when the %s timeout occurred:{{/}}", timeoutInPlay) + deadlineChannel = nil + suite.reporter.EmitFailure(outcome, failure) + + // tell the spec to stop. it's important we generate the progress report first to make sure we capture where + // the spec is actually stuck + sc.cancel(fmt.Errorf("%s timeout occurred", timeoutInPlay)) + // and now we wait for the grace period + gracePeriodChannel = time.After(gracePeriod) + case <-interruptStatus.Channel: + interruptStatus = suite.interruptHandler.Status() + // ignore interruption from other process if we are cleaning up or reporting + if interruptStatus.Cause == interrupt_handler.InterruptCauseAbortByOtherProcess && + node.NodeType.Is(types.NodeTypesAllowedDuringReportInterrupt|types.NodeTypesAllowedDuringCleanupInterrupt) { + continue + } + + deadlineChannel = nil // don't worry about deadlines, time's up now + + failureTimelineLocation := suite.generateTimelineLocation() + progressReport := suite.generateProgressReport(true) + + if outcome == types.SpecStateInvalid { + outcome = types.SpecStateInterrupted + failure.Message, failure.Location, failure.TimelineLocation = interruptStatus.Message(), node.CodeLocation, failureTimelineLocation + if interruptStatus.ShouldIncludeProgressReport() { + failure.ProgressReport = progressReport.WithoutCapturedGinkgoWriterOutput() + failure.ProgressReport.Message = "{{bold}}This is the Progress Report generated when the interrupt was received:{{/}}" + } + suite.reporter.EmitFailure(outcome, failure) + } + + progressReport = progressReport.WithoutOtherGoroutines() + sc.cancel(fmt.Errorf(interruptStatus.Message())) + + if interruptStatus.Level == interrupt_handler.InterruptLevelBailOut { + if interruptStatus.ShouldIncludeProgressReport() { + progressReport.Message = fmt.Sprintf("{{bold}}{{orange}}%s{{/}}\n{{bold}}{{red}}Final interrupt received{{/}}; Ginkgo will not run any cleanup or reporting nodes and will terminate as soon as possible.\nHere's a current progress report:", interruptStatus.Message()) + suite.emitProgressReport(progressReport) + } + return outcome, failure + } + if interruptStatus.ShouldIncludeProgressReport() { + if interruptStatus.Level == interrupt_handler.InterruptLevelCleanupAndReport { + progressReport.Message = fmt.Sprintf("{{bold}}{{orange}}%s{{/}}\nFirst interrupt received; Ginkgo will run any cleanup and reporting nodes but will skip all remaining specs. {{bold}}Interrupt again to skip cleanup{{/}}.\nHere's a current progress report:", interruptStatus.Message()) + } else if interruptStatus.Level == interrupt_handler.InterruptLevelReportOnly { + progressReport.Message = fmt.Sprintf("{{bold}}{{orange}}%s{{/}}\nSecond interrupt received; Ginkgo will run any reporting nodes but will skip all remaining specs and cleanup nodes. {{bold}}Interrupt again to bail immediately{{/}}.\nHere's a current progress report:", interruptStatus.Message()) + } + suite.emitProgressReport(progressReport) + } + + if gracePeriodChannel == nil { + // we haven't given grace yet... so let's + gracePeriodChannel = time.After(gracePeriod) + } else { + // we've already given grace. time's up. now. + return outcome, failure + } + case <-emitProgressNow: + report := suite.generateProgressReport(false) + report.Message = "{{bold}}Automatically polling progress:{{/}}" + suite.emitProgressReport(report) + if pollProgressInterval > 0 { + progressPoller.Reset(pollProgressInterval) + } + } + } +} + +// TODO: search for usages and consider if reporter.EmitFailure() is necessary +func (suite *Suite) failureForLeafNodeWithMessage(node Node, message string) types.Failure { + return types.Failure{ + Message: message, + Location: node.CodeLocation, + TimelineLocation: suite.generateTimelineLocation(), + FailureNodeContext: types.FailureNodeIsLeafNode, + FailureNodeType: node.NodeType, + FailureNodeLocation: node.CodeLocation, + } +} + +func max(a, b int) int { + if a > b { + return a + } + return b +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/internal/testingtproxy/testing_t_proxy.go b/tests/vendor/github.com/onsi/ginkgo/v2/internal/testingtproxy/testing_t_proxy.go new file mode 100644 index 000000000..b4ecc7cb8 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/internal/testingtproxy/testing_t_proxy.go @@ -0,0 +1,231 @@ +package testingtproxy + +import ( + "context" + "fmt" + "io" + "os" + + "github.com/onsi/ginkgo/v2/formatter" + "github.com/onsi/ginkgo/v2/internal" + "github.com/onsi/ginkgo/v2/reporters" + "github.com/onsi/ginkgo/v2/types" +) + +type failFunc func(message string, callerSkip ...int) +type skipFunc func(message string, callerSkip ...int) +type cleanupFunc func(args ...any) +type reportFunc func() types.SpecReport +type addReportEntryFunc func(names string, args ...any) +type ginkgoWriterInterface interface { + io.Writer + + Print(a ...any) + Printf(format string, a ...any) + Println(a ...any) +} +type ginkgoRecoverFunc func() +type attachProgressReporterFunc func(func() string) func() + +func New(writer ginkgoWriterInterface, fail failFunc, skip skipFunc, cleanup cleanupFunc, report reportFunc, addReportEntry addReportEntryFunc, ginkgoRecover ginkgoRecoverFunc, attachProgressReporter attachProgressReporterFunc, randomSeed int64, parallelProcess int, parallelTotal int, noColor bool, offset int) *ginkgoTestingTProxy { + return &ginkgoTestingTProxy{ + fail: fail, + offset: offset, + writer: writer, + skip: skip, + cleanup: cleanup, + report: report, + addReportEntry: addReportEntry, + ginkgoRecover: ginkgoRecover, + attachProgressReporter: attachProgressReporter, + randomSeed: randomSeed, + parallelProcess: parallelProcess, + parallelTotal: parallelTotal, + f: formatter.NewWithNoColorBool(noColor), + } +} + +type ginkgoTestingTProxy struct { + fail failFunc + skip skipFunc + cleanup cleanupFunc + report reportFunc + offset int + writer ginkgoWriterInterface + addReportEntry addReportEntryFunc + ginkgoRecover ginkgoRecoverFunc + attachProgressReporter attachProgressReporterFunc + randomSeed int64 + parallelProcess int + parallelTotal int + f formatter.Formatter +} + +// basic testing.T support + +func (t *ginkgoTestingTProxy) Cleanup(f func()) { + t.cleanup(f, internal.Offset(1)) +} + +func (t *ginkgoTestingTProxy) Setenv(key, value string) { + originalValue, exists := os.LookupEnv(key) + if exists { + t.cleanup(os.Setenv, key, originalValue, internal.Offset(1)) + } else { + t.cleanup(os.Unsetenv, key, internal.Offset(1)) + } + + err := os.Setenv(key, value) + if err != nil { + t.fail(fmt.Sprintf("Failed to set environment variable: %v", err), 1) + } +} + +func (t *ginkgoTestingTProxy) Chdir(dir string) { + currentDir, err := os.Getwd() + if err != nil { + t.fail(fmt.Sprintf("Failed to get current directory: %v", err), 1) + } + + t.cleanup(os.Chdir, currentDir, internal.Offset(1)) + + err = os.Chdir(dir) + if err != nil { + t.fail(fmt.Sprintf("Failed to change directory: %v", err), 1) + } +} + +func (t *ginkgoTestingTProxy) Context() context.Context { + ctx, cancel := context.WithCancel(context.Background()) + t.cleanup(cancel, internal.Offset(1)) + return ctx +} + +func (t *ginkgoTestingTProxy) Error(args ...any) { + t.fail(fmt.Sprintln(args...), t.offset) +} + +func (t *ginkgoTestingTProxy) Errorf(format string, args ...any) { + t.fail(fmt.Sprintf(format, args...), t.offset) +} + +func (t *ginkgoTestingTProxy) Fail() { + t.fail("failed", t.offset) +} + +func (t *ginkgoTestingTProxy) FailNow() { + t.fail("failed", t.offset) +} + +func (t *ginkgoTestingTProxy) Failed() bool { + return t.report().Failed() +} + +func (t *ginkgoTestingTProxy) Fatal(args ...any) { + t.fail(fmt.Sprintln(args...), t.offset) +} + +func (t *ginkgoTestingTProxy) Fatalf(format string, args ...any) { + t.fail(fmt.Sprintf(format, args...), t.offset) +} + +func (t *ginkgoTestingTProxy) Helper() { + types.MarkAsHelper(1) +} + +func (t *ginkgoTestingTProxy) Log(args ...any) { + fmt.Fprintln(t.writer, args...) +} + +func (t *ginkgoTestingTProxy) Logf(format string, args ...any) { + t.Log(fmt.Sprintf(format, args...)) +} + +func (t *ginkgoTestingTProxy) Name() string { + return t.report().FullText() +} + +func (t *ginkgoTestingTProxy) Parallel() { + // No-op +} + +func (t *ginkgoTestingTProxy) Skip(args ...any) { + t.skip(fmt.Sprintln(args...), t.offset) +} + +func (t *ginkgoTestingTProxy) SkipNow() { + t.skip("skip", t.offset) +} + +func (t *ginkgoTestingTProxy) Skipf(format string, args ...any) { + t.skip(fmt.Sprintf(format, args...), t.offset) +} + +func (t *ginkgoTestingTProxy) Skipped() bool { + return t.report().State.Is(types.SpecStateSkipped) +} + +func (t *ginkgoTestingTProxy) TempDir() string { + tmpDir, err := os.MkdirTemp("", "ginkgo") + if err != nil { + t.fail(fmt.Sprintf("Failed to create temporary directory: %v", err), 1) + return "" + } + t.cleanup(os.RemoveAll, tmpDir) + + return tmpDir +} + +// FullGinkgoTInterface +func (t *ginkgoTestingTProxy) AddReportEntryVisibilityAlways(name string, args ...any) { + finalArgs := []any{internal.Offset(1), types.ReportEntryVisibilityAlways} + t.addReportEntry(name, append(finalArgs, args...)...) +} +func (t *ginkgoTestingTProxy) AddReportEntryVisibilityFailureOrVerbose(name string, args ...any) { + finalArgs := []any{internal.Offset(1), types.ReportEntryVisibilityFailureOrVerbose} + t.addReportEntry(name, append(finalArgs, args...)...) +} +func (t *ginkgoTestingTProxy) AddReportEntryVisibilityNever(name string, args ...any) { + finalArgs := []any{internal.Offset(1), types.ReportEntryVisibilityNever} + t.addReportEntry(name, append(finalArgs, args...)...) +} +func (t *ginkgoTestingTProxy) Print(a ...any) { + t.writer.Print(a...) +} +func (t *ginkgoTestingTProxy) Printf(format string, a ...any) { + t.writer.Printf(format, a...) +} +func (t *ginkgoTestingTProxy) Println(a ...any) { + t.writer.Println(a...) +} +func (t *ginkgoTestingTProxy) F(format string, args ...any) string { + return t.f.F(format, args...) +} +func (t *ginkgoTestingTProxy) Fi(indentation uint, format string, args ...any) string { + return t.f.Fi(indentation, format, args...) +} +func (t *ginkgoTestingTProxy) Fiw(indentation uint, maxWidth uint, format string, args ...any) string { + return t.f.Fiw(indentation, maxWidth, format, args...) +} +func (t *ginkgoTestingTProxy) RenderTimeline() string { + return reporters.RenderTimeline(t.report(), false) +} +func (t *ginkgoTestingTProxy) GinkgoRecover() { + t.ginkgoRecover() +} +func (t *ginkgoTestingTProxy) DeferCleanup(args ...any) { + finalArgs := []any{internal.Offset(1)} + t.cleanup(append(finalArgs, args...)...) +} +func (t *ginkgoTestingTProxy) RandomSeed() int64 { + return t.randomSeed +} +func (t *ginkgoTestingTProxy) ParallelProcess() int { + return t.parallelProcess +} +func (t *ginkgoTestingTProxy) ParallelTotal() int { + return t.parallelTotal +} +func (t *ginkgoTestingTProxy) AttachProgressReporter(f func() string) func() { + return t.attachProgressReporter(f) +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/internal/tree.go b/tests/vendor/github.com/onsi/ginkgo/v2/internal/tree.go new file mode 100644 index 000000000..f9d1eeb8f --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/internal/tree.go @@ -0,0 +1,77 @@ +package internal + +import "github.com/onsi/ginkgo/v2/types" + +type TreeNode struct { + Node Node + Parent *TreeNode + Children TreeNodes +} + +func (tn *TreeNode) AppendChild(child *TreeNode) { + tn.Children = append(tn.Children, child) + child.Parent = tn +} + +func (tn *TreeNode) AncestorNodeChain() Nodes { + if tn.Parent == nil || tn.Parent.Node.IsZero() { + return Nodes{tn.Node} + } + return append(tn.Parent.AncestorNodeChain(), tn.Node) +} + +type TreeNodes []*TreeNode + +func (tn TreeNodes) Nodes() Nodes { + out := make(Nodes, len(tn)) + for i := range tn { + out[i] = tn[i].Node + } + return out +} + +func (tn TreeNodes) WithID(id uint) *TreeNode { + for i := range tn { + if tn[i].Node.ID == id { + return tn[i] + } + } + + return nil +} + +func GenerateSpecsFromTreeRoot(tree *TreeNode) Specs { + var walkTree func(nestingLevel int, lNodes Nodes, rNodes Nodes, trees TreeNodes) Specs + walkTree = func(nestingLevel int, lNodes Nodes, rNodes Nodes, trees TreeNodes) Specs { + tests := Specs{} + + nodes := make(Nodes, len(trees)) + for i := range trees { + nodes[i] = trees[i].Node + nodes[i].NestingLevel = nestingLevel + } + + for i := range nodes { + if !nodes[i].NodeType.Is(types.NodeTypesForContainerAndIt) { + continue + } + leftNodes, rightNodes := nodes.SplitAround(nodes[i]) + leftNodes = leftNodes.WithoutType(types.NodeTypesForContainerAndIt) + rightNodes = rightNodes.WithoutType(types.NodeTypesForContainerAndIt) + + leftNodes = lNodes.CopyAppend(leftNodes...) + rightNodes = rightNodes.CopyAppend(rNodes...) + + if nodes[i].NodeType.Is(types.NodeTypeIt) { + tests = append(tests, Spec{Nodes: leftNodes.CopyAppend(nodes[i]).CopyAppend(rightNodes...)}) + } else { + treeNode := trees.WithID(nodes[i].ID) + tests = append(tests, walkTree(nestingLevel+1, leftNodes.CopyAppend(nodes[i]), rightNodes, treeNode.Children)...) + } + } + + return tests + } + + return walkTree(0, Nodes{}, Nodes{}, tree.Children) +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/internal/writer.go b/tests/vendor/github.com/onsi/ginkgo/v2/internal/writer.go new file mode 100644 index 000000000..1c4e0534e --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/internal/writer.go @@ -0,0 +1,144 @@ +package internal + +import ( + "bytes" + "fmt" + "io" + "sync" + + "github.com/go-logr/logr" + "github.com/go-logr/logr/funcr" +) + +type WriterMode uint + +const ( + WriterModeStreamAndBuffer WriterMode = iota + WriterModeBufferOnly +) + +type WriterInterface interface { + io.Writer + + Truncate() + Bytes() []byte + Len() int +} + +// Writer implements WriterInterface and GinkgoWriterInterface +type Writer struct { + buffer *bytes.Buffer + outWriter io.Writer + lock *sync.Mutex + mode WriterMode + + streamIndent []byte + indentNext bool + + teeWriters []io.Writer +} + +func NewWriter(outWriter io.Writer) *Writer { + return &Writer{ + buffer: &bytes.Buffer{}, + lock: &sync.Mutex{}, + outWriter: outWriter, + mode: WriterModeStreamAndBuffer, + streamIndent: []byte(" "), + indentNext: true, + } +} + +func (w *Writer) SetMode(mode WriterMode) { + w.lock.Lock() + defer w.lock.Unlock() + w.mode = mode +} + +func (w *Writer) Len() int { + w.lock.Lock() + defer w.lock.Unlock() + return w.buffer.Len() +} + +var newline = []byte("\n") + +func (w *Writer) Write(b []byte) (n int, err error) { + w.lock.Lock() + defer w.lock.Unlock() + + for _, teeWriter := range w.teeWriters { + teeWriter.Write(b) + } + + if w.mode == WriterModeStreamAndBuffer { + line, remaining, found := []byte{}, b, false + for len(remaining) > 0 { + line, remaining, found = bytes.Cut(remaining, newline) + if len(line) > 0 { + if w.indentNext { + w.outWriter.Write(w.streamIndent) + w.indentNext = false + } + w.outWriter.Write(line) + } + if found { + w.outWriter.Write(newline) + w.indentNext = true + } + } + } + return w.buffer.Write(b) +} + +func (w *Writer) Truncate() { + w.lock.Lock() + defer w.lock.Unlock() + w.buffer.Reset() +} + +func (w *Writer) Bytes() []byte { + w.lock.Lock() + defer w.lock.Unlock() + b := w.buffer.Bytes() + copied := make([]byte, len(b)) + copy(copied, b) + return copied +} + +// GinkgoWriterInterface +func (w *Writer) TeeTo(writer io.Writer) { + w.lock.Lock() + defer w.lock.Unlock() + + w.teeWriters = append(w.teeWriters, writer) +} + +func (w *Writer) ClearTeeWriters() { + w.lock.Lock() + defer w.lock.Unlock() + + w.teeWriters = []io.Writer{} +} + +func (w *Writer) Print(a ...any) { + fmt.Fprint(w, a...) +} + +func (w *Writer) Printf(format string, a ...any) { + fmt.Fprintf(w, format, a...) +} + +func (w *Writer) Println(a ...any) { + fmt.Fprintln(w, a...) +} + +func GinkgoLogrFunc(writer *Writer) logr.Logger { + return funcr.New(func(prefix, args string) { + if prefix == "" { + writer.Printf("%s\n", args) + } else { + writer.Printf("%s %s\n", prefix, args) + } + }, funcr.Options{}) +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/reporters/default_reporter.go b/tests/vendor/github.com/onsi/ginkgo/v2/reporters/default_reporter.go new file mode 100644 index 000000000..74ad0768b --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/reporters/default_reporter.go @@ -0,0 +1,788 @@ +/* +Ginkgo's Default Reporter + +A number of command line flags are available to tweak Ginkgo's default output. + +These are documented [here](http://onsi.github.io/ginkgo/#running_tests) +*/ +package reporters + +import ( + "fmt" + "io" + "runtime" + "strings" + "sync" + "time" + + "github.com/onsi/ginkgo/v2/formatter" + "github.com/onsi/ginkgo/v2/types" +) + +type DefaultReporter struct { + conf types.ReporterConfig + writer io.Writer + + // managing the emission stream + lastCharWasNewline bool + lastEmissionWasDelimiter bool + + // rendering + specDenoter string + retryDenoter string + formatter formatter.Formatter + + runningInParallel bool + lock *sync.Mutex +} + +func NewDefaultReporterUnderTest(conf types.ReporterConfig, writer io.Writer) *DefaultReporter { + reporter := NewDefaultReporter(conf, writer) + reporter.formatter = formatter.New(formatter.ColorModePassthrough) + + return reporter +} + +func NewDefaultReporter(conf types.ReporterConfig, writer io.Writer) *DefaultReporter { + reporter := &DefaultReporter{ + conf: conf, + writer: writer, + + lastCharWasNewline: true, + lastEmissionWasDelimiter: false, + + specDenoter: "•", + retryDenoter: "↺", + formatter: formatter.NewWithNoColorBool(conf.NoColor), + lock: &sync.Mutex{}, + } + if runtime.GOOS == "windows" { + reporter.specDenoter = "+" + reporter.retryDenoter = "R" + } + + return reporter +} + +/* The Reporter Interface */ + +func (r *DefaultReporter) SuiteWillBegin(report types.Report) { + if r.conf.Verbosity().Is(types.VerbosityLevelSuccinct) { + r.emit(r.f("[%d] {{bold}}%s{{/}} ", report.SuiteConfig.RandomSeed, report.SuiteDescription)) + if len(report.SuiteLabels) > 0 { + r.emit(r.f("{{coral}}[%s]{{/}} ", strings.Join(report.SuiteLabels, ", "))) + } + r.emit(r.f("- %d/%d specs ", report.PreRunStats.SpecsThatWillRun, report.PreRunStats.TotalSpecs)) + if report.SuiteConfig.ParallelTotal > 1 { + r.emit(r.f("- %d procs ", report.SuiteConfig.ParallelTotal)) + } + } else { + banner := r.f("Running Suite: %s - %s", report.SuiteDescription, report.SuitePath) + r.emitBlock(banner) + bannerWidth := len(banner) + if len(report.SuiteLabels) > 0 { + labels := strings.Join(report.SuiteLabels, ", ") + r.emitBlock(r.f("{{coral}}[%s]{{/}} ", labels)) + if len(labels)+2 > bannerWidth { + bannerWidth = len(labels) + 2 + } + } + r.emitBlock(strings.Repeat("=", bannerWidth)) + + out := r.f("Random Seed: {{bold}}%d{{/}}", report.SuiteConfig.RandomSeed) + if report.SuiteConfig.RandomizeAllSpecs { + out += r.f(" - will randomize all specs") + } + r.emitBlock(out) + r.emit("\n") + r.emitBlock(r.f("Will run {{bold}}%d{{/}} of {{bold}}%d{{/}} specs", report.PreRunStats.SpecsThatWillRun, report.PreRunStats.TotalSpecs)) + if report.SuiteConfig.ParallelTotal > 1 { + r.emitBlock(r.f("Running in parallel across {{bold}}%d{{/}} processes", report.SuiteConfig.ParallelTotal)) + } + } +} + +func (r *DefaultReporter) SuiteDidEnd(report types.Report) { + failures := report.SpecReports.WithState(types.SpecStateFailureStates) + if len(failures) > 0 { + r.emitBlock("\n") + if len(failures) > 1 { + r.emitBlock(r.f("{{red}}{{bold}}Summarizing %d Failures:{{/}}", len(failures))) + } else { + r.emitBlock(r.f("{{red}}{{bold}}Summarizing 1 Failure:{{/}}")) + } + for _, specReport := range failures { + highlightColor, heading := "{{red}}", "[FAIL]" + switch specReport.State { + case types.SpecStatePanicked: + highlightColor, heading = "{{magenta}}", "[PANICKED!]" + case types.SpecStateAborted: + highlightColor, heading = "{{coral}}", "[ABORTED]" + case types.SpecStateTimedout: + highlightColor, heading = "{{orange}}", "[TIMEDOUT]" + case types.SpecStateInterrupted: + highlightColor, heading = "{{orange}}", "[INTERRUPTED]" + } + locationBlock := r.codeLocationBlock(specReport, highlightColor, false, true) + r.emitBlock(r.fi(1, highlightColor+"%s{{/}} %s", heading, locationBlock)) + } + } + + //summarize the suite + if r.conf.Verbosity().Is(types.VerbosityLevelSuccinct) && report.SuiteSucceeded { + r.emit(r.f(" {{green}}SUCCESS!{{/}} %s ", report.RunTime)) + return + } + + r.emitBlock("\n") + color, status := "{{green}}{{bold}}", "SUCCESS!" + if !report.SuiteSucceeded { + color, status = "{{red}}{{bold}}", "FAIL!" + } + + specs := report.SpecReports.WithLeafNodeType(types.NodeTypeIt) //exclude any suite setup nodes + r.emitBlock(r.f(color+"Ran %d of %d Specs in %.3f seconds{{/}}", + specs.CountWithState(types.SpecStatePassed)+specs.CountWithState(types.SpecStateFailureStates), + report.PreRunStats.TotalSpecs, + report.RunTime.Seconds()), + ) + + switch len(report.SpecialSuiteFailureReasons) { + case 0: + r.emit(r.f(color+"%s{{/}} -- ", status)) + case 1: + r.emit(r.f(color+"%s - %s{{/}} -- ", status, report.SpecialSuiteFailureReasons[0])) + default: + r.emitBlock(r.f(color+"%s - %s{{/}}\n", status, strings.Join(report.SpecialSuiteFailureReasons, ", "))) + } + + if len(specs) == 0 && report.SpecReports.WithLeafNodeType(types.NodeTypeBeforeSuite|types.NodeTypeSynchronizedBeforeSuite).CountWithState(types.SpecStateFailureStates) > 0 { + r.emit(r.f("{{cyan}}{{bold}}A BeforeSuite node failed so all tests were skipped.{{/}}\n")) + } else { + r.emit(r.f("{{green}}{{bold}}%d Passed{{/}} | ", specs.CountWithState(types.SpecStatePassed))) + r.emit(r.f("{{red}}{{bold}}%d Failed{{/}} | ", specs.CountWithState(types.SpecStateFailureStates))) + if specs.CountOfFlakedSpecs() > 0 { + r.emit(r.f("{{light-yellow}}{{bold}}%d Flaked{{/}} | ", specs.CountOfFlakedSpecs())) + } + if specs.CountOfRepeatedSpecs() > 0 { + r.emit(r.f("{{light-yellow}}{{bold}}%d Repeated{{/}} | ", specs.CountOfRepeatedSpecs())) + } + r.emit(r.f("{{yellow}}{{bold}}%d Pending{{/}} | ", specs.CountWithState(types.SpecStatePending))) + r.emit(r.f("{{cyan}}{{bold}}%d Skipped{{/}}\n", specs.CountWithState(types.SpecStateSkipped))) + } +} + +func (r *DefaultReporter) WillRun(report types.SpecReport) { + v := r.conf.Verbosity() + if v.LT(types.VerbosityLevelVerbose) || report.State.Is(types.SpecStatePending|types.SpecStateSkipped) || report.RunningInParallel { + return + } + + r.emitDelimiter(0) + r.emitBlock(r.f(r.codeLocationBlock(report, "{{/}}", v.Is(types.VerbosityLevelVeryVerbose), false))) +} + +func (r *DefaultReporter) wrapTextBlock(sectionName string, fn func()) { + r.emitBlock("\n") + if r.conf.GithubOutput { + r.emitBlock(r.fi(1, "::group::%s", sectionName)) + } else { + r.emitBlock(r.fi(1, "{{gray}}%s >>{{/}}", sectionName)) + } + fn() + if r.conf.GithubOutput { + r.emitBlock(r.fi(1, "::endgroup::")) + } else { + r.emitBlock(r.fi(1, "{{gray}}<< %s{{/}}", sectionName)) + } + +} + +func (r *DefaultReporter) DidRun(report types.SpecReport) { + v := r.conf.Verbosity() + inParallel := report.RunningInParallel + + //should we completely omit this spec? + if report.State.Is(types.SpecStateSkipped) && r.conf.SilenceSkips { + return + } + + header := r.specDenoter + if report.LeafNodeType.Is(types.NodeTypesForSuiteLevelNodes) { + header = fmt.Sprintf("[%s]", report.LeafNodeType) + } + highlightColor := r.highlightColorForState(report.State) + + // have we already been streaming the timeline? + timelineHasBeenStreaming := v.GTE(types.VerbosityLevelVerbose) && !inParallel + + // should we show the timeline? + var timeline types.Timeline + showTimeline := !timelineHasBeenStreaming && (v.GTE(types.VerbosityLevelVerbose) || report.Failed()) + if showTimeline { + timeline = report.Timeline().WithoutHiddenReportEntries() + keepVeryVerboseSpecEvents := v.Is(types.VerbosityLevelVeryVerbose) || + (v.Is(types.VerbosityLevelVerbose) && r.conf.ShowNodeEvents) || + (report.Failed() && r.conf.ShowNodeEvents) + if !keepVeryVerboseSpecEvents { + timeline = timeline.WithoutVeryVerboseSpecEvents() + } + if len(timeline) == 0 && report.CapturedGinkgoWriterOutput == "" { + // the timeline is completely empty - don't show it + showTimeline = false + } + if v.LT(types.VerbosityLevelVeryVerbose) && report.CapturedGinkgoWriterOutput == "" && len(timeline) > 0 { + //if we aren't -vv and the timeline only has a single failure, don't show it as it will appear at the end of the report + failure, isFailure := timeline[0].(types.Failure) + if isFailure && (len(timeline) == 1 || (len(timeline) == 2 && failure.AdditionalFailure != nil)) { + showTimeline = false + } + } + } + + // should we have a separate section for always-visible reports? + showSeparateVisibilityAlwaysReportsSection := !timelineHasBeenStreaming && !showTimeline && report.ReportEntries.HasVisibility(types.ReportEntryVisibilityAlways) + + // should we have a separate section for captured stdout/stderr + showSeparateStdSection := inParallel && (report.CapturedStdOutErr != "") + + // given all that - do we have any actual content to show? or are we a single denoter in a stream? + reportHasContent := v.Is(types.VerbosityLevelVeryVerbose) || showTimeline || showSeparateVisibilityAlwaysReportsSection || showSeparateStdSection || report.Failed() || (v.Is(types.VerbosityLevelVerbose) && !report.State.Is(types.SpecStateSkipped)) + + // should we show a runtime? + includeRuntime := !report.State.Is(types.SpecStateSkipped|types.SpecStatePending) || (report.State.Is(types.SpecStateSkipped) && report.Failure.Message != "") + + // should we show the codelocation block? + showCodeLocation := !timelineHasBeenStreaming || !report.State.Is(types.SpecStatePassed) + + switch report.State { + case types.SpecStatePassed: + if report.LeafNodeType.Is(types.NodeTypesForSuiteLevelNodes) && !reportHasContent { + return + } + if report.LeafNodeType.Is(types.NodeTypesForSuiteLevelNodes) { + header = fmt.Sprintf("%s PASSED", header) + } + if report.NumAttempts > 1 && report.MaxFlakeAttempts > 1 { + header, reportHasContent = fmt.Sprintf("%s [FLAKEY TEST - TOOK %d ATTEMPTS TO PASS]", r.retryDenoter, report.NumAttempts), true + } + case types.SpecStatePending: + header = "P" + if v.GT(types.VerbosityLevelSuccinct) { + header, reportHasContent = "P [PENDING]", true + } + case types.SpecStateSkipped: + header = "S" + if v.Is(types.VerbosityLevelVeryVerbose) || (v.Is(types.VerbosityLevelVerbose) && report.Failure.Message != "") { + header, reportHasContent = "S [SKIPPED]", true + } + default: + header = fmt.Sprintf("%s [%s]", header, r.humanReadableState(report.State)) + if report.MaxMustPassRepeatedly > 1 { + header = fmt.Sprintf("%s DURING REPETITION #%d", header, report.NumAttempts) + } + } + + // If we have no content to show, just emit the header and return + if !reportHasContent { + r.emit(r.f(highlightColor + header + "{{/}}")) + if r.conf.ForceNewlines { + r.emit("\n") + } + return + } + + if includeRuntime { + header = r.f("%s [%.3f seconds]", header, report.RunTime.Seconds()) + } + + // Emit header + if !timelineHasBeenStreaming { + r.emitDelimiter(0) + } + r.emitBlock(r.f(highlightColor + header + "{{/}}")) + if showCodeLocation { + r.emitBlock(r.codeLocationBlock(report, highlightColor, v.Is(types.VerbosityLevelVeryVerbose), false)) + } + + //Emit Stdout/Stderr Output + if showSeparateStdSection { + r.wrapTextBlock("Captured StdOut/StdErr Output", func() { + r.emitBlock(r.fi(1, "%s", report.CapturedStdOutErr)) + }) + } + + if showSeparateVisibilityAlwaysReportsSection { + r.wrapTextBlock("Report Entries", func() { + for _, entry := range report.ReportEntries.WithVisibility(types.ReportEntryVisibilityAlways) { + r.emitReportEntry(1, entry) + } + }) + } + + if showTimeline { + r.wrapTextBlock("Timeline", func() { + r.emitTimeline(1, report, timeline) + }) + } + + // Emit Failure Message + if !report.Failure.IsZero() && !v.Is(types.VerbosityLevelVeryVerbose) { + r.emitBlock("\n") + r.emitFailure(1, report.State, report.Failure, true) + if len(report.AdditionalFailures) > 0 { + r.emitBlock(r.fi(1, "\nThere were {{bold}}{{red}}additional failures{{/}} detected. To view them in detail run {{bold}}ginkgo -vv{{/}}")) + } + } + + r.emitDelimiter(0) +} + +func (r *DefaultReporter) highlightColorForState(state types.SpecState) string { + switch state { + case types.SpecStatePassed: + return "{{green}}" + case types.SpecStatePending: + return "{{yellow}}" + case types.SpecStateSkipped: + return "{{cyan}}" + case types.SpecStateFailed: + return "{{red}}" + case types.SpecStateTimedout: + return "{{orange}}" + case types.SpecStatePanicked: + return "{{magenta}}" + case types.SpecStateInterrupted: + return "{{orange}}" + case types.SpecStateAborted: + return "{{coral}}" + default: + return "{{gray}}" + } +} + +func (r *DefaultReporter) humanReadableState(state types.SpecState) string { + return strings.ToUpper(state.String()) +} + +func (r *DefaultReporter) emitTimeline(indent uint, report types.SpecReport, timeline types.Timeline) { + isVeryVerbose := r.conf.Verbosity().Is(types.VerbosityLevelVeryVerbose) + gw := report.CapturedGinkgoWriterOutput + cursor := 0 + for _, entry := range timeline { + tl := entry.GetTimelineLocation() + if tl.Offset < len(gw) { + r.emit(r.fi(indent, "%s", gw[cursor:tl.Offset])) + cursor = tl.Offset + } else if cursor < len(gw) { + r.emit(r.fi(indent, "%s", gw[cursor:])) + cursor = len(gw) + } + switch x := entry.(type) { + case types.Failure: + if isVeryVerbose { + r.emitFailure(indent, report.State, x, false) + } else { + r.emitShortFailure(indent, report.State, x) + } + case types.AdditionalFailure: + if isVeryVerbose { + r.emitFailure(indent, x.State, x.Failure, true) + } else { + r.emitShortFailure(indent, x.State, x.Failure) + } + case types.ReportEntry: + r.emitReportEntry(indent, x) + case types.ProgressReport: + r.emitProgressReport(indent, false, x) + case types.SpecEvent: + if isVeryVerbose || !x.IsOnlyVisibleAtVeryVerbose() || r.conf.ShowNodeEvents { + r.emitSpecEvent(indent, x, isVeryVerbose) + } + } + } + if cursor < len(gw) { + r.emit(r.fi(indent, "%s", gw[cursor:])) + } +} + +func (r *DefaultReporter) EmitFailure(state types.SpecState, failure types.Failure) { + if r.conf.Verbosity().Is(types.VerbosityLevelVerbose) { + r.emitShortFailure(1, state, failure) + } else if r.conf.Verbosity().Is(types.VerbosityLevelVeryVerbose) { + r.emitFailure(1, state, failure, true) + } +} + +func (r *DefaultReporter) emitShortFailure(indent uint, state types.SpecState, failure types.Failure) { + r.emitBlock(r.fi(indent, r.highlightColorForState(state)+"[%s]{{/}} in [%s] - %s {{gray}}@ %s{{/}}", + r.humanReadableState(state), + failure.FailureNodeType, + failure.Location, + failure.TimelineLocation.Time.Format(types.GINKGO_TIME_FORMAT), + )) +} + +func (r *DefaultReporter) emitFailure(indent uint, state types.SpecState, failure types.Failure, includeAdditionalFailure bool) { + highlightColor := r.highlightColorForState(state) + r.emitBlock(r.fi(indent, highlightColor+"[%s] %s{{/}}", r.humanReadableState(state), failure.Message)) + if r.conf.GithubOutput { + level := "error" + if state.Is(types.SpecStateSkipped) { + level = "notice" + } + r.emitBlock(r.fi(indent, "::%s file=%s,line=%d::%s %s", level, failure.Location.FileName, failure.Location.LineNumber, failure.FailureNodeType, failure.TimelineLocation.Time.Format(types.GINKGO_TIME_FORMAT))) + } else { + r.emitBlock(r.fi(indent, highlightColor+"In {{bold}}[%s]{{/}}"+highlightColor+" at: {{bold}}%s{{/}} {{gray}}@ %s{{/}}\n", failure.FailureNodeType, failure.Location, failure.TimelineLocation.Time.Format(types.GINKGO_TIME_FORMAT))) + } + if failure.ForwardedPanic != "" { + r.emitBlock("\n") + r.emitBlock(r.fi(indent, highlightColor+"%s{{/}}", failure.ForwardedPanic)) + } + + if r.conf.FullTrace || failure.ForwardedPanic != "" { + r.emitBlock("\n") + r.emitBlock(r.fi(indent, highlightColor+"Full Stack Trace{{/}}")) + r.emitBlock(r.fi(indent+1, "%s", failure.Location.FullStackTrace)) + } + + if !failure.ProgressReport.IsZero() { + r.emitBlock("\n") + r.emitProgressReport(indent, false, failure.ProgressReport) + } + + if failure.AdditionalFailure != nil && includeAdditionalFailure { + r.emitBlock("\n") + r.emitFailure(indent, failure.AdditionalFailure.State, failure.AdditionalFailure.Failure, true) + } +} + +func (r *DefaultReporter) EmitProgressReport(report types.ProgressReport) { + r.emitDelimiter(1) + + if report.RunningInParallel { + r.emit(r.fi(1, "{{coral}}Progress Report for Ginkgo Process #{{bold}}%d{{/}}\n", report.ParallelProcess)) + } + shouldEmitGW := report.RunningInParallel || r.conf.Verbosity().LT(types.VerbosityLevelVerbose) + r.emitProgressReport(1, shouldEmitGW, report) + r.emitDelimiter(1) +} + +func (r *DefaultReporter) emitProgressReport(indent uint, emitGinkgoWriterOutput bool, report types.ProgressReport) { + if report.Message != "" { + r.emitBlock(r.fi(indent, report.Message+"\n")) + indent += 1 + } + if report.LeafNodeText != "" { + subjectIndent := indent + if len(report.ContainerHierarchyTexts) > 0 { + r.emit(r.fi(indent, r.cycleJoin(report.ContainerHierarchyTexts, " "))) + r.emit(" ") + subjectIndent = 0 + } + r.emit(r.fi(subjectIndent, "{{bold}}{{orange}}%s{{/}} (Spec Runtime: %s)\n", report.LeafNodeText, report.Time().Sub(report.SpecStartTime).Round(time.Millisecond))) + r.emit(r.fi(indent+1, "{{gray}}%s{{/}}\n", report.LeafNodeLocation)) + indent += 1 + } + if report.CurrentNodeType != types.NodeTypeInvalid { + r.emit(r.fi(indent, "In {{bold}}{{orange}}[%s]{{/}}", report.CurrentNodeType)) + if report.CurrentNodeText != "" && !report.CurrentNodeType.Is(types.NodeTypeIt) { + r.emit(r.f(" {{bold}}{{orange}}%s{{/}}", report.CurrentNodeText)) + } + + r.emit(r.f(" (Node Runtime: %s)\n", report.Time().Sub(report.CurrentNodeStartTime).Round(time.Millisecond))) + r.emit(r.fi(indent+1, "{{gray}}%s{{/}}\n", report.CurrentNodeLocation)) + indent += 1 + } + if report.CurrentStepText != "" { + r.emit(r.fi(indent, "At {{bold}}{{orange}}[By Step] %s{{/}} (Step Runtime: %s)\n", report.CurrentStepText, report.Time().Sub(report.CurrentStepStartTime).Round(time.Millisecond))) + r.emit(r.fi(indent+1, "{{gray}}%s{{/}}\n", report.CurrentStepLocation)) + indent += 1 + } + + if indent > 0 { + indent -= 1 + } + + if emitGinkgoWriterOutput && report.CapturedGinkgoWriterOutput != "" { + r.emit("\n") + r.emitBlock(r.fi(indent, "{{gray}}Begin Captured GinkgoWriter Output >>{{/}}")) + limit, lines := 10, strings.Split(report.CapturedGinkgoWriterOutput, "\n") + if len(lines) <= limit { + r.emitBlock(r.fi(indent+1, "%s", report.CapturedGinkgoWriterOutput)) + } else { + r.emitBlock(r.fi(indent+1, "{{gray}}...{{/}}")) + for _, line := range lines[len(lines)-limit-1:] { + r.emitBlock(r.fi(indent+1, "%s", line)) + } + } + r.emitBlock(r.fi(indent, "{{gray}}<< End Captured GinkgoWriter Output{{/}}")) + } + + if !report.SpecGoroutine().IsZero() { + r.emit("\n") + r.emit(r.fi(indent, "{{bold}}{{underline}}Spec Goroutine{{/}}\n")) + r.emitGoroutines(indent, report.SpecGoroutine()) + } + + if len(report.AdditionalReports) > 0 { + r.emit("\n") + r.emitBlock(r.fi(indent, "{{gray}}Begin Additional Progress Reports >>{{/}}")) + for i, additionalReport := range report.AdditionalReports { + r.emit(r.fi(indent+1, additionalReport)) + if i < len(report.AdditionalReports)-1 { + r.emitBlock(r.fi(indent+1, "{{gray}}%s{{/}}", strings.Repeat("-", 10))) + } + } + r.emitBlock(r.fi(indent, "{{gray}}<< End Additional Progress Reports{{/}}")) + } + + highlightedGoroutines := report.HighlightedGoroutines() + if len(highlightedGoroutines) > 0 { + r.emit("\n") + r.emit(r.fi(indent, "{{bold}}{{underline}}Goroutines of Interest{{/}}\n")) + r.emitGoroutines(indent, highlightedGoroutines...) + } + + otherGoroutines := report.OtherGoroutines() + if len(otherGoroutines) > 0 { + r.emit("\n") + r.emit(r.fi(indent, "{{gray}}{{bold}}{{underline}}Other Goroutines{{/}}\n")) + r.emitGoroutines(indent, otherGoroutines...) + } +} + +func (r *DefaultReporter) EmitReportEntry(entry types.ReportEntry) { + if r.conf.Verbosity().LT(types.VerbosityLevelVerbose) || entry.Visibility == types.ReportEntryVisibilityNever { + return + } + r.emitReportEntry(1, entry) +} + +func (r *DefaultReporter) emitReportEntry(indent uint, entry types.ReportEntry) { + r.emitBlock(r.fi(indent, "{{bold}}"+entry.Name+"{{gray}} "+fmt.Sprintf("- %s @ %s{{/}}", entry.Location, entry.Time.Format(types.GINKGO_TIME_FORMAT)))) + if representation := entry.StringRepresentation(); representation != "" { + r.emitBlock(r.fi(indent+1, representation)) + } +} + +func (r *DefaultReporter) EmitSpecEvent(event types.SpecEvent) { + v := r.conf.Verbosity() + if v.Is(types.VerbosityLevelVeryVerbose) || (v.Is(types.VerbosityLevelVerbose) && (r.conf.ShowNodeEvents || !event.IsOnlyVisibleAtVeryVerbose())) { + r.emitSpecEvent(1, event, r.conf.Verbosity().Is(types.VerbosityLevelVeryVerbose)) + } +} + +func (r *DefaultReporter) emitSpecEvent(indent uint, event types.SpecEvent, includeLocation bool) { + location := "" + if includeLocation { + location = fmt.Sprintf("- %s ", event.CodeLocation.String()) + } + switch event.SpecEventType { + case types.SpecEventInvalid: + return + case types.SpecEventByStart: + r.emitBlock(r.fi(indent, "{{bold}}STEP:{{/}} %s {{gray}}%s@ %s{{/}}", event.Message, location, event.TimelineLocation.Time.Format(types.GINKGO_TIME_FORMAT))) + case types.SpecEventByEnd: + r.emitBlock(r.fi(indent, "{{bold}}END STEP:{{/}} %s {{gray}}%s@ %s (%s){{/}}", event.Message, location, event.TimelineLocation.Time.Format(types.GINKGO_TIME_FORMAT), event.Duration.Round(time.Millisecond))) + case types.SpecEventNodeStart: + r.emitBlock(r.fi(indent, "> Enter {{bold}}[%s]{{/}} %s {{gray}}%s@ %s{{/}}", event.NodeType.String(), event.Message, location, event.TimelineLocation.Time.Format(types.GINKGO_TIME_FORMAT))) + case types.SpecEventNodeEnd: + r.emitBlock(r.fi(indent, "< Exit {{bold}}[%s]{{/}} %s {{gray}}%s@ %s (%s){{/}}", event.NodeType.String(), event.Message, location, event.TimelineLocation.Time.Format(types.GINKGO_TIME_FORMAT), event.Duration.Round(time.Millisecond))) + case types.SpecEventSpecRepeat: + r.emitBlock(r.fi(indent, "\n{{bold}}Attempt #%d {{green}}Passed{{/}}{{bold}}. Repeating %s{{/}} {{gray}}@ %s{{/}}\n\n", event.Attempt, r.retryDenoter, event.TimelineLocation.Time.Format(types.GINKGO_TIME_FORMAT))) + case types.SpecEventSpecRetry: + r.emitBlock(r.fi(indent, "\n{{bold}}Attempt #%d {{red}}Failed{{/}}{{bold}}. Retrying %s{{/}} {{gray}}@ %s{{/}}\n\n", event.Attempt, r.retryDenoter, event.TimelineLocation.Time.Format(types.GINKGO_TIME_FORMAT))) + } +} + +func (r *DefaultReporter) emitGoroutines(indent uint, goroutines ...types.Goroutine) { + for idx, g := range goroutines { + color := "{{gray}}" + if g.HasHighlights() { + color = "{{orange}}" + } + r.emit(r.fi(indent, color+"goroutine %d [%s]{{/}}\n", g.ID, g.State)) + for _, fc := range g.Stack { + if fc.Highlight { + r.emit(r.fi(indent, color+"{{bold}}> %s{{/}}\n", fc.Function)) + r.emit(r.fi(indent+2, color+"{{bold}}%s:%d{{/}}\n", fc.Filename, fc.Line)) + r.emitSource(indent+3, fc) + } else { + r.emit(r.fi(indent+1, "{{gray}}%s{{/}}\n", fc.Function)) + r.emit(r.fi(indent+2, "{{gray}}%s:%d{{/}}\n", fc.Filename, fc.Line)) + } + } + + if idx+1 < len(goroutines) { + r.emit("\n") + } + } +} + +func (r *DefaultReporter) emitSource(indent uint, fc types.FunctionCall) { + lines := fc.Source + if len(lines) == 0 { + return + } + + lTrim := 100000 + for _, line := range lines { + lTrimLine := len(line) - len(strings.TrimLeft(line, " \t")) + if lTrimLine < lTrim && len(line) > 0 { + lTrim = lTrimLine + } + } + if lTrim == 100000 { + lTrim = 0 + } + + for idx, line := range lines { + if len(line) > lTrim { + line = line[lTrim:] + } + if idx == fc.SourceHighlight { + r.emit(r.fi(indent, "{{bold}}{{orange}}> %s{{/}}\n", line)) + } else { + r.emit(r.fi(indent, "| %s\n", line)) + } + } +} + +/* Emitting to the writer */ +func (r *DefaultReporter) emit(s string) { + r._emit(s, false, false) +} + +func (r *DefaultReporter) emitBlock(s string) { + r._emit(s, true, false) +} + +func (r *DefaultReporter) emitDelimiter(indent uint) { + r._emit(r.fi(indent, "{{gray}}%s{{/}}", strings.Repeat("-", 30)), true, true) +} + +// a bit ugly - but we're trying to minimize locking on this hot codepath +func (r *DefaultReporter) _emit(s string, block bool, isDelimiter bool) { + if len(s) == 0 { + return + } + r.lock.Lock() + defer r.lock.Unlock() + if isDelimiter && r.lastEmissionWasDelimiter { + return + } + if block && !r.lastCharWasNewline { + r.writer.Write([]byte("\n")) + } + r.lastCharWasNewline = (s[len(s)-1:] == "\n") + r.writer.Write([]byte(s)) + if block && !r.lastCharWasNewline { + r.writer.Write([]byte("\n")) + r.lastCharWasNewline = true + } + r.lastEmissionWasDelimiter = isDelimiter +} + +/* Rendering text */ +func (r *DefaultReporter) f(format string, args ...any) string { + return r.formatter.F(format, args...) +} + +func (r *DefaultReporter) fi(indentation uint, format string, args ...any) string { + return r.formatter.Fi(indentation, format, args...) +} + +func (r *DefaultReporter) cycleJoin(elements []string, joiner string) string { + return r.formatter.CycleJoin(elements, joiner, []string{"{{/}}", "{{gray}}"}) +} + +func (r *DefaultReporter) codeLocationBlock(report types.SpecReport, highlightColor string, veryVerbose bool, usePreciseFailureLocation bool) string { + texts, locations, labels := []string{}, []types.CodeLocation{}, [][]string{} + texts, locations, labels = append(texts, report.ContainerHierarchyTexts...), append(locations, report.ContainerHierarchyLocations...), append(labels, report.ContainerHierarchyLabels...) + + if report.LeafNodeType.Is(types.NodeTypesForSuiteLevelNodes) { + texts = append(texts, r.f("[%s] %s", report.LeafNodeType, report.LeafNodeText)) + } else { + texts = append(texts, r.f(report.LeafNodeText)) + } + labels = append(labels, report.LeafNodeLabels) + locations = append(locations, report.LeafNodeLocation) + + failureLocation := report.Failure.FailureNodeLocation + if usePreciseFailureLocation { + failureLocation = report.Failure.Location + } + + highlightIndex := -1 + switch report.Failure.FailureNodeContext { + case types.FailureNodeAtTopLevel: + texts = append([]string{fmt.Sprintf("TOP-LEVEL [%s]", report.Failure.FailureNodeType)}, texts...) + locations = append([]types.CodeLocation{failureLocation}, locations...) + labels = append([][]string{{}}, labels...) + highlightIndex = 0 + case types.FailureNodeInContainer: + i := report.Failure.FailureNodeContainerIndex + texts[i] = fmt.Sprintf("%s [%s]", texts[i], report.Failure.FailureNodeType) + locations[i] = failureLocation + highlightIndex = i + case types.FailureNodeIsLeafNode: + i := len(texts) - 1 + texts[i] = fmt.Sprintf("[%s] %s", report.LeafNodeType, report.LeafNodeText) + locations[i] = failureLocation + highlightIndex = i + default: + //there is no failure, so we highlight the leaf ndoe + highlightIndex = len(texts) - 1 + } + + out := "" + if veryVerbose { + for i := range texts { + if i == highlightIndex { + out += r.fi(uint(i), highlightColor+"{{bold}}%s{{/}}", texts[i]) + } else { + out += r.fi(uint(i), "%s", texts[i]) + } + if len(labels[i]) > 0 { + out += r.f(" {{coral}}[%s]{{/}}", strings.Join(labels[i], ", ")) + } + out += "\n" + out += r.fi(uint(i), "{{gray}}%s{{/}}\n", locations[i]) + } + } else { + for i := range texts { + style := "{{/}}" + if i%2 == 1 { + style = "{{gray}}" + } + if i == highlightIndex { + style = highlightColor + "{{bold}}" + } + out += r.f(style+"%s", texts[i]) + if i < len(texts)-1 { + out += " " + } else { + out += r.f("{{/}}") + } + } + flattenedLabels := report.Labels() + if len(flattenedLabels) > 0 { + out += r.f(" {{coral}}[%s]{{/}}", strings.Join(flattenedLabels, ", ")) + } + out += "\n" + if usePreciseFailureLocation { + out += r.f("{{gray}}%s{{/}}", failureLocation) + } else { + leafLocation := locations[len(locations)-1] + if (report.Failure.FailureNodeLocation != types.CodeLocation{}) && (report.Failure.FailureNodeLocation != leafLocation) { + out += r.fi(1, highlightColor+"[%s]{{/}} {{gray}}%s{{/}}\n", report.Failure.FailureNodeType, report.Failure.FailureNodeLocation) + out += r.fi(1, "{{gray}}[%s] %s{{/}}", report.LeafNodeType, leafLocation) + } else { + out += r.f("{{gray}}%s{{/}}", leafLocation) + } + } + + } + return out +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/reporters/deprecated_reporter.go b/tests/vendor/github.com/onsi/ginkgo/v2/reporters/deprecated_reporter.go new file mode 100644 index 000000000..613072ebf --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/reporters/deprecated_reporter.go @@ -0,0 +1,149 @@ +package reporters + +import ( + "github.com/onsi/ginkgo/v2/config" + "github.com/onsi/ginkgo/v2/types" +) + +// Deprecated: DeprecatedReporter was how Ginkgo V1 provided support for CustomReporters +// this has been removed in V2. +// Please read the documentation at: +// https://onsi.github.io/ginkgo/MIGRATING_TO_V2#removed-custom-reporters +// for Ginkgo's new behavior and for a migration path. +type DeprecatedReporter interface { + SuiteWillBegin(config config.GinkgoConfigType, summary *types.SuiteSummary) + BeforeSuiteDidRun(setupSummary *types.SetupSummary) + SpecWillRun(specSummary *types.SpecSummary) + SpecDidComplete(specSummary *types.SpecSummary) + AfterSuiteDidRun(setupSummary *types.SetupSummary) + SuiteDidEnd(summary *types.SuiteSummary) +} + +// ReportViaDeprecatedReporter takes a V1 custom reporter and a V2 report and +// calls the custom reporter's methods with appropriately transformed data from the V2 report. +// +// ReportViaDeprecatedReporter should be called in a `ReportAfterSuite()` +// +// Deprecated: ReportViaDeprecatedReporter method exists to help developer bridge between deprecated V1 functionality and the new +// reporting support in V2. It will be removed in a future minor version of Ginkgo. +func ReportViaDeprecatedReporter(reporter DeprecatedReporter, report types.Report) { + conf := config.DeprecatedGinkgoConfigType{ + RandomSeed: report.SuiteConfig.RandomSeed, + RandomizeAllSpecs: report.SuiteConfig.RandomizeAllSpecs, + FocusStrings: report.SuiteConfig.FocusStrings, + SkipStrings: report.SuiteConfig.SkipStrings, + FailOnPending: report.SuiteConfig.FailOnPending, + FailFast: report.SuiteConfig.FailFast, + FlakeAttempts: report.SuiteConfig.FlakeAttempts, + EmitSpecProgress: false, + DryRun: report.SuiteConfig.DryRun, + ParallelNode: report.SuiteConfig.ParallelProcess, + ParallelTotal: report.SuiteConfig.ParallelTotal, + SyncHost: report.SuiteConfig.ParallelHost, + StreamHost: report.SuiteConfig.ParallelHost, + } + + summary := &types.DeprecatedSuiteSummary{ + SuiteDescription: report.SuiteDescription, + SuiteID: report.SuitePath, + + NumberOfSpecsBeforeParallelization: report.PreRunStats.TotalSpecs, + NumberOfTotalSpecs: report.PreRunStats.TotalSpecs, + NumberOfSpecsThatWillBeRun: report.PreRunStats.SpecsThatWillRun, + } + + reporter.SuiteWillBegin(conf, summary) + + for _, spec := range report.SpecReports { + switch spec.LeafNodeType { + case types.NodeTypeBeforeSuite, types.NodeTypeSynchronizedBeforeSuite: + setupSummary := &types.DeprecatedSetupSummary{ + ComponentType: spec.LeafNodeType, + CodeLocation: spec.LeafNodeLocation, + State: spec.State, + RunTime: spec.RunTime, + Failure: failureFor(spec), + CapturedOutput: spec.CombinedOutput(), + SuiteID: report.SuitePath, + } + reporter.BeforeSuiteDidRun(setupSummary) + case types.NodeTypeAfterSuite, types.NodeTypeSynchronizedAfterSuite: + setupSummary := &types.DeprecatedSetupSummary{ + ComponentType: spec.LeafNodeType, + CodeLocation: spec.LeafNodeLocation, + State: spec.State, + RunTime: spec.RunTime, + Failure: failureFor(spec), + CapturedOutput: spec.CombinedOutput(), + SuiteID: report.SuitePath, + } + reporter.AfterSuiteDidRun(setupSummary) + case types.NodeTypeIt: + componentTexts, componentCodeLocations := []string{}, []types.CodeLocation{} + componentTexts = append(componentTexts, spec.ContainerHierarchyTexts...) + componentCodeLocations = append(componentCodeLocations, spec.ContainerHierarchyLocations...) + componentTexts = append(componentTexts, spec.LeafNodeText) + componentCodeLocations = append(componentCodeLocations, spec.LeafNodeLocation) + + specSummary := &types.DeprecatedSpecSummary{ + ComponentTexts: componentTexts, + ComponentCodeLocations: componentCodeLocations, + State: spec.State, + RunTime: spec.RunTime, + Failure: failureFor(spec), + NumberOfSamples: spec.NumAttempts, + CapturedOutput: spec.CombinedOutput(), + SuiteID: report.SuitePath, + } + reporter.SpecWillRun(specSummary) + reporter.SpecDidComplete(specSummary) + + switch spec.State { + case types.SpecStatePending: + summary.NumberOfPendingSpecs += 1 + case types.SpecStateSkipped: + summary.NumberOfSkippedSpecs += 1 + case types.SpecStateFailed, types.SpecStatePanicked, types.SpecStateInterrupted: + summary.NumberOfFailedSpecs += 1 + case types.SpecStatePassed: + summary.NumberOfPassedSpecs += 1 + if spec.NumAttempts > 1 { + summary.NumberOfFlakedSpecs += 1 + } + } + } + } + + summary.SuiteSucceeded = report.SuiteSucceeded + summary.RunTime = report.RunTime + + reporter.SuiteDidEnd(summary) +} + +func failureFor(spec types.SpecReport) types.DeprecatedSpecFailure { + if spec.Failure.IsZero() { + return types.DeprecatedSpecFailure{} + } + + index := 0 + switch spec.Failure.FailureNodeContext { + case types.FailureNodeInContainer: + index = spec.Failure.FailureNodeContainerIndex + case types.FailureNodeAtTopLevel: + index = -1 + case types.FailureNodeIsLeafNode: + index = len(spec.ContainerHierarchyTexts) - 1 + if spec.LeafNodeText != "" { + index += 1 + } + } + + return types.DeprecatedSpecFailure{ + Message: spec.Failure.Message, + Location: spec.Failure.Location, + ForwardedPanic: spec.Failure.ForwardedPanic, + ComponentIndex: index, + ComponentType: spec.Failure.FailureNodeType, + ComponentCodeLocation: spec.Failure.FailureNodeLocation, + } +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/reporters/json_report.go b/tests/vendor/github.com/onsi/ginkgo/v2/reporters/json_report.go new file mode 100644 index 000000000..5d3e8db99 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/reporters/json_report.go @@ -0,0 +1,69 @@ +package reporters + +import ( + "encoding/json" + "fmt" + "os" + "path" + + "github.com/onsi/ginkgo/v2/types" +) + +// GenerateJSONReport produces a JSON-formatted report at the passed in destination +func GenerateJSONReport(report types.Report, destination string) error { + if err := os.MkdirAll(path.Dir(destination), 0770); err != nil { + return err + } + f, err := os.Create(destination) + if err != nil { + return err + } + defer f.Close() + enc := json.NewEncoder(f) + enc.SetIndent("", " ") + err = enc.Encode([]types.Report{ + report, + }) + if err != nil { + return err + } + return nil +} + +// MergeJSONReports produces a single JSON-formatted report at the passed in destination by merging the JSON-formatted reports provided in sources +// It skips over reports that fail to decode but reports on them via the returned messages []string +func MergeAndCleanupJSONReports(sources []string, destination string) ([]string, error) { + messages := []string{} + allReports := []types.Report{} + for _, source := range sources { + reports := []types.Report{} + data, err := os.ReadFile(source) + if err != nil { + messages = append(messages, fmt.Sprintf("Could not open %s:\n%s", source, err.Error())) + continue + } + err = json.Unmarshal(data, &reports) + if err != nil { + messages = append(messages, fmt.Sprintf("Could not decode %s:\n%s", source, err.Error())) + continue + } + os.Remove(source) + allReports = append(allReports, reports...) + } + + if err := os.MkdirAll(path.Dir(destination), 0770); err != nil { + return messages, err + } + f, err := os.Create(destination) + if err != nil { + return messages, err + } + defer f.Close() + enc := json.NewEncoder(f) + enc.SetIndent("", " ") + err = enc.Encode(allReports) + if err != nil { + return messages, err + } + return messages, nil +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/reporters/junit_report.go b/tests/vendor/github.com/onsi/ginkgo/v2/reporters/junit_report.go new file mode 100644 index 000000000..562e0f62b --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/reporters/junit_report.go @@ -0,0 +1,390 @@ +/* + +JUnit XML Reporter for Ginkgo + +For usage instructions: http://onsi.github.io/ginkgo/#generating_junit_xml_output + +The schema used for the generated JUnit xml file was adapted from https://llg.cubic.org/docs/junit/ + +*/ + +package reporters + +import ( + "encoding/xml" + "fmt" + "os" + "path" + "regexp" + "strings" + + "github.com/onsi/ginkgo/v2/config" + "github.com/onsi/ginkgo/v2/types" +) + +type JunitReportConfig struct { + // Spec States for which no timeline should be emitted for system-err + // set this to types.SpecStatePassed|types.SpecStateSkipped|types.SpecStatePending to only match failing specs + OmitTimelinesForSpecState types.SpecState + + // Enable OmitFailureMessageAttr to prevent failure messages appearing in the "message" attribute of the Failure and Error tags + OmitFailureMessageAttr bool + + //Enable OmitCapturedStdOutErr to prevent captured stdout/stderr appearing in system-out + OmitCapturedStdOutErr bool + + // Enable OmitSpecLabels to prevent labels from appearing in the spec name + OmitSpecLabels bool + + // Enable OmitLeafNodeType to prevent the spec leaf node type from appearing in the spec name + OmitLeafNodeType bool + + // Enable OmitSuiteSetupNodes to prevent the creation of testcase entries for setup nodes + OmitSuiteSetupNodes bool +} + +type JUnitTestSuites struct { + XMLName xml.Name `xml:"testsuites"` + // Tests maps onto the total number of specs in all test suites (this includes any suite nodes such as BeforeSuite) + Tests int `xml:"tests,attr"` + // Disabled maps onto specs that are pending and/or skipped + Disabled int `xml:"disabled,attr"` + // Errors maps onto specs that panicked or were interrupted + Errors int `xml:"errors,attr"` + // Failures maps onto specs that failed + Failures int `xml:"failures,attr"` + // Time is the time in seconds to execute all test suites + Time float64 `xml:"time,attr"` + + //The set of all test suites + TestSuites []JUnitTestSuite `xml:"testsuite"` +} + +type JUnitTestSuite struct { + // Name maps onto the description of the test suite - maps onto Report.SuiteDescription + Name string `xml:"name,attr"` + // Package maps onto the absolute path to the test suite - maps onto Report.SuitePath + Package string `xml:"package,attr"` + // Tests maps onto the total number of specs in the test suite (this includes any suite nodes such as BeforeSuite) + Tests int `xml:"tests,attr"` + // Disabled maps onto specs that are pending + Disabled int `xml:"disabled,attr"` + // Skiped maps onto specs that are skipped + Skipped int `xml:"skipped,attr"` + // Errors maps onto specs that panicked or were interrupted + Errors int `xml:"errors,attr"` + // Failures maps onto specs that failed + Failures int `xml:"failures,attr"` + // Time is the time in seconds to execute all the test suite - maps onto Report.RunTime + Time float64 `xml:"time,attr"` + // Timestamp is the ISO 8601 formatted start-time of the suite - maps onto Report.StartTime + Timestamp string `xml:"timestamp,attr"` + + //Properties captures the information stored in the rest of the Report type (including SuiteConfig) as key-value pairs + Properties JUnitProperties `xml:"properties"` + + //TestCases capture the individual specs + TestCases []JUnitTestCase `xml:"testcase"` +} + +type JUnitProperties struct { + Properties []JUnitProperty `xml:"property"` +} + +func (jup JUnitProperties) WithName(name string) string { + for _, property := range jup.Properties { + if property.Name == name { + return property.Value + } + } + return "" +} + +type JUnitProperty struct { + Name string `xml:"name,attr"` + Value string `xml:"value,attr"` +} + +var ownerRE = regexp.MustCompile(`(?i)^owner:(.*)$`) + +type JUnitTestCase struct { + // Name maps onto the full text of the spec - equivalent to "[SpecReport.LeafNodeType] SpecReport.FullText()" + Name string `xml:"name,attr"` + // Classname maps onto the name of the test suite - equivalent to Report.SuiteDescription + Classname string `xml:"classname,attr"` + // Status maps onto the string representation of SpecReport.State + Status string `xml:"status,attr"` + // Time is the time in seconds to execute the spec - maps onto SpecReport.RunTime + Time float64 `xml:"time,attr"` + // Owner is the owner the spec - is set if a label matching Label("owner:X") is provided. The last matching label is used as the owner, thereby allowing specs to override owners specified in container nodes. + Owner string `xml:"owner,attr,omitempty"` + //Skipped is populated with a message if the test was skipped or pending + Skipped *JUnitSkipped `xml:"skipped,omitempty"` + //Error is populated if the test panicked or was interrupted + Error *JUnitError `xml:"error,omitempty"` + //Failure is populated if the test failed + Failure *JUnitFailure `xml:"failure,omitempty"` + //SystemOut maps onto any captured stdout/stderr output - maps onto SpecReport.CapturedStdOutErr + SystemOut string `xml:"system-out,omitempty"` + //SystemOut maps onto any captured GinkgoWriter output - maps onto SpecReport.CapturedGinkgoWriterOutput + SystemErr string `xml:"system-err,omitempty"` +} + +type JUnitSkipped struct { + // Message maps onto "pending" if the test was marked pending, "skipped" if the test was marked skipped, and "skipped - REASON" if the user called Skip(REASON) + Message string `xml:"message,attr"` +} + +type JUnitError struct { + //Message maps onto the panic/exception thrown - equivalent to SpecReport.Failure.ForwardedPanic - or to "interrupted" + Message string `xml:"message,attr"` + //Type is one of "panicked" or "interrupted" + Type string `xml:"type,attr"` + //Description maps onto the captured stack trace for a panic, or the failure message for an interrupt which will include the dump of running goroutines + Description string `xml:",chardata"` +} + +type JUnitFailure struct { + //Message maps onto the failure message - equivalent to SpecReport.Failure.Message + Message string `xml:"message,attr"` + //Type is "failed" + Type string `xml:"type,attr"` + //Description maps onto the location and stack trace of the failure + Description string `xml:",chardata"` +} + +func GenerateJUnitReport(report types.Report, dst string) error { + return GenerateJUnitReportWithConfig(report, dst, JunitReportConfig{}) +} + +func GenerateJUnitReportWithConfig(report types.Report, dst string, config JunitReportConfig) error { + suite := JUnitTestSuite{ + Name: report.SuiteDescription, + Package: report.SuitePath, + Time: report.RunTime.Seconds(), + Timestamp: report.StartTime.Format("2006-01-02T15:04:05"), + Properties: JUnitProperties{ + Properties: []JUnitProperty{ + {"SuiteSucceeded", fmt.Sprintf("%t", report.SuiteSucceeded)}, + {"SuiteHasProgrammaticFocus", fmt.Sprintf("%t", report.SuiteHasProgrammaticFocus)}, + {"SpecialSuiteFailureReason", strings.Join(report.SpecialSuiteFailureReasons, ",")}, + {"SuiteLabels", fmt.Sprintf("[%s]", strings.Join(report.SuiteLabels, ","))}, + {"RandomSeed", fmt.Sprintf("%d", report.SuiteConfig.RandomSeed)}, + {"RandomizeAllSpecs", fmt.Sprintf("%t", report.SuiteConfig.RandomizeAllSpecs)}, + {"LabelFilter", report.SuiteConfig.LabelFilter}, + {"FocusStrings", strings.Join(report.SuiteConfig.FocusStrings, ",")}, + {"SkipStrings", strings.Join(report.SuiteConfig.SkipStrings, ",")}, + {"FocusFiles", strings.Join(report.SuiteConfig.FocusFiles, ";")}, + {"SkipFiles", strings.Join(report.SuiteConfig.SkipFiles, ";")}, + {"FailOnPending", fmt.Sprintf("%t", report.SuiteConfig.FailOnPending)}, + {"FailOnEmpty", fmt.Sprintf("%t", report.SuiteConfig.FailOnEmpty)}, + {"FailFast", fmt.Sprintf("%t", report.SuiteConfig.FailFast)}, + {"FlakeAttempts", fmt.Sprintf("%d", report.SuiteConfig.FlakeAttempts)}, + {"DryRun", fmt.Sprintf("%t", report.SuiteConfig.DryRun)}, + {"ParallelTotal", fmt.Sprintf("%d", report.SuiteConfig.ParallelTotal)}, + {"OutputInterceptorMode", report.SuiteConfig.OutputInterceptorMode}, + }, + }, + } + for _, spec := range report.SpecReports { + if config.OmitSuiteSetupNodes && spec.LeafNodeType != types.NodeTypeIt { + continue + } + name := fmt.Sprintf("[%s]", spec.LeafNodeType) + if config.OmitLeafNodeType { + name = "" + } + if spec.FullText() != "" { + name = name + " " + spec.FullText() + } + labels := spec.Labels() + if len(labels) > 0 && !config.OmitSpecLabels { + name = name + " [" + strings.Join(labels, ", ") + "]" + } + owner := "" + for _, label := range labels { + if matches := ownerRE.FindStringSubmatch(label); len(matches) == 2 { + owner = matches[1] + } + } + name = strings.TrimSpace(name) + + test := JUnitTestCase{ + Name: name, + Classname: report.SuiteDescription, + Status: spec.State.String(), + Time: spec.RunTime.Seconds(), + Owner: owner, + } + if !spec.State.Is(config.OmitTimelinesForSpecState) { + test.SystemErr = systemErrForUnstructuredReporters(spec) + } + if !config.OmitCapturedStdOutErr { + test.SystemOut = systemOutForUnstructuredReporters(spec) + } + suite.Tests += 1 + + switch spec.State { + case types.SpecStateSkipped: + message := "skipped" + if spec.Failure.Message != "" { + message += " - " + spec.Failure.Message + } + test.Skipped = &JUnitSkipped{Message: message} + suite.Skipped += 1 + case types.SpecStatePending: + test.Skipped = &JUnitSkipped{Message: "pending"} + suite.Disabled += 1 + case types.SpecStateFailed: + test.Failure = &JUnitFailure{ + Message: spec.Failure.Message, + Type: "failed", + Description: failureDescriptionForUnstructuredReporters(spec), + } + if config.OmitFailureMessageAttr { + test.Failure.Message = "" + } + suite.Failures += 1 + case types.SpecStateTimedout: + test.Failure = &JUnitFailure{ + Message: spec.Failure.Message, + Type: "timedout", + Description: failureDescriptionForUnstructuredReporters(spec), + } + if config.OmitFailureMessageAttr { + test.Failure.Message = "" + } + suite.Failures += 1 + case types.SpecStateInterrupted: + test.Error = &JUnitError{ + Message: spec.Failure.Message, + Type: "interrupted", + Description: failureDescriptionForUnstructuredReporters(spec), + } + if config.OmitFailureMessageAttr { + test.Error.Message = "" + } + suite.Errors += 1 + case types.SpecStateAborted: + test.Failure = &JUnitFailure{ + Message: spec.Failure.Message, + Type: "aborted", + Description: failureDescriptionForUnstructuredReporters(spec), + } + if config.OmitFailureMessageAttr { + test.Failure.Message = "" + } + suite.Errors += 1 + case types.SpecStatePanicked: + test.Error = &JUnitError{ + Message: spec.Failure.ForwardedPanic, + Type: "panicked", + Description: failureDescriptionForUnstructuredReporters(spec), + } + if config.OmitFailureMessageAttr { + test.Error.Message = "" + } + suite.Errors += 1 + } + + suite.TestCases = append(suite.TestCases, test) + } + + junitReport := JUnitTestSuites{ + Tests: suite.Tests, + Disabled: suite.Disabled + suite.Skipped, + Errors: suite.Errors, + Failures: suite.Failures, + Time: suite.Time, + TestSuites: []JUnitTestSuite{suite}, + } + + if err := os.MkdirAll(path.Dir(dst), 0770); err != nil { + return err + } + f, err := os.Create(dst) + if err != nil { + return err + } + f.WriteString(xml.Header) + encoder := xml.NewEncoder(f) + encoder.Indent(" ", " ") + encoder.Encode(junitReport) + + return f.Close() +} + +func MergeAndCleanupJUnitReports(sources []string, dst string) ([]string, error) { + messages := []string{} + mergedReport := JUnitTestSuites{} + for _, source := range sources { + report := JUnitTestSuites{} + f, err := os.Open(source) + if err != nil { + messages = append(messages, fmt.Sprintf("Could not open %s:\n%s", source, err.Error())) + continue + } + err = xml.NewDecoder(f).Decode(&report) + _ = f.Close() + if err != nil { + messages = append(messages, fmt.Sprintf("Could not decode %s:\n%s", source, err.Error())) + continue + } + os.Remove(source) + + mergedReport.Tests += report.Tests + mergedReport.Disabled += report.Disabled + mergedReport.Errors += report.Errors + mergedReport.Failures += report.Failures + mergedReport.Time += report.Time + mergedReport.TestSuites = append(mergedReport.TestSuites, report.TestSuites...) + } + + if err := os.MkdirAll(path.Dir(dst), 0770); err != nil { + return messages, err + } + f, err := os.Create(dst) + if err != nil { + return messages, err + } + f.WriteString(xml.Header) + encoder := xml.NewEncoder(f) + encoder.Indent(" ", " ") + encoder.Encode(mergedReport) + + return messages, f.Close() +} + +func failureDescriptionForUnstructuredReporters(spec types.SpecReport) string { + out := &strings.Builder{} + NewDefaultReporter(types.ReporterConfig{NoColor: true, VeryVerbose: true}, out).emitFailure(0, spec.State, spec.Failure, true) + if len(spec.AdditionalFailures) > 0 { + out.WriteString("\nThere were additional failures detected after the initial failure. These are visible in the timeline\n") + } + return out.String() +} + +func systemErrForUnstructuredReporters(spec types.SpecReport) string { + return RenderTimeline(spec, true) +} + +func RenderTimeline(spec types.SpecReport, noColor bool) string { + out := &strings.Builder{} + NewDefaultReporter(types.ReporterConfig{NoColor: noColor, VeryVerbose: true}, out).emitTimeline(0, spec, spec.Timeline()) + return out.String() +} + +func systemOutForUnstructuredReporters(spec types.SpecReport) string { + return spec.CapturedStdOutErr +} + +// Deprecated JUnitReporter (so folks can still compile their suites) +type JUnitReporter struct{} + +func NewJUnitReporter(_ string) *JUnitReporter { return &JUnitReporter{} } +func (reporter *JUnitReporter) SuiteWillBegin(_ config.GinkgoConfigType, _ *types.SuiteSummary) {} +func (reporter *JUnitReporter) BeforeSuiteDidRun(_ *types.SetupSummary) {} +func (reporter *JUnitReporter) SpecWillRun(_ *types.SpecSummary) {} +func (reporter *JUnitReporter) SpecDidComplete(_ *types.SpecSummary) {} +func (reporter *JUnitReporter) AfterSuiteDidRun(_ *types.SetupSummary) {} +func (reporter *JUnitReporter) SuiteDidEnd(_ *types.SuiteSummary) {} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/reporters/reporter.go b/tests/vendor/github.com/onsi/ginkgo/v2/reporters/reporter.go new file mode 100644 index 000000000..5e726c464 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/reporters/reporter.go @@ -0,0 +1,29 @@ +package reporters + +import ( + "github.com/onsi/ginkgo/v2/types" +) + +type Reporter interface { + SuiteWillBegin(report types.Report) + WillRun(report types.SpecReport) + DidRun(report types.SpecReport) + SuiteDidEnd(report types.Report) + + //Timeline emission + EmitFailure(state types.SpecState, failure types.Failure) + EmitProgressReport(progressReport types.ProgressReport) + EmitReportEntry(entry types.ReportEntry) + EmitSpecEvent(event types.SpecEvent) +} + +type NoopReporter struct{} + +func (n NoopReporter) SuiteWillBegin(report types.Report) {} +func (n NoopReporter) WillRun(report types.SpecReport) {} +func (n NoopReporter) DidRun(report types.SpecReport) {} +func (n NoopReporter) SuiteDidEnd(report types.Report) {} +func (n NoopReporter) EmitFailure(state types.SpecState, failure types.Failure) {} +func (n NoopReporter) EmitProgressReport(progressReport types.ProgressReport) {} +func (n NoopReporter) EmitReportEntry(entry types.ReportEntry) {} +func (n NoopReporter) EmitSpecEvent(event types.SpecEvent) {} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/reporters/teamcity_report.go b/tests/vendor/github.com/onsi/ginkgo/v2/reporters/teamcity_report.go new file mode 100644 index 000000000..e990ad82e --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/reporters/teamcity_report.go @@ -0,0 +1,105 @@ +/* + +TeamCity Reporter for Ginkgo + +Makes use of TeamCity's support for Service Messages +http://confluence.jetbrains.com/display/TCD7/Build+Script+Interaction+with+TeamCity#BuildScriptInteractionwithTeamCity-ReportingTests +*/ + +package reporters + +import ( + "fmt" + "os" + "path" + "strings" + + "github.com/onsi/ginkgo/v2/types" +) + +func tcEscape(s string) string { + s = strings.ReplaceAll(s, "|", "||") + s = strings.ReplaceAll(s, "'", "|'") + s = strings.ReplaceAll(s, "\n", "|n") + s = strings.ReplaceAll(s, "\r", "|r") + s = strings.ReplaceAll(s, "[", "|[") + s = strings.ReplaceAll(s, "]", "|]") + return s +} + +func GenerateTeamcityReport(report types.Report, dst string) error { + if err := os.MkdirAll(path.Dir(dst), 0770); err != nil { + return err + } + f, err := os.Create(dst) + if err != nil { + return err + } + + name := report.SuiteDescription + labels := report.SuiteLabels + if len(labels) > 0 { + name = name + " [" + strings.Join(labels, ", ") + "]" + } + fmt.Fprintf(f, "##teamcity[testSuiteStarted name='%s']\n", tcEscape(name)) + for _, spec := range report.SpecReports { + name := fmt.Sprintf("[%s]", spec.LeafNodeType) + if spec.FullText() != "" { + name = name + " " + spec.FullText() + } + labels := spec.Labels() + if len(labels) > 0 { + name = name + " [" + strings.Join(labels, ", ") + "]" + } + + name = tcEscape(name) + fmt.Fprintf(f, "##teamcity[testStarted name='%s']\n", name) + switch spec.State { + case types.SpecStatePending: + fmt.Fprintf(f, "##teamcity[testIgnored name='%s' message='pending']\n", name) + case types.SpecStateSkipped: + message := "skipped" + if spec.Failure.Message != "" { + message += " - " + spec.Failure.Message + } + fmt.Fprintf(f, "##teamcity[testIgnored name='%s' message='%s']\n", name, tcEscape(message)) + case types.SpecStateFailed: + details := failureDescriptionForUnstructuredReporters(spec) + fmt.Fprintf(f, "##teamcity[testFailed name='%s' message='failed - %s' details='%s']\n", name, tcEscape(spec.Failure.Message), tcEscape(details)) + case types.SpecStatePanicked: + details := failureDescriptionForUnstructuredReporters(spec) + fmt.Fprintf(f, "##teamcity[testFailed name='%s' message='panicked - %s' details='%s']\n", name, tcEscape(spec.Failure.ForwardedPanic), tcEscape(details)) + case types.SpecStateTimedout: + details := failureDescriptionForUnstructuredReporters(spec) + fmt.Fprintf(f, "##teamcity[testFailed name='%s' message='timedout - %s' details='%s']\n", name, tcEscape(spec.Failure.Message), tcEscape(details)) + case types.SpecStateInterrupted: + details := failureDescriptionForUnstructuredReporters(spec) + fmt.Fprintf(f, "##teamcity[testFailed name='%s' message='interrupted - %s' details='%s']\n", name, tcEscape(spec.Failure.Message), tcEscape(details)) + case types.SpecStateAborted: + details := failureDescriptionForUnstructuredReporters(spec) + fmt.Fprintf(f, "##teamcity[testFailed name='%s' message='aborted - %s' details='%s']\n", name, tcEscape(spec.Failure.Message), tcEscape(details)) + } + + fmt.Fprintf(f, "##teamcity[testStdOut name='%s' out='%s']\n", name, tcEscape(systemOutForUnstructuredReporters(spec))) + fmt.Fprintf(f, "##teamcity[testStdErr name='%s' out='%s']\n", name, tcEscape(systemErrForUnstructuredReporters(spec))) + fmt.Fprintf(f, "##teamcity[testFinished name='%s' duration='%d']\n", name, int(spec.RunTime.Seconds()*1000.0)) + } + fmt.Fprintf(f, "##teamcity[testSuiteFinished name='%s']\n", tcEscape(report.SuiteDescription)) + + return f.Close() +} + +func MergeAndCleanupTeamcityReports(sources []string, dst string) ([]string, error) { + messages := []string{} + merged := []byte{} + for _, source := range sources { + data, err := os.ReadFile(source) + if err != nil { + messages = append(messages, fmt.Sprintf("Could not open %s:\n%s", source, err.Error())) + continue + } + os.Remove(source) + merged = append(merged, data...) + } + return messages, os.WriteFile(dst, merged, 0666) +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/reporting_dsl.go b/tests/vendor/github.com/onsi/ginkgo/v2/reporting_dsl.go new file mode 100644 index 000000000..5bf2e62e9 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/reporting_dsl.go @@ -0,0 +1,221 @@ +package ginkgo + +import ( + "fmt" + "strings" + + "github.com/onsi/ginkgo/v2/internal" + "github.com/onsi/ginkgo/v2/internal/global" + "github.com/onsi/ginkgo/v2/reporters" + "github.com/onsi/ginkgo/v2/types" +) + +/* +Report represents the report for a Suite. +It is documented here: https://pkg.go.dev/github.com/onsi/ginkgo/v2/types#Report +*/ +type Report = types.Report + +/* +Report represents the report for a Spec. +It is documented here: https://pkg.go.dev/github.com/onsi/ginkgo/v2/types#SpecReport +*/ +type SpecReport = types.SpecReport + +/* +CurrentSpecReport returns information about the current running spec. +The returned object is a types.SpecReport which includes helper methods +to make extracting information about the spec easier. + +You can learn more about SpecReport here: https://pkg.go.dev/github.com/onsi/ginkgo/types#SpecReport +You can learn more about CurrentSpecReport() here: https://onsi.github.io/ginkgo/#getting-a-report-for-the-current-spec +*/ +func CurrentSpecReport() SpecReport { + return global.Suite.CurrentSpecReport() +} + +/* + ReportEntryVisibility governs the visibility of ReportEntries in Ginkgo's console reporter + +- ReportEntryVisibilityAlways: the default behavior - the ReportEntry is always emitted. +- ReportEntryVisibilityFailureOrVerbose: the ReportEntry is only emitted if the spec fails or if the tests are run with -v (similar to GinkgoWriters behavior). +- ReportEntryVisibilityNever: the ReportEntry is never emitted though it appears in any generated machine-readable reports (e.g. by setting `--json-report`). + +You can learn more about Report Entries here: https://onsi.github.io/ginkgo/#attaching-data-to-reports +*/ +type ReportEntryVisibility = types.ReportEntryVisibility + +const ReportEntryVisibilityAlways, ReportEntryVisibilityFailureOrVerbose, ReportEntryVisibilityNever = types.ReportEntryVisibilityAlways, types.ReportEntryVisibilityFailureOrVerbose, types.ReportEntryVisibilityNever + +/* +AddReportEntry generates and adds a new ReportEntry to the current spec's SpecReport. +It can take any of the following arguments: + - A single arbitrary object to attach as the Value of the ReportEntry. This object will be included in any generated reports and will be emitted to the console when the report is emitted. + - A ReportEntryVisibility enum to control the visibility of the ReportEntry + - An Offset or CodeLocation decoration to control the reported location of the ReportEntry + +If the Value object implements `fmt.Stringer`, it's `String()` representation is used when emitting to the console. + +AddReportEntry() must be called within a Subject or Setup node - not in a Container node. + +You can learn more about Report Entries here: https://onsi.github.io/ginkgo/#attaching-data-to-reports +*/ +func AddReportEntry(name string, args ...any) { + cl := types.NewCodeLocation(1) + reportEntry, err := internal.NewReportEntry(name, cl, args...) + if err != nil { + Fail(fmt.Sprintf("Failed to generate Report Entry:\n%s", err.Error()), 1) + } + err = global.Suite.AddReportEntry(reportEntry) + if err != nil { + Fail(fmt.Sprintf("Failed to add Report Entry:\n%s", err.Error()), 1) + } +} + +/* +ReportBeforeEach nodes are run for each spec, even if the spec is skipped or pending. ReportBeforeEach nodes take a function that +receives a SpecReport or both SpecContext and Report for interruptible behavior. They are called before the spec starts. + +Example: + + ReportBeforeEach(func(report SpecReport) { // process report }) + ReportBeforeEach(func(ctx SpecContext, report SpecReport) { + // process report + }), NodeTimeout(1 * time.Minute)) + +You cannot nest any other Ginkgo nodes within a ReportBeforeEach node's closure. +You can learn more about ReportBeforeEach here: https://onsi.github.io/ginkgo/#generating-reports-programmatically + +You can learn about interruptible nodes here: https://onsi.github.io/ginkgo/#spec-timeouts-and-interruptible-nodes +*/ +func ReportBeforeEach(body any, args ...any) bool { + combinedArgs := []any{body} + combinedArgs = append(combinedArgs, args...) + + return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeReportBeforeEach, "", combinedArgs...)) +} + +/* +ReportAfterEach nodes are run for each spec, even if the spec is skipped or pending. +ReportAfterEach nodes take a function that receives a SpecReport or both SpecContext and Report for interruptible behavior. +They are called after the spec has completed and receive the final report for the spec. + +Example: + + ReportAfterEach(func(report SpecReport) { // process report }) + ReportAfterEach(func(ctx SpecContext, report SpecReport) { + // process report + }), NodeTimeout(1 * time.Minute)) + +You cannot nest any other Ginkgo nodes within a ReportAfterEach node's closure. +You can learn more about ReportAfterEach here: https://onsi.github.io/ginkgo/#generating-reports-programmatically + +You can learn about interruptible nodes here: https://onsi.github.io/ginkgo/#spec-timeouts-and-interruptible-nodes +*/ +func ReportAfterEach(body any, args ...any) bool { + combinedArgs := []any{body} + combinedArgs = append(combinedArgs, args...) + + return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeReportAfterEach, "", combinedArgs...)) +} + +/* +ReportBeforeSuite nodes are run at the beginning of the suite. ReportBeforeSuite nodes take a function +that can either receive Report or both SpecContext and Report for interruptible behavior. + +Example Usage: + + ReportBeforeSuite(func(r Report) { // process report }) + ReportBeforeSuite(func(ctx SpecContext, r Report) { + // process report + }, NodeTimeout(1 * time.Minute)) + +They are called at the beginning of the suite, before any specs have run and any BeforeSuite or SynchronizedBeforeSuite nodes, and are passed in the initial report for the suite. +ReportBeforeSuite nodes must be created at the top-level (i.e. not nested in a Context/Describe/When node) + +# When running in parallel, Ginkgo ensures that only one of the parallel nodes runs the ReportBeforeSuite + +You cannot nest any other Ginkgo nodes within a ReportAfterSuite node's closure. +You can learn more about ReportAfterSuite here: https://onsi.github.io/ginkgo/#generating-reports-programmatically + +You can learn more about Ginkgo's reporting infrastructure, including generating reports with the CLI here: https://onsi.github.io/ginkgo/#generating-machine-readable-reports + +You can learn about interruptible nodes here: https://onsi.github.io/ginkgo/#spec-timeouts-and-interruptible-nodes +*/ +func ReportBeforeSuite(body any, args ...any) bool { + combinedArgs := []any{body} + combinedArgs = append(combinedArgs, args...) + return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeReportBeforeSuite, "", combinedArgs...)) +} + +/* +ReportAfterSuite nodes are run at the end of the suite. ReportAfterSuite nodes execute at the suite's conclusion, +and accept a function that can either receive Report or both SpecContext and Report for interruptible behavior. + +Example Usage: + + ReportAfterSuite("Non-interruptible ReportAfterSuite", func(r Report) { // process report }) + ReportAfterSuite("Interruptible ReportAfterSuite", func(ctx SpecContext, r Report) { + // process report + }, NodeTimeout(1 * time.Minute)) + +They are called at the end of the suite, after all specs have run and any AfterSuite or SynchronizedAfterSuite nodes, and are passed in the final report for the suite. +ReportAfterSuite nodes must be created at the top-level (i.e. not nested in a Context/Describe/When node) + +When running in parallel, Ginkgo ensures that only one of the parallel nodes runs the ReportAfterSuite and that it is passed a report that is aggregated across +all parallel nodes + +In addition to using ReportAfterSuite to programmatically generate suite reports, you can also generate JSON, JUnit, and Teamcity formatted reports using the --json-report, --junit-report, and --teamcity-report ginkgo CLI flags. + +You cannot nest any other Ginkgo nodes within a ReportAfterSuite node's closure. +You can learn more about ReportAfterSuite here: https://onsi.github.io/ginkgo/#generating-reports-programmatically + +You can learn more about Ginkgo's reporting infrastructure, including generating reports with the CLI here: https://onsi.github.io/ginkgo/#generating-machine-readable-reports + +You can learn about interruptible nodes here: https://onsi.github.io/ginkgo/#spec-timeouts-and-interruptible-nodes +*/ +func ReportAfterSuite(text string, body any, args ...any) bool { + combinedArgs := []any{body} + combinedArgs = append(combinedArgs, args...) + return pushNode(internal.NewNode(deprecationTracker, types.NodeTypeReportAfterSuite, text, combinedArgs...)) +} + +func registerReportAfterSuiteNodeForAutogeneratedReports(reporterConfig types.ReporterConfig) { + body := func(report Report) { + if reporterConfig.JSONReport != "" { + err := reporters.GenerateJSONReport(report, reporterConfig.JSONReport) + if err != nil { + Fail(fmt.Sprintf("Failed to generate JSON report:\n%s", err.Error())) + } + } + if reporterConfig.JUnitReport != "" { + err := reporters.GenerateJUnitReport(report, reporterConfig.JUnitReport) + if err != nil { + Fail(fmt.Sprintf("Failed to generate JUnit report:\n%s", err.Error())) + } + } + if reporterConfig.TeamcityReport != "" { + err := reporters.GenerateTeamcityReport(report, reporterConfig.TeamcityReport) + if err != nil { + Fail(fmt.Sprintf("Failed to generate Teamcity report:\n%s", err.Error())) + } + } + } + + flags := []string{} + if reporterConfig.JSONReport != "" { + flags = append(flags, "--json-report") + } + if reporterConfig.JUnitReport != "" { + flags = append(flags, "--junit-report") + } + if reporterConfig.TeamcityReport != "" { + flags = append(flags, "--teamcity-report") + } + pushNode(internal.NewNode( + deprecationTracker, types.NodeTypeReportAfterSuite, + fmt.Sprintf("Autogenerated ReportAfterSuite for %s", strings.Join(flags, " ")), + body, + types.NewCustomCodeLocation("autogenerated by Ginkgo"), + )) +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/table_dsl.go b/tests/vendor/github.com/onsi/ginkgo/v2/table_dsl.go new file mode 100644 index 000000000..b9e0ca9ef --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/table_dsl.go @@ -0,0 +1,386 @@ +package ginkgo + +import ( + "context" + "fmt" + "reflect" + "strings" + + "github.com/onsi/ginkgo/v2/internal" + "github.com/onsi/ginkgo/v2/types" +) + +/* +The EntryDescription decorator allows you to pass a format string to DescribeTable() and Entry(). This format string is used to generate entry names via: + + fmt.Sprintf(formatString, parameters...) + +where parameters are the parameters passed into the entry. + +When passed into an Entry the EntryDescription is used to generate the name or that entry. When passed to DescribeTable, the EntryDescription is used to generate the names for any entries that have `nil` descriptions. + +You can learn more about generating EntryDescriptions here: https://onsi.github.io/ginkgo/#generating-entry-descriptions +*/ +type EntryDescription string + +func (ed EntryDescription) render(args ...any) string { + return fmt.Sprintf(string(ed), args...) +} + +/* +DescribeTable describes a table-driven spec. + +For example: + + DescribeTable("a simple table", + func(x int, y int, expected bool) { + Ω(x > y).Should(Equal(expected)) + }, + Entry("x > y", 1, 0, true), + Entry("x == y", 0, 0, false), + Entry("x < y", 0, 1, false), + ) + +You can learn more about DescribeTable here: https://onsi.github.io/ginkgo/#table-specs +And can explore some Table patterns here: https://onsi.github.io/ginkgo/#table-specs-patterns +*/ +func DescribeTable(description string, args ...any) bool { + GinkgoHelper() + generateTable(description, false, args...) + return true +} + +/* +You can focus a table with `FDescribeTable`. This is equivalent to `FDescribe`. +*/ +func FDescribeTable(description string, args ...any) bool { + GinkgoHelper() + args = append(args, internal.Focus) + generateTable(description, false, args...) + return true +} + +/* +You can mark a table as pending with `PDescribeTable`. This is equivalent to `PDescribe`. +*/ +func PDescribeTable(description string, args ...any) bool { + GinkgoHelper() + args = append(args, internal.Pending) + generateTable(description, false, args...) + return true +} + +/* +You can mark a table as pending with `XDescribeTable`. This is equivalent to `XDescribe`. +*/ +var XDescribeTable = PDescribeTable + +/* +DescribeTableSubtree describes a table-driven spec that generates a set of tests for each entry. + +For example: + + DescribeTableSubtree("a subtree table", + func(url string, code int, message string) { + var resp *http.Response + BeforeEach(func() { + var err error + resp, err = http.Get(url) + Expect(err).NotTo(HaveOccurred()) + DeferCleanup(resp.Body.Close) + }) + + It("should return the expected status code", func() { + Expect(resp.StatusCode).To(Equal(code)) + }) + + It("should return the expected message", func() { + body, err := io.ReadAll(resp.Body) + Expect(err).NotTo(HaveOccurred()) + Expect(string(body)).To(Equal(message)) + }) + }, + Entry("default response", "example.com/response", http.StatusOK, "hello world"), + Entry("missing response", "example.com/missing", http.StatusNotFound, "wat?"), + ) + +Note that you **must** place define an It inside the body function. + +You can learn more about DescribeTableSubtree here: https://onsi.github.io/ginkgo/#table-specs +And can explore some Table patterns here: https://onsi.github.io/ginkgo/#table-specs-patterns +*/ +func DescribeTableSubtree(description string, args ...any) bool { + GinkgoHelper() + generateTable(description, true, args...) + return true +} + +/* +You can focus a table with `FDescribeTableSubtree`. This is equivalent to `FDescribe`. +*/ +func FDescribeTableSubtree(description string, args ...any) bool { + GinkgoHelper() + args = append(args, internal.Focus) + generateTable(description, true, args...) + return true +} + +/* +You can mark a table as pending with `PDescribeTableSubtree`. This is equivalent to `PDescribe`. +*/ +func PDescribeTableSubtree(description string, args ...any) bool { + GinkgoHelper() + args = append(args, internal.Pending) + generateTable(description, true, args...) + return true +} + +/* +You can mark a table as pending with `XDescribeTableSubtree`. This is equivalent to `XDescribe`. +*/ +var XDescribeTableSubtree = PDescribeTableSubtree + +/* +TableEntry represents an entry in a table test. You generally use the `Entry` constructor. +*/ +type TableEntry struct { + description any + decorations []any + parameters []any + codeLocation types.CodeLocation +} + +/* +Entry constructs a TableEntry. + +The first argument is a description. This can be a string, a function that accepts the parameters passed to the TableEntry and returns a string, an EntryDescription format string, or nil. If nil is provided then the name of the Entry is derived using the table-level entry description. +Subsequent arguments accept any Ginkgo decorators. These are filtered out and the remaining arguments are passed into the Spec function associated with the table. + +Each Entry ends up generating an individual Ginkgo It. The body of the it is the Table Body function with the Entry parameters passed in. + +If you want to generate interruptible specs simply write a Table function that accepts a SpecContext as its first argument. You can then decorate individual Entrys with the NodeTimeout and SpecTimeout decorators. + +You can learn more about Entry here: https://onsi.github.io/ginkgo/#table-specs +*/ +func Entry(description any, args ...any) TableEntry { + GinkgoHelper() + decorations, parameters := internal.PartitionDecorations(args...) + return TableEntry{description: description, decorations: decorations, parameters: parameters, codeLocation: types.NewCodeLocation(0)} +} + +/* +You can focus a particular entry with FEntry. This is equivalent to FIt. +*/ +func FEntry(description any, args ...any) TableEntry { + GinkgoHelper() + decorations, parameters := internal.PartitionDecorations(args...) + decorations = append(decorations, internal.Focus) + return TableEntry{description: description, decorations: decorations, parameters: parameters, codeLocation: types.NewCodeLocation(0)} +} + +/* +You can mark a particular entry as pending with PEntry. This is equivalent to PIt. +*/ +func PEntry(description any, args ...any) TableEntry { + GinkgoHelper() + decorations, parameters := internal.PartitionDecorations(args...) + decorations = append(decorations, internal.Pending) + return TableEntry{description: description, decorations: decorations, parameters: parameters, codeLocation: types.NewCodeLocation(0)} +} + +/* +You can mark a particular entry as pending with XEntry. This is equivalent to XIt. +*/ +var XEntry = PEntry + +var contextType = reflect.TypeOf(new(context.Context)).Elem() +var specContextType = reflect.TypeOf(new(SpecContext)).Elem() + +func generateTable(description string, isSubtree bool, args ...any) { + GinkgoHelper() + cl := types.NewCodeLocation(0) + containerNodeArgs := []any{cl} + + entries := []TableEntry{} + var internalBody any + var internalBodyType reflect.Type + + var tableLevelEntryDescription any + tableLevelEntryDescription = func(args ...any) string { + out := []string{} + for _, arg := range args { + out = append(out, fmt.Sprint(arg)) + } + return "Entry: " + strings.Join(out, ", ") + } + + if len(args) == 1 { + exitIfErr(types.GinkgoErrors.MissingParametersForTableFunction(cl)) + } + + for i, arg := range args { + switch t := reflect.TypeOf(arg); { + case t == nil: + exitIfErr(types.GinkgoErrors.IncorrectParameterTypeForTable(i, "nil", cl)) + case t == reflect.TypeOf(TableEntry{}): + entries = append(entries, arg.(TableEntry)) + case t == reflect.TypeOf([]TableEntry{}): + entries = append(entries, arg.([]TableEntry)...) + case t == reflect.TypeOf(EntryDescription("")): + tableLevelEntryDescription = arg.(EntryDescription).render + case t.Kind() == reflect.Func && t.NumOut() == 1 && t.Out(0) == reflect.TypeOf(""): + tableLevelEntryDescription = arg + case t.Kind() == reflect.Func: + if internalBody != nil { + exitIfErr(types.GinkgoErrors.MultipleEntryBodyFunctionsForTable(cl)) + } + internalBody = arg + internalBodyType = reflect.TypeOf(internalBody) + default: + containerNodeArgs = append(containerNodeArgs, arg) + } + } + + containerNodeArgs = append(containerNodeArgs, func() { + for _, entry := range entries { + var err error + entry := entry + var description string + switch t := reflect.TypeOf(entry.description); { + case t == nil: + err = validateParameters(tableLevelEntryDescription, entry.parameters, "Entry Description function", entry.codeLocation, false) + if err == nil { + description = invokeFunction(tableLevelEntryDescription, entry.parameters)[0].String() + } + case t == reflect.TypeOf(EntryDescription("")): + description = entry.description.(EntryDescription).render(entry.parameters...) + case t == reflect.TypeOf(""): + description = entry.description.(string) + case t.Kind() == reflect.Func && t.NumOut() == 1 && t.Out(0) == reflect.TypeOf(""): + err = validateParameters(entry.description, entry.parameters, "Entry Description function", entry.codeLocation, false) + if err == nil { + description = invokeFunction(entry.description, entry.parameters)[0].String() + } + default: + err = types.GinkgoErrors.InvalidEntryDescription(entry.codeLocation) + } + + internalNodeArgs := []any{entry.codeLocation} + internalNodeArgs = append(internalNodeArgs, entry.decorations...) + + hasContext := false + if internalBodyType.NumIn() > 0 { + if internalBodyType.In(0).Implements(specContextType) { + hasContext = true + } else if internalBodyType.In(0).Implements(contextType) { + hasContext = true + if len(entry.parameters) > 0 && reflect.TypeOf(entry.parameters[0]) != nil && reflect.TypeOf(entry.parameters[0]).Implements(contextType) { + // we allow you to pass in a non-nil context + hasContext = false + } + } + } + + if err == nil { + err = validateParameters(internalBody, entry.parameters, "Table Body function", entry.codeLocation, hasContext) + } + + if hasContext { + internalNodeArgs = append(internalNodeArgs, func(c SpecContext) { + if err != nil { + panic(err) + } + invokeFunction(internalBody, append([]any{c}, entry.parameters...)) + }) + if isSubtree { + exitIfErr(types.GinkgoErrors.ContextsCannotBeUsedInSubtreeTables(cl)) + } + } else { + internalNodeArgs = append(internalNodeArgs, func() { + if err != nil { + panic(err) + } + invokeFunction(internalBody, entry.parameters) + }) + } + + internalNodeType := types.NodeTypeIt + if isSubtree { + internalNodeType = types.NodeTypeContainer + } + + pushNode(internal.NewNode(deprecationTracker, internalNodeType, description, internalNodeArgs...)) + } + }) + + pushNode(internal.NewNode(deprecationTracker, types.NodeTypeContainer, description, containerNodeArgs...)) +} + +func invokeFunction(function any, parameters []any) []reflect.Value { + inValues := make([]reflect.Value, len(parameters)) + + funcType := reflect.TypeOf(function) + limit := funcType.NumIn() + if funcType.IsVariadic() { + limit = limit - 1 + } + + for i := 0; i < limit && i < len(parameters); i++ { + inValues[i] = computeValue(parameters[i], funcType.In(i)) + } + + if funcType.IsVariadic() { + variadicType := funcType.In(limit).Elem() + for i := limit; i < len(parameters); i++ { + inValues[i] = computeValue(parameters[i], variadicType) + } + } + + return reflect.ValueOf(function).Call(inValues) +} + +func validateParameters(function any, parameters []any, kind string, cl types.CodeLocation, hasContext bool) error { + funcType := reflect.TypeOf(function) + limit := funcType.NumIn() + offset := 0 + if hasContext { + limit = limit - 1 + offset = 1 + } + if funcType.IsVariadic() { + limit = limit - 1 + } + if len(parameters) < limit { + return types.GinkgoErrors.TooFewParametersToTableFunction(limit, len(parameters), kind, cl) + } + if len(parameters) > limit && !funcType.IsVariadic() { + return types.GinkgoErrors.TooManyParametersToTableFunction(limit, len(parameters), kind, cl) + } + var i = 0 + for ; i < limit; i++ { + actual := reflect.TypeOf(parameters[i]) + expected := funcType.In(i + offset) + if !(actual == nil) && !actual.AssignableTo(expected) { + return types.GinkgoErrors.IncorrectParameterTypeToTableFunction(i+1, expected, actual, kind, cl) + } + } + if funcType.IsVariadic() { + expected := funcType.In(limit + offset).Elem() + for ; i < len(parameters); i++ { + actual := reflect.TypeOf(parameters[i]) + if !(actual == nil) && !actual.AssignableTo(expected) { + return types.GinkgoErrors.IncorrectVariadicParameterTypeToTableFunction(expected, actual, kind, cl) + } + } + } + + return nil +} + +func computeValue(parameter any, t reflect.Type) reflect.Value { + if parameter == nil { + return reflect.Zero(t) + } else { + return reflect.ValueOf(parameter) + } +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/types/code_location.go b/tests/vendor/github.com/onsi/ginkgo/v2/types/code_location.go new file mode 100644 index 000000000..57e87517e --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/types/code_location.go @@ -0,0 +1,159 @@ +package types + +import ( + "fmt" + "os" + "regexp" + "runtime" + "runtime/debug" + "strings" + "sync" +) + +type CodeLocation struct { + FileName string `json:",omitempty"` + LineNumber int `json:",omitempty"` + FullStackTrace string `json:",omitempty"` + CustomMessage string `json:",omitempty"` +} + +func (codeLocation CodeLocation) String() string { + if codeLocation.CustomMessage != "" { + return codeLocation.CustomMessage + } + return fmt.Sprintf("%s:%d", codeLocation.FileName, codeLocation.LineNumber) +} + +func (codeLocation CodeLocation) ContentsOfLine() string { + if codeLocation.CustomMessage != "" { + return "" + } + contents, err := os.ReadFile(codeLocation.FileName) + if err != nil { + return "" + } + lines := strings.Split(string(contents), "\n") + if len(lines) < codeLocation.LineNumber { + return "" + } + return lines[codeLocation.LineNumber-1] +} + +type codeLocationLocator struct { + pcs map[uintptr]bool + helpers map[string]bool + lock *sync.Mutex +} + +func (c *codeLocationLocator) addHelper(pc uintptr) { + c.lock.Lock() + defer c.lock.Unlock() + + if c.pcs[pc] { + return + } + c.lock.Unlock() + f := runtime.FuncForPC(pc) + c.lock.Lock() + if f == nil { + return + } + c.helpers[f.Name()] = true + c.pcs[pc] = true +} + +func (c *codeLocationLocator) hasHelper(name string) bool { + c.lock.Lock() + defer c.lock.Unlock() + return c.helpers[name] +} + +func (c *codeLocationLocator) getCodeLocation(skip int) CodeLocation { + pc := make([]uintptr, 40) + n := runtime.Callers(skip+2, pc) + if n == 0 { + return CodeLocation{} + } + pc = pc[:n] + frames := runtime.CallersFrames(pc) + for { + frame, more := frames.Next() + if !c.hasHelper(frame.Function) { + return CodeLocation{FileName: frame.File, LineNumber: frame.Line} + } + if !more { + break + } + } + return CodeLocation{} +} + +var clLocator = &codeLocationLocator{ + pcs: map[uintptr]bool{}, + helpers: map[string]bool{}, + lock: &sync.Mutex{}, +} + +// MarkAsHelper is used by GinkgoHelper to mark the caller (appropriately offset by skip)as a helper. You can use this directly if you need to provide an optional `skip` to mark functions further up the call stack as helpers. +func MarkAsHelper(optionalSkip ...int) { + skip := 1 + if len(optionalSkip) > 0 { + skip += optionalSkip[0] + } + pc, _, _, ok := runtime.Caller(skip) + if ok { + clLocator.addHelper(pc) + } +} + +func NewCustomCodeLocation(message string) CodeLocation { + return CodeLocation{ + CustomMessage: message, + } +} + +func NewCodeLocation(skip int) CodeLocation { + return clLocator.getCodeLocation(skip + 1) +} + +func NewCodeLocationWithStackTrace(skip int) CodeLocation { + cl := clLocator.getCodeLocation(skip + 1) + cl.FullStackTrace = PruneStack(string(debug.Stack()), skip+1) + return cl +} + +// PruneStack removes references to functions that are internal to Ginkgo +// and the Go runtime from a stack string and a certain number of stack entries +// at the beginning of the stack. The stack string has the format +// as returned by runtime/debug.Stack. The leading goroutine information is +// optional and always removed if present. Beware that runtime/debug.Stack +// adds itself as first entry, so typically skip must be >= 1 to remove that +// entry. +func PruneStack(fullStackTrace string, skip int) string { + stack := strings.Split(fullStackTrace, "\n") + // Ensure that the even entries are the method names and the + // odd entries the source code information. + if len(stack) > 0 && strings.HasPrefix(stack[0], "goroutine ") { + // Ignore "goroutine 29 [running]:" line. + stack = stack[1:] + } + // The "+1" is for skipping over the initial entry, which is + // runtime/debug.Stack() itself. + if len(stack) > 2*(skip+1) { + stack = stack[2*(skip+1):] + } + prunedStack := []string{} + if os.Getenv("GINKGO_PRUNE_STACK") == "FALSE" { + prunedStack = stack + } else { + re := regexp.MustCompile(`\/ginkgo\/|\/pkg\/testing\/|\/pkg\/runtime\/`) + for i := 0; i < len(stack)/2; i++ { + // We filter out based on the source code file name. + if !re.MatchString(stack[i*2+1]) { + prunedStack = append(prunedStack, stack[i*2]) + prunedStack = append(prunedStack, stack[i*2+1]) + } + } + } + return strings.Join(prunedStack, "\n") +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/types/config.go b/tests/vendor/github.com/onsi/ginkgo/v2/types/config.go new file mode 100644 index 000000000..2e827efe3 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/types/config.go @@ -0,0 +1,804 @@ +/* +Ginkgo accepts a number of configuration options. +These are documented [here](http://onsi.github.io/ginkgo/#the-ginkgo-cli) +*/ + +package types + +import ( + "flag" + "os" + "path/filepath" + "runtime" + "strconv" + "strings" + "time" +) + +// Configuration controlling how an individual test suite is run +type SuiteConfig struct { + RandomSeed int64 + RandomizeAllSpecs bool + FocusStrings []string + SkipStrings []string + FocusFiles []string + SkipFiles []string + LabelFilter string + FailOnPending bool + FailOnEmpty bool + FailFast bool + FlakeAttempts int + MustPassRepeatedly int + DryRun bool + PollProgressAfter time.Duration + PollProgressInterval time.Duration + Timeout time.Duration + EmitSpecProgress bool // this is deprecated but its removal is causing compile issue for some users that were setting it manually + OutputInterceptorMode string + SourceRoots []string + GracePeriod time.Duration + + ParallelProcess int + ParallelTotal int + ParallelHost string +} + +func NewDefaultSuiteConfig() SuiteConfig { + return SuiteConfig{ + RandomSeed: time.Now().Unix(), + Timeout: time.Hour, + ParallelProcess: 1, + ParallelTotal: 1, + GracePeriod: 30 * time.Second, + } +} + +type VerbosityLevel uint + +const ( + VerbosityLevelSuccinct VerbosityLevel = iota + VerbosityLevelNormal + VerbosityLevelVerbose + VerbosityLevelVeryVerbose +) + +func (vl VerbosityLevel) GT(comp VerbosityLevel) bool { + return vl > comp +} + +func (vl VerbosityLevel) GTE(comp VerbosityLevel) bool { + return vl >= comp +} + +func (vl VerbosityLevel) Is(comp VerbosityLevel) bool { + return vl == comp +} + +func (vl VerbosityLevel) LTE(comp VerbosityLevel) bool { + return vl <= comp +} + +func (vl VerbosityLevel) LT(comp VerbosityLevel) bool { + return vl < comp +} + +// Configuration for Ginkgo's reporter +type ReporterConfig struct { + NoColor bool + Succinct bool + Verbose bool + VeryVerbose bool + FullTrace bool + ShowNodeEvents bool + GithubOutput bool + SilenceSkips bool + ForceNewlines bool + + JSONReport string + JUnitReport string + TeamcityReport string +} + +func (rc ReporterConfig) Verbosity() VerbosityLevel { + if rc.Succinct { + return VerbosityLevelSuccinct + } else if rc.Verbose { + return VerbosityLevelVerbose + } else if rc.VeryVerbose { + return VerbosityLevelVeryVerbose + } + return VerbosityLevelNormal +} + +func (rc ReporterConfig) WillGenerateReport() bool { + return rc.JSONReport != "" || rc.JUnitReport != "" || rc.TeamcityReport != "" +} + +func NewDefaultReporterConfig() ReporterConfig { + return ReporterConfig{} +} + +// Configuration for the Ginkgo CLI +type CLIConfig struct { + //for build, run, and watch + Recurse bool + SkipPackage string + RequireSuite bool + NumCompilers int + + //for run and watch only + Procs int + Parallel bool + AfterRunHook string + OutputDir string + KeepSeparateCoverprofiles bool + KeepSeparateReports bool + + //for run only + KeepGoing bool + UntilItFails bool + Repeat int + RandomizeSuites bool + + //for watch only + Depth int + WatchRegExp string +} + +func NewDefaultCLIConfig() CLIConfig { + return CLIConfig{ + Depth: 1, + WatchRegExp: `\.go$`, + } +} + +func (g CLIConfig) ComputedProcs() int { + if g.Procs > 0 { + return g.Procs + } + + n := 1 + if g.Parallel { + n = runtime.GOMAXPROCS(-1) + if n > 4 { + n = n - 1 + } + } + return n +} + +func (g CLIConfig) ComputedNumCompilers() int { + if g.NumCompilers > 0 { + return g.NumCompilers + } + + return runtime.GOMAXPROCS(-1) +} + +// Configuration for the Ginkgo CLI capturing available go flags +// A subset of Go flags are exposed by Ginkgo. Some are available at compile time (e.g. ginkgo build) and others only at run time (e.g. ginkgo run - which has both build and run time flags). +// More details can be found at: +// https://docs.google.com/spreadsheets/d/1zkp-DS4hU4sAJl5eHh1UmgwxCPQhf3s5a8fbiOI8tJU/ +type GoFlagsConfig struct { + //build-time flags for code-and-performance analysis + Race bool + Cover bool + CoverMode string + CoverPkg string + Vet string + + //run-time flags for code-and-performance analysis + BlockProfile string + BlockProfileRate int + CoverProfile string + CPUProfile string + MemProfile string + MemProfileRate int + MutexProfile string + MutexProfileFraction int + Trace string + + //build-time flags for building + A bool + ASMFlags string + BuildMode string + BuildVCS bool + Compiler string + GCCGoFlags string + GCFlags string + InstallSuffix string + LDFlags string + LinkShared bool + Mod string + N bool + ModFile string + ModCacheRW bool + MSan bool + PkgDir string + Tags string + TrimPath bool + ToolExec string + Work bool + X bool + O string +} + +func NewDefaultGoFlagsConfig() GoFlagsConfig { + return GoFlagsConfig{} +} + +func (g GoFlagsConfig) BinaryMustBePreserved() bool { + return g.BlockProfile != "" || g.CPUProfile != "" || g.MemProfile != "" || g.MutexProfile != "" +} + +func (g GoFlagsConfig) NeedsSymbols() bool { + return g.BinaryMustBePreserved() +} + +// Configuration that were deprecated in 2.0 +type deprecatedConfig struct { + DebugParallel bool + NoisySkippings bool + NoisyPendings bool + RegexScansFilePath bool + SlowSpecThresholdWithFLoatUnits float64 + Stream bool + Notify bool + EmitSpecProgress bool + SlowSpecThreshold time.Duration + AlwaysEmitGinkgoWriter bool +} + +// Flags + +// Flags sections used by both the CLI and the Ginkgo test process +var FlagSections = GinkgoFlagSections{ + {Key: "multiple-suites", Style: "{{dark-green}}", Heading: "Running Multiple Test Suites"}, + {Key: "order", Style: "{{green}}", Heading: "Controlling Test Order"}, + {Key: "parallel", Style: "{{yellow}}", Heading: "Controlling Test Parallelism"}, + {Key: "low-level-parallel", Style: "{{yellow}}", Heading: "Controlling Test Parallelism", + Description: "These are set by the Ginkgo CLI, {{red}}{{bold}}do not set them manually{{/}} via go test.\nUse ginkgo -p or ginkgo -procs=N instead."}, + {Key: "filter", Style: "{{cyan}}", Heading: "Filtering Tests"}, + {Key: "failure", Style: "{{red}}", Heading: "Failure Handling"}, + {Key: "output", Style: "{{magenta}}", Heading: "Controlling Output Formatting"}, + {Key: "code-and-coverage-analysis", Style: "{{orange}}", Heading: "Code and Coverage Analysis", + Description: "When generating a cover files, please pass a filename {{bold}}not{{/}} a path. To specify a different directory use {{magenta}}--output-dir{{/}}.", + }, + {Key: "performance-analysis", Style: "{{coral}}", Heading: "Performance Analysis", + Description: "When generating profile files, please pass filenames {{bold}}not{{/}} a path. Ginkgo will generate a profile file with the given name in the package's directory. To specify a different directory use {{magenta}}--output-dir{{/}}.", + }, + {Key: "debug", Style: "{{blue}}", Heading: "Debugging Tests", + Description: "In addition to these flags, Ginkgo supports a few debugging environment variables. To change the parallel server protocol set {{blue}}GINKGO_PARALLEL_PROTOCOL{{/}} to {{bold}}HTTP{{/}}. To avoid pruning callstacks set {{blue}}GINKGO_PRUNE_STACK{{/}} to {{bold}}FALSE{{/}}."}, + {Key: "watch", Style: "{{light-yellow}}", Heading: "Controlling Ginkgo Watch"}, + {Key: "misc", Style: "{{light-gray}}", Heading: "Miscellaneous"}, + {Key: "go-build", Style: "{{light-gray}}", Heading: "Go Build Flags", Succinct: true, + Description: "These flags are inherited from go build. Run {{bold}}ginkgo help build{{/}} for more detailed flag documentation."}, +} + +// SuiteConfigFlags provides flags for the Ginkgo test process, and CLI +var SuiteConfigFlags = GinkgoFlags{ + {KeyPath: "S.RandomSeed", Name: "seed", SectionKey: "order", UsageDefaultValue: "randomly generated by Ginkgo", + Usage: "The seed used to randomize the spec suite.", AlwaysExport: true}, + {KeyPath: "S.RandomizeAllSpecs", Name: "randomize-all", SectionKey: "order", DeprecatedName: "randomizeAllSpecs", DeprecatedDocLink: "changed-command-line-flags", + Usage: "If set, ginkgo will randomize all specs together. By default, ginkgo only randomizes the top level Describe, Context and When containers."}, + + {KeyPath: "S.FailOnPending", Name: "fail-on-pending", SectionKey: "failure", DeprecatedName: "failOnPending", DeprecatedDocLink: "changed-command-line-flags", + Usage: "If set, ginkgo will mark the test suite as failed if any specs are pending."}, + {KeyPath: "S.FailFast", Name: "fail-fast", SectionKey: "failure", DeprecatedName: "failFast", DeprecatedDocLink: "changed-command-line-flags", + Usage: "If set, ginkgo will stop running a test suite after a failure occurs."}, + {KeyPath: "S.FlakeAttempts", Name: "flake-attempts", SectionKey: "failure", UsageDefaultValue: "0 - failed tests are not retried", DeprecatedName: "flakeAttempts", DeprecatedDocLink: "changed-command-line-flags", + Usage: "Make up to this many attempts to run each spec. If any of the attempts succeed, the suite will not be failed."}, + {KeyPath: "S.FailOnEmpty", Name: "fail-on-empty", SectionKey: "failure", + Usage: "If set, ginkgo will mark the test suite as failed if no specs are run."}, + + {KeyPath: "S.DryRun", Name: "dry-run", SectionKey: "debug", DeprecatedName: "dryRun", DeprecatedDocLink: "changed-command-line-flags", + Usage: "If set, ginkgo will walk the test hierarchy without actually running anything. Best paired with -v."}, + {KeyPath: "S.PollProgressAfter", Name: "poll-progress-after", SectionKey: "debug", UsageDefaultValue: "0", + Usage: "Emit node progress reports periodically if node hasn't completed after this duration."}, + {KeyPath: "S.PollProgressInterval", Name: "poll-progress-interval", SectionKey: "debug", UsageDefaultValue: "10s", + Usage: "The rate at which to emit node progress reports after poll-progress-after has elapsed."}, + {KeyPath: "S.SourceRoots", Name: "source-root", SectionKey: "debug", + Usage: "The location to look for source code when generating progress reports. You can pass multiple --source-root flags."}, + {KeyPath: "S.Timeout", Name: "timeout", SectionKey: "debug", UsageDefaultValue: "1h", + Usage: "Test suite fails if it does not complete within the specified timeout."}, + {KeyPath: "S.GracePeriod", Name: "grace-period", SectionKey: "debug", UsageDefaultValue: "30s", + Usage: "When interrupted, Ginkgo will wait for GracePeriod for the current running node to exit before moving on to the next one."}, + {KeyPath: "S.OutputInterceptorMode", Name: "output-interceptor-mode", SectionKey: "debug", UsageArgument: "dup, swap, or none", + Usage: "If set, ginkgo will use the specified output interception strategy when running in parallel. Defaults to dup on unix and swap on windows."}, + + {KeyPath: "S.LabelFilter", Name: "label-filter", SectionKey: "filter", UsageArgument: "expression", + Usage: "If set, ginkgo will only run specs with labels that match the label-filter. The passed-in expression can include boolean operations (!, &&, ||, ','), groupings via '()', and regular expressions '/regexp/'. e.g. '(cat || dog) && !fruit'"}, + {KeyPath: "S.FocusStrings", Name: "focus", SectionKey: "filter", + Usage: "If set, ginkgo will only run specs that match this regular expression. Can be specified multiple times, values are ORed."}, + {KeyPath: "S.SkipStrings", Name: "skip", SectionKey: "filter", + Usage: "If set, ginkgo will only run specs that do not match this regular expression. Can be specified multiple times, values are ORed."}, + {KeyPath: "S.FocusFiles", Name: "focus-file", SectionKey: "filter", UsageArgument: "file (regexp) | file:line | file:lineA-lineB | file:line,line,line", + Usage: "If set, ginkgo will only run specs in matching files. Can be specified multiple times, values are ORed."}, + {KeyPath: "S.SkipFiles", Name: "skip-file", SectionKey: "filter", UsageArgument: "file (regexp) | file:line | file:lineA-lineB | file:line,line,line", + Usage: "If set, ginkgo will skip specs in matching files. Can be specified multiple times, values are ORed."}, + + {KeyPath: "D.RegexScansFilePath", DeprecatedName: "regexScansFilePath", DeprecatedDocLink: "removed--regexscansfilepath", DeprecatedVersion: "2.0.0"}, + {KeyPath: "D.DebugParallel", DeprecatedName: "debug", DeprecatedDocLink: "removed--debug", DeprecatedVersion: "2.0.0"}, + {KeyPath: "D.EmitSpecProgress", DeprecatedName: "progress", SectionKey: "debug", + DeprecatedVersion: "2.5.0", Usage: ". The functionality provided by --progress was confusing and is no longer needed. Use --show-node-events instead to see node entry and exit events included in the timeline of failed and verbose specs. Or you can run with -vv to always see all node events. Lastly, --poll-progress-after and the PollProgressAfter decorator now provide a better mechanism for debugging specs that tend to get stuck."}, +} + +// ParallelConfigFlags provides flags for the Ginkgo test process (not the CLI) +var ParallelConfigFlags = GinkgoFlags{ + {KeyPath: "S.ParallelProcess", Name: "parallel.process", SectionKey: "low-level-parallel", UsageDefaultValue: "1", + Usage: "This worker process's (one-indexed) process number. For running specs in parallel."}, + {KeyPath: "S.ParallelTotal", Name: "parallel.total", SectionKey: "low-level-parallel", UsageDefaultValue: "1", + Usage: "The total number of worker processes. For running specs in parallel."}, + {KeyPath: "S.ParallelHost", Name: "parallel.host", SectionKey: "low-level-parallel", UsageDefaultValue: "set by Ginkgo CLI", + Usage: "The address for the server that will synchronize the processes."}, +} + +// ReporterConfigFlags provides flags for the Ginkgo test process, and CLI +var ReporterConfigFlags = GinkgoFlags{ + {KeyPath: "R.NoColor", Name: "no-color", SectionKey: "output", DeprecatedName: "noColor", DeprecatedDocLink: "changed-command-line-flags", + Usage: "If set, suppress color output in default reporter. You can also set the environment variable GINKGO_NO_COLOR=TRUE"}, + {KeyPath: "R.Verbose", Name: "v", SectionKey: "output", + Usage: "If set, emits more output including GinkgoWriter contents."}, + {KeyPath: "R.VeryVerbose", Name: "vv", SectionKey: "output", + Usage: "If set, emits with maximal verbosity - includes skipped and pending tests."}, + {KeyPath: "R.Succinct", Name: "succinct", SectionKey: "output", + Usage: "If set, default reporter prints out a very succinct report"}, + {KeyPath: "R.FullTrace", Name: "trace", SectionKey: "output", + Usage: "If set, default reporter prints out the full stack trace when a failure occurs"}, + {KeyPath: "R.ShowNodeEvents", Name: "show-node-events", SectionKey: "output", + Usage: "If set, default reporter prints node > Enter and < Exit events when specs fail"}, + {KeyPath: "R.GithubOutput", Name: "github-output", SectionKey: "output", + Usage: "If set, default reporter prints easier to manage output in Github Actions."}, + {KeyPath: "R.SilenceSkips", Name: "silence-skips", SectionKey: "output", + Usage: "If set, default reporter will not print out skipped tests."}, + {KeyPath: "R.ForceNewlines", Name: "force-newlines", SectionKey: "output", + Usage: "If set, default reporter will ensure a newline appears after each test."}, + + {KeyPath: "R.JSONReport", Name: "json-report", UsageArgument: "filename.json", SectionKey: "output", + Usage: "If set, Ginkgo will generate a JSON-formatted test report at the specified location."}, + {KeyPath: "R.JUnitReport", Name: "junit-report", UsageArgument: "filename.xml", SectionKey: "output", DeprecatedName: "reportFile", DeprecatedDocLink: "improved-reporting-infrastructure", + Usage: "If set, Ginkgo will generate a conformant junit test report in the specified file."}, + {KeyPath: "R.TeamcityReport", Name: "teamcity-report", UsageArgument: "filename", SectionKey: "output", + Usage: "If set, Ginkgo will generate a Teamcity-formatted test report at the specified location."}, + + {KeyPath: "D.SlowSpecThresholdWithFLoatUnits", DeprecatedName: "slowSpecThreshold", DeprecatedDocLink: "changed--slowspecthreshold", + Usage: "use --slow-spec-threshold instead and pass in a duration string (e.g. '5s', not '5.0')"}, + {KeyPath: "D.NoisyPendings", DeprecatedName: "noisyPendings", DeprecatedDocLink: "removed--noisypendings-and--noisyskippings", DeprecatedVersion: "2.0.0"}, + {KeyPath: "D.NoisySkippings", DeprecatedName: "noisySkippings", DeprecatedDocLink: "removed--noisypendings-and--noisyskippings", DeprecatedVersion: "2.0.0"}, + {KeyPath: "D.SlowSpecThreshold", DeprecatedName: "slow-spec-threshold", SectionKey: "output", Usage: "--slow-spec-threshold has been deprecated and will be removed in a future version of Ginkgo. This feature has proved to be more noisy than useful. You can use --poll-progress-after, instead, to get more actionable feedback about potentially slow specs and understand where they might be getting stuck.", DeprecatedVersion: "2.5.0"}, + {KeyPath: "D.AlwaysEmitGinkgoWriter", DeprecatedName: "always-emit-ginkgo-writer", SectionKey: "output", Usage: " - use -v instead, or one of Ginkgo's machine-readable report formats to get GinkgoWriter output for passing specs."}, +} + +// BuildTestSuiteFlagSet attaches to the CommandLine flagset and provides flags for the Ginkgo test process +func BuildTestSuiteFlagSet(suiteConfig *SuiteConfig, reporterConfig *ReporterConfig) (GinkgoFlagSet, error) { + flags := SuiteConfigFlags.CopyAppend(ParallelConfigFlags...).CopyAppend(ReporterConfigFlags...) + flags = flags.WithPrefix("ginkgo") + bindings := map[string]any{ + "S": suiteConfig, + "R": reporterConfig, + "D": &deprecatedConfig{}, + } + extraGoFlagsSection := GinkgoFlagSection{Style: "{{gray}}", Heading: "Go test flags"} + + return NewAttachedGinkgoFlagSet(flag.CommandLine, flags, bindings, FlagSections, extraGoFlagsSection) +} + +// VetConfig validates that the Ginkgo test process' configuration is sound +func VetConfig(flagSet GinkgoFlagSet, suiteConfig SuiteConfig, reporterConfig ReporterConfig) []error { + errors := []error{} + + if flagSet.WasSet("count") || flagSet.WasSet("test.count") { + flag := flagSet.Lookup("count") + if flag == nil { + flag = flagSet.Lookup("test.count") + } + count, err := strconv.Atoi(flag.Value.String()) + if err != nil || count != 1 { + errors = append(errors, GinkgoErrors.InvalidGoFlagCount()) + } + } + + if flagSet.WasSet("parallel") || flagSet.WasSet("test.parallel") { + errors = append(errors, GinkgoErrors.InvalidGoFlagParallel()) + } + + if suiteConfig.ParallelTotal < 1 { + errors = append(errors, GinkgoErrors.InvalidParallelTotalConfiguration()) + } + + if suiteConfig.ParallelProcess > suiteConfig.ParallelTotal || suiteConfig.ParallelProcess < 1 { + errors = append(errors, GinkgoErrors.InvalidParallelProcessConfiguration()) + } + + if suiteConfig.ParallelTotal > 1 && suiteConfig.ParallelHost == "" { + errors = append(errors, GinkgoErrors.MissingParallelHostConfiguration()) + } + + if suiteConfig.DryRun && suiteConfig.ParallelTotal > 1 { + errors = append(errors, GinkgoErrors.DryRunInParallelConfiguration()) + } + + if suiteConfig.GracePeriod <= 0 { + errors = append(errors, GinkgoErrors.GracePeriodCannotBeZero()) + } + + if len(suiteConfig.FocusFiles) > 0 { + _, err := ParseFileFilters(suiteConfig.FocusFiles) + if err != nil { + errors = append(errors, err) + } + } + + if len(suiteConfig.SkipFiles) > 0 { + _, err := ParseFileFilters(suiteConfig.SkipFiles) + if err != nil { + errors = append(errors, err) + } + } + + if suiteConfig.LabelFilter != "" { + _, err := ParseLabelFilter(suiteConfig.LabelFilter) + if err != nil { + errors = append(errors, err) + } + } + + switch strings.ToLower(suiteConfig.OutputInterceptorMode) { + case "", "dup", "swap", "none": + default: + errors = append(errors, GinkgoErrors.InvalidOutputInterceptorModeConfiguration(suiteConfig.OutputInterceptorMode)) + } + + numVerbosity := 0 + for _, v := range []bool{reporterConfig.Succinct, reporterConfig.Verbose, reporterConfig.VeryVerbose} { + if v { + numVerbosity++ + } + } + if numVerbosity > 1 { + errors = append(errors, GinkgoErrors.ConflictingVerbosityConfiguration()) + } + + return errors +} + +// GinkgoCLISharedFlags provides flags shared by the Ginkgo CLI's build, watch, and run commands +var GinkgoCLISharedFlags = GinkgoFlags{ + {KeyPath: "C.Recurse", Name: "r", SectionKey: "multiple-suites", + Usage: "If set, ginkgo finds and runs test suites under the current directory recursively."}, + {KeyPath: "C.SkipPackage", Name: "skip-package", SectionKey: "multiple-suites", DeprecatedName: "skipPackage", DeprecatedDocLink: "changed-command-line-flags", + UsageArgument: "comma-separated list of packages", + Usage: "A comma-separated list of package names to be skipped. If any part of the package's path matches, that package is ignored."}, + {KeyPath: "C.RequireSuite", Name: "require-suite", SectionKey: "failure", DeprecatedName: "requireSuite", DeprecatedDocLink: "changed-command-line-flags", + Usage: "If set, Ginkgo fails if there are ginkgo tests in a directory but no invocation of RunSpecs."}, + {KeyPath: "C.NumCompilers", Name: "compilers", SectionKey: "multiple-suites", UsageDefaultValue: "0 (will autodetect)", + Usage: "When running multiple packages, the number of concurrent compilations to perform."}, +} + +// GinkgoCLIRunAndWatchFlags provides flags shared by the Ginkgo CLI's build and watch commands (but not run) +var GinkgoCLIRunAndWatchFlags = GinkgoFlags{ + {KeyPath: "C.Procs", Name: "procs", SectionKey: "parallel", UsageDefaultValue: "1 (run in series)", + Usage: "The number of parallel test nodes to run."}, + {KeyPath: "C.Procs", Name: "nodes", SectionKey: "parallel", UsageDefaultValue: "1 (run in series)", + Usage: "--nodes is an alias for --procs"}, + {KeyPath: "C.Parallel", Name: "p", SectionKey: "parallel", + Usage: "If set, ginkgo will run in parallel with an auto-detected number of nodes."}, + {KeyPath: "C.AfterRunHook", Name: "after-run-hook", SectionKey: "misc", DeprecatedName: "afterSuiteHook", DeprecatedDocLink: "changed-command-line-flags", + Usage: "Command to run when a test suite completes."}, + {KeyPath: "C.OutputDir", Name: "output-dir", SectionKey: "output", UsageArgument: "directory", DeprecatedName: "outputdir", DeprecatedDocLink: "improved-profiling-support", + Usage: "A location to place all generated profiles and reports."}, + {KeyPath: "C.KeepSeparateCoverprofiles", Name: "keep-separate-coverprofiles", SectionKey: "code-and-coverage-analysis", + Usage: "If set, Ginkgo does not merge coverprofiles into one monolithic coverprofile. The coverprofiles will remain in their respective package directories or in -output-dir if set."}, + {KeyPath: "C.KeepSeparateReports", Name: "keep-separate-reports", SectionKey: "output", + Usage: "If set, Ginkgo does not merge per-suite reports (e.g. -json-report) into one monolithic report for the entire testrun. The reports will remain in their respective package directories or in -output-dir if set."}, + + {KeyPath: "D.Stream", DeprecatedName: "stream", DeprecatedDocLink: "removed--stream", DeprecatedVersion: "2.0.0"}, + {KeyPath: "D.Notify", DeprecatedName: "notify", DeprecatedDocLink: "removed--notify", DeprecatedVersion: "2.0.0"}, +} + +// GinkgoCLIRunFlags provides flags for Ginkgo CLI's run command that aren't shared by any other commands +var GinkgoCLIRunFlags = GinkgoFlags{ + {KeyPath: "C.KeepGoing", Name: "keep-going", SectionKey: "multiple-suites", DeprecatedName: "keepGoing", DeprecatedDocLink: "changed-command-line-flags", + Usage: "If set, failures from earlier test suites do not prevent later test suites from running."}, + {KeyPath: "C.UntilItFails", Name: "until-it-fails", SectionKey: "debug", DeprecatedName: "untilItFails", DeprecatedDocLink: "changed-command-line-flags", + Usage: "If set, ginkgo will keep rerunning test suites until a failure occurs."}, + {KeyPath: "C.Repeat", Name: "repeat", SectionKey: "debug", UsageArgument: "n", UsageDefaultValue: "0 - i.e. no repetition, run only once", + Usage: "The number of times to re-run a test-suite. Useful for debugging flaky tests. If set to N the suite will be run N+1 times and will be required to pass each time."}, + {KeyPath: "C.RandomizeSuites", Name: "randomize-suites", SectionKey: "order", DeprecatedName: "randomizeSuites", DeprecatedDocLink: "changed-command-line-flags", + Usage: "If set, ginkgo will randomize the order in which test suites run."}, +} + +// GinkgoCLIRunFlags provides flags for Ginkgo CLI's watch command that aren't shared by any other commands +var GinkgoCLIWatchFlags = GinkgoFlags{ + {KeyPath: "C.Depth", Name: "depth", SectionKey: "watch", + Usage: "Ginkgo will watch dependencies down to this depth in the dependency tree."}, + {KeyPath: "C.WatchRegExp", Name: "watch-regexp", SectionKey: "watch", DeprecatedName: "watchRegExp", DeprecatedDocLink: "changed-command-line-flags", + UsageArgument: "Regular Expression", + UsageDefaultValue: `\.go$`, + Usage: "Only files matching this regular expression will be watched for changes."}, +} + +// GoBuildFlags provides flags for the Ginkgo CLI build, run, and watch commands that capture go's build-time flags. These are passed to go test -c by the ginkgo CLI +var GoBuildFlags = GinkgoFlags{ + {KeyPath: "Go.Race", Name: "race", SectionKey: "code-and-coverage-analysis", + Usage: "enable data race detection. Supported on linux/amd64, linux/ppc64le, linux/arm64, linux/s390x, freebsd/amd64, netbsd/amd64, darwin/amd64, darwin/arm64, and windows/amd64."}, + {KeyPath: "Go.Vet", Name: "vet", UsageArgument: "list", SectionKey: "code-and-coverage-analysis", + Usage: `Configure the invocation of "go vet" during "go test" to use the comma-separated list of vet checks. If list is empty (by explicitly passing --vet=""), "go test" runs "go vet" with a curated list of checks believed to be always worth addressing. If list is "off", "go test" does not run "go vet" at all. Available checks can be found by running 'go doc cmd/vet'`}, + {KeyPath: "Go.Cover", Name: "cover", SectionKey: "code-and-coverage-analysis", + Usage: "Enable coverage analysis. Note that because coverage works by annotating the source code before compilation, compilation and test failures with coverage enabled may report line numbers that don't correspond to the original sources."}, + {KeyPath: "Go.CoverMode", Name: "covermode", UsageArgument: "set,count,atomic", SectionKey: "code-and-coverage-analysis", + Usage: `Set the mode for coverage analysis for the package[s] being tested. 'set': does this statement run? 'count': how many times does this statement run? 'atomic': like count, but correct in multithreaded tests and more expensive (must use atomic with -race). Sets -cover`}, + {KeyPath: "Go.CoverPkg", Name: "coverpkg", UsageArgument: "pattern1,pattern2,pattern3", SectionKey: "code-and-coverage-analysis", + Usage: "Apply coverage analysis in each test to packages matching the patterns. The default is for each test to analyze only the package being tested. See 'go help packages' for a description of package patterns. Sets -cover."}, + + {KeyPath: "Go.A", Name: "a", SectionKey: "go-build", + Usage: "force rebuilding of packages that are already up-to-date."}, + {KeyPath: "Go.ASMFlags", Name: "asmflags", UsageArgument: "'[pattern=]arg list'", SectionKey: "go-build", + Usage: "arguments to pass on each go tool asm invocation."}, + {KeyPath: "Go.BuildMode", Name: "buildmode", UsageArgument: "mode", SectionKey: "go-build", + Usage: "build mode to use. See 'go help buildmode' for more."}, + {KeyPath: "Go.BuildVCS", Name: "buildvcs", SectionKey: "go-build", + Usage: "adds version control information."}, + {KeyPath: "Go.Compiler", Name: "compiler", UsageArgument: "name", SectionKey: "go-build", + Usage: "name of compiler to use, as in runtime.Compiler (gccgo or gc)."}, + {KeyPath: "Go.GCCGoFlags", Name: "gccgoflags", UsageArgument: "'[pattern=]arg list'", SectionKey: "go-build", + Usage: "arguments to pass on each gccgo compiler/linker invocation."}, + {KeyPath: "Go.GCFlags", Name: "gcflags", UsageArgument: "'[pattern=]arg list'", SectionKey: "go-build", + Usage: "arguments to pass on each go tool compile invocation."}, + {KeyPath: "Go.InstallSuffix", Name: "installsuffix", SectionKey: "go-build", + Usage: "a suffix to use in the name of the package installation directory, in order to keep output separate from default builds. If using the -race flag, the install suffix is automatically set to raceor, if set explicitly, has _race appended to it. Likewise for the -msan flag. Using a -buildmode option that requires non-default compile flags has a similar effect."}, + {KeyPath: "Go.LDFlags", Name: "ldflags", UsageArgument: "'[pattern=]arg list'", SectionKey: "go-build", + Usage: "arguments to pass on each go tool link invocation."}, + {KeyPath: "Go.LinkShared", Name: "linkshared", SectionKey: "go-build", + Usage: "build code that will be linked against shared libraries previously created with -buildmode=shared."}, + {KeyPath: "Go.Mod", Name: "mod", UsageArgument: "mode (readonly, vendor, or mod)", SectionKey: "go-build", + Usage: "module download mode to use: readonly, vendor, or mod. See 'go help modules' for more."}, + {KeyPath: "Go.ModCacheRW", Name: "modcacherw", SectionKey: "go-build", + Usage: "leave newly-created directories in the module cache read-write instead of making them read-only."}, + {KeyPath: "Go.ModFile", Name: "modfile", UsageArgument: "file", SectionKey: "go-build", + Usage: `in module aware mode, read (and possibly write) an alternate go.mod file instead of the one in the module root directory. A file named go.mod must still be present in order to determine the module root directory, but it is not accessed. When -modfile is specified, an alternate go.sum file is also used: its path is derived from the -modfile flag by trimming the ".mod" extension and appending ".sum".`}, + {KeyPath: "Go.MSan", Name: "msan", SectionKey: "go-build", + Usage: "enable interoperation with memory sanitizer. Supported only on linux/amd64, linux/arm64 and only with Clang/LLVM as the host C compiler. On linux/arm64, pie build mode will be used."}, + {KeyPath: "Go.N", Name: "n", SectionKey: "go-build", + Usage: "print the commands but do not run them."}, + {KeyPath: "Go.PkgDir", Name: "pkgdir", UsageArgument: "dir", SectionKey: "go-build", + Usage: "install and load all packages from dir instead of the usual locations. For example, when building with a non-standard configuration, use -pkgdir to keep generated packages in a separate location."}, + {KeyPath: "Go.Tags", Name: "tags", UsageArgument: "tag,list", SectionKey: "go-build", + Usage: "a comma-separated list of build tags to consider satisfied during the build. For more information about build tags, see the description of build constraints in the documentation for the go/build package. (Earlier versions of Go used a space-separated list, and that form is deprecated but still recognized.)"}, + {KeyPath: "Go.TrimPath", Name: "trimpath", SectionKey: "go-build", + Usage: `remove all file system paths from the resulting executable. Instead of absolute file system paths, the recorded file names will begin with either "go" (for the standard library), or a module path@version (when using modules), or a plain import path (when using GOPATH).`}, + {KeyPath: "Go.ToolExec", Name: "toolexec", UsageArgument: "'cmd args'", SectionKey: "go-build", + Usage: "a program to use to invoke toolchain programs like vet and asm. For example, instead of running asm, the go command will run cmd args /path/to/asm '."}, + {KeyPath: "Go.Work", Name: "work", SectionKey: "go-build", + Usage: "print the name of the temporary work directory and do not delete it when exiting."}, + {KeyPath: "Go.X", Name: "x", SectionKey: "go-build", + Usage: "print the commands."}, + {KeyPath: "Go.O", Name: "o", SectionKey: "go-build", + Usage: "output binary path (including name)."}, +} + +// GoRunFlags provides flags for the Ginkgo CLI run, and watch commands that capture go's run-time flags. These are passed to the compiled test binary by the ginkgo CLI +var GoRunFlags = GinkgoFlags{ + {KeyPath: "Go.CoverProfile", Name: "coverprofile", UsageArgument: "file", SectionKey: "code-and-coverage-analysis", + Usage: `Write a coverage profile to the file after all tests have passed. Sets -cover. Must be passed a filename, not a path. Use output-dir to control the location of the output.`}, + {KeyPath: "Go.BlockProfile", Name: "blockprofile", UsageArgument: "file", SectionKey: "performance-analysis", + Usage: `Write a goroutine blocking profile to the specified file when all tests are complete. Preserves test binary.`}, + {KeyPath: "Go.BlockProfileRate", Name: "blockprofilerate", UsageArgument: "rate", SectionKey: "performance-analysis", + Usage: `Control the detail provided in goroutine blocking profiles by calling runtime.SetBlockProfileRate with rate. See 'go doc runtime.SetBlockProfileRate'. The profiler aims to sample, on average, one blocking event every n nanoseconds the program spends blocked. By default, if -test.blockprofile is set without this flag, all blocking events are recorded, equivalent to -test.blockprofilerate=1.`}, + {KeyPath: "Go.CPUProfile", Name: "cpuprofile", UsageArgument: "file", SectionKey: "performance-analysis", + Usage: `Write a CPU profile to the specified file before exiting. Preserves test binary.`}, + {KeyPath: "Go.MemProfile", Name: "memprofile", UsageArgument: "file", SectionKey: "performance-analysis", + Usage: `Write an allocation profile to the file after all tests have passed. Preserves test binary.`}, + {KeyPath: "Go.MemProfileRate", Name: "memprofilerate", UsageArgument: "rate", SectionKey: "performance-analysis", + Usage: `Enable more precise (and expensive) memory allocation profiles by setting runtime.MemProfileRate. See 'go doc runtime.MemProfileRate'. To profile all memory allocations, use -test.memprofilerate=1.`}, + {KeyPath: "Go.MutexProfile", Name: "mutexprofile", UsageArgument: "file", SectionKey: "performance-analysis", + Usage: `Write a mutex contention profile to the specified file when all tests are complete. Preserves test binary.`}, + {KeyPath: "Go.MutexProfileFraction", Name: "mutexprofilefraction", UsageArgument: "n", SectionKey: "performance-analysis", + Usage: `if >= 0, calls runtime.SetMutexProfileFraction() Sample 1 in n stack traces of goroutines holding a contended mutex.`}, + {KeyPath: "Go.Trace", Name: "execution-trace", UsageArgument: "file", ExportAs: "trace", SectionKey: "performance-analysis", + Usage: `Write an execution trace to the specified file before exiting.`}, +} + +// VetAndInitializeCLIAndGoConfig validates that the Ginkgo CLI's configuration is sound +// It returns a potentially mutated copy of the config that rationalizes the configuration to ensure consistency for downstream consumers +func VetAndInitializeCLIAndGoConfig(cliConfig CLIConfig, goFlagsConfig GoFlagsConfig) (CLIConfig, GoFlagsConfig, []error) { + errors := []error{} + + if cliConfig.Repeat > 0 && cliConfig.UntilItFails { + errors = append(errors, GinkgoErrors.BothRepeatAndUntilItFails()) + } + + if strings.ContainsRune(goFlagsConfig.CoverProfile, os.PathSeparator) { + errors = append(errors, GinkgoErrors.ExpectFilenameNotPath("--coverprofile", goFlagsConfig.CoverProfile)) + } + if strings.ContainsRune(goFlagsConfig.CPUProfile, os.PathSeparator) { + errors = append(errors, GinkgoErrors.ExpectFilenameNotPath("--cpuprofile", goFlagsConfig.CPUProfile)) + } + if strings.ContainsRune(goFlagsConfig.MemProfile, os.PathSeparator) { + errors = append(errors, GinkgoErrors.ExpectFilenameNotPath("--memprofile", goFlagsConfig.MemProfile)) + } + if strings.ContainsRune(goFlagsConfig.BlockProfile, os.PathSeparator) { + errors = append(errors, GinkgoErrors.ExpectFilenameNotPath("--blockprofile", goFlagsConfig.BlockProfile)) + } + if strings.ContainsRune(goFlagsConfig.MutexProfile, os.PathSeparator) { + errors = append(errors, GinkgoErrors.ExpectFilenameNotPath("--mutexprofile", goFlagsConfig.MutexProfile)) + } + + //initialize the output directory + if cliConfig.OutputDir != "" { + err := os.MkdirAll(cliConfig.OutputDir, 0777) + if err != nil { + errors = append(errors, err) + } + } + + //ensure cover mode is configured appropriately + if goFlagsConfig.CoverMode != "" || goFlagsConfig.CoverPkg != "" || goFlagsConfig.CoverProfile != "" { + goFlagsConfig.Cover = true + } + if goFlagsConfig.Cover && goFlagsConfig.CoverProfile == "" { + goFlagsConfig.CoverProfile = "coverprofile.out" + } + + return cliConfig, goFlagsConfig, errors +} + +// GenerateGoTestCompileArgs is used by the Ginkgo CLI to generate command line arguments to pass to the go test -c command when compiling the test +func GenerateGoTestCompileArgs(goFlagsConfig GoFlagsConfig, packageToBuild string, pathToInvocationPath string, preserveSymbols bool) ([]string, error) { + // if the user has set the CoverProfile run-time flag make sure to set the build-time cover flag to make sure + // the built test binary can generate a coverprofile + if goFlagsConfig.CoverProfile != "" { + goFlagsConfig.Cover = true + } + + if goFlagsConfig.CoverPkg != "" { + coverPkgs := strings.Split(goFlagsConfig.CoverPkg, ",") + adjustedCoverPkgs := make([]string, len(coverPkgs)) + for i, coverPkg := range coverPkgs { + coverPkg = strings.Trim(coverPkg, " ") + if strings.HasPrefix(coverPkg, "./") { + // this is a relative coverPkg - we need to reroot it + adjustedCoverPkgs[i] = "./" + filepath.Join(pathToInvocationPath, strings.TrimPrefix(coverPkg, "./")) + } else { + // this is a package name - don't touch it + adjustedCoverPkgs[i] = coverPkg + } + } + goFlagsConfig.CoverPkg = strings.Join(adjustedCoverPkgs, ",") + } + + if !goFlagsConfig.NeedsSymbols() && goFlagsConfig.LDFlags == "" && !preserveSymbols { + goFlagsConfig.LDFlags = "-w -s" + } + + args := []string{"test", "-c", packageToBuild} + goArgs, err := GenerateFlagArgs( + GoBuildFlags, + map[string]any{ + "Go": &goFlagsConfig, + }, + ) + + if err != nil { + return []string{}, err + } + args = append(args, goArgs...) + return args, nil +} + +// GenerateGinkgoTestRunArgs is used by the Ginkgo CLI to generate command line arguments to pass to the compiled Ginkgo test binary +func GenerateGinkgoTestRunArgs(suiteConfig SuiteConfig, reporterConfig ReporterConfig, goFlagsConfig GoFlagsConfig) ([]string, error) { + var flags GinkgoFlags + flags = SuiteConfigFlags.WithPrefix("ginkgo") + flags = flags.CopyAppend(ParallelConfigFlags.WithPrefix("ginkgo")...) + flags = flags.CopyAppend(ReporterConfigFlags.WithPrefix("ginkgo")...) + flags = flags.CopyAppend(GoRunFlags.WithPrefix("test")...) + bindings := map[string]any{ + "S": &suiteConfig, + "R": &reporterConfig, + "Go": &goFlagsConfig, + } + + return GenerateFlagArgs(flags, bindings) +} + +// GenerateGoTestRunArgs is used by the Ginkgo CLI to generate command line arguments to pass to the compiled non-Ginkgo test binary +func GenerateGoTestRunArgs(goFlagsConfig GoFlagsConfig) ([]string, error) { + flags := GoRunFlags.WithPrefix("test") + bindings := map[string]any{ + "Go": &goFlagsConfig, + } + + args, err := GenerateFlagArgs(flags, bindings) + if err != nil { + return args, err + } + args = append(args, "--test.v") + return args, nil +} + +// BuildRunCommandFlagSet builds the FlagSet for the `ginkgo run` command +func BuildRunCommandFlagSet(suiteConfig *SuiteConfig, reporterConfig *ReporterConfig, cliConfig *CLIConfig, goFlagsConfig *GoFlagsConfig) (GinkgoFlagSet, error) { + flags := SuiteConfigFlags + flags = flags.CopyAppend(ReporterConfigFlags...) + flags = flags.CopyAppend(GinkgoCLISharedFlags...) + flags = flags.CopyAppend(GinkgoCLIRunAndWatchFlags...) + flags = flags.CopyAppend(GinkgoCLIRunFlags...) + flags = flags.CopyAppend(GoBuildFlags...) + flags = flags.CopyAppend(GoRunFlags...) + + bindings := map[string]any{ + "S": suiteConfig, + "R": reporterConfig, + "C": cliConfig, + "Go": goFlagsConfig, + "D": &deprecatedConfig{}, + } + + return NewGinkgoFlagSet(flags, bindings, FlagSections) +} + +// BuildWatchCommandFlagSet builds the FlagSet for the `ginkgo watch` command +func BuildWatchCommandFlagSet(suiteConfig *SuiteConfig, reporterConfig *ReporterConfig, cliConfig *CLIConfig, goFlagsConfig *GoFlagsConfig) (GinkgoFlagSet, error) { + flags := SuiteConfigFlags + flags = flags.CopyAppend(ReporterConfigFlags...) + flags = flags.CopyAppend(GinkgoCLISharedFlags...) + flags = flags.CopyAppend(GinkgoCLIRunAndWatchFlags...) + flags = flags.CopyAppend(GinkgoCLIWatchFlags...) + flags = flags.CopyAppend(GoBuildFlags...) + flags = flags.CopyAppend(GoRunFlags...) + + bindings := map[string]any{ + "S": suiteConfig, + "R": reporterConfig, + "C": cliConfig, + "Go": goFlagsConfig, + "D": &deprecatedConfig{}, + } + + return NewGinkgoFlagSet(flags, bindings, FlagSections) +} + +// BuildBuildCommandFlagSet builds the FlagSet for the `ginkgo build` command +func BuildBuildCommandFlagSet(cliConfig *CLIConfig, goFlagsConfig *GoFlagsConfig) (GinkgoFlagSet, error) { + flags := GinkgoCLISharedFlags + flags = flags.CopyAppend(GoBuildFlags...) + + bindings := map[string]any{ + "C": cliConfig, + "Go": goFlagsConfig, + "D": &deprecatedConfig{}, + } + + flagSections := make(GinkgoFlagSections, len(FlagSections)) + copy(flagSections, FlagSections) + for i := range flagSections { + if flagSections[i].Key == "multiple-suites" { + flagSections[i].Heading = "Building Multiple Suites" + } + if flagSections[i].Key == "go-build" { + flagSections[i] = GinkgoFlagSection{Key: "go-build", Style: "{{/}}", Heading: "Go Build Flags", + Description: "These flags are inherited from go build."} + } + } + + return NewGinkgoFlagSet(flags, bindings, flagSections) +} + +func BuildLabelsCommandFlagSet(cliConfig *CLIConfig) (GinkgoFlagSet, error) { + flags := GinkgoCLISharedFlags.SubsetWithNames("r", "skip-package") + + bindings := map[string]any{ + "C": cliConfig, + } + + flagSections := make(GinkgoFlagSections, len(FlagSections)) + copy(flagSections, FlagSections) + for i := range flagSections { + if flagSections[i].Key == "multiple-suites" { + flagSections[i].Heading = "Fetching Labels from Multiple Suites" + } + } + + return NewGinkgoFlagSet(flags, bindings, flagSections) +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/types/deprecated_types.go b/tests/vendor/github.com/onsi/ginkgo/v2/types/deprecated_types.go new file mode 100644 index 000000000..518989a84 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/types/deprecated_types.go @@ -0,0 +1,141 @@ +package types + +import ( + "strconv" + "time" +) + +/* + A set of deprecations to make the transition from v1 to v2 easier for users who have written custom reporters. +*/ + +type SuiteSummary = DeprecatedSuiteSummary +type SetupSummary = DeprecatedSetupSummary +type SpecSummary = DeprecatedSpecSummary +type SpecMeasurement = DeprecatedSpecMeasurement +type SpecComponentType = NodeType +type SpecFailure = DeprecatedSpecFailure + +var ( + SpecComponentTypeInvalid = NodeTypeInvalid + SpecComponentTypeContainer = NodeTypeContainer + SpecComponentTypeIt = NodeTypeIt + SpecComponentTypeBeforeEach = NodeTypeBeforeEach + SpecComponentTypeJustBeforeEach = NodeTypeJustBeforeEach + SpecComponentTypeAfterEach = NodeTypeAfterEach + SpecComponentTypeJustAfterEach = NodeTypeJustAfterEach + SpecComponentTypeBeforeSuite = NodeTypeBeforeSuite + SpecComponentTypeSynchronizedBeforeSuite = NodeTypeSynchronizedBeforeSuite + SpecComponentTypeAfterSuite = NodeTypeAfterSuite + SpecComponentTypeSynchronizedAfterSuite = NodeTypeSynchronizedAfterSuite +) + +type DeprecatedSuiteSummary struct { + SuiteDescription string + SuiteSucceeded bool + SuiteID string + + NumberOfSpecsBeforeParallelization int + NumberOfTotalSpecs int + NumberOfSpecsThatWillBeRun int + NumberOfPendingSpecs int + NumberOfSkippedSpecs int + NumberOfPassedSpecs int + NumberOfFailedSpecs int + NumberOfFlakedSpecs int + RunTime time.Duration +} + +type DeprecatedSetupSummary struct { + ComponentType SpecComponentType + CodeLocation CodeLocation + + State SpecState + RunTime time.Duration + Failure SpecFailure + + CapturedOutput string + SuiteID string +} + +type DeprecatedSpecSummary struct { + ComponentTexts []string + ComponentCodeLocations []CodeLocation + + State SpecState + RunTime time.Duration + Failure SpecFailure + IsMeasurement bool + NumberOfSamples int + Measurements map[string]*DeprecatedSpecMeasurement + + CapturedOutput string + SuiteID string +} + +func (s DeprecatedSpecSummary) HasFailureState() bool { + return s.State.Is(SpecStateFailureStates) +} + +func (s DeprecatedSpecSummary) TimedOut() bool { + return false +} + +func (s DeprecatedSpecSummary) Panicked() bool { + return s.State == SpecStatePanicked +} + +func (s DeprecatedSpecSummary) Failed() bool { + return s.State == SpecStateFailed +} + +func (s DeprecatedSpecSummary) Passed() bool { + return s.State == SpecStatePassed +} + +func (s DeprecatedSpecSummary) Skipped() bool { + return s.State == SpecStateSkipped +} + +func (s DeprecatedSpecSummary) Pending() bool { + return s.State == SpecStatePending +} + +type DeprecatedSpecFailure struct { + Message string + Location CodeLocation + ForwardedPanic string + + ComponentIndex int + ComponentType SpecComponentType + ComponentCodeLocation CodeLocation +} + +type DeprecatedSpecMeasurement struct { + Name string + Info any + Order int + + Results []float64 + + Smallest float64 + Largest float64 + Average float64 + StdDeviation float64 + + SmallestLabel string + LargestLabel string + AverageLabel string + Units string + Precision int +} + +func (s DeprecatedSpecMeasurement) PrecisionFmt() string { + if s.Precision == 0 { + return "%f" + } + + str := strconv.Itoa(s.Precision) + + return "%." + str + "f" +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/types/deprecation_support.go b/tests/vendor/github.com/onsi/ginkgo/v2/types/deprecation_support.go new file mode 100644 index 000000000..e2519f673 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/types/deprecation_support.go @@ -0,0 +1,177 @@ +package types + +import ( + "os" + "strconv" + "strings" + "sync" + "unicode" + + "github.com/onsi/ginkgo/v2/formatter" +) + +type Deprecation struct { + Message string + DocLink string + Version string +} + +type deprecations struct{} + +var Deprecations = deprecations{} + +func (d deprecations) CustomReporter() Deprecation { + return Deprecation{ + Message: "Support for custom reporters has been removed in V2. Please read the documentation linked to below for Ginkgo's new behavior and for a migration path:", + DocLink: "removed-custom-reporters", + Version: "1.16.0", + } +} + +func (d deprecations) Async() Deprecation { + return Deprecation{ + Message: "You are passing a Done channel to a test node to test asynchronous behavior. This is deprecated in Ginkgo V2. Your test will run synchronously and the timeout will be ignored.", + DocLink: "removed-async-testing", + Version: "1.16.0", + } +} + +func (d deprecations) Measure() Deprecation { + return Deprecation{ + Message: "Measure is deprecated and has been removed from Ginkgo V2. Any Measure tests in your spec will not run. Please migrate to gomega/gmeasure.", + DocLink: "removed-measure", + Version: "1.16.3", + } +} + +func (d deprecations) ParallelNode() Deprecation { + return Deprecation{ + Message: "GinkgoParallelNode is deprecated and will be removed in Ginkgo V2. Please use GinkgoParallelProcess instead.", + DocLink: "renamed-ginkgoparallelnode", + Version: "1.16.4", + } +} + +func (d deprecations) CurrentGinkgoTestDescription() Deprecation { + return Deprecation{ + Message: "CurrentGinkgoTestDescription() is deprecated in Ginkgo V2. Use CurrentSpecReport() instead.", + DocLink: "changed-currentginkgotestdescription", + Version: "1.16.0", + } +} + +func (d deprecations) Convert() Deprecation { + return Deprecation{ + Message: "The convert command is deprecated in Ginkgo V2", + DocLink: "removed-ginkgo-convert", + Version: "1.16.0", + } +} + +func (d deprecations) Blur() Deprecation { + return Deprecation{ + Message: "The blur command is deprecated in Ginkgo V2. Use 'ginkgo unfocus' instead.", + Version: "1.16.0", + } +} + +func (d deprecations) Nodot() Deprecation { + return Deprecation{ + Message: "The nodot command is deprecated in Ginkgo V2. Please either dot-import Ginkgo or use the package identifier in your code to references objects and types provided by Ginkgo and Gomega.", + DocLink: "removed-ginkgo-nodot", + Version: "1.16.0", + } +} + +func (d deprecations) SuppressProgressReporting() Deprecation { + return Deprecation{ + Message: "Improvements to how reporters emit timeline information means that SuppressProgressReporting is no longer necessary and has been deprecated.", + Version: "2.5.0", + } +} + +type DeprecationTracker struct { + deprecations map[Deprecation][]CodeLocation + lock *sync.Mutex +} + +func NewDeprecationTracker() *DeprecationTracker { + return &DeprecationTracker{ + deprecations: map[Deprecation][]CodeLocation{}, + lock: &sync.Mutex{}, + } +} + +func (d *DeprecationTracker) TrackDeprecation(deprecation Deprecation, cl ...CodeLocation) { + ackVersion := os.Getenv("ACK_GINKGO_DEPRECATIONS") + if deprecation.Version != "" && ackVersion != "" { + ack := ParseSemVer(ackVersion) + version := ParseSemVer(deprecation.Version) + if ack.GreaterThanOrEqualTo(version) { + return + } + } + + d.lock.Lock() + defer d.lock.Unlock() + if len(cl) == 1 { + d.deprecations[deprecation] = append(d.deprecations[deprecation], cl[0]) + } else { + d.deprecations[deprecation] = []CodeLocation{} + } +} + +func (d *DeprecationTracker) DidTrackDeprecations() bool { + d.lock.Lock() + defer d.lock.Unlock() + return len(d.deprecations) > 0 +} + +func (d *DeprecationTracker) DeprecationsReport() string { + d.lock.Lock() + defer d.lock.Unlock() + out := formatter.F("{{light-yellow}}You're using deprecated Ginkgo functionality:{{/}}\n") + out += formatter.F("{{light-yellow}}============================================={{/}}\n") + for deprecation, locations := range d.deprecations { + out += formatter.Fi(1, "{{yellow}}"+deprecation.Message+"{{/}}\n") + if deprecation.DocLink != "" { + out += formatter.Fi(1, "{{bold}}Learn more at:{{/}} {{cyan}}{{underline}}https://onsi.github.io/ginkgo/MIGRATING_TO_V2#%s{{/}}\n", deprecation.DocLink) + } + for _, location := range locations { + out += formatter.Fi(2, "{{gray}}%s{{/}}\n", location) + } + } + out += formatter.F("\n{{gray}}To silence deprecations that can be silenced set the following environment variable:{{/}}\n") + out += formatter.Fi(1, "{{gray}}ACK_GINKGO_DEPRECATIONS=%s{{/}}\n", VERSION) + return out +} + +type SemVer struct { + Major int + Minor int + Patch int +} + +func (s SemVer) GreaterThanOrEqualTo(o SemVer) bool { + return (s.Major > o.Major) || + (s.Major == o.Major && s.Minor > o.Minor) || + (s.Major == o.Major && s.Minor == o.Minor && s.Patch >= o.Patch) +} + +func ParseSemVer(semver string) SemVer { + out := SemVer{} + semver = strings.TrimFunc(semver, func(r rune) bool { + return !(unicode.IsNumber(r) || r == '.') + }) + components := strings.Split(semver, ".") + if len(components) > 0 { + out.Major, _ = strconv.Atoi(components[0]) + } + if len(components) > 1 { + out.Minor, _ = strconv.Atoi(components[1]) + } + if len(components) > 2 { + out.Patch, _ = strconv.Atoi(components[2]) + } + return out +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/types/enum_support.go b/tests/vendor/github.com/onsi/ginkgo/v2/types/enum_support.go new file mode 100644 index 000000000..1d96ae028 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/types/enum_support.go @@ -0,0 +1,43 @@ +package types + +import "encoding/json" + +type EnumSupport struct { + toString map[uint]string + toEnum map[string]uint + maxEnum uint +} + +func NewEnumSupport(toString map[uint]string) EnumSupport { + toEnum, maxEnum := map[string]uint{}, uint(0) + for k, v := range toString { + toEnum[v] = k + if maxEnum < k { + maxEnum = k + } + } + return EnumSupport{toString: toString, toEnum: toEnum, maxEnum: maxEnum} +} + +func (es EnumSupport) String(e uint) string { + if e > es.maxEnum { + return es.toString[0] + } + return es.toString[e] +} + +func (es EnumSupport) UnmarshJSON(b []byte) (uint, error) { + var dec string + if err := json.Unmarshal(b, &dec); err != nil { + return 0, err + } + out := es.toEnum[dec] // if we miss we get 0 which is what we want anyway + return out, nil +} + +func (es EnumSupport) MarshJSON(e uint) ([]byte, error) { + if e == 0 || e > es.maxEnum { + return json.Marshal(nil) + } + return json.Marshal(es.toString[e]) +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/types/errors.go b/tests/vendor/github.com/onsi/ginkgo/v2/types/errors.go new file mode 100644 index 000000000..c2796b549 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/types/errors.go @@ -0,0 +1,653 @@ +package types + +import ( + "fmt" + "reflect" + "strings" + + "github.com/onsi/ginkgo/v2/formatter" +) + +type GinkgoError struct { + Heading string + Message string + DocLink string + CodeLocation CodeLocation +} + +func (g GinkgoError) Error() string { + out := formatter.F("{{bold}}{{red}}%s{{/}}\n", g.Heading) + if (g.CodeLocation != CodeLocation{}) { + contentsOfLine := strings.TrimLeft(g.CodeLocation.ContentsOfLine(), "\t ") + if contentsOfLine != "" { + out += formatter.F("{{light-gray}}%s{{/}}\n", contentsOfLine) + } + out += formatter.F("{{gray}}%s{{/}}\n", g.CodeLocation) + } + if g.Message != "" { + out += formatter.Fiw(1, formatter.COLS, g.Message) + out += "\n\n" + } + if g.DocLink != "" { + out += formatter.Fiw(1, formatter.COLS, "{{bold}}Learn more at:{{/}} {{cyan}}{{underline}}http://onsi.github.io/ginkgo/#%s{{/}}\n", g.DocLink) + } + + return out +} + +type ginkgoErrors struct{} + +var GinkgoErrors = ginkgoErrors{} + +func (g ginkgoErrors) UncaughtGinkgoPanic(cl CodeLocation) error { + return GinkgoError{ + Heading: "Your Test Panicked", + Message: `When you, or your assertion library, calls Ginkgo's Fail(), +Ginkgo panics to prevent subsequent assertions from running. + +Normally Ginkgo rescues this panic so you shouldn't see it. + +However, if you make an assertion in a goroutine, Ginkgo can't capture the panic. +To circumvent this, you should call + + defer GinkgoRecover() + +at the top of the goroutine that caused this panic. + +Alternatively, you may have made an assertion outside of a Ginkgo +leaf node (e.g. in a container node or some out-of-band function) - please move your assertion to +an appropriate Ginkgo node (e.g. a BeforeSuite, BeforeEach, It, etc...).`, + DocLink: "mental-model-how-ginkgo-handles-failure", + CodeLocation: cl, + } +} + +func (g ginkgoErrors) RerunningSuite() error { + return GinkgoError{ + Heading: "Rerunning Suite", + Message: formatter.F(`It looks like you are calling RunSpecs more than once. Ginkgo does not support rerunning suites. If you want to rerun a suite try {{bold}}ginkgo --repeat=N{{/}} or {{bold}}ginkgo --until-it-fails{{/}}`), + DocLink: "repeating-spec-runs-and-managing-flaky-specs", + } +} + +/* Tree construction errors */ + +func (g ginkgoErrors) PushingNodeInRunPhase(nodeType NodeType, cl CodeLocation) error { + return GinkgoError{ + Heading: "Ginkgo detected an issue with your spec structure", + Message: formatter.F( + `It looks like you are trying to add a {{bold}}[%s]{{/}} node +to the Ginkgo spec tree in a leaf node {{bold}}after{{/}} the specs started running. + +To enable randomization and parallelization Ginkgo requires the spec tree +to be fully constructed up front. In practice, this means that you can +only create nodes like {{bold}}[%s]{{/}} at the top-level or within the +body of a {{bold}}Describe{{/}}, {{bold}}Context{{/}}, or {{bold}}When{{/}}.`, nodeType, nodeType), + CodeLocation: cl, + DocLink: "mental-model-how-ginkgo-traverses-the-spec-hierarchy", + } +} + +func (g ginkgoErrors) CaughtPanicDuringABuildPhase(caughtPanic any, cl CodeLocation) error { + return GinkgoError{ + Heading: "Assertion or Panic detected during tree construction", + Message: formatter.F( + `Ginkgo detected a panic while constructing the spec tree. +You may be trying to make an assertion in the body of a container node +(i.e. {{bold}}Describe{{/}}, {{bold}}Context{{/}}, or {{bold}}When{{/}}). + +Please ensure all assertions are inside leaf nodes such as {{bold}}BeforeEach{{/}}, +{{bold}}It{{/}}, etc. + +{{bold}}Here's the content of the panic that was caught:{{/}} +%v`, caughtPanic), + CodeLocation: cl, + DocLink: "no-assertions-in-container-nodes", + } +} + +func (g ginkgoErrors) SuiteNodeInNestedContext(nodeType NodeType, cl CodeLocation) error { + docLink := "suite-setup-and-cleanup-beforesuite-and-aftersuite" + if nodeType.Is(NodeTypeReportBeforeSuite | NodeTypeReportAfterSuite) { + docLink = "reporting-nodes---reportbeforesuite-and-reportaftersuite" + } + + return GinkgoError{ + Heading: "Ginkgo detected an issue with your spec structure", + Message: formatter.F( + `It looks like you are trying to add a {{bold}}[%s]{{/}} node within a container node. + +{{bold}}%s{{/}} can only be called at the top level.`, nodeType, nodeType), + CodeLocation: cl, + DocLink: docLink, + } +} + +func (g ginkgoErrors) SuiteNodeDuringRunPhase(nodeType NodeType, cl CodeLocation) error { + docLink := "suite-setup-and-cleanup-beforesuite-and-aftersuite" + if nodeType.Is(NodeTypeReportBeforeSuite | NodeTypeReportAfterSuite) { + docLink = "reporting-nodes---reportbeforesuite-and-reportaftersuite" + } + + return GinkgoError{ + Heading: "Ginkgo detected an issue with your spec structure", + Message: formatter.F( + `It looks like you are trying to add a {{bold}}[%s]{{/}} node within a leaf node after the spec started running. + +{{bold}}%s{{/}} can only be called at the top level.`, nodeType, nodeType), + CodeLocation: cl, + DocLink: docLink, + } +} + +func (g ginkgoErrors) MultipleBeforeSuiteNodes(nodeType NodeType, cl CodeLocation, earlierNodeType NodeType, earlierCodeLocation CodeLocation) error { + return ginkgoErrorMultipleSuiteNodes("setup", nodeType, cl, earlierNodeType, earlierCodeLocation) +} + +func (g ginkgoErrors) MultipleAfterSuiteNodes(nodeType NodeType, cl CodeLocation, earlierNodeType NodeType, earlierCodeLocation CodeLocation) error { + return ginkgoErrorMultipleSuiteNodes("teardown", nodeType, cl, earlierNodeType, earlierCodeLocation) +} + +func ginkgoErrorMultipleSuiteNodes(setupOrTeardown string, nodeType NodeType, cl CodeLocation, earlierNodeType NodeType, earlierCodeLocation CodeLocation) error { + return GinkgoError{ + Heading: "Ginkgo detected an issue with your spec structure", + Message: formatter.F( + `It looks like you are trying to add a {{bold}}[%s]{{/}} node but +you already have a {{bold}}[%s]{{/}} node defined at: {{gray}}%s{{/}}. + +Ginkgo only allows you to define one suite %s node.`, nodeType, earlierNodeType, earlierCodeLocation, setupOrTeardown), + CodeLocation: cl, + DocLink: "suite-setup-and-cleanup-beforesuite-and-aftersuite", + } +} + +/* Decorator errors */ +func (g ginkgoErrors) InvalidDecoratorForNodeType(cl CodeLocation, nodeType NodeType, decorator string) error { + return GinkgoError{ + Heading: "Invalid Decorator", + Message: formatter.F(`[%s] node cannot be passed a(n) '%s' decorator`, nodeType, decorator), + CodeLocation: cl, + DocLink: "node-decorators-overview", + } +} + +func (g ginkgoErrors) InvalidDeclarationOfFocusedAndPending(cl CodeLocation, nodeType NodeType) error { + return GinkgoError{ + Heading: "Invalid Combination of Decorators: Focused and Pending", + Message: formatter.F(`[%s] node was decorated with both Focus and Pending. At most one is allowed.`, nodeType), + CodeLocation: cl, + DocLink: "node-decorators-overview", + } +} + +func (g ginkgoErrors) InvalidDeclarationOfFlakeAttemptsAndMustPassRepeatedly(cl CodeLocation, nodeType NodeType) error { + return GinkgoError{ + Heading: "Invalid Combination of Decorators: FlakeAttempts and MustPassRepeatedly", + Message: formatter.F(`[%s] node was decorated with both FlakeAttempts and MustPassRepeatedly. At most one is allowed.`, nodeType), + CodeLocation: cl, + DocLink: "node-decorators-overview", + } +} + +func (g ginkgoErrors) UnknownDecorator(cl CodeLocation, nodeType NodeType, decorator any) error { + return GinkgoError{ + Heading: "Unknown Decorator", + Message: formatter.F(`[%s] node was passed an unknown decorator: '%#v'`, nodeType, decorator), + CodeLocation: cl, + DocLink: "node-decorators-overview", + } +} + +func (g ginkgoErrors) InvalidBodyTypeForContainer(t reflect.Type, cl CodeLocation, nodeType NodeType) error { + return GinkgoError{ + Heading: "Invalid Function", + Message: formatter.F(`[%s] node must be passed {{bold}}func(){{/}} - i.e. functions that take nothing and return nothing. You passed {{bold}}%s{{/}} instead.`, nodeType, t), + CodeLocation: cl, + DocLink: "node-decorators-overview", + } +} + +func (g ginkgoErrors) InvalidBodyType(t reflect.Type, cl CodeLocation, nodeType NodeType) error { + mustGet := "{{bold}}func(){{/}}, {{bold}}func(ctx SpecContext){{/}}, or {{bold}}func(ctx context.Context){{/}}" + if nodeType.Is(NodeTypeContainer) { + mustGet = "{{bold}}func(){{/}}" + } + return GinkgoError{ + Heading: "Invalid Function", + Message: formatter.F(`[%s] node must be passed `+mustGet+`. +You passed {{bold}}%s{{/}} instead.`, nodeType, t), + CodeLocation: cl, + DocLink: "node-decorators-overview", + } +} + +func (g ginkgoErrors) InvalidBodyTypeForSynchronizedBeforeSuiteProc1(t reflect.Type, cl CodeLocation) error { + mustGet := "{{bold}}func() []byte{{/}}, {{bold}}func(ctx SpecContext) []byte{{/}}, or {{bold}}func(ctx context.Context) []byte{{/}}, {{bold}}func(){{/}}, {{bold}}func(ctx SpecContext){{/}}, or {{bold}}func(ctx context.Context){{/}}" + return GinkgoError{ + Heading: "Invalid Function", + Message: formatter.F(`[SynchronizedBeforeSuite] node must be passed `+mustGet+` for its first function. +You passed {{bold}}%s{{/}} instead.`, t), + CodeLocation: cl, + DocLink: "node-decorators-overview", + } +} + +func (g ginkgoErrors) InvalidBodyTypeForSynchronizedBeforeSuiteAllProcs(t reflect.Type, cl CodeLocation) error { + mustGet := "{{bold}}func(){{/}}, {{bold}}func(ctx SpecContext){{/}}, or {{bold}}func(ctx context.Context){{/}}, {{bold}}func([]byte){{/}}, {{bold}}func(ctx SpecContext, []byte){{/}}, or {{bold}}func(ctx context.Context, []byte){{/}}" + return GinkgoError{ + Heading: "Invalid Function", + Message: formatter.F(`[SynchronizedBeforeSuite] node must be passed `+mustGet+` for its second function. +You passed {{bold}}%s{{/}} instead.`, t), + CodeLocation: cl, + DocLink: "node-decorators-overview", + } +} + +func (g ginkgoErrors) MultipleBodyFunctions(cl CodeLocation, nodeType NodeType) error { + return GinkgoError{ + Heading: "Multiple Functions", + Message: formatter.F(`[%s] node must be passed a single function - but more than one was passed in.`, nodeType), + CodeLocation: cl, + DocLink: "node-decorators-overview", + } +} + +func (g ginkgoErrors) MissingBodyFunction(cl CodeLocation, nodeType NodeType) error { + return GinkgoError{ + Heading: "Missing Functions", + Message: formatter.F(`[%s] node must be passed a single function - but none was passed in.`, nodeType), + CodeLocation: cl, + DocLink: "node-decorators-overview", + } +} + +func (g ginkgoErrors) InvalidTimeoutOrGracePeriodForNonContextNode(cl CodeLocation, nodeType NodeType) error { + return GinkgoError{ + Heading: "Invalid NodeTimeout SpecTimeout, or GracePeriod", + Message: formatter.F(`[%s] was passed NodeTimeout, SpecTimeout, or GracePeriod but does not have a callback that accepts a {{bold}}SpecContext{{/}} or {{bold}}context.Context{{/}}. You must accept a context to enable timeouts and grace periods`, nodeType), + CodeLocation: cl, + DocLink: "spec-timeouts-and-interruptible-nodes", + } +} + +func (g ginkgoErrors) InvalidTimeoutOrGracePeriodForNonContextCleanupNode(cl CodeLocation) error { + return GinkgoError{ + Heading: "Invalid NodeTimeout SpecTimeout, or GracePeriod", + Message: formatter.F(`[DeferCleanup] was passed NodeTimeout or GracePeriod but does not have a callback that accepts a {{bold}}SpecContext{{/}} or {{bold}}context.Context{{/}}. You must accept a context to enable timeouts and grace periods`), + CodeLocation: cl, + DocLink: "spec-timeouts-and-interruptible-nodes", + } +} + +/* Ordered Container errors */ +func (g ginkgoErrors) InvalidSerialNodeInNonSerialOrderedContainer(cl CodeLocation, nodeType NodeType) error { + return GinkgoError{ + Heading: "Invalid Serial Node in Non-Serial Ordered Container", + Message: formatter.F(`[%s] node was decorated with Serial but occurs in an Ordered container that is not marked Serial. Move the Serial decorator to the outer-most Ordered container to mark all ordered specs within the container as serial.`, nodeType), + CodeLocation: cl, + DocLink: "node-decorators-overview", + } +} + +func (g ginkgoErrors) SetupNodeNotInOrderedContainer(cl CodeLocation, nodeType NodeType) error { + return GinkgoError{ + Heading: "Setup Node not in Ordered Container", + Message: fmt.Sprintf("[%s] setup nodes must appear inside an Ordered container. They cannot be nested within other containers, even containers in an ordered container.", nodeType), + CodeLocation: cl, + DocLink: "ordered-containers", + } +} + +func (g ginkgoErrors) InvalidContinueOnFailureDecoration(cl CodeLocation) error { + return GinkgoError{ + Heading: "ContinueOnFailure not decorating an outermost Ordered Container", + Message: "ContinueOnFailure can only decorate an Ordered container, and this Ordered container must be the outermost Ordered container.", + CodeLocation: cl, + DocLink: "ordered-containers", + } +} + +/* DeferCleanup errors */ +func (g ginkgoErrors) DeferCleanupInvalidFunction(cl CodeLocation) error { + return GinkgoError{ + Heading: "DeferCleanup requires a valid function", + Message: "You must pass DeferCleanup a function to invoke. This function must return zero or one values - if it does return, it must return an error. The function can take arbitrarily many arguments and you should provide these to DeferCleanup to pass along to the function.", + CodeLocation: cl, + DocLink: "cleaning-up-our-cleanup-code-defercleanup", + } +} + +func (g ginkgoErrors) PushingCleanupNodeDuringTreeConstruction(cl CodeLocation) error { + return GinkgoError{ + Heading: "DeferCleanup must be called inside a setup or subject node", + Message: "You must call DeferCleanup inside a setup node (e.g. BeforeEach, BeforeSuite, AfterAll...) or a subject node (i.e. It). You can't call DeferCleanup at the top-level or in a container node - use the After* family of setup nodes instead.", + CodeLocation: cl, + DocLink: "cleaning-up-our-cleanup-code-defercleanup", + } +} + +func (g ginkgoErrors) PushingCleanupInReportingNode(cl CodeLocation, nodeType NodeType) error { + return GinkgoError{ + Heading: fmt.Sprintf("DeferCleanup cannot be called in %s", nodeType), + Message: "Please inline your cleanup code - Ginkgo won't run cleanup code after a Reporting node.", + CodeLocation: cl, + DocLink: "cleaning-up-our-cleanup-code-defercleanup", + } +} + +func (g ginkgoErrors) PushingCleanupInCleanupNode(cl CodeLocation) error { + return GinkgoError{ + Heading: "DeferCleanup cannot be called in a DeferCleanup callback", + Message: "Please inline your cleanup code - Ginkgo doesn't let you call DeferCleanup from within DeferCleanup", + CodeLocation: cl, + DocLink: "cleaning-up-our-cleanup-code-defercleanup", + } +} + +/* ReportEntry errors */ +func (g ginkgoErrors) TooManyReportEntryValues(cl CodeLocation, arg any) error { + return GinkgoError{ + Heading: "Too Many ReportEntry Values", + Message: formatter.F(`{{bold}}AddGinkgoReport{{/}} can only be given one value. Got unexpected value: %#v`, arg), + CodeLocation: cl, + DocLink: "attaching-data-to-reports", + } +} + +func (g ginkgoErrors) AddReportEntryNotDuringRunPhase(cl CodeLocation) error { + return GinkgoError{ + Heading: "Ginkgo detected an issue with your spec structure", + Message: formatter.F(`It looks like you are calling {{bold}}AddGinkgoReport{{/}} outside of a running spec. Make sure you call {{bold}}AddGinkgoReport{{/}} inside a runnable node such as It or BeforeEach and not inside the body of a container such as Describe or Context.`), + CodeLocation: cl, + DocLink: "attaching-data-to-reports", + } +} + +/* By errors */ +func (g ginkgoErrors) ByNotDuringRunPhase(cl CodeLocation) error { + return GinkgoError{ + Heading: "Ginkgo detected an issue with your spec structure", + Message: formatter.F(`It looks like you are calling {{bold}}By{{/}} outside of a running spec. Make sure you call {{bold}}By{{/}} inside a runnable node such as It or BeforeEach and not inside the body of a container such as Describe or Context.`), + CodeLocation: cl, + DocLink: "documenting-complex-specs-by", + } +} + +/* FileFilter and SkipFilter errors */ +func (g ginkgoErrors) InvalidFileFilter(filter string) error { + return GinkgoError{ + Heading: "Invalid File Filter", + Message: fmt.Sprintf(`The provided file filter: "%s" is invalid. File filters must have the format "file", "file:lines" where "file" is a regular expression that will match against the file path and lines is a comma-separated list of integers (e.g. file:1,5,7) or line-ranges (e.g. file:1-3,5-9) or both (e.g. file:1,5-9)`, filter), + DocLink: "filtering-specs", + } +} + +func (g ginkgoErrors) InvalidFileFilterRegularExpression(filter string, err error) error { + return GinkgoError{ + Heading: "Invalid File Filter Regular Expression", + Message: fmt.Sprintf(`The provided file filter: "%s" included an invalid regular expression. regexp.Compile error: %s`, filter, err), + DocLink: "filtering-specs", + } +} + +/* Label Errors */ +func (g ginkgoErrors) SyntaxErrorParsingLabelFilter(input string, location int, error string) error { + var message string + if location >= 0 { + for i, r := range input { + if i == location { + message += "{{red}}{{bold}}{{underline}}" + } + message += string(r) + if i == location { + message += "{{/}}" + } + } + } else { + message = input + } + message += "\n" + error + return GinkgoError{ + Heading: "Syntax Error Parsing Label Filter", + Message: message, + DocLink: "spec-labels", + } +} + +func (g ginkgoErrors) InvalidLabel(label string, cl CodeLocation) error { + return GinkgoError{ + Heading: "Invalid Label", + Message: fmt.Sprintf("'%s' is an invalid label. Labels cannot contain of the following characters: '&|!,()/'", label), + CodeLocation: cl, + DocLink: "spec-labels", + } +} + +func (g ginkgoErrors) InvalidEmptyLabel(cl CodeLocation) error { + return GinkgoError{ + Heading: "Invalid Empty Label", + Message: "Labels cannot be empty", + CodeLocation: cl, + DocLink: "spec-labels", + } +} + +/* Table errors */ +func (g ginkgoErrors) MultipleEntryBodyFunctionsForTable(cl CodeLocation) error { + return GinkgoError{ + Heading: "DescribeTable passed multiple functions", + Message: "It looks like you are passing multiple functions into DescribeTable. Only one function can be passed in. This function will be called for each Entry in the table.", + CodeLocation: cl, + DocLink: "table-specs", + } +} + +func (g ginkgoErrors) InvalidEntryDescription(cl CodeLocation) error { + return GinkgoError{ + Heading: "Invalid Entry description", + Message: "Entry description functions must be a string, a function that accepts the entry parameters and returns a string, or nil.", + CodeLocation: cl, + DocLink: "table-specs", + } +} + +func (g ginkgoErrors) MissingParametersForTableFunction(cl CodeLocation) error { + return GinkgoError{ + Heading: "No parameters have been passed to the Table Function", + Message: "The Table Function expected at least 1 parameter", + CodeLocation: cl, + DocLink: "table-specs", + } +} + +func (g ginkgoErrors) IncorrectParameterTypeForTable(i int, name string, cl CodeLocation) error { + return GinkgoError{ + Heading: "DescribeTable passed incorrect parameter type", + Message: fmt.Sprintf("Parameter #%d passed to DescribeTable is of incorrect type <%s>", i, name), + CodeLocation: cl, + DocLink: "table-specs", + } +} + +func (g ginkgoErrors) TooFewParametersToTableFunction(expected, actual int, kind string, cl CodeLocation) error { + return GinkgoError{ + Heading: fmt.Sprintf("Too few parameters passed in to %s", kind), + Message: fmt.Sprintf("The %s expected %d parameters but you passed in %d", kind, expected, actual), + CodeLocation: cl, + DocLink: "table-specs", + } +} + +func (g ginkgoErrors) TooManyParametersToTableFunction(expected, actual int, kind string, cl CodeLocation) error { + return GinkgoError{ + Heading: fmt.Sprintf("Too many parameters passed in to %s", kind), + Message: fmt.Sprintf("The %s expected %d parameters but you passed in %d", kind, expected, actual), + CodeLocation: cl, + DocLink: "table-specs", + } +} + +func (g ginkgoErrors) IncorrectParameterTypeToTableFunction(i int, expected, actual reflect.Type, kind string, cl CodeLocation) error { + return GinkgoError{ + Heading: fmt.Sprintf("Incorrect parameters type passed to %s", kind), + Message: fmt.Sprintf("The %s expected parameter #%d to be of type <%s> but you passed in <%s>", kind, i, expected, actual), + CodeLocation: cl, + DocLink: "table-specs", + } +} + +func (g ginkgoErrors) IncorrectVariadicParameterTypeToTableFunction(expected, actual reflect.Type, kind string, cl CodeLocation) error { + return GinkgoError{ + Heading: fmt.Sprintf("Incorrect parameters type passed to %s", kind), + Message: fmt.Sprintf("The %s expected its variadic parameters to be of type <%s> but you passed in <%s>", kind, expected, actual), + CodeLocation: cl, + DocLink: "table-specs", + } +} + +func (g ginkgoErrors) ContextsCannotBeUsedInSubtreeTables(cl CodeLocation) error { + return GinkgoError{ + Heading: "Contexts cannot be used in subtree tables", + Message: "You''ve defined a subtree body function that accepts a context but did not provide one in the table entry. Ginkgo SpecContexts can only be passed in to subject and setup nodes - so if you are trying to implement a spec timeout you should request a context in the It function within your subtree body function, not in the subtree body function itself.", + CodeLocation: cl, + DocLink: "table-specs", + } +} + +/* Parallel Synchronization errors */ + +func (g ginkgoErrors) AggregatedReportUnavailableDueToNodeDisappearing() error { + return GinkgoError{ + Heading: "Test Report unavailable because a Ginkgo parallel process disappeared", + Message: "The aggregated report could not be fetched for a ReportAfterSuite node. A Ginkgo parallel process disappeared before it could finish reporting.", + } +} + +func (g ginkgoErrors) SynchronizedBeforeSuiteFailedOnProc1() error { + return GinkgoError{ + Heading: "SynchronizedBeforeSuite failed on Ginkgo parallel process #1", + Message: "The first SynchronizedBeforeSuite function running on Ginkgo parallel process #1 failed. This suite will now abort.", + } +} + +func (g ginkgoErrors) SynchronizedBeforeSuiteDisappearedOnProc1() error { + return GinkgoError{ + Heading: "Process #1 disappeared before SynchronizedBeforeSuite could report back", + Message: "Ginkgo parallel process #1 disappeared before the first SynchronizedBeforeSuite function completed. This suite will now abort.", + } +} + +/* Configuration errors */ + +func (g ginkgoErrors) UnknownTypePassedToRunSpecs(value any) error { + return GinkgoError{ + Heading: "Unknown Type passed to RunSpecs", + Message: fmt.Sprintf("RunSpecs() accepts labels, and configuration of type types.SuiteConfig and/or types.ReporterConfig.\n You passed in: %v", value), + } +} + +var sharedParallelErrorMessage = "It looks like you are trying to run specs in parallel with go test.\nThis is unsupported and you should use the ginkgo CLI instead." + +func (g ginkgoErrors) InvalidParallelTotalConfiguration() error { + return GinkgoError{ + Heading: "-ginkgo.parallel.total must be >= 1", + Message: sharedParallelErrorMessage, + DocLink: "spec-parallelization", + } +} + +func (g ginkgoErrors) InvalidParallelProcessConfiguration() error { + return GinkgoError{ + Heading: "-ginkgo.parallel.process is one-indexed and must be <= ginkgo.parallel.total", + Message: sharedParallelErrorMessage, + DocLink: "spec-parallelization", + } +} + +func (g ginkgoErrors) MissingParallelHostConfiguration() error { + return GinkgoError{ + Heading: "-ginkgo.parallel.host is missing", + Message: sharedParallelErrorMessage, + DocLink: "spec-parallelization", + } +} + +func (g ginkgoErrors) UnreachableParallelHost(host string) error { + return GinkgoError{ + Heading: "Could not reach ginkgo.parallel.host:" + host, + Message: sharedParallelErrorMessage, + DocLink: "spec-parallelization", + } +} + +func (g ginkgoErrors) DryRunInParallelConfiguration() error { + return GinkgoError{ + Heading: "Ginkgo only performs -dryRun in serial mode.", + Message: "Please try running ginkgo -dryRun again, but without -p or -procs to ensure the suite is running in series.", + } +} + +func (g ginkgoErrors) GracePeriodCannotBeZero() error { + return GinkgoError{ + Heading: "Ginkgo requires a positive --grace-period.", + Message: "Please set --grace-period to a positive duration. The default is 30s.", + } +} + +func (g ginkgoErrors) ConflictingVerbosityConfiguration() error { + return GinkgoError{ + Heading: "Conflicting reporter verbosity settings.", + Message: "You can't set more than one of -v, -vv and --succinct. Please pick one!", + } +} + +func (g ginkgoErrors) InvalidOutputInterceptorModeConfiguration(value string) error { + return GinkgoError{ + Heading: fmt.Sprintf("Invalid value '%s' for --output-interceptor-mode.", value), + Message: "You must choose one of 'dup', 'swap', or 'none'.", + } +} + +func (g ginkgoErrors) InvalidGoFlagCount() error { + return GinkgoError{ + Heading: "Use of go test -count", + Message: "Ginkgo does not support using go test -count to rerun suites. Only -count=1 is allowed. To repeat suite runs, please use the ginkgo cli and `ginkgo -until-it-fails` or `ginkgo -repeat=N`.", + } +} + +func (g ginkgoErrors) InvalidGoFlagParallel() error { + return GinkgoError{ + Heading: "Use of go test -parallel", + Message: "Go test's implementation of parallelization does not actually parallelize Ginkgo specs. Please use the ginkgo cli and `ginkgo -p` or `ginkgo -procs=N` instead.", + } +} + +func (g ginkgoErrors) BothRepeatAndUntilItFails() error { + return GinkgoError{ + Heading: "--repeat and --until-it-fails are both set", + Message: "--until-it-fails directs Ginkgo to rerun specs indefinitely until they fail. --repeat directs Ginkgo to rerun specs a set number of times. You can't set both... which would you like?", + } +} + +func (g ginkgoErrors) ExpectFilenameNotPath(flag string, path string) error { + return GinkgoError{ + Heading: fmt.Sprintf("%s expects a filename but was given a path: %s", flag, path), + Message: fmt.Sprintf("%s takes a filename, not a path. Use --output-dir to specify a directory to collect all test outputs.", flag), + } +} + +func (g ginkgoErrors) FlagAfterPositionalParameter() error { + return GinkgoError{ + Heading: "Malformed arguments - detected a flag after the package liste", + Message: "Make sure all flags appear {{bold}}after{{/}} the Ginkgo subcommand and {{bold}}before{{/}} your list of packages (or './...').\n{{gray}}e.g. 'ginkgo run -p my_package' is valid but `ginkgo -p run my_package` is not.\n{{gray}}e.g. 'ginkgo -p -vet=\"\" ./...' is valid but 'ginkgo -p ./... -vet=\"\"' is not{{/}}", + } +} + +/* Stack-Trace parsing errors */ + +func (g ginkgoErrors) FailedToParseStackTrace(message string) error { + return GinkgoError{ + Heading: "Failed to Parse Stack Trace", + Message: message, + } +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/types/file_filter.go b/tests/vendor/github.com/onsi/ginkgo/v2/types/file_filter.go new file mode 100644 index 000000000..cc21df71e --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/types/file_filter.go @@ -0,0 +1,106 @@ +package types + +import ( + "regexp" + "strconv" + "strings" +) + +func ParseFileFilters(filters []string) (FileFilters, error) { + ffs := FileFilters{} + for _, filter := range filters { + ff := FileFilter{} + if filter == "" { + return nil, GinkgoErrors.InvalidFileFilter(filter) + } + components := strings.Split(filter, ":") + if !(len(components) == 1 || len(components) == 2) { + return nil, GinkgoErrors.InvalidFileFilter(filter) + } + + var err error + ff.Filename, err = regexp.Compile(components[0]) + if err != nil { + return nil, err + } + if len(components) == 2 { + lineFilters := strings.Split(components[1], ",") + for _, lineFilter := range lineFilters { + components := strings.Split(lineFilter, "-") + if len(components) == 1 { + line, err := strconv.Atoi(strings.TrimSpace(components[0])) + if err != nil { + return nil, GinkgoErrors.InvalidFileFilter(filter) + } + ff.LineFilters = append(ff.LineFilters, LineFilter{line, line + 1}) + } else if len(components) == 2 { + line1, err := strconv.Atoi(strings.TrimSpace(components[0])) + if err != nil { + return nil, GinkgoErrors.InvalidFileFilter(filter) + } + line2, err := strconv.Atoi(strings.TrimSpace(components[1])) + if err != nil { + return nil, GinkgoErrors.InvalidFileFilter(filter) + } + ff.LineFilters = append(ff.LineFilters, LineFilter{line1, line2}) + } else { + return nil, GinkgoErrors.InvalidFileFilter(filter) + } + } + } + ffs = append(ffs, ff) + } + return ffs, nil +} + +type FileFilter struct { + Filename *regexp.Regexp + LineFilters LineFilters +} + +func (f FileFilter) Matches(locations []CodeLocation) bool { + for _, location := range locations { + if f.Filename.MatchString(location.FileName) && + f.LineFilters.Matches(location.LineNumber) { + return true + } + + } + return false +} + +type FileFilters []FileFilter + +func (ffs FileFilters) Matches(locations []CodeLocation) bool { + for _, ff := range ffs { + if ff.Matches(locations) { + return true + } + } + + return false +} + +type LineFilter struct { + Min int + Max int +} + +func (lf LineFilter) Matches(line int) bool { + return lf.Min <= line && line < lf.Max +} + +type LineFilters []LineFilter + +func (lfs LineFilters) Matches(line int) bool { + if len(lfs) == 0 { + return true + } + + for _, lf := range lfs { + if lf.Matches(line) { + return true + } + } + return false +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/types/flags.go b/tests/vendor/github.com/onsi/ginkgo/v2/types/flags.go new file mode 100644 index 000000000..8409653f9 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/types/flags.go @@ -0,0 +1,490 @@ +package types + +import ( + "flag" + "fmt" + "io" + "reflect" + "strings" + "time" + + "github.com/onsi/ginkgo/v2/formatter" +) + +type GinkgoFlag struct { + Name string + KeyPath string + SectionKey string + + Usage string + UsageArgument string + UsageDefaultValue string + + DeprecatedName string + DeprecatedDocLink string + DeprecatedVersion string + + ExportAs string + AlwaysExport bool +} + +type GinkgoFlags []GinkgoFlag + +func (f GinkgoFlags) CopyAppend(flags ...GinkgoFlag) GinkgoFlags { + out := GinkgoFlags{} + out = append(out, f...) + out = append(out, flags...) + return out +} + +func (f GinkgoFlags) WithPrefix(prefix string) GinkgoFlags { + if prefix == "" { + return f + } + out := GinkgoFlags{} + for _, flag := range f { + if flag.Name != "" { + flag.Name = prefix + "." + flag.Name + } + if flag.DeprecatedName != "" { + flag.DeprecatedName = prefix + "." + flag.DeprecatedName + } + if flag.ExportAs != "" { + flag.ExportAs = prefix + "." + flag.ExportAs + } + out = append(out, flag) + } + return out +} + +func (f GinkgoFlags) SubsetWithNames(names ...string) GinkgoFlags { + out := GinkgoFlags{} + for _, flag := range f { + for _, name := range names { + if flag.Name == name { + out = append(out, flag) + break + } + } + } + return out +} + +type GinkgoFlagSection struct { + Key string + Style string + Succinct bool + Heading string + Description string +} + +type GinkgoFlagSections []GinkgoFlagSection + +func (gfs GinkgoFlagSections) Lookup(key string) (GinkgoFlagSection, bool) { + for _, section := range gfs { + if section.Key == key { + return section, true + } + } + + return GinkgoFlagSection{}, false +} + +type GinkgoFlagSet struct { + flags GinkgoFlags + bindings any + + sections GinkgoFlagSections + extraGoFlagsSection GinkgoFlagSection + + flagSet *flag.FlagSet +} + +// Call NewGinkgoFlagSet to create GinkgoFlagSet that creates and binds to it's own *flag.FlagSet +func NewGinkgoFlagSet(flags GinkgoFlags, bindings any, sections GinkgoFlagSections) (GinkgoFlagSet, error) { + return bindFlagSet(GinkgoFlagSet{ + flags: flags, + bindings: bindings, + sections: sections, + }, nil) +} + +// Call NewGinkgoFlagSet to create GinkgoFlagSet that extends an existing *flag.FlagSet +func NewAttachedGinkgoFlagSet(flagSet *flag.FlagSet, flags GinkgoFlags, bindings any, sections GinkgoFlagSections, extraGoFlagsSection GinkgoFlagSection) (GinkgoFlagSet, error) { + return bindFlagSet(GinkgoFlagSet{ + flags: flags, + bindings: bindings, + sections: sections, + extraGoFlagsSection: extraGoFlagsSection, + }, flagSet) +} + +func bindFlagSet(f GinkgoFlagSet, flagSet *flag.FlagSet) (GinkgoFlagSet, error) { + if flagSet == nil { + f.flagSet = flag.NewFlagSet("", flag.ContinueOnError) + //suppress all output as Ginkgo is responsible for formatting usage + f.flagSet.SetOutput(io.Discard) + } else { + f.flagSet = flagSet + //we're piggybacking on an existing flagset (typically go test) so we have limited control + //on user feedback + f.flagSet.Usage = f.substituteUsage + } + + for _, flag := range f.flags { + name := flag.Name + + deprecatedUsage := "[DEPRECATED]" + deprecatedName := flag.DeprecatedName + if name != "" { + deprecatedUsage = fmt.Sprintf("[DEPRECATED] use --%s instead", name) + } else if flag.Usage != "" { + deprecatedUsage += " " + flag.Usage + } + + value, ok := valueAtKeyPath(f.bindings, flag.KeyPath) + if !ok { + return GinkgoFlagSet{}, fmt.Errorf("could not load KeyPath: %s", flag.KeyPath) + } + + iface, addr := value.Interface(), value.Addr().Interface() + + switch value.Type() { + case reflect.TypeOf(string("")): + if name != "" { + f.flagSet.StringVar(addr.(*string), name, iface.(string), flag.Usage) + } + if deprecatedName != "" { + f.flagSet.StringVar(addr.(*string), deprecatedName, iface.(string), deprecatedUsage) + } + case reflect.TypeOf(int64(0)): + if name != "" { + f.flagSet.Int64Var(addr.(*int64), name, iface.(int64), flag.Usage) + } + if deprecatedName != "" { + f.flagSet.Int64Var(addr.(*int64), deprecatedName, iface.(int64), deprecatedUsage) + } + case reflect.TypeOf(float64(0)): + if name != "" { + f.flagSet.Float64Var(addr.(*float64), name, iface.(float64), flag.Usage) + } + if deprecatedName != "" { + f.flagSet.Float64Var(addr.(*float64), deprecatedName, iface.(float64), deprecatedUsage) + } + case reflect.TypeOf(int(0)): + if name != "" { + f.flagSet.IntVar(addr.(*int), name, iface.(int), flag.Usage) + } + if deprecatedName != "" { + f.flagSet.IntVar(addr.(*int), deprecatedName, iface.(int), deprecatedUsage) + } + case reflect.TypeOf(bool(true)): + if name != "" { + f.flagSet.BoolVar(addr.(*bool), name, iface.(bool), flag.Usage) + } + if deprecatedName != "" { + f.flagSet.BoolVar(addr.(*bool), deprecatedName, iface.(bool), deprecatedUsage) + } + case reflect.TypeOf(time.Duration(0)): + if name != "" { + f.flagSet.DurationVar(addr.(*time.Duration), name, iface.(time.Duration), flag.Usage) + } + if deprecatedName != "" { + f.flagSet.DurationVar(addr.(*time.Duration), deprecatedName, iface.(time.Duration), deprecatedUsage) + } + + case reflect.TypeOf([]string{}): + if name != "" { + f.flagSet.Var(stringSliceVar{value}, name, flag.Usage) + } + if deprecatedName != "" { + f.flagSet.Var(stringSliceVar{value}, deprecatedName, deprecatedUsage) + } + default: + return GinkgoFlagSet{}, fmt.Errorf("unsupported type %T", iface) + } + } + + return f, nil +} + +func (f GinkgoFlagSet) IsZero() bool { + return f.flagSet == nil +} + +func (f GinkgoFlagSet) WasSet(name string) bool { + found := false + f.flagSet.Visit(func(f *flag.Flag) { + if f.Name == name { + found = true + } + }) + + return found +} + +func (f GinkgoFlagSet) Lookup(name string) *flag.Flag { + return f.flagSet.Lookup(name) +} + +func (f GinkgoFlagSet) Parse(args []string) ([]string, error) { + if f.IsZero() { + return args, nil + } + err := f.flagSet.Parse(args) + if err != nil { + return []string{}, err + } + return f.flagSet.Args(), nil +} + +func (f GinkgoFlagSet) ValidateDeprecations(deprecationTracker *DeprecationTracker) { + if f.IsZero() { + return + } + f.flagSet.Visit(func(flag *flag.Flag) { + for _, ginkgoFlag := range f.flags { + if ginkgoFlag.DeprecatedName != "" && strings.HasSuffix(flag.Name, ginkgoFlag.DeprecatedName) { + message := fmt.Sprintf("--%s is deprecated", ginkgoFlag.DeprecatedName) + if ginkgoFlag.Name != "" { + message = fmt.Sprintf("--%s is deprecated, use --%s instead", ginkgoFlag.DeprecatedName, ginkgoFlag.Name) + } else if ginkgoFlag.Usage != "" { + message += " " + ginkgoFlag.Usage + } + + deprecationTracker.TrackDeprecation(Deprecation{ + Message: message, + DocLink: ginkgoFlag.DeprecatedDocLink, + Version: ginkgoFlag.DeprecatedVersion, + }) + } + } + }) +} + +func (f GinkgoFlagSet) Usage() string { + if f.IsZero() { + return "" + } + groupedFlags := map[GinkgoFlagSection]GinkgoFlags{} + ungroupedFlags := GinkgoFlags{} + managedFlags := map[string]bool{} + extraGoFlags := []*flag.Flag{} + + for _, flag := range f.flags { + managedFlags[flag.Name] = true + managedFlags[flag.DeprecatedName] = true + + if flag.Name == "" { + continue + } + + section, ok := f.sections.Lookup(flag.SectionKey) + if ok { + groupedFlags[section] = append(groupedFlags[section], flag) + } else { + ungroupedFlags = append(ungroupedFlags, flag) + } + } + + f.flagSet.VisitAll(func(flag *flag.Flag) { + if !managedFlags[flag.Name] { + extraGoFlags = append(extraGoFlags, flag) + } + }) + + out := "" + for _, section := range f.sections { + flags := groupedFlags[section] + if len(flags) == 0 { + continue + } + out += f.usageForSection(section) + if section.Succinct { + succinctFlags := []string{} + for _, flag := range flags { + if flag.Name != "" { + succinctFlags = append(succinctFlags, fmt.Sprintf("--%s", flag.Name)) + } + } + out += formatter.Fiw(1, formatter.COLS, section.Style+strings.Join(succinctFlags, ", ")+"{{/}}\n") + } else { + for _, flag := range flags { + out += f.usageForFlag(flag, section.Style) + } + } + out += "\n" + } + if len(ungroupedFlags) > 0 { + for _, flag := range ungroupedFlags { + out += f.usageForFlag(flag, "") + } + out += "\n" + } + if len(extraGoFlags) > 0 { + out += f.usageForSection(f.extraGoFlagsSection) + for _, goFlag := range extraGoFlags { + out += f.usageForGoFlag(goFlag) + } + } + + return out +} + +func (f GinkgoFlagSet) substituteUsage() { + fmt.Fprintln(f.flagSet.Output(), f.Usage()) +} + +func valueAtKeyPath(root any, keyPath string) (reflect.Value, bool) { + if len(keyPath) == 0 { + return reflect.Value{}, false + } + + val := reflect.ValueOf(root) + components := strings.Split(keyPath, ".") + for _, component := range components { + val = reflect.Indirect(val) + switch val.Kind() { + case reflect.Map: + val = val.MapIndex(reflect.ValueOf(component)) + if val.Kind() == reflect.Interface { + val = reflect.ValueOf(val.Interface()) + } + case reflect.Struct: + val = val.FieldByName(component) + default: + return reflect.Value{}, false + } + if (val == reflect.Value{}) { + return reflect.Value{}, false + } + } + + return val, true +} + +func (f GinkgoFlagSet) usageForSection(section GinkgoFlagSection) string { + out := formatter.F(section.Style + "{{bold}}{{underline}}" + section.Heading + "{{/}}\n") + if section.Description != "" { + out += formatter.Fiw(0, formatter.COLS, section.Description+"\n") + } + return out +} + +func (f GinkgoFlagSet) usageForFlag(flag GinkgoFlag, style string) string { + argument := flag.UsageArgument + defValue := flag.UsageDefaultValue + if argument == "" { + value, _ := valueAtKeyPath(f.bindings, flag.KeyPath) + switch value.Type() { + case reflect.TypeOf(string("")): + argument = "string" + case reflect.TypeOf(int64(0)), reflect.TypeOf(int(0)): + argument = "int" + case reflect.TypeOf(time.Duration(0)): + argument = "duration" + case reflect.TypeOf(float64(0)): + argument = "float" + case reflect.TypeOf([]string{}): + argument = "string" + } + } + if argument != "" { + argument = "[" + argument + "] " + } + if defValue != "" { + defValue = fmt.Sprintf("(default: %s)", defValue) + } + hyphens := "--" + if len(flag.Name) == 1 { + hyphens = "-" + } + + out := formatter.Fi(1, style+"%s%s{{/}} %s{{gray}}%s{{/}}\n", hyphens, flag.Name, argument, defValue) + out += formatter.Fiw(2, formatter.COLS, "{{light-gray}}%s{{/}}\n", flag.Usage) + return out +} + +func (f GinkgoFlagSet) usageForGoFlag(goFlag *flag.Flag) string { + //Taken directly from the flag package + out := fmt.Sprintf(" -%s", goFlag.Name) + name, usage := flag.UnquoteUsage(goFlag) + if len(name) > 0 { + out += " " + name + } + if len(out) <= 4 { + out += "\t" + } else { + out += "\n \t" + } + out += strings.ReplaceAll(usage, "\n", "\n \t") + out += "\n" + return out +} + +type stringSliceVar struct { + slice reflect.Value +} + +func (ssv stringSliceVar) String() string { return "" } +func (ssv stringSliceVar) Set(s string) error { + ssv.slice.Set(reflect.AppendSlice(ssv.slice, reflect.ValueOf([]string{s}))) + return nil +} + +// given a set of GinkgoFlags and bindings, generate flag arguments suitable to be passed to an application with that set of flags configured. +func GenerateFlagArgs(flags GinkgoFlags, bindings any) ([]string, error) { + result := []string{} + for _, flag := range flags { + name := flag.ExportAs + if name == "" { + name = flag.Name + } + if name == "" { + continue + } + + value, ok := valueAtKeyPath(bindings, flag.KeyPath) + if !ok { + return []string{}, fmt.Errorf("could not load KeyPath: %s", flag.KeyPath) + } + + iface := value.Interface() + switch value.Type() { + case reflect.TypeOf(string("")): + if iface.(string) != "" || flag.AlwaysExport { + result = append(result, fmt.Sprintf("--%s=%s", name, iface)) + } + case reflect.TypeOf(int64(0)): + if iface.(int64) != 0 || flag.AlwaysExport { + result = append(result, fmt.Sprintf("--%s=%d", name, iface)) + } + case reflect.TypeOf(float64(0)): + if iface.(float64) != 0 || flag.AlwaysExport { + result = append(result, fmt.Sprintf("--%s=%f", name, iface)) + } + case reflect.TypeOf(int(0)): + if iface.(int) != 0 || flag.AlwaysExport { + result = append(result, fmt.Sprintf("--%s=%d", name, iface)) + } + case reflect.TypeOf(bool(true)): + if iface.(bool) { + result = append(result, fmt.Sprintf("--%s", name)) + } + case reflect.TypeOf(time.Duration(0)): + if iface.(time.Duration) != time.Duration(0) || flag.AlwaysExport { + result = append(result, fmt.Sprintf("--%s=%s", name, iface)) + } + + case reflect.TypeOf([]string{}): + strings := iface.([]string) + for _, s := range strings { + result = append(result, fmt.Sprintf("--%s=%s", name, s)) + } + default: + return []string{}, fmt.Errorf("unsupported type %T", iface) + } + } + + return result, nil +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/types/label_filter.go b/tests/vendor/github.com/onsi/ginkgo/v2/types/label_filter.go new file mode 100644 index 000000000..40a909b6d --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/types/label_filter.go @@ -0,0 +1,583 @@ +package types + +import ( + "fmt" + "regexp" + "strings" +) + +var DEBUG_LABEL_FILTER_PARSING = false + +type LabelFilter func([]string) bool + +func matchLabelAction(label string) LabelFilter { + expected := strings.ToLower(label) + return func(labels []string) bool { + for i := range labels { + if strings.ToLower(labels[i]) == expected { + return true + } + } + return false + } +} + +func matchLabelRegexAction(regex *regexp.Regexp) LabelFilter { + return func(labels []string) bool { + for i := range labels { + if regex.MatchString(labels[i]) { + return true + } + } + return false + } +} + +func notAction(filter LabelFilter) LabelFilter { + return func(labels []string) bool { return !filter(labels) } +} + +func andAction(a, b LabelFilter) LabelFilter { + return func(labels []string) bool { return a(labels) && b(labels) } +} + +func orAction(a, b LabelFilter) LabelFilter { + return func(labels []string) bool { return a(labels) || b(labels) } +} + +func labelSetFor(key string, labels []string) map[string]bool { + key = strings.ToLower(strings.TrimSpace(key)) + out := map[string]bool{} + for _, label := range labels { + components := strings.SplitN(label, ":", 2) + if len(components) < 2 { + continue + } + if key == strings.ToLower(strings.TrimSpace(components[0])) { + out[strings.ToLower(strings.TrimSpace(components[1]))] = true + } + } + + return out +} + +func isEmptyLabelSetAction(key string) LabelFilter { + return func(labels []string) bool { + return len(labelSetFor(key, labels)) == 0 + } +} + +func containsAnyLabelSetAction(key string, expectedValues []string) LabelFilter { + return func(labels []string) bool { + set := labelSetFor(key, labels) + for _, value := range expectedValues { + if set[value] { + return true + } + } + return false + } +} + +func containsAllLabelSetAction(key string, expectedValues []string) LabelFilter { + return func(labels []string) bool { + set := labelSetFor(key, labels) + for _, value := range expectedValues { + if !set[value] { + return false + } + } + return true + } +} + +func consistsOfLabelSetAction(key string, expectedValues []string) LabelFilter { + return func(labels []string) bool { + set := labelSetFor(key, labels) + if len(set) != len(expectedValues) { + return false + } + for _, value := range expectedValues { + if !set[value] { + return false + } + } + return true + } +} + +func isSubsetOfLabelSetAction(key string, expectedValues []string) LabelFilter { + expectedSet := map[string]bool{} + for _, value := range expectedValues { + expectedSet[value] = true + } + return func(labels []string) bool { + set := labelSetFor(key, labels) + for value := range set { + if !expectedSet[value] { + return false + } + } + return true + } +} + +type lfToken uint + +const ( + lfTokenInvalid lfToken = iota + + lfTokenRoot + lfTokenOpenGroup + lfTokenCloseGroup + lfTokenNot + lfTokenAnd + lfTokenOr + lfTokenRegexp + lfTokenLabel + lfTokenSetKey + lfTokenSetOperation + lfTokenSetArgument + lfTokenEOF +) + +func (l lfToken) Precedence() int { + switch l { + case lfTokenRoot, lfTokenOpenGroup: + return 0 + case lfTokenOr: + return 1 + case lfTokenAnd: + return 2 + case lfTokenNot: + return 3 + case lfTokenSetOperation: + return 4 + } + return -1 +} + +func (l lfToken) String() string { + switch l { + case lfTokenRoot: + return "ROOT" + case lfTokenOpenGroup: + return "(" + case lfTokenCloseGroup: + return ")" + case lfTokenNot: + return "!" + case lfTokenAnd: + return "&&" + case lfTokenOr: + return "||" + case lfTokenRegexp: + return "/regexp/" + case lfTokenLabel: + return "label" + case lfTokenSetKey: + return "set_key" + case lfTokenSetOperation: + return "set_operation" + case lfTokenSetArgument: + return "set_argument" + case lfTokenEOF: + return "EOF" + } + return "INVALID" +} + +type treeNode struct { + token lfToken + location int + value string + + parent *treeNode + leftNode *treeNode + rightNode *treeNode +} + +func (tn *treeNode) setRightNode(node *treeNode) { + tn.rightNode = node + node.parent = tn +} + +func (tn *treeNode) setLeftNode(node *treeNode) { + tn.leftNode = node + node.parent = tn +} + +func (tn *treeNode) firstAncestorWithPrecedenceLEQ(precedence int) *treeNode { + if tn.token.Precedence() <= precedence { + return tn + } + return tn.parent.firstAncestorWithPrecedenceLEQ(precedence) +} + +func (tn *treeNode) firstUnmatchedOpenNode() *treeNode { + if tn.token == lfTokenOpenGroup { + return tn + } + if tn.parent == nil { + return nil + } + return tn.parent.firstUnmatchedOpenNode() +} + +func (tn *treeNode) constructLabelFilter(input string) (LabelFilter, error) { + switch tn.token { + case lfTokenOpenGroup: + return nil, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, tn.location, "Mismatched '(' - could not find matching ')'.") + case lfTokenLabel: + return matchLabelAction(tn.value), nil + case lfTokenRegexp: + re, err := regexp.Compile(tn.value) + if err != nil { + return nil, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, tn.location, fmt.Sprintf("RegExp compilation error: %s", err)) + } + return matchLabelRegexAction(re), nil + case lfTokenSetOperation: + tokenSetOperation := strings.ToLower(tn.value) + if tokenSetOperation == "isempty" { + return isEmptyLabelSetAction(tn.leftNode.value), nil + } + if tn.rightNode == nil { + return nil, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, tn.location, fmt.Sprintf("Set operation '%s' is missing an argument.", tn.value)) + } + + rawValues := strings.Split(tn.rightNode.value, ",") + values := make([]string, len(rawValues)) + for i := range rawValues { + values[i] = strings.ToLower(strings.TrimSpace(rawValues[i])) + if strings.ContainsAny(values[i], "&|!,()/") { + return nil, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, tn.rightNode.location, fmt.Sprintf("Invalid label value '%s' in set operation argument.", values[i])) + } else if values[i] == "" { + return nil, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, tn.rightNode.location, "Empty label value in set operation argument.") + } + } + switch tokenSetOperation { + case "containsany": + return containsAnyLabelSetAction(tn.leftNode.value, values), nil + case "containsall": + return containsAllLabelSetAction(tn.leftNode.value, values), nil + case "consistsof": + return consistsOfLabelSetAction(tn.leftNode.value, values), nil + case "issubsetof": + return isSubsetOfLabelSetAction(tn.leftNode.value, values), nil + } + } + + if tn.rightNode == nil { + return nil, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, -1, "Unexpected EOF.") + } + rightLF, err := tn.rightNode.constructLabelFilter(input) + if err != nil { + return nil, err + } + + switch tn.token { + case lfTokenRoot, lfTokenCloseGroup: + return rightLF, nil + case lfTokenNot: + return notAction(rightLF), nil + } + + if tn.leftNode == nil { + return nil, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, tn.location, fmt.Sprintf("Malformed tree - '%s' is missing left operand.", tn.token)) + } + leftLF, err := tn.leftNode.constructLabelFilter(input) + if err != nil { + return nil, err + } + + switch tn.token { + case lfTokenAnd: + return andAction(leftLF, rightLF), nil + case lfTokenOr: + return orAction(leftLF, rightLF), nil + } + + return nil, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, tn.location, fmt.Sprintf("Invalid token '%s'.", tn.token)) +} + +func (tn *treeNode) tokenString() string { + out := fmt.Sprintf("<%s", tn.token) + if tn.value != "" { + out += " | " + tn.value + } + out += ">" + return out +} + +func (tn *treeNode) toString(indent int) string { + out := tn.tokenString() + "\n" + if tn.leftNode != nil { + out += fmt.Sprintf("%s |_(L)_%s", strings.Repeat(" ", indent), tn.leftNode.toString(indent+1)) + } + if tn.rightNode != nil { + out += fmt.Sprintf("%s |_(R)_%s", strings.Repeat(" ", indent), tn.rightNode.toString(indent+1)) + } + return out +} + +var validSetOperations = map[string]string{ + "containsany": "containsAny", + "containsall": "containsAll", + "consistsof": "consistsOf", + "issubsetof": "isSubsetOf", + "isempty": "isEmpty", +} + +func tokenize(input string) func() (*treeNode, error) { + lastToken := lfTokenInvalid + lastValue := "" + runes, i := []rune(input), 0 + + peekIs := func(r rune) bool { + if i+1 < len(runes) { + return runes[i+1] == r + } + return false + } + + consumeUntil := func(cutset string) (string, int) { + j := i + for ; j < len(runes); j++ { + if strings.ContainsRune(cutset, runes[j]) { + break + } + } + return string(runes[i:j]), j - i + } + + return func() (*treeNode, error) { + for i < len(runes) && runes[i] == ' ' { + i += 1 + } + + if i >= len(runes) { + return &treeNode{token: lfTokenEOF}, nil + } + + node := &treeNode{location: i} + defer func() { + lastToken = node.token + lastValue = node.value + }() + + if lastToken == lfTokenSetKey { + //we should get a valid set operation next + value, n := consumeUntil(" )") + if validSetOperations[strings.ToLower(value)] == "" { + return &treeNode{}, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, i, fmt.Sprintf("Invalid set operation '%s'.", value)) + } + i += n + node.token, node.value = lfTokenSetOperation, value + return node, nil + } + if lastToken == lfTokenSetOperation { + //we should get an argument next, if we aren't isempty + var arg = "" + origI := i + if runes[i] == '{' { + i += 1 + value, n := consumeUntil("}") + if i+n >= len(runes) { + return &treeNode{}, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, i-1, "Missing closing '}' in set operation argument?") + } + i += n + 1 + arg = value + } else { + value, n := consumeUntil("&|!,()/") + i += n + arg = strings.TrimSpace(value) + } + if strings.ToLower(lastValue) == "isempty" && arg != "" { + return &treeNode{}, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, origI, fmt.Sprintf("isEmpty does not take arguments, was passed '%s'.", arg)) + } + if arg == "" && strings.ToLower(lastValue) != "isempty" { + if i < len(runes) && runes[i] == '/' { + return &treeNode{}, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, origI, "Set operations do not support regular expressions.") + } else { + return &treeNode{}, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, origI, fmt.Sprintf("Set operation '%s' requires an argument.", lastValue)) + } + } + // note that we sent an empty SetArgument token if we are isempty + node.token, node.value = lfTokenSetArgument, arg + return node, nil + } + + switch runes[i] { + case '&': + if !peekIs('&') { + return &treeNode{}, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, i, "Invalid token '&'. Did you mean '&&'?") + } + i += 2 + node.token = lfTokenAnd + case '|': + if !peekIs('|') { + return &treeNode{}, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, i, "Invalid token '|'. Did you mean '||'?") + } + i += 2 + node.token = lfTokenOr + case '!': + i += 1 + node.token = lfTokenNot + case ',': + i += 1 + node.token = lfTokenOr + case '(': + i += 1 + node.token = lfTokenOpenGroup + case ')': + i += 1 + node.token = lfTokenCloseGroup + case '/': + i += 1 + value, n := consumeUntil("/") + i += n + 1 + node.token, node.value = lfTokenRegexp, value + default: + value, n := consumeUntil("&|!,()/:") + i += n + value = strings.TrimSpace(value) + + //are we the beginning of a set operation? + if i < len(runes) && runes[i] == ':' { + if peekIs(' ') { + if value == "" { + return &treeNode{}, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, i, "Missing set key.") + } + i += 1 + //we are the beginning of a set operation + node.token, node.value = lfTokenSetKey, value + return node, nil + } + additionalValue, n := consumeUntil("&|!,()/") + additionalValue = strings.TrimSpace(additionalValue) + if additionalValue == ":" { + return &treeNode{}, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, i, "Missing set operation.") + } + i += n + value += additionalValue + } + + valueToCheckForSetOperation := strings.ToLower(value) + for setOperation := range validSetOperations { + idx := strings.Index(valueToCheckForSetOperation, " "+setOperation) + if idx > 0 { + return &treeNode{}, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, i-n+idx+1, fmt.Sprintf("Looks like you are using the set operator '%s' but did not provide a set key. Did you forget the ':'?", validSetOperations[setOperation])) + } + } + + node.token, node.value = lfTokenLabel, strings.TrimSpace(value) + } + return node, nil + } +} + +func MustParseLabelFilter(input string) LabelFilter { + filter, err := ParseLabelFilter(input) + if err != nil { + panic(err) + } + return filter +} + +func ParseLabelFilter(input string) (LabelFilter, error) { + if DEBUG_LABEL_FILTER_PARSING { + fmt.Println("\n==============") + fmt.Println("Input: ", input) + fmt.Print("Tokens: ") + } + if input == "" { + return func(_ []string) bool { return true }, nil + } + nextToken := tokenize(input) + + root := &treeNode{token: lfTokenRoot} + current := root +LOOP: + for { + node, err := nextToken() + if err != nil { + return nil, err + } + + if DEBUG_LABEL_FILTER_PARSING { + fmt.Print(node.tokenString() + " ") + } + + switch node.token { + case lfTokenEOF: + break LOOP + case lfTokenLabel, lfTokenRegexp, lfTokenSetKey: + if current.rightNode != nil { + return nil, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, node.location, "Found two adjacent labels. You need an operator between them.") + } + current.setRightNode(node) + case lfTokenNot, lfTokenOpenGroup: + if current.rightNode != nil { + return nil, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, node.location, fmt.Sprintf("Invalid token '%s'.", node.token)) + } + current.setRightNode(node) + current = node + case lfTokenAnd, lfTokenOr: + if current.rightNode == nil { + return nil, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, node.location, fmt.Sprintf("Operator '%s' missing left hand operand.", node.token)) + } + nodeToStealFrom := current.firstAncestorWithPrecedenceLEQ(node.token.Precedence()) + node.setLeftNode(nodeToStealFrom.rightNode) + nodeToStealFrom.setRightNode(node) + current = node + case lfTokenSetOperation: + if current.rightNode == nil { + return nil, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, node.location, fmt.Sprintf("Set operation '%s' missing left hand operand.", node.value)) + } + node.setLeftNode(current.rightNode) + current.setRightNode(node) + current = node + case lfTokenSetArgument: + if current.rightNode != nil { + return nil, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, node.location, fmt.Sprintf("Unexpected set argument '%s'.", node.token)) + } + current.setRightNode(node) + case lfTokenCloseGroup: + firstUnmatchedOpenNode := current.firstUnmatchedOpenNode() + if firstUnmatchedOpenNode == nil { + return nil, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, node.location, "Mismatched ')' - could not find matching '('.") + } + if firstUnmatchedOpenNode == current && current.rightNode == nil { + return nil, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, node.location, "Found empty '()' group.") + } + firstUnmatchedOpenNode.token = lfTokenCloseGroup //signify the group is now closed + current = firstUnmatchedOpenNode.parent + default: + return nil, GinkgoErrors.SyntaxErrorParsingLabelFilter(input, node.location, fmt.Sprintf("Unknown token '%s'.", node.token)) + } + } + if DEBUG_LABEL_FILTER_PARSING { + fmt.Printf("\n Tree:\n%s", root.toString(0)) + } + return root.constructLabelFilter(input) +} + +func ValidateAndCleanupLabel(label string, cl CodeLocation) (string, error) { + out := strings.TrimSpace(label) + if out == "" { + return "", GinkgoErrors.InvalidEmptyLabel(cl) + } + if strings.ContainsAny(out, "&|!,()/") { + return "", GinkgoErrors.InvalidLabel(label, cl) + } + if out[0] == ':' { + return "", GinkgoErrors.InvalidLabel(label, cl) + } + if strings.Contains(out, ":") { + components := strings.SplitN(out, ":", 2) + if len(components) < 2 || components[1] == "" { + return "", GinkgoErrors.InvalidLabel(label, cl) + } + } + return out, nil +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/types/report_entry.go b/tests/vendor/github.com/onsi/ginkgo/v2/types/report_entry.go new file mode 100644 index 000000000..63f7a9f6d --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/types/report_entry.go @@ -0,0 +1,190 @@ +package types + +import ( + "encoding/json" + "fmt" + "time" +) + +// ReportEntryValue wraps a report entry's value ensuring it can be encoded and decoded safely into reports +// and across the network connection when running in parallel +type ReportEntryValue struct { + raw any //unexported to prevent gob from freaking out about unregistered structs + AsJSON string + Representation string +} + +func WrapEntryValue(value any) ReportEntryValue { + return ReportEntryValue{ + raw: value, + } +} + +func (rev ReportEntryValue) GetRawValue() any { + return rev.raw +} + +func (rev ReportEntryValue) String() string { + if rev.raw == nil { + return "" + } + if colorableStringer, ok := rev.raw.(ColorableStringer); ok { + return colorableStringer.ColorableString() + } + + if stringer, ok := rev.raw.(fmt.Stringer); ok { + return stringer.String() + } + if rev.Representation != "" { + return rev.Representation + } + return fmt.Sprintf("%+v", rev.raw) +} + +func (rev ReportEntryValue) MarshalJSON() ([]byte, error) { + //All this to capture the representation at encoding-time, not creating time + //This way users can Report on pointers and get their final values at reporting-time + out := struct { + AsJSON string + Representation string + }{ + Representation: rev.String(), + } + asJSON, err := json.Marshal(rev.raw) + if err != nil { + return nil, err + } + out.AsJSON = string(asJSON) + + return json.Marshal(out) +} + +func (rev *ReportEntryValue) UnmarshalJSON(data []byte) error { + in := struct { + AsJSON string + Representation string + }{} + err := json.Unmarshal(data, &in) + if err != nil { + return err + } + rev.AsJSON = in.AsJSON + rev.Representation = in.Representation + return json.Unmarshal([]byte(in.AsJSON), &(rev.raw)) +} + +func (rev ReportEntryValue) GobEncode() ([]byte, error) { + return rev.MarshalJSON() +} + +func (rev *ReportEntryValue) GobDecode(data []byte) error { + return rev.UnmarshalJSON(data) +} + +// ReportEntry captures information attached to `SpecReport` via `AddReportEntry` +type ReportEntry struct { + // Visibility captures the visibility policy for this ReportEntry + Visibility ReportEntryVisibility + // Location captures the location of the AddReportEntry call + Location CodeLocation + + Time time.Time //need this for backwards compatibility + TimelineLocation TimelineLocation + + // Name captures the name of this report + Name string + // Value captures the (optional) object passed into AddReportEntry - this can be + // anything the user wants. The value passed to AddReportEntry is wrapped in a ReportEntryValue to make + // encoding/decoding the value easier. To access the raw value call entry.GetRawValue() + Value ReportEntryValue +} + +// ColorableStringer is an interface that ReportEntry values can satisfy. If they do then ColorableString() is used to generate their representation. +type ColorableStringer interface { + ColorableString() string +} + +// StringRepresentation() returns the string representation of the value associated with the ReportEntry -- +// if value is nil, empty string is returned +// if value is a `ColorableStringer` then `Value.ColorableString()` is returned +// if value is a `fmt.Stringer` then `Value.String()` is returned +// otherwise the value is formatted with "%+v" +func (entry ReportEntry) StringRepresentation() string { + return entry.Value.String() +} + +// GetRawValue returns the Value object that was passed to AddReportEntry +// If called in-process this will be the same object that was passed into AddReportEntry. +// If used from a rehydrated JSON file _or_ in a ReportAfterSuite when running in parallel this will be +// a JSON-decoded {}interface. If you want to reconstitute your original object you can decode the entry.Value.AsJSON +// field yourself. +func (entry ReportEntry) GetRawValue() any { + return entry.Value.GetRawValue() +} + +func (entry ReportEntry) GetTimelineLocation() TimelineLocation { + return entry.TimelineLocation +} + +type ReportEntries []ReportEntry + +func (re ReportEntries) HasVisibility(visibilities ...ReportEntryVisibility) bool { + for _, entry := range re { + if entry.Visibility.Is(visibilities...) { + return true + } + } + return false +} + +func (re ReportEntries) WithVisibility(visibilities ...ReportEntryVisibility) ReportEntries { + out := ReportEntries{} + + for _, entry := range re { + if entry.Visibility.Is(visibilities...) { + out = append(out, entry) + } + } + + return out +} + +// ReportEntryVisibility governs the visibility of ReportEntries in Ginkgo's console reporter +type ReportEntryVisibility uint + +const ( + // Always print out this ReportEntry + ReportEntryVisibilityAlways ReportEntryVisibility = iota + // Only print out this ReportEntry if the spec fails or if the test is run with -v + ReportEntryVisibilityFailureOrVerbose + // Never print out this ReportEntry (note that ReportEntrys are always encoded in machine readable reports (e.g. JSON, JUnit, etc.)) + ReportEntryVisibilityNever +) + +var revEnumSupport = NewEnumSupport(map[uint]string{ + uint(ReportEntryVisibilityAlways): "always", + uint(ReportEntryVisibilityFailureOrVerbose): "failure-or-verbose", + uint(ReportEntryVisibilityNever): "never", +}) + +func (rev ReportEntryVisibility) String() string { + return revEnumSupport.String(uint(rev)) +} +func (rev *ReportEntryVisibility) UnmarshalJSON(b []byte) error { + out, err := revEnumSupport.UnmarshJSON(b) + *rev = ReportEntryVisibility(out) + return err +} +func (rev ReportEntryVisibility) MarshalJSON() ([]byte, error) { + return revEnumSupport.MarshJSON(uint(rev)) +} + +func (v ReportEntryVisibility) Is(visibilities ...ReportEntryVisibility) bool { + for _, visibility := range visibilities { + if v == visibility { + return true + } + } + + return false +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/types/types.go b/tests/vendor/github.com/onsi/ginkgo/v2/types/types.go new file mode 100644 index 000000000..ddcbec1ba --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/types/types.go @@ -0,0 +1,922 @@ +package types + +import ( + "encoding/json" + "fmt" + "os" + "sort" + "strings" + "time" +) + +const GINKGO_FOCUS_EXIT_CODE = 197 + +var GINKGO_TIME_FORMAT = "01/02/06 15:04:05.999" + +func init() { + if os.Getenv("GINKGO_TIME_FORMAT") != "" { + GINKGO_TIME_FORMAT = os.Getenv("GINKGO_TIME_FORMAT") + } +} + +// Report captures information about a Ginkgo test run +type Report struct { + //SuitePath captures the absolute path to the test suite + SuitePath string + + //SuiteDescription captures the description string passed to the DSL's RunSpecs() function + SuiteDescription string + + //SuiteLabels captures any labels attached to the suite by the DSL's RunSpecs() function + SuiteLabels []string + + //SuiteSucceeded captures the success or failure status of the test run + //If true, the test run is considered successful. + //If false, the test run is considered unsuccessful + SuiteSucceeded bool + + //SuiteHasProgrammaticFocus captures whether the test suite has a test or set of tests that are programmatically focused + //(i.e an `FIt` or an `FDescribe` + SuiteHasProgrammaticFocus bool + + //SpecialSuiteFailureReasons may contain special failure reasons + //For example, a test suite might be considered "failed" even if none of the individual specs + //have a failure state. For example, if the user has configured --fail-on-pending the test suite + //will have failed if there are pending tests even though all non-pending tests may have passed. In such + //cases, Ginkgo populates SpecialSuiteFailureReasons with a clear message indicating the reason for the failure. + //SpecialSuiteFailureReasons is also populated if the test suite is interrupted by the user. + //Since multiple special failure reasons can occur, this field is a slice. + SpecialSuiteFailureReasons []string + + //PreRunStats contains a set of stats captured before the test run begins. This is primarily used + //by Ginkgo's reporter to tell the user how many specs are in the current suite (PreRunStats.TotalSpecs) + //and how many it intends to run (PreRunStats.SpecsThatWillRun) after applying any relevant focus or skip filters. + PreRunStats PreRunStats + + //StartTime and EndTime capture the start and end time of the test run + StartTime time.Time + EndTime time.Time + + //RunTime captures the duration of the test run + RunTime time.Duration + + //SuiteConfig captures the Ginkgo configuration governing this test run + //SuiteConfig includes information necessary for reproducing an identical test run, + //such as the random seed and any filters applied during the test run + SuiteConfig SuiteConfig + + //SpecReports is a list of all SpecReports generated by this test run + //It is empty when the SuiteReport is provided to ReportBeforeSuite + SpecReports SpecReports +} + +// PreRunStats contains a set of stats captured before the test run begins. This is primarily used +// by Ginkgo's reporter to tell the user how many specs are in the current suite (PreRunStats.TotalSpecs) +// and how many it intends to run (PreRunStats.SpecsThatWillRun) after applying any relevant focus or skip filters. +type PreRunStats struct { + TotalSpecs int + SpecsThatWillRun int +} + +// Add is used by Ginkgo's parallel aggregation mechanisms to combine test run reports form individual parallel processes +// to form a complete final report. +func (report Report) Add(other Report) Report { + report.SuiteSucceeded = report.SuiteSucceeded && other.SuiteSucceeded + + if other.StartTime.Before(report.StartTime) { + report.StartTime = other.StartTime + } + + if other.EndTime.After(report.EndTime) { + report.EndTime = other.EndTime + } + + specialSuiteFailureReasons := []string{} + reasonsLookup := map[string]bool{} + for _, reasons := range [][]string{report.SpecialSuiteFailureReasons, other.SpecialSuiteFailureReasons} { + for _, reason := range reasons { + if !reasonsLookup[reason] { + reasonsLookup[reason] = true + specialSuiteFailureReasons = append(specialSuiteFailureReasons, reason) + } + } + } + report.SpecialSuiteFailureReasons = specialSuiteFailureReasons + report.RunTime = report.EndTime.Sub(report.StartTime) + + reports := make(SpecReports, len(report.SpecReports)+len(other.SpecReports)) + copy(reports, report.SpecReports) + offset := len(report.SpecReports) + for i := range other.SpecReports { + reports[i+offset] = other.SpecReports[i] + } + + report.SpecReports = reports + return report +} + +// SpecReport captures information about a Ginkgo spec. +type SpecReport struct { + // ContainerHierarchyTexts is a slice containing the text strings of + // all Describe/Context/When containers in this spec's hierarchy. + ContainerHierarchyTexts []string + + // ContainerHierarchyLocations is a slice containing the CodeLocations of + // all Describe/Context/When containers in this spec's hierarchy. + ContainerHierarchyLocations []CodeLocation + + // ContainerHierarchyLabels is a slice containing the labels of + // all Describe/Context/When containers in this spec's hierarchy + ContainerHierarchyLabels [][]string + + // LeafNodeType, LeadNodeLocation, LeafNodeLabels and LeafNodeText capture the NodeType, CodeLocation, and text + // of the Ginkgo node being tested (typically an NodeTypeIt node, though this can also be + // one of the NodeTypesForSuiteLevelNodes node types) + LeafNodeType NodeType + LeafNodeLocation CodeLocation + LeafNodeLabels []string + LeafNodeText string + + // State captures whether the spec has passed, failed, etc. + State SpecState + + // IsSerial captures whether the spec has the Serial decorator + IsSerial bool + + // IsInOrderedContainer captures whether the spec appears in an Ordered container + IsInOrderedContainer bool + + // StartTime and EndTime capture the start and end time of the spec + StartTime time.Time + EndTime time.Time + + // RunTime captures the duration of the spec + RunTime time.Duration + + // ParallelProcess captures the parallel process that this spec ran on + ParallelProcess int + + // RunningInParallel captures whether this spec is part of a suite that ran in parallel + RunningInParallel bool + + //Failure is populated if a spec has failed, panicked, been interrupted, or skipped by the user (e.g. calling Skip()) + //It includes detailed information about the Failure + Failure Failure + + // NumAttempts captures the number of times this Spec was run. + // Flakey specs can be retried with ginkgo --flake-attempts=N or the use of the FlakeAttempts decorator. + // Repeated specs can be retried with the use of the MustPassRepeatedly decorator + NumAttempts int + + // MaxFlakeAttempts captures whether the spec has been retried with ginkgo --flake-attempts=N or the use of the FlakeAttempts decorator. + MaxFlakeAttempts int + + // MaxMustPassRepeatedly captures whether the spec has the MustPassRepeatedly decorator + MaxMustPassRepeatedly int + + // CapturedGinkgoWriterOutput contains text printed to the GinkgoWriter + CapturedGinkgoWriterOutput string + + // CapturedStdOutErr contains text printed to stdout/stderr (when running in parallel) + // This is always empty when running in series or calling CurrentSpecReport() + // It is used internally by Ginkgo's reporter + CapturedStdOutErr string + + // ReportEntries contains any reports added via `AddReportEntry` + ReportEntries ReportEntries + + // ProgressReports contains any progress reports generated during this spec. These can either be manually triggered, or automatically generated by Ginkgo via the PollProgressAfter() decorator + ProgressReports []ProgressReport + + // AdditionalFailures contains any failures that occurred after the initial spec failure. These typically occur in cleanup nodes after the initial failure and are only emitted when running in verbose mode. + AdditionalFailures []AdditionalFailure + + // SpecEvents capture additional events that occur during the spec run + SpecEvents SpecEvents +} + +func (report SpecReport) MarshalJSON() ([]byte, error) { + //All this to avoid emitting an empty Failure struct in the JSON + out := struct { + ContainerHierarchyTexts []string + ContainerHierarchyLocations []CodeLocation + ContainerHierarchyLabels [][]string + LeafNodeType NodeType + LeafNodeLocation CodeLocation + LeafNodeLabels []string + LeafNodeText string + State SpecState + StartTime time.Time + EndTime time.Time + RunTime time.Duration + ParallelProcess int + Failure *Failure `json:",omitempty"` + NumAttempts int + MaxFlakeAttempts int + MaxMustPassRepeatedly int + CapturedGinkgoWriterOutput string `json:",omitempty"` + CapturedStdOutErr string `json:",omitempty"` + ReportEntries ReportEntries `json:",omitempty"` + ProgressReports []ProgressReport `json:",omitempty"` + AdditionalFailures []AdditionalFailure `json:",omitempty"` + SpecEvents SpecEvents `json:",omitempty"` + }{ + ContainerHierarchyTexts: report.ContainerHierarchyTexts, + ContainerHierarchyLocations: report.ContainerHierarchyLocations, + ContainerHierarchyLabels: report.ContainerHierarchyLabels, + LeafNodeType: report.LeafNodeType, + LeafNodeLocation: report.LeafNodeLocation, + LeafNodeLabels: report.LeafNodeLabels, + LeafNodeText: report.LeafNodeText, + State: report.State, + StartTime: report.StartTime, + EndTime: report.EndTime, + RunTime: report.RunTime, + ParallelProcess: report.ParallelProcess, + Failure: nil, + ReportEntries: nil, + NumAttempts: report.NumAttempts, + MaxFlakeAttempts: report.MaxFlakeAttempts, + MaxMustPassRepeatedly: report.MaxMustPassRepeatedly, + CapturedGinkgoWriterOutput: report.CapturedGinkgoWriterOutput, + CapturedStdOutErr: report.CapturedStdOutErr, + } + + if !report.Failure.IsZero() { + out.Failure = &(report.Failure) + } + if len(report.ReportEntries) > 0 { + out.ReportEntries = report.ReportEntries + } + if len(report.ProgressReports) > 0 { + out.ProgressReports = report.ProgressReports + } + if len(report.AdditionalFailures) > 0 { + out.AdditionalFailures = report.AdditionalFailures + } + if len(report.SpecEvents) > 0 { + out.SpecEvents = report.SpecEvents + } + + return json.Marshal(out) +} + +// CombinedOutput returns a single string representation of both CapturedStdOutErr and CapturedGinkgoWriterOutput +// Note that both are empty when using CurrentSpecReport() so CurrentSpecReport().CombinedOutput() will always be empty. +// CombinedOutput() is used internally by Ginkgo's reporter. +func (report SpecReport) CombinedOutput() string { + if report.CapturedStdOutErr == "" { + return report.CapturedGinkgoWriterOutput + } + if report.CapturedGinkgoWriterOutput == "" { + return report.CapturedStdOutErr + } + return report.CapturedStdOutErr + "\n" + report.CapturedGinkgoWriterOutput +} + +// Failed returns true if report.State is one of the SpecStateFailureStates +// (SpecStateFailed, SpecStatePanicked, SpecStateinterrupted, SpecStateAborted) +func (report SpecReport) Failed() bool { + return report.State.Is(SpecStateFailureStates) +} + +// FullText returns a concatenation of all the report.ContainerHierarchyTexts and report.LeafNodeText +func (report SpecReport) FullText() string { + texts := []string{} + texts = append(texts, report.ContainerHierarchyTexts...) + if report.LeafNodeText != "" { + texts = append(texts, report.LeafNodeText) + } + return strings.Join(texts, " ") +} + +// Labels returns a deduped set of all the spec's Labels. +func (report SpecReport) Labels() []string { + out := []string{} + seen := map[string]bool{} + for _, labels := range report.ContainerHierarchyLabels { + for _, label := range labels { + if !seen[label] { + seen[label] = true + out = append(out, label) + } + } + } + for _, label := range report.LeafNodeLabels { + if !seen[label] { + seen[label] = true + out = append(out, label) + } + } + + return out +} + +// MatchesLabelFilter returns true if the spec satisfies the passed in label filter query +func (report SpecReport) MatchesLabelFilter(query string) (bool, error) { + filter, err := ParseLabelFilter(query) + if err != nil { + return false, err + } + return filter(report.Labels()), nil +} + +// FileName() returns the name of the file containing the spec +func (report SpecReport) FileName() string { + return report.LeafNodeLocation.FileName +} + +// LineNumber() returns the line number of the leaf node +func (report SpecReport) LineNumber() int { + return report.LeafNodeLocation.LineNumber +} + +// FailureMessage() returns the failure message (or empty string if the test hasn't failed) +func (report SpecReport) FailureMessage() string { + return report.Failure.Message +} + +// FailureLocation() returns the location of the failure (or an empty CodeLocation if the test hasn't failed) +func (report SpecReport) FailureLocation() CodeLocation { + return report.Failure.Location +} + +// Timeline() returns a timeline view of the report +func (report SpecReport) Timeline() Timeline { + timeline := Timeline{} + if !report.Failure.IsZero() { + timeline = append(timeline, report.Failure) + if report.Failure.AdditionalFailure != nil { + timeline = append(timeline, *(report.Failure.AdditionalFailure)) + } + } + for _, additionalFailure := range report.AdditionalFailures { + timeline = append(timeline, additionalFailure) + } + for _, reportEntry := range report.ReportEntries { + timeline = append(timeline, reportEntry) + } + for _, progressReport := range report.ProgressReports { + timeline = append(timeline, progressReport) + } + for _, specEvent := range report.SpecEvents { + timeline = append(timeline, specEvent) + } + sort.Sort(timeline) + return timeline +} + +type SpecReports []SpecReport + +// WithLeafNodeType returns the subset of SpecReports with LeafNodeType matching one of the requested NodeTypes +func (reports SpecReports) WithLeafNodeType(nodeTypes NodeType) SpecReports { + count := 0 + for i := range reports { + if reports[i].LeafNodeType.Is(nodeTypes) { + count++ + } + } + + out := make(SpecReports, count) + j := 0 + for i := range reports { + if reports[i].LeafNodeType.Is(nodeTypes) { + out[j] = reports[i] + j++ + } + } + return out +} + +// WithState returns the subset of SpecReports with State matching one of the requested SpecStates +func (reports SpecReports) WithState(states SpecState) SpecReports { + count := 0 + for i := range reports { + if reports[i].State.Is(states) { + count++ + } + } + + out, j := make(SpecReports, count), 0 + for i := range reports { + if reports[i].State.Is(states) { + out[j] = reports[i] + j++ + } + } + return out +} + +// CountWithState returns the number of SpecReports with State matching one of the requested SpecStates +func (reports SpecReports) CountWithState(states SpecState) int { + n := 0 + for i := range reports { + if reports[i].State.Is(states) { + n += 1 + } + } + return n +} + +// If the Spec passes, CountOfFlakedSpecs returns the number of SpecReports that failed after multiple attempts. +func (reports SpecReports) CountOfFlakedSpecs() int { + n := 0 + for i := range reports { + if reports[i].MaxFlakeAttempts > 1 && reports[i].State.Is(SpecStatePassed) && reports[i].NumAttempts > 1 { + n += 1 + } + } + return n +} + +// If the Spec fails, CountOfRepeatedSpecs returns the number of SpecReports that passed after multiple attempts +func (reports SpecReports) CountOfRepeatedSpecs() int { + n := 0 + for i := range reports { + if reports[i].MaxMustPassRepeatedly > 1 && reports[i].State.Is(SpecStateFailureStates) && reports[i].NumAttempts > 1 { + n += 1 + } + } + return n +} + +// TimelineLocation captures the location of an event in the spec's timeline +type TimelineLocation struct { + //Offset is the offset (in bytes) of the event relative to the GinkgoWriter stream + Offset int `json:",omitempty"` + + //Order is the order of the event with respect to other events. The absolute value of Order + //is irrelevant. All that matters is that an event with a lower Order occurs before ane vent with a higher Order + Order int `json:",omitempty"` + + Time time.Time +} + +// TimelineEvent represent an event on the timeline +// consumers of Timeline will need to check the concrete type of each entry to determine how to handle it +type TimelineEvent interface { + GetTimelineLocation() TimelineLocation +} + +type Timeline []TimelineEvent + +func (t Timeline) Len() int { return len(t) } +func (t Timeline) Less(i, j int) bool { + return t[i].GetTimelineLocation().Order < t[j].GetTimelineLocation().Order +} +func (t Timeline) Swap(i, j int) { t[i], t[j] = t[j], t[i] } +func (t Timeline) WithoutHiddenReportEntries() Timeline { + out := Timeline{} + for _, event := range t { + if reportEntry, isReportEntry := event.(ReportEntry); isReportEntry && reportEntry.Visibility == ReportEntryVisibilityNever { + continue + } + out = append(out, event) + } + return out +} + +func (t Timeline) WithoutVeryVerboseSpecEvents() Timeline { + out := Timeline{} + for _, event := range t { + if specEvent, isSpecEvent := event.(SpecEvent); isSpecEvent && specEvent.IsOnlyVisibleAtVeryVerbose() { + continue + } + out = append(out, event) + } + return out +} + +// Failure captures failure information for an individual test +type Failure struct { + // Message - the failure message passed into Fail(...). When using a matcher library + // like Gomega, this will contain the failure message generated by Gomega. + // + // Message is also populated if the user has called Skip(...). + Message string + + // Location - the CodeLocation where the failure occurred + // This CodeLocation will include a fully-populated StackTrace + Location CodeLocation + + TimelineLocation TimelineLocation + + // ForwardedPanic - if the failure represents a captured panic (i.e. Summary.State == SpecStatePanicked) + // then ForwardedPanic will be populated with a string representation of the captured panic. + ForwardedPanic string `json:",omitempty"` + + // FailureNodeContext - one of three contexts describing the node in which the failure occurred: + // FailureNodeIsLeafNode means the failure occurred in the leaf node of the associated SpecReport. None of the other FailureNode fields will be populated + // FailureNodeAtTopLevel means the failure occurred in a non-leaf node that is defined at the top-level of the spec (i.e. not in a container). FailureNodeType and FailureNodeLocation will be populated. + // FailureNodeInContainer means the failure occurred in a non-leaf node that is defined within a container. FailureNodeType, FailureNodeLocation, and FailureNodeContainerIndex will be populated. + // + // FailureNodeType will contain the NodeType of the node in which the failure occurred. + // FailureNodeLocation will contain the CodeLocation of the node in which the failure occurred. + // If populated, FailureNodeContainerIndex will be the index into SpecReport.ContainerHierarchyTexts and SpecReport.ContainerHierarchyLocations that represents the parent container of the node in which the failure occurred. + FailureNodeContext FailureNodeContext `json:",omitempty"` + + FailureNodeType NodeType `json:",omitempty"` + + FailureNodeLocation CodeLocation `json:",omitempty"` + + FailureNodeContainerIndex int `json:",omitempty"` + + //ProgressReport is populated if the spec was interrupted or timed out + ProgressReport ProgressReport `json:",omitempty"` + + //AdditionalFailure is non-nil if a follow-on failure occurred within the same node after the primary failure. This only happens when a node has timed out or been interrupted. In such cases the AdditionalFailure can include information about where/why the spec was stuck. + AdditionalFailure *AdditionalFailure `json:",omitempty"` +} + +func (f Failure) IsZero() bool { + return f.Message == "" && (f.Location == CodeLocation{}) +} + +func (f Failure) GetTimelineLocation() TimelineLocation { + return f.TimelineLocation +} + +// FailureNodeContext captures the location context for the node containing the failing line of code +type FailureNodeContext uint + +const ( + FailureNodeContextInvalid FailureNodeContext = iota + + FailureNodeIsLeafNode + FailureNodeAtTopLevel + FailureNodeInContainer +) + +var fncEnumSupport = NewEnumSupport(map[uint]string{ + uint(FailureNodeContextInvalid): "INVALID FAILURE NODE CONTEXT", + uint(FailureNodeIsLeafNode): "leaf-node", + uint(FailureNodeAtTopLevel): "top-level", + uint(FailureNodeInContainer): "in-container", +}) + +func (fnc FailureNodeContext) String() string { + return fncEnumSupport.String(uint(fnc)) +} +func (fnc *FailureNodeContext) UnmarshalJSON(b []byte) error { + out, err := fncEnumSupport.UnmarshJSON(b) + *fnc = FailureNodeContext(out) + return err +} +func (fnc FailureNodeContext) MarshalJSON() ([]byte, error) { + return fncEnumSupport.MarshJSON(uint(fnc)) +} + +// AdditionalFailure capturs any additional failures that occur after the initial failure of a psec +// these typically occur in clean up nodes after the spec has failed. +// We can't simply use Failure as we want to track the SpecState to know what kind of failure this is +type AdditionalFailure struct { + State SpecState + Failure Failure +} + +func (f AdditionalFailure) GetTimelineLocation() TimelineLocation { + return f.Failure.TimelineLocation +} + +// SpecState captures the state of a spec +// To determine if a given `state` represents a failure state, use `state.Is(SpecStateFailureStates)` +type SpecState uint + +const ( + SpecStateInvalid SpecState = 0 + + SpecStatePending SpecState = 1 << iota + SpecStateSkipped + SpecStatePassed + SpecStateFailed + SpecStateAborted + SpecStatePanicked + SpecStateInterrupted + SpecStateTimedout +) + +var ssEnumSupport = NewEnumSupport(map[uint]string{ + uint(SpecStateInvalid): "INVALID SPEC STATE", + uint(SpecStatePending): "pending", + uint(SpecStateSkipped): "skipped", + uint(SpecStatePassed): "passed", + uint(SpecStateFailed): "failed", + uint(SpecStateAborted): "aborted", + uint(SpecStatePanicked): "panicked", + uint(SpecStateInterrupted): "interrupted", + uint(SpecStateTimedout): "timedout", +}) + +func (ss SpecState) String() string { + return ssEnumSupport.String(uint(ss)) +} +func (ss SpecState) GomegaString() string { + return ssEnumSupport.String(uint(ss)) +} +func (ss *SpecState) UnmarshalJSON(b []byte) error { + out, err := ssEnumSupport.UnmarshJSON(b) + *ss = SpecState(out) + return err +} +func (ss SpecState) MarshalJSON() ([]byte, error) { + return ssEnumSupport.MarshJSON(uint(ss)) +} + +var SpecStateFailureStates = SpecStateFailed | SpecStateTimedout | SpecStateAborted | SpecStatePanicked | SpecStateInterrupted + +func (ss SpecState) Is(states SpecState) bool { + return ss&states != 0 +} + +// ProgressReport captures the progress of the current spec. It is, effectively, a structured Ginkgo-aware stack trace +type ProgressReport struct { + Message string `json:",omitempty"` + ParallelProcess int `json:",omitempty"` + RunningInParallel bool `json:",omitempty"` + + ContainerHierarchyTexts []string `json:",omitempty"` + LeafNodeText string `json:",omitempty"` + LeafNodeLocation CodeLocation `json:",omitempty"` + SpecStartTime time.Time `json:",omitempty"` + + CurrentNodeType NodeType `json:",omitempty"` + CurrentNodeText string `json:",omitempty"` + CurrentNodeLocation CodeLocation `json:",omitempty"` + CurrentNodeStartTime time.Time `json:",omitempty"` + + CurrentStepText string `json:",omitempty"` + CurrentStepLocation CodeLocation `json:",omitempty"` + CurrentStepStartTime time.Time `json:",omitempty"` + + AdditionalReports []string `json:",omitempty"` + + CapturedGinkgoWriterOutput string `json:",omitempty"` + TimelineLocation TimelineLocation `json:",omitempty"` + + Goroutines []Goroutine `json:",omitempty"` +} + +func (pr ProgressReport) IsZero() bool { + return pr.CurrentNodeType == NodeTypeInvalid +} + +func (pr ProgressReport) Time() time.Time { + return pr.TimelineLocation.Time +} + +func (pr ProgressReport) SpecGoroutine() Goroutine { + for _, goroutine := range pr.Goroutines { + if goroutine.IsSpecGoroutine { + return goroutine + } + } + return Goroutine{} +} + +func (pr ProgressReport) HighlightedGoroutines() []Goroutine { + out := []Goroutine{} + for _, goroutine := range pr.Goroutines { + if goroutine.IsSpecGoroutine || !goroutine.HasHighlights() { + continue + } + out = append(out, goroutine) + } + return out +} + +func (pr ProgressReport) OtherGoroutines() []Goroutine { + out := []Goroutine{} + for _, goroutine := range pr.Goroutines { + if goroutine.IsSpecGoroutine || goroutine.HasHighlights() { + continue + } + out = append(out, goroutine) + } + return out +} + +func (pr ProgressReport) WithoutCapturedGinkgoWriterOutput() ProgressReport { + out := pr + out.CapturedGinkgoWriterOutput = "" + return out +} + +func (pr ProgressReport) WithoutOtherGoroutines() ProgressReport { + out := pr + filteredGoroutines := []Goroutine{} + for _, goroutine := range pr.Goroutines { + if goroutine.IsSpecGoroutine || goroutine.HasHighlights() { + filteredGoroutines = append(filteredGoroutines, goroutine) + } + } + out.Goroutines = filteredGoroutines + return out +} + +func (pr ProgressReport) GetTimelineLocation() TimelineLocation { + return pr.TimelineLocation +} + +type Goroutine struct { + ID uint64 + State string + Stack []FunctionCall + IsSpecGoroutine bool +} + +func (g Goroutine) IsZero() bool { + return g.ID == 0 +} + +func (g Goroutine) HasHighlights() bool { + for _, fc := range g.Stack { + if fc.Highlight { + return true + } + } + + return false +} + +type FunctionCall struct { + Function string + Filename string + Line int + Highlight bool `json:",omitempty"` + Source []string `json:",omitempty"` + SourceHighlight int `json:",omitempty"` +} + +// NodeType captures the type of a given Ginkgo Node +type NodeType uint + +const ( + NodeTypeInvalid NodeType = 0 + + NodeTypeContainer NodeType = 1 << iota + NodeTypeIt + + NodeTypeBeforeEach + NodeTypeJustBeforeEach + NodeTypeAfterEach + NodeTypeJustAfterEach + + NodeTypeBeforeAll + NodeTypeAfterAll + + NodeTypeBeforeSuite + NodeTypeSynchronizedBeforeSuite + NodeTypeAfterSuite + NodeTypeSynchronizedAfterSuite + + NodeTypeReportBeforeEach + NodeTypeReportAfterEach + NodeTypeReportBeforeSuite + NodeTypeReportAfterSuite + + NodeTypeCleanupInvalid + NodeTypeCleanupAfterEach + NodeTypeCleanupAfterAll + NodeTypeCleanupAfterSuite +) + +var NodeTypesForContainerAndIt = NodeTypeContainer | NodeTypeIt +var NodeTypesForSuiteLevelNodes = NodeTypeBeforeSuite | NodeTypeSynchronizedBeforeSuite | NodeTypeAfterSuite | NodeTypeSynchronizedAfterSuite | NodeTypeReportBeforeSuite | NodeTypeReportAfterSuite | NodeTypeCleanupAfterSuite +var NodeTypesAllowedDuringCleanupInterrupt = NodeTypeAfterEach | NodeTypeJustAfterEach | NodeTypeAfterAll | NodeTypeAfterSuite | NodeTypeSynchronizedAfterSuite | NodeTypeCleanupAfterEach | NodeTypeCleanupAfterAll | NodeTypeCleanupAfterSuite +var NodeTypesAllowedDuringReportInterrupt = NodeTypeReportBeforeEach | NodeTypeReportAfterEach | NodeTypeReportBeforeSuite | NodeTypeReportAfterSuite + +var ntEnumSupport = NewEnumSupport(map[uint]string{ + uint(NodeTypeInvalid): "INVALID NODE TYPE", + uint(NodeTypeContainer): "Container", + uint(NodeTypeIt): "It", + uint(NodeTypeBeforeEach): "BeforeEach", + uint(NodeTypeJustBeforeEach): "JustBeforeEach", + uint(NodeTypeAfterEach): "AfterEach", + uint(NodeTypeJustAfterEach): "JustAfterEach", + uint(NodeTypeBeforeAll): "BeforeAll", + uint(NodeTypeAfterAll): "AfterAll", + uint(NodeTypeBeforeSuite): "BeforeSuite", + uint(NodeTypeSynchronizedBeforeSuite): "SynchronizedBeforeSuite", + uint(NodeTypeAfterSuite): "AfterSuite", + uint(NodeTypeSynchronizedAfterSuite): "SynchronizedAfterSuite", + uint(NodeTypeReportBeforeEach): "ReportBeforeEach", + uint(NodeTypeReportAfterEach): "ReportAfterEach", + uint(NodeTypeReportBeforeSuite): "ReportBeforeSuite", + uint(NodeTypeReportAfterSuite): "ReportAfterSuite", + uint(NodeTypeCleanupInvalid): "DeferCleanup", + uint(NodeTypeCleanupAfterEach): "DeferCleanup (Each)", + uint(NodeTypeCleanupAfterAll): "DeferCleanup (All)", + uint(NodeTypeCleanupAfterSuite): "DeferCleanup (Suite)", +}) + +func (nt NodeType) String() string { + return ntEnumSupport.String(uint(nt)) +} +func (nt *NodeType) UnmarshalJSON(b []byte) error { + out, err := ntEnumSupport.UnmarshJSON(b) + *nt = NodeType(out) + return err +} +func (nt NodeType) MarshalJSON() ([]byte, error) { + return ntEnumSupport.MarshJSON(uint(nt)) +} + +func (nt NodeType) Is(nodeTypes NodeType) bool { + return nt&nodeTypes != 0 +} + +/* +SpecEvent captures a vareity of events that can occur when specs run. See SpecEventType for the list of available events. +*/ +type SpecEvent struct { + SpecEventType SpecEventType + + CodeLocation CodeLocation + TimelineLocation TimelineLocation + + Message string `json:",omitempty"` + Duration time.Duration `json:",omitempty"` + NodeType NodeType `json:",omitempty"` + Attempt int `json:",omitempty"` +} + +func (se SpecEvent) GetTimelineLocation() TimelineLocation { + return se.TimelineLocation +} + +func (se SpecEvent) IsOnlyVisibleAtVeryVerbose() bool { + return se.SpecEventType.Is(SpecEventByEnd | SpecEventNodeStart | SpecEventNodeEnd) +} + +func (se SpecEvent) GomegaString() string { + out := &strings.Builder{} + out.WriteString("[" + se.SpecEventType.String() + " SpecEvent] ") + if se.Message != "" { + out.WriteString("Message=") + out.WriteString(`"` + se.Message + `",`) + } + if se.Duration != 0 { + out.WriteString("Duration=" + se.Duration.String() + ",") + } + if se.NodeType != NodeTypeInvalid { + out.WriteString("NodeType=" + se.NodeType.String() + ",") + } + if se.Attempt != 0 { + out.WriteString(fmt.Sprintf("Attempt=%d", se.Attempt) + ",") + } + out.WriteString("CL=" + se.CodeLocation.String() + ",") + out.WriteString(fmt.Sprintf("TL.Offset=%d", se.TimelineLocation.Offset)) + + return out.String() +} + +type SpecEvents []SpecEvent + +func (se SpecEvents) WithType(seType SpecEventType) SpecEvents { + out := SpecEvents{} + for _, event := range se { + if event.SpecEventType.Is(seType) { + out = append(out, event) + } + } + return out +} + +type SpecEventType uint + +const ( + SpecEventInvalid SpecEventType = 0 + + SpecEventByStart SpecEventType = 1 << iota + SpecEventByEnd + SpecEventNodeStart + SpecEventNodeEnd + SpecEventSpecRepeat + SpecEventSpecRetry +) + +var seEnumSupport = NewEnumSupport(map[uint]string{ + uint(SpecEventInvalid): "INVALID SPEC EVENT", + uint(SpecEventByStart): "By", + uint(SpecEventByEnd): "By (End)", + uint(SpecEventNodeStart): "Node", + uint(SpecEventNodeEnd): "Node (End)", + uint(SpecEventSpecRepeat): "Repeat", + uint(SpecEventSpecRetry): "Retry", +}) + +func (se SpecEventType) String() string { + return seEnumSupport.String(uint(se)) +} +func (se *SpecEventType) UnmarshalJSON(b []byte) error { + out, err := seEnumSupport.UnmarshJSON(b) + *se = SpecEventType(out) + return err +} +func (se SpecEventType) MarshalJSON() ([]byte, error) { + return seEnumSupport.MarshJSON(uint(se)) +} + +func (se SpecEventType) Is(specEventTypes SpecEventType) bool { + return se&specEventTypes != 0 +} diff --git a/tests/vendor/github.com/onsi/ginkgo/v2/types/version.go b/tests/vendor/github.com/onsi/ginkgo/v2/types/version.go new file mode 100644 index 000000000..158ac2fd8 --- /dev/null +++ b/tests/vendor/github.com/onsi/ginkgo/v2/types/version.go @@ -0,0 +1,3 @@ +package types + +const VERSION = "2.23.4" diff --git a/tests/vendor/github.com/onsi/gomega/.gitignore b/tests/vendor/github.com/onsi/gomega/.gitignore new file mode 100644 index 000000000..425d0a509 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/.gitignore @@ -0,0 +1,7 @@ +.DS_Store +*.test +. +.idea +gomega.iml +TODO +.vscode \ No newline at end of file diff --git a/tests/vendor/github.com/onsi/gomega/CHANGELOG.md b/tests/vendor/github.com/onsi/gomega/CHANGELOG.md new file mode 100644 index 000000000..890d89222 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/CHANGELOG.md @@ -0,0 +1,815 @@ +## 1.37.0 + +### Features +- add To/ToNot/NotTo aliases for AsyncAssertion [5666f98] + +## 1.36.3 + +### Maintenance + +- bump all the things [adb8b49] +- chore: replace `interface{}` with `any` [7613216] +- Bump google.golang.org/protobuf from 1.36.1 to 1.36.5 (#822) [9fe5259] +- remove spurious "toolchain" from go.mod (#819) [a0e85b9] +- Bump golang.org/x/net from 0.33.0 to 0.35.0 (#823) [604a8b1] +- Bump activesupport from 6.0.6.1 to 6.1.7.5 in /docs (#772) [36fbc84] +- Bump github-pages from 231 to 232 in /docs (#778) [ced70d7] +- Bump rexml from 3.2.6 to 3.3.9 in /docs (#788) [c8b4a07] +- Bump github.com/onsi/ginkgo/v2 from 2.22.1 to 2.22.2 (#812) [06431b9] +- Bump webrick from 1.8.1 to 1.9.1 in /docs (#800) [b55a92d] +- Fix typos (#813) [a1d518b] + +## 1.36.2 + +### Maintenance +- Bump google.golang.org/protobuf from 1.35.1 to 1.36.1 (#810) [9a7609d] +- Bump golang.org/x/net from 0.30.0 to 0.33.0 (#807) [b6cb028] +- Bump github.com/onsi/ginkgo/v2 from 2.20.1 to 2.22.1 (#808) [5756529] +- Bump nokogiri from 1.16.3 to 1.16.5 in /docs (#757) [dabc12e] + +## 1.36.1 + +### Fixes +- Fix https://github.com/onsi/gomega/issues/803 [1c6c112] +- resolves onsi/gomega#696: make HaveField great on pointer receivers given only a non-addressable value [4feb9d7] + +## 1.36.0 + +### Features +- new: make collection-related matchers Go 1.23 iterator aware [4c964c6] + +### Maintenance +- Replace min/max helpers with built-in min/max [ece6872] +- Fix some typos in docs [8e924d7] + +## 1.35.1 + +### Fixes +- Export EnforceDefaultTimeoutsWhenUsingContexts and DisableDefaultTimeoutsWhenUsingContext [ca36da1] + +## 1.35.0 + +### Features + +- You can now call `EnforceDefaultTimeoutsWhenUsingContexts()` to have `Eventually` honor the default timeout when passed a context. (prior to this you had to expclility add a timeout) [e4c4265] +- You can call `StopTrying(message).Successfully()` to abort a `Consistently` early without failure [eeca931] + +### Fixes + +- Stop memoizing the result of `HaveField` to avoid unexpected errors when used with async assertions. [3bdbc4e] + +### Maintenance + +- Bump all dependencies [a05a416] + +## 1.34.2 + +Require Go 1.22+ + +### Maintenance +- bump ginkgo as well [c59c6dc] +- bump to go 1.22 - remove x/exp dependency [8158b99] + +## 1.34.1 + +### Maintenance +- Use slices from exp/slices to keep golang 1.20 compat [5e71dcd] + +## 1.34.0 + +### Features +- Add RoundTripper method to ghttp.Server [c549e0d] + +### Fixes +- fix incorrect handling of nil slices in HaveExactElements (fixes #771) [878940c] +- issue_765 - fixed bug in Hopcroft-Karp algorithm [ebadb67] + +### Maintenance +- bump ginkgo [8af2ece] +- Fix typo in docs [123a071] +- Bump github.com/onsi/ginkgo/v2 from 2.17.2 to 2.17.3 (#756) [0e69083] +- Bump google.golang.org/protobuf from 1.33.0 to 1.34.1 (#755) [2675796] +- Bump golang.org/x/net from 0.24.0 to 0.25.0 (#754) [4160c0f] +- Bump github-pages from 230 to 231 in /docs (#748) [892c303] + +## 1.33.1 + +### Fixes +- fix confusing eventually docs [3a66379] + +### Maintenance +- Bump github.com/onsi/ginkgo/v2 from 2.17.1 to 2.17.2 [e9bc35a] + +## 1.33.0 + +### Features + +`Receive` not accepts `Receive(, MATCHER>)`, allowing you to pick out a specific value on the channel that satisfies the provided matcher and is stored in the provided pointer. + +### Maintenance +- Bump github.com/onsi/ginkgo/v2 from 2.15.0 to 2.17.1 (#745) [9999deb] +- Bump github-pages from 229 to 230 in /docs (#735) [cb5ff21] +- Bump golang.org/x/net from 0.20.0 to 0.23.0 (#746) [bac6596] + +## 1.32.0 + +### Maintenance +- Migrate github.com/golang/protobuf to google.golang.org/protobuf [436a197] + + This release drops the deprecated github.com/golang/protobuf and adopts google.golang.org/protobuf. Care was taken to ensure the release is backwards compatible (thanks @jbduncan !). Please open an issue if you run into one. + +- chore: test with Go 1.22 (#733) [32ef35e] +- Bump golang.org/x/net from 0.19.0 to 0.20.0 (#717) [a0d0387] +- Bump github-pages and jekyll-feed in /docs (#732) [b71e477] +- docs: fix typo and broken anchor link to gstruct [f460154] +- docs: fix HaveEach matcher signature [a2862e4] + +## 1.31.1 + +### Fixes +- Inverted arguments order of FailureMessage of BeComparableToMatcher [e0dd999] +- Update test in case keeping msg is desired [ad1a367] + +### Maintenance +- Show how to import the format sub package [24e958d] +- tidy up go.sum [26661b8] +- bump dependencies [bde8f7a] + +## 1.31.0 + +### Features +- Async assertions include context cancellation cause if present [121c37f] + +### Maintenance +- Bump minimum go version [dee1e3c] +- docs: fix typo in example usage "occured" -> "occurred" [49005fe] +- Bump actions/setup-go from 4 to 5 (#714) [f1c8757] +- Bump github/codeql-action from 2 to 3 (#715) [9836e76] +- Bump github.com/onsi/ginkgo/v2 from 2.13.0 to 2.13.2 (#713) [54726f0] +- Bump golang.org/x/net from 0.17.0 to 0.19.0 (#711) [df97ecc] +- docs: fix `HaveExactElement` typo (#712) [a672c86] + +## 1.30.0 + +### Features +- BeTrueBecause and BeFalseBecause allow for better failure messages [4da4c7f] + +### Maintenance +- Bump actions/checkout from 3 to 4 (#694) [6ca6e97] +- doc: fix type on gleak go doc [f1b8343] + +## 1.29.0 + +### Features +- MatchError can now take an optional func(error) bool + description [2b39142] + +## 1.28.1 + +### Maintenance +- Bump github.com/onsi/ginkgo/v2 from 2.12.0 to 2.13.0 [635d196] +- Bump github.com/google/go-cmp from 0.5.9 to 0.6.0 [14f8859] +- Bump golang.org/x/net from 0.14.0 to 0.17.0 [d8a6508] +- #703 doc(matchers): HaveEach() doc comment updated [2705bdb] +- Minor typos (#699) [375648c] + +## 1.28.0 + +### Features +- Add VerifyHost handler to ghttp (#698) [0b03b36] + +### Fixes +- Read Body for Newer Responses in HaveHTTPBodyMatcher (#686) [18d6673] + +### Maintenance +- Bump github.com/onsi/ginkgo/v2 from 2.11.0 to 2.12.0 (#693) [55a33f3] +- Typo in matchers.go (#691) [de68e8f] +- Bump commonmarker from 0.23.9 to 0.23.10 in /docs (#690) [ab17f5e] +- chore: update test matrix for Go 1.21 (#689) [5069017] +- Bump golang.org/x/net from 0.12.0 to 0.14.0 (#688) [babe25f] + +## 1.27.10 + +### Fixes +- fix: go 1.21 adding goroutine ID to creator+location (#685) [bdc7803] + +## 1.27.9 + +### Fixes +- Prevent nil-dereference in format.Object for boxed nil error (#681) [3b31fc3] + +### Maintenance +- Bump golang.org/x/net from 0.11.0 to 0.12.0 (#679) [360849b] +- chore: use String() instead of fmt.Sprintf (#678) [86f3659] +- Bump golang.org/x/net from 0.10.0 to 0.11.0 (#674) [642ead0] +- chore: unnecessary use of fmt.Sprintf (#677) [ceb9ca6] +- Bump github.com/onsi/ginkgo/v2 from 2.10.0 to 2.11.0 (#675) [a2087d8] +- docs: fix ContainSubstring references (#673) [fc9a89f] +- Bump github.com/onsi/ginkgo/v2 from 2.9.7 to 2.10.0 (#671) [9076019] + +## 1.27.8 + +### Fixes +- HaveExactElement should not call FailureMessage if a submatcher returned an error [096f392] + +### Maintenance +- Bump github.com/onsi/ginkgo/v2 from 2.9.5 to 2.9.7 (#669) [8884bee] + +## 1.27.7 + +### Fixes +- fix: gcustom.MakeMatcher accepts nil as actual value (#666) [57054d5] + +### Maintenance +- update gitignore [05c1bc6] +- Bump github.com/onsi/ginkgo/v2 from 2.9.4 to 2.9.5 (#663) [7cadcf6] +- Bump golang.org/x/net from 0.9.0 to 0.10.0 (#662) [b524839] +- Bump github.com/onsi/ginkgo/v2 from 2.9.2 to 2.9.4 (#661) [5f44694] +- Bump commonmarker from 0.23.8 to 0.23.9 in /docs (#657) [05dc99a] +- Bump nokogiri from 1.14.1 to 1.14.3 in /docs (#658) [3a033d1] +- Replace deprecated NewGomegaWithT with NewWithT (#659) [a19238f] +- Bump golang.org/x/net from 0.8.0 to 0.9.0 (#656) [29ed041] +- Bump actions/setup-go from 3 to 4 (#651) [11b2080] + +## 1.27.6 + +### Fixes +- Allow collections matchers to work correctly when expected has nil elements [60e7cf3] + +### Maintenance +- updates MatchError godoc comment to also accept a Gomega matcher (#654) [67b869d] + +## 1.27.5 + +### Maintenance +- Bump github.com/onsi/ginkgo/v2 from 2.9.1 to 2.9.2 (#653) [a215021] +- Bump github.com/go-task/slim-sprig (#652) [a26fed8] + +## 1.27.4 + +### Fixes +- improve error formatting and remove duplication of error message in Eventually/Consistently [854f075] + +### Maintenance +- Bump github.com/onsi/ginkgo/v2 from 2.9.0 to 2.9.1 (#650) [ccebd9b] + +## 1.27.3 + +### Fixes +- format.Object now always includes err.Error() when passed an error [86d97ef] +- Fix HaveExactElements to work inside ContainElement or other collection matchers (#648) [636757e] + +### Maintenance +- Bump github.com/golang/protobuf from 1.5.2 to 1.5.3 (#649) [cc16689] +- Bump github.com/onsi/ginkgo/v2 from 2.8.4 to 2.9.0 (#646) [e783366] + +## 1.27.2 + +### Fixes +- improve poll progress message when polling a consistently that has been passing [28a319b] + +### Maintenance +- bump ginkgo +- remove tools.go hack as Ginkgo 2.8.2 automatically pulls in the cli dependencies [81443b3] + +## 1.27.1 + +### Maintenance + +- Bump golang.org/x/net from 0.6.0 to 0.7.0 (#640) [bc686cd] + +## 1.27.0 + +### Features +- Add HaveExactElements matcher (#634) [9d50783] +- update Gomega docs to discuss GinkgoHelper() [be32774] + +### Maintenance +- Bump github.com/onsi/ginkgo/v2 from 2.8.0 to 2.8.1 (#639) [296a68b] +- Bump golang.org/x/net from 0.5.0 to 0.6.0 (#638) [c2b098b] +- Bump github-pages from 227 to 228 in /docs (#636) [a9069ab] +- test: update matrix for Go 1.20 (#635) [6bd25c8] +- Bump github.com/onsi/ginkgo/v2 from 2.7.0 to 2.8.0 (#631) [5445f8b] +- Bump webrick from 1.7.0 to 1.8.1 in /docs (#630) [03e93bb] +- codeql: add ruby language (#626) [63c7d21] +- dependabot: add bundler package-ecosystem for docs (#625) [d92f963] + +## 1.26.0 + +### Features +- When a polled function returns an error, keep track of the actual and report on the matcher state of the last non-errored actual [21f3090] +- improve eventually failure message output [c530fb3] + +### Fixes +- fix several documentation spelling issues [e2eff1f] + + +## 1.25.0 + +### Features +- add `MustPassRepeatedly(int)` to asyncAssertion (#619) [4509f72] +- compare unwrapped errors using DeepEqual (#617) [aaeaa5d] + +### Maintenance +- Bump golang.org/x/net from 0.4.0 to 0.5.0 (#614) [c7cfea4] +- Bump github.com/onsi/ginkgo/v2 from 2.6.1 to 2.7.0 (#615) [71b8adb] +- Docs: Fix typo "MUltiple" -> "Multiple" (#616) [9351dda] +- clean up go.sum [cd1dc1d] + +## 1.24.2 + +### Fixes +- Correctly handle assertion failure panics for eventually/consistnetly "g Gomega"s in a goroutine [78f1660] +- docs:Fix typo "you an" -> "you can" (#607) [3187c1f] +- fixes issue #600 (#606) [808d192] + +### Maintenance +- Bump golang.org/x/net from 0.2.0 to 0.4.0 (#611) [6ebc0bf] +- Bump nokogiri from 1.13.9 to 1.13.10 in /docs (#612) [258cfc8] +- Bump github.com/onsi/ginkgo/v2 from 2.5.0 to 2.5.1 (#609) [e6c3eb9] + +## 1.24.1 + +### Fixes +- maintain backward compatibility for Eventually and Consisntetly's signatures [4c7df5e] +- fix small typo (#601) [ea0ebe6] + +### Maintenance +- Bump golang.org/x/net from 0.1.0 to 0.2.0 (#603) [1ba8372] +- Bump github.com/onsi/ginkgo/v2 from 2.4.0 to 2.5.0 (#602) [f9426cb] +- fix label-filter in test.yml [d795db6] +- stop running flakey tests and rely on external network dependencies in CI [7133290] + +## 1.24.0 + +### Features + +Introducing [gcustom](https://onsi.github.io/gomega/#gcustom-a-convenient-mechanism-for-buildling-custom-matchers) - a convenient mechanism for building custom matchers. + +This is an RC release for `gcustom`. The external API may be tweaked in response to feedback however it is expected to remain mostly stable. + +### Maintenance + +- Update BeComparableTo documentation [756eaa0] + +## 1.23.0 + +### Features +- Custom formatting on a per-type basis can be provided using `format.RegisterCustomFormatter()` -- see the docs [here](https://onsi.github.io/gomega/#adjusting-output) + +- Substantial improvement have been made to `StopTrying()`: + - Users can now use `StopTrying().Wrap(err)` to wrap errors and `StopTrying().Attach(description, object)` to attach arbitrary objects to the `StopTrying()` error + - `StopTrying()` is now always interpreted as a failure. If you are an early adopter of `StopTrying()` you may need to change your code as the prior version would match against the returned value even if `StopTrying()` was returned. Going forward the `StopTrying()` api should remain stable. + - `StopTrying()` and `StopTrying().Now()` can both be used in matchers - not just polled functions. + +- `TryAgainAfter(duration)` is used like `StopTrying()` but instructs `Eventually` and `Consistently` that the poll should be tried again after the specified duration. This allows you to dynamically adjust the polling duration. + +- `ctx` can now be passed-in as the first argument to `Eventually` and `Consistently`. + +## Maintenance + +- Bump github.com/onsi/ginkgo/v2 from 2.3.0 to 2.3.1 (#597) [afed901] +- Bump nokogiri from 1.13.8 to 1.13.9 in /docs (#599) [7c691b3] +- Bump github.com/google/go-cmp from 0.5.8 to 0.5.9 (#587) [ff22665] + +## 1.22.1 + +## Fixes +- When passed a context and no explicit timeout, Eventually will only timeout when the context is cancelled [e5105cf] +- Allow StopTrying() to be wrapped [bf3cba9] + +## Maintenance +- bump to ginkgo v2.3.0 [c5d5c39] + +## 1.22.0 + +### Features + +Several improvements have been made to `Eventually` and `Consistently` in this and the most recent releases: + +- Eventually and Consistently can take a context.Context [65c01bc] + This enables integration with Ginkgo 2.3.0's interruptible nodes and node timeouts. +- Eventually and Consistently that are passed a SpecContext can provide reports when an interrupt occurs [0d063c9] +- Eventually/Consistently will forward an attached context to functions that ask for one [e2091c5] +- Eventually/Consistently supports passing arguments to functions via WithArguments() [a2dc7c3] +- Eventually and Consistently can now be stopped early with StopTrying(message) and StopTrying(message).Now() [52976bb] + +These improvements are all documented in [Gomega's docs](https://onsi.github.io/gomega/#making-asynchronous-assertions) + +## Fixes + +## Maintenance + +## 1.21.1 + +### Features +- Eventually and Consistently that are passed a SpecContext can provide reports when an interrupt occurs [0d063c9] + +## 1.21.0 + +### Features +- Eventually and Consistently can take a context.Context [65c01bc] + This enables integration with Ginkgo 2.3.0's interruptible nodes and node timeouts. +- Introduces Eventually.Within.ProbeEvery with tests and documentation (#591) [f633800] +- New BeKeyOf matcher with documentation and unit tests (#590) [fb586b3] + +## Fixes +- Cover the entire gmeasure suite with leak detection [8c54344] +- Fix gmeasure leak [119d4ce] +- Ignore new Ginkgo ProgressSignal goroutine in gleak [ba548e2] + +## Maintenance + +- Fixes crashes on newer Ruby 3 installations by upgrading github-pages gem dependency (#596) [12469a0] + + +## 1.20.2 + +## Fixes +- label specs that rely on remote access; bump timeout on short-circuit test to make it less flaky [35eeadf] +- gexec: allow more headroom for SIGABRT-related unit tests (#581) [5b78f40] +- Enable reading from a closed gbytes.Buffer (#575) [061fd26] + +## Maintenance +- Bump github.com/onsi/ginkgo/v2 from 2.1.5 to 2.1.6 (#583) [55d895b] +- Bump github.com/onsi/ginkgo/v2 from 2.1.4 to 2.1.5 (#582) [346de7c] + +## 1.20.1 + +## Fixes +- fix false positive gleaks when using ginkgo -p (#577) [cb46517] +- Fix typos in gomega_dsl.go (#569) [5f71ed2] +- don't panic on Eventually(nil), fixing #555 (#567) [9d1186f] +- vet optional description args in assertions, fixing #560 (#566) [8e37808] + +## Maintenance +- test: add new Go 1.19 to test matrix (#571) [40d7efe] +- Bump tzinfo from 1.2.9 to 1.2.10 in /docs (#564) [5f26371] + +## 1.20.0 + +## Features +- New [`gleak`](https://onsi.github.io/gomega/#codegleakcode-finding-leaked-goroutines) experimental goroutine leak detection package! (#538) [85ba7bc] +- New `BeComparableTo` matcher(#546) that uses `gocmp` to make comparisons [e77ea75] +- New `HaveExistingField` matcher (#553) [fd130e1] +- Document how to wrap Gomega (#539) [56714a4] + +## Fixes +- Support pointer receivers in HaveField; fixes #543 (#544) [8dab36e] + +## Maintenance +- Bump various dependencies: + - Upgrade to yaml.v3 (#556) [f5a83b1] + - Bump github/codeql-action from 1 to 2 (#549) [52f5adf] + - Bump github.com/google/go-cmp from 0.5.7 to 0.5.8 (#551) [5f3942d] + - Bump nokogiri from 1.13.4 to 1.13.6 in /docs (#554) [eb4b4c2] + - Use latest ginkgo (#535) [1c29028] + - Bump nokogiri from 1.13.3 to 1.13.4 in /docs (#541) [1ce84d5] + - Bump actions/setup-go from 2 to 3 (#540) [755485e] + - Bump nokogiri from 1.12.5 to 1.13.3 in /docs (#522) [4fbb0dc] + - Bump actions/checkout from 2 to 3 (#526) [ac49202] + +## 1.19.0 + +## Features +- New [`HaveEach`](https://onsi.github.io/gomega/#haveeachelement-interface) matcher to ensure that each and every element in an `array`, `slice`, or `map` satisfies the passed in matcher. (#523) [9fc2ae2] (#524) [c8ba582] +- Users can now wrap the `Gomega` interface to implement custom behavior on each assertion. (#521) [1f2e714] +- [`ContainElement`](https://onsi.github.io/gomega/#containelementelement-interface) now accepts an additional pointer argument. Elements that satisfy the matcher are stored in the pointer enabling developers to easily add subsequent, more detailed, assertions against the matching element. (#527) [1a4e27f] + +## Fixes +- update RELEASING instructions to match ginkgo [0917cde] +- Bump github.com/onsi/ginkgo/v2 from 2.0.0 to 2.1.3 (#519) [49ab4b0] +- Fix CVE-2021-38561 (#534) [f1b4456] +- Fix max number of samples in experiments on non-64-bit systems. (#528) [1c84497] +- Remove dependency on ginkgo v1.16.4 (#530) [4dea8d5] +- Fix for Go 1.18 (#532) [56d2a29] +- Document precedence of timeouts (#533) [b607941] + +## 1.18.1 + +## Fixes +- Add pointer support to HaveField matcher (#495) [79e41a3] + +## 1.18.0 + +## Features +- Docs now live on the master branch in the docs folder which will make for easier PRs. The docs also use Ginkgo 2.0's new docs html/css/js. [2570272] +- New HaveValue matcher can handle actuals that are either values (in which case they are passed on unscathed) or pointers (in which case they are indirected). [Docs here.](https://onsi.github.io/gomega/#working-with-values) (#485) [bdc087c] +- Gmeasure has been declared GA [360db9d] + +## Fixes +- Gomega now uses ioutil for Go 1.15 and lower (#492) - official support is only for the most recent two major versions of Go but this will unblock users who need to stay on older unsupported versions of Go. [c29c1c0] + +## Maintenance +- Remove Travis workflow (#491) [72e6040] +- Upgrade to Ginkgo 2.0.0 GA [f383637] +- chore: fix description of HaveField matcher (#487) [2b4b2c0] +- use tools.go to ensure Ginkgo cli dependencies are included [f58a52b] +- remove dockerfile and simplify github actions to match ginkgo's actions [3f8160d] + +## 1.17.0 + +### Features +- Add HaveField matcher [3a26311] +- add Error() assertions on the final error value of multi-return values (#480) [2f96943] +- separate out offsets and timeouts (#478) [18a4723] +- fix transformation error reporting (#479) [e001fab] +- allow transform functions to report errors (#472) [bf93408] + +### Fixes +Stop using deprecated ioutil package (#467) [07f405d] + +## 1.16.0 + +### Features +- feat: HaveHTTPStatus multiple expected values (#465) [aa69f1b] +- feat: HaveHTTPHeaderWithValue() matcher (#463) [dd83a96] +- feat: HaveHTTPBody matcher (#462) [504e1f2] +- feat: formatter for HTTP responses (#461) [e5b3157] + +## 1.15.0 + +### Fixes +The previous version (1.14.0) introduced a change to allow `Eventually` and `Consistently` to support functions that make assertions. This was accomplished by overriding the global fail handler when running the callbacks passed to `Eventually/Consistently` in order to capture any resulting errors. Issue #457 uncovered a flaw with this approach: when multiple `Eventually`s are running concurrently they race when overriding the singleton global fail handler. + +1.15.0 resolves this by requiring users who want to make assertions in `Eventually/Consistently` call backs to explicitly pass in a function that takes a `Gomega` as an argument. The passed-in `Gomega` instance can be used to make assertions. Any failures will cause `Eventually` to retry the callback. This cleaner interface avoids the issue of swapping out globals but comes at the cost of changing the contract introduced in v1.14.0. As such 1.15.0 introduces a breaking change with respect to 1.14.0 - however we expect that adoption of this feature in 1.14.0 remains limited. + +In addition, 1.15.0 cleans up some of Gomega's internals. Most users shouldn't notice any differences stemming from the refactoring that was made. + +## 1.14.0 + +### Features +- gmeasure.SamplingConfig now suppers a MinSamplingInterval [e94dbca] +- Eventually and Consistently support functions that make assertions [2f04e6e] + - Eventually and Consistently now allow their passed-in functions to make assertions. + These assertions must pass or the function is considered to have failed and is retried. + - Eventually and Consistently can now take functions with no return values. These implicitly return nil + if they contain no failed assertion. Otherwise they return an error wrapping the first assertion failure. This allows + these functions to be used with the Succeed() matcher. + - Introduce InterceptGomegaFailure - an analogue to InterceptGomegaFailures - that captures the first assertion failure + and halts execution in its passed-in callback. + +### Fixes +- Call Verify GHTTPWithGomega receiver funcs (#454) [496e6fd] +- Build a binary with an expected name (#446) [7356360] + +## 1.13.0 + +### Features +- gmeasure provides BETA support for benchmarking (#447) [8f2dfbf] +- Set consistently and eventually defaults on init (#443) [12eb778] + +## 1.12.0 + +### Features +- Add Satisfy() matcher (#437) [c548f31] +- tweak truncation message [3360b8c] +- Add format.GomegaStringer (#427) [cc80b6f] +- Add Clear() method to gbytes.Buffer [c3c0920] + +### Fixes +- Fix error message in BeNumericallyMatcher (#432) [09c074a] +- Bump github.com/onsi/ginkgo from 1.12.1 to 1.16.2 (#442) [e5f6ea0] +- Bump github.com/golang/protobuf from 1.4.3 to 1.5.2 (#431) [adae3bf] +- Bump golang.org/x/net (#441) [3275b35] + +## 1.11.0 + +### Features +- feature: add index to gstruct element func (#419) [334e00d] +- feat(gexec) Add CompileTest functions. Close #410 (#411) [47c613f] + +### Fixes +- Check more carefully for nils in WithTransform (#423) [3c60a15] +- fix: typo in Makefile [b82522a] +- Allow WithTransform function to accept a nil value (#422) [b75d2f2] +- fix: print value type for interface{} containers (#409) [f08e2dc] +- fix(BeElementOf): consistently flatten expected values [1fa9468] + +## 1.10.5 + +### Fixes +- fix: collections matchers should display type of expectation (#408) [6b4eb5a] +- fix(ContainElements): consistently flatten expected values [073b880] +- fix(ConsistOf): consistently flatten expected values [7266efe] + +## 1.10.4 + +### Fixes +- update golang net library to more recent version without vulnerability (#406) [817a8b9] +- Correct spelling: alloted -> allotted (#403) [0bae715] +- fix a panic in MessageWithDiff with long message (#402) [ea06b9b] + +## 1.10.3 + +### Fixes +- updates golang/x/net to fix vulnerability detected by snyk (#394) [c479356] + +## 1.10.2 + +### Fixes +- Add ExpectWithOffset, EventuallyWithOffset and ConsistentlyWithOffset to WithT (#391) [990941a] + +## 1.10.1 + +### Fixes +- Update dependencies (#389) [9f5eecd] + +## 1.10.0 + +### Features +- Add HaveHTTPStatusMatcher (#378) [f335c94] +- Changed matcher for content-type in VerifyJSONRepresenting (#377) [6024f5b] +- Make ghttp usable with x-unit style tests (#376) [c0be499] +- Implement PanicWith matcher (#381) [f8032b4] + +## 1.9.0 + +### Features +- Add ContainElements matcher (#370) [2f57380] +- Output missing and extra elements in ConsistOf failure message [a31eda7] +- Document method LargestMatching [7c5a280] + +## 1.8.1 + +### Fixes +- Fix unexpected MatchError() behaviour (#375) [8ae7b2f] + +## 1.8.0 + +### Features +- Allow optional description to be lazily evaluated function (#364) [bf64010] +- Support wrapped errors (#359) [0a981cb] + +## 1.7.1 + +### Fixes +- Bump go-yaml version to cover fixed ddos heuristic (#362) [95e431e] + +## 1.7.0 + +### Features +- export format property variables (#347) [642e5ba] + +### Fixes +- minor fix in the documentation of ExpectWithOffset (#358) [beea727] + +## 1.6.0 + +### Features + +- Display special chars on error [41e1b26] +- Add BeElementOf matcher [6a48b48] + +### Fixes + +- Remove duplication in XML matcher tests [cc1a6cb] +- Remove unnecessary conversions (#357) [7bf756a] +- Fixed import order (#353) [2e3b965] +- Added missing error handling in test (#355) [c98d3eb] +- Simplify code (#356) [0001ed9] +- Simplify code (#354) [0d9100e] +- Fixed typos (#352) [3f647c4] +- Add failure message tests to BeElementOf matcher [efe19c3] +- Update go-testcov untested sections [37ee382] +- Mark all uncovered files so go-testcov ./... works [53b150e] +- Reenable gotip in travis [5c249dc] +- Fix the typo of comment (#345) [f0e010e] +- Optimize contain_element_matcher [abeb93d] + + +## 1.5.0 + +### Features + +- Added MatchKeys matchers [8b909fc] + +### Fixes and Minor Improvements + +- Add type aliases to remove stuttering [03b0461] +- Don't run session_test.go on windows (#324) [5533ce8] + +## 1.4.3 + +### Fixes: + +- ensure file name and line numbers are correctly reported for XUnit [6fff58f] +- Fixed matcher for content-type (#305) [69d9b43] + +## 1.4.2 + +### Fixes: + +- Add go.mod and go.sum files to define the gomega go module [f3de367, a085d30] +- Work around go vet issue with Go v1.11 (#300) [40dd6ad] +- Better output when using with go XUnit-style tests, fixes #255 (#297) [29a4b97] +- Fix MatchJSON fail to parse json.RawMessage (#298) [ae19f1b] +- show threshold in failure message of BeNumericallyMatcher (#293) [4bbecc8] + +## 1.4.1 + +### Fixes: + +- Update documentation formatting and examples (#289) [9be8410] +- allow 'Receive' matcher to be used with concrete types (#286) [41673fd] +- Fix data race in ghttp server (#283) [7ac6b01] +- Travis badge should only show master [cc102ab] + +## 1.4.0 + +### Features +- Make string pretty diff user configurable (#273) [eb112ce, 649b44d] + +### Fixes +- Use httputil.DumpRequest to pretty-print unhandled requests (#278) [a4ff0fc, b7d1a52] +- fix typo floa32 > float32 (#272) [041ae3b, 6e33911] +- Fix link to documentation on adding your own matchers (#270) [bb2c830, fcebc62] +- Use setters and getters to avoid race condition (#262) [13057c3, a9c79f1] +- Avoid sending a signal if the process is not alive (#259) [b8043e5, 4fc1762] +- Improve message from AssignableToTypeOf when expected value is nil (#281) [9c1fb20] + +## 1.3.0 + +Improvements: + +- The `Equal` matcher matches byte slices more performantly. +- Improved how `MatchError` matches error strings. +- `MatchXML` ignores the order of xml node attributes. +- Improve support for XUnit style golang tests. ([#254](https://github.com/onsi/gomega/issues/254)) + +Bug Fixes: + +- Diff generation now handles multi-byte sequences correctly. +- Multiple goroutines can now call `gexec.Build` concurrently. + +## 1.2.0 + +Improvements: + +- Added `BeSent` which attempts to send a value down a channel and fails if the attempt blocks. Can be paired with `Eventually` to safely send a value down a channel with a timeout. +- `Ω`, `Expect`, `Eventually`, and `Consistently` now immediately `panic` if there is no registered fail handler. This is always a mistake that can hide failing tests. +- `Receive()` no longer errors when passed a closed channel, it's perfectly fine to attempt to read from a closed channel so Ω(c).Should(Receive()) always fails and Ω(c).ShouldNot(Receive()) always passes with a closed channel. +- Added `HavePrefix` and `HaveSuffix` matchers. +- `ghttp` can now handle concurrent requests. +- Added `Succeed` which allows one to write `Ω(MyFunction()).Should(Succeed())`. +- Improved `ghttp`'s behavior around failing assertions and panics: + - If a registered handler makes a failing assertion `ghttp` will return `500`. + - If a registered handler panics, `ghttp` will return `500` *and* fail the test. This is new behavior that may cause existing code to break. This code is almost certainly incorrect and creating a false positive. +- `ghttp` servers can take an `io.Writer`. `ghttp` will write a line to the writer when each request arrives. +- Added `WithTransform` matcher to allow munging input data before feeding into the relevant matcher +- Added boolean `And`, `Or`, and `Not` matchers to allow creating composite matchers +- Added `gbytes.TimeoutCloser`, `gbytes.TimeoutReader`, and `gbytes.TimeoutWriter` - these are convenience wrappers that timeout if the underlying Closer/Reader/Writer does not return within the allotted time. +- Added `gbytes.BufferReader` - this constructs a `gbytes.Buffer` that asynchronously reads the passed-in `io.Reader` into its buffer. + +Bug Fixes: +- gexec: `session.Wait` now uses `EventuallyWithOffset` to get the right line number in the failure. +- `ContainElement` no longer bails if a passed-in matcher errors. + +## 1.0 (8/2/2014) + +No changes. Dropping "beta" from the version number. + +## 1.0.0-beta (7/8/2014) +Breaking Changes: + +- Changed OmegaMatcher interface. Instead of having `Match` return failure messages, two new methods `FailureMessage` and `NegatedFailureMessage` are called instead. +- Moved and renamed OmegaFailHandler to types.GomegaFailHandler and OmegaMatcher to types.GomegaMatcher. Any references to OmegaMatcher in any custom matchers will need to be changed to point to types.GomegaMatcher + +New Test-Support Features: + +- `ghttp`: supports testing http clients + - Provides a flexible fake http server + - Provides a collection of chainable http handlers that perform assertions. +- `gbytes`: supports making ordered assertions against streams of data + - Provides a `gbytes.Buffer` + - Provides a `Say` matcher to perform ordered assertions against output data +- `gexec`: supports testing external processes + - Provides support for building Go binaries + - Wraps and starts `exec.Cmd` commands + - Makes it easy to assert against stdout and stderr + - Makes it easy to send signals and wait for processes to exit + - Provides an `Exit` matcher to assert against exit code. + +DSL Changes: + +- `Eventually` and `Consistently` can accept `time.Duration` interval and polling inputs. +- The default timeouts for `Eventually` and `Consistently` are now configurable. + +New Matchers: + +- `ConsistOf`: order-independent assertion against the elements of an array/slice or keys of a map. +- `BeTemporally`: like `BeNumerically` but for `time.Time` +- `HaveKeyWithValue`: asserts a map has a given key with the given value. + +Updated Matchers: + +- `Receive` matcher can take a matcher as an argument and passes only if the channel under test receives an object that satisfies the passed-in matcher. +- Matchers that implement `MatchMayChangeInTheFuture(actual interface{}) bool` can inform `Eventually` and/or `Consistently` when a match has no chance of changing status in the future. For example, `Receive` returns `false` when a channel is closed. + +Misc: + +- Start using semantic versioning +- Start maintaining changelog + +Major refactor: + +- Pull out Gomega's internal to `internal` diff --git a/tests/vendor/github.com/onsi/gomega/CONTRIBUTING.md b/tests/vendor/github.com/onsi/gomega/CONTRIBUTING.md new file mode 100644 index 000000000..0d7a09928 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/CONTRIBUTING.md @@ -0,0 +1,14 @@ +# Contributing to Gomega + +Your contributions to Gomega are essential for its long-term maintenance and improvement. To make a contribution: + +- Please **open an issue first** - describe what problem you are trying to solve and give the community a forum for input and feedback ahead of investing time in writing code! +- Ensure adequate test coverage: + - Make sure to add appropriate unit tests + - Please run all tests locally (`ginkgo -r -p`) and make sure they go green before submitting the PR + - Please run following linter locally `go vet ./...` and make sure output does not contain any warnings +- Update the documentation. In addition to standard `godoc` comments Gomega has extensive documentation on the `gh-pages` branch. If relevant, please submit a docs PR to that branch alongside your code PR. + +If you're a committer, check out RELEASING.md to learn how to cut a release. + +Thanks for supporting Gomega! diff --git a/tests/vendor/github.com/onsi/gomega/LICENSE b/tests/vendor/github.com/onsi/gomega/LICENSE new file mode 100644 index 000000000..9415ee72c --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2013-2014 Onsi Fakhouri + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/tests/vendor/github.com/onsi/gomega/README.md b/tests/vendor/github.com/onsi/gomega/README.md new file mode 100644 index 000000000..d45a8c4e5 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/README.md @@ -0,0 +1,21 @@ +![Gomega: Ginkgo's Preferred Matcher Library](http://onsi.github.io/gomega/images/gomega.png) + +[![test](https://github.com/onsi/gomega/actions/workflows/test.yml/badge.svg)](https://github.com/onsi/gomega/actions/workflows/test.yml) + +Jump straight to the [docs](http://onsi.github.io/gomega/) to learn about Gomega, including a list of [all available matchers](http://onsi.github.io/gomega/#provided-matchers). + +If you have a question, comment, bug report, feature request, etc. please open a GitHub issue. + +## [Ginkgo](http://github.com/onsi/ginkgo): a BDD Testing Framework for Golang + +Learn more about Ginkgo [here](http://onsi.github.io/ginkgo/) + +## Community Matchers + +A collection of community matchers is available on the [wiki](https://github.com/onsi/gomega/wiki). + +## License + +Gomega is MIT-Licensed + +The `ConsistOf` matcher uses [goraph](https://github.com/amitkgupta/goraph) which is embedded in the source to simplify distribution. goraph has an MIT license. diff --git a/tests/vendor/github.com/onsi/gomega/RELEASING.md b/tests/vendor/github.com/onsi/gomega/RELEASING.md new file mode 100644 index 000000000..9973fff49 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/RELEASING.md @@ -0,0 +1,23 @@ +A Gomega release is a tagged sha and a GitHub release. To cut a release: + +1. Ensure CHANGELOG.md is up to date. + - Use + ```bash + LAST_VERSION=$(git tag --sort=version:refname | tail -n1) + CHANGES=$(git log --pretty=format:'- %s [%h]' HEAD...$LAST_VERSION) + echo -e "## NEXT\n\n$CHANGES\n\n### Features\n\n### Fixes\n\n### Maintenance\n\n$(cat CHANGELOG.md)" > CHANGELOG.md + ``` + to update the changelog + - Categorize the changes into + - Breaking Changes (requires a major version) + - New Features (minor version) + - Fixes (fix version) + - Maintenance (which in general should not be mentioned in `CHANGELOG.md` as they have no user impact) +1. Update GOMEGA_VERSION in `gomega_dsl.go` +1. Commit, push, and release: + ``` + git commit -m "vM.m.p" + git push + gh release create "vM.m.p" + git fetch --tags origin master + ``` \ No newline at end of file diff --git a/tests/vendor/github.com/onsi/gomega/format/format.go b/tests/vendor/github.com/onsi/gomega/format/format.go new file mode 100644 index 000000000..96f04b210 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/format/format.go @@ -0,0 +1,506 @@ +/* +Gomega's format package pretty-prints objects. It explores input objects recursively and generates formatted, indented output with type information. +*/ + +// untested sections: 4 + +package format + +import ( + "context" + "fmt" + "reflect" + "strconv" + "strings" + "time" +) + +// Use MaxDepth to set the maximum recursion depth when printing deeply nested objects +var MaxDepth = uint(10) + +// MaxLength of the string representation of an object. +// If MaxLength is set to 0, the Object will not be truncated. +var MaxLength = 4000 + +/* +By default, all objects (even those that implement fmt.Stringer and fmt.GoStringer) are recursively inspected to generate output. + +Set UseStringerRepresentation = true to use GoString (for fmt.GoStringers) or String (for fmt.Stringer) instead. + +Note that GoString and String don't always have all the information you need to understand why a test failed! +*/ +var UseStringerRepresentation = false + +/* +Print the content of context objects. By default it will be suppressed. + +Set PrintContextObjects = true to enable printing of the context internals. +*/ +var PrintContextObjects = false + +// TruncatedDiff choose if we should display a truncated pretty diff or not +var TruncatedDiff = true + +// TruncateThreshold (default 50) specifies the maximum length string to print in string comparison assertion error +// messages. +var TruncateThreshold uint = 50 + +// CharactersAroundMismatchToInclude (default 5) specifies how many contextual characters should be printed before and +// after the first diff location in a truncated string assertion error message. +var CharactersAroundMismatchToInclude uint = 5 + +var contextType = reflect.TypeOf((*context.Context)(nil)).Elem() +var timeType = reflect.TypeOf(time.Time{}) + +// The default indentation string emitted by the format package +var Indent = " " + +var longFormThreshold = 20 + +// GomegaStringer allows for custom formatting of objects for gomega. +type GomegaStringer interface { + // GomegaString will be used to custom format an object. + // It does not follow UseStringerRepresentation value and will always be called regardless. + // It also ignores the MaxLength value. + GomegaString() string +} + +/* +CustomFormatters can be registered with Gomega via RegisterCustomFormatter() +Any value to be rendered by Gomega is passed to each registered CustomFormatters. +The CustomFormatter signals that it will handle formatting the value by returning (formatted-string, true) +If the CustomFormatter does not want to handle the object it should return ("", false) + +Strings returned by CustomFormatters are not truncated +*/ +type CustomFormatter func(value any) (string, bool) +type CustomFormatterKey uint + +var customFormatterKey CustomFormatterKey = 1 + +type customFormatterKeyPair struct { + CustomFormatter + CustomFormatterKey +} + +/* +RegisterCustomFormatter registers a CustomFormatter and returns a CustomFormatterKey + +You can call UnregisterCustomFormatter with the returned key to unregister the associated CustomFormatter +*/ +func RegisterCustomFormatter(customFormatter CustomFormatter) CustomFormatterKey { + key := customFormatterKey + customFormatterKey += 1 + customFormatters = append(customFormatters, customFormatterKeyPair{customFormatter, key}) + return key +} + +/* +UnregisterCustomFormatter unregisters a previously registered CustomFormatter. You should pass in the key returned by RegisterCustomFormatter +*/ +func UnregisterCustomFormatter(key CustomFormatterKey) { + formatters := []customFormatterKeyPair{} + for _, f := range customFormatters { + if f.CustomFormatterKey == key { + continue + } + formatters = append(formatters, f) + } + customFormatters = formatters +} + +var customFormatters = []customFormatterKeyPair{} + +/* +Generates a formatted matcher success/failure message of the form: + + Expected + + + + +If expected is omitted, then the message looks like: + + Expected + + +*/ +func Message(actual any, message string, expected ...any) string { + if len(expected) == 0 { + return fmt.Sprintf("Expected\n%s\n%s", Object(actual, 1), message) + } + return fmt.Sprintf("Expected\n%s\n%s\n%s", Object(actual, 1), message, Object(expected[0], 1)) +} + +/* + +Generates a nicely formatted matcher success / failure message + +Much like Message(...), but it attempts to pretty print diffs in strings + +Expected + : "...aaaaabaaaaa..." +to equal | + : "...aaaaazaaaaa..." + +*/ + +func MessageWithDiff(actual, message, expected string) string { + if TruncatedDiff && len(actual) >= int(TruncateThreshold) && len(expected) >= int(TruncateThreshold) { + diffPoint := findFirstMismatch(actual, expected) + formattedActual := truncateAndFormat(actual, diffPoint) + formattedExpected := truncateAndFormat(expected, diffPoint) + + spacesBeforeFormattedMismatch := findFirstMismatch(formattedActual, formattedExpected) + + tabLength := 4 + spaceFromMessageToActual := tabLength + len(": ") - len(message) + + paddingCount := spaceFromMessageToActual + spacesBeforeFormattedMismatch + if paddingCount < 0 { + return Message(formattedActual, message, formattedExpected) + } + + padding := strings.Repeat(" ", paddingCount) + "|" + return Message(formattedActual, message+padding, formattedExpected) + } + + actual = escapedWithGoSyntax(actual) + expected = escapedWithGoSyntax(expected) + + return Message(actual, message, expected) +} + +func escapedWithGoSyntax(str string) string { + withQuotes := fmt.Sprintf("%q", str) + return withQuotes[1 : len(withQuotes)-1] +} + +func truncateAndFormat(str string, index int) string { + leftPadding := `...` + rightPadding := `...` + + start := index - int(CharactersAroundMismatchToInclude) + if start < 0 { + start = 0 + leftPadding = "" + } + + // slice index must include the mis-matched character + lengthOfMismatchedCharacter := 1 + end := index + int(CharactersAroundMismatchToInclude) + lengthOfMismatchedCharacter + if end > len(str) { + end = len(str) + rightPadding = "" + + } + return fmt.Sprintf("\"%s\"", leftPadding+str[start:end]+rightPadding) +} + +func findFirstMismatch(a, b string) int { + aSlice := strings.Split(a, "") + bSlice := strings.Split(b, "") + + for index, str := range aSlice { + if index > len(bSlice)-1 { + return index + } + if str != bSlice[index] { + return index + } + } + + if len(b) > len(a) { + return len(a) + 1 + } + + return 0 +} + +const truncateHelpText = ` +Gomega truncated this representation as it exceeds 'format.MaxLength'. +Consider having the object provide a custom 'GomegaStringer' representation +or adjust the parameters in Gomega's 'format' package. + +Learn more here: https://onsi.github.io/gomega/#adjusting-output +` + +func truncateLongStrings(s string) string { + if MaxLength > 0 && len(s) > MaxLength { + var sb strings.Builder + for i, r := range s { + if i < MaxLength { + sb.WriteRune(r) + continue + } + break + } + + sb.WriteString("...\n") + sb.WriteString(truncateHelpText) + + return sb.String() + } + return s +} + +/* +Pretty prints the passed in object at the passed in indentation level. + +Object recurses into deeply nested objects emitting pretty-printed representations of their components. + +Modify format.MaxDepth to control how deep the recursion is allowed to go +Set format.UseStringerRepresentation to true to return object.GoString() or object.String() when available instead of +recursing into the object. + +Set PrintContextObjects to true to print the content of objects implementing context.Context +*/ +func Object(object any, indentation uint) string { + indent := strings.Repeat(Indent, int(indentation)) + value := reflect.ValueOf(object) + commonRepresentation := "" + if err, ok := object.(error); ok && !isNilValue(value) { // isNilValue check needed here to avoid nil deref due to boxed nil + commonRepresentation += "\n" + IndentString(err.Error(), indentation) + "\n" + indent + } + return fmt.Sprintf("%s<%s>: %s%s", indent, formatType(value), commonRepresentation, formatValue(value, indentation)) +} + +/* +IndentString takes a string and indents each line by the specified amount. +*/ +func IndentString(s string, indentation uint) string { + return indentString(s, indentation, true) +} + +func indentString(s string, indentation uint, indentFirstLine bool) string { + result := &strings.Builder{} + components := strings.Split(s, "\n") + indent := strings.Repeat(Indent, int(indentation)) + for i, component := range components { + if i > 0 || indentFirstLine { + result.WriteString(indent) + } + result.WriteString(component) + if i < len(components)-1 { + result.WriteString("\n") + } + } + + return result.String() +} + +func formatType(v reflect.Value) string { + switch v.Kind() { + case reflect.Invalid: + return "nil" + case reflect.Chan: + return fmt.Sprintf("%s | len:%d, cap:%d", v.Type(), v.Len(), v.Cap()) + case reflect.Ptr: + return fmt.Sprintf("%s | 0x%x", v.Type(), v.Pointer()) + case reflect.Slice: + return fmt.Sprintf("%s | len:%d, cap:%d", v.Type(), v.Len(), v.Cap()) + case reflect.Map: + return fmt.Sprintf("%s | len:%d", v.Type(), v.Len()) + default: + return v.Type().String() + } +} + +func formatValue(value reflect.Value, indentation uint) string { + if indentation > MaxDepth { + return "..." + } + + if isNilValue(value) { + return "nil" + } + + if value.CanInterface() { + obj := value.Interface() + + // if a CustomFormatter handles this values, we'll go with that + for _, customFormatter := range customFormatters { + formatted, handled := customFormatter.CustomFormatter(obj) + // do not truncate a user-provided CustomFormatter() + if handled { + return indentString(formatted, indentation+1, false) + } + } + + // GomegaStringer will take precedence to other representations and disregards UseStringerRepresentation + if x, ok := obj.(GomegaStringer); ok { + // do not truncate a user-defined GomegaString() value + return indentString(x.GomegaString(), indentation+1, false) + } + + if UseStringerRepresentation { + switch x := obj.(type) { + case fmt.GoStringer: + return indentString(truncateLongStrings(x.GoString()), indentation+1, false) + case fmt.Stringer: + return indentString(truncateLongStrings(x.String()), indentation+1, false) + } + } + } + + if !PrintContextObjects { + if value.Type().Implements(contextType) && indentation > 1 { + return "" + } + } + + switch value.Kind() { + case reflect.Bool: + return fmt.Sprintf("%v", value.Bool()) + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return fmt.Sprintf("%v", value.Int()) + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: + return fmt.Sprintf("%v", value.Uint()) + case reflect.Uintptr: + return fmt.Sprintf("0x%x", value.Uint()) + case reflect.Float32, reflect.Float64: + return fmt.Sprintf("%v", value.Float()) + case reflect.Complex64, reflect.Complex128: + return fmt.Sprintf("%v", value.Complex()) + case reflect.Chan: + return fmt.Sprintf("0x%x", value.Pointer()) + case reflect.Func: + return fmt.Sprintf("0x%x", value.Pointer()) + case reflect.Ptr: + return formatValue(value.Elem(), indentation) + case reflect.Slice: + return truncateLongStrings(formatSlice(value, indentation)) + case reflect.String: + return truncateLongStrings(formatString(value.String(), indentation)) + case reflect.Array: + return truncateLongStrings(formatSlice(value, indentation)) + case reflect.Map: + return truncateLongStrings(formatMap(value, indentation)) + case reflect.Struct: + if value.Type() == timeType && value.CanInterface() { + t, _ := value.Interface().(time.Time) + return t.Format(time.RFC3339Nano) + } + return truncateLongStrings(formatStruct(value, indentation)) + case reflect.Interface: + return formatInterface(value, indentation) + default: + if value.CanInterface() { + return truncateLongStrings(fmt.Sprintf("%#v", value.Interface())) + } + return truncateLongStrings(fmt.Sprintf("%#v", value)) + } +} + +func formatString(object any, indentation uint) string { + if indentation == 1 { + s := fmt.Sprintf("%s", object) + components := strings.Split(s, "\n") + result := "" + for i, component := range components { + if i == 0 { + result += component + } else { + result += Indent + component + } + if i < len(components)-1 { + result += "\n" + } + } + + return result + } else { + return fmt.Sprintf("%q", object) + } +} + +func formatSlice(v reflect.Value, indentation uint) string { + if v.Kind() == reflect.Slice && v.Type().Elem().Kind() == reflect.Uint8 && isPrintableString(string(v.Bytes())) { + return formatString(v.Bytes(), indentation) + } + + l := v.Len() + result := make([]string, l) + longest := 0 + for i := 0; i < l; i++ { + result[i] = formatValue(v.Index(i), indentation+1) + if len(result[i]) > longest { + longest = len(result[i]) + } + } + + if longest > longFormThreshold { + indenter := strings.Repeat(Indent, int(indentation)) + return fmt.Sprintf("[\n%s%s,\n%s]", indenter+Indent, strings.Join(result, ",\n"+indenter+Indent), indenter) + } + return fmt.Sprintf("[%s]", strings.Join(result, ", ")) +} + +func formatMap(v reflect.Value, indentation uint) string { + l := v.Len() + result := make([]string, l) + + longest := 0 + for i, key := range v.MapKeys() { + value := v.MapIndex(key) + result[i] = fmt.Sprintf("%s: %s", formatValue(key, indentation+1), formatValue(value, indentation+1)) + if len(result[i]) > longest { + longest = len(result[i]) + } + } + + if longest > longFormThreshold { + indenter := strings.Repeat(Indent, int(indentation)) + return fmt.Sprintf("{\n%s%s,\n%s}", indenter+Indent, strings.Join(result, ",\n"+indenter+Indent), indenter) + } + return fmt.Sprintf("{%s}", strings.Join(result, ", ")) +} + +func formatStruct(v reflect.Value, indentation uint) string { + t := v.Type() + + l := v.NumField() + result := []string{} + longest := 0 + for i := 0; i < l; i++ { + structField := t.Field(i) + fieldEntry := v.Field(i) + representation := fmt.Sprintf("%s: %s", structField.Name, formatValue(fieldEntry, indentation+1)) + result = append(result, representation) + if len(representation) > longest { + longest = len(representation) + } + } + if longest > longFormThreshold { + indenter := strings.Repeat(Indent, int(indentation)) + return fmt.Sprintf("{\n%s%s,\n%s}", indenter+Indent, strings.Join(result, ",\n"+indenter+Indent), indenter) + } + return fmt.Sprintf("{%s}", strings.Join(result, ", ")) +} + +func formatInterface(v reflect.Value, indentation uint) string { + return fmt.Sprintf("<%s>%s", formatType(v.Elem()), formatValue(v.Elem(), indentation)) +} + +func isNilValue(a reflect.Value) bool { + switch a.Kind() { + case reflect.Invalid: + return true + case reflect.Chan, reflect.Func, reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice: + return a.IsNil() + } + + return false +} + +/* +Returns true when the string is entirely made of printable runes, false otherwise. +*/ +func isPrintableString(str string) bool { + for _, runeValue := range str { + if !strconv.IsPrint(runeValue) { + return false + } + } + return true +} diff --git a/tests/vendor/github.com/onsi/gomega/gomega_dsl.go b/tests/vendor/github.com/onsi/gomega/gomega_dsl.go new file mode 100644 index 000000000..a491a64be --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/gomega_dsl.go @@ -0,0 +1,559 @@ +/* +Gomega is the Ginkgo BDD-style testing framework's preferred matcher library. + +The godoc documentation describes Gomega's API. More comprehensive documentation (with examples!) is available at http://onsi.github.io/gomega/ + +Gomega on Github: http://github.com/onsi/gomega + +Learn more about Ginkgo online: http://onsi.github.io/ginkgo + +Ginkgo on Github: http://github.com/onsi/ginkgo + +Gomega is MIT-Licensed +*/ +package gomega + +import ( + "errors" + "fmt" + "time" + + "github.com/onsi/gomega/internal" + "github.com/onsi/gomega/types" +) + +const GOMEGA_VERSION = "1.37.0" + +const nilGomegaPanic = `You are trying to make an assertion, but haven't registered Gomega's fail handler. +If you're using Ginkgo then you probably forgot to put your assertion in an It(). +Alternatively, you may have forgotten to register a fail handler with RegisterFailHandler() or RegisterTestingT(). +Depending on your vendoring solution you may be inadvertently importing gomega and subpackages (e.g. ghhtp, gexec,...) from different locations. +` + +// Gomega describes the essential Gomega DSL. This interface allows libraries +// to abstract between the standard package-level function implementations +// and alternatives like *WithT. +// +// The types in the top-level DSL have gotten a bit messy due to earlier deprecations that avoid stuttering +// and due to an accidental use of a concrete type (*WithT) in an earlier release. +// +// As of 1.15 both the WithT and Ginkgo variants of Gomega are implemented by the same underlying object +// however one (the Ginkgo variant) is exported as an interface (types.Gomega) whereas the other (the withT variant) +// is shared as a concrete type (*WithT, which is aliased to *internal.Gomega). 1.15 did not clean this mess up to ensure +// that declarations of *WithT in existing code are not broken by the upgrade to 1.15. +type Gomega = types.Gomega + +// DefaultGomega supplies the standard package-level implementation +var Default = Gomega(internal.NewGomega(internal.FetchDefaultDurationBundle())) + +// NewGomega returns an instance of Gomega wired into the passed-in fail handler. +// You generally don't need to use this when using Ginkgo - RegisterFailHandler will wire up the global gomega +// However creating a NewGomega with a custom fail handler can be useful in contexts where you want to use Gomega's +// rich ecosystem of matchers without causing a test to fail. For example, to aggregate a series of potential failures +// or for use in a non-test setting. +func NewGomega(fail types.GomegaFailHandler) Gomega { + return internal.NewGomega(internalGomega(Default).DurationBundle).ConfigureWithFailHandler(fail) +} + +// WithT wraps a *testing.T and provides `Expect`, `Eventually`, and `Consistently` methods. This allows you to leverage +// Gomega's rich ecosystem of matchers in standard `testing` test suites. +// +// Use `NewWithT` to instantiate a `WithT` +// +// As of 1.15 both the WithT and Ginkgo variants of Gomega are implemented by the same underlying object +// however one (the Ginkgo variant) is exported as an interface (types.Gomega) whereas the other (the withT variant) +// is shared as a concrete type (*WithT, which is aliased to *internal.Gomega). 1.15 did not clean this mess up to ensure +// that declarations of *WithT in existing code are not broken by the upgrade to 1.15. +type WithT = internal.Gomega + +// GomegaWithT is deprecated in favor of gomega.WithT, which does not stutter. +type GomegaWithT = WithT + +// inner is an interface that allows users to provide a wrapper around Default. The wrapper +// must implement the inner interface and return either the original Default or the result of +// a call to NewGomega(). +type inner interface { + Inner() Gomega +} + +func internalGomega(g Gomega) *internal.Gomega { + if v, ok := g.(inner); ok { + return v.Inner().(*internal.Gomega) + } + return g.(*internal.Gomega) +} + +// NewWithT takes a *testing.T and returns a `gomega.WithT` allowing you to use `Expect`, `Eventually`, and `Consistently` along with +// Gomega's rich ecosystem of matchers in standard `testing` test suits. +// +// func TestFarmHasCow(t *testing.T) { +// g := gomega.NewWithT(t) +// +// f := farm.New([]string{"Cow", "Horse"}) +// g.Expect(f.HasCow()).To(BeTrue(), "Farm should have cow") +// } +func NewWithT(t types.GomegaTestingT) *WithT { + return internal.NewGomega(internalGomega(Default).DurationBundle).ConfigureWithT(t) +} + +// NewGomegaWithT is deprecated in favor of gomega.NewWithT, which does not stutter. +var NewGomegaWithT = NewWithT + +// RegisterFailHandler connects Ginkgo to Gomega. When a matcher fails +// the fail handler passed into RegisterFailHandler is called. +func RegisterFailHandler(fail types.GomegaFailHandler) { + internalGomega(Default).ConfigureWithFailHandler(fail) +} + +// RegisterFailHandlerWithT is deprecated and will be removed in a future release. +// users should use RegisterFailHandler, or RegisterTestingT +func RegisterFailHandlerWithT(_ types.GomegaTestingT, fail types.GomegaFailHandler) { + fmt.Println("RegisterFailHandlerWithT is deprecated. Please use RegisterFailHandler or RegisterTestingT instead.") + internalGomega(Default).ConfigureWithFailHandler(fail) +} + +// RegisterTestingT connects Gomega to Golang's XUnit style +// Testing.T tests. It is now deprecated and you should use NewWithT() instead to get a fresh instance of Gomega for each test. +func RegisterTestingT(t types.GomegaTestingT) { + internalGomega(Default).ConfigureWithT(t) +} + +// InterceptGomegaFailures runs a given callback and returns an array of +// failure messages generated by any Gomega assertions within the callback. +// Execution continues after the first failure allowing users to collect all failures +// in the callback. +// +// This is most useful when testing custom matchers, but can also be used to check +// on a value using a Gomega assertion without causing a test failure. +func InterceptGomegaFailures(f func()) []string { + originalHandler := internalGomega(Default).Fail + failures := []string{} + internalGomega(Default).Fail = func(message string, callerSkip ...int) { + failures = append(failures, message) + } + defer func() { + internalGomega(Default).Fail = originalHandler + }() + f() + return failures +} + +// InterceptGomegaFailure runs a given callback and returns the first +// failure message generated by any Gomega assertions within the callback, wrapped in an error. +// +// The callback ceases execution as soon as the first failed assertion occurs, however Gomega +// does not register a failure with the FailHandler registered via RegisterFailHandler - it is up +// to the user to decide what to do with the returned error +func InterceptGomegaFailure(f func()) (err error) { + originalHandler := internalGomega(Default).Fail + internalGomega(Default).Fail = func(message string, callerSkip ...int) { + err = errors.New(message) + panic("stop execution") + } + + defer func() { + internalGomega(Default).Fail = originalHandler + if e := recover(); e != nil { + if err == nil { + panic(e) + } + } + }() + + f() + return err +} + +func ensureDefaultGomegaIsConfigured() { + if !internalGomega(Default).IsConfigured() { + panic(nilGomegaPanic) + } +} + +// Ω wraps an actual value allowing assertions to be made on it: +// +// Ω("foo").Should(Equal("foo")) +// +// If Ω is passed more than one argument it will pass the *first* argument to the matcher. +// All subsequent arguments will be required to be nil/zero. +// +// This is convenient if you want to make an assertion on a method/function that returns +// a value and an error - a common patter in Go. +// +// For example, given a function with signature: +// +// func MyAmazingThing() (int, error) +// +// Then: +// +// Ω(MyAmazingThing()).Should(Equal(3)) +// +// Will succeed only if `MyAmazingThing()` returns `(3, nil)` +// +// Ω and Expect are identical +func Ω(actual any, extra ...any) Assertion { + ensureDefaultGomegaIsConfigured() + return Default.Ω(actual, extra...) +} + +// Expect wraps an actual value allowing assertions to be made on it: +// +// Expect("foo").To(Equal("foo")) +// +// If Expect is passed more than one argument it will pass the *first* argument to the matcher. +// All subsequent arguments will be required to be nil/zero. +// +// This is convenient if you want to make an assertion on a method/function that returns +// a value and an error - a common pattern in Go. +// +// For example, given a function with signature: +// +// func MyAmazingThing() (int, error) +// +// Then: +// +// Expect(MyAmazingThing()).Should(Equal(3)) +// +// Will succeed only if `MyAmazingThing()` returns `(3, nil)` +// +// Expect and Ω are identical +func Expect(actual any, extra ...any) Assertion { + ensureDefaultGomegaIsConfigured() + return Default.Expect(actual, extra...) +} + +// ExpectWithOffset wraps an actual value allowing assertions to be made on it: +// +// ExpectWithOffset(1, "foo").To(Equal("foo")) +// +// Unlike `Expect` and `Ω`, `ExpectWithOffset` takes an additional integer argument +// that is used to modify the call-stack offset when computing line numbers. It is +// the same as `Expect(...).WithOffset`. +// +// This is most useful in helper functions that make assertions. If you want Gomega's +// error message to refer to the calling line in the test (as opposed to the line in the helper function) +// set the first argument of `ExpectWithOffset` appropriately. +func ExpectWithOffset(offset int, actual any, extra ...any) Assertion { + ensureDefaultGomegaIsConfigured() + return Default.ExpectWithOffset(offset, actual, extra...) +} + +/* +Eventually enables making assertions on asynchronous behavior. + +Eventually checks that an assertion *eventually* passes. Eventually blocks when called and attempts an assertion periodically until it passes or a timeout occurs. Both the timeout and polling interval are configurable as optional arguments. +The first optional argument is the timeout (which defaults to 1s), the second is the polling interval (which defaults to 10ms). Both intervals can be specified as time.Duration, parsable duration strings or floats/integers (in which case they are interpreted as seconds). In addition an optional context.Context can be passed in - Eventually will keep trying until either the timeout expires or the context is cancelled, whichever comes first. + +Eventually works with any Gomega compatible matcher and supports making assertions against three categories of actual value: + +**Category 1: Making Eventually assertions on values** + +There are several examples of values that can change over time. These can be passed in to Eventually and will be passed to the matcher repeatedly until a match occurs. For example: + + c := make(chan bool) + go DoStuff(c) + Eventually(c, "50ms").Should(BeClosed()) + +will poll the channel repeatedly until it is closed. In this example `Eventually` will block until either the specified timeout of 50ms has elapsed or the channel is closed, whichever comes first. + +Several Gomega libraries allow you to use Eventually in this way. For example, the gomega/gexec package allows you to block until a *gexec.Session exits successfully via: + + Eventually(session).Should(gexec.Exit(0)) + +And the gomega/gbytes package allows you to monitor a streaming *gbytes.Buffer until a given string is seen: + + Eventually(buffer).Should(gbytes.Say("hello there")) + +In these examples, both `session` and `buffer` are designed to be thread-safe when polled by the `Exit` and `Say` matchers. This is not true in general of most raw values, so while it is tempting to do something like: + + // THIS IS NOT THREAD-SAFE + var s *string + go mutateStringEventually(s) + Eventually(s).Should(Equal("I've changed")) + +this will trigger Go's race detector as the goroutine polling via Eventually will race over the value of s with the goroutine mutating the string. For cases like this you can use channels or introduce your own locking around s by passing Eventually a function. + +**Category 2: Make Eventually assertions on functions** + +Eventually can be passed functions that **return at least one value**. When configured this way, Eventually will poll the function repeatedly and pass the first returned value to the matcher. + +For example: + + Eventually(func() int { + return client.FetchCount() + }).Should(BeNumerically(">=", 17)) + + will repeatedly poll client.FetchCount until the BeNumerically matcher is satisfied. (Note that this example could have been written as Eventually(client.FetchCount).Should(BeNumerically(">=", 17))) + +If multiple values are returned by the function, Eventually will pass the first value to the matcher and require that all others are zero-valued. This allows you to pass Eventually a function that returns a value and an error - a common pattern in Go. + +For example, consider a method that returns a value and an error: + + func FetchFromDB() (string, error) + +Then + + Eventually(FetchFromDB).Should(Equal("got it")) + +will pass only if and when the returned error is nil *and* the returned string satisfies the matcher. + +Eventually can also accept functions that take arguments, however you must provide those arguments using .WithArguments(). For example, consider a function that takes a user-id and makes a network request to fetch a full name: + + func FetchFullName(userId int) (string, error) + +You can poll this function like so: + + Eventually(FetchFullName).WithArguments(1138).Should(Equal("Wookie")) + +It is important to note that the function passed into Eventually is invoked *synchronously* when polled. Eventually does not (in fact, it cannot) kill the function if it takes longer to return than Eventually's configured timeout. A common practice here is to use a context. Here's an example that combines Ginkgo's spec timeout support with Eventually: + + It("fetches the correct count", func(ctx SpecContext) { + Eventually(ctx, func() int { + return client.FetchCount(ctx, "/users") + }).Should(BeNumerically(">=", 17)) + }, SpecTimeout(time.Second)) + +you an also use Eventually().WithContext(ctx) to pass in the context. Passed-in contexts play nicely with passed-in arguments as long as the context appears first. You can rewrite the above example as: + + It("fetches the correct count", func(ctx SpecContext) { + Eventually(client.FetchCount).WithContext(ctx).WithArguments("/users").Should(BeNumerically(">=", 17)) + }, SpecTimeout(time.Second)) + +Either way the context passed to Eventually is also passed to the underlying function. Now, when Ginkgo cancels the context both the FetchCount client and Gomega will be informed and can exit. + +By default, when a context is passed to Eventually *without* an explicit timeout, Gomega will rely solely on the context's cancellation to determine when to stop polling. If you want to specify a timeout in addition to the context you can do so using the .WithTimeout() method. For example: + + Eventually(client.FetchCount).WithContext(ctx).WithTimeout(10*time.Second).Should(BeNumerically(">=", 17)) + +now either the context cancellation or the timeout will cause Eventually to stop polling. + +If, instead, you would like to opt out of this behavior and have Gomega's default timeouts govern Eventuallys that take a context you can call: + + EnforceDefaultTimeoutsWhenUsingContexts() + +in the DSL (or on a Gomega instance). Now all calls to Eventually that take a context will fail if either the context is cancelled or the default timeout elapses. + +**Category 3: Making assertions _in_ the function passed into Eventually** + +When testing complex systems it can be valuable to assert that a _set_ of assertions passes Eventually. Eventually supports this by accepting functions that take a single Gomega argument and return zero or more values. + +Here's an example that makes some assertions and returns a value and error: + + Eventually(func(g Gomega) (Widget, error) { + ids, err := client.FetchIDs() + g.Expect(err).NotTo(HaveOccurred()) + g.Expect(ids).To(ContainElement(1138)) + return client.FetchWidget(1138) + }).Should(Equal(expectedWidget)) + +will pass only if all the assertions in the polled function pass and the return value satisfied the matcher. + +Eventually also supports a special case polling function that takes a single Gomega argument and returns no values. Eventually assumes such a function is making assertions and is designed to work with the Succeed matcher to validate that all assertions have passed. +For example: + + Eventually(func(g Gomega) { + model, err := client.Find(1138) + g.Expect(err).NotTo(HaveOccurred()) + g.Expect(model.Reticulate()).To(Succeed()) + g.Expect(model.IsReticulated()).To(BeTrue()) + g.Expect(model.Save()).To(Succeed()) + }).Should(Succeed()) + +will rerun the function until all assertions pass. + +You can also pass additional arguments to functions that take a Gomega. The only rule is that the Gomega argument must be first. If you also want to pass the context attached to Eventually you must ensure that is the second argument. For example: + + Eventually(func(g Gomega, ctx context.Context, path string, expected ...string){ + tok, err := client.GetToken(ctx) + g.Expect(err).NotTo(HaveOccurred()) + + elements, err := client.Fetch(ctx, tok, path) + g.Expect(err).NotTo(HaveOccurred()) + g.Expect(elements).To(ConsistOf(expected)) + }).WithContext(ctx).WithArguments("/names", "Joe", "Jane", "Sam").Should(Succeed()) + +You can ensure that you get a number of consecutive successful tries before succeeding using `MustPassRepeatedly(int)`. For Example: + + int count := 0 + Eventually(func() bool { + count++ + return count > 2 + }).MustPassRepeatedly(2).Should(BeTrue()) + // Because we had to wait for 2 calls that returned true + Expect(count).To(Equal(3)) + +Finally, in addition to passing timeouts and a context to Eventually you can be more explicit with Eventually's chaining configuration methods: + + Eventually(..., "10s", "2s", ctx).Should(...) + +is equivalent to + + Eventually(...).WithTimeout(10*time.Second).WithPolling(2*time.Second).WithContext(ctx).Should(...) +*/ +func Eventually(actualOrCtx any, args ...any) AsyncAssertion { + ensureDefaultGomegaIsConfigured() + return Default.Eventually(actualOrCtx, args...) +} + +// EventuallyWithOffset operates like Eventually but takes an additional +// initial argument to indicate an offset in the call stack. This is useful when building helper +// functions that contain matchers. To learn more, read about `ExpectWithOffset`. +// +// `EventuallyWithOffset` is the same as `Eventually(...).WithOffset`. +// +// `EventuallyWithOffset` specifying a timeout interval (and an optional polling interval) are +// the same as `Eventually(...).WithOffset(...).WithTimeout` or +// `Eventually(...).WithOffset(...).WithTimeout(...).WithPolling`. +func EventuallyWithOffset(offset int, actualOrCtx any, args ...any) AsyncAssertion { + ensureDefaultGomegaIsConfigured() + return Default.EventuallyWithOffset(offset, actualOrCtx, args...) +} + +/* +Consistently, like Eventually, enables making assertions on asynchronous behavior. + +Consistently blocks when called for a specified duration. During that duration Consistently repeatedly polls its matcher and ensures that it is satisfied. If the matcher is consistently satisfied, then Consistently will pass. Otherwise Consistently will fail. + +Both the total waiting duration and the polling interval are configurable as optional arguments. The first optional argument is the duration that Consistently will run for (defaults to 100ms), and the second argument is the polling interval (defaults to 10ms). As with Eventually, these intervals can be passed in as time.Duration, parsable duration strings or an integer or float number of seconds. You can also pass in an optional context.Context - Consistently will exit early (with a failure) if the context is cancelled before the waiting duration expires. + +Consistently accepts the same three categories of actual as Eventually, check the Eventually docs to learn more. + +Consistently is useful in cases where you want to assert that something *does not happen* for a period of time. For example, you may want to assert that a goroutine does *not* send data down a channel. In this case you could write: + + Consistently(channel, "200ms").ShouldNot(Receive()) + +This will block for 200 milliseconds and repeatedly check the channel and ensure nothing has been received. +*/ +func Consistently(actualOrCtx any, args ...any) AsyncAssertion { + ensureDefaultGomegaIsConfigured() + return Default.Consistently(actualOrCtx, args...) +} + +// ConsistentlyWithOffset operates like Consistently but takes an additional +// initial argument to indicate an offset in the call stack. This is useful when building helper +// functions that contain matchers. To learn more, read about `ExpectWithOffset`. +// +// `ConsistentlyWithOffset` is the same as `Consistently(...).WithOffset` and +// optional `WithTimeout` and `WithPolling`. +func ConsistentlyWithOffset(offset int, actualOrCtx any, args ...any) AsyncAssertion { + ensureDefaultGomegaIsConfigured() + return Default.ConsistentlyWithOffset(offset, actualOrCtx, args...) +} + +/* +StopTrying can be used to signal to Eventually and Consistently that they should abort and stop trying. This always results in a failure of the assertion - and the failure message is the content of the StopTrying signal. + +You can send the StopTrying signal by either returning StopTrying("message") as an error from your passed-in function _or_ by calling StopTrying("message").Now() to trigger a panic and end execution. + +You can also wrap StopTrying around an error with `StopTrying("message").Wrap(err)` and can attach additional objects via `StopTrying("message").Attach("description", object). When rendered, the signal will include the wrapped error and any attached objects rendered using Gomega's default formatting. + +Here are a couple of examples. This is how you might use StopTrying() as an error to signal that Eventually should stop: + + playerIndex, numPlayers := 0, 11 + Eventually(func() (string, error) { + if playerIndex == numPlayers { + return "", StopTrying("no more players left") + } + name := client.FetchPlayer(playerIndex) + playerIndex += 1 + return name, nil + }).Should(Equal("Patrick Mahomes")) + +And here's an example where `StopTrying().Now()` is called to halt execution immediately: + + Eventually(func() []string { + names, err := client.FetchAllPlayers() + if err == client.IRRECOVERABLE_ERROR { + StopTrying("Irrecoverable error occurred").Wrap(err).Now() + } + return names + }).Should(ContainElement("Patrick Mahomes")) +*/ +var StopTrying = internal.StopTrying + +/* +TryAgainAfter() allows you to adjust the polling interval for the _next_ iteration of `Eventually` or `Consistently`. Like `StopTrying` you can either return `TryAgainAfter` as an error or trigger it immedieately with `.Now()` + +When `TryAgainAfter(` is triggered `Eventually` and `Consistently` will wait for that duration. If a timeout occurs before the next poll is triggered both `Eventually` and `Consistently` will always fail with the content of the TryAgainAfter message. As with StopTrying you can `.Wrap()` and error and `.Attach()` additional objects to `TryAgainAfter`. +*/ +var TryAgainAfter = internal.TryAgainAfter + +/* +PollingSignalError is the error returned by StopTrying() and TryAgainAfter() +*/ +type PollingSignalError = internal.PollingSignalError + +// SetDefaultEventuallyTimeout sets the default timeout duration for Eventually. Eventually will repeatedly poll your condition until it succeeds, or until this timeout elapses. +func SetDefaultEventuallyTimeout(t time.Duration) { + Default.SetDefaultEventuallyTimeout(t) +} + +// SetDefaultEventuallyPollingInterval sets the default polling interval for Eventually. +func SetDefaultEventuallyPollingInterval(t time.Duration) { + Default.SetDefaultEventuallyPollingInterval(t) +} + +// SetDefaultConsistentlyDuration sets the default duration for Consistently. Consistently will verify that your condition is satisfied for this long. +func SetDefaultConsistentlyDuration(t time.Duration) { + Default.SetDefaultConsistentlyDuration(t) +} + +// SetDefaultConsistentlyPollingInterval sets the default polling interval for Consistently. +func SetDefaultConsistentlyPollingInterval(t time.Duration) { + Default.SetDefaultConsistentlyPollingInterval(t) +} + +// EnforceDefaultTimeoutsWhenUsingContexts forces `Eventually` to apply a default timeout even when a context is provided. +func EnforceDefaultTimeoutsWhenUsingContexts() { + Default.EnforceDefaultTimeoutsWhenUsingContexts() +} + +// DisableDefaultTimeoutsWhenUsingContext disables the default timeout when a context is provided to `Eventually`. +func DisableDefaultTimeoutsWhenUsingContext() { + Default.DisableDefaultTimeoutsWhenUsingContext() +} + +// AsyncAssertion is returned by Eventually and Consistently and polls the actual value passed into Eventually against +// the matcher passed to the Should and ShouldNot methods. +// +// Both Should and ShouldNot take a variadic optionalDescription argument. +// This argument allows you to make your failure messages more descriptive. +// If a single argument of type `func() string` is passed, this function will be lazily evaluated if a failure occurs +// and the returned string is used to annotate the failure message. +// Otherwise, this argument is passed on to fmt.Sprintf() and then used to annotate the failure message. +// +// Both Should and ShouldNot return a boolean that is true if the assertion passed and false if it failed. +// +// Example: +// +// Eventually(myChannel).Should(Receive(), "Something should have come down the pipe.") +// Consistently(myChannel).ShouldNot(Receive(), func() string { return "Nothing should have come down the pipe." }) +type AsyncAssertion = types.AsyncAssertion + +// GomegaAsyncAssertion is deprecated in favor of AsyncAssertion, which does not stutter. +type GomegaAsyncAssertion = types.AsyncAssertion + +// Assertion is returned by Ω and Expect and compares the actual value to the matcher +// passed to the Should/ShouldNot and To/ToNot/NotTo methods. +// +// Typically Should/ShouldNot are used with Ω and To/ToNot/NotTo are used with Expect +// though this is not enforced. +// +// All methods take a variadic optionalDescription argument. +// This argument allows you to make your failure messages more descriptive. +// If a single argument of type `func() string` is passed, this function will be lazily evaluated if a failure occurs +// and the returned string is used to annotate the failure message. +// Otherwise, this argument is passed on to fmt.Sprintf() and then used to annotate the failure message. +// +// All methods return a bool that is true if the assertion passed and false if it failed. +// +// Example: +// +// Ω(farm.HasCow()).Should(BeTrue(), "Farm %v should have a cow", farm) +type Assertion = types.Assertion + +// GomegaAssertion is deprecated in favor of Assertion, which does not stutter. +type GomegaAssertion = types.Assertion + +// OmegaMatcher is deprecated in favor of the better-named and better-organized types.GomegaMatcher but sticks around to support existing code that uses it +type OmegaMatcher = types.GomegaMatcher diff --git a/tests/vendor/github.com/onsi/gomega/internal/assertion.go b/tests/vendor/github.com/onsi/gomega/internal/assertion.go new file mode 100644 index 000000000..cc846e7ce --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/internal/assertion.go @@ -0,0 +1,161 @@ +package internal + +import ( + "fmt" + "reflect" + + "github.com/onsi/gomega/format" + "github.com/onsi/gomega/types" +) + +type Assertion struct { + actuals []any // actual value plus all extra values + actualIndex int // value to pass to the matcher + vet vetinari // the vet to call before calling Gomega matcher + offset int + g *Gomega +} + +// ...obligatory discworld reference, as "vetineer" doesn't sound ... quite right. +type vetinari func(assertion *Assertion, optionalDescription ...any) bool + +func NewAssertion(actualInput any, g *Gomega, offset int, extra ...any) *Assertion { + return &Assertion{ + actuals: append([]any{actualInput}, extra...), + actualIndex: 0, + vet: (*Assertion).vetActuals, + offset: offset, + g: g, + } +} + +func (assertion *Assertion) WithOffset(offset int) types.Assertion { + assertion.offset = offset + return assertion +} + +func (assertion *Assertion) Error() types.Assertion { + return &Assertion{ + actuals: assertion.actuals, + actualIndex: len(assertion.actuals) - 1, + vet: (*Assertion).vetError, + offset: assertion.offset, + g: assertion.g, + } +} + +func (assertion *Assertion) Should(matcher types.GomegaMatcher, optionalDescription ...any) bool { + assertion.g.THelper() + vetOptionalDescription("Assertion", optionalDescription...) + return assertion.vet(assertion, optionalDescription...) && assertion.match(matcher, true, optionalDescription...) +} + +func (assertion *Assertion) ShouldNot(matcher types.GomegaMatcher, optionalDescription ...any) bool { + assertion.g.THelper() + vetOptionalDescription("Assertion", optionalDescription...) + return assertion.vet(assertion, optionalDescription...) && assertion.match(matcher, false, optionalDescription...) +} + +func (assertion *Assertion) To(matcher types.GomegaMatcher, optionalDescription ...any) bool { + assertion.g.THelper() + vetOptionalDescription("Assertion", optionalDescription...) + return assertion.vet(assertion, optionalDescription...) && assertion.match(matcher, true, optionalDescription...) +} + +func (assertion *Assertion) ToNot(matcher types.GomegaMatcher, optionalDescription ...any) bool { + assertion.g.THelper() + vetOptionalDescription("Assertion", optionalDescription...) + return assertion.vet(assertion, optionalDescription...) && assertion.match(matcher, false, optionalDescription...) +} + +func (assertion *Assertion) NotTo(matcher types.GomegaMatcher, optionalDescription ...any) bool { + assertion.g.THelper() + vetOptionalDescription("Assertion", optionalDescription...) + return assertion.vet(assertion, optionalDescription...) && assertion.match(matcher, false, optionalDescription...) +} + +func (assertion *Assertion) buildDescription(optionalDescription ...any) string { + switch len(optionalDescription) { + case 0: + return "" + case 1: + if describe, ok := optionalDescription[0].(func() string); ok { + return describe() + "\n" + } + } + return fmt.Sprintf(optionalDescription[0].(string), optionalDescription[1:]...) + "\n" +} + +func (assertion *Assertion) match(matcher types.GomegaMatcher, desiredMatch bool, optionalDescription ...any) bool { + actualInput := assertion.actuals[assertion.actualIndex] + matches, err := matcher.Match(actualInput) + assertion.g.THelper() + if err != nil { + description := assertion.buildDescription(optionalDescription...) + assertion.g.Fail(description+err.Error(), 2+assertion.offset) + return false + } + if matches != desiredMatch { + var message string + if desiredMatch { + message = matcher.FailureMessage(actualInput) + } else { + message = matcher.NegatedFailureMessage(actualInput) + } + description := assertion.buildDescription(optionalDescription...) + assertion.g.Fail(description+message, 2+assertion.offset) + return false + } + + return true +} + +// vetActuals vets the actual values, with the (optional) exception of a +// specific value, such as the first value in case non-error assertions, or the +// last value in case of Error()-based assertions. +func (assertion *Assertion) vetActuals(optionalDescription ...any) bool { + success, message := vetActuals(assertion.actuals, assertion.actualIndex) + if success { + return true + } + + description := assertion.buildDescription(optionalDescription...) + assertion.g.THelper() + assertion.g.Fail(description+message, 2+assertion.offset) + return false +} + +// vetError vets the actual values, except for the final error value, in case +// the final error value is non-zero. Otherwise, it doesn't vet the actual +// values, as these are allowed to take on any values unless there is a non-zero +// error value. +func (assertion *Assertion) vetError(optionalDescription ...any) bool { + if err := assertion.actuals[assertion.actualIndex]; err != nil { + // Go error result idiom: all other actual values must be zero values. + return assertion.vetActuals(optionalDescription...) + } + return true +} + +// vetActuals vets a slice of actual values, optionally skipping a particular +// value slice element, such as the first or last value slice element. +func vetActuals(actuals []any, skipIndex int) (bool, string) { + for i, actual := range actuals { + if i == skipIndex { + continue + } + if actual != nil { + zeroValue := reflect.Zero(reflect.TypeOf(actual)).Interface() + if !reflect.DeepEqual(zeroValue, actual) { + var message string + if err, ok := actual.(error); ok { + message = fmt.Sprintf("Unexpected error: %s\n%s", err, format.Object(err, 1)) + } else { + message = fmt.Sprintf("Unexpected non-nil/non-zero argument at index %d:\n\t<%T>: %#v", i, actual, actual) + } + return false, message + } + } + } + return true, "" +} diff --git a/tests/vendor/github.com/onsi/gomega/internal/async_assertion.go b/tests/vendor/github.com/onsi/gomega/internal/async_assertion.go new file mode 100644 index 000000000..a3a646e4a --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/internal/async_assertion.go @@ -0,0 +1,596 @@ +package internal + +import ( + "context" + "errors" + "fmt" + "reflect" + "runtime" + "sync" + "time" + + "github.com/onsi/gomega/format" + "github.com/onsi/gomega/types" +) + +var errInterface = reflect.TypeOf((*error)(nil)).Elem() +var gomegaType = reflect.TypeOf((*types.Gomega)(nil)).Elem() +var contextType = reflect.TypeOf(new(context.Context)).Elem() + +type formattedGomegaError interface { + FormattedGomegaError() string +} + +type asyncPolledActualError struct { + message string +} + +func (err *asyncPolledActualError) Error() string { + return err.message +} + +func (err *asyncPolledActualError) FormattedGomegaError() string { + return err.message +} + +type contextWithAttachProgressReporter interface { + AttachProgressReporter(func() string) func() +} + +type asyncGomegaHaltExecutionError struct{} + +func (a asyncGomegaHaltExecutionError) GinkgoRecoverShouldIgnoreThisPanic() {} +func (a asyncGomegaHaltExecutionError) Error() string { + return `An assertion has failed in a goroutine. You should call + + defer GinkgoRecover() + +at the top of the goroutine that caused this panic. This will allow Ginkgo and Gomega to correctly capture and manage this panic.` +} + +type AsyncAssertionType uint + +const ( + AsyncAssertionTypeEventually AsyncAssertionType = iota + AsyncAssertionTypeConsistently +) + +func (at AsyncAssertionType) String() string { + switch at { + case AsyncAssertionTypeEventually: + return "Eventually" + case AsyncAssertionTypeConsistently: + return "Consistently" + } + return "INVALID ASYNC ASSERTION TYPE" +} + +type AsyncAssertion struct { + asyncType AsyncAssertionType + + actualIsFunc bool + actual any + argsToForward []any + + timeoutInterval time.Duration + pollingInterval time.Duration + mustPassRepeatedly int + ctx context.Context + offset int + g *Gomega +} + +func NewAsyncAssertion(asyncType AsyncAssertionType, actualInput any, g *Gomega, timeoutInterval time.Duration, pollingInterval time.Duration, mustPassRepeatedly int, ctx context.Context, offset int) *AsyncAssertion { + out := &AsyncAssertion{ + asyncType: asyncType, + timeoutInterval: timeoutInterval, + pollingInterval: pollingInterval, + mustPassRepeatedly: mustPassRepeatedly, + offset: offset, + ctx: ctx, + g: g, + } + + out.actual = actualInput + if actualInput != nil && reflect.TypeOf(actualInput).Kind() == reflect.Func { + out.actualIsFunc = true + } + + return out +} + +func (assertion *AsyncAssertion) WithOffset(offset int) types.AsyncAssertion { + assertion.offset = offset + return assertion +} + +func (assertion *AsyncAssertion) WithTimeout(interval time.Duration) types.AsyncAssertion { + assertion.timeoutInterval = interval + return assertion +} + +func (assertion *AsyncAssertion) WithPolling(interval time.Duration) types.AsyncAssertion { + assertion.pollingInterval = interval + return assertion +} + +func (assertion *AsyncAssertion) Within(timeout time.Duration) types.AsyncAssertion { + assertion.timeoutInterval = timeout + return assertion +} + +func (assertion *AsyncAssertion) ProbeEvery(interval time.Duration) types.AsyncAssertion { + assertion.pollingInterval = interval + return assertion +} + +func (assertion *AsyncAssertion) WithContext(ctx context.Context) types.AsyncAssertion { + assertion.ctx = ctx + return assertion +} + +func (assertion *AsyncAssertion) WithArguments(argsToForward ...any) types.AsyncAssertion { + assertion.argsToForward = argsToForward + return assertion +} + +func (assertion *AsyncAssertion) MustPassRepeatedly(count int) types.AsyncAssertion { + assertion.mustPassRepeatedly = count + return assertion +} + +func (assertion *AsyncAssertion) Should(matcher types.GomegaMatcher, optionalDescription ...any) bool { + assertion.g.THelper() + vetOptionalDescription("Asynchronous assertion", optionalDescription...) + return assertion.match(matcher, true, optionalDescription...) +} + +func (assertion *AsyncAssertion) To(matcher types.GomegaMatcher, optionalDescription ...any) bool { + return assertion.Should(matcher, optionalDescription...) +} + +func (assertion *AsyncAssertion) ShouldNot(matcher types.GomegaMatcher, optionalDescription ...any) bool { + assertion.g.THelper() + vetOptionalDescription("Asynchronous assertion", optionalDescription...) + return assertion.match(matcher, false, optionalDescription...) +} + +func (assertion *AsyncAssertion) ToNot(matcher types.GomegaMatcher, optionalDescription ...any) bool { + return assertion.ShouldNot(matcher, optionalDescription...) +} + +func (assertion *AsyncAssertion) NotTo(matcher types.GomegaMatcher, optionalDescription ...any) bool { + return assertion.ShouldNot(matcher, optionalDescription...) +} + +func (assertion *AsyncAssertion) buildDescription(optionalDescription ...any) string { + switch len(optionalDescription) { + case 0: + return "" + case 1: + if describe, ok := optionalDescription[0].(func() string); ok { + return describe() + "\n" + } + } + return fmt.Sprintf(optionalDescription[0].(string), optionalDescription[1:]...) + "\n" +} + +func (assertion *AsyncAssertion) processReturnValues(values []reflect.Value) (any, error) { + if len(values) == 0 { + return nil, &asyncPolledActualError{ + message: fmt.Sprintf("The function passed to %s did not return any values", assertion.asyncType), + } + } + + actual := values[0].Interface() + if _, ok := AsPollingSignalError(actual); ok { + return actual, actual.(error) + } + + var err error + for i, extraValue := range values[1:] { + extra := extraValue.Interface() + if extra == nil { + continue + } + if _, ok := AsPollingSignalError(extra); ok { + return actual, extra.(error) + } + extraType := reflect.TypeOf(extra) + zero := reflect.Zero(extraType).Interface() + if reflect.DeepEqual(extra, zero) { + continue + } + if i == len(values)-2 && extraType.Implements(errInterface) { + err = extra.(error) + } + if err == nil { + err = &asyncPolledActualError{ + message: fmt.Sprintf("The function passed to %s had an unexpected non-nil/non-zero return value at index %d:\n%s", assertion.asyncType, i+1, format.Object(extra, 1)), + } + } + } + + return actual, err +} + +func (assertion *AsyncAssertion) invalidFunctionError(t reflect.Type) error { + return fmt.Errorf(`The function passed to %s had an invalid signature of %s. Functions passed to %s must either: + + (a) have return values or + (b) take a Gomega interface as their first argument and use that Gomega instance to make assertions. + +You can learn more at https://onsi.github.io/gomega/#eventually +`, assertion.asyncType, t, assertion.asyncType) +} + +func (assertion *AsyncAssertion) noConfiguredContextForFunctionError() error { + return fmt.Errorf(`The function passed to %s requested a context.Context, but no context has been provided. Please pass one in using %s().WithContext(). + +You can learn more at https://onsi.github.io/gomega/#eventually +`, assertion.asyncType, assertion.asyncType) +} + +func (assertion *AsyncAssertion) argumentMismatchError(t reflect.Type, numProvided int) error { + have := "have" + if numProvided == 1 { + have = "has" + } + return fmt.Errorf(`The function passed to %s has signature %s takes %d arguments but %d %s been provided. Please use %s().WithArguments() to pass the correct set of arguments. + +You can learn more at https://onsi.github.io/gomega/#eventually +`, assertion.asyncType, t, t.NumIn(), numProvided, have, assertion.asyncType) +} + +func (assertion *AsyncAssertion) invalidMustPassRepeatedlyError(reason string) error { + return fmt.Errorf(`Invalid use of MustPassRepeatedly with %s %s + +You can learn more at https://onsi.github.io/gomega/#eventually +`, assertion.asyncType, reason) +} + +func (assertion *AsyncAssertion) buildActualPoller() (func() (any, error), error) { + if !assertion.actualIsFunc { + return func() (any, error) { return assertion.actual, nil }, nil + } + actualValue := reflect.ValueOf(assertion.actual) + actualType := reflect.TypeOf(assertion.actual) + numIn, numOut, isVariadic := actualType.NumIn(), actualType.NumOut(), actualType.IsVariadic() + + if numIn == 0 && numOut == 0 { + return nil, assertion.invalidFunctionError(actualType) + } + takesGomega, takesContext := false, false + if numIn > 0 { + takesGomega, takesContext = actualType.In(0).Implements(gomegaType), actualType.In(0).Implements(contextType) + } + if takesGomega && numIn > 1 && actualType.In(1).Implements(contextType) { + takesContext = true + } + if takesContext && len(assertion.argsToForward) > 0 && reflect.TypeOf(assertion.argsToForward[0]).Implements(contextType) { + takesContext = false + } + if !takesGomega && numOut == 0 { + return nil, assertion.invalidFunctionError(actualType) + } + if takesContext && assertion.ctx == nil { + return nil, assertion.noConfiguredContextForFunctionError() + } + + var assertionFailure error + inValues := []reflect.Value{} + if takesGomega { + inValues = append(inValues, reflect.ValueOf(NewGomega(assertion.g.DurationBundle).ConfigureWithFailHandler(func(message string, callerSkip ...int) { + skip := 0 + if len(callerSkip) > 0 { + skip = callerSkip[0] + } + _, file, line, _ := runtime.Caller(skip + 1) + assertionFailure = &asyncPolledActualError{ + message: fmt.Sprintf("The function passed to %s failed at %s:%d with:\n%s", assertion.asyncType, file, line, message), + } + // we throw an asyncGomegaHaltExecutionError so that defer GinkgoRecover() can catch this error if the user makes an assertion in a goroutine + panic(asyncGomegaHaltExecutionError{}) + }))) + } + if takesContext { + inValues = append(inValues, reflect.ValueOf(assertion.ctx)) + } + for _, arg := range assertion.argsToForward { + inValues = append(inValues, reflect.ValueOf(arg)) + } + + if !isVariadic && numIn != len(inValues) { + return nil, assertion.argumentMismatchError(actualType, len(inValues)) + } else if isVariadic && len(inValues) < numIn-1 { + return nil, assertion.argumentMismatchError(actualType, len(inValues)) + } + + if assertion.mustPassRepeatedly != 1 && assertion.asyncType != AsyncAssertionTypeEventually { + return nil, assertion.invalidMustPassRepeatedlyError("it can only be used with Eventually") + } + if assertion.mustPassRepeatedly < 1 { + return nil, assertion.invalidMustPassRepeatedlyError("parameter can't be < 1") + } + + return func() (actual any, err error) { + var values []reflect.Value + assertionFailure = nil + defer func() { + if numOut == 0 && takesGomega { + actual = assertionFailure + } else { + actual, err = assertion.processReturnValues(values) + _, isAsyncError := AsPollingSignalError(err) + if assertionFailure != nil && !isAsyncError { + err = assertionFailure + } + } + if e := recover(); e != nil { + if _, isAsyncError := AsPollingSignalError(e); isAsyncError { + err = e.(error) + } else if assertionFailure == nil { + panic(e) + } + } + }() + values = actualValue.Call(inValues) + return + }, nil +} + +func (assertion *AsyncAssertion) afterTimeout() <-chan time.Time { + if assertion.timeoutInterval >= 0 { + return time.After(assertion.timeoutInterval) + } + + if assertion.asyncType == AsyncAssertionTypeConsistently { + return time.After(assertion.g.DurationBundle.ConsistentlyDuration) + } else { + if assertion.ctx == nil || assertion.g.DurationBundle.EnforceDefaultTimeoutsWhenUsingContexts { + return time.After(assertion.g.DurationBundle.EventuallyTimeout) + } else { + return nil + } + } +} + +func (assertion *AsyncAssertion) afterPolling() <-chan time.Time { + if assertion.pollingInterval >= 0 { + return time.After(assertion.pollingInterval) + } + if assertion.asyncType == AsyncAssertionTypeConsistently { + return time.After(assertion.g.DurationBundle.ConsistentlyPollingInterval) + } else { + return time.After(assertion.g.DurationBundle.EventuallyPollingInterval) + } +} + +func (assertion *AsyncAssertion) matcherSaysStopTrying(matcher types.GomegaMatcher, value any) bool { + if assertion.actualIsFunc || types.MatchMayChangeInTheFuture(matcher, value) { + return false + } + return true +} + +func (assertion *AsyncAssertion) pollMatcher(matcher types.GomegaMatcher, value any) (matches bool, err error) { + defer func() { + if e := recover(); e != nil { + if _, isAsyncError := AsPollingSignalError(e); isAsyncError { + err = e.(error) + } else { + panic(e) + } + } + }() + + matches, err = matcher.Match(value) + + return +} + +func (assertion *AsyncAssertion) match(matcher types.GomegaMatcher, desiredMatch bool, optionalDescription ...any) bool { + timer := time.Now() + timeout := assertion.afterTimeout() + lock := sync.Mutex{} + + var matches, hasLastValidActual bool + var actual, lastValidActual any + var actualErr, matcherErr error + var oracleMatcherSaysStop bool + + assertion.g.THelper() + + pollActual, buildActualPollerErr := assertion.buildActualPoller() + if buildActualPollerErr != nil { + assertion.g.Fail(buildActualPollerErr.Error(), 2+assertion.offset) + return false + } + + actual, actualErr = pollActual() + if actualErr == nil { + lastValidActual = actual + hasLastValidActual = true + oracleMatcherSaysStop = assertion.matcherSaysStopTrying(matcher, actual) + matches, matcherErr = assertion.pollMatcher(matcher, actual) + } + + renderError := func(preamble string, err error) string { + message := "" + if pollingSignalErr, ok := AsPollingSignalError(err); ok { + message = err.Error() + for _, attachment := range pollingSignalErr.Attachments { + message += fmt.Sprintf("\n%s:\n", attachment.Description) + message += format.Object(attachment.Object, 1) + } + } else { + message = preamble + "\n" + format.Object(err, 1) + } + return message + } + + messageGenerator := func() string { + // can be called out of band by Ginkgo if the user requests a progress report + lock.Lock() + defer lock.Unlock() + message := "" + + if actualErr == nil { + if matcherErr == nil { + if desiredMatch != matches { + if desiredMatch { + message += matcher.FailureMessage(actual) + } else { + message += matcher.NegatedFailureMessage(actual) + } + } else { + if assertion.asyncType == AsyncAssertionTypeConsistently { + message += "There is no failure as the matcher passed to Consistently has not yet failed" + } else { + message += "There is no failure as the matcher passed to Eventually succeeded on its most recent iteration" + } + } + } else { + var fgErr formattedGomegaError + if errors.As(actualErr, &fgErr) { + message += fgErr.FormattedGomegaError() + "\n" + } else { + message += renderError(fmt.Sprintf("The matcher passed to %s returned the following error:", assertion.asyncType), matcherErr) + } + } + } else { + var fgErr formattedGomegaError + if errors.As(actualErr, &fgErr) { + message += fgErr.FormattedGomegaError() + "\n" + } else { + message += renderError(fmt.Sprintf("The function passed to %s returned the following error:", assertion.asyncType), actualErr) + } + if hasLastValidActual { + message += fmt.Sprintf("\nAt one point, however, the function did return successfully.\nYet, %s failed because", assertion.asyncType) + _, e := matcher.Match(lastValidActual) + if e != nil { + message += renderError(" the matcher returned the following error:", e) + } else { + message += " the matcher was not satisfied:\n" + if desiredMatch { + message += matcher.FailureMessage(lastValidActual) + } else { + message += matcher.NegatedFailureMessage(lastValidActual) + } + } + } + } + + description := assertion.buildDescription(optionalDescription...) + return fmt.Sprintf("%s%s", description, message) + } + + fail := func(preamble string) { + assertion.g.THelper() + assertion.g.Fail(fmt.Sprintf("%s after %.3fs.\n%s", preamble, time.Since(timer).Seconds(), messageGenerator()), 3+assertion.offset) + } + + var contextDone <-chan struct{} + if assertion.ctx != nil { + contextDone = assertion.ctx.Done() + if v, ok := assertion.ctx.Value("GINKGO_SPEC_CONTEXT").(contextWithAttachProgressReporter); ok { + detach := v.AttachProgressReporter(messageGenerator) + defer detach() + } + } + + // Used to count the number of times in a row a step passed + passedRepeatedlyCount := 0 + for { + var nextPoll <-chan time.Time = nil + var isTryAgainAfterError = false + + for _, err := range []error{actualErr, matcherErr} { + if pollingSignalErr, ok := AsPollingSignalError(err); ok { + if pollingSignalErr.IsStopTrying() { + if pollingSignalErr.IsSuccessful() { + if assertion.asyncType == AsyncAssertionTypeEventually { + fail("Told to stop trying (and ignoring call to Successfully(), as it is only relevant with Consistently)") + } else { + return true // early escape hatch for Consistently + } + } else { + fail("Told to stop trying") + } + return false + } + if pollingSignalErr.IsTryAgainAfter() { + nextPoll = time.After(pollingSignalErr.TryAgainDuration()) + isTryAgainAfterError = true + } + } + } + + if actualErr == nil && matcherErr == nil && matches == desiredMatch { + if assertion.asyncType == AsyncAssertionTypeEventually { + passedRepeatedlyCount += 1 + if passedRepeatedlyCount == assertion.mustPassRepeatedly { + return true + } + } + } else if !isTryAgainAfterError { + if assertion.asyncType == AsyncAssertionTypeConsistently { + fail("Failed") + return false + } + // Reset the consecutive pass count + passedRepeatedlyCount = 0 + } + + if oracleMatcherSaysStop { + if assertion.asyncType == AsyncAssertionTypeEventually { + fail("No future change is possible. Bailing out early") + return false + } else { + return true + } + } + + if nextPoll == nil { + nextPoll = assertion.afterPolling() + } + + select { + case <-nextPoll: + a, e := pollActual() + lock.Lock() + actual, actualErr = a, e + lock.Unlock() + if actualErr == nil { + lock.Lock() + lastValidActual = actual + hasLastValidActual = true + lock.Unlock() + oracleMatcherSaysStop = assertion.matcherSaysStopTrying(matcher, actual) + m, e := assertion.pollMatcher(matcher, actual) + lock.Lock() + matches, matcherErr = m, e + lock.Unlock() + } + case <-contextDone: + err := context.Cause(assertion.ctx) + if err != nil && err != context.Canceled { + fail(fmt.Sprintf("Context was cancelled (cause: %s)", err)) + } else { + fail("Context was cancelled") + } + return false + case <-timeout: + if assertion.asyncType == AsyncAssertionTypeEventually { + fail("Timed out") + return false + } else { + if isTryAgainAfterError { + fail("Timed out while waiting on TryAgainAfter") + return false + } + return true + } + } + } +} diff --git a/tests/vendor/github.com/onsi/gomega/internal/duration_bundle.go b/tests/vendor/github.com/onsi/gomega/internal/duration_bundle.go new file mode 100644 index 000000000..1019deb88 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/internal/duration_bundle.go @@ -0,0 +1,76 @@ +package internal + +import ( + "fmt" + "os" + "reflect" + "time" +) + +type DurationBundle struct { + EventuallyTimeout time.Duration + EventuallyPollingInterval time.Duration + ConsistentlyDuration time.Duration + ConsistentlyPollingInterval time.Duration + EnforceDefaultTimeoutsWhenUsingContexts bool +} + +const ( + EventuallyTimeoutEnvVarName = "GOMEGA_DEFAULT_EVENTUALLY_TIMEOUT" + EventuallyPollingIntervalEnvVarName = "GOMEGA_DEFAULT_EVENTUALLY_POLLING_INTERVAL" + + ConsistentlyDurationEnvVarName = "GOMEGA_DEFAULT_CONSISTENTLY_DURATION" + ConsistentlyPollingIntervalEnvVarName = "GOMEGA_DEFAULT_CONSISTENTLY_POLLING_INTERVAL" + + EnforceDefaultTimeoutsWhenUsingContextsEnvVarName = "GOMEGA_ENFORCE_DEFAULT_TIMEOUTS_WHEN_USING_CONTEXTS" +) + +func FetchDefaultDurationBundle() DurationBundle { + _, EnforceDefaultTimeoutsWhenUsingContexts := os.LookupEnv(EnforceDefaultTimeoutsWhenUsingContextsEnvVarName) + return DurationBundle{ + EventuallyTimeout: durationFromEnv(EventuallyTimeoutEnvVarName, time.Second), + EventuallyPollingInterval: durationFromEnv(EventuallyPollingIntervalEnvVarName, 10*time.Millisecond), + + ConsistentlyDuration: durationFromEnv(ConsistentlyDurationEnvVarName, 100*time.Millisecond), + ConsistentlyPollingInterval: durationFromEnv(ConsistentlyPollingIntervalEnvVarName, 10*time.Millisecond), + EnforceDefaultTimeoutsWhenUsingContexts: EnforceDefaultTimeoutsWhenUsingContexts, + } +} + +func durationFromEnv(key string, defaultDuration time.Duration) time.Duration { + value := os.Getenv(key) + if value == "" { + return defaultDuration + } + duration, err := time.ParseDuration(value) + if err != nil { + panic(fmt.Sprintf("Expected a duration when using %s! Parse error %v", key, err)) + } + return duration +} + +func toDuration(input any) (time.Duration, error) { + duration, ok := input.(time.Duration) + if ok { + return duration, nil + } + + value := reflect.ValueOf(input) + kind := reflect.TypeOf(input).Kind() + + if reflect.Int <= kind && kind <= reflect.Int64 { + return time.Duration(value.Int()) * time.Second, nil + } else if reflect.Uint <= kind && kind <= reflect.Uint64 { + return time.Duration(value.Uint()) * time.Second, nil + } else if reflect.Float32 <= kind && kind <= reflect.Float64 { + return time.Duration(value.Float() * float64(time.Second)), nil + } else if reflect.String == kind { + duration, err := time.ParseDuration(value.String()) + if err != nil { + return 0, fmt.Errorf("%#v is not a valid parsable duration string: %w", input, err) + } + return duration, nil + } + + return 0, fmt.Errorf("%#v is not a valid interval. Must be a time.Duration, a parsable duration string, or a number.", input) +} diff --git a/tests/vendor/github.com/onsi/gomega/internal/gomega.go b/tests/vendor/github.com/onsi/gomega/internal/gomega.go new file mode 100644 index 000000000..66dfe7d04 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/internal/gomega.go @@ -0,0 +1,137 @@ +package internal + +import ( + "context" + "time" + + "github.com/onsi/gomega/types" +) + +type Gomega struct { + Fail types.GomegaFailHandler + THelper func() + DurationBundle DurationBundle +} + +func NewGomega(bundle DurationBundle) *Gomega { + return &Gomega{ + Fail: nil, + THelper: nil, + DurationBundle: bundle, + } +} + +func (g *Gomega) IsConfigured() bool { + return g.Fail != nil && g.THelper != nil +} + +func (g *Gomega) ConfigureWithFailHandler(fail types.GomegaFailHandler) *Gomega { + g.Fail = fail + g.THelper = func() {} + return g +} + +func (g *Gomega) ConfigureWithT(t types.GomegaTestingT) *Gomega { + g.Fail = func(message string, _ ...int) { + t.Helper() + t.Fatalf("\n%s", message) + } + g.THelper = t.Helper + return g +} + +func (g *Gomega) Ω(actual any, extra ...any) types.Assertion { + return g.ExpectWithOffset(0, actual, extra...) +} + +func (g *Gomega) Expect(actual any, extra ...any) types.Assertion { + return g.ExpectWithOffset(0, actual, extra...) +} + +func (g *Gomega) ExpectWithOffset(offset int, actual any, extra ...any) types.Assertion { + return NewAssertion(actual, g, offset, extra...) +} + +func (g *Gomega) Eventually(actualOrCtx any, args ...any) types.AsyncAssertion { + return g.makeAsyncAssertion(AsyncAssertionTypeEventually, 0, actualOrCtx, args...) +} + +func (g *Gomega) EventuallyWithOffset(offset int, actualOrCtx any, args ...any) types.AsyncAssertion { + return g.makeAsyncAssertion(AsyncAssertionTypeEventually, offset, actualOrCtx, args...) +} + +func (g *Gomega) Consistently(actualOrCtx any, args ...any) types.AsyncAssertion { + return g.makeAsyncAssertion(AsyncAssertionTypeConsistently, 0, actualOrCtx, args...) +} + +func (g *Gomega) ConsistentlyWithOffset(offset int, actualOrCtx any, args ...any) types.AsyncAssertion { + return g.makeAsyncAssertion(AsyncAssertionTypeConsistently, offset, actualOrCtx, args...) +} + +func (g *Gomega) makeAsyncAssertion(asyncAssertionType AsyncAssertionType, offset int, actualOrCtx any, args ...any) types.AsyncAssertion { + baseOffset := 3 + timeoutInterval := -time.Duration(1) + pollingInterval := -time.Duration(1) + intervals := []any{} + var ctx context.Context + + actual := actualOrCtx + startingIndex := 0 + if _, isCtx := actualOrCtx.(context.Context); isCtx && len(args) > 0 { + // the first argument is a context, we should accept it as the context _only if_ it is **not** the only argument **and** the second argument is not a parseable duration + // this is due to an unfortunate ambiguity in early version of Gomega in which multi-type durations are allowed after the actual + if _, err := toDuration(args[0]); err != nil { + ctx = actualOrCtx.(context.Context) + actual = args[0] + startingIndex = 1 + } + } + + for _, arg := range args[startingIndex:] { + switch v := arg.(type) { + case context.Context: + ctx = v + default: + intervals = append(intervals, arg) + } + } + var err error + if len(intervals) > 0 { + timeoutInterval, err = toDuration(intervals[0]) + if err != nil { + g.Fail(err.Error(), offset+baseOffset) + } + } + if len(intervals) > 1 { + pollingInterval, err = toDuration(intervals[1]) + if err != nil { + g.Fail(err.Error(), offset+baseOffset) + } + } + + return NewAsyncAssertion(asyncAssertionType, actual, g, timeoutInterval, pollingInterval, 1, ctx, offset) +} + +func (g *Gomega) SetDefaultEventuallyTimeout(t time.Duration) { + g.DurationBundle.EventuallyTimeout = t +} + +func (g *Gomega) SetDefaultEventuallyPollingInterval(t time.Duration) { + g.DurationBundle.EventuallyPollingInterval = t +} + +func (g *Gomega) SetDefaultConsistentlyDuration(t time.Duration) { + g.DurationBundle.ConsistentlyDuration = t +} + +func (g *Gomega) SetDefaultConsistentlyPollingInterval(t time.Duration) { + g.DurationBundle.ConsistentlyPollingInterval = t +} + +func (g *Gomega) EnforceDefaultTimeoutsWhenUsingContexts() { + g.DurationBundle.EnforceDefaultTimeoutsWhenUsingContexts = true +} + +func (g *Gomega) DisableDefaultTimeoutsWhenUsingContext() { + g.DurationBundle.EnforceDefaultTimeoutsWhenUsingContexts = false +} diff --git a/tests/vendor/github.com/onsi/gomega/internal/gutil/post_ioutil.go b/tests/vendor/github.com/onsi/gomega/internal/gutil/post_ioutil.go new file mode 100644 index 000000000..6864055a5 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/internal/gutil/post_ioutil.go @@ -0,0 +1,48 @@ +//go:build go1.16 +// +build go1.16 + +// Package gutil is a replacement for ioutil, which should not be used in new +// code as of Go 1.16. With Go 1.16 and higher, this implementation +// uses the ioutil replacement functions in "io" and "os" with some +// Gomega specifics. This means that we should not get deprecation warnings +// for ioutil when they are added. +package gutil + +import ( + "io" + "os" +) + +func NopCloser(r io.Reader) io.ReadCloser { + return io.NopCloser(r) +} + +func ReadAll(r io.Reader) ([]byte, error) { + return io.ReadAll(r) +} + +func ReadDir(dirname string) ([]string, error) { + entries, err := os.ReadDir(dirname) + if err != nil { + return nil, err + } + + var names []string + for _, entry := range entries { + names = append(names, entry.Name()) + } + + return names, nil +} + +func ReadFile(filename string) ([]byte, error) { + return os.ReadFile(filename) +} + +func MkdirTemp(dir, pattern string) (string, error) { + return os.MkdirTemp(dir, pattern) +} + +func WriteFile(filename string, data []byte) error { + return os.WriteFile(filename, data, 0644) +} diff --git a/tests/vendor/github.com/onsi/gomega/internal/gutil/using_ioutil.go b/tests/vendor/github.com/onsi/gomega/internal/gutil/using_ioutil.go new file mode 100644 index 000000000..5c0ce1ee3 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/internal/gutil/using_ioutil.go @@ -0,0 +1,47 @@ +//go:build !go1.16 +// +build !go1.16 + +// Package gutil is a replacement for ioutil, which should not be used in new +// code as of Go 1.16. With Go 1.15 and lower, this implementation +// uses the ioutil functions, meaning that although Gomega is not officially +// supported on these versions, it is still likely to work. +package gutil + +import ( + "io" + "io/ioutil" +) + +func NopCloser(r io.Reader) io.ReadCloser { + return ioutil.NopCloser(r) +} + +func ReadAll(r io.Reader) ([]byte, error) { + return ioutil.ReadAll(r) +} + +func ReadDir(dirname string) ([]string, error) { + files, err := ioutil.ReadDir(dirname) + if err != nil { + return nil, err + } + + var names []string + for _, file := range files { + names = append(names, file.Name()) + } + + return names, nil +} + +func ReadFile(filename string) ([]byte, error) { + return ioutil.ReadFile(filename) +} + +func MkdirTemp(dir, pattern string) (string, error) { + return ioutil.TempDir(dir, pattern) +} + +func WriteFile(filename string, data []byte) error { + return ioutil.WriteFile(filename, data, 0644) +} diff --git a/tests/vendor/github.com/onsi/gomega/internal/polling_signal_error.go b/tests/vendor/github.com/onsi/gomega/internal/polling_signal_error.go new file mode 100644 index 000000000..450c40333 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/internal/polling_signal_error.go @@ -0,0 +1,117 @@ +package internal + +import ( + "errors" + "fmt" + "time" +) + +type PollingSignalErrorType int + +const ( + PollingSignalErrorTypeStopTrying PollingSignalErrorType = iota + PollingSignalErrorTypeTryAgainAfter +) + +type PollingSignalError interface { + error + Wrap(err error) PollingSignalError + Attach(description string, obj any) PollingSignalError + Successfully() PollingSignalError + Now() +} + +var StopTrying = func(message string) PollingSignalError { + return &PollingSignalErrorImpl{ + message: message, + pollingSignalErrorType: PollingSignalErrorTypeStopTrying, + } +} + +var TryAgainAfter = func(duration time.Duration) PollingSignalError { + return &PollingSignalErrorImpl{ + message: fmt.Sprintf("told to try again after %s", duration), + duration: duration, + pollingSignalErrorType: PollingSignalErrorTypeTryAgainAfter, + } +} + +type PollingSignalErrorAttachment struct { + Description string + Object any +} + +type PollingSignalErrorImpl struct { + message string + wrappedErr error + pollingSignalErrorType PollingSignalErrorType + duration time.Duration + successful bool + Attachments []PollingSignalErrorAttachment +} + +func (s *PollingSignalErrorImpl) Wrap(err error) PollingSignalError { + s.wrappedErr = err + return s +} + +func (s *PollingSignalErrorImpl) Attach(description string, obj any) PollingSignalError { + s.Attachments = append(s.Attachments, PollingSignalErrorAttachment{description, obj}) + return s +} + +func (s *PollingSignalErrorImpl) Error() string { + if s.wrappedErr == nil { + return s.message + } else { + return s.message + ": " + s.wrappedErr.Error() + } +} + +func (s *PollingSignalErrorImpl) Unwrap() error { + if s == nil { + return nil + } + return s.wrappedErr +} + +func (s *PollingSignalErrorImpl) Successfully() PollingSignalError { + s.successful = true + return s +} + +func (s *PollingSignalErrorImpl) Now() { + panic(s) +} + +func (s *PollingSignalErrorImpl) IsStopTrying() bool { + return s.pollingSignalErrorType == PollingSignalErrorTypeStopTrying +} + +func (s *PollingSignalErrorImpl) IsSuccessful() bool { + return s.successful +} + +func (s *PollingSignalErrorImpl) IsTryAgainAfter() bool { + return s.pollingSignalErrorType == PollingSignalErrorTypeTryAgainAfter +} + +func (s *PollingSignalErrorImpl) TryAgainDuration() time.Duration { + return s.duration +} + +func AsPollingSignalError(actual any) (*PollingSignalErrorImpl, bool) { + if actual == nil { + return nil, false + } + if actualErr, ok := actual.(error); ok { + var target *PollingSignalErrorImpl + if errors.As(actualErr, &target) { + return target, true + } else { + return nil, false + } + } + + return nil, false +} diff --git a/tests/vendor/github.com/onsi/gomega/internal/vetoptdesc.go b/tests/vendor/github.com/onsi/gomega/internal/vetoptdesc.go new file mode 100644 index 000000000..b748de41f --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/internal/vetoptdesc.go @@ -0,0 +1,22 @@ +package internal + +import ( + "fmt" + + "github.com/onsi/gomega/types" +) + +// vetOptionalDescription vets the optional description args: if it finds any +// Gomega matcher at the beginning it panics. This allows for rendering Gomega +// matchers as part of an optional Description, as long as they're not in the +// first slot. +func vetOptionalDescription(assertion string, optionalDescription ...any) { + if len(optionalDescription) == 0 { + return + } + if _, isGomegaMatcher := optionalDescription[0].(types.GomegaMatcher); isGomegaMatcher { + panic(fmt.Sprintf("%s has a GomegaMatcher as the first element of optionalDescription.\n\t"+ + "Do you mean to use And/Or/SatisfyAll/SatisfyAny to combine multiple matchers?", + assertion)) + } +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers.go b/tests/vendor/github.com/onsi/gomega/matchers.go new file mode 100644 index 000000000..10b6693fd --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers.go @@ -0,0 +1,701 @@ +package gomega + +import ( + "fmt" + "time" + + "github.com/google/go-cmp/cmp" + "github.com/onsi/gomega/matchers" + "github.com/onsi/gomega/types" +) + +// Equal uses reflect.DeepEqual to compare actual with expected. Equal is strict about +// types when performing comparisons. +// It is an error for both actual and expected to be nil. Use BeNil() instead. +func Equal(expected any) types.GomegaMatcher { + return &matchers.EqualMatcher{ + Expected: expected, + } +} + +// BeEquivalentTo is more lax than Equal, allowing equality between different types. +// This is done by converting actual to have the type of expected before +// attempting equality with reflect.DeepEqual. +// It is an error for actual and expected to be nil. Use BeNil() instead. +func BeEquivalentTo(expected any) types.GomegaMatcher { + return &matchers.BeEquivalentToMatcher{ + Expected: expected, + } +} + +// BeComparableTo uses gocmp.Equal from github.com/google/go-cmp (instead of reflect.DeepEqual) to perform a deep comparison. +// You can pass cmp.Option as options. +// It is an error for actual and expected to be nil. Use BeNil() instead. +func BeComparableTo(expected any, opts ...cmp.Option) types.GomegaMatcher { + return &matchers.BeComparableToMatcher{ + Expected: expected, + Options: opts, + } +} + +// BeIdenticalTo uses the == operator to compare actual with expected. +// BeIdenticalTo is strict about types when performing comparisons. +// It is an error for both actual and expected to be nil. Use BeNil() instead. +func BeIdenticalTo(expected any) types.GomegaMatcher { + return &matchers.BeIdenticalToMatcher{ + Expected: expected, + } +} + +// BeNil succeeds if actual is nil +func BeNil() types.GomegaMatcher { + return &matchers.BeNilMatcher{} +} + +// BeTrue succeeds if actual is true +// +// In general, it's better to use `BeTrueBecause(reason)` to provide a more useful error message if a true check fails. +func BeTrue() types.GomegaMatcher { + return &matchers.BeTrueMatcher{} +} + +// BeFalse succeeds if actual is false +// +// In general, it's better to use `BeFalseBecause(reason)` to provide a more useful error message if a false check fails. +func BeFalse() types.GomegaMatcher { + return &matchers.BeFalseMatcher{} +} + +// BeTrueBecause succeeds if actual is true and displays the provided reason if it is false +// fmt.Sprintf is used to render the reason +func BeTrueBecause(format string, args ...any) types.GomegaMatcher { + return &matchers.BeTrueMatcher{Reason: fmt.Sprintf(format, args...)} +} + +// BeFalseBecause succeeds if actual is false and displays the provided reason if it is true. +// fmt.Sprintf is used to render the reason +func BeFalseBecause(format string, args ...any) types.GomegaMatcher { + return &matchers.BeFalseMatcher{Reason: fmt.Sprintf(format, args...)} +} + +// HaveOccurred succeeds if actual is a non-nil error +// The typical Go error checking pattern looks like: +// +// err := SomethingThatMightFail() +// Expect(err).ShouldNot(HaveOccurred()) +func HaveOccurred() types.GomegaMatcher { + return &matchers.HaveOccurredMatcher{} +} + +// Succeed passes if actual is a nil error +// Succeed is intended to be used with functions that return a single error value. Instead of +// +// err := SomethingThatMightFail() +// Expect(err).ShouldNot(HaveOccurred()) +// +// You can write: +// +// Expect(SomethingThatMightFail()).Should(Succeed()) +// +// It is a mistake to use Succeed with a function that has multiple return values. Gomega's Ω and Expect +// functions automatically trigger failure if any return values after the first return value are non-zero/non-nil. +// This means that Ω(MultiReturnFunc()).ShouldNot(Succeed()) can never pass. +func Succeed() types.GomegaMatcher { + return &matchers.SucceedMatcher{} +} + +// MatchError succeeds if actual is a non-nil error that matches the passed in +// string, error, function, or matcher. +// +// These are valid use-cases: +// +// When passed a string: +// +// Expect(err).To(MatchError("an error")) +// +// asserts that err.Error() == "an error" +// +// When passed an error: +// +// Expect(err).To(MatchError(SomeError)) +// +// First checks if errors.Is(err, SomeError). +// If that fails then it checks if reflect.DeepEqual(err, SomeError) repeatedly for err and any errors wrapped by err +// +// When passed a matcher: +// +// Expect(err).To(MatchError(ContainSubstring("sprocket not found"))) +// +// the matcher is passed err.Error(). In this case it asserts that err.Error() contains substring "sprocket not found" +// +// When passed a func(err) bool and a description: +// +// Expect(err).To(MatchError(os.IsNotExist, "IsNotExist")) +// +// the function is passed err and matches if the return value is true. The description is required to allow Gomega +// to print a useful error message. +// +// It is an error for err to be nil or an object that does not implement the +// Error interface +// +// The optional second argument is a description of the error function, if used. This is required when passing a function but is ignored in all other cases. +func MatchError(expected any, functionErrorDescription ...any) types.GomegaMatcher { + return &matchers.MatchErrorMatcher{ + Expected: expected, + FuncErrDescription: functionErrorDescription, + } +} + +// BeClosed succeeds if actual is a closed channel. +// It is an error to pass a non-channel to BeClosed, it is also an error to pass nil +// +// In order to check whether or not the channel is closed, Gomega must try to read from the channel +// (even in the `ShouldNot(BeClosed())` case). You should keep this in mind if you wish to make subsequent assertions about +// values coming down the channel. +// +// Also, if you are testing that a *buffered* channel is closed you must first read all values out of the channel before +// asserting that it is closed (it is not possible to detect that a buffered-channel has been closed until all its buffered values are read). +// +// Finally, as a corollary: it is an error to check whether or not a send-only channel is closed. +func BeClosed() types.GomegaMatcher { + return &matchers.BeClosedMatcher{} +} + +// Receive succeeds if there is a value to be received on actual. +// Actual must be a channel (and cannot be a send-only channel) -- anything else is an error. +// +// Receive returns immediately and never blocks: +// +// - If there is nothing on the channel `c` then Expect(c).Should(Receive()) will fail and Ω(c).ShouldNot(Receive()) will pass. +// +// - If the channel `c` is closed then Expect(c).Should(Receive()) will fail and Ω(c).ShouldNot(Receive()) will pass. +// +// - If there is something on the channel `c` ready to be read, then Expect(c).Should(Receive()) will pass and Ω(c).ShouldNot(Receive()) will fail. +// +// If you have a go-routine running in the background that will write to channel `c` you can: +// +// Eventually(c).Should(Receive()) +// +// This will timeout if nothing gets sent to `c` (you can modify the timeout interval as you normally do with `Eventually`) +// +// A similar use-case is to assert that no go-routine writes to a channel (for a period of time). You can do this with `Consistently`: +// +// Consistently(c).ShouldNot(Receive()) +// +// You can pass `Receive` a matcher. If you do so, it will match the received object against the matcher. For example: +// +// Expect(c).Should(Receive(Equal("foo"))) +// +// When given a matcher, `Receive` will always fail if there is nothing to be received on the channel. +// +// Passing Receive a matcher is especially useful when paired with Eventually: +// +// Eventually(c).Should(Receive(ContainSubstring("bar"))) +// +// will repeatedly attempt to pull values out of `c` until a value matching "bar" is received. +// +// Furthermore, if you want to have a reference to the value *sent* to the channel you can pass the `Receive` matcher a pointer to a variable of the appropriate type: +// +// var myThing thing +// Eventually(thingChan).Should(Receive(&myThing)) +// Expect(myThing.Sprocket).Should(Equal("foo")) +// Expect(myThing.IsValid()).Should(BeTrue()) +// +// Finally, if you want to match the received object as well as get the actual received value into a variable, so you can reason further about the value received, +// you can pass a pointer to a variable of the appropriate type first, and second a matcher: +// +// var myThing thing +// Eventually(thingChan).Should(Receive(&myThing, ContainSubstring("bar"))) +func Receive(args ...any) types.GomegaMatcher { + return &matchers.ReceiveMatcher{ + Args: args, + } +} + +// BeSent succeeds if a value can be sent to actual. +// Actual must be a channel (and cannot be a receive-only channel) that can sent the type of the value passed into BeSent -- anything else is an error. +// In addition, actual must not be closed. +// +// BeSent never blocks: +// +// - If the channel `c` is not ready to receive then Expect(c).Should(BeSent("foo")) will fail immediately +// - If the channel `c` is eventually ready to receive then Eventually(c).Should(BeSent("foo")) will succeed.. presuming the channel becomes ready to receive before Eventually's timeout +// - If the channel `c` is closed then Expect(c).Should(BeSent("foo")) and Ω(c).ShouldNot(BeSent("foo")) will both fail immediately +// +// Of course, the value is actually sent to the channel. The point of `BeSent` is less to make an assertion about the availability of the channel (which is typically an implementation detail that your test should not be concerned with). +// Rather, the point of `BeSent` is to make it possible to easily and expressively write tests that can timeout on blocked channel sends. +func BeSent(arg any) types.GomegaMatcher { + return &matchers.BeSentMatcher{ + Arg: arg, + } +} + +// MatchRegexp succeeds if actual is a string or stringer that matches the +// passed-in regexp. Optional arguments can be provided to construct a regexp +// via fmt.Sprintf(). +func MatchRegexp(regexp string, args ...any) types.GomegaMatcher { + return &matchers.MatchRegexpMatcher{ + Regexp: regexp, + Args: args, + } +} + +// ContainSubstring succeeds if actual is a string or stringer that contains the +// passed-in substring. Optional arguments can be provided to construct the substring +// via fmt.Sprintf(). +func ContainSubstring(substr string, args ...any) types.GomegaMatcher { + return &matchers.ContainSubstringMatcher{ + Substr: substr, + Args: args, + } +} + +// HavePrefix succeeds if actual is a string or stringer that contains the +// passed-in string as a prefix. Optional arguments can be provided to construct +// via fmt.Sprintf(). +func HavePrefix(prefix string, args ...any) types.GomegaMatcher { + return &matchers.HavePrefixMatcher{ + Prefix: prefix, + Args: args, + } +} + +// HaveSuffix succeeds if actual is a string or stringer that contains the +// passed-in string as a suffix. Optional arguments can be provided to construct +// via fmt.Sprintf(). +func HaveSuffix(suffix string, args ...any) types.GomegaMatcher { + return &matchers.HaveSuffixMatcher{ + Suffix: suffix, + Args: args, + } +} + +// MatchJSON succeeds if actual is a string or stringer of JSON that matches +// the expected JSON. The JSONs are decoded and the resulting objects are compared via +// reflect.DeepEqual so things like key-ordering and whitespace shouldn't matter. +func MatchJSON(json any) types.GomegaMatcher { + return &matchers.MatchJSONMatcher{ + JSONToMatch: json, + } +} + +// MatchXML succeeds if actual is a string or stringer of XML that matches +// the expected XML. The XMLs are decoded and the resulting objects are compared via +// reflect.DeepEqual so things like whitespaces shouldn't matter. +func MatchXML(xml any) types.GomegaMatcher { + return &matchers.MatchXMLMatcher{ + XMLToMatch: xml, + } +} + +// MatchYAML succeeds if actual is a string or stringer of YAML that matches +// the expected YAML. The YAML's are decoded and the resulting objects are compared via +// reflect.DeepEqual so things like key-ordering and whitespace shouldn't matter. +func MatchYAML(yaml any) types.GomegaMatcher { + return &matchers.MatchYAMLMatcher{ + YAMLToMatch: yaml, + } +} + +// BeEmpty succeeds if actual is empty. Actual must be of type string, array, map, chan, or slice. +func BeEmpty() types.GomegaMatcher { + return &matchers.BeEmptyMatcher{} +} + +// HaveLen succeeds if actual has the passed-in length. Actual must be of type string, array, map, chan, or slice. +func HaveLen(count int) types.GomegaMatcher { + return &matchers.HaveLenMatcher{ + Count: count, + } +} + +// HaveCap succeeds if actual has the passed-in capacity. Actual must be of type array, chan, or slice. +func HaveCap(count int) types.GomegaMatcher { + return &matchers.HaveCapMatcher{ + Count: count, + } +} + +// BeZero succeeds if actual is the zero value for its type or if actual is nil. +func BeZero() types.GomegaMatcher { + return &matchers.BeZeroMatcher{} +} + +// ContainElement succeeds if actual contains the passed in element. By default +// ContainElement() uses Equal() to perform the match, however a matcher can be +// passed in instead: +// +// Expect([]string{"Foo", "FooBar"}).Should(ContainElement(ContainSubstring("Bar"))) +// +// Actual must be an array, slice or map. For maps, ContainElement searches +// through the map's values. +// +// If you want to have a copy of the matching element(s) found you can pass a +// pointer to a variable of the appropriate type. If the variable isn't a slice +// or map, then exactly one match will be expected and returned. If the variable +// is a slice or map, then at least one match is expected and all matches will be +// stored in the variable. +// +// var findings []string +// Expect([]string{"Foo", "FooBar"}).Should(ContainElement(ContainSubString("Bar", &findings))) +func ContainElement(element any, result ...any) types.GomegaMatcher { + return &matchers.ContainElementMatcher{ + Element: element, + Result: result, + } +} + +// BeElementOf succeeds if actual is contained in the passed in elements. +// BeElementOf() always uses Equal() to perform the match. +// When the passed in elements are comprised of a single element that is either an Array or Slice, BeElementOf() behaves +// as the reverse of ContainElement() that operates with Equal() to perform the match. +// +// Expect(2).Should(BeElementOf([]int{1, 2})) +// Expect(2).Should(BeElementOf([2]int{1, 2})) +// +// Otherwise, BeElementOf() provides a syntactic sugar for Or(Equal(_), Equal(_), ...): +// +// Expect(2).Should(BeElementOf(1, 2)) +// +// Actual must be typed. +func BeElementOf(elements ...any) types.GomegaMatcher { + return &matchers.BeElementOfMatcher{ + Elements: elements, + } +} + +// BeKeyOf succeeds if actual is contained in the keys of the passed in map. +// BeKeyOf() always uses Equal() to perform the match between actual and the map keys. +// +// Expect("foo").Should(BeKeyOf(map[string]bool{"foo": true, "bar": false})) +func BeKeyOf(element any) types.GomegaMatcher { + return &matchers.BeKeyOfMatcher{ + Map: element, + } +} + +// ConsistOf succeeds if actual contains precisely the elements passed into the matcher. The ordering of the elements does not matter. +// By default ConsistOf() uses Equal() to match the elements, however custom matchers can be passed in instead. Here are some examples: +// +// Expect([]string{"Foo", "FooBar"}).Should(ConsistOf("FooBar", "Foo")) +// Expect([]string{"Foo", "FooBar"}).Should(ConsistOf(ContainSubstring("Bar"), "Foo")) +// Expect([]string{"Foo", "FooBar"}).Should(ConsistOf(ContainSubstring("Foo"), ContainSubstring("Foo"))) +// +// Actual must be an array, slice or map. For maps, ConsistOf matches against the map's values. +// +// You typically pass variadic arguments to ConsistOf (as in the examples above). However, if you need to pass in a slice you can provided that it +// is the only element passed in to ConsistOf: +// +// Expect([]string{"Foo", "FooBar"}).Should(ConsistOf([]string{"FooBar", "Foo"})) +// +// Note that Go's type system does not allow you to write this as ConsistOf([]string{"FooBar", "Foo"}...) as []string and []any are different types - hence the need for this special rule. +func ConsistOf(elements ...any) types.GomegaMatcher { + return &matchers.ConsistOfMatcher{ + Elements: elements, + } +} + +// HaveExactElements succeeds if actual contains elements that precisely match the elements passed into the matcher. The ordering of the elements does matter. +// By default HaveExactElements() uses Equal() to match the elements, however custom matchers can be passed in instead. Here are some examples: +// +// Expect([]string{"Foo", "FooBar"}).Should(HaveExactElements("Foo", "FooBar")) +// Expect([]string{"Foo", "FooBar"}).Should(HaveExactElements("Foo", ContainSubstring("Bar"))) +// Expect([]string{"Foo", "FooBar"}).Should(HaveExactElements(ContainSubstring("Foo"), ContainSubstring("Foo"))) +// +// Actual must be an array or slice. +func HaveExactElements(elements ...any) types.GomegaMatcher { + return &matchers.HaveExactElementsMatcher{ + Elements: elements, + } +} + +// ContainElements succeeds if actual contains the passed in elements. The ordering of the elements does not matter. +// By default ContainElements() uses Equal() to match the elements, however custom matchers can be passed in instead. Here are some examples: +// +// Expect([]string{"Foo", "FooBar"}).Should(ContainElements("FooBar")) +// Expect([]string{"Foo", "FooBar"}).Should(ContainElements(ContainSubstring("Bar"), "Foo")) +// +// Actual must be an array, slice or map. +// For maps, ContainElements searches through the map's values. +func ContainElements(elements ...any) types.GomegaMatcher { + return &matchers.ContainElementsMatcher{ + Elements: elements, + } +} + +// HaveEach succeeds if actual solely contains elements that match the passed in element. +// Please note that if actual is empty, HaveEach always will fail. +// By default HaveEach() uses Equal() to perform the match, however a +// matcher can be passed in instead: +// +// Expect([]string{"Foo", "FooBar"}).Should(HaveEach(ContainSubstring("Foo"))) +// +// Actual must be an array, slice or map. +// For maps, HaveEach searches through the map's values. +func HaveEach(element any) types.GomegaMatcher { + return &matchers.HaveEachMatcher{ + Element: element, + } +} + +// HaveKey succeeds if actual is a map with the passed in key. +// By default HaveKey uses Equal() to perform the match, however a +// matcher can be passed in instead: +// +// Expect(map[string]string{"Foo": "Bar", "BazFoo": "Duck"}).Should(HaveKey(MatchRegexp(`.+Foo$`))) +func HaveKey(key any) types.GomegaMatcher { + return &matchers.HaveKeyMatcher{ + Key: key, + } +} + +// HaveKeyWithValue succeeds if actual is a map with the passed in key and value. +// By default HaveKeyWithValue uses Equal() to perform the match, however a +// matcher can be passed in instead: +// +// Expect(map[string]string{"Foo": "Bar", "BazFoo": "Duck"}).Should(HaveKeyWithValue("Foo", "Bar")) +// Expect(map[string]string{"Foo": "Bar", "BazFoo": "Duck"}).Should(HaveKeyWithValue(MatchRegexp(`.+Foo$`), "Bar")) +func HaveKeyWithValue(key any, value any) types.GomegaMatcher { + return &matchers.HaveKeyWithValueMatcher{ + Key: key, + Value: value, + } +} + +// HaveField succeeds if actual is a struct and the value at the passed in field +// matches the passed in matcher. By default HaveField used Equal() to perform the match, +// however a matcher can be passed in in stead. +// +// The field must be a string that resolves to the name of a field in the struct. Structs can be traversed +// using the '.' delimiter. If the field ends with '()' a method named field is assumed to exist on the struct and is invoked. +// Such methods must take no arguments and return a single value: +// +// type Book struct { +// Title string +// Author Person +// } +// type Person struct { +// FirstName string +// LastName string +// DOB time.Time +// } +// Expect(book).To(HaveField("Title", "Les Miserables")) +// Expect(book).To(HaveField("Title", ContainSubstring("Les")) +// Expect(book).To(HaveField("Author.FirstName", Equal("Victor")) +// Expect(book).To(HaveField("Author.DOB.Year()", BeNumerically("<", 1900)) +func HaveField(field string, expected any) types.GomegaMatcher { + return &matchers.HaveFieldMatcher{ + Field: field, + Expected: expected, + } +} + +// HaveExistingField succeeds if actual is a struct and the specified field +// exists. +// +// HaveExistingField can be combined with HaveField in order to cover use cases +// with optional fields. HaveField alone would trigger an error in such situations. +// +// Expect(MrHarmless).NotTo(And(HaveExistingField("Title"), HaveField("Title", "Supervillain"))) +func HaveExistingField(field string) types.GomegaMatcher { + return &matchers.HaveExistingFieldMatcher{ + Field: field, + } +} + +// HaveValue applies the given matcher to the value of actual, optionally and +// repeatedly dereferencing pointers or taking the concrete value of interfaces. +// Thus, the matcher will always be applied to non-pointer and non-interface +// values only. HaveValue will fail with an error if a pointer or interface is +// nil. It will also fail for more than 31 pointer or interface dereferences to +// guard against mistakenly applying it to arbitrarily deep linked pointers. +// +// HaveValue differs from gstruct.PointTo in that it does not expect actual to +// be a pointer (as gstruct.PointTo does) but instead also accepts non-pointer +// and even interface values. +// +// actual := 42 +// Expect(actual).To(HaveValue(42)) +// Expect(&actual).To(HaveValue(42)) +func HaveValue(matcher types.GomegaMatcher) types.GomegaMatcher { + return &matchers.HaveValueMatcher{ + Matcher: matcher, + } +} + +// BeNumerically performs numerical assertions in a type-agnostic way. +// Actual and expected should be numbers, though the specific type of +// number is irrelevant (float32, float64, uint8, etc...). +// +// There are six, self-explanatory, supported comparators: +// +// Expect(1.0).Should(BeNumerically("==", 1)) +// Expect(1.0).Should(BeNumerically("~", 0.999, 0.01)) +// Expect(1.0).Should(BeNumerically(">", 0.9)) +// Expect(1.0).Should(BeNumerically(">=", 1.0)) +// Expect(1.0).Should(BeNumerically("<", 3)) +// Expect(1.0).Should(BeNumerically("<=", 1.0)) +func BeNumerically(comparator string, compareTo ...any) types.GomegaMatcher { + return &matchers.BeNumericallyMatcher{ + Comparator: comparator, + CompareTo: compareTo, + } +} + +// BeTemporally compares time.Time's like BeNumerically +// Actual and expected must be time.Time. The comparators are the same as for BeNumerically +// +// Expect(time.Now()).Should(BeTemporally(">", time.Time{})) +// Expect(time.Now()).Should(BeTemporally("~", time.Now(), time.Second)) +func BeTemporally(comparator string, compareTo time.Time, threshold ...time.Duration) types.GomegaMatcher { + return &matchers.BeTemporallyMatcher{ + Comparator: comparator, + CompareTo: compareTo, + Threshold: threshold, + } +} + +// BeAssignableToTypeOf succeeds if actual is assignable to the type of expected. +// It will return an error when one of the values is nil. +// +// Expect(0).Should(BeAssignableToTypeOf(0)) // Same values +// Expect(5).Should(BeAssignableToTypeOf(-1)) // different values same type +// Expect("foo").Should(BeAssignableToTypeOf("bar")) // different values same type +// Expect(struct{ Foo string }{}).Should(BeAssignableToTypeOf(struct{ Foo string }{})) +func BeAssignableToTypeOf(expected any) types.GomegaMatcher { + return &matchers.AssignableToTypeOfMatcher{ + Expected: expected, + } +} + +// Panic succeeds if actual is a function that, when invoked, panics. +// Actual must be a function that takes no arguments and returns no results. +func Panic() types.GomegaMatcher { + return &matchers.PanicMatcher{} +} + +// PanicWith succeeds if actual is a function that, when invoked, panics with a specific value. +// Actual must be a function that takes no arguments and returns no results. +// +// By default PanicWith uses Equal() to perform the match, however a +// matcher can be passed in instead: +// +// Expect(fn).Should(PanicWith(MatchRegexp(`.+Foo$`))) +func PanicWith(expected any) types.GomegaMatcher { + return &matchers.PanicMatcher{Expected: expected} +} + +// BeAnExistingFile succeeds if a file exists. +// Actual must be a string representing the abs path to the file being checked. +func BeAnExistingFile() types.GomegaMatcher { + return &matchers.BeAnExistingFileMatcher{} +} + +// BeARegularFile succeeds if a file exists and is a regular file. +// Actual must be a string representing the abs path to the file being checked. +func BeARegularFile() types.GomegaMatcher { + return &matchers.BeARegularFileMatcher{} +} + +// BeADirectory succeeds if a file exists and is a directory. +// Actual must be a string representing the abs path to the file being checked. +func BeADirectory() types.GomegaMatcher { + return &matchers.BeADirectoryMatcher{} +} + +// HaveHTTPStatus succeeds if the Status or StatusCode field of an HTTP response matches. +// Actual must be either a *http.Response or *httptest.ResponseRecorder. +// Expected must be either an int or a string. +// +// Expect(resp).Should(HaveHTTPStatus(http.StatusOK)) // asserts that resp.StatusCode == 200 +// Expect(resp).Should(HaveHTTPStatus("404 Not Found")) // asserts that resp.Status == "404 Not Found" +// Expect(resp).Should(HaveHTTPStatus(http.StatusOK, http.StatusNoContent)) // asserts that resp.StatusCode == 200 || resp.StatusCode == 204 +func HaveHTTPStatus(expected ...any) types.GomegaMatcher { + return &matchers.HaveHTTPStatusMatcher{Expected: expected} +} + +// HaveHTTPHeaderWithValue succeeds if the header is found and the value matches. +// Actual must be either a *http.Response or *httptest.ResponseRecorder. +// Expected must be a string header name, followed by a header value which +// can be a string, or another matcher. +func HaveHTTPHeaderWithValue(header string, value any) types.GomegaMatcher { + return &matchers.HaveHTTPHeaderWithValueMatcher{ + Header: header, + Value: value, + } +} + +// HaveHTTPBody matches if the body matches. +// Actual must be either a *http.Response or *httptest.ResponseRecorder. +// Expected must be either a string, []byte, or other matcher +func HaveHTTPBody(expected any) types.GomegaMatcher { + return &matchers.HaveHTTPBodyMatcher{Expected: expected} +} + +// And succeeds only if all of the given matchers succeed. +// The matchers are tried in order, and will fail-fast if one doesn't succeed. +// +// Expect("hi").To(And(HaveLen(2), Equal("hi")) +// +// And(), Or(), Not() and WithTransform() allow matchers to be composed into complex expressions. +func And(ms ...types.GomegaMatcher) types.GomegaMatcher { + return &matchers.AndMatcher{Matchers: ms} +} + +// SatisfyAll is an alias for And(). +// +// Expect("hi").Should(SatisfyAll(HaveLen(2), Equal("hi"))) +func SatisfyAll(matchers ...types.GomegaMatcher) types.GomegaMatcher { + return And(matchers...) +} + +// Or succeeds if any of the given matchers succeed. +// The matchers are tried in order and will return immediately upon the first successful match. +// +// Expect("hi").To(Or(HaveLen(3), HaveLen(2)) +// +// And(), Or(), Not() and WithTransform() allow matchers to be composed into complex expressions. +func Or(ms ...types.GomegaMatcher) types.GomegaMatcher { + return &matchers.OrMatcher{Matchers: ms} +} + +// SatisfyAny is an alias for Or(). +// +// Expect("hi").SatisfyAny(Or(HaveLen(3), HaveLen(2)) +func SatisfyAny(matchers ...types.GomegaMatcher) types.GomegaMatcher { + return Or(matchers...) +} + +// Not negates the given matcher; it succeeds if the given matcher fails. +// +// Expect(1).To(Not(Equal(2)) +// +// And(), Or(), Not() and WithTransform() allow matchers to be composed into complex expressions. +func Not(matcher types.GomegaMatcher) types.GomegaMatcher { + return &matchers.NotMatcher{Matcher: matcher} +} + +// WithTransform applies the `transform` to the actual value and matches it against `matcher`. +// The given transform must be either a function of one parameter that returns one value or a +// function of one parameter that returns two values, where the second value must be of the +// error type. +// +// var plus1 = func(i int) int { return i + 1 } +// Expect(1).To(WithTransform(plus1, Equal(2)) +// +// var failingplus1 = func(i int) (int, error) { return 42, "this does not compute" } +// Expect(1).To(WithTransform(failingplus1, Equal(2))) +// +// And(), Or(), Not() and WithTransform() allow matchers to be composed into complex expressions. +func WithTransform(transform any, matcher types.GomegaMatcher) types.GomegaMatcher { + return matchers.NewWithTransformMatcher(transform, matcher) +} + +// Satisfy matches the actual value against the `predicate` function. +// The given predicate must be a function of one parameter that returns bool. +// +// var isEven = func(i int) bool { return i%2 == 0 } +// Expect(2).To(Satisfy(isEven)) +func Satisfy(predicate any) types.GomegaMatcher { + return matchers.NewSatisfyMatcher(predicate) +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/and.go b/tests/vendor/github.com/onsi/gomega/matchers/and.go new file mode 100644 index 000000000..db48e90b3 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/and.go @@ -0,0 +1,62 @@ +package matchers + +import ( + "fmt" + + "github.com/onsi/gomega/format" + "github.com/onsi/gomega/types" +) + +type AndMatcher struct { + Matchers []types.GomegaMatcher + + // state + firstFailedMatcher types.GomegaMatcher +} + +func (m *AndMatcher) Match(actual any) (success bool, err error) { + m.firstFailedMatcher = nil + for _, matcher := range m.Matchers { + success, err := matcher.Match(actual) + if !success || err != nil { + m.firstFailedMatcher = matcher + return false, err + } + } + return true, nil +} + +func (m *AndMatcher) FailureMessage(actual any) (message string) { + return m.firstFailedMatcher.FailureMessage(actual) +} + +func (m *AndMatcher) NegatedFailureMessage(actual any) (message string) { + // not the most beautiful list of matchers, but not bad either... + return format.Message(actual, fmt.Sprintf("To not satisfy all of these matchers: %s", m.Matchers)) +} + +func (m *AndMatcher) MatchMayChangeInTheFuture(actual any) bool { + /* + Example with 3 matchers: A, B, C + + Match evaluates them: T, F, => F + So match is currently F, what should MatchMayChangeInTheFuture() return? + Seems like it only depends on B, since currently B MUST change to allow the result to become T + + Match eval: T, T, T => T + So match is currently T, what should MatchMayChangeInTheFuture() return? + Seems to depend on ANY of them being able to change to F. + */ + + if m.firstFailedMatcher == nil { + // so all matchers succeeded.. Any one of them changing would change the result. + for _, matcher := range m.Matchers { + if types.MatchMayChangeInTheFuture(matcher, actual) { + return true + } + } + return false // none of were going to change + } + // one of the matchers failed.. it must be able to change in order to affect the result + return types.MatchMayChangeInTheFuture(m.firstFailedMatcher, actual) +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/assignable_to_type_of_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/assignable_to_type_of_matcher.go new file mode 100644 index 000000000..a100e5c07 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/assignable_to_type_of_matcher.go @@ -0,0 +1,37 @@ +// untested sections: 2 + +package matchers + +import ( + "fmt" + "reflect" + + "github.com/onsi/gomega/format" +) + +type AssignableToTypeOfMatcher struct { + Expected any +} + +func (matcher *AssignableToTypeOfMatcher) Match(actual any) (success bool, err error) { + if actual == nil && matcher.Expected == nil { + return false, fmt.Errorf("Refusing to compare to .\nBe explicit and use BeNil() instead. This is to avoid mistakes where both sides of an assertion are erroneously uninitialized.") + } else if matcher.Expected == nil { + return false, fmt.Errorf("Refusing to compare type to .\nBe explicit and use BeNil() instead. This is to avoid mistakes where both sides of an assertion are erroneously uninitialized.") + } else if actual == nil { + return false, nil + } + + actualType := reflect.TypeOf(actual) + expectedType := reflect.TypeOf(matcher.Expected) + + return actualType.AssignableTo(expectedType), nil +} + +func (matcher *AssignableToTypeOfMatcher) FailureMessage(actual any) string { + return format.Message(actual, fmt.Sprintf("to be assignable to the type: %T", matcher.Expected)) +} + +func (matcher *AssignableToTypeOfMatcher) NegatedFailureMessage(actual any) string { + return format.Message(actual, fmt.Sprintf("not to be assignable to the type: %T", matcher.Expected)) +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/attributes_slice.go b/tests/vendor/github.com/onsi/gomega/matchers/attributes_slice.go new file mode 100644 index 000000000..355b362f4 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/attributes_slice.go @@ -0,0 +1,14 @@ +package matchers + +import ( + "encoding/xml" + "strings" +) + +type attributesSlice []xml.Attr + +func (attrs attributesSlice) Len() int { return len(attrs) } +func (attrs attributesSlice) Less(i, j int) bool { + return strings.Compare(attrs[i].Name.Local, attrs[j].Name.Local) == -1 +} +func (attrs attributesSlice) Swap(i, j int) { attrs[i], attrs[j] = attrs[j], attrs[i] } diff --git a/tests/vendor/github.com/onsi/gomega/matchers/be_a_directory.go b/tests/vendor/github.com/onsi/gomega/matchers/be_a_directory.go new file mode 100644 index 000000000..1d8236048 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/be_a_directory.go @@ -0,0 +1,56 @@ +// untested sections: 5 + +package matchers + +import ( + "fmt" + "os" + + "github.com/onsi/gomega/format" +) + +type notADirectoryError struct { + os.FileInfo +} + +func (t notADirectoryError) Error() string { + fileInfo := os.FileInfo(t) + switch { + case fileInfo.Mode().IsRegular(): + return "file is a regular file" + default: + return fmt.Sprintf("file mode is: %s", fileInfo.Mode().String()) + } +} + +type BeADirectoryMatcher struct { + expected any + err error +} + +func (matcher *BeADirectoryMatcher) Match(actual any) (success bool, err error) { + actualFilename, ok := actual.(string) + if !ok { + return false, fmt.Errorf("BeADirectoryMatcher matcher expects a file path") + } + + fileInfo, err := os.Stat(actualFilename) + if err != nil { + matcher.err = err + return false, nil + } + + if !fileInfo.Mode().IsDir() { + matcher.err = notADirectoryError{fileInfo} + return false, nil + } + return true, nil +} + +func (matcher *BeADirectoryMatcher) FailureMessage(actual any) (message string) { + return format.Message(actual, fmt.Sprintf("to be a directory: %s", matcher.err)) +} + +func (matcher *BeADirectoryMatcher) NegatedFailureMessage(actual any) (message string) { + return format.Message(actual, "not be a directory") +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/be_a_regular_file.go b/tests/vendor/github.com/onsi/gomega/matchers/be_a_regular_file.go new file mode 100644 index 000000000..3e53d6285 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/be_a_regular_file.go @@ -0,0 +1,56 @@ +// untested sections: 5 + +package matchers + +import ( + "fmt" + "os" + + "github.com/onsi/gomega/format" +) + +type notARegularFileError struct { + os.FileInfo +} + +func (t notARegularFileError) Error() string { + fileInfo := os.FileInfo(t) + switch { + case fileInfo.IsDir(): + return "file is a directory" + default: + return fmt.Sprintf("file mode is: %s", fileInfo.Mode().String()) + } +} + +type BeARegularFileMatcher struct { + expected any + err error +} + +func (matcher *BeARegularFileMatcher) Match(actual any) (success bool, err error) { + actualFilename, ok := actual.(string) + if !ok { + return false, fmt.Errorf("BeARegularFileMatcher matcher expects a file path") + } + + fileInfo, err := os.Stat(actualFilename) + if err != nil { + matcher.err = err + return false, nil + } + + if !fileInfo.Mode().IsRegular() { + matcher.err = notARegularFileError{fileInfo} + return false, nil + } + return true, nil +} + +func (matcher *BeARegularFileMatcher) FailureMessage(actual any) (message string) { + return format.Message(actual, fmt.Sprintf("to be a regular file: %s", matcher.err)) +} + +func (matcher *BeARegularFileMatcher) NegatedFailureMessage(actual any) (message string) { + return format.Message(actual, "not be a regular file") +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/be_an_existing_file.go b/tests/vendor/github.com/onsi/gomega/matchers/be_an_existing_file.go new file mode 100644 index 000000000..04f156db3 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/be_an_existing_file.go @@ -0,0 +1,40 @@ +// untested sections: 3 + +package matchers + +import ( + "fmt" + "os" + + "github.com/onsi/gomega/format" +) + +type BeAnExistingFileMatcher struct { + expected any +} + +func (matcher *BeAnExistingFileMatcher) Match(actual any) (success bool, err error) { + actualFilename, ok := actual.(string) + if !ok { + return false, fmt.Errorf("BeAnExistingFileMatcher matcher expects a file path") + } + + if _, err = os.Stat(actualFilename); err != nil { + switch { + case os.IsNotExist(err): + return false, nil + default: + return false, err + } + } + + return true, nil +} + +func (matcher *BeAnExistingFileMatcher) FailureMessage(actual any) (message string) { + return format.Message(actual, "to exist") +} + +func (matcher *BeAnExistingFileMatcher) NegatedFailureMessage(actual any) (message string) { + return format.Message(actual, "not to exist") +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/be_closed_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/be_closed_matcher.go new file mode 100644 index 000000000..4319dde45 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/be_closed_matcher.go @@ -0,0 +1,48 @@ +// untested sections: 2 + +package matchers + +import ( + "fmt" + "reflect" + + "github.com/onsi/gomega/format" +) + +type BeClosedMatcher struct { +} + +func (matcher *BeClosedMatcher) Match(actual any) (success bool, err error) { + if !isChan(actual) { + return false, fmt.Errorf("BeClosed matcher expects a channel. Got:\n%s", format.Object(actual, 1)) + } + + channelType := reflect.TypeOf(actual) + channelValue := reflect.ValueOf(actual) + + if channelType.ChanDir() == reflect.SendDir { + return false, fmt.Errorf("BeClosed matcher cannot determine if a send-only channel is closed or open. Got:\n%s", format.Object(actual, 1)) + } + + winnerIndex, _, open := reflect.Select([]reflect.SelectCase{ + {Dir: reflect.SelectRecv, Chan: channelValue}, + {Dir: reflect.SelectDefault}, + }) + + var closed bool + if winnerIndex == 0 { + closed = !open + } else if winnerIndex == 1 { + closed = false + } + + return closed, nil +} + +func (matcher *BeClosedMatcher) FailureMessage(actual any) (message string) { + return format.Message(actual, "to be closed") +} + +func (matcher *BeClosedMatcher) NegatedFailureMessage(actual any) (message string) { + return format.Message(actual, "to be open") +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/be_comparable_to_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/be_comparable_to_matcher.go new file mode 100644 index 000000000..532fc3744 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/be_comparable_to_matcher.go @@ -0,0 +1,49 @@ +package matchers + +import ( + "bytes" + "fmt" + + "github.com/google/go-cmp/cmp" + "github.com/onsi/gomega/format" +) + +type BeComparableToMatcher struct { + Expected any + Options cmp.Options +} + +func (matcher *BeComparableToMatcher) Match(actual any) (success bool, matchErr error) { + if actual == nil && matcher.Expected == nil { + return false, fmt.Errorf("Refusing to compare to .\nBe explicit and use BeNil() instead. This is to avoid mistakes where both sides of an assertion are erroneously uninitialized.") + } + // Shortcut for byte slices. + // Comparing long byte slices with reflect.DeepEqual is very slow, + // so use bytes.Equal if actual and expected are both byte slices. + if actualByteSlice, ok := actual.([]byte); ok { + if expectedByteSlice, ok := matcher.Expected.([]byte); ok { + return bytes.Equal(actualByteSlice, expectedByteSlice), nil + } + } + + defer func() { + if r := recover(); r != nil { + success = false + if err, ok := r.(error); ok { + matchErr = err + } else if errMsg, ok := r.(string); ok { + matchErr = fmt.Errorf(errMsg) + } + } + }() + + return cmp.Equal(actual, matcher.Expected, matcher.Options...), nil +} + +func (matcher *BeComparableToMatcher) FailureMessage(actual any) (message string) { + return fmt.Sprint("Expected object to be comparable, diff: ", cmp.Diff(actual, matcher.Expected, matcher.Options...)) +} + +func (matcher *BeComparableToMatcher) NegatedFailureMessage(actual any) (message string) { + return format.Message(actual, "not to be comparable to", matcher.Expected) +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/be_element_of_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/be_element_of_matcher.go new file mode 100644 index 000000000..406fe5484 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/be_element_of_matcher.go @@ -0,0 +1,43 @@ +// untested sections: 1 + +package matchers + +import ( + "fmt" + "reflect" + + "github.com/onsi/gomega/format" +) + +type BeElementOfMatcher struct { + Elements []any +} + +func (matcher *BeElementOfMatcher) Match(actual any) (success bool, err error) { + if reflect.TypeOf(actual) == nil { + return false, fmt.Errorf("BeElement matcher expects actual to be typed") + } + + var lastError error + for _, m := range flatten(matcher.Elements) { + matcher := &EqualMatcher{Expected: m} + success, err := matcher.Match(actual) + if err != nil { + lastError = err + continue + } + if success { + return true, nil + } + } + + return false, lastError +} + +func (matcher *BeElementOfMatcher) FailureMessage(actual any) (message string) { + return format.Message(actual, "to be an element of", presentable(matcher.Elements)) +} + +func (matcher *BeElementOfMatcher) NegatedFailureMessage(actual any) (message string) { + return format.Message(actual, "not to be an element of", presentable(matcher.Elements)) +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/be_empty_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/be_empty_matcher.go new file mode 100644 index 000000000..e9e0644f3 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/be_empty_matcher.go @@ -0,0 +1,43 @@ +// untested sections: 2 + +package matchers + +import ( + "fmt" + "reflect" + + "github.com/onsi/gomega/format" + "github.com/onsi/gomega/matchers/internal/miter" +) + +type BeEmptyMatcher struct { +} + +func (matcher *BeEmptyMatcher) Match(actual any) (success bool, err error) { + // short-circuit the iterator case, as we only need to see the first + // element, if any. + if miter.IsIter(actual) { + var length int + if miter.IsSeq2(actual) { + miter.IterateKV(actual, func(k, v reflect.Value) bool { length++; return false }) + } else { + miter.IterateV(actual, func(v reflect.Value) bool { length++; return false }) + } + return length == 0, nil + } + + length, ok := lengthOf(actual) + if !ok { + return false, fmt.Errorf("BeEmpty matcher expects a string/array/map/channel/slice/iterator. Got:\n%s", format.Object(actual, 1)) + } + + return length == 0, nil +} + +func (matcher *BeEmptyMatcher) FailureMessage(actual any) (message string) { + return format.Message(actual, "to be empty") +} + +func (matcher *BeEmptyMatcher) NegatedFailureMessage(actual any) (message string) { + return format.Message(actual, "not to be empty") +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/be_equivalent_to_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/be_equivalent_to_matcher.go new file mode 100644 index 000000000..37b3080ba --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/be_equivalent_to_matcher.go @@ -0,0 +1,36 @@ +// untested sections: 2 + +package matchers + +import ( + "fmt" + "reflect" + + "github.com/onsi/gomega/format" +) + +type BeEquivalentToMatcher struct { + Expected any +} + +func (matcher *BeEquivalentToMatcher) Match(actual any) (success bool, err error) { + if actual == nil && matcher.Expected == nil { + return false, fmt.Errorf("Both actual and expected must not be nil.") + } + + convertedActual := actual + + if actual != nil && matcher.Expected != nil && reflect.TypeOf(actual).ConvertibleTo(reflect.TypeOf(matcher.Expected)) { + convertedActual = reflect.ValueOf(actual).Convert(reflect.TypeOf(matcher.Expected)).Interface() + } + + return reflect.DeepEqual(convertedActual, matcher.Expected), nil +} + +func (matcher *BeEquivalentToMatcher) FailureMessage(actual any) (message string) { + return format.Message(actual, "to be equivalent to", matcher.Expected) +} + +func (matcher *BeEquivalentToMatcher) NegatedFailureMessage(actual any) (message string) { + return format.Message(actual, "not to be equivalent to", matcher.Expected) +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/be_false_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/be_false_matcher.go new file mode 100644 index 000000000..55e869515 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/be_false_matcher.go @@ -0,0 +1,37 @@ +// untested sections: 2 + +package matchers + +import ( + "fmt" + + "github.com/onsi/gomega/format" +) + +type BeFalseMatcher struct { + Reason string +} + +func (matcher *BeFalseMatcher) Match(actual any) (success bool, err error) { + if !isBool(actual) { + return false, fmt.Errorf("Expected a boolean. Got:\n%s", format.Object(actual, 1)) + } + + return actual == false, nil +} + +func (matcher *BeFalseMatcher) FailureMessage(actual any) (message string) { + if matcher.Reason == "" { + return format.Message(actual, "to be false") + } else { + return matcher.Reason + } +} + +func (matcher *BeFalseMatcher) NegatedFailureMessage(actual any) (message string) { + if matcher.Reason == "" { + return format.Message(actual, "not to be false") + } else { + return fmt.Sprintf(`Expected not false but got false\nNegation of "%s" failed`, matcher.Reason) + } +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/be_identical_to.go b/tests/vendor/github.com/onsi/gomega/matchers/be_identical_to.go new file mode 100644 index 000000000..579aa41b3 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/be_identical_to.go @@ -0,0 +1,39 @@ +// untested sections: 2 + +package matchers + +import ( + "fmt" + "runtime" + + "github.com/onsi/gomega/format" +) + +type BeIdenticalToMatcher struct { + Expected any +} + +func (matcher *BeIdenticalToMatcher) Match(actual any) (success bool, matchErr error) { + if actual == nil && matcher.Expected == nil { + return false, fmt.Errorf("Refusing to compare to .\nBe explicit and use BeNil() instead. This is to avoid mistakes where both sides of an assertion are erroneously uninitialized.") + } + + defer func() { + if r := recover(); r != nil { + if _, ok := r.(runtime.Error); ok { + success = false + matchErr = nil + } + } + }() + + return actual == matcher.Expected, nil +} + +func (matcher *BeIdenticalToMatcher) FailureMessage(actual any) string { + return format.Message(actual, "to be identical to", matcher.Expected) +} + +func (matcher *BeIdenticalToMatcher) NegatedFailureMessage(actual any) string { + return format.Message(actual, "not to be identical to", matcher.Expected) +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/be_key_of_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/be_key_of_matcher.go new file mode 100644 index 000000000..3fff3df78 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/be_key_of_matcher.go @@ -0,0 +1,45 @@ +package matchers + +import ( + "fmt" + "reflect" + + "github.com/onsi/gomega/format" +) + +type BeKeyOfMatcher struct { + Map any +} + +func (matcher *BeKeyOfMatcher) Match(actual any) (success bool, err error) { + if !isMap(matcher.Map) { + return false, fmt.Errorf("BeKeyOf matcher needs expected to be a map type") + } + + if reflect.TypeOf(actual) == nil { + return false, fmt.Errorf("BeKeyOf matcher expects actual to be typed") + } + + var lastError error + for _, key := range reflect.ValueOf(matcher.Map).MapKeys() { + matcher := &EqualMatcher{Expected: key.Interface()} + success, err := matcher.Match(actual) + if err != nil { + lastError = err + continue + } + if success { + return true, nil + } + } + + return false, lastError +} + +func (matcher *BeKeyOfMatcher) FailureMessage(actual any) (message string) { + return format.Message(actual, "to be a key of", presentable(valuesOf(matcher.Map))) +} + +func (matcher *BeKeyOfMatcher) NegatedFailureMessage(actual any) (message string) { + return format.Message(actual, "not to be a key of", presentable(valuesOf(matcher.Map))) +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/be_nil_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/be_nil_matcher.go new file mode 100644 index 000000000..cab37f4f9 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/be_nil_matcher.go @@ -0,0 +1,20 @@ +// untested sections: 2 + +package matchers + +import "github.com/onsi/gomega/format" + +type BeNilMatcher struct { +} + +func (matcher *BeNilMatcher) Match(actual any) (success bool, err error) { + return isNil(actual), nil +} + +func (matcher *BeNilMatcher) FailureMessage(actual any) (message string) { + return format.Message(actual, "to be nil") +} + +func (matcher *BeNilMatcher) NegatedFailureMessage(actual any) (message string) { + return format.Message(actual, "not to be nil") +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/be_numerically_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/be_numerically_matcher.go new file mode 100644 index 000000000..7e6ce154e --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/be_numerically_matcher.go @@ -0,0 +1,134 @@ +// untested sections: 4 + +package matchers + +import ( + "fmt" + "math" + + "github.com/onsi/gomega/format" +) + +type BeNumericallyMatcher struct { + Comparator string + CompareTo []any +} + +func (matcher *BeNumericallyMatcher) FailureMessage(actual any) (message string) { + return matcher.FormatFailureMessage(actual, false) +} + +func (matcher *BeNumericallyMatcher) NegatedFailureMessage(actual any) (message string) { + return matcher.FormatFailureMessage(actual, true) +} + +func (matcher *BeNumericallyMatcher) FormatFailureMessage(actual any, negated bool) (message string) { + if len(matcher.CompareTo) == 1 { + message = fmt.Sprintf("to be %s", matcher.Comparator) + } else { + message = fmt.Sprintf("to be within %v of %s", matcher.CompareTo[1], matcher.Comparator) + } + if negated { + message = "not " + message + } + return format.Message(actual, message, matcher.CompareTo[0]) +} + +func (matcher *BeNumericallyMatcher) Match(actual any) (success bool, err error) { + if len(matcher.CompareTo) == 0 || len(matcher.CompareTo) > 2 { + return false, fmt.Errorf("BeNumerically requires 1 or 2 CompareTo arguments. Got:\n%s", format.Object(matcher.CompareTo, 1)) + } + if !isNumber(actual) { + return false, fmt.Errorf("Expected a number. Got:\n%s", format.Object(actual, 1)) + } + if !isNumber(matcher.CompareTo[0]) { + return false, fmt.Errorf("Expected a number. Got:\n%s", format.Object(matcher.CompareTo[0], 1)) + } + if len(matcher.CompareTo) == 2 && !isNumber(matcher.CompareTo[1]) { + return false, fmt.Errorf("Expected a number. Got:\n%s", format.Object(matcher.CompareTo[1], 1)) + } + + switch matcher.Comparator { + case "==", "~", ">", ">=", "<", "<=": + default: + return false, fmt.Errorf("Unknown comparator: %s", matcher.Comparator) + } + + if isFloat(actual) || isFloat(matcher.CompareTo[0]) { + var secondOperand float64 = 1e-8 + if len(matcher.CompareTo) == 2 { + secondOperand = toFloat(matcher.CompareTo[1]) + } + success = matcher.matchFloats(toFloat(actual), toFloat(matcher.CompareTo[0]), secondOperand) + } else if isInteger(actual) { + var secondOperand int64 = 0 + if len(matcher.CompareTo) == 2 { + secondOperand = toInteger(matcher.CompareTo[1]) + } + success = matcher.matchIntegers(toInteger(actual), toInteger(matcher.CompareTo[0]), secondOperand) + } else if isUnsignedInteger(actual) { + var secondOperand uint64 = 0 + if len(matcher.CompareTo) == 2 { + secondOperand = toUnsignedInteger(matcher.CompareTo[1]) + } + success = matcher.matchUnsignedIntegers(toUnsignedInteger(actual), toUnsignedInteger(matcher.CompareTo[0]), secondOperand) + } else { + return false, fmt.Errorf("Failed to compare:\n%s\n%s:\n%s", format.Object(actual, 1), matcher.Comparator, format.Object(matcher.CompareTo[0], 1)) + } + + return success, nil +} + +func (matcher *BeNumericallyMatcher) matchIntegers(actual, compareTo, threshold int64) (success bool) { + switch matcher.Comparator { + case "==", "~": + diff := actual - compareTo + return -threshold <= diff && diff <= threshold + case ">": + return (actual > compareTo) + case ">=": + return (actual >= compareTo) + case "<": + return (actual < compareTo) + case "<=": + return (actual <= compareTo) + } + return false +} + +func (matcher *BeNumericallyMatcher) matchUnsignedIntegers(actual, compareTo, threshold uint64) (success bool) { + switch matcher.Comparator { + case "==", "~": + if actual < compareTo { + actual, compareTo = compareTo, actual + } + return actual-compareTo <= threshold + case ">": + return (actual > compareTo) + case ">=": + return (actual >= compareTo) + case "<": + return (actual < compareTo) + case "<=": + return (actual <= compareTo) + } + return false +} + +func (matcher *BeNumericallyMatcher) matchFloats(actual, compareTo, threshold float64) (success bool) { + switch matcher.Comparator { + case "~": + return math.Abs(actual-compareTo) <= threshold + case "==": + return (actual == compareTo) + case ">": + return (actual > compareTo) + case ">=": + return (actual >= compareTo) + case "<": + return (actual < compareTo) + case "<=": + return (actual <= compareTo) + } + return false +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/be_sent_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/be_sent_matcher.go new file mode 100644 index 000000000..14ffbf6c4 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/be_sent_matcher.go @@ -0,0 +1,73 @@ +// untested sections: 3 + +package matchers + +import ( + "fmt" + "reflect" + + "github.com/onsi/gomega/format" +) + +type BeSentMatcher struct { + Arg any + channelClosed bool +} + +func (matcher *BeSentMatcher) Match(actual any) (success bool, err error) { + if !isChan(actual) { + return false, fmt.Errorf("BeSent expects a channel. Got:\n%s", format.Object(actual, 1)) + } + + channelType := reflect.TypeOf(actual) + channelValue := reflect.ValueOf(actual) + + if channelType.ChanDir() == reflect.RecvDir { + return false, fmt.Errorf("BeSent matcher cannot be passed a receive-only channel. Got:\n%s", format.Object(actual, 1)) + } + + argType := reflect.TypeOf(matcher.Arg) + assignable := argType.AssignableTo(channelType.Elem()) + + if !assignable { + return false, fmt.Errorf("Cannot pass:\n%s to the channel:\n%s\nThe types don't match.", format.Object(matcher.Arg, 1), format.Object(actual, 1)) + } + + argValue := reflect.ValueOf(matcher.Arg) + + defer func() { + if e := recover(); e != nil { + success = false + err = fmt.Errorf("Cannot send to a closed channel") + matcher.channelClosed = true + } + }() + + winnerIndex, _, _ := reflect.Select([]reflect.SelectCase{ + {Dir: reflect.SelectSend, Chan: channelValue, Send: argValue}, + {Dir: reflect.SelectDefault}, + }) + + var didSend bool + if winnerIndex == 0 { + didSend = true + } + + return didSend, nil +} + +func (matcher *BeSentMatcher) FailureMessage(actual any) (message string) { + return format.Message(actual, "to send:", matcher.Arg) +} + +func (matcher *BeSentMatcher) NegatedFailureMessage(actual any) (message string) { + return format.Message(actual, "not to send:", matcher.Arg) +} + +func (matcher *BeSentMatcher) MatchMayChangeInTheFuture(actual any) bool { + if !isChan(actual) { + return false + } + + return !matcher.channelClosed +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/be_temporally_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/be_temporally_matcher.go new file mode 100644 index 000000000..edb647c6f --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/be_temporally_matcher.go @@ -0,0 +1,68 @@ +// untested sections: 3 + +package matchers + +import ( + "fmt" + "time" + + "github.com/onsi/gomega/format" +) + +type BeTemporallyMatcher struct { + Comparator string + CompareTo time.Time + Threshold []time.Duration +} + +func (matcher *BeTemporallyMatcher) FailureMessage(actual any) (message string) { + return format.Message(actual, fmt.Sprintf("to be %s", matcher.Comparator), matcher.CompareTo) +} + +func (matcher *BeTemporallyMatcher) NegatedFailureMessage(actual any) (message string) { + return format.Message(actual, fmt.Sprintf("not to be %s", matcher.Comparator), matcher.CompareTo) +} + +func (matcher *BeTemporallyMatcher) Match(actual any) (bool, error) { + // predicate to test for time.Time type + isTime := func(t any) bool { + _, ok := t.(time.Time) + return ok + } + + if !isTime(actual) { + return false, fmt.Errorf("Expected a time.Time. Got:\n%s", format.Object(actual, 1)) + } + + switch matcher.Comparator { + case "==", "~", ">", ">=", "<", "<=": + default: + return false, fmt.Errorf("Unknown comparator: %s", matcher.Comparator) + } + + var threshold = time.Millisecond + if len(matcher.Threshold) == 1 { + threshold = matcher.Threshold[0] + } + + return matcher.matchTimes(actual.(time.Time), matcher.CompareTo, threshold), nil +} + +func (matcher *BeTemporallyMatcher) matchTimes(actual, compareTo time.Time, threshold time.Duration) (success bool) { + switch matcher.Comparator { + case "==": + return actual.Equal(compareTo) + case "~": + diff := actual.Sub(compareTo) + return -threshold <= diff && diff <= threshold + case ">": + return actual.After(compareTo) + case ">=": + return !actual.Before(compareTo) + case "<": + return actual.Before(compareTo) + case "<=": + return !actual.After(compareTo) + } + return false +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/be_true_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/be_true_matcher.go new file mode 100644 index 000000000..a010bec5a --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/be_true_matcher.go @@ -0,0 +1,37 @@ +// untested sections: 2 + +package matchers + +import ( + "fmt" + + "github.com/onsi/gomega/format" +) + +type BeTrueMatcher struct { + Reason string +} + +func (matcher *BeTrueMatcher) Match(actual any) (success bool, err error) { + if !isBool(actual) { + return false, fmt.Errorf("Expected a boolean. Got:\n%s", format.Object(actual, 1)) + } + + return actual.(bool), nil +} + +func (matcher *BeTrueMatcher) FailureMessage(actual any) (message string) { + if matcher.Reason == "" { + return format.Message(actual, "to be true") + } else { + return matcher.Reason + } +} + +func (matcher *BeTrueMatcher) NegatedFailureMessage(actual any) (message string) { + if matcher.Reason == "" { + return format.Message(actual, "not to be true") + } else { + return fmt.Sprintf(`Expected not true but got true\nNegation of "%s" failed`, matcher.Reason) + } +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/be_zero_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/be_zero_matcher.go new file mode 100644 index 000000000..f5f5d7f7d --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/be_zero_matcher.go @@ -0,0 +1,28 @@ +package matchers + +import ( + "reflect" + + "github.com/onsi/gomega/format" +) + +type BeZeroMatcher struct { +} + +func (matcher *BeZeroMatcher) Match(actual any) (success bool, err error) { + if actual == nil { + return true, nil + } + zeroValue := reflect.Zero(reflect.TypeOf(actual)).Interface() + + return reflect.DeepEqual(zeroValue, actual), nil + +} + +func (matcher *BeZeroMatcher) FailureMessage(actual any) (message string) { + return format.Message(actual, "to be zero-valued") +} + +func (matcher *BeZeroMatcher) NegatedFailureMessage(actual any) (message string) { + return format.Message(actual, "not to be zero-valued") +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/consist_of.go b/tests/vendor/github.com/onsi/gomega/matchers/consist_of.go new file mode 100644 index 000000000..05c751b66 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/consist_of.go @@ -0,0 +1,177 @@ +// untested sections: 3 + +package matchers + +import ( + "fmt" + "reflect" + + "github.com/onsi/gomega/format" + "github.com/onsi/gomega/matchers/internal/miter" + "github.com/onsi/gomega/matchers/support/goraph/bipartitegraph" +) + +type ConsistOfMatcher struct { + Elements []any + missingElements []any + extraElements []any +} + +func (matcher *ConsistOfMatcher) Match(actual any) (success bool, err error) { + if !isArrayOrSlice(actual) && !isMap(actual) && !miter.IsIter(actual) { + return false, fmt.Errorf("ConsistOf matcher expects an array/slice/map/iter.Seq/iter.Seq2. Got:\n%s", format.Object(actual, 1)) + } + + matchers := matchers(matcher.Elements) + values := valuesOf(actual) + + bipartiteGraph, err := bipartitegraph.NewBipartiteGraph(values, matchers, neighbours) + if err != nil { + return false, err + } + + edges := bipartiteGraph.LargestMatching() + if len(edges) == len(values) && len(edges) == len(matchers) { + return true, nil + } + + var missingMatchers []any + matcher.extraElements, missingMatchers = bipartiteGraph.FreeLeftRight(edges) + matcher.missingElements = equalMatchersToElements(missingMatchers) + + return false, nil +} + +func neighbours(value, matcher any) (bool, error) { + match, err := matcher.(omegaMatcher).Match(value) + return match && err == nil, nil +} + +func equalMatchersToElements(matchers []any) (elements []any) { + for _, matcher := range matchers { + if equalMatcher, ok := matcher.(*EqualMatcher); ok { + elements = append(elements, equalMatcher.Expected) + } else if _, ok := matcher.(*BeNilMatcher); ok { + elements = append(elements, nil) + } else { + elements = append(elements, matcher) + } + } + return +} + +func flatten(elems []any) []any { + if len(elems) != 1 || + !(isArrayOrSlice(elems[0]) || + (miter.IsIter(elems[0]) && !miter.IsSeq2(elems[0]))) { + return elems + } + + if miter.IsIter(elems[0]) { + flattened := []any{} + miter.IterateV(elems[0], func(v reflect.Value) bool { + flattened = append(flattened, v.Interface()) + return true + }) + return flattened + } + + value := reflect.ValueOf(elems[0]) + flattened := make([]any, value.Len()) + for i := 0; i < value.Len(); i++ { + flattened[i] = value.Index(i).Interface() + } + return flattened +} + +func matchers(expectedElems []any) (matchers []any) { + for _, e := range flatten(expectedElems) { + if e == nil { + matchers = append(matchers, &BeNilMatcher{}) + } else if matcher, isMatcher := e.(omegaMatcher); isMatcher { + matchers = append(matchers, matcher) + } else { + matchers = append(matchers, &EqualMatcher{Expected: e}) + } + } + return +} + +func presentable(elems []any) any { + elems = flatten(elems) + + if len(elems) == 0 { + return []any{} + } + + sv := reflect.ValueOf(elems) + firstEl := sv.Index(0) + if firstEl.IsNil() { + return elems + } + tt := firstEl.Elem().Type() + for i := 1; i < sv.Len(); i++ { + el := sv.Index(i) + if el.IsNil() || (sv.Index(i).Elem().Type() != tt) { + return elems + } + } + + ss := reflect.MakeSlice(reflect.SliceOf(tt), sv.Len(), sv.Len()) + for i := 0; i < sv.Len(); i++ { + ss.Index(i).Set(sv.Index(i).Elem()) + } + + return ss.Interface() +} + +func valuesOf(actual any) []any { + value := reflect.ValueOf(actual) + values := []any{} + if miter.IsIter(actual) { + if miter.IsSeq2(actual) { + miter.IterateKV(actual, func(k, v reflect.Value) bool { + values = append(values, v.Interface()) + return true + }) + } else { + miter.IterateV(actual, func(v reflect.Value) bool { + values = append(values, v.Interface()) + return true + }) + } + } else if isMap(actual) { + keys := value.MapKeys() + for i := 0; i < value.Len(); i++ { + values = append(values, value.MapIndex(keys[i]).Interface()) + } + } else { + for i := 0; i < value.Len(); i++ { + values = append(values, value.Index(i).Interface()) + } + } + + return values +} + +func (matcher *ConsistOfMatcher) FailureMessage(actual any) (message string) { + message = format.Message(actual, "to consist of", presentable(matcher.Elements)) + message = appendMissingElements(message, matcher.missingElements) + if len(matcher.extraElements) > 0 { + message = fmt.Sprintf("%s\nthe extra elements were\n%s", message, + format.Object(presentable(matcher.extraElements), 1)) + } + return +} + +func appendMissingElements(message string, missingElements []any) string { + if len(missingElements) == 0 { + return message + } + return fmt.Sprintf("%s\nthe missing elements were\n%s", message, + format.Object(presentable(missingElements), 1)) +} + +func (matcher *ConsistOfMatcher) NegatedFailureMessage(actual any) (message string) { + return format.Message(actual, "not to consist of", presentable(matcher.Elements)) +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/contain_element_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/contain_element_matcher.go new file mode 100644 index 000000000..8337a5261 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/contain_element_matcher.go @@ -0,0 +1,293 @@ +// untested sections: 2 + +package matchers + +import ( + "errors" + "fmt" + "reflect" + + "github.com/onsi/gomega/format" + "github.com/onsi/gomega/matchers/internal/miter" +) + +type ContainElementMatcher struct { + Element any + Result []any +} + +func (matcher *ContainElementMatcher) Match(actual any) (success bool, err error) { + if !isArrayOrSlice(actual) && !isMap(actual) && !miter.IsIter(actual) { + return false, fmt.Errorf("ContainElement matcher expects an array/slice/map/iterator. Got:\n%s", format.Object(actual, 1)) + } + + var actualT reflect.Type + var result reflect.Value + switch numResultArgs := len(matcher.Result); { + case numResultArgs > 1: + return false, errors.New("ContainElement matcher expects at most a single optional pointer to store its findings at") + case numResultArgs == 1: + // Check the optional result arg to point to a single value/array/slice/map + // of a type compatible with the actual value. + if reflect.ValueOf(matcher.Result[0]).Kind() != reflect.Ptr { + return false, fmt.Errorf("ContainElement matcher expects a non-nil pointer to store its findings at. Got\n%s", + format.Object(matcher.Result[0], 1)) + } + actualT = reflect.TypeOf(actual) + resultReference := matcher.Result[0] + result = reflect.ValueOf(resultReference).Elem() // what ResultReference points to, to stash away our findings + switch result.Kind() { + case reflect.Array: // result arrays are not supported, as they cannot be dynamically sized. + if miter.IsIter(actual) { + _, actualvT := miter.IterKVTypes(actual) + return false, fmt.Errorf("ContainElement cannot return findings. Need *%s, got *%s", + reflect.SliceOf(actualvT), result.Type().String()) + } + return false, fmt.Errorf("ContainElement cannot return findings. Need *%s, got *%s", + reflect.SliceOf(actualT.Elem()).String(), result.Type().String()) + + case reflect.Slice: // result slice + // can we assign elements in actual to elements in what the result + // arg points to? + // - ✔ actual is an array or slice + // - ✔ actual is an iter.Seq producing "v" elements + // - ✔ actual is an iter.Seq2 producing "v" elements, ignoring + // the "k" elements. + switch { + case isArrayOrSlice(actual): + if !actualT.Elem().AssignableTo(result.Type().Elem()) { + return false, fmt.Errorf("ContainElement cannot return findings. Need *%s, got *%s", + actualT.String(), result.Type().String()) + } + + case miter.IsIter(actual): + _, actualvT := miter.IterKVTypes(actual) + if !actualvT.AssignableTo(result.Type().Elem()) { + return false, fmt.Errorf("ContainElement cannot return findings. Need *%s, got *%s", + actualvT.String(), result.Type().String()) + } + + default: // incompatible result reference + return false, fmt.Errorf("ContainElement cannot return findings. Need *%s, got *%s", + reflect.MapOf(actualT.Key(), actualT.Elem()).String(), result.Type().String()) + } + + case reflect.Map: // result map + // can we assign elements in actual to elements in what the result + // arg points to? + // - ✔ actual is a map + // - ✔ actual is an iter.Seq2 (iter.Seq doesn't fit though) + switch { + case isMap(actual): + if !actualT.AssignableTo(result.Type()) { + return false, fmt.Errorf("ContainElement cannot return findings. Need *%s, got *%s", + actualT.String(), result.Type().String()) + } + + case miter.IsIter(actual): + actualkT, actualvT := miter.IterKVTypes(actual) + if actualkT == nil { + return false, fmt.Errorf("ContainElement cannot return findings. Need *%s, got *%s", + reflect.SliceOf(actualvT).String(), result.Type().String()) + } + if !reflect.MapOf(actualkT, actualvT).AssignableTo(result.Type()) { + return false, fmt.Errorf("ContainElement cannot return findings. Need *%s, got *%s", + reflect.MapOf(actualkT, actualvT), result.Type().String()) + } + + default: // incompatible result reference + return false, fmt.Errorf("ContainElement cannot return findings. Need *%s, got *%s", + actualT.String(), result.Type().String()) + } + + default: + // can we assign a (single) element in actual to what the result arg + // points to? + switch { + case miter.IsIter(actual): + _, actualvT := miter.IterKVTypes(actual) + if !actualvT.AssignableTo(result.Type()) { + return false, fmt.Errorf("ContainElement cannot return findings. Need *%s, got *%s", + actualvT.String(), result.Type().String()) + } + default: + if !actualT.Elem().AssignableTo(result.Type()) { + return false, fmt.Errorf("ContainElement cannot return findings. Need *%s, got *%s", + actualT.Elem().String(), result.Type().String()) + } + } + } + } + + // If the supplied matcher isn't an Omega matcher, default to the Equal + // matcher. + elemMatcher, elementIsMatcher := matcher.Element.(omegaMatcher) + if !elementIsMatcher { + elemMatcher = &EqualMatcher{Expected: matcher.Element} + } + + value := reflect.ValueOf(actual) + + var getFindings func() reflect.Value // abstracts how the findings are collected and stored + var lastError error + + if !miter.IsIter(actual) { + var valueAt func(int) any + var foundAt func(int) + // We're dealing with an array/slice/map, so in all cases we can iterate + // over the elements in actual using indices (that can be considered + // keys in case of maps). + if isMap(actual) { + keys := value.MapKeys() + valueAt = func(i int) any { + return value.MapIndex(keys[i]).Interface() + } + if result.Kind() != reflect.Invalid { + fm := reflect.MakeMap(actualT) + getFindings = func() reflect.Value { return fm } + foundAt = func(i int) { + fm.SetMapIndex(keys[i], value.MapIndex(keys[i])) + } + } + } else { + valueAt = func(i int) any { + return value.Index(i).Interface() + } + if result.Kind() != reflect.Invalid { + var fsl reflect.Value + if result.Kind() == reflect.Slice { + fsl = reflect.MakeSlice(result.Type(), 0, 0) + } else { + fsl = reflect.MakeSlice(reflect.SliceOf(result.Type()), 0, 0) + } + getFindings = func() reflect.Value { return fsl } + foundAt = func(i int) { + fsl = reflect.Append(fsl, value.Index(i)) + } + } + } + + for i := 0; i < value.Len(); i++ { + elem := valueAt(i) + success, err := elemMatcher.Match(elem) + if err != nil { + lastError = err + continue + } + if success { + if result.Kind() == reflect.Invalid { + return true, nil + } + foundAt(i) + } + } + } else { + // We're dealing with an iterator as a first-class construct, so things + // are slightly different: there is no index defined as in case of + // arrays/slices/maps, just "ooooorder" + var found func(k, v reflect.Value) + if result.Kind() != reflect.Invalid { + if result.Kind() == reflect.Map { + fm := reflect.MakeMap(result.Type()) + getFindings = func() reflect.Value { return fm } + found = func(k, v reflect.Value) { fm.SetMapIndex(k, v) } + } else { + var fsl reflect.Value + if result.Kind() == reflect.Slice { + fsl = reflect.MakeSlice(result.Type(), 0, 0) + } else { + fsl = reflect.MakeSlice(reflect.SliceOf(result.Type()), 0, 0) + } + getFindings = func() reflect.Value { return fsl } + found = func(_, v reflect.Value) { fsl = reflect.Append(fsl, v) } + } + } + + success := false + actualkT, _ := miter.IterKVTypes(actual) + if actualkT == nil { + miter.IterateV(actual, func(v reflect.Value) bool { + var err error + success, err = elemMatcher.Match(v.Interface()) + if err != nil { + lastError = err + return true // iterate on... + } + if success { + if result.Kind() == reflect.Invalid { + return false // a match and no result needed, so we're done + } + found(reflect.Value{}, v) + } + return true // iterate on... + }) + } else { + miter.IterateKV(actual, func(k, v reflect.Value) bool { + var err error + success, err = elemMatcher.Match(v.Interface()) + if err != nil { + lastError = err + return true // iterate on... + } + if success { + if result.Kind() == reflect.Invalid { + return false // a match and no result needed, so we're done + } + found(k, v) + } + return true // iterate on... + }) + } + if success && result.Kind() == reflect.Invalid { + return true, nil + } + } + + // when the expectation isn't interested in the findings except for success + // or non-success, then we're done here and return the last matcher error + // seen, if any, as well as non-success. + if result.Kind() == reflect.Invalid { + return false, lastError + } + + // pick up any findings the test is interested in as it specified a non-nil + // result reference. However, the expectation always is that there are at + // least one or multiple findings. So, if a result is expected, but we had + // no findings, then this is an error. + findings := getFindings() + if findings.Len() == 0 { + return false, lastError + } + + // there's just a single finding and the result is neither a slice nor a map + // (so it's a scalar): pick the one and only finding and return it in the + // place the reference points to. + if findings.Len() == 1 && !isArrayOrSlice(result.Interface()) && !isMap(result.Interface()) { + if isMap(actual) { + miter := findings.MapRange() + miter.Next() + result.Set(miter.Value()) + } else { + result.Set(findings.Index(0)) + } + return true, nil + } + + // at least one or even multiple findings and a the result references a + // slice or a map, so all we need to do is to store our findings where the + // reference points to. + if !findings.Type().AssignableTo(result.Type()) { + return false, fmt.Errorf("ContainElement cannot return multiple findings. Need *%s, got *%s", + findings.Type().String(), result.Type().String()) + } + result.Set(findings) + return true, nil +} + +func (matcher *ContainElementMatcher) FailureMessage(actual any) (message string) { + return format.Message(actual, "to contain element matching", matcher.Element) +} + +func (matcher *ContainElementMatcher) NegatedFailureMessage(actual any) (message string) { + return format.Message(actual, "not to contain element matching", matcher.Element) +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/contain_elements_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/contain_elements_matcher.go new file mode 100644 index 000000000..ce3041892 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/contain_elements_matcher.go @@ -0,0 +1,45 @@ +package matchers + +import ( + "fmt" + + "github.com/onsi/gomega/format" + "github.com/onsi/gomega/matchers/internal/miter" + "github.com/onsi/gomega/matchers/support/goraph/bipartitegraph" +) + +type ContainElementsMatcher struct { + Elements []any + missingElements []any +} + +func (matcher *ContainElementsMatcher) Match(actual any) (success bool, err error) { + if !isArrayOrSlice(actual) && !isMap(actual) && !miter.IsIter(actual) { + return false, fmt.Errorf("ContainElements matcher expects an array/slice/map/iter.Seq/iter.Seq2. Got:\n%s", format.Object(actual, 1)) + } + + matchers := matchers(matcher.Elements) + bipartiteGraph, err := bipartitegraph.NewBipartiteGraph(valuesOf(actual), matchers, neighbours) + if err != nil { + return false, err + } + + edges := bipartiteGraph.LargestMatching() + if len(edges) == len(matchers) { + return true, nil + } + + _, missingMatchers := bipartiteGraph.FreeLeftRight(edges) + matcher.missingElements = equalMatchersToElements(missingMatchers) + + return false, nil +} + +func (matcher *ContainElementsMatcher) FailureMessage(actual any) (message string) { + message = format.Message(actual, "to contain elements", presentable(matcher.Elements)) + return appendMissingElements(message, matcher.missingElements) +} + +func (matcher *ContainElementsMatcher) NegatedFailureMessage(actual any) (message string) { + return format.Message(actual, "not to contain elements", presentable(matcher.Elements)) +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/contain_substring_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/contain_substring_matcher.go new file mode 100644 index 000000000..d9980ee26 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/contain_substring_matcher.go @@ -0,0 +1,40 @@ +// untested sections: 2 + +package matchers + +import ( + "fmt" + "strings" + + "github.com/onsi/gomega/format" +) + +type ContainSubstringMatcher struct { + Substr string + Args []any +} + +func (matcher *ContainSubstringMatcher) Match(actual any) (success bool, err error) { + actualString, ok := toString(actual) + if !ok { + return false, fmt.Errorf("ContainSubstring matcher requires a string or stringer. Got:\n%s", format.Object(actual, 1)) + } + + return strings.Contains(actualString, matcher.stringToMatch()), nil +} + +func (matcher *ContainSubstringMatcher) stringToMatch() string { + stringToMatch := matcher.Substr + if len(matcher.Args) > 0 { + stringToMatch = fmt.Sprintf(matcher.Substr, matcher.Args...) + } + return stringToMatch +} + +func (matcher *ContainSubstringMatcher) FailureMessage(actual any) (message string) { + return format.Message(actual, "to contain substring", matcher.stringToMatch()) +} + +func (matcher *ContainSubstringMatcher) NegatedFailureMessage(actual any) (message string) { + return format.Message(actual, "not to contain substring", matcher.stringToMatch()) +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/equal_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/equal_matcher.go new file mode 100644 index 000000000..4ad166157 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/equal_matcher.go @@ -0,0 +1,42 @@ +package matchers + +import ( + "bytes" + "fmt" + "reflect" + + "github.com/onsi/gomega/format" +) + +type EqualMatcher struct { + Expected any +} + +func (matcher *EqualMatcher) Match(actual any) (success bool, err error) { + if actual == nil && matcher.Expected == nil { + return false, fmt.Errorf("Refusing to compare to .\nBe explicit and use BeNil() instead. This is to avoid mistakes where both sides of an assertion are erroneously uninitialized.") + } + // Shortcut for byte slices. + // Comparing long byte slices with reflect.DeepEqual is very slow, + // so use bytes.Equal if actual and expected are both byte slices. + if actualByteSlice, ok := actual.([]byte); ok { + if expectedByteSlice, ok := matcher.Expected.([]byte); ok { + return bytes.Equal(actualByteSlice, expectedByteSlice), nil + } + } + return reflect.DeepEqual(actual, matcher.Expected), nil +} + +func (matcher *EqualMatcher) FailureMessage(actual any) (message string) { + actualString, actualOK := actual.(string) + expectedString, expectedOK := matcher.Expected.(string) + if actualOK && expectedOK { + return format.MessageWithDiff(actualString, "to equal", expectedString) + } + + return format.Message(actual, "to equal", matcher.Expected) +} + +func (matcher *EqualMatcher) NegatedFailureMessage(actual any) (message string) { + return format.Message(actual, "not to equal", matcher.Expected) +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/have_cap_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/have_cap_matcher.go new file mode 100644 index 000000000..a4fcfc425 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/have_cap_matcher.go @@ -0,0 +1,30 @@ +// untested sections: 2 + +package matchers + +import ( + "fmt" + + "github.com/onsi/gomega/format" +) + +type HaveCapMatcher struct { + Count int +} + +func (matcher *HaveCapMatcher) Match(actual any) (success bool, err error) { + length, ok := capOf(actual) + if !ok { + return false, fmt.Errorf("HaveCap matcher expects a array/channel/slice. Got:\n%s", format.Object(actual, 1)) + } + + return length == matcher.Count, nil +} + +func (matcher *HaveCapMatcher) FailureMessage(actual any) (message string) { + return fmt.Sprintf("Expected\n%s\nto have capacity %d", format.Object(actual, 1), matcher.Count) +} + +func (matcher *HaveCapMatcher) NegatedFailureMessage(actual any) (message string) { + return fmt.Sprintf("Expected\n%s\nnot to have capacity %d", format.Object(actual, 1), matcher.Count) +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/have_each_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/have_each_matcher.go new file mode 100644 index 000000000..4c45063bd --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/have_each_matcher.go @@ -0,0 +1,99 @@ +package matchers + +import ( + "fmt" + "reflect" + + "github.com/onsi/gomega/format" + "github.com/onsi/gomega/matchers/internal/miter" +) + +type HaveEachMatcher struct { + Element any +} + +func (matcher *HaveEachMatcher) Match(actual any) (success bool, err error) { + if !isArrayOrSlice(actual) && !isMap(actual) && !miter.IsIter(actual) { + return false, fmt.Errorf("HaveEach matcher expects an array/slice/map/iter.Seq/iter.Seq2. Got:\n%s", + format.Object(actual, 1)) + } + + elemMatcher, elementIsMatcher := matcher.Element.(omegaMatcher) + if !elementIsMatcher { + elemMatcher = &EqualMatcher{Expected: matcher.Element} + } + + if miter.IsIter(actual) { + // rejecting the non-elements case works different for iterators as we + // don't want to fetch all elements into a slice first. + count := 0 + var success bool + var err error + if miter.IsSeq2(actual) { + miter.IterateKV(actual, func(k, v reflect.Value) bool { + count++ + success, err = elemMatcher.Match(v.Interface()) + if err != nil { + return false + } + return success + }) + } else { + miter.IterateV(actual, func(v reflect.Value) bool { + count++ + success, err = elemMatcher.Match(v.Interface()) + if err != nil { + return false + } + return success + }) + } + if count == 0 { + return false, fmt.Errorf("HaveEach matcher expects a non-empty iter.Seq/iter.Seq2. Got:\n%s", + format.Object(actual, 1)) + } + return success, err + } + + value := reflect.ValueOf(actual) + if value.Len() == 0 { + return false, fmt.Errorf("HaveEach matcher expects a non-empty array/slice/map. Got:\n%s", + format.Object(actual, 1)) + } + + var valueAt func(int) any + if isMap(actual) { + keys := value.MapKeys() + valueAt = func(i int) any { + return value.MapIndex(keys[i]).Interface() + } + } else { + valueAt = func(i int) any { + return value.Index(i).Interface() + } + } + + // if we never failed then we succeed; the empty/nil cases have already been + // rejected above. + for i := 0; i < value.Len(); i++ { + success, err := elemMatcher.Match(valueAt(i)) + if err != nil { + return false, err + } + if !success { + return false, nil + } + } + + return true, nil +} + +// FailureMessage returns a suitable failure message. +func (matcher *HaveEachMatcher) FailureMessage(actual any) (message string) { + return format.Message(actual, "to contain element matching", matcher.Element) +} + +// NegatedFailureMessage returns a suitable negated failure message. +func (matcher *HaveEachMatcher) NegatedFailureMessage(actual any) (message string) { + return format.Message(actual, "not to contain element matching", matcher.Element) +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/have_exact_elements.go b/tests/vendor/github.com/onsi/gomega/matchers/have_exact_elements.go new file mode 100644 index 000000000..8b2d297c5 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/have_exact_elements.go @@ -0,0 +1,136 @@ +package matchers + +import ( + "fmt" + "reflect" + + "github.com/onsi/gomega/format" + "github.com/onsi/gomega/matchers/internal/miter" +) + +type mismatchFailure struct { + failure string + index int +} + +type HaveExactElementsMatcher struct { + Elements []any + mismatchFailures []mismatchFailure + missingIndex int + extraIndex int +} + +func (matcher *HaveExactElementsMatcher) Match(actual any) (success bool, err error) { + matcher.resetState() + + if isMap(actual) || miter.IsSeq2(actual) { + return false, fmt.Errorf("HaveExactElements matcher doesn't work on map or iter.Seq2. Got:\n%s", format.Object(actual, 1)) + } + + matchers := matchers(matcher.Elements) + lenMatchers := len(matchers) + + success = true + + if miter.IsIter(actual) { + // In the worst case, we need to see everything before we can give our + // verdict. The only exception is fast fail. + i := 0 + miter.IterateV(actual, func(v reflect.Value) bool { + if i >= lenMatchers { + // the iterator produces more values than we got matchers: this + // is not good. + matcher.extraIndex = i + success = false + return false + } + + elemMatcher := matchers[i].(omegaMatcher) + match, err := elemMatcher.Match(v.Interface()) + if err != nil { + matcher.mismatchFailures = append(matcher.mismatchFailures, mismatchFailure{ + index: i, + failure: err.Error(), + }) + success = false + } else if !match { + matcher.mismatchFailures = append(matcher.mismatchFailures, mismatchFailure{ + index: i, + failure: elemMatcher.FailureMessage(v.Interface()), + }) + success = false + } + i++ + return true + }) + if i < len(matchers) { + // the iterator produced less values than we got matchers: this is + // no good, no no no. + matcher.missingIndex = i + success = false + } + return success, nil + } + + values := valuesOf(actual) + lenValues := len(values) + + for i := 0; i < lenMatchers || i < lenValues; i++ { + if i >= lenMatchers { + matcher.extraIndex = i + success = false + continue + } + + if i >= lenValues { + matcher.missingIndex = i + success = false + return + } + + elemMatcher := matchers[i].(omegaMatcher) + match, err := elemMatcher.Match(values[i]) + if err != nil { + matcher.mismatchFailures = append(matcher.mismatchFailures, mismatchFailure{ + index: i, + failure: err.Error(), + }) + success = false + } else if !match { + matcher.mismatchFailures = append(matcher.mismatchFailures, mismatchFailure{ + index: i, + failure: elemMatcher.FailureMessage(values[i]), + }) + success = false + } + } + + return success, nil +} + +func (matcher *HaveExactElementsMatcher) FailureMessage(actual any) (message string) { + message = format.Message(actual, "to have exact elements with", presentable(matcher.Elements)) + if matcher.missingIndex > 0 { + message = fmt.Sprintf("%s\nthe missing elements start from index %d", message, matcher.missingIndex) + } + if matcher.extraIndex > 0 { + message = fmt.Sprintf("%s\nthe extra elements start from index %d", message, matcher.extraIndex) + } + if len(matcher.mismatchFailures) != 0 { + message = fmt.Sprintf("%s\nthe mismatch indexes were:", message) + } + for _, mismatch := range matcher.mismatchFailures { + message = fmt.Sprintf("%s\n%d: %s", message, mismatch.index, mismatch.failure) + } + return +} + +func (matcher *HaveExactElementsMatcher) NegatedFailureMessage(actual any) (message string) { + return format.Message(actual, "not to contain elements", presentable(matcher.Elements)) +} + +func (matcher *HaveExactElementsMatcher) resetState() { + matcher.mismatchFailures = nil + matcher.missingIndex = 0 + matcher.extraIndex = 0 +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/have_existing_field_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/have_existing_field_matcher.go new file mode 100644 index 000000000..a5a028e9a --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/have_existing_field_matcher.go @@ -0,0 +1,36 @@ +package matchers + +import ( + "errors" + "fmt" + + "github.com/onsi/gomega/format" +) + +type HaveExistingFieldMatcher struct { + Field string +} + +func (matcher *HaveExistingFieldMatcher) Match(actual any) (success bool, err error) { + // we don't care about the field's actual value, just about any error in + // trying to find the field (or method). + _, err = extractField(actual, matcher.Field, "HaveExistingField") + if err == nil { + return true, nil + } + var mferr missingFieldError + if errors.As(err, &mferr) { + // missing field errors aren't errors in this context, but instead + // unsuccessful matches. + return false, nil + } + return false, err +} + +func (matcher *HaveExistingFieldMatcher) FailureMessage(actual any) (message string) { + return fmt.Sprintf("Expected\n%s\nto have field '%s'", format.Object(actual, 1), matcher.Field) +} + +func (matcher *HaveExistingFieldMatcher) NegatedFailureMessage(actual any) (message string) { + return fmt.Sprintf("Expected\n%s\nnot to have field '%s'", format.Object(actual, 1), matcher.Field) +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/have_field.go b/tests/vendor/github.com/onsi/gomega/matchers/have_field.go new file mode 100644 index 000000000..d9fbeaf75 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/have_field.go @@ -0,0 +1,114 @@ +package matchers + +import ( + "fmt" + "reflect" + "strings" + + "github.com/onsi/gomega/format" +) + +// missingFieldError represents a missing field extraction error that +// HaveExistingFieldMatcher can ignore, as opposed to other, sever field +// extraction errors, such as nil pointers, et cetera. +type missingFieldError string + +func (e missingFieldError) Error() string { + return string(e) +} + +func extractField(actual any, field string, matchername string) (any, error) { + fields := strings.SplitN(field, ".", 2) + actualValue := reflect.ValueOf(actual) + + if actualValue.Kind() == reflect.Ptr { + actualValue = actualValue.Elem() + } + if actualValue == (reflect.Value{}) { + return nil, fmt.Errorf("%s encountered nil while dereferencing a pointer of type %T.", matchername, actual) + } + + if actualValue.Kind() != reflect.Struct { + return nil, fmt.Errorf("%s encountered:\n%s\nWhich is not a struct.", matchername, format.Object(actual, 1)) + } + + var extractedValue reflect.Value + + if strings.HasSuffix(fields[0], "()") { + extractedValue = actualValue.MethodByName(strings.TrimSuffix(fields[0], "()")) + if extractedValue == (reflect.Value{}) && actualValue.CanAddr() { + extractedValue = actualValue.Addr().MethodByName(strings.TrimSuffix(fields[0], "()")) + } + if extractedValue == (reflect.Value{}) { + ptr := reflect.New(actualValue.Type()) + ptr.Elem().Set(actualValue) + extractedValue = ptr.MethodByName(strings.TrimSuffix(fields[0], "()")) + if extractedValue == (reflect.Value{}) { + return nil, missingFieldError(fmt.Sprintf("%s could not find method named '%s' in struct of type %T.", matchername, fields[0], actual)) + } + } + t := extractedValue.Type() + if t.NumIn() != 0 || t.NumOut() != 1 { + return nil, fmt.Errorf("%s found an invalid method named '%s' in struct of type %T.\nMethods must take no arguments and return exactly one value.", matchername, fields[0], actual) + } + extractedValue = extractedValue.Call([]reflect.Value{})[0] + } else { + extractedValue = actualValue.FieldByName(fields[0]) + if extractedValue == (reflect.Value{}) { + return nil, missingFieldError(fmt.Sprintf("%s could not find field named '%s' in struct:\n%s", matchername, fields[0], format.Object(actual, 1))) + } + } + + if len(fields) == 1 { + return extractedValue.Interface(), nil + } else { + return extractField(extractedValue.Interface(), fields[1], matchername) + } +} + +type HaveFieldMatcher struct { + Field string + Expected any +} + +func (matcher *HaveFieldMatcher) expectedMatcher() omegaMatcher { + var isMatcher bool + expectedMatcher, isMatcher := matcher.Expected.(omegaMatcher) + if !isMatcher { + expectedMatcher = &EqualMatcher{Expected: matcher.Expected} + } + return expectedMatcher +} + +func (matcher *HaveFieldMatcher) Match(actual any) (success bool, err error) { + extractedField, err := extractField(actual, matcher.Field, "HaveField") + if err != nil { + return false, err + } + + return matcher.expectedMatcher().Match(extractedField) +} + +func (matcher *HaveFieldMatcher) FailureMessage(actual any) (message string) { + extractedField, err := extractField(actual, matcher.Field, "HaveField") + if err != nil { + // this really shouldn't happen + return fmt.Sprintf("Failed to extract field '%s': %s", matcher.Field, err) + } + message = fmt.Sprintf("Value for field '%s' failed to satisfy matcher.\n", matcher.Field) + message += matcher.expectedMatcher().FailureMessage(extractedField) + + return message +} + +func (matcher *HaveFieldMatcher) NegatedFailureMessage(actual any) (message string) { + extractedField, err := extractField(actual, matcher.Field, "HaveField") + if err != nil { + // this really shouldn't happen + return fmt.Sprintf("Failed to extract field '%s': %s", matcher.Field, err) + } + message = fmt.Sprintf("Value for field '%s' satisfied matcher, but should not have.\n", matcher.Field) + message += matcher.expectedMatcher().NegatedFailureMessage(extractedField) + + return message +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/have_http_body_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/have_http_body_matcher.go new file mode 100644 index 000000000..2d561b9a2 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/have_http_body_matcher.go @@ -0,0 +1,104 @@ +package matchers + +import ( + "fmt" + "net/http" + "net/http/httptest" + + "github.com/onsi/gomega/format" + "github.com/onsi/gomega/internal/gutil" + "github.com/onsi/gomega/types" +) + +type HaveHTTPBodyMatcher struct { + Expected any + cachedResponse any + cachedBody []byte +} + +func (matcher *HaveHTTPBodyMatcher) Match(actual any) (bool, error) { + body, err := matcher.body(actual) + if err != nil { + return false, err + } + + switch e := matcher.Expected.(type) { + case string: + return (&EqualMatcher{Expected: e}).Match(string(body)) + case []byte: + return (&EqualMatcher{Expected: e}).Match(body) + case types.GomegaMatcher: + return e.Match(body) + default: + return false, fmt.Errorf("HaveHTTPBody matcher expects string, []byte, or GomegaMatcher. Got:\n%s", format.Object(matcher.Expected, 1)) + } +} + +func (matcher *HaveHTTPBodyMatcher) FailureMessage(actual any) (message string) { + body, err := matcher.body(actual) + if err != nil { + return fmt.Sprintf("failed to read body: %s", err) + } + + switch e := matcher.Expected.(type) { + case string: + return (&EqualMatcher{Expected: e}).FailureMessage(string(body)) + case []byte: + return (&EqualMatcher{Expected: e}).FailureMessage(body) + case types.GomegaMatcher: + return e.FailureMessage(body) + default: + return fmt.Sprintf("HaveHTTPBody matcher expects string, []byte, or GomegaMatcher. Got:\n%s", format.Object(matcher.Expected, 1)) + } +} + +func (matcher *HaveHTTPBodyMatcher) NegatedFailureMessage(actual any) (message string) { + body, err := matcher.body(actual) + if err != nil { + return fmt.Sprintf("failed to read body: %s", err) + } + + switch e := matcher.Expected.(type) { + case string: + return (&EqualMatcher{Expected: e}).NegatedFailureMessage(string(body)) + case []byte: + return (&EqualMatcher{Expected: e}).NegatedFailureMessage(body) + case types.GomegaMatcher: + return e.NegatedFailureMessage(body) + default: + return fmt.Sprintf("HaveHTTPBody matcher expects string, []byte, or GomegaMatcher. Got:\n%s", format.Object(matcher.Expected, 1)) + } +} + +// body returns the body. It is cached because once we read it in Match() +// the Reader is closed and it is not readable again in FailureMessage() +// or NegatedFailureMessage() +func (matcher *HaveHTTPBodyMatcher) body(actual any) ([]byte, error) { + if matcher.cachedResponse == actual && matcher.cachedBody != nil { + return matcher.cachedBody, nil + } + + body := func(a *http.Response) ([]byte, error) { + if a.Body != nil { + defer a.Body.Close() + var err error + matcher.cachedBody, err = gutil.ReadAll(a.Body) + if err != nil { + return nil, fmt.Errorf("error reading response body: %w", err) + } + } + return matcher.cachedBody, nil + } + + switch a := actual.(type) { + case *http.Response: + matcher.cachedResponse = a + return body(a) + case *httptest.ResponseRecorder: + matcher.cachedResponse = a + return body(a.Result()) + default: + return nil, fmt.Errorf("HaveHTTPBody matcher expects *http.Response or *httptest.ResponseRecorder. Got:\n%s", format.Object(actual, 1)) + } + +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/have_http_header_with_value_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/have_http_header_with_value_matcher.go new file mode 100644 index 000000000..756722659 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/have_http_header_with_value_matcher.go @@ -0,0 +1,81 @@ +package matchers + +import ( + "fmt" + "net/http" + "net/http/httptest" + + "github.com/onsi/gomega/format" + "github.com/onsi/gomega/types" +) + +type HaveHTTPHeaderWithValueMatcher struct { + Header string + Value any +} + +func (matcher *HaveHTTPHeaderWithValueMatcher) Match(actual any) (success bool, err error) { + headerValue, err := matcher.extractHeader(actual) + if err != nil { + return false, err + } + + headerMatcher, err := matcher.getSubMatcher() + if err != nil { + return false, err + } + + return headerMatcher.Match(headerValue) +} + +func (matcher *HaveHTTPHeaderWithValueMatcher) FailureMessage(actual any) string { + headerValue, err := matcher.extractHeader(actual) + if err != nil { + panic(err) // protected by Match() + } + + headerMatcher, err := matcher.getSubMatcher() + if err != nil { + panic(err) // protected by Match() + } + + diff := format.IndentString(headerMatcher.FailureMessage(headerValue), 1) + return fmt.Sprintf("HTTP header %q:\n%s", matcher.Header, diff) +} + +func (matcher *HaveHTTPHeaderWithValueMatcher) NegatedFailureMessage(actual any) (message string) { + headerValue, err := matcher.extractHeader(actual) + if err != nil { + panic(err) // protected by Match() + } + + headerMatcher, err := matcher.getSubMatcher() + if err != nil { + panic(err) // protected by Match() + } + + diff := format.IndentString(headerMatcher.NegatedFailureMessage(headerValue), 1) + return fmt.Sprintf("HTTP header %q:\n%s", matcher.Header, diff) +} + +func (matcher *HaveHTTPHeaderWithValueMatcher) getSubMatcher() (types.GomegaMatcher, error) { + switch m := matcher.Value.(type) { + case string: + return &EqualMatcher{Expected: matcher.Value}, nil + case types.GomegaMatcher: + return m, nil + default: + return nil, fmt.Errorf("HaveHTTPHeaderWithValue matcher must be passed a string or a GomegaMatcher. Got:\n%s", format.Object(matcher.Value, 1)) + } +} + +func (matcher *HaveHTTPHeaderWithValueMatcher) extractHeader(actual any) (string, error) { + switch r := actual.(type) { + case *http.Response: + return r.Header.Get(matcher.Header), nil + case *httptest.ResponseRecorder: + return r.Result().Header.Get(matcher.Header), nil + default: + return "", fmt.Errorf("HaveHTTPHeaderWithValue matcher expects *http.Response or *httptest.ResponseRecorder. Got:\n%s", format.Object(actual, 1)) + } +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/have_http_status_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/have_http_status_matcher.go new file mode 100644 index 000000000..8b25b3a9f --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/have_http_status_matcher.go @@ -0,0 +1,96 @@ +package matchers + +import ( + "fmt" + "net/http" + "net/http/httptest" + "reflect" + "strings" + + "github.com/onsi/gomega/format" + "github.com/onsi/gomega/internal/gutil" +) + +type HaveHTTPStatusMatcher struct { + Expected []any +} + +func (matcher *HaveHTTPStatusMatcher) Match(actual any) (success bool, err error) { + var resp *http.Response + switch a := actual.(type) { + case *http.Response: + resp = a + case *httptest.ResponseRecorder: + resp = a.Result() + default: + return false, fmt.Errorf("HaveHTTPStatus matcher expects *http.Response or *httptest.ResponseRecorder. Got:\n%s", format.Object(actual, 1)) + } + + if len(matcher.Expected) == 0 { + return false, fmt.Errorf("HaveHTTPStatus matcher must be passed an int or a string. Got nothing") + } + + for _, expected := range matcher.Expected { + switch e := expected.(type) { + case int: + if resp.StatusCode == e { + return true, nil + } + case string: + if resp.Status == e { + return true, nil + } + default: + return false, fmt.Errorf("HaveHTTPStatus matcher must be passed int or string types. Got:\n%s", format.Object(expected, 1)) + } + } + + return false, nil +} + +func (matcher *HaveHTTPStatusMatcher) FailureMessage(actual any) (message string) { + return fmt.Sprintf("Expected\n%s\n%s\n%s", formatHttpResponse(actual), "to have HTTP status", matcher.expectedString()) +} + +func (matcher *HaveHTTPStatusMatcher) NegatedFailureMessage(actual any) (message string) { + return fmt.Sprintf("Expected\n%s\n%s\n%s", formatHttpResponse(actual), "not to have HTTP status", matcher.expectedString()) +} + +func (matcher *HaveHTTPStatusMatcher) expectedString() string { + var lines []string + for _, expected := range matcher.Expected { + lines = append(lines, format.Object(expected, 1)) + } + return strings.Join(lines, "\n") +} + +func formatHttpResponse(input any) string { + var resp *http.Response + switch r := input.(type) { + case *http.Response: + resp = r + case *httptest.ResponseRecorder: + resp = r.Result() + default: + return "cannot format invalid HTTP response" + } + + body := "" + if resp.Body != nil { + defer resp.Body.Close() + data, err := gutil.ReadAll(resp.Body) + if err != nil { + data = []byte("") + } + body = format.Object(string(data), 0) + } + + var s strings.Builder + s.WriteString(fmt.Sprintf("%s<%s>: {\n", format.Indent, reflect.TypeOf(input))) + s.WriteString(fmt.Sprintf("%s%sStatus: %s\n", format.Indent, format.Indent, format.Object(resp.Status, 0))) + s.WriteString(fmt.Sprintf("%s%sStatusCode: %s\n", format.Indent, format.Indent, format.Object(resp.StatusCode, 0))) + s.WriteString(fmt.Sprintf("%s%sBody: %s\n", format.Indent, format.Indent, body)) + s.WriteString(fmt.Sprintf("%s}", format.Indent)) + + return s.String() +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/have_key_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/have_key_matcher.go new file mode 100644 index 000000000..9e16dcf5d --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/have_key_matcher.go @@ -0,0 +1,71 @@ +// untested sections: 6 + +package matchers + +import ( + "fmt" + "reflect" + + "github.com/onsi/gomega/format" + "github.com/onsi/gomega/matchers/internal/miter" +) + +type HaveKeyMatcher struct { + Key any +} + +func (matcher *HaveKeyMatcher) Match(actual any) (success bool, err error) { + if !isMap(actual) && !miter.IsSeq2(actual) { + return false, fmt.Errorf("HaveKey matcher expects a map/iter.Seq2. Got:%s", format.Object(actual, 1)) + } + + keyMatcher, keyIsMatcher := matcher.Key.(omegaMatcher) + if !keyIsMatcher { + keyMatcher = &EqualMatcher{Expected: matcher.Key} + } + + if miter.IsSeq2(actual) { + var success bool + var err error + miter.IterateKV(actual, func(k, v reflect.Value) bool { + success, err = keyMatcher.Match(k.Interface()) + if err != nil { + err = fmt.Errorf("HaveKey's key matcher failed with:\n%s%s", format.Indent, err.Error()) + return false + } + return !success + }) + return success, err + } + + keys := reflect.ValueOf(actual).MapKeys() + for i := 0; i < len(keys); i++ { + success, err := keyMatcher.Match(keys[i].Interface()) + if err != nil { + return false, fmt.Errorf("HaveKey's key matcher failed with:\n%s%s", format.Indent, err.Error()) + } + if success { + return true, nil + } + } + + return false, nil +} + +func (matcher *HaveKeyMatcher) FailureMessage(actual any) (message string) { + switch matcher.Key.(type) { + case omegaMatcher: + return format.Message(actual, "to have key matching", matcher.Key) + default: + return format.Message(actual, "to have key", matcher.Key) + } +} + +func (matcher *HaveKeyMatcher) NegatedFailureMessage(actual any) (message string) { + switch matcher.Key.(type) { + case omegaMatcher: + return format.Message(actual, "not to have key matching", matcher.Key) + default: + return format.Message(actual, "not to have key", matcher.Key) + } +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/have_key_with_value_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/have_key_with_value_matcher.go new file mode 100644 index 000000000..1c53f1e56 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/have_key_with_value_matcher.go @@ -0,0 +1,98 @@ +// untested sections:10 + +package matchers + +import ( + "fmt" + "reflect" + + "github.com/onsi/gomega/format" + "github.com/onsi/gomega/matchers/internal/miter" +) + +type HaveKeyWithValueMatcher struct { + Key any + Value any +} + +func (matcher *HaveKeyWithValueMatcher) Match(actual any) (success bool, err error) { + if !isMap(actual) && !miter.IsSeq2(actual) { + return false, fmt.Errorf("HaveKeyWithValue matcher expects a map/iter.Seq2. Got:%s", format.Object(actual, 1)) + } + + keyMatcher, keyIsMatcher := matcher.Key.(omegaMatcher) + if !keyIsMatcher { + keyMatcher = &EqualMatcher{Expected: matcher.Key} + } + + valueMatcher, valueIsMatcher := matcher.Value.(omegaMatcher) + if !valueIsMatcher { + valueMatcher = &EqualMatcher{Expected: matcher.Value} + } + + if miter.IsSeq2(actual) { + var success bool + var err error + miter.IterateKV(actual, func(k, v reflect.Value) bool { + success, err = keyMatcher.Match(k.Interface()) + if err != nil { + err = fmt.Errorf("HaveKey's key matcher failed with:\n%s%s", format.Indent, err.Error()) + return false + } + if success { + success, err = valueMatcher.Match(v.Interface()) + if err != nil { + err = fmt.Errorf("HaveKeyWithValue's value matcher failed with:\n%s%s", format.Indent, err.Error()) + return false + } + } + return !success + }) + return success, err + } + + keys := reflect.ValueOf(actual).MapKeys() + for i := 0; i < len(keys); i++ { + success, err := keyMatcher.Match(keys[i].Interface()) + if err != nil { + return false, fmt.Errorf("HaveKeyWithValue's key matcher failed with:\n%s%s", format.Indent, err.Error()) + } + if success { + actualValue := reflect.ValueOf(actual).MapIndex(keys[i]) + success, err := valueMatcher.Match(actualValue.Interface()) + if err != nil { + return false, fmt.Errorf("HaveKeyWithValue's value matcher failed with:\n%s%s", format.Indent, err.Error()) + } + return success, nil + } + } + + return false, nil +} + +func (matcher *HaveKeyWithValueMatcher) FailureMessage(actual any) (message string) { + str := "to have {key: value}" + if _, ok := matcher.Key.(omegaMatcher); ok { + str += " matching" + } else if _, ok := matcher.Value.(omegaMatcher); ok { + str += " matching" + } + + expect := make(map[any]any, 1) + expect[matcher.Key] = matcher.Value + return format.Message(actual, str, expect) +} + +func (matcher *HaveKeyWithValueMatcher) NegatedFailureMessage(actual any) (message string) { + kStr := "not to have key" + if _, ok := matcher.Key.(omegaMatcher); ok { + kStr = "not to have key matching" + } + + vStr := "or that key's value not be" + if _, ok := matcher.Value.(omegaMatcher); ok { + vStr = "or to have that key's value not matching" + } + + return format.Message(actual, kStr, matcher.Key, vStr, matcher.Value) +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/have_len_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/have_len_matcher.go new file mode 100644 index 000000000..c334d4c0a --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/have_len_matcher.go @@ -0,0 +1,28 @@ +package matchers + +import ( + "fmt" + + "github.com/onsi/gomega/format" +) + +type HaveLenMatcher struct { + Count int +} + +func (matcher *HaveLenMatcher) Match(actual any) (success bool, err error) { + length, ok := lengthOf(actual) + if !ok { + return false, fmt.Errorf("HaveLen matcher expects a string/array/map/channel/slice/iterator. Got:\n%s", format.Object(actual, 1)) + } + + return length == matcher.Count, nil +} + +func (matcher *HaveLenMatcher) FailureMessage(actual any) (message string) { + return fmt.Sprintf("Expected\n%s\nto have length %d", format.Object(actual, 1), matcher.Count) +} + +func (matcher *HaveLenMatcher) NegatedFailureMessage(actual any) (message string) { + return fmt.Sprintf("Expected\n%s\nnot to have length %d", format.Object(actual, 1), matcher.Count) +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/have_occurred_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/have_occurred_matcher.go new file mode 100644 index 000000000..a240f1a1c --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/have_occurred_matcher.go @@ -0,0 +1,35 @@ +// untested sections: 2 + +package matchers + +import ( + "fmt" + + "github.com/onsi/gomega/format" +) + +type HaveOccurredMatcher struct { +} + +func (matcher *HaveOccurredMatcher) Match(actual any) (success bool, err error) { + // is purely nil? + if actual == nil { + return false, nil + } + + // must be an 'error' type + if !isError(actual) { + return false, fmt.Errorf("Expected an error-type. Got:\n%s", format.Object(actual, 1)) + } + + // must be non-nil (or a pointer to a non-nil) + return !isNil(actual), nil +} + +func (matcher *HaveOccurredMatcher) FailureMessage(actual any) (message string) { + return fmt.Sprintf("Expected an error to have occurred. Got:\n%s", format.Object(actual, 1)) +} + +func (matcher *HaveOccurredMatcher) NegatedFailureMessage(actual any) (message string) { + return fmt.Sprintf("Unexpected error:\n%s\n%s", format.Object(actual, 1), "occurred") +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/have_prefix_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/have_prefix_matcher.go new file mode 100644 index 000000000..7987d41f7 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/have_prefix_matcher.go @@ -0,0 +1,36 @@ +package matchers + +import ( + "fmt" + + "github.com/onsi/gomega/format" +) + +type HavePrefixMatcher struct { + Prefix string + Args []any +} + +func (matcher *HavePrefixMatcher) Match(actual any) (success bool, err error) { + actualString, ok := toString(actual) + if !ok { + return false, fmt.Errorf("HavePrefix matcher requires a string or stringer. Got:\n%s", format.Object(actual, 1)) + } + prefix := matcher.prefix() + return len(actualString) >= len(prefix) && actualString[0:len(prefix)] == prefix, nil +} + +func (matcher *HavePrefixMatcher) prefix() string { + if len(matcher.Args) > 0 { + return fmt.Sprintf(matcher.Prefix, matcher.Args...) + } + return matcher.Prefix +} + +func (matcher *HavePrefixMatcher) FailureMessage(actual any) (message string) { + return format.Message(actual, "to have prefix", matcher.prefix()) +} + +func (matcher *HavePrefixMatcher) NegatedFailureMessage(actual any) (message string) { + return format.Message(actual, "not to have prefix", matcher.prefix()) +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/have_suffix_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/have_suffix_matcher.go new file mode 100644 index 000000000..2aa4ceacb --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/have_suffix_matcher.go @@ -0,0 +1,36 @@ +package matchers + +import ( + "fmt" + + "github.com/onsi/gomega/format" +) + +type HaveSuffixMatcher struct { + Suffix string + Args []any +} + +func (matcher *HaveSuffixMatcher) Match(actual any) (success bool, err error) { + actualString, ok := toString(actual) + if !ok { + return false, fmt.Errorf("HaveSuffix matcher requires a string or stringer. Got:\n%s", format.Object(actual, 1)) + } + suffix := matcher.suffix() + return len(actualString) >= len(suffix) && actualString[len(actualString)-len(suffix):] == suffix, nil +} + +func (matcher *HaveSuffixMatcher) suffix() string { + if len(matcher.Args) > 0 { + return fmt.Sprintf(matcher.Suffix, matcher.Args...) + } + return matcher.Suffix +} + +func (matcher *HaveSuffixMatcher) FailureMessage(actual any) (message string) { + return format.Message(actual, "to have suffix", matcher.suffix()) +} + +func (matcher *HaveSuffixMatcher) NegatedFailureMessage(actual any) (message string) { + return format.Message(actual, "not to have suffix", matcher.suffix()) +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/have_value.go b/tests/vendor/github.com/onsi/gomega/matchers/have_value.go new file mode 100644 index 000000000..4c39e0db0 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/have_value.go @@ -0,0 +1,54 @@ +package matchers + +import ( + "errors" + "reflect" + + "github.com/onsi/gomega/format" + "github.com/onsi/gomega/types" +) + +const maxIndirections = 31 + +type HaveValueMatcher struct { + Matcher types.GomegaMatcher // the matcher to apply to the "resolved" actual value. + resolvedActual any // the ("resolved") value. +} + +func (m *HaveValueMatcher) Match(actual any) (bool, error) { + val := reflect.ValueOf(actual) + for allowedIndirs := maxIndirections; allowedIndirs > 0; allowedIndirs-- { + // return an error if value isn't valid. Please note that we cannot + // check for nil here, as we might not deal with a pointer or interface + // at this point. + if !val.IsValid() { + return false, errors.New(format.Message( + actual, "not to be ")) + } + switch val.Kind() { + case reflect.Ptr, reflect.Interface: + // resolve pointers and interfaces to their values, then rinse and + // repeat. + if val.IsNil() { + return false, errors.New(format.Message( + actual, "not to be ")) + } + val = val.Elem() + continue + default: + // forward the final value to the specified matcher. + m.resolvedActual = val.Interface() + return m.Matcher.Match(m.resolvedActual) + } + } + // too many indirections: extreme star gazing, indeed...? + return false, errors.New(format.Message(actual, "too many indirections")) +} + +func (m *HaveValueMatcher) FailureMessage(_ any) (message string) { + return m.Matcher.FailureMessage(m.resolvedActual) +} + +func (m *HaveValueMatcher) NegatedFailureMessage(_ any) (message string) { + return m.Matcher.NegatedFailureMessage(m.resolvedActual) +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/internal/miter/type_support_iter.go b/tests/vendor/github.com/onsi/gomega/matchers/internal/miter/type_support_iter.go new file mode 100644 index 000000000..d8837a4d0 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/internal/miter/type_support_iter.go @@ -0,0 +1,128 @@ +//go:build go1.23 + +package miter + +import ( + "reflect" +) + +// HasIterators always returns false for Go versions before 1.23. +func HasIterators() bool { return true } + +// IsIter returns true if the specified value is a function type that can be +// range-d over, otherwise false. +// +// We don't use reflect's CanSeq and CanSeq2 directly, as these would return +// true also for other value types that are range-able, such as integers, +// slices, et cetera. Here, we aim only at range-able (iterator) functions. +func IsIter(it any) bool { + if it == nil { // on purpose we only test for untyped nil. + return false + } + // reject all non-iterator-func values, even if they're range-able. + t := reflect.TypeOf(it) + if t.Kind() != reflect.Func { + return false + } + return t.CanSeq() || t.CanSeq2() +} + +// IterKVTypes returns the reflection types of an iterator's yield function's K +// and optional V arguments, otherwise nil K and V reflection types. +func IterKVTypes(it any) (k, v reflect.Type) { + if it == nil { + return + } + // reject all non-iterator-func values, even if they're range-able. + t := reflect.TypeOf(it) + if t.Kind() != reflect.Func { + return + } + // get the reflection types for V, and where applicable, K. + switch { + case t.CanSeq(): + v = t. /*iterator fn*/ In(0). /*yield fn*/ In(0) + case t.CanSeq2(): + yieldfn := t. /*iterator fn*/ In(0) + k = yieldfn.In(0) + v = yieldfn.In(1) + } + return +} + +// IsSeq2 returns true if the passed iterator function is compatible with +// iter.Seq2, otherwise false. +// +// IsSeq2 hides the Go 1.23+ specific reflect.Type.CanSeq2 behind a facade which +// is empty for Go versions before 1.23. +func IsSeq2(it any) bool { + if it == nil { + return false + } + t := reflect.TypeOf(it) + return t.Kind() == reflect.Func && t.CanSeq2() +} + +// isNilly returns true if v is either an untyped nil, or is a nil function (not +// necessarily an iterator function). +func isNilly(v any) bool { + if v == nil { + return true + } + rv := reflect.ValueOf(v) + return rv.Kind() == reflect.Func && rv.IsNil() +} + +// IterateV loops over the elements produced by an iterator function, passing +// the elements to the specified yield function individually and stopping only +// when either the iterator function runs out of elements or the yield function +// tell us to stop it. +// +// IterateV works very much like reflect.Value.Seq but hides the Go 1.23+ +// specific parts behind a facade which is empty for Go versions before 1.23, in +// order to simplify code maintenance for matchers when using older Go versions. +func IterateV(it any, yield func(v reflect.Value) bool) { + if isNilly(it) { + return + } + // reject all non-iterator-func values, even if they're range-able. + t := reflect.TypeOf(it) + if t.Kind() != reflect.Func || !t.CanSeq() { + return + } + // Call the specified iterator function, handing it our adaptor to call the + // specified generic reflection yield function. + reflectedYield := reflect.MakeFunc( + t. /*iterator fn*/ In(0), + func(args []reflect.Value) []reflect.Value { + return []reflect.Value{reflect.ValueOf(yield(args[0]))} + }) + reflect.ValueOf(it).Call([]reflect.Value{reflectedYield}) +} + +// IterateKV loops over the key-value elements produced by an iterator function, +// passing the elements to the specified yield function individually and +// stopping only when either the iterator function runs out of elements or the +// yield function tell us to stop it. +// +// IterateKV works very much like reflect.Value.Seq2 but hides the Go 1.23+ +// specific parts behind a facade which is empty for Go versions before 1.23, in +// order to simplify code maintenance for matchers when using older Go versions. +func IterateKV(it any, yield func(k, v reflect.Value) bool) { + if isNilly(it) { + return + } + // reject all non-iterator-func values, even if they're range-able. + t := reflect.TypeOf(it) + if t.Kind() != reflect.Func || !t.CanSeq2() { + return + } + // Call the specified iterator function, handing it our adaptor to call the + // specified generic reflection yield function. + reflectedYield := reflect.MakeFunc( + t. /*iterator fn*/ In(0), + func(args []reflect.Value) []reflect.Value { + return []reflect.Value{reflect.ValueOf(yield(args[0], args[1]))} + }) + reflect.ValueOf(it).Call([]reflect.Value{reflectedYield}) +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/internal/miter/type_support_noiter.go b/tests/vendor/github.com/onsi/gomega/matchers/internal/miter/type_support_noiter.go new file mode 100644 index 000000000..4b8fcc55b --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/internal/miter/type_support_noiter.go @@ -0,0 +1,44 @@ +//go:build !go1.23 + +/* +Gomega matchers + +This package implements the Gomega matchers and does not typically need to be imported. +See the docs for Gomega for documentation on the matchers + +http://onsi.github.io/gomega/ +*/ + +package miter + +import "reflect" + +// HasIterators always returns false for Go versions before 1.23. +func HasIterators() bool { return false } + +// IsIter always returns false for Go versions before 1.23 as there is no +// iterator (function) pattern defined yet; see also: +// https://tip.golang.org/blog/range-functions. +func IsIter(i any) bool { return false } + +// IsSeq2 always returns false for Go versions before 1.23 as there is no +// iterator (function) pattern defined yet; see also: +// https://tip.golang.org/blog/range-functions. +func IsSeq2(it any) bool { return false } + +// IterKVTypes always returns nil reflection types for Go versions before 1.23 +// as there is no iterator (function) pattern defined yet; see also: +// https://tip.golang.org/blog/range-functions. +func IterKVTypes(i any) (k, v reflect.Type) { + return +} + +// IterateV never loops over what has been passed to it as an iterator for Go +// versions before 1.23 as there is no iterator (function) pattern defined yet; +// see also: https://tip.golang.org/blog/range-functions. +func IterateV(it any, yield func(v reflect.Value) bool) {} + +// IterateKV never loops over what has been passed to it as an iterator for Go +// versions before 1.23 as there is no iterator (function) pattern defined yet; +// see also: https://tip.golang.org/blog/range-functions. +func IterateKV(it any, yield func(k, v reflect.Value) bool) {} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/match_error_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/match_error_matcher.go new file mode 100644 index 000000000..f9d313772 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/match_error_matcher.go @@ -0,0 +1,86 @@ +package matchers + +import ( + "errors" + "fmt" + "reflect" + + "github.com/onsi/gomega/format" +) + +type MatchErrorMatcher struct { + Expected any + FuncErrDescription []any + isFunc bool +} + +func (matcher *MatchErrorMatcher) Match(actual any) (success bool, err error) { + matcher.isFunc = false + + if isNil(actual) { + return false, fmt.Errorf("Expected an error, got nil") + } + + if !isError(actual) { + return false, fmt.Errorf("Expected an error. Got:\n%s", format.Object(actual, 1)) + } + + actualErr := actual.(error) + expected := matcher.Expected + + if isError(expected) { + // first try the built-in errors.Is + if errors.Is(actualErr, expected.(error)) { + return true, nil + } + // if not, try DeepEqual along the error chain + for unwrapped := actualErr; unwrapped != nil; unwrapped = errors.Unwrap(unwrapped) { + if reflect.DeepEqual(unwrapped, expected) { + return true, nil + } + } + return false, nil + } + + if isString(expected) { + return actualErr.Error() == expected, nil + } + + v := reflect.ValueOf(expected) + t := v.Type() + errorInterface := reflect.TypeOf((*error)(nil)).Elem() + if t.Kind() == reflect.Func && t.NumIn() == 1 && t.In(0).Implements(errorInterface) && t.NumOut() == 1 && t.Out(0).Kind() == reflect.Bool { + if len(matcher.FuncErrDescription) == 0 { + return false, fmt.Errorf("MatchError requires an additional description when passed a function") + } + matcher.isFunc = true + return v.Call([]reflect.Value{reflect.ValueOf(actualErr)})[0].Bool(), nil + } + + var subMatcher omegaMatcher + var hasSubMatcher bool + if expected != nil { + subMatcher, hasSubMatcher = (expected).(omegaMatcher) + if hasSubMatcher { + return subMatcher.Match(actualErr.Error()) + } + } + + return false, fmt.Errorf( + "MatchError must be passed an error, a string, or a Matcher that can match on strings. Got:\n%s", + format.Object(expected, 1)) +} + +func (matcher *MatchErrorMatcher) FailureMessage(actual any) (message string) { + if matcher.isFunc { + return format.Message(actual, fmt.Sprintf("to match error function %s", matcher.FuncErrDescription[0])) + } + return format.Message(actual, "to match error", matcher.Expected) +} + +func (matcher *MatchErrorMatcher) NegatedFailureMessage(actual any) (message string) { + if matcher.isFunc { + return format.Message(actual, fmt.Sprintf("not to match error function %s", matcher.FuncErrDescription[0])) + } + return format.Message(actual, "not to match error", matcher.Expected) +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/match_json_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/match_json_matcher.go new file mode 100644 index 000000000..331f289ab --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/match_json_matcher.go @@ -0,0 +1,65 @@ +package matchers + +import ( + "bytes" + "encoding/json" + "fmt" + + "github.com/onsi/gomega/format" +) + +type MatchJSONMatcher struct { + JSONToMatch any + firstFailurePath []any +} + +func (matcher *MatchJSONMatcher) Match(actual any) (success bool, err error) { + actualString, expectedString, err := matcher.prettyPrint(actual) + if err != nil { + return false, err + } + + var aval any + var eval any + + // this is guarded by prettyPrint + json.Unmarshal([]byte(actualString), &aval) + json.Unmarshal([]byte(expectedString), &eval) + var equal bool + equal, matcher.firstFailurePath = deepEqual(aval, eval) + return equal, nil +} + +func (matcher *MatchJSONMatcher) FailureMessage(actual any) (message string) { + actualString, expectedString, _ := matcher.prettyPrint(actual) + return formattedMessage(format.Message(actualString, "to match JSON of", expectedString), matcher.firstFailurePath) +} + +func (matcher *MatchJSONMatcher) NegatedFailureMessage(actual any) (message string) { + actualString, expectedString, _ := matcher.prettyPrint(actual) + return formattedMessage(format.Message(actualString, "not to match JSON of", expectedString), matcher.firstFailurePath) +} + +func (matcher *MatchJSONMatcher) prettyPrint(actual any) (actualFormatted, expectedFormatted string, err error) { + actualString, ok := toString(actual) + if !ok { + return "", "", fmt.Errorf("MatchJSONMatcher matcher requires a string, stringer, or []byte. Got actual:\n%s", format.Object(actual, 1)) + } + expectedString, ok := toString(matcher.JSONToMatch) + if !ok { + return "", "", fmt.Errorf("MatchJSONMatcher matcher requires a string, stringer, or []byte. Got expected:\n%s", format.Object(matcher.JSONToMatch, 1)) + } + + abuf := new(bytes.Buffer) + ebuf := new(bytes.Buffer) + + if err := json.Indent(abuf, []byte(actualString), "", " "); err != nil { + return "", "", fmt.Errorf("Actual '%s' should be valid JSON, but it is not.\nUnderlying error:%s", actualString, err) + } + + if err := json.Indent(ebuf, []byte(expectedString), "", " "); err != nil { + return "", "", fmt.Errorf("Expected '%s' should be valid JSON, but it is not.\nUnderlying error:%s", expectedString, err) + } + + return abuf.String(), ebuf.String(), nil +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/match_regexp_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/match_regexp_matcher.go new file mode 100644 index 000000000..779be683e --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/match_regexp_matcher.go @@ -0,0 +1,43 @@ +package matchers + +import ( + "fmt" + "regexp" + + "github.com/onsi/gomega/format" +) + +type MatchRegexpMatcher struct { + Regexp string + Args []any +} + +func (matcher *MatchRegexpMatcher) Match(actual any) (success bool, err error) { + actualString, ok := toString(actual) + if !ok { + return false, fmt.Errorf("RegExp matcher requires a string or stringer.\nGot:%s", format.Object(actual, 1)) + } + + match, err := regexp.Match(matcher.regexp(), []byte(actualString)) + if err != nil { + return false, fmt.Errorf("RegExp match failed to compile with error:\n\t%s", err.Error()) + } + + return match, nil +} + +func (matcher *MatchRegexpMatcher) FailureMessage(actual any) (message string) { + return format.Message(actual, "to match regular expression", matcher.regexp()) +} + +func (matcher *MatchRegexpMatcher) NegatedFailureMessage(actual any) (message string) { + return format.Message(actual, "not to match regular expression", matcher.regexp()) +} + +func (matcher *MatchRegexpMatcher) regexp() string { + re := matcher.Regexp + if len(matcher.Args) > 0 { + re = fmt.Sprintf(matcher.Regexp, matcher.Args...) + } + return re +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/match_xml_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/match_xml_matcher.go new file mode 100644 index 000000000..f7dcaf6fd --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/match_xml_matcher.go @@ -0,0 +1,134 @@ +package matchers + +import ( + "bytes" + "encoding/xml" + "errors" + "fmt" + "io" + "reflect" + "sort" + "strings" + + "github.com/onsi/gomega/format" + "golang.org/x/net/html/charset" +) + +type MatchXMLMatcher struct { + XMLToMatch any +} + +func (matcher *MatchXMLMatcher) Match(actual any) (success bool, err error) { + actualString, expectedString, err := matcher.formattedPrint(actual) + if err != nil { + return false, err + } + + aval, err := parseXmlContent(actualString) + if err != nil { + return false, fmt.Errorf("Actual '%s' should be valid XML, but it is not.\nUnderlying error:%s", actualString, err) + } + + eval, err := parseXmlContent(expectedString) + if err != nil { + return false, fmt.Errorf("Expected '%s' should be valid XML, but it is not.\nUnderlying error:%s", expectedString, err) + } + + return reflect.DeepEqual(aval, eval), nil +} + +func (matcher *MatchXMLMatcher) FailureMessage(actual any) (message string) { + actualString, expectedString, _ := matcher.formattedPrint(actual) + return fmt.Sprintf("Expected\n%s\nto match XML of\n%s", actualString, expectedString) +} + +func (matcher *MatchXMLMatcher) NegatedFailureMessage(actual any) (message string) { + actualString, expectedString, _ := matcher.formattedPrint(actual) + return fmt.Sprintf("Expected\n%s\nnot to match XML of\n%s", actualString, expectedString) +} + +func (matcher *MatchXMLMatcher) formattedPrint(actual any) (actualString, expectedString string, err error) { + var ok bool + actualString, ok = toString(actual) + if !ok { + return "", "", fmt.Errorf("MatchXMLMatcher matcher requires a string, stringer, or []byte. Got actual:\n%s", format.Object(actual, 1)) + } + expectedString, ok = toString(matcher.XMLToMatch) + if !ok { + return "", "", fmt.Errorf("MatchXMLMatcher matcher requires a string, stringer, or []byte. Got expected:\n%s", format.Object(matcher.XMLToMatch, 1)) + } + return actualString, expectedString, nil +} + +func parseXmlContent(content string) (*xmlNode, error) { + allNodes := []*xmlNode{} + + dec := newXmlDecoder(strings.NewReader(content)) + for { + tok, err := dec.Token() + if err != nil { + if err == io.EOF { + break + } + return nil, fmt.Errorf("failed to decode next token: %v", err) // untested section + } + + lastNodeIndex := len(allNodes) - 1 + var lastNode *xmlNode + if len(allNodes) > 0 { + lastNode = allNodes[lastNodeIndex] + } else { + lastNode = &xmlNode{} + } + + switch tok := tok.(type) { + case xml.StartElement: + attrs := attributesSlice(tok.Attr) + sort.Sort(attrs) + allNodes = append(allNodes, &xmlNode{XMLName: tok.Name, XMLAttr: tok.Attr}) + case xml.EndElement: + if len(allNodes) > 1 { + allNodes[lastNodeIndex-1].Nodes = append(allNodes[lastNodeIndex-1].Nodes, lastNode) + allNodes = allNodes[:lastNodeIndex] + } + case xml.CharData: + lastNode.Content = append(lastNode.Content, tok.Copy()...) + case xml.Comment: + lastNode.Comments = append(lastNode.Comments, tok.Copy()) // untested section + case xml.ProcInst: + lastNode.ProcInsts = append(lastNode.ProcInsts, tok.Copy()) + } + } + + if len(allNodes) == 0 { + return nil, errors.New("found no nodes") + } + firstNode := allNodes[0] + trimParentNodesContentSpaces(firstNode) + + return firstNode, nil +} + +func newXmlDecoder(reader io.Reader) *xml.Decoder { + dec := xml.NewDecoder(reader) + dec.CharsetReader = charset.NewReaderLabel + return dec +} + +func trimParentNodesContentSpaces(node *xmlNode) { + if len(node.Nodes) > 0 { + node.Content = bytes.TrimSpace(node.Content) + for _, childNode := range node.Nodes { + trimParentNodesContentSpaces(childNode) + } + } +} + +type xmlNode struct { + XMLName xml.Name + Comments []xml.Comment + ProcInsts []xml.ProcInst + XMLAttr []xml.Attr + Content []byte + Nodes []*xmlNode +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/match_yaml_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/match_yaml_matcher.go new file mode 100644 index 000000000..95057c26c --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/match_yaml_matcher.go @@ -0,0 +1,76 @@ +package matchers + +import ( + "fmt" + "strings" + + "github.com/onsi/gomega/format" + "gopkg.in/yaml.v3" +) + +type MatchYAMLMatcher struct { + YAMLToMatch any + firstFailurePath []any +} + +func (matcher *MatchYAMLMatcher) Match(actual any) (success bool, err error) { + actualString, expectedString, err := matcher.toStrings(actual) + if err != nil { + return false, err + } + + var aval any + var eval any + + if err := yaml.Unmarshal([]byte(actualString), &aval); err != nil { + return false, fmt.Errorf("Actual '%s' should be valid YAML, but it is not.\nUnderlying error:%s", actualString, err) + } + if err := yaml.Unmarshal([]byte(expectedString), &eval); err != nil { + return false, fmt.Errorf("Expected '%s' should be valid YAML, but it is not.\nUnderlying error:%s", expectedString, err) + } + + var equal bool + equal, matcher.firstFailurePath = deepEqual(aval, eval) + return equal, nil +} + +func (matcher *MatchYAMLMatcher) FailureMessage(actual any) (message string) { + actualString, expectedString, _ := matcher.toNormalisedStrings(actual) + return formattedMessage(format.Message(actualString, "to match YAML of", expectedString), matcher.firstFailurePath) +} + +func (matcher *MatchYAMLMatcher) NegatedFailureMessage(actual any) (message string) { + actualString, expectedString, _ := matcher.toNormalisedStrings(actual) + return formattedMessage(format.Message(actualString, "not to match YAML of", expectedString), matcher.firstFailurePath) +} + +func (matcher *MatchYAMLMatcher) toNormalisedStrings(actual any) (actualFormatted, expectedFormatted string, err error) { + actualString, expectedString, err := matcher.toStrings(actual) + return normalise(actualString), normalise(expectedString), err +} + +func normalise(input string) string { + var val any + err := yaml.Unmarshal([]byte(input), &val) + if err != nil { + panic(err) // unreachable since Match already calls Unmarshal + } + output, err := yaml.Marshal(val) + if err != nil { + panic(err) // untested section, unreachable since we Unmarshal above + } + return strings.TrimSpace(string(output)) +} + +func (matcher *MatchYAMLMatcher) toStrings(actual any) (actualFormatted, expectedFormatted string, err error) { + actualString, ok := toString(actual) + if !ok { + return "", "", fmt.Errorf("MatchYAMLMatcher matcher requires a string, stringer, or []byte. Got actual:\n%s", format.Object(actual, 1)) + } + expectedString, ok := toString(matcher.YAMLToMatch) + if !ok { + return "", "", fmt.Errorf("MatchYAMLMatcher matcher requires a string, stringer, or []byte. Got expected:\n%s", format.Object(matcher.YAMLToMatch, 1)) + } + + return actualString, expectedString, nil +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/not.go b/tests/vendor/github.com/onsi/gomega/matchers/not.go new file mode 100644 index 000000000..c598b7899 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/not.go @@ -0,0 +1,29 @@ +package matchers + +import ( + "github.com/onsi/gomega/types" +) + +type NotMatcher struct { + Matcher types.GomegaMatcher +} + +func (m *NotMatcher) Match(actual any) (bool, error) { + success, err := m.Matcher.Match(actual) + if err != nil { + return false, err + } + return !success, nil +} + +func (m *NotMatcher) FailureMessage(actual any) (message string) { + return m.Matcher.NegatedFailureMessage(actual) // works beautifully +} + +func (m *NotMatcher) NegatedFailureMessage(actual any) (message string) { + return m.Matcher.FailureMessage(actual) // works beautifully +} + +func (m *NotMatcher) MatchMayChangeInTheFuture(actual any) bool { + return types.MatchMayChangeInTheFuture(m.Matcher, actual) // just return m.Matcher's value +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/or.go b/tests/vendor/github.com/onsi/gomega/matchers/or.go new file mode 100644 index 000000000..6578404b0 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/or.go @@ -0,0 +1,66 @@ +package matchers + +import ( + "fmt" + + "github.com/onsi/gomega/format" + "github.com/onsi/gomega/types" +) + +type OrMatcher struct { + Matchers []types.GomegaMatcher + + // state + firstSuccessfulMatcher types.GomegaMatcher +} + +func (m *OrMatcher) Match(actual any) (success bool, err error) { + m.firstSuccessfulMatcher = nil + for _, matcher := range m.Matchers { + success, err := matcher.Match(actual) + if err != nil { + return false, err + } + if success { + m.firstSuccessfulMatcher = matcher + return true, nil + } + } + return false, nil +} + +func (m *OrMatcher) FailureMessage(actual any) (message string) { + // not the most beautiful list of matchers, but not bad either... + return format.Message(actual, fmt.Sprintf("To satisfy at least one of these matchers: %s", m.Matchers)) +} + +func (m *OrMatcher) NegatedFailureMessage(actual any) (message string) { + return m.firstSuccessfulMatcher.NegatedFailureMessage(actual) +} + +func (m *OrMatcher) MatchMayChangeInTheFuture(actual any) bool { + /* + Example with 3 matchers: A, B, C + + Match evaluates them: F, T, => T + So match is currently T, what should MatchMayChangeInTheFuture() return? + Seems like it only depends on B, since currently B MUST change to allow the result to become F + + Match eval: F, F, F => F + So match is currently F, what should MatchMayChangeInTheFuture() return? + Seems to depend on ANY of them being able to change to T. + */ + + if m.firstSuccessfulMatcher != nil { + // one of the matchers succeeded.. it must be able to change in order to affect the result + return types.MatchMayChangeInTheFuture(m.firstSuccessfulMatcher, actual) + } else { + // so all matchers failed.. Any one of them changing would change the result. + for _, matcher := range m.Matchers { + if types.MatchMayChangeInTheFuture(matcher, actual) { + return true + } + } + return false // none of were going to change + } +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/panic_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/panic_matcher.go new file mode 100644 index 000000000..8be5a7ccf --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/panic_matcher.go @@ -0,0 +1,114 @@ +package matchers + +import ( + "fmt" + "reflect" + + "github.com/onsi/gomega/format" +) + +type PanicMatcher struct { + Expected any + object any +} + +func (matcher *PanicMatcher) Match(actual any) (success bool, err error) { + if actual == nil { + return false, fmt.Errorf("PanicMatcher expects a non-nil actual.") + } + + actualType := reflect.TypeOf(actual) + if actualType.Kind() != reflect.Func { + return false, fmt.Errorf("PanicMatcher expects a function. Got:\n%s", format.Object(actual, 1)) + } + if !(actualType.NumIn() == 0 && actualType.NumOut() == 0) { + return false, fmt.Errorf("PanicMatcher expects a function with no arguments and no return value. Got:\n%s", format.Object(actual, 1)) + } + + success = false + defer func() { + if e := recover(); e != nil { + matcher.object = e + + if matcher.Expected == nil { + success = true + return + } + + valueMatcher, valueIsMatcher := matcher.Expected.(omegaMatcher) + if !valueIsMatcher { + valueMatcher = &EqualMatcher{Expected: matcher.Expected} + } + + success, err = valueMatcher.Match(e) + if err != nil { + err = fmt.Errorf("PanicMatcher's value matcher failed with:\n%s%s", format.Indent, err.Error()) + } + } + }() + + reflect.ValueOf(actual).Call([]reflect.Value{}) + + return +} + +func (matcher *PanicMatcher) FailureMessage(actual any) (message string) { + if matcher.Expected == nil { + // We wanted any panic to occur, but none did. + return format.Message(actual, "to panic") + } + + if matcher.object == nil { + // We wanted a panic with a specific value to occur, but none did. + switch matcher.Expected.(type) { + case omegaMatcher: + return format.Message(actual, "to panic with a value matching", matcher.Expected) + default: + return format.Message(actual, "to panic with", matcher.Expected) + } + } + + // We got a panic, but the value isn't what we expected. + switch matcher.Expected.(type) { + case omegaMatcher: + return format.Message( + actual, + fmt.Sprintf( + "to panic with a value matching\n%s\nbut panicked with\n%s", + format.Object(matcher.Expected, 1), + format.Object(matcher.object, 1), + ), + ) + default: + return format.Message( + actual, + fmt.Sprintf( + "to panic with\n%s\nbut panicked with\n%s", + format.Object(matcher.Expected, 1), + format.Object(matcher.object, 1), + ), + ) + } +} + +func (matcher *PanicMatcher) NegatedFailureMessage(actual any) (message string) { + if matcher.Expected == nil { + // We didn't want any panic to occur, but one did. + return format.Message(actual, fmt.Sprintf("not to panic, but panicked with\n%s", format.Object(matcher.object, 1))) + } + + // We wanted a to ensure a panic with a specific value did not occur, but it did. + switch matcher.Expected.(type) { + case omegaMatcher: + return format.Message( + actual, + fmt.Sprintf( + "not to panic with a value matching\n%s\nbut panicked with\n%s", + format.Object(matcher.Expected, 1), + format.Object(matcher.object, 1), + ), + ) + default: + return format.Message(actual, "not to panic with", matcher.Expected) + } +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/receive_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/receive_matcher.go new file mode 100644 index 000000000..1d9f61d63 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/receive_matcher.go @@ -0,0 +1,166 @@ +// untested sections: 3 + +package matchers + +import ( + "errors" + "fmt" + "reflect" + + "github.com/onsi/gomega/format" +) + +type ReceiveMatcher struct { + Args []any + receivedValue reflect.Value + channelClosed bool +} + +func (matcher *ReceiveMatcher) Match(actual any) (success bool, err error) { + if !isChan(actual) { + return false, fmt.Errorf("ReceiveMatcher expects a channel. Got:\n%s", format.Object(actual, 1)) + } + + channelType := reflect.TypeOf(actual) + channelValue := reflect.ValueOf(actual) + + if channelType.ChanDir() == reflect.SendDir { + return false, fmt.Errorf("ReceiveMatcher matcher cannot be passed a send-only channel. Got:\n%s", format.Object(actual, 1)) + } + + var subMatcher omegaMatcher + var hasSubMatcher bool + var resultReference any + + // Valid arg formats are as follows, always with optional POINTER before + // optional MATCHER: + // - Receive() + // - Receive(POINTER) + // - Receive(MATCHER) + // - Receive(POINTER, MATCHER) + args := matcher.Args + if len(args) > 0 { + arg := args[0] + _, isSubMatcher := arg.(omegaMatcher) + if !isSubMatcher && reflect.ValueOf(arg).Kind() == reflect.Ptr { + // Consume optional POINTER arg first, if it ain't no matcher ;) + resultReference = arg + args = args[1:] + } + } + if len(args) > 0 { + arg := args[0] + subMatcher, hasSubMatcher = arg.(omegaMatcher) + if !hasSubMatcher { + // At this point we assume the dev user wanted to assign a received + // value, so [POINTER,]MATCHER. + return false, fmt.Errorf("Cannot assign a value from the channel:\n%s\nTo:\n%s\nYou need to pass a pointer!", format.Object(actual, 1), format.Object(arg, 1)) + } + // Consume optional MATCHER arg. + args = args[1:] + } + if len(args) > 0 { + // If there are still args present, reject all. + return false, errors.New("Receive matcher expects at most an optional pointer and/or an optional matcher") + } + + winnerIndex, value, open := reflect.Select([]reflect.SelectCase{ + {Dir: reflect.SelectRecv, Chan: channelValue}, + {Dir: reflect.SelectDefault}, + }) + + var closed bool + var didReceive bool + if winnerIndex == 0 { + closed = !open + didReceive = open + } + matcher.channelClosed = closed + + if closed { + return false, nil + } + + if hasSubMatcher { + if !didReceive { + return false, nil + } + matcher.receivedValue = value + if match, err := subMatcher.Match(matcher.receivedValue.Interface()); err != nil || !match { + return match, err + } + // if we received a match, then fall through in order to handle an + // optional assignment of the received value to the specified reference. + } + + if didReceive { + if resultReference != nil { + outValue := reflect.ValueOf(resultReference) + + if value.Type().AssignableTo(outValue.Elem().Type()) { + outValue.Elem().Set(value) + return true, nil + } + if value.Type().Kind() == reflect.Interface && value.Elem().Type().AssignableTo(outValue.Elem().Type()) { + outValue.Elem().Set(value.Elem()) + return true, nil + } else { + return false, fmt.Errorf("Cannot assign a value from the channel:\n%s\nType:\n%s\nTo:\n%s", format.Object(actual, 1), format.Object(value.Interface(), 1), format.Object(resultReference, 1)) + } + + } + + return true, nil + } + return false, nil +} + +func (matcher *ReceiveMatcher) FailureMessage(actual any) (message string) { + var matcherArg any + if len(matcher.Args) > 0 { + matcherArg = matcher.Args[len(matcher.Args)-1] + } + subMatcher, hasSubMatcher := (matcherArg).(omegaMatcher) + + closedAddendum := "" + if matcher.channelClosed { + closedAddendum = " The channel is closed." + } + + if hasSubMatcher { + if matcher.receivedValue.IsValid() { + return subMatcher.FailureMessage(matcher.receivedValue.Interface()) + } + return "When passed a matcher, ReceiveMatcher's channel *must* receive something." + } + return format.Message(actual, "to receive something."+closedAddendum) +} + +func (matcher *ReceiveMatcher) NegatedFailureMessage(actual any) (message string) { + var matcherArg any + if len(matcher.Args) > 0 { + matcherArg = matcher.Args[len(matcher.Args)-1] + } + subMatcher, hasSubMatcher := (matcherArg).(omegaMatcher) + + closedAddendum := "" + if matcher.channelClosed { + closedAddendum = " The channel is closed." + } + + if hasSubMatcher { + if matcher.receivedValue.IsValid() { + return subMatcher.NegatedFailureMessage(matcher.receivedValue.Interface()) + } + return "When passed a matcher, ReceiveMatcher's channel *must* receive something." + } + return format.Message(actual, "not to receive anything."+closedAddendum) +} + +func (matcher *ReceiveMatcher) MatchMayChangeInTheFuture(actual any) bool { + if !isChan(actual) { + return false + } + + return !matcher.channelClosed +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/satisfy_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/satisfy_matcher.go new file mode 100644 index 000000000..2adc4825a --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/satisfy_matcher.go @@ -0,0 +1,66 @@ +package matchers + +import ( + "fmt" + "reflect" + + "github.com/onsi/gomega/format" +) + +type SatisfyMatcher struct { + Predicate any + + // cached type + predicateArgType reflect.Type +} + +func NewSatisfyMatcher(predicate any) *SatisfyMatcher { + if predicate == nil { + panic("predicate cannot be nil") + } + predicateType := reflect.TypeOf(predicate) + if predicateType.Kind() != reflect.Func { + panic("predicate must be a function") + } + if predicateType.NumIn() != 1 { + panic("predicate must have 1 argument") + } + if predicateType.NumOut() != 1 || predicateType.Out(0).Kind() != reflect.Bool { + panic("predicate must return bool") + } + + return &SatisfyMatcher{ + Predicate: predicate, + predicateArgType: predicateType.In(0), + } +} + +func (m *SatisfyMatcher) Match(actual any) (success bool, err error) { + // prepare a parameter to pass to the predicate + var param reflect.Value + if actual != nil && reflect.TypeOf(actual).AssignableTo(m.predicateArgType) { + // The dynamic type of actual is compatible with the predicate argument. + param = reflect.ValueOf(actual) + + } else if actual == nil && m.predicateArgType.Kind() == reflect.Interface { + // The dynamic type of actual is unknown, so there's no way to make its + // reflect.Value. Create a nil of the predicate argument, which is known. + param = reflect.Zero(m.predicateArgType) + + } else { + return false, fmt.Errorf("predicate expects '%s' but we have '%T'", m.predicateArgType, actual) + } + + // call the predicate with `actual` + fn := reflect.ValueOf(m.Predicate) + result := fn.Call([]reflect.Value{param}) + return result[0].Bool(), nil +} + +func (m *SatisfyMatcher) FailureMessage(actual any) (message string) { + return format.Message(actual, "to satisfy predicate", m.Predicate) +} + +func (m *SatisfyMatcher) NegatedFailureMessage(actual any) (message string) { + return format.Message(actual, "to not satisfy predicate", m.Predicate) +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/semi_structured_data_support.go b/tests/vendor/github.com/onsi/gomega/matchers/semi_structured_data_support.go new file mode 100644 index 000000000..30dd58f4a --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/semi_structured_data_support.go @@ -0,0 +1,94 @@ +// untested sections: 5 + +package matchers + +import ( + "fmt" + "reflect" + "strings" +) + +func formattedMessage(comparisonMessage string, failurePath []any) string { + var diffMessage string + if len(failurePath) == 0 { + diffMessage = "" + } else { + diffMessage = fmt.Sprintf("\n\nfirst mismatched key: %s", formattedFailurePath(failurePath)) + } + return fmt.Sprintf("%s%s", comparisonMessage, diffMessage) +} + +func formattedFailurePath(failurePath []any) string { + formattedPaths := []string{} + for i := len(failurePath) - 1; i >= 0; i-- { + switch p := failurePath[i].(type) { + case int: + formattedPaths = append(formattedPaths, fmt.Sprintf(`[%d]`, p)) + default: + if i != len(failurePath)-1 { + formattedPaths = append(formattedPaths, ".") + } + formattedPaths = append(formattedPaths, fmt.Sprintf(`"%s"`, p)) + } + } + return strings.Join(formattedPaths, "") +} + +func deepEqual(a any, b any) (bool, []any) { + var errorPath []any + if reflect.TypeOf(a) != reflect.TypeOf(b) { + return false, errorPath + } + + switch a.(type) { + case []any: + if len(a.([]any)) != len(b.([]any)) { + return false, errorPath + } + + for i, v := range a.([]any) { + elementEqual, keyPath := deepEqual(v, b.([]any)[i]) + if !elementEqual { + return false, append(keyPath, i) + } + } + return true, errorPath + + case map[any]any: + if len(a.(map[any]any)) != len(b.(map[any]any)) { + return false, errorPath + } + + for k, v1 := range a.(map[any]any) { + v2, ok := b.(map[any]any)[k] + if !ok { + return false, errorPath + } + elementEqual, keyPath := deepEqual(v1, v2) + if !elementEqual { + return false, append(keyPath, k) + } + } + return true, errorPath + + case map[string]any: + if len(a.(map[string]any)) != len(b.(map[string]any)) { + return false, errorPath + } + + for k, v1 := range a.(map[string]any) { + v2, ok := b.(map[string]any)[k] + if !ok { + return false, errorPath + } + elementEqual, keyPath := deepEqual(v1, v2) + if !elementEqual { + return false, append(keyPath, k) + } + } + return true, errorPath + + default: + return a == b, errorPath + } +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/succeed_matcher.go b/tests/vendor/github.com/onsi/gomega/matchers/succeed_matcher.go new file mode 100644 index 000000000..f0b2c4aa6 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/succeed_matcher.go @@ -0,0 +1,42 @@ +package matchers + +import ( + "errors" + "fmt" + + "github.com/onsi/gomega/format" +) + +type formattedGomegaError interface { + FormattedGomegaError() string +} + +type SucceedMatcher struct { +} + +func (matcher *SucceedMatcher) Match(actual any) (success bool, err error) { + // is purely nil? + if actual == nil { + return true, nil + } + + // must be an 'error' type + if !isError(actual) { + return false, fmt.Errorf("Expected an error-type. Got:\n%s", format.Object(actual, 1)) + } + + // must be nil (or a pointer to a nil) + return isNil(actual), nil +} + +func (matcher *SucceedMatcher) FailureMessage(actual any) (message string) { + var fgErr formattedGomegaError + if errors.As(actual.(error), &fgErr) { + return fgErr.FormattedGomegaError() + } + return fmt.Sprintf("Expected success, but got an error:\n%s", format.Object(actual, 1)) +} + +func (matcher *SucceedMatcher) NegatedFailureMessage(actual any) (message string) { + return "Expected failure, but got no error." +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/support/goraph/bipartitegraph/bipartitegraph.go b/tests/vendor/github.com/onsi/gomega/matchers/support/goraph/bipartitegraph/bipartitegraph.go new file mode 100644 index 000000000..0d78779d4 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/support/goraph/bipartitegraph/bipartitegraph.go @@ -0,0 +1,56 @@ +package bipartitegraph + +import "fmt" + +import . "github.com/onsi/gomega/matchers/support/goraph/node" +import . "github.com/onsi/gomega/matchers/support/goraph/edge" + +type BipartiteGraph struct { + Left NodeOrderedSet + Right NodeOrderedSet + Edges EdgeSet +} + +func NewBipartiteGraph(leftValues, rightValues []any, neighbours func(any, any) (bool, error)) (*BipartiteGraph, error) { + left := NodeOrderedSet{} + for i, v := range leftValues { + left = append(left, Node{ID: i, Value: v}) + } + + right := NodeOrderedSet{} + for j, v := range rightValues { + right = append(right, Node{ID: j + len(left), Value: v}) + } + + edges := EdgeSet{} + for i, leftValue := range leftValues { + for j, rightValue := range rightValues { + neighbours, err := neighbours(leftValue, rightValue) + if err != nil { + return nil, fmt.Errorf("error determining adjacency for %v and %v: %s", leftValue, rightValue, err.Error()) + } + + if neighbours { + edges = append(edges, Edge{Node1: left[i].ID, Node2: right[j].ID}) + } + } + } + + return &BipartiteGraph{left, right, edges}, nil +} + +// FreeLeftRight returns left node values and right node values +// of the BipartiteGraph's nodes which are not part of the given edges. +func (bg *BipartiteGraph) FreeLeftRight(edges EdgeSet) (leftValues, rightValues []any) { + for _, node := range bg.Left { + if edges.Free(node) { + leftValues = append(leftValues, node.Value) + } + } + for _, node := range bg.Right { + if edges.Free(node) { + rightValues = append(rightValues, node.Value) + } + } + return +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/support/goraph/bipartitegraph/bipartitegraphmatching.go b/tests/vendor/github.com/onsi/gomega/matchers/support/goraph/bipartitegraph/bipartitegraphmatching.go new file mode 100644 index 000000000..44aa61d4b --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/support/goraph/bipartitegraph/bipartitegraphmatching.go @@ -0,0 +1,171 @@ +package bipartitegraph + +import ( + "slices" + + . "github.com/onsi/gomega/matchers/support/goraph/edge" + . "github.com/onsi/gomega/matchers/support/goraph/node" + "github.com/onsi/gomega/matchers/support/goraph/util" +) + +// LargestMatching implements the Hopcroft–Karp algorithm taking as input a bipartite graph +// and outputting a maximum cardinality matching, i.e. a set of as many edges as possible +// with the property that no two edges share an endpoint. +func (bg *BipartiteGraph) LargestMatching() (matching EdgeSet) { + paths := bg.maximalDisjointSLAPCollection(matching) + + for len(paths) > 0 { + for _, path := range paths { + matching = matching.SymmetricDifference(path) + } + paths = bg.maximalDisjointSLAPCollection(matching) + } + + return +} + +func (bg *BipartiteGraph) maximalDisjointSLAPCollection(matching EdgeSet) (result []EdgeSet) { + guideLayers := bg.createSLAPGuideLayers(matching) + if len(guideLayers) == 0 { + return + } + + used := make(map[int]bool) + + for _, u := range guideLayers[len(guideLayers)-1] { + slap, found := bg.findDisjointSLAP(u, matching, guideLayers, used) + if found { + for _, edge := range slap { + used[edge.Node1] = true + used[edge.Node2] = true + } + result = append(result, slap) + } + } + + return +} + +func (bg *BipartiteGraph) findDisjointSLAP( + start Node, + matching EdgeSet, + guideLayers []NodeOrderedSet, + used map[int]bool, +) ([]Edge, bool) { + return bg.findDisjointSLAPHelper(start, EdgeSet{}, len(guideLayers)-1, matching, guideLayers, used) +} + +func (bg *BipartiteGraph) findDisjointSLAPHelper( + currentNode Node, + currentSLAP EdgeSet, + currentLevel int, + matching EdgeSet, + guideLayers []NodeOrderedSet, + used map[int]bool, +) (EdgeSet, bool) { + used[currentNode.ID] = true + + if currentLevel == 0 { + return currentSLAP, true + } + + for _, nextNode := range guideLayers[currentLevel-1] { + if used[nextNode.ID] { + continue + } + + edge, found := bg.Edges.FindByNodes(currentNode, nextNode) + if !found { + continue + } + + if matching.Contains(edge) == util.Odd(currentLevel) { + continue + } + + currentSLAP = append(currentSLAP, edge) + slap, found := bg.findDisjointSLAPHelper(nextNode, currentSLAP, currentLevel-1, matching, guideLayers, used) + if found { + return slap, true + } + currentSLAP = currentSLAP[:len(currentSLAP)-1] + } + + used[currentNode.ID] = false + return nil, false +} + +func (bg *BipartiteGraph) createSLAPGuideLayers(matching EdgeSet) (guideLayers []NodeOrderedSet) { + used := make(map[int]bool) + currentLayer := NodeOrderedSet{} + + for _, node := range bg.Left { + if matching.Free(node) { + used[node.ID] = true + currentLayer = append(currentLayer, node) + } + } + + if len(currentLayer) == 0 { + return []NodeOrderedSet{} + } + guideLayers = append(guideLayers, currentLayer) + + done := false + + for !done { + lastLayer := currentLayer + currentLayer = NodeOrderedSet{} + + if util.Odd(len(guideLayers)) { + for _, leftNode := range lastLayer { + for _, rightNode := range bg.Right { + if used[rightNode.ID] { + continue + } + + edge, found := bg.Edges.FindByNodes(leftNode, rightNode) + if !found || matching.Contains(edge) { + continue + } + + currentLayer = append(currentLayer, rightNode) + used[rightNode.ID] = true + + if matching.Free(rightNode) { + done = true + } + } + } + } else { + for _, rightNode := range lastLayer { + for _, leftNode := range bg.Left { + if used[leftNode.ID] { + continue + } + + edge, found := bg.Edges.FindByNodes(leftNode, rightNode) + if !found || !matching.Contains(edge) { + continue + } + + currentLayer = append(currentLayer, leftNode) + used[leftNode.ID] = true + } + } + + } + + if len(currentLayer) == 0 { + return []NodeOrderedSet{} + } + if done { // if last layer - into last layer must be only 'free' nodes + currentLayer = slices.DeleteFunc(currentLayer, func(in Node) bool { + return !matching.Free(in) + }) + } + guideLayers = append(guideLayers, currentLayer) + } + + return +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/support/goraph/edge/edge.go b/tests/vendor/github.com/onsi/gomega/matchers/support/goraph/edge/edge.go new file mode 100644 index 000000000..8c38411b2 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/support/goraph/edge/edge.go @@ -0,0 +1,61 @@ +package edge + +import . "github.com/onsi/gomega/matchers/support/goraph/node" + +type Edge struct { + Node1 int + Node2 int +} + +type EdgeSet []Edge + +func (ec EdgeSet) Free(node Node) bool { + for _, e := range ec { + if e.Node1 == node.ID || e.Node2 == node.ID { + return false + } + } + + return true +} + +func (ec EdgeSet) Contains(edge Edge) bool { + for _, e := range ec { + if e == edge { + return true + } + } + + return false +} + +func (ec EdgeSet) FindByNodes(node1, node2 Node) (Edge, bool) { + for _, e := range ec { + if (e.Node1 == node1.ID && e.Node2 == node2.ID) || (e.Node1 == node2.ID && e.Node2 == node1.ID) { + return e, true + } + } + + return Edge{}, false +} + +func (ec EdgeSet) SymmetricDifference(ec2 EdgeSet) EdgeSet { + edgesToInclude := make(map[Edge]bool) + + for _, e := range ec { + edgesToInclude[e] = true + } + + for _, e := range ec2 { + edgesToInclude[e] = !edgesToInclude[e] + } + + result := EdgeSet{} + for e, include := range edgesToInclude { + if include { + result = append(result, e) + } + } + + return result +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/support/goraph/node/node.go b/tests/vendor/github.com/onsi/gomega/matchers/support/goraph/node/node.go new file mode 100644 index 000000000..66d3578d5 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/support/goraph/node/node.go @@ -0,0 +1,8 @@ +package node + +type Node struct { + ID int + Value any +} + +type NodeOrderedSet []Node diff --git a/tests/vendor/github.com/onsi/gomega/matchers/support/goraph/util/util.go b/tests/vendor/github.com/onsi/gomega/matchers/support/goraph/util/util.go new file mode 100644 index 000000000..d76a1ee00 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/support/goraph/util/util.go @@ -0,0 +1,7 @@ +package util + +import "math" + +func Odd(n int) bool { + return math.Mod(float64(n), 2.0) == 1.0 +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/type_support.go b/tests/vendor/github.com/onsi/gomega/matchers/type_support.go new file mode 100644 index 000000000..d020dedc3 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/type_support.go @@ -0,0 +1,195 @@ +/* +Gomega matchers + +This package implements the Gomega matchers and does not typically need to be imported. +See the docs for Gomega for documentation on the matchers + +http://onsi.github.io/gomega/ +*/ + +// untested sections: 11 + +package matchers + +import ( + "encoding/json" + "fmt" + "reflect" + + "github.com/onsi/gomega/matchers/internal/miter" +) + +type omegaMatcher interface { + Match(actual any) (success bool, err error) + FailureMessage(actual any) (message string) + NegatedFailureMessage(actual any) (message string) +} + +func isBool(a any) bool { + return reflect.TypeOf(a).Kind() == reflect.Bool +} + +func isNumber(a any) bool { + if a == nil { + return false + } + kind := reflect.TypeOf(a).Kind() + return reflect.Int <= kind && kind <= reflect.Float64 +} + +func isInteger(a any) bool { + kind := reflect.TypeOf(a).Kind() + return reflect.Int <= kind && kind <= reflect.Int64 +} + +func isUnsignedInteger(a any) bool { + kind := reflect.TypeOf(a).Kind() + return reflect.Uint <= kind && kind <= reflect.Uint64 +} + +func isFloat(a any) bool { + kind := reflect.TypeOf(a).Kind() + return reflect.Float32 <= kind && kind <= reflect.Float64 +} + +func toInteger(a any) int64 { + if isInteger(a) { + return reflect.ValueOf(a).Int() + } else if isUnsignedInteger(a) { + return int64(reflect.ValueOf(a).Uint()) + } else if isFloat(a) { + return int64(reflect.ValueOf(a).Float()) + } + panic(fmt.Sprintf("Expected a number! Got <%T> %#v", a, a)) +} + +func toUnsignedInteger(a any) uint64 { + if isInteger(a) { + return uint64(reflect.ValueOf(a).Int()) + } else if isUnsignedInteger(a) { + return reflect.ValueOf(a).Uint() + } else if isFloat(a) { + return uint64(reflect.ValueOf(a).Float()) + } + panic(fmt.Sprintf("Expected a number! Got <%T> %#v", a, a)) +} + +func toFloat(a any) float64 { + if isInteger(a) { + return float64(reflect.ValueOf(a).Int()) + } else if isUnsignedInteger(a) { + return float64(reflect.ValueOf(a).Uint()) + } else if isFloat(a) { + return reflect.ValueOf(a).Float() + } + panic(fmt.Sprintf("Expected a number! Got <%T> %#v", a, a)) +} + +func isError(a any) bool { + _, ok := a.(error) + return ok +} + +func isChan(a any) bool { + if isNil(a) { + return false + } + return reflect.TypeOf(a).Kind() == reflect.Chan +} + +func isMap(a any) bool { + if a == nil { + return false + } + return reflect.TypeOf(a).Kind() == reflect.Map +} + +func isArrayOrSlice(a any) bool { + if a == nil { + return false + } + switch reflect.TypeOf(a).Kind() { + case reflect.Array, reflect.Slice: + return true + default: + return false + } +} + +func isString(a any) bool { + if a == nil { + return false + } + return reflect.TypeOf(a).Kind() == reflect.String +} + +func toString(a any) (string, bool) { + aString, isString := a.(string) + if isString { + return aString, true + } + + aBytes, isBytes := a.([]byte) + if isBytes { + return string(aBytes), true + } + + aStringer, isStringer := a.(fmt.Stringer) + if isStringer { + return aStringer.String(), true + } + + aJSONRawMessage, isJSONRawMessage := a.(json.RawMessage) + if isJSONRawMessage { + return string(aJSONRawMessage), true + } + + return "", false +} + +func lengthOf(a any) (int, bool) { + if a == nil { + return 0, false + } + switch reflect.TypeOf(a).Kind() { + case reflect.Map, reflect.Array, reflect.String, reflect.Chan, reflect.Slice: + return reflect.ValueOf(a).Len(), true + case reflect.Func: + if !miter.IsIter(a) { + return 0, false + } + var l int + if miter.IsSeq2(a) { + miter.IterateKV(a, func(k, v reflect.Value) bool { l++; return true }) + } else { + miter.IterateV(a, func(v reflect.Value) bool { l++; return true }) + } + return l, true + default: + return 0, false + } +} +func capOf(a any) (int, bool) { + if a == nil { + return 0, false + } + switch reflect.TypeOf(a).Kind() { + case reflect.Array, reflect.Chan, reflect.Slice: + return reflect.ValueOf(a).Cap(), true + default: + return 0, false + } +} + +func isNil(a any) bool { + if a == nil { + return true + } + + switch reflect.TypeOf(a).Kind() { + case reflect.Chan, reflect.Func, reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice: + return reflect.ValueOf(a).IsNil() + } + + return false +} diff --git a/tests/vendor/github.com/onsi/gomega/matchers/with_transform.go b/tests/vendor/github.com/onsi/gomega/matchers/with_transform.go new file mode 100644 index 000000000..6231c3b47 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/matchers/with_transform.go @@ -0,0 +1,90 @@ +package matchers + +import ( + "fmt" + "reflect" + + "github.com/onsi/gomega/types" +) + +type WithTransformMatcher struct { + // input + Transform any // must be a function of one parameter that returns one value and an optional error + Matcher types.GomegaMatcher + + // cached value + transformArgType reflect.Type + + // state + transformedValue any +} + +// reflect.Type for error +var errorT = reflect.TypeOf((*error)(nil)).Elem() + +func NewWithTransformMatcher(transform any, matcher types.GomegaMatcher) *WithTransformMatcher { + if transform == nil { + panic("transform function cannot be nil") + } + txType := reflect.TypeOf(transform) + if txType.NumIn() != 1 { + panic("transform function must have 1 argument") + } + if numout := txType.NumOut(); numout != 1 { + if numout != 2 || !txType.Out(1).AssignableTo(errorT) { + panic("transform function must either have 1 return value, or 1 return value plus 1 error value") + } + } + + return &WithTransformMatcher{ + Transform: transform, + Matcher: matcher, + transformArgType: reflect.TypeOf(transform).In(0), + } +} + +func (m *WithTransformMatcher) Match(actual any) (bool, error) { + // prepare a parameter to pass to the Transform function + var param reflect.Value + if actual != nil && reflect.TypeOf(actual).AssignableTo(m.transformArgType) { + // The dynamic type of actual is compatible with the transform argument. + param = reflect.ValueOf(actual) + + } else if actual == nil && m.transformArgType.Kind() == reflect.Interface { + // The dynamic type of actual is unknown, so there's no way to make its + // reflect.Value. Create a nil of the transform argument, which is known. + param = reflect.Zero(m.transformArgType) + + } else { + return false, fmt.Errorf("Transform function expects '%s' but we have '%T'", m.transformArgType, actual) + } + + // call the Transform function with `actual` + fn := reflect.ValueOf(m.Transform) + result := fn.Call([]reflect.Value{param}) + if len(result) == 2 { + if !result[1].IsNil() { + return false, fmt.Errorf("Transform function failed: %s", result[1].Interface().(error).Error()) + } + } + m.transformedValue = result[0].Interface() // expect exactly one value + + return m.Matcher.Match(m.transformedValue) +} + +func (m *WithTransformMatcher) FailureMessage(_ any) (message string) { + return m.Matcher.FailureMessage(m.transformedValue) +} + +func (m *WithTransformMatcher) NegatedFailureMessage(_ any) (message string) { + return m.Matcher.NegatedFailureMessage(m.transformedValue) +} + +func (m *WithTransformMatcher) MatchMayChangeInTheFuture(_ any) bool { + // TODO: Maybe this should always just return true? (Only an issue for non-deterministic transformers.) + // + // Querying the next matcher is fine if the transformer always will return the same value. + // But if the transformer is non-deterministic and returns a different value each time, then there + // is no point in querying the next matcher, since it can only comment on the last transformed value. + return types.MatchMayChangeInTheFuture(m.Matcher, m.transformedValue) +} diff --git a/tests/vendor/github.com/onsi/gomega/types/types.go b/tests/vendor/github.com/onsi/gomega/types/types.go new file mode 100644 index 000000000..685a46f37 --- /dev/null +++ b/tests/vendor/github.com/onsi/gomega/types/types.go @@ -0,0 +1,100 @@ +package types + +import ( + "context" + "time" +) + +type GomegaFailHandler func(message string, callerSkip ...int) + +// A simple *testing.T interface wrapper +type GomegaTestingT interface { + Helper() + Fatalf(format string, args ...any) +} + +// Gomega represents an object that can perform synchronous and asynchronous assertions with Gomega matchers +type Gomega interface { + Ω(actual any, extra ...any) Assertion + Expect(actual any, extra ...any) Assertion + ExpectWithOffset(offset int, actual any, extra ...any) Assertion + + Eventually(actualOrCtx any, args ...any) AsyncAssertion + EventuallyWithOffset(offset int, actualOrCtx any, args ...any) AsyncAssertion + + Consistently(actualOrCtx any, args ...any) AsyncAssertion + ConsistentlyWithOffset(offset int, actualOrCtx any, args ...any) AsyncAssertion + + SetDefaultEventuallyTimeout(time.Duration) + SetDefaultEventuallyPollingInterval(time.Duration) + SetDefaultConsistentlyDuration(time.Duration) + SetDefaultConsistentlyPollingInterval(time.Duration) + EnforceDefaultTimeoutsWhenUsingContexts() + DisableDefaultTimeoutsWhenUsingContext() +} + +// All Gomega matchers must implement the GomegaMatcher interface +// +// For details on writing custom matchers, check out: http://onsi.github.io/gomega/#adding-your-own-matchers +type GomegaMatcher interface { + Match(actual any) (success bool, err error) + FailureMessage(actual any) (message string) + NegatedFailureMessage(actual any) (message string) +} + +/* +GomegaMatchers that also match the OracleMatcher interface can convey information about +whether or not their result will change upon future attempts. + +This allows `Eventually` and `Consistently` to short circuit if success becomes impossible. + +For example, a process' exit code can never change. So, gexec's Exit matcher returns `true` +for `MatchMayChangeInTheFuture` until the process exits, at which point it returns `false` forevermore. +*/ +type OracleMatcher interface { + MatchMayChangeInTheFuture(actual any) bool +} + +func MatchMayChangeInTheFuture(matcher GomegaMatcher, value any) bool { + oracleMatcher, ok := matcher.(OracleMatcher) + if !ok { + return true + } + + return oracleMatcher.MatchMayChangeInTheFuture(value) +} + +// AsyncAssertions are returned by Eventually and Consistently and enable matchers to be polled repeatedly to ensure +// they are eventually satisfied +type AsyncAssertion interface { + Should(matcher GomegaMatcher, optionalDescription ...any) bool + ShouldNot(matcher GomegaMatcher, optionalDescription ...any) bool + + // equivalent to above + To(matcher GomegaMatcher, optionalDescription ...any) bool + ToNot(matcher GomegaMatcher, optionalDescription ...any) bool + NotTo(matcher GomegaMatcher, optionalDescription ...any) bool + + WithOffset(offset int) AsyncAssertion + WithTimeout(interval time.Duration) AsyncAssertion + WithPolling(interval time.Duration) AsyncAssertion + Within(timeout time.Duration) AsyncAssertion + ProbeEvery(interval time.Duration) AsyncAssertion + WithContext(ctx context.Context) AsyncAssertion + WithArguments(argsToForward ...any) AsyncAssertion + MustPassRepeatedly(count int) AsyncAssertion +} + +// Assertions are returned by Ω and Expect and enable assertions against Gomega matchers +type Assertion interface { + Should(matcher GomegaMatcher, optionalDescription ...any) bool + ShouldNot(matcher GomegaMatcher, optionalDescription ...any) bool + + To(matcher GomegaMatcher, optionalDescription ...any) bool + ToNot(matcher GomegaMatcher, optionalDescription ...any) bool + NotTo(matcher GomegaMatcher, optionalDescription ...any) bool + + WithOffset(offset int) Assertion + + Error() Assertion +} diff --git a/tests/vendor/go.uber.org/automaxprocs/.codecov.yml b/tests/vendor/go.uber.org/automaxprocs/.codecov.yml new file mode 100644 index 000000000..9a2ed4a99 --- /dev/null +++ b/tests/vendor/go.uber.org/automaxprocs/.codecov.yml @@ -0,0 +1,14 @@ +coverage: + range: 80..100 + round: down + precision: 2 + + status: + project: # measuring the overall project coverage + default: # context, you can create multiple ones with custom titles + enabled: yes # must be yes|true to enable this status + target: 90% # specify the target coverage for each commit status + # option: "auto" (must increase from parent commit or pull request base) + # option: "X%" a static target percentage to hit + if_not_found: success # if parent is not found report status as success, error, or failure + if_ci_failed: error # if ci fails report status as success, error, or failure diff --git a/tests/vendor/go.uber.org/automaxprocs/.gitignore b/tests/vendor/go.uber.org/automaxprocs/.gitignore new file mode 100644 index 000000000..dd7bcf513 --- /dev/null +++ b/tests/vendor/go.uber.org/automaxprocs/.gitignore @@ -0,0 +1,33 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test +vendor + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof +*.pprof +*.out +*.log +coverage.txt + +/bin +cover.out +cover.html diff --git a/tests/vendor/go.uber.org/automaxprocs/CHANGELOG.md b/tests/vendor/go.uber.org/automaxprocs/CHANGELOG.md new file mode 100644 index 000000000..f421056ae --- /dev/null +++ b/tests/vendor/go.uber.org/automaxprocs/CHANGELOG.md @@ -0,0 +1,52 @@ +# Changelog + +## v1.6.0 (2024-07-24) + +- Add RoundQuotaFunc option that allows configuration of rounding + behavior for floating point CPU quota. + +## v1.5.3 (2023-07-19) + +- Fix mountinfo parsing when super options have fields with spaces. +- Fix division by zero while parsing cgroups. + +## v1.5.2 (2023-03-16) + +- Support child control cgroups +- Fix file descriptor leak +- Update dependencies + +## v1.5.1 (2022-04-06) + +- Fix cgroups v2 mountpoint detection. + +## v1.5.0 (2022-04-05) + +- Add support for cgroups v2. + +Thanks to @emadolsky for their contribution to this release. + +## v1.4.0 (2021-02-01) + +- Support colons in cgroup names. +- Remove linters from runtime dependencies. + +## v1.3.0 (2020-01-23) + +- Migrate to Go modules. + +## v1.2.0 (2018-02-22) + +- Fixed quota clamping to always round down rather than up; Rather than + guaranteeing constant throttling at saturation, instead assume that the + fractional CPU was added as a hedge for factors outside of Go's scheduler. + +## v1.1.0 (2017-11-10) + +- Log the new value of `GOMAXPROCS` rather than the current value. +- Make logs more explicit about whether `GOMAXPROCS` was modified or not. +- Allow customization of the minimum `GOMAXPROCS`, and modify default from 2 to 1. + +## v1.0.0 (2017-08-09) + +- Initial release. diff --git a/tests/vendor/go.uber.org/automaxprocs/CODE_OF_CONDUCT.md b/tests/vendor/go.uber.org/automaxprocs/CODE_OF_CONDUCT.md new file mode 100644 index 000000000..e327d9aa5 --- /dev/null +++ b/tests/vendor/go.uber.org/automaxprocs/CODE_OF_CONDUCT.md @@ -0,0 +1,75 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, +body size, disability, ethnicity, gender identity and expression, level of +experience, nationality, personal appearance, race, religion, or sexual +identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or + advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an +appointed representative at an online or offline event. Representation of a +project may be further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at oss-conduct@uber.com. The project +team will review and investigate all complaints, and will respond in a way +that it deems appropriate to the circumstances. The project team is obligated +to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 1.4, available at +[http://contributor-covenant.org/version/1/4][version]. + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ diff --git a/tests/vendor/go.uber.org/automaxprocs/CONTRIBUTING.md b/tests/vendor/go.uber.org/automaxprocs/CONTRIBUTING.md new file mode 100644 index 000000000..2b6a6040d --- /dev/null +++ b/tests/vendor/go.uber.org/automaxprocs/CONTRIBUTING.md @@ -0,0 +1,81 @@ +# Contributing + +We'd love your help improving this package! + +If you'd like to add new exported APIs, please [open an issue][open-issue] +describing your proposal — discussing API changes ahead of time makes +pull request review much smoother. In your issue, pull request, and any other +communications, please remember to treat your fellow contributors with +respect! We take our [code of conduct](CODE_OF_CONDUCT.md) seriously. + +Note that you'll need to sign [Uber's Contributor License Agreement][cla] +before we can accept any of your contributions. If necessary, a bot will remind +you to accept the CLA when you open your pull request. + +## Setup + +[Fork][fork], then clone the repository: + +``` +mkdir -p $GOPATH/src/go.uber.org +cd $GOPATH/src/go.uber.org +git clone git@github.com:your_github_username/automaxprocs.git +cd automaxprocs +git remote add upstream https://github.com/uber-go/automaxprocs.git +git fetch upstream +``` + +Install the test dependencies: + +``` +make dependencies +``` + +Make sure that the tests and the linters pass: + +``` +make test +make lint +``` + +If you're not using the minor version of Go specified in the Makefile's +`LINTABLE_MINOR_VERSIONS` variable, `make lint` doesn't do anything. This is +fine, but it means that you'll only discover lint failures after you open your +pull request. + +## Making Changes + +Start by creating a new branch for your changes: + +``` +cd $GOPATH/src/go.uber.org/automaxprocs +git checkout master +git fetch upstream +git rebase upstream/master +git checkout -b cool_new_feature +``` + +Make your changes, then ensure that `make lint` and `make test` still pass. If +you're satisfied with your changes, push them to your fork. + +``` +git push origin cool_new_feature +``` + +Then use the GitHub UI to open a pull request. + +At this point, you're waiting on us to review your changes. We *try* to respond +to issues and pull requests within a few business days, and we may suggest some +improvements or alternatives. Once your changes are approved, one of the +project maintainers will merge them. + +We're much more likely to approve your changes if you: + +* Add tests for new functionality. +* Write a [good commit message][commit-message]. +* Maintain backward compatibility. + +[fork]: https://github.com/uber-go/automaxprocs/fork +[open-issue]: https://github.com/uber-go/automaxprocs/issues/new +[cla]: https://cla-assistant.io/uber-go/automaxprocs +[commit-message]: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html diff --git a/tests/vendor/go.uber.org/automaxprocs/LICENSE b/tests/vendor/go.uber.org/automaxprocs/LICENSE new file mode 100644 index 000000000..20dcf51d9 --- /dev/null +++ b/tests/vendor/go.uber.org/automaxprocs/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2017 Uber Technologies, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/tests/vendor/go.uber.org/automaxprocs/Makefile b/tests/vendor/go.uber.org/automaxprocs/Makefile new file mode 100644 index 000000000..1642b7148 --- /dev/null +++ b/tests/vendor/go.uber.org/automaxprocs/Makefile @@ -0,0 +1,46 @@ +export GOBIN ?= $(shell pwd)/bin + +GO_FILES := $(shell \ + find . '(' -path '*/.*' -o -path './vendor' ')' -prune \ + -o -name '*.go' -print | cut -b3-) + +GOLINT = $(GOBIN)/golint +STATICCHECK = $(GOBIN)/staticcheck + +.PHONY: build +build: + go build ./... + +.PHONY: install +install: + go mod download + +.PHONY: test +test: + go test -race ./... + +.PHONY: cover +cover: + go test -coverprofile=cover.out -covermode=atomic -coverpkg=./... ./... + go tool cover -html=cover.out -o cover.html + +$(GOLINT): tools/go.mod + cd tools && go install golang.org/x/lint/golint + +$(STATICCHECK): tools/go.mod + cd tools && go install honnef.co/go/tools/cmd/staticcheck@2023.1.2 + +.PHONY: lint +lint: $(GOLINT) $(STATICCHECK) + @rm -rf lint.log + @echo "Checking gofmt" + @gofmt -d -s $(GO_FILES) 2>&1 | tee lint.log + @echo "Checking go vet" + @go vet ./... 2>&1 | tee -a lint.log + @echo "Checking golint" + @$(GOLINT) ./... | tee -a lint.log + @echo "Checking staticcheck" + @$(STATICCHECK) ./... 2>&1 | tee -a lint.log + @echo "Checking for license headers..." + @./.build/check_license.sh | tee -a lint.log + @[ ! -s lint.log ] diff --git a/tests/vendor/go.uber.org/automaxprocs/README.md b/tests/vendor/go.uber.org/automaxprocs/README.md new file mode 100644 index 000000000..bfed32ada --- /dev/null +++ b/tests/vendor/go.uber.org/automaxprocs/README.md @@ -0,0 +1,71 @@ +# automaxprocs [![GoDoc][doc-img]][doc] [![Build Status][ci-img]][ci] [![Coverage Status][cov-img]][cov] + +Automatically set `GOMAXPROCS` to match Linux container CPU quota. + +## Installation + +`go get -u go.uber.org/automaxprocs` + +## Quick Start + +```go +import _ "go.uber.org/automaxprocs" + +func main() { + // Your application logic here. +} +``` + +# Performance +Data measured from Uber's internal load balancer. We ran the load balancer with 200% CPU quota (i.e., 2 cores): + +| GOMAXPROCS | RPS | P50 (ms) | P99.9 (ms) | +| ------------------ | --------- | -------- | ---------- | +| 1 | 28,893.18 | 1.46 | 19.70 | +| 2 (equal to quota) | 44,715.07 | 0.84 | 26.38 | +| 3 | 44,212.93 | 0.66 | 30.07 | +| 4 | 41,071.15 | 0.57 | 42.94 | +| 8 | 33,111.69 | 0.43 | 64.32 | +| Default (24) | 22,191.40 | 0.45 | 76.19 | + +When `GOMAXPROCS` is increased above the CPU quota, we see P50 decrease slightly, but see significant increases to P99. We also see that the total RPS handled also decreases. + +When `GOMAXPROCS` is higher than the CPU quota allocated, we also saw significant throttling: + +``` +$ cat /sys/fs/cgroup/cpu,cpuacct/system.slice/[...]/cpu.stat +nr_periods 42227334 +nr_throttled 131923 +throttled_time 88613212216618 +``` + +Once `GOMAXPROCS` was reduced to match the CPU quota, we saw no CPU throttling. + +## Development Status: Stable + +All APIs are finalized, and no breaking changes will be made in the 1.x series +of releases. Users of semver-aware dependency management systems should pin +automaxprocs to `^1`. + +## Contributing + +We encourage and support an active, healthy community of contributors — +including you! Details are in the [contribution guide](CONTRIBUTING.md) and +the [code of conduct](CODE_OF_CONDUCT.md). The automaxprocs maintainers keep +an eye on issues and pull requests, but you can also report any negative +conduct to oss-conduct@uber.com. That email list is a private, safe space; +even the automaxprocs maintainers don't have access, so don't hesitate to hold +us to a high standard. + +
+ +Released under the [MIT License](LICENSE). + +[doc-img]: https://godoc.org/go.uber.org/automaxprocs?status.svg +[doc]: https://godoc.org/go.uber.org/automaxprocs +[ci-img]: https://github.com/uber-go/automaxprocs/actions/workflows/go.yml/badge.svg +[ci]: https://github.com/uber-go/automaxprocs/actions/workflows/go.yml +[cov-img]: https://codecov.io/gh/uber-go/automaxprocs/branch/master/graph/badge.svg +[cov]: https://codecov.io/gh/uber-go/automaxprocs + + diff --git a/tests/vendor/go.uber.org/automaxprocs/automaxprocs.go b/tests/vendor/go.uber.org/automaxprocs/automaxprocs.go new file mode 100644 index 000000000..69946a3e1 --- /dev/null +++ b/tests/vendor/go.uber.org/automaxprocs/automaxprocs.go @@ -0,0 +1,33 @@ +// Copyright (c) 2017 Uber Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +// Package automaxprocs automatically sets GOMAXPROCS to match the Linux +// container CPU quota, if any. +package automaxprocs // import "go.uber.org/automaxprocs" + +import ( + "log" + + "go.uber.org/automaxprocs/maxprocs" +) + +func init() { + maxprocs.Set(maxprocs.Logger(log.Printf)) +} diff --git a/tests/vendor/go.uber.org/automaxprocs/internal/cgroups/cgroup.go b/tests/vendor/go.uber.org/automaxprocs/internal/cgroups/cgroup.go new file mode 100644 index 000000000..fe4ecf561 --- /dev/null +++ b/tests/vendor/go.uber.org/automaxprocs/internal/cgroups/cgroup.go @@ -0,0 +1,79 @@ +// Copyright (c) 2017 Uber Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +//go:build linux +// +build linux + +package cgroups + +import ( + "bufio" + "io" + "os" + "path/filepath" + "strconv" +) + +// CGroup represents the data structure for a Linux control group. +type CGroup struct { + path string +} + +// NewCGroup returns a new *CGroup from a given path. +func NewCGroup(path string) *CGroup { + return &CGroup{path: path} +} + +// Path returns the path of the CGroup*. +func (cg *CGroup) Path() string { + return cg.path +} + +// ParamPath returns the path of the given cgroup param under itself. +func (cg *CGroup) ParamPath(param string) string { + return filepath.Join(cg.path, param) +} + +// readFirstLine reads the first line from a cgroup param file. +func (cg *CGroup) readFirstLine(param string) (string, error) { + paramFile, err := os.Open(cg.ParamPath(param)) + if err != nil { + return "", err + } + defer paramFile.Close() + + scanner := bufio.NewScanner(paramFile) + if scanner.Scan() { + return scanner.Text(), nil + } + if err := scanner.Err(); err != nil { + return "", err + } + return "", io.ErrUnexpectedEOF +} + +// readInt parses the first line from a cgroup param file as int. +func (cg *CGroup) readInt(param string) (int, error) { + text, err := cg.readFirstLine(param) + if err != nil { + return 0, err + } + return strconv.Atoi(text) +} diff --git a/tests/vendor/go.uber.org/automaxprocs/internal/cgroups/cgroups.go b/tests/vendor/go.uber.org/automaxprocs/internal/cgroups/cgroups.go new file mode 100644 index 000000000..e89f54360 --- /dev/null +++ b/tests/vendor/go.uber.org/automaxprocs/internal/cgroups/cgroups.go @@ -0,0 +1,118 @@ +// Copyright (c) 2017 Uber Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +//go:build linux +// +build linux + +package cgroups + +const ( + // _cgroupFSType is the Linux CGroup file system type used in + // `/proc/$PID/mountinfo`. + _cgroupFSType = "cgroup" + // _cgroupSubsysCPU is the CPU CGroup subsystem. + _cgroupSubsysCPU = "cpu" + // _cgroupSubsysCPUAcct is the CPU accounting CGroup subsystem. + _cgroupSubsysCPUAcct = "cpuacct" + // _cgroupSubsysCPUSet is the CPUSet CGroup subsystem. + _cgroupSubsysCPUSet = "cpuset" + // _cgroupSubsysMemory is the Memory CGroup subsystem. + _cgroupSubsysMemory = "memory" + + // _cgroupCPUCFSQuotaUsParam is the file name for the CGroup CFS quota + // parameter. + _cgroupCPUCFSQuotaUsParam = "cpu.cfs_quota_us" + // _cgroupCPUCFSPeriodUsParam is the file name for the CGroup CFS period + // parameter. + _cgroupCPUCFSPeriodUsParam = "cpu.cfs_period_us" +) + +const ( + _procPathCGroup = "/proc/self/cgroup" + _procPathMountInfo = "/proc/self/mountinfo" +) + +// CGroups is a map that associates each CGroup with its subsystem name. +type CGroups map[string]*CGroup + +// NewCGroups returns a new *CGroups from given `mountinfo` and `cgroup` files +// under for some process under `/proc` file system (see also proc(5) for more +// information). +func NewCGroups(procPathMountInfo, procPathCGroup string) (CGroups, error) { + cgroupSubsystems, err := parseCGroupSubsystems(procPathCGroup) + if err != nil { + return nil, err + } + + cgroups := make(CGroups) + newMountPoint := func(mp *MountPoint) error { + if mp.FSType != _cgroupFSType { + return nil + } + + for _, opt := range mp.SuperOptions { + subsys, exists := cgroupSubsystems[opt] + if !exists { + continue + } + + cgroupPath, err := mp.Translate(subsys.Name) + if err != nil { + return err + } + cgroups[opt] = NewCGroup(cgroupPath) + } + + return nil + } + + if err := parseMountInfo(procPathMountInfo, newMountPoint); err != nil { + return nil, err + } + return cgroups, nil +} + +// NewCGroupsForCurrentProcess returns a new *CGroups instance for the current +// process. +func NewCGroupsForCurrentProcess() (CGroups, error) { + return NewCGroups(_procPathMountInfo, _procPathCGroup) +} + +// CPUQuota returns the CPU quota applied with the CPU cgroup controller. +// It is a result of `cpu.cfs_quota_us / cpu.cfs_period_us`. If the value of +// `cpu.cfs_quota_us` was not set (-1), the method returns `(-1, nil)`. +func (cg CGroups) CPUQuota() (float64, bool, error) { + cpuCGroup, exists := cg[_cgroupSubsysCPU] + if !exists { + return -1, false, nil + } + + cfsQuotaUs, err := cpuCGroup.readInt(_cgroupCPUCFSQuotaUsParam) + if defined := cfsQuotaUs > 0; err != nil || !defined { + return -1, defined, err + } + + cfsPeriodUs, err := cpuCGroup.readInt(_cgroupCPUCFSPeriodUsParam) + if defined := cfsPeriodUs > 0; err != nil || !defined { + return -1, defined, err + } + + return float64(cfsQuotaUs) / float64(cfsPeriodUs), true, nil +} diff --git a/tests/vendor/go.uber.org/automaxprocs/internal/cgroups/cgroups2.go b/tests/vendor/go.uber.org/automaxprocs/internal/cgroups/cgroups2.go new file mode 100644 index 000000000..78556062f --- /dev/null +++ b/tests/vendor/go.uber.org/automaxprocs/internal/cgroups/cgroups2.go @@ -0,0 +1,176 @@ +// Copyright (c) 2022 Uber Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +//go:build linux +// +build linux + +package cgroups + +import ( + "bufio" + "errors" + "fmt" + "io" + "os" + "path" + "strconv" + "strings" +) + +const ( + // _cgroupv2CPUMax is the file name for the CGroup-V2 CPU max and period + // parameter. + _cgroupv2CPUMax = "cpu.max" + // _cgroupFSType is the Linux CGroup-V2 file system type used in + // `/proc/$PID/mountinfo`. + _cgroupv2FSType = "cgroup2" + + _cgroupv2MountPoint = "/sys/fs/cgroup" + + _cgroupV2CPUMaxDefaultPeriod = 100000 + _cgroupV2CPUMaxQuotaMax = "max" +) + +const ( + _cgroupv2CPUMaxQuotaIndex = iota + _cgroupv2CPUMaxPeriodIndex +) + +// ErrNotV2 indicates that the system is not using cgroups2. +var ErrNotV2 = errors.New("not using cgroups2") + +// CGroups2 provides access to cgroups data for systems using cgroups2. +type CGroups2 struct { + mountPoint string + groupPath string + cpuMaxFile string +} + +// NewCGroups2ForCurrentProcess builds a CGroups2 for the current process. +// +// This returns ErrNotV2 if the system is not using cgroups2. +func NewCGroups2ForCurrentProcess() (*CGroups2, error) { + return newCGroups2From(_procPathMountInfo, _procPathCGroup) +} + +func newCGroups2From(mountInfoPath, procPathCGroup string) (*CGroups2, error) { + isV2, err := isCGroupV2(mountInfoPath) + if err != nil { + return nil, err + } + + if !isV2 { + return nil, ErrNotV2 + } + + subsystems, err := parseCGroupSubsystems(procPathCGroup) + if err != nil { + return nil, err + } + + // Find v2 subsystem by looking for the `0` id + var v2subsys *CGroupSubsys + for _, subsys := range subsystems { + if subsys.ID == 0 { + v2subsys = subsys + break + } + } + + if v2subsys == nil { + return nil, ErrNotV2 + } + + return &CGroups2{ + mountPoint: _cgroupv2MountPoint, + groupPath: v2subsys.Name, + cpuMaxFile: _cgroupv2CPUMax, + }, nil +} + +func isCGroupV2(procPathMountInfo string) (bool, error) { + var ( + isV2 bool + newMountPoint = func(mp *MountPoint) error { + isV2 = isV2 || (mp.FSType == _cgroupv2FSType && mp.MountPoint == _cgroupv2MountPoint) + return nil + } + ) + + if err := parseMountInfo(procPathMountInfo, newMountPoint); err != nil { + return false, err + } + + return isV2, nil +} + +// CPUQuota returns the CPU quota applied with the CPU cgroup2 controller. +// It is a result of reading cpu quota and period from cpu.max file. +// It will return `cpu.max / cpu.period`. If cpu.max is set to max, it returns +// (-1, false, nil) +func (cg *CGroups2) CPUQuota() (float64, bool, error) { + cpuMaxParams, err := os.Open(path.Join(cg.mountPoint, cg.groupPath, cg.cpuMaxFile)) + if err != nil { + if os.IsNotExist(err) { + return -1, false, nil + } + return -1, false, err + } + defer cpuMaxParams.Close() + + scanner := bufio.NewScanner(cpuMaxParams) + if scanner.Scan() { + fields := strings.Fields(scanner.Text()) + if len(fields) == 0 || len(fields) > 2 { + return -1, false, fmt.Errorf("invalid format") + } + + if fields[_cgroupv2CPUMaxQuotaIndex] == _cgroupV2CPUMaxQuotaMax { + return -1, false, nil + } + + max, err := strconv.Atoi(fields[_cgroupv2CPUMaxQuotaIndex]) + if err != nil { + return -1, false, err + } + + var period int + if len(fields) == 1 { + period = _cgroupV2CPUMaxDefaultPeriod + } else { + period, err = strconv.Atoi(fields[_cgroupv2CPUMaxPeriodIndex]) + if err != nil { + return -1, false, err + } + + if period == 0 { + return -1, false, errors.New("zero value for period is not allowed") + } + } + + return float64(max) / float64(period), true, nil + } + + if err := scanner.Err(); err != nil { + return -1, false, err + } + + return 0, false, io.ErrUnexpectedEOF +} diff --git a/tests/vendor/go.uber.org/automaxprocs/internal/cgroups/doc.go b/tests/vendor/go.uber.org/automaxprocs/internal/cgroups/doc.go new file mode 100644 index 000000000..113555f63 --- /dev/null +++ b/tests/vendor/go.uber.org/automaxprocs/internal/cgroups/doc.go @@ -0,0 +1,23 @@ +// Copyright (c) 2017 Uber Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +// Package cgroups provides utilities to access Linux control group (CGroups) +// parameters (CPU quota, for example) for a given process. +package cgroups diff --git a/tests/vendor/go.uber.org/automaxprocs/internal/cgroups/errors.go b/tests/vendor/go.uber.org/automaxprocs/internal/cgroups/errors.go new file mode 100644 index 000000000..94ac75a46 --- /dev/null +++ b/tests/vendor/go.uber.org/automaxprocs/internal/cgroups/errors.go @@ -0,0 +1,52 @@ +// Copyright (c) 2017 Uber Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +//go:build linux +// +build linux + +package cgroups + +import "fmt" + +type cgroupSubsysFormatInvalidError struct { + line string +} + +type mountPointFormatInvalidError struct { + line string +} + +type pathNotExposedFromMountPointError struct { + mountPoint string + root string + path string +} + +func (err cgroupSubsysFormatInvalidError) Error() string { + return fmt.Sprintf("invalid format for CGroupSubsys: %q", err.line) +} + +func (err mountPointFormatInvalidError) Error() string { + return fmt.Sprintf("invalid format for MountPoint: %q", err.line) +} + +func (err pathNotExposedFromMountPointError) Error() string { + return fmt.Sprintf("path %q is not a descendant of mount point root %q and cannot be exposed from %q", err.path, err.root, err.mountPoint) +} diff --git a/tests/vendor/go.uber.org/automaxprocs/internal/cgroups/mountpoint.go b/tests/vendor/go.uber.org/automaxprocs/internal/cgroups/mountpoint.go new file mode 100644 index 000000000..f3877f78a --- /dev/null +++ b/tests/vendor/go.uber.org/automaxprocs/internal/cgroups/mountpoint.go @@ -0,0 +1,171 @@ +// Copyright (c) 2017 Uber Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +//go:build linux +// +build linux + +package cgroups + +import ( + "bufio" + "os" + "path/filepath" + "strconv" + "strings" +) + +const ( + _mountInfoSep = " " + _mountInfoOptsSep = "," + _mountInfoOptionalFieldsSep = "-" +) + +const ( + _miFieldIDMountID = iota + _miFieldIDParentID + _miFieldIDDeviceID + _miFieldIDRoot + _miFieldIDMountPoint + _miFieldIDOptions + _miFieldIDOptionalFields + + _miFieldCountFirstHalf +) + +const ( + _miFieldOffsetFSType = iota + _miFieldOffsetMountSource + _miFieldOffsetSuperOptions + + _miFieldCountSecondHalf +) + +const _miFieldCountMin = _miFieldCountFirstHalf + _miFieldCountSecondHalf + +// MountPoint is the data structure for the mount points in +// `/proc/$PID/mountinfo`. See also proc(5) for more information. +type MountPoint struct { + MountID int + ParentID int + DeviceID string + Root string + MountPoint string + Options []string + OptionalFields []string + FSType string + MountSource string + SuperOptions []string +} + +// NewMountPointFromLine parses a line read from `/proc/$PID/mountinfo` and +// returns a new *MountPoint. +func NewMountPointFromLine(line string) (*MountPoint, error) { + fields := strings.Split(line, _mountInfoSep) + + if len(fields) < _miFieldCountMin { + return nil, mountPointFormatInvalidError{line} + } + + mountID, err := strconv.Atoi(fields[_miFieldIDMountID]) + if err != nil { + return nil, err + } + + parentID, err := strconv.Atoi(fields[_miFieldIDParentID]) + if err != nil { + return nil, err + } + + for i, field := range fields[_miFieldIDOptionalFields:] { + if field == _mountInfoOptionalFieldsSep { + // End of optional fields. + fsTypeStart := _miFieldIDOptionalFields + i + 1 + + // Now we know where the optional fields end, split the line again with a + // limit to avoid issues with spaces in super options as present on WSL. + fields = strings.SplitN(line, _mountInfoSep, fsTypeStart+_miFieldCountSecondHalf) + if len(fields) != fsTypeStart+_miFieldCountSecondHalf { + return nil, mountPointFormatInvalidError{line} + } + + miFieldIDFSType := _miFieldOffsetFSType + fsTypeStart + miFieldIDMountSource := _miFieldOffsetMountSource + fsTypeStart + miFieldIDSuperOptions := _miFieldOffsetSuperOptions + fsTypeStart + + return &MountPoint{ + MountID: mountID, + ParentID: parentID, + DeviceID: fields[_miFieldIDDeviceID], + Root: fields[_miFieldIDRoot], + MountPoint: fields[_miFieldIDMountPoint], + Options: strings.Split(fields[_miFieldIDOptions], _mountInfoOptsSep), + OptionalFields: fields[_miFieldIDOptionalFields:(fsTypeStart - 1)], + FSType: fields[miFieldIDFSType], + MountSource: fields[miFieldIDMountSource], + SuperOptions: strings.Split(fields[miFieldIDSuperOptions], _mountInfoOptsSep), + }, nil + } + } + + return nil, mountPointFormatInvalidError{line} +} + +// Translate converts an absolute path inside the *MountPoint's file system to +// the host file system path in the mount namespace the *MountPoint belongs to. +func (mp *MountPoint) Translate(absPath string) (string, error) { + relPath, err := filepath.Rel(mp.Root, absPath) + + if err != nil { + return "", err + } + if relPath == ".." || strings.HasPrefix(relPath, "../") { + return "", pathNotExposedFromMountPointError{ + mountPoint: mp.MountPoint, + root: mp.Root, + path: absPath, + } + } + + return filepath.Join(mp.MountPoint, relPath), nil +} + +// parseMountInfo parses procPathMountInfo (usually at `/proc/$PID/mountinfo`) +// and yields parsed *MountPoint into newMountPoint. +func parseMountInfo(procPathMountInfo string, newMountPoint func(*MountPoint) error) error { + mountInfoFile, err := os.Open(procPathMountInfo) + if err != nil { + return err + } + defer mountInfoFile.Close() + + scanner := bufio.NewScanner(mountInfoFile) + + for scanner.Scan() { + mountPoint, err := NewMountPointFromLine(scanner.Text()) + if err != nil { + return err + } + if err := newMountPoint(mountPoint); err != nil { + return err + } + } + + return scanner.Err() +} diff --git a/tests/vendor/go.uber.org/automaxprocs/internal/cgroups/subsys.go b/tests/vendor/go.uber.org/automaxprocs/internal/cgroups/subsys.go new file mode 100644 index 000000000..cddc3eaec --- /dev/null +++ b/tests/vendor/go.uber.org/automaxprocs/internal/cgroups/subsys.go @@ -0,0 +1,103 @@ +// Copyright (c) 2017 Uber Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +//go:build linux +// +build linux + +package cgroups + +import ( + "bufio" + "os" + "strconv" + "strings" +) + +const ( + _cgroupSep = ":" + _cgroupSubsysSep = "," +) + +const ( + _csFieldIDID = iota + _csFieldIDSubsystems + _csFieldIDName + _csFieldCount +) + +// CGroupSubsys represents the data structure for entities in +// `/proc/$PID/cgroup`. See also proc(5) for more information. +type CGroupSubsys struct { + ID int + Subsystems []string + Name string +} + +// NewCGroupSubsysFromLine returns a new *CGroupSubsys by parsing a string in +// the format of `/proc/$PID/cgroup` +func NewCGroupSubsysFromLine(line string) (*CGroupSubsys, error) { + fields := strings.SplitN(line, _cgroupSep, _csFieldCount) + + if len(fields) != _csFieldCount { + return nil, cgroupSubsysFormatInvalidError{line} + } + + id, err := strconv.Atoi(fields[_csFieldIDID]) + if err != nil { + return nil, err + } + + cgroup := &CGroupSubsys{ + ID: id, + Subsystems: strings.Split(fields[_csFieldIDSubsystems], _cgroupSubsysSep), + Name: fields[_csFieldIDName], + } + + return cgroup, nil +} + +// parseCGroupSubsystems parses procPathCGroup (usually at `/proc/$PID/cgroup`) +// and returns a new map[string]*CGroupSubsys. +func parseCGroupSubsystems(procPathCGroup string) (map[string]*CGroupSubsys, error) { + cgroupFile, err := os.Open(procPathCGroup) + if err != nil { + return nil, err + } + defer cgroupFile.Close() + + scanner := bufio.NewScanner(cgroupFile) + subsystems := make(map[string]*CGroupSubsys) + + for scanner.Scan() { + cgroup, err := NewCGroupSubsysFromLine(scanner.Text()) + if err != nil { + return nil, err + } + for _, subsys := range cgroup.Subsystems { + subsystems[subsys] = cgroup + } + } + + if err := scanner.Err(); err != nil { + return nil, err + } + + return subsystems, nil +} diff --git a/tests/vendor/go.uber.org/automaxprocs/internal/runtime/cpu_quota_linux.go b/tests/vendor/go.uber.org/automaxprocs/internal/runtime/cpu_quota_linux.go new file mode 100644 index 000000000..f9057fd27 --- /dev/null +++ b/tests/vendor/go.uber.org/automaxprocs/internal/runtime/cpu_quota_linux.go @@ -0,0 +1,75 @@ +// Copyright (c) 2017 Uber Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +//go:build linux +// +build linux + +package runtime + +import ( + "errors" + + cg "go.uber.org/automaxprocs/internal/cgroups" +) + +// CPUQuotaToGOMAXPROCS converts the CPU quota applied to the calling process +// to a valid GOMAXPROCS value. The quota is converted from float to int using round. +// If round == nil, DefaultRoundFunc is used. +func CPUQuotaToGOMAXPROCS(minValue int, round func(v float64) int) (int, CPUQuotaStatus, error) { + if round == nil { + round = DefaultRoundFunc + } + cgroups, err := _newQueryer() + if err != nil { + return -1, CPUQuotaUndefined, err + } + + quota, defined, err := cgroups.CPUQuota() + if !defined || err != nil { + return -1, CPUQuotaUndefined, err + } + + maxProcs := round(quota) + if minValue > 0 && maxProcs < minValue { + return minValue, CPUQuotaMinUsed, nil + } + return maxProcs, CPUQuotaUsed, nil +} + +type queryer interface { + CPUQuota() (float64, bool, error) +} + +var ( + _newCgroups2 = cg.NewCGroups2ForCurrentProcess + _newCgroups = cg.NewCGroupsForCurrentProcess + _newQueryer = newQueryer +) + +func newQueryer() (queryer, error) { + cgroups, err := _newCgroups2() + if err == nil { + return cgroups, nil + } + if errors.Is(err, cg.ErrNotV2) { + return _newCgroups() + } + return nil, err +} diff --git a/tests/vendor/go.uber.org/automaxprocs/internal/runtime/cpu_quota_unsupported.go b/tests/vendor/go.uber.org/automaxprocs/internal/runtime/cpu_quota_unsupported.go new file mode 100644 index 000000000..e74701508 --- /dev/null +++ b/tests/vendor/go.uber.org/automaxprocs/internal/runtime/cpu_quota_unsupported.go @@ -0,0 +1,31 @@ +// Copyright (c) 2017 Uber Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +//go:build !linux +// +build !linux + +package runtime + +// CPUQuotaToGOMAXPROCS converts the CPU quota applied to the calling process +// to a valid GOMAXPROCS value. This is Linux-specific and not supported in the +// current OS. +func CPUQuotaToGOMAXPROCS(_ int, _ func(v float64) int) (int, CPUQuotaStatus, error) { + return -1, CPUQuotaUndefined, nil +} diff --git a/tests/vendor/go.uber.org/automaxprocs/internal/runtime/runtime.go b/tests/vendor/go.uber.org/automaxprocs/internal/runtime/runtime.go new file mode 100644 index 000000000..f8a2834ac --- /dev/null +++ b/tests/vendor/go.uber.org/automaxprocs/internal/runtime/runtime.go @@ -0,0 +1,40 @@ +// Copyright (c) 2017 Uber Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +package runtime + +import "math" + +// CPUQuotaStatus presents the status of how CPU quota is used +type CPUQuotaStatus int + +const ( + // CPUQuotaUndefined is returned when CPU quota is undefined + CPUQuotaUndefined CPUQuotaStatus = iota + // CPUQuotaUsed is returned when a valid CPU quota can be used + CPUQuotaUsed + // CPUQuotaMinUsed is returned when CPU quota is smaller than the min value + CPUQuotaMinUsed +) + +// DefaultRoundFunc is the default function to convert CPU quota from float to int. It rounds the value down (floor). +func DefaultRoundFunc(v float64) int { + return int(math.Floor(v)) +} diff --git a/tests/vendor/go.uber.org/automaxprocs/maxprocs/maxprocs.go b/tests/vendor/go.uber.org/automaxprocs/maxprocs/maxprocs.go new file mode 100644 index 000000000..e561fe60b --- /dev/null +++ b/tests/vendor/go.uber.org/automaxprocs/maxprocs/maxprocs.go @@ -0,0 +1,139 @@ +// Copyright (c) 2017 Uber Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +// Package maxprocs lets Go programs easily configure runtime.GOMAXPROCS to +// match the configured Linux CPU quota. Unlike the top-level automaxprocs +// package, it lets the caller configure logging and handle errors. +package maxprocs // import "go.uber.org/automaxprocs/maxprocs" + +import ( + "os" + "runtime" + + iruntime "go.uber.org/automaxprocs/internal/runtime" +) + +const _maxProcsKey = "GOMAXPROCS" + +func currentMaxProcs() int { + return runtime.GOMAXPROCS(0) +} + +type config struct { + printf func(string, ...interface{}) + procs func(int, func(v float64) int) (int, iruntime.CPUQuotaStatus, error) + minGOMAXPROCS int + roundQuotaFunc func(v float64) int +} + +func (c *config) log(fmt string, args ...interface{}) { + if c.printf != nil { + c.printf(fmt, args...) + } +} + +// An Option alters the behavior of Set. +type Option interface { + apply(*config) +} + +// Logger uses the supplied printf implementation for log output. By default, +// Set doesn't log anything. +func Logger(printf func(string, ...interface{})) Option { + return optionFunc(func(cfg *config) { + cfg.printf = printf + }) +} + +// Min sets the minimum GOMAXPROCS value that will be used. +// Any value below 1 is ignored. +func Min(n int) Option { + return optionFunc(func(cfg *config) { + if n >= 1 { + cfg.minGOMAXPROCS = n + } + }) +} + +// RoundQuotaFunc sets the function that will be used to covert the CPU quota from float to int. +func RoundQuotaFunc(rf func(v float64) int) Option { + return optionFunc(func(cfg *config) { + cfg.roundQuotaFunc = rf + }) +} + +type optionFunc func(*config) + +func (of optionFunc) apply(cfg *config) { of(cfg) } + +// Set GOMAXPROCS to match the Linux container CPU quota (if any), returning +// any error encountered and an undo function. +// +// Set is a no-op on non-Linux systems and in Linux environments without a +// configured CPU quota. +func Set(opts ...Option) (func(), error) { + cfg := &config{ + procs: iruntime.CPUQuotaToGOMAXPROCS, + roundQuotaFunc: iruntime.DefaultRoundFunc, + minGOMAXPROCS: 1, + } + for _, o := range opts { + o.apply(cfg) + } + + undoNoop := func() { + cfg.log("maxprocs: No GOMAXPROCS change to reset") + } + + // Honor the GOMAXPROCS environment variable if present. Otherwise, amend + // `runtime.GOMAXPROCS()` with the current process' CPU quota if the OS is + // Linux, and guarantee a minimum value of 1. The minimum guaranteed value + // can be overridden using `maxprocs.Min()`. + if max, exists := os.LookupEnv(_maxProcsKey); exists { + cfg.log("maxprocs: Honoring GOMAXPROCS=%q as set in environment", max) + return undoNoop, nil + } + + maxProcs, status, err := cfg.procs(cfg.minGOMAXPROCS, cfg.roundQuotaFunc) + if err != nil { + return undoNoop, err + } + + if status == iruntime.CPUQuotaUndefined { + cfg.log("maxprocs: Leaving GOMAXPROCS=%v: CPU quota undefined", currentMaxProcs()) + return undoNoop, nil + } + + prev := currentMaxProcs() + undo := func() { + cfg.log("maxprocs: Resetting GOMAXPROCS to %v", prev) + runtime.GOMAXPROCS(prev) + } + + switch status { + case iruntime.CPUQuotaMinUsed: + cfg.log("maxprocs: Updating GOMAXPROCS=%v: using minimum allowed GOMAXPROCS", maxProcs) + case iruntime.CPUQuotaUsed: + cfg.log("maxprocs: Updating GOMAXPROCS=%v: determined from CPU quota", maxProcs) + } + + runtime.GOMAXPROCS(maxProcs) + return undo, nil +} diff --git a/tests/vendor/go.uber.org/automaxprocs/maxprocs/version.go b/tests/vendor/go.uber.org/automaxprocs/maxprocs/version.go new file mode 100644 index 000000000..cc7fc5aee --- /dev/null +++ b/tests/vendor/go.uber.org/automaxprocs/maxprocs/version.go @@ -0,0 +1,24 @@ +// Copyright (c) 2017 Uber Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +package maxprocs + +// Version is the current package version. +const Version = "1.6.0" diff --git a/tests/vendor/golang.org/x/crypto/LICENSE b/tests/vendor/golang.org/x/crypto/LICENSE new file mode 100644 index 000000000..2a7cf70da --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/LICENSE @@ -0,0 +1,27 @@ +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/tests/vendor/golang.org/x/crypto/PATENTS b/tests/vendor/golang.org/x/crypto/PATENTS new file mode 100644 index 000000000..733099041 --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/PATENTS @@ -0,0 +1,22 @@ +Additional IP Rights Grant (Patents) + +"This implementation" means the copyrightable works distributed by +Google as part of the Go project. + +Google hereby grants to You a perpetual, worldwide, non-exclusive, +no-charge, royalty-free, irrevocable (except as stated in this section) +patent license to make, have made, use, offer to sell, sell, import, +transfer and otherwise run, modify and propagate the contents of this +implementation of Go, where such license applies only to those patent +claims, both currently owned or controlled by Google and acquired in +the future, licensable by Google that are necessarily infringed by this +implementation of Go. This grant does not include claims that would be +infringed only as a consequence of further modification of this +implementation. If you or your agent or exclusive licensee institute or +order or agree to the institution of patent litigation against any +entity (including a cross-claim or counterclaim in a lawsuit) alleging +that this implementation of Go or any code incorporated within this +implementation of Go constitutes direct or contributory patent +infringement, or inducement of patent infringement, then any patent +rights granted to you under this License for this implementation of Go +shall terminate as of the date such litigation is filed. diff --git a/tests/vendor/golang.org/x/crypto/blowfish/block.go b/tests/vendor/golang.org/x/crypto/blowfish/block.go new file mode 100644 index 000000000..9d80f1952 --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/blowfish/block.go @@ -0,0 +1,159 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package blowfish + +// getNextWord returns the next big-endian uint32 value from the byte slice +// at the given position in a circular manner, updating the position. +func getNextWord(b []byte, pos *int) uint32 { + var w uint32 + j := *pos + for i := 0; i < 4; i++ { + w = w<<8 | uint32(b[j]) + j++ + if j >= len(b) { + j = 0 + } + } + *pos = j + return w +} + +// ExpandKey performs a key expansion on the given *Cipher. Specifically, it +// performs the Blowfish algorithm's key schedule which sets up the *Cipher's +// pi and substitution tables for calls to Encrypt. This is used, primarily, +// by the bcrypt package to reuse the Blowfish key schedule during its +// set up. It's unlikely that you need to use this directly. +func ExpandKey(key []byte, c *Cipher) { + j := 0 + for i := 0; i < 18; i++ { + // Using inlined getNextWord for performance. + var d uint32 + for k := 0; k < 4; k++ { + d = d<<8 | uint32(key[j]) + j++ + if j >= len(key) { + j = 0 + } + } + c.p[i] ^= d + } + + var l, r uint32 + for i := 0; i < 18; i += 2 { + l, r = encryptBlock(l, r, c) + c.p[i], c.p[i+1] = l, r + } + + for i := 0; i < 256; i += 2 { + l, r = encryptBlock(l, r, c) + c.s0[i], c.s0[i+1] = l, r + } + for i := 0; i < 256; i += 2 { + l, r = encryptBlock(l, r, c) + c.s1[i], c.s1[i+1] = l, r + } + for i := 0; i < 256; i += 2 { + l, r = encryptBlock(l, r, c) + c.s2[i], c.s2[i+1] = l, r + } + for i := 0; i < 256; i += 2 { + l, r = encryptBlock(l, r, c) + c.s3[i], c.s3[i+1] = l, r + } +} + +// This is similar to ExpandKey, but folds the salt during the key +// schedule. While ExpandKey is essentially expandKeyWithSalt with an all-zero +// salt passed in, reusing ExpandKey turns out to be a place of inefficiency +// and specializing it here is useful. +func expandKeyWithSalt(key []byte, salt []byte, c *Cipher) { + j := 0 + for i := 0; i < 18; i++ { + c.p[i] ^= getNextWord(key, &j) + } + + j = 0 + var l, r uint32 + for i := 0; i < 18; i += 2 { + l ^= getNextWord(salt, &j) + r ^= getNextWord(salt, &j) + l, r = encryptBlock(l, r, c) + c.p[i], c.p[i+1] = l, r + } + + for i := 0; i < 256; i += 2 { + l ^= getNextWord(salt, &j) + r ^= getNextWord(salt, &j) + l, r = encryptBlock(l, r, c) + c.s0[i], c.s0[i+1] = l, r + } + + for i := 0; i < 256; i += 2 { + l ^= getNextWord(salt, &j) + r ^= getNextWord(salt, &j) + l, r = encryptBlock(l, r, c) + c.s1[i], c.s1[i+1] = l, r + } + + for i := 0; i < 256; i += 2 { + l ^= getNextWord(salt, &j) + r ^= getNextWord(salt, &j) + l, r = encryptBlock(l, r, c) + c.s2[i], c.s2[i+1] = l, r + } + + for i := 0; i < 256; i += 2 { + l ^= getNextWord(salt, &j) + r ^= getNextWord(salt, &j) + l, r = encryptBlock(l, r, c) + c.s3[i], c.s3[i+1] = l, r + } +} + +func encryptBlock(l, r uint32, c *Cipher) (uint32, uint32) { + xl, xr := l, r + xl ^= c.p[0] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[1] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[2] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[3] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[4] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[5] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[6] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[7] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[8] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[9] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[10] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[11] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[12] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[13] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[14] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[15] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[16] + xr ^= c.p[17] + return xr, xl +} + +func decryptBlock(l, r uint32, c *Cipher) (uint32, uint32) { + xl, xr := l, r + xl ^= c.p[17] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[16] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[15] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[14] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[13] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[12] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[11] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[10] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[9] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[8] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[7] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[6] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[5] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[4] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[3] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[2] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[1] + xr ^= c.p[0] + return xr, xl +} diff --git a/tests/vendor/golang.org/x/crypto/blowfish/cipher.go b/tests/vendor/golang.org/x/crypto/blowfish/cipher.go new file mode 100644 index 000000000..089895680 --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/blowfish/cipher.go @@ -0,0 +1,99 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package blowfish implements Bruce Schneier's Blowfish encryption algorithm. +// +// Blowfish is a legacy cipher and its short block size makes it vulnerable to +// birthday bound attacks (see https://sweet32.info). It should only be used +// where compatibility with legacy systems, not security, is the goal. +// +// Deprecated: any new system should use AES (from crypto/aes, if necessary in +// an AEAD mode like crypto/cipher.NewGCM) or XChaCha20-Poly1305 (from +// golang.org/x/crypto/chacha20poly1305). +package blowfish + +// The code is a port of Bruce Schneier's C implementation. +// See https://www.schneier.com/blowfish.html. + +import "strconv" + +// The Blowfish block size in bytes. +const BlockSize = 8 + +// A Cipher is an instance of Blowfish encryption using a particular key. +type Cipher struct { + p [18]uint32 + s0, s1, s2, s3 [256]uint32 +} + +type KeySizeError int + +func (k KeySizeError) Error() string { + return "crypto/blowfish: invalid key size " + strconv.Itoa(int(k)) +} + +// NewCipher creates and returns a Cipher. +// The key argument should be the Blowfish key, from 1 to 56 bytes. +func NewCipher(key []byte) (*Cipher, error) { + var result Cipher + if k := len(key); k < 1 || k > 56 { + return nil, KeySizeError(k) + } + initCipher(&result) + ExpandKey(key, &result) + return &result, nil +} + +// NewSaltedCipher creates a returns a Cipher that folds a salt into its key +// schedule. For most purposes, NewCipher, instead of NewSaltedCipher, is +// sufficient and desirable. For bcrypt compatibility, the key can be over 56 +// bytes. +func NewSaltedCipher(key, salt []byte) (*Cipher, error) { + if len(salt) == 0 { + return NewCipher(key) + } + var result Cipher + if k := len(key); k < 1 { + return nil, KeySizeError(k) + } + initCipher(&result) + expandKeyWithSalt(key, salt, &result) + return &result, nil +} + +// BlockSize returns the Blowfish block size, 8 bytes. +// It is necessary to satisfy the Block interface in the +// package "crypto/cipher". +func (c *Cipher) BlockSize() int { return BlockSize } + +// Encrypt encrypts the 8-byte buffer src using the key k +// and stores the result in dst. +// Note that for amounts of data larger than a block, +// it is not safe to just call Encrypt on successive blocks; +// instead, use an encryption mode like CBC (see crypto/cipher/cbc.go). +func (c *Cipher) Encrypt(dst, src []byte) { + l := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) + r := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) + l, r = encryptBlock(l, r, c) + dst[0], dst[1], dst[2], dst[3] = byte(l>>24), byte(l>>16), byte(l>>8), byte(l) + dst[4], dst[5], dst[6], dst[7] = byte(r>>24), byte(r>>16), byte(r>>8), byte(r) +} + +// Decrypt decrypts the 8-byte buffer src using the key k +// and stores the result in dst. +func (c *Cipher) Decrypt(dst, src []byte) { + l := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) + r := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) + l, r = decryptBlock(l, r, c) + dst[0], dst[1], dst[2], dst[3] = byte(l>>24), byte(l>>16), byte(l>>8), byte(l) + dst[4], dst[5], dst[6], dst[7] = byte(r>>24), byte(r>>16), byte(r>>8), byte(r) +} + +func initCipher(c *Cipher) { + copy(c.p[0:], p[0:]) + copy(c.s0[0:], s0[0:]) + copy(c.s1[0:], s1[0:]) + copy(c.s2[0:], s2[0:]) + copy(c.s3[0:], s3[0:]) +} diff --git a/tests/vendor/golang.org/x/crypto/blowfish/const.go b/tests/vendor/golang.org/x/crypto/blowfish/const.go new file mode 100644 index 000000000..d04077595 --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/blowfish/const.go @@ -0,0 +1,199 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// The startup permutation array and substitution boxes. +// They are the hexadecimal digits of PI; see: +// https://www.schneier.com/code/constants.txt. + +package blowfish + +var s0 = [256]uint32{ + 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96, + 0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16, + 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, 0x0d95748f, 0x728eb658, + 0x718bcd58, 0x82154aee, 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, + 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e, + 0x6c9e0e8b, 0xb01e8a3e, 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60, + 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, 0x55ca396a, 0x2aab10b6, + 0xb4cc5c34, 0x1141e8ce, 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a, + 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c, + 0x7a325381, 0x28958677, 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193, + 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, 0xef845d5d, 0xe98575b1, + 0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239, + 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a, + 0x670c9c61, 0xabd388f0, 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, + 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, 0xa1f1651d, 0x39af0176, + 0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe, + 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, 0x4ed3aa62, 0x363f7706, + 0x1bfedf72, 0x429b023d, 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b, + 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, 0xe3fe501a, 0xb6794c3b, + 0x976ce0bd, 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463, + 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f, 0x9b30952c, + 0xcc814544, 0xaf5ebd09, 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3, + 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, 0x5579c0bd, 0x1a60320a, + 0xd6a100c6, 0x402c7279, 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, + 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760, + 0x53317b48, 0x3e00df82, 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db, + 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, 0x695b27b0, 0xbbca58c8, + 0xe1ffa35d, 0xb8f011a0, 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, + 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33, + 0x62fb1341, 0xcee4c6e8, 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4, + 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, 0xd08ed1d0, 0xafc725e0, + 0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c, + 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777, + 0xea752dfe, 0x8b021fa1, 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, + 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, 0x165fa266, 0x80957705, + 0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf, + 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, 0x00250e2d, 0x2071b35e, + 0x226800bb, 0x57b8e0af, 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa, + 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, 0x83260376, 0x6295cfa9, + 0x11c81968, 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915, + 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5, 0x571be91f, + 0xf296ec6b, 0x2a0dd915, 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664, + 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a, +} + +var s1 = [256]uint32{ + 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, 0xad6ea6b0, 0x49a7df7d, + 0x9cee60b8, 0x8fedb266, 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, + 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, 0x3f54989a, 0x5b429d65, + 0x6b8fe4d6, 0x99f73fd6, 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, + 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, 0x09686b3f, 0x3ebaefc9, + 0x3c971814, 0x6b6a70a1, 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, + 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, 0xb03ada37, 0xf0500c0d, + 0xf01c1f04, 0x0200b3ff, 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, + 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc, + 0xc8b57634, 0x9af3dda7, 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, + 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, 0x4e548b38, 0x4f6db908, + 0x6f420d03, 0xf60a04bf, 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, + 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124, + 0x501adde6, 0x9f84cd87, 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, + 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, 0xef1c1847, 0x3215d908, + 0xdd433b37, 0x24c2ba16, 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, + 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, 0x043556f1, 0xd7a3c76b, + 0x3c11183b, 0x5924a509, 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, + 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, 0x771fe71c, 0x4e3d06fa, + 0x2965dcb9, 0x99e71d0f, 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, + 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, 0xf2f74ea7, 0x361d2b3d, + 0x1939260f, 0x19c27960, 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, + 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, 0xc332ddef, 0xbe6c5aa5, + 0x65582185, 0x68ab9802, 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, + 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, 0x13cca830, 0xeb61bd96, + 0x0334fe1e, 0xaa0363cf, 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, + 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, 0x648b1eaf, 0x19bdf0ca, + 0xa02369b9, 0x655abb50, 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, + 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77, + 0x11ed935f, 0x16681281, 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, + 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, 0xcdb30aeb, 0x532e3054, + 0x8fd948e4, 0x6dbc3128, 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, + 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea, + 0xdb6c4f15, 0xfacb4fd0, 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, + 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, 0xcf62a1f2, 0x5b8d2646, + 0xfc8883a0, 0xc1c7b6a3, 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, + 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, 0x58428d2a, 0x0c55f5ea, + 0x1dadf43e, 0x233f7061, 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, + 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, 0xa6078084, 0x19f8509e, + 0xe8efd855, 0x61d99735, 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, + 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, 0xdb73dbd3, 0x105588cd, + 0x675fda79, 0xe3674340, 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, + 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7, +} + +var s2 = [256]uint32{ + 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934, 0x411520f7, 0x7602d4f7, + 0xbcf46b2e, 0xd4a20068, 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, + 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840, 0x4d95fc1d, 0x96b591af, + 0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504, + 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, 0x28507825, 0x530429f4, + 0x0a2c86da, 0xe9b66dfb, 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee, + 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, 0xaace1e7c, 0xd3375fec, + 0xce78a399, 0x406b2a42, 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b, + 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, 0x3a6efa74, 0xdd5b4332, + 0x6841e7f7, 0xca7820fb, 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527, + 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, 0x55a867bc, 0xa1159a58, + 0xcca92963, 0x99e1db33, 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, + 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3, 0x95c11548, 0xe4c66d22, + 0x48c1133f, 0xc70f86dc, 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17, + 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564, 0x257b7834, 0x602a9c60, + 0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115, + 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922, 0x85b2a20e, 0xe6ba0d99, + 0xde720c8c, 0x2da2f728, 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0, + 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, 0x0a476341, 0x992eff74, + 0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d, + 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804, 0xf1290dc7, 0xcc00ffa3, + 0xb5390f92, 0x690fed0b, 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, + 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb, 0x37392eb3, 0xcc115979, + 0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c, + 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350, 0x1a6b1018, 0x11caedfa, + 0x3d25bdd8, 0xe2e1c3c9, 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a, + 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe, 0x9dbc8057, 0xf0f7c086, + 0x60787bf8, 0x6003604d, 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc, + 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, 0x77a057be, 0xbde8ae24, + 0x55464299, 0xbf582e61, 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2, + 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9, 0x7aeb2661, 0x8b1ddf84, + 0x846a0e79, 0x915f95e2, 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, + 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e, 0xb77f19b6, 0xe0a9dc09, + 0x662d09a1, 0xc4324633, 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10, + 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169, 0xdcb7da83, 0x573906fe, + 0xa1e2ce9b, 0x4fcd7f52, 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027, + 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5, 0xf0177a28, 0xc0f586e0, + 0x006058aa, 0x30dc7d62, 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634, + 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, 0x6f05e409, 0x4b7c0188, + 0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc, + 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4, 0x1e50ef5e, 0xb161e6f8, + 0xa28514d9, 0x6c51133c, 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, + 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0, +} + +var s3 = [256]uint32{ + 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742, + 0xd3822740, 0x99bc9bbe, 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b, + 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, 0x5748ab2f, 0xbc946e79, + 0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6, + 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, 0xa1fad5f0, 0x6a2d519a, + 0x63ef8ce2, 0x9a86ee22, 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, + 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, 0x2826a2f9, 0xa73a3ae1, + 0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59, + 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, 0xe990fd5a, 0x9e34d797, + 0x2cf0b7d9, 0x022b8b51, 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, + 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, 0xe029ac71, 0xe019a5e6, + 0x47b0acfd, 0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28, + 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4, 0x88f46dba, + 0x03a16125, 0x0564f0bd, 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a, + 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, 0x7533d928, 0xb155fdf5, + 0x03563482, 0x8aba3cbb, 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, + 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce, + 0x5121ce64, 0x774fbe32, 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680, + 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, 0xb39a460a, 0x6445c0dd, + 0x586cdecf, 0x1c20c8ae, 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb, + 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb, + 0x8d6612ae, 0xbf3c6f47, 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370, + 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, 0x4040cb08, 0x4eb4e2cc, + 0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048, + 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, 0x611560b1, 0xe7933fdc, + 0xbb3a792b, 0x344525bd, 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, + 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, 0x1a908749, 0xd44fbd9a, + 0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f, + 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, 0xbf97222c, 0x15e6fc2a, + 0x0f91fc71, 0x9b941525, 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1, + 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, 0xe0ec6e0e, 0x1698db3b, + 0x4c98a0be, 0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e, + 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d, 0x9b992f2e, + 0xe60b6f47, 0x0fe3f11d, 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f, + 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, 0xf523f357, 0xa6327623, + 0x93a83531, 0x56cccd02, 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, + 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a, + 0x45e1d006, 0xc3f27b9a, 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6, + 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, 0x53113ec0, 0x1640e3d3, + 0x38abbd60, 0x2547adf0, 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060, + 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c, + 0x01c36ae4, 0xd6ebe1f9, 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f, + 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6, +} + +var p = [18]uint32{ + 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822, 0x299f31d0, + 0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c, + 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, 0x9216d5d9, 0x8979fb1b, +} diff --git a/tests/vendor/golang.org/x/crypto/chacha20/chacha_arm64.go b/tests/vendor/golang.org/x/crypto/chacha20/chacha_arm64.go new file mode 100644 index 000000000..661ea132e --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/chacha20/chacha_arm64.go @@ -0,0 +1,16 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc && !purego + +package chacha20 + +const bufSize = 256 + +//go:noescape +func xorKeyStreamVX(dst, src []byte, key *[8]uint32, nonce *[3]uint32, counter *uint32) + +func (c *Cipher) xorKeyStreamBlocks(dst, src []byte) { + xorKeyStreamVX(dst, src, &c.key, &c.nonce, &c.counter) +} diff --git a/tests/vendor/golang.org/x/crypto/chacha20/chacha_arm64.s b/tests/vendor/golang.org/x/crypto/chacha20/chacha_arm64.s new file mode 100644 index 000000000..7dd2638e8 --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/chacha20/chacha_arm64.s @@ -0,0 +1,307 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc && !purego + +#include "textflag.h" + +#define NUM_ROUNDS 10 + +// func xorKeyStreamVX(dst, src []byte, key *[8]uint32, nonce *[3]uint32, counter *uint32) +TEXT ·xorKeyStreamVX(SB), NOSPLIT, $0 + MOVD dst+0(FP), R1 + MOVD src+24(FP), R2 + MOVD src_len+32(FP), R3 + MOVD key+48(FP), R4 + MOVD nonce+56(FP), R6 + MOVD counter+64(FP), R7 + + MOVD $·constants(SB), R10 + MOVD $·incRotMatrix(SB), R11 + + MOVW (R7), R20 + + AND $~255, R3, R13 + ADD R2, R13, R12 // R12 for block end + AND $255, R3, R13 +loop: + MOVD $NUM_ROUNDS, R21 + VLD1 (R11), [V30.S4, V31.S4] + + // load contants + // VLD4R (R10), [V0.S4, V1.S4, V2.S4, V3.S4] + WORD $0x4D60E940 + + // load keys + // VLD4R 16(R4), [V4.S4, V5.S4, V6.S4, V7.S4] + WORD $0x4DFFE884 + // VLD4R 16(R4), [V8.S4, V9.S4, V10.S4, V11.S4] + WORD $0x4DFFE888 + SUB $32, R4 + + // load counter + nonce + // VLD1R (R7), [V12.S4] + WORD $0x4D40C8EC + + // VLD3R (R6), [V13.S4, V14.S4, V15.S4] + WORD $0x4D40E8CD + + // update counter + VADD V30.S4, V12.S4, V12.S4 + +chacha: + // V0..V3 += V4..V7 + // V12..V15 <<<= ((V12..V15 XOR V0..V3), 16) + VADD V0.S4, V4.S4, V0.S4 + VADD V1.S4, V5.S4, V1.S4 + VADD V2.S4, V6.S4, V2.S4 + VADD V3.S4, V7.S4, V3.S4 + VEOR V12.B16, V0.B16, V12.B16 + VEOR V13.B16, V1.B16, V13.B16 + VEOR V14.B16, V2.B16, V14.B16 + VEOR V15.B16, V3.B16, V15.B16 + VREV32 V12.H8, V12.H8 + VREV32 V13.H8, V13.H8 + VREV32 V14.H8, V14.H8 + VREV32 V15.H8, V15.H8 + // V8..V11 += V12..V15 + // V4..V7 <<<= ((V4..V7 XOR V8..V11), 12) + VADD V8.S4, V12.S4, V8.S4 + VADD V9.S4, V13.S4, V9.S4 + VADD V10.S4, V14.S4, V10.S4 + VADD V11.S4, V15.S4, V11.S4 + VEOR V8.B16, V4.B16, V16.B16 + VEOR V9.B16, V5.B16, V17.B16 + VEOR V10.B16, V6.B16, V18.B16 + VEOR V11.B16, V7.B16, V19.B16 + VSHL $12, V16.S4, V4.S4 + VSHL $12, V17.S4, V5.S4 + VSHL $12, V18.S4, V6.S4 + VSHL $12, V19.S4, V7.S4 + VSRI $20, V16.S4, V4.S4 + VSRI $20, V17.S4, V5.S4 + VSRI $20, V18.S4, V6.S4 + VSRI $20, V19.S4, V7.S4 + + // V0..V3 += V4..V7 + // V12..V15 <<<= ((V12..V15 XOR V0..V3), 8) + VADD V0.S4, V4.S4, V0.S4 + VADD V1.S4, V5.S4, V1.S4 + VADD V2.S4, V6.S4, V2.S4 + VADD V3.S4, V7.S4, V3.S4 + VEOR V12.B16, V0.B16, V12.B16 + VEOR V13.B16, V1.B16, V13.B16 + VEOR V14.B16, V2.B16, V14.B16 + VEOR V15.B16, V3.B16, V15.B16 + VTBL V31.B16, [V12.B16], V12.B16 + VTBL V31.B16, [V13.B16], V13.B16 + VTBL V31.B16, [V14.B16], V14.B16 + VTBL V31.B16, [V15.B16], V15.B16 + + // V8..V11 += V12..V15 + // V4..V7 <<<= ((V4..V7 XOR V8..V11), 7) + VADD V12.S4, V8.S4, V8.S4 + VADD V13.S4, V9.S4, V9.S4 + VADD V14.S4, V10.S4, V10.S4 + VADD V15.S4, V11.S4, V11.S4 + VEOR V8.B16, V4.B16, V16.B16 + VEOR V9.B16, V5.B16, V17.B16 + VEOR V10.B16, V6.B16, V18.B16 + VEOR V11.B16, V7.B16, V19.B16 + VSHL $7, V16.S4, V4.S4 + VSHL $7, V17.S4, V5.S4 + VSHL $7, V18.S4, V6.S4 + VSHL $7, V19.S4, V7.S4 + VSRI $25, V16.S4, V4.S4 + VSRI $25, V17.S4, V5.S4 + VSRI $25, V18.S4, V6.S4 + VSRI $25, V19.S4, V7.S4 + + // V0..V3 += V5..V7, V4 + // V15,V12-V14 <<<= ((V15,V12-V14 XOR V0..V3), 16) + VADD V0.S4, V5.S4, V0.S4 + VADD V1.S4, V6.S4, V1.S4 + VADD V2.S4, V7.S4, V2.S4 + VADD V3.S4, V4.S4, V3.S4 + VEOR V15.B16, V0.B16, V15.B16 + VEOR V12.B16, V1.B16, V12.B16 + VEOR V13.B16, V2.B16, V13.B16 + VEOR V14.B16, V3.B16, V14.B16 + VREV32 V12.H8, V12.H8 + VREV32 V13.H8, V13.H8 + VREV32 V14.H8, V14.H8 + VREV32 V15.H8, V15.H8 + + // V10 += V15; V5 <<<= ((V10 XOR V5), 12) + // ... + VADD V15.S4, V10.S4, V10.S4 + VADD V12.S4, V11.S4, V11.S4 + VADD V13.S4, V8.S4, V8.S4 + VADD V14.S4, V9.S4, V9.S4 + VEOR V10.B16, V5.B16, V16.B16 + VEOR V11.B16, V6.B16, V17.B16 + VEOR V8.B16, V7.B16, V18.B16 + VEOR V9.B16, V4.B16, V19.B16 + VSHL $12, V16.S4, V5.S4 + VSHL $12, V17.S4, V6.S4 + VSHL $12, V18.S4, V7.S4 + VSHL $12, V19.S4, V4.S4 + VSRI $20, V16.S4, V5.S4 + VSRI $20, V17.S4, V6.S4 + VSRI $20, V18.S4, V7.S4 + VSRI $20, V19.S4, V4.S4 + + // V0 += V5; V15 <<<= ((V0 XOR V15), 8) + // ... + VADD V5.S4, V0.S4, V0.S4 + VADD V6.S4, V1.S4, V1.S4 + VADD V7.S4, V2.S4, V2.S4 + VADD V4.S4, V3.S4, V3.S4 + VEOR V0.B16, V15.B16, V15.B16 + VEOR V1.B16, V12.B16, V12.B16 + VEOR V2.B16, V13.B16, V13.B16 + VEOR V3.B16, V14.B16, V14.B16 + VTBL V31.B16, [V12.B16], V12.B16 + VTBL V31.B16, [V13.B16], V13.B16 + VTBL V31.B16, [V14.B16], V14.B16 + VTBL V31.B16, [V15.B16], V15.B16 + + // V10 += V15; V5 <<<= ((V10 XOR V5), 7) + // ... + VADD V15.S4, V10.S4, V10.S4 + VADD V12.S4, V11.S4, V11.S4 + VADD V13.S4, V8.S4, V8.S4 + VADD V14.S4, V9.S4, V9.S4 + VEOR V10.B16, V5.B16, V16.B16 + VEOR V11.B16, V6.B16, V17.B16 + VEOR V8.B16, V7.B16, V18.B16 + VEOR V9.B16, V4.B16, V19.B16 + VSHL $7, V16.S4, V5.S4 + VSHL $7, V17.S4, V6.S4 + VSHL $7, V18.S4, V7.S4 + VSHL $7, V19.S4, V4.S4 + VSRI $25, V16.S4, V5.S4 + VSRI $25, V17.S4, V6.S4 + VSRI $25, V18.S4, V7.S4 + VSRI $25, V19.S4, V4.S4 + + SUB $1, R21 + CBNZ R21, chacha + + // VLD4R (R10), [V16.S4, V17.S4, V18.S4, V19.S4] + WORD $0x4D60E950 + + // VLD4R 16(R4), [V20.S4, V21.S4, V22.S4, V23.S4] + WORD $0x4DFFE894 + VADD V30.S4, V12.S4, V12.S4 + VADD V16.S4, V0.S4, V0.S4 + VADD V17.S4, V1.S4, V1.S4 + VADD V18.S4, V2.S4, V2.S4 + VADD V19.S4, V3.S4, V3.S4 + // VLD4R 16(R4), [V24.S4, V25.S4, V26.S4, V27.S4] + WORD $0x4DFFE898 + // restore R4 + SUB $32, R4 + + // load counter + nonce + // VLD1R (R7), [V28.S4] + WORD $0x4D40C8FC + // VLD3R (R6), [V29.S4, V30.S4, V31.S4] + WORD $0x4D40E8DD + + VADD V20.S4, V4.S4, V4.S4 + VADD V21.S4, V5.S4, V5.S4 + VADD V22.S4, V6.S4, V6.S4 + VADD V23.S4, V7.S4, V7.S4 + VADD V24.S4, V8.S4, V8.S4 + VADD V25.S4, V9.S4, V9.S4 + VADD V26.S4, V10.S4, V10.S4 + VADD V27.S4, V11.S4, V11.S4 + VADD V28.S4, V12.S4, V12.S4 + VADD V29.S4, V13.S4, V13.S4 + VADD V30.S4, V14.S4, V14.S4 + VADD V31.S4, V15.S4, V15.S4 + + VZIP1 V1.S4, V0.S4, V16.S4 + VZIP2 V1.S4, V0.S4, V17.S4 + VZIP1 V3.S4, V2.S4, V18.S4 + VZIP2 V3.S4, V2.S4, V19.S4 + VZIP1 V5.S4, V4.S4, V20.S4 + VZIP2 V5.S4, V4.S4, V21.S4 + VZIP1 V7.S4, V6.S4, V22.S4 + VZIP2 V7.S4, V6.S4, V23.S4 + VZIP1 V9.S4, V8.S4, V24.S4 + VZIP2 V9.S4, V8.S4, V25.S4 + VZIP1 V11.S4, V10.S4, V26.S4 + VZIP2 V11.S4, V10.S4, V27.S4 + VZIP1 V13.S4, V12.S4, V28.S4 + VZIP2 V13.S4, V12.S4, V29.S4 + VZIP1 V15.S4, V14.S4, V30.S4 + VZIP2 V15.S4, V14.S4, V31.S4 + VZIP1 V18.D2, V16.D2, V0.D2 + VZIP2 V18.D2, V16.D2, V4.D2 + VZIP1 V19.D2, V17.D2, V8.D2 + VZIP2 V19.D2, V17.D2, V12.D2 + VLD1.P 64(R2), [V16.B16, V17.B16, V18.B16, V19.B16] + + VZIP1 V22.D2, V20.D2, V1.D2 + VZIP2 V22.D2, V20.D2, V5.D2 + VZIP1 V23.D2, V21.D2, V9.D2 + VZIP2 V23.D2, V21.D2, V13.D2 + VLD1.P 64(R2), [V20.B16, V21.B16, V22.B16, V23.B16] + VZIP1 V26.D2, V24.D2, V2.D2 + VZIP2 V26.D2, V24.D2, V6.D2 + VZIP1 V27.D2, V25.D2, V10.D2 + VZIP2 V27.D2, V25.D2, V14.D2 + VLD1.P 64(R2), [V24.B16, V25.B16, V26.B16, V27.B16] + VZIP1 V30.D2, V28.D2, V3.D2 + VZIP2 V30.D2, V28.D2, V7.D2 + VZIP1 V31.D2, V29.D2, V11.D2 + VZIP2 V31.D2, V29.D2, V15.D2 + VLD1.P 64(R2), [V28.B16, V29.B16, V30.B16, V31.B16] + VEOR V0.B16, V16.B16, V16.B16 + VEOR V1.B16, V17.B16, V17.B16 + VEOR V2.B16, V18.B16, V18.B16 + VEOR V3.B16, V19.B16, V19.B16 + VST1.P [V16.B16, V17.B16, V18.B16, V19.B16], 64(R1) + VEOR V4.B16, V20.B16, V20.B16 + VEOR V5.B16, V21.B16, V21.B16 + VEOR V6.B16, V22.B16, V22.B16 + VEOR V7.B16, V23.B16, V23.B16 + VST1.P [V20.B16, V21.B16, V22.B16, V23.B16], 64(R1) + VEOR V8.B16, V24.B16, V24.B16 + VEOR V9.B16, V25.B16, V25.B16 + VEOR V10.B16, V26.B16, V26.B16 + VEOR V11.B16, V27.B16, V27.B16 + VST1.P [V24.B16, V25.B16, V26.B16, V27.B16], 64(R1) + VEOR V12.B16, V28.B16, V28.B16 + VEOR V13.B16, V29.B16, V29.B16 + VEOR V14.B16, V30.B16, V30.B16 + VEOR V15.B16, V31.B16, V31.B16 + VST1.P [V28.B16, V29.B16, V30.B16, V31.B16], 64(R1) + + ADD $4, R20 + MOVW R20, (R7) // update counter + + CMP R2, R12 + BGT loop + + RET + + +DATA ·constants+0x00(SB)/4, $0x61707865 +DATA ·constants+0x04(SB)/4, $0x3320646e +DATA ·constants+0x08(SB)/4, $0x79622d32 +DATA ·constants+0x0c(SB)/4, $0x6b206574 +GLOBL ·constants(SB), NOPTR|RODATA, $32 + +DATA ·incRotMatrix+0x00(SB)/4, $0x00000000 +DATA ·incRotMatrix+0x04(SB)/4, $0x00000001 +DATA ·incRotMatrix+0x08(SB)/4, $0x00000002 +DATA ·incRotMatrix+0x0c(SB)/4, $0x00000003 +DATA ·incRotMatrix+0x10(SB)/4, $0x02010003 +DATA ·incRotMatrix+0x14(SB)/4, $0x06050407 +DATA ·incRotMatrix+0x18(SB)/4, $0x0A09080B +DATA ·incRotMatrix+0x1c(SB)/4, $0x0E0D0C0F +GLOBL ·incRotMatrix(SB), NOPTR|RODATA, $32 diff --git a/tests/vendor/golang.org/x/crypto/chacha20/chacha_generic.go b/tests/vendor/golang.org/x/crypto/chacha20/chacha_generic.go new file mode 100644 index 000000000..93eb5ae6d --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/chacha20/chacha_generic.go @@ -0,0 +1,398 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package chacha20 implements the ChaCha20 and XChaCha20 encryption algorithms +// as specified in RFC 8439 and draft-irtf-cfrg-xchacha-01. +package chacha20 + +import ( + "crypto/cipher" + "encoding/binary" + "errors" + "math/bits" + + "golang.org/x/crypto/internal/alias" +) + +const ( + // KeySize is the size of the key used by this cipher, in bytes. + KeySize = 32 + + // NonceSize is the size of the nonce used with the standard variant of this + // cipher, in bytes. + // + // Note that this is too short to be safely generated at random if the same + // key is reused more than 2³² times. + NonceSize = 12 + + // NonceSizeX is the size of the nonce used with the XChaCha20 variant of + // this cipher, in bytes. + NonceSizeX = 24 +) + +// Cipher is a stateful instance of ChaCha20 or XChaCha20 using a particular key +// and nonce. A *Cipher implements the cipher.Stream interface. +type Cipher struct { + // The ChaCha20 state is 16 words: 4 constant, 8 of key, 1 of counter + // (incremented after each block), and 3 of nonce. + key [8]uint32 + counter uint32 + nonce [3]uint32 + + // The last len bytes of buf are leftover key stream bytes from the previous + // XORKeyStream invocation. The size of buf depends on how many blocks are + // computed at a time by xorKeyStreamBlocks. + buf [bufSize]byte + len int + + // overflow is set when the counter overflowed, no more blocks can be + // generated, and the next XORKeyStream call should panic. + overflow bool + + // The counter-independent results of the first round are cached after they + // are computed the first time. + precompDone bool + p1, p5, p9, p13 uint32 + p2, p6, p10, p14 uint32 + p3, p7, p11, p15 uint32 +} + +var _ cipher.Stream = (*Cipher)(nil) + +// NewUnauthenticatedCipher creates a new ChaCha20 stream cipher with the given +// 32 bytes key and a 12 or 24 bytes nonce. If a nonce of 24 bytes is provided, +// the XChaCha20 construction will be used. It returns an error if key or nonce +// have any other length. +// +// Note that ChaCha20, like all stream ciphers, is not authenticated and allows +// attackers to silently tamper with the plaintext. For this reason, it is more +// appropriate as a building block than as a standalone encryption mechanism. +// Instead, consider using package golang.org/x/crypto/chacha20poly1305. +func NewUnauthenticatedCipher(key, nonce []byte) (*Cipher, error) { + // This function is split into a wrapper so that the Cipher allocation will + // be inlined, and depending on how the caller uses the return value, won't + // escape to the heap. + c := &Cipher{} + return newUnauthenticatedCipher(c, key, nonce) +} + +func newUnauthenticatedCipher(c *Cipher, key, nonce []byte) (*Cipher, error) { + if len(key) != KeySize { + return nil, errors.New("chacha20: wrong key size") + } + if len(nonce) == NonceSizeX { + // XChaCha20 uses the ChaCha20 core to mix 16 bytes of the nonce into a + // derived key, allowing it to operate on a nonce of 24 bytes. See + // draft-irtf-cfrg-xchacha-01, Section 2.3. + key, _ = HChaCha20(key, nonce[0:16]) + cNonce := make([]byte, NonceSize) + copy(cNonce[4:12], nonce[16:24]) + nonce = cNonce + } else if len(nonce) != NonceSize { + return nil, errors.New("chacha20: wrong nonce size") + } + + key, nonce = key[:KeySize], nonce[:NonceSize] // bounds check elimination hint + c.key = [8]uint32{ + binary.LittleEndian.Uint32(key[0:4]), + binary.LittleEndian.Uint32(key[4:8]), + binary.LittleEndian.Uint32(key[8:12]), + binary.LittleEndian.Uint32(key[12:16]), + binary.LittleEndian.Uint32(key[16:20]), + binary.LittleEndian.Uint32(key[20:24]), + binary.LittleEndian.Uint32(key[24:28]), + binary.LittleEndian.Uint32(key[28:32]), + } + c.nonce = [3]uint32{ + binary.LittleEndian.Uint32(nonce[0:4]), + binary.LittleEndian.Uint32(nonce[4:8]), + binary.LittleEndian.Uint32(nonce[8:12]), + } + return c, nil +} + +// The constant first 4 words of the ChaCha20 state. +const ( + j0 uint32 = 0x61707865 // expa + j1 uint32 = 0x3320646e // nd 3 + j2 uint32 = 0x79622d32 // 2-by + j3 uint32 = 0x6b206574 // te k +) + +const blockSize = 64 + +// quarterRound is the core of ChaCha20. It shuffles the bits of 4 state words. +// It's executed 4 times for each of the 20 ChaCha20 rounds, operating on all 16 +// words each round, in columnar or diagonal groups of 4 at a time. +func quarterRound(a, b, c, d uint32) (uint32, uint32, uint32, uint32) { + a += b + d ^= a + d = bits.RotateLeft32(d, 16) + c += d + b ^= c + b = bits.RotateLeft32(b, 12) + a += b + d ^= a + d = bits.RotateLeft32(d, 8) + c += d + b ^= c + b = bits.RotateLeft32(b, 7) + return a, b, c, d +} + +// SetCounter sets the Cipher counter. The next invocation of XORKeyStream will +// behave as if (64 * counter) bytes had been encrypted so far. +// +// To prevent accidental counter reuse, SetCounter panics if counter is less +// than the current value. +// +// Note that the execution time of XORKeyStream is not independent of the +// counter value. +func (s *Cipher) SetCounter(counter uint32) { + // Internally, s may buffer multiple blocks, which complicates this + // implementation slightly. When checking whether the counter has rolled + // back, we must use both s.counter and s.len to determine how many blocks + // we have already output. + outputCounter := s.counter - uint32(s.len)/blockSize + if s.overflow || counter < outputCounter { + panic("chacha20: SetCounter attempted to rollback counter") + } + + // In the general case, we set the new counter value and reset s.len to 0, + // causing the next call to XORKeyStream to refill the buffer. However, if + // we're advancing within the existing buffer, we can save work by simply + // setting s.len. + if counter < s.counter { + s.len = int(s.counter-counter) * blockSize + } else { + s.counter = counter + s.len = 0 + } +} + +// XORKeyStream XORs each byte in the given slice with a byte from the +// cipher's key stream. Dst and src must overlap entirely or not at all. +// +// If len(dst) < len(src), XORKeyStream will panic. It is acceptable +// to pass a dst bigger than src, and in that case, XORKeyStream will +// only update dst[:len(src)] and will not touch the rest of dst. +// +// Multiple calls to XORKeyStream behave as if the concatenation of +// the src buffers was passed in a single run. That is, Cipher +// maintains state and does not reset at each XORKeyStream call. +func (s *Cipher) XORKeyStream(dst, src []byte) { + if len(src) == 0 { + return + } + if len(dst) < len(src) { + panic("chacha20: output smaller than input") + } + dst = dst[:len(src)] + if alias.InexactOverlap(dst, src) { + panic("chacha20: invalid buffer overlap") + } + + // First, drain any remaining key stream from a previous XORKeyStream. + if s.len != 0 { + keyStream := s.buf[bufSize-s.len:] + if len(src) < len(keyStream) { + keyStream = keyStream[:len(src)] + } + _ = src[len(keyStream)-1] // bounds check elimination hint + for i, b := range keyStream { + dst[i] = src[i] ^ b + } + s.len -= len(keyStream) + dst, src = dst[len(keyStream):], src[len(keyStream):] + } + if len(src) == 0 { + return + } + + // If we'd need to let the counter overflow and keep generating output, + // panic immediately. If instead we'd only reach the last block, remember + // not to generate any more output after the buffer is drained. + numBlocks := (uint64(len(src)) + blockSize - 1) / blockSize + if s.overflow || uint64(s.counter)+numBlocks > 1<<32 { + panic("chacha20: counter overflow") + } else if uint64(s.counter)+numBlocks == 1<<32 { + s.overflow = true + } + + // xorKeyStreamBlocks implementations expect input lengths that are a + // multiple of bufSize. Platform-specific ones process multiple blocks at a + // time, so have bufSizes that are a multiple of blockSize. + + full := len(src) - len(src)%bufSize + if full > 0 { + s.xorKeyStreamBlocks(dst[:full], src[:full]) + } + dst, src = dst[full:], src[full:] + + // If using a multi-block xorKeyStreamBlocks would overflow, use the generic + // one that does one block at a time. + const blocksPerBuf = bufSize / blockSize + if uint64(s.counter)+blocksPerBuf > 1<<32 { + s.buf = [bufSize]byte{} + numBlocks := (len(src) + blockSize - 1) / blockSize + buf := s.buf[bufSize-numBlocks*blockSize:] + copy(buf, src) + s.xorKeyStreamBlocksGeneric(buf, buf) + s.len = len(buf) - copy(dst, buf) + return + } + + // If we have a partial (multi-)block, pad it for xorKeyStreamBlocks, and + // keep the leftover keystream for the next XORKeyStream invocation. + if len(src) > 0 { + s.buf = [bufSize]byte{} + copy(s.buf[:], src) + s.xorKeyStreamBlocks(s.buf[:], s.buf[:]) + s.len = bufSize - copy(dst, s.buf[:]) + } +} + +func (s *Cipher) xorKeyStreamBlocksGeneric(dst, src []byte) { + if len(dst) != len(src) || len(dst)%blockSize != 0 { + panic("chacha20: internal error: wrong dst and/or src length") + } + + // To generate each block of key stream, the initial cipher state + // (represented below) is passed through 20 rounds of shuffling, + // alternatively applying quarterRounds by columns (like 1, 5, 9, 13) + // or by diagonals (like 1, 6, 11, 12). + // + // 0:cccccccc 1:cccccccc 2:cccccccc 3:cccccccc + // 4:kkkkkkkk 5:kkkkkkkk 6:kkkkkkkk 7:kkkkkkkk + // 8:kkkkkkkk 9:kkkkkkkk 10:kkkkkkkk 11:kkkkkkkk + // 12:bbbbbbbb 13:nnnnnnnn 14:nnnnnnnn 15:nnnnnnnn + // + // c=constant k=key b=blockcount n=nonce + var ( + c0, c1, c2, c3 = j0, j1, j2, j3 + c4, c5, c6, c7 = s.key[0], s.key[1], s.key[2], s.key[3] + c8, c9, c10, c11 = s.key[4], s.key[5], s.key[6], s.key[7] + _, c13, c14, c15 = s.counter, s.nonce[0], s.nonce[1], s.nonce[2] + ) + + // Three quarters of the first round don't depend on the counter, so we can + // calculate them here, and reuse them for multiple blocks in the loop, and + // for future XORKeyStream invocations. + if !s.precompDone { + s.p1, s.p5, s.p9, s.p13 = quarterRound(c1, c5, c9, c13) + s.p2, s.p6, s.p10, s.p14 = quarterRound(c2, c6, c10, c14) + s.p3, s.p7, s.p11, s.p15 = quarterRound(c3, c7, c11, c15) + s.precompDone = true + } + + // A condition of len(src) > 0 would be sufficient, but this also + // acts as a bounds check elimination hint. + for len(src) >= 64 && len(dst) >= 64 { + // The remainder of the first column round. + fcr0, fcr4, fcr8, fcr12 := quarterRound(c0, c4, c8, s.counter) + + // The second diagonal round. + x0, x5, x10, x15 := quarterRound(fcr0, s.p5, s.p10, s.p15) + x1, x6, x11, x12 := quarterRound(s.p1, s.p6, s.p11, fcr12) + x2, x7, x8, x13 := quarterRound(s.p2, s.p7, fcr8, s.p13) + x3, x4, x9, x14 := quarterRound(s.p3, fcr4, s.p9, s.p14) + + // The remaining 18 rounds. + for i := 0; i < 9; i++ { + // Column round. + x0, x4, x8, x12 = quarterRound(x0, x4, x8, x12) + x1, x5, x9, x13 = quarterRound(x1, x5, x9, x13) + x2, x6, x10, x14 = quarterRound(x2, x6, x10, x14) + x3, x7, x11, x15 = quarterRound(x3, x7, x11, x15) + + // Diagonal round. + x0, x5, x10, x15 = quarterRound(x0, x5, x10, x15) + x1, x6, x11, x12 = quarterRound(x1, x6, x11, x12) + x2, x7, x8, x13 = quarterRound(x2, x7, x8, x13) + x3, x4, x9, x14 = quarterRound(x3, x4, x9, x14) + } + + // Add back the initial state to generate the key stream, then + // XOR the key stream with the source and write out the result. + addXor(dst[0:4], src[0:4], x0, c0) + addXor(dst[4:8], src[4:8], x1, c1) + addXor(dst[8:12], src[8:12], x2, c2) + addXor(dst[12:16], src[12:16], x3, c3) + addXor(dst[16:20], src[16:20], x4, c4) + addXor(dst[20:24], src[20:24], x5, c5) + addXor(dst[24:28], src[24:28], x6, c6) + addXor(dst[28:32], src[28:32], x7, c7) + addXor(dst[32:36], src[32:36], x8, c8) + addXor(dst[36:40], src[36:40], x9, c9) + addXor(dst[40:44], src[40:44], x10, c10) + addXor(dst[44:48], src[44:48], x11, c11) + addXor(dst[48:52], src[48:52], x12, s.counter) + addXor(dst[52:56], src[52:56], x13, c13) + addXor(dst[56:60], src[56:60], x14, c14) + addXor(dst[60:64], src[60:64], x15, c15) + + s.counter += 1 + + src, dst = src[blockSize:], dst[blockSize:] + } +} + +// HChaCha20 uses the ChaCha20 core to generate a derived key from a 32 bytes +// key and a 16 bytes nonce. It returns an error if key or nonce have any other +// length. It is used as part of the XChaCha20 construction. +func HChaCha20(key, nonce []byte) ([]byte, error) { + // This function is split into a wrapper so that the slice allocation will + // be inlined, and depending on how the caller uses the return value, won't + // escape to the heap. + out := make([]byte, 32) + return hChaCha20(out, key, nonce) +} + +func hChaCha20(out, key, nonce []byte) ([]byte, error) { + if len(key) != KeySize { + return nil, errors.New("chacha20: wrong HChaCha20 key size") + } + if len(nonce) != 16 { + return nil, errors.New("chacha20: wrong HChaCha20 nonce size") + } + + x0, x1, x2, x3 := j0, j1, j2, j3 + x4 := binary.LittleEndian.Uint32(key[0:4]) + x5 := binary.LittleEndian.Uint32(key[4:8]) + x6 := binary.LittleEndian.Uint32(key[8:12]) + x7 := binary.LittleEndian.Uint32(key[12:16]) + x8 := binary.LittleEndian.Uint32(key[16:20]) + x9 := binary.LittleEndian.Uint32(key[20:24]) + x10 := binary.LittleEndian.Uint32(key[24:28]) + x11 := binary.LittleEndian.Uint32(key[28:32]) + x12 := binary.LittleEndian.Uint32(nonce[0:4]) + x13 := binary.LittleEndian.Uint32(nonce[4:8]) + x14 := binary.LittleEndian.Uint32(nonce[8:12]) + x15 := binary.LittleEndian.Uint32(nonce[12:16]) + + for i := 0; i < 10; i++ { + // Diagonal round. + x0, x4, x8, x12 = quarterRound(x0, x4, x8, x12) + x1, x5, x9, x13 = quarterRound(x1, x5, x9, x13) + x2, x6, x10, x14 = quarterRound(x2, x6, x10, x14) + x3, x7, x11, x15 = quarterRound(x3, x7, x11, x15) + + // Column round. + x0, x5, x10, x15 = quarterRound(x0, x5, x10, x15) + x1, x6, x11, x12 = quarterRound(x1, x6, x11, x12) + x2, x7, x8, x13 = quarterRound(x2, x7, x8, x13) + x3, x4, x9, x14 = quarterRound(x3, x4, x9, x14) + } + + _ = out[31] // bounds check elimination hint + binary.LittleEndian.PutUint32(out[0:4], x0) + binary.LittleEndian.PutUint32(out[4:8], x1) + binary.LittleEndian.PutUint32(out[8:12], x2) + binary.LittleEndian.PutUint32(out[12:16], x3) + binary.LittleEndian.PutUint32(out[16:20], x12) + binary.LittleEndian.PutUint32(out[20:24], x13) + binary.LittleEndian.PutUint32(out[24:28], x14) + binary.LittleEndian.PutUint32(out[28:32], x15) + return out, nil +} diff --git a/tests/vendor/golang.org/x/crypto/chacha20/chacha_noasm.go b/tests/vendor/golang.org/x/crypto/chacha20/chacha_noasm.go new file mode 100644 index 000000000..c709b7284 --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/chacha20/chacha_noasm.go @@ -0,0 +1,13 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (!arm64 && !s390x && !ppc64 && !ppc64le) || !gc || purego + +package chacha20 + +const bufSize = blockSize + +func (s *Cipher) xorKeyStreamBlocks(dst, src []byte) { + s.xorKeyStreamBlocksGeneric(dst, src) +} diff --git a/tests/vendor/golang.org/x/crypto/chacha20/chacha_ppc64x.go b/tests/vendor/golang.org/x/crypto/chacha20/chacha_ppc64x.go new file mode 100644 index 000000000..bd183d9ba --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/chacha20/chacha_ppc64x.go @@ -0,0 +1,16 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc && !purego && (ppc64 || ppc64le) + +package chacha20 + +const bufSize = 256 + +//go:noescape +func chaCha20_ctr32_vsx(out, inp *byte, len int, key *[8]uint32, counter *uint32) + +func (c *Cipher) xorKeyStreamBlocks(dst, src []byte) { + chaCha20_ctr32_vsx(&dst[0], &src[0], len(src), &c.key, &c.counter) +} diff --git a/tests/vendor/golang.org/x/crypto/chacha20/chacha_ppc64x.s b/tests/vendor/golang.org/x/crypto/chacha20/chacha_ppc64x.s new file mode 100644 index 000000000..a660b4112 --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/chacha20/chacha_ppc64x.s @@ -0,0 +1,501 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Based on CRYPTOGAMS code with the following comment: +// # ==================================================================== +// # Written by Andy Polyakov for the OpenSSL +// # project. The module is, however, dual licensed under OpenSSL and +// # CRYPTOGAMS licenses depending on where you obtain it. For further +// # details see http://www.openssl.org/~appro/cryptogams/. +// # ==================================================================== + +// Code for the perl script that generates the ppc64 assembler +// can be found in the cryptogams repository at the link below. It is based on +// the original from openssl. + +// https://github.com/dot-asm/cryptogams/commit/a60f5b50ed908e91 + +// The differences in this and the original implementation are +// due to the calling conventions and initialization of constants. + +//go:build gc && !purego && (ppc64 || ppc64le) + +#include "textflag.h" + +#define OUT R3 +#define INP R4 +#define LEN R5 +#define KEY R6 +#define CNT R7 +#define TMP R15 + +#define CONSTBASE R16 +#define BLOCKS R17 + +// for VPERMXOR +#define MASK R18 + +DATA consts<>+0x00(SB)/4, $0x61707865 +DATA consts<>+0x04(SB)/4, $0x3320646e +DATA consts<>+0x08(SB)/4, $0x79622d32 +DATA consts<>+0x0c(SB)/4, $0x6b206574 +DATA consts<>+0x10(SB)/4, $0x00000001 +DATA consts<>+0x14(SB)/4, $0x00000000 +DATA consts<>+0x18(SB)/4, $0x00000000 +DATA consts<>+0x1c(SB)/4, $0x00000000 +DATA consts<>+0x20(SB)/4, $0x00000004 +DATA consts<>+0x24(SB)/4, $0x00000000 +DATA consts<>+0x28(SB)/4, $0x00000000 +DATA consts<>+0x2c(SB)/4, $0x00000000 +DATA consts<>+0x30(SB)/4, $0x0e0f0c0d +DATA consts<>+0x34(SB)/4, $0x0a0b0809 +DATA consts<>+0x38(SB)/4, $0x06070405 +DATA consts<>+0x3c(SB)/4, $0x02030001 +DATA consts<>+0x40(SB)/4, $0x0d0e0f0c +DATA consts<>+0x44(SB)/4, $0x090a0b08 +DATA consts<>+0x48(SB)/4, $0x05060704 +DATA consts<>+0x4c(SB)/4, $0x01020300 +DATA consts<>+0x50(SB)/4, $0x61707865 +DATA consts<>+0x54(SB)/4, $0x61707865 +DATA consts<>+0x58(SB)/4, $0x61707865 +DATA consts<>+0x5c(SB)/4, $0x61707865 +DATA consts<>+0x60(SB)/4, $0x3320646e +DATA consts<>+0x64(SB)/4, $0x3320646e +DATA consts<>+0x68(SB)/4, $0x3320646e +DATA consts<>+0x6c(SB)/4, $0x3320646e +DATA consts<>+0x70(SB)/4, $0x79622d32 +DATA consts<>+0x74(SB)/4, $0x79622d32 +DATA consts<>+0x78(SB)/4, $0x79622d32 +DATA consts<>+0x7c(SB)/4, $0x79622d32 +DATA consts<>+0x80(SB)/4, $0x6b206574 +DATA consts<>+0x84(SB)/4, $0x6b206574 +DATA consts<>+0x88(SB)/4, $0x6b206574 +DATA consts<>+0x8c(SB)/4, $0x6b206574 +DATA consts<>+0x90(SB)/4, $0x00000000 +DATA consts<>+0x94(SB)/4, $0x00000001 +DATA consts<>+0x98(SB)/4, $0x00000002 +DATA consts<>+0x9c(SB)/4, $0x00000003 +DATA consts<>+0xa0(SB)/4, $0x11223300 +DATA consts<>+0xa4(SB)/4, $0x55667744 +DATA consts<>+0xa8(SB)/4, $0x99aabb88 +DATA consts<>+0xac(SB)/4, $0xddeeffcc +DATA consts<>+0xb0(SB)/4, $0x22330011 +DATA consts<>+0xb4(SB)/4, $0x66774455 +DATA consts<>+0xb8(SB)/4, $0xaabb8899 +DATA consts<>+0xbc(SB)/4, $0xeeffccdd +GLOBL consts<>(SB), RODATA, $0xc0 + +#ifdef GOARCH_ppc64 +#define BE_XXBRW_INIT() \ + LVSL (R0)(R0), V24 \ + VSPLTISB $3, V25 \ + VXOR V24, V25, V24 \ + +#define BE_XXBRW(vr) VPERM vr, vr, V24, vr +#else +#define BE_XXBRW_INIT() +#define BE_XXBRW(vr) +#endif + +//func chaCha20_ctr32_vsx(out, inp *byte, len int, key *[8]uint32, counter *uint32) +TEXT ·chaCha20_ctr32_vsx(SB),NOSPLIT,$64-40 + MOVD out+0(FP), OUT + MOVD inp+8(FP), INP + MOVD len+16(FP), LEN + MOVD key+24(FP), KEY + MOVD counter+32(FP), CNT + + // Addressing for constants + MOVD $consts<>+0x00(SB), CONSTBASE + MOVD $16, R8 + MOVD $32, R9 + MOVD $48, R10 + MOVD $64, R11 + SRD $6, LEN, BLOCKS + // for VPERMXOR + MOVD $consts<>+0xa0(SB), MASK + MOVD $16, R20 + // V16 + LXVW4X (CONSTBASE)(R0), VS48 + ADD $80,CONSTBASE + + // Load key into V17,V18 + LXVW4X (KEY)(R0), VS49 + LXVW4X (KEY)(R8), VS50 + + // Load CNT, NONCE into V19 + LXVW4X (CNT)(R0), VS51 + + // Clear V27 + VXOR V27, V27, V27 + + BE_XXBRW_INIT() + + // V28 + LXVW4X (CONSTBASE)(R11), VS60 + + // Load mask constants for VPERMXOR + LXVW4X (MASK)(R0), V20 + LXVW4X (MASK)(R20), V21 + + // splat slot from V19 -> V26 + VSPLTW $0, V19, V26 + + VSLDOI $4, V19, V27, V19 + VSLDOI $12, V27, V19, V19 + + VADDUWM V26, V28, V26 + + MOVD $10, R14 + MOVD R14, CTR + PCALIGN $16 +loop_outer_vsx: + // V0, V1, V2, V3 + LXVW4X (R0)(CONSTBASE), VS32 + LXVW4X (R8)(CONSTBASE), VS33 + LXVW4X (R9)(CONSTBASE), VS34 + LXVW4X (R10)(CONSTBASE), VS35 + + // splat values from V17, V18 into V4-V11 + VSPLTW $0, V17, V4 + VSPLTW $1, V17, V5 + VSPLTW $2, V17, V6 + VSPLTW $3, V17, V7 + VSPLTW $0, V18, V8 + VSPLTW $1, V18, V9 + VSPLTW $2, V18, V10 + VSPLTW $3, V18, V11 + + // VOR + VOR V26, V26, V12 + + // splat values from V19 -> V13, V14, V15 + VSPLTW $1, V19, V13 + VSPLTW $2, V19, V14 + VSPLTW $3, V19, V15 + + // splat const values + VSPLTISW $-16, V27 + VSPLTISW $12, V28 + VSPLTISW $8, V29 + VSPLTISW $7, V30 + PCALIGN $16 +loop_vsx: + VADDUWM V0, V4, V0 + VADDUWM V1, V5, V1 + VADDUWM V2, V6, V2 + VADDUWM V3, V7, V3 + + VPERMXOR V12, V0, V21, V12 + VPERMXOR V13, V1, V21, V13 + VPERMXOR V14, V2, V21, V14 + VPERMXOR V15, V3, V21, V15 + + VADDUWM V8, V12, V8 + VADDUWM V9, V13, V9 + VADDUWM V10, V14, V10 + VADDUWM V11, V15, V11 + + VXOR V4, V8, V4 + VXOR V5, V9, V5 + VXOR V6, V10, V6 + VXOR V7, V11, V7 + + VRLW V4, V28, V4 + VRLW V5, V28, V5 + VRLW V6, V28, V6 + VRLW V7, V28, V7 + + VADDUWM V0, V4, V0 + VADDUWM V1, V5, V1 + VADDUWM V2, V6, V2 + VADDUWM V3, V7, V3 + + VPERMXOR V12, V0, V20, V12 + VPERMXOR V13, V1, V20, V13 + VPERMXOR V14, V2, V20, V14 + VPERMXOR V15, V3, V20, V15 + + VADDUWM V8, V12, V8 + VADDUWM V9, V13, V9 + VADDUWM V10, V14, V10 + VADDUWM V11, V15, V11 + + VXOR V4, V8, V4 + VXOR V5, V9, V5 + VXOR V6, V10, V6 + VXOR V7, V11, V7 + + VRLW V4, V30, V4 + VRLW V5, V30, V5 + VRLW V6, V30, V6 + VRLW V7, V30, V7 + + VADDUWM V0, V5, V0 + VADDUWM V1, V6, V1 + VADDUWM V2, V7, V2 + VADDUWM V3, V4, V3 + + VPERMXOR V15, V0, V21, V15 + VPERMXOR V12, V1, V21, V12 + VPERMXOR V13, V2, V21, V13 + VPERMXOR V14, V3, V21, V14 + + VADDUWM V10, V15, V10 + VADDUWM V11, V12, V11 + VADDUWM V8, V13, V8 + VADDUWM V9, V14, V9 + + VXOR V5, V10, V5 + VXOR V6, V11, V6 + VXOR V7, V8, V7 + VXOR V4, V9, V4 + + VRLW V5, V28, V5 + VRLW V6, V28, V6 + VRLW V7, V28, V7 + VRLW V4, V28, V4 + + VADDUWM V0, V5, V0 + VADDUWM V1, V6, V1 + VADDUWM V2, V7, V2 + VADDUWM V3, V4, V3 + + VPERMXOR V15, V0, V20, V15 + VPERMXOR V12, V1, V20, V12 + VPERMXOR V13, V2, V20, V13 + VPERMXOR V14, V3, V20, V14 + + VADDUWM V10, V15, V10 + VADDUWM V11, V12, V11 + VADDUWM V8, V13, V8 + VADDUWM V9, V14, V9 + + VXOR V5, V10, V5 + VXOR V6, V11, V6 + VXOR V7, V8, V7 + VXOR V4, V9, V4 + + VRLW V5, V30, V5 + VRLW V6, V30, V6 + VRLW V7, V30, V7 + VRLW V4, V30, V4 + BDNZ loop_vsx + + VADDUWM V12, V26, V12 + + VMRGEW V0, V1, V27 + VMRGEW V2, V3, V28 + + VMRGOW V0, V1, V0 + VMRGOW V2, V3, V2 + + VMRGEW V4, V5, V29 + VMRGEW V6, V7, V30 + + XXPERMDI VS32, VS34, $0, VS33 + XXPERMDI VS32, VS34, $3, VS35 + XXPERMDI VS59, VS60, $0, VS32 + XXPERMDI VS59, VS60, $3, VS34 + + VMRGOW V4, V5, V4 + VMRGOW V6, V7, V6 + + VMRGEW V8, V9, V27 + VMRGEW V10, V11, V28 + + XXPERMDI VS36, VS38, $0, VS37 + XXPERMDI VS36, VS38, $3, VS39 + XXPERMDI VS61, VS62, $0, VS36 + XXPERMDI VS61, VS62, $3, VS38 + + VMRGOW V8, V9, V8 + VMRGOW V10, V11, V10 + + VMRGEW V12, V13, V29 + VMRGEW V14, V15, V30 + + XXPERMDI VS40, VS42, $0, VS41 + XXPERMDI VS40, VS42, $3, VS43 + XXPERMDI VS59, VS60, $0, VS40 + XXPERMDI VS59, VS60, $3, VS42 + + VMRGOW V12, V13, V12 + VMRGOW V14, V15, V14 + + VSPLTISW $4, V27 + VADDUWM V26, V27, V26 + + XXPERMDI VS44, VS46, $0, VS45 + XXPERMDI VS44, VS46, $3, VS47 + XXPERMDI VS61, VS62, $0, VS44 + XXPERMDI VS61, VS62, $3, VS46 + + VADDUWM V0, V16, V0 + VADDUWM V4, V17, V4 + VADDUWM V8, V18, V8 + VADDUWM V12, V19, V12 + + BE_XXBRW(V0) + BE_XXBRW(V4) + BE_XXBRW(V8) + BE_XXBRW(V12) + + CMPU LEN, $64 + BLT tail_vsx + + // Bottom of loop + LXVW4X (INP)(R0), VS59 + LXVW4X (INP)(R8), VS60 + LXVW4X (INP)(R9), VS61 + LXVW4X (INP)(R10), VS62 + + VXOR V27, V0, V27 + VXOR V28, V4, V28 + VXOR V29, V8, V29 + VXOR V30, V12, V30 + + STXVW4X VS59, (OUT)(R0) + STXVW4X VS60, (OUT)(R8) + ADD $64, INP + STXVW4X VS61, (OUT)(R9) + ADD $-64, LEN + STXVW4X VS62, (OUT)(R10) + ADD $64, OUT + BEQ done_vsx + + VADDUWM V1, V16, V0 + VADDUWM V5, V17, V4 + VADDUWM V9, V18, V8 + VADDUWM V13, V19, V12 + + BE_XXBRW(V0) + BE_XXBRW(V4) + BE_XXBRW(V8) + BE_XXBRW(V12) + + CMPU LEN, $64 + BLT tail_vsx + + LXVW4X (INP)(R0), VS59 + LXVW4X (INP)(R8), VS60 + LXVW4X (INP)(R9), VS61 + LXVW4X (INP)(R10), VS62 + + VXOR V27, V0, V27 + VXOR V28, V4, V28 + VXOR V29, V8, V29 + VXOR V30, V12, V30 + + STXVW4X VS59, (OUT)(R0) + STXVW4X VS60, (OUT)(R8) + ADD $64, INP + STXVW4X VS61, (OUT)(R9) + ADD $-64, LEN + STXVW4X VS62, (OUT)(V10) + ADD $64, OUT + BEQ done_vsx + + VADDUWM V2, V16, V0 + VADDUWM V6, V17, V4 + VADDUWM V10, V18, V8 + VADDUWM V14, V19, V12 + + BE_XXBRW(V0) + BE_XXBRW(V4) + BE_XXBRW(V8) + BE_XXBRW(V12) + + CMPU LEN, $64 + BLT tail_vsx + + LXVW4X (INP)(R0), VS59 + LXVW4X (INP)(R8), VS60 + LXVW4X (INP)(R9), VS61 + LXVW4X (INP)(R10), VS62 + + VXOR V27, V0, V27 + VXOR V28, V4, V28 + VXOR V29, V8, V29 + VXOR V30, V12, V30 + + STXVW4X VS59, (OUT)(R0) + STXVW4X VS60, (OUT)(R8) + ADD $64, INP + STXVW4X VS61, (OUT)(R9) + ADD $-64, LEN + STXVW4X VS62, (OUT)(R10) + ADD $64, OUT + BEQ done_vsx + + VADDUWM V3, V16, V0 + VADDUWM V7, V17, V4 + VADDUWM V11, V18, V8 + VADDUWM V15, V19, V12 + + BE_XXBRW(V0) + BE_XXBRW(V4) + BE_XXBRW(V8) + BE_XXBRW(V12) + + CMPU LEN, $64 + BLT tail_vsx + + LXVW4X (INP)(R0), VS59 + LXVW4X (INP)(R8), VS60 + LXVW4X (INP)(R9), VS61 + LXVW4X (INP)(R10), VS62 + + VXOR V27, V0, V27 + VXOR V28, V4, V28 + VXOR V29, V8, V29 + VXOR V30, V12, V30 + + STXVW4X VS59, (OUT)(R0) + STXVW4X VS60, (OUT)(R8) + ADD $64, INP + STXVW4X VS61, (OUT)(R9) + ADD $-64, LEN + STXVW4X VS62, (OUT)(R10) + ADD $64, OUT + + MOVD $10, R14 + MOVD R14, CTR + BNE loop_outer_vsx + +done_vsx: + // Increment counter by number of 64 byte blocks + MOVWZ (CNT), R14 + ADD BLOCKS, R14 + MOVWZ R14, (CNT) + RET + +tail_vsx: + ADD $32, R1, R11 + MOVD LEN, CTR + + // Save values on stack to copy from + STXVW4X VS32, (R11)(R0) + STXVW4X VS36, (R11)(R8) + STXVW4X VS40, (R11)(R9) + STXVW4X VS44, (R11)(R10) + ADD $-1, R11, R12 + ADD $-1, INP + ADD $-1, OUT + PCALIGN $16 +looptail_vsx: + // Copying the result to OUT + // in bytes. + MOVBZU 1(R12), KEY + MOVBZU 1(INP), TMP + XOR KEY, TMP, KEY + MOVBU KEY, 1(OUT) + BDNZ looptail_vsx + + // Clear the stack values + STXVW4X VS48, (R11)(R0) + STXVW4X VS48, (R11)(R8) + STXVW4X VS48, (R11)(R9) + STXVW4X VS48, (R11)(R10) + BR done_vsx diff --git a/tests/vendor/golang.org/x/crypto/chacha20/chacha_s390x.go b/tests/vendor/golang.org/x/crypto/chacha20/chacha_s390x.go new file mode 100644 index 000000000..683ccfd1c --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/chacha20/chacha_s390x.go @@ -0,0 +1,27 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc && !purego + +package chacha20 + +import "golang.org/x/sys/cpu" + +var haveAsm = cpu.S390X.HasVX + +const bufSize = 256 + +// xorKeyStreamVX is an assembly implementation of XORKeyStream. It must only +// be called when the vector facility is available. Implementation in asm_s390x.s. +// +//go:noescape +func xorKeyStreamVX(dst, src []byte, key *[8]uint32, nonce *[3]uint32, counter *uint32) + +func (c *Cipher) xorKeyStreamBlocks(dst, src []byte) { + if cpu.S390X.HasVX { + xorKeyStreamVX(dst, src, &c.key, &c.nonce, &c.counter) + } else { + c.xorKeyStreamBlocksGeneric(dst, src) + } +} diff --git a/tests/vendor/golang.org/x/crypto/chacha20/chacha_s390x.s b/tests/vendor/golang.org/x/crypto/chacha20/chacha_s390x.s new file mode 100644 index 000000000..1eda91a3d --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/chacha20/chacha_s390x.s @@ -0,0 +1,224 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc && !purego + +#include "go_asm.h" +#include "textflag.h" + +// This is an implementation of the ChaCha20 encryption algorithm as +// specified in RFC 7539. It uses vector instructions to compute +// 4 keystream blocks in parallel (256 bytes) which are then XORed +// with the bytes in the input slice. + +GLOBL ·constants<>(SB), RODATA|NOPTR, $32 +// BSWAP: swap bytes in each 4-byte element +DATA ·constants<>+0x00(SB)/4, $0x03020100 +DATA ·constants<>+0x04(SB)/4, $0x07060504 +DATA ·constants<>+0x08(SB)/4, $0x0b0a0908 +DATA ·constants<>+0x0c(SB)/4, $0x0f0e0d0c +// J0: [j0, j1, j2, j3] +DATA ·constants<>+0x10(SB)/4, $0x61707865 +DATA ·constants<>+0x14(SB)/4, $0x3320646e +DATA ·constants<>+0x18(SB)/4, $0x79622d32 +DATA ·constants<>+0x1c(SB)/4, $0x6b206574 + +#define BSWAP V5 +#define J0 V6 +#define KEY0 V7 +#define KEY1 V8 +#define NONCE V9 +#define CTR V10 +#define M0 V11 +#define M1 V12 +#define M2 V13 +#define M3 V14 +#define INC V15 +#define X0 V16 +#define X1 V17 +#define X2 V18 +#define X3 V19 +#define X4 V20 +#define X5 V21 +#define X6 V22 +#define X7 V23 +#define X8 V24 +#define X9 V25 +#define X10 V26 +#define X11 V27 +#define X12 V28 +#define X13 V29 +#define X14 V30 +#define X15 V31 + +#define NUM_ROUNDS 20 + +#define ROUND4(a0, a1, a2, a3, b0, b1, b2, b3, c0, c1, c2, c3, d0, d1, d2, d3) \ + VAF a1, a0, a0 \ + VAF b1, b0, b0 \ + VAF c1, c0, c0 \ + VAF d1, d0, d0 \ + VX a0, a2, a2 \ + VX b0, b2, b2 \ + VX c0, c2, c2 \ + VX d0, d2, d2 \ + VERLLF $16, a2, a2 \ + VERLLF $16, b2, b2 \ + VERLLF $16, c2, c2 \ + VERLLF $16, d2, d2 \ + VAF a2, a3, a3 \ + VAF b2, b3, b3 \ + VAF c2, c3, c3 \ + VAF d2, d3, d3 \ + VX a3, a1, a1 \ + VX b3, b1, b1 \ + VX c3, c1, c1 \ + VX d3, d1, d1 \ + VERLLF $12, a1, a1 \ + VERLLF $12, b1, b1 \ + VERLLF $12, c1, c1 \ + VERLLF $12, d1, d1 \ + VAF a1, a0, a0 \ + VAF b1, b0, b0 \ + VAF c1, c0, c0 \ + VAF d1, d0, d0 \ + VX a0, a2, a2 \ + VX b0, b2, b2 \ + VX c0, c2, c2 \ + VX d0, d2, d2 \ + VERLLF $8, a2, a2 \ + VERLLF $8, b2, b2 \ + VERLLF $8, c2, c2 \ + VERLLF $8, d2, d2 \ + VAF a2, a3, a3 \ + VAF b2, b3, b3 \ + VAF c2, c3, c3 \ + VAF d2, d3, d3 \ + VX a3, a1, a1 \ + VX b3, b1, b1 \ + VX c3, c1, c1 \ + VX d3, d1, d1 \ + VERLLF $7, a1, a1 \ + VERLLF $7, b1, b1 \ + VERLLF $7, c1, c1 \ + VERLLF $7, d1, d1 + +#define PERMUTE(mask, v0, v1, v2, v3) \ + VPERM v0, v0, mask, v0 \ + VPERM v1, v1, mask, v1 \ + VPERM v2, v2, mask, v2 \ + VPERM v3, v3, mask, v3 + +#define ADDV(x, v0, v1, v2, v3) \ + VAF x, v0, v0 \ + VAF x, v1, v1 \ + VAF x, v2, v2 \ + VAF x, v3, v3 + +#define XORV(off, dst, src, v0, v1, v2, v3) \ + VLM off(src), M0, M3 \ + PERMUTE(BSWAP, v0, v1, v2, v3) \ + VX v0, M0, M0 \ + VX v1, M1, M1 \ + VX v2, M2, M2 \ + VX v3, M3, M3 \ + VSTM M0, M3, off(dst) + +#define SHUFFLE(a, b, c, d, t, u, v, w) \ + VMRHF a, c, t \ // t = {a[0], c[0], a[1], c[1]} + VMRHF b, d, u \ // u = {b[0], d[0], b[1], d[1]} + VMRLF a, c, v \ // v = {a[2], c[2], a[3], c[3]} + VMRLF b, d, w \ // w = {b[2], d[2], b[3], d[3]} + VMRHF t, u, a \ // a = {a[0], b[0], c[0], d[0]} + VMRLF t, u, b \ // b = {a[1], b[1], c[1], d[1]} + VMRHF v, w, c \ // c = {a[2], b[2], c[2], d[2]} + VMRLF v, w, d // d = {a[3], b[3], c[3], d[3]} + +// func xorKeyStreamVX(dst, src []byte, key *[8]uint32, nonce *[3]uint32, counter *uint32) +TEXT ·xorKeyStreamVX(SB), NOSPLIT, $0 + MOVD $·constants<>(SB), R1 + MOVD dst+0(FP), R2 // R2=&dst[0] + LMG src+24(FP), R3, R4 // R3=&src[0] R4=len(src) + MOVD key+48(FP), R5 // R5=key + MOVD nonce+56(FP), R6 // R6=nonce + MOVD counter+64(FP), R7 // R7=counter + + // load BSWAP and J0 + VLM (R1), BSWAP, J0 + + // setup + MOVD $95, R0 + VLM (R5), KEY0, KEY1 + VLL R0, (R6), NONCE + VZERO M0 + VLEIB $7, $32, M0 + VSRLB M0, NONCE, NONCE + + // initialize counter values + VLREPF (R7), CTR + VZERO INC + VLEIF $1, $1, INC + VLEIF $2, $2, INC + VLEIF $3, $3, INC + VAF INC, CTR, CTR + VREPIF $4, INC + +chacha: + VREPF $0, J0, X0 + VREPF $1, J0, X1 + VREPF $2, J0, X2 + VREPF $3, J0, X3 + VREPF $0, KEY0, X4 + VREPF $1, KEY0, X5 + VREPF $2, KEY0, X6 + VREPF $3, KEY0, X7 + VREPF $0, KEY1, X8 + VREPF $1, KEY1, X9 + VREPF $2, KEY1, X10 + VREPF $3, KEY1, X11 + VLR CTR, X12 + VREPF $1, NONCE, X13 + VREPF $2, NONCE, X14 + VREPF $3, NONCE, X15 + + MOVD $(NUM_ROUNDS/2), R1 + +loop: + ROUND4(X0, X4, X12, X8, X1, X5, X13, X9, X2, X6, X14, X10, X3, X7, X15, X11) + ROUND4(X0, X5, X15, X10, X1, X6, X12, X11, X2, X7, X13, X8, X3, X4, X14, X9) + + ADD $-1, R1 + BNE loop + + // decrement length + ADD $-256, R4 + + // rearrange vectors + SHUFFLE(X0, X1, X2, X3, M0, M1, M2, M3) + ADDV(J0, X0, X1, X2, X3) + SHUFFLE(X4, X5, X6, X7, M0, M1, M2, M3) + ADDV(KEY0, X4, X5, X6, X7) + SHUFFLE(X8, X9, X10, X11, M0, M1, M2, M3) + ADDV(KEY1, X8, X9, X10, X11) + VAF CTR, X12, X12 + SHUFFLE(X12, X13, X14, X15, M0, M1, M2, M3) + ADDV(NONCE, X12, X13, X14, X15) + + // increment counters + VAF INC, CTR, CTR + + // xor keystream with plaintext + XORV(0*64, R2, R3, X0, X4, X8, X12) + XORV(1*64, R2, R3, X1, X5, X9, X13) + XORV(2*64, R2, R3, X2, X6, X10, X14) + XORV(3*64, R2, R3, X3, X7, X11, X15) + + // increment pointers + MOVD $256(R2), R2 + MOVD $256(R3), R3 + + CMPBNE R4, $0, chacha + + VSTEF $0, CTR, (R7) + RET diff --git a/tests/vendor/golang.org/x/crypto/chacha20/xor.go b/tests/vendor/golang.org/x/crypto/chacha20/xor.go new file mode 100644 index 000000000..c2d04851e --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/chacha20/xor.go @@ -0,0 +1,42 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found src the LICENSE file. + +package chacha20 + +import "runtime" + +// Platforms that have fast unaligned 32-bit little endian accesses. +const unaligned = runtime.GOARCH == "386" || + runtime.GOARCH == "amd64" || + runtime.GOARCH == "arm64" || + runtime.GOARCH == "ppc64le" || + runtime.GOARCH == "s390x" + +// addXor reads a little endian uint32 from src, XORs it with (a + b) and +// places the result in little endian byte order in dst. +func addXor(dst, src []byte, a, b uint32) { + _, _ = src[3], dst[3] // bounds check elimination hint + if unaligned { + // The compiler should optimize this code into + // 32-bit unaligned little endian loads and stores. + // TODO: delete once the compiler does a reliably + // good job with the generic code below. + // See issue #25111 for more details. + v := uint32(src[0]) + v |= uint32(src[1]) << 8 + v |= uint32(src[2]) << 16 + v |= uint32(src[3]) << 24 + v ^= a + b + dst[0] = byte(v) + dst[1] = byte(v >> 8) + dst[2] = byte(v >> 16) + dst[3] = byte(v >> 24) + } else { + a += b + dst[0] = src[0] ^ byte(a) + dst[1] = src[1] ^ byte(a>>8) + dst[2] = src[2] ^ byte(a>>16) + dst[3] = src[3] ^ byte(a>>24) + } +} diff --git a/tests/vendor/golang.org/x/crypto/curve25519/curve25519.go b/tests/vendor/golang.org/x/crypto/curve25519/curve25519.go new file mode 100644 index 000000000..21ca3b2ee --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/curve25519/curve25519.go @@ -0,0 +1,90 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package curve25519 provides an implementation of the X25519 function, which +// performs scalar multiplication on the elliptic curve known as Curve25519. +// See RFC 7748. +// +// This package is a wrapper for the X25519 implementation +// in the crypto/ecdh package. +package curve25519 + +import "crypto/ecdh" + +// ScalarMult sets dst to the product scalar * point. +// +// Deprecated: when provided a low-order point, ScalarMult will set dst to all +// zeroes, irrespective of the scalar. Instead, use the X25519 function, which +// will return an error. +func ScalarMult(dst, scalar, point *[32]byte) { + if _, err := x25519(dst, scalar[:], point[:]); err != nil { + // The only error condition for x25519 when the inputs are 32 bytes long + // is if the output would have been the all-zero value. + for i := range dst { + dst[i] = 0 + } + } +} + +// ScalarBaseMult sets dst to the product scalar * base where base is the +// standard generator. +// +// It is recommended to use the X25519 function with Basepoint instead, as +// copying into fixed size arrays can lead to unexpected bugs. +func ScalarBaseMult(dst, scalar *[32]byte) { + curve := ecdh.X25519() + priv, err := curve.NewPrivateKey(scalar[:]) + if err != nil { + panic("curve25519: internal error: scalarBaseMult was not 32 bytes") + } + copy(dst[:], priv.PublicKey().Bytes()) +} + +const ( + // ScalarSize is the size of the scalar input to X25519. + ScalarSize = 32 + // PointSize is the size of the point input to X25519. + PointSize = 32 +) + +// Basepoint is the canonical Curve25519 generator. +var Basepoint []byte + +var basePoint = [32]byte{9} + +func init() { Basepoint = basePoint[:] } + +// X25519 returns the result of the scalar multiplication (scalar * point), +// according to RFC 7748, Section 5. scalar, point and the return value are +// slices of 32 bytes. +// +// scalar can be generated at random, for example with crypto/rand. point should +// be either Basepoint or the output of another X25519 call. +// +// If point is Basepoint (but not if it's a different slice with the same +// contents) a precomputed implementation might be used for performance. +func X25519(scalar, point []byte) ([]byte, error) { + // Outline the body of function, to let the allocation be inlined in the + // caller, and possibly avoid escaping to the heap. + var dst [32]byte + return x25519(&dst, scalar, point) +} + +func x25519(dst *[32]byte, scalar, point []byte) ([]byte, error) { + curve := ecdh.X25519() + pub, err := curve.NewPublicKey(point) + if err != nil { + return nil, err + } + priv, err := curve.NewPrivateKey(scalar) + if err != nil { + return nil, err + } + out, err := priv.ECDH(pub) + if err != nil { + return nil, err + } + copy(dst[:], out) + return dst[:], nil +} diff --git a/tests/vendor/golang.org/x/crypto/internal/alias/alias.go b/tests/vendor/golang.org/x/crypto/internal/alias/alias.go new file mode 100644 index 000000000..551ff0c35 --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/internal/alias/alias.go @@ -0,0 +1,31 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !purego + +// Package alias implements memory aliasing tests. +package alias + +import "unsafe" + +// AnyOverlap reports whether x and y share memory at any (not necessarily +// corresponding) index. The memory beyond the slice length is ignored. +func AnyOverlap(x, y []byte) bool { + return len(x) > 0 && len(y) > 0 && + uintptr(unsafe.Pointer(&x[0])) <= uintptr(unsafe.Pointer(&y[len(y)-1])) && + uintptr(unsafe.Pointer(&y[0])) <= uintptr(unsafe.Pointer(&x[len(x)-1])) +} + +// InexactOverlap reports whether x and y share memory at any non-corresponding +// index. The memory beyond the slice length is ignored. Note that x and y can +// have different lengths and still not have any inexact overlap. +// +// InexactOverlap can be used to implement the requirements of the crypto/cipher +// AEAD, Block, BlockMode and Stream interfaces. +func InexactOverlap(x, y []byte) bool { + if len(x) == 0 || len(y) == 0 || &x[0] == &y[0] { + return false + } + return AnyOverlap(x, y) +} diff --git a/tests/vendor/golang.org/x/crypto/internal/alias/alias_purego.go b/tests/vendor/golang.org/x/crypto/internal/alias/alias_purego.go new file mode 100644 index 000000000..6fe61b5c6 --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/internal/alias/alias_purego.go @@ -0,0 +1,34 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build purego + +// Package alias implements memory aliasing tests. +package alias + +// This is the Google App Engine standard variant based on reflect +// because the unsafe package and cgo are disallowed. + +import "reflect" + +// AnyOverlap reports whether x and y share memory at any (not necessarily +// corresponding) index. The memory beyond the slice length is ignored. +func AnyOverlap(x, y []byte) bool { + return len(x) > 0 && len(y) > 0 && + reflect.ValueOf(&x[0]).Pointer() <= reflect.ValueOf(&y[len(y)-1]).Pointer() && + reflect.ValueOf(&y[0]).Pointer() <= reflect.ValueOf(&x[len(x)-1]).Pointer() +} + +// InexactOverlap reports whether x and y share memory at any non-corresponding +// index. The memory beyond the slice length is ignored. Note that x and y can +// have different lengths and still not have any inexact overlap. +// +// InexactOverlap can be used to implement the requirements of the crypto/cipher +// AEAD, Block, BlockMode and Stream interfaces. +func InexactOverlap(x, y []byte) bool { + if len(x) == 0 || len(y) == 0 || &x[0] == &y[0] { + return false + } + return AnyOverlap(x, y) +} diff --git a/tests/vendor/golang.org/x/crypto/internal/poly1305/mac_noasm.go b/tests/vendor/golang.org/x/crypto/internal/poly1305/mac_noasm.go new file mode 100644 index 000000000..8d99551fe --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/internal/poly1305/mac_noasm.go @@ -0,0 +1,9 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (!amd64 && !loong64 && !ppc64le && !ppc64 && !s390x) || !gc || purego + +package poly1305 + +type mac struct{ macGeneric } diff --git a/tests/vendor/golang.org/x/crypto/internal/poly1305/poly1305.go b/tests/vendor/golang.org/x/crypto/internal/poly1305/poly1305.go new file mode 100644 index 000000000..4aaea810a --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/internal/poly1305/poly1305.go @@ -0,0 +1,99 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package poly1305 implements Poly1305 one-time message authentication code as +// specified in https://cr.yp.to/mac/poly1305-20050329.pdf. +// +// Poly1305 is a fast, one-time authentication function. It is infeasible for an +// attacker to generate an authenticator for a message without the key. However, a +// key must only be used for a single message. Authenticating two different +// messages with the same key allows an attacker to forge authenticators for other +// messages with the same key. +// +// Poly1305 was originally coupled with AES in order to make Poly1305-AES. AES was +// used with a fixed key in order to generate one-time keys from an nonce. +// However, in this package AES isn't used and the one-time key is specified +// directly. +package poly1305 + +import "crypto/subtle" + +// TagSize is the size, in bytes, of a poly1305 authenticator. +const TagSize = 16 + +// Sum generates an authenticator for msg using a one-time key and puts the +// 16-byte result into out. Authenticating two different messages with the same +// key allows an attacker to forge messages at will. +func Sum(out *[16]byte, m []byte, key *[32]byte) { + h := New(key) + h.Write(m) + h.Sum(out[:0]) +} + +// Verify returns true if mac is a valid authenticator for m with the given key. +func Verify(mac *[16]byte, m []byte, key *[32]byte) bool { + var tmp [16]byte + Sum(&tmp, m, key) + return subtle.ConstantTimeCompare(tmp[:], mac[:]) == 1 +} + +// New returns a new MAC computing an authentication +// tag of all data written to it with the given key. +// This allows writing the message progressively instead +// of passing it as a single slice. Common users should use +// the Sum function instead. +// +// The key must be unique for each message, as authenticating +// two different messages with the same key allows an attacker +// to forge messages at will. +func New(key *[32]byte) *MAC { + m := &MAC{} + initialize(key, &m.macState) + return m +} + +// MAC is an io.Writer computing an authentication tag +// of the data written to it. +// +// MAC cannot be used like common hash.Hash implementations, +// because using a poly1305 key twice breaks its security. +// Therefore writing data to a running MAC after calling +// Sum or Verify causes it to panic. +type MAC struct { + mac // platform-dependent implementation + + finalized bool +} + +// Size returns the number of bytes Sum will return. +func (h *MAC) Size() int { return TagSize } + +// Write adds more data to the running message authentication code. +// It never returns an error. +// +// It must not be called after the first call of Sum or Verify. +func (h *MAC) Write(p []byte) (n int, err error) { + if h.finalized { + panic("poly1305: write to MAC after Sum or Verify") + } + return h.mac.Write(p) +} + +// Sum computes the authenticator of all data written to the +// message authentication code. +func (h *MAC) Sum(b []byte) []byte { + var mac [TagSize]byte + h.mac.Sum(&mac) + h.finalized = true + return append(b, mac[:]...) +} + +// Verify returns whether the authenticator of all data written to +// the message authentication code matches the expected value. +func (h *MAC) Verify(expected []byte) bool { + var mac [TagSize]byte + h.mac.Sum(&mac) + h.finalized = true + return subtle.ConstantTimeCompare(expected, mac[:]) == 1 +} diff --git a/tests/vendor/golang.org/x/crypto/internal/poly1305/sum_amd64.s b/tests/vendor/golang.org/x/crypto/internal/poly1305/sum_amd64.s new file mode 100644 index 000000000..133757384 --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/internal/poly1305/sum_amd64.s @@ -0,0 +1,93 @@ +// Code generated by command: go run sum_amd64_asm.go -out ../sum_amd64.s -pkg poly1305. DO NOT EDIT. + +//go:build gc && !purego + +// func update(state *macState, msg []byte) +TEXT ·update(SB), $0-32 + MOVQ state+0(FP), DI + MOVQ msg_base+8(FP), SI + MOVQ msg_len+16(FP), R15 + MOVQ (DI), R8 + MOVQ 8(DI), R9 + MOVQ 16(DI), R10 + MOVQ 24(DI), R11 + MOVQ 32(DI), R12 + CMPQ R15, $0x10 + JB bytes_between_0_and_15 + +loop: + ADDQ (SI), R8 + ADCQ 8(SI), R9 + ADCQ $0x01, R10 + LEAQ 16(SI), SI + +multiply: + MOVQ R11, AX + MULQ R8 + MOVQ AX, BX + MOVQ DX, CX + MOVQ R11, AX + MULQ R9 + ADDQ AX, CX + ADCQ $0x00, DX + MOVQ R11, R13 + IMULQ R10, R13 + ADDQ DX, R13 + MOVQ R12, AX + MULQ R8 + ADDQ AX, CX + ADCQ $0x00, DX + MOVQ DX, R8 + MOVQ R12, R14 + IMULQ R10, R14 + MOVQ R12, AX + MULQ R9 + ADDQ AX, R13 + ADCQ DX, R14 + ADDQ R8, R13 + ADCQ $0x00, R14 + MOVQ BX, R8 + MOVQ CX, R9 + MOVQ R13, R10 + ANDQ $0x03, R10 + MOVQ R13, BX + ANDQ $-4, BX + ADDQ BX, R8 + ADCQ R14, R9 + ADCQ $0x00, R10 + SHRQ $0x02, R14, R13 + SHRQ $0x02, R14 + ADDQ R13, R8 + ADCQ R14, R9 + ADCQ $0x00, R10 + SUBQ $0x10, R15 + CMPQ R15, $0x10 + JAE loop + +bytes_between_0_and_15: + TESTQ R15, R15 + JZ done + MOVQ $0x00000001, BX + XORQ CX, CX + XORQ R13, R13 + ADDQ R15, SI + +flush_buffer: + SHLQ $0x08, BX, CX + SHLQ $0x08, BX + MOVB -1(SI), R13 + XORQ R13, BX + DECQ SI + DECQ R15 + JNZ flush_buffer + ADDQ BX, R8 + ADCQ CX, R9 + ADCQ $0x00, R10 + MOVQ $0x00000010, R15 + JMP multiply + +done: + MOVQ R8, (DI) + MOVQ R9, 8(DI) + MOVQ R10, 16(DI) + RET diff --git a/tests/vendor/golang.org/x/crypto/internal/poly1305/sum_asm.go b/tests/vendor/golang.org/x/crypto/internal/poly1305/sum_asm.go new file mode 100644 index 000000000..315b84ac3 --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/internal/poly1305/sum_asm.go @@ -0,0 +1,47 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc && !purego && (amd64 || loong64 || ppc64 || ppc64le) + +package poly1305 + +//go:noescape +func update(state *macState, msg []byte) + +// mac is a wrapper for macGeneric that redirects calls that would have gone to +// updateGeneric to update. +// +// Its Write and Sum methods are otherwise identical to the macGeneric ones, but +// using function pointers would carry a major performance cost. +type mac struct{ macGeneric } + +func (h *mac) Write(p []byte) (int, error) { + nn := len(p) + if h.offset > 0 { + n := copy(h.buffer[h.offset:], p) + if h.offset+n < TagSize { + h.offset += n + return nn, nil + } + p = p[n:] + h.offset = 0 + update(&h.macState, h.buffer[:]) + } + if n := len(p) - (len(p) % TagSize); n > 0 { + update(&h.macState, p[:n]) + p = p[n:] + } + if len(p) > 0 { + h.offset += copy(h.buffer[h.offset:], p) + } + return nn, nil +} + +func (h *mac) Sum(out *[16]byte) { + state := h.macState + if h.offset > 0 { + update(&state, h.buffer[:h.offset]) + } + finalize(out, &state.h, &state.s) +} diff --git a/tests/vendor/golang.org/x/crypto/internal/poly1305/sum_generic.go b/tests/vendor/golang.org/x/crypto/internal/poly1305/sum_generic.go new file mode 100644 index 000000000..ec2202bd7 --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/internal/poly1305/sum_generic.go @@ -0,0 +1,312 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// This file provides the generic implementation of Sum and MAC. Other files +// might provide optimized assembly implementations of some of this code. + +package poly1305 + +import ( + "encoding/binary" + "math/bits" +) + +// Poly1305 [RFC 7539] is a relatively simple algorithm: the authentication tag +// for a 64 bytes message is approximately +// +// s + m[0:16] * r⁴ + m[16:32] * r³ + m[32:48] * r² + m[48:64] * r mod 2¹³⁰ - 5 +// +// for some secret r and s. It can be computed sequentially like +// +// for len(msg) > 0: +// h += read(msg, 16) +// h *= r +// h %= 2¹³⁰ - 5 +// return h + s +// +// All the complexity is about doing performant constant-time math on numbers +// larger than any available numeric type. + +func sumGeneric(out *[TagSize]byte, msg []byte, key *[32]byte) { + h := newMACGeneric(key) + h.Write(msg) + h.Sum(out) +} + +func newMACGeneric(key *[32]byte) macGeneric { + m := macGeneric{} + initialize(key, &m.macState) + return m +} + +// macState holds numbers in saturated 64-bit little-endian limbs. That is, +// the value of [x0, x1, x2] is x[0] + x[1] * 2⁶⁴ + x[2] * 2¹²⁸. +type macState struct { + // h is the main accumulator. It is to be interpreted modulo 2¹³⁰ - 5, but + // can grow larger during and after rounds. It must, however, remain below + // 2 * (2¹³⁰ - 5). + h [3]uint64 + // r and s are the private key components. + r [2]uint64 + s [2]uint64 +} + +type macGeneric struct { + macState + + buffer [TagSize]byte + offset int +} + +// Write splits the incoming message into TagSize chunks, and passes them to +// update. It buffers incomplete chunks. +func (h *macGeneric) Write(p []byte) (int, error) { + nn := len(p) + if h.offset > 0 { + n := copy(h.buffer[h.offset:], p) + if h.offset+n < TagSize { + h.offset += n + return nn, nil + } + p = p[n:] + h.offset = 0 + updateGeneric(&h.macState, h.buffer[:]) + } + if n := len(p) - (len(p) % TagSize); n > 0 { + updateGeneric(&h.macState, p[:n]) + p = p[n:] + } + if len(p) > 0 { + h.offset += copy(h.buffer[h.offset:], p) + } + return nn, nil +} + +// Sum flushes the last incomplete chunk from the buffer, if any, and generates +// the MAC output. It does not modify its state, in order to allow for multiple +// calls to Sum, even if no Write is allowed after Sum. +func (h *macGeneric) Sum(out *[TagSize]byte) { + state := h.macState + if h.offset > 0 { + updateGeneric(&state, h.buffer[:h.offset]) + } + finalize(out, &state.h, &state.s) +} + +// [rMask0, rMask1] is the specified Poly1305 clamping mask in little-endian. It +// clears some bits of the secret coefficient to make it possible to implement +// multiplication more efficiently. +const ( + rMask0 = 0x0FFFFFFC0FFFFFFF + rMask1 = 0x0FFFFFFC0FFFFFFC +) + +// initialize loads the 256-bit key into the two 128-bit secret values r and s. +func initialize(key *[32]byte, m *macState) { + m.r[0] = binary.LittleEndian.Uint64(key[0:8]) & rMask0 + m.r[1] = binary.LittleEndian.Uint64(key[8:16]) & rMask1 + m.s[0] = binary.LittleEndian.Uint64(key[16:24]) + m.s[1] = binary.LittleEndian.Uint64(key[24:32]) +} + +// uint128 holds a 128-bit number as two 64-bit limbs, for use with the +// bits.Mul64 and bits.Add64 intrinsics. +type uint128 struct { + lo, hi uint64 +} + +func mul64(a, b uint64) uint128 { + hi, lo := bits.Mul64(a, b) + return uint128{lo, hi} +} + +func add128(a, b uint128) uint128 { + lo, c := bits.Add64(a.lo, b.lo, 0) + hi, c := bits.Add64(a.hi, b.hi, c) + if c != 0 { + panic("poly1305: unexpected overflow") + } + return uint128{lo, hi} +} + +func shiftRightBy2(a uint128) uint128 { + a.lo = a.lo>>2 | (a.hi&3)<<62 + a.hi = a.hi >> 2 + return a +} + +// updateGeneric absorbs msg into the state.h accumulator. For each chunk m of +// 128 bits of message, it computes +// +// h₊ = (h + m) * r mod 2¹³⁰ - 5 +// +// If the msg length is not a multiple of TagSize, it assumes the last +// incomplete chunk is the final one. +func updateGeneric(state *macState, msg []byte) { + h0, h1, h2 := state.h[0], state.h[1], state.h[2] + r0, r1 := state.r[0], state.r[1] + + for len(msg) > 0 { + var c uint64 + + // For the first step, h + m, we use a chain of bits.Add64 intrinsics. + // The resulting value of h might exceed 2¹³⁰ - 5, but will be partially + // reduced at the end of the multiplication below. + // + // The spec requires us to set a bit just above the message size, not to + // hide leading zeroes. For full chunks, that's 1 << 128, so we can just + // add 1 to the most significant (2¹²⁸) limb, h2. + if len(msg) >= TagSize { + h0, c = bits.Add64(h0, binary.LittleEndian.Uint64(msg[0:8]), 0) + h1, c = bits.Add64(h1, binary.LittleEndian.Uint64(msg[8:16]), c) + h2 += c + 1 + + msg = msg[TagSize:] + } else { + var buf [TagSize]byte + copy(buf[:], msg) + buf[len(msg)] = 1 + + h0, c = bits.Add64(h0, binary.LittleEndian.Uint64(buf[0:8]), 0) + h1, c = bits.Add64(h1, binary.LittleEndian.Uint64(buf[8:16]), c) + h2 += c + + msg = nil + } + + // Multiplication of big number limbs is similar to elementary school + // columnar multiplication. Instead of digits, there are 64-bit limbs. + // + // We are multiplying a 3 limbs number, h, by a 2 limbs number, r. + // + // h2 h1 h0 x + // r1 r0 = + // ---------------- + // h2r0 h1r0 h0r0 <-- individual 128-bit products + // + h2r1 h1r1 h0r1 + // ------------------------ + // m3 m2 m1 m0 <-- result in 128-bit overlapping limbs + // ------------------------ + // m3.hi m2.hi m1.hi m0.hi <-- carry propagation + // + m3.lo m2.lo m1.lo m0.lo + // ------------------------------- + // t4 t3 t2 t1 t0 <-- final result in 64-bit limbs + // + // The main difference from pen-and-paper multiplication is that we do + // carry propagation in a separate step, as if we wrote two digit sums + // at first (the 128-bit limbs), and then carried the tens all at once. + + h0r0 := mul64(h0, r0) + h1r0 := mul64(h1, r0) + h2r0 := mul64(h2, r0) + h0r1 := mul64(h0, r1) + h1r1 := mul64(h1, r1) + h2r1 := mul64(h2, r1) + + // Since h2 is known to be at most 7 (5 + 1 + 1), and r0 and r1 have their + // top 4 bits cleared by rMask{0,1}, we know that their product is not going + // to overflow 64 bits, so we can ignore the high part of the products. + // + // This also means that the product doesn't have a fifth limb (t4). + if h2r0.hi != 0 { + panic("poly1305: unexpected overflow") + } + if h2r1.hi != 0 { + panic("poly1305: unexpected overflow") + } + + m0 := h0r0 + m1 := add128(h1r0, h0r1) // These two additions don't overflow thanks again + m2 := add128(h2r0, h1r1) // to the 4 masked bits at the top of r0 and r1. + m3 := h2r1 + + t0 := m0.lo + t1, c := bits.Add64(m1.lo, m0.hi, 0) + t2, c := bits.Add64(m2.lo, m1.hi, c) + t3, _ := bits.Add64(m3.lo, m2.hi, c) + + // Now we have the result as 4 64-bit limbs, and we need to reduce it + // modulo 2¹³⁰ - 5. The special shape of this Crandall prime lets us do + // a cheap partial reduction according to the reduction identity + // + // c * 2¹³⁰ + n = c * 5 + n mod 2¹³⁰ - 5 + // + // because 2¹³⁰ = 5 mod 2¹³⁰ - 5. Partial reduction since the result is + // likely to be larger than 2¹³⁰ - 5, but still small enough to fit the + // assumptions we make about h in the rest of the code. + // + // See also https://speakerdeck.com/gtank/engineering-prime-numbers?slide=23 + + // We split the final result at the 2¹³⁰ mark into h and cc, the carry. + // Note that the carry bits are effectively shifted left by 2, in other + // words, cc = c * 4 for the c in the reduction identity. + h0, h1, h2 = t0, t1, t2&maskLow2Bits + cc := uint128{t2 & maskNotLow2Bits, t3} + + // To add c * 5 to h, we first add cc = c * 4, and then add (cc >> 2) = c. + + h0, c = bits.Add64(h0, cc.lo, 0) + h1, c = bits.Add64(h1, cc.hi, c) + h2 += c + + cc = shiftRightBy2(cc) + + h0, c = bits.Add64(h0, cc.lo, 0) + h1, c = bits.Add64(h1, cc.hi, c) + h2 += c + + // h2 is at most 3 + 1 + 1 = 5, making the whole of h at most + // + // 5 * 2¹²⁸ + (2¹²⁸ - 1) = 6 * 2¹²⁸ - 1 + } + + state.h[0], state.h[1], state.h[2] = h0, h1, h2 +} + +const ( + maskLow2Bits uint64 = 0x0000000000000003 + maskNotLow2Bits uint64 = ^maskLow2Bits +) + +// select64 returns x if v == 1 and y if v == 0, in constant time. +func select64(v, x, y uint64) uint64 { return ^(v-1)&x | (v-1)&y } + +// [p0, p1, p2] is 2¹³⁰ - 5 in little endian order. +const ( + p0 = 0xFFFFFFFFFFFFFFFB + p1 = 0xFFFFFFFFFFFFFFFF + p2 = 0x0000000000000003 +) + +// finalize completes the modular reduction of h and computes +// +// out = h + s mod 2¹²⁸ +func finalize(out *[TagSize]byte, h *[3]uint64, s *[2]uint64) { + h0, h1, h2 := h[0], h[1], h[2] + + // After the partial reduction in updateGeneric, h might be more than + // 2¹³⁰ - 5, but will be less than 2 * (2¹³⁰ - 5). To complete the reduction + // in constant time, we compute t = h - (2¹³⁰ - 5), and select h as the + // result if the subtraction underflows, and t otherwise. + + hMinusP0, b := bits.Sub64(h0, p0, 0) + hMinusP1, b := bits.Sub64(h1, p1, b) + _, b = bits.Sub64(h2, p2, b) + + // h = h if h < p else h - p + h0 = select64(b, h0, hMinusP0) + h1 = select64(b, h1, hMinusP1) + + // Finally, we compute the last Poly1305 step + // + // tag = h + s mod 2¹²⁸ + // + // by just doing a wide addition with the 128 low bits of h and discarding + // the overflow. + h0, c := bits.Add64(h0, s[0], 0) + h1, _ = bits.Add64(h1, s[1], c) + + binary.LittleEndian.PutUint64(out[0:8], h0) + binary.LittleEndian.PutUint64(out[8:16], h1) +} diff --git a/tests/vendor/golang.org/x/crypto/internal/poly1305/sum_loong64.s b/tests/vendor/golang.org/x/crypto/internal/poly1305/sum_loong64.s new file mode 100644 index 000000000..bc8361da4 --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/internal/poly1305/sum_loong64.s @@ -0,0 +1,123 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc && !purego + +// func update(state *macState, msg []byte) +TEXT ·update(SB), $0-32 + MOVV state+0(FP), R4 + MOVV msg_base+8(FP), R5 + MOVV msg_len+16(FP), R6 + + MOVV $0x10, R7 + + MOVV (R4), R8 // h0 + MOVV 8(R4), R9 // h1 + MOVV 16(R4), R10 // h2 + MOVV 24(R4), R11 // r0 + MOVV 32(R4), R12 // r1 + + BLT R6, R7, bytes_between_0_and_15 + +loop: + MOVV (R5), R14 // msg[0:8] + MOVV 8(R5), R16 // msg[8:16] + ADDV R14, R8, R8 // h0 (x1 + y1 = z1', if z1' < x1 then z1' overflow) + ADDV R16, R9, R27 + SGTU R14, R8, R24 // h0.carry + SGTU R9, R27, R28 + ADDV R27, R24, R9 // h1 + SGTU R27, R9, R24 + OR R24, R28, R24 // h1.carry + ADDV $0x01, R24, R24 + ADDV R10, R24, R10 // h2 + + ADDV $16, R5, R5 // msg = msg[16:] + +multiply: + MULV R8, R11, R14 // h0r0.lo + MULHVU R8, R11, R15 // h0r0.hi + MULV R9, R11, R13 // h1r0.lo + MULHVU R9, R11, R16 // h1r0.hi + ADDV R13, R15, R15 + SGTU R13, R15, R24 + ADDV R24, R16, R16 + MULV R10, R11, R25 + ADDV R16, R25, R25 + MULV R8, R12, R13 // h0r1.lo + MULHVU R8, R12, R16 // h0r1.hi + ADDV R13, R15, R15 + SGTU R13, R15, R24 + ADDV R24, R16, R16 + MOVV R16, R8 + MULV R10, R12, R26 // h2r1 + MULV R9, R12, R13 // h1r1.lo + MULHVU R9, R12, R16 // h1r1.hi + ADDV R13, R25, R25 + ADDV R16, R26, R27 + SGTU R13, R25, R24 + ADDV R27, R24, R26 + ADDV R8, R25, R25 + SGTU R8, R25, R24 + ADDV R24, R26, R26 + AND $3, R25, R10 + AND $-4, R25, R17 + ADDV R17, R14, R8 + ADDV R26, R15, R27 + SGTU R17, R8, R24 + SGTU R26, R27, R28 + ADDV R27, R24, R9 + SGTU R27, R9, R24 + OR R24, R28, R24 + ADDV R24, R10, R10 + SLLV $62, R26, R27 + SRLV $2, R25, R28 + SRLV $2, R26, R26 + OR R27, R28, R25 + ADDV R25, R8, R8 + ADDV R26, R9, R27 + SGTU R25, R8, R24 + SGTU R26, R27, R28 + ADDV R27, R24, R9 + SGTU R27, R9, R24 + OR R24, R28, R24 + ADDV R24, R10, R10 + + SUBV $16, R6, R6 + BGE R6, R7, loop + +bytes_between_0_and_15: + BEQ R6, R0, done + MOVV $1, R14 + XOR R15, R15 + ADDV R6, R5, R5 + +flush_buffer: + MOVBU -1(R5), R25 + SRLV $56, R14, R24 + SLLV $8, R15, R28 + SLLV $8, R14, R14 + OR R24, R28, R15 + XOR R25, R14, R14 + SUBV $1, R6, R6 + SUBV $1, R5, R5 + BNE R6, R0, flush_buffer + + ADDV R14, R8, R8 + SGTU R14, R8, R24 + ADDV R15, R9, R27 + SGTU R15, R27, R28 + ADDV R27, R24, R9 + SGTU R27, R9, R24 + OR R24, R28, R24 + ADDV R10, R24, R10 + + MOVV $16, R6 + JMP multiply + +done: + MOVV R8, (R4) + MOVV R9, 8(R4) + MOVV R10, 16(R4) + RET diff --git a/tests/vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64x.s b/tests/vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64x.s new file mode 100644 index 000000000..6899a1dab --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64x.s @@ -0,0 +1,187 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc && !purego && (ppc64 || ppc64le) + +#include "textflag.h" + +// This was ported from the amd64 implementation. + +#ifdef GOARCH_ppc64le +#define LE_MOVD MOVD +#define LE_MOVWZ MOVWZ +#define LE_MOVHZ MOVHZ +#else +#define LE_MOVD MOVDBR +#define LE_MOVWZ MOVWBR +#define LE_MOVHZ MOVHBR +#endif + +#define POLY1305_ADD(msg, h0, h1, h2, t0, t1, t2) \ + LE_MOVD (msg)( R0), t0; \ + LE_MOVD (msg)(R24), t1; \ + MOVD $1, t2; \ + ADDC t0, h0, h0; \ + ADDE t1, h1, h1; \ + ADDE t2, h2; \ + ADD $16, msg + +#define POLY1305_MUL(h0, h1, h2, r0, r1, t0, t1, t2, t3, t4, t5) \ + MULLD r0, h0, t0; \ + MULHDU r0, h0, t1; \ + MULLD r0, h1, t4; \ + MULHDU r0, h1, t5; \ + ADDC t4, t1, t1; \ + MULLD r0, h2, t2; \ + MULHDU r1, h0, t4; \ + MULLD r1, h0, h0; \ + ADDE t5, t2, t2; \ + ADDC h0, t1, t1; \ + MULLD h2, r1, t3; \ + ADDZE t4, h0; \ + MULHDU r1, h1, t5; \ + MULLD r1, h1, t4; \ + ADDC t4, t2, t2; \ + ADDE t5, t3, t3; \ + ADDC h0, t2, t2; \ + MOVD $-4, t4; \ + ADDZE t3; \ + RLDICL $0, t2, $62, h2; \ + AND t2, t4, h0; \ + ADDC t0, h0, h0; \ + ADDE t3, t1, h1; \ + SLD $62, t3, t4; \ + SRD $2, t2; \ + ADDZE h2; \ + OR t4, t2, t2; \ + SRD $2, t3; \ + ADDC t2, h0, h0; \ + ADDE t3, h1, h1; \ + ADDZE h2 + +// func update(state *[7]uint64, msg []byte) +TEXT ·update(SB), $0-32 + MOVD state+0(FP), R3 + MOVD msg_base+8(FP), R4 + MOVD msg_len+16(FP), R5 + + MOVD 0(R3), R8 // h0 + MOVD 8(R3), R9 // h1 + MOVD 16(R3), R10 // h2 + MOVD 24(R3), R11 // r0 + MOVD 32(R3), R12 // r1 + + MOVD $8, R24 + + CMP R5, $16 + BLT bytes_between_0_and_15 + +loop: + POLY1305_ADD(R4, R8, R9, R10, R20, R21, R22) + + PCALIGN $16 +multiply: + POLY1305_MUL(R8, R9, R10, R11, R12, R16, R17, R18, R14, R20, R21) + ADD $-16, R5 + CMP R5, $16 + BGE loop + +bytes_between_0_and_15: + CMP R5, $0 + BEQ done + MOVD $0, R16 // h0 + MOVD $0, R17 // h1 + +flush_buffer: + CMP R5, $8 + BLE just1 + + MOVD $8, R21 + SUB R21, R5, R21 + + // Greater than 8 -- load the rightmost remaining bytes in msg + // and put into R17 (h1) + LE_MOVD (R4)(R21), R17 + MOVD $16, R22 + + // Find the offset to those bytes + SUB R5, R22, R22 + SLD $3, R22 + + // Shift to get only the bytes in msg + SRD R22, R17, R17 + + // Put 1 at high end + MOVD $1, R23 + SLD $3, R21 + SLD R21, R23, R23 + OR R23, R17, R17 + + // Remainder is 8 + MOVD $8, R5 + +just1: + CMP R5, $8 + BLT less8 + + // Exactly 8 + LE_MOVD (R4), R16 + + CMP R17, $0 + + // Check if we've already set R17; if not + // set 1 to indicate end of msg. + BNE carry + MOVD $1, R17 + BR carry + +less8: + MOVD $0, R16 // h0 + MOVD $0, R22 // shift count + CMP R5, $4 + BLT less4 + LE_MOVWZ (R4), R16 + ADD $4, R4 + ADD $-4, R5 + MOVD $32, R22 + +less4: + CMP R5, $2 + BLT less2 + LE_MOVHZ (R4), R21 + SLD R22, R21, R21 + OR R16, R21, R16 + ADD $16, R22 + ADD $-2, R5 + ADD $2, R4 + +less2: + CMP R5, $0 + BEQ insert1 + MOVBZ (R4), R21 + SLD R22, R21, R21 + OR R16, R21, R16 + ADD $8, R22 + +insert1: + // Insert 1 at end of msg + MOVD $1, R21 + SLD R22, R21, R21 + OR R16, R21, R16 + +carry: + // Add new values to h0, h1, h2 + ADDC R16, R8 + ADDE R17, R9 + ADDZE R10, R10 + MOVD $16, R5 + ADD R5, R4 + BR multiply + +done: + // Save h0, h1, h2 in state + MOVD R8, 0(R3) + MOVD R9, 8(R3) + MOVD R10, 16(R3) + RET diff --git a/tests/vendor/golang.org/x/crypto/internal/poly1305/sum_s390x.go b/tests/vendor/golang.org/x/crypto/internal/poly1305/sum_s390x.go new file mode 100644 index 000000000..e1d033a49 --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/internal/poly1305/sum_s390x.go @@ -0,0 +1,76 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc && !purego + +package poly1305 + +import ( + "golang.org/x/sys/cpu" +) + +// updateVX is an assembly implementation of Poly1305 that uses vector +// instructions. It must only be called if the vector facility (vx) is +// available. +// +//go:noescape +func updateVX(state *macState, msg []byte) + +// mac is a replacement for macGeneric that uses a larger buffer and redirects +// calls that would have gone to updateGeneric to updateVX if the vector +// facility is installed. +// +// A larger buffer is required for good performance because the vector +// implementation has a higher fixed cost per call than the generic +// implementation. +type mac struct { + macState + + buffer [16 * TagSize]byte // size must be a multiple of block size (16) + offset int +} + +func (h *mac) Write(p []byte) (int, error) { + nn := len(p) + if h.offset > 0 { + n := copy(h.buffer[h.offset:], p) + if h.offset+n < len(h.buffer) { + h.offset += n + return nn, nil + } + p = p[n:] + h.offset = 0 + if cpu.S390X.HasVX { + updateVX(&h.macState, h.buffer[:]) + } else { + updateGeneric(&h.macState, h.buffer[:]) + } + } + + tail := len(p) % len(h.buffer) // number of bytes to copy into buffer + body := len(p) - tail // number of bytes to process now + if body > 0 { + if cpu.S390X.HasVX { + updateVX(&h.macState, p[:body]) + } else { + updateGeneric(&h.macState, p[:body]) + } + } + h.offset = copy(h.buffer[:], p[body:]) // copy tail bytes - can be 0 + return nn, nil +} + +func (h *mac) Sum(out *[TagSize]byte) { + state := h.macState + remainder := h.buffer[:h.offset] + + // Use the generic implementation if we have 2 or fewer blocks left + // to sum. The vector implementation has a higher startup time. + if cpu.S390X.HasVX && len(remainder) > 2*TagSize { + updateVX(&state, remainder) + } else if len(remainder) > 0 { + updateGeneric(&state, remainder) + } + finalize(out, &state.h, &state.s) +} diff --git a/tests/vendor/golang.org/x/crypto/internal/poly1305/sum_s390x.s b/tests/vendor/golang.org/x/crypto/internal/poly1305/sum_s390x.s new file mode 100644 index 000000000..0fe3a7c21 --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/internal/poly1305/sum_s390x.s @@ -0,0 +1,503 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc && !purego + +#include "textflag.h" + +// This implementation of Poly1305 uses the vector facility (vx) +// to process up to 2 blocks (32 bytes) per iteration using an +// algorithm based on the one described in: +// +// NEON crypto, Daniel J. Bernstein & Peter Schwabe +// https://cryptojedi.org/papers/neoncrypto-20120320.pdf +// +// This algorithm uses 5 26-bit limbs to represent a 130-bit +// value. These limbs are, for the most part, zero extended and +// placed into 64-bit vector register elements. Each vector +// register is 128-bits wide and so holds 2 of these elements. +// Using 26-bit limbs allows us plenty of headroom to accommodate +// accumulations before and after multiplication without +// overflowing either 32-bits (before multiplication) or 64-bits +// (after multiplication). +// +// In order to parallelise the operations required to calculate +// the sum we use two separate accumulators and then sum those +// in an extra final step. For compatibility with the generic +// implementation we perform this summation at the end of every +// updateVX call. +// +// To use two accumulators we must multiply the message blocks +// by r² rather than r. Only the final message block should be +// multiplied by r. +// +// Example: +// +// We want to calculate the sum (h) for a 64 byte message (m): +// +// h = m[0:16]r⁴ + m[16:32]r³ + m[32:48]r² + m[48:64]r +// +// To do this we split the calculation into the even indices +// and odd indices of the message. These form our SIMD 'lanes': +// +// h = m[ 0:16]r⁴ + m[32:48]r² + <- lane 0 +// m[16:32]r³ + m[48:64]r <- lane 1 +// +// To calculate this iteratively we refactor so that both lanes +// are written in terms of r² and r: +// +// h = (m[ 0:16]r² + m[32:48])r² + <- lane 0 +// (m[16:32]r² + m[48:64])r <- lane 1 +// ^ ^ +// | coefficients for second iteration +// coefficients for first iteration +// +// So in this case we would have two iterations. In the first +// both lanes are multiplied by r². In the second only the +// first lane is multiplied by r² and the second lane is +// instead multiplied by r. This gives use the odd and even +// powers of r that we need from the original equation. +// +// Notation: +// +// h - accumulator +// r - key +// m - message +// +// [a, b] - SIMD register holding two 64-bit values +// [a, b, c, d] - SIMD register holding four 32-bit values +// xᵢ[n] - limb n of variable x with bit width i +// +// Limbs are expressed in little endian order, so for 26-bit +// limbs x₂₆[4] will be the most significant limb and x₂₆[0] +// will be the least significant limb. + +// masking constants +#define MOD24 V0 // [0x0000000000ffffff, 0x0000000000ffffff] - mask low 24-bits +#define MOD26 V1 // [0x0000000003ffffff, 0x0000000003ffffff] - mask low 26-bits + +// expansion constants (see EXPAND macro) +#define EX0 V2 +#define EX1 V3 +#define EX2 V4 + +// key (r², r or 1 depending on context) +#define R_0 V5 +#define R_1 V6 +#define R_2 V7 +#define R_3 V8 +#define R_4 V9 + +// precalculated coefficients (5r², 5r or 0 depending on context) +#define R5_1 V10 +#define R5_2 V11 +#define R5_3 V12 +#define R5_4 V13 + +// message block (m) +#define M_0 V14 +#define M_1 V15 +#define M_2 V16 +#define M_3 V17 +#define M_4 V18 + +// accumulator (h) +#define H_0 V19 +#define H_1 V20 +#define H_2 V21 +#define H_3 V22 +#define H_4 V23 + +// temporary registers (for short-lived values) +#define T_0 V24 +#define T_1 V25 +#define T_2 V26 +#define T_3 V27 +#define T_4 V28 + +GLOBL ·constants<>(SB), RODATA, $0x30 +// EX0 +DATA ·constants<>+0x00(SB)/8, $0x0006050403020100 +DATA ·constants<>+0x08(SB)/8, $0x1016151413121110 +// EX1 +DATA ·constants<>+0x10(SB)/8, $0x060c0b0a09080706 +DATA ·constants<>+0x18(SB)/8, $0x161c1b1a19181716 +// EX2 +DATA ·constants<>+0x20(SB)/8, $0x0d0d0d0d0d0f0e0d +DATA ·constants<>+0x28(SB)/8, $0x1d1d1d1d1d1f1e1d + +// MULTIPLY multiplies each lane of f and g, partially reduced +// modulo 2¹³⁰ - 5. The result, h, consists of partial products +// in each lane that need to be reduced further to produce the +// final result. +// +// h₁₃₀ = (f₁₃₀g₁₃₀) % 2¹³⁰ + (5f₁₃₀g₁₃₀) / 2¹³⁰ +// +// Note that the multiplication by 5 of the high bits is +// achieved by precalculating the multiplication of four of the +// g coefficients by 5. These are g51-g54. +#define MULTIPLY(f0, f1, f2, f3, f4, g0, g1, g2, g3, g4, g51, g52, g53, g54, h0, h1, h2, h3, h4) \ + VMLOF f0, g0, h0 \ + VMLOF f0, g3, h3 \ + VMLOF f0, g1, h1 \ + VMLOF f0, g4, h4 \ + VMLOF f0, g2, h2 \ + VMLOF f1, g54, T_0 \ + VMLOF f1, g2, T_3 \ + VMLOF f1, g0, T_1 \ + VMLOF f1, g3, T_4 \ + VMLOF f1, g1, T_2 \ + VMALOF f2, g53, h0, h0 \ + VMALOF f2, g1, h3, h3 \ + VMALOF f2, g54, h1, h1 \ + VMALOF f2, g2, h4, h4 \ + VMALOF f2, g0, h2, h2 \ + VMALOF f3, g52, T_0, T_0 \ + VMALOF f3, g0, T_3, T_3 \ + VMALOF f3, g53, T_1, T_1 \ + VMALOF f3, g1, T_4, T_4 \ + VMALOF f3, g54, T_2, T_2 \ + VMALOF f4, g51, h0, h0 \ + VMALOF f4, g54, h3, h3 \ + VMALOF f4, g52, h1, h1 \ + VMALOF f4, g0, h4, h4 \ + VMALOF f4, g53, h2, h2 \ + VAG T_0, h0, h0 \ + VAG T_3, h3, h3 \ + VAG T_1, h1, h1 \ + VAG T_4, h4, h4 \ + VAG T_2, h2, h2 + +// REDUCE performs the following carry operations in four +// stages, as specified in Bernstein & Schwabe: +// +// 1: h₂₆[0]->h₂₆[1] h₂₆[3]->h₂₆[4] +// 2: h₂₆[1]->h₂₆[2] h₂₆[4]->h₂₆[0] +// 3: h₂₆[0]->h₂₆[1] h₂₆[2]->h₂₆[3] +// 4: h₂₆[3]->h₂₆[4] +// +// The result is that all of the limbs are limited to 26-bits +// except for h₂₆[1] and h₂₆[4] which are limited to 27-bits. +// +// Note that although each limb is aligned at 26-bit intervals +// they may contain values that exceed 2²⁶ - 1, hence the need +// to carry the excess bits in each limb. +#define REDUCE(h0, h1, h2, h3, h4) \ + VESRLG $26, h0, T_0 \ + VESRLG $26, h3, T_1 \ + VN MOD26, h0, h0 \ + VN MOD26, h3, h3 \ + VAG T_0, h1, h1 \ + VAG T_1, h4, h4 \ + VESRLG $26, h1, T_2 \ + VESRLG $26, h4, T_3 \ + VN MOD26, h1, h1 \ + VN MOD26, h4, h4 \ + VESLG $2, T_3, T_4 \ + VAG T_3, T_4, T_4 \ + VAG T_2, h2, h2 \ + VAG T_4, h0, h0 \ + VESRLG $26, h2, T_0 \ + VESRLG $26, h0, T_1 \ + VN MOD26, h2, h2 \ + VN MOD26, h0, h0 \ + VAG T_0, h3, h3 \ + VAG T_1, h1, h1 \ + VESRLG $26, h3, T_2 \ + VN MOD26, h3, h3 \ + VAG T_2, h4, h4 + +// EXPAND splits the 128-bit little-endian values in0 and in1 +// into 26-bit big-endian limbs and places the results into +// the first and second lane of d₂₆[0:4] respectively. +// +// The EX0, EX1 and EX2 constants are arrays of byte indices +// for permutation. The permutation both reverses the bytes +// in the input and ensures the bytes are copied into the +// destination limb ready to be shifted into their final +// position. +#define EXPAND(in0, in1, d0, d1, d2, d3, d4) \ + VPERM in0, in1, EX0, d0 \ + VPERM in0, in1, EX1, d2 \ + VPERM in0, in1, EX2, d4 \ + VESRLG $26, d0, d1 \ + VESRLG $30, d2, d3 \ + VESRLG $4, d2, d2 \ + VN MOD26, d0, d0 \ // [in0₂₆[0], in1₂₆[0]] + VN MOD26, d3, d3 \ // [in0₂₆[3], in1₂₆[3]] + VN MOD26, d1, d1 \ // [in0₂₆[1], in1₂₆[1]] + VN MOD24, d4, d4 \ // [in0₂₆[4], in1₂₆[4]] + VN MOD26, d2, d2 // [in0₂₆[2], in1₂₆[2]] + +// func updateVX(state *macState, msg []byte) +TEXT ·updateVX(SB), NOSPLIT, $0 + MOVD state+0(FP), R1 + LMG msg+8(FP), R2, R3 // R2=msg_base, R3=msg_len + + // load EX0, EX1 and EX2 + MOVD $·constants<>(SB), R5 + VLM (R5), EX0, EX2 + + // generate masks + VGMG $(64-24), $63, MOD24 // [0x00ffffff, 0x00ffffff] + VGMG $(64-26), $63, MOD26 // [0x03ffffff, 0x03ffffff] + + // load h (accumulator) and r (key) from state + VZERO T_1 // [0, 0] + VL 0(R1), T_0 // [h₆₄[0], h₆₄[1]] + VLEG $0, 16(R1), T_1 // [h₆₄[2], 0] + VL 24(R1), T_2 // [r₆₄[0], r₆₄[1]] + VPDI $0, T_0, T_2, T_3 // [h₆₄[0], r₆₄[0]] + VPDI $5, T_0, T_2, T_4 // [h₆₄[1], r₆₄[1]] + + // unpack h and r into 26-bit limbs + // note: h₆₄[2] may have the low 3 bits set, so h₂₆[4] is a 27-bit value + VN MOD26, T_3, H_0 // [h₂₆[0], r₂₆[0]] + VZERO H_1 // [0, 0] + VZERO H_3 // [0, 0] + VGMG $(64-12-14), $(63-12), T_0 // [0x03fff000, 0x03fff000] - 26-bit mask with low 12 bits masked out + VESLG $24, T_1, T_1 // [h₆₄[2]<<24, 0] + VERIMG $-26&63, T_3, MOD26, H_1 // [h₂₆[1], r₂₆[1]] + VESRLG $+52&63, T_3, H_2 // [h₂₆[2], r₂₆[2]] - low 12 bits only + VERIMG $-14&63, T_4, MOD26, H_3 // [h₂₆[1], r₂₆[1]] + VESRLG $40, T_4, H_4 // [h₂₆[4], r₂₆[4]] - low 24 bits only + VERIMG $+12&63, T_4, T_0, H_2 // [h₂₆[2], r₂₆[2]] - complete + VO T_1, H_4, H_4 // [h₂₆[4], r₂₆[4]] - complete + + // replicate r across all 4 vector elements + VREPF $3, H_0, R_0 // [r₂₆[0], r₂₆[0], r₂₆[0], r₂₆[0]] + VREPF $3, H_1, R_1 // [r₂₆[1], r₂₆[1], r₂₆[1], r₂₆[1]] + VREPF $3, H_2, R_2 // [r₂₆[2], r₂₆[2], r₂₆[2], r₂₆[2]] + VREPF $3, H_3, R_3 // [r₂₆[3], r₂₆[3], r₂₆[3], r₂₆[3]] + VREPF $3, H_4, R_4 // [r₂₆[4], r₂₆[4], r₂₆[4], r₂₆[4]] + + // zero out lane 1 of h + VLEIG $1, $0, H_0 // [h₂₆[0], 0] + VLEIG $1, $0, H_1 // [h₂₆[1], 0] + VLEIG $1, $0, H_2 // [h₂₆[2], 0] + VLEIG $1, $0, H_3 // [h₂₆[3], 0] + VLEIG $1, $0, H_4 // [h₂₆[4], 0] + + // calculate 5r (ignore least significant limb) + VREPIF $5, T_0 + VMLF T_0, R_1, R5_1 // [5r₂₆[1], 5r₂₆[1], 5r₂₆[1], 5r₂₆[1]] + VMLF T_0, R_2, R5_2 // [5r₂₆[2], 5r₂₆[2], 5r₂₆[2], 5r₂₆[2]] + VMLF T_0, R_3, R5_3 // [5r₂₆[3], 5r₂₆[3], 5r₂₆[3], 5r₂₆[3]] + VMLF T_0, R_4, R5_4 // [5r₂₆[4], 5r₂₆[4], 5r₂₆[4], 5r₂₆[4]] + + // skip r² calculation if we are only calculating one block + CMPBLE R3, $16, skip + + // calculate r² + MULTIPLY(R_0, R_1, R_2, R_3, R_4, R_0, R_1, R_2, R_3, R_4, R5_1, R5_2, R5_3, R5_4, M_0, M_1, M_2, M_3, M_4) + REDUCE(M_0, M_1, M_2, M_3, M_4) + VGBM $0x0f0f, T_0 + VERIMG $0, M_0, T_0, R_0 // [r₂₆[0], r²₂₆[0], r₂₆[0], r²₂₆[0]] + VERIMG $0, M_1, T_0, R_1 // [r₂₆[1], r²₂₆[1], r₂₆[1], r²₂₆[1]] + VERIMG $0, M_2, T_0, R_2 // [r₂₆[2], r²₂₆[2], r₂₆[2], r²₂₆[2]] + VERIMG $0, M_3, T_0, R_3 // [r₂₆[3], r²₂₆[3], r₂₆[3], r²₂₆[3]] + VERIMG $0, M_4, T_0, R_4 // [r₂₆[4], r²₂₆[4], r₂₆[4], r²₂₆[4]] + + // calculate 5r² (ignore least significant limb) + VREPIF $5, T_0 + VMLF T_0, R_1, R5_1 // [5r₂₆[1], 5r²₂₆[1], 5r₂₆[1], 5r²₂₆[1]] + VMLF T_0, R_2, R5_2 // [5r₂₆[2], 5r²₂₆[2], 5r₂₆[2], 5r²₂₆[2]] + VMLF T_0, R_3, R5_3 // [5r₂₆[3], 5r²₂₆[3], 5r₂₆[3], 5r²₂₆[3]] + VMLF T_0, R_4, R5_4 // [5r₂₆[4], 5r²₂₆[4], 5r₂₆[4], 5r²₂₆[4]] + +loop: + CMPBLE R3, $32, b2 // 2 or fewer blocks remaining, need to change key coefficients + + // load next 2 blocks from message + VLM (R2), T_0, T_1 + + // update message slice + SUB $32, R3 + MOVD $32(R2), R2 + + // unpack message blocks into 26-bit big-endian limbs + EXPAND(T_0, T_1, M_0, M_1, M_2, M_3, M_4) + + // add 2¹²⁸ to each message block value + VLEIB $4, $1, M_4 + VLEIB $12, $1, M_4 + +multiply: + // accumulate the incoming message + VAG H_0, M_0, M_0 + VAG H_3, M_3, M_3 + VAG H_1, M_1, M_1 + VAG H_4, M_4, M_4 + VAG H_2, M_2, M_2 + + // multiply the accumulator by the key coefficient + MULTIPLY(M_0, M_1, M_2, M_3, M_4, R_0, R_1, R_2, R_3, R_4, R5_1, R5_2, R5_3, R5_4, H_0, H_1, H_2, H_3, H_4) + + // carry and partially reduce the partial products + REDUCE(H_0, H_1, H_2, H_3, H_4) + + CMPBNE R3, $0, loop + +finish: + // sum lane 0 and lane 1 and put the result in lane 1 + VZERO T_0 + VSUMQG H_0, T_0, H_0 + VSUMQG H_3, T_0, H_3 + VSUMQG H_1, T_0, H_1 + VSUMQG H_4, T_0, H_4 + VSUMQG H_2, T_0, H_2 + + // reduce again after summation + // TODO(mundaym): there might be a more efficient way to do this + // now that we only have 1 active lane. For example, we could + // simultaneously pack the values as we reduce them. + REDUCE(H_0, H_1, H_2, H_3, H_4) + + // carry h[1] through to h[4] so that only h[4] can exceed 2²⁶ - 1 + // TODO(mundaym): in testing this final carry was unnecessary. + // Needs a proof before it can be removed though. + VESRLG $26, H_1, T_1 + VN MOD26, H_1, H_1 + VAQ T_1, H_2, H_2 + VESRLG $26, H_2, T_2 + VN MOD26, H_2, H_2 + VAQ T_2, H_3, H_3 + VESRLG $26, H_3, T_3 + VN MOD26, H_3, H_3 + VAQ T_3, H_4, H_4 + + // h is now < 2(2¹³⁰ - 5) + // Pack each lane in h₂₆[0:4] into h₁₂₈[0:1]. + VESLG $26, H_1, H_1 + VESLG $26, H_3, H_3 + VO H_0, H_1, H_0 + VO H_2, H_3, H_2 + VESLG $4, H_2, H_2 + VLEIB $7, $48, H_1 + VSLB H_1, H_2, H_2 + VO H_0, H_2, H_0 + VLEIB $7, $104, H_1 + VSLB H_1, H_4, H_3 + VO H_3, H_0, H_0 + VLEIB $7, $24, H_1 + VSRLB H_1, H_4, H_1 + + // update state + VSTEG $1, H_0, 0(R1) + VSTEG $0, H_0, 8(R1) + VSTEG $1, H_1, 16(R1) + RET + +b2: // 2 or fewer blocks remaining + CMPBLE R3, $16, b1 + + // Load the 2 remaining blocks (17-32 bytes remaining). + MOVD $-17(R3), R0 // index of final byte to load modulo 16 + VL (R2), T_0 // load full 16 byte block + VLL R0, 16(R2), T_1 // load final (possibly partial) block and pad with zeros to 16 bytes + + // The Poly1305 algorithm requires that a 1 bit be appended to + // each message block. If the final block is less than 16 bytes + // long then it is easiest to insert the 1 before the message + // block is split into 26-bit limbs. If, on the other hand, the + // final message block is 16 bytes long then we append the 1 bit + // after expansion as normal. + MOVBZ $1, R0 + MOVD $-16(R3), R3 // index of byte in last block to insert 1 at (could be 16) + CMPBEQ R3, $16, 2(PC) // skip the insertion if the final block is 16 bytes long + VLVGB R3, R0, T_1 // insert 1 into the byte at index R3 + + // Split both blocks into 26-bit limbs in the appropriate lanes. + EXPAND(T_0, T_1, M_0, M_1, M_2, M_3, M_4) + + // Append a 1 byte to the end of the second to last block. + VLEIB $4, $1, M_4 + + // Append a 1 byte to the end of the last block only if it is a + // full 16 byte block. + CMPBNE R3, $16, 2(PC) + VLEIB $12, $1, M_4 + + // Finally, set up the coefficients for the final multiplication. + // We have previously saved r and 5r in the 32-bit even indexes + // of the R_[0-4] and R5_[1-4] coefficient registers. + // + // We want lane 0 to be multiplied by r² so that can be kept the + // same. We want lane 1 to be multiplied by r so we need to move + // the saved r value into the 32-bit odd index in lane 1 by + // rotating the 64-bit lane by 32. + VGBM $0x00ff, T_0 // [0, 0xffffffffffffffff] - mask lane 1 only + VERIMG $32, R_0, T_0, R_0 // [_, r²₂₆[0], _, r₂₆[0]] + VERIMG $32, R_1, T_0, R_1 // [_, r²₂₆[1], _, r₂₆[1]] + VERIMG $32, R_2, T_0, R_2 // [_, r²₂₆[2], _, r₂₆[2]] + VERIMG $32, R_3, T_0, R_3 // [_, r²₂₆[3], _, r₂₆[3]] + VERIMG $32, R_4, T_0, R_4 // [_, r²₂₆[4], _, r₂₆[4]] + VERIMG $32, R5_1, T_0, R5_1 // [_, 5r²₂₆[1], _, 5r₂₆[1]] + VERIMG $32, R5_2, T_0, R5_2 // [_, 5r²₂₆[2], _, 5r₂₆[2]] + VERIMG $32, R5_3, T_0, R5_3 // [_, 5r²₂₆[3], _, 5r₂₆[3]] + VERIMG $32, R5_4, T_0, R5_4 // [_, 5r²₂₆[4], _, 5r₂₆[4]] + + MOVD $0, R3 + BR multiply + +skip: + CMPBEQ R3, $0, finish + +b1: // 1 block remaining + + // Load the final block (1-16 bytes). This will be placed into + // lane 0. + MOVD $-1(R3), R0 + VLL R0, (R2), T_0 // pad to 16 bytes with zeros + + // The Poly1305 algorithm requires that a 1 bit be appended to + // each message block. If the final block is less than 16 bytes + // long then it is easiest to insert the 1 before the message + // block is split into 26-bit limbs. If, on the other hand, the + // final message block is 16 bytes long then we append the 1 bit + // after expansion as normal. + MOVBZ $1, R0 + CMPBEQ R3, $16, 2(PC) + VLVGB R3, R0, T_0 + + // Set the message block in lane 1 to the value 0 so that it + // can be accumulated without affecting the final result. + VZERO T_1 + + // Split the final message block into 26-bit limbs in lane 0. + // Lane 1 will be contain 0. + EXPAND(T_0, T_1, M_0, M_1, M_2, M_3, M_4) + + // Append a 1 byte to the end of the last block only if it is a + // full 16 byte block. + CMPBNE R3, $16, 2(PC) + VLEIB $4, $1, M_4 + + // We have previously saved r and 5r in the 32-bit even indexes + // of the R_[0-4] and R5_[1-4] coefficient registers. + // + // We want lane 0 to be multiplied by r so we need to move the + // saved r value into the 32-bit odd index in lane 0. We want + // lane 1 to be set to the value 1. This makes multiplication + // a no-op. We do this by setting lane 1 in every register to 0 + // and then just setting the 32-bit index 3 in R_0 to 1. + VZERO T_0 + MOVD $0, R0 + MOVD $0x10111213, R12 + VLVGP R12, R0, T_1 // [_, 0x10111213, _, 0x00000000] + VPERM T_0, R_0, T_1, R_0 // [_, r₂₆[0], _, 0] + VPERM T_0, R_1, T_1, R_1 // [_, r₂₆[1], _, 0] + VPERM T_0, R_2, T_1, R_2 // [_, r₂₆[2], _, 0] + VPERM T_0, R_3, T_1, R_3 // [_, r₂₆[3], _, 0] + VPERM T_0, R_4, T_1, R_4 // [_, r₂₆[4], _, 0] + VPERM T_0, R5_1, T_1, R5_1 // [_, 5r₂₆[1], _, 0] + VPERM T_0, R5_2, T_1, R5_2 // [_, 5r₂₆[2], _, 0] + VPERM T_0, R5_3, T_1, R5_3 // [_, 5r₂₆[3], _, 0] + VPERM T_0, R5_4, T_1, R5_4 // [_, 5r₂₆[4], _, 0] + + // Set the value of lane 1 to be 1. + VLEIF $3, $1, R_0 // [_, r₂₆[0], _, 1] + + MOVD $0, R3 + BR multiply diff --git a/tests/vendor/golang.org/x/crypto/ssh/buffer.go b/tests/vendor/golang.org/x/crypto/ssh/buffer.go new file mode 100644 index 000000000..1ab07d078 --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/ssh/buffer.go @@ -0,0 +1,97 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "io" + "sync" +) + +// buffer provides a linked list buffer for data exchange +// between producer and consumer. Theoretically the buffer is +// of unlimited capacity as it does no allocation of its own. +type buffer struct { + // protects concurrent access to head, tail and closed + *sync.Cond + + head *element // the buffer that will be read first + tail *element // the buffer that will be read last + + closed bool +} + +// An element represents a single link in a linked list. +type element struct { + buf []byte + next *element +} + +// newBuffer returns an empty buffer that is not closed. +func newBuffer() *buffer { + e := new(element) + b := &buffer{ + Cond: newCond(), + head: e, + tail: e, + } + return b +} + +// write makes buf available for Read to receive. +// buf must not be modified after the call to write. +func (b *buffer) write(buf []byte) { + b.Cond.L.Lock() + e := &element{buf: buf} + b.tail.next = e + b.tail = e + b.Cond.Signal() + b.Cond.L.Unlock() +} + +// eof closes the buffer. Reads from the buffer once all +// the data has been consumed will receive io.EOF. +func (b *buffer) eof() { + b.Cond.L.Lock() + b.closed = true + b.Cond.Signal() + b.Cond.L.Unlock() +} + +// Read reads data from the internal buffer in buf. Reads will block +// if no data is available, or until the buffer is closed. +func (b *buffer) Read(buf []byte) (n int, err error) { + b.Cond.L.Lock() + defer b.Cond.L.Unlock() + + for len(buf) > 0 { + // if there is data in b.head, copy it + if len(b.head.buf) > 0 { + r := copy(buf, b.head.buf) + buf, b.head.buf = buf[r:], b.head.buf[r:] + n += r + continue + } + // if there is a next buffer, make it the head + if len(b.head.buf) == 0 && b.head != b.tail { + b.head = b.head.next + continue + } + + // if at least one byte has been copied, return + if n > 0 { + break + } + + // if nothing was read, and there is nothing outstanding + // check to see if the buffer is closed. + if b.closed { + err = io.EOF + break + } + // out of buffers, wait for producer + b.Cond.Wait() + } + return +} diff --git a/tests/vendor/golang.org/x/crypto/ssh/certs.go b/tests/vendor/golang.org/x/crypto/ssh/certs.go new file mode 100644 index 000000000..a3dc629c6 --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/ssh/certs.go @@ -0,0 +1,616 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "bytes" + "errors" + "fmt" + "io" + "net" + "sort" + "time" +) + +// Certificate algorithm names from [PROTOCOL.certkeys]. These values can appear +// in Certificate.Type, PublicKey.Type, and ClientConfig.HostKeyAlgorithms. +// Unlike key algorithm names, these are not passed to AlgorithmSigner nor +// returned by MultiAlgorithmSigner and don't appear in the Signature.Format +// field. +const ( + CertAlgoRSAv01 = "ssh-rsa-cert-v01@openssh.com" + // Deprecated: DSA is only supported at insecure key sizes, and was removed + // from major implementations. + CertAlgoDSAv01 = InsecureCertAlgoDSAv01 + // Deprecated: DSA is only supported at insecure key sizes, and was removed + // from major implementations. + InsecureCertAlgoDSAv01 = "ssh-dss-cert-v01@openssh.com" + CertAlgoECDSA256v01 = "ecdsa-sha2-nistp256-cert-v01@openssh.com" + CertAlgoECDSA384v01 = "ecdsa-sha2-nistp384-cert-v01@openssh.com" + CertAlgoECDSA521v01 = "ecdsa-sha2-nistp521-cert-v01@openssh.com" + CertAlgoSKECDSA256v01 = "sk-ecdsa-sha2-nistp256-cert-v01@openssh.com" + CertAlgoED25519v01 = "ssh-ed25519-cert-v01@openssh.com" + CertAlgoSKED25519v01 = "sk-ssh-ed25519-cert-v01@openssh.com" + + // CertAlgoRSASHA256v01 and CertAlgoRSASHA512v01 can't appear as a + // Certificate.Type (or PublicKey.Type), but only in + // ClientConfig.HostKeyAlgorithms. + CertAlgoRSASHA256v01 = "rsa-sha2-256-cert-v01@openssh.com" + CertAlgoRSASHA512v01 = "rsa-sha2-512-cert-v01@openssh.com" +) + +const ( + // Deprecated: use CertAlgoRSAv01. + CertSigAlgoRSAv01 = CertAlgoRSAv01 + // Deprecated: use CertAlgoRSASHA256v01. + CertSigAlgoRSASHA2256v01 = CertAlgoRSASHA256v01 + // Deprecated: use CertAlgoRSASHA512v01. + CertSigAlgoRSASHA2512v01 = CertAlgoRSASHA512v01 +) + +// Certificate types distinguish between host and user +// certificates. The values can be set in the CertType field of +// Certificate. +const ( + UserCert = 1 + HostCert = 2 +) + +// Signature represents a cryptographic signature. +type Signature struct { + Format string + Blob []byte + Rest []byte `ssh:"rest"` +} + +// CertTimeInfinity can be used for OpenSSHCertV01.ValidBefore to indicate that +// a certificate does not expire. +const CertTimeInfinity = 1<<64 - 1 + +// An Certificate represents an OpenSSH certificate as defined in +// [PROTOCOL.certkeys]?rev=1.8. The Certificate type implements the +// PublicKey interface, so it can be unmarshaled using +// ParsePublicKey. +type Certificate struct { + Nonce []byte + Key PublicKey + Serial uint64 + CertType uint32 + KeyId string + ValidPrincipals []string + ValidAfter uint64 + ValidBefore uint64 + Permissions + Reserved []byte + SignatureKey PublicKey + Signature *Signature +} + +// genericCertData holds the key-independent part of the certificate data. +// Overall, certificates contain an nonce, public key fields and +// key-independent fields. +type genericCertData struct { + Serial uint64 + CertType uint32 + KeyId string + ValidPrincipals []byte + ValidAfter uint64 + ValidBefore uint64 + CriticalOptions []byte + Extensions []byte + Reserved []byte + SignatureKey []byte + Signature []byte +} + +func marshalStringList(namelist []string) []byte { + var to []byte + for _, name := range namelist { + s := struct{ N string }{name} + to = append(to, Marshal(&s)...) + } + return to +} + +type optionsTuple struct { + Key string + Value []byte +} + +type optionsTupleValue struct { + Value string +} + +// serialize a map of critical options or extensions +// issue #10569 - per [PROTOCOL.certkeys] and SSH implementation, +// we need two length prefixes for a non-empty string value +func marshalTuples(tups map[string]string) []byte { + keys := make([]string, 0, len(tups)) + for key := range tups { + keys = append(keys, key) + } + sort.Strings(keys) + + var ret []byte + for _, key := range keys { + s := optionsTuple{Key: key} + if value := tups[key]; len(value) > 0 { + s.Value = Marshal(&optionsTupleValue{value}) + } + ret = append(ret, Marshal(&s)...) + } + return ret +} + +// issue #10569 - per [PROTOCOL.certkeys] and SSH implementation, +// we need two length prefixes for a non-empty option value +func parseTuples(in []byte) (map[string]string, error) { + tups := map[string]string{} + var lastKey string + var haveLastKey bool + + for len(in) > 0 { + var key, val, extra []byte + var ok bool + + if key, in, ok = parseString(in); !ok { + return nil, errShortRead + } + keyStr := string(key) + // according to [PROTOCOL.certkeys], the names must be in + // lexical order. + if haveLastKey && keyStr <= lastKey { + return nil, fmt.Errorf("ssh: certificate options are not in lexical order") + } + lastKey, haveLastKey = keyStr, true + // the next field is a data field, which if non-empty has a string embedded + if val, in, ok = parseString(in); !ok { + return nil, errShortRead + } + if len(val) > 0 { + val, extra, ok = parseString(val) + if !ok { + return nil, errShortRead + } + if len(extra) > 0 { + return nil, fmt.Errorf("ssh: unexpected trailing data after certificate option value") + } + tups[keyStr] = string(val) + } else { + tups[keyStr] = "" + } + } + return tups, nil +} + +func parseCert(in []byte, privAlgo string) (*Certificate, error) { + nonce, rest, ok := parseString(in) + if !ok { + return nil, errShortRead + } + + key, rest, err := parsePubKey(rest, privAlgo) + if err != nil { + return nil, err + } + + var g genericCertData + if err := Unmarshal(rest, &g); err != nil { + return nil, err + } + + c := &Certificate{ + Nonce: nonce, + Key: key, + Serial: g.Serial, + CertType: g.CertType, + KeyId: g.KeyId, + ValidAfter: g.ValidAfter, + ValidBefore: g.ValidBefore, + } + + for principals := g.ValidPrincipals; len(principals) > 0; { + principal, rest, ok := parseString(principals) + if !ok { + return nil, errShortRead + } + c.ValidPrincipals = append(c.ValidPrincipals, string(principal)) + principals = rest + } + + c.CriticalOptions, err = parseTuples(g.CriticalOptions) + if err != nil { + return nil, err + } + c.Extensions, err = parseTuples(g.Extensions) + if err != nil { + return nil, err + } + c.Reserved = g.Reserved + k, err := ParsePublicKey(g.SignatureKey) + if err != nil { + return nil, err + } + + c.SignatureKey = k + c.Signature, rest, ok = parseSignatureBody(g.Signature) + if !ok || len(rest) > 0 { + return nil, errors.New("ssh: signature parse error") + } + + return c, nil +} + +type openSSHCertSigner struct { + pub *Certificate + signer Signer +} + +type algorithmOpenSSHCertSigner struct { + *openSSHCertSigner + algorithmSigner AlgorithmSigner +} + +// NewCertSigner returns a Signer that signs with the given Certificate, whose +// private key is held by signer. It returns an error if the public key in cert +// doesn't match the key used by signer. +func NewCertSigner(cert *Certificate, signer Signer) (Signer, error) { + if !bytes.Equal(cert.Key.Marshal(), signer.PublicKey().Marshal()) { + return nil, errors.New("ssh: signer and cert have different public key") + } + + switch s := signer.(type) { + case MultiAlgorithmSigner: + return &multiAlgorithmSigner{ + AlgorithmSigner: &algorithmOpenSSHCertSigner{ + &openSSHCertSigner{cert, signer}, s}, + supportedAlgorithms: s.Algorithms(), + }, nil + case AlgorithmSigner: + return &algorithmOpenSSHCertSigner{ + &openSSHCertSigner{cert, signer}, s}, nil + default: + return &openSSHCertSigner{cert, signer}, nil + } +} + +func (s *openSSHCertSigner) Sign(rand io.Reader, data []byte) (*Signature, error) { + return s.signer.Sign(rand, data) +} + +func (s *openSSHCertSigner) PublicKey() PublicKey { + return s.pub +} + +func (s *algorithmOpenSSHCertSigner) SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error) { + return s.algorithmSigner.SignWithAlgorithm(rand, data, algorithm) +} + +const sourceAddressCriticalOption = "source-address" + +// CertChecker does the work of verifying a certificate. Its methods +// can be plugged into ClientConfig.HostKeyCallback and +// ServerConfig.PublicKeyCallback. For the CertChecker to work, +// minimally, the IsAuthority callback should be set. +type CertChecker struct { + // SupportedCriticalOptions lists the CriticalOptions that the + // server application layer understands. These are only used + // for user certificates. + SupportedCriticalOptions []string + + // IsUserAuthority should return true if the key is recognized as an + // authority for the given user certificate. This allows for + // certificates to be signed by other certificates. This must be set + // if this CertChecker will be checking user certificates. + IsUserAuthority func(auth PublicKey) bool + + // IsHostAuthority should report whether the key is recognized as + // an authority for this host. This allows for certificates to be + // signed by other keys, and for those other keys to only be valid + // signers for particular hostnames. This must be set if this + // CertChecker will be checking host certificates. + IsHostAuthority func(auth PublicKey, address string) bool + + // Clock is used for verifying time stamps. If nil, time.Now + // is used. + Clock func() time.Time + + // UserKeyFallback is called when CertChecker.Authenticate encounters a + // public key that is not a certificate. It must implement validation + // of user keys or else, if nil, all such keys are rejected. + UserKeyFallback func(conn ConnMetadata, key PublicKey) (*Permissions, error) + + // HostKeyFallback is called when CertChecker.CheckHostKey encounters a + // public key that is not a certificate. It must implement host key + // validation or else, if nil, all such keys are rejected. + HostKeyFallback HostKeyCallback + + // IsRevoked is called for each certificate so that revocation checking + // can be implemented. It should return true if the given certificate + // is revoked and false otherwise. If nil, no certificates are + // considered to have been revoked. + IsRevoked func(cert *Certificate) bool +} + +// CheckHostKey checks a host key certificate. This method can be +// plugged into ClientConfig.HostKeyCallback. +func (c *CertChecker) CheckHostKey(addr string, remote net.Addr, key PublicKey) error { + cert, ok := key.(*Certificate) + if !ok { + if c.HostKeyFallback != nil { + return c.HostKeyFallback(addr, remote, key) + } + return errors.New("ssh: non-certificate host key") + } + if cert.CertType != HostCert { + return fmt.Errorf("ssh: certificate presented as a host key has type %d", cert.CertType) + } + if !c.IsHostAuthority(cert.SignatureKey, addr) { + return fmt.Errorf("ssh: no authorities for hostname: %v", addr) + } + + hostname, _, err := net.SplitHostPort(addr) + if err != nil { + return err + } + + // Pass hostname only as principal for host certificates (consistent with OpenSSH) + return c.CheckCert(hostname, cert) +} + +// Authenticate checks a user certificate. Authenticate can be used as +// a value for ServerConfig.PublicKeyCallback. +func (c *CertChecker) Authenticate(conn ConnMetadata, pubKey PublicKey) (*Permissions, error) { + cert, ok := pubKey.(*Certificate) + if !ok { + if c.UserKeyFallback != nil { + return c.UserKeyFallback(conn, pubKey) + } + return nil, errors.New("ssh: normal key pairs not accepted") + } + + if cert.CertType != UserCert { + return nil, fmt.Errorf("ssh: cert has type %d", cert.CertType) + } + if !c.IsUserAuthority(cert.SignatureKey) { + return nil, fmt.Errorf("ssh: certificate signed by unrecognized authority") + } + + if err := c.CheckCert(conn.User(), cert); err != nil { + return nil, err + } + + return &cert.Permissions, nil +} + +// CheckCert checks CriticalOptions, ValidPrincipals, revocation, timestamp and +// the signature of the certificate. +func (c *CertChecker) CheckCert(principal string, cert *Certificate) error { + if c.IsRevoked != nil && c.IsRevoked(cert) { + return fmt.Errorf("ssh: certificate serial %d revoked", cert.Serial) + } + + for opt := range cert.CriticalOptions { + // sourceAddressCriticalOption will be enforced by + // serverAuthenticate + if opt == sourceAddressCriticalOption { + continue + } + + found := false + for _, supp := range c.SupportedCriticalOptions { + if supp == opt { + found = true + break + } + } + if !found { + return fmt.Errorf("ssh: unsupported critical option %q in certificate", opt) + } + } + + if len(cert.ValidPrincipals) > 0 { + // By default, certs are valid for all users/hosts. + found := false + for _, p := range cert.ValidPrincipals { + if p == principal { + found = true + break + } + } + if !found { + return fmt.Errorf("ssh: principal %q not in the set of valid principals for given certificate: %q", principal, cert.ValidPrincipals) + } + } + + clock := c.Clock + if clock == nil { + clock = time.Now + } + + unixNow := clock().Unix() + if after := int64(cert.ValidAfter); after < 0 || unixNow < int64(cert.ValidAfter) { + return fmt.Errorf("ssh: cert is not yet valid") + } + if before := int64(cert.ValidBefore); cert.ValidBefore != uint64(CertTimeInfinity) && (unixNow >= before || before < 0) { + return fmt.Errorf("ssh: cert has expired") + } + if err := cert.SignatureKey.Verify(cert.bytesForSigning(), cert.Signature); err != nil { + return fmt.Errorf("ssh: certificate signature does not verify") + } + + return nil +} + +// SignCert signs the certificate with an authority, setting the Nonce, +// SignatureKey, and Signature fields. If the authority implements the +// MultiAlgorithmSigner interface the first algorithm in the list is used. This +// is useful if you want to sign with a specific algorithm. +func (c *Certificate) SignCert(rand io.Reader, authority Signer) error { + c.Nonce = make([]byte, 32) + if _, err := io.ReadFull(rand, c.Nonce); err != nil { + return err + } + c.SignatureKey = authority.PublicKey() + + if v, ok := authority.(MultiAlgorithmSigner); ok { + if len(v.Algorithms()) == 0 { + return errors.New("the provided authority has no signature algorithm") + } + // Use the first algorithm in the list. + sig, err := v.SignWithAlgorithm(rand, c.bytesForSigning(), v.Algorithms()[0]) + if err != nil { + return err + } + c.Signature = sig + return nil + } else if v, ok := authority.(AlgorithmSigner); ok && v.PublicKey().Type() == KeyAlgoRSA { + // Default to KeyAlgoRSASHA512 for ssh-rsa signers. + // TODO: consider using KeyAlgoRSASHA256 as default. + sig, err := v.SignWithAlgorithm(rand, c.bytesForSigning(), KeyAlgoRSASHA512) + if err != nil { + return err + } + c.Signature = sig + return nil + } + + sig, err := authority.Sign(rand, c.bytesForSigning()) + if err != nil { + return err + } + c.Signature = sig + return nil +} + +// certKeyAlgoNames is a mapping from known certificate algorithm names to the +// corresponding public key signature algorithm. +// +// This map must be kept in sync with the one in agent/client.go. +var certKeyAlgoNames = map[string]string{ + CertAlgoRSAv01: KeyAlgoRSA, + CertAlgoRSASHA256v01: KeyAlgoRSASHA256, + CertAlgoRSASHA512v01: KeyAlgoRSASHA512, + InsecureCertAlgoDSAv01: InsecureKeyAlgoDSA, + CertAlgoECDSA256v01: KeyAlgoECDSA256, + CertAlgoECDSA384v01: KeyAlgoECDSA384, + CertAlgoECDSA521v01: KeyAlgoECDSA521, + CertAlgoSKECDSA256v01: KeyAlgoSKECDSA256, + CertAlgoED25519v01: KeyAlgoED25519, + CertAlgoSKED25519v01: KeyAlgoSKED25519, +} + +// underlyingAlgo returns the signature algorithm associated with algo (which is +// an advertised or negotiated public key or host key algorithm). These are +// usually the same, except for certificate algorithms. +func underlyingAlgo(algo string) string { + if a, ok := certKeyAlgoNames[algo]; ok { + return a + } + return algo +} + +// certificateAlgo returns the certificate algorithms that uses the provided +// underlying signature algorithm. +func certificateAlgo(algo string) (certAlgo string, ok bool) { + for certName, algoName := range certKeyAlgoNames { + if algoName == algo { + return certName, true + } + } + return "", false +} + +func (cert *Certificate) bytesForSigning() []byte { + c2 := *cert + c2.Signature = nil + out := c2.Marshal() + // Drop trailing signature length. + return out[:len(out)-4] +} + +// Marshal serializes c into OpenSSH's wire format. It is part of the +// PublicKey interface. +func (c *Certificate) Marshal() []byte { + generic := genericCertData{ + Serial: c.Serial, + CertType: c.CertType, + KeyId: c.KeyId, + ValidPrincipals: marshalStringList(c.ValidPrincipals), + ValidAfter: uint64(c.ValidAfter), + ValidBefore: uint64(c.ValidBefore), + CriticalOptions: marshalTuples(c.CriticalOptions), + Extensions: marshalTuples(c.Extensions), + Reserved: c.Reserved, + SignatureKey: c.SignatureKey.Marshal(), + } + if c.Signature != nil { + generic.Signature = Marshal(c.Signature) + } + genericBytes := Marshal(&generic) + keyBytes := c.Key.Marshal() + _, keyBytes, _ = parseString(keyBytes) + prefix := Marshal(&struct { + Name string + Nonce []byte + Key []byte `ssh:"rest"` + }{c.Type(), c.Nonce, keyBytes}) + + result := make([]byte, 0, len(prefix)+len(genericBytes)) + result = append(result, prefix...) + result = append(result, genericBytes...) + return result +} + +// Type returns the certificate algorithm name. It is part of the PublicKey interface. +func (c *Certificate) Type() string { + certName, ok := certificateAlgo(c.Key.Type()) + if !ok { + panic("unknown certificate type for key type " + c.Key.Type()) + } + return certName +} + +// Verify verifies a signature against the certificate's public +// key. It is part of the PublicKey interface. +func (c *Certificate) Verify(data []byte, sig *Signature) error { + return c.Key.Verify(data, sig) +} + +func parseSignatureBody(in []byte) (out *Signature, rest []byte, ok bool) { + format, in, ok := parseString(in) + if !ok { + return + } + + out = &Signature{ + Format: string(format), + } + + if out.Blob, in, ok = parseString(in); !ok { + return + } + + switch out.Format { + case KeyAlgoSKECDSA256, CertAlgoSKECDSA256v01, KeyAlgoSKED25519, CertAlgoSKED25519v01: + out.Rest = in + return out, nil, ok + } + + return out, in, ok +} + +func parseSignature(in []byte) (out *Signature, rest []byte, ok bool) { + sigBytes, rest, ok := parseString(in) + if !ok { + return + } + + out, trailing, ok := parseSignatureBody(sigBytes) + if !ok || len(trailing) > 0 { + return nil, nil, false + } + return +} diff --git a/tests/vendor/golang.org/x/crypto/ssh/channel.go b/tests/vendor/golang.org/x/crypto/ssh/channel.go new file mode 100644 index 000000000..cc0bb7ab6 --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/ssh/channel.go @@ -0,0 +1,645 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "encoding/binary" + "errors" + "fmt" + "io" + "log" + "sync" +) + +const ( + minPacketLength = 9 + // channelMaxPacket contains the maximum number of bytes that will be + // sent in a single packet. As per RFC 4253, section 6.1, 32k is also + // the minimum. + channelMaxPacket = 1 << 15 + // We follow OpenSSH here. + channelWindowSize = 64 * channelMaxPacket +) + +// NewChannel represents an incoming request to a channel. It must either be +// accepted for use by calling Accept, or rejected by calling Reject. +type NewChannel interface { + // Accept accepts the channel creation request. It returns the Channel + // and a Go channel containing SSH requests. The Go channel must be + // serviced otherwise the Channel will hang. + Accept() (Channel, <-chan *Request, error) + + // Reject rejects the channel creation request. After calling + // this, no other methods on the Channel may be called. + Reject(reason RejectionReason, message string) error + + // ChannelType returns the type of the channel, as supplied by the + // client. + ChannelType() string + + // ExtraData returns the arbitrary payload for this channel, as supplied + // by the client. This data is specific to the channel type. + ExtraData() []byte +} + +// A Channel is an ordered, reliable, flow-controlled, duplex stream +// that is multiplexed over an SSH connection. +type Channel interface { + // Read reads up to len(data) bytes from the channel. + Read(data []byte) (int, error) + + // Write writes len(data) bytes to the channel. + Write(data []byte) (int, error) + + // Close signals end of channel use. No data may be sent after this + // call. + Close() error + + // CloseWrite signals the end of sending in-band + // data. Requests may still be sent, and the other side may + // still send data + CloseWrite() error + + // SendRequest sends a channel request. If wantReply is true, + // it will wait for a reply and return the result as a + // boolean, otherwise the return value will be false. Channel + // requests are out-of-band messages so they may be sent even + // if the data stream is closed or blocked by flow control. + // If the channel is closed before a reply is returned, io.EOF + // is returned. + SendRequest(name string, wantReply bool, payload []byte) (bool, error) + + // Stderr returns an io.ReadWriter that writes to this channel + // with the extended data type set to stderr. Stderr may + // safely be read and written from a different goroutine than + // Read and Write respectively. + Stderr() io.ReadWriter +} + +// Request is a request sent outside of the normal stream of +// data. Requests can either be specific to an SSH channel, or they +// can be global. +type Request struct { + Type string + WantReply bool + Payload []byte + + ch *channel + mux *mux +} + +// Reply sends a response to a request. It must be called for all requests +// where WantReply is true and is a no-op otherwise. The payload argument is +// ignored for replies to channel-specific requests. +func (r *Request) Reply(ok bool, payload []byte) error { + if !r.WantReply { + return nil + } + + if r.ch == nil { + return r.mux.ackRequest(ok, payload) + } + + return r.ch.ackRequest(ok) +} + +// RejectionReason is an enumeration used when rejecting channel creation +// requests. See RFC 4254, section 5.1. +type RejectionReason uint32 + +const ( + Prohibited RejectionReason = iota + 1 + ConnectionFailed + UnknownChannelType + ResourceShortage +) + +// String converts the rejection reason to human readable form. +func (r RejectionReason) String() string { + switch r { + case Prohibited: + return "administratively prohibited" + case ConnectionFailed: + return "connect failed" + case UnknownChannelType: + return "unknown channel type" + case ResourceShortage: + return "resource shortage" + } + return fmt.Sprintf("unknown reason %d", int(r)) +} + +func min(a uint32, b int) uint32 { + if a < uint32(b) { + return a + } + return uint32(b) +} + +type channelDirection uint8 + +const ( + channelInbound channelDirection = iota + channelOutbound +) + +// channel is an implementation of the Channel interface that works +// with the mux class. +type channel struct { + // R/O after creation + chanType string + extraData []byte + localId, remoteId uint32 + + // maxIncomingPayload and maxRemotePayload are the maximum + // payload sizes of normal and extended data packets for + // receiving and sending, respectively. The wire packet will + // be 9 or 13 bytes larger (excluding encryption overhead). + maxIncomingPayload uint32 + maxRemotePayload uint32 + + mux *mux + + // decided is set to true if an accept or reject message has been sent + // (for outbound channels) or received (for inbound channels). + decided bool + + // direction contains either channelOutbound, for channels created + // locally, or channelInbound, for channels created by the peer. + direction channelDirection + + // Pending internal channel messages. + msg chan interface{} + + // Since requests have no ID, there can be only one request + // with WantReply=true outstanding. This lock is held by a + // goroutine that has such an outgoing request pending. + sentRequestMu sync.Mutex + + incomingRequests chan *Request + + sentEOF bool + + // thread-safe data + remoteWin window + pending *buffer + extPending *buffer + + // windowMu protects myWindow, the flow-control window, and myConsumed, + // the number of bytes consumed since we last increased myWindow + windowMu sync.Mutex + myWindow uint32 + myConsumed uint32 + + // writeMu serializes calls to mux.conn.writePacket() and + // protects sentClose and packetPool. This mutex must be + // different from windowMu, as writePacket can block if there + // is a key exchange pending. + writeMu sync.Mutex + sentClose bool + + // packetPool has a buffer for each extended channel ID to + // save allocations during writes. + packetPool map[uint32][]byte +} + +// writePacket sends a packet. If the packet is a channel close, it updates +// sentClose. This method takes the lock c.writeMu. +func (ch *channel) writePacket(packet []byte) error { + ch.writeMu.Lock() + if ch.sentClose { + ch.writeMu.Unlock() + return io.EOF + } + ch.sentClose = (packet[0] == msgChannelClose) + err := ch.mux.conn.writePacket(packet) + ch.writeMu.Unlock() + return err +} + +func (ch *channel) sendMessage(msg interface{}) error { + if debugMux { + log.Printf("send(%d): %#v", ch.mux.chanList.offset, msg) + } + + p := Marshal(msg) + binary.BigEndian.PutUint32(p[1:], ch.remoteId) + return ch.writePacket(p) +} + +// WriteExtended writes data to a specific extended stream. These streams are +// used, for example, for stderr. +func (ch *channel) WriteExtended(data []byte, extendedCode uint32) (n int, err error) { + if ch.sentEOF { + return 0, io.EOF + } + // 1 byte message type, 4 bytes remoteId, 4 bytes data length + opCode := byte(msgChannelData) + headerLength := uint32(9) + if extendedCode > 0 { + headerLength += 4 + opCode = msgChannelExtendedData + } + + ch.writeMu.Lock() + packet := ch.packetPool[extendedCode] + // We don't remove the buffer from packetPool, so + // WriteExtended calls from different goroutines will be + // flagged as errors by the race detector. + ch.writeMu.Unlock() + + for len(data) > 0 { + space := min(ch.maxRemotePayload, len(data)) + if space, err = ch.remoteWin.reserve(space); err != nil { + return n, err + } + if want := headerLength + space; uint32(cap(packet)) < want { + packet = make([]byte, want) + } else { + packet = packet[:want] + } + + todo := data[:space] + + packet[0] = opCode + binary.BigEndian.PutUint32(packet[1:], ch.remoteId) + if extendedCode > 0 { + binary.BigEndian.PutUint32(packet[5:], uint32(extendedCode)) + } + binary.BigEndian.PutUint32(packet[headerLength-4:], uint32(len(todo))) + copy(packet[headerLength:], todo) + if err = ch.writePacket(packet); err != nil { + return n, err + } + + n += len(todo) + data = data[len(todo):] + } + + ch.writeMu.Lock() + ch.packetPool[extendedCode] = packet + ch.writeMu.Unlock() + + return n, err +} + +func (ch *channel) handleData(packet []byte) error { + headerLen := 9 + isExtendedData := packet[0] == msgChannelExtendedData + if isExtendedData { + headerLen = 13 + } + if len(packet) < headerLen { + // malformed data packet + return parseError(packet[0]) + } + + var extended uint32 + if isExtendedData { + extended = binary.BigEndian.Uint32(packet[5:]) + } + + length := binary.BigEndian.Uint32(packet[headerLen-4 : headerLen]) + if length == 0 { + return nil + } + if length > ch.maxIncomingPayload { + // TODO(hanwen): should send Disconnect? + return errors.New("ssh: incoming packet exceeds maximum payload size") + } + + data := packet[headerLen:] + if length != uint32(len(data)) { + return errors.New("ssh: wrong packet length") + } + + ch.windowMu.Lock() + if ch.myWindow < length { + ch.windowMu.Unlock() + // TODO(hanwen): should send Disconnect with reason? + return errors.New("ssh: remote side wrote too much") + } + ch.myWindow -= length + ch.windowMu.Unlock() + + if extended == 1 { + ch.extPending.write(data) + } else if extended > 0 { + // discard other extended data. + } else { + ch.pending.write(data) + } + return nil +} + +func (c *channel) adjustWindow(adj uint32) error { + c.windowMu.Lock() + // Since myConsumed and myWindow are managed on our side, and can never + // exceed the initial window setting, we don't worry about overflow. + c.myConsumed += adj + var sendAdj uint32 + if (channelWindowSize-c.myWindow > 3*c.maxIncomingPayload) || + (c.myWindow < channelWindowSize/2) { + sendAdj = c.myConsumed + c.myConsumed = 0 + c.myWindow += sendAdj + } + c.windowMu.Unlock() + if sendAdj == 0 { + return nil + } + return c.sendMessage(windowAdjustMsg{ + AdditionalBytes: sendAdj, + }) +} + +func (c *channel) ReadExtended(data []byte, extended uint32) (n int, err error) { + switch extended { + case 1: + n, err = c.extPending.Read(data) + case 0: + n, err = c.pending.Read(data) + default: + return 0, fmt.Errorf("ssh: extended code %d unimplemented", extended) + } + + if n > 0 { + err = c.adjustWindow(uint32(n)) + // sendWindowAdjust can return io.EOF if the remote + // peer has closed the connection, however we want to + // defer forwarding io.EOF to the caller of Read until + // the buffer has been drained. + if n > 0 && err == io.EOF { + err = nil + } + } + + return n, err +} + +func (c *channel) close() { + c.pending.eof() + c.extPending.eof() + close(c.msg) + close(c.incomingRequests) + c.writeMu.Lock() + // This is not necessary for a normal channel teardown, but if + // there was another error, it is. + c.sentClose = true + c.writeMu.Unlock() + // Unblock writers. + c.remoteWin.close() +} + +// responseMessageReceived is called when a success or failure message is +// received on a channel to check that such a message is reasonable for the +// given channel. +func (ch *channel) responseMessageReceived() error { + if ch.direction == channelInbound { + return errors.New("ssh: channel response message received on inbound channel") + } + if ch.decided { + return errors.New("ssh: duplicate response received for channel") + } + ch.decided = true + return nil +} + +func (ch *channel) handlePacket(packet []byte) error { + switch packet[0] { + case msgChannelData, msgChannelExtendedData: + return ch.handleData(packet) + case msgChannelClose: + ch.sendMessage(channelCloseMsg{PeersID: ch.remoteId}) + ch.mux.chanList.remove(ch.localId) + ch.close() + return nil + case msgChannelEOF: + // RFC 4254 is mute on how EOF affects dataExt messages but + // it is logical to signal EOF at the same time. + ch.extPending.eof() + ch.pending.eof() + return nil + } + + decoded, err := decode(packet) + if err != nil { + return err + } + + switch msg := decoded.(type) { + case *channelOpenFailureMsg: + if err := ch.responseMessageReceived(); err != nil { + return err + } + ch.mux.chanList.remove(msg.PeersID) + ch.msg <- msg + case *channelOpenConfirmMsg: + if err := ch.responseMessageReceived(); err != nil { + return err + } + if msg.MaxPacketSize < minPacketLength || msg.MaxPacketSize > 1<<31 { + return fmt.Errorf("ssh: invalid MaxPacketSize %d from peer", msg.MaxPacketSize) + } + ch.remoteId = msg.MyID + ch.maxRemotePayload = msg.MaxPacketSize + ch.remoteWin.add(msg.MyWindow) + ch.msg <- msg + case *windowAdjustMsg: + if !ch.remoteWin.add(msg.AdditionalBytes) { + return fmt.Errorf("ssh: invalid window update for %d bytes", msg.AdditionalBytes) + } + case *channelRequestMsg: + req := Request{ + Type: msg.Request, + WantReply: msg.WantReply, + Payload: msg.RequestSpecificData, + ch: ch, + } + + ch.incomingRequests <- &req + default: + ch.msg <- msg + } + return nil +} + +func (m *mux) newChannel(chanType string, direction channelDirection, extraData []byte) *channel { + ch := &channel{ + remoteWin: window{Cond: newCond()}, + myWindow: channelWindowSize, + pending: newBuffer(), + extPending: newBuffer(), + direction: direction, + incomingRequests: make(chan *Request, chanSize), + msg: make(chan interface{}, chanSize), + chanType: chanType, + extraData: extraData, + mux: m, + packetPool: make(map[uint32][]byte), + } + ch.localId = m.chanList.add(ch) + return ch +} + +var errUndecided = errors.New("ssh: must Accept or Reject channel") +var errDecidedAlready = errors.New("ssh: can call Accept or Reject only once") + +type extChannel struct { + code uint32 + ch *channel +} + +func (e *extChannel) Write(data []byte) (n int, err error) { + return e.ch.WriteExtended(data, e.code) +} + +func (e *extChannel) Read(data []byte) (n int, err error) { + return e.ch.ReadExtended(data, e.code) +} + +func (ch *channel) Accept() (Channel, <-chan *Request, error) { + if ch.decided { + return nil, nil, errDecidedAlready + } + ch.maxIncomingPayload = channelMaxPacket + confirm := channelOpenConfirmMsg{ + PeersID: ch.remoteId, + MyID: ch.localId, + MyWindow: ch.myWindow, + MaxPacketSize: ch.maxIncomingPayload, + } + ch.decided = true + if err := ch.sendMessage(confirm); err != nil { + return nil, nil, err + } + + return ch, ch.incomingRequests, nil +} + +func (ch *channel) Reject(reason RejectionReason, message string) error { + if ch.decided { + return errDecidedAlready + } + reject := channelOpenFailureMsg{ + PeersID: ch.remoteId, + Reason: reason, + Message: message, + Language: "en", + } + ch.decided = true + return ch.sendMessage(reject) +} + +func (ch *channel) Read(data []byte) (int, error) { + if !ch.decided { + return 0, errUndecided + } + return ch.ReadExtended(data, 0) +} + +func (ch *channel) Write(data []byte) (int, error) { + if !ch.decided { + return 0, errUndecided + } + return ch.WriteExtended(data, 0) +} + +func (ch *channel) CloseWrite() error { + if !ch.decided { + return errUndecided + } + ch.sentEOF = true + return ch.sendMessage(channelEOFMsg{ + PeersID: ch.remoteId}) +} + +func (ch *channel) Close() error { + if !ch.decided { + return errUndecided + } + + return ch.sendMessage(channelCloseMsg{ + PeersID: ch.remoteId}) +} + +// Extended returns an io.ReadWriter that sends and receives data on the given, +// SSH extended stream. Such streams are used, for example, for stderr. +func (ch *channel) Extended(code uint32) io.ReadWriter { + if !ch.decided { + return nil + } + return &extChannel{code, ch} +} + +func (ch *channel) Stderr() io.ReadWriter { + return ch.Extended(1) +} + +func (ch *channel) SendRequest(name string, wantReply bool, payload []byte) (bool, error) { + if !ch.decided { + return false, errUndecided + } + + if wantReply { + ch.sentRequestMu.Lock() + defer ch.sentRequestMu.Unlock() + } + + msg := channelRequestMsg{ + PeersID: ch.remoteId, + Request: name, + WantReply: wantReply, + RequestSpecificData: payload, + } + + if err := ch.sendMessage(msg); err != nil { + return false, err + } + + if wantReply { + m, ok := (<-ch.msg) + if !ok { + return false, io.EOF + } + switch m.(type) { + case *channelRequestFailureMsg: + return false, nil + case *channelRequestSuccessMsg: + return true, nil + default: + return false, fmt.Errorf("ssh: unexpected response to channel request: %#v", m) + } + } + + return false, nil +} + +// ackRequest either sends an ack or nack to the channel request. +func (ch *channel) ackRequest(ok bool) error { + if !ch.decided { + return errUndecided + } + + var msg interface{} + if !ok { + msg = channelRequestFailureMsg{ + PeersID: ch.remoteId, + } + } else { + msg = channelRequestSuccessMsg{ + PeersID: ch.remoteId, + } + } + return ch.sendMessage(msg) +} + +func (ch *channel) ChannelType() string { + return ch.chanType +} + +func (ch *channel) ExtraData() []byte { + return ch.extraData +} diff --git a/tests/vendor/golang.org/x/crypto/ssh/cipher.go b/tests/vendor/golang.org/x/crypto/ssh/cipher.go new file mode 100644 index 000000000..6a5b582aa --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/ssh/cipher.go @@ -0,0 +1,787 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "crypto/aes" + "crypto/cipher" + "crypto/des" + "crypto/rc4" + "crypto/subtle" + "encoding/binary" + "errors" + "fmt" + "hash" + "io" + + "golang.org/x/crypto/chacha20" + "golang.org/x/crypto/internal/poly1305" +) + +const ( + packetSizeMultiple = 16 // TODO(huin) this should be determined by the cipher. + + // RFC 4253 section 6.1 defines a minimum packet size of 32768 that implementations + // MUST be able to process (plus a few more kilobytes for padding and mac). The RFC + // indicates implementations SHOULD be able to handle larger packet sizes, but then + // waffles on about reasonable limits. + // + // OpenSSH caps their maxPacket at 256kB so we choose to do + // the same. maxPacket is also used to ensure that uint32 + // length fields do not overflow, so it should remain well + // below 4G. + maxPacket = 256 * 1024 +) + +// noneCipher implements cipher.Stream and provides no encryption. It is used +// by the transport before the first key-exchange. +type noneCipher struct{} + +func (c noneCipher) XORKeyStream(dst, src []byte) { + copy(dst, src) +} + +func newAESCTR(key, iv []byte) (cipher.Stream, error) { + c, err := aes.NewCipher(key) + if err != nil { + return nil, err + } + return cipher.NewCTR(c, iv), nil +} + +func newRC4(key, iv []byte) (cipher.Stream, error) { + return rc4.NewCipher(key) +} + +type cipherMode struct { + keySize int + ivSize int + create func(key, iv []byte, macKey []byte, algs DirectionAlgorithms) (packetCipher, error) +} + +func streamCipherMode(skip int, createFunc func(key, iv []byte) (cipher.Stream, error)) func(key, iv []byte, macKey []byte, algs DirectionAlgorithms) (packetCipher, error) { + return func(key, iv, macKey []byte, algs DirectionAlgorithms) (packetCipher, error) { + stream, err := createFunc(key, iv) + if err != nil { + return nil, err + } + + var streamDump []byte + if skip > 0 { + streamDump = make([]byte, 512) + } + + for remainingToDump := skip; remainingToDump > 0; { + dumpThisTime := remainingToDump + if dumpThisTime > len(streamDump) { + dumpThisTime = len(streamDump) + } + stream.XORKeyStream(streamDump[:dumpThisTime], streamDump[:dumpThisTime]) + remainingToDump -= dumpThisTime + } + + mac := macModes[algs.MAC].new(macKey) + return &streamPacketCipher{ + mac: mac, + etm: macModes[algs.MAC].etm, + macResult: make([]byte, mac.Size()), + cipher: stream, + }, nil + } +} + +// cipherModes documents properties of supported ciphers. Ciphers not included +// are not supported and will not be negotiated, even if explicitly requested in +// ClientConfig.Crypto.Ciphers. +var cipherModes = map[string]*cipherMode{ + // Ciphers from RFC 4344, which introduced many CTR-based ciphers. Algorithms + // are defined in the order specified in the RFC. + CipherAES128CTR: {16, aes.BlockSize, streamCipherMode(0, newAESCTR)}, + CipherAES192CTR: {24, aes.BlockSize, streamCipherMode(0, newAESCTR)}, + CipherAES256CTR: {32, aes.BlockSize, streamCipherMode(0, newAESCTR)}, + + // Ciphers from RFC 4345, which introduces security-improved arcfour ciphers. + // They are defined in the order specified in the RFC. + InsecureCipherRC4128: {16, 0, streamCipherMode(1536, newRC4)}, + InsecureCipherRC4256: {32, 0, streamCipherMode(1536, newRC4)}, + + // Cipher defined in RFC 4253, which describes SSH Transport Layer Protocol. + // Note that this cipher is not safe, as stated in RFC 4253: "Arcfour (and + // RC4) has problems with weak keys, and should be used with caution." + // RFC 4345 introduces improved versions of Arcfour. + InsecureCipherRC4: {16, 0, streamCipherMode(0, newRC4)}, + + // AEAD ciphers + CipherAES128GCM: {16, 12, newGCMCipher}, + CipherAES256GCM: {32, 12, newGCMCipher}, + CipherChaCha20Poly1305: {64, 0, newChaCha20Cipher}, + + // CBC mode is insecure and so is not included in the default config. + // (See https://www.ieee-security.org/TC/SP2013/papers/4977a526.pdf). If absolutely + // needed, it's possible to specify a custom Config to enable it. + // You should expect that an active attacker can recover plaintext if + // you do. + InsecureCipherAES128CBC: {16, aes.BlockSize, newAESCBCCipher}, + + // 3des-cbc is insecure and is not included in the default + // config. + InsecureCipherTripleDESCBC: {24, des.BlockSize, newTripleDESCBCCipher}, +} + +// prefixLen is the length of the packet prefix that contains the packet length +// and number of padding bytes. +const prefixLen = 5 + +// streamPacketCipher is a packetCipher using a stream cipher. +type streamPacketCipher struct { + mac hash.Hash + cipher cipher.Stream + etm bool + + // The following members are to avoid per-packet allocations. + prefix [prefixLen]byte + seqNumBytes [4]byte + padding [2 * packetSizeMultiple]byte + packetData []byte + macResult []byte +} + +// readCipherPacket reads and decrypt a single packet from the reader argument. +func (s *streamPacketCipher) readCipherPacket(seqNum uint32, r io.Reader) ([]byte, error) { + if _, err := io.ReadFull(r, s.prefix[:]); err != nil { + return nil, err + } + + var encryptedPaddingLength [1]byte + if s.mac != nil && s.etm { + copy(encryptedPaddingLength[:], s.prefix[4:5]) + s.cipher.XORKeyStream(s.prefix[4:5], s.prefix[4:5]) + } else { + s.cipher.XORKeyStream(s.prefix[:], s.prefix[:]) + } + + length := binary.BigEndian.Uint32(s.prefix[0:4]) + paddingLength := uint32(s.prefix[4]) + + var macSize uint32 + if s.mac != nil { + s.mac.Reset() + binary.BigEndian.PutUint32(s.seqNumBytes[:], seqNum) + s.mac.Write(s.seqNumBytes[:]) + if s.etm { + s.mac.Write(s.prefix[:4]) + s.mac.Write(encryptedPaddingLength[:]) + } else { + s.mac.Write(s.prefix[:]) + } + macSize = uint32(s.mac.Size()) + } + + if length <= paddingLength+1 { + return nil, errors.New("ssh: invalid packet length, packet too small") + } + + if length > maxPacket { + return nil, errors.New("ssh: invalid packet length, packet too large") + } + + // the maxPacket check above ensures that length-1+macSize + // does not overflow. + if uint32(cap(s.packetData)) < length-1+macSize { + s.packetData = make([]byte, length-1+macSize) + } else { + s.packetData = s.packetData[:length-1+macSize] + } + + if _, err := io.ReadFull(r, s.packetData); err != nil { + return nil, err + } + mac := s.packetData[length-1:] + data := s.packetData[:length-1] + + if s.mac != nil && s.etm { + s.mac.Write(data) + } + + s.cipher.XORKeyStream(data, data) + + if s.mac != nil { + if !s.etm { + s.mac.Write(data) + } + s.macResult = s.mac.Sum(s.macResult[:0]) + if subtle.ConstantTimeCompare(s.macResult, mac) != 1 { + return nil, errors.New("ssh: MAC failure") + } + } + + return s.packetData[:length-paddingLength-1], nil +} + +// writeCipherPacket encrypts and sends a packet of data to the writer argument +func (s *streamPacketCipher) writeCipherPacket(seqNum uint32, w io.Writer, rand io.Reader, packet []byte) error { + if len(packet) > maxPacket { + return errors.New("ssh: packet too large") + } + + aadlen := 0 + if s.mac != nil && s.etm { + // packet length is not encrypted for EtM modes + aadlen = 4 + } + + paddingLength := packetSizeMultiple - (prefixLen+len(packet)-aadlen)%packetSizeMultiple + if paddingLength < 4 { + paddingLength += packetSizeMultiple + } + + length := len(packet) + 1 + paddingLength + binary.BigEndian.PutUint32(s.prefix[:], uint32(length)) + s.prefix[4] = byte(paddingLength) + padding := s.padding[:paddingLength] + if _, err := io.ReadFull(rand, padding); err != nil { + return err + } + + if s.mac != nil { + s.mac.Reset() + binary.BigEndian.PutUint32(s.seqNumBytes[:], seqNum) + s.mac.Write(s.seqNumBytes[:]) + + if s.etm { + // For EtM algorithms, the packet length must stay unencrypted, + // but the following data (padding length) must be encrypted + s.cipher.XORKeyStream(s.prefix[4:5], s.prefix[4:5]) + } + + s.mac.Write(s.prefix[:]) + + if !s.etm { + // For non-EtM algorithms, the algorithm is applied on unencrypted data + s.mac.Write(packet) + s.mac.Write(padding) + } + } + + if !(s.mac != nil && s.etm) { + // For EtM algorithms, the padding length has already been encrypted + // and the packet length must remain unencrypted + s.cipher.XORKeyStream(s.prefix[:], s.prefix[:]) + } + + s.cipher.XORKeyStream(packet, packet) + s.cipher.XORKeyStream(padding, padding) + + if s.mac != nil && s.etm { + // For EtM algorithms, packet and padding must be encrypted + s.mac.Write(packet) + s.mac.Write(padding) + } + + if _, err := w.Write(s.prefix[:]); err != nil { + return err + } + if _, err := w.Write(packet); err != nil { + return err + } + if _, err := w.Write(padding); err != nil { + return err + } + + if s.mac != nil { + s.macResult = s.mac.Sum(s.macResult[:0]) + if _, err := w.Write(s.macResult); err != nil { + return err + } + } + + return nil +} + +type gcmCipher struct { + aead cipher.AEAD + prefix [4]byte + iv []byte + buf []byte +} + +func newGCMCipher(key, iv, unusedMacKey []byte, unusedAlgs DirectionAlgorithms) (packetCipher, error) { + c, err := aes.NewCipher(key) + if err != nil { + return nil, err + } + + aead, err := cipher.NewGCM(c) + if err != nil { + return nil, err + } + + return &gcmCipher{ + aead: aead, + iv: iv, + }, nil +} + +const gcmTagSize = 16 + +func (c *gcmCipher) writeCipherPacket(seqNum uint32, w io.Writer, rand io.Reader, packet []byte) error { + // Pad out to multiple of 16 bytes. This is different from the + // stream cipher because that encrypts the length too. + padding := byte(packetSizeMultiple - (1+len(packet))%packetSizeMultiple) + if padding < 4 { + padding += packetSizeMultiple + } + + length := uint32(len(packet) + int(padding) + 1) + binary.BigEndian.PutUint32(c.prefix[:], length) + if _, err := w.Write(c.prefix[:]); err != nil { + return err + } + + if cap(c.buf) < int(length) { + c.buf = make([]byte, length) + } else { + c.buf = c.buf[:length] + } + + c.buf[0] = padding + copy(c.buf[1:], packet) + if _, err := io.ReadFull(rand, c.buf[1+len(packet):]); err != nil { + return err + } + c.buf = c.aead.Seal(c.buf[:0], c.iv, c.buf, c.prefix[:]) + if _, err := w.Write(c.buf); err != nil { + return err + } + c.incIV() + + return nil +} + +func (c *gcmCipher) incIV() { + for i := 4 + 7; i >= 4; i-- { + c.iv[i]++ + if c.iv[i] != 0 { + break + } + } +} + +func (c *gcmCipher) readCipherPacket(seqNum uint32, r io.Reader) ([]byte, error) { + if _, err := io.ReadFull(r, c.prefix[:]); err != nil { + return nil, err + } + length := binary.BigEndian.Uint32(c.prefix[:]) + if length > maxPacket { + return nil, errors.New("ssh: max packet length exceeded") + } + + if cap(c.buf) < int(length+gcmTagSize) { + c.buf = make([]byte, length+gcmTagSize) + } else { + c.buf = c.buf[:length+gcmTagSize] + } + + if _, err := io.ReadFull(r, c.buf); err != nil { + return nil, err + } + + plain, err := c.aead.Open(c.buf[:0], c.iv, c.buf, c.prefix[:]) + if err != nil { + return nil, err + } + c.incIV() + + if len(plain) == 0 { + return nil, errors.New("ssh: empty packet") + } + + padding := plain[0] + if padding < 4 { + // padding is a byte, so it automatically satisfies + // the maximum size, which is 255. + return nil, fmt.Errorf("ssh: illegal padding %d", padding) + } + + if int(padding+1) >= len(plain) { + return nil, fmt.Errorf("ssh: padding %d too large", padding) + } + plain = plain[1 : length-uint32(padding)] + return plain, nil +} + +// cbcCipher implements aes128-cbc cipher defined in RFC 4253 section 6.1 +type cbcCipher struct { + mac hash.Hash + macSize uint32 + decrypter cipher.BlockMode + encrypter cipher.BlockMode + + // The following members are to avoid per-packet allocations. + seqNumBytes [4]byte + packetData []byte + macResult []byte + + // Amount of data we should still read to hide which + // verification error triggered. + oracleCamouflage uint32 +} + +func newCBCCipher(c cipher.Block, key, iv, macKey []byte, algs DirectionAlgorithms) (packetCipher, error) { + cbc := &cbcCipher{ + mac: macModes[algs.MAC].new(macKey), + decrypter: cipher.NewCBCDecrypter(c, iv), + encrypter: cipher.NewCBCEncrypter(c, iv), + packetData: make([]byte, 1024), + } + if cbc.mac != nil { + cbc.macSize = uint32(cbc.mac.Size()) + } + + return cbc, nil +} + +func newAESCBCCipher(key, iv, macKey []byte, algs DirectionAlgorithms) (packetCipher, error) { + c, err := aes.NewCipher(key) + if err != nil { + return nil, err + } + + cbc, err := newCBCCipher(c, key, iv, macKey, algs) + if err != nil { + return nil, err + } + + return cbc, nil +} + +func newTripleDESCBCCipher(key, iv, macKey []byte, algs DirectionAlgorithms) (packetCipher, error) { + c, err := des.NewTripleDESCipher(key) + if err != nil { + return nil, err + } + + cbc, err := newCBCCipher(c, key, iv, macKey, algs) + if err != nil { + return nil, err + } + + return cbc, nil +} + +func maxUInt32(a, b int) uint32 { + if a > b { + return uint32(a) + } + return uint32(b) +} + +const ( + cbcMinPacketSizeMultiple = 8 + cbcMinPacketSize = 16 + cbcMinPaddingSize = 4 +) + +// cbcError represents a verification error that may leak information. +type cbcError string + +func (e cbcError) Error() string { return string(e) } + +func (c *cbcCipher) readCipherPacket(seqNum uint32, r io.Reader) ([]byte, error) { + p, err := c.readCipherPacketLeaky(seqNum, r) + if err != nil { + if _, ok := err.(cbcError); ok { + // Verification error: read a fixed amount of + // data, to make distinguishing between + // failing MAC and failing length check more + // difficult. + io.CopyN(io.Discard, r, int64(c.oracleCamouflage)) + } + } + return p, err +} + +func (c *cbcCipher) readCipherPacketLeaky(seqNum uint32, r io.Reader) ([]byte, error) { + blockSize := c.decrypter.BlockSize() + + // Read the header, which will include some of the subsequent data in the + // case of block ciphers - this is copied back to the payload later. + // How many bytes of payload/padding will be read with this first read. + firstBlockLength := uint32((prefixLen + blockSize - 1) / blockSize * blockSize) + firstBlock := c.packetData[:firstBlockLength] + if _, err := io.ReadFull(r, firstBlock); err != nil { + return nil, err + } + + c.oracleCamouflage = maxPacket + 4 + c.macSize - firstBlockLength + + c.decrypter.CryptBlocks(firstBlock, firstBlock) + length := binary.BigEndian.Uint32(firstBlock[:4]) + if length > maxPacket { + return nil, cbcError("ssh: packet too large") + } + if length+4 < maxUInt32(cbcMinPacketSize, blockSize) { + // The minimum size of a packet is 16 (or the cipher block size, whichever + // is larger) bytes. + return nil, cbcError("ssh: packet too small") + } + // The length of the packet (including the length field but not the MAC) must + // be a multiple of the block size or 8, whichever is larger. + if (length+4)%maxUInt32(cbcMinPacketSizeMultiple, blockSize) != 0 { + return nil, cbcError("ssh: invalid packet length multiple") + } + + paddingLength := uint32(firstBlock[4]) + if paddingLength < cbcMinPaddingSize || length <= paddingLength+1 { + return nil, cbcError("ssh: invalid packet length") + } + + // Positions within the c.packetData buffer: + macStart := 4 + length + paddingStart := macStart - paddingLength + + // Entire packet size, starting before length, ending at end of mac. + entirePacketSize := macStart + c.macSize + + // Ensure c.packetData is large enough for the entire packet data. + if uint32(cap(c.packetData)) < entirePacketSize { + // Still need to upsize and copy, but this should be rare at runtime, only + // on upsizing the packetData buffer. + c.packetData = make([]byte, entirePacketSize) + copy(c.packetData, firstBlock) + } else { + c.packetData = c.packetData[:entirePacketSize] + } + + n, err := io.ReadFull(r, c.packetData[firstBlockLength:]) + if err != nil { + return nil, err + } + c.oracleCamouflage -= uint32(n) + + remainingCrypted := c.packetData[firstBlockLength:macStart] + c.decrypter.CryptBlocks(remainingCrypted, remainingCrypted) + + mac := c.packetData[macStart:] + if c.mac != nil { + c.mac.Reset() + binary.BigEndian.PutUint32(c.seqNumBytes[:], seqNum) + c.mac.Write(c.seqNumBytes[:]) + c.mac.Write(c.packetData[:macStart]) + c.macResult = c.mac.Sum(c.macResult[:0]) + if subtle.ConstantTimeCompare(c.macResult, mac) != 1 { + return nil, cbcError("ssh: MAC failure") + } + } + + return c.packetData[prefixLen:paddingStart], nil +} + +func (c *cbcCipher) writeCipherPacket(seqNum uint32, w io.Writer, rand io.Reader, packet []byte) error { + effectiveBlockSize := maxUInt32(cbcMinPacketSizeMultiple, c.encrypter.BlockSize()) + + // Length of encrypted portion of the packet (header, payload, padding). + // Enforce minimum padding and packet size. + encLength := maxUInt32(prefixLen+len(packet)+cbcMinPaddingSize, cbcMinPaddingSize) + // Enforce block size. + encLength = (encLength + effectiveBlockSize - 1) / effectiveBlockSize * effectiveBlockSize + + length := encLength - 4 + paddingLength := int(length) - (1 + len(packet)) + + // Overall buffer contains: header, payload, padding, mac. + // Space for the MAC is reserved in the capacity but not the slice length. + bufferSize := encLength + c.macSize + if uint32(cap(c.packetData)) < bufferSize { + c.packetData = make([]byte, encLength, bufferSize) + } else { + c.packetData = c.packetData[:encLength] + } + + p := c.packetData + + // Packet header. + binary.BigEndian.PutUint32(p, length) + p = p[4:] + p[0] = byte(paddingLength) + + // Payload. + p = p[1:] + copy(p, packet) + + // Padding. + p = p[len(packet):] + if _, err := io.ReadFull(rand, p); err != nil { + return err + } + + if c.mac != nil { + c.mac.Reset() + binary.BigEndian.PutUint32(c.seqNumBytes[:], seqNum) + c.mac.Write(c.seqNumBytes[:]) + c.mac.Write(c.packetData) + // The MAC is now appended into the capacity reserved for it earlier. + c.packetData = c.mac.Sum(c.packetData) + } + + c.encrypter.CryptBlocks(c.packetData[:encLength], c.packetData[:encLength]) + + if _, err := w.Write(c.packetData); err != nil { + return err + } + + return nil +} + +// chacha20Poly1305Cipher implements the chacha20-poly1305@openssh.com +// AEAD, which is described here: +// +// https://tools.ietf.org/html/draft-josefsson-ssh-chacha20-poly1305-openssh-00 +// +// the methods here also implement padding, which RFC 4253 Section 6 +// also requires of stream ciphers. +type chacha20Poly1305Cipher struct { + lengthKey [32]byte + contentKey [32]byte + buf []byte +} + +func newChaCha20Cipher(key, unusedIV, unusedMACKey []byte, unusedAlgs DirectionAlgorithms) (packetCipher, error) { + if len(key) != 64 { + panic(len(key)) + } + + c := &chacha20Poly1305Cipher{ + buf: make([]byte, 256), + } + + copy(c.contentKey[:], key[:32]) + copy(c.lengthKey[:], key[32:]) + return c, nil +} + +func (c *chacha20Poly1305Cipher) readCipherPacket(seqNum uint32, r io.Reader) ([]byte, error) { + nonce := make([]byte, 12) + binary.BigEndian.PutUint32(nonce[8:], seqNum) + s, err := chacha20.NewUnauthenticatedCipher(c.contentKey[:], nonce) + if err != nil { + return nil, err + } + var polyKey, discardBuf [32]byte + s.XORKeyStream(polyKey[:], polyKey[:]) + s.XORKeyStream(discardBuf[:], discardBuf[:]) // skip the next 32 bytes + + encryptedLength := c.buf[:4] + if _, err := io.ReadFull(r, encryptedLength); err != nil { + return nil, err + } + + var lenBytes [4]byte + ls, err := chacha20.NewUnauthenticatedCipher(c.lengthKey[:], nonce) + if err != nil { + return nil, err + } + ls.XORKeyStream(lenBytes[:], encryptedLength) + + length := binary.BigEndian.Uint32(lenBytes[:]) + if length > maxPacket { + return nil, errors.New("ssh: invalid packet length, packet too large") + } + + contentEnd := 4 + length + packetEnd := contentEnd + poly1305.TagSize + if uint32(cap(c.buf)) < packetEnd { + c.buf = make([]byte, packetEnd) + copy(c.buf[:], encryptedLength) + } else { + c.buf = c.buf[:packetEnd] + } + + if _, err := io.ReadFull(r, c.buf[4:packetEnd]); err != nil { + return nil, err + } + + var mac [poly1305.TagSize]byte + copy(mac[:], c.buf[contentEnd:packetEnd]) + if !poly1305.Verify(&mac, c.buf[:contentEnd], &polyKey) { + return nil, errors.New("ssh: MAC failure") + } + + plain := c.buf[4:contentEnd] + s.XORKeyStream(plain, plain) + + if len(plain) == 0 { + return nil, errors.New("ssh: empty packet") + } + + padding := plain[0] + if padding < 4 { + // padding is a byte, so it automatically satisfies + // the maximum size, which is 255. + return nil, fmt.Errorf("ssh: illegal padding %d", padding) + } + + if int(padding)+1 >= len(plain) { + return nil, fmt.Errorf("ssh: padding %d too large", padding) + } + + plain = plain[1 : len(plain)-int(padding)] + + return plain, nil +} + +func (c *chacha20Poly1305Cipher) writeCipherPacket(seqNum uint32, w io.Writer, rand io.Reader, payload []byte) error { + nonce := make([]byte, 12) + binary.BigEndian.PutUint32(nonce[8:], seqNum) + s, err := chacha20.NewUnauthenticatedCipher(c.contentKey[:], nonce) + if err != nil { + return err + } + var polyKey, discardBuf [32]byte + s.XORKeyStream(polyKey[:], polyKey[:]) + s.XORKeyStream(discardBuf[:], discardBuf[:]) // skip the next 32 bytes + + // There is no blocksize, so fall back to multiple of 8 byte + // padding, as described in RFC 4253, Sec 6. + const packetSizeMultiple = 8 + + padding := packetSizeMultiple - (1+len(payload))%packetSizeMultiple + if padding < 4 { + padding += packetSizeMultiple + } + + // size (4 bytes), padding (1), payload, padding, tag. + totalLength := 4 + 1 + len(payload) + padding + poly1305.TagSize + if cap(c.buf) < totalLength { + c.buf = make([]byte, totalLength) + } else { + c.buf = c.buf[:totalLength] + } + + binary.BigEndian.PutUint32(c.buf, uint32(1+len(payload)+padding)) + ls, err := chacha20.NewUnauthenticatedCipher(c.lengthKey[:], nonce) + if err != nil { + return err + } + ls.XORKeyStream(c.buf, c.buf[:4]) + c.buf[4] = byte(padding) + copy(c.buf[5:], payload) + packetEnd := 5 + len(payload) + padding + if _, err := io.ReadFull(rand, c.buf[5+len(payload):packetEnd]); err != nil { + return err + } + + s.XORKeyStream(c.buf[4:], c.buf[4:packetEnd]) + + var mac [poly1305.TagSize]byte + poly1305.Sum(&mac, c.buf[:packetEnd], &polyKey) + + copy(c.buf[packetEnd:], mac[:]) + + if _, err := w.Write(c.buf); err != nil { + return err + } + return nil +} diff --git a/tests/vendor/golang.org/x/crypto/ssh/client.go b/tests/vendor/golang.org/x/crypto/ssh/client.go new file mode 100644 index 000000000..33079789b --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/ssh/client.go @@ -0,0 +1,283 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "bytes" + "errors" + "fmt" + "net" + "os" + "sync" + "time" +) + +// Client implements a traditional SSH client that supports shells, +// subprocesses, TCP port/streamlocal forwarding and tunneled dialing. +type Client struct { + Conn + + handleForwardsOnce sync.Once // guards calling (*Client).handleForwards + + forwards forwardList // forwarded tcpip connections from the remote side + mu sync.Mutex + channelHandlers map[string]chan NewChannel +} + +// HandleChannelOpen returns a channel on which NewChannel requests +// for the given type are sent. If the type already is being handled, +// nil is returned. The channel is closed when the connection is closed. +func (c *Client) HandleChannelOpen(channelType string) <-chan NewChannel { + c.mu.Lock() + defer c.mu.Unlock() + if c.channelHandlers == nil { + // The SSH channel has been closed. + c := make(chan NewChannel) + close(c) + return c + } + + ch := c.channelHandlers[channelType] + if ch != nil { + return nil + } + + ch = make(chan NewChannel, chanSize) + c.channelHandlers[channelType] = ch + return ch +} + +// NewClient creates a Client on top of the given connection. +func NewClient(c Conn, chans <-chan NewChannel, reqs <-chan *Request) *Client { + conn := &Client{ + Conn: c, + channelHandlers: make(map[string]chan NewChannel, 1), + } + + go conn.handleGlobalRequests(reqs) + go conn.handleChannelOpens(chans) + go func() { + conn.Wait() + conn.forwards.closeAll() + }() + return conn +} + +// NewClientConn establishes an authenticated SSH connection using c +// as the underlying transport. The Request and NewChannel channels +// must be serviced or the connection will hang. +func NewClientConn(c net.Conn, addr string, config *ClientConfig) (Conn, <-chan NewChannel, <-chan *Request, error) { + fullConf := *config + fullConf.SetDefaults() + if fullConf.HostKeyCallback == nil { + c.Close() + return nil, nil, nil, errors.New("ssh: must specify HostKeyCallback") + } + + conn := &connection{ + sshConn: sshConn{conn: c, user: fullConf.User}, + } + + if err := conn.clientHandshake(addr, &fullConf); err != nil { + c.Close() + return nil, nil, nil, fmt.Errorf("ssh: handshake failed: %w", err) + } + conn.mux = newMux(conn.transport) + return conn, conn.mux.incomingChannels, conn.mux.incomingRequests, nil +} + +// clientHandshake performs the client side key exchange. See RFC 4253 Section +// 7. +func (c *connection) clientHandshake(dialAddress string, config *ClientConfig) error { + if config.ClientVersion != "" { + c.clientVersion = []byte(config.ClientVersion) + } else { + c.clientVersion = []byte(packageVersion) + } + var err error + c.serverVersion, err = exchangeVersions(c.sshConn.conn, c.clientVersion) + if err != nil { + return err + } + + c.transport = newClientTransport( + newTransport(c.sshConn.conn, config.Rand, true /* is client */), + c.clientVersion, c.serverVersion, config, dialAddress, c.sshConn.RemoteAddr()) + if err := c.transport.waitSession(); err != nil { + return err + } + + c.sessionID = c.transport.getSessionID() + c.algorithms = c.transport.getAlgorithms() + return c.clientAuthenticate(config) +} + +// verifyHostKeySignature verifies the host key obtained in the key exchange. +// algo is the negotiated algorithm, and may be a certificate type. +func verifyHostKeySignature(hostKey PublicKey, algo string, result *kexResult) error { + sig, rest, ok := parseSignatureBody(result.Signature) + if len(rest) > 0 || !ok { + return errors.New("ssh: signature parse error") + } + + if a := underlyingAlgo(algo); sig.Format != a { + return fmt.Errorf("ssh: invalid signature algorithm %q, expected %q", sig.Format, a) + } + + return hostKey.Verify(result.H, sig) +} + +// NewSession opens a new Session for this client. (A session is a remote +// execution of a program.) +func (c *Client) NewSession() (*Session, error) { + ch, in, err := c.OpenChannel("session", nil) + if err != nil { + return nil, err + } + return newSession(ch, in) +} + +func (c *Client) handleGlobalRequests(incoming <-chan *Request) { + for r := range incoming { + // This handles keepalive messages and matches + // the behaviour of OpenSSH. + r.Reply(false, nil) + } +} + +// handleChannelOpens channel open messages from the remote side. +func (c *Client) handleChannelOpens(in <-chan NewChannel) { + for ch := range in { + c.mu.Lock() + handler := c.channelHandlers[ch.ChannelType()] + c.mu.Unlock() + + if handler != nil { + handler <- ch + } else { + ch.Reject(UnknownChannelType, fmt.Sprintf("unknown channel type: %v", ch.ChannelType())) + } + } + + c.mu.Lock() + for _, ch := range c.channelHandlers { + close(ch) + } + c.channelHandlers = nil + c.mu.Unlock() +} + +// Dial starts a client connection to the given SSH server. It is a +// convenience function that connects to the given network address, +// initiates the SSH handshake, and then sets up a Client. For access +// to incoming channels and requests, use net.Dial with NewClientConn +// instead. +func Dial(network, addr string, config *ClientConfig) (*Client, error) { + conn, err := net.DialTimeout(network, addr, config.Timeout) + if err != nil { + return nil, err + } + c, chans, reqs, err := NewClientConn(conn, addr, config) + if err != nil { + return nil, err + } + return NewClient(c, chans, reqs), nil +} + +// HostKeyCallback is the function type used for verifying server +// keys. A HostKeyCallback must return nil if the host key is OK, or +// an error to reject it. It receives the hostname as passed to Dial +// or NewClientConn. The remote address is the RemoteAddr of the +// net.Conn underlying the SSH connection. +type HostKeyCallback func(hostname string, remote net.Addr, key PublicKey) error + +// BannerCallback is the function type used for treat the banner sent by +// the server. A BannerCallback receives the message sent by the remote server. +type BannerCallback func(message string) error + +// A ClientConfig structure is used to configure a Client. It must not be +// modified after having been passed to an SSH function. +type ClientConfig struct { + // Config contains configuration that is shared between clients and + // servers. + Config + + // User contains the username to authenticate as. + User string + + // Auth contains possible authentication methods to use with the + // server. Only the first instance of a particular RFC 4252 method will + // be used during authentication. + Auth []AuthMethod + + // HostKeyCallback is called during the cryptographic + // handshake to validate the server's host key. The client + // configuration must supply this callback for the connection + // to succeed. The functions InsecureIgnoreHostKey or + // FixedHostKey can be used for simplistic host key checks. + HostKeyCallback HostKeyCallback + + // BannerCallback is called during the SSH dance to display a custom + // server's message. The client configuration can supply this callback to + // handle it as wished. The function BannerDisplayStderr can be used for + // simplistic display on Stderr. + BannerCallback BannerCallback + + // ClientVersion contains the version identification string that will + // be used for the connection. If empty, a reasonable default is used. + ClientVersion string + + // HostKeyAlgorithms lists the public key algorithms that the client will + // accept from the server for host key authentication, in order of + // preference. If empty, a reasonable default is used. Any + // string returned from a PublicKey.Type method may be used, or + // any of the CertAlgo and KeyAlgo constants. + HostKeyAlgorithms []string + + // Timeout is the maximum amount of time for the TCP connection to establish. + // + // A Timeout of zero means no timeout. + Timeout time.Duration +} + +// InsecureIgnoreHostKey returns a function that can be used for +// ClientConfig.HostKeyCallback to accept any host key. It should +// not be used for production code. +func InsecureIgnoreHostKey() HostKeyCallback { + return func(hostname string, remote net.Addr, key PublicKey) error { + return nil + } +} + +type fixedHostKey struct { + key PublicKey +} + +func (f *fixedHostKey) check(hostname string, remote net.Addr, key PublicKey) error { + if f.key == nil { + return fmt.Errorf("ssh: required host key was nil") + } + if !bytes.Equal(key.Marshal(), f.key.Marshal()) { + return fmt.Errorf("ssh: host key mismatch") + } + return nil +} + +// FixedHostKey returns a function for use in +// ClientConfig.HostKeyCallback to accept only a specific host key. +func FixedHostKey(key PublicKey) HostKeyCallback { + hk := &fixedHostKey{key} + return hk.check +} + +// BannerDisplayStderr returns a function that can be used for +// ClientConfig.BannerCallback to display banners on os.Stderr. +func BannerDisplayStderr() BannerCallback { + return func(banner string) error { + _, err := os.Stderr.WriteString(banner) + + return err + } +} diff --git a/tests/vendor/golang.org/x/crypto/ssh/client_auth.go b/tests/vendor/golang.org/x/crypto/ssh/client_auth.go new file mode 100644 index 000000000..b86dde151 --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/ssh/client_auth.go @@ -0,0 +1,796 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "bytes" + "errors" + "fmt" + "io" + "strings" +) + +type authResult int + +const ( + authFailure authResult = iota + authPartialSuccess + authSuccess +) + +// clientAuthenticate authenticates with the remote server. See RFC 4252. +func (c *connection) clientAuthenticate(config *ClientConfig) error { + // initiate user auth session + if err := c.transport.writePacket(Marshal(&serviceRequestMsg{serviceUserAuth})); err != nil { + return err + } + packet, err := c.transport.readPacket() + if err != nil { + return err + } + // The server may choose to send a SSH_MSG_EXT_INFO at this point (if we + // advertised willingness to receive one, which we always do) or not. See + // RFC 8308, Section 2.4. + extensions := make(map[string][]byte) + if len(packet) > 0 && packet[0] == msgExtInfo { + var extInfo extInfoMsg + if err := Unmarshal(packet, &extInfo); err != nil { + return err + } + payload := extInfo.Payload + for i := uint32(0); i < extInfo.NumExtensions; i++ { + name, rest, ok := parseString(payload) + if !ok { + return parseError(msgExtInfo) + } + value, rest, ok := parseString(rest) + if !ok { + return parseError(msgExtInfo) + } + extensions[string(name)] = value + payload = rest + } + packet, err = c.transport.readPacket() + if err != nil { + return err + } + } + var serviceAccept serviceAcceptMsg + if err := Unmarshal(packet, &serviceAccept); err != nil { + return err + } + + // during the authentication phase the client first attempts the "none" method + // then any untried methods suggested by the server. + var tried []string + var lastMethods []string + + sessionID := c.transport.getSessionID() + for auth := AuthMethod(new(noneAuth)); auth != nil; { + ok, methods, err := auth.auth(sessionID, config.User, c.transport, config.Rand, extensions) + if err != nil { + // On disconnect, return error immediately + if _, ok := err.(*disconnectMsg); ok { + return err + } + // We return the error later if there is no other method left to + // try. + ok = authFailure + } + if ok == authSuccess { + // success + return nil + } else if ok == authFailure { + if m := auth.method(); !contains(tried, m) { + tried = append(tried, m) + } + } + if methods == nil { + methods = lastMethods + } + lastMethods = methods + + auth = nil + + findNext: + for _, a := range config.Auth { + candidateMethod := a.method() + if contains(tried, candidateMethod) { + continue + } + for _, meth := range methods { + if meth == candidateMethod { + auth = a + break findNext + } + } + } + + if auth == nil && err != nil { + // We have an error and there are no other authentication methods to + // try, so we return it. + return err + } + } + return fmt.Errorf("ssh: unable to authenticate, attempted methods %v, no supported methods remain", tried) +} + +func contains(list []string, e string) bool { + for _, s := range list { + if s == e { + return true + } + } + return false +} + +// An AuthMethod represents an instance of an RFC 4252 authentication method. +type AuthMethod interface { + // auth authenticates user over transport t. + // Returns true if authentication is successful. + // If authentication is not successful, a []string of alternative + // method names is returned. If the slice is nil, it will be ignored + // and the previous set of possible methods will be reused. + auth(session []byte, user string, p packetConn, rand io.Reader, extensions map[string][]byte) (authResult, []string, error) + + // method returns the RFC 4252 method name. + method() string +} + +// "none" authentication, RFC 4252 section 5.2. +type noneAuth int + +func (n *noneAuth) auth(session []byte, user string, c packetConn, rand io.Reader, _ map[string][]byte) (authResult, []string, error) { + if err := c.writePacket(Marshal(&userAuthRequestMsg{ + User: user, + Service: serviceSSH, + Method: "none", + })); err != nil { + return authFailure, nil, err + } + + return handleAuthResponse(c) +} + +func (n *noneAuth) method() string { + return "none" +} + +// passwordCallback is an AuthMethod that fetches the password through +// a function call, e.g. by prompting the user. +type passwordCallback func() (password string, err error) + +func (cb passwordCallback) auth(session []byte, user string, c packetConn, rand io.Reader, _ map[string][]byte) (authResult, []string, error) { + type passwordAuthMsg struct { + User string `sshtype:"50"` + Service string + Method string + Reply bool + Password string + } + + pw, err := cb() + // REVIEW NOTE: is there a need to support skipping a password attempt? + // The program may only find out that the user doesn't have a password + // when prompting. + if err != nil { + return authFailure, nil, err + } + + if err := c.writePacket(Marshal(&passwordAuthMsg{ + User: user, + Service: serviceSSH, + Method: cb.method(), + Reply: false, + Password: pw, + })); err != nil { + return authFailure, nil, err + } + + return handleAuthResponse(c) +} + +func (cb passwordCallback) method() string { + return "password" +} + +// Password returns an AuthMethod using the given password. +func Password(secret string) AuthMethod { + return passwordCallback(func() (string, error) { return secret, nil }) +} + +// PasswordCallback returns an AuthMethod that uses a callback for +// fetching a password. +func PasswordCallback(prompt func() (secret string, err error)) AuthMethod { + return passwordCallback(prompt) +} + +type publickeyAuthMsg struct { + User string `sshtype:"50"` + Service string + Method string + // HasSig indicates to the receiver packet that the auth request is signed and + // should be used for authentication of the request. + HasSig bool + Algoname string + PubKey []byte + // Sig is tagged with "rest" so Marshal will exclude it during + // validateKey + Sig []byte `ssh:"rest"` +} + +// publicKeyCallback is an AuthMethod that uses a set of key +// pairs for authentication. +type publicKeyCallback func() ([]Signer, error) + +func (cb publicKeyCallback) method() string { + return "publickey" +} + +func pickSignatureAlgorithm(signer Signer, extensions map[string][]byte) (MultiAlgorithmSigner, string, error) { + var as MultiAlgorithmSigner + keyFormat := signer.PublicKey().Type() + + // If the signer implements MultiAlgorithmSigner we use the algorithms it + // support, if it implements AlgorithmSigner we assume it supports all + // algorithms, otherwise only the key format one. + switch s := signer.(type) { + case MultiAlgorithmSigner: + as = s + case AlgorithmSigner: + as = &multiAlgorithmSigner{ + AlgorithmSigner: s, + supportedAlgorithms: algorithmsForKeyFormat(underlyingAlgo(keyFormat)), + } + default: + as = &multiAlgorithmSigner{ + AlgorithmSigner: algorithmSignerWrapper{signer}, + supportedAlgorithms: []string{underlyingAlgo(keyFormat)}, + } + } + + getFallbackAlgo := func() (string, error) { + // Fallback to use if there is no "server-sig-algs" extension or a + // common algorithm cannot be found. We use the public key format if the + // MultiAlgorithmSigner supports it, otherwise we return an error. + if !contains(as.Algorithms(), underlyingAlgo(keyFormat)) { + return "", fmt.Errorf("ssh: no common public key signature algorithm, server only supports %q for key type %q, signer only supports %v", + underlyingAlgo(keyFormat), keyFormat, as.Algorithms()) + } + return keyFormat, nil + } + + extPayload, ok := extensions["server-sig-algs"] + if !ok { + // If there is no "server-sig-algs" extension use the fallback + // algorithm. + algo, err := getFallbackAlgo() + return as, algo, err + } + + // The server-sig-algs extension only carries underlying signature + // algorithm, but we are trying to select a protocol-level public key + // algorithm, which might be a certificate type. Extend the list of server + // supported algorithms to include the corresponding certificate algorithms. + serverAlgos := strings.Split(string(extPayload), ",") + for _, algo := range serverAlgos { + if certAlgo, ok := certificateAlgo(algo); ok { + serverAlgos = append(serverAlgos, certAlgo) + } + } + + // Filter algorithms based on those supported by MultiAlgorithmSigner. + var keyAlgos []string + for _, algo := range algorithmsForKeyFormat(keyFormat) { + if contains(as.Algorithms(), underlyingAlgo(algo)) { + keyAlgos = append(keyAlgos, algo) + } + } + + algo, err := findCommon("public key signature algorithm", keyAlgos, serverAlgos) + if err != nil { + // If there is no overlap, return the fallback algorithm to support + // servers that fail to list all supported algorithms. + algo, err := getFallbackAlgo() + return as, algo, err + } + return as, algo, nil +} + +func (cb publicKeyCallback) auth(session []byte, user string, c packetConn, rand io.Reader, extensions map[string][]byte) (authResult, []string, error) { + // Authentication is performed by sending an enquiry to test if a key is + // acceptable to the remote. If the key is acceptable, the client will + // attempt to authenticate with the valid key. If not the client will repeat + // the process with the remaining keys. + + signers, err := cb() + if err != nil { + return authFailure, nil, err + } + var methods []string + var errSigAlgo error + + origSignersLen := len(signers) + for idx := 0; idx < len(signers); idx++ { + signer := signers[idx] + pub := signer.PublicKey() + as, algo, err := pickSignatureAlgorithm(signer, extensions) + if err != nil && errSigAlgo == nil { + // If we cannot negotiate a signature algorithm store the first + // error so we can return it to provide a more meaningful message if + // no other signers work. + errSigAlgo = err + continue + } + ok, err := validateKey(pub, algo, user, c) + if err != nil { + return authFailure, nil, err + } + // OpenSSH 7.2-7.7 advertises support for rsa-sha2-256 and rsa-sha2-512 + // in the "server-sig-algs" extension but doesn't support these + // algorithms for certificate authentication, so if the server rejects + // the key try to use the obtained algorithm as if "server-sig-algs" had + // not been implemented if supported from the algorithm signer. + if !ok && idx < origSignersLen && isRSACert(algo) && algo != CertAlgoRSAv01 { + if contains(as.Algorithms(), KeyAlgoRSA) { + // We retry using the compat algorithm after all signers have + // been tried normally. + signers = append(signers, &multiAlgorithmSigner{ + AlgorithmSigner: as, + supportedAlgorithms: []string{KeyAlgoRSA}, + }) + } + } + if !ok { + continue + } + + pubKey := pub.Marshal() + data := buildDataSignedForAuth(session, userAuthRequestMsg{ + User: user, + Service: serviceSSH, + Method: cb.method(), + }, algo, pubKey) + sign, err := as.SignWithAlgorithm(rand, data, underlyingAlgo(algo)) + if err != nil { + return authFailure, nil, err + } + + // manually wrap the serialized signature in a string + s := Marshal(sign) + sig := make([]byte, stringLength(len(s))) + marshalString(sig, s) + msg := publickeyAuthMsg{ + User: user, + Service: serviceSSH, + Method: cb.method(), + HasSig: true, + Algoname: algo, + PubKey: pubKey, + Sig: sig, + } + p := Marshal(&msg) + if err := c.writePacket(p); err != nil { + return authFailure, nil, err + } + var success authResult + success, methods, err = handleAuthResponse(c) + if err != nil { + return authFailure, nil, err + } + + // If authentication succeeds or the list of available methods does not + // contain the "publickey" method, do not attempt to authenticate with any + // other keys. According to RFC 4252 Section 7, the latter can occur when + // additional authentication methods are required. + if success == authSuccess || !contains(methods, cb.method()) { + return success, methods, err + } + } + + return authFailure, methods, errSigAlgo +} + +// validateKey validates the key provided is acceptable to the server. +func validateKey(key PublicKey, algo string, user string, c packetConn) (bool, error) { + pubKey := key.Marshal() + msg := publickeyAuthMsg{ + User: user, + Service: serviceSSH, + Method: "publickey", + HasSig: false, + Algoname: algo, + PubKey: pubKey, + } + if err := c.writePacket(Marshal(&msg)); err != nil { + return false, err + } + + return confirmKeyAck(key, c) +} + +func confirmKeyAck(key PublicKey, c packetConn) (bool, error) { + pubKey := key.Marshal() + + for { + packet, err := c.readPacket() + if err != nil { + return false, err + } + switch packet[0] { + case msgUserAuthBanner: + if err := handleBannerResponse(c, packet); err != nil { + return false, err + } + case msgUserAuthPubKeyOk: + var msg userAuthPubKeyOkMsg + if err := Unmarshal(packet, &msg); err != nil { + return false, err + } + // According to RFC 4252 Section 7 the algorithm in + // SSH_MSG_USERAUTH_PK_OK should match that of the request but some + // servers send the key type instead. OpenSSH allows any algorithm + // that matches the public key, so we do the same. + // https://github.com/openssh/openssh-portable/blob/86bdd385/sshconnect2.c#L709 + if !contains(algorithmsForKeyFormat(key.Type()), msg.Algo) { + return false, nil + } + if !bytes.Equal(msg.PubKey, pubKey) { + return false, nil + } + return true, nil + case msgUserAuthFailure: + return false, nil + default: + return false, unexpectedMessageError(msgUserAuthPubKeyOk, packet[0]) + } + } +} + +// PublicKeys returns an AuthMethod that uses the given key +// pairs. +func PublicKeys(signers ...Signer) AuthMethod { + return publicKeyCallback(func() ([]Signer, error) { return signers, nil }) +} + +// PublicKeysCallback returns an AuthMethod that runs the given +// function to obtain a list of key pairs. +func PublicKeysCallback(getSigners func() (signers []Signer, err error)) AuthMethod { + return publicKeyCallback(getSigners) +} + +// handleAuthResponse returns whether the preceding authentication request succeeded +// along with a list of remaining authentication methods to try next and +// an error if an unexpected response was received. +func handleAuthResponse(c packetConn) (authResult, []string, error) { + gotMsgExtInfo := false + for { + packet, err := c.readPacket() + if err != nil { + return authFailure, nil, err + } + + switch packet[0] { + case msgUserAuthBanner: + if err := handleBannerResponse(c, packet); err != nil { + return authFailure, nil, err + } + case msgExtInfo: + // Ignore post-authentication RFC 8308 extensions, once. + if gotMsgExtInfo { + return authFailure, nil, unexpectedMessageError(msgUserAuthSuccess, packet[0]) + } + gotMsgExtInfo = true + case msgUserAuthFailure: + var msg userAuthFailureMsg + if err := Unmarshal(packet, &msg); err != nil { + return authFailure, nil, err + } + if msg.PartialSuccess { + return authPartialSuccess, msg.Methods, nil + } + return authFailure, msg.Methods, nil + case msgUserAuthSuccess: + return authSuccess, nil, nil + default: + return authFailure, nil, unexpectedMessageError(msgUserAuthSuccess, packet[0]) + } + } +} + +func handleBannerResponse(c packetConn, packet []byte) error { + var msg userAuthBannerMsg + if err := Unmarshal(packet, &msg); err != nil { + return err + } + + transport, ok := c.(*handshakeTransport) + if !ok { + return nil + } + + if transport.bannerCallback != nil { + return transport.bannerCallback(msg.Message) + } + + return nil +} + +// KeyboardInteractiveChallenge should print questions, optionally +// disabling echoing (e.g. for passwords), and return all the answers. +// Challenge may be called multiple times in a single session. After +// successful authentication, the server may send a challenge with no +// questions, for which the name and instruction messages should be +// printed. RFC 4256 section 3.3 details how the UI should behave for +// both CLI and GUI environments. +type KeyboardInteractiveChallenge func(name, instruction string, questions []string, echos []bool) (answers []string, err error) + +// KeyboardInteractive returns an AuthMethod using a prompt/response +// sequence controlled by the server. +func KeyboardInteractive(challenge KeyboardInteractiveChallenge) AuthMethod { + return challenge +} + +func (cb KeyboardInteractiveChallenge) method() string { + return "keyboard-interactive" +} + +func (cb KeyboardInteractiveChallenge) auth(session []byte, user string, c packetConn, rand io.Reader, _ map[string][]byte) (authResult, []string, error) { + type initiateMsg struct { + User string `sshtype:"50"` + Service string + Method string + Language string + Submethods string + } + + if err := c.writePacket(Marshal(&initiateMsg{ + User: user, + Service: serviceSSH, + Method: "keyboard-interactive", + })); err != nil { + return authFailure, nil, err + } + + gotMsgExtInfo := false + gotUserAuthInfoRequest := false + for { + packet, err := c.readPacket() + if err != nil { + return authFailure, nil, err + } + + // like handleAuthResponse, but with less options. + switch packet[0] { + case msgUserAuthBanner: + if err := handleBannerResponse(c, packet); err != nil { + return authFailure, nil, err + } + continue + case msgExtInfo: + // Ignore post-authentication RFC 8308 extensions, once. + if gotMsgExtInfo { + return authFailure, nil, unexpectedMessageError(msgUserAuthInfoRequest, packet[0]) + } + gotMsgExtInfo = true + continue + case msgUserAuthInfoRequest: + // OK + case msgUserAuthFailure: + var msg userAuthFailureMsg + if err := Unmarshal(packet, &msg); err != nil { + return authFailure, nil, err + } + if msg.PartialSuccess { + return authPartialSuccess, msg.Methods, nil + } + if !gotUserAuthInfoRequest { + return authFailure, msg.Methods, unexpectedMessageError(msgUserAuthInfoRequest, packet[0]) + } + return authFailure, msg.Methods, nil + case msgUserAuthSuccess: + return authSuccess, nil, nil + default: + return authFailure, nil, unexpectedMessageError(msgUserAuthInfoRequest, packet[0]) + } + + var msg userAuthInfoRequestMsg + if err := Unmarshal(packet, &msg); err != nil { + return authFailure, nil, err + } + gotUserAuthInfoRequest = true + + // Manually unpack the prompt/echo pairs. + rest := msg.Prompts + var prompts []string + var echos []bool + for i := 0; i < int(msg.NumPrompts); i++ { + prompt, r, ok := parseString(rest) + if !ok || len(r) == 0 { + return authFailure, nil, errors.New("ssh: prompt format error") + } + prompts = append(prompts, string(prompt)) + echos = append(echos, r[0] != 0) + rest = r[1:] + } + + if len(rest) != 0 { + return authFailure, nil, errors.New("ssh: extra data following keyboard-interactive pairs") + } + + answers, err := cb(msg.Name, msg.Instruction, prompts, echos) + if err != nil { + return authFailure, nil, err + } + + if len(answers) != len(prompts) { + return authFailure, nil, fmt.Errorf("ssh: incorrect number of answers from keyboard-interactive callback %d (expected %d)", len(answers), len(prompts)) + } + responseLength := 1 + 4 + for _, a := range answers { + responseLength += stringLength(len(a)) + } + serialized := make([]byte, responseLength) + p := serialized + p[0] = msgUserAuthInfoResponse + p = p[1:] + p = marshalUint32(p, uint32(len(answers))) + for _, a := range answers { + p = marshalString(p, []byte(a)) + } + + if err := c.writePacket(serialized); err != nil { + return authFailure, nil, err + } + } +} + +type retryableAuthMethod struct { + authMethod AuthMethod + maxTries int +} + +func (r *retryableAuthMethod) auth(session []byte, user string, c packetConn, rand io.Reader, extensions map[string][]byte) (ok authResult, methods []string, err error) { + for i := 0; r.maxTries <= 0 || i < r.maxTries; i++ { + ok, methods, err = r.authMethod.auth(session, user, c, rand, extensions) + if ok != authFailure || err != nil { // either success, partial success or error terminate + return ok, methods, err + } + } + return ok, methods, err +} + +func (r *retryableAuthMethod) method() string { + return r.authMethod.method() +} + +// RetryableAuthMethod is a decorator for other auth methods enabling them to +// be retried up to maxTries before considering that AuthMethod itself failed. +// If maxTries is <= 0, will retry indefinitely +// +// This is useful for interactive clients using challenge/response type +// authentication (e.g. Keyboard-Interactive, Password, etc) where the user +// could mistype their response resulting in the server issuing a +// SSH_MSG_USERAUTH_FAILURE (rfc4252 #8 [password] and rfc4256 #3.4 +// [keyboard-interactive]); Without this decorator, the non-retryable +// AuthMethod would be removed from future consideration, and never tried again +// (and so the user would never be able to retry their entry). +func RetryableAuthMethod(auth AuthMethod, maxTries int) AuthMethod { + return &retryableAuthMethod{authMethod: auth, maxTries: maxTries} +} + +// GSSAPIWithMICAuthMethod is an AuthMethod with "gssapi-with-mic" authentication. +// See RFC 4462 section 3 +// gssAPIClient is implementation of the GSSAPIClient interface, see the definition of the interface for details. +// target is the server host you want to log in to. +func GSSAPIWithMICAuthMethod(gssAPIClient GSSAPIClient, target string) AuthMethod { + if gssAPIClient == nil { + panic("gss-api client must be not nil with enable gssapi-with-mic") + } + return &gssAPIWithMICCallback{gssAPIClient: gssAPIClient, target: target} +} + +type gssAPIWithMICCallback struct { + gssAPIClient GSSAPIClient + target string +} + +func (g *gssAPIWithMICCallback) auth(session []byte, user string, c packetConn, rand io.Reader, _ map[string][]byte) (authResult, []string, error) { + m := &userAuthRequestMsg{ + User: user, + Service: serviceSSH, + Method: g.method(), + } + // The GSS-API authentication method is initiated when the client sends an SSH_MSG_USERAUTH_REQUEST. + // See RFC 4462 section 3.2. + m.Payload = appendU32(m.Payload, 1) + m.Payload = appendString(m.Payload, string(krb5OID)) + if err := c.writePacket(Marshal(m)); err != nil { + return authFailure, nil, err + } + // The server responds to the SSH_MSG_USERAUTH_REQUEST with either an + // SSH_MSG_USERAUTH_FAILURE if none of the mechanisms are supported or + // with an SSH_MSG_USERAUTH_GSSAPI_RESPONSE. + // See RFC 4462 section 3.3. + // OpenSSH supports Kerberos V5 mechanism only for GSS-API authentication,so I don't want to check + // selected mech if it is valid. + packet, err := c.readPacket() + if err != nil { + return authFailure, nil, err + } + userAuthGSSAPIResp := &userAuthGSSAPIResponse{} + if err := Unmarshal(packet, userAuthGSSAPIResp); err != nil { + return authFailure, nil, err + } + // Start the loop into the exchange token. + // See RFC 4462 section 3.4. + var token []byte + defer g.gssAPIClient.DeleteSecContext() + for { + // Initiates the establishment of a security context between the application and a remote peer. + nextToken, needContinue, err := g.gssAPIClient.InitSecContext("host@"+g.target, token, false) + if err != nil { + return authFailure, nil, err + } + if len(nextToken) > 0 { + if err := c.writePacket(Marshal(&userAuthGSSAPIToken{ + Token: nextToken, + })); err != nil { + return authFailure, nil, err + } + } + if !needContinue { + break + } + packet, err = c.readPacket() + if err != nil { + return authFailure, nil, err + } + switch packet[0] { + case msgUserAuthFailure: + var msg userAuthFailureMsg + if err := Unmarshal(packet, &msg); err != nil { + return authFailure, nil, err + } + if msg.PartialSuccess { + return authPartialSuccess, msg.Methods, nil + } + return authFailure, msg.Methods, nil + case msgUserAuthGSSAPIError: + userAuthGSSAPIErrorResp := &userAuthGSSAPIError{} + if err := Unmarshal(packet, userAuthGSSAPIErrorResp); err != nil { + return authFailure, nil, err + } + return authFailure, nil, fmt.Errorf("GSS-API Error:\n"+ + "Major Status: %d\n"+ + "Minor Status: %d\n"+ + "Error Message: %s\n", userAuthGSSAPIErrorResp.MajorStatus, userAuthGSSAPIErrorResp.MinorStatus, + userAuthGSSAPIErrorResp.Message) + case msgUserAuthGSSAPIToken: + userAuthGSSAPITokenReq := &userAuthGSSAPIToken{} + if err := Unmarshal(packet, userAuthGSSAPITokenReq); err != nil { + return authFailure, nil, err + } + token = userAuthGSSAPITokenReq.Token + } + } + // Binding Encryption Keys. + // See RFC 4462 section 3.5. + micField := buildMIC(string(session), user, "ssh-connection", "gssapi-with-mic") + micToken, err := g.gssAPIClient.GetMIC(micField) + if err != nil { + return authFailure, nil, err + } + if err := c.writePacket(Marshal(&userAuthGSSAPIMIC{ + MIC: micToken, + })); err != nil { + return authFailure, nil, err + } + return handleAuthResponse(c) +} + +func (g *gssAPIWithMICCallback) method() string { + return "gssapi-with-mic" +} diff --git a/tests/vendor/golang.org/x/crypto/ssh/common.go b/tests/vendor/golang.org/x/crypto/ssh/common.go new file mode 100644 index 000000000..0415d3396 --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/ssh/common.go @@ -0,0 +1,651 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "crypto" + "crypto/rand" + "fmt" + "io" + "math" + "slices" + "sync" + + _ "crypto/sha1" + _ "crypto/sha256" + _ "crypto/sha512" +) + +// These are string constants in the SSH protocol. +const ( + compressionNone = "none" + serviceUserAuth = "ssh-userauth" + serviceSSH = "ssh-connection" +) + +// The ciphers currently or previously implemented by this library, to use in +// [Config.Ciphers]. For a list, see the [Algorithms.Ciphers] returned by +// [SupportedAlgorithms] or [InsecureAlgorithms]. +const ( + CipherAES128GCM = "aes128-gcm@openssh.com" + CipherAES256GCM = "aes256-gcm@openssh.com" + CipherChaCha20Poly1305 = "chacha20-poly1305@openssh.com" + CipherAES128CTR = "aes128-ctr" + CipherAES192CTR = "aes192-ctr" + CipherAES256CTR = "aes256-ctr" + InsecureCipherAES128CBC = "aes128-cbc" + InsecureCipherTripleDESCBC = "3des-cbc" + InsecureCipherRC4 = "arcfour" + InsecureCipherRC4128 = "arcfour128" + InsecureCipherRC4256 = "arcfour256" +) + +// The key exchanges currently or previously implemented by this library, to use +// in [Config.KeyExchanges]. For a list, see the +// [Algorithms.KeyExchanges] returned by [SupportedAlgorithms] or +// [InsecureAlgorithms]. +const ( + InsecureKeyExchangeDH1SHA1 = "diffie-hellman-group1-sha1" + InsecureKeyExchangeDH14SHA1 = "diffie-hellman-group14-sha1" + KeyExchangeDH14SHA256 = "diffie-hellman-group14-sha256" + KeyExchangeDH16SHA512 = "diffie-hellman-group16-sha512" + KeyExchangeECDHP256 = "ecdh-sha2-nistp256" + KeyExchangeECDHP384 = "ecdh-sha2-nistp384" + KeyExchangeECDHP521 = "ecdh-sha2-nistp521" + KeyExchangeCurve25519 = "curve25519-sha256" + InsecureKeyExchangeDHGEXSHA1 = "diffie-hellman-group-exchange-sha1" + KeyExchangeDHGEXSHA256 = "diffie-hellman-group-exchange-sha256" + // KeyExchangeMLKEM768X25519 is supported from Go 1.24. + KeyExchangeMLKEM768X25519 = "mlkem768x25519-sha256" + + // An alias for KeyExchangeCurve25519SHA256. This kex ID will be added if + // KeyExchangeCurve25519SHA256 is requested for backward compatibility with + // OpenSSH versions up to 7.2. + keyExchangeCurve25519LibSSH = "curve25519-sha256@libssh.org" +) + +// The message authentication code (MAC) currently or previously implemented by +// this library, to use in [Config.MACs]. For a list, see the +// [Algorithms.MACs] returned by [SupportedAlgorithms] or +// [InsecureAlgorithms]. +const ( + HMACSHA256ETM = "hmac-sha2-256-etm@openssh.com" + HMACSHA512ETM = "hmac-sha2-512-etm@openssh.com" + HMACSHA256 = "hmac-sha2-256" + HMACSHA512 = "hmac-sha2-512" + HMACSHA1 = "hmac-sha1" + InsecureHMACSHA196 = "hmac-sha1-96" +) + +var ( + // supportedKexAlgos specifies key-exchange algorithms implemented by this + // package in preference order, excluding those with security issues. + supportedKexAlgos = []string{ + KeyExchangeCurve25519, + KeyExchangeECDHP256, + KeyExchangeECDHP384, + KeyExchangeECDHP521, + KeyExchangeDH14SHA256, + KeyExchangeDH16SHA512, + KeyExchangeDHGEXSHA256, + } + // defaultKexAlgos specifies the default preference for key-exchange + // algorithms in preference order. + defaultKexAlgos = []string{ + KeyExchangeCurve25519, + KeyExchangeECDHP256, + KeyExchangeECDHP384, + KeyExchangeECDHP521, + KeyExchangeDH14SHA256, + InsecureKeyExchangeDH14SHA1, + } + // insecureKexAlgos specifies key-exchange algorithms implemented by this + // package and which have security issues. + insecureKexAlgos = []string{ + InsecureKeyExchangeDH14SHA1, + InsecureKeyExchangeDH1SHA1, + InsecureKeyExchangeDHGEXSHA1, + } + // supportedCiphers specifies cipher algorithms implemented by this package + // in preference order, excluding those with security issues. + supportedCiphers = []string{ + CipherAES128GCM, + CipherAES256GCM, + CipherChaCha20Poly1305, + CipherAES128CTR, + CipherAES192CTR, + CipherAES256CTR, + } + // defaultCiphers specifies the default preference for ciphers algorithms + // in preference order. + defaultCiphers = supportedCiphers + // insecureCiphers specifies cipher algorithms implemented by this + // package and which have security issues. + insecureCiphers = []string{ + InsecureCipherAES128CBC, + InsecureCipherTripleDESCBC, + InsecureCipherRC4256, + InsecureCipherRC4128, + InsecureCipherRC4, + } + // supportedMACs specifies MAC algorithms implemented by this package in + // preference order, excluding those with security issues. + supportedMACs = []string{ + HMACSHA256ETM, + HMACSHA512ETM, + HMACSHA256, + HMACSHA512, + HMACSHA1, + } + // defaultMACs specifies the default preference for MAC algorithms in + // preference order. + defaultMACs = []string{ + HMACSHA256ETM, + HMACSHA512ETM, + HMACSHA256, + HMACSHA512, + HMACSHA1, + InsecureHMACSHA196, + } + // insecureMACs specifies MAC algorithms implemented by this + // package and which have security issues. + insecureMACs = []string{ + InsecureHMACSHA196, + } + // supportedHostKeyAlgos specifies the supported host-key algorithms (i.e. + // methods of authenticating servers) implemented by this package in + // preference order, excluding those with security issues. + supportedHostKeyAlgos = []string{ + CertAlgoRSASHA256v01, + CertAlgoRSASHA512v01, + CertAlgoECDSA256v01, + CertAlgoECDSA384v01, + CertAlgoECDSA521v01, + CertAlgoED25519v01, + KeyAlgoRSASHA256, + KeyAlgoRSASHA512, + KeyAlgoECDSA256, + KeyAlgoECDSA384, + KeyAlgoECDSA521, + KeyAlgoED25519, + } + // defaultHostKeyAlgos specifies the default preference for host-key + // algorithms in preference order. + defaultHostKeyAlgos = []string{ + CertAlgoRSASHA256v01, + CertAlgoRSASHA512v01, + CertAlgoRSAv01, + InsecureCertAlgoDSAv01, + CertAlgoECDSA256v01, + CertAlgoECDSA384v01, + CertAlgoECDSA521v01, + CertAlgoED25519v01, + KeyAlgoECDSA256, + KeyAlgoECDSA384, + KeyAlgoECDSA521, + KeyAlgoRSASHA256, + KeyAlgoRSASHA512, + KeyAlgoRSA, + InsecureKeyAlgoDSA, + KeyAlgoED25519, + } + // insecureHostKeyAlgos specifies host-key algorithms implemented by this + // package and which have security issues. + insecureHostKeyAlgos = []string{ + KeyAlgoRSA, + InsecureKeyAlgoDSA, + CertAlgoRSAv01, + InsecureCertAlgoDSAv01, + } + // supportedPubKeyAuthAlgos specifies the supported client public key + // authentication algorithms. Note that this doesn't include certificate + // types since those use the underlying algorithm. Order is irrelevant. + supportedPubKeyAuthAlgos = []string{ + KeyAlgoED25519, + KeyAlgoSKED25519, + KeyAlgoSKECDSA256, + KeyAlgoECDSA256, + KeyAlgoECDSA384, + KeyAlgoECDSA521, + KeyAlgoRSASHA256, + KeyAlgoRSASHA512, + } + + // defaultPubKeyAuthAlgos specifies the preferred client public key + // authentication algorithms. This list is sent to the client if it supports + // the server-sig-algs extension. Order is irrelevant. + defaultPubKeyAuthAlgos = []string{ + KeyAlgoED25519, + KeyAlgoSKED25519, + KeyAlgoSKECDSA256, + KeyAlgoECDSA256, + KeyAlgoECDSA384, + KeyAlgoECDSA521, + KeyAlgoRSASHA256, + KeyAlgoRSASHA512, + KeyAlgoRSA, + InsecureKeyAlgoDSA, + } + // insecurePubKeyAuthAlgos specifies client public key authentication + // algorithms implemented by this package and which have security issues. + insecurePubKeyAuthAlgos = []string{ + KeyAlgoRSA, + InsecureKeyAlgoDSA, + } +) + +// NegotiatedAlgorithms defines algorithms negotiated between client and server. +type NegotiatedAlgorithms struct { + KeyExchange string + HostKey string + Read DirectionAlgorithms + Write DirectionAlgorithms +} + +// Algorithms defines a set of algorithms that can be configured in the client +// or server config for negotiation during a handshake. +type Algorithms struct { + KeyExchanges []string + Ciphers []string + MACs []string + HostKeys []string + PublicKeyAuths []string +} + +// SupportedAlgorithms returns algorithms currently implemented by this package, +// excluding those with security issues, which are returned by +// InsecureAlgorithms. The algorithms listed here are in preference order. +func SupportedAlgorithms() Algorithms { + return Algorithms{ + Ciphers: slices.Clone(supportedCiphers), + MACs: slices.Clone(supportedMACs), + KeyExchanges: slices.Clone(supportedKexAlgos), + HostKeys: slices.Clone(supportedHostKeyAlgos), + PublicKeyAuths: slices.Clone(supportedPubKeyAuthAlgos), + } +} + +// InsecureAlgorithms returns algorithms currently implemented by this package +// and which have security issues. +func InsecureAlgorithms() Algorithms { + return Algorithms{ + KeyExchanges: slices.Clone(insecureKexAlgos), + Ciphers: slices.Clone(insecureCiphers), + MACs: slices.Clone(insecureMACs), + HostKeys: slices.Clone(insecureHostKeyAlgos), + PublicKeyAuths: slices.Clone(insecurePubKeyAuthAlgos), + } +} + +var supportedCompressions = []string{compressionNone} + +// hashFuncs keeps the mapping of supported signature algorithms to their +// respective hashes needed for signing and verification. +var hashFuncs = map[string]crypto.Hash{ + KeyAlgoRSA: crypto.SHA1, + KeyAlgoRSASHA256: crypto.SHA256, + KeyAlgoRSASHA512: crypto.SHA512, + InsecureKeyAlgoDSA: crypto.SHA1, + KeyAlgoECDSA256: crypto.SHA256, + KeyAlgoECDSA384: crypto.SHA384, + KeyAlgoECDSA521: crypto.SHA512, + // KeyAlgoED25519 doesn't pre-hash. + KeyAlgoSKECDSA256: crypto.SHA256, + KeyAlgoSKED25519: crypto.SHA256, +} + +// algorithmsForKeyFormat returns the supported signature algorithms for a given +// public key format (PublicKey.Type), in order of preference. See RFC 8332, +// Section 2. See also the note in sendKexInit on backwards compatibility. +func algorithmsForKeyFormat(keyFormat string) []string { + switch keyFormat { + case KeyAlgoRSA: + return []string{KeyAlgoRSASHA256, KeyAlgoRSASHA512, KeyAlgoRSA} + case CertAlgoRSAv01: + return []string{CertAlgoRSASHA256v01, CertAlgoRSASHA512v01, CertAlgoRSAv01} + default: + return []string{keyFormat} + } +} + +// isRSA returns whether algo is a supported RSA algorithm, including certificate +// algorithms. +func isRSA(algo string) bool { + algos := algorithmsForKeyFormat(KeyAlgoRSA) + return contains(algos, underlyingAlgo(algo)) +} + +func isRSACert(algo string) bool { + _, ok := certKeyAlgoNames[algo] + if !ok { + return false + } + return isRSA(algo) +} + +// unexpectedMessageError results when the SSH message that we received didn't +// match what we wanted. +func unexpectedMessageError(expected, got uint8) error { + return fmt.Errorf("ssh: unexpected message type %d (expected %d)", got, expected) +} + +// parseError results from a malformed SSH message. +func parseError(tag uint8) error { + return fmt.Errorf("ssh: parse error in message type %d", tag) +} + +func findCommon(what string, client []string, server []string) (common string, err error) { + for _, c := range client { + for _, s := range server { + if c == s { + return c, nil + } + } + } + return "", fmt.Errorf("ssh: no common algorithm for %s; client offered: %v, server offered: %v", what, client, server) +} + +// DirectionAlgorithms defines the algorithms negotiated in one direction +// (either read or write). +type DirectionAlgorithms struct { + Cipher string + MAC string + compression string +} + +// rekeyBytes returns a rekeying intervals in bytes. +func (a *DirectionAlgorithms) rekeyBytes() int64 { + // According to RFC 4344 block ciphers should rekey after + // 2^(BLOCKSIZE/4) blocks. For all AES flavors BLOCKSIZE is + // 128. + switch a.Cipher { + case CipherAES128CTR, CipherAES192CTR, CipherAES256CTR, CipherAES128GCM, CipherAES256GCM, InsecureCipherAES128CBC: + return 16 * (1 << 32) + + } + + // For others, stick with RFC 4253 recommendation to rekey after 1 Gb of data. + return 1 << 30 +} + +var aeadCiphers = map[string]bool{ + CipherAES128GCM: true, + CipherAES256GCM: true, + CipherChaCha20Poly1305: true, +} + +func findAgreedAlgorithms(isClient bool, clientKexInit, serverKexInit *kexInitMsg) (algs *NegotiatedAlgorithms, err error) { + result := &NegotiatedAlgorithms{} + + result.KeyExchange, err = findCommon("key exchange", clientKexInit.KexAlgos, serverKexInit.KexAlgos) + if err != nil { + return + } + + result.HostKey, err = findCommon("host key", clientKexInit.ServerHostKeyAlgos, serverKexInit.ServerHostKeyAlgos) + if err != nil { + return + } + + stoc, ctos := &result.Write, &result.Read + if isClient { + ctos, stoc = stoc, ctos + } + + ctos.Cipher, err = findCommon("client to server cipher", clientKexInit.CiphersClientServer, serverKexInit.CiphersClientServer) + if err != nil { + return + } + + stoc.Cipher, err = findCommon("server to client cipher", clientKexInit.CiphersServerClient, serverKexInit.CiphersServerClient) + if err != nil { + return + } + + if !aeadCiphers[ctos.Cipher] { + ctos.MAC, err = findCommon("client to server MAC", clientKexInit.MACsClientServer, serverKexInit.MACsClientServer) + if err != nil { + return + } + } + + if !aeadCiphers[stoc.Cipher] { + stoc.MAC, err = findCommon("server to client MAC", clientKexInit.MACsServerClient, serverKexInit.MACsServerClient) + if err != nil { + return + } + } + + ctos.compression, err = findCommon("client to server compression", clientKexInit.CompressionClientServer, serverKexInit.CompressionClientServer) + if err != nil { + return + } + + stoc.compression, err = findCommon("server to client compression", clientKexInit.CompressionServerClient, serverKexInit.CompressionServerClient) + if err != nil { + return + } + + return result, nil +} + +// If rekeythreshold is too small, we can't make any progress sending +// stuff. +const minRekeyThreshold uint64 = 256 + +// Config contains configuration data common to both ServerConfig and +// ClientConfig. +type Config struct { + // Rand provides the source of entropy for cryptographic + // primitives. If Rand is nil, the cryptographic random reader + // in package crypto/rand will be used. + Rand io.Reader + + // The maximum number of bytes sent or received after which a + // new key is negotiated. It must be at least 256. If + // unspecified, a size suitable for the chosen cipher is used. + RekeyThreshold uint64 + + // The allowed key exchanges algorithms. If unspecified then a default set + // of algorithms is used. Unsupported values are silently ignored. + KeyExchanges []string + + // The allowed cipher algorithms. If unspecified then a sensible default is + // used. Unsupported values are silently ignored. + Ciphers []string + + // The allowed MAC algorithms. If unspecified then a sensible default is + // used. Unsupported values are silently ignored. + MACs []string +} + +// SetDefaults sets sensible values for unset fields in config. This is +// exported for testing: Configs passed to SSH functions are copied and have +// default values set automatically. +func (c *Config) SetDefaults() { + if c.Rand == nil { + c.Rand = rand.Reader + } + if c.Ciphers == nil { + c.Ciphers = defaultCiphers + } + var ciphers []string + for _, c := range c.Ciphers { + if cipherModes[c] != nil { + // Ignore the cipher if we have no cipherModes definition. + ciphers = append(ciphers, c) + } + } + c.Ciphers = ciphers + + if c.KeyExchanges == nil { + c.KeyExchanges = defaultKexAlgos + } + var kexs []string + for _, k := range c.KeyExchanges { + if kexAlgoMap[k] != nil { + // Ignore the KEX if we have no kexAlgoMap definition. + kexs = append(kexs, k) + if k == KeyExchangeCurve25519 && !contains(c.KeyExchanges, keyExchangeCurve25519LibSSH) { + kexs = append(kexs, keyExchangeCurve25519LibSSH) + } + } + } + c.KeyExchanges = kexs + + if c.MACs == nil { + c.MACs = defaultMACs + } + var macs []string + for _, m := range c.MACs { + if macModes[m] != nil { + // Ignore the MAC if we have no macModes definition. + macs = append(macs, m) + } + } + c.MACs = macs + + if c.RekeyThreshold == 0 { + // cipher specific default + } else if c.RekeyThreshold < minRekeyThreshold { + c.RekeyThreshold = minRekeyThreshold + } else if c.RekeyThreshold >= math.MaxInt64 { + // Avoid weirdness if somebody uses -1 as a threshold. + c.RekeyThreshold = math.MaxInt64 + } +} + +// buildDataSignedForAuth returns the data that is signed in order to prove +// possession of a private key. See RFC 4252, section 7. algo is the advertised +// algorithm, and may be a certificate type. +func buildDataSignedForAuth(sessionID []byte, req userAuthRequestMsg, algo string, pubKey []byte) []byte { + data := struct { + Session []byte + Type byte + User string + Service string + Method string + Sign bool + Algo string + PubKey []byte + }{ + sessionID, + msgUserAuthRequest, + req.User, + req.Service, + req.Method, + true, + algo, + pubKey, + } + return Marshal(data) +} + +func appendU16(buf []byte, n uint16) []byte { + return append(buf, byte(n>>8), byte(n)) +} + +func appendU32(buf []byte, n uint32) []byte { + return append(buf, byte(n>>24), byte(n>>16), byte(n>>8), byte(n)) +} + +func appendU64(buf []byte, n uint64) []byte { + return append(buf, + byte(n>>56), byte(n>>48), byte(n>>40), byte(n>>32), + byte(n>>24), byte(n>>16), byte(n>>8), byte(n)) +} + +func appendInt(buf []byte, n int) []byte { + return appendU32(buf, uint32(n)) +} + +func appendString(buf []byte, s string) []byte { + buf = appendU32(buf, uint32(len(s))) + buf = append(buf, s...) + return buf +} + +func appendBool(buf []byte, b bool) []byte { + if b { + return append(buf, 1) + } + return append(buf, 0) +} + +// newCond is a helper to hide the fact that there is no usable zero +// value for sync.Cond. +func newCond() *sync.Cond { return sync.NewCond(new(sync.Mutex)) } + +// window represents the buffer available to clients +// wishing to write to a channel. +type window struct { + *sync.Cond + win uint32 // RFC 4254 5.2 says the window size can grow to 2^32-1 + writeWaiters int + closed bool +} + +// add adds win to the amount of window available +// for consumers. +func (w *window) add(win uint32) bool { + // a zero sized window adjust is a noop. + if win == 0 { + return true + } + w.L.Lock() + if w.win+win < win { + w.L.Unlock() + return false + } + w.win += win + // It is unusual that multiple goroutines would be attempting to reserve + // window space, but not guaranteed. Use broadcast to notify all waiters + // that additional window is available. + w.Broadcast() + w.L.Unlock() + return true +} + +// close sets the window to closed, so all reservations fail +// immediately. +func (w *window) close() { + w.L.Lock() + w.closed = true + w.Broadcast() + w.L.Unlock() +} + +// reserve reserves win from the available window capacity. +// If no capacity remains, reserve will block. reserve may +// return less than requested. +func (w *window) reserve(win uint32) (uint32, error) { + var err error + w.L.Lock() + w.writeWaiters++ + w.Broadcast() + for w.win == 0 && !w.closed { + w.Wait() + } + w.writeWaiters-- + if w.win < win { + win = w.win + } + w.win -= win + if w.closed { + err = io.EOF + } + w.L.Unlock() + return win, err +} + +// waitWriterBlocked waits until some goroutine is blocked for further +// writes. It is used in tests only. +func (w *window) waitWriterBlocked() { + w.Cond.L.Lock() + for w.writeWaiters == 0 { + w.Cond.Wait() + } + w.Cond.L.Unlock() +} diff --git a/tests/vendor/golang.org/x/crypto/ssh/connection.go b/tests/vendor/golang.org/x/crypto/ssh/connection.go new file mode 100644 index 000000000..613a71a7b --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/ssh/connection.go @@ -0,0 +1,155 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "fmt" + "net" +) + +// OpenChannelError is returned if the other side rejects an +// OpenChannel request. +type OpenChannelError struct { + Reason RejectionReason + Message string +} + +func (e *OpenChannelError) Error() string { + return fmt.Sprintf("ssh: rejected: %s (%s)", e.Reason, e.Message) +} + +// ConnMetadata holds metadata for the connection. +type ConnMetadata interface { + // User returns the user ID for this connection. + User() string + + // SessionID returns the session hash, also denoted by H. + SessionID() []byte + + // ClientVersion returns the client's version string as hashed + // into the session ID. + ClientVersion() []byte + + // ServerVersion returns the server's version string as hashed + // into the session ID. + ServerVersion() []byte + + // RemoteAddr returns the remote address for this connection. + RemoteAddr() net.Addr + + // LocalAddr returns the local address for this connection. + LocalAddr() net.Addr +} + +// Conn represents an SSH connection for both server and client roles. +// Conn is the basis for implementing an application layer, such +// as ClientConn, which implements the traditional shell access for +// clients. +type Conn interface { + ConnMetadata + + // SendRequest sends a global request, and returns the + // reply. If wantReply is true, it returns the response status + // and payload. See also RFC 4254, section 4. + SendRequest(name string, wantReply bool, payload []byte) (bool, []byte, error) + + // OpenChannel tries to open an channel. If the request is + // rejected, it returns *OpenChannelError. On success it returns + // the SSH Channel and a Go channel for incoming, out-of-band + // requests. The Go channel must be serviced, or the + // connection will hang. + OpenChannel(name string, data []byte) (Channel, <-chan *Request, error) + + // Close closes the underlying network connection + Close() error + + // Wait blocks until the connection has shut down, and returns the + // error causing the shutdown. + Wait() error + + // TODO(hanwen): consider exposing: + // RequestKeyChange + // Disconnect +} + +// AlgorithmsConnMetadata is a ConnMetadata that can return the algorithms +// negotiated between client and server. +type AlgorithmsConnMetadata interface { + ConnMetadata + Algorithms() NegotiatedAlgorithms +} + +// DiscardRequests consumes and rejects all requests from the +// passed-in channel. +func DiscardRequests(in <-chan *Request) { + for req := range in { + if req.WantReply { + req.Reply(false, nil) + } + } +} + +// A connection represents an incoming connection. +type connection struct { + transport *handshakeTransport + sshConn + + // The connection protocol. + *mux +} + +func (c *connection) Close() error { + return c.sshConn.conn.Close() +} + +// sshConn provides net.Conn metadata, but disallows direct reads and +// writes. +type sshConn struct { + conn net.Conn + + user string + sessionID []byte + clientVersion []byte + serverVersion []byte + algorithms NegotiatedAlgorithms +} + +func dup(src []byte) []byte { + dst := make([]byte, len(src)) + copy(dst, src) + return dst +} + +func (c *sshConn) User() string { + return c.user +} + +func (c *sshConn) RemoteAddr() net.Addr { + return c.conn.RemoteAddr() +} + +func (c *sshConn) Close() error { + return c.conn.Close() +} + +func (c *sshConn) LocalAddr() net.Addr { + return c.conn.LocalAddr() +} + +func (c *sshConn) SessionID() []byte { + return dup(c.sessionID) +} + +func (c *sshConn) ClientVersion() []byte { + return dup(c.clientVersion) +} + +func (c *sshConn) ServerVersion() []byte { + return dup(c.serverVersion) +} + +func (c *sshConn) Algorithms() NegotiatedAlgorithms { + return c.algorithms +} diff --git a/tests/vendor/golang.org/x/crypto/ssh/doc.go b/tests/vendor/golang.org/x/crypto/ssh/doc.go new file mode 100644 index 000000000..f5d352fe3 --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/ssh/doc.go @@ -0,0 +1,23 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +/* +Package ssh implements an SSH client and server. + +SSH is a transport security protocol, an authentication protocol and a +family of application protocols. The most typical application level +protocol is a remote shell and this is specifically implemented. However, +the multiplexed nature of SSH is exposed to users that wish to support +others. + +References: + + [PROTOCOL]: https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/PROTOCOL?rev=HEAD + [PROTOCOL.certkeys]: http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/PROTOCOL.certkeys?rev=HEAD + [SSH-PARAMETERS]: http://www.iana.org/assignments/ssh-parameters/ssh-parameters.xml#ssh-parameters-1 + +This package does not fall under the stability promise of the Go language itself, +so its API may be changed when pressing needs arise. +*/ +package ssh diff --git a/tests/vendor/golang.org/x/crypto/ssh/handshake.go b/tests/vendor/golang.org/x/crypto/ssh/handshake.go new file mode 100644 index 000000000..a90bfe331 --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/ssh/handshake.go @@ -0,0 +1,846 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "errors" + "fmt" + "io" + "log" + "net" + "strings" + "sync" +) + +// debugHandshake, if set, prints messages sent and received. Key +// exchange messages are printed as if DH were used, so the debug +// messages are wrong when using ECDH. +const debugHandshake = false + +// chanSize sets the amount of buffering SSH connections. This is +// primarily for testing: setting chanSize=0 uncovers deadlocks more +// quickly. +const chanSize = 16 + +// maxPendingPackets sets the maximum number of packets to queue while waiting +// for KEX to complete. This limits the total pending data to maxPendingPackets +// * maxPacket bytes, which is ~16.8MB. +const maxPendingPackets = 64 + +// keyingTransport is a packet based transport that supports key +// changes. It need not be thread-safe. It should pass through +// msgNewKeys in both directions. +type keyingTransport interface { + packetConn + + // prepareKeyChange sets up a key change. The key change for a + // direction will be effected if a msgNewKeys message is sent + // or received. + prepareKeyChange(*NegotiatedAlgorithms, *kexResult) error + + // setStrictMode sets the strict KEX mode, notably triggering + // sequence number resets on sending or receiving msgNewKeys. + // If the sequence number is already > 1 when setStrictMode + // is called, an error is returned. + setStrictMode() error + + // setInitialKEXDone indicates to the transport that the initial key exchange + // was completed + setInitialKEXDone() +} + +// handshakeTransport implements rekeying on top of a keyingTransport +// and offers a thread-safe writePacket() interface. +type handshakeTransport struct { + conn keyingTransport + config *Config + + serverVersion []byte + clientVersion []byte + + // hostKeys is non-empty if we are the server. In that case, + // it contains all host keys that can be used to sign the + // connection. + hostKeys []Signer + + // publicKeyAuthAlgorithms is non-empty if we are the server. In that case, + // it contains the supported client public key authentication algorithms. + publicKeyAuthAlgorithms []string + + // hostKeyAlgorithms is non-empty if we are the client. In that case, + // we accept these key types from the server as host key. + hostKeyAlgorithms []string + + // On read error, incoming is closed, and readError is set. + incoming chan []byte + readError error + + mu sync.Mutex + // Condition for the above mutex. It is used to notify a completed key + // exchange or a write failure. Writes can wait for this condition while a + // key exchange is in progress. + writeCond *sync.Cond + writeError error + sentInitPacket []byte + sentInitMsg *kexInitMsg + // Used to queue writes when a key exchange is in progress. The length is + // limited by pendingPacketsSize. Once full, writes will block until the key + // exchange is completed or an error occurs. If not empty, it is emptied + // all at once when the key exchange is completed in kexLoop. + pendingPackets [][]byte + writePacketsLeft uint32 + writeBytesLeft int64 + userAuthComplete bool // whether the user authentication phase is complete + + // If the read loop wants to schedule a kex, it pings this + // channel, and the write loop will send out a kex + // message. + requestKex chan struct{} + + // If the other side requests or confirms a kex, its kexInit + // packet is sent here for the write loop to find it. + startKex chan *pendingKex + kexLoopDone chan struct{} // closed (with writeError non-nil) when kexLoop exits + + // data for host key checking + hostKeyCallback HostKeyCallback + dialAddress string + remoteAddr net.Addr + + // bannerCallback is non-empty if we are the client and it has been set in + // ClientConfig. In that case it is called during the user authentication + // dance to handle a custom server's message. + bannerCallback BannerCallback + + // Algorithms agreed in the last key exchange. + algorithms *NegotiatedAlgorithms + + // Counters exclusively owned by readLoop. + readPacketsLeft uint32 + readBytesLeft int64 + + // The session ID or nil if first kex did not complete yet. + sessionID []byte + + // strictMode indicates if the other side of the handshake indicated + // that we should be following the strict KEX protocol restrictions. + strictMode bool +} + +type pendingKex struct { + otherInit []byte + done chan error +} + +func newHandshakeTransport(conn keyingTransport, config *Config, clientVersion, serverVersion []byte) *handshakeTransport { + t := &handshakeTransport{ + conn: conn, + serverVersion: serverVersion, + clientVersion: clientVersion, + incoming: make(chan []byte, chanSize), + requestKex: make(chan struct{}, 1), + startKex: make(chan *pendingKex), + kexLoopDone: make(chan struct{}), + + config: config, + } + t.writeCond = sync.NewCond(&t.mu) + t.resetReadThresholds() + t.resetWriteThresholds() + + // We always start with a mandatory key exchange. + t.requestKex <- struct{}{} + return t +} + +func newClientTransport(conn keyingTransport, clientVersion, serverVersion []byte, config *ClientConfig, dialAddr string, addr net.Addr) *handshakeTransport { + t := newHandshakeTransport(conn, &config.Config, clientVersion, serverVersion) + t.dialAddress = dialAddr + t.remoteAddr = addr + t.hostKeyCallback = config.HostKeyCallback + t.bannerCallback = config.BannerCallback + if config.HostKeyAlgorithms != nil { + t.hostKeyAlgorithms = config.HostKeyAlgorithms + } else { + t.hostKeyAlgorithms = defaultHostKeyAlgos + } + go t.readLoop() + go t.kexLoop() + return t +} + +func newServerTransport(conn keyingTransport, clientVersion, serverVersion []byte, config *ServerConfig) *handshakeTransport { + t := newHandshakeTransport(conn, &config.Config, clientVersion, serverVersion) + t.hostKeys = config.hostKeys + t.publicKeyAuthAlgorithms = config.PublicKeyAuthAlgorithms + go t.readLoop() + go t.kexLoop() + return t +} + +func (t *handshakeTransport) getSessionID() []byte { + return t.sessionID +} + +func (t *handshakeTransport) getAlgorithms() NegotiatedAlgorithms { + return *t.algorithms +} + +// waitSession waits for the session to be established. This should be +// the first thing to call after instantiating handshakeTransport. +func (t *handshakeTransport) waitSession() error { + p, err := t.readPacket() + if err != nil { + return err + } + if p[0] != msgNewKeys { + return fmt.Errorf("ssh: first packet should be msgNewKeys") + } + + return nil +} + +func (t *handshakeTransport) id() string { + if len(t.hostKeys) > 0 { + return "server" + } + return "client" +} + +func (t *handshakeTransport) printPacket(p []byte, write bool) { + action := "got" + if write { + action = "sent" + } + + if p[0] == msgChannelData || p[0] == msgChannelExtendedData { + log.Printf("%s %s data (packet %d bytes)", t.id(), action, len(p)) + } else { + msg, err := decode(p) + log.Printf("%s %s %T %v (%v)", t.id(), action, msg, msg, err) + } +} + +func (t *handshakeTransport) readPacket() ([]byte, error) { + p, ok := <-t.incoming + if !ok { + return nil, t.readError + } + return p, nil +} + +func (t *handshakeTransport) readLoop() { + first := true + for { + p, err := t.readOnePacket(first) + first = false + if err != nil { + t.readError = err + close(t.incoming) + break + } + // If this is the first kex, and strict KEX mode is enabled, + // we don't ignore any messages, as they may be used to manipulate + // the packet sequence numbers. + if !(t.sessionID == nil && t.strictMode) && (p[0] == msgIgnore || p[0] == msgDebug) { + continue + } + t.incoming <- p + } + + // Stop writers too. + t.recordWriteError(t.readError) + + // Unblock the writer should it wait for this. + close(t.startKex) + + // Don't close t.requestKex; it's also written to from writePacket. +} + +func (t *handshakeTransport) pushPacket(p []byte) error { + if debugHandshake { + t.printPacket(p, true) + } + return t.conn.writePacket(p) +} + +func (t *handshakeTransport) getWriteError() error { + t.mu.Lock() + defer t.mu.Unlock() + return t.writeError +} + +func (t *handshakeTransport) recordWriteError(err error) { + t.mu.Lock() + defer t.mu.Unlock() + if t.writeError == nil && err != nil { + t.writeError = err + t.writeCond.Broadcast() + } +} + +func (t *handshakeTransport) requestKeyExchange() { + select { + case t.requestKex <- struct{}{}: + default: + // something already requested a kex, so do nothing. + } +} + +func (t *handshakeTransport) resetWriteThresholds() { + t.writePacketsLeft = packetRekeyThreshold + if t.config.RekeyThreshold > 0 { + t.writeBytesLeft = int64(t.config.RekeyThreshold) + } else if t.algorithms != nil { + t.writeBytesLeft = t.algorithms.Write.rekeyBytes() + } else { + t.writeBytesLeft = 1 << 30 + } +} + +func (t *handshakeTransport) kexLoop() { + +write: + for t.getWriteError() == nil { + var request *pendingKex + var sent bool + + for request == nil || !sent { + var ok bool + select { + case request, ok = <-t.startKex: + if !ok { + break write + } + case <-t.requestKex: + break + } + + if !sent { + if err := t.sendKexInit(); err != nil { + t.recordWriteError(err) + break + } + sent = true + } + } + + if err := t.getWriteError(); err != nil { + if request != nil { + request.done <- err + } + break + } + + // We're not servicing t.requestKex, but that is OK: + // we never block on sending to t.requestKex. + + // We're not servicing t.startKex, but the remote end + // has just sent us a kexInitMsg, so it can't send + // another key change request, until we close the done + // channel on the pendingKex request. + + err := t.enterKeyExchange(request.otherInit) + + t.mu.Lock() + t.writeError = err + t.sentInitPacket = nil + t.sentInitMsg = nil + + t.resetWriteThresholds() + + // we have completed the key exchange. Since the + // reader is still blocked, it is safe to clear out + // the requestKex channel. This avoids the situation + // where: 1) we consumed our own request for the + // initial kex, and 2) the kex from the remote side + // caused another send on the requestKex channel, + clear: + for { + select { + case <-t.requestKex: + // + default: + break clear + } + } + + request.done <- t.writeError + + // kex finished. Push packets that we received while + // the kex was in progress. Don't look at t.startKex + // and don't increment writtenSinceKex: if we trigger + // another kex while we are still busy with the last + // one, things will become very confusing. + for _, p := range t.pendingPackets { + t.writeError = t.pushPacket(p) + if t.writeError != nil { + break + } + } + t.pendingPackets = t.pendingPackets[:0] + // Unblock writePacket if waiting for KEX. + t.writeCond.Broadcast() + t.mu.Unlock() + } + + // Unblock reader. + t.conn.Close() + + // drain startKex channel. We don't service t.requestKex + // because nobody does blocking sends there. + for request := range t.startKex { + request.done <- t.getWriteError() + } + + // Mark that the loop is done so that Close can return. + close(t.kexLoopDone) +} + +// The protocol uses uint32 for packet counters, so we can't let them +// reach 1<<32. We will actually read and write more packets than +// this, though: the other side may send more packets, and after we +// hit this limit on writing we will send a few more packets for the +// key exchange itself. +const packetRekeyThreshold = (1 << 31) + +func (t *handshakeTransport) resetReadThresholds() { + t.readPacketsLeft = packetRekeyThreshold + if t.config.RekeyThreshold > 0 { + t.readBytesLeft = int64(t.config.RekeyThreshold) + } else if t.algorithms != nil { + t.readBytesLeft = t.algorithms.Read.rekeyBytes() + } else { + t.readBytesLeft = 1 << 30 + } +} + +func (t *handshakeTransport) readOnePacket(first bool) ([]byte, error) { + p, err := t.conn.readPacket() + if err != nil { + return nil, err + } + + if t.readPacketsLeft > 0 { + t.readPacketsLeft-- + } else { + t.requestKeyExchange() + } + + if t.readBytesLeft > 0 { + t.readBytesLeft -= int64(len(p)) + } else { + t.requestKeyExchange() + } + + if debugHandshake { + t.printPacket(p, false) + } + + if first && p[0] != msgKexInit { + return nil, fmt.Errorf("ssh: first packet should be msgKexInit") + } + + if p[0] != msgKexInit { + return p, nil + } + + firstKex := t.sessionID == nil + + kex := pendingKex{ + done: make(chan error, 1), + otherInit: p, + } + t.startKex <- &kex + err = <-kex.done + + if debugHandshake { + log.Printf("%s exited key exchange (first %v), err %v", t.id(), firstKex, err) + } + + if err != nil { + return nil, err + } + + t.resetReadThresholds() + + // By default, a key exchange is hidden from higher layers by + // translating it into msgIgnore. + successPacket := []byte{msgIgnore} + if firstKex { + // sendKexInit() for the first kex waits for + // msgNewKeys so the authentication process is + // guaranteed to happen over an encrypted transport. + successPacket = []byte{msgNewKeys} + } + + return successPacket, nil +} + +const ( + kexStrictClient = "kex-strict-c-v00@openssh.com" + kexStrictServer = "kex-strict-s-v00@openssh.com" +) + +// sendKexInit sends a key change message. +func (t *handshakeTransport) sendKexInit() error { + t.mu.Lock() + defer t.mu.Unlock() + if t.sentInitMsg != nil { + // kexInits may be sent either in response to the other side, + // or because our side wants to initiate a key change, so we + // may have already sent a kexInit. In that case, don't send a + // second kexInit. + return nil + } + + msg := &kexInitMsg{ + CiphersClientServer: t.config.Ciphers, + CiphersServerClient: t.config.Ciphers, + MACsClientServer: t.config.MACs, + MACsServerClient: t.config.MACs, + CompressionClientServer: supportedCompressions, + CompressionServerClient: supportedCompressions, + } + io.ReadFull(t.config.Rand, msg.Cookie[:]) + + // We mutate the KexAlgos slice, in order to add the kex-strict extension algorithm, + // and possibly to add the ext-info extension algorithm. Since the slice may be the + // user owned KeyExchanges, we create our own slice in order to avoid using user + // owned memory by mistake. + msg.KexAlgos = make([]string, 0, len(t.config.KeyExchanges)+2) // room for kex-strict and ext-info + msg.KexAlgos = append(msg.KexAlgos, t.config.KeyExchanges...) + + isServer := len(t.hostKeys) > 0 + if isServer { + for _, k := range t.hostKeys { + // If k is a MultiAlgorithmSigner, we restrict the signature + // algorithms. If k is a AlgorithmSigner, presume it supports all + // signature algorithms associated with the key format. If k is not + // an AlgorithmSigner, we can only assume it only supports the + // algorithms that matches the key format. (This means that Sign + // can't pick a different default). + keyFormat := k.PublicKey().Type() + + switch s := k.(type) { + case MultiAlgorithmSigner: + for _, algo := range algorithmsForKeyFormat(keyFormat) { + if contains(s.Algorithms(), underlyingAlgo(algo)) { + msg.ServerHostKeyAlgos = append(msg.ServerHostKeyAlgos, algo) + } + } + case AlgorithmSigner: + msg.ServerHostKeyAlgos = append(msg.ServerHostKeyAlgos, algorithmsForKeyFormat(keyFormat)...) + default: + msg.ServerHostKeyAlgos = append(msg.ServerHostKeyAlgos, keyFormat) + } + } + + if t.sessionID == nil { + msg.KexAlgos = append(msg.KexAlgos, kexStrictServer) + } + } else { + msg.ServerHostKeyAlgos = t.hostKeyAlgorithms + + // As a client we opt in to receiving SSH_MSG_EXT_INFO so we know what + // algorithms the server supports for public key authentication. See RFC + // 8308, Section 2.1. + // + // We also send the strict KEX mode extension algorithm, in order to opt + // into the strict KEX mode. + if firstKeyExchange := t.sessionID == nil; firstKeyExchange { + msg.KexAlgos = append(msg.KexAlgos, "ext-info-c") + msg.KexAlgos = append(msg.KexAlgos, kexStrictClient) + } + + } + + packet := Marshal(msg) + + // writePacket destroys the contents, so save a copy. + packetCopy := make([]byte, len(packet)) + copy(packetCopy, packet) + + if err := t.pushPacket(packetCopy); err != nil { + return err + } + + t.sentInitMsg = msg + t.sentInitPacket = packet + + return nil +} + +var errSendBannerPhase = errors.New("ssh: SendAuthBanner outside of authentication phase") + +func (t *handshakeTransport) writePacket(p []byte) error { + t.mu.Lock() + defer t.mu.Unlock() + + switch p[0] { + case msgKexInit: + return errors.New("ssh: only handshakeTransport can send kexInit") + case msgNewKeys: + return errors.New("ssh: only handshakeTransport can send newKeys") + case msgUserAuthBanner: + if t.userAuthComplete { + return errSendBannerPhase + } + case msgUserAuthSuccess: + t.userAuthComplete = true + } + + if t.writeError != nil { + return t.writeError + } + + if t.sentInitMsg != nil { + if len(t.pendingPackets) < maxPendingPackets { + // Copy the packet so the writer can reuse the buffer. + cp := make([]byte, len(p)) + copy(cp, p) + t.pendingPackets = append(t.pendingPackets, cp) + return nil + } + for t.sentInitMsg != nil { + // Block and wait for KEX to complete or an error. + t.writeCond.Wait() + if t.writeError != nil { + return t.writeError + } + } + } + + if t.writeBytesLeft > 0 { + t.writeBytesLeft -= int64(len(p)) + } else { + t.requestKeyExchange() + } + + if t.writePacketsLeft > 0 { + t.writePacketsLeft-- + } else { + t.requestKeyExchange() + } + + if err := t.pushPacket(p); err != nil { + t.writeError = err + t.writeCond.Broadcast() + } + + return nil +} + +func (t *handshakeTransport) Close() error { + // Close the connection. This should cause the readLoop goroutine to wake up + // and close t.startKex, which will shut down kexLoop if running. + err := t.conn.Close() + + // Wait for the kexLoop goroutine to complete. + // At that point we know that the readLoop goroutine is complete too, + // because kexLoop itself waits for readLoop to close the startKex channel. + <-t.kexLoopDone + + return err +} + +func (t *handshakeTransport) enterKeyExchange(otherInitPacket []byte) error { + if debugHandshake { + log.Printf("%s entered key exchange", t.id()) + } + + otherInit := &kexInitMsg{} + if err := Unmarshal(otherInitPacket, otherInit); err != nil { + return err + } + + magics := handshakeMagics{ + clientVersion: t.clientVersion, + serverVersion: t.serverVersion, + clientKexInit: otherInitPacket, + serverKexInit: t.sentInitPacket, + } + + clientInit := otherInit + serverInit := t.sentInitMsg + isClient := len(t.hostKeys) == 0 + if isClient { + clientInit, serverInit = serverInit, clientInit + + magics.clientKexInit = t.sentInitPacket + magics.serverKexInit = otherInitPacket + } + + var err error + t.algorithms, err = findAgreedAlgorithms(isClient, clientInit, serverInit) + if err != nil { + return err + } + + if t.sessionID == nil && ((isClient && contains(serverInit.KexAlgos, kexStrictServer)) || (!isClient && contains(clientInit.KexAlgos, kexStrictClient))) { + t.strictMode = true + if err := t.conn.setStrictMode(); err != nil { + return err + } + } + + // We don't send FirstKexFollows, but we handle receiving it. + // + // RFC 4253 section 7 defines the kex and the agreement method for + // first_kex_packet_follows. It states that the guessed packet + // should be ignored if the "kex algorithm and/or the host + // key algorithm is guessed wrong (server and client have + // different preferred algorithm), or if any of the other + // algorithms cannot be agreed upon". The other algorithms have + // already been checked above so the kex algorithm and host key + // algorithm are checked here. + if otherInit.FirstKexFollows && (clientInit.KexAlgos[0] != serverInit.KexAlgos[0] || clientInit.ServerHostKeyAlgos[0] != serverInit.ServerHostKeyAlgos[0]) { + // other side sent a kex message for the wrong algorithm, + // which we have to ignore. + if _, err := t.conn.readPacket(); err != nil { + return err + } + } + + kex, ok := kexAlgoMap[t.algorithms.KeyExchange] + if !ok { + return fmt.Errorf("ssh: unexpected key exchange algorithm %v", t.algorithms.KeyExchange) + } + + var result *kexResult + if len(t.hostKeys) > 0 { + result, err = t.server(kex, &magics) + } else { + result, err = t.client(kex, &magics) + } + + if err != nil { + return err + } + + firstKeyExchange := t.sessionID == nil + if firstKeyExchange { + t.sessionID = result.H + } + result.SessionID = t.sessionID + + if err := t.conn.prepareKeyChange(t.algorithms, result); err != nil { + return err + } + if err = t.conn.writePacket([]byte{msgNewKeys}); err != nil { + return err + } + + // On the server side, after the first SSH_MSG_NEWKEYS, send a SSH_MSG_EXT_INFO + // message with the server-sig-algs extension if the client supports it. See + // RFC 8308, Sections 2.4 and 3.1, and [PROTOCOL], Section 1.9. + if !isClient && firstKeyExchange && contains(clientInit.KexAlgos, "ext-info-c") { + supportedPubKeyAuthAlgosList := strings.Join(t.publicKeyAuthAlgorithms, ",") + extInfo := &extInfoMsg{ + NumExtensions: 2, + Payload: make([]byte, 0, 4+15+4+len(supportedPubKeyAuthAlgosList)+4+16+4+1), + } + extInfo.Payload = appendInt(extInfo.Payload, len("server-sig-algs")) + extInfo.Payload = append(extInfo.Payload, "server-sig-algs"...) + extInfo.Payload = appendInt(extInfo.Payload, len(supportedPubKeyAuthAlgosList)) + extInfo.Payload = append(extInfo.Payload, supportedPubKeyAuthAlgosList...) + extInfo.Payload = appendInt(extInfo.Payload, len("ping@openssh.com")) + extInfo.Payload = append(extInfo.Payload, "ping@openssh.com"...) + extInfo.Payload = appendInt(extInfo.Payload, 1) + extInfo.Payload = append(extInfo.Payload, "0"...) + if err := t.conn.writePacket(Marshal(extInfo)); err != nil { + return err + } + } + + if packet, err := t.conn.readPacket(); err != nil { + return err + } else if packet[0] != msgNewKeys { + return unexpectedMessageError(msgNewKeys, packet[0]) + } + + if firstKeyExchange { + // Indicates to the transport that the first key exchange is completed + // after receiving SSH_MSG_NEWKEYS. + t.conn.setInitialKEXDone() + } + + return nil +} + +// algorithmSignerWrapper is an AlgorithmSigner that only supports the default +// key format algorithm. +// +// This is technically a violation of the AlgorithmSigner interface, but it +// should be unreachable given where we use this. Anyway, at least it returns an +// error instead of panicing or producing an incorrect signature. +type algorithmSignerWrapper struct { + Signer +} + +func (a algorithmSignerWrapper) SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error) { + if algorithm != underlyingAlgo(a.PublicKey().Type()) { + return nil, errors.New("ssh: internal error: algorithmSignerWrapper invoked with non-default algorithm") + } + return a.Sign(rand, data) +} + +func pickHostKey(hostKeys []Signer, algo string) AlgorithmSigner { + for _, k := range hostKeys { + if s, ok := k.(MultiAlgorithmSigner); ok { + if !contains(s.Algorithms(), underlyingAlgo(algo)) { + continue + } + } + + if algo == k.PublicKey().Type() { + return algorithmSignerWrapper{k} + } + + k, ok := k.(AlgorithmSigner) + if !ok { + continue + } + for _, a := range algorithmsForKeyFormat(k.PublicKey().Type()) { + if algo == a { + return k + } + } + } + return nil +} + +func (t *handshakeTransport) server(kex kexAlgorithm, magics *handshakeMagics) (*kexResult, error) { + hostKey := pickHostKey(t.hostKeys, t.algorithms.HostKey) + if hostKey == nil { + return nil, errors.New("ssh: internal error: negotiated unsupported signature type") + } + + r, err := kex.Server(t.conn, t.config.Rand, magics, hostKey, t.algorithms.HostKey) + return r, err +} + +func (t *handshakeTransport) client(kex kexAlgorithm, magics *handshakeMagics) (*kexResult, error) { + result, err := kex.Client(t.conn, t.config.Rand, magics) + if err != nil { + return nil, err + } + + hostKey, err := ParsePublicKey(result.HostKey) + if err != nil { + return nil, err + } + + if err := verifyHostKeySignature(hostKey, t.algorithms.HostKey, result); err != nil { + return nil, err + } + + err = t.hostKeyCallback(t.dialAddress, t.remoteAddr, hostKey) + if err != nil { + return nil, err + } + + return result, nil +} diff --git a/tests/vendor/golang.org/x/crypto/ssh/internal/bcrypt_pbkdf/bcrypt_pbkdf.go b/tests/vendor/golang.org/x/crypto/ssh/internal/bcrypt_pbkdf/bcrypt_pbkdf.go new file mode 100644 index 000000000..af81d2665 --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/ssh/internal/bcrypt_pbkdf/bcrypt_pbkdf.go @@ -0,0 +1,93 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package bcrypt_pbkdf implements bcrypt_pbkdf(3) from OpenBSD. +// +// See https://flak.tedunangst.com/post/bcrypt-pbkdf and +// https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/lib/libutil/bcrypt_pbkdf.c. +package bcrypt_pbkdf + +import ( + "crypto/sha512" + "errors" + "golang.org/x/crypto/blowfish" +) + +const blockSize = 32 + +// Key derives a key from the password, salt and rounds count, returning a +// []byte of length keyLen that can be used as cryptographic key. +func Key(password, salt []byte, rounds, keyLen int) ([]byte, error) { + if rounds < 1 { + return nil, errors.New("bcrypt_pbkdf: number of rounds is too small") + } + if len(password) == 0 { + return nil, errors.New("bcrypt_pbkdf: empty password") + } + if len(salt) == 0 || len(salt) > 1<<20 { + return nil, errors.New("bcrypt_pbkdf: bad salt length") + } + if keyLen > 1024 { + return nil, errors.New("bcrypt_pbkdf: keyLen is too large") + } + + numBlocks := (keyLen + blockSize - 1) / blockSize + key := make([]byte, numBlocks*blockSize) + + h := sha512.New() + h.Write(password) + shapass := h.Sum(nil) + + shasalt := make([]byte, 0, sha512.Size) + cnt, tmp := make([]byte, 4), make([]byte, blockSize) + for block := 1; block <= numBlocks; block++ { + h.Reset() + h.Write(salt) + cnt[0] = byte(block >> 24) + cnt[1] = byte(block >> 16) + cnt[2] = byte(block >> 8) + cnt[3] = byte(block) + h.Write(cnt) + bcryptHash(tmp, shapass, h.Sum(shasalt)) + + out := make([]byte, blockSize) + copy(out, tmp) + for i := 2; i <= rounds; i++ { + h.Reset() + h.Write(tmp) + bcryptHash(tmp, shapass, h.Sum(shasalt)) + for j := 0; j < len(out); j++ { + out[j] ^= tmp[j] + } + } + + for i, v := range out { + key[i*numBlocks+(block-1)] = v + } + } + return key[:keyLen], nil +} + +var magic = []byte("OxychromaticBlowfishSwatDynamite") + +func bcryptHash(out, shapass, shasalt []byte) { + c, err := blowfish.NewSaltedCipher(shapass, shasalt) + if err != nil { + panic(err) + } + for i := 0; i < 64; i++ { + blowfish.ExpandKey(shasalt, c) + blowfish.ExpandKey(shapass, c) + } + copy(out, magic) + for i := 0; i < 32; i += 8 { + for j := 0; j < 64; j++ { + c.Encrypt(out[i:i+8], out[i:i+8]) + } + } + // Swap bytes due to different endianness. + for i := 0; i < 32; i += 4 { + out[i+3], out[i+2], out[i+1], out[i] = out[i], out[i+1], out[i+2], out[i+3] + } +} diff --git a/tests/vendor/golang.org/x/crypto/ssh/kex.go b/tests/vendor/golang.org/x/crypto/ssh/kex.go new file mode 100644 index 000000000..cf388a92a --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/ssh/kex.go @@ -0,0 +1,793 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "crypto" + "crypto/ecdsa" + "crypto/elliptic" + "crypto/rand" + "crypto/subtle" + "encoding/binary" + "errors" + "fmt" + "io" + "math/big" + + "golang.org/x/crypto/curve25519" +) + +const ( + // This is the group called diffie-hellman-group1-sha1 in RFC 4253 and + // Oakley Group 2 in RFC 2409. + oakleyGroup2 = "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381FFFFFFFFFFFFFFFF" + // This is the group called diffie-hellman-group14-sha1 in RFC 4253 and + // Oakley Group 14 in RFC 3526. + oakleyGroup14 = "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AACAA68FFFFFFFFFFFFFFFF" + // This is the group called diffie-hellman-group15-sha512 in RFC 8268 and + // Oakley Group 15 in RFC 3526. + oakleyGroup15 = "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A93AD2CAFFFFFFFFFFFFFFFF" + // This is the group called diffie-hellman-group16-sha512 in RFC 8268 and + // Oakley Group 16 in RFC 3526. + oakleyGroup16 = "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D788719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199FFFFFFFFFFFFFFFF" +) + +// kexResult captures the outcome of a key exchange. +type kexResult struct { + // Session hash. See also RFC 4253, section 8. + H []byte + + // Shared secret. See also RFC 4253, section 8. + K []byte + + // Host key as hashed into H. + HostKey []byte + + // Signature of H. + Signature []byte + + // A cryptographic hash function that matches the security + // level of the key exchange algorithm. It is used for + // calculating H, and for deriving keys from H and K. + Hash crypto.Hash + + // The session ID, which is the first H computed. This is used + // to derive key material inside the transport. + SessionID []byte +} + +// handshakeMagics contains data that is always included in the +// session hash. +type handshakeMagics struct { + clientVersion, serverVersion []byte + clientKexInit, serverKexInit []byte +} + +func (m *handshakeMagics) write(w io.Writer) { + writeString(w, m.clientVersion) + writeString(w, m.serverVersion) + writeString(w, m.clientKexInit) + writeString(w, m.serverKexInit) +} + +// kexAlgorithm abstracts different key exchange algorithms. +type kexAlgorithm interface { + // Server runs server-side key agreement, signing the result + // with a hostkey. algo is the negotiated algorithm, and may + // be a certificate type. + Server(p packetConn, rand io.Reader, magics *handshakeMagics, s AlgorithmSigner, algo string) (*kexResult, error) + + // Client runs the client-side key agreement. Caller is + // responsible for verifying the host key signature. + Client(p packetConn, rand io.Reader, magics *handshakeMagics) (*kexResult, error) +} + +// dhGroup is a multiplicative group suitable for implementing Diffie-Hellman key agreement. +type dhGroup struct { + g, p, pMinus1 *big.Int + hashFunc crypto.Hash +} + +func (group *dhGroup) diffieHellman(theirPublic, myPrivate *big.Int) (*big.Int, error) { + if theirPublic.Cmp(bigOne) <= 0 || theirPublic.Cmp(group.pMinus1) >= 0 { + return nil, errors.New("ssh: DH parameter out of bounds") + } + return new(big.Int).Exp(theirPublic, myPrivate, group.p), nil +} + +func (group *dhGroup) Client(c packetConn, randSource io.Reader, magics *handshakeMagics) (*kexResult, error) { + var x *big.Int + for { + var err error + if x, err = rand.Int(randSource, group.pMinus1); err != nil { + return nil, err + } + if x.Sign() > 0 { + break + } + } + + X := new(big.Int).Exp(group.g, x, group.p) + kexDHInit := kexDHInitMsg{ + X: X, + } + if err := c.writePacket(Marshal(&kexDHInit)); err != nil { + return nil, err + } + + packet, err := c.readPacket() + if err != nil { + return nil, err + } + + var kexDHReply kexDHReplyMsg + if err = Unmarshal(packet, &kexDHReply); err != nil { + return nil, err + } + + ki, err := group.diffieHellman(kexDHReply.Y, x) + if err != nil { + return nil, err + } + + h := group.hashFunc.New() + magics.write(h) + writeString(h, kexDHReply.HostKey) + writeInt(h, X) + writeInt(h, kexDHReply.Y) + K := make([]byte, intLength(ki)) + marshalInt(K, ki) + h.Write(K) + + return &kexResult{ + H: h.Sum(nil), + K: K, + HostKey: kexDHReply.HostKey, + Signature: kexDHReply.Signature, + Hash: group.hashFunc, + }, nil +} + +func (group *dhGroup) Server(c packetConn, randSource io.Reader, magics *handshakeMagics, priv AlgorithmSigner, algo string) (result *kexResult, err error) { + packet, err := c.readPacket() + if err != nil { + return + } + var kexDHInit kexDHInitMsg + if err = Unmarshal(packet, &kexDHInit); err != nil { + return + } + + var y *big.Int + for { + if y, err = rand.Int(randSource, group.pMinus1); err != nil { + return + } + if y.Sign() > 0 { + break + } + } + + Y := new(big.Int).Exp(group.g, y, group.p) + ki, err := group.diffieHellman(kexDHInit.X, y) + if err != nil { + return nil, err + } + + hostKeyBytes := priv.PublicKey().Marshal() + + h := group.hashFunc.New() + magics.write(h) + writeString(h, hostKeyBytes) + writeInt(h, kexDHInit.X) + writeInt(h, Y) + + K := make([]byte, intLength(ki)) + marshalInt(K, ki) + h.Write(K) + + H := h.Sum(nil) + + // H is already a hash, but the hostkey signing will apply its + // own key-specific hash algorithm. + sig, err := signAndMarshal(priv, randSource, H, algo) + if err != nil { + return nil, err + } + + kexDHReply := kexDHReplyMsg{ + HostKey: hostKeyBytes, + Y: Y, + Signature: sig, + } + packet = Marshal(&kexDHReply) + + err = c.writePacket(packet) + return &kexResult{ + H: H, + K: K, + HostKey: hostKeyBytes, + Signature: sig, + Hash: group.hashFunc, + }, err +} + +// ecdh performs Elliptic Curve Diffie-Hellman key exchange as +// described in RFC 5656, section 4. +type ecdh struct { + curve elliptic.Curve +} + +func (kex *ecdh) Client(c packetConn, rand io.Reader, magics *handshakeMagics) (*kexResult, error) { + ephKey, err := ecdsa.GenerateKey(kex.curve, rand) + if err != nil { + return nil, err + } + + kexInit := kexECDHInitMsg{ + ClientPubKey: elliptic.Marshal(kex.curve, ephKey.PublicKey.X, ephKey.PublicKey.Y), + } + + serialized := Marshal(&kexInit) + if err := c.writePacket(serialized); err != nil { + return nil, err + } + + packet, err := c.readPacket() + if err != nil { + return nil, err + } + + var reply kexECDHReplyMsg + if err = Unmarshal(packet, &reply); err != nil { + return nil, err + } + + x, y, err := unmarshalECKey(kex.curve, reply.EphemeralPubKey) + if err != nil { + return nil, err + } + + // generate shared secret + secret, _ := kex.curve.ScalarMult(x, y, ephKey.D.Bytes()) + + h := ecHash(kex.curve).New() + magics.write(h) + writeString(h, reply.HostKey) + writeString(h, kexInit.ClientPubKey) + writeString(h, reply.EphemeralPubKey) + K := make([]byte, intLength(secret)) + marshalInt(K, secret) + h.Write(K) + + return &kexResult{ + H: h.Sum(nil), + K: K, + HostKey: reply.HostKey, + Signature: reply.Signature, + Hash: ecHash(kex.curve), + }, nil +} + +// unmarshalECKey parses and checks an EC key. +func unmarshalECKey(curve elliptic.Curve, pubkey []byte) (x, y *big.Int, err error) { + x, y = elliptic.Unmarshal(curve, pubkey) + if x == nil { + return nil, nil, errors.New("ssh: elliptic.Unmarshal failure") + } + if !validateECPublicKey(curve, x, y) { + return nil, nil, errors.New("ssh: public key not on curve") + } + return x, y, nil +} + +// validateECPublicKey checks that the point is a valid public key for +// the given curve. See [SEC1], 3.2.2 +func validateECPublicKey(curve elliptic.Curve, x, y *big.Int) bool { + if x.Sign() == 0 && y.Sign() == 0 { + return false + } + + if x.Cmp(curve.Params().P) >= 0 { + return false + } + + if y.Cmp(curve.Params().P) >= 0 { + return false + } + + if !curve.IsOnCurve(x, y) { + return false + } + + // We don't check if N * PubKey == 0, since + // + // - the NIST curves have cofactor = 1, so this is implicit. + // (We don't foresee an implementation that supports non NIST + // curves) + // + // - for ephemeral keys, we don't need to worry about small + // subgroup attacks. + return true +} + +func (kex *ecdh) Server(c packetConn, rand io.Reader, magics *handshakeMagics, priv AlgorithmSigner, algo string) (result *kexResult, err error) { + packet, err := c.readPacket() + if err != nil { + return nil, err + } + + var kexECDHInit kexECDHInitMsg + if err = Unmarshal(packet, &kexECDHInit); err != nil { + return nil, err + } + + clientX, clientY, err := unmarshalECKey(kex.curve, kexECDHInit.ClientPubKey) + if err != nil { + return nil, err + } + + // We could cache this key across multiple users/multiple + // connection attempts, but the benefit is small. OpenSSH + // generates a new key for each incoming connection. + ephKey, err := ecdsa.GenerateKey(kex.curve, rand) + if err != nil { + return nil, err + } + + hostKeyBytes := priv.PublicKey().Marshal() + + serializedEphKey := elliptic.Marshal(kex.curve, ephKey.PublicKey.X, ephKey.PublicKey.Y) + + // generate shared secret + secret, _ := kex.curve.ScalarMult(clientX, clientY, ephKey.D.Bytes()) + + h := ecHash(kex.curve).New() + magics.write(h) + writeString(h, hostKeyBytes) + writeString(h, kexECDHInit.ClientPubKey) + writeString(h, serializedEphKey) + + K := make([]byte, intLength(secret)) + marshalInt(K, secret) + h.Write(K) + + H := h.Sum(nil) + + // H is already a hash, but the hostkey signing will apply its + // own key-specific hash algorithm. + sig, err := signAndMarshal(priv, rand, H, algo) + if err != nil { + return nil, err + } + + reply := kexECDHReplyMsg{ + EphemeralPubKey: serializedEphKey, + HostKey: hostKeyBytes, + Signature: sig, + } + + serialized := Marshal(&reply) + if err := c.writePacket(serialized); err != nil { + return nil, err + } + + return &kexResult{ + H: H, + K: K, + HostKey: reply.HostKey, + Signature: sig, + Hash: ecHash(kex.curve), + }, nil +} + +// ecHash returns the hash to match the given elliptic curve, see RFC +// 5656, section 6.2.1 +func ecHash(curve elliptic.Curve) crypto.Hash { + bitSize := curve.Params().BitSize + switch { + case bitSize <= 256: + return crypto.SHA256 + case bitSize <= 384: + return crypto.SHA384 + } + return crypto.SHA512 +} + +var kexAlgoMap = map[string]kexAlgorithm{} + +func init() { + p, _ := new(big.Int).SetString(oakleyGroup2, 16) + kexAlgoMap[InsecureKeyExchangeDH1SHA1] = &dhGroup{ + g: new(big.Int).SetInt64(2), + p: p, + pMinus1: new(big.Int).Sub(p, bigOne), + hashFunc: crypto.SHA1, + } + + p, _ = new(big.Int).SetString(oakleyGroup14, 16) + group14 := &dhGroup{ + g: new(big.Int).SetInt64(2), + p: p, + pMinus1: new(big.Int).Sub(p, bigOne), + } + + kexAlgoMap[InsecureKeyExchangeDH14SHA1] = &dhGroup{ + g: group14.g, p: group14.p, pMinus1: group14.pMinus1, + hashFunc: crypto.SHA1, + } + kexAlgoMap[KeyExchangeDH14SHA256] = &dhGroup{ + g: group14.g, p: group14.p, pMinus1: group14.pMinus1, + hashFunc: crypto.SHA256, + } + + p, _ = new(big.Int).SetString(oakleyGroup16, 16) + + kexAlgoMap[KeyExchangeDH16SHA512] = &dhGroup{ + g: new(big.Int).SetInt64(2), + p: p, + pMinus1: new(big.Int).Sub(p, bigOne), + hashFunc: crypto.SHA512, + } + + kexAlgoMap[KeyExchangeECDHP521] = &ecdh{elliptic.P521()} + kexAlgoMap[KeyExchangeECDHP384] = &ecdh{elliptic.P384()} + kexAlgoMap[KeyExchangeECDHP256] = &ecdh{elliptic.P256()} + kexAlgoMap[KeyExchangeCurve25519] = &curve25519sha256{} + kexAlgoMap[keyExchangeCurve25519LibSSH] = &curve25519sha256{} + kexAlgoMap[InsecureKeyExchangeDHGEXSHA1] = &dhGEXSHA{hashFunc: crypto.SHA1} + kexAlgoMap[KeyExchangeDHGEXSHA256] = &dhGEXSHA{hashFunc: crypto.SHA256} +} + +// curve25519sha256 implements the curve25519-sha256 (formerly known as +// curve25519-sha256@libssh.org) key exchange method, as described in RFC 8731. +type curve25519sha256 struct{} + +type curve25519KeyPair struct { + priv [32]byte + pub [32]byte +} + +func (kp *curve25519KeyPair) generate(rand io.Reader) error { + if _, err := io.ReadFull(rand, kp.priv[:]); err != nil { + return err + } + curve25519.ScalarBaseMult(&kp.pub, &kp.priv) + return nil +} + +// curve25519Zeros is just an array of 32 zero bytes so that we have something +// convenient to compare against in order to reject curve25519 points with the +// wrong order. +var curve25519Zeros [32]byte + +func (kex *curve25519sha256) Client(c packetConn, rand io.Reader, magics *handshakeMagics) (*kexResult, error) { + var kp curve25519KeyPair + if err := kp.generate(rand); err != nil { + return nil, err + } + if err := c.writePacket(Marshal(&kexECDHInitMsg{kp.pub[:]})); err != nil { + return nil, err + } + + packet, err := c.readPacket() + if err != nil { + return nil, err + } + + var reply kexECDHReplyMsg + if err = Unmarshal(packet, &reply); err != nil { + return nil, err + } + if len(reply.EphemeralPubKey) != 32 { + return nil, errors.New("ssh: peer's curve25519 public value has wrong length") + } + + var servPub, secret [32]byte + copy(servPub[:], reply.EphemeralPubKey) + curve25519.ScalarMult(&secret, &kp.priv, &servPub) + if subtle.ConstantTimeCompare(secret[:], curve25519Zeros[:]) == 1 { + return nil, errors.New("ssh: peer's curve25519 public value has wrong order") + } + + h := crypto.SHA256.New() + magics.write(h) + writeString(h, reply.HostKey) + writeString(h, kp.pub[:]) + writeString(h, reply.EphemeralPubKey) + + ki := new(big.Int).SetBytes(secret[:]) + K := make([]byte, intLength(ki)) + marshalInt(K, ki) + h.Write(K) + + return &kexResult{ + H: h.Sum(nil), + K: K, + HostKey: reply.HostKey, + Signature: reply.Signature, + Hash: crypto.SHA256, + }, nil +} + +func (kex *curve25519sha256) Server(c packetConn, rand io.Reader, magics *handshakeMagics, priv AlgorithmSigner, algo string) (result *kexResult, err error) { + packet, err := c.readPacket() + if err != nil { + return + } + var kexInit kexECDHInitMsg + if err = Unmarshal(packet, &kexInit); err != nil { + return + } + + if len(kexInit.ClientPubKey) != 32 { + return nil, errors.New("ssh: peer's curve25519 public value has wrong length") + } + + var kp curve25519KeyPair + if err := kp.generate(rand); err != nil { + return nil, err + } + + var clientPub, secret [32]byte + copy(clientPub[:], kexInit.ClientPubKey) + curve25519.ScalarMult(&secret, &kp.priv, &clientPub) + if subtle.ConstantTimeCompare(secret[:], curve25519Zeros[:]) == 1 { + return nil, errors.New("ssh: peer's curve25519 public value has wrong order") + } + + hostKeyBytes := priv.PublicKey().Marshal() + + h := crypto.SHA256.New() + magics.write(h) + writeString(h, hostKeyBytes) + writeString(h, kexInit.ClientPubKey) + writeString(h, kp.pub[:]) + + ki := new(big.Int).SetBytes(secret[:]) + K := make([]byte, intLength(ki)) + marshalInt(K, ki) + h.Write(K) + + H := h.Sum(nil) + + sig, err := signAndMarshal(priv, rand, H, algo) + if err != nil { + return nil, err + } + + reply := kexECDHReplyMsg{ + EphemeralPubKey: kp.pub[:], + HostKey: hostKeyBytes, + Signature: sig, + } + if err := c.writePacket(Marshal(&reply)); err != nil { + return nil, err + } + return &kexResult{ + H: H, + K: K, + HostKey: hostKeyBytes, + Signature: sig, + Hash: crypto.SHA256, + }, nil +} + +// dhGEXSHA implements the diffie-hellman-group-exchange-sha1 and +// diffie-hellman-group-exchange-sha256 key agreement protocols, +// as described in RFC 4419 +type dhGEXSHA struct { + hashFunc crypto.Hash +} + +const ( + dhGroupExchangeMinimumBits = 2048 + dhGroupExchangePreferredBits = 2048 + dhGroupExchangeMaximumBits = 8192 +) + +func (gex *dhGEXSHA) Client(c packetConn, randSource io.Reader, magics *handshakeMagics) (*kexResult, error) { + // Send GexRequest + kexDHGexRequest := kexDHGexRequestMsg{ + MinBits: dhGroupExchangeMinimumBits, + PreferredBits: dhGroupExchangePreferredBits, + MaxBits: dhGroupExchangeMaximumBits, + } + if err := c.writePacket(Marshal(&kexDHGexRequest)); err != nil { + return nil, err + } + + // Receive GexGroup + packet, err := c.readPacket() + if err != nil { + return nil, err + } + + var msg kexDHGexGroupMsg + if err = Unmarshal(packet, &msg); err != nil { + return nil, err + } + + // reject if p's bit length < dhGroupExchangeMinimumBits or > dhGroupExchangeMaximumBits + if msg.P.BitLen() < dhGroupExchangeMinimumBits || msg.P.BitLen() > dhGroupExchangeMaximumBits { + return nil, fmt.Errorf("ssh: server-generated gex p is out of range (%d bits)", msg.P.BitLen()) + } + + // Check if g is safe by verifying that 1 < g < p-1 + pMinusOne := new(big.Int).Sub(msg.P, bigOne) + if msg.G.Cmp(bigOne) <= 0 || msg.G.Cmp(pMinusOne) >= 0 { + return nil, fmt.Errorf("ssh: server provided gex g is not safe") + } + + // Send GexInit + pHalf := new(big.Int).Rsh(msg.P, 1) + x, err := rand.Int(randSource, pHalf) + if err != nil { + return nil, err + } + X := new(big.Int).Exp(msg.G, x, msg.P) + kexDHGexInit := kexDHGexInitMsg{ + X: X, + } + if err := c.writePacket(Marshal(&kexDHGexInit)); err != nil { + return nil, err + } + + // Receive GexReply + packet, err = c.readPacket() + if err != nil { + return nil, err + } + + var kexDHGexReply kexDHGexReplyMsg + if err = Unmarshal(packet, &kexDHGexReply); err != nil { + return nil, err + } + + if kexDHGexReply.Y.Cmp(bigOne) <= 0 || kexDHGexReply.Y.Cmp(pMinusOne) >= 0 { + return nil, errors.New("ssh: DH parameter out of bounds") + } + kInt := new(big.Int).Exp(kexDHGexReply.Y, x, msg.P) + + // Check if k is safe by verifying that k > 1 and k < p - 1 + if kInt.Cmp(bigOne) <= 0 || kInt.Cmp(pMinusOne) >= 0 { + return nil, fmt.Errorf("ssh: derived k is not safe") + } + + h := gex.hashFunc.New() + magics.write(h) + writeString(h, kexDHGexReply.HostKey) + binary.Write(h, binary.BigEndian, uint32(dhGroupExchangeMinimumBits)) + binary.Write(h, binary.BigEndian, uint32(dhGroupExchangePreferredBits)) + binary.Write(h, binary.BigEndian, uint32(dhGroupExchangeMaximumBits)) + writeInt(h, msg.P) + writeInt(h, msg.G) + writeInt(h, X) + writeInt(h, kexDHGexReply.Y) + K := make([]byte, intLength(kInt)) + marshalInt(K, kInt) + h.Write(K) + + return &kexResult{ + H: h.Sum(nil), + K: K, + HostKey: kexDHGexReply.HostKey, + Signature: kexDHGexReply.Signature, + Hash: gex.hashFunc, + }, nil +} + +// Server half implementation of the Diffie Hellman Key Exchange with SHA1 and SHA256. +func (gex *dhGEXSHA) Server(c packetConn, randSource io.Reader, magics *handshakeMagics, priv AlgorithmSigner, algo string) (result *kexResult, err error) { + // Receive GexRequest + packet, err := c.readPacket() + if err != nil { + return + } + var kexDHGexRequest kexDHGexRequestMsg + if err = Unmarshal(packet, &kexDHGexRequest); err != nil { + return + } + // We check that the request received is valid and that the MaxBits + // requested are at least equal to our supported minimum. This is the same + // check done in OpenSSH: + // https://github.com/openssh/openssh-portable/blob/80a2f64b/kexgexs.c#L94 + // + // Furthermore, we also check that the required MinBits are less than or + // equal to 4096 because we can use up to Oakley Group 16. + if kexDHGexRequest.MaxBits < kexDHGexRequest.MinBits || kexDHGexRequest.PreferredBits < kexDHGexRequest.MinBits || + kexDHGexRequest.MaxBits < kexDHGexRequest.PreferredBits || kexDHGexRequest.MaxBits < dhGroupExchangeMinimumBits || + kexDHGexRequest.MinBits > 4096 { + return nil, fmt.Errorf("ssh: DH GEX request out of range, min: %d, max: %d, preferred: %d", kexDHGexRequest.MinBits, + kexDHGexRequest.MaxBits, kexDHGexRequest.PreferredBits) + } + + var p *big.Int + // We hardcode sending Oakley Group 14 (2048 bits), Oakley Group 15 (3072 + // bits) or Oakley Group 16 (4096 bits), based on the requested max size. + if kexDHGexRequest.MaxBits < 3072 { + p, _ = new(big.Int).SetString(oakleyGroup14, 16) + } else if kexDHGexRequest.MaxBits < 4096 { + p, _ = new(big.Int).SetString(oakleyGroup15, 16) + } else { + p, _ = new(big.Int).SetString(oakleyGroup16, 16) + } + + g := big.NewInt(2) + msg := &kexDHGexGroupMsg{ + P: p, + G: g, + } + if err := c.writePacket(Marshal(msg)); err != nil { + return nil, err + } + + // Receive GexInit + packet, err = c.readPacket() + if err != nil { + return + } + var kexDHGexInit kexDHGexInitMsg + if err = Unmarshal(packet, &kexDHGexInit); err != nil { + return + } + + pHalf := new(big.Int).Rsh(p, 1) + + y, err := rand.Int(randSource, pHalf) + if err != nil { + return + } + Y := new(big.Int).Exp(g, y, p) + + pMinusOne := new(big.Int).Sub(p, bigOne) + if kexDHGexInit.X.Cmp(bigOne) <= 0 || kexDHGexInit.X.Cmp(pMinusOne) >= 0 { + return nil, errors.New("ssh: DH parameter out of bounds") + } + kInt := new(big.Int).Exp(kexDHGexInit.X, y, p) + + hostKeyBytes := priv.PublicKey().Marshal() + + h := gex.hashFunc.New() + magics.write(h) + writeString(h, hostKeyBytes) + binary.Write(h, binary.BigEndian, kexDHGexRequest.MinBits) + binary.Write(h, binary.BigEndian, kexDHGexRequest.PreferredBits) + binary.Write(h, binary.BigEndian, kexDHGexRequest.MaxBits) + writeInt(h, p) + writeInt(h, g) + writeInt(h, kexDHGexInit.X) + writeInt(h, Y) + + K := make([]byte, intLength(kInt)) + marshalInt(K, kInt) + h.Write(K) + + H := h.Sum(nil) + + // H is already a hash, but the hostkey signing will apply its + // own key-specific hash algorithm. + sig, err := signAndMarshal(priv, randSource, H, algo) + if err != nil { + return nil, err + } + + kexDHGexReply := kexDHGexReplyMsg{ + HostKey: hostKeyBytes, + Y: Y, + Signature: sig, + } + packet = Marshal(&kexDHGexReply) + + err = c.writePacket(packet) + + return &kexResult{ + H: H, + K: K, + HostKey: hostKeyBytes, + Signature: sig, + Hash: gex.hashFunc, + }, err +} diff --git a/tests/vendor/golang.org/x/crypto/ssh/keys.go b/tests/vendor/golang.org/x/crypto/ssh/keys.go new file mode 100644 index 000000000..566e09d5a --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/ssh/keys.go @@ -0,0 +1,1783 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "bytes" + "crypto" + "crypto/aes" + "crypto/cipher" + "crypto/dsa" + "crypto/ecdsa" + "crypto/ed25519" + "crypto/elliptic" + "crypto/md5" + "crypto/rand" + "crypto/rsa" + "crypto/sha256" + "crypto/x509" + "encoding/asn1" + "encoding/base64" + "encoding/binary" + "encoding/hex" + "encoding/pem" + "errors" + "fmt" + "io" + "math/big" + "strings" + + "golang.org/x/crypto/ssh/internal/bcrypt_pbkdf" +) + +// Public key algorithms names. These values can appear in PublicKey.Type, +// ClientConfig.HostKeyAlgorithms, Signature.Format, or as AlgorithmSigner +// arguments. +const ( + KeyAlgoRSA = "ssh-rsa" + // Deprecated: DSA is only supported at insecure key sizes, and was removed + // from major implementations. + KeyAlgoDSA = InsecureKeyAlgoDSA + // Deprecated: DSA is only supported at insecure key sizes, and was removed + // from major implementations. + InsecureKeyAlgoDSA = "ssh-dss" + KeyAlgoECDSA256 = "ecdsa-sha2-nistp256" + KeyAlgoSKECDSA256 = "sk-ecdsa-sha2-nistp256@openssh.com" + KeyAlgoECDSA384 = "ecdsa-sha2-nistp384" + KeyAlgoECDSA521 = "ecdsa-sha2-nistp521" + KeyAlgoED25519 = "ssh-ed25519" + KeyAlgoSKED25519 = "sk-ssh-ed25519@openssh.com" + + // KeyAlgoRSASHA256 and KeyAlgoRSASHA512 are only public key algorithms, not + // public key formats, so they can't appear as a PublicKey.Type. The + // corresponding PublicKey.Type is KeyAlgoRSA. See RFC 8332, Section 2. + KeyAlgoRSASHA256 = "rsa-sha2-256" + KeyAlgoRSASHA512 = "rsa-sha2-512" +) + +const ( + // Deprecated: use KeyAlgoRSA. + SigAlgoRSA = KeyAlgoRSA + // Deprecated: use KeyAlgoRSASHA256. + SigAlgoRSASHA2256 = KeyAlgoRSASHA256 + // Deprecated: use KeyAlgoRSASHA512. + SigAlgoRSASHA2512 = KeyAlgoRSASHA512 +) + +// parsePubKey parses a public key of the given algorithm. +// Use ParsePublicKey for keys with prepended algorithm. +func parsePubKey(in []byte, algo string) (pubKey PublicKey, rest []byte, err error) { + switch algo { + case KeyAlgoRSA: + return parseRSA(in) + case InsecureKeyAlgoDSA: + return parseDSA(in) + case KeyAlgoECDSA256, KeyAlgoECDSA384, KeyAlgoECDSA521: + return parseECDSA(in) + case KeyAlgoSKECDSA256: + return parseSKECDSA(in) + case KeyAlgoED25519: + return parseED25519(in) + case KeyAlgoSKED25519: + return parseSKEd25519(in) + case CertAlgoRSAv01, InsecureCertAlgoDSAv01, CertAlgoECDSA256v01, CertAlgoECDSA384v01, CertAlgoECDSA521v01, CertAlgoSKECDSA256v01, CertAlgoED25519v01, CertAlgoSKED25519v01: + cert, err := parseCert(in, certKeyAlgoNames[algo]) + if err != nil { + return nil, nil, err + } + return cert, nil, nil + } + return nil, nil, fmt.Errorf("ssh: unknown key algorithm: %v", algo) +} + +// parseAuthorizedKey parses a public key in OpenSSH authorized_keys format +// (see sshd(8) manual page) once the options and key type fields have been +// removed. +func parseAuthorizedKey(in []byte) (out PublicKey, comment string, err error) { + in = bytes.TrimSpace(in) + + i := bytes.IndexAny(in, " \t") + if i == -1 { + i = len(in) + } + base64Key := in[:i] + + key := make([]byte, base64.StdEncoding.DecodedLen(len(base64Key))) + n, err := base64.StdEncoding.Decode(key, base64Key) + if err != nil { + return nil, "", err + } + key = key[:n] + out, err = ParsePublicKey(key) + if err != nil { + return nil, "", err + } + comment = string(bytes.TrimSpace(in[i:])) + return out, comment, nil +} + +// ParseKnownHosts parses an entry in the format of the known_hosts file. +// +// The known_hosts format is documented in the sshd(8) manual page. This +// function will parse a single entry from in. On successful return, marker +// will contain the optional marker value (i.e. "cert-authority" or "revoked") +// or else be empty, hosts will contain the hosts that this entry matches, +// pubKey will contain the public key and comment will contain any trailing +// comment at the end of the line. See the sshd(8) manual page for the various +// forms that a host string can take. +// +// The unparsed remainder of the input will be returned in rest. This function +// can be called repeatedly to parse multiple entries. +// +// If no entries were found in the input then err will be io.EOF. Otherwise a +// non-nil err value indicates a parse error. +func ParseKnownHosts(in []byte) (marker string, hosts []string, pubKey PublicKey, comment string, rest []byte, err error) { + for len(in) > 0 { + end := bytes.IndexByte(in, '\n') + if end != -1 { + rest = in[end+1:] + in = in[:end] + } else { + rest = nil + } + + end = bytes.IndexByte(in, '\r') + if end != -1 { + in = in[:end] + } + + in = bytes.TrimSpace(in) + if len(in) == 0 || in[0] == '#' { + in = rest + continue + } + + i := bytes.IndexAny(in, " \t") + if i == -1 { + in = rest + continue + } + + // Strip out the beginning of the known_host key. + // This is either an optional marker or a (set of) hostname(s). + keyFields := bytes.Fields(in) + if len(keyFields) < 3 || len(keyFields) > 5 { + return "", nil, nil, "", nil, errors.New("ssh: invalid entry in known_hosts data") + } + + // keyFields[0] is either "@cert-authority", "@revoked" or a comma separated + // list of hosts + marker := "" + if keyFields[0][0] == '@' { + marker = string(keyFields[0][1:]) + keyFields = keyFields[1:] + } + + hosts := string(keyFields[0]) + // keyFields[1] contains the key type (e.g. “ssh-rsa”). + // However, that information is duplicated inside the + // base64-encoded key and so is ignored here. + + key := bytes.Join(keyFields[2:], []byte(" ")) + if pubKey, comment, err = parseAuthorizedKey(key); err != nil { + return "", nil, nil, "", nil, err + } + + return marker, strings.Split(hosts, ","), pubKey, comment, rest, nil + } + + return "", nil, nil, "", nil, io.EOF +} + +// ParseAuthorizedKey parses a public key from an authorized_keys +// file used in OpenSSH according to the sshd(8) manual page. +func ParseAuthorizedKey(in []byte) (out PublicKey, comment string, options []string, rest []byte, err error) { + for len(in) > 0 { + end := bytes.IndexByte(in, '\n') + if end != -1 { + rest = in[end+1:] + in = in[:end] + } else { + rest = nil + } + + end = bytes.IndexByte(in, '\r') + if end != -1 { + in = in[:end] + } + + in = bytes.TrimSpace(in) + if len(in) == 0 || in[0] == '#' { + in = rest + continue + } + + i := bytes.IndexAny(in, " \t") + if i == -1 { + in = rest + continue + } + + if out, comment, err = parseAuthorizedKey(in[i:]); err == nil { + return out, comment, options, rest, nil + } + + // No key type recognised. Maybe there's an options field at + // the beginning. + var b byte + inQuote := false + var candidateOptions []string + optionStart := 0 + for i, b = range in { + isEnd := !inQuote && (b == ' ' || b == '\t') + if (b == ',' && !inQuote) || isEnd { + if i-optionStart > 0 { + candidateOptions = append(candidateOptions, string(in[optionStart:i])) + } + optionStart = i + 1 + } + if isEnd { + break + } + if b == '"' && (i == 0 || (i > 0 && in[i-1] != '\\')) { + inQuote = !inQuote + } + } + for i < len(in) && (in[i] == ' ' || in[i] == '\t') { + i++ + } + if i == len(in) { + // Invalid line: unmatched quote + in = rest + continue + } + + in = in[i:] + i = bytes.IndexAny(in, " \t") + if i == -1 { + in = rest + continue + } + + if out, comment, err = parseAuthorizedKey(in[i:]); err == nil { + options = candidateOptions + return out, comment, options, rest, nil + } + + in = rest + continue + } + + return nil, "", nil, nil, errors.New("ssh: no key found") +} + +// ParsePublicKey parses an SSH public key formatted for use in +// the SSH wire protocol according to RFC 4253, section 6.6. +func ParsePublicKey(in []byte) (out PublicKey, err error) { + algo, in, ok := parseString(in) + if !ok { + return nil, errShortRead + } + var rest []byte + out, rest, err = parsePubKey(in, string(algo)) + if len(rest) > 0 { + return nil, errors.New("ssh: trailing junk in public key") + } + + return out, err +} + +// MarshalAuthorizedKey serializes key for inclusion in an OpenSSH +// authorized_keys file. The return value ends with newline. +func MarshalAuthorizedKey(key PublicKey) []byte { + b := &bytes.Buffer{} + b.WriteString(key.Type()) + b.WriteByte(' ') + e := base64.NewEncoder(base64.StdEncoding, b) + e.Write(key.Marshal()) + e.Close() + b.WriteByte('\n') + return b.Bytes() +} + +// MarshalPrivateKey returns a PEM block with the private key serialized in the +// OpenSSH format. +func MarshalPrivateKey(key crypto.PrivateKey, comment string) (*pem.Block, error) { + return marshalOpenSSHPrivateKey(key, comment, unencryptedOpenSSHMarshaler) +} + +// MarshalPrivateKeyWithPassphrase returns a PEM block holding the encrypted +// private key serialized in the OpenSSH format. +func MarshalPrivateKeyWithPassphrase(key crypto.PrivateKey, comment string, passphrase []byte) (*pem.Block, error) { + return marshalOpenSSHPrivateKey(key, comment, passphraseProtectedOpenSSHMarshaler(passphrase)) +} + +// PublicKey represents a public key using an unspecified algorithm. +// +// Some PublicKeys provided by this package also implement CryptoPublicKey. +type PublicKey interface { + // Type returns the key format name, e.g. "ssh-rsa". + Type() string + + // Marshal returns the serialized key data in SSH wire format, with the name + // prefix. To unmarshal the returned data, use the ParsePublicKey function. + Marshal() []byte + + // Verify that sig is a signature on the given data using this key. This + // method will hash the data appropriately first. sig.Format is allowed to + // be any signature algorithm compatible with the key type, the caller + // should check if it has more stringent requirements. + Verify(data []byte, sig *Signature) error +} + +// CryptoPublicKey, if implemented by a PublicKey, +// returns the underlying crypto.PublicKey form of the key. +type CryptoPublicKey interface { + CryptoPublicKey() crypto.PublicKey +} + +// A Signer can create signatures that verify against a public key. +// +// Some Signers provided by this package also implement MultiAlgorithmSigner. +type Signer interface { + // PublicKey returns the associated PublicKey. + PublicKey() PublicKey + + // Sign returns a signature for the given data. This method will hash the + // data appropriately first. The signature algorithm is expected to match + // the key format returned by the PublicKey.Type method (and not to be any + // alternative algorithm supported by the key format). + Sign(rand io.Reader, data []byte) (*Signature, error) +} + +// An AlgorithmSigner is a Signer that also supports specifying an algorithm to +// use for signing. +// +// An AlgorithmSigner can't advertise the algorithms it supports, unless it also +// implements MultiAlgorithmSigner, so it should be prepared to be invoked with +// every algorithm supported by the public key format. +type AlgorithmSigner interface { + Signer + + // SignWithAlgorithm is like Signer.Sign, but allows specifying a desired + // signing algorithm. Callers may pass an empty string for the algorithm in + // which case the AlgorithmSigner will use a default algorithm. This default + // doesn't currently control any behavior in this package. + SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error) +} + +// MultiAlgorithmSigner is an AlgorithmSigner that also reports the algorithms +// supported by that signer. +type MultiAlgorithmSigner interface { + AlgorithmSigner + + // Algorithms returns the available algorithms in preference order. The list + // must not be empty, and it must not include certificate types. + Algorithms() []string +} + +// NewSignerWithAlgorithms returns a signer restricted to the specified +// algorithms. The algorithms must be set in preference order. The list must not +// be empty, and it must not include certificate types. An error is returned if +// the specified algorithms are incompatible with the public key type. +func NewSignerWithAlgorithms(signer AlgorithmSigner, algorithms []string) (MultiAlgorithmSigner, error) { + if len(algorithms) == 0 { + return nil, errors.New("ssh: please specify at least one valid signing algorithm") + } + var signerAlgos []string + supportedAlgos := algorithmsForKeyFormat(underlyingAlgo(signer.PublicKey().Type())) + if s, ok := signer.(*multiAlgorithmSigner); ok { + signerAlgos = s.Algorithms() + } else { + signerAlgos = supportedAlgos + } + + for _, algo := range algorithms { + if !contains(supportedAlgos, algo) { + return nil, fmt.Errorf("ssh: algorithm %q is not supported for key type %q", + algo, signer.PublicKey().Type()) + } + if !contains(signerAlgos, algo) { + return nil, fmt.Errorf("ssh: algorithm %q is restricted for the provided signer", algo) + } + } + return &multiAlgorithmSigner{ + AlgorithmSigner: signer, + supportedAlgorithms: algorithms, + }, nil +} + +type multiAlgorithmSigner struct { + AlgorithmSigner + supportedAlgorithms []string +} + +func (s *multiAlgorithmSigner) Algorithms() []string { + return s.supportedAlgorithms +} + +func (s *multiAlgorithmSigner) isAlgorithmSupported(algorithm string) bool { + if algorithm == "" { + algorithm = underlyingAlgo(s.PublicKey().Type()) + } + for _, algo := range s.supportedAlgorithms { + if algorithm == algo { + return true + } + } + return false +} + +func (s *multiAlgorithmSigner) SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error) { + if !s.isAlgorithmSupported(algorithm) { + return nil, fmt.Errorf("ssh: algorithm %q is not supported: %v", algorithm, s.supportedAlgorithms) + } + return s.AlgorithmSigner.SignWithAlgorithm(rand, data, algorithm) +} + +type rsaPublicKey rsa.PublicKey + +func (r *rsaPublicKey) Type() string { + return "ssh-rsa" +} + +// parseRSA parses an RSA key according to RFC 4253, section 6.6. +func parseRSA(in []byte) (out PublicKey, rest []byte, err error) { + var w struct { + E *big.Int + N *big.Int + Rest []byte `ssh:"rest"` + } + if err := Unmarshal(in, &w); err != nil { + return nil, nil, err + } + + if w.E.BitLen() > 24 { + return nil, nil, errors.New("ssh: exponent too large") + } + e := w.E.Int64() + if e < 3 || e&1 == 0 { + return nil, nil, errors.New("ssh: incorrect exponent") + } + + var key rsa.PublicKey + key.E = int(e) + key.N = w.N + return (*rsaPublicKey)(&key), w.Rest, nil +} + +func (r *rsaPublicKey) Marshal() []byte { + e := new(big.Int).SetInt64(int64(r.E)) + // RSA publickey struct layout should match the struct used by + // parseRSACert in the x/crypto/ssh/agent package. + wirekey := struct { + Name string + E *big.Int + N *big.Int + }{ + KeyAlgoRSA, + e, + r.N, + } + return Marshal(&wirekey) +} + +func (r *rsaPublicKey) Verify(data []byte, sig *Signature) error { + supportedAlgos := algorithmsForKeyFormat(r.Type()) + if !contains(supportedAlgos, sig.Format) { + return fmt.Errorf("ssh: signature type %s for key type %s", sig.Format, r.Type()) + } + hash := hashFuncs[sig.Format] + h := hash.New() + h.Write(data) + digest := h.Sum(nil) + + // Signatures in PKCS1v15 must match the key's modulus in + // length. However with SSH, some signers provide RSA + // signatures which are missing the MSB 0's of the bignum + // represented. With ssh-rsa signatures, this is encouraged by + // the spec (even though e.g. OpenSSH will give the full + // length unconditionally). With rsa-sha2-* signatures, the + // verifier is allowed to support these, even though they are + // out of spec. See RFC 4253 Section 6.6 for ssh-rsa and RFC + // 8332 Section 3 for rsa-sha2-* details. + // + // In practice: + // * OpenSSH always allows "short" signatures: + // https://github.com/openssh/openssh-portable/blob/V_9_8_P1/ssh-rsa.c#L526 + // but always generates padded signatures: + // https://github.com/openssh/openssh-portable/blob/V_9_8_P1/ssh-rsa.c#L439 + // + // * PuTTY versions 0.81 and earlier will generate short + // signatures for all RSA signature variants. Note that + // PuTTY is embedded in other software, such as WinSCP and + // FileZilla. At the time of writing, a patch has been + // applied to PuTTY to generate padded signatures for + // rsa-sha2-*, but not yet released: + // https://git.tartarus.org/?p=simon/putty.git;a=commitdiff;h=a5bcf3d384e1bf15a51a6923c3724cbbee022d8e + // + // * SSH.NET versions 2024.0.0 and earlier will generate short + // signatures for all RSA signature variants, fixed in 2024.1.0: + // https://github.com/sshnet/SSH.NET/releases/tag/2024.1.0 + // + // As a result, we pad these up to the key size by inserting + // leading 0's. + // + // Note that support for short signatures with rsa-sha2-* may + // be removed in the future due to such signatures not being + // allowed by the spec. + blob := sig.Blob + keySize := (*rsa.PublicKey)(r).Size() + if len(blob) < keySize { + padded := make([]byte, keySize) + copy(padded[keySize-len(blob):], blob) + blob = padded + } + return rsa.VerifyPKCS1v15((*rsa.PublicKey)(r), hash, digest, blob) +} + +func (r *rsaPublicKey) CryptoPublicKey() crypto.PublicKey { + return (*rsa.PublicKey)(r) +} + +type dsaPublicKey dsa.PublicKey + +func (k *dsaPublicKey) Type() string { + return "ssh-dss" +} + +func checkDSAParams(param *dsa.Parameters) error { + // SSH specifies FIPS 186-2, which only provided a single size + // (1024 bits) DSA key. FIPS 186-3 allows for larger key + // sizes, which would confuse SSH. + if l := param.P.BitLen(); l != 1024 { + return fmt.Errorf("ssh: unsupported DSA key size %d", l) + } + + return nil +} + +// parseDSA parses an DSA key according to RFC 4253, section 6.6. +func parseDSA(in []byte) (out PublicKey, rest []byte, err error) { + var w struct { + P, Q, G, Y *big.Int + Rest []byte `ssh:"rest"` + } + if err := Unmarshal(in, &w); err != nil { + return nil, nil, err + } + + param := dsa.Parameters{ + P: w.P, + Q: w.Q, + G: w.G, + } + if err := checkDSAParams(¶m); err != nil { + return nil, nil, err + } + + key := &dsaPublicKey{ + Parameters: param, + Y: w.Y, + } + return key, w.Rest, nil +} + +func (k *dsaPublicKey) Marshal() []byte { + // DSA publickey struct layout should match the struct used by + // parseDSACert in the x/crypto/ssh/agent package. + w := struct { + Name string + P, Q, G, Y *big.Int + }{ + k.Type(), + k.P, + k.Q, + k.G, + k.Y, + } + + return Marshal(&w) +} + +func (k *dsaPublicKey) Verify(data []byte, sig *Signature) error { + if sig.Format != k.Type() { + return fmt.Errorf("ssh: signature type %s for key type %s", sig.Format, k.Type()) + } + h := hashFuncs[sig.Format].New() + h.Write(data) + digest := h.Sum(nil) + + // Per RFC 4253, section 6.6, + // The value for 'dss_signature_blob' is encoded as a string containing + // r, followed by s (which are 160-bit integers, without lengths or + // padding, unsigned, and in network byte order). + // For DSS purposes, sig.Blob should be exactly 40 bytes in length. + if len(sig.Blob) != 40 { + return errors.New("ssh: DSA signature parse error") + } + r := new(big.Int).SetBytes(sig.Blob[:20]) + s := new(big.Int).SetBytes(sig.Blob[20:]) + if dsa.Verify((*dsa.PublicKey)(k), digest, r, s) { + return nil + } + return errors.New("ssh: signature did not verify") +} + +func (k *dsaPublicKey) CryptoPublicKey() crypto.PublicKey { + return (*dsa.PublicKey)(k) +} + +type dsaPrivateKey struct { + *dsa.PrivateKey +} + +func (k *dsaPrivateKey) PublicKey() PublicKey { + return (*dsaPublicKey)(&k.PrivateKey.PublicKey) +} + +func (k *dsaPrivateKey) Sign(rand io.Reader, data []byte) (*Signature, error) { + return k.SignWithAlgorithm(rand, data, k.PublicKey().Type()) +} + +func (k *dsaPrivateKey) Algorithms() []string { + return []string{k.PublicKey().Type()} +} + +func (k *dsaPrivateKey) SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error) { + if algorithm != "" && algorithm != k.PublicKey().Type() { + return nil, fmt.Errorf("ssh: unsupported signature algorithm %s", algorithm) + } + + h := hashFuncs[k.PublicKey().Type()].New() + h.Write(data) + digest := h.Sum(nil) + r, s, err := dsa.Sign(rand, k.PrivateKey, digest) + if err != nil { + return nil, err + } + + sig := make([]byte, 40) + rb := r.Bytes() + sb := s.Bytes() + + copy(sig[20-len(rb):20], rb) + copy(sig[40-len(sb):], sb) + + return &Signature{ + Format: k.PublicKey().Type(), + Blob: sig, + }, nil +} + +type ecdsaPublicKey ecdsa.PublicKey + +func (k *ecdsaPublicKey) Type() string { + return "ecdsa-sha2-" + k.nistID() +} + +func (k *ecdsaPublicKey) nistID() string { + switch k.Params().BitSize { + case 256: + return "nistp256" + case 384: + return "nistp384" + case 521: + return "nistp521" + } + panic("ssh: unsupported ecdsa key size") +} + +type ed25519PublicKey ed25519.PublicKey + +func (k ed25519PublicKey) Type() string { + return KeyAlgoED25519 +} + +func parseED25519(in []byte) (out PublicKey, rest []byte, err error) { + var w struct { + KeyBytes []byte + Rest []byte `ssh:"rest"` + } + + if err := Unmarshal(in, &w); err != nil { + return nil, nil, err + } + + if l := len(w.KeyBytes); l != ed25519.PublicKeySize { + return nil, nil, fmt.Errorf("invalid size %d for Ed25519 public key", l) + } + + return ed25519PublicKey(w.KeyBytes), w.Rest, nil +} + +func (k ed25519PublicKey) Marshal() []byte { + w := struct { + Name string + KeyBytes []byte + }{ + KeyAlgoED25519, + []byte(k), + } + return Marshal(&w) +} + +func (k ed25519PublicKey) Verify(b []byte, sig *Signature) error { + if sig.Format != k.Type() { + return fmt.Errorf("ssh: signature type %s for key type %s", sig.Format, k.Type()) + } + if l := len(k); l != ed25519.PublicKeySize { + return fmt.Errorf("ssh: invalid size %d for Ed25519 public key", l) + } + + if ok := ed25519.Verify(ed25519.PublicKey(k), b, sig.Blob); !ok { + return errors.New("ssh: signature did not verify") + } + + return nil +} + +func (k ed25519PublicKey) CryptoPublicKey() crypto.PublicKey { + return ed25519.PublicKey(k) +} + +func supportedEllipticCurve(curve elliptic.Curve) bool { + return curve == elliptic.P256() || curve == elliptic.P384() || curve == elliptic.P521() +} + +// parseECDSA parses an ECDSA key according to RFC 5656, section 3.1. +func parseECDSA(in []byte) (out PublicKey, rest []byte, err error) { + var w struct { + Curve string + KeyBytes []byte + Rest []byte `ssh:"rest"` + } + + if err := Unmarshal(in, &w); err != nil { + return nil, nil, err + } + + key := new(ecdsa.PublicKey) + + switch w.Curve { + case "nistp256": + key.Curve = elliptic.P256() + case "nistp384": + key.Curve = elliptic.P384() + case "nistp521": + key.Curve = elliptic.P521() + default: + return nil, nil, errors.New("ssh: unsupported curve") + } + + key.X, key.Y = elliptic.Unmarshal(key.Curve, w.KeyBytes) + if key.X == nil || key.Y == nil { + return nil, nil, errors.New("ssh: invalid curve point") + } + return (*ecdsaPublicKey)(key), w.Rest, nil +} + +func (k *ecdsaPublicKey) Marshal() []byte { + // See RFC 5656, section 3.1. + keyBytes := elliptic.Marshal(k.Curve, k.X, k.Y) + // ECDSA publickey struct layout should match the struct used by + // parseECDSACert in the x/crypto/ssh/agent package. + w := struct { + Name string + ID string + Key []byte + }{ + k.Type(), + k.nistID(), + keyBytes, + } + + return Marshal(&w) +} + +func (k *ecdsaPublicKey) Verify(data []byte, sig *Signature) error { + if sig.Format != k.Type() { + return fmt.Errorf("ssh: signature type %s for key type %s", sig.Format, k.Type()) + } + + h := hashFuncs[sig.Format].New() + h.Write(data) + digest := h.Sum(nil) + + // Per RFC 5656, section 3.1.2, + // The ecdsa_signature_blob value has the following specific encoding: + // mpint r + // mpint s + var ecSig struct { + R *big.Int + S *big.Int + } + + if err := Unmarshal(sig.Blob, &ecSig); err != nil { + return err + } + + if ecdsa.Verify((*ecdsa.PublicKey)(k), digest, ecSig.R, ecSig.S) { + return nil + } + return errors.New("ssh: signature did not verify") +} + +func (k *ecdsaPublicKey) CryptoPublicKey() crypto.PublicKey { + return (*ecdsa.PublicKey)(k) +} + +// skFields holds the additional fields present in U2F/FIDO2 signatures. +// See openssh/PROTOCOL.u2f 'SSH U2F Signatures' for details. +type skFields struct { + // Flags contains U2F/FIDO2 flags such as 'user present' + Flags byte + // Counter is a monotonic signature counter which can be + // used to detect concurrent use of a private key, should + // it be extracted from hardware. + Counter uint32 +} + +type skECDSAPublicKey struct { + // application is a URL-like string, typically "ssh:" for SSH. + // see openssh/PROTOCOL.u2f for details. + application string + ecdsa.PublicKey +} + +func (k *skECDSAPublicKey) Type() string { + return KeyAlgoSKECDSA256 +} + +func (k *skECDSAPublicKey) nistID() string { + return "nistp256" +} + +func parseSKECDSA(in []byte) (out PublicKey, rest []byte, err error) { + var w struct { + Curve string + KeyBytes []byte + Application string + Rest []byte `ssh:"rest"` + } + + if err := Unmarshal(in, &w); err != nil { + return nil, nil, err + } + + key := new(skECDSAPublicKey) + key.application = w.Application + + if w.Curve != "nistp256" { + return nil, nil, errors.New("ssh: unsupported curve") + } + key.Curve = elliptic.P256() + + key.X, key.Y = elliptic.Unmarshal(key.Curve, w.KeyBytes) + if key.X == nil || key.Y == nil { + return nil, nil, errors.New("ssh: invalid curve point") + } + + return key, w.Rest, nil +} + +func (k *skECDSAPublicKey) Marshal() []byte { + // See RFC 5656, section 3.1. + keyBytes := elliptic.Marshal(k.Curve, k.X, k.Y) + w := struct { + Name string + ID string + Key []byte + Application string + }{ + k.Type(), + k.nistID(), + keyBytes, + k.application, + } + + return Marshal(&w) +} + +func (k *skECDSAPublicKey) Verify(data []byte, sig *Signature) error { + if sig.Format != k.Type() { + return fmt.Errorf("ssh: signature type %s for key type %s", sig.Format, k.Type()) + } + + h := hashFuncs[sig.Format].New() + h.Write([]byte(k.application)) + appDigest := h.Sum(nil) + + h.Reset() + h.Write(data) + dataDigest := h.Sum(nil) + + var ecSig struct { + R *big.Int + S *big.Int + } + if err := Unmarshal(sig.Blob, &ecSig); err != nil { + return err + } + + var skf skFields + if err := Unmarshal(sig.Rest, &skf); err != nil { + return err + } + + blob := struct { + ApplicationDigest []byte `ssh:"rest"` + Flags byte + Counter uint32 + MessageDigest []byte `ssh:"rest"` + }{ + appDigest, + skf.Flags, + skf.Counter, + dataDigest, + } + + original := Marshal(blob) + + h.Reset() + h.Write(original) + digest := h.Sum(nil) + + if ecdsa.Verify((*ecdsa.PublicKey)(&k.PublicKey), digest, ecSig.R, ecSig.S) { + return nil + } + return errors.New("ssh: signature did not verify") +} + +func (k *skECDSAPublicKey) CryptoPublicKey() crypto.PublicKey { + return &k.PublicKey +} + +type skEd25519PublicKey struct { + // application is a URL-like string, typically "ssh:" for SSH. + // see openssh/PROTOCOL.u2f for details. + application string + ed25519.PublicKey +} + +func (k *skEd25519PublicKey) Type() string { + return KeyAlgoSKED25519 +} + +func parseSKEd25519(in []byte) (out PublicKey, rest []byte, err error) { + var w struct { + KeyBytes []byte + Application string + Rest []byte `ssh:"rest"` + } + + if err := Unmarshal(in, &w); err != nil { + return nil, nil, err + } + + if l := len(w.KeyBytes); l != ed25519.PublicKeySize { + return nil, nil, fmt.Errorf("invalid size %d for Ed25519 public key", l) + } + + key := new(skEd25519PublicKey) + key.application = w.Application + key.PublicKey = ed25519.PublicKey(w.KeyBytes) + + return key, w.Rest, nil +} + +func (k *skEd25519PublicKey) Marshal() []byte { + w := struct { + Name string + KeyBytes []byte + Application string + }{ + KeyAlgoSKED25519, + []byte(k.PublicKey), + k.application, + } + return Marshal(&w) +} + +func (k *skEd25519PublicKey) Verify(data []byte, sig *Signature) error { + if sig.Format != k.Type() { + return fmt.Errorf("ssh: signature type %s for key type %s", sig.Format, k.Type()) + } + if l := len(k.PublicKey); l != ed25519.PublicKeySize { + return fmt.Errorf("invalid size %d for Ed25519 public key", l) + } + + h := hashFuncs[sig.Format].New() + h.Write([]byte(k.application)) + appDigest := h.Sum(nil) + + h.Reset() + h.Write(data) + dataDigest := h.Sum(nil) + + var edSig struct { + Signature []byte `ssh:"rest"` + } + + if err := Unmarshal(sig.Blob, &edSig); err != nil { + return err + } + + var skf skFields + if err := Unmarshal(sig.Rest, &skf); err != nil { + return err + } + + blob := struct { + ApplicationDigest []byte `ssh:"rest"` + Flags byte + Counter uint32 + MessageDigest []byte `ssh:"rest"` + }{ + appDigest, + skf.Flags, + skf.Counter, + dataDigest, + } + + original := Marshal(blob) + + if ok := ed25519.Verify(k.PublicKey, original, edSig.Signature); !ok { + return errors.New("ssh: signature did not verify") + } + + return nil +} + +func (k *skEd25519PublicKey) CryptoPublicKey() crypto.PublicKey { + return k.PublicKey +} + +// NewSignerFromKey takes an *rsa.PrivateKey, *dsa.PrivateKey, +// *ecdsa.PrivateKey or any other crypto.Signer and returns a +// corresponding Signer instance. ECDSA keys must use P-256, P-384 or +// P-521. DSA keys must use parameter size L1024N160. +func NewSignerFromKey(key interface{}) (Signer, error) { + switch key := key.(type) { + case crypto.Signer: + return NewSignerFromSigner(key) + case *dsa.PrivateKey: + return newDSAPrivateKey(key) + default: + return nil, fmt.Errorf("ssh: unsupported key type %T", key) + } +} + +func newDSAPrivateKey(key *dsa.PrivateKey) (Signer, error) { + if err := checkDSAParams(&key.PublicKey.Parameters); err != nil { + return nil, err + } + + return &dsaPrivateKey{key}, nil +} + +type wrappedSigner struct { + signer crypto.Signer + pubKey PublicKey +} + +// NewSignerFromSigner takes any crypto.Signer implementation and +// returns a corresponding Signer interface. This can be used, for +// example, with keys kept in hardware modules. +func NewSignerFromSigner(signer crypto.Signer) (Signer, error) { + pubKey, err := NewPublicKey(signer.Public()) + if err != nil { + return nil, err + } + + return &wrappedSigner{signer, pubKey}, nil +} + +func (s *wrappedSigner) PublicKey() PublicKey { + return s.pubKey +} + +func (s *wrappedSigner) Sign(rand io.Reader, data []byte) (*Signature, error) { + return s.SignWithAlgorithm(rand, data, s.pubKey.Type()) +} + +func (s *wrappedSigner) Algorithms() []string { + return algorithmsForKeyFormat(s.pubKey.Type()) +} + +func (s *wrappedSigner) SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error) { + if algorithm == "" { + algorithm = s.pubKey.Type() + } + + if !contains(s.Algorithms(), algorithm) { + return nil, fmt.Errorf("ssh: unsupported signature algorithm %q for key format %q", algorithm, s.pubKey.Type()) + } + + hashFunc := hashFuncs[algorithm] + var digest []byte + if hashFunc != 0 { + h := hashFunc.New() + h.Write(data) + digest = h.Sum(nil) + } else { + digest = data + } + + signature, err := s.signer.Sign(rand, digest, hashFunc) + if err != nil { + return nil, err + } + + // crypto.Signer.Sign is expected to return an ASN.1-encoded signature + // for ECDSA and DSA, but that's not the encoding expected by SSH, so + // re-encode. + switch s.pubKey.(type) { + case *ecdsaPublicKey, *dsaPublicKey: + type asn1Signature struct { + R, S *big.Int + } + asn1Sig := new(asn1Signature) + _, err := asn1.Unmarshal(signature, asn1Sig) + if err != nil { + return nil, err + } + + switch s.pubKey.(type) { + case *ecdsaPublicKey: + signature = Marshal(asn1Sig) + + case *dsaPublicKey: + signature = make([]byte, 40) + r := asn1Sig.R.Bytes() + s := asn1Sig.S.Bytes() + copy(signature[20-len(r):20], r) + copy(signature[40-len(s):40], s) + } + } + + return &Signature{ + Format: algorithm, + Blob: signature, + }, nil +} + +// NewPublicKey takes an *rsa.PublicKey, *dsa.PublicKey, *ecdsa.PublicKey, +// or ed25519.PublicKey returns a corresponding PublicKey instance. +// ECDSA keys must use P-256, P-384 or P-521. +func NewPublicKey(key interface{}) (PublicKey, error) { + switch key := key.(type) { + case *rsa.PublicKey: + return (*rsaPublicKey)(key), nil + case *ecdsa.PublicKey: + if !supportedEllipticCurve(key.Curve) { + return nil, errors.New("ssh: only P-256, P-384 and P-521 EC keys are supported") + } + return (*ecdsaPublicKey)(key), nil + case *dsa.PublicKey: + return (*dsaPublicKey)(key), nil + case ed25519.PublicKey: + if l := len(key); l != ed25519.PublicKeySize { + return nil, fmt.Errorf("ssh: invalid size %d for Ed25519 public key", l) + } + return ed25519PublicKey(key), nil + default: + return nil, fmt.Errorf("ssh: unsupported key type %T", key) + } +} + +// ParsePrivateKey returns a Signer from a PEM encoded private key. It supports +// the same keys as ParseRawPrivateKey. If the private key is encrypted, it +// will return a PassphraseMissingError. +func ParsePrivateKey(pemBytes []byte) (Signer, error) { + key, err := ParseRawPrivateKey(pemBytes) + if err != nil { + return nil, err + } + + return NewSignerFromKey(key) +} + +// ParsePrivateKeyWithPassphrase returns a Signer from a PEM encoded private +// key and passphrase. It supports the same keys as +// ParseRawPrivateKeyWithPassphrase. +func ParsePrivateKeyWithPassphrase(pemBytes, passphrase []byte) (Signer, error) { + key, err := ParseRawPrivateKeyWithPassphrase(pemBytes, passphrase) + if err != nil { + return nil, err + } + + return NewSignerFromKey(key) +} + +// encryptedBlock tells whether a private key is +// encrypted by examining its Proc-Type header +// for a mention of ENCRYPTED +// according to RFC 1421 Section 4.6.1.1. +func encryptedBlock(block *pem.Block) bool { + return strings.Contains(block.Headers["Proc-Type"], "ENCRYPTED") +} + +// A PassphraseMissingError indicates that parsing this private key requires a +// passphrase. Use ParsePrivateKeyWithPassphrase. +type PassphraseMissingError struct { + // PublicKey will be set if the private key format includes an unencrypted + // public key along with the encrypted private key. + PublicKey PublicKey +} + +func (*PassphraseMissingError) Error() string { + return "ssh: this private key is passphrase protected" +} + +// ParseRawPrivateKey returns a private key from a PEM encoded private key. It supports +// RSA, DSA, ECDSA, and Ed25519 private keys in PKCS#1, PKCS#8, OpenSSL, and OpenSSH +// formats. If the private key is encrypted, it will return a PassphraseMissingError. +func ParseRawPrivateKey(pemBytes []byte) (interface{}, error) { + block, _ := pem.Decode(pemBytes) + if block == nil { + return nil, errors.New("ssh: no key found") + } + + if encryptedBlock(block) { + return nil, &PassphraseMissingError{} + } + + switch block.Type { + case "RSA PRIVATE KEY": + return x509.ParsePKCS1PrivateKey(block.Bytes) + // RFC5208 - https://tools.ietf.org/html/rfc5208 + case "PRIVATE KEY": + return x509.ParsePKCS8PrivateKey(block.Bytes) + case "EC PRIVATE KEY": + return x509.ParseECPrivateKey(block.Bytes) + case "DSA PRIVATE KEY": + return ParseDSAPrivateKey(block.Bytes) + case "OPENSSH PRIVATE KEY": + return parseOpenSSHPrivateKey(block.Bytes, unencryptedOpenSSHKey) + default: + return nil, fmt.Errorf("ssh: unsupported key type %q", block.Type) + } +} + +// ParseRawPrivateKeyWithPassphrase returns a private key decrypted with +// passphrase from a PEM encoded private key. If the passphrase is wrong, it +// will return x509.IncorrectPasswordError. +func ParseRawPrivateKeyWithPassphrase(pemBytes, passphrase []byte) (interface{}, error) { + block, _ := pem.Decode(pemBytes) + if block == nil { + return nil, errors.New("ssh: no key found") + } + + if block.Type == "OPENSSH PRIVATE KEY" { + return parseOpenSSHPrivateKey(block.Bytes, passphraseProtectedOpenSSHKey(passphrase)) + } + + if !encryptedBlock(block) || !x509.IsEncryptedPEMBlock(block) { + return nil, errors.New("ssh: not an encrypted key") + } + + buf, err := x509.DecryptPEMBlock(block, passphrase) + if err != nil { + if err == x509.IncorrectPasswordError { + return nil, err + } + return nil, fmt.Errorf("ssh: cannot decode encrypted private keys: %v", err) + } + + var result interface{} + + switch block.Type { + case "RSA PRIVATE KEY": + result, err = x509.ParsePKCS1PrivateKey(buf) + case "EC PRIVATE KEY": + result, err = x509.ParseECPrivateKey(buf) + case "DSA PRIVATE KEY": + result, err = ParseDSAPrivateKey(buf) + default: + err = fmt.Errorf("ssh: unsupported key type %q", block.Type) + } + // Because of deficiencies in the format, DecryptPEMBlock does not always + // detect an incorrect password. In these cases decrypted DER bytes is + // random noise. If the parsing of the key returns an asn1.StructuralError + // we return x509.IncorrectPasswordError. + if _, ok := err.(asn1.StructuralError); ok { + return nil, x509.IncorrectPasswordError + } + + return result, err +} + +// ParseDSAPrivateKey returns a DSA private key from its ASN.1 DER encoding, as +// specified by the OpenSSL DSA man page. +func ParseDSAPrivateKey(der []byte) (*dsa.PrivateKey, error) { + var k struct { + Version int + P *big.Int + Q *big.Int + G *big.Int + Pub *big.Int + Priv *big.Int + } + rest, err := asn1.Unmarshal(der, &k) + if err != nil { + return nil, errors.New("ssh: failed to parse DSA key: " + err.Error()) + } + if len(rest) > 0 { + return nil, errors.New("ssh: garbage after DSA key") + } + + return &dsa.PrivateKey{ + PublicKey: dsa.PublicKey{ + Parameters: dsa.Parameters{ + P: k.P, + Q: k.Q, + G: k.G, + }, + Y: k.Pub, + }, + X: k.Priv, + }, nil +} + +func unencryptedOpenSSHKey(cipherName, kdfName, kdfOpts string, privKeyBlock []byte) ([]byte, error) { + if kdfName != "none" || cipherName != "none" { + return nil, &PassphraseMissingError{} + } + if kdfOpts != "" { + return nil, errors.New("ssh: invalid openssh private key") + } + return privKeyBlock, nil +} + +func passphraseProtectedOpenSSHKey(passphrase []byte) openSSHDecryptFunc { + return func(cipherName, kdfName, kdfOpts string, privKeyBlock []byte) ([]byte, error) { + if kdfName == "none" || cipherName == "none" { + return nil, errors.New("ssh: key is not password protected") + } + if kdfName != "bcrypt" { + return nil, fmt.Errorf("ssh: unknown KDF %q, only supports %q", kdfName, "bcrypt") + } + + var opts struct { + Salt string + Rounds uint32 + } + if err := Unmarshal([]byte(kdfOpts), &opts); err != nil { + return nil, err + } + + k, err := bcrypt_pbkdf.Key(passphrase, []byte(opts.Salt), int(opts.Rounds), 32+16) + if err != nil { + return nil, err + } + key, iv := k[:32], k[32:] + + c, err := aes.NewCipher(key) + if err != nil { + return nil, err + } + switch cipherName { + case "aes256-ctr": + ctr := cipher.NewCTR(c, iv) + ctr.XORKeyStream(privKeyBlock, privKeyBlock) + case "aes256-cbc": + if len(privKeyBlock)%c.BlockSize() != 0 { + return nil, fmt.Errorf("ssh: invalid encrypted private key length, not a multiple of the block size") + } + cbc := cipher.NewCBCDecrypter(c, iv) + cbc.CryptBlocks(privKeyBlock, privKeyBlock) + default: + return nil, fmt.Errorf("ssh: unknown cipher %q, only supports %q or %q", cipherName, "aes256-ctr", "aes256-cbc") + } + + return privKeyBlock, nil + } +} + +func unencryptedOpenSSHMarshaler(privKeyBlock []byte) ([]byte, string, string, string, error) { + key := generateOpenSSHPadding(privKeyBlock, 8) + return key, "none", "none", "", nil +} + +func passphraseProtectedOpenSSHMarshaler(passphrase []byte) openSSHEncryptFunc { + return func(privKeyBlock []byte) ([]byte, string, string, string, error) { + salt := make([]byte, 16) + if _, err := rand.Read(salt); err != nil { + return nil, "", "", "", err + } + + opts := struct { + Salt []byte + Rounds uint32 + }{salt, 16} + + // Derive key to encrypt the private key block. + k, err := bcrypt_pbkdf.Key(passphrase, salt, int(opts.Rounds), 32+aes.BlockSize) + if err != nil { + return nil, "", "", "", err + } + + // Add padding matching the block size of AES. + keyBlock := generateOpenSSHPadding(privKeyBlock, aes.BlockSize) + + // Encrypt the private key using the derived secret. + + dst := make([]byte, len(keyBlock)) + key, iv := k[:32], k[32:] + block, err := aes.NewCipher(key) + if err != nil { + return nil, "", "", "", err + } + + stream := cipher.NewCTR(block, iv) + stream.XORKeyStream(dst, keyBlock) + + return dst, "aes256-ctr", "bcrypt", string(Marshal(opts)), nil + } +} + +const privateKeyAuthMagic = "openssh-key-v1\x00" + +type openSSHDecryptFunc func(CipherName, KdfName, KdfOpts string, PrivKeyBlock []byte) ([]byte, error) +type openSSHEncryptFunc func(PrivKeyBlock []byte) (ProtectedKeyBlock []byte, cipherName, kdfName, kdfOptions string, err error) + +type openSSHEncryptedPrivateKey struct { + CipherName string + KdfName string + KdfOpts string + NumKeys uint32 + PubKey []byte + PrivKeyBlock []byte +} + +type openSSHPrivateKey struct { + Check1 uint32 + Check2 uint32 + Keytype string + Rest []byte `ssh:"rest"` +} + +type openSSHRSAPrivateKey struct { + N *big.Int + E *big.Int + D *big.Int + Iqmp *big.Int + P *big.Int + Q *big.Int + Comment string + Pad []byte `ssh:"rest"` +} + +type openSSHEd25519PrivateKey struct { + Pub []byte + Priv []byte + Comment string + Pad []byte `ssh:"rest"` +} + +type openSSHECDSAPrivateKey struct { + Curve string + Pub []byte + D *big.Int + Comment string + Pad []byte `ssh:"rest"` +} + +// parseOpenSSHPrivateKey parses an OpenSSH private key, using the decrypt +// function to unwrap the encrypted portion. unencryptedOpenSSHKey can be used +// as the decrypt function to parse an unencrypted private key. See +// https://github.com/openssh/openssh-portable/blob/master/PROTOCOL.key. +func parseOpenSSHPrivateKey(key []byte, decrypt openSSHDecryptFunc) (crypto.PrivateKey, error) { + if len(key) < len(privateKeyAuthMagic) || string(key[:len(privateKeyAuthMagic)]) != privateKeyAuthMagic { + return nil, errors.New("ssh: invalid openssh private key format") + } + remaining := key[len(privateKeyAuthMagic):] + + var w openSSHEncryptedPrivateKey + if err := Unmarshal(remaining, &w); err != nil { + return nil, err + } + if w.NumKeys != 1 { + // We only support single key files, and so does OpenSSH. + // https://github.com/openssh/openssh-portable/blob/4103a3ec7/sshkey.c#L4171 + return nil, errors.New("ssh: multi-key files are not supported") + } + + privKeyBlock, err := decrypt(w.CipherName, w.KdfName, w.KdfOpts, w.PrivKeyBlock) + if err != nil { + if err, ok := err.(*PassphraseMissingError); ok { + pub, errPub := ParsePublicKey(w.PubKey) + if errPub != nil { + return nil, fmt.Errorf("ssh: failed to parse embedded public key: %v", errPub) + } + err.PublicKey = pub + } + return nil, err + } + + var pk1 openSSHPrivateKey + if err := Unmarshal(privKeyBlock, &pk1); err != nil || pk1.Check1 != pk1.Check2 { + if w.CipherName != "none" { + return nil, x509.IncorrectPasswordError + } + return nil, errors.New("ssh: malformed OpenSSH key") + } + + switch pk1.Keytype { + case KeyAlgoRSA: + var key openSSHRSAPrivateKey + if err := Unmarshal(pk1.Rest, &key); err != nil { + return nil, err + } + + if err := checkOpenSSHKeyPadding(key.Pad); err != nil { + return nil, err + } + + pk := &rsa.PrivateKey{ + PublicKey: rsa.PublicKey{ + N: key.N, + E: int(key.E.Int64()), + }, + D: key.D, + Primes: []*big.Int{key.P, key.Q}, + } + + if err := pk.Validate(); err != nil { + return nil, err + } + + pk.Precompute() + + return pk, nil + case KeyAlgoED25519: + var key openSSHEd25519PrivateKey + if err := Unmarshal(pk1.Rest, &key); err != nil { + return nil, err + } + + if len(key.Priv) != ed25519.PrivateKeySize { + return nil, errors.New("ssh: private key unexpected length") + } + + if err := checkOpenSSHKeyPadding(key.Pad); err != nil { + return nil, err + } + + pk := ed25519.PrivateKey(make([]byte, ed25519.PrivateKeySize)) + copy(pk, key.Priv) + return &pk, nil + case KeyAlgoECDSA256, KeyAlgoECDSA384, KeyAlgoECDSA521: + var key openSSHECDSAPrivateKey + if err := Unmarshal(pk1.Rest, &key); err != nil { + return nil, err + } + + if err := checkOpenSSHKeyPadding(key.Pad); err != nil { + return nil, err + } + + var curve elliptic.Curve + switch key.Curve { + case "nistp256": + curve = elliptic.P256() + case "nistp384": + curve = elliptic.P384() + case "nistp521": + curve = elliptic.P521() + default: + return nil, errors.New("ssh: unhandled elliptic curve: " + key.Curve) + } + + X, Y := elliptic.Unmarshal(curve, key.Pub) + if X == nil || Y == nil { + return nil, errors.New("ssh: failed to unmarshal public key") + } + + if key.D.Cmp(curve.Params().N) >= 0 { + return nil, errors.New("ssh: scalar is out of range") + } + + x, y := curve.ScalarBaseMult(key.D.Bytes()) + if x.Cmp(X) != 0 || y.Cmp(Y) != 0 { + return nil, errors.New("ssh: public key does not match private key") + } + + return &ecdsa.PrivateKey{ + PublicKey: ecdsa.PublicKey{ + Curve: curve, + X: X, + Y: Y, + }, + D: key.D, + }, nil + default: + return nil, errors.New("ssh: unhandled key type") + } +} + +func marshalOpenSSHPrivateKey(key crypto.PrivateKey, comment string, encrypt openSSHEncryptFunc) (*pem.Block, error) { + var w openSSHEncryptedPrivateKey + var pk1 openSSHPrivateKey + + // Random check bytes. + var check uint32 + if err := binary.Read(rand.Reader, binary.BigEndian, &check); err != nil { + return nil, err + } + + pk1.Check1 = check + pk1.Check2 = check + w.NumKeys = 1 + + // Use a []byte directly on ed25519 keys. + if k, ok := key.(*ed25519.PrivateKey); ok { + key = *k + } + + switch k := key.(type) { + case *rsa.PrivateKey: + E := new(big.Int).SetInt64(int64(k.PublicKey.E)) + // Marshal public key: + // E and N are in reversed order in the public and private key. + pubKey := struct { + KeyType string + E *big.Int + N *big.Int + }{ + KeyAlgoRSA, + E, k.PublicKey.N, + } + w.PubKey = Marshal(pubKey) + + // Marshal private key. + key := openSSHRSAPrivateKey{ + N: k.PublicKey.N, + E: E, + D: k.D, + Iqmp: k.Precomputed.Qinv, + P: k.Primes[0], + Q: k.Primes[1], + Comment: comment, + } + pk1.Keytype = KeyAlgoRSA + pk1.Rest = Marshal(key) + case ed25519.PrivateKey: + pub := make([]byte, ed25519.PublicKeySize) + priv := make([]byte, ed25519.PrivateKeySize) + copy(pub, k[32:]) + copy(priv, k) + + // Marshal public key. + pubKey := struct { + KeyType string + Pub []byte + }{ + KeyAlgoED25519, pub, + } + w.PubKey = Marshal(pubKey) + + // Marshal private key. + key := openSSHEd25519PrivateKey{ + Pub: pub, + Priv: priv, + Comment: comment, + } + pk1.Keytype = KeyAlgoED25519 + pk1.Rest = Marshal(key) + case *ecdsa.PrivateKey: + var curve, keyType string + switch name := k.Curve.Params().Name; name { + case "P-256": + curve = "nistp256" + keyType = KeyAlgoECDSA256 + case "P-384": + curve = "nistp384" + keyType = KeyAlgoECDSA384 + case "P-521": + curve = "nistp521" + keyType = KeyAlgoECDSA521 + default: + return nil, errors.New("ssh: unhandled elliptic curve " + name) + } + + pub := elliptic.Marshal(k.Curve, k.PublicKey.X, k.PublicKey.Y) + + // Marshal public key. + pubKey := struct { + KeyType string + Curve string + Pub []byte + }{ + keyType, curve, pub, + } + w.PubKey = Marshal(pubKey) + + // Marshal private key. + key := openSSHECDSAPrivateKey{ + Curve: curve, + Pub: pub, + D: k.D, + Comment: comment, + } + pk1.Keytype = keyType + pk1.Rest = Marshal(key) + default: + return nil, fmt.Errorf("ssh: unsupported key type %T", k) + } + + var err error + // Add padding and encrypt the key if necessary. + w.PrivKeyBlock, w.CipherName, w.KdfName, w.KdfOpts, err = encrypt(Marshal(pk1)) + if err != nil { + return nil, err + } + + b := Marshal(w) + block := &pem.Block{ + Type: "OPENSSH PRIVATE KEY", + Bytes: append([]byte(privateKeyAuthMagic), b...), + } + return block, nil +} + +func checkOpenSSHKeyPadding(pad []byte) error { + for i, b := range pad { + if int(b) != i+1 { + return errors.New("ssh: padding not as expected") + } + } + return nil +} + +func generateOpenSSHPadding(block []byte, blockSize int) []byte { + for i, l := 0, len(block); (l+i)%blockSize != 0; i++ { + block = append(block, byte(i+1)) + } + return block +} + +// FingerprintLegacyMD5 returns the user presentation of the key's +// fingerprint as described by RFC 4716 section 4. +func FingerprintLegacyMD5(pubKey PublicKey) string { + md5sum := md5.Sum(pubKey.Marshal()) + hexarray := make([]string, len(md5sum)) + for i, c := range md5sum { + hexarray[i] = hex.EncodeToString([]byte{c}) + } + return strings.Join(hexarray, ":") +} + +// FingerprintSHA256 returns the user presentation of the key's +// fingerprint as unpadded base64 encoded sha256 hash. +// This format was introduced from OpenSSH 6.8. +// https://www.openssh.com/txt/release-6.8 +// https://tools.ietf.org/html/rfc4648#section-3.2 (unpadded base64 encoding) +func FingerprintSHA256(pubKey PublicKey) string { + sha256sum := sha256.Sum256(pubKey.Marshal()) + hash := base64.RawStdEncoding.EncodeToString(sha256sum[:]) + return "SHA256:" + hash +} diff --git a/tests/vendor/golang.org/x/crypto/ssh/mac.go b/tests/vendor/golang.org/x/crypto/ssh/mac.go new file mode 100644 index 000000000..de2639d57 --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/ssh/mac.go @@ -0,0 +1,68 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +// Message authentication support + +import ( + "crypto/hmac" + "crypto/sha1" + "crypto/sha256" + "crypto/sha512" + "hash" +) + +type macMode struct { + keySize int + etm bool + new func(key []byte) hash.Hash +} + +// truncatingMAC wraps around a hash.Hash and truncates the output digest to +// a given size. +type truncatingMAC struct { + length int + hmac hash.Hash +} + +func (t truncatingMAC) Write(data []byte) (int, error) { + return t.hmac.Write(data) +} + +func (t truncatingMAC) Sum(in []byte) []byte { + out := t.hmac.Sum(in) + return out[:len(in)+t.length] +} + +func (t truncatingMAC) Reset() { + t.hmac.Reset() +} + +func (t truncatingMAC) Size() int { + return t.length +} + +func (t truncatingMAC) BlockSize() int { return t.hmac.BlockSize() } + +var macModes = map[string]*macMode{ + HMACSHA512ETM: {64, true, func(key []byte) hash.Hash { + return hmac.New(sha512.New, key) + }}, + HMACSHA256ETM: {32, true, func(key []byte) hash.Hash { + return hmac.New(sha256.New, key) + }}, + HMACSHA512: {64, false, func(key []byte) hash.Hash { + return hmac.New(sha512.New, key) + }}, + HMACSHA256: {32, false, func(key []byte) hash.Hash { + return hmac.New(sha256.New, key) + }}, + HMACSHA1: {20, false, func(key []byte) hash.Hash { + return hmac.New(sha1.New, key) + }}, + InsecureHMACSHA196: {20, false, func(key []byte) hash.Hash { + return truncatingMAC{12, hmac.New(sha1.New, key)} + }}, +} diff --git a/tests/vendor/golang.org/x/crypto/ssh/messages.go b/tests/vendor/golang.org/x/crypto/ssh/messages.go new file mode 100644 index 000000000..251b9d06a --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/ssh/messages.go @@ -0,0 +1,893 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "io" + "math/big" + "reflect" + "strconv" + "strings" +) + +// These are SSH message type numbers. They are scattered around several +// documents but many were taken from [SSH-PARAMETERS]. +const ( + msgIgnore = 2 + msgUnimplemented = 3 + msgDebug = 4 + msgNewKeys = 21 +) + +// SSH messages: +// +// These structures mirror the wire format of the corresponding SSH messages. +// They are marshaled using reflection with the marshal and unmarshal functions +// in this file. The only wrinkle is that a final member of type []byte with a +// ssh tag of "rest" receives the remainder of a packet when unmarshaling. + +// See RFC 4253, section 11.1. +const msgDisconnect = 1 + +// disconnectMsg is the message that signals a disconnect. It is also +// the error type returned from mux.Wait() +type disconnectMsg struct { + Reason uint32 `sshtype:"1"` + Message string + Language string +} + +func (d *disconnectMsg) Error() string { + return fmt.Sprintf("ssh: disconnect, reason %d: %s", d.Reason, d.Message) +} + +// See RFC 4253, section 7.1. +const msgKexInit = 20 + +type kexInitMsg struct { + Cookie [16]byte `sshtype:"20"` + KexAlgos []string + ServerHostKeyAlgos []string + CiphersClientServer []string + CiphersServerClient []string + MACsClientServer []string + MACsServerClient []string + CompressionClientServer []string + CompressionServerClient []string + LanguagesClientServer []string + LanguagesServerClient []string + FirstKexFollows bool + Reserved uint32 +} + +// See RFC 4253, section 8. + +// Diffie-Hellman +const msgKexDHInit = 30 + +type kexDHInitMsg struct { + X *big.Int `sshtype:"30"` +} + +const msgKexECDHInit = 30 + +type kexECDHInitMsg struct { + ClientPubKey []byte `sshtype:"30"` +} + +const msgKexECDHReply = 31 + +type kexECDHReplyMsg struct { + HostKey []byte `sshtype:"31"` + EphemeralPubKey []byte + Signature []byte +} + +const msgKexDHReply = 31 + +type kexDHReplyMsg struct { + HostKey []byte `sshtype:"31"` + Y *big.Int + Signature []byte +} + +// See RFC 4419, section 5. +const msgKexDHGexGroup = 31 + +type kexDHGexGroupMsg struct { + P *big.Int `sshtype:"31"` + G *big.Int +} + +const msgKexDHGexInit = 32 + +type kexDHGexInitMsg struct { + X *big.Int `sshtype:"32"` +} + +const msgKexDHGexReply = 33 + +type kexDHGexReplyMsg struct { + HostKey []byte `sshtype:"33"` + Y *big.Int + Signature []byte +} + +const msgKexDHGexRequest = 34 + +type kexDHGexRequestMsg struct { + MinBits uint32 `sshtype:"34"` + PreferredBits uint32 + MaxBits uint32 +} + +// See RFC 4253, section 10. +const msgServiceRequest = 5 + +type serviceRequestMsg struct { + Service string `sshtype:"5"` +} + +// See RFC 4253, section 10. +const msgServiceAccept = 6 + +type serviceAcceptMsg struct { + Service string `sshtype:"6"` +} + +// See RFC 8308, section 2.3 +const msgExtInfo = 7 + +type extInfoMsg struct { + NumExtensions uint32 `sshtype:"7"` + Payload []byte `ssh:"rest"` +} + +// See RFC 4252, section 5. +const msgUserAuthRequest = 50 + +type userAuthRequestMsg struct { + User string `sshtype:"50"` + Service string + Method string + Payload []byte `ssh:"rest"` +} + +// Used for debug printouts of packets. +type userAuthSuccessMsg struct { +} + +// See RFC 4252, section 5.1 +const msgUserAuthFailure = 51 + +type userAuthFailureMsg struct { + Methods []string `sshtype:"51"` + PartialSuccess bool +} + +// See RFC 4252, section 5.1 +const msgUserAuthSuccess = 52 + +// See RFC 4252, section 5.4 +const msgUserAuthBanner = 53 + +type userAuthBannerMsg struct { + Message string `sshtype:"53"` + // unused, but required to allow message parsing + Language string +} + +// See RFC 4256, section 3.2 +const msgUserAuthInfoRequest = 60 +const msgUserAuthInfoResponse = 61 + +type userAuthInfoRequestMsg struct { + Name string `sshtype:"60"` + Instruction string + Language string + NumPrompts uint32 + Prompts []byte `ssh:"rest"` +} + +// See RFC 4254, section 5.1. +const msgChannelOpen = 90 + +type channelOpenMsg struct { + ChanType string `sshtype:"90"` + PeersID uint32 + PeersWindow uint32 + MaxPacketSize uint32 + TypeSpecificData []byte `ssh:"rest"` +} + +const msgChannelExtendedData = 95 +const msgChannelData = 94 + +// Used for debug print outs of packets. +type channelDataMsg struct { + PeersID uint32 `sshtype:"94"` + Length uint32 + Rest []byte `ssh:"rest"` +} + +// See RFC 4254, section 5.1. +const msgChannelOpenConfirm = 91 + +type channelOpenConfirmMsg struct { + PeersID uint32 `sshtype:"91"` + MyID uint32 + MyWindow uint32 + MaxPacketSize uint32 + TypeSpecificData []byte `ssh:"rest"` +} + +// See RFC 4254, section 5.1. +const msgChannelOpenFailure = 92 + +type channelOpenFailureMsg struct { + PeersID uint32 `sshtype:"92"` + Reason RejectionReason + Message string + Language string +} + +const msgChannelRequest = 98 + +type channelRequestMsg struct { + PeersID uint32 `sshtype:"98"` + Request string + WantReply bool + RequestSpecificData []byte `ssh:"rest"` +} + +// See RFC 4254, section 5.4. +const msgChannelSuccess = 99 + +type channelRequestSuccessMsg struct { + PeersID uint32 `sshtype:"99"` +} + +// See RFC 4254, section 5.4. +const msgChannelFailure = 100 + +type channelRequestFailureMsg struct { + PeersID uint32 `sshtype:"100"` +} + +// See RFC 4254, section 5.3 +const msgChannelClose = 97 + +type channelCloseMsg struct { + PeersID uint32 `sshtype:"97"` +} + +// See RFC 4254, section 5.3 +const msgChannelEOF = 96 + +type channelEOFMsg struct { + PeersID uint32 `sshtype:"96"` +} + +// See RFC 4254, section 4 +const msgGlobalRequest = 80 + +type globalRequestMsg struct { + Type string `sshtype:"80"` + WantReply bool + Data []byte `ssh:"rest"` +} + +// See RFC 4254, section 4 +const msgRequestSuccess = 81 + +type globalRequestSuccessMsg struct { + Data []byte `ssh:"rest" sshtype:"81"` +} + +// See RFC 4254, section 4 +const msgRequestFailure = 82 + +type globalRequestFailureMsg struct { + Data []byte `ssh:"rest" sshtype:"82"` +} + +// See RFC 4254, section 5.2 +const msgChannelWindowAdjust = 93 + +type windowAdjustMsg struct { + PeersID uint32 `sshtype:"93"` + AdditionalBytes uint32 +} + +// See RFC 4252, section 7 +const msgUserAuthPubKeyOk = 60 + +type userAuthPubKeyOkMsg struct { + Algo string `sshtype:"60"` + PubKey []byte +} + +// See RFC 4462, section 3 +const msgUserAuthGSSAPIResponse = 60 + +type userAuthGSSAPIResponse struct { + SupportMech []byte `sshtype:"60"` +} + +const msgUserAuthGSSAPIToken = 61 + +type userAuthGSSAPIToken struct { + Token []byte `sshtype:"61"` +} + +const msgUserAuthGSSAPIMIC = 66 + +type userAuthGSSAPIMIC struct { + MIC []byte `sshtype:"66"` +} + +// See RFC 4462, section 3.9 +const msgUserAuthGSSAPIErrTok = 64 + +type userAuthGSSAPIErrTok struct { + ErrorToken []byte `sshtype:"64"` +} + +// See RFC 4462, section 3.8 +const msgUserAuthGSSAPIError = 65 + +type userAuthGSSAPIError struct { + MajorStatus uint32 `sshtype:"65"` + MinorStatus uint32 + Message string + LanguageTag string +} + +// Transport layer OpenSSH extension. See [PROTOCOL], section 1.9 +const msgPing = 192 + +type pingMsg struct { + Data string `sshtype:"192"` +} + +// Transport layer OpenSSH extension. See [PROTOCOL], section 1.9 +const msgPong = 193 + +type pongMsg struct { + Data string `sshtype:"193"` +} + +// typeTags returns the possible type bytes for the given reflect.Type, which +// should be a struct. The possible values are separated by a '|' character. +func typeTags(structType reflect.Type) (tags []byte) { + tagStr := structType.Field(0).Tag.Get("sshtype") + + for _, tag := range strings.Split(tagStr, "|") { + i, err := strconv.Atoi(tag) + if err == nil { + tags = append(tags, byte(i)) + } + } + + return tags +} + +func fieldError(t reflect.Type, field int, problem string) error { + if problem != "" { + problem = ": " + problem + } + return fmt.Errorf("ssh: unmarshal error for field %s of type %s%s", t.Field(field).Name, t.Name(), problem) +} + +var errShortRead = errors.New("ssh: short read") + +// Unmarshal parses data in SSH wire format into a structure. The out +// argument should be a pointer to struct. If the first member of the +// struct has the "sshtype" tag set to a '|'-separated set of numbers +// in decimal, the packet must start with one of those numbers. In +// case of error, Unmarshal returns a ParseError or +// UnexpectedMessageError. +func Unmarshal(data []byte, out interface{}) error { + v := reflect.ValueOf(out).Elem() + structType := v.Type() + expectedTypes := typeTags(structType) + + var expectedType byte + if len(expectedTypes) > 0 { + expectedType = expectedTypes[0] + } + + if len(data) == 0 { + return parseError(expectedType) + } + + if len(expectedTypes) > 0 { + goodType := false + for _, e := range expectedTypes { + if e > 0 && data[0] == e { + goodType = true + break + } + } + if !goodType { + return fmt.Errorf("ssh: unexpected message type %d (expected one of %v)", data[0], expectedTypes) + } + data = data[1:] + } + + var ok bool + for i := 0; i < v.NumField(); i++ { + field := v.Field(i) + t := field.Type() + switch t.Kind() { + case reflect.Bool: + if len(data) < 1 { + return errShortRead + } + field.SetBool(data[0] != 0) + data = data[1:] + case reflect.Array: + if t.Elem().Kind() != reflect.Uint8 { + return fieldError(structType, i, "array of unsupported type") + } + if len(data) < t.Len() { + return errShortRead + } + for j, n := 0, t.Len(); j < n; j++ { + field.Index(j).Set(reflect.ValueOf(data[j])) + } + data = data[t.Len():] + case reflect.Uint64: + var u64 uint64 + if u64, data, ok = parseUint64(data); !ok { + return errShortRead + } + field.SetUint(u64) + case reflect.Uint32: + var u32 uint32 + if u32, data, ok = parseUint32(data); !ok { + return errShortRead + } + field.SetUint(uint64(u32)) + case reflect.Uint8: + if len(data) < 1 { + return errShortRead + } + field.SetUint(uint64(data[0])) + data = data[1:] + case reflect.String: + var s []byte + if s, data, ok = parseString(data); !ok { + return fieldError(structType, i, "") + } + field.SetString(string(s)) + case reflect.Slice: + switch t.Elem().Kind() { + case reflect.Uint8: + if structType.Field(i).Tag.Get("ssh") == "rest" { + field.Set(reflect.ValueOf(data)) + data = nil + } else { + var s []byte + if s, data, ok = parseString(data); !ok { + return errShortRead + } + field.Set(reflect.ValueOf(s)) + } + case reflect.String: + var nl []string + if nl, data, ok = parseNameList(data); !ok { + return errShortRead + } + field.Set(reflect.ValueOf(nl)) + default: + return fieldError(structType, i, "slice of unsupported type") + } + case reflect.Ptr: + if t == bigIntType { + var n *big.Int + if n, data, ok = parseInt(data); !ok { + return errShortRead + } + field.Set(reflect.ValueOf(n)) + } else { + return fieldError(structType, i, "pointer to unsupported type") + } + default: + return fieldError(structType, i, fmt.Sprintf("unsupported type: %v", t)) + } + } + + if len(data) != 0 { + return parseError(expectedType) + } + + return nil +} + +// Marshal serializes the message in msg to SSH wire format. The msg +// argument should be a struct or pointer to struct. If the first +// member has the "sshtype" tag set to a number in decimal, that +// number is prepended to the result. If the last of member has the +// "ssh" tag set to "rest", its contents are appended to the output. +func Marshal(msg interface{}) []byte { + out := make([]byte, 0, 64) + return marshalStruct(out, msg) +} + +func marshalStruct(out []byte, msg interface{}) []byte { + v := reflect.Indirect(reflect.ValueOf(msg)) + msgTypes := typeTags(v.Type()) + if len(msgTypes) > 0 { + out = append(out, msgTypes[0]) + } + + for i, n := 0, v.NumField(); i < n; i++ { + field := v.Field(i) + switch t := field.Type(); t.Kind() { + case reflect.Bool: + var v uint8 + if field.Bool() { + v = 1 + } + out = append(out, v) + case reflect.Array: + if t.Elem().Kind() != reflect.Uint8 { + panic(fmt.Sprintf("array of non-uint8 in field %d: %T", i, field.Interface())) + } + for j, l := 0, t.Len(); j < l; j++ { + out = append(out, uint8(field.Index(j).Uint())) + } + case reflect.Uint32: + out = appendU32(out, uint32(field.Uint())) + case reflect.Uint64: + out = appendU64(out, uint64(field.Uint())) + case reflect.Uint8: + out = append(out, uint8(field.Uint())) + case reflect.String: + s := field.String() + out = appendInt(out, len(s)) + out = append(out, s...) + case reflect.Slice: + switch t.Elem().Kind() { + case reflect.Uint8: + if v.Type().Field(i).Tag.Get("ssh") != "rest" { + out = appendInt(out, field.Len()) + } + out = append(out, field.Bytes()...) + case reflect.String: + offset := len(out) + out = appendU32(out, 0) + if n := field.Len(); n > 0 { + for j := 0; j < n; j++ { + f := field.Index(j) + if j != 0 { + out = append(out, ',') + } + out = append(out, f.String()...) + } + // overwrite length value + binary.BigEndian.PutUint32(out[offset:], uint32(len(out)-offset-4)) + } + default: + panic(fmt.Sprintf("slice of unknown type in field %d: %T", i, field.Interface())) + } + case reflect.Ptr: + if t == bigIntType { + var n *big.Int + nValue := reflect.ValueOf(&n) + nValue.Elem().Set(field) + needed := intLength(n) + oldLength := len(out) + + if cap(out)-len(out) < needed { + newOut := make([]byte, len(out), 2*(len(out)+needed)) + copy(newOut, out) + out = newOut + } + out = out[:oldLength+needed] + marshalInt(out[oldLength:], n) + } else { + panic(fmt.Sprintf("pointer to unknown type in field %d: %T", i, field.Interface())) + } + } + } + + return out +} + +var bigOne = big.NewInt(1) + +func parseString(in []byte) (out, rest []byte, ok bool) { + if len(in) < 4 { + return + } + length := binary.BigEndian.Uint32(in) + in = in[4:] + if uint32(len(in)) < length { + return + } + out = in[:length] + rest = in[length:] + ok = true + return +} + +var ( + comma = []byte{','} + emptyNameList = []string{} +) + +func parseNameList(in []byte) (out []string, rest []byte, ok bool) { + contents, rest, ok := parseString(in) + if !ok { + return + } + if len(contents) == 0 { + out = emptyNameList + return + } + parts := bytes.Split(contents, comma) + out = make([]string, len(parts)) + for i, part := range parts { + out[i] = string(part) + } + return +} + +func parseInt(in []byte) (out *big.Int, rest []byte, ok bool) { + contents, rest, ok := parseString(in) + if !ok { + return + } + out = new(big.Int) + + if len(contents) > 0 && contents[0]&0x80 == 0x80 { + // This is a negative number + notBytes := make([]byte, len(contents)) + for i := range notBytes { + notBytes[i] = ^contents[i] + } + out.SetBytes(notBytes) + out.Add(out, bigOne) + out.Neg(out) + } else { + // Positive number + out.SetBytes(contents) + } + ok = true + return +} + +func parseUint32(in []byte) (uint32, []byte, bool) { + if len(in) < 4 { + return 0, nil, false + } + return binary.BigEndian.Uint32(in), in[4:], true +} + +func parseUint64(in []byte) (uint64, []byte, bool) { + if len(in) < 8 { + return 0, nil, false + } + return binary.BigEndian.Uint64(in), in[8:], true +} + +func intLength(n *big.Int) int { + length := 4 /* length bytes */ + if n.Sign() < 0 { + nMinus1 := new(big.Int).Neg(n) + nMinus1.Sub(nMinus1, bigOne) + bitLen := nMinus1.BitLen() + if bitLen%8 == 0 { + // The number will need 0xff padding + length++ + } + length += (bitLen + 7) / 8 + } else if n.Sign() == 0 { + // A zero is the zero length string + } else { + bitLen := n.BitLen() + if bitLen%8 == 0 { + // The number will need 0x00 padding + length++ + } + length += (bitLen + 7) / 8 + } + + return length +} + +func marshalUint32(to []byte, n uint32) []byte { + binary.BigEndian.PutUint32(to, n) + return to[4:] +} + +func marshalUint64(to []byte, n uint64) []byte { + binary.BigEndian.PutUint64(to, n) + return to[8:] +} + +func marshalInt(to []byte, n *big.Int) []byte { + lengthBytes := to + to = to[4:] + length := 0 + + if n.Sign() < 0 { + // A negative number has to be converted to two's-complement + // form. So we'll subtract 1 and invert. If the + // most-significant-bit isn't set then we'll need to pad the + // beginning with 0xff in order to keep the number negative. + nMinus1 := new(big.Int).Neg(n) + nMinus1.Sub(nMinus1, bigOne) + bytes := nMinus1.Bytes() + for i := range bytes { + bytes[i] ^= 0xff + } + if len(bytes) == 0 || bytes[0]&0x80 == 0 { + to[0] = 0xff + to = to[1:] + length++ + } + nBytes := copy(to, bytes) + to = to[nBytes:] + length += nBytes + } else if n.Sign() == 0 { + // A zero is the zero length string + } else { + bytes := n.Bytes() + if len(bytes) > 0 && bytes[0]&0x80 != 0 { + // We'll have to pad this with a 0x00 in order to + // stop it looking like a negative number. + to[0] = 0 + to = to[1:] + length++ + } + nBytes := copy(to, bytes) + to = to[nBytes:] + length += nBytes + } + + lengthBytes[0] = byte(length >> 24) + lengthBytes[1] = byte(length >> 16) + lengthBytes[2] = byte(length >> 8) + lengthBytes[3] = byte(length) + return to +} + +func writeInt(w io.Writer, n *big.Int) { + length := intLength(n) + buf := make([]byte, length) + marshalInt(buf, n) + w.Write(buf) +} + +func writeString(w io.Writer, s []byte) { + var lengthBytes [4]byte + lengthBytes[0] = byte(len(s) >> 24) + lengthBytes[1] = byte(len(s) >> 16) + lengthBytes[2] = byte(len(s) >> 8) + lengthBytes[3] = byte(len(s)) + w.Write(lengthBytes[:]) + w.Write(s) +} + +func stringLength(n int) int { + return 4 + n +} + +func marshalString(to []byte, s []byte) []byte { + to[0] = byte(len(s) >> 24) + to[1] = byte(len(s) >> 16) + to[2] = byte(len(s) >> 8) + to[3] = byte(len(s)) + to = to[4:] + copy(to, s) + return to[len(s):] +} + +var bigIntType = reflect.TypeOf((*big.Int)(nil)) + +// Decode a packet into its corresponding message. +func decode(packet []byte) (interface{}, error) { + var msg interface{} + switch packet[0] { + case msgDisconnect: + msg = new(disconnectMsg) + case msgServiceRequest: + msg = new(serviceRequestMsg) + case msgServiceAccept: + msg = new(serviceAcceptMsg) + case msgExtInfo: + msg = new(extInfoMsg) + case msgKexInit: + msg = new(kexInitMsg) + case msgKexDHInit: + msg = new(kexDHInitMsg) + case msgKexDHReply: + msg = new(kexDHReplyMsg) + case msgUserAuthRequest: + msg = new(userAuthRequestMsg) + case msgUserAuthSuccess: + return new(userAuthSuccessMsg), nil + case msgUserAuthFailure: + msg = new(userAuthFailureMsg) + case msgUserAuthBanner: + msg = new(userAuthBannerMsg) + case msgUserAuthPubKeyOk: + msg = new(userAuthPubKeyOkMsg) + case msgGlobalRequest: + msg = new(globalRequestMsg) + case msgRequestSuccess: + msg = new(globalRequestSuccessMsg) + case msgRequestFailure: + msg = new(globalRequestFailureMsg) + case msgChannelOpen: + msg = new(channelOpenMsg) + case msgChannelData: + msg = new(channelDataMsg) + case msgChannelOpenConfirm: + msg = new(channelOpenConfirmMsg) + case msgChannelOpenFailure: + msg = new(channelOpenFailureMsg) + case msgChannelWindowAdjust: + msg = new(windowAdjustMsg) + case msgChannelEOF: + msg = new(channelEOFMsg) + case msgChannelClose: + msg = new(channelCloseMsg) + case msgChannelRequest: + msg = new(channelRequestMsg) + case msgChannelSuccess: + msg = new(channelRequestSuccessMsg) + case msgChannelFailure: + msg = new(channelRequestFailureMsg) + case msgUserAuthGSSAPIToken: + msg = new(userAuthGSSAPIToken) + case msgUserAuthGSSAPIMIC: + msg = new(userAuthGSSAPIMIC) + case msgUserAuthGSSAPIErrTok: + msg = new(userAuthGSSAPIErrTok) + case msgUserAuthGSSAPIError: + msg = new(userAuthGSSAPIError) + default: + return nil, unexpectedMessageError(0, packet[0]) + } + if err := Unmarshal(packet, msg); err != nil { + return nil, err + } + return msg, nil +} + +var packetTypeNames = map[byte]string{ + msgDisconnect: "disconnectMsg", + msgServiceRequest: "serviceRequestMsg", + msgServiceAccept: "serviceAcceptMsg", + msgExtInfo: "extInfoMsg", + msgKexInit: "kexInitMsg", + msgKexDHInit: "kexDHInitMsg", + msgKexDHReply: "kexDHReplyMsg", + msgUserAuthRequest: "userAuthRequestMsg", + msgUserAuthSuccess: "userAuthSuccessMsg", + msgUserAuthFailure: "userAuthFailureMsg", + msgUserAuthPubKeyOk: "userAuthPubKeyOkMsg", + msgGlobalRequest: "globalRequestMsg", + msgRequestSuccess: "globalRequestSuccessMsg", + msgRequestFailure: "globalRequestFailureMsg", + msgChannelOpen: "channelOpenMsg", + msgChannelData: "channelDataMsg", + msgChannelOpenConfirm: "channelOpenConfirmMsg", + msgChannelOpenFailure: "channelOpenFailureMsg", + msgChannelWindowAdjust: "windowAdjustMsg", + msgChannelEOF: "channelEOFMsg", + msgChannelClose: "channelCloseMsg", + msgChannelRequest: "channelRequestMsg", + msgChannelSuccess: "channelRequestSuccessMsg", + msgChannelFailure: "channelRequestFailureMsg", +} diff --git a/tests/vendor/golang.org/x/crypto/ssh/mlkem.go b/tests/vendor/golang.org/x/crypto/ssh/mlkem.go new file mode 100644 index 000000000..657e1079d --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/ssh/mlkem.go @@ -0,0 +1,183 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build go1.24 + +package ssh + +import ( + "crypto" + "crypto/mlkem" + "crypto/sha256" + "errors" + "fmt" + "io" + "runtime" + "slices" + + "golang.org/x/crypto/curve25519" +) + +func init() { + // After Go 1.24rc1 mlkem swapped the order of return values of Encapsulate. + // See #70950. + if runtime.Version() == "go1.24rc1" { + return + } + supportedKexAlgos = slices.Insert(supportedKexAlgos, 0, KeyExchangeMLKEM768X25519) + defaultKexAlgos = slices.Insert(defaultKexAlgos, 0, KeyExchangeMLKEM768X25519) + kexAlgoMap[KeyExchangeMLKEM768X25519] = &mlkem768WithCurve25519sha256{} +} + +// mlkem768WithCurve25519sha256 implements the hybrid ML-KEM768 with +// curve25519-sha256 key exchange method, as described by +// draft-kampanakis-curdle-ssh-pq-ke-05 section 2.3.3. +type mlkem768WithCurve25519sha256 struct{} + +func (kex *mlkem768WithCurve25519sha256) Client(c packetConn, rand io.Reader, magics *handshakeMagics) (*kexResult, error) { + var c25519kp curve25519KeyPair + if err := c25519kp.generate(rand); err != nil { + return nil, err + } + + seed := make([]byte, mlkem.SeedSize) + if _, err := io.ReadFull(rand, seed); err != nil { + return nil, err + } + + mlkemDk, err := mlkem.NewDecapsulationKey768(seed) + if err != nil { + return nil, err + } + + hybridKey := append(mlkemDk.EncapsulationKey().Bytes(), c25519kp.pub[:]...) + if err := c.writePacket(Marshal(&kexECDHInitMsg{hybridKey})); err != nil { + return nil, err + } + + packet, err := c.readPacket() + if err != nil { + return nil, err + } + + var reply kexECDHReplyMsg + if err = Unmarshal(packet, &reply); err != nil { + return nil, err + } + + if len(reply.EphemeralPubKey) != mlkem.CiphertextSize768+32 { + return nil, errors.New("ssh: peer's mlkem768x25519 public value has wrong length") + } + + // Perform KEM decapsulate operation to obtain shared key from ML-KEM. + mlkem768Secret, err := mlkemDk.Decapsulate(reply.EphemeralPubKey[:mlkem.CiphertextSize768]) + if err != nil { + return nil, err + } + + // Complete Curve25519 ECDH to obtain its shared key. + c25519Secret, err := curve25519.X25519(c25519kp.priv[:], reply.EphemeralPubKey[mlkem.CiphertextSize768:]) + if err != nil { + return nil, fmt.Errorf("ssh: peer's mlkem768x25519 public value is not valid: %w", err) + } + // Compute actual shared key. + h := sha256.New() + h.Write(mlkem768Secret) + h.Write(c25519Secret) + secret := h.Sum(nil) + + h.Reset() + magics.write(h) + writeString(h, reply.HostKey) + writeString(h, hybridKey) + writeString(h, reply.EphemeralPubKey) + + K := make([]byte, stringLength(len(secret))) + marshalString(K, secret) + h.Write(K) + + return &kexResult{ + H: h.Sum(nil), + K: K, + HostKey: reply.HostKey, + Signature: reply.Signature, + Hash: crypto.SHA256, + }, nil +} + +func (kex *mlkem768WithCurve25519sha256) Server(c packetConn, rand io.Reader, magics *handshakeMagics, priv AlgorithmSigner, algo string) (*kexResult, error) { + packet, err := c.readPacket() + if err != nil { + return nil, err + } + + var kexInit kexECDHInitMsg + if err = Unmarshal(packet, &kexInit); err != nil { + return nil, err + } + + if len(kexInit.ClientPubKey) != mlkem.EncapsulationKeySize768+32 { + return nil, errors.New("ssh: peer's ML-KEM768/curve25519 public value has wrong length") + } + + encapsulationKey, err := mlkem.NewEncapsulationKey768(kexInit.ClientPubKey[:mlkem.EncapsulationKeySize768]) + if err != nil { + return nil, fmt.Errorf("ssh: peer's ML-KEM768 encapsulation key is not valid: %w", err) + } + // Perform KEM encapsulate operation to obtain ciphertext and shared key. + mlkem768Secret, mlkem768Ciphertext := encapsulationKey.Encapsulate() + + // Perform server side of Curve25519 ECDH to obtain server public value and + // shared key. + var c25519kp curve25519KeyPair + if err := c25519kp.generate(rand); err != nil { + return nil, err + } + c25519Secret, err := curve25519.X25519(c25519kp.priv[:], kexInit.ClientPubKey[mlkem.EncapsulationKeySize768:]) + if err != nil { + return nil, fmt.Errorf("ssh: peer's ML-KEM768/curve25519 public value is not valid: %w", err) + } + hybridKey := append(mlkem768Ciphertext, c25519kp.pub[:]...) + + // Compute actual shared key. + h := sha256.New() + h.Write(mlkem768Secret) + h.Write(c25519Secret) + secret := h.Sum(nil) + + hostKeyBytes := priv.PublicKey().Marshal() + + h.Reset() + magics.write(h) + writeString(h, hostKeyBytes) + writeString(h, kexInit.ClientPubKey) + writeString(h, hybridKey) + + K := make([]byte, stringLength(len(secret))) + marshalString(K, secret) + h.Write(K) + + H := h.Sum(nil) + + sig, err := signAndMarshal(priv, rand, H, algo) + if err != nil { + return nil, err + } + + reply := kexECDHReplyMsg{ + EphemeralPubKey: hybridKey, + HostKey: hostKeyBytes, + Signature: sig, + } + if err := c.writePacket(Marshal(&reply)); err != nil { + return nil, err + } + return &kexResult{ + H: H, + K: K, + HostKey: hostKeyBytes, + Signature: sig, + Hash: crypto.SHA256, + }, nil +} diff --git a/tests/vendor/golang.org/x/crypto/ssh/mux.go b/tests/vendor/golang.org/x/crypto/ssh/mux.go new file mode 100644 index 000000000..d2d24c635 --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/ssh/mux.go @@ -0,0 +1,357 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "encoding/binary" + "fmt" + "io" + "log" + "sync" + "sync/atomic" +) + +// debugMux, if set, causes messages in the connection protocol to be +// logged. +const debugMux = false + +// chanList is a thread safe channel list. +type chanList struct { + // protects concurrent access to chans + sync.Mutex + + // chans are indexed by the local id of the channel, which the + // other side should send in the PeersId field. + chans []*channel + + // This is a debugging aid: it offsets all IDs by this + // amount. This helps distinguish otherwise identical + // server/client muxes + offset uint32 +} + +// Assigns a channel ID to the given channel. +func (c *chanList) add(ch *channel) uint32 { + c.Lock() + defer c.Unlock() + for i := range c.chans { + if c.chans[i] == nil { + c.chans[i] = ch + return uint32(i) + c.offset + } + } + c.chans = append(c.chans, ch) + return uint32(len(c.chans)-1) + c.offset +} + +// getChan returns the channel for the given ID. +func (c *chanList) getChan(id uint32) *channel { + id -= c.offset + + c.Lock() + defer c.Unlock() + if id < uint32(len(c.chans)) { + return c.chans[id] + } + return nil +} + +func (c *chanList) remove(id uint32) { + id -= c.offset + c.Lock() + if id < uint32(len(c.chans)) { + c.chans[id] = nil + } + c.Unlock() +} + +// dropAll forgets all channels it knows, returning them in a slice. +func (c *chanList) dropAll() []*channel { + c.Lock() + defer c.Unlock() + var r []*channel + + for _, ch := range c.chans { + if ch == nil { + continue + } + r = append(r, ch) + } + c.chans = nil + return r +} + +// mux represents the state for the SSH connection protocol, which +// multiplexes many channels onto a single packet transport. +type mux struct { + conn packetConn + chanList chanList + + incomingChannels chan NewChannel + + globalSentMu sync.Mutex + globalResponses chan interface{} + incomingRequests chan *Request + + errCond *sync.Cond + err error +} + +// When debugging, each new chanList instantiation has a different +// offset. +var globalOff uint32 + +func (m *mux) Wait() error { + m.errCond.L.Lock() + defer m.errCond.L.Unlock() + for m.err == nil { + m.errCond.Wait() + } + return m.err +} + +// newMux returns a mux that runs over the given connection. +func newMux(p packetConn) *mux { + m := &mux{ + conn: p, + incomingChannels: make(chan NewChannel, chanSize), + globalResponses: make(chan interface{}, 1), + incomingRequests: make(chan *Request, chanSize), + errCond: newCond(), + } + if debugMux { + m.chanList.offset = atomic.AddUint32(&globalOff, 1) + } + + go m.loop() + return m +} + +func (m *mux) sendMessage(msg interface{}) error { + p := Marshal(msg) + if debugMux { + log.Printf("send global(%d): %#v", m.chanList.offset, msg) + } + return m.conn.writePacket(p) +} + +func (m *mux) SendRequest(name string, wantReply bool, payload []byte) (bool, []byte, error) { + if wantReply { + m.globalSentMu.Lock() + defer m.globalSentMu.Unlock() + } + + if err := m.sendMessage(globalRequestMsg{ + Type: name, + WantReply: wantReply, + Data: payload, + }); err != nil { + return false, nil, err + } + + if !wantReply { + return false, nil, nil + } + + msg, ok := <-m.globalResponses + if !ok { + return false, nil, io.EOF + } + switch msg := msg.(type) { + case *globalRequestFailureMsg: + return false, msg.Data, nil + case *globalRequestSuccessMsg: + return true, msg.Data, nil + default: + return false, nil, fmt.Errorf("ssh: unexpected response to request: %#v", msg) + } +} + +// ackRequest must be called after processing a global request that +// has WantReply set. +func (m *mux) ackRequest(ok bool, data []byte) error { + if ok { + return m.sendMessage(globalRequestSuccessMsg{Data: data}) + } + return m.sendMessage(globalRequestFailureMsg{Data: data}) +} + +func (m *mux) Close() error { + return m.conn.Close() +} + +// loop runs the connection machine. It will process packets until an +// error is encountered. To synchronize on loop exit, use mux.Wait. +func (m *mux) loop() { + var err error + for err == nil { + err = m.onePacket() + } + + for _, ch := range m.chanList.dropAll() { + ch.close() + } + + close(m.incomingChannels) + close(m.incomingRequests) + close(m.globalResponses) + + m.conn.Close() + + m.errCond.L.Lock() + m.err = err + m.errCond.Broadcast() + m.errCond.L.Unlock() + + if debugMux { + log.Println("loop exit", err) + } +} + +// onePacket reads and processes one packet. +func (m *mux) onePacket() error { + packet, err := m.conn.readPacket() + if err != nil { + return err + } + + if debugMux { + if packet[0] == msgChannelData || packet[0] == msgChannelExtendedData { + log.Printf("decoding(%d): data packet - %d bytes", m.chanList.offset, len(packet)) + } else { + p, _ := decode(packet) + log.Printf("decoding(%d): %d %#v - %d bytes", m.chanList.offset, packet[0], p, len(packet)) + } + } + + switch packet[0] { + case msgChannelOpen: + return m.handleChannelOpen(packet) + case msgGlobalRequest, msgRequestSuccess, msgRequestFailure: + return m.handleGlobalPacket(packet) + case msgPing: + var msg pingMsg + if err := Unmarshal(packet, &msg); err != nil { + return fmt.Errorf("failed to unmarshal ping@openssh.com message: %w", err) + } + return m.sendMessage(pongMsg(msg)) + } + + // assume a channel packet. + if len(packet) < 5 { + return parseError(packet[0]) + } + id := binary.BigEndian.Uint32(packet[1:]) + ch := m.chanList.getChan(id) + if ch == nil { + return m.handleUnknownChannelPacket(id, packet) + } + + return ch.handlePacket(packet) +} + +func (m *mux) handleGlobalPacket(packet []byte) error { + msg, err := decode(packet) + if err != nil { + return err + } + + switch msg := msg.(type) { + case *globalRequestMsg: + m.incomingRequests <- &Request{ + Type: msg.Type, + WantReply: msg.WantReply, + Payload: msg.Data, + mux: m, + } + case *globalRequestSuccessMsg, *globalRequestFailureMsg: + m.globalResponses <- msg + default: + panic(fmt.Sprintf("not a global message %#v", msg)) + } + + return nil +} + +// handleChannelOpen schedules a channel to be Accept()ed. +func (m *mux) handleChannelOpen(packet []byte) error { + var msg channelOpenMsg + if err := Unmarshal(packet, &msg); err != nil { + return err + } + + if msg.MaxPacketSize < minPacketLength || msg.MaxPacketSize > 1<<31 { + failMsg := channelOpenFailureMsg{ + PeersID: msg.PeersID, + Reason: ConnectionFailed, + Message: "invalid request", + Language: "en_US.UTF-8", + } + return m.sendMessage(failMsg) + } + + c := m.newChannel(msg.ChanType, channelInbound, msg.TypeSpecificData) + c.remoteId = msg.PeersID + c.maxRemotePayload = msg.MaxPacketSize + c.remoteWin.add(msg.PeersWindow) + m.incomingChannels <- c + return nil +} + +func (m *mux) OpenChannel(chanType string, extra []byte) (Channel, <-chan *Request, error) { + ch, err := m.openChannel(chanType, extra) + if err != nil { + return nil, nil, err + } + + return ch, ch.incomingRequests, nil +} + +func (m *mux) openChannel(chanType string, extra []byte) (*channel, error) { + ch := m.newChannel(chanType, channelOutbound, extra) + + ch.maxIncomingPayload = channelMaxPacket + + open := channelOpenMsg{ + ChanType: chanType, + PeersWindow: ch.myWindow, + MaxPacketSize: ch.maxIncomingPayload, + TypeSpecificData: extra, + PeersID: ch.localId, + } + if err := m.sendMessage(open); err != nil { + return nil, err + } + + switch msg := (<-ch.msg).(type) { + case *channelOpenConfirmMsg: + return ch, nil + case *channelOpenFailureMsg: + return nil, &OpenChannelError{msg.Reason, msg.Message} + default: + return nil, fmt.Errorf("ssh: unexpected packet in response to channel open: %T", msg) + } +} + +func (m *mux) handleUnknownChannelPacket(id uint32, packet []byte) error { + msg, err := decode(packet) + if err != nil { + return err + } + + switch msg := msg.(type) { + // RFC 4254 section 5.4 says unrecognized channel requests should + // receive a failure response. + case *channelRequestMsg: + if msg.WantReply { + return m.sendMessage(channelRequestFailureMsg{ + PeersID: msg.PeersID, + }) + } + return nil + default: + return fmt.Errorf("ssh: invalid channel %d", id) + } +} diff --git a/tests/vendor/golang.org/x/crypto/ssh/server.go b/tests/vendor/golang.org/x/crypto/ssh/server.go new file mode 100644 index 000000000..98679ba5b --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/ssh/server.go @@ -0,0 +1,927 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "bytes" + "errors" + "fmt" + "io" + "net" + "strings" +) + +// The Permissions type holds fine-grained permissions that are +// specific to a user or a specific authentication method for a user. +// The Permissions value for a successful authentication attempt is +// available in ServerConn, so it can be used to pass information from +// the user-authentication phase to the application layer. +type Permissions struct { + // CriticalOptions indicate restrictions to the default + // permissions, and are typically used in conjunction with + // user certificates. The standard for SSH certificates + // defines "force-command" (only allow the given command to + // execute) and "source-address" (only allow connections from + // the given address). The SSH package currently only enforces + // the "source-address" critical option. It is up to server + // implementations to enforce other critical options, such as + // "force-command", by checking them after the SSH handshake + // is successful. In general, SSH servers should reject + // connections that specify critical options that are unknown + // or not supported. + CriticalOptions map[string]string + + // Extensions are extra functionality that the server may + // offer on authenticated connections. Lack of support for an + // extension does not preclude authenticating a user. Common + // extensions are "permit-agent-forwarding", + // "permit-X11-forwarding". The Go SSH library currently does + // not act on any extension, and it is up to server + // implementations to honor them. Extensions can be used to + // pass data from the authentication callbacks to the server + // application layer. + Extensions map[string]string +} + +type GSSAPIWithMICConfig struct { + // AllowLogin, must be set, is called when gssapi-with-mic + // authentication is selected (RFC 4462 section 3). The srcName is from the + // results of the GSS-API authentication. The format is username@DOMAIN. + // GSSAPI just guarantees to the server who the user is, but not if they can log in, and with what permissions. + // This callback is called after the user identity is established with GSSAPI to decide if the user can login with + // which permissions. If the user is allowed to login, it should return a nil error. + AllowLogin func(conn ConnMetadata, srcName string) (*Permissions, error) + + // Server must be set. It's the implementation + // of the GSSAPIServer interface. See GSSAPIServer interface for details. + Server GSSAPIServer +} + +// SendAuthBanner implements [ServerPreAuthConn]. +func (s *connection) SendAuthBanner(msg string) error { + return s.transport.writePacket(Marshal(&userAuthBannerMsg{ + Message: msg, + })) +} + +func (*connection) unexportedMethodForFutureProofing() {} + +// ServerPreAuthConn is the interface available on an incoming server +// connection before authentication has completed. +type ServerPreAuthConn interface { + unexportedMethodForFutureProofing() // permits growing ServerPreAuthConn safely later, ala testing.TB + + ConnMetadata + + // SendAuthBanner sends a banner message to the client. + // It returns an error once the authentication phase has ended. + SendAuthBanner(string) error +} + +// ServerConfig holds server specific configuration data. +type ServerConfig struct { + // Config contains configuration shared between client and server. + Config + + // PublicKeyAuthAlgorithms specifies the supported client public key + // authentication algorithms. Note that this should not include certificate + // types since those use the underlying algorithm. This list is sent to the + // client if it supports the server-sig-algs extension. Order is irrelevant. + // If unspecified then a default set of algorithms is used. + PublicKeyAuthAlgorithms []string + + hostKeys []Signer + + // NoClientAuth is true if clients are allowed to connect without + // authenticating. + // To determine NoClientAuth at runtime, set NoClientAuth to true + // and the optional NoClientAuthCallback to a non-nil value. + NoClientAuth bool + + // NoClientAuthCallback, if non-nil, is called when a user + // attempts to authenticate with auth method "none". + // NoClientAuth must also be set to true for this be used, or + // this func is unused. + NoClientAuthCallback func(ConnMetadata) (*Permissions, error) + + // MaxAuthTries specifies the maximum number of authentication attempts + // permitted per connection. If set to a negative number, the number of + // attempts are unlimited. If set to zero, the number of attempts are limited + // to 6. + MaxAuthTries int + + // PasswordCallback, if non-nil, is called when a user + // attempts to authenticate using a password. + PasswordCallback func(conn ConnMetadata, password []byte) (*Permissions, error) + + // PublicKeyCallback, if non-nil, is called when a client + // offers a public key for authentication. It must return a nil error + // if the given public key can be used to authenticate the + // given user. For example, see CertChecker.Authenticate. A + // call to this function does not guarantee that the key + // offered is in fact used to authenticate. To record any data + // depending on the public key, store it inside a + // Permissions.Extensions entry. + PublicKeyCallback func(conn ConnMetadata, key PublicKey) (*Permissions, error) + + // KeyboardInteractiveCallback, if non-nil, is called when + // keyboard-interactive authentication is selected (RFC + // 4256). The client object's Challenge function should be + // used to query the user. The callback may offer multiple + // Challenge rounds. To avoid information leaks, the client + // should be presented a challenge even if the user is + // unknown. + KeyboardInteractiveCallback func(conn ConnMetadata, client KeyboardInteractiveChallenge) (*Permissions, error) + + // AuthLogCallback, if non-nil, is called to log all authentication + // attempts. + AuthLogCallback func(conn ConnMetadata, method string, err error) + + // PreAuthConnCallback, if non-nil, is called upon receiving a new connection + // before any authentication has started. The provided ServerPreAuthConn + // can be used at any time before authentication is complete, including + // after this callback has returned. + PreAuthConnCallback func(ServerPreAuthConn) + + // ServerVersion is the version identification string to announce in + // the public handshake. + // If empty, a reasonable default is used. + // Note that RFC 4253 section 4.2 requires that this string start with + // "SSH-2.0-". + ServerVersion string + + // BannerCallback, if present, is called and the return string is sent to + // the client after key exchange completed but before authentication. + BannerCallback func(conn ConnMetadata) string + + // GSSAPIWithMICConfig includes gssapi server and callback, which if both non-nil, is used + // when gssapi-with-mic authentication is selected (RFC 4462 section 3). + GSSAPIWithMICConfig *GSSAPIWithMICConfig +} + +// AddHostKey adds a private key as a host key. If an existing host +// key exists with the same public key format, it is replaced. Each server +// config must have at least one host key. +func (s *ServerConfig) AddHostKey(key Signer) { + for i, k := range s.hostKeys { + if k.PublicKey().Type() == key.PublicKey().Type() { + s.hostKeys[i] = key + return + } + } + + s.hostKeys = append(s.hostKeys, key) +} + +// cachedPubKey contains the results of querying whether a public key is +// acceptable for a user. This is a FIFO cache. +type cachedPubKey struct { + user string + pubKeyData []byte + result error + perms *Permissions +} + +// maxCachedPubKeys is the number of cache entries we store. +// +// Due to consistent misuse of the PublicKeyCallback API, we have reduced this +// to 1, such that the only key in the cache is the most recently seen one. This +// forces the behavior that the last call to PublicKeyCallback will always be +// with the key that is used for authentication. +const maxCachedPubKeys = 1 + +// pubKeyCache caches tests for public keys. Since SSH clients +// will query whether a public key is acceptable before attempting to +// authenticate with it, we end up with duplicate queries for public +// key validity. The cache only applies to a single ServerConn. +type pubKeyCache struct { + keys []cachedPubKey +} + +// get returns the result for a given user/algo/key tuple. +func (c *pubKeyCache) get(user string, pubKeyData []byte) (cachedPubKey, bool) { + for _, k := range c.keys { + if k.user == user && bytes.Equal(k.pubKeyData, pubKeyData) { + return k, true + } + } + return cachedPubKey{}, false +} + +// add adds the given tuple to the cache. +func (c *pubKeyCache) add(candidate cachedPubKey) { + if len(c.keys) >= maxCachedPubKeys { + c.keys = c.keys[1:] + } + c.keys = append(c.keys, candidate) +} + +// ServerConn is an authenticated SSH connection, as seen from the +// server +type ServerConn struct { + Conn + + // If the succeeding authentication callback returned a + // non-nil Permissions pointer, it is stored here. + Permissions *Permissions +} + +// NewServerConn starts a new SSH server with c as the underlying +// transport. It starts with a handshake and, if the handshake is +// unsuccessful, it closes the connection and returns an error. The +// Request and NewChannel channels must be serviced, or the connection +// will hang. +// +// The returned error may be of type *ServerAuthError for +// authentication errors. +func NewServerConn(c net.Conn, config *ServerConfig) (*ServerConn, <-chan NewChannel, <-chan *Request, error) { + fullConf := *config + fullConf.SetDefaults() + if fullConf.MaxAuthTries == 0 { + fullConf.MaxAuthTries = 6 + } + if len(fullConf.PublicKeyAuthAlgorithms) == 0 { + fullConf.PublicKeyAuthAlgorithms = defaultPubKeyAuthAlgos + } else { + for _, algo := range fullConf.PublicKeyAuthAlgorithms { + if !contains(SupportedAlgorithms().PublicKeyAuths, algo) && !contains(InsecureAlgorithms().PublicKeyAuths, algo) { + c.Close() + return nil, nil, nil, fmt.Errorf("ssh: unsupported public key authentication algorithm %s", algo) + } + } + } + + s := &connection{ + sshConn: sshConn{conn: c}, + } + perms, err := s.serverHandshake(&fullConf) + if err != nil { + c.Close() + return nil, nil, nil, err + } + return &ServerConn{s, perms}, s.mux.incomingChannels, s.mux.incomingRequests, nil +} + +// signAndMarshal signs the data with the appropriate algorithm, +// and serializes the result in SSH wire format. algo is the negotiate +// algorithm and may be a certificate type. +func signAndMarshal(k AlgorithmSigner, rand io.Reader, data []byte, algo string) ([]byte, error) { + sig, err := k.SignWithAlgorithm(rand, data, underlyingAlgo(algo)) + if err != nil { + return nil, err + } + + return Marshal(sig), nil +} + +// handshake performs key exchange and user authentication. +func (s *connection) serverHandshake(config *ServerConfig) (*Permissions, error) { + if len(config.hostKeys) == 0 { + return nil, errors.New("ssh: server has no host keys") + } + + if !config.NoClientAuth && config.PasswordCallback == nil && config.PublicKeyCallback == nil && + config.KeyboardInteractiveCallback == nil && (config.GSSAPIWithMICConfig == nil || + config.GSSAPIWithMICConfig.AllowLogin == nil || config.GSSAPIWithMICConfig.Server == nil) { + return nil, errors.New("ssh: no authentication methods configured but NoClientAuth is also false") + } + + if config.ServerVersion != "" { + s.serverVersion = []byte(config.ServerVersion) + } else { + s.serverVersion = []byte(packageVersion) + } + var err error + s.clientVersion, err = exchangeVersions(s.sshConn.conn, s.serverVersion) + if err != nil { + return nil, err + } + + tr := newTransport(s.sshConn.conn, config.Rand, false /* not client */) + s.transport = newServerTransport(tr, s.clientVersion, s.serverVersion, config) + + if err := s.transport.waitSession(); err != nil { + return nil, err + } + + // We just did the key change, so the session ID is established. + s.sessionID = s.transport.getSessionID() + s.algorithms = s.transport.getAlgorithms() + + var packet []byte + if packet, err = s.transport.readPacket(); err != nil { + return nil, err + } + + var serviceRequest serviceRequestMsg + if err = Unmarshal(packet, &serviceRequest); err != nil { + return nil, err + } + if serviceRequest.Service != serviceUserAuth { + return nil, errors.New("ssh: requested service '" + serviceRequest.Service + "' before authenticating") + } + serviceAccept := serviceAcceptMsg{ + Service: serviceUserAuth, + } + if err := s.transport.writePacket(Marshal(&serviceAccept)); err != nil { + return nil, err + } + + perms, err := s.serverAuthenticate(config) + if err != nil { + return nil, err + } + s.mux = newMux(s.transport) + return perms, err +} + +func checkSourceAddress(addr net.Addr, sourceAddrs string) error { + if addr == nil { + return errors.New("ssh: no address known for client, but source-address match required") + } + + tcpAddr, ok := addr.(*net.TCPAddr) + if !ok { + return fmt.Errorf("ssh: remote address %v is not an TCP address when checking source-address match", addr) + } + + for _, sourceAddr := range strings.Split(sourceAddrs, ",") { + if allowedIP := net.ParseIP(sourceAddr); allowedIP != nil { + if allowedIP.Equal(tcpAddr.IP) { + return nil + } + } else { + _, ipNet, err := net.ParseCIDR(sourceAddr) + if err != nil { + return fmt.Errorf("ssh: error parsing source-address restriction %q: %v", sourceAddr, err) + } + + if ipNet.Contains(tcpAddr.IP) { + return nil + } + } + } + + return fmt.Errorf("ssh: remote address %v is not allowed because of source-address restriction", addr) +} + +func gssExchangeToken(gssapiConfig *GSSAPIWithMICConfig, token []byte, s *connection, + sessionID []byte, userAuthReq userAuthRequestMsg) (authErr error, perms *Permissions, err error) { + gssAPIServer := gssapiConfig.Server + defer gssAPIServer.DeleteSecContext() + var srcName string + for { + var ( + outToken []byte + needContinue bool + ) + outToken, srcName, needContinue, err = gssAPIServer.AcceptSecContext(token) + if err != nil { + return err, nil, nil + } + if len(outToken) != 0 { + if err := s.transport.writePacket(Marshal(&userAuthGSSAPIToken{ + Token: outToken, + })); err != nil { + return nil, nil, err + } + } + if !needContinue { + break + } + packet, err := s.transport.readPacket() + if err != nil { + return nil, nil, err + } + userAuthGSSAPITokenReq := &userAuthGSSAPIToken{} + if err := Unmarshal(packet, userAuthGSSAPITokenReq); err != nil { + return nil, nil, err + } + token = userAuthGSSAPITokenReq.Token + } + packet, err := s.transport.readPacket() + if err != nil { + return nil, nil, err + } + userAuthGSSAPIMICReq := &userAuthGSSAPIMIC{} + if err := Unmarshal(packet, userAuthGSSAPIMICReq); err != nil { + return nil, nil, err + } + mic := buildMIC(string(sessionID), userAuthReq.User, userAuthReq.Service, userAuthReq.Method) + if err := gssAPIServer.VerifyMIC(mic, userAuthGSSAPIMICReq.MIC); err != nil { + return err, nil, nil + } + perms, authErr = gssapiConfig.AllowLogin(s, srcName) + return authErr, perms, nil +} + +// isAlgoCompatible checks if the signature format is compatible with the +// selected algorithm taking into account edge cases that occur with old +// clients. +func isAlgoCompatible(algo, sigFormat string) bool { + // Compatibility for old clients. + // + // For certificate authentication with OpenSSH 7.2-7.7 signature format can + // be rsa-sha2-256 or rsa-sha2-512 for the algorithm + // ssh-rsa-cert-v01@openssh.com. + // + // With gpg-agent < 2.2.6 the algorithm can be rsa-sha2-256 or rsa-sha2-512 + // for signature format ssh-rsa. + if isRSA(algo) && isRSA(sigFormat) { + return true + } + // Standard case: the underlying algorithm must match the signature format. + return underlyingAlgo(algo) == sigFormat +} + +// ServerAuthError represents server authentication errors and is +// sometimes returned by NewServerConn. It appends any authentication +// errors that may occur, and is returned if all of the authentication +// methods provided by the user failed to authenticate. +type ServerAuthError struct { + // Errors contains authentication errors returned by the authentication + // callback methods. The first entry is typically ErrNoAuth. + Errors []error +} + +func (l ServerAuthError) Error() string { + var errs []string + for _, err := range l.Errors { + errs = append(errs, err.Error()) + } + return "[" + strings.Join(errs, ", ") + "]" +} + +// ServerAuthCallbacks defines server-side authentication callbacks. +type ServerAuthCallbacks struct { + // PasswordCallback behaves like [ServerConfig.PasswordCallback]. + PasswordCallback func(conn ConnMetadata, password []byte) (*Permissions, error) + + // PublicKeyCallback behaves like [ServerConfig.PublicKeyCallback]. + PublicKeyCallback func(conn ConnMetadata, key PublicKey) (*Permissions, error) + + // KeyboardInteractiveCallback behaves like [ServerConfig.KeyboardInteractiveCallback]. + KeyboardInteractiveCallback func(conn ConnMetadata, client KeyboardInteractiveChallenge) (*Permissions, error) + + // GSSAPIWithMICConfig behaves like [ServerConfig.GSSAPIWithMICConfig]. + GSSAPIWithMICConfig *GSSAPIWithMICConfig +} + +// PartialSuccessError can be returned by any of the [ServerConfig] +// authentication callbacks to indicate to the client that authentication has +// partially succeeded, but further steps are required. +type PartialSuccessError struct { + // Next defines the authentication callbacks to apply to further steps. The + // available methods communicated to the client are based on the non-nil + // ServerAuthCallbacks fields. + Next ServerAuthCallbacks +} + +func (p *PartialSuccessError) Error() string { + return "ssh: authenticated with partial success" +} + +// ErrNoAuth is the error value returned if no +// authentication method has been passed yet. This happens as a normal +// part of the authentication loop, since the client first tries +// 'none' authentication to discover available methods. +// It is returned in ServerAuthError.Errors from NewServerConn. +var ErrNoAuth = errors.New("ssh: no auth passed yet") + +// BannerError is an error that can be returned by authentication handlers in +// ServerConfig to send a banner message to the client. +type BannerError struct { + Err error + Message string +} + +func (b *BannerError) Unwrap() error { + return b.Err +} + +func (b *BannerError) Error() string { + if b.Err == nil { + return b.Message + } + return b.Err.Error() +} + +func (s *connection) serverAuthenticate(config *ServerConfig) (*Permissions, error) { + if config.PreAuthConnCallback != nil { + config.PreAuthConnCallback(s) + } + + sessionID := s.transport.getSessionID() + var cache pubKeyCache + var perms *Permissions + + authFailures := 0 + noneAuthCount := 0 + var authErrs []error + var calledBannerCallback bool + partialSuccessReturned := false + // Set the initial authentication callbacks from the config. They can be + // changed if a PartialSuccessError is returned. + authConfig := ServerAuthCallbacks{ + PasswordCallback: config.PasswordCallback, + PublicKeyCallback: config.PublicKeyCallback, + KeyboardInteractiveCallback: config.KeyboardInteractiveCallback, + GSSAPIWithMICConfig: config.GSSAPIWithMICConfig, + } + +userAuthLoop: + for { + if authFailures >= config.MaxAuthTries && config.MaxAuthTries > 0 { + discMsg := &disconnectMsg{ + Reason: 2, + Message: "too many authentication failures", + } + + if err := s.transport.writePacket(Marshal(discMsg)); err != nil { + return nil, err + } + authErrs = append(authErrs, discMsg) + return nil, &ServerAuthError{Errors: authErrs} + } + + var userAuthReq userAuthRequestMsg + if packet, err := s.transport.readPacket(); err != nil { + if err == io.EOF { + return nil, &ServerAuthError{Errors: authErrs} + } + return nil, err + } else if err = Unmarshal(packet, &userAuthReq); err != nil { + return nil, err + } + + if userAuthReq.Service != serviceSSH { + return nil, errors.New("ssh: client attempted to negotiate for unknown service: " + userAuthReq.Service) + } + + if s.user != userAuthReq.User && partialSuccessReturned { + return nil, fmt.Errorf("ssh: client changed the user after a partial success authentication, previous user %q, current user %q", + s.user, userAuthReq.User) + } + + s.user = userAuthReq.User + + if !calledBannerCallback && config.BannerCallback != nil { + calledBannerCallback = true + if msg := config.BannerCallback(s); msg != "" { + if err := s.SendAuthBanner(msg); err != nil { + return nil, err + } + } + } + + perms = nil + authErr := ErrNoAuth + + switch userAuthReq.Method { + case "none": + noneAuthCount++ + // We don't allow none authentication after a partial success + // response. + if config.NoClientAuth && !partialSuccessReturned { + if config.NoClientAuthCallback != nil { + perms, authErr = config.NoClientAuthCallback(s) + } else { + authErr = nil + } + } + case "password": + if authConfig.PasswordCallback == nil { + authErr = errors.New("ssh: password auth not configured") + break + } + payload := userAuthReq.Payload + if len(payload) < 1 || payload[0] != 0 { + return nil, parseError(msgUserAuthRequest) + } + payload = payload[1:] + password, payload, ok := parseString(payload) + if !ok || len(payload) > 0 { + return nil, parseError(msgUserAuthRequest) + } + + perms, authErr = authConfig.PasswordCallback(s, password) + case "keyboard-interactive": + if authConfig.KeyboardInteractiveCallback == nil { + authErr = errors.New("ssh: keyboard-interactive auth not configured") + break + } + + prompter := &sshClientKeyboardInteractive{s} + perms, authErr = authConfig.KeyboardInteractiveCallback(s, prompter.Challenge) + case "publickey": + if authConfig.PublicKeyCallback == nil { + authErr = errors.New("ssh: publickey auth not configured") + break + } + payload := userAuthReq.Payload + if len(payload) < 1 { + return nil, parseError(msgUserAuthRequest) + } + isQuery := payload[0] == 0 + payload = payload[1:] + algoBytes, payload, ok := parseString(payload) + if !ok { + return nil, parseError(msgUserAuthRequest) + } + algo := string(algoBytes) + if !contains(config.PublicKeyAuthAlgorithms, underlyingAlgo(algo)) { + authErr = fmt.Errorf("ssh: algorithm %q not accepted", algo) + break + } + + pubKeyData, payload, ok := parseString(payload) + if !ok { + return nil, parseError(msgUserAuthRequest) + } + + pubKey, err := ParsePublicKey(pubKeyData) + if err != nil { + return nil, err + } + + candidate, ok := cache.get(s.user, pubKeyData) + if !ok { + candidate.user = s.user + candidate.pubKeyData = pubKeyData + candidate.perms, candidate.result = authConfig.PublicKeyCallback(s, pubKey) + _, isPartialSuccessError := candidate.result.(*PartialSuccessError) + + if (candidate.result == nil || isPartialSuccessError) && + candidate.perms != nil && + candidate.perms.CriticalOptions != nil && + candidate.perms.CriticalOptions[sourceAddressCriticalOption] != "" { + if err := checkSourceAddress( + s.RemoteAddr(), + candidate.perms.CriticalOptions[sourceAddressCriticalOption]); err != nil { + candidate.result = err + } + } + cache.add(candidate) + } + + if isQuery { + // The client can query if the given public key + // would be okay. + + if len(payload) > 0 { + return nil, parseError(msgUserAuthRequest) + } + _, isPartialSuccessError := candidate.result.(*PartialSuccessError) + if candidate.result == nil || isPartialSuccessError { + okMsg := userAuthPubKeyOkMsg{ + Algo: algo, + PubKey: pubKeyData, + } + if err = s.transport.writePacket(Marshal(&okMsg)); err != nil { + return nil, err + } + continue userAuthLoop + } + authErr = candidate.result + } else { + sig, payload, ok := parseSignature(payload) + if !ok || len(payload) > 0 { + return nil, parseError(msgUserAuthRequest) + } + // Ensure the declared public key algo is compatible with the + // decoded one. This check will ensure we don't accept e.g. + // ssh-rsa-cert-v01@openssh.com algorithm with ssh-rsa public + // key type. The algorithm and public key type must be + // consistent: both must be certificate algorithms, or neither. + if !contains(algorithmsForKeyFormat(pubKey.Type()), algo) { + authErr = fmt.Errorf("ssh: public key type %q not compatible with selected algorithm %q", + pubKey.Type(), algo) + break + } + // Ensure the public key algo and signature algo + // are supported. Compare the private key + // algorithm name that corresponds to algo with + // sig.Format. This is usually the same, but + // for certs, the names differ. + if !contains(config.PublicKeyAuthAlgorithms, sig.Format) { + authErr = fmt.Errorf("ssh: algorithm %q not accepted", sig.Format) + break + } + if !isAlgoCompatible(algo, sig.Format) { + authErr = fmt.Errorf("ssh: signature %q not compatible with selected algorithm %q", sig.Format, algo) + break + } + + signedData := buildDataSignedForAuth(sessionID, userAuthReq, algo, pubKeyData) + + if err := pubKey.Verify(signedData, sig); err != nil { + return nil, err + } + + authErr = candidate.result + perms = candidate.perms + } + case "gssapi-with-mic": + if authConfig.GSSAPIWithMICConfig == nil { + authErr = errors.New("ssh: gssapi-with-mic auth not configured") + break + } + gssapiConfig := authConfig.GSSAPIWithMICConfig + userAuthRequestGSSAPI, err := parseGSSAPIPayload(userAuthReq.Payload) + if err != nil { + return nil, parseError(msgUserAuthRequest) + } + // OpenSSH supports Kerberos V5 mechanism only for GSS-API authentication. + if userAuthRequestGSSAPI.N == 0 { + authErr = fmt.Errorf("ssh: Mechanism negotiation is not supported") + break + } + var i uint32 + present := false + for i = 0; i < userAuthRequestGSSAPI.N; i++ { + if userAuthRequestGSSAPI.OIDS[i].Equal(krb5Mesh) { + present = true + break + } + } + if !present { + authErr = fmt.Errorf("ssh: GSSAPI authentication must use the Kerberos V5 mechanism") + break + } + // Initial server response, see RFC 4462 section 3.3. + if err := s.transport.writePacket(Marshal(&userAuthGSSAPIResponse{ + SupportMech: krb5OID, + })); err != nil { + return nil, err + } + // Exchange token, see RFC 4462 section 3.4. + packet, err := s.transport.readPacket() + if err != nil { + return nil, err + } + userAuthGSSAPITokenReq := &userAuthGSSAPIToken{} + if err := Unmarshal(packet, userAuthGSSAPITokenReq); err != nil { + return nil, err + } + authErr, perms, err = gssExchangeToken(gssapiConfig, userAuthGSSAPITokenReq.Token, s, sessionID, + userAuthReq) + if err != nil { + return nil, err + } + default: + authErr = fmt.Errorf("ssh: unknown method %q", userAuthReq.Method) + } + + authErrs = append(authErrs, authErr) + + if config.AuthLogCallback != nil { + config.AuthLogCallback(s, userAuthReq.Method, authErr) + } + + var bannerErr *BannerError + if errors.As(authErr, &bannerErr) { + if bannerErr.Message != "" { + if err := s.SendAuthBanner(bannerErr.Message); err != nil { + return nil, err + } + } + } + + if authErr == nil { + break userAuthLoop + } + + var failureMsg userAuthFailureMsg + + if partialSuccess, ok := authErr.(*PartialSuccessError); ok { + // After a partial success error we don't allow changing the user + // name and execute the NoClientAuthCallback. + partialSuccessReturned = true + + // In case a partial success is returned, the server may send + // a new set of authentication methods. + authConfig = partialSuccess.Next + + // Reset pubkey cache, as the new PublicKeyCallback might + // accept a different set of public keys. + cache = pubKeyCache{} + + // Send back a partial success message to the user. + failureMsg.PartialSuccess = true + } else { + // Allow initial attempt of 'none' without penalty. + if authFailures > 0 || userAuthReq.Method != "none" || noneAuthCount != 1 { + authFailures++ + } + if config.MaxAuthTries > 0 && authFailures >= config.MaxAuthTries { + // If we have hit the max attempts, don't bother sending the + // final SSH_MSG_USERAUTH_FAILURE message, since there are + // no more authentication methods which can be attempted, + // and this message may cause the client to re-attempt + // authentication while we send the disconnect message. + // Continue, and trigger the disconnect at the start of + // the loop. + // + // The SSH specification is somewhat confusing about this, + // RFC 4252 Section 5.1 requires each authentication failure + // be responded to with a respective SSH_MSG_USERAUTH_FAILURE + // message, but Section 4 says the server should disconnect + // after some number of attempts, but it isn't explicit which + // message should take precedence (i.e. should there be a failure + // message than a disconnect message, or if we are going to + // disconnect, should we only send that message.) + // + // Either way, OpenSSH disconnects immediately after the last + // failed authentication attempt, and given they are typically + // considered the golden implementation it seems reasonable + // to match that behavior. + continue + } + } + + if authConfig.PasswordCallback != nil { + failureMsg.Methods = append(failureMsg.Methods, "password") + } + if authConfig.PublicKeyCallback != nil { + failureMsg.Methods = append(failureMsg.Methods, "publickey") + } + if authConfig.KeyboardInteractiveCallback != nil { + failureMsg.Methods = append(failureMsg.Methods, "keyboard-interactive") + } + if authConfig.GSSAPIWithMICConfig != nil && authConfig.GSSAPIWithMICConfig.Server != nil && + authConfig.GSSAPIWithMICConfig.AllowLogin != nil { + failureMsg.Methods = append(failureMsg.Methods, "gssapi-with-mic") + } + + if len(failureMsg.Methods) == 0 { + return nil, errors.New("ssh: no authentication methods available") + } + + if err := s.transport.writePacket(Marshal(&failureMsg)); err != nil { + return nil, err + } + } + + if err := s.transport.writePacket([]byte{msgUserAuthSuccess}); err != nil { + return nil, err + } + return perms, nil +} + +// sshClientKeyboardInteractive implements a ClientKeyboardInteractive by +// asking the client on the other side of a ServerConn. +type sshClientKeyboardInteractive struct { + *connection +} + +func (c *sshClientKeyboardInteractive) Challenge(name, instruction string, questions []string, echos []bool) (answers []string, err error) { + if len(questions) != len(echos) { + return nil, errors.New("ssh: echos and questions must have equal length") + } + + var prompts []byte + for i := range questions { + prompts = appendString(prompts, questions[i]) + prompts = appendBool(prompts, echos[i]) + } + + if err := c.transport.writePacket(Marshal(&userAuthInfoRequestMsg{ + Name: name, + Instruction: instruction, + NumPrompts: uint32(len(questions)), + Prompts: prompts, + })); err != nil { + return nil, err + } + + packet, err := c.transport.readPacket() + if err != nil { + return nil, err + } + if packet[0] != msgUserAuthInfoResponse { + return nil, unexpectedMessageError(msgUserAuthInfoResponse, packet[0]) + } + packet = packet[1:] + + n, packet, ok := parseUint32(packet) + if !ok || int(n) != len(questions) { + return nil, parseError(msgUserAuthInfoResponse) + } + + for i := uint32(0); i < n; i++ { + ans, rest, ok := parseString(packet) + if !ok { + return nil, parseError(msgUserAuthInfoResponse) + } + + answers = append(answers, string(ans)) + packet = rest + } + if len(packet) != 0 { + return nil, errors.New("ssh: junk at end of message") + } + + return answers, nil +} diff --git a/tests/vendor/golang.org/x/crypto/ssh/session.go b/tests/vendor/golang.org/x/crypto/ssh/session.go new file mode 100644 index 000000000..acef62259 --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/ssh/session.go @@ -0,0 +1,647 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +// Session implements an interactive session described in +// "RFC 4254, section 6". + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "io" + "sync" +) + +type Signal string + +// POSIX signals as listed in RFC 4254 Section 6.10. +const ( + SIGABRT Signal = "ABRT" + SIGALRM Signal = "ALRM" + SIGFPE Signal = "FPE" + SIGHUP Signal = "HUP" + SIGILL Signal = "ILL" + SIGINT Signal = "INT" + SIGKILL Signal = "KILL" + SIGPIPE Signal = "PIPE" + SIGQUIT Signal = "QUIT" + SIGSEGV Signal = "SEGV" + SIGTERM Signal = "TERM" + SIGUSR1 Signal = "USR1" + SIGUSR2 Signal = "USR2" +) + +var signals = map[Signal]int{ + SIGABRT: 6, + SIGALRM: 14, + SIGFPE: 8, + SIGHUP: 1, + SIGILL: 4, + SIGINT: 2, + SIGKILL: 9, + SIGPIPE: 13, + SIGQUIT: 3, + SIGSEGV: 11, + SIGTERM: 15, +} + +type TerminalModes map[uint8]uint32 + +// POSIX terminal mode flags as listed in RFC 4254 Section 8. +const ( + tty_OP_END = 0 + VINTR = 1 + VQUIT = 2 + VERASE = 3 + VKILL = 4 + VEOF = 5 + VEOL = 6 + VEOL2 = 7 + VSTART = 8 + VSTOP = 9 + VSUSP = 10 + VDSUSP = 11 + VREPRINT = 12 + VWERASE = 13 + VLNEXT = 14 + VFLUSH = 15 + VSWTCH = 16 + VSTATUS = 17 + VDISCARD = 18 + IGNPAR = 30 + PARMRK = 31 + INPCK = 32 + ISTRIP = 33 + INLCR = 34 + IGNCR = 35 + ICRNL = 36 + IUCLC = 37 + IXON = 38 + IXANY = 39 + IXOFF = 40 + IMAXBEL = 41 + IUTF8 = 42 // RFC 8160 + ISIG = 50 + ICANON = 51 + XCASE = 52 + ECHO = 53 + ECHOE = 54 + ECHOK = 55 + ECHONL = 56 + NOFLSH = 57 + TOSTOP = 58 + IEXTEN = 59 + ECHOCTL = 60 + ECHOKE = 61 + PENDIN = 62 + OPOST = 70 + OLCUC = 71 + ONLCR = 72 + OCRNL = 73 + ONOCR = 74 + ONLRET = 75 + CS7 = 90 + CS8 = 91 + PARENB = 92 + PARODD = 93 + TTY_OP_ISPEED = 128 + TTY_OP_OSPEED = 129 +) + +// A Session represents a connection to a remote command or shell. +type Session struct { + // Stdin specifies the remote process's standard input. + // If Stdin is nil, the remote process reads from an empty + // bytes.Buffer. + Stdin io.Reader + + // Stdout and Stderr specify the remote process's standard + // output and error. + // + // If either is nil, Run connects the corresponding file + // descriptor to an instance of io.Discard. There is a + // fixed amount of buffering that is shared for the two streams. + // If either blocks it may eventually cause the remote + // command to block. + Stdout io.Writer + Stderr io.Writer + + ch Channel // the channel backing this session + started bool // true once Start, Run or Shell is invoked. + copyFuncs []func() error + errors chan error // one send per copyFunc + + // true if pipe method is active + stdinpipe, stdoutpipe, stderrpipe bool + + // stdinPipeWriter is non-nil if StdinPipe has not been called + // and Stdin was specified by the user; it is the write end of + // a pipe connecting Session.Stdin to the stdin channel. + stdinPipeWriter io.WriteCloser + + exitStatus chan error +} + +// SendRequest sends an out-of-band channel request on the SSH channel +// underlying the session. +func (s *Session) SendRequest(name string, wantReply bool, payload []byte) (bool, error) { + return s.ch.SendRequest(name, wantReply, payload) +} + +func (s *Session) Close() error { + return s.ch.Close() +} + +// RFC 4254 Section 6.4. +type setenvRequest struct { + Name string + Value string +} + +// Setenv sets an environment variable that will be applied to any +// command executed by Shell or Run. +func (s *Session) Setenv(name, value string) error { + msg := setenvRequest{ + Name: name, + Value: value, + } + ok, err := s.ch.SendRequest("env", true, Marshal(&msg)) + if err == nil && !ok { + err = errors.New("ssh: setenv failed") + } + return err +} + +// RFC 4254 Section 6.2. +type ptyRequestMsg struct { + Term string + Columns uint32 + Rows uint32 + Width uint32 + Height uint32 + Modelist string +} + +// RequestPty requests the association of a pty with the session on the remote host. +func (s *Session) RequestPty(term string, h, w int, termmodes TerminalModes) error { + var tm []byte + for k, v := range termmodes { + kv := struct { + Key byte + Val uint32 + }{k, v} + + tm = append(tm, Marshal(&kv)...) + } + tm = append(tm, tty_OP_END) + req := ptyRequestMsg{ + Term: term, + Columns: uint32(w), + Rows: uint32(h), + Width: uint32(w * 8), + Height: uint32(h * 8), + Modelist: string(tm), + } + ok, err := s.ch.SendRequest("pty-req", true, Marshal(&req)) + if err == nil && !ok { + err = errors.New("ssh: pty-req failed") + } + return err +} + +// RFC 4254 Section 6.5. +type subsystemRequestMsg struct { + Subsystem string +} + +// RequestSubsystem requests the association of a subsystem with the session on the remote host. +// A subsystem is a predefined command that runs in the background when the ssh session is initiated +func (s *Session) RequestSubsystem(subsystem string) error { + msg := subsystemRequestMsg{ + Subsystem: subsystem, + } + ok, err := s.ch.SendRequest("subsystem", true, Marshal(&msg)) + if err == nil && !ok { + err = errors.New("ssh: subsystem request failed") + } + return err +} + +// RFC 4254 Section 6.7. +type ptyWindowChangeMsg struct { + Columns uint32 + Rows uint32 + Width uint32 + Height uint32 +} + +// WindowChange informs the remote host about a terminal window dimension change to h rows and w columns. +func (s *Session) WindowChange(h, w int) error { + req := ptyWindowChangeMsg{ + Columns: uint32(w), + Rows: uint32(h), + Width: uint32(w * 8), + Height: uint32(h * 8), + } + _, err := s.ch.SendRequest("window-change", false, Marshal(&req)) + return err +} + +// RFC 4254 Section 6.9. +type signalMsg struct { + Signal string +} + +// Signal sends the given signal to the remote process. +// sig is one of the SIG* constants. +func (s *Session) Signal(sig Signal) error { + msg := signalMsg{ + Signal: string(sig), + } + + _, err := s.ch.SendRequest("signal", false, Marshal(&msg)) + return err +} + +// RFC 4254 Section 6.5. +type execMsg struct { + Command string +} + +// Start runs cmd on the remote host. Typically, the remote +// server passes cmd to the shell for interpretation. +// A Session only accepts one call to Run, Start or Shell. +func (s *Session) Start(cmd string) error { + if s.started { + return errors.New("ssh: session already started") + } + req := execMsg{ + Command: cmd, + } + + ok, err := s.ch.SendRequest("exec", true, Marshal(&req)) + if err == nil && !ok { + err = fmt.Errorf("ssh: command %v failed", cmd) + } + if err != nil { + return err + } + return s.start() +} + +// Run runs cmd on the remote host. Typically, the remote +// server passes cmd to the shell for interpretation. +// A Session only accepts one call to Run, Start, Shell, Output, +// or CombinedOutput. +// +// The returned error is nil if the command runs, has no problems +// copying stdin, stdout, and stderr, and exits with a zero exit +// status. +// +// If the remote server does not send an exit status, an error of type +// *ExitMissingError is returned. If the command completes +// unsuccessfully or is interrupted by a signal, the error is of type +// *ExitError. Other error types may be returned for I/O problems. +func (s *Session) Run(cmd string) error { + err := s.Start(cmd) + if err != nil { + return err + } + return s.Wait() +} + +// Output runs cmd on the remote host and returns its standard output. +func (s *Session) Output(cmd string) ([]byte, error) { + if s.Stdout != nil { + return nil, errors.New("ssh: Stdout already set") + } + var b bytes.Buffer + s.Stdout = &b + err := s.Run(cmd) + return b.Bytes(), err +} + +type singleWriter struct { + b bytes.Buffer + mu sync.Mutex +} + +func (w *singleWriter) Write(p []byte) (int, error) { + w.mu.Lock() + defer w.mu.Unlock() + return w.b.Write(p) +} + +// CombinedOutput runs cmd on the remote host and returns its combined +// standard output and standard error. +func (s *Session) CombinedOutput(cmd string) ([]byte, error) { + if s.Stdout != nil { + return nil, errors.New("ssh: Stdout already set") + } + if s.Stderr != nil { + return nil, errors.New("ssh: Stderr already set") + } + var b singleWriter + s.Stdout = &b + s.Stderr = &b + err := s.Run(cmd) + return b.b.Bytes(), err +} + +// Shell starts a login shell on the remote host. A Session only +// accepts one call to Run, Start, Shell, Output, or CombinedOutput. +func (s *Session) Shell() error { + if s.started { + return errors.New("ssh: session already started") + } + + ok, err := s.ch.SendRequest("shell", true, nil) + if err == nil && !ok { + return errors.New("ssh: could not start shell") + } + if err != nil { + return err + } + return s.start() +} + +func (s *Session) start() error { + s.started = true + + type F func(*Session) + for _, setupFd := range []F{(*Session).stdin, (*Session).stdout, (*Session).stderr} { + setupFd(s) + } + + s.errors = make(chan error, len(s.copyFuncs)) + for _, fn := range s.copyFuncs { + go func(fn func() error) { + s.errors <- fn() + }(fn) + } + return nil +} + +// Wait waits for the remote command to exit. +// +// The returned error is nil if the command runs, has no problems +// copying stdin, stdout, and stderr, and exits with a zero exit +// status. +// +// If the remote server does not send an exit status, an error of type +// *ExitMissingError is returned. If the command completes +// unsuccessfully or is interrupted by a signal, the error is of type +// *ExitError. Other error types may be returned for I/O problems. +func (s *Session) Wait() error { + if !s.started { + return errors.New("ssh: session not started") + } + waitErr := <-s.exitStatus + + if s.stdinPipeWriter != nil { + s.stdinPipeWriter.Close() + } + var copyError error + for range s.copyFuncs { + if err := <-s.errors; err != nil && copyError == nil { + copyError = err + } + } + if waitErr != nil { + return waitErr + } + return copyError +} + +func (s *Session) wait(reqs <-chan *Request) error { + wm := Waitmsg{status: -1} + // Wait for msg channel to be closed before returning. + for msg := range reqs { + switch msg.Type { + case "exit-status": + wm.status = int(binary.BigEndian.Uint32(msg.Payload)) + case "exit-signal": + var sigval struct { + Signal string + CoreDumped bool + Error string + Lang string + } + if err := Unmarshal(msg.Payload, &sigval); err != nil { + return err + } + + // Must sanitize strings? + wm.signal = sigval.Signal + wm.msg = sigval.Error + wm.lang = sigval.Lang + default: + // This handles keepalives and matches + // OpenSSH's behaviour. + if msg.WantReply { + msg.Reply(false, nil) + } + } + } + if wm.status == 0 { + return nil + } + if wm.status == -1 { + // exit-status was never sent from server + if wm.signal == "" { + // signal was not sent either. RFC 4254 + // section 6.10 recommends against this + // behavior, but it is allowed, so we let + // clients handle it. + return &ExitMissingError{} + } + wm.status = 128 + if _, ok := signals[Signal(wm.signal)]; ok { + wm.status += signals[Signal(wm.signal)] + } + } + + return &ExitError{wm} +} + +// ExitMissingError is returned if a session is torn down cleanly, but +// the server sends no confirmation of the exit status. +type ExitMissingError struct{} + +func (e *ExitMissingError) Error() string { + return "wait: remote command exited without exit status or exit signal" +} + +func (s *Session) stdin() { + if s.stdinpipe { + return + } + var stdin io.Reader + if s.Stdin == nil { + stdin = new(bytes.Buffer) + } else { + r, w := io.Pipe() + go func() { + _, err := io.Copy(w, s.Stdin) + w.CloseWithError(err) + }() + stdin, s.stdinPipeWriter = r, w + } + s.copyFuncs = append(s.copyFuncs, func() error { + _, err := io.Copy(s.ch, stdin) + if err1 := s.ch.CloseWrite(); err == nil && err1 != io.EOF { + err = err1 + } + return err + }) +} + +func (s *Session) stdout() { + if s.stdoutpipe { + return + } + if s.Stdout == nil { + s.Stdout = io.Discard + } + s.copyFuncs = append(s.copyFuncs, func() error { + _, err := io.Copy(s.Stdout, s.ch) + return err + }) +} + +func (s *Session) stderr() { + if s.stderrpipe { + return + } + if s.Stderr == nil { + s.Stderr = io.Discard + } + s.copyFuncs = append(s.copyFuncs, func() error { + _, err := io.Copy(s.Stderr, s.ch.Stderr()) + return err + }) +} + +// sessionStdin reroutes Close to CloseWrite. +type sessionStdin struct { + io.Writer + ch Channel +} + +func (s *sessionStdin) Close() error { + return s.ch.CloseWrite() +} + +// StdinPipe returns a pipe that will be connected to the +// remote command's standard input when the command starts. +func (s *Session) StdinPipe() (io.WriteCloser, error) { + if s.Stdin != nil { + return nil, errors.New("ssh: Stdin already set") + } + if s.started { + return nil, errors.New("ssh: StdinPipe after process started") + } + s.stdinpipe = true + return &sessionStdin{s.ch, s.ch}, nil +} + +// StdoutPipe returns a pipe that will be connected to the +// remote command's standard output when the command starts. +// There is a fixed amount of buffering that is shared between +// stdout and stderr streams. If the StdoutPipe reader is +// not serviced fast enough it may eventually cause the +// remote command to block. +func (s *Session) StdoutPipe() (io.Reader, error) { + if s.Stdout != nil { + return nil, errors.New("ssh: Stdout already set") + } + if s.started { + return nil, errors.New("ssh: StdoutPipe after process started") + } + s.stdoutpipe = true + return s.ch, nil +} + +// StderrPipe returns a pipe that will be connected to the +// remote command's standard error when the command starts. +// There is a fixed amount of buffering that is shared between +// stdout and stderr streams. If the StderrPipe reader is +// not serviced fast enough it may eventually cause the +// remote command to block. +func (s *Session) StderrPipe() (io.Reader, error) { + if s.Stderr != nil { + return nil, errors.New("ssh: Stderr already set") + } + if s.started { + return nil, errors.New("ssh: StderrPipe after process started") + } + s.stderrpipe = true + return s.ch.Stderr(), nil +} + +// newSession returns a new interactive session on the remote host. +func newSession(ch Channel, reqs <-chan *Request) (*Session, error) { + s := &Session{ + ch: ch, + } + s.exitStatus = make(chan error, 1) + go func() { + s.exitStatus <- s.wait(reqs) + }() + + return s, nil +} + +// An ExitError reports unsuccessful completion of a remote command. +type ExitError struct { + Waitmsg +} + +func (e *ExitError) Error() string { + return e.Waitmsg.String() +} + +// Waitmsg stores the information about an exited remote command +// as reported by Wait. +type Waitmsg struct { + status int + signal string + msg string + lang string +} + +// ExitStatus returns the exit status of the remote command. +func (w Waitmsg) ExitStatus() int { + return w.status +} + +// Signal returns the exit signal of the remote command if +// it was terminated violently. +func (w Waitmsg) Signal() string { + return w.signal +} + +// Msg returns the exit message given by the remote command +func (w Waitmsg) Msg() string { + return w.msg +} + +// Lang returns the language tag. See RFC 3066 +func (w Waitmsg) Lang() string { + return w.lang +} + +func (w Waitmsg) String() string { + str := fmt.Sprintf("Process exited with status %v", w.status) + if w.signal != "" { + str += fmt.Sprintf(" from signal %v", w.signal) + } + if w.msg != "" { + str += fmt.Sprintf(". Reason was: %v", w.msg) + } + return str +} diff --git a/tests/vendor/golang.org/x/crypto/ssh/ssh_gss.go b/tests/vendor/golang.org/x/crypto/ssh/ssh_gss.go new file mode 100644 index 000000000..24bd7c8e8 --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/ssh/ssh_gss.go @@ -0,0 +1,139 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "encoding/asn1" + "errors" +) + +var krb5OID []byte + +func init() { + krb5OID, _ = asn1.Marshal(krb5Mesh) +} + +// GSSAPIClient provides the API to plug-in GSSAPI authentication for client logins. +type GSSAPIClient interface { + // InitSecContext initiates the establishment of a security context for GSS-API between the + // ssh client and ssh server. Initially the token parameter should be specified as nil. + // The routine may return a outputToken which should be transferred to + // the ssh server, where the ssh server will present it to + // AcceptSecContext. If no token need be sent, InitSecContext will indicate this by setting + // needContinue to false. To complete the context + // establishment, one or more reply tokens may be required from the ssh + // server;if so, InitSecContext will return a needContinue which is true. + // In this case, InitSecContext should be called again when the + // reply token is received from the ssh server, passing the reply + // token to InitSecContext via the token parameters. + // See RFC 2743 section 2.2.1 and RFC 4462 section 3.4. + InitSecContext(target string, token []byte, isGSSDelegCreds bool) (outputToken []byte, needContinue bool, err error) + // GetMIC generates a cryptographic MIC for the SSH2 message, and places + // the MIC in a token for transfer to the ssh server. + // The contents of the MIC field are obtained by calling GSS_GetMIC() + // over the following, using the GSS-API context that was just + // established: + // string session identifier + // byte SSH_MSG_USERAUTH_REQUEST + // string user name + // string service + // string "gssapi-with-mic" + // See RFC 2743 section 2.3.1 and RFC 4462 3.5. + GetMIC(micFiled []byte) ([]byte, error) + // Whenever possible, it should be possible for + // DeleteSecContext() calls to be successfully processed even + // if other calls cannot succeed, thereby enabling context-related + // resources to be released. + // In addition to deleting established security contexts, + // gss_delete_sec_context must also be able to delete "half-built" + // security contexts resulting from an incomplete sequence of + // InitSecContext()/AcceptSecContext() calls. + // See RFC 2743 section 2.2.3. + DeleteSecContext() error +} + +// GSSAPIServer provides the API to plug in GSSAPI authentication for server logins. +type GSSAPIServer interface { + // AcceptSecContext allows a remotely initiated security context between the application + // and a remote peer to be established by the ssh client. The routine may return a + // outputToken which should be transferred to the ssh client, + // where the ssh client will present it to InitSecContext. + // If no token need be sent, AcceptSecContext will indicate this + // by setting the needContinue to false. To + // complete the context establishment, one or more reply tokens may be + // required from the ssh client. if so, AcceptSecContext + // will return a needContinue which is true, in which case it + // should be called again when the reply token is received from the ssh + // client, passing the token to AcceptSecContext via the + // token parameters. + // The srcName return value is the authenticated username. + // See RFC 2743 section 2.2.2 and RFC 4462 section 3.4. + AcceptSecContext(token []byte) (outputToken []byte, srcName string, needContinue bool, err error) + // VerifyMIC verifies that a cryptographic MIC, contained in the token parameter, + // fits the supplied message is received from the ssh client. + // See RFC 2743 section 2.3.2. + VerifyMIC(micField []byte, micToken []byte) error + // Whenever possible, it should be possible for + // DeleteSecContext() calls to be successfully processed even + // if other calls cannot succeed, thereby enabling context-related + // resources to be released. + // In addition to deleting established security contexts, + // gss_delete_sec_context must also be able to delete "half-built" + // security contexts resulting from an incomplete sequence of + // InitSecContext()/AcceptSecContext() calls. + // See RFC 2743 section 2.2.3. + DeleteSecContext() error +} + +var ( + // OpenSSH supports Kerberos V5 mechanism only for GSS-API authentication, + // so we also support the krb5 mechanism only. + // See RFC 1964 section 1. + krb5Mesh = asn1.ObjectIdentifier{1, 2, 840, 113554, 1, 2, 2} +) + +// The GSS-API authentication method is initiated when the client sends an SSH_MSG_USERAUTH_REQUEST +// See RFC 4462 section 3.2. +type userAuthRequestGSSAPI struct { + N uint32 + OIDS []asn1.ObjectIdentifier +} + +func parseGSSAPIPayload(payload []byte) (*userAuthRequestGSSAPI, error) { + n, rest, ok := parseUint32(payload) + if !ok { + return nil, errors.New("parse uint32 failed") + } + s := &userAuthRequestGSSAPI{ + N: n, + OIDS: make([]asn1.ObjectIdentifier, n), + } + for i := 0; i < int(n); i++ { + var ( + desiredMech []byte + err error + ) + desiredMech, rest, ok = parseString(rest) + if !ok { + return nil, errors.New("parse string failed") + } + if rest, err = asn1.Unmarshal(desiredMech, &s.OIDS[i]); err != nil { + return nil, err + } + + } + return s, nil +} + +// See RFC 4462 section 3.6. +func buildMIC(sessionID string, username string, service string, authMethod string) []byte { + out := make([]byte, 0, 0) + out = appendString(out, sessionID) + out = append(out, msgUserAuthRequest) + out = appendString(out, username) + out = appendString(out, service) + out = appendString(out, authMethod) + return out +} diff --git a/tests/vendor/golang.org/x/crypto/ssh/streamlocal.go b/tests/vendor/golang.org/x/crypto/ssh/streamlocal.go new file mode 100644 index 000000000..b171b330b --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/ssh/streamlocal.go @@ -0,0 +1,116 @@ +package ssh + +import ( + "errors" + "io" + "net" +) + +// streamLocalChannelOpenDirectMsg is a struct used for SSH_MSG_CHANNEL_OPEN message +// with "direct-streamlocal@openssh.com" string. +// +// See openssh-portable/PROTOCOL, section 2.4. connection: Unix domain socket forwarding +// https://github.com/openssh/openssh-portable/blob/master/PROTOCOL#L235 +type streamLocalChannelOpenDirectMsg struct { + socketPath string + reserved0 string + reserved1 uint32 +} + +// forwardedStreamLocalPayload is a struct used for SSH_MSG_CHANNEL_OPEN message +// with "forwarded-streamlocal@openssh.com" string. +type forwardedStreamLocalPayload struct { + SocketPath string + Reserved0 string +} + +// streamLocalChannelForwardMsg is a struct used for SSH2_MSG_GLOBAL_REQUEST message +// with "streamlocal-forward@openssh.com"/"cancel-streamlocal-forward@openssh.com" string. +type streamLocalChannelForwardMsg struct { + socketPath string +} + +// ListenUnix is similar to ListenTCP but uses a Unix domain socket. +func (c *Client) ListenUnix(socketPath string) (net.Listener, error) { + c.handleForwardsOnce.Do(c.handleForwards) + m := streamLocalChannelForwardMsg{ + socketPath, + } + // send message + ok, _, err := c.SendRequest("streamlocal-forward@openssh.com", true, Marshal(&m)) + if err != nil { + return nil, err + } + if !ok { + return nil, errors.New("ssh: streamlocal-forward@openssh.com request denied by peer") + } + ch := c.forwards.add(&net.UnixAddr{Name: socketPath, Net: "unix"}) + + return &unixListener{socketPath, c, ch}, nil +} + +func (c *Client) dialStreamLocal(socketPath string) (Channel, error) { + msg := streamLocalChannelOpenDirectMsg{ + socketPath: socketPath, + } + ch, in, err := c.OpenChannel("direct-streamlocal@openssh.com", Marshal(&msg)) + if err != nil { + return nil, err + } + go DiscardRequests(in) + return ch, err +} + +type unixListener struct { + socketPath string + + conn *Client + in <-chan forward +} + +// Accept waits for and returns the next connection to the listener. +func (l *unixListener) Accept() (net.Conn, error) { + s, ok := <-l.in + if !ok { + return nil, io.EOF + } + ch, incoming, err := s.newCh.Accept() + if err != nil { + return nil, err + } + go DiscardRequests(incoming) + + return &chanConn{ + Channel: ch, + laddr: &net.UnixAddr{ + Name: l.socketPath, + Net: "unix", + }, + raddr: &net.UnixAddr{ + Name: "@", + Net: "unix", + }, + }, nil +} + +// Close closes the listener. +func (l *unixListener) Close() error { + // this also closes the listener. + l.conn.forwards.remove(&net.UnixAddr{Name: l.socketPath, Net: "unix"}) + m := streamLocalChannelForwardMsg{ + l.socketPath, + } + ok, _, err := l.conn.SendRequest("cancel-streamlocal-forward@openssh.com", true, Marshal(&m)) + if err == nil && !ok { + err = errors.New("ssh: cancel-streamlocal-forward@openssh.com failed") + } + return err +} + +// Addr returns the listener's network address. +func (l *unixListener) Addr() net.Addr { + return &net.UnixAddr{ + Name: l.socketPath, + Net: "unix", + } +} diff --git a/tests/vendor/golang.org/x/crypto/ssh/tcpip.go b/tests/vendor/golang.org/x/crypto/ssh/tcpip.go new file mode 100644 index 000000000..93d844f03 --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/ssh/tcpip.go @@ -0,0 +1,509 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "context" + "errors" + "fmt" + "io" + "math/rand" + "net" + "strconv" + "strings" + "sync" + "time" +) + +// Listen requests the remote peer open a listening socket on +// addr. Incoming connections will be available by calling Accept on +// the returned net.Listener. The listener must be serviced, or the +// SSH connection may hang. +// N must be "tcp", "tcp4", "tcp6", or "unix". +func (c *Client) Listen(n, addr string) (net.Listener, error) { + switch n { + case "tcp", "tcp4", "tcp6": + laddr, err := net.ResolveTCPAddr(n, addr) + if err != nil { + return nil, err + } + return c.ListenTCP(laddr) + case "unix": + return c.ListenUnix(addr) + default: + return nil, fmt.Errorf("ssh: unsupported protocol: %s", n) + } +} + +// Automatic port allocation is broken with OpenSSH before 6.0. See +// also https://bugzilla.mindrot.org/show_bug.cgi?id=2017. In +// particular, OpenSSH 5.9 sends a channelOpenMsg with port number 0, +// rather than the actual port number. This means you can never open +// two different listeners with auto allocated ports. We work around +// this by trying explicit ports until we succeed. + +const openSSHPrefix = "OpenSSH_" + +var portRandomizer = rand.New(rand.NewSource(time.Now().UnixNano())) + +// isBrokenOpenSSHVersion returns true if the given version string +// specifies a version of OpenSSH that is known to have a bug in port +// forwarding. +func isBrokenOpenSSHVersion(versionStr string) bool { + i := strings.Index(versionStr, openSSHPrefix) + if i < 0 { + return false + } + i += len(openSSHPrefix) + j := i + for ; j < len(versionStr); j++ { + if versionStr[j] < '0' || versionStr[j] > '9' { + break + } + } + version, _ := strconv.Atoi(versionStr[i:j]) + return version < 6 +} + +// autoPortListenWorkaround simulates automatic port allocation by +// trying random ports repeatedly. +func (c *Client) autoPortListenWorkaround(laddr *net.TCPAddr) (net.Listener, error) { + var sshListener net.Listener + var err error + const tries = 10 + for i := 0; i < tries; i++ { + addr := *laddr + addr.Port = 1024 + portRandomizer.Intn(60000) + sshListener, err = c.ListenTCP(&addr) + if err == nil { + laddr.Port = addr.Port + return sshListener, err + } + } + return nil, fmt.Errorf("ssh: listen on random port failed after %d tries: %v", tries, err) +} + +// RFC 4254 7.1 +type channelForwardMsg struct { + addr string + rport uint32 +} + +// handleForwards starts goroutines handling forwarded connections. +// It's called on first use by (*Client).ListenTCP to not launch +// goroutines until needed. +func (c *Client) handleForwards() { + go c.forwards.handleChannels(c.HandleChannelOpen("forwarded-tcpip")) + go c.forwards.handleChannels(c.HandleChannelOpen("forwarded-streamlocal@openssh.com")) +} + +// ListenTCP requests the remote peer open a listening socket +// on laddr. Incoming connections will be available by calling +// Accept on the returned net.Listener. +func (c *Client) ListenTCP(laddr *net.TCPAddr) (net.Listener, error) { + c.handleForwardsOnce.Do(c.handleForwards) + if laddr.Port == 0 && isBrokenOpenSSHVersion(string(c.ServerVersion())) { + return c.autoPortListenWorkaround(laddr) + } + + m := channelForwardMsg{ + laddr.IP.String(), + uint32(laddr.Port), + } + // send message + ok, resp, err := c.SendRequest("tcpip-forward", true, Marshal(&m)) + if err != nil { + return nil, err + } + if !ok { + return nil, errors.New("ssh: tcpip-forward request denied by peer") + } + + // If the original port was 0, then the remote side will + // supply a real port number in the response. + if laddr.Port == 0 { + var p struct { + Port uint32 + } + if err := Unmarshal(resp, &p); err != nil { + return nil, err + } + laddr.Port = int(p.Port) + } + + // Register this forward, using the port number we obtained. + ch := c.forwards.add(laddr) + + return &tcpListener{laddr, c, ch}, nil +} + +// forwardList stores a mapping between remote +// forward requests and the tcpListeners. +type forwardList struct { + sync.Mutex + entries []forwardEntry +} + +// forwardEntry represents an established mapping of a laddr on a +// remote ssh server to a channel connected to a tcpListener. +type forwardEntry struct { + laddr net.Addr + c chan forward +} + +// forward represents an incoming forwarded tcpip connection. The +// arguments to add/remove/lookup should be address as specified in +// the original forward-request. +type forward struct { + newCh NewChannel // the ssh client channel underlying this forward + raddr net.Addr // the raddr of the incoming connection +} + +func (l *forwardList) add(addr net.Addr) chan forward { + l.Lock() + defer l.Unlock() + f := forwardEntry{ + laddr: addr, + c: make(chan forward, 1), + } + l.entries = append(l.entries, f) + return f.c +} + +// See RFC 4254, section 7.2 +type forwardedTCPPayload struct { + Addr string + Port uint32 + OriginAddr string + OriginPort uint32 +} + +// parseTCPAddr parses the originating address from the remote into a *net.TCPAddr. +func parseTCPAddr(addr string, port uint32) (*net.TCPAddr, error) { + if port == 0 || port > 65535 { + return nil, fmt.Errorf("ssh: port number out of range: %d", port) + } + ip := net.ParseIP(string(addr)) + if ip == nil { + return nil, fmt.Errorf("ssh: cannot parse IP address %q", addr) + } + return &net.TCPAddr{IP: ip, Port: int(port)}, nil +} + +func (l *forwardList) handleChannels(in <-chan NewChannel) { + for ch := range in { + var ( + laddr net.Addr + raddr net.Addr + err error + ) + switch channelType := ch.ChannelType(); channelType { + case "forwarded-tcpip": + var payload forwardedTCPPayload + if err = Unmarshal(ch.ExtraData(), &payload); err != nil { + ch.Reject(ConnectionFailed, "could not parse forwarded-tcpip payload: "+err.Error()) + continue + } + + // RFC 4254 section 7.2 specifies that incoming + // addresses should list the address, in string + // format. It is implied that this should be an IP + // address, as it would be impossible to connect to it + // otherwise. + laddr, err = parseTCPAddr(payload.Addr, payload.Port) + if err != nil { + ch.Reject(ConnectionFailed, err.Error()) + continue + } + raddr, err = parseTCPAddr(payload.OriginAddr, payload.OriginPort) + if err != nil { + ch.Reject(ConnectionFailed, err.Error()) + continue + } + + case "forwarded-streamlocal@openssh.com": + var payload forwardedStreamLocalPayload + if err = Unmarshal(ch.ExtraData(), &payload); err != nil { + ch.Reject(ConnectionFailed, "could not parse forwarded-streamlocal@openssh.com payload: "+err.Error()) + continue + } + laddr = &net.UnixAddr{ + Name: payload.SocketPath, + Net: "unix", + } + raddr = &net.UnixAddr{ + Name: "@", + Net: "unix", + } + default: + panic(fmt.Errorf("ssh: unknown channel type %s", channelType)) + } + if ok := l.forward(laddr, raddr, ch); !ok { + // Section 7.2, implementations MUST reject spurious incoming + // connections. + ch.Reject(Prohibited, "no forward for address") + continue + } + + } +} + +// remove removes the forward entry, and the channel feeding its +// listener. +func (l *forwardList) remove(addr net.Addr) { + l.Lock() + defer l.Unlock() + for i, f := range l.entries { + if addr.Network() == f.laddr.Network() && addr.String() == f.laddr.String() { + l.entries = append(l.entries[:i], l.entries[i+1:]...) + close(f.c) + return + } + } +} + +// closeAll closes and clears all forwards. +func (l *forwardList) closeAll() { + l.Lock() + defer l.Unlock() + for _, f := range l.entries { + close(f.c) + } + l.entries = nil +} + +func (l *forwardList) forward(laddr, raddr net.Addr, ch NewChannel) bool { + l.Lock() + defer l.Unlock() + for _, f := range l.entries { + if laddr.Network() == f.laddr.Network() && laddr.String() == f.laddr.String() { + f.c <- forward{newCh: ch, raddr: raddr} + return true + } + } + return false +} + +type tcpListener struct { + laddr *net.TCPAddr + + conn *Client + in <-chan forward +} + +// Accept waits for and returns the next connection to the listener. +func (l *tcpListener) Accept() (net.Conn, error) { + s, ok := <-l.in + if !ok { + return nil, io.EOF + } + ch, incoming, err := s.newCh.Accept() + if err != nil { + return nil, err + } + go DiscardRequests(incoming) + + return &chanConn{ + Channel: ch, + laddr: l.laddr, + raddr: s.raddr, + }, nil +} + +// Close closes the listener. +func (l *tcpListener) Close() error { + m := channelForwardMsg{ + l.laddr.IP.String(), + uint32(l.laddr.Port), + } + + // this also closes the listener. + l.conn.forwards.remove(l.laddr) + ok, _, err := l.conn.SendRequest("cancel-tcpip-forward", true, Marshal(&m)) + if err == nil && !ok { + err = errors.New("ssh: cancel-tcpip-forward failed") + } + return err +} + +// Addr returns the listener's network address. +func (l *tcpListener) Addr() net.Addr { + return l.laddr +} + +// DialContext initiates a connection to the addr from the remote host. +// +// The provided Context must be non-nil. If the context expires before the +// connection is complete, an error is returned. Once successfully connected, +// any expiration of the context will not affect the connection. +// +// See func Dial for additional information. +func (c *Client) DialContext(ctx context.Context, n, addr string) (net.Conn, error) { + if err := ctx.Err(); err != nil { + return nil, err + } + type connErr struct { + conn net.Conn + err error + } + ch := make(chan connErr) + go func() { + conn, err := c.Dial(n, addr) + select { + case ch <- connErr{conn, err}: + case <-ctx.Done(): + if conn != nil { + conn.Close() + } + } + }() + select { + case res := <-ch: + return res.conn, res.err + case <-ctx.Done(): + return nil, ctx.Err() + } +} + +// Dial initiates a connection to the addr from the remote host. +// The resulting connection has a zero LocalAddr() and RemoteAddr(). +func (c *Client) Dial(n, addr string) (net.Conn, error) { + var ch Channel + switch n { + case "tcp", "tcp4", "tcp6": + // Parse the address into host and numeric port. + host, portString, err := net.SplitHostPort(addr) + if err != nil { + return nil, err + } + port, err := strconv.ParseUint(portString, 10, 16) + if err != nil { + return nil, err + } + ch, err = c.dial(net.IPv4zero.String(), 0, host, int(port)) + if err != nil { + return nil, err + } + // Use a zero address for local and remote address. + zeroAddr := &net.TCPAddr{ + IP: net.IPv4zero, + Port: 0, + } + return &chanConn{ + Channel: ch, + laddr: zeroAddr, + raddr: zeroAddr, + }, nil + case "unix": + var err error + ch, err = c.dialStreamLocal(addr) + if err != nil { + return nil, err + } + return &chanConn{ + Channel: ch, + laddr: &net.UnixAddr{ + Name: "@", + Net: "unix", + }, + raddr: &net.UnixAddr{ + Name: addr, + Net: "unix", + }, + }, nil + default: + return nil, fmt.Errorf("ssh: unsupported protocol: %s", n) + } +} + +// DialTCP connects to the remote address raddr on the network net, +// which must be "tcp", "tcp4", or "tcp6". If laddr is not nil, it is used +// as the local address for the connection. +func (c *Client) DialTCP(n string, laddr, raddr *net.TCPAddr) (net.Conn, error) { + if laddr == nil { + laddr = &net.TCPAddr{ + IP: net.IPv4zero, + Port: 0, + } + } + ch, err := c.dial(laddr.IP.String(), laddr.Port, raddr.IP.String(), raddr.Port) + if err != nil { + return nil, err + } + return &chanConn{ + Channel: ch, + laddr: laddr, + raddr: raddr, + }, nil +} + +// RFC 4254 7.2 +type channelOpenDirectMsg struct { + raddr string + rport uint32 + laddr string + lport uint32 +} + +func (c *Client) dial(laddr string, lport int, raddr string, rport int) (Channel, error) { + msg := channelOpenDirectMsg{ + raddr: raddr, + rport: uint32(rport), + laddr: laddr, + lport: uint32(lport), + } + ch, in, err := c.OpenChannel("direct-tcpip", Marshal(&msg)) + if err != nil { + return nil, err + } + go DiscardRequests(in) + return ch, nil +} + +type tcpChan struct { + Channel // the backing channel +} + +// chanConn fulfills the net.Conn interface without +// the tcpChan having to hold laddr or raddr directly. +type chanConn struct { + Channel + laddr, raddr net.Addr +} + +// LocalAddr returns the local network address. +func (t *chanConn) LocalAddr() net.Addr { + return t.laddr +} + +// RemoteAddr returns the remote network address. +func (t *chanConn) RemoteAddr() net.Addr { + return t.raddr +} + +// SetDeadline sets the read and write deadlines associated +// with the connection. +func (t *chanConn) SetDeadline(deadline time.Time) error { + if err := t.SetReadDeadline(deadline); err != nil { + return err + } + return t.SetWriteDeadline(deadline) +} + +// SetReadDeadline sets the read deadline. +// A zero value for t means Read will not time out. +// After the deadline, the error from Read will implement net.Error +// with Timeout() == true. +func (t *chanConn) SetReadDeadline(deadline time.Time) error { + // for compatibility with previous version, + // the error message contains "tcpChan" + return errors.New("ssh: tcpChan: deadline not supported") +} + +// SetWriteDeadline exists to satisfy the net.Conn interface +// but is not implemented by this type. It always returns an error. +func (t *chanConn) SetWriteDeadline(deadline time.Time) error { + return errors.New("ssh: tcpChan: deadline not supported") +} diff --git a/tests/vendor/golang.org/x/crypto/ssh/transport.go b/tests/vendor/golang.org/x/crypto/ssh/transport.go new file mode 100644 index 000000000..663619845 --- /dev/null +++ b/tests/vendor/golang.org/x/crypto/ssh/transport.go @@ -0,0 +1,373 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "bufio" + "bytes" + "errors" + "io" + "log" +) + +// debugTransport if set, will print packet types as they go over the +// wire. No message decoding is done, to minimize the impact on timing. +const debugTransport = false + +// packetConn represents a transport that implements packet based +// operations. +type packetConn interface { + // Encrypt and send a packet of data to the remote peer. + writePacket(packet []byte) error + + // Read a packet from the connection. The read is blocking, + // i.e. if error is nil, then the returned byte slice is + // always non-empty. + readPacket() ([]byte, error) + + // Close closes the write-side of the connection. + Close() error +} + +// transport is the keyingTransport that implements the SSH packet +// protocol. +type transport struct { + reader connectionState + writer connectionState + + bufReader *bufio.Reader + bufWriter *bufio.Writer + rand io.Reader + isClient bool + io.Closer + + strictMode bool + initialKEXDone bool +} + +// packetCipher represents a combination of SSH encryption/MAC +// protocol. A single instance should be used for one direction only. +type packetCipher interface { + // writeCipherPacket encrypts the packet and writes it to w. The + // contents of the packet are generally scrambled. + writeCipherPacket(seqnum uint32, w io.Writer, rand io.Reader, packet []byte) error + + // readCipherPacket reads and decrypts a packet of data. The + // returned packet may be overwritten by future calls of + // readPacket. + readCipherPacket(seqnum uint32, r io.Reader) ([]byte, error) +} + +// connectionState represents one side (read or write) of the +// connection. This is necessary because each direction has its own +// keys, and can even have its own algorithms +type connectionState struct { + packetCipher + seqNum uint32 + dir direction + pendingKeyChange chan packetCipher +} + +func (t *transport) setStrictMode() error { + if t.reader.seqNum != 1 { + return errors.New("ssh: sequence number != 1 when strict KEX mode requested") + } + t.strictMode = true + return nil +} + +func (t *transport) setInitialKEXDone() { + t.initialKEXDone = true +} + +// prepareKeyChange sets up key material for a keychange. The key changes in +// both directions are triggered by reading and writing a msgNewKey packet +// respectively. +func (t *transport) prepareKeyChange(algs *NegotiatedAlgorithms, kexResult *kexResult) error { + ciph, err := newPacketCipher(t.reader.dir, algs.Read, kexResult) + if err != nil { + return err + } + t.reader.pendingKeyChange <- ciph + + ciph, err = newPacketCipher(t.writer.dir, algs.Write, kexResult) + if err != nil { + return err + } + t.writer.pendingKeyChange <- ciph + + return nil +} + +func (t *transport) printPacket(p []byte, write bool) { + if len(p) == 0 { + return + } + who := "server" + if t.isClient { + who = "client" + } + what := "read" + if write { + what = "write" + } + + log.Println(what, who, p[0]) +} + +// Read and decrypt next packet. +func (t *transport) readPacket() (p []byte, err error) { + for { + p, err = t.reader.readPacket(t.bufReader, t.strictMode) + if err != nil { + break + } + // in strict mode we pass through DEBUG and IGNORE packets only during the initial KEX + if len(p) == 0 || (t.strictMode && !t.initialKEXDone) || (p[0] != msgIgnore && p[0] != msgDebug) { + break + } + } + if debugTransport { + t.printPacket(p, false) + } + + return p, err +} + +func (s *connectionState) readPacket(r *bufio.Reader, strictMode bool) ([]byte, error) { + packet, err := s.packetCipher.readCipherPacket(s.seqNum, r) + s.seqNum++ + if err == nil && len(packet) == 0 { + err = errors.New("ssh: zero length packet") + } + + if len(packet) > 0 { + switch packet[0] { + case msgNewKeys: + select { + case cipher := <-s.pendingKeyChange: + s.packetCipher = cipher + if strictMode { + s.seqNum = 0 + } + default: + return nil, errors.New("ssh: got bogus newkeys message") + } + + case msgDisconnect: + // Transform a disconnect message into an + // error. Since this is lowest level at which + // we interpret message types, doing it here + // ensures that we don't have to handle it + // elsewhere. + var msg disconnectMsg + if err := Unmarshal(packet, &msg); err != nil { + return nil, err + } + return nil, &msg + } + } + + // The packet may point to an internal buffer, so copy the + // packet out here. + fresh := make([]byte, len(packet)) + copy(fresh, packet) + + return fresh, err +} + +func (t *transport) writePacket(packet []byte) error { + if debugTransport { + t.printPacket(packet, true) + } + return t.writer.writePacket(t.bufWriter, t.rand, packet, t.strictMode) +} + +func (s *connectionState) writePacket(w *bufio.Writer, rand io.Reader, packet []byte, strictMode bool) error { + changeKeys := len(packet) > 0 && packet[0] == msgNewKeys + + err := s.packetCipher.writeCipherPacket(s.seqNum, w, rand, packet) + if err != nil { + return err + } + if err = w.Flush(); err != nil { + return err + } + s.seqNum++ + if changeKeys { + select { + case cipher := <-s.pendingKeyChange: + s.packetCipher = cipher + if strictMode { + s.seqNum = 0 + } + default: + panic("ssh: no key material for msgNewKeys") + } + } + return err +} + +func newTransport(rwc io.ReadWriteCloser, rand io.Reader, isClient bool) *transport { + t := &transport{ + bufReader: bufio.NewReader(rwc), + bufWriter: bufio.NewWriter(rwc), + rand: rand, + reader: connectionState{ + packetCipher: &streamPacketCipher{cipher: noneCipher{}}, + pendingKeyChange: make(chan packetCipher, 1), + }, + writer: connectionState{ + packetCipher: &streamPacketCipher{cipher: noneCipher{}}, + pendingKeyChange: make(chan packetCipher, 1), + }, + Closer: rwc, + } + t.isClient = isClient + + if isClient { + t.reader.dir = serverKeys + t.writer.dir = clientKeys + } else { + t.reader.dir = clientKeys + t.writer.dir = serverKeys + } + + return t +} + +type direction struct { + ivTag []byte + keyTag []byte + macKeyTag []byte +} + +var ( + serverKeys = direction{[]byte{'B'}, []byte{'D'}, []byte{'F'}} + clientKeys = direction{[]byte{'A'}, []byte{'C'}, []byte{'E'}} +) + +// setupKeys sets the cipher and MAC keys from kex.K, kex.H and sessionId, as +// described in RFC 4253, section 6.4. direction should either be serverKeys +// (to setup server->client keys) or clientKeys (for client->server keys). +func newPacketCipher(d direction, algs DirectionAlgorithms, kex *kexResult) (packetCipher, error) { + cipherMode := cipherModes[algs.Cipher] + + iv := make([]byte, cipherMode.ivSize) + key := make([]byte, cipherMode.keySize) + + generateKeyMaterial(iv, d.ivTag, kex) + generateKeyMaterial(key, d.keyTag, kex) + + var macKey []byte + if !aeadCiphers[algs.Cipher] { + macMode := macModes[algs.MAC] + macKey = make([]byte, macMode.keySize) + generateKeyMaterial(macKey, d.macKeyTag, kex) + } + + return cipherModes[algs.Cipher].create(key, iv, macKey, algs) +} + +// generateKeyMaterial fills out with key material generated from tag, K, H +// and sessionId, as specified in RFC 4253, section 7.2. +func generateKeyMaterial(out, tag []byte, r *kexResult) { + var digestsSoFar []byte + + h := r.Hash.New() + for len(out) > 0 { + h.Reset() + h.Write(r.K) + h.Write(r.H) + + if len(digestsSoFar) == 0 { + h.Write(tag) + h.Write(r.SessionID) + } else { + h.Write(digestsSoFar) + } + + digest := h.Sum(nil) + n := copy(out, digest) + out = out[n:] + if len(out) > 0 { + digestsSoFar = append(digestsSoFar, digest...) + } + } +} + +const packageVersion = "SSH-2.0-Go" + +// Sends and receives a version line. The versionLine string should +// be US ASCII, start with "SSH-2.0-", and should not include a +// newline. exchangeVersions returns the other side's version line. +func exchangeVersions(rw io.ReadWriter, versionLine []byte) (them []byte, err error) { + // Contrary to the RFC, we do not ignore lines that don't + // start with "SSH-2.0-" to make the library usable with + // nonconforming servers. + for _, c := range versionLine { + // The spec disallows non US-ASCII chars, and + // specifically forbids null chars. + if c < 32 { + return nil, errors.New("ssh: junk character in version line") + } + } + if _, err = rw.Write(append(versionLine, '\r', '\n')); err != nil { + return + } + + them, err = readVersion(rw) + return them, err +} + +// maxVersionStringBytes is the maximum number of bytes that we'll +// accept as a version string. RFC 4253 section 4.2 limits this at 255 +// chars +const maxVersionStringBytes = 255 + +// Read version string as specified by RFC 4253, section 4.2. +func readVersion(r io.Reader) ([]byte, error) { + versionString := make([]byte, 0, 64) + var ok bool + var buf [1]byte + + for length := 0; length < maxVersionStringBytes; length++ { + _, err := io.ReadFull(r, buf[:]) + if err != nil { + return nil, err + } + // The RFC says that the version should be terminated with \r\n + // but several SSH servers actually only send a \n. + if buf[0] == '\n' { + if !bytes.HasPrefix(versionString, []byte("SSH-")) { + // RFC 4253 says we need to ignore all version string lines + // except the one containing the SSH version (provided that + // all the lines do not exceed 255 bytes in total). + versionString = versionString[:0] + continue + } + ok = true + break + } + + // non ASCII chars are disallowed, but we are lenient, + // since Go doesn't use null-terminated strings. + + // The RFC allows a comment after a space, however, + // all of it (version and comments) goes into the + // session hash. + versionString = append(versionString, buf[0]) + } + + if !ok { + return nil, errors.New("ssh: overflow reading version string") + } + + // There might be a '\r' on the end which we should remove. + if len(versionString) > 0 && versionString[len(versionString)-1] == '\r' { + versionString = versionString[:len(versionString)-1] + } + return versionString, nil +} diff --git a/tests/vendor/golang.org/x/net/LICENSE b/tests/vendor/golang.org/x/net/LICENSE new file mode 100644 index 000000000..2a7cf70da --- /dev/null +++ b/tests/vendor/golang.org/x/net/LICENSE @@ -0,0 +1,27 @@ +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/tests/vendor/golang.org/x/net/PATENTS b/tests/vendor/golang.org/x/net/PATENTS new file mode 100644 index 000000000..733099041 --- /dev/null +++ b/tests/vendor/golang.org/x/net/PATENTS @@ -0,0 +1,22 @@ +Additional IP Rights Grant (Patents) + +"This implementation" means the copyrightable works distributed by +Google as part of the Go project. + +Google hereby grants to You a perpetual, worldwide, non-exclusive, +no-charge, royalty-free, irrevocable (except as stated in this section) +patent license to make, have made, use, offer to sell, sell, import, +transfer and otherwise run, modify and propagate the contents of this +implementation of Go, where such license applies only to those patent +claims, both currently owned or controlled by Google and acquired in +the future, licensable by Google that are necessarily infringed by this +implementation of Go. This grant does not include claims that would be +infringed only as a consequence of further modification of this +implementation. If you or your agent or exclusive licensee institute or +order or agree to the institution of patent litigation against any +entity (including a cross-claim or counterclaim in a lawsuit) alleging +that this implementation of Go or any code incorporated within this +implementation of Go constitutes direct or contributory patent +infringement, or inducement of patent infringement, then any patent +rights granted to you under this License for this implementation of Go +shall terminate as of the date such litigation is filed. diff --git a/tests/vendor/golang.org/x/net/html/atom/atom.go b/tests/vendor/golang.org/x/net/html/atom/atom.go new file mode 100644 index 000000000..cd0a8ac15 --- /dev/null +++ b/tests/vendor/golang.org/x/net/html/atom/atom.go @@ -0,0 +1,78 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package atom provides integer codes (also known as atoms) for a fixed set of +// frequently occurring HTML strings: tag names and attribute keys such as "p" +// and "id". +// +// Sharing an atom's name between all elements with the same tag can result in +// fewer string allocations when tokenizing and parsing HTML. Integer +// comparisons are also generally faster than string comparisons. +// +// The value of an atom's particular code is not guaranteed to stay the same +// between versions of this package. Neither is any ordering guaranteed: +// whether atom.H1 < atom.H2 may also change. The codes are not guaranteed to +// be dense. The only guarantees are that e.g. looking up "div" will yield +// atom.Div, calling atom.Div.String will return "div", and atom.Div != 0. +package atom // import "golang.org/x/net/html/atom" + +// Atom is an integer code for a string. The zero value maps to "". +type Atom uint32 + +// String returns the atom's name. +func (a Atom) String() string { + start := uint32(a >> 8) + n := uint32(a & 0xff) + if start+n > uint32(len(atomText)) { + return "" + } + return atomText[start : start+n] +} + +func (a Atom) string() string { + return atomText[a>>8 : a>>8+a&0xff] +} + +// fnv computes the FNV hash with an arbitrary starting value h. +func fnv(h uint32, s []byte) uint32 { + for i := range s { + h ^= uint32(s[i]) + h *= 16777619 + } + return h +} + +func match(s string, t []byte) bool { + for i, c := range t { + if s[i] != c { + return false + } + } + return true +} + +// Lookup returns the atom whose name is s. It returns zero if there is no +// such atom. The lookup is case sensitive. +func Lookup(s []byte) Atom { + if len(s) == 0 || len(s) > maxAtomLen { + return 0 + } + h := fnv(hash0, s) + if a := table[h&uint32(len(table)-1)]; int(a&0xff) == len(s) && match(a.string(), s) { + return a + } + if a := table[(h>>16)&uint32(len(table)-1)]; int(a&0xff) == len(s) && match(a.string(), s) { + return a + } + return 0 +} + +// String returns a string whose contents are equal to s. In that sense, it is +// equivalent to string(s) but may be more efficient. +func String(s []byte) string { + if a := Lookup(s); a != 0 { + return a.String() + } + return string(s) +} diff --git a/tests/vendor/golang.org/x/net/html/atom/table.go b/tests/vendor/golang.org/x/net/html/atom/table.go new file mode 100644 index 000000000..b460e6f72 --- /dev/null +++ b/tests/vendor/golang.org/x/net/html/atom/table.go @@ -0,0 +1,785 @@ +// Code generated by go generate gen.go; DO NOT EDIT. + +//go:generate go run gen.go + +package atom + +const ( + A Atom = 0x1 + Abbr Atom = 0x4 + Accept Atom = 0x1a06 + AcceptCharset Atom = 0x1a0e + Accesskey Atom = 0x2c09 + Acronym Atom = 0xaa07 + Action Atom = 0x26506 + Address Atom = 0x6f107 + Align Atom = 0xb105 + Allowfullscreen Atom = 0x3280f + Allowpaymentrequest Atom = 0xc113 + Allowusermedia Atom = 0xdd0e + Alt Atom = 0xf303 + Annotation Atom = 0x1c90a + AnnotationXml Atom = 0x1c90e + Applet Atom = 0x30806 + Area Atom = 0x35004 + Article Atom = 0x3f607 + As Atom = 0x3c02 + Aside Atom = 0x10705 + Async Atom = 0xff05 + Audio Atom = 0x11505 + Autocomplete Atom = 0x26b0c + Autofocus Atom = 0x12109 + Autoplay Atom = 0x13c08 + B Atom = 0x101 + Base Atom = 0x3b04 + Basefont Atom = 0x3b08 + Bdi Atom = 0xba03 + Bdo Atom = 0x14b03 + Bgsound Atom = 0x15e07 + Big Atom = 0x17003 + Blink Atom = 0x17305 + Blockquote Atom = 0x1870a + Body Atom = 0x2804 + Br Atom = 0x202 + Button Atom = 0x19106 + Canvas Atom = 0x10306 + Caption Atom = 0x22407 + Center Atom = 0x21306 + Challenge Atom = 0x28e09 + Charset Atom = 0x2107 + Checked Atom = 0x5b507 + Cite Atom = 0x19c04 + Class Atom = 0x55805 + Code Atom = 0x5ee04 + Col Atom = 0x1ab03 + Colgroup Atom = 0x1ab08 + Color Atom = 0x1bf05 + Cols Atom = 0x1c404 + Colspan Atom = 0x1c407 + Command Atom = 0x1d707 + Content Atom = 0x57b07 + Contenteditable Atom = 0x57b0f + Contextmenu Atom = 0x37a0b + Controls Atom = 0x1de08 + Coords Atom = 0x1f006 + Crossorigin Atom = 0x1fa0b + Data Atom = 0x49904 + Datalist Atom = 0x49908 + Datetime Atom = 0x2ab08 + Dd Atom = 0x2bf02 + Default Atom = 0x10a07 + Defer Atom = 0x5f005 + Del Atom = 0x44c03 + Desc Atom = 0x55504 + Details Atom = 0x7207 + Dfn Atom = 0x8703 + Dialog Atom = 0xbb06 + Dir Atom = 0x9303 + Dirname Atom = 0x9307 + Disabled Atom = 0x16408 + Div Atom = 0x16b03 + Dl Atom = 0x5d602 + Download Atom = 0x45d08 + Draggable Atom = 0x17a09 + Dropzone Atom = 0x3ff08 + Dt Atom = 0x64002 + Em Atom = 0x6e02 + Embed Atom = 0x6e05 + Enctype Atom = 0x28007 + Face Atom = 0x21104 + Fieldset Atom = 0x21908 + Figcaption Atom = 0x2210a + Figure Atom = 0x23b06 + Font Atom = 0x3f04 + Footer Atom = 0xf606 + For Atom = 0x24703 + ForeignObject Atom = 0x2470d + Foreignobject Atom = 0x2540d + Form Atom = 0x26104 + Formaction Atom = 0x2610a + Formenctype Atom = 0x27c0b + Formmethod Atom = 0x2970a + Formnovalidate Atom = 0x2a10e + Formtarget Atom = 0x2b30a + Frame Atom = 0x8b05 + Frameset Atom = 0x8b08 + H1 Atom = 0x15c02 + H2 Atom = 0x56102 + H3 Atom = 0x2cd02 + H4 Atom = 0x2fc02 + H5 Atom = 0x33f02 + H6 Atom = 0x34902 + Head Atom = 0x32004 + Header Atom = 0x32006 + Headers Atom = 0x32007 + Height Atom = 0x5206 + Hgroup Atom = 0x64206 + Hidden Atom = 0x2bd06 + High Atom = 0x2ca04 + Hr Atom = 0x15702 + Href Atom = 0x2cf04 + Hreflang Atom = 0x2cf08 + Html Atom = 0x5604 + HttpEquiv Atom = 0x2d70a + I Atom = 0x601 + Icon Atom = 0x57a04 + Id Atom = 0x10902 + Iframe Atom = 0x2eb06 + Image Atom = 0x2f105 + Img Atom = 0x2f603 + Input Atom = 0x44505 + Inputmode Atom = 0x44509 + Ins Atom = 0x20303 + Integrity Atom = 0x23209 + Is Atom = 0x16502 + Isindex Atom = 0x2fe07 + Ismap Atom = 0x30505 + Itemid Atom = 0x38506 + Itemprop Atom = 0x19d08 + Itemref Atom = 0x3c707 + Itemscope Atom = 0x66f09 + Itemtype Atom = 0x30e08 + Kbd Atom = 0xb903 + Keygen Atom = 0x3206 + Keytype Atom = 0xd607 + Kind Atom = 0x17704 + Label Atom = 0x5905 + Lang Atom = 0x2d304 + Legend Atom = 0x18106 + Li Atom = 0xb202 + Link Atom = 0x17404 + List Atom = 0x49d04 + Listing Atom = 0x49d07 + Loop Atom = 0x5d04 + Low Atom = 0xc303 + Main Atom = 0x1004 + Malignmark Atom = 0xb00a + Manifest Atom = 0x6d508 + Map Atom = 0x30703 + Mark Atom = 0xb604 + Marquee Atom = 0x31607 + Math Atom = 0x31d04 + Max Atom = 0x33703 + Maxlength Atom = 0x33709 + Media Atom = 0xe605 + Mediagroup Atom = 0xe60a + Menu Atom = 0x38104 + Menuitem Atom = 0x38108 + Meta Atom = 0x4ac04 + Meter Atom = 0x9805 + Method Atom = 0x29b06 + Mglyph Atom = 0x2f706 + Mi Atom = 0x34102 + Min Atom = 0x34103 + Minlength Atom = 0x34109 + Mn Atom = 0x2a402 + Mo Atom = 0xa402 + Ms Atom = 0x67202 + Mtext Atom = 0x34b05 + Multiple Atom = 0x35908 + Muted Atom = 0x36105 + Name Atom = 0x9604 + Nav Atom = 0x1303 + Nobr Atom = 0x3704 + Noembed Atom = 0x6c07 + Noframes Atom = 0x8908 + Nomodule Atom = 0xa208 + Nonce Atom = 0x1a605 + Noscript Atom = 0x2c208 + Novalidate Atom = 0x2a50a + Object Atom = 0x25b06 + Ol Atom = 0x13702 + Onabort Atom = 0x19507 + Onafterprint Atom = 0x2290c + Onautocomplete Atom = 0x2690e + Onautocompleteerror Atom = 0x26913 + Onauxclick Atom = 0x6140a + Onbeforeprint Atom = 0x69c0d + Onbeforeunload Atom = 0x6e50e + Onblur Atom = 0x1ea06 + Oncancel Atom = 0x11908 + Oncanplay Atom = 0x14d09 + Oncanplaythrough Atom = 0x14d10 + Onchange Atom = 0x41508 + Onclick Atom = 0x2e407 + Onclose Atom = 0x36607 + Oncontextmenu Atom = 0x3780d + Oncopy Atom = 0x38b06 + Oncuechange Atom = 0x3910b + Oncut Atom = 0x39c05 + Ondblclick Atom = 0x3a10a + Ondrag Atom = 0x3ab06 + Ondragend Atom = 0x3ab09 + Ondragenter Atom = 0x3b40b + Ondragexit Atom = 0x3bf0a + Ondragleave Atom = 0x3d90b + Ondragover Atom = 0x3e40a + Ondragstart Atom = 0x3ee0b + Ondrop Atom = 0x3fd06 + Ondurationchange Atom = 0x40d10 + Onemptied Atom = 0x40409 + Onended Atom = 0x41d07 + Onerror Atom = 0x42407 + Onfocus Atom = 0x42b07 + Onhashchange Atom = 0x4370c + Oninput Atom = 0x44307 + Oninvalid Atom = 0x44f09 + Onkeydown Atom = 0x45809 + Onkeypress Atom = 0x4650a + Onkeyup Atom = 0x47407 + Onlanguagechange Atom = 0x48110 + Onload Atom = 0x49106 + Onloadeddata Atom = 0x4910c + Onloadedmetadata Atom = 0x4a410 + Onloadend Atom = 0x4ba09 + Onloadstart Atom = 0x4c30b + Onmessage Atom = 0x4ce09 + Onmessageerror Atom = 0x4ce0e + Onmousedown Atom = 0x4dc0b + Onmouseenter Atom = 0x4e70c + Onmouseleave Atom = 0x4f30c + Onmousemove Atom = 0x4ff0b + Onmouseout Atom = 0x50a0a + Onmouseover Atom = 0x5170b + Onmouseup Atom = 0x52209 + Onmousewheel Atom = 0x5300c + Onoffline Atom = 0x53c09 + Ononline Atom = 0x54508 + Onpagehide Atom = 0x54d0a + Onpageshow Atom = 0x5630a + Onpaste Atom = 0x56f07 + Onpause Atom = 0x58a07 + Onplay Atom = 0x59406 + Onplaying Atom = 0x59409 + Onpopstate Atom = 0x59d0a + Onprogress Atom = 0x5a70a + Onratechange Atom = 0x5bc0c + Onrejectionhandled Atom = 0x5c812 + Onreset Atom = 0x5da07 + Onresize Atom = 0x5e108 + Onscroll Atom = 0x5f508 + Onsecuritypolicyviolation Atom = 0x5fd19 + Onseeked Atom = 0x61e08 + Onseeking Atom = 0x62609 + Onselect Atom = 0x62f08 + Onshow Atom = 0x63906 + Onsort Atom = 0x64d06 + Onstalled Atom = 0x65709 + Onstorage Atom = 0x66009 + Onsubmit Atom = 0x66908 + Onsuspend Atom = 0x67909 + Ontimeupdate Atom = 0x400c + Ontoggle Atom = 0x68208 + Onunhandledrejection Atom = 0x68a14 + Onunload Atom = 0x6a908 + Onvolumechange Atom = 0x6b10e + Onwaiting Atom = 0x6bf09 + Onwheel Atom = 0x6c807 + Open Atom = 0x1a304 + Optgroup Atom = 0x5f08 + Optimum Atom = 0x6cf07 + Option Atom = 0x6e106 + Output Atom = 0x51106 + P Atom = 0xc01 + Param Atom = 0xc05 + Pattern Atom = 0x6607 + Picture Atom = 0x7b07 + Ping Atom = 0xef04 + Placeholder Atom = 0x1310b + Plaintext Atom = 0x1b209 + Playsinline Atom = 0x1400b + Poster Atom = 0x64706 + Pre Atom = 0x46a03 + Preload Atom = 0x47a07 + Progress Atom = 0x5a908 + Prompt Atom = 0x52a06 + Public Atom = 0x57606 + Q Atom = 0xcf01 + Radiogroup Atom = 0x30a + Rb Atom = 0x3a02 + Readonly Atom = 0x35108 + Referrerpolicy Atom = 0x3cb0e + Rel Atom = 0x47b03 + Required Atom = 0x23f08 + Reversed Atom = 0x8008 + Rows Atom = 0x9c04 + Rowspan Atom = 0x9c07 + Rp Atom = 0x22f02 + Rt Atom = 0x19a02 + Rtc Atom = 0x19a03 + Ruby Atom = 0xfb04 + S Atom = 0x2501 + Samp Atom = 0x7804 + Sandbox Atom = 0x12907 + Scope Atom = 0x67305 + Scoped Atom = 0x67306 + Script Atom = 0x2c406 + Seamless Atom = 0x36b08 + Search Atom = 0x55c06 + Section Atom = 0x1e507 + Select Atom = 0x63106 + Selected Atom = 0x63108 + Shape Atom = 0x1f505 + Size Atom = 0x5e504 + Sizes Atom = 0x5e505 + Slot Atom = 0x20504 + Small Atom = 0x32605 + Sortable Atom = 0x64f08 + Sorted Atom = 0x37206 + Source Atom = 0x43106 + Spacer Atom = 0x46e06 + Span Atom = 0x9f04 + Spellcheck Atom = 0x5b00a + Src Atom = 0x5e903 + Srcdoc Atom = 0x5e906 + Srclang Atom = 0x6f707 + Srcset Atom = 0x6fe06 + Start Atom = 0x3f405 + Step Atom = 0x57304 + Strike Atom = 0xd206 + Strong Atom = 0x6db06 + Style Atom = 0x70405 + Sub Atom = 0x66b03 + Summary Atom = 0x70907 + Sup Atom = 0x71003 + Svg Atom = 0x71303 + System Atom = 0x71606 + Tabindex Atom = 0x4b208 + Table Atom = 0x58505 + Target Atom = 0x2b706 + Tbody Atom = 0x2705 + Td Atom = 0x9202 + Template Atom = 0x71908 + Textarea Atom = 0x34c08 + Tfoot Atom = 0xf505 + Th Atom = 0x15602 + Thead Atom = 0x31f05 + Time Atom = 0x4204 + Title Atom = 0x11005 + Tr Atom = 0xcc02 + Track Atom = 0x1ba05 + Translate Atom = 0x20809 + Tt Atom = 0x6802 + Type Atom = 0xd904 + Typemustmatch Atom = 0x2830d + U Atom = 0xb01 + Ul Atom = 0xa702 + Updateviacache Atom = 0x460e + Usemap Atom = 0x58e06 + Value Atom = 0x1505 + Var Atom = 0x16d03 + Video Atom = 0x2e005 + Wbr Atom = 0x56c03 + Width Atom = 0x63e05 + Workertype Atom = 0x7210a + Wrap Atom = 0x72b04 + Xmp Atom = 0x12f03 +) + +const hash0 = 0x84f70e16 + +const maxAtomLen = 25 + +var table = [1 << 9]Atom{ + 0x1: 0x3ff08, // dropzone + 0x2: 0x3b08, // basefont + 0x3: 0x23209, // integrity + 0x4: 0x43106, // source + 0x5: 0x2c09, // accesskey + 0x6: 0x1a06, // accept + 0x7: 0x6c807, // onwheel + 0xb: 0x47407, // onkeyup + 0xc: 0x32007, // headers + 0xd: 0x67306, // scoped + 0xe: 0x67909, // onsuspend + 0xf: 0x8908, // noframes + 0x10: 0x1fa0b, // crossorigin + 0x11: 0x2e407, // onclick + 0x12: 0x3f405, // start + 0x13: 0x37a0b, // contextmenu + 0x14: 0x5e903, // src + 0x15: 0x1c404, // cols + 0x16: 0xbb06, // dialog + 0x17: 0x47a07, // preload + 0x18: 0x3c707, // itemref + 0x1b: 0x2f105, // image + 0x1d: 0x4ba09, // onloadend + 0x1e: 0x45d08, // download + 0x1f: 0x46a03, // pre + 0x23: 0x2970a, // formmethod + 0x24: 0x71303, // svg + 0x25: 0xcf01, // q + 0x26: 0x64002, // dt + 0x27: 0x1de08, // controls + 0x2a: 0x2804, // body + 0x2b: 0xd206, // strike + 0x2c: 0x3910b, // oncuechange + 0x2d: 0x4c30b, // onloadstart + 0x2e: 0x2fe07, // isindex + 0x2f: 0xb202, // li + 0x30: 0x1400b, // playsinline + 0x31: 0x34102, // mi + 0x32: 0x30806, // applet + 0x33: 0x4ce09, // onmessage + 0x35: 0x13702, // ol + 0x36: 0x1a304, // open + 0x39: 0x14d09, // oncanplay + 0x3a: 0x6bf09, // onwaiting + 0x3b: 0x11908, // oncancel + 0x3c: 0x6a908, // onunload + 0x3e: 0x53c09, // onoffline + 0x3f: 0x1a0e, // accept-charset + 0x40: 0x32004, // head + 0x42: 0x3ab09, // ondragend + 0x43: 0x1310b, // placeholder + 0x44: 0x2b30a, // formtarget + 0x45: 0x2540d, // foreignobject + 0x47: 0x400c, // ontimeupdate + 0x48: 0xdd0e, // allowusermedia + 0x4a: 0x69c0d, // onbeforeprint + 0x4b: 0x5604, // html + 0x4c: 0x9f04, // span + 0x4d: 0x64206, // hgroup + 0x4e: 0x16408, // disabled + 0x4f: 0x4204, // time + 0x51: 0x42b07, // onfocus + 0x53: 0xb00a, // malignmark + 0x55: 0x4650a, // onkeypress + 0x56: 0x55805, // class + 0x57: 0x1ab08, // colgroup + 0x58: 0x33709, // maxlength + 0x59: 0x5a908, // progress + 0x5b: 0x70405, // style + 0x5c: 0x2a10e, // formnovalidate + 0x5e: 0x38b06, // oncopy + 0x60: 0x26104, // form + 0x61: 0xf606, // footer + 0x64: 0x30a, // radiogroup + 0x66: 0xfb04, // ruby + 0x67: 0x4ff0b, // onmousemove + 0x68: 0x19d08, // itemprop + 0x69: 0x2d70a, // http-equiv + 0x6a: 0x15602, // th + 0x6c: 0x6e02, // em + 0x6d: 0x38108, // menuitem + 0x6e: 0x63106, // select + 0x6f: 0x48110, // onlanguagechange + 0x70: 0x31f05, // thead + 0x71: 0x15c02, // h1 + 0x72: 0x5e906, // srcdoc + 0x75: 0x9604, // name + 0x76: 0x19106, // button + 0x77: 0x55504, // desc + 0x78: 0x17704, // kind + 0x79: 0x1bf05, // color + 0x7c: 0x58e06, // usemap + 0x7d: 0x30e08, // itemtype + 0x7f: 0x6d508, // manifest + 0x81: 0x5300c, // onmousewheel + 0x82: 0x4dc0b, // onmousedown + 0x84: 0xc05, // param + 0x85: 0x2e005, // video + 0x86: 0x4910c, // onloadeddata + 0x87: 0x6f107, // address + 0x8c: 0xef04, // ping + 0x8d: 0x24703, // for + 0x8f: 0x62f08, // onselect + 0x90: 0x30703, // map + 0x92: 0xc01, // p + 0x93: 0x8008, // reversed + 0x94: 0x54d0a, // onpagehide + 0x95: 0x3206, // keygen + 0x96: 0x34109, // minlength + 0x97: 0x3e40a, // ondragover + 0x98: 0x42407, // onerror + 0x9a: 0x2107, // charset + 0x9b: 0x29b06, // method + 0x9c: 0x101, // b + 0x9d: 0x68208, // ontoggle + 0x9e: 0x2bd06, // hidden + 0xa0: 0x3f607, // article + 0xa2: 0x63906, // onshow + 0xa3: 0x64d06, // onsort + 0xa5: 0x57b0f, // contenteditable + 0xa6: 0x66908, // onsubmit + 0xa8: 0x44f09, // oninvalid + 0xaa: 0x202, // br + 0xab: 0x10902, // id + 0xac: 0x5d04, // loop + 0xad: 0x5630a, // onpageshow + 0xb0: 0x2cf04, // href + 0xb2: 0x2210a, // figcaption + 0xb3: 0x2690e, // onautocomplete + 0xb4: 0x49106, // onload + 0xb6: 0x9c04, // rows + 0xb7: 0x1a605, // nonce + 0xb8: 0x68a14, // onunhandledrejection + 0xbb: 0x21306, // center + 0xbc: 0x59406, // onplay + 0xbd: 0x33f02, // h5 + 0xbe: 0x49d07, // listing + 0xbf: 0x57606, // public + 0xc2: 0x23b06, // figure + 0xc3: 0x57a04, // icon + 0xc4: 0x1ab03, // col + 0xc5: 0x47b03, // rel + 0xc6: 0xe605, // media + 0xc7: 0x12109, // autofocus + 0xc8: 0x19a02, // rt + 0xca: 0x2d304, // lang + 0xcc: 0x49908, // datalist + 0xce: 0x2eb06, // iframe + 0xcf: 0x36105, // muted + 0xd0: 0x6140a, // onauxclick + 0xd2: 0x3c02, // as + 0xd6: 0x3fd06, // ondrop + 0xd7: 0x1c90a, // annotation + 0xd8: 0x21908, // fieldset + 0xdb: 0x2cf08, // hreflang + 0xdc: 0x4e70c, // onmouseenter + 0xdd: 0x2a402, // mn + 0xde: 0xe60a, // mediagroup + 0xdf: 0x9805, // meter + 0xe0: 0x56c03, // wbr + 0xe2: 0x63e05, // width + 0xe3: 0x2290c, // onafterprint + 0xe4: 0x30505, // ismap + 0xe5: 0x1505, // value + 0xe7: 0x1303, // nav + 0xe8: 0x54508, // ononline + 0xe9: 0xb604, // mark + 0xea: 0xc303, // low + 0xeb: 0x3ee0b, // ondragstart + 0xef: 0x12f03, // xmp + 0xf0: 0x22407, // caption + 0xf1: 0xd904, // type + 0xf2: 0x70907, // summary + 0xf3: 0x6802, // tt + 0xf4: 0x20809, // translate + 0xf5: 0x1870a, // blockquote + 0xf8: 0x15702, // hr + 0xfa: 0x2705, // tbody + 0xfc: 0x7b07, // picture + 0xfd: 0x5206, // height + 0xfe: 0x19c04, // cite + 0xff: 0x2501, // s + 0x101: 0xff05, // async + 0x102: 0x56f07, // onpaste + 0x103: 0x19507, // onabort + 0x104: 0x2b706, // target + 0x105: 0x14b03, // bdo + 0x106: 0x1f006, // coords + 0x107: 0x5e108, // onresize + 0x108: 0x71908, // template + 0x10a: 0x3a02, // rb + 0x10b: 0x2a50a, // novalidate + 0x10c: 0x460e, // updateviacache + 0x10d: 0x71003, // sup + 0x10e: 0x6c07, // noembed + 0x10f: 0x16b03, // div + 0x110: 0x6f707, // srclang + 0x111: 0x17a09, // draggable + 0x112: 0x67305, // scope + 0x113: 0x5905, // label + 0x114: 0x22f02, // rp + 0x115: 0x23f08, // required + 0x116: 0x3780d, // oncontextmenu + 0x117: 0x5e504, // size + 0x118: 0x5b00a, // spellcheck + 0x119: 0x3f04, // font + 0x11a: 0x9c07, // rowspan + 0x11b: 0x10a07, // default + 0x11d: 0x44307, // oninput + 0x11e: 0x38506, // itemid + 0x11f: 0x5ee04, // code + 0x120: 0xaa07, // acronym + 0x121: 0x3b04, // base + 0x125: 0x2470d, // foreignObject + 0x126: 0x2ca04, // high + 0x127: 0x3cb0e, // referrerpolicy + 0x128: 0x33703, // max + 0x129: 0x59d0a, // onpopstate + 0x12a: 0x2fc02, // h4 + 0x12b: 0x4ac04, // meta + 0x12c: 0x17305, // blink + 0x12e: 0x5f508, // onscroll + 0x12f: 0x59409, // onplaying + 0x130: 0xc113, // allowpaymentrequest + 0x131: 0x19a03, // rtc + 0x132: 0x72b04, // wrap + 0x134: 0x8b08, // frameset + 0x135: 0x32605, // small + 0x137: 0x32006, // header + 0x138: 0x40409, // onemptied + 0x139: 0x34902, // h6 + 0x13a: 0x35908, // multiple + 0x13c: 0x52a06, // prompt + 0x13f: 0x28e09, // challenge + 0x141: 0x4370c, // onhashchange + 0x142: 0x57b07, // content + 0x143: 0x1c90e, // annotation-xml + 0x144: 0x36607, // onclose + 0x145: 0x14d10, // oncanplaythrough + 0x148: 0x5170b, // onmouseover + 0x149: 0x64f08, // sortable + 0x14a: 0xa402, // mo + 0x14b: 0x2cd02, // h3 + 0x14c: 0x2c406, // script + 0x14d: 0x41d07, // onended + 0x14f: 0x64706, // poster + 0x150: 0x7210a, // workertype + 0x153: 0x1f505, // shape + 0x154: 0x4, // abbr + 0x155: 0x1, // a + 0x156: 0x2bf02, // dd + 0x157: 0x71606, // system + 0x158: 0x4ce0e, // onmessageerror + 0x159: 0x36b08, // seamless + 0x15a: 0x2610a, // formaction + 0x15b: 0x6e106, // option + 0x15c: 0x31d04, // math + 0x15d: 0x62609, // onseeking + 0x15e: 0x39c05, // oncut + 0x15f: 0x44c03, // del + 0x160: 0x11005, // title + 0x161: 0x11505, // audio + 0x162: 0x63108, // selected + 0x165: 0x3b40b, // ondragenter + 0x166: 0x46e06, // spacer + 0x167: 0x4a410, // onloadedmetadata + 0x168: 0x44505, // input + 0x16a: 0x58505, // table + 0x16b: 0x41508, // onchange + 0x16e: 0x5f005, // defer + 0x171: 0x50a0a, // onmouseout + 0x172: 0x20504, // slot + 0x175: 0x3704, // nobr + 0x177: 0x1d707, // command + 0x17a: 0x7207, // details + 0x17b: 0x38104, // menu + 0x17c: 0xb903, // kbd + 0x17d: 0x57304, // step + 0x17e: 0x20303, // ins + 0x17f: 0x13c08, // autoplay + 0x182: 0x34103, // min + 0x183: 0x17404, // link + 0x185: 0x40d10, // ondurationchange + 0x186: 0x9202, // td + 0x187: 0x8b05, // frame + 0x18a: 0x2ab08, // datetime + 0x18b: 0x44509, // inputmode + 0x18c: 0x35108, // readonly + 0x18d: 0x21104, // face + 0x18f: 0x5e505, // sizes + 0x191: 0x4b208, // tabindex + 0x192: 0x6db06, // strong + 0x193: 0xba03, // bdi + 0x194: 0x6fe06, // srcset + 0x196: 0x67202, // ms + 0x197: 0x5b507, // checked + 0x198: 0xb105, // align + 0x199: 0x1e507, // section + 0x19b: 0x6e05, // embed + 0x19d: 0x15e07, // bgsound + 0x1a2: 0x49d04, // list + 0x1a3: 0x61e08, // onseeked + 0x1a4: 0x66009, // onstorage + 0x1a5: 0x2f603, // img + 0x1a6: 0xf505, // tfoot + 0x1a9: 0x26913, // onautocompleteerror + 0x1aa: 0x5fd19, // onsecuritypolicyviolation + 0x1ad: 0x9303, // dir + 0x1ae: 0x9307, // dirname + 0x1b0: 0x5a70a, // onprogress + 0x1b2: 0x65709, // onstalled + 0x1b5: 0x66f09, // itemscope + 0x1b6: 0x49904, // data + 0x1b7: 0x3d90b, // ondragleave + 0x1b8: 0x56102, // h2 + 0x1b9: 0x2f706, // mglyph + 0x1ba: 0x16502, // is + 0x1bb: 0x6e50e, // onbeforeunload + 0x1bc: 0x2830d, // typemustmatch + 0x1bd: 0x3ab06, // ondrag + 0x1be: 0x5da07, // onreset + 0x1c0: 0x51106, // output + 0x1c1: 0x12907, // sandbox + 0x1c2: 0x1b209, // plaintext + 0x1c4: 0x34c08, // textarea + 0x1c7: 0xd607, // keytype + 0x1c8: 0x34b05, // mtext + 0x1c9: 0x6b10e, // onvolumechange + 0x1ca: 0x1ea06, // onblur + 0x1cb: 0x58a07, // onpause + 0x1cd: 0x5bc0c, // onratechange + 0x1ce: 0x10705, // aside + 0x1cf: 0x6cf07, // optimum + 0x1d1: 0x45809, // onkeydown + 0x1d2: 0x1c407, // colspan + 0x1d3: 0x1004, // main + 0x1d4: 0x66b03, // sub + 0x1d5: 0x25b06, // object + 0x1d6: 0x55c06, // search + 0x1d7: 0x37206, // sorted + 0x1d8: 0x17003, // big + 0x1d9: 0xb01, // u + 0x1db: 0x26b0c, // autocomplete + 0x1dc: 0xcc02, // tr + 0x1dd: 0xf303, // alt + 0x1df: 0x7804, // samp + 0x1e0: 0x5c812, // onrejectionhandled + 0x1e1: 0x4f30c, // onmouseleave + 0x1e2: 0x28007, // enctype + 0x1e3: 0xa208, // nomodule + 0x1e5: 0x3280f, // allowfullscreen + 0x1e6: 0x5f08, // optgroup + 0x1e8: 0x27c0b, // formenctype + 0x1e9: 0x18106, // legend + 0x1ea: 0x10306, // canvas + 0x1eb: 0x6607, // pattern + 0x1ec: 0x2c208, // noscript + 0x1ed: 0x601, // i + 0x1ee: 0x5d602, // dl + 0x1ef: 0xa702, // ul + 0x1f2: 0x52209, // onmouseup + 0x1f4: 0x1ba05, // track + 0x1f7: 0x3a10a, // ondblclick + 0x1f8: 0x3bf0a, // ondragexit + 0x1fa: 0x8703, // dfn + 0x1fc: 0x26506, // action + 0x1fd: 0x35004, // area + 0x1fe: 0x31607, // marquee + 0x1ff: 0x16d03, // var +} + +const atomText = "abbradiogrouparamainavalueaccept-charsetbodyaccesskeygenobrb" + + "asefontimeupdateviacacheightmlabelooptgroupatternoembedetail" + + "sampictureversedfnoframesetdirnameterowspanomoduleacronymali" + + "gnmarkbdialogallowpaymentrequestrikeytypeallowusermediagroup" + + "ingaltfooterubyasyncanvasidefaultitleaudioncancelautofocusan" + + "dboxmplaceholderautoplaysinlinebdoncanplaythrough1bgsoundisa" + + "bledivarbigblinkindraggablegendblockquotebuttonabortcitempro" + + "penoncecolgrouplaintextrackcolorcolspannotation-xmlcommandco" + + "ntrolsectionblurcoordshapecrossoriginslotranslatefacenterfie" + + "ldsetfigcaptionafterprintegrityfigurequiredforeignObjectfore" + + "ignobjectformactionautocompleteerrorformenctypemustmatchalle" + + "ngeformmethodformnovalidatetimeformtargethiddenoscripthigh3h" + + "reflanghttp-equivideonclickiframeimageimglyph4isindexismappl" + + "etitemtypemarqueematheadersmallowfullscreenmaxlength5minleng" + + "th6mtextareadonlymultiplemutedoncloseamlessortedoncontextmen" + + "uitemidoncopyoncuechangeoncutondblclickondragendondragentero" + + "ndragexitemreferrerpolicyondragleaveondragoverondragstarticl" + + "eondropzonemptiedondurationchangeonendedonerroronfocusourceo" + + "nhashchangeoninputmodeloninvalidonkeydownloadonkeypresspacer" + + "onkeyupreloadonlanguagechangeonloadeddatalistingonloadedmeta" + + "databindexonloadendonloadstartonmessageerroronmousedownonmou" + + "seenteronmouseleaveonmousemoveonmouseoutputonmouseoveronmous" + + "eupromptonmousewheelonofflineononlineonpagehidesclassearch2o" + + "npageshowbronpastepublicontenteditableonpausemaponplayingonp" + + "opstateonprogresspellcheckedonratechangeonrejectionhandledon" + + "resetonresizesrcdocodeferonscrollonsecuritypolicyviolationau" + + "xclickonseekedonseekingonselectedonshowidthgrouposteronsorta" + + "bleonstalledonstorageonsubmitemscopedonsuspendontoggleonunha" + + "ndledrejectionbeforeprintonunloadonvolumechangeonwaitingonwh" + + "eeloptimumanifestrongoptionbeforeunloaddressrclangsrcsetstyl" + + "esummarysupsvgsystemplateworkertypewrap" diff --git a/tests/vendor/golang.org/x/net/html/charset/charset.go b/tests/vendor/golang.org/x/net/html/charset/charset.go new file mode 100644 index 000000000..13bed1599 --- /dev/null +++ b/tests/vendor/golang.org/x/net/html/charset/charset.go @@ -0,0 +1,257 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package charset provides common text encodings for HTML documents. +// +// The mapping from encoding labels to encodings is defined at +// https://encoding.spec.whatwg.org/. +package charset // import "golang.org/x/net/html/charset" + +import ( + "bytes" + "fmt" + "io" + "mime" + "strings" + "unicode/utf8" + + "golang.org/x/net/html" + "golang.org/x/text/encoding" + "golang.org/x/text/encoding/charmap" + "golang.org/x/text/encoding/htmlindex" + "golang.org/x/text/transform" +) + +// Lookup returns the encoding with the specified label, and its canonical +// name. It returns nil and the empty string if label is not one of the +// standard encodings for HTML. Matching is case-insensitive and ignores +// leading and trailing whitespace. Encoders will use HTML escape sequences for +// runes that are not supported by the character set. +func Lookup(label string) (e encoding.Encoding, name string) { + e, err := htmlindex.Get(label) + if err != nil { + return nil, "" + } + name, _ = htmlindex.Name(e) + return &htmlEncoding{e}, name +} + +type htmlEncoding struct{ encoding.Encoding } + +func (h *htmlEncoding) NewEncoder() *encoding.Encoder { + // HTML requires a non-terminating legacy encoder. We use HTML escapes to + // substitute unsupported code points. + return encoding.HTMLEscapeUnsupported(h.Encoding.NewEncoder()) +} + +// DetermineEncoding determines the encoding of an HTML document by examining +// up to the first 1024 bytes of content and the declared Content-Type. +// +// See http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#determining-the-character-encoding +func DetermineEncoding(content []byte, contentType string) (e encoding.Encoding, name string, certain bool) { + if len(content) > 1024 { + content = content[:1024] + } + + for _, b := range boms { + if bytes.HasPrefix(content, b.bom) { + e, name = Lookup(b.enc) + return e, name, true + } + } + + if _, params, err := mime.ParseMediaType(contentType); err == nil { + if cs, ok := params["charset"]; ok { + if e, name = Lookup(cs); e != nil { + return e, name, true + } + } + } + + if len(content) > 0 { + e, name = prescan(content) + if e != nil { + return e, name, false + } + } + + // Try to detect UTF-8. + // First eliminate any partial rune at the end. + for i := len(content) - 1; i >= 0 && i > len(content)-4; i-- { + b := content[i] + if b < 0x80 { + break + } + if utf8.RuneStart(b) { + content = content[:i] + break + } + } + hasHighBit := false + for _, c := range content { + if c >= 0x80 { + hasHighBit = true + break + } + } + if hasHighBit && utf8.Valid(content) { + return encoding.Nop, "utf-8", false + } + + // TODO: change default depending on user's locale? + return charmap.Windows1252, "windows-1252", false +} + +// NewReader returns an io.Reader that converts the content of r to UTF-8. +// It calls DetermineEncoding to find out what r's encoding is. +func NewReader(r io.Reader, contentType string) (io.Reader, error) { + preview := make([]byte, 1024) + n, err := io.ReadFull(r, preview) + switch { + case err == io.ErrUnexpectedEOF: + preview = preview[:n] + r = bytes.NewReader(preview) + case err != nil: + return nil, err + default: + r = io.MultiReader(bytes.NewReader(preview), r) + } + + if e, _, _ := DetermineEncoding(preview, contentType); e != encoding.Nop { + r = transform.NewReader(r, e.NewDecoder()) + } + return r, nil +} + +// NewReaderLabel returns a reader that converts from the specified charset to +// UTF-8. It uses Lookup to find the encoding that corresponds to label, and +// returns an error if Lookup returns nil. It is suitable for use as +// encoding/xml.Decoder's CharsetReader function. +func NewReaderLabel(label string, input io.Reader) (io.Reader, error) { + e, _ := Lookup(label) + if e == nil { + return nil, fmt.Errorf("unsupported charset: %q", label) + } + return transform.NewReader(input, e.NewDecoder()), nil +} + +func prescan(content []byte) (e encoding.Encoding, name string) { + z := html.NewTokenizer(bytes.NewReader(content)) + for { + switch z.Next() { + case html.ErrorToken: + return nil, "" + + case html.StartTagToken, html.SelfClosingTagToken: + tagName, hasAttr := z.TagName() + if !bytes.Equal(tagName, []byte("meta")) { + continue + } + attrList := make(map[string]bool) + gotPragma := false + + const ( + dontKnow = iota + doNeedPragma + doNotNeedPragma + ) + needPragma := dontKnow + + name = "" + e = nil + for hasAttr { + var key, val []byte + key, val, hasAttr = z.TagAttr() + ks := string(key) + if attrList[ks] { + continue + } + attrList[ks] = true + for i, c := range val { + if 'A' <= c && c <= 'Z' { + val[i] = c + 0x20 + } + } + + switch ks { + case "http-equiv": + if bytes.Equal(val, []byte("content-type")) { + gotPragma = true + } + + case "content": + if e == nil { + name = fromMetaElement(string(val)) + if name != "" { + e, name = Lookup(name) + if e != nil { + needPragma = doNeedPragma + } + } + } + + case "charset": + e, name = Lookup(string(val)) + needPragma = doNotNeedPragma + } + } + + if needPragma == dontKnow || needPragma == doNeedPragma && !gotPragma { + continue + } + + if strings.HasPrefix(name, "utf-16") { + name = "utf-8" + e = encoding.Nop + } + + if e != nil { + return e, name + } + } + } +} + +func fromMetaElement(s string) string { + for s != "" { + csLoc := strings.Index(s, "charset") + if csLoc == -1 { + return "" + } + s = s[csLoc+len("charset"):] + s = strings.TrimLeft(s, " \t\n\f\r") + if !strings.HasPrefix(s, "=") { + continue + } + s = s[1:] + s = strings.TrimLeft(s, " \t\n\f\r") + if s == "" { + return "" + } + if q := s[0]; q == '"' || q == '\'' { + s = s[1:] + closeQuote := strings.IndexRune(s, rune(q)) + if closeQuote == -1 { + return "" + } + return s[:closeQuote] + } + + end := strings.IndexAny(s, "; \t\n\f\r") + if end == -1 { + end = len(s) + } + return s[:end] + } + return "" +} + +var boms = []struct { + bom []byte + enc string +}{ + {[]byte{0xfe, 0xff}, "utf-16be"}, + {[]byte{0xff, 0xfe}, "utf-16le"}, + {[]byte{0xef, 0xbb, 0xbf}, "utf-8"}, +} diff --git a/tests/vendor/golang.org/x/net/html/const.go b/tests/vendor/golang.org/x/net/html/const.go new file mode 100644 index 000000000..ff7acf2d5 --- /dev/null +++ b/tests/vendor/golang.org/x/net/html/const.go @@ -0,0 +1,111 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package html + +// Section 12.2.4.2 of the HTML5 specification says "The following elements +// have varying levels of special parsing rules". +// https://html.spec.whatwg.org/multipage/syntax.html#the-stack-of-open-elements +var isSpecialElementMap = map[string]bool{ + "address": true, + "applet": true, + "area": true, + "article": true, + "aside": true, + "base": true, + "basefont": true, + "bgsound": true, + "blockquote": true, + "body": true, + "br": true, + "button": true, + "caption": true, + "center": true, + "col": true, + "colgroup": true, + "dd": true, + "details": true, + "dir": true, + "div": true, + "dl": true, + "dt": true, + "embed": true, + "fieldset": true, + "figcaption": true, + "figure": true, + "footer": true, + "form": true, + "frame": true, + "frameset": true, + "h1": true, + "h2": true, + "h3": true, + "h4": true, + "h5": true, + "h6": true, + "head": true, + "header": true, + "hgroup": true, + "hr": true, + "html": true, + "iframe": true, + "img": true, + "input": true, + "keygen": true, // "keygen" has been removed from the spec, but are kept here for backwards compatibility. + "li": true, + "link": true, + "listing": true, + "main": true, + "marquee": true, + "menu": true, + "meta": true, + "nav": true, + "noembed": true, + "noframes": true, + "noscript": true, + "object": true, + "ol": true, + "p": true, + "param": true, + "plaintext": true, + "pre": true, + "script": true, + "section": true, + "select": true, + "source": true, + "style": true, + "summary": true, + "table": true, + "tbody": true, + "td": true, + "template": true, + "textarea": true, + "tfoot": true, + "th": true, + "thead": true, + "title": true, + "tr": true, + "track": true, + "ul": true, + "wbr": true, + "xmp": true, +} + +func isSpecialElement(element *Node) bool { + switch element.Namespace { + case "", "html": + return isSpecialElementMap[element.Data] + case "math": + switch element.Data { + case "mi", "mo", "mn", "ms", "mtext", "annotation-xml": + return true + } + case "svg": + switch element.Data { + case "foreignObject", "desc", "title": + return true + } + } + return false +} diff --git a/tests/vendor/golang.org/x/net/html/doc.go b/tests/vendor/golang.org/x/net/html/doc.go new file mode 100644 index 000000000..885c4c593 --- /dev/null +++ b/tests/vendor/golang.org/x/net/html/doc.go @@ -0,0 +1,122 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +/* +Package html implements an HTML5-compliant tokenizer and parser. + +Tokenization is done by creating a Tokenizer for an io.Reader r. It is the +caller's responsibility to ensure that r provides UTF-8 encoded HTML. + + z := html.NewTokenizer(r) + +Given a Tokenizer z, the HTML is tokenized by repeatedly calling z.Next(), +which parses the next token and returns its type, or an error: + + for { + tt := z.Next() + if tt == html.ErrorToken { + // ... + return ... + } + // Process the current token. + } + +There are two APIs for retrieving the current token. The high-level API is to +call Token; the low-level API is to call Text or TagName / TagAttr. Both APIs +allow optionally calling Raw after Next but before Token, Text, TagName, or +TagAttr. In EBNF notation, the valid call sequence per token is: + + Next {Raw} [ Token | Text | TagName {TagAttr} ] + +Token returns an independent data structure that completely describes a token. +Entities (such as "<") are unescaped, tag names and attribute keys are +lower-cased, and attributes are collected into a []Attribute. For example: + + for { + if z.Next() == html.ErrorToken { + // Returning io.EOF indicates success. + return z.Err() + } + emitToken(z.Token()) + } + +The low-level API performs fewer allocations and copies, but the contents of +the []byte values returned by Text, TagName and TagAttr may change on the next +call to Next. For example, to extract an HTML page's anchor text: + + depth := 0 + for { + tt := z.Next() + switch tt { + case html.ErrorToken: + return z.Err() + case html.TextToken: + if depth > 0 { + // emitBytes should copy the []byte it receives, + // if it doesn't process it immediately. + emitBytes(z.Text()) + } + case html.StartTagToken, html.EndTagToken: + tn, _ := z.TagName() + if len(tn) == 1 && tn[0] == 'a' { + if tt == html.StartTagToken { + depth++ + } else { + depth-- + } + } + } + } + +Parsing is done by calling Parse with an io.Reader, which returns the root of +the parse tree (the document element) as a *Node. It is the caller's +responsibility to ensure that the Reader provides UTF-8 encoded HTML. For +example, to process each anchor node in depth-first order: + + doc, err := html.Parse(r) + if err != nil { + // ... + } + for n := range doc.Descendants() { + if n.Type == html.ElementNode && n.Data == "a" { + // Do something with n... + } + } + +The relevant specifications include: +https://html.spec.whatwg.org/multipage/syntax.html and +https://html.spec.whatwg.org/multipage/syntax.html#tokenization + +# Security Considerations + +Care should be taken when parsing and interpreting HTML, whether full documents +or fragments, within the framework of the HTML specification, especially with +regard to untrusted inputs. + +This package provides both a tokenizer and a parser, which implement the +tokenization, and tokenization and tree construction stages of the WHATWG HTML +parsing specification respectively. While the tokenizer parses and normalizes +individual HTML tokens, only the parser constructs the DOM tree from the +tokenized HTML, as described in the tree construction stage of the +specification, dynamically modifying or extending the document's DOM tree. + +If your use case requires semantically well-formed HTML documents, as defined by +the WHATWG specification, the parser should be used rather than the tokenizer. + +In security contexts, if trust decisions are being made using the tokenized or +parsed content, the input must be re-serialized (for instance by using Render or +Token.String) in order for those trust decisions to hold, as the process of +tokenization or parsing may alter the content. +*/ +package html // import "golang.org/x/net/html" + +// The tokenization algorithm implemented by this package is not a line-by-line +// transliteration of the relatively verbose state-machine in the WHATWG +// specification. A more direct approach is used instead, where the program +// counter implies the state, such as whether it is tokenizing a tag or a text +// node. Specification compliance is verified by checking expected and actual +// outputs over a test suite rather than aiming for algorithmic fidelity. + +// TODO(nigeltao): Does a DOM API belong in this package or a separate one? +// TODO(nigeltao): How does parsing interact with a JavaScript engine? diff --git a/tests/vendor/golang.org/x/net/html/doctype.go b/tests/vendor/golang.org/x/net/html/doctype.go new file mode 100644 index 000000000..bca3ae9a0 --- /dev/null +++ b/tests/vendor/golang.org/x/net/html/doctype.go @@ -0,0 +1,156 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package html + +import ( + "strings" +) + +// parseDoctype parses the data from a DoctypeToken into a name, +// public identifier, and system identifier. It returns a Node whose Type +// is DoctypeNode, whose Data is the name, and which has attributes +// named "system" and "public" for the two identifiers if they were present. +// quirks is whether the document should be parsed in "quirks mode". +func parseDoctype(s string) (n *Node, quirks bool) { + n = &Node{Type: DoctypeNode} + + // Find the name. + space := strings.IndexAny(s, whitespace) + if space == -1 { + space = len(s) + } + n.Data = s[:space] + // The comparison to "html" is case-sensitive. + if n.Data != "html" { + quirks = true + } + n.Data = strings.ToLower(n.Data) + s = strings.TrimLeft(s[space:], whitespace) + + if len(s) < 6 { + // It can't start with "PUBLIC" or "SYSTEM". + // Ignore the rest of the string. + return n, quirks || s != "" + } + + key := strings.ToLower(s[:6]) + s = s[6:] + for key == "public" || key == "system" { + s = strings.TrimLeft(s, whitespace) + if s == "" { + break + } + quote := s[0] + if quote != '"' && quote != '\'' { + break + } + s = s[1:] + q := strings.IndexRune(s, rune(quote)) + var id string + if q == -1 { + id = s + s = "" + } else { + id = s[:q] + s = s[q+1:] + } + n.Attr = append(n.Attr, Attribute{Key: key, Val: id}) + if key == "public" { + key = "system" + } else { + key = "" + } + } + + if key != "" || s != "" { + quirks = true + } else if len(n.Attr) > 0 { + if n.Attr[0].Key == "public" { + public := strings.ToLower(n.Attr[0].Val) + switch public { + case "-//w3o//dtd w3 html strict 3.0//en//", "-/w3d/dtd html 4.0 transitional/en", "html": + quirks = true + default: + for _, q := range quirkyIDs { + if strings.HasPrefix(public, q) { + quirks = true + break + } + } + } + // The following two public IDs only cause quirks mode if there is no system ID. + if len(n.Attr) == 1 && (strings.HasPrefix(public, "-//w3c//dtd html 4.01 frameset//") || + strings.HasPrefix(public, "-//w3c//dtd html 4.01 transitional//")) { + quirks = true + } + } + if lastAttr := n.Attr[len(n.Attr)-1]; lastAttr.Key == "system" && + strings.EqualFold(lastAttr.Val, "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd") { + quirks = true + } + } + + return n, quirks +} + +// quirkyIDs is a list of public doctype identifiers that cause a document +// to be interpreted in quirks mode. The identifiers should be in lower case. +var quirkyIDs = []string{ + "+//silmaril//dtd html pro v0r11 19970101//", + "-//advasoft ltd//dtd html 3.0 aswedit + extensions//", + "-//as//dtd html 3.0 aswedit + extensions//", + "-//ietf//dtd html 2.0 level 1//", + "-//ietf//dtd html 2.0 level 2//", + "-//ietf//dtd html 2.0 strict level 1//", + "-//ietf//dtd html 2.0 strict level 2//", + "-//ietf//dtd html 2.0 strict//", + "-//ietf//dtd html 2.0//", + "-//ietf//dtd html 2.1e//", + "-//ietf//dtd html 3.0//", + "-//ietf//dtd html 3.2 final//", + "-//ietf//dtd html 3.2//", + "-//ietf//dtd html 3//", + "-//ietf//dtd html level 0//", + "-//ietf//dtd html level 1//", + "-//ietf//dtd html level 2//", + "-//ietf//dtd html level 3//", + "-//ietf//dtd html strict level 0//", + "-//ietf//dtd html strict level 1//", + "-//ietf//dtd html strict level 2//", + "-//ietf//dtd html strict level 3//", + "-//ietf//dtd html strict//", + "-//ietf//dtd html//", + "-//metrius//dtd metrius presentational//", + "-//microsoft//dtd internet explorer 2.0 html strict//", + "-//microsoft//dtd internet explorer 2.0 html//", + "-//microsoft//dtd internet explorer 2.0 tables//", + "-//microsoft//dtd internet explorer 3.0 html strict//", + "-//microsoft//dtd internet explorer 3.0 html//", + "-//microsoft//dtd internet explorer 3.0 tables//", + "-//netscape comm. corp.//dtd html//", + "-//netscape comm. corp.//dtd strict html//", + "-//o'reilly and associates//dtd html 2.0//", + "-//o'reilly and associates//dtd html extended 1.0//", + "-//o'reilly and associates//dtd html extended relaxed 1.0//", + "-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//", + "-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//", + "-//spyglass//dtd html 2.0 extended//", + "-//sq//dtd html 2.0 hotmetal + extensions//", + "-//sun microsystems corp.//dtd hotjava html//", + "-//sun microsystems corp.//dtd hotjava strict html//", + "-//w3c//dtd html 3 1995-03-24//", + "-//w3c//dtd html 3.2 draft//", + "-//w3c//dtd html 3.2 final//", + "-//w3c//dtd html 3.2//", + "-//w3c//dtd html 3.2s draft//", + "-//w3c//dtd html 4.0 frameset//", + "-//w3c//dtd html 4.0 transitional//", + "-//w3c//dtd html experimental 19960712//", + "-//w3c//dtd html experimental 970421//", + "-//w3c//dtd w3 html//", + "-//w3o//dtd w3 html 3.0//", + "-//webtechs//dtd mozilla html 2.0//", + "-//webtechs//dtd mozilla html//", +} diff --git a/tests/vendor/golang.org/x/net/html/entity.go b/tests/vendor/golang.org/x/net/html/entity.go new file mode 100644 index 000000000..b628880a0 --- /dev/null +++ b/tests/vendor/golang.org/x/net/html/entity.go @@ -0,0 +1,2253 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package html + +// All entities that do not end with ';' are 6 or fewer bytes long. +const longestEntityWithoutSemicolon = 6 + +// entity is a map from HTML entity names to their values. The semicolon matters: +// https://html.spec.whatwg.org/multipage/syntax.html#named-character-references +// lists both "amp" and "amp;" as two separate entries. +// +// Note that the HTML5 list is larger than the HTML4 list at +// http://www.w3.org/TR/html4/sgml/entities.html +var entity = map[string]rune{ + "AElig;": '\U000000C6', + "AMP;": '\U00000026', + "Aacute;": '\U000000C1', + "Abreve;": '\U00000102', + "Acirc;": '\U000000C2', + "Acy;": '\U00000410', + "Afr;": '\U0001D504', + "Agrave;": '\U000000C0', + "Alpha;": '\U00000391', + "Amacr;": '\U00000100', + "And;": '\U00002A53', + "Aogon;": '\U00000104', + "Aopf;": '\U0001D538', + "ApplyFunction;": '\U00002061', + "Aring;": '\U000000C5', + "Ascr;": '\U0001D49C', + "Assign;": '\U00002254', + "Atilde;": '\U000000C3', + "Auml;": '\U000000C4', + "Backslash;": '\U00002216', + "Barv;": '\U00002AE7', + "Barwed;": '\U00002306', + "Bcy;": '\U00000411', + "Because;": '\U00002235', + "Bernoullis;": '\U0000212C', + "Beta;": '\U00000392', + "Bfr;": '\U0001D505', + "Bopf;": '\U0001D539', + "Breve;": '\U000002D8', + "Bscr;": '\U0000212C', + "Bumpeq;": '\U0000224E', + "CHcy;": '\U00000427', + "COPY;": '\U000000A9', + "Cacute;": '\U00000106', + "Cap;": '\U000022D2', + "CapitalDifferentialD;": '\U00002145', + "Cayleys;": '\U0000212D', + "Ccaron;": '\U0000010C', + "Ccedil;": '\U000000C7', + "Ccirc;": '\U00000108', + "Cconint;": '\U00002230', + "Cdot;": '\U0000010A', + "Cedilla;": '\U000000B8', + "CenterDot;": '\U000000B7', + "Cfr;": '\U0000212D', + "Chi;": '\U000003A7', + "CircleDot;": '\U00002299', + "CircleMinus;": '\U00002296', + "CirclePlus;": '\U00002295', + "CircleTimes;": '\U00002297', + "ClockwiseContourIntegral;": '\U00002232', + "CloseCurlyDoubleQuote;": '\U0000201D', + "CloseCurlyQuote;": '\U00002019', + "Colon;": '\U00002237', + "Colone;": '\U00002A74', + "Congruent;": '\U00002261', + "Conint;": '\U0000222F', + "ContourIntegral;": '\U0000222E', + "Copf;": '\U00002102', + "Coproduct;": '\U00002210', + "CounterClockwiseContourIntegral;": '\U00002233', + "Cross;": '\U00002A2F', + "Cscr;": '\U0001D49E', + "Cup;": '\U000022D3', + "CupCap;": '\U0000224D', + "DD;": '\U00002145', + "DDotrahd;": '\U00002911', + "DJcy;": '\U00000402', + "DScy;": '\U00000405', + "DZcy;": '\U0000040F', + "Dagger;": '\U00002021', + "Darr;": '\U000021A1', + "Dashv;": '\U00002AE4', + "Dcaron;": '\U0000010E', + "Dcy;": '\U00000414', + "Del;": '\U00002207', + "Delta;": '\U00000394', + "Dfr;": '\U0001D507', + "DiacriticalAcute;": '\U000000B4', + "DiacriticalDot;": '\U000002D9', + "DiacriticalDoubleAcute;": '\U000002DD', + "DiacriticalGrave;": '\U00000060', + "DiacriticalTilde;": '\U000002DC', + "Diamond;": '\U000022C4', + "DifferentialD;": '\U00002146', + "Dopf;": '\U0001D53B', + "Dot;": '\U000000A8', + "DotDot;": '\U000020DC', + "DotEqual;": '\U00002250', + "DoubleContourIntegral;": '\U0000222F', + "DoubleDot;": '\U000000A8', + "DoubleDownArrow;": '\U000021D3', + "DoubleLeftArrow;": '\U000021D0', + "DoubleLeftRightArrow;": '\U000021D4', + "DoubleLeftTee;": '\U00002AE4', + "DoubleLongLeftArrow;": '\U000027F8', + "DoubleLongLeftRightArrow;": '\U000027FA', + "DoubleLongRightArrow;": '\U000027F9', + "DoubleRightArrow;": '\U000021D2', + "DoubleRightTee;": '\U000022A8', + "DoubleUpArrow;": '\U000021D1', + "DoubleUpDownArrow;": '\U000021D5', + "DoubleVerticalBar;": '\U00002225', + "DownArrow;": '\U00002193', + "DownArrowBar;": '\U00002913', + "DownArrowUpArrow;": '\U000021F5', + "DownBreve;": '\U00000311', + "DownLeftRightVector;": '\U00002950', + "DownLeftTeeVector;": '\U0000295E', + "DownLeftVector;": '\U000021BD', + "DownLeftVectorBar;": '\U00002956', + "DownRightTeeVector;": '\U0000295F', + "DownRightVector;": '\U000021C1', + "DownRightVectorBar;": '\U00002957', + "DownTee;": '\U000022A4', + "DownTeeArrow;": '\U000021A7', + "Downarrow;": '\U000021D3', + "Dscr;": '\U0001D49F', + "Dstrok;": '\U00000110', + "ENG;": '\U0000014A', + "ETH;": '\U000000D0', + "Eacute;": '\U000000C9', + "Ecaron;": '\U0000011A', + "Ecirc;": '\U000000CA', + "Ecy;": '\U0000042D', + "Edot;": '\U00000116', + "Efr;": '\U0001D508', + "Egrave;": '\U000000C8', + "Element;": '\U00002208', + "Emacr;": '\U00000112', + "EmptySmallSquare;": '\U000025FB', + "EmptyVerySmallSquare;": '\U000025AB', + "Eogon;": '\U00000118', + "Eopf;": '\U0001D53C', + "Epsilon;": '\U00000395', + "Equal;": '\U00002A75', + "EqualTilde;": '\U00002242', + "Equilibrium;": '\U000021CC', + "Escr;": '\U00002130', + "Esim;": '\U00002A73', + "Eta;": '\U00000397', + "Euml;": '\U000000CB', + "Exists;": '\U00002203', + "ExponentialE;": '\U00002147', + "Fcy;": '\U00000424', + "Ffr;": '\U0001D509', + "FilledSmallSquare;": '\U000025FC', + "FilledVerySmallSquare;": '\U000025AA', + "Fopf;": '\U0001D53D', + "ForAll;": '\U00002200', + "Fouriertrf;": '\U00002131', + "Fscr;": '\U00002131', + "GJcy;": '\U00000403', + "GT;": '\U0000003E', + "Gamma;": '\U00000393', + "Gammad;": '\U000003DC', + "Gbreve;": '\U0000011E', + "Gcedil;": '\U00000122', + "Gcirc;": '\U0000011C', + "Gcy;": '\U00000413', + "Gdot;": '\U00000120', + "Gfr;": '\U0001D50A', + "Gg;": '\U000022D9', + "Gopf;": '\U0001D53E', + "GreaterEqual;": '\U00002265', + "GreaterEqualLess;": '\U000022DB', + "GreaterFullEqual;": '\U00002267', + "GreaterGreater;": '\U00002AA2', + "GreaterLess;": '\U00002277', + "GreaterSlantEqual;": '\U00002A7E', + "GreaterTilde;": '\U00002273', + "Gscr;": '\U0001D4A2', + "Gt;": '\U0000226B', + "HARDcy;": '\U0000042A', + "Hacek;": '\U000002C7', + "Hat;": '\U0000005E', + "Hcirc;": '\U00000124', + "Hfr;": '\U0000210C', + "HilbertSpace;": '\U0000210B', + "Hopf;": '\U0000210D', + "HorizontalLine;": '\U00002500', + "Hscr;": '\U0000210B', + "Hstrok;": '\U00000126', + "HumpDownHump;": '\U0000224E', + "HumpEqual;": '\U0000224F', + "IEcy;": '\U00000415', + "IJlig;": '\U00000132', + "IOcy;": '\U00000401', + "Iacute;": '\U000000CD', + "Icirc;": '\U000000CE', + "Icy;": '\U00000418', + "Idot;": '\U00000130', + "Ifr;": '\U00002111', + "Igrave;": '\U000000CC', + "Im;": '\U00002111', + "Imacr;": '\U0000012A', + "ImaginaryI;": '\U00002148', + "Implies;": '\U000021D2', + "Int;": '\U0000222C', + "Integral;": '\U0000222B', + "Intersection;": '\U000022C2', + "InvisibleComma;": '\U00002063', + "InvisibleTimes;": '\U00002062', + "Iogon;": '\U0000012E', + "Iopf;": '\U0001D540', + "Iota;": '\U00000399', + "Iscr;": '\U00002110', + "Itilde;": '\U00000128', + "Iukcy;": '\U00000406', + "Iuml;": '\U000000CF', + "Jcirc;": '\U00000134', + "Jcy;": '\U00000419', + "Jfr;": '\U0001D50D', + "Jopf;": '\U0001D541', + "Jscr;": '\U0001D4A5', + "Jsercy;": '\U00000408', + "Jukcy;": '\U00000404', + "KHcy;": '\U00000425', + "KJcy;": '\U0000040C', + "Kappa;": '\U0000039A', + "Kcedil;": '\U00000136', + "Kcy;": '\U0000041A', + "Kfr;": '\U0001D50E', + "Kopf;": '\U0001D542', + "Kscr;": '\U0001D4A6', + "LJcy;": '\U00000409', + "LT;": '\U0000003C', + "Lacute;": '\U00000139', + "Lambda;": '\U0000039B', + "Lang;": '\U000027EA', + "Laplacetrf;": '\U00002112', + "Larr;": '\U0000219E', + "Lcaron;": '\U0000013D', + "Lcedil;": '\U0000013B', + "Lcy;": '\U0000041B', + "LeftAngleBracket;": '\U000027E8', + "LeftArrow;": '\U00002190', + "LeftArrowBar;": '\U000021E4', + "LeftArrowRightArrow;": '\U000021C6', + "LeftCeiling;": '\U00002308', + "LeftDoubleBracket;": '\U000027E6', + "LeftDownTeeVector;": '\U00002961', + "LeftDownVector;": '\U000021C3', + "LeftDownVectorBar;": '\U00002959', + "LeftFloor;": '\U0000230A', + "LeftRightArrow;": '\U00002194', + "LeftRightVector;": '\U0000294E', + "LeftTee;": '\U000022A3', + "LeftTeeArrow;": '\U000021A4', + "LeftTeeVector;": '\U0000295A', + "LeftTriangle;": '\U000022B2', + "LeftTriangleBar;": '\U000029CF', + "LeftTriangleEqual;": '\U000022B4', + "LeftUpDownVector;": '\U00002951', + "LeftUpTeeVector;": '\U00002960', + "LeftUpVector;": '\U000021BF', + "LeftUpVectorBar;": '\U00002958', + "LeftVector;": '\U000021BC', + "LeftVectorBar;": '\U00002952', + "Leftarrow;": '\U000021D0', + "Leftrightarrow;": '\U000021D4', + "LessEqualGreater;": '\U000022DA', + "LessFullEqual;": '\U00002266', + "LessGreater;": '\U00002276', + "LessLess;": '\U00002AA1', + "LessSlantEqual;": '\U00002A7D', + "LessTilde;": '\U00002272', + "Lfr;": '\U0001D50F', + "Ll;": '\U000022D8', + "Lleftarrow;": '\U000021DA', + "Lmidot;": '\U0000013F', + "LongLeftArrow;": '\U000027F5', + "LongLeftRightArrow;": '\U000027F7', + "LongRightArrow;": '\U000027F6', + "Longleftarrow;": '\U000027F8', + "Longleftrightarrow;": '\U000027FA', + "Longrightarrow;": '\U000027F9', + "Lopf;": '\U0001D543', + "LowerLeftArrow;": '\U00002199', + "LowerRightArrow;": '\U00002198', + "Lscr;": '\U00002112', + "Lsh;": '\U000021B0', + "Lstrok;": '\U00000141', + "Lt;": '\U0000226A', + "Map;": '\U00002905', + "Mcy;": '\U0000041C', + "MediumSpace;": '\U0000205F', + "Mellintrf;": '\U00002133', + "Mfr;": '\U0001D510', + "MinusPlus;": '\U00002213', + "Mopf;": '\U0001D544', + "Mscr;": '\U00002133', + "Mu;": '\U0000039C', + "NJcy;": '\U0000040A', + "Nacute;": '\U00000143', + "Ncaron;": '\U00000147', + "Ncedil;": '\U00000145', + "Ncy;": '\U0000041D', + "NegativeMediumSpace;": '\U0000200B', + "NegativeThickSpace;": '\U0000200B', + "NegativeThinSpace;": '\U0000200B', + "NegativeVeryThinSpace;": '\U0000200B', + "NestedGreaterGreater;": '\U0000226B', + "NestedLessLess;": '\U0000226A', + "NewLine;": '\U0000000A', + "Nfr;": '\U0001D511', + "NoBreak;": '\U00002060', + "NonBreakingSpace;": '\U000000A0', + "Nopf;": '\U00002115', + "Not;": '\U00002AEC', + "NotCongruent;": '\U00002262', + "NotCupCap;": '\U0000226D', + "NotDoubleVerticalBar;": '\U00002226', + "NotElement;": '\U00002209', + "NotEqual;": '\U00002260', + "NotExists;": '\U00002204', + "NotGreater;": '\U0000226F', + "NotGreaterEqual;": '\U00002271', + "NotGreaterLess;": '\U00002279', + "NotGreaterTilde;": '\U00002275', + "NotLeftTriangle;": '\U000022EA', + "NotLeftTriangleEqual;": '\U000022EC', + "NotLess;": '\U0000226E', + "NotLessEqual;": '\U00002270', + "NotLessGreater;": '\U00002278', + "NotLessTilde;": '\U00002274', + "NotPrecedes;": '\U00002280', + "NotPrecedesSlantEqual;": '\U000022E0', + "NotReverseElement;": '\U0000220C', + "NotRightTriangle;": '\U000022EB', + "NotRightTriangleEqual;": '\U000022ED', + "NotSquareSubsetEqual;": '\U000022E2', + "NotSquareSupersetEqual;": '\U000022E3', + "NotSubsetEqual;": '\U00002288', + "NotSucceeds;": '\U00002281', + "NotSucceedsSlantEqual;": '\U000022E1', + "NotSupersetEqual;": '\U00002289', + "NotTilde;": '\U00002241', + "NotTildeEqual;": '\U00002244', + "NotTildeFullEqual;": '\U00002247', + "NotTildeTilde;": '\U00002249', + "NotVerticalBar;": '\U00002224', + "Nscr;": '\U0001D4A9', + "Ntilde;": '\U000000D1', + "Nu;": '\U0000039D', + "OElig;": '\U00000152', + "Oacute;": '\U000000D3', + "Ocirc;": '\U000000D4', + "Ocy;": '\U0000041E', + "Odblac;": '\U00000150', + "Ofr;": '\U0001D512', + "Ograve;": '\U000000D2', + "Omacr;": '\U0000014C', + "Omega;": '\U000003A9', + "Omicron;": '\U0000039F', + "Oopf;": '\U0001D546', + "OpenCurlyDoubleQuote;": '\U0000201C', + "OpenCurlyQuote;": '\U00002018', + "Or;": '\U00002A54', + "Oscr;": '\U0001D4AA', + "Oslash;": '\U000000D8', + "Otilde;": '\U000000D5', + "Otimes;": '\U00002A37', + "Ouml;": '\U000000D6', + "OverBar;": '\U0000203E', + "OverBrace;": '\U000023DE', + "OverBracket;": '\U000023B4', + "OverParenthesis;": '\U000023DC', + "PartialD;": '\U00002202', + "Pcy;": '\U0000041F', + "Pfr;": '\U0001D513', + "Phi;": '\U000003A6', + "Pi;": '\U000003A0', + "PlusMinus;": '\U000000B1', + "Poincareplane;": '\U0000210C', + "Popf;": '\U00002119', + "Pr;": '\U00002ABB', + "Precedes;": '\U0000227A', + "PrecedesEqual;": '\U00002AAF', + "PrecedesSlantEqual;": '\U0000227C', + "PrecedesTilde;": '\U0000227E', + "Prime;": '\U00002033', + "Product;": '\U0000220F', + "Proportion;": '\U00002237', + "Proportional;": '\U0000221D', + "Pscr;": '\U0001D4AB', + "Psi;": '\U000003A8', + "QUOT;": '\U00000022', + "Qfr;": '\U0001D514', + "Qopf;": '\U0000211A', + "Qscr;": '\U0001D4AC', + "RBarr;": '\U00002910', + "REG;": '\U000000AE', + "Racute;": '\U00000154', + "Rang;": '\U000027EB', + "Rarr;": '\U000021A0', + "Rarrtl;": '\U00002916', + "Rcaron;": '\U00000158', + "Rcedil;": '\U00000156', + "Rcy;": '\U00000420', + "Re;": '\U0000211C', + "ReverseElement;": '\U0000220B', + "ReverseEquilibrium;": '\U000021CB', + "ReverseUpEquilibrium;": '\U0000296F', + "Rfr;": '\U0000211C', + "Rho;": '\U000003A1', + "RightAngleBracket;": '\U000027E9', + "RightArrow;": '\U00002192', + "RightArrowBar;": '\U000021E5', + "RightArrowLeftArrow;": '\U000021C4', + "RightCeiling;": '\U00002309', + "RightDoubleBracket;": '\U000027E7', + "RightDownTeeVector;": '\U0000295D', + "RightDownVector;": '\U000021C2', + "RightDownVectorBar;": '\U00002955', + "RightFloor;": '\U0000230B', + "RightTee;": '\U000022A2', + "RightTeeArrow;": '\U000021A6', + "RightTeeVector;": '\U0000295B', + "RightTriangle;": '\U000022B3', + "RightTriangleBar;": '\U000029D0', + "RightTriangleEqual;": '\U000022B5', + "RightUpDownVector;": '\U0000294F', + "RightUpTeeVector;": '\U0000295C', + "RightUpVector;": '\U000021BE', + "RightUpVectorBar;": '\U00002954', + "RightVector;": '\U000021C0', + "RightVectorBar;": '\U00002953', + "Rightarrow;": '\U000021D2', + "Ropf;": '\U0000211D', + "RoundImplies;": '\U00002970', + "Rrightarrow;": '\U000021DB', + "Rscr;": '\U0000211B', + "Rsh;": '\U000021B1', + "RuleDelayed;": '\U000029F4', + "SHCHcy;": '\U00000429', + "SHcy;": '\U00000428', + "SOFTcy;": '\U0000042C', + "Sacute;": '\U0000015A', + "Sc;": '\U00002ABC', + "Scaron;": '\U00000160', + "Scedil;": '\U0000015E', + "Scirc;": '\U0000015C', + "Scy;": '\U00000421', + "Sfr;": '\U0001D516', + "ShortDownArrow;": '\U00002193', + "ShortLeftArrow;": '\U00002190', + "ShortRightArrow;": '\U00002192', + "ShortUpArrow;": '\U00002191', + "Sigma;": '\U000003A3', + "SmallCircle;": '\U00002218', + "Sopf;": '\U0001D54A', + "Sqrt;": '\U0000221A', + "Square;": '\U000025A1', + "SquareIntersection;": '\U00002293', + "SquareSubset;": '\U0000228F', + "SquareSubsetEqual;": '\U00002291', + "SquareSuperset;": '\U00002290', + "SquareSupersetEqual;": '\U00002292', + "SquareUnion;": '\U00002294', + "Sscr;": '\U0001D4AE', + "Star;": '\U000022C6', + "Sub;": '\U000022D0', + "Subset;": '\U000022D0', + "SubsetEqual;": '\U00002286', + "Succeeds;": '\U0000227B', + "SucceedsEqual;": '\U00002AB0', + "SucceedsSlantEqual;": '\U0000227D', + "SucceedsTilde;": '\U0000227F', + "SuchThat;": '\U0000220B', + "Sum;": '\U00002211', + "Sup;": '\U000022D1', + "Superset;": '\U00002283', + "SupersetEqual;": '\U00002287', + "Supset;": '\U000022D1', + "THORN;": '\U000000DE', + "TRADE;": '\U00002122', + "TSHcy;": '\U0000040B', + "TScy;": '\U00000426', + "Tab;": '\U00000009', + "Tau;": '\U000003A4', + "Tcaron;": '\U00000164', + "Tcedil;": '\U00000162', + "Tcy;": '\U00000422', + "Tfr;": '\U0001D517', + "Therefore;": '\U00002234', + "Theta;": '\U00000398', + "ThinSpace;": '\U00002009', + "Tilde;": '\U0000223C', + "TildeEqual;": '\U00002243', + "TildeFullEqual;": '\U00002245', + "TildeTilde;": '\U00002248', + "Topf;": '\U0001D54B', + "TripleDot;": '\U000020DB', + "Tscr;": '\U0001D4AF', + "Tstrok;": '\U00000166', + "Uacute;": '\U000000DA', + "Uarr;": '\U0000219F', + "Uarrocir;": '\U00002949', + "Ubrcy;": '\U0000040E', + "Ubreve;": '\U0000016C', + "Ucirc;": '\U000000DB', + "Ucy;": '\U00000423', + "Udblac;": '\U00000170', + "Ufr;": '\U0001D518', + "Ugrave;": '\U000000D9', + "Umacr;": '\U0000016A', + "UnderBar;": '\U0000005F', + "UnderBrace;": '\U000023DF', + "UnderBracket;": '\U000023B5', + "UnderParenthesis;": '\U000023DD', + "Union;": '\U000022C3', + "UnionPlus;": '\U0000228E', + "Uogon;": '\U00000172', + "Uopf;": '\U0001D54C', + "UpArrow;": '\U00002191', + "UpArrowBar;": '\U00002912', + "UpArrowDownArrow;": '\U000021C5', + "UpDownArrow;": '\U00002195', + "UpEquilibrium;": '\U0000296E', + "UpTee;": '\U000022A5', + "UpTeeArrow;": '\U000021A5', + "Uparrow;": '\U000021D1', + "Updownarrow;": '\U000021D5', + "UpperLeftArrow;": '\U00002196', + "UpperRightArrow;": '\U00002197', + "Upsi;": '\U000003D2', + "Upsilon;": '\U000003A5', + "Uring;": '\U0000016E', + "Uscr;": '\U0001D4B0', + "Utilde;": '\U00000168', + "Uuml;": '\U000000DC', + "VDash;": '\U000022AB', + "Vbar;": '\U00002AEB', + "Vcy;": '\U00000412', + "Vdash;": '\U000022A9', + "Vdashl;": '\U00002AE6', + "Vee;": '\U000022C1', + "Verbar;": '\U00002016', + "Vert;": '\U00002016', + "VerticalBar;": '\U00002223', + "VerticalLine;": '\U0000007C', + "VerticalSeparator;": '\U00002758', + "VerticalTilde;": '\U00002240', + "VeryThinSpace;": '\U0000200A', + "Vfr;": '\U0001D519', + "Vopf;": '\U0001D54D', + "Vscr;": '\U0001D4B1', + "Vvdash;": '\U000022AA', + "Wcirc;": '\U00000174', + "Wedge;": '\U000022C0', + "Wfr;": '\U0001D51A', + "Wopf;": '\U0001D54E', + "Wscr;": '\U0001D4B2', + "Xfr;": '\U0001D51B', + "Xi;": '\U0000039E', + "Xopf;": '\U0001D54F', + "Xscr;": '\U0001D4B3', + "YAcy;": '\U0000042F', + "YIcy;": '\U00000407', + "YUcy;": '\U0000042E', + "Yacute;": '\U000000DD', + "Ycirc;": '\U00000176', + "Ycy;": '\U0000042B', + "Yfr;": '\U0001D51C', + "Yopf;": '\U0001D550', + "Yscr;": '\U0001D4B4', + "Yuml;": '\U00000178', + "ZHcy;": '\U00000416', + "Zacute;": '\U00000179', + "Zcaron;": '\U0000017D', + "Zcy;": '\U00000417', + "Zdot;": '\U0000017B', + "ZeroWidthSpace;": '\U0000200B', + "Zeta;": '\U00000396', + "Zfr;": '\U00002128', + "Zopf;": '\U00002124', + "Zscr;": '\U0001D4B5', + "aacute;": '\U000000E1', + "abreve;": '\U00000103', + "ac;": '\U0000223E', + "acd;": '\U0000223F', + "acirc;": '\U000000E2', + "acute;": '\U000000B4', + "acy;": '\U00000430', + "aelig;": '\U000000E6', + "af;": '\U00002061', + "afr;": '\U0001D51E', + "agrave;": '\U000000E0', + "alefsym;": '\U00002135', + "aleph;": '\U00002135', + "alpha;": '\U000003B1', + "amacr;": '\U00000101', + "amalg;": '\U00002A3F', + "amp;": '\U00000026', + "and;": '\U00002227', + "andand;": '\U00002A55', + "andd;": '\U00002A5C', + "andslope;": '\U00002A58', + "andv;": '\U00002A5A', + "ang;": '\U00002220', + "ange;": '\U000029A4', + "angle;": '\U00002220', + "angmsd;": '\U00002221', + "angmsdaa;": '\U000029A8', + "angmsdab;": '\U000029A9', + "angmsdac;": '\U000029AA', + "angmsdad;": '\U000029AB', + "angmsdae;": '\U000029AC', + "angmsdaf;": '\U000029AD', + "angmsdag;": '\U000029AE', + "angmsdah;": '\U000029AF', + "angrt;": '\U0000221F', + "angrtvb;": '\U000022BE', + "angrtvbd;": '\U0000299D', + "angsph;": '\U00002222', + "angst;": '\U000000C5', + "angzarr;": '\U0000237C', + "aogon;": '\U00000105', + "aopf;": '\U0001D552', + "ap;": '\U00002248', + "apE;": '\U00002A70', + "apacir;": '\U00002A6F', + "ape;": '\U0000224A', + "apid;": '\U0000224B', + "apos;": '\U00000027', + "approx;": '\U00002248', + "approxeq;": '\U0000224A', + "aring;": '\U000000E5', + "ascr;": '\U0001D4B6', + "ast;": '\U0000002A', + "asymp;": '\U00002248', + "asympeq;": '\U0000224D', + "atilde;": '\U000000E3', + "auml;": '\U000000E4', + "awconint;": '\U00002233', + "awint;": '\U00002A11', + "bNot;": '\U00002AED', + "backcong;": '\U0000224C', + "backepsilon;": '\U000003F6', + "backprime;": '\U00002035', + "backsim;": '\U0000223D', + "backsimeq;": '\U000022CD', + "barvee;": '\U000022BD', + "barwed;": '\U00002305', + "barwedge;": '\U00002305', + "bbrk;": '\U000023B5', + "bbrktbrk;": '\U000023B6', + "bcong;": '\U0000224C', + "bcy;": '\U00000431', + "bdquo;": '\U0000201E', + "becaus;": '\U00002235', + "because;": '\U00002235', + "bemptyv;": '\U000029B0', + "bepsi;": '\U000003F6', + "bernou;": '\U0000212C', + "beta;": '\U000003B2', + "beth;": '\U00002136', + "between;": '\U0000226C', + "bfr;": '\U0001D51F', + "bigcap;": '\U000022C2', + "bigcirc;": '\U000025EF', + "bigcup;": '\U000022C3', + "bigodot;": '\U00002A00', + "bigoplus;": '\U00002A01', + "bigotimes;": '\U00002A02', + "bigsqcup;": '\U00002A06', + "bigstar;": '\U00002605', + "bigtriangledown;": '\U000025BD', + "bigtriangleup;": '\U000025B3', + "biguplus;": '\U00002A04', + "bigvee;": '\U000022C1', + "bigwedge;": '\U000022C0', + "bkarow;": '\U0000290D', + "blacklozenge;": '\U000029EB', + "blacksquare;": '\U000025AA', + "blacktriangle;": '\U000025B4', + "blacktriangledown;": '\U000025BE', + "blacktriangleleft;": '\U000025C2', + "blacktriangleright;": '\U000025B8', + "blank;": '\U00002423', + "blk12;": '\U00002592', + "blk14;": '\U00002591', + "blk34;": '\U00002593', + "block;": '\U00002588', + "bnot;": '\U00002310', + "bopf;": '\U0001D553', + "bot;": '\U000022A5', + "bottom;": '\U000022A5', + "bowtie;": '\U000022C8', + "boxDL;": '\U00002557', + "boxDR;": '\U00002554', + "boxDl;": '\U00002556', + "boxDr;": '\U00002553', + "boxH;": '\U00002550', + "boxHD;": '\U00002566', + "boxHU;": '\U00002569', + "boxHd;": '\U00002564', + "boxHu;": '\U00002567', + "boxUL;": '\U0000255D', + "boxUR;": '\U0000255A', + "boxUl;": '\U0000255C', + "boxUr;": '\U00002559', + "boxV;": '\U00002551', + "boxVH;": '\U0000256C', + "boxVL;": '\U00002563', + "boxVR;": '\U00002560', + "boxVh;": '\U0000256B', + "boxVl;": '\U00002562', + "boxVr;": '\U0000255F', + "boxbox;": '\U000029C9', + "boxdL;": '\U00002555', + "boxdR;": '\U00002552', + "boxdl;": '\U00002510', + "boxdr;": '\U0000250C', + "boxh;": '\U00002500', + "boxhD;": '\U00002565', + "boxhU;": '\U00002568', + "boxhd;": '\U0000252C', + "boxhu;": '\U00002534', + "boxminus;": '\U0000229F', + "boxplus;": '\U0000229E', + "boxtimes;": '\U000022A0', + "boxuL;": '\U0000255B', + "boxuR;": '\U00002558', + "boxul;": '\U00002518', + "boxur;": '\U00002514', + "boxv;": '\U00002502', + "boxvH;": '\U0000256A', + "boxvL;": '\U00002561', + "boxvR;": '\U0000255E', + "boxvh;": '\U0000253C', + "boxvl;": '\U00002524', + "boxvr;": '\U0000251C', + "bprime;": '\U00002035', + "breve;": '\U000002D8', + "brvbar;": '\U000000A6', + "bscr;": '\U0001D4B7', + "bsemi;": '\U0000204F', + "bsim;": '\U0000223D', + "bsime;": '\U000022CD', + "bsol;": '\U0000005C', + "bsolb;": '\U000029C5', + "bsolhsub;": '\U000027C8', + "bull;": '\U00002022', + "bullet;": '\U00002022', + "bump;": '\U0000224E', + "bumpE;": '\U00002AAE', + "bumpe;": '\U0000224F', + "bumpeq;": '\U0000224F', + "cacute;": '\U00000107', + "cap;": '\U00002229', + "capand;": '\U00002A44', + "capbrcup;": '\U00002A49', + "capcap;": '\U00002A4B', + "capcup;": '\U00002A47', + "capdot;": '\U00002A40', + "caret;": '\U00002041', + "caron;": '\U000002C7', + "ccaps;": '\U00002A4D', + "ccaron;": '\U0000010D', + "ccedil;": '\U000000E7', + "ccirc;": '\U00000109', + "ccups;": '\U00002A4C', + "ccupssm;": '\U00002A50', + "cdot;": '\U0000010B', + "cedil;": '\U000000B8', + "cemptyv;": '\U000029B2', + "cent;": '\U000000A2', + "centerdot;": '\U000000B7', + "cfr;": '\U0001D520', + "chcy;": '\U00000447', + "check;": '\U00002713', + "checkmark;": '\U00002713', + "chi;": '\U000003C7', + "cir;": '\U000025CB', + "cirE;": '\U000029C3', + "circ;": '\U000002C6', + "circeq;": '\U00002257', + "circlearrowleft;": '\U000021BA', + "circlearrowright;": '\U000021BB', + "circledR;": '\U000000AE', + "circledS;": '\U000024C8', + "circledast;": '\U0000229B', + "circledcirc;": '\U0000229A', + "circleddash;": '\U0000229D', + "cire;": '\U00002257', + "cirfnint;": '\U00002A10', + "cirmid;": '\U00002AEF', + "cirscir;": '\U000029C2', + "clubs;": '\U00002663', + "clubsuit;": '\U00002663', + "colon;": '\U0000003A', + "colone;": '\U00002254', + "coloneq;": '\U00002254', + "comma;": '\U0000002C', + "commat;": '\U00000040', + "comp;": '\U00002201', + "compfn;": '\U00002218', + "complement;": '\U00002201', + "complexes;": '\U00002102', + "cong;": '\U00002245', + "congdot;": '\U00002A6D', + "conint;": '\U0000222E', + "copf;": '\U0001D554', + "coprod;": '\U00002210', + "copy;": '\U000000A9', + "copysr;": '\U00002117', + "crarr;": '\U000021B5', + "cross;": '\U00002717', + "cscr;": '\U0001D4B8', + "csub;": '\U00002ACF', + "csube;": '\U00002AD1', + "csup;": '\U00002AD0', + "csupe;": '\U00002AD2', + "ctdot;": '\U000022EF', + "cudarrl;": '\U00002938', + "cudarrr;": '\U00002935', + "cuepr;": '\U000022DE', + "cuesc;": '\U000022DF', + "cularr;": '\U000021B6', + "cularrp;": '\U0000293D', + "cup;": '\U0000222A', + "cupbrcap;": '\U00002A48', + "cupcap;": '\U00002A46', + "cupcup;": '\U00002A4A', + "cupdot;": '\U0000228D', + "cupor;": '\U00002A45', + "curarr;": '\U000021B7', + "curarrm;": '\U0000293C', + "curlyeqprec;": '\U000022DE', + "curlyeqsucc;": '\U000022DF', + "curlyvee;": '\U000022CE', + "curlywedge;": '\U000022CF', + "curren;": '\U000000A4', + "curvearrowleft;": '\U000021B6', + "curvearrowright;": '\U000021B7', + "cuvee;": '\U000022CE', + "cuwed;": '\U000022CF', + "cwconint;": '\U00002232', + "cwint;": '\U00002231', + "cylcty;": '\U0000232D', + "dArr;": '\U000021D3', + "dHar;": '\U00002965', + "dagger;": '\U00002020', + "daleth;": '\U00002138', + "darr;": '\U00002193', + "dash;": '\U00002010', + "dashv;": '\U000022A3', + "dbkarow;": '\U0000290F', + "dblac;": '\U000002DD', + "dcaron;": '\U0000010F', + "dcy;": '\U00000434', + "dd;": '\U00002146', + "ddagger;": '\U00002021', + "ddarr;": '\U000021CA', + "ddotseq;": '\U00002A77', + "deg;": '\U000000B0', + "delta;": '\U000003B4', + "demptyv;": '\U000029B1', + "dfisht;": '\U0000297F', + "dfr;": '\U0001D521', + "dharl;": '\U000021C3', + "dharr;": '\U000021C2', + "diam;": '\U000022C4', + "diamond;": '\U000022C4', + "diamondsuit;": '\U00002666', + "diams;": '\U00002666', + "die;": '\U000000A8', + "digamma;": '\U000003DD', + "disin;": '\U000022F2', + "div;": '\U000000F7', + "divide;": '\U000000F7', + "divideontimes;": '\U000022C7', + "divonx;": '\U000022C7', + "djcy;": '\U00000452', + "dlcorn;": '\U0000231E', + "dlcrop;": '\U0000230D', + "dollar;": '\U00000024', + "dopf;": '\U0001D555', + "dot;": '\U000002D9', + "doteq;": '\U00002250', + "doteqdot;": '\U00002251', + "dotminus;": '\U00002238', + "dotplus;": '\U00002214', + "dotsquare;": '\U000022A1', + "doublebarwedge;": '\U00002306', + "downarrow;": '\U00002193', + "downdownarrows;": '\U000021CA', + "downharpoonleft;": '\U000021C3', + "downharpoonright;": '\U000021C2', + "drbkarow;": '\U00002910', + "drcorn;": '\U0000231F', + "drcrop;": '\U0000230C', + "dscr;": '\U0001D4B9', + "dscy;": '\U00000455', + "dsol;": '\U000029F6', + "dstrok;": '\U00000111', + "dtdot;": '\U000022F1', + "dtri;": '\U000025BF', + "dtrif;": '\U000025BE', + "duarr;": '\U000021F5', + "duhar;": '\U0000296F', + "dwangle;": '\U000029A6', + "dzcy;": '\U0000045F', + "dzigrarr;": '\U000027FF', + "eDDot;": '\U00002A77', + "eDot;": '\U00002251', + "eacute;": '\U000000E9', + "easter;": '\U00002A6E', + "ecaron;": '\U0000011B', + "ecir;": '\U00002256', + "ecirc;": '\U000000EA', + "ecolon;": '\U00002255', + "ecy;": '\U0000044D', + "edot;": '\U00000117', + "ee;": '\U00002147', + "efDot;": '\U00002252', + "efr;": '\U0001D522', + "eg;": '\U00002A9A', + "egrave;": '\U000000E8', + "egs;": '\U00002A96', + "egsdot;": '\U00002A98', + "el;": '\U00002A99', + "elinters;": '\U000023E7', + "ell;": '\U00002113', + "els;": '\U00002A95', + "elsdot;": '\U00002A97', + "emacr;": '\U00000113', + "empty;": '\U00002205', + "emptyset;": '\U00002205', + "emptyv;": '\U00002205', + "emsp;": '\U00002003', + "emsp13;": '\U00002004', + "emsp14;": '\U00002005', + "eng;": '\U0000014B', + "ensp;": '\U00002002', + "eogon;": '\U00000119', + "eopf;": '\U0001D556', + "epar;": '\U000022D5', + "eparsl;": '\U000029E3', + "eplus;": '\U00002A71', + "epsi;": '\U000003B5', + "epsilon;": '\U000003B5', + "epsiv;": '\U000003F5', + "eqcirc;": '\U00002256', + "eqcolon;": '\U00002255', + "eqsim;": '\U00002242', + "eqslantgtr;": '\U00002A96', + "eqslantless;": '\U00002A95', + "equals;": '\U0000003D', + "equest;": '\U0000225F', + "equiv;": '\U00002261', + "equivDD;": '\U00002A78', + "eqvparsl;": '\U000029E5', + "erDot;": '\U00002253', + "erarr;": '\U00002971', + "escr;": '\U0000212F', + "esdot;": '\U00002250', + "esim;": '\U00002242', + "eta;": '\U000003B7', + "eth;": '\U000000F0', + "euml;": '\U000000EB', + "euro;": '\U000020AC', + "excl;": '\U00000021', + "exist;": '\U00002203', + "expectation;": '\U00002130', + "exponentiale;": '\U00002147', + "fallingdotseq;": '\U00002252', + "fcy;": '\U00000444', + "female;": '\U00002640', + "ffilig;": '\U0000FB03', + "fflig;": '\U0000FB00', + "ffllig;": '\U0000FB04', + "ffr;": '\U0001D523', + "filig;": '\U0000FB01', + "flat;": '\U0000266D', + "fllig;": '\U0000FB02', + "fltns;": '\U000025B1', + "fnof;": '\U00000192', + "fopf;": '\U0001D557', + "forall;": '\U00002200', + "fork;": '\U000022D4', + "forkv;": '\U00002AD9', + "fpartint;": '\U00002A0D', + "frac12;": '\U000000BD', + "frac13;": '\U00002153', + "frac14;": '\U000000BC', + "frac15;": '\U00002155', + "frac16;": '\U00002159', + "frac18;": '\U0000215B', + "frac23;": '\U00002154', + "frac25;": '\U00002156', + "frac34;": '\U000000BE', + "frac35;": '\U00002157', + "frac38;": '\U0000215C', + "frac45;": '\U00002158', + "frac56;": '\U0000215A', + "frac58;": '\U0000215D', + "frac78;": '\U0000215E', + "frasl;": '\U00002044', + "frown;": '\U00002322', + "fscr;": '\U0001D4BB', + "gE;": '\U00002267', + "gEl;": '\U00002A8C', + "gacute;": '\U000001F5', + "gamma;": '\U000003B3', + "gammad;": '\U000003DD', + "gap;": '\U00002A86', + "gbreve;": '\U0000011F', + "gcirc;": '\U0000011D', + "gcy;": '\U00000433', + "gdot;": '\U00000121', + "ge;": '\U00002265', + "gel;": '\U000022DB', + "geq;": '\U00002265', + "geqq;": '\U00002267', + "geqslant;": '\U00002A7E', + "ges;": '\U00002A7E', + "gescc;": '\U00002AA9', + "gesdot;": '\U00002A80', + "gesdoto;": '\U00002A82', + "gesdotol;": '\U00002A84', + "gesles;": '\U00002A94', + "gfr;": '\U0001D524', + "gg;": '\U0000226B', + "ggg;": '\U000022D9', + "gimel;": '\U00002137', + "gjcy;": '\U00000453', + "gl;": '\U00002277', + "glE;": '\U00002A92', + "gla;": '\U00002AA5', + "glj;": '\U00002AA4', + "gnE;": '\U00002269', + "gnap;": '\U00002A8A', + "gnapprox;": '\U00002A8A', + "gne;": '\U00002A88', + "gneq;": '\U00002A88', + "gneqq;": '\U00002269', + "gnsim;": '\U000022E7', + "gopf;": '\U0001D558', + "grave;": '\U00000060', + "gscr;": '\U0000210A', + "gsim;": '\U00002273', + "gsime;": '\U00002A8E', + "gsiml;": '\U00002A90', + "gt;": '\U0000003E', + "gtcc;": '\U00002AA7', + "gtcir;": '\U00002A7A', + "gtdot;": '\U000022D7', + "gtlPar;": '\U00002995', + "gtquest;": '\U00002A7C', + "gtrapprox;": '\U00002A86', + "gtrarr;": '\U00002978', + "gtrdot;": '\U000022D7', + "gtreqless;": '\U000022DB', + "gtreqqless;": '\U00002A8C', + "gtrless;": '\U00002277', + "gtrsim;": '\U00002273', + "hArr;": '\U000021D4', + "hairsp;": '\U0000200A', + "half;": '\U000000BD', + "hamilt;": '\U0000210B', + "hardcy;": '\U0000044A', + "harr;": '\U00002194', + "harrcir;": '\U00002948', + "harrw;": '\U000021AD', + "hbar;": '\U0000210F', + "hcirc;": '\U00000125', + "hearts;": '\U00002665', + "heartsuit;": '\U00002665', + "hellip;": '\U00002026', + "hercon;": '\U000022B9', + "hfr;": '\U0001D525', + "hksearow;": '\U00002925', + "hkswarow;": '\U00002926', + "hoarr;": '\U000021FF', + "homtht;": '\U0000223B', + "hookleftarrow;": '\U000021A9', + "hookrightarrow;": '\U000021AA', + "hopf;": '\U0001D559', + "horbar;": '\U00002015', + "hscr;": '\U0001D4BD', + "hslash;": '\U0000210F', + "hstrok;": '\U00000127', + "hybull;": '\U00002043', + "hyphen;": '\U00002010', + "iacute;": '\U000000ED', + "ic;": '\U00002063', + "icirc;": '\U000000EE', + "icy;": '\U00000438', + "iecy;": '\U00000435', + "iexcl;": '\U000000A1', + "iff;": '\U000021D4', + "ifr;": '\U0001D526', + "igrave;": '\U000000EC', + "ii;": '\U00002148', + "iiiint;": '\U00002A0C', + "iiint;": '\U0000222D', + "iinfin;": '\U000029DC', + "iiota;": '\U00002129', + "ijlig;": '\U00000133', + "imacr;": '\U0000012B', + "image;": '\U00002111', + "imagline;": '\U00002110', + "imagpart;": '\U00002111', + "imath;": '\U00000131', + "imof;": '\U000022B7', + "imped;": '\U000001B5', + "in;": '\U00002208', + "incare;": '\U00002105', + "infin;": '\U0000221E', + "infintie;": '\U000029DD', + "inodot;": '\U00000131', + "int;": '\U0000222B', + "intcal;": '\U000022BA', + "integers;": '\U00002124', + "intercal;": '\U000022BA', + "intlarhk;": '\U00002A17', + "intprod;": '\U00002A3C', + "iocy;": '\U00000451', + "iogon;": '\U0000012F', + "iopf;": '\U0001D55A', + "iota;": '\U000003B9', + "iprod;": '\U00002A3C', + "iquest;": '\U000000BF', + "iscr;": '\U0001D4BE', + "isin;": '\U00002208', + "isinE;": '\U000022F9', + "isindot;": '\U000022F5', + "isins;": '\U000022F4', + "isinsv;": '\U000022F3', + "isinv;": '\U00002208', + "it;": '\U00002062', + "itilde;": '\U00000129', + "iukcy;": '\U00000456', + "iuml;": '\U000000EF', + "jcirc;": '\U00000135', + "jcy;": '\U00000439', + "jfr;": '\U0001D527', + "jmath;": '\U00000237', + "jopf;": '\U0001D55B', + "jscr;": '\U0001D4BF', + "jsercy;": '\U00000458', + "jukcy;": '\U00000454', + "kappa;": '\U000003BA', + "kappav;": '\U000003F0', + "kcedil;": '\U00000137', + "kcy;": '\U0000043A', + "kfr;": '\U0001D528', + "kgreen;": '\U00000138', + "khcy;": '\U00000445', + "kjcy;": '\U0000045C', + "kopf;": '\U0001D55C', + "kscr;": '\U0001D4C0', + "lAarr;": '\U000021DA', + "lArr;": '\U000021D0', + "lAtail;": '\U0000291B', + "lBarr;": '\U0000290E', + "lE;": '\U00002266', + "lEg;": '\U00002A8B', + "lHar;": '\U00002962', + "lacute;": '\U0000013A', + "laemptyv;": '\U000029B4', + "lagran;": '\U00002112', + "lambda;": '\U000003BB', + "lang;": '\U000027E8', + "langd;": '\U00002991', + "langle;": '\U000027E8', + "lap;": '\U00002A85', + "laquo;": '\U000000AB', + "larr;": '\U00002190', + "larrb;": '\U000021E4', + "larrbfs;": '\U0000291F', + "larrfs;": '\U0000291D', + "larrhk;": '\U000021A9', + "larrlp;": '\U000021AB', + "larrpl;": '\U00002939', + "larrsim;": '\U00002973', + "larrtl;": '\U000021A2', + "lat;": '\U00002AAB', + "latail;": '\U00002919', + "late;": '\U00002AAD', + "lbarr;": '\U0000290C', + "lbbrk;": '\U00002772', + "lbrace;": '\U0000007B', + "lbrack;": '\U0000005B', + "lbrke;": '\U0000298B', + "lbrksld;": '\U0000298F', + "lbrkslu;": '\U0000298D', + "lcaron;": '\U0000013E', + "lcedil;": '\U0000013C', + "lceil;": '\U00002308', + "lcub;": '\U0000007B', + "lcy;": '\U0000043B', + "ldca;": '\U00002936', + "ldquo;": '\U0000201C', + "ldquor;": '\U0000201E', + "ldrdhar;": '\U00002967', + "ldrushar;": '\U0000294B', + "ldsh;": '\U000021B2', + "le;": '\U00002264', + "leftarrow;": '\U00002190', + "leftarrowtail;": '\U000021A2', + "leftharpoondown;": '\U000021BD', + "leftharpoonup;": '\U000021BC', + "leftleftarrows;": '\U000021C7', + "leftrightarrow;": '\U00002194', + "leftrightarrows;": '\U000021C6', + "leftrightharpoons;": '\U000021CB', + "leftrightsquigarrow;": '\U000021AD', + "leftthreetimes;": '\U000022CB', + "leg;": '\U000022DA', + "leq;": '\U00002264', + "leqq;": '\U00002266', + "leqslant;": '\U00002A7D', + "les;": '\U00002A7D', + "lescc;": '\U00002AA8', + "lesdot;": '\U00002A7F', + "lesdoto;": '\U00002A81', + "lesdotor;": '\U00002A83', + "lesges;": '\U00002A93', + "lessapprox;": '\U00002A85', + "lessdot;": '\U000022D6', + "lesseqgtr;": '\U000022DA', + "lesseqqgtr;": '\U00002A8B', + "lessgtr;": '\U00002276', + "lesssim;": '\U00002272', + "lfisht;": '\U0000297C', + "lfloor;": '\U0000230A', + "lfr;": '\U0001D529', + "lg;": '\U00002276', + "lgE;": '\U00002A91', + "lhard;": '\U000021BD', + "lharu;": '\U000021BC', + "lharul;": '\U0000296A', + "lhblk;": '\U00002584', + "ljcy;": '\U00000459', + "ll;": '\U0000226A', + "llarr;": '\U000021C7', + "llcorner;": '\U0000231E', + "llhard;": '\U0000296B', + "lltri;": '\U000025FA', + "lmidot;": '\U00000140', + "lmoust;": '\U000023B0', + "lmoustache;": '\U000023B0', + "lnE;": '\U00002268', + "lnap;": '\U00002A89', + "lnapprox;": '\U00002A89', + "lne;": '\U00002A87', + "lneq;": '\U00002A87', + "lneqq;": '\U00002268', + "lnsim;": '\U000022E6', + "loang;": '\U000027EC', + "loarr;": '\U000021FD', + "lobrk;": '\U000027E6', + "longleftarrow;": '\U000027F5', + "longleftrightarrow;": '\U000027F7', + "longmapsto;": '\U000027FC', + "longrightarrow;": '\U000027F6', + "looparrowleft;": '\U000021AB', + "looparrowright;": '\U000021AC', + "lopar;": '\U00002985', + "lopf;": '\U0001D55D', + "loplus;": '\U00002A2D', + "lotimes;": '\U00002A34', + "lowast;": '\U00002217', + "lowbar;": '\U0000005F', + "loz;": '\U000025CA', + "lozenge;": '\U000025CA', + "lozf;": '\U000029EB', + "lpar;": '\U00000028', + "lparlt;": '\U00002993', + "lrarr;": '\U000021C6', + "lrcorner;": '\U0000231F', + "lrhar;": '\U000021CB', + "lrhard;": '\U0000296D', + "lrm;": '\U0000200E', + "lrtri;": '\U000022BF', + "lsaquo;": '\U00002039', + "lscr;": '\U0001D4C1', + "lsh;": '\U000021B0', + "lsim;": '\U00002272', + "lsime;": '\U00002A8D', + "lsimg;": '\U00002A8F', + "lsqb;": '\U0000005B', + "lsquo;": '\U00002018', + "lsquor;": '\U0000201A', + "lstrok;": '\U00000142', + "lt;": '\U0000003C', + "ltcc;": '\U00002AA6', + "ltcir;": '\U00002A79', + "ltdot;": '\U000022D6', + "lthree;": '\U000022CB', + "ltimes;": '\U000022C9', + "ltlarr;": '\U00002976', + "ltquest;": '\U00002A7B', + "ltrPar;": '\U00002996', + "ltri;": '\U000025C3', + "ltrie;": '\U000022B4', + "ltrif;": '\U000025C2', + "lurdshar;": '\U0000294A', + "luruhar;": '\U00002966', + "mDDot;": '\U0000223A', + "macr;": '\U000000AF', + "male;": '\U00002642', + "malt;": '\U00002720', + "maltese;": '\U00002720', + "map;": '\U000021A6', + "mapsto;": '\U000021A6', + "mapstodown;": '\U000021A7', + "mapstoleft;": '\U000021A4', + "mapstoup;": '\U000021A5', + "marker;": '\U000025AE', + "mcomma;": '\U00002A29', + "mcy;": '\U0000043C', + "mdash;": '\U00002014', + "measuredangle;": '\U00002221', + "mfr;": '\U0001D52A', + "mho;": '\U00002127', + "micro;": '\U000000B5', + "mid;": '\U00002223', + "midast;": '\U0000002A', + "midcir;": '\U00002AF0', + "middot;": '\U000000B7', + "minus;": '\U00002212', + "minusb;": '\U0000229F', + "minusd;": '\U00002238', + "minusdu;": '\U00002A2A', + "mlcp;": '\U00002ADB', + "mldr;": '\U00002026', + "mnplus;": '\U00002213', + "models;": '\U000022A7', + "mopf;": '\U0001D55E', + "mp;": '\U00002213', + "mscr;": '\U0001D4C2', + "mstpos;": '\U0000223E', + "mu;": '\U000003BC', + "multimap;": '\U000022B8', + "mumap;": '\U000022B8', + "nLeftarrow;": '\U000021CD', + "nLeftrightarrow;": '\U000021CE', + "nRightarrow;": '\U000021CF', + "nVDash;": '\U000022AF', + "nVdash;": '\U000022AE', + "nabla;": '\U00002207', + "nacute;": '\U00000144', + "nap;": '\U00002249', + "napos;": '\U00000149', + "napprox;": '\U00002249', + "natur;": '\U0000266E', + "natural;": '\U0000266E', + "naturals;": '\U00002115', + "nbsp;": '\U000000A0', + "ncap;": '\U00002A43', + "ncaron;": '\U00000148', + "ncedil;": '\U00000146', + "ncong;": '\U00002247', + "ncup;": '\U00002A42', + "ncy;": '\U0000043D', + "ndash;": '\U00002013', + "ne;": '\U00002260', + "neArr;": '\U000021D7', + "nearhk;": '\U00002924', + "nearr;": '\U00002197', + "nearrow;": '\U00002197', + "nequiv;": '\U00002262', + "nesear;": '\U00002928', + "nexist;": '\U00002204', + "nexists;": '\U00002204', + "nfr;": '\U0001D52B', + "nge;": '\U00002271', + "ngeq;": '\U00002271', + "ngsim;": '\U00002275', + "ngt;": '\U0000226F', + "ngtr;": '\U0000226F', + "nhArr;": '\U000021CE', + "nharr;": '\U000021AE', + "nhpar;": '\U00002AF2', + "ni;": '\U0000220B', + "nis;": '\U000022FC', + "nisd;": '\U000022FA', + "niv;": '\U0000220B', + "njcy;": '\U0000045A', + "nlArr;": '\U000021CD', + "nlarr;": '\U0000219A', + "nldr;": '\U00002025', + "nle;": '\U00002270', + "nleftarrow;": '\U0000219A', + "nleftrightarrow;": '\U000021AE', + "nleq;": '\U00002270', + "nless;": '\U0000226E', + "nlsim;": '\U00002274', + "nlt;": '\U0000226E', + "nltri;": '\U000022EA', + "nltrie;": '\U000022EC', + "nmid;": '\U00002224', + "nopf;": '\U0001D55F', + "not;": '\U000000AC', + "notin;": '\U00002209', + "notinva;": '\U00002209', + "notinvb;": '\U000022F7', + "notinvc;": '\U000022F6', + "notni;": '\U0000220C', + "notniva;": '\U0000220C', + "notnivb;": '\U000022FE', + "notnivc;": '\U000022FD', + "npar;": '\U00002226', + "nparallel;": '\U00002226', + "npolint;": '\U00002A14', + "npr;": '\U00002280', + "nprcue;": '\U000022E0', + "nprec;": '\U00002280', + "nrArr;": '\U000021CF', + "nrarr;": '\U0000219B', + "nrightarrow;": '\U0000219B', + "nrtri;": '\U000022EB', + "nrtrie;": '\U000022ED', + "nsc;": '\U00002281', + "nsccue;": '\U000022E1', + "nscr;": '\U0001D4C3', + "nshortmid;": '\U00002224', + "nshortparallel;": '\U00002226', + "nsim;": '\U00002241', + "nsime;": '\U00002244', + "nsimeq;": '\U00002244', + "nsmid;": '\U00002224', + "nspar;": '\U00002226', + "nsqsube;": '\U000022E2', + "nsqsupe;": '\U000022E3', + "nsub;": '\U00002284', + "nsube;": '\U00002288', + "nsubseteq;": '\U00002288', + "nsucc;": '\U00002281', + "nsup;": '\U00002285', + "nsupe;": '\U00002289', + "nsupseteq;": '\U00002289', + "ntgl;": '\U00002279', + "ntilde;": '\U000000F1', + "ntlg;": '\U00002278', + "ntriangleleft;": '\U000022EA', + "ntrianglelefteq;": '\U000022EC', + "ntriangleright;": '\U000022EB', + "ntrianglerighteq;": '\U000022ED', + "nu;": '\U000003BD', + "num;": '\U00000023', + "numero;": '\U00002116', + "numsp;": '\U00002007', + "nvDash;": '\U000022AD', + "nvHarr;": '\U00002904', + "nvdash;": '\U000022AC', + "nvinfin;": '\U000029DE', + "nvlArr;": '\U00002902', + "nvrArr;": '\U00002903', + "nwArr;": '\U000021D6', + "nwarhk;": '\U00002923', + "nwarr;": '\U00002196', + "nwarrow;": '\U00002196', + "nwnear;": '\U00002927', + "oS;": '\U000024C8', + "oacute;": '\U000000F3', + "oast;": '\U0000229B', + "ocir;": '\U0000229A', + "ocirc;": '\U000000F4', + "ocy;": '\U0000043E', + "odash;": '\U0000229D', + "odblac;": '\U00000151', + "odiv;": '\U00002A38', + "odot;": '\U00002299', + "odsold;": '\U000029BC', + "oelig;": '\U00000153', + "ofcir;": '\U000029BF', + "ofr;": '\U0001D52C', + "ogon;": '\U000002DB', + "ograve;": '\U000000F2', + "ogt;": '\U000029C1', + "ohbar;": '\U000029B5', + "ohm;": '\U000003A9', + "oint;": '\U0000222E', + "olarr;": '\U000021BA', + "olcir;": '\U000029BE', + "olcross;": '\U000029BB', + "oline;": '\U0000203E', + "olt;": '\U000029C0', + "omacr;": '\U0000014D', + "omega;": '\U000003C9', + "omicron;": '\U000003BF', + "omid;": '\U000029B6', + "ominus;": '\U00002296', + "oopf;": '\U0001D560', + "opar;": '\U000029B7', + "operp;": '\U000029B9', + "oplus;": '\U00002295', + "or;": '\U00002228', + "orarr;": '\U000021BB', + "ord;": '\U00002A5D', + "order;": '\U00002134', + "orderof;": '\U00002134', + "ordf;": '\U000000AA', + "ordm;": '\U000000BA', + "origof;": '\U000022B6', + "oror;": '\U00002A56', + "orslope;": '\U00002A57', + "orv;": '\U00002A5B', + "oscr;": '\U00002134', + "oslash;": '\U000000F8', + "osol;": '\U00002298', + "otilde;": '\U000000F5', + "otimes;": '\U00002297', + "otimesas;": '\U00002A36', + "ouml;": '\U000000F6', + "ovbar;": '\U0000233D', + "par;": '\U00002225', + "para;": '\U000000B6', + "parallel;": '\U00002225', + "parsim;": '\U00002AF3', + "parsl;": '\U00002AFD', + "part;": '\U00002202', + "pcy;": '\U0000043F', + "percnt;": '\U00000025', + "period;": '\U0000002E', + "permil;": '\U00002030', + "perp;": '\U000022A5', + "pertenk;": '\U00002031', + "pfr;": '\U0001D52D', + "phi;": '\U000003C6', + "phiv;": '\U000003D5', + "phmmat;": '\U00002133', + "phone;": '\U0000260E', + "pi;": '\U000003C0', + "pitchfork;": '\U000022D4', + "piv;": '\U000003D6', + "planck;": '\U0000210F', + "planckh;": '\U0000210E', + "plankv;": '\U0000210F', + "plus;": '\U0000002B', + "plusacir;": '\U00002A23', + "plusb;": '\U0000229E', + "pluscir;": '\U00002A22', + "plusdo;": '\U00002214', + "plusdu;": '\U00002A25', + "pluse;": '\U00002A72', + "plusmn;": '\U000000B1', + "plussim;": '\U00002A26', + "plustwo;": '\U00002A27', + "pm;": '\U000000B1', + "pointint;": '\U00002A15', + "popf;": '\U0001D561', + "pound;": '\U000000A3', + "pr;": '\U0000227A', + "prE;": '\U00002AB3', + "prap;": '\U00002AB7', + "prcue;": '\U0000227C', + "pre;": '\U00002AAF', + "prec;": '\U0000227A', + "precapprox;": '\U00002AB7', + "preccurlyeq;": '\U0000227C', + "preceq;": '\U00002AAF', + "precnapprox;": '\U00002AB9', + "precneqq;": '\U00002AB5', + "precnsim;": '\U000022E8', + "precsim;": '\U0000227E', + "prime;": '\U00002032', + "primes;": '\U00002119', + "prnE;": '\U00002AB5', + "prnap;": '\U00002AB9', + "prnsim;": '\U000022E8', + "prod;": '\U0000220F', + "profalar;": '\U0000232E', + "profline;": '\U00002312', + "profsurf;": '\U00002313', + "prop;": '\U0000221D', + "propto;": '\U0000221D', + "prsim;": '\U0000227E', + "prurel;": '\U000022B0', + "pscr;": '\U0001D4C5', + "psi;": '\U000003C8', + "puncsp;": '\U00002008', + "qfr;": '\U0001D52E', + "qint;": '\U00002A0C', + "qopf;": '\U0001D562', + "qprime;": '\U00002057', + "qscr;": '\U0001D4C6', + "quaternions;": '\U0000210D', + "quatint;": '\U00002A16', + "quest;": '\U0000003F', + "questeq;": '\U0000225F', + "quot;": '\U00000022', + "rAarr;": '\U000021DB', + "rArr;": '\U000021D2', + "rAtail;": '\U0000291C', + "rBarr;": '\U0000290F', + "rHar;": '\U00002964', + "racute;": '\U00000155', + "radic;": '\U0000221A', + "raemptyv;": '\U000029B3', + "rang;": '\U000027E9', + "rangd;": '\U00002992', + "range;": '\U000029A5', + "rangle;": '\U000027E9', + "raquo;": '\U000000BB', + "rarr;": '\U00002192', + "rarrap;": '\U00002975', + "rarrb;": '\U000021E5', + "rarrbfs;": '\U00002920', + "rarrc;": '\U00002933', + "rarrfs;": '\U0000291E', + "rarrhk;": '\U000021AA', + "rarrlp;": '\U000021AC', + "rarrpl;": '\U00002945', + "rarrsim;": '\U00002974', + "rarrtl;": '\U000021A3', + "rarrw;": '\U0000219D', + "ratail;": '\U0000291A', + "ratio;": '\U00002236', + "rationals;": '\U0000211A', + "rbarr;": '\U0000290D', + "rbbrk;": '\U00002773', + "rbrace;": '\U0000007D', + "rbrack;": '\U0000005D', + "rbrke;": '\U0000298C', + "rbrksld;": '\U0000298E', + "rbrkslu;": '\U00002990', + "rcaron;": '\U00000159', + "rcedil;": '\U00000157', + "rceil;": '\U00002309', + "rcub;": '\U0000007D', + "rcy;": '\U00000440', + "rdca;": '\U00002937', + "rdldhar;": '\U00002969', + "rdquo;": '\U0000201D', + "rdquor;": '\U0000201D', + "rdsh;": '\U000021B3', + "real;": '\U0000211C', + "realine;": '\U0000211B', + "realpart;": '\U0000211C', + "reals;": '\U0000211D', + "rect;": '\U000025AD', + "reg;": '\U000000AE', + "rfisht;": '\U0000297D', + "rfloor;": '\U0000230B', + "rfr;": '\U0001D52F', + "rhard;": '\U000021C1', + "rharu;": '\U000021C0', + "rharul;": '\U0000296C', + "rho;": '\U000003C1', + "rhov;": '\U000003F1', + "rightarrow;": '\U00002192', + "rightarrowtail;": '\U000021A3', + "rightharpoondown;": '\U000021C1', + "rightharpoonup;": '\U000021C0', + "rightleftarrows;": '\U000021C4', + "rightleftharpoons;": '\U000021CC', + "rightrightarrows;": '\U000021C9', + "rightsquigarrow;": '\U0000219D', + "rightthreetimes;": '\U000022CC', + "ring;": '\U000002DA', + "risingdotseq;": '\U00002253', + "rlarr;": '\U000021C4', + "rlhar;": '\U000021CC', + "rlm;": '\U0000200F', + "rmoust;": '\U000023B1', + "rmoustache;": '\U000023B1', + "rnmid;": '\U00002AEE', + "roang;": '\U000027ED', + "roarr;": '\U000021FE', + "robrk;": '\U000027E7', + "ropar;": '\U00002986', + "ropf;": '\U0001D563', + "roplus;": '\U00002A2E', + "rotimes;": '\U00002A35', + "rpar;": '\U00000029', + "rpargt;": '\U00002994', + "rppolint;": '\U00002A12', + "rrarr;": '\U000021C9', + "rsaquo;": '\U0000203A', + "rscr;": '\U0001D4C7', + "rsh;": '\U000021B1', + "rsqb;": '\U0000005D', + "rsquo;": '\U00002019', + "rsquor;": '\U00002019', + "rthree;": '\U000022CC', + "rtimes;": '\U000022CA', + "rtri;": '\U000025B9', + "rtrie;": '\U000022B5', + "rtrif;": '\U000025B8', + "rtriltri;": '\U000029CE', + "ruluhar;": '\U00002968', + "rx;": '\U0000211E', + "sacute;": '\U0000015B', + "sbquo;": '\U0000201A', + "sc;": '\U0000227B', + "scE;": '\U00002AB4', + "scap;": '\U00002AB8', + "scaron;": '\U00000161', + "sccue;": '\U0000227D', + "sce;": '\U00002AB0', + "scedil;": '\U0000015F', + "scirc;": '\U0000015D', + "scnE;": '\U00002AB6', + "scnap;": '\U00002ABA', + "scnsim;": '\U000022E9', + "scpolint;": '\U00002A13', + "scsim;": '\U0000227F', + "scy;": '\U00000441', + "sdot;": '\U000022C5', + "sdotb;": '\U000022A1', + "sdote;": '\U00002A66', + "seArr;": '\U000021D8', + "searhk;": '\U00002925', + "searr;": '\U00002198', + "searrow;": '\U00002198', + "sect;": '\U000000A7', + "semi;": '\U0000003B', + "seswar;": '\U00002929', + "setminus;": '\U00002216', + "setmn;": '\U00002216', + "sext;": '\U00002736', + "sfr;": '\U0001D530', + "sfrown;": '\U00002322', + "sharp;": '\U0000266F', + "shchcy;": '\U00000449', + "shcy;": '\U00000448', + "shortmid;": '\U00002223', + "shortparallel;": '\U00002225', + "shy;": '\U000000AD', + "sigma;": '\U000003C3', + "sigmaf;": '\U000003C2', + "sigmav;": '\U000003C2', + "sim;": '\U0000223C', + "simdot;": '\U00002A6A', + "sime;": '\U00002243', + "simeq;": '\U00002243', + "simg;": '\U00002A9E', + "simgE;": '\U00002AA0', + "siml;": '\U00002A9D', + "simlE;": '\U00002A9F', + "simne;": '\U00002246', + "simplus;": '\U00002A24', + "simrarr;": '\U00002972', + "slarr;": '\U00002190', + "smallsetminus;": '\U00002216', + "smashp;": '\U00002A33', + "smeparsl;": '\U000029E4', + "smid;": '\U00002223', + "smile;": '\U00002323', + "smt;": '\U00002AAA', + "smte;": '\U00002AAC', + "softcy;": '\U0000044C', + "sol;": '\U0000002F', + "solb;": '\U000029C4', + "solbar;": '\U0000233F', + "sopf;": '\U0001D564', + "spades;": '\U00002660', + "spadesuit;": '\U00002660', + "spar;": '\U00002225', + "sqcap;": '\U00002293', + "sqcup;": '\U00002294', + "sqsub;": '\U0000228F', + "sqsube;": '\U00002291', + "sqsubset;": '\U0000228F', + "sqsubseteq;": '\U00002291', + "sqsup;": '\U00002290', + "sqsupe;": '\U00002292', + "sqsupset;": '\U00002290', + "sqsupseteq;": '\U00002292', + "squ;": '\U000025A1', + "square;": '\U000025A1', + "squarf;": '\U000025AA', + "squf;": '\U000025AA', + "srarr;": '\U00002192', + "sscr;": '\U0001D4C8', + "ssetmn;": '\U00002216', + "ssmile;": '\U00002323', + "sstarf;": '\U000022C6', + "star;": '\U00002606', + "starf;": '\U00002605', + "straightepsilon;": '\U000003F5', + "straightphi;": '\U000003D5', + "strns;": '\U000000AF', + "sub;": '\U00002282', + "subE;": '\U00002AC5', + "subdot;": '\U00002ABD', + "sube;": '\U00002286', + "subedot;": '\U00002AC3', + "submult;": '\U00002AC1', + "subnE;": '\U00002ACB', + "subne;": '\U0000228A', + "subplus;": '\U00002ABF', + "subrarr;": '\U00002979', + "subset;": '\U00002282', + "subseteq;": '\U00002286', + "subseteqq;": '\U00002AC5', + "subsetneq;": '\U0000228A', + "subsetneqq;": '\U00002ACB', + "subsim;": '\U00002AC7', + "subsub;": '\U00002AD5', + "subsup;": '\U00002AD3', + "succ;": '\U0000227B', + "succapprox;": '\U00002AB8', + "succcurlyeq;": '\U0000227D', + "succeq;": '\U00002AB0', + "succnapprox;": '\U00002ABA', + "succneqq;": '\U00002AB6', + "succnsim;": '\U000022E9', + "succsim;": '\U0000227F', + "sum;": '\U00002211', + "sung;": '\U0000266A', + "sup;": '\U00002283', + "sup1;": '\U000000B9', + "sup2;": '\U000000B2', + "sup3;": '\U000000B3', + "supE;": '\U00002AC6', + "supdot;": '\U00002ABE', + "supdsub;": '\U00002AD8', + "supe;": '\U00002287', + "supedot;": '\U00002AC4', + "suphsol;": '\U000027C9', + "suphsub;": '\U00002AD7', + "suplarr;": '\U0000297B', + "supmult;": '\U00002AC2', + "supnE;": '\U00002ACC', + "supne;": '\U0000228B', + "supplus;": '\U00002AC0', + "supset;": '\U00002283', + "supseteq;": '\U00002287', + "supseteqq;": '\U00002AC6', + "supsetneq;": '\U0000228B', + "supsetneqq;": '\U00002ACC', + "supsim;": '\U00002AC8', + "supsub;": '\U00002AD4', + "supsup;": '\U00002AD6', + "swArr;": '\U000021D9', + "swarhk;": '\U00002926', + "swarr;": '\U00002199', + "swarrow;": '\U00002199', + "swnwar;": '\U0000292A', + "szlig;": '\U000000DF', + "target;": '\U00002316', + "tau;": '\U000003C4', + "tbrk;": '\U000023B4', + "tcaron;": '\U00000165', + "tcedil;": '\U00000163', + "tcy;": '\U00000442', + "tdot;": '\U000020DB', + "telrec;": '\U00002315', + "tfr;": '\U0001D531', + "there4;": '\U00002234', + "therefore;": '\U00002234', + "theta;": '\U000003B8', + "thetasym;": '\U000003D1', + "thetav;": '\U000003D1', + "thickapprox;": '\U00002248', + "thicksim;": '\U0000223C', + "thinsp;": '\U00002009', + "thkap;": '\U00002248', + "thksim;": '\U0000223C', + "thorn;": '\U000000FE', + "tilde;": '\U000002DC', + "times;": '\U000000D7', + "timesb;": '\U000022A0', + "timesbar;": '\U00002A31', + "timesd;": '\U00002A30', + "tint;": '\U0000222D', + "toea;": '\U00002928', + "top;": '\U000022A4', + "topbot;": '\U00002336', + "topcir;": '\U00002AF1', + "topf;": '\U0001D565', + "topfork;": '\U00002ADA', + "tosa;": '\U00002929', + "tprime;": '\U00002034', + "trade;": '\U00002122', + "triangle;": '\U000025B5', + "triangledown;": '\U000025BF', + "triangleleft;": '\U000025C3', + "trianglelefteq;": '\U000022B4', + "triangleq;": '\U0000225C', + "triangleright;": '\U000025B9', + "trianglerighteq;": '\U000022B5', + "tridot;": '\U000025EC', + "trie;": '\U0000225C', + "triminus;": '\U00002A3A', + "triplus;": '\U00002A39', + "trisb;": '\U000029CD', + "tritime;": '\U00002A3B', + "trpezium;": '\U000023E2', + "tscr;": '\U0001D4C9', + "tscy;": '\U00000446', + "tshcy;": '\U0000045B', + "tstrok;": '\U00000167', + "twixt;": '\U0000226C', + "twoheadleftarrow;": '\U0000219E', + "twoheadrightarrow;": '\U000021A0', + "uArr;": '\U000021D1', + "uHar;": '\U00002963', + "uacute;": '\U000000FA', + "uarr;": '\U00002191', + "ubrcy;": '\U0000045E', + "ubreve;": '\U0000016D', + "ucirc;": '\U000000FB', + "ucy;": '\U00000443', + "udarr;": '\U000021C5', + "udblac;": '\U00000171', + "udhar;": '\U0000296E', + "ufisht;": '\U0000297E', + "ufr;": '\U0001D532', + "ugrave;": '\U000000F9', + "uharl;": '\U000021BF', + "uharr;": '\U000021BE', + "uhblk;": '\U00002580', + "ulcorn;": '\U0000231C', + "ulcorner;": '\U0000231C', + "ulcrop;": '\U0000230F', + "ultri;": '\U000025F8', + "umacr;": '\U0000016B', + "uml;": '\U000000A8', + "uogon;": '\U00000173', + "uopf;": '\U0001D566', + "uparrow;": '\U00002191', + "updownarrow;": '\U00002195', + "upharpoonleft;": '\U000021BF', + "upharpoonright;": '\U000021BE', + "uplus;": '\U0000228E', + "upsi;": '\U000003C5', + "upsih;": '\U000003D2', + "upsilon;": '\U000003C5', + "upuparrows;": '\U000021C8', + "urcorn;": '\U0000231D', + "urcorner;": '\U0000231D', + "urcrop;": '\U0000230E', + "uring;": '\U0000016F', + "urtri;": '\U000025F9', + "uscr;": '\U0001D4CA', + "utdot;": '\U000022F0', + "utilde;": '\U00000169', + "utri;": '\U000025B5', + "utrif;": '\U000025B4', + "uuarr;": '\U000021C8', + "uuml;": '\U000000FC', + "uwangle;": '\U000029A7', + "vArr;": '\U000021D5', + "vBar;": '\U00002AE8', + "vBarv;": '\U00002AE9', + "vDash;": '\U000022A8', + "vangrt;": '\U0000299C', + "varepsilon;": '\U000003F5', + "varkappa;": '\U000003F0', + "varnothing;": '\U00002205', + "varphi;": '\U000003D5', + "varpi;": '\U000003D6', + "varpropto;": '\U0000221D', + "varr;": '\U00002195', + "varrho;": '\U000003F1', + "varsigma;": '\U000003C2', + "vartheta;": '\U000003D1', + "vartriangleleft;": '\U000022B2', + "vartriangleright;": '\U000022B3', + "vcy;": '\U00000432', + "vdash;": '\U000022A2', + "vee;": '\U00002228', + "veebar;": '\U000022BB', + "veeeq;": '\U0000225A', + "vellip;": '\U000022EE', + "verbar;": '\U0000007C', + "vert;": '\U0000007C', + "vfr;": '\U0001D533', + "vltri;": '\U000022B2', + "vopf;": '\U0001D567', + "vprop;": '\U0000221D', + "vrtri;": '\U000022B3', + "vscr;": '\U0001D4CB', + "vzigzag;": '\U0000299A', + "wcirc;": '\U00000175', + "wedbar;": '\U00002A5F', + "wedge;": '\U00002227', + "wedgeq;": '\U00002259', + "weierp;": '\U00002118', + "wfr;": '\U0001D534', + "wopf;": '\U0001D568', + "wp;": '\U00002118', + "wr;": '\U00002240', + "wreath;": '\U00002240', + "wscr;": '\U0001D4CC', + "xcap;": '\U000022C2', + "xcirc;": '\U000025EF', + "xcup;": '\U000022C3', + "xdtri;": '\U000025BD', + "xfr;": '\U0001D535', + "xhArr;": '\U000027FA', + "xharr;": '\U000027F7', + "xi;": '\U000003BE', + "xlArr;": '\U000027F8', + "xlarr;": '\U000027F5', + "xmap;": '\U000027FC', + "xnis;": '\U000022FB', + "xodot;": '\U00002A00', + "xopf;": '\U0001D569', + "xoplus;": '\U00002A01', + "xotime;": '\U00002A02', + "xrArr;": '\U000027F9', + "xrarr;": '\U000027F6', + "xscr;": '\U0001D4CD', + "xsqcup;": '\U00002A06', + "xuplus;": '\U00002A04', + "xutri;": '\U000025B3', + "xvee;": '\U000022C1', + "xwedge;": '\U000022C0', + "yacute;": '\U000000FD', + "yacy;": '\U0000044F', + "ycirc;": '\U00000177', + "ycy;": '\U0000044B', + "yen;": '\U000000A5', + "yfr;": '\U0001D536', + "yicy;": '\U00000457', + "yopf;": '\U0001D56A', + "yscr;": '\U0001D4CE', + "yucy;": '\U0000044E', + "yuml;": '\U000000FF', + "zacute;": '\U0000017A', + "zcaron;": '\U0000017E', + "zcy;": '\U00000437', + "zdot;": '\U0000017C', + "zeetrf;": '\U00002128', + "zeta;": '\U000003B6', + "zfr;": '\U0001D537', + "zhcy;": '\U00000436', + "zigrarr;": '\U000021DD', + "zopf;": '\U0001D56B', + "zscr;": '\U0001D4CF', + "zwj;": '\U0000200D', + "zwnj;": '\U0000200C', + "AElig": '\U000000C6', + "AMP": '\U00000026', + "Aacute": '\U000000C1', + "Acirc": '\U000000C2', + "Agrave": '\U000000C0', + "Aring": '\U000000C5', + "Atilde": '\U000000C3', + "Auml": '\U000000C4', + "COPY": '\U000000A9', + "Ccedil": '\U000000C7', + "ETH": '\U000000D0', + "Eacute": '\U000000C9', + "Ecirc": '\U000000CA', + "Egrave": '\U000000C8', + "Euml": '\U000000CB', + "GT": '\U0000003E', + "Iacute": '\U000000CD', + "Icirc": '\U000000CE', + "Igrave": '\U000000CC', + "Iuml": '\U000000CF', + "LT": '\U0000003C', + "Ntilde": '\U000000D1', + "Oacute": '\U000000D3', + "Ocirc": '\U000000D4', + "Ograve": '\U000000D2', + "Oslash": '\U000000D8', + "Otilde": '\U000000D5', + "Ouml": '\U000000D6', + "QUOT": '\U00000022', + "REG": '\U000000AE', + "THORN": '\U000000DE', + "Uacute": '\U000000DA', + "Ucirc": '\U000000DB', + "Ugrave": '\U000000D9', + "Uuml": '\U000000DC', + "Yacute": '\U000000DD', + "aacute": '\U000000E1', + "acirc": '\U000000E2', + "acute": '\U000000B4', + "aelig": '\U000000E6', + "agrave": '\U000000E0', + "amp": '\U00000026', + "aring": '\U000000E5', + "atilde": '\U000000E3', + "auml": '\U000000E4', + "brvbar": '\U000000A6', + "ccedil": '\U000000E7', + "cedil": '\U000000B8', + "cent": '\U000000A2', + "copy": '\U000000A9', + "curren": '\U000000A4', + "deg": '\U000000B0', + "divide": '\U000000F7', + "eacute": '\U000000E9', + "ecirc": '\U000000EA', + "egrave": '\U000000E8', + "eth": '\U000000F0', + "euml": '\U000000EB', + "frac12": '\U000000BD', + "frac14": '\U000000BC', + "frac34": '\U000000BE', + "gt": '\U0000003E', + "iacute": '\U000000ED', + "icirc": '\U000000EE', + "iexcl": '\U000000A1', + "igrave": '\U000000EC', + "iquest": '\U000000BF', + "iuml": '\U000000EF', + "laquo": '\U000000AB', + "lt": '\U0000003C', + "macr": '\U000000AF', + "micro": '\U000000B5', + "middot": '\U000000B7', + "nbsp": '\U000000A0', + "not": '\U000000AC', + "ntilde": '\U000000F1', + "oacute": '\U000000F3', + "ocirc": '\U000000F4', + "ograve": '\U000000F2', + "ordf": '\U000000AA', + "ordm": '\U000000BA', + "oslash": '\U000000F8', + "otilde": '\U000000F5', + "ouml": '\U000000F6', + "para": '\U000000B6', + "plusmn": '\U000000B1', + "pound": '\U000000A3', + "quot": '\U00000022', + "raquo": '\U000000BB', + "reg": '\U000000AE', + "sect": '\U000000A7', + "shy": '\U000000AD', + "sup1": '\U000000B9', + "sup2": '\U000000B2', + "sup3": '\U000000B3', + "szlig": '\U000000DF', + "thorn": '\U000000FE', + "times": '\U000000D7', + "uacute": '\U000000FA', + "ucirc": '\U000000FB', + "ugrave": '\U000000F9', + "uml": '\U000000A8', + "uuml": '\U000000FC', + "yacute": '\U000000FD', + "yen": '\U000000A5', + "yuml": '\U000000FF', +} + +// HTML entities that are two unicode codepoints. +var entity2 = map[string][2]rune{ + // TODO(nigeltao): Handle replacements that are wider than their names. + // "nLt;": {'\u226A', '\u20D2'}, + // "nGt;": {'\u226B', '\u20D2'}, + "NotEqualTilde;": {'\u2242', '\u0338'}, + "NotGreaterFullEqual;": {'\u2267', '\u0338'}, + "NotGreaterGreater;": {'\u226B', '\u0338'}, + "NotGreaterSlantEqual;": {'\u2A7E', '\u0338'}, + "NotHumpDownHump;": {'\u224E', '\u0338'}, + "NotHumpEqual;": {'\u224F', '\u0338'}, + "NotLeftTriangleBar;": {'\u29CF', '\u0338'}, + "NotLessLess;": {'\u226A', '\u0338'}, + "NotLessSlantEqual;": {'\u2A7D', '\u0338'}, + "NotNestedGreaterGreater;": {'\u2AA2', '\u0338'}, + "NotNestedLessLess;": {'\u2AA1', '\u0338'}, + "NotPrecedesEqual;": {'\u2AAF', '\u0338'}, + "NotRightTriangleBar;": {'\u29D0', '\u0338'}, + "NotSquareSubset;": {'\u228F', '\u0338'}, + "NotSquareSuperset;": {'\u2290', '\u0338'}, + "NotSubset;": {'\u2282', '\u20D2'}, + "NotSucceedsEqual;": {'\u2AB0', '\u0338'}, + "NotSucceedsTilde;": {'\u227F', '\u0338'}, + "NotSuperset;": {'\u2283', '\u20D2'}, + "ThickSpace;": {'\u205F', '\u200A'}, + "acE;": {'\u223E', '\u0333'}, + "bne;": {'\u003D', '\u20E5'}, + "bnequiv;": {'\u2261', '\u20E5'}, + "caps;": {'\u2229', '\uFE00'}, + "cups;": {'\u222A', '\uFE00'}, + "fjlig;": {'\u0066', '\u006A'}, + "gesl;": {'\u22DB', '\uFE00'}, + "gvertneqq;": {'\u2269', '\uFE00'}, + "gvnE;": {'\u2269', '\uFE00'}, + "lates;": {'\u2AAD', '\uFE00'}, + "lesg;": {'\u22DA', '\uFE00'}, + "lvertneqq;": {'\u2268', '\uFE00'}, + "lvnE;": {'\u2268', '\uFE00'}, + "nGg;": {'\u22D9', '\u0338'}, + "nGtv;": {'\u226B', '\u0338'}, + "nLl;": {'\u22D8', '\u0338'}, + "nLtv;": {'\u226A', '\u0338'}, + "nang;": {'\u2220', '\u20D2'}, + "napE;": {'\u2A70', '\u0338'}, + "napid;": {'\u224B', '\u0338'}, + "nbump;": {'\u224E', '\u0338'}, + "nbumpe;": {'\u224F', '\u0338'}, + "ncongdot;": {'\u2A6D', '\u0338'}, + "nedot;": {'\u2250', '\u0338'}, + "nesim;": {'\u2242', '\u0338'}, + "ngE;": {'\u2267', '\u0338'}, + "ngeqq;": {'\u2267', '\u0338'}, + "ngeqslant;": {'\u2A7E', '\u0338'}, + "nges;": {'\u2A7E', '\u0338'}, + "nlE;": {'\u2266', '\u0338'}, + "nleqq;": {'\u2266', '\u0338'}, + "nleqslant;": {'\u2A7D', '\u0338'}, + "nles;": {'\u2A7D', '\u0338'}, + "notinE;": {'\u22F9', '\u0338'}, + "notindot;": {'\u22F5', '\u0338'}, + "nparsl;": {'\u2AFD', '\u20E5'}, + "npart;": {'\u2202', '\u0338'}, + "npre;": {'\u2AAF', '\u0338'}, + "npreceq;": {'\u2AAF', '\u0338'}, + "nrarrc;": {'\u2933', '\u0338'}, + "nrarrw;": {'\u219D', '\u0338'}, + "nsce;": {'\u2AB0', '\u0338'}, + "nsubE;": {'\u2AC5', '\u0338'}, + "nsubset;": {'\u2282', '\u20D2'}, + "nsubseteqq;": {'\u2AC5', '\u0338'}, + "nsucceq;": {'\u2AB0', '\u0338'}, + "nsupE;": {'\u2AC6', '\u0338'}, + "nsupset;": {'\u2283', '\u20D2'}, + "nsupseteqq;": {'\u2AC6', '\u0338'}, + "nvap;": {'\u224D', '\u20D2'}, + "nvge;": {'\u2265', '\u20D2'}, + "nvgt;": {'\u003E', '\u20D2'}, + "nvle;": {'\u2264', '\u20D2'}, + "nvlt;": {'\u003C', '\u20D2'}, + "nvltrie;": {'\u22B4', '\u20D2'}, + "nvrtrie;": {'\u22B5', '\u20D2'}, + "nvsim;": {'\u223C', '\u20D2'}, + "race;": {'\u223D', '\u0331'}, + "smtes;": {'\u2AAC', '\uFE00'}, + "sqcaps;": {'\u2293', '\uFE00'}, + "sqcups;": {'\u2294', '\uFE00'}, + "varsubsetneq;": {'\u228A', '\uFE00'}, + "varsubsetneqq;": {'\u2ACB', '\uFE00'}, + "varsupsetneq;": {'\u228B', '\uFE00'}, + "varsupsetneqq;": {'\u2ACC', '\uFE00'}, + "vnsub;": {'\u2282', '\u20D2'}, + "vnsup;": {'\u2283', '\u20D2'}, + "vsubnE;": {'\u2ACB', '\uFE00'}, + "vsubne;": {'\u228A', '\uFE00'}, + "vsupnE;": {'\u2ACC', '\uFE00'}, + "vsupne;": {'\u228B', '\uFE00'}, +} diff --git a/tests/vendor/golang.org/x/net/html/escape.go b/tests/vendor/golang.org/x/net/html/escape.go new file mode 100644 index 000000000..04c6bec21 --- /dev/null +++ b/tests/vendor/golang.org/x/net/html/escape.go @@ -0,0 +1,339 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package html + +import ( + "bytes" + "strings" + "unicode/utf8" +) + +// These replacements permit compatibility with old numeric entities that +// assumed Windows-1252 encoding. +// https://html.spec.whatwg.org/multipage/syntax.html#consume-a-character-reference +var replacementTable = [...]rune{ + '\u20AC', // First entry is what 0x80 should be replaced with. + '\u0081', + '\u201A', + '\u0192', + '\u201E', + '\u2026', + '\u2020', + '\u2021', + '\u02C6', + '\u2030', + '\u0160', + '\u2039', + '\u0152', + '\u008D', + '\u017D', + '\u008F', + '\u0090', + '\u2018', + '\u2019', + '\u201C', + '\u201D', + '\u2022', + '\u2013', + '\u2014', + '\u02DC', + '\u2122', + '\u0161', + '\u203A', + '\u0153', + '\u009D', + '\u017E', + '\u0178', // Last entry is 0x9F. + // 0x00->'\uFFFD' is handled programmatically. + // 0x0D->'\u000D' is a no-op. +} + +// unescapeEntity reads an entity like "<" from b[src:] and writes the +// corresponding "<" to b[dst:], returning the incremented dst and src cursors. +// Precondition: b[src] == '&' && dst <= src. +// attribute should be true if parsing an attribute value. +func unescapeEntity(b []byte, dst, src int, attribute bool) (dst1, src1 int) { + // https://html.spec.whatwg.org/multipage/syntax.html#consume-a-character-reference + + // i starts at 1 because we already know that s[0] == '&'. + i, s := 1, b[src:] + + if len(s) <= 1 { + b[dst] = b[src] + return dst + 1, src + 1 + } + + if s[i] == '#' { + if len(s) <= 3 { // We need to have at least "&#.". + b[dst] = b[src] + return dst + 1, src + 1 + } + i++ + c := s[i] + hex := false + if c == 'x' || c == 'X' { + hex = true + i++ + } + + x := '\x00' + for i < len(s) { + c = s[i] + i++ + if hex { + if '0' <= c && c <= '9' { + x = 16*x + rune(c) - '0' + continue + } else if 'a' <= c && c <= 'f' { + x = 16*x + rune(c) - 'a' + 10 + continue + } else if 'A' <= c && c <= 'F' { + x = 16*x + rune(c) - 'A' + 10 + continue + } + } else if '0' <= c && c <= '9' { + x = 10*x + rune(c) - '0' + continue + } + if c != ';' { + i-- + } + break + } + + if i <= 3 { // No characters matched. + b[dst] = b[src] + return dst + 1, src + 1 + } + + if 0x80 <= x && x <= 0x9F { + // Replace characters from Windows-1252 with UTF-8 equivalents. + x = replacementTable[x-0x80] + } else if x == 0 || (0xD800 <= x && x <= 0xDFFF) || x > 0x10FFFF { + // Replace invalid characters with the replacement character. + x = '\uFFFD' + } + + return dst + utf8.EncodeRune(b[dst:], x), src + i + } + + // Consume the maximum number of characters possible, with the + // consumed characters matching one of the named references. + + for i < len(s) { + c := s[i] + i++ + // Lower-cased characters are more common in entities, so we check for them first. + if 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' || '0' <= c && c <= '9' { + continue + } + if c != ';' { + i-- + } + break + } + + entityName := string(s[1:i]) + if entityName == "" { + // No-op. + } else if attribute && entityName[len(entityName)-1] != ';' && len(s) > i && s[i] == '=' { + // No-op. + } else if x := entity[entityName]; x != 0 { + return dst + utf8.EncodeRune(b[dst:], x), src + i + } else if x := entity2[entityName]; x[0] != 0 { + dst1 := dst + utf8.EncodeRune(b[dst:], x[0]) + return dst1 + utf8.EncodeRune(b[dst1:], x[1]), src + i + } else if !attribute { + maxLen := len(entityName) - 1 + if maxLen > longestEntityWithoutSemicolon { + maxLen = longestEntityWithoutSemicolon + } + for j := maxLen; j > 1; j-- { + if x := entity[entityName[:j]]; x != 0 { + return dst + utf8.EncodeRune(b[dst:], x), src + j + 1 + } + } + } + + dst1, src1 = dst+i, src+i + copy(b[dst:dst1], b[src:src1]) + return dst1, src1 +} + +// unescape unescapes b's entities in-place, so that "a<b" becomes "a' byte that, per above, we'd like to avoid escaping unless we have to. +// +// Studying the summary table (and T actions in its '>' column) closely, we +// only need to escape in states 43, 44, 49, 51 and 52. State 43 is at the +// start of the comment data. State 52 is after a '!'. The other three states +// are after a '-'. +// +// Our algorithm is thus to escape every '&' and to escape '>' if and only if: +// - The '>' is after a '!' or '-' (in the unescaped data) or +// - The '>' is at the start of the comment data (after the opening ""); err != nil { + return err + } + return nil + case DoctypeNode: + if _, err := w.WriteString("') + case RawNode: + _, err := w.WriteString(n.Data) + return err + default: + return errors.New("html: unknown node type") + } + + // Render the opening tag. + if err := w.WriteByte('<'); err != nil { + return err + } + if _, err := w.WriteString(n.Data); err != nil { + return err + } + for _, a := range n.Attr { + if err := w.WriteByte(' '); err != nil { + return err + } + if a.Namespace != "" { + if _, err := w.WriteString(a.Namespace); err != nil { + return err + } + if err := w.WriteByte(':'); err != nil { + return err + } + } + if _, err := w.WriteString(a.Key); err != nil { + return err + } + if _, err := w.WriteString(`="`); err != nil { + return err + } + if err := escape(w, a.Val); err != nil { + return err + } + if err := w.WriteByte('"'); err != nil { + return err + } + } + if voidElements[n.Data] { + if n.FirstChild != nil { + return fmt.Errorf("html: void element <%s> has child nodes", n.Data) + } + _, err := w.WriteString("/>") + return err + } + if err := w.WriteByte('>'); err != nil { + return err + } + + // Add initial newline where there is danger of a newline beging ignored. + if c := n.FirstChild; c != nil && c.Type == TextNode && strings.HasPrefix(c.Data, "\n") { + switch n.Data { + case "pre", "listing", "textarea": + if err := w.WriteByte('\n'); err != nil { + return err + } + } + } + + // Render any child nodes + if childTextNodesAreLiteral(n) { + for c := n.FirstChild; c != nil; c = c.NextSibling { + if c.Type == TextNode { + if _, err := w.WriteString(c.Data); err != nil { + return err + } + } else { + if err := render1(w, c); err != nil { + return err + } + } + } + if n.Data == "plaintext" { + // Don't render anything else. must be the + // last element in the file, with no closing tag. + return plaintextAbort + } + } else { + for c := n.FirstChild; c != nil; c = c.NextSibling { + if err := render1(w, c); err != nil { + return err + } + } + } + + // Render the </xxx> closing tag. + if _, err := w.WriteString("</"); err != nil { + return err + } + if _, err := w.WriteString(n.Data); err != nil { + return err + } + return w.WriteByte('>') +} + +func childTextNodesAreLiteral(n *Node) bool { + // Per WHATWG HTML 13.3, if the parent of the current node is a style, + // script, xmp, iframe, noembed, noframes, or plaintext element, and the + // current node is a text node, append the value of the node's data + // literally. The specification is not explicit about it, but we only + // enforce this if we are in the HTML namespace (i.e. when the namespace is + // ""). + // NOTE: we also always include noscript elements, although the + // specification states that they should only be rendered as such if + // scripting is enabled for the node (which is not something we track). + if n.Namespace != "" { + return false + } + switch n.Data { + case "iframe", "noembed", "noframes", "noscript", "plaintext", "script", "style", "xmp": + return true + default: + return false + } +} + +// writeQuoted writes s to w surrounded by quotes. Normally it will use double +// quotes, but if s contains a double quote, it will use single quotes. +// It is used for writing the identifiers in a doctype declaration. +// In valid HTML, they can't contain both types of quotes. +func writeQuoted(w writer, s string) error { + var q byte = '"' + if strings.Contains(s, `"`) { + q = '\'' + } + if err := w.WriteByte(q); err != nil { + return err + } + if _, err := w.WriteString(s); err != nil { + return err + } + if err := w.WriteByte(q); err != nil { + return err + } + return nil +} + +// Section 12.1.2, "Elements", gives this list of void elements. Void elements +// are those that can't have any contents. +var voidElements = map[string]bool{ + "area": true, + "base": true, + "br": true, + "col": true, + "embed": true, + "hr": true, + "img": true, + "input": true, + "keygen": true, // "keygen" has been removed from the spec, but are kept here for backwards compatibility. + "link": true, + "meta": true, + "param": true, + "source": true, + "track": true, + "wbr": true, +} diff --git a/tests/vendor/golang.org/x/net/html/token.go b/tests/vendor/golang.org/x/net/html/token.go new file mode 100644 index 000000000..6598c1f7b --- /dev/null +++ b/tests/vendor/golang.org/x/net/html/token.go @@ -0,0 +1,1286 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package html + +import ( + "bytes" + "errors" + "io" + "strconv" + "strings" + + "golang.org/x/net/html/atom" +) + +// A TokenType is the type of a Token. +type TokenType uint32 + +const ( + // ErrorToken means that an error occurred during tokenization. + ErrorToken TokenType = iota + // TextToken means a text node. + TextToken + // A StartTagToken looks like <a>. + StartTagToken + // An EndTagToken looks like </a>. + EndTagToken + // A SelfClosingTagToken tag looks like <br/>. + SelfClosingTagToken + // A CommentToken looks like <!--x-->. + CommentToken + // A DoctypeToken looks like <!DOCTYPE x> + DoctypeToken +) + +// ErrBufferExceeded means that the buffering limit was exceeded. +var ErrBufferExceeded = errors.New("max buffer exceeded") + +// String returns a string representation of the TokenType. +func (t TokenType) String() string { + switch t { + case ErrorToken: + return "Error" + case TextToken: + return "Text" + case StartTagToken: + return "StartTag" + case EndTagToken: + return "EndTag" + case SelfClosingTagToken: + return "SelfClosingTag" + case CommentToken: + return "Comment" + case DoctypeToken: + return "Doctype" + } + return "Invalid(" + strconv.Itoa(int(t)) + ")" +} + +// An Attribute is an attribute namespace-key-value triple. Namespace is +// non-empty for foreign attributes like xlink, Key is alphabetic (and hence +// does not contain escapable characters like '&', '<' or '>'), and Val is +// unescaped (it looks like "a<b" rather than "a&lt;b"). +// +// Namespace is only used by the parser, not the tokenizer. +type Attribute struct { + Namespace, Key, Val string +} + +// A Token consists of a TokenType and some Data (tag name for start and end +// tags, content for text, comments and doctypes). A tag Token may also contain +// a slice of Attributes. Data is unescaped for all Tokens (it looks like "a<b" +// rather than "a&lt;b"). For tag Tokens, DataAtom is the atom for Data, or +// zero if Data is not a known tag name. +type Token struct { + Type TokenType + DataAtom atom.Atom + Data string + Attr []Attribute +} + +// tagString returns a string representation of a tag Token's Data and Attr. +func (t Token) tagString() string { + if len(t.Attr) == 0 { + return t.Data + } + buf := bytes.NewBufferString(t.Data) + for _, a := range t.Attr { + buf.WriteByte(' ') + buf.WriteString(a.Key) + buf.WriteString(`="`) + escape(buf, a.Val) + buf.WriteByte('"') + } + return buf.String() +} + +// String returns a string representation of the Token. +func (t Token) String() string { + switch t.Type { + case ErrorToken: + return "" + case TextToken: + return EscapeString(t.Data) + case StartTagToken: + return "<" + t.tagString() + ">" + case EndTagToken: + return "</" + t.tagString() + ">" + case SelfClosingTagToken: + return "<" + t.tagString() + "/>" + case CommentToken: + return "<!--" + escapeCommentString(t.Data) + "-->" + case DoctypeToken: + return "<!DOCTYPE " + EscapeString(t.Data) + ">" + } + return "Invalid(" + strconv.Itoa(int(t.Type)) + ")" +} + +// span is a range of bytes in a Tokenizer's buffer. The start is inclusive, +// the end is exclusive. +type span struct { + start, end int +} + +// A Tokenizer returns a stream of HTML Tokens. +type Tokenizer struct { + // r is the source of the HTML text. + r io.Reader + // tt is the TokenType of the current token. + tt TokenType + // err is the first error encountered during tokenization. It is possible + // for tt != Error && err != nil to hold: this means that Next returned a + // valid token but the subsequent Next call will return an error token. + // For example, if the HTML text input was just "plain", then the first + // Next call would set z.err to io.EOF but return a TextToken, and all + // subsequent Next calls would return an ErrorToken. + // err is never reset. Once it becomes non-nil, it stays non-nil. + err error + // readErr is the error returned by the io.Reader r. It is separate from + // err because it is valid for an io.Reader to return (n int, err1 error) + // such that n > 0 && err1 != nil, and callers should always process the + // n > 0 bytes before considering the error err1. + readErr error + // buf[raw.start:raw.end] holds the raw bytes of the current token. + // buf[raw.end:] is buffered input that will yield future tokens. + raw span + buf []byte + // maxBuf limits the data buffered in buf. A value of 0 means unlimited. + maxBuf int + // buf[data.start:data.end] holds the raw bytes of the current token's data: + // a text token's text, a tag token's tag name, etc. + data span + // pendingAttr is the attribute key and value currently being tokenized. + // When complete, pendingAttr is pushed onto attr. nAttrReturned is + // incremented on each call to TagAttr. + pendingAttr [2]span + attr [][2]span + nAttrReturned int + // rawTag is the "script" in "</script>" that closes the next token. If + // non-empty, the subsequent call to Next will return a raw or RCDATA text + // token: one that treats "<p>" as text instead of an element. + // rawTag's contents are lower-cased. + rawTag string + // textIsRaw is whether the current text token's data is not escaped. + textIsRaw bool + // convertNUL is whether NUL bytes in the current token's data should + // be converted into \ufffd replacement characters. + convertNUL bool + // allowCDATA is whether CDATA sections are allowed in the current context. + allowCDATA bool +} + +// AllowCDATA sets whether or not the tokenizer recognizes <![CDATA[foo]]> as +// the text "foo". The default value is false, which means to recognize it as +// a bogus comment "<!-- [CDATA[foo]] -->" instead. +// +// Strictly speaking, an HTML5 compliant tokenizer should allow CDATA if and +// only if tokenizing foreign content, such as MathML and SVG. However, +// tracking foreign-contentness is difficult to do purely in the tokenizer, +// as opposed to the parser, due to HTML integration points: an <svg> element +// can contain a <foreignObject> that is foreign-to-SVG but not foreign-to- +// HTML. For strict compliance with the HTML5 tokenization algorithm, it is the +// responsibility of the user of a tokenizer to call AllowCDATA as appropriate. +// In practice, if using the tokenizer without caring whether MathML or SVG +// CDATA is text or comments, such as tokenizing HTML to find all the anchor +// text, it is acceptable to ignore this responsibility. +func (z *Tokenizer) AllowCDATA(allowCDATA bool) { + z.allowCDATA = allowCDATA +} + +// NextIsNotRawText instructs the tokenizer that the next token should not be +// considered as 'raw text'. Some elements, such as script and title elements, +// normally require the next token after the opening tag to be 'raw text' that +// has no child elements. For example, tokenizing "<title>a<b>c</b>d</title>" +// yields a start tag token for "<title>", a text token for "a<b>c</b>d", and +// an end tag token for "</title>". There are no distinct start tag or end tag +// tokens for the "<b>" and "</b>". +// +// This tokenizer implementation will generally look for raw text at the right +// times. Strictly speaking, an HTML5 compliant tokenizer should not look for +// raw text if in foreign content: <title> generally needs raw text, but a +// <title> inside an <svg> does not. Another example is that a <textarea> +// generally needs raw text, but a <textarea> is not allowed as an immediate +// child of a <select>; in normal parsing, a <textarea> implies </select>, but +// one cannot close the implicit element when parsing a <select>'s InnerHTML. +// Similarly to AllowCDATA, tracking the correct moment to override raw-text- +// ness is difficult to do purely in the tokenizer, as opposed to the parser. +// For strict compliance with the HTML5 tokenization algorithm, it is the +// responsibility of the user of a tokenizer to call NextIsNotRawText as +// appropriate. In practice, like AllowCDATA, it is acceptable to ignore this +// responsibility for basic usage. +// +// Note that this 'raw text' concept is different from the one offered by the +// Tokenizer.Raw method. +func (z *Tokenizer) NextIsNotRawText() { + z.rawTag = "" +} + +// Err returns the error associated with the most recent ErrorToken token. +// This is typically io.EOF, meaning the end of tokenization. +func (z *Tokenizer) Err() error { + if z.tt != ErrorToken { + return nil + } + return z.err +} + +// readByte returns the next byte from the input stream, doing a buffered read +// from z.r into z.buf if necessary. z.buf[z.raw.start:z.raw.end] remains a contiguous byte +// slice that holds all the bytes read so far for the current token. +// It sets z.err if the underlying reader returns an error. +// Pre-condition: z.err == nil. +func (z *Tokenizer) readByte() byte { + if z.raw.end >= len(z.buf) { + // Our buffer is exhausted and we have to read from z.r. Check if the + // previous read resulted in an error. + if z.readErr != nil { + z.err = z.readErr + return 0 + } + // We copy z.buf[z.raw.start:z.raw.end] to the beginning of z.buf. If the length + // z.raw.end - z.raw.start is more than half the capacity of z.buf, then we + // allocate a new buffer before the copy. + c := cap(z.buf) + d := z.raw.end - z.raw.start + var buf1 []byte + if 2*d > c { + buf1 = make([]byte, d, 2*c) + } else { + buf1 = z.buf[:d] + } + copy(buf1, z.buf[z.raw.start:z.raw.end]) + if x := z.raw.start; x != 0 { + // Adjust the data/attr spans to refer to the same contents after the copy. + z.data.start -= x + z.data.end -= x + z.pendingAttr[0].start -= x + z.pendingAttr[0].end -= x + z.pendingAttr[1].start -= x + z.pendingAttr[1].end -= x + for i := range z.attr { + z.attr[i][0].start -= x + z.attr[i][0].end -= x + z.attr[i][1].start -= x + z.attr[i][1].end -= x + } + } + z.raw.start, z.raw.end, z.buf = 0, d, buf1[:d] + // Now that we have copied the live bytes to the start of the buffer, + // we read from z.r into the remainder. + var n int + n, z.readErr = readAtLeastOneByte(z.r, buf1[d:cap(buf1)]) + if n == 0 { + z.err = z.readErr + return 0 + } + z.buf = buf1[:d+n] + } + x := z.buf[z.raw.end] + z.raw.end++ + if z.maxBuf > 0 && z.raw.end-z.raw.start >= z.maxBuf { + z.err = ErrBufferExceeded + return 0 + } + return x +} + +// Buffered returns a slice containing data buffered but not yet tokenized. +func (z *Tokenizer) Buffered() []byte { + return z.buf[z.raw.end:] +} + +// readAtLeastOneByte wraps an io.Reader so that reading cannot return (0, nil). +// It returns io.ErrNoProgress if the underlying r.Read method returns (0, nil) +// too many times in succession. +func readAtLeastOneByte(r io.Reader, b []byte) (int, error) { + for i := 0; i < 100; i++ { + if n, err := r.Read(b); n != 0 || err != nil { + return n, err + } + } + return 0, io.ErrNoProgress +} + +// skipWhiteSpace skips past any white space. +func (z *Tokenizer) skipWhiteSpace() { + if z.err != nil { + return + } + for { + c := z.readByte() + if z.err != nil { + return + } + switch c { + case ' ', '\n', '\r', '\t', '\f': + // No-op. + default: + z.raw.end-- + return + } + } +} + +// readRawOrRCDATA reads until the next "</foo>", where "foo" is z.rawTag and +// is typically something like "script" or "textarea". +func (z *Tokenizer) readRawOrRCDATA() { + if z.rawTag == "script" { + z.readScript() + z.textIsRaw = true + z.rawTag = "" + return + } +loop: + for { + c := z.readByte() + if z.err != nil { + break loop + } + if c != '<' { + continue loop + } + c = z.readByte() + if z.err != nil { + break loop + } + if c != '/' { + z.raw.end-- + continue loop + } + if z.readRawEndTag() || z.err != nil { + break loop + } + } + z.data.end = z.raw.end + // A textarea's or title's RCDATA can contain escaped entities. + z.textIsRaw = z.rawTag != "textarea" && z.rawTag != "title" + z.rawTag = "" +} + +// readRawEndTag attempts to read a tag like "</foo>", where "foo" is z.rawTag. +// If it succeeds, it backs up the input position to reconsume the tag and +// returns true. Otherwise it returns false. The opening "</" has already been +// consumed. +func (z *Tokenizer) readRawEndTag() bool { + for i := 0; i < len(z.rawTag); i++ { + c := z.readByte() + if z.err != nil { + return false + } + if c != z.rawTag[i] && c != z.rawTag[i]-('a'-'A') { + z.raw.end-- + return false + } + } + c := z.readByte() + if z.err != nil { + return false + } + switch c { + case ' ', '\n', '\r', '\t', '\f', '/', '>': + // The 3 is 2 for the leading "</" plus 1 for the trailing character c. + z.raw.end -= 3 + len(z.rawTag) + return true + } + z.raw.end-- + return false +} + +// readScript reads until the next </script> tag, following the byzantine +// rules for escaping/hiding the closing tag. +func (z *Tokenizer) readScript() { + defer func() { + z.data.end = z.raw.end + }() + var c byte + +scriptData: + c = z.readByte() + if z.err != nil { + return + } + if c == '<' { + goto scriptDataLessThanSign + } + goto scriptData + +scriptDataLessThanSign: + c = z.readByte() + if z.err != nil { + return + } + switch c { + case '/': + goto scriptDataEndTagOpen + case '!': + goto scriptDataEscapeStart + } + z.raw.end-- + goto scriptData + +scriptDataEndTagOpen: + if z.readRawEndTag() || z.err != nil { + return + } + goto scriptData + +scriptDataEscapeStart: + c = z.readByte() + if z.err != nil { + return + } + if c == '-' { + goto scriptDataEscapeStartDash + } + z.raw.end-- + goto scriptData + +scriptDataEscapeStartDash: + c = z.readByte() + if z.err != nil { + return + } + if c == '-' { + goto scriptDataEscapedDashDash + } + z.raw.end-- + goto scriptData + +scriptDataEscaped: + c = z.readByte() + if z.err != nil { + return + } + switch c { + case '-': + goto scriptDataEscapedDash + case '<': + goto scriptDataEscapedLessThanSign + } + goto scriptDataEscaped + +scriptDataEscapedDash: + c = z.readByte() + if z.err != nil { + return + } + switch c { + case '-': + goto scriptDataEscapedDashDash + case '<': + goto scriptDataEscapedLessThanSign + } + goto scriptDataEscaped + +scriptDataEscapedDashDash: + c = z.readByte() + if z.err != nil { + return + } + switch c { + case '-': + goto scriptDataEscapedDashDash + case '<': + goto scriptDataEscapedLessThanSign + case '>': + goto scriptData + } + goto scriptDataEscaped + +scriptDataEscapedLessThanSign: + c = z.readByte() + if z.err != nil { + return + } + if c == '/' { + goto scriptDataEscapedEndTagOpen + } + if 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' { + goto scriptDataDoubleEscapeStart + } + z.raw.end-- + goto scriptData + +scriptDataEscapedEndTagOpen: + if z.readRawEndTag() || z.err != nil { + return + } + goto scriptDataEscaped + +scriptDataDoubleEscapeStart: + z.raw.end-- + for i := 0; i < len("script"); i++ { + c = z.readByte() + if z.err != nil { + return + } + if c != "script"[i] && c != "SCRIPT"[i] { + z.raw.end-- + goto scriptDataEscaped + } + } + c = z.readByte() + if z.err != nil { + return + } + switch c { + case ' ', '\n', '\r', '\t', '\f', '/', '>': + goto scriptDataDoubleEscaped + } + z.raw.end-- + goto scriptDataEscaped + +scriptDataDoubleEscaped: + c = z.readByte() + if z.err != nil { + return + } + switch c { + case '-': + goto scriptDataDoubleEscapedDash + case '<': + goto scriptDataDoubleEscapedLessThanSign + } + goto scriptDataDoubleEscaped + +scriptDataDoubleEscapedDash: + c = z.readByte() + if z.err != nil { + return + } + switch c { + case '-': + goto scriptDataDoubleEscapedDashDash + case '<': + goto scriptDataDoubleEscapedLessThanSign + } + goto scriptDataDoubleEscaped + +scriptDataDoubleEscapedDashDash: + c = z.readByte() + if z.err != nil { + return + } + switch c { + case '-': + goto scriptDataDoubleEscapedDashDash + case '<': + goto scriptDataDoubleEscapedLessThanSign + case '>': + goto scriptData + } + goto scriptDataDoubleEscaped + +scriptDataDoubleEscapedLessThanSign: + c = z.readByte() + if z.err != nil { + return + } + if c == '/' { + goto scriptDataDoubleEscapeEnd + } + z.raw.end-- + goto scriptDataDoubleEscaped + +scriptDataDoubleEscapeEnd: + if z.readRawEndTag() { + z.raw.end += len("</script>") + goto scriptDataEscaped + } + if z.err != nil { + return + } + goto scriptDataDoubleEscaped +} + +// readComment reads the next comment token starting with "<!--". The opening +// "<!--" has already been consumed. +func (z *Tokenizer) readComment() { + // When modifying this function, consider manually increasing the + // maxSuffixLen constant in func TestComments, from 6 to e.g. 9 or more. + // That increase should only be temporary, not committed, as it + // exponentially affects the test running time. + + z.data.start = z.raw.end + defer func() { + if z.data.end < z.data.start { + // It's a comment with no data, like <!-->. + z.data.end = z.data.start + } + }() + + var dashCount int + beginning := true + for { + c := z.readByte() + if z.err != nil { + z.data.end = z.calculateAbruptCommentDataEnd() + return + } + switch c { + case '-': + dashCount++ + continue + case '>': + if dashCount >= 2 || beginning { + z.data.end = z.raw.end - len("-->") + return + } + case '!': + if dashCount >= 2 { + c = z.readByte() + if z.err != nil { + z.data.end = z.calculateAbruptCommentDataEnd() + return + } else if c == '>' { + z.data.end = z.raw.end - len("--!>") + return + } else if c == '-' { + dashCount = 1 + beginning = false + continue + } + } + } + dashCount = 0 + beginning = false + } +} + +func (z *Tokenizer) calculateAbruptCommentDataEnd() int { + raw := z.Raw() + const prefixLen = len("<!--") + if len(raw) >= prefixLen { + raw = raw[prefixLen:] + if hasSuffix(raw, "--!") { + return z.raw.end - 3 + } else if hasSuffix(raw, "--") { + return z.raw.end - 2 + } else if hasSuffix(raw, "-") { + return z.raw.end - 1 + } + } + return z.raw.end +} + +func hasSuffix(b []byte, suffix string) bool { + if len(b) < len(suffix) { + return false + } + b = b[len(b)-len(suffix):] + for i := range b { + if b[i] != suffix[i] { + return false + } + } + return true +} + +// readUntilCloseAngle reads until the next ">". +func (z *Tokenizer) readUntilCloseAngle() { + z.data.start = z.raw.end + for { + c := z.readByte() + if z.err != nil { + z.data.end = z.raw.end + return + } + if c == '>' { + z.data.end = z.raw.end - len(">") + return + } + } +} + +// readMarkupDeclaration reads the next token starting with "<!". It might be +// a "<!--comment-->", a "<!DOCTYPE foo>", a "<![CDATA[section]]>" or +// "<!a bogus comment". The opening "<!" has already been consumed. +func (z *Tokenizer) readMarkupDeclaration() TokenType { + z.data.start = z.raw.end + var c [2]byte + for i := 0; i < 2; i++ { + c[i] = z.readByte() + if z.err != nil { + z.data.end = z.raw.end + return CommentToken + } + } + if c[0] == '-' && c[1] == '-' { + z.readComment() + return CommentToken + } + z.raw.end -= 2 + if z.readDoctype() { + return DoctypeToken + } + if z.allowCDATA && z.readCDATA() { + z.convertNUL = true + return TextToken + } + // It's a bogus comment. + z.readUntilCloseAngle() + return CommentToken +} + +// readDoctype attempts to read a doctype declaration and returns true if +// successful. The opening "<!" has already been consumed. +func (z *Tokenizer) readDoctype() bool { + const s = "DOCTYPE" + for i := 0; i < len(s); i++ { + c := z.readByte() + if z.err != nil { + z.data.end = z.raw.end + return false + } + if c != s[i] && c != s[i]+('a'-'A') { + // Back up to read the fragment of "DOCTYPE" again. + z.raw.end = z.data.start + return false + } + } + if z.skipWhiteSpace(); z.err != nil { + z.data.start = z.raw.end + z.data.end = z.raw.end + return true + } + z.readUntilCloseAngle() + return true +} + +// readCDATA attempts to read a CDATA section and returns true if +// successful. The opening "<!" has already been consumed. +func (z *Tokenizer) readCDATA() bool { + const s = "[CDATA[" + for i := 0; i < len(s); i++ { + c := z.readByte() + if z.err != nil { + z.data.end = z.raw.end + return false + } + if c != s[i] { + // Back up to read the fragment of "[CDATA[" again. + z.raw.end = z.data.start + return false + } + } + z.data.start = z.raw.end + brackets := 0 + for { + c := z.readByte() + if z.err != nil { + z.data.end = z.raw.end + return true + } + switch c { + case ']': + brackets++ + case '>': + if brackets >= 2 { + z.data.end = z.raw.end - len("]]>") + return true + } + brackets = 0 + default: + brackets = 0 + } + } +} + +// startTagIn returns whether the start tag in z.buf[z.data.start:z.data.end] +// case-insensitively matches any element of ss. +func (z *Tokenizer) startTagIn(ss ...string) bool { +loop: + for _, s := range ss { + if z.data.end-z.data.start != len(s) { + continue loop + } + for i := 0; i < len(s); i++ { + c := z.buf[z.data.start+i] + if 'A' <= c && c <= 'Z' { + c += 'a' - 'A' + } + if c != s[i] { + continue loop + } + } + return true + } + return false +} + +// readStartTag reads the next start tag token. The opening "<a" has already +// been consumed, where 'a' means anything in [A-Za-z]. +func (z *Tokenizer) readStartTag() TokenType { + z.readTag(true) + if z.err != nil { + return ErrorToken + } + // Several tags flag the tokenizer's next token as raw. + c, raw := z.buf[z.data.start], false + if 'A' <= c && c <= 'Z' { + c += 'a' - 'A' + } + switch c { + case 'i': + raw = z.startTagIn("iframe") + case 'n': + raw = z.startTagIn("noembed", "noframes", "noscript") + case 'p': + raw = z.startTagIn("plaintext") + case 's': + raw = z.startTagIn("script", "style") + case 't': + raw = z.startTagIn("textarea", "title") + case 'x': + raw = z.startTagIn("xmp") + } + if raw { + z.rawTag = strings.ToLower(string(z.buf[z.data.start:z.data.end])) + } + // Look for a self-closing token (e.g. <br/>). + // + // Originally, we did this by just checking that the last character of the + // tag (ignoring the closing bracket) was a solidus (/) character, but this + // is not always accurate. + // + // We need to be careful that we don't misinterpret a non-self-closing tag + // as self-closing, as can happen if the tag contains unquoted attribute + // values (i.e. <p a=/>). + // + // To avoid this, we check that the last non-bracket character of the tag + // (z.raw.end-2) isn't the same character as the last non-quote character of + // the last attribute of the tag (z.pendingAttr[1].end-1), if the tag has + // attributes. + nAttrs := len(z.attr) + if z.err == nil && z.buf[z.raw.end-2] == '/' && (nAttrs == 0 || z.raw.end-2 != z.attr[nAttrs-1][1].end-1) { + return SelfClosingTagToken + } + return StartTagToken +} + +// readTag reads the next tag token and its attributes. If saveAttr, those +// attributes are saved in z.attr, otherwise z.attr is set to an empty slice. +// The opening "<a" or "</a" has already been consumed, where 'a' means anything +// in [A-Za-z]. +func (z *Tokenizer) readTag(saveAttr bool) { + z.attr = z.attr[:0] + z.nAttrReturned = 0 + // Read the tag name and attribute key/value pairs. + z.readTagName() + if z.skipWhiteSpace(); z.err != nil { + return + } + for { + c := z.readByte() + if z.err != nil || c == '>' { + break + } + z.raw.end-- + z.readTagAttrKey() + z.readTagAttrVal() + // Save pendingAttr if saveAttr and that attribute has a non-empty key. + if saveAttr && z.pendingAttr[0].start != z.pendingAttr[0].end { + z.attr = append(z.attr, z.pendingAttr) + } + if z.skipWhiteSpace(); z.err != nil { + break + } + } +} + +// readTagName sets z.data to the "div" in "<div k=v>". The reader (z.raw.end) +// is positioned such that the first byte of the tag name (the "d" in "<div") +// has already been consumed. +func (z *Tokenizer) readTagName() { + z.data.start = z.raw.end - 1 + for { + c := z.readByte() + if z.err != nil { + z.data.end = z.raw.end + return + } + switch c { + case ' ', '\n', '\r', '\t', '\f': + z.data.end = z.raw.end - 1 + return + case '/', '>': + z.raw.end-- + z.data.end = z.raw.end + return + } + } +} + +// readTagAttrKey sets z.pendingAttr[0] to the "k" in "<div k=v>". +// Precondition: z.err == nil. +func (z *Tokenizer) readTagAttrKey() { + z.pendingAttr[0].start = z.raw.end + for { + c := z.readByte() + if z.err != nil { + z.pendingAttr[0].end = z.raw.end + return + } + switch c { + case '=': + if z.pendingAttr[0].start+1 == z.raw.end { + // WHATWG 13.2.5.32, if we see an equals sign before the attribute name + // begins, we treat it as a character in the attribute name and continue. + continue + } + fallthrough + case ' ', '\n', '\r', '\t', '\f', '/', '>': + // WHATWG 13.2.5.33 Attribute name state + // We need to reconsume the char in the after attribute name state to support the / character + z.raw.end-- + z.pendingAttr[0].end = z.raw.end + return + } + } +} + +// readTagAttrVal sets z.pendingAttr[1] to the "v" in "<div k=v>". +func (z *Tokenizer) readTagAttrVal() { + z.pendingAttr[1].start = z.raw.end + z.pendingAttr[1].end = z.raw.end + if z.skipWhiteSpace(); z.err != nil { + return + } + c := z.readByte() + if z.err != nil { + return + } + if c == '/' { + // WHATWG 13.2.5.34 After attribute name state + // U+002F SOLIDUS (/) - Switch to the self-closing start tag state. + return + } + if c != '=' { + z.raw.end-- + return + } + if z.skipWhiteSpace(); z.err != nil { + return + } + quote := z.readByte() + if z.err != nil { + return + } + switch quote { + case '>': + z.raw.end-- + return + + case '\'', '"': + z.pendingAttr[1].start = z.raw.end + for { + c := z.readByte() + if z.err != nil { + z.pendingAttr[1].end = z.raw.end + return + } + if c == quote { + z.pendingAttr[1].end = z.raw.end - 1 + return + } + } + + default: + z.pendingAttr[1].start = z.raw.end - 1 + for { + c := z.readByte() + if z.err != nil { + z.pendingAttr[1].end = z.raw.end + return + } + switch c { + case ' ', '\n', '\r', '\t', '\f': + z.pendingAttr[1].end = z.raw.end - 1 + return + case '>': + z.raw.end-- + z.pendingAttr[1].end = z.raw.end + return + } + } + } +} + +// Next scans the next token and returns its type. +func (z *Tokenizer) Next() TokenType { + z.raw.start = z.raw.end + z.data.start = z.raw.end + z.data.end = z.raw.end + if z.err != nil { + z.tt = ErrorToken + return z.tt + } + if z.rawTag != "" { + if z.rawTag == "plaintext" { + // Read everything up to EOF. + for z.err == nil { + z.readByte() + } + z.data.end = z.raw.end + z.textIsRaw = true + } else { + z.readRawOrRCDATA() + } + if z.data.end > z.data.start { + z.tt = TextToken + z.convertNUL = true + return z.tt + } + } + z.textIsRaw = false + z.convertNUL = false + +loop: + for { + c := z.readByte() + if z.err != nil { + break loop + } + if c != '<' { + continue loop + } + + // Check if the '<' we have just read is part of a tag, comment + // or doctype. If not, it's part of the accumulated text token. + c = z.readByte() + if z.err != nil { + break loop + } + var tokenType TokenType + switch { + case 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z': + tokenType = StartTagToken + case c == '/': + tokenType = EndTagToken + case c == '!' || c == '?': + // We use CommentToken to mean any of "<!--actual comments-->", + // "<!DOCTYPE declarations>" and "<?xml processing instructions?>". + tokenType = CommentToken + default: + // Reconsume the current character. + z.raw.end-- + continue + } + + // We have a non-text token, but we might have accumulated some text + // before that. If so, we return the text first, and return the non- + // text token on the subsequent call to Next. + if x := z.raw.end - len("<a"); z.raw.start < x { + z.raw.end = x + z.data.end = x + z.tt = TextToken + return z.tt + } + switch tokenType { + case StartTagToken: + z.tt = z.readStartTag() + return z.tt + case EndTagToken: + c = z.readByte() + if z.err != nil { + break loop + } + if c == '>' { + // "</>" does not generate a token at all. Generate an empty comment + // to allow passthrough clients to pick up the data using Raw. + // Reset the tokenizer state and start again. + z.tt = CommentToken + return z.tt + } + if 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' { + z.readTag(false) + if z.err != nil { + z.tt = ErrorToken + } else { + z.tt = EndTagToken + } + return z.tt + } + z.raw.end-- + z.readUntilCloseAngle() + z.tt = CommentToken + return z.tt + case CommentToken: + if c == '!' { + z.tt = z.readMarkupDeclaration() + return z.tt + } + z.raw.end-- + z.readUntilCloseAngle() + z.tt = CommentToken + return z.tt + } + } + if z.raw.start < z.raw.end { + z.data.end = z.raw.end + z.tt = TextToken + return z.tt + } + z.tt = ErrorToken + return z.tt +} + +// Raw returns the unmodified text of the current token. Calling Next, Token, +// Text, TagName or TagAttr may change the contents of the returned slice. +// +// The token stream's raw bytes partition the byte stream (up until an +// ErrorToken). There are no overlaps or gaps between two consecutive token's +// raw bytes. One implication is that the byte offset of the current token is +// the sum of the lengths of all previous tokens' raw bytes. +func (z *Tokenizer) Raw() []byte { + return z.buf[z.raw.start:z.raw.end] +} + +// convertNewlines converts "\r" and "\r\n" in s to "\n". +// The conversion happens in place, but the resulting slice may be shorter. +func convertNewlines(s []byte) []byte { + for i, c := range s { + if c != '\r' { + continue + } + + src := i + 1 + if src >= len(s) || s[src] != '\n' { + s[i] = '\n' + continue + } + + dst := i + for src < len(s) { + if s[src] == '\r' { + if src+1 < len(s) && s[src+1] == '\n' { + src++ + } + s[dst] = '\n' + } else { + s[dst] = s[src] + } + src++ + dst++ + } + return s[:dst] + } + return s +} + +var ( + nul = []byte("\x00") + replacement = []byte("\ufffd") +) + +// Text returns the unescaped text of a text, comment or doctype token. The +// contents of the returned slice may change on the next call to Next. +func (z *Tokenizer) Text() []byte { + switch z.tt { + case TextToken, CommentToken, DoctypeToken: + s := z.buf[z.data.start:z.data.end] + z.data.start = z.raw.end + z.data.end = z.raw.end + s = convertNewlines(s) + if (z.convertNUL || z.tt == CommentToken) && bytes.Contains(s, nul) { + s = bytes.Replace(s, nul, replacement, -1) + } + if !z.textIsRaw { + s = unescape(s, false) + } + return s + } + return nil +} + +// TagName returns the lower-cased name of a tag token (the `img` out of +// `<IMG SRC="foo">`) and whether the tag has attributes. +// The contents of the returned slice may change on the next call to Next. +func (z *Tokenizer) TagName() (name []byte, hasAttr bool) { + if z.data.start < z.data.end { + switch z.tt { + case StartTagToken, EndTagToken, SelfClosingTagToken: + s := z.buf[z.data.start:z.data.end] + z.data.start = z.raw.end + z.data.end = z.raw.end + return lower(s), z.nAttrReturned < len(z.attr) + } + } + return nil, false +} + +// TagAttr returns the lower-cased key and unescaped value of the next unparsed +// attribute for the current tag token and whether there are more attributes. +// The contents of the returned slices may change on the next call to Next. +func (z *Tokenizer) TagAttr() (key, val []byte, moreAttr bool) { + if z.nAttrReturned < len(z.attr) { + switch z.tt { + case StartTagToken, SelfClosingTagToken: + x := z.attr[z.nAttrReturned] + z.nAttrReturned++ + key = z.buf[x[0].start:x[0].end] + val = z.buf[x[1].start:x[1].end] + return lower(key), unescape(convertNewlines(val), true), z.nAttrReturned < len(z.attr) + } + } + return nil, nil, false +} + +// Token returns the current Token. The result's Data and Attr values remain +// valid after subsequent Next calls. +func (z *Tokenizer) Token() Token { + t := Token{Type: z.tt} + switch z.tt { + case TextToken, CommentToken, DoctypeToken: + t.Data = string(z.Text()) + case StartTagToken, SelfClosingTagToken, EndTagToken: + name, moreAttr := z.TagName() + for moreAttr { + var key, val []byte + key, val, moreAttr = z.TagAttr() + t.Attr = append(t.Attr, Attribute{"", atom.String(key), string(val)}) + } + if a := atom.Lookup(name); a != 0 { + t.DataAtom, t.Data = a, a.String() + } else { + t.DataAtom, t.Data = 0, string(name) + } + } + return t +} + +// SetMaxBuf sets a limit on the amount of data buffered during tokenization. +// A value of 0 means unlimited. +func (z *Tokenizer) SetMaxBuf(n int) { + z.maxBuf = n +} + +// NewTokenizer returns a new HTML Tokenizer for the given Reader. +// The input is assumed to be UTF-8 encoded. +func NewTokenizer(r io.Reader) *Tokenizer { + return NewTokenizerFragment(r, "") +} + +// NewTokenizerFragment returns a new HTML Tokenizer for the given Reader, for +// tokenizing an existing element's InnerHTML fragment. contextTag is that +// element's tag, such as "div" or "iframe". +// +// For example, how the InnerHTML "a<b" is tokenized depends on whether it is +// for a <p> tag or a <script> tag. +// +// The input is assumed to be UTF-8 encoded. +func NewTokenizerFragment(r io.Reader, contextTag string) *Tokenizer { + z := &Tokenizer{ + r: r, + buf: make([]byte, 0, 4096), + } + if contextTag != "" { + switch s := strings.ToLower(contextTag); s { + case "iframe", "noembed", "noframes", "noscript", "plaintext", "script", "style", "title", "textarea", "xmp": + z.rawTag = s + } + } + return z +} diff --git a/tests/vendor/golang.org/x/sys/LICENSE b/tests/vendor/golang.org/x/sys/LICENSE new file mode 100644 index 000000000..2a7cf70da --- /dev/null +++ b/tests/vendor/golang.org/x/sys/LICENSE @@ -0,0 +1,27 @@ +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/tests/vendor/golang.org/x/sys/PATENTS b/tests/vendor/golang.org/x/sys/PATENTS new file mode 100644 index 000000000..733099041 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/PATENTS @@ -0,0 +1,22 @@ +Additional IP Rights Grant (Patents) + +"This implementation" means the copyrightable works distributed by +Google as part of the Go project. + +Google hereby grants to You a perpetual, worldwide, non-exclusive, +no-charge, royalty-free, irrevocable (except as stated in this section) +patent license to make, have made, use, offer to sell, sell, import, +transfer and otherwise run, modify and propagate the contents of this +implementation of Go, where such license applies only to those patent +claims, both currently owned or controlled by Google and acquired in +the future, licensable by Google that are necessarily infringed by this +implementation of Go. This grant does not include claims that would be +infringed only as a consequence of further modification of this +implementation. If you or your agent or exclusive licensee institute or +order or agree to the institution of patent litigation against any +entity (including a cross-claim or counterclaim in a lawsuit) alleging +that this implementation of Go or any code incorporated within this +implementation of Go constitutes direct or contributory patent +infringement, or inducement of patent infringement, then any patent +rights granted to you under this License for this implementation of Go +shall terminate as of the date such litigation is filed. diff --git a/tests/vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s b/tests/vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s new file mode 100644 index 000000000..269e173ca --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s @@ -0,0 +1,17 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc + +#include "textflag.h" + +// +// System calls for ppc64, AIX are implemented in runtime/syscall_aix.go +// + +TEXT ·syscall6(SB),NOSPLIT,$0-88 + JMP syscall·syscall6(SB) + +TEXT ·rawSyscall6(SB),NOSPLIT,$0-88 + JMP syscall·rawSyscall6(SB) diff --git a/tests/vendor/golang.org/x/sys/cpu/asm_darwin_x86_gc.s b/tests/vendor/golang.org/x/sys/cpu/asm_darwin_x86_gc.s new file mode 100644 index 000000000..ec2acfe54 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/asm_darwin_x86_gc.s @@ -0,0 +1,17 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build darwin && amd64 && gc + +#include "textflag.h" + +TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sysctl(SB) +GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) + +TEXT libc_sysctlbyname_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sysctlbyname(SB) +GLOBL ·libc_sysctlbyname_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sysctlbyname_trampoline_addr(SB)/8, $libc_sysctlbyname_trampoline<>(SB) diff --git a/tests/vendor/golang.org/x/sys/cpu/byteorder.go b/tests/vendor/golang.org/x/sys/cpu/byteorder.go new file mode 100644 index 000000000..271055be0 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/byteorder.go @@ -0,0 +1,66 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +import ( + "runtime" +) + +// byteOrder is a subset of encoding/binary.ByteOrder. +type byteOrder interface { + Uint32([]byte) uint32 + Uint64([]byte) uint64 +} + +type littleEndian struct{} +type bigEndian struct{} + +func (littleEndian) Uint32(b []byte) uint32 { + _ = b[3] // bounds check hint to compiler; see golang.org/issue/14808 + return uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24 +} + +func (littleEndian) Uint64(b []byte) uint64 { + _ = b[7] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | + uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56 +} + +func (bigEndian) Uint32(b []byte) uint32 { + _ = b[3] // bounds check hint to compiler; see golang.org/issue/14808 + return uint32(b[3]) | uint32(b[2])<<8 | uint32(b[1])<<16 | uint32(b[0])<<24 +} + +func (bigEndian) Uint64(b []byte) uint64 { + _ = b[7] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[7]) | uint64(b[6])<<8 | uint64(b[5])<<16 | uint64(b[4])<<24 | + uint64(b[3])<<32 | uint64(b[2])<<40 | uint64(b[1])<<48 | uint64(b[0])<<56 +} + +// hostByteOrder returns littleEndian on little-endian machines and +// bigEndian on big-endian machines. +func hostByteOrder() byteOrder { + switch runtime.GOARCH { + case "386", "amd64", "amd64p32", + "alpha", + "arm", "arm64", + "loong64", + "mipsle", "mips64le", "mips64p32le", + "nios2", + "ppc64le", + "riscv", "riscv64", + "sh": + return littleEndian{} + case "armbe", "arm64be", + "m68k", + "mips", "mips64", "mips64p32", + "ppc", "ppc64", + "s390", "s390x", + "shbe", + "sparc", "sparc64": + return bigEndian{} + } + panic("unknown architecture") +} diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu.go b/tests/vendor/golang.org/x/sys/cpu/cpu.go new file mode 100644 index 000000000..63541994e --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu.go @@ -0,0 +1,338 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package cpu implements processor feature detection for +// various CPU architectures. +package cpu + +import ( + "os" + "strings" +) + +// Initialized reports whether the CPU features were initialized. +// +// For some GOOS/GOARCH combinations initialization of the CPU features depends +// on reading an operating specific file, e.g. /proc/self/auxv on linux/arm +// Initialized will report false if reading the file fails. +var Initialized bool + +// CacheLinePad is used to pad structs to avoid false sharing. +type CacheLinePad struct{ _ [cacheLineSize]byte } + +// X86 contains the supported CPU features of the +// current X86/AMD64 platform. If the current platform +// is not X86/AMD64 then all feature flags are false. +// +// X86 is padded to avoid false sharing. Further the HasAVX +// and HasAVX2 are only set if the OS supports XMM and YMM +// registers in addition to the CPUID feature bit being set. +var X86 struct { + _ CacheLinePad + HasAES bool // AES hardware implementation (AES NI) + HasADX bool // Multi-precision add-carry instruction extensions + HasAVX bool // Advanced vector extension + HasAVX2 bool // Advanced vector extension 2 + HasAVX512 bool // Advanced vector extension 512 + HasAVX512F bool // Advanced vector extension 512 Foundation Instructions + HasAVX512CD bool // Advanced vector extension 512 Conflict Detection Instructions + HasAVX512ER bool // Advanced vector extension 512 Exponential and Reciprocal Instructions + HasAVX512PF bool // Advanced vector extension 512 Prefetch Instructions + HasAVX512VL bool // Advanced vector extension 512 Vector Length Extensions + HasAVX512BW bool // Advanced vector extension 512 Byte and Word Instructions + HasAVX512DQ bool // Advanced vector extension 512 Doubleword and Quadword Instructions + HasAVX512IFMA bool // Advanced vector extension 512 Integer Fused Multiply Add + HasAVX512VBMI bool // Advanced vector extension 512 Vector Byte Manipulation Instructions + HasAVX5124VNNIW bool // Advanced vector extension 512 Vector Neural Network Instructions Word variable precision + HasAVX5124FMAPS bool // Advanced vector extension 512 Fused Multiply Accumulation Packed Single precision + HasAVX512VPOPCNTDQ bool // Advanced vector extension 512 Double and quad word population count instructions + HasAVX512VPCLMULQDQ bool // Advanced vector extension 512 Vector carry-less multiply operations + HasAVX512VNNI bool // Advanced vector extension 512 Vector Neural Network Instructions + HasAVX512GFNI bool // Advanced vector extension 512 Galois field New Instructions + HasAVX512VAES bool // Advanced vector extension 512 Vector AES instructions + HasAVX512VBMI2 bool // Advanced vector extension 512 Vector Byte Manipulation Instructions 2 + HasAVX512BITALG bool // Advanced vector extension 512 Bit Algorithms + HasAVX512BF16 bool // Advanced vector extension 512 BFloat16 Instructions + HasAMXTile bool // Advanced Matrix Extension Tile instructions + HasAMXInt8 bool // Advanced Matrix Extension Int8 instructions + HasAMXBF16 bool // Advanced Matrix Extension BFloat16 instructions + HasBMI1 bool // Bit manipulation instruction set 1 + HasBMI2 bool // Bit manipulation instruction set 2 + HasCX16 bool // Compare and exchange 16 Bytes + HasERMS bool // Enhanced REP for MOVSB and STOSB + HasFMA bool // Fused-multiply-add instructions + HasOSXSAVE bool // OS supports XSAVE/XRESTOR for saving/restoring XMM registers. + HasPCLMULQDQ bool // PCLMULQDQ instruction - most often used for AES-GCM + HasPOPCNT bool // Hamming weight instruction POPCNT. + HasRDRAND bool // RDRAND instruction (on-chip random number generator) + HasRDSEED bool // RDSEED instruction (on-chip random number generator) + HasSSE2 bool // Streaming SIMD extension 2 (always available on amd64) + HasSSE3 bool // Streaming SIMD extension 3 + HasSSSE3 bool // Supplemental streaming SIMD extension 3 + HasSSE41 bool // Streaming SIMD extension 4 and 4.1 + HasSSE42 bool // Streaming SIMD extension 4 and 4.2 + HasAVXIFMA bool // Advanced vector extension Integer Fused Multiply Add + HasAVXVNNI bool // Advanced vector extension Vector Neural Network Instructions + HasAVXVNNIInt8 bool // Advanced vector extension Vector Neural Network Int8 instructions + _ CacheLinePad +} + +// ARM64 contains the supported CPU features of the +// current ARMv8(aarch64) platform. If the current platform +// is not arm64 then all feature flags are false. +var ARM64 struct { + _ CacheLinePad + HasFP bool // Floating-point instruction set (always available) + HasASIMD bool // Advanced SIMD (always available) + HasEVTSTRM bool // Event stream support + HasAES bool // AES hardware implementation + HasPMULL bool // Polynomial multiplication instruction set + HasSHA1 bool // SHA1 hardware implementation + HasSHA2 bool // SHA2 hardware implementation + HasCRC32 bool // CRC32 hardware implementation + HasATOMICS bool // Atomic memory operation instruction set + HasFPHP bool // Half precision floating-point instruction set + HasASIMDHP bool // Advanced SIMD half precision instruction set + HasCPUID bool // CPUID identification scheme registers + HasASIMDRDM bool // Rounding double multiply add/subtract instruction set + HasJSCVT bool // Javascript conversion from floating-point to integer + HasFCMA bool // Floating-point multiplication and addition of complex numbers + HasLRCPC bool // Release Consistent processor consistent support + HasDCPOP bool // Persistent memory support + HasSHA3 bool // SHA3 hardware implementation + HasSM3 bool // SM3 hardware implementation + HasSM4 bool // SM4 hardware implementation + HasASIMDDP bool // Advanced SIMD double precision instruction set + HasSHA512 bool // SHA512 hardware implementation + HasSVE bool // Scalable Vector Extensions + HasSVE2 bool // Scalable Vector Extensions 2 + HasASIMDFHM bool // Advanced SIMD multiplication FP16 to FP32 + HasDIT bool // Data Independent Timing support + HasI8MM bool // Advanced SIMD Int8 matrix multiplication instructions + _ CacheLinePad +} + +// ARM contains the supported CPU features of the current ARM (32-bit) platform. +// All feature flags are false if: +// 1. the current platform is not arm, or +// 2. the current operating system is not Linux. +var ARM struct { + _ CacheLinePad + HasSWP bool // SWP instruction support + HasHALF bool // Half-word load and store support + HasTHUMB bool // ARM Thumb instruction set + Has26BIT bool // Address space limited to 26-bits + HasFASTMUL bool // 32-bit operand, 64-bit result multiplication support + HasFPA bool // Floating point arithmetic support + HasVFP bool // Vector floating point support + HasEDSP bool // DSP Extensions support + HasJAVA bool // Java instruction set + HasIWMMXT bool // Intel Wireless MMX technology support + HasCRUNCH bool // MaverickCrunch context switching and handling + HasTHUMBEE bool // Thumb EE instruction set + HasNEON bool // NEON instruction set + HasVFPv3 bool // Vector floating point version 3 support + HasVFPv3D16 bool // Vector floating point version 3 D8-D15 + HasTLS bool // Thread local storage support + HasVFPv4 bool // Vector floating point version 4 support + HasIDIVA bool // Integer divide instruction support in ARM mode + HasIDIVT bool // Integer divide instruction support in Thumb mode + HasVFPD32 bool // Vector floating point version 3 D15-D31 + HasLPAE bool // Large Physical Address Extensions + HasEVTSTRM bool // Event stream support + HasAES bool // AES hardware implementation + HasPMULL bool // Polynomial multiplication instruction set + HasSHA1 bool // SHA1 hardware implementation + HasSHA2 bool // SHA2 hardware implementation + HasCRC32 bool // CRC32 hardware implementation + _ CacheLinePad +} + +// The booleans in Loong64 contain the correspondingly named cpu feature bit. +// The struct is padded to avoid false sharing. +var Loong64 struct { + _ CacheLinePad + HasLSX bool // support 128-bit vector extension + HasLASX bool // support 256-bit vector extension + HasCRC32 bool // support CRC instruction + HasLAM_BH bool // support AM{SWAP/ADD}[_DB].{B/H} instruction + HasLAMCAS bool // support AMCAS[_DB].{B/H/W/D} instruction + _ CacheLinePad +} + +// MIPS64X contains the supported CPU features of the current mips64/mips64le +// platforms. If the current platform is not mips64/mips64le or the current +// operating system is not Linux then all feature flags are false. +var MIPS64X struct { + _ CacheLinePad + HasMSA bool // MIPS SIMD architecture + _ CacheLinePad +} + +// PPC64 contains the supported CPU features of the current ppc64/ppc64le platforms. +// If the current platform is not ppc64/ppc64le then all feature flags are false. +// +// For ppc64/ppc64le, it is safe to check only for ISA level starting on ISA v3.00, +// since there are no optional categories. There are some exceptions that also +// require kernel support to work (DARN, SCV), so there are feature bits for +// those as well. The struct is padded to avoid false sharing. +var PPC64 struct { + _ CacheLinePad + HasDARN bool // Hardware random number generator (requires kernel enablement) + HasSCV bool // Syscall vectored (requires kernel enablement) + IsPOWER8 bool // ISA v2.07 (POWER8) + IsPOWER9 bool // ISA v3.00 (POWER9), implies IsPOWER8 + _ CacheLinePad +} + +// S390X contains the supported CPU features of the current IBM Z +// (s390x) platform. If the current platform is not IBM Z then all +// feature flags are false. +// +// S390X is padded to avoid false sharing. Further HasVX is only set +// if the OS supports vector registers in addition to the STFLE +// feature bit being set. +var S390X struct { + _ CacheLinePad + HasZARCH bool // z/Architecture mode is active [mandatory] + HasSTFLE bool // store facility list extended + HasLDISP bool // long (20-bit) displacements + HasEIMM bool // 32-bit immediates + HasDFP bool // decimal floating point + HasETF3EH bool // ETF-3 enhanced + HasMSA bool // message security assist (CPACF) + HasAES bool // KM-AES{128,192,256} functions + HasAESCBC bool // KMC-AES{128,192,256} functions + HasAESCTR bool // KMCTR-AES{128,192,256} functions + HasAESGCM bool // KMA-GCM-AES{128,192,256} functions + HasGHASH bool // KIMD-GHASH function + HasSHA1 bool // K{I,L}MD-SHA-1 functions + HasSHA256 bool // K{I,L}MD-SHA-256 functions + HasSHA512 bool // K{I,L}MD-SHA-512 functions + HasSHA3 bool // K{I,L}MD-SHA3-{224,256,384,512} and K{I,L}MD-SHAKE-{128,256} functions + HasVX bool // vector facility + HasVXE bool // vector-enhancements facility 1 + _ CacheLinePad +} + +// RISCV64 contains the supported CPU features and performance characteristics for riscv64 +// platforms. The booleans in RISCV64, with the exception of HasFastMisaligned, indicate +// the presence of RISC-V extensions. +// +// It is safe to assume that all the RV64G extensions are supported and so they are omitted from +// this structure. As riscv64 Go programs require at least RV64G, the code that populates +// this structure cannot run successfully if some of the RV64G extensions are missing. +// The struct is padded to avoid false sharing. +var RISCV64 struct { + _ CacheLinePad + HasFastMisaligned bool // Fast misaligned accesses + HasC bool // Compressed instruction-set extension + HasV bool // Vector extension compatible with RVV 1.0 + HasZba bool // Address generation instructions extension + HasZbb bool // Basic bit-manipulation extension + HasZbs bool // Single-bit instructions extension + HasZvbb bool // Vector Basic Bit-manipulation + HasZvbc bool // Vector Carryless Multiplication + HasZvkb bool // Vector Cryptography Bit-manipulation + HasZvkt bool // Vector Data-Independent Execution Latency + HasZvkg bool // Vector GCM/GMAC + HasZvkn bool // NIST Algorithm Suite (AES/SHA256/SHA512) + HasZvknc bool // NIST Algorithm Suite with carryless multiply + HasZvkng bool // NIST Algorithm Suite with GCM + HasZvks bool // ShangMi Algorithm Suite + HasZvksc bool // ShangMi Algorithm Suite with carryless multiplication + HasZvksg bool // ShangMi Algorithm Suite with GCM + _ CacheLinePad +} + +func init() { + archInit() + initOptions() + processOptions() +} + +// options contains the cpu debug options that can be used in GODEBUG. +// Options are arch dependent and are added by the arch specific initOptions functions. +// Features that are mandatory for the specific GOARCH should have the Required field set +// (e.g. SSE2 on amd64). +var options []option + +// Option names should be lower case. e.g. avx instead of AVX. +type option struct { + Name string + Feature *bool + Specified bool // whether feature value was specified in GODEBUG + Enable bool // whether feature should be enabled + Required bool // whether feature is mandatory and can not be disabled +} + +func processOptions() { + env := os.Getenv("GODEBUG") +field: + for env != "" { + field := "" + i := strings.IndexByte(env, ',') + if i < 0 { + field, env = env, "" + } else { + field, env = env[:i], env[i+1:] + } + if len(field) < 4 || field[:4] != "cpu." { + continue + } + i = strings.IndexByte(field, '=') + if i < 0 { + print("GODEBUG sys/cpu: no value specified for \"", field, "\"\n") + continue + } + key, value := field[4:i], field[i+1:] // e.g. "SSE2", "on" + + var enable bool + switch value { + case "on": + enable = true + case "off": + enable = false + default: + print("GODEBUG sys/cpu: value \"", value, "\" not supported for cpu option \"", key, "\"\n") + continue field + } + + if key == "all" { + for i := range options { + options[i].Specified = true + options[i].Enable = enable || options[i].Required + } + continue field + } + + for i := range options { + if options[i].Name == key { + options[i].Specified = true + options[i].Enable = enable + continue field + } + } + + print("GODEBUG sys/cpu: unknown cpu feature \"", key, "\"\n") + } + + for _, o := range options { + if !o.Specified { + continue + } + + if o.Enable && !*o.Feature { + print("GODEBUG sys/cpu: can not enable \"", o.Name, "\", missing CPU support\n") + continue + } + + if !o.Enable && o.Required { + print("GODEBUG sys/cpu: can not disable \"", o.Name, "\", required CPU feature\n") + continue + } + + *o.Feature = o.Enable + } +} diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_aix.go b/tests/vendor/golang.org/x/sys/cpu/cpu_aix.go new file mode 100644 index 000000000..9bf0c32eb --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_aix.go @@ -0,0 +1,33 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix + +package cpu + +const ( + // getsystemcfg constants + _SC_IMPL = 2 + _IMPL_POWER8 = 0x10000 + _IMPL_POWER9 = 0x20000 +) + +func archInit() { + impl := getsystemcfg(_SC_IMPL) + if impl&_IMPL_POWER8 != 0 { + PPC64.IsPOWER8 = true + } + if impl&_IMPL_POWER9 != 0 { + PPC64.IsPOWER8 = true + PPC64.IsPOWER9 = true + } + + Initialized = true +} + +func getsystemcfg(label int) (n uint64) { + r0, _ := callgetsystemcfg(label) + n = uint64(r0) + return +} diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_arm.go b/tests/vendor/golang.org/x/sys/cpu/cpu_arm.go new file mode 100644 index 000000000..301b752e9 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_arm.go @@ -0,0 +1,73 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +const cacheLineSize = 32 + +// HWCAP/HWCAP2 bits. +// These are specific to Linux. +const ( + hwcap_SWP = 1 << 0 + hwcap_HALF = 1 << 1 + hwcap_THUMB = 1 << 2 + hwcap_26BIT = 1 << 3 + hwcap_FAST_MULT = 1 << 4 + hwcap_FPA = 1 << 5 + hwcap_VFP = 1 << 6 + hwcap_EDSP = 1 << 7 + hwcap_JAVA = 1 << 8 + hwcap_IWMMXT = 1 << 9 + hwcap_CRUNCH = 1 << 10 + hwcap_THUMBEE = 1 << 11 + hwcap_NEON = 1 << 12 + hwcap_VFPv3 = 1 << 13 + hwcap_VFPv3D16 = 1 << 14 + hwcap_TLS = 1 << 15 + hwcap_VFPv4 = 1 << 16 + hwcap_IDIVA = 1 << 17 + hwcap_IDIVT = 1 << 18 + hwcap_VFPD32 = 1 << 19 + hwcap_LPAE = 1 << 20 + hwcap_EVTSTRM = 1 << 21 + + hwcap2_AES = 1 << 0 + hwcap2_PMULL = 1 << 1 + hwcap2_SHA1 = 1 << 2 + hwcap2_SHA2 = 1 << 3 + hwcap2_CRC32 = 1 << 4 +) + +func initOptions() { + options = []option{ + {Name: "pmull", Feature: &ARM.HasPMULL}, + {Name: "sha1", Feature: &ARM.HasSHA1}, + {Name: "sha2", Feature: &ARM.HasSHA2}, + {Name: "swp", Feature: &ARM.HasSWP}, + {Name: "thumb", Feature: &ARM.HasTHUMB}, + {Name: "thumbee", Feature: &ARM.HasTHUMBEE}, + {Name: "tls", Feature: &ARM.HasTLS}, + {Name: "vfp", Feature: &ARM.HasVFP}, + {Name: "vfpd32", Feature: &ARM.HasVFPD32}, + {Name: "vfpv3", Feature: &ARM.HasVFPv3}, + {Name: "vfpv3d16", Feature: &ARM.HasVFPv3D16}, + {Name: "vfpv4", Feature: &ARM.HasVFPv4}, + {Name: "half", Feature: &ARM.HasHALF}, + {Name: "26bit", Feature: &ARM.Has26BIT}, + {Name: "fastmul", Feature: &ARM.HasFASTMUL}, + {Name: "fpa", Feature: &ARM.HasFPA}, + {Name: "edsp", Feature: &ARM.HasEDSP}, + {Name: "java", Feature: &ARM.HasJAVA}, + {Name: "iwmmxt", Feature: &ARM.HasIWMMXT}, + {Name: "crunch", Feature: &ARM.HasCRUNCH}, + {Name: "neon", Feature: &ARM.HasNEON}, + {Name: "idivt", Feature: &ARM.HasIDIVT}, + {Name: "idiva", Feature: &ARM.HasIDIVA}, + {Name: "lpae", Feature: &ARM.HasLPAE}, + {Name: "evtstrm", Feature: &ARM.HasEVTSTRM}, + {Name: "aes", Feature: &ARM.HasAES}, + {Name: "crc32", Feature: &ARM.HasCRC32}, + } + +} diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_arm64.go b/tests/vendor/golang.org/x/sys/cpu/cpu_arm64.go new file mode 100644 index 000000000..af2aa99f9 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_arm64.go @@ -0,0 +1,194 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +import "runtime" + +// cacheLineSize is used to prevent false sharing of cache lines. +// We choose 128 because Apple Silicon, a.k.a. M1, has 128-byte cache line size. +// It doesn't cost much and is much more future-proof. +const cacheLineSize = 128 + +func initOptions() { + options = []option{ + {Name: "fp", Feature: &ARM64.HasFP}, + {Name: "asimd", Feature: &ARM64.HasASIMD}, + {Name: "evstrm", Feature: &ARM64.HasEVTSTRM}, + {Name: "aes", Feature: &ARM64.HasAES}, + {Name: "fphp", Feature: &ARM64.HasFPHP}, + {Name: "jscvt", Feature: &ARM64.HasJSCVT}, + {Name: "lrcpc", Feature: &ARM64.HasLRCPC}, + {Name: "pmull", Feature: &ARM64.HasPMULL}, + {Name: "sha1", Feature: &ARM64.HasSHA1}, + {Name: "sha2", Feature: &ARM64.HasSHA2}, + {Name: "sha3", Feature: &ARM64.HasSHA3}, + {Name: "sha512", Feature: &ARM64.HasSHA512}, + {Name: "sm3", Feature: &ARM64.HasSM3}, + {Name: "sm4", Feature: &ARM64.HasSM4}, + {Name: "sve", Feature: &ARM64.HasSVE}, + {Name: "sve2", Feature: &ARM64.HasSVE2}, + {Name: "crc32", Feature: &ARM64.HasCRC32}, + {Name: "atomics", Feature: &ARM64.HasATOMICS}, + {Name: "asimdhp", Feature: &ARM64.HasASIMDHP}, + {Name: "cpuid", Feature: &ARM64.HasCPUID}, + {Name: "asimrdm", Feature: &ARM64.HasASIMDRDM}, + {Name: "fcma", Feature: &ARM64.HasFCMA}, + {Name: "dcpop", Feature: &ARM64.HasDCPOP}, + {Name: "asimddp", Feature: &ARM64.HasASIMDDP}, + {Name: "asimdfhm", Feature: &ARM64.HasASIMDFHM}, + {Name: "dit", Feature: &ARM64.HasDIT}, + {Name: "i8mm", Feature: &ARM64.HasI8MM}, + } +} + +func archInit() { + switch runtime.GOOS { + case "freebsd": + readARM64Registers() + case "linux", "netbsd", "openbsd": + doinit() + default: + // Many platforms don't seem to allow reading these registers. + setMinimalFeatures() + } +} + +// setMinimalFeatures fakes the minimal ARM64 features expected by +// TestARM64minimalFeatures. +func setMinimalFeatures() { + ARM64.HasASIMD = true + ARM64.HasFP = true +} + +func readARM64Registers() { + Initialized = true + + parseARM64SystemRegisters(getisar0(), getisar1(), getpfr0()) +} + +func parseARM64SystemRegisters(isar0, isar1, pfr0 uint64) { + // ID_AA64ISAR0_EL1 + switch extractBits(isar0, 4, 7) { + case 1: + ARM64.HasAES = true + case 2: + ARM64.HasAES = true + ARM64.HasPMULL = true + } + + switch extractBits(isar0, 8, 11) { + case 1: + ARM64.HasSHA1 = true + } + + switch extractBits(isar0, 12, 15) { + case 1: + ARM64.HasSHA2 = true + case 2: + ARM64.HasSHA2 = true + ARM64.HasSHA512 = true + } + + switch extractBits(isar0, 16, 19) { + case 1: + ARM64.HasCRC32 = true + } + + switch extractBits(isar0, 20, 23) { + case 2: + ARM64.HasATOMICS = true + } + + switch extractBits(isar0, 28, 31) { + case 1: + ARM64.HasASIMDRDM = true + } + + switch extractBits(isar0, 32, 35) { + case 1: + ARM64.HasSHA3 = true + } + + switch extractBits(isar0, 36, 39) { + case 1: + ARM64.HasSM3 = true + } + + switch extractBits(isar0, 40, 43) { + case 1: + ARM64.HasSM4 = true + } + + switch extractBits(isar0, 44, 47) { + case 1: + ARM64.HasASIMDDP = true + } + + // ID_AA64ISAR1_EL1 + switch extractBits(isar1, 0, 3) { + case 1: + ARM64.HasDCPOP = true + } + + switch extractBits(isar1, 12, 15) { + case 1: + ARM64.HasJSCVT = true + } + + switch extractBits(isar1, 16, 19) { + case 1: + ARM64.HasFCMA = true + } + + switch extractBits(isar1, 20, 23) { + case 1: + ARM64.HasLRCPC = true + } + + switch extractBits(isar1, 52, 55) { + case 1: + ARM64.HasI8MM = true + } + + // ID_AA64PFR0_EL1 + switch extractBits(pfr0, 16, 19) { + case 0: + ARM64.HasFP = true + case 1: + ARM64.HasFP = true + ARM64.HasFPHP = true + } + + switch extractBits(pfr0, 20, 23) { + case 0: + ARM64.HasASIMD = true + case 1: + ARM64.HasASIMD = true + ARM64.HasASIMDHP = true + } + + switch extractBits(pfr0, 32, 35) { + case 1: + ARM64.HasSVE = true + + parseARM64SVERegister(getzfr0()) + } + + switch extractBits(pfr0, 48, 51) { + case 1: + ARM64.HasDIT = true + } +} + +func parseARM64SVERegister(zfr0 uint64) { + switch extractBits(zfr0, 0, 3) { + case 1: + ARM64.HasSVE2 = true + } +} + +func extractBits(data uint64, start, end uint) uint { + return (uint)(data>>start) & ((1 << (end - start + 1)) - 1) +} diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_arm64.s b/tests/vendor/golang.org/x/sys/cpu/cpu_arm64.s new file mode 100644 index 000000000..22cc99844 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_arm64.s @@ -0,0 +1,39 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc + +#include "textflag.h" + +// func getisar0() uint64 +TEXT ·getisar0(SB),NOSPLIT,$0-8 + // get Instruction Set Attributes 0 into x0 + // mrs x0, ID_AA64ISAR0_EL1 = d5380600 + WORD $0xd5380600 + MOVD R0, ret+0(FP) + RET + +// func getisar1() uint64 +TEXT ·getisar1(SB),NOSPLIT,$0-8 + // get Instruction Set Attributes 1 into x0 + // mrs x0, ID_AA64ISAR1_EL1 = d5380620 + WORD $0xd5380620 + MOVD R0, ret+0(FP) + RET + +// func getpfr0() uint64 +TEXT ·getpfr0(SB),NOSPLIT,$0-8 + // get Processor Feature Register 0 into x0 + // mrs x0, ID_AA64PFR0_EL1 = d5380400 + WORD $0xd5380400 + MOVD R0, ret+0(FP) + RET + +// func getzfr0() uint64 +TEXT ·getzfr0(SB),NOSPLIT,$0-8 + // get SVE Feature Register 0 into x0 + // mrs x0, ID_AA64ZFR0_EL1 = d5380480 + WORD $0xd5380480 + MOVD R0, ret+0(FP) + RET diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_darwin_x86.go b/tests/vendor/golang.org/x/sys/cpu/cpu_darwin_x86.go new file mode 100644 index 000000000..b838cb9e9 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_darwin_x86.go @@ -0,0 +1,61 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build darwin && amd64 && gc + +package cpu + +// darwinSupportsAVX512 checks Darwin kernel for AVX512 support via sysctl +// call (see issue 43089). It also restricts AVX512 support for Darwin to +// kernel version 21.3.0 (MacOS 12.2.0) or later (see issue 49233). +// +// Background: +// Darwin implements a special mechanism to economize on thread state when +// AVX512 specific registers are not in use. This scheme minimizes state when +// preempting threads that haven't yet used any AVX512 instructions, but adds +// special requirements to check for AVX512 hardware support at runtime (e.g. +// via sysctl call or commpage inspection). See issue 43089 and link below for +// full background: +// https://github.com/apple-oss-distributions/xnu/blob/xnu-11215.1.10/osfmk/i386/fpu.c#L214-L240 +// +// Additionally, all versions of the Darwin kernel from 19.6.0 through 21.2.0 +// (corresponding to MacOS 10.15.6 - 12.1) have a bug that can cause corruption +// of the AVX512 mask registers (K0-K7) upon signal return. For this reason +// AVX512 is considered unsafe to use on Darwin for kernel versions prior to +// 21.3.0, where a fix has been confirmed. See issue 49233 for full background. +func darwinSupportsAVX512() bool { + return darwinSysctlEnabled([]byte("hw.optional.avx512f\x00")) && darwinKernelVersionCheck(21, 3, 0) +} + +// Ensure Darwin kernel version is at least major.minor.patch, avoiding dependencies +func darwinKernelVersionCheck(major, minor, patch int) bool { + var release [256]byte + err := darwinOSRelease(&release) + if err != nil { + return false + } + + var mmp [3]int + c := 0 +Loop: + for _, b := range release[:] { + switch { + case b >= '0' && b <= '9': + mmp[c] = 10*mmp[c] + int(b-'0') + case b == '.': + c++ + if c > 2 { + return false + } + case b == 0: + break Loop + default: + return false + } + } + if c != 2 { + return false + } + return mmp[0] > major || mmp[0] == major && (mmp[1] > minor || mmp[1] == minor && mmp[2] >= patch) +} diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_gc_arm64.go b/tests/vendor/golang.org/x/sys/cpu/cpu_gc_arm64.go new file mode 100644 index 000000000..6ac6e1efb --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_gc_arm64.go @@ -0,0 +1,12 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc + +package cpu + +func getisar0() uint64 +func getisar1() uint64 +func getpfr0() uint64 +func getzfr0() uint64 diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go b/tests/vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go new file mode 100644 index 000000000..c8ae6ddc1 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go @@ -0,0 +1,21 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc + +package cpu + +// haveAsmFunctions reports whether the other functions in this file can +// be safely called. +func haveAsmFunctions() bool { return true } + +// The following feature detection functions are defined in cpu_s390x.s. +// They are likely to be expensive to call so the results should be cached. +func stfle() facilityList +func kmQuery() queryResult +func kmcQuery() queryResult +func kmctrQuery() queryResult +func kmaQuery() queryResult +func kimdQuery() queryResult +func klmdQuery() queryResult diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go b/tests/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go new file mode 100644 index 000000000..32a44514e --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go @@ -0,0 +1,15 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (386 || amd64 || amd64p32) && gc + +package cpu + +// cpuid is implemented in cpu_gc_x86.s for gc compiler +// and in cpu_gccgo.c for gccgo. +func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32) + +// xgetbv with ecx = 0 is implemented in cpu_gc_x86.s for gc compiler +// and in cpu_gccgo.c for gccgo. +func xgetbv() (eax, edx uint32) diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_gc_x86.s b/tests/vendor/golang.org/x/sys/cpu/cpu_gc_x86.s new file mode 100644 index 000000000..ce208ce6d --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_gc_x86.s @@ -0,0 +1,26 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (386 || amd64 || amd64p32) && gc + +#include "textflag.h" + +// func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32) +TEXT ·cpuid(SB), NOSPLIT, $0-24 + MOVL eaxArg+0(FP), AX + MOVL ecxArg+4(FP), CX + CPUID + MOVL AX, eax+8(FP) + MOVL BX, ebx+12(FP) + MOVL CX, ecx+16(FP) + MOVL DX, edx+20(FP) + RET + +// func xgetbv() (eax, edx uint32) +TEXT ·xgetbv(SB), NOSPLIT, $0-8 + MOVL $0, CX + XGETBV + MOVL AX, eax+0(FP) + MOVL DX, edx+4(FP) + RET diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_gccgo_arm64.go b/tests/vendor/golang.org/x/sys/cpu/cpu_gccgo_arm64.go new file mode 100644 index 000000000..7f1946780 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_gccgo_arm64.go @@ -0,0 +1,11 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gccgo + +package cpu + +func getisar0() uint64 { return 0 } +func getisar1() uint64 { return 0 } +func getpfr0() uint64 { return 0 } diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go b/tests/vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go new file mode 100644 index 000000000..9526d2ce3 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go @@ -0,0 +1,22 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gccgo + +package cpu + +// haveAsmFunctions reports whether the other functions in this file can +// be safely called. +func haveAsmFunctions() bool { return false } + +// TODO(mundaym): the following feature detection functions are currently +// stubs. See https://golang.org/cl/162887 for how to fix this. +// They are likely to be expensive to call so the results should be cached. +func stfle() facilityList { panic("not implemented for gccgo") } +func kmQuery() queryResult { panic("not implemented for gccgo") } +func kmcQuery() queryResult { panic("not implemented for gccgo") } +func kmctrQuery() queryResult { panic("not implemented for gccgo") } +func kmaQuery() queryResult { panic("not implemented for gccgo") } +func kimdQuery() queryResult { panic("not implemented for gccgo") } +func klmdQuery() queryResult { panic("not implemented for gccgo") } diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.c b/tests/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.c new file mode 100644 index 000000000..3f73a05dc --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.c @@ -0,0 +1,37 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (386 || amd64 || amd64p32) && gccgo + +#include <cpuid.h> +#include <stdint.h> +#include <x86intrin.h> + +// Need to wrap __get_cpuid_count because it's declared as static. +int +gccgoGetCpuidCount(uint32_t leaf, uint32_t subleaf, + uint32_t *eax, uint32_t *ebx, + uint32_t *ecx, uint32_t *edx) +{ + return __get_cpuid_count(leaf, subleaf, eax, ebx, ecx, edx); +} + +#pragma GCC diagnostic ignored "-Wunknown-pragmas" +#pragma GCC push_options +#pragma GCC target("xsave") +#pragma clang attribute push (__attribute__((target("xsave"))), apply_to=function) + +// xgetbv reads the contents of an XCR (Extended Control Register) +// specified in the ECX register into registers EDX:EAX. +// Currently, the only supported value for XCR is 0. +void +gccgoXgetbv(uint32_t *eax, uint32_t *edx) +{ + uint64_t v = _xgetbv(0); + *eax = v & 0xffffffff; + *edx = v >> 32; +} + +#pragma clang attribute pop +#pragma GCC pop_options diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.go b/tests/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.go new file mode 100644 index 000000000..170d21ddf --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.go @@ -0,0 +1,25 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (386 || amd64 || amd64p32) && gccgo + +package cpu + +//extern gccgoGetCpuidCount +func gccgoGetCpuidCount(eaxArg, ecxArg uint32, eax, ebx, ecx, edx *uint32) + +func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32) { + var a, b, c, d uint32 + gccgoGetCpuidCount(eaxArg, ecxArg, &a, &b, &c, &d) + return a, b, c, d +} + +//extern gccgoXgetbv +func gccgoXgetbv(eax, edx *uint32) + +func xgetbv() (eax, edx uint32) { + var a, d uint32 + gccgoXgetbv(&a, &d) + return a, d +} diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_linux.go b/tests/vendor/golang.org/x/sys/cpu/cpu_linux.go new file mode 100644 index 000000000..743eb5435 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_linux.go @@ -0,0 +1,15 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !386 && !amd64 && !amd64p32 && !arm64 + +package cpu + +func archInit() { + if err := readHWCAP(); err != nil { + return + } + doinit() + Initialized = true +} diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_linux_arm.go b/tests/vendor/golang.org/x/sys/cpu/cpu_linux_arm.go new file mode 100644 index 000000000..2057006dc --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_linux_arm.go @@ -0,0 +1,39 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +func doinit() { + ARM.HasSWP = isSet(hwCap, hwcap_SWP) + ARM.HasHALF = isSet(hwCap, hwcap_HALF) + ARM.HasTHUMB = isSet(hwCap, hwcap_THUMB) + ARM.Has26BIT = isSet(hwCap, hwcap_26BIT) + ARM.HasFASTMUL = isSet(hwCap, hwcap_FAST_MULT) + ARM.HasFPA = isSet(hwCap, hwcap_FPA) + ARM.HasVFP = isSet(hwCap, hwcap_VFP) + ARM.HasEDSP = isSet(hwCap, hwcap_EDSP) + ARM.HasJAVA = isSet(hwCap, hwcap_JAVA) + ARM.HasIWMMXT = isSet(hwCap, hwcap_IWMMXT) + ARM.HasCRUNCH = isSet(hwCap, hwcap_CRUNCH) + ARM.HasTHUMBEE = isSet(hwCap, hwcap_THUMBEE) + ARM.HasNEON = isSet(hwCap, hwcap_NEON) + ARM.HasVFPv3 = isSet(hwCap, hwcap_VFPv3) + ARM.HasVFPv3D16 = isSet(hwCap, hwcap_VFPv3D16) + ARM.HasTLS = isSet(hwCap, hwcap_TLS) + ARM.HasVFPv4 = isSet(hwCap, hwcap_VFPv4) + ARM.HasIDIVA = isSet(hwCap, hwcap_IDIVA) + ARM.HasIDIVT = isSet(hwCap, hwcap_IDIVT) + ARM.HasVFPD32 = isSet(hwCap, hwcap_VFPD32) + ARM.HasLPAE = isSet(hwCap, hwcap_LPAE) + ARM.HasEVTSTRM = isSet(hwCap, hwcap_EVTSTRM) + ARM.HasAES = isSet(hwCap2, hwcap2_AES) + ARM.HasPMULL = isSet(hwCap2, hwcap2_PMULL) + ARM.HasSHA1 = isSet(hwCap2, hwcap2_SHA1) + ARM.HasSHA2 = isSet(hwCap2, hwcap2_SHA2) + ARM.HasCRC32 = isSet(hwCap2, hwcap2_CRC32) +} + +func isSet(hwc uint, value uint) bool { + return hwc&value != 0 +} diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go b/tests/vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go new file mode 100644 index 000000000..f1caf0f78 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go @@ -0,0 +1,120 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +import ( + "strings" + "syscall" +) + +// HWCAP/HWCAP2 bits. These are exposed by Linux. +const ( + hwcap_FP = 1 << 0 + hwcap_ASIMD = 1 << 1 + hwcap_EVTSTRM = 1 << 2 + hwcap_AES = 1 << 3 + hwcap_PMULL = 1 << 4 + hwcap_SHA1 = 1 << 5 + hwcap_SHA2 = 1 << 6 + hwcap_CRC32 = 1 << 7 + hwcap_ATOMICS = 1 << 8 + hwcap_FPHP = 1 << 9 + hwcap_ASIMDHP = 1 << 10 + hwcap_CPUID = 1 << 11 + hwcap_ASIMDRDM = 1 << 12 + hwcap_JSCVT = 1 << 13 + hwcap_FCMA = 1 << 14 + hwcap_LRCPC = 1 << 15 + hwcap_DCPOP = 1 << 16 + hwcap_SHA3 = 1 << 17 + hwcap_SM3 = 1 << 18 + hwcap_SM4 = 1 << 19 + hwcap_ASIMDDP = 1 << 20 + hwcap_SHA512 = 1 << 21 + hwcap_SVE = 1 << 22 + hwcap_ASIMDFHM = 1 << 23 + hwcap_DIT = 1 << 24 + + hwcap2_SVE2 = 1 << 1 + hwcap2_I8MM = 1 << 13 +) + +// linuxKernelCanEmulateCPUID reports whether we're running +// on Linux 4.11+. Ideally we'd like to ask the question about +// whether the current kernel contains +// https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=77c97b4ee21290f5f083173d957843b615abbff2 +// but the version number will have to do. +func linuxKernelCanEmulateCPUID() bool { + var un syscall.Utsname + syscall.Uname(&un) + var sb strings.Builder + for _, b := range un.Release[:] { + if b == 0 { + break + } + sb.WriteByte(byte(b)) + } + major, minor, _, ok := parseRelease(sb.String()) + return ok && (major > 4 || major == 4 && minor >= 11) +} + +func doinit() { + if err := readHWCAP(); err != nil { + // We failed to read /proc/self/auxv. This can happen if the binary has + // been given extra capabilities(7) with /bin/setcap. + // + // When this happens, we have two options. If the Linux kernel is new + // enough (4.11+), we can read the arm64 registers directly which'll + // trap into the kernel and then return back to userspace. + // + // But on older kernels, such as Linux 4.4.180 as used on many Synology + // devices, calling readARM64Registers (specifically getisar0) will + // cause a SIGILL and we'll die. So for older kernels, parse /proc/cpuinfo + // instead. + // + // See golang/go#57336. + if linuxKernelCanEmulateCPUID() { + readARM64Registers() + } else { + readLinuxProcCPUInfo() + } + return + } + + // HWCAP feature bits + ARM64.HasFP = isSet(hwCap, hwcap_FP) + ARM64.HasASIMD = isSet(hwCap, hwcap_ASIMD) + ARM64.HasEVTSTRM = isSet(hwCap, hwcap_EVTSTRM) + ARM64.HasAES = isSet(hwCap, hwcap_AES) + ARM64.HasPMULL = isSet(hwCap, hwcap_PMULL) + ARM64.HasSHA1 = isSet(hwCap, hwcap_SHA1) + ARM64.HasSHA2 = isSet(hwCap, hwcap_SHA2) + ARM64.HasCRC32 = isSet(hwCap, hwcap_CRC32) + ARM64.HasATOMICS = isSet(hwCap, hwcap_ATOMICS) + ARM64.HasFPHP = isSet(hwCap, hwcap_FPHP) + ARM64.HasASIMDHP = isSet(hwCap, hwcap_ASIMDHP) + ARM64.HasCPUID = isSet(hwCap, hwcap_CPUID) + ARM64.HasASIMDRDM = isSet(hwCap, hwcap_ASIMDRDM) + ARM64.HasJSCVT = isSet(hwCap, hwcap_JSCVT) + ARM64.HasFCMA = isSet(hwCap, hwcap_FCMA) + ARM64.HasLRCPC = isSet(hwCap, hwcap_LRCPC) + ARM64.HasDCPOP = isSet(hwCap, hwcap_DCPOP) + ARM64.HasSHA3 = isSet(hwCap, hwcap_SHA3) + ARM64.HasSM3 = isSet(hwCap, hwcap_SM3) + ARM64.HasSM4 = isSet(hwCap, hwcap_SM4) + ARM64.HasASIMDDP = isSet(hwCap, hwcap_ASIMDDP) + ARM64.HasSHA512 = isSet(hwCap, hwcap_SHA512) + ARM64.HasSVE = isSet(hwCap, hwcap_SVE) + ARM64.HasASIMDFHM = isSet(hwCap, hwcap_ASIMDFHM) + ARM64.HasDIT = isSet(hwCap, hwcap_DIT) + + // HWCAP2 feature bits + ARM64.HasSVE2 = isSet(hwCap2, hwcap2_SVE2) + ARM64.HasI8MM = isSet(hwCap2, hwcap2_I8MM) +} + +func isSet(hwc uint, value uint) bool { + return hwc&value != 0 +} diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_linux_loong64.go b/tests/vendor/golang.org/x/sys/cpu/cpu_linux_loong64.go new file mode 100644 index 000000000..4f3411432 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_linux_loong64.go @@ -0,0 +1,22 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +// HWCAP bits. These are exposed by the Linux kernel. +const ( + hwcap_LOONGARCH_LSX = 1 << 4 + hwcap_LOONGARCH_LASX = 1 << 5 +) + +func doinit() { + // TODO: Features that require kernel support like LSX and LASX can + // be detected here once needed in std library or by the compiler. + Loong64.HasLSX = hwcIsSet(hwCap, hwcap_LOONGARCH_LSX) + Loong64.HasLASX = hwcIsSet(hwCap, hwcap_LOONGARCH_LASX) +} + +func hwcIsSet(hwc uint, val uint) bool { + return hwc&val != 0 +} diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_linux_mips64x.go b/tests/vendor/golang.org/x/sys/cpu/cpu_linux_mips64x.go new file mode 100644 index 000000000..4686c1d54 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_linux_mips64x.go @@ -0,0 +1,22 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && (mips64 || mips64le) + +package cpu + +// HWCAP bits. These are exposed by the Linux kernel 5.4. +const ( + // CPU features + hwcap_MIPS_MSA = 1 << 1 +) + +func doinit() { + // HWCAP feature bits + MIPS64X.HasMSA = isSet(hwCap, hwcap_MIPS_MSA) +} + +func isSet(hwc uint, value uint) bool { + return hwc&value != 0 +} diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_linux_noinit.go b/tests/vendor/golang.org/x/sys/cpu/cpu_linux_noinit.go new file mode 100644 index 000000000..a428dec9c --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_linux_noinit.go @@ -0,0 +1,9 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && !arm && !arm64 && !loong64 && !mips64 && !mips64le && !ppc64 && !ppc64le && !s390x && !riscv64 + +package cpu + +func doinit() {} diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go b/tests/vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go new file mode 100644 index 000000000..197188e67 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go @@ -0,0 +1,30 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && (ppc64 || ppc64le) + +package cpu + +// HWCAP/HWCAP2 bits. These are exposed by the kernel. +const ( + // ISA Level + _PPC_FEATURE2_ARCH_2_07 = 0x80000000 + _PPC_FEATURE2_ARCH_3_00 = 0x00800000 + + // CPU features + _PPC_FEATURE2_DARN = 0x00200000 + _PPC_FEATURE2_SCV = 0x00100000 +) + +func doinit() { + // HWCAP2 feature bits + PPC64.IsPOWER8 = isSet(hwCap2, _PPC_FEATURE2_ARCH_2_07) + PPC64.IsPOWER9 = isSet(hwCap2, _PPC_FEATURE2_ARCH_3_00) + PPC64.HasDARN = isSet(hwCap2, _PPC_FEATURE2_DARN) + PPC64.HasSCV = isSet(hwCap2, _PPC_FEATURE2_SCV) +} + +func isSet(hwc uint, value uint) bool { + return hwc&value != 0 +} diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_linux_riscv64.go b/tests/vendor/golang.org/x/sys/cpu/cpu_linux_riscv64.go new file mode 100644 index 000000000..ad741536f --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_linux_riscv64.go @@ -0,0 +1,160 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +import ( + "syscall" + "unsafe" +) + +// RISC-V extension discovery code for Linux. The approach here is to first try the riscv_hwprobe +// syscall falling back to HWCAP to check for the C extension if riscv_hwprobe is not available. +// +// A note on detection of the Vector extension using HWCAP. +// +// Support for the Vector extension version 1.0 was added to the Linux kernel in release 6.5. +// Support for the riscv_hwprobe syscall was added in 6.4. It follows that if the riscv_hwprobe +// syscall is not available then neither is the Vector extension (which needs kernel support). +// The riscv_hwprobe syscall should then be all we need to detect the Vector extension. +// However, some RISC-V board manufacturers ship boards with an older kernel on top of which +// they have back-ported various versions of the Vector extension patches but not the riscv_hwprobe +// patches. These kernels advertise support for the Vector extension using HWCAP. Falling +// back to HWCAP to detect the Vector extension, if riscv_hwprobe is not available, or simply not +// bothering with riscv_hwprobe at all and just using HWCAP may then seem like an attractive option. +// +// Unfortunately, simply checking the 'V' bit in AT_HWCAP will not work as this bit is used by +// RISC-V board and cloud instance providers to mean different things. The Lichee Pi 4A board +// and the Scaleway RV1 cloud instances use the 'V' bit to advertise their support for the unratified +// 0.7.1 version of the Vector Specification. The Banana Pi BPI-F3 and the CanMV-K230 board use +// it to advertise support for 1.0 of the Vector extension. Versions 0.7.1 and 1.0 of the Vector +// extension are binary incompatible. HWCAP can then not be used in isolation to populate the +// HasV field as this field indicates that the underlying CPU is compatible with RVV 1.0. +// +// There is a way at runtime to distinguish between versions 0.7.1 and 1.0 of the Vector +// specification by issuing a RVV 1.0 vsetvli instruction and checking the vill bit of the vtype +// register. This check would allow us to safely detect version 1.0 of the Vector extension +// with HWCAP, if riscv_hwprobe were not available. However, the check cannot +// be added until the assembler supports the Vector instructions. +// +// Note the riscv_hwprobe syscall does not suffer from these ambiguities by design as all of the +// extensions it advertises support for are explicitly versioned. It's also worth noting that +// the riscv_hwprobe syscall is the only way to detect multi-letter RISC-V extensions, e.g., Zba. +// These cannot be detected using HWCAP and so riscv_hwprobe must be used to detect the majority +// of RISC-V extensions. +// +// Please see https://docs.kernel.org/arch/riscv/hwprobe.html for more information. + +// golang.org/x/sys/cpu is not allowed to depend on golang.org/x/sys/unix so we must +// reproduce the constants, types and functions needed to make the riscv_hwprobe syscall +// here. + +const ( + // Copied from golang.org/x/sys/unix/ztypes_linux_riscv64.go. + riscv_HWPROBE_KEY_IMA_EXT_0 = 0x4 + riscv_HWPROBE_IMA_C = 0x2 + riscv_HWPROBE_IMA_V = 0x4 + riscv_HWPROBE_EXT_ZBA = 0x8 + riscv_HWPROBE_EXT_ZBB = 0x10 + riscv_HWPROBE_EXT_ZBS = 0x20 + riscv_HWPROBE_EXT_ZVBB = 0x20000 + riscv_HWPROBE_EXT_ZVBC = 0x40000 + riscv_HWPROBE_EXT_ZVKB = 0x80000 + riscv_HWPROBE_EXT_ZVKG = 0x100000 + riscv_HWPROBE_EXT_ZVKNED = 0x200000 + riscv_HWPROBE_EXT_ZVKNHB = 0x800000 + riscv_HWPROBE_EXT_ZVKSED = 0x1000000 + riscv_HWPROBE_EXT_ZVKSH = 0x2000000 + riscv_HWPROBE_EXT_ZVKT = 0x4000000 + riscv_HWPROBE_KEY_CPUPERF_0 = 0x5 + riscv_HWPROBE_MISALIGNED_FAST = 0x3 + riscv_HWPROBE_MISALIGNED_MASK = 0x7 +) + +const ( + // sys_RISCV_HWPROBE is copied from golang.org/x/sys/unix/zsysnum_linux_riscv64.go. + sys_RISCV_HWPROBE = 258 +) + +// riscvHWProbePairs is copied from golang.org/x/sys/unix/ztypes_linux_riscv64.go. +type riscvHWProbePairs struct { + key int64 + value uint64 +} + +const ( + // CPU features + hwcap_RISCV_ISA_C = 1 << ('C' - 'A') +) + +func doinit() { + // A slice of key/value pair structures is passed to the RISCVHWProbe syscall. The key + // field should be initialised with one of the key constants defined above, e.g., + // RISCV_HWPROBE_KEY_IMA_EXT_0. The syscall will set the value field to the appropriate value. + // If the kernel does not recognise a key it will set the key field to -1 and the value field to 0. + + pairs := []riscvHWProbePairs{ + {riscv_HWPROBE_KEY_IMA_EXT_0, 0}, + {riscv_HWPROBE_KEY_CPUPERF_0, 0}, + } + + // This call only indicates that extensions are supported if they are implemented on all cores. + if riscvHWProbe(pairs, 0) { + if pairs[0].key != -1 { + v := uint(pairs[0].value) + RISCV64.HasC = isSet(v, riscv_HWPROBE_IMA_C) + RISCV64.HasV = isSet(v, riscv_HWPROBE_IMA_V) + RISCV64.HasZba = isSet(v, riscv_HWPROBE_EXT_ZBA) + RISCV64.HasZbb = isSet(v, riscv_HWPROBE_EXT_ZBB) + RISCV64.HasZbs = isSet(v, riscv_HWPROBE_EXT_ZBS) + RISCV64.HasZvbb = isSet(v, riscv_HWPROBE_EXT_ZVBB) + RISCV64.HasZvbc = isSet(v, riscv_HWPROBE_EXT_ZVBC) + RISCV64.HasZvkb = isSet(v, riscv_HWPROBE_EXT_ZVKB) + RISCV64.HasZvkg = isSet(v, riscv_HWPROBE_EXT_ZVKG) + RISCV64.HasZvkt = isSet(v, riscv_HWPROBE_EXT_ZVKT) + // Cryptography shorthand extensions + RISCV64.HasZvkn = isSet(v, riscv_HWPROBE_EXT_ZVKNED) && + isSet(v, riscv_HWPROBE_EXT_ZVKNHB) && RISCV64.HasZvkb && RISCV64.HasZvkt + RISCV64.HasZvknc = RISCV64.HasZvkn && RISCV64.HasZvbc + RISCV64.HasZvkng = RISCV64.HasZvkn && RISCV64.HasZvkg + RISCV64.HasZvks = isSet(v, riscv_HWPROBE_EXT_ZVKSED) && + isSet(v, riscv_HWPROBE_EXT_ZVKSH) && RISCV64.HasZvkb && RISCV64.HasZvkt + RISCV64.HasZvksc = RISCV64.HasZvks && RISCV64.HasZvbc + RISCV64.HasZvksg = RISCV64.HasZvks && RISCV64.HasZvkg + } + if pairs[1].key != -1 { + v := pairs[1].value & riscv_HWPROBE_MISALIGNED_MASK + RISCV64.HasFastMisaligned = v == riscv_HWPROBE_MISALIGNED_FAST + } + } + + // Let's double check with HWCAP if the C extension does not appear to be supported. + // This may happen if we're running on a kernel older than 6.4. + + if !RISCV64.HasC { + RISCV64.HasC = isSet(hwCap, hwcap_RISCV_ISA_C) + } +} + +func isSet(hwc uint, value uint) bool { + return hwc&value != 0 +} + +// riscvHWProbe is a simplified version of the generated wrapper function found in +// golang.org/x/sys/unix/zsyscall_linux_riscv64.go. We simplify it by removing the +// cpuCount and cpus parameters which we do not need. We always want to pass 0 for +// these parameters here so the kernel only reports the extensions that are present +// on all cores. +func riscvHWProbe(pairs []riscvHWProbePairs, flags uint) bool { + var _zero uintptr + var p0 unsafe.Pointer + if len(pairs) > 0 { + p0 = unsafe.Pointer(&pairs[0]) + } else { + p0 = unsafe.Pointer(&_zero) + } + + _, _, e1 := syscall.Syscall6(sys_RISCV_HWPROBE, uintptr(p0), uintptr(len(pairs)), uintptr(0), uintptr(0), uintptr(flags), 0) + return e1 == 0 +} diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go b/tests/vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go new file mode 100644 index 000000000..1517ac61d --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go @@ -0,0 +1,40 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +const ( + // bit mask values from /usr/include/bits/hwcap.h + hwcap_ZARCH = 2 + hwcap_STFLE = 4 + hwcap_MSA = 8 + hwcap_LDISP = 16 + hwcap_EIMM = 32 + hwcap_DFP = 64 + hwcap_ETF3EH = 256 + hwcap_VX = 2048 + hwcap_VXE = 8192 +) + +func initS390Xbase() { + // test HWCAP bit vector + has := func(featureMask uint) bool { + return hwCap&featureMask == featureMask + } + + // mandatory + S390X.HasZARCH = has(hwcap_ZARCH) + + // optional + S390X.HasSTFLE = has(hwcap_STFLE) + S390X.HasLDISP = has(hwcap_LDISP) + S390X.HasEIMM = has(hwcap_EIMM) + S390X.HasETF3EH = has(hwcap_ETF3EH) + S390X.HasDFP = has(hwcap_DFP) + S390X.HasMSA = has(hwcap_MSA) + S390X.HasVX = has(hwcap_VX) + if S390X.HasVX { + S390X.HasVXE = has(hwcap_VXE) + } +} diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_loong64.go b/tests/vendor/golang.org/x/sys/cpu/cpu_loong64.go new file mode 100644 index 000000000..45ecb29ae --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_loong64.go @@ -0,0 +1,50 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build loong64 + +package cpu + +const cacheLineSize = 64 + +// Bit fields for CPUCFG registers, Related reference documents: +// https://loongson.github.io/LoongArch-Documentation/LoongArch-Vol1-EN.html#_cpucfg +const ( + // CPUCFG1 bits + cpucfg1_CRC32 = 1 << 25 + + // CPUCFG2 bits + cpucfg2_LAM_BH = 1 << 27 + cpucfg2_LAMCAS = 1 << 28 +) + +func initOptions() { + options = []option{ + {Name: "lsx", Feature: &Loong64.HasLSX}, + {Name: "lasx", Feature: &Loong64.HasLASX}, + {Name: "crc32", Feature: &Loong64.HasCRC32}, + {Name: "lam_bh", Feature: &Loong64.HasLAM_BH}, + {Name: "lamcas", Feature: &Loong64.HasLAMCAS}, + } + + // The CPUCFG data on Loong64 only reflects the hardware capabilities, + // not the kernel support status, so features such as LSX and LASX that + // require kernel support cannot be obtained from the CPUCFG data. + // + // These features only require hardware capability support and do not + // require kernel specific support, so they can be obtained directly + // through CPUCFG + cfg1 := get_cpucfg(1) + cfg2 := get_cpucfg(2) + + Loong64.HasCRC32 = cfgIsSet(cfg1, cpucfg1_CRC32) + Loong64.HasLAMCAS = cfgIsSet(cfg2, cpucfg2_LAMCAS) + Loong64.HasLAM_BH = cfgIsSet(cfg2, cpucfg2_LAM_BH) +} + +func get_cpucfg(reg uint32) uint32 + +func cfgIsSet(cfg uint32, val uint32) bool { + return cfg&val != 0 +} diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_loong64.s b/tests/vendor/golang.org/x/sys/cpu/cpu_loong64.s new file mode 100644 index 000000000..71cbaf1ce --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_loong64.s @@ -0,0 +1,13 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +#include "textflag.h" + +// func get_cpucfg(reg uint32) uint32 +TEXT ·get_cpucfg(SB), NOSPLIT|NOFRAME, $0 + MOVW reg+0(FP), R5 + // CPUCFG R5, R4 = 0x00006ca4 + WORD $0x00006ca4 + MOVW R4, ret+8(FP) + RET diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_mips64x.go b/tests/vendor/golang.org/x/sys/cpu/cpu_mips64x.go new file mode 100644 index 000000000..fedb00cc4 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_mips64x.go @@ -0,0 +1,15 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build mips64 || mips64le + +package cpu + +const cacheLineSize = 32 + +func initOptions() { + options = []option{ + {Name: "msa", Feature: &MIPS64X.HasMSA}, + } +} diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_mipsx.go b/tests/vendor/golang.org/x/sys/cpu/cpu_mipsx.go new file mode 100644 index 000000000..ffb4ec7eb --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_mipsx.go @@ -0,0 +1,11 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build mips || mipsle + +package cpu + +const cacheLineSize = 32 + +func initOptions() {} diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_netbsd_arm64.go b/tests/vendor/golang.org/x/sys/cpu/cpu_netbsd_arm64.go new file mode 100644 index 000000000..ebfb3fc8e --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_netbsd_arm64.go @@ -0,0 +1,173 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +import ( + "syscall" + "unsafe" +) + +// Minimal copy of functionality from x/sys/unix so the cpu package can call +// sysctl without depending on x/sys/unix. + +const ( + _CTL_QUERY = -2 + + _SYSCTL_VERS_1 = 0x1000000 +) + +var _zero uintptr + +func sysctl(mib []int32, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, errno := syscall.Syscall6( + syscall.SYS___SYSCTL, + uintptr(_p0), + uintptr(len(mib)), + uintptr(unsafe.Pointer(old)), + uintptr(unsafe.Pointer(oldlen)), + uintptr(unsafe.Pointer(new)), + uintptr(newlen)) + if errno != 0 { + return errno + } + return nil +} + +type sysctlNode struct { + Flags uint32 + Num int32 + Name [32]int8 + Ver uint32 + __rsvd uint32 + Un [16]byte + _sysctl_size [8]byte + _sysctl_func [8]byte + _sysctl_parent [8]byte + _sysctl_desc [8]byte +} + +func sysctlNodes(mib []int32) ([]sysctlNode, error) { + var olen uintptr + + // Get a list of all sysctl nodes below the given MIB by performing + // a sysctl for the given MIB with CTL_QUERY appended. + mib = append(mib, _CTL_QUERY) + qnode := sysctlNode{Flags: _SYSCTL_VERS_1} + qp := (*byte)(unsafe.Pointer(&qnode)) + sz := unsafe.Sizeof(qnode) + if err := sysctl(mib, nil, &olen, qp, sz); err != nil { + return nil, err + } + + // Now that we know the size, get the actual nodes. + nodes := make([]sysctlNode, olen/sz) + np := (*byte)(unsafe.Pointer(&nodes[0])) + if err := sysctl(mib, np, &olen, qp, sz); err != nil { + return nil, err + } + + return nodes, nil +} + +func nametomib(name string) ([]int32, error) { + // Split name into components. + var parts []string + last := 0 + for i := 0; i < len(name); i++ { + if name[i] == '.' { + parts = append(parts, name[last:i]) + last = i + 1 + } + } + parts = append(parts, name[last:]) + + mib := []int32{} + // Discover the nodes and construct the MIB OID. + for partno, part := range parts { + nodes, err := sysctlNodes(mib) + if err != nil { + return nil, err + } + for _, node := range nodes { + n := make([]byte, 0) + for i := range node.Name { + if node.Name[i] != 0 { + n = append(n, byte(node.Name[i])) + } + } + if string(n) == part { + mib = append(mib, int32(node.Num)) + break + } + } + if len(mib) != partno+1 { + return nil, err + } + } + + return mib, nil +} + +// aarch64SysctlCPUID is struct aarch64_sysctl_cpu_id from NetBSD's <aarch64/armreg.h> +type aarch64SysctlCPUID struct { + midr uint64 /* Main ID Register */ + revidr uint64 /* Revision ID Register */ + mpidr uint64 /* Multiprocessor Affinity Register */ + aa64dfr0 uint64 /* A64 Debug Feature Register 0 */ + aa64dfr1 uint64 /* A64 Debug Feature Register 1 */ + aa64isar0 uint64 /* A64 Instruction Set Attribute Register 0 */ + aa64isar1 uint64 /* A64 Instruction Set Attribute Register 1 */ + aa64mmfr0 uint64 /* A64 Memory Model Feature Register 0 */ + aa64mmfr1 uint64 /* A64 Memory Model Feature Register 1 */ + aa64mmfr2 uint64 /* A64 Memory Model Feature Register 2 */ + aa64pfr0 uint64 /* A64 Processor Feature Register 0 */ + aa64pfr1 uint64 /* A64 Processor Feature Register 1 */ + aa64zfr0 uint64 /* A64 SVE Feature ID Register 0 */ + mvfr0 uint32 /* Media and VFP Feature Register 0 */ + mvfr1 uint32 /* Media and VFP Feature Register 1 */ + mvfr2 uint32 /* Media and VFP Feature Register 2 */ + pad uint32 + clidr uint64 /* Cache Level ID Register */ + ctr uint64 /* Cache Type Register */ +} + +func sysctlCPUID(name string) (*aarch64SysctlCPUID, error) { + mib, err := nametomib(name) + if err != nil { + return nil, err + } + + out := aarch64SysctlCPUID{} + n := unsafe.Sizeof(out) + _, _, errno := syscall.Syscall6( + syscall.SYS___SYSCTL, + uintptr(unsafe.Pointer(&mib[0])), + uintptr(len(mib)), + uintptr(unsafe.Pointer(&out)), + uintptr(unsafe.Pointer(&n)), + uintptr(0), + uintptr(0)) + if errno != 0 { + return nil, errno + } + return &out, nil +} + +func doinit() { + cpuid, err := sysctlCPUID("machdep.cpu0.cpu_id") + if err != nil { + setMinimalFeatures() + return + } + parseARM64SystemRegisters(cpuid.aa64isar0, cpuid.aa64isar1, cpuid.aa64pfr0) + + Initialized = true +} diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.go b/tests/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.go new file mode 100644 index 000000000..85b64d5cc --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.go @@ -0,0 +1,65 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +import ( + "syscall" + "unsafe" +) + +// Minimal copy of functionality from x/sys/unix so the cpu package can call +// sysctl without depending on x/sys/unix. + +const ( + // From OpenBSD's sys/sysctl.h. + _CTL_MACHDEP = 7 + + // From OpenBSD's machine/cpu.h. + _CPU_ID_AA64ISAR0 = 2 + _CPU_ID_AA64ISAR1 = 3 +) + +// Implemented in the runtime package (runtime/sys_openbsd3.go) +func syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) + +//go:linkname syscall_syscall6 syscall.syscall6 + +func sysctl(mib []uint32, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + _, _, errno := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(unsafe.Pointer(&mib[0])), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if errno != 0 { + return errno + } + return nil +} + +var libc_sysctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sysctl sysctl "libc.so" + +func sysctlUint64(mib []uint32) (uint64, bool) { + var out uint64 + nout := unsafe.Sizeof(out) + if err := sysctl(mib, (*byte)(unsafe.Pointer(&out)), &nout, nil, 0); err != nil { + return 0, false + } + return out, true +} + +func doinit() { + setMinimalFeatures() + + // Get ID_AA64ISAR0 and ID_AA64ISAR1 from sysctl. + isar0, ok := sysctlUint64([]uint32{_CTL_MACHDEP, _CPU_ID_AA64ISAR0}) + if !ok { + return + } + isar1, ok := sysctlUint64([]uint32{_CTL_MACHDEP, _CPU_ID_AA64ISAR1}) + if !ok { + return + } + parseARM64SystemRegisters(isar0, isar1, 0) + + Initialized = true +} diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.s b/tests/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.s new file mode 100644 index 000000000..054ba05d6 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.s @@ -0,0 +1,11 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +#include "textflag.h" + +TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sysctl(SB) + +GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_other_arm.go b/tests/vendor/golang.org/x/sys/cpu/cpu_other_arm.go new file mode 100644 index 000000000..e9ecf2a45 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_other_arm.go @@ -0,0 +1,9 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !linux && arm + +package cpu + +func archInit() {} diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go b/tests/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go new file mode 100644 index 000000000..5341e7f88 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go @@ -0,0 +1,9 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !linux && !netbsd && !openbsd && arm64 + +package cpu + +func doinit() {} diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_other_mips64x.go b/tests/vendor/golang.org/x/sys/cpu/cpu_other_mips64x.go new file mode 100644 index 000000000..5f8f2419a --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_other_mips64x.go @@ -0,0 +1,11 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !linux && (mips64 || mips64le) + +package cpu + +func archInit() { + Initialized = true +} diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_other_ppc64x.go b/tests/vendor/golang.org/x/sys/cpu/cpu_other_ppc64x.go new file mode 100644 index 000000000..89608fba2 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_other_ppc64x.go @@ -0,0 +1,12 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !aix && !linux && (ppc64 || ppc64le) + +package cpu + +func archInit() { + PPC64.IsPOWER8 = true + Initialized = true +} diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_other_riscv64.go b/tests/vendor/golang.org/x/sys/cpu/cpu_other_riscv64.go new file mode 100644 index 000000000..5ab87808f --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_other_riscv64.go @@ -0,0 +1,11 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !linux && riscv64 + +package cpu + +func archInit() { + Initialized = true +} diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_other_x86.go b/tests/vendor/golang.org/x/sys/cpu/cpu_other_x86.go new file mode 100644 index 000000000..a0fd7e2f7 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_other_x86.go @@ -0,0 +1,11 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build 386 || amd64p32 || (amd64 && (!darwin || !gc)) + +package cpu + +func darwinSupportsAVX512() bool { + panic("only implemented for gc && amd64 && darwin") +} diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_ppc64x.go b/tests/vendor/golang.org/x/sys/cpu/cpu_ppc64x.go new file mode 100644 index 000000000..c14f12b14 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_ppc64x.go @@ -0,0 +1,16 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build ppc64 || ppc64le + +package cpu + +const cacheLineSize = 128 + +func initOptions() { + options = []option{ + {Name: "darn", Feature: &PPC64.HasDARN}, + {Name: "scv", Feature: &PPC64.HasSCV}, + } +} diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_riscv64.go b/tests/vendor/golang.org/x/sys/cpu/cpu_riscv64.go new file mode 100644 index 000000000..0f617aef5 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_riscv64.go @@ -0,0 +1,32 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build riscv64 + +package cpu + +const cacheLineSize = 64 + +func initOptions() { + options = []option{ + {Name: "fastmisaligned", Feature: &RISCV64.HasFastMisaligned}, + {Name: "c", Feature: &RISCV64.HasC}, + {Name: "v", Feature: &RISCV64.HasV}, + {Name: "zba", Feature: &RISCV64.HasZba}, + {Name: "zbb", Feature: &RISCV64.HasZbb}, + {Name: "zbs", Feature: &RISCV64.HasZbs}, + // RISC-V Cryptography Extensions + {Name: "zvbb", Feature: &RISCV64.HasZvbb}, + {Name: "zvbc", Feature: &RISCV64.HasZvbc}, + {Name: "zvkb", Feature: &RISCV64.HasZvkb}, + {Name: "zvkg", Feature: &RISCV64.HasZvkg}, + {Name: "zvkt", Feature: &RISCV64.HasZvkt}, + {Name: "zvkn", Feature: &RISCV64.HasZvkn}, + {Name: "zvknc", Feature: &RISCV64.HasZvknc}, + {Name: "zvkng", Feature: &RISCV64.HasZvkng}, + {Name: "zvks", Feature: &RISCV64.HasZvks}, + {Name: "zvksc", Feature: &RISCV64.HasZvksc}, + {Name: "zvksg", Feature: &RISCV64.HasZvksg}, + } +} diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_s390x.go b/tests/vendor/golang.org/x/sys/cpu/cpu_s390x.go new file mode 100644 index 000000000..5881b8833 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_s390x.go @@ -0,0 +1,172 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +const cacheLineSize = 256 + +func initOptions() { + options = []option{ + {Name: "zarch", Feature: &S390X.HasZARCH, Required: true}, + {Name: "stfle", Feature: &S390X.HasSTFLE, Required: true}, + {Name: "ldisp", Feature: &S390X.HasLDISP, Required: true}, + {Name: "eimm", Feature: &S390X.HasEIMM, Required: true}, + {Name: "dfp", Feature: &S390X.HasDFP}, + {Name: "etf3eh", Feature: &S390X.HasETF3EH}, + {Name: "msa", Feature: &S390X.HasMSA}, + {Name: "aes", Feature: &S390X.HasAES}, + {Name: "aescbc", Feature: &S390X.HasAESCBC}, + {Name: "aesctr", Feature: &S390X.HasAESCTR}, + {Name: "aesgcm", Feature: &S390X.HasAESGCM}, + {Name: "ghash", Feature: &S390X.HasGHASH}, + {Name: "sha1", Feature: &S390X.HasSHA1}, + {Name: "sha256", Feature: &S390X.HasSHA256}, + {Name: "sha3", Feature: &S390X.HasSHA3}, + {Name: "sha512", Feature: &S390X.HasSHA512}, + {Name: "vx", Feature: &S390X.HasVX}, + {Name: "vxe", Feature: &S390X.HasVXE}, + } +} + +// bitIsSet reports whether the bit at index is set. The bit index +// is in big endian order, so bit index 0 is the leftmost bit. +func bitIsSet(bits []uint64, index uint) bool { + return bits[index/64]&((1<<63)>>(index%64)) != 0 +} + +// facility is a bit index for the named facility. +type facility uint8 + +const ( + // mandatory facilities + zarch facility = 1 // z architecture mode is active + stflef facility = 7 // store-facility-list-extended + ldisp facility = 18 // long-displacement + eimm facility = 21 // extended-immediate + + // miscellaneous facilities + dfp facility = 42 // decimal-floating-point + etf3eh facility = 30 // extended-translation 3 enhancement + + // cryptography facilities + msa facility = 17 // message-security-assist + msa3 facility = 76 // message-security-assist extension 3 + msa4 facility = 77 // message-security-assist extension 4 + msa5 facility = 57 // message-security-assist extension 5 + msa8 facility = 146 // message-security-assist extension 8 + msa9 facility = 155 // message-security-assist extension 9 + + // vector facilities + vx facility = 129 // vector facility + vxe facility = 135 // vector-enhancements 1 + vxe2 facility = 148 // vector-enhancements 2 +) + +// facilityList contains the result of an STFLE call. +// Bits are numbered in big endian order so the +// leftmost bit (the MSB) is at index 0. +type facilityList struct { + bits [4]uint64 +} + +// Has reports whether the given facilities are present. +func (s *facilityList) Has(fs ...facility) bool { + if len(fs) == 0 { + panic("no facility bits provided") + } + for _, f := range fs { + if !bitIsSet(s.bits[:], uint(f)) { + return false + } + } + return true +} + +// function is the code for the named cryptographic function. +type function uint8 + +const ( + // KM{,A,C,CTR} function codes + aes128 function = 18 // AES-128 + aes192 function = 19 // AES-192 + aes256 function = 20 // AES-256 + + // K{I,L}MD function codes + sha1 function = 1 // SHA-1 + sha256 function = 2 // SHA-256 + sha512 function = 3 // SHA-512 + sha3_224 function = 32 // SHA3-224 + sha3_256 function = 33 // SHA3-256 + sha3_384 function = 34 // SHA3-384 + sha3_512 function = 35 // SHA3-512 + shake128 function = 36 // SHAKE-128 + shake256 function = 37 // SHAKE-256 + + // KLMD function codes + ghash function = 65 // GHASH +) + +// queryResult contains the result of a Query function +// call. Bits are numbered in big endian order so the +// leftmost bit (the MSB) is at index 0. +type queryResult struct { + bits [2]uint64 +} + +// Has reports whether the given functions are present. +func (q *queryResult) Has(fns ...function) bool { + if len(fns) == 0 { + panic("no function codes provided") + } + for _, f := range fns { + if !bitIsSet(q.bits[:], uint(f)) { + return false + } + } + return true +} + +func doinit() { + initS390Xbase() + + // We need implementations of stfle, km and so on + // to detect cryptographic features. + if !haveAsmFunctions() { + return + } + + // optional cryptographic functions + if S390X.HasMSA { + aes := []function{aes128, aes192, aes256} + + // cipher message + km, kmc := kmQuery(), kmcQuery() + S390X.HasAES = km.Has(aes...) + S390X.HasAESCBC = kmc.Has(aes...) + if S390X.HasSTFLE { + facilities := stfle() + if facilities.Has(msa4) { + kmctr := kmctrQuery() + S390X.HasAESCTR = kmctr.Has(aes...) + } + if facilities.Has(msa8) { + kma := kmaQuery() + S390X.HasAESGCM = kma.Has(aes...) + } + } + + // compute message digest + kimd := kimdQuery() // intermediate (no padding) + klmd := klmdQuery() // last (padding) + S390X.HasSHA1 = kimd.Has(sha1) && klmd.Has(sha1) + S390X.HasSHA256 = kimd.Has(sha256) && klmd.Has(sha256) + S390X.HasSHA512 = kimd.Has(sha512) && klmd.Has(sha512) + S390X.HasGHASH = kimd.Has(ghash) // KLMD-GHASH does not exist + sha3 := []function{ + sha3_224, sha3_256, sha3_384, sha3_512, + shake128, shake256, + } + S390X.HasSHA3 = kimd.Has(sha3...) && klmd.Has(sha3...) + } +} diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_s390x.s b/tests/vendor/golang.org/x/sys/cpu/cpu_s390x.s new file mode 100644 index 000000000..1fb4b7013 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_s390x.s @@ -0,0 +1,57 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc + +#include "textflag.h" + +// func stfle() facilityList +TEXT ·stfle(SB), NOSPLIT|NOFRAME, $0-32 + MOVD $ret+0(FP), R1 + MOVD $3, R0 // last doubleword index to store + XC $32, (R1), (R1) // clear 4 doublewords (32 bytes) + WORD $0xb2b01000 // store facility list extended (STFLE) + RET + +// func kmQuery() queryResult +TEXT ·kmQuery(SB), NOSPLIT|NOFRAME, $0-16 + MOVD $0, R0 // set function code to 0 (KM-Query) + MOVD $ret+0(FP), R1 // address of 16-byte return value + WORD $0xB92E0024 // cipher message (KM) + RET + +// func kmcQuery() queryResult +TEXT ·kmcQuery(SB), NOSPLIT|NOFRAME, $0-16 + MOVD $0, R0 // set function code to 0 (KMC-Query) + MOVD $ret+0(FP), R1 // address of 16-byte return value + WORD $0xB92F0024 // cipher message with chaining (KMC) + RET + +// func kmctrQuery() queryResult +TEXT ·kmctrQuery(SB), NOSPLIT|NOFRAME, $0-16 + MOVD $0, R0 // set function code to 0 (KMCTR-Query) + MOVD $ret+0(FP), R1 // address of 16-byte return value + WORD $0xB92D4024 // cipher message with counter (KMCTR) + RET + +// func kmaQuery() queryResult +TEXT ·kmaQuery(SB), NOSPLIT|NOFRAME, $0-16 + MOVD $0, R0 // set function code to 0 (KMA-Query) + MOVD $ret+0(FP), R1 // address of 16-byte return value + WORD $0xb9296024 // cipher message with authentication (KMA) + RET + +// func kimdQuery() queryResult +TEXT ·kimdQuery(SB), NOSPLIT|NOFRAME, $0-16 + MOVD $0, R0 // set function code to 0 (KIMD-Query) + MOVD $ret+0(FP), R1 // address of 16-byte return value + WORD $0xB93E0024 // compute intermediate message digest (KIMD) + RET + +// func klmdQuery() queryResult +TEXT ·klmdQuery(SB), NOSPLIT|NOFRAME, $0-16 + MOVD $0, R0 // set function code to 0 (KLMD-Query) + MOVD $ret+0(FP), R1 // address of 16-byte return value + WORD $0xB93F0024 // compute last message digest (KLMD) + RET diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_wasm.go b/tests/vendor/golang.org/x/sys/cpu/cpu_wasm.go new file mode 100644 index 000000000..384787ea3 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_wasm.go @@ -0,0 +1,17 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build wasm + +package cpu + +// We're compiling the cpu package for an unknown (software-abstracted) CPU. +// Make CacheLinePad an empty struct and hope that the usual struct alignment +// rules are good enough. + +const cacheLineSize = 0 + +func initOptions() {} + +func archInit() {} diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_x86.go b/tests/vendor/golang.org/x/sys/cpu/cpu_x86.go new file mode 100644 index 000000000..1e642f330 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_x86.go @@ -0,0 +1,162 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build 386 || amd64 || amd64p32 + +package cpu + +import "runtime" + +const cacheLineSize = 64 + +func initOptions() { + options = []option{ + {Name: "adx", Feature: &X86.HasADX}, + {Name: "aes", Feature: &X86.HasAES}, + {Name: "avx", Feature: &X86.HasAVX}, + {Name: "avx2", Feature: &X86.HasAVX2}, + {Name: "avx512", Feature: &X86.HasAVX512}, + {Name: "avx512f", Feature: &X86.HasAVX512F}, + {Name: "avx512cd", Feature: &X86.HasAVX512CD}, + {Name: "avx512er", Feature: &X86.HasAVX512ER}, + {Name: "avx512pf", Feature: &X86.HasAVX512PF}, + {Name: "avx512vl", Feature: &X86.HasAVX512VL}, + {Name: "avx512bw", Feature: &X86.HasAVX512BW}, + {Name: "avx512dq", Feature: &X86.HasAVX512DQ}, + {Name: "avx512ifma", Feature: &X86.HasAVX512IFMA}, + {Name: "avx512vbmi", Feature: &X86.HasAVX512VBMI}, + {Name: "avx512vnniw", Feature: &X86.HasAVX5124VNNIW}, + {Name: "avx5124fmaps", Feature: &X86.HasAVX5124FMAPS}, + {Name: "avx512vpopcntdq", Feature: &X86.HasAVX512VPOPCNTDQ}, + {Name: "avx512vpclmulqdq", Feature: &X86.HasAVX512VPCLMULQDQ}, + {Name: "avx512vnni", Feature: &X86.HasAVX512VNNI}, + {Name: "avx512gfni", Feature: &X86.HasAVX512GFNI}, + {Name: "avx512vaes", Feature: &X86.HasAVX512VAES}, + {Name: "avx512vbmi2", Feature: &X86.HasAVX512VBMI2}, + {Name: "avx512bitalg", Feature: &X86.HasAVX512BITALG}, + {Name: "avx512bf16", Feature: &X86.HasAVX512BF16}, + {Name: "amxtile", Feature: &X86.HasAMXTile}, + {Name: "amxint8", Feature: &X86.HasAMXInt8}, + {Name: "amxbf16", Feature: &X86.HasAMXBF16}, + {Name: "bmi1", Feature: &X86.HasBMI1}, + {Name: "bmi2", Feature: &X86.HasBMI2}, + {Name: "cx16", Feature: &X86.HasCX16}, + {Name: "erms", Feature: &X86.HasERMS}, + {Name: "fma", Feature: &X86.HasFMA}, + {Name: "osxsave", Feature: &X86.HasOSXSAVE}, + {Name: "pclmulqdq", Feature: &X86.HasPCLMULQDQ}, + {Name: "popcnt", Feature: &X86.HasPOPCNT}, + {Name: "rdrand", Feature: &X86.HasRDRAND}, + {Name: "rdseed", Feature: &X86.HasRDSEED}, + {Name: "sse3", Feature: &X86.HasSSE3}, + {Name: "sse41", Feature: &X86.HasSSE41}, + {Name: "sse42", Feature: &X86.HasSSE42}, + {Name: "ssse3", Feature: &X86.HasSSSE3}, + {Name: "avxifma", Feature: &X86.HasAVXIFMA}, + {Name: "avxvnni", Feature: &X86.HasAVXVNNI}, + {Name: "avxvnniint8", Feature: &X86.HasAVXVNNIInt8}, + + // These capabilities should always be enabled on amd64: + {Name: "sse2", Feature: &X86.HasSSE2, Required: runtime.GOARCH == "amd64"}, + } +} + +func archInit() { + + Initialized = true + + maxID, _, _, _ := cpuid(0, 0) + + if maxID < 1 { + return + } + + _, _, ecx1, edx1 := cpuid(1, 0) + X86.HasSSE2 = isSet(26, edx1) + + X86.HasSSE3 = isSet(0, ecx1) + X86.HasPCLMULQDQ = isSet(1, ecx1) + X86.HasSSSE3 = isSet(9, ecx1) + X86.HasFMA = isSet(12, ecx1) + X86.HasCX16 = isSet(13, ecx1) + X86.HasSSE41 = isSet(19, ecx1) + X86.HasSSE42 = isSet(20, ecx1) + X86.HasPOPCNT = isSet(23, ecx1) + X86.HasAES = isSet(25, ecx1) + X86.HasOSXSAVE = isSet(27, ecx1) + X86.HasRDRAND = isSet(30, ecx1) + + var osSupportsAVX, osSupportsAVX512 bool + // For XGETBV, OSXSAVE bit is required and sufficient. + if X86.HasOSXSAVE { + eax, _ := xgetbv() + // Check if XMM and YMM registers have OS support. + osSupportsAVX = isSet(1, eax) && isSet(2, eax) + + if runtime.GOOS == "darwin" { + // Darwin requires special AVX512 checks, see cpu_darwin_x86.go + osSupportsAVX512 = osSupportsAVX && darwinSupportsAVX512() + } else { + // Check if OPMASK and ZMM registers have OS support. + osSupportsAVX512 = osSupportsAVX && isSet(5, eax) && isSet(6, eax) && isSet(7, eax) + } + } + + X86.HasAVX = isSet(28, ecx1) && osSupportsAVX + + if maxID < 7 { + return + } + + eax7, ebx7, ecx7, edx7 := cpuid(7, 0) + X86.HasBMI1 = isSet(3, ebx7) + X86.HasAVX2 = isSet(5, ebx7) && osSupportsAVX + X86.HasBMI2 = isSet(8, ebx7) + X86.HasERMS = isSet(9, ebx7) + X86.HasRDSEED = isSet(18, ebx7) + X86.HasADX = isSet(19, ebx7) + + X86.HasAVX512 = isSet(16, ebx7) && osSupportsAVX512 // Because avx-512 foundation is the core required extension + if X86.HasAVX512 { + X86.HasAVX512F = true + X86.HasAVX512CD = isSet(28, ebx7) + X86.HasAVX512ER = isSet(27, ebx7) + X86.HasAVX512PF = isSet(26, ebx7) + X86.HasAVX512VL = isSet(31, ebx7) + X86.HasAVX512BW = isSet(30, ebx7) + X86.HasAVX512DQ = isSet(17, ebx7) + X86.HasAVX512IFMA = isSet(21, ebx7) + X86.HasAVX512VBMI = isSet(1, ecx7) + X86.HasAVX5124VNNIW = isSet(2, edx7) + X86.HasAVX5124FMAPS = isSet(3, edx7) + X86.HasAVX512VPOPCNTDQ = isSet(14, ecx7) + X86.HasAVX512VPCLMULQDQ = isSet(10, ecx7) + X86.HasAVX512VNNI = isSet(11, ecx7) + X86.HasAVX512GFNI = isSet(8, ecx7) + X86.HasAVX512VAES = isSet(9, ecx7) + X86.HasAVX512VBMI2 = isSet(6, ecx7) + X86.HasAVX512BITALG = isSet(12, ecx7) + } + + X86.HasAMXTile = isSet(24, edx7) + X86.HasAMXInt8 = isSet(25, edx7) + X86.HasAMXBF16 = isSet(22, edx7) + + // These features depend on the second level of extended features. + if eax7 >= 1 { + eax71, _, _, edx71 := cpuid(7, 1) + if X86.HasAVX512 { + X86.HasAVX512BF16 = isSet(5, eax71) + } + if X86.HasAVX { + X86.HasAVXIFMA = isSet(23, eax71) + X86.HasAVXVNNI = isSet(4, eax71) + X86.HasAVXVNNIInt8 = isSet(4, edx71) + } + } +} + +func isSet(bitpos uint, value uint32) bool { + return value&(1<<bitpos) != 0 +} diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_zos.go b/tests/vendor/golang.org/x/sys/cpu/cpu_zos.go new file mode 100644 index 000000000..5f54683a2 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_zos.go @@ -0,0 +1,10 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +func archInit() { + doinit() + Initialized = true +} diff --git a/tests/vendor/golang.org/x/sys/cpu/cpu_zos_s390x.go b/tests/vendor/golang.org/x/sys/cpu/cpu_zos_s390x.go new file mode 100644 index 000000000..ccb1b708a --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/cpu_zos_s390x.go @@ -0,0 +1,25 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +func initS390Xbase() { + // get the facilities list + facilities := stfle() + + // mandatory + S390X.HasZARCH = facilities.Has(zarch) + S390X.HasSTFLE = facilities.Has(stflef) + S390X.HasLDISP = facilities.Has(ldisp) + S390X.HasEIMM = facilities.Has(eimm) + + // optional + S390X.HasETF3EH = facilities.Has(etf3eh) + S390X.HasDFP = facilities.Has(dfp) + S390X.HasMSA = facilities.Has(msa) + S390X.HasVX = facilities.Has(vx) + if S390X.HasVX { + S390X.HasVXE = facilities.Has(vxe) + } +} diff --git a/tests/vendor/golang.org/x/sys/cpu/endian_big.go b/tests/vendor/golang.org/x/sys/cpu/endian_big.go new file mode 100644 index 000000000..7fe04b0a1 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/endian_big.go @@ -0,0 +1,10 @@ +// Copyright 2023 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build armbe || arm64be || m68k || mips || mips64 || mips64p32 || ppc || ppc64 || s390 || s390x || shbe || sparc || sparc64 + +package cpu + +// IsBigEndian records whether the GOARCH's byte order is big endian. +const IsBigEndian = true diff --git a/tests/vendor/golang.org/x/sys/cpu/endian_little.go b/tests/vendor/golang.org/x/sys/cpu/endian_little.go new file mode 100644 index 000000000..48eccc4c7 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/endian_little.go @@ -0,0 +1,10 @@ +// Copyright 2023 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build 386 || amd64 || amd64p32 || alpha || arm || arm64 || loong64 || mipsle || mips64le || mips64p32le || nios2 || ppc64le || riscv || riscv64 || sh || wasm + +package cpu + +// IsBigEndian records whether the GOARCH's byte order is big endian. +const IsBigEndian = false diff --git a/tests/vendor/golang.org/x/sys/cpu/hwcap_linux.go b/tests/vendor/golang.org/x/sys/cpu/hwcap_linux.go new file mode 100644 index 000000000..34e49f955 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/hwcap_linux.go @@ -0,0 +1,71 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +import ( + "os" +) + +const ( + _AT_HWCAP = 16 + _AT_HWCAP2 = 26 + + procAuxv = "/proc/self/auxv" + + uintSize = int(32 << (^uint(0) >> 63)) +) + +// For those platforms don't have a 'cpuid' equivalent we use HWCAP/HWCAP2 +// These are initialized in cpu_$GOARCH.go +// and should not be changed after they are initialized. +var hwCap uint +var hwCap2 uint + +func readHWCAP() error { + // For Go 1.21+, get auxv from the Go runtime. + if a := getAuxv(); len(a) > 0 { + for len(a) >= 2 { + tag, val := a[0], uint(a[1]) + a = a[2:] + switch tag { + case _AT_HWCAP: + hwCap = val + case _AT_HWCAP2: + hwCap2 = val + } + } + return nil + } + + buf, err := os.ReadFile(procAuxv) + if err != nil { + // e.g. on android /proc/self/auxv is not accessible, so silently + // ignore the error and leave Initialized = false. On some + // architectures (e.g. arm64) doinit() implements a fallback + // readout and will set Initialized = true again. + return err + } + bo := hostByteOrder() + for len(buf) >= 2*(uintSize/8) { + var tag, val uint + switch uintSize { + case 32: + tag = uint(bo.Uint32(buf[0:])) + val = uint(bo.Uint32(buf[4:])) + buf = buf[8:] + case 64: + tag = uint(bo.Uint64(buf[0:])) + val = uint(bo.Uint64(buf[8:])) + buf = buf[16:] + } + switch tag { + case _AT_HWCAP: + hwCap = val + case _AT_HWCAP2: + hwCap2 = val + } + } + return nil +} diff --git a/tests/vendor/golang.org/x/sys/cpu/parse.go b/tests/vendor/golang.org/x/sys/cpu/parse.go new file mode 100644 index 000000000..56a7e1a17 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/parse.go @@ -0,0 +1,43 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +import "strconv" + +// parseRelease parses a dot-separated version number. It follows the semver +// syntax, but allows the minor and patch versions to be elided. +// +// This is a copy of the Go runtime's parseRelease from +// https://golang.org/cl/209597. +func parseRelease(rel string) (major, minor, patch int, ok bool) { + // Strip anything after a dash or plus. + for i := range len(rel) { + if rel[i] == '-' || rel[i] == '+' { + rel = rel[:i] + break + } + } + + next := func() (int, bool) { + for i := range len(rel) { + if rel[i] == '.' { + ver, err := strconv.Atoi(rel[:i]) + rel = rel[i+1:] + return ver, err == nil + } + } + ver, err := strconv.Atoi(rel) + rel = "" + return ver, err == nil + } + if major, ok = next(); !ok || rel == "" { + return + } + if minor, ok = next(); !ok || rel == "" { + return + } + patch, ok = next() + return +} diff --git a/tests/vendor/golang.org/x/sys/cpu/proc_cpuinfo_linux.go b/tests/vendor/golang.org/x/sys/cpu/proc_cpuinfo_linux.go new file mode 100644 index 000000000..4cd64c704 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/proc_cpuinfo_linux.go @@ -0,0 +1,53 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && arm64 + +package cpu + +import ( + "errors" + "io" + "os" + "strings" +) + +func readLinuxProcCPUInfo() error { + f, err := os.Open("/proc/cpuinfo") + if err != nil { + return err + } + defer f.Close() + + var buf [1 << 10]byte // enough for first CPU + n, err := io.ReadFull(f, buf[:]) + if err != nil && err != io.ErrUnexpectedEOF { + return err + } + in := string(buf[:n]) + const features = "\nFeatures : " + i := strings.Index(in, features) + if i == -1 { + return errors.New("no CPU features found") + } + in = in[i+len(features):] + if i := strings.Index(in, "\n"); i != -1 { + in = in[:i] + } + m := map[string]*bool{} + + initOptions() // need it early here; it's harmless to call twice + for _, o := range options { + m[o.Name] = o.Feature + } + // The EVTSTRM field has alias "evstrm" in Go, but Linux calls it "evtstrm". + m["evtstrm"] = &ARM64.HasEVTSTRM + + for _, f := range strings.Fields(in) { + if p, ok := m[f]; ok { + *p = true + } + } + return nil +} diff --git a/tests/vendor/golang.org/x/sys/cpu/runtime_auxv.go b/tests/vendor/golang.org/x/sys/cpu/runtime_auxv.go new file mode 100644 index 000000000..5f92ac9a2 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/runtime_auxv.go @@ -0,0 +1,16 @@ +// Copyright 2023 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +// getAuxvFn is non-nil on Go 1.21+ (via runtime_auxv_go121.go init) +// on platforms that use auxv. +var getAuxvFn func() []uintptr + +func getAuxv() []uintptr { + if getAuxvFn == nil { + return nil + } + return getAuxvFn() +} diff --git a/tests/vendor/golang.org/x/sys/cpu/runtime_auxv_go121.go b/tests/vendor/golang.org/x/sys/cpu/runtime_auxv_go121.go new file mode 100644 index 000000000..4c9788ea8 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/runtime_auxv_go121.go @@ -0,0 +1,18 @@ +// Copyright 2023 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build go1.21 + +package cpu + +import ( + _ "unsafe" // for linkname +) + +//go:linkname runtime_getAuxv runtime.getAuxv +func runtime_getAuxv() []uintptr + +func init() { + getAuxvFn = runtime_getAuxv +} diff --git a/tests/vendor/golang.org/x/sys/cpu/syscall_aix_gccgo.go b/tests/vendor/golang.org/x/sys/cpu/syscall_aix_gccgo.go new file mode 100644 index 000000000..1b9ccb091 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/syscall_aix_gccgo.go @@ -0,0 +1,26 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Recreate a getsystemcfg syscall handler instead of +// using the one provided by x/sys/unix to avoid having +// the dependency between them. (See golang.org/issue/32102) +// Moreover, this file will be used during the building of +// gccgo's libgo and thus must not used a CGo method. + +//go:build aix && gccgo + +package cpu + +import ( + "syscall" +) + +//extern getsystemcfg +func gccgoGetsystemcfg(label uint32) (r uint64) + +func callgetsystemcfg(label int) (r1 uintptr, e1 syscall.Errno) { + r1 = uintptr(gccgoGetsystemcfg(uint32(label))) + e1 = syscall.GetErrno() + return +} diff --git a/tests/vendor/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go b/tests/vendor/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go new file mode 100644 index 000000000..e8b6cdbe9 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go @@ -0,0 +1,35 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Minimal copy of x/sys/unix so the cpu package can make a +// system call on AIX without depending on x/sys/unix. +// (See golang.org/issue/32102) + +//go:build aix && ppc64 && gc + +package cpu + +import ( + "syscall" + "unsafe" +) + +//go:cgo_import_dynamic libc_getsystemcfg getsystemcfg "libc.a/shr_64.o" + +//go:linkname libc_getsystemcfg libc_getsystemcfg + +type syscallFunc uintptr + +var libc_getsystemcfg syscallFunc + +type errno = syscall.Errno + +// Implemented in runtime/syscall_aix.go. +func rawSyscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err errno) +func syscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err errno) + +func callgetsystemcfg(label int) (r1 uintptr, e1 errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getsystemcfg)), 1, uintptr(label), 0, 0, 0, 0, 0) + return +} diff --git a/tests/vendor/golang.org/x/sys/cpu/syscall_darwin_x86_gc.go b/tests/vendor/golang.org/x/sys/cpu/syscall_darwin_x86_gc.go new file mode 100644 index 000000000..4d0888b0c --- /dev/null +++ b/tests/vendor/golang.org/x/sys/cpu/syscall_darwin_x86_gc.go @@ -0,0 +1,98 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Minimal copy of x/sys/unix so the cpu package can make a +// system call on Darwin without depending on x/sys/unix. + +//go:build darwin && amd64 && gc + +package cpu + +import ( + "syscall" + "unsafe" +) + +type _C_int int32 + +// adapted from unix.Uname() at x/sys/unix/syscall_darwin.go L419 +func darwinOSRelease(release *[256]byte) error { + // from x/sys/unix/zerrors_openbsd_amd64.go + const ( + CTL_KERN = 0x1 + KERN_OSRELEASE = 0x2 + ) + + mib := []_C_int{CTL_KERN, KERN_OSRELEASE} + n := unsafe.Sizeof(*release) + + return sysctl(mib, &release[0], &n, nil, 0) +} + +type Errno = syscall.Errno + +var _zero uintptr // Single-word zero for use when we need a valid pointer to 0 bytes. + +// from x/sys/unix/zsyscall_darwin_amd64.go L791-807 +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) error { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + if _, _, err := syscall_syscall6( + libc_sysctl_trampoline_addr, + uintptr(_p0), + uintptr(len(mib)), + uintptr(unsafe.Pointer(old)), + uintptr(unsafe.Pointer(oldlen)), + uintptr(unsafe.Pointer(new)), + uintptr(newlen), + ); err != 0 { + return err + } + + return nil +} + +var libc_sysctl_trampoline_addr uintptr + +// adapted from internal/cpu/cpu_arm64_darwin.go +func darwinSysctlEnabled(name []byte) bool { + out := int32(0) + nout := unsafe.Sizeof(out) + if ret := sysctlbyname(&name[0], (*byte)(unsafe.Pointer(&out)), &nout, nil, 0); ret != nil { + return false + } + return out > 0 +} + +//go:cgo_import_dynamic libc_sysctl sysctl "/usr/lib/libSystem.B.dylib" + +var libc_sysctlbyname_trampoline_addr uintptr + +// adapted from runtime/sys_darwin.go in the pattern of sysctl() above, as defined in x/sys/unix +func sysctlbyname(name *byte, old *byte, oldlen *uintptr, new *byte, newlen uintptr) error { + if _, _, err := syscall_syscall6( + libc_sysctlbyname_trampoline_addr, + uintptr(unsafe.Pointer(name)), + uintptr(unsafe.Pointer(old)), + uintptr(unsafe.Pointer(oldlen)), + uintptr(unsafe.Pointer(new)), + uintptr(newlen), + 0, + ); err != 0 { + return err + } + + return nil +} + +//go:cgo_import_dynamic libc_sysctlbyname sysctlbyname "/usr/lib/libSystem.B.dylib" + +// Implemented in the runtime package (runtime/sys_darwin.go) +func syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) + +//go:linkname syscall_syscall6 syscall.syscall6 diff --git a/tests/vendor/golang.org/x/sys/unix/.gitignore b/tests/vendor/golang.org/x/sys/unix/.gitignore new file mode 100644 index 000000000..e3e0fc6f8 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/.gitignore @@ -0,0 +1,2 @@ +_obj/ +unix.test diff --git a/tests/vendor/golang.org/x/sys/unix/README.md b/tests/vendor/golang.org/x/sys/unix/README.md new file mode 100644 index 000000000..6e08a76a7 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/README.md @@ -0,0 +1,184 @@ +# Building `sys/unix` + +The sys/unix package provides access to the raw system call interface of the +underlying operating system. See: https://godoc.org/golang.org/x/sys/unix + +Porting Go to a new architecture/OS combination or adding syscalls, types, or +constants to an existing architecture/OS pair requires some manual effort; +however, there are tools that automate much of the process. + +## Build Systems + +There are currently two ways we generate the necessary files. We are currently +migrating the build system to use containers so the builds are reproducible. +This is being done on an OS-by-OS basis. Please update this documentation as +components of the build system change. + +### Old Build System (currently for `GOOS != "linux"`) + +The old build system generates the Go files based on the C header files +present on your system. This means that files +for a given GOOS/GOARCH pair must be generated on a system with that OS and +architecture. This also means that the generated code can differ from system +to system, based on differences in the header files. + +To avoid this, if you are using the old build system, only generate the Go +files on an installation with unmodified header files. It is also important to +keep track of which version of the OS the files were generated from (ex. +Darwin 14 vs Darwin 15). This makes it easier to track the progress of changes +and have each OS upgrade correspond to a single change. + +To build the files for your current OS and architecture, make sure GOOS and +GOARCH are set correctly and run `mkall.sh`. This will generate the files for +your specific system. Running `mkall.sh -n` shows the commands that will be run. + +Requirements: bash, go + +### New Build System (currently for `GOOS == "linux"`) + +The new build system uses a Docker container to generate the go files directly +from source checkouts of the kernel and various system libraries. This means +that on any platform that supports Docker, all the files using the new build +system can be generated at once, and generated files will not change based on +what the person running the scripts has installed on their computer. + +The OS specific files for the new build system are located in the `${GOOS}` +directory, and the build is coordinated by the `${GOOS}/mkall.go` program. When +the kernel or system library updates, modify the Dockerfile at +`${GOOS}/Dockerfile` to checkout the new release of the source. + +To build all the files under the new build system, you must be on an amd64/Linux +system and have your GOOS and GOARCH set accordingly. Running `mkall.sh` will +then generate all of the files for all of the GOOS/GOARCH pairs in the new build +system. Running `mkall.sh -n` shows the commands that will be run. + +Requirements: bash, go, docker + +## Component files + +This section describes the various files used in the code generation process. +It also contains instructions on how to modify these files to add a new +architecture/OS or to add additional syscalls, types, or constants. Note that +if you are using the new build system, the scripts/programs cannot be called normally. +They must be called from within the docker container. + +### asm files + +The hand-written assembly file at `asm_${GOOS}_${GOARCH}.s` implements system +call dispatch. There are three entry points: +``` + func Syscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr) + func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr) + func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr) +``` +The first and second are the standard ones; they differ only in how many +arguments can be passed to the kernel. The third is for low-level use by the +ForkExec wrapper. Unlike the first two, it does not call into the scheduler to +let it know that a system call is running. + +When porting Go to a new architecture/OS, this file must be implemented for +each GOOS/GOARCH pair. + +### mksysnum + +Mksysnum is a Go program located at `${GOOS}/mksysnum.go` (or `mksysnum_${GOOS}.go` +for the old system). This program takes in a list of header files containing the +syscall number declarations and parses them to produce the corresponding list of +Go numeric constants. See `zsysnum_${GOOS}_${GOARCH}.go` for the generated +constants. + +Adding new syscall numbers is mostly done by running the build on a sufficiently +new installation of the target OS (or updating the source checkouts for the +new build system). However, depending on the OS, you may need to update the +parsing in mksysnum. + +### mksyscall.go + +The `syscall.go`, `syscall_${GOOS}.go`, `syscall_${GOOS}_${GOARCH}.go` are +hand-written Go files which implement system calls (for unix, the specific OS, +or the specific OS/Architecture pair respectively) that need special handling +and list `//sys` comments giving prototypes for ones that can be generated. + +The mksyscall.go program takes the `//sys` and `//sysnb` comments and converts +them into syscalls. This requires the name of the prototype in the comment to +match a syscall number in the `zsysnum_${GOOS}_${GOARCH}.go` file. The function +prototype can be exported (capitalized) or not. + +Adding a new syscall often just requires adding a new `//sys` function prototype +with the desired arguments and a capitalized name so it is exported. However, if +you want the interface to the syscall to be different, often one will make an +unexported `//sys` prototype, and then write a custom wrapper in +`syscall_${GOOS}.go`. + +### types files + +For each OS, there is a hand-written Go file at `${GOOS}/types.go` (or +`types_${GOOS}.go` on the old system). This file includes standard C headers and +creates Go type aliases to the corresponding C types. The file is then fed +through godef to get the Go compatible definitions. Finally, the generated code +is fed though mkpost.go to format the code correctly and remove any hidden or +private identifiers. This cleaned-up code is written to +`ztypes_${GOOS}_${GOARCH}.go`. + +The hardest part about preparing this file is figuring out which headers to +include and which symbols need to be `#define`d to get the actual data +structures that pass through to the kernel system calls. Some C libraries +preset alternate versions for binary compatibility and translate them on the +way in and out of system calls, but there is almost always a `#define` that can +get the real ones. +See `types_darwin.go` and `linux/types.go` for examples. + +To add a new type, add in the necessary include statement at the top of the +file (if it is not already there) and add in a type alias line. Note that if +your type is significantly different on different architectures, you may need +some `#if/#elif` macros in your include statements. + +### mkerrors.sh + +This script is used to generate the system's various constants. This doesn't +just include the error numbers and error strings, but also the signal numbers +and a wide variety of miscellaneous constants. The constants come from the list +of include files in the `includes_${uname}` variable. A regex then picks out +the desired `#define` statements, and generates the corresponding Go constants. +The error numbers and strings are generated from `#include <errno.h>`, and the +signal numbers and strings are generated from `#include <signal.h>`. All of +these constants are written to `zerrors_${GOOS}_${GOARCH}.go` via a C program, +`_errors.c`, which prints out all the constants. + +To add a constant, add the header that includes it to the appropriate variable. +Then, edit the regex (if necessary) to match the desired constant. Avoid making +the regex too broad to avoid matching unintended constants. + +### internal/mkmerge + +This program is used to extract duplicate const, func, and type declarations +from the generated architecture-specific files listed below, and merge these +into a common file for each OS. + +The merge is performed in the following steps: +1. Construct the set of common code that is identical in all architecture-specific files. +2. Write this common code to the merged file. +3. Remove the common code from all architecture-specific files. + + +## Generated files + +### `zerrors_${GOOS}_${GOARCH}.go` + +A file containing all of the system's generated error numbers, error strings, +signal numbers, and constants. Generated by `mkerrors.sh` (see above). + +### `zsyscall_${GOOS}_${GOARCH}.go` + +A file containing all the generated syscalls for a specific GOOS and GOARCH. +Generated by `mksyscall.go` (see above). + +### `zsysnum_${GOOS}_${GOARCH}.go` + +A list of numeric constants for all the syscall number of the specific GOOS +and GOARCH. Generated by mksysnum (see above). + +### `ztypes_${GOOS}_${GOARCH}.go` + +A file containing Go types for passing into (or returning from) syscalls. +Generated by godefs and the types file (see above). diff --git a/tests/vendor/golang.org/x/sys/unix/affinity_linux.go b/tests/vendor/golang.org/x/sys/unix/affinity_linux.go new file mode 100644 index 000000000..6e5c81acd --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/affinity_linux.go @@ -0,0 +1,86 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// CPU affinity functions + +package unix + +import ( + "math/bits" + "unsafe" +) + +const cpuSetSize = _CPU_SETSIZE / _NCPUBITS + +// CPUSet represents a CPU affinity mask. +type CPUSet [cpuSetSize]cpuMask + +func schedAffinity(trap uintptr, pid int, set *CPUSet) error { + _, _, e := RawSyscall(trap, uintptr(pid), uintptr(unsafe.Sizeof(*set)), uintptr(unsafe.Pointer(set))) + if e != 0 { + return errnoErr(e) + } + return nil +} + +// SchedGetaffinity gets the CPU affinity mask of the thread specified by pid. +// If pid is 0 the calling thread is used. +func SchedGetaffinity(pid int, set *CPUSet) error { + return schedAffinity(SYS_SCHED_GETAFFINITY, pid, set) +} + +// SchedSetaffinity sets the CPU affinity mask of the thread specified by pid. +// If pid is 0 the calling thread is used. +func SchedSetaffinity(pid int, set *CPUSet) error { + return schedAffinity(SYS_SCHED_SETAFFINITY, pid, set) +} + +// Zero clears the set s, so that it contains no CPUs. +func (s *CPUSet) Zero() { + for i := range s { + s[i] = 0 + } +} + +func cpuBitsIndex(cpu int) int { + return cpu / _NCPUBITS +} + +func cpuBitsMask(cpu int) cpuMask { + return cpuMask(1 << (uint(cpu) % _NCPUBITS)) +} + +// Set adds cpu to the set s. +func (s *CPUSet) Set(cpu int) { + i := cpuBitsIndex(cpu) + if i < len(s) { + s[i] |= cpuBitsMask(cpu) + } +} + +// Clear removes cpu from the set s. +func (s *CPUSet) Clear(cpu int) { + i := cpuBitsIndex(cpu) + if i < len(s) { + s[i] &^= cpuBitsMask(cpu) + } +} + +// IsSet reports whether cpu is in the set s. +func (s *CPUSet) IsSet(cpu int) bool { + i := cpuBitsIndex(cpu) + if i < len(s) { + return s[i]&cpuBitsMask(cpu) != 0 + } + return false +} + +// Count returns the number of CPUs in the set s. +func (s *CPUSet) Count() int { + c := 0 + for _, b := range s { + c += bits.OnesCount64(uint64(b)) + } + return c +} diff --git a/tests/vendor/golang.org/x/sys/unix/aliases.go b/tests/vendor/golang.org/x/sys/unix/aliases.go new file mode 100644 index 000000000..b0e419857 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/aliases.go @@ -0,0 +1,13 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos + +package unix + +import "syscall" + +type Signal = syscall.Signal +type Errno = syscall.Errno +type SysProcAttr = syscall.SysProcAttr diff --git a/tests/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s b/tests/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s new file mode 100644 index 000000000..269e173ca --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s @@ -0,0 +1,17 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc + +#include "textflag.h" + +// +// System calls for ppc64, AIX are implemented in runtime/syscall_aix.go +// + +TEXT ·syscall6(SB),NOSPLIT,$0-88 + JMP syscall·syscall6(SB) + +TEXT ·rawSyscall6(SB),NOSPLIT,$0-88 + JMP syscall·rawSyscall6(SB) diff --git a/tests/vendor/golang.org/x/sys/unix/asm_bsd_386.s b/tests/vendor/golang.org/x/sys/unix/asm_bsd_386.s new file mode 100644 index 000000000..a4fcef0e0 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/asm_bsd_386.s @@ -0,0 +1,27 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (freebsd || netbsd || openbsd) && gc + +#include "textflag.h" + +// System call support for 386 BSD + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-28 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-40 + JMP syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-52 + JMP syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-28 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 + JMP syscall·RawSyscall6(SB) diff --git a/tests/vendor/golang.org/x/sys/unix/asm_bsd_amd64.s b/tests/vendor/golang.org/x/sys/unix/asm_bsd_amd64.s new file mode 100644 index 000000000..1e63615c5 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/asm_bsd_amd64.s @@ -0,0 +1,27 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (darwin || dragonfly || freebsd || netbsd || openbsd) && gc + +#include "textflag.h" + +// System call support for AMD64 BSD + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-104 + JMP syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) diff --git a/tests/vendor/golang.org/x/sys/unix/asm_bsd_arm.s b/tests/vendor/golang.org/x/sys/unix/asm_bsd_arm.s new file mode 100644 index 000000000..6496c3100 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/asm_bsd_arm.s @@ -0,0 +1,27 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (freebsd || netbsd || openbsd) && gc + +#include "textflag.h" + +// System call support for ARM BSD + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-28 + B syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-40 + B syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-52 + B syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-28 + B syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 + B syscall·RawSyscall6(SB) diff --git a/tests/vendor/golang.org/x/sys/unix/asm_bsd_arm64.s b/tests/vendor/golang.org/x/sys/unix/asm_bsd_arm64.s new file mode 100644 index 000000000..4fd1f54da --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/asm_bsd_arm64.s @@ -0,0 +1,27 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (darwin || freebsd || netbsd || openbsd) && gc + +#include "textflag.h" + +// System call support for ARM64 BSD + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-104 + JMP syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) diff --git a/tests/vendor/golang.org/x/sys/unix/asm_bsd_ppc64.s b/tests/vendor/golang.org/x/sys/unix/asm_bsd_ppc64.s new file mode 100644 index 000000000..42f7eb9e4 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/asm_bsd_ppc64.s @@ -0,0 +1,29 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (darwin || freebsd || netbsd || openbsd) && gc + +#include "textflag.h" + +// +// System call support for ppc64, BSD +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-104 + JMP syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) diff --git a/tests/vendor/golang.org/x/sys/unix/asm_bsd_riscv64.s b/tests/vendor/golang.org/x/sys/unix/asm_bsd_riscv64.s new file mode 100644 index 000000000..f8902667e --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/asm_bsd_riscv64.s @@ -0,0 +1,27 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (darwin || freebsd || netbsd || openbsd) && gc + +#include "textflag.h" + +// System call support for RISCV64 BSD + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-104 + JMP syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) diff --git a/tests/vendor/golang.org/x/sys/unix/asm_linux_386.s b/tests/vendor/golang.org/x/sys/unix/asm_linux_386.s new file mode 100644 index 000000000..3b4734870 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/asm_linux_386.s @@ -0,0 +1,65 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc + +#include "textflag.h" + +// +// System calls for 386, Linux +// + +// See ../runtime/sys_linux_386.s for the reason why we always use int 0x80 +// instead of the glibc-specific "CALL 0x10(GS)". +#define INVOKE_SYSCALL INT $0x80 + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-28 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-40 + JMP syscall·Syscall6(SB) + +TEXT ·SyscallNoError(SB),NOSPLIT,$0-24 + CALL runtime·entersyscall(SB) + MOVL trap+0(FP), AX // syscall entry + MOVL a1+4(FP), BX + MOVL a2+8(FP), CX + MOVL a3+12(FP), DX + MOVL $0, SI + MOVL $0, DI + INVOKE_SYSCALL + MOVL AX, r1+16(FP) + MOVL DX, r2+20(FP) + CALL runtime·exitsyscall(SB) + RET + +TEXT ·RawSyscall(SB),NOSPLIT,$0-28 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 + JMP syscall·RawSyscall6(SB) + +TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24 + MOVL trap+0(FP), AX // syscall entry + MOVL a1+4(FP), BX + MOVL a2+8(FP), CX + MOVL a3+12(FP), DX + MOVL $0, SI + MOVL $0, DI + INVOKE_SYSCALL + MOVL AX, r1+16(FP) + MOVL DX, r2+20(FP) + RET + +TEXT ·socketcall(SB),NOSPLIT,$0-36 + JMP syscall·socketcall(SB) + +TEXT ·rawsocketcall(SB),NOSPLIT,$0-36 + JMP syscall·rawsocketcall(SB) + +TEXT ·seek(SB),NOSPLIT,$0-28 + JMP syscall·seek(SB) diff --git a/tests/vendor/golang.org/x/sys/unix/asm_linux_amd64.s b/tests/vendor/golang.org/x/sys/unix/asm_linux_amd64.s new file mode 100644 index 000000000..67e29f317 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/asm_linux_amd64.s @@ -0,0 +1,57 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc + +#include "textflag.h" + +// +// System calls for AMD64, Linux +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·SyscallNoError(SB),NOSPLIT,$0-48 + CALL runtime·entersyscall(SB) + MOVQ a1+8(FP), DI + MOVQ a2+16(FP), SI + MOVQ a3+24(FP), DX + MOVQ $0, R10 + MOVQ $0, R8 + MOVQ $0, R9 + MOVQ trap+0(FP), AX // syscall entry + SYSCALL + MOVQ AX, r1+32(FP) + MOVQ DX, r2+40(FP) + CALL runtime·exitsyscall(SB) + RET + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) + +TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48 + MOVQ a1+8(FP), DI + MOVQ a2+16(FP), SI + MOVQ a3+24(FP), DX + MOVQ $0, R10 + MOVQ $0, R8 + MOVQ $0, R9 + MOVQ trap+0(FP), AX // syscall entry + SYSCALL + MOVQ AX, r1+32(FP) + MOVQ DX, r2+40(FP) + RET + +TEXT ·gettimeofday(SB),NOSPLIT,$0-16 + JMP syscall·gettimeofday(SB) diff --git a/tests/vendor/golang.org/x/sys/unix/asm_linux_arm.s b/tests/vendor/golang.org/x/sys/unix/asm_linux_arm.s new file mode 100644 index 000000000..d6ae269ce --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/asm_linux_arm.s @@ -0,0 +1,56 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc + +#include "textflag.h" + +// +// System calls for arm, Linux +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-28 + B syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-40 + B syscall·Syscall6(SB) + +TEXT ·SyscallNoError(SB),NOSPLIT,$0-24 + BL runtime·entersyscall(SB) + MOVW trap+0(FP), R7 + MOVW a1+4(FP), R0 + MOVW a2+8(FP), R1 + MOVW a3+12(FP), R2 + MOVW $0, R3 + MOVW $0, R4 + MOVW $0, R5 + SWI $0 + MOVW R0, r1+16(FP) + MOVW $0, R0 + MOVW R0, r2+20(FP) + BL runtime·exitsyscall(SB) + RET + +TEXT ·RawSyscall(SB),NOSPLIT,$0-28 + B syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 + B syscall·RawSyscall6(SB) + +TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24 + MOVW trap+0(FP), R7 // syscall entry + MOVW a1+4(FP), R0 + MOVW a2+8(FP), R1 + MOVW a3+12(FP), R2 + SWI $0 + MOVW R0, r1+16(FP) + MOVW $0, R0 + MOVW R0, r2+20(FP) + RET + +TEXT ·seek(SB),NOSPLIT,$0-28 + B syscall·seek(SB) diff --git a/tests/vendor/golang.org/x/sys/unix/asm_linux_arm64.s b/tests/vendor/golang.org/x/sys/unix/asm_linux_arm64.s new file mode 100644 index 000000000..01e5e253c --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/asm_linux_arm64.s @@ -0,0 +1,50 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && arm64 && gc + +#include "textflag.h" + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + B syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + B syscall·Syscall6(SB) + +TEXT ·SyscallNoError(SB),NOSPLIT,$0-48 + BL runtime·entersyscall(SB) + MOVD a1+8(FP), R0 + MOVD a2+16(FP), R1 + MOVD a3+24(FP), R2 + MOVD $0, R3 + MOVD $0, R4 + MOVD $0, R5 + MOVD trap+0(FP), R8 // syscall entry + SVC + MOVD R0, r1+32(FP) // r1 + MOVD R1, r2+40(FP) // r2 + BL runtime·exitsyscall(SB) + RET + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + B syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + B syscall·RawSyscall6(SB) + +TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48 + MOVD a1+8(FP), R0 + MOVD a2+16(FP), R1 + MOVD a3+24(FP), R2 + MOVD $0, R3 + MOVD $0, R4 + MOVD $0, R5 + MOVD trap+0(FP), R8 // syscall entry + SVC + MOVD R0, r1+32(FP) + MOVD R1, r2+40(FP) + RET diff --git a/tests/vendor/golang.org/x/sys/unix/asm_linux_loong64.s b/tests/vendor/golang.org/x/sys/unix/asm_linux_loong64.s new file mode 100644 index 000000000..2abf12f6e --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/asm_linux_loong64.s @@ -0,0 +1,51 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && loong64 && gc + +#include "textflag.h" + + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·SyscallNoError(SB),NOSPLIT,$0-48 + JAL runtime·entersyscall(SB) + MOVV a1+8(FP), R4 + MOVV a2+16(FP), R5 + MOVV a3+24(FP), R6 + MOVV R0, R7 + MOVV R0, R8 + MOVV R0, R9 + MOVV trap+0(FP), R11 // syscall entry + SYSCALL + MOVV R4, r1+32(FP) + MOVV R0, r2+40(FP) // r2 is not used. Always set to 0 + JAL runtime·exitsyscall(SB) + RET + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) + +TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48 + MOVV a1+8(FP), R4 + MOVV a2+16(FP), R5 + MOVV a3+24(FP), R6 + MOVV R0, R7 + MOVV R0, R8 + MOVV R0, R9 + MOVV trap+0(FP), R11 // syscall entry + SYSCALL + MOVV R4, r1+32(FP) + MOVV R0, r2+40(FP) // r2 is not used. Always set to 0 + RET diff --git a/tests/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s b/tests/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s new file mode 100644 index 000000000..f84bae712 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s @@ -0,0 +1,54 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && (mips64 || mips64le) && gc + +#include "textflag.h" + +// +// System calls for mips64, Linux +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·SyscallNoError(SB),NOSPLIT,$0-48 + JAL runtime·entersyscall(SB) + MOVV a1+8(FP), R4 + MOVV a2+16(FP), R5 + MOVV a3+24(FP), R6 + MOVV R0, R7 + MOVV R0, R8 + MOVV R0, R9 + MOVV trap+0(FP), R2 // syscall entry + SYSCALL + MOVV R2, r1+32(FP) + MOVV R3, r2+40(FP) + JAL runtime·exitsyscall(SB) + RET + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) + +TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48 + MOVV a1+8(FP), R4 + MOVV a2+16(FP), R5 + MOVV a3+24(FP), R6 + MOVV R0, R7 + MOVV R0, R8 + MOVV R0, R9 + MOVV trap+0(FP), R2 // syscall entry + SYSCALL + MOVV R2, r1+32(FP) + MOVV R3, r2+40(FP) + RET diff --git a/tests/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s b/tests/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s new file mode 100644 index 000000000..f08f62807 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s @@ -0,0 +1,52 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && (mips || mipsle) && gc + +#include "textflag.h" + +// +// System calls for mips, Linux +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-28 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-40 + JMP syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-52 + JMP syscall·Syscall9(SB) + +TEXT ·SyscallNoError(SB),NOSPLIT,$0-24 + JAL runtime·entersyscall(SB) + MOVW a1+4(FP), R4 + MOVW a2+8(FP), R5 + MOVW a3+12(FP), R6 + MOVW R0, R7 + MOVW trap+0(FP), R2 // syscall entry + SYSCALL + MOVW R2, r1+16(FP) // r1 + MOVW R3, r2+20(FP) // r2 + JAL runtime·exitsyscall(SB) + RET + +TEXT ·RawSyscall(SB),NOSPLIT,$0-28 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 + JMP syscall·RawSyscall6(SB) + +TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24 + MOVW a1+4(FP), R4 + MOVW a2+8(FP), R5 + MOVW a3+12(FP), R6 + MOVW trap+0(FP), R2 // syscall entry + SYSCALL + MOVW R2, r1+16(FP) + MOVW R3, r2+20(FP) + RET diff --git a/tests/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s b/tests/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s new file mode 100644 index 000000000..bdfc024d2 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s @@ -0,0 +1,42 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && (ppc64 || ppc64le) && gc + +#include "textflag.h" + +// +// System calls for ppc64, Linux +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·SyscallNoError(SB),NOSPLIT,$0-48 + BL runtime·entersyscall(SB) + MOVD a1+8(FP), R3 + MOVD a2+16(FP), R4 + MOVD a3+24(FP), R5 + MOVD R0, R6 + MOVD R0, R7 + MOVD R0, R8 + MOVD trap+0(FP), R9 // syscall entry + SYSCALL R9 + MOVD R3, r1+32(FP) + MOVD R4, r2+40(FP) + BL runtime·exitsyscall(SB) + RET + +TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48 + MOVD a1+8(FP), R3 + MOVD a2+16(FP), R4 + MOVD a3+24(FP), R5 + MOVD R0, R6 + MOVD R0, R7 + MOVD R0, R8 + MOVD trap+0(FP), R9 // syscall entry + SYSCALL R9 + MOVD R3, r1+32(FP) + MOVD R4, r2+40(FP) + RET diff --git a/tests/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s b/tests/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s new file mode 100644 index 000000000..2e8c99612 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s @@ -0,0 +1,47 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build riscv64 && gc + +#include "textflag.h" + +// +// System calls for linux/riscv64. +// +// Where available, just jump to package syscall's implementation of +// these functions. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·SyscallNoError(SB),NOSPLIT,$0-48 + CALL runtime·entersyscall(SB) + MOV a1+8(FP), A0 + MOV a2+16(FP), A1 + MOV a3+24(FP), A2 + MOV trap+0(FP), A7 // syscall entry + ECALL + MOV A0, r1+32(FP) // r1 + MOV A1, r2+40(FP) // r2 + CALL runtime·exitsyscall(SB) + RET + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) + +TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48 + MOV a1+8(FP), A0 + MOV a2+16(FP), A1 + MOV a3+24(FP), A2 + MOV trap+0(FP), A7 // syscall entry + ECALL + MOV A0, r1+32(FP) + MOV A1, r2+40(FP) + RET diff --git a/tests/vendor/golang.org/x/sys/unix/asm_linux_s390x.s b/tests/vendor/golang.org/x/sys/unix/asm_linux_s390x.s new file mode 100644 index 000000000..2c394b11e --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/asm_linux_s390x.s @@ -0,0 +1,54 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && s390x && gc + +#include "textflag.h" + +// +// System calls for s390x, Linux +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + BR syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + BR syscall·Syscall6(SB) + +TEXT ·SyscallNoError(SB),NOSPLIT,$0-48 + BL runtime·entersyscall(SB) + MOVD a1+8(FP), R2 + MOVD a2+16(FP), R3 + MOVD a3+24(FP), R4 + MOVD $0, R5 + MOVD $0, R6 + MOVD $0, R7 + MOVD trap+0(FP), R1 // syscall entry + SYSCALL + MOVD R2, r1+32(FP) + MOVD R3, r2+40(FP) + BL runtime·exitsyscall(SB) + RET + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + BR syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + BR syscall·RawSyscall6(SB) + +TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48 + MOVD a1+8(FP), R2 + MOVD a2+16(FP), R3 + MOVD a3+24(FP), R4 + MOVD $0, R5 + MOVD $0, R6 + MOVD $0, R7 + MOVD trap+0(FP), R1 // syscall entry + SYSCALL + MOVD R2, r1+32(FP) + MOVD R3, r2+40(FP) + RET diff --git a/tests/vendor/golang.org/x/sys/unix/asm_openbsd_mips64.s b/tests/vendor/golang.org/x/sys/unix/asm_openbsd_mips64.s new file mode 100644 index 000000000..fab586a2c --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/asm_openbsd_mips64.s @@ -0,0 +1,29 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc + +#include "textflag.h" + +// +// System call support for mips64, OpenBSD +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-104 + JMP syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) diff --git a/tests/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s b/tests/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s new file mode 100644 index 000000000..f949ec547 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s @@ -0,0 +1,17 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc + +#include "textflag.h" + +// +// System calls for amd64, Solaris are implemented in runtime/syscall_solaris.go +// + +TEXT ·sysvicall6(SB),NOSPLIT,$0-88 + JMP syscall·sysvicall6(SB) + +TEXT ·rawSysvicall6(SB),NOSPLIT,$0-88 + JMP syscall·rawSysvicall6(SB) diff --git a/tests/vendor/golang.org/x/sys/unix/asm_zos_s390x.s b/tests/vendor/golang.org/x/sys/unix/asm_zos_s390x.s new file mode 100644 index 000000000..813dfad7d --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/asm_zos_s390x.s @@ -0,0 +1,382 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos && s390x && gc + +#include "textflag.h" + +#define PSALAA 1208(R0) +#define GTAB64(x) 80(x) +#define LCA64(x) 88(x) +#define SAVSTACK_ASYNC(x) 336(x) // in the LCA +#define CAA(x) 8(x) +#define CEECAATHDID(x) 976(x) // in the CAA +#define EDCHPXV(x) 1016(x) // in the CAA +#define GOCB(x) 1104(x) // in the CAA + +// SS_*, where x=SAVSTACK_ASYNC +#define SS_LE(x) 0(x) +#define SS_GO(x) 8(x) +#define SS_ERRNO(x) 16(x) +#define SS_ERRNOJR(x) 20(x) + +// Function Descriptor Offsets +#define __errno 0x156*16 +#define __err2ad 0x16C*16 + +// Call Instructions +#define LE_CALL BYTE $0x0D; BYTE $0x76 // BL R7, R6 +#define SVC_LOAD BYTE $0x0A; BYTE $0x08 // SVC 08 LOAD +#define SVC_DELETE BYTE $0x0A; BYTE $0x09 // SVC 09 DELETE + +DATA zosLibVec<>(SB)/8, $0 +GLOBL zosLibVec<>(SB), NOPTR, $8 + +TEXT ·initZosLibVec(SB), NOSPLIT|NOFRAME, $0-0 + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + MOVD CAA(R8), R8 + MOVD EDCHPXV(R8), R8 + MOVD R8, zosLibVec<>(SB) + RET + +TEXT ·GetZosLibVec(SB), NOSPLIT|NOFRAME, $0-0 + MOVD zosLibVec<>(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·clearErrno(SB), NOSPLIT, $0-0 + BL addrerrno<>(SB) + MOVD $0, 0(R3) + RET + +// Returns the address of errno in R3. +TEXT addrerrno<>(SB), NOSPLIT|NOFRAME, $0-0 + // Get library control area (LCA). + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + + // Get __errno FuncDesc. + MOVD CAA(R8), R9 + MOVD EDCHPXV(R9), R9 + ADD $(__errno), R9 + LMG 0(R9), R5, R6 + + // Switch to saved LE stack. + MOVD SAVSTACK_ASYNC(R8), R9 + MOVD 0(R9), R4 + MOVD $0, 0(R9) + + // Call __errno function. + LE_CALL + NOPH + + // Switch back to Go stack. + XOR R0, R0 // Restore R0 to $0. + MOVD R4, 0(R9) // Save stack pointer. + RET + +// func svcCall(fnptr unsafe.Pointer, argv *unsafe.Pointer, dsa *uint64) +TEXT ·svcCall(SB), NOSPLIT, $0 + BL runtime·save_g(SB) // Save g and stack pointer + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + MOVD SAVSTACK_ASYNC(R8), R9 + MOVD R15, 0(R9) + + MOVD argv+8(FP), R1 // Move function arguments into registers + MOVD dsa+16(FP), g + MOVD fnptr+0(FP), R15 + + BYTE $0x0D // Branch to function + BYTE $0xEF + + BL runtime·load_g(SB) // Restore g and stack pointer + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + MOVD SAVSTACK_ASYNC(R8), R9 + MOVD 0(R9), R15 + + RET + +// func svcLoad(name *byte) unsafe.Pointer +TEXT ·svcLoad(SB), NOSPLIT, $0 + MOVD R15, R2 // Save go stack pointer + MOVD name+0(FP), R0 // Move SVC args into registers + MOVD $0x80000000, R1 + MOVD $0, R15 + SVC_LOAD + MOVW R15, R3 // Save return code from SVC + MOVD R2, R15 // Restore go stack pointer + CMP R3, $0 // Check SVC return code + BNE error + + MOVD $-2, R3 // Reset last bit of entry point to zero + AND R0, R3 + MOVD R3, ret+8(FP) // Return entry point returned by SVC + CMP R0, R3 // Check if last bit of entry point was set + BNE done + + MOVD R15, R2 // Save go stack pointer + MOVD $0, R15 // Move SVC args into registers (entry point still in r0 from SVC 08) + SVC_DELETE + MOVD R2, R15 // Restore go stack pointer + +error: + MOVD $0, ret+8(FP) // Return 0 on failure + +done: + XOR R0, R0 // Reset r0 to 0 + RET + +// func svcUnload(name *byte, fnptr unsafe.Pointer) int64 +TEXT ·svcUnload(SB), NOSPLIT, $0 + MOVD R15, R2 // Save go stack pointer + MOVD name+0(FP), R0 // Move SVC args into registers + MOVD fnptr+8(FP), R15 + SVC_DELETE + XOR R0, R0 // Reset r0 to 0 + MOVD R15, R1 // Save SVC return code + MOVD R2, R15 // Restore go stack pointer + MOVD R1, ret+16(FP) // Return SVC return code + RET + +// func gettid() uint64 +TEXT ·gettid(SB), NOSPLIT, $0 + // Get library control area (LCA). + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + + // Get CEECAATHDID + MOVD CAA(R8), R9 + MOVD CEECAATHDID(R9), R9 + MOVD R9, ret+0(FP) + + RET + +// +// Call LE function, if the return is -1 +// errno and errno2 is retrieved +// +TEXT ·CallLeFuncWithErr(SB), NOSPLIT, $0 + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + MOVD CAA(R8), R9 + MOVD g, GOCB(R9) + + // Restore LE stack. + MOVD SAVSTACK_ASYNC(R8), R9 // R9-> LE stack frame saving address + MOVD 0(R9), R4 // R4-> restore previously saved stack frame pointer + + MOVD parms_base+8(FP), R7 // R7 -> argument array + MOVD parms_len+16(FP), R8 // R8 number of arguments + + // arg 1 ---> R1 + CMP R8, $0 + BEQ docall + SUB $1, R8 + MOVD 0(R7), R1 + + // arg 2 ---> R2 + CMP R8, $0 + BEQ docall + SUB $1, R8 + ADD $8, R7 + MOVD 0(R7), R2 + + // arg 3 --> R3 + CMP R8, $0 + BEQ docall + SUB $1, R8 + ADD $8, R7 + MOVD 0(R7), R3 + + CMP R8, $0 + BEQ docall + MOVD $2176+16, R6 // starting LE stack address-8 to store 4th argument + +repeat: + ADD $8, R7 + MOVD 0(R7), R0 // advance arg pointer by 8 byte + ADD $8, R6 // advance LE argument address by 8 byte + MOVD R0, (R4)(R6*1) // copy argument from go-slice to le-frame + SUB $1, R8 + CMP R8, $0 + BNE repeat + +docall: + MOVD funcdesc+0(FP), R8 // R8-> function descriptor + LMG 0(R8), R5, R6 + MOVD $0, 0(R9) // R9 address of SAVSTACK_ASYNC + LE_CALL // balr R7, R6 (return #1) + NOPH + MOVD R3, ret+32(FP) + CMP R3, $-1 // compare result to -1 + BNE done + + // retrieve errno and errno2 + MOVD zosLibVec<>(SB), R8 + ADD $(__errno), R8 + LMG 0(R8), R5, R6 + LE_CALL // balr R7, R6 __errno (return #3) + NOPH + MOVWZ 0(R3), R3 + MOVD R3, err+48(FP) + MOVD zosLibVec<>(SB), R8 + ADD $(__err2ad), R8 + LMG 0(R8), R5, R6 + LE_CALL // balr R7, R6 __err2ad (return #2) + NOPH + MOVW (R3), R2 // retrieve errno2 + MOVD R2, errno2+40(FP) // store in return area + +done: + MOVD R4, 0(R9) // Save stack pointer. + RET + +// +// Call LE function, if the return is 0 +// errno and errno2 is retrieved +// +TEXT ·CallLeFuncWithPtrReturn(SB), NOSPLIT, $0 + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + MOVD CAA(R8), R9 + MOVD g, GOCB(R9) + + // Restore LE stack. + MOVD SAVSTACK_ASYNC(R8), R9 // R9-> LE stack frame saving address + MOVD 0(R9), R4 // R4-> restore previously saved stack frame pointer + + MOVD parms_base+8(FP), R7 // R7 -> argument array + MOVD parms_len+16(FP), R8 // R8 number of arguments + + // arg 1 ---> R1 + CMP R8, $0 + BEQ docall + SUB $1, R8 + MOVD 0(R7), R1 + + // arg 2 ---> R2 + CMP R8, $0 + BEQ docall + SUB $1, R8 + ADD $8, R7 + MOVD 0(R7), R2 + + // arg 3 --> R3 + CMP R8, $0 + BEQ docall + SUB $1, R8 + ADD $8, R7 + MOVD 0(R7), R3 + + CMP R8, $0 + BEQ docall + MOVD $2176+16, R6 // starting LE stack address-8 to store 4th argument + +repeat: + ADD $8, R7 + MOVD 0(R7), R0 // advance arg pointer by 8 byte + ADD $8, R6 // advance LE argument address by 8 byte + MOVD R0, (R4)(R6*1) // copy argument from go-slice to le-frame + SUB $1, R8 + CMP R8, $0 + BNE repeat + +docall: + MOVD funcdesc+0(FP), R8 // R8-> function descriptor + LMG 0(R8), R5, R6 + MOVD $0, 0(R9) // R9 address of SAVSTACK_ASYNC + LE_CALL // balr R7, R6 (return #1) + NOPH + MOVD R3, ret+32(FP) + CMP R3, $0 // compare result to 0 + BNE done + + // retrieve errno and errno2 + MOVD zosLibVec<>(SB), R8 + ADD $(__errno), R8 + LMG 0(R8), R5, R6 + LE_CALL // balr R7, R6 __errno (return #3) + NOPH + MOVWZ 0(R3), R3 + MOVD R3, err+48(FP) + MOVD zosLibVec<>(SB), R8 + ADD $(__err2ad), R8 + LMG 0(R8), R5, R6 + LE_CALL // balr R7, R6 __err2ad (return #2) + NOPH + MOVW (R3), R2 // retrieve errno2 + MOVD R2, errno2+40(FP) // store in return area + XOR R2, R2 + MOVWZ R2, (R3) // clear errno2 + +done: + MOVD R4, 0(R9) // Save stack pointer. + RET + +// +// function to test if a pointer can be safely dereferenced (content read) +// return 0 for succces +// +TEXT ·ptrtest(SB), NOSPLIT, $0-16 + MOVD arg+0(FP), R10 // test pointer in R10 + + // set up R2 to point to CEECAADMC + BYTE $0xE3; BYTE $0x20; BYTE $0x04; BYTE $0xB8; BYTE $0x00; BYTE $0x17 // llgt 2,1208 + BYTE $0xB9; BYTE $0x17; BYTE $0x00; BYTE $0x22 // llgtr 2,2 + BYTE $0xA5; BYTE $0x26; BYTE $0x7F; BYTE $0xFF // nilh 2,32767 + BYTE $0xE3; BYTE $0x22; BYTE $0x00; BYTE $0x58; BYTE $0x00; BYTE $0x04 // lg 2,88(2) + BYTE $0xE3; BYTE $0x22; BYTE $0x00; BYTE $0x08; BYTE $0x00; BYTE $0x04 // lg 2,8(2) + BYTE $0x41; BYTE $0x22; BYTE $0x03; BYTE $0x68 // la 2,872(2) + + // set up R5 to point to the "shunt" path which set 1 to R3 (failure) + BYTE $0xB9; BYTE $0x82; BYTE $0x00; BYTE $0x33 // xgr 3,3 + BYTE $0xA7; BYTE $0x55; BYTE $0x00; BYTE $0x04 // bras 5,lbl1 + BYTE $0xA7; BYTE $0x39; BYTE $0x00; BYTE $0x01 // lghi 3,1 + + // if r3 is not zero (failed) then branch to finish + BYTE $0xB9; BYTE $0x02; BYTE $0x00; BYTE $0x33 // lbl1 ltgr 3,3 + BYTE $0xA7; BYTE $0x74; BYTE $0x00; BYTE $0x08 // brc b'0111',lbl2 + + // stomic store shunt address in R5 into CEECAADMC + BYTE $0xE3; BYTE $0x52; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x24 // stg 5,0(2) + + // now try reading from the test pointer in R10, if it fails it branches to the "lghi" instruction above + BYTE $0xE3; BYTE $0x9A; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x04 // lg 9,0(10) + + // finish here, restore 0 into CEECAADMC + BYTE $0xB9; BYTE $0x82; BYTE $0x00; BYTE $0x99 // lbl2 xgr 9,9 + BYTE $0xE3; BYTE $0x92; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x24 // stg 9,0(2) + MOVD R3, ret+8(FP) // result in R3 + RET + +// +// function to test if a untptr can be loaded from a pointer +// return 1: the 8-byte content +// 2: 0 for success, 1 for failure +// +// func safeload(ptr uintptr) ( value uintptr, error uintptr) +TEXT ·safeload(SB), NOSPLIT, $0-24 + MOVD ptr+0(FP), R10 // test pointer in R10 + MOVD $0x0, R6 + BYTE $0xE3; BYTE $0x20; BYTE $0x04; BYTE $0xB8; BYTE $0x00; BYTE $0x17 // llgt 2,1208 + BYTE $0xB9; BYTE $0x17; BYTE $0x00; BYTE $0x22 // llgtr 2,2 + BYTE $0xA5; BYTE $0x26; BYTE $0x7F; BYTE $0xFF // nilh 2,32767 + BYTE $0xE3; BYTE $0x22; BYTE $0x00; BYTE $0x58; BYTE $0x00; BYTE $0x04 // lg 2,88(2) + BYTE $0xE3; BYTE $0x22; BYTE $0x00; BYTE $0x08; BYTE $0x00; BYTE $0x04 // lg 2,8(2) + BYTE $0x41; BYTE $0x22; BYTE $0x03; BYTE $0x68 // la 2,872(2) + BYTE $0xB9; BYTE $0x82; BYTE $0x00; BYTE $0x33 // xgr 3,3 + BYTE $0xA7; BYTE $0x55; BYTE $0x00; BYTE $0x04 // bras 5,lbl1 + BYTE $0xA7; BYTE $0x39; BYTE $0x00; BYTE $0x01 // lghi 3,1 + BYTE $0xB9; BYTE $0x02; BYTE $0x00; BYTE $0x33 // lbl1 ltgr 3,3 + BYTE $0xA7; BYTE $0x74; BYTE $0x00; BYTE $0x08 // brc b'0111',lbl2 + BYTE $0xE3; BYTE $0x52; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x24 // stg 5,0(2) + BYTE $0xE3; BYTE $0x6A; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x04 // lg 6,0(10) + BYTE $0xB9; BYTE $0x82; BYTE $0x00; BYTE $0x99 // lbl2 xgr 9,9 + BYTE $0xE3; BYTE $0x92; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x24 // stg 9,0(2) + MOVD R6, value+8(FP) // result in R6 + MOVD R3, error+16(FP) // error in R3 + RET diff --git a/tests/vendor/golang.org/x/sys/unix/auxv.go b/tests/vendor/golang.org/x/sys/unix/auxv.go new file mode 100644 index 000000000..37a82528f --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/auxv.go @@ -0,0 +1,36 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build go1.21 && (aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos) + +package unix + +import ( + "syscall" + "unsafe" +) + +//go:linkname runtime_getAuxv runtime.getAuxv +func runtime_getAuxv() []uintptr + +// Auxv returns the ELF auxiliary vector as a sequence of key/value pairs. +// The returned slice is always a fresh copy, owned by the caller. +// It returns an error on non-ELF platforms, or if the auxiliary vector cannot be accessed, +// which happens in some locked-down environments and build modes. +func Auxv() ([][2]uintptr, error) { + vec := runtime_getAuxv() + vecLen := len(vec) + + if vecLen == 0 { + return nil, syscall.ENOENT + } + + if vecLen%2 != 0 { + return nil, syscall.EINVAL + } + + result := make([]uintptr, vecLen) + copy(result, vec) + return unsafe.Slice((*[2]uintptr)(unsafe.Pointer(&result[0])), vecLen/2), nil +} diff --git a/tests/vendor/golang.org/x/sys/unix/auxv_unsupported.go b/tests/vendor/golang.org/x/sys/unix/auxv_unsupported.go new file mode 100644 index 000000000..1200487f2 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/auxv_unsupported.go @@ -0,0 +1,13 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !go1.21 && (aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos) + +package unix + +import "syscall" + +func Auxv() ([][2]uintptr, error) { + return nil, syscall.ENOTSUP +} diff --git a/tests/vendor/golang.org/x/sys/unix/bluetooth_linux.go b/tests/vendor/golang.org/x/sys/unix/bluetooth_linux.go new file mode 100644 index 000000000..a178a6149 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/bluetooth_linux.go @@ -0,0 +1,36 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Bluetooth sockets and messages + +package unix + +// Bluetooth Protocols +const ( + BTPROTO_L2CAP = 0 + BTPROTO_HCI = 1 + BTPROTO_SCO = 2 + BTPROTO_RFCOMM = 3 + BTPROTO_BNEP = 4 + BTPROTO_CMTP = 5 + BTPROTO_HIDP = 6 + BTPROTO_AVDTP = 7 +) + +const ( + HCI_CHANNEL_RAW = 0 + HCI_CHANNEL_USER = 1 + HCI_CHANNEL_MONITOR = 2 + HCI_CHANNEL_CONTROL = 3 + HCI_CHANNEL_LOGGING = 4 +) + +// Socketoption Level +const ( + SOL_BLUETOOTH = 0x112 + SOL_HCI = 0x0 + SOL_L2CAP = 0x6 + SOL_RFCOMM = 0x12 + SOL_SCO = 0x11 +) diff --git a/tests/vendor/golang.org/x/sys/unix/bpxsvc_zos.go b/tests/vendor/golang.org/x/sys/unix/bpxsvc_zos.go new file mode 100644 index 000000000..39d647d86 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/bpxsvc_zos.go @@ -0,0 +1,657 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos + +package unix + +import ( + "bytes" + "fmt" + "unsafe" +) + +//go:noescape +func bpxcall(plist []unsafe.Pointer, bpx_offset int64) + +//go:noescape +func A2e([]byte) + +//go:noescape +func E2a([]byte) + +const ( + BPX4STA = 192 // stat + BPX4FST = 104 // fstat + BPX4LST = 132 // lstat + BPX4OPN = 156 // open + BPX4CLO = 72 // close + BPX4CHR = 500 // chattr + BPX4FCR = 504 // fchattr + BPX4LCR = 1180 // lchattr + BPX4CTW = 492 // cond_timed_wait + BPX4GTH = 1056 // __getthent + BPX4PTQ = 412 // pthread_quiesc + BPX4PTR = 320 // ptrace +) + +const ( + //options + //byte1 + BPX_OPNFHIGH = 0x80 + //byte2 + BPX_OPNFEXEC = 0x80 + //byte3 + BPX_O_NOLARGEFILE = 0x08 + BPX_O_LARGEFILE = 0x04 + BPX_O_ASYNCSIG = 0x02 + BPX_O_SYNC = 0x01 + //byte4 + BPX_O_CREXCL = 0xc0 + BPX_O_CREAT = 0x80 + BPX_O_EXCL = 0x40 + BPX_O_NOCTTY = 0x20 + BPX_O_TRUNC = 0x10 + BPX_O_APPEND = 0x08 + BPX_O_NONBLOCK = 0x04 + BPX_FNDELAY = 0x04 + BPX_O_RDWR = 0x03 + BPX_O_RDONLY = 0x02 + BPX_O_WRONLY = 0x01 + BPX_O_ACCMODE = 0x03 + BPX_O_GETFL = 0x0f + + //mode + // byte1 (file type) + BPX_FT_DIR = 1 + BPX_FT_CHARSPEC = 2 + BPX_FT_REGFILE = 3 + BPX_FT_FIFO = 4 + BPX_FT_SYMLINK = 5 + BPX_FT_SOCKET = 6 + //byte3 + BPX_S_ISUID = 0x08 + BPX_S_ISGID = 0x04 + BPX_S_ISVTX = 0x02 + BPX_S_IRWXU1 = 0x01 + BPX_S_IRUSR = 0x01 + //byte4 + BPX_S_IRWXU2 = 0xc0 + BPX_S_IWUSR = 0x80 + BPX_S_IXUSR = 0x40 + BPX_S_IRWXG = 0x38 + BPX_S_IRGRP = 0x20 + BPX_S_IWGRP = 0x10 + BPX_S_IXGRP = 0x08 + BPX_S_IRWXOX = 0x07 + BPX_S_IROTH = 0x04 + BPX_S_IWOTH = 0x02 + BPX_S_IXOTH = 0x01 + + CW_INTRPT = 1 + CW_CONDVAR = 32 + CW_TIMEOUT = 64 + + PGTHA_NEXT = 2 + PGTHA_CURRENT = 1 + PGTHA_FIRST = 0 + PGTHA_LAST = 3 + PGTHA_PROCESS = 0x80 + PGTHA_CONTTY = 0x40 + PGTHA_PATH = 0x20 + PGTHA_COMMAND = 0x10 + PGTHA_FILEDATA = 0x08 + PGTHA_THREAD = 0x04 + PGTHA_PTAG = 0x02 + PGTHA_COMMANDLONG = 0x01 + PGTHA_THREADFAST = 0x80 + PGTHA_FILEPATH = 0x40 + PGTHA_THDSIGMASK = 0x20 + // thread quiece mode + QUIESCE_TERM int32 = 1 + QUIESCE_FORCE int32 = 2 + QUIESCE_QUERY int32 = 3 + QUIESCE_FREEZE int32 = 4 + QUIESCE_UNFREEZE int32 = 5 + FREEZE_THIS_THREAD int32 = 6 + FREEZE_EXIT int32 = 8 + QUIESCE_SRB int32 = 9 +) + +type Pgtha struct { + Pid uint32 // 0 + Tid0 uint32 // 4 + Tid1 uint32 + Accesspid byte // C + Accesstid byte // D + Accessasid uint16 // E + Loginname [8]byte // 10 + Flag1 byte // 18 + Flag1b2 byte // 19 +} + +type Bpxystat_t struct { // DSECT BPXYSTAT + St_id [4]uint8 // 0 + St_length uint16 // 0x4 + St_version uint16 // 0x6 + St_mode uint32 // 0x8 + St_ino uint32 // 0xc + St_dev uint32 // 0x10 + St_nlink uint32 // 0x14 + St_uid uint32 // 0x18 + St_gid uint32 // 0x1c + St_size uint64 // 0x20 + St_atime uint32 // 0x28 + St_mtime uint32 // 0x2c + St_ctime uint32 // 0x30 + St_rdev uint32 // 0x34 + St_auditoraudit uint32 // 0x38 + St_useraudit uint32 // 0x3c + St_blksize uint32 // 0x40 + St_createtime uint32 // 0x44 + St_auditid [4]uint32 // 0x48 + St_res01 uint32 // 0x58 + Ft_ccsid uint16 // 0x5c + Ft_flags uint16 // 0x5e + St_res01a [2]uint32 // 0x60 + St_res02 uint32 // 0x68 + St_blocks uint32 // 0x6c + St_opaque [3]uint8 // 0x70 + St_visible uint8 // 0x73 + St_reftime uint32 // 0x74 + St_fid uint64 // 0x78 + St_filefmt uint8 // 0x80 + St_fspflag2 uint8 // 0x81 + St_res03 [2]uint8 // 0x82 + St_ctimemsec uint32 // 0x84 + St_seclabel [8]uint8 // 0x88 + St_res04 [4]uint8 // 0x90 + // end of version 1 + _ uint32 // 0x94 + St_atime64 uint64 // 0x98 + St_mtime64 uint64 // 0xa0 + St_ctime64 uint64 // 0xa8 + St_createtime64 uint64 // 0xb0 + St_reftime64 uint64 // 0xb8 + _ uint64 // 0xc0 + St_res05 [16]uint8 // 0xc8 + // end of version 2 +} + +type BpxFilestatus struct { + Oflag1 byte + Oflag2 byte + Oflag3 byte + Oflag4 byte +} + +type BpxMode struct { + Ftype byte + Mode1 byte + Mode2 byte + Mode3 byte +} + +// Thr attribute structure for extended attributes +type Bpxyatt_t struct { // DSECT BPXYATT + Att_id [4]uint8 + Att_version uint16 + Att_res01 [2]uint8 + Att_setflags1 uint8 + Att_setflags2 uint8 + Att_setflags3 uint8 + Att_setflags4 uint8 + Att_mode uint32 + Att_uid uint32 + Att_gid uint32 + Att_opaquemask [3]uint8 + Att_visblmaskres uint8 + Att_opaque [3]uint8 + Att_visibleres uint8 + Att_size_h uint32 + Att_size_l uint32 + Att_atime uint32 + Att_mtime uint32 + Att_auditoraudit uint32 + Att_useraudit uint32 + Att_ctime uint32 + Att_reftime uint32 + // end of version 1 + Att_filefmt uint8 + Att_res02 [3]uint8 + Att_filetag uint32 + Att_res03 [8]uint8 + // end of version 2 + Att_atime64 uint64 + Att_mtime64 uint64 + Att_ctime64 uint64 + Att_reftime64 uint64 + Att_seclabel [8]uint8 + Att_ver3res02 [8]uint8 + // end of version 3 +} + +func BpxOpen(name string, options *BpxFilestatus, mode *BpxMode) (rv int32, rc int32, rn int32) { + if len(name) < 1024 { + var namebuf [1024]byte + sz := int32(copy(namebuf[:], name)) + A2e(namebuf[:sz]) + var parms [7]unsafe.Pointer + parms[0] = unsafe.Pointer(&sz) + parms[1] = unsafe.Pointer(&namebuf[0]) + parms[2] = unsafe.Pointer(options) + parms[3] = unsafe.Pointer(mode) + parms[4] = unsafe.Pointer(&rv) + parms[5] = unsafe.Pointer(&rc) + parms[6] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4OPN) + return rv, rc, rn + } + return -1, -1, -1 +} + +func BpxClose(fd int32) (rv int32, rc int32, rn int32) { + var parms [4]unsafe.Pointer + parms[0] = unsafe.Pointer(&fd) + parms[1] = unsafe.Pointer(&rv) + parms[2] = unsafe.Pointer(&rc) + parms[3] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4CLO) + return rv, rc, rn +} + +func BpxFileFStat(fd int32, st *Bpxystat_t) (rv int32, rc int32, rn int32) { + st.St_id = [4]uint8{0xe2, 0xe3, 0xc1, 0xe3} + st.St_version = 2 + stat_sz := uint32(unsafe.Sizeof(*st)) + var parms [6]unsafe.Pointer + parms[0] = unsafe.Pointer(&fd) + parms[1] = unsafe.Pointer(&stat_sz) + parms[2] = unsafe.Pointer(st) + parms[3] = unsafe.Pointer(&rv) + parms[4] = unsafe.Pointer(&rc) + parms[5] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4FST) + return rv, rc, rn +} + +func BpxFileStat(name string, st *Bpxystat_t) (rv int32, rc int32, rn int32) { + if len(name) < 1024 { + var namebuf [1024]byte + sz := int32(copy(namebuf[:], name)) + A2e(namebuf[:sz]) + st.St_id = [4]uint8{0xe2, 0xe3, 0xc1, 0xe3} + st.St_version = 2 + stat_sz := uint32(unsafe.Sizeof(*st)) + var parms [7]unsafe.Pointer + parms[0] = unsafe.Pointer(&sz) + parms[1] = unsafe.Pointer(&namebuf[0]) + parms[2] = unsafe.Pointer(&stat_sz) + parms[3] = unsafe.Pointer(st) + parms[4] = unsafe.Pointer(&rv) + parms[5] = unsafe.Pointer(&rc) + parms[6] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4STA) + return rv, rc, rn + } + return -1, -1, -1 +} + +func BpxFileLStat(name string, st *Bpxystat_t) (rv int32, rc int32, rn int32) { + if len(name) < 1024 { + var namebuf [1024]byte + sz := int32(copy(namebuf[:], name)) + A2e(namebuf[:sz]) + st.St_id = [4]uint8{0xe2, 0xe3, 0xc1, 0xe3} + st.St_version = 2 + stat_sz := uint32(unsafe.Sizeof(*st)) + var parms [7]unsafe.Pointer + parms[0] = unsafe.Pointer(&sz) + parms[1] = unsafe.Pointer(&namebuf[0]) + parms[2] = unsafe.Pointer(&stat_sz) + parms[3] = unsafe.Pointer(st) + parms[4] = unsafe.Pointer(&rv) + parms[5] = unsafe.Pointer(&rc) + parms[6] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4LST) + return rv, rc, rn + } + return -1, -1, -1 +} + +func BpxChattr(path string, attr *Bpxyatt_t) (rv int32, rc int32, rn int32) { + if len(path) >= 1024 { + return -1, -1, -1 + } + var namebuf [1024]byte + sz := int32(copy(namebuf[:], path)) + A2e(namebuf[:sz]) + attr_sz := uint32(unsafe.Sizeof(*attr)) + var parms [7]unsafe.Pointer + parms[0] = unsafe.Pointer(&sz) + parms[1] = unsafe.Pointer(&namebuf[0]) + parms[2] = unsafe.Pointer(&attr_sz) + parms[3] = unsafe.Pointer(attr) + parms[4] = unsafe.Pointer(&rv) + parms[5] = unsafe.Pointer(&rc) + parms[6] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4CHR) + return rv, rc, rn +} + +func BpxLchattr(path string, attr *Bpxyatt_t) (rv int32, rc int32, rn int32) { + if len(path) >= 1024 { + return -1, -1, -1 + } + var namebuf [1024]byte + sz := int32(copy(namebuf[:], path)) + A2e(namebuf[:sz]) + attr_sz := uint32(unsafe.Sizeof(*attr)) + var parms [7]unsafe.Pointer + parms[0] = unsafe.Pointer(&sz) + parms[1] = unsafe.Pointer(&namebuf[0]) + parms[2] = unsafe.Pointer(&attr_sz) + parms[3] = unsafe.Pointer(attr) + parms[4] = unsafe.Pointer(&rv) + parms[5] = unsafe.Pointer(&rc) + parms[6] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4LCR) + return rv, rc, rn +} + +func BpxFchattr(fd int32, attr *Bpxyatt_t) (rv int32, rc int32, rn int32) { + attr_sz := uint32(unsafe.Sizeof(*attr)) + var parms [6]unsafe.Pointer + parms[0] = unsafe.Pointer(&fd) + parms[1] = unsafe.Pointer(&attr_sz) + parms[2] = unsafe.Pointer(attr) + parms[3] = unsafe.Pointer(&rv) + parms[4] = unsafe.Pointer(&rc) + parms[5] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4FCR) + return rv, rc, rn +} + +func BpxCondTimedWait(sec uint32, nsec uint32, events uint32, secrem *uint32, nsecrem *uint32) (rv int32, rc int32, rn int32) { + var parms [8]unsafe.Pointer + parms[0] = unsafe.Pointer(&sec) + parms[1] = unsafe.Pointer(&nsec) + parms[2] = unsafe.Pointer(&events) + parms[3] = unsafe.Pointer(secrem) + parms[4] = unsafe.Pointer(nsecrem) + parms[5] = unsafe.Pointer(&rv) + parms[6] = unsafe.Pointer(&rc) + parms[7] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4CTW) + return rv, rc, rn +} +func BpxGetthent(in *Pgtha, outlen *uint32, out unsafe.Pointer) (rv int32, rc int32, rn int32) { + var parms [7]unsafe.Pointer + inlen := uint32(26) // nothing else will work. Go says Pgtha is 28-byte because of alignment, but Pgtha is "packed" and must be 26-byte + parms[0] = unsafe.Pointer(&inlen) + parms[1] = unsafe.Pointer(&in) + parms[2] = unsafe.Pointer(outlen) + parms[3] = unsafe.Pointer(&out) + parms[4] = unsafe.Pointer(&rv) + parms[5] = unsafe.Pointer(&rc) + parms[6] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4GTH) + return rv, rc, rn +} +func ZosJobname() (jobname string, err error) { + var pgtha Pgtha + pgtha.Pid = uint32(Getpid()) + pgtha.Accesspid = PGTHA_CURRENT + pgtha.Flag1 = PGTHA_PROCESS + var out [256]byte + var outlen uint32 + outlen = 256 + rv, rc, rn := BpxGetthent(&pgtha, &outlen, unsafe.Pointer(&out[0])) + if rv == 0 { + gthc := []byte{0x87, 0xa3, 0x88, 0x83} // 'gthc' in ebcdic + ix := bytes.Index(out[:], gthc) + if ix == -1 { + err = fmt.Errorf("BPX4GTH: gthc return data not found") + return + } + jn := out[ix+80 : ix+88] // we didn't declare Pgthc, but jobname is 8-byte at offset 80 + E2a(jn) + jobname = string(bytes.TrimRight(jn, " ")) + + } else { + err = fmt.Errorf("BPX4GTH: rc=%d errno=%d reason=code=0x%x", rv, rc, rn) + } + return +} +func Bpx4ptq(code int32, data string) (rv int32, rc int32, rn int32) { + var userdata [8]byte + var parms [5]unsafe.Pointer + copy(userdata[:], data+" ") + A2e(userdata[:]) + parms[0] = unsafe.Pointer(&code) + parms[1] = unsafe.Pointer(&userdata[0]) + parms[2] = unsafe.Pointer(&rv) + parms[3] = unsafe.Pointer(&rc) + parms[4] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4PTQ) + return rv, rc, rn +} + +const ( + PT_TRACE_ME = 0 // Debug this process + PT_READ_I = 1 // Read a full word + PT_READ_D = 2 // Read a full word + PT_READ_U = 3 // Read control info + PT_WRITE_I = 4 //Write a full word + PT_WRITE_D = 5 //Write a full word + PT_CONTINUE = 7 //Continue the process + PT_KILL = 8 //Terminate the process + PT_READ_GPR = 11 // Read GPR, CR, PSW + PT_READ_FPR = 12 // Read FPR + PT_READ_VR = 13 // Read VR + PT_WRITE_GPR = 14 // Write GPR, CR, PSW + PT_WRITE_FPR = 15 // Write FPR + PT_WRITE_VR = 16 // Write VR + PT_READ_BLOCK = 17 // Read storage + PT_WRITE_BLOCK = 19 // Write storage + PT_READ_GPRH = 20 // Read GPRH + PT_WRITE_GPRH = 21 // Write GPRH + PT_REGHSET = 22 // Read all GPRHs + PT_ATTACH = 30 // Attach to a process + PT_DETACH = 31 // Detach from a process + PT_REGSET = 32 // Read all GPRs + PT_REATTACH = 33 // Reattach to a process + PT_LDINFO = 34 // Read loader info + PT_MULTI = 35 // Multi process mode + PT_LD64INFO = 36 // RMODE64 Info Area + PT_BLOCKREQ = 40 // Block request + PT_THREAD_INFO = 60 // Read thread info + PT_THREAD_MODIFY = 61 + PT_THREAD_READ_FOCUS = 62 + PT_THREAD_WRITE_FOCUS = 63 + PT_THREAD_HOLD = 64 + PT_THREAD_SIGNAL = 65 + PT_EXPLAIN = 66 + PT_EVENTS = 67 + PT_THREAD_INFO_EXTENDED = 68 + PT_REATTACH2 = 71 + PT_CAPTURE = 72 + PT_UNCAPTURE = 73 + PT_GET_THREAD_TCB = 74 + PT_GET_ALET = 75 + PT_SWAPIN = 76 + PT_EXTENDED_EVENT = 98 + PT_RECOVER = 99 // Debug a program check + PT_GPR0 = 0 // General purpose register 0 + PT_GPR1 = 1 // General purpose register 1 + PT_GPR2 = 2 // General purpose register 2 + PT_GPR3 = 3 // General purpose register 3 + PT_GPR4 = 4 // General purpose register 4 + PT_GPR5 = 5 // General purpose register 5 + PT_GPR6 = 6 // General purpose register 6 + PT_GPR7 = 7 // General purpose register 7 + PT_GPR8 = 8 // General purpose register 8 + PT_GPR9 = 9 // General purpose register 9 + PT_GPR10 = 10 // General purpose register 10 + PT_GPR11 = 11 // General purpose register 11 + PT_GPR12 = 12 // General purpose register 12 + PT_GPR13 = 13 // General purpose register 13 + PT_GPR14 = 14 // General purpose register 14 + PT_GPR15 = 15 // General purpose register 15 + PT_FPR0 = 16 // Floating point register 0 + PT_FPR1 = 17 // Floating point register 1 + PT_FPR2 = 18 // Floating point register 2 + PT_FPR3 = 19 // Floating point register 3 + PT_FPR4 = 20 // Floating point register 4 + PT_FPR5 = 21 // Floating point register 5 + PT_FPR6 = 22 // Floating point register 6 + PT_FPR7 = 23 // Floating point register 7 + PT_FPR8 = 24 // Floating point register 8 + PT_FPR9 = 25 // Floating point register 9 + PT_FPR10 = 26 // Floating point register 10 + PT_FPR11 = 27 // Floating point register 11 + PT_FPR12 = 28 // Floating point register 12 + PT_FPR13 = 29 // Floating point register 13 + PT_FPR14 = 30 // Floating point register 14 + PT_FPR15 = 31 // Floating point register 15 + PT_FPC = 32 // Floating point control register + PT_PSW = 40 // PSW + PT_PSW0 = 40 // Left half of the PSW + PT_PSW1 = 41 // Right half of the PSW + PT_CR0 = 42 // Control register 0 + PT_CR1 = 43 // Control register 1 + PT_CR2 = 44 // Control register 2 + PT_CR3 = 45 // Control register 3 + PT_CR4 = 46 // Control register 4 + PT_CR5 = 47 // Control register 5 + PT_CR6 = 48 // Control register 6 + PT_CR7 = 49 // Control register 7 + PT_CR8 = 50 // Control register 8 + PT_CR9 = 51 // Control register 9 + PT_CR10 = 52 // Control register 10 + PT_CR11 = 53 // Control register 11 + PT_CR12 = 54 // Control register 12 + PT_CR13 = 55 // Control register 13 + PT_CR14 = 56 // Control register 14 + PT_CR15 = 57 // Control register 15 + PT_GPRH0 = 58 // GP High register 0 + PT_GPRH1 = 59 // GP High register 1 + PT_GPRH2 = 60 // GP High register 2 + PT_GPRH3 = 61 // GP High register 3 + PT_GPRH4 = 62 // GP High register 4 + PT_GPRH5 = 63 // GP High register 5 + PT_GPRH6 = 64 // GP High register 6 + PT_GPRH7 = 65 // GP High register 7 + PT_GPRH8 = 66 // GP High register 8 + PT_GPRH9 = 67 // GP High register 9 + PT_GPRH10 = 68 // GP High register 10 + PT_GPRH11 = 69 // GP High register 11 + PT_GPRH12 = 70 // GP High register 12 + PT_GPRH13 = 71 // GP High register 13 + PT_GPRH14 = 72 // GP High register 14 + PT_GPRH15 = 73 // GP High register 15 + PT_VR0 = 74 // Vector register 0 + PT_VR1 = 75 // Vector register 1 + PT_VR2 = 76 // Vector register 2 + PT_VR3 = 77 // Vector register 3 + PT_VR4 = 78 // Vector register 4 + PT_VR5 = 79 // Vector register 5 + PT_VR6 = 80 // Vector register 6 + PT_VR7 = 81 // Vector register 7 + PT_VR8 = 82 // Vector register 8 + PT_VR9 = 83 // Vector register 9 + PT_VR10 = 84 // Vector register 10 + PT_VR11 = 85 // Vector register 11 + PT_VR12 = 86 // Vector register 12 + PT_VR13 = 87 // Vector register 13 + PT_VR14 = 88 // Vector register 14 + PT_VR15 = 89 // Vector register 15 + PT_VR16 = 90 // Vector register 16 + PT_VR17 = 91 // Vector register 17 + PT_VR18 = 92 // Vector register 18 + PT_VR19 = 93 // Vector register 19 + PT_VR20 = 94 // Vector register 20 + PT_VR21 = 95 // Vector register 21 + PT_VR22 = 96 // Vector register 22 + PT_VR23 = 97 // Vector register 23 + PT_VR24 = 98 // Vector register 24 + PT_VR25 = 99 // Vector register 25 + PT_VR26 = 100 // Vector register 26 + PT_VR27 = 101 // Vector register 27 + PT_VR28 = 102 // Vector register 28 + PT_VR29 = 103 // Vector register 29 + PT_VR30 = 104 // Vector register 30 + PT_VR31 = 105 // Vector register 31 + PT_PSWG = 106 // PSWG + PT_PSWG0 = 106 // Bytes 0-3 + PT_PSWG1 = 107 // Bytes 4-7 + PT_PSWG2 = 108 // Bytes 8-11 (IA high word) + PT_PSWG3 = 109 // Bytes 12-15 (IA low word) +) + +func Bpx4ptr(request int32, pid int32, addr unsafe.Pointer, data unsafe.Pointer, buffer unsafe.Pointer) (rv int32, rc int32, rn int32) { + var parms [8]unsafe.Pointer + parms[0] = unsafe.Pointer(&request) + parms[1] = unsafe.Pointer(&pid) + parms[2] = unsafe.Pointer(&addr) + parms[3] = unsafe.Pointer(&data) + parms[4] = unsafe.Pointer(&buffer) + parms[5] = unsafe.Pointer(&rv) + parms[6] = unsafe.Pointer(&rc) + parms[7] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4PTR) + return rv, rc, rn +} + +func copyU8(val uint8, dest []uint8) int { + if len(dest) < 1 { + return 0 + } + dest[0] = val + return 1 +} + +func copyU8Arr(src, dest []uint8) int { + if len(dest) < len(src) { + return 0 + } + for i, v := range src { + dest[i] = v + } + return len(src) +} + +func copyU16(val uint16, dest []uint16) int { + if len(dest) < 1 { + return 0 + } + dest[0] = val + return 1 +} + +func copyU32(val uint32, dest []uint32) int { + if len(dest) < 1 { + return 0 + } + dest[0] = val + return 1 +} + +func copyU32Arr(src, dest []uint32) int { + if len(dest) < len(src) { + return 0 + } + for i, v := range src { + dest[i] = v + } + return len(src) +} + +func copyU64(val uint64, dest []uint64) int { + if len(dest) < 1 { + return 0 + } + dest[0] = val + return 1 +} diff --git a/tests/vendor/golang.org/x/sys/unix/bpxsvc_zos.s b/tests/vendor/golang.org/x/sys/unix/bpxsvc_zos.s new file mode 100644 index 000000000..4bd4a1798 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/bpxsvc_zos.s @@ -0,0 +1,192 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +#include "go_asm.h" +#include "textflag.h" + +// function to call USS assembly language services +// +// doc: https://www.ibm.com/support/knowledgecenter/en/SSLTBW_3.1.0/com.ibm.zos.v3r1.bpxb100/bit64env.htm +// +// arg1 unsafe.Pointer array that ressembles an OS PLIST +// +// arg2 function offset as in +// doc: https://www.ibm.com/support/knowledgecenter/en/SSLTBW_3.1.0/com.ibm.zos.v3r1.bpxb100/bpx2cr_List_of_offsets.htm +// +// func bpxcall(plist []unsafe.Pointer, bpx_offset int64) + +TEXT ·bpxcall(SB), NOSPLIT|NOFRAME, $0 + MOVD plist_base+0(FP), R1 // r1 points to plist + MOVD bpx_offset+24(FP), R2 // r2 offset to BPX vector table + MOVD R14, R7 // save r14 + MOVD R15, R8 // save r15 + MOVWZ 16(R0), R9 + MOVWZ 544(R9), R9 + MOVWZ 24(R9), R9 // call vector in r9 + ADD R2, R9 // add offset to vector table + MOVWZ (R9), R9 // r9 points to entry point + BYTE $0x0D // BL R14,R9 --> basr r14,r9 + BYTE $0xE9 // clobbers 0,1,14,15 + MOVD R8, R15 // restore 15 + JMP R7 // return via saved return address + +// func A2e(arr [] byte) +// code page conversion from 819 to 1047 +TEXT ·A2e(SB), NOSPLIT|NOFRAME, $0 + MOVD arg_base+0(FP), R2 // pointer to arry of characters + MOVD arg_len+8(FP), R3 // count + XOR R0, R0 + XOR R1, R1 + BYTE $0xA7; BYTE $0x15; BYTE $0x00; BYTE $0x82 // BRAS 1,(2+(256/2)) + + // ASCII -> EBCDIC conversion table: + BYTE $0x00; BYTE $0x01; BYTE $0x02; BYTE $0x03 + BYTE $0x37; BYTE $0x2d; BYTE $0x2e; BYTE $0x2f + BYTE $0x16; BYTE $0x05; BYTE $0x15; BYTE $0x0b + BYTE $0x0c; BYTE $0x0d; BYTE $0x0e; BYTE $0x0f + BYTE $0x10; BYTE $0x11; BYTE $0x12; BYTE $0x13 + BYTE $0x3c; BYTE $0x3d; BYTE $0x32; BYTE $0x26 + BYTE $0x18; BYTE $0x19; BYTE $0x3f; BYTE $0x27 + BYTE $0x1c; BYTE $0x1d; BYTE $0x1e; BYTE $0x1f + BYTE $0x40; BYTE $0x5a; BYTE $0x7f; BYTE $0x7b + BYTE $0x5b; BYTE $0x6c; BYTE $0x50; BYTE $0x7d + BYTE $0x4d; BYTE $0x5d; BYTE $0x5c; BYTE $0x4e + BYTE $0x6b; BYTE $0x60; BYTE $0x4b; BYTE $0x61 + BYTE $0xf0; BYTE $0xf1; BYTE $0xf2; BYTE $0xf3 + BYTE $0xf4; BYTE $0xf5; BYTE $0xf6; BYTE $0xf7 + BYTE $0xf8; BYTE $0xf9; BYTE $0x7a; BYTE $0x5e + BYTE $0x4c; BYTE $0x7e; BYTE $0x6e; BYTE $0x6f + BYTE $0x7c; BYTE $0xc1; BYTE $0xc2; BYTE $0xc3 + BYTE $0xc4; BYTE $0xc5; BYTE $0xc6; BYTE $0xc7 + BYTE $0xc8; BYTE $0xc9; BYTE $0xd1; BYTE $0xd2 + BYTE $0xd3; BYTE $0xd4; BYTE $0xd5; BYTE $0xd6 + BYTE $0xd7; BYTE $0xd8; BYTE $0xd9; BYTE $0xe2 + BYTE $0xe3; BYTE $0xe4; BYTE $0xe5; BYTE $0xe6 + BYTE $0xe7; BYTE $0xe8; BYTE $0xe9; BYTE $0xad + BYTE $0xe0; BYTE $0xbd; BYTE $0x5f; BYTE $0x6d + BYTE $0x79; BYTE $0x81; BYTE $0x82; BYTE $0x83 + BYTE $0x84; BYTE $0x85; BYTE $0x86; BYTE $0x87 + BYTE $0x88; BYTE $0x89; BYTE $0x91; BYTE $0x92 + BYTE $0x93; BYTE $0x94; BYTE $0x95; BYTE $0x96 + BYTE $0x97; BYTE $0x98; BYTE $0x99; BYTE $0xa2 + BYTE $0xa3; BYTE $0xa4; BYTE $0xa5; BYTE $0xa6 + BYTE $0xa7; BYTE $0xa8; BYTE $0xa9; BYTE $0xc0 + BYTE $0x4f; BYTE $0xd0; BYTE $0xa1; BYTE $0x07 + BYTE $0x20; BYTE $0x21; BYTE $0x22; BYTE $0x23 + BYTE $0x24; BYTE $0x25; BYTE $0x06; BYTE $0x17 + BYTE $0x28; BYTE $0x29; BYTE $0x2a; BYTE $0x2b + BYTE $0x2c; BYTE $0x09; BYTE $0x0a; BYTE $0x1b + BYTE $0x30; BYTE $0x31; BYTE $0x1a; BYTE $0x33 + BYTE $0x34; BYTE $0x35; BYTE $0x36; BYTE $0x08 + BYTE $0x38; BYTE $0x39; BYTE $0x3a; BYTE $0x3b + BYTE $0x04; BYTE $0x14; BYTE $0x3e; BYTE $0xff + BYTE $0x41; BYTE $0xaa; BYTE $0x4a; BYTE $0xb1 + BYTE $0x9f; BYTE $0xb2; BYTE $0x6a; BYTE $0xb5 + BYTE $0xbb; BYTE $0xb4; BYTE $0x9a; BYTE $0x8a + BYTE $0xb0; BYTE $0xca; BYTE $0xaf; BYTE $0xbc + BYTE $0x90; BYTE $0x8f; BYTE $0xea; BYTE $0xfa + BYTE $0xbe; BYTE $0xa0; BYTE $0xb6; BYTE $0xb3 + BYTE $0x9d; BYTE $0xda; BYTE $0x9b; BYTE $0x8b + BYTE $0xb7; BYTE $0xb8; BYTE $0xb9; BYTE $0xab + BYTE $0x64; BYTE $0x65; BYTE $0x62; BYTE $0x66 + BYTE $0x63; BYTE $0x67; BYTE $0x9e; BYTE $0x68 + BYTE $0x74; BYTE $0x71; BYTE $0x72; BYTE $0x73 + BYTE $0x78; BYTE $0x75; BYTE $0x76; BYTE $0x77 + BYTE $0xac; BYTE $0x69; BYTE $0xed; BYTE $0xee + BYTE $0xeb; BYTE $0xef; BYTE $0xec; BYTE $0xbf + BYTE $0x80; BYTE $0xfd; BYTE $0xfe; BYTE $0xfb + BYTE $0xfc; BYTE $0xba; BYTE $0xae; BYTE $0x59 + BYTE $0x44; BYTE $0x45; BYTE $0x42; BYTE $0x46 + BYTE $0x43; BYTE $0x47; BYTE $0x9c; BYTE $0x48 + BYTE $0x54; BYTE $0x51; BYTE $0x52; BYTE $0x53 + BYTE $0x58; BYTE $0x55; BYTE $0x56; BYTE $0x57 + BYTE $0x8c; BYTE $0x49; BYTE $0xcd; BYTE $0xce + BYTE $0xcb; BYTE $0xcf; BYTE $0xcc; BYTE $0xe1 + BYTE $0x70; BYTE $0xdd; BYTE $0xde; BYTE $0xdb + BYTE $0xdc; BYTE $0x8d; BYTE $0x8e; BYTE $0xdf + +retry: + WORD $0xB9931022 // TROO 2,2,b'0001' + BVS retry + RET + +// func e2a(arr [] byte) +// code page conversion from 1047 to 819 +TEXT ·E2a(SB), NOSPLIT|NOFRAME, $0 + MOVD arg_base+0(FP), R2 // pointer to arry of characters + MOVD arg_len+8(FP), R3 // count + XOR R0, R0 + XOR R1, R1 + BYTE $0xA7; BYTE $0x15; BYTE $0x00; BYTE $0x82 // BRAS 1,(2+(256/2)) + + // EBCDIC -> ASCII conversion table: + BYTE $0x00; BYTE $0x01; BYTE $0x02; BYTE $0x03 + BYTE $0x9c; BYTE $0x09; BYTE $0x86; BYTE $0x7f + BYTE $0x97; BYTE $0x8d; BYTE $0x8e; BYTE $0x0b + BYTE $0x0c; BYTE $0x0d; BYTE $0x0e; BYTE $0x0f + BYTE $0x10; BYTE $0x11; BYTE $0x12; BYTE $0x13 + BYTE $0x9d; BYTE $0x0a; BYTE $0x08; BYTE $0x87 + BYTE $0x18; BYTE $0x19; BYTE $0x92; BYTE $0x8f + BYTE $0x1c; BYTE $0x1d; BYTE $0x1e; BYTE $0x1f + BYTE $0x80; BYTE $0x81; BYTE $0x82; BYTE $0x83 + BYTE $0x84; BYTE $0x85; BYTE $0x17; BYTE $0x1b + BYTE $0x88; BYTE $0x89; BYTE $0x8a; BYTE $0x8b + BYTE $0x8c; BYTE $0x05; BYTE $0x06; BYTE $0x07 + BYTE $0x90; BYTE $0x91; BYTE $0x16; BYTE $0x93 + BYTE $0x94; BYTE $0x95; BYTE $0x96; BYTE $0x04 + BYTE $0x98; BYTE $0x99; BYTE $0x9a; BYTE $0x9b + BYTE $0x14; BYTE $0x15; BYTE $0x9e; BYTE $0x1a + BYTE $0x20; BYTE $0xa0; BYTE $0xe2; BYTE $0xe4 + BYTE $0xe0; BYTE $0xe1; BYTE $0xe3; BYTE $0xe5 + BYTE $0xe7; BYTE $0xf1; BYTE $0xa2; BYTE $0x2e + BYTE $0x3c; BYTE $0x28; BYTE $0x2b; BYTE $0x7c + BYTE $0x26; BYTE $0xe9; BYTE $0xea; BYTE $0xeb + BYTE $0xe8; BYTE $0xed; BYTE $0xee; BYTE $0xef + BYTE $0xec; BYTE $0xdf; BYTE $0x21; BYTE $0x24 + BYTE $0x2a; BYTE $0x29; BYTE $0x3b; BYTE $0x5e + BYTE $0x2d; BYTE $0x2f; BYTE $0xc2; BYTE $0xc4 + BYTE $0xc0; BYTE $0xc1; BYTE $0xc3; BYTE $0xc5 + BYTE $0xc7; BYTE $0xd1; BYTE $0xa6; BYTE $0x2c + BYTE $0x25; BYTE $0x5f; BYTE $0x3e; BYTE $0x3f + BYTE $0xf8; BYTE $0xc9; BYTE $0xca; BYTE $0xcb + BYTE $0xc8; BYTE $0xcd; BYTE $0xce; BYTE $0xcf + BYTE $0xcc; BYTE $0x60; BYTE $0x3a; BYTE $0x23 + BYTE $0x40; BYTE $0x27; BYTE $0x3d; BYTE $0x22 + BYTE $0xd8; BYTE $0x61; BYTE $0x62; BYTE $0x63 + BYTE $0x64; BYTE $0x65; BYTE $0x66; BYTE $0x67 + BYTE $0x68; BYTE $0x69; BYTE $0xab; BYTE $0xbb + BYTE $0xf0; BYTE $0xfd; BYTE $0xfe; BYTE $0xb1 + BYTE $0xb0; BYTE $0x6a; BYTE $0x6b; BYTE $0x6c + BYTE $0x6d; BYTE $0x6e; BYTE $0x6f; BYTE $0x70 + BYTE $0x71; BYTE $0x72; BYTE $0xaa; BYTE $0xba + BYTE $0xe6; BYTE $0xb8; BYTE $0xc6; BYTE $0xa4 + BYTE $0xb5; BYTE $0x7e; BYTE $0x73; BYTE $0x74 + BYTE $0x75; BYTE $0x76; BYTE $0x77; BYTE $0x78 + BYTE $0x79; BYTE $0x7a; BYTE $0xa1; BYTE $0xbf + BYTE $0xd0; BYTE $0x5b; BYTE $0xde; BYTE $0xae + BYTE $0xac; BYTE $0xa3; BYTE $0xa5; BYTE $0xb7 + BYTE $0xa9; BYTE $0xa7; BYTE $0xb6; BYTE $0xbc + BYTE $0xbd; BYTE $0xbe; BYTE $0xdd; BYTE $0xa8 + BYTE $0xaf; BYTE $0x5d; BYTE $0xb4; BYTE $0xd7 + BYTE $0x7b; BYTE $0x41; BYTE $0x42; BYTE $0x43 + BYTE $0x44; BYTE $0x45; BYTE $0x46; BYTE $0x47 + BYTE $0x48; BYTE $0x49; BYTE $0xad; BYTE $0xf4 + BYTE $0xf6; BYTE $0xf2; BYTE $0xf3; BYTE $0xf5 + BYTE $0x7d; BYTE $0x4a; BYTE $0x4b; BYTE $0x4c + BYTE $0x4d; BYTE $0x4e; BYTE $0x4f; BYTE $0x50 + BYTE $0x51; BYTE $0x52; BYTE $0xb9; BYTE $0xfb + BYTE $0xfc; BYTE $0xf9; BYTE $0xfa; BYTE $0xff + BYTE $0x5c; BYTE $0xf7; BYTE $0x53; BYTE $0x54 + BYTE $0x55; BYTE $0x56; BYTE $0x57; BYTE $0x58 + BYTE $0x59; BYTE $0x5a; BYTE $0xb2; BYTE $0xd4 + BYTE $0xd6; BYTE $0xd2; BYTE $0xd3; BYTE $0xd5 + BYTE $0x30; BYTE $0x31; BYTE $0x32; BYTE $0x33 + BYTE $0x34; BYTE $0x35; BYTE $0x36; BYTE $0x37 + BYTE $0x38; BYTE $0x39; BYTE $0xb3; BYTE $0xdb + BYTE $0xdc; BYTE $0xd9; BYTE $0xda; BYTE $0x9f + +retry: + WORD $0xB9931022 // TROO 2,2,b'0001' + BVS retry + RET diff --git a/tests/vendor/golang.org/x/sys/unix/cap_freebsd.go b/tests/vendor/golang.org/x/sys/unix/cap_freebsd.go new file mode 100644 index 000000000..a08657890 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/cap_freebsd.go @@ -0,0 +1,195 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build freebsd + +package unix + +import ( + "errors" + "fmt" +) + +// Go implementation of C mostly found in /usr/src/sys/kern/subr_capability.c + +const ( + // This is the version of CapRights this package understands. See C implementation for parallels. + capRightsGoVersion = CAP_RIGHTS_VERSION_00 + capArSizeMin = CAP_RIGHTS_VERSION_00 + 2 + capArSizeMax = capRightsGoVersion + 2 +) + +var ( + bit2idx = []int{ + -1, 0, 1, -1, 2, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, + 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + } +) + +func capidxbit(right uint64) int { + return int((right >> 57) & 0x1f) +} + +func rightToIndex(right uint64) (int, error) { + idx := capidxbit(right) + if idx < 0 || idx >= len(bit2idx) { + return -2, fmt.Errorf("index for right 0x%x out of range", right) + } + return bit2idx[idx], nil +} + +func caprver(right uint64) int { + return int(right >> 62) +} + +func capver(rights *CapRights) int { + return caprver(rights.Rights[0]) +} + +func caparsize(rights *CapRights) int { + return capver(rights) + 2 +} + +// CapRightsSet sets the permissions in setrights in rights. +func CapRightsSet(rights *CapRights, setrights []uint64) error { + // This is essentially a copy of cap_rights_vset() + if capver(rights) != CAP_RIGHTS_VERSION_00 { + return fmt.Errorf("bad rights version %d", capver(rights)) + } + + n := caparsize(rights) + if n < capArSizeMin || n > capArSizeMax { + return errors.New("bad rights size") + } + + for _, right := range setrights { + if caprver(right) != CAP_RIGHTS_VERSION_00 { + return errors.New("bad right version") + } + i, err := rightToIndex(right) + if err != nil { + return err + } + if i >= n { + return errors.New("index overflow") + } + if capidxbit(rights.Rights[i]) != capidxbit(right) { + return errors.New("index mismatch") + } + rights.Rights[i] |= right + if capidxbit(rights.Rights[i]) != capidxbit(right) { + return errors.New("index mismatch (after assign)") + } + } + + return nil +} + +// CapRightsClear clears the permissions in clearrights from rights. +func CapRightsClear(rights *CapRights, clearrights []uint64) error { + // This is essentially a copy of cap_rights_vclear() + if capver(rights) != CAP_RIGHTS_VERSION_00 { + return fmt.Errorf("bad rights version %d", capver(rights)) + } + + n := caparsize(rights) + if n < capArSizeMin || n > capArSizeMax { + return errors.New("bad rights size") + } + + for _, right := range clearrights { + if caprver(right) != CAP_RIGHTS_VERSION_00 { + return errors.New("bad right version") + } + i, err := rightToIndex(right) + if err != nil { + return err + } + if i >= n { + return errors.New("index overflow") + } + if capidxbit(rights.Rights[i]) != capidxbit(right) { + return errors.New("index mismatch") + } + rights.Rights[i] &= ^(right & 0x01FFFFFFFFFFFFFF) + if capidxbit(rights.Rights[i]) != capidxbit(right) { + return errors.New("index mismatch (after assign)") + } + } + + return nil +} + +// CapRightsIsSet checks whether all the permissions in setrights are present in rights. +func CapRightsIsSet(rights *CapRights, setrights []uint64) (bool, error) { + // This is essentially a copy of cap_rights_is_vset() + if capver(rights) != CAP_RIGHTS_VERSION_00 { + return false, fmt.Errorf("bad rights version %d", capver(rights)) + } + + n := caparsize(rights) + if n < capArSizeMin || n > capArSizeMax { + return false, errors.New("bad rights size") + } + + for _, right := range setrights { + if caprver(right) != CAP_RIGHTS_VERSION_00 { + return false, errors.New("bad right version") + } + i, err := rightToIndex(right) + if err != nil { + return false, err + } + if i >= n { + return false, errors.New("index overflow") + } + if capidxbit(rights.Rights[i]) != capidxbit(right) { + return false, errors.New("index mismatch") + } + if (rights.Rights[i] & right) != right { + return false, nil + } + } + + return true, nil +} + +func capright(idx uint64, bit uint64) uint64 { + return ((1 << (57 + idx)) | bit) +} + +// CapRightsInit returns a pointer to an initialised CapRights structure filled with rights. +// See man cap_rights_init(3) and rights(4). +func CapRightsInit(rights []uint64) (*CapRights, error) { + var r CapRights + r.Rights[0] = (capRightsGoVersion << 62) | capright(0, 0) + r.Rights[1] = capright(1, 0) + + err := CapRightsSet(&r, rights) + if err != nil { + return nil, err + } + return &r, nil +} + +// CapRightsLimit reduces the operations permitted on fd to at most those contained in rights. +// The capability rights on fd can never be increased by CapRightsLimit. +// See man cap_rights_limit(2) and rights(4). +func CapRightsLimit(fd uintptr, rights *CapRights) error { + return capRightsLimit(int(fd), rights) +} + +// CapRightsGet returns a CapRights structure containing the operations permitted on fd. +// See man cap_rights_get(3) and rights(4). +func CapRightsGet(fd uintptr) (*CapRights, error) { + r, err := CapRightsInit(nil) + if err != nil { + return nil, err + } + err = capRightsGet(capRightsGoVersion, int(fd), r) + if err != nil { + return nil, err + } + return r, nil +} diff --git a/tests/vendor/golang.org/x/sys/unix/constants.go b/tests/vendor/golang.org/x/sys/unix/constants.go new file mode 100644 index 000000000..6fb7cb77d --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/constants.go @@ -0,0 +1,13 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos + +package unix + +const ( + R_OK = 0x4 + W_OK = 0x2 + X_OK = 0x1 +) diff --git a/tests/vendor/golang.org/x/sys/unix/dev_aix_ppc.go b/tests/vendor/golang.org/x/sys/unix/dev_aix_ppc.go new file mode 100644 index 000000000..d78513461 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/dev_aix_ppc.go @@ -0,0 +1,26 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix && ppc + +// Functions to access/create device major and minor numbers matching the +// encoding used by AIX. + +package unix + +// Major returns the major component of a Linux device number. +func Major(dev uint64) uint32 { + return uint32((dev >> 16) & 0xffff) +} + +// Minor returns the minor component of a Linux device number. +func Minor(dev uint64) uint32 { + return uint32(dev & 0xffff) +} + +// Mkdev returns a Linux device number generated from the given major and minor +// components. +func Mkdev(major, minor uint32) uint64 { + return uint64(((major) << 16) | (minor)) +} diff --git a/tests/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go b/tests/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go new file mode 100644 index 000000000..623a5e697 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go @@ -0,0 +1,28 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix && ppc64 + +// Functions to access/create device major and minor numbers matching the +// encoding used AIX. + +package unix + +// Major returns the major component of a Linux device number. +func Major(dev uint64) uint32 { + return uint32((dev & 0x3fffffff00000000) >> 32) +} + +// Minor returns the minor component of a Linux device number. +func Minor(dev uint64) uint32 { + return uint32((dev & 0x00000000ffffffff) >> 0) +} + +// Mkdev returns a Linux device number generated from the given major and minor +// components. +func Mkdev(major, minor uint32) uint64 { + var DEVNO64 uint64 + DEVNO64 = 0x8000000000000000 + return ((uint64(major) << 32) | (uint64(minor) & 0x00000000FFFFFFFF) | DEVNO64) +} diff --git a/tests/vendor/golang.org/x/sys/unix/dev_darwin.go b/tests/vendor/golang.org/x/sys/unix/dev_darwin.go new file mode 100644 index 000000000..8d1dc0fa3 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/dev_darwin.go @@ -0,0 +1,24 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Functions to access/create device major and minor numbers matching the +// encoding used in Darwin's sys/types.h header. + +package unix + +// Major returns the major component of a Darwin device number. +func Major(dev uint64) uint32 { + return uint32((dev >> 24) & 0xff) +} + +// Minor returns the minor component of a Darwin device number. +func Minor(dev uint64) uint32 { + return uint32(dev & 0xffffff) +} + +// Mkdev returns a Darwin device number generated from the given major and minor +// components. +func Mkdev(major, minor uint32) uint64 { + return (uint64(major) << 24) | uint64(minor) +} diff --git a/tests/vendor/golang.org/x/sys/unix/dev_dragonfly.go b/tests/vendor/golang.org/x/sys/unix/dev_dragonfly.go new file mode 100644 index 000000000..8502f202c --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/dev_dragonfly.go @@ -0,0 +1,30 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Functions to access/create device major and minor numbers matching the +// encoding used in Dragonfly's sys/types.h header. +// +// The information below is extracted and adapted from sys/types.h: +// +// Minor gives a cookie instead of an index since in order to avoid changing the +// meanings of bits 0-15 or wasting time and space shifting bits 16-31 for +// devices that don't use them. + +package unix + +// Major returns the major component of a DragonFlyBSD device number. +func Major(dev uint64) uint32 { + return uint32((dev >> 8) & 0xff) +} + +// Minor returns the minor component of a DragonFlyBSD device number. +func Minor(dev uint64) uint32 { + return uint32(dev & 0xffff00ff) +} + +// Mkdev returns a DragonFlyBSD device number generated from the given major and +// minor components. +func Mkdev(major, minor uint32) uint64 { + return (uint64(major) << 8) | uint64(minor) +} diff --git a/tests/vendor/golang.org/x/sys/unix/dev_freebsd.go b/tests/vendor/golang.org/x/sys/unix/dev_freebsd.go new file mode 100644 index 000000000..eba3b4bd3 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/dev_freebsd.go @@ -0,0 +1,30 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Functions to access/create device major and minor numbers matching the +// encoding used in FreeBSD's sys/types.h header. +// +// The information below is extracted and adapted from sys/types.h: +// +// Minor gives a cookie instead of an index since in order to avoid changing the +// meanings of bits 0-15 or wasting time and space shifting bits 16-31 for +// devices that don't use them. + +package unix + +// Major returns the major component of a FreeBSD device number. +func Major(dev uint64) uint32 { + return uint32((dev >> 8) & 0xff) +} + +// Minor returns the minor component of a FreeBSD device number. +func Minor(dev uint64) uint32 { + return uint32(dev & 0xffff00ff) +} + +// Mkdev returns a FreeBSD device number generated from the given major and +// minor components. +func Mkdev(major, minor uint32) uint64 { + return (uint64(major) << 8) | uint64(minor) +} diff --git a/tests/vendor/golang.org/x/sys/unix/dev_linux.go b/tests/vendor/golang.org/x/sys/unix/dev_linux.go new file mode 100644 index 000000000..d165d6f30 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/dev_linux.go @@ -0,0 +1,42 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Functions to access/create device major and minor numbers matching the +// encoding used by the Linux kernel and glibc. +// +// The information below is extracted and adapted from bits/sysmacros.h in the +// glibc sources: +// +// dev_t in glibc is 64-bit, with 32-bit major and minor numbers. glibc's +// default encoding is MMMM Mmmm mmmM MMmm, where M is a hex digit of the major +// number and m is a hex digit of the minor number. This is backward compatible +// with legacy systems where dev_t is 16 bits wide, encoded as MMmm. It is also +// backward compatible with the Linux kernel, which for some architectures uses +// 32-bit dev_t, encoded as mmmM MMmm. + +package unix + +// Major returns the major component of a Linux device number. +func Major(dev uint64) uint32 { + major := uint32((dev & 0x00000000000fff00) >> 8) + major |= uint32((dev & 0xfffff00000000000) >> 32) + return major +} + +// Minor returns the minor component of a Linux device number. +func Minor(dev uint64) uint32 { + minor := uint32((dev & 0x00000000000000ff) >> 0) + minor |= uint32((dev & 0x00000ffffff00000) >> 12) + return minor +} + +// Mkdev returns a Linux device number generated from the given major and minor +// components. +func Mkdev(major, minor uint32) uint64 { + dev := (uint64(major) & 0x00000fff) << 8 + dev |= (uint64(major) & 0xfffff000) << 32 + dev |= (uint64(minor) & 0x000000ff) << 0 + dev |= (uint64(minor) & 0xffffff00) << 12 + return dev +} diff --git a/tests/vendor/golang.org/x/sys/unix/dev_netbsd.go b/tests/vendor/golang.org/x/sys/unix/dev_netbsd.go new file mode 100644 index 000000000..b4a203d0c --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/dev_netbsd.go @@ -0,0 +1,29 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Functions to access/create device major and minor numbers matching the +// encoding used in NetBSD's sys/types.h header. + +package unix + +// Major returns the major component of a NetBSD device number. +func Major(dev uint64) uint32 { + return uint32((dev & 0x000fff00) >> 8) +} + +// Minor returns the minor component of a NetBSD device number. +func Minor(dev uint64) uint32 { + minor := uint32((dev & 0x000000ff) >> 0) + minor |= uint32((dev & 0xfff00000) >> 12) + return minor +} + +// Mkdev returns a NetBSD device number generated from the given major and minor +// components. +func Mkdev(major, minor uint32) uint64 { + dev := (uint64(major) << 8) & 0x000fff00 + dev |= (uint64(minor) << 12) & 0xfff00000 + dev |= (uint64(minor) << 0) & 0x000000ff + return dev +} diff --git a/tests/vendor/golang.org/x/sys/unix/dev_openbsd.go b/tests/vendor/golang.org/x/sys/unix/dev_openbsd.go new file mode 100644 index 000000000..f3430c42f --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/dev_openbsd.go @@ -0,0 +1,29 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Functions to access/create device major and minor numbers matching the +// encoding used in OpenBSD's sys/types.h header. + +package unix + +// Major returns the major component of an OpenBSD device number. +func Major(dev uint64) uint32 { + return uint32((dev & 0x0000ff00) >> 8) +} + +// Minor returns the minor component of an OpenBSD device number. +func Minor(dev uint64) uint32 { + minor := uint32((dev & 0x000000ff) >> 0) + minor |= uint32((dev & 0xffff0000) >> 8) + return minor +} + +// Mkdev returns an OpenBSD device number generated from the given major and minor +// components. +func Mkdev(major, minor uint32) uint64 { + dev := (uint64(major) << 8) & 0x0000ff00 + dev |= (uint64(minor) << 8) & 0xffff0000 + dev |= (uint64(minor) << 0) & 0x000000ff + return dev +} diff --git a/tests/vendor/golang.org/x/sys/unix/dev_zos.go b/tests/vendor/golang.org/x/sys/unix/dev_zos.go new file mode 100644 index 000000000..bb6a64fe9 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/dev_zos.go @@ -0,0 +1,28 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos && s390x + +// Functions to access/create device major and minor numbers matching the +// encoding used by z/OS. +// +// The information below is extracted and adapted from <sys/stat.h> macros. + +package unix + +// Major returns the major component of a z/OS device number. +func Major(dev uint64) uint32 { + return uint32((dev >> 16) & 0x0000FFFF) +} + +// Minor returns the minor component of a z/OS device number. +func Minor(dev uint64) uint32 { + return uint32(dev & 0x0000FFFF) +} + +// Mkdev returns a z/OS device number generated from the given major and minor +// components. +func Mkdev(major, minor uint32) uint64 { + return (uint64(major) << 16) | uint64(minor) +} diff --git a/tests/vendor/golang.org/x/sys/unix/dirent.go b/tests/vendor/golang.org/x/sys/unix/dirent.go new file mode 100644 index 000000000..1ebf11782 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/dirent.go @@ -0,0 +1,102 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos + +package unix + +import "unsafe" + +// readInt returns the size-bytes unsigned integer in native byte order at offset off. +func readInt(b []byte, off, size uintptr) (u uint64, ok bool) { + if len(b) < int(off+size) { + return 0, false + } + if isBigEndian { + return readIntBE(b[off:], size), true + } + return readIntLE(b[off:], size), true +} + +func readIntBE(b []byte, size uintptr) uint64 { + switch size { + case 1: + return uint64(b[0]) + case 2: + _ = b[1] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[1]) | uint64(b[0])<<8 + case 4: + _ = b[3] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[3]) | uint64(b[2])<<8 | uint64(b[1])<<16 | uint64(b[0])<<24 + case 8: + _ = b[7] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[7]) | uint64(b[6])<<8 | uint64(b[5])<<16 | uint64(b[4])<<24 | + uint64(b[3])<<32 | uint64(b[2])<<40 | uint64(b[1])<<48 | uint64(b[0])<<56 + default: + panic("syscall: readInt with unsupported size") + } +} + +func readIntLE(b []byte, size uintptr) uint64 { + switch size { + case 1: + return uint64(b[0]) + case 2: + _ = b[1] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[0]) | uint64(b[1])<<8 + case 4: + _ = b[3] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 + case 8: + _ = b[7] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | + uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56 + default: + panic("syscall: readInt with unsupported size") + } +} + +// ParseDirent parses up to max directory entries in buf, +// appending the names to names. It returns the number of +// bytes consumed from buf, the number of entries added +// to names, and the new names slice. +func ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) { + origlen := len(buf) + count = 0 + for max != 0 && len(buf) > 0 { + reclen, ok := direntReclen(buf) + if !ok || reclen > uint64(len(buf)) { + return origlen, count, names + } + rec := buf[:reclen] + buf = buf[reclen:] + ino, ok := direntIno(rec) + if !ok { + break + } + if ino == 0 { // File absent in directory. + continue + } + const namoff = uint64(unsafe.Offsetof(Dirent{}.Name)) + namlen, ok := direntNamlen(rec) + if !ok || namoff+namlen > uint64(len(rec)) { + break + } + name := rec[namoff : namoff+namlen] + for i, c := range name { + if c == 0 { + name = name[:i] + break + } + } + // Check for useless names before allocating a string. + if string(name) == "." || string(name) == ".." { + continue + } + max-- + count++ + names = append(names, string(name)) + } + return origlen - len(buf), count, names +} diff --git a/tests/vendor/golang.org/x/sys/unix/endian_big.go b/tests/vendor/golang.org/x/sys/unix/endian_big.go new file mode 100644 index 000000000..1095fd31d --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/endian_big.go @@ -0,0 +1,9 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// +//go:build armbe || arm64be || m68k || mips || mips64 || mips64p32 || ppc || ppc64 || s390 || s390x || shbe || sparc || sparc64 + +package unix + +const isBigEndian = true diff --git a/tests/vendor/golang.org/x/sys/unix/endian_little.go b/tests/vendor/golang.org/x/sys/unix/endian_little.go new file mode 100644 index 000000000..b9f0e277b --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/endian_little.go @@ -0,0 +1,9 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// +//go:build 386 || amd64 || amd64p32 || alpha || arm || arm64 || loong64 || mipsle || mips64le || mips64p32le || nios2 || ppc64le || riscv || riscv64 || sh + +package unix + +const isBigEndian = false diff --git a/tests/vendor/golang.org/x/sys/unix/env_unix.go b/tests/vendor/golang.org/x/sys/unix/env_unix.go new file mode 100644 index 000000000..a96da71f4 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/env_unix.go @@ -0,0 +1,31 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos + +// Unix environment variables. + +package unix + +import "syscall" + +func Getenv(key string) (value string, found bool) { + return syscall.Getenv(key) +} + +func Setenv(key, value string) error { + return syscall.Setenv(key, value) +} + +func Clearenv() { + syscall.Clearenv() +} + +func Environ() []string { + return syscall.Environ() +} + +func Unsetenv(key string) error { + return syscall.Unsetenv(key) +} diff --git a/tests/vendor/golang.org/x/sys/unix/fcntl.go b/tests/vendor/golang.org/x/sys/unix/fcntl.go new file mode 100644 index 000000000..6200876fb --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/fcntl.go @@ -0,0 +1,36 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build dragonfly || freebsd || linux || netbsd + +package unix + +import "unsafe" + +// fcntl64Syscall is usually SYS_FCNTL, but is overridden on 32-bit Linux +// systems by fcntl_linux_32bit.go to be SYS_FCNTL64. +var fcntl64Syscall uintptr = SYS_FCNTL + +func fcntl(fd int, cmd, arg int) (int, error) { + valptr, _, errno := Syscall(fcntl64Syscall, uintptr(fd), uintptr(cmd), uintptr(arg)) + var err error + if errno != 0 { + err = errno + } + return int(valptr), err +} + +// FcntlInt performs a fcntl syscall on fd with the provided command and argument. +func FcntlInt(fd uintptr, cmd, arg int) (int, error) { + return fcntl(int(fd), cmd, arg) +} + +// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command. +func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error { + _, _, errno := Syscall(fcntl64Syscall, fd, uintptr(cmd), uintptr(unsafe.Pointer(lk))) + if errno == 0 { + return nil + } + return errno +} diff --git a/tests/vendor/golang.org/x/sys/unix/fcntl_darwin.go b/tests/vendor/golang.org/x/sys/unix/fcntl_darwin.go new file mode 100644 index 000000000..a9911c7c1 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/fcntl_darwin.go @@ -0,0 +1,24 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package unix + +import "unsafe" + +// FcntlInt performs a fcntl syscall on fd with the provided command and argument. +func FcntlInt(fd uintptr, cmd, arg int) (int, error) { + return fcntl(int(fd), cmd, arg) +} + +// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command. +func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error { + _, err := fcntl(int(fd), cmd, int(uintptr(unsafe.Pointer(lk)))) + return err +} + +// FcntlFstore performs a fcntl syscall for the F_PREALLOCATE command. +func FcntlFstore(fd uintptr, cmd int, fstore *Fstore_t) error { + _, err := fcntl(int(fd), cmd, int(uintptr(unsafe.Pointer(fstore)))) + return err +} diff --git a/tests/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go b/tests/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go new file mode 100644 index 000000000..13b4acd5c --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go @@ -0,0 +1,13 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (linux && 386) || (linux && arm) || (linux && mips) || (linux && mipsle) || (linux && ppc) + +package unix + +func init() { + // On 32-bit Linux systems, the fcntl syscall that matches Go's + // Flock_t type is SYS_FCNTL64, not SYS_FCNTL. + fcntl64Syscall = SYS_FCNTL64 +} diff --git a/tests/vendor/golang.org/x/sys/unix/fdset.go b/tests/vendor/golang.org/x/sys/unix/fdset.go new file mode 100644 index 000000000..9e83d18cd --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/fdset.go @@ -0,0 +1,29 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos + +package unix + +// Set adds fd to the set fds. +func (fds *FdSet) Set(fd int) { + fds.Bits[fd/NFDBITS] |= (1 << (uintptr(fd) % NFDBITS)) +} + +// Clear removes fd from the set fds. +func (fds *FdSet) Clear(fd int) { + fds.Bits[fd/NFDBITS] &^= (1 << (uintptr(fd) % NFDBITS)) +} + +// IsSet returns whether fd is in the set fds. +func (fds *FdSet) IsSet(fd int) bool { + return fds.Bits[fd/NFDBITS]&(1<<(uintptr(fd)%NFDBITS)) != 0 +} + +// Zero clears the set fds. +func (fds *FdSet) Zero() { + for i := range fds.Bits { + fds.Bits[i] = 0 + } +} diff --git a/tests/vendor/golang.org/x/sys/unix/gccgo.go b/tests/vendor/golang.org/x/sys/unix/gccgo.go new file mode 100644 index 000000000..aca5721dd --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/gccgo.go @@ -0,0 +1,59 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gccgo && !aix && !hurd + +package unix + +import "syscall" + +// We can't use the gc-syntax .s files for gccgo. On the plus side +// much of the functionality can be written directly in Go. + +func realSyscallNoError(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r uintptr) + +func realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r, errno uintptr) + +func SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) { + syscall.Entersyscall() + r := realSyscallNoError(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0) + syscall.Exitsyscall() + return r, 0 +} + +func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) { + syscall.Entersyscall() + r, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0) + syscall.Exitsyscall() + return r, 0, syscall.Errno(errno) +} + +func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) { + syscall.Entersyscall() + r, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, 0, 0, 0) + syscall.Exitsyscall() + return r, 0, syscall.Errno(errno) +} + +func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) { + syscall.Entersyscall() + r, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9) + syscall.Exitsyscall() + return r, 0, syscall.Errno(errno) +} + +func RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) { + r := realSyscallNoError(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0) + return r, 0 +} + +func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) { + r, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0) + return r, 0, syscall.Errno(errno) +} + +func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) { + r, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, 0, 0, 0) + return r, 0, syscall.Errno(errno) +} diff --git a/tests/vendor/golang.org/x/sys/unix/gccgo_c.c b/tests/vendor/golang.org/x/sys/unix/gccgo_c.c new file mode 100644 index 000000000..d468b7b47 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/gccgo_c.c @@ -0,0 +1,44 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gccgo && !aix && !hurd + +#include <errno.h> +#include <stdint.h> +#include <unistd.h> + +#define _STRINGIFY2_(x) #x +#define _STRINGIFY_(x) _STRINGIFY2_(x) +#define GOSYM_PREFIX _STRINGIFY_(__USER_LABEL_PREFIX__) + +// Call syscall from C code because the gccgo support for calling from +// Go to C does not support varargs functions. + +struct ret { + uintptr_t r; + uintptr_t err; +}; + +struct ret gccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9) + __asm__(GOSYM_PREFIX GOPKGPATH ".realSyscall"); + +struct ret +gccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9) +{ + struct ret r; + + errno = 0; + r.r = syscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9); + r.err = errno; + return r; +} + +uintptr_t gccgoRealSyscallNoError(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9) + __asm__(GOSYM_PREFIX GOPKGPATH ".realSyscallNoError"); + +uintptr_t +gccgoRealSyscallNoError(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9) +{ + return syscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9); +} diff --git a/tests/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go b/tests/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go new file mode 100644 index 000000000..972d61bd7 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go @@ -0,0 +1,20 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gccgo && linux && amd64 + +package unix + +import "syscall" + +//extern gettimeofday +func realGettimeofday(*Timeval, *byte) int32 + +func gettimeofday(tv *Timeval) (err syscall.Errno) { + r := realGettimeofday(tv, nil) + if r < 0 { + return syscall.GetErrno() + } + return 0 +} diff --git a/tests/vendor/golang.org/x/sys/unix/ifreq_linux.go b/tests/vendor/golang.org/x/sys/unix/ifreq_linux.go new file mode 100644 index 000000000..848840ae4 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ifreq_linux.go @@ -0,0 +1,141 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux + +package unix + +import ( + "unsafe" +) + +// Helpers for dealing with ifreq since it contains a union and thus requires a +// lot of unsafe.Pointer casts to use properly. + +// An Ifreq is a type-safe wrapper around the raw ifreq struct. An Ifreq +// contains an interface name and a union of arbitrary data which can be +// accessed using the Ifreq's methods. To create an Ifreq, use the NewIfreq +// function. +// +// Use the Name method to access the stored interface name. The union data +// fields can be get and set using the following methods: +// - Uint16/SetUint16: flags +// - Uint32/SetUint32: ifindex, metric, mtu +type Ifreq struct{ raw ifreq } + +// NewIfreq creates an Ifreq with the input network interface name after +// validating the name does not exceed IFNAMSIZ-1 (trailing NULL required) +// bytes. +func NewIfreq(name string) (*Ifreq, error) { + // Leave room for terminating NULL byte. + if len(name) >= IFNAMSIZ { + return nil, EINVAL + } + + var ifr ifreq + copy(ifr.Ifrn[:], name) + + return &Ifreq{raw: ifr}, nil +} + +// TODO(mdlayher): get/set methods for hardware address sockaddr, char array, etc. + +// Name returns the interface name associated with the Ifreq. +func (ifr *Ifreq) Name() string { + return ByteSliceToString(ifr.raw.Ifrn[:]) +} + +// According to netdevice(7), only AF_INET addresses are returned for numerous +// sockaddr ioctls. For convenience, we expose these as Inet4Addr since the Port +// field and other data is always empty. + +// Inet4Addr returns the Ifreq union data from an embedded sockaddr as a C +// in_addr/Go []byte (4-byte IPv4 address) value. If the sockaddr family is not +// AF_INET, an error is returned. +func (ifr *Ifreq) Inet4Addr() ([]byte, error) { + raw := *(*RawSockaddrInet4)(unsafe.Pointer(&ifr.raw.Ifru[:SizeofSockaddrInet4][0])) + if raw.Family != AF_INET { + // Cannot safely interpret raw.Addr bytes as an IPv4 address. + return nil, EINVAL + } + + return raw.Addr[:], nil +} + +// SetInet4Addr sets a C in_addr/Go []byte (4-byte IPv4 address) value in an +// embedded sockaddr within the Ifreq's union data. v must be 4 bytes in length +// or an error will be returned. +func (ifr *Ifreq) SetInet4Addr(v []byte) error { + if len(v) != 4 { + return EINVAL + } + + var addr [4]byte + copy(addr[:], v) + + ifr.clear() + *(*RawSockaddrInet4)( + unsafe.Pointer(&ifr.raw.Ifru[:SizeofSockaddrInet4][0]), + ) = RawSockaddrInet4{ + // Always set IP family as ioctls would require it anyway. + Family: AF_INET, + Addr: addr, + } + + return nil +} + +// Uint16 returns the Ifreq union data as a C short/Go uint16 value. +func (ifr *Ifreq) Uint16() uint16 { + return *(*uint16)(unsafe.Pointer(&ifr.raw.Ifru[:2][0])) +} + +// SetUint16 sets a C short/Go uint16 value as the Ifreq's union data. +func (ifr *Ifreq) SetUint16(v uint16) { + ifr.clear() + *(*uint16)(unsafe.Pointer(&ifr.raw.Ifru[:2][0])) = v +} + +// Uint32 returns the Ifreq union data as a C int/Go uint32 value. +func (ifr *Ifreq) Uint32() uint32 { + return *(*uint32)(unsafe.Pointer(&ifr.raw.Ifru[:4][0])) +} + +// SetUint32 sets a C int/Go uint32 value as the Ifreq's union data. +func (ifr *Ifreq) SetUint32(v uint32) { + ifr.clear() + *(*uint32)(unsafe.Pointer(&ifr.raw.Ifru[:4][0])) = v +} + +// clear zeroes the ifreq's union field to prevent trailing garbage data from +// being sent to the kernel if an ifreq is reused. +func (ifr *Ifreq) clear() { + for i := range ifr.raw.Ifru { + ifr.raw.Ifru[i] = 0 + } +} + +// TODO(mdlayher): export as IfreqData? For now we can provide helpers such as +// IoctlGetEthtoolDrvinfo which use these APIs under the hood. + +// An ifreqData is an Ifreq which carries pointer data. To produce an ifreqData, +// use the Ifreq.withData method. +type ifreqData struct { + name [IFNAMSIZ]byte + // A type separate from ifreq is required in order to comply with the + // unsafe.Pointer rules since the "pointer-ness" of data would not be + // preserved if it were cast into the byte array of a raw ifreq. + data unsafe.Pointer + // Pad to the same size as ifreq. + _ [len(ifreq{}.Ifru) - SizeofPtr]byte +} + +// withData produces an ifreqData with the pointer p set for ioctls which require +// arbitrary pointer data. +func (ifr Ifreq) withData(p unsafe.Pointer) ifreqData { + return ifreqData{ + name: ifr.raw.Ifrn, + data: p, + } +} diff --git a/tests/vendor/golang.org/x/sys/unix/ioctl_linux.go b/tests/vendor/golang.org/x/sys/unix/ioctl_linux.go new file mode 100644 index 000000000..7ca4fa12a --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ioctl_linux.go @@ -0,0 +1,334 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package unix + +import "unsafe" + +// IoctlRetInt performs an ioctl operation specified by req on a device +// associated with opened file descriptor fd, and returns a non-negative +// integer that is returned by the ioctl syscall. +func IoctlRetInt(fd int, req uint) (int, error) { + ret, _, err := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), 0) + if err != 0 { + return 0, err + } + return int(ret), nil +} + +func IoctlGetUint32(fd int, req uint) (uint32, error) { + var value uint32 + err := ioctlPtr(fd, req, unsafe.Pointer(&value)) + return value, err +} + +func IoctlGetRTCTime(fd int) (*RTCTime, error) { + var value RTCTime + err := ioctlPtr(fd, RTC_RD_TIME, unsafe.Pointer(&value)) + return &value, err +} + +func IoctlSetRTCTime(fd int, value *RTCTime) error { + return ioctlPtr(fd, RTC_SET_TIME, unsafe.Pointer(value)) +} + +func IoctlGetRTCWkAlrm(fd int) (*RTCWkAlrm, error) { + var value RTCWkAlrm + err := ioctlPtr(fd, RTC_WKALM_RD, unsafe.Pointer(&value)) + return &value, err +} + +func IoctlSetRTCWkAlrm(fd int, value *RTCWkAlrm) error { + return ioctlPtr(fd, RTC_WKALM_SET, unsafe.Pointer(value)) +} + +// IoctlGetEthtoolDrvinfo fetches ethtool driver information for the network +// device specified by ifname. +func IoctlGetEthtoolDrvinfo(fd int, ifname string) (*EthtoolDrvinfo, error) { + ifr, err := NewIfreq(ifname) + if err != nil { + return nil, err + } + + value := EthtoolDrvinfo{Cmd: ETHTOOL_GDRVINFO} + ifrd := ifr.withData(unsafe.Pointer(&value)) + + err = ioctlIfreqData(fd, SIOCETHTOOL, &ifrd) + return &value, err +} + +// IoctlGetEthtoolTsInfo fetches ethtool timestamping and PHC +// association for the network device specified by ifname. +func IoctlGetEthtoolTsInfo(fd int, ifname string) (*EthtoolTsInfo, error) { + ifr, err := NewIfreq(ifname) + if err != nil { + return nil, err + } + + value := EthtoolTsInfo{Cmd: ETHTOOL_GET_TS_INFO} + ifrd := ifr.withData(unsafe.Pointer(&value)) + + err = ioctlIfreqData(fd, SIOCETHTOOL, &ifrd) + return &value, err +} + +// IoctlGetHwTstamp retrieves the hardware timestamping configuration +// for the network device specified by ifname. +func IoctlGetHwTstamp(fd int, ifname string) (*HwTstampConfig, error) { + ifr, err := NewIfreq(ifname) + if err != nil { + return nil, err + } + + value := HwTstampConfig{} + ifrd := ifr.withData(unsafe.Pointer(&value)) + + err = ioctlIfreqData(fd, SIOCGHWTSTAMP, &ifrd) + return &value, err +} + +// IoctlSetHwTstamp updates the hardware timestamping configuration for +// the network device specified by ifname. +func IoctlSetHwTstamp(fd int, ifname string, cfg *HwTstampConfig) error { + ifr, err := NewIfreq(ifname) + if err != nil { + return err + } + ifrd := ifr.withData(unsafe.Pointer(cfg)) + return ioctlIfreqData(fd, SIOCSHWTSTAMP, &ifrd) +} + +// FdToClockID derives the clock ID from the file descriptor number +// - see clock_gettime(3), FD_TO_CLOCKID macros. The resulting ID is +// suitable for system calls like ClockGettime. +func FdToClockID(fd int) int32 { return int32((int(^fd) << 3) | 3) } + +// IoctlPtpClockGetcaps returns the description of a given PTP device. +func IoctlPtpClockGetcaps(fd int) (*PtpClockCaps, error) { + var value PtpClockCaps + err := ioctlPtr(fd, PTP_CLOCK_GETCAPS2, unsafe.Pointer(&value)) + return &value, err +} + +// IoctlPtpSysOffsetPrecise returns a description of the clock +// offset compared to the system clock. +func IoctlPtpSysOffsetPrecise(fd int) (*PtpSysOffsetPrecise, error) { + var value PtpSysOffsetPrecise + err := ioctlPtr(fd, PTP_SYS_OFFSET_PRECISE2, unsafe.Pointer(&value)) + return &value, err +} + +// IoctlPtpSysOffsetExtended returns an extended description of the +// clock offset compared to the system clock. The samples parameter +// specifies the desired number of measurements. +func IoctlPtpSysOffsetExtended(fd int, samples uint) (*PtpSysOffsetExtended, error) { + value := PtpSysOffsetExtended{Samples: uint32(samples)} + err := ioctlPtr(fd, PTP_SYS_OFFSET_EXTENDED2, unsafe.Pointer(&value)) + return &value, err +} + +// IoctlPtpPinGetfunc returns the configuration of the specified +// I/O pin on given PTP device. +func IoctlPtpPinGetfunc(fd int, index uint) (*PtpPinDesc, error) { + value := PtpPinDesc{Index: uint32(index)} + err := ioctlPtr(fd, PTP_PIN_GETFUNC2, unsafe.Pointer(&value)) + return &value, err +} + +// IoctlPtpPinSetfunc updates configuration of the specified PTP +// I/O pin. +func IoctlPtpPinSetfunc(fd int, pd *PtpPinDesc) error { + return ioctlPtr(fd, PTP_PIN_SETFUNC2, unsafe.Pointer(pd)) +} + +// IoctlPtpPeroutRequest configures the periodic output mode of the +// PTP I/O pins. +func IoctlPtpPeroutRequest(fd int, r *PtpPeroutRequest) error { + return ioctlPtr(fd, PTP_PEROUT_REQUEST2, unsafe.Pointer(r)) +} + +// IoctlPtpExttsRequest configures the external timestamping mode +// of the PTP I/O pins. +func IoctlPtpExttsRequest(fd int, r *PtpExttsRequest) error { + return ioctlPtr(fd, PTP_EXTTS_REQUEST2, unsafe.Pointer(r)) +} + +// IoctlGetWatchdogInfo fetches information about a watchdog device from the +// Linux watchdog API. For more information, see: +// https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html. +func IoctlGetWatchdogInfo(fd int) (*WatchdogInfo, error) { + var value WatchdogInfo + err := ioctlPtr(fd, WDIOC_GETSUPPORT, unsafe.Pointer(&value)) + return &value, err +} + +// IoctlWatchdogKeepalive issues a keepalive ioctl to a watchdog device. For +// more information, see: +// https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html. +func IoctlWatchdogKeepalive(fd int) error { + // arg is ignored and not a pointer, so ioctl is fine instead of ioctlPtr. + return ioctl(fd, WDIOC_KEEPALIVE, 0) +} + +// IoctlFileCloneRange performs an FICLONERANGE ioctl operation to clone the +// range of data conveyed in value to the file associated with the file +// descriptor destFd. See the ioctl_ficlonerange(2) man page for details. +func IoctlFileCloneRange(destFd int, value *FileCloneRange) error { + return ioctlPtr(destFd, FICLONERANGE, unsafe.Pointer(value)) +} + +// IoctlFileClone performs an FICLONE ioctl operation to clone the entire file +// associated with the file description srcFd to the file associated with the +// file descriptor destFd. See the ioctl_ficlone(2) man page for details. +func IoctlFileClone(destFd, srcFd int) error { + return ioctl(destFd, FICLONE, uintptr(srcFd)) +} + +type FileDedupeRange struct { + Src_offset uint64 + Src_length uint64 + Reserved1 uint16 + Reserved2 uint32 + Info []FileDedupeRangeInfo +} + +type FileDedupeRangeInfo struct { + Dest_fd int64 + Dest_offset uint64 + Bytes_deduped uint64 + Status int32 + Reserved uint32 +} + +// IoctlFileDedupeRange performs an FIDEDUPERANGE ioctl operation to share the +// range of data conveyed in value from the file associated with the file +// descriptor srcFd to the value.Info destinations. See the +// ioctl_fideduperange(2) man page for details. +func IoctlFileDedupeRange(srcFd int, value *FileDedupeRange) error { + buf := make([]byte, SizeofRawFileDedupeRange+ + len(value.Info)*SizeofRawFileDedupeRangeInfo) + rawrange := (*RawFileDedupeRange)(unsafe.Pointer(&buf[0])) + rawrange.Src_offset = value.Src_offset + rawrange.Src_length = value.Src_length + rawrange.Dest_count = uint16(len(value.Info)) + rawrange.Reserved1 = value.Reserved1 + rawrange.Reserved2 = value.Reserved2 + + for i := range value.Info { + rawinfo := (*RawFileDedupeRangeInfo)(unsafe.Pointer( + uintptr(unsafe.Pointer(&buf[0])) + uintptr(SizeofRawFileDedupeRange) + + uintptr(i*SizeofRawFileDedupeRangeInfo))) + rawinfo.Dest_fd = value.Info[i].Dest_fd + rawinfo.Dest_offset = value.Info[i].Dest_offset + rawinfo.Bytes_deduped = value.Info[i].Bytes_deduped + rawinfo.Status = value.Info[i].Status + rawinfo.Reserved = value.Info[i].Reserved + } + + err := ioctlPtr(srcFd, FIDEDUPERANGE, unsafe.Pointer(&buf[0])) + + // Output + for i := range value.Info { + rawinfo := (*RawFileDedupeRangeInfo)(unsafe.Pointer( + uintptr(unsafe.Pointer(&buf[0])) + uintptr(SizeofRawFileDedupeRange) + + uintptr(i*SizeofRawFileDedupeRangeInfo))) + value.Info[i].Dest_fd = rawinfo.Dest_fd + value.Info[i].Dest_offset = rawinfo.Dest_offset + value.Info[i].Bytes_deduped = rawinfo.Bytes_deduped + value.Info[i].Status = rawinfo.Status + value.Info[i].Reserved = rawinfo.Reserved + } + + return err +} + +func IoctlHIDGetDesc(fd int, value *HIDRawReportDescriptor) error { + return ioctlPtr(fd, HIDIOCGRDESC, unsafe.Pointer(value)) +} + +func IoctlHIDGetRawInfo(fd int) (*HIDRawDevInfo, error) { + var value HIDRawDevInfo + err := ioctlPtr(fd, HIDIOCGRAWINFO, unsafe.Pointer(&value)) + return &value, err +} + +func IoctlHIDGetRawName(fd int) (string, error) { + var value [_HIDIOCGRAWNAME_LEN]byte + err := ioctlPtr(fd, _HIDIOCGRAWNAME, unsafe.Pointer(&value[0])) + return ByteSliceToString(value[:]), err +} + +func IoctlHIDGetRawPhys(fd int) (string, error) { + var value [_HIDIOCGRAWPHYS_LEN]byte + err := ioctlPtr(fd, _HIDIOCGRAWPHYS, unsafe.Pointer(&value[0])) + return ByteSliceToString(value[:]), err +} + +func IoctlHIDGetRawUniq(fd int) (string, error) { + var value [_HIDIOCGRAWUNIQ_LEN]byte + err := ioctlPtr(fd, _HIDIOCGRAWUNIQ, unsafe.Pointer(&value[0])) + return ByteSliceToString(value[:]), err +} + +// IoctlIfreq performs an ioctl using an Ifreq structure for input and/or +// output. See the netdevice(7) man page for details. +func IoctlIfreq(fd int, req uint, value *Ifreq) error { + // It is possible we will add more fields to *Ifreq itself later to prevent + // misuse, so pass the raw *ifreq directly. + return ioctlPtr(fd, req, unsafe.Pointer(&value.raw)) +} + +// TODO(mdlayher): export if and when IfreqData is exported. + +// ioctlIfreqData performs an ioctl using an ifreqData structure for input +// and/or output. See the netdevice(7) man page for details. +func ioctlIfreqData(fd int, req uint, value *ifreqData) error { + // The memory layout of IfreqData (type-safe) and ifreq (not type-safe) are + // identical so pass *IfreqData directly. + return ioctlPtr(fd, req, unsafe.Pointer(value)) +} + +// IoctlKCMClone attaches a new file descriptor to a multiplexor by cloning an +// existing KCM socket, returning a structure containing the file descriptor of +// the new socket. +func IoctlKCMClone(fd int) (*KCMClone, error) { + var info KCMClone + if err := ioctlPtr(fd, SIOCKCMCLONE, unsafe.Pointer(&info)); err != nil { + return nil, err + } + + return &info, nil +} + +// IoctlKCMAttach attaches a TCP socket and associated BPF program file +// descriptor to a multiplexor. +func IoctlKCMAttach(fd int, info KCMAttach) error { + return ioctlPtr(fd, SIOCKCMATTACH, unsafe.Pointer(&info)) +} + +// IoctlKCMUnattach unattaches a TCP socket file descriptor from a multiplexor. +func IoctlKCMUnattach(fd int, info KCMUnattach) error { + return ioctlPtr(fd, SIOCKCMUNATTACH, unsafe.Pointer(&info)) +} + +// IoctlLoopGetStatus64 gets the status of the loop device associated with the +// file descriptor fd using the LOOP_GET_STATUS64 operation. +func IoctlLoopGetStatus64(fd int) (*LoopInfo64, error) { + var value LoopInfo64 + if err := ioctlPtr(fd, LOOP_GET_STATUS64, unsafe.Pointer(&value)); err != nil { + return nil, err + } + return &value, nil +} + +// IoctlLoopSetStatus64 sets the status of the loop device associated with the +// file descriptor fd using the LOOP_SET_STATUS64 operation. +func IoctlLoopSetStatus64(fd int, value *LoopInfo64) error { + return ioctlPtr(fd, LOOP_SET_STATUS64, unsafe.Pointer(value)) +} + +// IoctlLoopConfigure configures all loop device parameters in a single step +func IoctlLoopConfigure(fd int, value *LoopConfig) error { + return ioctlPtr(fd, LOOP_CONFIGURE, unsafe.Pointer(value)) +} diff --git a/tests/vendor/golang.org/x/sys/unix/ioctl_signed.go b/tests/vendor/golang.org/x/sys/unix/ioctl_signed.go new file mode 100644 index 000000000..5b0759bd8 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ioctl_signed.go @@ -0,0 +1,69 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix || solaris + +package unix + +import ( + "unsafe" +) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req int, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +// IoctlSetPointerInt performs an ioctl operation which sets an +// integer value on fd, using the specified request number. The ioctl +// argument is called with a pointer to the integer value, rather than +// passing the integer value directly. +func IoctlSetPointerInt(fd int, req int, value int) error { + v := int32(value) + return ioctlPtr(fd, req, unsafe.Pointer(&v)) +} + +// IoctlSetWinsize performs an ioctl on fd with a *Winsize argument. +// +// To change fd's window size, the req argument should be TIOCSWINSZ. +func IoctlSetWinsize(fd int, req int, value *Winsize) error { + // TODO: if we get the chance, remove the req parameter and + // hardcode TIOCSWINSZ. + return ioctlPtr(fd, req, unsafe.Pointer(value)) +} + +// IoctlSetTermios performs an ioctl on fd with a *Termios. +// +// The req value will usually be TCSETA or TIOCSETA. +func IoctlSetTermios(fd int, req int, value *Termios) error { + // TODO: if we get the chance, remove the req parameter. + return ioctlPtr(fd, req, unsafe.Pointer(value)) +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +// +// A few ioctl requests use the return value as an output parameter; +// for those, IoctlRetInt should be used instead of this function. +func IoctlGetInt(fd int, req int) (int, error) { + var value int + err := ioctlPtr(fd, req, unsafe.Pointer(&value)) + return value, err +} + +func IoctlGetWinsize(fd int, req int) (*Winsize, error) { + var value Winsize + err := ioctlPtr(fd, req, unsafe.Pointer(&value)) + return &value, err +} + +func IoctlGetTermios(fd int, req int) (*Termios, error) { + var value Termios + err := ioctlPtr(fd, req, unsafe.Pointer(&value)) + return &value, err +} diff --git a/tests/vendor/golang.org/x/sys/unix/ioctl_unsigned.go b/tests/vendor/golang.org/x/sys/unix/ioctl_unsigned.go new file mode 100644 index 000000000..20f470b9d --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ioctl_unsigned.go @@ -0,0 +1,69 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build darwin || dragonfly || freebsd || hurd || linux || netbsd || openbsd + +package unix + +import ( + "unsafe" +) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +// IoctlSetPointerInt performs an ioctl operation which sets an +// integer value on fd, using the specified request number. The ioctl +// argument is called with a pointer to the integer value, rather than +// passing the integer value directly. +func IoctlSetPointerInt(fd int, req uint, value int) error { + v := int32(value) + return ioctlPtr(fd, req, unsafe.Pointer(&v)) +} + +// IoctlSetWinsize performs an ioctl on fd with a *Winsize argument. +// +// To change fd's window size, the req argument should be TIOCSWINSZ. +func IoctlSetWinsize(fd int, req uint, value *Winsize) error { + // TODO: if we get the chance, remove the req parameter and + // hardcode TIOCSWINSZ. + return ioctlPtr(fd, req, unsafe.Pointer(value)) +} + +// IoctlSetTermios performs an ioctl on fd with a *Termios. +// +// The req value will usually be TCSETA or TIOCSETA. +func IoctlSetTermios(fd int, req uint, value *Termios) error { + // TODO: if we get the chance, remove the req parameter. + return ioctlPtr(fd, req, unsafe.Pointer(value)) +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +// +// A few ioctl requests use the return value as an output parameter; +// for those, IoctlRetInt should be used instead of this function. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctlPtr(fd, req, unsafe.Pointer(&value)) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctlPtr(fd, req, unsafe.Pointer(&value)) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctlPtr(fd, req, unsafe.Pointer(&value)) + return &value, err +} diff --git a/tests/vendor/golang.org/x/sys/unix/ioctl_zos.go b/tests/vendor/golang.org/x/sys/unix/ioctl_zos.go new file mode 100644 index 000000000..c8b2a750f --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ioctl_zos.go @@ -0,0 +1,71 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos && s390x + +package unix + +import ( + "runtime" + "unsafe" +) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req int, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +// IoctlSetWinsize performs an ioctl on fd with a *Winsize argument. +// +// To change fd's window size, the req argument should be TIOCSWINSZ. +func IoctlSetWinsize(fd int, req int, value *Winsize) error { + // TODO: if we get the chance, remove the req parameter and + // hardcode TIOCSWINSZ. + return ioctlPtr(fd, req, unsafe.Pointer(value)) +} + +// IoctlSetTermios performs an ioctl on fd with a *Termios. +// +// The req value is expected to be TCSETS, TCSETSW, or TCSETSF +func IoctlSetTermios(fd int, req int, value *Termios) error { + if (req != TCSETS) && (req != TCSETSW) && (req != TCSETSF) { + return ENOSYS + } + err := Tcsetattr(fd, int(req), value) + runtime.KeepAlive(value) + return err +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +// +// A few ioctl requests use the return value as an output parameter; +// for those, IoctlRetInt should be used instead of this function. +func IoctlGetInt(fd int, req int) (int, error) { + var value int + err := ioctlPtr(fd, req, unsafe.Pointer(&value)) + return value, err +} + +func IoctlGetWinsize(fd int, req int) (*Winsize, error) { + var value Winsize + err := ioctlPtr(fd, req, unsafe.Pointer(&value)) + return &value, err +} + +// IoctlGetTermios performs an ioctl on fd with a *Termios. +// +// The req value is expected to be TCGETS +func IoctlGetTermios(fd int, req int) (*Termios, error) { + var value Termios + if req != TCGETS { + return &value, ENOSYS + } + err := Tcgetattr(fd, &value) + return &value, err +} diff --git a/tests/vendor/golang.org/x/sys/unix/mkall.sh b/tests/vendor/golang.org/x/sys/unix/mkall.sh new file mode 100644 index 000000000..e6f31d374 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/mkall.sh @@ -0,0 +1,249 @@ +#!/usr/bin/env bash +# Copyright 2009 The Go Authors. All rights reserved. +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file. + +# This script runs or (given -n) prints suggested commands to generate files for +# the Architecture/OS specified by the GOARCH and GOOS environment variables. +# See README.md for more information about how the build system works. + +GOOSARCH="${GOOS}_${GOARCH}" + +# defaults +mksyscall="go run mksyscall.go" +mkerrors="./mkerrors.sh" +zerrors="zerrors_$GOOSARCH.go" +mksysctl="" +zsysctl="zsysctl_$GOOSARCH.go" +mksysnum= +mktypes= +mkasm= +run="sh" +cmd="" + +case "$1" in +-syscalls) + for i in zsyscall*go + do + # Run the command line that appears in the first line + # of the generated file to regenerate it. + sed 1q $i | sed 's;^// ;;' | sh > _$i && gofmt < _$i > $i + rm _$i + done + exit 0 + ;; +-n) + run="cat" + cmd="echo" + shift +esac + +case "$#" in +0) + ;; +*) + echo 'usage: mkall.sh [-n]' 1>&2 + exit 2 +esac + +if [[ "$GOOS" = "linux" ]]; then + # Use the Docker-based build system + # Files generated through docker (use $cmd so you can Ctl-C the build or run) + $cmd docker build --tag generate:$GOOS $GOOS + $cmd docker run --interactive --tty --volume $(cd -- "$(dirname -- "$0")/.." && pwd):/build generate:$GOOS + exit +fi + +GOOSARCH_in=syscall_$GOOSARCH.go +case "$GOOSARCH" in +_* | *_ | _) + echo 'undefined $GOOS_$GOARCH:' "$GOOSARCH" 1>&2 + exit 1 + ;; +aix_ppc) + mkerrors="$mkerrors -maix32" + mksyscall="go run mksyscall_aix_ppc.go -aix" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +aix_ppc64) + mkerrors="$mkerrors -maix64" + mksyscall="go run mksyscall_aix_ppc64.go -aix" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +darwin_amd64) + mkerrors="$mkerrors -m64" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + mkasm="go run mkasm.go" + ;; +darwin_arm64) + mkerrors="$mkerrors -m64" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + mkasm="go run mkasm.go" + ;; +dragonfly_amd64) + mkerrors="$mkerrors -m64" + mksyscall="go run mksyscall.go -dragonfly" + mksysnum="go run mksysnum.go 'https://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master'" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +freebsd_386) + mkerrors="$mkerrors -m32" + mksyscall="go run mksyscall.go -l32" + mksysnum="go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +freebsd_amd64) + mkerrors="$mkerrors -m64" + mksysnum="go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +freebsd_arm) + mkerrors="$mkerrors" + mksyscall="go run mksyscall.go -l32 -arm" + mksysnum="go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'" + # Let the type of C char be signed for making the bare syscall + # API consistent across platforms. + mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" + ;; +freebsd_arm64) + mkerrors="$mkerrors -m64" + mksysnum="go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'" + mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" + ;; +freebsd_riscv64) + mkerrors="$mkerrors -m64" + mksysnum="go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'" + mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" + ;; +netbsd_386) + mkerrors="$mkerrors -m32" + mksyscall="go run mksyscall.go -l32 -netbsd" + mksysnum="go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +netbsd_amd64) + mkerrors="$mkerrors -m64" + mksyscall="go run mksyscall.go -netbsd" + mksysnum="go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +netbsd_arm) + mkerrors="$mkerrors" + mksyscall="go run mksyscall.go -l32 -netbsd -arm" + mksysnum="go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'" + # Let the type of C char be signed for making the bare syscall + # API consistent across platforms. + mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" + ;; +netbsd_arm64) + mkerrors="$mkerrors -m64" + mksyscall="go run mksyscall.go -netbsd" + mksysnum="go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +openbsd_386) + mkasm="go run mkasm.go" + mkerrors="$mkerrors -m32" + mksyscall="go run mksyscall.go -l32 -openbsd -libc" + mksysctl="go run mksysctl_openbsd.go" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +openbsd_amd64) + mkasm="go run mkasm.go" + mkerrors="$mkerrors -m64" + mksyscall="go run mksyscall.go -openbsd -libc" + mksysctl="go run mksysctl_openbsd.go" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +openbsd_arm) + mkasm="go run mkasm.go" + mkerrors="$mkerrors" + mksyscall="go run mksyscall.go -l32 -openbsd -arm -libc" + mksysctl="go run mksysctl_openbsd.go" + # Let the type of C char be signed for making the bare syscall + # API consistent across platforms. + mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" + ;; +openbsd_arm64) + mkasm="go run mkasm.go" + mkerrors="$mkerrors -m64" + mksyscall="go run mksyscall.go -openbsd -libc" + mksysctl="go run mksysctl_openbsd.go" + # Let the type of C char be signed for making the bare syscall + # API consistent across platforms. + mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" + ;; +openbsd_mips64) + mkasm="go run mkasm.go" + mkerrors="$mkerrors -m64" + mksyscall="go run mksyscall.go -openbsd -libc" + mksysctl="go run mksysctl_openbsd.go" + # Let the type of C char be signed for making the bare syscall + # API consistent across platforms. + mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" + ;; +openbsd_ppc64) + mkasm="go run mkasm.go" + mkerrors="$mkerrors -m64" + mksyscall="go run mksyscall.go -openbsd -libc" + mksysctl="go run mksysctl_openbsd.go" + # Let the type of C char be signed for making the bare syscall + # API consistent across platforms. + mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" + ;; +openbsd_riscv64) + mkasm="go run mkasm.go" + mkerrors="$mkerrors -m64" + mksyscall="go run mksyscall.go -openbsd -libc" + mksysctl="go run mksysctl_openbsd.go" + # Let the type of C char be signed for making the bare syscall + # API consistent across platforms. + mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" + ;; +solaris_amd64) + mksyscall="go run mksyscall_solaris.go" + mkerrors="$mkerrors -m64" + mksysnum= + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +illumos_amd64) + mksyscall="go run mksyscall_solaris.go" + mkerrors= + mksysnum= + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +*) + echo 'unrecognized $GOOS_$GOARCH: ' "$GOOSARCH" 1>&2 + exit 1 + ;; +esac + +( + if [ -n "$mkerrors" ]; then echo "$mkerrors |gofmt >$zerrors"; fi + case "$GOOS" in + *) + syscall_goos="syscall_$GOOS.go" + case "$GOOS" in + darwin | dragonfly | freebsd | netbsd | openbsd) + syscall_goos="syscall_bsd.go $syscall_goos" + ;; + esac + if [ -n "$mksyscall" ]; then + if [ "$GOOSARCH" == "aix_ppc64" ]; then + # aix/ppc64 script generates files instead of writing to stdin. + echo "$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in && gofmt -w zsyscall_$GOOSARCH.go && gofmt -w zsyscall_"$GOOSARCH"_gccgo.go && gofmt -w zsyscall_"$GOOSARCH"_gc.go " ; + elif [ "$GOOS" == "illumos" ]; then + # illumos code generation requires a --illumos switch + echo "$mksyscall -illumos -tags illumos,$GOARCH syscall_illumos.go |gofmt > zsyscall_illumos_$GOARCH.go"; + # illumos implies solaris, so solaris code generation is also required + echo "$mksyscall -tags solaris,$GOARCH syscall_solaris.go syscall_solaris_$GOARCH.go |gofmt >zsyscall_solaris_$GOARCH.go"; + else + echo "$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.go"; + fi + fi + esac + if [ -n "$mksysctl" ]; then echo "$mksysctl |gofmt >$zsysctl"; fi + if [ -n "$mksysnum" ]; then echo "$mksysnum |gofmt >zsysnum_$GOOSARCH.go"; fi + if [ -n "$mktypes" ]; then echo "$mktypes types_$GOOS.go | go run mkpost.go > ztypes_$GOOSARCH.go"; fi + if [ -n "$mkasm" ]; then echo "$mkasm $GOOS $GOARCH"; fi +) | $run diff --git a/tests/vendor/golang.org/x/sys/unix/mkerrors.sh b/tests/vendor/golang.org/x/sys/unix/mkerrors.sh new file mode 100644 index 000000000..6ab02b6c3 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/mkerrors.sh @@ -0,0 +1,805 @@ +#!/usr/bin/env bash +# Copyright 2009 The Go Authors. All rights reserved. +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file. + +# Generate Go code listing errors and other #defined constant +# values (ENAMETOOLONG etc.), by asking the preprocessor +# about the definitions. + +unset LANG +export LC_ALL=C +export LC_CTYPE=C + +if test -z "$GOARCH" -o -z "$GOOS"; then + echo 1>&2 "GOARCH or GOOS not defined in environment" + exit 1 +fi + +# Check that we are using the new build system if we should +if [[ "$GOOS" = "linux" ]] && [[ "$GOLANG_SYS_BUILD" != "docker" ]]; then + echo 1>&2 "In the Docker based build system, mkerrors should not be called directly." + echo 1>&2 "See README.md" + exit 1 +fi + +if [[ "$GOOS" = "aix" ]]; then + CC=${CC:-gcc} +else + CC=${CC:-cc} +fi + +if [[ "$GOOS" = "solaris" ]]; then + # Assumes GNU versions of utilities in PATH. + export PATH=/usr/gnu/bin:$PATH +fi + +uname=$(uname) + +includes_AIX=' +#include <net/if.h> +#include <net/netopt.h> +#include <netinet/ip_mroute.h> +#include <sys/protosw.h> +#include <sys/stropts.h> +#include <sys/mman.h> +#include <sys/poll.h> +#include <sys/select.h> +#include <sys/termio.h> +#include <termios.h> +#include <fcntl.h> + +#define AF_LOCAL AF_UNIX +' + +includes_Darwin=' +#define _DARWIN_C_SOURCE +#define KERNEL 1 +#define _DARWIN_USE_64_BIT_INODE +#define __APPLE_USE_RFC_3542 +#include <stdint.h> +#include <sys/stdio.h> +#include <sys/attr.h> +#include <sys/clonefile.h> +#include <sys/kern_control.h> +#include <sys/types.h> +#include <sys/event.h> +#include <sys/ptrace.h> +#include <sys/select.h> +#include <sys/socket.h> +#include <sys/stat.h> +#include <sys/un.h> +#include <sys/sockio.h> +#include <sys/sys_domain.h> +#include <sys/sysctl.h> +#include <sys/mman.h> +#include <sys/mount.h> +#include <sys/utsname.h> +#include <sys/wait.h> +#include <sys/xattr.h> +#include <sys/vsock.h> +#include <net/bpf.h> +#include <net/if.h> +#include <net/if_types.h> +#include <net/route.h> +#include <netinet/in.h> +#include <netinet/ip.h> +#include <termios.h> + +// for backwards compatibility because moved TIOCREMOTE to Kernel.framework after MacOSX12.0.sdk. +#define TIOCREMOTE 0x80047469 +' + +includes_DragonFly=' +#include <sys/types.h> +#include <sys/event.h> +#include <sys/select.h> +#include <sys/socket.h> +#include <sys/sockio.h> +#include <sys/stat.h> +#include <sys/sysctl.h> +#include <sys/mman.h> +#include <sys/mount.h> +#include <sys/wait.h> +#include <sys/ioctl.h> +#include <net/bpf.h> +#include <net/if.h> +#include <net/if_clone.h> +#include <net/if_types.h> +#include <net/route.h> +#include <netinet/in.h> +#include <termios.h> +#include <netinet/ip.h> +#include <net/ip_mroute/ip_mroute.h> +' + +includes_FreeBSD=' +#include <sys/capsicum.h> +#include <sys/param.h> +#include <sys/types.h> +#include <sys/disk.h> +#include <sys/event.h> +#include <sys/sched.h> +#include <sys/select.h> +#include <sys/socket.h> +#include <sys/un.h> +#include <sys/sockio.h> +#include <sys/stat.h> +#include <sys/sysctl.h> +#include <sys/mman.h> +#include <sys/mount.h> +#include <sys/wait.h> +#include <sys/ioctl.h> +#include <sys/ptrace.h> +#include <net/bpf.h> +#include <net/if.h> +#include <net/if_types.h> +#include <net/route.h> +#include <netinet/in.h> +#include <termios.h> +#include <netinet/ip.h> +#include <netinet/ip_mroute.h> +#include <sys/extattr.h> + +#if __FreeBSD__ >= 10 +#define IFT_CARP 0xf8 // IFT_CARP is deprecated in FreeBSD 10 +#undef SIOCAIFADDR +#define SIOCAIFADDR _IOW(105, 26, struct oifaliasreq) // ifaliasreq contains if_data +#undef SIOCSIFPHYADDR +#define SIOCSIFPHYADDR _IOW(105, 70, struct oifaliasreq) // ifaliasreq contains if_data +#endif +' + +includes_Linux=' +#define _LARGEFILE_SOURCE +#define _LARGEFILE64_SOURCE +#ifndef __LP64__ +#define _FILE_OFFSET_BITS 64 +#endif +#define _GNU_SOURCE + +// See the description in unix/linux/types.go +#if defined(__ARM_EABI__) || \ + (defined(__mips__) && (_MIPS_SIM == _ABIO32)) || \ + (defined(__powerpc__) && (!defined(__powerpc64__))) +# ifdef _TIME_BITS +# undef _TIME_BITS +# endif +# define _TIME_BITS 32 +#endif + +// <sys/ioctl.h> is broken on powerpc64, as it fails to include definitions of +// these structures. We just include them copied from <bits/termios.h>. +#if defined(__powerpc__) +struct sgttyb { + char sg_ispeed; + char sg_ospeed; + char sg_erase; + char sg_kill; + short sg_flags; +}; + +struct tchars { + char t_intrc; + char t_quitc; + char t_startc; + char t_stopc; + char t_eofc; + char t_brkc; +}; + +struct ltchars { + char t_suspc; + char t_dsuspc; + char t_rprntc; + char t_flushc; + char t_werasc; + char t_lnextc; +}; +#endif + +#include <bits/sockaddr.h> +#include <sys/epoll.h> +#include <sys/eventfd.h> +#include <sys/inotify.h> +#include <sys/ioctl.h> +#include <sys/mman.h> +#include <sys/mount.h> +#include <sys/prctl.h> +#include <sys/stat.h> +#include <sys/types.h> +#include <sys/time.h> +#include <sys/select.h> +#include <sys/signalfd.h> +#include <sys/socket.h> +#include <sys/timerfd.h> +#include <sys/uio.h> +#include <sys/xattr.h> +#include <netinet/udp.h> +#include <linux/audit.h> +#include <linux/bpf.h> +#include <linux/can.h> +#include <linux/can/error.h> +#include <linux/can/netlink.h> +#include <linux/can/raw.h> +#include <linux/capability.h> +#include <linux/cryptouser.h> +#include <linux/devlink.h> +#include <linux/dm-ioctl.h> +#include <linux/errqueue.h> +#include <linux/ethtool_netlink.h> +#include <linux/falloc.h> +#include <linux/fanotify.h> +#include <linux/fib_rules.h> +#include <linux/filter.h> +#include <linux/fs.h> +#include <linux/fscrypt.h> +#include <linux/fsverity.h> +#include <linux/genetlink.h> +#include <linux/hdreg.h> +#include <linux/hidraw.h> +#include <linux/if.h> +#include <linux/if_addr.h> +#include <linux/if_alg.h> +#include <linux/if_arp.h> +#include <linux/if_ether.h> +#include <linux/if_ppp.h> +#include <linux/if_tun.h> +#include <linux/if_packet.h> +#include <linux/if_xdp.h> +#include <linux/input.h> +#include <linux/kcm.h> +#include <linux/kexec.h> +#include <linux/keyctl.h> +#include <linux/landlock.h> +#include <linux/loop.h> +#include <linux/lwtunnel.h> +#include <linux/magic.h> +#include <linux/memfd.h> +#include <linux/module.h> +#include <linux/mount.h> +#include <linux/netfilter/nfnetlink.h> +#include <linux/netfilter/nf_tables.h> +#include <linux/netlink.h> +#include <linux/net_namespace.h> +#include <linux/nfc.h> +#include <linux/nsfs.h> +#include <linux/perf_event.h> +#include <linux/pps.h> +#include <linux/ptp_clock.h> +#include <linux/ptrace.h> +#include <linux/random.h> +#include <linux/reboot.h> +#include <linux/rtc.h> +#include <linux/rtnetlink.h> +#include <linux/sched.h> +#include <linux/seccomp.h> +#include <linux/serial.h> +#include <linux/sock_diag.h> +#include <linux/sockios.h> +#include <linux/taskstats.h> +#include <linux/tipc.h> +#include <linux/vm_sockets.h> +#include <linux/wait.h> +#include <linux/watchdog.h> +#include <linux/wireguard.h> + +#include <mtd/ubi-user.h> +#include <mtd/mtd-user.h> +#include <net/route.h> + +#if defined(__sparc__) +// On sparc{,64}, the kernel defines struct termios2 itself which clashes with the +// definition in glibc. As only the error constants are needed here, include the +// generic termibits.h (which is included by termbits.h on sparc). +#include <asm-generic/termbits.h> +#else +#include <asm/termbits.h> +#endif + +#ifndef PTRACE_GETREGS +#define PTRACE_GETREGS 0xc +#endif + +#ifndef PTRACE_SETREGS +#define PTRACE_SETREGS 0xd +#endif + +#ifdef SOL_BLUETOOTH +// SPARC includes this in /usr/include/sparc64-linux-gnu/bits/socket.h +// but it is already in bluetooth_linux.go +#undef SOL_BLUETOOTH +#endif + +// Certain constants are missing from the fs/crypto UAPI +#define FS_KEY_DESC_PREFIX "fscrypt:" +#define FS_KEY_DESC_PREFIX_SIZE 8 +#define FS_MAX_KEY_SIZE 64 + +// The code generator produces -0x1 for (~0), but an unsigned value is necessary +// for the tipc_subscr timeout __u32 field. +#undef TIPC_WAIT_FOREVER +#define TIPC_WAIT_FOREVER 0xffffffff + +// Copied from linux/netfilter/nf_nat.h +// Including linux/netfilter/nf_nat.h here causes conflicts between linux/in.h +// and netinet/in.h. +#define NF_NAT_RANGE_MAP_IPS (1 << 0) +#define NF_NAT_RANGE_PROTO_SPECIFIED (1 << 1) +#define NF_NAT_RANGE_PROTO_RANDOM (1 << 2) +#define NF_NAT_RANGE_PERSISTENT (1 << 3) +#define NF_NAT_RANGE_PROTO_RANDOM_FULLY (1 << 4) +#define NF_NAT_RANGE_PROTO_OFFSET (1 << 5) +#define NF_NAT_RANGE_NETMAP (1 << 6) +#define NF_NAT_RANGE_PROTO_RANDOM_ALL \ + (NF_NAT_RANGE_PROTO_RANDOM | NF_NAT_RANGE_PROTO_RANDOM_FULLY) +#define NF_NAT_RANGE_MASK \ + (NF_NAT_RANGE_MAP_IPS | NF_NAT_RANGE_PROTO_SPECIFIED | \ + NF_NAT_RANGE_PROTO_RANDOM | NF_NAT_RANGE_PERSISTENT | \ + NF_NAT_RANGE_PROTO_RANDOM_FULLY | NF_NAT_RANGE_PROTO_OFFSET | \ + NF_NAT_RANGE_NETMAP) + +// Copied from linux/hid.h. +// Keep in sync with the size of the referenced fields. +#define _HIDIOCGRAWNAME_LEN 128 // sizeof_field(struct hid_device, name) +#define _HIDIOCGRAWPHYS_LEN 64 // sizeof_field(struct hid_device, phys) +#define _HIDIOCGRAWUNIQ_LEN 64 // sizeof_field(struct hid_device, uniq) + +#define _HIDIOCGRAWNAME HIDIOCGRAWNAME(_HIDIOCGRAWNAME_LEN) +#define _HIDIOCGRAWPHYS HIDIOCGRAWPHYS(_HIDIOCGRAWPHYS_LEN) +#define _HIDIOCGRAWUNIQ HIDIOCGRAWUNIQ(_HIDIOCGRAWUNIQ_LEN) + +' + +includes_NetBSD=' +#include <sys/types.h> +#include <sys/param.h> +#include <sys/event.h> +#include <sys/extattr.h> +#include <sys/mman.h> +#include <sys/mount.h> +#include <sys/sched.h> +#include <sys/select.h> +#include <sys/socket.h> +#include <sys/sockio.h> +#include <sys/sysctl.h> +#include <sys/termios.h> +#include <sys/ttycom.h> +#include <sys/wait.h> +#include <net/bpf.h> +#include <net/if.h> +#include <net/if_types.h> +#include <net/route.h> +#include <netinet/in.h> +#include <netinet/in_systm.h> +#include <netinet/ip.h> +#include <netinet/ip_mroute.h> +#include <netinet/if_ether.h> + +// Needed since <sys/param.h> refers to it... +#define schedppq 1 +' + +includes_OpenBSD=' +#include <sys/types.h> +#include <sys/param.h> +#include <sys/event.h> +#include <sys/mman.h> +#include <sys/mount.h> +#include <sys/select.h> +#include <sys/sched.h> +#include <sys/socket.h> +#include <sys/sockio.h> +#include <sys/stat.h> +#include <sys/sysctl.h> +#include <sys/termios.h> +#include <sys/ttycom.h> +#include <sys/unistd.h> +#include <sys/wait.h> +#include <net/bpf.h> +#include <net/if.h> +#include <net/if_types.h> +#include <net/if_var.h> +#include <net/route.h> +#include <netinet/in.h> +#include <netinet/in_systm.h> +#include <netinet/ip.h> +#include <netinet/ip_mroute.h> +#include <netinet/if_ether.h> +#include <net/if_bridge.h> + +// We keep some constants not supported in OpenBSD 5.5 and beyond for +// the promise of compatibility. +#define EMUL_ENABLED 0x1 +#define EMUL_NATIVE 0x2 +#define IPV6_FAITH 0x1d +#define IPV6_OPTIONS 0x1 +#define IPV6_RTHDR_STRICT 0x1 +#define IPV6_SOCKOPT_RESERVED1 0x3 +#define SIOCGIFGENERIC 0xc020693a +#define SIOCSIFGENERIC 0x80206939 +#define WALTSIG 0x4 +' + +includes_SunOS=' +#include <limits.h> +#include <sys/types.h> +#include <sys/select.h> +#include <sys/socket.h> +#include <sys/sockio.h> +#include <sys/stat.h> +#include <sys/stream.h> +#include <sys/mman.h> +#include <sys/wait.h> +#include <sys/ioctl.h> +#include <sys/mkdev.h> +#include <net/bpf.h> +#include <net/if.h> +#include <net/if_arp.h> +#include <net/if_types.h> +#include <net/route.h> +#include <netinet/icmp6.h> +#include <netinet/in.h> +#include <netinet/ip.h> +#include <netinet/ip_mroute.h> +#include <termios.h> +' + + +includes=' +#include <sys/types.h> +#include <sys/file.h> +#include <fcntl.h> +#include <dirent.h> +#include <sys/socket.h> +#include <netinet/in.h> +#include <netinet/ip.h> +#include <netinet/ip6.h> +#include <netinet/tcp.h> +#include <errno.h> +#include <sys/signal.h> +#include <signal.h> +#include <sys/resource.h> +#include <time.h> +' +ccflags="$@" + +# Write go tool cgo -godefs input. +( + echo package unix + echo + echo '/*' + indirect="includes_$(uname)" + echo "${!indirect} $includes" + echo '*/' + echo 'import "C"' + echo 'import "syscall"' + echo + echo 'const (' + + # The gcc command line prints all the #defines + # it encounters while processing the input + echo "${!indirect} $includes" | $CC -x c - -E -dM $ccflags | + awk ' + $1 != "#define" || $2 ~ /\(/ || $3 == "" {next} + + $2 ~ /^E([ABCD]X|[BIS]P|[SD]I|S|FL)$/ {next} # 386 registers + $2 ~ /^(SIGEV_|SIGSTKSZ|SIGRT(MIN|MAX))/ {next} + $2 ~ /^(SCM_SRCRT)$/ {next} + $2 ~ /^(MAP_FAILED)$/ {next} + $2 ~ /^ELF_.*$/ {next}# <asm/elf.h> contains ELF_ARCH, etc. + + $2 ~ /^EXTATTR_NAMESPACE_NAMES/ || + $2 ~ /^EXTATTR_NAMESPACE_[A-Z]+_STRING/ {next} + + $2 !~ /^ECCAPBITS/ && + $2 !~ /^ETH_/ && + $2 !~ /^EPROC_/ && + $2 !~ /^EQUIV_/ && + $2 !~ /^EXPR_/ && + $2 !~ /^EVIOC/ && + $2 ~ /^E[A-Z0-9_]+$/ || + $2 ~ /^B[0-9_]+$/ || + $2 ~ /^(OLD|NEW)DEV$/ || + $2 == "BOTHER" || + $2 ~ /^CI?BAUD(EX)?$/ || + $2 == "IBSHIFT" || + $2 ~ /^V[A-Z0-9]+$/ || + $2 ~ /^CS[A-Z0-9]/ || + $2 ~ /^I(SIG|CANON|CRNL|UCLC|EXTEN|MAXBEL|STRIP|UTF8)$/ || + $2 ~ /^IGN/ || + $2 ~ /^IX(ON|ANY|OFF)$/ || + $2 ~ /^IN(LCR|PCK)$/ || + $2 !~ "X86_CR3_PCID_NOFLUSH" && + $2 ~ /(^FLU?SH)|(FLU?SH$)/ || + $2 ~ /^C(LOCAL|READ|MSPAR|RTSCTS)$/ || + $2 == "BRKINT" || + $2 == "HUPCL" || + $2 == "PENDIN" || + $2 == "TOSTOP" || + $2 == "XCASE" || + $2 == "ALTWERASE" || + $2 == "NOKERNINFO" || + $2 == "NFDBITS" || + $2 ~ /^PAR/ || + $2 ~ /^SIG[^_]/ || + $2 ~ /^O[CNPFPL][A-Z]+[^_][A-Z]+$/ || + $2 ~ /^(NL|CR|TAB|BS|VT|FF)DLY$/ || + $2 ~ /^(NL|CR|TAB|BS|VT|FF)[0-9]$/ || + $2 ~ /^O?XTABS$/ || + $2 ~ /^TC[IO](ON|OFF)$/ || + $2 ~ /^IN_/ || + $2 ~ /^KCM/ || + $2 ~ /^LANDLOCK_/ || + $2 ~ /^LOCK_(SH|EX|NB|UN)$/ || + $2 ~ /^LO_(KEY|NAME)_SIZE$/ || + $2 ~ /^LOOP_(CLR|CTL|GET|SET)_/ || + $2 == "LOOP_CONFIGURE" || + $2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|TCP|MCAST|EVFILT|NOTE|SHUT|PROT|MAP|MREMAP|MFD|T?PACKET|MSG|SCM|MCL|DT|MADV|PR|LOCAL|TCPOPT|UDP)_/ || + $2 ~ /^NFC_(GENL|PROTO|COMM|RF|SE|DIRECTION|LLCP|SOCKPROTO)_/ || + $2 ~ /^NFC_.*_(MAX)?SIZE$/ || + $2 ~ /^PTP_/ || + $2 ~ /^RAW_PAYLOAD_/ || + $2 ~ /^[US]F_/ || + $2 ~ /^TP_STATUS_/ || + $2 ~ /^FALLOC_/ || + $2 ~ /^ICMPV?6?_(FILTER|SEC)/ || + $2 == "SOMAXCONN" || + $2 == "NAME_MAX" || + $2 == "IFNAMSIZ" || + $2 ~ /^CTL_(HW|KERN|MAXNAME|NET|QUERY)$/ || + $2 ~ /^KERN_(HOSTNAME|OS(RELEASE|TYPE)|VERSION)$/ || + $2 ~ /^HW_MACHINE$/ || + $2 ~ /^SYSCTL_VERS/ || + $2 !~ "MNT_BITS" && + $2 ~ /^(MS|MNT|MOUNT|UMOUNT)_/ || + $2 ~ /^NS_GET_/ || + $2 ~ /^TUN(SET|GET|ATTACH|DETACH)/ || + $2 ~ /^(O|F|[ES]?FD|NAME|S|PTRACE|PT|PIOD|TFD)_/ || + $2 ~ /^KEXEC_/ || + $2 ~ /^LINUX_REBOOT_CMD_/ || + $2 ~ /^LINUX_REBOOT_MAGIC[12]$/ || + $2 ~ /^MODULE_INIT_/ || + $2 !~ "NLA_TYPE_MASK" && + $2 !~ /^RTC_VL_(ACCURACY|BACKUP|DATA)/ && + $2 ~ /^(NETLINK|NLM|NLMSG|NLA|IFA|IFAN|RT|RTC|RTCF|RTN|RTPROT|RTNH|ARPHRD|ETH_P|NETNSA)_/ || + $2 ~ /^SOCK_|SK_DIAG_|SKNLGRP_$/ || + $2 ~ /^(CONNECT|SAE)_/ || + $2 ~ /^FIORDCHK$/ || + $2 ~ /^SIOC/ || + $2 ~ /^TIOC/ || + $2 ~ /^TCGET/ || + $2 ~ /^TCSET/ || + $2 ~ /^TC(FLSH|SBRKP?|XONC)$/ || + $2 !~ "RTF_BITS" && + $2 ~ /^(IFF|IFT|NET_RT|RTM(GRP)?|RTF|RTV|RTA|RTAX)_/ || + $2 ~ /^BIOC/ || + $2 ~ /^DIOC/ || + $2 ~ /^RUSAGE_(SELF|CHILDREN|THREAD)/ || + $2 ~ /^RLIMIT_(AS|CORE|CPU|DATA|FSIZE|LOCKS|MEMLOCK|MSGQUEUE|NICE|NOFILE|NPROC|RSS|RTPRIO|RTTIME|SIGPENDING|STACK)|RLIM_INFINITY/ || + $2 ~ /^PRIO_(PROCESS|PGRP|USER)/ || + $2 ~ /^CLONE_[A-Z_]+/ || + $2 !~ /^(BPF_TIMEVAL|BPF_FIB_LOOKUP_[A-Z]+|BPF_F_LINK)$/ && + $2 ~ /^(BPF|DLT)_/ || + $2 ~ /^AUDIT_/ || + $2 ~ /^(CLOCK|TIMER)_/ || + $2 ~ /^CAN_/ || + $2 ~ /^CAP_/ || + $2 ~ /^CP_/ || + $2 ~ /^CPUSTATES$/ || + $2 ~ /^CTLIOCGINFO$/ || + $2 ~ /^ALG_/ || + $2 ~ /^FI(CLONE|DEDUPERANGE)/ || + $2 ~ /^FS_(POLICY_FLAGS|KEY_DESC|ENCRYPTION_MODE|[A-Z0-9_]+_KEY_SIZE)/ || + $2 ~ /^FS_IOC_.*(ENCRYPTION|VERITY|[GS]ETFLAGS)/ || + $2 ~ /^FS_VERITY_/ || + $2 ~ /^FSCRYPT_/ || + $2 ~ /^DM_/ || + $2 ~ /^GRND_/ || + $2 ~ /^RND/ || + $2 ~ /^KEY_(SPEC|REQKEY_DEFL)_/ || + $2 ~ /^KEYCTL_/ || + $2 ~ /^PERF_/ || + $2 ~ /^SECCOMP_/ || + $2 ~ /^SEEK_/ || + $2 ~ /^SCHED_/ || + $2 ~ /^SPLICE_/ || + $2 ~ /^SYNC_FILE_RANGE_/ || + $2 !~ /IOC_MAGIC/ && + $2 ~ /^[A-Z][A-Z0-9_]+_MAGIC2?$/ || + $2 ~ /^(VM|VMADDR)_/ || + $2 ~ /^IOCTL_VM_SOCKETS_/ || + $2 ~ /^(TASKSTATS|TS)_/ || + $2 ~ /^CGROUPSTATS_/ || + $2 ~ /^GENL_/ || + $2 ~ /^STATX_/ || + $2 ~ /^RENAME/ || + $2 ~ /^UBI_IOC[A-Z]/ || + $2 ~ /^UTIME_/ || + $2 ~ /^XATTR_(CREATE|REPLACE|NO(DEFAULT|FOLLOW|SECURITY)|SHOWCOMPRESSION)/ || + $2 ~ /^ATTR_(BIT_MAP_COUNT|(CMN|VOL|FILE)_)/ || + $2 ~ /^FSOPT_/ || + $2 ~ /^WDIO[CFS]_/ || + $2 ~ /^NFN/ || + $2 !~ /^NFT_META_IIFTYPE/ && + $2 ~ /^NFT_/ || + $2 ~ /^NF_NAT_/ || + $2 ~ /^XDP_/ || + $2 ~ /^RWF_/ || + $2 ~ /^(HDIO|WIN|SMART)_/ || + $2 ~ /^CRYPTO_/ || + $2 ~ /^TIPC_/ || + $2 !~ "DEVLINK_RELOAD_LIMITS_VALID_MASK" && + $2 ~ /^DEVLINK_/ || + $2 ~ /^ETHTOOL_/ || + $2 ~ /^LWTUNNEL_IP/ || + $2 ~ /^ITIMER_/ || + $2 !~ "WMESGLEN" && + $2 ~ /^W[A-Z0-9]+$/ || + $2 ~ /^P_/ || + $2 ~/^PPPIOC/ || + $2 ~ /^FAN_|FANOTIFY_/ || + $2 == "HID_MAX_DESCRIPTOR_SIZE" || + $2 ~ /^_?HIDIOC/ || + $2 ~ /^BUS_(USB|HIL|BLUETOOTH|VIRTUAL)$/ || + $2 ~ /^MTD/ || + $2 ~ /^OTP/ || + $2 ~ /^MEM/ || + $2 ~ /^WG/ || + $2 ~ /^FIB_RULE_/ || + $2 ~ /^BLK[A-Z]*(GET$|SET$|BUF$|PART$|SIZE|IOMIN$|IOOPT$|ALIGNOFF$|DISCARD|ROTATIONAL$|ZEROOUT$|GETDISKSEQ$)/ {printf("\t%s = C.%s\n", $2, $2)} + $2 ~ /^__WCOREFLAG$/ {next} + $2 ~ /^__W[A-Z0-9]+$/ {printf("\t%s = C.%s\n", substr($2,3), $2)} + + {next} + ' | sort + + echo ')' +) >_const.go + +# Pull out the error names for later. +errors=$( + echo '#include <errno.h>' | $CC -x c - -E -dM $ccflags | + awk '$1=="#define" && $2 ~ /^E[A-Z0-9_]+$/ { print $2 }' | + sort +) + +# Pull out the signal names for later. +signals=$( + echo '#include <signal.h>' | $CC -x c - -E -dM $ccflags | + awk '$1=="#define" && $2 ~ /^SIG[A-Z0-9]+$/ { print $2 }' | + grep -E -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT|SIGMAX64)' | + sort +) + +# Again, writing regexps to a file. +echo '#include <errno.h>' | $CC -x c - -E -dM $ccflags | + awk '$1=="#define" && $2 ~ /^E[A-Z0-9_]+$/ { print "^\t" $2 "[ \t]*=" }' | + sort >_error.grep +echo '#include <signal.h>' | $CC -x c - -E -dM $ccflags | + awk '$1=="#define" && $2 ~ /^SIG[A-Z0-9]+$/ { print "^\t" $2 "[ \t]*=" }' | + grep -E -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT|SIGMAX64)' | + sort >_signal.grep + +echo '// mkerrors.sh' "$@" +echo '// Code generated by the command above; see README.md. DO NOT EDIT.' +echo +echo "//go:build ${GOARCH} && ${GOOS}" +echo +go tool cgo -godefs -- "$@" _const.go >_error.out +cat _error.out | grep -vf _error.grep | grep -vf _signal.grep +echo +echo '// Errors' +echo 'const (' +cat _error.out | grep -f _error.grep | sed 's/=\(.*\)/= syscall.Errno(\1)/' +echo ')' + +echo +echo '// Signals' +echo 'const (' +cat _error.out | grep -f _signal.grep | sed 's/=\(.*\)/= syscall.Signal(\1)/' +echo ')' + +# Run C program to print error and syscall strings. +( + echo -E " +#include <stdio.h> +#include <stdlib.h> +#include <errno.h> +#include <ctype.h> +#include <string.h> +#include <signal.h> + +#define nelem(x) (sizeof(x)/sizeof((x)[0])) + +enum { A = 'A', Z = 'Z', a = 'a', z = 'z' }; // avoid need for single quotes below + +struct tuple { + int num; + const char *name; +}; + +struct tuple errors[] = { +" + for i in $errors + do + echo -E ' {'$i', "'$i'" },' + done + + echo -E " +}; + +struct tuple signals[] = { +" + for i in $signals + do + echo -E ' {'$i', "'$i'" },' + done + + # Use -E because on some systems bash builtin interprets \n itself. + echo -E ' +}; + +static int +tuplecmp(const void *a, const void *b) +{ + return ((struct tuple *)a)->num - ((struct tuple *)b)->num; +} + +int +main(void) +{ + int i, e; + char buf[1024], *p; + + printf("\n\n// Error table\n"); + printf("var errorList = [...]struct {\n"); + printf("\tnum syscall.Errno\n"); + printf("\tname string\n"); + printf("\tdesc string\n"); + printf("} {\n"); + qsort(errors, nelem(errors), sizeof errors[0], tuplecmp); + for(i=0; i<nelem(errors); i++) { + e = errors[i].num; + if(i > 0 && errors[i-1].num == e) + continue; + strncpy(buf, strerror(e), sizeof(buf) - 1); + buf[sizeof(buf) - 1] = '\0'; + // lowercase first letter: Bad -> bad, but STREAM -> STREAM. + if(A <= buf[0] && buf[0] <= Z && a <= buf[1] && buf[1] <= z) + buf[0] += a - A; + printf("\t{ %d, \"%s\", \"%s\" },\n", e, errors[i].name, buf); + } + printf("}\n\n"); + + printf("\n\n// Signal table\n"); + printf("var signalList = [...]struct {\n"); + printf("\tnum syscall.Signal\n"); + printf("\tname string\n"); + printf("\tdesc string\n"); + printf("} {\n"); + qsort(signals, nelem(signals), sizeof signals[0], tuplecmp); + for(i=0; i<nelem(signals); i++) { + e = signals[i].num; + if(i > 0 && signals[i-1].num == e) + continue; + strncpy(buf, strsignal(e), sizeof(buf) - 1); + buf[sizeof(buf) - 1] = '\0'; + // lowercase first letter: Bad -> bad, but STREAM -> STREAM. + if(A <= buf[0] && buf[0] <= Z && a <= buf[1] && buf[1] <= z) + buf[0] += a - A; + // cut trailing : number. + p = strrchr(buf, ":"[0]); + if(p) + *p = '\0'; + printf("\t{ %d, \"%s\", \"%s\" },\n", e, signals[i].name, buf); + } + printf("}\n\n"); + + return 0; +} + +' +) >_errors.c + +$CC $ccflags -o _errors _errors.c && $GORUN ./_errors && rm -f _errors.c _errors _const.go _error.grep _signal.grep _error.out diff --git a/tests/vendor/golang.org/x/sys/unix/mmap_nomremap.go b/tests/vendor/golang.org/x/sys/unix/mmap_nomremap.go new file mode 100644 index 000000000..7f602ffd2 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/mmap_nomremap.go @@ -0,0 +1,13 @@ +// Copyright 2023 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix || darwin || dragonfly || freebsd || openbsd || solaris || zos + +package unix + +var mapper = &mmapper{ + active: make(map[*byte][]byte), + mmap: mmap, + munmap: munmap, +} diff --git a/tests/vendor/golang.org/x/sys/unix/mremap.go b/tests/vendor/golang.org/x/sys/unix/mremap.go new file mode 100644 index 000000000..3a5e776f8 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/mremap.go @@ -0,0 +1,57 @@ +// Copyright 2023 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux || netbsd + +package unix + +import "unsafe" + +type mremapMmapper struct { + mmapper + mremap func(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (xaddr uintptr, err error) +} + +var mapper = &mremapMmapper{ + mmapper: mmapper{ + active: make(map[*byte][]byte), + mmap: mmap, + munmap: munmap, + }, + mremap: mremap, +} + +func (m *mremapMmapper) Mremap(oldData []byte, newLength int, flags int) (data []byte, err error) { + if newLength <= 0 || len(oldData) == 0 || len(oldData) != cap(oldData) || flags&mremapFixed != 0 { + return nil, EINVAL + } + + pOld := &oldData[cap(oldData)-1] + m.Lock() + defer m.Unlock() + bOld := m.active[pOld] + if bOld == nil || &bOld[0] != &oldData[0] { + return nil, EINVAL + } + newAddr, errno := m.mremap(uintptr(unsafe.Pointer(&bOld[0])), uintptr(len(bOld)), uintptr(newLength), flags, 0) + if errno != nil { + return nil, errno + } + bNew := unsafe.Slice((*byte)(unsafe.Pointer(newAddr)), newLength) + pNew := &bNew[cap(bNew)-1] + if flags&mremapDontunmap == 0 { + delete(m.active, pOld) + } + m.active[pNew] = bNew + return bNew, nil +} + +func Mremap(oldData []byte, newLength int, flags int) (data []byte, err error) { + return mapper.Mremap(oldData, newLength, flags) +} + +func MremapPtr(oldAddr unsafe.Pointer, oldSize uintptr, newAddr unsafe.Pointer, newSize uintptr, flags int) (ret unsafe.Pointer, err error) { + xaddr, err := mapper.mremap(uintptr(oldAddr), oldSize, newSize, flags, uintptr(newAddr)) + return unsafe.Pointer(xaddr), err +} diff --git a/tests/vendor/golang.org/x/sys/unix/pagesize_unix.go b/tests/vendor/golang.org/x/sys/unix/pagesize_unix.go new file mode 100644 index 000000000..0482408d7 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/pagesize_unix.go @@ -0,0 +1,15 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos + +// For Unix, get the pagesize from the runtime. + +package unix + +import "syscall" + +func Getpagesize() int { + return syscall.Getpagesize() +} diff --git a/tests/vendor/golang.org/x/sys/unix/pledge_openbsd.go b/tests/vendor/golang.org/x/sys/unix/pledge_openbsd.go new file mode 100644 index 000000000..6a09af53e --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/pledge_openbsd.go @@ -0,0 +1,111 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package unix + +import ( + "errors" + "fmt" + "strconv" +) + +// Pledge implements the pledge syscall. +// +// This changes both the promises and execpromises; use PledgePromises or +// PledgeExecpromises to only change the promises or execpromises +// respectively. +// +// For more information see pledge(2). +func Pledge(promises, execpromises string) error { + if err := pledgeAvailable(); err != nil { + return err + } + + pptr, err := BytePtrFromString(promises) + if err != nil { + return err + } + + exptr, err := BytePtrFromString(execpromises) + if err != nil { + return err + } + + return pledge(pptr, exptr) +} + +// PledgePromises implements the pledge syscall. +// +// This changes the promises and leaves the execpromises untouched. +// +// For more information see pledge(2). +func PledgePromises(promises string) error { + if err := pledgeAvailable(); err != nil { + return err + } + + pptr, err := BytePtrFromString(promises) + if err != nil { + return err + } + + return pledge(pptr, nil) +} + +// PledgeExecpromises implements the pledge syscall. +// +// This changes the execpromises and leaves the promises untouched. +// +// For more information see pledge(2). +func PledgeExecpromises(execpromises string) error { + if err := pledgeAvailable(); err != nil { + return err + } + + exptr, err := BytePtrFromString(execpromises) + if err != nil { + return err + } + + return pledge(nil, exptr) +} + +// majmin returns major and minor version number for an OpenBSD system. +func majmin() (major int, minor int, err error) { + var v Utsname + err = Uname(&v) + if err != nil { + return + } + + major, err = strconv.Atoi(string(v.Release[0])) + if err != nil { + err = errors.New("cannot parse major version number returned by uname") + return + } + + minor, err = strconv.Atoi(string(v.Release[2])) + if err != nil { + err = errors.New("cannot parse minor version number returned by uname") + return + } + + return +} + +// pledgeAvailable checks for availability of the pledge(2) syscall +// based on the running OpenBSD version. +func pledgeAvailable() error { + maj, min, err := majmin() + if err != nil { + return err + } + + // Require OpenBSD 6.4 as a minimum. + if maj < 6 || (maj == 6 && min <= 3) { + return fmt.Errorf("cannot call Pledge on OpenBSD %d.%d", maj, min) + } + + return nil +} diff --git a/tests/vendor/golang.org/x/sys/unix/ptrace_darwin.go b/tests/vendor/golang.org/x/sys/unix/ptrace_darwin.go new file mode 100644 index 000000000..3f0975f3d --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ptrace_darwin.go @@ -0,0 +1,11 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build darwin && !ios + +package unix + +func ptrace(request int, pid int, addr uintptr, data uintptr) error { + return ptrace1(request, pid, addr, data) +} diff --git a/tests/vendor/golang.org/x/sys/unix/ptrace_ios.go b/tests/vendor/golang.org/x/sys/unix/ptrace_ios.go new file mode 100644 index 000000000..a4d35db5d --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ptrace_ios.go @@ -0,0 +1,11 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build ios + +package unix + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + return ENOTSUP +} diff --git a/tests/vendor/golang.org/x/sys/unix/race.go b/tests/vendor/golang.org/x/sys/unix/race.go new file mode 100644 index 000000000..714d2aae7 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/race.go @@ -0,0 +1,30 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (darwin && race) || (linux && race) || (freebsd && race) + +package unix + +import ( + "runtime" + "unsafe" +) + +const raceenabled = true + +func raceAcquire(addr unsafe.Pointer) { + runtime.RaceAcquire(addr) +} + +func raceReleaseMerge(addr unsafe.Pointer) { + runtime.RaceReleaseMerge(addr) +} + +func raceReadRange(addr unsafe.Pointer, len int) { + runtime.RaceReadRange(addr, len) +} + +func raceWriteRange(addr unsafe.Pointer, len int) { + runtime.RaceWriteRange(addr, len) +} diff --git a/tests/vendor/golang.org/x/sys/unix/race0.go b/tests/vendor/golang.org/x/sys/unix/race0.go new file mode 100644 index 000000000..4a9f6634c --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/race0.go @@ -0,0 +1,25 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix || (darwin && !race) || (linux && !race) || (freebsd && !race) || netbsd || openbsd || solaris || dragonfly || zos + +package unix + +import ( + "unsafe" +) + +const raceenabled = false + +func raceAcquire(addr unsafe.Pointer) { +} + +func raceReleaseMerge(addr unsafe.Pointer) { +} + +func raceReadRange(addr unsafe.Pointer, len int) { +} + +func raceWriteRange(addr unsafe.Pointer, len int) { +} diff --git a/tests/vendor/golang.org/x/sys/unix/readdirent_getdents.go b/tests/vendor/golang.org/x/sys/unix/readdirent_getdents.go new file mode 100644 index 000000000..dbd2b6ccb --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/readdirent_getdents.go @@ -0,0 +1,12 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix || dragonfly || freebsd || linux || netbsd || openbsd + +package unix + +// ReadDirent reads directory entries from fd and writes them into buf. +func ReadDirent(fd int, buf []byte) (n int, err error) { + return Getdents(fd, buf) +} diff --git a/tests/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go b/tests/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go new file mode 100644 index 000000000..b903c0060 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go @@ -0,0 +1,19 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build darwin || zos + +package unix + +import "unsafe" + +// ReadDirent reads directory entries from fd and writes them into buf. +func ReadDirent(fd int, buf []byte) (n int, err error) { + // Final argument is (basep *uintptr) and the syscall doesn't take nil. + // 64 bits should be enough. (32 bits isn't even on 386). Since the + // actual system call is getdirentries64, 64 is a good guess. + // TODO(rsc): Can we use a single global basep for all calls? + var base = (*uintptr)(unsafe.Pointer(new(uint64))) + return Getdirentries(fd, buf, base) +} diff --git a/tests/vendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go b/tests/vendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go new file mode 100644 index 000000000..5144deecc --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go @@ -0,0 +1,16 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package unix + +// Round the length of a raw sockaddr up to align it properly. +func cmsgAlignOf(salen int) int { + salign := SizeofPtr + if SizeofPtr == 8 && !supportsABI(_dragonflyABIChangeVersion) { + // 64-bit Dragonfly before the September 2019 ABI changes still requires + // 32-bit aligned access to network subsystem. + salign = 4 + } + return (salen + salign - 1) & ^(salign - 1) +} diff --git a/tests/vendor/golang.org/x/sys/unix/sockcmsg_linux.go b/tests/vendor/golang.org/x/sys/unix/sockcmsg_linux.go new file mode 100644 index 000000000..5f63147e0 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/sockcmsg_linux.go @@ -0,0 +1,85 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Socket control messages + +package unix + +import "unsafe" + +// UnixCredentials encodes credentials into a socket control message +// for sending to another process. This can be used for +// authentication. +func UnixCredentials(ucred *Ucred) []byte { + b := make([]byte, CmsgSpace(SizeofUcred)) + h := (*Cmsghdr)(unsafe.Pointer(&b[0])) + h.Level = SOL_SOCKET + h.Type = SCM_CREDENTIALS + h.SetLen(CmsgLen(SizeofUcred)) + *(*Ucred)(h.data(0)) = *ucred + return b +} + +// ParseUnixCredentials decodes a socket control message that contains +// credentials in a Ucred structure. To receive such a message, the +// SO_PASSCRED option must be enabled on the socket. +func ParseUnixCredentials(m *SocketControlMessage) (*Ucred, error) { + if m.Header.Level != SOL_SOCKET { + return nil, EINVAL + } + if m.Header.Type != SCM_CREDENTIALS { + return nil, EINVAL + } + ucred := *(*Ucred)(unsafe.Pointer(&m.Data[0])) + return &ucred, nil +} + +// PktInfo4 encodes Inet4Pktinfo into a socket control message of type IP_PKTINFO. +func PktInfo4(info *Inet4Pktinfo) []byte { + b := make([]byte, CmsgSpace(SizeofInet4Pktinfo)) + h := (*Cmsghdr)(unsafe.Pointer(&b[0])) + h.Level = SOL_IP + h.Type = IP_PKTINFO + h.SetLen(CmsgLen(SizeofInet4Pktinfo)) + *(*Inet4Pktinfo)(h.data(0)) = *info + return b +} + +// PktInfo6 encodes Inet6Pktinfo into a socket control message of type IPV6_PKTINFO. +func PktInfo6(info *Inet6Pktinfo) []byte { + b := make([]byte, CmsgSpace(SizeofInet6Pktinfo)) + h := (*Cmsghdr)(unsafe.Pointer(&b[0])) + h.Level = SOL_IPV6 + h.Type = IPV6_PKTINFO + h.SetLen(CmsgLen(SizeofInet6Pktinfo)) + *(*Inet6Pktinfo)(h.data(0)) = *info + return b +} + +// ParseOrigDstAddr decodes a socket control message containing the original +// destination address. To receive such a message the IP_RECVORIGDSTADDR or +// IPV6_RECVORIGDSTADDR option must be enabled on the socket. +func ParseOrigDstAddr(m *SocketControlMessage) (Sockaddr, error) { + switch { + case m.Header.Level == SOL_IP && m.Header.Type == IP_ORIGDSTADDR: + pp := (*RawSockaddrInet4)(unsafe.Pointer(&m.Data[0])) + sa := new(SockaddrInet4) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.Addr = pp.Addr + return sa, nil + + case m.Header.Level == SOL_IPV6 && m.Header.Type == IPV6_ORIGDSTADDR: + pp := (*RawSockaddrInet6)(unsafe.Pointer(&m.Data[0])) + sa := new(SockaddrInet6) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.ZoneId = pp.Scope_id + sa.Addr = pp.Addr + return sa, nil + + default: + return nil, EINVAL + } +} diff --git a/tests/vendor/golang.org/x/sys/unix/sockcmsg_unix.go b/tests/vendor/golang.org/x/sys/unix/sockcmsg_unix.go new file mode 100644 index 000000000..c3a62dbb1 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/sockcmsg_unix.go @@ -0,0 +1,106 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos + +// Socket control messages + +package unix + +import ( + "unsafe" +) + +// CmsgLen returns the value to store in the Len field of the Cmsghdr +// structure, taking into account any necessary alignment. +func CmsgLen(datalen int) int { + return cmsgAlignOf(SizeofCmsghdr) + datalen +} + +// CmsgSpace returns the number of bytes an ancillary element with +// payload of the passed data length occupies. +func CmsgSpace(datalen int) int { + return cmsgAlignOf(SizeofCmsghdr) + cmsgAlignOf(datalen) +} + +func (h *Cmsghdr) data(offset uintptr) unsafe.Pointer { + return unsafe.Pointer(uintptr(unsafe.Pointer(h)) + uintptr(cmsgAlignOf(SizeofCmsghdr)) + offset) +} + +// SocketControlMessage represents a socket control message. +type SocketControlMessage struct { + Header Cmsghdr + Data []byte +} + +// ParseSocketControlMessage parses b as an array of socket control +// messages. +func ParseSocketControlMessage(b []byte) ([]SocketControlMessage, error) { + var msgs []SocketControlMessage + i := 0 + for i+CmsgLen(0) <= len(b) { + h, dbuf, err := socketControlMessageHeaderAndData(b[i:]) + if err != nil { + return nil, err + } + m := SocketControlMessage{Header: *h, Data: dbuf} + msgs = append(msgs, m) + i += cmsgAlignOf(int(h.Len)) + } + return msgs, nil +} + +// ParseOneSocketControlMessage parses a single socket control message from b, returning the message header, +// message data (a slice of b), and the remainder of b after that single message. +// When there are no remaining messages, len(remainder) == 0. +func ParseOneSocketControlMessage(b []byte) (hdr Cmsghdr, data []byte, remainder []byte, err error) { + h, dbuf, err := socketControlMessageHeaderAndData(b) + if err != nil { + return Cmsghdr{}, nil, nil, err + } + if i := cmsgAlignOf(int(h.Len)); i < len(b) { + remainder = b[i:] + } + return *h, dbuf, remainder, nil +} + +func socketControlMessageHeaderAndData(b []byte) (*Cmsghdr, []byte, error) { + h := (*Cmsghdr)(unsafe.Pointer(&b[0])) + if h.Len < SizeofCmsghdr || uint64(h.Len) > uint64(len(b)) { + return nil, nil, EINVAL + } + return h, b[cmsgAlignOf(SizeofCmsghdr):h.Len], nil +} + +// UnixRights encodes a set of open file descriptors into a socket +// control message for sending to another process. +func UnixRights(fds ...int) []byte { + datalen := len(fds) * 4 + b := make([]byte, CmsgSpace(datalen)) + h := (*Cmsghdr)(unsafe.Pointer(&b[0])) + h.Level = SOL_SOCKET + h.Type = SCM_RIGHTS + h.SetLen(CmsgLen(datalen)) + for i, fd := range fds { + *(*int32)(h.data(4 * uintptr(i))) = int32(fd) + } + return b +} + +// ParseUnixRights decodes a socket control message that contains an +// integer array of open file descriptors from another process. +func ParseUnixRights(m *SocketControlMessage) ([]int, error) { + if m.Header.Level != SOL_SOCKET { + return nil, EINVAL + } + if m.Header.Type != SCM_RIGHTS { + return nil, EINVAL + } + fds := make([]int, len(m.Data)>>2) + for i, j := 0, 0; i < len(m.Data); i += 4 { + fds[j] = int(*(*int32)(unsafe.Pointer(&m.Data[i]))) + j++ + } + return fds, nil +} diff --git a/tests/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go b/tests/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go new file mode 100644 index 000000000..4a1eab37e --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go @@ -0,0 +1,46 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix || darwin || freebsd || linux || netbsd || openbsd || solaris || zos + +package unix + +import ( + "runtime" +) + +// Round the length of a raw sockaddr up to align it properly. +func cmsgAlignOf(salen int) int { + salign := SizeofPtr + + // dragonfly needs to check ABI version at runtime, see cmsgAlignOf in + // sockcmsg_dragonfly.go + switch runtime.GOOS { + case "aix": + // There is no alignment on AIX. + salign = 1 + case "darwin", "ios", "illumos", "solaris": + // NOTE: It seems like 64-bit Darwin, Illumos and Solaris + // kernels still require 32-bit aligned access to network + // subsystem. + if SizeofPtr == 8 { + salign = 4 + } + case "netbsd", "openbsd": + // NetBSD and OpenBSD armv7 require 64-bit alignment. + if runtime.GOARCH == "arm" { + salign = 8 + } + // NetBSD aarch64 requires 128-bit alignment. + if runtime.GOOS == "netbsd" && runtime.GOARCH == "arm64" { + salign = 16 + } + case "zos": + // z/OS socket macros use [32-bit] sizeof(int) alignment, + // not pointer width. + salign = SizeofInt + } + + return (salen + salign - 1) & ^(salign - 1) +} diff --git a/tests/vendor/golang.org/x/sys/unix/sockcmsg_zos.go b/tests/vendor/golang.org/x/sys/unix/sockcmsg_zos.go new file mode 100644 index 000000000..3e53dbc02 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/sockcmsg_zos.go @@ -0,0 +1,58 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Socket control messages + +package unix + +import "unsafe" + +// UnixCredentials encodes credentials into a socket control message +// for sending to another process. This can be used for +// authentication. +func UnixCredentials(ucred *Ucred) []byte { + b := make([]byte, CmsgSpace(SizeofUcred)) + h := (*Cmsghdr)(unsafe.Pointer(&b[0])) + h.Level = SOL_SOCKET + h.Type = SCM_CREDENTIALS + h.SetLen(CmsgLen(SizeofUcred)) + *(*Ucred)(h.data(0)) = *ucred + return b +} + +// ParseUnixCredentials decodes a socket control message that contains +// credentials in a Ucred structure. To receive such a message, the +// SO_PASSCRED option must be enabled on the socket. +func ParseUnixCredentials(m *SocketControlMessage) (*Ucred, error) { + if m.Header.Level != SOL_SOCKET { + return nil, EINVAL + } + if m.Header.Type != SCM_CREDENTIALS { + return nil, EINVAL + } + ucred := *(*Ucred)(unsafe.Pointer(&m.Data[0])) + return &ucred, nil +} + +// PktInfo4 encodes Inet4Pktinfo into a socket control message of type IP_PKTINFO. +func PktInfo4(info *Inet4Pktinfo) []byte { + b := make([]byte, CmsgSpace(SizeofInet4Pktinfo)) + h := (*Cmsghdr)(unsafe.Pointer(&b[0])) + h.Level = SOL_IP + h.Type = IP_PKTINFO + h.SetLen(CmsgLen(SizeofInet4Pktinfo)) + *(*Inet4Pktinfo)(h.data(0)) = *info + return b +} + +// PktInfo6 encodes Inet6Pktinfo into a socket control message of type IPV6_PKTINFO. +func PktInfo6(info *Inet6Pktinfo) []byte { + b := make([]byte, CmsgSpace(SizeofInet6Pktinfo)) + h := (*Cmsghdr)(unsafe.Pointer(&b[0])) + h.Level = SOL_IPV6 + h.Type = IPV6_PKTINFO + h.SetLen(CmsgLen(SizeofInet6Pktinfo)) + *(*Inet6Pktinfo)(h.data(0)) = *info + return b +} diff --git a/tests/vendor/golang.org/x/sys/unix/symaddr_zos_s390x.s b/tests/vendor/golang.org/x/sys/unix/symaddr_zos_s390x.s new file mode 100644 index 000000000..3c4f33cb6 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/symaddr_zos_s390x.s @@ -0,0 +1,75 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos && s390x && gc + +#include "textflag.h" + +// provide the address of function variable to be fixed up. + +TEXT ·getPipe2Addr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Pipe2(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_FlockAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Flock(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_GetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Getxattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_NanosleepAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Nanosleep(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_SetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Setxattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_Wait4Addr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Wait4(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_MountAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Mount(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_UnmountAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Unmount(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_UtimesNanoAtAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·UtimesNanoAt(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_UtimesNanoAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·UtimesNano(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_MkfifoatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Mkfifoat(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_ChtagAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Chtag(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_ReadlinkatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Readlinkat(SB), R8 + MOVD R8, ret+0(FP) + RET + diff --git a/tests/vendor/golang.org/x/sys/unix/syscall.go b/tests/vendor/golang.org/x/sys/unix/syscall.go new file mode 100644 index 000000000..5ea74da98 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall.go @@ -0,0 +1,86 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos + +// Package unix contains an interface to the low-level operating system +// primitives. OS details vary depending on the underlying system, and +// by default, godoc will display OS-specific documentation for the current +// system. If you want godoc to display OS documentation for another +// system, set $GOOS and $GOARCH to the desired system. For example, if +// you want to view documentation for freebsd/arm on linux/amd64, set $GOOS +// to freebsd and $GOARCH to arm. +// +// The primary use of this package is inside other packages that provide a more +// portable interface to the system, such as "os", "time" and "net". Use +// those packages rather than this one if you can. +// +// For details of the functions and data types in this package consult +// the manuals for the appropriate operating system. +// +// These calls return err == nil to indicate success; otherwise +// err represents an operating system error describing the failure and +// holds a value of type syscall.Errno. +package unix // import "golang.org/x/sys/unix" + +import ( + "bytes" + "strings" + "unsafe" +) + +// ByteSliceFromString returns a NUL-terminated slice of bytes +// containing the text of s. If s contains a NUL byte at any +// location, it returns (nil, EINVAL). +func ByteSliceFromString(s string) ([]byte, error) { + if strings.IndexByte(s, 0) != -1 { + return nil, EINVAL + } + a := make([]byte, len(s)+1) + copy(a, s) + return a, nil +} + +// BytePtrFromString returns a pointer to a NUL-terminated array of +// bytes containing the text of s. If s contains a NUL byte at any +// location, it returns (nil, EINVAL). +func BytePtrFromString(s string) (*byte, error) { + a, err := ByteSliceFromString(s) + if err != nil { + return nil, err + } + return &a[0], nil +} + +// ByteSliceToString returns a string form of the text represented by the slice s, with a terminating NUL and any +// bytes after the NUL removed. +func ByteSliceToString(s []byte) string { + if i := bytes.IndexByte(s, 0); i != -1 { + s = s[:i] + } + return string(s) +} + +// BytePtrToString takes a pointer to a sequence of text and returns the corresponding string. +// If the pointer is nil, it returns the empty string. It assumes that the text sequence is terminated +// at a zero byte; if the zero byte is not present, the program may crash. +func BytePtrToString(p *byte) string { + if p == nil { + return "" + } + if *p == 0 { + return "" + } + + // Find NUL terminator. + n := 0 + for ptr := unsafe.Pointer(p); *(*byte)(ptr) != 0; n++ { + ptr = unsafe.Pointer(uintptr(ptr) + 1) + } + + return string(unsafe.Slice(p, n)) +} + +// Single-word zero for use when we need a valid pointer to 0 bytes. +var _zero uintptr diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_aix.go b/tests/vendor/golang.org/x/sys/unix/syscall_aix.go new file mode 100644 index 000000000..6f15ba1ea --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_aix.go @@ -0,0 +1,582 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix + +// Aix system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and +// wrap it in our own nicer implementation. + +package unix + +import "unsafe" + +/* + * Wrapped + */ + +func Access(path string, mode uint32) (err error) { + return Faccessat(AT_FDCWD, path, mode, 0) +} + +func Chmod(path string, mode uint32) (err error) { + return Fchmodat(AT_FDCWD, path, mode, 0) +} + +func Chown(path string, uid int, gid int) (err error) { + return Fchownat(AT_FDCWD, path, uid, gid, 0) +} + +func Creat(path string, mode uint32) (fd int, err error) { + return Open(path, O_CREAT|O_WRONLY|O_TRUNC, mode) +} + +//sys utimes(path string, times *[2]Timeval) (err error) + +func Utimes(path string, tv []Timeval) error { + if len(tv) != 2 { + return EINVAL + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +//sys utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) + +func UtimesNano(path string, ts []Timespec) error { + if len(ts) != 2 { + return EINVAL + } + return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error { + if ts == nil { + return utimensat(dirfd, path, nil, flags) + } + if len(ts) != 2 { + return EINVAL + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags) +} + +func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Family = AF_INET + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Addr = sa.Addr + return unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil +} + +func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Family = AF_INET6 + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Scope_id = sa.ZoneId + sa.raw.Addr = sa.Addr + return unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil +} + +func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) { + name := sa.Name + n := len(name) + if n > len(sa.raw.Path) { + return nil, 0, EINVAL + } + if n == len(sa.raw.Path) && name[0] != '@' { + return nil, 0, EINVAL + } + sa.raw.Family = AF_UNIX + for i := 0; i < n; i++ { + sa.raw.Path[i] = uint8(name[i]) + } + // length is family (uint16), name, NUL. + sl := _Socklen(2) + if n > 0 { + sl += _Socklen(n) + 1 + } + if sa.raw.Path[0] == '@' || (sa.raw.Path[0] == 0 && sl > 3) { + // Check sl > 3 so we don't change unnamed socket behavior. + sa.raw.Path[0] = 0 + // Don't count trailing NUL for abstract address. + sl-- + } + + return unsafe.Pointer(&sa.raw), sl, nil +} + +func Getsockname(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getsockname(fd, &rsa, &len); err != nil { + return + } + return anyToSockaddr(fd, &rsa) +} + +//sys getcwd(buf []byte) (err error) + +const ImplementsGetwd = true + +func Getwd() (ret string, err error) { + for len := uint64(4096); ; len *= 2 { + b := make([]byte, len) + err := getcwd(b) + if err == nil { + i := 0 + for b[i] != 0 { + i++ + } + return string(b[0:i]), nil + } + if err != ERANGE { + return "", err + } + } +} + +func Getcwd(buf []byte) (n int, err error) { + err = getcwd(buf) + if err == nil { + i := 0 + for buf[i] != 0 { + i++ + } + n = i + 1 + } + return +} + +func Getgroups() (gids []int, err error) { + n, err := getgroups(0, nil) + if err != nil { + return nil, err + } + if n == 0 { + return nil, nil + } + + // Sanity check group count. Max is 16 on BSD. + if n < 0 || n > 1000 { + return nil, EINVAL + } + + a := make([]_Gid_t, n) + n, err = getgroups(n, &a[0]) + if err != nil { + return nil, err + } + gids = make([]int, n) + for i, v := range a[0:n] { + gids[i] = int(v) + } + return +} + +func Setgroups(gids []int) (err error) { + if len(gids) == 0 { + return setgroups(0, nil) + } + + a := make([]_Gid_t, len(gids)) + for i, v := range gids { + a[i] = _Gid_t(v) + } + return setgroups(len(a), &a[0]) +} + +/* + * Socket + */ + +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) + +func Accept(fd int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept(fd, &rsa, &len) + if nfd == -1 { + return + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +func recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) { + var msg Msghdr + msg.Name = (*byte)(unsafe.Pointer(rsa)) + msg.Namelen = uint32(SizeofSockaddrAny) + var dummy byte + if len(oob) > 0 { + // receive at least one normal byte + if emptyIovecs(iov) { + var iova [1]Iovec + iova[0].Base = &dummy + iova[0].SetLen(1) + iov = iova[:] + } + msg.Control = (*byte)(unsafe.Pointer(&oob[0])) + msg.SetControllen(len(oob)) + } + if len(iov) > 0 { + msg.Iov = &iov[0] + msg.SetIovlen(len(iov)) + } + if n, err = recvmsg(fd, &msg, flags); n == -1 { + return + } + oobn = int(msg.Controllen) + recvflags = int(msg.Flags) + return +} + +func sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) { + var msg Msghdr + msg.Name = (*byte)(unsafe.Pointer(ptr)) + msg.Namelen = uint32(salen) + var dummy byte + var empty bool + if len(oob) > 0 { + // send at least one normal byte + empty = emptyIovecs(iov) + if empty { + var iova [1]Iovec + iova[0].Base = &dummy + iova[0].SetLen(1) + iov = iova[:] + } + msg.Control = (*byte)(unsafe.Pointer(&oob[0])) + msg.SetControllen(len(oob)) + } + if len(iov) > 0 { + msg.Iov = &iov[0] + msg.SetIovlen(len(iov)) + } + if n, err = sendmsg(fd, &msg, flags); err != nil { + return 0, err + } + if len(oob) > 0 && empty { + n = 0 + } + return n, nil +} + +func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { + switch rsa.Addr.Family { + + case AF_UNIX: + pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa)) + sa := new(SockaddrUnix) + + // Some versions of AIX have a bug in getsockname (see IV78655). + // We can't rely on sa.Len being set correctly. + n := SizeofSockaddrUnix - 3 // subtract leading Family, Len, terminating NUL. + for i := 0; i < n; i++ { + if pp.Path[i] == 0 { + n = i + break + } + } + sa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n)) + return sa, nil + + case AF_INET: + pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet4) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.Addr = pp.Addr + return sa, nil + + case AF_INET6: + pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet6) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.ZoneId = pp.Scope_id + sa.Addr = pp.Addr + return sa, nil + } + return nil, EAFNOSUPPORT +} + +func Gettimeofday(tv *Timeval) (err error) { + err = gettimeofday(tv, nil) + return +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +// TODO +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + return -1, ENOSYS +} + +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + reclen, ok := direntReclen(buf) + if !ok { + return 0, false + } + return reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true +} + +//sys getdirent(fd int, buf []byte) (n int, err error) + +func Getdents(fd int, buf []byte) (n int, err error) { + return getdirent(fd, buf) +} + +//sys wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) + +func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) { + var status _C_int + var r Pid_t + err = ERESTART + // AIX wait4 may return with ERESTART errno, while the process is still + // active. + for err == ERESTART { + r, err = wait4(Pid_t(pid), &status, options, rusage) + } + wpid = int(r) + if wstatus != nil { + *wstatus = WaitStatus(status) + } + return +} + +/* + * Wait + */ + +type WaitStatus uint32 + +func (w WaitStatus) Stopped() bool { return w&0x40 != 0 } +func (w WaitStatus) StopSignal() Signal { + if !w.Stopped() { + return -1 + } + return Signal(w>>8) & 0xFF +} + +func (w WaitStatus) Exited() bool { return w&0xFF == 0 } +func (w WaitStatus) ExitStatus() int { + if !w.Exited() { + return -1 + } + return int((w >> 8) & 0xFF) +} + +func (w WaitStatus) Signaled() bool { return w&0x40 == 0 && w&0xFF != 0 } +func (w WaitStatus) Signal() Signal { + if !w.Signaled() { + return -1 + } + return Signal(w>>16) & 0xFF +} + +func (w WaitStatus) Continued() bool { return w&0x01000000 != 0 } + +func (w WaitStatus) CoreDump() bool { return w&0x80 == 0x80 } + +func (w WaitStatus) TrapCause() int { return -1 } + +//sys ioctl(fd int, req int, arg uintptr) (err error) +//sys ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) = ioctl + +// fcntl must never be called with cmd=F_DUP2FD because it doesn't work on AIX +// There is no way to create a custom fcntl and to keep //sys fcntl easily, +// Therefore, the programmer must call dup2 instead of fcntl in this case. + +// FcntlInt performs a fcntl syscall on fd with the provided command and argument. +//sys FcntlInt(fd uintptr, cmd int, arg int) (r int,err error) = fcntl + +// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command. +//sys FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) = fcntl + +//sys fcntl(fd int, cmd int, arg int) (val int, err error) + +//sys fsyncRange(fd int, how int, start int64, length int64) (err error) = fsync_range + +func Fsync(fd int) error { + return fsyncRange(fd, O_SYNC, 0, 0) +} + +/* + * Direct access + */ + +//sys Acct(path string) (err error) +//sys Chdir(path string) (err error) +//sys Chroot(path string) (err error) +//sys Close(fd int) (err error) +//sys Dup(oldfd int) (fd int, err error) +//sys Exit(code int) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Fdatasync(fd int) (err error) +// readdir_r +//sysnb Getpgid(pid int) (pgid int, err error) + +//sys Getpgrp() (pid int) + +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Kill(pid int, sig Signal) (err error) +//sys Klogctl(typ int, buf []byte) (n int, err error) = syslog +//sys Mkdir(dirfd int, path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys Mknod(path string, mode uint32, dev int) (err error) +//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) = open64 +//sys Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Setdomainname(p []byte) (err error) +//sys Sethostname(p []byte) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tv *Timeval) (err error) + +//sys Setuid(uid int) (err error) +//sys Setgid(uid int) (err error) + +//sys Setpriority(which int, who int, prio int) (err error) +//sys Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) +//sys Sync() +//sysnb Times(tms *Tms) (ticks uintptr, err error) +//sysnb Umask(mask int) (oldmask int) +//sysnb Uname(buf *Utsname) (err error) +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys write(fd int, p []byte) (n int, err error) + +//sys Dup2(oldfd int, newfd int) (err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = posix_fadvise64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys fstat(fd int, stat *Stat_t) (err error) +//sys fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = fstatat +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getuid() (uid int) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) +//sys lstat(path string, stat *Stat_t) (err error) +//sys Pause() (err error) +//sys pread(fd int, p []byte, offset int64) (n int, err error) = pread64 +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = pwrite64 +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) +//sys Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) +//sys stat(path string, statptr *Stat_t) (err error) +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys Truncate(path string, length int64) (err error) + +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) + +// In order to use msghdr structure with Control, Controllen, nrecvmsg and nsendmsg must be used. +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) = nrecvmsg +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) = nsendmsg + +//sys munmap(addr uintptr, length uintptr) (err error) +//sys Madvise(b []byte, advice int) (err error) +//sys Mprotect(b []byte, prot int) (err error) +//sys Mlock(b []byte) (err error) +//sys Mlockall(flags int) (err error) +//sys Msync(b []byte, flags int) (err error) +//sys Munlock(b []byte) (err error) +//sys Munlockall() (err error) + +//sysnb pipe(p *[2]_C_int) (err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe(&pp) + if err == nil { + p[0] = int(pp[0]) + p[1] = int(pp[1]) + } + return +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} + +//sys gettimeofday(tv *Timeval, tzp *Timezone) (err error) +//sysnb Time(t *Time_t) (tt Time_t, err error) +//sys Utime(path string, buf *Utimbuf) (err error) + +//sys Getsystemcfg(label int) (n uint64) + +//sys umount(target string) (err error) + +func Unmount(target string, flags int) (err error) { + if flags != 0 { + // AIX doesn't have any flags for umount. + return ENOSYS + } + return umount(target) +} diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go b/tests/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go new file mode 100644 index 000000000..1fdaa4760 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go @@ -0,0 +1,52 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix && ppc + +package unix + +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) = getrlimit64 +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = lseek64 + +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func Fstat(fd int, stat *Stat_t) error { + return fstat(fd, stat) +} + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) error { + return fstatat(dirfd, path, stat, flags) +} + +func Lstat(path string, stat *Stat_t) error { + return lstat(path, stat) +} + +func Stat(path string, statptr *Stat_t) error { + return stat(path, statptr) +} diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go b/tests/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go new file mode 100644 index 000000000..c87f9a9f4 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go @@ -0,0 +1,83 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix && ppc64 + +package unix + +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = lseek + +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) = mmap64 + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int64(sec), Usec: int32(usec)} +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +// In order to only have Timespec structure, type of Stat_t's fields +// Atim, Mtim and Ctim is changed from StTimespec to Timespec during +// ztypes generation. +// On ppc64, Timespec.Nsec is an int64 while StTimespec.Nsec is an +// int32, so the fields' value must be modified. +func fixStatTimFields(stat *Stat_t) { + stat.Atim.Nsec >>= 32 + stat.Mtim.Nsec >>= 32 + stat.Ctim.Nsec >>= 32 +} + +func Fstat(fd int, stat *Stat_t) error { + err := fstat(fd, stat) + if err != nil { + return err + } + fixStatTimFields(stat) + return nil +} + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) error { + err := fstatat(dirfd, path, stat, flags) + if err != nil { + return err + } + fixStatTimFields(stat) + return nil +} + +func Lstat(path string, stat *Stat_t) error { + err := lstat(path, stat) + if err != nil { + return err + } + fixStatTimFields(stat) + return nil +} + +func Stat(path string, statptr *Stat_t) error { + err := stat(path, statptr) + if err != nil { + return err + } + fixStatTimFields(statptr) + return nil +} diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_bsd.go b/tests/vendor/golang.org/x/sys/unix/syscall_bsd.go new file mode 100644 index 000000000..a00c3e545 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_bsd.go @@ -0,0 +1,609 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build darwin || dragonfly || freebsd || netbsd || openbsd + +// BSD system call wrappers shared by *BSD based systems +// including OS X (Darwin) and FreeBSD. Like the other +// syscall_*.go files it is compiled as Go code but also +// used as input to mksyscall which parses the //sys +// lines and generates system call stubs. + +package unix + +import ( + "runtime" + "syscall" + "unsafe" +) + +const ImplementsGetwd = true + +func Getwd() (string, error) { + var buf [PathMax]byte + _, err := Getcwd(buf[0:]) + if err != nil { + return "", err + } + n := clen(buf[:]) + if n < 1 { + return "", EINVAL + } + return string(buf[:n]), nil +} + +/* + * Wrapped + */ + +//sysnb getgroups(ngid int, gid *_Gid_t) (n int, err error) +//sysnb setgroups(ngid int, gid *_Gid_t) (err error) + +func Getgroups() (gids []int, err error) { + n, err := getgroups(0, nil) + if err != nil { + return nil, err + } + if n == 0 { + return nil, nil + } + + // Sanity check group count. Max is 16 on BSD. + if n < 0 || n > 1000 { + return nil, EINVAL + } + + a := make([]_Gid_t, n) + n, err = getgroups(n, &a[0]) + if err != nil { + return nil, err + } + gids = make([]int, n) + for i, v := range a[0:n] { + gids[i] = int(v) + } + return +} + +func Setgroups(gids []int) (err error) { + if len(gids) == 0 { + return setgroups(0, nil) + } + + a := make([]_Gid_t, len(gids)) + for i, v := range gids { + a[i] = _Gid_t(v) + } + return setgroups(len(a), &a[0]) +} + +// Wait status is 7 bits at bottom, either 0 (exited), +// 0x7F (stopped), or a signal number that caused an exit. +// The 0x80 bit is whether there was a core dump. +// An extra number (exit code, signal causing a stop) +// is in the high bits. + +type WaitStatus uint32 + +const ( + mask = 0x7F + core = 0x80 + shift = 8 + + exited = 0 + killed = 9 + stopped = 0x7F +) + +func (w WaitStatus) Exited() bool { return w&mask == exited } + +func (w WaitStatus) ExitStatus() int { + if w&mask != exited { + return -1 + } + return int(w >> shift) +} + +func (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != 0 } + +func (w WaitStatus) Signal() syscall.Signal { + sig := syscall.Signal(w & mask) + if sig == stopped || sig == 0 { + return -1 + } + return sig +} + +func (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 } + +func (w WaitStatus) Stopped() bool { return w&mask == stopped && syscall.Signal(w>>shift) != SIGSTOP } + +func (w WaitStatus) Killed() bool { return w&mask == killed && syscall.Signal(w>>shift) != SIGKILL } + +func (w WaitStatus) Continued() bool { return w&mask == stopped && syscall.Signal(w>>shift) == SIGSTOP } + +func (w WaitStatus) StopSignal() syscall.Signal { + if !w.Stopped() { + return -1 + } + return syscall.Signal(w>>shift) & 0xFF +} + +func (w WaitStatus) TrapCause() int { return -1 } + +//sys wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) + +func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) { + var status _C_int + wpid, err = wait4(pid, &status, options, rusage) + if wstatus != nil { + *wstatus = WaitStatus(status) + } + return +} + +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys Shutdown(s int, how int) (err error) + +func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Len = SizeofSockaddrInet4 + sa.raw.Family = AF_INET + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Addr = sa.Addr + return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil +} + +func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Len = SizeofSockaddrInet6 + sa.raw.Family = AF_INET6 + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Scope_id = sa.ZoneId + sa.raw.Addr = sa.Addr + return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil +} + +func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) { + name := sa.Name + n := len(name) + if n >= len(sa.raw.Path) || n == 0 { + return nil, 0, EINVAL + } + sa.raw.Len = byte(3 + n) // 2 for Family, Len; 1 for NUL + sa.raw.Family = AF_UNIX + for i := 0; i < n; i++ { + sa.raw.Path[i] = int8(name[i]) + } + return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil +} + +func (sa *SockaddrDatalink) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Index == 0 { + return nil, 0, EINVAL + } + sa.raw.Len = sa.Len + sa.raw.Family = AF_LINK + sa.raw.Index = sa.Index + sa.raw.Type = sa.Type + sa.raw.Nlen = sa.Nlen + sa.raw.Alen = sa.Alen + sa.raw.Slen = sa.Slen + sa.raw.Data = sa.Data + return unsafe.Pointer(&sa.raw), SizeofSockaddrDatalink, nil +} + +func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { + switch rsa.Addr.Family { + case AF_LINK: + pp := (*RawSockaddrDatalink)(unsafe.Pointer(rsa)) + sa := new(SockaddrDatalink) + sa.Len = pp.Len + sa.Family = pp.Family + sa.Index = pp.Index + sa.Type = pp.Type + sa.Nlen = pp.Nlen + sa.Alen = pp.Alen + sa.Slen = pp.Slen + sa.Data = pp.Data + return sa, nil + + case AF_UNIX: + pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa)) + if pp.Len < 2 || pp.Len > SizeofSockaddrUnix { + return nil, EINVAL + } + sa := new(SockaddrUnix) + + // Some BSDs include the trailing NUL in the length, whereas + // others do not. Work around this by subtracting the leading + // family and len. The path is then scanned to see if a NUL + // terminator still exists within the length. + n := int(pp.Len) - 2 // subtract leading Family, Len + for i := 0; i < n; i++ { + if pp.Path[i] == 0 { + // found early NUL; assume Len included the NUL + // or was overestimating. + n = i + break + } + } + sa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n)) + return sa, nil + + case AF_INET: + pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet4) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.Addr = pp.Addr + return sa, nil + + case AF_INET6: + pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet6) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.ZoneId = pp.Scope_id + sa.Addr = pp.Addr + return sa, nil + } + return anyToSockaddrGOOS(fd, rsa) +} + +func Accept(fd int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept(fd, &rsa, &len) + if err != nil { + return + } + if (runtime.GOOS == "darwin" || runtime.GOOS == "ios") && len == 0 { + // Accepted socket has no address. + // This is likely due to a bug in xnu kernels, + // where instead of ECONNABORTED error socket + // is accepted, but has no address. + Close(nfd) + return 0, nil, ECONNABORTED + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +func Getsockname(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getsockname(fd, &rsa, &len); err != nil { + return + } + // TODO(jsing): DragonFly has a "bug" (see issue 3349), which should be + // reported upstream. + if runtime.GOOS == "dragonfly" && rsa.Addr.Family == AF_UNSPEC && rsa.Addr.Len == 0 { + rsa.Addr.Family = AF_UNIX + rsa.Addr.Len = SizeofSockaddrUnix + } + return anyToSockaddr(fd, &rsa) +} + +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) + +// GetsockoptString returns the string value of the socket option opt for the +// socket associated with fd at the given socket level. +func GetsockoptString(fd, level, opt int) (string, error) { + buf := make([]byte, 256) + vallen := _Socklen(len(buf)) + err := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen) + if err != nil { + return "", err + } + return ByteSliceToString(buf[:vallen]), nil +} + +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) + +func recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) { + var msg Msghdr + msg.Name = (*byte)(unsafe.Pointer(rsa)) + msg.Namelen = uint32(SizeofSockaddrAny) + var dummy byte + if len(oob) > 0 { + // receive at least one normal byte + if emptyIovecs(iov) { + var iova [1]Iovec + iova[0].Base = &dummy + iova[0].SetLen(1) + iov = iova[:] + } + msg.Control = (*byte)(unsafe.Pointer(&oob[0])) + msg.SetControllen(len(oob)) + } + if len(iov) > 0 { + msg.Iov = &iov[0] + msg.SetIovlen(len(iov)) + } + if n, err = recvmsg(fd, &msg, flags); err != nil { + return + } + oobn = int(msg.Controllen) + recvflags = int(msg.Flags) + return +} + +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) + +func sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) { + var msg Msghdr + msg.Name = (*byte)(unsafe.Pointer(ptr)) + msg.Namelen = uint32(salen) + var dummy byte + var empty bool + if len(oob) > 0 { + // send at least one normal byte + empty = emptyIovecs(iov) + if empty { + var iova [1]Iovec + iova[0].Base = &dummy + iova[0].SetLen(1) + iov = iova[:] + } + msg.Control = (*byte)(unsafe.Pointer(&oob[0])) + msg.SetControllen(len(oob)) + } + if len(iov) > 0 { + msg.Iov = &iov[0] + msg.SetIovlen(len(iov)) + } + if n, err = sendmsg(fd, &msg, flags); err != nil { + return 0, err + } + if len(oob) > 0 && empty { + n = 0 + } + return n, nil +} + +//sys kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) + +func Kevent(kq int, changes, events []Kevent_t, timeout *Timespec) (n int, err error) { + var change, event unsafe.Pointer + if len(changes) > 0 { + change = unsafe.Pointer(&changes[0]) + } + if len(events) > 0 { + event = unsafe.Pointer(&events[0]) + } + return kevent(kq, change, len(changes), event, len(events), timeout) +} + +// sysctlmib translates name to mib number and appends any additional args. +func sysctlmib(name string, args ...int) ([]_C_int, error) { + // Translate name to mib number. + mib, err := nametomib(name) + if err != nil { + return nil, err + } + + for _, a := range args { + mib = append(mib, _C_int(a)) + } + + return mib, nil +} + +func Sysctl(name string) (string, error) { + return SysctlArgs(name) +} + +func SysctlArgs(name string, args ...int) (string, error) { + buf, err := SysctlRaw(name, args...) + if err != nil { + return "", err + } + n := len(buf) + + // Throw away terminating NUL. + if n > 0 && buf[n-1] == '\x00' { + n-- + } + return string(buf[0:n]), nil +} + +func SysctlUint32(name string) (uint32, error) { + return SysctlUint32Args(name) +} + +func SysctlUint32Args(name string, args ...int) (uint32, error) { + mib, err := sysctlmib(name, args...) + if err != nil { + return 0, err + } + + n := uintptr(4) + buf := make([]byte, 4) + if err := sysctl(mib, &buf[0], &n, nil, 0); err != nil { + return 0, err + } + if n != 4 { + return 0, EIO + } + return *(*uint32)(unsafe.Pointer(&buf[0])), nil +} + +func SysctlUint64(name string, args ...int) (uint64, error) { + mib, err := sysctlmib(name, args...) + if err != nil { + return 0, err + } + + n := uintptr(8) + buf := make([]byte, 8) + if err := sysctl(mib, &buf[0], &n, nil, 0); err != nil { + return 0, err + } + if n != 8 { + return 0, EIO + } + return *(*uint64)(unsafe.Pointer(&buf[0])), nil +} + +func SysctlRaw(name string, args ...int) ([]byte, error) { + mib, err := sysctlmib(name, args...) + if err != nil { + return nil, err + } + + // Find size. + n := uintptr(0) + if err := sysctl(mib, nil, &n, nil, 0); err != nil { + return nil, err + } + if n == 0 { + return nil, nil + } + + // Read into buffer of that size. + buf := make([]byte, n) + if err := sysctl(mib, &buf[0], &n, nil, 0); err != nil { + return nil, err + } + + // The actual call may return less than the original reported required + // size so ensure we deal with that. + return buf[:n], nil +} + +func SysctlClockinfo(name string) (*Clockinfo, error) { + mib, err := sysctlmib(name) + if err != nil { + return nil, err + } + + n := uintptr(SizeofClockinfo) + var ci Clockinfo + if err := sysctl(mib, (*byte)(unsafe.Pointer(&ci)), &n, nil, 0); err != nil { + return nil, err + } + if n != SizeofClockinfo { + return nil, EIO + } + return &ci, nil +} + +func SysctlTimeval(name string) (*Timeval, error) { + mib, err := sysctlmib(name) + if err != nil { + return nil, err + } + + var tv Timeval + n := uintptr(unsafe.Sizeof(tv)) + if err := sysctl(mib, (*byte)(unsafe.Pointer(&tv)), &n, nil, 0); err != nil { + return nil, err + } + if n != unsafe.Sizeof(tv) { + return nil, EIO + } + return &tv, nil +} + +//sys utimes(path string, timeval *[2]Timeval) (err error) + +func Utimes(path string, tv []Timeval) error { + if tv == nil { + return utimes(path, nil) + } + if len(tv) != 2 { + return EINVAL + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +func UtimesNano(path string, ts []Timespec) error { + if ts == nil { + err := utimensat(AT_FDCWD, path, nil, 0) + if err != ENOSYS { + return err + } + return utimes(path, nil) + } + if len(ts) != 2 { + return EINVAL + } + err := utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) + if err != ENOSYS { + return err + } + // Not as efficient as it could be because Timespec and + // Timeval have different types in the different OSes + tv := [2]Timeval{ + NsecToTimeval(TimespecToNsec(ts[0])), + NsecToTimeval(TimespecToNsec(ts[1])), + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error { + if ts == nil { + return utimensat(dirfd, path, nil, flags) + } + if len(ts) != 2 { + return EINVAL + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags) +} + +//sys futimes(fd int, timeval *[2]Timeval) (err error) + +func Futimes(fd int, tv []Timeval) error { + if tv == nil { + return futimes(fd, nil) + } + if len(tv) != 2 { + return EINVAL + } + return futimes(fd, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} + +// TODO: wrap +// Acct(name nil-string) (err error) +// Gethostuuid(uuid *byte, timeout *Timespec) (err error) +// Ptrace(req int, pid int, addr uintptr, data int) (ret uintptr, err error) + +//sys Madvise(b []byte, behav int) (err error) +//sys Mlock(b []byte) (err error) +//sys Mlockall(flags int) (err error) +//sys Mprotect(b []byte, prot int) (err error) +//sys Msync(b []byte, flags int) (err error) +//sys Munlock(b []byte) (err error) +//sys Munlockall() (err error) diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_darwin.go b/tests/vendor/golang.org/x/sys/unix/syscall_darwin.go new file mode 100644 index 000000000..798f61ad3 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_darwin.go @@ -0,0 +1,854 @@ +// Copyright 2009,2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Darwin system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and wrap +// it in our own nicer implementation, either here or in +// syscall_bsd.go or syscall_unix.go. + +package unix + +import ( + "fmt" + "syscall" + "unsafe" +) + +//sys closedir(dir uintptr) (err error) +//sys readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) + +func fdopendir(fd int) (dir uintptr, err error) { + r0, _, e1 := syscall_syscallPtr(libc_fdopendir_trampoline_addr, uintptr(fd), 0, 0) + dir = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fdopendir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fdopendir fdopendir "/usr/lib/libSystem.B.dylib" + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + // Simulate Getdirentries using fdopendir/readdir_r/closedir. + // We store the number of entries to skip in the seek + // offset of fd. See issue #31368. + // It's not the full required semantics, but should handle the case + // of calling Getdirentries or ReadDirent repeatedly. + // It won't handle assigning the results of lseek to *basep, or handle + // the directory being edited underfoot. + skip, err := Seek(fd, 0, 1 /* SEEK_CUR */) + if err != nil { + return 0, err + } + + // We need to duplicate the incoming file descriptor + // because the caller expects to retain control of it, but + // fdopendir expects to take control of its argument. + // Just Dup'ing the file descriptor is not enough, as the + // result shares underlying state. Use Openat to make a really + // new file descriptor referring to the same directory. + fd2, err := Openat(fd, ".", O_RDONLY, 0) + if err != nil { + return 0, err + } + d, err := fdopendir(fd2) + if err != nil { + Close(fd2) + return 0, err + } + defer closedir(d) + + var cnt int64 + for { + var entry Dirent + var entryp *Dirent + e := readdir_r(d, &entry, &entryp) + if e != 0 { + return n, errnoErr(e) + } + if entryp == nil { + break + } + if skip > 0 { + skip-- + cnt++ + continue + } + + reclen := int(entry.Reclen) + if reclen > len(buf) { + // Not enough room. Return for now. + // The counter will let us know where we should start up again. + // Note: this strategy for suspending in the middle and + // restarting is O(n^2) in the length of the directory. Oh well. + break + } + + // Copy entry into return buffer. + s := unsafe.Slice((*byte)(unsafe.Pointer(&entry)), reclen) + copy(buf, s) + + buf = buf[reclen:] + n += reclen + cnt++ + } + // Set the seek offset of the input fd to record + // how many files we've already returned. + _, err = Seek(fd, cnt, 0 /* SEEK_SET */) + if err != nil { + return n, err + } + + return n, nil +} + +// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. +type SockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 + raw RawSockaddrDatalink +} + +// SockaddrCtl implements the Sockaddr interface for AF_SYSTEM type sockets. +type SockaddrCtl struct { + ID uint32 + Unit uint32 + raw RawSockaddrCtl +} + +func (sa *SockaddrCtl) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Sc_len = SizeofSockaddrCtl + sa.raw.Sc_family = AF_SYSTEM + sa.raw.Ss_sysaddr = AF_SYS_CONTROL + sa.raw.Sc_id = sa.ID + sa.raw.Sc_unit = sa.Unit + return unsafe.Pointer(&sa.raw), SizeofSockaddrCtl, nil +} + +// SockaddrVM implements the Sockaddr interface for AF_VSOCK type sockets. +// SockaddrVM provides access to Darwin VM sockets: a mechanism that enables +// bidirectional communication between a hypervisor and its guest virtual +// machines. +type SockaddrVM struct { + // CID and Port specify a context ID and port address for a VM socket. + // Guests have a unique CID, and hosts may have a well-known CID of: + // - VMADDR_CID_HYPERVISOR: refers to the hypervisor process. + // - VMADDR_CID_LOCAL: refers to local communication (loopback). + // - VMADDR_CID_HOST: refers to other processes on the host. + CID uint32 + Port uint32 + raw RawSockaddrVM +} + +func (sa *SockaddrVM) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Len = SizeofSockaddrVM + sa.raw.Family = AF_VSOCK + sa.raw.Port = sa.Port + sa.raw.Cid = sa.CID + + return unsafe.Pointer(&sa.raw), SizeofSockaddrVM, nil +} + +func anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { + switch rsa.Addr.Family { + case AF_SYSTEM: + pp := (*RawSockaddrCtl)(unsafe.Pointer(rsa)) + if pp.Ss_sysaddr == AF_SYS_CONTROL { + sa := new(SockaddrCtl) + sa.ID = pp.Sc_id + sa.Unit = pp.Sc_unit + return sa, nil + } + case AF_VSOCK: + pp := (*RawSockaddrVM)(unsafe.Pointer(rsa)) + sa := &SockaddrVM{ + CID: pp.Cid, + Port: pp.Port, + } + return sa, nil + } + return nil, EAFNOSUPPORT +} + +// Some external packages rely on SYS___SYSCTL being defined to implement their +// own sysctl wrappers. Provide it here, even though direct syscalls are no +// longer supported on darwin. +const SYS___SYSCTL = SYS_SYSCTL + +// Translate "kern.hostname" to []_C_int{0,1,2,3}. +func nametomib(name string) (mib []_C_int, err error) { + const siz = unsafe.Sizeof(mib[0]) + + // NOTE(rsc): It seems strange to set the buffer to have + // size CTL_MAXNAME+2 but use only CTL_MAXNAME + // as the size. I don't know why the +2 is here, but the + // kernel uses +2 for its own implementation of this function. + // I am scared that if we don't include the +2 here, the kernel + // will silently write 2 words farther than we specify + // and we'll get memory corruption. + var buf [CTL_MAXNAME + 2]_C_int + n := uintptr(CTL_MAXNAME) * siz + + p := (*byte)(unsafe.Pointer(&buf[0])) + bytes, err := ByteSliceFromString(name) + if err != nil { + return nil, err + } + + // Magic sysctl: "setting" 0.3 to a string name + // lets you read back the array of integers form. + if err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil { + return nil, err + } + return buf[0 : n/siz], nil +} + +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) +} + +func PtraceAttach(pid int) (err error) { return ptrace(PT_ATTACH, pid, 0, 0) } +func PtraceDetach(pid int) (err error) { return ptrace(PT_DETACH, pid, 0, 0) } +func PtraceDenyAttach() (err error) { return ptrace(PT_DENY_ATTACH, 0, 0, 0) } + +//sysnb pipe(p *[2]int32) (err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var x [2]int32 + err = pipe(&x) + if err == nil { + p[0] = int(x[0]) + p[1] = int(x[1]) + } + return +} + +func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { + var _p0 unsafe.Pointer + var bufsize uintptr + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf)) + } + return getfsstat(_p0, bufsize, flags) +} + +func xattrPointer(dest []byte) *byte { + // It's only when dest is set to NULL that the OS X implementations of + // getxattr() and listxattr() return the current sizes of the named attributes. + // An empty byte array is not sufficient. To maintain the same behaviour as the + // linux implementation, we wrap around the system calls and pass in NULL when + // dest is empty. + var destp *byte + if len(dest) > 0 { + destp = &dest[0] + } + return destp +} + +//sys getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + return getxattr(path, attr, xattrPointer(dest), len(dest), 0, 0) +} + +func Lgetxattr(link string, attr string, dest []byte) (sz int, err error) { + return getxattr(link, attr, xattrPointer(dest), len(dest), 0, XATTR_NOFOLLOW) +} + +//sys fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + return fgetxattr(fd, attr, xattrPointer(dest), len(dest), 0, 0) +} + +//sys setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + // The parameters for the OS X implementation vary slightly compared to the + // linux system call, specifically the position parameter: + // + // linux: + // int setxattr( + // const char *path, + // const char *name, + // const void *value, + // size_t size, + // int flags + // ); + // + // darwin: + // int setxattr( + // const char *path, + // const char *name, + // void *value, + // size_t size, + // u_int32_t position, + // int options + // ); + // + // position specifies the offset within the extended attribute. In the + // current implementation, only the resource fork extended attribute makes + // use of this argument. For all others, position is reserved. We simply + // default to setting it to zero. + return setxattr(path, attr, xattrPointer(data), len(data), 0, flags) +} + +func Lsetxattr(link string, attr string, data []byte, flags int) (err error) { + return setxattr(link, attr, xattrPointer(data), len(data), 0, flags|XATTR_NOFOLLOW) +} + +//sys fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) + +func Fsetxattr(fd int, attr string, data []byte, flags int) (err error) { + return fsetxattr(fd, attr, xattrPointer(data), len(data), 0, 0) +} + +//sys removexattr(path string, attr string, options int) (err error) + +func Removexattr(path string, attr string) (err error) { + // We wrap around and explicitly zero out the options provided to the OS X + // implementation of removexattr, we do so for interoperability with the + // linux variant. + return removexattr(path, attr, 0) +} + +func Lremovexattr(link string, attr string) (err error) { + return removexattr(link, attr, XATTR_NOFOLLOW) +} + +//sys fremovexattr(fd int, attr string, options int) (err error) + +func Fremovexattr(fd int, attr string) (err error) { + return fremovexattr(fd, attr, 0) +} + +//sys listxattr(path string, dest *byte, size int, options int) (sz int, err error) + +func Listxattr(path string, dest []byte) (sz int, err error) { + return listxattr(path, xattrPointer(dest), len(dest), 0) +} + +func Llistxattr(link string, dest []byte) (sz int, err error) { + return listxattr(link, xattrPointer(dest), len(dest), XATTR_NOFOLLOW) +} + +//sys flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + return flistxattr(fd, xattrPointer(dest), len(dest), 0) +} + +//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) + +/* + * Wrapped + */ + +//sys fcntl(fd int, cmd int, arg int) (val int, err error) + +//sys kill(pid int, signum int, posix int) (err error) + +func Kill(pid int, signum syscall.Signal) (err error) { return kill(pid, int(signum), 1) } + +//sys ioctl(fd int, req uint, arg uintptr) (err error) +//sys ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL + +func IoctlCtlInfo(fd int, ctlInfo *CtlInfo) error { + return ioctlPtr(fd, CTLIOCGINFO, unsafe.Pointer(ctlInfo)) +} + +// IfreqMTU is struct ifreq used to get or set a network device's MTU. +type IfreqMTU struct { + Name [IFNAMSIZ]byte + MTU int32 +} + +// IoctlGetIfreqMTU performs the SIOCGIFMTU ioctl operation on fd to get the MTU +// of the network device specified by ifname. +func IoctlGetIfreqMTU(fd int, ifname string) (*IfreqMTU, error) { + var ifreq IfreqMTU + copy(ifreq.Name[:], ifname) + err := ioctlPtr(fd, SIOCGIFMTU, unsafe.Pointer(&ifreq)) + return &ifreq, err +} + +// IoctlSetIfreqMTU performs the SIOCSIFMTU ioctl operation on fd to set the MTU +// of the network device specified by ifreq.Name. +func IoctlSetIfreqMTU(fd int, ifreq *IfreqMTU) error { + return ioctlPtr(fd, SIOCSIFMTU, unsafe.Pointer(ifreq)) +} + +//sys renamexNp(from string, to string, flag uint32) (err error) + +func RenamexNp(from string, to string, flag uint32) (err error) { + return renamexNp(from, to, flag) +} + +//sys renameatxNp(fromfd int, from string, tofd int, to string, flag uint32) (err error) + +func RenameatxNp(fromfd int, from string, tofd int, to string, flag uint32) (err error) { + return renameatxNp(fromfd, from, tofd, to, flag) +} + +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS_SYSCTL + +func Uname(uname *Utsname) error { + mib := []_C_int{CTL_KERN, KERN_OSTYPE} + n := unsafe.Sizeof(uname.Sysname) + if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_HOSTNAME} + n = unsafe.Sizeof(uname.Nodename) + if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_OSRELEASE} + n = unsafe.Sizeof(uname.Release) + if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_VERSION} + n = unsafe.Sizeof(uname.Version) + if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil { + return err + } + + // The version might have newlines or tabs in it, convert them to + // spaces. + for i, b := range uname.Version { + if b == '\n' || b == '\t' { + if i == len(uname.Version)-1 { + uname.Version[i] = 0 + } else { + uname.Version[i] = ' ' + } + } + } + + mib = []_C_int{CTL_HW, HW_MACHINE} + n = unsafe.Sizeof(uname.Machine) + if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil { + return err + } + + return nil +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + var length = int64(count) + err = sendfile(infd, outfd, *offset, &length, nil, 0) + written = int(length) + return +} + +func GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) { + var value IPMreqn + vallen := _Socklen(SizeofIPMreqn) + errno := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, errno +} + +func SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq)) +} + +// GetsockoptXucred is a getsockopt wrapper that returns an Xucred struct. +// The usual level and opt are SOL_LOCAL and LOCAL_PEERCRED, respectively. +func GetsockoptXucred(fd, level, opt int) (*Xucred, error) { + x := new(Xucred) + vallen := _Socklen(SizeofXucred) + err := getsockopt(fd, level, opt, unsafe.Pointer(x), &vallen) + return x, err +} + +func GetsockoptTCPConnectionInfo(fd, level, opt int) (*TCPConnectionInfo, error) { + var value TCPConnectionInfo + vallen := _Socklen(SizeofTCPConnectionInfo) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func SysctlKinfoProc(name string, args ...int) (*KinfoProc, error) { + mib, err := sysctlmib(name, args...) + if err != nil { + return nil, err + } + + var kinfo KinfoProc + n := uintptr(SizeofKinfoProc) + if err := sysctl(mib, (*byte)(unsafe.Pointer(&kinfo)), &n, nil, 0); err != nil { + return nil, err + } + if n != SizeofKinfoProc { + return nil, EIO + } + return &kinfo, nil +} + +func SysctlKinfoProcSlice(name string, args ...int) ([]KinfoProc, error) { + mib, err := sysctlmib(name, args...) + if err != nil { + return nil, err + } + + for { + // Find size. + n := uintptr(0) + if err := sysctl(mib, nil, &n, nil, 0); err != nil { + return nil, err + } + if n == 0 { + return nil, nil + } + if n%SizeofKinfoProc != 0 { + return nil, fmt.Errorf("sysctl() returned a size of %d, which is not a multiple of %d", n, SizeofKinfoProc) + } + + // Read into buffer of that size. + buf := make([]KinfoProc, n/SizeofKinfoProc) + if err := sysctl(mib, (*byte)(unsafe.Pointer(&buf[0])), &n, nil, 0); err != nil { + if err == ENOMEM { + // Process table grew. Try again. + continue + } + return nil, err + } + if n%SizeofKinfoProc != 0 { + return nil, fmt.Errorf("sysctl() returned a size of %d, which is not a multiple of %d", n, SizeofKinfoProc) + } + + // The actual call may return less than the original reported required + // size so ensure we deal with that. + return buf[:n/SizeofKinfoProc], nil + } +} + +//sys pthread_chdir_np(path string) (err error) + +func PthreadChdir(path string) (err error) { + return pthread_chdir_np(path) +} + +//sys pthread_fchdir_np(fd int) (err error) + +func PthreadFchdir(fd int) (err error) { + return pthread_fchdir_np(fd) +} + +// Connectx calls connectx(2) to initiate a connection on a socket. +// +// srcIf, srcAddr, and dstAddr are filled into a [SaEndpoints] struct and passed as the endpoints argument. +// +// - srcIf is the optional source interface index. 0 means unspecified. +// - srcAddr is the optional source address. nil means unspecified. +// - dstAddr is the destination address. +// +// On success, Connectx returns the number of bytes enqueued for transmission. +func Connectx(fd int, srcIf uint32, srcAddr, dstAddr Sockaddr, associd SaeAssocID, flags uint32, iov []Iovec, connid *SaeConnID) (n uintptr, err error) { + endpoints := SaEndpoints{ + Srcif: srcIf, + } + + if srcAddr != nil { + addrp, addrlen, err := srcAddr.sockaddr() + if err != nil { + return 0, err + } + endpoints.Srcaddr = (*RawSockaddr)(addrp) + endpoints.Srcaddrlen = uint32(addrlen) + } + + if dstAddr != nil { + addrp, addrlen, err := dstAddr.sockaddr() + if err != nil { + return 0, err + } + endpoints.Dstaddr = (*RawSockaddr)(addrp) + endpoints.Dstaddrlen = uint32(addrlen) + } + + err = connectx(fd, &endpoints, associd, flags, iov, &n, connid) + return +} + +// sys connectx(fd int, endpoints *SaEndpoints, associd SaeAssocID, flags uint32, iov []Iovec, n *uintptr, connid *SaeConnID) (err error) +const minIovec = 8 + +func Readv(fd int, iovs [][]byte) (n int, err error) { + if !darwinKernelVersionMin(11, 0, 0) { + return 0, ENOSYS + } + + iovecs := make([]Iovec, 0, minIovec) + iovecs = appendBytes(iovecs, iovs) + n, err = readv(fd, iovecs) + readvRacedetect(iovecs, n, err) + return n, err +} + +func Preadv(fd int, iovs [][]byte, offset int64) (n int, err error) { + if !darwinKernelVersionMin(11, 0, 0) { + return 0, ENOSYS + } + iovecs := make([]Iovec, 0, minIovec) + iovecs = appendBytes(iovecs, iovs) + n, err = preadv(fd, iovecs, offset) + readvRacedetect(iovecs, n, err) + return n, err +} + +func Writev(fd int, iovs [][]byte) (n int, err error) { + if !darwinKernelVersionMin(11, 0, 0) { + return 0, ENOSYS + } + + iovecs := make([]Iovec, 0, minIovec) + iovecs = appendBytes(iovecs, iovs) + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + n, err = writev(fd, iovecs) + writevRacedetect(iovecs, n) + return n, err +} + +func Pwritev(fd int, iovs [][]byte, offset int64) (n int, err error) { + if !darwinKernelVersionMin(11, 0, 0) { + return 0, ENOSYS + } + + iovecs := make([]Iovec, 0, minIovec) + iovecs = appendBytes(iovecs, iovs) + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + n, err = pwritev(fd, iovecs, offset) + writevRacedetect(iovecs, n) + return n, err +} + +func appendBytes(vecs []Iovec, bs [][]byte) []Iovec { + for _, b := range bs { + var v Iovec + v.SetLen(len(b)) + if len(b) > 0 { + v.Base = &b[0] + } else { + v.Base = (*byte)(unsafe.Pointer(&_zero)) + } + vecs = append(vecs, v) + } + return vecs +} + +func writevRacedetect(iovecs []Iovec, n int) { + if !raceenabled { + return + } + for i := 0; n > 0 && i < len(iovecs); i++ { + m := int(iovecs[i].Len) + if m > n { + m = n + } + n -= m + if m > 0 { + raceReadRange(unsafe.Pointer(iovecs[i].Base), m) + } + } +} + +func readvRacedetect(iovecs []Iovec, n int, err error) { + if !raceenabled { + return + } + for i := 0; n > 0 && i < len(iovecs); i++ { + m := int(iovecs[i].Len) + if m > n { + m = n + } + n -= m + if m > 0 { + raceWriteRange(unsafe.Pointer(iovecs[i].Base), m) + } + } + if err == nil { + raceAcquire(unsafe.Pointer(&ioSync)) + } +} + +func darwinMajorMinPatch() (maj, min, patch int, err error) { + var un Utsname + err = Uname(&un) + if err != nil { + return + } + + var mmp [3]int + c := 0 +Loop: + for _, b := range un.Release[:] { + switch { + case b >= '0' && b <= '9': + mmp[c] = 10*mmp[c] + int(b-'0') + case b == '.': + c++ + if c > 2 { + return 0, 0, 0, ENOTSUP + } + case b == 0: + break Loop + default: + return 0, 0, 0, ENOTSUP + } + } + if c != 2 { + return 0, 0, 0, ENOTSUP + } + return mmp[0], mmp[1], mmp[2], nil +} + +func darwinKernelVersionMin(maj, min, patch int) bool { + actualMaj, actualMin, actualPatch, err := darwinMajorMinPatch() + if err != nil { + return false + } + return actualMaj > maj || actualMaj == maj && (actualMin > min || actualMin == min && actualPatch >= patch) +} + +//sys sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) + +//sys shmat(id int, addr uintptr, flag int) (ret uintptr, err error) +//sys shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) +//sys shmdt(addr uintptr) (err error) +//sys shmget(key int, size int, flag int) (id int, err error) + +/* + * Exposed directly + */ +//sys Access(path string, mode uint32) (err error) +//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error) +//sys Chdir(path string) (err error) +//sys Chflags(path string, flags int) (err error) +//sys Chmod(path string, mode uint32) (err error) +//sys Chown(path string, uid int, gid int) (err error) +//sys Chroot(path string) (err error) +//sys ClockGettime(clockid int32, time *Timespec) (err error) +//sys Close(fd int) (err error) +//sys Clonefile(src string, dst string, flags int) (err error) +//sys Clonefileat(srcDirfd int, src string, dstDirfd int, dst string, flags int) (err error) +//sys Dup(fd int) (nfd int, err error) +//sys Dup2(from int, to int) (err error) +//sys Exchangedata(path1 string, path2 string, options int) (err error) +//sys Exit(code int) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchflags(fd int, flags int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Fclonefileat(srcDirfd int, dstDirfd int, dst string, flags int) (err error) +//sys Flock(fd int, how int) (err error) +//sys Fpathconf(fd int, name int) (val int, err error) +//sys Fsync(fd int) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sys Getcwd(buf []byte) (n int, err error) +//sys Getdtablesize() (size int) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (uid int) +//sysnb Getgid() (gid int) +//sysnb Getpgid(pid int) (pgid int, err error) +//sysnb Getpgrp() (pgrp int) +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrlimit(which int, lim *Rlimit) (err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Gettimeofday(tp *Timeval) (err error) +//sysnb Getuid() (uid int) +//sysnb Issetugid() (tainted bool) +//sys Kqueue() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Link(path string, link string) (err error) +//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) +//sys Listen(s int, backlog int) (err error) +//sys Mkdir(path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys Mknod(path string, mode uint32, dev int) (err error) +//sys Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) +//sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) +//sys Pathconf(path string, name int) (val int, err error) +//sys pread(fd int, p []byte, offset int64) (n int, err error) +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error) +//sys Rename(from string, to string) (err error) +//sys Renameat(fromfd int, from string, tofd int, to string) (err error) +//sys Revoke(path string) (err error) +//sys Rmdir(path string) (err error) +//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) +//sys Setattrlist(path string, attrlist *Attrlist, attrBuf []byte, options int) (err error) +//sys Setegid(egid int) (err error) +//sysnb Seteuid(euid int) (err error) +//sysnb Setgid(gid int) (err error) +//sys Setlogin(name string) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sys Setpriority(which int, who int, prio int) (err error) +//sys Setprivexec(flag int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tp *Timeval) (err error) +//sysnb Setuid(uid int) (err error) +//sys Symlink(path string, link string) (err error) +//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) +//sys Sync() (err error) +//sys Truncate(path string, length int64) (err error) +//sys Umask(newmask int) (oldmask int) +//sys Undelete(path string) (err error) +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Unmount(path string, flags int) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) +//sys readv(fd int, iovecs []Iovec) (n int, err error) +//sys preadv(fd int, iovecs []Iovec, offset int64) (n int, err error) +//sys writev(fd int, iovecs []Iovec) (n int, err error) +//sys pwritev(fd int, iovecs []Iovec, offset int64) (n int, err error) diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go b/tests/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go new file mode 100644 index 000000000..0eaecf5fc --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go @@ -0,0 +1,50 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build amd64 && darwin + +package unix + +import "syscall" + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) + +//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 +//sys Fstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64 +//sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64 +//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 +//sys ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) = SYS_ptrace +//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 +//sys Statfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64 diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go b/tests/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go new file mode 100644 index 000000000..f36c6707c --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go @@ -0,0 +1,50 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build arm64 && darwin + +package unix + +import "syscall" + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic + +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatfs(fd int, stat *Statfs_t) (err error) +//sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT +//sys Lstat(path string, stat *Stat_t) (err error) +//sys ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) = SYS_ptrace +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, stat *Statfs_t) (err error) diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go b/tests/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go new file mode 100644 index 000000000..2f0fa76e4 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go @@ -0,0 +1,26 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build darwin + +package unix + +import _ "unsafe" + +// Implemented in the runtime package (runtime/sys_darwin.go) +func syscall_syscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) +func syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) +func syscall_syscall6X(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) +func syscall_syscall9(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno) // 32-bit only +func syscall_rawSyscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) +func syscall_rawSyscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) +func syscall_syscallPtr(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) + +//go:linkname syscall_syscall syscall.syscall +//go:linkname syscall_syscall6 syscall.syscall6 +//go:linkname syscall_syscall6X syscall.syscall6X +//go:linkname syscall_syscall9 syscall.syscall9 +//go:linkname syscall_rawSyscall syscall.rawSyscall +//go:linkname syscall_rawSyscall6 syscall.rawSyscall6 +//go:linkname syscall_syscallPtr syscall.syscallPtr diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_dragonfly.go b/tests/vendor/golang.org/x/sys/unix/syscall_dragonfly.go new file mode 100644 index 000000000..be8c00207 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_dragonfly.go @@ -0,0 +1,359 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// DragonFly BSD system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and wrap +// it in our own nicer implementation, either here or in +// syscall_bsd.go or syscall_unix.go. + +package unix + +import ( + "sync" + "unsafe" +) + +// See version list in https://github.com/DragonFlyBSD/DragonFlyBSD/blob/master/sys/sys/param.h +var ( + osreldateOnce sync.Once + osreldate uint32 +) + +// First __DragonFly_version after September 2019 ABI changes +// http://lists.dragonflybsd.org/pipermail/users/2019-September/358280.html +const _dragonflyABIChangeVersion = 500705 + +func supportsABI(ver uint32) bool { + osreldateOnce.Do(func() { osreldate, _ = SysctlUint32("kern.osreldate") }) + return osreldate >= ver +} + +// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. +type SockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 + Rcf uint16 + Route [16]uint16 + raw RawSockaddrDatalink +} + +func anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { + return nil, EAFNOSUPPORT +} + +// Translate "kern.hostname" to []_C_int{0,1,2,3}. +func nametomib(name string) (mib []_C_int, err error) { + const siz = unsafe.Sizeof(mib[0]) + + // NOTE(rsc): It seems strange to set the buffer to have + // size CTL_MAXNAME+2 but use only CTL_MAXNAME + // as the size. I don't know why the +2 is here, but the + // kernel uses +2 for its own implementation of this function. + // I am scared that if we don't include the +2 here, the kernel + // will silently write 2 words farther than we specify + // and we'll get memory corruption. + var buf [CTL_MAXNAME + 2]_C_int + n := uintptr(CTL_MAXNAME) * siz + + p := (*byte)(unsafe.Pointer(&buf[0])) + bytes, err := ByteSliceFromString(name) + if err != nil { + return nil, err + } + + // Magic sysctl: "setting" 0.3 to a string name + // lets you read back the array of integers form. + if err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil { + return nil, err + } + return buf[0 : n/siz], nil +} + +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno)) +} + +func direntReclen(buf []byte) (uint64, bool) { + namlen, ok := direntNamlen(buf) + if !ok { + return 0, false + } + return (16 + namlen + 1 + 7) &^ 7, true +} + +func direntNamlen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) +} + +//sysnb pipe() (r int, w int, err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + r, w, err := pipe() + if err == nil { + p[0], p[1] = r, w + } + return +} + +//sysnb pipe2(p *[2]_C_int, flags int) (r int, w int, err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + // pipe2 on dragonfly takes an fds array as an argument, but still + // returns the file descriptors. + r, w, err := pipe2(&pp, flags) + if err == nil { + p[0], p[1] = r, w + } + return err +} + +//sys extpread(fd int, p []byte, flags int, offset int64) (n int, err error) + +func pread(fd int, p []byte, offset int64) (n int, err error) { + return extpread(fd, p, 0, offset) +} + +//sys extpwrite(fd int, p []byte, flags int, offset int64) (n int, err error) + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + return extpwrite(fd, p, 0, offset) +} + +func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept4(fd, &rsa, &len, flags) + if err != nil { + return + } + if len > SizeofSockaddrAny { + panic("RawSockaddrAny too small") + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +//sys Getcwd(buf []byte) (n int, err error) = SYS___GETCWD + +func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { + var _p0 unsafe.Pointer + var bufsize uintptr + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf)) + } + r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +//sys ioctl(fd int, req uint, arg uintptr) (err error) +//sys ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL + +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL + +func sysctlUname(mib []_C_int, old *byte, oldlen *uintptr) error { + err := sysctl(mib, old, oldlen, nil, 0) + if err != nil { + // Utsname members on Dragonfly are only 32 bytes and + // the syscall returns ENOMEM in case the actual value + // is longer. + if err == ENOMEM { + err = nil + } + } + return err +} + +func Uname(uname *Utsname) error { + mib := []_C_int{CTL_KERN, KERN_OSTYPE} + n := unsafe.Sizeof(uname.Sysname) + if err := sysctlUname(mib, &uname.Sysname[0], &n); err != nil { + return err + } + uname.Sysname[unsafe.Sizeof(uname.Sysname)-1] = 0 + + mib = []_C_int{CTL_KERN, KERN_HOSTNAME} + n = unsafe.Sizeof(uname.Nodename) + if err := sysctlUname(mib, &uname.Nodename[0], &n); err != nil { + return err + } + uname.Nodename[unsafe.Sizeof(uname.Nodename)-1] = 0 + + mib = []_C_int{CTL_KERN, KERN_OSRELEASE} + n = unsafe.Sizeof(uname.Release) + if err := sysctlUname(mib, &uname.Release[0], &n); err != nil { + return err + } + uname.Release[unsafe.Sizeof(uname.Release)-1] = 0 + + mib = []_C_int{CTL_KERN, KERN_VERSION} + n = unsafe.Sizeof(uname.Version) + if err := sysctlUname(mib, &uname.Version[0], &n); err != nil { + return err + } + + // The version might have newlines or tabs in it, convert them to + // spaces. + for i, b := range uname.Version { + if b == '\n' || b == '\t' { + if i == len(uname.Version)-1 { + uname.Version[i] = 0 + } else { + uname.Version[i] = ' ' + } + } + } + + mib = []_C_int{CTL_HW, HW_MACHINE} + n = unsafe.Sizeof(uname.Machine) + if err := sysctlUname(mib, &uname.Machine[0], &n); err != nil { + return err + } + uname.Machine[unsafe.Sizeof(uname.Machine)-1] = 0 + + return nil +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +func Dup3(oldfd, newfd, flags int) error { + if oldfd == newfd || flags&^O_CLOEXEC != 0 { + return EINVAL + } + how := F_DUP2FD + if flags&O_CLOEXEC != 0 { + how = F_DUP2FD_CLOEXEC + } + _, err := fcntl(oldfd, how, newfd) + return err +} + +/* + * Exposed directly + */ +//sys Access(path string, mode uint32) (err error) +//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error) +//sys Chdir(path string) (err error) +//sys Chflags(path string, flags int) (err error) +//sys Chmod(path string, mode uint32) (err error) +//sys Chown(path string, uid int, gid int) (err error) +//sys Chroot(path string) (err error) +//sys ClockGettime(clockid int32, time *Timespec) (err error) +//sys Close(fd int) (err error) +//sys Dup(fd int) (nfd int, err error) +//sys Dup2(from int, to int) (err error) +//sys Exit(code int) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchflags(fd int, flags int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Flock(fd int, how int) (err error) +//sys Fpathconf(fd int, name int) (val int, err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatfs(fd int, stat *Statfs_t) (err error) +//sys Fsync(fd int) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sys Getdents(fd int, buf []byte) (n int, err error) +//sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) +//sys Getdtablesize() (size int) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (uid int) +//sysnb Getgid() (gid int) +//sysnb Getpgid(pid int) (pgid int, err error) +//sysnb Getpgrp() (pgrp int) +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrlimit(which int, lim *Rlimit) (err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Getuid() (uid int) +//sys Issetugid() (tainted bool) +//sys Kill(pid int, signum syscall.Signal) (err error) +//sys Kqueue() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Link(path string, link string) (err error) +//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) +//sys Listen(s int, backlog int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Mkdir(path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys Mknod(path string, mode uint32, dev int) (err error) +//sys Mknodat(fd int, path string, mode uint32, dev int) (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) +//sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) +//sys Pathconf(path string, name int) (val int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Rename(from string, to string) (err error) +//sys Renameat(fromfd int, from string, tofd int, to string) (err error) +//sys Revoke(path string) (err error) +//sys Rmdir(path string) (err error) +//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) +//sysnb Setegid(egid int) (err error) +//sysnb Seteuid(euid int) (err error) +//sysnb Setgid(gid int) (err error) +//sys Setlogin(name string) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sys Setpriority(which int, who int, prio int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tp *Timeval) (err error) +//sysnb Setuid(uid int) (err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, stat *Statfs_t) (err error) +//sys Symlink(path string, link string) (err error) +//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) +//sys Sync() (err error) +//sys Truncate(path string, length int64) (err error) +//sys Umask(newmask int) (oldmask int) +//sys Undelete(path string) (err error) +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Unmount(path string, flags int) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) +//sys accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) +//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go b/tests/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go new file mode 100644 index 000000000..14bab6b2d --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go @@ -0,0 +1,56 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build amd64 && dragonfly + +package unix + +import ( + "syscall" + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + var writtenOut uint64 = 0 + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0) + + written = int(writtenOut) + + if e1 != 0 { + err = e1 + } + return +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_freebsd.go b/tests/vendor/golang.org/x/sys/unix/syscall_freebsd.go new file mode 100644 index 000000000..2b57e0f73 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_freebsd.go @@ -0,0 +1,455 @@ +// Copyright 2009,2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// FreeBSD system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and wrap +// it in our own nicer implementation, either here or in +// syscall_bsd.go or syscall_unix.go. + +package unix + +import ( + "errors" + "sync" + "unsafe" +) + +// See https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/versions.html. +var ( + osreldateOnce sync.Once + osreldate uint32 +) + +func supportsABI(ver uint32) bool { + osreldateOnce.Do(func() { osreldate, _ = SysctlUint32("kern.osreldate") }) + return osreldate >= ver +} + +// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. +type SockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [46]int8 + raw RawSockaddrDatalink +} + +func anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { + return nil, EAFNOSUPPORT +} + +// Translate "kern.hostname" to []_C_int{0,1,2,3}. +func nametomib(name string) (mib []_C_int, err error) { + const siz = unsafe.Sizeof(mib[0]) + + // NOTE(rsc): It seems strange to set the buffer to have + // size CTL_MAXNAME+2 but use only CTL_MAXNAME + // as the size. I don't know why the +2 is here, but the + // kernel uses +2 for its own implementation of this function. + // I am scared that if we don't include the +2 here, the kernel + // will silently write 2 words farther than we specify + // and we'll get memory corruption. + var buf [CTL_MAXNAME + 2]_C_int + n := uintptr(CTL_MAXNAME) * siz + + p := (*byte)(unsafe.Pointer(&buf[0])) + bytes, err := ByteSliceFromString(name) + if err != nil { + return nil, err + } + + // Magic sysctl: "setting" 0.3 to a string name + // lets you read back the array of integers form. + if err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil { + return nil, err + } + return buf[0 : n/siz], nil +} + +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) +} + +func Pipe(p []int) (err error) { + return Pipe2(p, 0) +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) error { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err := pipe2(&pp, flags) + if err == nil { + p[0] = int(pp[0]) + p[1] = int(pp[1]) + } + return err +} + +func GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) { + var value IPMreqn + vallen := _Socklen(SizeofIPMreqn) + errno := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, errno +} + +func SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq)) +} + +// GetsockoptXucred is a getsockopt wrapper that returns an Xucred struct. +// The usual level and opt are SOL_LOCAL and LOCAL_PEERCRED, respectively. +func GetsockoptXucred(fd, level, opt int) (*Xucred, error) { + x := new(Xucred) + vallen := _Socklen(SizeofXucred) + err := getsockopt(fd, level, opt, unsafe.Pointer(x), &vallen) + return x, err +} + +func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept4(fd, &rsa, &len, flags) + if err != nil { + return + } + if len > SizeofSockaddrAny { + panic("RawSockaddrAny too small") + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +//sys Getcwd(buf []byte) (n int, err error) = SYS___GETCWD + +func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { + var ( + _p0 unsafe.Pointer + bufsize uintptr + ) + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf)) + } + r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +//sys ioctl(fd int, req uint, arg uintptr) (err error) = SYS_IOCTL +//sys ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL + +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL + +func Uname(uname *Utsname) error { + mib := []_C_int{CTL_KERN, KERN_OSTYPE} + n := unsafe.Sizeof(uname.Sysname) + // Suppress ENOMEM errors to be compatible with the C library __xuname() implementation. + if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) { + return err + } + + mib = []_C_int{CTL_KERN, KERN_HOSTNAME} + n = unsafe.Sizeof(uname.Nodename) + if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) { + return err + } + + mib = []_C_int{CTL_KERN, KERN_OSRELEASE} + n = unsafe.Sizeof(uname.Release) + if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) { + return err + } + + mib = []_C_int{CTL_KERN, KERN_VERSION} + n = unsafe.Sizeof(uname.Version) + if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) { + return err + } + + // The version might have newlines or tabs in it, convert them to + // spaces. + for i, b := range uname.Version { + if b == '\n' || b == '\t' { + if i == len(uname.Version)-1 { + uname.Version[i] = 0 + } else { + uname.Version[i] = ' ' + } + } + } + + mib = []_C_int{CTL_HW, HW_MACHINE} + n = unsafe.Sizeof(uname.Machine) + if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) { + return err + } + + return nil +} + +func Stat(path string, st *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, st, 0) +} + +func Lstat(path string, st *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, st, AT_SYMLINK_NOFOLLOW) +} + +func Getdents(fd int, buf []byte) (n int, err error) { + return Getdirentries(fd, buf, nil) +} + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + if basep == nil || unsafe.Sizeof(*basep) == 8 { + return getdirentries(fd, buf, (*uint64)(unsafe.Pointer(basep))) + } + // The syscall needs a 64-bit base. On 32-bit machines + // we can't just use the basep passed in. See #32498. + var base uint64 = uint64(*basep) + n, err = getdirentries(fd, buf, &base) + *basep = uintptr(base) + if base>>32 != 0 { + // We can't stuff the base back into a uintptr, so any + // future calls would be suspect. Generate an error. + // EIO is allowed by getdirentries. + err = EIO + } + return +} + +func Mknod(path string, mode uint32, dev uint64) (err error) { + return Mknodat(AT_FDCWD, path, mode, dev) +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +//sys ptrace(request int, pid int, addr uintptr, data int) (err error) +//sys ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) = SYS_PTRACE + +func PtraceAttach(pid int) (err error) { + return ptrace(PT_ATTACH, pid, 0, 0) +} + +func PtraceCont(pid int, signal int) (err error) { + return ptrace(PT_CONTINUE, pid, 1, signal) +} + +func PtraceDetach(pid int) (err error) { + return ptrace(PT_DETACH, pid, 1, 0) +} + +func PtraceGetFpRegs(pid int, fpregsout *FpReg) (err error) { + return ptracePtr(PT_GETFPREGS, pid, unsafe.Pointer(fpregsout), 0) +} + +func PtraceGetRegs(pid int, regsout *Reg) (err error) { + return ptracePtr(PT_GETREGS, pid, unsafe.Pointer(regsout), 0) +} + +func PtraceIO(req int, pid int, offs uintptr, out []byte, countin int) (count int, err error) { + ioDesc := PtraceIoDesc{ + Op: int32(req), + Offs: offs, + } + if countin > 0 { + _ = out[:countin] // check bounds + ioDesc.Addr = &out[0] + } else if out != nil { + ioDesc.Addr = (*byte)(unsafe.Pointer(&_zero)) + } + ioDesc.SetLen(countin) + + err = ptracePtr(PT_IO, pid, unsafe.Pointer(&ioDesc), 0) + return int(ioDesc.Len), err +} + +func PtraceLwpEvents(pid int, enable int) (err error) { + return ptrace(PT_LWP_EVENTS, pid, 0, enable) +} + +func PtraceLwpInfo(pid int, info *PtraceLwpInfoStruct) (err error) { + return ptracePtr(PT_LWPINFO, pid, unsafe.Pointer(info), int(unsafe.Sizeof(*info))) +} + +func PtracePeekData(pid int, addr uintptr, out []byte) (count int, err error) { + return PtraceIO(PIOD_READ_D, pid, addr, out, SizeofLong) +} + +func PtracePeekText(pid int, addr uintptr, out []byte) (count int, err error) { + return PtraceIO(PIOD_READ_I, pid, addr, out, SizeofLong) +} + +func PtracePokeData(pid int, addr uintptr, data []byte) (count int, err error) { + return PtraceIO(PIOD_WRITE_D, pid, addr, data, SizeofLong) +} + +func PtracePokeText(pid int, addr uintptr, data []byte) (count int, err error) { + return PtraceIO(PIOD_WRITE_I, pid, addr, data, SizeofLong) +} + +func PtraceSetRegs(pid int, regs *Reg) (err error) { + return ptracePtr(PT_SETREGS, pid, unsafe.Pointer(regs), 0) +} + +func PtraceSingleStep(pid int) (err error) { + return ptrace(PT_STEP, pid, 1, 0) +} + +func Dup3(oldfd, newfd, flags int) error { + if oldfd == newfd || flags&^O_CLOEXEC != 0 { + return EINVAL + } + how := F_DUP2FD + if flags&O_CLOEXEC != 0 { + how = F_DUP2FD_CLOEXEC + } + _, err := fcntl(oldfd, how, newfd) + return err +} + +/* + * Exposed directly + */ +//sys Access(path string, mode uint32) (err error) +//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error) +//sys CapEnter() (err error) +//sys capRightsGet(version int, fd int, rightsp *CapRights) (err error) = SYS___CAP_RIGHTS_GET +//sys capRightsLimit(fd int, rightsp *CapRights) (err error) +//sys Chdir(path string) (err error) +//sys Chflags(path string, flags int) (err error) +//sys Chmod(path string, mode uint32) (err error) +//sys Chown(path string, uid int, gid int) (err error) +//sys Chroot(path string) (err error) +//sys ClockGettime(clockid int32, time *Timespec) (err error) +//sys Close(fd int) (err error) +//sys Dup(fd int) (nfd int, err error) +//sys Dup2(from int, to int) (err error) +//sys Exit(code int) +//sys ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) +//sys ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) +//sys ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) +//sys ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_POSIX_FADVISE +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchflags(fd int, flags int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Flock(fd int, how int) (err error) +//sys Fpathconf(fd int, name int) (val int, err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatfs(fd int, stat *Statfs_t) (err error) +//sys Fsync(fd int) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sys getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) +//sys Getdtablesize() (size int) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (uid int) +//sysnb Getgid() (gid int) +//sysnb Getpgid(pid int) (pgid int, err error) +//sysnb Getpgrp() (pgrp int) +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrlimit(which int, lim *Rlimit) (err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Getuid() (uid int) +//sys Issetugid() (tainted bool) +//sys Kill(pid int, signum syscall.Signal) (err error) +//sys Kqueue() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Link(path string, link string) (err error) +//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) +//sys Listen(s int, backlog int) (err error) +//sys Mkdir(path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys Mknodat(fd int, path string, mode uint32, dev uint64) (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) +//sys Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) +//sys Pathconf(path string, name int) (val int, err error) +//sys pread(fd int, p []byte, offset int64) (n int, err error) +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error) +//sys Rename(from string, to string) (err error) +//sys Renameat(fromfd int, from string, tofd int, to string) (err error) +//sys Revoke(path string) (err error) +//sys Rmdir(path string) (err error) +//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) +//sysnb Setegid(egid int) (err error) +//sysnb Seteuid(euid int) (err error) +//sysnb Setgid(gid int) (err error) +//sys Setlogin(name string) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sys Setpriority(which int, who int, prio int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tp *Timeval) (err error) +//sysnb Setuid(uid int) (err error) +//sys Statfs(path string, stat *Statfs_t) (err error) +//sys Symlink(path string, link string) (err error) +//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) +//sys Sync() (err error) +//sys Truncate(path string, length int64) (err error) +//sys Umask(newmask int) (oldmask int) +//sys Undelete(path string) (err error) +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Unmount(path string, flags int) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) +//sys accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) +//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go b/tests/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go new file mode 100644 index 000000000..3967bca77 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go @@ -0,0 +1,64 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build 386 && freebsd + +package unix + +import ( + "syscall" + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func (d *PtraceIoDesc) SetLen(length int) { + d.Len = uint32(length) +} + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + var writtenOut uint64 = 0 + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0) + + written = int(writtenOut) + + if e1 != 0 { + err = e1 + } + return +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) + +func PtraceGetFsBase(pid int, fsbase *int64) (err error) { + return ptracePtr(PT_GETFSBASE, pid, unsafe.Pointer(fsbase), 0) +} diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go b/tests/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go new file mode 100644 index 000000000..eff19ada2 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go @@ -0,0 +1,64 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build amd64 && freebsd + +package unix + +import ( + "syscall" + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func (d *PtraceIoDesc) SetLen(length int) { + d.Len = uint64(length) +} + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + var writtenOut uint64 = 0 + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0) + + written = int(writtenOut) + + if e1 != 0 { + err = e1 + } + return +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) + +func PtraceGetFsBase(pid int, fsbase *int64) (err error) { + return ptracePtr(PT_GETFSBASE, pid, unsafe.Pointer(fsbase), 0) +} diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go b/tests/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go new file mode 100644 index 000000000..4f24b517a --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go @@ -0,0 +1,60 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build arm && freebsd + +package unix + +import ( + "syscall" + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func (d *PtraceIoDesc) SetLen(length int) { + d.Len = uint32(length) +} + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + var writtenOut uint64 = 0 + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0) + + written = int(writtenOut) + + if e1 != 0 { + err = e1 + } + return +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go b/tests/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go new file mode 100644 index 000000000..ac30759ec --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go @@ -0,0 +1,60 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build arm64 && freebsd + +package unix + +import ( + "syscall" + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func (d *PtraceIoDesc) SetLen(length int) { + d.Len = uint64(length) +} + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + var writtenOut uint64 = 0 + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0) + + written = int(writtenOut) + + if e1 != 0 { + err = e1 + } + return +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go b/tests/vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go new file mode 100644 index 000000000..aab725ca7 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go @@ -0,0 +1,60 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build riscv64 && freebsd + +package unix + +import ( + "syscall" + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func (d *PtraceIoDesc) SetLen(length int) { + d.Len = uint64(length) +} + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + var writtenOut uint64 = 0 + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0) + + written = int(writtenOut) + + if e1 != 0 { + err = e1 + } + return +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_hurd.go b/tests/vendor/golang.org/x/sys/unix/syscall_hurd.go new file mode 100644 index 000000000..a6a2d2fc2 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_hurd.go @@ -0,0 +1,30 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build hurd + +package unix + +/* +#include <stdint.h> +int ioctl(int, unsigned long int, uintptr_t); +*/ +import "C" +import "unsafe" + +func ioctl(fd int, req uint, arg uintptr) (err error) { + r0, er := C.ioctl(C.int(fd), C.ulong(req), C.uintptr_t(arg)) + if r0 == -1 && er != nil { + err = er + } + return +} + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + r0, er := C.ioctl(C.int(fd), C.ulong(req), C.uintptr_t(uintptr(arg))) + if r0 == -1 && er != nil { + err = er + } + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_hurd_386.go b/tests/vendor/golang.org/x/sys/unix/syscall_hurd_386.go new file mode 100644 index 000000000..df89f9e6b --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_hurd_386.go @@ -0,0 +1,28 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build 386 && hurd + +package unix + +const ( + TIOCGETA = 0x62251713 +) + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_illumos.go b/tests/vendor/golang.org/x/sys/unix/syscall_illumos.go new file mode 100644 index 000000000..a863f7052 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_illumos.go @@ -0,0 +1,78 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// illumos system calls not present on Solaris. + +//go:build amd64 && illumos + +package unix + +import ( + "unsafe" +) + +func bytes2iovec(bs [][]byte) []Iovec { + iovecs := make([]Iovec, len(bs)) + for i, b := range bs { + iovecs[i].SetLen(len(b)) + if len(b) > 0 { + iovecs[i].Base = &b[0] + } else { + iovecs[i].Base = (*byte)(unsafe.Pointer(&_zero)) + } + } + return iovecs +} + +//sys readv(fd int, iovs []Iovec) (n int, err error) + +func Readv(fd int, iovs [][]byte) (n int, err error) { + iovecs := bytes2iovec(iovs) + n, err = readv(fd, iovecs) + return n, err +} + +//sys preadv(fd int, iovs []Iovec, off int64) (n int, err error) + +func Preadv(fd int, iovs [][]byte, off int64) (n int, err error) { + iovecs := bytes2iovec(iovs) + n, err = preadv(fd, iovecs, off) + return n, err +} + +//sys writev(fd int, iovs []Iovec) (n int, err error) + +func Writev(fd int, iovs [][]byte) (n int, err error) { + iovecs := bytes2iovec(iovs) + n, err = writev(fd, iovecs) + return n, err +} + +//sys pwritev(fd int, iovs []Iovec, off int64) (n int, err error) + +func Pwritev(fd int, iovs [][]byte, off int64) (n int, err error) { + iovecs := bytes2iovec(iovs) + n, err = pwritev(fd, iovecs, off) + return n, err +} + +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) = libsocket.accept4 + +func Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept4(fd, &rsa, &len, flags) + if err != nil { + return + } + if len > SizeofSockaddrAny { + panic("RawSockaddrAny too small") + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_linux.go b/tests/vendor/golang.org/x/sys/unix/syscall_linux.go new file mode 100644 index 000000000..4958a6570 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_linux.go @@ -0,0 +1,2647 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Linux system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and +// wrap it in our own nicer implementation. + +package unix + +import ( + "encoding/binary" + "slices" + "strconv" + "syscall" + "time" + "unsafe" +) + +/* + * Wrapped + */ + +func Access(path string, mode uint32) (err error) { + return Faccessat(AT_FDCWD, path, mode, 0) +} + +func Chmod(path string, mode uint32) (err error) { + return Fchmodat(AT_FDCWD, path, mode, 0) +} + +func Chown(path string, uid int, gid int) (err error) { + return Fchownat(AT_FDCWD, path, uid, gid, 0) +} + +func Creat(path string, mode uint32) (fd int, err error) { + return Open(path, O_CREAT|O_WRONLY|O_TRUNC, mode) +} + +func EpollCreate(size int) (fd int, err error) { + if size <= 0 { + return -1, EINVAL + } + return EpollCreate1(0) +} + +//sys FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) +//sys fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) + +func FanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname string) (err error) { + if pathname == "" { + return fanotifyMark(fd, flags, mask, dirFd, nil) + } + p, err := BytePtrFromString(pathname) + if err != nil { + return err + } + return fanotifyMark(fd, flags, mask, dirFd, p) +} + +//sys fchmodat(dirfd int, path string, mode uint32) (err error) +//sys fchmodat2(dirfd int, path string, mode uint32, flags int) (err error) + +func Fchmodat(dirfd int, path string, mode uint32, flags int) error { + // Linux fchmodat doesn't support the flags parameter, but fchmodat2 does. + // Try fchmodat2 if flags are specified. + if flags != 0 { + err := fchmodat2(dirfd, path, mode, flags) + if err == ENOSYS { + // fchmodat2 isn't available. If the flags are known to be valid, + // return EOPNOTSUPP to indicate that fchmodat doesn't support them. + if flags&^(AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) != 0 { + return EINVAL + } else if flags&(AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) != 0 { + return EOPNOTSUPP + } + } + return err + } + return fchmodat(dirfd, path, mode) +} + +func InotifyInit() (fd int, err error) { + return InotifyInit1(0) +} + +//sys ioctl(fd int, req uint, arg uintptr) (err error) = SYS_IOCTL +//sys ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL + +// ioctl itself should not be exposed directly, but additional get/set functions +// for specific types are permissible. These are defined in ioctl.go and +// ioctl_linux.go. +// +// The third argument to ioctl is often a pointer but sometimes an integer. +// Callers should use ioctlPtr when the third argument is a pointer and ioctl +// when the third argument is an integer. +// +// TODO: some existing code incorrectly uses ioctl when it should use ioctlPtr. + +//sys Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) + +func Link(oldpath string, newpath string) (err error) { + return Linkat(AT_FDCWD, oldpath, AT_FDCWD, newpath, 0) +} + +func Mkdir(path string, mode uint32) (err error) { + return Mkdirat(AT_FDCWD, path, mode) +} + +func Mknod(path string, mode uint32, dev int) (err error) { + return Mknodat(AT_FDCWD, path, mode, dev) +} + +func Open(path string, mode int, perm uint32) (fd int, err error) { + return openat(AT_FDCWD, path, mode|O_LARGEFILE, perm) +} + +//sys openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) + +func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + return openat(dirfd, path, flags|O_LARGEFILE, mode) +} + +//sys openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) + +func Openat2(dirfd int, path string, how *OpenHow) (fd int, err error) { + return openat2(dirfd, path, how, SizeofOpenHow) +} + +func Pipe(p []int) error { + return Pipe2(p, 0) +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) error { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err := pipe2(&pp, flags) + if err == nil { + p[0] = int(pp[0]) + p[1] = int(pp[1]) + } + return err +} + +//sys ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) + +func Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + if len(fds) == 0 { + return ppoll(nil, 0, timeout, sigmask) + } + return ppoll(&fds[0], len(fds), timeout, sigmask) +} + +func Poll(fds []PollFd, timeout int) (n int, err error) { + var ts *Timespec + if timeout >= 0 { + ts = new(Timespec) + *ts = NsecToTimespec(int64(timeout) * 1e6) + } + return Ppoll(fds, ts, nil) +} + +//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error) + +func Readlink(path string, buf []byte) (n int, err error) { + return Readlinkat(AT_FDCWD, path, buf) +} + +func Rename(oldpath string, newpath string) (err error) { + return Renameat(AT_FDCWD, oldpath, AT_FDCWD, newpath) +} + +func Rmdir(path string) error { + return Unlinkat(AT_FDCWD, path, AT_REMOVEDIR) +} + +//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) + +func Symlink(oldpath string, newpath string) (err error) { + return Symlinkat(oldpath, AT_FDCWD, newpath) +} + +func Unlink(path string) error { + return Unlinkat(AT_FDCWD, path, 0) +} + +//sys Unlinkat(dirfd int, path string, flags int) (err error) + +func Utimes(path string, tv []Timeval) error { + if tv == nil { + err := utimensat(AT_FDCWD, path, nil, 0) + if err != ENOSYS { + return err + } + return utimes(path, nil) + } + if len(tv) != 2 { + return EINVAL + } + var ts [2]Timespec + ts[0] = NsecToTimespec(TimevalToNsec(tv[0])) + ts[1] = NsecToTimespec(TimevalToNsec(tv[1])) + err := utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) + if err != ENOSYS { + return err + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) + +func UtimesNano(path string, ts []Timespec) error { + return UtimesNanoAt(AT_FDCWD, path, ts, 0) +} + +func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error { + if ts == nil { + return utimensat(dirfd, path, nil, flags) + } + if len(ts) != 2 { + return EINVAL + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags) +} + +func Futimesat(dirfd int, path string, tv []Timeval) error { + if tv == nil { + return futimesat(dirfd, path, nil) + } + if len(tv) != 2 { + return EINVAL + } + return futimesat(dirfd, path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +func Futimes(fd int, tv []Timeval) (err error) { + // Believe it or not, this is the best we can do on Linux + // (and is what glibc does). + return Utimes("/proc/self/fd/"+strconv.Itoa(fd), tv) +} + +const ImplementsGetwd = true + +//sys Getcwd(buf []byte) (n int, err error) + +func Getwd() (wd string, err error) { + var buf [PathMax]byte + n, err := Getcwd(buf[0:]) + if err != nil { + return "", err + } + // Getcwd returns the number of bytes written to buf, including the NUL. + if n < 1 || n > len(buf) || buf[n-1] != 0 { + return "", EINVAL + } + // In some cases, Linux can return a path that starts with the + // "(unreachable)" prefix, which can potentially be a valid relative + // path. To work around that, return ENOENT if path is not absolute. + if buf[0] != '/' { + return "", ENOENT + } + + return string(buf[0 : n-1]), nil +} + +func Getgroups() (gids []int, err error) { + n, err := getgroups(0, nil) + if err != nil { + return nil, err + } + if n == 0 { + return nil, nil + } + + // Sanity check group count. Max is 1<<16 on Linux. + if n < 0 || n > 1<<20 { + return nil, EINVAL + } + + a := make([]_Gid_t, n) + n, err = getgroups(n, &a[0]) + if err != nil { + return nil, err + } + gids = make([]int, n) + for i, v := range a[0:n] { + gids[i] = int(v) + } + return +} + +func Setgroups(gids []int) (err error) { + if len(gids) == 0 { + return setgroups(0, nil) + } + + a := make([]_Gid_t, len(gids)) + for i, v := range gids { + a[i] = _Gid_t(v) + } + return setgroups(len(a), &a[0]) +} + +type WaitStatus uint32 + +// Wait status is 7 bits at bottom, either 0 (exited), +// 0x7F (stopped), or a signal number that caused an exit. +// The 0x80 bit is whether there was a core dump. +// An extra number (exit code, signal causing a stop) +// is in the high bits. At least that's the idea. +// There are various irregularities. For example, the +// "continued" status is 0xFFFF, distinguishing itself +// from stopped via the core dump bit. + +const ( + mask = 0x7F + core = 0x80 + exited = 0x00 + stopped = 0x7F + shift = 8 +) + +func (w WaitStatus) Exited() bool { return w&mask == exited } + +func (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != exited } + +func (w WaitStatus) Stopped() bool { return w&0xFF == stopped } + +func (w WaitStatus) Continued() bool { return w == 0xFFFF } + +func (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 } + +func (w WaitStatus) ExitStatus() int { + if !w.Exited() { + return -1 + } + return int(w>>shift) & 0xFF +} + +func (w WaitStatus) Signal() syscall.Signal { + if !w.Signaled() { + return -1 + } + return syscall.Signal(w & mask) +} + +func (w WaitStatus) StopSignal() syscall.Signal { + if !w.Stopped() { + return -1 + } + return syscall.Signal(w>>shift) & 0xFF +} + +func (w WaitStatus) TrapCause() int { + if w.StopSignal() != SIGTRAP { + return -1 + } + return int(w>>shift) >> 8 +} + +//sys wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) + +func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) { + var status _C_int + wpid, err = wait4(pid, &status, options, rusage) + if wstatus != nil { + *wstatus = WaitStatus(status) + } + return +} + +//sys Waitid(idType int, id int, info *Siginfo, options int, rusage *Rusage) (err error) + +func Mkfifo(path string, mode uint32) error { + return Mknod(path, mode|S_IFIFO, 0) +} + +func Mkfifoat(dirfd int, path string, mode uint32) error { + return Mknodat(dirfd, path, mode|S_IFIFO, 0) +} + +func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Family = AF_INET + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Addr = sa.Addr + return unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil +} + +func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Family = AF_INET6 + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Scope_id = sa.ZoneId + sa.raw.Addr = sa.Addr + return unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil +} + +func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) { + name := sa.Name + n := len(name) + if n >= len(sa.raw.Path) { + return nil, 0, EINVAL + } + sa.raw.Family = AF_UNIX + for i := range n { + sa.raw.Path[i] = int8(name[i]) + } + // length is family (uint16), name, NUL. + sl := _Socklen(2) + if n > 0 { + sl += _Socklen(n) + 1 + } + if sa.raw.Path[0] == '@' || (sa.raw.Path[0] == 0 && sl > 3) { + // Check sl > 3 so we don't change unnamed socket behavior. + sa.raw.Path[0] = 0 + // Don't count trailing NUL for abstract address. + sl-- + } + + return unsafe.Pointer(&sa.raw), sl, nil +} + +// SockaddrLinklayer implements the Sockaddr interface for AF_PACKET type sockets. +type SockaddrLinklayer struct { + Protocol uint16 + Ifindex int + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]byte + raw RawSockaddrLinklayer +} + +func (sa *SockaddrLinklayer) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff { + return nil, 0, EINVAL + } + sa.raw.Family = AF_PACKET + sa.raw.Protocol = sa.Protocol + sa.raw.Ifindex = int32(sa.Ifindex) + sa.raw.Hatype = sa.Hatype + sa.raw.Pkttype = sa.Pkttype + sa.raw.Halen = sa.Halen + sa.raw.Addr = sa.Addr + return unsafe.Pointer(&sa.raw), SizeofSockaddrLinklayer, nil +} + +// SockaddrNetlink implements the Sockaddr interface for AF_NETLINK type sockets. +type SockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 + raw RawSockaddrNetlink +} + +func (sa *SockaddrNetlink) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_NETLINK + sa.raw.Pad = sa.Pad + sa.raw.Pid = sa.Pid + sa.raw.Groups = sa.Groups + return unsafe.Pointer(&sa.raw), SizeofSockaddrNetlink, nil +} + +// SockaddrHCI implements the Sockaddr interface for AF_BLUETOOTH type sockets +// using the HCI protocol. +type SockaddrHCI struct { + Dev uint16 + Channel uint16 + raw RawSockaddrHCI +} + +func (sa *SockaddrHCI) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_BLUETOOTH + sa.raw.Dev = sa.Dev + sa.raw.Channel = sa.Channel + return unsafe.Pointer(&sa.raw), SizeofSockaddrHCI, nil +} + +// SockaddrL2 implements the Sockaddr interface for AF_BLUETOOTH type sockets +// using the L2CAP protocol. +type SockaddrL2 struct { + PSM uint16 + CID uint16 + Addr [6]uint8 + AddrType uint8 + raw RawSockaddrL2 +} + +func (sa *SockaddrL2) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_BLUETOOTH + psm := (*[2]byte)(unsafe.Pointer(&sa.raw.Psm)) + psm[0] = byte(sa.PSM) + psm[1] = byte(sa.PSM >> 8) + for i := range len(sa.Addr) { + sa.raw.Bdaddr[i] = sa.Addr[len(sa.Addr)-1-i] + } + cid := (*[2]byte)(unsafe.Pointer(&sa.raw.Cid)) + cid[0] = byte(sa.CID) + cid[1] = byte(sa.CID >> 8) + sa.raw.Bdaddr_type = sa.AddrType + return unsafe.Pointer(&sa.raw), SizeofSockaddrL2, nil +} + +// SockaddrRFCOMM implements the Sockaddr interface for AF_BLUETOOTH type sockets +// using the RFCOMM protocol. +// +// Server example: +// +// fd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM) +// _ = unix.Bind(fd, &unix.SockaddrRFCOMM{ +// Channel: 1, +// Addr: [6]uint8{0, 0, 0, 0, 0, 0}, // BDADDR_ANY or 00:00:00:00:00:00 +// }) +// _ = Listen(fd, 1) +// nfd, sa, _ := Accept(fd) +// fmt.Printf("conn addr=%v fd=%d", sa.(*unix.SockaddrRFCOMM).Addr, nfd) +// Read(nfd, buf) +// +// Client example: +// +// fd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM) +// _ = Connect(fd, &SockaddrRFCOMM{ +// Channel: 1, +// Addr: [6]byte{0x11, 0x22, 0x33, 0xaa, 0xbb, 0xcc}, // CC:BB:AA:33:22:11 +// }) +// Write(fd, []byte(`hello`)) +type SockaddrRFCOMM struct { + // Addr represents a bluetooth address, byte ordering is little-endian. + Addr [6]uint8 + + // Channel is a designated bluetooth channel, only 1-30 are available for use. + // Since Linux 2.6.7 and further zero value is the first available channel. + Channel uint8 + + raw RawSockaddrRFCOMM +} + +func (sa *SockaddrRFCOMM) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_BLUETOOTH + sa.raw.Channel = sa.Channel + sa.raw.Bdaddr = sa.Addr + return unsafe.Pointer(&sa.raw), SizeofSockaddrRFCOMM, nil +} + +// SockaddrCAN implements the Sockaddr interface for AF_CAN type sockets. +// The RxID and TxID fields are used for transport protocol addressing in +// (CAN_TP16, CAN_TP20, CAN_MCNET, and CAN_ISOTP), they can be left with +// zero values for CAN_RAW and CAN_BCM sockets as they have no meaning. +// +// The SockaddrCAN struct must be bound to the socket file descriptor +// using Bind before the CAN socket can be used. +// +// // Read one raw CAN frame +// fd, _ := Socket(AF_CAN, SOCK_RAW, CAN_RAW) +// addr := &SockaddrCAN{Ifindex: index} +// Bind(fd, addr) +// frame := make([]byte, 16) +// Read(fd, frame) +// +// The full SocketCAN documentation can be found in the linux kernel +// archives at: https://www.kernel.org/doc/Documentation/networking/can.txt +type SockaddrCAN struct { + Ifindex int + RxID uint32 + TxID uint32 + raw RawSockaddrCAN +} + +func (sa *SockaddrCAN) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff { + return nil, 0, EINVAL + } + sa.raw.Family = AF_CAN + sa.raw.Ifindex = int32(sa.Ifindex) + rx := (*[4]byte)(unsafe.Pointer(&sa.RxID)) + for i := range 4 { + sa.raw.Addr[i] = rx[i] + } + tx := (*[4]byte)(unsafe.Pointer(&sa.TxID)) + for i := range 4 { + sa.raw.Addr[i+4] = tx[i] + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrCAN, nil +} + +// SockaddrCANJ1939 implements the Sockaddr interface for AF_CAN using J1939 +// protocol (https://en.wikipedia.org/wiki/SAE_J1939). For more information +// on the purposes of the fields, check the official linux kernel documentation +// available here: https://www.kernel.org/doc/Documentation/networking/j1939.rst +type SockaddrCANJ1939 struct { + Ifindex int + Name uint64 + PGN uint32 + Addr uint8 + raw RawSockaddrCAN +} + +func (sa *SockaddrCANJ1939) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff { + return nil, 0, EINVAL + } + sa.raw.Family = AF_CAN + sa.raw.Ifindex = int32(sa.Ifindex) + n := (*[8]byte)(unsafe.Pointer(&sa.Name)) + for i := range 8 { + sa.raw.Addr[i] = n[i] + } + p := (*[4]byte)(unsafe.Pointer(&sa.PGN)) + for i := range 4 { + sa.raw.Addr[i+8] = p[i] + } + sa.raw.Addr[12] = sa.Addr + return unsafe.Pointer(&sa.raw), SizeofSockaddrCAN, nil +} + +// SockaddrALG implements the Sockaddr interface for AF_ALG type sockets. +// SockaddrALG enables userspace access to the Linux kernel's cryptography +// subsystem. The Type and Name fields specify which type of hash or cipher +// should be used with a given socket. +// +// To create a file descriptor that provides access to a hash or cipher, both +// Bind and Accept must be used. Once the setup process is complete, input +// data can be written to the socket, processed by the kernel, and then read +// back as hash output or ciphertext. +// +// Here is an example of using an AF_ALG socket with SHA1 hashing. +// The initial socket setup process is as follows: +// +// // Open a socket to perform SHA1 hashing. +// fd, _ := unix.Socket(unix.AF_ALG, unix.SOCK_SEQPACKET, 0) +// addr := &unix.SockaddrALG{Type: "hash", Name: "sha1"} +// unix.Bind(fd, addr) +// // Note: unix.Accept does not work at this time; must invoke accept() +// // manually using unix.Syscall. +// hashfd, _, _ := unix.Syscall(unix.SYS_ACCEPT, uintptr(fd), 0, 0) +// +// Once a file descriptor has been returned from Accept, it may be used to +// perform SHA1 hashing. The descriptor is not safe for concurrent use, but +// may be re-used repeatedly with subsequent Write and Read operations. +// +// When hashing a small byte slice or string, a single Write and Read may +// be used: +// +// // Assume hashfd is already configured using the setup process. +// hash := os.NewFile(hashfd, "sha1") +// // Hash an input string and read the results. Each Write discards +// // previous hash state. Read always reads the current state. +// b := make([]byte, 20) +// for i := 0; i < 2; i++ { +// io.WriteString(hash, "Hello, world.") +// hash.Read(b) +// fmt.Println(hex.EncodeToString(b)) +// } +// // Output: +// // 2ae01472317d1935a84797ec1983ae243fc6aa28 +// // 2ae01472317d1935a84797ec1983ae243fc6aa28 +// +// For hashing larger byte slices, or byte streams such as those read from +// a file or socket, use Sendto with MSG_MORE to instruct the kernel to update +// the hash digest instead of creating a new one for a given chunk and finalizing it. +// +// // Assume hashfd and addr are already configured using the setup process. +// hash := os.NewFile(hashfd, "sha1") +// // Hash the contents of a file. +// f, _ := os.Open("/tmp/linux-4.10-rc7.tar.xz") +// b := make([]byte, 4096) +// for { +// n, err := f.Read(b) +// if err == io.EOF { +// break +// } +// unix.Sendto(hashfd, b[:n], unix.MSG_MORE, addr) +// } +// hash.Read(b) +// fmt.Println(hex.EncodeToString(b)) +// // Output: 85cdcad0c06eef66f805ecce353bec9accbeecc5 +// +// For more information, see: http://www.chronox.de/crypto-API/crypto/userspace-if.html. +type SockaddrALG struct { + Type string + Name string + Feature uint32 + Mask uint32 + raw RawSockaddrALG +} + +func (sa *SockaddrALG) sockaddr() (unsafe.Pointer, _Socklen, error) { + // Leave room for NUL byte terminator. + if len(sa.Type) > len(sa.raw.Type)-1 { + return nil, 0, EINVAL + } + if len(sa.Name) > len(sa.raw.Name)-1 { + return nil, 0, EINVAL + } + + sa.raw.Family = AF_ALG + sa.raw.Feat = sa.Feature + sa.raw.Mask = sa.Mask + + copy(sa.raw.Type[:], sa.Type) + copy(sa.raw.Name[:], sa.Name) + + return unsafe.Pointer(&sa.raw), SizeofSockaddrALG, nil +} + +// SockaddrVM implements the Sockaddr interface for AF_VSOCK type sockets. +// SockaddrVM provides access to Linux VM sockets: a mechanism that enables +// bidirectional communication between a hypervisor and its guest virtual +// machines. +type SockaddrVM struct { + // CID and Port specify a context ID and port address for a VM socket. + // Guests have a unique CID, and hosts may have a well-known CID of: + // - VMADDR_CID_HYPERVISOR: refers to the hypervisor process. + // - VMADDR_CID_LOCAL: refers to local communication (loopback). + // - VMADDR_CID_HOST: refers to other processes on the host. + CID uint32 + Port uint32 + Flags uint8 + raw RawSockaddrVM +} + +func (sa *SockaddrVM) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_VSOCK + sa.raw.Port = sa.Port + sa.raw.Cid = sa.CID + sa.raw.Flags = sa.Flags + + return unsafe.Pointer(&sa.raw), SizeofSockaddrVM, nil +} + +type SockaddrXDP struct { + Flags uint16 + Ifindex uint32 + QueueID uint32 + SharedUmemFD uint32 + raw RawSockaddrXDP +} + +func (sa *SockaddrXDP) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_XDP + sa.raw.Flags = sa.Flags + sa.raw.Ifindex = sa.Ifindex + sa.raw.Queue_id = sa.QueueID + sa.raw.Shared_umem_fd = sa.SharedUmemFD + + return unsafe.Pointer(&sa.raw), SizeofSockaddrXDP, nil +} + +// This constant mirrors the #define of PX_PROTO_OE in +// linux/if_pppox.h. We're defining this by hand here instead of +// autogenerating through mkerrors.sh because including +// linux/if_pppox.h causes some declaration conflicts with other +// includes (linux/if_pppox.h includes linux/in.h, which conflicts +// with netinet/in.h). Given that we only need a single zero constant +// out of that file, it's cleaner to just define it by hand here. +const px_proto_oe = 0 + +type SockaddrPPPoE struct { + SID uint16 + Remote []byte + Dev string + raw RawSockaddrPPPoX +} + +func (sa *SockaddrPPPoE) sockaddr() (unsafe.Pointer, _Socklen, error) { + if len(sa.Remote) != 6 { + return nil, 0, EINVAL + } + if len(sa.Dev) > IFNAMSIZ-1 { + return nil, 0, EINVAL + } + + *(*uint16)(unsafe.Pointer(&sa.raw[0])) = AF_PPPOX + // This next field is in host-endian byte order. We can't use the + // same unsafe pointer cast as above, because this value is not + // 32-bit aligned and some architectures don't allow unaligned + // access. + // + // However, the value of px_proto_oe is 0, so we can use + // encoding/binary helpers to write the bytes without worrying + // about the ordering. + binary.BigEndian.PutUint32(sa.raw[2:6], px_proto_oe) + // This field is deliberately big-endian, unlike the previous + // one. The kernel expects SID to be in network byte order. + binary.BigEndian.PutUint16(sa.raw[6:8], sa.SID) + copy(sa.raw[8:14], sa.Remote) + for i := 14; i < 14+IFNAMSIZ; i++ { + sa.raw[i] = 0 + } + copy(sa.raw[14:], sa.Dev) + return unsafe.Pointer(&sa.raw), SizeofSockaddrPPPoX, nil +} + +// SockaddrTIPC implements the Sockaddr interface for AF_TIPC type sockets. +// For more information on TIPC, see: http://tipc.sourceforge.net/. +type SockaddrTIPC struct { + // Scope is the publication scopes when binding service/service range. + // Should be set to TIPC_CLUSTER_SCOPE or TIPC_NODE_SCOPE. + Scope int + + // Addr is the type of address used to manipulate a socket. Addr must be + // one of: + // - *TIPCSocketAddr: "id" variant in the C addr union + // - *TIPCServiceRange: "nameseq" variant in the C addr union + // - *TIPCServiceName: "name" variant in the C addr union + // + // If nil, EINVAL will be returned when the structure is used. + Addr TIPCAddr + + raw RawSockaddrTIPC +} + +// TIPCAddr is implemented by types that can be used as an address for +// SockaddrTIPC. It is only implemented by *TIPCSocketAddr, *TIPCServiceRange, +// and *TIPCServiceName. +type TIPCAddr interface { + tipcAddrtype() uint8 + tipcAddr() [12]byte +} + +func (sa *TIPCSocketAddr) tipcAddr() [12]byte { + var out [12]byte + copy(out[:], (*(*[unsafe.Sizeof(TIPCSocketAddr{})]byte)(unsafe.Pointer(sa)))[:]) + return out +} + +func (sa *TIPCSocketAddr) tipcAddrtype() uint8 { return TIPC_SOCKET_ADDR } + +func (sa *TIPCServiceRange) tipcAddr() [12]byte { + var out [12]byte + copy(out[:], (*(*[unsafe.Sizeof(TIPCServiceRange{})]byte)(unsafe.Pointer(sa)))[:]) + return out +} + +func (sa *TIPCServiceRange) tipcAddrtype() uint8 { return TIPC_SERVICE_RANGE } + +func (sa *TIPCServiceName) tipcAddr() [12]byte { + var out [12]byte + copy(out[:], (*(*[unsafe.Sizeof(TIPCServiceName{})]byte)(unsafe.Pointer(sa)))[:]) + return out +} + +func (sa *TIPCServiceName) tipcAddrtype() uint8 { return TIPC_SERVICE_ADDR } + +func (sa *SockaddrTIPC) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Addr == nil { + return nil, 0, EINVAL + } + sa.raw.Family = AF_TIPC + sa.raw.Scope = int8(sa.Scope) + sa.raw.Addrtype = sa.Addr.tipcAddrtype() + sa.raw.Addr = sa.Addr.tipcAddr() + return unsafe.Pointer(&sa.raw), SizeofSockaddrTIPC, nil +} + +// SockaddrL2TPIP implements the Sockaddr interface for IPPROTO_L2TP/AF_INET sockets. +type SockaddrL2TPIP struct { + Addr [4]byte + ConnId uint32 + raw RawSockaddrL2TPIP +} + +func (sa *SockaddrL2TPIP) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_INET + sa.raw.Conn_id = sa.ConnId + sa.raw.Addr = sa.Addr + return unsafe.Pointer(&sa.raw), SizeofSockaddrL2TPIP, nil +} + +// SockaddrL2TPIP6 implements the Sockaddr interface for IPPROTO_L2TP/AF_INET6 sockets. +type SockaddrL2TPIP6 struct { + Addr [16]byte + ZoneId uint32 + ConnId uint32 + raw RawSockaddrL2TPIP6 +} + +func (sa *SockaddrL2TPIP6) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_INET6 + sa.raw.Conn_id = sa.ConnId + sa.raw.Scope_id = sa.ZoneId + sa.raw.Addr = sa.Addr + return unsafe.Pointer(&sa.raw), SizeofSockaddrL2TPIP6, nil +} + +// SockaddrIUCV implements the Sockaddr interface for AF_IUCV sockets. +type SockaddrIUCV struct { + UserID string + Name string + raw RawSockaddrIUCV +} + +func (sa *SockaddrIUCV) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_IUCV + // These are EBCDIC encoded by the kernel, but we still need to pad them + // with blanks. Initializing with blanks allows the caller to feed in either + // a padded or an unpadded string. + for i := range 8 { + sa.raw.Nodeid[i] = ' ' + sa.raw.User_id[i] = ' ' + sa.raw.Name[i] = ' ' + } + if len(sa.UserID) > 8 || len(sa.Name) > 8 { + return nil, 0, EINVAL + } + for i, b := range []byte(sa.UserID[:]) { + sa.raw.User_id[i] = int8(b) + } + for i, b := range []byte(sa.Name[:]) { + sa.raw.Name[i] = int8(b) + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrIUCV, nil +} + +type SockaddrNFC struct { + DeviceIdx uint32 + TargetIdx uint32 + NFCProtocol uint32 + raw RawSockaddrNFC +} + +func (sa *SockaddrNFC) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Sa_family = AF_NFC + sa.raw.Dev_idx = sa.DeviceIdx + sa.raw.Target_idx = sa.TargetIdx + sa.raw.Nfc_protocol = sa.NFCProtocol + return unsafe.Pointer(&sa.raw), SizeofSockaddrNFC, nil +} + +type SockaddrNFCLLCP struct { + DeviceIdx uint32 + TargetIdx uint32 + NFCProtocol uint32 + DestinationSAP uint8 + SourceSAP uint8 + ServiceName string + raw RawSockaddrNFCLLCP +} + +func (sa *SockaddrNFCLLCP) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Sa_family = AF_NFC + sa.raw.Dev_idx = sa.DeviceIdx + sa.raw.Target_idx = sa.TargetIdx + sa.raw.Nfc_protocol = sa.NFCProtocol + sa.raw.Dsap = sa.DestinationSAP + sa.raw.Ssap = sa.SourceSAP + if len(sa.ServiceName) > len(sa.raw.Service_name) { + return nil, 0, EINVAL + } + copy(sa.raw.Service_name[:], sa.ServiceName) + sa.raw.SetServiceNameLen(len(sa.ServiceName)) + return unsafe.Pointer(&sa.raw), SizeofSockaddrNFCLLCP, nil +} + +var socketProtocol = func(fd int) (int, error) { + return GetsockoptInt(fd, SOL_SOCKET, SO_PROTOCOL) +} + +func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { + switch rsa.Addr.Family { + case AF_NETLINK: + pp := (*RawSockaddrNetlink)(unsafe.Pointer(rsa)) + sa := new(SockaddrNetlink) + sa.Family = pp.Family + sa.Pad = pp.Pad + sa.Pid = pp.Pid + sa.Groups = pp.Groups + return sa, nil + + case AF_PACKET: + pp := (*RawSockaddrLinklayer)(unsafe.Pointer(rsa)) + sa := new(SockaddrLinklayer) + sa.Protocol = pp.Protocol + sa.Ifindex = int(pp.Ifindex) + sa.Hatype = pp.Hatype + sa.Pkttype = pp.Pkttype + sa.Halen = pp.Halen + sa.Addr = pp.Addr + return sa, nil + + case AF_UNIX: + pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa)) + sa := new(SockaddrUnix) + if pp.Path[0] == 0 { + // "Abstract" Unix domain socket. + // Rewrite leading NUL as @ for textual display. + // (This is the standard convention.) + // Not friendly to overwrite in place, + // but the callers below don't care. + pp.Path[0] = '@' + } + + // Assume path ends at NUL. + // This is not technically the Linux semantics for + // abstract Unix domain sockets--they are supposed + // to be uninterpreted fixed-size binary blobs--but + // everyone uses this convention. + n := 0 + for n < len(pp.Path) && pp.Path[n] != 0 { + n++ + } + sa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n)) + return sa, nil + + case AF_INET: + proto, err := socketProtocol(fd) + if err != nil { + return nil, err + } + + switch proto { + case IPPROTO_L2TP: + pp := (*RawSockaddrL2TPIP)(unsafe.Pointer(rsa)) + sa := new(SockaddrL2TPIP) + sa.ConnId = pp.Conn_id + sa.Addr = pp.Addr + return sa, nil + default: + pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet4) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.Addr = pp.Addr + return sa, nil + } + + case AF_INET6: + proto, err := socketProtocol(fd) + if err != nil { + return nil, err + } + + switch proto { + case IPPROTO_L2TP: + pp := (*RawSockaddrL2TPIP6)(unsafe.Pointer(rsa)) + sa := new(SockaddrL2TPIP6) + sa.ConnId = pp.Conn_id + sa.ZoneId = pp.Scope_id + sa.Addr = pp.Addr + return sa, nil + default: + pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet6) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.ZoneId = pp.Scope_id + sa.Addr = pp.Addr + return sa, nil + } + + case AF_VSOCK: + pp := (*RawSockaddrVM)(unsafe.Pointer(rsa)) + sa := &SockaddrVM{ + CID: pp.Cid, + Port: pp.Port, + Flags: pp.Flags, + } + return sa, nil + case AF_BLUETOOTH: + proto, err := socketProtocol(fd) + if err != nil { + return nil, err + } + // only BTPROTO_L2CAP and BTPROTO_RFCOMM can accept connections + switch proto { + case BTPROTO_L2CAP: + pp := (*RawSockaddrL2)(unsafe.Pointer(rsa)) + sa := &SockaddrL2{ + PSM: pp.Psm, + CID: pp.Cid, + Addr: pp.Bdaddr, + AddrType: pp.Bdaddr_type, + } + return sa, nil + case BTPROTO_RFCOMM: + pp := (*RawSockaddrRFCOMM)(unsafe.Pointer(rsa)) + sa := &SockaddrRFCOMM{ + Channel: pp.Channel, + Addr: pp.Bdaddr, + } + return sa, nil + } + case AF_XDP: + pp := (*RawSockaddrXDP)(unsafe.Pointer(rsa)) + sa := &SockaddrXDP{ + Flags: pp.Flags, + Ifindex: pp.Ifindex, + QueueID: pp.Queue_id, + SharedUmemFD: pp.Shared_umem_fd, + } + return sa, nil + case AF_PPPOX: + pp := (*RawSockaddrPPPoX)(unsafe.Pointer(rsa)) + if binary.BigEndian.Uint32(pp[2:6]) != px_proto_oe { + return nil, EINVAL + } + sa := &SockaddrPPPoE{ + SID: binary.BigEndian.Uint16(pp[6:8]), + Remote: pp[8:14], + } + for i := 14; i < 14+IFNAMSIZ; i++ { + if pp[i] == 0 { + sa.Dev = string(pp[14:i]) + break + } + } + return sa, nil + case AF_TIPC: + pp := (*RawSockaddrTIPC)(unsafe.Pointer(rsa)) + + sa := &SockaddrTIPC{ + Scope: int(pp.Scope), + } + + // Determine which union variant is present in pp.Addr by checking + // pp.Addrtype. + switch pp.Addrtype { + case TIPC_SERVICE_RANGE: + sa.Addr = (*TIPCServiceRange)(unsafe.Pointer(&pp.Addr)) + case TIPC_SERVICE_ADDR: + sa.Addr = (*TIPCServiceName)(unsafe.Pointer(&pp.Addr)) + case TIPC_SOCKET_ADDR: + sa.Addr = (*TIPCSocketAddr)(unsafe.Pointer(&pp.Addr)) + default: + return nil, EINVAL + } + + return sa, nil + case AF_IUCV: + pp := (*RawSockaddrIUCV)(unsafe.Pointer(rsa)) + + var user [8]byte + var name [8]byte + + for i := range 8 { + user[i] = byte(pp.User_id[i]) + name[i] = byte(pp.Name[i]) + } + + sa := &SockaddrIUCV{ + UserID: string(user[:]), + Name: string(name[:]), + } + return sa, nil + + case AF_CAN: + proto, err := socketProtocol(fd) + if err != nil { + return nil, err + } + + pp := (*RawSockaddrCAN)(unsafe.Pointer(rsa)) + + switch proto { + case CAN_J1939: + sa := &SockaddrCANJ1939{ + Ifindex: int(pp.Ifindex), + } + name := (*[8]byte)(unsafe.Pointer(&sa.Name)) + for i := range 8 { + name[i] = pp.Addr[i] + } + pgn := (*[4]byte)(unsafe.Pointer(&sa.PGN)) + for i := range 4 { + pgn[i] = pp.Addr[i+8] + } + addr := (*[1]byte)(unsafe.Pointer(&sa.Addr)) + addr[0] = pp.Addr[12] + return sa, nil + default: + sa := &SockaddrCAN{ + Ifindex: int(pp.Ifindex), + } + rx := (*[4]byte)(unsafe.Pointer(&sa.RxID)) + for i := range 4 { + rx[i] = pp.Addr[i] + } + tx := (*[4]byte)(unsafe.Pointer(&sa.TxID)) + for i := range 4 { + tx[i] = pp.Addr[i+4] + } + return sa, nil + } + case AF_NFC: + proto, err := socketProtocol(fd) + if err != nil { + return nil, err + } + switch proto { + case NFC_SOCKPROTO_RAW: + pp := (*RawSockaddrNFC)(unsafe.Pointer(rsa)) + sa := &SockaddrNFC{ + DeviceIdx: pp.Dev_idx, + TargetIdx: pp.Target_idx, + NFCProtocol: pp.Nfc_protocol, + } + return sa, nil + case NFC_SOCKPROTO_LLCP: + pp := (*RawSockaddrNFCLLCP)(unsafe.Pointer(rsa)) + if uint64(pp.Service_name_len) > uint64(len(pp.Service_name)) { + return nil, EINVAL + } + sa := &SockaddrNFCLLCP{ + DeviceIdx: pp.Dev_idx, + TargetIdx: pp.Target_idx, + NFCProtocol: pp.Nfc_protocol, + DestinationSAP: pp.Dsap, + SourceSAP: pp.Ssap, + ServiceName: string(pp.Service_name[:pp.Service_name_len]), + } + return sa, nil + default: + return nil, EINVAL + } + } + return nil, EAFNOSUPPORT +} + +func Accept(fd int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept4(fd, &rsa, &len, 0) + if err != nil { + return + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +func Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept4(fd, &rsa, &len, flags) + if err != nil { + return + } + if len > SizeofSockaddrAny { + panic("RawSockaddrAny too small") + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +func Getsockname(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getsockname(fd, &rsa, &len); err != nil { + return + } + return anyToSockaddr(fd, &rsa) +} + +func GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) { + var value IPMreqn + vallen := _Socklen(SizeofIPMreqn) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptUcred(fd, level, opt int) (*Ucred, error) { + var value Ucred + vallen := _Socklen(SizeofUcred) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptTCPInfo(fd, level, opt int) (*TCPInfo, error) { + var value TCPInfo + vallen := _Socklen(SizeofTCPInfo) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +// GetsockoptTCPCCVegasInfo returns algorithm specific congestion control information for a socket using the "vegas" +// algorithm. +// +// The socket's congestion control algorighm can be retrieved via [GetsockoptString] with the [TCP_CONGESTION] option: +// +// algo, err := unix.GetsockoptString(fd, unix.IPPROTO_TCP, unix.TCP_CONGESTION) +func GetsockoptTCPCCVegasInfo(fd, level, opt int) (*TCPVegasInfo, error) { + var value [SizeofTCPCCInfo / 4]uint32 // ensure proper alignment + vallen := _Socklen(SizeofTCPCCInfo) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen) + out := (*TCPVegasInfo)(unsafe.Pointer(&value[0])) + return out, err +} + +// GetsockoptTCPCCDCTCPInfo returns algorithm specific congestion control information for a socket using the "dctp" +// algorithm. +// +// The socket's congestion control algorighm can be retrieved via [GetsockoptString] with the [TCP_CONGESTION] option: +// +// algo, err := unix.GetsockoptString(fd, unix.IPPROTO_TCP, unix.TCP_CONGESTION) +func GetsockoptTCPCCDCTCPInfo(fd, level, opt int) (*TCPDCTCPInfo, error) { + var value [SizeofTCPCCInfo / 4]uint32 // ensure proper alignment + vallen := _Socklen(SizeofTCPCCInfo) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen) + out := (*TCPDCTCPInfo)(unsafe.Pointer(&value[0])) + return out, err +} + +// GetsockoptTCPCCBBRInfo returns algorithm specific congestion control information for a socket using the "bbr" +// algorithm. +// +// The socket's congestion control algorighm can be retrieved via [GetsockoptString] with the [TCP_CONGESTION] option: +// +// algo, err := unix.GetsockoptString(fd, unix.IPPROTO_TCP, unix.TCP_CONGESTION) +func GetsockoptTCPCCBBRInfo(fd, level, opt int) (*TCPBBRInfo, error) { + var value [SizeofTCPCCInfo / 4]uint32 // ensure proper alignment + vallen := _Socklen(SizeofTCPCCInfo) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen) + out := (*TCPBBRInfo)(unsafe.Pointer(&value[0])) + return out, err +} + +// GetsockoptString returns the string value of the socket option opt for the +// socket associated with fd at the given socket level. +func GetsockoptString(fd, level, opt int) (string, error) { + buf := make([]byte, 256) + vallen := _Socklen(len(buf)) + err := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen) + if err != nil { + if err == ERANGE { + buf = make([]byte, vallen) + err = getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen) + } + if err != nil { + return "", err + } + } + return ByteSliceToString(buf[:vallen]), nil +} + +func GetsockoptTpacketStats(fd, level, opt int) (*TpacketStats, error) { + var value TpacketStats + vallen := _Socklen(SizeofTpacketStats) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptTpacketStatsV3(fd, level, opt int) (*TpacketStatsV3, error) { + var value TpacketStatsV3 + vallen := _Socklen(SizeofTpacketStatsV3) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq)) +} + +func SetsockoptPacketMreq(fd, level, opt int, mreq *PacketMreq) error { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq)) +} + +// SetsockoptSockFprog attaches a classic BPF or an extended BPF program to a +// socket to filter incoming packets. See 'man 7 socket' for usage information. +func SetsockoptSockFprog(fd, level, opt int, fprog *SockFprog) error { + return setsockopt(fd, level, opt, unsafe.Pointer(fprog), unsafe.Sizeof(*fprog)) +} + +func SetsockoptCanRawFilter(fd, level, opt int, filter []CanFilter) error { + var p unsafe.Pointer + if len(filter) > 0 { + p = unsafe.Pointer(&filter[0]) + } + return setsockopt(fd, level, opt, p, uintptr(len(filter)*SizeofCanFilter)) +} + +func SetsockoptTpacketReq(fd, level, opt int, tp *TpacketReq) error { + return setsockopt(fd, level, opt, unsafe.Pointer(tp), unsafe.Sizeof(*tp)) +} + +func SetsockoptTpacketReq3(fd, level, opt int, tp *TpacketReq3) error { + return setsockopt(fd, level, opt, unsafe.Pointer(tp), unsafe.Sizeof(*tp)) +} + +func SetsockoptTCPRepairOpt(fd, level, opt int, o []TCPRepairOpt) (err error) { + if len(o) == 0 { + return EINVAL + } + return setsockopt(fd, level, opt, unsafe.Pointer(&o[0]), uintptr(SizeofTCPRepairOpt*len(o))) +} + +func SetsockoptTCPMD5Sig(fd, level, opt int, s *TCPMD5Sig) error { + return setsockopt(fd, level, opt, unsafe.Pointer(s), unsafe.Sizeof(*s)) +} + +// Keyctl Commands (http://man7.org/linux/man-pages/man2/keyctl.2.html) + +// KeyctlInt calls keyctl commands in which each argument is an int. +// These commands are KEYCTL_REVOKE, KEYCTL_CHOWN, KEYCTL_CLEAR, KEYCTL_LINK, +// KEYCTL_UNLINK, KEYCTL_NEGATE, KEYCTL_SET_REQKEY_KEYRING, KEYCTL_SET_TIMEOUT, +// KEYCTL_ASSUME_AUTHORITY, KEYCTL_SESSION_TO_PARENT, KEYCTL_REJECT, +// KEYCTL_INVALIDATE, and KEYCTL_GET_PERSISTENT. +//sys KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) = SYS_KEYCTL + +// KeyctlBuffer calls keyctl commands in which the third and fourth +// arguments are a buffer and its length, respectively. +// These commands are KEYCTL_UPDATE, KEYCTL_READ, and KEYCTL_INSTANTIATE. +//sys KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) = SYS_KEYCTL + +// KeyctlString calls keyctl commands which return a string. +// These commands are KEYCTL_DESCRIBE and KEYCTL_GET_SECURITY. +func KeyctlString(cmd int, id int) (string, error) { + // We must loop as the string data may change in between the syscalls. + // We could allocate a large buffer here to reduce the chance that the + // syscall needs to be called twice; however, this is unnecessary as + // the performance loss is negligible. + var buffer []byte + for { + // Try to fill the buffer with data + length, err := KeyctlBuffer(cmd, id, buffer, 0) + if err != nil { + return "", err + } + + // Check if the data was written + if length <= len(buffer) { + // Exclude the null terminator + return string(buffer[:length-1]), nil + } + + // Make a bigger buffer if needed + buffer = make([]byte, length) + } +} + +// Keyctl commands with special signatures. + +// KeyctlGetKeyringID implements the KEYCTL_GET_KEYRING_ID command. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_get_keyring_ID.3.html +func KeyctlGetKeyringID(id int, create bool) (ringid int, err error) { + createInt := 0 + if create { + createInt = 1 + } + return KeyctlInt(KEYCTL_GET_KEYRING_ID, id, createInt, 0, 0) +} + +// KeyctlSetperm implements the KEYCTL_SETPERM command. The perm value is the +// key handle permission mask as described in the "keyctl setperm" section of +// http://man7.org/linux/man-pages/man1/keyctl.1.html. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_setperm.3.html +func KeyctlSetperm(id int, perm uint32) error { + _, err := KeyctlInt(KEYCTL_SETPERM, id, int(perm), 0, 0) + return err +} + +//sys keyctlJoin(cmd int, arg2 string) (ret int, err error) = SYS_KEYCTL + +// KeyctlJoinSessionKeyring implements the KEYCTL_JOIN_SESSION_KEYRING command. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_join_session_keyring.3.html +func KeyctlJoinSessionKeyring(name string) (ringid int, err error) { + return keyctlJoin(KEYCTL_JOIN_SESSION_KEYRING, name) +} + +//sys keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) = SYS_KEYCTL + +// KeyctlSearch implements the KEYCTL_SEARCH command. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_search.3.html +func KeyctlSearch(ringid int, keyType, description string, destRingid int) (id int, err error) { + return keyctlSearch(KEYCTL_SEARCH, ringid, keyType, description, destRingid) +} + +//sys keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) = SYS_KEYCTL + +// KeyctlInstantiateIOV implements the KEYCTL_INSTANTIATE_IOV command. This +// command is similar to KEYCTL_INSTANTIATE, except that the payload is a slice +// of Iovec (each of which represents a buffer) instead of a single buffer. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_instantiate_iov.3.html +func KeyctlInstantiateIOV(id int, payload []Iovec, ringid int) error { + return keyctlIOV(KEYCTL_INSTANTIATE_IOV, id, payload, ringid) +} + +//sys keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) = SYS_KEYCTL + +// KeyctlDHCompute implements the KEYCTL_DH_COMPUTE command. This command +// computes a Diffie-Hellman shared secret based on the provide params. The +// secret is written to the provided buffer and the returned size is the number +// of bytes written (returning an error if there is insufficient space in the +// buffer). If a nil buffer is passed in, this function returns the minimum +// buffer length needed to store the appropriate data. Note that this differs +// from KEYCTL_READ's behavior which always returns the requested payload size. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_dh_compute.3.html +func KeyctlDHCompute(params *KeyctlDHParams, buffer []byte) (size int, err error) { + return keyctlDH(KEYCTL_DH_COMPUTE, params, buffer) +} + +// KeyctlRestrictKeyring implements the KEYCTL_RESTRICT_KEYRING command. This +// command limits the set of keys that can be linked to the keyring, regardless +// of keyring permissions. The command requires the "setattr" permission. +// +// When called with an empty keyType the command locks the keyring, preventing +// any further keys from being linked to the keyring. +// +// The "asymmetric" keyType defines restrictions requiring key payloads to be +// DER encoded X.509 certificates signed by keys in another keyring. Restrictions +// for "asymmetric" include "builtin_trusted", "builtin_and_secondary_trusted", +// "key_or_keyring:<key>", and "key_or_keyring:<key>:chain". +// +// As of Linux 4.12, only the "asymmetric" keyType defines type-specific +// restrictions. +// +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_restrict_keyring.3.html +// http://man7.org/linux/man-pages/man2/keyctl.2.html +func KeyctlRestrictKeyring(ringid int, keyType string, restriction string) error { + if keyType == "" { + return keyctlRestrictKeyring(KEYCTL_RESTRICT_KEYRING, ringid) + } + return keyctlRestrictKeyringByType(KEYCTL_RESTRICT_KEYRING, ringid, keyType, restriction) +} + +//sys keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) = SYS_KEYCTL +//sys keyctlRestrictKeyring(cmd int, arg2 int) (err error) = SYS_KEYCTL + +func recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) { + var msg Msghdr + msg.Name = (*byte)(unsafe.Pointer(rsa)) + msg.Namelen = uint32(SizeofSockaddrAny) + var dummy byte + if len(oob) > 0 { + if emptyIovecs(iov) { + var sockType int + sockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE) + if err != nil { + return + } + // receive at least one normal byte + if sockType != SOCK_DGRAM { + var iova [1]Iovec + iova[0].Base = &dummy + iova[0].SetLen(1) + iov = iova[:] + } + } + msg.Control = &oob[0] + msg.SetControllen(len(oob)) + } + if len(iov) > 0 { + msg.Iov = &iov[0] + msg.SetIovlen(len(iov)) + } + if n, err = recvmsg(fd, &msg, flags); err != nil { + return + } + oobn = int(msg.Controllen) + recvflags = int(msg.Flags) + return +} + +func sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) { + var msg Msghdr + msg.Name = (*byte)(ptr) + msg.Namelen = uint32(salen) + var dummy byte + var empty bool + if len(oob) > 0 { + empty = emptyIovecs(iov) + if empty { + var sockType int + sockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE) + if err != nil { + return 0, err + } + // send at least one normal byte + if sockType != SOCK_DGRAM { + var iova [1]Iovec + iova[0].Base = &dummy + iova[0].SetLen(1) + iov = iova[:] + } + } + msg.Control = &oob[0] + msg.SetControllen(len(oob)) + } + if len(iov) > 0 { + msg.Iov = &iov[0] + msg.SetIovlen(len(iov)) + } + if n, err = sendmsg(fd, &msg, flags); err != nil { + return 0, err + } + if len(oob) > 0 && empty { + n = 0 + } + return n, nil +} + +// BindToDevice binds the socket associated with fd to device. +func BindToDevice(fd int, device string) (err error) { + return SetsockoptString(fd, SOL_SOCKET, SO_BINDTODEVICE, device) +} + +//sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error) +//sys ptracePtr(request int, pid int, addr uintptr, data unsafe.Pointer) (err error) = SYS_PTRACE + +func ptracePeek(req int, pid int, addr uintptr, out []byte) (count int, err error) { + // The peek requests are machine-size oriented, so we wrap it + // to retrieve arbitrary-length data. + + // The ptrace syscall differs from glibc's ptrace. + // Peeks returns the word in *data, not as the return value. + + var buf [SizeofPtr]byte + + // Leading edge. PEEKTEXT/PEEKDATA don't require aligned + // access (PEEKUSER warns that it might), but if we don't + // align our reads, we might straddle an unmapped page + // boundary and not get the bytes leading up to the page + // boundary. + n := 0 + if addr%SizeofPtr != 0 { + err = ptracePtr(req, pid, addr-addr%SizeofPtr, unsafe.Pointer(&buf[0])) + if err != nil { + return 0, err + } + n += copy(out, buf[addr%SizeofPtr:]) + out = out[n:] + } + + // Remainder. + for len(out) > 0 { + // We use an internal buffer to guarantee alignment. + // It's not documented if this is necessary, but we're paranoid. + err = ptracePtr(req, pid, addr+uintptr(n), unsafe.Pointer(&buf[0])) + if err != nil { + return n, err + } + copied := copy(out, buf[0:]) + n += copied + out = out[copied:] + } + + return n, nil +} + +func PtracePeekText(pid int, addr uintptr, out []byte) (count int, err error) { + return ptracePeek(PTRACE_PEEKTEXT, pid, addr, out) +} + +func PtracePeekData(pid int, addr uintptr, out []byte) (count int, err error) { + return ptracePeek(PTRACE_PEEKDATA, pid, addr, out) +} + +func PtracePeekUser(pid int, addr uintptr, out []byte) (count int, err error) { + return ptracePeek(PTRACE_PEEKUSR, pid, addr, out) +} + +func ptracePoke(pokeReq int, peekReq int, pid int, addr uintptr, data []byte) (count int, err error) { + // As for ptracePeek, we need to align our accesses to deal + // with the possibility of straddling an invalid page. + + // Leading edge. + n := 0 + if addr%SizeofPtr != 0 { + var buf [SizeofPtr]byte + err = ptracePtr(peekReq, pid, addr-addr%SizeofPtr, unsafe.Pointer(&buf[0])) + if err != nil { + return 0, err + } + n += copy(buf[addr%SizeofPtr:], data) + word := *((*uintptr)(unsafe.Pointer(&buf[0]))) + err = ptrace(pokeReq, pid, addr-addr%SizeofPtr, word) + if err != nil { + return 0, err + } + data = data[n:] + } + + // Interior. + for len(data) > SizeofPtr { + word := *((*uintptr)(unsafe.Pointer(&data[0]))) + err = ptrace(pokeReq, pid, addr+uintptr(n), word) + if err != nil { + return n, err + } + n += SizeofPtr + data = data[SizeofPtr:] + } + + // Trailing edge. + if len(data) > 0 { + var buf [SizeofPtr]byte + err = ptracePtr(peekReq, pid, addr+uintptr(n), unsafe.Pointer(&buf[0])) + if err != nil { + return n, err + } + copy(buf[0:], data) + word := *((*uintptr)(unsafe.Pointer(&buf[0]))) + err = ptrace(pokeReq, pid, addr+uintptr(n), word) + if err != nil { + return n, err + } + n += len(data) + } + + return n, nil +} + +func PtracePokeText(pid int, addr uintptr, data []byte) (count int, err error) { + return ptracePoke(PTRACE_POKETEXT, PTRACE_PEEKTEXT, pid, addr, data) +} + +func PtracePokeData(pid int, addr uintptr, data []byte) (count int, err error) { + return ptracePoke(PTRACE_POKEDATA, PTRACE_PEEKDATA, pid, addr, data) +} + +func PtracePokeUser(pid int, addr uintptr, data []byte) (count int, err error) { + return ptracePoke(PTRACE_POKEUSR, PTRACE_PEEKUSR, pid, addr, data) +} + +// elfNT_PRSTATUS is a copy of the debug/elf.NT_PRSTATUS constant so +// x/sys/unix doesn't need to depend on debug/elf and thus +// compress/zlib, debug/dwarf, and other packages. +const elfNT_PRSTATUS = 1 + +func PtraceGetRegs(pid int, regsout *PtraceRegs) (err error) { + var iov Iovec + iov.Base = (*byte)(unsafe.Pointer(regsout)) + iov.SetLen(int(unsafe.Sizeof(*regsout))) + return ptracePtr(PTRACE_GETREGSET, pid, uintptr(elfNT_PRSTATUS), unsafe.Pointer(&iov)) +} + +func PtraceSetRegs(pid int, regs *PtraceRegs) (err error) { + var iov Iovec + iov.Base = (*byte)(unsafe.Pointer(regs)) + iov.SetLen(int(unsafe.Sizeof(*regs))) + return ptracePtr(PTRACE_SETREGSET, pid, uintptr(elfNT_PRSTATUS), unsafe.Pointer(&iov)) +} + +func PtraceSetOptions(pid int, options int) (err error) { + return ptrace(PTRACE_SETOPTIONS, pid, 0, uintptr(options)) +} + +func PtraceGetEventMsg(pid int) (msg uint, err error) { + var data _C_long + err = ptracePtr(PTRACE_GETEVENTMSG, pid, 0, unsafe.Pointer(&data)) + msg = uint(data) + return +} + +func PtraceCont(pid int, signal int) (err error) { + return ptrace(PTRACE_CONT, pid, 0, uintptr(signal)) +} + +func PtraceSyscall(pid int, signal int) (err error) { + return ptrace(PTRACE_SYSCALL, pid, 0, uintptr(signal)) +} + +func PtraceSingleStep(pid int) (err error) { return ptrace(PTRACE_SINGLESTEP, pid, 0, 0) } + +func PtraceInterrupt(pid int) (err error) { return ptrace(PTRACE_INTERRUPT, pid, 0, 0) } + +func PtraceAttach(pid int) (err error) { return ptrace(PTRACE_ATTACH, pid, 0, 0) } + +func PtraceSeize(pid int) (err error) { return ptrace(PTRACE_SEIZE, pid, 0, 0) } + +func PtraceDetach(pid int) (err error) { return ptrace(PTRACE_DETACH, pid, 0, 0) } + +//sys reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) + +func Reboot(cmd int) (err error) { + return reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, cmd, "") +} + +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + reclen, ok := direntReclen(buf) + if !ok { + return 0, false + } + return reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true +} + +//sys mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) + +func Mount(source string, target string, fstype string, flags uintptr, data string) (err error) { + // Certain file systems get rather angry and EINVAL if you give + // them an empty string of data, rather than NULL. + if data == "" { + return mount(source, target, fstype, flags, nil) + } + datap, err := BytePtrFromString(data) + if err != nil { + return err + } + return mount(source, target, fstype, flags, datap) +} + +//sys mountSetattr(dirfd int, pathname string, flags uint, attr *MountAttr, size uintptr) (err error) = SYS_MOUNT_SETATTR + +// MountSetattr is a wrapper for mount_setattr(2). +// https://man7.org/linux/man-pages/man2/mount_setattr.2.html +// +// Requires kernel >= 5.12. +func MountSetattr(dirfd int, pathname string, flags uint, attr *MountAttr) error { + return mountSetattr(dirfd, pathname, flags, attr, unsafe.Sizeof(*attr)) +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +// Sendto +// Recvfrom +// Socketpair + +/* + * Direct access + */ +//sys Acct(path string) (err error) +//sys AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) +//sys Adjtimex(buf *Timex) (state int, err error) +//sysnb Capget(hdr *CapUserHeader, data *CapUserData) (err error) +//sysnb Capset(hdr *CapUserHeader, data *CapUserData) (err error) +//sys Chdir(path string) (err error) +//sys Chroot(path string) (err error) +//sys ClockAdjtime(clockid int32, buf *Timex) (state int, err error) +//sys ClockGetres(clockid int32, res *Timespec) (err error) +//sys ClockGettime(clockid int32, time *Timespec) (err error) +//sys ClockSettime(clockid int32, time *Timespec) (err error) +//sys ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) +//sys Close(fd int) (err error) +//sys CloseRange(first uint, last uint, flags uint) (err error) +//sys CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) +//sys DeleteModule(name string, flags int) (err error) +//sys Dup(oldfd int) (fd int, err error) + +func Dup2(oldfd, newfd int) error { + return Dup3(oldfd, newfd, 0) +} + +//sys Dup3(oldfd int, newfd int, flags int) (err error) +//sysnb EpollCreate1(flag int) (fd int, err error) +//sysnb EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) +//sys Eventfd(initval uint, flags int) (fd int, err error) = SYS_EVENTFD2 +//sys Exit(code int) = SYS_EXIT_GROUP +//sys Fallocate(fd int, mode uint32, off int64, len int64) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Fdatasync(fd int) (err error) +//sys Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) +//sys FinitModule(fd int, params string, flags int) (err error) +//sys Flistxattr(fd int, dest []byte) (sz int, err error) +//sys Flock(fd int, how int) (err error) +//sys Fremovexattr(fd int, attr string) (err error) +//sys Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) +//sys Fsync(fd int) (err error) +//sys Fsmount(fd int, flags int, mountAttrs int) (fsfd int, err error) +//sys Fsopen(fsName string, flags int) (fd int, err error) +//sys Fspick(dirfd int, pathName string, flags int) (fd int, err error) + +//sys fsconfig(fd int, cmd uint, key *byte, value *byte, aux int) (err error) + +func fsconfigCommon(fd int, cmd uint, key string, value *byte, aux int) (err error) { + var keyp *byte + if keyp, err = BytePtrFromString(key); err != nil { + return + } + return fsconfig(fd, cmd, keyp, value, aux) +} + +// FsconfigSetFlag is equivalent to fsconfig(2) called +// with cmd == FSCONFIG_SET_FLAG. +// +// fd is the filesystem context to act upon. +// key the parameter key to set. +func FsconfigSetFlag(fd int, key string) (err error) { + return fsconfigCommon(fd, FSCONFIG_SET_FLAG, key, nil, 0) +} + +// FsconfigSetString is equivalent to fsconfig(2) called +// with cmd == FSCONFIG_SET_STRING. +// +// fd is the filesystem context to act upon. +// key the parameter key to set. +// value is the parameter value to set. +func FsconfigSetString(fd int, key string, value string) (err error) { + var valuep *byte + if valuep, err = BytePtrFromString(value); err != nil { + return + } + return fsconfigCommon(fd, FSCONFIG_SET_STRING, key, valuep, 0) +} + +// FsconfigSetBinary is equivalent to fsconfig(2) called +// with cmd == FSCONFIG_SET_BINARY. +// +// fd is the filesystem context to act upon. +// key the parameter key to set. +// value is the parameter value to set. +func FsconfigSetBinary(fd int, key string, value []byte) (err error) { + if len(value) == 0 { + return EINVAL + } + return fsconfigCommon(fd, FSCONFIG_SET_BINARY, key, &value[0], len(value)) +} + +// FsconfigSetPath is equivalent to fsconfig(2) called +// with cmd == FSCONFIG_SET_PATH. +// +// fd is the filesystem context to act upon. +// key the parameter key to set. +// path is a non-empty path for specified key. +// atfd is a file descriptor at which to start lookup from or AT_FDCWD. +func FsconfigSetPath(fd int, key string, path string, atfd int) (err error) { + var valuep *byte + if valuep, err = BytePtrFromString(path); err != nil { + return + } + return fsconfigCommon(fd, FSCONFIG_SET_PATH, key, valuep, atfd) +} + +// FsconfigSetPathEmpty is equivalent to fsconfig(2) called +// with cmd == FSCONFIG_SET_PATH_EMPTY. The same as +// FconfigSetPath but with AT_PATH_EMPTY implied. +func FsconfigSetPathEmpty(fd int, key string, path string, atfd int) (err error) { + var valuep *byte + if valuep, err = BytePtrFromString(path); err != nil { + return + } + return fsconfigCommon(fd, FSCONFIG_SET_PATH_EMPTY, key, valuep, atfd) +} + +// FsconfigSetFd is equivalent to fsconfig(2) called +// with cmd == FSCONFIG_SET_FD. +// +// fd is the filesystem context to act upon. +// key the parameter key to set. +// value is a file descriptor to be assigned to specified key. +func FsconfigSetFd(fd int, key string, value int) (err error) { + return fsconfigCommon(fd, FSCONFIG_SET_FD, key, nil, value) +} + +// FsconfigCreate is equivalent to fsconfig(2) called +// with cmd == FSCONFIG_CMD_CREATE. +// +// fd is the filesystem context to act upon. +func FsconfigCreate(fd int) (err error) { + return fsconfig(fd, FSCONFIG_CMD_CREATE, nil, nil, 0) +} + +// FsconfigReconfigure is equivalent to fsconfig(2) called +// with cmd == FSCONFIG_CMD_RECONFIGURE. +// +// fd is the filesystem context to act upon. +func FsconfigReconfigure(fd int) (err error) { + return fsconfig(fd, FSCONFIG_CMD_RECONFIGURE, nil, nil, 0) +} + +//sys Getdents(fd int, buf []byte) (n int, err error) = SYS_GETDENTS64 +//sysnb Getpgid(pid int) (pgid int, err error) + +func Getpgrp() (pid int) { + pid, _ = Getpgid(0) + return +} + +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) + +func Getrandom(buf []byte, flags int) (n int, err error) { + vdsoRet, supported := vgetrandom(buf, uint32(flags)) + if supported { + if vdsoRet < 0 { + return 0, errnoErr(syscall.Errno(-vdsoRet)) + } + return vdsoRet, nil + } + var p *byte + if len(buf) > 0 { + p = &buf[0] + } + r, _, e := Syscall(SYS_GETRANDOM, uintptr(unsafe.Pointer(p)), uintptr(len(buf)), uintptr(flags)) + if e != 0 { + return 0, errnoErr(e) + } + return int(r), nil +} + +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Gettid() (tid int) +//sys Getxattr(path string, attr string, dest []byte) (sz int, err error) +//sys InitModule(moduleImage []byte, params string) (err error) +//sys InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) +//sysnb InotifyInit1(flags int) (fd int, err error) +//sysnb InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) +//sysnb Kill(pid int, sig syscall.Signal) (err error) +//sys Klogctl(typ int, buf []byte) (n int, err error) = SYS_SYSLOG +//sys Lgetxattr(path string, attr string, dest []byte) (sz int, err error) +//sys Listxattr(path string, dest []byte) (sz int, err error) +//sys Llistxattr(path string, dest []byte) (sz int, err error) +//sys Lremovexattr(path string, attr string) (err error) +//sys Lsetxattr(path string, attr string, data []byte, flags int) (err error) +//sys MemfdCreate(name string, flags int) (fd int, err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) +//sys MoveMount(fromDirfd int, fromPathName string, toDirfd int, toPathName string, flags int) (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys OpenTree(dfd int, fileName string, flags uint) (r int, err error) +//sys PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) +//sys PivotRoot(newroot string, putold string) (err error) = SYS_PIVOT_ROOT +//sys Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) +//sys pselect6(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *sigset_argpack) (n int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Removexattr(path string, attr string) (err error) +//sys Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) +//sys RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) +//sys Setdomainname(p []byte) (err error) +//sys Sethostname(p []byte) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tv *Timeval) (err error) +//sys Setns(fd int, nstype int) (err error) + +//go:linkname syscall_prlimit syscall.prlimit +func syscall_prlimit(pid, resource int, newlimit, old *syscall.Rlimit) error + +func Prlimit(pid, resource int, newlimit, old *Rlimit) error { + // Just call the syscall version, because as of Go 1.21 + // it will affect starting a new process. + return syscall_prlimit(pid, resource, (*syscall.Rlimit)(newlimit), (*syscall.Rlimit)(old)) +} + +// PrctlRetInt performs a prctl operation specified by option and further +// optional arguments arg2 through arg5 depending on option. It returns a +// non-negative integer that is returned by the prctl syscall. +func PrctlRetInt(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (int, error) { + ret, _, err := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if err != 0 { + return 0, err + } + return int(ret), nil +} + +func Setuid(uid int) (err error) { + return syscall.Setuid(uid) +} + +func Setgid(gid int) (err error) { + return syscall.Setgid(gid) +} + +func Setreuid(ruid, euid int) (err error) { + return syscall.Setreuid(ruid, euid) +} + +func Setregid(rgid, egid int) (err error) { + return syscall.Setregid(rgid, egid) +} + +func Setresuid(ruid, euid, suid int) (err error) { + return syscall.Setresuid(ruid, euid, suid) +} + +func Setresgid(rgid, egid, sgid int) (err error) { + return syscall.Setresgid(rgid, egid, sgid) +} + +// SetfsgidRetGid sets fsgid for current thread and returns previous fsgid set. +// setfsgid(2) will return a non-nil error only if its caller lacks CAP_SETUID capability. +// If the call fails due to other reasons, current fsgid will be returned. +func SetfsgidRetGid(gid int) (int, error) { + return setfsgid(gid) +} + +// SetfsuidRetUid sets fsuid for current thread and returns previous fsuid set. +// setfsgid(2) will return a non-nil error only if its caller lacks CAP_SETUID capability +// If the call fails due to other reasons, current fsuid will be returned. +func SetfsuidRetUid(uid int) (int, error) { + return setfsuid(uid) +} + +func Setfsgid(gid int) error { + _, err := setfsgid(gid) + return err +} + +func Setfsuid(uid int) error { + _, err := setfsuid(uid) + return err +} + +func Signalfd(fd int, sigmask *Sigset_t, flags int) (newfd int, err error) { + return signalfd(fd, sigmask, _C__NSIG/8, flags) +} + +//sys Setpriority(which int, who int, prio int) (err error) +//sys Setxattr(path string, attr string, data []byte, flags int) (err error) +//sys signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) = SYS_SIGNALFD4 +//sys Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) +//sys Sync() +//sys Syncfs(fd int) (err error) +//sysnb Sysinfo(info *Sysinfo_t) (err error) +//sys Tee(rfd int, wfd int, len int, flags int) (n int64, err error) +//sysnb TimerfdCreate(clockid int, flags int) (fd int, err error) +//sysnb TimerfdGettime(fd int, currValue *ItimerSpec) (err error) +//sysnb TimerfdSettime(fd int, flags int, newValue *ItimerSpec, oldValue *ItimerSpec) (err error) +//sysnb Tgkill(tgid int, tid int, sig syscall.Signal) (err error) +//sysnb Times(tms *Tms) (ticks uintptr, err error) +//sysnb Umask(mask int) (oldmask int) +//sysnb Uname(buf *Utsname) (err error) +//sys Unmount(target string, flags int) (err error) = SYS_UMOUNT2 +//sys Unshare(flags int) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys exitThread(code int) (err error) = SYS_EXIT +//sys readv(fd int, iovs []Iovec) (n int, err error) = SYS_READV +//sys writev(fd int, iovs []Iovec) (n int, err error) = SYS_WRITEV +//sys preadv(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) = SYS_PREADV +//sys pwritev(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) = SYS_PWRITEV +//sys preadv2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) = SYS_PREADV2 +//sys pwritev2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) = SYS_PWRITEV2 + +// minIovec is the size of the small initial allocation used by +// Readv, Writev, etc. +// +// This small allocation gets stack allocated, which lets the +// common use case of len(iovs) <= minIovs avoid more expensive +// heap allocations. +const minIovec = 8 + +// appendBytes converts bs to Iovecs and appends them to vecs. +func appendBytes(vecs []Iovec, bs [][]byte) []Iovec { + for _, b := range bs { + var v Iovec + v.SetLen(len(b)) + if len(b) > 0 { + v.Base = &b[0] + } else { + v.Base = (*byte)(unsafe.Pointer(&_zero)) + } + vecs = append(vecs, v) + } + return vecs +} + +// offs2lohi splits offs into its low and high order bits. +func offs2lohi(offs int64) (lo, hi uintptr) { + const longBits = SizeofLong * 8 + return uintptr(offs), uintptr(uint64(offs) >> (longBits - 1) >> 1) // two shifts to avoid false positive in vet +} + +func Readv(fd int, iovs [][]byte) (n int, err error) { + iovecs := make([]Iovec, 0, minIovec) + iovecs = appendBytes(iovecs, iovs) + n, err = readv(fd, iovecs) + readvRacedetect(iovecs, n, err) + return n, err +} + +func Preadv(fd int, iovs [][]byte, offset int64) (n int, err error) { + iovecs := make([]Iovec, 0, minIovec) + iovecs = appendBytes(iovecs, iovs) + lo, hi := offs2lohi(offset) + n, err = preadv(fd, iovecs, lo, hi) + readvRacedetect(iovecs, n, err) + return n, err +} + +func Preadv2(fd int, iovs [][]byte, offset int64, flags int) (n int, err error) { + iovecs := make([]Iovec, 0, minIovec) + iovecs = appendBytes(iovecs, iovs) + lo, hi := offs2lohi(offset) + n, err = preadv2(fd, iovecs, lo, hi, flags) + readvRacedetect(iovecs, n, err) + return n, err +} + +func readvRacedetect(iovecs []Iovec, n int, err error) { + if !raceenabled { + return + } + for i := 0; n > 0 && i < len(iovecs); i++ { + m := min(int(iovecs[i].Len), n) + n -= m + if m > 0 { + raceWriteRange(unsafe.Pointer(iovecs[i].Base), m) + } + } + if err == nil { + raceAcquire(unsafe.Pointer(&ioSync)) + } +} + +func Writev(fd int, iovs [][]byte) (n int, err error) { + iovecs := make([]Iovec, 0, minIovec) + iovecs = appendBytes(iovecs, iovs) + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + n, err = writev(fd, iovecs) + writevRacedetect(iovecs, n) + return n, err +} + +func Pwritev(fd int, iovs [][]byte, offset int64) (n int, err error) { + iovecs := make([]Iovec, 0, minIovec) + iovecs = appendBytes(iovecs, iovs) + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + lo, hi := offs2lohi(offset) + n, err = pwritev(fd, iovecs, lo, hi) + writevRacedetect(iovecs, n) + return n, err +} + +func Pwritev2(fd int, iovs [][]byte, offset int64, flags int) (n int, err error) { + iovecs := make([]Iovec, 0, minIovec) + iovecs = appendBytes(iovecs, iovs) + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + lo, hi := offs2lohi(offset) + n, err = pwritev2(fd, iovecs, lo, hi, flags) + writevRacedetect(iovecs, n) + return n, err +} + +func writevRacedetect(iovecs []Iovec, n int) { + if !raceenabled { + return + } + for i := 0; n > 0 && i < len(iovecs); i++ { + m := min(int(iovecs[i].Len), n) + n -= m + if m > 0 { + raceReadRange(unsafe.Pointer(iovecs[i].Base), m) + } + } +} + +// mmap varies by architecture; see syscall_linux_*.go. +//sys munmap(addr uintptr, length uintptr) (err error) +//sys mremap(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (xaddr uintptr, err error) +//sys Madvise(b []byte, advice int) (err error) +//sys Mprotect(b []byte, prot int) (err error) +//sys Mlock(b []byte) (err error) +//sys Mlockall(flags int) (err error) +//sys Msync(b []byte, flags int) (err error) +//sys Munlock(b []byte) (err error) +//sys Munlockall() (err error) + +const ( + mremapFixed = MREMAP_FIXED + mremapDontunmap = MREMAP_DONTUNMAP + mremapMaymove = MREMAP_MAYMOVE +) + +// Vmsplice splices user pages from a slice of Iovecs into a pipe specified by fd, +// using the specified flags. +func Vmsplice(fd int, iovs []Iovec, flags int) (int, error) { + var p unsafe.Pointer + if len(iovs) > 0 { + p = unsafe.Pointer(&iovs[0]) + } + + n, _, errno := Syscall6(SYS_VMSPLICE, uintptr(fd), uintptr(p), uintptr(len(iovs)), uintptr(flags), 0, 0) + if errno != 0 { + return 0, syscall.Errno(errno) + } + + return int(n), nil +} + +func isGroupMember(gid int) bool { + groups, err := Getgroups() + if err != nil { + return false + } + + return slices.Contains(groups, gid) +} + +func isCapDacOverrideSet() bool { + hdr := CapUserHeader{Version: LINUX_CAPABILITY_VERSION_3} + data := [2]CapUserData{} + err := Capget(&hdr, &data[0]) + + return err == nil && data[0].Effective&(1<<CAP_DAC_OVERRIDE) != 0 +} + +//sys faccessat(dirfd int, path string, mode uint32) (err error) +//sys Faccessat2(dirfd int, path string, mode uint32, flags int) (err error) + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + if flags == 0 { + return faccessat(dirfd, path, mode) + } + + if err := Faccessat2(dirfd, path, mode, flags); err != ENOSYS && err != EPERM { + return err + } + + // The Linux kernel faccessat system call does not take any flags. + // The glibc faccessat implements the flags itself; see + // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/faccessat.c;hb=HEAD + // Because people naturally expect syscall.Faccessat to act + // like C faccessat, we do the same. + + if flags & ^(AT_SYMLINK_NOFOLLOW|AT_EACCESS) != 0 { + return EINVAL + } + + var st Stat_t + if err := Fstatat(dirfd, path, &st, flags&AT_SYMLINK_NOFOLLOW); err != nil { + return err + } + + mode &= 7 + if mode == 0 { + return nil + } + + var uid int + if flags&AT_EACCESS != 0 { + uid = Geteuid() + if uid != 0 && isCapDacOverrideSet() { + // If CAP_DAC_OVERRIDE is set, file access check is + // done by the kernel in the same way as for root + // (see generic_permission() in the Linux sources). + uid = 0 + } + } else { + uid = Getuid() + } + + if uid == 0 { + if mode&1 == 0 { + // Root can read and write any file. + return nil + } + if st.Mode&0111 != 0 { + // Root can execute any file that anybody can execute. + return nil + } + return EACCES + } + + var fmode uint32 + if uint32(uid) == st.Uid { + fmode = (st.Mode >> 6) & 7 + } else { + var gid int + if flags&AT_EACCESS != 0 { + gid = Getegid() + } else { + gid = Getgid() + } + + if uint32(gid) == st.Gid || isGroupMember(int(st.Gid)) { + fmode = (st.Mode >> 3) & 7 + } else { + fmode = st.Mode & 7 + } + } + + if fmode&mode == mode { + return nil + } + + return EACCES +} + +//sys nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) = SYS_NAME_TO_HANDLE_AT +//sys openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) = SYS_OPEN_BY_HANDLE_AT + +// fileHandle is the argument to nameToHandleAt and openByHandleAt. We +// originally tried to generate it via unix/linux/types.go with "type +// fileHandle C.struct_file_handle" but that generated empty structs +// for mips64 and mips64le. Instead, hard code it for now (it's the +// same everywhere else) until the mips64 generator issue is fixed. +type fileHandle struct { + Bytes uint32 + Type int32 +} + +// FileHandle represents the C struct file_handle used by +// name_to_handle_at (see NameToHandleAt) and open_by_handle_at (see +// OpenByHandleAt). +type FileHandle struct { + *fileHandle +} + +// NewFileHandle constructs a FileHandle. +func NewFileHandle(handleType int32, handle []byte) FileHandle { + const hdrSize = unsafe.Sizeof(fileHandle{}) + buf := make([]byte, hdrSize+uintptr(len(handle))) + copy(buf[hdrSize:], handle) + fh := (*fileHandle)(unsafe.Pointer(&buf[0])) + fh.Type = handleType + fh.Bytes = uint32(len(handle)) + return FileHandle{fh} +} + +func (fh *FileHandle) Size() int { return int(fh.fileHandle.Bytes) } +func (fh *FileHandle) Type() int32 { return fh.fileHandle.Type } +func (fh *FileHandle) Bytes() []byte { + n := fh.Size() + if n == 0 { + return nil + } + return unsafe.Slice((*byte)(unsafe.Pointer(uintptr(unsafe.Pointer(&fh.fileHandle.Type))+4)), n) +} + +// NameToHandleAt wraps the name_to_handle_at system call; it obtains +// a handle for a path name. +func NameToHandleAt(dirfd int, path string, flags int) (handle FileHandle, mountID int, err error) { + var mid _C_int + // Try first with a small buffer, assuming the handle will + // only be 32 bytes. + size := uint32(32 + unsafe.Sizeof(fileHandle{})) + didResize := false + for { + buf := make([]byte, size) + fh := (*fileHandle)(unsafe.Pointer(&buf[0])) + fh.Bytes = size - uint32(unsafe.Sizeof(fileHandle{})) + err = nameToHandleAt(dirfd, path, fh, &mid, flags) + if err == EOVERFLOW { + if didResize { + // We shouldn't need to resize more than once + return + } + didResize = true + size = fh.Bytes + uint32(unsafe.Sizeof(fileHandle{})) + continue + } + if err != nil { + return + } + return FileHandle{fh}, int(mid), nil + } +} + +// OpenByHandleAt wraps the open_by_handle_at system call; it opens a +// file via a handle as previously returned by NameToHandleAt. +func OpenByHandleAt(mountFD int, handle FileHandle, flags int) (fd int, err error) { + return openByHandleAt(mountFD, handle.fileHandle, flags) +} + +// Klogset wraps the sys_syslog system call; it sets console_loglevel to +// the value specified by arg and passes a dummy pointer to bufp. +func Klogset(typ int, arg int) (err error) { + var p unsafe.Pointer + _, _, errno := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(p), uintptr(arg)) + if errno != 0 { + return errnoErr(errno) + } + return nil +} + +// RemoteIovec is Iovec with the pointer replaced with an integer. +// It is used for ProcessVMReadv and ProcessVMWritev, where the pointer +// refers to a location in a different process' address space, which +// would confuse the Go garbage collector. +type RemoteIovec struct { + Base uintptr + Len int +} + +//sys ProcessVMReadv(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) = SYS_PROCESS_VM_READV +//sys ProcessVMWritev(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) = SYS_PROCESS_VM_WRITEV + +//sys PidfdOpen(pid int, flags int) (fd int, err error) = SYS_PIDFD_OPEN +//sys PidfdGetfd(pidfd int, targetfd int, flags int) (fd int, err error) = SYS_PIDFD_GETFD +//sys PidfdSendSignal(pidfd int, sig Signal, info *Siginfo, flags int) (err error) = SYS_PIDFD_SEND_SIGNAL + +//sys shmat(id int, addr uintptr, flag int) (ret uintptr, err error) +//sys shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) +//sys shmdt(addr uintptr) (err error) +//sys shmget(key int, size int, flag int) (id int, err error) + +//sys getitimer(which int, currValue *Itimerval) (err error) +//sys setitimer(which int, newValue *Itimerval, oldValue *Itimerval) (err error) + +// MakeItimerval creates an Itimerval from interval and value durations. +func MakeItimerval(interval, value time.Duration) Itimerval { + return Itimerval{ + Interval: NsecToTimeval(interval.Nanoseconds()), + Value: NsecToTimeval(value.Nanoseconds()), + } +} + +// A value which may be passed to the which parameter for Getitimer and +// Setitimer. +type ItimerWhich int + +// Possible which values for Getitimer and Setitimer. +const ( + ItimerReal ItimerWhich = ITIMER_REAL + ItimerVirtual ItimerWhich = ITIMER_VIRTUAL + ItimerProf ItimerWhich = ITIMER_PROF +) + +// Getitimer wraps getitimer(2) to return the current value of the timer +// specified by which. +func Getitimer(which ItimerWhich) (Itimerval, error) { + var it Itimerval + if err := getitimer(int(which), &it); err != nil { + return Itimerval{}, err + } + + return it, nil +} + +// Setitimer wraps setitimer(2) to arm or disarm the timer specified by which. +// It returns the previous value of the timer. +// +// If the Itimerval argument is the zero value, the timer will be disarmed. +func Setitimer(which ItimerWhich, it Itimerval) (Itimerval, error) { + var prev Itimerval + if err := setitimer(int(which), &it, &prev); err != nil { + return Itimerval{}, err + } + + return prev, nil +} + +//sysnb rtSigprocmask(how int, set *Sigset_t, oldset *Sigset_t, sigsetsize uintptr) (err error) = SYS_RT_SIGPROCMASK + +func PthreadSigmask(how int, set, oldset *Sigset_t) error { + if oldset != nil { + // Explicitly clear in case Sigset_t is larger than _C__NSIG. + *oldset = Sigset_t{} + } + return rtSigprocmask(how, set, oldset, _C__NSIG/8) +} + +//sysnb getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) +//sysnb getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) + +func Getresuid() (ruid, euid, suid int) { + var r, e, s _C_int + getresuid(&r, &e, &s) + return int(r), int(e), int(s) +} + +func Getresgid() (rgid, egid, sgid int) { + var r, e, s _C_int + getresgid(&r, &e, &s) + return int(r), int(e), int(s) +} + +// Pselect is a wrapper around the Linux pselect6 system call. +// This version does not modify the timeout argument. +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + // Per https://man7.org/linux/man-pages/man2/select.2.html#NOTES, + // The Linux pselect6() system call modifies its timeout argument. + // [Not modifying the argument] is the behavior required by POSIX.1-2001. + var mutableTimeout *Timespec + if timeout != nil { + mutableTimeout = new(Timespec) + *mutableTimeout = *timeout + } + + // The final argument of the pselect6() system call is not a + // sigset_t * pointer, but is instead a structure + var kernelMask *sigset_argpack + if sigmask != nil { + wordBits := 32 << (^uintptr(0) >> 63) // see math.intSize + + // A sigset stores one bit per signal, + // offset by 1 (because signal 0 does not exist). + // So the number of words needed is ⌈__C_NSIG - 1 / wordBits⌉. + sigsetWords := (_C__NSIG - 1 + wordBits - 1) / (wordBits) + + sigsetBytes := uintptr(sigsetWords * (wordBits / 8)) + kernelMask = &sigset_argpack{ + ss: sigmask, + ssLen: sigsetBytes, + } + } + + return pselect6(nfd, r, w, e, mutableTimeout, kernelMask) +} + +//sys schedSetattr(pid int, attr *SchedAttr, flags uint) (err error) +//sys schedGetattr(pid int, attr *SchedAttr, size uint, flags uint) (err error) + +// SchedSetAttr is a wrapper for sched_setattr(2) syscall. +// https://man7.org/linux/man-pages/man2/sched_setattr.2.html +func SchedSetAttr(pid int, attr *SchedAttr, flags uint) error { + if attr == nil { + return EINVAL + } + attr.Size = SizeofSchedAttr + return schedSetattr(pid, attr, flags) +} + +// SchedGetAttr is a wrapper for sched_getattr(2) syscall. +// https://man7.org/linux/man-pages/man2/sched_getattr.2.html +func SchedGetAttr(pid int, flags uint) (*SchedAttr, error) { + attr := &SchedAttr{} + if err := schedGetattr(pid, attr, SizeofSchedAttr, flags); err != nil { + return nil, err + } + return attr, nil +} + +//sys Cachestat(fd uint, crange *CachestatRange, cstat *Cachestat_t, flags uint) (err error) +//sys Mseal(b []byte, flags uint) (err error) diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_linux_386.go b/tests/vendor/golang.org/x/sys/unix/syscall_linux_386.go new file mode 100644 index 000000000..506dafa7b --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_linux_386.go @@ -0,0 +1,314 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build 386 && linux + +package unix + +import ( + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +// 64-bit file system and 32-bit uid calls +// (386 default is 32-bit file system and 16-bit uid). +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64_64 +//sys Fchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32 +//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 +//sys Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64 +//sysnb Getegid() (egid int) = SYS_GETEGID32 +//sysnb Geteuid() (euid int) = SYS_GETEUID32 +//sysnb Getgid() (gid int) = SYS_GETGID32 +//sysnb Getuid() (uid int) = SYS_GETUID32 +//sys Ioperm(from int, num int, on int) (err error) +//sys Iopl(level int) (err error) +//sys Lchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32 +//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 +//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64 +//sys setfsgid(gid int) (prev int, err error) = SYS_SETFSGID32 +//sys setfsuid(uid int) (prev int, err error) = SYS_SETFSUID32 +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) +//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) = SYS_TRUNCATE64 +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) = SYS_GETGROUPS32 +//sysnb setgroups(n int, list *_Gid_t) (err error) = SYS_SETGROUPS32 +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT + +//sys mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) +//sys Pause() (err error) + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + page := uintptr(offset / 4096) + if offset != int64(page)*4096 { + return 0, EINVAL + } + return mmap2(addr, length, prot, flags, fd, page) +} + +type rlimit32 struct { + Cur uint32 + Max uint32 +} + +//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT + +const rlimInf32 = ^uint32(0) +const rlimInf64 = ^uint64(0) + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + err = Prlimit(0, resource, nil, rlim) + if err != ENOSYS { + return err + } + + rl := rlimit32{} + err = getrlimit(resource, &rl) + if err != nil { + return + } + + if rl.Cur == rlimInf32 { + rlim.Cur = rlimInf64 + } else { + rlim.Cur = uint64(rl.Cur) + } + + if rl.Max == rlimInf32 { + rlim.Max = rlimInf64 + } else { + rlim.Max = uint64(rl.Max) + } + return +} + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + newoffset, errno := seek(fd, offset, whence) + if errno != 0 { + return 0, errno + } + return newoffset, nil +} + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Time(t *Time_t) (tt Time_t, err error) +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +// On x86 Linux, all the socket calls go through an extra indirection, +// I think because the 5-register system call interface can't handle +// the 6-argument calls like sendto and recvfrom. Instead the +// arguments to the underlying system call are the number below +// and a pointer to an array of uintptr. We hide the pointer in the +// socketcall assembly to avoid allocation on every system call. + +const ( + // see linux/net.h + _SOCKET = 1 + _BIND = 2 + _CONNECT = 3 + _LISTEN = 4 + _ACCEPT = 5 + _GETSOCKNAME = 6 + _GETPEERNAME = 7 + _SOCKETPAIR = 8 + _SEND = 9 + _RECV = 10 + _SENDTO = 11 + _RECVFROM = 12 + _SHUTDOWN = 13 + _SETSOCKOPT = 14 + _GETSOCKOPT = 15 + _SENDMSG = 16 + _RECVMSG = 17 + _ACCEPT4 = 18 + _RECVMMSG = 19 + _SENDMMSG = 20 +) + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + fd, e := socketcall(_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + if e != 0 { + err = e + } + return +} + +func getsockname(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, e := rawsocketcall(_GETSOCKNAME, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func getpeername(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, e := rawsocketcall(_GETPEERNAME, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func socketpair(domain int, typ int, flags int, fd *[2]int32) (err error) { + _, e := rawsocketcall(_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd)), 0, 0) + if e != 0 { + err = e + } + return +} + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, e := socketcall(_BIND, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, e := socketcall(_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func socket(domain int, typ int, proto int) (fd int, err error) { + fd, e := rawsocketcall(_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, e := socketcall(_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e != 0 { + err = e + } + return +} + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, e := socketcall(_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), vallen, 0) + if e != 0 { + err = e + } + return +} + +func recvfrom(s int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var base uintptr + if len(p) > 0 { + base = uintptr(unsafe.Pointer(&p[0])) + } + n, e := socketcall(_RECVFROM, uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + if e != 0 { + err = e + } + return +} + +func sendto(s int, p []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var base uintptr + if len(p) > 0 { + base = uintptr(unsafe.Pointer(&p[0])) + } + _, e := socketcall(_SENDTO, uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e != 0 { + err = e + } + return +} + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + n, e := socketcall(_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + n, e := socketcall(_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func Listen(s int, n int) (err error) { + _, e := socketcall(_LISTEN, uintptr(s), uintptr(n), 0, 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func Shutdown(s, how int) (err error) { + _, e := socketcall(_SHUTDOWN, uintptr(s), uintptr(how), 0, 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = e + } + return +} + +func Statfs(path string, buf *Statfs_t) (err error) { + pathp, err := BytePtrFromString(path) + if err != nil { + return err + } + _, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = e + } + return +} + +func (r *PtraceRegs) PC() uint64 { return uint64(uint32(r.Eip)) } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Eip = int32(pc) } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint32(length) +} diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_linux_alarm.go b/tests/vendor/golang.org/x/sys/unix/syscall_linux_alarm.go new file mode 100644 index 000000000..38d55641b --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_linux_alarm.go @@ -0,0 +1,12 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && (386 || amd64 || mips || mipsle || mips64 || mipsle || ppc64 || ppc64le || ppc || s390x || sparc64) + +package unix + +// SYS_ALARM is not defined on arm or riscv, but is available for other GOARCH +// values. + +//sys Alarm(seconds uint) (remaining uint, err error) diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go b/tests/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go new file mode 100644 index 000000000..d557cf8de --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go @@ -0,0 +1,145 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build amd64 && linux + +package unix + +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Getuid() (uid int) +//sys Ioperm(from int, num int, on int) (err error) +//sys Iopl(level int) (err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) + +func Lstat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW) +} + +//sys MemfdSecret(flags int) (fd int, err error) +//sys Pause() (err error) +//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + var ts *Timespec + if timeout != nil { + ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} + } + return pselect6(nfd, r, w, e, ts, nil) +} + +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys setfsgid(gid int) (prev int, err error) +//sys setfsuid(uid int) (prev int, err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) + +func Stat(path string, stat *Stat_t) (err error) { + // Use fstatat, because Android's seccomp policy blocks stat. + return Fstatat(AT_FDCWD, path, stat, 0) +} + +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) + +func Gettimeofday(tv *Timeval) (err error) { + errno := gettimeofday(tv) + if errno != 0 { + return errno + } + return nil +} + +func Time(t *Time_t) (tt Time_t, err error) { + var tv Timeval + errno := gettimeofday(&tv) + if errno != 0 { + return 0, errno + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func (r *PtraceRegs) PC() uint64 { return r.Rip } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Rip = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint64(length) +} + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go b/tests/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go new file mode 100644 index 000000000..facdb83b2 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go @@ -0,0 +1,12 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build amd64 && linux && gc + +package unix + +import "syscall" + +//go:noescape +func gettimeofday(tv *Timeval) (err syscall.Errno) diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_linux_arm.go b/tests/vendor/golang.org/x/sys/unix/syscall_linux_arm.go new file mode 100644 index 000000000..cd2dd797f --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_linux_arm.go @@ -0,0 +1,216 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build arm && linux + +package unix + +import ( + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + newoffset, errno := seek(fd, offset, whence) + if errno != 0 { + return 0, errno + } + return newoffset, nil +} + +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) = SYS_GETGROUPS32 +//sysnb setgroups(n int, list *_Gid_t) (err error) = SYS_SETGROUPS32 +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb socketpair(domain int, typ int, flags int, fd *[2]int32) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) + +// 64-bit file system and 32-bit uid calls +// (16-bit uid calls are not always supported in newer kernels) +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32 +//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 +//sysnb Getegid() (egid int) = SYS_GETEGID32 +//sysnb Geteuid() (euid int) = SYS_GETEUID32 +//sysnb Getgid() (gid int) = SYS_GETGID32 +//sysnb Getuid() (uid int) = SYS_GETUID32 +//sys Lchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32 +//sys Listen(s int, n int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 +//sys Pause() (err error) +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64 +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT +//sys setfsgid(gid int) (prev int, err error) = SYS_SETFSGID32 +//sys setfsuid(uid int) (prev int, err error) = SYS_SETFSUID32 +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) +//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 +//sys Ustat(dev int, ubuf *Ustat_t) (err error) + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) + +func Time(t *Time_t) (Time_t, error) { + var tv Timeval + err := Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +func Utime(path string, buf *Utimbuf) error { + tv := []Timeval{ + {Sec: buf.Actime}, + {Sec: buf.Modtime}, + } + return Utimes(path, tv) +} + +//sys utimes(path string, times *[2]Timeval) (err error) + +//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Truncate(path string, length int64) (err error) = SYS_TRUNCATE64 +//sys Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64 + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_ARM_FADVISE64_64, uintptr(fd), uintptr(advice), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +//sys mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = e + } + return +} + +func Statfs(path string, buf *Statfs_t) (err error) { + pathp, err := BytePtrFromString(path) + if err != nil { + return err + } + _, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = e + } + return +} + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + page := uintptr(offset / 4096) + if offset != int64(page)*4096 { + return 0, EINVAL + } + return mmap2(addr, length, prot, flags, fd, page) +} + +type rlimit32 struct { + Cur uint32 + Max uint32 +} + +//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_UGETRLIMIT + +const rlimInf32 = ^uint32(0) +const rlimInf64 = ^uint64(0) + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + err = Prlimit(0, resource, nil, rlim) + if err != ENOSYS { + return err + } + + rl := rlimit32{} + err = getrlimit(resource, &rl) + if err != nil { + return + } + + if rl.Cur == rlimInf32 { + rlim.Cur = rlimInf64 + } else { + rlim.Cur = uint64(rl.Cur) + } + + if rl.Max == rlimInf32 { + rlim.Max = rlimInf64 + } else { + rlim.Max = uint64(rl.Max) + } + return +} + +func (r *PtraceRegs) PC() uint64 { return uint64(r.Uregs[15]) } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Uregs[15] = uint32(pc) } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint32(length) +} + +//sys armSyncFileRange(fd int, flags int, off int64, n int64) (err error) = SYS_ARM_SYNC_FILE_RANGE + +func SyncFileRange(fd int, off int64, n int64, flags int) error { + // The sync_file_range and arm_sync_file_range syscalls differ only in the + // order of their arguments. + return armSyncFileRange(fd, flags, off, n) +} + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go b/tests/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go new file mode 100644 index 000000000..745e5c7e6 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go @@ -0,0 +1,186 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build arm64 && linux + +package unix + +import "unsafe" + +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Getuid() (uid int) +//sys Listen(s int, n int) (err error) +//sys MemfdSecret(flags int) (fd int, err error) +//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + var ts *Timespec + if timeout != nil { + ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} + } + return pselect6(nfd, r, w, e, ts, nil) +} + +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys setfsgid(gid int) (prev int, err error) +//sys setfsuid(uid int) (prev int, err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) + +func Stat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, 0) +} + +func Lchown(path string, uid int, gid int) (err error) { + return Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW) +} + +func Lstat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW) +} + +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + return ENOSYS +} + +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +//sysnb Gettimeofday(tv *Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func futimesat(dirfd int, path string, tv *[2]Timeval) (err error) { + if tv == nil { + return utimensat(dirfd, path, nil, 0) + } + + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func Time(t *Time_t) (Time_t, error) { + var tv Timeval + err := Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +func Utime(path string, buf *Utimbuf) error { + tv := []Timeval{ + {Sec: buf.Actime}, + {Sec: buf.Modtime}, + } + return Utimes(path, tv) +} + +func utimes(path string, tv *[2]Timeval) (err error) { + if tv == nil { + return utimensat(AT_FDCWD, path, nil, 0) + } + + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +// Getrlimit prefers the prlimit64 system call. See issue 38604. +func Getrlimit(resource int, rlim *Rlimit) error { + err := Prlimit(0, resource, nil, rlim) + if err != ENOSYS { + return err + } + return getrlimit(resource, rlim) +} + +func (r *PtraceRegs) PC() uint64 { return r.Pc } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Pc = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint64(length) +} + +func Pause() error { + _, err := ppoll(nil, 0, nil, nil) + return err +} + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} + +const SYS_FSTATAT = SYS_NEWFSTATAT diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_linux_gc.go b/tests/vendor/golang.org/x/sys/unix/syscall_linux_gc.go new file mode 100644 index 000000000..ffc4c2b63 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_linux_gc.go @@ -0,0 +1,14 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && gc + +package unix + +// SyscallNoError may be used instead of Syscall for syscalls that don't fail. +func SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) + +// RawSyscallNoError may be used instead of RawSyscall for syscalls that don't +// fail. +func RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go b/tests/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go new file mode 100644 index 000000000..9ebfdcf44 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go @@ -0,0 +1,16 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && gc && 386 + +package unix + +import "syscall" + +// Underlying system call writes to newoffset via pointer. +// Implemented in assembly to avoid allocation. +func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno) + +func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno) +func rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno) diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go b/tests/vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go new file mode 100644 index 000000000..5f2b57c4c --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go @@ -0,0 +1,13 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build arm && gc && linux + +package unix + +import "syscall" + +// Underlying system call writes to newoffset via pointer. +// Implemented in assembly to avoid allocation. +func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno) diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go b/tests/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go new file mode 100644 index 000000000..d1a3ad826 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go @@ -0,0 +1,30 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && gccgo && 386 + +package unix + +import ( + "syscall" + "unsafe" +) + +func seek(fd int, offset int64, whence int) (int64, syscall.Errno) { + var newoffset int64 + offsetLow := uint32(offset & 0xffffffff) + offsetHigh := uint32((offset >> 32) & 0xffffffff) + _, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0) + return newoffset, err +} + +func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) { + fd, _, err := Syscall(SYS_SOCKETCALL, uintptr(call), uintptr(unsafe.Pointer(&a0)), 0) + return int(fd), err +} + +func rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) { + fd, _, err := RawSyscall(SYS_SOCKETCALL, uintptr(call), uintptr(unsafe.Pointer(&a0)), 0) + return int(fd), err +} diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go b/tests/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go new file mode 100644 index 000000000..f2f67423e --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go @@ -0,0 +1,20 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && gccgo && arm + +package unix + +import ( + "syscall" + "unsafe" +) + +func seek(fd int, offset int64, whence int) (int64, syscall.Errno) { + var newoffset int64 + offsetLow := uint32(offset & 0xffffffff) + offsetHigh := uint32((offset >> 32) & 0xffffffff) + _, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0) + return newoffset, err +} diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go b/tests/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go new file mode 100644 index 000000000..dd2262a40 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go @@ -0,0 +1,218 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build loong64 && linux + +package unix + +import "unsafe" + +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getuid() (uid int) +//sys Listen(s int, n int) (err error) +//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + var ts *Timespec + if timeout != nil { + ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} + } + return pselect6(nfd, r, w, e, ts, nil) +} + +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys setfsgid(gid int) (prev int, err error) +//sys setfsuid(uid int) (prev int, err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) + +func timespecFromStatxTimestamp(x StatxTimestamp) Timespec { + return Timespec{ + Sec: x.Sec, + Nsec: int64(x.Nsec), + } +} + +func Fstatat(fd int, path string, stat *Stat_t, flags int) error { + var r Statx_t + // Do it the glibc way, add AT_NO_AUTOMOUNT. + if err := Statx(fd, path, AT_NO_AUTOMOUNT|flags, STATX_BASIC_STATS, &r); err != nil { + return err + } + + stat.Dev = Mkdev(r.Dev_major, r.Dev_minor) + stat.Ino = r.Ino + stat.Mode = uint32(r.Mode) + stat.Nlink = r.Nlink + stat.Uid = r.Uid + stat.Gid = r.Gid + stat.Rdev = Mkdev(r.Rdev_major, r.Rdev_minor) + // hope we don't get to process files so large to overflow these size + // fields... + stat.Size = int64(r.Size) + stat.Blksize = int32(r.Blksize) + stat.Blocks = int64(r.Blocks) + stat.Atim = timespecFromStatxTimestamp(r.Atime) + stat.Mtim = timespecFromStatxTimestamp(r.Mtime) + stat.Ctim = timespecFromStatxTimestamp(r.Ctime) + + return nil +} + +func Fstat(fd int, stat *Stat_t) (err error) { + return Fstatat(fd, "", stat, AT_EMPTY_PATH) +} + +func Stat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, 0) +} + +func Lchown(path string, uid int, gid int) (err error) { + return Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW) +} + +func Lstat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW) +} + +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + return ENOSYS +} + +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +//sysnb Gettimeofday(tv *Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + err = Prlimit(0, resource, nil, rlim) + return +} + +func futimesat(dirfd int, path string, tv *[2]Timeval) (err error) { + if tv == nil { + return utimensat(dirfd, path, nil, 0) + } + + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func Time(t *Time_t) (Time_t, error) { + var tv Timeval + err := Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +func Utime(path string, buf *Utimbuf) error { + tv := []Timeval{ + {Sec: buf.Actime}, + {Sec: buf.Modtime}, + } + return Utimes(path, tv) +} + +func utimes(path string, tv *[2]Timeval) (err error) { + if tv == nil { + return utimensat(AT_FDCWD, path, nil, 0) + } + + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func (r *PtraceRegs) PC() uint64 { return r.Era } + +func (r *PtraceRegs) SetPC(era uint64) { r.Era = era } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint64(length) +} + +func Pause() error { + _, err := ppoll(nil, 0, nil, nil) + return err +} + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + return Renameat2(olddirfd, oldpath, newdirfd, newpath, 0) +} + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} + +const SYS_FSTATAT = SYS_NEWFSTATAT diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go b/tests/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go new file mode 100644 index 000000000..70963a95a --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go @@ -0,0 +1,188 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && (mips64 || mips64le) + +package unix + +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Getuid() (uid int) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) +//sys Pause() (err error) +//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + var ts *Timespec + if timeout != nil { + ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} + } + return pselect6(nfd, r, w, e, ts, nil) +} + +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys setfsgid(gid int) (prev int, err error) +//sys setfsuid(uid int) (prev int, err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) + +func Time(t *Time_t) (tt Time_t, err error) { + var tv Timeval + err = Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func Ioperm(from int, num int, on int) (err error) { + return ENOSYS +} + +func Iopl(level int) (err error) { + return ENOSYS +} + +type stat_t struct { + Dev uint32 + Pad0 [3]int32 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint32 + Pad1 [3]uint32 + Size int64 + Atime uint32 + Atime_nsec uint32 + Mtime uint32 + Mtime_nsec uint32 + Ctime uint32 + Ctime_nsec uint32 + Blksize uint32 + Pad2 uint32 + Blocks int64 +} + +//sys fstat(fd int, st *stat_t) (err error) +//sys fstatat(dirfd int, path string, st *stat_t, flags int) (err error) = SYS_NEWFSTATAT +//sys lstat(path string, st *stat_t) (err error) +//sys stat(path string, st *stat_t) (err error) + +func Fstat(fd int, s *Stat_t) (err error) { + st := &stat_t{} + err = fstat(fd, st) + fillStat_t(s, st) + return +} + +func Fstatat(dirfd int, path string, s *Stat_t, flags int) (err error) { + st := &stat_t{} + err = fstatat(dirfd, path, st, flags) + fillStat_t(s, st) + return +} + +func Lstat(path string, s *Stat_t) (err error) { + st := &stat_t{} + err = lstat(path, st) + fillStat_t(s, st) + return +} + +func Stat(path string, s *Stat_t) (err error) { + st := &stat_t{} + err = stat(path, st) + fillStat_t(s, st) + return +} + +func fillStat_t(s *Stat_t, st *stat_t) { + s.Dev = st.Dev + s.Ino = st.Ino + s.Mode = st.Mode + s.Nlink = st.Nlink + s.Uid = st.Uid + s.Gid = st.Gid + s.Rdev = st.Rdev + s.Size = st.Size + s.Atim = Timespec{int64(st.Atime), int64(st.Atime_nsec)} + s.Mtim = Timespec{int64(st.Mtime), int64(st.Mtime_nsec)} + s.Ctim = Timespec{int64(st.Ctime), int64(st.Ctime_nsec)} + s.Blksize = st.Blksize + s.Blocks = st.Blocks +} + +func (r *PtraceRegs) PC() uint64 { return r.Epc } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Epc = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint64(length) +} diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go b/tests/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go new file mode 100644 index 000000000..c218ebd28 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go @@ -0,0 +1,174 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && (mips || mipsle) + +package unix + +import ( + "syscall" + "unsafe" +) + +func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) + +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64 +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getuid() (uid int) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) +//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64 +//sys setfsgid(gid int) (prev int, err error) +//sys setfsuid(uid int) (prev int, err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) = SYS_TRUNCATE64 +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) + +//sys Ioperm(from int, num int, on int) (err error) +//sys Iopl(level int) (err error) + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Time(t *Time_t) (tt Time_t, err error) +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 +//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 +//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 + +//sys Pause() (err error) + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = errnoErr(e) + } + return +} + +func Statfs(path string, buf *Statfs_t) (err error) { + p, err := BytePtrFromString(path) + if err != nil { + return err + } + _, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(p)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = errnoErr(e) + } + return +} + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + _, _, e := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offset>>32), uintptr(offset), uintptr(unsafe.Pointer(&off)), uintptr(whence), 0) + if e != 0 { + err = errnoErr(e) + } + return +} + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +//sys mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + page := uintptr(offset / 4096) + if offset != int64(page)*4096 { + return 0, EINVAL + } + return mmap2(addr, length, prot, flags, fd, page) +} + +const rlimInf32 = ^uint32(0) +const rlimInf64 = ^uint64(0) + +type rlimit32 struct { + Cur uint32 + Max uint32 +} + +//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + err = Prlimit(0, resource, nil, rlim) + if err != ENOSYS { + return err + } + + rl := rlimit32{} + err = getrlimit(resource, &rl) + if err != nil { + return + } + + if rl.Cur == rlimInf32 { + rlim.Cur = rlimInf64 + } else { + rlim.Cur = uint64(rl.Cur) + } + + if rl.Max == rlimInf32 { + rlim.Max = rlimInf64 + } else { + rlim.Max = uint64(rl.Max) + } + return +} + +func (r *PtraceRegs) PC() uint64 { return r.Epc } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Epc = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint32(length) +} diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go b/tests/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go new file mode 100644 index 000000000..e6c48500c --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go @@ -0,0 +1,204 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && ppc + +package unix + +import ( + "syscall" + "unsafe" +) + +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 +//sys Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64 +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getuid() (uid int) +//sys Ioperm(from int, num int, on int) (err error) +//sys Iopl(level int) (err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 +//sys Pause() (err error) +//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64 +//sys setfsgid(gid int) (prev int, err error) +//sys setfsuid(uid int) (prev int, err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) +//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 +//sys Truncate(path string, length int64) (err error) = SYS_TRUNCATE64 +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Time(t *Time_t) (tt Time_t, err error) +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64_64, uintptr(fd), uintptr(advice), uintptr(offset>>32), uintptr(offset), uintptr(length>>32), uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func seek(fd int, offset int64, whence int) (int64, syscall.Errno) { + var newoffset int64 + offsetLow := uint32(offset & 0xffffffff) + offsetHigh := uint32((offset >> 32) & 0xffffffff) + _, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0) + return newoffset, err +} + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + newoffset, errno := seek(fd, offset, whence) + if errno != 0 { + return 0, errno + } + return newoffset, nil +} + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = e + } + return +} + +func Statfs(path string, buf *Statfs_t) (err error) { + pathp, err := BytePtrFromString(path) + if err != nil { + return err + } + _, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = e + } + return +} + +//sys mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + page := uintptr(offset / 4096) + if offset != int64(page)*4096 { + return 0, EINVAL + } + return mmap2(addr, length, prot, flags, fd, page) +} + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +type rlimit32 struct { + Cur uint32 + Max uint32 +} + +//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_UGETRLIMIT + +const rlimInf32 = ^uint32(0) +const rlimInf64 = ^uint64(0) + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + err = Prlimit(0, resource, nil, rlim) + if err != ENOSYS { + return err + } + + rl := rlimit32{} + err = getrlimit(resource, &rl) + if err != nil { + return + } + + if rl.Cur == rlimInf32 { + rlim.Cur = rlimInf64 + } else { + rlim.Cur = uint64(rl.Cur) + } + + if rl.Max == rlimInf32 { + rlim.Max = rlimInf64 + } else { + rlim.Max = uint64(rl.Max) + } + return +} + +func (r *PtraceRegs) PC() uint32 { return r.Nip } + +func (r *PtraceRegs) SetPC(pc uint32) { r.Nip = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint32(length) +} + +//sys syncFileRange2(fd int, flags int, off int64, n int64) (err error) = SYS_SYNC_FILE_RANGE2 + +func SyncFileRange(fd int, off int64, n int64, flags int) error { + // The sync_file_range and sync_file_range2 syscalls differ only in the + // order of their arguments. + return syncFileRange2(fd, flags, off, n) +} + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go b/tests/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go new file mode 100644 index 000000000..7286a9aa8 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go @@ -0,0 +1,115 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && (ppc64 || ppc64le) + +package unix + +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) = SYS_UGETRLIMIT +//sysnb Getuid() (uid int) +//sys Ioperm(from int, num int, on int) (err error) +//sys Iopl(level int) (err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Pause() (err error) +//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys setfsgid(gid int) (prev int, err error) +//sys setfsuid(uid int) (prev int, err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys Truncate(path string, length int64) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Time(t *Time_t) (tt Time_t, err error) +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func (r *PtraceRegs) PC() uint64 { return r.Nip } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Nip = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint64(length) +} + +//sys syncFileRange2(fd int, flags int, off int64, n int64) (err error) = SYS_SYNC_FILE_RANGE2 + +func SyncFileRange(fd int, off int64, n int64, flags int) error { + // The sync_file_range and sync_file_range2 syscalls differ only in the + // order of their arguments. + return syncFileRange2(fd, flags, off, n) +} + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go b/tests/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go new file mode 100644 index 000000000..8cf3670bd --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go @@ -0,0 +1,191 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build riscv64 && linux + +package unix + +import "unsafe" + +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Getuid() (uid int) +//sys Listen(s int, n int) (err error) +//sys MemfdSecret(flags int) (fd int, err error) +//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + var ts *Timespec + if timeout != nil { + ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} + } + return pselect6(nfd, r, w, e, ts, nil) +} + +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys setfsgid(gid int) (prev int, err error) +//sys setfsuid(uid int) (prev int, err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) + +func Stat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, 0) +} + +func Lchown(path string, uid int, gid int) (err error) { + return Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW) +} + +func Lstat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW) +} + +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + return ENOSYS +} + +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +//sysnb Gettimeofday(tv *Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func futimesat(dirfd int, path string, tv *[2]Timeval) (err error) { + if tv == nil { + return utimensat(dirfd, path, nil, 0) + } + + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func Time(t *Time_t) (Time_t, error) { + var tv Timeval + err := Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +func Utime(path string, buf *Utimbuf) error { + tv := []Timeval{ + {Sec: buf.Actime}, + {Sec: buf.Modtime}, + } + return Utimes(path, tv) +} + +func utimes(path string, tv *[2]Timeval) (err error) { + if tv == nil { + return utimensat(AT_FDCWD, path, nil, 0) + } + + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func (r *PtraceRegs) PC() uint64 { return r.Pc } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Pc = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint64(length) +} + +func Pause() error { + _, err := ppoll(nil, 0, nil, nil) + return err +} + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + return Renameat2(olddirfd, oldpath, newdirfd, newpath, 0) +} + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} + +//sys riscvHWProbe(pairs []RISCVHWProbePairs, cpuCount uintptr, cpus *CPUSet, flags uint) (err error) + +func RISCVHWProbe(pairs []RISCVHWProbePairs, set *CPUSet, flags uint) (err error) { + var setSize uintptr + + if set != nil { + setSize = uintptr(unsafe.Sizeof(*set)) + } + return riscvHWProbe(pairs, setSize, set, flags) +} + +const SYS_FSTATAT = SYS_NEWFSTATAT diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go b/tests/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go new file mode 100644 index 000000000..66f31210d --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go @@ -0,0 +1,296 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build s390x && linux + +package unix + +import ( + "unsafe" +) + +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Getuid() (uid int) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Pause() (err error) +//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys setfsgid(gid int) (prev int, err error) +//sys setfsuid(uid int) (prev int, err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) + +func Time(t *Time_t) (tt Time_t, err error) { + var tv Timeval + err = Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func Ioperm(from int, num int, on int) (err error) { + return ENOSYS +} + +func Iopl(level int) (err error) { + return ENOSYS +} + +func (r *PtraceRegs) PC() uint64 { return r.Psw.Addr } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Psw.Addr = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint64(length) +} + +// Linux on s390x uses the old mmap interface, which requires arguments to be passed in a struct. +// mmap2 also requires arguments to be passed in a struct; it is currently not exposed in <asm/unistd.h>. +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + mmap_args := [6]uintptr{addr, length, uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)} + r0, _, e1 := Syscall(SYS_MMAP, uintptr(unsafe.Pointer(&mmap_args[0])), 0, 0) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// On s390x Linux, all the socket calls go through an extra indirection. +// The arguments to the underlying system call (SYS_SOCKETCALL) are the +// number below and a pointer to an array of uintptr. +const ( + // see linux/net.h + netSocket = 1 + netBind = 2 + netConnect = 3 + netListen = 4 + netAccept = 5 + netGetSockName = 6 + netGetPeerName = 7 + netSocketPair = 8 + netSend = 9 + netRecv = 10 + netSendTo = 11 + netRecvFrom = 12 + netShutdown = 13 + netSetSockOpt = 14 + netGetSockOpt = 15 + netSendMsg = 16 + netRecvMsg = 17 + netAccept4 = 18 + netRecvMMsg = 19 + netSendMMsg = 20 +) + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (int, error) { + args := [4]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags)} + fd, _, err := Syscall(SYS_SOCKETCALL, netAccept4, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return 0, err + } + return int(fd), nil +} + +func getsockname(s int, rsa *RawSockaddrAny, addrlen *_Socklen) error { + args := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))} + _, _, err := RawSyscall(SYS_SOCKETCALL, netGetSockName, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func getpeername(s int, rsa *RawSockaddrAny, addrlen *_Socklen) error { + args := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))} + _, _, err := RawSyscall(SYS_SOCKETCALL, netGetPeerName, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func socketpair(domain int, typ int, flags int, fd *[2]int32) error { + args := [4]uintptr{uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd))} + _, _, err := RawSyscall(SYS_SOCKETCALL, netSocketPair, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) error { + args := [3]uintptr{uintptr(s), uintptr(addr), uintptr(addrlen)} + _, _, err := Syscall(SYS_SOCKETCALL, netBind, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) error { + args := [3]uintptr{uintptr(s), uintptr(addr), uintptr(addrlen)} + _, _, err := Syscall(SYS_SOCKETCALL, netConnect, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func socket(domain int, typ int, proto int) (int, error) { + args := [3]uintptr{uintptr(domain), uintptr(typ), uintptr(proto)} + fd, _, err := RawSyscall(SYS_SOCKETCALL, netSocket, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return 0, err + } + return int(fd), nil +} + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) error { + args := [5]uintptr{uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen))} + _, _, err := Syscall(SYS_SOCKETCALL, netGetSockOpt, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) error { + args := [5]uintptr{uintptr(s), uintptr(level), uintptr(name), uintptr(val), vallen} + _, _, err := Syscall(SYS_SOCKETCALL, netSetSockOpt, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func recvfrom(s int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (int, error) { + var base uintptr + if len(p) > 0 { + base = uintptr(unsafe.Pointer(&p[0])) + } + args := [6]uintptr{uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))} + n, _, err := Syscall(SYS_SOCKETCALL, netRecvFrom, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return 0, err + } + return int(n), nil +} + +func sendto(s int, p []byte, flags int, to unsafe.Pointer, addrlen _Socklen) error { + var base uintptr + if len(p) > 0 { + base = uintptr(unsafe.Pointer(&p[0])) + } + args := [6]uintptr{uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(to), uintptr(addrlen)} + _, _, err := Syscall(SYS_SOCKETCALL, netSendTo, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func recvmsg(s int, msg *Msghdr, flags int) (int, error) { + args := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)} + n, _, err := Syscall(SYS_SOCKETCALL, netRecvMsg, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return 0, err + } + return int(n), nil +} + +func sendmsg(s int, msg *Msghdr, flags int) (int, error) { + args := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)} + n, _, err := Syscall(SYS_SOCKETCALL, netSendMsg, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return 0, err + } + return int(n), nil +} + +func Listen(s int, n int) error { + args := [2]uintptr{uintptr(s), uintptr(n)} + _, _, err := Syscall(SYS_SOCKETCALL, netListen, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func Shutdown(s, how int) error { + args := [2]uintptr{uintptr(s), uintptr(how)} + _, _, err := Syscall(SYS_SOCKETCALL, netShutdown, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go b/tests/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go new file mode 100644 index 000000000..11d1f1698 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go @@ -0,0 +1,112 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build sparc64 && linux + +package unix + +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Getuid() (uid int) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Pause() (err error) +//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys setfsgid(gid int) (prev int, err error) +//sys setfsuid(uid int) (prev int, err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +func Ioperm(from int, num int, on int) (err error) { + return ENOSYS +} + +func Iopl(level int) (err error) { + return ENOSYS +} + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) + +func Time(t *Time_t) (tt Time_t, err error) { + var tv Timeval + err = Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func (r *PtraceRegs) PC() uint64 { return r.Tpc } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Tpc = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint64(length) +} diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_netbsd.go b/tests/vendor/golang.org/x/sys/unix/syscall_netbsd.go new file mode 100644 index 000000000..88162099a --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_netbsd.go @@ -0,0 +1,371 @@ +// Copyright 2009,2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// NetBSD system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and wrap +// it in our own nicer implementation, either here or in +// syscall_bsd.go or syscall_unix.go. + +package unix + +import ( + "syscall" + "unsafe" +) + +// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. +type SockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 + raw RawSockaddrDatalink +} + +func anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { + return nil, EAFNOSUPPORT +} + +func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) + +func sysctlNodes(mib []_C_int) (nodes []Sysctlnode, err error) { + var olen uintptr + + // Get a list of all sysctl nodes below the given MIB by performing + // a sysctl for the given MIB with CTL_QUERY appended. + mib = append(mib, CTL_QUERY) + qnode := Sysctlnode{Flags: SYSCTL_VERS_1} + qp := (*byte)(unsafe.Pointer(&qnode)) + sz := unsafe.Sizeof(qnode) + if err = sysctl(mib, nil, &olen, qp, sz); err != nil { + return nil, err + } + + // Now that we know the size, get the actual nodes. + nodes = make([]Sysctlnode, olen/sz) + np := (*byte)(unsafe.Pointer(&nodes[0])) + if err = sysctl(mib, np, &olen, qp, sz); err != nil { + return nil, err + } + + return nodes, nil +} + +func nametomib(name string) (mib []_C_int, err error) { + // Split name into components. + var parts []string + last := 0 + for i := 0; i < len(name); i++ { + if name[i] == '.' { + parts = append(parts, name[last:i]) + last = i + 1 + } + } + parts = append(parts, name[last:]) + + // Discover the nodes and construct the MIB OID. + for partno, part := range parts { + nodes, err := sysctlNodes(mib) + if err != nil { + return nil, err + } + for _, node := range nodes { + n := make([]byte, 0) + for i := range node.Name { + if node.Name[i] != 0 { + n = append(n, byte(node.Name[i])) + } + } + if string(n) == part { + mib = append(mib, _C_int(node.Num)) + break + } + } + if len(mib) != partno+1 { + return nil, EINVAL + } + } + + return mib, nil +} + +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) +} + +func SysctlUvmexp(name string) (*Uvmexp, error) { + mib, err := sysctlmib(name) + if err != nil { + return nil, err + } + + n := uintptr(SizeofUvmexp) + var u Uvmexp + if err := sysctl(mib, (*byte)(unsafe.Pointer(&u)), &n, nil, 0); err != nil { + return nil, err + } + return &u, nil +} + +func Pipe(p []int) (err error) { + return Pipe2(p, 0) +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) error { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err := pipe2(&pp, flags) + if err == nil { + p[0] = int(pp[0]) + p[1] = int(pp[1]) + } + return err +} + +//sys Getdents(fd int, buf []byte) (n int, err error) + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + n, err = Getdents(fd, buf) + if err != nil || basep == nil { + return + } + + var off int64 + off, err = Seek(fd, 0, 1 /* SEEK_CUR */) + if err != nil { + *basep = ^uintptr(0) + return + } + *basep = uintptr(off) + if unsafe.Sizeof(*basep) == 8 { + return + } + if off>>32 != 0 { + // We can't stuff the offset back into a uintptr, so any + // future calls would be suspect. Generate an error. + // EIO is allowed by getdirentries. + err = EIO + } + return +} + +//sys Getcwd(buf []byte) (n int, err error) = SYS___GETCWD + +// TODO +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + return -1, ENOSYS +} + +//sys ioctl(fd int, req uint, arg uintptr) (err error) +//sys ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL + +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL + +func IoctlGetPtmget(fd int, req uint) (*Ptmget, error) { + var value Ptmget + err := ioctlPtr(fd, req, unsafe.Pointer(&value)) + return &value, err +} + +func Uname(uname *Utsname) error { + mib := []_C_int{CTL_KERN, KERN_OSTYPE} + n := unsafe.Sizeof(uname.Sysname) + if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_HOSTNAME} + n = unsafe.Sizeof(uname.Nodename) + if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_OSRELEASE} + n = unsafe.Sizeof(uname.Release) + if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_VERSION} + n = unsafe.Sizeof(uname.Version) + if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil { + return err + } + + // The version might have newlines or tabs in it, convert them to + // spaces. + for i, b := range uname.Version { + if b == '\n' || b == '\t' { + if i == len(uname.Version)-1 { + uname.Version[i] = 0 + } else { + uname.Version[i] = ' ' + } + } + } + + mib = []_C_int{CTL_HW, HW_MACHINE} + n = unsafe.Sizeof(uname.Machine) + if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil { + return err + } + + return nil +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +func Fstatvfs(fd int, buf *Statvfs_t) (err error) { + return Fstatvfs1(fd, buf, ST_WAIT) +} + +func Statvfs(path string, buf *Statvfs_t) (err error) { + return Statvfs1(path, buf, ST_WAIT) +} + +/* + * Exposed directly + */ +//sys Access(path string, mode uint32) (err error) +//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error) +//sys Chdir(path string) (err error) +//sys Chflags(path string, flags int) (err error) +//sys Chmod(path string, mode uint32) (err error) +//sys Chown(path string, uid int, gid int) (err error) +//sys Chroot(path string) (err error) +//sys ClockGettime(clockid int32, time *Timespec) (err error) +//sys Close(fd int) (err error) +//sys Dup(fd int) (nfd int, err error) +//sys Dup2(from int, to int) (err error) +//sys Dup3(from int, to int, flags int) (err error) +//sys Exit(code int) +//sys ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) +//sys ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) +//sys ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) +//sys ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_POSIX_FADVISE +//sys Fchdir(fd int) (err error) +//sys Fchflags(fd int, flags int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Flock(fd int, how int) (err error) +//sys Fpathconf(fd int, name int) (val int, err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) = SYS_FSTATVFS1 +//sys Fsync(fd int) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (uid int) +//sysnb Getgid() (gid int) +//sysnb Getpgid(pid int) (pgid int, err error) +//sysnb Getpgrp() (pgrp int) +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrlimit(which int, lim *Rlimit) (err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Getuid() (uid int) +//sys Issetugid() (tainted bool) +//sys Kill(pid int, signum syscall.Signal) (err error) +//sys Kqueue() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Link(path string, link string) (err error) +//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) +//sys Listen(s int, backlog int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Mkdir(path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys Mkfifoat(dirfd int, path string, mode uint32) (err error) +//sys Mknod(path string, mode uint32, dev int) (err error) +//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) +//sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) +//sys Pathconf(path string, name int) (val int, err error) +//sys pread(fd int, p []byte, offset int64) (n int, err error) +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error) +//sys Rename(from string, to string) (err error) +//sys Renameat(fromfd int, from string, tofd int, to string) (err error) +//sys Revoke(path string) (err error) +//sys Rmdir(path string) (err error) +//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) +//sysnb Setegid(egid int) (err error) +//sysnb Seteuid(euid int) (err error) +//sysnb Setgid(gid int) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sys Setpriority(which int, who int, prio int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tp *Timeval) (err error) +//sysnb Setuid(uid int) (err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statvfs1(path string, buf *Statvfs_t, flags int) (err error) = SYS_STATVFS1 +//sys Symlink(path string, link string) (err error) +//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) +//sys Sync() (err error) +//sys Truncate(path string, length int64) (err error) +//sys Umask(newmask int) (oldmask int) +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Unmount(path string, flags int) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) +//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) + +const ( + mremapFixed = MAP_FIXED + mremapDontunmap = 0 + mremapMaymove = 0 +) + +//sys mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) = SYS_MREMAP + +func mremap(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (uintptr, error) { + return mremapNetBSD(oldaddr, oldlength, newaddr, newlength, flags) +} diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go b/tests/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go new file mode 100644 index 000000000..7a5eb5743 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go @@ -0,0 +1,37 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build 386 && netbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = uint32(mode) + k.Flags = uint32(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go b/tests/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go new file mode 100644 index 000000000..62d8957ae --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go @@ -0,0 +1,37 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build amd64 && netbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = uint32(mode) + k.Flags = uint32(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go b/tests/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go new file mode 100644 index 000000000..ce6a06885 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go @@ -0,0 +1,37 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build arm && netbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = uint32(mode) + k.Flags = uint32(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go b/tests/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go new file mode 100644 index 000000000..d46d689d1 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go @@ -0,0 +1,37 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build arm64 && netbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = uint32(mode) + k.Flags = uint32(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_openbsd.go b/tests/vendor/golang.org/x/sys/unix/syscall_openbsd.go new file mode 100644 index 000000000..b86ded549 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_openbsd.go @@ -0,0 +1,342 @@ +// Copyright 2009,2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// OpenBSD system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and wrap +// it in our own nicer implementation, either here or in +// syscall_bsd.go or syscall_unix.go. + +package unix + +import ( + "sort" + "syscall" + "unsafe" +) + +// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. +type SockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [24]int8 + raw RawSockaddrDatalink +} + +func anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { + return nil, EAFNOSUPPORT +} + +func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) + +func nametomib(name string) (mib []_C_int, err error) { + i := sort.Search(len(sysctlMib), func(i int) bool { + return sysctlMib[i].ctlname >= name + }) + if i < len(sysctlMib) && sysctlMib[i].ctlname == name { + return sysctlMib[i].ctloid, nil + } + return nil, EINVAL +} + +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) +} + +func SysctlUvmexp(name string) (*Uvmexp, error) { + mib, err := sysctlmib(name) + if err != nil { + return nil, err + } + + n := uintptr(SizeofUvmexp) + var u Uvmexp + if err := sysctl(mib, (*byte)(unsafe.Pointer(&u)), &n, nil, 0); err != nil { + return nil, err + } + if n != SizeofUvmexp { + return nil, EIO + } + return &u, nil +} + +func Pipe(p []int) (err error) { + return Pipe2(p, 0) +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) error { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err := pipe2(&pp, flags) + if err == nil { + p[0] = int(pp[0]) + p[1] = int(pp[1]) + } + return err +} + +//sys Getdents(fd int, buf []byte) (n int, err error) + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + n, err = Getdents(fd, buf) + if err != nil || basep == nil { + return + } + + var off int64 + off, err = Seek(fd, 0, 1 /* SEEK_CUR */) + if err != nil { + *basep = ^uintptr(0) + return + } + *basep = uintptr(off) + if unsafe.Sizeof(*basep) == 8 { + return + } + if off>>32 != 0 { + // We can't stuff the offset back into a uintptr, so any + // future calls would be suspect. Generate an error. + // EIO was allowed by getdirentries. + err = EIO + } + return +} + +//sys Getcwd(buf []byte) (n int, err error) = SYS___GETCWD + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +// TODO +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + return -1, ENOSYS +} + +func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { + var bufptr *Statfs_t + var bufsize uintptr + if len(buf) > 0 { + bufptr = &buf[0] + bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf)) + } + return getfsstat(bufptr, bufsize, flags) +} + +//sysnb getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) +//sysnb getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) + +func Getresuid() (ruid, euid, suid int) { + var r, e, s _C_int + getresuid(&r, &e, &s) + return int(r), int(e), int(s) +} + +func Getresgid() (rgid, egid, sgid int) { + var r, e, s _C_int + getresgid(&r, &e, &s) + return int(r), int(e), int(s) +} + +//sys ioctl(fd int, req uint, arg uintptr) (err error) +//sys ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL + +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL + +//sys fcntl(fd int, cmd int, arg int) (n int, err error) +//sys fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) = SYS_FCNTL + +// FcntlInt performs a fcntl syscall on fd with the provided command and argument. +func FcntlInt(fd uintptr, cmd, arg int) (int, error) { + return fcntl(int(fd), cmd, arg) +} + +// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command. +func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error { + _, err := fcntlPtr(int(fd), cmd, unsafe.Pointer(lk)) + return err +} + +//sys ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) + +func Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + if len(fds) == 0 { + return ppoll(nil, 0, timeout, sigmask) + } + return ppoll(&fds[0], len(fds), timeout, sigmask) +} + +func Uname(uname *Utsname) error { + mib := []_C_int{CTL_KERN, KERN_OSTYPE} + n := unsafe.Sizeof(uname.Sysname) + if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_HOSTNAME} + n = unsafe.Sizeof(uname.Nodename) + if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_OSRELEASE} + n = unsafe.Sizeof(uname.Release) + if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_VERSION} + n = unsafe.Sizeof(uname.Version) + if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil { + return err + } + + // The version might have newlines or tabs in it, convert them to + // spaces. + for i, b := range uname.Version { + if b == '\n' || b == '\t' { + if i == len(uname.Version)-1 { + uname.Version[i] = 0 + } else { + uname.Version[i] = ' ' + } + } + } + + mib = []_C_int{CTL_HW, HW_MACHINE} + n = unsafe.Sizeof(uname.Machine) + if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil { + return err + } + + return nil +} + +/* + * Exposed directly + */ +//sys Access(path string, mode uint32) (err error) +//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error) +//sys Chdir(path string) (err error) +//sys Chflags(path string, flags int) (err error) +//sys Chmod(path string, mode uint32) (err error) +//sys Chown(path string, uid int, gid int) (err error) +//sys Chroot(path string) (err error) +//sys ClockGettime(clockid int32, time *Timespec) (err error) +//sys Close(fd int) (err error) +//sys Dup(fd int) (nfd int, err error) +//sys Dup2(from int, to int) (err error) +//sys Dup3(from int, to int, flags int) (err error) +//sys Exit(code int) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchflags(fd int, flags int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Flock(fd int, how int) (err error) +//sys Fpathconf(fd int, name int) (val int, err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatfs(fd int, stat *Statfs_t) (err error) +//sys Fsync(fd int) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (uid int) +//sysnb Getgid() (gid int) +//sysnb Getpgid(pid int) (pgid int, err error) +//sysnb Getpgrp() (pgrp int) +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrlimit(which int, lim *Rlimit) (err error) +//sysnb Getrtable() (rtable int, err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Getuid() (uid int) +//sys Issetugid() (tainted bool) +//sys Kill(pid int, signum syscall.Signal) (err error) +//sys Kqueue() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Link(path string, link string) (err error) +//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) +//sys Listen(s int, backlog int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Mkdir(path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys Mkfifoat(dirfd int, path string, mode uint32) (err error) +//sys Mknod(path string, mode uint32, dev int) (err error) +//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) +//sys Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) +//sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) +//sys Pathconf(path string, name int) (val int, err error) +//sys pread(fd int, p []byte, offset int64) (n int, err error) +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error) +//sys Rename(from string, to string) (err error) +//sys Renameat(fromfd int, from string, tofd int, to string) (err error) +//sys Revoke(path string) (err error) +//sys Rmdir(path string) (err error) +//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) +//sysnb Setegid(egid int) (err error) +//sysnb Seteuid(euid int) (err error) +//sysnb Setgid(gid int) (err error) +//sys Setlogin(name string) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sys Setpriority(which int, who int, prio int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setrtable(rtable int) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tp *Timeval) (err error) +//sysnb Setuid(uid int) (err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, stat *Statfs_t) (err error) +//sys Symlink(path string, link string) (err error) +//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) +//sys Sync() (err error) +//sys Truncate(path string, length int64) (err error) +//sys Umask(newmask int) (oldmask int) +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Unmount(path string, flags int) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) +//sys getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) +//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) +//sys pledge(promises *byte, execpromises *byte) (err error) +//sys unveil(path *byte, flags *byte) (err error) diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go b/tests/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go new file mode 100644 index 000000000..9ddc89f4f --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go @@ -0,0 +1,41 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build 386 && openbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of openbsd/386 the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go b/tests/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go new file mode 100644 index 000000000..70a3c96ee --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go @@ -0,0 +1,41 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build amd64 && openbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of openbsd/amd64 the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go b/tests/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go new file mode 100644 index 000000000..265caa87f --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go @@ -0,0 +1,41 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build arm && openbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of openbsd/arm the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go b/tests/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go new file mode 100644 index 000000000..ac4fda171 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go @@ -0,0 +1,41 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build arm64 && openbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of openbsd/amd64 the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_openbsd_libc.go b/tests/vendor/golang.org/x/sys/unix/syscall_openbsd_libc.go new file mode 100644 index 000000000..0a451e6dd --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_openbsd_libc.go @@ -0,0 +1,26 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build openbsd + +package unix + +import _ "unsafe" + +// Implemented in the runtime package (runtime/sys_openbsd3.go) +func syscall_syscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) +func syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) +func syscall_syscall10(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 uintptr) (r1, r2 uintptr, err Errno) +func syscall_rawSyscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) +func syscall_rawSyscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) + +//go:linkname syscall_syscall syscall.syscall +//go:linkname syscall_syscall6 syscall.syscall6 +//go:linkname syscall_syscall10 syscall.syscall10 +//go:linkname syscall_rawSyscall syscall.rawSyscall +//go:linkname syscall_rawSyscall6 syscall.rawSyscall6 + +func syscall_syscall9(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno) { + return syscall_syscall10(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9, 0) +} diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go b/tests/vendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go new file mode 100644 index 000000000..1378489f8 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go @@ -0,0 +1,39 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of OpenBSD the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_openbsd_ppc64.go b/tests/vendor/golang.org/x/sys/unix/syscall_openbsd_ppc64.go new file mode 100644 index 000000000..30a308cbb --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_openbsd_ppc64.go @@ -0,0 +1,41 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build ppc64 && openbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of openbsd/ppc64 the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_openbsd_riscv64.go b/tests/vendor/golang.org/x/sys/unix/syscall_openbsd_riscv64.go new file mode 100644 index 000000000..ea954330f --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_openbsd_riscv64.go @@ -0,0 +1,41 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build riscv64 && openbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of openbsd/riscv64 the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_solaris.go b/tests/vendor/golang.org/x/sys/unix/syscall_solaris.go new file mode 100644 index 000000000..abc395547 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_solaris.go @@ -0,0 +1,1191 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Solaris system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and wrap +// it in our own nicer implementation, either here or in +// syscall_solaris.go or syscall_unix.go. + +package unix + +import ( + "fmt" + "os" + "runtime" + "sync" + "syscall" + "unsafe" +) + +// Implemented in runtime/syscall_solaris.go. +type syscallFunc uintptr + +func rawSysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) +func sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) + +// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. +type SockaddrDatalink struct { + Family uint16 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [244]int8 + raw RawSockaddrDatalink +} + +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + reclen, ok := direntReclen(buf) + if !ok { + return 0, false + } + return reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true +} + +//sysnb pipe(p *[2]_C_int) (n int, err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + n, err := pipe(&pp) + if n != 0 { + return err + } + if err == nil { + p[0] = int(pp[0]) + p[1] = int(pp[1]) + } + return nil +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) error { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err := pipe2(&pp, flags) + if err == nil { + p[0] = int(pp[0]) + p[1] = int(pp[1]) + } + return err +} + +func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Family = AF_INET + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Addr = sa.Addr + return unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil +} + +func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Family = AF_INET6 + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Scope_id = sa.ZoneId + sa.raw.Addr = sa.Addr + return unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil +} + +func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) { + name := sa.Name + n := len(name) + if n >= len(sa.raw.Path) { + return nil, 0, EINVAL + } + sa.raw.Family = AF_UNIX + for i := 0; i < n; i++ { + sa.raw.Path[i] = int8(name[i]) + } + // length is family (uint16), name, NUL. + sl := _Socklen(2) + if n > 0 { + sl += _Socklen(n) + 1 + } + if sa.raw.Path[0] == '@' || (sa.raw.Path[0] == 0 && sl > 3) { + // Check sl > 3 so we don't change unnamed socket behavior. + sa.raw.Path[0] = 0 + // Don't count trailing NUL for abstract address. + sl-- + } + + return unsafe.Pointer(&sa.raw), sl, nil +} + +//sys getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = libsocket.getsockname + +func Getsockname(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getsockname(fd, &rsa, &len); err != nil { + return + } + return anyToSockaddr(fd, &rsa) +} + +// GetsockoptString returns the string value of the socket option opt for the +// socket associated with fd at the given socket level. +func GetsockoptString(fd, level, opt int) (string, error) { + buf := make([]byte, 256) + vallen := _Socklen(len(buf)) + err := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen) + if err != nil { + return "", err + } + return ByteSliceToString(buf[:vallen]), nil +} + +const ImplementsGetwd = true + +//sys Getcwd(buf []byte) (n int, err error) + +func Getwd() (wd string, err error) { + var buf [PathMax]byte + // Getcwd will return an error if it failed for any reason. + _, err = Getcwd(buf[0:]) + if err != nil { + return "", err + } + n := clen(buf[:]) + if n < 1 { + return "", EINVAL + } + return string(buf[:n]), nil +} + +/* + * Wrapped + */ + +//sysnb getgroups(ngid int, gid *_Gid_t) (n int, err error) +//sysnb setgroups(ngid int, gid *_Gid_t) (err error) + +func Getgroups() (gids []int, err error) { + n, err := getgroups(0, nil) + // Check for error and sanity check group count. Newer versions of + // Solaris allow up to 1024 (NGROUPS_MAX). + if n < 0 || n > 1024 { + if err != nil { + return nil, err + } + return nil, EINVAL + } else if n == 0 { + return nil, nil + } + + a := make([]_Gid_t, n) + n, err = getgroups(n, &a[0]) + if n == -1 { + return nil, err + } + gids = make([]int, n) + for i, v := range a[0:n] { + gids[i] = int(v) + } + return +} + +func Setgroups(gids []int) (err error) { + if len(gids) == 0 { + return setgroups(0, nil) + } + + a := make([]_Gid_t, len(gids)) + for i, v := range gids { + a[i] = _Gid_t(v) + } + return setgroups(len(a), &a[0]) +} + +// ReadDirent reads directory entries from fd and writes them into buf. +func ReadDirent(fd int, buf []byte) (n int, err error) { + // Final argument is (basep *uintptr) and the syscall doesn't take nil. + // TODO(rsc): Can we use a single global basep for all calls? + return Getdents(fd, buf, new(uintptr)) +} + +// Wait status is 7 bits at bottom, either 0 (exited), +// 0x7F (stopped), or a signal number that caused an exit. +// The 0x80 bit is whether there was a core dump. +// An extra number (exit code, signal causing a stop) +// is in the high bits. + +type WaitStatus uint32 + +const ( + mask = 0x7F + core = 0x80 + shift = 8 + + exited = 0 + stopped = 0x7F +) + +func (w WaitStatus) Exited() bool { return w&mask == exited } + +func (w WaitStatus) ExitStatus() int { + if w&mask != exited { + return -1 + } + return int(w >> shift) +} + +func (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != 0 } + +func (w WaitStatus) Signal() syscall.Signal { + sig := syscall.Signal(w & mask) + if sig == stopped || sig == 0 { + return -1 + } + return sig +} + +func (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 } + +func (w WaitStatus) Stopped() bool { return w&mask == stopped && syscall.Signal(w>>shift) != SIGSTOP } + +func (w WaitStatus) Continued() bool { return w&mask == stopped && syscall.Signal(w>>shift) == SIGSTOP } + +func (w WaitStatus) StopSignal() syscall.Signal { + if !w.Stopped() { + return -1 + } + return syscall.Signal(w>>shift) & 0xFF +} + +func (w WaitStatus) TrapCause() int { return -1 } + +//sys wait4(pid int32, statusp *_C_int, options int, rusage *Rusage) (wpid int32, err error) + +func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (int, error) { + var status _C_int + rpid, err := wait4(int32(pid), &status, options, rusage) + wpid := int(rpid) + if wpid == -1 { + return wpid, err + } + if wstatus != nil { + *wstatus = WaitStatus(status) + } + return wpid, nil +} + +//sys gethostname(buf []byte) (n int, err error) + +func Gethostname() (name string, err error) { + var buf [MaxHostNameLen]byte + n, err := gethostname(buf[:]) + if n != 0 { + return "", err + } + n = clen(buf[:]) + if n < 1 { + return "", EFAULT + } + return string(buf[:n]), nil +} + +//sys utimes(path string, times *[2]Timeval) (err error) + +func Utimes(path string, tv []Timeval) (err error) { + if tv == nil { + return utimes(path, nil) + } + if len(tv) != 2 { + return EINVAL + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +//sys utimensat(fd int, path string, times *[2]Timespec, flag int) (err error) + +func UtimesNano(path string, ts []Timespec) error { + if ts == nil { + return utimensat(AT_FDCWD, path, nil, 0) + } + if len(ts) != 2 { + return EINVAL + } + return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error { + if ts == nil { + return utimensat(dirfd, path, nil, flags) + } + if len(ts) != 2 { + return EINVAL + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags) +} + +//sys fcntl(fd int, cmd int, arg int) (val int, err error) + +// FcntlInt performs a fcntl syscall on fd with the provided command and argument. +func FcntlInt(fd uintptr, cmd, arg int) (int, error) { + valptr, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(arg), 0, 0, 0) + var err error + if errno != 0 { + err = errno + } + return int(valptr), err +} + +// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command. +func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(unsafe.Pointer(lk)), 0, 0, 0) + if e1 != 0 { + return e1 + } + return nil +} + +//sys futimesat(fildes int, path *byte, times *[2]Timeval) (err error) + +func Futimesat(dirfd int, path string, tv []Timeval) error { + pathp, err := BytePtrFromString(path) + if err != nil { + return err + } + if tv == nil { + return futimesat(dirfd, pathp, nil) + } + if len(tv) != 2 { + return EINVAL + } + return futimesat(dirfd, pathp, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +// Solaris doesn't have an futimes function because it allows NULL to be +// specified as the path for futimesat. However, Go doesn't like +// NULL-style string interfaces, so this simple wrapper is provided. +func Futimes(fd int, tv []Timeval) error { + if tv == nil { + return futimesat(fd, nil, nil) + } + if len(tv) != 2 { + return EINVAL + } + return futimesat(fd, nil, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { + switch rsa.Addr.Family { + case AF_UNIX: + pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa)) + sa := new(SockaddrUnix) + // Assume path ends at NUL. + // This is not technically the Solaris semantics for + // abstract Unix domain sockets -- they are supposed + // to be uninterpreted fixed-size binary blobs -- but + // everyone uses this convention. + n := 0 + for n < len(pp.Path) && pp.Path[n] != 0 { + n++ + } + sa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n)) + return sa, nil + + case AF_INET: + pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet4) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.Addr = pp.Addr + return sa, nil + + case AF_INET6: + pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet6) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.ZoneId = pp.Scope_id + sa.Addr = pp.Addr + return sa, nil + } + return nil, EAFNOSUPPORT +} + +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) = libsocket.accept + +func Accept(fd int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept(fd, &rsa, &len) + if nfd == -1 { + return + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.__xnet_recvmsg + +func recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) { + var msg Msghdr + msg.Name = (*byte)(unsafe.Pointer(rsa)) + msg.Namelen = uint32(SizeofSockaddrAny) + var dummy byte + if len(oob) > 0 { + // receive at least one normal byte + if emptyIovecs(iov) { + var iova [1]Iovec + iova[0].Base = &dummy + iova[0].SetLen(1) + iov = iova[:] + } + msg.Accrightslen = int32(len(oob)) + } + if len(iov) > 0 { + msg.Iov = &iov[0] + msg.SetIovlen(len(iov)) + } + if n, err = recvmsg(fd, &msg, flags); n == -1 { + return + } + oobn = int(msg.Accrightslen) + return +} + +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.__xnet_sendmsg + +func sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) { + var msg Msghdr + msg.Name = (*byte)(unsafe.Pointer(ptr)) + msg.Namelen = uint32(salen) + var dummy byte + var empty bool + if len(oob) > 0 { + // send at least one normal byte + empty = emptyIovecs(iov) + if empty { + var iova [1]Iovec + iova[0].Base = &dummy + iova[0].SetLen(1) + iov = iova[:] + } + msg.Accrightslen = int32(len(oob)) + } + if len(iov) > 0 { + msg.Iov = &iov[0] + msg.SetIovlen(len(iov)) + } + if n, err = sendmsg(fd, &msg, flags); err != nil { + return 0, err + } + if len(oob) > 0 && empty { + n = 0 + } + return n, nil +} + +//sys acct(path *byte) (err error) + +func Acct(path string) (err error) { + if len(path) == 0 { + // Assume caller wants to disable accounting. + return acct(nil) + } + + pathp, err := BytePtrFromString(path) + if err != nil { + return err + } + return acct(pathp) +} + +//sys __makedev(version int, major uint, minor uint) (val uint64) + +func Mkdev(major, minor uint32) uint64 { + return __makedev(NEWDEV, uint(major), uint(minor)) +} + +//sys __major(version int, dev uint64) (val uint) + +func Major(dev uint64) uint32 { + return uint32(__major(NEWDEV, dev)) +} + +//sys __minor(version int, dev uint64) (val uint) + +func Minor(dev uint64) uint32 { + return uint32(__minor(NEWDEV, dev)) +} + +/* + * Expose the ioctl function + */ + +//sys ioctlRet(fd int, req int, arg uintptr) (ret int, err error) = libc.ioctl +//sys ioctlPtrRet(fd int, req int, arg unsafe.Pointer) (ret int, err error) = libc.ioctl + +func ioctl(fd int, req int, arg uintptr) (err error) { + _, err = ioctlRet(fd, req, arg) + return err +} + +func ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) { + _, err = ioctlPtrRet(fd, req, arg) + return err +} + +func IoctlSetTermio(fd int, req int, value *Termio) error { + return ioctlPtr(fd, req, unsafe.Pointer(value)) +} + +func IoctlGetTermio(fd int, req int) (*Termio, error) { + var value Termio + err := ioctlPtr(fd, req, unsafe.Pointer(&value)) + return &value, err +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +/* + * Exposed directly + */ +//sys Access(path string, mode uint32) (err error) +//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error) +//sys Chdir(path string) (err error) +//sys Chmod(path string, mode uint32) (err error) +//sys Chown(path string, uid int, gid int) (err error) +//sys Chroot(path string) (err error) +//sys ClockGettime(clockid int32, time *Timespec) (err error) +//sys Close(fd int) (err error) +//sys Creat(path string, mode uint32) (fd int, err error) +//sys Dup(fd int) (nfd int, err error) +//sys Dup2(oldfd int, newfd int) (err error) +//sys Exit(code int) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Fdatasync(fd int) (err error) +//sys Flock(fd int, how int) (err error) +//sys Fpathconf(fd int, name int) (val int, err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatvfs(fd int, vfsstat *Statvfs_t) (err error) +//sys Getdents(fd int, buf []byte, basep *uintptr) (n int, err error) +//sysnb Getgid() (gid int) +//sysnb Getpid() (pid int) +//sysnb Getpgid(pid int) (pgid int, err error) +//sysnb Getpgrp() (pgid int, err error) +//sys Geteuid() (euid int) +//sys Getegid() (egid int) +//sys Getppid() (ppid int) +//sys Getpriority(which int, who int) (n int, err error) +//sysnb Getrlimit(which int, lim *Rlimit) (err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Getuid() (uid int) +//sys Kill(pid int, signum syscall.Signal) (err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Link(path string, link string) (err error) +//sys Listen(s int, backlog int) (err error) = libsocket.__xnet_llisten +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Madvise(b []byte, advice int) (err error) +//sys Mkdir(path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys Mkfifoat(dirfd int, path string, mode uint32) (err error) +//sys Mknod(path string, mode uint32, dev int) (err error) +//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) +//sys Mlock(b []byte) (err error) +//sys Mlockall(flags int) (err error) +//sys Mprotect(b []byte, prot int) (err error) +//sys Msync(b []byte, flags int) (err error) +//sys Munlock(b []byte) (err error) +//sys Munlockall() (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) +//sys Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) +//sys Pathconf(path string, name int) (val int, err error) +//sys Pause() (err error) +//sys pread(fd int, p []byte, offset int64) (n int, err error) +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Rename(from string, to string) (err error) +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Rmdir(path string) (err error) +//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = lseek +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) +//sysnb Setegid(egid int) (err error) +//sysnb Seteuid(euid int) (err error) +//sysnb Setgid(gid int) (err error) +//sys Sethostname(p []byte) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sys Setpriority(which int, who int, prio int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Setuid(uid int) (err error) +//sys Shutdown(s int, how int) (err error) = libsocket.shutdown +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statvfs(path string, vfsstat *Statvfs_t) (err error) +//sys Symlink(path string, link string) (err error) +//sys Sync() (err error) +//sys Sysconf(which int) (n int64, err error) +//sysnb Times(tms *Tms) (ticks uintptr, err error) +//sys Truncate(path string, length int64) (err error) +//sys Fsync(fd int) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sys Umask(mask int) (oldmask int) +//sysnb Uname(buf *Utsname) (err error) +//sys Unmount(target string, flags int) (err error) = libc.umount +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys Utime(path string, buf *Utimbuf) (err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_bind +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_connect +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = libsendfile.sendfile +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_sendto +//sys socket(domain int, typ int, proto int) (fd int, err error) = libsocket.__xnet_socket +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) = libsocket.__xnet_socketpair +//sys write(fd int, p []byte) (n int, err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) = libsocket.__xnet_getsockopt +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = libsocket.getpeername +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) = libsocket.setsockopt +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) = libsocket.recvfrom + +// Event Ports + +type fileObjCookie struct { + fobj *fileObj + cookie interface{} +} + +// EventPort provides a safe abstraction on top of Solaris/illumos Event Ports. +type EventPort struct { + port int + mu sync.Mutex + fds map[uintptr]*fileObjCookie + paths map[string]*fileObjCookie + // The user cookie presents an interesting challenge from a memory management perspective. + // There are two paths by which we can discover that it is no longer in use: + // 1. The user calls port_dissociate before any events fire + // 2. An event fires and we return it to the user + // The tricky situation is if the event has fired in the kernel but + // the user hasn't requested/received it yet. + // If the user wants to port_dissociate before the event has been processed, + // we should handle things gracefully. To do so, we need to keep an extra + // reference to the cookie around until the event is processed + // thus the otherwise seemingly extraneous "cookies" map + // The key of this map is a pointer to the corresponding fCookie + cookies map[*fileObjCookie]struct{} +} + +// PortEvent is an abstraction of the port_event C struct. +// Compare Source against PORT_SOURCE_FILE or PORT_SOURCE_FD +// to see if Path or Fd was the event source. The other will be +// uninitialized. +type PortEvent struct { + Cookie interface{} + Events int32 + Fd uintptr + Path string + Source uint16 + fobj *fileObj +} + +// NewEventPort creates a new EventPort including the +// underlying call to port_create(3c). +func NewEventPort() (*EventPort, error) { + port, err := port_create() + if err != nil { + return nil, err + } + e := &EventPort{ + port: port, + fds: make(map[uintptr]*fileObjCookie), + paths: make(map[string]*fileObjCookie), + cookies: make(map[*fileObjCookie]struct{}), + } + return e, nil +} + +//sys port_create() (n int, err error) +//sys port_associate(port int, source int, object uintptr, events int, user *byte) (n int, err error) +//sys port_dissociate(port int, source int, object uintptr) (n int, err error) +//sys port_get(port int, pe *portEvent, timeout *Timespec) (n int, err error) +//sys port_getn(port int, pe *portEvent, max uint32, nget *uint32, timeout *Timespec) (n int, err error) + +// Close closes the event port. +func (e *EventPort) Close() error { + e.mu.Lock() + defer e.mu.Unlock() + err := Close(e.port) + if err != nil { + return err + } + e.fds = nil + e.paths = nil + e.cookies = nil + return nil +} + +// PathIsWatched checks to see if path is associated with this EventPort. +func (e *EventPort) PathIsWatched(path string) bool { + e.mu.Lock() + defer e.mu.Unlock() + _, found := e.paths[path] + return found +} + +// FdIsWatched checks to see if fd is associated with this EventPort. +func (e *EventPort) FdIsWatched(fd uintptr) bool { + e.mu.Lock() + defer e.mu.Unlock() + _, found := e.fds[fd] + return found +} + +// AssociatePath wraps port_associate(3c) for a filesystem path including +// creating the necessary file_obj from the provided stat information. +func (e *EventPort) AssociatePath(path string, stat os.FileInfo, events int, cookie interface{}) error { + e.mu.Lock() + defer e.mu.Unlock() + if _, found := e.paths[path]; found { + return fmt.Errorf("%v is already associated with this Event Port", path) + } + fCookie, err := createFileObjCookie(path, stat, cookie) + if err != nil { + return err + } + _, err = port_associate(e.port, PORT_SOURCE_FILE, uintptr(unsafe.Pointer(fCookie.fobj)), events, (*byte)(unsafe.Pointer(fCookie))) + if err != nil { + return err + } + e.paths[path] = fCookie + e.cookies[fCookie] = struct{}{} + return nil +} + +// DissociatePath wraps port_dissociate(3c) for a filesystem path. +func (e *EventPort) DissociatePath(path string) error { + e.mu.Lock() + defer e.mu.Unlock() + f, ok := e.paths[path] + if !ok { + return fmt.Errorf("%v is not associated with this Event Port", path) + } + _, err := port_dissociate(e.port, PORT_SOURCE_FILE, uintptr(unsafe.Pointer(f.fobj))) + // If the path is no longer associated with this event port (ENOENT) + // we should delete it from our map. We can still return ENOENT to the caller. + // But we need to save the cookie + if err != nil && err != ENOENT { + return err + } + if err == nil { + // dissociate was successful, safe to delete the cookie + fCookie := e.paths[path] + delete(e.cookies, fCookie) + } + delete(e.paths, path) + return err +} + +// AssociateFd wraps calls to port_associate(3c) on file descriptors. +func (e *EventPort) AssociateFd(fd uintptr, events int, cookie interface{}) error { + e.mu.Lock() + defer e.mu.Unlock() + if _, found := e.fds[fd]; found { + return fmt.Errorf("%v is already associated with this Event Port", fd) + } + fCookie, err := createFileObjCookie("", nil, cookie) + if err != nil { + return err + } + _, err = port_associate(e.port, PORT_SOURCE_FD, fd, events, (*byte)(unsafe.Pointer(fCookie))) + if err != nil { + return err + } + e.fds[fd] = fCookie + e.cookies[fCookie] = struct{}{} + return nil +} + +// DissociateFd wraps calls to port_dissociate(3c) on file descriptors. +func (e *EventPort) DissociateFd(fd uintptr) error { + e.mu.Lock() + defer e.mu.Unlock() + _, ok := e.fds[fd] + if !ok { + return fmt.Errorf("%v is not associated with this Event Port", fd) + } + _, err := port_dissociate(e.port, PORT_SOURCE_FD, fd) + if err != nil && err != ENOENT { + return err + } + if err == nil { + // dissociate was successful, safe to delete the cookie + fCookie := e.fds[fd] + delete(e.cookies, fCookie) + } + delete(e.fds, fd) + return err +} + +func createFileObjCookie(name string, stat os.FileInfo, cookie interface{}) (*fileObjCookie, error) { + fCookie := new(fileObjCookie) + fCookie.cookie = cookie + if name != "" && stat != nil { + fCookie.fobj = new(fileObj) + bs, err := ByteSliceFromString(name) + if err != nil { + return nil, err + } + fCookie.fobj.Name = (*int8)(unsafe.Pointer(&bs[0])) + s := stat.Sys().(*syscall.Stat_t) + fCookie.fobj.Atim.Sec = s.Atim.Sec + fCookie.fobj.Atim.Nsec = s.Atim.Nsec + fCookie.fobj.Mtim.Sec = s.Mtim.Sec + fCookie.fobj.Mtim.Nsec = s.Mtim.Nsec + fCookie.fobj.Ctim.Sec = s.Ctim.Sec + fCookie.fobj.Ctim.Nsec = s.Ctim.Nsec + } + return fCookie, nil +} + +// GetOne wraps port_get(3c) and returns a single PortEvent. +func (e *EventPort) GetOne(t *Timespec) (*PortEvent, error) { + pe := new(portEvent) + _, err := port_get(e.port, pe, t) + if err != nil { + return nil, err + } + p := new(PortEvent) + e.mu.Lock() + defer e.mu.Unlock() + err = e.peIntToExt(pe, p) + if err != nil { + return nil, err + } + return p, nil +} + +// peIntToExt converts a cgo portEvent struct into the friendlier PortEvent +// NOTE: Always call this function while holding the e.mu mutex +func (e *EventPort) peIntToExt(peInt *portEvent, peExt *PortEvent) error { + if e.cookies == nil { + return fmt.Errorf("this EventPort is already closed") + } + peExt.Events = peInt.Events + peExt.Source = peInt.Source + fCookie := (*fileObjCookie)(unsafe.Pointer(peInt.User)) + _, found := e.cookies[fCookie] + + if !found { + panic("unexpected event port address; may be due to kernel bug; see https://go.dev/issue/54254") + } + peExt.Cookie = fCookie.cookie + delete(e.cookies, fCookie) + + switch peInt.Source { + case PORT_SOURCE_FD: + peExt.Fd = uintptr(peInt.Object) + // Only remove the fds entry if it exists and this cookie matches + if fobj, ok := e.fds[peExt.Fd]; ok { + if fobj == fCookie { + delete(e.fds, peExt.Fd) + } + } + case PORT_SOURCE_FILE: + peExt.fobj = fCookie.fobj + peExt.Path = BytePtrToString((*byte)(unsafe.Pointer(peExt.fobj.Name))) + // Only remove the paths entry if it exists and this cookie matches + if fobj, ok := e.paths[peExt.Path]; ok { + if fobj == fCookie { + delete(e.paths, peExt.Path) + } + } + } + return nil +} + +// Pending wraps port_getn(3c) and returns how many events are pending. +func (e *EventPort) Pending() (int, error) { + var n uint32 = 0 + _, err := port_getn(e.port, nil, 0, &n, nil) + return int(n), err +} + +// Get wraps port_getn(3c) and fills a slice of PortEvent. +// It will block until either min events have been received +// or the timeout has been exceeded. It will return how many +// events were actually received along with any error information. +func (e *EventPort) Get(s []PortEvent, min int, timeout *Timespec) (int, error) { + if min == 0 { + return 0, fmt.Errorf("need to request at least one event or use Pending() instead") + } + if len(s) < min { + return 0, fmt.Errorf("len(s) (%d) is less than min events requested (%d)", len(s), min) + } + got := uint32(min) + max := uint32(len(s)) + var err error + ps := make([]portEvent, max) + _, err = port_getn(e.port, &ps[0], max, &got, timeout) + // got will be trustworthy with ETIME, but not any other error. + if err != nil && err != ETIME { + return 0, err + } + e.mu.Lock() + defer e.mu.Unlock() + valid := 0 + for i := 0; i < int(got); i++ { + err2 := e.peIntToExt(&ps[i], &s[i]) + if err2 != nil { + if valid == 0 && err == nil { + // If err2 is the only error and there are no valid events + // to return, return it to the caller. + err = err2 + } + break + } + valid = i + 1 + } + return valid, err +} + +//sys putmsg(fd int, clptr *strbuf, dataptr *strbuf, flags int) (err error) + +func Putmsg(fd int, cl []byte, data []byte, flags int) (err error) { + var clp, datap *strbuf + if len(cl) > 0 { + clp = &strbuf{ + Len: int32(len(cl)), + Buf: (*int8)(unsafe.Pointer(&cl[0])), + } + } + if len(data) > 0 { + datap = &strbuf{ + Len: int32(len(data)), + Buf: (*int8)(unsafe.Pointer(&data[0])), + } + } + return putmsg(fd, clp, datap, flags) +} + +//sys getmsg(fd int, clptr *strbuf, dataptr *strbuf, flags *int) (err error) + +func Getmsg(fd int, cl []byte, data []byte) (retCl []byte, retData []byte, flags int, err error) { + var clp, datap *strbuf + if len(cl) > 0 { + clp = &strbuf{ + Maxlen: int32(len(cl)), + Buf: (*int8)(unsafe.Pointer(&cl[0])), + } + } + if len(data) > 0 { + datap = &strbuf{ + Maxlen: int32(len(data)), + Buf: (*int8)(unsafe.Pointer(&data[0])), + } + } + + if err = getmsg(fd, clp, datap, &flags); err != nil { + return nil, nil, 0, err + } + + if len(cl) > 0 { + retCl = cl[:clp.Len] + } + if len(data) > 0 { + retData = data[:datap.Len] + } + return retCl, retData, flags, nil +} + +func IoctlSetIntRetInt(fd int, req int, arg int) (int, error) { + return ioctlRet(fd, req, uintptr(arg)) +} + +func IoctlSetString(fd int, req int, val string) error { + bs := make([]byte, len(val)+1) + copy(bs[:len(bs)-1], val) + err := ioctlPtr(fd, req, unsafe.Pointer(&bs[0])) + runtime.KeepAlive(&bs[0]) + return err +} + +// Lifreq Helpers + +func (l *Lifreq) SetName(name string) error { + if len(name) >= len(l.Name) { + return fmt.Errorf("name cannot be more than %d characters", len(l.Name)-1) + } + for i := range name { + l.Name[i] = int8(name[i]) + } + return nil +} + +func (l *Lifreq) SetLifruInt(d int) { + *(*int)(unsafe.Pointer(&l.Lifru[0])) = d +} + +func (l *Lifreq) GetLifruInt() int { + return *(*int)(unsafe.Pointer(&l.Lifru[0])) +} + +func (l *Lifreq) SetLifruUint(d uint) { + *(*uint)(unsafe.Pointer(&l.Lifru[0])) = d +} + +func (l *Lifreq) GetLifruUint() uint { + return *(*uint)(unsafe.Pointer(&l.Lifru[0])) +} + +func IoctlLifreq(fd int, req int, l *Lifreq) error { + return ioctlPtr(fd, req, unsafe.Pointer(l)) +} + +// Strioctl Helpers + +func (s *Strioctl) SetInt(i int) { + s.Len = int32(unsafe.Sizeof(i)) + s.Dp = (*int8)(unsafe.Pointer(&i)) +} + +func IoctlSetStrioctlRetInt(fd int, req int, s *Strioctl) (int, error) { + return ioctlPtrRet(fd, req, unsafe.Pointer(s)) +} + +// Ucred Helpers +// See ucred(3c) and getpeerucred(3c) + +//sys getpeerucred(fd uintptr, ucred *uintptr) (err error) +//sys ucredFree(ucred uintptr) = ucred_free +//sys ucredGet(pid int) (ucred uintptr, err error) = ucred_get +//sys ucredGeteuid(ucred uintptr) (uid int) = ucred_geteuid +//sys ucredGetegid(ucred uintptr) (gid int) = ucred_getegid +//sys ucredGetruid(ucred uintptr) (uid int) = ucred_getruid +//sys ucredGetrgid(ucred uintptr) (gid int) = ucred_getrgid +//sys ucredGetsuid(ucred uintptr) (uid int) = ucred_getsuid +//sys ucredGetsgid(ucred uintptr) (gid int) = ucred_getsgid +//sys ucredGetpid(ucred uintptr) (pid int) = ucred_getpid + +// Ucred is an opaque struct that holds user credentials. +type Ucred struct { + ucred uintptr +} + +// We need to ensure that ucredFree is called on the underlying ucred +// when the Ucred is garbage collected. +func ucredFinalizer(u *Ucred) { + ucredFree(u.ucred) +} + +func GetPeerUcred(fd uintptr) (*Ucred, error) { + var ucred uintptr + err := getpeerucred(fd, &ucred) + if err != nil { + return nil, err + } + result := &Ucred{ + ucred: ucred, + } + // set the finalizer on the result so that the ucred will be freed + runtime.SetFinalizer(result, ucredFinalizer) + return result, nil +} + +func UcredGet(pid int) (*Ucred, error) { + ucred, err := ucredGet(pid) + if err != nil { + return nil, err + } + result := &Ucred{ + ucred: ucred, + } + // set the finalizer on the result so that the ucred will be freed + runtime.SetFinalizer(result, ucredFinalizer) + return result, nil +} + +func (u *Ucred) Geteuid() int { + defer runtime.KeepAlive(u) + return ucredGeteuid(u.ucred) +} + +func (u *Ucred) Getruid() int { + defer runtime.KeepAlive(u) + return ucredGetruid(u.ucred) +} + +func (u *Ucred) Getsuid() int { + defer runtime.KeepAlive(u) + return ucredGetsuid(u.ucred) +} + +func (u *Ucred) Getegid() int { + defer runtime.KeepAlive(u) + return ucredGetegid(u.ucred) +} + +func (u *Ucred) Getrgid() int { + defer runtime.KeepAlive(u) + return ucredGetrgid(u.ucred) +} + +func (u *Ucred) Getsgid() int { + defer runtime.KeepAlive(u) + return ucredGetsgid(u.ucred) +} + +func (u *Ucred) Getpid() int { + defer runtime.KeepAlive(u) + return ucredGetpid(u.ucred) +} diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go b/tests/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go new file mode 100644 index 000000000..e02d8ceae --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go @@ -0,0 +1,27 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build amd64 && solaris + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_unix.go b/tests/vendor/golang.org/x/sys/unix/syscall_unix.go new file mode 100644 index 000000000..4e92e5aa4 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_unix.go @@ -0,0 +1,615 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris + +package unix + +import ( + "bytes" + "sort" + "sync" + "syscall" + "unsafe" +) + +var ( + Stdin = 0 + Stdout = 1 + Stderr = 2 +) + +// Do the interface allocations only once for common +// Errno values. +var ( + errEAGAIN error = syscall.EAGAIN + errEINVAL error = syscall.EINVAL + errENOENT error = syscall.ENOENT +) + +var ( + signalNameMapOnce sync.Once + signalNameMap map[string]syscall.Signal +) + +// errnoErr returns common boxed Errno values, to prevent +// allocations at runtime. +func errnoErr(e syscall.Errno) error { + switch e { + case 0: + return nil + case EAGAIN: + return errEAGAIN + case EINVAL: + return errEINVAL + case ENOENT: + return errENOENT + } + return e +} + +// ErrnoName returns the error name for error number e. +func ErrnoName(e syscall.Errno) string { + i := sort.Search(len(errorList), func(i int) bool { + return errorList[i].num >= e + }) + if i < len(errorList) && errorList[i].num == e { + return errorList[i].name + } + return "" +} + +// SignalName returns the signal name for signal number s. +func SignalName(s syscall.Signal) string { + i := sort.Search(len(signalList), func(i int) bool { + return signalList[i].num >= s + }) + if i < len(signalList) && signalList[i].num == s { + return signalList[i].name + } + return "" +} + +// SignalNum returns the syscall.Signal for signal named s, +// or 0 if a signal with such name is not found. +// The signal name should start with "SIG". +func SignalNum(s string) syscall.Signal { + signalNameMapOnce.Do(func() { + signalNameMap = make(map[string]syscall.Signal, len(signalList)) + for _, signal := range signalList { + signalNameMap[signal.name] = signal.num + } + }) + return signalNameMap[s] +} + +// clen returns the index of the first NULL byte in n or len(n) if n contains no NULL byte. +func clen(n []byte) int { + i := bytes.IndexByte(n, 0) + if i == -1 { + i = len(n) + } + return i +} + +// Mmap manager, for use by operating system-specific implementations. + +type mmapper struct { + sync.Mutex + active map[*byte][]byte // active mappings; key is last byte in mapping + mmap func(addr, length uintptr, prot, flags, fd int, offset int64) (uintptr, error) + munmap func(addr uintptr, length uintptr) error +} + +func (m *mmapper) Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { + if length <= 0 { + return nil, EINVAL + } + + // Map the requested memory. + addr, errno := m.mmap(0, uintptr(length), prot, flags, fd, offset) + if errno != nil { + return nil, errno + } + + // Use unsafe to convert addr into a []byte. + b := unsafe.Slice((*byte)(unsafe.Pointer(addr)), length) + + // Register mapping in m and return it. + p := &b[cap(b)-1] + m.Lock() + defer m.Unlock() + m.active[p] = b + return b, nil +} + +func (m *mmapper) Munmap(data []byte) (err error) { + if len(data) == 0 || len(data) != cap(data) { + return EINVAL + } + + // Find the base of the mapping. + p := &data[cap(data)-1] + m.Lock() + defer m.Unlock() + b := m.active[p] + if b == nil || &b[0] != &data[0] { + return EINVAL + } + + // Unmap the memory and update m. + if errno := m.munmap(uintptr(unsafe.Pointer(&b[0])), uintptr(len(b))); errno != nil { + return errno + } + delete(m.active, p) + return nil +} + +func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { + return mapper.Mmap(fd, offset, length, prot, flags) +} + +func Munmap(b []byte) (err error) { + return mapper.Munmap(b) +} + +func MmapPtr(fd int, offset int64, addr unsafe.Pointer, length uintptr, prot int, flags int) (ret unsafe.Pointer, err error) { + xaddr, err := mapper.mmap(uintptr(addr), length, prot, flags, fd, offset) + return unsafe.Pointer(xaddr), err +} + +func MunmapPtr(addr unsafe.Pointer, length uintptr) (err error) { + return mapper.munmap(uintptr(addr), length) +} + +func Read(fd int, p []byte) (n int, err error) { + n, err = read(fd, p) + if raceenabled { + if n > 0 { + raceWriteRange(unsafe.Pointer(&p[0]), n) + } + if err == nil { + raceAcquire(unsafe.Pointer(&ioSync)) + } + } + return +} + +func Write(fd int, p []byte) (n int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + n, err = write(fd, p) + if raceenabled && n > 0 { + raceReadRange(unsafe.Pointer(&p[0]), n) + } + return +} + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + n, err = pread(fd, p, offset) + if raceenabled { + if n > 0 { + raceWriteRange(unsafe.Pointer(&p[0]), n) + } + if err == nil { + raceAcquire(unsafe.Pointer(&ioSync)) + } + } + return +} + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + n, err = pwrite(fd, p, offset) + if raceenabled && n > 0 { + raceReadRange(unsafe.Pointer(&p[0]), n) + } + return +} + +// For testing: clients can set this flag to force +// creation of IPv6 sockets to return EAFNOSUPPORT. +var SocketDisableIPv6 bool + +// Sockaddr represents a socket address. +type Sockaddr interface { + sockaddr() (ptr unsafe.Pointer, len _Socklen, err error) // lowercase; only we can define Sockaddrs +} + +// SockaddrInet4 implements the Sockaddr interface for AF_INET type sockets. +type SockaddrInet4 struct { + Port int + Addr [4]byte + raw RawSockaddrInet4 +} + +// SockaddrInet6 implements the Sockaddr interface for AF_INET6 type sockets. +type SockaddrInet6 struct { + Port int + ZoneId uint32 + Addr [16]byte + raw RawSockaddrInet6 +} + +// SockaddrUnix implements the Sockaddr interface for AF_UNIX type sockets. +type SockaddrUnix struct { + Name string + raw RawSockaddrUnix +} + +func Bind(fd int, sa Sockaddr) (err error) { + ptr, n, err := sa.sockaddr() + if err != nil { + return err + } + return bind(fd, ptr, n) +} + +func Connect(fd int, sa Sockaddr) (err error) { + ptr, n, err := sa.sockaddr() + if err != nil { + return err + } + return connect(fd, ptr, n) +} + +func Getpeername(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getpeername(fd, &rsa, &len); err != nil { + return + } + return anyToSockaddr(fd, &rsa) +} + +func GetsockoptByte(fd, level, opt int) (value byte, err error) { + var n byte + vallen := _Socklen(1) + err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen) + return n, err +} + +func GetsockoptInt(fd, level, opt int) (value int, err error) { + var n int32 + vallen := _Socklen(4) + err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen) + return int(n), err +} + +func GetsockoptInet4Addr(fd, level, opt int) (value [4]byte, err error) { + vallen := _Socklen(4) + err = getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen) + return value, err +} + +func GetsockoptIPMreq(fd, level, opt int) (*IPMreq, error) { + var value IPMreq + vallen := _Socklen(SizeofIPMreq) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptIPv6Mreq(fd, level, opt int) (*IPv6Mreq, error) { + var value IPv6Mreq + vallen := _Socklen(SizeofIPv6Mreq) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptIPv6MTUInfo(fd, level, opt int) (*IPv6MTUInfo, error) { + var value IPv6MTUInfo + vallen := _Socklen(SizeofIPv6MTUInfo) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptICMPv6Filter(fd, level, opt int) (*ICMPv6Filter, error) { + var value ICMPv6Filter + vallen := _Socklen(SizeofICMPv6Filter) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptLinger(fd, level, opt int) (*Linger, error) { + var linger Linger + vallen := _Socklen(SizeofLinger) + err := getsockopt(fd, level, opt, unsafe.Pointer(&linger), &vallen) + return &linger, err +} + +func GetsockoptTimeval(fd, level, opt int) (*Timeval, error) { + var tv Timeval + vallen := _Socklen(unsafe.Sizeof(tv)) + err := getsockopt(fd, level, opt, unsafe.Pointer(&tv), &vallen) + return &tv, err +} + +func GetsockoptUint64(fd, level, opt int) (value uint64, err error) { + var n uint64 + vallen := _Socklen(8) + err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen) + return n, err +} + +func Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if n, err = recvfrom(fd, p, flags, &rsa, &len); err != nil { + return + } + if rsa.Addr.Family != AF_UNSPEC { + from, err = anyToSockaddr(fd, &rsa) + } + return +} + +// Recvmsg receives a message from a socket using the recvmsg system call. The +// received non-control data will be written to p, and any "out of band" +// control data will be written to oob. The flags are passed to recvmsg. +// +// The results are: +// - n is the number of non-control data bytes read into p +// - oobn is the number of control data bytes read into oob; this may be interpreted using [ParseSocketControlMessage] +// - recvflags is flags returned by recvmsg +// - from is the address of the sender +// +// If the underlying socket type is not SOCK_DGRAM, a received message +// containing oob data and a single '\0' of non-control data is treated as if +// the message contained only control data, i.e. n will be zero on return. +func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { + var iov [1]Iovec + if len(p) > 0 { + iov[0].Base = &p[0] + iov[0].SetLen(len(p)) + } + var rsa RawSockaddrAny + n, oobn, recvflags, err = recvmsgRaw(fd, iov[:], oob, flags, &rsa) + // source address is only specified if the socket is unconnected + if rsa.Addr.Family != AF_UNSPEC { + from, err = anyToSockaddr(fd, &rsa) + } + return +} + +// RecvmsgBuffers receives a message from a socket using the recvmsg system +// call. This function is equivalent to Recvmsg, but non-control data read is +// scattered into the buffers slices. +func RecvmsgBuffers(fd int, buffers [][]byte, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { + iov := make([]Iovec, len(buffers)) + for i := range buffers { + if len(buffers[i]) > 0 { + iov[i].Base = &buffers[i][0] + iov[i].SetLen(len(buffers[i])) + } else { + iov[i].Base = (*byte)(unsafe.Pointer(&_zero)) + } + } + var rsa RawSockaddrAny + n, oobn, recvflags, err = recvmsgRaw(fd, iov, oob, flags, &rsa) + if err == nil && rsa.Addr.Family != AF_UNSPEC { + from, err = anyToSockaddr(fd, &rsa) + } + return +} + +// Sendmsg sends a message on a socket to an address using the sendmsg system +// call. This function is equivalent to SendmsgN, but does not return the +// number of bytes actually sent. +func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) { + _, err = SendmsgN(fd, p, oob, to, flags) + return +} + +// SendmsgN sends a message on a socket to an address using the sendmsg system +// call. p contains the non-control data to send, and oob contains the "out of +// band" control data. The flags are passed to sendmsg. The number of +// non-control bytes actually written to the socket is returned. +// +// Some socket types do not support sending control data without accompanying +// non-control data. If p is empty, and oob contains control data, and the +// underlying socket type is not SOCK_DGRAM, p will be treated as containing a +// single '\0' and the return value will indicate zero bytes sent. +// +// The Go function Recvmsg, if called with an empty p and a non-empty oob, +// will read and ignore this additional '\0'. If the message is received by +// code that does not use Recvmsg, or that does not use Go at all, that code +// will need to be written to expect and ignore the additional '\0'. +// +// If you need to send non-empty oob with p actually empty, and if the +// underlying socket type supports it, you can do so via a raw system call as +// follows: +// +// msg := &unix.Msghdr{ +// Control: &oob[0], +// } +// msg.SetControllen(len(oob)) +// n, _, errno := unix.Syscall(unix.SYS_SENDMSG, uintptr(fd), uintptr(unsafe.Pointer(msg)), flags) +func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) { + var iov [1]Iovec + if len(p) > 0 { + iov[0].Base = &p[0] + iov[0].SetLen(len(p)) + } + var ptr unsafe.Pointer + var salen _Socklen + if to != nil { + ptr, salen, err = to.sockaddr() + if err != nil { + return 0, err + } + } + return sendmsgN(fd, iov[:], oob, ptr, salen, flags) +} + +// SendmsgBuffers sends a message on a socket to an address using the sendmsg +// system call. This function is equivalent to SendmsgN, but the non-control +// data is gathered from buffers. +func SendmsgBuffers(fd int, buffers [][]byte, oob []byte, to Sockaddr, flags int) (n int, err error) { + iov := make([]Iovec, len(buffers)) + for i := range buffers { + if len(buffers[i]) > 0 { + iov[i].Base = &buffers[i][0] + iov[i].SetLen(len(buffers[i])) + } else { + iov[i].Base = (*byte)(unsafe.Pointer(&_zero)) + } + } + var ptr unsafe.Pointer + var salen _Socklen + if to != nil { + ptr, salen, err = to.sockaddr() + if err != nil { + return 0, err + } + } + return sendmsgN(fd, iov, oob, ptr, salen, flags) +} + +func Send(s int, buf []byte, flags int) (err error) { + return sendto(s, buf, flags, nil, 0) +} + +func Sendto(fd int, p []byte, flags int, to Sockaddr) (err error) { + var ptr unsafe.Pointer + var salen _Socklen + if to != nil { + ptr, salen, err = to.sockaddr() + if err != nil { + return err + } + } + return sendto(fd, p, flags, ptr, salen) +} + +func SetsockoptByte(fd, level, opt int, value byte) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(&value), 1) +} + +func SetsockoptInt(fd, level, opt int, value int) (err error) { + var n = int32(value) + return setsockopt(fd, level, opt, unsafe.Pointer(&n), 4) +} + +func SetsockoptInet4Addr(fd, level, opt int, value [4]byte) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(&value[0]), 4) +} + +func SetsockoptIPMreq(fd, level, opt int, mreq *IPMreq) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPMreq) +} + +func SetsockoptIPv6Mreq(fd, level, opt int, mreq *IPv6Mreq) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPv6Mreq) +} + +func SetsockoptICMPv6Filter(fd, level, opt int, filter *ICMPv6Filter) error { + return setsockopt(fd, level, opt, unsafe.Pointer(filter), SizeofICMPv6Filter) +} + +func SetsockoptLinger(fd, level, opt int, l *Linger) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(l), SizeofLinger) +} + +func SetsockoptString(fd, level, opt int, s string) (err error) { + var p unsafe.Pointer + if len(s) > 0 { + p = unsafe.Pointer(&[]byte(s)[0]) + } + return setsockopt(fd, level, opt, p, uintptr(len(s))) +} + +func SetsockoptTimeval(fd, level, opt int, tv *Timeval) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(tv), unsafe.Sizeof(*tv)) +} + +func SetsockoptUint64(fd, level, opt int, value uint64) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(&value), 8) +} + +func Socket(domain, typ, proto int) (fd int, err error) { + if domain == AF_INET6 && SocketDisableIPv6 { + return -1, EAFNOSUPPORT + } + fd, err = socket(domain, typ, proto) + return +} + +func Socketpair(domain, typ, proto int) (fd [2]int, err error) { + var fdx [2]int32 + err = socketpair(domain, typ, proto, &fdx) + if err == nil { + fd[0] = int(fdx[0]) + fd[1] = int(fdx[1]) + } + return +} + +var ioSync int64 + +func CloseOnExec(fd int) { fcntl(fd, F_SETFD, FD_CLOEXEC) } + +func SetNonblock(fd int, nonblocking bool) (err error) { + flag, err := fcntl(fd, F_GETFL, 0) + if err != nil { + return err + } + if (flag&O_NONBLOCK != 0) == nonblocking { + return nil + } + if nonblocking { + flag |= O_NONBLOCK + } else { + flag &= ^O_NONBLOCK + } + _, err = fcntl(fd, F_SETFL, flag) + return err +} + +// Exec calls execve(2), which replaces the calling executable in the process +// tree. argv0 should be the full path to an executable ("/bin/ls") and the +// executable name should also be the first argument in argv (["ls", "-l"]). +// envv are the environment variables that should be passed to the new +// process (["USER=go", "PWD=/tmp"]). +func Exec(argv0 string, argv []string, envv []string) error { + return syscall.Exec(argv0, argv, envv) +} + +// Lutimes sets the access and modification times tv on path. If path refers to +// a symlink, it is not dereferenced and the timestamps are set on the symlink. +// If tv is nil, the access and modification times are set to the current time. +// Otherwise tv must contain exactly 2 elements, with access time as the first +// element and modification time as the second element. +func Lutimes(path string, tv []Timeval) error { + if tv == nil { + return UtimesNanoAt(AT_FDCWD, path, nil, AT_SYMLINK_NOFOLLOW) + } + if len(tv) != 2 { + return EINVAL + } + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return UtimesNanoAt(AT_FDCWD, path, ts, AT_SYMLINK_NOFOLLOW) +} + +// emptyIovecs reports whether there are no bytes in the slice of Iovec. +func emptyIovecs(iov []Iovec) bool { + for i := range iov { + if iov[i].Len > 0 { + return false + } + } + return true +} + +// Setrlimit sets a resource limit. +func Setrlimit(resource int, rlim *Rlimit) error { + // Just call the syscall version, because as of Go 1.21 + // it will affect starting a new process. + return syscall.Setrlimit(resource, (*syscall.Rlimit)(rlim)) +} diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_unix_gc.go b/tests/vendor/golang.org/x/sys/unix/syscall_unix_gc.go new file mode 100644 index 000000000..05c95bccf --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_unix_gc.go @@ -0,0 +1,14 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (darwin || dragonfly || freebsd || (linux && !ppc64 && !ppc64le) || netbsd || openbsd || solaris) && gc + +package unix + +import "syscall" + +func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) +func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) +func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) +func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go b/tests/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go new file mode 100644 index 000000000..23f39b7af --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go @@ -0,0 +1,22 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && (ppc64le || ppc64) && gc + +package unix + +import "syscall" + +func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) { + return syscall.Syscall(trap, a1, a2, a3) +} +func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) { + return syscall.Syscall6(trap, a1, a2, a3, a4, a5, a6) +} +func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) { + return syscall.RawSyscall(trap, a1, a2, a3) +} +func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) { + return syscall.RawSyscall6(trap, a1, a2, a3, a4, a5, a6) +} diff --git a/tests/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go b/tests/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go new file mode 100644 index 000000000..7bf5c04bb --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go @@ -0,0 +1,3213 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos && s390x + +// Many of the following syscalls are not available on all versions of z/OS. +// Some missing calls have legacy implementations/simulations but others +// will be missing completely. To achieve consistent failing behaviour on +// legacy systems, we first test the function pointer via a safeloading +// mechanism to see if the function exists on a given system. Then execution +// is branched to either continue the function call, or return an error. + +package unix + +import ( + "bytes" + "fmt" + "os" + "reflect" + "regexp" + "runtime" + "sort" + "strings" + "sync" + "syscall" + "unsafe" +) + +//go:noescape +func initZosLibVec() + +//go:noescape +func GetZosLibVec() uintptr + +func init() { + initZosLibVec() + r0, _, _ := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS_____GETENV_A<<4, uintptr(unsafe.Pointer(&([]byte("__ZOS_XSYSTRACE\x00"))[0]))) + if r0 != 0 { + n, _, _ := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___ATOI_A<<4, r0) + ZosTraceLevel = int(n) + r0, _, _ := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS_____GETENV_A<<4, uintptr(unsafe.Pointer(&([]byte("__ZOS_XSYSTRACEFD\x00"))[0]))) + if r0 != 0 { + fd, _, _ := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___ATOI_A<<4, r0) + f := os.NewFile(fd, "zostracefile") + if f != nil { + ZosTracefile = f + } + } + + } +} + +//go:noescape +func CallLeFuncWithErr(funcdesc uintptr, parms ...uintptr) (ret, errno2 uintptr, err Errno) + +//go:noescape +func CallLeFuncWithPtrReturn(funcdesc uintptr, parms ...uintptr) (ret, errno2 uintptr, err Errno) + +// ------------------------------- +// pointer validity test +// good pointer returns 0 +// bad pointer returns 1 +// +//go:nosplit +func ptrtest(uintptr) uint64 + +// Load memory at ptr location with error handling if the location is invalid +// +//go:noescape +func safeload(ptr uintptr) (value uintptr, error uintptr) + +const ( + entrypointLocationOffset = 8 // From function descriptor + + xplinkEyecatcher = 0x00c300c500c500f1 // ".C.E.E.1" + eyecatcherOffset = 16 // From function entrypoint (negative) + ppa1LocationOffset = 8 // From function entrypoint (negative) + + nameLenOffset = 0x14 // From PPA1 start + nameOffset = 0x16 // From PPA1 start +) + +func getPpaOffset(funcptr uintptr) int64 { + entrypoint, err := safeload(funcptr + entrypointLocationOffset) + if err != 0 { + return -1 + } + + // XPLink functions have ".C.E.E.1" as the first 8 bytes (EBCDIC) + val, err := safeload(entrypoint - eyecatcherOffset) + if err != 0 { + return -1 + } + if val != xplinkEyecatcher { + return -1 + } + + ppaoff, err := safeload(entrypoint - ppa1LocationOffset) + if err != 0 { + return -1 + } + + ppaoff >>= 32 + return int64(ppaoff) +} + +//------------------------------- +// function descriptor pointer validity test +// good pointer returns 0 +// bad pointer returns 1 + +// TODO: currently mksyscall_zos_s390x.go generate empty string for funcName +// have correct funcName pass to the funcptrtest function +func funcptrtest(funcptr uintptr, funcName string) uint64 { + entrypoint, err := safeload(funcptr + entrypointLocationOffset) + if err != 0 { + return 1 + } + + ppaoff := getPpaOffset(funcptr) + if ppaoff == -1 { + return 1 + } + + // PPA1 offset value is from the start of the entire function block, not the entrypoint + ppa1 := (entrypoint - eyecatcherOffset) + uintptr(ppaoff) + + nameLen, err := safeload(ppa1 + nameLenOffset) + if err != 0 { + return 1 + } + + nameLen >>= 48 + if nameLen > 128 { + return 1 + } + + // no function name input to argument end here + if funcName == "" { + return 0 + } + + var funcname [128]byte + for i := 0; i < int(nameLen); i += 8 { + v, err := safeload(ppa1 + nameOffset + uintptr(i)) + if err != 0 { + return 1 + } + funcname[i] = byte(v >> 56) + funcname[i+1] = byte(v >> 48) + funcname[i+2] = byte(v >> 40) + funcname[i+3] = byte(v >> 32) + funcname[i+4] = byte(v >> 24) + funcname[i+5] = byte(v >> 16) + funcname[i+6] = byte(v >> 8) + funcname[i+7] = byte(v) + } + + runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___E2A_L<<4, // __e2a_l + []uintptr{uintptr(unsafe.Pointer(&funcname[0])), nameLen}) + + name := string(funcname[:nameLen]) + if name != funcName { + return 1 + } + + return 0 +} + +// For detection of capabilities on a system. +// Is function descriptor f a valid function? +func isValidLeFunc(f uintptr) error { + ret := funcptrtest(f, "") + if ret != 0 { + return fmt.Errorf("Bad pointer, not an LE function ") + } + return nil +} + +// Retrieve function name from descriptor +func getLeFuncName(f uintptr) (string, error) { + // assume it has been checked, only check ppa1 validity here + entry := ((*[2]uintptr)(unsafe.Pointer(f)))[1] + preamp := ((*[4]uint32)(unsafe.Pointer(entry - eyecatcherOffset))) + + offsetPpa1 := preamp[2] + if offsetPpa1 > 0x0ffff { + return "", fmt.Errorf("PPA1 offset seems too big 0x%x\n", offsetPpa1) + } + + ppa1 := uintptr(unsafe.Pointer(preamp)) + uintptr(offsetPpa1) + res := ptrtest(ppa1) + if res != 0 { + return "", fmt.Errorf("PPA1 address not valid") + } + + size := *(*uint16)(unsafe.Pointer(ppa1 + nameLenOffset)) + if size > 128 { + return "", fmt.Errorf("Function name seems too long, length=%d\n", size) + } + + var name [128]byte + funcname := (*[128]byte)(unsafe.Pointer(ppa1 + nameOffset)) + copy(name[0:size], funcname[0:size]) + + runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___E2A_L<<4, // __e2a_l + []uintptr{uintptr(unsafe.Pointer(&name[0])), uintptr(size)}) + + return string(name[:size]), nil +} + +// Check z/OS version +func zosLeVersion() (version, release uint32) { + p1 := (*(*uintptr)(unsafe.Pointer(uintptr(1208)))) >> 32 + p1 = *(*uintptr)(unsafe.Pointer(uintptr(p1 + 88))) + p1 = *(*uintptr)(unsafe.Pointer(uintptr(p1 + 8))) + p1 = *(*uintptr)(unsafe.Pointer(uintptr(p1 + 984))) + vrm := *(*uint32)(unsafe.Pointer(p1 + 80)) + version = (vrm & 0x00ff0000) >> 16 + release = (vrm & 0x0000ff00) >> 8 + return +} + +// returns a zos C FILE * for stdio fd 0, 1, 2 +func ZosStdioFilep(fd int32) uintptr { + return uintptr(*(*uint64)(unsafe.Pointer(uintptr(*(*uint64)(unsafe.Pointer(uintptr(*(*uint64)(unsafe.Pointer(uintptr(uint64(*(*uint32)(unsafe.Pointer(uintptr(1208)))) + 80))) + uint64((fd+2)<<3)))))))) +} + +func copyStat(stat *Stat_t, statLE *Stat_LE_t) { + stat.Dev = uint64(statLE.Dev) + stat.Ino = uint64(statLE.Ino) + stat.Nlink = uint64(statLE.Nlink) + stat.Mode = uint32(statLE.Mode) + stat.Uid = uint32(statLE.Uid) + stat.Gid = uint32(statLE.Gid) + stat.Rdev = uint64(statLE.Rdev) + stat.Size = statLE.Size + stat.Atim.Sec = int64(statLE.Atim) + stat.Atim.Nsec = 0 //zos doesn't return nanoseconds + stat.Mtim.Sec = int64(statLE.Mtim) + stat.Mtim.Nsec = 0 //zos doesn't return nanoseconds + stat.Ctim.Sec = int64(statLE.Ctim) + stat.Ctim.Nsec = 0 //zos doesn't return nanoseconds + stat.Blksize = int64(statLE.Blksize) + stat.Blocks = statLE.Blocks +} + +func svcCall(fnptr unsafe.Pointer, argv *unsafe.Pointer, dsa *uint64) +func svcLoad(name *byte) unsafe.Pointer +func svcUnload(name *byte, fnptr unsafe.Pointer) int64 + +func (d *Dirent) NameString() string { + if d == nil { + return "" + } + s := string(d.Name[:]) + idx := strings.IndexByte(s, 0) + if idx == -1 { + return s + } else { + return s[:idx] + } +} + +func DecodeData(dest []byte, sz int, val uint64) { + for i := 0; i < sz; i++ { + dest[sz-1-i] = byte((val >> (uint64(i * 8))) & 0xff) + } +} + +func EncodeData(data []byte) uint64 { + var value uint64 + sz := len(data) + for i := 0; i < sz; i++ { + value |= uint64(data[i]) << uint64(((sz - i - 1) * 8)) + } + return value +} + +func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Len = SizeofSockaddrInet4 + sa.raw.Family = AF_INET + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil +} + +func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Len = SizeofSockaddrInet6 + sa.raw.Family = AF_INET6 + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Scope_id = sa.ZoneId + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil +} + +func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) { + name := sa.Name + n := len(name) + if n >= len(sa.raw.Path) || n == 0 { + return nil, 0, EINVAL + } + sa.raw.Len = byte(3 + n) // 2 for Family, Len; 1 for NUL + sa.raw.Family = AF_UNIX + for i := 0; i < n; i++ { + sa.raw.Path[i] = int8(name[i]) + } + return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil +} + +func anyToSockaddr(_ int, rsa *RawSockaddrAny) (Sockaddr, error) { + // TODO(neeilan): Implement use of first param (fd) + switch rsa.Addr.Family { + case AF_UNIX: + pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa)) + sa := new(SockaddrUnix) + // For z/OS, only replace NUL with @ when the + // length is not zero. + if pp.Len != 0 && pp.Path[0] == 0 { + // "Abstract" Unix domain socket. + // Rewrite leading NUL as @ for textual display. + // (This is the standard convention.) + // Not friendly to overwrite in place, + // but the callers below don't care. + pp.Path[0] = '@' + } + + // Assume path ends at NUL. + // + // For z/OS, the length of the name is a field + // in the structure. To be on the safe side, we + // will still scan the name for a NUL but only + // to the length provided in the structure. + // + // This is not technically the Linux semantics for + // abstract Unix domain sockets--they are supposed + // to be uninterpreted fixed-size binary blobs--but + // everyone uses this convention. + n := 0 + for n < int(pp.Len) && pp.Path[n] != 0 { + n++ + } + sa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n)) + return sa, nil + + case AF_INET: + pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet4) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + + case AF_INET6: + pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet6) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.ZoneId = pp.Scope_id + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + } + return nil, EAFNOSUPPORT +} + +func Accept(fd int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept(fd, &rsa, &len) + if err != nil { + return + } + // TODO(neeilan): Remove 0 in call + sa, err = anyToSockaddr(0, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +func Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept4(fd, &rsa, &len, flags) + if err != nil { + return + } + if len > SizeofSockaddrAny { + panic("RawSockaddrAny too small") + } + // TODO(neeilan): Remove 0 in call + sa, err = anyToSockaddr(0, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +func Ctermid() (tty string, err error) { + var termdev [1025]byte + runtime.EnterSyscall() + r0, err2, err1 := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___CTERMID_A<<4, uintptr(unsafe.Pointer(&termdev[0]))) + runtime.ExitSyscall() + if r0 == 0 { + return "", fmt.Errorf("%s (errno2=0x%x)\n", err1.Error(), err2) + } + s := string(termdev[:]) + idx := strings.Index(s, string(rune(0))) + if idx == -1 { + tty = s + } else { + tty = s[:idx] + } + return +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = int32(length) +} + +//sys fcntl(fd int, cmd int, arg int) (val int, err error) +//sys Flistxattr(fd int, dest []byte) (sz int, err error) = SYS___FLISTXATTR_A +//sys Fremovexattr(fd int, attr string) (err error) = SYS___FREMOVEXATTR_A +//sys read(fd int, p []byte) (n int, err error) +//sys write(fd int, p []byte) (n int, err error) + +//sys Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) = SYS___FGETXATTR_A +//sys Fsetxattr(fd int, attr string, data []byte, flag int) (err error) = SYS___FSETXATTR_A + +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) = SYS___ACCEPT_A +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) = SYS___ACCEPT4_A +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = SYS___BIND_A +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = SYS___CONNECT_A +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = SYS___GETPEERNAME_A +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = SYS___GETSOCKNAME_A +//sys Removexattr(path string, attr string) (err error) = SYS___REMOVEXATTR_A +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) = SYS___RECVFROM_A +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) = SYS___SENDTO_A +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) = SYS___RECVMSG_A +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) = SYS___SENDMSG_A +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) = SYS_MMAP +//sys munmap(addr uintptr, length uintptr) (err error) = SYS_MUNMAP +//sys ioctl(fd int, req int, arg uintptr) (err error) = SYS_IOCTL +//sys ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) = SYS_IOCTL +//sys shmat(id int, addr uintptr, flag int) (ret uintptr, err error) = SYS_SHMAT +//sys shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) = SYS_SHMCTL64 +//sys shmdt(addr uintptr) (err error) = SYS_SHMDT +//sys shmget(key int, size int, flag int) (id int, err error) = SYS_SHMGET + +//sys Access(path string, mode uint32) (err error) = SYS___ACCESS_A +//sys Chdir(path string) (err error) = SYS___CHDIR_A +//sys Chown(path string, uid int, gid int) (err error) = SYS___CHOWN_A +//sys Chmod(path string, mode uint32) (err error) = SYS___CHMOD_A +//sys Creat(path string, mode uint32) (fd int, err error) = SYS___CREAT_A +//sys Dup(oldfd int) (fd int, err error) +//sys Dup2(oldfd int, newfd int) (err error) +//sys Dup3(oldfd int, newfd int, flags int) (err error) = SYS_DUP3 +//sys Dirfd(dirp uintptr) (fd int, err error) = SYS_DIRFD +//sys EpollCreate(size int) (fd int, err error) = SYS_EPOLL_CREATE +//sys EpollCreate1(flags int) (fd int, err error) = SYS_EPOLL_CREATE1 +//sys EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) = SYS_EPOLL_CTL +//sys EpollPwait(epfd int, events []EpollEvent, msec int, sigmask *int) (n int, err error) = SYS_EPOLL_PWAIT +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_WAIT +//sys Errno2() (er2 int) = SYS___ERRNO2 +//sys Eventfd(initval uint, flags int) (fd int, err error) = SYS_EVENTFD +//sys Exit(code int) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) = SYS___FACCESSAT_A + +func Faccessat2(dirfd int, path string, mode uint32, flags int) (err error) { + return Faccessat(dirfd, path, mode, flags) +} + +//sys Fchdir(fd int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) = SYS___FCHMODAT_A +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(fd int, path string, uid int, gid int, flags int) (err error) = SYS___FCHOWNAT_A +//sys FcntlInt(fd uintptr, cmd int, arg int) (retval int, err error) = SYS_FCNTL +//sys Fdatasync(fd int) (err error) = SYS_FDATASYNC +//sys fstat(fd int, stat *Stat_LE_t) (err error) +//sys fstatat(dirfd int, path string, stat *Stat_LE_t, flags int) (err error) = SYS___FSTATAT_A + +func Fstat(fd int, stat *Stat_t) (err error) { + var statLE Stat_LE_t + err = fstat(fd, &statLE) + copyStat(stat, &statLE) + return +} + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var statLE Stat_LE_t + err = fstatat(dirfd, path, &statLE, flags) + copyStat(stat, &statLE) + return +} + +func impl_Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___GETXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest))) + sz = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_GetxattrAddr() *(func(path string, attr string, dest []byte) (sz int, err error)) + +var Getxattr = enter_Getxattr + +func enter_Getxattr(path string, attr string, dest []byte) (sz int, err error) { + funcref := get_GetxattrAddr() + if validGetxattr() { + *funcref = impl_Getxattr + } else { + *funcref = error_Getxattr + } + return (*funcref)(path, attr, dest) +} + +func error_Getxattr(path string, attr string, dest []byte) (sz int, err error) { + return -1, ENOSYS +} + +func validGetxattr() bool { + if funcptrtest(GetZosLibVec()+SYS___GETXATTR_A<<4, "") == 0 { + if name, err := getLeFuncName(GetZosLibVec() + SYS___GETXATTR_A<<4); err == nil { + return name == "__getxattr_a" + } + } + return false +} + +//sys Lgetxattr(link string, attr string, dest []byte) (sz int, err error) = SYS___LGETXATTR_A +//sys Lsetxattr(path string, attr string, data []byte, flags int) (err error) = SYS___LSETXATTR_A + +func impl_Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SETXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags)) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_SetxattrAddr() *(func(path string, attr string, data []byte, flags int) (err error)) + +var Setxattr = enter_Setxattr + +func enter_Setxattr(path string, attr string, data []byte, flags int) (err error) { + funcref := get_SetxattrAddr() + if validSetxattr() { + *funcref = impl_Setxattr + } else { + *funcref = error_Setxattr + } + return (*funcref)(path, attr, data, flags) +} + +func error_Setxattr(path string, attr string, data []byte, flags int) (err error) { + return ENOSYS +} + +func validSetxattr() bool { + if funcptrtest(GetZosLibVec()+SYS___SETXATTR_A<<4, "") == 0 { + if name, err := getLeFuncName(GetZosLibVec() + SYS___SETXATTR_A<<4); err == nil { + return name == "__setxattr_a" + } + } + return false +} + +//sys Fstatfs(fd int, buf *Statfs_t) (err error) = SYS_FSTATFS +//sys Fstatvfs(fd int, stat *Statvfs_t) (err error) = SYS_FSTATVFS +//sys Fsync(fd int) (err error) +//sys Futimes(fd int, tv []Timeval) (err error) = SYS_FUTIMES +//sys Futimesat(dirfd int, path string, tv []Timeval) (err error) = SYS___FUTIMESAT_A +//sys Ftruncate(fd int, length int64) (err error) +//sys Getrandom(buf []byte, flags int) (n int, err error) = SYS_GETRANDOM +//sys InotifyInit() (fd int, err error) = SYS_INOTIFY_INIT +//sys InotifyInit1(flags int) (fd int, err error) = SYS_INOTIFY_INIT1 +//sys InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) = SYS___INOTIFY_ADD_WATCH_A +//sys InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) = SYS_INOTIFY_RM_WATCH +//sys Listxattr(path string, dest []byte) (sz int, err error) = SYS___LISTXATTR_A +//sys Llistxattr(path string, dest []byte) (sz int, err error) = SYS___LLISTXATTR_A +//sys Lremovexattr(path string, attr string) (err error) = SYS___LREMOVEXATTR_A +//sys Lutimes(path string, tv []Timeval) (err error) = SYS___LUTIMES_A +//sys Mprotect(b []byte, prot int) (err error) = SYS_MPROTECT +//sys Msync(b []byte, flags int) (err error) = SYS_MSYNC +//sys Console2(cmsg *ConsMsg2, modstr *byte, concmd *uint32) (err error) = SYS___CONSOLE2 + +// Pipe2 begin + +//go:nosplit +func getPipe2Addr() *(func([]int, int) error) + +var Pipe2 = pipe2Enter + +func pipe2Enter(p []int, flags int) (err error) { + if funcptrtest(GetZosLibVec()+SYS_PIPE2<<4, "") == 0 { + *getPipe2Addr() = pipe2Impl + } else { + *getPipe2Addr() = pipe2Error + } + return (*getPipe2Addr())(p, flags) +} + +func pipe2Impl(p []int, flags int) (err error) { + var pp [2]_C_int + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_PIPE2<<4, uintptr(unsafe.Pointer(&pp[0])), uintptr(flags)) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } else { + p[0] = int(pp[0]) + p[1] = int(pp[1]) + } + return +} +func pipe2Error(p []int, flags int) (err error) { + return fmt.Errorf("Pipe2 is not available on this system") +} + +// Pipe2 end + +//sys Poll(fds []PollFd, timeout int) (n int, err error) = SYS_POLL + +func Readdir(dir uintptr) (dirent *Dirent, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___READDIR_A<<4, uintptr(dir)) + runtime.ExitSyscall() + dirent = (*Dirent)(unsafe.Pointer(r0)) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//sys Readdir_r(dirp uintptr, entry *direntLE, result **direntLE) (err error) = SYS___READDIR_R_A +//sys Statfs(path string, buf *Statfs_t) (err error) = SYS___STATFS_A +//sys Syncfs(fd int) (err error) = SYS_SYNCFS +//sys Times(tms *Tms) (ticks uintptr, err error) = SYS_TIMES +//sys W_Getmntent(buff *byte, size int) (lastsys int, err error) = SYS_W_GETMNTENT +//sys W_Getmntent_A(buff *byte, size int) (lastsys int, err error) = SYS___W_GETMNTENT_A + +//sys mount_LE(path string, filesystem string, fstype string, mtm uint32, parmlen int32, parm string) (err error) = SYS___MOUNT_A +//sys unmount_LE(filesystem string, mtm int) (err error) = SYS___UMOUNT_A +//sys Chroot(path string) (err error) = SYS___CHROOT_A +//sys Select(nmsgsfds int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (ret int, err error) = SYS_SELECT +//sysnb Uname(buf *Utsname) (err error) = SYS_____OSNAME_A +//sys Unshare(flags int) (err error) = SYS_UNSHARE + +func Ptsname(fd int) (name string, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___PTSNAME_A<<4, uintptr(fd)) + runtime.ExitSyscall() + if r0 == 0 { + err = errnoErr2(e1, e2) + } else { + name = u2s(unsafe.Pointer(r0)) + } + return +} + +func u2s(cstr unsafe.Pointer) string { + str := (*[1024]uint8)(cstr) + i := 0 + for str[i] != 0 { + i++ + } + return string(str[:i]) +} + +func Close(fd int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_CLOSE<<4, uintptr(fd)) + runtime.ExitSyscall() + for i := 0; e1 == EAGAIN && i < 10; i++ { + runtime.EnterSyscall() + CallLeFuncWithErr(GetZosLibVec()+SYS_USLEEP<<4, uintptr(10)) + runtime.ExitSyscall() + runtime.EnterSyscall() + r0, e2, e1 = CallLeFuncWithErr(GetZosLibVec()+SYS_CLOSE<<4, uintptr(fd)) + runtime.ExitSyscall() + } + if r0 != 0 { + err = errnoErr2(e1, e2) + } + return +} + +// Dummy function: there are no semantics for Madvise on z/OS +func Madvise(b []byte, advice int) (err error) { + return +} + +func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { + return mapper.Mmap(fd, offset, length, prot, flags) +} + +func Munmap(b []byte) (err error) { + return mapper.Munmap(b) +} + +func MmapPtr(fd int, offset int64, addr unsafe.Pointer, length uintptr, prot int, flags int) (ret unsafe.Pointer, err error) { + xaddr, err := mapper.mmap(uintptr(addr), length, prot, flags, fd, offset) + return unsafe.Pointer(xaddr), err +} + +func MunmapPtr(addr unsafe.Pointer, length uintptr) (err error) { + return mapper.munmap(uintptr(addr), length) +} + +//sys Gethostname(buf []byte) (err error) = SYS___GETHOSTNAME_A +//sysnb Getgid() (gid int) +//sysnb Getpid() (pid int) +//sysnb Getpgid(pid int) (pgid int, err error) = SYS_GETPGID + +func Getpgrp() (pid int) { + pid, _ = Getpgid(0) + return +} + +//sysnb Getppid() (pid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) = SYS_GETRLIMIT + +//sysnb getrusage(who int, rusage *rusage_zos) (err error) = SYS_GETRUSAGE + +func Getrusage(who int, rusage *Rusage) (err error) { + var ruz rusage_zos + err = getrusage(who, &ruz) + //Only the first two fields of Rusage are set + rusage.Utime.Sec = ruz.Utime.Sec + rusage.Utime.Usec = int64(ruz.Utime.Usec) + rusage.Stime.Sec = ruz.Stime.Sec + rusage.Stime.Usec = int64(ruz.Stime.Usec) + return +} + +//sys Getegid() (egid int) = SYS_GETEGID +//sys Geteuid() (euid int) = SYS_GETEUID +//sysnb Getsid(pid int) (sid int, err error) = SYS_GETSID +//sysnb Getuid() (uid int) +//sysnb Kill(pid int, sig Signal) (err error) +//sys Lchown(path string, uid int, gid int) (err error) = SYS___LCHOWN_A +//sys Link(path string, link string) (err error) = SYS___LINK_A +//sys Linkat(oldDirFd int, oldPath string, newDirFd int, newPath string, flags int) (err error) = SYS___LINKAT_A +//sys Listen(s int, n int) (err error) +//sys lstat(path string, stat *Stat_LE_t) (err error) = SYS___LSTAT_A + +func Lstat(path string, stat *Stat_t) (err error) { + var statLE Stat_LE_t + err = lstat(path, &statLE) + copyStat(stat, &statLE) + return +} + +// for checking symlinks begins with $VERSION/ $SYSNAME/ $SYSSYMR/ $SYSSYMA/ +func isSpecialPath(path []byte) (v bool) { + var special = [4][8]byte{ + {'V', 'E', 'R', 'S', 'I', 'O', 'N', '/'}, + {'S', 'Y', 'S', 'N', 'A', 'M', 'E', '/'}, + {'S', 'Y', 'S', 'S', 'Y', 'M', 'R', '/'}, + {'S', 'Y', 'S', 'S', 'Y', 'M', 'A', '/'}} + + var i, j int + for i = 0; i < len(special); i++ { + for j = 0; j < len(special[i]); j++ { + if path[j] != special[i][j] { + break + } + } + if j == len(special[i]) { + return true + } + } + return false +} + +func realpath(srcpath string, abspath []byte) (pathlen int, errno int) { + var source [1024]byte + copy(source[:], srcpath) + source[len(srcpath)] = 0 + ret := runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___REALPATH_A<<4, //__realpath_a() + []uintptr{uintptr(unsafe.Pointer(&source[0])), + uintptr(unsafe.Pointer(&abspath[0]))}) + if ret != 0 { + index := bytes.IndexByte(abspath[:], byte(0)) + if index != -1 { + return index, 0 + } + } else { + errptr := (*int)(unsafe.Pointer(runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___ERRNO<<4, []uintptr{}))) //__errno() + return 0, *errptr + } + return 0, 245 // EBADDATA 245 +} + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + n = int(runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___READLINK_A<<4, + []uintptr{uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))})) + runtime.KeepAlive(unsafe.Pointer(_p0)) + if n == -1 { + value := *(*int32)(unsafe.Pointer(runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___ERRNO<<4, []uintptr{}))) + err = errnoErr(Errno(value)) + } else { + if buf[0] == '$' { + if isSpecialPath(buf[1:9]) { + cnt, err1 := realpath(path, buf) + if err1 == 0 { + n = cnt + } + } + } + } + return +} + +func impl_Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___READLINKAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + runtime.ExitSyscall() + n = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + return n, err + } else { + if buf[0] == '$' { + if isSpecialPath(buf[1:9]) { + cnt, err1 := realpath(path, buf) + if err1 == 0 { + n = cnt + } + } + } + } + return +} + +//go:nosplit +func get_ReadlinkatAddr() *(func(dirfd int, path string, buf []byte) (n int, err error)) + +var Readlinkat = enter_Readlinkat + +func enter_Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + funcref := get_ReadlinkatAddr() + if funcptrtest(GetZosLibVec()+SYS___READLINKAT_A<<4, "") == 0 { + *funcref = impl_Readlinkat + } else { + *funcref = error_Readlinkat + } + return (*funcref)(dirfd, path, buf) +} + +func error_Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + n = -1 + err = ENOSYS + return +} + +//sys Mkdir(path string, mode uint32) (err error) = SYS___MKDIR_A +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) = SYS___MKDIRAT_A +//sys Mkfifo(path string, mode uint32) (err error) = SYS___MKFIFO_A +//sys Mknod(path string, mode uint32, dev int) (err error) = SYS___MKNOD_A +//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) = SYS___MKNODAT_A +//sys PivotRoot(newroot string, oldroot string) (err error) = SYS___PIVOT_ROOT_A +//sys Pread(fd int, p []byte, offset int64) (n int, err error) +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) +//sys Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) = SYS___PRCTL_A +//sysnb Prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) = SYS_PRLIMIT +//sys Rename(from string, to string) (err error) = SYS___RENAME_A +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) = SYS___RENAMEAT_A +//sys Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) = SYS___RENAMEAT2_A +//sys Rmdir(path string) (err error) = SYS___RMDIR_A +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK +//sys Setegid(egid int) (err error) = SYS_SETEGID +//sys Seteuid(euid int) (err error) = SYS_SETEUID +//sys Sethostname(p []byte) (err error) = SYS___SETHOSTNAME_A +//sys Setns(fd int, nstype int) (err error) = SYS_SETNS +//sys Setpriority(which int, who int, prio int) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) = SYS_SETPGID +//sysnb Setrlimit(resource int, lim *Rlimit) (err error) +//sysnb Setregid(rgid int, egid int) (err error) = SYS_SETREGID +//sysnb Setreuid(ruid int, euid int) (err error) = SYS_SETREUID +//sysnb Setsid() (pid int, err error) = SYS_SETSID +//sys Setuid(uid int) (err error) = SYS_SETUID +//sys Setgid(uid int) (err error) = SYS_SETGID +//sys Shutdown(fd int, how int) (err error) +//sys stat(path string, statLE *Stat_LE_t) (err error) = SYS___STAT_A + +func Stat(path string, sta *Stat_t) (err error) { + var statLE Stat_LE_t + err = stat(path, &statLE) + copyStat(sta, &statLE) + return +} + +//sys Symlink(path string, link string) (err error) = SYS___SYMLINK_A +//sys Symlinkat(oldPath string, dirfd int, newPath string) (err error) = SYS___SYMLINKAT_A +//sys Sync() = SYS_SYNC +//sys Truncate(path string, length int64) (err error) = SYS___TRUNCATE_A +//sys Tcgetattr(fildes int, termptr *Termios) (err error) = SYS_TCGETATTR +//sys Tcsetattr(fildes int, when int, termptr *Termios) (err error) = SYS_TCSETATTR +//sys Umask(mask int) (oldmask int) +//sys Unlink(path string) (err error) = SYS___UNLINK_A +//sys Unlinkat(dirfd int, path string, flags int) (err error) = SYS___UNLINKAT_A +//sys Utime(path string, utim *Utimbuf) (err error) = SYS___UTIME_A + +//sys open(path string, mode int, perm uint32) (fd int, err error) = SYS___OPEN_A + +func Open(path string, mode int, perm uint32) (fd int, err error) { + if mode&O_ACCMODE == 0 { + mode |= O_RDONLY + } + return open(path, mode, perm) +} + +//sys openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) = SYS___OPENAT_A + +func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + if flags&O_ACCMODE == 0 { + flags |= O_RDONLY + } + return openat(dirfd, path, flags, mode) +} + +//sys openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) = SYS___OPENAT2_A + +func Openat2(dirfd int, path string, how *OpenHow) (fd int, err error) { + if how.Flags&O_ACCMODE == 0 { + how.Flags |= O_RDONLY + } + return openat2(dirfd, path, how, SizeofOpenHow) +} + +func ZosFdToPath(dirfd int) (path string, err error) { + var buffer [1024]byte + runtime.EnterSyscall() + ret, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_W_IOCTL<<4, uintptr(dirfd), 17, 1024, uintptr(unsafe.Pointer(&buffer[0]))) + runtime.ExitSyscall() + if ret == 0 { + zb := bytes.IndexByte(buffer[:], 0) + if zb == -1 { + zb = len(buffer) + } + CallLeFuncWithErr(GetZosLibVec()+SYS___E2A_L<<4, uintptr(unsafe.Pointer(&buffer[0])), uintptr(zb)) + return string(buffer[:zb]), nil + } + return "", errnoErr2(e1, e2) +} + +//sys remove(path string) (err error) + +func Remove(path string) error { + return remove(path) +} + +const ImplementsGetwd = true + +func Getcwd(buf []byte) (n int, err error) { + var p unsafe.Pointer + if len(buf) > 0 { + p = unsafe.Pointer(&buf[0]) + } else { + p = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___GETCWD_A<<4, uintptr(p), uintptr(len(buf))) + runtime.ExitSyscall() + n = clen(buf) + 1 + if r0 == 0 { + err = errnoErr2(e1, e2) + } + return +} + +func Getwd() (wd string, err error) { + var buf [PathMax]byte + n, err := Getcwd(buf[0:]) + if err != nil { + return "", err + } + // Getcwd returns the number of bytes written to buf, including the NUL. + if n < 1 || n > len(buf) || buf[n-1] != 0 { + return "", EINVAL + } + return string(buf[0 : n-1]), nil +} + +func Getgroups() (gids []int, err error) { + n, err := getgroups(0, nil) + if err != nil { + return nil, err + } + if n == 0 { + return nil, nil + } + + // Sanity check group count. Max is 1<<16 on Linux. + if n < 0 || n > 1<<20 { + return nil, EINVAL + } + + a := make([]_Gid_t, n) + n, err = getgroups(n, &a[0]) + if err != nil { + return nil, err + } + gids = make([]int, n) + for i, v := range a[0:n] { + gids[i] = int(v) + } + return +} + +func Setgroups(gids []int) (err error) { + if len(gids) == 0 { + return setgroups(0, nil) + } + + a := make([]_Gid_t, len(gids)) + for i, v := range gids { + a[i] = _Gid_t(v) + } + return setgroups(len(a), &a[0]) +} + +func gettid() uint64 + +func Gettid() (tid int) { + return int(gettid()) +} + +type WaitStatus uint32 + +// Wait status is 7 bits at bottom, either 0 (exited), +// 0x7F (stopped), or a signal number that caused an exit. +// The 0x80 bit is whether there was a core dump. +// An extra number (exit code, signal causing a stop) +// is in the high bits. At least that's the idea. +// There are various irregularities. For example, the +// "continued" status is 0xFFFF, distinguishing itself +// from stopped via the core dump bit. + +const ( + mask = 0x7F + core = 0x80 + exited = 0x00 + stopped = 0x7F + shift = 8 +) + +func (w WaitStatus) Exited() bool { return w&mask == exited } + +func (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != exited } + +func (w WaitStatus) Stopped() bool { return w&0xFF == stopped } + +func (w WaitStatus) Continued() bool { return w == 0xFFFF } + +func (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 } + +func (w WaitStatus) ExitStatus() int { + if !w.Exited() { + return -1 + } + return int(w>>shift) & 0xFF +} + +func (w WaitStatus) Signal() Signal { + if !w.Signaled() { + return -1 + } + return Signal(w & mask) +} + +func (w WaitStatus) StopSignal() Signal { + if !w.Stopped() { + return -1 + } + return Signal(w>>shift) & 0xFF +} + +func (w WaitStatus) TrapCause() int { return -1 } + +//sys waitid(idType int, id int, info *Siginfo, options int) (err error) + +func Waitid(idType int, id int, info *Siginfo, options int, rusage *Rusage) (err error) { + return waitid(idType, id, info, options) +} + +//sys waitpid(pid int, wstatus *_C_int, options int) (wpid int, err error) + +func impl_Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_WAIT4<<4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage))) + runtime.ExitSyscall() + wpid = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_Wait4Addr() *(func(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error)) + +var Wait4 = enter_Wait4 + +func enter_Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) { + funcref := get_Wait4Addr() + if funcptrtest(GetZosLibVec()+SYS_WAIT4<<4, "") == 0 { + *funcref = impl_Wait4 + } else { + *funcref = legacyWait4 + } + return (*funcref)(pid, wstatus, options, rusage) +} + +func legacyWait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) { + // TODO(mundaym): z/OS doesn't have wait4. I don't think getrusage does what we want. + // At the moment rusage will not be touched. + var status _C_int + wpid, err = waitpid(pid, &status, options) + if wstatus != nil { + *wstatus = WaitStatus(status) + } + return +} + +//sysnb gettimeofday(tv *timeval_zos) (err error) + +func Gettimeofday(tv *Timeval) (err error) { + var tvz timeval_zos + err = gettimeofday(&tvz) + tv.Sec = tvz.Sec + tv.Usec = int64(tvz.Usec) + return +} + +func Time(t *Time_t) (tt Time_t, err error) { + var tv Timeval + err = Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { //fix + return Timeval{Sec: sec, Usec: usec} +} + +//sysnb pipe(p *[2]_C_int) (err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe(&pp) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sys utimes(path string, timeval *[2]Timeval) (err error) = SYS___UTIMES_A + +func Utimes(path string, tv []Timeval) (err error) { + if tv == nil { + return utimes(path, nil) + } + if len(tv) != 2 { + return EINVAL + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +//sys utimensat(dirfd int, path string, ts *[2]Timespec, flags int) (err error) = SYS___UTIMENSAT_A + +func validUtimensat() bool { + if funcptrtest(GetZosLibVec()+SYS___UTIMENSAT_A<<4, "") == 0 { + if name, err := getLeFuncName(GetZosLibVec() + SYS___UTIMENSAT_A<<4); err == nil { + return name == "__utimensat_a" + } + } + return false +} + +// Begin UtimesNano + +//go:nosplit +func get_UtimesNanoAddr() *(func(path string, ts []Timespec) (err error)) + +var UtimesNano = enter_UtimesNano + +func enter_UtimesNano(path string, ts []Timespec) (err error) { + funcref := get_UtimesNanoAddr() + if validUtimensat() { + *funcref = utimesNanoImpl + } else { + *funcref = legacyUtimesNano + } + return (*funcref)(path, ts) +} + +func utimesNanoImpl(path string, ts []Timespec) (err error) { + if ts == nil { + return utimensat(AT_FDCWD, path, nil, 0) + } + if len(ts) != 2 { + return EINVAL + } + return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func legacyUtimesNano(path string, ts []Timespec) (err error) { + if len(ts) != 2 { + return EINVAL + } + // Not as efficient as it could be because Timespec and + // Timeval have different types in the different OSes + tv := [2]Timeval{ + NsecToTimeval(TimespecToNsec(ts[0])), + NsecToTimeval(TimespecToNsec(ts[1])), + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +// End UtimesNano + +// Begin UtimesNanoAt + +//go:nosplit +func get_UtimesNanoAtAddr() *(func(dirfd int, path string, ts []Timespec, flags int) (err error)) + +var UtimesNanoAt = enter_UtimesNanoAt + +func enter_UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) (err error) { + funcref := get_UtimesNanoAtAddr() + if validUtimensat() { + *funcref = utimesNanoAtImpl + } else { + *funcref = legacyUtimesNanoAt + } + return (*funcref)(dirfd, path, ts, flags) +} + +func utimesNanoAtImpl(dirfd int, path string, ts []Timespec, flags int) (err error) { + if ts == nil { + return utimensat(dirfd, path, nil, flags) + } + if len(ts) != 2 { + return EINVAL + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags) +} + +func legacyUtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) (err error) { + if path[0] != '/' { + dirPath, err := ZosFdToPath(dirfd) + if err != nil { + return err + } + path = dirPath + "/" + path + } + if flags == AT_SYMLINK_NOFOLLOW { + if len(ts) != 2 { + return EINVAL + } + + if ts[0].Nsec >= 5e8 { + ts[0].Sec++ + } + ts[0].Nsec = 0 + if ts[1].Nsec >= 5e8 { + ts[1].Sec++ + } + ts[1].Nsec = 0 + + // Not as efficient as it could be because Timespec and + // Timeval have different types in the different OSes + tv := []Timeval{ + NsecToTimeval(TimespecToNsec(ts[0])), + NsecToTimeval(TimespecToNsec(ts[1])), + } + return Lutimes(path, tv) + } + return UtimesNano(path, ts) +} + +// End UtimesNanoAt + +func Getsockname(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getsockname(fd, &rsa, &len); err != nil { + return + } + // TODO(neeilan) : Remove this 0 ( added to get sys/unix compiling on z/OS ) + return anyToSockaddr(0, &rsa) +} + +const ( + // identifier constants + nwmHeaderIdentifier = 0xd5e6d4c8 + nwmFilterIdentifier = 0xd5e6d4c6 + nwmTCPConnIdentifier = 0xd5e6d4c3 + nwmRecHeaderIdentifier = 0xd5e6d4d9 + nwmIPStatsIdentifier = 0xd5e6d4c9d7e2e340 + nwmIPGStatsIdentifier = 0xd5e6d4c9d7c7e2e3 + nwmTCPStatsIdentifier = 0xd5e6d4e3c3d7e2e3 + nwmUDPStatsIdentifier = 0xd5e6d4e4c4d7e2e3 + nwmICMPGStatsEntry = 0xd5e6d4c9c3d4d7c7 + nwmICMPTStatsEntry = 0xd5e6d4c9c3d4d7e3 + + // nwmHeader constants + nwmVersion1 = 1 + nwmVersion2 = 2 + nwmCurrentVer = 2 + + nwmTCPConnType = 1 + nwmGlobalStatsType = 14 + + // nwmFilter constants + nwmFilterLclAddrMask = 0x20000000 // Local address + nwmFilterSrcAddrMask = 0x20000000 // Source address + nwmFilterLclPortMask = 0x10000000 // Local port + nwmFilterSrcPortMask = 0x10000000 // Source port + + // nwmConnEntry constants + nwmTCPStateClosed = 1 + nwmTCPStateListen = 2 + nwmTCPStateSynSent = 3 + nwmTCPStateSynRcvd = 4 + nwmTCPStateEstab = 5 + nwmTCPStateFinWait1 = 6 + nwmTCPStateFinWait2 = 7 + nwmTCPStateClosWait = 8 + nwmTCPStateLastAck = 9 + nwmTCPStateClosing = 10 + nwmTCPStateTimeWait = 11 + nwmTCPStateDeletTCB = 12 + + // Existing constants on linux + BPF_TCP_CLOSE = 1 + BPF_TCP_LISTEN = 2 + BPF_TCP_SYN_SENT = 3 + BPF_TCP_SYN_RECV = 4 + BPF_TCP_ESTABLISHED = 5 + BPF_TCP_FIN_WAIT1 = 6 + BPF_TCP_FIN_WAIT2 = 7 + BPF_TCP_CLOSE_WAIT = 8 + BPF_TCP_LAST_ACK = 9 + BPF_TCP_CLOSING = 10 + BPF_TCP_TIME_WAIT = 11 + BPF_TCP_NEW_SYN_RECV = -1 + BPF_TCP_MAX_STATES = -2 +) + +type nwmTriplet struct { + offset uint32 + length uint32 + number uint32 +} + +type nwmQuadruplet struct { + offset uint32 + length uint32 + number uint32 + match uint32 +} + +type nwmHeader struct { + ident uint32 + length uint32 + version uint16 + nwmType uint16 + bytesNeeded uint32 + options uint32 + _ [16]byte + inputDesc nwmTriplet + outputDesc nwmQuadruplet +} + +type nwmFilter struct { + ident uint32 + flags uint32 + resourceName [8]byte + resourceId uint32 + listenerId uint32 + local [28]byte // union of sockaddr4 and sockaddr6 + remote [28]byte // union of sockaddr4 and sockaddr6 + _ uint16 + _ uint16 + asid uint16 + _ [2]byte + tnLuName [8]byte + tnMonGrp uint32 + tnAppl [8]byte + applData [40]byte + nInterface [16]byte + dVipa [16]byte + dVipaPfx uint16 + dVipaPort uint16 + dVipaFamily byte + _ [3]byte + destXCF [16]byte + destXCFPfx uint16 + destXCFFamily byte + _ [1]byte + targIP [16]byte + targIPPfx uint16 + targIPFamily byte + _ [1]byte + _ [20]byte +} + +type nwmRecHeader struct { + ident uint32 + length uint32 + number byte + _ [3]byte +} + +type nwmTCPStatsEntry struct { + ident uint64 + currEstab uint32 + activeOpened uint32 + passiveOpened uint32 + connClosed uint32 + estabResets uint32 + attemptFails uint32 + passiveDrops uint32 + timeWaitReused uint32 + inSegs uint64 + predictAck uint32 + predictData uint32 + inDupAck uint32 + inBadSum uint32 + inBadLen uint32 + inShort uint32 + inDiscOldTime uint32 + inAllBeforeWin uint32 + inSomeBeforeWin uint32 + inAllAfterWin uint32 + inSomeAfterWin uint32 + inOutOfOrder uint32 + inAfterClose uint32 + inWinProbes uint32 + inWinUpdates uint32 + outWinUpdates uint32 + outSegs uint64 + outDelayAcks uint32 + outRsts uint32 + retransSegs uint32 + retransTimeouts uint32 + retransDrops uint32 + pmtuRetrans uint32 + pmtuErrors uint32 + outWinProbes uint32 + probeDrops uint32 + keepAliveProbes uint32 + keepAliveDrops uint32 + finwait2Drops uint32 + acceptCount uint64 + inBulkQSegs uint64 + inDiscards uint64 + connFloods uint32 + connStalls uint32 + cfgEphemDef uint16 + ephemInUse uint16 + ephemHiWater uint16 + flags byte + _ [1]byte + ephemExhaust uint32 + smcRCurrEstabLnks uint32 + smcRLnkActTimeOut uint32 + smcRActLnkOpened uint32 + smcRPasLnkOpened uint32 + smcRLnksClosed uint32 + smcRCurrEstab uint32 + smcRActiveOpened uint32 + smcRPassiveOpened uint32 + smcRConnClosed uint32 + smcRInSegs uint64 + smcROutSegs uint64 + smcRInRsts uint32 + smcROutRsts uint32 + smcDCurrEstabLnks uint32 + smcDActLnkOpened uint32 + smcDPasLnkOpened uint32 + smcDLnksClosed uint32 + smcDCurrEstab uint32 + smcDActiveOpened uint32 + smcDPassiveOpened uint32 + smcDConnClosed uint32 + smcDInSegs uint64 + smcDOutSegs uint64 + smcDInRsts uint32 + smcDOutRsts uint32 +} + +type nwmConnEntry struct { + ident uint32 + local [28]byte // union of sockaddr4 and sockaddr6 + remote [28]byte // union of sockaddr4 and sockaddr6 + startTime [8]byte // uint64, changed to prevent padding from being inserted + lastActivity [8]byte // uint64 + bytesIn [8]byte // uint64 + bytesOut [8]byte // uint64 + inSegs [8]byte // uint64 + outSegs [8]byte // uint64 + state uint16 + activeOpen byte + flag01 byte + outBuffered uint32 + inBuffered uint32 + maxSndWnd uint32 + reXmtCount uint32 + congestionWnd uint32 + ssThresh uint32 + roundTripTime uint32 + roundTripVar uint32 + sendMSS uint32 + sndWnd uint32 + rcvBufSize uint32 + sndBufSize uint32 + outOfOrderCount uint32 + lcl0WindowCount uint32 + rmt0WindowCount uint32 + dupacks uint32 + flag02 byte + sockOpt6Cont byte + asid uint16 + resourceName [8]byte + resourceId uint32 + subtask uint32 + sockOpt byte + sockOpt6 byte + clusterConnFlag byte + proto byte + targetAppl [8]byte + luName [8]byte + clientUserId [8]byte + logMode [8]byte + timeStamp uint32 + timeStampAge uint32 + serverResourceId uint32 + intfName [16]byte + ttlsStatPol byte + ttlsStatConn byte + ttlsSSLProt uint16 + ttlsNegCiph [2]byte + ttlsSecType byte + ttlsFIPS140Mode byte + ttlsUserID [8]byte + applData [40]byte + inOldestTime [8]byte // uint64 + outOldestTime [8]byte // uint64 + tcpTrustedPartner byte + _ [3]byte + bulkDataIntfName [16]byte + ttlsNegCiph4 [4]byte + smcReason uint32 + lclSMCLinkId uint32 + rmtSMCLinkId uint32 + smcStatus byte + smcFlags byte + _ [2]byte + rcvWnd uint32 + lclSMCBufSz uint32 + rmtSMCBufSz uint32 + ttlsSessID [32]byte + ttlsSessIDLen int16 + _ [1]byte + smcDStatus byte + smcDReason uint32 +} + +var svcNameTable [][]byte = [][]byte{ + []byte("\xc5\xe9\xc2\xd5\xd4\xc9\xc6\xf4"), // svc_EZBNMIF4 +} + +const ( + svc_EZBNMIF4 = 0 +) + +func GetsockoptTCPInfo(fd, level, opt int) (*TCPInfo, error) { + jobname := []byte("\x5c\x40\x40\x40\x40\x40\x40\x40") // "*" + responseBuffer := [4096]byte{0} + var bufferAlet, reasonCode uint32 = 0, 0 + var bufferLen, returnValue, returnCode int32 = 4096, 0, 0 + + dsa := [18]uint64{0} + var argv [7]unsafe.Pointer + argv[0] = unsafe.Pointer(&jobname[0]) + argv[1] = unsafe.Pointer(&responseBuffer[0]) + argv[2] = unsafe.Pointer(&bufferAlet) + argv[3] = unsafe.Pointer(&bufferLen) + argv[4] = unsafe.Pointer(&returnValue) + argv[5] = unsafe.Pointer(&returnCode) + argv[6] = unsafe.Pointer(&reasonCode) + + request := (*struct { + header nwmHeader + filter nwmFilter + })(unsafe.Pointer(&responseBuffer[0])) + + EZBNMIF4 := svcLoad(&svcNameTable[svc_EZBNMIF4][0]) + if EZBNMIF4 == nil { + return nil, errnoErr(EINVAL) + } + + // GetGlobalStats EZBNMIF4 call + request.header.ident = nwmHeaderIdentifier + request.header.length = uint32(unsafe.Sizeof(request.header)) + request.header.version = nwmCurrentVer + request.header.nwmType = nwmGlobalStatsType + request.header.options = 0x80000000 + + svcCall(EZBNMIF4, &argv[0], &dsa[0]) + + // outputDesc field is filled by EZBNMIF4 on success + if returnCode != 0 || request.header.outputDesc.offset == 0 { + return nil, errnoErr(EINVAL) + } + + // Check that EZBNMIF4 returned a nwmRecHeader + recHeader := (*nwmRecHeader)(unsafe.Pointer(&responseBuffer[request.header.outputDesc.offset])) + if recHeader.ident != nwmRecHeaderIdentifier { + return nil, errnoErr(EINVAL) + } + + // Parse nwmTriplets to get offsets of returned entries + var sections []*uint64 + var sectionDesc *nwmTriplet = (*nwmTriplet)(unsafe.Pointer(&responseBuffer[0])) + for i := uint32(0); i < uint32(recHeader.number); i++ { + offset := request.header.outputDesc.offset + uint32(unsafe.Sizeof(*recHeader)) + i*uint32(unsafe.Sizeof(*sectionDesc)) + sectionDesc = (*nwmTriplet)(unsafe.Pointer(&responseBuffer[offset])) + for j := uint32(0); j < sectionDesc.number; j++ { + offset = request.header.outputDesc.offset + sectionDesc.offset + j*sectionDesc.length + sections = append(sections, (*uint64)(unsafe.Pointer(&responseBuffer[offset]))) + } + } + + // Find nwmTCPStatsEntry in returned entries + var tcpStats *nwmTCPStatsEntry = nil + for _, ptr := range sections { + switch *ptr { + case nwmTCPStatsIdentifier: + if tcpStats != nil { + return nil, errnoErr(EINVAL) + } + tcpStats = (*nwmTCPStatsEntry)(unsafe.Pointer(ptr)) + case nwmIPStatsIdentifier: + case nwmIPGStatsIdentifier: + case nwmUDPStatsIdentifier: + case nwmICMPGStatsEntry: + case nwmICMPTStatsEntry: + default: + return nil, errnoErr(EINVAL) + } + } + if tcpStats == nil { + return nil, errnoErr(EINVAL) + } + + // GetConnectionDetail EZBNMIF4 call + responseBuffer = [4096]byte{0} + dsa = [18]uint64{0} + bufferAlet, reasonCode = 0, 0 + bufferLen, returnValue, returnCode = 4096, 0, 0 + nameptr := (*uint32)(unsafe.Pointer(uintptr(0x21c))) // Get jobname of current process + nameptr = (*uint32)(unsafe.Pointer(uintptr(*nameptr + 12))) + argv[0] = unsafe.Pointer(uintptr(*nameptr)) + + request.header.ident = nwmHeaderIdentifier + request.header.length = uint32(unsafe.Sizeof(request.header)) + request.header.version = nwmCurrentVer + request.header.nwmType = nwmTCPConnType + request.header.options = 0x80000000 + + request.filter.ident = nwmFilterIdentifier + + var localSockaddr RawSockaddrAny + socklen := _Socklen(SizeofSockaddrAny) + err := getsockname(fd, &localSockaddr, &socklen) + if err != nil { + return nil, errnoErr(EINVAL) + } + if localSockaddr.Addr.Family == AF_INET { + localSockaddr := (*RawSockaddrInet4)(unsafe.Pointer(&localSockaddr.Addr)) + localSockFilter := (*RawSockaddrInet4)(unsafe.Pointer(&request.filter.local[0])) + localSockFilter.Family = AF_INET + var i int + for i = 0; i < 4; i++ { + if localSockaddr.Addr[i] != 0 { + break + } + } + if i != 4 { + request.filter.flags |= nwmFilterLclAddrMask + for i = 0; i < 4; i++ { + localSockFilter.Addr[i] = localSockaddr.Addr[i] + } + } + if localSockaddr.Port != 0 { + request.filter.flags |= nwmFilterLclPortMask + localSockFilter.Port = localSockaddr.Port + } + } else if localSockaddr.Addr.Family == AF_INET6 { + localSockaddr := (*RawSockaddrInet6)(unsafe.Pointer(&localSockaddr.Addr)) + localSockFilter := (*RawSockaddrInet6)(unsafe.Pointer(&request.filter.local[0])) + localSockFilter.Family = AF_INET6 + var i int + for i = 0; i < 16; i++ { + if localSockaddr.Addr[i] != 0 { + break + } + } + if i != 16 { + request.filter.flags |= nwmFilterLclAddrMask + for i = 0; i < 16; i++ { + localSockFilter.Addr[i] = localSockaddr.Addr[i] + } + } + if localSockaddr.Port != 0 { + request.filter.flags |= nwmFilterLclPortMask + localSockFilter.Port = localSockaddr.Port + } + } + + svcCall(EZBNMIF4, &argv[0], &dsa[0]) + + // outputDesc field is filled by EZBNMIF4 on success + if returnCode != 0 || request.header.outputDesc.offset == 0 { + return nil, errnoErr(EINVAL) + } + + // Check that EZBNMIF4 returned a nwmConnEntry + conn := (*nwmConnEntry)(unsafe.Pointer(&responseBuffer[request.header.outputDesc.offset])) + if conn.ident != nwmTCPConnIdentifier { + return nil, errnoErr(EINVAL) + } + + // Copy data from the returned data structures into tcpInfo + // Stats from nwmConnEntry are specific to that connection. + // Stats from nwmTCPStatsEntry are global (to the interface?) + // Fields may not be an exact match. Some fields have no equivalent. + var tcpinfo TCPInfo + tcpinfo.State = uint8(conn.state) + tcpinfo.Ca_state = 0 // dummy + tcpinfo.Retransmits = uint8(tcpStats.retransSegs) + tcpinfo.Probes = uint8(tcpStats.outWinProbes) + tcpinfo.Backoff = 0 // dummy + tcpinfo.Options = 0 // dummy + tcpinfo.Rto = tcpStats.retransTimeouts + tcpinfo.Ato = tcpStats.outDelayAcks + tcpinfo.Snd_mss = conn.sendMSS + tcpinfo.Rcv_mss = conn.sendMSS // dummy + tcpinfo.Unacked = 0 // dummy + tcpinfo.Sacked = 0 // dummy + tcpinfo.Lost = 0 // dummy + tcpinfo.Retrans = conn.reXmtCount + tcpinfo.Fackets = 0 // dummy + tcpinfo.Last_data_sent = uint32(*(*uint64)(unsafe.Pointer(&conn.lastActivity[0]))) + tcpinfo.Last_ack_sent = uint32(*(*uint64)(unsafe.Pointer(&conn.outOldestTime[0]))) + tcpinfo.Last_data_recv = uint32(*(*uint64)(unsafe.Pointer(&conn.inOldestTime[0]))) + tcpinfo.Last_ack_recv = uint32(*(*uint64)(unsafe.Pointer(&conn.inOldestTime[0]))) + tcpinfo.Pmtu = conn.sendMSS // dummy, NWMIfRouteMtu is a candidate + tcpinfo.Rcv_ssthresh = conn.ssThresh + tcpinfo.Rtt = conn.roundTripTime + tcpinfo.Rttvar = conn.roundTripVar + tcpinfo.Snd_ssthresh = conn.ssThresh // dummy + tcpinfo.Snd_cwnd = conn.congestionWnd + tcpinfo.Advmss = conn.sendMSS // dummy + tcpinfo.Reordering = 0 // dummy + tcpinfo.Rcv_rtt = conn.roundTripTime // dummy + tcpinfo.Rcv_space = conn.sendMSS // dummy + tcpinfo.Total_retrans = conn.reXmtCount + + svcUnload(&svcNameTable[svc_EZBNMIF4][0], EZBNMIF4) + + return &tcpinfo, nil +} + +// GetsockoptString returns the string value of the socket option opt for the +// socket associated with fd at the given socket level. +func GetsockoptString(fd, level, opt int) (string, error) { + buf := make([]byte, 256) + vallen := _Socklen(len(buf)) + err := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen) + if err != nil { + return "", err + } + + return ByteSliceToString(buf[:vallen]), nil +} + +func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { + var msg Msghdr + var rsa RawSockaddrAny + msg.Name = (*byte)(unsafe.Pointer(&rsa)) + msg.Namelen = SizeofSockaddrAny + var iov Iovec + if len(p) > 0 { + iov.Base = (*byte)(unsafe.Pointer(&p[0])) + iov.SetLen(len(p)) + } + var dummy byte + if len(oob) > 0 { + // receive at least one normal byte + if len(p) == 0 { + iov.Base = &dummy + iov.SetLen(1) + } + msg.Control = (*byte)(unsafe.Pointer(&oob[0])) + msg.SetControllen(len(oob)) + } + msg.Iov = &iov + msg.Iovlen = 1 + if n, err = recvmsg(fd, &msg, flags); err != nil { + return + } + oobn = int(msg.Controllen) + recvflags = int(msg.Flags) + // source address is only specified if the socket is unconnected + if rsa.Addr.Family != AF_UNSPEC { + // TODO(neeilan): Remove 0 arg added to get this compiling on z/OS + from, err = anyToSockaddr(0, &rsa) + } + return +} + +func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) { + _, err = SendmsgN(fd, p, oob, to, flags) + return +} + +func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) { + var ptr unsafe.Pointer + var salen _Socklen + if to != nil { + var err error + ptr, salen, err = to.sockaddr() + if err != nil { + return 0, err + } + } + var msg Msghdr + msg.Name = (*byte)(unsafe.Pointer(ptr)) + msg.Namelen = int32(salen) + var iov Iovec + if len(p) > 0 { + iov.Base = (*byte)(unsafe.Pointer(&p[0])) + iov.SetLen(len(p)) + } + var dummy byte + if len(oob) > 0 { + // send at least one normal byte + if len(p) == 0 { + iov.Base = &dummy + iov.SetLen(1) + } + msg.Control = (*byte)(unsafe.Pointer(&oob[0])) + msg.SetControllen(len(oob)) + } + msg.Iov = &iov + msg.Iovlen = 1 + if n, err = sendmsg(fd, &msg, flags); err != nil { + return 0, err + } + if len(oob) > 0 && len(p) == 0 { + n = 0 + } + return n, nil +} + +func Opendir(name string) (uintptr, error) { + p, err := BytePtrFromString(name) + if err != nil { + return 0, err + } + err = nil + runtime.EnterSyscall() + dir, e2, e1 := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___OPENDIR_A<<4, uintptr(unsafe.Pointer(p))) + runtime.ExitSyscall() + runtime.KeepAlive(unsafe.Pointer(p)) + if dir == 0 { + err = errnoErr2(e1, e2) + } + return dir, err +} + +// clearsyscall.Errno resets the errno value to 0. +func clearErrno() + +func Closedir(dir uintptr) error { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_CLOSEDIR<<4, dir) + runtime.ExitSyscall() + if r0 != 0 { + return errnoErr2(e1, e2) + } + return nil +} + +func Seekdir(dir uintptr, pos int) { + runtime.EnterSyscall() + CallLeFuncWithErr(GetZosLibVec()+SYS_SEEKDIR<<4, dir, uintptr(pos)) + runtime.ExitSyscall() +} + +func Telldir(dir uintptr) (int, error) { + p, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_TELLDIR<<4, dir) + pos := int(p) + if int64(p) == -1 { + return pos, errnoErr2(e1, e2) + } + return pos, nil +} + +// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command. +func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error { + // struct flock is packed on z/OS. We can't emulate that in Go so + // instead we pack it here. + var flock [24]byte + *(*int16)(unsafe.Pointer(&flock[0])) = lk.Type + *(*int16)(unsafe.Pointer(&flock[2])) = lk.Whence + *(*int64)(unsafe.Pointer(&flock[4])) = lk.Start + *(*int64)(unsafe.Pointer(&flock[12])) = lk.Len + *(*int32)(unsafe.Pointer(&flock[20])) = lk.Pid + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCNTL<<4, fd, uintptr(cmd), uintptr(unsafe.Pointer(&flock))) + runtime.ExitSyscall() + lk.Type = *(*int16)(unsafe.Pointer(&flock[0])) + lk.Whence = *(*int16)(unsafe.Pointer(&flock[2])) + lk.Start = *(*int64)(unsafe.Pointer(&flock[4])) + lk.Len = *(*int64)(unsafe.Pointer(&flock[12])) + lk.Pid = *(*int32)(unsafe.Pointer(&flock[20])) + if r0 == 0 { + return nil + } + return errnoErr2(e1, e2) +} + +func impl_Flock(fd int, how int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FLOCK<<4, uintptr(fd), uintptr(how)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_FlockAddr() *(func(fd int, how int) (err error)) + +var Flock = enter_Flock + +func validFlock(fp uintptr) bool { + if funcptrtest(GetZosLibVec()+SYS_FLOCK<<4, "") == 0 { + if name, err := getLeFuncName(GetZosLibVec() + SYS_FLOCK<<4); err == nil { + return name == "flock" + } + } + return false +} + +func enter_Flock(fd int, how int) (err error) { + funcref := get_FlockAddr() + if validFlock(GetZosLibVec() + SYS_FLOCK<<4) { + *funcref = impl_Flock + } else { + *funcref = legacyFlock + } + return (*funcref)(fd, how) +} + +func legacyFlock(fd int, how int) error { + + var flock_type int16 + var fcntl_cmd int + + switch how { + case LOCK_SH | LOCK_NB: + flock_type = F_RDLCK + fcntl_cmd = F_SETLK + case LOCK_EX | LOCK_NB: + flock_type = F_WRLCK + fcntl_cmd = F_SETLK + case LOCK_EX: + flock_type = F_WRLCK + fcntl_cmd = F_SETLKW + case LOCK_UN: + flock_type = F_UNLCK + fcntl_cmd = F_SETLKW + default: + } + + flock := Flock_t{ + Type: int16(flock_type), + Whence: int16(0), + Start: int64(0), + Len: int64(0), + Pid: int32(Getppid()), + } + + err := FcntlFlock(uintptr(fd), fcntl_cmd, &flock) + return err +} + +func Mlock(b []byte) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MLOCKALL<<4, _BPX_NONSWAP) + runtime.ExitSyscall() + if r0 != 0 { + err = errnoErr2(e1, e2) + } + return +} + +func Mlock2(b []byte, flags int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MLOCKALL<<4, _BPX_NONSWAP) + runtime.ExitSyscall() + if r0 != 0 { + err = errnoErr2(e1, e2) + } + return +} + +func Mlockall(flags int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MLOCKALL<<4, _BPX_NONSWAP) + runtime.ExitSyscall() + if r0 != 0 { + err = errnoErr2(e1, e2) + } + return +} + +func Munlock(b []byte) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MLOCKALL<<4, _BPX_SWAP) + runtime.ExitSyscall() + if r0 != 0 { + err = errnoErr2(e1, e2) + } + return +} + +func Munlockall() (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MLOCKALL<<4, _BPX_SWAP) + runtime.ExitSyscall() + if r0 != 0 { + err = errnoErr2(e1, e2) + } + return +} + +func ClockGettime(clockid int32, ts *Timespec) error { + + var ticks_per_sec uint32 = 100 //TODO(kenan): value is currently hardcoded; need sysconf() call otherwise + var nsec_per_sec int64 = 1000000000 + + if ts == nil { + return EFAULT + } + if clockid == CLOCK_REALTIME || clockid == CLOCK_MONOTONIC { + var nanotime int64 = runtime.Nanotime1() + ts.Sec = nanotime / nsec_per_sec + ts.Nsec = nanotime % nsec_per_sec + } else if clockid == CLOCK_PROCESS_CPUTIME_ID || clockid == CLOCK_THREAD_CPUTIME_ID { + var tm Tms + _, err := Times(&tm) + if err != nil { + return EFAULT + } + ts.Sec = int64(tm.Utime / ticks_per_sec) + ts.Nsec = int64(tm.Utime) * nsec_per_sec / int64(ticks_per_sec) + } else { + return EINVAL + } + return nil +} + +// Chtag + +//go:nosplit +func get_ChtagAddr() *(func(path string, ccsid uint64, textbit uint64) error) + +var Chtag = enter_Chtag + +func enter_Chtag(path string, ccsid uint64, textbit uint64) error { + funcref := get_ChtagAddr() + if validSetxattr() { + *funcref = impl_Chtag + } else { + *funcref = legacy_Chtag + } + return (*funcref)(path, ccsid, textbit) +} + +func legacy_Chtag(path string, ccsid uint64, textbit uint64) error { + tag := ccsid<<16 | textbit<<15 + var tag_buff [8]byte + DecodeData(tag_buff[:], 8, tag) + return Setxattr(path, "filetag", tag_buff[:], XATTR_REPLACE) +} + +func impl_Chtag(path string, ccsid uint64, textbit uint64) error { + tag := ccsid<<16 | textbit<<15 + var tag_buff [4]byte + DecodeData(tag_buff[:], 4, tag) + return Setxattr(path, "system.filetag", tag_buff[:], XATTR_REPLACE) +} + +// End of Chtag + +// Nanosleep + +//go:nosplit +func get_NanosleepAddr() *(func(time *Timespec, leftover *Timespec) error) + +var Nanosleep = enter_Nanosleep + +func enter_Nanosleep(time *Timespec, leftover *Timespec) error { + funcref := get_NanosleepAddr() + if funcptrtest(GetZosLibVec()+SYS_NANOSLEEP<<4, "") == 0 { + *funcref = impl_Nanosleep + } else { + *funcref = legacyNanosleep + } + return (*funcref)(time, leftover) +} + +func impl_Nanosleep(time *Timespec, leftover *Timespec) error { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_NANOSLEEP<<4, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover))) + runtime.ExitSyscall() + if int64(r0) == -1 { + return errnoErr2(e1, e2) + } + return nil +} + +func legacyNanosleep(time *Timespec, leftover *Timespec) error { + t0 := runtime.Nanotime1() + var secrem uint32 + var nsecrem uint32 + total := time.Sec*1000000000 + time.Nsec + elapsed := runtime.Nanotime1() - t0 + var rv int32 + var rc int32 + var err error + // repeatedly sleep for 1 second until less than 1 second left + for total-elapsed > 1000000000 { + rv, rc, _ = BpxCondTimedWait(uint32(1), uint32(0), uint32(CW_CONDVAR), &secrem, &nsecrem) + if rv != 0 && rc != 112 { // 112 is EAGAIN + if leftover != nil && rc == 120 { // 120 is EINTR + leftover.Sec = int64(secrem) + leftover.Nsec = int64(nsecrem) + } + err = Errno(rc) + return err + } + elapsed = runtime.Nanotime1() - t0 + } + // sleep the remainder + if total > elapsed { + rv, rc, _ = BpxCondTimedWait(uint32(0), uint32(total-elapsed), uint32(CW_CONDVAR), &secrem, &nsecrem) + } + if leftover != nil && rc == 120 { + leftover.Sec = int64(secrem) + leftover.Nsec = int64(nsecrem) + } + if rv != 0 && rc != 112 { + err = Errno(rc) + } + return err +} + +// End of Nanosleep + +var ( + Stdin = 0 + Stdout = 1 + Stderr = 2 +) + +// Do the interface allocations only once for common +// Errno values. +var ( + errEAGAIN error = syscall.EAGAIN + errEINVAL error = syscall.EINVAL + errENOENT error = syscall.ENOENT +) + +var ZosTraceLevel int +var ZosTracefile *os.File + +var ( + signalNameMapOnce sync.Once + signalNameMap map[string]syscall.Signal +) + +// errnoErr returns common boxed Errno values, to prevent +// allocations at runtime. +func errnoErr(e Errno) error { + switch e { + case 0: + return nil + case EAGAIN: + return errEAGAIN + case EINVAL: + return errEINVAL + case ENOENT: + return errENOENT + } + return e +} + +var reg *regexp.Regexp + +// enhanced with zos specific errno2 +func errnoErr2(e Errno, e2 uintptr) error { + switch e { + case 0: + return nil + case EAGAIN: + return errEAGAIN + /* + Allow the retrieval of errno2 for EINVAL and ENOENT on zos + case EINVAL: + return errEINVAL + case ENOENT: + return errENOENT + */ + } + if ZosTraceLevel > 0 { + var name string + if reg == nil { + reg = regexp.MustCompile("(^unix\\.[^/]+$|.*\\/unix\\.[^/]+$)") + } + i := 1 + pc, file, line, ok := runtime.Caller(i) + if ok { + name = runtime.FuncForPC(pc).Name() + } + for ok && reg.MatchString(runtime.FuncForPC(pc).Name()) { + i += 1 + pc, file, line, ok = runtime.Caller(i) + } + if ok { + if ZosTracefile == nil { + ZosConsolePrintf("From %s:%d\n", file, line) + ZosConsolePrintf("%s: %s (errno2=0x%x)\n", name, e.Error(), e2) + } else { + fmt.Fprintf(ZosTracefile, "From %s:%d\n", file, line) + fmt.Fprintf(ZosTracefile, "%s: %s (errno2=0x%x)\n", name, e.Error(), e2) + } + } else { + if ZosTracefile == nil { + ZosConsolePrintf("%s (errno2=0x%x)\n", e.Error(), e2) + } else { + fmt.Fprintf(ZosTracefile, "%s (errno2=0x%x)\n", e.Error(), e2) + } + } + } + return e +} + +// ErrnoName returns the error name for error number e. +func ErrnoName(e Errno) string { + i := sort.Search(len(errorList), func(i int) bool { + return errorList[i].num >= e + }) + if i < len(errorList) && errorList[i].num == e { + return errorList[i].name + } + return "" +} + +// SignalName returns the signal name for signal number s. +func SignalName(s syscall.Signal) string { + i := sort.Search(len(signalList), func(i int) bool { + return signalList[i].num >= s + }) + if i < len(signalList) && signalList[i].num == s { + return signalList[i].name + } + return "" +} + +// SignalNum returns the syscall.Signal for signal named s, +// or 0 if a signal with such name is not found. +// The signal name should start with "SIG". +func SignalNum(s string) syscall.Signal { + signalNameMapOnce.Do(func() { + signalNameMap = make(map[string]syscall.Signal, len(signalList)) + for _, signal := range signalList { + signalNameMap[signal.name] = signal.num + } + }) + return signalNameMap[s] +} + +// clen returns the index of the first NULL byte in n or len(n) if n contains no NULL byte. +func clen(n []byte) int { + i := bytes.IndexByte(n, 0) + if i == -1 { + i = len(n) + } + return i +} + +// Mmap manager, for use by operating system-specific implementations. + +type mmapper struct { + sync.Mutex + active map[*byte][]byte // active mappings; key is last byte in mapping + mmap func(addr, length uintptr, prot, flags, fd int, offset int64) (uintptr, error) + munmap func(addr uintptr, length uintptr) error +} + +func (m *mmapper) Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { + if length <= 0 { + return nil, EINVAL + } + + // Set __MAP_64 by default + flags |= __MAP_64 + + // Map the requested memory. + addr, errno := m.mmap(0, uintptr(length), prot, flags, fd, offset) + if errno != nil { + return nil, errno + } + + // Slice memory layout + var sl = struct { + addr uintptr + len int + cap int + }{addr, length, length} + + // Use unsafe to turn sl into a []byte. + b := *(*[]byte)(unsafe.Pointer(&sl)) + + // Register mapping in m and return it. + p := &b[cap(b)-1] + m.Lock() + defer m.Unlock() + m.active[p] = b + return b, nil +} + +func (m *mmapper) Munmap(data []byte) (err error) { + if len(data) == 0 || len(data) != cap(data) { + return EINVAL + } + + // Find the base of the mapping. + p := &data[cap(data)-1] + m.Lock() + defer m.Unlock() + b := m.active[p] + if b == nil || &b[0] != &data[0] { + return EINVAL + } + + // Unmap the memory and update m. + if errno := m.munmap(uintptr(unsafe.Pointer(&b[0])), uintptr(len(b))); errno != nil { + return errno + } + delete(m.active, p) + return nil +} + +func Read(fd int, p []byte) (n int, err error) { + n, err = read(fd, p) + if raceenabled { + if n > 0 { + raceWriteRange(unsafe.Pointer(&p[0]), n) + } + if err == nil { + raceAcquire(unsafe.Pointer(&ioSync)) + } + } + return +} + +func Write(fd int, p []byte) (n int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + n, err = write(fd, p) + if raceenabled && n > 0 { + raceReadRange(unsafe.Pointer(&p[0]), n) + } + return +} + +// For testing: clients can set this flag to force +// creation of IPv6 sockets to return EAFNOSUPPORT. +var SocketDisableIPv6 bool + +// Sockaddr represents a socket address. +type Sockaddr interface { + sockaddr() (ptr unsafe.Pointer, len _Socklen, err error) // lowercase; only we can define Sockaddrs +} + +// SockaddrInet4 implements the Sockaddr interface for AF_INET type sockets. +type SockaddrInet4 struct { + Port int + Addr [4]byte + raw RawSockaddrInet4 +} + +// SockaddrInet6 implements the Sockaddr interface for AF_INET6 type sockets. +type SockaddrInet6 struct { + Port int + ZoneId uint32 + Addr [16]byte + raw RawSockaddrInet6 +} + +// SockaddrUnix implements the Sockaddr interface for AF_UNIX type sockets. +type SockaddrUnix struct { + Name string + raw RawSockaddrUnix +} + +func Bind(fd int, sa Sockaddr) (err error) { + ptr, n, err := sa.sockaddr() + if err != nil { + return err + } + return bind(fd, ptr, n) +} + +func Connect(fd int, sa Sockaddr) (err error) { + ptr, n, err := sa.sockaddr() + if err != nil { + return err + } + return connect(fd, ptr, n) +} + +func Getpeername(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getpeername(fd, &rsa, &len); err != nil { + return + } + return anyToSockaddr(fd, &rsa) +} + +func GetsockoptByte(fd, level, opt int) (value byte, err error) { + var n byte + vallen := _Socklen(1) + err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen) + return n, err +} + +func GetsockoptInt(fd, level, opt int) (value int, err error) { + var n int32 + vallen := _Socklen(4) + err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen) + return int(n), err +} + +func GetsockoptInet4Addr(fd, level, opt int) (value [4]byte, err error) { + vallen := _Socklen(4) + err = getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen) + return value, err +} + +func GetsockoptIPMreq(fd, level, opt int) (*IPMreq, error) { + var value IPMreq + vallen := _Socklen(SizeofIPMreq) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptIPv6Mreq(fd, level, opt int) (*IPv6Mreq, error) { + var value IPv6Mreq + vallen := _Socklen(SizeofIPv6Mreq) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptIPv6MTUInfo(fd, level, opt int) (*IPv6MTUInfo, error) { + var value IPv6MTUInfo + vallen := _Socklen(SizeofIPv6MTUInfo) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptICMPv6Filter(fd, level, opt int) (*ICMPv6Filter, error) { + var value ICMPv6Filter + vallen := _Socklen(SizeofICMPv6Filter) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptLinger(fd, level, opt int) (*Linger, error) { + var linger Linger + vallen := _Socklen(SizeofLinger) + err := getsockopt(fd, level, opt, unsafe.Pointer(&linger), &vallen) + return &linger, err +} + +func GetsockoptTimeval(fd, level, opt int) (*Timeval, error) { + var tv Timeval + vallen := _Socklen(unsafe.Sizeof(tv)) + err := getsockopt(fd, level, opt, unsafe.Pointer(&tv), &vallen) + return &tv, err +} + +func GetsockoptUint64(fd, level, opt int) (value uint64, err error) { + var n uint64 + vallen := _Socklen(8) + err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen) + return n, err +} + +func Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if n, err = recvfrom(fd, p, flags, &rsa, &len); err != nil { + return + } + if rsa.Addr.Family != AF_UNSPEC { + from, err = anyToSockaddr(fd, &rsa) + } + return +} + +func Sendto(fd int, p []byte, flags int, to Sockaddr) (err error) { + ptr, n, err := to.sockaddr() + if err != nil { + return err + } + return sendto(fd, p, flags, ptr, n) +} + +func SetsockoptByte(fd, level, opt int, value byte) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(&value), 1) +} + +func SetsockoptInt(fd, level, opt int, value int) (err error) { + var n = int32(value) + return setsockopt(fd, level, opt, unsafe.Pointer(&n), 4) +} + +func SetsockoptInet4Addr(fd, level, opt int, value [4]byte) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(&value[0]), 4) +} + +func SetsockoptIPMreq(fd, level, opt int, mreq *IPMreq) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPMreq) +} + +func SetsockoptIPv6Mreq(fd, level, opt int, mreq *IPv6Mreq) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPv6Mreq) +} + +func SetsockoptICMPv6Filter(fd, level, opt int, filter *ICMPv6Filter) error { + return setsockopt(fd, level, opt, unsafe.Pointer(filter), SizeofICMPv6Filter) +} + +func SetsockoptLinger(fd, level, opt int, l *Linger) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(l), SizeofLinger) +} + +func SetsockoptString(fd, level, opt int, s string) (err error) { + var p unsafe.Pointer + if len(s) > 0 { + p = unsafe.Pointer(&[]byte(s)[0]) + } + return setsockopt(fd, level, opt, p, uintptr(len(s))) +} + +func SetsockoptTimeval(fd, level, opt int, tv *Timeval) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(tv), unsafe.Sizeof(*tv)) +} + +func SetsockoptUint64(fd, level, opt int, value uint64) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(&value), 8) +} + +func Socket(domain, typ, proto int) (fd int, err error) { + if domain == AF_INET6 && SocketDisableIPv6 { + return -1, EAFNOSUPPORT + } + fd, err = socket(domain, typ, proto) + return +} + +func Socketpair(domain, typ, proto int) (fd [2]int, err error) { + var fdx [2]int32 + err = socketpair(domain, typ, proto, &fdx) + if err == nil { + fd[0] = int(fdx[0]) + fd[1] = int(fdx[1]) + } + return +} + +var ioSync int64 + +func CloseOnExec(fd int) { fcntl(fd, F_SETFD, FD_CLOEXEC) } + +func SetNonblock(fd int, nonblocking bool) (err error) { + flag, err := fcntl(fd, F_GETFL, 0) + if err != nil { + return err + } + if nonblocking { + flag |= O_NONBLOCK + } else { + flag &= ^O_NONBLOCK + } + _, err = fcntl(fd, F_SETFL, flag) + return err +} + +// Exec calls execve(2), which replaces the calling executable in the process +// tree. argv0 should be the full path to an executable ("/bin/ls") and the +// executable name should also be the first argument in argv (["ls", "-l"]). +// envv are the environment variables that should be passed to the new +// process (["USER=go", "PWD=/tmp"]). +func Exec(argv0 string, argv []string, envv []string) error { + return syscall.Exec(argv0, argv, envv) +} + +func Getag(path string) (ccsid uint16, flag uint16, err error) { + var val [8]byte + sz, err := Getxattr(path, "ccsid", val[:]) + if err != nil { + return + } + ccsid = uint16(EncodeData(val[0:sz])) + sz, err = Getxattr(path, "flags", val[:]) + if err != nil { + return + } + flag = uint16(EncodeData(val[0:sz]) >> 15) + return +} + +// Mount begin +func impl_Mount(source string, target string, fstype string, flags uintptr, data string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + var _p3 *byte + _p3, err = BytePtrFromString(data) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MOUNT1_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(_p3))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_MountAddr() *(func(source string, target string, fstype string, flags uintptr, data string) (err error)) + +var Mount = enter_Mount + +func enter_Mount(source string, target string, fstype string, flags uintptr, data string) (err error) { + funcref := get_MountAddr() + if validMount() { + *funcref = impl_Mount + } else { + *funcref = legacyMount + } + return (*funcref)(source, target, fstype, flags, data) +} + +func legacyMount(source string, target string, fstype string, flags uintptr, data string) (err error) { + if needspace := 8 - len(fstype); needspace <= 0 { + fstype = fstype[0:8] + } else { + fstype += " "[0:needspace] + } + return mount_LE(target, source, fstype, uint32(flags), int32(len(data)), data) +} + +func validMount() bool { + if funcptrtest(GetZosLibVec()+SYS___MOUNT1_A<<4, "") == 0 { + if name, err := getLeFuncName(GetZosLibVec() + SYS___MOUNT1_A<<4); err == nil { + return name == "__mount1_a" + } + } + return false +} + +// Mount end + +// Unmount begin +func impl_Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UMOUNT2_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_UnmountAddr() *(func(target string, flags int) (err error)) + +var Unmount = enter_Unmount + +func enter_Unmount(target string, flags int) (err error) { + funcref := get_UnmountAddr() + if funcptrtest(GetZosLibVec()+SYS___UMOUNT2_A<<4, "") == 0 { + *funcref = impl_Unmount + } else { + *funcref = legacyUnmount + } + return (*funcref)(target, flags) +} + +func legacyUnmount(name string, mtm int) (err error) { + // mountpoint is always a full path and starts with a '/' + // check if input string is not a mountpoint but a filesystem name + if name[0] != '/' { + return unmount_LE(name, mtm) + } + // treat name as mountpoint + b2s := func(arr []byte) string { + var str string + for i := 0; i < len(arr); i++ { + if arr[i] == 0 { + str = string(arr[:i]) + break + } + } + return str + } + var buffer struct { + header W_Mnth + fsinfo [64]W_Mntent + } + fs_count, err := W_Getmntent_A((*byte)(unsafe.Pointer(&buffer)), int(unsafe.Sizeof(buffer))) + if err == nil { + err = EINVAL + for i := 0; i < fs_count; i++ { + if b2s(buffer.fsinfo[i].Mountpoint[:]) == name { + err = unmount_LE(b2s(buffer.fsinfo[i].Fsname[:]), mtm) + break + } + } + } else if fs_count == 0 { + err = EINVAL + } + return err +} + +// Unmount end + +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + reclen, ok := direntReclen(buf) + if !ok { + return 0, false + } + return reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true +} + +func direntLeToDirentUnix(dirent *direntLE, dir uintptr, path string) (Dirent, error) { + var d Dirent + + d.Ino = uint64(dirent.Ino) + offset, err := Telldir(dir) + if err != nil { + return d, err + } + + d.Off = int64(offset) + s := string(bytes.Split(dirent.Name[:], []byte{0})[0]) + copy(d.Name[:], s) + + d.Reclen = uint16(24 + len(d.NameString())) + var st Stat_t + path = path + "/" + s + err = Lstat(path, &st) + if err != nil { + return d, err + } + + d.Type = uint8(st.Mode >> 24) + return d, err +} + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + // Simulation of Getdirentries port from the Darwin implementation. + // COMMENTS FROM DARWIN: + // It's not the full required semantics, but should handle the case + // of calling Getdirentries or ReadDirent repeatedly. + // It won't handle assigning the results of lseek to *basep, or handle + // the directory being edited underfoot. + + skip, err := Seek(fd, 0, 1 /* SEEK_CUR */) + if err != nil { + return 0, err + } + + // Get path from fd to avoid unavailable call (fdopendir) + path, err := ZosFdToPath(fd) + if err != nil { + return 0, err + } + d, err := Opendir(path) + if err != nil { + return 0, err + } + defer Closedir(d) + + var cnt int64 + for { + var entryLE direntLE + var entrypLE *direntLE + e := Readdir_r(d, &entryLE, &entrypLE) + if e != nil { + return n, e + } + if entrypLE == nil { + break + } + if skip > 0 { + skip-- + cnt++ + continue + } + + // Dirent on zos has a different structure + entry, e := direntLeToDirentUnix(&entryLE, d, path) + if e != nil { + return n, e + } + + reclen := int(entry.Reclen) + if reclen > len(buf) { + // Not enough room. Return for now. + // The counter will let us know where we should start up again. + // Note: this strategy for suspending in the middle and + // restarting is O(n^2) in the length of the directory. Oh well. + break + } + + // Copy entry into return buffer. + s := unsafe.Slice((*byte)(unsafe.Pointer(&entry)), reclen) + copy(buf, s) + + buf = buf[reclen:] + n += reclen + cnt++ + } + // Set the seek offset of the input fd to record + // how many files we've already returned. + _, err = Seek(fd, cnt, 0 /* SEEK_SET */) + if err != nil { + return n, err + } + + return n, nil +} + +func Err2ad() (eadd *int) { + r0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS___ERR2AD<<4) + eadd = (*int)(unsafe.Pointer(r0)) + return +} + +func ZosConsolePrintf(format string, v ...interface{}) (int, error) { + type __cmsg struct { + _ uint16 + _ [2]uint8 + __msg_length uint32 + __msg uintptr + _ [4]uint8 + } + msg := fmt.Sprintf(format, v...) + strptr := unsafe.Pointer((*reflect.StringHeader)(unsafe.Pointer(&msg)).Data) + len := (*reflect.StringHeader)(unsafe.Pointer(&msg)).Len + cmsg := __cmsg{__msg_length: uint32(len), __msg: uintptr(strptr)} + cmd := uint32(0) + runtime.EnterSyscall() + rc, err2, err1 := CallLeFuncWithErr(GetZosLibVec()+SYS_____CONSOLE_A<<4, uintptr(unsafe.Pointer(&cmsg)), 0, uintptr(unsafe.Pointer(&cmd))) + runtime.ExitSyscall() + if rc != 0 { + return 0, fmt.Errorf("%s (errno2=0x%x)\n", err1.Error(), err2) + } + return 0, nil +} +func ZosStringToEbcdicBytes(str string, nullterm bool) (ebcdicBytes []byte) { + if nullterm { + ebcdicBytes = []byte(str + "\x00") + } else { + ebcdicBytes = []byte(str) + } + A2e(ebcdicBytes) + return +} +func ZosEbcdicBytesToString(b []byte, trimRight bool) (str string) { + res := make([]byte, len(b)) + copy(res, b) + E2a(res) + if trimRight { + str = string(bytes.TrimRight(res, " \x00")) + } else { + str = string(res) + } + return +} + +func fdToPath(dirfd int) (path string, err error) { + var buffer [1024]byte + // w_ctrl() + ret := runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS_W_IOCTL<<4, + []uintptr{uintptr(dirfd), 17, 1024, uintptr(unsafe.Pointer(&buffer[0]))}) + if ret == 0 { + zb := bytes.IndexByte(buffer[:], 0) + if zb == -1 { + zb = len(buffer) + } + // __e2a_l() + runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___E2A_L<<4, + []uintptr{uintptr(unsafe.Pointer(&buffer[0])), uintptr(zb)}) + return string(buffer[:zb]), nil + } + // __errno() + errno := int(*(*int32)(unsafe.Pointer(runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___ERRNO<<4, + []uintptr{})))) + // __errno2() + errno2 := int(runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___ERRNO2<<4, + []uintptr{})) + // strerror_r() + ret = runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS_STRERROR_R<<4, + []uintptr{uintptr(errno), uintptr(unsafe.Pointer(&buffer[0])), 1024}) + if ret == 0 { + zb := bytes.IndexByte(buffer[:], 0) + if zb == -1 { + zb = len(buffer) + } + return "", fmt.Errorf("%s (errno2=0x%x)", buffer[:zb], errno2) + } else { + return "", fmt.Errorf("fdToPath errno %d (errno2=0x%x)", errno, errno2) + } +} + +func impl_Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKFIFOAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_MkfifoatAddr() *(func(dirfd int, path string, mode uint32) (err error)) + +var Mkfifoat = enter_Mkfifoat + +func enter_Mkfifoat(dirfd int, path string, mode uint32) (err error) { + funcref := get_MkfifoatAddr() + if funcptrtest(GetZosLibVec()+SYS___MKFIFOAT_A<<4, "") == 0 { + *funcref = impl_Mkfifoat + } else { + *funcref = legacy_Mkfifoat + } + return (*funcref)(dirfd, path, mode) +} + +func legacy_Mkfifoat(dirfd int, path string, mode uint32) (err error) { + dirname, err := ZosFdToPath(dirfd) + if err != nil { + return err + } + return Mkfifo(dirname+"/"+path, mode) +} + +//sys Posix_openpt(oflag int) (fd int, err error) = SYS_POSIX_OPENPT +//sys Grantpt(fildes int) (rc int, err error) = SYS_GRANTPT +//sys Unlockpt(fildes int) (rc int, err error) = SYS_UNLOCKPT + +func fcntlAsIs(fd uintptr, cmd int, arg uintptr) (val int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCNTL<<4, uintptr(fd), uintptr(cmd), arg) + runtime.ExitSyscall() + val = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +func Fcntl(fd uintptr, cmd int, op interface{}) (ret int, err error) { + switch op.(type) { + case *Flock_t: + err = FcntlFlock(fd, cmd, op.(*Flock_t)) + if err != nil { + ret = -1 + } + return + case int: + return FcntlInt(fd, cmd, op.(int)) + case *F_cnvrt: + return fcntlAsIs(fd, cmd, uintptr(unsafe.Pointer(op.(*F_cnvrt)))) + case unsafe.Pointer: + return fcntlAsIs(fd, cmd, uintptr(op.(unsafe.Pointer))) + default: + return -1, EINVAL + } + return +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + // TODO: use LE call instead if the call is implemented + originalOffset, err := Seek(infd, 0, SEEK_CUR) + if err != nil { + return -1, err + } + //start reading data from in_fd + if offset != nil { + _, err := Seek(infd, *offset, SEEK_SET) + if err != nil { + return -1, err + } + } + + buf := make([]byte, count) + readBuf := make([]byte, 0) + var n int = 0 + for i := 0; i < count; i += n { + n, err := Read(infd, buf) + if n == 0 { + if err != nil { + return -1, err + } else { // EOF + break + } + } + readBuf = append(readBuf, buf...) + buf = buf[0:0] + } + + n2, err := Write(outfd, readBuf) + if err != nil { + return -1, err + } + + //When sendfile() returns, this variable will be set to the + // offset of the byte following the last byte that was read. + if offset != nil { + *offset = *offset + int64(n) + // If offset is not NULL, then sendfile() does not modify the file + // offset of in_fd + _, err := Seek(infd, originalOffset, SEEK_SET) + if err != nil { + return -1, err + } + } + return n2, nil +} diff --git a/tests/vendor/golang.org/x/sys/unix/sysvshm_linux.go b/tests/vendor/golang.org/x/sys/unix/sysvshm_linux.go new file mode 100644 index 000000000..4fcd38de2 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/sysvshm_linux.go @@ -0,0 +1,20 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux + +package unix + +import "runtime" + +// SysvShmCtl performs control operations on the shared memory segment +// specified by id. +func SysvShmCtl(id, cmd int, desc *SysvShmDesc) (result int, err error) { + if runtime.GOARCH == "arm" || + runtime.GOARCH == "mips64" || runtime.GOARCH == "mips64le" { + cmd |= ipc_64 + } + + return shmctl(id, cmd, desc) +} diff --git a/tests/vendor/golang.org/x/sys/unix/sysvshm_unix.go b/tests/vendor/golang.org/x/sys/unix/sysvshm_unix.go new file mode 100644 index 000000000..672d6b0a8 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/sysvshm_unix.go @@ -0,0 +1,51 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (darwin && !ios) || linux || zos + +package unix + +import "unsafe" + +// SysvShmAttach attaches the Sysv shared memory segment associated with the +// shared memory identifier id. +func SysvShmAttach(id int, addr uintptr, flag int) ([]byte, error) { + addr, errno := shmat(id, addr, flag) + if errno != nil { + return nil, errno + } + + // Retrieve the size of the shared memory to enable slice creation + var info SysvShmDesc + + _, err := SysvShmCtl(id, IPC_STAT, &info) + if err != nil { + // release the shared memory if we can't find the size + + // ignoring error from shmdt as there's nothing sensible to return here + shmdt(addr) + return nil, err + } + + // Use unsafe to convert addr into a []byte. + b := unsafe.Slice((*byte)(unsafe.Pointer(addr)), int(info.Segsz)) + return b, nil +} + +// SysvShmDetach unmaps the shared memory slice returned from SysvShmAttach. +// +// It is not safe to use the slice after calling this function. +func SysvShmDetach(data []byte) error { + if len(data) == 0 { + return EINVAL + } + + return shmdt(uintptr(unsafe.Pointer(&data[0]))) +} + +// SysvShmGet returns the Sysv shared memory identifier associated with key. +// If the IPC_CREAT flag is specified a new segment is created. +func SysvShmGet(key, size, flag int) (id int, err error) { + return shmget(key, size, flag) +} diff --git a/tests/vendor/golang.org/x/sys/unix/sysvshm_unix_other.go b/tests/vendor/golang.org/x/sys/unix/sysvshm_unix_other.go new file mode 100644 index 000000000..8b7977a28 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/sysvshm_unix_other.go @@ -0,0 +1,13 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (darwin && !ios) || zos + +package unix + +// SysvShmCtl performs control operations on the shared memory segment +// specified by id. +func SysvShmCtl(id, cmd int, desc *SysvShmDesc) (result int, err error) { + return shmctl(id, cmd, desc) +} diff --git a/tests/vendor/golang.org/x/sys/unix/timestruct.go b/tests/vendor/golang.org/x/sys/unix/timestruct.go new file mode 100644 index 000000000..7997b1902 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/timestruct.go @@ -0,0 +1,76 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos + +package unix + +import "time" + +// TimespecToNsec returns the time stored in ts as nanoseconds. +func TimespecToNsec(ts Timespec) int64 { return ts.Nano() } + +// NsecToTimespec converts a number of nanoseconds into a Timespec. +func NsecToTimespec(nsec int64) Timespec { + sec := nsec / 1e9 + nsec = nsec % 1e9 + if nsec < 0 { + nsec += 1e9 + sec-- + } + return setTimespec(sec, nsec) +} + +// TimeToTimespec converts t into a Timespec. +// On some 32-bit systems the range of valid Timespec values are smaller +// than that of time.Time values. So if t is out of the valid range of +// Timespec, it returns a zero Timespec and ERANGE. +func TimeToTimespec(t time.Time) (Timespec, error) { + sec := t.Unix() + nsec := int64(t.Nanosecond()) + ts := setTimespec(sec, nsec) + + // Currently all targets have either int32 or int64 for Timespec.Sec. + // If there were a new target with floating point type for it, we have + // to consider the rounding error. + if int64(ts.Sec) != sec { + return Timespec{}, ERANGE + } + return ts, nil +} + +// TimevalToNsec returns the time stored in tv as nanoseconds. +func TimevalToNsec(tv Timeval) int64 { return tv.Nano() } + +// NsecToTimeval converts a number of nanoseconds into a Timeval. +func NsecToTimeval(nsec int64) Timeval { + nsec += 999 // round up to microsecond + usec := nsec % 1e9 / 1e3 + sec := nsec / 1e9 + if usec < 0 { + usec += 1e6 + sec-- + } + return setTimeval(sec, usec) +} + +// Unix returns the time stored in ts as seconds plus nanoseconds. +func (ts *Timespec) Unix() (sec int64, nsec int64) { + return int64(ts.Sec), int64(ts.Nsec) +} + +// Unix returns the time stored in tv as seconds plus nanoseconds. +func (tv *Timeval) Unix() (sec int64, nsec int64) { + return int64(tv.Sec), int64(tv.Usec) * 1000 +} + +// Nano returns the time stored in ts as nanoseconds. +func (ts *Timespec) Nano() int64 { + return int64(ts.Sec)*1e9 + int64(ts.Nsec) +} + +// Nano returns the time stored in tv as nanoseconds. +func (tv *Timeval) Nano() int64 { + return int64(tv.Sec)*1e9 + int64(tv.Usec)*1000 +} diff --git a/tests/vendor/golang.org/x/sys/unix/unveil_openbsd.go b/tests/vendor/golang.org/x/sys/unix/unveil_openbsd.go new file mode 100644 index 000000000..cb7e598ce --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/unveil_openbsd.go @@ -0,0 +1,51 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package unix + +import "fmt" + +// Unveil implements the unveil syscall. +// For more information see unveil(2). +// Note that the special case of blocking further +// unveil calls is handled by UnveilBlock. +func Unveil(path string, flags string) error { + if err := supportsUnveil(); err != nil { + return err + } + pathPtr, err := BytePtrFromString(path) + if err != nil { + return err + } + flagsPtr, err := BytePtrFromString(flags) + if err != nil { + return err + } + return unveil(pathPtr, flagsPtr) +} + +// UnveilBlock blocks future unveil calls. +// For more information see unveil(2). +func UnveilBlock() error { + if err := supportsUnveil(); err != nil { + return err + } + return unveil(nil, nil) +} + +// supportsUnveil checks for availability of the unveil(2) system call based +// on the running OpenBSD version. +func supportsUnveil() error { + maj, min, err := majmin() + if err != nil { + return err + } + + // unveil is not available before 6.4 + if maj < 6 || (maj == 6 && min <= 3) { + return fmt.Errorf("cannot call Unveil on OpenBSD %d.%d", maj, min) + } + + return nil +} diff --git a/tests/vendor/golang.org/x/sys/unix/vgetrandom_linux.go b/tests/vendor/golang.org/x/sys/unix/vgetrandom_linux.go new file mode 100644 index 000000000..07ac8e09d --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/vgetrandom_linux.go @@ -0,0 +1,13 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && go1.24 + +package unix + +import _ "unsafe" + +//go:linkname vgetrandom runtime.vgetrandom +//go:noescape +func vgetrandom(p []byte, flags uint32) (ret int, supported bool) diff --git a/tests/vendor/golang.org/x/sys/unix/vgetrandom_unsupported.go b/tests/vendor/golang.org/x/sys/unix/vgetrandom_unsupported.go new file mode 100644 index 000000000..297e97bce --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/vgetrandom_unsupported.go @@ -0,0 +1,11 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !linux || !go1.24 + +package unix + +func vgetrandom(p []byte, flags uint32) (ret int, supported bool) { + return -1, false +} diff --git a/tests/vendor/golang.org/x/sys/unix/xattr_bsd.go b/tests/vendor/golang.org/x/sys/unix/xattr_bsd.go new file mode 100644 index 000000000..e16879396 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/xattr_bsd.go @@ -0,0 +1,280 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build freebsd || netbsd + +package unix + +import ( + "strings" + "unsafe" +) + +// Derive extattr namespace and attribute name + +func xattrnamespace(fullattr string) (ns int, attr string, err error) { + s := strings.IndexByte(fullattr, '.') + if s == -1 { + return -1, "", ENOATTR + } + + namespace := fullattr[0:s] + attr = fullattr[s+1:] + + switch namespace { + case "user": + return EXTATTR_NAMESPACE_USER, attr, nil + case "system": + return EXTATTR_NAMESPACE_SYSTEM, attr, nil + default: + return -1, "", ENOATTR + } +} + +func initxattrdest(dest []byte, idx int) (d unsafe.Pointer) { + if len(dest) > idx { + return unsafe.Pointer(&dest[idx]) + } + if dest != nil { + // extattr_get_file and extattr_list_file treat NULL differently from + // a non-NULL pointer of length zero. Preserve the property of nilness, + // even if we can't use dest directly. + return unsafe.Pointer(&_zero) + } + return nil +} + +// FreeBSD and NetBSD implement their own syscalls to handle extended attributes + +func Getxattr(file string, attr string, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsize := len(dest) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return -1, err + } + + return ExtattrGetFile(file, nsid, a, uintptr(d), destsize) +} + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsize := len(dest) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return -1, err + } + + return ExtattrGetFd(fd, nsid, a, uintptr(d), destsize) +} + +func Lgetxattr(link string, attr string, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsize := len(dest) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return -1, err + } + + return ExtattrGetLink(link, nsid, a, uintptr(d), destsize) +} + +// flags are unused on FreeBSD + +func Fsetxattr(fd int, attr string, data []byte, flags int) (err error) { + var d unsafe.Pointer + if len(data) > 0 { + d = unsafe.Pointer(&data[0]) + } + datasiz := len(data) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + _, err = ExtattrSetFd(fd, nsid, a, uintptr(d), datasiz) + return +} + +func Setxattr(file string, attr string, data []byte, flags int) (err error) { + var d unsafe.Pointer + if len(data) > 0 { + d = unsafe.Pointer(&data[0]) + } + datasiz := len(data) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + _, err = ExtattrSetFile(file, nsid, a, uintptr(d), datasiz) + return +} + +func Lsetxattr(link string, attr string, data []byte, flags int) (err error) { + var d unsafe.Pointer + if len(data) > 0 { + d = unsafe.Pointer(&data[0]) + } + datasiz := len(data) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + _, err = ExtattrSetLink(link, nsid, a, uintptr(d), datasiz) + return +} + +func Removexattr(file string, attr string) (err error) { + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + err = ExtattrDeleteFile(file, nsid, a) + return +} + +func Fremovexattr(fd int, attr string) (err error) { + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + err = ExtattrDeleteFd(fd, nsid, a) + return +} + +func Lremovexattr(link string, attr string) (err error) { + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + err = ExtattrDeleteLink(link, nsid, a) + return +} + +func Listxattr(file string, dest []byte) (sz int, err error) { + destsiz := len(dest) + + // FreeBSD won't allow you to list xattrs from multiple namespaces + s, pos := 0, 0 + for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { + stmp, e := ListxattrNS(file, nsid, dest[pos:]) + + /* Errors accessing system attrs are ignored so that + * we can implement the Linux-like behavior of omitting errors that + * we don't have read permissions on + * + * Linux will still error if we ask for user attributes on a file that + * we don't have read permissions on, so don't ignore those errors + */ + if e != nil { + if e == EPERM && nsid != EXTATTR_NAMESPACE_USER { + continue + } + return s, e + } + + s += stmp + pos = s + if pos > destsiz { + pos = destsiz + } + } + + return s, nil +} + +func ListxattrNS(file string, nsid int, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsiz := len(dest) + + s, e := ExtattrListFile(file, nsid, uintptr(d), destsiz) + if e != nil { + return 0, err + } + + return s, nil +} + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + destsiz := len(dest) + + s, pos := 0, 0 + for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { + stmp, e := FlistxattrNS(fd, nsid, dest[pos:]) + + if e != nil { + if e == EPERM && nsid != EXTATTR_NAMESPACE_USER { + continue + } + return s, e + } + + s += stmp + pos = s + if pos > destsiz { + pos = destsiz + } + } + + return s, nil +} + +func FlistxattrNS(fd int, nsid int, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsiz := len(dest) + + s, e := ExtattrListFd(fd, nsid, uintptr(d), destsiz) + if e != nil { + return 0, err + } + + return s, nil +} + +func Llistxattr(link string, dest []byte) (sz int, err error) { + destsiz := len(dest) + + s, pos := 0, 0 + for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { + stmp, e := LlistxattrNS(link, nsid, dest[pos:]) + + if e != nil { + if e == EPERM && nsid != EXTATTR_NAMESPACE_USER { + continue + } + return s, e + } + + s += stmp + pos = s + if pos > destsiz { + pos = destsiz + } + } + + return s, nil +} + +func LlistxattrNS(link string, nsid int, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsiz := len(dest) + + s, e := ExtattrListLink(link, nsid, uintptr(d), destsiz) + if e != nil { + return 0, err + } + + return s, nil +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go b/tests/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go new file mode 100644 index 000000000..2fb219d78 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go @@ -0,0 +1,1384 @@ +// mkerrors.sh -maix32 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc && aix + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -maix32 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BYPASS = 0x19 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_INTF = 0x14 + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x1e + AF_NDD = 0x17 + AF_NETWARE = 0x16 + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_RIF = 0x15 + AF_ROUTE = 0x11 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x400000 + ARPHRD_802_3 = 0x6 + ARPHRD_802_5 = 0x6 + ARPHRD_ETHER = 0x1 + ARPHRD_FDDI = 0x1 + B0 = 0x0 + B110 = 0x3 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2400 = 0xb + B300 = 0x7 + B38400 = 0xf + B4800 = 0xc + B50 = 0x1 + B600 = 0x8 + B75 = 0x2 + B9600 = 0xd + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x1000 + BSDLY = 0x1000 + CAP_AACCT = 0x6 + CAP_ARM_APPLICATION = 0x5 + CAP_BYPASS_RAC_VMM = 0x3 + CAP_CLEAR = 0x0 + CAP_CREDENTIALS = 0x7 + CAP_EFFECTIVE = 0x1 + CAP_EWLM_AGENT = 0x4 + CAP_INHERITABLE = 0x2 + CAP_MAXIMUM = 0x7 + CAP_NUMA_ATTACH = 0x2 + CAP_PERMITTED = 0x3 + CAP_PROPAGATE = 0x1 + CAP_PROPOGATE = 0x1 + CAP_SET = 0x1 + CBAUD = 0xf + CFLUSH = 0xf + CIBAUD = 0xf0000 + CLOCAL = 0x800 + CLOCK_MONOTONIC = 0xa + CLOCK_PROCESS_CPUTIME_ID = 0xb + CLOCK_REALTIME = 0x9 + CLOCK_THREAD_CPUTIME_ID = 0xc + CR0 = 0x0 + CR1 = 0x100 + CR2 = 0x200 + CR3 = 0x300 + CRDLY = 0x300 + CREAD = 0x80 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIOCGIFCONF = -0x3ff796dc + CSIZE = 0x30 + CSMAP_DIR = "/usr/lib/nls/csmap/" + CSTART = '\021' + CSTOP = '\023' + CSTOPB = 0x40 + CSUSP = 0x1a + ECHO = 0x8 + ECHOCTL = 0x20000 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x80000 + ECHONL = 0x40 + ECHOPRT = 0x40000 + ECH_ICMPID = 0x2 + ETHERNET_CSMACD = 0x6 + EVENP = 0x80 + EXCONTINUE = 0x0 + EXDLOK = 0x3 + EXIO = 0x2 + EXPGIO = 0x0 + EXRESUME = 0x2 + EXRETURN = 0x1 + EXSIG = 0x4 + EXTA = 0xe + EXTB = 0xf + EXTRAP = 0x1 + EYEC_RTENTRYA = 0x257274656e747241 + EYEC_RTENTRYF = 0x257274656e747246 + E_ACC = 0x0 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0xfffe + FF0 = 0x0 + FF1 = 0x2000 + FFDLY = 0x2000 + FLUSHBAND = 0x40 + FLUSHLOW = 0x8 + FLUSHO = 0x100000 + FLUSHR = 0x1 + FLUSHRW = 0x3 + FLUSHW = 0x2 + F_CLOSEM = 0xa + F_DUP2FD = 0xe + F_DUPFD = 0x0 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x5 + F_GETLK64 = 0xb + F_GETOWN = 0x8 + F_LOCK = 0x1 + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x6 + F_SETLK64 = 0xc + F_SETLKW = 0x7 + F_SETLKW64 = 0xd + F_SETOWN = 0x9 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_TSTLK = 0xf + F_ULOCK = 0x0 + F_UNLCK = 0x3 + F_WRLCK = 0x2 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMP6_FILTER = 0x26 + ICMP6_SEC_SEND_DEL = 0x46 + ICMP6_SEC_SEND_GET = 0x47 + ICMP6_SEC_SEND_SET = 0x44 + ICMP6_SEC_SEND_SET_CGA_ADDR = 0x45 + ICRNL = 0x100 + IEXTEN = 0x200000 + IFA_FIRSTALIAS = 0x2000 + IFA_ROUTE = 0x1 + IFF_64BIT = 0x4000000 + IFF_ALLCAST = 0x20000 + IFF_ALLMULTI = 0x200 + IFF_BPF = 0x8000000 + IFF_BRIDGE = 0x40000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x80c52 + IFF_CHECKSUM_OFFLOAD = 0x10000000 + IFF_D1 = 0x8000 + IFF_D2 = 0x4000 + IFF_D3 = 0x2000 + IFF_D4 = 0x1000 + IFF_DEBUG = 0x4 + IFF_DEVHEALTH = 0x4000 + IFF_DO_HW_LOOPBACK = 0x10000 + IFF_GROUP_ROUTING = 0x2000000 + IFF_IFBUFMGT = 0x800000 + IFF_LINK0 = 0x100000 + IFF_LINK1 = 0x200000 + IFF_LINK2 = 0x400000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x80000 + IFF_NOARP = 0x80 + IFF_NOECHO = 0x800 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_PSEG = 0x40000000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_SNAP = 0x8000 + IFF_TCP_DISABLE_CKSUM = 0x20000000 + IFF_TCP_NOCKSUM = 0x1000000 + IFF_UP = 0x1 + IFF_VIPA = 0x80000000 + IFNAMSIZ = 0x10 + IFO_FLUSH = 0x1 + IFT_1822 = 0x2 + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_CEPT = 0x13 + IFT_CLUSTER = 0x3e + IFT_DS3 = 0x1e + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FCS = 0x3a + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_GIFTUNNEL = 0x3c + IFT_HDH1822 = 0x3 + IFT_HF = 0x3d + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IB = 0xc7 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SN = 0x38 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SP = 0x39 + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TUNNEL = 0x3b + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_VIPA = 0x37 + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x10000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_USE = 0x1 + IPPROTO_AH = 0x33 + IPPROTO_BIP = 0x53 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GIF = 0x8c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_LOCAL = 0x3f + IPPROTO_MAX = 0x100 + IPPROTO_MH = 0x87 + IPPROTO_NONE = 0x3b + IPPROTO_PUP = 0xc + IPPROTO_QOS = 0x2d + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPV6_ADDRFORM = 0x16 + IPV6_ADDR_PREFERENCES = 0x4a + IPV6_ADD_MEMBERSHIP = 0xc + IPV6_AIXRAWSOCKET = 0x39 + IPV6_CHECKSUM = 0x27 + IPV6_DONTFRAG = 0x2d + IPV6_DROP_MEMBERSHIP = 0xd + IPV6_DSTOPTS = 0x36 + IPV6_FLOWINFO_FLOWLABEL = 0xffffff + IPV6_FLOWINFO_PRIFLOW = 0xfffffff + IPV6_FLOWINFO_PRIORITY = 0xf000000 + IPV6_FLOWINFO_SRFLAG = 0x10000000 + IPV6_FLOWINFO_VERSION = 0xf0000000 + IPV6_HOPLIMIT = 0x28 + IPV6_HOPOPTS = 0x34 + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MIPDSTOPTS = 0x36 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_NOPROBE = 0x1c + IPV6_PATHMTU = 0x2e + IPV6_PKTINFO = 0x21 + IPV6_PKTOPTIONS = 0x24 + IPV6_PRIORITY_10 = 0xa000000 + IPV6_PRIORITY_11 = 0xb000000 + IPV6_PRIORITY_12 = 0xc000000 + IPV6_PRIORITY_13 = 0xd000000 + IPV6_PRIORITY_14 = 0xe000000 + IPV6_PRIORITY_15 = 0xf000000 + IPV6_PRIORITY_8 = 0x8000000 + IPV6_PRIORITY_9 = 0x9000000 + IPV6_PRIORITY_BULK = 0x4000000 + IPV6_PRIORITY_CONTROL = 0x7000000 + IPV6_PRIORITY_FILLER = 0x1000000 + IPV6_PRIORITY_INTERACTIVE = 0x6000000 + IPV6_PRIORITY_RESERVED1 = 0x3000000 + IPV6_PRIORITY_RESERVED2 = 0x5000000 + IPV6_PRIORITY_UNATTENDED = 0x2000000 + IPV6_PRIORITY_UNCHARACTERIZED = 0x0 + IPV6_RECVDSTOPTS = 0x38 + IPV6_RECVHOPLIMIT = 0x29 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVHOPS = 0x22 + IPV6_RECVIF = 0x1e + IPV6_RECVPATHMTU = 0x2f + IPV6_RECVPKTINFO = 0x23 + IPV6_RECVRTHDR = 0x33 + IPV6_RECVSRCRT = 0x1d + IPV6_RECVTCLASS = 0x2a + IPV6_RTHDR = 0x32 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RTHDR_TYPE_2 = 0x2 + IPV6_SENDIF = 0x1f + IPV6_SRFLAG_LOOSE = 0x0 + IPV6_SRFLAG_STRICT = 0x10000000 + IPV6_TCLASS = 0x2b + IPV6_TOKEN_LENGTH = 0x40 + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2c + IPV6_V6ONLY = 0x25 + IPV6_VERSION = 0x60000000 + IP_ADDRFORM = 0x16 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x3c + IP_BLOCK_SOURCE = 0x3a + IP_BROADCAST_IF = 0x10 + IP_CACHE_LINE_SIZE = 0x80 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DHCPMODE = 0x11 + IP_DONTFRAG = 0x19 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x3d + IP_FINDPMTU = 0x1a + IP_HDRINCL = 0x2 + IP_INC_MEMBERSHIPS = 0x14 + IP_INIT_MEMBERSHIP = 0x14 + IP_MAXPACKET = 0xffff + IP_MF = 0x2000 + IP_MSS = 0x240 + IP_MULTICAST_HOPS = 0xa + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OPT = 0x1b + IP_OPTIONS = 0x1 + IP_PMTUAGE = 0x1b + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVIFINFO = 0xf + IP_RECVINTERFACE = 0x20 + IP_RECVMACHDR = 0xe + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x22 + IP_RETOPTS = 0x8 + IP_SOURCE_FILTER = 0x48 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x3b + IP_UNICAST_HOPS = 0x4 + ISIG = 0x1 + ISTRIP = 0x20 + IUCLC = 0x800 + IXANY = 0x1000 + IXOFF = 0x400 + IXON = 0x200 + I_FLUSH = 0x20005305 + LNOFLSH = 0x8000 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x10 + MAP_ANONYMOUS = 0x10 + MAP_FILE = 0x0 + MAP_FIXED = 0x100 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_TYPE = 0xf0 + MAP_VARIABLE = 0x0 + MCAST_BLOCK_SOURCE = 0x40 + MCAST_EXCLUDE = 0x2 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x3e + MCAST_JOIN_SOURCE_GROUP = 0x42 + MCAST_LEAVE_GROUP = 0x3f + MCAST_LEAVE_SOURCE_GROUP = 0x43 + MCAST_SOURCE_FILTER = 0x49 + MCAST_UNBLOCK_SOURCE = 0x41 + MCL_CURRENT = 0x100 + MCL_FUTURE = 0x200 + MSG_ANY = 0x4 + MSG_ARGEXT = 0x400 + MSG_BAND = 0x2 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_EOR = 0x8 + MSG_HIPRI = 0x1 + MSG_MAXIOVLEN = 0x10 + MSG_MPEG2 = 0x80 + MSG_NONBLOCK = 0x4000 + MSG_NOSIGNAL = 0x100 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x200 + MS_ASYNC = 0x10 + MS_EINTR = 0x80 + MS_INVALIDATE = 0x40 + MS_PER_SEC = 0x3e8 + MS_SYNC = 0x20 + NFDBITS = 0x20 + NL0 = 0x0 + NL1 = 0x4000 + NL2 = 0x8000 + NL3 = 0xc000 + NLDLY = 0x4000 + NOFLSH = 0x80 + NOFLUSH = 0x80000000 + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + ONOEOT = 0x80000 + OPOST = 0x1 + OXTABS = 0x40000 + O_ACCMODE = 0x23 + O_APPEND = 0x8 + O_CIO = 0x80 + O_CIOR = 0x800000000 + O_CLOEXEC = 0x800000 + O_CREAT = 0x100 + O_DEFER = 0x2000 + O_DELAY = 0x4000 + O_DIRECT = 0x8000000 + O_DIRECTORY = 0x80000 + O_DSYNC = 0x400000 + O_EFSOFF = 0x400000000 + O_EFSON = 0x200000000 + O_EXCL = 0x400 + O_EXEC = 0x20 + O_LARGEFILE = 0x4000000 + O_NDELAY = 0x8000 + O_NOCACHE = 0x100000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x1000000 + O_NONBLOCK = 0x4 + O_NONE = 0x3 + O_NSHARE = 0x10000 + O_RAW = 0x100000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSHARE = 0x1000 + O_RSYNC = 0x200000 + O_SEARCH = 0x20 + O_SNAPSHOT = 0x40 + O_SYNC = 0x10 + O_TRUNC = 0x200 + O_TTY_INIT = 0x0 + O_WRONLY = 0x1 + PARENB = 0x100 + PAREXT = 0x100000 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_64BIT = 0x20 + PR_ADDR = 0x2 + PR_ARGEXT = 0x400 + PR_ATOMIC = 0x1 + PR_CONNREQUIRED = 0x4 + PR_FASTHZ = 0x5 + PR_INP = 0x40 + PR_INTRLEVEL = 0x8000 + PR_MLS = 0x100 + PR_MLS_1_LABEL = 0x200 + PR_NOEOR = 0x4000 + PR_RIGHTS = 0x10 + PR_SLOWHZ = 0x2 + PR_WANTRCVD = 0x8 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x9 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DOWNSTREAM = 0x100 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTC_IA64 = 0x3 + RTC_POWER = 0x1 + RTC_POWER_PC = 0x2 + RTF_ACTIVE_DGD = 0x1000000 + RTF_BCE = 0x80000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_BUL = 0x2000 + RTF_CLONE = 0x10000 + RTF_CLONED = 0x20000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FREE_IN_PROG = 0x4000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PERMANENT6 = 0x8000000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_SMALLMTU = 0x40000 + RTF_STATIC = 0x800 + RTF_STOPSRCH = 0x2000000 + RTF_UNREACHABLE = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_EXPIRE = 0xf + RTM_GET = 0x4 + RTM_GETNEXT = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTLOST = 0x10 + RTM_RTTUNIT = 0xf4240 + RTM_SAMEADDR = 0x12 + RTM_SET = 0x13 + RTM_VERSION = 0x2 + RTM_VERSION_GR = 0x4 + RTM_VERSION_GR_COMPAT = 0x3 + RTM_VERSION_POLICY = 0x5 + RTM_VERSION_POLICY_EXT = 0x6 + RTM_VERSION_POLICY_PRFN = 0x7 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIGMAX64 = 0xff + SIGQUEUE_MAX = 0x20 + SIOCADDIFVIPA = 0x20006942 + SIOCADDMTU = -0x7ffb9690 + SIOCADDMULTI = -0x7fdf96cf + SIOCADDNETID = -0x7fd796a9 + SIOCADDRT = -0x7fcf8df6 + SIOCAIFADDR = -0x7fbf96e6 + SIOCATMARK = 0x40047307 + SIOCDARP = -0x7fb396e0 + SIOCDELIFVIPA = 0x20006943 + SIOCDELMTU = -0x7ffb968f + SIOCDELMULTI = -0x7fdf96ce + SIOCDELPMTU = -0x7fd78ff6 + SIOCDELRT = -0x7fcf8df5 + SIOCDIFADDR = -0x7fd796e7 + SIOCDNETOPT = -0x3ffe9680 + SIOCDX25XLATE = -0x7fd7969b + SIOCFIFADDR = -0x7fdf966d + SIOCGARP = -0x3fb396da + SIOCGETMTUS = 0x2000696f + SIOCGETSGCNT = -0x3feb8acc + SIOCGETVIFCNT = -0x3feb8acd + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = -0x3fd796df + SIOCGIFADDRS = 0x2000698c + SIOCGIFBAUDRATE = -0x3fdf9669 + SIOCGIFBRDADDR = -0x3fd796dd + SIOCGIFCONF = -0x3ff796bb + SIOCGIFCONFGLOB = -0x3ff79670 + SIOCGIFDSTADDR = -0x3fd796de + SIOCGIFFLAGS = -0x3fd796ef + SIOCGIFGIDLIST = 0x20006968 + SIOCGIFHWADDR = -0x3fab966b + SIOCGIFMETRIC = -0x3fd796e9 + SIOCGIFMTU = -0x3fd796aa + SIOCGIFNETMASK = -0x3fd796db + SIOCGIFOPTIONS = -0x3fd796d6 + SIOCGISNO = -0x3fd79695 + SIOCGLOADF = -0x3ffb967e + SIOCGLOWAT = 0x40047303 + SIOCGNETOPT = -0x3ffe96a5 + SIOCGNETOPT1 = -0x3fdf967f + SIOCGNMTUS = 0x2000696e + SIOCGPGRP = 0x40047309 + SIOCGSIZIFCONF = 0x4004696a + SIOCGSRCFILTER = -0x3fe796cb + SIOCGTUNEPHASE = -0x3ffb9676 + SIOCGX25XLATE = -0x3fd7969c + SIOCIFATTACH = -0x7fdf9699 + SIOCIFDETACH = -0x7fdf969a + SIOCIFGETPKEY = -0x7fdf969b + SIOCIF_ATM_DARP = -0x7fdf9683 + SIOCIF_ATM_DUMPARP = -0x7fdf9685 + SIOCIF_ATM_GARP = -0x7fdf9682 + SIOCIF_ATM_IDLE = -0x7fdf9686 + SIOCIF_ATM_SARP = -0x7fdf9681 + SIOCIF_ATM_SNMPARP = -0x7fdf9687 + SIOCIF_ATM_SVC = -0x7fdf9684 + SIOCIF_ATM_UBR = -0x7fdf9688 + SIOCIF_DEVHEALTH = -0x7ffb966c + SIOCIF_IB_ARP_INCOMP = -0x7fdf9677 + SIOCIF_IB_ARP_TIMER = -0x7fdf9678 + SIOCIF_IB_CLEAR_PINFO = -0x3fdf966f + SIOCIF_IB_DEL_ARP = -0x7fdf967f + SIOCIF_IB_DEL_PINFO = -0x3fdf9670 + SIOCIF_IB_DUMP_ARP = -0x7fdf9680 + SIOCIF_IB_GET_ARP = -0x7fdf967e + SIOCIF_IB_GET_INFO = -0x3f879675 + SIOCIF_IB_GET_STATS = -0x3f879672 + SIOCIF_IB_NOTIFY_ADDR_REM = -0x3f87966a + SIOCIF_IB_RESET_STATS = -0x3f879671 + SIOCIF_IB_RESIZE_CQ = -0x7fdf9679 + SIOCIF_IB_SET_ARP = -0x7fdf967d + SIOCIF_IB_SET_PKEY = -0x7fdf967c + SIOCIF_IB_SET_PORT = -0x7fdf967b + SIOCIF_IB_SET_QKEY = -0x7fdf9676 + SIOCIF_IB_SET_QSIZE = -0x7fdf967a + SIOCLISTIFVIPA = 0x20006944 + SIOCSARP = -0x7fb396e2 + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = -0x7fd796f4 + SIOCSIFADDRORI = -0x7fdb9673 + SIOCSIFBRDADDR = -0x7fd796ed + SIOCSIFDSTADDR = -0x7fd796f2 + SIOCSIFFLAGS = -0x7fd796f0 + SIOCSIFGIDLIST = 0x20006969 + SIOCSIFMETRIC = -0x7fd796e8 + SIOCSIFMTU = -0x7fd796a8 + SIOCSIFNETDUMP = -0x7fd796e4 + SIOCSIFNETMASK = -0x7fd796ea + SIOCSIFOPTIONS = -0x7fd796d7 + SIOCSIFSUBCHAN = -0x7fd796e5 + SIOCSISNO = -0x7fd79694 + SIOCSLOADF = -0x3ffb967d + SIOCSLOWAT = 0x80047302 + SIOCSNETOPT = -0x7ffe96a6 + SIOCSPGRP = 0x80047308 + SIOCSX25XLATE = -0x7fd7969d + SOCK_CONN_DGRAM = 0x6 + SOCK_DGRAM = 0x2 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x400 + SO_ACCEPTCONN = 0x2 + SO_AUDIT = 0x8000 + SO_BROADCAST = 0x20 + SO_CKSUMRECV = 0x800 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_KERNACCEPT = 0x2000 + SO_LINGER = 0x80 + SO_NOMULTIPATH = 0x4000 + SO_NOREUSEADDR = 0x1000 + SO_OOBINLINE = 0x100 + SO_PEERID = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMPNS = 0x100a + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USE_IFBUFS = 0x400 + S_BANDURG = 0x400 + S_EMODFMT = 0x3c000000 + S_ENFMT = 0x400 + S_ERROR = 0x100 + S_HANGUP = 0x200 + S_HIPRI = 0x2 + S_ICRYPTO = 0x80000 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFJOURNAL = 0x10000 + S_IFLNK = 0xa000 + S_IFMPX = 0x2200 + S_IFMT = 0xf000 + S_IFPDIR = 0x4000000 + S_IFPSDIR = 0x8000000 + S_IFPSSDIR = 0xc000000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFSYSEA = 0x30000000 + S_INPUT = 0x1 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_ITCB = 0x1000000 + S_ITP = 0x800000 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXACL = 0x2000000 + S_IXATTR = 0x40000 + S_IXGRP = 0x8 + S_IXINTERFACE = 0x100000 + S_IXMOD = 0x40000000 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + S_MSG = 0x8 + S_OUTPUT = 0x4 + S_RDBAND = 0x20 + S_RDNORM = 0x10 + S_RESERVED1 = 0x20000 + S_RESERVED2 = 0x200000 + S_RESERVED3 = 0x400000 + S_RESERVED4 = 0x80000000 + S_RESFMT1 = 0x10000000 + S_RESFMT10 = 0x34000000 + S_RESFMT11 = 0x38000000 + S_RESFMT12 = 0x3c000000 + S_RESFMT2 = 0x14000000 + S_RESFMT3 = 0x18000000 + S_RESFMT4 = 0x1c000000 + S_RESFMT5 = 0x20000000 + S_RESFMT6 = 0x24000000 + S_RESFMT7 = 0x28000000 + S_RESFMT8 = 0x2c000000 + S_WRBAND = 0x80 + S_WRNORM = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0xc00 + TABDLY = 0xc00 + TCFLSH = 0x540c + TCGETA = 0x5405 + TCGETS = 0x5401 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_24DAYS_WORTH_OF_SLOWTICKS = 0x3f4800 + TCP_ACLADD = 0x23 + TCP_ACLBIND = 0x26 + TCP_ACLCLEAR = 0x22 + TCP_ACLDEL = 0x24 + TCP_ACLDENY = 0x8 + TCP_ACLFLUSH = 0x21 + TCP_ACLGID = 0x1 + TCP_ACLLS = 0x25 + TCP_ACLSUBNET = 0x4 + TCP_ACLUID = 0x2 + TCP_CWND_DF = 0x16 + TCP_CWND_IF = 0x15 + TCP_DELAY_ACK_FIN = 0x2 + TCP_DELAY_ACK_SYN = 0x1 + TCP_FASTNAME = 0x101080a + TCP_KEEPCNT = 0x13 + TCP_KEEPIDLE = 0x11 + TCP_KEEPINTVL = 0x12 + TCP_LSPRIV = 0x29 + TCP_LUID = 0x20 + TCP_MAXBURST = 0x8 + TCP_MAXDF = 0x64 + TCP_MAXIF = 0x64 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAXWINDOWSCALE = 0xe + TCP_MAX_SACK = 0x4 + TCP_MSS = 0x5b4 + TCP_NODELAY = 0x1 + TCP_NODELAYACK = 0x14 + TCP_NOREDUCE_CWND_EXIT_FRXMT = 0x19 + TCP_NOREDUCE_CWND_IN_FRXMT = 0x18 + TCP_NOTENTER_SSTART = 0x17 + TCP_OPT = 0x19 + TCP_RFC1323 = 0x4 + TCP_SETPRIV = 0x27 + TCP_STDURG = 0x10 + TCP_TIMESTAMP_OPTLEN = 0xc + TCP_UNSETPRIV = 0x28 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETSF = 0x5404 + TCSETSW = 0x5403 + TCXONC = 0x540b + TIMER_ABSTIME = 0x3e7 + TIMER_MAX = 0x20 + TIOC = 0x5400 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCEXCL = 0x2000740d + TIOCFLUSH = 0x80047410 + TIOCGETC = 0x40067412 + TIOCGETD = 0x40047400 + TIOCGETP = 0x40067408 + TIOCGLTC = 0x40067474 + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047448 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCHPCL = 0x20007402 + TIOCLBIC = 0x8004747e + TIOCLBIS = 0x8004747f + TIOCLGET = 0x4004747c + TIOCLSET = 0x8004747d + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMIWAIT = 0x80047464 + TIOCMODG = 0x40047403 + TIOCMODS = 0x80047404 + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSDTR = 0x20007479 + TIOCSETC = 0x80067411 + TIOCSETD = 0x80047401 + TIOCSETN = 0x8006740a + TIOCSETP = 0x80067409 + TIOCSLTC = 0x80067475 + TIOCSPGRP = 0x80047476 + TIOCSSIZE = 0x80087467 + TIOCSTART = 0x2000746e + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x10000 + UTIME_NOW = -0x2 + UTIME_OMIT = -0x3 + VDISCRD = 0xc + VDSUSP = 0xa + VEOF = 0x4 + VEOL = 0x5 + VEOL2 = 0x6 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xe + VMIN = 0x4 + VQUIT = 0x1 + VREPRINT = 0xb + VSTART = 0x7 + VSTOP = 0x8 + VSTRT = 0x7 + VSUSP = 0x9 + VT0 = 0x0 + VT1 = 0x8000 + VTDELAY = 0x2000 + VTDLY = 0x8000 + VTIME = 0x5 + VWERSE = 0xd + WPARSTART = 0x1 + WPARSTOP = 0x2 + WPARTTYNAME = "Global" + XCASE = 0x4 + XTABS = 0xc00 + _FDATAFLUSH = 0x2000000000 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x43) + EADDRNOTAVAIL = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x42) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x38) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x78) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x75) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x25) + ECLONEME = syscall.Errno(0x52) + ECONNABORTED = syscall.Errno(0x48) + ECONNREFUSED = syscall.Errno(0x4f) + ECONNRESET = syscall.Errno(0x49) + ECORRUPT = syscall.Errno(0x59) + EDEADLK = syscall.Errno(0x2d) + EDESTADDREQ = syscall.Errno(0x3a) + EDESTADDRREQ = syscall.Errno(0x3a) + EDIST = syscall.Errno(0x35) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x58) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFORMAT = syscall.Errno(0x30) + EHOSTDOWN = syscall.Errno(0x50) + EHOSTUNREACH = syscall.Errno(0x51) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x74) + EINPROGRESS = syscall.Errno(0x37) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x4b) + EISDIR = syscall.Errno(0x15) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x55) + EMEDIA = syscall.Errno(0x6e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x3b) + EMULTIHOP = syscall.Errno(0x7d) + ENAMETOOLONG = syscall.Errno(0x56) + ENETDOWN = syscall.Errno(0x45) + ENETRESET = syscall.Errno(0x47) + ENETUNREACH = syscall.Errno(0x46) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x70) + ENOBUFS = syscall.Errno(0x4a) + ENOCONNECT = syscall.Errno(0x32) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x7a) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x31) + ENOLINK = syscall.Errno(0x7e) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x23) + ENOPROTOOPT = syscall.Errno(0x3d) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x76) + ENOSTR = syscall.Errno(0x7b) + ENOSYS = syscall.Errno(0x6d) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x4c) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x11) + ENOTREADY = syscall.Errno(0x2e) + ENOTRECOVERABLE = syscall.Errno(0x5e) + ENOTRUST = syscall.Errno(0x72) + ENOTSOCK = syscall.Errno(0x39) + ENOTSUP = syscall.Errno(0x7c) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x40) + EOVERFLOW = syscall.Errno(0x7f) + EOWNERDEAD = syscall.Errno(0x5f) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x41) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x53) + EPROTO = syscall.Errno(0x79) + EPROTONOSUPPORT = syscall.Errno(0x3e) + EPROTOTYPE = syscall.Errno(0x3c) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x5d) + ERESTART = syscall.Errno(0x52) + EROFS = syscall.Errno(0x1e) + ESAD = syscall.Errno(0x71) + ESHUTDOWN = syscall.Errno(0x4d) + ESOCKTNOSUPPORT = syscall.Errno(0x3f) + ESOFT = syscall.Errno(0x6f) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x34) + ESYSERROR = syscall.Errno(0x5a) + ETIME = syscall.Errno(0x77) + ETIMEDOUT = syscall.Errno(0x4e) + ETOOMANYREFS = syscall.Errno(0x73) + ETXTBSY = syscall.Errno(0x1a) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x54) + EWOULDBLOCK = syscall.Errno(0xb) + EWRPROTECT = syscall.Errno(0x2f) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGAIO = syscall.Signal(0x17) + SIGALRM = syscall.Signal(0xe) + SIGALRM1 = syscall.Signal(0x26) + SIGBUS = syscall.Signal(0xa) + SIGCAPI = syscall.Signal(0x31) + SIGCHLD = syscall.Signal(0x14) + SIGCLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGCPUFAIL = syscall.Signal(0x3b) + SIGDANGER = syscall.Signal(0x21) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGGRANT = syscall.Signal(0x3c) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOINT = syscall.Signal(0x10) + SIGIOT = syscall.Signal(0x6) + SIGKAP = syscall.Signal(0x3c) + SIGKILL = syscall.Signal(0x9) + SIGLOST = syscall.Signal(0x6) + SIGMAX = syscall.Signal(0x3f) + SIGMAX32 = syscall.Signal(0x3f) + SIGMIGRATE = syscall.Signal(0x23) + SIGMSG = syscall.Signal(0x1b) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x17) + SIGPRE = syscall.Signal(0x24) + SIGPROF = syscall.Signal(0x20) + SIGPTY = syscall.Signal(0x17) + SIGPWR = syscall.Signal(0x1d) + SIGQUIT = syscall.Signal(0x3) + SIGRECONFIG = syscall.Signal(0x3a) + SIGRETRACT = syscall.Signal(0x3d) + SIGSAK = syscall.Signal(0x3f) + SIGSEGV = syscall.Signal(0xb) + SIGSOUND = syscall.Signal(0x3e) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGSYSERROR = syscall.Signal(0x30) + SIGTALRM = syscall.Signal(0x26) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVIRT = syscall.Signal(0x25) + SIGVTALRM = syscall.Signal(0x22) + SIGWAITING = syscall.Signal(0x27) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "not owner"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "I/O error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "arg list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file number"}, + {10, "ECHILD", "no child processes"}, + {11, "EWOULDBLOCK", "resource temporarily unavailable"}, + {12, "ENOMEM", "not enough space"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "ENOTEMPTY", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "file table overflow"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "not a typewriter"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "deadlock condition if locked"}, + {46, "ENOTREADY", "device not ready"}, + {47, "EWRPROTECT", "write-protected media"}, + {48, "EFORMAT", "unformatted or incompatible media"}, + {49, "ENOLCK", "no locks available"}, + {50, "ENOCONNECT", "cannot Establish Connection"}, + {52, "ESTALE", "missing file or filesystem"}, + {53, "EDIST", "requests blocked by Administrator"}, + {55, "EINPROGRESS", "operation now in progress"}, + {56, "EALREADY", "operation already in progress"}, + {57, "ENOTSOCK", "socket operation on non-socket"}, + {58, "EDESTADDREQ", "destination address required"}, + {59, "EMSGSIZE", "message too long"}, + {60, "EPROTOTYPE", "protocol wrong type for socket"}, + {61, "ENOPROTOOPT", "protocol not available"}, + {62, "EPROTONOSUPPORT", "protocol not supported"}, + {63, "ESOCKTNOSUPPORT", "socket type not supported"}, + {64, "EOPNOTSUPP", "operation not supported on socket"}, + {65, "EPFNOSUPPORT", "protocol family not supported"}, + {66, "EAFNOSUPPORT", "addr family not supported by protocol"}, + {67, "EADDRINUSE", "address already in use"}, + {68, "EADDRNOTAVAIL", "can't assign requested address"}, + {69, "ENETDOWN", "network is down"}, + {70, "ENETUNREACH", "network is unreachable"}, + {71, "ENETRESET", "network dropped connection on reset"}, + {72, "ECONNABORTED", "software caused connection abort"}, + {73, "ECONNRESET", "connection reset by peer"}, + {74, "ENOBUFS", "no buffer space available"}, + {75, "EISCONN", "socket is already connected"}, + {76, "ENOTCONN", "socket is not connected"}, + {77, "ESHUTDOWN", "can't send after socket shutdown"}, + {78, "ETIMEDOUT", "connection timed out"}, + {79, "ECONNREFUSED", "connection refused"}, + {80, "EHOSTDOWN", "host is down"}, + {81, "EHOSTUNREACH", "no route to host"}, + {82, "ERESTART", "restart the system call"}, + {83, "EPROCLIM", "too many processes"}, + {84, "EUSERS", "too many users"}, + {85, "ELOOP", "too many levels of symbolic links"}, + {86, "ENAMETOOLONG", "file name too long"}, + {88, "EDQUOT", "disk quota exceeded"}, + {89, "ECORRUPT", "invalid file system control data detected"}, + {90, "ESYSERROR", "for future use "}, + {93, "EREMOTE", "item is not local to host"}, + {94, "ENOTRECOVERABLE", "state not recoverable "}, + {95, "EOWNERDEAD", "previous owner died "}, + {109, "ENOSYS", "function not implemented"}, + {110, "EMEDIA", "media surface error"}, + {111, "ESOFT", "I/O completed, but needs relocation"}, + {112, "ENOATTR", "no attribute found"}, + {113, "ESAD", "security Authentication Denied"}, + {114, "ENOTRUST", "not a Trusted Program"}, + {115, "ETOOMANYREFS", "too many references: can't splice"}, + {116, "EILSEQ", "invalid wide character"}, + {117, "ECANCELED", "asynchronous I/O cancelled"}, + {118, "ENOSR", "out of STREAMS resources"}, + {119, "ETIME", "system call timed out"}, + {120, "EBADMSG", "next message has wrong type"}, + {121, "EPROTO", "error in protocol"}, + {122, "ENODATA", "no message on stream head read q"}, + {123, "ENOSTR", "fd not associated with a stream"}, + {124, "ENOTSUP", "unsupported attribute value"}, + {125, "EMULTIHOP", "multihop is not allowed"}, + {126, "ENOLINK", "the server link has been severed"}, + {127, "EOVERFLOW", "value too large to be stored in data type"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "IOT/Abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible/complete"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {27, "SIGMSG", "input device data"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGPWR", "power-failure"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPROF", "profiling timer expired"}, + {33, "SIGDANGER", "paging space low"}, + {34, "SIGVTALRM", "virtual timer expired"}, + {35, "SIGMIGRATE", "signal 35"}, + {36, "SIGPRE", "signal 36"}, + {37, "SIGVIRT", "signal 37"}, + {38, "SIGTALRM", "signal 38"}, + {39, "SIGWAITING", "signal 39"}, + {48, "SIGSYSERROR", "signal 48"}, + {49, "SIGCAPI", "signal 49"}, + {58, "SIGRECONFIG", "signal 58"}, + {59, "SIGCPUFAIL", "CPU Failure Predicted"}, + {60, "SIGKAP", "monitor mode granted"}, + {61, "SIGRETRACT", "monitor mode retracted"}, + {62, "SIGSOUND", "sound completed"}, + {63, "SIGSAK", "secure attention"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go b/tests/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go new file mode 100644 index 000000000..b0e6f5c85 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go @@ -0,0 +1,1385 @@ +// mkerrors.sh -maix64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc64 && aix + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -maix64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BYPASS = 0x19 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_INTF = 0x14 + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x1e + AF_NDD = 0x17 + AF_NETWARE = 0x16 + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_RIF = 0x15 + AF_ROUTE = 0x11 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x400000 + ARPHRD_802_3 = 0x6 + ARPHRD_802_5 = 0x6 + ARPHRD_ETHER = 0x1 + ARPHRD_FDDI = 0x1 + B0 = 0x0 + B110 = 0x3 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2400 = 0xb + B300 = 0x7 + B38400 = 0xf + B4800 = 0xc + B50 = 0x1 + B600 = 0x8 + B75 = 0x2 + B9600 = 0xd + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x1000 + BSDLY = 0x1000 + CAP_AACCT = 0x6 + CAP_ARM_APPLICATION = 0x5 + CAP_BYPASS_RAC_VMM = 0x3 + CAP_CLEAR = 0x0 + CAP_CREDENTIALS = 0x7 + CAP_EFFECTIVE = 0x1 + CAP_EWLM_AGENT = 0x4 + CAP_INHERITABLE = 0x2 + CAP_MAXIMUM = 0x7 + CAP_NUMA_ATTACH = 0x2 + CAP_PERMITTED = 0x3 + CAP_PROPAGATE = 0x1 + CAP_PROPOGATE = 0x1 + CAP_SET = 0x1 + CBAUD = 0xf + CFLUSH = 0xf + CIBAUD = 0xf0000 + CLOCAL = 0x800 + CLOCK_MONOTONIC = 0xa + CLOCK_PROCESS_CPUTIME_ID = 0xb + CLOCK_REALTIME = 0x9 + CLOCK_THREAD_CPUTIME_ID = 0xc + CR0 = 0x0 + CR1 = 0x100 + CR2 = 0x200 + CR3 = 0x300 + CRDLY = 0x300 + CREAD = 0x80 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIOCGIFCONF = -0x3fef96dc + CSIZE = 0x30 + CSMAP_DIR = "/usr/lib/nls/csmap/" + CSTART = '\021' + CSTOP = '\023' + CSTOPB = 0x40 + CSUSP = 0x1a + ECHO = 0x8 + ECHOCTL = 0x20000 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x80000 + ECHONL = 0x40 + ECHOPRT = 0x40000 + ECH_ICMPID = 0x2 + ETHERNET_CSMACD = 0x6 + EVENP = 0x80 + EXCONTINUE = 0x0 + EXDLOK = 0x3 + EXIO = 0x2 + EXPGIO = 0x0 + EXRESUME = 0x2 + EXRETURN = 0x1 + EXSIG = 0x4 + EXTA = 0xe + EXTB = 0xf + EXTRAP = 0x1 + EYEC_RTENTRYA = 0x257274656e747241 + EYEC_RTENTRYF = 0x257274656e747246 + E_ACC = 0x0 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0xfffe + FF0 = 0x0 + FF1 = 0x2000 + FFDLY = 0x2000 + FLUSHBAND = 0x40 + FLUSHLOW = 0x8 + FLUSHO = 0x100000 + FLUSHR = 0x1 + FLUSHRW = 0x3 + FLUSHW = 0x2 + F_CLOSEM = 0xa + F_DUP2FD = 0xe + F_DUPFD = 0x0 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xb + F_GETLK64 = 0xb + F_GETOWN = 0x8 + F_LOCK = 0x1 + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0xc + F_SETLK64 = 0xc + F_SETLKW = 0xd + F_SETLKW64 = 0xd + F_SETOWN = 0x9 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_TSTLK = 0xf + F_ULOCK = 0x0 + F_UNLCK = 0x3 + F_WRLCK = 0x2 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMP6_FILTER = 0x26 + ICMP6_SEC_SEND_DEL = 0x46 + ICMP6_SEC_SEND_GET = 0x47 + ICMP6_SEC_SEND_SET = 0x44 + ICMP6_SEC_SEND_SET_CGA_ADDR = 0x45 + ICRNL = 0x100 + IEXTEN = 0x200000 + IFA_FIRSTALIAS = 0x2000 + IFA_ROUTE = 0x1 + IFF_64BIT = 0x4000000 + IFF_ALLCAST = 0x20000 + IFF_ALLMULTI = 0x200 + IFF_BPF = 0x8000000 + IFF_BRIDGE = 0x40000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x80c52 + IFF_CHECKSUM_OFFLOAD = 0x10000000 + IFF_D1 = 0x8000 + IFF_D2 = 0x4000 + IFF_D3 = 0x2000 + IFF_D4 = 0x1000 + IFF_DEBUG = 0x4 + IFF_DEVHEALTH = 0x4000 + IFF_DO_HW_LOOPBACK = 0x10000 + IFF_GROUP_ROUTING = 0x2000000 + IFF_IFBUFMGT = 0x800000 + IFF_LINK0 = 0x100000 + IFF_LINK1 = 0x200000 + IFF_LINK2 = 0x400000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x80000 + IFF_NOARP = 0x80 + IFF_NOECHO = 0x800 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_PSEG = 0x40000000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_SNAP = 0x8000 + IFF_TCP_DISABLE_CKSUM = 0x20000000 + IFF_TCP_NOCKSUM = 0x1000000 + IFF_UP = 0x1 + IFF_VIPA = 0x80000000 + IFNAMSIZ = 0x10 + IFO_FLUSH = 0x1 + IFT_1822 = 0x2 + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_CEPT = 0x13 + IFT_CLUSTER = 0x3e + IFT_DS3 = 0x1e + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FCS = 0x3a + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_GIFTUNNEL = 0x3c + IFT_HDH1822 = 0x3 + IFT_HF = 0x3d + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IB = 0xc7 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SN = 0x38 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SP = 0x39 + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TUNNEL = 0x3b + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_VIPA = 0x37 + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x10000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_USE = 0x1 + IPPROTO_AH = 0x33 + IPPROTO_BIP = 0x53 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GIF = 0x8c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_LOCAL = 0x3f + IPPROTO_MAX = 0x100 + IPPROTO_MH = 0x87 + IPPROTO_NONE = 0x3b + IPPROTO_PUP = 0xc + IPPROTO_QOS = 0x2d + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPV6_ADDRFORM = 0x16 + IPV6_ADDR_PREFERENCES = 0x4a + IPV6_ADD_MEMBERSHIP = 0xc + IPV6_AIXRAWSOCKET = 0x39 + IPV6_CHECKSUM = 0x27 + IPV6_DONTFRAG = 0x2d + IPV6_DROP_MEMBERSHIP = 0xd + IPV6_DSTOPTS = 0x36 + IPV6_FLOWINFO_FLOWLABEL = 0xffffff + IPV6_FLOWINFO_PRIFLOW = 0xfffffff + IPV6_FLOWINFO_PRIORITY = 0xf000000 + IPV6_FLOWINFO_SRFLAG = 0x10000000 + IPV6_FLOWINFO_VERSION = 0xf0000000 + IPV6_HOPLIMIT = 0x28 + IPV6_HOPOPTS = 0x34 + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MIPDSTOPTS = 0x36 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_NOPROBE = 0x1c + IPV6_PATHMTU = 0x2e + IPV6_PKTINFO = 0x21 + IPV6_PKTOPTIONS = 0x24 + IPV6_PRIORITY_10 = 0xa000000 + IPV6_PRIORITY_11 = 0xb000000 + IPV6_PRIORITY_12 = 0xc000000 + IPV6_PRIORITY_13 = 0xd000000 + IPV6_PRIORITY_14 = 0xe000000 + IPV6_PRIORITY_15 = 0xf000000 + IPV6_PRIORITY_8 = 0x8000000 + IPV6_PRIORITY_9 = 0x9000000 + IPV6_PRIORITY_BULK = 0x4000000 + IPV6_PRIORITY_CONTROL = 0x7000000 + IPV6_PRIORITY_FILLER = 0x1000000 + IPV6_PRIORITY_INTERACTIVE = 0x6000000 + IPV6_PRIORITY_RESERVED1 = 0x3000000 + IPV6_PRIORITY_RESERVED2 = 0x5000000 + IPV6_PRIORITY_UNATTENDED = 0x2000000 + IPV6_PRIORITY_UNCHARACTERIZED = 0x0 + IPV6_RECVDSTOPTS = 0x38 + IPV6_RECVHOPLIMIT = 0x29 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVHOPS = 0x22 + IPV6_RECVIF = 0x1e + IPV6_RECVPATHMTU = 0x2f + IPV6_RECVPKTINFO = 0x23 + IPV6_RECVRTHDR = 0x33 + IPV6_RECVSRCRT = 0x1d + IPV6_RECVTCLASS = 0x2a + IPV6_RTHDR = 0x32 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RTHDR_TYPE_2 = 0x2 + IPV6_SENDIF = 0x1f + IPV6_SRFLAG_LOOSE = 0x0 + IPV6_SRFLAG_STRICT = 0x10000000 + IPV6_TCLASS = 0x2b + IPV6_TOKEN_LENGTH = 0x40 + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2c + IPV6_V6ONLY = 0x25 + IPV6_VERSION = 0x60000000 + IP_ADDRFORM = 0x16 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x3c + IP_BLOCK_SOURCE = 0x3a + IP_BROADCAST_IF = 0x10 + IP_CACHE_LINE_SIZE = 0x80 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DHCPMODE = 0x11 + IP_DONTFRAG = 0x19 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x3d + IP_FINDPMTU = 0x1a + IP_HDRINCL = 0x2 + IP_INC_MEMBERSHIPS = 0x14 + IP_INIT_MEMBERSHIP = 0x14 + IP_MAXPACKET = 0xffff + IP_MF = 0x2000 + IP_MSS = 0x240 + IP_MULTICAST_HOPS = 0xa + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OPT = 0x1b + IP_OPTIONS = 0x1 + IP_PMTUAGE = 0x1b + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVIFINFO = 0xf + IP_RECVINTERFACE = 0x20 + IP_RECVMACHDR = 0xe + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x22 + IP_RETOPTS = 0x8 + IP_SOURCE_FILTER = 0x48 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x3b + IP_UNICAST_HOPS = 0x4 + ISIG = 0x1 + ISTRIP = 0x20 + IUCLC = 0x800 + IXANY = 0x1000 + IXOFF = 0x400 + IXON = 0x200 + I_FLUSH = 0x20005305 + LNOFLSH = 0x8000 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x10 + MAP_ANONYMOUS = 0x10 + MAP_FILE = 0x0 + MAP_FIXED = 0x100 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_TYPE = 0xf0 + MAP_VARIABLE = 0x0 + MCAST_BLOCK_SOURCE = 0x40 + MCAST_EXCLUDE = 0x2 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x3e + MCAST_JOIN_SOURCE_GROUP = 0x42 + MCAST_LEAVE_GROUP = 0x3f + MCAST_LEAVE_SOURCE_GROUP = 0x43 + MCAST_SOURCE_FILTER = 0x49 + MCAST_UNBLOCK_SOURCE = 0x41 + MCL_CURRENT = 0x100 + MCL_FUTURE = 0x200 + MSG_ANY = 0x4 + MSG_ARGEXT = 0x400 + MSG_BAND = 0x2 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_EOR = 0x8 + MSG_HIPRI = 0x1 + MSG_MAXIOVLEN = 0x10 + MSG_MPEG2 = 0x80 + MSG_NONBLOCK = 0x4000 + MSG_NOSIGNAL = 0x100 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x200 + MS_ASYNC = 0x10 + MS_EINTR = 0x80 + MS_INVALIDATE = 0x40 + MS_PER_SEC = 0x3e8 + MS_SYNC = 0x20 + NFDBITS = 0x40 + NL0 = 0x0 + NL1 = 0x4000 + NL2 = 0x8000 + NL3 = 0xc000 + NLDLY = 0x4000 + NOFLSH = 0x80 + NOFLUSH = 0x80000000 + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + ONOEOT = 0x80000 + OPOST = 0x1 + OXTABS = 0x40000 + O_ACCMODE = 0x23 + O_APPEND = 0x8 + O_CIO = 0x80 + O_CIOR = 0x800000000 + O_CLOEXEC = 0x800000 + O_CREAT = 0x100 + O_DEFER = 0x2000 + O_DELAY = 0x4000 + O_DIRECT = 0x8000000 + O_DIRECTORY = 0x80000 + O_DSYNC = 0x400000 + O_EFSOFF = 0x400000000 + O_EFSON = 0x200000000 + O_EXCL = 0x400 + O_EXEC = 0x20 + O_LARGEFILE = 0x4000000 + O_NDELAY = 0x8000 + O_NOCACHE = 0x100000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x1000000 + O_NONBLOCK = 0x4 + O_NONE = 0x3 + O_NSHARE = 0x10000 + O_RAW = 0x100000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSHARE = 0x1000 + O_RSYNC = 0x200000 + O_SEARCH = 0x20 + O_SNAPSHOT = 0x40 + O_SYNC = 0x10 + O_TRUNC = 0x200 + O_TTY_INIT = 0x0 + O_WRONLY = 0x1 + PARENB = 0x100 + PAREXT = 0x100000 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_64BIT = 0x20 + PR_ADDR = 0x2 + PR_ARGEXT = 0x400 + PR_ATOMIC = 0x1 + PR_CONNREQUIRED = 0x4 + PR_FASTHZ = 0x5 + PR_INP = 0x40 + PR_INTRLEVEL = 0x8000 + PR_MLS = 0x100 + PR_MLS_1_LABEL = 0x200 + PR_NOEOR = 0x4000 + PR_RIGHTS = 0x10 + PR_SLOWHZ = 0x2 + PR_WANTRCVD = 0x8 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x9 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DOWNSTREAM = 0x100 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTC_IA64 = 0x3 + RTC_POWER = 0x1 + RTC_POWER_PC = 0x2 + RTF_ACTIVE_DGD = 0x1000000 + RTF_BCE = 0x80000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_BUL = 0x2000 + RTF_CLONE = 0x10000 + RTF_CLONED = 0x20000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FREE_IN_PROG = 0x4000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PERMANENT6 = 0x8000000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_SMALLMTU = 0x40000 + RTF_STATIC = 0x800 + RTF_STOPSRCH = 0x2000000 + RTF_UNREACHABLE = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_EXPIRE = 0xf + RTM_GET = 0x4 + RTM_GETNEXT = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTLOST = 0x10 + RTM_RTTUNIT = 0xf4240 + RTM_SAMEADDR = 0x12 + RTM_SET = 0x13 + RTM_VERSION = 0x2 + RTM_VERSION_GR = 0x4 + RTM_VERSION_GR_COMPAT = 0x3 + RTM_VERSION_POLICY = 0x5 + RTM_VERSION_POLICY_EXT = 0x6 + RTM_VERSION_POLICY_PRFN = 0x7 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIGMAX64 = 0xff + SIGQUEUE_MAX = 0x20 + SIOCADDIFVIPA = 0x20006942 + SIOCADDMTU = -0x7ffb9690 + SIOCADDMULTI = -0x7fdf96cf + SIOCADDNETID = -0x7fd796a9 + SIOCADDRT = -0x7fc78df6 + SIOCAIFADDR = -0x7fbf96e6 + SIOCATMARK = 0x40047307 + SIOCDARP = -0x7fb396e0 + SIOCDELIFVIPA = 0x20006943 + SIOCDELMTU = -0x7ffb968f + SIOCDELMULTI = -0x7fdf96ce + SIOCDELPMTU = -0x7fd78ff6 + SIOCDELRT = -0x7fc78df5 + SIOCDIFADDR = -0x7fd796e7 + SIOCDNETOPT = -0x3ffe9680 + SIOCDX25XLATE = -0x7fd7969b + SIOCFIFADDR = -0x7fdf966d + SIOCGARP = -0x3fb396da + SIOCGETMTUS = 0x2000696f + SIOCGETSGCNT = -0x3feb8acc + SIOCGETVIFCNT = -0x3feb8acd + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = -0x3fd796df + SIOCGIFADDRS = 0x2000698c + SIOCGIFBAUDRATE = -0x3fdf9669 + SIOCGIFBRDADDR = -0x3fd796dd + SIOCGIFCONF = -0x3fef96bb + SIOCGIFCONFGLOB = -0x3fef9670 + SIOCGIFDSTADDR = -0x3fd796de + SIOCGIFFLAGS = -0x3fd796ef + SIOCGIFGIDLIST = 0x20006968 + SIOCGIFHWADDR = -0x3fab966b + SIOCGIFMETRIC = -0x3fd796e9 + SIOCGIFMTU = -0x3fd796aa + SIOCGIFNETMASK = -0x3fd796db + SIOCGIFOPTIONS = -0x3fd796d6 + SIOCGISNO = -0x3fd79695 + SIOCGLOADF = -0x3ffb967e + SIOCGLOWAT = 0x40047303 + SIOCGNETOPT = -0x3ffe96a5 + SIOCGNETOPT1 = -0x3fdf967f + SIOCGNMTUS = 0x2000696e + SIOCGPGRP = 0x40047309 + SIOCGSIZIFCONF = 0x4004696a + SIOCGSRCFILTER = -0x3fe796cb + SIOCGTUNEPHASE = -0x3ffb9676 + SIOCGX25XLATE = -0x3fd7969c + SIOCIFATTACH = -0x7fdf9699 + SIOCIFDETACH = -0x7fdf969a + SIOCIFGETPKEY = -0x7fdf969b + SIOCIF_ATM_DARP = -0x7fdf9683 + SIOCIF_ATM_DUMPARP = -0x7fdf9685 + SIOCIF_ATM_GARP = -0x7fdf9682 + SIOCIF_ATM_IDLE = -0x7fdf9686 + SIOCIF_ATM_SARP = -0x7fdf9681 + SIOCIF_ATM_SNMPARP = -0x7fdf9687 + SIOCIF_ATM_SVC = -0x7fdf9684 + SIOCIF_ATM_UBR = -0x7fdf9688 + SIOCIF_DEVHEALTH = -0x7ffb966c + SIOCIF_IB_ARP_INCOMP = -0x7fdf9677 + SIOCIF_IB_ARP_TIMER = -0x7fdf9678 + SIOCIF_IB_CLEAR_PINFO = -0x3fdf966f + SIOCIF_IB_DEL_ARP = -0x7fdf967f + SIOCIF_IB_DEL_PINFO = -0x3fdf9670 + SIOCIF_IB_DUMP_ARP = -0x7fdf9680 + SIOCIF_IB_GET_ARP = -0x7fdf967e + SIOCIF_IB_GET_INFO = -0x3f879675 + SIOCIF_IB_GET_STATS = -0x3f879672 + SIOCIF_IB_NOTIFY_ADDR_REM = -0x3f87966a + SIOCIF_IB_RESET_STATS = -0x3f879671 + SIOCIF_IB_RESIZE_CQ = -0x7fdf9679 + SIOCIF_IB_SET_ARP = -0x7fdf967d + SIOCIF_IB_SET_PKEY = -0x7fdf967c + SIOCIF_IB_SET_PORT = -0x7fdf967b + SIOCIF_IB_SET_QKEY = -0x7fdf9676 + SIOCIF_IB_SET_QSIZE = -0x7fdf967a + SIOCLISTIFVIPA = 0x20006944 + SIOCSARP = -0x7fb396e2 + SIOCSHIWAT = 0xffffffff80047300 + SIOCSIFADDR = -0x7fd796f4 + SIOCSIFADDRORI = -0x7fdb9673 + SIOCSIFBRDADDR = -0x7fd796ed + SIOCSIFDSTADDR = -0x7fd796f2 + SIOCSIFFLAGS = -0x7fd796f0 + SIOCSIFGIDLIST = 0x20006969 + SIOCSIFMETRIC = -0x7fd796e8 + SIOCSIFMTU = -0x7fd796a8 + SIOCSIFNETDUMP = -0x7fd796e4 + SIOCSIFNETMASK = -0x7fd796ea + SIOCSIFOPTIONS = -0x7fd796d7 + SIOCSIFSUBCHAN = -0x7fd796e5 + SIOCSISNO = -0x7fd79694 + SIOCSLOADF = -0x3ffb967d + SIOCSLOWAT = 0xffffffff80047302 + SIOCSNETOPT = -0x7ffe96a6 + SIOCSPGRP = 0xffffffff80047308 + SIOCSX25XLATE = -0x7fd7969d + SOCK_CONN_DGRAM = 0x6 + SOCK_DGRAM = 0x2 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x400 + SO_ACCEPTCONN = 0x2 + SO_AUDIT = 0x8000 + SO_BROADCAST = 0x20 + SO_CKSUMRECV = 0x800 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_KERNACCEPT = 0x2000 + SO_LINGER = 0x80 + SO_NOMULTIPATH = 0x4000 + SO_NOREUSEADDR = 0x1000 + SO_OOBINLINE = 0x100 + SO_PEERID = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMPNS = 0x100a + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USE_IFBUFS = 0x400 + S_BANDURG = 0x400 + S_EMODFMT = 0x3c000000 + S_ENFMT = 0x400 + S_ERROR = 0x100 + S_HANGUP = 0x200 + S_HIPRI = 0x2 + S_ICRYPTO = 0x80000 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFJOURNAL = 0x10000 + S_IFLNK = 0xa000 + S_IFMPX = 0x2200 + S_IFMT = 0xf000 + S_IFPDIR = 0x4000000 + S_IFPSDIR = 0x8000000 + S_IFPSSDIR = 0xc000000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFSYSEA = 0x30000000 + S_INPUT = 0x1 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_ITCB = 0x1000000 + S_ITP = 0x800000 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXACL = 0x2000000 + S_IXATTR = 0x40000 + S_IXGRP = 0x8 + S_IXINTERFACE = 0x100000 + S_IXMOD = 0x40000000 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + S_MSG = 0x8 + S_OUTPUT = 0x4 + S_RDBAND = 0x20 + S_RDNORM = 0x10 + S_RESERVED1 = 0x20000 + S_RESERVED2 = 0x200000 + S_RESERVED3 = 0x400000 + S_RESERVED4 = 0x80000000 + S_RESFMT1 = 0x10000000 + S_RESFMT10 = 0x34000000 + S_RESFMT11 = 0x38000000 + S_RESFMT12 = 0x3c000000 + S_RESFMT2 = 0x14000000 + S_RESFMT3 = 0x18000000 + S_RESFMT4 = 0x1c000000 + S_RESFMT5 = 0x20000000 + S_RESFMT6 = 0x24000000 + S_RESFMT7 = 0x28000000 + S_RESFMT8 = 0x2c000000 + S_WRBAND = 0x80 + S_WRNORM = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0xc00 + TABDLY = 0xc00 + TCFLSH = 0x540c + TCGETA = 0x5405 + TCGETS = 0x5401 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_24DAYS_WORTH_OF_SLOWTICKS = 0x3f4800 + TCP_ACLADD = 0x23 + TCP_ACLBIND = 0x26 + TCP_ACLCLEAR = 0x22 + TCP_ACLDEL = 0x24 + TCP_ACLDENY = 0x8 + TCP_ACLFLUSH = 0x21 + TCP_ACLGID = 0x1 + TCP_ACLLS = 0x25 + TCP_ACLSUBNET = 0x4 + TCP_ACLUID = 0x2 + TCP_CWND_DF = 0x16 + TCP_CWND_IF = 0x15 + TCP_DELAY_ACK_FIN = 0x2 + TCP_DELAY_ACK_SYN = 0x1 + TCP_FASTNAME = 0x101080a + TCP_KEEPCNT = 0x13 + TCP_KEEPIDLE = 0x11 + TCP_KEEPINTVL = 0x12 + TCP_LSPRIV = 0x29 + TCP_LUID = 0x20 + TCP_MAXBURST = 0x8 + TCP_MAXDF = 0x64 + TCP_MAXIF = 0x64 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAXWINDOWSCALE = 0xe + TCP_MAX_SACK = 0x4 + TCP_MSS = 0x5b4 + TCP_NODELAY = 0x1 + TCP_NODELAYACK = 0x14 + TCP_NOREDUCE_CWND_EXIT_FRXMT = 0x19 + TCP_NOREDUCE_CWND_IN_FRXMT = 0x18 + TCP_NOTENTER_SSTART = 0x17 + TCP_OPT = 0x19 + TCP_RFC1323 = 0x4 + TCP_SETPRIV = 0x27 + TCP_STDURG = 0x10 + TCP_TIMESTAMP_OPTLEN = 0xc + TCP_UNSETPRIV = 0x28 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETSF = 0x5404 + TCSETSW = 0x5403 + TCXONC = 0x540b + TIMER_ABSTIME = 0x3e7 + TIMER_MAX = 0x20 + TIOC = 0x5400 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0xffffffff80047462 + TIOCEXCL = 0x2000740d + TIOCFLUSH = 0xffffffff80047410 + TIOCGETC = 0x40067412 + TIOCGETD = 0x40047400 + TIOCGETP = 0x40067408 + TIOCGLTC = 0x40067474 + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047448 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCHPCL = 0x20007402 + TIOCLBIC = 0xffffffff8004747e + TIOCLBIS = 0xffffffff8004747f + TIOCLGET = 0x4004747c + TIOCLSET = 0xffffffff8004747d + TIOCMBIC = 0xffffffff8004746b + TIOCMBIS = 0xffffffff8004746c + TIOCMGET = 0x4004746a + TIOCMIWAIT = 0xffffffff80047464 + TIOCMODG = 0x40047403 + TIOCMODS = 0xffffffff80047404 + TIOCMSET = 0xffffffff8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0xffffffff80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0xffffffff80047469 + TIOCSBRK = 0x2000747b + TIOCSDTR = 0x20007479 + TIOCSETC = 0xffffffff80067411 + TIOCSETD = 0xffffffff80047401 + TIOCSETN = 0xffffffff8006740a + TIOCSETP = 0xffffffff80067409 + TIOCSLTC = 0xffffffff80067475 + TIOCSPGRP = 0xffffffff80047476 + TIOCSSIZE = 0xffffffff80087467 + TIOCSTART = 0x2000746e + TIOCSTI = 0xffffffff80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0xffffffff80087467 + TIOCUCNTL = 0xffffffff80047466 + TOSTOP = 0x10000 + UTIME_NOW = -0x2 + UTIME_OMIT = -0x3 + VDISCRD = 0xc + VDSUSP = 0xa + VEOF = 0x4 + VEOL = 0x5 + VEOL2 = 0x6 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xe + VMIN = 0x4 + VQUIT = 0x1 + VREPRINT = 0xb + VSTART = 0x7 + VSTOP = 0x8 + VSTRT = 0x7 + VSUSP = 0x9 + VT0 = 0x0 + VT1 = 0x8000 + VTDELAY = 0x2000 + VTDLY = 0x8000 + VTIME = 0x5 + VWERSE = 0xd + WPARSTART = 0x1 + WPARSTOP = 0x2 + WPARTTYNAME = "Global" + XCASE = 0x4 + XTABS = 0xc00 + _FDATAFLUSH = 0x2000000000 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x43) + EADDRNOTAVAIL = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x42) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x38) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x78) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x75) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x25) + ECLONEME = syscall.Errno(0x52) + ECONNABORTED = syscall.Errno(0x48) + ECONNREFUSED = syscall.Errno(0x4f) + ECONNRESET = syscall.Errno(0x49) + ECORRUPT = syscall.Errno(0x59) + EDEADLK = syscall.Errno(0x2d) + EDESTADDREQ = syscall.Errno(0x3a) + EDESTADDRREQ = syscall.Errno(0x3a) + EDIST = syscall.Errno(0x35) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x58) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFORMAT = syscall.Errno(0x30) + EHOSTDOWN = syscall.Errno(0x50) + EHOSTUNREACH = syscall.Errno(0x51) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x74) + EINPROGRESS = syscall.Errno(0x37) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x4b) + EISDIR = syscall.Errno(0x15) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x55) + EMEDIA = syscall.Errno(0x6e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x3b) + EMULTIHOP = syscall.Errno(0x7d) + ENAMETOOLONG = syscall.Errno(0x56) + ENETDOWN = syscall.Errno(0x45) + ENETRESET = syscall.Errno(0x47) + ENETUNREACH = syscall.Errno(0x46) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x70) + ENOBUFS = syscall.Errno(0x4a) + ENOCONNECT = syscall.Errno(0x32) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x7a) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x31) + ENOLINK = syscall.Errno(0x7e) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x23) + ENOPROTOOPT = syscall.Errno(0x3d) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x76) + ENOSTR = syscall.Errno(0x7b) + ENOSYS = syscall.Errno(0x6d) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x4c) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x11) + ENOTREADY = syscall.Errno(0x2e) + ENOTRECOVERABLE = syscall.Errno(0x5e) + ENOTRUST = syscall.Errno(0x72) + ENOTSOCK = syscall.Errno(0x39) + ENOTSUP = syscall.Errno(0x7c) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x40) + EOVERFLOW = syscall.Errno(0x7f) + EOWNERDEAD = syscall.Errno(0x5f) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x41) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x53) + EPROTO = syscall.Errno(0x79) + EPROTONOSUPPORT = syscall.Errno(0x3e) + EPROTOTYPE = syscall.Errno(0x3c) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x5d) + ERESTART = syscall.Errno(0x52) + EROFS = syscall.Errno(0x1e) + ESAD = syscall.Errno(0x71) + ESHUTDOWN = syscall.Errno(0x4d) + ESOCKTNOSUPPORT = syscall.Errno(0x3f) + ESOFT = syscall.Errno(0x6f) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x34) + ESYSERROR = syscall.Errno(0x5a) + ETIME = syscall.Errno(0x77) + ETIMEDOUT = syscall.Errno(0x4e) + ETOOMANYREFS = syscall.Errno(0x73) + ETXTBSY = syscall.Errno(0x1a) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x54) + EWOULDBLOCK = syscall.Errno(0xb) + EWRPROTECT = syscall.Errno(0x2f) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGAIO = syscall.Signal(0x17) + SIGALRM = syscall.Signal(0xe) + SIGALRM1 = syscall.Signal(0x26) + SIGBUS = syscall.Signal(0xa) + SIGCAPI = syscall.Signal(0x31) + SIGCHLD = syscall.Signal(0x14) + SIGCLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGCPUFAIL = syscall.Signal(0x3b) + SIGDANGER = syscall.Signal(0x21) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGGRANT = syscall.Signal(0x3c) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOINT = syscall.Signal(0x10) + SIGIOT = syscall.Signal(0x6) + SIGKAP = syscall.Signal(0x3c) + SIGKILL = syscall.Signal(0x9) + SIGLOST = syscall.Signal(0x6) + SIGMAX = syscall.Signal(0xff) + SIGMAX32 = syscall.Signal(0x3f) + SIGMIGRATE = syscall.Signal(0x23) + SIGMSG = syscall.Signal(0x1b) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x17) + SIGPRE = syscall.Signal(0x24) + SIGPROF = syscall.Signal(0x20) + SIGPTY = syscall.Signal(0x17) + SIGPWR = syscall.Signal(0x1d) + SIGQUIT = syscall.Signal(0x3) + SIGRECONFIG = syscall.Signal(0x3a) + SIGRETRACT = syscall.Signal(0x3d) + SIGSAK = syscall.Signal(0x3f) + SIGSEGV = syscall.Signal(0xb) + SIGSOUND = syscall.Signal(0x3e) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGSYSERROR = syscall.Signal(0x30) + SIGTALRM = syscall.Signal(0x26) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVIRT = syscall.Signal(0x25) + SIGVTALRM = syscall.Signal(0x22) + SIGWAITING = syscall.Signal(0x27) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "not owner"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "I/O error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "arg list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file number"}, + {10, "ECHILD", "no child processes"}, + {11, "EWOULDBLOCK", "resource temporarily unavailable"}, + {12, "ENOMEM", "not enough space"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "ENOTEMPTY", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "file table overflow"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "not a typewriter"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "deadlock condition if locked"}, + {46, "ENOTREADY", "device not ready"}, + {47, "EWRPROTECT", "write-protected media"}, + {48, "EFORMAT", "unformatted or incompatible media"}, + {49, "ENOLCK", "no locks available"}, + {50, "ENOCONNECT", "cannot Establish Connection"}, + {52, "ESTALE", "missing file or filesystem"}, + {53, "EDIST", "requests blocked by Administrator"}, + {55, "EINPROGRESS", "operation now in progress"}, + {56, "EALREADY", "operation already in progress"}, + {57, "ENOTSOCK", "socket operation on non-socket"}, + {58, "EDESTADDREQ", "destination address required"}, + {59, "EMSGSIZE", "message too long"}, + {60, "EPROTOTYPE", "protocol wrong type for socket"}, + {61, "ENOPROTOOPT", "protocol not available"}, + {62, "EPROTONOSUPPORT", "protocol not supported"}, + {63, "ESOCKTNOSUPPORT", "socket type not supported"}, + {64, "EOPNOTSUPP", "operation not supported on socket"}, + {65, "EPFNOSUPPORT", "protocol family not supported"}, + {66, "EAFNOSUPPORT", "addr family not supported by protocol"}, + {67, "EADDRINUSE", "address already in use"}, + {68, "EADDRNOTAVAIL", "can't assign requested address"}, + {69, "ENETDOWN", "network is down"}, + {70, "ENETUNREACH", "network is unreachable"}, + {71, "ENETRESET", "network dropped connection on reset"}, + {72, "ECONNABORTED", "software caused connection abort"}, + {73, "ECONNRESET", "connection reset by peer"}, + {74, "ENOBUFS", "no buffer space available"}, + {75, "EISCONN", "socket is already connected"}, + {76, "ENOTCONN", "socket is not connected"}, + {77, "ESHUTDOWN", "can't send after socket shutdown"}, + {78, "ETIMEDOUT", "connection timed out"}, + {79, "ECONNREFUSED", "connection refused"}, + {80, "EHOSTDOWN", "host is down"}, + {81, "EHOSTUNREACH", "no route to host"}, + {82, "ERESTART", "restart the system call"}, + {83, "EPROCLIM", "too many processes"}, + {84, "EUSERS", "too many users"}, + {85, "ELOOP", "too many levels of symbolic links"}, + {86, "ENAMETOOLONG", "file name too long"}, + {88, "EDQUOT", "disk quota exceeded"}, + {89, "ECORRUPT", "invalid file system control data detected"}, + {90, "ESYSERROR", "for future use "}, + {93, "EREMOTE", "item is not local to host"}, + {94, "ENOTRECOVERABLE", "state not recoverable "}, + {95, "EOWNERDEAD", "previous owner died "}, + {109, "ENOSYS", "function not implemented"}, + {110, "EMEDIA", "media surface error"}, + {111, "ESOFT", "I/O completed, but needs relocation"}, + {112, "ENOATTR", "no attribute found"}, + {113, "ESAD", "security Authentication Denied"}, + {114, "ENOTRUST", "not a Trusted Program"}, + {115, "ETOOMANYREFS", "too many references: can't splice"}, + {116, "EILSEQ", "invalid wide character"}, + {117, "ECANCELED", "asynchronous I/O cancelled"}, + {118, "ENOSR", "out of STREAMS resources"}, + {119, "ETIME", "system call timed out"}, + {120, "EBADMSG", "next message has wrong type"}, + {121, "EPROTO", "error in protocol"}, + {122, "ENODATA", "no message on stream head read q"}, + {123, "ENOSTR", "fd not associated with a stream"}, + {124, "ENOTSUP", "unsupported attribute value"}, + {125, "EMULTIHOP", "multihop is not allowed"}, + {126, "ENOLINK", "the server link has been severed"}, + {127, "EOVERFLOW", "value too large to be stored in data type"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "IOT/Abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible/complete"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {27, "SIGMSG", "input device data"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGPWR", "power-failure"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPROF", "profiling timer expired"}, + {33, "SIGDANGER", "paging space low"}, + {34, "SIGVTALRM", "virtual timer expired"}, + {35, "SIGMIGRATE", "signal 35"}, + {36, "SIGPRE", "signal 36"}, + {37, "SIGVIRT", "signal 37"}, + {38, "SIGTALRM", "signal 38"}, + {39, "SIGWAITING", "signal 39"}, + {48, "SIGSYSERROR", "signal 48"}, + {49, "SIGCAPI", "signal 49"}, + {58, "SIGRECONFIG", "signal 58"}, + {59, "SIGCPUFAIL", "CPU Failure Predicted"}, + {60, "SIGGRANT", "monitor mode granted"}, + {61, "SIGRETRACT", "monitor mode retracted"}, + {62, "SIGSOUND", "sound completed"}, + {63, "SIGMAX32", "secure attention"}, + {255, "SIGMAX", "signal 255"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go b/tests/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go new file mode 100644 index 000000000..d73c4652e --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go @@ -0,0 +1,1922 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && darwin + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1c + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1e + AF_IPX = 0x17 + AF_ISDN = 0x1c + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x29 + AF_NATM = 0x1f + AF_NDRV = 0x1b + AF_NETBIOS = 0x21 + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PPP = 0x22 + AF_PUP = 0x4 + AF_RESERVED_36 = 0x24 + AF_ROUTE = 0x11 + AF_SIP = 0x18 + AF_SNA = 0xb + AF_SYSTEM = 0x20 + AF_SYS_CONTROL = 0x2 + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_UTUN = 0x26 + AF_VSOCK = 0x28 + ALTWERASE = 0x200 + ATTR_BIT_MAP_COUNT = 0x5 + ATTR_CMN_ACCESSMASK = 0x20000 + ATTR_CMN_ACCTIME = 0x1000 + ATTR_CMN_ADDEDTIME = 0x10000000 + ATTR_CMN_BKUPTIME = 0x2000 + ATTR_CMN_CHGTIME = 0x800 + ATTR_CMN_CRTIME = 0x200 + ATTR_CMN_DATA_PROTECT_FLAGS = 0x40000000 + ATTR_CMN_DEVID = 0x2 + ATTR_CMN_DOCUMENT_ID = 0x100000 + ATTR_CMN_ERROR = 0x20000000 + ATTR_CMN_EXTENDED_SECURITY = 0x400000 + ATTR_CMN_FILEID = 0x2000000 + ATTR_CMN_FLAGS = 0x40000 + ATTR_CMN_FNDRINFO = 0x4000 + ATTR_CMN_FSID = 0x4 + ATTR_CMN_FULLPATH = 0x8000000 + ATTR_CMN_GEN_COUNT = 0x80000 + ATTR_CMN_GRPID = 0x10000 + ATTR_CMN_GRPUUID = 0x1000000 + ATTR_CMN_MODTIME = 0x400 + ATTR_CMN_NAME = 0x1 + ATTR_CMN_NAMEDATTRCOUNT = 0x80000 + ATTR_CMN_NAMEDATTRLIST = 0x100000 + ATTR_CMN_OBJID = 0x20 + ATTR_CMN_OBJPERMANENTID = 0x40 + ATTR_CMN_OBJTAG = 0x10 + ATTR_CMN_OBJTYPE = 0x8 + ATTR_CMN_OWNERID = 0x8000 + ATTR_CMN_PARENTID = 0x4000000 + ATTR_CMN_PAROBJID = 0x80 + ATTR_CMN_RETURNED_ATTRS = 0x80000000 + ATTR_CMN_SCRIPT = 0x100 + ATTR_CMN_SETMASK = 0x51c7ff00 + ATTR_CMN_USERACCESS = 0x200000 + ATTR_CMN_UUID = 0x800000 + ATTR_CMN_VALIDMASK = 0xffffffff + ATTR_CMN_VOLSETMASK = 0x6700 + ATTR_FILE_ALLOCSIZE = 0x4 + ATTR_FILE_CLUMPSIZE = 0x10 + ATTR_FILE_DATAALLOCSIZE = 0x400 + ATTR_FILE_DATAEXTENTS = 0x800 + ATTR_FILE_DATALENGTH = 0x200 + ATTR_FILE_DEVTYPE = 0x20 + ATTR_FILE_FILETYPE = 0x40 + ATTR_FILE_FORKCOUNT = 0x80 + ATTR_FILE_FORKLIST = 0x100 + ATTR_FILE_IOBLOCKSIZE = 0x8 + ATTR_FILE_LINKCOUNT = 0x1 + ATTR_FILE_RSRCALLOCSIZE = 0x2000 + ATTR_FILE_RSRCEXTENTS = 0x4000 + ATTR_FILE_RSRCLENGTH = 0x1000 + ATTR_FILE_SETMASK = 0x20 + ATTR_FILE_TOTALSIZE = 0x2 + ATTR_FILE_VALIDMASK = 0x37ff + ATTR_VOL_ALLOCATIONCLUMP = 0x40 + ATTR_VOL_ATTRIBUTES = 0x40000000 + ATTR_VOL_CAPABILITIES = 0x20000 + ATTR_VOL_DIRCOUNT = 0x400 + ATTR_VOL_ENCODINGSUSED = 0x10000 + ATTR_VOL_FILECOUNT = 0x200 + ATTR_VOL_FSTYPE = 0x1 + ATTR_VOL_INFO = 0x80000000 + ATTR_VOL_IOBLOCKSIZE = 0x80 + ATTR_VOL_MAXOBJCOUNT = 0x800 + ATTR_VOL_MINALLOCATION = 0x20 + ATTR_VOL_MOUNTEDDEVICE = 0x8000 + ATTR_VOL_MOUNTFLAGS = 0x4000 + ATTR_VOL_MOUNTPOINT = 0x1000 + ATTR_VOL_NAME = 0x2000 + ATTR_VOL_OBJCOUNT = 0x100 + ATTR_VOL_QUOTA_SIZE = 0x10000000 + ATTR_VOL_RESERVED_SIZE = 0x20000000 + ATTR_VOL_SETMASK = 0x80002000 + ATTR_VOL_SIGNATURE = 0x2 + ATTR_VOL_SIZE = 0x4 + ATTR_VOL_SPACEAVAIL = 0x10 + ATTR_VOL_SPACEFREE = 0x8 + ATTR_VOL_SPACEUSED = 0x800000 + ATTR_VOL_UUID = 0x40000 + ATTR_VOL_VALIDMASK = 0xf087ffff + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc00c4279 + BIOCGETIF = 0x4020426b + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044278 + BIOCSETF = 0x80104267 + BIOCSETFNR = 0x8010427e + BIOCSETIF = 0x8020426c + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x8000 + BSDLY = 0x8000 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_MONOTONIC_RAW_APPROX = 0x5 + CLOCK_PROCESS_CPUTIME_ID = 0xc + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x10 + CLOCK_UPTIME_RAW = 0x8 + CLOCK_UPTIME_RAW_APPROX = 0x9 + CLONE_NOFOLLOW = 0x1 + CLONE_NOOWNERCOPY = 0x2 + CONNECT_DATA_AUTHENTICATED = 0x4 + CONNECT_DATA_IDEMPOTENT = 0x2 + CONNECT_RESUME_ON_READ_WRITE = 0x1 + CR0 = 0x0 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRDLY = 0x3000 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTLIOCGINFO = 0xc0644e03 + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HHDLC = 0x79 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0x10a + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_DARWIN = 0x10a + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_EXCEPT = -0xf + EVFILT_FS = -0x9 + EVFILT_MACHPORT = -0x8 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0x11 + EVFILT_THREADMARKER = 0x11 + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xa + EVFILT_VM = -0xc + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DISPATCH2 = 0x180 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG0 = 0x1000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_OOBAND = 0x2000 + EV_POLL = 0x1000 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EV_UDATA_SPECIFIC = 0x100 + EV_VANISHED = 0x200 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x4000 + FFDLY = 0x4000 + FLUSHO = 0x800000 + FSOPT_ATTR_CMN_EXTENDED = 0x20 + FSOPT_NOFOLLOW = 0x1 + FSOPT_NOINMEMUPDATE = 0x2 + FSOPT_PACK_INVAL_ATTRS = 0x8 + FSOPT_REPORT_FULLSIZE = 0x4 + FSOPT_RETURN_REALDEV = 0x200 + F_ADDFILESIGS = 0x3d + F_ADDFILESIGS_FOR_DYLD_SIM = 0x53 + F_ADDFILESIGS_INFO = 0x67 + F_ADDFILESIGS_RETURN = 0x61 + F_ADDFILESUPPL = 0x68 + F_ADDSIGS = 0x3b + F_ALLOCATEALL = 0x4 + F_ALLOCATECONTIG = 0x2 + F_BARRIERFSYNC = 0x55 + F_CHECK_LV = 0x62 + F_CHKCLEAN = 0x29 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x43 + F_FINDSIGS = 0x4e + F_FLUSH_DATA = 0x28 + F_FREEZE_FS = 0x35 + F_FULLFSYNC = 0x33 + F_GETCODEDIR = 0x48 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETLKPID = 0x42 + F_GETNOSIGPIPE = 0x4a + F_GETOWN = 0x5 + F_GETPATH = 0x32 + F_GETPATH_MTMINFO = 0x47 + F_GETPATH_NOFIRMLINK = 0x66 + F_GETPROTECTIONCLASS = 0x3f + F_GETPROTECTIONLEVEL = 0x4d + F_GETSIGSINFO = 0x69 + F_GLOBAL_NOCACHE = 0x37 + F_LOG2PHYS = 0x31 + F_LOG2PHYS_EXT = 0x41 + F_NOCACHE = 0x30 + F_NODIRECT = 0x3e + F_OK = 0x0 + F_PATHPKG_CHECK = 0x34 + F_PEOFPOSMODE = 0x3 + F_PREALLOCATE = 0x2a + F_PUNCHHOLE = 0x63 + F_RDADVISE = 0x2c + F_RDAHEAD = 0x2d + F_RDLCK = 0x1 + F_SETBACKINGSTORE = 0x46 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETLKWTIMEOUT = 0xa + F_SETNOSIGPIPE = 0x49 + F_SETOWN = 0x6 + F_SETPROTECTIONCLASS = 0x40 + F_SETSIZE = 0x2b + F_SINGLE_WRITER = 0x4c + F_SPECULATIVE_READ = 0x65 + F_THAW_FS = 0x36 + F_TRANSCODEKEY = 0x4b + F_TRIM_ACTIVE_FILE = 0x64 + F_UNLCK = 0x2 + F_VOLPOSMODE = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_6LOWPAN = 0x40 + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_CELLULAR = 0xff + IFT_CEPT = 0x13 + IFT_DS3 = 0x1e + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FAITH = 0x38 + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_GIF = 0x37 + IFT_HDH1822 = 0x3 + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IEEE1394 = 0x90 + IFT_IEEE8023ADLAG = 0x88 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_L2VLAN = 0x87 + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PDP = 0xff + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PKTAP = 0xfe + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_STARLAN = 0xb + IFT_STF = 0x39 + IFT_T1 = 0x12 + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LINKLOCALNETNUM = 0xa9fe0000 + IN_LOOPBACKNET = 0x7f + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x400473d1 + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0xfe + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MEAS = 0x13 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEP = 0x21 + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_2292DSTOPTS = 0x17 + IPV6_2292HOPLIMIT = 0x14 + IPV6_2292HOPOPTS = 0x16 + IPV6_2292NEXTHOP = 0x15 + IPV6_2292PKTINFO = 0x13 + IPV6_2292PKTOPTIONS = 0x19 + IPV6_2292RTHDR = 0x18 + IPV6_3542DSTOPTS = 0x32 + IPV6_3542HOPLIMIT = 0x2f + IPV6_3542HOPOPTS = 0x31 + IPV6_3542NEXTHOP = 0x30 + IPV6_3542PKTINFO = 0x2e + IPV6_3542RTHDR = 0x33 + IPV6_ADDR_MC_FLAGS_PREFIX = 0x20 + IPV6_ADDR_MC_FLAGS_TRANSIENT = 0x10 + IPV6_ADDR_MC_FLAGS_UNICAST_BASED = 0x30 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDV6ONLY = 0x1b + IPV6_BOUND_IF = 0x7d + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOW_ECN_MASK = 0x3000 + IPV6_FRAGTTL = 0x3c + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MIN_MEMBERSHIPS = 0x1f + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x3d + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x23 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x39 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x24 + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BLOCK_SOURCE = 0x48 + IP_BOUND_IF = 0x19 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DONTFRAG = 0x1c + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FAITH = 0x16 + IP_FW_ADD = 0x28 + IP_FW_DEL = 0x29 + IP_FW_FLUSH = 0x2a + IP_FW_GET = 0x2c + IP_FW_RESETLOG = 0x2d + IP_FW_ZERO = 0x2b + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MF = 0x2000 + IP_MIN_MEMBERSHIPS = 0x1f + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_IFINDEX = 0x42 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_NAT__XXX = 0x37 + IP_OFFMASK = 0x1fff + IP_OLD_FW_ADD = 0x32 + IP_OLD_FW_DEL = 0x33 + IP_OLD_FW_FLUSH = 0x34 + IP_OLD_FW_GET = 0x36 + IP_OLD_FW_RESETLOG = 0x38 + IP_OLD_FW_ZERO = 0x35 + IP_OPTIONS = 0x1 + IP_PKTINFO = 0x1a + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVPKTINFO = 0x1a + IP_RECVRETOPTS = 0x6 + IP_RECVTOS = 0x1b + IP_RECVTTL = 0x18 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_STRIPHDR = 0x17 + IP_TOS = 0x3 + IP_TRAFFIC_MGT_BACKGROUND = 0x41 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + ISIG = 0x80 + ISTRIP = 0x20 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCAL_PEERCRED = 0x1 + LOCAL_PEEREPID = 0x3 + LOCAL_PEEREUUID = 0x5 + LOCAL_PEERPID = 0x2 + LOCAL_PEERTOKEN = 0x6 + LOCAL_PEERUUID = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_CAN_REUSE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_FREE_REUSABLE = 0x7 + MADV_FREE_REUSE = 0x8 + MADV_NORMAL = 0x0 + MADV_PAGEOUT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MADV_ZERO_WIRED_PAGES = 0x6 + MAP_32BIT = 0x8000 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_JIT = 0x800 + MAP_NOCACHE = 0x400 + MAP_NOEXTEND = 0x100 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_RESERVED0080 = 0x80 + MAP_RESILIENT_CODESIGN = 0x2000 + MAP_RESILIENT_MEDIA = 0x4000 + MAP_SHARED = 0x1 + MAP_TRANSLATED_ALLOW_EXECUTE = 0x20000 + MAP_UNIX03 = 0x40000 + MCAST_BLOCK_SOURCE = 0x54 + MCAST_EXCLUDE = 0x2 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x50 + MCAST_JOIN_SOURCE_GROUP = 0x52 + MCAST_LEAVE_GROUP = 0x51 + MCAST_LEAVE_SOURCE_GROUP = 0x53 + MCAST_UNBLOCK_SOURCE = 0x55 + MCAST_UNDEFINED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x400000 + MNT_CMDFLAGS = 0xf0000 + MNT_CPROTECT = 0x80 + MNT_DEFWRITE = 0x2000000 + MNT_DONTBROWSE = 0x100000 + MNT_DOVOLFS = 0x8000 + MNT_DWAIT = 0x4 + MNT_EXPORTED = 0x100 + MNT_EXT_ROOT_DATA_VOL = 0x1 + MNT_FORCE = 0x80000 + MNT_IGNORE_OWNERSHIP = 0x200000 + MNT_JOURNALED = 0x800000 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NOATIME = 0x10000000 + MNT_NOBLOCK = 0x20000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOUSERXATTR = 0x1000000 + MNT_NOWAIT = 0x2 + MNT_QUARANTINE = 0x400 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_REMOVABLE = 0x200 + MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x40000000 + MNT_STRICTATIME = 0x80000000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UNKNOWNPERMISSIONS = 0x200000 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0xd7f0f7ff + MNT_WAIT = 0x1 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_FLUSH = 0x400 + MSG_HAVEMORE = 0x2000 + MSG_HOLD = 0x800 + MSG_NEEDSA = 0x10000 + MSG_NOSIGNAL = 0x80000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_RCVMORE = 0x4000 + MSG_SEND = 0x1000 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITSTREAM = 0x200 + MS_ASYNC = 0x1 + MS_DEACTIVATE = 0x8 + MS_INVALIDATE = 0x2 + MS_KILLPAGES = 0x4 + MS_SYNC = 0x10 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_DUMP2 = 0x7 + NET_RT_FLAGS = 0x2 + NET_RT_FLAGS_PRIV = 0xa + NET_RT_IFLIST = 0x3 + NET_RT_IFLIST2 = 0x6 + NET_RT_MAXID = 0xb + NET_RT_STAT = 0x4 + NET_RT_TRASH = 0x5 + NFDBITS = 0x20 + NL0 = 0x0 + NL1 = 0x100 + NL2 = 0x200 + NL3 = 0x300 + NLDLY = 0x300 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ABSOLUTE = 0x8 + NOTE_ATTRIB = 0x8 + NOTE_BACKGROUND = 0x40 + NOTE_CHILD = 0x4 + NOTE_CRITICAL = 0x20 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXITSTATUS = 0x4000000 + NOTE_EXIT_CSERROR = 0x40000 + NOTE_EXIT_DECRYPTFAIL = 0x10000 + NOTE_EXIT_DETAIL = 0x2000000 + NOTE_EXIT_DETAIL_MASK = 0x70000 + NOTE_EXIT_MEMORY = 0x20000 + NOTE_EXIT_REPARENTED = 0x80000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FORK = 0x40000000 + NOTE_FUNLOCK = 0x100 + NOTE_LEEWAY = 0x10 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MACHTIME = 0x100 + NOTE_MACH_CONTINUOUS_TIME = 0x80 + NOTE_NONE = 0x80 + NOTE_NSECONDS = 0x4 + NOTE_OOB = 0x2 + NOTE_PCTRLMASK = -0x100000 + NOTE_PDATAMASK = 0xfffff + NOTE_REAP = 0x10000000 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_SIGNAL = 0x8000000 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x2 + NOTE_VM_ERROR = 0x10000000 + NOTE_VM_PRESSURE = 0x80000000 + NOTE_VM_PRESSURE_SUDDEN_TERMINATE = 0x20000000 + NOTE_VM_PRESSURE_TERMINATE = 0x40000000 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFDEL = 0x20000 + OFILL = 0x80 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_ALERT = 0x20000000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x1000000 + O_CREAT = 0x200 + O_DIRECTORY = 0x100000 + O_DP_GETRAWENCRYPTED = 0x1 + O_DP_GETRAWUNENCRYPTED = 0x2 + O_DSYNC = 0x400000 + O_EVTONLY = 0x8000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x20000 + O_NOFOLLOW = 0x100 + O_NOFOLLOW_ANY = 0x20000000 + O_NONBLOCK = 0x4 + O_POPUP = 0x80000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYMLINK = 0x200000 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PT_ATTACH = 0xa + PT_ATTACHEXC = 0xe + PT_CONTINUE = 0x7 + PT_DENY_ATTACH = 0x1f + PT_DETACH = 0xb + PT_FIRSTMACH = 0x20 + PT_FORCEQUOTA = 0x1e + PT_KILL = 0x8 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_READ_U = 0x3 + PT_SIGEXC = 0xc + PT_STEP = 0x9 + PT_THUPDATE = 0xd + PT_TRACE_ME = 0x0 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + PT_WRITE_U = 0x6 + RENAME_EXCL = 0x4 + RENAME_NOFOLLOW_ANY = 0x10 + RENAME_RESERVED1 = 0x8 + RENAME_SECLUDE = 0x1 + RENAME_SWAP = 0x2 + RLIMIT_AS = 0x5 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_CPU_USAGE_MONITOR = 0x2 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CLONING = 0x100 + RTF_CONDEMNED = 0x2000000 + RTF_DEAD = 0x20000000 + RTF_DELCLONE = 0x80 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_GLOBAL = 0x40000000 + RTF_HOST = 0x4 + RTF_IFREF = 0x4000000 + RTF_IFSCOPE = 0x1000000 + RTF_LLDATA = 0x400 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_NOIFREF = 0x2000 + RTF_PINNED = 0x100000 + RTF_PRCLONING = 0x10000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_PROXY = 0x8000000 + RTF_REJECT = 0x8 + RTF_ROUTER = 0x10000000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_WASCLONED = 0x20000 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_GET2 = 0x14 + RTM_IFINFO = 0xe + RTM_IFINFO2 = 0x12 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_NEWMADDR2 = 0x13 + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SAE_ASSOCID_ALL = 0xffffffff + SAE_ASSOCID_ANY = 0x0 + SAE_CONNID_ALL = 0xffffffff + SAE_CONNID_ANY = 0x0 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SCM_TIMESTAMP_MONOTONIC = 0x4 + SEEK_CUR = 0x1 + SEEK_DATA = 0x4 + SEEK_END = 0x2 + SEEK_HOLE = 0x3 + SEEK_SET = 0x0 + SF_APPEND = 0x40000 + SF_ARCHIVED = 0x10000 + SF_DATALESS = 0x40000000 + SF_FIRMLINK = 0x800000 + SF_IMMUTABLE = 0x20000 + SF_NOUNLINK = 0x100000 + SF_RESTRICTED = 0x80000 + SF_SETTABLE = 0x3fff0000 + SF_SUPPORTED = 0x9f0000 + SF_SYNTHETIC = 0xc0000000 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCARPIPLL = 0xc0206928 + SIOCATMARK = 0x40047307 + SIOCAUTOADDR = 0xc0206926 + SIOCAUTONETMASK = 0x80206927 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFPHYADDR = 0x80206941 + SIOCGDRVSPEC = 0xc028697b + SIOCGETVLAN = 0xc020697f + SIOCGHIWAT = 0x40047301 + SIOCGIF6LOWPAN = 0xc02069c5 + SIOCGIFADDR = 0xc0206921 + SIOCGIFALTMTU = 0xc0206948 + SIOCGIFASYNCMAP = 0xc020697c + SIOCGIFBOND = 0xc0206947 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020695b + SIOCGIFCONF = 0xc00c6924 + SIOCGIFDEVMTU = 0xc0206944 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFFUNCTIONALTYPE = 0xc02069ad + SIOCGIFGENERIC = 0xc020693a + SIOCGIFKPI = 0xc0206987 + SIOCGIFMAC = 0xc0206982 + SIOCGIFMEDIA = 0xc02c6938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206940 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc020693f + SIOCGIFSTATUS = 0xc331693d + SIOCGIFVLAN = 0xc020697f + SIOCGIFWAKEFLAGS = 0xc0206988 + SIOCGIFXMEDIA = 0xc02c6948 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCIFCREATE = 0xc0206978 + SIOCIFCREATE2 = 0xc020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106981 + SIOCRSLVMULTI = 0xc010693b + SIOCSDRVSPEC = 0x8028697b + SIOCSETVLAN = 0x8020697e + SIOCSHIWAT = 0x80047300 + SIOCSIF6LOWPAN = 0x802069c4 + SIOCSIFADDR = 0x8020690c + SIOCSIFALTMTU = 0x80206945 + SIOCSIFASYNCMAP = 0x8020697d + SIOCSIFBOND = 0x80206946 + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020695a + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFKPI = 0x80206986 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206983 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x8040693e + SIOCSIFPHYS = 0x80206936 + SIOCSIFVLAN = 0x8020697e + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_LOCAL = 0x0 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_DONTTRUNC = 0x2000 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1010 + SO_LINGER = 0x80 + SO_LINGER_SEC = 0x1080 + SO_NETSVC_MARKING_LEVEL = 0x1119 + SO_NET_SERVICE_TYPE = 0x1116 + SO_NKE = 0x1021 + SO_NOADDRERR = 0x1023 + SO_NOSIGPIPE = 0x1022 + SO_NOTIFYCONFLICT = 0x1026 + SO_NP_EXTENSIONS = 0x1083 + SO_NREAD = 0x1020 + SO_NUMRCVPKT = 0x1112 + SO_NWRITE = 0x1024 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1011 + SO_RANDOMPORT = 0x1082 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_REUSESHAREUID = 0x1025 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TIMESTAMP_MONOTONIC = 0x800 + SO_TRACKER_ATTRIBUTE_FLAGS_APP_APPROVED = 0x1 + SO_TRACKER_ATTRIBUTE_FLAGS_DOMAIN_SHORT = 0x4 + SO_TRACKER_ATTRIBUTE_FLAGS_TRACKER = 0x2 + SO_TRACKER_TRANSPARENCY_VERSION = 0x3 + SO_TYPE = 0x1008 + SO_UPCALLCLOSEWAIT = 0x1027 + SO_USELOOPBACK = 0x40 + SO_WANTMORE = 0x4000 + SO_WANTOOBFLAG = 0x8000 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0x4 + TABDLY = 0xc04 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCPOPT_CC = 0xb + TCPOPT_CCECHO = 0xd + TCPOPT_CCNEW = 0xc + TCPOPT_EOL = 0x0 + TCPOPT_FASTOPEN = 0x22 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_HDR = 0x1010500 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SACK_PERMIT_HDR = 0x1010402 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_TSTAMP_HDR = 0x101080a + TCPOPT_WINDOW = 0x3 + TCP_CONNECTIONTIMEOUT = 0x20 + TCP_CONNECTION_INFO = 0x106 + TCP_ENABLE_ECN = 0x104 + TCP_FASTOPEN = 0x105 + TCP_KEEPALIVE = 0x10 + TCP_KEEPCNT = 0x102 + TCP_KEEPINTVL = 0x101 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MINMSS = 0xd8 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_NOTSENT_LOWAT = 0x201 + TCP_RXT_CONNDROPTIME = 0x80 + TCP_RXT_FINDROP = 0x100 + TCP_SENDMOREACKS = 0x103 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x40107458 + TIOCDRAIN = 0x2000745e + TIOCDSIMICROCODE = 0x20007455 + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x40487413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGWINSZ = 0x40087468 + TIOCIXOFF = 0x20007480 + TIOCIXON = 0x20007481 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMODG = 0x40047403 + TIOCMODS = 0x80047404 + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTYGNAME = 0x40807453 + TIOCPTYGRANT = 0x20007454 + TIOCPTYUNLK = 0x20007452 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCONS = 0x20007463 + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x80487414 + TIOCSETAF = 0x80487416 + TIOCSETAW = 0x80487415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2000745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + UF_APPEND = 0x4 + UF_COMPRESSED = 0x20 + UF_DATAVAULT = 0x80 + UF_HIDDEN = 0x8000 + UF_IMMUTABLE = 0x2 + UF_NODUMP = 0x1 + UF_OPAQUE = 0x8 + UF_SETTABLE = 0xffff + UF_TRACKED = 0x40 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x10 + VM_LOADAVG = 0x2 + VM_MACHFACTOR = 0x4 + VM_MAXID = 0x6 + VM_METER = 0x1 + VM_SWAPUSAGE = 0x5 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VT0 = 0x0 + VT1 = 0x10000 + VTDLY = 0x10000 + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x10 + WCOREFLAG = 0x80 + WEXITED = 0x4 + WNOHANG = 0x1 + WNOWAIT = 0x20 + WORDSIZE = 0x40 + WSTOPPED = 0x8 + WUNTRACED = 0x2 + XATTR_CREATE = 0x2 + XATTR_NODEFAULT = 0x10 + XATTR_NOFOLLOW = 0x1 + XATTR_NOSECURITY = 0x8 + XATTR_REPLACE = 0x4 + XATTR_SHOWCOMPRESSION = 0x20 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADARCH = syscall.Errno(0x56) + EBADEXEC = syscall.Errno(0x55) + EBADF = syscall.Errno(0x9) + EBADMACHO = syscall.Errno(0x58) + EBADMSG = syscall.Errno(0x5e) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x59) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDEVERR = syscall.Errno(0x53) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x5a) + EILSEQ = syscall.Errno(0x5c) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x6a) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5f) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x60) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x61) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5b) + ENOPOLICY = syscall.Errno(0x67) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x62) + ENOSTR = syscall.Errno(0x63) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x68) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x66) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x69) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x64) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + EPWROFF = syscall.Errno(0x52) + EQFULL = syscall.Errno(0x6a) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHLIBVERS = syscall.Errno(0x57) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x65) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "ENOTSUP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EPWROFF", "device power is off"}, + {83, "EDEVERR", "device error"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EBADEXEC", "bad executable (or shared library)"}, + {86, "EBADARCH", "bad CPU type in executable"}, + {87, "ESHLIBVERS", "shared library version mismatch"}, + {88, "EBADMACHO", "malformed Mach-o file"}, + {89, "ECANCELED", "operation canceled"}, + {90, "EIDRM", "identifier removed"}, + {91, "ENOMSG", "no message of desired type"}, + {92, "EILSEQ", "illegal byte sequence"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EBADMSG", "bad message"}, + {95, "EMULTIHOP", "EMULTIHOP (Reserved)"}, + {96, "ENODATA", "no message available on STREAM"}, + {97, "ENOLINK", "ENOLINK (Reserved)"}, + {98, "ENOSR", "no STREAM resources"}, + {99, "ENOSTR", "not a STREAM"}, + {100, "EPROTO", "protocol error"}, + {101, "ETIME", "STREAM ioctl timeout"}, + {102, "EOPNOTSUPP", "operation not supported on socket"}, + {103, "ENOPOLICY", "policy not found"}, + {104, "ENOTRECOVERABLE", "state not recoverable"}, + {105, "EOWNERDEAD", "previous owner died"}, + {106, "EQFULL", "interface output queue is full"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go b/tests/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go new file mode 100644 index 000000000..4a55a4005 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go @@ -0,0 +1,1922 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm64 && darwin + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1c + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1e + AF_IPX = 0x17 + AF_ISDN = 0x1c + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x29 + AF_NATM = 0x1f + AF_NDRV = 0x1b + AF_NETBIOS = 0x21 + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PPP = 0x22 + AF_PUP = 0x4 + AF_RESERVED_36 = 0x24 + AF_ROUTE = 0x11 + AF_SIP = 0x18 + AF_SNA = 0xb + AF_SYSTEM = 0x20 + AF_SYS_CONTROL = 0x2 + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_UTUN = 0x26 + AF_VSOCK = 0x28 + ALTWERASE = 0x200 + ATTR_BIT_MAP_COUNT = 0x5 + ATTR_CMN_ACCESSMASK = 0x20000 + ATTR_CMN_ACCTIME = 0x1000 + ATTR_CMN_ADDEDTIME = 0x10000000 + ATTR_CMN_BKUPTIME = 0x2000 + ATTR_CMN_CHGTIME = 0x800 + ATTR_CMN_CRTIME = 0x200 + ATTR_CMN_DATA_PROTECT_FLAGS = 0x40000000 + ATTR_CMN_DEVID = 0x2 + ATTR_CMN_DOCUMENT_ID = 0x100000 + ATTR_CMN_ERROR = 0x20000000 + ATTR_CMN_EXTENDED_SECURITY = 0x400000 + ATTR_CMN_FILEID = 0x2000000 + ATTR_CMN_FLAGS = 0x40000 + ATTR_CMN_FNDRINFO = 0x4000 + ATTR_CMN_FSID = 0x4 + ATTR_CMN_FULLPATH = 0x8000000 + ATTR_CMN_GEN_COUNT = 0x80000 + ATTR_CMN_GRPID = 0x10000 + ATTR_CMN_GRPUUID = 0x1000000 + ATTR_CMN_MODTIME = 0x400 + ATTR_CMN_NAME = 0x1 + ATTR_CMN_NAMEDATTRCOUNT = 0x80000 + ATTR_CMN_NAMEDATTRLIST = 0x100000 + ATTR_CMN_OBJID = 0x20 + ATTR_CMN_OBJPERMANENTID = 0x40 + ATTR_CMN_OBJTAG = 0x10 + ATTR_CMN_OBJTYPE = 0x8 + ATTR_CMN_OWNERID = 0x8000 + ATTR_CMN_PARENTID = 0x4000000 + ATTR_CMN_PAROBJID = 0x80 + ATTR_CMN_RETURNED_ATTRS = 0x80000000 + ATTR_CMN_SCRIPT = 0x100 + ATTR_CMN_SETMASK = 0x51c7ff00 + ATTR_CMN_USERACCESS = 0x200000 + ATTR_CMN_UUID = 0x800000 + ATTR_CMN_VALIDMASK = 0xffffffff + ATTR_CMN_VOLSETMASK = 0x6700 + ATTR_FILE_ALLOCSIZE = 0x4 + ATTR_FILE_CLUMPSIZE = 0x10 + ATTR_FILE_DATAALLOCSIZE = 0x400 + ATTR_FILE_DATAEXTENTS = 0x800 + ATTR_FILE_DATALENGTH = 0x200 + ATTR_FILE_DEVTYPE = 0x20 + ATTR_FILE_FILETYPE = 0x40 + ATTR_FILE_FORKCOUNT = 0x80 + ATTR_FILE_FORKLIST = 0x100 + ATTR_FILE_IOBLOCKSIZE = 0x8 + ATTR_FILE_LINKCOUNT = 0x1 + ATTR_FILE_RSRCALLOCSIZE = 0x2000 + ATTR_FILE_RSRCEXTENTS = 0x4000 + ATTR_FILE_RSRCLENGTH = 0x1000 + ATTR_FILE_SETMASK = 0x20 + ATTR_FILE_TOTALSIZE = 0x2 + ATTR_FILE_VALIDMASK = 0x37ff + ATTR_VOL_ALLOCATIONCLUMP = 0x40 + ATTR_VOL_ATTRIBUTES = 0x40000000 + ATTR_VOL_CAPABILITIES = 0x20000 + ATTR_VOL_DIRCOUNT = 0x400 + ATTR_VOL_ENCODINGSUSED = 0x10000 + ATTR_VOL_FILECOUNT = 0x200 + ATTR_VOL_FSTYPE = 0x1 + ATTR_VOL_INFO = 0x80000000 + ATTR_VOL_IOBLOCKSIZE = 0x80 + ATTR_VOL_MAXOBJCOUNT = 0x800 + ATTR_VOL_MINALLOCATION = 0x20 + ATTR_VOL_MOUNTEDDEVICE = 0x8000 + ATTR_VOL_MOUNTFLAGS = 0x4000 + ATTR_VOL_MOUNTPOINT = 0x1000 + ATTR_VOL_NAME = 0x2000 + ATTR_VOL_OBJCOUNT = 0x100 + ATTR_VOL_QUOTA_SIZE = 0x10000000 + ATTR_VOL_RESERVED_SIZE = 0x20000000 + ATTR_VOL_SETMASK = 0x80002000 + ATTR_VOL_SIGNATURE = 0x2 + ATTR_VOL_SIZE = 0x4 + ATTR_VOL_SPACEAVAIL = 0x10 + ATTR_VOL_SPACEFREE = 0x8 + ATTR_VOL_SPACEUSED = 0x800000 + ATTR_VOL_UUID = 0x40000 + ATTR_VOL_VALIDMASK = 0xf087ffff + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc00c4279 + BIOCGETIF = 0x4020426b + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044278 + BIOCSETF = 0x80104267 + BIOCSETFNR = 0x8010427e + BIOCSETIF = 0x8020426c + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x8000 + BSDLY = 0x8000 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_MONOTONIC_RAW_APPROX = 0x5 + CLOCK_PROCESS_CPUTIME_ID = 0xc + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x10 + CLOCK_UPTIME_RAW = 0x8 + CLOCK_UPTIME_RAW_APPROX = 0x9 + CLONE_NOFOLLOW = 0x1 + CLONE_NOOWNERCOPY = 0x2 + CONNECT_DATA_AUTHENTICATED = 0x4 + CONNECT_DATA_IDEMPOTENT = 0x2 + CONNECT_RESUME_ON_READ_WRITE = 0x1 + CR0 = 0x0 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRDLY = 0x3000 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTLIOCGINFO = 0xc0644e03 + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HHDLC = 0x79 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0x10a + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_DARWIN = 0x10a + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_EXCEPT = -0xf + EVFILT_FS = -0x9 + EVFILT_MACHPORT = -0x8 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0x11 + EVFILT_THREADMARKER = 0x11 + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xa + EVFILT_VM = -0xc + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DISPATCH2 = 0x180 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG0 = 0x1000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_OOBAND = 0x2000 + EV_POLL = 0x1000 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EV_UDATA_SPECIFIC = 0x100 + EV_VANISHED = 0x200 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x4000 + FFDLY = 0x4000 + FLUSHO = 0x800000 + FSOPT_ATTR_CMN_EXTENDED = 0x20 + FSOPT_NOFOLLOW = 0x1 + FSOPT_NOINMEMUPDATE = 0x2 + FSOPT_PACK_INVAL_ATTRS = 0x8 + FSOPT_REPORT_FULLSIZE = 0x4 + FSOPT_RETURN_REALDEV = 0x200 + F_ADDFILESIGS = 0x3d + F_ADDFILESIGS_FOR_DYLD_SIM = 0x53 + F_ADDFILESIGS_INFO = 0x67 + F_ADDFILESIGS_RETURN = 0x61 + F_ADDFILESUPPL = 0x68 + F_ADDSIGS = 0x3b + F_ALLOCATEALL = 0x4 + F_ALLOCATECONTIG = 0x2 + F_BARRIERFSYNC = 0x55 + F_CHECK_LV = 0x62 + F_CHKCLEAN = 0x29 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x43 + F_FINDSIGS = 0x4e + F_FLUSH_DATA = 0x28 + F_FREEZE_FS = 0x35 + F_FULLFSYNC = 0x33 + F_GETCODEDIR = 0x48 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETLKPID = 0x42 + F_GETNOSIGPIPE = 0x4a + F_GETOWN = 0x5 + F_GETPATH = 0x32 + F_GETPATH_MTMINFO = 0x47 + F_GETPATH_NOFIRMLINK = 0x66 + F_GETPROTECTIONCLASS = 0x3f + F_GETPROTECTIONLEVEL = 0x4d + F_GETSIGSINFO = 0x69 + F_GLOBAL_NOCACHE = 0x37 + F_LOG2PHYS = 0x31 + F_LOG2PHYS_EXT = 0x41 + F_NOCACHE = 0x30 + F_NODIRECT = 0x3e + F_OK = 0x0 + F_PATHPKG_CHECK = 0x34 + F_PEOFPOSMODE = 0x3 + F_PREALLOCATE = 0x2a + F_PUNCHHOLE = 0x63 + F_RDADVISE = 0x2c + F_RDAHEAD = 0x2d + F_RDLCK = 0x1 + F_SETBACKINGSTORE = 0x46 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETLKWTIMEOUT = 0xa + F_SETNOSIGPIPE = 0x49 + F_SETOWN = 0x6 + F_SETPROTECTIONCLASS = 0x40 + F_SETSIZE = 0x2b + F_SINGLE_WRITER = 0x4c + F_SPECULATIVE_READ = 0x65 + F_THAW_FS = 0x36 + F_TRANSCODEKEY = 0x4b + F_TRIM_ACTIVE_FILE = 0x64 + F_UNLCK = 0x2 + F_VOLPOSMODE = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_6LOWPAN = 0x40 + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_CELLULAR = 0xff + IFT_CEPT = 0x13 + IFT_DS3 = 0x1e + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FAITH = 0x38 + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_GIF = 0x37 + IFT_HDH1822 = 0x3 + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IEEE1394 = 0x90 + IFT_IEEE8023ADLAG = 0x88 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_L2VLAN = 0x87 + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PDP = 0xff + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PKTAP = 0xfe + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_STARLAN = 0xb + IFT_STF = 0x39 + IFT_T1 = 0x12 + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LINKLOCALNETNUM = 0xa9fe0000 + IN_LOOPBACKNET = 0x7f + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x400473d1 + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0xfe + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MEAS = 0x13 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEP = 0x21 + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_2292DSTOPTS = 0x17 + IPV6_2292HOPLIMIT = 0x14 + IPV6_2292HOPOPTS = 0x16 + IPV6_2292NEXTHOP = 0x15 + IPV6_2292PKTINFO = 0x13 + IPV6_2292PKTOPTIONS = 0x19 + IPV6_2292RTHDR = 0x18 + IPV6_3542DSTOPTS = 0x32 + IPV6_3542HOPLIMIT = 0x2f + IPV6_3542HOPOPTS = 0x31 + IPV6_3542NEXTHOP = 0x30 + IPV6_3542PKTINFO = 0x2e + IPV6_3542RTHDR = 0x33 + IPV6_ADDR_MC_FLAGS_PREFIX = 0x20 + IPV6_ADDR_MC_FLAGS_TRANSIENT = 0x10 + IPV6_ADDR_MC_FLAGS_UNICAST_BASED = 0x30 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDV6ONLY = 0x1b + IPV6_BOUND_IF = 0x7d + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOW_ECN_MASK = 0x3000 + IPV6_FRAGTTL = 0x3c + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MIN_MEMBERSHIPS = 0x1f + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x3d + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x23 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x39 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x24 + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BLOCK_SOURCE = 0x48 + IP_BOUND_IF = 0x19 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DONTFRAG = 0x1c + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FAITH = 0x16 + IP_FW_ADD = 0x28 + IP_FW_DEL = 0x29 + IP_FW_FLUSH = 0x2a + IP_FW_GET = 0x2c + IP_FW_RESETLOG = 0x2d + IP_FW_ZERO = 0x2b + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MF = 0x2000 + IP_MIN_MEMBERSHIPS = 0x1f + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_IFINDEX = 0x42 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_NAT__XXX = 0x37 + IP_OFFMASK = 0x1fff + IP_OLD_FW_ADD = 0x32 + IP_OLD_FW_DEL = 0x33 + IP_OLD_FW_FLUSH = 0x34 + IP_OLD_FW_GET = 0x36 + IP_OLD_FW_RESETLOG = 0x38 + IP_OLD_FW_ZERO = 0x35 + IP_OPTIONS = 0x1 + IP_PKTINFO = 0x1a + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVPKTINFO = 0x1a + IP_RECVRETOPTS = 0x6 + IP_RECVTOS = 0x1b + IP_RECVTTL = 0x18 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_STRIPHDR = 0x17 + IP_TOS = 0x3 + IP_TRAFFIC_MGT_BACKGROUND = 0x41 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + ISIG = 0x80 + ISTRIP = 0x20 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCAL_PEERCRED = 0x1 + LOCAL_PEEREPID = 0x3 + LOCAL_PEEREUUID = 0x5 + LOCAL_PEERPID = 0x2 + LOCAL_PEERTOKEN = 0x6 + LOCAL_PEERUUID = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_CAN_REUSE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_FREE_REUSABLE = 0x7 + MADV_FREE_REUSE = 0x8 + MADV_NORMAL = 0x0 + MADV_PAGEOUT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MADV_ZERO_WIRED_PAGES = 0x6 + MAP_32BIT = 0x8000 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_JIT = 0x800 + MAP_NOCACHE = 0x400 + MAP_NOEXTEND = 0x100 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_RESERVED0080 = 0x80 + MAP_RESILIENT_CODESIGN = 0x2000 + MAP_RESILIENT_MEDIA = 0x4000 + MAP_SHARED = 0x1 + MAP_TRANSLATED_ALLOW_EXECUTE = 0x20000 + MAP_UNIX03 = 0x40000 + MCAST_BLOCK_SOURCE = 0x54 + MCAST_EXCLUDE = 0x2 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x50 + MCAST_JOIN_SOURCE_GROUP = 0x52 + MCAST_LEAVE_GROUP = 0x51 + MCAST_LEAVE_SOURCE_GROUP = 0x53 + MCAST_UNBLOCK_SOURCE = 0x55 + MCAST_UNDEFINED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x400000 + MNT_CMDFLAGS = 0xf0000 + MNT_CPROTECT = 0x80 + MNT_DEFWRITE = 0x2000000 + MNT_DONTBROWSE = 0x100000 + MNT_DOVOLFS = 0x8000 + MNT_DWAIT = 0x4 + MNT_EXPORTED = 0x100 + MNT_EXT_ROOT_DATA_VOL = 0x1 + MNT_FORCE = 0x80000 + MNT_IGNORE_OWNERSHIP = 0x200000 + MNT_JOURNALED = 0x800000 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NOATIME = 0x10000000 + MNT_NOBLOCK = 0x20000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOUSERXATTR = 0x1000000 + MNT_NOWAIT = 0x2 + MNT_QUARANTINE = 0x400 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_REMOVABLE = 0x200 + MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x40000000 + MNT_STRICTATIME = 0x80000000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UNKNOWNPERMISSIONS = 0x200000 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0xd7f0f7ff + MNT_WAIT = 0x1 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_FLUSH = 0x400 + MSG_HAVEMORE = 0x2000 + MSG_HOLD = 0x800 + MSG_NEEDSA = 0x10000 + MSG_NOSIGNAL = 0x80000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_RCVMORE = 0x4000 + MSG_SEND = 0x1000 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITSTREAM = 0x200 + MS_ASYNC = 0x1 + MS_DEACTIVATE = 0x8 + MS_INVALIDATE = 0x2 + MS_KILLPAGES = 0x4 + MS_SYNC = 0x10 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_DUMP2 = 0x7 + NET_RT_FLAGS = 0x2 + NET_RT_FLAGS_PRIV = 0xa + NET_RT_IFLIST = 0x3 + NET_RT_IFLIST2 = 0x6 + NET_RT_MAXID = 0xb + NET_RT_STAT = 0x4 + NET_RT_TRASH = 0x5 + NFDBITS = 0x20 + NL0 = 0x0 + NL1 = 0x100 + NL2 = 0x200 + NL3 = 0x300 + NLDLY = 0x300 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ABSOLUTE = 0x8 + NOTE_ATTRIB = 0x8 + NOTE_BACKGROUND = 0x40 + NOTE_CHILD = 0x4 + NOTE_CRITICAL = 0x20 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXITSTATUS = 0x4000000 + NOTE_EXIT_CSERROR = 0x40000 + NOTE_EXIT_DECRYPTFAIL = 0x10000 + NOTE_EXIT_DETAIL = 0x2000000 + NOTE_EXIT_DETAIL_MASK = 0x70000 + NOTE_EXIT_MEMORY = 0x20000 + NOTE_EXIT_REPARENTED = 0x80000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FORK = 0x40000000 + NOTE_FUNLOCK = 0x100 + NOTE_LEEWAY = 0x10 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MACHTIME = 0x100 + NOTE_MACH_CONTINUOUS_TIME = 0x80 + NOTE_NONE = 0x80 + NOTE_NSECONDS = 0x4 + NOTE_OOB = 0x2 + NOTE_PCTRLMASK = -0x100000 + NOTE_PDATAMASK = 0xfffff + NOTE_REAP = 0x10000000 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_SIGNAL = 0x8000000 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x2 + NOTE_VM_ERROR = 0x10000000 + NOTE_VM_PRESSURE = 0x80000000 + NOTE_VM_PRESSURE_SUDDEN_TERMINATE = 0x20000000 + NOTE_VM_PRESSURE_TERMINATE = 0x40000000 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFDEL = 0x20000 + OFILL = 0x80 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_ALERT = 0x20000000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x1000000 + O_CREAT = 0x200 + O_DIRECTORY = 0x100000 + O_DP_GETRAWENCRYPTED = 0x1 + O_DP_GETRAWUNENCRYPTED = 0x2 + O_DSYNC = 0x400000 + O_EVTONLY = 0x8000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x20000 + O_NOFOLLOW = 0x100 + O_NOFOLLOW_ANY = 0x20000000 + O_NONBLOCK = 0x4 + O_POPUP = 0x80000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYMLINK = 0x200000 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PT_ATTACH = 0xa + PT_ATTACHEXC = 0xe + PT_CONTINUE = 0x7 + PT_DENY_ATTACH = 0x1f + PT_DETACH = 0xb + PT_FIRSTMACH = 0x20 + PT_FORCEQUOTA = 0x1e + PT_KILL = 0x8 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_READ_U = 0x3 + PT_SIGEXC = 0xc + PT_STEP = 0x9 + PT_THUPDATE = 0xd + PT_TRACE_ME = 0x0 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + PT_WRITE_U = 0x6 + RENAME_EXCL = 0x4 + RENAME_NOFOLLOW_ANY = 0x10 + RENAME_RESERVED1 = 0x8 + RENAME_SECLUDE = 0x1 + RENAME_SWAP = 0x2 + RLIMIT_AS = 0x5 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_CPU_USAGE_MONITOR = 0x2 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CLONING = 0x100 + RTF_CONDEMNED = 0x2000000 + RTF_DEAD = 0x20000000 + RTF_DELCLONE = 0x80 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_GLOBAL = 0x40000000 + RTF_HOST = 0x4 + RTF_IFREF = 0x4000000 + RTF_IFSCOPE = 0x1000000 + RTF_LLDATA = 0x400 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_NOIFREF = 0x2000 + RTF_PINNED = 0x100000 + RTF_PRCLONING = 0x10000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_PROXY = 0x8000000 + RTF_REJECT = 0x8 + RTF_ROUTER = 0x10000000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_WASCLONED = 0x20000 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_GET2 = 0x14 + RTM_IFINFO = 0xe + RTM_IFINFO2 = 0x12 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_NEWMADDR2 = 0x13 + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SAE_ASSOCID_ALL = 0xffffffff + SAE_ASSOCID_ANY = 0x0 + SAE_CONNID_ALL = 0xffffffff + SAE_CONNID_ANY = 0x0 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SCM_TIMESTAMP_MONOTONIC = 0x4 + SEEK_CUR = 0x1 + SEEK_DATA = 0x4 + SEEK_END = 0x2 + SEEK_HOLE = 0x3 + SEEK_SET = 0x0 + SF_APPEND = 0x40000 + SF_ARCHIVED = 0x10000 + SF_DATALESS = 0x40000000 + SF_FIRMLINK = 0x800000 + SF_IMMUTABLE = 0x20000 + SF_NOUNLINK = 0x100000 + SF_RESTRICTED = 0x80000 + SF_SETTABLE = 0x3fff0000 + SF_SUPPORTED = 0x9f0000 + SF_SYNTHETIC = 0xc0000000 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCARPIPLL = 0xc0206928 + SIOCATMARK = 0x40047307 + SIOCAUTOADDR = 0xc0206926 + SIOCAUTONETMASK = 0x80206927 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFPHYADDR = 0x80206941 + SIOCGDRVSPEC = 0xc028697b + SIOCGETVLAN = 0xc020697f + SIOCGHIWAT = 0x40047301 + SIOCGIF6LOWPAN = 0xc02069c5 + SIOCGIFADDR = 0xc0206921 + SIOCGIFALTMTU = 0xc0206948 + SIOCGIFASYNCMAP = 0xc020697c + SIOCGIFBOND = 0xc0206947 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020695b + SIOCGIFCONF = 0xc00c6924 + SIOCGIFDEVMTU = 0xc0206944 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFFUNCTIONALTYPE = 0xc02069ad + SIOCGIFGENERIC = 0xc020693a + SIOCGIFKPI = 0xc0206987 + SIOCGIFMAC = 0xc0206982 + SIOCGIFMEDIA = 0xc02c6938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206940 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc020693f + SIOCGIFSTATUS = 0xc331693d + SIOCGIFVLAN = 0xc020697f + SIOCGIFWAKEFLAGS = 0xc0206988 + SIOCGIFXMEDIA = 0xc02c6948 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCIFCREATE = 0xc0206978 + SIOCIFCREATE2 = 0xc020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106981 + SIOCRSLVMULTI = 0xc010693b + SIOCSDRVSPEC = 0x8028697b + SIOCSETVLAN = 0x8020697e + SIOCSHIWAT = 0x80047300 + SIOCSIF6LOWPAN = 0x802069c4 + SIOCSIFADDR = 0x8020690c + SIOCSIFALTMTU = 0x80206945 + SIOCSIFASYNCMAP = 0x8020697d + SIOCSIFBOND = 0x80206946 + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020695a + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFKPI = 0x80206986 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206983 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x8040693e + SIOCSIFPHYS = 0x80206936 + SIOCSIFVLAN = 0x8020697e + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_LOCAL = 0x0 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_DONTTRUNC = 0x2000 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1010 + SO_LINGER = 0x80 + SO_LINGER_SEC = 0x1080 + SO_NETSVC_MARKING_LEVEL = 0x1119 + SO_NET_SERVICE_TYPE = 0x1116 + SO_NKE = 0x1021 + SO_NOADDRERR = 0x1023 + SO_NOSIGPIPE = 0x1022 + SO_NOTIFYCONFLICT = 0x1026 + SO_NP_EXTENSIONS = 0x1083 + SO_NREAD = 0x1020 + SO_NUMRCVPKT = 0x1112 + SO_NWRITE = 0x1024 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1011 + SO_RANDOMPORT = 0x1082 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_REUSESHAREUID = 0x1025 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TIMESTAMP_MONOTONIC = 0x800 + SO_TRACKER_ATTRIBUTE_FLAGS_APP_APPROVED = 0x1 + SO_TRACKER_ATTRIBUTE_FLAGS_DOMAIN_SHORT = 0x4 + SO_TRACKER_ATTRIBUTE_FLAGS_TRACKER = 0x2 + SO_TRACKER_TRANSPARENCY_VERSION = 0x3 + SO_TYPE = 0x1008 + SO_UPCALLCLOSEWAIT = 0x1027 + SO_USELOOPBACK = 0x40 + SO_WANTMORE = 0x4000 + SO_WANTOOBFLAG = 0x8000 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0x4 + TABDLY = 0xc04 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCPOPT_CC = 0xb + TCPOPT_CCECHO = 0xd + TCPOPT_CCNEW = 0xc + TCPOPT_EOL = 0x0 + TCPOPT_FASTOPEN = 0x22 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_HDR = 0x1010500 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SACK_PERMIT_HDR = 0x1010402 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_TSTAMP_HDR = 0x101080a + TCPOPT_WINDOW = 0x3 + TCP_CONNECTIONTIMEOUT = 0x20 + TCP_CONNECTION_INFO = 0x106 + TCP_ENABLE_ECN = 0x104 + TCP_FASTOPEN = 0x105 + TCP_KEEPALIVE = 0x10 + TCP_KEEPCNT = 0x102 + TCP_KEEPINTVL = 0x101 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MINMSS = 0xd8 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_NOTSENT_LOWAT = 0x201 + TCP_RXT_CONNDROPTIME = 0x80 + TCP_RXT_FINDROP = 0x100 + TCP_SENDMOREACKS = 0x103 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x40107458 + TIOCDRAIN = 0x2000745e + TIOCDSIMICROCODE = 0x20007455 + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x40487413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGWINSZ = 0x40087468 + TIOCIXOFF = 0x20007480 + TIOCIXON = 0x20007481 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMODG = 0x40047403 + TIOCMODS = 0x80047404 + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTYGNAME = 0x40807453 + TIOCPTYGRANT = 0x20007454 + TIOCPTYUNLK = 0x20007452 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCONS = 0x20007463 + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x80487414 + TIOCSETAF = 0x80487416 + TIOCSETAW = 0x80487415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2000745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + UF_APPEND = 0x4 + UF_COMPRESSED = 0x20 + UF_DATAVAULT = 0x80 + UF_HIDDEN = 0x8000 + UF_IMMUTABLE = 0x2 + UF_NODUMP = 0x1 + UF_OPAQUE = 0x8 + UF_SETTABLE = 0xffff + UF_TRACKED = 0x40 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x10 + VM_LOADAVG = 0x2 + VM_MACHFACTOR = 0x4 + VM_MAXID = 0x6 + VM_METER = 0x1 + VM_SWAPUSAGE = 0x5 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VT0 = 0x0 + VT1 = 0x10000 + VTDLY = 0x10000 + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x10 + WCOREFLAG = 0x80 + WEXITED = 0x4 + WNOHANG = 0x1 + WNOWAIT = 0x20 + WORDSIZE = 0x40 + WSTOPPED = 0x8 + WUNTRACED = 0x2 + XATTR_CREATE = 0x2 + XATTR_NODEFAULT = 0x10 + XATTR_NOFOLLOW = 0x1 + XATTR_NOSECURITY = 0x8 + XATTR_REPLACE = 0x4 + XATTR_SHOWCOMPRESSION = 0x20 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADARCH = syscall.Errno(0x56) + EBADEXEC = syscall.Errno(0x55) + EBADF = syscall.Errno(0x9) + EBADMACHO = syscall.Errno(0x58) + EBADMSG = syscall.Errno(0x5e) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x59) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDEVERR = syscall.Errno(0x53) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x5a) + EILSEQ = syscall.Errno(0x5c) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x6a) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5f) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x60) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x61) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5b) + ENOPOLICY = syscall.Errno(0x67) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x62) + ENOSTR = syscall.Errno(0x63) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x68) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x66) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x69) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x64) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + EPWROFF = syscall.Errno(0x52) + EQFULL = syscall.Errno(0x6a) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHLIBVERS = syscall.Errno(0x57) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x65) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "ENOTSUP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EPWROFF", "device power is off"}, + {83, "EDEVERR", "device error"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EBADEXEC", "bad executable (or shared library)"}, + {86, "EBADARCH", "bad CPU type in executable"}, + {87, "ESHLIBVERS", "shared library version mismatch"}, + {88, "EBADMACHO", "malformed Mach-o file"}, + {89, "ECANCELED", "operation canceled"}, + {90, "EIDRM", "identifier removed"}, + {91, "ENOMSG", "no message of desired type"}, + {92, "EILSEQ", "illegal byte sequence"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EBADMSG", "bad message"}, + {95, "EMULTIHOP", "EMULTIHOP (Reserved)"}, + {96, "ENODATA", "no message available on STREAM"}, + {97, "ENOLINK", "ENOLINK (Reserved)"}, + {98, "ENOSR", "no STREAM resources"}, + {99, "ENOSTR", "not a STREAM"}, + {100, "EPROTO", "protocol error"}, + {101, "ETIME", "STREAM ioctl timeout"}, + {102, "EOPNOTSUPP", "operation not supported on socket"}, + {103, "ENOPOLICY", "policy not found"}, + {104, "ENOTRECOVERABLE", "state not recoverable"}, + {105, "EOWNERDEAD", "previous owner died"}, + {106, "EQFULL", "interface output queue is full"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go b/tests/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go new file mode 100644 index 000000000..c0e0f8694 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go @@ -0,0 +1,1737 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && dragonfly + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ATM = 0x1e + AF_BLUETOOTH = 0x21 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x23 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1c + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x24 + AF_MPLS = 0x22 + AF_NATM = 0x1d + AF_NETBIOS = 0x6 + AF_NETGRAPH = 0x20 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SIP = 0x18 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x200 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427d + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0104279 + BIOCGETIF = 0x4020426b + BIOCGFEEDBACK = 0x4004427c + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x2000427a + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044278 + BIOCSETF = 0x80104267 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x8010427b + BIOCSFEEDBACK = 0x8004427d + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x8 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DEFAULTBUFSIZE = 0x1000 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MAX_CLONES = 0x80 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x4 + CLOCK_MONOTONIC_FAST = 0xc + CLOCK_MONOTONIC_PRECISE = 0xb + CLOCK_PROCESS_CPUTIME_ID = 0xf + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_FAST = 0xa + CLOCK_REALTIME_PRECISE = 0x9 + CLOCK_SECOND = 0xd + CLOCK_THREAD_CPUTIME_ID = 0xe + CLOCK_UPTIME = 0x5 + CLOCK_UPTIME_FAST = 0x8 + CLOCK_UPTIME_PRECISE = 0x7 + CLOCK_VIRTUAL = 0x1 + CPUSTATES = 0x5 + CP_IDLE = 0x4 + CP_INTR = 0x3 + CP_NICE = 0x1 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_BREDR_BB = 0xff + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_BLUETOOTH_LE_LL = 0xfb + DLT_BLUETOOTH_LE_LL_WITH_PHDR = 0x100 + DLT_BLUETOOTH_LINUX_MONITOR = 0xfe + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_EPON = 0x103 + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HHDLC = 0x79 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_INFINIBAND = 0xf7 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPMI_HPM_2 = 0x104 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_ISO_14443 = 0x108 + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0x109 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NETLINK = 0xfd + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PKTAP = 0x102 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PRISM_HEADER = 0x77 + DLT_PROFIBUS_DL = 0x101 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RDS = 0x109 + DLT_REDBACK_SMARTEDGE = 0x20 + DLT_RIO = 0x7c + DLT_RTAC_SERIAL = 0xfa + DLT_SCCP = 0x8e + DLT_SCTP = 0xf8 + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USBPCAP = 0xf9 + DLT_USB_FREEBSD = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_WATTSTOPPER_DLM = 0x107 + DLT_WIHART = 0xdf + DLT_WIRESHARK_UPPER_PDU = 0xfc + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DLT_ZWAVE_R1_R2 = 0x105 + DLT_ZWAVE_R3 = 0x106 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DBF = 0xf + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_EXCEPT = -0x8 + EVFILT_FS = -0xa + EVFILT_MARKER = 0xf + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xa + EVFILT_TIMER = -0x7 + EVFILT_USER = -0x9 + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_HUP = 0x800 + EV_NODATA = 0x1000 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf800 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTEXIT_LWP = 0x10000 + EXTEXIT_PROC = 0x0 + EXTEXIT_SETINT = 0x1 + EXTEXIT_SIMPLE = 0x0 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_DUP2FD = 0xa + F_DUP2FD_CLOEXEC = 0x12 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x11 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETOWN = 0x5 + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x318e72 + IFF_DEBUG = 0x4 + IFF_IDIRECT = 0x200000 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MONITOR = 0x40000 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NPOLLING = 0x100000 + IFF_OACTIVE = 0x400 + IFF_OACTIVE_COMPAT = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_POLLING = 0x10000 + IFF_POLLING_COMPAT = 0x10000 + IFF_PPROMISC = 0x20000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_SMART = 0x20 + IFF_STATICARP = 0x80000 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf8 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf1 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_STF = 0xf3 + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VOICEEM = 0x64 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_MASK = 0xfffffffe + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CARP = 0x70 + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0xfe + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MEAS = 0x13 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MOBILE = 0x37 + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SDRP = 0x2a + IPPROTO_SEP = 0x21 + IPPROTO_SKIP = 0x39 + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TLSP = 0x38 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_UNKNOWN = 0x102 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDV6ONLY = 0x1b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MINHLIM = 0x28 + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PKTOPTIONS = 0x34 + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FW_ADD = 0x32 + IP_FW_DEL = 0x33 + IP_FW_FLUSH = 0x34 + IP_FW_GET = 0x36 + IP_FW_RESETLOG = 0x37 + IP_FW_TBL_ADD = 0x2a + IP_FW_TBL_CREATE = 0x28 + IP_FW_TBL_DEL = 0x2b + IP_FW_TBL_DESTROY = 0x29 + IP_FW_TBL_EXPIRE = 0x2f + IP_FW_TBL_FLUSH = 0x2c + IP_FW_TBL_GET = 0x2d + IP_FW_TBL_ZERO = 0x2e + IP_FW_X = 0x31 + IP_FW_ZERO = 0x35 + IP_HDRINCL = 0x2 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x42 + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x41 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_AUTOSYNC = 0x7 + MADV_CONTROL_END = 0xb + MADV_CONTROL_START = 0xa + MADV_CORE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_INVAL = 0xa + MADV_NOCORE = 0x8 + MADV_NORMAL = 0x0 + MADV_NOSYNC = 0x6 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SETMAP = 0xb + MADV_WILLNEED = 0x3 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_INHERIT = 0x80 + MAP_NOCORE = 0x20000 + MAP_NOEXTEND = 0x100 + MAP_NORESERVE = 0x40 + MAP_NOSYNC = 0x800 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_SIZEALIGN = 0x40000 + MAP_STACK = 0x400 + MAP_TRYFIXED = 0x10000 + MAP_VPAGETABLE = 0x2000 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x20 + MNT_CMDFLAGS = 0xf0000 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_EXKERB = 0x800 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x20000000 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_IGNORE = 0x800000 + MNT_LAZY = 0x4 + MNT_LOCAL = 0x1000 + MNT_NOATIME = 0x10000000 + MNT_NOCLUSTERR = 0x40000000 + MNT_NOCLUSTERW = 0x80000000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOSYMFOLLOW = 0x400000 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x200000 + MNT_SUIDDIR = 0x100000 + MNT_SYNCHRONOUS = 0x2 + MNT_TRIM = 0x1000000 + MNT_UPDATE = 0x10000 + MNT_USER = 0x8000 + MNT_VISFLAGMASK = 0xf1f0ffff + MNT_WAIT = 0x1 + MSG_CMSG_CLOEXEC = 0x1000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_FBLOCKING = 0x10000 + MSG_FMASK = 0xffff0000 + MSG_FNONBLOCKING = 0x20000 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_SYNC = 0x800 + MSG_TRUNC = 0x10 + MSG_UNUSED09 = 0x200 + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x0 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_MAXID = 0x4 + NFDBITS = 0x40 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_OOB = 0x2 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x20000 + O_CREAT = 0x200 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x8000000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FAPPEND = 0x100000 + O_FASYNCWRITE = 0x800000 + O_FBLOCKING = 0x40000 + O_FMASK = 0xfc0000 + O_FNONBLOCKING = 0x80000 + O_FOFFSET = 0x200000 + O_FSYNC = 0x80 + O_FSYNCWRITE = 0x400000 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0xb + RTAX_MPLS1 = 0x8 + RTAX_MPLS2 = 0x9 + RTAX_MPLS3 = 0xa + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_MPLS1 = 0x100 + RTA_MPLS2 = 0x200 + RTA_MPLS3 = 0x400 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MPLSOPS = 0x1000000 + RTF_MULTICAST = 0x800000 + RTF_PINNED = 0x100000 + RTF_PRCLONING = 0x10000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_WASCLONED = 0x20000 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x12 + RTM_IFANNOUNCE = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x7 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_IWCAPSEGS = 0x400 + RTV_IWMAXSEGS = 0x200 + RTV_MSL = 0x100 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80286987 + SIOCALIFADDR = 0x8118691b + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80286989 + SIOCDIFPHYADDR = 0x80206949 + SIOCDLIFADDR = 0x8118691d + SIOCGDRVSPEC = 0xc028697b + SIOCGETSGCNT = 0xc0207210 + SIOCGETVIFCNT = 0xc028720f + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0206921 + SIOCGIFALIAS = 0xc0406929 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020691f + SIOCGIFCONF = 0xc0106924 + SIOCGIFDATA = 0xc0206926 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc028698a + SIOCGIFGROUP = 0xc0286988 + SIOCGIFINDEX = 0xc0206920 + SIOCGIFMEDIA = 0xc0306938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPOLLCPU = 0xc020697e + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFSTATUS = 0xc331693b + SIOCGIFTSOLEN = 0xc0206980 + SIOCGLIFADDR = 0xc118691c + SIOCGLIFPHYADDR = 0xc118694b + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGPRIVATE_0 = 0xc0206950 + SIOCGPRIVATE_1 = 0xc0206951 + SIOCIFCREATE = 0xc020697a + SIOCIFCREATE2 = 0xc020697c + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSDRVSPEC = 0x8028697b + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020691e + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNAME = 0x80206928 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPHYS = 0x80206936 + SIOCSIFPOLLCPU = 0x8020697d + SIOCSIFTSOLEN = 0x8020697f + SIOCSLIFPHYADDR = 0x8118694a + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_NONBLOCK = 0x20000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BROADCAST = 0x20 + SO_CPUHINT = 0x1030 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NOSIGPIPE = 0x800 + SO_OOBINLINE = 0x100 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_RERROR = 0x2000 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDSPACE = 0x100a + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDB = 0x9000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB3 = 0x4 + TABDLY = 0x4 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_FASTKEEP = 0x80 + TCP_KEEPCNT = 0x400 + TCP_KEEPIDLE = 0x100 + TCP_KEEPINIT = 0x20 + TCP_KEEPINTVL = 0x200 + TCP_MAXBURST = 0x4 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MINMSS = 0x100 + TCP_MIN_WINSHIFT = 0x5 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_SIGNATURE_ENABLE = 0x10 + TCSAFLUSH = 0x2 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x40107458 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047463 + TIOCGWINSZ = 0x40087468 + TIOCISPTMASTER = 0x20007455 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMODG = 0x40047403 + TIOCMODS = 0x80047404 + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2000745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + UTIME_NOW = -0x1 + UTIME_OMIT = -0x2 + VCHECKPT = 0x13 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VERASE2 = 0x7 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_BCACHE_SIZE_MAX = 0x0 + VM_SWZONE_SIZE_MAX = 0x4000000000 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x4 + WCOREFLAG = 0x80 + WEXITED = 0x10 + WLINUXCLONE = 0x80000000 + WNOHANG = 0x1 + WNOWAIT = 0x8 + WSTOPPED = 0x2 + WTRAPPED = 0x20 + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EASYNC = syscall.Errno(0x63) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x59) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x55) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDOOFUS = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x56) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x63) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5a) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x57) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5b) + ENOMEDIUM = syscall.Errno(0x5d) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5c) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCKPT = syscall.Signal(0x21) + SIGCKPTEXIT = syscall.Signal(0x22) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EWOULDBLOCK", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "ECANCELED", "operation canceled"}, + {86, "EILSEQ", "illegal byte sequence"}, + {87, "ENOATTR", "attribute not found"}, + {88, "EDOOFUS", "programming error"}, + {89, "EBADMSG", "bad message"}, + {90, "EMULTIHOP", "multihop attempted"}, + {91, "ENOLINK", "link has been severed"}, + {92, "EPROTO", "protocol error"}, + {93, "ENOMEDIUM", "no medium found"}, + {99, "EASYNC", "unknown error: 99"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread Scheduler"}, + {33, "SIGCKPT", "checkPoint"}, + {34, "SIGCKPTEXIT", "checkPointExit"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go b/tests/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go new file mode 100644 index 000000000..6c6923906 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go @@ -0,0 +1,2042 @@ +// mkerrors.sh -m32 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build 386 && freebsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m32 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x23 + AF_ATM = 0x1e + AF_BLUETOOTH = 0x24 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1c + AF_INET6_SDP = 0x2a + AF_INET_SDP = 0x28 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x2a + AF_NATM = 0x1d + AF_NETBIOS = 0x6 + AF_NETGRAPH = 0x20 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SCLUSTER = 0x22 + AF_SIP = 0x18 + AF_SLOW = 0x21 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VENDOR00 = 0x27 + AF_VENDOR01 = 0x29 + AF_VENDOR02 = 0x2b + AF_VENDOR03 = 0x2d + AF_VENDOR04 = 0x2f + AF_VENDOR05 = 0x31 + AF_VENDOR06 = 0x33 + AF_VENDOR07 = 0x35 + AF_VENDOR08 = 0x37 + AF_VENDOR09 = 0x39 + AF_VENDOR10 = 0x3b + AF_VENDOR11 = 0x3d + AF_VENDOR12 = 0x3f + AF_VENDOR13 = 0x41 + AF_VENDOR14 = 0x43 + AF_VENDOR15 = 0x45 + AF_VENDOR16 = 0x47 + AF_VENDOR17 = 0x49 + AF_VENDOR18 = 0x4b + AF_VENDOR19 = 0x4d + AF_VENDOR20 = 0x4f + AF_VENDOR21 = 0x51 + AF_VENDOR22 = 0x53 + AF_VENDOR23 = 0x55 + AF_VENDOR24 = 0x57 + AF_VENDOR25 = 0x59 + AF_VENDOR26 = 0x5b + AF_VENDOR27 = 0x5d + AF_VENDOR28 = 0x5f + AF_VENDOR29 = 0x61 + AF_VENDOR30 = 0x63 + AF_VENDOR31 = 0x65 + AF_VENDOR32 = 0x67 + AF_VENDOR33 = 0x69 + AF_VENDOR34 = 0x6b + AF_VENDOR35 = 0x6d + AF_VENDOR36 = 0x6f + AF_VENDOR37 = 0x71 + AF_VENDOR38 = 0x73 + AF_VENDOR39 = 0x75 + AF_VENDOR40 = 0x77 + AF_VENDOR41 = 0x79 + AF_VENDOR42 = 0x7b + AF_VENDOR43 = 0x7d + AF_VENDOR44 = 0x7f + AF_VENDOR45 = 0x81 + AF_VENDOR46 = 0x83 + AF_VENDOR47 = 0x85 + ALTWERASE = 0x200 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427c + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRECTION = 0x40044276 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0084279 + BIOCGETBUFMODE = 0x4004427d + BIOCGETIF = 0x4020426b + BIOCGETZMAX = 0x4004427f + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4008426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCGTSTAMP = 0x40044283 + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x2000427a + BIOCPROMISC = 0x20004269 + BIOCROTZBUF = 0x400c4280 + BIOCSBLEN = 0xc0044266 + BIOCSDIRECTION = 0x80044277 + BIOCSDLT = 0x80044278 + BIOCSETBUFMODE = 0x8004427e + BIOCSETF = 0x80084267 + BIOCSETFNR = 0x80084282 + BIOCSETIF = 0x8020426c + BIOCSETVLANPCP = 0x80044285 + BIOCSETWF = 0x8008427b + BIOCSETZBUF = 0x800c4281 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8008426d + BIOCSSEESENT = 0x80044277 + BIOCSTSTAMP = 0x80044284 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_BUFMODE_BUFFER = 0x1 + BPF_BUFMODE_ZBUF = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_T_BINTIME = 0x2 + BPF_T_BINTIME_FAST = 0x102 + BPF_T_BINTIME_MONOTONIC = 0x202 + BPF_T_BINTIME_MONOTONIC_FAST = 0x302 + BPF_T_FAST = 0x100 + BPF_T_FLAG_MASK = 0x300 + BPF_T_FORMAT_MASK = 0x3 + BPF_T_MICROTIME = 0x0 + BPF_T_MICROTIME_FAST = 0x100 + BPF_T_MICROTIME_MONOTONIC = 0x200 + BPF_T_MICROTIME_MONOTONIC_FAST = 0x300 + BPF_T_MONOTONIC = 0x200 + BPF_T_MONOTONIC_FAST = 0x300 + BPF_T_NANOTIME = 0x1 + BPF_T_NANOTIME_FAST = 0x101 + BPF_T_NANOTIME_MONOTONIC = 0x201 + BPF_T_NANOTIME_MONOTONIC_FAST = 0x301 + BPF_T_NONE = 0x3 + BPF_T_NORMAL = 0x0 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + CAP_ACCEPT = 0x200000020000000 + CAP_ACL_CHECK = 0x400000000010000 + CAP_ACL_DELETE = 0x400000000020000 + CAP_ACL_GET = 0x400000000040000 + CAP_ACL_SET = 0x400000000080000 + CAP_ALL0 = 0x20007ffffffffff + CAP_ALL1 = 0x4000000001fffff + CAP_BIND = 0x200000040000000 + CAP_BINDAT = 0x200008000000400 + CAP_CHFLAGSAT = 0x200000000001400 + CAP_CONNECT = 0x200000080000000 + CAP_CONNECTAT = 0x200010000000400 + CAP_CREATE = 0x200000000000040 + CAP_EVENT = 0x400000000000020 + CAP_EXTATTR_DELETE = 0x400000000001000 + CAP_EXTATTR_GET = 0x400000000002000 + CAP_EXTATTR_LIST = 0x400000000004000 + CAP_EXTATTR_SET = 0x400000000008000 + CAP_FCHDIR = 0x200000000000800 + CAP_FCHFLAGS = 0x200000000001000 + CAP_FCHMOD = 0x200000000002000 + CAP_FCHMODAT = 0x200000000002400 + CAP_FCHOWN = 0x200000000004000 + CAP_FCHOWNAT = 0x200000000004400 + CAP_FCNTL = 0x200000000008000 + CAP_FCNTL_ALL = 0x78 + CAP_FCNTL_GETFL = 0x8 + CAP_FCNTL_GETOWN = 0x20 + CAP_FCNTL_SETFL = 0x10 + CAP_FCNTL_SETOWN = 0x40 + CAP_FEXECVE = 0x200000000000080 + CAP_FLOCK = 0x200000000010000 + CAP_FPATHCONF = 0x200000000020000 + CAP_FSCK = 0x200000000040000 + CAP_FSTAT = 0x200000000080000 + CAP_FSTATAT = 0x200000000080400 + CAP_FSTATFS = 0x200000000100000 + CAP_FSYNC = 0x200000000000100 + CAP_FTRUNCATE = 0x200000000000200 + CAP_FUTIMES = 0x200000000200000 + CAP_FUTIMESAT = 0x200000000200400 + CAP_GETPEERNAME = 0x200000100000000 + CAP_GETSOCKNAME = 0x200000200000000 + CAP_GETSOCKOPT = 0x200000400000000 + CAP_IOCTL = 0x400000000000080 + CAP_IOCTLS_ALL = 0x7fffffff + CAP_KQUEUE = 0x400000000100040 + CAP_KQUEUE_CHANGE = 0x400000000100000 + CAP_KQUEUE_EVENT = 0x400000000000040 + CAP_LINKAT_SOURCE = 0x200020000000400 + CAP_LINKAT_TARGET = 0x200000000400400 + CAP_LISTEN = 0x200000800000000 + CAP_LOOKUP = 0x200000000000400 + CAP_MAC_GET = 0x400000000000001 + CAP_MAC_SET = 0x400000000000002 + CAP_MKDIRAT = 0x200000000800400 + CAP_MKFIFOAT = 0x200000001000400 + CAP_MKNODAT = 0x200000002000400 + CAP_MMAP = 0x200000000000010 + CAP_MMAP_R = 0x20000000000001d + CAP_MMAP_RW = 0x20000000000001f + CAP_MMAP_RWX = 0x20000000000003f + CAP_MMAP_RX = 0x20000000000003d + CAP_MMAP_W = 0x20000000000001e + CAP_MMAP_WX = 0x20000000000003e + CAP_MMAP_X = 0x20000000000003c + CAP_PDGETPID = 0x400000000000200 + CAP_PDKILL = 0x400000000000800 + CAP_PDWAIT = 0x400000000000400 + CAP_PEELOFF = 0x200001000000000 + CAP_POLL_EVENT = 0x400000000000020 + CAP_PREAD = 0x20000000000000d + CAP_PWRITE = 0x20000000000000e + CAP_READ = 0x200000000000001 + CAP_RECV = 0x200000000000001 + CAP_RENAMEAT_SOURCE = 0x200000004000400 + CAP_RENAMEAT_TARGET = 0x200040000000400 + CAP_RIGHTS_VERSION = 0x0 + CAP_RIGHTS_VERSION_00 = 0x0 + CAP_SEEK = 0x20000000000000c + CAP_SEEK_TELL = 0x200000000000004 + CAP_SEM_GETVALUE = 0x400000000000004 + CAP_SEM_POST = 0x400000000000008 + CAP_SEM_WAIT = 0x400000000000010 + CAP_SEND = 0x200000000000002 + CAP_SETSOCKOPT = 0x200002000000000 + CAP_SHUTDOWN = 0x200004000000000 + CAP_SOCK_CLIENT = 0x200007780000003 + CAP_SOCK_SERVER = 0x200007f60000003 + CAP_SYMLINKAT = 0x200000008000400 + CAP_TTYHOOK = 0x400000000000100 + CAP_UNLINKAT = 0x200000010000400 + CAP_UNUSED0_44 = 0x200080000000000 + CAP_UNUSED0_57 = 0x300000000000000 + CAP_UNUSED1_22 = 0x400000000200000 + CAP_UNUSED1_57 = 0x500000000000000 + CAP_WRITE = 0x200000000000002 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x4 + CLOCK_MONOTONIC_FAST = 0xc + CLOCK_MONOTONIC_PRECISE = 0xb + CLOCK_PROCESS_CPUTIME_ID = 0xf + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_FAST = 0xa + CLOCK_REALTIME_PRECISE = 0x9 + CLOCK_SECOND = 0xd + CLOCK_THREAD_CPUTIME_ID = 0xe + CLOCK_UPTIME = 0x5 + CLOCK_UPTIME_FAST = 0x8 + CLOCK_UPTIME_PRECISE = 0x7 + CLOCK_VIRTUAL = 0x1 + CPUSTATES = 0x5 + CP_IDLE = 0x4 + CP_INTR = 0x3 + CP_NICE = 0x1 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0x18 + CTL_NET = 0x4 + DIOCGATTR = 0xc144648e + DIOCGDELETE = 0x80106488 + DIOCGFLUSH = 0x20006487 + DIOCGFRONTSTUFF = 0x40086486 + DIOCGFWHEADS = 0x40046483 + DIOCGFWSECTORS = 0x40046482 + DIOCGIDENT = 0x41006489 + DIOCGMEDIASIZE = 0x40086481 + DIOCGPHYSPATH = 0x4400648d + DIOCGPROVIDERNAME = 0x4400648a + DIOCGSECTORSIZE = 0x40046480 + DIOCGSTRIPEOFFSET = 0x4008648c + DIOCGSTRIPESIZE = 0x4008648b + DIOCSKERNELDUMP = 0x804c6490 + DIOCSKERNELDUMP_FREEBSD11 = 0x80046485 + DIOCZONECMD = 0xc06c648f + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_BREDR_BB = 0xff + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_BLUETOOTH_LE_LL = 0xfb + DLT_BLUETOOTH_LE_LL_WITH_PHDR = 0x100 + DLT_BLUETOOTH_LINUX_MONITOR = 0xfe + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_CLASS_NETBSD_RAWAF = 0x2240000 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DISPLAYPORT_AUX = 0x113 + DLT_DOCSIS = 0x8f + DLT_DOCSIS31_XRA31 = 0x111 + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_EPON = 0x103 + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_ETHERNET_MPACKET = 0x112 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_INFINIBAND = 0xf7 + DLT_IPFILTER = 0x74 + DLT_IPMB_KONTRON = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPMI_HPM_2 = 0x104 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_ISO_14443 = 0x108 + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LINUX_SLL2 = 0x114 + DLT_LOOP = 0x6c + DLT_LORATAP = 0x10e + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0x114 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NETLINK = 0xfd + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NORDIC_BLE = 0x110 + DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x79 + DLT_PKTAP = 0x102 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PROFIBUS_DL = 0x101 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RDS = 0x109 + DLT_REDBACK_SMARTEDGE = 0x20 + DLT_RIO = 0x7c + DLT_RTAC_SERIAL = 0xfa + DLT_SCCP = 0x8e + DLT_SCTP = 0xf8 + DLT_SDLC = 0x10c + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TI_LLN_SNIFFER = 0x10d + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USBPCAP = 0xf9 + DLT_USB_DARWIN = 0x10a + DLT_USB_FREEBSD = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_VSOCK = 0x10f + DLT_WATTSTOPPER_DLM = 0x107 + DLT_WIHART = 0xdf + DLT_WIRESHARK_UPPER_PDU = 0xfc + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DLT_ZWAVE_R1_R2 = 0x105 + DLT_ZWAVE_R3 = 0x106 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_EMPTY = -0xd + EVFILT_FS = -0x9 + EVFILT_LIO = -0xa + EVFILT_PROC = -0x5 + EVFILT_PROCDESC = -0x8 + EVFILT_READ = -0x1 + EVFILT_SENDFILE = -0xc + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xd + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xb + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EVNAMEMAP_NAME_SIZE = 0x40 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DROP = 0x1000 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_FLAG2 = 0x4000 + EV_FORCEONESHOT = 0x100 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_MAXNAMELEN = 0xff + EXTATTR_NAMESPACE_EMPTY = 0x0 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_CANCEL = 0x5 + F_DUP2FD = 0xa + F_DUP2FD_CLOEXEC = 0x12 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x11 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xb + F_GETOWN = 0x5 + F_OGETLK = 0x7 + F_OK = 0x0 + F_OSETLK = 0x8 + F_OSETLKW = 0x9 + F_RDAHEAD = 0x10 + F_RDLCK = 0x1 + F_READAHEAD = 0xf + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0xc + F_SETLKW = 0xd + F_SETLK_REMOTE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_UNLCKSYS = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFCAP_WOL_MAGIC = 0x2000 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x218f52 + IFF_CANTCONFIG = 0x10000 + IFF_DEBUG = 0x4 + IFF_DRV_OACTIVE = 0x400 + IFF_DRV_RUNNING = 0x40 + IFF_DYING = 0x200000 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MONITOR = 0x40000 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOGROUP = 0x800000 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PPROMISC = 0x20000 + IFF_PROMISC = 0x100 + IFF_RENAMING = 0x400000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x80000 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_IEEE1394 = 0x90 + IFT_INFINIBAND = 0xc7 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_PPP = 0x17 + IFT_PROPVIRTUAL = 0x35 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_MASK = 0xfffffffe + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CARP = 0x70 + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DCCP = 0x21 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HIP = 0x8b + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MEAS = 0x13 + IPPROTO_MH = 0x87 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OLD_DIVERT = 0xfe + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_RESERVED_253 = 0xfd + IPPROTO_RESERVED_254 = 0xfe + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEND = 0x103 + IPPROTO_SHIM6 = 0x8c + IPPROTO_SKIP = 0x39 + IPPROTO_SPACER = 0x7fff + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TLSP = 0x38 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDANY = 0x40 + IPV6_BINDMULTI = 0x41 + IPV6_BINDV6ONLY = 0x1b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FLOWID = 0x43 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_LEN = 0x14 + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOWTYPE = 0x44 + IPV6_FRAGTTL = 0x78 + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_ORIGDSTADDR = 0x48 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVFLOWID = 0x46 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVORIGDSTADDR = 0x48 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRSSBUCKETID = 0x47 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RSSBUCKETID = 0x45 + IPV6_RSS_LISTEN_BUCKET = 0x42 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IPV6_VLAN_PCP = 0x4b + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BINDANY = 0x18 + IP_BINDMULTI = 0x19 + IP_BLOCK_SOURCE = 0x48 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DONTFRAG = 0x43 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET3 = 0x31 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FLOWID = 0x5a + IP_FLOWTYPE = 0x5b + IP_FW3 = 0x30 + IP_FW_ADD = 0x32 + IP_FW_DEL = 0x33 + IP_FW_FLUSH = 0x34 + IP_FW_GET = 0x36 + IP_FW_NAT_CFG = 0x38 + IP_FW_NAT_DEL = 0x39 + IP_FW_NAT_GET_CONFIG = 0x3a + IP_FW_NAT_GET_LOG = 0x3b + IP_FW_RESETLOG = 0x37 + IP_FW_TABLE_ADD = 0x28 + IP_FW_TABLE_DEL = 0x29 + IP_FW_TABLE_FLUSH = 0x2a + IP_FW_TABLE_GETSIZE = 0x2b + IP_FW_TABLE_LIST = 0x2c + IP_FW_ZERO = 0x35 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MF = 0x2000 + IP_MINTTL = 0x42 + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_OFFMASK = 0x1fff + IP_ONESBCAST = 0x17 + IP_OPTIONS = 0x1 + IP_ORIGDSTADDR = 0x1b + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVFLOWID = 0x5d + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVORIGDSTADDR = 0x1b + IP_RECVRETOPTS = 0x6 + IP_RECVRSSBUCKETID = 0x5e + IP_RECVTOS = 0x44 + IP_RECVTTL = 0x41 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSSBUCKETID = 0x5c + IP_RSS_LISTEN_BUCKET = 0x1a + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + IP_VLAN_PCP = 0x4b + ISIG = 0x80 + ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCAL_CONNWAIT = 0x4 + LOCAL_CREDS = 0x2 + LOCAL_PEERCRED = 0x1 + LOCAL_VENDOR = 0x80000000 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_AUTOSYNC = 0x7 + MADV_CORE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_NOCORE = 0x8 + MADV_NORMAL = 0x0 + MADV_NOSYNC = 0x6 + MADV_PROTECT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MAP_ALIGNED_SUPER = 0x1000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_EXCL = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_GUARD = 0x2000 + MAP_HASSEMAPHORE = 0x200 + MAP_NOCORE = 0x20000 + MAP_NOSYNC = 0x800 + MAP_PREFAULT_READ = 0x40000 + MAP_PRIVATE = 0x2 + MAP_RESERVED0020 = 0x20 + MAP_RESERVED0040 = 0x40 + MAP_RESERVED0080 = 0x80 + MAP_RESERVED0100 = 0x100 + MAP_SHARED = 0x1 + MAP_STACK = 0x400 + MCAST_BLOCK_SOURCE = 0x54 + MCAST_EXCLUDE = 0x2 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x50 + MCAST_JOIN_SOURCE_GROUP = 0x52 + MCAST_LEAVE_GROUP = 0x51 + MCAST_LEAVE_SOURCE_GROUP = 0x53 + MCAST_UNBLOCK_SOURCE = 0x55 + MCAST_UNDEFINED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ACLS = 0x8000000 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x200000000 + MNT_BYFSID = 0x8000000 + MNT_CMDFLAGS = 0xd0f0000 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_EXKERB = 0x800 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x20000000 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_GJOURNAL = 0x2000000 + MNT_IGNORE = 0x800000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NFS4ACLS = 0x10 + MNT_NOATIME = 0x10000000 + MNT_NOCLUSTERR = 0x40000000 + MNT_NOCLUSTERW = 0x80000000 + MNT_NOEXEC = 0x4 + MNT_NONBUSY = 0x4000000 + MNT_NOSUID = 0x8 + MNT_NOSYMFOLLOW = 0x400000 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x1000000 + MNT_SOFTDEP = 0x200000 + MNT_SUIDDIR = 0x100000 + MNT_SUJ = 0x100000000 + MNT_SUSPEND = 0x4 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UNTRUSTED = 0x800000000 + MNT_UPDATE = 0x10000 + MNT_UPDATEMASK = 0xad8d0807e + MNT_USER = 0x8000 + MNT_VERIFIED = 0x400000000 + MNT_VISFLAGMASK = 0xffef0ffff + MNT_WAIT = 0x1 + MSG_CMSG_CLOEXEC = 0x40000 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_NBIO = 0x4000 + MSG_NOSIGNAL = 0x20000 + MSG_NOTIFICATION = 0x2000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x80000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x0 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLISTL = 0x5 + NET_RT_IFMALIST = 0x4 + NFDBITS = 0x20 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ABSTIME = 0x10 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_CLOSE = 0x100 + NOTE_CLOSE_WRITE = 0x200 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FILE_POLL = 0x2 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MSECONDS = 0x2 + NOTE_NSECONDS = 0x8 + NOTE_OPEN = 0x80 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_READ = 0x400 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x4 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x100000 + O_CREAT = 0x200 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x20000 + O_EXCL = 0x800 + O_EXEC = 0x40000 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RESOLVE_BENEATH = 0x800000 + O_SEARCH = 0x40000 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_TTY_INIT = 0x80000 + O_VERIFY = 0x200000 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PIOD_READ_D = 0x1 + PIOD_READ_I = 0x3 + PIOD_WRITE_D = 0x2 + PIOD_WRITE_I = 0x4 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PTRACE_DEFAULT = 0x1 + PTRACE_EXEC = 0x1 + PTRACE_FORK = 0x8 + PTRACE_LWP = 0x10 + PTRACE_SCE = 0x2 + PTRACE_SCX = 0x4 + PTRACE_SYSCALL = 0x6 + PTRACE_VFORK = 0x20 + PT_ATTACH = 0xa + PT_CLEARSTEP = 0x10 + PT_CONTINUE = 0x7 + PT_DETACH = 0xb + PT_FIRSTMACH = 0x40 + PT_FOLLOW_FORK = 0x17 + PT_GETDBREGS = 0x25 + PT_GETFPREGS = 0x23 + PT_GETFSBASE = 0x47 + PT_GETGSBASE = 0x49 + PT_GETLWPLIST = 0xf + PT_GETNUMLWPS = 0xe + PT_GETREGS = 0x21 + PT_GETXMMREGS = 0x40 + PT_GETXSTATE = 0x45 + PT_GETXSTATE_INFO = 0x44 + PT_GET_EVENT_MASK = 0x19 + PT_GET_SC_ARGS = 0x1b + PT_GET_SC_RET = 0x1c + PT_IO = 0xc + PT_KILL = 0x8 + PT_LWPINFO = 0xd + PT_LWP_EVENTS = 0x18 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_RESUME = 0x13 + PT_SETDBREGS = 0x26 + PT_SETFPREGS = 0x24 + PT_SETFSBASE = 0x48 + PT_SETGSBASE = 0x4a + PT_SETREGS = 0x22 + PT_SETSTEP = 0x11 + PT_SETXMMREGS = 0x41 + PT_SETXSTATE = 0x46 + PT_SET_EVENT_MASK = 0x1a + PT_STEP = 0x9 + PT_SUSPEND = 0x12 + PT_SYSCALL = 0x16 + PT_TO_SCE = 0x14 + PT_TO_SCX = 0x15 + PT_TRACE_ME = 0x0 + PT_VM_ENTRY = 0x29 + PT_VM_TIMESTAMP = 0x28 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + P_ZONEID = 0xc + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FIXEDMTU = 0x80000 + RTF_FMASK = 0x1004d808 + RTF_GATEWAY = 0x2 + RTF_GWFLAG_COMPAT = 0x80000000 + RTF_HOST = 0x4 + RTF_LLDATA = 0x400 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_RNH_LOCKED = 0x40000000 + RTF_STATIC = 0x800 + RTF_STICKY = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x12 + RTM_IFANNOUNCE = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RTV_WEIGHT = 0x100 + RT_ALL_FIBS = -0x1 + RT_BLACKHOLE = 0x40 + RT_DEFAULT_FIB = 0x0 + RT_HAS_GW = 0x80 + RT_HAS_HEADER = 0x10 + RT_HAS_HEADER_BIT = 0x4 + RT_L2_ME = 0x4 + RT_L2_ME_BIT = 0x2 + RT_LLE_CACHE = 0x100 + RT_MAY_LOOP = 0x8 + RT_MAY_LOOP_BIT = 0x3 + RT_REJECT = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_BINTIME = 0x4 + SCM_CREDS = 0x3 + SCM_MONOTONIC = 0x6 + SCM_REALTIME = 0x5 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SCM_TIME_INFO = 0x7 + SEEK_CUR = 0x1 + SEEK_DATA = 0x3 + SEEK_END = 0x2 + SEEK_HOLE = 0x4 + SEEK_SET = 0x0 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80246987 + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80246989 + SIOCDIFPHYADDR = 0x80206949 + SIOCGDRVSPEC = 0xc01c697b + SIOCGETSGCNT = 0xc0147210 + SIOCGETVIFCNT = 0xc014720f + SIOCGHIWAT = 0x40047301 + SIOCGHWADDR = 0xc020693e + SIOCGI2C = 0xc020693d + SIOCGIFADDR = 0xc0206921 + SIOCGIFALIAS = 0xc044692d + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020691f + SIOCGIFCONF = 0xc0086924 + SIOCGIFDESCR = 0xc020692a + SIOCGIFDOWNREASON = 0xc058699a + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFIB = 0xc020695c + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc024698a + SIOCGIFGROUP = 0xc0246988 + SIOCGIFINDEX = 0xc0206920 + SIOCGIFMAC = 0xc0206926 + SIOCGIFMEDIA = 0xc0286938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFRSSHASH = 0xc0186997 + SIOCGIFRSSKEY = 0xc0946996 + SIOCGIFSTATUS = 0xc331693b + SIOCGIFXMEDIA = 0xc028698b + SIOCGLANPCP = 0xc0206998 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGPRIVATE_0 = 0xc0206950 + SIOCGPRIVATE_1 = 0xc0206951 + SIOCGTUNFIB = 0xc020695e + SIOCIFCREATE = 0xc020697a + SIOCIFCREATE2 = 0xc020697c + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc00c6978 + SIOCSDRVSPEC = 0x801c697b + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020691e + SIOCSIFDESCR = 0x80206929 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFIB = 0x8020695d + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206927 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNAME = 0x80206928 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPHYS = 0x80206936 + SIOCSIFRVNET = 0xc020695b + SIOCSIFVNET = 0xc020695a + SIOCSLANPCP = 0x80206999 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSTUNFIB = 0x8020695f + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_NONBLOCK = 0x20000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_LOCAL = 0x0 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BINTIME = 0x2000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DOMAIN = 0x1019 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1009 + SO_LINGER = 0x80 + SO_LISTENINCQLEN = 0x1013 + SO_LISTENQLEN = 0x1012 + SO_LISTENQLIMIT = 0x1011 + SO_MAX_PACING_RATE = 0x1018 + SO_NOSIGPIPE = 0x800 + SO_NO_DDP = 0x8000 + SO_NO_OFFLOAD = 0x4000 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1010 + SO_PROTOCOL = 0x1016 + SO_PROTOTYPE = 0x1016 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_RERROR = 0x20000 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_REUSEPORT_LB = 0x10000 + SO_SETFIB = 0x1014 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TS_BINTIME = 0x1 + SO_TS_CLOCK = 0x1017 + SO_TS_CLOCK_MAX = 0x3 + SO_TS_DEFAULT = 0x0 + SO_TS_MONOTONIC = 0x3 + SO_TS_REALTIME = 0x2 + SO_TS_REALTIME_MICRO = 0x0 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USER_COOKIE = 0x1015 + SO_VENDOR = 0x80000000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB3 = 0x4 + TABDLY = 0x4 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCPOPT_EOL = 0x0 + TCPOPT_FAST_OPEN = 0x22 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_PAD = 0x0 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_WINDOW = 0x3 + TCP_BBR_ACK_COMP_ALG = 0x448 + TCP_BBR_ALGORITHM = 0x43b + TCP_BBR_DRAIN_INC_EXTRA = 0x43c + TCP_BBR_DRAIN_PG = 0x42e + TCP_BBR_EXTRA_GAIN = 0x449 + TCP_BBR_EXTRA_STATE = 0x453 + TCP_BBR_FLOOR_MIN_TSO = 0x454 + TCP_BBR_HDWR_PACE = 0x451 + TCP_BBR_HOLD_TARGET = 0x436 + TCP_BBR_IWINTSO = 0x42b + TCP_BBR_LOWGAIN_FD = 0x436 + TCP_BBR_LOWGAIN_HALF = 0x435 + TCP_BBR_LOWGAIN_THRESH = 0x434 + TCP_BBR_MAX_RTO = 0x439 + TCP_BBR_MIN_RTO = 0x438 + TCP_BBR_MIN_TOPACEOUT = 0x455 + TCP_BBR_ONE_RETRAN = 0x431 + TCP_BBR_PACE_CROSS = 0x442 + TCP_BBR_PACE_DEL_TAR = 0x43f + TCP_BBR_PACE_OH = 0x435 + TCP_BBR_PACE_PER_SEC = 0x43e + TCP_BBR_PACE_SEG_MAX = 0x440 + TCP_BBR_PACE_SEG_MIN = 0x441 + TCP_BBR_POLICER_DETECT = 0x457 + TCP_BBR_PROBE_RTT_GAIN = 0x44d + TCP_BBR_PROBE_RTT_INT = 0x430 + TCP_BBR_PROBE_RTT_LEN = 0x44e + TCP_BBR_RACK_RTT_USE = 0x44a + TCP_BBR_RECFORCE = 0x42c + TCP_BBR_REC_OVER_HPTS = 0x43a + TCP_BBR_RETRAN_WTSO = 0x44b + TCP_BBR_RWND_IS_APP = 0x42f + TCP_BBR_SEND_IWND_IN_TSO = 0x44f + TCP_BBR_STARTUP_EXIT_EPOCH = 0x43d + TCP_BBR_STARTUP_LOSS_EXIT = 0x432 + TCP_BBR_STARTUP_PG = 0x42d + TCP_BBR_TMR_PACE_OH = 0x448 + TCP_BBR_TSLIMITS = 0x434 + TCP_BBR_TSTMP_RAISES = 0x456 + TCP_BBR_UNLIMITED = 0x43b + TCP_BBR_USEDEL_RATE = 0x437 + TCP_BBR_USE_LOWGAIN = 0x433 + TCP_BBR_USE_RACK_CHEAT = 0x450 + TCP_BBR_UTTER_MAX_TSO = 0x452 + TCP_CA_NAME_MAX = 0x10 + TCP_CCALGOOPT = 0x41 + TCP_CONGESTION = 0x40 + TCP_DATA_AFTER_CLOSE = 0x44c + TCP_DELACK = 0x48 + TCP_FASTOPEN = 0x401 + TCP_FASTOPEN_MAX_COOKIE_LEN = 0x10 + TCP_FASTOPEN_MIN_COOKIE_LEN = 0x4 + TCP_FASTOPEN_PSK_LEN = 0x10 + TCP_FUNCTION_BLK = 0x2000 + TCP_FUNCTION_NAME_LEN_MAX = 0x20 + TCP_INFO = 0x20 + TCP_KEEPCNT = 0x400 + TCP_KEEPIDLE = 0x100 + TCP_KEEPINIT = 0x80 + TCP_KEEPINTVL = 0x200 + TCP_LOG = 0x22 + TCP_LOGBUF = 0x23 + TCP_LOGDUMP = 0x25 + TCP_LOGDUMPID = 0x26 + TCP_LOGID = 0x24 + TCP_LOG_ID_LEN = 0x40 + TCP_MAXBURST = 0x4 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_PCAP_IN = 0x1000 + TCP_PCAP_OUT = 0x800 + TCP_RACK_EARLY_RECOV = 0x423 + TCP_RACK_EARLY_SEG = 0x424 + TCP_RACK_GP_INCREASE = 0x446 + TCP_RACK_IDLE_REDUCE_HIGH = 0x444 + TCP_RACK_MIN_PACE = 0x445 + TCP_RACK_MIN_PACE_SEG = 0x446 + TCP_RACK_MIN_TO = 0x422 + TCP_RACK_PACE_ALWAYS = 0x41f + TCP_RACK_PACE_MAX_SEG = 0x41e + TCP_RACK_PACE_REDUCE = 0x41d + TCP_RACK_PKT_DELAY = 0x428 + TCP_RACK_PROP = 0x41b + TCP_RACK_PROP_RATE = 0x420 + TCP_RACK_PRR_SENDALOT = 0x421 + TCP_RACK_REORD_FADE = 0x426 + TCP_RACK_REORD_THRESH = 0x425 + TCP_RACK_TLP_INC_VAR = 0x429 + TCP_RACK_TLP_REDUCE = 0x41c + TCP_RACK_TLP_THRESH = 0x427 + TCP_RACK_TLP_USE = 0x447 + TCP_VENDOR = 0x80000000 + TCSAFLUSH = 0x2 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGPTN = 0x4004740f + TIOCGSID = 0x40047463 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DCD = 0x40 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMASTER = 0x2000741c + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40087459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + UTIME_NOW = -0x1 + UTIME_OMIT = -0x2 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VERASE2 = 0x7 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_BCACHE_SIZE_MAX = 0x70e0000 + VM_SWZONE_SIZE_MAX = 0x2280000 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x4 + WCOREFLAG = 0x80 + WEXITED = 0x10 + WLINUXCLONE = 0x80000000 + WNOHANG = 0x1 + WNOWAIT = 0x8 + WSTOPPED = 0x2 + WTRAPPED = 0x20 + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x59) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x55) + ECAPMODE = syscall.Errno(0x5e) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDOOFUS = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x56) + EINPROGRESS = syscall.Errno(0x24) + EINTEGRITY = syscall.Errno(0x61) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x61) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5a) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x57) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCAPABLE = syscall.Errno(0x5d) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5f) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x60) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5c) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGLIBRT = syscall.Signal(0x21) + SIGLWP = syscall.Signal(0x20) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EWOULDBLOCK", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "ECANCELED", "operation canceled"}, + {86, "EILSEQ", "illegal byte sequence"}, + {87, "ENOATTR", "attribute not found"}, + {88, "EDOOFUS", "programming error"}, + {89, "EBADMSG", "bad message"}, + {90, "EMULTIHOP", "multihop attempted"}, + {91, "ENOLINK", "link has been severed"}, + {92, "EPROTO", "protocol error"}, + {93, "ENOTCAPABLE", "capabilities insufficient"}, + {94, "ECAPMODE", "not permitted in capability mode"}, + {95, "ENOTRECOVERABLE", "state not recoverable"}, + {96, "EOWNERDEAD", "previous owner died"}, + {97, "EINTEGRITY", "integrity check failed"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "unknown signal"}, + {33, "SIGLIBRT", "unknown signal"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go b/tests/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go new file mode 100644 index 000000000..dd9163f8e --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go @@ -0,0 +1,2039 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && freebsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x23 + AF_ATM = 0x1e + AF_BLUETOOTH = 0x24 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1c + AF_INET6_SDP = 0x2a + AF_INET_SDP = 0x28 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x2a + AF_NATM = 0x1d + AF_NETBIOS = 0x6 + AF_NETGRAPH = 0x20 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SCLUSTER = 0x22 + AF_SIP = 0x18 + AF_SLOW = 0x21 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VENDOR00 = 0x27 + AF_VENDOR01 = 0x29 + AF_VENDOR02 = 0x2b + AF_VENDOR03 = 0x2d + AF_VENDOR04 = 0x2f + AF_VENDOR05 = 0x31 + AF_VENDOR06 = 0x33 + AF_VENDOR07 = 0x35 + AF_VENDOR08 = 0x37 + AF_VENDOR09 = 0x39 + AF_VENDOR10 = 0x3b + AF_VENDOR11 = 0x3d + AF_VENDOR12 = 0x3f + AF_VENDOR13 = 0x41 + AF_VENDOR14 = 0x43 + AF_VENDOR15 = 0x45 + AF_VENDOR16 = 0x47 + AF_VENDOR17 = 0x49 + AF_VENDOR18 = 0x4b + AF_VENDOR19 = 0x4d + AF_VENDOR20 = 0x4f + AF_VENDOR21 = 0x51 + AF_VENDOR22 = 0x53 + AF_VENDOR23 = 0x55 + AF_VENDOR24 = 0x57 + AF_VENDOR25 = 0x59 + AF_VENDOR26 = 0x5b + AF_VENDOR27 = 0x5d + AF_VENDOR28 = 0x5f + AF_VENDOR29 = 0x61 + AF_VENDOR30 = 0x63 + AF_VENDOR31 = 0x65 + AF_VENDOR32 = 0x67 + AF_VENDOR33 = 0x69 + AF_VENDOR34 = 0x6b + AF_VENDOR35 = 0x6d + AF_VENDOR36 = 0x6f + AF_VENDOR37 = 0x71 + AF_VENDOR38 = 0x73 + AF_VENDOR39 = 0x75 + AF_VENDOR40 = 0x77 + AF_VENDOR41 = 0x79 + AF_VENDOR42 = 0x7b + AF_VENDOR43 = 0x7d + AF_VENDOR44 = 0x7f + AF_VENDOR45 = 0x81 + AF_VENDOR46 = 0x83 + AF_VENDOR47 = 0x85 + ALTWERASE = 0x200 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427c + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRECTION = 0x40044276 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0104279 + BIOCGETBUFMODE = 0x4004427d + BIOCGETIF = 0x4020426b + BIOCGETZMAX = 0x4008427f + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCGTSTAMP = 0x40044283 + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x2000427a + BIOCPROMISC = 0x20004269 + BIOCROTZBUF = 0x40184280 + BIOCSBLEN = 0xc0044266 + BIOCSDIRECTION = 0x80044277 + BIOCSDLT = 0x80044278 + BIOCSETBUFMODE = 0x8004427e + BIOCSETF = 0x80104267 + BIOCSETFNR = 0x80104282 + BIOCSETIF = 0x8020426c + BIOCSETVLANPCP = 0x80044285 + BIOCSETWF = 0x8010427b + BIOCSETZBUF = 0x80184281 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCSTSTAMP = 0x80044284 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x8 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_BUFMODE_BUFFER = 0x1 + BPF_BUFMODE_ZBUF = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_T_BINTIME = 0x2 + BPF_T_BINTIME_FAST = 0x102 + BPF_T_BINTIME_MONOTONIC = 0x202 + BPF_T_BINTIME_MONOTONIC_FAST = 0x302 + BPF_T_FAST = 0x100 + BPF_T_FLAG_MASK = 0x300 + BPF_T_FORMAT_MASK = 0x3 + BPF_T_MICROTIME = 0x0 + BPF_T_MICROTIME_FAST = 0x100 + BPF_T_MICROTIME_MONOTONIC = 0x200 + BPF_T_MICROTIME_MONOTONIC_FAST = 0x300 + BPF_T_MONOTONIC = 0x200 + BPF_T_MONOTONIC_FAST = 0x300 + BPF_T_NANOTIME = 0x1 + BPF_T_NANOTIME_FAST = 0x101 + BPF_T_NANOTIME_MONOTONIC = 0x201 + BPF_T_NANOTIME_MONOTONIC_FAST = 0x301 + BPF_T_NONE = 0x3 + BPF_T_NORMAL = 0x0 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + CAP_ACCEPT = 0x200000020000000 + CAP_ACL_CHECK = 0x400000000010000 + CAP_ACL_DELETE = 0x400000000020000 + CAP_ACL_GET = 0x400000000040000 + CAP_ACL_SET = 0x400000000080000 + CAP_ALL0 = 0x20007ffffffffff + CAP_ALL1 = 0x4000000001fffff + CAP_BIND = 0x200000040000000 + CAP_BINDAT = 0x200008000000400 + CAP_CHFLAGSAT = 0x200000000001400 + CAP_CONNECT = 0x200000080000000 + CAP_CONNECTAT = 0x200010000000400 + CAP_CREATE = 0x200000000000040 + CAP_EVENT = 0x400000000000020 + CAP_EXTATTR_DELETE = 0x400000000001000 + CAP_EXTATTR_GET = 0x400000000002000 + CAP_EXTATTR_LIST = 0x400000000004000 + CAP_EXTATTR_SET = 0x400000000008000 + CAP_FCHDIR = 0x200000000000800 + CAP_FCHFLAGS = 0x200000000001000 + CAP_FCHMOD = 0x200000000002000 + CAP_FCHMODAT = 0x200000000002400 + CAP_FCHOWN = 0x200000000004000 + CAP_FCHOWNAT = 0x200000000004400 + CAP_FCNTL = 0x200000000008000 + CAP_FCNTL_ALL = 0x78 + CAP_FCNTL_GETFL = 0x8 + CAP_FCNTL_GETOWN = 0x20 + CAP_FCNTL_SETFL = 0x10 + CAP_FCNTL_SETOWN = 0x40 + CAP_FEXECVE = 0x200000000000080 + CAP_FLOCK = 0x200000000010000 + CAP_FPATHCONF = 0x200000000020000 + CAP_FSCK = 0x200000000040000 + CAP_FSTAT = 0x200000000080000 + CAP_FSTATAT = 0x200000000080400 + CAP_FSTATFS = 0x200000000100000 + CAP_FSYNC = 0x200000000000100 + CAP_FTRUNCATE = 0x200000000000200 + CAP_FUTIMES = 0x200000000200000 + CAP_FUTIMESAT = 0x200000000200400 + CAP_GETPEERNAME = 0x200000100000000 + CAP_GETSOCKNAME = 0x200000200000000 + CAP_GETSOCKOPT = 0x200000400000000 + CAP_IOCTL = 0x400000000000080 + CAP_IOCTLS_ALL = 0x7fffffffffffffff + CAP_KQUEUE = 0x400000000100040 + CAP_KQUEUE_CHANGE = 0x400000000100000 + CAP_KQUEUE_EVENT = 0x400000000000040 + CAP_LINKAT_SOURCE = 0x200020000000400 + CAP_LINKAT_TARGET = 0x200000000400400 + CAP_LISTEN = 0x200000800000000 + CAP_LOOKUP = 0x200000000000400 + CAP_MAC_GET = 0x400000000000001 + CAP_MAC_SET = 0x400000000000002 + CAP_MKDIRAT = 0x200000000800400 + CAP_MKFIFOAT = 0x200000001000400 + CAP_MKNODAT = 0x200000002000400 + CAP_MMAP = 0x200000000000010 + CAP_MMAP_R = 0x20000000000001d + CAP_MMAP_RW = 0x20000000000001f + CAP_MMAP_RWX = 0x20000000000003f + CAP_MMAP_RX = 0x20000000000003d + CAP_MMAP_W = 0x20000000000001e + CAP_MMAP_WX = 0x20000000000003e + CAP_MMAP_X = 0x20000000000003c + CAP_PDGETPID = 0x400000000000200 + CAP_PDKILL = 0x400000000000800 + CAP_PDWAIT = 0x400000000000400 + CAP_PEELOFF = 0x200001000000000 + CAP_POLL_EVENT = 0x400000000000020 + CAP_PREAD = 0x20000000000000d + CAP_PWRITE = 0x20000000000000e + CAP_READ = 0x200000000000001 + CAP_RECV = 0x200000000000001 + CAP_RENAMEAT_SOURCE = 0x200000004000400 + CAP_RENAMEAT_TARGET = 0x200040000000400 + CAP_RIGHTS_VERSION = 0x0 + CAP_RIGHTS_VERSION_00 = 0x0 + CAP_SEEK = 0x20000000000000c + CAP_SEEK_TELL = 0x200000000000004 + CAP_SEM_GETVALUE = 0x400000000000004 + CAP_SEM_POST = 0x400000000000008 + CAP_SEM_WAIT = 0x400000000000010 + CAP_SEND = 0x200000000000002 + CAP_SETSOCKOPT = 0x200002000000000 + CAP_SHUTDOWN = 0x200004000000000 + CAP_SOCK_CLIENT = 0x200007780000003 + CAP_SOCK_SERVER = 0x200007f60000003 + CAP_SYMLINKAT = 0x200000008000400 + CAP_TTYHOOK = 0x400000000000100 + CAP_UNLINKAT = 0x200000010000400 + CAP_UNUSED0_44 = 0x200080000000000 + CAP_UNUSED0_57 = 0x300000000000000 + CAP_UNUSED1_22 = 0x400000000200000 + CAP_UNUSED1_57 = 0x500000000000000 + CAP_WRITE = 0x200000000000002 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x4 + CLOCK_MONOTONIC_FAST = 0xc + CLOCK_MONOTONIC_PRECISE = 0xb + CLOCK_PROCESS_CPUTIME_ID = 0xf + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_FAST = 0xa + CLOCK_REALTIME_PRECISE = 0x9 + CLOCK_SECOND = 0xd + CLOCK_THREAD_CPUTIME_ID = 0xe + CLOCK_UPTIME = 0x5 + CLOCK_UPTIME_FAST = 0x8 + CLOCK_UPTIME_PRECISE = 0x7 + CLOCK_VIRTUAL = 0x1 + CPUSTATES = 0x5 + CP_IDLE = 0x4 + CP_INTR = 0x3 + CP_NICE = 0x1 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0x18 + CTL_NET = 0x4 + DIOCGATTR = 0xc148648e + DIOCGDELETE = 0x80106488 + DIOCGFLUSH = 0x20006487 + DIOCGFRONTSTUFF = 0x40086486 + DIOCGFWHEADS = 0x40046483 + DIOCGFWSECTORS = 0x40046482 + DIOCGIDENT = 0x41006489 + DIOCGMEDIASIZE = 0x40086481 + DIOCGPHYSPATH = 0x4400648d + DIOCGPROVIDERNAME = 0x4400648a + DIOCGSECTORSIZE = 0x40046480 + DIOCGSTRIPEOFFSET = 0x4008648c + DIOCGSTRIPESIZE = 0x4008648b + DIOCSKERNELDUMP = 0x80506490 + DIOCSKERNELDUMP_FREEBSD11 = 0x80046485 + DIOCZONECMD = 0xc080648f + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_BREDR_BB = 0xff + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_BLUETOOTH_LE_LL = 0xfb + DLT_BLUETOOTH_LE_LL_WITH_PHDR = 0x100 + DLT_BLUETOOTH_LINUX_MONITOR = 0xfe + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_CLASS_NETBSD_RAWAF = 0x2240000 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DISPLAYPORT_AUX = 0x113 + DLT_DOCSIS = 0x8f + DLT_DOCSIS31_XRA31 = 0x111 + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_EPON = 0x103 + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_ETHERNET_MPACKET = 0x112 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_INFINIBAND = 0xf7 + DLT_IPFILTER = 0x74 + DLT_IPMB_KONTRON = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPMI_HPM_2 = 0x104 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_ISO_14443 = 0x108 + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LINUX_SLL2 = 0x114 + DLT_LOOP = 0x6c + DLT_LORATAP = 0x10e + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0x114 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NETLINK = 0xfd + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NORDIC_BLE = 0x110 + DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x79 + DLT_PKTAP = 0x102 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PROFIBUS_DL = 0x101 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RDS = 0x109 + DLT_REDBACK_SMARTEDGE = 0x20 + DLT_RIO = 0x7c + DLT_RTAC_SERIAL = 0xfa + DLT_SCCP = 0x8e + DLT_SCTP = 0xf8 + DLT_SDLC = 0x10c + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TI_LLN_SNIFFER = 0x10d + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USBPCAP = 0xf9 + DLT_USB_DARWIN = 0x10a + DLT_USB_FREEBSD = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_VSOCK = 0x10f + DLT_WATTSTOPPER_DLM = 0x107 + DLT_WIHART = 0xdf + DLT_WIRESHARK_UPPER_PDU = 0xfc + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DLT_ZWAVE_R1_R2 = 0x105 + DLT_ZWAVE_R3 = 0x106 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_EMPTY = -0xd + EVFILT_FS = -0x9 + EVFILT_LIO = -0xa + EVFILT_PROC = -0x5 + EVFILT_PROCDESC = -0x8 + EVFILT_READ = -0x1 + EVFILT_SENDFILE = -0xc + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xd + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xb + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EVNAMEMAP_NAME_SIZE = 0x40 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DROP = 0x1000 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_FLAG2 = 0x4000 + EV_FORCEONESHOT = 0x100 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_MAXNAMELEN = 0xff + EXTATTR_NAMESPACE_EMPTY = 0x0 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_CANCEL = 0x5 + F_DUP2FD = 0xa + F_DUP2FD_CLOEXEC = 0x12 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x11 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xb + F_GETOWN = 0x5 + F_OGETLK = 0x7 + F_OK = 0x0 + F_OSETLK = 0x8 + F_OSETLKW = 0x9 + F_RDAHEAD = 0x10 + F_RDLCK = 0x1 + F_READAHEAD = 0xf + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0xc + F_SETLKW = 0xd + F_SETLK_REMOTE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_UNLCKSYS = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFCAP_WOL_MAGIC = 0x2000 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x218f52 + IFF_CANTCONFIG = 0x10000 + IFF_DEBUG = 0x4 + IFF_DRV_OACTIVE = 0x400 + IFF_DRV_RUNNING = 0x40 + IFF_DYING = 0x200000 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MONITOR = 0x40000 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOGROUP = 0x800000 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PPROMISC = 0x20000 + IFF_PROMISC = 0x100 + IFF_RENAMING = 0x400000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x80000 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_IEEE1394 = 0x90 + IFT_INFINIBAND = 0xc7 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_PPP = 0x17 + IFT_PROPVIRTUAL = 0x35 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_MASK = 0xfffffffe + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CARP = 0x70 + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DCCP = 0x21 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HIP = 0x8b + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MEAS = 0x13 + IPPROTO_MH = 0x87 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OLD_DIVERT = 0xfe + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_RESERVED_253 = 0xfd + IPPROTO_RESERVED_254 = 0xfe + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEND = 0x103 + IPPROTO_SHIM6 = 0x8c + IPPROTO_SKIP = 0x39 + IPPROTO_SPACER = 0x7fff + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TLSP = 0x38 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDANY = 0x40 + IPV6_BINDMULTI = 0x41 + IPV6_BINDV6ONLY = 0x1b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FLOWID = 0x43 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_LEN = 0x14 + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOWTYPE = 0x44 + IPV6_FRAGTTL = 0x78 + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_ORIGDSTADDR = 0x48 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVFLOWID = 0x46 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVORIGDSTADDR = 0x48 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRSSBUCKETID = 0x47 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RSSBUCKETID = 0x45 + IPV6_RSS_LISTEN_BUCKET = 0x42 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IPV6_VLAN_PCP = 0x4b + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BINDANY = 0x18 + IP_BINDMULTI = 0x19 + IP_BLOCK_SOURCE = 0x48 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DONTFRAG = 0x43 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET3 = 0x31 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FLOWID = 0x5a + IP_FLOWTYPE = 0x5b + IP_FW3 = 0x30 + IP_FW_ADD = 0x32 + IP_FW_DEL = 0x33 + IP_FW_FLUSH = 0x34 + IP_FW_GET = 0x36 + IP_FW_NAT_CFG = 0x38 + IP_FW_NAT_DEL = 0x39 + IP_FW_NAT_GET_CONFIG = 0x3a + IP_FW_NAT_GET_LOG = 0x3b + IP_FW_RESETLOG = 0x37 + IP_FW_TABLE_ADD = 0x28 + IP_FW_TABLE_DEL = 0x29 + IP_FW_TABLE_FLUSH = 0x2a + IP_FW_TABLE_GETSIZE = 0x2b + IP_FW_TABLE_LIST = 0x2c + IP_FW_ZERO = 0x35 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MF = 0x2000 + IP_MINTTL = 0x42 + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_OFFMASK = 0x1fff + IP_ONESBCAST = 0x17 + IP_OPTIONS = 0x1 + IP_ORIGDSTADDR = 0x1b + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVFLOWID = 0x5d + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVORIGDSTADDR = 0x1b + IP_RECVRETOPTS = 0x6 + IP_RECVRSSBUCKETID = 0x5e + IP_RECVTOS = 0x44 + IP_RECVTTL = 0x41 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSSBUCKETID = 0x5c + IP_RSS_LISTEN_BUCKET = 0x1a + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + IP_VLAN_PCP = 0x4b + ISIG = 0x80 + ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCAL_CONNWAIT = 0x4 + LOCAL_CREDS = 0x2 + LOCAL_PEERCRED = 0x1 + LOCAL_VENDOR = 0x80000000 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_AUTOSYNC = 0x7 + MADV_CORE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_NOCORE = 0x8 + MADV_NORMAL = 0x0 + MADV_NOSYNC = 0x6 + MADV_PROTECT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MAP_32BIT = 0x80000 + MAP_ALIGNED_SUPER = 0x1000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_EXCL = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_GUARD = 0x2000 + MAP_HASSEMAPHORE = 0x200 + MAP_NOCORE = 0x20000 + MAP_NOSYNC = 0x800 + MAP_PREFAULT_READ = 0x40000 + MAP_PRIVATE = 0x2 + MAP_RESERVED0020 = 0x20 + MAP_RESERVED0040 = 0x40 + MAP_RESERVED0080 = 0x80 + MAP_RESERVED0100 = 0x100 + MAP_SHARED = 0x1 + MAP_STACK = 0x400 + MCAST_BLOCK_SOURCE = 0x54 + MCAST_EXCLUDE = 0x2 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x50 + MCAST_JOIN_SOURCE_GROUP = 0x52 + MCAST_LEAVE_GROUP = 0x51 + MCAST_LEAVE_SOURCE_GROUP = 0x53 + MCAST_UNBLOCK_SOURCE = 0x55 + MCAST_UNDEFINED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ACLS = 0x8000000 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x200000000 + MNT_BYFSID = 0x8000000 + MNT_CMDFLAGS = 0xd0f0000 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_EXKERB = 0x800 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x20000000 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_GJOURNAL = 0x2000000 + MNT_IGNORE = 0x800000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NFS4ACLS = 0x10 + MNT_NOATIME = 0x10000000 + MNT_NOCLUSTERR = 0x40000000 + MNT_NOCLUSTERW = 0x80000000 + MNT_NOEXEC = 0x4 + MNT_NONBUSY = 0x4000000 + MNT_NOSUID = 0x8 + MNT_NOSYMFOLLOW = 0x400000 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x1000000 + MNT_SOFTDEP = 0x200000 + MNT_SUIDDIR = 0x100000 + MNT_SUJ = 0x100000000 + MNT_SUSPEND = 0x4 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UNTRUSTED = 0x800000000 + MNT_UPDATE = 0x10000 + MNT_UPDATEMASK = 0xad8d0807e + MNT_USER = 0x8000 + MNT_VERIFIED = 0x400000000 + MNT_VISFLAGMASK = 0xffef0ffff + MNT_WAIT = 0x1 + MSG_CMSG_CLOEXEC = 0x40000 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_NBIO = 0x4000 + MSG_NOSIGNAL = 0x20000 + MSG_NOTIFICATION = 0x2000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x80000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x0 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLISTL = 0x5 + NET_RT_IFMALIST = 0x4 + NFDBITS = 0x40 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ABSTIME = 0x10 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_CLOSE = 0x100 + NOTE_CLOSE_WRITE = 0x200 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FILE_POLL = 0x2 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MSECONDS = 0x2 + NOTE_NSECONDS = 0x8 + NOTE_OPEN = 0x80 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_READ = 0x400 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x4 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x100000 + O_CREAT = 0x200 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x20000 + O_EXCL = 0x800 + O_EXEC = 0x40000 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RESOLVE_BENEATH = 0x800000 + O_SEARCH = 0x40000 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_TTY_INIT = 0x80000 + O_VERIFY = 0x200000 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PIOD_READ_D = 0x1 + PIOD_READ_I = 0x3 + PIOD_WRITE_D = 0x2 + PIOD_WRITE_I = 0x4 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PTRACE_DEFAULT = 0x1 + PTRACE_EXEC = 0x1 + PTRACE_FORK = 0x8 + PTRACE_LWP = 0x10 + PTRACE_SCE = 0x2 + PTRACE_SCX = 0x4 + PTRACE_SYSCALL = 0x6 + PTRACE_VFORK = 0x20 + PT_ATTACH = 0xa + PT_CLEARSTEP = 0x10 + PT_CONTINUE = 0x7 + PT_DETACH = 0xb + PT_FIRSTMACH = 0x40 + PT_FOLLOW_FORK = 0x17 + PT_GETDBREGS = 0x25 + PT_GETFPREGS = 0x23 + PT_GETFSBASE = 0x47 + PT_GETGSBASE = 0x49 + PT_GETLWPLIST = 0xf + PT_GETNUMLWPS = 0xe + PT_GETREGS = 0x21 + PT_GETXSTATE = 0x45 + PT_GETXSTATE_INFO = 0x44 + PT_GET_EVENT_MASK = 0x19 + PT_GET_SC_ARGS = 0x1b + PT_GET_SC_RET = 0x1c + PT_IO = 0xc + PT_KILL = 0x8 + PT_LWPINFO = 0xd + PT_LWP_EVENTS = 0x18 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_RESUME = 0x13 + PT_SETDBREGS = 0x26 + PT_SETFPREGS = 0x24 + PT_SETFSBASE = 0x48 + PT_SETGSBASE = 0x4a + PT_SETREGS = 0x22 + PT_SETSTEP = 0x11 + PT_SETXSTATE = 0x46 + PT_SET_EVENT_MASK = 0x1a + PT_STEP = 0x9 + PT_SUSPEND = 0x12 + PT_SYSCALL = 0x16 + PT_TO_SCE = 0x14 + PT_TO_SCX = 0x15 + PT_TRACE_ME = 0x0 + PT_VM_ENTRY = 0x29 + PT_VM_TIMESTAMP = 0x28 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + P_ZONEID = 0xc + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FIXEDMTU = 0x80000 + RTF_FMASK = 0x1004d808 + RTF_GATEWAY = 0x2 + RTF_GWFLAG_COMPAT = 0x80000000 + RTF_HOST = 0x4 + RTF_LLDATA = 0x400 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_RNH_LOCKED = 0x40000000 + RTF_STATIC = 0x800 + RTF_STICKY = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x12 + RTM_IFANNOUNCE = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RTV_WEIGHT = 0x100 + RT_ALL_FIBS = -0x1 + RT_BLACKHOLE = 0x40 + RT_DEFAULT_FIB = 0x0 + RT_HAS_GW = 0x80 + RT_HAS_HEADER = 0x10 + RT_HAS_HEADER_BIT = 0x4 + RT_L2_ME = 0x4 + RT_L2_ME_BIT = 0x2 + RT_LLE_CACHE = 0x100 + RT_MAY_LOOP = 0x8 + RT_MAY_LOOP_BIT = 0x3 + RT_REJECT = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_BINTIME = 0x4 + SCM_CREDS = 0x3 + SCM_MONOTONIC = 0x6 + SCM_REALTIME = 0x5 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SCM_TIME_INFO = 0x7 + SEEK_CUR = 0x1 + SEEK_DATA = 0x3 + SEEK_END = 0x2 + SEEK_HOLE = 0x4 + SEEK_SET = 0x0 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80286987 + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80286989 + SIOCDIFPHYADDR = 0x80206949 + SIOCGDRVSPEC = 0xc028697b + SIOCGETSGCNT = 0xc0207210 + SIOCGETVIFCNT = 0xc028720f + SIOCGHIWAT = 0x40047301 + SIOCGHWADDR = 0xc020693e + SIOCGI2C = 0xc020693d + SIOCGIFADDR = 0xc0206921 + SIOCGIFALIAS = 0xc044692d + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020691f + SIOCGIFCONF = 0xc0106924 + SIOCGIFDESCR = 0xc020692a + SIOCGIFDOWNREASON = 0xc058699a + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFIB = 0xc020695c + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc028698a + SIOCGIFGROUP = 0xc0286988 + SIOCGIFINDEX = 0xc0206920 + SIOCGIFMAC = 0xc0206926 + SIOCGIFMEDIA = 0xc0306938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFRSSHASH = 0xc0186997 + SIOCGIFRSSKEY = 0xc0946996 + SIOCGIFSTATUS = 0xc331693b + SIOCGIFXMEDIA = 0xc030698b + SIOCGLANPCP = 0xc0206998 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGPRIVATE_0 = 0xc0206950 + SIOCGPRIVATE_1 = 0xc0206951 + SIOCGTUNFIB = 0xc020695e + SIOCIFCREATE = 0xc020697a + SIOCIFCREATE2 = 0xc020697c + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSDRVSPEC = 0x8028697b + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020691e + SIOCSIFDESCR = 0x80206929 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFIB = 0x8020695d + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206927 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNAME = 0x80206928 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPHYS = 0x80206936 + SIOCSIFRVNET = 0xc020695b + SIOCSIFVNET = 0xc020695a + SIOCSLANPCP = 0x80206999 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSTUNFIB = 0x8020695f + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_NONBLOCK = 0x20000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_LOCAL = 0x0 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BINTIME = 0x2000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DOMAIN = 0x1019 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1009 + SO_LINGER = 0x80 + SO_LISTENINCQLEN = 0x1013 + SO_LISTENQLEN = 0x1012 + SO_LISTENQLIMIT = 0x1011 + SO_MAX_PACING_RATE = 0x1018 + SO_NOSIGPIPE = 0x800 + SO_NO_DDP = 0x8000 + SO_NO_OFFLOAD = 0x4000 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1010 + SO_PROTOCOL = 0x1016 + SO_PROTOTYPE = 0x1016 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_RERROR = 0x20000 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_REUSEPORT_LB = 0x10000 + SO_SETFIB = 0x1014 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TS_BINTIME = 0x1 + SO_TS_CLOCK = 0x1017 + SO_TS_CLOCK_MAX = 0x3 + SO_TS_DEFAULT = 0x0 + SO_TS_MONOTONIC = 0x3 + SO_TS_REALTIME = 0x2 + SO_TS_REALTIME_MICRO = 0x0 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USER_COOKIE = 0x1015 + SO_VENDOR = 0x80000000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB3 = 0x4 + TABDLY = 0x4 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCPOPT_EOL = 0x0 + TCPOPT_FAST_OPEN = 0x22 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_PAD = 0x0 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_WINDOW = 0x3 + TCP_BBR_ACK_COMP_ALG = 0x448 + TCP_BBR_ALGORITHM = 0x43b + TCP_BBR_DRAIN_INC_EXTRA = 0x43c + TCP_BBR_DRAIN_PG = 0x42e + TCP_BBR_EXTRA_GAIN = 0x449 + TCP_BBR_EXTRA_STATE = 0x453 + TCP_BBR_FLOOR_MIN_TSO = 0x454 + TCP_BBR_HDWR_PACE = 0x451 + TCP_BBR_HOLD_TARGET = 0x436 + TCP_BBR_IWINTSO = 0x42b + TCP_BBR_LOWGAIN_FD = 0x436 + TCP_BBR_LOWGAIN_HALF = 0x435 + TCP_BBR_LOWGAIN_THRESH = 0x434 + TCP_BBR_MAX_RTO = 0x439 + TCP_BBR_MIN_RTO = 0x438 + TCP_BBR_MIN_TOPACEOUT = 0x455 + TCP_BBR_ONE_RETRAN = 0x431 + TCP_BBR_PACE_CROSS = 0x442 + TCP_BBR_PACE_DEL_TAR = 0x43f + TCP_BBR_PACE_OH = 0x435 + TCP_BBR_PACE_PER_SEC = 0x43e + TCP_BBR_PACE_SEG_MAX = 0x440 + TCP_BBR_PACE_SEG_MIN = 0x441 + TCP_BBR_POLICER_DETECT = 0x457 + TCP_BBR_PROBE_RTT_GAIN = 0x44d + TCP_BBR_PROBE_RTT_INT = 0x430 + TCP_BBR_PROBE_RTT_LEN = 0x44e + TCP_BBR_RACK_RTT_USE = 0x44a + TCP_BBR_RECFORCE = 0x42c + TCP_BBR_REC_OVER_HPTS = 0x43a + TCP_BBR_RETRAN_WTSO = 0x44b + TCP_BBR_RWND_IS_APP = 0x42f + TCP_BBR_SEND_IWND_IN_TSO = 0x44f + TCP_BBR_STARTUP_EXIT_EPOCH = 0x43d + TCP_BBR_STARTUP_LOSS_EXIT = 0x432 + TCP_BBR_STARTUP_PG = 0x42d + TCP_BBR_TMR_PACE_OH = 0x448 + TCP_BBR_TSLIMITS = 0x434 + TCP_BBR_TSTMP_RAISES = 0x456 + TCP_BBR_UNLIMITED = 0x43b + TCP_BBR_USEDEL_RATE = 0x437 + TCP_BBR_USE_LOWGAIN = 0x433 + TCP_BBR_USE_RACK_CHEAT = 0x450 + TCP_BBR_UTTER_MAX_TSO = 0x452 + TCP_CA_NAME_MAX = 0x10 + TCP_CCALGOOPT = 0x41 + TCP_CONGESTION = 0x40 + TCP_DATA_AFTER_CLOSE = 0x44c + TCP_DELACK = 0x48 + TCP_FASTOPEN = 0x401 + TCP_FASTOPEN_MAX_COOKIE_LEN = 0x10 + TCP_FASTOPEN_MIN_COOKIE_LEN = 0x4 + TCP_FASTOPEN_PSK_LEN = 0x10 + TCP_FUNCTION_BLK = 0x2000 + TCP_FUNCTION_NAME_LEN_MAX = 0x20 + TCP_INFO = 0x20 + TCP_KEEPCNT = 0x400 + TCP_KEEPIDLE = 0x100 + TCP_KEEPINIT = 0x80 + TCP_KEEPINTVL = 0x200 + TCP_LOG = 0x22 + TCP_LOGBUF = 0x23 + TCP_LOGDUMP = 0x25 + TCP_LOGDUMPID = 0x26 + TCP_LOGID = 0x24 + TCP_LOG_ID_LEN = 0x40 + TCP_MAXBURST = 0x4 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_PCAP_IN = 0x1000 + TCP_PCAP_OUT = 0x800 + TCP_RACK_EARLY_RECOV = 0x423 + TCP_RACK_EARLY_SEG = 0x424 + TCP_RACK_GP_INCREASE = 0x446 + TCP_RACK_IDLE_REDUCE_HIGH = 0x444 + TCP_RACK_MIN_PACE = 0x445 + TCP_RACK_MIN_PACE_SEG = 0x446 + TCP_RACK_MIN_TO = 0x422 + TCP_RACK_PACE_ALWAYS = 0x41f + TCP_RACK_PACE_MAX_SEG = 0x41e + TCP_RACK_PACE_REDUCE = 0x41d + TCP_RACK_PKT_DELAY = 0x428 + TCP_RACK_PROP = 0x41b + TCP_RACK_PROP_RATE = 0x420 + TCP_RACK_PRR_SENDALOT = 0x421 + TCP_RACK_REORD_FADE = 0x426 + TCP_RACK_REORD_THRESH = 0x425 + TCP_RACK_TLP_INC_VAR = 0x429 + TCP_RACK_TLP_REDUCE = 0x41c + TCP_RACK_TLP_THRESH = 0x427 + TCP_RACK_TLP_USE = 0x447 + TCP_VENDOR = 0x80000000 + TCSAFLUSH = 0x2 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGPTN = 0x4004740f + TIOCGSID = 0x40047463 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DCD = 0x40 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMASTER = 0x2000741c + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + UTIME_NOW = -0x1 + UTIME_OMIT = -0x2 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VERASE2 = 0x7 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x4 + WCOREFLAG = 0x80 + WEXITED = 0x10 + WLINUXCLONE = 0x80000000 + WNOHANG = 0x1 + WNOWAIT = 0x8 + WSTOPPED = 0x2 + WTRAPPED = 0x20 + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x59) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x55) + ECAPMODE = syscall.Errno(0x5e) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDOOFUS = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x56) + EINPROGRESS = syscall.Errno(0x24) + EINTEGRITY = syscall.Errno(0x61) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x61) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5a) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x57) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCAPABLE = syscall.Errno(0x5d) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5f) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x60) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5c) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGLIBRT = syscall.Signal(0x21) + SIGLWP = syscall.Signal(0x20) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EWOULDBLOCK", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "ECANCELED", "operation canceled"}, + {86, "EILSEQ", "illegal byte sequence"}, + {87, "ENOATTR", "attribute not found"}, + {88, "EDOOFUS", "programming error"}, + {89, "EBADMSG", "bad message"}, + {90, "EMULTIHOP", "multihop attempted"}, + {91, "ENOLINK", "link has been severed"}, + {92, "EPROTO", "protocol error"}, + {93, "ENOTCAPABLE", "capabilities insufficient"}, + {94, "ECAPMODE", "not permitted in capability mode"}, + {95, "ENOTRECOVERABLE", "state not recoverable"}, + {96, "EOWNERDEAD", "previous owner died"}, + {97, "EINTEGRITY", "integrity check failed"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "unknown signal"}, + {33, "SIGLIBRT", "unknown signal"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go b/tests/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go new file mode 100644 index 000000000..493a2a793 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go @@ -0,0 +1,2033 @@ +// mkerrors.sh +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm && freebsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x23 + AF_ATM = 0x1e + AF_BLUETOOTH = 0x24 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1c + AF_INET6_SDP = 0x2a + AF_INET_SDP = 0x28 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x2a + AF_NATM = 0x1d + AF_NETBIOS = 0x6 + AF_NETGRAPH = 0x20 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SCLUSTER = 0x22 + AF_SIP = 0x18 + AF_SLOW = 0x21 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VENDOR00 = 0x27 + AF_VENDOR01 = 0x29 + AF_VENDOR02 = 0x2b + AF_VENDOR03 = 0x2d + AF_VENDOR04 = 0x2f + AF_VENDOR05 = 0x31 + AF_VENDOR06 = 0x33 + AF_VENDOR07 = 0x35 + AF_VENDOR08 = 0x37 + AF_VENDOR09 = 0x39 + AF_VENDOR10 = 0x3b + AF_VENDOR11 = 0x3d + AF_VENDOR12 = 0x3f + AF_VENDOR13 = 0x41 + AF_VENDOR14 = 0x43 + AF_VENDOR15 = 0x45 + AF_VENDOR16 = 0x47 + AF_VENDOR17 = 0x49 + AF_VENDOR18 = 0x4b + AF_VENDOR19 = 0x4d + AF_VENDOR20 = 0x4f + AF_VENDOR21 = 0x51 + AF_VENDOR22 = 0x53 + AF_VENDOR23 = 0x55 + AF_VENDOR24 = 0x57 + AF_VENDOR25 = 0x59 + AF_VENDOR26 = 0x5b + AF_VENDOR27 = 0x5d + AF_VENDOR28 = 0x5f + AF_VENDOR29 = 0x61 + AF_VENDOR30 = 0x63 + AF_VENDOR31 = 0x65 + AF_VENDOR32 = 0x67 + AF_VENDOR33 = 0x69 + AF_VENDOR34 = 0x6b + AF_VENDOR35 = 0x6d + AF_VENDOR36 = 0x6f + AF_VENDOR37 = 0x71 + AF_VENDOR38 = 0x73 + AF_VENDOR39 = 0x75 + AF_VENDOR40 = 0x77 + AF_VENDOR41 = 0x79 + AF_VENDOR42 = 0x7b + AF_VENDOR43 = 0x7d + AF_VENDOR44 = 0x7f + AF_VENDOR45 = 0x81 + AF_VENDOR46 = 0x83 + AF_VENDOR47 = 0x85 + ALTWERASE = 0x200 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427c + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRECTION = 0x40044276 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0084279 + BIOCGETBUFMODE = 0x4004427d + BIOCGETIF = 0x4020426b + BIOCGETZMAX = 0x4004427f + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCGTSTAMP = 0x40044283 + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x2000427a + BIOCPROMISC = 0x20004269 + BIOCROTZBUF = 0x400c4280 + BIOCSBLEN = 0xc0044266 + BIOCSDIRECTION = 0x80044277 + BIOCSDLT = 0x80044278 + BIOCSETBUFMODE = 0x8004427e + BIOCSETF = 0x80084267 + BIOCSETFNR = 0x80084282 + BIOCSETIF = 0x8020426c + BIOCSETVLANPCP = 0x80044285 + BIOCSETWF = 0x8008427b + BIOCSETZBUF = 0x800c4281 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCSTSTAMP = 0x80044284 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_BUFMODE_BUFFER = 0x1 + BPF_BUFMODE_ZBUF = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_T_BINTIME = 0x2 + BPF_T_BINTIME_FAST = 0x102 + BPF_T_BINTIME_MONOTONIC = 0x202 + BPF_T_BINTIME_MONOTONIC_FAST = 0x302 + BPF_T_FAST = 0x100 + BPF_T_FLAG_MASK = 0x300 + BPF_T_FORMAT_MASK = 0x3 + BPF_T_MICROTIME = 0x0 + BPF_T_MICROTIME_FAST = 0x100 + BPF_T_MICROTIME_MONOTONIC = 0x200 + BPF_T_MICROTIME_MONOTONIC_FAST = 0x300 + BPF_T_MONOTONIC = 0x200 + BPF_T_MONOTONIC_FAST = 0x300 + BPF_T_NANOTIME = 0x1 + BPF_T_NANOTIME_FAST = 0x101 + BPF_T_NANOTIME_MONOTONIC = 0x201 + BPF_T_NANOTIME_MONOTONIC_FAST = 0x301 + BPF_T_NONE = 0x3 + BPF_T_NORMAL = 0x0 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + CAP_ACCEPT = 0x200000020000000 + CAP_ACL_CHECK = 0x400000000010000 + CAP_ACL_DELETE = 0x400000000020000 + CAP_ACL_GET = 0x400000000040000 + CAP_ACL_SET = 0x400000000080000 + CAP_ALL0 = 0x20007ffffffffff + CAP_ALL1 = 0x4000000001fffff + CAP_BIND = 0x200000040000000 + CAP_BINDAT = 0x200008000000400 + CAP_CHFLAGSAT = 0x200000000001400 + CAP_CONNECT = 0x200000080000000 + CAP_CONNECTAT = 0x200010000000400 + CAP_CREATE = 0x200000000000040 + CAP_EVENT = 0x400000000000020 + CAP_EXTATTR_DELETE = 0x400000000001000 + CAP_EXTATTR_GET = 0x400000000002000 + CAP_EXTATTR_LIST = 0x400000000004000 + CAP_EXTATTR_SET = 0x400000000008000 + CAP_FCHDIR = 0x200000000000800 + CAP_FCHFLAGS = 0x200000000001000 + CAP_FCHMOD = 0x200000000002000 + CAP_FCHMODAT = 0x200000000002400 + CAP_FCHOWN = 0x200000000004000 + CAP_FCHOWNAT = 0x200000000004400 + CAP_FCNTL = 0x200000000008000 + CAP_FCNTL_ALL = 0x78 + CAP_FCNTL_GETFL = 0x8 + CAP_FCNTL_GETOWN = 0x20 + CAP_FCNTL_SETFL = 0x10 + CAP_FCNTL_SETOWN = 0x40 + CAP_FEXECVE = 0x200000000000080 + CAP_FLOCK = 0x200000000010000 + CAP_FPATHCONF = 0x200000000020000 + CAP_FSCK = 0x200000000040000 + CAP_FSTAT = 0x200000000080000 + CAP_FSTATAT = 0x200000000080400 + CAP_FSTATFS = 0x200000000100000 + CAP_FSYNC = 0x200000000000100 + CAP_FTRUNCATE = 0x200000000000200 + CAP_FUTIMES = 0x200000000200000 + CAP_FUTIMESAT = 0x200000000200400 + CAP_GETPEERNAME = 0x200000100000000 + CAP_GETSOCKNAME = 0x200000200000000 + CAP_GETSOCKOPT = 0x200000400000000 + CAP_IOCTL = 0x400000000000080 + CAP_IOCTLS_ALL = 0x7fffffff + CAP_KQUEUE = 0x400000000100040 + CAP_KQUEUE_CHANGE = 0x400000000100000 + CAP_KQUEUE_EVENT = 0x400000000000040 + CAP_LINKAT_SOURCE = 0x200020000000400 + CAP_LINKAT_TARGET = 0x200000000400400 + CAP_LISTEN = 0x200000800000000 + CAP_LOOKUP = 0x200000000000400 + CAP_MAC_GET = 0x400000000000001 + CAP_MAC_SET = 0x400000000000002 + CAP_MKDIRAT = 0x200000000800400 + CAP_MKFIFOAT = 0x200000001000400 + CAP_MKNODAT = 0x200000002000400 + CAP_MMAP = 0x200000000000010 + CAP_MMAP_R = 0x20000000000001d + CAP_MMAP_RW = 0x20000000000001f + CAP_MMAP_RWX = 0x20000000000003f + CAP_MMAP_RX = 0x20000000000003d + CAP_MMAP_W = 0x20000000000001e + CAP_MMAP_WX = 0x20000000000003e + CAP_MMAP_X = 0x20000000000003c + CAP_PDGETPID = 0x400000000000200 + CAP_PDKILL = 0x400000000000800 + CAP_PDWAIT = 0x400000000000400 + CAP_PEELOFF = 0x200001000000000 + CAP_POLL_EVENT = 0x400000000000020 + CAP_PREAD = 0x20000000000000d + CAP_PWRITE = 0x20000000000000e + CAP_READ = 0x200000000000001 + CAP_RECV = 0x200000000000001 + CAP_RENAMEAT_SOURCE = 0x200000004000400 + CAP_RENAMEAT_TARGET = 0x200040000000400 + CAP_RIGHTS_VERSION = 0x0 + CAP_RIGHTS_VERSION_00 = 0x0 + CAP_SEEK = 0x20000000000000c + CAP_SEEK_TELL = 0x200000000000004 + CAP_SEM_GETVALUE = 0x400000000000004 + CAP_SEM_POST = 0x400000000000008 + CAP_SEM_WAIT = 0x400000000000010 + CAP_SEND = 0x200000000000002 + CAP_SETSOCKOPT = 0x200002000000000 + CAP_SHUTDOWN = 0x200004000000000 + CAP_SOCK_CLIENT = 0x200007780000003 + CAP_SOCK_SERVER = 0x200007f60000003 + CAP_SYMLINKAT = 0x200000008000400 + CAP_TTYHOOK = 0x400000000000100 + CAP_UNLINKAT = 0x200000010000400 + CAP_UNUSED0_44 = 0x200080000000000 + CAP_UNUSED0_57 = 0x300000000000000 + CAP_UNUSED1_22 = 0x400000000200000 + CAP_UNUSED1_57 = 0x500000000000000 + CAP_WRITE = 0x200000000000002 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x4 + CLOCK_MONOTONIC_FAST = 0xc + CLOCK_MONOTONIC_PRECISE = 0xb + CLOCK_PROCESS_CPUTIME_ID = 0xf + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_FAST = 0xa + CLOCK_REALTIME_PRECISE = 0x9 + CLOCK_SECOND = 0xd + CLOCK_THREAD_CPUTIME_ID = 0xe + CLOCK_UPTIME = 0x5 + CLOCK_UPTIME_FAST = 0x8 + CLOCK_UPTIME_PRECISE = 0x7 + CLOCK_VIRTUAL = 0x1 + CPUSTATES = 0x5 + CP_IDLE = 0x4 + CP_INTR = 0x3 + CP_NICE = 0x1 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0x18 + CTL_NET = 0x4 + DIOCGATTR = 0xc148648e + DIOCGDELETE = 0x80106488 + DIOCGFLUSH = 0x20006487 + DIOCGFRONTSTUFF = 0x40086486 + DIOCGFWHEADS = 0x40046483 + DIOCGFWSECTORS = 0x40046482 + DIOCGIDENT = 0x41006489 + DIOCGMEDIASIZE = 0x40086481 + DIOCGPHYSPATH = 0x4400648d + DIOCGPROVIDERNAME = 0x4400648a + DIOCGSECTORSIZE = 0x40046480 + DIOCGSTRIPEOFFSET = 0x4008648c + DIOCGSTRIPESIZE = 0x4008648b + DIOCSKERNELDUMP = 0x804c6490 + DIOCSKERNELDUMP_FREEBSD11 = 0x80046485 + DIOCZONECMD = 0xc078648f + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_BREDR_BB = 0xff + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_BLUETOOTH_LE_LL = 0xfb + DLT_BLUETOOTH_LE_LL_WITH_PHDR = 0x100 + DLT_BLUETOOTH_LINUX_MONITOR = 0xfe + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_CLASS_NETBSD_RAWAF = 0x2240000 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DISPLAYPORT_AUX = 0x113 + DLT_DOCSIS = 0x8f + DLT_DOCSIS31_XRA31 = 0x111 + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_EPON = 0x103 + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_ETHERNET_MPACKET = 0x112 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_INFINIBAND = 0xf7 + DLT_IPFILTER = 0x74 + DLT_IPMB_KONTRON = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPMI_HPM_2 = 0x104 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_ISO_14443 = 0x108 + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LINUX_SLL2 = 0x114 + DLT_LOOP = 0x6c + DLT_LORATAP = 0x10e + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0x114 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NETLINK = 0xfd + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NORDIC_BLE = 0x110 + DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x79 + DLT_PKTAP = 0x102 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PROFIBUS_DL = 0x101 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RDS = 0x109 + DLT_REDBACK_SMARTEDGE = 0x20 + DLT_RIO = 0x7c + DLT_RTAC_SERIAL = 0xfa + DLT_SCCP = 0x8e + DLT_SCTP = 0xf8 + DLT_SDLC = 0x10c + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TI_LLN_SNIFFER = 0x10d + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USBPCAP = 0xf9 + DLT_USB_DARWIN = 0x10a + DLT_USB_FREEBSD = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_VSOCK = 0x10f + DLT_WATTSTOPPER_DLM = 0x107 + DLT_WIHART = 0xdf + DLT_WIRESHARK_UPPER_PDU = 0xfc + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DLT_ZWAVE_R1_R2 = 0x105 + DLT_ZWAVE_R3 = 0x106 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_EMPTY = -0xd + EVFILT_FS = -0x9 + EVFILT_LIO = -0xa + EVFILT_PROC = -0x5 + EVFILT_PROCDESC = -0x8 + EVFILT_READ = -0x1 + EVFILT_SENDFILE = -0xc + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xd + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xb + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EVNAMEMAP_NAME_SIZE = 0x40 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DROP = 0x1000 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_FLAG2 = 0x4000 + EV_FORCEONESHOT = 0x100 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_MAXNAMELEN = 0xff + EXTATTR_NAMESPACE_EMPTY = 0x0 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_CANCEL = 0x5 + F_DUP2FD = 0xa + F_DUP2FD_CLOEXEC = 0x12 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x11 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xb + F_GETOWN = 0x5 + F_OGETLK = 0x7 + F_OK = 0x0 + F_OSETLK = 0x8 + F_OSETLKW = 0x9 + F_RDAHEAD = 0x10 + F_RDLCK = 0x1 + F_READAHEAD = 0xf + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0xc + F_SETLKW = 0xd + F_SETLK_REMOTE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_UNLCKSYS = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFCAP_WOL_MAGIC = 0x2000 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x218f52 + IFF_CANTCONFIG = 0x10000 + IFF_DEBUG = 0x4 + IFF_DRV_OACTIVE = 0x400 + IFF_DRV_RUNNING = 0x40 + IFF_DYING = 0x200000 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MONITOR = 0x40000 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOGROUP = 0x800000 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PPROMISC = 0x20000 + IFF_PROMISC = 0x100 + IFF_RENAMING = 0x400000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x80000 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_IEEE1394 = 0x90 + IFT_INFINIBAND = 0xc7 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_PPP = 0x17 + IFT_PROPVIRTUAL = 0x35 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_MASK = 0xfffffffe + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CARP = 0x70 + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DCCP = 0x21 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HIP = 0x8b + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MEAS = 0x13 + IPPROTO_MH = 0x87 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OLD_DIVERT = 0xfe + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_RESERVED_253 = 0xfd + IPPROTO_RESERVED_254 = 0xfe + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEND = 0x103 + IPPROTO_SHIM6 = 0x8c + IPPROTO_SKIP = 0x39 + IPPROTO_SPACER = 0x7fff + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TLSP = 0x38 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDANY = 0x40 + IPV6_BINDMULTI = 0x41 + IPV6_BINDV6ONLY = 0x1b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FLOWID = 0x43 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_LEN = 0x14 + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOWTYPE = 0x44 + IPV6_FRAGTTL = 0x78 + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_ORIGDSTADDR = 0x48 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVFLOWID = 0x46 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVORIGDSTADDR = 0x48 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRSSBUCKETID = 0x47 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RSSBUCKETID = 0x45 + IPV6_RSS_LISTEN_BUCKET = 0x42 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IPV6_VLAN_PCP = 0x4b + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BINDANY = 0x18 + IP_BINDMULTI = 0x19 + IP_BLOCK_SOURCE = 0x48 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DONTFRAG = 0x43 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET3 = 0x31 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FLOWID = 0x5a + IP_FLOWTYPE = 0x5b + IP_FW3 = 0x30 + IP_FW_ADD = 0x32 + IP_FW_DEL = 0x33 + IP_FW_FLUSH = 0x34 + IP_FW_GET = 0x36 + IP_FW_NAT_CFG = 0x38 + IP_FW_NAT_DEL = 0x39 + IP_FW_NAT_GET_CONFIG = 0x3a + IP_FW_NAT_GET_LOG = 0x3b + IP_FW_RESETLOG = 0x37 + IP_FW_TABLE_ADD = 0x28 + IP_FW_TABLE_DEL = 0x29 + IP_FW_TABLE_FLUSH = 0x2a + IP_FW_TABLE_GETSIZE = 0x2b + IP_FW_TABLE_LIST = 0x2c + IP_FW_ZERO = 0x35 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MF = 0x2000 + IP_MINTTL = 0x42 + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_OFFMASK = 0x1fff + IP_ONESBCAST = 0x17 + IP_OPTIONS = 0x1 + IP_ORIGDSTADDR = 0x1b + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVFLOWID = 0x5d + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVORIGDSTADDR = 0x1b + IP_RECVRETOPTS = 0x6 + IP_RECVRSSBUCKETID = 0x5e + IP_RECVTOS = 0x44 + IP_RECVTTL = 0x41 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSSBUCKETID = 0x5c + IP_RSS_LISTEN_BUCKET = 0x1a + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + IP_VLAN_PCP = 0x4b + ISIG = 0x80 + ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCAL_CONNWAIT = 0x4 + LOCAL_CREDS = 0x2 + LOCAL_PEERCRED = 0x1 + LOCAL_VENDOR = 0x80000000 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_AUTOSYNC = 0x7 + MADV_CORE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_NOCORE = 0x8 + MADV_NORMAL = 0x0 + MADV_NOSYNC = 0x6 + MADV_PROTECT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MAP_ALIGNED_SUPER = 0x1000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_EXCL = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_GUARD = 0x2000 + MAP_HASSEMAPHORE = 0x200 + MAP_NOCORE = 0x20000 + MAP_NOSYNC = 0x800 + MAP_PREFAULT_READ = 0x40000 + MAP_PRIVATE = 0x2 + MAP_RESERVED0020 = 0x20 + MAP_RESERVED0040 = 0x40 + MAP_RESERVED0080 = 0x80 + MAP_RESERVED0100 = 0x100 + MAP_SHARED = 0x1 + MAP_STACK = 0x400 + MCAST_BLOCK_SOURCE = 0x54 + MCAST_EXCLUDE = 0x2 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x50 + MCAST_JOIN_SOURCE_GROUP = 0x52 + MCAST_LEAVE_GROUP = 0x51 + MCAST_LEAVE_SOURCE_GROUP = 0x53 + MCAST_UNBLOCK_SOURCE = 0x55 + MCAST_UNDEFINED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ACLS = 0x8000000 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x200000000 + MNT_BYFSID = 0x8000000 + MNT_CMDFLAGS = 0xd0f0000 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_EXKERB = 0x800 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x20000000 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_GJOURNAL = 0x2000000 + MNT_IGNORE = 0x800000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NFS4ACLS = 0x10 + MNT_NOATIME = 0x10000000 + MNT_NOCLUSTERR = 0x40000000 + MNT_NOCLUSTERW = 0x80000000 + MNT_NOEXEC = 0x4 + MNT_NONBUSY = 0x4000000 + MNT_NOSUID = 0x8 + MNT_NOSYMFOLLOW = 0x400000 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x1000000 + MNT_SOFTDEP = 0x200000 + MNT_SUIDDIR = 0x100000 + MNT_SUJ = 0x100000000 + MNT_SUSPEND = 0x4 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UNTRUSTED = 0x800000000 + MNT_UPDATE = 0x10000 + MNT_UPDATEMASK = 0xad8d0807e + MNT_USER = 0x8000 + MNT_VERIFIED = 0x400000000 + MNT_VISFLAGMASK = 0xffef0ffff + MNT_WAIT = 0x1 + MSG_CMSG_CLOEXEC = 0x40000 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_NBIO = 0x4000 + MSG_NOSIGNAL = 0x20000 + MSG_NOTIFICATION = 0x2000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x80000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x0 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLISTL = 0x5 + NET_RT_IFMALIST = 0x4 + NFDBITS = 0x20 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ABSTIME = 0x10 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_CLOSE = 0x100 + NOTE_CLOSE_WRITE = 0x200 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FILE_POLL = 0x2 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MSECONDS = 0x2 + NOTE_NSECONDS = 0x8 + NOTE_OPEN = 0x80 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_READ = 0x400 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x4 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x100000 + O_CREAT = 0x200 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x20000 + O_EXCL = 0x800 + O_EXEC = 0x40000 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RESOLVE_BENEATH = 0x800000 + O_SEARCH = 0x40000 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_TTY_INIT = 0x80000 + O_VERIFY = 0x200000 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PIOD_READ_D = 0x1 + PIOD_READ_I = 0x3 + PIOD_WRITE_D = 0x2 + PIOD_WRITE_I = 0x4 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PTRACE_DEFAULT = 0x1 + PTRACE_EXEC = 0x1 + PTRACE_FORK = 0x8 + PTRACE_LWP = 0x10 + PTRACE_SCE = 0x2 + PTRACE_SCX = 0x4 + PTRACE_SYSCALL = 0x6 + PTRACE_VFORK = 0x20 + PT_ATTACH = 0xa + PT_CLEARSTEP = 0x10 + PT_CONTINUE = 0x7 + PT_DETACH = 0xb + PT_FIRSTMACH = 0x40 + PT_FOLLOW_FORK = 0x17 + PT_GETDBREGS = 0x25 + PT_GETFPREGS = 0x23 + PT_GETLWPLIST = 0xf + PT_GETNUMLWPS = 0xe + PT_GETREGS = 0x21 + PT_GETVFPREGS = 0x40 + PT_GET_EVENT_MASK = 0x19 + PT_GET_SC_ARGS = 0x1b + PT_GET_SC_RET = 0x1c + PT_IO = 0xc + PT_KILL = 0x8 + PT_LWPINFO = 0xd + PT_LWP_EVENTS = 0x18 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_RESUME = 0x13 + PT_SETDBREGS = 0x26 + PT_SETFPREGS = 0x24 + PT_SETREGS = 0x22 + PT_SETSTEP = 0x11 + PT_SETVFPREGS = 0x41 + PT_SET_EVENT_MASK = 0x1a + PT_STEP = 0x9 + PT_SUSPEND = 0x12 + PT_SYSCALL = 0x16 + PT_TO_SCE = 0x14 + PT_TO_SCX = 0x15 + PT_TRACE_ME = 0x0 + PT_VM_ENTRY = 0x29 + PT_VM_TIMESTAMP = 0x28 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + P_ZONEID = 0xc + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FIXEDMTU = 0x80000 + RTF_FMASK = 0x1004d808 + RTF_GATEWAY = 0x2 + RTF_GWFLAG_COMPAT = 0x80000000 + RTF_HOST = 0x4 + RTF_LLDATA = 0x400 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_RNH_LOCKED = 0x40000000 + RTF_STATIC = 0x800 + RTF_STICKY = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x12 + RTM_IFANNOUNCE = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RTV_WEIGHT = 0x100 + RT_ALL_FIBS = -0x1 + RT_BLACKHOLE = 0x40 + RT_DEFAULT_FIB = 0x0 + RT_HAS_GW = 0x80 + RT_HAS_HEADER = 0x10 + RT_HAS_HEADER_BIT = 0x4 + RT_L2_ME = 0x4 + RT_L2_ME_BIT = 0x2 + RT_LLE_CACHE = 0x100 + RT_MAY_LOOP = 0x8 + RT_MAY_LOOP_BIT = 0x3 + RT_REJECT = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_BINTIME = 0x4 + SCM_CREDS = 0x3 + SCM_MONOTONIC = 0x6 + SCM_REALTIME = 0x5 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SCM_TIME_INFO = 0x7 + SEEK_CUR = 0x1 + SEEK_DATA = 0x3 + SEEK_END = 0x2 + SEEK_HOLE = 0x4 + SEEK_SET = 0x0 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80246987 + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80246989 + SIOCDIFPHYADDR = 0x80206949 + SIOCGDRVSPEC = 0xc01c697b + SIOCGETSGCNT = 0xc0147210 + SIOCGETVIFCNT = 0xc014720f + SIOCGHIWAT = 0x40047301 + SIOCGHWADDR = 0xc020693e + SIOCGI2C = 0xc020693d + SIOCGIFADDR = 0xc0206921 + SIOCGIFALIAS = 0xc044692d + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020691f + SIOCGIFCONF = 0xc0086924 + SIOCGIFDESCR = 0xc020692a + SIOCGIFDOWNREASON = 0xc058699a + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFIB = 0xc020695c + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc024698a + SIOCGIFGROUP = 0xc0246988 + SIOCGIFINDEX = 0xc0206920 + SIOCGIFMAC = 0xc0206926 + SIOCGIFMEDIA = 0xc0286938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFRSSHASH = 0xc0186997 + SIOCGIFRSSKEY = 0xc0946996 + SIOCGIFSTATUS = 0xc331693b + SIOCGIFXMEDIA = 0xc028698b + SIOCGLANPCP = 0xc0206998 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGPRIVATE_0 = 0xc0206950 + SIOCGPRIVATE_1 = 0xc0206951 + SIOCGTUNFIB = 0xc020695e + SIOCIFCREATE = 0xc020697a + SIOCIFCREATE2 = 0xc020697c + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc00c6978 + SIOCSDRVSPEC = 0x801c697b + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020691e + SIOCSIFDESCR = 0x80206929 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFIB = 0x8020695d + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206927 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNAME = 0x80206928 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPHYS = 0x80206936 + SIOCSIFRVNET = 0xc020695b + SIOCSIFVNET = 0xc020695a + SIOCSLANPCP = 0x80206999 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSTUNFIB = 0x8020695f + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_NONBLOCK = 0x20000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_LOCAL = 0x0 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BINTIME = 0x2000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DOMAIN = 0x1019 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1009 + SO_LINGER = 0x80 + SO_LISTENINCQLEN = 0x1013 + SO_LISTENQLEN = 0x1012 + SO_LISTENQLIMIT = 0x1011 + SO_MAX_PACING_RATE = 0x1018 + SO_NOSIGPIPE = 0x800 + SO_NO_DDP = 0x8000 + SO_NO_OFFLOAD = 0x4000 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1010 + SO_PROTOCOL = 0x1016 + SO_PROTOTYPE = 0x1016 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_RERROR = 0x20000 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_REUSEPORT_LB = 0x10000 + SO_SETFIB = 0x1014 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TS_BINTIME = 0x1 + SO_TS_CLOCK = 0x1017 + SO_TS_CLOCK_MAX = 0x3 + SO_TS_DEFAULT = 0x0 + SO_TS_MONOTONIC = 0x3 + SO_TS_REALTIME = 0x2 + SO_TS_REALTIME_MICRO = 0x0 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USER_COOKIE = 0x1015 + SO_VENDOR = 0x80000000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB3 = 0x4 + TABDLY = 0x4 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCPOPT_EOL = 0x0 + TCPOPT_FAST_OPEN = 0x22 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_PAD = 0x0 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_WINDOW = 0x3 + TCP_BBR_ACK_COMP_ALG = 0x448 + TCP_BBR_ALGORITHM = 0x43b + TCP_BBR_DRAIN_INC_EXTRA = 0x43c + TCP_BBR_DRAIN_PG = 0x42e + TCP_BBR_EXTRA_GAIN = 0x449 + TCP_BBR_EXTRA_STATE = 0x453 + TCP_BBR_FLOOR_MIN_TSO = 0x454 + TCP_BBR_HDWR_PACE = 0x451 + TCP_BBR_HOLD_TARGET = 0x436 + TCP_BBR_IWINTSO = 0x42b + TCP_BBR_LOWGAIN_FD = 0x436 + TCP_BBR_LOWGAIN_HALF = 0x435 + TCP_BBR_LOWGAIN_THRESH = 0x434 + TCP_BBR_MAX_RTO = 0x439 + TCP_BBR_MIN_RTO = 0x438 + TCP_BBR_MIN_TOPACEOUT = 0x455 + TCP_BBR_ONE_RETRAN = 0x431 + TCP_BBR_PACE_CROSS = 0x442 + TCP_BBR_PACE_DEL_TAR = 0x43f + TCP_BBR_PACE_OH = 0x435 + TCP_BBR_PACE_PER_SEC = 0x43e + TCP_BBR_PACE_SEG_MAX = 0x440 + TCP_BBR_PACE_SEG_MIN = 0x441 + TCP_BBR_POLICER_DETECT = 0x457 + TCP_BBR_PROBE_RTT_GAIN = 0x44d + TCP_BBR_PROBE_RTT_INT = 0x430 + TCP_BBR_PROBE_RTT_LEN = 0x44e + TCP_BBR_RACK_RTT_USE = 0x44a + TCP_BBR_RECFORCE = 0x42c + TCP_BBR_REC_OVER_HPTS = 0x43a + TCP_BBR_RETRAN_WTSO = 0x44b + TCP_BBR_RWND_IS_APP = 0x42f + TCP_BBR_SEND_IWND_IN_TSO = 0x44f + TCP_BBR_STARTUP_EXIT_EPOCH = 0x43d + TCP_BBR_STARTUP_LOSS_EXIT = 0x432 + TCP_BBR_STARTUP_PG = 0x42d + TCP_BBR_TMR_PACE_OH = 0x448 + TCP_BBR_TSLIMITS = 0x434 + TCP_BBR_TSTMP_RAISES = 0x456 + TCP_BBR_UNLIMITED = 0x43b + TCP_BBR_USEDEL_RATE = 0x437 + TCP_BBR_USE_LOWGAIN = 0x433 + TCP_BBR_USE_RACK_CHEAT = 0x450 + TCP_BBR_UTTER_MAX_TSO = 0x452 + TCP_CA_NAME_MAX = 0x10 + TCP_CCALGOOPT = 0x41 + TCP_CONGESTION = 0x40 + TCP_DATA_AFTER_CLOSE = 0x44c + TCP_DELACK = 0x48 + TCP_FASTOPEN = 0x401 + TCP_FASTOPEN_MAX_COOKIE_LEN = 0x10 + TCP_FASTOPEN_MIN_COOKIE_LEN = 0x4 + TCP_FASTOPEN_PSK_LEN = 0x10 + TCP_FUNCTION_BLK = 0x2000 + TCP_FUNCTION_NAME_LEN_MAX = 0x20 + TCP_INFO = 0x20 + TCP_KEEPCNT = 0x400 + TCP_KEEPIDLE = 0x100 + TCP_KEEPINIT = 0x80 + TCP_KEEPINTVL = 0x200 + TCP_LOG = 0x22 + TCP_LOGBUF = 0x23 + TCP_LOGDUMP = 0x25 + TCP_LOGDUMPID = 0x26 + TCP_LOGID = 0x24 + TCP_LOG_ID_LEN = 0x40 + TCP_MAXBURST = 0x4 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_PCAP_IN = 0x1000 + TCP_PCAP_OUT = 0x800 + TCP_RACK_EARLY_RECOV = 0x423 + TCP_RACK_EARLY_SEG = 0x424 + TCP_RACK_GP_INCREASE = 0x446 + TCP_RACK_IDLE_REDUCE_HIGH = 0x444 + TCP_RACK_MIN_PACE = 0x445 + TCP_RACK_MIN_PACE_SEG = 0x446 + TCP_RACK_MIN_TO = 0x422 + TCP_RACK_PACE_ALWAYS = 0x41f + TCP_RACK_PACE_MAX_SEG = 0x41e + TCP_RACK_PACE_REDUCE = 0x41d + TCP_RACK_PKT_DELAY = 0x428 + TCP_RACK_PROP = 0x41b + TCP_RACK_PROP_RATE = 0x420 + TCP_RACK_PRR_SENDALOT = 0x421 + TCP_RACK_REORD_FADE = 0x426 + TCP_RACK_REORD_THRESH = 0x425 + TCP_RACK_TLP_INC_VAR = 0x429 + TCP_RACK_TLP_REDUCE = 0x41c + TCP_RACK_TLP_THRESH = 0x427 + TCP_RACK_TLP_USE = 0x447 + TCP_VENDOR = 0x80000000 + TCSAFLUSH = 0x2 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGPTN = 0x4004740f + TIOCGSID = 0x40047463 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DCD = 0x40 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMASTER = 0x2000741c + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + UTIME_NOW = -0x1 + UTIME_OMIT = -0x2 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VERASE2 = 0x7 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x4 + WCOREFLAG = 0x80 + WEXITED = 0x10 + WLINUXCLONE = 0x80000000 + WNOHANG = 0x1 + WNOWAIT = 0x8 + WSTOPPED = 0x2 + WTRAPPED = 0x20 + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x59) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x55) + ECAPMODE = syscall.Errno(0x5e) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDOOFUS = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x56) + EINPROGRESS = syscall.Errno(0x24) + EINTEGRITY = syscall.Errno(0x61) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x61) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5a) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x57) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCAPABLE = syscall.Errno(0x5d) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5f) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x60) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5c) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGLIBRT = syscall.Signal(0x21) + SIGLWP = syscall.Signal(0x20) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EWOULDBLOCK", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "ECANCELED", "operation canceled"}, + {86, "EILSEQ", "illegal byte sequence"}, + {87, "ENOATTR", "attribute not found"}, + {88, "EDOOFUS", "programming error"}, + {89, "EBADMSG", "bad message"}, + {90, "EMULTIHOP", "multihop attempted"}, + {91, "ENOLINK", "link has been severed"}, + {92, "EPROTO", "protocol error"}, + {93, "ENOTCAPABLE", "capabilities insufficient"}, + {94, "ECAPMODE", "not permitted in capability mode"}, + {95, "ENOTRECOVERABLE", "state not recoverable"}, + {96, "EOWNERDEAD", "previous owner died"}, + {97, "EINTEGRITY", "integrity check failed"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "unknown signal"}, + {33, "SIGLIBRT", "unknown signal"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go b/tests/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go new file mode 100644 index 000000000..8b437b307 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go @@ -0,0 +1,2033 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm64 && freebsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x23 + AF_ATM = 0x1e + AF_BLUETOOTH = 0x24 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1c + AF_INET6_SDP = 0x2a + AF_INET_SDP = 0x28 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x2a + AF_NATM = 0x1d + AF_NETBIOS = 0x6 + AF_NETGRAPH = 0x20 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SCLUSTER = 0x22 + AF_SIP = 0x18 + AF_SLOW = 0x21 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VENDOR00 = 0x27 + AF_VENDOR01 = 0x29 + AF_VENDOR02 = 0x2b + AF_VENDOR03 = 0x2d + AF_VENDOR04 = 0x2f + AF_VENDOR05 = 0x31 + AF_VENDOR06 = 0x33 + AF_VENDOR07 = 0x35 + AF_VENDOR08 = 0x37 + AF_VENDOR09 = 0x39 + AF_VENDOR10 = 0x3b + AF_VENDOR11 = 0x3d + AF_VENDOR12 = 0x3f + AF_VENDOR13 = 0x41 + AF_VENDOR14 = 0x43 + AF_VENDOR15 = 0x45 + AF_VENDOR16 = 0x47 + AF_VENDOR17 = 0x49 + AF_VENDOR18 = 0x4b + AF_VENDOR19 = 0x4d + AF_VENDOR20 = 0x4f + AF_VENDOR21 = 0x51 + AF_VENDOR22 = 0x53 + AF_VENDOR23 = 0x55 + AF_VENDOR24 = 0x57 + AF_VENDOR25 = 0x59 + AF_VENDOR26 = 0x5b + AF_VENDOR27 = 0x5d + AF_VENDOR28 = 0x5f + AF_VENDOR29 = 0x61 + AF_VENDOR30 = 0x63 + AF_VENDOR31 = 0x65 + AF_VENDOR32 = 0x67 + AF_VENDOR33 = 0x69 + AF_VENDOR34 = 0x6b + AF_VENDOR35 = 0x6d + AF_VENDOR36 = 0x6f + AF_VENDOR37 = 0x71 + AF_VENDOR38 = 0x73 + AF_VENDOR39 = 0x75 + AF_VENDOR40 = 0x77 + AF_VENDOR41 = 0x79 + AF_VENDOR42 = 0x7b + AF_VENDOR43 = 0x7d + AF_VENDOR44 = 0x7f + AF_VENDOR45 = 0x81 + AF_VENDOR46 = 0x83 + AF_VENDOR47 = 0x85 + ALTWERASE = 0x200 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427c + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRECTION = 0x40044276 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0104279 + BIOCGETBUFMODE = 0x4004427d + BIOCGETIF = 0x4020426b + BIOCGETZMAX = 0x4008427f + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCGTSTAMP = 0x40044283 + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x2000427a + BIOCPROMISC = 0x20004269 + BIOCROTZBUF = 0x40184280 + BIOCSBLEN = 0xc0044266 + BIOCSDIRECTION = 0x80044277 + BIOCSDLT = 0x80044278 + BIOCSETBUFMODE = 0x8004427e + BIOCSETF = 0x80104267 + BIOCSETFNR = 0x80104282 + BIOCSETIF = 0x8020426c + BIOCSETVLANPCP = 0x80044285 + BIOCSETWF = 0x8010427b + BIOCSETZBUF = 0x80184281 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCSTSTAMP = 0x80044284 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x8 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_BUFMODE_BUFFER = 0x1 + BPF_BUFMODE_ZBUF = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_T_BINTIME = 0x2 + BPF_T_BINTIME_FAST = 0x102 + BPF_T_BINTIME_MONOTONIC = 0x202 + BPF_T_BINTIME_MONOTONIC_FAST = 0x302 + BPF_T_FAST = 0x100 + BPF_T_FLAG_MASK = 0x300 + BPF_T_FORMAT_MASK = 0x3 + BPF_T_MICROTIME = 0x0 + BPF_T_MICROTIME_FAST = 0x100 + BPF_T_MICROTIME_MONOTONIC = 0x200 + BPF_T_MICROTIME_MONOTONIC_FAST = 0x300 + BPF_T_MONOTONIC = 0x200 + BPF_T_MONOTONIC_FAST = 0x300 + BPF_T_NANOTIME = 0x1 + BPF_T_NANOTIME_FAST = 0x101 + BPF_T_NANOTIME_MONOTONIC = 0x201 + BPF_T_NANOTIME_MONOTONIC_FAST = 0x301 + BPF_T_NONE = 0x3 + BPF_T_NORMAL = 0x0 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + CAP_ACCEPT = 0x200000020000000 + CAP_ACL_CHECK = 0x400000000010000 + CAP_ACL_DELETE = 0x400000000020000 + CAP_ACL_GET = 0x400000000040000 + CAP_ACL_SET = 0x400000000080000 + CAP_ALL0 = 0x20007ffffffffff + CAP_ALL1 = 0x4000000001fffff + CAP_BIND = 0x200000040000000 + CAP_BINDAT = 0x200008000000400 + CAP_CHFLAGSAT = 0x200000000001400 + CAP_CONNECT = 0x200000080000000 + CAP_CONNECTAT = 0x200010000000400 + CAP_CREATE = 0x200000000000040 + CAP_EVENT = 0x400000000000020 + CAP_EXTATTR_DELETE = 0x400000000001000 + CAP_EXTATTR_GET = 0x400000000002000 + CAP_EXTATTR_LIST = 0x400000000004000 + CAP_EXTATTR_SET = 0x400000000008000 + CAP_FCHDIR = 0x200000000000800 + CAP_FCHFLAGS = 0x200000000001000 + CAP_FCHMOD = 0x200000000002000 + CAP_FCHMODAT = 0x200000000002400 + CAP_FCHOWN = 0x200000000004000 + CAP_FCHOWNAT = 0x200000000004400 + CAP_FCNTL = 0x200000000008000 + CAP_FCNTL_ALL = 0x78 + CAP_FCNTL_GETFL = 0x8 + CAP_FCNTL_GETOWN = 0x20 + CAP_FCNTL_SETFL = 0x10 + CAP_FCNTL_SETOWN = 0x40 + CAP_FEXECVE = 0x200000000000080 + CAP_FLOCK = 0x200000000010000 + CAP_FPATHCONF = 0x200000000020000 + CAP_FSCK = 0x200000000040000 + CAP_FSTAT = 0x200000000080000 + CAP_FSTATAT = 0x200000000080400 + CAP_FSTATFS = 0x200000000100000 + CAP_FSYNC = 0x200000000000100 + CAP_FTRUNCATE = 0x200000000000200 + CAP_FUTIMES = 0x200000000200000 + CAP_FUTIMESAT = 0x200000000200400 + CAP_GETPEERNAME = 0x200000100000000 + CAP_GETSOCKNAME = 0x200000200000000 + CAP_GETSOCKOPT = 0x200000400000000 + CAP_IOCTL = 0x400000000000080 + CAP_IOCTLS_ALL = 0x7fffffffffffffff + CAP_KQUEUE = 0x400000000100040 + CAP_KQUEUE_CHANGE = 0x400000000100000 + CAP_KQUEUE_EVENT = 0x400000000000040 + CAP_LINKAT_SOURCE = 0x200020000000400 + CAP_LINKAT_TARGET = 0x200000000400400 + CAP_LISTEN = 0x200000800000000 + CAP_LOOKUP = 0x200000000000400 + CAP_MAC_GET = 0x400000000000001 + CAP_MAC_SET = 0x400000000000002 + CAP_MKDIRAT = 0x200000000800400 + CAP_MKFIFOAT = 0x200000001000400 + CAP_MKNODAT = 0x200000002000400 + CAP_MMAP = 0x200000000000010 + CAP_MMAP_R = 0x20000000000001d + CAP_MMAP_RW = 0x20000000000001f + CAP_MMAP_RWX = 0x20000000000003f + CAP_MMAP_RX = 0x20000000000003d + CAP_MMAP_W = 0x20000000000001e + CAP_MMAP_WX = 0x20000000000003e + CAP_MMAP_X = 0x20000000000003c + CAP_PDGETPID = 0x400000000000200 + CAP_PDKILL = 0x400000000000800 + CAP_PDWAIT = 0x400000000000400 + CAP_PEELOFF = 0x200001000000000 + CAP_POLL_EVENT = 0x400000000000020 + CAP_PREAD = 0x20000000000000d + CAP_PWRITE = 0x20000000000000e + CAP_READ = 0x200000000000001 + CAP_RECV = 0x200000000000001 + CAP_RENAMEAT_SOURCE = 0x200000004000400 + CAP_RENAMEAT_TARGET = 0x200040000000400 + CAP_RIGHTS_VERSION = 0x0 + CAP_RIGHTS_VERSION_00 = 0x0 + CAP_SEEK = 0x20000000000000c + CAP_SEEK_TELL = 0x200000000000004 + CAP_SEM_GETVALUE = 0x400000000000004 + CAP_SEM_POST = 0x400000000000008 + CAP_SEM_WAIT = 0x400000000000010 + CAP_SEND = 0x200000000000002 + CAP_SETSOCKOPT = 0x200002000000000 + CAP_SHUTDOWN = 0x200004000000000 + CAP_SOCK_CLIENT = 0x200007780000003 + CAP_SOCK_SERVER = 0x200007f60000003 + CAP_SYMLINKAT = 0x200000008000400 + CAP_TTYHOOK = 0x400000000000100 + CAP_UNLINKAT = 0x200000010000400 + CAP_UNUSED0_44 = 0x200080000000000 + CAP_UNUSED0_57 = 0x300000000000000 + CAP_UNUSED1_22 = 0x400000000200000 + CAP_UNUSED1_57 = 0x500000000000000 + CAP_WRITE = 0x200000000000002 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x4 + CLOCK_MONOTONIC_FAST = 0xc + CLOCK_MONOTONIC_PRECISE = 0xb + CLOCK_PROCESS_CPUTIME_ID = 0xf + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_FAST = 0xa + CLOCK_REALTIME_PRECISE = 0x9 + CLOCK_SECOND = 0xd + CLOCK_THREAD_CPUTIME_ID = 0xe + CLOCK_UPTIME = 0x5 + CLOCK_UPTIME_FAST = 0x8 + CLOCK_UPTIME_PRECISE = 0x7 + CLOCK_VIRTUAL = 0x1 + CPUSTATES = 0x5 + CP_IDLE = 0x4 + CP_INTR = 0x3 + CP_NICE = 0x1 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0x18 + CTL_NET = 0x4 + DIOCGATTR = 0xc148648e + DIOCGDELETE = 0x80106488 + DIOCGFLUSH = 0x20006487 + DIOCGFRONTSTUFF = 0x40086486 + DIOCGFWHEADS = 0x40046483 + DIOCGFWSECTORS = 0x40046482 + DIOCGIDENT = 0x41006489 + DIOCGMEDIASIZE = 0x40086481 + DIOCGPHYSPATH = 0x4400648d + DIOCGPROVIDERNAME = 0x4400648a + DIOCGSECTORSIZE = 0x40046480 + DIOCGSTRIPEOFFSET = 0x4008648c + DIOCGSTRIPESIZE = 0x4008648b + DIOCSKERNELDUMP = 0x80506490 + DIOCSKERNELDUMP_FREEBSD11 = 0x80046485 + DIOCZONECMD = 0xc080648f + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_BREDR_BB = 0xff + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_BLUETOOTH_LE_LL = 0xfb + DLT_BLUETOOTH_LE_LL_WITH_PHDR = 0x100 + DLT_BLUETOOTH_LINUX_MONITOR = 0xfe + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_CLASS_NETBSD_RAWAF = 0x2240000 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DISPLAYPORT_AUX = 0x113 + DLT_DOCSIS = 0x8f + DLT_DOCSIS31_XRA31 = 0x111 + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_EPON = 0x103 + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_ETHERNET_MPACKET = 0x112 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_INFINIBAND = 0xf7 + DLT_IPFILTER = 0x74 + DLT_IPMB_KONTRON = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPMI_HPM_2 = 0x104 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_ISO_14443 = 0x108 + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LINUX_SLL2 = 0x114 + DLT_LOOP = 0x6c + DLT_LORATAP = 0x10e + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0x114 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NETLINK = 0xfd + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NORDIC_BLE = 0x110 + DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x79 + DLT_PKTAP = 0x102 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PROFIBUS_DL = 0x101 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RDS = 0x109 + DLT_REDBACK_SMARTEDGE = 0x20 + DLT_RIO = 0x7c + DLT_RTAC_SERIAL = 0xfa + DLT_SCCP = 0x8e + DLT_SCTP = 0xf8 + DLT_SDLC = 0x10c + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TI_LLN_SNIFFER = 0x10d + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USBPCAP = 0xf9 + DLT_USB_DARWIN = 0x10a + DLT_USB_FREEBSD = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_VSOCK = 0x10f + DLT_WATTSTOPPER_DLM = 0x107 + DLT_WIHART = 0xdf + DLT_WIRESHARK_UPPER_PDU = 0xfc + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DLT_ZWAVE_R1_R2 = 0x105 + DLT_ZWAVE_R3 = 0x106 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_EMPTY = -0xd + EVFILT_FS = -0x9 + EVFILT_LIO = -0xa + EVFILT_PROC = -0x5 + EVFILT_PROCDESC = -0x8 + EVFILT_READ = -0x1 + EVFILT_SENDFILE = -0xc + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xd + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xb + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EVNAMEMAP_NAME_SIZE = 0x40 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DROP = 0x1000 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_FLAG2 = 0x4000 + EV_FORCEONESHOT = 0x100 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_MAXNAMELEN = 0xff + EXTATTR_NAMESPACE_EMPTY = 0x0 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_CANCEL = 0x5 + F_DUP2FD = 0xa + F_DUP2FD_CLOEXEC = 0x12 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x11 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xb + F_GETOWN = 0x5 + F_OGETLK = 0x7 + F_OK = 0x0 + F_OSETLK = 0x8 + F_OSETLKW = 0x9 + F_RDAHEAD = 0x10 + F_RDLCK = 0x1 + F_READAHEAD = 0xf + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0xc + F_SETLKW = 0xd + F_SETLK_REMOTE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_UNLCKSYS = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFCAP_WOL_MAGIC = 0x2000 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x218f52 + IFF_CANTCONFIG = 0x10000 + IFF_DEBUG = 0x4 + IFF_DRV_OACTIVE = 0x400 + IFF_DRV_RUNNING = 0x40 + IFF_DYING = 0x200000 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MONITOR = 0x40000 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOGROUP = 0x800000 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PPROMISC = 0x20000 + IFF_PROMISC = 0x100 + IFF_RENAMING = 0x400000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x80000 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_IEEE1394 = 0x90 + IFT_INFINIBAND = 0xc7 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_PPP = 0x17 + IFT_PROPVIRTUAL = 0x35 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_MASK = 0xfffffffe + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CARP = 0x70 + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DCCP = 0x21 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HIP = 0x8b + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MEAS = 0x13 + IPPROTO_MH = 0x87 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OLD_DIVERT = 0xfe + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_RESERVED_253 = 0xfd + IPPROTO_RESERVED_254 = 0xfe + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEND = 0x103 + IPPROTO_SHIM6 = 0x8c + IPPROTO_SKIP = 0x39 + IPPROTO_SPACER = 0x7fff + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TLSP = 0x38 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDANY = 0x40 + IPV6_BINDMULTI = 0x41 + IPV6_BINDV6ONLY = 0x1b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FLOWID = 0x43 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_LEN = 0x14 + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOWTYPE = 0x44 + IPV6_FRAGTTL = 0x78 + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_ORIGDSTADDR = 0x48 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVFLOWID = 0x46 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVORIGDSTADDR = 0x48 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRSSBUCKETID = 0x47 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RSSBUCKETID = 0x45 + IPV6_RSS_LISTEN_BUCKET = 0x42 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IPV6_VLAN_PCP = 0x4b + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BINDANY = 0x18 + IP_BINDMULTI = 0x19 + IP_BLOCK_SOURCE = 0x48 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DONTFRAG = 0x43 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET3 = 0x31 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FLOWID = 0x5a + IP_FLOWTYPE = 0x5b + IP_FW3 = 0x30 + IP_FW_ADD = 0x32 + IP_FW_DEL = 0x33 + IP_FW_FLUSH = 0x34 + IP_FW_GET = 0x36 + IP_FW_NAT_CFG = 0x38 + IP_FW_NAT_DEL = 0x39 + IP_FW_NAT_GET_CONFIG = 0x3a + IP_FW_NAT_GET_LOG = 0x3b + IP_FW_RESETLOG = 0x37 + IP_FW_TABLE_ADD = 0x28 + IP_FW_TABLE_DEL = 0x29 + IP_FW_TABLE_FLUSH = 0x2a + IP_FW_TABLE_GETSIZE = 0x2b + IP_FW_TABLE_LIST = 0x2c + IP_FW_ZERO = 0x35 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MF = 0x2000 + IP_MINTTL = 0x42 + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_OFFMASK = 0x1fff + IP_ONESBCAST = 0x17 + IP_OPTIONS = 0x1 + IP_ORIGDSTADDR = 0x1b + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVFLOWID = 0x5d + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVORIGDSTADDR = 0x1b + IP_RECVRETOPTS = 0x6 + IP_RECVRSSBUCKETID = 0x5e + IP_RECVTOS = 0x44 + IP_RECVTTL = 0x41 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSSBUCKETID = 0x5c + IP_RSS_LISTEN_BUCKET = 0x1a + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + IP_VLAN_PCP = 0x4b + ISIG = 0x80 + ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCAL_CONNWAIT = 0x4 + LOCAL_CREDS = 0x2 + LOCAL_PEERCRED = 0x1 + LOCAL_VENDOR = 0x80000000 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_AUTOSYNC = 0x7 + MADV_CORE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_NOCORE = 0x8 + MADV_NORMAL = 0x0 + MADV_NOSYNC = 0x6 + MADV_PROTECT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MAP_32BIT = 0x80000 + MAP_ALIGNED_SUPER = 0x1000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_EXCL = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_GUARD = 0x2000 + MAP_HASSEMAPHORE = 0x200 + MAP_NOCORE = 0x20000 + MAP_NOSYNC = 0x800 + MAP_PREFAULT_READ = 0x40000 + MAP_PRIVATE = 0x2 + MAP_RESERVED0020 = 0x20 + MAP_RESERVED0040 = 0x40 + MAP_RESERVED0080 = 0x80 + MAP_RESERVED0100 = 0x100 + MAP_SHARED = 0x1 + MAP_STACK = 0x400 + MCAST_BLOCK_SOURCE = 0x54 + MCAST_EXCLUDE = 0x2 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x50 + MCAST_JOIN_SOURCE_GROUP = 0x52 + MCAST_LEAVE_GROUP = 0x51 + MCAST_LEAVE_SOURCE_GROUP = 0x53 + MCAST_UNBLOCK_SOURCE = 0x55 + MCAST_UNDEFINED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ACLS = 0x8000000 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x200000000 + MNT_BYFSID = 0x8000000 + MNT_CMDFLAGS = 0xd0f0000 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_EXKERB = 0x800 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x20000000 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_GJOURNAL = 0x2000000 + MNT_IGNORE = 0x800000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NFS4ACLS = 0x10 + MNT_NOATIME = 0x10000000 + MNT_NOCLUSTERR = 0x40000000 + MNT_NOCLUSTERW = 0x80000000 + MNT_NOEXEC = 0x4 + MNT_NONBUSY = 0x4000000 + MNT_NOSUID = 0x8 + MNT_NOSYMFOLLOW = 0x400000 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x1000000 + MNT_SOFTDEP = 0x200000 + MNT_SUIDDIR = 0x100000 + MNT_SUJ = 0x100000000 + MNT_SUSPEND = 0x4 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UNTRUSTED = 0x800000000 + MNT_UPDATE = 0x10000 + MNT_UPDATEMASK = 0xad8d0807e + MNT_USER = 0x8000 + MNT_VERIFIED = 0x400000000 + MNT_VISFLAGMASK = 0xffef0ffff + MNT_WAIT = 0x1 + MSG_CMSG_CLOEXEC = 0x40000 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_NBIO = 0x4000 + MSG_NOSIGNAL = 0x20000 + MSG_NOTIFICATION = 0x2000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x80000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x0 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLISTL = 0x5 + NET_RT_IFMALIST = 0x4 + NFDBITS = 0x40 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ABSTIME = 0x10 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_CLOSE = 0x100 + NOTE_CLOSE_WRITE = 0x200 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FILE_POLL = 0x2 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MSECONDS = 0x2 + NOTE_NSECONDS = 0x8 + NOTE_OPEN = 0x80 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_READ = 0x400 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x4 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x100000 + O_CREAT = 0x200 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x20000 + O_EXCL = 0x800 + O_EXEC = 0x40000 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RESOLVE_BENEATH = 0x800000 + O_SEARCH = 0x40000 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_TTY_INIT = 0x80000 + O_VERIFY = 0x200000 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PIOD_READ_D = 0x1 + PIOD_READ_I = 0x3 + PIOD_WRITE_D = 0x2 + PIOD_WRITE_I = 0x4 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PTRACE_DEFAULT = 0x1 + PTRACE_EXEC = 0x1 + PTRACE_FORK = 0x8 + PTRACE_LWP = 0x10 + PTRACE_SCE = 0x2 + PTRACE_SCX = 0x4 + PTRACE_SYSCALL = 0x6 + PTRACE_VFORK = 0x20 + PT_ATTACH = 0xa + PT_CLEARSTEP = 0x10 + PT_CONTINUE = 0x7 + PT_DETACH = 0xb + PT_FIRSTMACH = 0x40 + PT_FOLLOW_FORK = 0x17 + PT_GETDBREGS = 0x25 + PT_GETFPREGS = 0x23 + PT_GETLWPLIST = 0xf + PT_GETNUMLWPS = 0xe + PT_GETREGS = 0x21 + PT_GET_EVENT_MASK = 0x19 + PT_GET_SC_ARGS = 0x1b + PT_GET_SC_RET = 0x1c + PT_IO = 0xc + PT_KILL = 0x8 + PT_LWPINFO = 0xd + PT_LWP_EVENTS = 0x18 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_RESUME = 0x13 + PT_SETDBREGS = 0x26 + PT_SETFPREGS = 0x24 + PT_SETREGS = 0x22 + PT_SETSTEP = 0x11 + PT_SET_EVENT_MASK = 0x1a + PT_STEP = 0x9 + PT_SUSPEND = 0x12 + PT_SYSCALL = 0x16 + PT_TO_SCE = 0x14 + PT_TO_SCX = 0x15 + PT_TRACE_ME = 0x0 + PT_VM_ENTRY = 0x29 + PT_VM_TIMESTAMP = 0x28 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + P_ZONEID = 0xc + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FIXEDMTU = 0x80000 + RTF_FMASK = 0x1004d808 + RTF_GATEWAY = 0x2 + RTF_GWFLAG_COMPAT = 0x80000000 + RTF_HOST = 0x4 + RTF_LLDATA = 0x400 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_RNH_LOCKED = 0x40000000 + RTF_STATIC = 0x800 + RTF_STICKY = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x12 + RTM_IFANNOUNCE = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RTV_WEIGHT = 0x100 + RT_ALL_FIBS = -0x1 + RT_BLACKHOLE = 0x40 + RT_DEFAULT_FIB = 0x0 + RT_HAS_GW = 0x80 + RT_HAS_HEADER = 0x10 + RT_HAS_HEADER_BIT = 0x4 + RT_L2_ME = 0x4 + RT_L2_ME_BIT = 0x2 + RT_LLE_CACHE = 0x100 + RT_MAY_LOOP = 0x8 + RT_MAY_LOOP_BIT = 0x3 + RT_REJECT = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_BINTIME = 0x4 + SCM_CREDS = 0x3 + SCM_MONOTONIC = 0x6 + SCM_REALTIME = 0x5 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SCM_TIME_INFO = 0x7 + SEEK_CUR = 0x1 + SEEK_DATA = 0x3 + SEEK_END = 0x2 + SEEK_HOLE = 0x4 + SEEK_SET = 0x0 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80286987 + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80286989 + SIOCDIFPHYADDR = 0x80206949 + SIOCGDRVSPEC = 0xc028697b + SIOCGETSGCNT = 0xc0207210 + SIOCGETVIFCNT = 0xc028720f + SIOCGHIWAT = 0x40047301 + SIOCGHWADDR = 0xc020693e + SIOCGI2C = 0xc020693d + SIOCGIFADDR = 0xc0206921 + SIOCGIFALIAS = 0xc044692d + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020691f + SIOCGIFCONF = 0xc0106924 + SIOCGIFDESCR = 0xc020692a + SIOCGIFDOWNREASON = 0xc058699a + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFIB = 0xc020695c + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc028698a + SIOCGIFGROUP = 0xc0286988 + SIOCGIFINDEX = 0xc0206920 + SIOCGIFMAC = 0xc0206926 + SIOCGIFMEDIA = 0xc0306938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFRSSHASH = 0xc0186997 + SIOCGIFRSSKEY = 0xc0946996 + SIOCGIFSTATUS = 0xc331693b + SIOCGIFXMEDIA = 0xc030698b + SIOCGLANPCP = 0xc0206998 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGPRIVATE_0 = 0xc0206950 + SIOCGPRIVATE_1 = 0xc0206951 + SIOCGTUNFIB = 0xc020695e + SIOCIFCREATE = 0xc020697a + SIOCIFCREATE2 = 0xc020697c + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSDRVSPEC = 0x8028697b + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020691e + SIOCSIFDESCR = 0x80206929 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFIB = 0x8020695d + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206927 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNAME = 0x80206928 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPHYS = 0x80206936 + SIOCSIFRVNET = 0xc020695b + SIOCSIFVNET = 0xc020695a + SIOCSLANPCP = 0x80206999 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSTUNFIB = 0x8020695f + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_NONBLOCK = 0x20000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_LOCAL = 0x0 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BINTIME = 0x2000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DOMAIN = 0x1019 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1009 + SO_LINGER = 0x80 + SO_LISTENINCQLEN = 0x1013 + SO_LISTENQLEN = 0x1012 + SO_LISTENQLIMIT = 0x1011 + SO_MAX_PACING_RATE = 0x1018 + SO_NOSIGPIPE = 0x800 + SO_NO_DDP = 0x8000 + SO_NO_OFFLOAD = 0x4000 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1010 + SO_PROTOCOL = 0x1016 + SO_PROTOTYPE = 0x1016 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_RERROR = 0x20000 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_REUSEPORT_LB = 0x10000 + SO_SETFIB = 0x1014 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TS_BINTIME = 0x1 + SO_TS_CLOCK = 0x1017 + SO_TS_CLOCK_MAX = 0x3 + SO_TS_DEFAULT = 0x0 + SO_TS_MONOTONIC = 0x3 + SO_TS_REALTIME = 0x2 + SO_TS_REALTIME_MICRO = 0x0 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USER_COOKIE = 0x1015 + SO_VENDOR = 0x80000000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB3 = 0x4 + TABDLY = 0x4 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCPOPT_EOL = 0x0 + TCPOPT_FAST_OPEN = 0x22 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_PAD = 0x0 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_WINDOW = 0x3 + TCP_BBR_ACK_COMP_ALG = 0x448 + TCP_BBR_ALGORITHM = 0x43b + TCP_BBR_DRAIN_INC_EXTRA = 0x43c + TCP_BBR_DRAIN_PG = 0x42e + TCP_BBR_EXTRA_GAIN = 0x449 + TCP_BBR_EXTRA_STATE = 0x453 + TCP_BBR_FLOOR_MIN_TSO = 0x454 + TCP_BBR_HDWR_PACE = 0x451 + TCP_BBR_HOLD_TARGET = 0x436 + TCP_BBR_IWINTSO = 0x42b + TCP_BBR_LOWGAIN_FD = 0x436 + TCP_BBR_LOWGAIN_HALF = 0x435 + TCP_BBR_LOWGAIN_THRESH = 0x434 + TCP_BBR_MAX_RTO = 0x439 + TCP_BBR_MIN_RTO = 0x438 + TCP_BBR_MIN_TOPACEOUT = 0x455 + TCP_BBR_ONE_RETRAN = 0x431 + TCP_BBR_PACE_CROSS = 0x442 + TCP_BBR_PACE_DEL_TAR = 0x43f + TCP_BBR_PACE_OH = 0x435 + TCP_BBR_PACE_PER_SEC = 0x43e + TCP_BBR_PACE_SEG_MAX = 0x440 + TCP_BBR_PACE_SEG_MIN = 0x441 + TCP_BBR_POLICER_DETECT = 0x457 + TCP_BBR_PROBE_RTT_GAIN = 0x44d + TCP_BBR_PROBE_RTT_INT = 0x430 + TCP_BBR_PROBE_RTT_LEN = 0x44e + TCP_BBR_RACK_RTT_USE = 0x44a + TCP_BBR_RECFORCE = 0x42c + TCP_BBR_REC_OVER_HPTS = 0x43a + TCP_BBR_RETRAN_WTSO = 0x44b + TCP_BBR_RWND_IS_APP = 0x42f + TCP_BBR_SEND_IWND_IN_TSO = 0x44f + TCP_BBR_STARTUP_EXIT_EPOCH = 0x43d + TCP_BBR_STARTUP_LOSS_EXIT = 0x432 + TCP_BBR_STARTUP_PG = 0x42d + TCP_BBR_TMR_PACE_OH = 0x448 + TCP_BBR_TSLIMITS = 0x434 + TCP_BBR_TSTMP_RAISES = 0x456 + TCP_BBR_UNLIMITED = 0x43b + TCP_BBR_USEDEL_RATE = 0x437 + TCP_BBR_USE_LOWGAIN = 0x433 + TCP_BBR_USE_RACK_CHEAT = 0x450 + TCP_BBR_UTTER_MAX_TSO = 0x452 + TCP_CA_NAME_MAX = 0x10 + TCP_CCALGOOPT = 0x41 + TCP_CONGESTION = 0x40 + TCP_DATA_AFTER_CLOSE = 0x44c + TCP_DELACK = 0x48 + TCP_FASTOPEN = 0x401 + TCP_FASTOPEN_MAX_COOKIE_LEN = 0x10 + TCP_FASTOPEN_MIN_COOKIE_LEN = 0x4 + TCP_FASTOPEN_PSK_LEN = 0x10 + TCP_FUNCTION_BLK = 0x2000 + TCP_FUNCTION_NAME_LEN_MAX = 0x20 + TCP_INFO = 0x20 + TCP_KEEPCNT = 0x400 + TCP_KEEPIDLE = 0x100 + TCP_KEEPINIT = 0x80 + TCP_KEEPINTVL = 0x200 + TCP_LOG = 0x22 + TCP_LOGBUF = 0x23 + TCP_LOGDUMP = 0x25 + TCP_LOGDUMPID = 0x26 + TCP_LOGID = 0x24 + TCP_LOG_ID_LEN = 0x40 + TCP_MAXBURST = 0x4 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_PCAP_IN = 0x1000 + TCP_PCAP_OUT = 0x800 + TCP_RACK_EARLY_RECOV = 0x423 + TCP_RACK_EARLY_SEG = 0x424 + TCP_RACK_GP_INCREASE = 0x446 + TCP_RACK_IDLE_REDUCE_HIGH = 0x444 + TCP_RACK_MIN_PACE = 0x445 + TCP_RACK_MIN_PACE_SEG = 0x446 + TCP_RACK_MIN_TO = 0x422 + TCP_RACK_PACE_ALWAYS = 0x41f + TCP_RACK_PACE_MAX_SEG = 0x41e + TCP_RACK_PACE_REDUCE = 0x41d + TCP_RACK_PKT_DELAY = 0x428 + TCP_RACK_PROP = 0x41b + TCP_RACK_PROP_RATE = 0x420 + TCP_RACK_PRR_SENDALOT = 0x421 + TCP_RACK_REORD_FADE = 0x426 + TCP_RACK_REORD_THRESH = 0x425 + TCP_RACK_TLP_INC_VAR = 0x429 + TCP_RACK_TLP_REDUCE = 0x41c + TCP_RACK_TLP_THRESH = 0x427 + TCP_RACK_TLP_USE = 0x447 + TCP_VENDOR = 0x80000000 + TCSAFLUSH = 0x2 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGPTN = 0x4004740f + TIOCGSID = 0x40047463 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DCD = 0x40 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMASTER = 0x2000741c + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + UTIME_NOW = -0x1 + UTIME_OMIT = -0x2 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VERASE2 = 0x7 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_BCACHE_SIZE_MAX = 0x19000000 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x4 + WCOREFLAG = 0x80 + WEXITED = 0x10 + WLINUXCLONE = 0x80000000 + WNOHANG = 0x1 + WNOWAIT = 0x8 + WSTOPPED = 0x2 + WTRAPPED = 0x20 + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x59) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x55) + ECAPMODE = syscall.Errno(0x5e) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDOOFUS = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x56) + EINPROGRESS = syscall.Errno(0x24) + EINTEGRITY = syscall.Errno(0x61) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x61) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5a) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x57) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCAPABLE = syscall.Errno(0x5d) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5f) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x60) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5c) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGLIBRT = syscall.Signal(0x21) + SIGLWP = syscall.Signal(0x20) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EWOULDBLOCK", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "ECANCELED", "operation canceled"}, + {86, "EILSEQ", "illegal byte sequence"}, + {87, "ENOATTR", "attribute not found"}, + {88, "EDOOFUS", "programming error"}, + {89, "EBADMSG", "bad message"}, + {90, "EMULTIHOP", "multihop attempted"}, + {91, "ENOLINK", "link has been severed"}, + {92, "EPROTO", "protocol error"}, + {93, "ENOTCAPABLE", "capabilities insufficient"}, + {94, "ECAPMODE", "not permitted in capability mode"}, + {95, "ENOTRECOVERABLE", "state not recoverable"}, + {96, "EOWNERDEAD", "previous owner died"}, + {97, "EINTEGRITY", "integrity check failed"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "unknown signal"}, + {33, "SIGLIBRT", "unknown signal"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go b/tests/vendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go new file mode 100644 index 000000000..67c02dd57 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go @@ -0,0 +1,2147 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build riscv64 && freebsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x23 + AF_ATM = 0x1e + AF_BLUETOOTH = 0x24 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_HYPERV = 0x2b + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1c + AF_INET6_SDP = 0x2a + AF_INET_SDP = 0x28 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x2b + AF_NATM = 0x1d + AF_NETBIOS = 0x6 + AF_NETGRAPH = 0x20 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SCLUSTER = 0x22 + AF_SIP = 0x18 + AF_SLOW = 0x21 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VENDOR00 = 0x27 + AF_VENDOR01 = 0x29 + AF_VENDOR03 = 0x2d + AF_VENDOR04 = 0x2f + AF_VENDOR05 = 0x31 + AF_VENDOR06 = 0x33 + AF_VENDOR07 = 0x35 + AF_VENDOR08 = 0x37 + AF_VENDOR09 = 0x39 + AF_VENDOR10 = 0x3b + AF_VENDOR11 = 0x3d + AF_VENDOR12 = 0x3f + AF_VENDOR13 = 0x41 + AF_VENDOR14 = 0x43 + AF_VENDOR15 = 0x45 + AF_VENDOR16 = 0x47 + AF_VENDOR17 = 0x49 + AF_VENDOR18 = 0x4b + AF_VENDOR19 = 0x4d + AF_VENDOR20 = 0x4f + AF_VENDOR21 = 0x51 + AF_VENDOR22 = 0x53 + AF_VENDOR23 = 0x55 + AF_VENDOR24 = 0x57 + AF_VENDOR25 = 0x59 + AF_VENDOR26 = 0x5b + AF_VENDOR27 = 0x5d + AF_VENDOR28 = 0x5f + AF_VENDOR29 = 0x61 + AF_VENDOR30 = 0x63 + AF_VENDOR31 = 0x65 + AF_VENDOR32 = 0x67 + AF_VENDOR33 = 0x69 + AF_VENDOR34 = 0x6b + AF_VENDOR35 = 0x6d + AF_VENDOR36 = 0x6f + AF_VENDOR37 = 0x71 + AF_VENDOR38 = 0x73 + AF_VENDOR39 = 0x75 + AF_VENDOR40 = 0x77 + AF_VENDOR41 = 0x79 + AF_VENDOR42 = 0x7b + AF_VENDOR43 = 0x7d + AF_VENDOR44 = 0x7f + AF_VENDOR45 = 0x81 + AF_VENDOR46 = 0x83 + AF_VENDOR47 = 0x85 + ALTWERASE = 0x200 + B0 = 0x0 + B1000000 = 0xf4240 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1500000 = 0x16e360 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B2000000 = 0x1e8480 + B230400 = 0x38400 + B2400 = 0x960 + B2500000 = 0x2625a0 + B28800 = 0x7080 + B300 = 0x12c + B3000000 = 0x2dc6c0 + B3500000 = 0x3567e0 + B38400 = 0x9600 + B4000000 = 0x3d0900 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B500000 = 0x7a120 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427c + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRECTION = 0x40044276 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0104279 + BIOCGETBUFMODE = 0x4004427d + BIOCGETIF = 0x4020426b + BIOCGETZMAX = 0x4008427f + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCGTSTAMP = 0x40044283 + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x2000427a + BIOCPROMISC = 0x20004269 + BIOCROTZBUF = 0x40184280 + BIOCSBLEN = 0xc0044266 + BIOCSDIRECTION = 0x80044277 + BIOCSDLT = 0x80044278 + BIOCSETBUFMODE = 0x8004427e + BIOCSETF = 0x80104267 + BIOCSETFNR = 0x80104282 + BIOCSETIF = 0x8020426c + BIOCSETVLANPCP = 0x80044285 + BIOCSETWF = 0x8010427b + BIOCSETZBUF = 0x80184281 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCSTSTAMP = 0x80044284 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x8 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_BUFMODE_BUFFER = 0x1 + BPF_BUFMODE_ZBUF = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_T_BINTIME = 0x2 + BPF_T_BINTIME_FAST = 0x102 + BPF_T_BINTIME_MONOTONIC = 0x202 + BPF_T_BINTIME_MONOTONIC_FAST = 0x302 + BPF_T_FAST = 0x100 + BPF_T_FLAG_MASK = 0x300 + BPF_T_FORMAT_MASK = 0x3 + BPF_T_MICROTIME = 0x0 + BPF_T_MICROTIME_FAST = 0x100 + BPF_T_MICROTIME_MONOTONIC = 0x200 + BPF_T_MICROTIME_MONOTONIC_FAST = 0x300 + BPF_T_MONOTONIC = 0x200 + BPF_T_MONOTONIC_FAST = 0x300 + BPF_T_NANOTIME = 0x1 + BPF_T_NANOTIME_FAST = 0x101 + BPF_T_NANOTIME_MONOTONIC = 0x201 + BPF_T_NANOTIME_MONOTONIC_FAST = 0x301 + BPF_T_NONE = 0x3 + BPF_T_NORMAL = 0x0 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + CAP_ACCEPT = 0x200000020000000 + CAP_ACL_CHECK = 0x400000000010000 + CAP_ACL_DELETE = 0x400000000020000 + CAP_ACL_GET = 0x400000000040000 + CAP_ACL_SET = 0x400000000080000 + CAP_ALL0 = 0x20007ffffffffff + CAP_ALL1 = 0x4000000001fffff + CAP_BIND = 0x200000040000000 + CAP_BINDAT = 0x200008000000400 + CAP_CHFLAGSAT = 0x200000000001400 + CAP_CONNECT = 0x200000080000000 + CAP_CONNECTAT = 0x200010000000400 + CAP_CREATE = 0x200000000000040 + CAP_EVENT = 0x400000000000020 + CAP_EXTATTR_DELETE = 0x400000000001000 + CAP_EXTATTR_GET = 0x400000000002000 + CAP_EXTATTR_LIST = 0x400000000004000 + CAP_EXTATTR_SET = 0x400000000008000 + CAP_FCHDIR = 0x200000000000800 + CAP_FCHFLAGS = 0x200000000001000 + CAP_FCHMOD = 0x200000000002000 + CAP_FCHMODAT = 0x200000000002400 + CAP_FCHOWN = 0x200000000004000 + CAP_FCHOWNAT = 0x200000000004400 + CAP_FCNTL = 0x200000000008000 + CAP_FCNTL_ALL = 0x78 + CAP_FCNTL_GETFL = 0x8 + CAP_FCNTL_GETOWN = 0x20 + CAP_FCNTL_SETFL = 0x10 + CAP_FCNTL_SETOWN = 0x40 + CAP_FEXECVE = 0x200000000000080 + CAP_FLOCK = 0x200000000010000 + CAP_FPATHCONF = 0x200000000020000 + CAP_FSCK = 0x200000000040000 + CAP_FSTAT = 0x200000000080000 + CAP_FSTATAT = 0x200000000080400 + CAP_FSTATFS = 0x200000000100000 + CAP_FSYNC = 0x200000000000100 + CAP_FTRUNCATE = 0x200000000000200 + CAP_FUTIMES = 0x200000000200000 + CAP_FUTIMESAT = 0x200000000200400 + CAP_GETPEERNAME = 0x200000100000000 + CAP_GETSOCKNAME = 0x200000200000000 + CAP_GETSOCKOPT = 0x200000400000000 + CAP_IOCTL = 0x400000000000080 + CAP_IOCTLS_ALL = 0x7fffffffffffffff + CAP_KQUEUE = 0x400000000100040 + CAP_KQUEUE_CHANGE = 0x400000000100000 + CAP_KQUEUE_EVENT = 0x400000000000040 + CAP_LINKAT_SOURCE = 0x200020000000400 + CAP_LINKAT_TARGET = 0x200000000400400 + CAP_LISTEN = 0x200000800000000 + CAP_LOOKUP = 0x200000000000400 + CAP_MAC_GET = 0x400000000000001 + CAP_MAC_SET = 0x400000000000002 + CAP_MKDIRAT = 0x200000000800400 + CAP_MKFIFOAT = 0x200000001000400 + CAP_MKNODAT = 0x200000002000400 + CAP_MMAP = 0x200000000000010 + CAP_MMAP_R = 0x20000000000001d + CAP_MMAP_RW = 0x20000000000001f + CAP_MMAP_RWX = 0x20000000000003f + CAP_MMAP_RX = 0x20000000000003d + CAP_MMAP_W = 0x20000000000001e + CAP_MMAP_WX = 0x20000000000003e + CAP_MMAP_X = 0x20000000000003c + CAP_PDGETPID = 0x400000000000200 + CAP_PDKILL = 0x400000000000800 + CAP_PDWAIT = 0x400000000000400 + CAP_PEELOFF = 0x200001000000000 + CAP_POLL_EVENT = 0x400000000000020 + CAP_PREAD = 0x20000000000000d + CAP_PWRITE = 0x20000000000000e + CAP_READ = 0x200000000000001 + CAP_RECV = 0x200000000000001 + CAP_RENAMEAT_SOURCE = 0x200000004000400 + CAP_RENAMEAT_TARGET = 0x200040000000400 + CAP_RIGHTS_VERSION = 0x0 + CAP_RIGHTS_VERSION_00 = 0x0 + CAP_SEEK = 0x20000000000000c + CAP_SEEK_TELL = 0x200000000000004 + CAP_SEM_GETVALUE = 0x400000000000004 + CAP_SEM_POST = 0x400000000000008 + CAP_SEM_WAIT = 0x400000000000010 + CAP_SEND = 0x200000000000002 + CAP_SETSOCKOPT = 0x200002000000000 + CAP_SHUTDOWN = 0x200004000000000 + CAP_SOCK_CLIENT = 0x200007780000003 + CAP_SOCK_SERVER = 0x200007f60000003 + CAP_SYMLINKAT = 0x200000008000400 + CAP_TTYHOOK = 0x400000000000100 + CAP_UNLINKAT = 0x200000010000400 + CAP_UNUSED0_44 = 0x200080000000000 + CAP_UNUSED0_57 = 0x300000000000000 + CAP_UNUSED1_22 = 0x400000000200000 + CAP_UNUSED1_57 = 0x500000000000000 + CAP_WRITE = 0x200000000000002 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_BOOTTIME = 0x5 + CLOCK_MONOTONIC = 0x4 + CLOCK_MONOTONIC_COARSE = 0xc + CLOCK_MONOTONIC_FAST = 0xc + CLOCK_MONOTONIC_PRECISE = 0xb + CLOCK_PROCESS_CPUTIME_ID = 0xf + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_COARSE = 0xa + CLOCK_REALTIME_FAST = 0xa + CLOCK_REALTIME_PRECISE = 0x9 + CLOCK_SECOND = 0xd + CLOCK_THREAD_CPUTIME_ID = 0xe + CLOCK_UPTIME = 0x5 + CLOCK_UPTIME_FAST = 0x8 + CLOCK_UPTIME_PRECISE = 0x7 + CLOCK_VIRTUAL = 0x1 + CPUSTATES = 0x5 + CP_IDLE = 0x4 + CP_INTR = 0x3 + CP_NICE = 0x1 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0x18 + CTL_NET = 0x4 + DIOCGATTR = 0xc148648e + DIOCGDELETE = 0x80106488 + DIOCGFLUSH = 0x20006487 + DIOCGFWHEADS = 0x40046483 + DIOCGFWSECTORS = 0x40046482 + DIOCGIDENT = 0x41006489 + DIOCGKERNELDUMP = 0xc0986492 + DIOCGMEDIASIZE = 0x40086481 + DIOCGPHYSPATH = 0x4400648d + DIOCGPROVIDERNAME = 0x4400648a + DIOCGSECTORSIZE = 0x40046480 + DIOCGSTRIPEOFFSET = 0x4008648c + DIOCGSTRIPESIZE = 0x4008648b + DIOCSKERNELDUMP = 0x80986491 + DIOCSKERNELDUMP_FREEBSD11 = 0x80046485 + DIOCSKERNELDUMP_FREEBSD12 = 0x80506490 + DIOCZONECMD = 0xc080648f + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_BREDR_BB = 0xff + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_BLUETOOTH_LE_LL = 0xfb + DLT_BLUETOOTH_LE_LL_WITH_PHDR = 0x100 + DLT_BLUETOOTH_LINUX_MONITOR = 0xfe + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_CLASS_NETBSD_RAWAF = 0x2240000 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DISPLAYPORT_AUX = 0x113 + DLT_DOCSIS = 0x8f + DLT_DOCSIS31_XRA31 = 0x111 + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_EPON = 0x103 + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_ETHERNET_MPACKET = 0x112 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_INFINIBAND = 0xf7 + DLT_IPFILTER = 0x74 + DLT_IPMB_KONTRON = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPMI_HPM_2 = 0x104 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_ISO_14443 = 0x108 + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LINUX_SLL2 = 0x114 + DLT_LOOP = 0x6c + DLT_LORATAP = 0x10e + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0x114 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NETLINK = 0xfd + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NORDIC_BLE = 0x110 + DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x79 + DLT_PKTAP = 0x102 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PROFIBUS_DL = 0x101 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RDS = 0x109 + DLT_REDBACK_SMARTEDGE = 0x20 + DLT_RIO = 0x7c + DLT_RTAC_SERIAL = 0xfa + DLT_SCCP = 0x8e + DLT_SCTP = 0xf8 + DLT_SDLC = 0x10c + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TI_LLN_SNIFFER = 0x10d + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USBPCAP = 0xf9 + DLT_USB_DARWIN = 0x10a + DLT_USB_FREEBSD = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_VSOCK = 0x10f + DLT_WATTSTOPPER_DLM = 0x107 + DLT_WIHART = 0xdf + DLT_WIRESHARK_UPPER_PDU = 0xfc + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DLT_ZWAVE_R1_R2 = 0x105 + DLT_ZWAVE_R3 = 0x106 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EHE_DEAD_PRIORITY = -0x1 + EVFILT_AIO = -0x3 + EVFILT_EMPTY = -0xd + EVFILT_FS = -0x9 + EVFILT_LIO = -0xa + EVFILT_PROC = -0x5 + EVFILT_PROCDESC = -0x8 + EVFILT_READ = -0x1 + EVFILT_SENDFILE = -0xc + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xd + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xb + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EVNAMEMAP_NAME_SIZE = 0x40 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DROP = 0x1000 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_FLAG2 = 0x4000 + EV_FORCEONESHOT = 0x100 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_MAXNAMELEN = 0xff + EXTATTR_NAMESPACE_EMPTY = 0x0 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_NONE = -0xc8 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_ADD_SEALS = 0x13 + F_CANCEL = 0x5 + F_DUP2FD = 0xa + F_DUP2FD_CLOEXEC = 0x12 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x11 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xb + F_GETOWN = 0x5 + F_GET_SEALS = 0x14 + F_ISUNIONSTACK = 0x15 + F_KINFO = 0x16 + F_OGETLK = 0x7 + F_OK = 0x0 + F_OSETLK = 0x8 + F_OSETLKW = 0x9 + F_RDAHEAD = 0x10 + F_RDLCK = 0x1 + F_READAHEAD = 0xf + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0xc + F_SETLKW = 0xd + F_SETLK_REMOTE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_UNLCKSYS = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFCAP_WOL_MAGIC = 0x2000 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x218f72 + IFF_CANTCONFIG = 0x10000 + IFF_DEBUG = 0x4 + IFF_DRV_OACTIVE = 0x400 + IFF_DRV_RUNNING = 0x40 + IFF_DYING = 0x200000 + IFF_KNOWSEPOCH = 0x20 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MONITOR = 0x40000 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOGROUP = 0x800000 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PPROMISC = 0x20000 + IFF_PROMISC = 0x100 + IFF_RENAMING = 0x400000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x80000 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_IEEE1394 = 0x90 + IFT_INFINIBAND = 0xc7 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_PPP = 0x17 + IFT_PROPVIRTUAL = 0x35 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_NETMASK_DEFAULT = 0xffffff00 + IN_RFC3021_MASK = 0xfffffffe + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CARP = 0x70 + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DCCP = 0x21 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HIP = 0x8b + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MEAS = 0x13 + IPPROTO_MH = 0x87 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OLD_DIVERT = 0xfe + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_RESERVED_253 = 0xfd + IPPROTO_RESERVED_254 = 0xfe + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEND = 0x103 + IPPROTO_SHIM6 = 0x8c + IPPROTO_SKIP = 0x39 + IPPROTO_SPACER = 0x7fff + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TLSP = 0x38 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDANY = 0x40 + IPV6_BINDMULTI = 0x41 + IPV6_BINDV6ONLY = 0x1b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FLOWID = 0x43 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_LEN = 0x14 + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOWTYPE = 0x44 + IPV6_FRAGTTL = 0x78 + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_ORIGDSTADDR = 0x48 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVFLOWID = 0x46 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVORIGDSTADDR = 0x48 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRSSBUCKETID = 0x47 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RSSBUCKETID = 0x45 + IPV6_RSS_LISTEN_BUCKET = 0x42 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IPV6_VLAN_PCP = 0x4b + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BINDANY = 0x18 + IP_BINDMULTI = 0x19 + IP_BLOCK_SOURCE = 0x48 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DONTFRAG = 0x43 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET3 = 0x31 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FLOWID = 0x5a + IP_FLOWTYPE = 0x5b + IP_FW3 = 0x30 + IP_FW_ADD = 0x32 + IP_FW_DEL = 0x33 + IP_FW_FLUSH = 0x34 + IP_FW_GET = 0x36 + IP_FW_NAT_CFG = 0x38 + IP_FW_NAT_DEL = 0x39 + IP_FW_NAT_GET_CONFIG = 0x3a + IP_FW_NAT_GET_LOG = 0x3b + IP_FW_RESETLOG = 0x37 + IP_FW_TABLE_ADD = 0x28 + IP_FW_TABLE_DEL = 0x29 + IP_FW_TABLE_FLUSH = 0x2a + IP_FW_TABLE_GETSIZE = 0x2b + IP_FW_TABLE_LIST = 0x2c + IP_FW_ZERO = 0x35 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MF = 0x2000 + IP_MINTTL = 0x42 + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_OFFMASK = 0x1fff + IP_ONESBCAST = 0x17 + IP_OPTIONS = 0x1 + IP_ORIGDSTADDR = 0x1b + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVFLOWID = 0x5d + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVORIGDSTADDR = 0x1b + IP_RECVRETOPTS = 0x6 + IP_RECVRSSBUCKETID = 0x5e + IP_RECVTOS = 0x44 + IP_RECVTTL = 0x41 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSSBUCKETID = 0x5c + IP_RSS_LISTEN_BUCKET = 0x1a + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + IP_VLAN_PCP = 0x4b + ISIG = 0x80 + ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCAL_CONNWAIT = 0x4 + LOCAL_CREDS = 0x2 + LOCAL_CREDS_PERSISTENT = 0x3 + LOCAL_PEERCRED = 0x1 + LOCAL_VENDOR = 0x80000000 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_AUTOSYNC = 0x7 + MADV_CORE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_NOCORE = 0x8 + MADV_NORMAL = 0x0 + MADV_NOSYNC = 0x6 + MADV_PROTECT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MAP_32BIT = 0x80000 + MAP_ALIGNED_SUPER = 0x1000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_EXCL = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_GUARD = 0x2000 + MAP_HASSEMAPHORE = 0x200 + MAP_NOCORE = 0x20000 + MAP_NOSYNC = 0x800 + MAP_PREFAULT_READ = 0x40000 + MAP_PRIVATE = 0x2 + MAP_RESERVED0020 = 0x20 + MAP_RESERVED0040 = 0x40 + MAP_RESERVED0080 = 0x80 + MAP_RESERVED0100 = 0x100 + MAP_SHARED = 0x1 + MAP_STACK = 0x400 + MCAST_BLOCK_SOURCE = 0x54 + MCAST_EXCLUDE = 0x2 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x50 + MCAST_JOIN_SOURCE_GROUP = 0x52 + MCAST_LEAVE_GROUP = 0x51 + MCAST_LEAVE_SOURCE_GROUP = 0x53 + MCAST_UNBLOCK_SOURCE = 0x55 + MCAST_UNDEFINED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0xfc000000 + MFD_HUGE_SHIFT = 0x1a + MNT_ACLS = 0x8000000 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x200000000 + MNT_BYFSID = 0x8000000 + MNT_CMDFLAGS = 0x300d0f0000 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_EMPTYDIR = 0x2000000000 + MNT_EXKERB = 0x800 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x20000000 + MNT_EXRDONLY = 0x80 + MNT_EXTLS = 0x4000000000 + MNT_EXTLSCERT = 0x8000000000 + MNT_EXTLSCERTUSER = 0x10000000000 + MNT_FORCE = 0x80000 + MNT_GJOURNAL = 0x2000000 + MNT_IGNORE = 0x800000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NFS4ACLS = 0x10 + MNT_NOATIME = 0x10000000 + MNT_NOCLUSTERR = 0x40000000 + MNT_NOCLUSTERW = 0x80000000 + MNT_NOCOVER = 0x1000000000 + MNT_NOEXEC = 0x4 + MNT_NONBUSY = 0x4000000 + MNT_NOSUID = 0x8 + MNT_NOSYMFOLLOW = 0x400000 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x1000000 + MNT_SOFTDEP = 0x200000 + MNT_SUIDDIR = 0x100000 + MNT_SUJ = 0x100000000 + MNT_SUSPEND = 0x4 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UNTRUSTED = 0x800000000 + MNT_UPDATE = 0x10000 + MNT_UPDATEMASK = 0xad8d0807e + MNT_USER = 0x8000 + MNT_VERIFIED = 0x400000000 + MNT_VISFLAGMASK = 0xffef0ffff + MNT_WAIT = 0x1 + MSG_CMSG_CLOEXEC = 0x40000 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_NBIO = 0x4000 + MSG_NOSIGNAL = 0x20000 + MSG_NOTIFICATION = 0x2000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x80000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x0 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLISTL = 0x5 + NET_RT_IFMALIST = 0x4 + NET_RT_NHGRP = 0x7 + NET_RT_NHOP = 0x6 + NFDBITS = 0x40 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ABSTIME = 0x10 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_CLOSE = 0x100 + NOTE_CLOSE_WRITE = 0x200 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FILE_POLL = 0x2 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MSECONDS = 0x2 + NOTE_NSECONDS = 0x8 + NOTE_OPEN = 0x80 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_READ = 0x400 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x4 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x100000 + O_CREAT = 0x200 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x20000 + O_DSYNC = 0x1000000 + O_EMPTY_PATH = 0x2000000 + O_EXCL = 0x800 + O_EXEC = 0x40000 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_PATH = 0x400000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RESOLVE_BENEATH = 0x800000 + O_SEARCH = 0x40000 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_TTY_INIT = 0x80000 + O_VERIFY = 0x200000 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PIOD_READ_D = 0x1 + PIOD_READ_I = 0x3 + PIOD_WRITE_D = 0x2 + PIOD_WRITE_I = 0x4 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PTRACE_DEFAULT = 0x1 + PTRACE_EXEC = 0x1 + PTRACE_FORK = 0x8 + PTRACE_LWP = 0x10 + PTRACE_SCE = 0x2 + PTRACE_SCX = 0x4 + PTRACE_SYSCALL = 0x6 + PTRACE_VFORK = 0x20 + PT_ATTACH = 0xa + PT_CLEARSTEP = 0x10 + PT_CONTINUE = 0x7 + PT_COREDUMP = 0x1d + PT_DETACH = 0xb + PT_FIRSTMACH = 0x40 + PT_FOLLOW_FORK = 0x17 + PT_GETDBREGS = 0x25 + PT_GETFPREGS = 0x23 + PT_GETLWPLIST = 0xf + PT_GETNUMLWPS = 0xe + PT_GETREGS = 0x21 + PT_GET_EVENT_MASK = 0x19 + PT_GET_SC_ARGS = 0x1b + PT_GET_SC_RET = 0x1c + PT_IO = 0xc + PT_KILL = 0x8 + PT_LWPINFO = 0xd + PT_LWP_EVENTS = 0x18 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_RESUME = 0x13 + PT_SETDBREGS = 0x26 + PT_SETFPREGS = 0x24 + PT_SETREGS = 0x22 + PT_SETSTEP = 0x11 + PT_SET_EVENT_MASK = 0x1a + PT_STEP = 0x9 + PT_SUSPEND = 0x12 + PT_SYSCALL = 0x16 + PT_TO_SCE = 0x14 + PT_TO_SCX = 0x15 + PT_TRACE_ME = 0x0 + PT_VM_ENTRY = 0x29 + PT_VM_TIMESTAMP = 0x28 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + P_ZONEID = 0xc + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FIXEDMTU = 0x80000 + RTF_FMASK = 0x1004d808 + RTF_GATEWAY = 0x2 + RTF_GWFLAG_COMPAT = 0x80000000 + RTF_HOST = 0x4 + RTF_LLDATA = 0x400 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_STATIC = 0x800 + RTF_STICKY = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x12 + RTM_IFANNOUNCE = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RTV_WEIGHT = 0x100 + RT_ALL_FIBS = -0x1 + RT_BLACKHOLE = 0x40 + RT_DEFAULT_FIB = 0x0 + RT_DEFAULT_WEIGHT = 0x1 + RT_HAS_GW = 0x80 + RT_HAS_HEADER = 0x10 + RT_HAS_HEADER_BIT = 0x4 + RT_L2_ME = 0x4 + RT_L2_ME_BIT = 0x2 + RT_LLE_CACHE = 0x100 + RT_MAX_WEIGHT = 0xffffff + RT_MAY_LOOP = 0x8 + RT_MAY_LOOP_BIT = 0x3 + RT_REJECT = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_BINTIME = 0x4 + SCM_CREDS = 0x3 + SCM_CREDS2 = 0x8 + SCM_MONOTONIC = 0x6 + SCM_REALTIME = 0x5 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SCM_TIME_INFO = 0x7 + SEEK_CUR = 0x1 + SEEK_DATA = 0x3 + SEEK_END = 0x2 + SEEK_HOLE = 0x4 + SEEK_SET = 0x0 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80286987 + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80286989 + SIOCDIFPHYADDR = 0x80206949 + SIOCGDRVSPEC = 0xc028697b + SIOCGETSGCNT = 0xc0207210 + SIOCGETVIFCNT = 0xc028720f + SIOCGHIWAT = 0x40047301 + SIOCGHWADDR = 0xc020693e + SIOCGI2C = 0xc020693d + SIOCGIFADDR = 0xc0206921 + SIOCGIFALIAS = 0xc044692d + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020691f + SIOCGIFCONF = 0xc0106924 + SIOCGIFDATA = 0x8020692c + SIOCGIFDESCR = 0xc020692a + SIOCGIFDOWNREASON = 0xc058699a + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFIB = 0xc020695c + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc028698a + SIOCGIFGROUP = 0xc0286988 + SIOCGIFINDEX = 0xc0206920 + SIOCGIFMAC = 0xc0206926 + SIOCGIFMEDIA = 0xc0306938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFRSSHASH = 0xc0186997 + SIOCGIFRSSKEY = 0xc0946996 + SIOCGIFSTATUS = 0xc331693b + SIOCGIFXMEDIA = 0xc030698b + SIOCGLANPCP = 0xc0206998 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGPRIVATE_0 = 0xc0206950 + SIOCGPRIVATE_1 = 0xc0206951 + SIOCGTUNFIB = 0xc020695e + SIOCIFCREATE = 0xc020697a + SIOCIFCREATE2 = 0xc020697c + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSDRVSPEC = 0x8028697b + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020691e + SIOCSIFDESCR = 0x80206929 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFIB = 0x8020695d + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206927 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNAME = 0x80206928 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPHYS = 0x80206936 + SIOCSIFRVNET = 0xc020695b + SIOCSIFVNET = 0xc020695a + SIOCSLANPCP = 0x80206999 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSTUNFIB = 0x8020695f + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_NONBLOCK = 0x20000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_LOCAL = 0x0 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BINTIME = 0x2000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DOMAIN = 0x1019 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1009 + SO_LINGER = 0x80 + SO_LISTENINCQLEN = 0x1013 + SO_LISTENQLEN = 0x1012 + SO_LISTENQLIMIT = 0x1011 + SO_MAX_PACING_RATE = 0x1018 + SO_NOSIGPIPE = 0x800 + SO_NO_DDP = 0x8000 + SO_NO_OFFLOAD = 0x4000 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1010 + SO_PROTOCOL = 0x1016 + SO_PROTOTYPE = 0x1016 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_RERROR = 0x20000 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_REUSEPORT_LB = 0x10000 + SO_SETFIB = 0x1014 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TS_BINTIME = 0x1 + SO_TS_CLOCK = 0x1017 + SO_TS_CLOCK_MAX = 0x3 + SO_TS_DEFAULT = 0x0 + SO_TS_MONOTONIC = 0x3 + SO_TS_REALTIME = 0x2 + SO_TS_REALTIME_MICRO = 0x0 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USER_COOKIE = 0x1015 + SO_VENDOR = 0x80000000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB3 = 0x4 + TABDLY = 0x4 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCPOPT_EOL = 0x0 + TCPOPT_FAST_OPEN = 0x22 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_PAD = 0x0 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_WINDOW = 0x3 + TCP_BBR_ACK_COMP_ALG = 0x448 + TCP_BBR_ALGORITHM = 0x43b + TCP_BBR_DRAIN_INC_EXTRA = 0x43c + TCP_BBR_DRAIN_PG = 0x42e + TCP_BBR_EXTRA_GAIN = 0x449 + TCP_BBR_EXTRA_STATE = 0x453 + TCP_BBR_FLOOR_MIN_TSO = 0x454 + TCP_BBR_HDWR_PACE = 0x451 + TCP_BBR_HOLD_TARGET = 0x436 + TCP_BBR_IWINTSO = 0x42b + TCP_BBR_LOWGAIN_FD = 0x436 + TCP_BBR_LOWGAIN_HALF = 0x435 + TCP_BBR_LOWGAIN_THRESH = 0x434 + TCP_BBR_MAX_RTO = 0x439 + TCP_BBR_MIN_RTO = 0x438 + TCP_BBR_MIN_TOPACEOUT = 0x455 + TCP_BBR_ONE_RETRAN = 0x431 + TCP_BBR_PACE_CROSS = 0x442 + TCP_BBR_PACE_DEL_TAR = 0x43f + TCP_BBR_PACE_OH = 0x435 + TCP_BBR_PACE_PER_SEC = 0x43e + TCP_BBR_PACE_SEG_MAX = 0x440 + TCP_BBR_PACE_SEG_MIN = 0x441 + TCP_BBR_POLICER_DETECT = 0x457 + TCP_BBR_PROBE_RTT_GAIN = 0x44d + TCP_BBR_PROBE_RTT_INT = 0x430 + TCP_BBR_PROBE_RTT_LEN = 0x44e + TCP_BBR_RACK_INIT_RATE = 0x458 + TCP_BBR_RACK_RTT_USE = 0x44a + TCP_BBR_RECFORCE = 0x42c + TCP_BBR_REC_OVER_HPTS = 0x43a + TCP_BBR_RETRAN_WTSO = 0x44b + TCP_BBR_RWND_IS_APP = 0x42f + TCP_BBR_SEND_IWND_IN_TSO = 0x44f + TCP_BBR_STARTUP_EXIT_EPOCH = 0x43d + TCP_BBR_STARTUP_LOSS_EXIT = 0x432 + TCP_BBR_STARTUP_PG = 0x42d + TCP_BBR_TMR_PACE_OH = 0x448 + TCP_BBR_TSLIMITS = 0x434 + TCP_BBR_TSTMP_RAISES = 0x456 + TCP_BBR_UNLIMITED = 0x43b + TCP_BBR_USEDEL_RATE = 0x437 + TCP_BBR_USE_LOWGAIN = 0x433 + TCP_BBR_USE_RACK_CHEAT = 0x450 + TCP_BBR_USE_RACK_RR = 0x450 + TCP_BBR_UTTER_MAX_TSO = 0x452 + TCP_CA_NAME_MAX = 0x10 + TCP_CCALGOOPT = 0x41 + TCP_CONGESTION = 0x40 + TCP_DATA_AFTER_CLOSE = 0x44c + TCP_DEFER_OPTIONS = 0x470 + TCP_DELACK = 0x48 + TCP_FASTOPEN = 0x401 + TCP_FASTOPEN_MAX_COOKIE_LEN = 0x10 + TCP_FASTOPEN_MIN_COOKIE_LEN = 0x4 + TCP_FASTOPEN_PSK_LEN = 0x10 + TCP_FAST_RSM_HACK = 0x471 + TCP_FIN_IS_RST = 0x49 + TCP_FUNCTION_BLK = 0x2000 + TCP_FUNCTION_NAME_LEN_MAX = 0x20 + TCP_HDWR_RATE_CAP = 0x46a + TCP_HDWR_UP_ONLY = 0x46c + TCP_IDLE_REDUCE = 0x46 + TCP_INFO = 0x20 + TCP_IWND_NB = 0x2b + TCP_IWND_NSEG = 0x2c + TCP_KEEPCNT = 0x400 + TCP_KEEPIDLE = 0x100 + TCP_KEEPINIT = 0x80 + TCP_KEEPINTVL = 0x200 + TCP_LOG = 0x22 + TCP_LOGBUF = 0x23 + TCP_LOGDUMP = 0x25 + TCP_LOGDUMPID = 0x26 + TCP_LOGID = 0x24 + TCP_LOGID_CNT = 0x2e + TCP_LOG_ID_LEN = 0x40 + TCP_LOG_LIMIT = 0x4a + TCP_LOG_TAG = 0x2f + TCP_MAXBURST = 0x4 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXPEAKRATE = 0x45 + TCP_MAXSEG = 0x2 + TCP_MAXUNACKTIME = 0x44 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_NO_PRR = 0x462 + TCP_PACING_RATE_CAP = 0x46b + TCP_PCAP_IN = 0x1000 + TCP_PCAP_OUT = 0x800 + TCP_PERF_INFO = 0x4e + TCP_PROC_ACCOUNTING = 0x4c + TCP_RACK_ABC_VAL = 0x46d + TCP_RACK_CHEAT_NOT_CONF_RATE = 0x459 + TCP_RACK_DO_DETECTION = 0x449 + TCP_RACK_EARLY_RECOV = 0x423 + TCP_RACK_EARLY_SEG = 0x424 + TCP_RACK_FORCE_MSEG = 0x45d + TCP_RACK_GP_INCREASE = 0x446 + TCP_RACK_GP_INCREASE_CA = 0x45a + TCP_RACK_GP_INCREASE_REC = 0x45c + TCP_RACK_GP_INCREASE_SS = 0x45b + TCP_RACK_IDLE_REDUCE_HIGH = 0x444 + TCP_RACK_MBUF_QUEUE = 0x41a + TCP_RACK_MEASURE_CNT = 0x46f + TCP_RACK_MIN_PACE = 0x445 + TCP_RACK_MIN_PACE_SEG = 0x446 + TCP_RACK_MIN_TO = 0x422 + TCP_RACK_NONRXT_CFG_RATE = 0x463 + TCP_RACK_NO_PUSH_AT_MAX = 0x466 + TCP_RACK_PACE_ALWAYS = 0x41f + TCP_RACK_PACE_MAX_SEG = 0x41e + TCP_RACK_PACE_RATE_CA = 0x45e + TCP_RACK_PACE_RATE_REC = 0x460 + TCP_RACK_PACE_RATE_SS = 0x45f + TCP_RACK_PACE_REDUCE = 0x41d + TCP_RACK_PACE_TO_FILL = 0x467 + TCP_RACK_PACING_BETA = 0x472 + TCP_RACK_PACING_BETA_ECN = 0x473 + TCP_RACK_PKT_DELAY = 0x428 + TCP_RACK_PROFILE = 0x469 + TCP_RACK_PROP = 0x41b + TCP_RACK_PROP_RATE = 0x420 + TCP_RACK_PRR_SENDALOT = 0x421 + TCP_RACK_REORD_FADE = 0x426 + TCP_RACK_REORD_THRESH = 0x425 + TCP_RACK_RR_CONF = 0x459 + TCP_RACK_TIMER_SLOP = 0x474 + TCP_RACK_TLP_INC_VAR = 0x429 + TCP_RACK_TLP_REDUCE = 0x41c + TCP_RACK_TLP_THRESH = 0x427 + TCP_RACK_TLP_USE = 0x447 + TCP_REC_ABC_VAL = 0x46e + TCP_REMOTE_UDP_ENCAPS_PORT = 0x47 + TCP_REUSPORT_LB_NUMA = 0x402 + TCP_REUSPORT_LB_NUMA_CURDOM = -0x1 + TCP_REUSPORT_LB_NUMA_NODOM = -0x2 + TCP_RXTLS_ENABLE = 0x29 + TCP_RXTLS_MODE = 0x2a + TCP_SHARED_CWND_ALLOWED = 0x4b + TCP_SHARED_CWND_ENABLE = 0x464 + TCP_SHARED_CWND_TIME_LIMIT = 0x468 + TCP_STATS = 0x21 + TCP_TIMELY_DYN_ADJ = 0x465 + TCP_TLS_MODE_IFNET = 0x2 + TCP_TLS_MODE_NONE = 0x0 + TCP_TLS_MODE_SW = 0x1 + TCP_TLS_MODE_TOE = 0x3 + TCP_TXTLS_ENABLE = 0x27 + TCP_TXTLS_MODE = 0x28 + TCP_USER_LOG = 0x30 + TCP_USE_CMP_ACKS = 0x4d + TCP_VENDOR = 0x80000000 + TCSAFLUSH = 0x2 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGPTN = 0x4004740f + TIOCGSID = 0x40047463 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DCD = 0x40 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMASTER = 0x2000741c + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + UTIME_NOW = -0x1 + UTIME_OMIT = -0x2 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VERASE2 = 0x7 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x4 + WCOREFLAG = 0x80 + WEXITED = 0x10 + WLINUXCLONE = 0x80000000 + WNOHANG = 0x1 + WNOWAIT = 0x8 + WSTOPPED = 0x2 + WTRAPPED = 0x20 + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x59) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x55) + ECAPMODE = syscall.Errno(0x5e) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDOOFUS = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x56) + EINPROGRESS = syscall.Errno(0x24) + EINTEGRITY = syscall.Errno(0x61) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x61) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5a) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x57) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCAPABLE = syscall.Errno(0x5d) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5f) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x60) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5c) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGLIBRT = syscall.Signal(0x21) + SIGLWP = syscall.Signal(0x20) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EWOULDBLOCK", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "ECANCELED", "operation canceled"}, + {86, "EILSEQ", "illegal byte sequence"}, + {87, "ENOATTR", "attribute not found"}, + {88, "EDOOFUS", "programming error"}, + {89, "EBADMSG", "bad message"}, + {90, "EMULTIHOP", "multihop attempted"}, + {91, "ENOLINK", "link has been severed"}, + {92, "EPROTO", "protocol error"}, + {93, "ENOTCAPABLE", "capabilities insufficient"}, + {94, "ECAPMODE", "not permitted in capability mode"}, + {95, "ENOTRECOVERABLE", "state not recoverable"}, + {96, "EOWNERDEAD", "previous owner died"}, + {97, "EINTEGRITY", "integrity check failed"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "unknown signal"}, + {33, "SIGLIBRT", "unknown signal"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_linux.go b/tests/vendor/golang.org/x/sys/unix/zerrors_linux.go new file mode 100644 index 000000000..4f432bfe8 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_linux.go @@ -0,0 +1,3752 @@ +// Code generated by mkmerge; DO NOT EDIT. + +//go:build linux + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2e + AF_MCTP = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_DRBG_ENTROPY = 0x6 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_KEY_BY_KEY_SERIAL = 0x7 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_MCTP = 0x122 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUDIT_ADD = 0x3eb + AUDIT_ADD_RULE = 0x3f3 + AUDIT_ALWAYS = 0x2 + AUDIT_ANOM_ABEND = 0x6a5 + AUDIT_ANOM_CREAT = 0x6a7 + AUDIT_ANOM_LINK = 0x6a6 + AUDIT_ANOM_PROMISCUOUS = 0x6a4 + AUDIT_ARCH = 0xb + AUDIT_ARCH_AARCH64 = 0xc00000b7 + AUDIT_ARCH_ALPHA = 0xc0009026 + AUDIT_ARCH_ARCOMPACT = 0x4000005d + AUDIT_ARCH_ARCOMPACTBE = 0x5d + AUDIT_ARCH_ARCV2 = 0x400000c3 + AUDIT_ARCH_ARCV2BE = 0xc3 + AUDIT_ARCH_ARM = 0x40000028 + AUDIT_ARCH_ARMEB = 0x28 + AUDIT_ARCH_C6X = 0x4000008c + AUDIT_ARCH_C6XBE = 0x8c + AUDIT_ARCH_CRIS = 0x4000004c + AUDIT_ARCH_CSKY = 0x400000fc + AUDIT_ARCH_FRV = 0x5441 + AUDIT_ARCH_H8300 = 0x2e + AUDIT_ARCH_HEXAGON = 0xa4 + AUDIT_ARCH_I386 = 0x40000003 + AUDIT_ARCH_IA64 = 0xc0000032 + AUDIT_ARCH_LOONGARCH32 = 0x40000102 + AUDIT_ARCH_LOONGARCH64 = 0xc0000102 + AUDIT_ARCH_M32R = 0x58 + AUDIT_ARCH_M68K = 0x4 + AUDIT_ARCH_MICROBLAZE = 0xbd + AUDIT_ARCH_MIPS = 0x8 + AUDIT_ARCH_MIPS64 = 0x80000008 + AUDIT_ARCH_MIPS64N32 = 0xa0000008 + AUDIT_ARCH_MIPSEL = 0x40000008 + AUDIT_ARCH_MIPSEL64 = 0xc0000008 + AUDIT_ARCH_MIPSEL64N32 = 0xe0000008 + AUDIT_ARCH_NDS32 = 0x400000a7 + AUDIT_ARCH_NDS32BE = 0xa7 + AUDIT_ARCH_NIOS2 = 0x40000071 + AUDIT_ARCH_OPENRISC = 0x5c + AUDIT_ARCH_PARISC = 0xf + AUDIT_ARCH_PARISC64 = 0x8000000f + AUDIT_ARCH_PPC = 0x14 + AUDIT_ARCH_PPC64 = 0x80000015 + AUDIT_ARCH_PPC64LE = 0xc0000015 + AUDIT_ARCH_RISCV32 = 0x400000f3 + AUDIT_ARCH_RISCV64 = 0xc00000f3 + AUDIT_ARCH_S390 = 0x16 + AUDIT_ARCH_S390X = 0x80000016 + AUDIT_ARCH_SH = 0x2a + AUDIT_ARCH_SH64 = 0x8000002a + AUDIT_ARCH_SHEL = 0x4000002a + AUDIT_ARCH_SHEL64 = 0xc000002a + AUDIT_ARCH_SPARC = 0x2 + AUDIT_ARCH_SPARC64 = 0x8000002b + AUDIT_ARCH_TILEGX = 0xc00000bf + AUDIT_ARCH_TILEGX32 = 0x400000bf + AUDIT_ARCH_TILEPRO = 0x400000bc + AUDIT_ARCH_UNICORE = 0x4000006e + AUDIT_ARCH_X86_64 = 0xc000003e + AUDIT_ARCH_XTENSA = 0x5e + AUDIT_ARG0 = 0xc8 + AUDIT_ARG1 = 0xc9 + AUDIT_ARG2 = 0xca + AUDIT_ARG3 = 0xcb + AUDIT_AVC = 0x578 + AUDIT_AVC_PATH = 0x57a + AUDIT_BITMASK_SIZE = 0x40 + AUDIT_BIT_MASK = 0x8000000 + AUDIT_BIT_TEST = 0x48000000 + AUDIT_BPF = 0x536 + AUDIT_BPRM_FCAPS = 0x529 + AUDIT_CAPSET = 0x52a + AUDIT_CLASS_CHATTR = 0x2 + AUDIT_CLASS_CHATTR_32 = 0x3 + AUDIT_CLASS_DIR_WRITE = 0x0 + AUDIT_CLASS_DIR_WRITE_32 = 0x1 + AUDIT_CLASS_READ = 0x4 + AUDIT_CLASS_READ_32 = 0x5 + AUDIT_CLASS_SIGNAL = 0x8 + AUDIT_CLASS_SIGNAL_32 = 0x9 + AUDIT_CLASS_WRITE = 0x6 + AUDIT_CLASS_WRITE_32 = 0x7 + AUDIT_COMPARE_AUID_TO_EUID = 0x10 + AUDIT_COMPARE_AUID_TO_FSUID = 0xe + AUDIT_COMPARE_AUID_TO_OBJ_UID = 0x5 + AUDIT_COMPARE_AUID_TO_SUID = 0xf + AUDIT_COMPARE_EGID_TO_FSGID = 0x17 + AUDIT_COMPARE_EGID_TO_OBJ_GID = 0x4 + AUDIT_COMPARE_EGID_TO_SGID = 0x18 + AUDIT_COMPARE_EUID_TO_FSUID = 0x12 + AUDIT_COMPARE_EUID_TO_OBJ_UID = 0x3 + AUDIT_COMPARE_EUID_TO_SUID = 0x11 + AUDIT_COMPARE_FSGID_TO_OBJ_GID = 0x9 + AUDIT_COMPARE_FSUID_TO_OBJ_UID = 0x8 + AUDIT_COMPARE_GID_TO_EGID = 0x14 + AUDIT_COMPARE_GID_TO_FSGID = 0x15 + AUDIT_COMPARE_GID_TO_OBJ_GID = 0x2 + AUDIT_COMPARE_GID_TO_SGID = 0x16 + AUDIT_COMPARE_SGID_TO_FSGID = 0x19 + AUDIT_COMPARE_SGID_TO_OBJ_GID = 0x7 + AUDIT_COMPARE_SUID_TO_FSUID = 0x13 + AUDIT_COMPARE_SUID_TO_OBJ_UID = 0x6 + AUDIT_COMPARE_UID_TO_AUID = 0xa + AUDIT_COMPARE_UID_TO_EUID = 0xb + AUDIT_COMPARE_UID_TO_FSUID = 0xc + AUDIT_COMPARE_UID_TO_OBJ_UID = 0x1 + AUDIT_COMPARE_UID_TO_SUID = 0xd + AUDIT_CONFIG_CHANGE = 0x519 + AUDIT_CWD = 0x51b + AUDIT_DAEMON_ABORT = 0x4b2 + AUDIT_DAEMON_CONFIG = 0x4b3 + AUDIT_DAEMON_END = 0x4b1 + AUDIT_DAEMON_START = 0x4b0 + AUDIT_DEL = 0x3ec + AUDIT_DEL_RULE = 0x3f4 + AUDIT_DEVMAJOR = 0x64 + AUDIT_DEVMINOR = 0x65 + AUDIT_DIR = 0x6b + AUDIT_DM_CTRL = 0x53a + AUDIT_DM_EVENT = 0x53b + AUDIT_EGID = 0x6 + AUDIT_EOE = 0x528 + AUDIT_EQUAL = 0x40000000 + AUDIT_EUID = 0x2 + AUDIT_EVENT_LISTENER = 0x537 + AUDIT_EXE = 0x70 + AUDIT_EXECVE = 0x51d + AUDIT_EXIT = 0x67 + AUDIT_FAIL_PANIC = 0x2 + AUDIT_FAIL_PRINTK = 0x1 + AUDIT_FAIL_SILENT = 0x0 + AUDIT_FANOTIFY = 0x533 + AUDIT_FD_PAIR = 0x525 + AUDIT_FEATURE_BITMAP_ALL = 0x7f + AUDIT_FEATURE_BITMAP_BACKLOG_LIMIT = 0x1 + AUDIT_FEATURE_BITMAP_BACKLOG_WAIT_TIME = 0x2 + AUDIT_FEATURE_BITMAP_EXCLUDE_EXTEND = 0x8 + AUDIT_FEATURE_BITMAP_EXECUTABLE_PATH = 0x4 + AUDIT_FEATURE_BITMAP_FILTER_FS = 0x40 + AUDIT_FEATURE_BITMAP_LOST_RESET = 0x20 + AUDIT_FEATURE_BITMAP_SESSIONID_FILTER = 0x10 + AUDIT_FEATURE_CHANGE = 0x530 + AUDIT_FEATURE_LOGINUID_IMMUTABLE = 0x1 + AUDIT_FEATURE_ONLY_UNSET_LOGINUID = 0x0 + AUDIT_FEATURE_VERSION = 0x1 + AUDIT_FIELD_COMPARE = 0x6f + AUDIT_FILETYPE = 0x6c + AUDIT_FILTERKEY = 0xd2 + AUDIT_FILTER_ENTRY = 0x2 + AUDIT_FILTER_EXCLUDE = 0x5 + AUDIT_FILTER_EXIT = 0x4 + AUDIT_FILTER_FS = 0x6 + AUDIT_FILTER_PREPEND = 0x10 + AUDIT_FILTER_TASK = 0x1 + AUDIT_FILTER_TYPE = 0x5 + AUDIT_FILTER_URING_EXIT = 0x7 + AUDIT_FILTER_USER = 0x0 + AUDIT_FILTER_WATCH = 0x3 + AUDIT_FIRST_KERN_ANOM_MSG = 0x6a4 + AUDIT_FIRST_USER_MSG = 0x44c + AUDIT_FIRST_USER_MSG2 = 0x834 + AUDIT_FSGID = 0x8 + AUDIT_FSTYPE = 0x1a + AUDIT_FSUID = 0x4 + AUDIT_GET = 0x3e8 + AUDIT_GET_FEATURE = 0x3fb + AUDIT_GID = 0x5 + AUDIT_GREATER_THAN = 0x20000000 + AUDIT_GREATER_THAN_OR_EQUAL = 0x60000000 + AUDIT_INODE = 0x66 + AUDIT_INTEGRITY_DATA = 0x708 + AUDIT_INTEGRITY_EVM_XATTR = 0x70e + AUDIT_INTEGRITY_HASH = 0x70b + AUDIT_INTEGRITY_METADATA = 0x709 + AUDIT_INTEGRITY_PCR = 0x70c + AUDIT_INTEGRITY_POLICY_RULE = 0x70f + AUDIT_INTEGRITY_RULE = 0x70d + AUDIT_INTEGRITY_STATUS = 0x70a + AUDIT_IPC = 0x517 + AUDIT_IPC_SET_PERM = 0x51f + AUDIT_IPE_ACCESS = 0x58c + AUDIT_IPE_CONFIG_CHANGE = 0x58d + AUDIT_IPE_POLICY_LOAD = 0x58e + AUDIT_KERNEL = 0x7d0 + AUDIT_KERNEL_OTHER = 0x524 + AUDIT_KERN_MODULE = 0x532 + AUDIT_LAST_FEATURE = 0x1 + AUDIT_LAST_KERN_ANOM_MSG = 0x707 + AUDIT_LAST_USER_MSG = 0x4af + AUDIT_LAST_USER_MSG2 = 0xbb7 + AUDIT_LESS_THAN = 0x10000000 + AUDIT_LESS_THAN_OR_EQUAL = 0x50000000 + AUDIT_LIST = 0x3ea + AUDIT_LIST_RULES = 0x3f5 + AUDIT_LOGIN = 0x3ee + AUDIT_LOGINUID = 0x9 + AUDIT_LOGINUID_SET = 0x18 + AUDIT_MAC_CALIPSO_ADD = 0x58a + AUDIT_MAC_CALIPSO_DEL = 0x58b + AUDIT_MAC_CIPSOV4_ADD = 0x57f + AUDIT_MAC_CIPSOV4_DEL = 0x580 + AUDIT_MAC_CONFIG_CHANGE = 0x57d + AUDIT_MAC_IPSEC_ADDSA = 0x583 + AUDIT_MAC_IPSEC_ADDSPD = 0x585 + AUDIT_MAC_IPSEC_DELSA = 0x584 + AUDIT_MAC_IPSEC_DELSPD = 0x586 + AUDIT_MAC_IPSEC_EVENT = 0x587 + AUDIT_MAC_MAP_ADD = 0x581 + AUDIT_MAC_MAP_DEL = 0x582 + AUDIT_MAC_POLICY_LOAD = 0x57b + AUDIT_MAC_STATUS = 0x57c + AUDIT_MAC_UNLBL_ALLOW = 0x57e + AUDIT_MAC_UNLBL_STCADD = 0x588 + AUDIT_MAC_UNLBL_STCDEL = 0x589 + AUDIT_MAKE_EQUIV = 0x3f7 + AUDIT_MAX_FIELDS = 0x40 + AUDIT_MAX_FIELD_COMPARE = 0x19 + AUDIT_MAX_KEY_LEN = 0x100 + AUDIT_MESSAGE_TEXT_MAX = 0x2170 + AUDIT_MMAP = 0x52b + AUDIT_MQ_GETSETATTR = 0x523 + AUDIT_MQ_NOTIFY = 0x522 + AUDIT_MQ_OPEN = 0x520 + AUDIT_MQ_SENDRECV = 0x521 + AUDIT_MSGTYPE = 0xc + AUDIT_NEGATE = 0x80000000 + AUDIT_NETFILTER_CFG = 0x52d + AUDIT_NETFILTER_PKT = 0x52c + AUDIT_NEVER = 0x0 + AUDIT_NLGRP_MAX = 0x1 + AUDIT_NOT_EQUAL = 0x30000000 + AUDIT_NR_FILTERS = 0x8 + AUDIT_OBJ_GID = 0x6e + AUDIT_OBJ_LEV_HIGH = 0x17 + AUDIT_OBJ_LEV_LOW = 0x16 + AUDIT_OBJ_PID = 0x526 + AUDIT_OBJ_ROLE = 0x14 + AUDIT_OBJ_TYPE = 0x15 + AUDIT_OBJ_UID = 0x6d + AUDIT_OBJ_USER = 0x13 + AUDIT_OPENAT2 = 0x539 + AUDIT_OPERATORS = 0x78000000 + AUDIT_PATH = 0x516 + AUDIT_PERM = 0x6a + AUDIT_PERM_ATTR = 0x8 + AUDIT_PERM_EXEC = 0x1 + AUDIT_PERM_READ = 0x4 + AUDIT_PERM_WRITE = 0x2 + AUDIT_PERS = 0xa + AUDIT_PID = 0x0 + AUDIT_POSSIBLE = 0x1 + AUDIT_PPID = 0x12 + AUDIT_PROCTITLE = 0x52f + AUDIT_REPLACE = 0x531 + AUDIT_SADDR_FAM = 0x71 + AUDIT_SECCOMP = 0x52e + AUDIT_SELINUX_ERR = 0x579 + AUDIT_SESSIONID = 0x19 + AUDIT_SET = 0x3e9 + AUDIT_SET_FEATURE = 0x3fa + AUDIT_SGID = 0x7 + AUDIT_SID_UNSET = 0xffffffff + AUDIT_SIGNAL_INFO = 0x3f2 + AUDIT_SOCKADDR = 0x51a + AUDIT_SOCKETCALL = 0x518 + AUDIT_STATUS_BACKLOG_LIMIT = 0x10 + AUDIT_STATUS_BACKLOG_WAIT_TIME = 0x20 + AUDIT_STATUS_BACKLOG_WAIT_TIME_ACTUAL = 0x80 + AUDIT_STATUS_ENABLED = 0x1 + AUDIT_STATUS_FAILURE = 0x2 + AUDIT_STATUS_LOST = 0x40 + AUDIT_STATUS_PID = 0x4 + AUDIT_STATUS_RATE_LIMIT = 0x8 + AUDIT_SUBJ_CLR = 0x11 + AUDIT_SUBJ_ROLE = 0xe + AUDIT_SUBJ_SEN = 0x10 + AUDIT_SUBJ_TYPE = 0xf + AUDIT_SUBJ_USER = 0xd + AUDIT_SUCCESS = 0x68 + AUDIT_SUID = 0x3 + AUDIT_SYSCALL = 0x514 + AUDIT_SYSCALL_CLASSES = 0x10 + AUDIT_TIME_ADJNTPVAL = 0x535 + AUDIT_TIME_INJOFFSET = 0x534 + AUDIT_TRIM = 0x3f6 + AUDIT_TTY = 0x527 + AUDIT_TTY_GET = 0x3f8 + AUDIT_TTY_SET = 0x3f9 + AUDIT_UID = 0x1 + AUDIT_UID_UNSET = 0xffffffff + AUDIT_UNUSED_BITS = 0x7fffc00 + AUDIT_URINGOP = 0x538 + AUDIT_USER = 0x3ed + AUDIT_USER_AVC = 0x453 + AUDIT_USER_TTY = 0x464 + AUDIT_VERSION_BACKLOG_LIMIT = 0x1 + AUDIT_VERSION_BACKLOG_WAIT_TIME = 0x2 + AUDIT_VERSION_LATEST = 0x7f + AUDIT_WATCH = 0x69 + AUDIT_WATCH_INS = 0x3ef + AUDIT_WATCH_LIST = 0x3f1 + AUDIT_WATCH_REM = 0x3f0 + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B110 = 0x3 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2400 = 0xb + B300 = 0x7 + B38400 = 0xf + B4800 = 0xc + B50 = 0x1 + B600 = 0x8 + B75 = 0x2 + B9600 = 0xd + BCACHEFS_SUPER_MAGIC = 0xca451a4e + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_ALU64 = 0x7 + BPF_AND = 0x50 + BPF_ARSH = 0xc0 + BPF_ATOMIC = 0xc0 + BPF_B = 0x10 + BPF_BUILD_ID_SIZE = 0x14 + BPF_CALL = 0x80 + BPF_CMPXCHG = 0xf1 + BPF_DIV = 0x30 + BPF_DW = 0x18 + BPF_END = 0xd0 + BPF_EXIT = 0x90 + BPF_FETCH = 0x1 + BPF_FROM_BE = 0x8 + BPF_FROM_LE = 0x0 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_F_AFTER = 0x10 + BPF_F_ALLOW_MULTI = 0x2 + BPF_F_ALLOW_OVERRIDE = 0x1 + BPF_F_ANY_ALIGNMENT = 0x2 + BPF_F_BEFORE = 0x8 + BPF_F_ID = 0x20 + BPF_F_NETFILTER_IP_DEFRAG = 0x1 + BPF_F_QUERY_EFFECTIVE = 0x1 + BPF_F_REDIRECT_FLAGS = 0x19 + BPF_F_REPLACE = 0x4 + BPF_F_SLEEPABLE = 0x10 + BPF_F_STRICT_ALIGNMENT = 0x1 + BPF_F_TEST_REG_INVARIANTS = 0x80 + BPF_F_TEST_RND_HI32 = 0x4 + BPF_F_TEST_RUN_ON_CPU = 0x1 + BPF_F_TEST_SKB_CHECKSUM_COMPLETE = 0x4 + BPF_F_TEST_STATE_FREQ = 0x8 + BPF_F_TEST_XDP_LIVE_FRAMES = 0x2 + BPF_F_XDP_DEV_BOUND_ONLY = 0x40 + BPF_F_XDP_HAS_FRAGS = 0x20 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JCOND = 0xe0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JLE = 0xb0 + BPF_JLT = 0xa0 + BPF_JMP = 0x5 + BPF_JMP32 = 0x6 + BPF_JNE = 0x50 + BPF_JSET = 0x40 + BPF_JSGE = 0x70 + BPF_JSGT = 0x60 + BPF_JSLE = 0xd0 + BPF_JSLT = 0xc0 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMSX = 0x80 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MOV = 0xb0 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OBJ_NAME_LEN = 0x10 + BPF_OR = 0x40 + BPF_PSEUDO_BTF_ID = 0x3 + BPF_PSEUDO_CALL = 0x1 + BPF_PSEUDO_FUNC = 0x4 + BPF_PSEUDO_KFUNC_CALL = 0x2 + BPF_PSEUDO_MAP_FD = 0x1 + BPF_PSEUDO_MAP_IDX = 0x5 + BPF_PSEUDO_MAP_IDX_VALUE = 0x6 + BPF_PSEUDO_MAP_VALUE = 0x2 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAG_SIZE = 0x8 + BPF_TAX = 0x0 + BPF_TO_BE = 0x8 + BPF_TO_LE = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XADD = 0xc0 + BPF_XCHG = 0xe1 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + BUS_BLUETOOTH = 0x5 + BUS_HIL = 0x4 + BUS_USB = 0x3 + BUS_VIRTUAL = 0x6 + CAN_BCM = 0x2 + CAN_BUS_OFF_THRESHOLD = 0x100 + CAN_CTRLMODE_3_SAMPLES = 0x4 + CAN_CTRLMODE_BERR_REPORTING = 0x10 + CAN_CTRLMODE_CC_LEN8_DLC = 0x100 + CAN_CTRLMODE_FD = 0x20 + CAN_CTRLMODE_FD_NON_ISO = 0x80 + CAN_CTRLMODE_LISTENONLY = 0x2 + CAN_CTRLMODE_LOOPBACK = 0x1 + CAN_CTRLMODE_ONE_SHOT = 0x8 + CAN_CTRLMODE_PRESUME_ACK = 0x40 + CAN_CTRLMODE_TDC_AUTO = 0x200 + CAN_CTRLMODE_TDC_MANUAL = 0x400 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERROR_PASSIVE_THRESHOLD = 0x80 + CAN_ERROR_WARNING_THRESHOLD = 0x60 + CAN_ERR_ACK = 0x20 + CAN_ERR_BUSERROR = 0x80 + CAN_ERR_BUSOFF = 0x40 + CAN_ERR_CNT = 0x200 + CAN_ERR_CRTL = 0x4 + CAN_ERR_CRTL_ACTIVE = 0x40 + CAN_ERR_CRTL_RX_OVERFLOW = 0x1 + CAN_ERR_CRTL_RX_PASSIVE = 0x10 + CAN_ERR_CRTL_RX_WARNING = 0x4 + CAN_ERR_CRTL_TX_OVERFLOW = 0x2 + CAN_ERR_CRTL_TX_PASSIVE = 0x20 + CAN_ERR_CRTL_TX_WARNING = 0x8 + CAN_ERR_CRTL_UNSPEC = 0x0 + CAN_ERR_DLC = 0x8 + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_LOSTARB = 0x2 + CAN_ERR_LOSTARB_UNSPEC = 0x0 + CAN_ERR_MASK = 0x1fffffff + CAN_ERR_PROT = 0x8 + CAN_ERR_PROT_ACTIVE = 0x40 + CAN_ERR_PROT_BIT = 0x1 + CAN_ERR_PROT_BIT0 = 0x8 + CAN_ERR_PROT_BIT1 = 0x10 + CAN_ERR_PROT_FORM = 0x2 + CAN_ERR_PROT_LOC_ACK = 0x19 + CAN_ERR_PROT_LOC_ACK_DEL = 0x1b + CAN_ERR_PROT_LOC_CRC_DEL = 0x18 + CAN_ERR_PROT_LOC_CRC_SEQ = 0x8 + CAN_ERR_PROT_LOC_DATA = 0xa + CAN_ERR_PROT_LOC_DLC = 0xb + CAN_ERR_PROT_LOC_EOF = 0x1a + CAN_ERR_PROT_LOC_ID04_00 = 0xe + CAN_ERR_PROT_LOC_ID12_05 = 0xf + CAN_ERR_PROT_LOC_ID17_13 = 0x7 + CAN_ERR_PROT_LOC_ID20_18 = 0x6 + CAN_ERR_PROT_LOC_ID28_21 = 0x2 + CAN_ERR_PROT_LOC_IDE = 0x5 + CAN_ERR_PROT_LOC_INTERM = 0x12 + CAN_ERR_PROT_LOC_RES0 = 0x9 + CAN_ERR_PROT_LOC_RES1 = 0xd + CAN_ERR_PROT_LOC_RTR = 0xc + CAN_ERR_PROT_LOC_SOF = 0x3 + CAN_ERR_PROT_LOC_SRTR = 0x4 + CAN_ERR_PROT_LOC_UNSPEC = 0x0 + CAN_ERR_PROT_OVERLOAD = 0x20 + CAN_ERR_PROT_STUFF = 0x4 + CAN_ERR_PROT_TX = 0x80 + CAN_ERR_PROT_UNSPEC = 0x0 + CAN_ERR_RESTARTED = 0x100 + CAN_ERR_TRX = 0x10 + CAN_ERR_TRX_CANH_NO_WIRE = 0x4 + CAN_ERR_TRX_CANH_SHORT_TO_BAT = 0x5 + CAN_ERR_TRX_CANH_SHORT_TO_GND = 0x7 + CAN_ERR_TRX_CANH_SHORT_TO_VCC = 0x6 + CAN_ERR_TRX_CANL_NO_WIRE = 0x40 + CAN_ERR_TRX_CANL_SHORT_TO_BAT = 0x50 + CAN_ERR_TRX_CANL_SHORT_TO_CANH = 0x80 + CAN_ERR_TRX_CANL_SHORT_TO_GND = 0x70 + CAN_ERR_TRX_CANL_SHORT_TO_VCC = 0x60 + CAN_ERR_TRX_UNSPEC = 0x0 + CAN_ERR_TX_TIMEOUT = 0x1 + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_J1939 = 0x7 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MAX_RAW_DLC = 0xf + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x8 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RAW_XL_VCID_RX_FILTER = 0x4 + CAN_RAW_XL_VCID_TX_PASS = 0x2 + CAN_RAW_XL_VCID_TX_SET = 0x1 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TERMINATION_DISABLED = 0x0 + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CAP_AUDIT_CONTROL = 0x1e + CAP_AUDIT_READ = 0x25 + CAP_AUDIT_WRITE = 0x1d + CAP_BLOCK_SUSPEND = 0x24 + CAP_BPF = 0x27 + CAP_CHECKPOINT_RESTORE = 0x28 + CAP_CHOWN = 0x0 + CAP_DAC_OVERRIDE = 0x1 + CAP_DAC_READ_SEARCH = 0x2 + CAP_FOWNER = 0x3 + CAP_FSETID = 0x4 + CAP_IPC_LOCK = 0xe + CAP_IPC_OWNER = 0xf + CAP_KILL = 0x5 + CAP_LAST_CAP = 0x28 + CAP_LEASE = 0x1c + CAP_LINUX_IMMUTABLE = 0x9 + CAP_MAC_ADMIN = 0x21 + CAP_MAC_OVERRIDE = 0x20 + CAP_MKNOD = 0x1b + CAP_NET_ADMIN = 0xc + CAP_NET_BIND_SERVICE = 0xa + CAP_NET_BROADCAST = 0xb + CAP_NET_RAW = 0xd + CAP_PERFMON = 0x26 + CAP_SETFCAP = 0x1f + CAP_SETGID = 0x6 + CAP_SETPCAP = 0x8 + CAP_SETUID = 0x7 + CAP_SYSLOG = 0x22 + CAP_SYS_ADMIN = 0x15 + CAP_SYS_BOOT = 0x16 + CAP_SYS_CHROOT = 0x12 + CAP_SYS_MODULE = 0x10 + CAP_SYS_NICE = 0x17 + CAP_SYS_PACCT = 0x14 + CAP_SYS_PTRACE = 0x13 + CAP_SYS_RAWIO = 0x11 + CAP_SYS_RESOURCE = 0x18 + CAP_SYS_TIME = 0x19 + CAP_SYS_TTY_CONFIG = 0x1a + CAP_WAKE_ALARM = 0x23 + CEPH_SUPER_MAGIC = 0xc36400 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIFS_SUPER_MAGIC = 0xff534d42 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_ARGS_SIZE_VER0 = 0x40 + CLONE_ARGS_SIZE_VER1 = 0x50 + CLONE_ARGS_SIZE_VER2 = 0x58 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_CLEAR_SIGHAND = 0x100000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_INTO_CGROUP = 0x200000000 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWTIME = 0x80 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PIDFD = 0x1000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CRAMFS_MAGIC = 0x28cd3d45 + CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 + CS5 = 0x0 + CSIGNAL = 0xff + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVLINK_CMD_ESWITCH_MODE_GET = 0x1d + DEVLINK_CMD_ESWITCH_MODE_SET = 0x1e + DEVLINK_FLASH_OVERWRITE_IDENTIFIERS = 0x2 + DEVLINK_FLASH_OVERWRITE_SETTINGS = 0x1 + DEVLINK_GENL_MCGRP_CONFIG_NAME = "config" + DEVLINK_GENL_NAME = "devlink" + DEVLINK_GENL_VERSION = 0x1 + DEVLINK_PORT_FN_CAP_IPSEC_CRYPTO = 0x4 + DEVLINK_PORT_FN_CAP_IPSEC_PACKET = 0x8 + DEVLINK_PORT_FN_CAP_MIGRATABLE = 0x2 + DEVLINK_PORT_FN_CAP_ROCE = 0x1 + DEVLINK_SB_THRESHOLD_TO_ALPHA_MAX = 0x14 + DEVLINK_SUPPORTED_FLASH_OVERWRITE_SECTIONS = 0x3 + DEVMEM_MAGIC = 0x454d444d + DEVPTS_SUPER_MAGIC = 0x1cd1 + DMA_BUF_MAGIC = 0x444d4142 + DM_ACTIVE_PRESENT_FLAG = 0x20 + DM_BUFFER_FULL_FLAG = 0x100 + DM_CONTROL_NODE = "control" + DM_DATA_OUT_FLAG = 0x10000 + DM_DEFERRED_REMOVE = 0x20000 + DM_DEV_ARM_POLL = 0xc138fd10 + DM_DEV_CREATE = 0xc138fd03 + DM_DEV_REMOVE = 0xc138fd04 + DM_DEV_RENAME = 0xc138fd05 + DM_DEV_SET_GEOMETRY = 0xc138fd0f + DM_DEV_STATUS = 0xc138fd07 + DM_DEV_SUSPEND = 0xc138fd06 + DM_DEV_WAIT = 0xc138fd08 + DM_DIR = "mapper" + DM_GET_TARGET_VERSION = 0xc138fd11 + DM_IMA_MEASUREMENT_FLAG = 0x80000 + DM_INACTIVE_PRESENT_FLAG = 0x40 + DM_INTERNAL_SUSPEND_FLAG = 0x40000 + DM_IOCTL = 0xfd + DM_LIST_DEVICES = 0xc138fd02 + DM_LIST_VERSIONS = 0xc138fd0d + DM_MAX_TYPE_NAME = 0x10 + DM_NAME_LEN = 0x80 + DM_NAME_LIST_FLAG_DOESNT_HAVE_UUID = 0x2 + DM_NAME_LIST_FLAG_HAS_UUID = 0x1 + DM_NOFLUSH_FLAG = 0x800 + DM_PERSISTENT_DEV_FLAG = 0x8 + DM_QUERY_INACTIVE_TABLE_FLAG = 0x1000 + DM_READONLY_FLAG = 0x1 + DM_REMOVE_ALL = 0xc138fd01 + DM_SECURE_DATA_FLAG = 0x8000 + DM_SKIP_BDGET_FLAG = 0x200 + DM_SKIP_LOCKFS_FLAG = 0x400 + DM_STATUS_TABLE_FLAG = 0x10 + DM_SUSPEND_FLAG = 0x2 + DM_TABLE_CLEAR = 0xc138fd0a + DM_TABLE_DEPS = 0xc138fd0b + DM_TABLE_LOAD = 0xc138fd09 + DM_TABLE_STATUS = 0xc138fd0c + DM_TARGET_MSG = 0xc138fd0e + DM_UEVENT_GENERATED_FLAG = 0x2000 + DM_UUID_FLAG = 0x4000 + DM_UUID_LEN = 0x81 + DM_VERSION = 0xc138fd00 + DM_VERSION_EXTRA = "-ioctl (2023-03-01)" + DM_VERSION_MAJOR = 0x4 + DM_VERSION_MINOR = 0x30 + DM_VERSION_PATCHLEVEL = 0x0 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + EM_386 = 0x3 + EM_486 = 0x6 + EM_68K = 0x4 + EM_860 = 0x7 + EM_88K = 0x5 + EM_AARCH64 = 0xb7 + EM_ALPHA = 0x9026 + EM_ALTERA_NIOS2 = 0x71 + EM_ARCOMPACT = 0x5d + EM_ARCV2 = 0xc3 + EM_ARM = 0x28 + EM_BLACKFIN = 0x6a + EM_BPF = 0xf7 + EM_CRIS = 0x4c + EM_CSKY = 0xfc + EM_CYGNUS_M32R = 0x9041 + EM_CYGNUS_MN10300 = 0xbeef + EM_FRV = 0x5441 + EM_H8_300 = 0x2e + EM_HEXAGON = 0xa4 + EM_IA_64 = 0x32 + EM_LOONGARCH = 0x102 + EM_M32 = 0x1 + EM_M32R = 0x58 + EM_MICROBLAZE = 0xbd + EM_MIPS = 0x8 + EM_MIPS_RS3_LE = 0xa + EM_MIPS_RS4_BE = 0xa + EM_MN10300 = 0x59 + EM_NDS32 = 0xa7 + EM_NONE = 0x0 + EM_OPENRISC = 0x5c + EM_PARISC = 0xf + EM_PPC = 0x14 + EM_PPC64 = 0x15 + EM_RISCV = 0xf3 + EM_S390 = 0x16 + EM_S390_OLD = 0xa390 + EM_SH = 0x2a + EM_SPARC = 0x2 + EM_SPARC32PLUS = 0x12 + EM_SPARCV9 = 0x2b + EM_SPU = 0x17 + EM_TILEGX = 0xbf + EM_TILEPRO = 0xbc + EM_TI_C6000 = 0x8c + EM_UNICORE = 0x6e + EM_X86_64 = 0x3e + EM_XTENSA = 0x5e + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + EPOLL_IOC_TYPE = 0x8a + EROFS_SUPER_MAGIC_V1 = 0xe0f5e1e2 + ESP_V4_FLOW = 0xa + ESP_V6_FLOW = 0xc + ETHER_FLOW = 0x12 + ETHTOOL_BUSINFO_LEN = 0x20 + ETHTOOL_EROMVERS_LEN = 0x20 + ETHTOOL_FEC_AUTO = 0x2 + ETHTOOL_FEC_BASER = 0x10 + ETHTOOL_FEC_LLRS = 0x20 + ETHTOOL_FEC_NONE = 0x1 + ETHTOOL_FEC_OFF = 0x4 + ETHTOOL_FEC_RS = 0x8 + ETHTOOL_FLAG_ALL = 0x7 + ETHTOOL_FLASHDEV = 0x33 + ETHTOOL_FLASH_MAX_FILENAME = 0x80 + ETHTOOL_FWVERS_LEN = 0x20 + ETHTOOL_F_COMPAT = 0x4 + ETHTOOL_F_UNSUPPORTED = 0x1 + ETHTOOL_F_WISH = 0x2 + ETHTOOL_GCHANNELS = 0x3c + ETHTOOL_GCOALESCE = 0xe + ETHTOOL_GDRVINFO = 0x3 + ETHTOOL_GEEE = 0x44 + ETHTOOL_GEEPROM = 0xb + ETHTOOL_GENL_NAME = "ethtool" + ETHTOOL_GENL_VERSION = 0x1 + ETHTOOL_GET_DUMP_DATA = 0x40 + ETHTOOL_GET_DUMP_FLAG = 0x3f + ETHTOOL_GET_TS_INFO = 0x41 + ETHTOOL_GFEATURES = 0x3a + ETHTOOL_GFECPARAM = 0x50 + ETHTOOL_GFLAGS = 0x25 + ETHTOOL_GGRO = 0x2b + ETHTOOL_GGSO = 0x23 + ETHTOOL_GLINK = 0xa + ETHTOOL_GLINKSETTINGS = 0x4c + ETHTOOL_GMODULEEEPROM = 0x43 + ETHTOOL_GMODULEINFO = 0x42 + ETHTOOL_GMSGLVL = 0x7 + ETHTOOL_GPAUSEPARAM = 0x12 + ETHTOOL_GPERMADDR = 0x20 + ETHTOOL_GPFLAGS = 0x27 + ETHTOOL_GPHYSTATS = 0x4a + ETHTOOL_GREGS = 0x4 + ETHTOOL_GRINGPARAM = 0x10 + ETHTOOL_GRSSH = 0x46 + ETHTOOL_GRXCLSRLALL = 0x30 + ETHTOOL_GRXCLSRLCNT = 0x2e + ETHTOOL_GRXCLSRULE = 0x2f + ETHTOOL_GRXCSUM = 0x14 + ETHTOOL_GRXFH = 0x29 + ETHTOOL_GRXFHINDIR = 0x38 + ETHTOOL_GRXNTUPLE = 0x36 + ETHTOOL_GRXRINGS = 0x2d + ETHTOOL_GSET = 0x1 + ETHTOOL_GSG = 0x18 + ETHTOOL_GSSET_INFO = 0x37 + ETHTOOL_GSTATS = 0x1d + ETHTOOL_GSTRINGS = 0x1b + ETHTOOL_GTSO = 0x1e + ETHTOOL_GTUNABLE = 0x48 + ETHTOOL_GTXCSUM = 0x16 + ETHTOOL_GUFO = 0x21 + ETHTOOL_GWOL = 0x5 + ETHTOOL_MCGRP_MONITOR_NAME = "monitor" + ETHTOOL_NWAY_RST = 0x9 + ETHTOOL_PERQUEUE = 0x4b + ETHTOOL_PHYS_ID = 0x1c + ETHTOOL_PHY_EDPD_DFLT_TX_MSECS = 0xffff + ETHTOOL_PHY_EDPD_DISABLE = 0x0 + ETHTOOL_PHY_EDPD_NO_TX = 0xfffe + ETHTOOL_PHY_FAST_LINK_DOWN_OFF = 0xff + ETHTOOL_PHY_FAST_LINK_DOWN_ON = 0x0 + ETHTOOL_PHY_GTUNABLE = 0x4e + ETHTOOL_PHY_STUNABLE = 0x4f + ETHTOOL_RESET = 0x34 + ETHTOOL_RXNTUPLE_ACTION_CLEAR = -0x2 + ETHTOOL_RXNTUPLE_ACTION_DROP = -0x1 + ETHTOOL_RX_FLOW_SPEC_RING = 0xffffffff + ETHTOOL_RX_FLOW_SPEC_RING_VF = 0xff00000000 + ETHTOOL_RX_FLOW_SPEC_RING_VF_OFF = 0x20 + ETHTOOL_SCHANNELS = 0x3d + ETHTOOL_SCOALESCE = 0xf + ETHTOOL_SEEE = 0x45 + ETHTOOL_SEEPROM = 0xc + ETHTOOL_SET_DUMP = 0x3e + ETHTOOL_SFEATURES = 0x3b + ETHTOOL_SFECPARAM = 0x51 + ETHTOOL_SFLAGS = 0x26 + ETHTOOL_SGRO = 0x2c + ETHTOOL_SGSO = 0x24 + ETHTOOL_SLINKSETTINGS = 0x4d + ETHTOOL_SMSGLVL = 0x8 + ETHTOOL_SPAUSEPARAM = 0x13 + ETHTOOL_SPFLAGS = 0x28 + ETHTOOL_SRINGPARAM = 0x11 + ETHTOOL_SRSSH = 0x47 + ETHTOOL_SRXCLSRLDEL = 0x31 + ETHTOOL_SRXCLSRLINS = 0x32 + ETHTOOL_SRXCSUM = 0x15 + ETHTOOL_SRXFH = 0x2a + ETHTOOL_SRXFHINDIR = 0x39 + ETHTOOL_SRXNTUPLE = 0x35 + ETHTOOL_SSET = 0x2 + ETHTOOL_SSG = 0x19 + ETHTOOL_STSO = 0x1f + ETHTOOL_STUNABLE = 0x49 + ETHTOOL_STXCSUM = 0x17 + ETHTOOL_SUFO = 0x22 + ETHTOOL_SWOL = 0x6 + ETHTOOL_TEST = 0x1a + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CANXL = 0xe + ETH_P_CFM = 0x8902 + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_DSA_8021Q = 0xdadb + ETH_P_DSA_A5PSW = 0xe001 + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_ETHERCAT = 0x88a4 + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LLDP = 0x88cc + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MCTP = 0xfa + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MRP = 0x88e3 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PROFINET = 0x8892 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_REALTEK = 0x8899 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EV_ABS = 0x3 + EV_CNT = 0x20 + EV_FF = 0x15 + EV_FF_STATUS = 0x17 + EV_KEY = 0x1 + EV_LED = 0x11 + EV_MAX = 0x1f + EV_MSC = 0x4 + EV_PWR = 0x16 + EV_REL = 0x2 + EV_REP = 0x14 + EV_SND = 0x12 + EV_SW = 0x5 + EV_SYN = 0x0 + EV_VERSION = 0x10001 + EXABYTE_ENABLE_NEST = 0xf0 + EXFAT_SUPER_MAGIC = 0x2011bab0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_ALLOCATE_RANGE = 0x0 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_ATTRIB = 0x4 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_CREATE = 0x100 + FAN_DELETE = 0x200 + FAN_DELETE_SELF = 0x400 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EPIDFD = -0x2 + FAN_EVENT_INFO_TYPE_DFID = 0x3 + FAN_EVENT_INFO_TYPE_DFID_NAME = 0x2 + FAN_EVENT_INFO_TYPE_ERROR = 0x5 + FAN_EVENT_INFO_TYPE_FID = 0x1 + FAN_EVENT_INFO_TYPE_NEW_DFID_NAME = 0xc + FAN_EVENT_INFO_TYPE_OLD_DFID_NAME = 0xa + FAN_EVENT_INFO_TYPE_PIDFD = 0x4 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_FS_ERROR = 0x8000 + FAN_INFO = 0x20 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_EVICTABLE = 0x200 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORE = 0x400 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_IGNORE_SURV = 0x440 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_MOVE = 0xc0 + FAN_MOVED_FROM = 0x40 + FAN_MOVED_TO = 0x80 + FAN_MOVE_SELF = 0x800 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_NOPIDFD = -0x1 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_RENAME = 0x10000000 + FAN_REPORT_DFID_NAME = 0xc00 + FAN_REPORT_DFID_NAME_TARGET = 0x1e00 + FAN_REPORT_DIR_FID = 0x400 + FAN_REPORT_FD_ERROR = 0x2000 + FAN_REPORT_FID = 0x200 + FAN_REPORT_NAME = 0x800 + FAN_REPORT_PIDFD = 0x80 + FAN_REPORT_TARGET_FID = 0x1000 + FAN_REPORT_TID = 0x100 + FAN_RESPONSE_INFO_AUDIT_RULE = 0x1 + FAN_RESPONSE_INFO_NONE = 0x0 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FIB_RULE_DEV_DETACHED = 0x8 + FIB_RULE_FIND_SADDR = 0x10000 + FIB_RULE_IIF_DETACHED = 0x8 + FIB_RULE_INVERT = 0x2 + FIB_RULE_OIF_DETACHED = 0x10 + FIB_RULE_PERMANENT = 0x1 + FIB_RULE_UNRESOLVED = 0x4 + FIDEDUPERANGE = 0xc0189436 + FSCRYPT_KEY_DESCRIPTOR_SIZE = 0x8 + FSCRYPT_KEY_DESC_PREFIX = "fscrypt:" + FSCRYPT_KEY_DESC_PREFIX_SIZE = 0x8 + FSCRYPT_KEY_IDENTIFIER_SIZE = 0x10 + FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY = 0x1 + FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS = 0x2 + FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR = 0x1 + FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER = 0x2 + FSCRYPT_KEY_STATUS_ABSENT = 0x1 + FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF = 0x1 + FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED = 0x3 + FSCRYPT_KEY_STATUS_PRESENT = 0x2 + FSCRYPT_MAX_KEY_SIZE = 0x40 + FSCRYPT_MODE_ADIANTUM = 0x9 + FSCRYPT_MODE_AES_128_CBC = 0x5 + FSCRYPT_MODE_AES_128_CTS = 0x6 + FSCRYPT_MODE_AES_256_CTS = 0x4 + FSCRYPT_MODE_AES_256_HCTR2 = 0xa + FSCRYPT_MODE_AES_256_XTS = 0x1 + FSCRYPT_MODE_SM4_CTS = 0x8 + FSCRYPT_MODE_SM4_XTS = 0x7 + FSCRYPT_POLICY_FLAGS_PAD_16 = 0x2 + FSCRYPT_POLICY_FLAGS_PAD_32 = 0x3 + FSCRYPT_POLICY_FLAGS_PAD_4 = 0x0 + FSCRYPT_POLICY_FLAGS_PAD_8 = 0x1 + FSCRYPT_POLICY_FLAGS_PAD_MASK = 0x3 + FSCRYPT_POLICY_FLAG_DIRECT_KEY = 0x4 + FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32 = 0x10 + FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64 = 0x8 + FSCRYPT_POLICY_V1 = 0x0 + FSCRYPT_POLICY_V2 = 0x2 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_IOC_ADD_ENCRYPTION_KEY = 0xc0506617 + FS_IOC_GET_ENCRYPTION_KEY_STATUS = 0xc080661a + FS_IOC_GET_ENCRYPTION_POLICY_EX = 0xc0096616 + FS_IOC_MEASURE_VERITY = 0xc0046686 + FS_IOC_READ_VERITY_METADATA = 0xc0286687 + FS_IOC_REMOVE_ENCRYPTION_KEY = 0xc0406618 + FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS = 0xc0406619 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FS_VERITY_FL = 0x100000 + FS_VERITY_HASH_ALG_SHA256 = 0x1 + FS_VERITY_HASH_ALG_SHA512 = 0x2 + FS_VERITY_METADATA_TYPE_DESCRIPTOR = 0x2 + FS_VERITY_METADATA_TYPE_MERKLE_TREE = 0x1 + FS_VERITY_METADATA_TYPE_SIGNATURE = 0x3 + FUSE_SUPER_MAGIC = 0x65735546 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_CREATED_QUERY = 0x404 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_DUPFD_QUERY = 0x403 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_SEAL_EXEC = 0x20 + F_SEAL_FUTURE_WRITE = 0x10 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_INSECURE = 0x4 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HID_MAX_DESCRIPTOR_SIZE = 0x1000 + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + IBSHIFT = 0x10 + ICRNL = 0x100 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xb + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_CARRIER = 0x40 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERNET = 0x8f + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_L2TP = 0x73 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MPTCP = 0x106 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_SMC = 0x100 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FLOW = 0x11 + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVERR_RFC4884 = 0x1f + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_ROUTER_ALERT_ISOLATE = 0x1e + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_USER_FLOW = 0xe + IPV6_V6ONLY = 0x1a + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_LOCAL_PORT_RANGE = 0x33 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_PROTOCOL = 0x34 + IP_RECVERR = 0xb + IP_RECVERR_RFC4884 = 0x1a + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_USER_FLOW = 0xd + IP_XFRM_POLICY = 0x11 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 + IUTF8 = 0x4000 + IXANY = 0x800 + JFFS2_SUPER_MAGIC = 0x72b6 + KCMPROTO_CONNECTED = 0x0 + KCM_RECV_DISABLE = 0x1 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_LOONGARCH = 0x1020000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PARISC = 0xf0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_RISCV = 0xf30000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_CRASH_HOTPLUG_SUPPORT = 0x8 + KEXEC_FILE_DEBUG = 0x8 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEXEC_UPDATE_ELFCOREHDR = 0x4 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CAPABILITIES = 0x1f + KEYCTL_CAPS0_BIG_KEY = 0x10 + KEYCTL_CAPS0_CAPABILITIES = 0x1 + KEYCTL_CAPS0_DIFFIE_HELLMAN = 0x4 + KEYCTL_CAPS0_INVALIDATE = 0x20 + KEYCTL_CAPS0_MOVE = 0x80 + KEYCTL_CAPS0_PERSISTENT_KEYRINGS = 0x2 + KEYCTL_CAPS0_PUBLIC_KEY = 0x8 + KEYCTL_CAPS0_RESTRICT_KEYRING = 0x40 + KEYCTL_CAPS1_NOTIFICATIONS = 0x4 + KEYCTL_CAPS1_NS_KEYRING_NAME = 0x1 + KEYCTL_CAPS1_NS_KEY_TAG = 0x2 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_MOVE = 0x1e + KEYCTL_MOVE_EXCL = 0x1 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEYCTL_WATCH_KEY = 0x20 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LANDLOCK_ACCESS_FS_EXECUTE = 0x1 + LANDLOCK_ACCESS_FS_IOCTL_DEV = 0x8000 + LANDLOCK_ACCESS_FS_MAKE_BLOCK = 0x800 + LANDLOCK_ACCESS_FS_MAKE_CHAR = 0x40 + LANDLOCK_ACCESS_FS_MAKE_DIR = 0x80 + LANDLOCK_ACCESS_FS_MAKE_FIFO = 0x400 + LANDLOCK_ACCESS_FS_MAKE_REG = 0x100 + LANDLOCK_ACCESS_FS_MAKE_SOCK = 0x200 + LANDLOCK_ACCESS_FS_MAKE_SYM = 0x1000 + LANDLOCK_ACCESS_FS_READ_DIR = 0x8 + LANDLOCK_ACCESS_FS_READ_FILE = 0x4 + LANDLOCK_ACCESS_FS_REFER = 0x2000 + LANDLOCK_ACCESS_FS_REMOVE_DIR = 0x10 + LANDLOCK_ACCESS_FS_REMOVE_FILE = 0x20 + LANDLOCK_ACCESS_FS_TRUNCATE = 0x4000 + LANDLOCK_ACCESS_FS_WRITE_FILE = 0x2 + LANDLOCK_ACCESS_NET_BIND_TCP = 0x1 + LANDLOCK_ACCESS_NET_CONNECT_TCP = 0x2 + LANDLOCK_CREATE_RULESET_VERSION = 0x1 + LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET = 0x1 + LANDLOCK_SCOPE_SIGNAL = 0x2 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + LOOP_CLR_FD = 0x4c01 + LOOP_CONFIGURE = 0x4c0a + LOOP_CTL_ADD = 0x4c80 + LOOP_CTL_GET_FREE = 0x4c82 + LOOP_CTL_REMOVE = 0x4c81 + LOOP_GET_STATUS = 0x4c03 + LOOP_GET_STATUS64 = 0x4c05 + LOOP_SET_BLOCK_SIZE = 0x4c09 + LOOP_SET_CAPACITY = 0x4c07 + LOOP_SET_DIRECT_IO = 0x4c08 + LOOP_SET_FD = 0x4c00 + LOOP_SET_STATUS = 0x4c02 + LOOP_SET_STATUS64 = 0x4c04 + LOOP_SET_STATUS_CLEARABLE_FLAGS = 0x4 + LOOP_SET_STATUS_SETTABLE_FLAGS = 0xc + LO_KEY_SIZE = 0x20 + LO_NAME_SIZE = 0x40 + LWTUNNEL_IP6_MAX = 0x8 + LWTUNNEL_IP_MAX = 0x8 + LWTUNNEL_IP_OPTS_MAX = 0x3 + LWTUNNEL_IP_OPT_ERSPAN_MAX = 0x4 + LWTUNNEL_IP_OPT_GENEVE_MAX = 0x3 + LWTUNNEL_IP_OPT_VXLAN_MAX = 0x1 + MADV_COLD = 0x14 + MADV_COLLAPSE = 0x19 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_DONTNEED_LOCKED = 0x18 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_PAGEOUT = 0x15 + MADV_POPULATE_READ = 0x16 + MADV_POPULATE_WRITE = 0x17 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_DROPPABLE = 0x8 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_HUGE_16GB = 0x88000000 + MAP_HUGE_16KB = 0x38000000 + MAP_HUGE_16MB = 0x60000000 + MAP_HUGE_1GB = 0x78000000 + MAP_HUGE_1MB = 0x50000000 + MAP_HUGE_256MB = 0x70000000 + MAP_HUGE_2GB = 0x7c000000 + MAP_HUGE_2MB = 0x54000000 + MAP_HUGE_32MB = 0x64000000 + MAP_HUGE_512KB = 0x4c000000 + MAP_HUGE_512MB = 0x74000000 + MAP_HUGE_64KB = 0x40000000 + MAP_HUGE_8MB = 0x5c000000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_TYPE = 0xf + MCAST_BLOCK_SOURCE = 0x2b + MCAST_EXCLUDE = 0x0 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x2a + MCAST_JOIN_SOURCE_GROUP = 0x2e + MCAST_LEAVE_GROUP = 0x2d + MCAST_LEAVE_SOURCE_GROUP = 0x2f + MCAST_MSFILTER = 0x30 + MCAST_UNBLOCK_SOURCE = 0x2c + MEMGETREGIONINFO = 0xc0104d08 + MEMREADOOB64 = 0xc0184d16 + MEMWRITE = 0xc0304d18 + MEMWRITEOOB64 = 0xc0184d15 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_EXEC = 0x10 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = 0x88000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MFD_NOEXEC_SEAL = 0x8 + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MNT_ID_REQ_SIZE_VER0 = 0x18 + MNT_ID_REQ_SIZE_VER1 = 0x20 + MNT_NS_INFO_SIZE_VER0 = 0x10 + MODULE_INIT_COMPRESSED_FILE = 0x4 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MOUNT_ATTR_IDMAP = 0x100000 + MOUNT_ATTR_NOATIME = 0x10 + MOUNT_ATTR_NODEV = 0x4 + MOUNT_ATTR_NODIRATIME = 0x80 + MOUNT_ATTR_NOEXEC = 0x8 + MOUNT_ATTR_NOSUID = 0x2 + MOUNT_ATTR_NOSYMFOLLOW = 0x200000 + MOUNT_ATTR_RDONLY = 0x1 + MOUNT_ATTR_RELATIME = 0x0 + MOUNT_ATTR_SIZE_VER0 = 0x20 + MOUNT_ATTR_STRICTATIME = 0x20 + MOUNT_ATTR__ATIME = 0x70 + MREMAP_DONTUNMAP = 0x4 + MREMAP_FIXED = 0x2 + MREMAP_MAYMOVE = 0x1 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SOCK_DEVMEM = 0x2000000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOSYMFOLLOW = 0x100 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_ABSENT = 0x0 + MTD_BIT_WRITEABLE = 0x800 + MTD_CAP_NANDFLASH = 0x400 + MTD_CAP_NORFLASH = 0xc00 + MTD_CAP_NVRAM = 0x1c00 + MTD_CAP_RAM = 0x1c00 + MTD_CAP_ROM = 0x0 + MTD_DATAFLASH = 0x6 + MTD_INODE_FS_MAGIC = 0x11307854 + MTD_MAX_ECCPOS_ENTRIES = 0x40 + MTD_MAX_OOBFREE_ENTRIES = 0x8 + MTD_MLCNANDFLASH = 0x8 + MTD_NANDECC_AUTOPLACE = 0x2 + MTD_NANDECC_AUTOPL_USR = 0x4 + MTD_NANDECC_OFF = 0x0 + MTD_NANDECC_PLACE = 0x1 + MTD_NANDECC_PLACEONLY = 0x3 + MTD_NANDFLASH = 0x4 + MTD_NORFLASH = 0x3 + MTD_NO_ERASE = 0x1000 + MTD_OTP_FACTORY = 0x1 + MTD_OTP_OFF = 0x0 + MTD_OTP_USER = 0x2 + MTD_POWERUP_LOCK = 0x2000 + MTD_RAM = 0x1 + MTD_ROM = 0x2 + MTD_SLC_ON_MLC_EMULATION = 0x4000 + MTD_UBIVOLUME = 0x7 + MTD_WRITEABLE = 0x400 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFC_ATR_REQ_GB_MAXSIZE = 0x30 + NFC_ATR_REQ_MAXSIZE = 0x40 + NFC_ATR_RES_GB_MAXSIZE = 0x2f + NFC_ATR_RES_MAXSIZE = 0x40 + NFC_ATS_MAXSIZE = 0x14 + NFC_COMM_ACTIVE = 0x0 + NFC_COMM_PASSIVE = 0x1 + NFC_DEVICE_NAME_MAXSIZE = 0x8 + NFC_DIRECTION_RX = 0x0 + NFC_DIRECTION_TX = 0x1 + NFC_FIRMWARE_NAME_MAXSIZE = 0x20 + NFC_GB_MAXSIZE = 0x30 + NFC_GENL_MCAST_EVENT_NAME = "events" + NFC_GENL_NAME = "nfc" + NFC_GENL_VERSION = 0x1 + NFC_HEADER_SIZE = 0x1 + NFC_ISO15693_UID_MAXSIZE = 0x8 + NFC_LLCP_MAX_SERVICE_NAME = 0x3f + NFC_LLCP_MIUX = 0x1 + NFC_LLCP_REMOTE_LTO = 0x3 + NFC_LLCP_REMOTE_MIU = 0x2 + NFC_LLCP_REMOTE_RW = 0x4 + NFC_LLCP_RW = 0x0 + NFC_NFCID1_MAXSIZE = 0xa + NFC_NFCID2_MAXSIZE = 0x8 + NFC_NFCID3_MAXSIZE = 0xa + NFC_PROTO_FELICA = 0x3 + NFC_PROTO_FELICA_MASK = 0x8 + NFC_PROTO_ISO14443 = 0x4 + NFC_PROTO_ISO14443_B = 0x6 + NFC_PROTO_ISO14443_B_MASK = 0x40 + NFC_PROTO_ISO14443_MASK = 0x10 + NFC_PROTO_ISO15693 = 0x7 + NFC_PROTO_ISO15693_MASK = 0x80 + NFC_PROTO_JEWEL = 0x1 + NFC_PROTO_JEWEL_MASK = 0x2 + NFC_PROTO_MAX = 0x8 + NFC_PROTO_MIFARE = 0x2 + NFC_PROTO_MIFARE_MASK = 0x4 + NFC_PROTO_NFC_DEP = 0x5 + NFC_PROTO_NFC_DEP_MASK = 0x20 + NFC_RAW_HEADER_SIZE = 0x2 + NFC_RF_INITIATOR = 0x0 + NFC_RF_NONE = 0x2 + NFC_RF_TARGET = 0x1 + NFC_SENSB_RES_MAXSIZE = 0xc + NFC_SENSF_RES_MAXSIZE = 0x12 + NFC_SE_DISABLED = 0x0 + NFC_SE_EMBEDDED = 0x2 + NFC_SE_ENABLED = 0x1 + NFC_SE_UICC = 0x1 + NFC_SOCKPROTO_LLCP = 0x1 + NFC_SOCKPROTO_MAX = 0x2 + NFC_SOCKPROTO_RAW = 0x0 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xd + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_HOOK = 0xc + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NFT_BITWISE_BOOL = 0x0 + NFT_CHAIN_FLAGS = 0x7 + NFT_CHAIN_MAXNAMELEN = 0x100 + NFT_CT_MAX = 0x17 + NFT_DATA_RESERVED_MASK = 0xffffff00 + NFT_DATA_VALUE_MAXLEN = 0x40 + NFT_EXTHDR_OP_MAX = 0x4 + NFT_FIB_RESULT_MAX = 0x3 + NFT_INNER_MASK = 0xf + NFT_LOGLEVEL_MAX = 0x8 + NFT_NAME_MAXLEN = 0x100 + NFT_NG_MAX = 0x1 + NFT_OBJECT_CONNLIMIT = 0x5 + NFT_OBJECT_COUNTER = 0x1 + NFT_OBJECT_CT_EXPECT = 0x9 + NFT_OBJECT_CT_HELPER = 0x3 + NFT_OBJECT_CT_TIMEOUT = 0x7 + NFT_OBJECT_LIMIT = 0x4 + NFT_OBJECT_MAX = 0xa + NFT_OBJECT_QUOTA = 0x2 + NFT_OBJECT_SECMARK = 0x8 + NFT_OBJECT_SYNPROXY = 0xa + NFT_OBJECT_TUNNEL = 0x6 + NFT_OBJECT_UNSPEC = 0x0 + NFT_OBJ_MAXNAMELEN = 0x100 + NFT_OSF_MAXGENRELEN = 0x10 + NFT_QUEUE_FLAG_BYPASS = 0x1 + NFT_QUEUE_FLAG_CPU_FANOUT = 0x2 + NFT_QUEUE_FLAG_MASK = 0x3 + NFT_REG32_COUNT = 0x10 + NFT_REG32_SIZE = 0x4 + NFT_REG_MAX = 0x4 + NFT_REG_SIZE = 0x10 + NFT_REJECT_ICMPX_MAX = 0x3 + NFT_RT_MAX = 0x4 + NFT_SECMARK_CTX_MAXLEN = 0x1000 + NFT_SET_MAXNAMELEN = 0x100 + NFT_SOCKET_MAX = 0x3 + NFT_TABLE_F_MASK = 0x7 + NFT_TABLE_MAXNAMELEN = 0x100 + NFT_TRACETYPE_MAX = 0x3 + NFT_TUNNEL_F_MASK = 0x7 + NFT_TUNNEL_MAX = 0x1 + NFT_TUNNEL_MODE_MAX = 0x2 + NFT_USERDATA_MAXLEN = 0x100 + NFT_XFRM_KEY_MAX = 0x6 + NF_NAT_RANGE_MAP_IPS = 0x1 + NF_NAT_RANGE_MASK = 0x7f + NF_NAT_RANGE_NETMAP = 0x40 + NF_NAT_RANGE_PERSISTENT = 0x8 + NF_NAT_RANGE_PROTO_OFFSET = 0x20 + NF_NAT_RANGE_PROTO_RANDOM = 0x4 + NF_NAT_RANGE_PROTO_RANDOM_ALL = 0x14 + NF_NAT_RANGE_PROTO_RANDOM_FULLY = 0x10 + NF_NAT_RANGE_PROTO_SPECIFIED = 0x2 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_BULK = 0x200 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_IGNORE_OUTGOING = 0x4000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PACKET_VNET_HDR_SZ = 0x18 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PERF_ATTR_SIZE_VER0 = 0x40 + PERF_ATTR_SIZE_VER1 = 0x48 + PERF_ATTR_SIZE_VER2 = 0x50 + PERF_ATTR_SIZE_VER3 = 0x60 + PERF_ATTR_SIZE_VER4 = 0x68 + PERF_ATTR_SIZE_VER5 = 0x70 + PERF_ATTR_SIZE_VER6 = 0x78 + PERF_ATTR_SIZE_VER7 = 0x80 + PERF_ATTR_SIZE_VER8 = 0x88 + PERF_AUX_FLAG_COLLISION = 0x8 + PERF_AUX_FLAG_CORESIGHT_FORMAT_CORESIGHT = 0x0 + PERF_AUX_FLAG_CORESIGHT_FORMAT_RAW = 0x100 + PERF_AUX_FLAG_OVERWRITE = 0x2 + PERF_AUX_FLAG_PARTIAL = 0x4 + PERF_AUX_FLAG_PMU_FORMAT_TYPE_MASK = 0xff00 + PERF_AUX_FLAG_TRUNCATED = 0x1 + PERF_BRANCH_ENTRY_INFO_BITS_MAX = 0x21 + PERF_BR_ARM64_DEBUG_DATA = 0x7 + PERF_BR_ARM64_DEBUG_EXIT = 0x5 + PERF_BR_ARM64_DEBUG_HALT = 0x4 + PERF_BR_ARM64_DEBUG_INST = 0x6 + PERF_BR_ARM64_FIQ = 0x3 + PERF_FLAG_FD_CLOEXEC = 0x8 + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_HW_EVENT_MASK = 0xffffffff + PERF_MAX_CONTEXTS_PER_STACK = 0x8 + PERF_MAX_STACK_DEPTH = 0x7f + PERF_MEM_BLK_ADDR = 0x4 + PERF_MEM_BLK_DATA = 0x2 + PERF_MEM_BLK_NA = 0x1 + PERF_MEM_BLK_SHIFT = 0x28 + PERF_MEM_HOPS_0 = 0x1 + PERF_MEM_HOPS_1 = 0x2 + PERF_MEM_HOPS_2 = 0x3 + PERF_MEM_HOPS_3 = 0x4 + PERF_MEM_HOPS_SHIFT = 0x2b + PERF_MEM_LOCK_LOCKED = 0x2 + PERF_MEM_LOCK_NA = 0x1 + PERF_MEM_LOCK_SHIFT = 0x18 + PERF_MEM_LVLNUM_ANY_CACHE = 0xb + PERF_MEM_LVLNUM_CXL = 0x9 + PERF_MEM_LVLNUM_IO = 0xa + PERF_MEM_LVLNUM_L1 = 0x1 + PERF_MEM_LVLNUM_L2 = 0x2 + PERF_MEM_LVLNUM_L2_MHB = 0x5 + PERF_MEM_LVLNUM_L3 = 0x3 + PERF_MEM_LVLNUM_L4 = 0x4 + PERF_MEM_LVLNUM_LFB = 0xc + PERF_MEM_LVLNUM_MSC = 0x6 + PERF_MEM_LVLNUM_NA = 0xf + PERF_MEM_LVLNUM_PMEM = 0xe + PERF_MEM_LVLNUM_RAM = 0xd + PERF_MEM_LVLNUM_SHIFT = 0x21 + PERF_MEM_LVLNUM_UNC = 0x8 + PERF_MEM_LVL_HIT = 0x2 + PERF_MEM_LVL_IO = 0x1000 + PERF_MEM_LVL_L1 = 0x8 + PERF_MEM_LVL_L2 = 0x20 + PERF_MEM_LVL_L3 = 0x40 + PERF_MEM_LVL_LFB = 0x10 + PERF_MEM_LVL_LOC_RAM = 0x80 + PERF_MEM_LVL_MISS = 0x4 + PERF_MEM_LVL_NA = 0x1 + PERF_MEM_LVL_REM_CCE1 = 0x400 + PERF_MEM_LVL_REM_CCE2 = 0x800 + PERF_MEM_LVL_REM_RAM1 = 0x100 + PERF_MEM_LVL_REM_RAM2 = 0x200 + PERF_MEM_LVL_SHIFT = 0x5 + PERF_MEM_LVL_UNC = 0x2000 + PERF_MEM_OP_EXEC = 0x10 + PERF_MEM_OP_LOAD = 0x2 + PERF_MEM_OP_NA = 0x1 + PERF_MEM_OP_PFETCH = 0x8 + PERF_MEM_OP_SHIFT = 0x0 + PERF_MEM_OP_STORE = 0x4 + PERF_MEM_REMOTE_REMOTE = 0x1 + PERF_MEM_REMOTE_SHIFT = 0x25 + PERF_MEM_SNOOPX_FWD = 0x1 + PERF_MEM_SNOOPX_PEER = 0x2 + PERF_MEM_SNOOPX_SHIFT = 0x26 + PERF_MEM_SNOOP_HIT = 0x4 + PERF_MEM_SNOOP_HITM = 0x10 + PERF_MEM_SNOOP_MISS = 0x8 + PERF_MEM_SNOOP_NA = 0x1 + PERF_MEM_SNOOP_NONE = 0x2 + PERF_MEM_SNOOP_SHIFT = 0x13 + PERF_MEM_TLB_HIT = 0x2 + PERF_MEM_TLB_L1 = 0x8 + PERF_MEM_TLB_L2 = 0x10 + PERF_MEM_TLB_MISS = 0x4 + PERF_MEM_TLB_NA = 0x1 + PERF_MEM_TLB_OS = 0x40 + PERF_MEM_TLB_SHIFT = 0x1a + PERF_MEM_TLB_WK = 0x20 + PERF_PMU_TYPE_SHIFT = 0x20 + PERF_RECORD_KSYMBOL_FLAGS_UNREGISTER = 0x1 + PERF_RECORD_MISC_COMM_EXEC = 0x2000 + PERF_RECORD_MISC_CPUMODE_MASK = 0x7 + PERF_RECORD_MISC_CPUMODE_UNKNOWN = 0x0 + PERF_RECORD_MISC_EXACT_IP = 0x4000 + PERF_RECORD_MISC_EXT_RESERVED = 0x8000 + PERF_RECORD_MISC_FORK_EXEC = 0x2000 + PERF_RECORD_MISC_GUEST_KERNEL = 0x4 + PERF_RECORD_MISC_GUEST_USER = 0x5 + PERF_RECORD_MISC_HYPERVISOR = 0x3 + PERF_RECORD_MISC_KERNEL = 0x1 + PERF_RECORD_MISC_MMAP_BUILD_ID = 0x4000 + PERF_RECORD_MISC_MMAP_DATA = 0x2000 + PERF_RECORD_MISC_PROC_MAP_PARSE_TIMEOUT = 0x1000 + PERF_RECORD_MISC_SWITCH_OUT = 0x2000 + PERF_RECORD_MISC_SWITCH_OUT_PREEMPT = 0x4000 + PERF_RECORD_MISC_USER = 0x2 + PERF_SAMPLE_BRANCH_PLM_ALL = 0x7 + PERF_SAMPLE_WEIGHT_TYPE = 0x1004000 + PID_FS_MAGIC = 0x50494446 + PIPEFS_MAGIC = 0x50495045 + PPPIOCGNPMODE = 0xc008744c + PPPIOCNEWUNIT = 0xc004743e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROCFS_IOCTL_MAGIC = 'f' + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_AUXV = 0x41555856 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_IO_FLUSHER = 0x3a + PR_GET_KEEPCAPS = 0x7 + PR_GET_MDWE = 0x42 + PR_GET_MEMORY_MERGE = 0x44 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SHADOW_STACK_STATUS = 0x4a + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_TAGGED_ADDR_CTRL = 0x38 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_LOCK_SHADOW_STACK_STATUS = 0x4c + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MDWE_NO_INHERIT = 0x2 + PR_MDWE_REFUSE_EXEC_GAIN = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_MTE_TAG_MASK = 0x7fff8 + PR_MTE_TAG_SHIFT = 0x3 + PR_MTE_TCF_ASYNC = 0x4 + PR_MTE_TCF_MASK = 0x6 + PR_MTE_TCF_NONE = 0x0 + PR_MTE_TCF_SHIFT = 0x1 + PR_MTE_TCF_SYNC = 0x2 + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_GET_ENABLED_KEYS = 0x3d + PR_PAC_RESET_KEYS = 0x36 + PR_PAC_SET_ENABLED_KEYS = 0x3c + PR_PMLEN_MASK = 0x7f000000 + PR_PMLEN_SHIFT = 0x18 + PR_PPC_DEXCR_CTRL_CLEAR = 0x4 + PR_PPC_DEXCR_CTRL_CLEAR_ONEXEC = 0x10 + PR_PPC_DEXCR_CTRL_EDITABLE = 0x1 + PR_PPC_DEXCR_CTRL_MASK = 0x1f + PR_PPC_DEXCR_CTRL_SET = 0x2 + PR_PPC_DEXCR_CTRL_SET_ONEXEC = 0x8 + PR_PPC_DEXCR_IBRTPD = 0x1 + PR_PPC_DEXCR_NPHIE = 0x3 + PR_PPC_DEXCR_SBHE = 0x0 + PR_PPC_DEXCR_SRAPD = 0x2 + PR_PPC_GET_DEXCR = 0x48 + PR_PPC_SET_DEXCR = 0x49 + PR_RISCV_CTX_SW_FENCEI_OFF = 0x1 + PR_RISCV_CTX_SW_FENCEI_ON = 0x0 + PR_RISCV_SCOPE_PER_PROCESS = 0x0 + PR_RISCV_SCOPE_PER_THREAD = 0x1 + PR_RISCV_SET_ICACHE_FLUSH_CTX = 0x47 + PR_RISCV_V_GET_CONTROL = 0x46 + PR_RISCV_V_SET_CONTROL = 0x45 + PR_RISCV_V_VSTATE_CTRL_CUR_MASK = 0x3 + PR_RISCV_V_VSTATE_CTRL_DEFAULT = 0x0 + PR_RISCV_V_VSTATE_CTRL_INHERIT = 0x10 + PR_RISCV_V_VSTATE_CTRL_MASK = 0x1f + PR_RISCV_V_VSTATE_CTRL_NEXT_MASK = 0xc + PR_RISCV_V_VSTATE_CTRL_OFF = 0x1 + PR_RISCV_V_VSTATE_CTRL_ON = 0x2 + PR_SCHED_CORE = 0x3e + PR_SCHED_CORE_CREATE = 0x1 + PR_SCHED_CORE_GET = 0x0 + PR_SCHED_CORE_MAX = 0x4 + PR_SCHED_CORE_SCOPE_PROCESS_GROUP = 0x2 + PR_SCHED_CORE_SCOPE_THREAD = 0x0 + PR_SCHED_CORE_SCOPE_THREAD_GROUP = 0x1 + PR_SCHED_CORE_SHARE_FROM = 0x3 + PR_SCHED_CORE_SHARE_TO = 0x2 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_IO_FLUSHER = 0x39 + PR_SET_KEEPCAPS = 0x8 + PR_SET_MDWE = 0x41 + PR_SET_MEMORY_MERGE = 0x43 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SHADOW_STACK_STATUS = 0x4b + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_SYSCALL_USER_DISPATCH = 0x3b + PR_SET_TAGGED_ADDR_CTRL = 0x37 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SET_VMA = 0x53564d41 + PR_SET_VMA_ANON_NAME = 0x0 + PR_SHADOW_STACK_ENABLE = 0x1 + PR_SHADOW_STACK_PUSH = 0x4 + PR_SHADOW_STACK_WRITE = 0x2 + PR_SME_GET_VL = 0x40 + PR_SME_SET_VL = 0x3f + PR_SME_SET_VL_ONEXEC = 0x40000 + PR_SME_VL_INHERIT = 0x20000 + PR_SME_VL_LEN_MASK = 0xffff + PR_SPEC_DISABLE = 0x4 + PR_SPEC_DISABLE_NOEXEC = 0x10 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_L1D_FLUSH = 0x2 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_SYS_DISPATCH_OFF = 0x0 + PR_SYS_DISPATCH_ON = 0x1 + PR_TAGGED_ADDR_ENABLE = 0x1 + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTP_CLK_MAGIC = '=' + PTP_ENABLE_FEATURE = 0x1 + PTP_EXTTS_EDGES = 0x6 + PTP_EXTTS_EVENT_VALID = 0x1 + PTP_EXTTS_V1_VALID_FLAGS = 0x7 + PTP_EXTTS_VALID_FLAGS = 0x1f + PTP_EXT_OFFSET = 0x10 + PTP_FALLING_EDGE = 0x4 + PTP_MAX_SAMPLES = 0x19 + PTP_PEROUT_DUTY_CYCLE = 0x2 + PTP_PEROUT_ONE_SHOT = 0x1 + PTP_PEROUT_PHASE = 0x4 + PTP_PEROUT_V1_VALID_FLAGS = 0x0 + PTP_PEROUT_VALID_FLAGS = 0x7 + PTP_PIN_GETFUNC = 0xc0603d06 + PTP_PIN_GETFUNC2 = 0xc0603d0f + PTP_RISING_EDGE = 0x2 + PTP_STRICT_FLAGS = 0x8 + PTP_SYS_OFFSET_EXTENDED = 0xc4c03d09 + PTP_SYS_OFFSET_EXTENDED2 = 0xc4c03d12 + PTP_SYS_OFFSET_PRECISE = 0xc0403d08 + PTP_SYS_OFFSET_PRECISE2 = 0xc0403d11 + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENTMSG_SYSCALL_ENTRY = 0x1 + PTRACE_EVENTMSG_SYSCALL_EXIT = 0x2 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_RSEQ_CONFIGURATION = 0x420f + PTRACE_GET_SYSCALL_INFO = 0x420e + PTRACE_GET_SYSCALL_USER_DISPATCH_CONFIG = 0x4211 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKETEXT = 0x4 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SET_SYSCALL_USER_DISPATCH_CONFIG = 0x4210 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_SYSCALL_INFO_ENTRY = 0x1 + PTRACE_SYSCALL_INFO_EXIT = 0x2 + PTRACE_SYSCALL_INFO_NONE = 0x0 + PTRACE_SYSCALL_INFO_SECCOMP = 0x3 + PTRACE_TRACEME = 0x0 + P_ALL = 0x0 + P_PGID = 0x2 + P_PID = 0x1 + P_PIDFD = 0x3 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RAW_PAYLOAD_DIGITAL = 0x3 + RAW_PAYLOAD_HCI = 0x2 + RAW_PAYLOAD_LLCP = 0x0 + RAW_PAYLOAD_NCI = 0x1 + RAW_PAYLOAD_PROPRIETARY = 0x4 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0x1f + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TCP_USEC_TS = 0x10 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1e + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_BSM_DIRECT = 0x1 + RTC_BSM_DISABLED = 0x0 + RTC_BSM_LEVEL = 0x2 + RTC_BSM_STANDBY = 0x3 + RTC_FEATURE_ALARM = 0x0 + RTC_FEATURE_ALARM_RES_2S = 0x3 + RTC_FEATURE_ALARM_RES_MINUTE = 0x1 + RTC_FEATURE_ALARM_WAKEUP_ONLY = 0x7 + RTC_FEATURE_BACKUP_SWITCH_MODE = 0x6 + RTC_FEATURE_CNT = 0x8 + RTC_FEATURE_CORRECTION = 0x5 + RTC_FEATURE_NEED_WEEK_DAY = 0x2 + RTC_FEATURE_UPDATE_INTERRUPT = 0x4 + RTC_IRQF = 0x80 + RTC_MAX_FREQ = 0x2000 + RTC_PARAM_BACKUP_SWITCH_MODE = 0x2 + RTC_PARAM_CORRECTION = 0x1 + RTC_PARAM_FEATURES = 0x0 + RTC_PF = 0x40 + RTC_UF = 0x10 + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTMGRP_DECnet_IFADDR = 0x1000 + RTMGRP_DECnet_ROUTE = 0x4000 + RTMGRP_IPV4_IFADDR = 0x10 + RTMGRP_IPV4_MROUTE = 0x20 + RTMGRP_IPV4_ROUTE = 0x40 + RTMGRP_IPV4_RULE = 0x80 + RTMGRP_IPV6_IFADDR = 0x100 + RTMGRP_IPV6_IFINFO = 0x800 + RTMGRP_IPV6_MROUTE = 0x200 + RTMGRP_IPV6_PREFIX = 0x20000 + RTMGRP_IPV6_ROUTE = 0x400 + RTMGRP_LINK = 0x1 + RTMGRP_NEIGH = 0x4 + RTMGRP_NOTIFY = 0x2 + RTMGRP_TC = 0x8 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELLINKPROP = 0x6d + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNEXTHOP = 0x69 + RTM_DELNEXTHOPBUCKET = 0x75 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_DELTUNNEL = 0x79 + RTM_DELVLAN = 0x71 + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_OFFLOAD = 0x4000 + RTM_F_OFFLOAD_FAILED = 0x20000000 + RTM_F_PREFIX = 0x800 + RTM_F_TRAP = 0x8000 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETLINKPROP = 0x6e + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNEXTHOP = 0x6a + RTM_GETNEXTHOPBUCKET = 0x76 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_GETTUNNEL = 0x7a + RTM_GETVLAN = 0x72 + RTM_MAX = 0x7b + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWLINKPROP = 0x6c + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNEXTHOP = 0x68 + RTM_NEWNEXTHOPBUCKET = 0x74 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NEWTUNNEL = 0x78 + RTM_NEWVLAN = 0x70 + RTM_NR_FAMILIES = 0x1b + RTM_NR_MSGTYPES = 0x6c + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTM_SETSTATS = 0x5f + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x59 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_TRAP = 0x40 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KEEPALIVED = 0x12 + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OPENR = 0x63 + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + RWF_APPEND = 0x10 + RWF_ATOMIC = 0x40 + RWF_DSYNC = 0x2 + RWF_HIPRI = 0x1 + RWF_NOAPPEND = 0x20 + RWF_NOWAIT = 0x8 + RWF_SUPPORTED = 0x7f + RWF_SYNC = 0x4 + RWF_WRITE_LIFE_NOT_SET = 0x0 + SCHED_BATCH = 0x3 + SCHED_DEADLINE = 0x6 + SCHED_EXT = 0x7 + SCHED_FIFO = 0x1 + SCHED_FLAG_ALL = 0x7f + SCHED_FLAG_DL_OVERRUN = 0x4 + SCHED_FLAG_KEEP_ALL = 0x18 + SCHED_FLAG_KEEP_PARAMS = 0x10 + SCHED_FLAG_KEEP_POLICY = 0x8 + SCHED_FLAG_RECLAIM = 0x2 + SCHED_FLAG_RESET_ON_FORK = 0x1 + SCHED_FLAG_UTIL_CLAMP = 0x60 + SCHED_FLAG_UTIL_CLAMP_MAX = 0x40 + SCHED_FLAG_UTIL_CLAMP_MIN = 0x20 + SCHED_IDLE = 0x5 + SCHED_NORMAL = 0x0 + SCHED_RESET_ON_FORK = 0x40000000 + SCHED_RR = 0x2 + SCM_CREDENTIALS = 0x2 + SCM_PIDFD = 0x4 + SCM_RIGHTS = 0x1 + SCM_SECURITY = 0x3 + SCM_TIMESTAMP = 0x1d + SC_LOG_FLUSH = 0x100000 + SECCOMP_ADDFD_FLAG_SEND = 0x2 + SECCOMP_ADDFD_FLAG_SETFD = 0x1 + SECCOMP_FILTER_FLAG_LOG = 0x2 + SECCOMP_FILTER_FLAG_NEW_LISTENER = 0x8 + SECCOMP_FILTER_FLAG_SPEC_ALLOW = 0x4 + SECCOMP_FILTER_FLAG_TSYNC = 0x1 + SECCOMP_FILTER_FLAG_TSYNC_ESRCH = 0x10 + SECCOMP_FILTER_FLAG_WAIT_KILLABLE_RECV = 0x20 + SECCOMP_GET_ACTION_AVAIL = 0x2 + SECCOMP_GET_NOTIF_SIZES = 0x3 + SECCOMP_IOCTL_NOTIF_RECV = 0xc0502100 + SECCOMP_IOCTL_NOTIF_SEND = 0xc0182101 + SECCOMP_IOC_MAGIC = '!' + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECCOMP_RET_ACTION = 0x7fff0000 + SECCOMP_RET_ACTION_FULL = 0xffff0000 + SECCOMP_RET_ALLOW = 0x7fff0000 + SECCOMP_RET_DATA = 0xffff + SECCOMP_RET_ERRNO = 0x50000 + SECCOMP_RET_KILL = 0x0 + SECCOMP_RET_KILL_PROCESS = 0x80000000 + SECCOMP_RET_KILL_THREAD = 0x0 + SECCOMP_RET_LOG = 0x7ffc0000 + SECCOMP_RET_TRACE = 0x7ff00000 + SECCOMP_RET_TRAP = 0x30000 + SECCOMP_RET_USER_NOTIF = 0x7fc00000 + SECCOMP_SET_MODE_FILTER = 0x1 + SECCOMP_SET_MODE_STRICT = 0x0 + SECCOMP_USER_NOTIF_FD_SYNC_WAKE_UP = 0x1 + SECCOMP_USER_NOTIF_FLAG_CONTINUE = 0x1 + SECRETMEM_MAGIC = 0x5345434d + SECURITYFS_MAGIC = 0x73636673 + SEEK_CUR = 0x1 + SEEK_DATA = 0x3 + SEEK_END = 0x2 + SEEK_HOLE = 0x4 + SEEK_MAX = 0x4 + SEEK_SET = 0x0 + SELINUX_MAGIC = 0xf97cff8c + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGETLINKNAME = 0x89e0 + SIOCGETNODEID = 0x89e1 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCGSTAMPNS_OLD = 0x8907 + SIOCGSTAMP_OLD = 0x8906 + SIOCKCMATTACH = 0x89e0 + SIOCKCMCLONE = 0x89e2 + SIOCKCMUNATTACH = 0x89e1 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SK_DIAG_BPF_STORAGE_MAX = 0x3 + SK_DIAG_BPF_STORAGE_REQ_MAX = 0x1 + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB2_SUPER_MAGIC = 0xfe534d42 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_BUF_LOCK_MASK = 0x3 + SOCK_DCCP = 0x6 + SOCK_DESTROY = 0x15 + SOCK_DIAG_BY_FAMILY = 0x14 + SOCK_IOC_TYPE = 0x89 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RCVBUF_LOCK = 0x2 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_SNDBUF_LOCK = 0x1 + SOCK_TXREHASH_DEFAULT = 0xff + SOCK_TXREHASH_DISABLED = 0x0 + SOCK_TXREHASH_ENABLED = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_CAN_RAW = 0x65 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_MCTP = 0x11d + SOL_MPTCP = 0x11c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SMC = 0x11e + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_UDP = 0x11 + SOL_VSOCK = 0x11f + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x1000 + SO_ATTACH_FILTER = 0x1a + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_EE_RFC4884_FLAG_INVALID = 0x1 + SO_GET_FILTER = 0x1a + SO_NO_CHECK = 0xb + SO_PEERNAME = 0x1c + SO_PRIORITY = 0xc + SO_TIMESTAMP = 0x1d + SO_TIMESTAMP_OLD = 0x1d + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_CONNECT_TIMEOUT_NEW = 0x8 + SO_VM_SOCKETS_CONNECT_TIMEOUT_OLD = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_DAX = 0x200000 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_MOUNT_ROOT = 0x2000 + STATX_ATTR_NODUMP = 0x40 + STATX_ATTR_VERITY = 0x100000 + STATX_ATTR_WRITE_ATOMIC = 0x400000 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_DIOALIGN = 0x2000 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MNT_ID = 0x1000 + STATX_MNT_ID_UNIQUE = 0x4000 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_SUBVOL = 0x8000 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX_WRITE_ATOMIC = 0x10000 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYNC_FILE_RANGE_WRITE_AND_WAIT = 0x7 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0xe + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCPOPT_EOL = 0x0 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_TSTAMP_HDR = 0x101080a + TCPOPT_WINDOW = 0x3 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_IFINDEX = 0x2 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_TX_DELAY = 0x25 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_V4_FLOW = 0x1 + TCP_V6_FLOW = 0x5 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TFD_TIMER_ABSTIME = 0x1 + TFD_TIMER_CANCEL_ON_SET = 0x2 + TIMER_ABSTIME = 0x1 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RTS = 0x4 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIPC_ADDR_ID = 0x3 + TIPC_ADDR_MCAST = 0x1 + TIPC_ADDR_NAME = 0x2 + TIPC_ADDR_NAMESEQ = 0x1 + TIPC_AEAD_ALG_NAME = 0x20 + TIPC_AEAD_KEYLEN_MAX = 0x24 + TIPC_AEAD_KEYLEN_MIN = 0x14 + TIPC_AEAD_KEY_SIZE_MAX = 0x48 + TIPC_CFG_SRV = 0x0 + TIPC_CLUSTER_BITS = 0xc + TIPC_CLUSTER_MASK = 0xfff000 + TIPC_CLUSTER_OFFSET = 0xc + TIPC_CLUSTER_SIZE = 0xfff + TIPC_CONN_SHUTDOWN = 0x5 + TIPC_CONN_TIMEOUT = 0x82 + TIPC_CRITICAL_IMPORTANCE = 0x3 + TIPC_DESTNAME = 0x3 + TIPC_DEST_DROPPABLE = 0x81 + TIPC_ERRINFO = 0x1 + TIPC_ERR_NO_NAME = 0x1 + TIPC_ERR_NO_NODE = 0x3 + TIPC_ERR_NO_PORT = 0x2 + TIPC_ERR_OVERLOAD = 0x4 + TIPC_GROUP_JOIN = 0x87 + TIPC_GROUP_LEAVE = 0x88 + TIPC_GROUP_LOOPBACK = 0x1 + TIPC_GROUP_MEMBER_EVTS = 0x2 + TIPC_HIGH_IMPORTANCE = 0x2 + TIPC_IMPORTANCE = 0x7f + TIPC_LINK_STATE = 0x2 + TIPC_LOW_IMPORTANCE = 0x0 + TIPC_MAX_BEARER_NAME = 0x20 + TIPC_MAX_IF_NAME = 0x10 + TIPC_MAX_LINK_NAME = 0x44 + TIPC_MAX_MEDIA_NAME = 0x10 + TIPC_MAX_USER_MSG_SIZE = 0x101d0 + TIPC_MCAST_BROADCAST = 0x85 + TIPC_MCAST_REPLICAST = 0x86 + TIPC_MEDIUM_IMPORTANCE = 0x1 + TIPC_NODEID_LEN = 0x10 + TIPC_NODELAY = 0x8a + TIPC_NODE_BITS = 0xc + TIPC_NODE_MASK = 0xfff + TIPC_NODE_OFFSET = 0x0 + TIPC_NODE_RECVQ_DEPTH = 0x83 + TIPC_NODE_SIZE = 0xfff + TIPC_NODE_STATE = 0x0 + TIPC_OK = 0x0 + TIPC_PUBLISHED = 0x1 + TIPC_REKEYING_NOW = 0xffffffff + TIPC_RESERVED_TYPES = 0x40 + TIPC_RETDATA = 0x2 + TIPC_SERVICE_ADDR = 0x2 + TIPC_SERVICE_RANGE = 0x1 + TIPC_SOCKET_ADDR = 0x3 + TIPC_SOCK_RECVQ_DEPTH = 0x84 + TIPC_SOCK_RECVQ_USED = 0x89 + TIPC_SRC_DROPPABLE = 0x80 + TIPC_SUBSCR_TIMEOUT = 0x3 + TIPC_SUB_CANCEL = 0x4 + TIPC_SUB_PORTS = 0x1 + TIPC_SUB_SERVICE = 0x2 + TIPC_TOP_SRV = 0x1 + TIPC_WAIT_FOREVER = 0xffffffff + TIPC_WITHDRAWN = 0x2 + TIPC_ZONE_BITS = 0x8 + TIPC_ZONE_CLUSTER_MASK = 0xfffff000 + TIPC_ZONE_MASK = 0xff000000 + TIPC_ZONE_OFFSET = 0x18 + TIPC_ZONE_SCOPE = 0x1 + TIPC_ZONE_SIZE = 0xff + TMPFS_MAGIC = 0x1021994 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_GSO_TCP = 0x100 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = 0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + UDF_SUPER_MAGIC = 0x15013346 + UDP_CORK = 0x1 + UDP_ENCAP = 0x64 + UDP_ENCAP_ESPINUDP = 0x2 + UDP_ENCAP_ESPINUDP_NON_IKE = 0x1 + UDP_ENCAP_GTP0 = 0x4 + UDP_ENCAP_GTP1U = 0x5 + UDP_ENCAP_L2TPINUDP = 0x3 + UDP_GRO = 0x68 + UDP_NO_CHECK6_RX = 0x66 + UDP_NO_CHECK6_TX = 0x65 + UDP_SEGMENT = 0x67 + UDP_V4_FLOW = 0x2 + UDP_V6_FLOW = 0x6 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_LOCAL = 0x1 + VMADDR_FLAG_TO_HOST = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VT0 = 0x0 + WAKE_MAGIC = 0x20 + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WDIOF_ALARMONLY = 0x400 + WDIOF_CARDRESET = 0x20 + WDIOF_EXTERN1 = 0x4 + WDIOF_EXTERN2 = 0x8 + WDIOF_FANFAULT = 0x2 + WDIOF_KEEPALIVEPING = 0x8000 + WDIOF_MAGICCLOSE = 0x100 + WDIOF_OVERHEAT = 0x1 + WDIOF_POWEROVER = 0x40 + WDIOF_POWERUNDER = 0x10 + WDIOF_PRETIMEOUT = 0x200 + WDIOF_SETTIMEOUT = 0x80 + WDIOF_UNKNOWN = -0x1 + WDIOS_DISABLECARD = 0x1 + WDIOS_ENABLECARD = 0x2 + WDIOS_TEMPPANIC = 0x4 + WDIOS_UNKNOWN = -0x1 + WEXITED = 0x4 + WGALLOWEDIP_A_MAX = 0x3 + WGDEVICE_A_MAX = 0x8 + WGPEER_A_MAX = 0xa + WG_CMD_MAX = 0x1 + WG_GENL_NAME = "wireguard" + WG_GENL_VERSION = 0x1 + WG_KEY_LEN = 0x20 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0x1f + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_REPLACE = 0x10 + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_OPTIONS = 0x8 + XDP_OPTIONS_ZEROCOPY = 0x1 + XDP_PACKET_HEADROOM = 0x100 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_PKT_CONTD = 0x1 + XDP_RING_NEED_WAKEUP = 0x1 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TXMD_FLAGS_CHECKSUM = 0x2 + XDP_TXMD_FLAGS_TIMESTAMP = 0x1 + XDP_TX_METADATA = 0x2 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_UMEM_TX_METADATA_LEN = 0x4 + XDP_UMEM_TX_SW_CSUM = 0x2 + XDP_UMEM_UNALIGNED_CHUNK_FLAG = 0x1 + XDP_USE_NEED_WAKEUP = 0x8 + XDP_USE_SG = 0x10 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + ZONEFS_MAGIC = 0x5a4f4653 + _HIDIOCGRAWNAME_LEN = 0x80 + _HIDIOCGRAWPHYS_LEN = 0x40 + _HIDIOCGRAWUNIQ_LEN = 0x40 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EAGAIN = syscall.Errno(0xb) + EBADF = syscall.Errno(0x9) + EBUSY = syscall.Errno(0x10) + ECHILD = syscall.Errno(0xa) + EDOM = syscall.Errno(0x21) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISDIR = syscall.Errno(0x15) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + ENFILE = syscall.Errno(0x17) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOMEM = syscall.Errno(0xc) + ENOSPC = syscall.Errno(0x1c) + ENOTBLK = syscall.Errno(0xf) + ENOTDIR = syscall.Errno(0x14) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EPERM = syscall.Errno(0x1) + EPIPE = syscall.Errno(0x20) + ERANGE = syscall.Errno(0x22) + EROFS = syscall.Errno(0x1e) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ETXTBSY = syscall.Errno(0x1a) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) +) diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/tests/vendor/golang.org/x/sys/unix/zerrors_linux_386.go new file mode 100644 index 000000000..75207613c --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_linux_386.go @@ -0,0 +1,873 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/386/include -m32 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build 386 && linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/386/include -m32 _const.go + +package unix + +import "syscall" + +const ( + B1000000 = 0x1008 + B115200 = 0x1002 + B1152000 = 0x1009 + B1500000 = 0x100a + B2000000 = 0x100b + B230400 = 0x1003 + B2500000 = 0x100c + B3000000 = 0x100d + B3500000 = 0x100e + B4000000 = 0x100f + B460800 = 0x1004 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B921600 = 0x1007 + BLKALIGNOFF = 0x127a + BLKBSZGET = 0x80041270 + BLKBSZSET = 0x40041271 + BLKDISCARD = 0x1277 + BLKDISCARDZEROES = 0x127c + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETDISKSEQ = 0x80081280 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80041272 + BLKIOMIN = 0x1278 + BLKIOOPT = 0x1279 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKROTATIONAL = 0x127e + BLKRRPART = 0x125f + BLKSECDISCARD = 0x127d + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BLKZEROOUT = 0x127f + BOTHER = 0x1000 + BS1 = 0x2000 + BSDLY = 0x2000 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIZE = 0x30 + CSTOPB = 0x40 + ECCGETLAYOUT = 0x81484d11 + ECCGETSTATS = 0x80104d12 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x80088a02 + EPIOCSPARAMS = 0x40088a01 + EPOLL_CLOEXEC = 0x80000 + EXTPROC = 0x10000 + FF1 = 0x8000 + FFDLY = 0x8000 + FICLONE = 0x40049409 + FICLONERANGE = 0x4020940d + FLUSHO = 0x1000 + FP_XSTATE_MAGIC2 = 0x46505845 + FS_IOC_ENABLE_VERITY = 0x40806685 + FS_IOC_GETFLAGS = 0x80046601 + FS_IOC_GET_ENCRYPTION_NONCE = 0x8010661b + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SETFLAGS = 0x40046602 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + F_GETLK = 0xc + F_GETLK64 = 0xc + F_GETOWN = 0x9 + F_RDLCK = 0x0 + F_SETLK = 0xd + F_SETLK64 = 0xd + F_SETLKW = 0xe + F_SETLKW64 = 0xe + F_SETOWN = 0x8 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 + HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 + IN_CLOEXEC = 0x80000 + IN_NONBLOCK = 0x800 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + ISIG = 0x1 + IUCLC = 0x200 + IXOFF = 0x1000 + IXON = 0x400 + MAP_32BIT = 0x40 + MAP_ABOVE4G = 0x80 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MEMERASE = 0x40084d02 + MEMERASE64 = 0x40104d14 + MEMGETBADBLOCK = 0x40084d0b + MEMGETINFO = 0x80204d01 + MEMGETOOBSEL = 0x80c84d0a + MEMGETREGIONCOUNT = 0x80044d07 + MEMISLOCKED = 0x80084d17 + MEMLOCK = 0x40084d05 + MEMREAD = 0xc03c4d1a + MEMREADOOB = 0xc00c4d04 + MEMSETBADBLOCK = 0x40084d0c + MEMUNLOCK = 0x40084d06 + MEMWRITEOOB = 0xc00c4d03 + MTDFILEMODE = 0x4d13 + NFDBITS = 0x20 + NLDLY = 0x100 + NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x8008b705 + NS_GET_NSTYPE = 0xb703 + NS_GET_OWNER_UID = 0xb704 + NS_GET_PARENT = 0xb702 + NS_GET_PID_FROM_PIDNS = 0x8004b706 + NS_GET_PID_IN_PIDNS = 0x8004b708 + NS_GET_TGID_FROM_PIDNS = 0x8004b707 + NS_GET_TGID_IN_PIDNS = 0x8004b709 + NS_GET_USERNS = 0xb701 + OLCUC = 0x2 + ONLCR = 0x4 + OTPERASE = 0x400c4d19 + OTPGETREGIONCOUNT = 0x40044d0e + OTPGETREGIONINFO = 0x400c4d0f + OTPLOCK = 0x800c4d10 + OTPSELECT = 0x80044d0d + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x4000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x8000 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + PARENB = 0x100 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80042407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4004240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc004240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40042406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCBRIDGECHAN = 0x40047435 + PPPIOCCONNECT = 0x4004743a + PPPIOCDETACH = 0x4004743c + PPPIOCDISCONN = 0x7439 + PPPIOCGASYNCMAP = 0x80047458 + PPPIOCGCHAN = 0x80047437 + PPPIOCGDEBUG = 0x80047441 + PPPIOCGFLAGS = 0x8004745a + PPPIOCGIDLE = 0x8008743f + PPPIOCGIDLE32 = 0x8008743f + PPPIOCGIDLE64 = 0x8010743f + PPPIOCGL2TPSTATS = 0x80487436 + PPPIOCGMRU = 0x80047453 + PPPIOCGRASYNCMAP = 0x80047455 + PPPIOCGUNIT = 0x80047456 + PPPIOCGXASYNCMAP = 0x80207450 + PPPIOCSACTIVE = 0x40087446 + PPPIOCSASYNCMAP = 0x40047457 + PPPIOCSCOMPRESS = 0x400c744d + PPPIOCSDEBUG = 0x40047440 + PPPIOCSFLAGS = 0x40047459 + PPPIOCSMAXCID = 0x40047451 + PPPIOCSMRRU = 0x4004743b + PPPIOCSMRU = 0x40047452 + PPPIOCSNPMODE = 0x4008744b + PPPIOCSPASS = 0x40087447 + PPPIOCSRASYNCMAP = 0x40047454 + PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCUNBRIDGECHAN = 0x7434 + PPPIOCXFERUNIT = 0x744e + PR_SET_PTRACER_ANY = 0xffffffff + PTP_CLOCK_GETCAPS = 0x80503d01 + PTP_CLOCK_GETCAPS2 = 0x80503d0a + PTP_ENABLE_PPS = 0x40043d04 + PTP_ENABLE_PPS2 = 0x40043d0d + PTP_EXTTS_REQUEST = 0x40103d02 + PTP_EXTTS_REQUEST2 = 0x40103d0b + PTP_MASK_CLEAR_ALL = 0x3d13 + PTP_MASK_EN_SINGLE = 0x40043d14 + PTP_PEROUT_REQUEST = 0x40383d03 + PTP_PEROUT_REQUEST2 = 0x40383d0c + PTP_PIN_SETFUNC = 0x40603d07 + PTP_PIN_SETFUNC2 = 0x40603d10 + PTP_SYS_OFFSET = 0x43403d05 + PTP_SYS_OFFSET2 = 0x43403d0e + PTRACE_GETFPREGS = 0xe + PTRACE_GETFPXREGS = 0x12 + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_SETFPREGS = 0xf + PTRACE_SETFPXREGS = 0x13 + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SINGLEBLOCK = 0x21 + PTRACE_SYSEMU = 0x1f + PTRACE_SYSEMU_SINGLESTEP = 0x20 + RLIMIT_AS = 0x9 + RLIMIT_MEMLOCK = 0x8 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RNDADDENTROPY = 0x40085203 + RNDADDTOENTCNT = 0x40045201 + RNDCLEARPOOL = 0x5206 + RNDGETENTCNT = 0x80045200 + RNDGETPOOL = 0x80085202 + RNDRESEEDCRNG = 0x5207 + RNDZAPENTCNT = 0x5204 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8004700d + RTC_EPOCH_SET = 0x4004700e + RTC_IRQP_READ = 0x8004700b + RTC_IRQP_SET = 0x4004700c + RTC_PARAM_GET = 0x40187013 + RTC_PARAM_SET = 0x40187014 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x801c7011 + RTC_PLL_SET = 0x401c7012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x40082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x40082104 + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SIOCATMARK = 0x8905 + SIOCGPGRP = 0x8904 + SIOCGSTAMPNS_NEW = 0x80108907 + SIOCGSTAMP_NEW = 0x80108906 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCSPGRP = 0x8902 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x2 + SOCK_NONBLOCK = 0x800 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0x1 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUF_LOCK = 0x48 + SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 + SO_NOFCS = 0x2b + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSPIDFD = 0x4c + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d + SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVMARK = 0x4b + SO_RCVTIMEO = 0x14 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x14 + SO_RESERVE_MEM = 0x49 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x15 + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TFD_CLOEXEC = 0x80000 + TFD_NONBLOCK = 0x800 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x80285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x100 + TUNATTACHFILTER = 0x400854d5 + TUNDETACHFILTER = 0x400854d6 + TUNGETDEVNETNS = 0x54e3 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x800854db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETCARRIER = 0x400454e2 + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRPEB = 0x40046f04 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCSPEB = 0x40046f05 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VMIN = 0x6 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WORDSIZE = 0x20 + X86_FXSR_MAGIC = 0x0 + XCASE = 0x4 + XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x80804804 + _HIDIOCGRAWPHYS = 0x80404805 + _HIDIOCGRAWUNIQ = 0x80404808 +) + +// Errors +const ( + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + ECANCELED = syscall.Errno(0x7d) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EISCONN = syscall.Errno(0x6a) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTCONN = syscall.Errno(0x6b) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTUNIQ = syscall.Errno(0x4c) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPFNOSUPPORT = syscall.Errno(0x60) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGIO = syscall.Signal(0x1d) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/tests/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go new file mode 100644 index 000000000..c68acda53 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go @@ -0,0 +1,873 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/amd64/include -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/amd64/include -m64 _const.go + +package unix + +import "syscall" + +const ( + B1000000 = 0x1008 + B115200 = 0x1002 + B1152000 = 0x1009 + B1500000 = 0x100a + B2000000 = 0x100b + B230400 = 0x1003 + B2500000 = 0x100c + B3000000 = 0x100d + B3500000 = 0x100e + B4000000 = 0x100f + B460800 = 0x1004 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B921600 = 0x1007 + BLKALIGNOFF = 0x127a + BLKBSZGET = 0x80081270 + BLKBSZSET = 0x40081271 + BLKDISCARD = 0x1277 + BLKDISCARDZEROES = 0x127c + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETDISKSEQ = 0x80081280 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80081272 + BLKIOMIN = 0x1278 + BLKIOOPT = 0x1279 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKROTATIONAL = 0x127e + BLKRRPART = 0x125f + BLKSECDISCARD = 0x127d + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BLKZEROOUT = 0x127f + BOTHER = 0x1000 + BS1 = 0x2000 + BSDLY = 0x2000 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIZE = 0x30 + CSTOPB = 0x40 + ECCGETLAYOUT = 0x81484d11 + ECCGETSTATS = 0x80104d12 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x80088a02 + EPIOCSPARAMS = 0x40088a01 + EPOLL_CLOEXEC = 0x80000 + EXTPROC = 0x10000 + FF1 = 0x8000 + FFDLY = 0x8000 + FICLONE = 0x40049409 + FICLONERANGE = 0x4020940d + FLUSHO = 0x1000 + FP_XSTATE_MAGIC2 = 0x46505845 + FS_IOC_ENABLE_VERITY = 0x40806685 + FS_IOC_GETFLAGS = 0x80086601 + FS_IOC_GET_ENCRYPTION_NONCE = 0x8010661b + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SETFLAGS = 0x40086602 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + F_GETLK = 0x5 + F_GETLK64 = 0x5 + F_GETOWN = 0x9 + F_RDLCK = 0x0 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x8 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 + HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 + IN_CLOEXEC = 0x80000 + IN_NONBLOCK = 0x800 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + ISIG = 0x1 + IUCLC = 0x200 + IXOFF = 0x1000 + IXON = 0x400 + MAP_32BIT = 0x40 + MAP_ABOVE4G = 0x80 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MEMERASE = 0x40084d02 + MEMERASE64 = 0x40104d14 + MEMGETBADBLOCK = 0x40084d0b + MEMGETINFO = 0x80204d01 + MEMGETOOBSEL = 0x80c84d0a + MEMGETREGIONCOUNT = 0x80044d07 + MEMISLOCKED = 0x80084d17 + MEMLOCK = 0x40084d05 + MEMREAD = 0xc0404d1a + MEMREADOOB = 0xc0104d04 + MEMSETBADBLOCK = 0x40084d0c + MEMUNLOCK = 0x40084d06 + MEMWRITEOOB = 0xc0104d03 + MTDFILEMODE = 0x4d13 + NFDBITS = 0x40 + NLDLY = 0x100 + NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x8008b705 + NS_GET_NSTYPE = 0xb703 + NS_GET_OWNER_UID = 0xb704 + NS_GET_PARENT = 0xb702 + NS_GET_PID_FROM_PIDNS = 0x8004b706 + NS_GET_PID_IN_PIDNS = 0x8004b708 + NS_GET_TGID_FROM_PIDNS = 0x8004b707 + NS_GET_TGID_IN_PIDNS = 0x8004b709 + NS_GET_USERNS = 0xb701 + OLCUC = 0x2 + ONLCR = 0x4 + OTPERASE = 0x400c4d19 + OTPGETREGIONCOUNT = 0x40044d0e + OTPGETREGIONINFO = 0x400c4d0f + OTPLOCK = 0x800c4d10 + OTPSELECT = 0x80044d0d + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x4000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + PARENB = 0x100 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCBRIDGECHAN = 0x40047435 + PPPIOCCONNECT = 0x4004743a + PPPIOCDETACH = 0x4004743c + PPPIOCDISCONN = 0x7439 + PPPIOCGASYNCMAP = 0x80047458 + PPPIOCGCHAN = 0x80047437 + PPPIOCGDEBUG = 0x80047441 + PPPIOCGFLAGS = 0x8004745a + PPPIOCGIDLE = 0x8010743f + PPPIOCGIDLE32 = 0x8008743f + PPPIOCGIDLE64 = 0x8010743f + PPPIOCGL2TPSTATS = 0x80487436 + PPPIOCGMRU = 0x80047453 + PPPIOCGRASYNCMAP = 0x80047455 + PPPIOCGUNIT = 0x80047456 + PPPIOCGXASYNCMAP = 0x80207450 + PPPIOCSACTIVE = 0x40107446 + PPPIOCSASYNCMAP = 0x40047457 + PPPIOCSCOMPRESS = 0x4010744d + PPPIOCSDEBUG = 0x40047440 + PPPIOCSFLAGS = 0x40047459 + PPPIOCSMAXCID = 0x40047451 + PPPIOCSMRRU = 0x4004743b + PPPIOCSMRU = 0x40047452 + PPPIOCSNPMODE = 0x4008744b + PPPIOCSPASS = 0x40107447 + PPPIOCSRASYNCMAP = 0x40047454 + PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCUNBRIDGECHAN = 0x7434 + PPPIOCXFERUNIT = 0x744e + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x80503d01 + PTP_CLOCK_GETCAPS2 = 0x80503d0a + PTP_ENABLE_PPS = 0x40043d04 + PTP_ENABLE_PPS2 = 0x40043d0d + PTP_EXTTS_REQUEST = 0x40103d02 + PTP_EXTTS_REQUEST2 = 0x40103d0b + PTP_MASK_CLEAR_ALL = 0x3d13 + PTP_MASK_EN_SINGLE = 0x40043d14 + PTP_PEROUT_REQUEST = 0x40383d03 + PTP_PEROUT_REQUEST2 = 0x40383d0c + PTP_PIN_SETFUNC = 0x40603d07 + PTP_PIN_SETFUNC2 = 0x40603d10 + PTP_SYS_OFFSET = 0x43403d05 + PTP_SYS_OFFSET2 = 0x43403d0e + PTRACE_ARCH_PRCTL = 0x1e + PTRACE_GETFPREGS = 0xe + PTRACE_GETFPXREGS = 0x12 + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_SETFPREGS = 0xf + PTRACE_SETFPXREGS = 0x13 + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SINGLEBLOCK = 0x21 + PTRACE_SYSEMU = 0x1f + PTRACE_SYSEMU_SINGLESTEP = 0x20 + RLIMIT_AS = 0x9 + RLIMIT_MEMLOCK = 0x8 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RNDADDENTROPY = 0x40085203 + RNDADDTOENTCNT = 0x40045201 + RNDCLEARPOOL = 0x5206 + RNDGETENTCNT = 0x80045200 + RNDGETPOOL = 0x80085202 + RNDRESEEDCRNG = 0x5207 + RNDZAPENTCNT = 0x5204 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8008700d + RTC_EPOCH_SET = 0x4008700e + RTC_IRQP_READ = 0x8008700b + RTC_IRQP_SET = 0x4008700c + RTC_PARAM_GET = 0x40187013 + RTC_PARAM_SET = 0x40187014 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x80207011 + RTC_PLL_SET = 0x40207012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x40082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x40082104 + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SIOCATMARK = 0x8905 + SIOCGPGRP = 0x8904 + SIOCGSTAMPNS_NEW = 0x80108907 + SIOCGSTAMP_NEW = 0x80108906 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCSPGRP = 0x8902 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x2 + SOCK_NONBLOCK = 0x800 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0x1 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUF_LOCK = 0x48 + SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 + SO_NOFCS = 0x2b + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSPIDFD = 0x4c + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d + SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVMARK = 0x4b + SO_RCVTIMEO = 0x14 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x14 + SO_RESERVE_MEM = 0x49 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x15 + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TFD_CLOEXEC = 0x80000 + TFD_NONBLOCK = 0x800 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x80285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x100 + TUNATTACHFILTER = 0x401054d5 + TUNDETACHFILTER = 0x401054d6 + TUNGETDEVNETNS = 0x54e3 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x801054db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETCARRIER = 0x400454e2 + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRPEB = 0x40046f04 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCSPEB = 0x40046f05 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VMIN = 0x6 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WORDSIZE = 0x40 + XCASE = 0x4 + XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x80804804 + _HIDIOCGRAWPHYS = 0x80404805 + _HIDIOCGRAWUNIQ = 0x80404808 +) + +// Errors +const ( + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + ECANCELED = syscall.Errno(0x7d) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EISCONN = syscall.Errno(0x6a) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTCONN = syscall.Errno(0x6b) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTUNIQ = syscall.Errno(0x4c) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPFNOSUPPORT = syscall.Errno(0x60) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGIO = syscall.Signal(0x1d) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/tests/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go new file mode 100644 index 000000000..a8c607ab8 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go @@ -0,0 +1,878 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/arm/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm && linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/arm/include _const.go + +package unix + +import "syscall" + +const ( + B1000000 = 0x1008 + B115200 = 0x1002 + B1152000 = 0x1009 + B1500000 = 0x100a + B2000000 = 0x100b + B230400 = 0x1003 + B2500000 = 0x100c + B3000000 = 0x100d + B3500000 = 0x100e + B4000000 = 0x100f + B460800 = 0x1004 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B921600 = 0x1007 + BLKALIGNOFF = 0x127a + BLKBSZGET = 0x80041270 + BLKBSZSET = 0x40041271 + BLKDISCARD = 0x1277 + BLKDISCARDZEROES = 0x127c + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETDISKSEQ = 0x80081280 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80041272 + BLKIOMIN = 0x1278 + BLKIOOPT = 0x1279 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKROTATIONAL = 0x127e + BLKRRPART = 0x125f + BLKSECDISCARD = 0x127d + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BLKZEROOUT = 0x127f + BOTHER = 0x1000 + BS1 = 0x2000 + BSDLY = 0x2000 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIZE = 0x30 + CSTOPB = 0x40 + ECCGETLAYOUT = 0x81484d11 + ECCGETSTATS = 0x80104d12 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x80088a02 + EPIOCSPARAMS = 0x40088a01 + EPOLL_CLOEXEC = 0x80000 + EXTPROC = 0x10000 + FF1 = 0x8000 + FFDLY = 0x8000 + FICLONE = 0x40049409 + FICLONERANGE = 0x4020940d + FLUSHO = 0x1000 + FS_IOC_ENABLE_VERITY = 0x40806685 + FS_IOC_GETFLAGS = 0x80046601 + FS_IOC_GET_ENCRYPTION_NONCE = 0x8010661b + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SETFLAGS = 0x40046602 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + F_GETLK = 0xc + F_GETLK64 = 0xc + F_GETOWN = 0x9 + F_RDLCK = 0x0 + F_SETLK = 0xd + F_SETLK64 = 0xd + F_SETLKW = 0xe + F_SETLKW64 = 0xe + F_SETOWN = 0x8 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 + HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 + IN_CLOEXEC = 0x80000 + IN_NONBLOCK = 0x800 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + ISIG = 0x1 + IUCLC = 0x200 + IXOFF = 0x1000 + IXON = 0x400 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MEMERASE = 0x40084d02 + MEMERASE64 = 0x40104d14 + MEMGETBADBLOCK = 0x40084d0b + MEMGETINFO = 0x80204d01 + MEMGETOOBSEL = 0x80c84d0a + MEMGETREGIONCOUNT = 0x80044d07 + MEMISLOCKED = 0x80084d17 + MEMLOCK = 0x40084d05 + MEMREAD = 0xc0404d1a + MEMREADOOB = 0xc00c4d04 + MEMSETBADBLOCK = 0x40084d0c + MEMUNLOCK = 0x40084d06 + MEMWRITEOOB = 0xc00c4d03 + MTDFILEMODE = 0x4d13 + NFDBITS = 0x20 + NLDLY = 0x100 + NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x8008b705 + NS_GET_NSTYPE = 0xb703 + NS_GET_OWNER_UID = 0xb704 + NS_GET_PARENT = 0xb702 + NS_GET_PID_FROM_PIDNS = 0x8004b706 + NS_GET_PID_IN_PIDNS = 0x8004b708 + NS_GET_TGID_FROM_PIDNS = 0x8004b707 + NS_GET_TGID_IN_PIDNS = 0x8004b709 + NS_GET_USERNS = 0xb701 + OLCUC = 0x2 + ONLCR = 0x4 + OTPERASE = 0x400c4d19 + OTPGETREGIONCOUNT = 0x40044d0e + OTPGETREGIONINFO = 0x400c4d0f + OTPLOCK = 0x800c4d10 + OTPSELECT = 0x80044d0d + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x4000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x20000 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x8000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x404000 + O_TRUNC = 0x200 + PARENB = 0x100 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80042407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4004240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc004240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40042406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCBRIDGECHAN = 0x40047435 + PPPIOCCONNECT = 0x4004743a + PPPIOCDETACH = 0x4004743c + PPPIOCDISCONN = 0x7439 + PPPIOCGASYNCMAP = 0x80047458 + PPPIOCGCHAN = 0x80047437 + PPPIOCGDEBUG = 0x80047441 + PPPIOCGFLAGS = 0x8004745a + PPPIOCGIDLE = 0x8008743f + PPPIOCGIDLE32 = 0x8008743f + PPPIOCGIDLE64 = 0x8010743f + PPPIOCGL2TPSTATS = 0x80487436 + PPPIOCGMRU = 0x80047453 + PPPIOCGRASYNCMAP = 0x80047455 + PPPIOCGUNIT = 0x80047456 + PPPIOCGXASYNCMAP = 0x80207450 + PPPIOCSACTIVE = 0x40087446 + PPPIOCSASYNCMAP = 0x40047457 + PPPIOCSCOMPRESS = 0x400c744d + PPPIOCSDEBUG = 0x40047440 + PPPIOCSFLAGS = 0x40047459 + PPPIOCSMAXCID = 0x40047451 + PPPIOCSMRRU = 0x4004743b + PPPIOCSMRU = 0x40047452 + PPPIOCSNPMODE = 0x4008744b + PPPIOCSPASS = 0x40087447 + PPPIOCSRASYNCMAP = 0x40047454 + PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCUNBRIDGECHAN = 0x7434 + PPPIOCXFERUNIT = 0x744e + PR_SET_PTRACER_ANY = 0xffffffff + PTP_CLOCK_GETCAPS = 0x80503d01 + PTP_CLOCK_GETCAPS2 = 0x80503d0a + PTP_ENABLE_PPS = 0x40043d04 + PTP_ENABLE_PPS2 = 0x40043d0d + PTP_EXTTS_REQUEST = 0x40103d02 + PTP_EXTTS_REQUEST2 = 0x40103d0b + PTP_MASK_CLEAR_ALL = 0x3d13 + PTP_MASK_EN_SINGLE = 0x40043d14 + PTP_PEROUT_REQUEST = 0x40383d03 + PTP_PEROUT_REQUEST2 = 0x40383d0c + PTP_PIN_SETFUNC = 0x40603d07 + PTP_PIN_SETFUNC2 = 0x40603d10 + PTP_SYS_OFFSET = 0x43403d05 + PTP_SYS_OFFSET2 = 0x43403d0e + PTRACE_GETCRUNCHREGS = 0x19 + PTRACE_GETFDPIC = 0x1f + PTRACE_GETFDPIC_EXEC = 0x0 + PTRACE_GETFDPIC_INTERP = 0x1 + PTRACE_GETFPREGS = 0xe + PTRACE_GETHBPREGS = 0x1d + PTRACE_GETVFPREGS = 0x1b + PTRACE_GETWMMXREGS = 0x12 + PTRACE_GET_THREAD_AREA = 0x16 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_SETCRUNCHREGS = 0x1a + PTRACE_SETFPREGS = 0xf + PTRACE_SETHBPREGS = 0x1e + PTRACE_SETVFPREGS = 0x1c + PTRACE_SETWMMXREGS = 0x13 + PTRACE_SET_SYSCALL = 0x17 + PT_DATA_ADDR = 0x10004 + PT_TEXT_ADDR = 0x10000 + PT_TEXT_END_ADDR = 0x10008 + RLIMIT_AS = 0x9 + RLIMIT_MEMLOCK = 0x8 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RNDADDENTROPY = 0x40085203 + RNDADDTOENTCNT = 0x40045201 + RNDCLEARPOOL = 0x5206 + RNDGETENTCNT = 0x80045200 + RNDGETPOOL = 0x80085202 + RNDRESEEDCRNG = 0x5207 + RNDZAPENTCNT = 0x5204 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8004700d + RTC_EPOCH_SET = 0x4004700e + RTC_IRQP_READ = 0x8004700b + RTC_IRQP_SET = 0x4004700c + RTC_PARAM_GET = 0x40187013 + RTC_PARAM_SET = 0x40187014 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x801c7011 + RTC_PLL_SET = 0x401c7012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x40082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x40082104 + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SIOCATMARK = 0x8905 + SIOCGPGRP = 0x8904 + SIOCGSTAMPNS_NEW = 0x80108907 + SIOCGSTAMP_NEW = 0x80108906 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCSPGRP = 0x8902 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x2 + SOCK_NONBLOCK = 0x800 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0x1 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUF_LOCK = 0x48 + SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 + SO_NOFCS = 0x2b + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSPIDFD = 0x4c + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d + SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVMARK = 0x4b + SO_RCVTIMEO = 0x14 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x14 + SO_RESERVE_MEM = 0x49 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x15 + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TFD_CLOEXEC = 0x80000 + TFD_NONBLOCK = 0x800 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x80285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x100 + TUNATTACHFILTER = 0x400854d5 + TUNDETACHFILTER = 0x400854d6 + TUNGETDEVNETNS = 0x54e3 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x800854db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETCARRIER = 0x400454e2 + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRPEB = 0x40046f04 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCSPEB = 0x40046f05 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VMIN = 0x6 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WORDSIZE = 0x20 + XCASE = 0x4 + XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x80804804 + _HIDIOCGRAWPHYS = 0x80404805 + _HIDIOCGRAWUNIQ = 0x80404808 +) + +// Errors +const ( + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + ECANCELED = syscall.Errno(0x7d) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EISCONN = syscall.Errno(0x6a) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTCONN = syscall.Errno(0x6b) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTUNIQ = syscall.Errno(0x4c) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPFNOSUPPORT = syscall.Errno(0x60) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGIO = syscall.Signal(0x1d) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/tests/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go new file mode 100644 index 000000000..18563dd8d --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go @@ -0,0 +1,875 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/arm64/include -fsigned-char +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm64 && linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/arm64/include -fsigned-char _const.go + +package unix + +import "syscall" + +const ( + B1000000 = 0x1008 + B115200 = 0x1002 + B1152000 = 0x1009 + B1500000 = 0x100a + B2000000 = 0x100b + B230400 = 0x1003 + B2500000 = 0x100c + B3000000 = 0x100d + B3500000 = 0x100e + B4000000 = 0x100f + B460800 = 0x1004 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B921600 = 0x1007 + BLKALIGNOFF = 0x127a + BLKBSZGET = 0x80081270 + BLKBSZSET = 0x40081271 + BLKDISCARD = 0x1277 + BLKDISCARDZEROES = 0x127c + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETDISKSEQ = 0x80081280 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80081272 + BLKIOMIN = 0x1278 + BLKIOOPT = 0x1279 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKROTATIONAL = 0x127e + BLKRRPART = 0x125f + BLKSECDISCARD = 0x127d + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BLKZEROOUT = 0x127f + BOTHER = 0x1000 + BS1 = 0x2000 + BSDLY = 0x2000 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIZE = 0x30 + CSTOPB = 0x40 + ECCGETLAYOUT = 0x81484d11 + ECCGETSTATS = 0x80104d12 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x80088a02 + EPIOCSPARAMS = 0x40088a01 + EPOLL_CLOEXEC = 0x80000 + ESR_MAGIC = 0x45535201 + EXTPROC = 0x10000 + EXTRA_MAGIC = 0x45585401 + FF1 = 0x8000 + FFDLY = 0x8000 + FICLONE = 0x40049409 + FICLONERANGE = 0x4020940d + FLUSHO = 0x1000 + FPMR_MAGIC = 0x46504d52 + FPSIMD_MAGIC = 0x46508001 + FS_IOC_ENABLE_VERITY = 0x40806685 + FS_IOC_GETFLAGS = 0x80086601 + FS_IOC_GET_ENCRYPTION_NONCE = 0x8010661b + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SETFLAGS = 0x40086602 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + F_GETLK = 0x5 + F_GETLK64 = 0x5 + F_GETOWN = 0x9 + F_RDLCK = 0x0 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x8 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GCS_MAGIC = 0x47435300 + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 + HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 + IN_CLOEXEC = 0x80000 + IN_NONBLOCK = 0x800 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + ISIG = 0x1 + IUCLC = 0x200 + IXOFF = 0x1000 + IXON = 0x400 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MEMERASE = 0x40084d02 + MEMERASE64 = 0x40104d14 + MEMGETBADBLOCK = 0x40084d0b + MEMGETINFO = 0x80204d01 + MEMGETOOBSEL = 0x80c84d0a + MEMGETREGIONCOUNT = 0x80044d07 + MEMISLOCKED = 0x80084d17 + MEMLOCK = 0x40084d05 + MEMREAD = 0xc0404d1a + MEMREADOOB = 0xc0104d04 + MEMSETBADBLOCK = 0x40084d0c + MEMUNLOCK = 0x40084d06 + MEMWRITEOOB = 0xc0104d03 + MTDFILEMODE = 0x4d13 + NFDBITS = 0x40 + NLDLY = 0x100 + NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x8008b705 + NS_GET_NSTYPE = 0xb703 + NS_GET_OWNER_UID = 0xb704 + NS_GET_PARENT = 0xb702 + NS_GET_PID_FROM_PIDNS = 0x8004b706 + NS_GET_PID_IN_PIDNS = 0x8004b708 + NS_GET_TGID_FROM_PIDNS = 0x8004b707 + NS_GET_TGID_IN_PIDNS = 0x8004b709 + NS_GET_USERNS = 0xb701 + OLCUC = 0x2 + ONLCR = 0x4 + OTPERASE = 0x400c4d19 + OTPGETREGIONCOUNT = 0x40044d0e + OTPGETREGIONINFO = 0x400c4d0f + OTPLOCK = 0x800c4d10 + OTPSELECT = 0x80044d0d + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x4000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x8000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x404000 + O_TRUNC = 0x200 + PARENB = 0x100 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + POE_MAGIC = 0x504f4530 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCBRIDGECHAN = 0x40047435 + PPPIOCCONNECT = 0x4004743a + PPPIOCDETACH = 0x4004743c + PPPIOCDISCONN = 0x7439 + PPPIOCGASYNCMAP = 0x80047458 + PPPIOCGCHAN = 0x80047437 + PPPIOCGDEBUG = 0x80047441 + PPPIOCGFLAGS = 0x8004745a + PPPIOCGIDLE = 0x8010743f + PPPIOCGIDLE32 = 0x8008743f + PPPIOCGIDLE64 = 0x8010743f + PPPIOCGL2TPSTATS = 0x80487436 + PPPIOCGMRU = 0x80047453 + PPPIOCGRASYNCMAP = 0x80047455 + PPPIOCGUNIT = 0x80047456 + PPPIOCGXASYNCMAP = 0x80207450 + PPPIOCSACTIVE = 0x40107446 + PPPIOCSASYNCMAP = 0x40047457 + PPPIOCSCOMPRESS = 0x4010744d + PPPIOCSDEBUG = 0x40047440 + PPPIOCSFLAGS = 0x40047459 + PPPIOCSMAXCID = 0x40047451 + PPPIOCSMRRU = 0x4004743b + PPPIOCSMRU = 0x40047452 + PPPIOCSNPMODE = 0x4008744b + PPPIOCSPASS = 0x40107447 + PPPIOCSRASYNCMAP = 0x40047454 + PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCUNBRIDGECHAN = 0x7434 + PPPIOCXFERUNIT = 0x744e + PROT_BTI = 0x10 + PROT_MTE = 0x20 + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x80503d01 + PTP_CLOCK_GETCAPS2 = 0x80503d0a + PTP_ENABLE_PPS = 0x40043d04 + PTP_ENABLE_PPS2 = 0x40043d0d + PTP_EXTTS_REQUEST = 0x40103d02 + PTP_EXTTS_REQUEST2 = 0x40103d0b + PTP_MASK_CLEAR_ALL = 0x3d13 + PTP_MASK_EN_SINGLE = 0x40043d14 + PTP_PEROUT_REQUEST = 0x40383d03 + PTP_PEROUT_REQUEST2 = 0x40383d0c + PTP_PIN_SETFUNC = 0x40603d07 + PTP_PIN_SETFUNC2 = 0x40603d10 + PTP_SYS_OFFSET = 0x43403d05 + PTP_SYS_OFFSET2 = 0x43403d0e + PTRACE_PEEKMTETAGS = 0x21 + PTRACE_POKEMTETAGS = 0x22 + PTRACE_SYSEMU = 0x1f + PTRACE_SYSEMU_SINGLESTEP = 0x20 + RLIMIT_AS = 0x9 + RLIMIT_MEMLOCK = 0x8 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RNDADDENTROPY = 0x40085203 + RNDADDTOENTCNT = 0x40045201 + RNDCLEARPOOL = 0x5206 + RNDGETENTCNT = 0x80045200 + RNDGETPOOL = 0x80085202 + RNDRESEEDCRNG = 0x5207 + RNDZAPENTCNT = 0x5204 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8008700d + RTC_EPOCH_SET = 0x4008700e + RTC_IRQP_READ = 0x8008700b + RTC_IRQP_SET = 0x4008700c + RTC_PARAM_GET = 0x40187013 + RTC_PARAM_SET = 0x40187014 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x80207011 + RTC_PLL_SET = 0x40207012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x40082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x40082104 + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SIOCATMARK = 0x8905 + SIOCGPGRP = 0x8904 + SIOCGSTAMPNS_NEW = 0x80108907 + SIOCGSTAMP_NEW = 0x80108906 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCSPGRP = 0x8902 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x2 + SOCK_NONBLOCK = 0x800 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0x1 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUF_LOCK = 0x48 + SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 + SO_NOFCS = 0x2b + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSPIDFD = 0x4c + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d + SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVMARK = 0x4b + SO_RCVTIMEO = 0x14 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x14 + SO_RESERVE_MEM = 0x49 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x15 + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SVE_MAGIC = 0x53564501 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TFD_CLOEXEC = 0x80000 + TFD_NONBLOCK = 0x800 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x80285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x100 + TPIDR2_MAGIC = 0x54504902 + TUNATTACHFILTER = 0x401054d5 + TUNDETACHFILTER = 0x401054d6 + TUNGETDEVNETNS = 0x54e3 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x801054db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETCARRIER = 0x400454e2 + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRPEB = 0x40046f04 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCSPEB = 0x40046f05 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VMIN = 0x6 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WORDSIZE = 0x40 + XCASE = 0x4 + XTABS = 0x1800 + ZA_MAGIC = 0x54366345 + ZT_MAGIC = 0x5a544e01 + _HIDIOCGRAWNAME = 0x80804804 + _HIDIOCGRAWPHYS = 0x80404805 + _HIDIOCGRAWUNIQ = 0x80404808 +) + +// Errors +const ( + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + ECANCELED = syscall.Errno(0x7d) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EISCONN = syscall.Errno(0x6a) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTCONN = syscall.Errno(0x6b) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTUNIQ = syscall.Errno(0x4c) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPFNOSUPPORT = syscall.Errno(0x60) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGIO = syscall.Signal(0x1d) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go b/tests/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go new file mode 100644 index 000000000..22912cdaa --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go @@ -0,0 +1,865 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/loong64/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build loong64 && linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/loong64/include _const.go + +package unix + +import "syscall" + +const ( + B1000000 = 0x1008 + B115200 = 0x1002 + B1152000 = 0x1009 + B1500000 = 0x100a + B2000000 = 0x100b + B230400 = 0x1003 + B2500000 = 0x100c + B3000000 = 0x100d + B3500000 = 0x100e + B4000000 = 0x100f + B460800 = 0x1004 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B921600 = 0x1007 + BLKALIGNOFF = 0x127a + BLKBSZGET = 0x80081270 + BLKBSZSET = 0x40081271 + BLKDISCARD = 0x1277 + BLKDISCARDZEROES = 0x127c + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETDISKSEQ = 0x80081280 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80081272 + BLKIOMIN = 0x1278 + BLKIOOPT = 0x1279 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKROTATIONAL = 0x127e + BLKRRPART = 0x125f + BLKSECDISCARD = 0x127d + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BLKZEROOUT = 0x127f + BOTHER = 0x1000 + BS1 = 0x2000 + BSDLY = 0x2000 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIZE = 0x30 + CSTOPB = 0x40 + ECCGETLAYOUT = 0x81484d11 + ECCGETSTATS = 0x80104d12 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x80088a02 + EPIOCSPARAMS = 0x40088a01 + EPOLL_CLOEXEC = 0x80000 + EXTPROC = 0x10000 + FF1 = 0x8000 + FFDLY = 0x8000 + FICLONE = 0x40049409 + FICLONERANGE = 0x4020940d + FLUSHO = 0x1000 + FPU_CTX_MAGIC = 0x46505501 + FS_IOC_ENABLE_VERITY = 0x40806685 + FS_IOC_GETFLAGS = 0x80086601 + FS_IOC_GET_ENCRYPTION_NONCE = 0x8010661b + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SETFLAGS = 0x40086602 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + F_GETLK = 0x5 + F_GETLK64 = 0x5 + F_GETOWN = 0x9 + F_RDLCK = 0x0 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x8 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 + HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 + IN_CLOEXEC = 0x80000 + IN_NONBLOCK = 0x800 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + ISIG = 0x1 + IUCLC = 0x200 + IXOFF = 0x1000 + IXON = 0x400 + LASX_CTX_MAGIC = 0x41535801 + LBT_CTX_MAGIC = 0x42540001 + LSX_CTX_MAGIC = 0x53580001 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MEMERASE = 0x40084d02 + MEMERASE64 = 0x40104d14 + MEMGETBADBLOCK = 0x40084d0b + MEMGETINFO = 0x80204d01 + MEMGETOOBSEL = 0x80c84d0a + MEMGETREGIONCOUNT = 0x80044d07 + MEMISLOCKED = 0x80084d17 + MEMLOCK = 0x40084d05 + MEMREAD = 0xc0404d1a + MEMREADOOB = 0xc0104d04 + MEMSETBADBLOCK = 0x40084d0c + MEMUNLOCK = 0x40084d06 + MEMWRITEOOB = 0xc0104d03 + MTDFILEMODE = 0x4d13 + NFDBITS = 0x40 + NLDLY = 0x100 + NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x8008b705 + NS_GET_NSTYPE = 0xb703 + NS_GET_OWNER_UID = 0xb704 + NS_GET_PARENT = 0xb702 + NS_GET_PID_FROM_PIDNS = 0x8004b706 + NS_GET_PID_IN_PIDNS = 0x8004b708 + NS_GET_TGID_FROM_PIDNS = 0x8004b707 + NS_GET_TGID_IN_PIDNS = 0x8004b709 + NS_GET_USERNS = 0xb701 + OLCUC = 0x2 + ONLCR = 0x4 + OTPERASE = 0x400c4d19 + OTPGETREGIONCOUNT = 0x40044d0e + OTPGETREGIONINFO = 0x400c4d0f + OTPLOCK = 0x800c4d10 + OTPSELECT = 0x80044d0d + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x4000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + PARENB = 0x100 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCBRIDGECHAN = 0x40047435 + PPPIOCCONNECT = 0x4004743a + PPPIOCDETACH = 0x4004743c + PPPIOCDISCONN = 0x7439 + PPPIOCGASYNCMAP = 0x80047458 + PPPIOCGCHAN = 0x80047437 + PPPIOCGDEBUG = 0x80047441 + PPPIOCGFLAGS = 0x8004745a + PPPIOCGIDLE = 0x8010743f + PPPIOCGIDLE32 = 0x8008743f + PPPIOCGIDLE64 = 0x8010743f + PPPIOCGL2TPSTATS = 0x80487436 + PPPIOCGMRU = 0x80047453 + PPPIOCGRASYNCMAP = 0x80047455 + PPPIOCGUNIT = 0x80047456 + PPPIOCGXASYNCMAP = 0x80207450 + PPPIOCSACTIVE = 0x40107446 + PPPIOCSASYNCMAP = 0x40047457 + PPPIOCSCOMPRESS = 0x4010744d + PPPIOCSDEBUG = 0x40047440 + PPPIOCSFLAGS = 0x40047459 + PPPIOCSMAXCID = 0x40047451 + PPPIOCSMRRU = 0x4004743b + PPPIOCSMRU = 0x40047452 + PPPIOCSNPMODE = 0x4008744b + PPPIOCSPASS = 0x40107447 + PPPIOCSRASYNCMAP = 0x40047454 + PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCUNBRIDGECHAN = 0x7434 + PPPIOCXFERUNIT = 0x744e + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x80503d01 + PTP_CLOCK_GETCAPS2 = 0x80503d0a + PTP_ENABLE_PPS = 0x40043d04 + PTP_ENABLE_PPS2 = 0x40043d0d + PTP_EXTTS_REQUEST = 0x40103d02 + PTP_EXTTS_REQUEST2 = 0x40103d0b + PTP_MASK_CLEAR_ALL = 0x3d13 + PTP_MASK_EN_SINGLE = 0x40043d14 + PTP_PEROUT_REQUEST = 0x40383d03 + PTP_PEROUT_REQUEST2 = 0x40383d0c + PTP_PIN_SETFUNC = 0x40603d07 + PTP_PIN_SETFUNC2 = 0x40603d10 + PTP_SYS_OFFSET = 0x43403d05 + PTP_SYS_OFFSET2 = 0x43403d0e + PTRACE_SYSEMU = 0x1f + PTRACE_SYSEMU_SINGLESTEP = 0x20 + RLIMIT_AS = 0x9 + RLIMIT_MEMLOCK = 0x8 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RNDADDENTROPY = 0x40085203 + RNDADDTOENTCNT = 0x40045201 + RNDCLEARPOOL = 0x5206 + RNDGETENTCNT = 0x80045200 + RNDGETPOOL = 0x80085202 + RNDRESEEDCRNG = 0x5207 + RNDZAPENTCNT = 0x5204 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8008700d + RTC_EPOCH_SET = 0x4008700e + RTC_IRQP_READ = 0x8008700b + RTC_IRQP_SET = 0x4008700c + RTC_PARAM_GET = 0x40187013 + RTC_PARAM_SET = 0x40187014 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x80207011 + RTC_PLL_SET = 0x40207012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x40082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x40082104 + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SIOCATMARK = 0x8905 + SIOCGPGRP = 0x8904 + SIOCGSTAMPNS_NEW = 0x80108907 + SIOCGSTAMP_NEW = 0x80108906 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCSPGRP = 0x8902 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x2 + SOCK_NONBLOCK = 0x800 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0x1 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUF_LOCK = 0x48 + SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 + SO_NOFCS = 0x2b + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSPIDFD = 0x4c + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d + SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVMARK = 0x4b + SO_RCVTIMEO = 0x14 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x14 + SO_RESERVE_MEM = 0x49 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x15 + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TFD_CLOEXEC = 0x80000 + TFD_NONBLOCK = 0x800 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x80285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x100 + TUNATTACHFILTER = 0x401054d5 + TUNDETACHFILTER = 0x401054d6 + TUNGETDEVNETNS = 0x54e3 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x801054db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETCARRIER = 0x400454e2 + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRPEB = 0x40046f04 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCSPEB = 0x40046f05 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VMIN = 0x6 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WORDSIZE = 0x40 + XCASE = 0x4 + XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x80804804 + _HIDIOCGRAWPHYS = 0x80404805 + _HIDIOCGRAWUNIQ = 0x80404808 +) + +// Errors +const ( + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + ECANCELED = syscall.Errno(0x7d) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EISCONN = syscall.Errno(0x6a) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTCONN = syscall.Errno(0x6b) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTUNIQ = syscall.Errno(0x4c) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPFNOSUPPORT = syscall.Errno(0x60) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGIO = syscall.Signal(0x1d) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/tests/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go new file mode 100644 index 000000000..29344eb37 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go @@ -0,0 +1,879 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/mips/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build mips && linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/mips/include _const.go + +package unix + +import "syscall" + +const ( + B1000000 = 0x1008 + B115200 = 0x1002 + B1152000 = 0x1009 + B1500000 = 0x100a + B2000000 = 0x100b + B230400 = 0x1003 + B2500000 = 0x100c + B3000000 = 0x100d + B3500000 = 0x100e + B4000000 = 0x100f + B460800 = 0x1004 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B921600 = 0x1007 + BLKALIGNOFF = 0x2000127a + BLKBSZGET = 0x40041270 + BLKBSZSET = 0x80041271 + BLKDISCARD = 0x20001277 + BLKDISCARDZEROES = 0x2000127c + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETDISKSEQ = 0x40081280 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40041272 + BLKIOMIN = 0x20001278 + BLKIOOPT = 0x20001279 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKROTATIONAL = 0x2000127e + BLKRRPART = 0x2000125f + BLKSECDISCARD = 0x2000127d + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BLKZEROOUT = 0x2000127f + BOTHER = 0x1000 + BS1 = 0x2000 + BSDLY = 0x2000 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIZE = 0x30 + CSTOPB = 0x40 + ECCGETLAYOUT = 0x41484d11 + ECCGETSTATS = 0x40104d12 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x80 + EPIOCGPARAMS = 0x40088a02 + EPIOCSPARAMS = 0x80088a01 + EPOLL_CLOEXEC = 0x80000 + EXTPROC = 0x10000 + FF1 = 0x8000 + FFDLY = 0x8000 + FICLONE = 0x80049409 + FICLONERANGE = 0x8020940d + FLUSHO = 0x2000 + FS_IOC_ENABLE_VERITY = 0x80806685 + FS_IOC_GETFLAGS = 0x40046601 + FS_IOC_GET_ENCRYPTION_NONCE = 0x4010661b + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SETFLAGS = 0x80046602 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + F_GETLK = 0x21 + F_GETLK64 = 0x21 + F_GETOWN = 0x17 + F_RDLCK = 0x0 + F_SETLK = 0x22 + F_SETLK64 = 0x22 + F_SETLKW = 0x23 + F_SETLKW64 = 0x23 + F_SETOWN = 0x18 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 + HIDIOCREVOKE = 0x8004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x100 + IN_CLOEXEC = 0x80000 + IN_NONBLOCK = 0x80 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPV6_FLOWINFO_MASK = 0xfffffff + IPV6_FLOWLABEL_MASK = 0xfffff + ISIG = 0x1 + IUCLC = 0x200 + IXOFF = 0x1000 + IXON = 0x400 + MAP_ANON = 0x800 + MAP_ANONYMOUS = 0x800 + MAP_DENYWRITE = 0x2000 + MAP_EXECUTABLE = 0x4000 + MAP_GROWSDOWN = 0x1000 + MAP_HUGETLB = 0x80000 + MAP_LOCKED = 0x8000 + MAP_NONBLOCK = 0x20000 + MAP_NORESERVE = 0x400 + MAP_POPULATE = 0x10000 + MAP_RENAME = 0x800 + MAP_STACK = 0x40000 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MEMERASE = 0x80084d02 + MEMERASE64 = 0x80104d14 + MEMGETBADBLOCK = 0x80084d0b + MEMGETINFO = 0x40204d01 + MEMGETOOBSEL = 0x40c84d0a + MEMGETREGIONCOUNT = 0x40044d07 + MEMISLOCKED = 0x40084d17 + MEMLOCK = 0x80084d05 + MEMREAD = 0xc0404d1a + MEMREADOOB = 0xc00c4d04 + MEMSETBADBLOCK = 0x80084d0c + MEMUNLOCK = 0x80084d06 + MEMWRITEOOB = 0xc00c4d03 + MTDFILEMODE = 0x20004d13 + NFDBITS = 0x20 + NLDLY = 0x100 + NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x4008b705 + NS_GET_NSTYPE = 0x2000b703 + NS_GET_OWNER_UID = 0x2000b704 + NS_GET_PARENT = 0x2000b702 + NS_GET_PID_FROM_PIDNS = 0x4004b706 + NS_GET_PID_IN_PIDNS = 0x4004b708 + NS_GET_TGID_FROM_PIDNS = 0x4004b707 + NS_GET_TGID_IN_PIDNS = 0x4004b709 + NS_GET_USERNS = 0x2000b701 + OLCUC = 0x2 + ONLCR = 0x4 + OTPERASE = 0x800c4d19 + OTPGETREGIONCOUNT = 0x80044d0e + OTPGETREGIONINFO = 0x800c4d0f + OTPLOCK = 0x400c4d10 + OTPSELECT = 0x40044d0d + O_APPEND = 0x8 + O_ASYNC = 0x1000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x100 + O_DIRECT = 0x8000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x10 + O_EXCL = 0x400 + O_FSYNC = 0x4010 + O_LARGEFILE = 0x2000 + O_NDELAY = 0x80 + O_NOATIME = 0x40000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x80 + O_PATH = 0x200000 + O_RSYNC = 0x4010 + O_SYNC = 0x4010 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + PARENB = 0x100 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40042407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8004240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc004240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80042406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCBRIDGECHAN = 0x80047435 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4008743f + PPPIOCGIDLE32 = 0x4008743f + PPPIOCGIDLE64 = 0x4010743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCSACTIVE = 0x80087446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x800c744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80087447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCUNBRIDGECHAN = 0x20007434 + PPPIOCXFERUNIT = 0x2000744e + PR_SET_PTRACER_ANY = 0xffffffff + PTP_CLOCK_GETCAPS = 0x40503d01 + PTP_CLOCK_GETCAPS2 = 0x40503d0a + PTP_ENABLE_PPS = 0x80043d04 + PTP_ENABLE_PPS2 = 0x80043d0d + PTP_EXTTS_REQUEST = 0x80103d02 + PTP_EXTTS_REQUEST2 = 0x80103d0b + PTP_MASK_CLEAR_ALL = 0x20003d13 + PTP_MASK_EN_SINGLE = 0x80043d14 + PTP_PEROUT_REQUEST = 0x80383d03 + PTP_PEROUT_REQUEST2 = 0x80383d0c + PTP_PIN_SETFUNC = 0x80603d07 + PTP_PIN_SETFUNC2 = 0x80603d10 + PTP_SYS_OFFSET = 0x83403d05 + PTP_SYS_OFFSET2 = 0x83403d0e + PTRACE_GETFPREGS = 0xe + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_GET_THREAD_AREA_3264 = 0xc4 + PTRACE_GET_WATCH_REGS = 0xd0 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_PEEKDATA_3264 = 0xc1 + PTRACE_PEEKTEXT_3264 = 0xc0 + PTRACE_POKEDATA_3264 = 0xc3 + PTRACE_POKETEXT_3264 = 0xc2 + PTRACE_SETFPREGS = 0xf + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SET_WATCH_REGS = 0xd1 + RLIMIT_AS = 0x6 + RLIMIT_MEMLOCK = 0x9 + RLIMIT_NOFILE = 0x5 + RLIMIT_NPROC = 0x8 + RLIMIT_RSS = 0x7 + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4004700d + RTC_EPOCH_SET = 0x8004700e + RTC_IRQP_READ = 0x4004700b + RTC_IRQP_SET = 0x8004700c + RTC_PARAM_GET = 0x80187013 + RTC_PARAM_SET = 0x80187014 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x401c7011 + RTC_PLL_SET = 0x801c7012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x80082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x80082104 + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x80 + SIOCATMARK = 0x40047307 + SIOCGPGRP = 0x40047309 + SIOCGSTAMPNS_NEW = 0x40108907 + SIOCGSTAMP_NEW = 0x40108906 + SIOCINQ = 0x467f + SIOCOUTQ = 0x7472 + SIOCSPGRP = 0x80047308 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x1 + SOCK_NONBLOCK = 0x80 + SOCK_STREAM = 0x2 + SOL_SOCKET = 0xffff + SO_ACCEPTCONN = 0x1009 + SO_ATTACH_BPF = 0x32 + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x20 + SO_BSDCOMPAT = 0xe + SO_BUF_LOCK = 0x48 + SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 + SO_NOFCS = 0x2b + SO_OOBINLINE = 0x100 + SO_PASSCRED = 0x11 + SO_PASSPIDFD = 0x4c + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x12 + SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d + SO_PEERSEC = 0x1e + SO_PREFER_BUSY_POLL = 0x45 + SO_PROTOCOL = 0x1028 + SO_RCVBUF = 0x1002 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x1004 + SO_RCVMARK = 0x4b + SO_RCVTIMEO = 0x1006 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x1006 + SO_RESERVE_MEM = 0x49 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x1001 + SO_SNDBUFFORCE = 0x1f + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x1005 + SO_STYLE = 0x1008 + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a + SO_TXTIME = 0x3d + SO_TYPE = 0x1008 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TCFLSH = 0x5407 + TCGETA = 0x5401 + TCGETS = 0x540d + TCGETS2 = 0x4030542a + TCSAFLUSH = 0x5410 + TCSBRK = 0x5405 + TCSBRKP = 0x5486 + TCSETA = 0x5402 + TCSETAF = 0x5404 + TCSETAW = 0x5403 + TCSETS = 0x540e + TCSETS2 = 0x8030542b + TCSETSF = 0x5410 + TCSETSF2 = 0x8030542d + TCSETSW = 0x540f + TCSETSW2 = 0x8030542c + TCXONC = 0x5406 + TFD_CLOEXEC = 0x80000 + TFD_NONBLOCK = 0x80 + TIOCCBRK = 0x5428 + TIOCCONS = 0x80047478 + TIOCEXCL = 0x740d + TIOCGDEV = 0x40045432 + TIOCGETD = 0x7400 + TIOCGETP = 0x7408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x5492 + TIOCGISO7816 = 0x40285442 + TIOCGLCKTRMIOS = 0x548b + TIOCGLTC = 0x7474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 + TIOCGRS485 = 0x4020542e + TIOCGSERIAL = 0x5484 + TIOCGSID = 0x7416 + TIOCGSOFTCAR = 0x5481 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x467f + TIOCLINUX = 0x5483 + TIOCMBIC = 0x741c + TIOCMBIS = 0x741b + TIOCMGET = 0x741d + TIOCMIWAIT = 0x5491 + TIOCMSET = 0x741a + TIOCM_CAR = 0x100 + TIOCM_CD = 0x100 + TIOCM_CTS = 0x40 + TIOCM_DSR = 0x400 + TIOCM_RI = 0x200 + TIOCM_RNG = 0x200 + TIOCM_SR = 0x20 + TIOCM_ST = 0x10 + TIOCNOTTY = 0x5471 + TIOCNXCL = 0x740e + TIOCOUTQ = 0x7472 + TIOCPKT = 0x5470 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x5480 + TIOCSERCONFIG = 0x5488 + TIOCSERGETLSR = 0x548e + TIOCSERGETMULTI = 0x548f + TIOCSERGSTRUCT = 0x548d + TIOCSERGWILD = 0x5489 + TIOCSERSETMULTI = 0x5490 + TIOCSERSWILD = 0x548a + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x7401 + TIOCSETN = 0x740a + TIOCSETP = 0x7409 + TIOCSIG = 0x80045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x548c + TIOCSLTC = 0x7475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0xc020542f + TIOCSSERIAL = 0x5485 + TIOCSSOFTCAR = 0x5482 + TIOCSTI = 0x5472 + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x8000 + TUNATTACHFILTER = 0x800854d5 + TUNDETACHFILTER = 0x800854d6 + TUNGETDEVNETNS = 0x200054e3 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x400854db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRPEB = 0x80046f04 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCSPEB = 0x80046f05 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + VDISCARD = 0xd + VEOF = 0x10 + VEOL = 0x11 + VEOL2 = 0x6 + VMIN = 0x4 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VSWTCH = 0x7 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WORDSIZE = 0x20 + XCASE = 0x4 + XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x40804804 + _HIDIOCGRAWPHYS = 0x40404805 + _HIDIOCGRAWUNIQ = 0x40404808 +) + +// Errors +const ( + EADDRINUSE = syscall.Errno(0x7d) + EADDRNOTAVAIL = syscall.Errno(0x7e) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x7c) + EALREADY = syscall.Errno(0x95) + EBADE = syscall.Errno(0x32) + EBADFD = syscall.Errno(0x51) + EBADMSG = syscall.Errno(0x4d) + EBADR = syscall.Errno(0x33) + EBADRQC = syscall.Errno(0x36) + EBADSLT = syscall.Errno(0x37) + EBFONT = syscall.Errno(0x3b) + ECANCELED = syscall.Errno(0x9e) + ECHRNG = syscall.Errno(0x25) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x82) + ECONNREFUSED = syscall.Errno(0x92) + ECONNRESET = syscall.Errno(0x83) + EDEADLK = syscall.Errno(0x2d) + EDEADLOCK = syscall.Errno(0x38) + EDESTADDRREQ = syscall.Errno(0x60) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x46d) + EHOSTDOWN = syscall.Errno(0x93) + EHOSTUNREACH = syscall.Errno(0x94) + EHWPOISON = syscall.Errno(0xa8) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x58) + EINIT = syscall.Errno(0x8d) + EINPROGRESS = syscall.Errno(0x96) + EISCONN = syscall.Errno(0x85) + EISNAM = syscall.Errno(0x8b) + EKEYEXPIRED = syscall.Errno(0xa2) + EKEYREJECTED = syscall.Errno(0xa4) + EKEYREVOKED = syscall.Errno(0xa3) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELIBACC = syscall.Errno(0x53) + ELIBBAD = syscall.Errno(0x54) + ELIBEXEC = syscall.Errno(0x57) + ELIBMAX = syscall.Errno(0x56) + ELIBSCN = syscall.Errno(0x55) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x5a) + EMEDIUMTYPE = syscall.Errno(0xa0) + EMSGSIZE = syscall.Errno(0x61) + EMULTIHOP = syscall.Errno(0x4a) + ENAMETOOLONG = syscall.Errno(0x4e) + ENAVAIL = syscall.Errno(0x8a) + ENETDOWN = syscall.Errno(0x7f) + ENETRESET = syscall.Errno(0x81) + ENETUNREACH = syscall.Errno(0x80) + ENOANO = syscall.Errno(0x35) + ENOBUFS = syscall.Errno(0x84) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x3d) + ENOKEY = syscall.Errno(0xa1) + ENOLCK = syscall.Errno(0x2e) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x9f) + ENOMSG = syscall.Errno(0x23) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x63) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x59) + ENOTCONN = syscall.Errno(0x86) + ENOTEMPTY = syscall.Errno(0x5d) + ENOTNAM = syscall.Errno(0x89) + ENOTRECOVERABLE = syscall.Errno(0xa6) + ENOTSOCK = syscall.Errno(0x5f) + ENOTSUP = syscall.Errno(0x7a) + ENOTUNIQ = syscall.Errno(0x50) + EOPNOTSUPP = syscall.Errno(0x7a) + EOVERFLOW = syscall.Errno(0x4f) + EOWNERDEAD = syscall.Errno(0xa5) + EPFNOSUPPORT = syscall.Errno(0x7b) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x78) + EPROTOTYPE = syscall.Errno(0x62) + EREMCHG = syscall.Errno(0x52) + EREMDEV = syscall.Errno(0x8e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x8c) + ERESTART = syscall.Errno(0x5b) + ERFKILL = syscall.Errno(0xa7) + ESHUTDOWN = syscall.Errno(0x8f) + ESOCKTNOSUPPORT = syscall.Errno(0x79) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x97) + ESTRPIPE = syscall.Errno(0x5c) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x91) + ETOOMANYREFS = syscall.Errno(0x90) + EUCLEAN = syscall.Errno(0x87) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x5e) + EXFULL = syscall.Errno(0x34) +) + +// Signals +const ( + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x12) + SIGCLD = syscall.Signal(0x12) + SIGCONT = syscall.Signal(0x19) + SIGEMT = syscall.Signal(0x7) + SIGIO = syscall.Signal(0x16) + SIGPOLL = syscall.Signal(0x16) + SIGPROF = syscall.Signal(0x1d) + SIGPWR = syscall.Signal(0x13) + SIGSTOP = syscall.Signal(0x17) + SIGSYS = syscall.Signal(0xc) + SIGTSTP = syscall.Signal(0x18) + SIGTTIN = syscall.Signal(0x1a) + SIGTTOU = syscall.Signal(0x1b) + SIGURG = syscall.Signal(0x15) + SIGUSR1 = syscall.Signal(0x10) + SIGUSR2 = syscall.Signal(0x11) + SIGVTALRM = syscall.Signal(0x1c) + SIGWINCH = syscall.Signal(0x14) + SIGXCPU = syscall.Signal(0x1e) + SIGXFSZ = syscall.Signal(0x1f) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "resource deadlock avoided"}, + {46, "ENOLCK", "no locks available"}, + {50, "EBADE", "invalid exchange"}, + {51, "EBADR", "invalid request descriptor"}, + {52, "EXFULL", "exchange full"}, + {53, "ENOANO", "no anode"}, + {54, "EBADRQC", "invalid request code"}, + {55, "EBADSLT", "invalid slot"}, + {56, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EMULTIHOP", "multihop attempted"}, + {77, "EBADMSG", "bad message"}, + {78, "ENAMETOOLONG", "file name too long"}, + {79, "EOVERFLOW", "value too large for defined data type"}, + {80, "ENOTUNIQ", "name not unique on network"}, + {81, "EBADFD", "file descriptor in bad state"}, + {82, "EREMCHG", "remote address changed"}, + {83, "ELIBACC", "can not access a needed shared library"}, + {84, "ELIBBAD", "accessing a corrupted shared library"}, + {85, "ELIBSCN", ".lib section in a.out corrupted"}, + {86, "ELIBMAX", "attempting to link in too many shared libraries"}, + {87, "ELIBEXEC", "cannot exec a shared library directly"}, + {88, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {89, "ENOSYS", "function not implemented"}, + {90, "ELOOP", "too many levels of symbolic links"}, + {91, "ERESTART", "interrupted system call should be restarted"}, + {92, "ESTRPIPE", "streams pipe error"}, + {93, "ENOTEMPTY", "directory not empty"}, + {94, "EUSERS", "too many users"}, + {95, "ENOTSOCK", "socket operation on non-socket"}, + {96, "EDESTADDRREQ", "destination address required"}, + {97, "EMSGSIZE", "message too long"}, + {98, "EPROTOTYPE", "protocol wrong type for socket"}, + {99, "ENOPROTOOPT", "protocol not available"}, + {120, "EPROTONOSUPPORT", "protocol not supported"}, + {121, "ESOCKTNOSUPPORT", "socket type not supported"}, + {122, "ENOTSUP", "operation not supported"}, + {123, "EPFNOSUPPORT", "protocol family not supported"}, + {124, "EAFNOSUPPORT", "address family not supported by protocol"}, + {125, "EADDRINUSE", "address already in use"}, + {126, "EADDRNOTAVAIL", "cannot assign requested address"}, + {127, "ENETDOWN", "network is down"}, + {128, "ENETUNREACH", "network is unreachable"}, + {129, "ENETRESET", "network dropped connection on reset"}, + {130, "ECONNABORTED", "software caused connection abort"}, + {131, "ECONNRESET", "connection reset by peer"}, + {132, "ENOBUFS", "no buffer space available"}, + {133, "EISCONN", "transport endpoint is already connected"}, + {134, "ENOTCONN", "transport endpoint is not connected"}, + {135, "EUCLEAN", "structure needs cleaning"}, + {137, "ENOTNAM", "not a XENIX named type file"}, + {138, "ENAVAIL", "no XENIX semaphores available"}, + {139, "EISNAM", "is a named type file"}, + {140, "EREMOTEIO", "remote I/O error"}, + {141, "EINIT", "unknown error 141"}, + {142, "EREMDEV", "unknown error 142"}, + {143, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {144, "ETOOMANYREFS", "too many references: cannot splice"}, + {145, "ETIMEDOUT", "connection timed out"}, + {146, "ECONNREFUSED", "connection refused"}, + {147, "EHOSTDOWN", "host is down"}, + {148, "EHOSTUNREACH", "no route to host"}, + {149, "EALREADY", "operation already in progress"}, + {150, "EINPROGRESS", "operation now in progress"}, + {151, "ESTALE", "stale file handle"}, + {158, "ECANCELED", "operation canceled"}, + {159, "ENOMEDIUM", "no medium found"}, + {160, "EMEDIUMTYPE", "wrong medium type"}, + {161, "ENOKEY", "required key not available"}, + {162, "EKEYEXPIRED", "key has expired"}, + {163, "EKEYREVOKED", "key has been revoked"}, + {164, "EKEYREJECTED", "key was rejected by service"}, + {165, "EOWNERDEAD", "owner died"}, + {166, "ENOTRECOVERABLE", "state not recoverable"}, + {167, "ERFKILL", "operation not possible due to RF-kill"}, + {168, "EHWPOISON", "memory page has hardware error"}, + {1133, "EDQUOT", "disk quota exceeded"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGUSR1", "user defined signal 1"}, + {17, "SIGUSR2", "user defined signal 2"}, + {18, "SIGCHLD", "child exited"}, + {19, "SIGPWR", "power failure"}, + {20, "SIGWINCH", "window changed"}, + {21, "SIGURG", "urgent I/O condition"}, + {22, "SIGIO", "I/O possible"}, + {23, "SIGSTOP", "stopped (signal)"}, + {24, "SIGTSTP", "stopped"}, + {25, "SIGCONT", "continued"}, + {26, "SIGTTIN", "stopped (tty input)"}, + {27, "SIGTTOU", "stopped (tty output)"}, + {28, "SIGVTALRM", "virtual timer expired"}, + {29, "SIGPROF", "profiling timer expired"}, + {30, "SIGXCPU", "CPU time limit exceeded"}, + {31, "SIGXFSZ", "file size limit exceeded"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/tests/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go new file mode 100644 index 000000000..20d51fb96 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go @@ -0,0 +1,879 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/mips64/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build mips64 && linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/mips64/include _const.go + +package unix + +import "syscall" + +const ( + B1000000 = 0x1008 + B115200 = 0x1002 + B1152000 = 0x1009 + B1500000 = 0x100a + B2000000 = 0x100b + B230400 = 0x1003 + B2500000 = 0x100c + B3000000 = 0x100d + B3500000 = 0x100e + B4000000 = 0x100f + B460800 = 0x1004 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B921600 = 0x1007 + BLKALIGNOFF = 0x2000127a + BLKBSZGET = 0x40081270 + BLKBSZSET = 0x80081271 + BLKDISCARD = 0x20001277 + BLKDISCARDZEROES = 0x2000127c + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETDISKSEQ = 0x40081280 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40081272 + BLKIOMIN = 0x20001278 + BLKIOOPT = 0x20001279 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKROTATIONAL = 0x2000127e + BLKRRPART = 0x2000125f + BLKSECDISCARD = 0x2000127d + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BLKZEROOUT = 0x2000127f + BOTHER = 0x1000 + BS1 = 0x2000 + BSDLY = 0x2000 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIZE = 0x30 + CSTOPB = 0x40 + ECCGETLAYOUT = 0x41484d11 + ECCGETSTATS = 0x40104d12 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x80 + EPIOCGPARAMS = 0x40088a02 + EPIOCSPARAMS = 0x80088a01 + EPOLL_CLOEXEC = 0x80000 + EXTPROC = 0x10000 + FF1 = 0x8000 + FFDLY = 0x8000 + FICLONE = 0x80049409 + FICLONERANGE = 0x8020940d + FLUSHO = 0x2000 + FS_IOC_ENABLE_VERITY = 0x80806685 + FS_IOC_GETFLAGS = 0x40086601 + FS_IOC_GET_ENCRYPTION_NONCE = 0x4010661b + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SETFLAGS = 0x80086602 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + F_GETLK = 0xe + F_GETLK64 = 0xe + F_GETOWN = 0x17 + F_RDLCK = 0x0 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x18 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 + HIDIOCREVOKE = 0x8004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x100 + IN_CLOEXEC = 0x80000 + IN_NONBLOCK = 0x80 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPV6_FLOWINFO_MASK = 0xfffffff + IPV6_FLOWLABEL_MASK = 0xfffff + ISIG = 0x1 + IUCLC = 0x200 + IXOFF = 0x1000 + IXON = 0x400 + MAP_ANON = 0x800 + MAP_ANONYMOUS = 0x800 + MAP_DENYWRITE = 0x2000 + MAP_EXECUTABLE = 0x4000 + MAP_GROWSDOWN = 0x1000 + MAP_HUGETLB = 0x80000 + MAP_LOCKED = 0x8000 + MAP_NONBLOCK = 0x20000 + MAP_NORESERVE = 0x400 + MAP_POPULATE = 0x10000 + MAP_RENAME = 0x800 + MAP_STACK = 0x40000 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MEMERASE = 0x80084d02 + MEMERASE64 = 0x80104d14 + MEMGETBADBLOCK = 0x80084d0b + MEMGETINFO = 0x40204d01 + MEMGETOOBSEL = 0x40c84d0a + MEMGETREGIONCOUNT = 0x40044d07 + MEMISLOCKED = 0x40084d17 + MEMLOCK = 0x80084d05 + MEMREAD = 0xc0404d1a + MEMREADOOB = 0xc0104d04 + MEMSETBADBLOCK = 0x80084d0c + MEMUNLOCK = 0x80084d06 + MEMWRITEOOB = 0xc0104d03 + MTDFILEMODE = 0x20004d13 + NFDBITS = 0x40 + NLDLY = 0x100 + NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x4008b705 + NS_GET_NSTYPE = 0x2000b703 + NS_GET_OWNER_UID = 0x2000b704 + NS_GET_PARENT = 0x2000b702 + NS_GET_PID_FROM_PIDNS = 0x4004b706 + NS_GET_PID_IN_PIDNS = 0x4004b708 + NS_GET_TGID_FROM_PIDNS = 0x4004b707 + NS_GET_TGID_IN_PIDNS = 0x4004b709 + NS_GET_USERNS = 0x2000b701 + OLCUC = 0x2 + ONLCR = 0x4 + OTPERASE = 0x800c4d19 + OTPGETREGIONCOUNT = 0x80044d0e + OTPGETREGIONINFO = 0x800c4d0f + OTPLOCK = 0x400c4d10 + OTPSELECT = 0x40044d0d + O_APPEND = 0x8 + O_ASYNC = 0x1000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x100 + O_DIRECT = 0x8000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x10 + O_EXCL = 0x400 + O_FSYNC = 0x4010 + O_LARGEFILE = 0x0 + O_NDELAY = 0x80 + O_NOATIME = 0x40000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x80 + O_PATH = 0x200000 + O_RSYNC = 0x4010 + O_SYNC = 0x4010 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + PARENB = 0x100 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCBRIDGECHAN = 0x80047435 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4010743f + PPPIOCGIDLE32 = 0x4008743f + PPPIOCGIDLE64 = 0x4010743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCSACTIVE = 0x80107446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x8010744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80107447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCUNBRIDGECHAN = 0x20007434 + PPPIOCXFERUNIT = 0x2000744e + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x40503d01 + PTP_CLOCK_GETCAPS2 = 0x40503d0a + PTP_ENABLE_PPS = 0x80043d04 + PTP_ENABLE_PPS2 = 0x80043d0d + PTP_EXTTS_REQUEST = 0x80103d02 + PTP_EXTTS_REQUEST2 = 0x80103d0b + PTP_MASK_CLEAR_ALL = 0x20003d13 + PTP_MASK_EN_SINGLE = 0x80043d14 + PTP_PEROUT_REQUEST = 0x80383d03 + PTP_PEROUT_REQUEST2 = 0x80383d0c + PTP_PIN_SETFUNC = 0x80603d07 + PTP_PIN_SETFUNC2 = 0x80603d10 + PTP_SYS_OFFSET = 0x83403d05 + PTP_SYS_OFFSET2 = 0x83403d0e + PTRACE_GETFPREGS = 0xe + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_GET_THREAD_AREA_3264 = 0xc4 + PTRACE_GET_WATCH_REGS = 0xd0 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_PEEKDATA_3264 = 0xc1 + PTRACE_PEEKTEXT_3264 = 0xc0 + PTRACE_POKEDATA_3264 = 0xc3 + PTRACE_POKETEXT_3264 = 0xc2 + PTRACE_SETFPREGS = 0xf + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SET_WATCH_REGS = 0xd1 + RLIMIT_AS = 0x6 + RLIMIT_MEMLOCK = 0x9 + RLIMIT_NOFILE = 0x5 + RLIMIT_NPROC = 0x8 + RLIMIT_RSS = 0x7 + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4008700d + RTC_EPOCH_SET = 0x8008700e + RTC_IRQP_READ = 0x4008700b + RTC_IRQP_SET = 0x8008700c + RTC_PARAM_GET = 0x80187013 + RTC_PARAM_SET = 0x80187014 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x40207011 + RTC_PLL_SET = 0x80207012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x80082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x80082104 + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x80 + SIOCATMARK = 0x40047307 + SIOCGPGRP = 0x40047309 + SIOCGSTAMPNS_NEW = 0x40108907 + SIOCGSTAMP_NEW = 0x40108906 + SIOCINQ = 0x467f + SIOCOUTQ = 0x7472 + SIOCSPGRP = 0x80047308 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x1 + SOCK_NONBLOCK = 0x80 + SOCK_STREAM = 0x2 + SOL_SOCKET = 0xffff + SO_ACCEPTCONN = 0x1009 + SO_ATTACH_BPF = 0x32 + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x20 + SO_BSDCOMPAT = 0xe + SO_BUF_LOCK = 0x48 + SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 + SO_NOFCS = 0x2b + SO_OOBINLINE = 0x100 + SO_PASSCRED = 0x11 + SO_PASSPIDFD = 0x4c + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x12 + SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d + SO_PEERSEC = 0x1e + SO_PREFER_BUSY_POLL = 0x45 + SO_PROTOCOL = 0x1028 + SO_RCVBUF = 0x1002 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x1004 + SO_RCVMARK = 0x4b + SO_RCVTIMEO = 0x1006 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x1006 + SO_RESERVE_MEM = 0x49 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x1001 + SO_SNDBUFFORCE = 0x1f + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x1005 + SO_STYLE = 0x1008 + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a + SO_TXTIME = 0x3d + SO_TYPE = 0x1008 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TCFLSH = 0x5407 + TCGETA = 0x5401 + TCGETS = 0x540d + TCGETS2 = 0x4030542a + TCSAFLUSH = 0x5410 + TCSBRK = 0x5405 + TCSBRKP = 0x5486 + TCSETA = 0x5402 + TCSETAF = 0x5404 + TCSETAW = 0x5403 + TCSETS = 0x540e + TCSETS2 = 0x8030542b + TCSETSF = 0x5410 + TCSETSF2 = 0x8030542d + TCSETSW = 0x540f + TCSETSW2 = 0x8030542c + TCXONC = 0x5406 + TFD_CLOEXEC = 0x80000 + TFD_NONBLOCK = 0x80 + TIOCCBRK = 0x5428 + TIOCCONS = 0x80047478 + TIOCEXCL = 0x740d + TIOCGDEV = 0x40045432 + TIOCGETD = 0x7400 + TIOCGETP = 0x7408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x5492 + TIOCGISO7816 = 0x40285442 + TIOCGLCKTRMIOS = 0x548b + TIOCGLTC = 0x7474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 + TIOCGRS485 = 0x4020542e + TIOCGSERIAL = 0x5484 + TIOCGSID = 0x7416 + TIOCGSOFTCAR = 0x5481 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x467f + TIOCLINUX = 0x5483 + TIOCMBIC = 0x741c + TIOCMBIS = 0x741b + TIOCMGET = 0x741d + TIOCMIWAIT = 0x5491 + TIOCMSET = 0x741a + TIOCM_CAR = 0x100 + TIOCM_CD = 0x100 + TIOCM_CTS = 0x40 + TIOCM_DSR = 0x400 + TIOCM_RI = 0x200 + TIOCM_RNG = 0x200 + TIOCM_SR = 0x20 + TIOCM_ST = 0x10 + TIOCNOTTY = 0x5471 + TIOCNXCL = 0x740e + TIOCOUTQ = 0x7472 + TIOCPKT = 0x5470 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x5480 + TIOCSERCONFIG = 0x5488 + TIOCSERGETLSR = 0x548e + TIOCSERGETMULTI = 0x548f + TIOCSERGSTRUCT = 0x548d + TIOCSERGWILD = 0x5489 + TIOCSERSETMULTI = 0x5490 + TIOCSERSWILD = 0x548a + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x7401 + TIOCSETN = 0x740a + TIOCSETP = 0x7409 + TIOCSIG = 0x80045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x548c + TIOCSLTC = 0x7475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0xc020542f + TIOCSSERIAL = 0x5485 + TIOCSSOFTCAR = 0x5482 + TIOCSTI = 0x5472 + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x8000 + TUNATTACHFILTER = 0x801054d5 + TUNDETACHFILTER = 0x801054d6 + TUNGETDEVNETNS = 0x200054e3 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x401054db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRPEB = 0x80046f04 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCSPEB = 0x80046f05 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + VDISCARD = 0xd + VEOF = 0x10 + VEOL = 0x11 + VEOL2 = 0x6 + VMIN = 0x4 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VSWTCH = 0x7 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WORDSIZE = 0x40 + XCASE = 0x4 + XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x40804804 + _HIDIOCGRAWPHYS = 0x40404805 + _HIDIOCGRAWUNIQ = 0x40404808 +) + +// Errors +const ( + EADDRINUSE = syscall.Errno(0x7d) + EADDRNOTAVAIL = syscall.Errno(0x7e) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x7c) + EALREADY = syscall.Errno(0x95) + EBADE = syscall.Errno(0x32) + EBADFD = syscall.Errno(0x51) + EBADMSG = syscall.Errno(0x4d) + EBADR = syscall.Errno(0x33) + EBADRQC = syscall.Errno(0x36) + EBADSLT = syscall.Errno(0x37) + EBFONT = syscall.Errno(0x3b) + ECANCELED = syscall.Errno(0x9e) + ECHRNG = syscall.Errno(0x25) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x82) + ECONNREFUSED = syscall.Errno(0x92) + ECONNRESET = syscall.Errno(0x83) + EDEADLK = syscall.Errno(0x2d) + EDEADLOCK = syscall.Errno(0x38) + EDESTADDRREQ = syscall.Errno(0x60) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x46d) + EHOSTDOWN = syscall.Errno(0x93) + EHOSTUNREACH = syscall.Errno(0x94) + EHWPOISON = syscall.Errno(0xa8) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x58) + EINIT = syscall.Errno(0x8d) + EINPROGRESS = syscall.Errno(0x96) + EISCONN = syscall.Errno(0x85) + EISNAM = syscall.Errno(0x8b) + EKEYEXPIRED = syscall.Errno(0xa2) + EKEYREJECTED = syscall.Errno(0xa4) + EKEYREVOKED = syscall.Errno(0xa3) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELIBACC = syscall.Errno(0x53) + ELIBBAD = syscall.Errno(0x54) + ELIBEXEC = syscall.Errno(0x57) + ELIBMAX = syscall.Errno(0x56) + ELIBSCN = syscall.Errno(0x55) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x5a) + EMEDIUMTYPE = syscall.Errno(0xa0) + EMSGSIZE = syscall.Errno(0x61) + EMULTIHOP = syscall.Errno(0x4a) + ENAMETOOLONG = syscall.Errno(0x4e) + ENAVAIL = syscall.Errno(0x8a) + ENETDOWN = syscall.Errno(0x7f) + ENETRESET = syscall.Errno(0x81) + ENETUNREACH = syscall.Errno(0x80) + ENOANO = syscall.Errno(0x35) + ENOBUFS = syscall.Errno(0x84) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x3d) + ENOKEY = syscall.Errno(0xa1) + ENOLCK = syscall.Errno(0x2e) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x9f) + ENOMSG = syscall.Errno(0x23) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x63) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x59) + ENOTCONN = syscall.Errno(0x86) + ENOTEMPTY = syscall.Errno(0x5d) + ENOTNAM = syscall.Errno(0x89) + ENOTRECOVERABLE = syscall.Errno(0xa6) + ENOTSOCK = syscall.Errno(0x5f) + ENOTSUP = syscall.Errno(0x7a) + ENOTUNIQ = syscall.Errno(0x50) + EOPNOTSUPP = syscall.Errno(0x7a) + EOVERFLOW = syscall.Errno(0x4f) + EOWNERDEAD = syscall.Errno(0xa5) + EPFNOSUPPORT = syscall.Errno(0x7b) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x78) + EPROTOTYPE = syscall.Errno(0x62) + EREMCHG = syscall.Errno(0x52) + EREMDEV = syscall.Errno(0x8e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x8c) + ERESTART = syscall.Errno(0x5b) + ERFKILL = syscall.Errno(0xa7) + ESHUTDOWN = syscall.Errno(0x8f) + ESOCKTNOSUPPORT = syscall.Errno(0x79) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x97) + ESTRPIPE = syscall.Errno(0x5c) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x91) + ETOOMANYREFS = syscall.Errno(0x90) + EUCLEAN = syscall.Errno(0x87) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x5e) + EXFULL = syscall.Errno(0x34) +) + +// Signals +const ( + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x12) + SIGCLD = syscall.Signal(0x12) + SIGCONT = syscall.Signal(0x19) + SIGEMT = syscall.Signal(0x7) + SIGIO = syscall.Signal(0x16) + SIGPOLL = syscall.Signal(0x16) + SIGPROF = syscall.Signal(0x1d) + SIGPWR = syscall.Signal(0x13) + SIGSTOP = syscall.Signal(0x17) + SIGSYS = syscall.Signal(0xc) + SIGTSTP = syscall.Signal(0x18) + SIGTTIN = syscall.Signal(0x1a) + SIGTTOU = syscall.Signal(0x1b) + SIGURG = syscall.Signal(0x15) + SIGUSR1 = syscall.Signal(0x10) + SIGUSR2 = syscall.Signal(0x11) + SIGVTALRM = syscall.Signal(0x1c) + SIGWINCH = syscall.Signal(0x14) + SIGXCPU = syscall.Signal(0x1e) + SIGXFSZ = syscall.Signal(0x1f) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "resource deadlock avoided"}, + {46, "ENOLCK", "no locks available"}, + {50, "EBADE", "invalid exchange"}, + {51, "EBADR", "invalid request descriptor"}, + {52, "EXFULL", "exchange full"}, + {53, "ENOANO", "no anode"}, + {54, "EBADRQC", "invalid request code"}, + {55, "EBADSLT", "invalid slot"}, + {56, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EMULTIHOP", "multihop attempted"}, + {77, "EBADMSG", "bad message"}, + {78, "ENAMETOOLONG", "file name too long"}, + {79, "EOVERFLOW", "value too large for defined data type"}, + {80, "ENOTUNIQ", "name not unique on network"}, + {81, "EBADFD", "file descriptor in bad state"}, + {82, "EREMCHG", "remote address changed"}, + {83, "ELIBACC", "can not access a needed shared library"}, + {84, "ELIBBAD", "accessing a corrupted shared library"}, + {85, "ELIBSCN", ".lib section in a.out corrupted"}, + {86, "ELIBMAX", "attempting to link in too many shared libraries"}, + {87, "ELIBEXEC", "cannot exec a shared library directly"}, + {88, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {89, "ENOSYS", "function not implemented"}, + {90, "ELOOP", "too many levels of symbolic links"}, + {91, "ERESTART", "interrupted system call should be restarted"}, + {92, "ESTRPIPE", "streams pipe error"}, + {93, "ENOTEMPTY", "directory not empty"}, + {94, "EUSERS", "too many users"}, + {95, "ENOTSOCK", "socket operation on non-socket"}, + {96, "EDESTADDRREQ", "destination address required"}, + {97, "EMSGSIZE", "message too long"}, + {98, "EPROTOTYPE", "protocol wrong type for socket"}, + {99, "ENOPROTOOPT", "protocol not available"}, + {120, "EPROTONOSUPPORT", "protocol not supported"}, + {121, "ESOCKTNOSUPPORT", "socket type not supported"}, + {122, "ENOTSUP", "operation not supported"}, + {123, "EPFNOSUPPORT", "protocol family not supported"}, + {124, "EAFNOSUPPORT", "address family not supported by protocol"}, + {125, "EADDRINUSE", "address already in use"}, + {126, "EADDRNOTAVAIL", "cannot assign requested address"}, + {127, "ENETDOWN", "network is down"}, + {128, "ENETUNREACH", "network is unreachable"}, + {129, "ENETRESET", "network dropped connection on reset"}, + {130, "ECONNABORTED", "software caused connection abort"}, + {131, "ECONNRESET", "connection reset by peer"}, + {132, "ENOBUFS", "no buffer space available"}, + {133, "EISCONN", "transport endpoint is already connected"}, + {134, "ENOTCONN", "transport endpoint is not connected"}, + {135, "EUCLEAN", "structure needs cleaning"}, + {137, "ENOTNAM", "not a XENIX named type file"}, + {138, "ENAVAIL", "no XENIX semaphores available"}, + {139, "EISNAM", "is a named type file"}, + {140, "EREMOTEIO", "remote I/O error"}, + {141, "EINIT", "unknown error 141"}, + {142, "EREMDEV", "unknown error 142"}, + {143, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {144, "ETOOMANYREFS", "too many references: cannot splice"}, + {145, "ETIMEDOUT", "connection timed out"}, + {146, "ECONNREFUSED", "connection refused"}, + {147, "EHOSTDOWN", "host is down"}, + {148, "EHOSTUNREACH", "no route to host"}, + {149, "EALREADY", "operation already in progress"}, + {150, "EINPROGRESS", "operation now in progress"}, + {151, "ESTALE", "stale file handle"}, + {158, "ECANCELED", "operation canceled"}, + {159, "ENOMEDIUM", "no medium found"}, + {160, "EMEDIUMTYPE", "wrong medium type"}, + {161, "ENOKEY", "required key not available"}, + {162, "EKEYEXPIRED", "key has expired"}, + {163, "EKEYREVOKED", "key has been revoked"}, + {164, "EKEYREJECTED", "key was rejected by service"}, + {165, "EOWNERDEAD", "owner died"}, + {166, "ENOTRECOVERABLE", "state not recoverable"}, + {167, "ERFKILL", "operation not possible due to RF-kill"}, + {168, "EHWPOISON", "memory page has hardware error"}, + {1133, "EDQUOT", "disk quota exceeded"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGUSR1", "user defined signal 1"}, + {17, "SIGUSR2", "user defined signal 2"}, + {18, "SIGCHLD", "child exited"}, + {19, "SIGPWR", "power failure"}, + {20, "SIGWINCH", "window changed"}, + {21, "SIGURG", "urgent I/O condition"}, + {22, "SIGIO", "I/O possible"}, + {23, "SIGSTOP", "stopped (signal)"}, + {24, "SIGTSTP", "stopped"}, + {25, "SIGCONT", "continued"}, + {26, "SIGTTIN", "stopped (tty input)"}, + {27, "SIGTTOU", "stopped (tty output)"}, + {28, "SIGVTALRM", "virtual timer expired"}, + {29, "SIGPROF", "profiling timer expired"}, + {30, "SIGXCPU", "CPU time limit exceeded"}, + {31, "SIGXFSZ", "file size limit exceeded"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/tests/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go new file mode 100644 index 000000000..321b60902 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go @@ -0,0 +1,879 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/mips64le/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build mips64le && linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/mips64le/include _const.go + +package unix + +import "syscall" + +const ( + B1000000 = 0x1008 + B115200 = 0x1002 + B1152000 = 0x1009 + B1500000 = 0x100a + B2000000 = 0x100b + B230400 = 0x1003 + B2500000 = 0x100c + B3000000 = 0x100d + B3500000 = 0x100e + B4000000 = 0x100f + B460800 = 0x1004 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B921600 = 0x1007 + BLKALIGNOFF = 0x2000127a + BLKBSZGET = 0x40081270 + BLKBSZSET = 0x80081271 + BLKDISCARD = 0x20001277 + BLKDISCARDZEROES = 0x2000127c + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETDISKSEQ = 0x40081280 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40081272 + BLKIOMIN = 0x20001278 + BLKIOOPT = 0x20001279 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKROTATIONAL = 0x2000127e + BLKRRPART = 0x2000125f + BLKSECDISCARD = 0x2000127d + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BLKZEROOUT = 0x2000127f + BOTHER = 0x1000 + BS1 = 0x2000 + BSDLY = 0x2000 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIZE = 0x30 + CSTOPB = 0x40 + ECCGETLAYOUT = 0x41484d11 + ECCGETSTATS = 0x40104d12 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x80 + EPIOCGPARAMS = 0x40088a02 + EPIOCSPARAMS = 0x80088a01 + EPOLL_CLOEXEC = 0x80000 + EXTPROC = 0x10000 + FF1 = 0x8000 + FFDLY = 0x8000 + FICLONE = 0x80049409 + FICLONERANGE = 0x8020940d + FLUSHO = 0x2000 + FS_IOC_ENABLE_VERITY = 0x80806685 + FS_IOC_GETFLAGS = 0x40086601 + FS_IOC_GET_ENCRYPTION_NONCE = 0x4010661b + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SETFLAGS = 0x80086602 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + F_GETLK = 0xe + F_GETLK64 = 0xe + F_GETOWN = 0x17 + F_RDLCK = 0x0 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x18 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 + HIDIOCREVOKE = 0x8004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x100 + IN_CLOEXEC = 0x80000 + IN_NONBLOCK = 0x80 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + ISIG = 0x1 + IUCLC = 0x200 + IXOFF = 0x1000 + IXON = 0x400 + MAP_ANON = 0x800 + MAP_ANONYMOUS = 0x800 + MAP_DENYWRITE = 0x2000 + MAP_EXECUTABLE = 0x4000 + MAP_GROWSDOWN = 0x1000 + MAP_HUGETLB = 0x80000 + MAP_LOCKED = 0x8000 + MAP_NONBLOCK = 0x20000 + MAP_NORESERVE = 0x400 + MAP_POPULATE = 0x10000 + MAP_RENAME = 0x800 + MAP_STACK = 0x40000 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MEMERASE = 0x80084d02 + MEMERASE64 = 0x80104d14 + MEMGETBADBLOCK = 0x80084d0b + MEMGETINFO = 0x40204d01 + MEMGETOOBSEL = 0x40c84d0a + MEMGETREGIONCOUNT = 0x40044d07 + MEMISLOCKED = 0x40084d17 + MEMLOCK = 0x80084d05 + MEMREAD = 0xc0404d1a + MEMREADOOB = 0xc0104d04 + MEMSETBADBLOCK = 0x80084d0c + MEMUNLOCK = 0x80084d06 + MEMWRITEOOB = 0xc0104d03 + MTDFILEMODE = 0x20004d13 + NFDBITS = 0x40 + NLDLY = 0x100 + NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x4008b705 + NS_GET_NSTYPE = 0x2000b703 + NS_GET_OWNER_UID = 0x2000b704 + NS_GET_PARENT = 0x2000b702 + NS_GET_PID_FROM_PIDNS = 0x4004b706 + NS_GET_PID_IN_PIDNS = 0x4004b708 + NS_GET_TGID_FROM_PIDNS = 0x4004b707 + NS_GET_TGID_IN_PIDNS = 0x4004b709 + NS_GET_USERNS = 0x2000b701 + OLCUC = 0x2 + ONLCR = 0x4 + OTPERASE = 0x800c4d19 + OTPGETREGIONCOUNT = 0x80044d0e + OTPGETREGIONINFO = 0x800c4d0f + OTPLOCK = 0x400c4d10 + OTPSELECT = 0x40044d0d + O_APPEND = 0x8 + O_ASYNC = 0x1000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x100 + O_DIRECT = 0x8000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x10 + O_EXCL = 0x400 + O_FSYNC = 0x4010 + O_LARGEFILE = 0x0 + O_NDELAY = 0x80 + O_NOATIME = 0x40000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x80 + O_PATH = 0x200000 + O_RSYNC = 0x4010 + O_SYNC = 0x4010 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + PARENB = 0x100 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCBRIDGECHAN = 0x80047435 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4010743f + PPPIOCGIDLE32 = 0x4008743f + PPPIOCGIDLE64 = 0x4010743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCSACTIVE = 0x80107446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x8010744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80107447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCUNBRIDGECHAN = 0x20007434 + PPPIOCXFERUNIT = 0x2000744e + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x40503d01 + PTP_CLOCK_GETCAPS2 = 0x40503d0a + PTP_ENABLE_PPS = 0x80043d04 + PTP_ENABLE_PPS2 = 0x80043d0d + PTP_EXTTS_REQUEST = 0x80103d02 + PTP_EXTTS_REQUEST2 = 0x80103d0b + PTP_MASK_CLEAR_ALL = 0x20003d13 + PTP_MASK_EN_SINGLE = 0x80043d14 + PTP_PEROUT_REQUEST = 0x80383d03 + PTP_PEROUT_REQUEST2 = 0x80383d0c + PTP_PIN_SETFUNC = 0x80603d07 + PTP_PIN_SETFUNC2 = 0x80603d10 + PTP_SYS_OFFSET = 0x83403d05 + PTP_SYS_OFFSET2 = 0x83403d0e + PTRACE_GETFPREGS = 0xe + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_GET_THREAD_AREA_3264 = 0xc4 + PTRACE_GET_WATCH_REGS = 0xd0 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_PEEKDATA_3264 = 0xc1 + PTRACE_PEEKTEXT_3264 = 0xc0 + PTRACE_POKEDATA_3264 = 0xc3 + PTRACE_POKETEXT_3264 = 0xc2 + PTRACE_SETFPREGS = 0xf + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SET_WATCH_REGS = 0xd1 + RLIMIT_AS = 0x6 + RLIMIT_MEMLOCK = 0x9 + RLIMIT_NOFILE = 0x5 + RLIMIT_NPROC = 0x8 + RLIMIT_RSS = 0x7 + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4008700d + RTC_EPOCH_SET = 0x8008700e + RTC_IRQP_READ = 0x4008700b + RTC_IRQP_SET = 0x8008700c + RTC_PARAM_GET = 0x80187013 + RTC_PARAM_SET = 0x80187014 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x40207011 + RTC_PLL_SET = 0x80207012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x80082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x80082104 + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x80 + SIOCATMARK = 0x40047307 + SIOCGPGRP = 0x40047309 + SIOCGSTAMPNS_NEW = 0x40108907 + SIOCGSTAMP_NEW = 0x40108906 + SIOCINQ = 0x467f + SIOCOUTQ = 0x7472 + SIOCSPGRP = 0x80047308 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x1 + SOCK_NONBLOCK = 0x80 + SOCK_STREAM = 0x2 + SOL_SOCKET = 0xffff + SO_ACCEPTCONN = 0x1009 + SO_ATTACH_BPF = 0x32 + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x20 + SO_BSDCOMPAT = 0xe + SO_BUF_LOCK = 0x48 + SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 + SO_NOFCS = 0x2b + SO_OOBINLINE = 0x100 + SO_PASSCRED = 0x11 + SO_PASSPIDFD = 0x4c + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x12 + SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d + SO_PEERSEC = 0x1e + SO_PREFER_BUSY_POLL = 0x45 + SO_PROTOCOL = 0x1028 + SO_RCVBUF = 0x1002 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x1004 + SO_RCVMARK = 0x4b + SO_RCVTIMEO = 0x1006 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x1006 + SO_RESERVE_MEM = 0x49 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x1001 + SO_SNDBUFFORCE = 0x1f + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x1005 + SO_STYLE = 0x1008 + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a + SO_TXTIME = 0x3d + SO_TYPE = 0x1008 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TCFLSH = 0x5407 + TCGETA = 0x5401 + TCGETS = 0x540d + TCGETS2 = 0x4030542a + TCSAFLUSH = 0x5410 + TCSBRK = 0x5405 + TCSBRKP = 0x5486 + TCSETA = 0x5402 + TCSETAF = 0x5404 + TCSETAW = 0x5403 + TCSETS = 0x540e + TCSETS2 = 0x8030542b + TCSETSF = 0x5410 + TCSETSF2 = 0x8030542d + TCSETSW = 0x540f + TCSETSW2 = 0x8030542c + TCXONC = 0x5406 + TFD_CLOEXEC = 0x80000 + TFD_NONBLOCK = 0x80 + TIOCCBRK = 0x5428 + TIOCCONS = 0x80047478 + TIOCEXCL = 0x740d + TIOCGDEV = 0x40045432 + TIOCGETD = 0x7400 + TIOCGETP = 0x7408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x5492 + TIOCGISO7816 = 0x40285442 + TIOCGLCKTRMIOS = 0x548b + TIOCGLTC = 0x7474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 + TIOCGRS485 = 0x4020542e + TIOCGSERIAL = 0x5484 + TIOCGSID = 0x7416 + TIOCGSOFTCAR = 0x5481 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x467f + TIOCLINUX = 0x5483 + TIOCMBIC = 0x741c + TIOCMBIS = 0x741b + TIOCMGET = 0x741d + TIOCMIWAIT = 0x5491 + TIOCMSET = 0x741a + TIOCM_CAR = 0x100 + TIOCM_CD = 0x100 + TIOCM_CTS = 0x40 + TIOCM_DSR = 0x400 + TIOCM_RI = 0x200 + TIOCM_RNG = 0x200 + TIOCM_SR = 0x20 + TIOCM_ST = 0x10 + TIOCNOTTY = 0x5471 + TIOCNXCL = 0x740e + TIOCOUTQ = 0x7472 + TIOCPKT = 0x5470 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x5480 + TIOCSERCONFIG = 0x5488 + TIOCSERGETLSR = 0x548e + TIOCSERGETMULTI = 0x548f + TIOCSERGSTRUCT = 0x548d + TIOCSERGWILD = 0x5489 + TIOCSERSETMULTI = 0x5490 + TIOCSERSWILD = 0x548a + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x7401 + TIOCSETN = 0x740a + TIOCSETP = 0x7409 + TIOCSIG = 0x80045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x548c + TIOCSLTC = 0x7475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0xc020542f + TIOCSSERIAL = 0x5485 + TIOCSSOFTCAR = 0x5482 + TIOCSTI = 0x5472 + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x8000 + TUNATTACHFILTER = 0x801054d5 + TUNDETACHFILTER = 0x801054d6 + TUNGETDEVNETNS = 0x200054e3 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x401054db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRPEB = 0x80046f04 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCSPEB = 0x80046f05 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + VDISCARD = 0xd + VEOF = 0x10 + VEOL = 0x11 + VEOL2 = 0x6 + VMIN = 0x4 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VSWTCH = 0x7 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WORDSIZE = 0x40 + XCASE = 0x4 + XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x40804804 + _HIDIOCGRAWPHYS = 0x40404805 + _HIDIOCGRAWUNIQ = 0x40404808 +) + +// Errors +const ( + EADDRINUSE = syscall.Errno(0x7d) + EADDRNOTAVAIL = syscall.Errno(0x7e) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x7c) + EALREADY = syscall.Errno(0x95) + EBADE = syscall.Errno(0x32) + EBADFD = syscall.Errno(0x51) + EBADMSG = syscall.Errno(0x4d) + EBADR = syscall.Errno(0x33) + EBADRQC = syscall.Errno(0x36) + EBADSLT = syscall.Errno(0x37) + EBFONT = syscall.Errno(0x3b) + ECANCELED = syscall.Errno(0x9e) + ECHRNG = syscall.Errno(0x25) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x82) + ECONNREFUSED = syscall.Errno(0x92) + ECONNRESET = syscall.Errno(0x83) + EDEADLK = syscall.Errno(0x2d) + EDEADLOCK = syscall.Errno(0x38) + EDESTADDRREQ = syscall.Errno(0x60) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x46d) + EHOSTDOWN = syscall.Errno(0x93) + EHOSTUNREACH = syscall.Errno(0x94) + EHWPOISON = syscall.Errno(0xa8) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x58) + EINIT = syscall.Errno(0x8d) + EINPROGRESS = syscall.Errno(0x96) + EISCONN = syscall.Errno(0x85) + EISNAM = syscall.Errno(0x8b) + EKEYEXPIRED = syscall.Errno(0xa2) + EKEYREJECTED = syscall.Errno(0xa4) + EKEYREVOKED = syscall.Errno(0xa3) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELIBACC = syscall.Errno(0x53) + ELIBBAD = syscall.Errno(0x54) + ELIBEXEC = syscall.Errno(0x57) + ELIBMAX = syscall.Errno(0x56) + ELIBSCN = syscall.Errno(0x55) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x5a) + EMEDIUMTYPE = syscall.Errno(0xa0) + EMSGSIZE = syscall.Errno(0x61) + EMULTIHOP = syscall.Errno(0x4a) + ENAMETOOLONG = syscall.Errno(0x4e) + ENAVAIL = syscall.Errno(0x8a) + ENETDOWN = syscall.Errno(0x7f) + ENETRESET = syscall.Errno(0x81) + ENETUNREACH = syscall.Errno(0x80) + ENOANO = syscall.Errno(0x35) + ENOBUFS = syscall.Errno(0x84) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x3d) + ENOKEY = syscall.Errno(0xa1) + ENOLCK = syscall.Errno(0x2e) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x9f) + ENOMSG = syscall.Errno(0x23) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x63) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x59) + ENOTCONN = syscall.Errno(0x86) + ENOTEMPTY = syscall.Errno(0x5d) + ENOTNAM = syscall.Errno(0x89) + ENOTRECOVERABLE = syscall.Errno(0xa6) + ENOTSOCK = syscall.Errno(0x5f) + ENOTSUP = syscall.Errno(0x7a) + ENOTUNIQ = syscall.Errno(0x50) + EOPNOTSUPP = syscall.Errno(0x7a) + EOVERFLOW = syscall.Errno(0x4f) + EOWNERDEAD = syscall.Errno(0xa5) + EPFNOSUPPORT = syscall.Errno(0x7b) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x78) + EPROTOTYPE = syscall.Errno(0x62) + EREMCHG = syscall.Errno(0x52) + EREMDEV = syscall.Errno(0x8e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x8c) + ERESTART = syscall.Errno(0x5b) + ERFKILL = syscall.Errno(0xa7) + ESHUTDOWN = syscall.Errno(0x8f) + ESOCKTNOSUPPORT = syscall.Errno(0x79) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x97) + ESTRPIPE = syscall.Errno(0x5c) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x91) + ETOOMANYREFS = syscall.Errno(0x90) + EUCLEAN = syscall.Errno(0x87) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x5e) + EXFULL = syscall.Errno(0x34) +) + +// Signals +const ( + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x12) + SIGCLD = syscall.Signal(0x12) + SIGCONT = syscall.Signal(0x19) + SIGEMT = syscall.Signal(0x7) + SIGIO = syscall.Signal(0x16) + SIGPOLL = syscall.Signal(0x16) + SIGPROF = syscall.Signal(0x1d) + SIGPWR = syscall.Signal(0x13) + SIGSTOP = syscall.Signal(0x17) + SIGSYS = syscall.Signal(0xc) + SIGTSTP = syscall.Signal(0x18) + SIGTTIN = syscall.Signal(0x1a) + SIGTTOU = syscall.Signal(0x1b) + SIGURG = syscall.Signal(0x15) + SIGUSR1 = syscall.Signal(0x10) + SIGUSR2 = syscall.Signal(0x11) + SIGVTALRM = syscall.Signal(0x1c) + SIGWINCH = syscall.Signal(0x14) + SIGXCPU = syscall.Signal(0x1e) + SIGXFSZ = syscall.Signal(0x1f) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "resource deadlock avoided"}, + {46, "ENOLCK", "no locks available"}, + {50, "EBADE", "invalid exchange"}, + {51, "EBADR", "invalid request descriptor"}, + {52, "EXFULL", "exchange full"}, + {53, "ENOANO", "no anode"}, + {54, "EBADRQC", "invalid request code"}, + {55, "EBADSLT", "invalid slot"}, + {56, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EMULTIHOP", "multihop attempted"}, + {77, "EBADMSG", "bad message"}, + {78, "ENAMETOOLONG", "file name too long"}, + {79, "EOVERFLOW", "value too large for defined data type"}, + {80, "ENOTUNIQ", "name not unique on network"}, + {81, "EBADFD", "file descriptor in bad state"}, + {82, "EREMCHG", "remote address changed"}, + {83, "ELIBACC", "can not access a needed shared library"}, + {84, "ELIBBAD", "accessing a corrupted shared library"}, + {85, "ELIBSCN", ".lib section in a.out corrupted"}, + {86, "ELIBMAX", "attempting to link in too many shared libraries"}, + {87, "ELIBEXEC", "cannot exec a shared library directly"}, + {88, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {89, "ENOSYS", "function not implemented"}, + {90, "ELOOP", "too many levels of symbolic links"}, + {91, "ERESTART", "interrupted system call should be restarted"}, + {92, "ESTRPIPE", "streams pipe error"}, + {93, "ENOTEMPTY", "directory not empty"}, + {94, "EUSERS", "too many users"}, + {95, "ENOTSOCK", "socket operation on non-socket"}, + {96, "EDESTADDRREQ", "destination address required"}, + {97, "EMSGSIZE", "message too long"}, + {98, "EPROTOTYPE", "protocol wrong type for socket"}, + {99, "ENOPROTOOPT", "protocol not available"}, + {120, "EPROTONOSUPPORT", "protocol not supported"}, + {121, "ESOCKTNOSUPPORT", "socket type not supported"}, + {122, "ENOTSUP", "operation not supported"}, + {123, "EPFNOSUPPORT", "protocol family not supported"}, + {124, "EAFNOSUPPORT", "address family not supported by protocol"}, + {125, "EADDRINUSE", "address already in use"}, + {126, "EADDRNOTAVAIL", "cannot assign requested address"}, + {127, "ENETDOWN", "network is down"}, + {128, "ENETUNREACH", "network is unreachable"}, + {129, "ENETRESET", "network dropped connection on reset"}, + {130, "ECONNABORTED", "software caused connection abort"}, + {131, "ECONNRESET", "connection reset by peer"}, + {132, "ENOBUFS", "no buffer space available"}, + {133, "EISCONN", "transport endpoint is already connected"}, + {134, "ENOTCONN", "transport endpoint is not connected"}, + {135, "EUCLEAN", "structure needs cleaning"}, + {137, "ENOTNAM", "not a XENIX named type file"}, + {138, "ENAVAIL", "no XENIX semaphores available"}, + {139, "EISNAM", "is a named type file"}, + {140, "EREMOTEIO", "remote I/O error"}, + {141, "EINIT", "unknown error 141"}, + {142, "EREMDEV", "unknown error 142"}, + {143, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {144, "ETOOMANYREFS", "too many references: cannot splice"}, + {145, "ETIMEDOUT", "connection timed out"}, + {146, "ECONNREFUSED", "connection refused"}, + {147, "EHOSTDOWN", "host is down"}, + {148, "EHOSTUNREACH", "no route to host"}, + {149, "EALREADY", "operation already in progress"}, + {150, "EINPROGRESS", "operation now in progress"}, + {151, "ESTALE", "stale file handle"}, + {158, "ECANCELED", "operation canceled"}, + {159, "ENOMEDIUM", "no medium found"}, + {160, "EMEDIUMTYPE", "wrong medium type"}, + {161, "ENOKEY", "required key not available"}, + {162, "EKEYEXPIRED", "key has expired"}, + {163, "EKEYREVOKED", "key has been revoked"}, + {164, "EKEYREJECTED", "key was rejected by service"}, + {165, "EOWNERDEAD", "owner died"}, + {166, "ENOTRECOVERABLE", "state not recoverable"}, + {167, "ERFKILL", "operation not possible due to RF-kill"}, + {168, "EHWPOISON", "memory page has hardware error"}, + {1133, "EDQUOT", "disk quota exceeded"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGUSR1", "user defined signal 1"}, + {17, "SIGUSR2", "user defined signal 2"}, + {18, "SIGCHLD", "child exited"}, + {19, "SIGPWR", "power failure"}, + {20, "SIGWINCH", "window changed"}, + {21, "SIGURG", "urgent I/O condition"}, + {22, "SIGIO", "I/O possible"}, + {23, "SIGSTOP", "stopped (signal)"}, + {24, "SIGTSTP", "stopped"}, + {25, "SIGCONT", "continued"}, + {26, "SIGTTIN", "stopped (tty input)"}, + {27, "SIGTTOU", "stopped (tty output)"}, + {28, "SIGVTALRM", "virtual timer expired"}, + {29, "SIGPROF", "profiling timer expired"}, + {30, "SIGXCPU", "CPU time limit exceeded"}, + {31, "SIGXFSZ", "file size limit exceeded"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/tests/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go new file mode 100644 index 000000000..9bacdf1e2 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go @@ -0,0 +1,879 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/mipsle/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build mipsle && linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/mipsle/include _const.go + +package unix + +import "syscall" + +const ( + B1000000 = 0x1008 + B115200 = 0x1002 + B1152000 = 0x1009 + B1500000 = 0x100a + B2000000 = 0x100b + B230400 = 0x1003 + B2500000 = 0x100c + B3000000 = 0x100d + B3500000 = 0x100e + B4000000 = 0x100f + B460800 = 0x1004 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B921600 = 0x1007 + BLKALIGNOFF = 0x2000127a + BLKBSZGET = 0x40041270 + BLKBSZSET = 0x80041271 + BLKDISCARD = 0x20001277 + BLKDISCARDZEROES = 0x2000127c + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETDISKSEQ = 0x40081280 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40041272 + BLKIOMIN = 0x20001278 + BLKIOOPT = 0x20001279 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKROTATIONAL = 0x2000127e + BLKRRPART = 0x2000125f + BLKSECDISCARD = 0x2000127d + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BLKZEROOUT = 0x2000127f + BOTHER = 0x1000 + BS1 = 0x2000 + BSDLY = 0x2000 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIZE = 0x30 + CSTOPB = 0x40 + ECCGETLAYOUT = 0x41484d11 + ECCGETSTATS = 0x40104d12 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x80 + EPIOCGPARAMS = 0x40088a02 + EPIOCSPARAMS = 0x80088a01 + EPOLL_CLOEXEC = 0x80000 + EXTPROC = 0x10000 + FF1 = 0x8000 + FFDLY = 0x8000 + FICLONE = 0x80049409 + FICLONERANGE = 0x8020940d + FLUSHO = 0x2000 + FS_IOC_ENABLE_VERITY = 0x80806685 + FS_IOC_GETFLAGS = 0x40046601 + FS_IOC_GET_ENCRYPTION_NONCE = 0x4010661b + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SETFLAGS = 0x80046602 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + F_GETLK = 0x21 + F_GETLK64 = 0x21 + F_GETOWN = 0x17 + F_RDLCK = 0x0 + F_SETLK = 0x22 + F_SETLK64 = 0x22 + F_SETLKW = 0x23 + F_SETLKW64 = 0x23 + F_SETOWN = 0x18 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 + HIDIOCREVOKE = 0x8004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x100 + IN_CLOEXEC = 0x80000 + IN_NONBLOCK = 0x80 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + ISIG = 0x1 + IUCLC = 0x200 + IXOFF = 0x1000 + IXON = 0x400 + MAP_ANON = 0x800 + MAP_ANONYMOUS = 0x800 + MAP_DENYWRITE = 0x2000 + MAP_EXECUTABLE = 0x4000 + MAP_GROWSDOWN = 0x1000 + MAP_HUGETLB = 0x80000 + MAP_LOCKED = 0x8000 + MAP_NONBLOCK = 0x20000 + MAP_NORESERVE = 0x400 + MAP_POPULATE = 0x10000 + MAP_RENAME = 0x800 + MAP_STACK = 0x40000 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MEMERASE = 0x80084d02 + MEMERASE64 = 0x80104d14 + MEMGETBADBLOCK = 0x80084d0b + MEMGETINFO = 0x40204d01 + MEMGETOOBSEL = 0x40c84d0a + MEMGETREGIONCOUNT = 0x40044d07 + MEMISLOCKED = 0x40084d17 + MEMLOCK = 0x80084d05 + MEMREAD = 0xc0404d1a + MEMREADOOB = 0xc00c4d04 + MEMSETBADBLOCK = 0x80084d0c + MEMUNLOCK = 0x80084d06 + MEMWRITEOOB = 0xc00c4d03 + MTDFILEMODE = 0x20004d13 + NFDBITS = 0x20 + NLDLY = 0x100 + NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x4008b705 + NS_GET_NSTYPE = 0x2000b703 + NS_GET_OWNER_UID = 0x2000b704 + NS_GET_PARENT = 0x2000b702 + NS_GET_PID_FROM_PIDNS = 0x4004b706 + NS_GET_PID_IN_PIDNS = 0x4004b708 + NS_GET_TGID_FROM_PIDNS = 0x4004b707 + NS_GET_TGID_IN_PIDNS = 0x4004b709 + NS_GET_USERNS = 0x2000b701 + OLCUC = 0x2 + ONLCR = 0x4 + OTPERASE = 0x800c4d19 + OTPGETREGIONCOUNT = 0x80044d0e + OTPGETREGIONINFO = 0x800c4d0f + OTPLOCK = 0x400c4d10 + OTPSELECT = 0x40044d0d + O_APPEND = 0x8 + O_ASYNC = 0x1000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x100 + O_DIRECT = 0x8000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x10 + O_EXCL = 0x400 + O_FSYNC = 0x4010 + O_LARGEFILE = 0x2000 + O_NDELAY = 0x80 + O_NOATIME = 0x40000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x80 + O_PATH = 0x200000 + O_RSYNC = 0x4010 + O_SYNC = 0x4010 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + PARENB = 0x100 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40042407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8004240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc004240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80042406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCBRIDGECHAN = 0x80047435 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4008743f + PPPIOCGIDLE32 = 0x4008743f + PPPIOCGIDLE64 = 0x4010743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCSACTIVE = 0x80087446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x800c744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80087447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCUNBRIDGECHAN = 0x20007434 + PPPIOCXFERUNIT = 0x2000744e + PR_SET_PTRACER_ANY = 0xffffffff + PTP_CLOCK_GETCAPS = 0x40503d01 + PTP_CLOCK_GETCAPS2 = 0x40503d0a + PTP_ENABLE_PPS = 0x80043d04 + PTP_ENABLE_PPS2 = 0x80043d0d + PTP_EXTTS_REQUEST = 0x80103d02 + PTP_EXTTS_REQUEST2 = 0x80103d0b + PTP_MASK_CLEAR_ALL = 0x20003d13 + PTP_MASK_EN_SINGLE = 0x80043d14 + PTP_PEROUT_REQUEST = 0x80383d03 + PTP_PEROUT_REQUEST2 = 0x80383d0c + PTP_PIN_SETFUNC = 0x80603d07 + PTP_PIN_SETFUNC2 = 0x80603d10 + PTP_SYS_OFFSET = 0x83403d05 + PTP_SYS_OFFSET2 = 0x83403d0e + PTRACE_GETFPREGS = 0xe + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_GET_THREAD_AREA_3264 = 0xc4 + PTRACE_GET_WATCH_REGS = 0xd0 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_PEEKDATA_3264 = 0xc1 + PTRACE_PEEKTEXT_3264 = 0xc0 + PTRACE_POKEDATA_3264 = 0xc3 + PTRACE_POKETEXT_3264 = 0xc2 + PTRACE_SETFPREGS = 0xf + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SET_WATCH_REGS = 0xd1 + RLIMIT_AS = 0x6 + RLIMIT_MEMLOCK = 0x9 + RLIMIT_NOFILE = 0x5 + RLIMIT_NPROC = 0x8 + RLIMIT_RSS = 0x7 + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4004700d + RTC_EPOCH_SET = 0x8004700e + RTC_IRQP_READ = 0x4004700b + RTC_IRQP_SET = 0x8004700c + RTC_PARAM_GET = 0x80187013 + RTC_PARAM_SET = 0x80187014 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x401c7011 + RTC_PLL_SET = 0x801c7012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x80082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x80082104 + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x80 + SIOCATMARK = 0x40047307 + SIOCGPGRP = 0x40047309 + SIOCGSTAMPNS_NEW = 0x40108907 + SIOCGSTAMP_NEW = 0x40108906 + SIOCINQ = 0x467f + SIOCOUTQ = 0x7472 + SIOCSPGRP = 0x80047308 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x1 + SOCK_NONBLOCK = 0x80 + SOCK_STREAM = 0x2 + SOL_SOCKET = 0xffff + SO_ACCEPTCONN = 0x1009 + SO_ATTACH_BPF = 0x32 + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x20 + SO_BSDCOMPAT = 0xe + SO_BUF_LOCK = 0x48 + SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 + SO_NOFCS = 0x2b + SO_OOBINLINE = 0x100 + SO_PASSCRED = 0x11 + SO_PASSPIDFD = 0x4c + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x12 + SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d + SO_PEERSEC = 0x1e + SO_PREFER_BUSY_POLL = 0x45 + SO_PROTOCOL = 0x1028 + SO_RCVBUF = 0x1002 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x1004 + SO_RCVMARK = 0x4b + SO_RCVTIMEO = 0x1006 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x1006 + SO_RESERVE_MEM = 0x49 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x1001 + SO_SNDBUFFORCE = 0x1f + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x1005 + SO_STYLE = 0x1008 + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a + SO_TXTIME = 0x3d + SO_TYPE = 0x1008 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TCFLSH = 0x5407 + TCGETA = 0x5401 + TCGETS = 0x540d + TCGETS2 = 0x4030542a + TCSAFLUSH = 0x5410 + TCSBRK = 0x5405 + TCSBRKP = 0x5486 + TCSETA = 0x5402 + TCSETAF = 0x5404 + TCSETAW = 0x5403 + TCSETS = 0x540e + TCSETS2 = 0x8030542b + TCSETSF = 0x5410 + TCSETSF2 = 0x8030542d + TCSETSW = 0x540f + TCSETSW2 = 0x8030542c + TCXONC = 0x5406 + TFD_CLOEXEC = 0x80000 + TFD_NONBLOCK = 0x80 + TIOCCBRK = 0x5428 + TIOCCONS = 0x80047478 + TIOCEXCL = 0x740d + TIOCGDEV = 0x40045432 + TIOCGETD = 0x7400 + TIOCGETP = 0x7408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x5492 + TIOCGISO7816 = 0x40285442 + TIOCGLCKTRMIOS = 0x548b + TIOCGLTC = 0x7474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 + TIOCGRS485 = 0x4020542e + TIOCGSERIAL = 0x5484 + TIOCGSID = 0x7416 + TIOCGSOFTCAR = 0x5481 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x467f + TIOCLINUX = 0x5483 + TIOCMBIC = 0x741c + TIOCMBIS = 0x741b + TIOCMGET = 0x741d + TIOCMIWAIT = 0x5491 + TIOCMSET = 0x741a + TIOCM_CAR = 0x100 + TIOCM_CD = 0x100 + TIOCM_CTS = 0x40 + TIOCM_DSR = 0x400 + TIOCM_RI = 0x200 + TIOCM_RNG = 0x200 + TIOCM_SR = 0x20 + TIOCM_ST = 0x10 + TIOCNOTTY = 0x5471 + TIOCNXCL = 0x740e + TIOCOUTQ = 0x7472 + TIOCPKT = 0x5470 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x5480 + TIOCSERCONFIG = 0x5488 + TIOCSERGETLSR = 0x548e + TIOCSERGETMULTI = 0x548f + TIOCSERGSTRUCT = 0x548d + TIOCSERGWILD = 0x5489 + TIOCSERSETMULTI = 0x5490 + TIOCSERSWILD = 0x548a + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x7401 + TIOCSETN = 0x740a + TIOCSETP = 0x7409 + TIOCSIG = 0x80045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x548c + TIOCSLTC = 0x7475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0xc020542f + TIOCSSERIAL = 0x5485 + TIOCSSOFTCAR = 0x5482 + TIOCSTI = 0x5472 + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x8000 + TUNATTACHFILTER = 0x800854d5 + TUNDETACHFILTER = 0x800854d6 + TUNGETDEVNETNS = 0x200054e3 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x400854db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRPEB = 0x80046f04 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCSPEB = 0x80046f05 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + VDISCARD = 0xd + VEOF = 0x10 + VEOL = 0x11 + VEOL2 = 0x6 + VMIN = 0x4 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VSWTCH = 0x7 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WORDSIZE = 0x20 + XCASE = 0x4 + XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x40804804 + _HIDIOCGRAWPHYS = 0x40404805 + _HIDIOCGRAWUNIQ = 0x40404808 +) + +// Errors +const ( + EADDRINUSE = syscall.Errno(0x7d) + EADDRNOTAVAIL = syscall.Errno(0x7e) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x7c) + EALREADY = syscall.Errno(0x95) + EBADE = syscall.Errno(0x32) + EBADFD = syscall.Errno(0x51) + EBADMSG = syscall.Errno(0x4d) + EBADR = syscall.Errno(0x33) + EBADRQC = syscall.Errno(0x36) + EBADSLT = syscall.Errno(0x37) + EBFONT = syscall.Errno(0x3b) + ECANCELED = syscall.Errno(0x9e) + ECHRNG = syscall.Errno(0x25) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x82) + ECONNREFUSED = syscall.Errno(0x92) + ECONNRESET = syscall.Errno(0x83) + EDEADLK = syscall.Errno(0x2d) + EDEADLOCK = syscall.Errno(0x38) + EDESTADDRREQ = syscall.Errno(0x60) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x46d) + EHOSTDOWN = syscall.Errno(0x93) + EHOSTUNREACH = syscall.Errno(0x94) + EHWPOISON = syscall.Errno(0xa8) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x58) + EINIT = syscall.Errno(0x8d) + EINPROGRESS = syscall.Errno(0x96) + EISCONN = syscall.Errno(0x85) + EISNAM = syscall.Errno(0x8b) + EKEYEXPIRED = syscall.Errno(0xa2) + EKEYREJECTED = syscall.Errno(0xa4) + EKEYREVOKED = syscall.Errno(0xa3) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELIBACC = syscall.Errno(0x53) + ELIBBAD = syscall.Errno(0x54) + ELIBEXEC = syscall.Errno(0x57) + ELIBMAX = syscall.Errno(0x56) + ELIBSCN = syscall.Errno(0x55) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x5a) + EMEDIUMTYPE = syscall.Errno(0xa0) + EMSGSIZE = syscall.Errno(0x61) + EMULTIHOP = syscall.Errno(0x4a) + ENAMETOOLONG = syscall.Errno(0x4e) + ENAVAIL = syscall.Errno(0x8a) + ENETDOWN = syscall.Errno(0x7f) + ENETRESET = syscall.Errno(0x81) + ENETUNREACH = syscall.Errno(0x80) + ENOANO = syscall.Errno(0x35) + ENOBUFS = syscall.Errno(0x84) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x3d) + ENOKEY = syscall.Errno(0xa1) + ENOLCK = syscall.Errno(0x2e) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x9f) + ENOMSG = syscall.Errno(0x23) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x63) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x59) + ENOTCONN = syscall.Errno(0x86) + ENOTEMPTY = syscall.Errno(0x5d) + ENOTNAM = syscall.Errno(0x89) + ENOTRECOVERABLE = syscall.Errno(0xa6) + ENOTSOCK = syscall.Errno(0x5f) + ENOTSUP = syscall.Errno(0x7a) + ENOTUNIQ = syscall.Errno(0x50) + EOPNOTSUPP = syscall.Errno(0x7a) + EOVERFLOW = syscall.Errno(0x4f) + EOWNERDEAD = syscall.Errno(0xa5) + EPFNOSUPPORT = syscall.Errno(0x7b) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x78) + EPROTOTYPE = syscall.Errno(0x62) + EREMCHG = syscall.Errno(0x52) + EREMDEV = syscall.Errno(0x8e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x8c) + ERESTART = syscall.Errno(0x5b) + ERFKILL = syscall.Errno(0xa7) + ESHUTDOWN = syscall.Errno(0x8f) + ESOCKTNOSUPPORT = syscall.Errno(0x79) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x97) + ESTRPIPE = syscall.Errno(0x5c) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x91) + ETOOMANYREFS = syscall.Errno(0x90) + EUCLEAN = syscall.Errno(0x87) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x5e) + EXFULL = syscall.Errno(0x34) +) + +// Signals +const ( + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x12) + SIGCLD = syscall.Signal(0x12) + SIGCONT = syscall.Signal(0x19) + SIGEMT = syscall.Signal(0x7) + SIGIO = syscall.Signal(0x16) + SIGPOLL = syscall.Signal(0x16) + SIGPROF = syscall.Signal(0x1d) + SIGPWR = syscall.Signal(0x13) + SIGSTOP = syscall.Signal(0x17) + SIGSYS = syscall.Signal(0xc) + SIGTSTP = syscall.Signal(0x18) + SIGTTIN = syscall.Signal(0x1a) + SIGTTOU = syscall.Signal(0x1b) + SIGURG = syscall.Signal(0x15) + SIGUSR1 = syscall.Signal(0x10) + SIGUSR2 = syscall.Signal(0x11) + SIGVTALRM = syscall.Signal(0x1c) + SIGWINCH = syscall.Signal(0x14) + SIGXCPU = syscall.Signal(0x1e) + SIGXFSZ = syscall.Signal(0x1f) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "resource deadlock avoided"}, + {46, "ENOLCK", "no locks available"}, + {50, "EBADE", "invalid exchange"}, + {51, "EBADR", "invalid request descriptor"}, + {52, "EXFULL", "exchange full"}, + {53, "ENOANO", "no anode"}, + {54, "EBADRQC", "invalid request code"}, + {55, "EBADSLT", "invalid slot"}, + {56, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EMULTIHOP", "multihop attempted"}, + {77, "EBADMSG", "bad message"}, + {78, "ENAMETOOLONG", "file name too long"}, + {79, "EOVERFLOW", "value too large for defined data type"}, + {80, "ENOTUNIQ", "name not unique on network"}, + {81, "EBADFD", "file descriptor in bad state"}, + {82, "EREMCHG", "remote address changed"}, + {83, "ELIBACC", "can not access a needed shared library"}, + {84, "ELIBBAD", "accessing a corrupted shared library"}, + {85, "ELIBSCN", ".lib section in a.out corrupted"}, + {86, "ELIBMAX", "attempting to link in too many shared libraries"}, + {87, "ELIBEXEC", "cannot exec a shared library directly"}, + {88, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {89, "ENOSYS", "function not implemented"}, + {90, "ELOOP", "too many levels of symbolic links"}, + {91, "ERESTART", "interrupted system call should be restarted"}, + {92, "ESTRPIPE", "streams pipe error"}, + {93, "ENOTEMPTY", "directory not empty"}, + {94, "EUSERS", "too many users"}, + {95, "ENOTSOCK", "socket operation on non-socket"}, + {96, "EDESTADDRREQ", "destination address required"}, + {97, "EMSGSIZE", "message too long"}, + {98, "EPROTOTYPE", "protocol wrong type for socket"}, + {99, "ENOPROTOOPT", "protocol not available"}, + {120, "EPROTONOSUPPORT", "protocol not supported"}, + {121, "ESOCKTNOSUPPORT", "socket type not supported"}, + {122, "ENOTSUP", "operation not supported"}, + {123, "EPFNOSUPPORT", "protocol family not supported"}, + {124, "EAFNOSUPPORT", "address family not supported by protocol"}, + {125, "EADDRINUSE", "address already in use"}, + {126, "EADDRNOTAVAIL", "cannot assign requested address"}, + {127, "ENETDOWN", "network is down"}, + {128, "ENETUNREACH", "network is unreachable"}, + {129, "ENETRESET", "network dropped connection on reset"}, + {130, "ECONNABORTED", "software caused connection abort"}, + {131, "ECONNRESET", "connection reset by peer"}, + {132, "ENOBUFS", "no buffer space available"}, + {133, "EISCONN", "transport endpoint is already connected"}, + {134, "ENOTCONN", "transport endpoint is not connected"}, + {135, "EUCLEAN", "structure needs cleaning"}, + {137, "ENOTNAM", "not a XENIX named type file"}, + {138, "ENAVAIL", "no XENIX semaphores available"}, + {139, "EISNAM", "is a named type file"}, + {140, "EREMOTEIO", "remote I/O error"}, + {141, "EINIT", "unknown error 141"}, + {142, "EREMDEV", "unknown error 142"}, + {143, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {144, "ETOOMANYREFS", "too many references: cannot splice"}, + {145, "ETIMEDOUT", "connection timed out"}, + {146, "ECONNREFUSED", "connection refused"}, + {147, "EHOSTDOWN", "host is down"}, + {148, "EHOSTUNREACH", "no route to host"}, + {149, "EALREADY", "operation already in progress"}, + {150, "EINPROGRESS", "operation now in progress"}, + {151, "ESTALE", "stale file handle"}, + {158, "ECANCELED", "operation canceled"}, + {159, "ENOMEDIUM", "no medium found"}, + {160, "EMEDIUMTYPE", "wrong medium type"}, + {161, "ENOKEY", "required key not available"}, + {162, "EKEYEXPIRED", "key has expired"}, + {163, "EKEYREVOKED", "key has been revoked"}, + {164, "EKEYREJECTED", "key was rejected by service"}, + {165, "EOWNERDEAD", "owner died"}, + {166, "ENOTRECOVERABLE", "state not recoverable"}, + {167, "ERFKILL", "operation not possible due to RF-kill"}, + {168, "EHWPOISON", "memory page has hardware error"}, + {1133, "EDQUOT", "disk quota exceeded"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGUSR1", "user defined signal 1"}, + {17, "SIGUSR2", "user defined signal 2"}, + {18, "SIGCHLD", "child exited"}, + {19, "SIGPWR", "power failure"}, + {20, "SIGWINCH", "window changed"}, + {21, "SIGURG", "urgent I/O condition"}, + {22, "SIGIO", "I/O possible"}, + {23, "SIGSTOP", "stopped (signal)"}, + {24, "SIGTSTP", "stopped"}, + {25, "SIGCONT", "continued"}, + {26, "SIGTTIN", "stopped (tty input)"}, + {27, "SIGTTOU", "stopped (tty output)"}, + {28, "SIGVTALRM", "virtual timer expired"}, + {29, "SIGPROF", "profiling timer expired"}, + {30, "SIGXCPU", "CPU time limit exceeded"}, + {31, "SIGXFSZ", "file size limit exceeded"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go b/tests/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go new file mode 100644 index 000000000..c22427261 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go @@ -0,0 +1,931 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/ppc/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc && linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/ppc/include _const.go + +package unix + +import "syscall" + +const ( + B1000000 = 0x17 + B115200 = 0x11 + B1152000 = 0x18 + B1500000 = 0x19 + B2000000 = 0x1a + B230400 = 0x12 + B2500000 = 0x1b + B3000000 = 0x1c + B3500000 = 0x1d + B4000000 = 0x1e + B460800 = 0x13 + B500000 = 0x14 + B57600 = 0x10 + B576000 = 0x15 + B921600 = 0x16 + BLKALIGNOFF = 0x2000127a + BLKBSZGET = 0x40041270 + BLKBSZSET = 0x80041271 + BLKDISCARD = 0x20001277 + BLKDISCARDZEROES = 0x2000127c + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETDISKSEQ = 0x40081280 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40041272 + BLKIOMIN = 0x20001278 + BLKIOOPT = 0x20001279 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKROTATIONAL = 0x2000127e + BLKRRPART = 0x2000125f + BLKSECDISCARD = 0x2000127d + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BLKZEROOUT = 0x2000127f + BOTHER = 0x1f + BS1 = 0x8000 + BSDLY = 0x8000 + CBAUD = 0xff + CBAUDEX = 0x0 + CIBAUD = 0xff0000 + CLOCAL = 0x8000 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRDLY = 0x3000 + CREAD = 0x800 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTOPB = 0x400 + ECCGETLAYOUT = 0x41484d11 + ECCGETSTATS = 0x40104d12 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x40088a02 + EPIOCSPARAMS = 0x80088a01 + EPOLL_CLOEXEC = 0x80000 + EXTPROC = 0x10000000 + FF1 = 0x4000 + FFDLY = 0x4000 + FICLONE = 0x80049409 + FICLONERANGE = 0x8020940d + FLUSHO = 0x800000 + FS_IOC_ENABLE_VERITY = 0x80806685 + FS_IOC_GETFLAGS = 0x40046601 + FS_IOC_GET_ENCRYPTION_NONCE = 0x4010661b + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SETFLAGS = 0x80046602 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + F_GETLK = 0xc + F_GETLK64 = 0xc + F_GETOWN = 0x9 + F_RDLCK = 0x0 + F_SETLK = 0xd + F_SETLK64 = 0xd + F_SETLKW = 0xe + F_SETLKW64 = 0xe + F_SETOWN = 0x8 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 + HIDIOCREVOKE = 0x8004480d + HUPCL = 0x4000 + ICANON = 0x100 + IEXTEN = 0x400 + IN_CLOEXEC = 0x80000 + IN_NONBLOCK = 0x800 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPV6_FLOWINFO_MASK = 0xfffffff + IPV6_FLOWLABEL_MASK = 0xfffff + ISIG = 0x80 + IUCLC = 0x1000 + IXOFF = 0x400 + IXON = 0x200 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_LOCKED = 0x80 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x40 + MAP_POPULATE = 0x8000 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MCL_CURRENT = 0x2000 + MCL_FUTURE = 0x4000 + MCL_ONFAULT = 0x8000 + MEMERASE = 0x80084d02 + MEMERASE64 = 0x80104d14 + MEMGETBADBLOCK = 0x80084d0b + MEMGETINFO = 0x40204d01 + MEMGETOOBSEL = 0x40c84d0a + MEMGETREGIONCOUNT = 0x40044d07 + MEMISLOCKED = 0x40084d17 + MEMLOCK = 0x80084d05 + MEMREAD = 0xc0404d1a + MEMREADOOB = 0xc00c4d04 + MEMSETBADBLOCK = 0x80084d0c + MEMUNLOCK = 0x80084d06 + MEMWRITEOOB = 0xc00c4d03 + MTDFILEMODE = 0x20004d13 + NFDBITS = 0x20 + NL2 = 0x200 + NL3 = 0x300 + NLDLY = 0x300 + NOFLSH = 0x80000000 + NS_GET_MNTNS_ID = 0x4008b705 + NS_GET_NSTYPE = 0x2000b703 + NS_GET_OWNER_UID = 0x2000b704 + NS_GET_PARENT = 0x2000b702 + NS_GET_PID_FROM_PIDNS = 0x4004b706 + NS_GET_PID_IN_PIDNS = 0x4004b708 + NS_GET_TGID_FROM_PIDNS = 0x4004b707 + NS_GET_TGID_IN_PIDNS = 0x4004b709 + NS_GET_USERNS = 0x2000b701 + OLCUC = 0x4 + ONLCR = 0x2 + OTPERASE = 0x800c4d19 + OTPGETREGIONCOUNT = 0x80044d0e + OTPGETREGIONINFO = 0x800c4d0f + OTPLOCK = 0x400c4d10 + OTPSELECT = 0x40044d0d + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x20000 + O_DIRECTORY = 0x4000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x10000 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x8000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x404000 + O_TRUNC = 0x200 + PARENB = 0x1000 + PARODD = 0x2000 + PENDIN = 0x20000000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40042407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8004240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc004240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80042406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCBRIDGECHAN = 0x80047435 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4008743f + PPPIOCGIDLE32 = 0x4008743f + PPPIOCGIDLE64 = 0x4010743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCSACTIVE = 0x80087446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x800c744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80087447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCUNBRIDGECHAN = 0x20007434 + PPPIOCXFERUNIT = 0x2000744e + PROT_SAO = 0x10 + PR_SET_PTRACER_ANY = 0xffffffff + PTP_CLOCK_GETCAPS = 0x40503d01 + PTP_CLOCK_GETCAPS2 = 0x40503d0a + PTP_ENABLE_PPS = 0x80043d04 + PTP_ENABLE_PPS2 = 0x80043d0d + PTP_EXTTS_REQUEST = 0x80103d02 + PTP_EXTTS_REQUEST2 = 0x80103d0b + PTP_MASK_CLEAR_ALL = 0x20003d13 + PTP_MASK_EN_SINGLE = 0x80043d14 + PTP_PEROUT_REQUEST = 0x80383d03 + PTP_PEROUT_REQUEST2 = 0x80383d0c + PTP_PIN_SETFUNC = 0x80603d07 + PTP_PIN_SETFUNC2 = 0x80603d10 + PTP_SYS_OFFSET = 0x83403d05 + PTP_SYS_OFFSET2 = 0x83403d0e + PTRACE_GETEVRREGS = 0x14 + PTRACE_GETFPREGS = 0xe + PTRACE_GETREGS64 = 0x16 + PTRACE_GETVRREGS = 0x12 + PTRACE_GETVSRREGS = 0x1b + PTRACE_GET_DEBUGREG = 0x19 + PTRACE_SETEVRREGS = 0x15 + PTRACE_SETFPREGS = 0xf + PTRACE_SETREGS64 = 0x17 + PTRACE_SETVRREGS = 0x13 + PTRACE_SETVSRREGS = 0x1c + PTRACE_SET_DEBUGREG = 0x1a + PTRACE_SINGLEBLOCK = 0x100 + PTRACE_SYSEMU = 0x1d + PTRACE_SYSEMU_SINGLESTEP = 0x1e + PT_CCR = 0x26 + PT_CTR = 0x23 + PT_DAR = 0x29 + PT_DSCR = 0x2c + PT_DSISR = 0x2a + PT_FPR0 = 0x30 + PT_FPR31 = 0x6e + PT_FPSCR = 0x71 + PT_LNK = 0x24 + PT_MQ = 0x27 + PT_MSR = 0x21 + PT_NIP = 0x20 + PT_ORIG_R3 = 0x22 + PT_R0 = 0x0 + PT_R1 = 0x1 + PT_R10 = 0xa + PT_R11 = 0xb + PT_R12 = 0xc + PT_R13 = 0xd + PT_R14 = 0xe + PT_R15 = 0xf + PT_R16 = 0x10 + PT_R17 = 0x11 + PT_R18 = 0x12 + PT_R19 = 0x13 + PT_R2 = 0x2 + PT_R20 = 0x14 + PT_R21 = 0x15 + PT_R22 = 0x16 + PT_R23 = 0x17 + PT_R24 = 0x18 + PT_R25 = 0x19 + PT_R26 = 0x1a + PT_R27 = 0x1b + PT_R28 = 0x1c + PT_R29 = 0x1d + PT_R3 = 0x3 + PT_R30 = 0x1e + PT_R31 = 0x1f + PT_R4 = 0x4 + PT_R5 = 0x5 + PT_R6 = 0x6 + PT_R7 = 0x7 + PT_R8 = 0x8 + PT_R9 = 0x9 + PT_REGS_COUNT = 0x2c + PT_RESULT = 0x2b + PT_TRAP = 0x28 + PT_XER = 0x25 + RLIMIT_AS = 0x9 + RLIMIT_MEMLOCK = 0x8 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4004700d + RTC_EPOCH_SET = 0x8004700e + RTC_IRQP_READ = 0x4004700b + RTC_IRQP_SET = 0x8004700c + RTC_PARAM_GET = 0x80187013 + RTC_PARAM_SET = 0x80187014 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x401c7011 + RTC_PLL_SET = 0x801c7012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x80082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x80082104 + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SIOCATMARK = 0x8905 + SIOCGPGRP = 0x8904 + SIOCGSTAMPNS_NEW = 0x40108907 + SIOCGSTAMP_NEW = 0x40108906 + SIOCINQ = 0x4004667f + SIOCOUTQ = 0x40047473 + SIOCSPGRP = 0x8902 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x2 + SOCK_NONBLOCK = 0x800 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0x1 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUF_LOCK = 0x48 + SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 + SO_NOFCS = 0x2b + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x14 + SO_PASSPIDFD = 0x4c + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x15 + SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d + SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x10 + SO_RCVMARK = 0x4b + SO_RCVTIMEO = 0x12 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x12 + SO_RESERVE_MEM = 0x49 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x11 + SO_SNDTIMEO = 0x13 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x13 + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0xc00 + TABDLY = 0xc00 + TCFLSH = 0x2000741f + TCGETA = 0x40147417 + TCGETS = 0x402c7413 + TCSAFLUSH = 0x2 + TCSBRK = 0x2000741d + TCSBRKP = 0x5425 + TCSETA = 0x80147418 + TCSETAF = 0x8014741c + TCSETAW = 0x80147419 + TCSETS = 0x802c7414 + TCSETSF = 0x802c7416 + TCSETSW = 0x802c7415 + TCXONC = 0x2000741e + TFD_CLOEXEC = 0x80000 + TFD_NONBLOCK = 0x800 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x40045432 + TIOCGETC = 0x40067412 + TIOCGETD = 0x5424 + TIOCGETP = 0x40067408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x40285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGLTC = 0x40067474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x4004667f + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_LOOP = 0x8000 + TIOCM_OUT1 = 0x2000 + TIOCM_OUT2 = 0x4000 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x5420 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETC = 0x80067411 + TIOCSETD = 0x5423 + TIOCSETN = 0x8006740a + TIOCSETP = 0x80067409 + TIOCSIG = 0x80045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSLTC = 0x80067475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTART = 0x2000746e + TIOCSTI = 0x5412 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x400000 + TUNATTACHFILTER = 0x800854d5 + TUNDETACHFILTER = 0x800854d6 + TUNGETDEVNETNS = 0x200054e3 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x400854db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRPEB = 0x80046f04 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCSPEB = 0x80046f05 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + VDISCARD = 0x10 + VEOF = 0x4 + VEOL = 0x6 + VEOL2 = 0x8 + VMIN = 0x5 + VREPRINT = 0xb + VSTART = 0xd + VSTOP = 0xe + VSUSP = 0xc + VSWTC = 0x9 + VT1 = 0x10000 + VTDLY = 0x10000 + VTIME = 0x7 + VWERASE = 0xa + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WORDSIZE = 0x20 + XCASE = 0x4000 + XTABS = 0xc00 + _HIDIOCGRAWNAME = 0x40804804 + _HIDIOCGRAWPHYS = 0x40404805 + _HIDIOCGRAWUNIQ = 0x40404808 +) + +// Errors +const ( + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + ECANCELED = syscall.Errno(0x7d) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x3a) + EDESTADDRREQ = syscall.Errno(0x59) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EISCONN = syscall.Errno(0x6a) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTCONN = syscall.Errno(0x6b) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTUNIQ = syscall.Errno(0x4c) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPFNOSUPPORT = syscall.Errno(0x60) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGIO = syscall.Signal(0x1d) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {58, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/tests/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go new file mode 100644 index 000000000..6270c8ee1 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go @@ -0,0 +1,935 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/ppc64/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc64 && linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/ppc64/include _const.go + +package unix + +import "syscall" + +const ( + B1000000 = 0x17 + B115200 = 0x11 + B1152000 = 0x18 + B1500000 = 0x19 + B2000000 = 0x1a + B230400 = 0x12 + B2500000 = 0x1b + B3000000 = 0x1c + B3500000 = 0x1d + B4000000 = 0x1e + B460800 = 0x13 + B500000 = 0x14 + B57600 = 0x10 + B576000 = 0x15 + B921600 = 0x16 + BLKALIGNOFF = 0x2000127a + BLKBSZGET = 0x40081270 + BLKBSZSET = 0x80081271 + BLKDISCARD = 0x20001277 + BLKDISCARDZEROES = 0x2000127c + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETDISKSEQ = 0x40081280 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40081272 + BLKIOMIN = 0x20001278 + BLKIOOPT = 0x20001279 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKROTATIONAL = 0x2000127e + BLKRRPART = 0x2000125f + BLKSECDISCARD = 0x2000127d + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BLKZEROOUT = 0x2000127f + BOTHER = 0x1f + BS1 = 0x8000 + BSDLY = 0x8000 + CBAUD = 0xff + CBAUDEX = 0x0 + CIBAUD = 0xff0000 + CLOCAL = 0x8000 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRDLY = 0x3000 + CREAD = 0x800 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTOPB = 0x400 + ECCGETLAYOUT = 0x41484d11 + ECCGETSTATS = 0x40104d12 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x40088a02 + EPIOCSPARAMS = 0x80088a01 + EPOLL_CLOEXEC = 0x80000 + EXTPROC = 0x10000000 + FF1 = 0x4000 + FFDLY = 0x4000 + FICLONE = 0x80049409 + FICLONERANGE = 0x8020940d + FLUSHO = 0x800000 + FS_IOC_ENABLE_VERITY = 0x80806685 + FS_IOC_GETFLAGS = 0x40086601 + FS_IOC_GET_ENCRYPTION_NONCE = 0x4010661b + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SETFLAGS = 0x80086602 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + F_GETLK = 0x5 + F_GETLK64 = 0xc + F_GETOWN = 0x9 + F_RDLCK = 0x0 + F_SETLK = 0x6 + F_SETLK64 = 0xd + F_SETLKW = 0x7 + F_SETLKW64 = 0xe + F_SETOWN = 0x8 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 + HIDIOCREVOKE = 0x8004480d + HUPCL = 0x4000 + ICANON = 0x100 + IEXTEN = 0x400 + IN_CLOEXEC = 0x80000 + IN_NONBLOCK = 0x800 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPV6_FLOWINFO_MASK = 0xfffffff + IPV6_FLOWLABEL_MASK = 0xfffff + ISIG = 0x80 + IUCLC = 0x1000 + IXOFF = 0x400 + IXON = 0x200 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_LOCKED = 0x80 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x40 + MAP_POPULATE = 0x8000 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MCL_CURRENT = 0x2000 + MCL_FUTURE = 0x4000 + MCL_ONFAULT = 0x8000 + MEMERASE = 0x80084d02 + MEMERASE64 = 0x80104d14 + MEMGETBADBLOCK = 0x80084d0b + MEMGETINFO = 0x40204d01 + MEMGETOOBSEL = 0x40c84d0a + MEMGETREGIONCOUNT = 0x40044d07 + MEMISLOCKED = 0x40084d17 + MEMLOCK = 0x80084d05 + MEMREAD = 0xc0404d1a + MEMREADOOB = 0xc0104d04 + MEMSETBADBLOCK = 0x80084d0c + MEMUNLOCK = 0x80084d06 + MEMWRITEOOB = 0xc0104d03 + MTDFILEMODE = 0x20004d13 + NFDBITS = 0x40 + NL2 = 0x200 + NL3 = 0x300 + NLDLY = 0x300 + NOFLSH = 0x80000000 + NS_GET_MNTNS_ID = 0x4008b705 + NS_GET_NSTYPE = 0x2000b703 + NS_GET_OWNER_UID = 0x2000b704 + NS_GET_PARENT = 0x2000b702 + NS_GET_PID_FROM_PIDNS = 0x4004b706 + NS_GET_PID_IN_PIDNS = 0x4004b708 + NS_GET_TGID_FROM_PIDNS = 0x4004b707 + NS_GET_TGID_IN_PIDNS = 0x4004b709 + NS_GET_USERNS = 0x2000b701 + OLCUC = 0x4 + ONLCR = 0x2 + OTPERASE = 0x800c4d19 + OTPGETREGIONCOUNT = 0x80044d0e + OTPGETREGIONINFO = 0x800c4d0f + OTPLOCK = 0x400c4d10 + OTPSELECT = 0x40044d0d + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x20000 + O_DIRECTORY = 0x4000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x8000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x404000 + O_TRUNC = 0x200 + PARENB = 0x1000 + PARODD = 0x2000 + PENDIN = 0x20000000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCBRIDGECHAN = 0x80047435 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4010743f + PPPIOCGIDLE32 = 0x4008743f + PPPIOCGIDLE64 = 0x4010743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCSACTIVE = 0x80107446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x8010744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80107447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCUNBRIDGECHAN = 0x20007434 + PPPIOCXFERUNIT = 0x2000744e + PROT_SAO = 0x10 + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x40503d01 + PTP_CLOCK_GETCAPS2 = 0x40503d0a + PTP_ENABLE_PPS = 0x80043d04 + PTP_ENABLE_PPS2 = 0x80043d0d + PTP_EXTTS_REQUEST = 0x80103d02 + PTP_EXTTS_REQUEST2 = 0x80103d0b + PTP_MASK_CLEAR_ALL = 0x20003d13 + PTP_MASK_EN_SINGLE = 0x80043d14 + PTP_PEROUT_REQUEST = 0x80383d03 + PTP_PEROUT_REQUEST2 = 0x80383d0c + PTP_PIN_SETFUNC = 0x80603d07 + PTP_PIN_SETFUNC2 = 0x80603d10 + PTP_SYS_OFFSET = 0x83403d05 + PTP_SYS_OFFSET2 = 0x83403d0e + PTRACE_GETEVRREGS = 0x14 + PTRACE_GETFPREGS = 0xe + PTRACE_GETREGS64 = 0x16 + PTRACE_GETVRREGS = 0x12 + PTRACE_GETVSRREGS = 0x1b + PTRACE_GET_DEBUGREG = 0x19 + PTRACE_SETEVRREGS = 0x15 + PTRACE_SETFPREGS = 0xf + PTRACE_SETREGS64 = 0x17 + PTRACE_SETVRREGS = 0x13 + PTRACE_SETVSRREGS = 0x1c + PTRACE_SET_DEBUGREG = 0x1a + PTRACE_SINGLEBLOCK = 0x100 + PTRACE_SYSEMU = 0x1d + PTRACE_SYSEMU_SINGLESTEP = 0x1e + PT_CCR = 0x26 + PT_CTR = 0x23 + PT_DAR = 0x29 + PT_DSCR = 0x2c + PT_DSISR = 0x2a + PT_FPR0 = 0x30 + PT_FPSCR = 0x50 + PT_LNK = 0x24 + PT_MSR = 0x21 + PT_NIP = 0x20 + PT_ORIG_R3 = 0x22 + PT_R0 = 0x0 + PT_R1 = 0x1 + PT_R10 = 0xa + PT_R11 = 0xb + PT_R12 = 0xc + PT_R13 = 0xd + PT_R14 = 0xe + PT_R15 = 0xf + PT_R16 = 0x10 + PT_R17 = 0x11 + PT_R18 = 0x12 + PT_R19 = 0x13 + PT_R2 = 0x2 + PT_R20 = 0x14 + PT_R21 = 0x15 + PT_R22 = 0x16 + PT_R23 = 0x17 + PT_R24 = 0x18 + PT_R25 = 0x19 + PT_R26 = 0x1a + PT_R27 = 0x1b + PT_R28 = 0x1c + PT_R29 = 0x1d + PT_R3 = 0x3 + PT_R30 = 0x1e + PT_R31 = 0x1f + PT_R4 = 0x4 + PT_R5 = 0x5 + PT_R6 = 0x6 + PT_R7 = 0x7 + PT_R8 = 0x8 + PT_R9 = 0x9 + PT_REGS_COUNT = 0x2c + PT_RESULT = 0x2b + PT_SOFTE = 0x27 + PT_TRAP = 0x28 + PT_VR0 = 0x52 + PT_VRSAVE = 0x94 + PT_VSCR = 0x93 + PT_VSR0 = 0x96 + PT_VSR31 = 0xd4 + PT_XER = 0x25 + RLIMIT_AS = 0x9 + RLIMIT_MEMLOCK = 0x8 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4008700d + RTC_EPOCH_SET = 0x8008700e + RTC_IRQP_READ = 0x4008700b + RTC_IRQP_SET = 0x8008700c + RTC_PARAM_GET = 0x80187013 + RTC_PARAM_SET = 0x80187014 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x40207011 + RTC_PLL_SET = 0x80207012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x80082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x80082104 + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SIOCATMARK = 0x8905 + SIOCGPGRP = 0x8904 + SIOCGSTAMPNS_NEW = 0x40108907 + SIOCGSTAMP_NEW = 0x40108906 + SIOCINQ = 0x4004667f + SIOCOUTQ = 0x40047473 + SIOCSPGRP = 0x8902 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x2 + SOCK_NONBLOCK = 0x800 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0x1 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUF_LOCK = 0x48 + SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 + SO_NOFCS = 0x2b + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x14 + SO_PASSPIDFD = 0x4c + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x15 + SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d + SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x10 + SO_RCVMARK = 0x4b + SO_RCVTIMEO = 0x12 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x12 + SO_RESERVE_MEM = 0x49 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x11 + SO_SNDTIMEO = 0x13 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x13 + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0xc00 + TABDLY = 0xc00 + TCFLSH = 0x2000741f + TCGETA = 0x40147417 + TCGETS = 0x402c7413 + TCSAFLUSH = 0x2 + TCSBRK = 0x2000741d + TCSBRKP = 0x5425 + TCSETA = 0x80147418 + TCSETAF = 0x8014741c + TCSETAW = 0x80147419 + TCSETS = 0x802c7414 + TCSETSF = 0x802c7416 + TCSETSW = 0x802c7415 + TCXONC = 0x2000741e + TFD_CLOEXEC = 0x80000 + TFD_NONBLOCK = 0x800 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x40045432 + TIOCGETC = 0x40067412 + TIOCGETD = 0x5424 + TIOCGETP = 0x40067408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x40285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGLTC = 0x40067474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x4004667f + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_LOOP = 0x8000 + TIOCM_OUT1 = 0x2000 + TIOCM_OUT2 = 0x4000 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x5420 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETC = 0x80067411 + TIOCSETD = 0x5423 + TIOCSETN = 0x8006740a + TIOCSETP = 0x80067409 + TIOCSIG = 0x80045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSLTC = 0x80067475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTART = 0x2000746e + TIOCSTI = 0x5412 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x400000 + TUNATTACHFILTER = 0x801054d5 + TUNDETACHFILTER = 0x801054d6 + TUNGETDEVNETNS = 0x200054e3 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x401054db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRPEB = 0x80046f04 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCSPEB = 0x80046f05 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + VDISCARD = 0x10 + VEOF = 0x4 + VEOL = 0x6 + VEOL2 = 0x8 + VMIN = 0x5 + VREPRINT = 0xb + VSTART = 0xd + VSTOP = 0xe + VSUSP = 0xc + VSWTC = 0x9 + VT1 = 0x10000 + VTDLY = 0x10000 + VTIME = 0x7 + VWERASE = 0xa + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WORDSIZE = 0x40 + XCASE = 0x4000 + XTABS = 0xc00 + _HIDIOCGRAWNAME = 0x40804804 + _HIDIOCGRAWPHYS = 0x40404805 + _HIDIOCGRAWUNIQ = 0x40404808 +) + +// Errors +const ( + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + ECANCELED = syscall.Errno(0x7d) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x3a) + EDESTADDRREQ = syscall.Errno(0x59) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EISCONN = syscall.Errno(0x6a) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTCONN = syscall.Errno(0x6b) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTUNIQ = syscall.Errno(0x4c) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPFNOSUPPORT = syscall.Errno(0x60) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGIO = syscall.Signal(0x1d) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {58, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/tests/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go new file mode 100644 index 000000000..9966c1941 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go @@ -0,0 +1,935 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/ppc64le/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc64le && linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/ppc64le/include _const.go + +package unix + +import "syscall" + +const ( + B1000000 = 0x17 + B115200 = 0x11 + B1152000 = 0x18 + B1500000 = 0x19 + B2000000 = 0x1a + B230400 = 0x12 + B2500000 = 0x1b + B3000000 = 0x1c + B3500000 = 0x1d + B4000000 = 0x1e + B460800 = 0x13 + B500000 = 0x14 + B57600 = 0x10 + B576000 = 0x15 + B921600 = 0x16 + BLKALIGNOFF = 0x2000127a + BLKBSZGET = 0x40081270 + BLKBSZSET = 0x80081271 + BLKDISCARD = 0x20001277 + BLKDISCARDZEROES = 0x2000127c + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETDISKSEQ = 0x40081280 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40081272 + BLKIOMIN = 0x20001278 + BLKIOOPT = 0x20001279 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKROTATIONAL = 0x2000127e + BLKRRPART = 0x2000125f + BLKSECDISCARD = 0x2000127d + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BLKZEROOUT = 0x2000127f + BOTHER = 0x1f + BS1 = 0x8000 + BSDLY = 0x8000 + CBAUD = 0xff + CBAUDEX = 0x0 + CIBAUD = 0xff0000 + CLOCAL = 0x8000 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRDLY = 0x3000 + CREAD = 0x800 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTOPB = 0x400 + ECCGETLAYOUT = 0x41484d11 + ECCGETSTATS = 0x40104d12 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x40088a02 + EPIOCSPARAMS = 0x80088a01 + EPOLL_CLOEXEC = 0x80000 + EXTPROC = 0x10000000 + FF1 = 0x4000 + FFDLY = 0x4000 + FICLONE = 0x80049409 + FICLONERANGE = 0x8020940d + FLUSHO = 0x800000 + FS_IOC_ENABLE_VERITY = 0x80806685 + FS_IOC_GETFLAGS = 0x40086601 + FS_IOC_GET_ENCRYPTION_NONCE = 0x4010661b + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SETFLAGS = 0x80086602 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + F_GETLK = 0x5 + F_GETLK64 = 0xc + F_GETOWN = 0x9 + F_RDLCK = 0x0 + F_SETLK = 0x6 + F_SETLK64 = 0xd + F_SETLKW = 0x7 + F_SETLKW64 = 0xe + F_SETOWN = 0x8 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 + HIDIOCREVOKE = 0x8004480d + HUPCL = 0x4000 + ICANON = 0x100 + IEXTEN = 0x400 + IN_CLOEXEC = 0x80000 + IN_NONBLOCK = 0x800 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + ISIG = 0x80 + IUCLC = 0x1000 + IXOFF = 0x400 + IXON = 0x200 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_LOCKED = 0x80 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x40 + MAP_POPULATE = 0x8000 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MCL_CURRENT = 0x2000 + MCL_FUTURE = 0x4000 + MCL_ONFAULT = 0x8000 + MEMERASE = 0x80084d02 + MEMERASE64 = 0x80104d14 + MEMGETBADBLOCK = 0x80084d0b + MEMGETINFO = 0x40204d01 + MEMGETOOBSEL = 0x40c84d0a + MEMGETREGIONCOUNT = 0x40044d07 + MEMISLOCKED = 0x40084d17 + MEMLOCK = 0x80084d05 + MEMREAD = 0xc0404d1a + MEMREADOOB = 0xc0104d04 + MEMSETBADBLOCK = 0x80084d0c + MEMUNLOCK = 0x80084d06 + MEMWRITEOOB = 0xc0104d03 + MTDFILEMODE = 0x20004d13 + NFDBITS = 0x40 + NL2 = 0x200 + NL3 = 0x300 + NLDLY = 0x300 + NOFLSH = 0x80000000 + NS_GET_MNTNS_ID = 0x4008b705 + NS_GET_NSTYPE = 0x2000b703 + NS_GET_OWNER_UID = 0x2000b704 + NS_GET_PARENT = 0x2000b702 + NS_GET_PID_FROM_PIDNS = 0x4004b706 + NS_GET_PID_IN_PIDNS = 0x4004b708 + NS_GET_TGID_FROM_PIDNS = 0x4004b707 + NS_GET_TGID_IN_PIDNS = 0x4004b709 + NS_GET_USERNS = 0x2000b701 + OLCUC = 0x4 + ONLCR = 0x2 + OTPERASE = 0x800c4d19 + OTPGETREGIONCOUNT = 0x80044d0e + OTPGETREGIONINFO = 0x800c4d0f + OTPLOCK = 0x400c4d10 + OTPSELECT = 0x40044d0d + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x20000 + O_DIRECTORY = 0x4000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x8000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x404000 + O_TRUNC = 0x200 + PARENB = 0x1000 + PARODD = 0x2000 + PENDIN = 0x20000000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCBRIDGECHAN = 0x80047435 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4010743f + PPPIOCGIDLE32 = 0x4008743f + PPPIOCGIDLE64 = 0x4010743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCSACTIVE = 0x80107446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x8010744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80107447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCUNBRIDGECHAN = 0x20007434 + PPPIOCXFERUNIT = 0x2000744e + PROT_SAO = 0x10 + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x40503d01 + PTP_CLOCK_GETCAPS2 = 0x40503d0a + PTP_ENABLE_PPS = 0x80043d04 + PTP_ENABLE_PPS2 = 0x80043d0d + PTP_EXTTS_REQUEST = 0x80103d02 + PTP_EXTTS_REQUEST2 = 0x80103d0b + PTP_MASK_CLEAR_ALL = 0x20003d13 + PTP_MASK_EN_SINGLE = 0x80043d14 + PTP_PEROUT_REQUEST = 0x80383d03 + PTP_PEROUT_REQUEST2 = 0x80383d0c + PTP_PIN_SETFUNC = 0x80603d07 + PTP_PIN_SETFUNC2 = 0x80603d10 + PTP_SYS_OFFSET = 0x83403d05 + PTP_SYS_OFFSET2 = 0x83403d0e + PTRACE_GETEVRREGS = 0x14 + PTRACE_GETFPREGS = 0xe + PTRACE_GETREGS64 = 0x16 + PTRACE_GETVRREGS = 0x12 + PTRACE_GETVSRREGS = 0x1b + PTRACE_GET_DEBUGREG = 0x19 + PTRACE_SETEVRREGS = 0x15 + PTRACE_SETFPREGS = 0xf + PTRACE_SETREGS64 = 0x17 + PTRACE_SETVRREGS = 0x13 + PTRACE_SETVSRREGS = 0x1c + PTRACE_SET_DEBUGREG = 0x1a + PTRACE_SINGLEBLOCK = 0x100 + PTRACE_SYSEMU = 0x1d + PTRACE_SYSEMU_SINGLESTEP = 0x1e + PT_CCR = 0x26 + PT_CTR = 0x23 + PT_DAR = 0x29 + PT_DSCR = 0x2c + PT_DSISR = 0x2a + PT_FPR0 = 0x30 + PT_FPSCR = 0x50 + PT_LNK = 0x24 + PT_MSR = 0x21 + PT_NIP = 0x20 + PT_ORIG_R3 = 0x22 + PT_R0 = 0x0 + PT_R1 = 0x1 + PT_R10 = 0xa + PT_R11 = 0xb + PT_R12 = 0xc + PT_R13 = 0xd + PT_R14 = 0xe + PT_R15 = 0xf + PT_R16 = 0x10 + PT_R17 = 0x11 + PT_R18 = 0x12 + PT_R19 = 0x13 + PT_R2 = 0x2 + PT_R20 = 0x14 + PT_R21 = 0x15 + PT_R22 = 0x16 + PT_R23 = 0x17 + PT_R24 = 0x18 + PT_R25 = 0x19 + PT_R26 = 0x1a + PT_R27 = 0x1b + PT_R28 = 0x1c + PT_R29 = 0x1d + PT_R3 = 0x3 + PT_R30 = 0x1e + PT_R31 = 0x1f + PT_R4 = 0x4 + PT_R5 = 0x5 + PT_R6 = 0x6 + PT_R7 = 0x7 + PT_R8 = 0x8 + PT_R9 = 0x9 + PT_REGS_COUNT = 0x2c + PT_RESULT = 0x2b + PT_SOFTE = 0x27 + PT_TRAP = 0x28 + PT_VR0 = 0x52 + PT_VRSAVE = 0x94 + PT_VSCR = 0x93 + PT_VSR0 = 0x96 + PT_VSR31 = 0xd4 + PT_XER = 0x25 + RLIMIT_AS = 0x9 + RLIMIT_MEMLOCK = 0x8 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4008700d + RTC_EPOCH_SET = 0x8008700e + RTC_IRQP_READ = 0x4008700b + RTC_IRQP_SET = 0x8008700c + RTC_PARAM_GET = 0x80187013 + RTC_PARAM_SET = 0x80187014 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x40207011 + RTC_PLL_SET = 0x80207012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x80082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x80082104 + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SIOCATMARK = 0x8905 + SIOCGPGRP = 0x8904 + SIOCGSTAMPNS_NEW = 0x40108907 + SIOCGSTAMP_NEW = 0x40108906 + SIOCINQ = 0x4004667f + SIOCOUTQ = 0x40047473 + SIOCSPGRP = 0x8902 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x2 + SOCK_NONBLOCK = 0x800 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0x1 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUF_LOCK = 0x48 + SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 + SO_NOFCS = 0x2b + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x14 + SO_PASSPIDFD = 0x4c + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x15 + SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d + SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x10 + SO_RCVMARK = 0x4b + SO_RCVTIMEO = 0x12 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x12 + SO_RESERVE_MEM = 0x49 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x11 + SO_SNDTIMEO = 0x13 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x13 + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0xc00 + TABDLY = 0xc00 + TCFLSH = 0x2000741f + TCGETA = 0x40147417 + TCGETS = 0x402c7413 + TCSAFLUSH = 0x2 + TCSBRK = 0x2000741d + TCSBRKP = 0x5425 + TCSETA = 0x80147418 + TCSETAF = 0x8014741c + TCSETAW = 0x80147419 + TCSETS = 0x802c7414 + TCSETSF = 0x802c7416 + TCSETSW = 0x802c7415 + TCXONC = 0x2000741e + TFD_CLOEXEC = 0x80000 + TFD_NONBLOCK = 0x800 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x40045432 + TIOCGETC = 0x40067412 + TIOCGETD = 0x5424 + TIOCGETP = 0x40067408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x40285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGLTC = 0x40067474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x4004667f + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_LOOP = 0x8000 + TIOCM_OUT1 = 0x2000 + TIOCM_OUT2 = 0x4000 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x5420 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETC = 0x80067411 + TIOCSETD = 0x5423 + TIOCSETN = 0x8006740a + TIOCSETP = 0x80067409 + TIOCSIG = 0x80045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSLTC = 0x80067475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTART = 0x2000746e + TIOCSTI = 0x5412 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x400000 + TUNATTACHFILTER = 0x801054d5 + TUNDETACHFILTER = 0x801054d6 + TUNGETDEVNETNS = 0x200054e3 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x401054db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRPEB = 0x80046f04 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCSPEB = 0x80046f05 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + VDISCARD = 0x10 + VEOF = 0x4 + VEOL = 0x6 + VEOL2 = 0x8 + VMIN = 0x5 + VREPRINT = 0xb + VSTART = 0xd + VSTOP = 0xe + VSUSP = 0xc + VSWTC = 0x9 + VT1 = 0x10000 + VTDLY = 0x10000 + VTIME = 0x7 + VWERASE = 0xa + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WORDSIZE = 0x40 + XCASE = 0x4000 + XTABS = 0xc00 + _HIDIOCGRAWNAME = 0x40804804 + _HIDIOCGRAWPHYS = 0x40404805 + _HIDIOCGRAWUNIQ = 0x40404808 +) + +// Errors +const ( + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + ECANCELED = syscall.Errno(0x7d) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x3a) + EDESTADDRREQ = syscall.Errno(0x59) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EISCONN = syscall.Errno(0x6a) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTCONN = syscall.Errno(0x6b) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTUNIQ = syscall.Errno(0x4c) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPFNOSUPPORT = syscall.Errno(0x60) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGIO = syscall.Signal(0x1d) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {58, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/tests/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go new file mode 100644 index 000000000..848e5fcc4 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go @@ -0,0 +1,862 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/riscv64/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build riscv64 && linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/riscv64/include _const.go + +package unix + +import "syscall" + +const ( + B1000000 = 0x1008 + B115200 = 0x1002 + B1152000 = 0x1009 + B1500000 = 0x100a + B2000000 = 0x100b + B230400 = 0x1003 + B2500000 = 0x100c + B3000000 = 0x100d + B3500000 = 0x100e + B4000000 = 0x100f + B460800 = 0x1004 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B921600 = 0x1007 + BLKALIGNOFF = 0x127a + BLKBSZGET = 0x80081270 + BLKBSZSET = 0x40081271 + BLKDISCARD = 0x1277 + BLKDISCARDZEROES = 0x127c + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETDISKSEQ = 0x80081280 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80081272 + BLKIOMIN = 0x1278 + BLKIOOPT = 0x1279 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKROTATIONAL = 0x127e + BLKRRPART = 0x125f + BLKSECDISCARD = 0x127d + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BLKZEROOUT = 0x127f + BOTHER = 0x1000 + BS1 = 0x2000 + BSDLY = 0x2000 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIZE = 0x30 + CSTOPB = 0x40 + ECCGETLAYOUT = 0x81484d11 + ECCGETSTATS = 0x80104d12 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x80088a02 + EPIOCSPARAMS = 0x40088a01 + EPOLL_CLOEXEC = 0x80000 + EXTPROC = 0x10000 + FF1 = 0x8000 + FFDLY = 0x8000 + FICLONE = 0x40049409 + FICLONERANGE = 0x4020940d + FLUSHO = 0x1000 + FS_IOC_ENABLE_VERITY = 0x40806685 + FS_IOC_GETFLAGS = 0x80086601 + FS_IOC_GET_ENCRYPTION_NONCE = 0x8010661b + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SETFLAGS = 0x40086602 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + F_GETLK = 0x5 + F_GETLK64 = 0x5 + F_GETOWN = 0x9 + F_RDLCK = 0x0 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x8 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 + HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 + IN_CLOEXEC = 0x80000 + IN_NONBLOCK = 0x800 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + ISIG = 0x1 + IUCLC = 0x200 + IXOFF = 0x1000 + IXON = 0x400 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MEMERASE = 0x40084d02 + MEMERASE64 = 0x40104d14 + MEMGETBADBLOCK = 0x40084d0b + MEMGETINFO = 0x80204d01 + MEMGETOOBSEL = 0x80c84d0a + MEMGETREGIONCOUNT = 0x80044d07 + MEMISLOCKED = 0x80084d17 + MEMLOCK = 0x40084d05 + MEMREAD = 0xc0404d1a + MEMREADOOB = 0xc0104d04 + MEMSETBADBLOCK = 0x40084d0c + MEMUNLOCK = 0x40084d06 + MEMWRITEOOB = 0xc0104d03 + MTDFILEMODE = 0x4d13 + NFDBITS = 0x40 + NLDLY = 0x100 + NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x8008b705 + NS_GET_NSTYPE = 0xb703 + NS_GET_OWNER_UID = 0xb704 + NS_GET_PARENT = 0xb702 + NS_GET_PID_FROM_PIDNS = 0x8004b706 + NS_GET_PID_IN_PIDNS = 0x8004b708 + NS_GET_TGID_FROM_PIDNS = 0x8004b707 + NS_GET_TGID_IN_PIDNS = 0x8004b709 + NS_GET_USERNS = 0xb701 + OLCUC = 0x2 + ONLCR = 0x4 + OTPERASE = 0x400c4d19 + OTPGETREGIONCOUNT = 0x40044d0e + OTPGETREGIONINFO = 0x400c4d0f + OTPLOCK = 0x800c4d10 + OTPSELECT = 0x80044d0d + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x4000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + PARENB = 0x100 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCBRIDGECHAN = 0x40047435 + PPPIOCCONNECT = 0x4004743a + PPPIOCDETACH = 0x4004743c + PPPIOCDISCONN = 0x7439 + PPPIOCGASYNCMAP = 0x80047458 + PPPIOCGCHAN = 0x80047437 + PPPIOCGDEBUG = 0x80047441 + PPPIOCGFLAGS = 0x8004745a + PPPIOCGIDLE = 0x8010743f + PPPIOCGIDLE32 = 0x8008743f + PPPIOCGIDLE64 = 0x8010743f + PPPIOCGL2TPSTATS = 0x80487436 + PPPIOCGMRU = 0x80047453 + PPPIOCGRASYNCMAP = 0x80047455 + PPPIOCGUNIT = 0x80047456 + PPPIOCGXASYNCMAP = 0x80207450 + PPPIOCSACTIVE = 0x40107446 + PPPIOCSASYNCMAP = 0x40047457 + PPPIOCSCOMPRESS = 0x4010744d + PPPIOCSDEBUG = 0x40047440 + PPPIOCSFLAGS = 0x40047459 + PPPIOCSMAXCID = 0x40047451 + PPPIOCSMRRU = 0x4004743b + PPPIOCSMRU = 0x40047452 + PPPIOCSNPMODE = 0x4008744b + PPPIOCSPASS = 0x40107447 + PPPIOCSRASYNCMAP = 0x40047454 + PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCUNBRIDGECHAN = 0x7434 + PPPIOCXFERUNIT = 0x744e + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x80503d01 + PTP_CLOCK_GETCAPS2 = 0x80503d0a + PTP_ENABLE_PPS = 0x40043d04 + PTP_ENABLE_PPS2 = 0x40043d0d + PTP_EXTTS_REQUEST = 0x40103d02 + PTP_EXTTS_REQUEST2 = 0x40103d0b + PTP_MASK_CLEAR_ALL = 0x3d13 + PTP_MASK_EN_SINGLE = 0x40043d14 + PTP_PEROUT_REQUEST = 0x40383d03 + PTP_PEROUT_REQUEST2 = 0x40383d0c + PTP_PIN_SETFUNC = 0x40603d07 + PTP_PIN_SETFUNC2 = 0x40603d10 + PTP_SYS_OFFSET = 0x43403d05 + PTP_SYS_OFFSET2 = 0x43403d0e + PTRACE_GETFDPIC = 0x21 + PTRACE_GETFDPIC_EXEC = 0x0 + PTRACE_GETFDPIC_INTERP = 0x1 + RLIMIT_AS = 0x9 + RLIMIT_MEMLOCK = 0x8 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RNDADDENTROPY = 0x40085203 + RNDADDTOENTCNT = 0x40045201 + RNDCLEARPOOL = 0x5206 + RNDGETENTCNT = 0x80045200 + RNDGETPOOL = 0x80085202 + RNDRESEEDCRNG = 0x5207 + RNDZAPENTCNT = 0x5204 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8008700d + RTC_EPOCH_SET = 0x4008700e + RTC_IRQP_READ = 0x8008700b + RTC_IRQP_SET = 0x4008700c + RTC_PARAM_GET = 0x40187013 + RTC_PARAM_SET = 0x40187014 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x80207011 + RTC_PLL_SET = 0x40207012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x40082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x40082104 + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SIOCATMARK = 0x8905 + SIOCGPGRP = 0x8904 + SIOCGSTAMPNS_NEW = 0x80108907 + SIOCGSTAMP_NEW = 0x80108906 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCSPGRP = 0x8902 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x2 + SOCK_NONBLOCK = 0x800 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0x1 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUF_LOCK = 0x48 + SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 + SO_NOFCS = 0x2b + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSPIDFD = 0x4c + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d + SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVMARK = 0x4b + SO_RCVTIMEO = 0x14 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x14 + SO_RESERVE_MEM = 0x49 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x15 + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TFD_CLOEXEC = 0x80000 + TFD_NONBLOCK = 0x800 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x80285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x100 + TUNATTACHFILTER = 0x401054d5 + TUNDETACHFILTER = 0x401054d6 + TUNGETDEVNETNS = 0x54e3 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x801054db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETCARRIER = 0x400454e2 + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRPEB = 0x40046f04 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCSPEB = 0x40046f05 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VMIN = 0x6 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WORDSIZE = 0x40 + XCASE = 0x4 + XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x80804804 + _HIDIOCGRAWPHYS = 0x80404805 + _HIDIOCGRAWUNIQ = 0x80404808 +) + +// Errors +const ( + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + ECANCELED = syscall.Errno(0x7d) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EISCONN = syscall.Errno(0x6a) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTCONN = syscall.Errno(0x6b) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTUNIQ = syscall.Errno(0x4c) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPFNOSUPPORT = syscall.Errno(0x60) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGIO = syscall.Signal(0x1d) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/tests/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go new file mode 100644 index 000000000..669b2adb8 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go @@ -0,0 +1,934 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/s390x/include -fsigned-char +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build s390x && linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/s390x/include -fsigned-char _const.go + +package unix + +import "syscall" + +const ( + B1000000 = 0x1008 + B115200 = 0x1002 + B1152000 = 0x1009 + B1500000 = 0x100a + B2000000 = 0x100b + B230400 = 0x1003 + B2500000 = 0x100c + B3000000 = 0x100d + B3500000 = 0x100e + B4000000 = 0x100f + B460800 = 0x1004 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B921600 = 0x1007 + BLKALIGNOFF = 0x127a + BLKBSZGET = 0x80081270 + BLKBSZSET = 0x40081271 + BLKDISCARD = 0x1277 + BLKDISCARDZEROES = 0x127c + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETDISKSEQ = 0x80081280 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80081272 + BLKIOMIN = 0x1278 + BLKIOOPT = 0x1279 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKROTATIONAL = 0x127e + BLKRRPART = 0x125f + BLKSECDISCARD = 0x127d + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BLKZEROOUT = 0x127f + BOTHER = 0x1000 + BS1 = 0x2000 + BSDLY = 0x2000 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIZE = 0x30 + CSTOPB = 0x40 + ECCGETLAYOUT = 0x81484d11 + ECCGETSTATS = 0x80104d12 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x80088a02 + EPIOCSPARAMS = 0x40088a01 + EPOLL_CLOEXEC = 0x80000 + EXTPROC = 0x10000 + FF1 = 0x8000 + FFDLY = 0x8000 + FICLONE = 0x40049409 + FICLONERANGE = 0x4020940d + FLUSHO = 0x1000 + FS_IOC_ENABLE_VERITY = 0x40806685 + FS_IOC_GETFLAGS = 0x80086601 + FS_IOC_GET_ENCRYPTION_NONCE = 0x8010661b + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SETFLAGS = 0x40086602 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + F_GETLK = 0x5 + F_GETLK64 = 0x5 + F_GETOWN = 0x9 + F_RDLCK = 0x0 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x8 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 + HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 + IN_CLOEXEC = 0x80000 + IN_NONBLOCK = 0x800 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPV6_FLOWINFO_MASK = 0xfffffff + IPV6_FLOWLABEL_MASK = 0xfffff + ISIG = 0x1 + IUCLC = 0x200 + IXOFF = 0x1000 + IXON = 0x400 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MEMERASE = 0x40084d02 + MEMERASE64 = 0x40104d14 + MEMGETBADBLOCK = 0x40084d0b + MEMGETINFO = 0x80204d01 + MEMGETOOBSEL = 0x80c84d0a + MEMGETREGIONCOUNT = 0x80044d07 + MEMISLOCKED = 0x80084d17 + MEMLOCK = 0x40084d05 + MEMREAD = 0xc0404d1a + MEMREADOOB = 0xc0104d04 + MEMSETBADBLOCK = 0x40084d0c + MEMUNLOCK = 0x40084d06 + MEMWRITEOOB = 0xc0104d03 + MTDFILEMODE = 0x4d13 + NFDBITS = 0x40 + NLDLY = 0x100 + NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x8008b705 + NS_GET_NSTYPE = 0xb703 + NS_GET_OWNER_UID = 0xb704 + NS_GET_PARENT = 0xb702 + NS_GET_PID_FROM_PIDNS = 0x8004b706 + NS_GET_PID_IN_PIDNS = 0x8004b708 + NS_GET_TGID_FROM_PIDNS = 0x8004b707 + NS_GET_TGID_IN_PIDNS = 0x8004b709 + NS_GET_USERNS = 0xb701 + OLCUC = 0x2 + ONLCR = 0x4 + OTPERASE = 0x400c4d19 + OTPGETREGIONCOUNT = 0x40044d0e + OTPGETREGIONINFO = 0x400c4d0f + OTPLOCK = 0x800c4d10 + OTPSELECT = 0x80044d0d + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x4000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + PARENB = 0x100 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCBRIDGECHAN = 0x40047435 + PPPIOCCONNECT = 0x4004743a + PPPIOCDETACH = 0x4004743c + PPPIOCDISCONN = 0x7439 + PPPIOCGASYNCMAP = 0x80047458 + PPPIOCGCHAN = 0x80047437 + PPPIOCGDEBUG = 0x80047441 + PPPIOCGFLAGS = 0x8004745a + PPPIOCGIDLE = 0x8010743f + PPPIOCGIDLE32 = 0x8008743f + PPPIOCGIDLE64 = 0x8010743f + PPPIOCGL2TPSTATS = 0x80487436 + PPPIOCGMRU = 0x80047453 + PPPIOCGRASYNCMAP = 0x80047455 + PPPIOCGUNIT = 0x80047456 + PPPIOCGXASYNCMAP = 0x80207450 + PPPIOCSACTIVE = 0x40107446 + PPPIOCSASYNCMAP = 0x40047457 + PPPIOCSCOMPRESS = 0x4010744d + PPPIOCSDEBUG = 0x40047440 + PPPIOCSFLAGS = 0x40047459 + PPPIOCSMAXCID = 0x40047451 + PPPIOCSMRRU = 0x4004743b + PPPIOCSMRU = 0x40047452 + PPPIOCSNPMODE = 0x4008744b + PPPIOCSPASS = 0x40107447 + PPPIOCSRASYNCMAP = 0x40047454 + PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCUNBRIDGECHAN = 0x7434 + PPPIOCXFERUNIT = 0x744e + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x80503d01 + PTP_CLOCK_GETCAPS2 = 0x80503d0a + PTP_ENABLE_PPS = 0x40043d04 + PTP_ENABLE_PPS2 = 0x40043d0d + PTP_EXTTS_REQUEST = 0x40103d02 + PTP_EXTTS_REQUEST2 = 0x40103d0b + PTP_MASK_CLEAR_ALL = 0x3d13 + PTP_MASK_EN_SINGLE = 0x40043d14 + PTP_PEROUT_REQUEST = 0x40383d03 + PTP_PEROUT_REQUEST2 = 0x40383d0c + PTP_PIN_SETFUNC = 0x40603d07 + PTP_PIN_SETFUNC2 = 0x40603d10 + PTP_SYS_OFFSET = 0x43403d05 + PTP_SYS_OFFSET2 = 0x43403d0e + PTRACE_DISABLE_TE = 0x5010 + PTRACE_ENABLE_TE = 0x5009 + PTRACE_GET_LAST_BREAK = 0x5006 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_PEEKDATA_AREA = 0x5003 + PTRACE_PEEKTEXT_AREA = 0x5002 + PTRACE_PEEKUSR_AREA = 0x5000 + PTRACE_PEEK_SYSTEM_CALL = 0x5007 + PTRACE_POKEDATA_AREA = 0x5005 + PTRACE_POKETEXT_AREA = 0x5004 + PTRACE_POKEUSR_AREA = 0x5001 + PTRACE_POKE_SYSTEM_CALL = 0x5008 + PTRACE_PROT = 0x15 + PTRACE_SINGLEBLOCK = 0xc + PTRACE_SYSEMU = 0x1f + PTRACE_SYSEMU_SINGLESTEP = 0x20 + PTRACE_TE_ABORT_RAND = 0x5011 + PT_ACR0 = 0x90 + PT_ACR1 = 0x94 + PT_ACR10 = 0xb8 + PT_ACR11 = 0xbc + PT_ACR12 = 0xc0 + PT_ACR13 = 0xc4 + PT_ACR14 = 0xc8 + PT_ACR15 = 0xcc + PT_ACR2 = 0x98 + PT_ACR3 = 0x9c + PT_ACR4 = 0xa0 + PT_ACR5 = 0xa4 + PT_ACR6 = 0xa8 + PT_ACR7 = 0xac + PT_ACR8 = 0xb0 + PT_ACR9 = 0xb4 + PT_CR_10 = 0x168 + PT_CR_11 = 0x170 + PT_CR_9 = 0x160 + PT_ENDREGS = 0x1af + PT_FPC = 0xd8 + PT_FPR0 = 0xe0 + PT_FPR1 = 0xe8 + PT_FPR10 = 0x130 + PT_FPR11 = 0x138 + PT_FPR12 = 0x140 + PT_FPR13 = 0x148 + PT_FPR14 = 0x150 + PT_FPR15 = 0x158 + PT_FPR2 = 0xf0 + PT_FPR3 = 0xf8 + PT_FPR4 = 0x100 + PT_FPR5 = 0x108 + PT_FPR6 = 0x110 + PT_FPR7 = 0x118 + PT_FPR8 = 0x120 + PT_FPR9 = 0x128 + PT_GPR0 = 0x10 + PT_GPR1 = 0x18 + PT_GPR10 = 0x60 + PT_GPR11 = 0x68 + PT_GPR12 = 0x70 + PT_GPR13 = 0x78 + PT_GPR14 = 0x80 + PT_GPR15 = 0x88 + PT_GPR2 = 0x20 + PT_GPR3 = 0x28 + PT_GPR4 = 0x30 + PT_GPR5 = 0x38 + PT_GPR6 = 0x40 + PT_GPR7 = 0x48 + PT_GPR8 = 0x50 + PT_GPR9 = 0x58 + PT_IEEE_IP = 0x1a8 + PT_LASTOFF = 0x1a8 + PT_ORIGGPR2 = 0xd0 + PT_PSWADDR = 0x8 + PT_PSWMASK = 0x0 + RLIMIT_AS = 0x9 + RLIMIT_MEMLOCK = 0x8 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RNDADDENTROPY = 0x40085203 + RNDADDTOENTCNT = 0x40045201 + RNDCLEARPOOL = 0x5206 + RNDGETENTCNT = 0x80045200 + RNDGETPOOL = 0x80085202 + RNDRESEEDCRNG = 0x5207 + RNDZAPENTCNT = 0x5204 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8008700d + RTC_EPOCH_SET = 0x4008700e + RTC_IRQP_READ = 0x8008700b + RTC_IRQP_SET = 0x4008700c + RTC_PARAM_GET = 0x40187013 + RTC_PARAM_SET = 0x40187014 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x80207011 + RTC_PLL_SET = 0x40207012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x40082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x40082104 + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SIOCATMARK = 0x8905 + SIOCGPGRP = 0x8904 + SIOCGSTAMPNS_NEW = 0x80108907 + SIOCGSTAMP_NEW = 0x80108906 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCSPGRP = 0x8902 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x2 + SOCK_NONBLOCK = 0x800 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0x1 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUF_LOCK = 0x48 + SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 + SO_NOFCS = 0x2b + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSPIDFD = 0x4c + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d + SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVMARK = 0x4b + SO_RCVTIMEO = 0x14 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x14 + SO_RESERVE_MEM = 0x49 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x15 + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TFD_CLOEXEC = 0x80000 + TFD_NONBLOCK = 0x800 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x80285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x100 + TUNATTACHFILTER = 0x401054d5 + TUNDETACHFILTER = 0x401054d6 + TUNGETDEVNETNS = 0x54e3 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x801054db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETCARRIER = 0x400454e2 + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRPEB = 0x40046f04 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCSPEB = 0x40046f05 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VMIN = 0x6 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WORDSIZE = 0x40 + XCASE = 0x4 + XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x80804804 + _HIDIOCGRAWPHYS = 0x80404805 + _HIDIOCGRAWUNIQ = 0x80404808 +) + +// Errors +const ( + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + ECANCELED = syscall.Errno(0x7d) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EISCONN = syscall.Errno(0x6a) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTCONN = syscall.Errno(0x6b) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTUNIQ = syscall.Errno(0x4c) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPFNOSUPPORT = syscall.Errno(0x60) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGIO = syscall.Signal(0x1d) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/tests/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go new file mode 100644 index 000000000..4834e5751 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go @@ -0,0 +1,977 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/sparc64/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build sparc64 && linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/sparc64/include _const.go + +package unix + +import "syscall" + +const ( + ASI_LEON_DFLUSH = 0x11 + ASI_LEON_IFLUSH = 0x10 + ASI_LEON_MMUFLUSH = 0x18 + B1000000 = 0x1008 + B115200 = 0x1002 + B1152000 = 0x1009 + B1500000 = 0x100a + B2000000 = 0x100b + B230400 = 0x1003 + B2500000 = 0x100c + B3000000 = 0x100d + B3500000 = 0x100e + B4000000 = 0x100f + B460800 = 0x1004 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B921600 = 0x1007 + BLKALIGNOFF = 0x2000127a + BLKBSZGET = 0x40081270 + BLKBSZSET = 0x80081271 + BLKDISCARD = 0x20001277 + BLKDISCARDZEROES = 0x2000127c + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETDISKSEQ = 0x40081280 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40081272 + BLKIOMIN = 0x20001278 + BLKIOOPT = 0x20001279 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKROTATIONAL = 0x2000127e + BLKRRPART = 0x2000125f + BLKSECDISCARD = 0x2000127d + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BLKZEROOUT = 0x2000127f + BOTHER = 0x1000 + BS1 = 0x2000 + BSDLY = 0x2000 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIZE = 0x30 + CSTOPB = 0x40 + ECCGETLAYOUT = 0x41484d11 + ECCGETSTATS = 0x40104d12 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x400000 + EFD_NONBLOCK = 0x4000 + EMT_TAGOVF = 0x1 + EPIOCGPARAMS = 0x40088a02 + EPIOCSPARAMS = 0x80088a01 + EPOLL_CLOEXEC = 0x400000 + EXTPROC = 0x10000 + FF1 = 0x8000 + FFDLY = 0x8000 + FICLONE = 0x80049409 + FICLONERANGE = 0x8020940d + FLUSHO = 0x1000 + FS_IOC_ENABLE_VERITY = 0x80806685 + FS_IOC_GETFLAGS = 0x40086601 + FS_IOC_GET_ENCRYPTION_NONCE = 0x4010661b + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SETFLAGS = 0x80086602 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + F_GETLK = 0x7 + F_GETLK64 = 0x7 + F_GETOWN = 0x5 + F_RDLCK = 0x1 + F_SETLK = 0x8 + F_SETLK64 = 0x8 + F_SETLKW = 0x9 + F_SETLKW64 = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x3 + F_WRLCK = 0x2 + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 + HIDIOCREVOKE = 0x8004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 + IN_CLOEXEC = 0x400000 + IN_NONBLOCK = 0x4000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPV6_FLOWINFO_MASK = 0xfffffff + IPV6_FLOWLABEL_MASK = 0xfffff + ISIG = 0x1 + IUCLC = 0x200 + IXOFF = 0x1000 + IXON = 0x400 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_GROWSDOWN = 0x200 + MAP_HUGETLB = 0x40000 + MAP_LOCKED = 0x100 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x40 + MAP_POPULATE = 0x8000 + MAP_RENAME = 0x20 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MCL_CURRENT = 0x2000 + MCL_FUTURE = 0x4000 + MCL_ONFAULT = 0x8000 + MEMERASE = 0x80084d02 + MEMERASE64 = 0x80104d14 + MEMGETBADBLOCK = 0x80084d0b + MEMGETINFO = 0x40204d01 + MEMGETOOBSEL = 0x40c84d0a + MEMGETREGIONCOUNT = 0x40044d07 + MEMISLOCKED = 0x40084d17 + MEMLOCK = 0x80084d05 + MEMREAD = 0xc0404d1a + MEMREADOOB = 0xc0104d04 + MEMSETBADBLOCK = 0x80084d0c + MEMUNLOCK = 0x80084d06 + MEMWRITEOOB = 0xc0104d03 + MTDFILEMODE = 0x20004d13 + NFDBITS = 0x40 + NLDLY = 0x100 + NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x4008b705 + NS_GET_NSTYPE = 0x2000b703 + NS_GET_OWNER_UID = 0x2000b704 + NS_GET_PARENT = 0x2000b702 + NS_GET_PID_FROM_PIDNS = 0x4004b706 + NS_GET_PID_IN_PIDNS = 0x4004b708 + NS_GET_TGID_FROM_PIDNS = 0x4004b707 + NS_GET_TGID_IN_PIDNS = 0x4004b709 + NS_GET_USERNS = 0x2000b701 + OLCUC = 0x2 + ONLCR = 0x4 + OTPERASE = 0x800c4d19 + OTPGETREGIONCOUNT = 0x80044d0e + OTPGETREGIONINFO = 0x800c4d0f + OTPLOCK = 0x400c4d10 + OTPSELECT = 0x40044d0d + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x400000 + O_CREAT = 0x200 + O_DIRECT = 0x100000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x2000 + O_EXCL = 0x800 + O_FSYNC = 0x802000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x4004 + O_NOATIME = 0x200000 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x4000 + O_PATH = 0x1000000 + O_RSYNC = 0x802000 + O_SYNC = 0x802000 + O_TMPFILE = 0x2010000 + O_TRUNC = 0x400 + PARENB = 0x100 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCBRIDGECHAN = 0x80047435 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4010743f + PPPIOCGIDLE32 = 0x4008743f + PPPIOCGIDLE64 = 0x4010743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCSACTIVE = 0x80107446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x8010744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80107447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCUNBRIDGECHAN = 0x20007434 + PPPIOCXFERUNIT = 0x2000744e + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x40503d01 + PTP_CLOCK_GETCAPS2 = 0x40503d0a + PTP_ENABLE_PPS = 0x80043d04 + PTP_ENABLE_PPS2 = 0x80043d0d + PTP_EXTTS_REQUEST = 0x80103d02 + PTP_EXTTS_REQUEST2 = 0x80103d0b + PTP_MASK_CLEAR_ALL = 0x20003d13 + PTP_MASK_EN_SINGLE = 0x80043d14 + PTP_PEROUT_REQUEST = 0x80383d03 + PTP_PEROUT_REQUEST2 = 0x80383d0c + PTP_PIN_SETFUNC = 0x80603d07 + PTP_PIN_SETFUNC2 = 0x80603d10 + PTP_SYS_OFFSET = 0x83403d05 + PTP_SYS_OFFSET2 = 0x83403d0e + PTRACE_GETFPAREGS = 0x14 + PTRACE_GETFPREGS = 0xe + PTRACE_GETFPREGS64 = 0x19 + PTRACE_GETREGS64 = 0x16 + PTRACE_READDATA = 0x10 + PTRACE_READTEXT = 0x12 + PTRACE_SETFPAREGS = 0x15 + PTRACE_SETFPREGS = 0xf + PTRACE_SETFPREGS64 = 0x1a + PTRACE_SETREGS64 = 0x17 + PTRACE_SPARC_DETACH = 0xb + PTRACE_WRITEDATA = 0x11 + PTRACE_WRITETEXT = 0x13 + PT_FP = 0x48 + PT_G0 = 0x10 + PT_G1 = 0x14 + PT_G2 = 0x18 + PT_G3 = 0x1c + PT_G4 = 0x20 + PT_G5 = 0x24 + PT_G6 = 0x28 + PT_G7 = 0x2c + PT_I0 = 0x30 + PT_I1 = 0x34 + PT_I2 = 0x38 + PT_I3 = 0x3c + PT_I4 = 0x40 + PT_I5 = 0x44 + PT_I6 = 0x48 + PT_I7 = 0x4c + PT_NPC = 0x8 + PT_PC = 0x4 + PT_PSR = 0x0 + PT_REGS_MAGIC = 0x57ac6c00 + PT_TNPC = 0x90 + PT_TPC = 0x88 + PT_TSTATE = 0x80 + PT_V9_FP = 0x70 + PT_V9_G0 = 0x0 + PT_V9_G1 = 0x8 + PT_V9_G2 = 0x10 + PT_V9_G3 = 0x18 + PT_V9_G4 = 0x20 + PT_V9_G5 = 0x28 + PT_V9_G6 = 0x30 + PT_V9_G7 = 0x38 + PT_V9_I0 = 0x40 + PT_V9_I1 = 0x48 + PT_V9_I2 = 0x50 + PT_V9_I3 = 0x58 + PT_V9_I4 = 0x60 + PT_V9_I5 = 0x68 + PT_V9_I6 = 0x70 + PT_V9_I7 = 0x78 + PT_V9_MAGIC = 0x9c + PT_V9_TNPC = 0x90 + PT_V9_TPC = 0x88 + PT_V9_TSTATE = 0x80 + PT_V9_Y = 0x98 + PT_WIM = 0x10 + PT_Y = 0xc + RLIMIT_AS = 0x9 + RLIMIT_MEMLOCK = 0x8 + RLIMIT_NOFILE = 0x6 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4008700d + RTC_EPOCH_SET = 0x8008700e + RTC_IRQP_READ = 0x4008700b + RTC_IRQP_SET = 0x8008700c + RTC_PARAM_GET = 0x80187013 + RTC_PARAM_SET = 0x80187014 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x40207011 + RTC_PLL_SET = 0x80207012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + SCM_DEVMEM_DMABUF = 0x58 + SCM_DEVMEM_LINEAR = 0x57 + SCM_TIMESTAMPING = 0x23 + SCM_TIMESTAMPING_OPT_STATS = 0x38 + SCM_TIMESTAMPING_PKTINFO = 0x3c + SCM_TIMESTAMPNS = 0x21 + SCM_TS_OPT_ID = 0x5a + SCM_TXTIME = 0x3f + SCM_WIFI_STATUS = 0x25 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x80082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x80082104 + SFD_CLOEXEC = 0x400000 + SFD_NONBLOCK = 0x4000 + SF_FP = 0x38 + SF_I0 = 0x20 + SF_I1 = 0x24 + SF_I2 = 0x28 + SF_I3 = 0x2c + SF_I4 = 0x30 + SF_I5 = 0x34 + SF_L0 = 0x0 + SF_L1 = 0x4 + SF_L2 = 0x8 + SF_L3 = 0xc + SF_L4 = 0x10 + SF_L5 = 0x14 + SF_L6 = 0x18 + SF_L7 = 0x1c + SF_PC = 0x3c + SF_RETP = 0x40 + SF_V9_FP = 0x70 + SF_V9_I0 = 0x40 + SF_V9_I1 = 0x48 + SF_V9_I2 = 0x50 + SF_V9_I3 = 0x58 + SF_V9_I4 = 0x60 + SF_V9_I5 = 0x68 + SF_V9_L0 = 0x0 + SF_V9_L1 = 0x8 + SF_V9_L2 = 0x10 + SF_V9_L3 = 0x18 + SF_V9_L4 = 0x20 + SF_V9_L5 = 0x28 + SF_V9_L6 = 0x30 + SF_V9_L7 = 0x38 + SF_V9_PC = 0x78 + SF_V9_RETP = 0x80 + SF_V9_XARG0 = 0x88 + SF_V9_XARG1 = 0x90 + SF_V9_XARG2 = 0x98 + SF_V9_XARG3 = 0xa0 + SF_V9_XARG4 = 0xa8 + SF_V9_XARG5 = 0xb0 + SF_V9_XXARG = 0xb8 + SF_XARG0 = 0x44 + SF_XARG1 = 0x48 + SF_XARG2 = 0x4c + SF_XARG3 = 0x50 + SF_XARG4 = 0x54 + SF_XARG5 = 0x58 + SF_XXARG = 0x5c + SIOCATMARK = 0x8905 + SIOCGPGRP = 0x8904 + SIOCGSTAMPNS_NEW = 0x40108907 + SIOCGSTAMP_NEW = 0x40108906 + SIOCINQ = 0x4004667f + SIOCOUTQ = 0x40047473 + SIOCSPGRP = 0x8902 + SOCK_CLOEXEC = 0x400000 + SOCK_DGRAM = 0x2 + SOCK_NONBLOCK = 0x4000 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SO_ACCEPTCONN = 0x8000 + SO_ATTACH_BPF = 0x34 + SO_ATTACH_REUSEPORT_CBPF = 0x35 + SO_ATTACH_REUSEPORT_EBPF = 0x36 + SO_BINDTODEVICE = 0xd + SO_BINDTOIFINDEX = 0x41 + SO_BPF_EXTENSIONS = 0x32 + SO_BROADCAST = 0x20 + SO_BSDCOMPAT = 0x400 + SO_BUF_LOCK = 0x51 + SO_BUSY_POLL = 0x30 + SO_BUSY_POLL_BUDGET = 0x49 + SO_CNX_ADVICE = 0x37 + SO_COOKIE = 0x3b + SO_DETACH_REUSEPORT_BPF = 0x47 + SO_DEVMEM_DMABUF = 0x58 + SO_DEVMEM_DONTNEED = 0x59 + SO_DEVMEM_LINEAR = 0x57 + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_INCOMING_CPU = 0x33 + SO_INCOMING_NAPI_ID = 0x3a + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOCK_FILTER = 0x28 + SO_MARK = 0x22 + SO_MAX_PACING_RATE = 0x31 + SO_MEMINFO = 0x39 + SO_NETNS_COOKIE = 0x50 + SO_NOFCS = 0x27 + SO_OOBINLINE = 0x100 + SO_PASSCRED = 0x2 + SO_PASSPIDFD = 0x55 + SO_PASSSEC = 0x1f + SO_PEEK_OFF = 0x26 + SO_PEERCRED = 0x40 + SO_PEERGROUPS = 0x3d + SO_PEERPIDFD = 0x56 + SO_PEERSEC = 0x1e + SO_PREFER_BUSY_POLL = 0x48 + SO_PROTOCOL = 0x1028 + SO_RCVBUF = 0x1002 + SO_RCVBUFFORCE = 0x100b + SO_RCVLOWAT = 0x800 + SO_RCVMARK = 0x54 + SO_RCVTIMEO = 0x2000 + SO_RCVTIMEO_NEW = 0x44 + SO_RCVTIMEO_OLD = 0x2000 + SO_RESERVE_MEM = 0x52 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RXQ_OVFL = 0x24 + SO_SECURITY_AUTHENTICATION = 0x5001 + SO_SECURITY_ENCRYPTION_NETWORK = 0x5004 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x5002 + SO_SELECT_ERR_QUEUE = 0x29 + SO_SNDBUF = 0x1001 + SO_SNDBUFFORCE = 0x100a + SO_SNDLOWAT = 0x1000 + SO_SNDTIMEO = 0x4000 + SO_SNDTIMEO_NEW = 0x45 + SO_SNDTIMEO_OLD = 0x4000 + SO_TIMESTAMPING = 0x23 + SO_TIMESTAMPING_NEW = 0x43 + SO_TIMESTAMPING_OLD = 0x23 + SO_TIMESTAMPNS = 0x21 + SO_TIMESTAMPNS_NEW = 0x42 + SO_TIMESTAMPNS_OLD = 0x21 + SO_TIMESTAMP_NEW = 0x46 + SO_TXREHASH = 0x53 + SO_TXTIME = 0x3f + SO_TYPE = 0x1008 + SO_WIFI_STATUS = 0x25 + SO_ZEROCOPY = 0x3e + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TCFLSH = 0x20005407 + TCGETA = 0x40125401 + TCGETS = 0x40245408 + TCGETS2 = 0x402c540c + TCSAFLUSH = 0x2 + TCSBRK = 0x20005405 + TCSBRKP = 0x5425 + TCSETA = 0x80125402 + TCSETAF = 0x80125404 + TCSETAW = 0x80125403 + TCSETS = 0x80245409 + TCSETS2 = 0x802c540d + TCSETSF = 0x8024540b + TCSETSF2 = 0x802c540f + TCSETSW = 0x8024540a + TCSETSW2 = 0x802c540e + TCXONC = 0x20005406 + TFD_CLOEXEC = 0x400000 + TFD_NONBLOCK = 0x4000 + TIOCCBRK = 0x2000747a + TIOCCONS = 0x20007424 + TIOCEXCL = 0x2000740d + TIOCGDEV = 0x40045432 + TIOCGETD = 0x40047400 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x40285443 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x40047483 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40047486 + TIOCGPTPEER = 0x20007489 + TIOCGRS485 = 0x40205441 + TIOCGSERIAL = 0x541e + TIOCGSID = 0x40047485 + TIOCGSOFTCAR = 0x40047464 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x4004667f + TIOCLINUX = 0x541c + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMIWAIT = 0x545c + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007484 + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSETD = 0x80047401 + TIOCSIG = 0x80047488 + TIOCSISO7816 = 0xc0285444 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x80047482 + TIOCSPTLCK = 0x80047487 + TIOCSRS485 = 0xc0205442 + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x80047465 + TIOCSTART = 0x2000746e + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x20005437 + TOSTOP = 0x100 + TUNATTACHFILTER = 0x801054d5 + TUNDETACHFILTER = 0x801054d6 + TUNGETDEVNETNS = 0x200054e3 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x401054db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRPEB = 0x80046f04 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCSPEB = 0x80046f05 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VMIN = 0x6 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WORDSIZE = 0x40 + XCASE = 0x4 + XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x40804804 + _HIDIOCGRAWPHYS = 0x40404805 + _HIDIOCGRAWUNIQ = 0x40404808 + __TIOCFLUSH = 0x80047410 +) + +// Errors +const ( + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EADV = syscall.Errno(0x53) + EAFNOSUPPORT = syscall.Errno(0x2f) + EALREADY = syscall.Errno(0x25) + EBADE = syscall.Errno(0x66) + EBADFD = syscall.Errno(0x5d) + EBADMSG = syscall.Errno(0x4c) + EBADR = syscall.Errno(0x67) + EBADRQC = syscall.Errno(0x6a) + EBADSLT = syscall.Errno(0x6b) + EBFONT = syscall.Errno(0x6d) + ECANCELED = syscall.Errno(0x7f) + ECHRNG = syscall.Errno(0x5e) + ECOMM = syscall.Errno(0x55) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0x4e) + EDEADLOCK = syscall.Errno(0x6c) + EDESTADDRREQ = syscall.Errno(0x27) + EDOTDOT = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EHWPOISON = syscall.Errno(0x87) + EIDRM = syscall.Errno(0x4d) + EILSEQ = syscall.Errno(0x7a) + EINPROGRESS = syscall.Errno(0x24) + EISCONN = syscall.Errno(0x38) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x81) + EKEYREJECTED = syscall.Errno(0x83) + EKEYREVOKED = syscall.Errno(0x82) + EL2HLT = syscall.Errno(0x65) + EL2NSYNC = syscall.Errno(0x5f) + EL3HLT = syscall.Errno(0x60) + EL3RST = syscall.Errno(0x61) + ELIBACC = syscall.Errno(0x72) + ELIBBAD = syscall.Errno(0x70) + ELIBEXEC = syscall.Errno(0x6e) + ELIBMAX = syscall.Errno(0x7b) + ELIBSCN = syscall.Errno(0x7c) + ELNRNG = syscall.Errno(0x62) + ELOOP = syscall.Errno(0x3e) + EMEDIUMTYPE = syscall.Errno(0x7e) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x57) + ENAMETOOLONG = syscall.Errno(0x3f) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENOANO = syscall.Errno(0x69) + ENOBUFS = syscall.Errno(0x37) + ENOCSI = syscall.Errno(0x64) + ENODATA = syscall.Errno(0x6f) + ENOKEY = syscall.Errno(0x80) + ENOLCK = syscall.Errno(0x4f) + ENOLINK = syscall.Errno(0x52) + ENOMEDIUM = syscall.Errno(0x7d) + ENOMSG = syscall.Errno(0x4b) + ENONET = syscall.Errno(0x50) + ENOPKG = syscall.Errno(0x71) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSR = syscall.Errno(0x4a) + ENOSTR = syscall.Errno(0x48) + ENOSYS = syscall.Errno(0x5a) + ENOTCONN = syscall.Errno(0x39) + ENOTEMPTY = syscall.Errno(0x42) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x85) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTUNIQ = syscall.Errno(0x73) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x5c) + EOWNERDEAD = syscall.Errno(0x84) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPROCLIM = syscall.Errno(0x43) + EPROTO = syscall.Errno(0x56) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + EREMCHG = syscall.Errno(0x59) + EREMOTE = syscall.Errno(0x47) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x74) + ERFKILL = syscall.Errno(0x86) + ERREMOTE = syscall.Errno(0x51) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESRMNT = syscall.Errno(0x54) + ESTALE = syscall.Errno(0x46) + ESTRPIPE = syscall.Errno(0x5b) + ETIME = syscall.Errno(0x49) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x63) + EUSERS = syscall.Errno(0x44) + EXFULL = syscall.Errno(0x68) +) + +// Signals +const ( + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGIO = syscall.Signal(0x17) + SIGLOST = syscall.Signal(0x1d) + SIGPOLL = syscall.Signal(0x17) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1d) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "ENOTSUP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "cannot assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "transport endpoint is already connected"}, + {57, "ENOTCONN", "transport endpoint is not connected"}, + {58, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {59, "ETOOMANYREFS", "too many references: cannot splice"}, + {60, "ETIMEDOUT", "connection timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disk quota exceeded"}, + {70, "ESTALE", "stale file handle"}, + {71, "EREMOTE", "object is remote"}, + {72, "ENOSTR", "device not a stream"}, + {73, "ETIME", "timer expired"}, + {74, "ENOSR", "out of streams resources"}, + {75, "ENOMSG", "no message of desired type"}, + {76, "EBADMSG", "bad message"}, + {77, "EIDRM", "identifier removed"}, + {78, "EDEADLK", "resource deadlock avoided"}, + {79, "ENOLCK", "no locks available"}, + {80, "ENONET", "machine is not on the network"}, + {81, "ERREMOTE", "unknown error 81"}, + {82, "ENOLINK", "link has been severed"}, + {83, "EADV", "advertise error"}, + {84, "ESRMNT", "srmount error"}, + {85, "ECOMM", "communication error on send"}, + {86, "EPROTO", "protocol error"}, + {87, "EMULTIHOP", "multihop attempted"}, + {88, "EDOTDOT", "RFS specific error"}, + {89, "EREMCHG", "remote address changed"}, + {90, "ENOSYS", "function not implemented"}, + {91, "ESTRPIPE", "streams pipe error"}, + {92, "EOVERFLOW", "value too large for defined data type"}, + {93, "EBADFD", "file descriptor in bad state"}, + {94, "ECHRNG", "channel number out of range"}, + {95, "EL2NSYNC", "level 2 not synchronized"}, + {96, "EL3HLT", "level 3 halted"}, + {97, "EL3RST", "level 3 reset"}, + {98, "ELNRNG", "link number out of range"}, + {99, "EUNATCH", "protocol driver not attached"}, + {100, "ENOCSI", "no CSI structure available"}, + {101, "EL2HLT", "level 2 halted"}, + {102, "EBADE", "invalid exchange"}, + {103, "EBADR", "invalid request descriptor"}, + {104, "EXFULL", "exchange full"}, + {105, "ENOANO", "no anode"}, + {106, "EBADRQC", "invalid request code"}, + {107, "EBADSLT", "invalid slot"}, + {108, "EDEADLOCK", "file locking deadlock error"}, + {109, "EBFONT", "bad font file format"}, + {110, "ELIBEXEC", "cannot exec a shared library directly"}, + {111, "ENODATA", "no data available"}, + {112, "ELIBBAD", "accessing a corrupted shared library"}, + {113, "ENOPKG", "package not installed"}, + {114, "ELIBACC", "can not access a needed shared library"}, + {115, "ENOTUNIQ", "name not unique on network"}, + {116, "ERESTART", "interrupted system call should be restarted"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {123, "ELIBMAX", "attempting to link in too many shared libraries"}, + {124, "ELIBSCN", ".lib section in a.out corrupted"}, + {125, "ENOMEDIUM", "no medium found"}, + {126, "EMEDIUMTYPE", "wrong medium type"}, + {127, "ECANCELED", "operation canceled"}, + {128, "ENOKEY", "required key not available"}, + {129, "EKEYEXPIRED", "key has expired"}, + {130, "EKEYREVOKED", "key has been revoked"}, + {131, "EKEYREJECTED", "key was rejected by service"}, + {132, "EOWNERDEAD", "owner died"}, + {133, "ENOTRECOVERABLE", "state not recoverable"}, + {134, "ERFKILL", "operation not possible due to RF-kill"}, + {135, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGLOST", "power failure"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go b/tests/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go new file mode 100644 index 000000000..130085df4 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go @@ -0,0 +1,1779 @@ +// mkerrors.sh -m32 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build 386 && netbsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m32 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x1c + AF_BLUETOOTH = 0x1f + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x20 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x23 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OROUTE = 0x11 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x22 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ARPHRD_ARCNET = 0x7 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_STRIP = 0x17 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427d + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0084277 + BIOCGETIF = 0x4090426b + BIOCGFEEDBACK = 0x4004427c + BIOCGHDRCMPLT = 0x40044274 + BIOCGRTIMEOUT = 0x400c427b + BIOCGSEESENT = 0x40044278 + BIOCGSTATS = 0x4080426f + BIOCGSTATSOLD = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044276 + BIOCSETF = 0x80084267 + BIOCSETIF = 0x8090426c + BIOCSFEEDBACK = 0x8004427d + BIOCSHDRCMPLT = 0x80044275 + BIOCSRTIMEOUT = 0x800c427a + BIOCSSEESENT = 0x80044279 + BIOCSTCPF = 0x80084272 + BIOCSUDPF = 0x80084273 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALIGNMENT32 = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DFLTBUFSIZE = 0x100000 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x1000000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLONE_CSIGNAL = 0xff + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_PID = 0x1000 + CLONE_PTRACE = 0x2000 + CLONE_SIGHAND = 0x800 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CPUSTATES = 0x5 + CP_IDLE = 0x4 + CP_INTR = 0x3 + CP_NICE = 0x1 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + CTL_QUERY = -0x2 + DIOCBSFLUSH = 0x20006478 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HDLC = 0x10 + DLT_HHDLC = 0x79 + DLT_HIPPI = 0xf + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RAWAF_MASK = 0x2240000 + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMUL_LINUX = 0x1 + EMUL_LINUX32 = 0x5 + EMUL_MAXID = 0x6 + EN_SW_CTL_INF = 0x1000 + EN_SW_CTL_PREC = 0x300 + EN_SW_CTL_ROUND = 0xc00 + EN_SW_DATACHAIN = 0x80 + EN_SW_DENORM = 0x2 + EN_SW_INVOP = 0x1 + EN_SW_OVERFLOW = 0x8 + EN_SW_PRECLOSS = 0x20 + EN_SW_UNDERFLOW = 0x10 + EN_SW_ZERODIV = 0x4 + ETHERCAP_JUMBO_MTU = 0x4 + ETHERCAP_VLAN_HWTAGGING = 0x2 + ETHERCAP_VLAN_MTU = 0x1 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERMTU_JUMBO = 0x2328 + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PAE = 0x888e + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOWPROTOCOLS = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_LEN = 0x5ee + ETHER_MAX_LEN_JUMBO = 0x233a + ETHER_MIN_LEN = 0x40 + ETHER_PPPOE_ENCAP_LEN = 0x8 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = 0x2 + EVFILT_PROC = 0x4 + EVFILT_READ = 0x0 + EVFILT_SIGNAL = 0x5 + EVFILT_SYSCOUNT = 0x7 + EVFILT_TIMER = 0x6 + EVFILT_VNODE = 0x3 + EVFILT_WRITE = 0x1 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_CMD_START = 0x1 + EXTATTR_CMD_STOP = 0x2 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x100 + FLUSHO = 0x800000 + F_CLOSEM = 0xa + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xc + F_FSCTL = -0x80000000 + F_FSDIRMASK = 0x70000000 + F_FSIN = 0x10000000 + F_FSINOUT = 0x30000000 + F_FSOUT = 0x20000000 + F_FSPRIV = 0x8000 + F_FSVOID = 0x40000000 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETNOSIGPIPE = 0xd + F_GETOWN = 0x5 + F_MAXFD = 0xb + F_OK = 0x0 + F_PARAM_MASK = 0xfff + F_PARAM_MAX = 0xfff + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETNOSIGPIPE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFA_ROUTE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8f52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf8 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf2 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf1 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_STF = 0xd7 + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IPV6_ICMP = 0x3a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MOBILE = 0x37 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_VRRP = 0x70 + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_EF = 0x8000 + IP_ERRORMTU = 0x15 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x16 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINFRAGSIZE = 0x45 + IP_MINTTL = 0x18 + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x17 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ALIGNMENT_16MB = 0x18000000 + MAP_ALIGNMENT_1TB = 0x28000000 + MAP_ALIGNMENT_256TB = 0x30000000 + MAP_ALIGNMENT_4GB = 0x20000000 + MAP_ALIGNMENT_64KB = 0x10000000 + MAP_ALIGNMENT_64PB = 0x38000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_INHERIT = 0x80 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_DEFAULT = 0x1 + MAP_INHERIT_DONATE_COPY = 0x3 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_STACK = 0x2000 + MAP_TRYFIXED = 0x400 + MAP_WIRED = 0x800 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_BASIC_FLAGS = 0xe782807f + MNT_DEFEXPORTED = 0x200 + MNT_DISCARD = 0x800000 + MNT_EXKERB = 0x800 + MNT_EXNORESPORT = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x10000000 + MNT_EXRDONLY = 0x80 + MNT_EXTATTR = 0x1000000 + MNT_FORCE = 0x80000 + MNT_GETARGS = 0x400000 + MNT_IGNORE = 0x100000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_LOG = 0x2000000 + MNT_NOATIME = 0x4000000 + MNT_NOCOREDUMP = 0x8000 + MNT_NODEV = 0x10 + MNT_NODEVMTIME = 0x40000000 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_OP_FLAGS = 0x4d0000 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELATIME = 0x20000 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x80000000 + MNT_SYMPERM = 0x20000000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0xff90ffff + MNT_WAIT = 0x1 + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CONTROLMBUF = 0x2000000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_IOVUSRSPACE = 0x4000000 + MSG_LENUSRSPACE = 0x8000000 + MSG_MCAST = 0x200 + MSG_NAMEMBUF = 0x1000000 + MSG_NBIO = 0x1000 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_USERFLAGS = 0xffffff + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x4 + NAME_MAX = 0x1ff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x5 + NET_RT_MAXID = 0x6 + NET_RT_OIFLIST = 0x4 + NET_RT_OOIFLIST = 0x3 + NFDBITS = 0x20 + NOFLSH = 0x80000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFIOGETBMAP = 0xc004667a + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_ALT_IO = 0x40000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x400000 + O_CREAT = 0x200 + O_DIRECT = 0x80000 + O_DIRECTORY = 0x200000 + O_DSYNC = 0x10000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_NOSIGPIPE = 0x1000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x20000 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PRI_IOFLUSH = 0x7c + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x9 + RTAX_NETMASK = 0x2 + RTAX_TAG = 0x8 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTA_TAG = 0x100 + RTF_ANNOUNCE = 0x20000 + RTF_BLACKHOLE = 0x1000 + RTF_CLONED = 0x2000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_REJECT = 0x8 + RTF_SRC = 0x10000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_CHGADDR = 0x15 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x11 + RTM_IFANNOUNCE = 0x10 + RTM_IFINFO = 0x14 + RTM_LLINFO_UPD = 0x13 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OIFINFO = 0xf + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_OOIFINFO = 0xe + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_SETGATE = 0x12 + RTM_VERSION = 0x4 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x4 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x8 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80906931 + SIOCADDRT = 0x8030720a + SIOCAIFADDR = 0x8040691a + SIOCALIFADDR = 0x8118691c + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80906932 + SIOCDELRT = 0x8030720b + SIOCDIFADDR = 0x80906919 + SIOCDIFPHYADDR = 0x80906949 + SIOCDLIFADDR = 0x8118691e + SIOCGDRVSPEC = 0xc01c697b + SIOCGETPFSYNC = 0xc09069f8 + SIOCGETSGCNT = 0xc0147534 + SIOCGETVIFCNT = 0xc0147533 + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0906921 + SIOCGIFADDRPREF = 0xc0946920 + SIOCGIFALIAS = 0xc040691b + SIOCGIFBRDADDR = 0xc0906923 + SIOCGIFCAP = 0xc0206976 + SIOCGIFCONF = 0xc0086926 + SIOCGIFDATA = 0xc0946985 + SIOCGIFDLT = 0xc0906977 + SIOCGIFDSTADDR = 0xc0906922 + SIOCGIFFLAGS = 0xc0906911 + SIOCGIFGENERIC = 0xc090693a + SIOCGIFMEDIA = 0xc0286936 + SIOCGIFMETRIC = 0xc0906917 + SIOCGIFMTU = 0xc090697e + SIOCGIFNETMASK = 0xc0906925 + SIOCGIFPDSTADDR = 0xc0906948 + SIOCGIFPSRCADDR = 0xc0906947 + SIOCGLIFADDR = 0xc118691d + SIOCGLIFPHYADDR = 0xc118694b + SIOCGLINKSTR = 0xc01c6987 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGVH = 0xc0906983 + SIOCIFCREATE = 0x8090697a + SIOCIFDESTROY = 0x80906979 + SIOCIFGCLONERS = 0xc00c6978 + SIOCINITIFADDR = 0xc0446984 + SIOCSDRVSPEC = 0x801c697b + SIOCSETPFSYNC = 0x809069f7 + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8090690c + SIOCSIFADDRPREF = 0x8094691f + SIOCSIFBRDADDR = 0x80906913 + SIOCSIFCAP = 0x80206975 + SIOCSIFDSTADDR = 0x8090690e + SIOCSIFFLAGS = 0x80906910 + SIOCSIFGENERIC = 0x80906939 + SIOCSIFMEDIA = 0xc0906935 + SIOCSIFMETRIC = 0x80906918 + SIOCSIFMTU = 0x8090697f + SIOCSIFNETMASK = 0x80906916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSLIFPHYADDR = 0x8118694a + SIOCSLINKSTR = 0x801c6988 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSVH = 0xc0906982 + SIOCZIFDATA = 0xc0946986 + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_FLAGS_MASK = 0xf0000000 + SOCK_NONBLOCK = 0x20000000 + SOCK_NOSIGPIPE = 0x40000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NOHEADER = 0x100a + SO_NOSIGPIPE = 0x800 + SO_OOBINLINE = 0x100 + SO_OVERFLOWED = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x100c + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x100b + SO_TIMESTAMP = 0x2000 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SYSCTL_VERSION = 0x1000000 + SYSCTL_VERS_0 = 0x0 + SYSCTL_VERS_1 = 0x1000000 + SYSCTL_VERS_MASK = 0xff000000 + S_ARCH1 = 0x10000 + S_ARCH2 = 0x20000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + S_LOGIN_SET = 0x1 + TCIFLUSH = 0x1 + TCIOFLUSH = 0x3 + TCOFLUSH = 0x2 + TCP_CONGCTL = 0x20 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x3 + TCP_KEEPINIT = 0x7 + TCP_KEEPINTVL = 0x5 + TCP_MAXBURST = 0x4 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x400c7458 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CDTRCTS = 0x10 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGLINED = 0x40207442 + TIOCGPGRP = 0x40047477 + TIOCGQSIZE = 0x40047481 + TIOCGRANTPT = 0x20007447 + TIOCGSID = 0x40047463 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMGET = 0x40287446 + TIOCPTSNAME = 0x40287448 + TIOCRCVFRAME = 0x80047445 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x2000745f + TIOCSLINED = 0x80207443 + TIOCSPGRP = 0x80047476 + TIOCSQSIZE = 0x80047480 + TIOCSSIZE = 0x80087467 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x80047465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCXMTFRAME = 0x80047444 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALL = 0x8 + WALLSIG = 0x8 + WALTSIG = 0x4 + WCLONE = 0x4 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WNOWAIT = 0x10000 + WNOZOMBIE = 0x20000 + WOPTSCHECKED = 0x40000 + WSTOPPED = 0x7f + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x58) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x57) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x55) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x60) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5e) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x59) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5f) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x5a) + ENOSTR = syscall.Errno(0x5b) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x56) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x60) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x5c) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x20) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large or too small"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol option not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "connection timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EILSEQ", "illegal byte sequence"}, + {86, "ENOTSUP", "not supported"}, + {87, "ECANCELED", "operation Canceled"}, + {88, "EBADMSG", "bad or Corrupt message"}, + {89, "ENODATA", "no message available"}, + {90, "ENOSR", "no STREAM resources"}, + {91, "ENOSTR", "not a STREAM"}, + {92, "ETIME", "STREAM ioctl timeout"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EMULTIHOP", "multihop attempted"}, + {95, "ENOLINK", "link has been severed"}, + {96, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPWR", "power fail/restart"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go b/tests/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go new file mode 100644 index 000000000..84769a1a3 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go @@ -0,0 +1,1769 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && netbsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x1c + AF_BLUETOOTH = 0x1f + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x20 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x23 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OROUTE = 0x11 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x22 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ARPHRD_ARCNET = 0x7 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_STRIP = 0x17 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427d + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0104277 + BIOCGETIF = 0x4090426b + BIOCGFEEDBACK = 0x4004427c + BIOCGHDRCMPLT = 0x40044274 + BIOCGRTIMEOUT = 0x4010427b + BIOCGSEESENT = 0x40044278 + BIOCGSTATS = 0x4080426f + BIOCGSTATSOLD = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044276 + BIOCSETF = 0x80104267 + BIOCSETIF = 0x8090426c + BIOCSFEEDBACK = 0x8004427d + BIOCSHDRCMPLT = 0x80044275 + BIOCSRTIMEOUT = 0x8010427a + BIOCSSEESENT = 0x80044279 + BIOCSTCPF = 0x80104272 + BIOCSUDPF = 0x80104273 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x8 + BPF_ALIGNMENT32 = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DFLTBUFSIZE = 0x100000 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x1000000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLONE_CSIGNAL = 0xff + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_PID = 0x1000 + CLONE_PTRACE = 0x2000 + CLONE_SIGHAND = 0x800 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CPUSTATES = 0x5 + CP_IDLE = 0x4 + CP_INTR = 0x3 + CP_NICE = 0x1 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + CTL_QUERY = -0x2 + DIOCBSFLUSH = 0x20006478 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HDLC = 0x10 + DLT_HHDLC = 0x79 + DLT_HIPPI = 0xf + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RAWAF_MASK = 0x2240000 + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMUL_LINUX = 0x1 + EMUL_LINUX32 = 0x5 + EMUL_MAXID = 0x6 + ETHERCAP_JUMBO_MTU = 0x4 + ETHERCAP_VLAN_HWTAGGING = 0x2 + ETHERCAP_VLAN_MTU = 0x1 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERMTU_JUMBO = 0x2328 + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PAE = 0x888e + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOWPROTOCOLS = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_LEN = 0x5ee + ETHER_MAX_LEN_JUMBO = 0x233a + ETHER_MIN_LEN = 0x40 + ETHER_PPPOE_ENCAP_LEN = 0x8 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = 0x2 + EVFILT_PROC = 0x4 + EVFILT_READ = 0x0 + EVFILT_SIGNAL = 0x5 + EVFILT_SYSCOUNT = 0x7 + EVFILT_TIMER = 0x6 + EVFILT_VNODE = 0x3 + EVFILT_WRITE = 0x1 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_CMD_START = 0x1 + EXTATTR_CMD_STOP = 0x2 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x100 + FLUSHO = 0x800000 + F_CLOSEM = 0xa + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xc + F_FSCTL = -0x80000000 + F_FSDIRMASK = 0x70000000 + F_FSIN = 0x10000000 + F_FSINOUT = 0x30000000 + F_FSOUT = 0x20000000 + F_FSPRIV = 0x8000 + F_FSVOID = 0x40000000 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETNOSIGPIPE = 0xd + F_GETOWN = 0x5 + F_MAXFD = 0xb + F_OK = 0x0 + F_PARAM_MASK = 0xfff + F_PARAM_MAX = 0xfff + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETNOSIGPIPE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFA_ROUTE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8f52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf8 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf2 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf1 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_STF = 0xd7 + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IPV6_ICMP = 0x3a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MOBILE = 0x37 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_VRRP = 0x70 + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_EF = 0x8000 + IP_ERRORMTU = 0x15 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x16 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINFRAGSIZE = 0x45 + IP_MINTTL = 0x18 + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x17 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ALIGNMENT_16MB = 0x18000000 + MAP_ALIGNMENT_1TB = 0x28000000 + MAP_ALIGNMENT_256TB = 0x30000000 + MAP_ALIGNMENT_4GB = 0x20000000 + MAP_ALIGNMENT_64KB = 0x10000000 + MAP_ALIGNMENT_64PB = 0x38000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_INHERIT = 0x80 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_DEFAULT = 0x1 + MAP_INHERIT_DONATE_COPY = 0x3 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_STACK = 0x2000 + MAP_TRYFIXED = 0x400 + MAP_WIRED = 0x800 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_BASIC_FLAGS = 0xe782807f + MNT_DEFEXPORTED = 0x200 + MNT_DISCARD = 0x800000 + MNT_EXKERB = 0x800 + MNT_EXNORESPORT = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x10000000 + MNT_EXRDONLY = 0x80 + MNT_EXTATTR = 0x1000000 + MNT_FORCE = 0x80000 + MNT_GETARGS = 0x400000 + MNT_IGNORE = 0x100000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_LOG = 0x2000000 + MNT_NOATIME = 0x4000000 + MNT_NOCOREDUMP = 0x8000 + MNT_NODEV = 0x10 + MNT_NODEVMTIME = 0x40000000 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_OP_FLAGS = 0x4d0000 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELATIME = 0x20000 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x80000000 + MNT_SYMPERM = 0x20000000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0xff90ffff + MNT_WAIT = 0x1 + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CONTROLMBUF = 0x2000000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_IOVUSRSPACE = 0x4000000 + MSG_LENUSRSPACE = 0x8000000 + MSG_MCAST = 0x200 + MSG_NAMEMBUF = 0x1000000 + MSG_NBIO = 0x1000 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_USERFLAGS = 0xffffff + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x4 + NAME_MAX = 0x1ff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x5 + NET_RT_MAXID = 0x6 + NET_RT_OIFLIST = 0x4 + NET_RT_OOIFLIST = 0x3 + NFDBITS = 0x20 + NOFLSH = 0x80000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFIOGETBMAP = 0xc004667a + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_ALT_IO = 0x40000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x400000 + O_CREAT = 0x200 + O_DIRECT = 0x80000 + O_DIRECTORY = 0x200000 + O_DSYNC = 0x10000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_NOSIGPIPE = 0x1000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x20000 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PRI_IOFLUSH = 0x7c + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x9 + RTAX_NETMASK = 0x2 + RTAX_TAG = 0x8 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTA_TAG = 0x100 + RTF_ANNOUNCE = 0x20000 + RTF_BLACKHOLE = 0x1000 + RTF_CLONED = 0x2000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_REJECT = 0x8 + RTF_SRC = 0x10000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_CHGADDR = 0x15 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x11 + RTM_IFANNOUNCE = 0x10 + RTM_IFINFO = 0x14 + RTM_LLINFO_UPD = 0x13 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OIFINFO = 0xf + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_OOIFINFO = 0xe + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_SETGATE = 0x12 + RTM_VERSION = 0x4 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x4 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x8 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80906931 + SIOCADDRT = 0x8038720a + SIOCAIFADDR = 0x8040691a + SIOCALIFADDR = 0x8118691c + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80906932 + SIOCDELRT = 0x8038720b + SIOCDIFADDR = 0x80906919 + SIOCDIFPHYADDR = 0x80906949 + SIOCDLIFADDR = 0x8118691e + SIOCGDRVSPEC = 0xc028697b + SIOCGETPFSYNC = 0xc09069f8 + SIOCGETSGCNT = 0xc0207534 + SIOCGETVIFCNT = 0xc0287533 + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0906921 + SIOCGIFADDRPREF = 0xc0986920 + SIOCGIFALIAS = 0xc040691b + SIOCGIFBRDADDR = 0xc0906923 + SIOCGIFCAP = 0xc0206976 + SIOCGIFCONF = 0xc0106926 + SIOCGIFDATA = 0xc0986985 + SIOCGIFDLT = 0xc0906977 + SIOCGIFDSTADDR = 0xc0906922 + SIOCGIFFLAGS = 0xc0906911 + SIOCGIFGENERIC = 0xc090693a + SIOCGIFMEDIA = 0xc0306936 + SIOCGIFMETRIC = 0xc0906917 + SIOCGIFMTU = 0xc090697e + SIOCGIFNETMASK = 0xc0906925 + SIOCGIFPDSTADDR = 0xc0906948 + SIOCGIFPSRCADDR = 0xc0906947 + SIOCGLIFADDR = 0xc118691d + SIOCGLIFPHYADDR = 0xc118694b + SIOCGLINKSTR = 0xc0286987 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGVH = 0xc0906983 + SIOCIFCREATE = 0x8090697a + SIOCIFDESTROY = 0x80906979 + SIOCIFGCLONERS = 0xc0106978 + SIOCINITIFADDR = 0xc0706984 + SIOCSDRVSPEC = 0x8028697b + SIOCSETPFSYNC = 0x809069f7 + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8090690c + SIOCSIFADDRPREF = 0x8098691f + SIOCSIFBRDADDR = 0x80906913 + SIOCSIFCAP = 0x80206975 + SIOCSIFDSTADDR = 0x8090690e + SIOCSIFFLAGS = 0x80906910 + SIOCSIFGENERIC = 0x80906939 + SIOCSIFMEDIA = 0xc0906935 + SIOCSIFMETRIC = 0x80906918 + SIOCSIFMTU = 0x8090697f + SIOCSIFNETMASK = 0x80906916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSLIFPHYADDR = 0x8118694a + SIOCSLINKSTR = 0x80286988 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSVH = 0xc0906982 + SIOCZIFDATA = 0xc0986986 + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_FLAGS_MASK = 0xf0000000 + SOCK_NONBLOCK = 0x20000000 + SOCK_NOSIGPIPE = 0x40000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NOHEADER = 0x100a + SO_NOSIGPIPE = 0x800 + SO_OOBINLINE = 0x100 + SO_OVERFLOWED = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x100c + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x100b + SO_TIMESTAMP = 0x2000 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SYSCTL_VERSION = 0x1000000 + SYSCTL_VERS_0 = 0x0 + SYSCTL_VERS_1 = 0x1000000 + SYSCTL_VERS_MASK = 0xff000000 + S_ARCH1 = 0x10000 + S_ARCH2 = 0x20000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + S_LOGIN_SET = 0x1 + TCIFLUSH = 0x1 + TCIOFLUSH = 0x3 + TCOFLUSH = 0x2 + TCP_CONGCTL = 0x20 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x3 + TCP_KEEPINIT = 0x7 + TCP_KEEPINTVL = 0x5 + TCP_MAXBURST = 0x4 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x40107458 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CDTRCTS = 0x10 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGLINED = 0x40207442 + TIOCGPGRP = 0x40047477 + TIOCGQSIZE = 0x40047481 + TIOCGRANTPT = 0x20007447 + TIOCGSID = 0x40047463 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMGET = 0x40287446 + TIOCPTSNAME = 0x40287448 + TIOCRCVFRAME = 0x80087445 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x2000745f + TIOCSLINED = 0x80207443 + TIOCSPGRP = 0x80047476 + TIOCSQSIZE = 0x80047480 + TIOCSSIZE = 0x80087467 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x80047465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCXMTFRAME = 0x80087444 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALL = 0x8 + WALLSIG = 0x8 + WALTSIG = 0x4 + WCLONE = 0x4 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WNOWAIT = 0x10000 + WNOZOMBIE = 0x20000 + WOPTSCHECKED = 0x40000 + WSTOPPED = 0x7f + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x58) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x57) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x55) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x60) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5e) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x59) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5f) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x5a) + ENOSTR = syscall.Errno(0x5b) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x56) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x60) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x5c) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x20) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large or too small"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol option not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "connection timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EILSEQ", "illegal byte sequence"}, + {86, "ENOTSUP", "not supported"}, + {87, "ECANCELED", "operation Canceled"}, + {88, "EBADMSG", "bad or Corrupt message"}, + {89, "ENODATA", "no message available"}, + {90, "ENOSR", "no STREAM resources"}, + {91, "ENOSTR", "not a STREAM"}, + {92, "ETIME", "STREAM ioctl timeout"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EMULTIHOP", "multihop attempted"}, + {95, "ENOLINK", "link has been severed"}, + {96, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPWR", "power fail/restart"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go b/tests/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go new file mode 100644 index 000000000..602ded003 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go @@ -0,0 +1,1758 @@ +// mkerrors.sh -marm +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm && netbsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -marm _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x1c + AF_BLUETOOTH = 0x1f + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x20 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x23 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OROUTE = 0x11 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x22 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ARPHRD_ARCNET = 0x7 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_STRIP = 0x17 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427d + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0084277 + BIOCGETIF = 0x4090426b + BIOCGFEEDBACK = 0x4004427c + BIOCGHDRCMPLT = 0x40044274 + BIOCGRTIMEOUT = 0x400c427b + BIOCGSEESENT = 0x40044278 + BIOCGSTATS = 0x4080426f + BIOCGSTATSOLD = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044276 + BIOCSETF = 0x80084267 + BIOCSETIF = 0x8090426c + BIOCSFEEDBACK = 0x8004427d + BIOCSHDRCMPLT = 0x80044275 + BIOCSRTIMEOUT = 0x800c427a + BIOCSSEESENT = 0x80044279 + BIOCSTCPF = 0x80084272 + BIOCSUDPF = 0x80084273 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALIGNMENT32 = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DFLTBUFSIZE = 0x100000 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x1000000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CPUSTATES = 0x5 + CP_IDLE = 0x4 + CP_INTR = 0x3 + CP_NICE = 0x1 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + CTL_QUERY = -0x2 + DIOCBSFLUSH = 0x20006478 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HDLC = 0x10 + DLT_HHDLC = 0x79 + DLT_HIPPI = 0xf + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RAWAF_MASK = 0x2240000 + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMUL_LINUX = 0x1 + EMUL_LINUX32 = 0x5 + EMUL_MAXID = 0x6 + ETHERCAP_JUMBO_MTU = 0x4 + ETHERCAP_VLAN_HWTAGGING = 0x2 + ETHERCAP_VLAN_MTU = 0x1 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERMTU_JUMBO = 0x2328 + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PAE = 0x888e + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOWPROTOCOLS = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_LEN = 0x5ee + ETHER_MAX_LEN_JUMBO = 0x233a + ETHER_MIN_LEN = 0x40 + ETHER_PPPOE_ENCAP_LEN = 0x8 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = 0x2 + EVFILT_PROC = 0x4 + EVFILT_READ = 0x0 + EVFILT_SIGNAL = 0x5 + EVFILT_SYSCOUNT = 0x7 + EVFILT_TIMER = 0x6 + EVFILT_VNODE = 0x3 + EVFILT_WRITE = 0x1 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_CMD_START = 0x1 + EXTATTR_CMD_STOP = 0x2 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x100 + FLUSHO = 0x800000 + F_CLOSEM = 0xa + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xc + F_FSCTL = -0x80000000 + F_FSDIRMASK = 0x70000000 + F_FSIN = 0x10000000 + F_FSINOUT = 0x30000000 + F_FSOUT = 0x20000000 + F_FSPRIV = 0x8000 + F_FSVOID = 0x40000000 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETNOSIGPIPE = 0xd + F_GETOWN = 0x5 + F_MAXFD = 0xb + F_OK = 0x0 + F_PARAM_MASK = 0xfff + F_PARAM_MAX = 0xfff + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETNOSIGPIPE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFA_ROUTE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8f52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf8 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf2 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf1 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_STF = 0xd7 + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IPV6_ICMP = 0x3a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MOBILE = 0x37 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_VRRP = 0x70 + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_EF = 0x8000 + IP_ERRORMTU = 0x15 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x16 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINFRAGSIZE = 0x45 + IP_MINTTL = 0x18 + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x17 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ALIGNMENT_16MB = 0x18000000 + MAP_ALIGNMENT_1TB = 0x28000000 + MAP_ALIGNMENT_256TB = 0x30000000 + MAP_ALIGNMENT_4GB = 0x20000000 + MAP_ALIGNMENT_64KB = 0x10000000 + MAP_ALIGNMENT_64PB = 0x38000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_INHERIT = 0x80 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_DEFAULT = 0x1 + MAP_INHERIT_DONATE_COPY = 0x3 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_STACK = 0x2000 + MAP_TRYFIXED = 0x400 + MAP_WIRED = 0x800 + MNT_ASYNC = 0x40 + MNT_BASIC_FLAGS = 0xe782807f + MNT_DEFEXPORTED = 0x200 + MNT_DISCARD = 0x800000 + MNT_EXKERB = 0x800 + MNT_EXNORESPORT = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x10000000 + MNT_EXRDONLY = 0x80 + MNT_EXTATTR = 0x1000000 + MNT_FORCE = 0x80000 + MNT_GETARGS = 0x400000 + MNT_IGNORE = 0x100000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_LOG = 0x2000000 + MNT_NOATIME = 0x4000000 + MNT_NOCOREDUMP = 0x8000 + MNT_NODEV = 0x10 + MNT_NODEVMTIME = 0x40000000 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_OP_FLAGS = 0x4d0000 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELATIME = 0x20000 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x80000000 + MNT_SYMPERM = 0x20000000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0xff90ffff + MNT_WAIT = 0x1 + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CONTROLMBUF = 0x2000000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_IOVUSRSPACE = 0x4000000 + MSG_LENUSRSPACE = 0x8000000 + MSG_MCAST = 0x200 + MSG_NAMEMBUF = 0x1000000 + MSG_NBIO = 0x1000 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_USERFLAGS = 0xffffff + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x4 + NAME_MAX = 0x1ff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x5 + NET_RT_MAXID = 0x6 + NET_RT_OIFLIST = 0x4 + NET_RT_OOIFLIST = 0x3 + NFDBITS = 0x20 + NOFLSH = 0x80000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFIOGETBMAP = 0xc004667a + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_ALT_IO = 0x40000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x400000 + O_CREAT = 0x200 + O_DIRECT = 0x80000 + O_DIRECTORY = 0x200000 + O_DSYNC = 0x10000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_NOSIGPIPE = 0x1000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x20000 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PRI_IOFLUSH = 0x7c + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x9 + RTAX_NETMASK = 0x2 + RTAX_TAG = 0x8 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTA_TAG = 0x100 + RTF_ANNOUNCE = 0x20000 + RTF_BLACKHOLE = 0x1000 + RTF_CLONED = 0x2000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_REJECT = 0x8 + RTF_SRC = 0x10000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_CHGADDR = 0x15 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x11 + RTM_IFANNOUNCE = 0x10 + RTM_IFINFO = 0x14 + RTM_LLINFO_UPD = 0x13 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OIFINFO = 0xf + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_OOIFINFO = 0xe + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_SETGATE = 0x12 + RTM_VERSION = 0x4 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x4 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x8 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80906931 + SIOCADDRT = 0x8030720a + SIOCAIFADDR = 0x8040691a + SIOCALIFADDR = 0x8118691c + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80906932 + SIOCDELRT = 0x8030720b + SIOCDIFADDR = 0x80906919 + SIOCDIFPHYADDR = 0x80906949 + SIOCDLIFADDR = 0x8118691e + SIOCGDRVSPEC = 0xc01c697b + SIOCGETPFSYNC = 0xc09069f8 + SIOCGETSGCNT = 0xc0147534 + SIOCGETVIFCNT = 0xc0147533 + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0906921 + SIOCGIFADDRPREF = 0xc0946920 + SIOCGIFALIAS = 0xc040691b + SIOCGIFBRDADDR = 0xc0906923 + SIOCGIFCAP = 0xc0206976 + SIOCGIFCONF = 0xc0086926 + SIOCGIFDATA = 0xc0946985 + SIOCGIFDLT = 0xc0906977 + SIOCGIFDSTADDR = 0xc0906922 + SIOCGIFFLAGS = 0xc0906911 + SIOCGIFGENERIC = 0xc090693a + SIOCGIFMEDIA = 0xc0286936 + SIOCGIFMETRIC = 0xc0906917 + SIOCGIFMTU = 0xc090697e + SIOCGIFNETMASK = 0xc0906925 + SIOCGIFPDSTADDR = 0xc0906948 + SIOCGIFPSRCADDR = 0xc0906947 + SIOCGLIFADDR = 0xc118691d + SIOCGLIFPHYADDR = 0xc118694b + SIOCGLINKSTR = 0xc01c6987 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGVH = 0xc0906983 + SIOCIFCREATE = 0x8090697a + SIOCIFDESTROY = 0x80906979 + SIOCIFGCLONERS = 0xc00c6978 + SIOCINITIFADDR = 0xc0446984 + SIOCSDRVSPEC = 0x801c697b + SIOCSETPFSYNC = 0x809069f7 + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8090690c + SIOCSIFADDRPREF = 0x8094691f + SIOCSIFBRDADDR = 0x80906913 + SIOCSIFCAP = 0x80206975 + SIOCSIFDSTADDR = 0x8090690e + SIOCSIFFLAGS = 0x80906910 + SIOCSIFGENERIC = 0x80906939 + SIOCSIFMEDIA = 0xc0906935 + SIOCSIFMETRIC = 0x80906918 + SIOCSIFMTU = 0x8090697f + SIOCSIFNETMASK = 0x80906916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSLIFPHYADDR = 0x8118694a + SIOCSLINKSTR = 0x801c6988 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSVH = 0xc0906982 + SIOCZIFDATA = 0xc0946986 + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_FLAGS_MASK = 0xf0000000 + SOCK_NONBLOCK = 0x20000000 + SOCK_NOSIGPIPE = 0x40000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NOHEADER = 0x100a + SO_NOSIGPIPE = 0x800 + SO_OOBINLINE = 0x100 + SO_OVERFLOWED = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x100c + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x100b + SO_TIMESTAMP = 0x2000 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SYSCTL_VERSION = 0x1000000 + SYSCTL_VERS_0 = 0x0 + SYSCTL_VERS_1 = 0x1000000 + SYSCTL_VERS_MASK = 0xff000000 + S_ARCH1 = 0x10000 + S_ARCH2 = 0x20000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TCIFLUSH = 0x1 + TCIOFLUSH = 0x3 + TCOFLUSH = 0x2 + TCP_CONGCTL = 0x20 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x3 + TCP_KEEPINIT = 0x7 + TCP_KEEPINTVL = 0x5 + TCP_MAXBURST = 0x4 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x400c7458 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CDTRCTS = 0x10 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGLINED = 0x40207442 + TIOCGPGRP = 0x40047477 + TIOCGQSIZE = 0x40047481 + TIOCGRANTPT = 0x20007447 + TIOCGSID = 0x40047463 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMGET = 0x48087446 + TIOCPTSNAME = 0x48087448 + TIOCRCVFRAME = 0x80047445 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x2000745f + TIOCSLINED = 0x80207443 + TIOCSPGRP = 0x80047476 + TIOCSQSIZE = 0x80047480 + TIOCSSIZE = 0x80087467 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x80047465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCXMTFRAME = 0x80047444 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALL = 0x8 + WALLSIG = 0x8 + WALTSIG = 0x4 + WCLONE = 0x4 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WNOWAIT = 0x10000 + WNOZOMBIE = 0x20000 + WOPTSCHECKED = 0x40000 + WSTOPPED = 0x7f + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x58) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x57) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x55) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x60) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5e) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x59) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5f) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x5a) + ENOSTR = syscall.Errno(0x5b) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x56) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x60) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x5c) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x20) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large or too small"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol option not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "connection timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EILSEQ", "illegal byte sequence"}, + {86, "ENOTSUP", "not supported"}, + {87, "ECANCELED", "operation Canceled"}, + {88, "EBADMSG", "bad or Corrupt message"}, + {89, "ENODATA", "no message available"}, + {90, "ENOSR", "no STREAM resources"}, + {91, "ENOSTR", "not a STREAM"}, + {92, "ETIME", "STREAM ioctl timeout"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EMULTIHOP", "multihop attempted"}, + {95, "ENOLINK", "link has been severed"}, + {96, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPWR", "power fail/restart"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go b/tests/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go new file mode 100644 index 000000000..efc0406ee --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go @@ -0,0 +1,1769 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm64 && netbsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x1c + AF_BLUETOOTH = 0x1f + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x20 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x23 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OROUTE = 0x11 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x22 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ARPHRD_ARCNET = 0x7 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_STRIP = 0x17 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427d + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0104277 + BIOCGETIF = 0x4090426b + BIOCGFEEDBACK = 0x4004427c + BIOCGHDRCMPLT = 0x40044274 + BIOCGRTIMEOUT = 0x4010427b + BIOCGSEESENT = 0x40044278 + BIOCGSTATS = 0x4080426f + BIOCGSTATSOLD = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044276 + BIOCSETF = 0x80104267 + BIOCSETIF = 0x8090426c + BIOCSFEEDBACK = 0x8004427d + BIOCSHDRCMPLT = 0x80044275 + BIOCSRTIMEOUT = 0x8010427a + BIOCSSEESENT = 0x80044279 + BIOCSTCPF = 0x80104272 + BIOCSUDPF = 0x80104273 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x8 + BPF_ALIGNMENT32 = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DFLTBUFSIZE = 0x100000 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x1000000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLONE_CSIGNAL = 0xff + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_PID = 0x1000 + CLONE_PTRACE = 0x2000 + CLONE_SIGHAND = 0x800 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CPUSTATES = 0x5 + CP_IDLE = 0x4 + CP_INTR = 0x3 + CP_NICE = 0x1 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + CTL_QUERY = -0x2 + DIOCBSFLUSH = 0x20006478 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HDLC = 0x10 + DLT_HHDLC = 0x79 + DLT_HIPPI = 0xf + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RAWAF_MASK = 0x2240000 + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMUL_LINUX = 0x1 + EMUL_LINUX32 = 0x5 + EMUL_MAXID = 0x6 + ETHERCAP_JUMBO_MTU = 0x4 + ETHERCAP_VLAN_HWTAGGING = 0x2 + ETHERCAP_VLAN_MTU = 0x1 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERMTU_JUMBO = 0x2328 + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PAE = 0x888e + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOWPROTOCOLS = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_LEN = 0x5ee + ETHER_MAX_LEN_JUMBO = 0x233a + ETHER_MIN_LEN = 0x40 + ETHER_PPPOE_ENCAP_LEN = 0x8 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = 0x2 + EVFILT_PROC = 0x4 + EVFILT_READ = 0x0 + EVFILT_SIGNAL = 0x5 + EVFILT_SYSCOUNT = 0x7 + EVFILT_TIMER = 0x6 + EVFILT_VNODE = 0x3 + EVFILT_WRITE = 0x1 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_CMD_START = 0x1 + EXTATTR_CMD_STOP = 0x2 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x100 + FLUSHO = 0x800000 + F_CLOSEM = 0xa + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xc + F_FSCTL = -0x80000000 + F_FSDIRMASK = 0x70000000 + F_FSIN = 0x10000000 + F_FSINOUT = 0x30000000 + F_FSOUT = 0x20000000 + F_FSPRIV = 0x8000 + F_FSVOID = 0x40000000 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETNOSIGPIPE = 0xd + F_GETOWN = 0x5 + F_MAXFD = 0xb + F_OK = 0x0 + F_PARAM_MASK = 0xfff + F_PARAM_MAX = 0xfff + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETNOSIGPIPE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFA_ROUTE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8f52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf8 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf2 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf1 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_STF = 0xd7 + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IPV6_ICMP = 0x3a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MOBILE = 0x37 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_VRRP = 0x70 + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_EF = 0x8000 + IP_ERRORMTU = 0x15 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x16 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINFRAGSIZE = 0x45 + IP_MINTTL = 0x18 + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x17 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ALIGNMENT_16MB = 0x18000000 + MAP_ALIGNMENT_1TB = 0x28000000 + MAP_ALIGNMENT_256TB = 0x30000000 + MAP_ALIGNMENT_4GB = 0x20000000 + MAP_ALIGNMENT_64KB = 0x10000000 + MAP_ALIGNMENT_64PB = 0x38000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_INHERIT = 0x80 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_DEFAULT = 0x1 + MAP_INHERIT_DONATE_COPY = 0x3 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_STACK = 0x2000 + MAP_TRYFIXED = 0x400 + MAP_WIRED = 0x800 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_BASIC_FLAGS = 0xe782807f + MNT_DEFEXPORTED = 0x200 + MNT_DISCARD = 0x800000 + MNT_EXKERB = 0x800 + MNT_EXNORESPORT = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x10000000 + MNT_EXRDONLY = 0x80 + MNT_EXTATTR = 0x1000000 + MNT_FORCE = 0x80000 + MNT_GETARGS = 0x400000 + MNT_IGNORE = 0x100000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_LOG = 0x2000000 + MNT_NOATIME = 0x4000000 + MNT_NOCOREDUMP = 0x8000 + MNT_NODEV = 0x10 + MNT_NODEVMTIME = 0x40000000 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_OP_FLAGS = 0x4d0000 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELATIME = 0x20000 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x80000000 + MNT_SYMPERM = 0x20000000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0xff90ffff + MNT_WAIT = 0x1 + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CONTROLMBUF = 0x2000000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_IOVUSRSPACE = 0x4000000 + MSG_LENUSRSPACE = 0x8000000 + MSG_MCAST = 0x200 + MSG_NAMEMBUF = 0x1000000 + MSG_NBIO = 0x1000 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_USERFLAGS = 0xffffff + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x4 + NAME_MAX = 0x1ff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x5 + NET_RT_MAXID = 0x6 + NET_RT_OIFLIST = 0x4 + NET_RT_OOIFLIST = 0x3 + NFDBITS = 0x20 + NOFLSH = 0x80000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFIOGETBMAP = 0xc004667a + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_ALT_IO = 0x40000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x400000 + O_CREAT = 0x200 + O_DIRECT = 0x80000 + O_DIRECTORY = 0x200000 + O_DSYNC = 0x10000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_NOSIGPIPE = 0x1000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x20000 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PRI_IOFLUSH = 0x7c + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x9 + RTAX_NETMASK = 0x2 + RTAX_TAG = 0x8 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTA_TAG = 0x100 + RTF_ANNOUNCE = 0x20000 + RTF_BLACKHOLE = 0x1000 + RTF_CLONED = 0x2000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_REJECT = 0x8 + RTF_SRC = 0x10000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_CHGADDR = 0x15 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x11 + RTM_IFANNOUNCE = 0x10 + RTM_IFINFO = 0x14 + RTM_LLINFO_UPD = 0x13 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OIFINFO = 0xf + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_OOIFINFO = 0xe + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_SETGATE = 0x12 + RTM_VERSION = 0x4 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x4 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x8 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80906931 + SIOCADDRT = 0x8038720a + SIOCAIFADDR = 0x8040691a + SIOCALIFADDR = 0x8118691c + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80906932 + SIOCDELRT = 0x8038720b + SIOCDIFADDR = 0x80906919 + SIOCDIFPHYADDR = 0x80906949 + SIOCDLIFADDR = 0x8118691e + SIOCGDRVSPEC = 0xc028697b + SIOCGETPFSYNC = 0xc09069f8 + SIOCGETSGCNT = 0xc0207534 + SIOCGETVIFCNT = 0xc0287533 + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0906921 + SIOCGIFADDRPREF = 0xc0986920 + SIOCGIFALIAS = 0xc040691b + SIOCGIFBRDADDR = 0xc0906923 + SIOCGIFCAP = 0xc0206976 + SIOCGIFCONF = 0xc0106926 + SIOCGIFDATA = 0xc0986985 + SIOCGIFDLT = 0xc0906977 + SIOCGIFDSTADDR = 0xc0906922 + SIOCGIFFLAGS = 0xc0906911 + SIOCGIFGENERIC = 0xc090693a + SIOCGIFMEDIA = 0xc0306936 + SIOCGIFMETRIC = 0xc0906917 + SIOCGIFMTU = 0xc090697e + SIOCGIFNETMASK = 0xc0906925 + SIOCGIFPDSTADDR = 0xc0906948 + SIOCGIFPSRCADDR = 0xc0906947 + SIOCGLIFADDR = 0xc118691d + SIOCGLIFPHYADDR = 0xc118694b + SIOCGLINKSTR = 0xc0286987 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGVH = 0xc0906983 + SIOCIFCREATE = 0x8090697a + SIOCIFDESTROY = 0x80906979 + SIOCIFGCLONERS = 0xc0106978 + SIOCINITIFADDR = 0xc0706984 + SIOCSDRVSPEC = 0x8028697b + SIOCSETPFSYNC = 0x809069f7 + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8090690c + SIOCSIFADDRPREF = 0x8098691f + SIOCSIFBRDADDR = 0x80906913 + SIOCSIFCAP = 0x80206975 + SIOCSIFDSTADDR = 0x8090690e + SIOCSIFFLAGS = 0x80906910 + SIOCSIFGENERIC = 0x80906939 + SIOCSIFMEDIA = 0xc0906935 + SIOCSIFMETRIC = 0x80906918 + SIOCSIFMTU = 0x8090697f + SIOCSIFNETMASK = 0x80906916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSLIFPHYADDR = 0x8118694a + SIOCSLINKSTR = 0x80286988 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSVH = 0xc0906982 + SIOCZIFDATA = 0xc0986986 + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_FLAGS_MASK = 0xf0000000 + SOCK_NONBLOCK = 0x20000000 + SOCK_NOSIGPIPE = 0x40000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NOHEADER = 0x100a + SO_NOSIGPIPE = 0x800 + SO_OOBINLINE = 0x100 + SO_OVERFLOWED = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x100c + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x100b + SO_TIMESTAMP = 0x2000 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SYSCTL_VERSION = 0x1000000 + SYSCTL_VERS_0 = 0x0 + SYSCTL_VERS_1 = 0x1000000 + SYSCTL_VERS_MASK = 0xff000000 + S_ARCH1 = 0x10000 + S_ARCH2 = 0x20000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + S_LOGIN_SET = 0x1 + TCIFLUSH = 0x1 + TCIOFLUSH = 0x3 + TCOFLUSH = 0x2 + TCP_CONGCTL = 0x20 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x3 + TCP_KEEPINIT = 0x7 + TCP_KEEPINTVL = 0x5 + TCP_MAXBURST = 0x4 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x40107458 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CDTRCTS = 0x10 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGLINED = 0x40207442 + TIOCGPGRP = 0x40047477 + TIOCGQSIZE = 0x40047481 + TIOCGRANTPT = 0x20007447 + TIOCGSID = 0x40047463 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMGET = 0x40287446 + TIOCPTSNAME = 0x40287448 + TIOCRCVFRAME = 0x80087445 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x2000745f + TIOCSLINED = 0x80207443 + TIOCSPGRP = 0x80047476 + TIOCSQSIZE = 0x80047480 + TIOCSSIZE = 0x80087467 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x80047465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCXMTFRAME = 0x80087444 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALL = 0x8 + WALLSIG = 0x8 + WALTSIG = 0x4 + WCLONE = 0x4 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WNOWAIT = 0x10000 + WNOZOMBIE = 0x20000 + WOPTSCHECKED = 0x40000 + WSTOPPED = 0x7f + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x58) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x57) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x55) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x60) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5e) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x59) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5f) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x5a) + ENOSTR = syscall.Errno(0x5b) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x56) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x60) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x5c) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x20) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large or too small"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol option not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "connection timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EILSEQ", "illegal byte sequence"}, + {86, "ENOTSUP", "not supported"}, + {87, "ECANCELED", "operation Canceled"}, + {88, "EBADMSG", "bad or Corrupt message"}, + {89, "ENODATA", "no message available"}, + {90, "ENOSR", "no STREAM resources"}, + {91, "ENOSTR", "not a STREAM"}, + {92, "ETIME", "STREAM ioctl timeout"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EMULTIHOP", "multihop attempted"}, + {95, "ENOLINK", "link has been severed"}, + {96, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPWR", "power fail/restart"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go b/tests/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go new file mode 100644 index 000000000..5a6500f83 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go @@ -0,0 +1,1905 @@ +// mkerrors.sh -m32 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build 386 && openbsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m32 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BLUETOOTH = 0x20 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_ENCAP = 0x1c + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_KEY = 0x1e + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x24 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SIP = 0x1d + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x200 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRFILT = 0x4004427c + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc008427b + BIOCGETIF = 0x4020426b + BIOCGFILDROP = 0x40044278 + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044273 + BIOCGRTIMEOUT = 0x400c426e + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x20004276 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDIRFILT = 0x8004427d + BIOCSDLT = 0x8004427a + BIOCSETF = 0x80084267 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x80084277 + BIOCSFILDROP = 0x80044279 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044272 + BIOCSRTIMEOUT = 0x800c426d + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIRECTION_IN = 0x1 + BPF_DIRECTION_OUT = 0x2 + BPF_DIV = 0x30 + BPF_FILDROP_CAPTURE = 0x1 + BPF_FILDROP_DROP = 0x2 + BPF_FILDROP_PASS = 0x0 + BPF_F_DIR_IN = 0x10 + BPF_F_DIR_MASK = 0x30 + BPF_F_DIR_OUT = 0x20 + BPF_F_DIR_SHIFT = 0x4 + BPF_F_FLOWID = 0x8 + BPF_F_PRI_MASK = 0x7 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x200000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RND = 0xc0 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_BOOTTIME = 0x6 + CLOCK_MONOTONIC = 0x3 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x4 + CLOCK_UPTIME = 0x5 + CPUSTATES = 0x6 + CP_IDLE = 0x5 + CP_INTR = 0x4 + CP_NICE = 0x1 + CP_SPIN = 0x3 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0xff + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DIOCADDQUEUE = 0xc100445d + DIOCADDRULE = 0xccc84404 + DIOCADDSTATE = 0xc1084425 + DIOCCHANGERULE = 0xccc8441a + DIOCCLRIFFLAG = 0xc024445a + DIOCCLRSRCNODES = 0x20004455 + DIOCCLRSTATES = 0xc0d04412 + DIOCCLRSTATUS = 0xc0244416 + DIOCGETLIMIT = 0xc0084427 + DIOCGETQSTATS = 0xc1084460 + DIOCGETQUEUE = 0xc100445f + DIOCGETQUEUES = 0xc100445e + DIOCGETRULE = 0xccc84407 + DIOCGETRULES = 0xccc84406 + DIOCGETRULESET = 0xc444443b + DIOCGETRULESETS = 0xc444443a + DIOCGETSRCNODES = 0xc0084454 + DIOCGETSTATE = 0xc1084413 + DIOCGETSTATES = 0xc0084419 + DIOCGETSTATUS = 0xc1e84415 + DIOCGETSYNFLWATS = 0xc0084463 + DIOCGETTIMEOUT = 0xc008441e + DIOCIGETIFACES = 0xc0244457 + DIOCKILLSRCNODES = 0xc068445b + DIOCKILLSTATES = 0xc0d04429 + DIOCNATLOOK = 0xc0504417 + DIOCOSFPADD = 0xc084444f + DIOCOSFPFLUSH = 0x2000444e + DIOCOSFPGET = 0xc0844450 + DIOCRADDADDRS = 0xc44c4443 + DIOCRADDTABLES = 0xc44c443d + DIOCRCLRADDRS = 0xc44c4442 + DIOCRCLRASTATS = 0xc44c4448 + DIOCRCLRTABLES = 0xc44c443c + DIOCRCLRTSTATS = 0xc44c4441 + DIOCRDELADDRS = 0xc44c4444 + DIOCRDELTABLES = 0xc44c443e + DIOCRGETADDRS = 0xc44c4446 + DIOCRGETASTATS = 0xc44c4447 + DIOCRGETTABLES = 0xc44c443f + DIOCRGETTSTATS = 0xc44c4440 + DIOCRINADEFINE = 0xc44c444d + DIOCRSETADDRS = 0xc44c4445 + DIOCRSETTFLAGS = 0xc44c444a + DIOCRTSTADDRS = 0xc44c4449 + DIOCSETDEBUG = 0xc0044418 + DIOCSETHOSTID = 0xc0044456 + DIOCSETIFFLAG = 0xc0244459 + DIOCSETLIMIT = 0xc0084428 + DIOCSETREASS = 0xc004445c + DIOCSETSTATUSIF = 0xc0244414 + DIOCSETSYNCOOKIES = 0xc0014462 + DIOCSETSYNFLWATS = 0xc0084461 + DIOCSETTIMEOUT = 0xc008441d + DIOCSTART = 0x20004401 + DIOCSTOP = 0x20004402 + DIOCXBEGIN = 0xc00c4451 + DIOCXCOMMIT = 0xc00c4452 + DIOCXROLLBACK = 0xc00c4453 + DLT_ARCNET = 0x7 + DLT_ATM_RFC1483 = 0xb + DLT_AX25 = 0x3 + DLT_CHAOS = 0x5 + DLT_C_HDLC = 0x68 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0xd + DLT_FDDI = 0xa + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_LOOP = 0xc + DLT_MPLS = 0xdb + DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_SERIAL = 0x32 + DLT_PRONET = 0x4 + DLT_RAW = 0xe + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_USBPCAP = 0xf9 + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMT_TAGOVF = 0x1 + EMUL_ENABLED = 0x1 + EMUL_NATIVE = 0x2 + ENDRUNDISC = 0x9 + ETH64_8021_RSVD_MASK = 0xfffffffffff0 + ETH64_8021_RSVD_PREFIX = 0x180c2000000 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_AOE = 0x88a2 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_EAPOL = 0x888e + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LLDP = 0x88cc + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MACSEC = 0x88e5 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NHRP = 0x2001 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NSH = 0x984f + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PBB = 0x88e7 + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_QINQ = 0x88a8 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOW = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_ALIGN = 0x2 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_DIX_LEN = 0x600 + ETHER_MAX_HARDMTU_LEN = 0xff9b + ETHER_MAX_LEN = 0x5ee + ETHER_MIN_LEN = 0x40 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = -0x3 + EVFILT_DEVICE = -0x8 + EVFILT_EXCEPT = -0x9 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0x9 + EVFILT_TIMER = -0x7 + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EVL_ENCAPLEN = 0x4 + EVL_PRIO_BITS = 0xd + EVL_PRIO_MAX = 0x7 + EVL_VLID_MASK = 0xfff + EVL_VLID_MAX = 0xffe + EVL_VLID_MIN = 0x1 + EVL_VLID_NULL = 0x0 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf800 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xa + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETOWN = 0x5 + F_ISATTY = 0xb + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8e52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x20 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BLUETOOTH = 0xf8 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf7 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DUMMY = 0xf1 + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf3 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MBIM = 0xfa + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFLOW = 0xf9 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf2 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_WIREGUARD = 0xfb + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_HOST = 0x1 + IN_RFC3021_NET = 0xfffffffe + IN_RFC3021_NSHIFT = 0x1f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x103 + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_AUTH_LEVEL = 0x35 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_ESP_NETWORK_LEVEL = 0x37 + IPV6_ESP_TRANS_LEVEL = 0x36 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPCOMP_LEVEL = 0x3c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MINHOPCOUNT = 0x41 + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_OPTIONS = 0x1 + IPV6_PATHMTU = 0x2c + IPV6_PIPEX = 0x3f + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVDSTPORT = 0x40 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTABLE = 0x1021 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_AUTH_LEVEL = 0x14 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_ESP_NETWORK_LEVEL = 0x16 + IP_ESP_TRANS_LEVEL = 0x15 + IP_HDRINCL = 0x2 + IP_IPCOMP_LEVEL = 0x1d + IP_IPDEFTTL = 0x25 + IP_IPSECFLOWINFO = 0x24 + IP_IPSEC_LOCAL_AUTH = 0x1b + IP_IPSEC_LOCAL_CRED = 0x19 + IP_IPSEC_LOCAL_ID = 0x17 + IP_IPSEC_REMOTE_AUTH = 0x1c + IP_IPSEC_REMOTE_CRED = 0x1a + IP_IPSEC_REMOTE_ID = 0x18 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0xfff + IP_MF = 0x2000 + IP_MINTTL = 0x20 + IP_MIN_MEMBERSHIPS = 0xf + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PIPEX = 0x22 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVDSTPORT = 0x21 + IP_RECVIF = 0x1e + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRTABLE = 0x23 + IP_RECVTTL = 0x1f + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RTABLE = 0x1021 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 + IUCLC = 0x1000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LCNT_OVERLOAD_FLUSH = 0x6 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_CONCEAL = 0x8000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FLAGMASK = 0xfff7 + MAP_HASSEMAPHORE = 0x0 + MAP_INHERIT = 0x0 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_INHERIT_ZERO = 0x3 + MAP_NOEXTEND = 0x0 + MAP_NORESERVE = 0x0 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x0 + MAP_SHARED = 0x1 + MAP_STACK = 0x4000 + MAP_TRYFIXED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_DOOMED = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_NOATIME = 0x8000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOPERM = 0x20 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x4000000 + MNT_STALLED = 0x100000 + MNT_SWAPPABLE = 0x200000 + MNT_SYNCHRONOUS = 0x2 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x400ffff + MNT_WAIT = 0x1 + MNT_WANTRDWR = 0x2000000 + MNT_WXALLOWED = 0x800 + MOUNT_AFS = "afs" + MOUNT_CD9660 = "cd9660" + MOUNT_EXT2FS = "ext2fs" + MOUNT_FFS = "ffs" + MOUNT_FUSEFS = "fuse" + MOUNT_MFS = "mfs" + MOUNT_MSDOS = "msdos" + MOUNT_NCPFS = "ncpfs" + MOUNT_NFS = "nfs" + MOUNT_NTFS = "ntfs" + MOUNT_TMPFS = "tmpfs" + MOUNT_UDF = "udf" + MOUNT_UFS = "ffs" + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_MCAST = 0x200 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x1000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x4 + MS_SYNC = 0x2 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFNAMES = 0x6 + NET_RT_MAXID = 0x8 + NET_RT_SOURCE = 0x7 + NET_RT_STATS = 0x4 + NET_RT_TABLE = 0x5 + NFDBITS = 0x20 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHANGE = 0x1 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EOF = 0x2 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_OOB = 0x4 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRUNCATE = 0x80 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OLCUC = 0x20 + ONLCR = 0x2 + ONLRET = 0x80 + ONOCR = 0x40 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x10000 + O_CREAT = 0x200 + O_DIRECTORY = 0x20000 + O_DSYNC = 0x80 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x80 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PF_FLUSH = 0x1 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BFD = 0xb + RTAX_BRD = 0x7 + RTAX_DNS = 0xc + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_LABEL = 0xa + RTAX_MAX = 0xf + RTAX_NETMASK = 0x2 + RTAX_SEARCH = 0xe + RTAX_SRC = 0x8 + RTAX_SRCMASK = 0x9 + RTAX_STATIC = 0xd + RTA_AUTHOR = 0x40 + RTA_BFD = 0x800 + RTA_BRD = 0x80 + RTA_DNS = 0x1000 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_LABEL = 0x400 + RTA_NETMASK = 0x4 + RTA_SEARCH = 0x4000 + RTA_SRC = 0x100 + RTA_SRCMASK = 0x200 + RTA_STATIC = 0x2000 + RTF_ANNOUNCE = 0x4000 + RTF_BFD = 0x1000000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CACHED = 0x20000 + RTF_CLONED = 0x10000 + RTF_CLONING = 0x100 + RTF_CONNECTED = 0x800000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FMASK = 0x110fc08 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MPATH = 0x40000 + RTF_MPLS = 0x100000 + RTF_MULTICAST = 0x200 + RTF_PERMANENT_ARP = 0x2000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x2000 + RTF_REJECT = 0x8 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_USETRAILERS = 0x8000 + RTM_80211INFO = 0x15 + RTM_ADD = 0x1 + RTM_BFD = 0x12 + RTM_CHANGE = 0x3 + RTM_CHGADDRATTR = 0x14 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DESYNC = 0x10 + RTM_GET = 0x4 + RTM_IFANNOUNCE = 0xf + RTM_IFINFO = 0xe + RTM_INVALIDATE = 0x11 + RTM_LOSING = 0x5 + RTM_MAXSIZE = 0x800 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_PROPOSAL = 0x13 + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_SOURCE = 0x16 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RT_TABLEID_BITS = 0x8 + RT_TABLEID_MASK = 0xff + RT_TABLEID_MAX = 0xff + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x4 + SEEK_CUR = 0x1 + SEEK_END = 0x2 + SEEK_SET = 0x0 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80246987 + SIOCATMARK = 0x40047307 + SIOCBRDGADD = 0x805c693c + SIOCBRDGADDL = 0x805c6949 + SIOCBRDGADDS = 0x805c6941 + SIOCBRDGARL = 0x808c694d + SIOCBRDGDADDR = 0x81286947 + SIOCBRDGDEL = 0x805c693d + SIOCBRDGDELS = 0x805c6942 + SIOCBRDGFLUSH = 0x805c6948 + SIOCBRDGFRL = 0x808c694e + SIOCBRDGGCACHE = 0xc0146941 + SIOCBRDGGFD = 0xc0146952 + SIOCBRDGGHT = 0xc0146951 + SIOCBRDGGIFFLGS = 0xc05c693e + SIOCBRDGGMA = 0xc0146953 + SIOCBRDGGPARAM = 0xc03c6958 + SIOCBRDGGPRI = 0xc0146950 + SIOCBRDGGRL = 0xc028694f + SIOCBRDGGTO = 0xc0146946 + SIOCBRDGIFS = 0xc05c6942 + SIOCBRDGRTS = 0xc0186943 + SIOCBRDGSADDR = 0xc1286944 + SIOCBRDGSCACHE = 0x80146940 + SIOCBRDGSFD = 0x80146952 + SIOCBRDGSHT = 0x80146951 + SIOCBRDGSIFCOST = 0x805c6955 + SIOCBRDGSIFFLGS = 0x805c693f + SIOCBRDGSIFPRIO = 0x805c6954 + SIOCBRDGSIFPROT = 0x805c694a + SIOCBRDGSMA = 0x80146953 + SIOCBRDGSPRI = 0x80146950 + SIOCBRDGSPROTO = 0x8014695a + SIOCBRDGSTO = 0x80146945 + SIOCBRDGSTXHC = 0x80146959 + SIOCDELLABEL = 0x80206997 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80246989 + SIOCDIFPARENT = 0x802069b4 + SIOCDIFPHYADDR = 0x80206949 + SIOCDPWE3NEIGHBOR = 0x802069de + SIOCDVNETID = 0x802069af + SIOCGETKALIVE = 0xc01869a4 + SIOCGETLABEL = 0x8020699a + SIOCGETMPWCFG = 0xc02069ae + SIOCGETPFLOW = 0xc02069fe + SIOCGETPFSYNC = 0xc02069f8 + SIOCGETSGCNT = 0xc0147534 + SIOCGETVIFCNT = 0xc0147533 + SIOCGETVLAN = 0xc0206990 + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCONF = 0xc0086924 + SIOCGIFDATA = 0xc020691b + SIOCGIFDESCR = 0xc0206981 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGATTR = 0xc024698b + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGLIST = 0xc024698d + SIOCGIFGMEMB = 0xc024698a + SIOCGIFGROUP = 0xc0246988 + SIOCGIFHARDMTU = 0xc02069a5 + SIOCGIFLLPRIO = 0xc02069b6 + SIOCGIFMEDIA = 0xc0386938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc020697e + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPAIR = 0xc02069b1 + SIOCGIFPARENT = 0xc02069b3 + SIOCGIFPRIORITY = 0xc020699c + SIOCGIFRDOMAIN = 0xc02069a0 + SIOCGIFRTLABEL = 0xc0206983 + SIOCGIFRXR = 0x802069aa + SIOCGIFSFFPAGE = 0xc1126939 + SIOCGIFXFLAGS = 0xc020699e + SIOCGLIFPHYADDR = 0xc218694b + SIOCGLIFPHYDF = 0xc02069c2 + SIOCGLIFPHYECN = 0xc02069c8 + SIOCGLIFPHYRTABLE = 0xc02069a2 + SIOCGLIFPHYTTL = 0xc02069a9 + SIOCGPGRP = 0x40047309 + SIOCGPWE3 = 0xc0206998 + SIOCGPWE3CTRLWORD = 0xc02069dc + SIOCGPWE3FAT = 0xc02069dd + SIOCGPWE3NEIGHBOR = 0xc21869de + SIOCGRXHPRIO = 0xc02069db + SIOCGSPPPPARAMS = 0xc0206994 + SIOCGTXHPRIO = 0xc02069c6 + SIOCGUMBINFO = 0xc02069be + SIOCGUMBPARAM = 0xc02069c0 + SIOCGVH = 0xc02069f6 + SIOCGVNETFLOWID = 0xc02069c4 + SIOCGVNETID = 0xc02069a7 + SIOCIFAFATTACH = 0x801169ab + SIOCIFAFDETACH = 0x801169ac + SIOCIFCREATE = 0x8020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc00c6978 + SIOCSETKALIVE = 0x801869a3 + SIOCSETLABEL = 0x80206999 + SIOCSETMPWCFG = 0x802069ad + SIOCSETPFLOW = 0x802069fd + SIOCSETPFSYNC = 0x802069f7 + SIOCSETVLAN = 0x8020698f + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFDESCR = 0x80206980 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGATTR = 0x8024698c + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020691f + SIOCSIFLLPRIO = 0x802069b5 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x8020697f + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPAIR = 0x802069b0 + SIOCSIFPARENT = 0x802069b2 + SIOCSIFPRIORITY = 0x8020699b + SIOCSIFRDOMAIN = 0x8020699f + SIOCSIFRTLABEL = 0x80206982 + SIOCSIFXFLAGS = 0x8020699d + SIOCSLIFPHYADDR = 0x8218694a + SIOCSLIFPHYDF = 0x802069c1 + SIOCSLIFPHYECN = 0x802069c7 + SIOCSLIFPHYRTABLE = 0x802069a1 + SIOCSLIFPHYTTL = 0x802069a8 + SIOCSPGRP = 0x80047308 + SIOCSPWE3CTRLWORD = 0x802069dc + SIOCSPWE3FAT = 0x802069dd + SIOCSPWE3NEIGHBOR = 0x821869de + SIOCSRXHPRIO = 0x802069db + SIOCSSPPPPARAMS = 0x80206993 + SIOCSTXHPRIO = 0x802069c5 + SIOCSUMBPARAM = 0x802069bf + SIOCSVH = 0xc02069f5 + SIOCSVNETFLOWID = 0x802069c3 + SIOCSVNETID = 0x802069a6 + SOCK_CLOEXEC = 0x8000 + SOCK_DGRAM = 0x2 + SOCK_DNS = 0x1000 + SOCK_NONBLOCK = 0x4000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BINDANY = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DOMAIN = 0x1024 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NETPROC = 0x1020 + SO_OOBINLINE = 0x100 + SO_PEERCRED = 0x1022 + SO_PROTOCOL = 0x1025 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RTABLE = 0x1021 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SPLICE = 0x1023 + SO_TIMESTAMP = 0x800 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_ZEROIZE = 0x2000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCPOPT_EOL = 0x0 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_HDR = 0x1010500 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SACK_PERMIT_HDR = 0x1010402 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_TSTAMP_HDR = 0x101080a + TCPOPT_WINDOW = 0x3 + TCP_INFO = 0x9 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x3 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x4 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOPUSH = 0x10 + TCP_SACKHOLE_LIMIT = 0x80 + TCP_SACK_ENABLE = 0x8 + TCSAFLUSH = 0x2 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCHKVERAUTH = 0x2000741e + TIOCCLRVERAUTH = 0x2000741d + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_PPS = 0x10 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047463 + TIOCGTSTAMP = 0x400c745b + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMODG = 0x4004746a + TIOCMODS = 0x8004746d + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSETVERAUTH = 0x8004741c + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x8004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTOP = 0x2000746f + TIOCSTSTAMP = 0x8008745a + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCUCNTL_CBRK = 0x7a + TIOCUCNTL_SBRK = 0x7b + TOSTOP = 0x400000 + UTIME_NOW = -0x2 + UTIME_OMIT = -0x1 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_ANONMIN = 0x7 + VM_LOADAVG = 0x2 + VM_MALLOC_CONF = 0xc + VM_MAXID = 0xd + VM_MAXSLP = 0xa + VM_METER = 0x1 + VM_NKMEMPAGES = 0x6 + VM_PSSTRINGS = 0x3 + VM_SWAPENCRYPT = 0x5 + VM_USPACE = 0xb + VM_UVMEXP = 0x4 + VM_VNODEMIN = 0x9 + VM_VTEXTMIN = 0x8 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALTSIG = 0x4 + WCONTINUED = 0x8 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WUNTRACED = 0x2 + XCASE = 0x1000000 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x5c) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x58) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x59) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EIPSEC = syscall.Errno(0x52) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x5f) + ELOOP = syscall.Errno(0x3e) + EMEDIUMTYPE = syscall.Errno(0x56) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x53) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOMEDIUM = syscall.Errno(0x55) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5a) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5d) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x5b) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x57) + EOWNERDEAD = syscall.Errno(0x5e) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5f) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disk quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC program not available"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIPSEC", "IPsec processing failure"}, + {83, "ENOATTR", "attribute not found"}, + {84, "EILSEQ", "illegal byte sequence"}, + {85, "ENOMEDIUM", "no medium found"}, + {86, "EMEDIUMTYPE", "wrong medium type"}, + {87, "EOVERFLOW", "value too large to be stored in data type"}, + {88, "ECANCELED", "operation canceled"}, + {89, "EIDRM", "identifier removed"}, + {90, "ENOMSG", "no message of desired type"}, + {91, "ENOTSUP", "not supported"}, + {92, "EBADMSG", "bad message"}, + {93, "ENOTRECOVERABLE", "state not recoverable"}, + {94, "EOWNERDEAD", "previous owner died"}, + {95, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread AST"}, + {28672, "SIGSTKSZ", "unknown signal"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go b/tests/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go new file mode 100644 index 000000000..a5aeeb979 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go @@ -0,0 +1,1905 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && openbsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BLUETOOTH = 0x20 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_ENCAP = 0x1c + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_KEY = 0x1e + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x24 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SIP = 0x1d + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x200 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRFILT = 0x4004427c + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc010427b + BIOCGETIF = 0x4020426b + BIOCGFILDROP = 0x40044278 + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044273 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x20004276 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDIRFILT = 0x8004427d + BIOCSDLT = 0x8004427a + BIOCSETF = 0x80104267 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x80104277 + BIOCSFILDROP = 0x80044279 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044272 + BIOCSRTIMEOUT = 0x8010426d + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIRECTION_IN = 0x1 + BPF_DIRECTION_OUT = 0x2 + BPF_DIV = 0x30 + BPF_FILDROP_CAPTURE = 0x1 + BPF_FILDROP_DROP = 0x2 + BPF_FILDROP_PASS = 0x0 + BPF_F_DIR_IN = 0x10 + BPF_F_DIR_MASK = 0x30 + BPF_F_DIR_OUT = 0x20 + BPF_F_DIR_SHIFT = 0x4 + BPF_F_FLOWID = 0x8 + BPF_F_PRI_MASK = 0x7 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x200000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RND = 0xc0 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_BOOTTIME = 0x6 + CLOCK_MONOTONIC = 0x3 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x4 + CLOCK_UPTIME = 0x5 + CPUSTATES = 0x6 + CP_IDLE = 0x5 + CP_INTR = 0x4 + CP_NICE = 0x1 + CP_SPIN = 0x3 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0xff + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DIOCADDQUEUE = 0xc110445d + DIOCADDRULE = 0xcd604404 + DIOCADDSTATE = 0xc1084425 + DIOCCHANGERULE = 0xcd60441a + DIOCCLRIFFLAG = 0xc028445a + DIOCCLRSRCNODES = 0x20004455 + DIOCCLRSTATES = 0xc0e04412 + DIOCCLRSTATUS = 0xc0284416 + DIOCGETLIMIT = 0xc0084427 + DIOCGETQSTATS = 0xc1204460 + DIOCGETQUEUE = 0xc110445f + DIOCGETQUEUES = 0xc110445e + DIOCGETRULE = 0xcd604407 + DIOCGETRULES = 0xcd604406 + DIOCGETRULESET = 0xc444443b + DIOCGETRULESETS = 0xc444443a + DIOCGETSRCNODES = 0xc0104454 + DIOCGETSTATE = 0xc1084413 + DIOCGETSTATES = 0xc0104419 + DIOCGETSTATUS = 0xc1e84415 + DIOCGETSYNFLWATS = 0xc0084463 + DIOCGETTIMEOUT = 0xc008441e + DIOCIGETIFACES = 0xc0284457 + DIOCKILLSRCNODES = 0xc080445b + DIOCKILLSTATES = 0xc0e04429 + DIOCNATLOOK = 0xc0504417 + DIOCOSFPADD = 0xc088444f + DIOCOSFPFLUSH = 0x2000444e + DIOCOSFPGET = 0xc0884450 + DIOCRADDADDRS = 0xc4504443 + DIOCRADDTABLES = 0xc450443d + DIOCRCLRADDRS = 0xc4504442 + DIOCRCLRASTATS = 0xc4504448 + DIOCRCLRTABLES = 0xc450443c + DIOCRCLRTSTATS = 0xc4504441 + DIOCRDELADDRS = 0xc4504444 + DIOCRDELTABLES = 0xc450443e + DIOCRGETADDRS = 0xc4504446 + DIOCRGETASTATS = 0xc4504447 + DIOCRGETTABLES = 0xc450443f + DIOCRGETTSTATS = 0xc4504440 + DIOCRINADEFINE = 0xc450444d + DIOCRSETADDRS = 0xc4504445 + DIOCRSETTFLAGS = 0xc450444a + DIOCRTSTADDRS = 0xc4504449 + DIOCSETDEBUG = 0xc0044418 + DIOCSETHOSTID = 0xc0044456 + DIOCSETIFFLAG = 0xc0284459 + DIOCSETLIMIT = 0xc0084428 + DIOCSETREASS = 0xc004445c + DIOCSETSTATUSIF = 0xc0284414 + DIOCSETSYNCOOKIES = 0xc0014462 + DIOCSETSYNFLWATS = 0xc0084461 + DIOCSETTIMEOUT = 0xc008441d + DIOCSTART = 0x20004401 + DIOCSTOP = 0x20004402 + DIOCXBEGIN = 0xc0104451 + DIOCXCOMMIT = 0xc0104452 + DIOCXROLLBACK = 0xc0104453 + DLT_ARCNET = 0x7 + DLT_ATM_RFC1483 = 0xb + DLT_AX25 = 0x3 + DLT_CHAOS = 0x5 + DLT_C_HDLC = 0x68 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0xd + DLT_FDDI = 0xa + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_LOOP = 0xc + DLT_MPLS = 0xdb + DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_SERIAL = 0x32 + DLT_PRONET = 0x4 + DLT_RAW = 0xe + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_USBPCAP = 0xf9 + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMT_TAGOVF = 0x1 + EMUL_ENABLED = 0x1 + EMUL_NATIVE = 0x2 + ENDRUNDISC = 0x9 + ETH64_8021_RSVD_MASK = 0xfffffffffff0 + ETH64_8021_RSVD_PREFIX = 0x180c2000000 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_AOE = 0x88a2 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_EAPOL = 0x888e + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LLDP = 0x88cc + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MACSEC = 0x88e5 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NHRP = 0x2001 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NSH = 0x984f + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PBB = 0x88e7 + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_QINQ = 0x88a8 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOW = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_ALIGN = 0x2 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_DIX_LEN = 0x600 + ETHER_MAX_HARDMTU_LEN = 0xff9b + ETHER_MAX_LEN = 0x5ee + ETHER_MIN_LEN = 0x40 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = -0x3 + EVFILT_DEVICE = -0x8 + EVFILT_EXCEPT = -0x9 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0x9 + EVFILT_TIMER = -0x7 + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EVL_ENCAPLEN = 0x4 + EVL_PRIO_BITS = 0xd + EVL_PRIO_MAX = 0x7 + EVL_VLID_MASK = 0xfff + EVL_VLID_MAX = 0xffe + EVL_VLID_MIN = 0x1 + EVL_VLID_NULL = 0x0 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf800 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xa + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETOWN = 0x5 + F_ISATTY = 0xb + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8e52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x20 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BLUETOOTH = 0xf8 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf7 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DUMMY = 0xf1 + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf3 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MBIM = 0xfa + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFLOW = 0xf9 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf2 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_WIREGUARD = 0xfb + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_HOST = 0x1 + IN_RFC3021_NET = 0xfffffffe + IN_RFC3021_NSHIFT = 0x1f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x103 + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_AUTH_LEVEL = 0x35 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_ESP_NETWORK_LEVEL = 0x37 + IPV6_ESP_TRANS_LEVEL = 0x36 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPCOMP_LEVEL = 0x3c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MINHOPCOUNT = 0x41 + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_OPTIONS = 0x1 + IPV6_PATHMTU = 0x2c + IPV6_PIPEX = 0x3f + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVDSTPORT = 0x40 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTABLE = 0x1021 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_AUTH_LEVEL = 0x14 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_ESP_NETWORK_LEVEL = 0x16 + IP_ESP_TRANS_LEVEL = 0x15 + IP_HDRINCL = 0x2 + IP_IPCOMP_LEVEL = 0x1d + IP_IPDEFTTL = 0x25 + IP_IPSECFLOWINFO = 0x24 + IP_IPSEC_LOCAL_AUTH = 0x1b + IP_IPSEC_LOCAL_CRED = 0x19 + IP_IPSEC_LOCAL_ID = 0x17 + IP_IPSEC_REMOTE_AUTH = 0x1c + IP_IPSEC_REMOTE_CRED = 0x1a + IP_IPSEC_REMOTE_ID = 0x18 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0xfff + IP_MF = 0x2000 + IP_MINTTL = 0x20 + IP_MIN_MEMBERSHIPS = 0xf + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PIPEX = 0x22 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVDSTPORT = 0x21 + IP_RECVIF = 0x1e + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRTABLE = 0x23 + IP_RECVTTL = 0x1f + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RTABLE = 0x1021 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 + IUCLC = 0x1000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LCNT_OVERLOAD_FLUSH = 0x6 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_CONCEAL = 0x8000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FLAGMASK = 0xfff7 + MAP_HASSEMAPHORE = 0x0 + MAP_INHERIT = 0x0 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_INHERIT_ZERO = 0x3 + MAP_NOEXTEND = 0x0 + MAP_NORESERVE = 0x0 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x0 + MAP_SHARED = 0x1 + MAP_STACK = 0x4000 + MAP_TRYFIXED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_DOOMED = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_NOATIME = 0x8000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOPERM = 0x20 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x4000000 + MNT_STALLED = 0x100000 + MNT_SWAPPABLE = 0x200000 + MNT_SYNCHRONOUS = 0x2 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x400ffff + MNT_WAIT = 0x1 + MNT_WANTRDWR = 0x2000000 + MNT_WXALLOWED = 0x800 + MOUNT_AFS = "afs" + MOUNT_CD9660 = "cd9660" + MOUNT_EXT2FS = "ext2fs" + MOUNT_FFS = "ffs" + MOUNT_FUSEFS = "fuse" + MOUNT_MFS = "mfs" + MOUNT_MSDOS = "msdos" + MOUNT_NCPFS = "ncpfs" + MOUNT_NFS = "nfs" + MOUNT_NTFS = "ntfs" + MOUNT_TMPFS = "tmpfs" + MOUNT_UDF = "udf" + MOUNT_UFS = "ffs" + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_MCAST = 0x200 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x1000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x4 + MS_SYNC = 0x2 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFNAMES = 0x6 + NET_RT_MAXID = 0x8 + NET_RT_SOURCE = 0x7 + NET_RT_STATS = 0x4 + NET_RT_TABLE = 0x5 + NFDBITS = 0x20 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHANGE = 0x1 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EOF = 0x2 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_OOB = 0x4 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRUNCATE = 0x80 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OLCUC = 0x20 + ONLCR = 0x2 + ONLRET = 0x80 + ONOCR = 0x40 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x10000 + O_CREAT = 0x200 + O_DIRECTORY = 0x20000 + O_DSYNC = 0x80 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x80 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PF_FLUSH = 0x1 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BFD = 0xb + RTAX_BRD = 0x7 + RTAX_DNS = 0xc + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_LABEL = 0xa + RTAX_MAX = 0xf + RTAX_NETMASK = 0x2 + RTAX_SEARCH = 0xe + RTAX_SRC = 0x8 + RTAX_SRCMASK = 0x9 + RTAX_STATIC = 0xd + RTA_AUTHOR = 0x40 + RTA_BFD = 0x800 + RTA_BRD = 0x80 + RTA_DNS = 0x1000 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_LABEL = 0x400 + RTA_NETMASK = 0x4 + RTA_SEARCH = 0x4000 + RTA_SRC = 0x100 + RTA_SRCMASK = 0x200 + RTA_STATIC = 0x2000 + RTF_ANNOUNCE = 0x4000 + RTF_BFD = 0x1000000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CACHED = 0x20000 + RTF_CLONED = 0x10000 + RTF_CLONING = 0x100 + RTF_CONNECTED = 0x800000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FMASK = 0x110fc08 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MPATH = 0x40000 + RTF_MPLS = 0x100000 + RTF_MULTICAST = 0x200 + RTF_PERMANENT_ARP = 0x2000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x2000 + RTF_REJECT = 0x8 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_USETRAILERS = 0x8000 + RTM_80211INFO = 0x15 + RTM_ADD = 0x1 + RTM_BFD = 0x12 + RTM_CHANGE = 0x3 + RTM_CHGADDRATTR = 0x14 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DESYNC = 0x10 + RTM_GET = 0x4 + RTM_IFANNOUNCE = 0xf + RTM_IFINFO = 0xe + RTM_INVALIDATE = 0x11 + RTM_LOSING = 0x5 + RTM_MAXSIZE = 0x800 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_PROPOSAL = 0x13 + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_SOURCE = 0x16 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RT_TABLEID_BITS = 0x8 + RT_TABLEID_MASK = 0xff + RT_TABLEID_MAX = 0xff + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x4 + SEEK_CUR = 0x1 + SEEK_END = 0x2 + SEEK_SET = 0x0 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80286987 + SIOCATMARK = 0x40047307 + SIOCBRDGADD = 0x8060693c + SIOCBRDGADDL = 0x80606949 + SIOCBRDGADDS = 0x80606941 + SIOCBRDGARL = 0x808c694d + SIOCBRDGDADDR = 0x81286947 + SIOCBRDGDEL = 0x8060693d + SIOCBRDGDELS = 0x80606942 + SIOCBRDGFLUSH = 0x80606948 + SIOCBRDGFRL = 0x808c694e + SIOCBRDGGCACHE = 0xc0146941 + SIOCBRDGGFD = 0xc0146952 + SIOCBRDGGHT = 0xc0146951 + SIOCBRDGGIFFLGS = 0xc060693e + SIOCBRDGGMA = 0xc0146953 + SIOCBRDGGPARAM = 0xc0406958 + SIOCBRDGGPRI = 0xc0146950 + SIOCBRDGGRL = 0xc030694f + SIOCBRDGGTO = 0xc0146946 + SIOCBRDGIFS = 0xc0606942 + SIOCBRDGRTS = 0xc0206943 + SIOCBRDGSADDR = 0xc1286944 + SIOCBRDGSCACHE = 0x80146940 + SIOCBRDGSFD = 0x80146952 + SIOCBRDGSHT = 0x80146951 + SIOCBRDGSIFCOST = 0x80606955 + SIOCBRDGSIFFLGS = 0x8060693f + SIOCBRDGSIFPRIO = 0x80606954 + SIOCBRDGSIFPROT = 0x8060694a + SIOCBRDGSMA = 0x80146953 + SIOCBRDGSPRI = 0x80146950 + SIOCBRDGSPROTO = 0x8014695a + SIOCBRDGSTO = 0x80146945 + SIOCBRDGSTXHC = 0x80146959 + SIOCDELLABEL = 0x80206997 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80286989 + SIOCDIFPARENT = 0x802069b4 + SIOCDIFPHYADDR = 0x80206949 + SIOCDPWE3NEIGHBOR = 0x802069de + SIOCDVNETID = 0x802069af + SIOCGETKALIVE = 0xc01869a4 + SIOCGETLABEL = 0x8020699a + SIOCGETMPWCFG = 0xc02069ae + SIOCGETPFLOW = 0xc02069fe + SIOCGETPFSYNC = 0xc02069f8 + SIOCGETSGCNT = 0xc0207534 + SIOCGETVIFCNT = 0xc0287533 + SIOCGETVLAN = 0xc0206990 + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCONF = 0xc0106924 + SIOCGIFDATA = 0xc020691b + SIOCGIFDESCR = 0xc0206981 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGATTR = 0xc028698b + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGLIST = 0xc028698d + SIOCGIFGMEMB = 0xc028698a + SIOCGIFGROUP = 0xc0286988 + SIOCGIFHARDMTU = 0xc02069a5 + SIOCGIFLLPRIO = 0xc02069b6 + SIOCGIFMEDIA = 0xc0406938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc020697e + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPAIR = 0xc02069b1 + SIOCGIFPARENT = 0xc02069b3 + SIOCGIFPRIORITY = 0xc020699c + SIOCGIFRDOMAIN = 0xc02069a0 + SIOCGIFRTLABEL = 0xc0206983 + SIOCGIFRXR = 0x802069aa + SIOCGIFSFFPAGE = 0xc1126939 + SIOCGIFXFLAGS = 0xc020699e + SIOCGLIFPHYADDR = 0xc218694b + SIOCGLIFPHYDF = 0xc02069c2 + SIOCGLIFPHYECN = 0xc02069c8 + SIOCGLIFPHYRTABLE = 0xc02069a2 + SIOCGLIFPHYTTL = 0xc02069a9 + SIOCGPGRP = 0x40047309 + SIOCGPWE3 = 0xc0206998 + SIOCGPWE3CTRLWORD = 0xc02069dc + SIOCGPWE3FAT = 0xc02069dd + SIOCGPWE3NEIGHBOR = 0xc21869de + SIOCGRXHPRIO = 0xc02069db + SIOCGSPPPPARAMS = 0xc0206994 + SIOCGTXHPRIO = 0xc02069c6 + SIOCGUMBINFO = 0xc02069be + SIOCGUMBPARAM = 0xc02069c0 + SIOCGVH = 0xc02069f6 + SIOCGVNETFLOWID = 0xc02069c4 + SIOCGVNETID = 0xc02069a7 + SIOCIFAFATTACH = 0x801169ab + SIOCIFAFDETACH = 0x801169ac + SIOCIFCREATE = 0x8020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSETKALIVE = 0x801869a3 + SIOCSETLABEL = 0x80206999 + SIOCSETMPWCFG = 0x802069ad + SIOCSETPFLOW = 0x802069fd + SIOCSETPFSYNC = 0x802069f7 + SIOCSETVLAN = 0x8020698f + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFDESCR = 0x80206980 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGATTR = 0x8028698c + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020691f + SIOCSIFLLPRIO = 0x802069b5 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x8020697f + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPAIR = 0x802069b0 + SIOCSIFPARENT = 0x802069b2 + SIOCSIFPRIORITY = 0x8020699b + SIOCSIFRDOMAIN = 0x8020699f + SIOCSIFRTLABEL = 0x80206982 + SIOCSIFXFLAGS = 0x8020699d + SIOCSLIFPHYADDR = 0x8218694a + SIOCSLIFPHYDF = 0x802069c1 + SIOCSLIFPHYECN = 0x802069c7 + SIOCSLIFPHYRTABLE = 0x802069a1 + SIOCSLIFPHYTTL = 0x802069a8 + SIOCSPGRP = 0x80047308 + SIOCSPWE3CTRLWORD = 0x802069dc + SIOCSPWE3FAT = 0x802069dd + SIOCSPWE3NEIGHBOR = 0x821869de + SIOCSRXHPRIO = 0x802069db + SIOCSSPPPPARAMS = 0x80206993 + SIOCSTXHPRIO = 0x802069c5 + SIOCSUMBPARAM = 0x802069bf + SIOCSVH = 0xc02069f5 + SIOCSVNETFLOWID = 0x802069c3 + SIOCSVNETID = 0x802069a6 + SOCK_CLOEXEC = 0x8000 + SOCK_DGRAM = 0x2 + SOCK_DNS = 0x1000 + SOCK_NONBLOCK = 0x4000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BINDANY = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DOMAIN = 0x1024 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NETPROC = 0x1020 + SO_OOBINLINE = 0x100 + SO_PEERCRED = 0x1022 + SO_PROTOCOL = 0x1025 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RTABLE = 0x1021 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SPLICE = 0x1023 + SO_TIMESTAMP = 0x800 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_ZEROIZE = 0x2000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCPOPT_EOL = 0x0 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_HDR = 0x1010500 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SACK_PERMIT_HDR = 0x1010402 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_TSTAMP_HDR = 0x101080a + TCPOPT_WINDOW = 0x3 + TCP_INFO = 0x9 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x3 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x4 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOPUSH = 0x10 + TCP_SACKHOLE_LIMIT = 0x80 + TCP_SACK_ENABLE = 0x8 + TCSAFLUSH = 0x2 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCHKVERAUTH = 0x2000741e + TIOCCLRVERAUTH = 0x2000741d + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_PPS = 0x10 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047463 + TIOCGTSTAMP = 0x4010745b + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMODG = 0x4004746a + TIOCMODS = 0x8004746d + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSETVERAUTH = 0x8004741c + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x8004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTOP = 0x2000746f + TIOCSTSTAMP = 0x8008745a + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCUCNTL_CBRK = 0x7a + TIOCUCNTL_SBRK = 0x7b + TOSTOP = 0x400000 + UTIME_NOW = -0x2 + UTIME_OMIT = -0x1 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_ANONMIN = 0x7 + VM_LOADAVG = 0x2 + VM_MALLOC_CONF = 0xc + VM_MAXID = 0xd + VM_MAXSLP = 0xa + VM_METER = 0x1 + VM_NKMEMPAGES = 0x6 + VM_PSSTRINGS = 0x3 + VM_SWAPENCRYPT = 0x5 + VM_USPACE = 0xb + VM_UVMEXP = 0x4 + VM_VNODEMIN = 0x9 + VM_VTEXTMIN = 0x8 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALTSIG = 0x4 + WCONTINUED = 0x8 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WUNTRACED = 0x2 + XCASE = 0x1000000 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x5c) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x58) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x59) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EIPSEC = syscall.Errno(0x52) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x5f) + ELOOP = syscall.Errno(0x3e) + EMEDIUMTYPE = syscall.Errno(0x56) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x53) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOMEDIUM = syscall.Errno(0x55) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5a) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5d) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x5b) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x57) + EOWNERDEAD = syscall.Errno(0x5e) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5f) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disk quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC program not available"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIPSEC", "IPsec processing failure"}, + {83, "ENOATTR", "attribute not found"}, + {84, "EILSEQ", "illegal byte sequence"}, + {85, "ENOMEDIUM", "no medium found"}, + {86, "EMEDIUMTYPE", "wrong medium type"}, + {87, "EOVERFLOW", "value too large to be stored in data type"}, + {88, "ECANCELED", "operation canceled"}, + {89, "EIDRM", "identifier removed"}, + {90, "ENOMSG", "no message of desired type"}, + {91, "ENOTSUP", "not supported"}, + {92, "EBADMSG", "bad message"}, + {93, "ENOTRECOVERABLE", "state not recoverable"}, + {94, "EOWNERDEAD", "previous owner died"}, + {95, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread AST"}, + {28672, "SIGSTKSZ", "unknown signal"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go b/tests/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go new file mode 100644 index 000000000..0e9748a72 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go @@ -0,0 +1,1905 @@ +// mkerrors.sh +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm && openbsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BLUETOOTH = 0x20 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_ENCAP = 0x1c + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_KEY = 0x1e + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x24 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SIP = 0x1d + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x200 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRFILT = 0x4004427c + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc008427b + BIOCGETIF = 0x4020426b + BIOCGFILDROP = 0x40044278 + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044273 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x20004276 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDIRFILT = 0x8004427d + BIOCSDLT = 0x8004427a + BIOCSETF = 0x80084267 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x80084277 + BIOCSFILDROP = 0x80044279 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044272 + BIOCSRTIMEOUT = 0x8010426d + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIRECTION_IN = 0x1 + BPF_DIRECTION_OUT = 0x2 + BPF_DIV = 0x30 + BPF_FILDROP_CAPTURE = 0x1 + BPF_FILDROP_DROP = 0x2 + BPF_FILDROP_PASS = 0x0 + BPF_F_DIR_IN = 0x10 + BPF_F_DIR_MASK = 0x30 + BPF_F_DIR_OUT = 0x20 + BPF_F_DIR_SHIFT = 0x4 + BPF_F_FLOWID = 0x8 + BPF_F_PRI_MASK = 0x7 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x200000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RND = 0xc0 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_BOOTTIME = 0x6 + CLOCK_MONOTONIC = 0x3 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x4 + CLOCK_UPTIME = 0x5 + CPUSTATES = 0x6 + CP_IDLE = 0x5 + CP_INTR = 0x4 + CP_NICE = 0x1 + CP_SPIN = 0x3 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0xff + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DIOCADDQUEUE = 0xc100445d + DIOCADDRULE = 0xcce04404 + DIOCADDSTATE = 0xc1084425 + DIOCCHANGERULE = 0xcce0441a + DIOCCLRIFFLAG = 0xc024445a + DIOCCLRSRCNODES = 0x20004455 + DIOCCLRSTATES = 0xc0d04412 + DIOCCLRSTATUS = 0xc0244416 + DIOCGETLIMIT = 0xc0084427 + DIOCGETQSTATS = 0xc1084460 + DIOCGETQUEUE = 0xc100445f + DIOCGETQUEUES = 0xc100445e + DIOCGETRULE = 0xcce04407 + DIOCGETRULES = 0xcce04406 + DIOCGETRULESET = 0xc444443b + DIOCGETRULESETS = 0xc444443a + DIOCGETSRCNODES = 0xc0084454 + DIOCGETSTATE = 0xc1084413 + DIOCGETSTATES = 0xc0084419 + DIOCGETSTATUS = 0xc1e84415 + DIOCGETSYNFLWATS = 0xc0084463 + DIOCGETTIMEOUT = 0xc008441e + DIOCIGETIFACES = 0xc0244457 + DIOCKILLSRCNODES = 0xc068445b + DIOCKILLSTATES = 0xc0d04429 + DIOCNATLOOK = 0xc0504417 + DIOCOSFPADD = 0xc088444f + DIOCOSFPFLUSH = 0x2000444e + DIOCOSFPGET = 0xc0884450 + DIOCRADDADDRS = 0xc44c4443 + DIOCRADDTABLES = 0xc44c443d + DIOCRCLRADDRS = 0xc44c4442 + DIOCRCLRASTATS = 0xc44c4448 + DIOCRCLRTABLES = 0xc44c443c + DIOCRCLRTSTATS = 0xc44c4441 + DIOCRDELADDRS = 0xc44c4444 + DIOCRDELTABLES = 0xc44c443e + DIOCRGETADDRS = 0xc44c4446 + DIOCRGETASTATS = 0xc44c4447 + DIOCRGETTABLES = 0xc44c443f + DIOCRGETTSTATS = 0xc44c4440 + DIOCRINADEFINE = 0xc44c444d + DIOCRSETADDRS = 0xc44c4445 + DIOCRSETTFLAGS = 0xc44c444a + DIOCRTSTADDRS = 0xc44c4449 + DIOCSETDEBUG = 0xc0044418 + DIOCSETHOSTID = 0xc0044456 + DIOCSETIFFLAG = 0xc0244459 + DIOCSETLIMIT = 0xc0084428 + DIOCSETREASS = 0xc004445c + DIOCSETSTATUSIF = 0xc0244414 + DIOCSETSYNCOOKIES = 0xc0014462 + DIOCSETSYNFLWATS = 0xc0084461 + DIOCSETTIMEOUT = 0xc008441d + DIOCSTART = 0x20004401 + DIOCSTOP = 0x20004402 + DIOCXBEGIN = 0xc00c4451 + DIOCXCOMMIT = 0xc00c4452 + DIOCXROLLBACK = 0xc00c4453 + DLT_ARCNET = 0x7 + DLT_ATM_RFC1483 = 0xb + DLT_AX25 = 0x3 + DLT_CHAOS = 0x5 + DLT_C_HDLC = 0x68 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0xd + DLT_FDDI = 0xa + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_LOOP = 0xc + DLT_MPLS = 0xdb + DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_SERIAL = 0x32 + DLT_PRONET = 0x4 + DLT_RAW = 0xe + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_USBPCAP = 0xf9 + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMT_TAGOVF = 0x1 + EMUL_ENABLED = 0x1 + EMUL_NATIVE = 0x2 + ENDRUNDISC = 0x9 + ETH64_8021_RSVD_MASK = 0xfffffffffff0 + ETH64_8021_RSVD_PREFIX = 0x180c2000000 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_AOE = 0x88a2 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_EAPOL = 0x888e + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LLDP = 0x88cc + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MACSEC = 0x88e5 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NHRP = 0x2001 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NSH = 0x984f + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PBB = 0x88e7 + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_QINQ = 0x88a8 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOW = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_ALIGN = 0x2 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_DIX_LEN = 0x600 + ETHER_MAX_HARDMTU_LEN = 0xff9b + ETHER_MAX_LEN = 0x5ee + ETHER_MIN_LEN = 0x40 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = -0x3 + EVFILT_DEVICE = -0x8 + EVFILT_EXCEPT = -0x9 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0x9 + EVFILT_TIMER = -0x7 + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EVL_ENCAPLEN = 0x4 + EVL_PRIO_BITS = 0xd + EVL_PRIO_MAX = 0x7 + EVL_VLID_MASK = 0xfff + EVL_VLID_MAX = 0xffe + EVL_VLID_MIN = 0x1 + EVL_VLID_NULL = 0x0 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf800 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xa + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETOWN = 0x5 + F_ISATTY = 0xb + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8e52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x20 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BLUETOOTH = 0xf8 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf7 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DUMMY = 0xf1 + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf3 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MBIM = 0xfa + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFLOW = 0xf9 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf2 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_WIREGUARD = 0xfb + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_HOST = 0x1 + IN_RFC3021_NET = 0xfffffffe + IN_RFC3021_NSHIFT = 0x1f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x103 + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_AUTH_LEVEL = 0x35 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_ESP_NETWORK_LEVEL = 0x37 + IPV6_ESP_TRANS_LEVEL = 0x36 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPCOMP_LEVEL = 0x3c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MINHOPCOUNT = 0x41 + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_OPTIONS = 0x1 + IPV6_PATHMTU = 0x2c + IPV6_PIPEX = 0x3f + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVDSTPORT = 0x40 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTABLE = 0x1021 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_AUTH_LEVEL = 0x14 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_ESP_NETWORK_LEVEL = 0x16 + IP_ESP_TRANS_LEVEL = 0x15 + IP_HDRINCL = 0x2 + IP_IPCOMP_LEVEL = 0x1d + IP_IPDEFTTL = 0x25 + IP_IPSECFLOWINFO = 0x24 + IP_IPSEC_LOCAL_AUTH = 0x1b + IP_IPSEC_LOCAL_CRED = 0x19 + IP_IPSEC_LOCAL_ID = 0x17 + IP_IPSEC_REMOTE_AUTH = 0x1c + IP_IPSEC_REMOTE_CRED = 0x1a + IP_IPSEC_REMOTE_ID = 0x18 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0xfff + IP_MF = 0x2000 + IP_MINTTL = 0x20 + IP_MIN_MEMBERSHIPS = 0xf + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PIPEX = 0x22 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVDSTPORT = 0x21 + IP_RECVIF = 0x1e + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRTABLE = 0x23 + IP_RECVTTL = 0x1f + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RTABLE = 0x1021 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 + IUCLC = 0x1000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LCNT_OVERLOAD_FLUSH = 0x6 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_CONCEAL = 0x8000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FLAGMASK = 0xfff7 + MAP_HASSEMAPHORE = 0x0 + MAP_INHERIT = 0x0 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_INHERIT_ZERO = 0x3 + MAP_NOEXTEND = 0x0 + MAP_NORESERVE = 0x0 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x0 + MAP_SHARED = 0x1 + MAP_STACK = 0x4000 + MAP_TRYFIXED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_DOOMED = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_NOATIME = 0x8000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOPERM = 0x20 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x4000000 + MNT_STALLED = 0x100000 + MNT_SWAPPABLE = 0x200000 + MNT_SYNCHRONOUS = 0x2 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x400ffff + MNT_WAIT = 0x1 + MNT_WANTRDWR = 0x2000000 + MNT_WXALLOWED = 0x800 + MOUNT_AFS = "afs" + MOUNT_CD9660 = "cd9660" + MOUNT_EXT2FS = "ext2fs" + MOUNT_FFS = "ffs" + MOUNT_FUSEFS = "fuse" + MOUNT_MFS = "mfs" + MOUNT_MSDOS = "msdos" + MOUNT_NCPFS = "ncpfs" + MOUNT_NFS = "nfs" + MOUNT_NTFS = "ntfs" + MOUNT_TMPFS = "tmpfs" + MOUNT_UDF = "udf" + MOUNT_UFS = "ffs" + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_MCAST = 0x200 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x1000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x4 + MS_SYNC = 0x2 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFNAMES = 0x6 + NET_RT_MAXID = 0x8 + NET_RT_SOURCE = 0x7 + NET_RT_STATS = 0x4 + NET_RT_TABLE = 0x5 + NFDBITS = 0x20 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHANGE = 0x1 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EOF = 0x2 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_OOB = 0x4 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRUNCATE = 0x80 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OLCUC = 0x20 + ONLCR = 0x2 + ONLRET = 0x80 + ONOCR = 0x40 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x10000 + O_CREAT = 0x200 + O_DIRECTORY = 0x20000 + O_DSYNC = 0x80 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x80 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PF_FLUSH = 0x1 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BFD = 0xb + RTAX_BRD = 0x7 + RTAX_DNS = 0xc + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_LABEL = 0xa + RTAX_MAX = 0xf + RTAX_NETMASK = 0x2 + RTAX_SEARCH = 0xe + RTAX_SRC = 0x8 + RTAX_SRCMASK = 0x9 + RTAX_STATIC = 0xd + RTA_AUTHOR = 0x40 + RTA_BFD = 0x800 + RTA_BRD = 0x80 + RTA_DNS = 0x1000 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_LABEL = 0x400 + RTA_NETMASK = 0x4 + RTA_SEARCH = 0x4000 + RTA_SRC = 0x100 + RTA_SRCMASK = 0x200 + RTA_STATIC = 0x2000 + RTF_ANNOUNCE = 0x4000 + RTF_BFD = 0x1000000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CACHED = 0x20000 + RTF_CLONED = 0x10000 + RTF_CLONING = 0x100 + RTF_CONNECTED = 0x800000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FMASK = 0x110fc08 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MPATH = 0x40000 + RTF_MPLS = 0x100000 + RTF_MULTICAST = 0x200 + RTF_PERMANENT_ARP = 0x2000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x2000 + RTF_REJECT = 0x8 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_USETRAILERS = 0x8000 + RTM_80211INFO = 0x15 + RTM_ADD = 0x1 + RTM_BFD = 0x12 + RTM_CHANGE = 0x3 + RTM_CHGADDRATTR = 0x14 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DESYNC = 0x10 + RTM_GET = 0x4 + RTM_IFANNOUNCE = 0xf + RTM_IFINFO = 0xe + RTM_INVALIDATE = 0x11 + RTM_LOSING = 0x5 + RTM_MAXSIZE = 0x800 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_PROPOSAL = 0x13 + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_SOURCE = 0x16 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RT_TABLEID_BITS = 0x8 + RT_TABLEID_MASK = 0xff + RT_TABLEID_MAX = 0xff + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x4 + SEEK_CUR = 0x1 + SEEK_END = 0x2 + SEEK_SET = 0x0 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80246987 + SIOCATMARK = 0x40047307 + SIOCBRDGADD = 0x8060693c + SIOCBRDGADDL = 0x80606949 + SIOCBRDGADDS = 0x80606941 + SIOCBRDGARL = 0x808c694d + SIOCBRDGDADDR = 0x81286947 + SIOCBRDGDEL = 0x8060693d + SIOCBRDGDELS = 0x80606942 + SIOCBRDGFLUSH = 0x80606948 + SIOCBRDGFRL = 0x808c694e + SIOCBRDGGCACHE = 0xc0146941 + SIOCBRDGGFD = 0xc0146952 + SIOCBRDGGHT = 0xc0146951 + SIOCBRDGGIFFLGS = 0xc060693e + SIOCBRDGGMA = 0xc0146953 + SIOCBRDGGPARAM = 0xc0406958 + SIOCBRDGGPRI = 0xc0146950 + SIOCBRDGGRL = 0xc028694f + SIOCBRDGGTO = 0xc0146946 + SIOCBRDGIFS = 0xc0606942 + SIOCBRDGRTS = 0xc0186943 + SIOCBRDGSADDR = 0xc1286944 + SIOCBRDGSCACHE = 0x80146940 + SIOCBRDGSFD = 0x80146952 + SIOCBRDGSHT = 0x80146951 + SIOCBRDGSIFCOST = 0x80606955 + SIOCBRDGSIFFLGS = 0x8060693f + SIOCBRDGSIFPRIO = 0x80606954 + SIOCBRDGSIFPROT = 0x8060694a + SIOCBRDGSMA = 0x80146953 + SIOCBRDGSPRI = 0x80146950 + SIOCBRDGSPROTO = 0x8014695a + SIOCBRDGSTO = 0x80146945 + SIOCBRDGSTXHC = 0x80146959 + SIOCDELLABEL = 0x80206997 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80246989 + SIOCDIFPARENT = 0x802069b4 + SIOCDIFPHYADDR = 0x80206949 + SIOCDPWE3NEIGHBOR = 0x802069de + SIOCDVNETID = 0x802069af + SIOCGETKALIVE = 0xc01869a4 + SIOCGETLABEL = 0x8020699a + SIOCGETMPWCFG = 0xc02069ae + SIOCGETPFLOW = 0xc02069fe + SIOCGETPFSYNC = 0xc02069f8 + SIOCGETSGCNT = 0xc0147534 + SIOCGETVIFCNT = 0xc0147533 + SIOCGETVLAN = 0xc0206990 + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCONF = 0xc0086924 + SIOCGIFDATA = 0xc020691b + SIOCGIFDESCR = 0xc0206981 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGATTR = 0xc024698b + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGLIST = 0xc024698d + SIOCGIFGMEMB = 0xc024698a + SIOCGIFGROUP = 0xc0246988 + SIOCGIFHARDMTU = 0xc02069a5 + SIOCGIFLLPRIO = 0xc02069b6 + SIOCGIFMEDIA = 0xc0386938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc020697e + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPAIR = 0xc02069b1 + SIOCGIFPARENT = 0xc02069b3 + SIOCGIFPRIORITY = 0xc020699c + SIOCGIFRDOMAIN = 0xc02069a0 + SIOCGIFRTLABEL = 0xc0206983 + SIOCGIFRXR = 0x802069aa + SIOCGIFSFFPAGE = 0xc1126939 + SIOCGIFXFLAGS = 0xc020699e + SIOCGLIFPHYADDR = 0xc218694b + SIOCGLIFPHYDF = 0xc02069c2 + SIOCGLIFPHYECN = 0xc02069c8 + SIOCGLIFPHYRTABLE = 0xc02069a2 + SIOCGLIFPHYTTL = 0xc02069a9 + SIOCGPGRP = 0x40047309 + SIOCGPWE3 = 0xc0206998 + SIOCGPWE3CTRLWORD = 0xc02069dc + SIOCGPWE3FAT = 0xc02069dd + SIOCGPWE3NEIGHBOR = 0xc21869de + SIOCGRXHPRIO = 0xc02069db + SIOCGSPPPPARAMS = 0xc0206994 + SIOCGTXHPRIO = 0xc02069c6 + SIOCGUMBINFO = 0xc02069be + SIOCGUMBPARAM = 0xc02069c0 + SIOCGVH = 0xc02069f6 + SIOCGVNETFLOWID = 0xc02069c4 + SIOCGVNETID = 0xc02069a7 + SIOCIFAFATTACH = 0x801169ab + SIOCIFAFDETACH = 0x801169ac + SIOCIFCREATE = 0x8020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc00c6978 + SIOCSETKALIVE = 0x801869a3 + SIOCSETLABEL = 0x80206999 + SIOCSETMPWCFG = 0x802069ad + SIOCSETPFLOW = 0x802069fd + SIOCSETPFSYNC = 0x802069f7 + SIOCSETVLAN = 0x8020698f + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFDESCR = 0x80206980 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGATTR = 0x8024698c + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020691f + SIOCSIFLLPRIO = 0x802069b5 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x8020697f + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPAIR = 0x802069b0 + SIOCSIFPARENT = 0x802069b2 + SIOCSIFPRIORITY = 0x8020699b + SIOCSIFRDOMAIN = 0x8020699f + SIOCSIFRTLABEL = 0x80206982 + SIOCSIFXFLAGS = 0x8020699d + SIOCSLIFPHYADDR = 0x8218694a + SIOCSLIFPHYDF = 0x802069c1 + SIOCSLIFPHYECN = 0x802069c7 + SIOCSLIFPHYRTABLE = 0x802069a1 + SIOCSLIFPHYTTL = 0x802069a8 + SIOCSPGRP = 0x80047308 + SIOCSPWE3CTRLWORD = 0x802069dc + SIOCSPWE3FAT = 0x802069dd + SIOCSPWE3NEIGHBOR = 0x821869de + SIOCSRXHPRIO = 0x802069db + SIOCSSPPPPARAMS = 0x80206993 + SIOCSTXHPRIO = 0x802069c5 + SIOCSUMBPARAM = 0x802069bf + SIOCSVH = 0xc02069f5 + SIOCSVNETFLOWID = 0x802069c3 + SIOCSVNETID = 0x802069a6 + SOCK_CLOEXEC = 0x8000 + SOCK_DGRAM = 0x2 + SOCK_DNS = 0x1000 + SOCK_NONBLOCK = 0x4000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BINDANY = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DOMAIN = 0x1024 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NETPROC = 0x1020 + SO_OOBINLINE = 0x100 + SO_PEERCRED = 0x1022 + SO_PROTOCOL = 0x1025 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RTABLE = 0x1021 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SPLICE = 0x1023 + SO_TIMESTAMP = 0x800 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_ZEROIZE = 0x2000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCPOPT_EOL = 0x0 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_HDR = 0x1010500 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SACK_PERMIT_HDR = 0x1010402 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_TSTAMP_HDR = 0x101080a + TCPOPT_WINDOW = 0x3 + TCP_INFO = 0x9 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x3 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x4 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOPUSH = 0x10 + TCP_SACKHOLE_LIMIT = 0x80 + TCP_SACK_ENABLE = 0x8 + TCSAFLUSH = 0x2 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCHKVERAUTH = 0x2000741e + TIOCCLRVERAUTH = 0x2000741d + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_PPS = 0x10 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047463 + TIOCGTSTAMP = 0x4010745b + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMODG = 0x4004746a + TIOCMODS = 0x8004746d + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSETVERAUTH = 0x8004741c + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x8004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTOP = 0x2000746f + TIOCSTSTAMP = 0x8008745a + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCUCNTL_CBRK = 0x7a + TIOCUCNTL_SBRK = 0x7b + TOSTOP = 0x400000 + UTIME_NOW = -0x2 + UTIME_OMIT = -0x1 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_ANONMIN = 0x7 + VM_LOADAVG = 0x2 + VM_MALLOC_CONF = 0xc + VM_MAXID = 0xd + VM_MAXSLP = 0xa + VM_METER = 0x1 + VM_NKMEMPAGES = 0x6 + VM_PSSTRINGS = 0x3 + VM_SWAPENCRYPT = 0x5 + VM_USPACE = 0xb + VM_UVMEXP = 0x4 + VM_VNODEMIN = 0x9 + VM_VTEXTMIN = 0x8 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALTSIG = 0x4 + WCONTINUED = 0x8 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WUNTRACED = 0x2 + XCASE = 0x1000000 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x5c) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x58) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x59) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EIPSEC = syscall.Errno(0x52) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x5f) + ELOOP = syscall.Errno(0x3e) + EMEDIUMTYPE = syscall.Errno(0x56) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x53) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOMEDIUM = syscall.Errno(0x55) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5a) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5d) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x5b) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x57) + EOWNERDEAD = syscall.Errno(0x5e) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5f) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disk quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC program not available"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIPSEC", "IPsec processing failure"}, + {83, "ENOATTR", "attribute not found"}, + {84, "EILSEQ", "illegal byte sequence"}, + {85, "ENOMEDIUM", "no medium found"}, + {86, "EMEDIUMTYPE", "wrong medium type"}, + {87, "EOVERFLOW", "value too large to be stored in data type"}, + {88, "ECANCELED", "operation canceled"}, + {89, "EIDRM", "identifier removed"}, + {90, "ENOMSG", "no message of desired type"}, + {91, "ENOTSUP", "not supported"}, + {92, "EBADMSG", "bad message"}, + {93, "ENOTRECOVERABLE", "state not recoverable"}, + {94, "EOWNERDEAD", "previous owner died"}, + {95, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread AST"}, + {28672, "SIGSTKSZ", "unknown signal"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go b/tests/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go new file mode 100644 index 000000000..4f4449abc --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go @@ -0,0 +1,1905 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm64 && openbsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BLUETOOTH = 0x20 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_ENCAP = 0x1c + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_KEY = 0x1e + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x24 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SIP = 0x1d + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x200 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRFILT = 0x4004427c + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc010427b + BIOCGETIF = 0x4020426b + BIOCGFILDROP = 0x40044278 + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044273 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x20004276 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDIRFILT = 0x8004427d + BIOCSDLT = 0x8004427a + BIOCSETF = 0x80104267 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x80104277 + BIOCSFILDROP = 0x80044279 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044272 + BIOCSRTIMEOUT = 0x8010426d + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIRECTION_IN = 0x1 + BPF_DIRECTION_OUT = 0x2 + BPF_DIV = 0x30 + BPF_FILDROP_CAPTURE = 0x1 + BPF_FILDROP_DROP = 0x2 + BPF_FILDROP_PASS = 0x0 + BPF_F_DIR_IN = 0x10 + BPF_F_DIR_MASK = 0x30 + BPF_F_DIR_OUT = 0x20 + BPF_F_DIR_SHIFT = 0x4 + BPF_F_FLOWID = 0x8 + BPF_F_PRI_MASK = 0x7 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x200000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RND = 0xc0 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_BOOTTIME = 0x6 + CLOCK_MONOTONIC = 0x3 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x4 + CLOCK_UPTIME = 0x5 + CPUSTATES = 0x6 + CP_IDLE = 0x5 + CP_INTR = 0x4 + CP_NICE = 0x1 + CP_SPIN = 0x3 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0xff + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DIOCADDQUEUE = 0xc110445d + DIOCADDRULE = 0xcd604404 + DIOCADDSTATE = 0xc1084425 + DIOCCHANGERULE = 0xcd60441a + DIOCCLRIFFLAG = 0xc028445a + DIOCCLRSRCNODES = 0x20004455 + DIOCCLRSTATES = 0xc0e04412 + DIOCCLRSTATUS = 0xc0284416 + DIOCGETLIMIT = 0xc0084427 + DIOCGETQSTATS = 0xc1204460 + DIOCGETQUEUE = 0xc110445f + DIOCGETQUEUES = 0xc110445e + DIOCGETRULE = 0xcd604407 + DIOCGETRULES = 0xcd604406 + DIOCGETRULESET = 0xc444443b + DIOCGETRULESETS = 0xc444443a + DIOCGETSRCNODES = 0xc0104454 + DIOCGETSTATE = 0xc1084413 + DIOCGETSTATES = 0xc0104419 + DIOCGETSTATUS = 0xc1e84415 + DIOCGETSYNFLWATS = 0xc0084463 + DIOCGETTIMEOUT = 0xc008441e + DIOCIGETIFACES = 0xc0284457 + DIOCKILLSRCNODES = 0xc080445b + DIOCKILLSTATES = 0xc0e04429 + DIOCNATLOOK = 0xc0504417 + DIOCOSFPADD = 0xc088444f + DIOCOSFPFLUSH = 0x2000444e + DIOCOSFPGET = 0xc0884450 + DIOCRADDADDRS = 0xc4504443 + DIOCRADDTABLES = 0xc450443d + DIOCRCLRADDRS = 0xc4504442 + DIOCRCLRASTATS = 0xc4504448 + DIOCRCLRTABLES = 0xc450443c + DIOCRCLRTSTATS = 0xc4504441 + DIOCRDELADDRS = 0xc4504444 + DIOCRDELTABLES = 0xc450443e + DIOCRGETADDRS = 0xc4504446 + DIOCRGETASTATS = 0xc4504447 + DIOCRGETTABLES = 0xc450443f + DIOCRGETTSTATS = 0xc4504440 + DIOCRINADEFINE = 0xc450444d + DIOCRSETADDRS = 0xc4504445 + DIOCRSETTFLAGS = 0xc450444a + DIOCRTSTADDRS = 0xc4504449 + DIOCSETDEBUG = 0xc0044418 + DIOCSETHOSTID = 0xc0044456 + DIOCSETIFFLAG = 0xc0284459 + DIOCSETLIMIT = 0xc0084428 + DIOCSETREASS = 0xc004445c + DIOCSETSTATUSIF = 0xc0284414 + DIOCSETSYNCOOKIES = 0xc0014462 + DIOCSETSYNFLWATS = 0xc0084461 + DIOCSETTIMEOUT = 0xc008441d + DIOCSTART = 0x20004401 + DIOCSTOP = 0x20004402 + DIOCXBEGIN = 0xc0104451 + DIOCXCOMMIT = 0xc0104452 + DIOCXROLLBACK = 0xc0104453 + DLT_ARCNET = 0x7 + DLT_ATM_RFC1483 = 0xb + DLT_AX25 = 0x3 + DLT_CHAOS = 0x5 + DLT_C_HDLC = 0x68 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0xd + DLT_FDDI = 0xa + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_LOOP = 0xc + DLT_MPLS = 0xdb + DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_SERIAL = 0x32 + DLT_PRONET = 0x4 + DLT_RAW = 0xe + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_USBPCAP = 0xf9 + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMT_TAGOVF = 0x1 + EMUL_ENABLED = 0x1 + EMUL_NATIVE = 0x2 + ENDRUNDISC = 0x9 + ETH64_8021_RSVD_MASK = 0xfffffffffff0 + ETH64_8021_RSVD_PREFIX = 0x180c2000000 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_AOE = 0x88a2 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_EAPOL = 0x888e + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LLDP = 0x88cc + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MACSEC = 0x88e5 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NHRP = 0x2001 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NSH = 0x984f + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PBB = 0x88e7 + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_QINQ = 0x88a8 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOW = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_ALIGN = 0x2 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_DIX_LEN = 0x600 + ETHER_MAX_HARDMTU_LEN = 0xff9b + ETHER_MAX_LEN = 0x5ee + ETHER_MIN_LEN = 0x40 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = -0x3 + EVFILT_DEVICE = -0x8 + EVFILT_EXCEPT = -0x9 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0x9 + EVFILT_TIMER = -0x7 + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EVL_ENCAPLEN = 0x4 + EVL_PRIO_BITS = 0xd + EVL_PRIO_MAX = 0x7 + EVL_VLID_MASK = 0xfff + EVL_VLID_MAX = 0xffe + EVL_VLID_MIN = 0x1 + EVL_VLID_NULL = 0x0 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf800 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xa + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETOWN = 0x5 + F_ISATTY = 0xb + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8e52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x20 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BLUETOOTH = 0xf8 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf7 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DUMMY = 0xf1 + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf3 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MBIM = 0xfa + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFLOW = 0xf9 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf2 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_WIREGUARD = 0xfb + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_HOST = 0x1 + IN_RFC3021_NET = 0xfffffffe + IN_RFC3021_NSHIFT = 0x1f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x103 + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_AUTH_LEVEL = 0x35 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_ESP_NETWORK_LEVEL = 0x37 + IPV6_ESP_TRANS_LEVEL = 0x36 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPCOMP_LEVEL = 0x3c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MINHOPCOUNT = 0x41 + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_OPTIONS = 0x1 + IPV6_PATHMTU = 0x2c + IPV6_PIPEX = 0x3f + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVDSTPORT = 0x40 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTABLE = 0x1021 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_AUTH_LEVEL = 0x14 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_ESP_NETWORK_LEVEL = 0x16 + IP_ESP_TRANS_LEVEL = 0x15 + IP_HDRINCL = 0x2 + IP_IPCOMP_LEVEL = 0x1d + IP_IPDEFTTL = 0x25 + IP_IPSECFLOWINFO = 0x24 + IP_IPSEC_LOCAL_AUTH = 0x1b + IP_IPSEC_LOCAL_CRED = 0x19 + IP_IPSEC_LOCAL_ID = 0x17 + IP_IPSEC_REMOTE_AUTH = 0x1c + IP_IPSEC_REMOTE_CRED = 0x1a + IP_IPSEC_REMOTE_ID = 0x18 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0xfff + IP_MF = 0x2000 + IP_MINTTL = 0x20 + IP_MIN_MEMBERSHIPS = 0xf + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PIPEX = 0x22 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVDSTPORT = 0x21 + IP_RECVIF = 0x1e + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRTABLE = 0x23 + IP_RECVTTL = 0x1f + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RTABLE = 0x1021 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 + IUCLC = 0x1000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LCNT_OVERLOAD_FLUSH = 0x6 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_CONCEAL = 0x8000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FLAGMASK = 0xfff7 + MAP_HASSEMAPHORE = 0x0 + MAP_INHERIT = 0x0 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_INHERIT_ZERO = 0x3 + MAP_NOEXTEND = 0x0 + MAP_NORESERVE = 0x0 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x0 + MAP_SHARED = 0x1 + MAP_STACK = 0x4000 + MAP_TRYFIXED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_DOOMED = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_NOATIME = 0x8000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOPERM = 0x20 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x4000000 + MNT_STALLED = 0x100000 + MNT_SWAPPABLE = 0x200000 + MNT_SYNCHRONOUS = 0x2 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x400ffff + MNT_WAIT = 0x1 + MNT_WANTRDWR = 0x2000000 + MNT_WXALLOWED = 0x800 + MOUNT_AFS = "afs" + MOUNT_CD9660 = "cd9660" + MOUNT_EXT2FS = "ext2fs" + MOUNT_FFS = "ffs" + MOUNT_FUSEFS = "fuse" + MOUNT_MFS = "mfs" + MOUNT_MSDOS = "msdos" + MOUNT_NCPFS = "ncpfs" + MOUNT_NFS = "nfs" + MOUNT_NTFS = "ntfs" + MOUNT_TMPFS = "tmpfs" + MOUNT_UDF = "udf" + MOUNT_UFS = "ffs" + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_MCAST = 0x200 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x1000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x4 + MS_SYNC = 0x2 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFNAMES = 0x6 + NET_RT_MAXID = 0x8 + NET_RT_SOURCE = 0x7 + NET_RT_STATS = 0x4 + NET_RT_TABLE = 0x5 + NFDBITS = 0x20 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHANGE = 0x1 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EOF = 0x2 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_OOB = 0x4 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRUNCATE = 0x80 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OLCUC = 0x20 + ONLCR = 0x2 + ONLRET = 0x80 + ONOCR = 0x40 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x10000 + O_CREAT = 0x200 + O_DIRECTORY = 0x20000 + O_DSYNC = 0x80 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x80 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PF_FLUSH = 0x1 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BFD = 0xb + RTAX_BRD = 0x7 + RTAX_DNS = 0xc + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_LABEL = 0xa + RTAX_MAX = 0xf + RTAX_NETMASK = 0x2 + RTAX_SEARCH = 0xe + RTAX_SRC = 0x8 + RTAX_SRCMASK = 0x9 + RTAX_STATIC = 0xd + RTA_AUTHOR = 0x40 + RTA_BFD = 0x800 + RTA_BRD = 0x80 + RTA_DNS = 0x1000 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_LABEL = 0x400 + RTA_NETMASK = 0x4 + RTA_SEARCH = 0x4000 + RTA_SRC = 0x100 + RTA_SRCMASK = 0x200 + RTA_STATIC = 0x2000 + RTF_ANNOUNCE = 0x4000 + RTF_BFD = 0x1000000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CACHED = 0x20000 + RTF_CLONED = 0x10000 + RTF_CLONING = 0x100 + RTF_CONNECTED = 0x800000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FMASK = 0x110fc08 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MPATH = 0x40000 + RTF_MPLS = 0x100000 + RTF_MULTICAST = 0x200 + RTF_PERMANENT_ARP = 0x2000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x2000 + RTF_REJECT = 0x8 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_USETRAILERS = 0x8000 + RTM_80211INFO = 0x15 + RTM_ADD = 0x1 + RTM_BFD = 0x12 + RTM_CHANGE = 0x3 + RTM_CHGADDRATTR = 0x14 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DESYNC = 0x10 + RTM_GET = 0x4 + RTM_IFANNOUNCE = 0xf + RTM_IFINFO = 0xe + RTM_INVALIDATE = 0x11 + RTM_LOSING = 0x5 + RTM_MAXSIZE = 0x800 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_PROPOSAL = 0x13 + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_SOURCE = 0x16 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RT_TABLEID_BITS = 0x8 + RT_TABLEID_MASK = 0xff + RT_TABLEID_MAX = 0xff + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x4 + SEEK_CUR = 0x1 + SEEK_END = 0x2 + SEEK_SET = 0x0 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80286987 + SIOCATMARK = 0x40047307 + SIOCBRDGADD = 0x8060693c + SIOCBRDGADDL = 0x80606949 + SIOCBRDGADDS = 0x80606941 + SIOCBRDGARL = 0x808c694d + SIOCBRDGDADDR = 0x81286947 + SIOCBRDGDEL = 0x8060693d + SIOCBRDGDELS = 0x80606942 + SIOCBRDGFLUSH = 0x80606948 + SIOCBRDGFRL = 0x808c694e + SIOCBRDGGCACHE = 0xc0146941 + SIOCBRDGGFD = 0xc0146952 + SIOCBRDGGHT = 0xc0146951 + SIOCBRDGGIFFLGS = 0xc060693e + SIOCBRDGGMA = 0xc0146953 + SIOCBRDGGPARAM = 0xc0406958 + SIOCBRDGGPRI = 0xc0146950 + SIOCBRDGGRL = 0xc030694f + SIOCBRDGGTO = 0xc0146946 + SIOCBRDGIFS = 0xc0606942 + SIOCBRDGRTS = 0xc0206943 + SIOCBRDGSADDR = 0xc1286944 + SIOCBRDGSCACHE = 0x80146940 + SIOCBRDGSFD = 0x80146952 + SIOCBRDGSHT = 0x80146951 + SIOCBRDGSIFCOST = 0x80606955 + SIOCBRDGSIFFLGS = 0x8060693f + SIOCBRDGSIFPRIO = 0x80606954 + SIOCBRDGSIFPROT = 0x8060694a + SIOCBRDGSMA = 0x80146953 + SIOCBRDGSPRI = 0x80146950 + SIOCBRDGSPROTO = 0x8014695a + SIOCBRDGSTO = 0x80146945 + SIOCBRDGSTXHC = 0x80146959 + SIOCDELLABEL = 0x80206997 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80286989 + SIOCDIFPARENT = 0x802069b4 + SIOCDIFPHYADDR = 0x80206949 + SIOCDPWE3NEIGHBOR = 0x802069de + SIOCDVNETID = 0x802069af + SIOCGETKALIVE = 0xc01869a4 + SIOCGETLABEL = 0x8020699a + SIOCGETMPWCFG = 0xc02069ae + SIOCGETPFLOW = 0xc02069fe + SIOCGETPFSYNC = 0xc02069f8 + SIOCGETSGCNT = 0xc0207534 + SIOCGETVIFCNT = 0xc0287533 + SIOCGETVLAN = 0xc0206990 + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCONF = 0xc0106924 + SIOCGIFDATA = 0xc020691b + SIOCGIFDESCR = 0xc0206981 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGATTR = 0xc028698b + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGLIST = 0xc028698d + SIOCGIFGMEMB = 0xc028698a + SIOCGIFGROUP = 0xc0286988 + SIOCGIFHARDMTU = 0xc02069a5 + SIOCGIFLLPRIO = 0xc02069b6 + SIOCGIFMEDIA = 0xc0406938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc020697e + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPAIR = 0xc02069b1 + SIOCGIFPARENT = 0xc02069b3 + SIOCGIFPRIORITY = 0xc020699c + SIOCGIFRDOMAIN = 0xc02069a0 + SIOCGIFRTLABEL = 0xc0206983 + SIOCGIFRXR = 0x802069aa + SIOCGIFSFFPAGE = 0xc1126939 + SIOCGIFXFLAGS = 0xc020699e + SIOCGLIFPHYADDR = 0xc218694b + SIOCGLIFPHYDF = 0xc02069c2 + SIOCGLIFPHYECN = 0xc02069c8 + SIOCGLIFPHYRTABLE = 0xc02069a2 + SIOCGLIFPHYTTL = 0xc02069a9 + SIOCGPGRP = 0x40047309 + SIOCGPWE3 = 0xc0206998 + SIOCGPWE3CTRLWORD = 0xc02069dc + SIOCGPWE3FAT = 0xc02069dd + SIOCGPWE3NEIGHBOR = 0xc21869de + SIOCGRXHPRIO = 0xc02069db + SIOCGSPPPPARAMS = 0xc0206994 + SIOCGTXHPRIO = 0xc02069c6 + SIOCGUMBINFO = 0xc02069be + SIOCGUMBPARAM = 0xc02069c0 + SIOCGVH = 0xc02069f6 + SIOCGVNETFLOWID = 0xc02069c4 + SIOCGVNETID = 0xc02069a7 + SIOCIFAFATTACH = 0x801169ab + SIOCIFAFDETACH = 0x801169ac + SIOCIFCREATE = 0x8020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSETKALIVE = 0x801869a3 + SIOCSETLABEL = 0x80206999 + SIOCSETMPWCFG = 0x802069ad + SIOCSETPFLOW = 0x802069fd + SIOCSETPFSYNC = 0x802069f7 + SIOCSETVLAN = 0x8020698f + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFDESCR = 0x80206980 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGATTR = 0x8028698c + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020691f + SIOCSIFLLPRIO = 0x802069b5 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x8020697f + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPAIR = 0x802069b0 + SIOCSIFPARENT = 0x802069b2 + SIOCSIFPRIORITY = 0x8020699b + SIOCSIFRDOMAIN = 0x8020699f + SIOCSIFRTLABEL = 0x80206982 + SIOCSIFXFLAGS = 0x8020699d + SIOCSLIFPHYADDR = 0x8218694a + SIOCSLIFPHYDF = 0x802069c1 + SIOCSLIFPHYECN = 0x802069c7 + SIOCSLIFPHYRTABLE = 0x802069a1 + SIOCSLIFPHYTTL = 0x802069a8 + SIOCSPGRP = 0x80047308 + SIOCSPWE3CTRLWORD = 0x802069dc + SIOCSPWE3FAT = 0x802069dd + SIOCSPWE3NEIGHBOR = 0x821869de + SIOCSRXHPRIO = 0x802069db + SIOCSSPPPPARAMS = 0x80206993 + SIOCSTXHPRIO = 0x802069c5 + SIOCSUMBPARAM = 0x802069bf + SIOCSVH = 0xc02069f5 + SIOCSVNETFLOWID = 0x802069c3 + SIOCSVNETID = 0x802069a6 + SOCK_CLOEXEC = 0x8000 + SOCK_DGRAM = 0x2 + SOCK_DNS = 0x1000 + SOCK_NONBLOCK = 0x4000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BINDANY = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DOMAIN = 0x1024 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NETPROC = 0x1020 + SO_OOBINLINE = 0x100 + SO_PEERCRED = 0x1022 + SO_PROTOCOL = 0x1025 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RTABLE = 0x1021 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SPLICE = 0x1023 + SO_TIMESTAMP = 0x800 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_ZEROIZE = 0x2000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCPOPT_EOL = 0x0 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_HDR = 0x1010500 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SACK_PERMIT_HDR = 0x1010402 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_TSTAMP_HDR = 0x101080a + TCPOPT_WINDOW = 0x3 + TCP_INFO = 0x9 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x3 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x4 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOPUSH = 0x10 + TCP_SACKHOLE_LIMIT = 0x80 + TCP_SACK_ENABLE = 0x8 + TCSAFLUSH = 0x2 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCHKVERAUTH = 0x2000741e + TIOCCLRVERAUTH = 0x2000741d + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_PPS = 0x10 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047463 + TIOCGTSTAMP = 0x4010745b + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMODG = 0x4004746a + TIOCMODS = 0x8004746d + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSETVERAUTH = 0x8004741c + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x8004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTOP = 0x2000746f + TIOCSTSTAMP = 0x8008745a + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCUCNTL_CBRK = 0x7a + TIOCUCNTL_SBRK = 0x7b + TOSTOP = 0x400000 + UTIME_NOW = -0x2 + UTIME_OMIT = -0x1 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_ANONMIN = 0x7 + VM_LOADAVG = 0x2 + VM_MALLOC_CONF = 0xc + VM_MAXID = 0xd + VM_MAXSLP = 0xa + VM_METER = 0x1 + VM_NKMEMPAGES = 0x6 + VM_PSSTRINGS = 0x3 + VM_SWAPENCRYPT = 0x5 + VM_USPACE = 0xb + VM_UVMEXP = 0x4 + VM_VNODEMIN = 0x9 + VM_VTEXTMIN = 0x8 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALTSIG = 0x4 + WCONTINUED = 0x8 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WUNTRACED = 0x2 + XCASE = 0x1000000 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x5c) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x58) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x59) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EIPSEC = syscall.Errno(0x52) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x5f) + ELOOP = syscall.Errno(0x3e) + EMEDIUMTYPE = syscall.Errno(0x56) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x53) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOMEDIUM = syscall.Errno(0x55) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5a) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5d) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x5b) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x57) + EOWNERDEAD = syscall.Errno(0x5e) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5f) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disk quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC program not available"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIPSEC", "IPsec processing failure"}, + {83, "ENOATTR", "attribute not found"}, + {84, "EILSEQ", "illegal byte sequence"}, + {85, "ENOMEDIUM", "no medium found"}, + {86, "EMEDIUMTYPE", "wrong medium type"}, + {87, "EOVERFLOW", "value too large to be stored in data type"}, + {88, "ECANCELED", "operation canceled"}, + {89, "EIDRM", "identifier removed"}, + {90, "ENOMSG", "no message of desired type"}, + {91, "ENOTSUP", "not supported"}, + {92, "EBADMSG", "bad message"}, + {93, "ENOTRECOVERABLE", "state not recoverable"}, + {94, "EOWNERDEAD", "previous owner died"}, + {95, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread AST"}, + {28672, "SIGSTKSZ", "unknown signal"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go b/tests/vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go new file mode 100644 index 000000000..76a363f0f --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go @@ -0,0 +1,1905 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build mips64 && openbsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BLUETOOTH = 0x20 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_ENCAP = 0x1c + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_KEY = 0x1e + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x24 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SIP = 0x1d + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x200 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRFILT = 0x4004427c + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc010427b + BIOCGETIF = 0x4020426b + BIOCGFILDROP = 0x40044278 + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044273 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x20004276 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDIRFILT = 0x8004427d + BIOCSDLT = 0x8004427a + BIOCSETF = 0x80104267 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x80104277 + BIOCSFILDROP = 0x80044279 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044272 + BIOCSRTIMEOUT = 0x8010426d + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIRECTION_IN = 0x1 + BPF_DIRECTION_OUT = 0x2 + BPF_DIV = 0x30 + BPF_FILDROP_CAPTURE = 0x1 + BPF_FILDROP_DROP = 0x2 + BPF_FILDROP_PASS = 0x0 + BPF_F_DIR_IN = 0x10 + BPF_F_DIR_MASK = 0x30 + BPF_F_DIR_OUT = 0x20 + BPF_F_DIR_SHIFT = 0x4 + BPF_F_FLOWID = 0x8 + BPF_F_PRI_MASK = 0x7 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x200000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RND = 0xc0 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_BOOTTIME = 0x6 + CLOCK_MONOTONIC = 0x3 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x4 + CLOCK_UPTIME = 0x5 + CPUSTATES = 0x6 + CP_IDLE = 0x5 + CP_INTR = 0x4 + CP_NICE = 0x1 + CP_SPIN = 0x3 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0xff + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DIOCADDQUEUE = 0xc110445d + DIOCADDRULE = 0xcd604404 + DIOCADDSTATE = 0xc1084425 + DIOCCHANGERULE = 0xcd60441a + DIOCCLRIFFLAG = 0xc028445a + DIOCCLRSRCNODES = 0x20004455 + DIOCCLRSTATES = 0xc0e04412 + DIOCCLRSTATUS = 0xc0284416 + DIOCGETLIMIT = 0xc0084427 + DIOCGETQSTATS = 0xc1204460 + DIOCGETQUEUE = 0xc110445f + DIOCGETQUEUES = 0xc110445e + DIOCGETRULE = 0xcd604407 + DIOCGETRULES = 0xcd604406 + DIOCGETRULESET = 0xc444443b + DIOCGETRULESETS = 0xc444443a + DIOCGETSRCNODES = 0xc0104454 + DIOCGETSTATE = 0xc1084413 + DIOCGETSTATES = 0xc0104419 + DIOCGETSTATUS = 0xc1e84415 + DIOCGETSYNFLWATS = 0xc0084463 + DIOCGETTIMEOUT = 0xc008441e + DIOCIGETIFACES = 0xc0284457 + DIOCKILLSRCNODES = 0xc080445b + DIOCKILLSTATES = 0xc0e04429 + DIOCNATLOOK = 0xc0504417 + DIOCOSFPADD = 0xc088444f + DIOCOSFPFLUSH = 0x2000444e + DIOCOSFPGET = 0xc0884450 + DIOCRADDADDRS = 0xc4504443 + DIOCRADDTABLES = 0xc450443d + DIOCRCLRADDRS = 0xc4504442 + DIOCRCLRASTATS = 0xc4504448 + DIOCRCLRTABLES = 0xc450443c + DIOCRCLRTSTATS = 0xc4504441 + DIOCRDELADDRS = 0xc4504444 + DIOCRDELTABLES = 0xc450443e + DIOCRGETADDRS = 0xc4504446 + DIOCRGETASTATS = 0xc4504447 + DIOCRGETTABLES = 0xc450443f + DIOCRGETTSTATS = 0xc4504440 + DIOCRINADEFINE = 0xc450444d + DIOCRSETADDRS = 0xc4504445 + DIOCRSETTFLAGS = 0xc450444a + DIOCRTSTADDRS = 0xc4504449 + DIOCSETDEBUG = 0xc0044418 + DIOCSETHOSTID = 0xc0044456 + DIOCSETIFFLAG = 0xc0284459 + DIOCSETLIMIT = 0xc0084428 + DIOCSETREASS = 0xc004445c + DIOCSETSTATUSIF = 0xc0284414 + DIOCSETSYNCOOKIES = 0xc0014462 + DIOCSETSYNFLWATS = 0xc0084461 + DIOCSETTIMEOUT = 0xc008441d + DIOCSTART = 0x20004401 + DIOCSTOP = 0x20004402 + DIOCXBEGIN = 0xc0104451 + DIOCXCOMMIT = 0xc0104452 + DIOCXROLLBACK = 0xc0104453 + DLT_ARCNET = 0x7 + DLT_ATM_RFC1483 = 0xb + DLT_AX25 = 0x3 + DLT_CHAOS = 0x5 + DLT_C_HDLC = 0x68 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0xd + DLT_FDDI = 0xa + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_LOOP = 0xc + DLT_MPLS = 0xdb + DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_SERIAL = 0x32 + DLT_PRONET = 0x4 + DLT_RAW = 0xe + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_USBPCAP = 0xf9 + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMT_TAGOVF = 0x1 + EMUL_ENABLED = 0x1 + EMUL_NATIVE = 0x2 + ENDRUNDISC = 0x9 + ETH64_8021_RSVD_MASK = 0xfffffffffff0 + ETH64_8021_RSVD_PREFIX = 0x180c2000000 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_AOE = 0x88a2 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_EAPOL = 0x888e + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LLDP = 0x88cc + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MACSEC = 0x88e5 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NHRP = 0x2001 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NSH = 0x984f + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PBB = 0x88e7 + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_QINQ = 0x88a8 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOW = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_ALIGN = 0x2 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_DIX_LEN = 0x600 + ETHER_MAX_HARDMTU_LEN = 0xff9b + ETHER_MAX_LEN = 0x5ee + ETHER_MIN_LEN = 0x40 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = -0x3 + EVFILT_DEVICE = -0x8 + EVFILT_EXCEPT = -0x9 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0x9 + EVFILT_TIMER = -0x7 + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EVL_ENCAPLEN = 0x4 + EVL_PRIO_BITS = 0xd + EVL_PRIO_MAX = 0x7 + EVL_VLID_MASK = 0xfff + EVL_VLID_MAX = 0xffe + EVL_VLID_MIN = 0x1 + EVL_VLID_NULL = 0x0 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf800 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xa + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETOWN = 0x5 + F_ISATTY = 0xb + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8e52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x20 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BLUETOOTH = 0xf8 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf7 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DUMMY = 0xf1 + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf3 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MBIM = 0xfa + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFLOW = 0xf9 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf2 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_WIREGUARD = 0xfb + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_HOST = 0x1 + IN_RFC3021_NET = 0xfffffffe + IN_RFC3021_NSHIFT = 0x1f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x103 + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_AUTH_LEVEL = 0x35 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_ESP_NETWORK_LEVEL = 0x37 + IPV6_ESP_TRANS_LEVEL = 0x36 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xfffffff + IPV6_FLOWLABEL_MASK = 0xfffff + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPCOMP_LEVEL = 0x3c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MINHOPCOUNT = 0x41 + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_OPTIONS = 0x1 + IPV6_PATHMTU = 0x2c + IPV6_PIPEX = 0x3f + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVDSTPORT = 0x40 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTABLE = 0x1021 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_AUTH_LEVEL = 0x14 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_ESP_NETWORK_LEVEL = 0x16 + IP_ESP_TRANS_LEVEL = 0x15 + IP_HDRINCL = 0x2 + IP_IPCOMP_LEVEL = 0x1d + IP_IPDEFTTL = 0x25 + IP_IPSECFLOWINFO = 0x24 + IP_IPSEC_LOCAL_AUTH = 0x1b + IP_IPSEC_LOCAL_CRED = 0x19 + IP_IPSEC_LOCAL_ID = 0x17 + IP_IPSEC_REMOTE_AUTH = 0x1c + IP_IPSEC_REMOTE_CRED = 0x1a + IP_IPSEC_REMOTE_ID = 0x18 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0xfff + IP_MF = 0x2000 + IP_MINTTL = 0x20 + IP_MIN_MEMBERSHIPS = 0xf + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PIPEX = 0x22 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVDSTPORT = 0x21 + IP_RECVIF = 0x1e + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRTABLE = 0x23 + IP_RECVTTL = 0x1f + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RTABLE = 0x1021 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 + IUCLC = 0x1000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LCNT_OVERLOAD_FLUSH = 0x6 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_CONCEAL = 0x8000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FLAGMASK = 0xfff7 + MAP_HASSEMAPHORE = 0x0 + MAP_INHERIT = 0x0 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_INHERIT_ZERO = 0x3 + MAP_NOEXTEND = 0x0 + MAP_NORESERVE = 0x0 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x0 + MAP_SHARED = 0x1 + MAP_STACK = 0x4000 + MAP_TRYFIXED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_DOOMED = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_NOATIME = 0x8000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOPERM = 0x20 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x4000000 + MNT_STALLED = 0x100000 + MNT_SWAPPABLE = 0x200000 + MNT_SYNCHRONOUS = 0x2 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x400ffff + MNT_WAIT = 0x1 + MNT_WANTRDWR = 0x2000000 + MNT_WXALLOWED = 0x800 + MOUNT_AFS = "afs" + MOUNT_CD9660 = "cd9660" + MOUNT_EXT2FS = "ext2fs" + MOUNT_FFS = "ffs" + MOUNT_FUSEFS = "fuse" + MOUNT_MFS = "mfs" + MOUNT_MSDOS = "msdos" + MOUNT_NCPFS = "ncpfs" + MOUNT_NFS = "nfs" + MOUNT_NTFS = "ntfs" + MOUNT_TMPFS = "tmpfs" + MOUNT_UDF = "udf" + MOUNT_UFS = "ffs" + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_MCAST = 0x200 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x1000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x4 + MS_SYNC = 0x2 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFNAMES = 0x6 + NET_RT_MAXID = 0x8 + NET_RT_SOURCE = 0x7 + NET_RT_STATS = 0x4 + NET_RT_TABLE = 0x5 + NFDBITS = 0x20 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHANGE = 0x1 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EOF = 0x2 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_OOB = 0x4 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRUNCATE = 0x80 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OLCUC = 0x20 + ONLCR = 0x2 + ONLRET = 0x80 + ONOCR = 0x40 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x10000 + O_CREAT = 0x200 + O_DIRECTORY = 0x20000 + O_DSYNC = 0x80 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x80 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PF_FLUSH = 0x1 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BFD = 0xb + RTAX_BRD = 0x7 + RTAX_DNS = 0xc + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_LABEL = 0xa + RTAX_MAX = 0xf + RTAX_NETMASK = 0x2 + RTAX_SEARCH = 0xe + RTAX_SRC = 0x8 + RTAX_SRCMASK = 0x9 + RTAX_STATIC = 0xd + RTA_AUTHOR = 0x40 + RTA_BFD = 0x800 + RTA_BRD = 0x80 + RTA_DNS = 0x1000 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_LABEL = 0x400 + RTA_NETMASK = 0x4 + RTA_SEARCH = 0x4000 + RTA_SRC = 0x100 + RTA_SRCMASK = 0x200 + RTA_STATIC = 0x2000 + RTF_ANNOUNCE = 0x4000 + RTF_BFD = 0x1000000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CACHED = 0x20000 + RTF_CLONED = 0x10000 + RTF_CLONING = 0x100 + RTF_CONNECTED = 0x800000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FMASK = 0x110fc08 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MPATH = 0x40000 + RTF_MPLS = 0x100000 + RTF_MULTICAST = 0x200 + RTF_PERMANENT_ARP = 0x2000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x2000 + RTF_REJECT = 0x8 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_USETRAILERS = 0x8000 + RTM_80211INFO = 0x15 + RTM_ADD = 0x1 + RTM_BFD = 0x12 + RTM_CHANGE = 0x3 + RTM_CHGADDRATTR = 0x14 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DESYNC = 0x10 + RTM_GET = 0x4 + RTM_IFANNOUNCE = 0xf + RTM_IFINFO = 0xe + RTM_INVALIDATE = 0x11 + RTM_LOSING = 0x5 + RTM_MAXSIZE = 0x800 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_PROPOSAL = 0x13 + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_SOURCE = 0x16 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RT_TABLEID_BITS = 0x8 + RT_TABLEID_MASK = 0xff + RT_TABLEID_MAX = 0xff + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x4 + SEEK_CUR = 0x1 + SEEK_END = 0x2 + SEEK_SET = 0x0 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80286987 + SIOCATMARK = 0x40047307 + SIOCBRDGADD = 0x8060693c + SIOCBRDGADDL = 0x80606949 + SIOCBRDGADDS = 0x80606941 + SIOCBRDGARL = 0x808c694d + SIOCBRDGDADDR = 0x81286947 + SIOCBRDGDEL = 0x8060693d + SIOCBRDGDELS = 0x80606942 + SIOCBRDGFLUSH = 0x80606948 + SIOCBRDGFRL = 0x808c694e + SIOCBRDGGCACHE = 0xc0146941 + SIOCBRDGGFD = 0xc0146952 + SIOCBRDGGHT = 0xc0146951 + SIOCBRDGGIFFLGS = 0xc060693e + SIOCBRDGGMA = 0xc0146953 + SIOCBRDGGPARAM = 0xc0406958 + SIOCBRDGGPRI = 0xc0146950 + SIOCBRDGGRL = 0xc030694f + SIOCBRDGGTO = 0xc0146946 + SIOCBRDGIFS = 0xc0606942 + SIOCBRDGRTS = 0xc0206943 + SIOCBRDGSADDR = 0xc1286944 + SIOCBRDGSCACHE = 0x80146940 + SIOCBRDGSFD = 0x80146952 + SIOCBRDGSHT = 0x80146951 + SIOCBRDGSIFCOST = 0x80606955 + SIOCBRDGSIFFLGS = 0x8060693f + SIOCBRDGSIFPRIO = 0x80606954 + SIOCBRDGSIFPROT = 0x8060694a + SIOCBRDGSMA = 0x80146953 + SIOCBRDGSPRI = 0x80146950 + SIOCBRDGSPROTO = 0x8014695a + SIOCBRDGSTO = 0x80146945 + SIOCBRDGSTXHC = 0x80146959 + SIOCDELLABEL = 0x80206997 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80286989 + SIOCDIFPARENT = 0x802069b4 + SIOCDIFPHYADDR = 0x80206949 + SIOCDPWE3NEIGHBOR = 0x802069de + SIOCDVNETID = 0x802069af + SIOCGETKALIVE = 0xc01869a4 + SIOCGETLABEL = 0x8020699a + SIOCGETMPWCFG = 0xc02069ae + SIOCGETPFLOW = 0xc02069fe + SIOCGETPFSYNC = 0xc02069f8 + SIOCGETSGCNT = 0xc0207534 + SIOCGETVIFCNT = 0xc0287533 + SIOCGETVLAN = 0xc0206990 + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCONF = 0xc0106924 + SIOCGIFDATA = 0xc020691b + SIOCGIFDESCR = 0xc0206981 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGATTR = 0xc028698b + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGLIST = 0xc028698d + SIOCGIFGMEMB = 0xc028698a + SIOCGIFGROUP = 0xc0286988 + SIOCGIFHARDMTU = 0xc02069a5 + SIOCGIFLLPRIO = 0xc02069b6 + SIOCGIFMEDIA = 0xc0406938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc020697e + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPAIR = 0xc02069b1 + SIOCGIFPARENT = 0xc02069b3 + SIOCGIFPRIORITY = 0xc020699c + SIOCGIFRDOMAIN = 0xc02069a0 + SIOCGIFRTLABEL = 0xc0206983 + SIOCGIFRXR = 0x802069aa + SIOCGIFSFFPAGE = 0xc1126939 + SIOCGIFXFLAGS = 0xc020699e + SIOCGLIFPHYADDR = 0xc218694b + SIOCGLIFPHYDF = 0xc02069c2 + SIOCGLIFPHYECN = 0xc02069c8 + SIOCGLIFPHYRTABLE = 0xc02069a2 + SIOCGLIFPHYTTL = 0xc02069a9 + SIOCGPGRP = 0x40047309 + SIOCGPWE3 = 0xc0206998 + SIOCGPWE3CTRLWORD = 0xc02069dc + SIOCGPWE3FAT = 0xc02069dd + SIOCGPWE3NEIGHBOR = 0xc21869de + SIOCGRXHPRIO = 0xc02069db + SIOCGSPPPPARAMS = 0xc0206994 + SIOCGTXHPRIO = 0xc02069c6 + SIOCGUMBINFO = 0xc02069be + SIOCGUMBPARAM = 0xc02069c0 + SIOCGVH = 0xc02069f6 + SIOCGVNETFLOWID = 0xc02069c4 + SIOCGVNETID = 0xc02069a7 + SIOCIFAFATTACH = 0x801169ab + SIOCIFAFDETACH = 0x801169ac + SIOCIFCREATE = 0x8020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSETKALIVE = 0x801869a3 + SIOCSETLABEL = 0x80206999 + SIOCSETMPWCFG = 0x802069ad + SIOCSETPFLOW = 0x802069fd + SIOCSETPFSYNC = 0x802069f7 + SIOCSETVLAN = 0x8020698f + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFDESCR = 0x80206980 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGATTR = 0x8028698c + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020691f + SIOCSIFLLPRIO = 0x802069b5 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x8020697f + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPAIR = 0x802069b0 + SIOCSIFPARENT = 0x802069b2 + SIOCSIFPRIORITY = 0x8020699b + SIOCSIFRDOMAIN = 0x8020699f + SIOCSIFRTLABEL = 0x80206982 + SIOCSIFXFLAGS = 0x8020699d + SIOCSLIFPHYADDR = 0x8218694a + SIOCSLIFPHYDF = 0x802069c1 + SIOCSLIFPHYECN = 0x802069c7 + SIOCSLIFPHYRTABLE = 0x802069a1 + SIOCSLIFPHYTTL = 0x802069a8 + SIOCSPGRP = 0x80047308 + SIOCSPWE3CTRLWORD = 0x802069dc + SIOCSPWE3FAT = 0x802069dd + SIOCSPWE3NEIGHBOR = 0x821869de + SIOCSRXHPRIO = 0x802069db + SIOCSSPPPPARAMS = 0x80206993 + SIOCSTXHPRIO = 0x802069c5 + SIOCSUMBPARAM = 0x802069bf + SIOCSVH = 0xc02069f5 + SIOCSVNETFLOWID = 0x802069c3 + SIOCSVNETID = 0x802069a6 + SOCK_CLOEXEC = 0x8000 + SOCK_DGRAM = 0x2 + SOCK_DNS = 0x1000 + SOCK_NONBLOCK = 0x4000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BINDANY = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DOMAIN = 0x1024 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NETPROC = 0x1020 + SO_OOBINLINE = 0x100 + SO_PEERCRED = 0x1022 + SO_PROTOCOL = 0x1025 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RTABLE = 0x1021 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SPLICE = 0x1023 + SO_TIMESTAMP = 0x800 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_ZEROIZE = 0x2000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCPOPT_EOL = 0x0 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_HDR = 0x1010500 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SACK_PERMIT_HDR = 0x1010402 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_TSTAMP_HDR = 0x101080a + TCPOPT_WINDOW = 0x3 + TCP_INFO = 0x9 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x3 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x4 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOPUSH = 0x10 + TCP_SACKHOLE_LIMIT = 0x80 + TCP_SACK_ENABLE = 0x8 + TCSAFLUSH = 0x2 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCHKVERAUTH = 0x2000741e + TIOCCLRVERAUTH = 0x2000741d + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_PPS = 0x10 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047463 + TIOCGTSTAMP = 0x4010745b + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMODG = 0x4004746a + TIOCMODS = 0x8004746d + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSETVERAUTH = 0x8004741c + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x8004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTOP = 0x2000746f + TIOCSTSTAMP = 0x8008745a + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCUCNTL_CBRK = 0x7a + TIOCUCNTL_SBRK = 0x7b + TOSTOP = 0x400000 + UTIME_NOW = -0x2 + UTIME_OMIT = -0x1 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_ANONMIN = 0x7 + VM_LOADAVG = 0x2 + VM_MALLOC_CONF = 0xc + VM_MAXID = 0xd + VM_MAXSLP = 0xa + VM_METER = 0x1 + VM_NKMEMPAGES = 0x6 + VM_PSSTRINGS = 0x3 + VM_SWAPENCRYPT = 0x5 + VM_USPACE = 0xb + VM_UVMEXP = 0x4 + VM_VNODEMIN = 0x9 + VM_VTEXTMIN = 0x8 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALTSIG = 0x4 + WCONTINUED = 0x8 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WUNTRACED = 0x2 + XCASE = 0x1000000 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x5c) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x58) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x59) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EIPSEC = syscall.Errno(0x52) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x5f) + ELOOP = syscall.Errno(0x3e) + EMEDIUMTYPE = syscall.Errno(0x56) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x53) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOMEDIUM = syscall.Errno(0x55) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5a) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5d) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x5b) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x57) + EOWNERDEAD = syscall.Errno(0x5e) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5f) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disk quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC program not available"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIPSEC", "IPsec processing failure"}, + {83, "ENOATTR", "attribute not found"}, + {84, "EILSEQ", "illegal byte sequence"}, + {85, "ENOMEDIUM", "no medium found"}, + {86, "EMEDIUMTYPE", "wrong medium type"}, + {87, "EOVERFLOW", "value too large to be stored in data type"}, + {88, "ECANCELED", "operation canceled"}, + {89, "EIDRM", "identifier removed"}, + {90, "ENOMSG", "no message of desired type"}, + {91, "ENOTSUP", "not supported"}, + {92, "EBADMSG", "bad message"}, + {93, "ENOTRECOVERABLE", "state not recoverable"}, + {94, "EOWNERDEAD", "previous owner died"}, + {95, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread AST"}, + {81920, "SIGSTKSZ", "unknown signal"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_openbsd_ppc64.go b/tests/vendor/golang.org/x/sys/unix/zerrors_openbsd_ppc64.go new file mode 100644 index 000000000..43ca0cdfd --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_openbsd_ppc64.go @@ -0,0 +1,1904 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc64 && openbsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BLUETOOTH = 0x20 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_ENCAP = 0x1c + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_KEY = 0x1e + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x24 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SIP = 0x1d + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x200 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRFILT = 0x4004427c + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc010427b + BIOCGETIF = 0x4020426b + BIOCGFILDROP = 0x40044278 + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044273 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x20004276 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDIRFILT = 0x8004427d + BIOCSDLT = 0x8004427a + BIOCSETF = 0x80104267 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x80104277 + BIOCSFILDROP = 0x80044279 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044272 + BIOCSRTIMEOUT = 0x8010426d + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIRECTION_IN = 0x1 + BPF_DIRECTION_OUT = 0x2 + BPF_DIV = 0x30 + BPF_FILDROP_CAPTURE = 0x1 + BPF_FILDROP_DROP = 0x2 + BPF_FILDROP_PASS = 0x0 + BPF_F_DIR_IN = 0x10 + BPF_F_DIR_MASK = 0x30 + BPF_F_DIR_OUT = 0x20 + BPF_F_DIR_SHIFT = 0x4 + BPF_F_FLOWID = 0x8 + BPF_F_PRI_MASK = 0x7 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x200000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RND = 0xc0 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_BOOTTIME = 0x6 + CLOCK_MONOTONIC = 0x3 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x4 + CLOCK_UPTIME = 0x5 + CPUSTATES = 0x6 + CP_IDLE = 0x5 + CP_INTR = 0x4 + CP_NICE = 0x1 + CP_SPIN = 0x3 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0xff + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DIOCADDQUEUE = 0xc110445d + DIOCADDRULE = 0xcd604404 + DIOCADDSTATE = 0xc1084425 + DIOCCHANGERULE = 0xcd60441a + DIOCCLRIFFLAG = 0xc028445a + DIOCCLRSRCNODES = 0x20004455 + DIOCCLRSTATES = 0xc0e04412 + DIOCCLRSTATUS = 0xc0284416 + DIOCGETLIMIT = 0xc0084427 + DIOCGETQSTATS = 0xc1204460 + DIOCGETQUEUE = 0xc110445f + DIOCGETQUEUES = 0xc110445e + DIOCGETRULE = 0xcd604407 + DIOCGETRULES = 0xcd604406 + DIOCGETRULESET = 0xc444443b + DIOCGETRULESETS = 0xc444443a + DIOCGETSRCNODES = 0xc0104454 + DIOCGETSTATE = 0xc1084413 + DIOCGETSTATES = 0xc0104419 + DIOCGETSTATUS = 0xc1e84415 + DIOCGETSYNFLWATS = 0xc0084463 + DIOCGETTIMEOUT = 0xc008441e + DIOCIGETIFACES = 0xc0284457 + DIOCKILLSRCNODES = 0xc080445b + DIOCKILLSTATES = 0xc0e04429 + DIOCNATLOOK = 0xc0504417 + DIOCOSFPADD = 0xc088444f + DIOCOSFPFLUSH = 0x2000444e + DIOCOSFPGET = 0xc0884450 + DIOCRADDADDRS = 0xc4504443 + DIOCRADDTABLES = 0xc450443d + DIOCRCLRADDRS = 0xc4504442 + DIOCRCLRASTATS = 0xc4504448 + DIOCRCLRTABLES = 0xc450443c + DIOCRCLRTSTATS = 0xc4504441 + DIOCRDELADDRS = 0xc4504444 + DIOCRDELTABLES = 0xc450443e + DIOCRGETADDRS = 0xc4504446 + DIOCRGETASTATS = 0xc4504447 + DIOCRGETTABLES = 0xc450443f + DIOCRGETTSTATS = 0xc4504440 + DIOCRINADEFINE = 0xc450444d + DIOCRSETADDRS = 0xc4504445 + DIOCRSETTFLAGS = 0xc450444a + DIOCRTSTADDRS = 0xc4504449 + DIOCSETDEBUG = 0xc0044418 + DIOCSETHOSTID = 0xc0044456 + DIOCSETIFFLAG = 0xc0284459 + DIOCSETLIMIT = 0xc0084428 + DIOCSETREASS = 0xc004445c + DIOCSETSTATUSIF = 0xc0284414 + DIOCSETSYNCOOKIES = 0xc0014462 + DIOCSETSYNFLWATS = 0xc0084461 + DIOCSETTIMEOUT = 0xc008441d + DIOCSTART = 0x20004401 + DIOCSTOP = 0x20004402 + DIOCXBEGIN = 0xc0104451 + DIOCXCOMMIT = 0xc0104452 + DIOCXROLLBACK = 0xc0104453 + DLT_ARCNET = 0x7 + DLT_ATM_RFC1483 = 0xb + DLT_AX25 = 0x3 + DLT_CHAOS = 0x5 + DLT_C_HDLC = 0x68 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0xd + DLT_FDDI = 0xa + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_LOOP = 0xc + DLT_MPLS = 0xdb + DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_SERIAL = 0x32 + DLT_PRONET = 0x4 + DLT_RAW = 0xe + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_USBPCAP = 0xf9 + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMT_TAGOVF = 0x1 + EMUL_ENABLED = 0x1 + EMUL_NATIVE = 0x2 + ENDRUNDISC = 0x9 + ETH64_8021_RSVD_MASK = 0xfffffffffff0 + ETH64_8021_RSVD_PREFIX = 0x180c2000000 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_AOE = 0x88a2 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_EAPOL = 0x888e + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LLDP = 0x88cc + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MACSEC = 0x88e5 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NHRP = 0x2001 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NSH = 0x984f + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PBB = 0x88e7 + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_QINQ = 0x88a8 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOW = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_ALIGN = 0x2 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_DIX_LEN = 0x600 + ETHER_MAX_HARDMTU_LEN = 0xff9b + ETHER_MAX_LEN = 0x5ee + ETHER_MIN_LEN = 0x40 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = -0x3 + EVFILT_DEVICE = -0x8 + EVFILT_EXCEPT = -0x9 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0x9 + EVFILT_TIMER = -0x7 + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EVL_ENCAPLEN = 0x4 + EVL_PRIO_BITS = 0xd + EVL_PRIO_MAX = 0x7 + EVL_VLID_MASK = 0xfff + EVL_VLID_MAX = 0xffe + EVL_VLID_MIN = 0x1 + EVL_VLID_NULL = 0x0 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf800 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xa + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETOWN = 0x5 + F_ISATTY = 0xb + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8e52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x20 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BLUETOOTH = 0xf8 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf7 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DUMMY = 0xf1 + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf3 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MBIM = 0xfa + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFLOW = 0xf9 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf2 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_WIREGUARD = 0xfb + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_HOST = 0x1 + IN_RFC3021_NET = 0xfffffffe + IN_RFC3021_NSHIFT = 0x1f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x103 + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_AUTH_LEVEL = 0x35 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_ESP_NETWORK_LEVEL = 0x37 + IPV6_ESP_TRANS_LEVEL = 0x36 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xfffffff + IPV6_FLOWLABEL_MASK = 0xfffff + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPCOMP_LEVEL = 0x3c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MINHOPCOUNT = 0x41 + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_OPTIONS = 0x1 + IPV6_PATHMTU = 0x2c + IPV6_PIPEX = 0x3f + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVDSTPORT = 0x40 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTABLE = 0x1021 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_AUTH_LEVEL = 0x14 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_ESP_NETWORK_LEVEL = 0x16 + IP_ESP_TRANS_LEVEL = 0x15 + IP_HDRINCL = 0x2 + IP_IPCOMP_LEVEL = 0x1d + IP_IPDEFTTL = 0x25 + IP_IPSECFLOWINFO = 0x24 + IP_IPSEC_LOCAL_AUTH = 0x1b + IP_IPSEC_LOCAL_CRED = 0x19 + IP_IPSEC_LOCAL_ID = 0x17 + IP_IPSEC_REMOTE_AUTH = 0x1c + IP_IPSEC_REMOTE_CRED = 0x1a + IP_IPSEC_REMOTE_ID = 0x18 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0xfff + IP_MF = 0x2000 + IP_MINTTL = 0x20 + IP_MIN_MEMBERSHIPS = 0xf + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PIPEX = 0x22 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVDSTPORT = 0x21 + IP_RECVIF = 0x1e + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRTABLE = 0x23 + IP_RECVTTL = 0x1f + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RTABLE = 0x1021 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 + IUCLC = 0x1000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LCNT_OVERLOAD_FLUSH = 0x6 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_CONCEAL = 0x8000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FLAGMASK = 0xfff7 + MAP_HASSEMAPHORE = 0x0 + MAP_INHERIT = 0x0 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_INHERIT_ZERO = 0x3 + MAP_NOEXTEND = 0x0 + MAP_NORESERVE = 0x0 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x0 + MAP_SHARED = 0x1 + MAP_STACK = 0x4000 + MAP_TRYFIXED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_DOOMED = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_NOATIME = 0x8000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOPERM = 0x20 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x4000000 + MNT_STALLED = 0x100000 + MNT_SWAPPABLE = 0x200000 + MNT_SYNCHRONOUS = 0x2 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x400ffff + MNT_WAIT = 0x1 + MNT_WANTRDWR = 0x2000000 + MNT_WXALLOWED = 0x800 + MOUNT_AFS = "afs" + MOUNT_CD9660 = "cd9660" + MOUNT_EXT2FS = "ext2fs" + MOUNT_FFS = "ffs" + MOUNT_FUSEFS = "fuse" + MOUNT_MFS = "mfs" + MOUNT_MSDOS = "msdos" + MOUNT_NCPFS = "ncpfs" + MOUNT_NFS = "nfs" + MOUNT_NTFS = "ntfs" + MOUNT_TMPFS = "tmpfs" + MOUNT_UDF = "udf" + MOUNT_UFS = "ffs" + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_MCAST = 0x200 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x1000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x4 + MS_SYNC = 0x2 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFNAMES = 0x6 + NET_RT_MAXID = 0x8 + NET_RT_SOURCE = 0x7 + NET_RT_STATS = 0x4 + NET_RT_TABLE = 0x5 + NFDBITS = 0x20 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHANGE = 0x1 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EOF = 0x2 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_OOB = 0x4 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRUNCATE = 0x80 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OLCUC = 0x20 + ONLCR = 0x2 + ONLRET = 0x80 + ONOCR = 0x40 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x10000 + O_CREAT = 0x200 + O_DIRECTORY = 0x20000 + O_DSYNC = 0x80 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x80 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PF_FLUSH = 0x1 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BFD = 0xb + RTAX_BRD = 0x7 + RTAX_DNS = 0xc + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_LABEL = 0xa + RTAX_MAX = 0xf + RTAX_NETMASK = 0x2 + RTAX_SEARCH = 0xe + RTAX_SRC = 0x8 + RTAX_SRCMASK = 0x9 + RTAX_STATIC = 0xd + RTA_AUTHOR = 0x40 + RTA_BFD = 0x800 + RTA_BRD = 0x80 + RTA_DNS = 0x1000 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_LABEL = 0x400 + RTA_NETMASK = 0x4 + RTA_SEARCH = 0x4000 + RTA_SRC = 0x100 + RTA_SRCMASK = 0x200 + RTA_STATIC = 0x2000 + RTF_ANNOUNCE = 0x4000 + RTF_BFD = 0x1000000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CACHED = 0x20000 + RTF_CLONED = 0x10000 + RTF_CLONING = 0x100 + RTF_CONNECTED = 0x800000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FMASK = 0x110fc08 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MPATH = 0x40000 + RTF_MPLS = 0x100000 + RTF_MULTICAST = 0x200 + RTF_PERMANENT_ARP = 0x2000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x2000 + RTF_REJECT = 0x8 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_USETRAILERS = 0x8000 + RTM_80211INFO = 0x15 + RTM_ADD = 0x1 + RTM_BFD = 0x12 + RTM_CHANGE = 0x3 + RTM_CHGADDRATTR = 0x14 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DESYNC = 0x10 + RTM_GET = 0x4 + RTM_IFANNOUNCE = 0xf + RTM_IFINFO = 0xe + RTM_INVALIDATE = 0x11 + RTM_LOSING = 0x5 + RTM_MAXSIZE = 0x800 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_PROPOSAL = 0x13 + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_SOURCE = 0x16 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RT_TABLEID_BITS = 0x8 + RT_TABLEID_MASK = 0xff + RT_TABLEID_MAX = 0xff + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x4 + SEEK_CUR = 0x1 + SEEK_END = 0x2 + SEEK_SET = 0x0 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80286987 + SIOCATMARK = 0x40047307 + SIOCBRDGADD = 0x8060693c + SIOCBRDGADDL = 0x80606949 + SIOCBRDGADDS = 0x80606941 + SIOCBRDGARL = 0x808c694d + SIOCBRDGDADDR = 0x81286947 + SIOCBRDGDEL = 0x8060693d + SIOCBRDGDELS = 0x80606942 + SIOCBRDGFLUSH = 0x80606948 + SIOCBRDGFRL = 0x808c694e + SIOCBRDGGCACHE = 0xc0146941 + SIOCBRDGGFD = 0xc0146952 + SIOCBRDGGHT = 0xc0146951 + SIOCBRDGGIFFLGS = 0xc060693e + SIOCBRDGGMA = 0xc0146953 + SIOCBRDGGPARAM = 0xc0406958 + SIOCBRDGGPRI = 0xc0146950 + SIOCBRDGGRL = 0xc030694f + SIOCBRDGGTO = 0xc0146946 + SIOCBRDGIFS = 0xc0606942 + SIOCBRDGRTS = 0xc0206943 + SIOCBRDGSADDR = 0xc1286944 + SIOCBRDGSCACHE = 0x80146940 + SIOCBRDGSFD = 0x80146952 + SIOCBRDGSHT = 0x80146951 + SIOCBRDGSIFCOST = 0x80606955 + SIOCBRDGSIFFLGS = 0x8060693f + SIOCBRDGSIFPRIO = 0x80606954 + SIOCBRDGSIFPROT = 0x8060694a + SIOCBRDGSMA = 0x80146953 + SIOCBRDGSPRI = 0x80146950 + SIOCBRDGSPROTO = 0x8014695a + SIOCBRDGSTO = 0x80146945 + SIOCBRDGSTXHC = 0x80146959 + SIOCDELLABEL = 0x80206997 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80286989 + SIOCDIFPARENT = 0x802069b4 + SIOCDIFPHYADDR = 0x80206949 + SIOCDPWE3NEIGHBOR = 0x802069de + SIOCDVNETID = 0x802069af + SIOCGETKALIVE = 0xc01869a4 + SIOCGETLABEL = 0x8020699a + SIOCGETMPWCFG = 0xc02069ae + SIOCGETPFLOW = 0xc02069fe + SIOCGETPFSYNC = 0xc02069f8 + SIOCGETSGCNT = 0xc0207534 + SIOCGETVIFCNT = 0xc0287533 + SIOCGETVLAN = 0xc0206990 + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCONF = 0xc0106924 + SIOCGIFDATA = 0xc020691b + SIOCGIFDESCR = 0xc0206981 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGATTR = 0xc028698b + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGLIST = 0xc028698d + SIOCGIFGMEMB = 0xc028698a + SIOCGIFGROUP = 0xc0286988 + SIOCGIFHARDMTU = 0xc02069a5 + SIOCGIFLLPRIO = 0xc02069b6 + SIOCGIFMEDIA = 0xc0406938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc020697e + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPAIR = 0xc02069b1 + SIOCGIFPARENT = 0xc02069b3 + SIOCGIFPRIORITY = 0xc020699c + SIOCGIFRDOMAIN = 0xc02069a0 + SIOCGIFRTLABEL = 0xc0206983 + SIOCGIFRXR = 0x802069aa + SIOCGIFSFFPAGE = 0xc1126939 + SIOCGIFXFLAGS = 0xc020699e + SIOCGLIFPHYADDR = 0xc218694b + SIOCGLIFPHYDF = 0xc02069c2 + SIOCGLIFPHYECN = 0xc02069c8 + SIOCGLIFPHYRTABLE = 0xc02069a2 + SIOCGLIFPHYTTL = 0xc02069a9 + SIOCGPGRP = 0x40047309 + SIOCGPWE3 = 0xc0206998 + SIOCGPWE3CTRLWORD = 0xc02069dc + SIOCGPWE3FAT = 0xc02069dd + SIOCGPWE3NEIGHBOR = 0xc21869de + SIOCGRXHPRIO = 0xc02069db + SIOCGSPPPPARAMS = 0xc0206994 + SIOCGTXHPRIO = 0xc02069c6 + SIOCGUMBINFO = 0xc02069be + SIOCGUMBPARAM = 0xc02069c0 + SIOCGVH = 0xc02069f6 + SIOCGVNETFLOWID = 0xc02069c4 + SIOCGVNETID = 0xc02069a7 + SIOCIFAFATTACH = 0x801169ab + SIOCIFAFDETACH = 0x801169ac + SIOCIFCREATE = 0x8020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSETKALIVE = 0x801869a3 + SIOCSETLABEL = 0x80206999 + SIOCSETMPWCFG = 0x802069ad + SIOCSETPFLOW = 0x802069fd + SIOCSETPFSYNC = 0x802069f7 + SIOCSETVLAN = 0x8020698f + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFDESCR = 0x80206980 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGATTR = 0x8028698c + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020691f + SIOCSIFLLPRIO = 0x802069b5 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x8020697f + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPAIR = 0x802069b0 + SIOCSIFPARENT = 0x802069b2 + SIOCSIFPRIORITY = 0x8020699b + SIOCSIFRDOMAIN = 0x8020699f + SIOCSIFRTLABEL = 0x80206982 + SIOCSIFXFLAGS = 0x8020699d + SIOCSLIFPHYADDR = 0x8218694a + SIOCSLIFPHYDF = 0x802069c1 + SIOCSLIFPHYECN = 0x802069c7 + SIOCSLIFPHYRTABLE = 0x802069a1 + SIOCSLIFPHYTTL = 0x802069a8 + SIOCSPGRP = 0x80047308 + SIOCSPWE3CTRLWORD = 0x802069dc + SIOCSPWE3FAT = 0x802069dd + SIOCSPWE3NEIGHBOR = 0x821869de + SIOCSRXHPRIO = 0x802069db + SIOCSSPPPPARAMS = 0x80206993 + SIOCSTXHPRIO = 0x802069c5 + SIOCSUMBPARAM = 0x802069bf + SIOCSVH = 0xc02069f5 + SIOCSVNETFLOWID = 0x802069c3 + SIOCSVNETID = 0x802069a6 + SOCK_CLOEXEC = 0x8000 + SOCK_DGRAM = 0x2 + SOCK_DNS = 0x1000 + SOCK_NONBLOCK = 0x4000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BINDANY = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DOMAIN = 0x1024 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NETPROC = 0x1020 + SO_OOBINLINE = 0x100 + SO_PEERCRED = 0x1022 + SO_PROTOCOL = 0x1025 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RTABLE = 0x1021 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SPLICE = 0x1023 + SO_TIMESTAMP = 0x800 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_ZEROIZE = 0x2000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCPOPT_EOL = 0x0 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_HDR = 0x1010500 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SACK_PERMIT_HDR = 0x1010402 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_TSTAMP_HDR = 0x101080a + TCPOPT_WINDOW = 0x3 + TCP_INFO = 0x9 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x3 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x4 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOPUSH = 0x10 + TCP_SACKHOLE_LIMIT = 0x80 + TCP_SACK_ENABLE = 0x8 + TCSAFLUSH = 0x2 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCHKVERAUTH = 0x2000741e + TIOCCLRVERAUTH = 0x2000741d + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_PPS = 0x10 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047463 + TIOCGTSTAMP = 0x4010745b + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMODG = 0x4004746a + TIOCMODS = 0x8004746d + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSETVERAUTH = 0x8004741c + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x8004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTOP = 0x2000746f + TIOCSTSTAMP = 0x8008745a + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCUCNTL_CBRK = 0x7a + TIOCUCNTL_SBRK = 0x7b + TOSTOP = 0x400000 + UTIME_NOW = -0x2 + UTIME_OMIT = -0x1 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_ANONMIN = 0x7 + VM_LOADAVG = 0x2 + VM_MALLOC_CONF = 0xc + VM_MAXID = 0xd + VM_MAXSLP = 0xa + VM_METER = 0x1 + VM_NKMEMPAGES = 0x6 + VM_PSSTRINGS = 0x3 + VM_SWAPENCRYPT = 0x5 + VM_USPACE = 0xb + VM_UVMEXP = 0x4 + VM_VNODEMIN = 0x9 + VM_VTEXTMIN = 0x8 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALTSIG = 0x4 + WCONTINUED = 0x8 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WUNTRACED = 0x2 + XCASE = 0x1000000 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x5c) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x58) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x59) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EIPSEC = syscall.Errno(0x52) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x5f) + ELOOP = syscall.Errno(0x3e) + EMEDIUMTYPE = syscall.Errno(0x56) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x53) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOMEDIUM = syscall.Errno(0x55) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5a) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5d) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x5b) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x57) + EOWNERDEAD = syscall.Errno(0x5e) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5f) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disk quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC program not available"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIPSEC", "IPsec processing failure"}, + {83, "ENOATTR", "attribute not found"}, + {84, "EILSEQ", "illegal byte sequence"}, + {85, "ENOMEDIUM", "no medium found"}, + {86, "EMEDIUMTYPE", "wrong medium type"}, + {87, "EOVERFLOW", "value too large to be stored in data type"}, + {88, "ECANCELED", "operation canceled"}, + {89, "EIDRM", "identifier removed"}, + {90, "ENOMSG", "no message of desired type"}, + {91, "ENOTSUP", "not supported"}, + {92, "EBADMSG", "bad message"}, + {93, "ENOTRECOVERABLE", "state not recoverable"}, + {94, "EOWNERDEAD", "previous owner died"}, + {95, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread AST"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_openbsd_riscv64.go b/tests/vendor/golang.org/x/sys/unix/zerrors_openbsd_riscv64.go new file mode 100644 index 000000000..b1b8bb200 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_openbsd_riscv64.go @@ -0,0 +1,1903 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build riscv64 && openbsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BLUETOOTH = 0x20 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_ENCAP = 0x1c + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_KEY = 0x1e + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x24 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SIP = 0x1d + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x200 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRFILT = 0x4004427c + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc010427b + BIOCGETIF = 0x4020426b + BIOCGFILDROP = 0x40044278 + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044273 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x20004276 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDIRFILT = 0x8004427d + BIOCSDLT = 0x8004427a + BIOCSETF = 0x80104267 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x80104277 + BIOCSFILDROP = 0x80044279 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044272 + BIOCSRTIMEOUT = 0x8010426d + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIRECTION_IN = 0x1 + BPF_DIRECTION_OUT = 0x2 + BPF_DIV = 0x30 + BPF_FILDROP_CAPTURE = 0x1 + BPF_FILDROP_DROP = 0x2 + BPF_FILDROP_PASS = 0x0 + BPF_F_DIR_IN = 0x10 + BPF_F_DIR_MASK = 0x30 + BPF_F_DIR_OUT = 0x20 + BPF_F_DIR_SHIFT = 0x4 + BPF_F_FLOWID = 0x8 + BPF_F_PRI_MASK = 0x7 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x200000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RND = 0xc0 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_BOOTTIME = 0x6 + CLOCK_MONOTONIC = 0x3 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x4 + CLOCK_UPTIME = 0x5 + CPUSTATES = 0x6 + CP_IDLE = 0x5 + CP_INTR = 0x4 + CP_NICE = 0x1 + CP_SPIN = 0x3 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0xff + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DIOCADDQUEUE = 0xc110445d + DIOCADDRULE = 0xcd604404 + DIOCADDSTATE = 0xc1084425 + DIOCCHANGERULE = 0xcd60441a + DIOCCLRIFFLAG = 0xc028445a + DIOCCLRSRCNODES = 0x20004455 + DIOCCLRSTATES = 0xc0e04412 + DIOCCLRSTATUS = 0xc0284416 + DIOCGETLIMIT = 0xc0084427 + DIOCGETQSTATS = 0xc1204460 + DIOCGETQUEUE = 0xc110445f + DIOCGETQUEUES = 0xc110445e + DIOCGETRULE = 0xcd604407 + DIOCGETRULES = 0xcd604406 + DIOCGETRULESET = 0xc444443b + DIOCGETRULESETS = 0xc444443a + DIOCGETSRCNODES = 0xc0104454 + DIOCGETSTATE = 0xc1084413 + DIOCGETSTATES = 0xc0104419 + DIOCGETSTATUS = 0xc1e84415 + DIOCGETSYNFLWATS = 0xc0084463 + DIOCGETTIMEOUT = 0xc008441e + DIOCIGETIFACES = 0xc0284457 + DIOCKILLSRCNODES = 0xc080445b + DIOCKILLSTATES = 0xc0e04429 + DIOCNATLOOK = 0xc0504417 + DIOCOSFPADD = 0xc088444f + DIOCOSFPFLUSH = 0x2000444e + DIOCOSFPGET = 0xc0884450 + DIOCRADDADDRS = 0xc4504443 + DIOCRADDTABLES = 0xc450443d + DIOCRCLRADDRS = 0xc4504442 + DIOCRCLRASTATS = 0xc4504448 + DIOCRCLRTABLES = 0xc450443c + DIOCRCLRTSTATS = 0xc4504441 + DIOCRDELADDRS = 0xc4504444 + DIOCRDELTABLES = 0xc450443e + DIOCRGETADDRS = 0xc4504446 + DIOCRGETASTATS = 0xc4504447 + DIOCRGETTABLES = 0xc450443f + DIOCRGETTSTATS = 0xc4504440 + DIOCRINADEFINE = 0xc450444d + DIOCRSETADDRS = 0xc4504445 + DIOCRSETTFLAGS = 0xc450444a + DIOCRTSTADDRS = 0xc4504449 + DIOCSETDEBUG = 0xc0044418 + DIOCSETHOSTID = 0xc0044456 + DIOCSETIFFLAG = 0xc0284459 + DIOCSETLIMIT = 0xc0084428 + DIOCSETREASS = 0xc004445c + DIOCSETSTATUSIF = 0xc0284414 + DIOCSETSYNCOOKIES = 0xc0014462 + DIOCSETSYNFLWATS = 0xc0084461 + DIOCSETTIMEOUT = 0xc008441d + DIOCSTART = 0x20004401 + DIOCSTOP = 0x20004402 + DIOCXBEGIN = 0xc0104451 + DIOCXCOMMIT = 0xc0104452 + DIOCXROLLBACK = 0xc0104453 + DLT_ARCNET = 0x7 + DLT_ATM_RFC1483 = 0xb + DLT_AX25 = 0x3 + DLT_CHAOS = 0x5 + DLT_C_HDLC = 0x68 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0xd + DLT_FDDI = 0xa + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_LOOP = 0xc + DLT_MPLS = 0xdb + DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_SERIAL = 0x32 + DLT_PRONET = 0x4 + DLT_RAW = 0xe + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_USBPCAP = 0xf9 + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMT_TAGOVF = 0x1 + EMUL_ENABLED = 0x1 + EMUL_NATIVE = 0x2 + ENDRUNDISC = 0x9 + ETH64_8021_RSVD_MASK = 0xfffffffffff0 + ETH64_8021_RSVD_PREFIX = 0x180c2000000 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_AOE = 0x88a2 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_EAPOL = 0x888e + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LLDP = 0x88cc + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MACSEC = 0x88e5 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NHRP = 0x2001 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NSH = 0x984f + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PBB = 0x88e7 + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_QINQ = 0x88a8 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOW = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_ALIGN = 0x2 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_DIX_LEN = 0x600 + ETHER_MAX_HARDMTU_LEN = 0xff9b + ETHER_MAX_LEN = 0x5ee + ETHER_MIN_LEN = 0x40 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = -0x3 + EVFILT_DEVICE = -0x8 + EVFILT_EXCEPT = -0x9 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0x9 + EVFILT_TIMER = -0x7 + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EVL_ENCAPLEN = 0x4 + EVL_PRIO_BITS = 0xd + EVL_PRIO_MAX = 0x7 + EVL_VLID_MASK = 0xfff + EVL_VLID_MAX = 0xffe + EVL_VLID_MIN = 0x1 + EVL_VLID_NULL = 0x0 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf800 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xa + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETOWN = 0x5 + F_ISATTY = 0xb + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8e52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x20 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BLUETOOTH = 0xf8 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf7 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DUMMY = 0xf1 + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf3 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MBIM = 0xfa + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFLOW = 0xf9 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf2 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_WIREGUARD = 0xfb + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_HOST = 0x1 + IN_RFC3021_NET = 0xfffffffe + IN_RFC3021_NSHIFT = 0x1f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x103 + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_AUTH_LEVEL = 0x35 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_ESP_NETWORK_LEVEL = 0x37 + IPV6_ESP_TRANS_LEVEL = 0x36 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPCOMP_LEVEL = 0x3c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MINHOPCOUNT = 0x41 + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_OPTIONS = 0x1 + IPV6_PATHMTU = 0x2c + IPV6_PIPEX = 0x3f + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVDSTPORT = 0x40 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTABLE = 0x1021 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_AUTH_LEVEL = 0x14 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_ESP_NETWORK_LEVEL = 0x16 + IP_ESP_TRANS_LEVEL = 0x15 + IP_HDRINCL = 0x2 + IP_IPCOMP_LEVEL = 0x1d + IP_IPDEFTTL = 0x25 + IP_IPSECFLOWINFO = 0x24 + IP_IPSEC_LOCAL_AUTH = 0x1b + IP_IPSEC_LOCAL_CRED = 0x19 + IP_IPSEC_LOCAL_ID = 0x17 + IP_IPSEC_REMOTE_AUTH = 0x1c + IP_IPSEC_REMOTE_CRED = 0x1a + IP_IPSEC_REMOTE_ID = 0x18 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0xfff + IP_MF = 0x2000 + IP_MINTTL = 0x20 + IP_MIN_MEMBERSHIPS = 0xf + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PIPEX = 0x22 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVDSTPORT = 0x21 + IP_RECVIF = 0x1e + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRTABLE = 0x23 + IP_RECVTTL = 0x1f + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RTABLE = 0x1021 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 + IUCLC = 0x1000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LCNT_OVERLOAD_FLUSH = 0x6 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_CONCEAL = 0x8000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FLAGMASK = 0xfff7 + MAP_HASSEMAPHORE = 0x0 + MAP_INHERIT = 0x0 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_INHERIT_ZERO = 0x3 + MAP_NOEXTEND = 0x0 + MAP_NORESERVE = 0x0 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x0 + MAP_SHARED = 0x1 + MAP_STACK = 0x4000 + MAP_TRYFIXED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_DOOMED = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_NOATIME = 0x8000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOPERM = 0x20 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x4000000 + MNT_STALLED = 0x100000 + MNT_SWAPPABLE = 0x200000 + MNT_SYNCHRONOUS = 0x2 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x400ffff + MNT_WAIT = 0x1 + MNT_WANTRDWR = 0x2000000 + MNT_WXALLOWED = 0x800 + MOUNT_AFS = "afs" + MOUNT_CD9660 = "cd9660" + MOUNT_EXT2FS = "ext2fs" + MOUNT_FFS = "ffs" + MOUNT_FUSEFS = "fuse" + MOUNT_MFS = "mfs" + MOUNT_MSDOS = "msdos" + MOUNT_NCPFS = "ncpfs" + MOUNT_NFS = "nfs" + MOUNT_NTFS = "ntfs" + MOUNT_TMPFS = "tmpfs" + MOUNT_UDF = "udf" + MOUNT_UFS = "ffs" + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_MCAST = 0x200 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x4 + MS_SYNC = 0x2 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFNAMES = 0x6 + NET_RT_MAXID = 0x8 + NET_RT_SOURCE = 0x7 + NET_RT_STATS = 0x4 + NET_RT_TABLE = 0x5 + NFDBITS = 0x20 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHANGE = 0x1 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EOF = 0x2 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_OOB = 0x4 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRUNCATE = 0x80 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OLCUC = 0x20 + ONLCR = 0x2 + ONLRET = 0x80 + ONOCR = 0x40 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x10000 + O_CREAT = 0x200 + O_DIRECTORY = 0x20000 + O_DSYNC = 0x80 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x80 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PF_FLUSH = 0x1 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BFD = 0xb + RTAX_BRD = 0x7 + RTAX_DNS = 0xc + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_LABEL = 0xa + RTAX_MAX = 0xf + RTAX_NETMASK = 0x2 + RTAX_SEARCH = 0xe + RTAX_SRC = 0x8 + RTAX_SRCMASK = 0x9 + RTAX_STATIC = 0xd + RTA_AUTHOR = 0x40 + RTA_BFD = 0x800 + RTA_BRD = 0x80 + RTA_DNS = 0x1000 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_LABEL = 0x400 + RTA_NETMASK = 0x4 + RTA_SEARCH = 0x4000 + RTA_SRC = 0x100 + RTA_SRCMASK = 0x200 + RTA_STATIC = 0x2000 + RTF_ANNOUNCE = 0x4000 + RTF_BFD = 0x1000000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CACHED = 0x20000 + RTF_CLONED = 0x10000 + RTF_CLONING = 0x100 + RTF_CONNECTED = 0x800000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FMASK = 0x110fc08 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MPATH = 0x40000 + RTF_MPLS = 0x100000 + RTF_MULTICAST = 0x200 + RTF_PERMANENT_ARP = 0x2000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x2000 + RTF_REJECT = 0x8 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_USETRAILERS = 0x8000 + RTM_80211INFO = 0x15 + RTM_ADD = 0x1 + RTM_BFD = 0x12 + RTM_CHANGE = 0x3 + RTM_CHGADDRATTR = 0x14 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DESYNC = 0x10 + RTM_GET = 0x4 + RTM_IFANNOUNCE = 0xf + RTM_IFINFO = 0xe + RTM_INVALIDATE = 0x11 + RTM_LOSING = 0x5 + RTM_MAXSIZE = 0x800 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_PROPOSAL = 0x13 + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_SOURCE = 0x16 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RT_TABLEID_BITS = 0x8 + RT_TABLEID_MASK = 0xff + RT_TABLEID_MAX = 0xff + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x4 + SEEK_CUR = 0x1 + SEEK_END = 0x2 + SEEK_SET = 0x0 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80286987 + SIOCATMARK = 0x40047307 + SIOCBRDGADD = 0x8060693c + SIOCBRDGADDL = 0x80606949 + SIOCBRDGADDS = 0x80606941 + SIOCBRDGARL = 0x808c694d + SIOCBRDGDADDR = 0x81286947 + SIOCBRDGDEL = 0x8060693d + SIOCBRDGDELS = 0x80606942 + SIOCBRDGFLUSH = 0x80606948 + SIOCBRDGFRL = 0x808c694e + SIOCBRDGGCACHE = 0xc0146941 + SIOCBRDGGFD = 0xc0146952 + SIOCBRDGGHT = 0xc0146951 + SIOCBRDGGIFFLGS = 0xc060693e + SIOCBRDGGMA = 0xc0146953 + SIOCBRDGGPARAM = 0xc0406958 + SIOCBRDGGPRI = 0xc0146950 + SIOCBRDGGRL = 0xc030694f + SIOCBRDGGTO = 0xc0146946 + SIOCBRDGIFS = 0xc0606942 + SIOCBRDGRTS = 0xc0206943 + SIOCBRDGSADDR = 0xc1286944 + SIOCBRDGSCACHE = 0x80146940 + SIOCBRDGSFD = 0x80146952 + SIOCBRDGSHT = 0x80146951 + SIOCBRDGSIFCOST = 0x80606955 + SIOCBRDGSIFFLGS = 0x8060693f + SIOCBRDGSIFPRIO = 0x80606954 + SIOCBRDGSIFPROT = 0x8060694a + SIOCBRDGSMA = 0x80146953 + SIOCBRDGSPRI = 0x80146950 + SIOCBRDGSPROTO = 0x8014695a + SIOCBRDGSTO = 0x80146945 + SIOCBRDGSTXHC = 0x80146959 + SIOCDELLABEL = 0x80206997 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80286989 + SIOCDIFPARENT = 0x802069b4 + SIOCDIFPHYADDR = 0x80206949 + SIOCDPWE3NEIGHBOR = 0x802069de + SIOCDVNETID = 0x802069af + SIOCGETKALIVE = 0xc01869a4 + SIOCGETLABEL = 0x8020699a + SIOCGETMPWCFG = 0xc02069ae + SIOCGETPFLOW = 0xc02069fe + SIOCGETPFSYNC = 0xc02069f8 + SIOCGETSGCNT = 0xc0207534 + SIOCGETVIFCNT = 0xc0287533 + SIOCGETVLAN = 0xc0206990 + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCONF = 0xc0106924 + SIOCGIFDATA = 0xc020691b + SIOCGIFDESCR = 0xc0206981 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGATTR = 0xc028698b + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGLIST = 0xc028698d + SIOCGIFGMEMB = 0xc028698a + SIOCGIFGROUP = 0xc0286988 + SIOCGIFHARDMTU = 0xc02069a5 + SIOCGIFLLPRIO = 0xc02069b6 + SIOCGIFMEDIA = 0xc0406938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc020697e + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPAIR = 0xc02069b1 + SIOCGIFPARENT = 0xc02069b3 + SIOCGIFPRIORITY = 0xc020699c + SIOCGIFRDOMAIN = 0xc02069a0 + SIOCGIFRTLABEL = 0xc0206983 + SIOCGIFRXR = 0x802069aa + SIOCGIFSFFPAGE = 0xc1126939 + SIOCGIFXFLAGS = 0xc020699e + SIOCGLIFPHYADDR = 0xc218694b + SIOCGLIFPHYDF = 0xc02069c2 + SIOCGLIFPHYECN = 0xc02069c8 + SIOCGLIFPHYRTABLE = 0xc02069a2 + SIOCGLIFPHYTTL = 0xc02069a9 + SIOCGPGRP = 0x40047309 + SIOCGPWE3 = 0xc0206998 + SIOCGPWE3CTRLWORD = 0xc02069dc + SIOCGPWE3FAT = 0xc02069dd + SIOCGPWE3NEIGHBOR = 0xc21869de + SIOCGRXHPRIO = 0xc02069db + SIOCGSPPPPARAMS = 0xc0206994 + SIOCGTXHPRIO = 0xc02069c6 + SIOCGUMBINFO = 0xc02069be + SIOCGUMBPARAM = 0xc02069c0 + SIOCGVH = 0xc02069f6 + SIOCGVNETFLOWID = 0xc02069c4 + SIOCGVNETID = 0xc02069a7 + SIOCIFAFATTACH = 0x801169ab + SIOCIFAFDETACH = 0x801169ac + SIOCIFCREATE = 0x8020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSETKALIVE = 0x801869a3 + SIOCSETLABEL = 0x80206999 + SIOCSETMPWCFG = 0x802069ad + SIOCSETPFLOW = 0x802069fd + SIOCSETPFSYNC = 0x802069f7 + SIOCSETVLAN = 0x8020698f + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFDESCR = 0x80206980 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGATTR = 0x8028698c + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020691f + SIOCSIFLLPRIO = 0x802069b5 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x8020697f + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPAIR = 0x802069b0 + SIOCSIFPARENT = 0x802069b2 + SIOCSIFPRIORITY = 0x8020699b + SIOCSIFRDOMAIN = 0x8020699f + SIOCSIFRTLABEL = 0x80206982 + SIOCSIFXFLAGS = 0x8020699d + SIOCSLIFPHYADDR = 0x8218694a + SIOCSLIFPHYDF = 0x802069c1 + SIOCSLIFPHYECN = 0x802069c7 + SIOCSLIFPHYRTABLE = 0x802069a1 + SIOCSLIFPHYTTL = 0x802069a8 + SIOCSPGRP = 0x80047308 + SIOCSPWE3CTRLWORD = 0x802069dc + SIOCSPWE3FAT = 0x802069dd + SIOCSPWE3NEIGHBOR = 0x821869de + SIOCSRXHPRIO = 0x802069db + SIOCSSPPPPARAMS = 0x80206993 + SIOCSTXHPRIO = 0x802069c5 + SIOCSUMBPARAM = 0x802069bf + SIOCSVH = 0xc02069f5 + SIOCSVNETFLOWID = 0x802069c3 + SIOCSVNETID = 0x802069a6 + SOCK_CLOEXEC = 0x8000 + SOCK_DGRAM = 0x2 + SOCK_DNS = 0x1000 + SOCK_NONBLOCK = 0x4000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BINDANY = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DOMAIN = 0x1024 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NETPROC = 0x1020 + SO_OOBINLINE = 0x100 + SO_PEERCRED = 0x1022 + SO_PROTOCOL = 0x1025 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RTABLE = 0x1021 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SPLICE = 0x1023 + SO_TIMESTAMP = 0x800 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_ZEROIZE = 0x2000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCPOPT_EOL = 0x0 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_HDR = 0x1010500 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SACK_PERMIT_HDR = 0x1010402 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_TSTAMP_HDR = 0x101080a + TCPOPT_WINDOW = 0x3 + TCP_INFO = 0x9 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x3 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x4 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOPUSH = 0x10 + TCP_SACKHOLE_LIMIT = 0x80 + TCP_SACK_ENABLE = 0x8 + TCSAFLUSH = 0x2 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCHKVERAUTH = 0x2000741e + TIOCCLRVERAUTH = 0x2000741d + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_PPS = 0x10 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047463 + TIOCGTSTAMP = 0x4010745b + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMODG = 0x4004746a + TIOCMODS = 0x8004746d + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSETVERAUTH = 0x8004741c + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x8004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTOP = 0x2000746f + TIOCSTSTAMP = 0x8008745a + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCUCNTL_CBRK = 0x7a + TIOCUCNTL_SBRK = 0x7b + TOSTOP = 0x400000 + UTIME_NOW = -0x2 + UTIME_OMIT = -0x1 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_ANONMIN = 0x7 + VM_LOADAVG = 0x2 + VM_MALLOC_CONF = 0xc + VM_MAXID = 0xd + VM_MAXSLP = 0xa + VM_METER = 0x1 + VM_NKMEMPAGES = 0x6 + VM_PSSTRINGS = 0x3 + VM_SWAPENCRYPT = 0x5 + VM_USPACE = 0xb + VM_UVMEXP = 0x4 + VM_VNODEMIN = 0x9 + VM_VTEXTMIN = 0x8 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALTSIG = 0x4 + WCONTINUED = 0x8 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WUNTRACED = 0x2 + XCASE = 0x1000000 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x5c) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x58) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x59) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EIPSEC = syscall.Errno(0x52) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x5f) + ELOOP = syscall.Errno(0x3e) + EMEDIUMTYPE = syscall.Errno(0x56) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x53) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOMEDIUM = syscall.Errno(0x55) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5a) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5d) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x5b) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x57) + EOWNERDEAD = syscall.Errno(0x5e) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5f) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disk quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC program not available"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIPSEC", "IPsec processing failure"}, + {83, "ENOATTR", "attribute not found"}, + {84, "EILSEQ", "illegal byte sequence"}, + {85, "ENOMEDIUM", "no medium found"}, + {86, "EMEDIUMTYPE", "wrong medium type"}, + {87, "EOVERFLOW", "value too large to be stored in data type"}, + {88, "ECANCELED", "operation canceled"}, + {89, "EIDRM", "identifier removed"}, + {90, "ENOMSG", "no message of desired type"}, + {91, "ENOTSUP", "not supported"}, + {92, "EBADMSG", "bad message"}, + {93, "ENOTRECOVERABLE", "state not recoverable"}, + {94, "EOWNERDEAD", "previous owner died"}, + {95, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread AST"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go b/tests/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go new file mode 100644 index 000000000..d2ddd3176 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go @@ -0,0 +1,1556 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && solaris + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_802 = 0x12 + AF_APPLETALK = 0x10 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_ECMA = 0x8 + AF_FILE = 0x1 + AF_GOSIP = 0x16 + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1a + AF_INET_OFFLOAD = 0x1e + AF_IPX = 0x17 + AF_KEY = 0x1b + AF_LAT = 0xe + AF_LINK = 0x19 + AF_LOCAL = 0x1 + AF_MAX = 0x20 + AF_NBS = 0x7 + AF_NCA = 0x1c + AF_NIT = 0x11 + AF_NS = 0x6 + AF_OSI = 0x13 + AF_OSINET = 0x15 + AF_PACKET = 0x20 + AF_POLICY = 0x1d + AF_PUP = 0x4 + AF_ROUTE = 0x18 + AF_SNA = 0xb + AF_TRILL = 0x1f + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_X25 = 0x14 + ARPHRD_ARCNET = 0x7 + ARPHRD_ATM = 0x10 + ARPHRD_AX25 = 0x3 + ARPHRD_CHAOS = 0x5 + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_FC = 0x12 + ARPHRD_FRAME = 0xf + ARPHRD_HDLC = 0x11 + ARPHRD_IB = 0x20 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IPATM = 0x13 + ARPHRD_METRICOM = 0x17 + ARPHRD_TUNNEL = 0x1f + B0 = 0x0 + B110 = 0x3 + B115200 = 0x12 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B153600 = 0x13 + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B230400 = 0x14 + B2400 = 0xb + B300 = 0x7 + B307200 = 0x15 + B38400 = 0xf + B460800 = 0x16 + B4800 = 0xc + B50 = 0x1 + B57600 = 0x10 + B600 = 0x8 + B75 = 0x2 + B76800 = 0x11 + B921600 = 0x17 + B9600 = 0xd + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = -0x3fefbd89 + BIOCGDLTLIST32 = -0x3ff7bd89 + BIOCGETIF = 0x4020426b + BIOCGETLIF = 0x4078426b + BIOCGHDRCMPLT = 0x40044274 + BIOCGRTIMEOUT = 0x4010427b + BIOCGRTIMEOUT32 = 0x4008427b + BIOCGSEESENT = 0x40044278 + BIOCGSTATS = 0x4080426f + BIOCGSTATSOLD = 0x4008426f + BIOCIMMEDIATE = -0x7ffbbd90 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = -0x3ffbbd9a + BIOCSDLT = -0x7ffbbd8a + BIOCSETF = -0x7fefbd99 + BIOCSETF32 = -0x7ff7bd99 + BIOCSETIF = -0x7fdfbd94 + BIOCSETLIF = -0x7f87bd94 + BIOCSHDRCMPLT = -0x7ffbbd8b + BIOCSRTIMEOUT = -0x7fefbd86 + BIOCSRTIMEOUT32 = -0x7ff7bd86 + BIOCSSEESENT = -0x7ffbbd87 + BIOCSTCPF = -0x7fefbd8e + BIOCSUDPF = -0x7fefbd8d + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DFLTBUFSIZE = 0x100000 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x1000000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + CBAUD = 0xf + CFLUSH = 0xf + CIBAUD = 0xf0000 + CLOCAL = 0x800 + CLOCK_HIGHRES = 0x4 + CLOCK_LEVEL = 0xa + CLOCK_MONOTONIC = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x5 + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x3 + CLOCK_THREAD_CPUTIME_ID = 0x2 + CLOCK_VIRTUAL = 0x1 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + CSWTCH = 0x1a + DIOC = 0x6400 + DIOCGETB = 0x6402 + DIOCGETC = 0x6401 + DIOCGETP = 0x6408 + DIOCSETE = 0x6403 + DIOCSETP = 0x6409 + DLT_AIRONET_HEADER = 0x78 + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_BACNET_MS_TP = 0xa5 + DLT_CHAOS = 0x5 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_DOCSIS = 0x8f + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FDDI = 0xa + DLT_FRELAY = 0x6b + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_HDLC = 0x10 + DLT_HHDLC = 0x79 + DLT_HIPPI = 0xf + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xa2 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_PPPD = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAW = 0xc + DLT_RAWAF_MASK = 0x2240000 + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EMPTY_SET = 0x0 + EMT_CPCOVF = 0x1 + EQUALITY_CHECK = 0x0 + EXTA = 0xe + EXTB = 0xf + FD_CLOEXEC = 0x1 + FD_NFDBITS = 0x40 + FD_SETSIZE = 0x10000 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FIORDCHK = 0x6603 + FLUSHALL = 0x1 + FLUSHDATA = 0x0 + FLUSHO = 0x2000 + F_ALLOCSP = 0xa + F_ALLOCSP64 = 0xa + F_BADFD = 0x2e + F_BLKSIZE = 0x13 + F_BLOCKS = 0x12 + F_CHKFL = 0x8 + F_COMPAT = 0x8 + F_DUP2FD = 0x9 + F_DUP2FD_CLOEXEC = 0x24 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x25 + F_FLOCK = 0x35 + F_FLOCK64 = 0x35 + F_FLOCKW = 0x36 + F_FLOCKW64 = 0x36 + F_FREESP = 0xb + F_FREESP64 = 0xb + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xe + F_GETLK64 = 0xe + F_GETOWN = 0x17 + F_GETXFL = 0x2d + F_HASREMOTELOCKS = 0x1a + F_ISSTREAM = 0xd + F_MANDDNY = 0x10 + F_MDACC = 0x20 + F_NODNY = 0x0 + F_NPRIV = 0x10 + F_OFD_GETLK = 0x2f + F_OFD_GETLK64 = 0x2f + F_OFD_SETLK = 0x30 + F_OFD_SETLK64 = 0x30 + F_OFD_SETLKW = 0x31 + F_OFD_SETLKW64 = 0x31 + F_PRIV = 0xf + F_QUOTACTL = 0x11 + F_RDACC = 0x1 + F_RDDNY = 0x1 + F_RDLCK = 0x1 + F_REVOKE = 0x19 + F_RMACC = 0x4 + F_RMDNY = 0x4 + F_RWACC = 0x3 + F_RWDNY = 0x3 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLK64_NBMAND = 0x2a + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETLK_NBMAND = 0x2a + F_SETOWN = 0x18 + F_SHARE = 0x28 + F_SHARE_NBMAND = 0x2b + F_UNLCK = 0x3 + F_UNLKSYS = 0x4 + F_UNSHARE = 0x29 + F_WRACC = 0x2 + F_WRDNY = 0x2 + F_WRLCK = 0x2 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMP6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x8000 + IFF_ADDRCONF = 0x80000 + IFF_ALLMULTI = 0x200 + IFF_ANYCAST = 0x400000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x7f203003b5a + IFF_COS_ENABLED = 0x200000000 + IFF_DEBUG = 0x4 + IFF_DEPRECATED = 0x40000 + IFF_DHCPRUNNING = 0x4000 + IFF_DUPLICATE = 0x4000000000 + IFF_FAILED = 0x10000000 + IFF_FIXEDMTU = 0x1000000000 + IFF_INACTIVE = 0x40000000 + IFF_INTELLIGENT = 0x400 + IFF_IPMP = 0x8000000000 + IFF_IPMP_CANTCHANGE = 0x10000000 + IFF_IPMP_INVALID = 0x1ec200080 + IFF_IPV4 = 0x1000000 + IFF_IPV6 = 0x2000000 + IFF_L3PROTECT = 0x40000000000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x800 + IFF_MULTI_BCAST = 0x1000 + IFF_NOACCEPT = 0x4000000 + IFF_NOARP = 0x80 + IFF_NOFAILOVER = 0x8000000 + IFF_NOLINKLOCAL = 0x20000000000 + IFF_NOLOCAL = 0x20000 + IFF_NONUD = 0x200000 + IFF_NORTEXCH = 0x800000 + IFF_NOTRAILERS = 0x20 + IFF_NOXMIT = 0x10000 + IFF_OFFLINE = 0x80000000 + IFF_POINTOPOINT = 0x10 + IFF_PREFERRED = 0x400000000 + IFF_PRIVATE = 0x8000 + IFF_PROMISC = 0x100 + IFF_ROUTER = 0x100000 + IFF_RUNNING = 0x40 + IFF_STANDBY = 0x20000000 + IFF_TEMPORARY = 0x800000000 + IFF_UNNUMBERED = 0x2000 + IFF_UP = 0x1 + IFF_VIRTUAL = 0x2000000000 + IFF_VRRP = 0x10000000000 + IFF_XRESOLV = 0x100000000 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_6TO4 = 0xca + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_CEPT = 0x13 + IFT_DS3 = 0x1e + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_HDH1822 = 0x3 + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IB = 0xc7 + IFT_IPV4 = 0xc8 + IFT_IPV6 = 0xc9 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_AUTOCONF_MASK = 0xffff0000 + IN_AUTOCONF_NET = 0xa9fe0000 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_CLASSE_NET = 0xffffffff + IN_LOOPBACKNET = 0x7f + IN_PRIVATE12_MASK = 0xfff00000 + IN_PRIVATE12_NET = 0xac100000 + IN_PRIVATE16_MASK = 0xffff0000 + IN_PRIVATE16_NET = 0xc0a80000 + IN_PRIVATE8_MASK = 0xff000000 + IN_PRIVATE8_NET = 0xa000000 + IPPROTO_AH = 0x33 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x4 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_HELLO = 0x3f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPV6 = 0x29 + IPPROTO_MAX = 0x100 + IPPROTO_ND = 0x4d + IPPROTO_NONE = 0x3b + IPPROTO_OSPF = 0x59 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_UDP = 0x11 + IPV6_ADD_MEMBERSHIP = 0x9 + IPV6_BOUND_IF = 0x41 + IPV6_CHECKSUM = 0x18 + IPV6_DONTFRAG = 0x21 + IPV6_DROP_MEMBERSHIP = 0xa + IPV6_DSTOPTS = 0xf + IPV6_FLOWINFO_FLOWLABEL = 0xffff0f00 + IPV6_FLOWINFO_TCLASS = 0xf00f + IPV6_HOPLIMIT = 0xc + IPV6_HOPOPTS = 0xe + IPV6_JOIN_GROUP = 0x9 + IPV6_LEAVE_GROUP = 0xa + IPV6_MULTICAST_HOPS = 0x7 + IPV6_MULTICAST_IF = 0x6 + IPV6_MULTICAST_LOOP = 0x8 + IPV6_NEXTHOP = 0xd + IPV6_PAD1_OPT = 0x0 + IPV6_PATHMTU = 0x25 + IPV6_PKTINFO = 0xb + IPV6_PREFER_SRC_CGA = 0x20 + IPV6_PREFER_SRC_CGADEFAULT = 0x10 + IPV6_PREFER_SRC_CGAMASK = 0x30 + IPV6_PREFER_SRC_COA = 0x2 + IPV6_PREFER_SRC_DEFAULT = 0x15 + IPV6_PREFER_SRC_HOME = 0x1 + IPV6_PREFER_SRC_MASK = 0x3f + IPV6_PREFER_SRC_MIPDEFAULT = 0x1 + IPV6_PREFER_SRC_MIPMASK = 0x3 + IPV6_PREFER_SRC_NONCGA = 0x10 + IPV6_PREFER_SRC_PUBLIC = 0x4 + IPV6_PREFER_SRC_TMP = 0x8 + IPV6_PREFER_SRC_TMPDEFAULT = 0x4 + IPV6_PREFER_SRC_TMPMASK = 0xc + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVHOPLIMIT = 0x13 + IPV6_RECVHOPOPTS = 0x14 + IPV6_RECVPATHMTU = 0x24 + IPV6_RECVPKTINFO = 0x12 + IPV6_RECVRTHDR = 0x16 + IPV6_RECVRTHDRDSTOPTS = 0x17 + IPV6_RECVTCLASS = 0x19 + IPV6_RTHDR = 0x10 + IPV6_RTHDRDSTOPTS = 0x11 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SEC_OPT = 0x22 + IPV6_SRC_PREFERENCES = 0x23 + IPV6_TCLASS = 0x26 + IPV6_UNICAST_HOPS = 0x5 + IPV6_UNSPEC_SRC = 0x42 + IPV6_USE_MIN_MTU = 0x20 + IPV6_V6ONLY = 0x27 + IP_ADD_MEMBERSHIP = 0x13 + IP_ADD_SOURCE_MEMBERSHIP = 0x17 + IP_BLOCK_SOURCE = 0x15 + IP_BOUND_IF = 0x41 + IP_BROADCAST = 0x106 + IP_BROADCAST_TTL = 0x43 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DHCPINIT_IF = 0x45 + IP_DONTFRAG = 0x1b + IP_DONTROUTE = 0x105 + IP_DROP_MEMBERSHIP = 0x14 + IP_DROP_SOURCE_MEMBERSHIP = 0x18 + IP_HDRINCL = 0x2 + IP_MAXPACKET = 0xffff + IP_MF = 0x2000 + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x10 + IP_MULTICAST_LOOP = 0x12 + IP_MULTICAST_TTL = 0x11 + IP_NEXTHOP = 0x19 + IP_OPTIONS = 0x1 + IP_PKTINFO = 0x1a + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x9 + IP_RECVOPTS = 0x5 + IP_RECVPKTINFO = 0x1a + IP_RECVRETOPTS = 0x6 + IP_RECVSLLA = 0xa + IP_RECVTOS = 0xc + IP_RECVTTL = 0xb + IP_RETOPTS = 0x8 + IP_REUSEADDR = 0x104 + IP_SEC_OPT = 0x22 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x16 + IP_UNSPEC_SRC = 0x42 + ISIG = 0x1 + ISTRIP = 0x20 + IUCLC = 0x200 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_ACCESS_DEFAULT = 0x6 + MADV_ACCESS_LWP = 0x7 + MADV_ACCESS_MANY = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_NORMAL = 0x0 + MADV_PURGE = 0x9 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MAP_32BIT = 0x80 + MAP_ALIGN = 0x200 + MAP_ANON = 0x100 + MAP_ANONYMOUS = 0x100 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_INITDATA = 0x800 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_TEXT = 0x400 + MAP_TYPE = 0xf + MCAST_BLOCK_SOURCE = 0x2b + MCAST_EXCLUDE = 0x2 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x29 + MCAST_JOIN_SOURCE_GROUP = 0x2d + MCAST_LEAVE_GROUP = 0x2a + MCAST_LEAVE_SOURCE_GROUP = 0x2e + MCAST_UNBLOCK_SOURCE = 0x2c + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MSG_CTRUNC = 0x10 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_DUPCTRL = 0x800 + MSG_EOR = 0x8 + MSG_MAXIOVLEN = 0x10 + MSG_NOSIGNAL = 0x200 + MSG_NOTIFICATION = 0x100 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x20 + MSG_WAITALL = 0x40 + MSG_XPG4_2 = 0x8000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_OLDSYNC = 0x0 + MS_SYNC = 0x4 + M_FLUSH = 0x86 + NAME_MAX = 0xff + NEWDEV = 0x1 + NFDBITS = 0x40 + NL0 = 0x0 + NL1 = 0x100 + NLDLY = 0x100 + NOFLSH = 0x80 + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + OLDDEV = 0x0 + ONBITSMAJOR = 0x7 + ONBITSMINOR = 0x8 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENFAIL = -0x1 + OPOST = 0x1 + O_ACCMODE = 0x600003 + O_APPEND = 0x8 + O_CLOEXEC = 0x800000 + O_CREAT = 0x100 + O_DIRECT = 0x2000000 + O_DIRECTORY = 0x1000000 + O_DSYNC = 0x40 + O_EXCL = 0x400 + O_EXEC = 0x400000 + O_LARGEFILE = 0x2000 + O_NDELAY = 0x4 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x20000 + O_NOLINKS = 0x40000 + O_NONBLOCK = 0x80 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x8000 + O_SEARCH = 0x200000 + O_SIOCGIFCONF = -0x3ff796ec + O_SIOCGLIFCONF = -0x3fef9688 + O_SYNC = 0x10 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + O_XATTR = 0x4000 + PARENB = 0x100 + PAREXT = 0x100000 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_NOFILE = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xfffffffffffffffd + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x9 + RTAX_NETMASK = 0x2 + RTAX_SRC = 0x8 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTA_NUMBITS = 0x9 + RTA_SRC = 0x100 + RTF_BLACKHOLE = 0x1000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INDIRECT = 0x40000 + RTF_KERNEL = 0x80000 + RTF_LLINFO = 0x400 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_MULTIRT = 0x10000 + RTF_PRIVATE = 0x2000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_REJECT = 0x8 + RTF_SETSRC = 0x20000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTF_ZONE = 0x100000 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_CHGADDR = 0xf + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_FREEADDR = 0x10 + RTM_GET = 0x4 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_VERSION = 0x3 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RT_AWARE = 0x1 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_RIGHTS = 0x1010 + SCM_TIMESTAMP = 0x1013 + SCM_UCRED = 0x1012 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIG2STR_MAX = 0x20 + SIOCADDMULTI = -0x7fdf96cf + SIOCADDRT = -0x7fcf8df6 + SIOCATMARK = 0x40047307 + SIOCDARP = -0x7fdb96e0 + SIOCDELMULTI = -0x7fdf96ce + SIOCDELRT = -0x7fcf8df5 + SIOCDXARP = -0x7fff9658 + SIOCGARP = -0x3fdb96e1 + SIOCGDSTINFO = -0x3fff965c + SIOCGENADDR = -0x3fdf96ab + SIOCGENPSTATS = -0x3fdf96c7 + SIOCGETLSGCNT = -0x3fef8deb + SIOCGETNAME = 0x40107334 + SIOCGETPEER = 0x40107335 + SIOCGETPROP = -0x3fff8f44 + SIOCGETSGCNT = -0x3feb8deb + SIOCGETSYNC = -0x3fdf96d3 + SIOCGETVIFCNT = -0x3feb8dec + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = -0x3fdf96f3 + SIOCGIFBRDADDR = -0x3fdf96e9 + SIOCGIFCONF = -0x3ff796a4 + SIOCGIFDSTADDR = -0x3fdf96f1 + SIOCGIFFLAGS = -0x3fdf96ef + SIOCGIFHWADDR = -0x3fdf9647 + SIOCGIFINDEX = -0x3fdf96a6 + SIOCGIFMEM = -0x3fdf96ed + SIOCGIFMETRIC = -0x3fdf96e5 + SIOCGIFMTU = -0x3fdf96ea + SIOCGIFMUXID = -0x3fdf96a8 + SIOCGIFNETMASK = -0x3fdf96e7 + SIOCGIFNUM = 0x40046957 + SIOCGIP6ADDRPOLICY = -0x3fff965e + SIOCGIPMSFILTER = -0x3ffb964c + SIOCGLIFADDR = -0x3f87968f + SIOCGLIFBINDING = -0x3f879666 + SIOCGLIFBRDADDR = -0x3f879685 + SIOCGLIFCONF = -0x3fef965b + SIOCGLIFDADSTATE = -0x3f879642 + SIOCGLIFDSTADDR = -0x3f87968d + SIOCGLIFFLAGS = -0x3f87968b + SIOCGLIFGROUPINFO = -0x3f4b9663 + SIOCGLIFGROUPNAME = -0x3f879664 + SIOCGLIFHWADDR = -0x3f879640 + SIOCGLIFINDEX = -0x3f87967b + SIOCGLIFLNKINFO = -0x3f879674 + SIOCGLIFMETRIC = -0x3f879681 + SIOCGLIFMTU = -0x3f879686 + SIOCGLIFMUXID = -0x3f87967d + SIOCGLIFNETMASK = -0x3f879683 + SIOCGLIFNUM = -0x3ff3967e + SIOCGLIFSRCOF = -0x3fef964f + SIOCGLIFSUBNET = -0x3f879676 + SIOCGLIFTOKEN = -0x3f879678 + SIOCGLIFUSESRC = -0x3f879651 + SIOCGLIFZONE = -0x3f879656 + SIOCGLOWAT = 0x40047303 + SIOCGMSFILTER = -0x3ffb964e + SIOCGPGRP = 0x40047309 + SIOCGSTAMP = -0x3fef9646 + SIOCGXARP = -0x3fff9659 + SIOCIFDETACH = -0x7fdf96c8 + SIOCILB = -0x3ffb9645 + SIOCLIFADDIF = -0x3f879691 + SIOCLIFDELND = -0x7f879673 + SIOCLIFGETND = -0x3f879672 + SIOCLIFREMOVEIF = -0x7f879692 + SIOCLIFSETND = -0x7f879671 + SIOCLOWER = -0x7fdf96d7 + SIOCSARP = -0x7fdb96e2 + SIOCSCTPGOPT = -0x3fef9653 + SIOCSCTPPEELOFF = -0x3ffb9652 + SIOCSCTPSOPT = -0x7fef9654 + SIOCSENABLESDP = -0x3ffb9649 + SIOCSETPROP = -0x7ffb8f43 + SIOCSETSYNC = -0x7fdf96d4 + SIOCSHIWAT = -0x7ffb8d00 + SIOCSIFADDR = -0x7fdf96f4 + SIOCSIFBRDADDR = -0x7fdf96e8 + SIOCSIFDSTADDR = -0x7fdf96f2 + SIOCSIFFLAGS = -0x7fdf96f0 + SIOCSIFINDEX = -0x7fdf96a5 + SIOCSIFMEM = -0x7fdf96ee + SIOCSIFMETRIC = -0x7fdf96e4 + SIOCSIFMTU = -0x7fdf96eb + SIOCSIFMUXID = -0x7fdf96a7 + SIOCSIFNAME = -0x7fdf96b7 + SIOCSIFNETMASK = -0x7fdf96e6 + SIOCSIP6ADDRPOLICY = -0x7fff965d + SIOCSIPMSFILTER = -0x7ffb964b + SIOCSLGETREQ = -0x3fdf96b9 + SIOCSLIFADDR = -0x7f879690 + SIOCSLIFBRDADDR = -0x7f879684 + SIOCSLIFDSTADDR = -0x7f87968e + SIOCSLIFFLAGS = -0x7f87968c + SIOCSLIFGROUPNAME = -0x7f879665 + SIOCSLIFINDEX = -0x7f87967a + SIOCSLIFLNKINFO = -0x7f879675 + SIOCSLIFMETRIC = -0x7f879680 + SIOCSLIFMTU = -0x7f879687 + SIOCSLIFMUXID = -0x7f87967c + SIOCSLIFNAME = -0x3f87967f + SIOCSLIFNETMASK = -0x7f879682 + SIOCSLIFPREFIX = -0x3f879641 + SIOCSLIFSUBNET = -0x7f879677 + SIOCSLIFTOKEN = -0x7f879679 + SIOCSLIFUSESRC = -0x7f879650 + SIOCSLIFZONE = -0x7f879655 + SIOCSLOWAT = -0x7ffb8cfe + SIOCSLSTAT = -0x7fdf96b8 + SIOCSMSFILTER = -0x7ffb964d + SIOCSPGRP = -0x7ffb8cf8 + SIOCSPROMISC = -0x7ffb96d0 + SIOCSQPTR = -0x3ffb9648 + SIOCSSDSTATS = -0x3fdf96d2 + SIOCSSESTATS = -0x3fdf96d1 + SIOCSXARP = -0x7fff965a + SIOCTMYADDR = -0x3ff79670 + SIOCTMYSITE = -0x3ff7966e + SIOCTONLINK = -0x3ff7966f + SIOCUPPER = -0x7fdf96d8 + SIOCX25RCV = -0x3fdf96c4 + SIOCX25TBL = -0x3fdf96c3 + SIOCX25XMT = -0x3fdf96c5 + SIOCXPROTO = 0x20007337 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x1 + SOCK_NDELAY = 0x200000 + SOCK_NONBLOCK = 0x100000 + SOCK_RAW = 0x4 + SOCK_RDM = 0x5 + SOCK_SEQPACKET = 0x6 + SOCK_STREAM = 0x2 + SOCK_TYPE_MASK = 0xffff + SOL_FILTER = 0xfffc + SOL_PACKET = 0xfffd + SOL_ROUTE = 0xfffe + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ALL = 0x3f + SO_ALLZONES = 0x1014 + SO_ANON_MLP = 0x100a + SO_ATTACH_FILTER = 0x40000001 + SO_BAND = 0x4000 + SO_BROADCAST = 0x20 + SO_COPYOPT = 0x80000 + SO_DEBUG = 0x1 + SO_DELIM = 0x8000 + SO_DETACH_FILTER = 0x40000002 + SO_DGRAM_ERRIND = 0x200 + SO_DOMAIN = 0x100c + SO_DONTLINGER = -0x81 + SO_DONTROUTE = 0x10 + SO_ERROPT = 0x40000 + SO_ERROR = 0x1007 + SO_EXCLBIND = 0x1015 + SO_HIWAT = 0x10 + SO_ISNTTY = 0x800 + SO_ISTTY = 0x400 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOWAT = 0x20 + SO_MAC_EXEMPT = 0x100b + SO_MAC_IMPLICIT = 0x1016 + SO_MAXBLK = 0x100000 + SO_MAXPSZ = 0x8 + SO_MINPSZ = 0x4 + SO_MREADOFF = 0x80 + SO_MREADON = 0x40 + SO_NDELOFF = 0x200 + SO_NDELON = 0x100 + SO_NODELIM = 0x10000 + SO_OOBINLINE = 0x100 + SO_PROTOTYPE = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVPSH = 0x100d + SO_RCVTIMEO = 0x1006 + SO_READOPT = 0x1 + SO_RECVUCRED = 0x400 + SO_REUSEADDR = 0x4 + SO_SECATTR = 0x1011 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_STRHOLD = 0x20000 + SO_TAIL = 0x200000 + SO_TIMESTAMP = 0x1013 + SO_TONSTOP = 0x2000 + SO_TOSTOP = 0x1000 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_VRRP = 0x1017 + SO_WROFF = 0x2 + S_ENFMT = 0x400 + S_IAMB = 0x1ff + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFDOOR = 0xd000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFNAM = 0x5000 + S_IFPORT = 0xe000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_INSEM = 0x1 + S_INSHD = 0x2 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TCFLSH = 0x5407 + TCGETA = 0x5401 + TCGETS = 0x540d + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_ABORT_THRESHOLD = 0x11 + TCP_ANONPRIVBIND = 0x20 + TCP_CONGESTION = 0x25 + TCP_CONN_ABORT_THRESHOLD = 0x13 + TCP_CONN_NOTIFY_THRESHOLD = 0x12 + TCP_CORK = 0x18 + TCP_EXCLBIND = 0x21 + TCP_INIT_CWND = 0x15 + TCP_KEEPALIVE = 0x8 + TCP_KEEPALIVE_ABORT_THRESHOLD = 0x17 + TCP_KEEPALIVE_THRESHOLD = 0x16 + TCP_KEEPCNT = 0x23 + TCP_KEEPIDLE = 0x22 + TCP_KEEPINTVL = 0x24 + TCP_LINGER2 = 0x1c + TCP_MAXSEG = 0x2 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCP_NOTIFY_THRESHOLD = 0x10 + TCP_RECVDSTADDR = 0x14 + TCP_RTO_INITIAL = 0x19 + TCP_RTO_MAX = 0x1b + TCP_RTO_MIN = 0x1a + TCSAFLUSH = 0x5410 + TCSBRK = 0x5405 + TCSETA = 0x5402 + TCSETAF = 0x5404 + TCSETAW = 0x5403 + TCSETS = 0x540e + TCSETSF = 0x5410 + TCSETSW = 0x540f + TCXONC = 0x5406 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 + TIOC = 0x5400 + TIOCCBRK = 0x747a + TIOCCDTR = 0x7478 + TIOCCILOOP = 0x746c + TIOCEXCL = 0x740d + TIOCFLUSH = 0x7410 + TIOCGETC = 0x7412 + TIOCGETD = 0x7400 + TIOCGETP = 0x7408 + TIOCGLTC = 0x7474 + TIOCGPGRP = 0x7414 + TIOCGPPS = 0x547d + TIOCGPPSEV = 0x547f + TIOCGSID = 0x7416 + TIOCGSOFTCAR = 0x5469 + TIOCGWINSZ = 0x5468 + TIOCHPCL = 0x7402 + TIOCKBOF = 0x5409 + TIOCKBON = 0x5408 + TIOCLBIC = 0x747e + TIOCLBIS = 0x747f + TIOCLGET = 0x747c + TIOCLSET = 0x747d + TIOCMBIC = 0x741c + TIOCMBIS = 0x741b + TIOCMGET = 0x741d + TIOCMSET = 0x741a + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x7471 + TIOCNXCL = 0x740e + TIOCOUTQ = 0x7473 + TIOCREMOTE = 0x741e + TIOCSBRK = 0x747b + TIOCSCTTY = 0x7484 + TIOCSDTR = 0x7479 + TIOCSETC = 0x7411 + TIOCSETD = 0x7401 + TIOCSETN = 0x740a + TIOCSETP = 0x7409 + TIOCSIGNAL = 0x741f + TIOCSILOOP = 0x746d + TIOCSLTC = 0x7475 + TIOCSPGRP = 0x7415 + TIOCSPPS = 0x547e + TIOCSSOFTCAR = 0x546a + TIOCSTART = 0x746e + TIOCSTI = 0x7417 + TIOCSTOP = 0x746f + TIOCSWINSZ = 0x5467 + TOSTOP = 0x100 + UTIME_NOW = -0x1 + UTIME_OMIT = -0x2 + VCEOF = 0x8 + VCEOL = 0x9 + VDISCARD = 0xd + VDSUSP = 0xb + VEOF = 0x4 + VEOL = 0x5 + VEOL2 = 0x6 + VERASE = 0x2 + VERASE2 = 0x11 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMIN = 0x4 + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTATUS = 0x10 + VSTOP = 0x9 + VSUSP = 0xa + VSWTCH = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WCONTFLG = 0xffff + WCONTINUED = 0x8 + WCOREFLG = 0x80 + WEXITED = 0x1 + WNOHANG = 0x40 + WNOWAIT = 0x80 + WOPTMASK = 0xcf + WRAP = 0x20000 + WSIGMASK = 0x7f + WSTOPFLG = 0x7f + WSTOPPED = 0x4 + WTRAPPED = 0x2 + WUNTRACED = 0x4 + XCASE = 0x4 + XTABS = 0x1800 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x7d) + EADDRNOTAVAIL = syscall.Errno(0x7e) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x7c) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x95) + EBADE = syscall.Errno(0x32) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x51) + EBADMSG = syscall.Errno(0x4d) + EBADR = syscall.Errno(0x33) + EBADRQC = syscall.Errno(0x36) + EBADSLT = syscall.Errno(0x37) + EBFONT = syscall.Errno(0x39) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x2f) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x25) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x82) + ECONNREFUSED = syscall.Errno(0x92) + ECONNRESET = syscall.Errno(0x83) + EDEADLK = syscall.Errno(0x2d) + EDEADLOCK = syscall.Errno(0x38) + EDESTADDRREQ = syscall.Errno(0x60) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x31) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x93) + EHOSTUNREACH = syscall.Errno(0x94) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x58) + EINPROGRESS = syscall.Errno(0x96) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x85) + EISDIR = syscall.Errno(0x15) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELIBACC = syscall.Errno(0x53) + ELIBBAD = syscall.Errno(0x54) + ELIBEXEC = syscall.Errno(0x57) + ELIBMAX = syscall.Errno(0x56) + ELIBSCN = syscall.Errno(0x55) + ELNRNG = syscall.Errno(0x29) + ELOCKUNMAPPED = syscall.Errno(0x48) + ELOOP = syscall.Errno(0x5a) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x61) + EMULTIHOP = syscall.Errno(0x4a) + ENAMETOOLONG = syscall.Errno(0x4e) + ENETDOWN = syscall.Errno(0x7f) + ENETRESET = syscall.Errno(0x81) + ENETUNREACH = syscall.Errno(0x80) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x35) + ENOBUFS = syscall.Errno(0x84) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x2e) + ENOLINK = syscall.Errno(0x43) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x23) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x63) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x59) + ENOTACTIVE = syscall.Errno(0x49) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x86) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x5d) + ENOTRECOVERABLE = syscall.Errno(0x3b) + ENOTSOCK = syscall.Errno(0x5f) + ENOTSUP = syscall.Errno(0x30) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x50) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x7a) + EOVERFLOW = syscall.Errno(0x4f) + EOWNERDEAD = syscall.Errno(0x3a) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x7b) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x78) + EPROTOTYPE = syscall.Errno(0x62) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x52) + EREMOTE = syscall.Errno(0x42) + ERESTART = syscall.Errno(0x5b) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x8f) + ESOCKTNOSUPPORT = syscall.Errno(0x79) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x97) + ESTRPIPE = syscall.Errno(0x5c) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x91) + ETOOMANYREFS = syscall.Errno(0x90) + ETXTBSY = syscall.Errno(0x1a) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x5e) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x34) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCANCEL = syscall.Signal(0x24) + SIGCHLD = syscall.Signal(0x12) + SIGCLD = syscall.Signal(0x12) + SIGCONT = syscall.Signal(0x19) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGFREEZE = syscall.Signal(0x22) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x29) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x16) + SIGIOT = syscall.Signal(0x6) + SIGJVM1 = syscall.Signal(0x27) + SIGJVM2 = syscall.Signal(0x28) + SIGKILL = syscall.Signal(0x9) + SIGLOST = syscall.Signal(0x25) + SIGLWP = syscall.Signal(0x21) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x16) + SIGPROF = syscall.Signal(0x1d) + SIGPWR = syscall.Signal(0x13) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x17) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHAW = syscall.Signal(0x23) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x18) + SIGTTIN = syscall.Signal(0x1a) + SIGTTOU = syscall.Signal(0x1b) + SIGURG = syscall.Signal(0x15) + SIGUSR1 = syscall.Signal(0x10) + SIGUSR2 = syscall.Signal(0x11) + SIGVTALRM = syscall.Signal(0x1c) + SIGWAITING = syscall.Signal(0x20) + SIGWINCH = syscall.Signal(0x14) + SIGXCPU = syscall.Signal(0x1e) + SIGXFSZ = syscall.Signal(0x1f) + SIGXRES = syscall.Signal(0x26) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "not owner"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "I/O error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "arg list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file number"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "not enough space"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "file table overflow"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "deadlock situation detected/avoided"}, + {46, "ENOLCK", "no record locks available"}, + {47, "ECANCELED", "operation canceled"}, + {48, "ENOTSUP", "operation not supported"}, + {49, "EDQUOT", "disc quota exceeded"}, + {50, "EBADE", "bad exchange descriptor"}, + {51, "EBADR", "bad request descriptor"}, + {52, "EXFULL", "message tables full"}, + {53, "ENOANO", "anode table overflow"}, + {54, "EBADRQC", "bad request code"}, + {55, "EBADSLT", "invalid slot"}, + {56, "EDEADLOCK", "file locking deadlock"}, + {57, "EBFONT", "bad font file format"}, + {58, "EOWNERDEAD", "owner of the lock died"}, + {59, "ENOTRECOVERABLE", "lock is not recoverable"}, + {60, "ENOSTR", "not a stream device"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of stream resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "ELOCKUNMAPPED", "locked lock was unmapped "}, + {73, "ENOTACTIVE", "facility is not active"}, + {74, "EMULTIHOP", "multihop attempted"}, + {77, "EBADMSG", "not a data message"}, + {78, "ENAMETOOLONG", "file name too long"}, + {79, "EOVERFLOW", "value too large for defined data type"}, + {80, "ENOTUNIQ", "name not unique on network"}, + {81, "EBADFD", "file descriptor in bad state"}, + {82, "EREMCHG", "remote address changed"}, + {83, "ELIBACC", "can not access a needed shared library"}, + {84, "ELIBBAD", "accessing a corrupted shared library"}, + {85, "ELIBSCN", ".lib section in a.out corrupted"}, + {86, "ELIBMAX", "attempting to link in more shared libraries than system limit"}, + {87, "ELIBEXEC", "can not exec a shared library directly"}, + {88, "EILSEQ", "illegal byte sequence"}, + {89, "ENOSYS", "operation not applicable"}, + {90, "ELOOP", "number of symbolic links encountered during path name traversal exceeds MAXSYMLINKS"}, + {91, "ERESTART", "error 91"}, + {92, "ESTRPIPE", "error 92"}, + {93, "ENOTEMPTY", "directory not empty"}, + {94, "EUSERS", "too many users"}, + {95, "ENOTSOCK", "socket operation on non-socket"}, + {96, "EDESTADDRREQ", "destination address required"}, + {97, "EMSGSIZE", "message too long"}, + {98, "EPROTOTYPE", "protocol wrong type for socket"}, + {99, "ENOPROTOOPT", "option not supported by protocol"}, + {120, "EPROTONOSUPPORT", "protocol not supported"}, + {121, "ESOCKTNOSUPPORT", "socket type not supported"}, + {122, "EOPNOTSUPP", "operation not supported on transport endpoint"}, + {123, "EPFNOSUPPORT", "protocol family not supported"}, + {124, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {125, "EADDRINUSE", "address already in use"}, + {126, "EADDRNOTAVAIL", "cannot assign requested address"}, + {127, "ENETDOWN", "network is down"}, + {128, "ENETUNREACH", "network is unreachable"}, + {129, "ENETRESET", "network dropped connection because of reset"}, + {130, "ECONNABORTED", "software caused connection abort"}, + {131, "ECONNRESET", "connection reset by peer"}, + {132, "ENOBUFS", "no buffer space available"}, + {133, "EISCONN", "transport endpoint is already connected"}, + {134, "ENOTCONN", "transport endpoint is not connected"}, + {143, "ESHUTDOWN", "cannot send after socket shutdown"}, + {144, "ETOOMANYREFS", "too many references: cannot splice"}, + {145, "ETIMEDOUT", "connection timed out"}, + {146, "ECONNREFUSED", "connection refused"}, + {147, "EHOSTDOWN", "host is down"}, + {148, "EHOSTUNREACH", "no route to host"}, + {149, "EALREADY", "operation already in progress"}, + {150, "EINPROGRESS", "operation now in progress"}, + {151, "ESTALE", "stale NFS file handle"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal Instruction"}, + {5, "SIGTRAP", "trace/Breakpoint Trap"}, + {6, "SIGABRT", "abort"}, + {7, "SIGEMT", "emulation Trap"}, + {8, "SIGFPE", "arithmetic Exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus Error"}, + {11, "SIGSEGV", "segmentation Fault"}, + {12, "SIGSYS", "bad System Call"}, + {13, "SIGPIPE", "broken Pipe"}, + {14, "SIGALRM", "alarm Clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGUSR1", "user Signal 1"}, + {17, "SIGUSR2", "user Signal 2"}, + {18, "SIGCHLD", "child Status Changed"}, + {19, "SIGPWR", "power-Fail/Restart"}, + {20, "SIGWINCH", "window Size Change"}, + {21, "SIGURG", "urgent Socket Condition"}, + {22, "SIGIO", "pollable Event"}, + {23, "SIGSTOP", "stopped (signal)"}, + {24, "SIGTSTP", "stopped (user)"}, + {25, "SIGCONT", "continued"}, + {26, "SIGTTIN", "stopped (tty input)"}, + {27, "SIGTTOU", "stopped (tty output)"}, + {28, "SIGVTALRM", "virtual Timer Expired"}, + {29, "SIGPROF", "profiling Timer Expired"}, + {30, "SIGXCPU", "cpu Limit Exceeded"}, + {31, "SIGXFSZ", "file Size Limit Exceeded"}, + {32, "SIGWAITING", "no runnable lwp"}, + {33, "SIGLWP", "inter-lwp signal"}, + {34, "SIGFREEZE", "checkpoint Freeze"}, + {35, "SIGTHAW", "checkpoint Thaw"}, + {36, "SIGCANCEL", "thread Cancellation"}, + {37, "SIGLOST", "resource Lost"}, + {38, "SIGXRES", "resource Control Exceeded"}, + {39, "SIGJVM1", "reserved for JVM 1"}, + {40, "SIGJVM2", "reserved for JVM 2"}, + {41, "SIGINFO", "information Request"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go b/tests/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go new file mode 100644 index 000000000..1ec2b1407 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go @@ -0,0 +1,990 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos && s390x + +// Hand edited based on zerrors_linux_s390x.go +// TODO: auto-generate. + +package unix + +const ( + BRKINT = 0x0001 + CLOCAL = 0x1 + CLOCK_MONOTONIC = 0x1 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLONE_NEWIPC = 0x08000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x00020000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUTS = 0x04000000 + CLONE_PARENT = 0x00008000 + CS8 = 0x0030 + CSIZE = 0x0030 + ECHO = 0x00000008 + ECHONL = 0x00000001 + EFD_SEMAPHORE = 0x00002000 + EFD_CLOEXEC = 0x00001000 + EFD_NONBLOCK = 0x00000004 + EPOLL_CLOEXEC = 0x00001000 + EPOLL_CTL_ADD = 0 + EPOLL_CTL_MOD = 1 + EPOLL_CTL_DEL = 2 + EPOLLRDNORM = 0x0001 + EPOLLRDBAND = 0x0002 + EPOLLIN = 0x0003 + EPOLLOUT = 0x0004 + EPOLLWRBAND = 0x0008 + EPOLLPRI = 0x0010 + EPOLLERR = 0x0020 + EPOLLHUP = 0x0040 + EPOLLEXCLUSIVE = 0x20000000 + EPOLLONESHOT = 0x40000000 + FD_CLOEXEC = 0x01 + FD_CLOFORK = 0x02 + FD_SETSIZE = 0x800 + FNDELAY = 0x04 + F_CLOSFD = 9 + F_CONTROL_CVT = 13 + F_DUPFD = 0 + F_DUPFD2 = 8 + F_GETFD = 1 + F_GETFL = 259 + F_GETLK = 5 + F_GETOWN = 10 + F_OK = 0x0 + F_RDLCK = 1 + F_SETFD = 2 + F_SETFL = 4 + F_SETLK = 6 + F_SETLKW = 7 + F_SETOWN = 11 + F_SETTAG = 12 + F_UNLCK = 3 + F_WRLCK = 2 + FSTYPE_ZFS = 0xe9 //"Z" + FSTYPE_HFS = 0xc8 //"H" + FSTYPE_NFS = 0xd5 //"N" + FSTYPE_TFS = 0xe3 //"T" + FSTYPE_AUTOMOUNT = 0xc1 //"A" + GRND_NONBLOCK = 1 + GRND_RANDOM = 2 + HUPCL = 0x0100 // Hang up on last close + IN_CLOEXEC = 0x00001000 + IN_NONBLOCK = 0x00000004 + IN_ACCESS = 0x00000001 + IN_MODIFY = 0x00000002 + IN_ATTRIB = 0x00000004 + IN_CLOSE_WRITE = 0x00000008 + IN_CLOSE_NOWRITE = 0x00000010 + IN_OPEN = 0x00000020 + IN_MOVED_FROM = 0x00000040 + IN_MOVED_TO = 0x00000080 + IN_CREATE = 0x00000100 + IN_DELETE = 0x00000200 + IN_DELETE_SELF = 0x00000400 + IN_MOVE_SELF = 0x00000800 + IN_UNMOUNT = 0x00002000 + IN_Q_OVERFLOW = 0x00004000 + IN_IGNORED = 0x00008000 + IN_CLOSE = (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) + IN_MOVE = (IN_MOVED_FROM | IN_MOVED_TO) + IN_ALL_EVENTS = (IN_ACCESS | IN_MODIFY | IN_ATTRIB | + IN_CLOSE | IN_OPEN | IN_MOVE | + IN_CREATE | IN_DELETE | IN_DELETE_SELF | + IN_MOVE_SELF) + IN_ONLYDIR = 0x01000000 + IN_DONT_FOLLOW = 0x02000000 + IN_EXCL_UNLINK = 0x04000000 + IN_MASK_CREATE = 0x10000000 + IN_MASK_ADD = 0x20000000 + IN_ISDIR = 0x40000000 + IN_ONESHOT = 0x80000000 + IP6F_MORE_FRAG = 0x0001 + IP6F_OFF_MASK = 0xfff8 + IP6F_RESERVED_MASK = 0x0006 + IP6OPT_JUMBO = 0xc2 + IP6OPT_JUMBO_LEN = 6 + IP6OPT_MUTABLE = 0x20 + IP6OPT_NSAP_ADDR = 0xc3 + IP6OPT_PAD1 = 0x00 + IP6OPT_PADN = 0x01 + IP6OPT_ROUTER_ALERT = 0x05 + IP6OPT_TUNNEL_LIMIT = 0x04 + IP6OPT_TYPE_DISCARD = 0x40 + IP6OPT_TYPE_FORCEICMP = 0x80 + IP6OPT_TYPE_ICMP = 0xc0 + IP6OPT_TYPE_SKIP = 0x00 + IP6_ALERT_AN = 0x0002 + IP6_ALERT_MLD = 0x0000 + IP6_ALERT_RSVP = 0x0001 + IPPORT_RESERVED = 1024 + IPPORT_USERRESERVED = 5000 + IPPROTO_AH = 51 + SOL_AH = 51 + IPPROTO_DSTOPTS = 60 + SOL_DSTOPTS = 60 + IPPROTO_EGP = 8 + SOL_EGP = 8 + IPPROTO_ESP = 50 + SOL_ESP = 50 + IPPROTO_FRAGMENT = 44 + SOL_FRAGMENT = 44 + IPPROTO_GGP = 2 + SOL_GGP = 2 + IPPROTO_HOPOPTS = 0 + SOL_HOPOPTS = 0 + IPPROTO_ICMP = 1 + SOL_ICMP = 1 + IPPROTO_ICMPV6 = 58 + SOL_ICMPV6 = 58 + IPPROTO_IDP = 22 + SOL_IDP = 22 + IPPROTO_IP = 0 + SOL_IP = 0 + IPPROTO_IPV6 = 41 + SOL_IPV6 = 41 + IPPROTO_MAX = 256 + SOL_MAX = 256 + IPPROTO_NONE = 59 + SOL_NONE = 59 + IPPROTO_PUP = 12 + SOL_PUP = 12 + IPPROTO_RAW = 255 + SOL_RAW = 255 + IPPROTO_ROUTING = 43 + SOL_ROUTING = 43 + IPPROTO_TCP = 6 + SOL_TCP = 6 + IPPROTO_UDP = 17 + SOL_UDP = 17 + IPV6_ADDR_PREFERENCES = 32 + IPV6_CHECKSUM = 19 + IPV6_DONTFRAG = 29 + IPV6_DSTOPTS = 23 + IPV6_HOPLIMIT = 11 + IPV6_HOPOPTS = 22 + IPV6_JOIN_GROUP = 5 + IPV6_LEAVE_GROUP = 6 + IPV6_MULTICAST_HOPS = 9 + IPV6_MULTICAST_IF = 7 + IPV6_MULTICAST_LOOP = 4 + IPV6_NEXTHOP = 20 + IPV6_PATHMTU = 12 + IPV6_PKTINFO = 13 + IPV6_PREFER_SRC_CGA = 0x10 + IPV6_PREFER_SRC_COA = 0x02 + IPV6_PREFER_SRC_HOME = 0x01 + IPV6_PREFER_SRC_NONCGA = 0x20 + IPV6_PREFER_SRC_PUBLIC = 0x08 + IPV6_PREFER_SRC_TMP = 0x04 + IPV6_RECVDSTOPTS = 28 + IPV6_RECVHOPLIMIT = 14 + IPV6_RECVHOPOPTS = 26 + IPV6_RECVPATHMTU = 16 + IPV6_RECVPKTINFO = 15 + IPV6_RECVRTHDR = 25 + IPV6_RECVTCLASS = 31 + IPV6_RTHDR = 21 + IPV6_RTHDRDSTOPTS = 24 + IPV6_RTHDR_TYPE_0 = 0 + IPV6_TCLASS = 30 + IPV6_UNICAST_HOPS = 3 + IPV6_USE_MIN_MTU = 18 + IPV6_V6ONLY = 10 + IP_ADD_MEMBERSHIP = 5 + IP_ADD_SOURCE_MEMBERSHIP = 12 + IP_BLOCK_SOURCE = 10 + IP_DEFAULT_MULTICAST_LOOP = 1 + IP_DEFAULT_MULTICAST_TTL = 1 + IP_DROP_MEMBERSHIP = 6 + IP_DROP_SOURCE_MEMBERSHIP = 13 + IP_MAX_MEMBERSHIPS = 20 + IP_MULTICAST_IF = 7 + IP_MULTICAST_LOOP = 4 + IP_MULTICAST_TTL = 3 + IP_OPTIONS = 1 + IP_PKTINFO = 101 + IP_RECVPKTINFO = 102 + IP_TOS = 2 + IP_TTL = 14 + IP_UNBLOCK_SOURCE = 11 + ICMP6_FILTER = 1 + MCAST_INCLUDE = 0 + MCAST_EXCLUDE = 1 + MCAST_JOIN_GROUP = 40 + MCAST_LEAVE_GROUP = 41 + MCAST_JOIN_SOURCE_GROUP = 42 + MCAST_LEAVE_SOURCE_GROUP = 43 + MCAST_BLOCK_SOURCE = 44 + MCAST_UNBLOCK_SOURCE = 46 + ICANON = 0x0010 + ICRNL = 0x0002 + IEXTEN = 0x0020 + IGNBRK = 0x0004 + IGNCR = 0x0008 + INLCR = 0x0020 + ISIG = 0x0040 + ISTRIP = 0x0080 + IXON = 0x0200 + IXOFF = 0x0100 + LOCK_SH = 0x1 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_UN = 0x8 + POLLIN = 0x0003 + POLLOUT = 0x0004 + POLLPRI = 0x0010 + POLLERR = 0x0020 + POLLHUP = 0x0040 + POLLNVAL = 0x0080 + PROT_READ = 0x1 // mmap - page can be read + PROT_WRITE = 0x2 // page can be written + PROT_NONE = 0x4 // can't be accessed + PROT_EXEC = 0x8 // can be executed + MAP_PRIVATE = 0x1 // changes are private + MAP_SHARED = 0x2 // changes are shared + MAP_FIXED = 0x4 // place exactly + __MAP_MEGA = 0x8 + __MAP_64 = 0x10 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MS_SYNC = 0x1 // msync - synchronous writes + MS_ASYNC = 0x2 // asynchronous writes + MS_INVALIDATE = 0x4 // invalidate mappings + MS_BIND = 0x00001000 + MS_MOVE = 0x00002000 + MS_NOSUID = 0x00000002 + MS_PRIVATE = 0x00040000 + MS_REC = 0x00004000 + MS_REMOUNT = 0x00008000 + MS_RDONLY = 0x00000001 + MS_UNBINDABLE = 0x00020000 + MNT_DETACH = 0x00000004 + ZOSDSFS_SUPER_MAGIC = 0x44534653 // zOS DSFS + NFS_SUPER_MAGIC = 0x6969 // NFS + NSFS_MAGIC = 0x6e736673 // PROCNS + PROC_SUPER_MAGIC = 0x9fa0 // proc FS + ZOSTFS_SUPER_MAGIC = 0x544653 // zOS TFS + ZOSUFS_SUPER_MAGIC = 0x554653 // zOS UFS + ZOSZFS_SUPER_MAGIC = 0x5A4653 // zOS ZFS + MTM_RDONLY = 0x80000000 + MTM_RDWR = 0x40000000 + MTM_UMOUNT = 0x10000000 + MTM_IMMED = 0x08000000 + MTM_FORCE = 0x04000000 + MTM_DRAIN = 0x02000000 + MTM_RESET = 0x01000000 + MTM_SAMEMODE = 0x00100000 + MTM_UNQSEFORCE = 0x00040000 + MTM_NOSUID = 0x00000400 + MTM_SYNCHONLY = 0x00000200 + MTM_REMOUNT = 0x00000100 + MTM_NOSECURITY = 0x00000080 + NFDBITS = 0x20 + ONLRET = 0x0020 // NL performs CR function + O_ACCMODE = 0x03 + O_APPEND = 0x08 + O_ASYNCSIG = 0x0200 + O_CREAT = 0x80 + O_DIRECT = 0x00002000 + O_NOFOLLOW = 0x00004000 + O_DIRECTORY = 0x00008000 + O_PATH = 0x00080000 + O_CLOEXEC = 0x00001000 + O_EXCL = 0x40 + O_GETFL = 0x0F + O_LARGEFILE = 0x0400 + O_NDELAY = 0x4 + O_NONBLOCK = 0x04 + O_RDONLY = 0x02 + O_RDWR = 0x03 + O_SYNC = 0x0100 + O_TRUNC = 0x10 + O_WRONLY = 0x01 + O_NOCTTY = 0x20 + OPOST = 0x0001 + ONLCR = 0x0004 + PARENB = 0x0200 + PARMRK = 0x0400 + QUERYCVT = 3 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 // RUSAGE_THREAD unsupported on z/OS + SEEK_CUR = 1 + SEEK_END = 2 + SEEK_SET = 0 + SETAUTOCVTALL = 5 + SETAUTOCVTON = 2 + SETCVTALL = 4 + SETCVTOFF = 0 + SETCVTON = 1 + AF_APPLETALK = 16 + AF_CCITT = 10 + AF_CHAOS = 5 + AF_DATAKIT = 9 + AF_DLI = 13 + AF_ECMA = 8 + AF_HYLINK = 15 + AF_IMPLINK = 3 + AF_INET = 2 + AF_INET6 = 19 + AF_INTF = 20 + AF_IUCV = 17 + AF_LAT = 14 + AF_LINK = 18 + AF_LOCAL = AF_UNIX // AF_LOCAL is an alias for AF_UNIX + AF_MAX = 30 + AF_NBS = 7 + AF_NDD = 23 + AF_NETWARE = 22 + AF_NS = 6 + AF_PUP = 4 + AF_RIF = 21 + AF_ROUTE = 20 + AF_SNA = 11 + AF_UNIX = 1 + AF_UNSPEC = 0 + IBMTCP_IMAGE = 1 + MSG_ACK_EXPECTED = 0x10 + MSG_ACK_GEN = 0x40 + MSG_ACK_TIMEOUT = 0x20 + MSG_CONNTERM = 0x80 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_EOF = 0x8000 + MSG_EOR = 0x8 + MSG_MAXIOVLEN = 16 + MSG_NONBLOCK = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + PRIO_PROCESS = 1 + PRIO_PGRP = 2 + PRIO_USER = 3 + RLIMIT_CPU = 0 + RLIMIT_FSIZE = 1 + RLIMIT_DATA = 2 + RLIMIT_STACK = 3 + RLIMIT_CORE = 4 + RLIMIT_AS = 5 + RLIMIT_NOFILE = 6 + RLIMIT_MEMLIMIT = 7 + RLIMIT_MEMLOCK = 0x8 + RLIM_INFINITY = 2147483647 + SCHED_FIFO = 0x2 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x01 + SF_CLOSE = 0x00000002 + SF_REUSE = 0x00000001 + SHM_RND = 0x2 + SHM_RDONLY = 0x1 + SHMLBA = 0x1000 + IPC_STAT = 0x3 + IPC_SET = 0x2 + IPC_RMID = 0x1 + IPC_PRIVATE = 0x0 + IPC_CREAT = 0x1000000 + __IPC_MEGA = 0x4000000 + __IPC_SHAREAS = 0x20000000 + __IPC_BELOWBAR = 0x10000000 + IPC_EXCL = 0x2000000 + __IPC_GIGA = 0x8000000 + SHUT_RD = 0 + SHUT_RDWR = 2 + SHUT_WR = 1 + SOCK_CLOEXEC = 0x00001000 + SOCK_CONN_DGRAM = 6 + SOCK_DGRAM = 2 + SOCK_NONBLOCK = 0x800 + SOCK_RAW = 3 + SOCK_RDM = 4 + SOCK_SEQPACKET = 5 + SOCK_STREAM = 1 + SOL_SOCKET = 0xffff + SOMAXCONN = 10 + SO_ACCEPTCONN = 0x0002 + SO_ACCEPTECONNABORTED = 0x0006 + SO_ACKNOW = 0x7700 + SO_BROADCAST = 0x0020 + SO_BULKMODE = 0x8000 + SO_CKSUMRECV = 0x0800 + SO_CLOSE = 0x01 + SO_CLUSTERCONNTYPE = 0x00004001 + SO_CLUSTERCONNTYPE_INTERNAL = 8 + SO_CLUSTERCONNTYPE_NOCONN = 0 + SO_CLUSTERCONNTYPE_NONE = 1 + SO_CLUSTERCONNTYPE_SAME_CLUSTER = 2 + SO_CLUSTERCONNTYPE_SAME_IMAGE = 4 + SO_DEBUG = 0x0001 + SO_DONTROUTE = 0x0010 + SO_ERROR = 0x1007 + SO_IGNOREINCOMINGPUSH = 0x1 + SO_IGNORESOURCEVIPA = 0x0002 + SO_KEEPALIVE = 0x0008 + SO_LINGER = 0x0080 + SO_NONBLOCKLOCAL = 0x8001 + SO_NOREUSEADDR = 0x1000 + SO_OOBINLINE = 0x0100 + SO_OPTACK = 0x8004 + SO_OPTMSS = 0x8003 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x0004 + SO_REUSEPORT = 0x0200 + SO_SECINFO = 0x00004002 + SO_SET = 0x0200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TYPE = 0x1008 + SO_UNSET = 0x0400 + SO_USELOOPBACK = 0x0040 + SO_USE_IFBUFS = 0x0400 + S_ISUID = 0x0800 + S_ISGID = 0x0400 + S_ISVTX = 0x0200 + S_IRUSR = 0x0100 + S_IWUSR = 0x0080 + S_IXUSR = 0x0040 + S_IRWXU = 0x01C0 + S_IRGRP = 0x0020 + S_IWGRP = 0x0010 + S_IXGRP = 0x0008 + S_IRWXG = 0x0038 + S_IROTH = 0x0004 + S_IWOTH = 0x0002 + S_IXOTH = 0x0001 + S_IRWXO = 0x0007 + S_IREAD = S_IRUSR + S_IWRITE = S_IWUSR + S_IEXEC = S_IXUSR + S_IFDIR = 0x01000000 + S_IFCHR = 0x02000000 + S_IFREG = 0x03000000 + S_IFFIFO = 0x04000000 + S_IFIFO = 0x04000000 + S_IFLNK = 0x05000000 + S_IFBLK = 0x06000000 + S_IFSOCK = 0x07000000 + S_IFVMEXTL = 0xFE000000 + S_IFVMEXTL_EXEC = 0x00010000 + S_IFVMEXTL_DATA = 0x00020000 + S_IFVMEXTL_MEL = 0x00030000 + S_IFEXTL = 0x00000001 + S_IFPROGCTL = 0x00000002 + S_IFAPFCTL = 0x00000004 + S_IFNOSHARE = 0x00000008 + S_IFSHARELIB = 0x00000010 + S_IFMT = 0xFF000000 + S_IFMST = 0x00FF0000 + TCP_KEEPALIVE = 0x8 + TCP_NODELAY = 0x1 + TIOCGWINSZ = 0x4008a368 + TIOCSWINSZ = 0x8008a367 + TIOCSBRK = 0x2000a77b + TIOCCBRK = 0x2000a77a + TIOCSTI = 0x8001a772 + TIOCGPGRP = 0x4004a777 // _IOR(167, 119, int) + TCSANOW = 0 + TCSETS = 0 // equivalent to TCSANOW for tcsetattr + TCSADRAIN = 1 + TCSETSW = 1 // equivalent to TCSADRAIN for tcsetattr + TCSAFLUSH = 2 + TCSETSF = 2 // equivalent to TCSAFLUSH for tcsetattr + TCGETS = 3 // not defined in ioctl.h -- zos golang only + TCIFLUSH = 0 + TCOFLUSH = 1 + TCIOFLUSH = 2 + TCOOFF = 0 + TCOON = 1 + TCIOFF = 2 + TCION = 3 + TIOCSPGRP = 0x8004a776 + TIOCNOTTY = 0x2000a771 + TIOCEXCL = 0x2000a70d + TIOCNXCL = 0x2000a70e + TIOCGETD = 0x4004a700 + TIOCSETD = 0x8004a701 + TIOCPKT = 0x8004a770 + TIOCSTOP = 0x2000a76f + TIOCSTART = 0x2000a76e + TIOCUCNTL = 0x8004a766 + TIOCREMOTE = 0x8004a769 + TIOCMGET = 0x4004a76a + TIOCMSET = 0x8004a76d + TIOCMBIC = 0x8004a76b + TIOCMBIS = 0x8004a76c + VINTR = 0 + VQUIT = 1 + VERASE = 2 + VKILL = 3 + VEOF = 4 + VEOL = 5 + VMIN = 6 + VSTART = 7 + VSTOP = 8 + VSUSP = 9 + VTIME = 10 + WCONTINUED = 0x4 + WEXITED = 0x8 + WNOHANG = 0x1 + WNOWAIT = 0x20 + WSTOPPED = 0x10 + WUNTRACED = 0x2 + _BPX_SWAP = 1 + _BPX_NONSWAP = 2 + MCL_CURRENT = 1 // for Linux compatibility -- no zos semantics + MCL_FUTURE = 2 // for Linux compatibility -- no zos semantics + MCL_ONFAULT = 3 // for Linux compatibility -- no zos semantics + MADV_NORMAL = 0 // for Linux compatibility -- no zos semantics + MADV_RANDOM = 1 // for Linux compatibility -- no zos semantics + MADV_SEQUENTIAL = 2 // for Linux compatibility -- no zos semantics + MADV_WILLNEED = 3 // for Linux compatibility -- no zos semantics + MADV_REMOVE = 4 // for Linux compatibility -- no zos semantics + MADV_DONTFORK = 5 // for Linux compatibility -- no zos semantics + MADV_DOFORK = 6 // for Linux compatibility -- no zos semantics + MADV_HWPOISON = 7 // for Linux compatibility -- no zos semantics + MADV_MERGEABLE = 8 // for Linux compatibility -- no zos semantics + MADV_UNMERGEABLE = 9 // for Linux compatibility -- no zos semantics + MADV_SOFT_OFFLINE = 10 // for Linux compatibility -- no zos semantics + MADV_HUGEPAGE = 11 // for Linux compatibility -- no zos semantics + MADV_NOHUGEPAGE = 12 // for Linux compatibility -- no zos semantics + MADV_DONTDUMP = 13 // for Linux compatibility -- no zos semantics + MADV_DODUMP = 14 // for Linux compatibility -- no zos semantics + MADV_FREE = 15 // for Linux compatibility -- no zos semantics + MADV_WIPEONFORK = 16 // for Linux compatibility -- no zos semantics + MADV_KEEPONFORK = 17 // for Linux compatibility -- no zos semantics + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + P_PID = 0 + P_PGID = 1 + P_ALL = 2 + PR_SET_NAME = 15 + PR_GET_NAME = 16 + PR_SET_NO_NEW_PRIVS = 38 + PR_GET_NO_NEW_PRIVS = 39 + PR_SET_DUMPABLE = 4 + PR_GET_DUMPABLE = 3 + PR_SET_PDEATHSIG = 1 + PR_GET_PDEATHSIG = 2 + PR_SET_CHILD_SUBREAPER = 36 + PR_GET_CHILD_SUBREAPER = 37 + AT_FDCWD = -100 + AT_EACCESS = 0x200 + AT_EMPTY_PATH = 0x1000 + AT_REMOVEDIR = 0x200 + RENAME_NOREPLACE = 1 << 0 + ST_RDONLY = 1 + ST_NOSUID = 2 +) + +const ( + EDOM = Errno(1) + ERANGE = Errno(2) + EACCES = Errno(111) + EAGAIN = Errno(112) + EBADF = Errno(113) + EBUSY = Errno(114) + ECHILD = Errno(115) + EDEADLK = Errno(116) + EEXIST = Errno(117) + EFAULT = Errno(118) + EFBIG = Errno(119) + EINTR = Errno(120) + EINVAL = Errno(121) + EIO = Errno(122) + EISDIR = Errno(123) + EMFILE = Errno(124) + EMLINK = Errno(125) + ENAMETOOLONG = Errno(126) + ENFILE = Errno(127) + ENOATTR = Errno(265) + ENODEV = Errno(128) + ENOENT = Errno(129) + ENOEXEC = Errno(130) + ENOLCK = Errno(131) + ENOMEM = Errno(132) + ENOSPC = Errno(133) + ENOSYS = Errno(134) + ENOTDIR = Errno(135) + ENOTEMPTY = Errno(136) + ENOTTY = Errno(137) + ENXIO = Errno(138) + EPERM = Errno(139) + EPIPE = Errno(140) + EROFS = Errno(141) + ESPIPE = Errno(142) + ESRCH = Errno(143) + EXDEV = Errno(144) + E2BIG = Errno(145) + ELOOP = Errno(146) + EILSEQ = Errno(147) + ENODATA = Errno(148) + EOVERFLOW = Errno(149) + EMVSNOTUP = Errno(150) + ECMSSTORAGE = Errno(151) + EMVSDYNALC = Errno(151) + EMVSCVAF = Errno(152) + EMVSCATLG = Errno(153) + ECMSINITIAL = Errno(156) + EMVSINITIAL = Errno(156) + ECMSERR = Errno(157) + EMVSERR = Errno(157) + EMVSPARM = Errno(158) + ECMSPFSFILE = Errno(159) + EMVSPFSFILE = Errno(159) + EMVSBADCHAR = Errno(160) + ECMSPFSPERM = Errno(162) + EMVSPFSPERM = Errno(162) + EMVSSAFEXTRERR = Errno(163) + EMVSSAF2ERR = Errno(164) + EMVSTODNOTSET = Errno(165) + EMVSPATHOPTS = Errno(166) + EMVSNORTL = Errno(167) + EMVSEXPIRE = Errno(168) + EMVSPASSWORD = Errno(169) + EMVSWLMERROR = Errno(170) + EMVSCPLERROR = Errno(171) + EMVSARMERROR = Errno(172) + ELENOFORK = Errno(200) + ELEMSGERR = Errno(201) + EFPMASKINV = Errno(202) + EFPMODEINV = Errno(203) + EBUFLEN = Errno(227) + EEXTLINK = Errno(228) + ENODD = Errno(229) + ECMSESMERR = Errno(230) + ECPERR = Errno(231) + ELEMULTITHREAD = Errno(232) + ELEFENCE = Errno(244) + EBADDATA = Errno(245) + EUNKNOWN = Errno(246) + ENOTSUP = Errno(247) + EBADNAME = Errno(248) + ENOTSAFE = Errno(249) + ELEMULTITHREADFORK = Errno(257) + ECUNNOENV = Errno(258) + ECUNNOCONV = Errno(259) + ECUNNOTALIGNED = Errno(260) + ECUNERR = Errno(262) + EIBMBADCALL = Errno(1000) + EIBMBADPARM = Errno(1001) + EIBMSOCKOUTOFRANGE = Errno(1002) + EIBMSOCKINUSE = Errno(1003) + EIBMIUCVERR = Errno(1004) + EOFFLOADboxERROR = Errno(1005) + EOFFLOADboxRESTART = Errno(1006) + EOFFLOADboxDOWN = Errno(1007) + EIBMCONFLICT = Errno(1008) + EIBMCANCELLED = Errno(1009) + EIBMBADTCPNAME = Errno(1011) + ENOTBLK = Errno(1100) + ETXTBSY = Errno(1101) + EWOULDBLOCK = Errno(1102) + EINPROGRESS = Errno(1103) + EALREADY = Errno(1104) + ENOTSOCK = Errno(1105) + EDESTADDRREQ = Errno(1106) + EMSGSIZE = Errno(1107) + EPROTOTYPE = Errno(1108) + ENOPROTOOPT = Errno(1109) + EPROTONOSUPPORT = Errno(1110) + ESOCKTNOSUPPORT = Errno(1111) + EOPNOTSUPP = Errno(1112) + EPFNOSUPPORT = Errno(1113) + EAFNOSUPPORT = Errno(1114) + EADDRINUSE = Errno(1115) + EADDRNOTAVAIL = Errno(1116) + ENETDOWN = Errno(1117) + ENETUNREACH = Errno(1118) + ENETRESET = Errno(1119) + ECONNABORTED = Errno(1120) + ECONNRESET = Errno(1121) + ENOBUFS = Errno(1122) + EISCONN = Errno(1123) + ENOTCONN = Errno(1124) + ESHUTDOWN = Errno(1125) + ETOOMANYREFS = Errno(1126) + ETIMEDOUT = Errno(1127) + ECONNREFUSED = Errno(1128) + EHOSTDOWN = Errno(1129) + EHOSTUNREACH = Errno(1130) + EPROCLIM = Errno(1131) + EUSERS = Errno(1132) + EDQUOT = Errno(1133) + ESTALE = Errno(1134) + EREMOTE = Errno(1135) + ENOSTR = Errno(1136) + ETIME = Errno(1137) + ENOSR = Errno(1138) + ENOMSG = Errno(1139) + EBADMSG = Errno(1140) + EIDRM = Errno(1141) + ENONET = Errno(1142) + ERREMOTE = Errno(1143) + ENOLINK = Errno(1144) + EADV = Errno(1145) + ESRMNT = Errno(1146) + ECOMM = Errno(1147) + EPROTO = Errno(1148) + EMULTIHOP = Errno(1149) + EDOTDOT = Errno(1150) + EREMCHG = Errno(1151) + ECANCELED = Errno(1152) + EINTRNODATA = Errno(1159) + ENOREUSE = Errno(1160) + ENOMOVE = Errno(1161) +) + +// Signals +const ( + SIGHUP = Signal(1) + SIGINT = Signal(2) + SIGABRT = Signal(3) + SIGILL = Signal(4) + SIGPOLL = Signal(5) + SIGURG = Signal(6) + SIGSTOP = Signal(7) + SIGFPE = Signal(8) + SIGKILL = Signal(9) + SIGBUS = Signal(10) + SIGSEGV = Signal(11) + SIGSYS = Signal(12) + SIGPIPE = Signal(13) + SIGALRM = Signal(14) + SIGTERM = Signal(15) + SIGUSR1 = Signal(16) + SIGUSR2 = Signal(17) + SIGABND = Signal(18) + SIGCONT = Signal(19) + SIGCHLD = Signal(20) + SIGTTIN = Signal(21) + SIGTTOU = Signal(22) + SIGIO = Signal(23) + SIGQUIT = Signal(24) + SIGTSTP = Signal(25) + SIGTRAP = Signal(26) + SIGIOERR = Signal(27) + SIGWINCH = Signal(28) + SIGXCPU = Signal(29) + SIGXFSZ = Signal(30) + SIGVTALRM = Signal(31) + SIGPROF = Signal(32) + SIGDANGER = Signal(33) + SIGTHSTOP = Signal(34) + SIGTHCONT = Signal(35) + SIGTRACE = Signal(37) + SIGDCE = Signal(38) + SIGDUMP = Signal(39) +) + +// Error table +var errorList = [...]struct { + num Errno + name string + desc string +}{ + {1, "EDC5001I", "A domain error occurred."}, + {2, "EDC5002I", "A range error occurred."}, + {111, "EDC5111I", "Permission denied."}, + {112, "EDC5112I", "Resource temporarily unavailable."}, + {113, "EDC5113I", "Bad file descriptor."}, + {114, "EDC5114I", "Resource busy."}, + {115, "EDC5115I", "No child processes."}, + {116, "EDC5116I", "Resource deadlock avoided."}, + {117, "EDC5117I", "File exists."}, + {118, "EDC5118I", "Incorrect address."}, + {119, "EDC5119I", "File too large."}, + {120, "EDC5120I", "Interrupted function call."}, + {121, "EDC5121I", "Invalid argument."}, + {122, "EDC5122I", "Input/output error."}, + {123, "EDC5123I", "Is a directory."}, + {124, "EDC5124I", "Too many open files."}, + {125, "EDC5125I", "Too many links."}, + {126, "EDC5126I", "Filename too long."}, + {127, "EDC5127I", "Too many open files in system."}, + {128, "EDC5128I", "No such device."}, + {129, "EDC5129I", "No such file or directory."}, + {130, "EDC5130I", "Exec format error."}, + {131, "EDC5131I", "No locks available."}, + {132, "EDC5132I", "Not enough memory."}, + {133, "EDC5133I", "No space left on device."}, + {134, "EDC5134I", "Function not implemented."}, + {135, "EDC5135I", "Not a directory."}, + {136, "EDC5136I", "Directory not empty."}, + {137, "EDC5137I", "Inappropriate I/O control operation."}, + {138, "EDC5138I", "No such device or address."}, + {139, "EDC5139I", "Operation not permitted."}, + {140, "EDC5140I", "Broken pipe."}, + {141, "EDC5141I", "Read-only file system."}, + {142, "EDC5142I", "Invalid seek."}, + {143, "EDC5143I", "No such process."}, + {144, "EDC5144I", "Improper link."}, + {145, "EDC5145I", "The parameter list is too long, or the message to receive was too large for the buffer."}, + {146, "EDC5146I", "Too many levels of symbolic links."}, + {147, "EDC5147I", "Illegal byte sequence."}, + {148, "EDC5148I", "The named attribute or data not available."}, + {149, "EDC5149I", "Value Overflow Error."}, + {150, "EDC5150I", "UNIX System Services is not active."}, + {151, "EDC5151I", "Dynamic allocation error."}, + {152, "EDC5152I", "Common VTOC access facility (CVAF) error."}, + {153, "EDC5153I", "Catalog obtain error."}, + {156, "EDC5156I", "Process initialization error."}, + {157, "EDC5157I", "An internal error has occurred."}, + {158, "EDC5158I", "Bad parameters were passed to the service."}, + {159, "EDC5159I", "The Physical File System encountered a permanent file error."}, + {160, "EDC5160I", "Bad character in environment variable name."}, + {162, "EDC5162I", "The Physical File System encountered a system error."}, + {163, "EDC5163I", "SAF/RACF extract error."}, + {164, "EDC5164I", "SAF/RACF error."}, + {165, "EDC5165I", "System TOD clock not set."}, + {166, "EDC5166I", "Access mode argument on function call conflicts with PATHOPTS parameter on JCL DD statement."}, + {167, "EDC5167I", "Access to the UNIX System Services version of the C RTL is denied."}, + {168, "EDC5168I", "Password has expired."}, + {169, "EDC5169I", "Password is invalid."}, + {170, "EDC5170I", "An error was encountered with WLM."}, + {171, "EDC5171I", "An error was encountered with CPL."}, + {172, "EDC5172I", "An error was encountered with Application Response Measurement (ARM) component."}, + {200, "EDC5200I", "The application contains a Language Environment member language that cannot tolerate a fork()."}, + {201, "EDC5201I", "The Language Environment message file was not found in the hierarchical file system."}, + {202, "EDC5202E", "DLL facilities are not supported under SPC environment."}, + {203, "EDC5203E", "DLL facilities are not supported under POSIX environment."}, + {227, "EDC5227I", "Buffer is not long enough to contain a path definition"}, + {228, "EDC5228I", "The file referred to is an external link"}, + {229, "EDC5229I", "No path definition for ddname in effect"}, + {230, "EDC5230I", "ESM error."}, + {231, "EDC5231I", "CP or the external security manager had an error"}, + {232, "EDC5232I", "The function failed because it was invoked from a multithread environment."}, + {244, "EDC5244I", "The program, module or DLL is not supported in this environment."}, + {245, "EDC5245I", "Data is not valid."}, + {246, "EDC5246I", "Unknown system state."}, + {247, "EDC5247I", "Operation not supported."}, + {248, "EDC5248I", "The object name specified is not correct."}, + {249, "EDC5249I", "The function is not allowed."}, + {257, "EDC5257I", "Function cannot be called in the child process of a fork() from a multithreaded process until exec() is called."}, + {258, "EDC5258I", "A CUN_RS_NO_UNI_ENV error was issued by Unicode Services."}, + {259, "EDC5259I", "A CUN_RS_NO_CONVERSION error was issued by Unicode Services."}, + {260, "EDC5260I", "A CUN_RS_TABLE_NOT_ALIGNED error was issued by Unicode Services."}, + {262, "EDC5262I", "An iconv() function encountered an unexpected error while using Unicode Services."}, + {265, "EDC5265I", "The named attribute not available."}, + {1000, "EDC8000I", "A bad socket-call constant was found in the IUCV header."}, + {1001, "EDC8001I", "An error was found in the IUCV header."}, + {1002, "EDC8002I", "A socket descriptor is out of range."}, + {1003, "EDC8003I", "A socket descriptor is in use."}, + {1004, "EDC8004I", "Request failed because of an IUCV error."}, + {1005, "EDC8005I", "Offload box error."}, + {1006, "EDC8006I", "Offload box restarted."}, + {1007, "EDC8007I", "Offload box down."}, + {1008, "EDC8008I", "Already a conflicting call outstanding on socket."}, + {1009, "EDC8009I", "Request cancelled using a SOCKcallCANCEL request."}, + {1011, "EDC8011I", "A name of a PFS was specified that either is not configured or is not a Sockets PFS."}, + {1100, "EDC8100I", "Block device required."}, + {1101, "EDC8101I", "Text file busy."}, + {1102, "EDC8102I", "Operation would block."}, + {1103, "EDC8103I", "Operation now in progress."}, + {1104, "EDC8104I", "Connection already in progress."}, + {1105, "EDC8105I", "Socket operation on non-socket."}, + {1106, "EDC8106I", "Destination address required."}, + {1107, "EDC8107I", "Message too long."}, + {1108, "EDC8108I", "Protocol wrong type for socket."}, + {1109, "EDC8109I", "Protocol not available."}, + {1110, "EDC8110I", "Protocol not supported."}, + {1111, "EDC8111I", "Socket type not supported."}, + {1112, "EDC8112I", "Operation not supported on socket."}, + {1113, "EDC8113I", "Protocol family not supported."}, + {1114, "EDC8114I", "Address family not supported."}, + {1115, "EDC8115I", "Address already in use."}, + {1116, "EDC8116I", "Address not available."}, + {1117, "EDC8117I", "Network is down."}, + {1118, "EDC8118I", "Network is unreachable."}, + {1119, "EDC8119I", "Network dropped connection on reset."}, + {1120, "EDC8120I", "Connection ended abnormally."}, + {1121, "EDC8121I", "Connection reset."}, + {1122, "EDC8122I", "No buffer space available."}, + {1123, "EDC8123I", "Socket already connected."}, + {1124, "EDC8124I", "Socket not connected."}, + {1125, "EDC8125I", "Can't send after socket shutdown."}, + {1126, "EDC8126I", "Too many references; can't splice."}, + {1127, "EDC8127I", "Connection timed out."}, + {1128, "EDC8128I", "Connection refused."}, + {1129, "EDC8129I", "Host is not available."}, + {1130, "EDC8130I", "Host cannot be reached."}, + {1131, "EDC8131I", "Too many processes."}, + {1132, "EDC8132I", "Too many users."}, + {1133, "EDC8133I", "Disk quota exceeded."}, + {1134, "EDC8134I", "Stale file handle."}, + {1135, "", ""}, + {1136, "EDC8136I", "File is not a STREAM."}, + {1137, "EDC8137I", "STREAMS ioctl() timeout."}, + {1138, "EDC8138I", "No STREAMS resources."}, + {1139, "EDC8139I", "The message identified by set_id and msg_id is not in the message catalog."}, + {1140, "EDC8140I", "Bad message."}, + {1141, "EDC8141I", "Identifier removed."}, + {1142, "", ""}, + {1143, "", ""}, + {1144, "EDC8144I", "The link has been severed."}, + {1145, "", ""}, + {1146, "", ""}, + {1147, "", ""}, + {1148, "EDC8148I", "Protocol error."}, + {1149, "EDC8149I", "Multihop not allowed."}, + {1150, "", ""}, + {1151, "", ""}, + {1152, "EDC8152I", "The asynchronous I/O request has been canceled."}, + {1159, "EDC8159I", "Function call was interrupted before any data was received."}, + {1160, "EDC8160I", "Socket reuse is not supported."}, + {1161, "EDC8161I", "The file system cannot currently be moved."}, +} + +// Signal table +var signalList = [...]struct { + num Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGABT", "aborted"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGPOLL", "pollable event"}, + {6, "SIGURG", "urgent I/O condition"}, + {7, "SIGSTOP", "stop process"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad argument to routine"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGUSR1", "user defined signal 1"}, + {17, "SIGUSR2", "user defined signal 2"}, + {18, "SIGABND", "abend"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGQUIT", "quit"}, + {25, "SIGTSTP", "stopped"}, + {26, "SIGTRAP", "trace/breakpoint trap"}, + {27, "SIGIOER", "I/O error"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGXCPU", "CPU time limit exceeded"}, + {30, "SIGXFSZ", "file size limit exceeded"}, + {31, "SIGVTALRM", "virtual timer expired"}, + {32, "SIGPROF", "profiling timer expired"}, + {33, "SIGDANGER", "danger"}, + {34, "SIGTHSTOP", "stop thread"}, + {35, "SIGTHCONT", "continue thread"}, + {37, "SIGTRACE", "trace"}, + {38, "", "DCE"}, + {39, "SIGDUMP", "dump"}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go b/tests/vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go new file mode 100644 index 000000000..586317c78 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go @@ -0,0 +1,40 @@ +// Code generated by linux/mkall.go generatePtracePair("arm", "arm64"). DO NOT EDIT. + +//go:build linux && (arm || arm64) + +package unix + +import "unsafe" + +// PtraceRegsArm is the registers used by arm binaries. +type PtraceRegsArm struct { + Uregs [18]uint32 +} + +// PtraceGetRegsArm fetches the registers used by arm binaries. +func PtraceGetRegsArm(pid int, regsout *PtraceRegsArm) error { + return ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout)) +} + +// PtraceSetRegsArm sets the registers used by arm binaries. +func PtraceSetRegsArm(pid int, regs *PtraceRegsArm) error { + return ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs)) +} + +// PtraceRegsArm64 is the registers used by arm64 binaries. +type PtraceRegsArm64 struct { + Regs [31]uint64 + Sp uint64 + Pc uint64 + Pstate uint64 +} + +// PtraceGetRegsArm64 fetches the registers used by arm64 binaries. +func PtraceGetRegsArm64(pid int, regsout *PtraceRegsArm64) error { + return ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout)) +} + +// PtraceSetRegsArm64 sets the registers used by arm64 binaries. +func PtraceSetRegsArm64(pid int, regs *PtraceRegsArm64) error { + return ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs)) +} diff --git a/tests/vendor/golang.org/x/sys/unix/zptrace_linux_arm64.go b/tests/vendor/golang.org/x/sys/unix/zptrace_linux_arm64.go new file mode 100644 index 000000000..834d2856d --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zptrace_linux_arm64.go @@ -0,0 +1,17 @@ +// Code generated by linux/mkall.go generatePtraceRegSet("arm64"). DO NOT EDIT. + +package unix + +import "unsafe" + +// PtraceGetRegSetArm64 fetches the registers used by arm64 binaries. +func PtraceGetRegSetArm64(pid, addr int, regsout *PtraceRegsArm64) error { + iovec := Iovec{(*byte)(unsafe.Pointer(regsout)), uint64(unsafe.Sizeof(*regsout))} + return ptracePtr(PTRACE_GETREGSET, pid, uintptr(addr), unsafe.Pointer(&iovec)) +} + +// PtraceSetRegSetArm64 sets the registers used by arm64 binaries. +func PtraceSetRegSetArm64(pid, addr int, regs *PtraceRegsArm64) error { + iovec := Iovec{(*byte)(unsafe.Pointer(regs)), uint64(unsafe.Sizeof(*regs))} + return ptracePtr(PTRACE_SETREGSET, pid, uintptr(addr), unsafe.Pointer(&iovec)) +} diff --git a/tests/vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go b/tests/vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go new file mode 100644 index 000000000..d7c881be7 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go @@ -0,0 +1,49 @@ +// Code generated by linux/mkall.go generatePtracePair("mips", "mips64"). DO NOT EDIT. + +//go:build linux && (mips || mips64) + +package unix + +import "unsafe" + +// PtraceRegsMips is the registers used by mips binaries. +type PtraceRegsMips struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +// PtraceGetRegsMips fetches the registers used by mips binaries. +func PtraceGetRegsMips(pid int, regsout *PtraceRegsMips) error { + return ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout)) +} + +// PtraceSetRegsMips sets the registers used by mips binaries. +func PtraceSetRegsMips(pid int, regs *PtraceRegsMips) error { + return ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs)) +} + +// PtraceRegsMips64 is the registers used by mips64 binaries. +type PtraceRegsMips64 struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +// PtraceGetRegsMips64 fetches the registers used by mips64 binaries. +func PtraceGetRegsMips64(pid int, regsout *PtraceRegsMips64) error { + return ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout)) +} + +// PtraceSetRegsMips64 sets the registers used by mips64 binaries. +func PtraceSetRegsMips64(pid int, regs *PtraceRegsMips64) error { + return ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs)) +} diff --git a/tests/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go b/tests/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go new file mode 100644 index 000000000..2d2de5d29 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go @@ -0,0 +1,49 @@ +// Code generated by linux/mkall.go generatePtracePair("mipsle", "mips64le"). DO NOT EDIT. + +//go:build linux && (mipsle || mips64le) + +package unix + +import "unsafe" + +// PtraceRegsMipsle is the registers used by mipsle binaries. +type PtraceRegsMipsle struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +// PtraceGetRegsMipsle fetches the registers used by mipsle binaries. +func PtraceGetRegsMipsle(pid int, regsout *PtraceRegsMipsle) error { + return ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout)) +} + +// PtraceSetRegsMipsle sets the registers used by mipsle binaries. +func PtraceSetRegsMipsle(pid int, regs *PtraceRegsMipsle) error { + return ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs)) +} + +// PtraceRegsMips64le is the registers used by mips64le binaries. +type PtraceRegsMips64le struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +// PtraceGetRegsMips64le fetches the registers used by mips64le binaries. +func PtraceGetRegsMips64le(pid int, regsout *PtraceRegsMips64le) error { + return ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout)) +} + +// PtraceSetRegsMips64le sets the registers used by mips64le binaries. +func PtraceSetRegsMips64le(pid int, regs *PtraceRegsMips64le) error { + return ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs)) +} diff --git a/tests/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go b/tests/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go new file mode 100644 index 000000000..5adc79fb5 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go @@ -0,0 +1,79 @@ +// Code generated by linux/mkall.go generatePtracePair("386", "amd64"). DO NOT EDIT. + +//go:build linux && (386 || amd64) + +package unix + +import "unsafe" + +// PtraceRegs386 is the registers used by 386 binaries. +type PtraceRegs386 struct { + Ebx int32 + Ecx int32 + Edx int32 + Esi int32 + Edi int32 + Ebp int32 + Eax int32 + Xds int32 + Xes int32 + Xfs int32 + Xgs int32 + Orig_eax int32 + Eip int32 + Xcs int32 + Eflags int32 + Esp int32 + Xss int32 +} + +// PtraceGetRegs386 fetches the registers used by 386 binaries. +func PtraceGetRegs386(pid int, regsout *PtraceRegs386) error { + return ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout)) +} + +// PtraceSetRegs386 sets the registers used by 386 binaries. +func PtraceSetRegs386(pid int, regs *PtraceRegs386) error { + return ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs)) +} + +// PtraceRegsAmd64 is the registers used by amd64 binaries. +type PtraceRegsAmd64 struct { + R15 uint64 + R14 uint64 + R13 uint64 + R12 uint64 + Rbp uint64 + Rbx uint64 + R11 uint64 + R10 uint64 + R9 uint64 + R8 uint64 + Rax uint64 + Rcx uint64 + Rdx uint64 + Rsi uint64 + Rdi uint64 + Orig_rax uint64 + Rip uint64 + Cs uint64 + Eflags uint64 + Rsp uint64 + Ss uint64 + Fs_base uint64 + Gs_base uint64 + Ds uint64 + Es uint64 + Fs uint64 + Gs uint64 +} + +// PtraceGetRegsAmd64 fetches the registers used by amd64 binaries. +func PtraceGetRegsAmd64(pid int, regsout *PtraceRegsAmd64) error { + return ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout)) +} + +// PtraceSetRegsAmd64 sets the registers used by amd64 binaries. +func PtraceSetRegsAmd64(pid int, regs *PtraceRegsAmd64) error { + return ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs)) +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsymaddr_zos_s390x.s b/tests/vendor/golang.org/x/sys/unix/zsymaddr_zos_s390x.s new file mode 100644 index 000000000..b77ff5db9 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsymaddr_zos_s390x.s @@ -0,0 +1,364 @@ +// go run mksyscall_zos_s390x.go -o_sysnum zsysnum_zos_s390x.go -o_syscall zsyscall_zos_s390x.go -i_syscall syscall_zos_s390x.go -o_asm zsymaddr_zos_s390x.s +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build zos && s390x +#include "textflag.h" + +// provide the address of function variable to be fixed up. + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_FlistxattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Flistxattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_FremovexattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Fremovexattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_FgetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Fgetxattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_FsetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Fsetxattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_accept4Addr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·accept4(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_RemovexattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Removexattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_Dup3Addr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Dup3(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_DirfdAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Dirfd(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_EpollCreateAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·EpollCreate(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_EpollCreate1Addr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·EpollCreate1(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_EpollCtlAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·EpollCtl(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_EpollPwaitAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·EpollPwait(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_EpollWaitAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·EpollWait(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_EventfdAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Eventfd(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_FaccessatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Faccessat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_FchmodatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Fchmodat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_FchownatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Fchownat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_FdatasyncAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Fdatasync(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_fstatatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·fstatat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_LgetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Lgetxattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_LsetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Lsetxattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_FstatfsAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Fstatfs(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_FutimesAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Futimes(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_FutimesatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Futimesat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_GetrandomAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Getrandom(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_InotifyInitAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·InotifyInit(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_InotifyInit1Addr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·InotifyInit1(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_InotifyAddWatchAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·InotifyAddWatch(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_InotifyRmWatchAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·InotifyRmWatch(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_ListxattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Listxattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_LlistxattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Llistxattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_LremovexattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Lremovexattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_LutimesAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Lutimes(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_StatfsAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Statfs(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_SyncfsAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Syncfs(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_UnshareAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Unshare(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_LinkatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Linkat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_MkdiratAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Mkdirat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_MknodatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Mknodat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_PivotRootAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·PivotRoot(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_PrctlAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Prctl(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_PrlimitAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Prlimit(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_RenameatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Renameat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_Renameat2Addr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Renameat2(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_SethostnameAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Sethostname(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_SetnsAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Setns(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_SymlinkatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Symlinkat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_UnlinkatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Unlinkat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_openatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·openat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_openat2Addr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·openat2(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_utimensatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·utimensat(SB), R8 + MOVD R8, ret+0(FP) + RET diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go new file mode 100644 index 000000000..6ea64a3c0 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go @@ -0,0 +1,1461 @@ +// go run mksyscall_aix_ppc.go -aix -tags aix,ppc syscall_aix.go syscall_aix_ppc.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build aix && ppc + +package unix + +/* +#include <stdint.h> +#include <stddef.h> +int utimes(uintptr_t, uintptr_t); +int utimensat(int, uintptr_t, uintptr_t, int); +int getcwd(uintptr_t, size_t); +int accept(int, uintptr_t, uintptr_t); +int getdirent(int, uintptr_t, size_t); +int wait4(int, uintptr_t, int, uintptr_t); +int ioctl(int, int, uintptr_t); +int fcntl(uintptr_t, int, uintptr_t); +int fsync_range(int, int, long long, long long); +int acct(uintptr_t); +int chdir(uintptr_t); +int chroot(uintptr_t); +int close(int); +int dup(int); +void exit(int); +int faccessat(int, uintptr_t, unsigned int, int); +int fchdir(int); +int fchmod(int, unsigned int); +int fchmodat(int, uintptr_t, unsigned int, int); +int fchownat(int, uintptr_t, int, int, int); +int fdatasync(int); +int getpgid(int); +int getpgrp(); +int getpid(); +int getppid(); +int getpriority(int, int); +int getrusage(int, uintptr_t); +int getsid(int); +int kill(int, int); +int syslog(int, uintptr_t, size_t); +int mkdir(int, uintptr_t, unsigned int); +int mkdirat(int, uintptr_t, unsigned int); +int mkfifo(uintptr_t, unsigned int); +int mknod(uintptr_t, unsigned int, int); +int mknodat(int, uintptr_t, unsigned int, int); +int nanosleep(uintptr_t, uintptr_t); +int open64(uintptr_t, int, unsigned int); +int openat(int, uintptr_t, int, unsigned int); +int read(int, uintptr_t, size_t); +int readlink(uintptr_t, uintptr_t, size_t); +int renameat(int, uintptr_t, int, uintptr_t); +int setdomainname(uintptr_t, size_t); +int sethostname(uintptr_t, size_t); +int setpgid(int, int); +int setsid(); +int settimeofday(uintptr_t); +int setuid(int); +int setgid(int); +int setpriority(int, int, int); +int statx(int, uintptr_t, int, int, uintptr_t); +int sync(); +uintptr_t times(uintptr_t); +int umask(int); +int uname(uintptr_t); +int unlink(uintptr_t); +int unlinkat(int, uintptr_t, int); +int ustat(int, uintptr_t); +int write(int, uintptr_t, size_t); +int dup2(int, int); +int posix_fadvise64(int, long long, long long, int); +int fchown(int, int, int); +int fstat(int, uintptr_t); +int fstatat(int, uintptr_t, uintptr_t, int); +int fstatfs(int, uintptr_t); +int ftruncate(int, long long); +int getegid(); +int geteuid(); +int getgid(); +int getuid(); +int lchown(uintptr_t, int, int); +int listen(int, int); +int lstat(uintptr_t, uintptr_t); +int pause(); +int pread64(int, uintptr_t, size_t, long long); +int pwrite64(int, uintptr_t, size_t, long long); +#define c_select select +int select(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t); +int pselect(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t); +int setregid(int, int); +int setreuid(int, int); +int shutdown(int, int); +long long splice(int, uintptr_t, int, uintptr_t, int, int); +int stat(uintptr_t, uintptr_t); +int statfs(uintptr_t, uintptr_t); +int truncate(uintptr_t, long long); +int bind(int, uintptr_t, uintptr_t); +int connect(int, uintptr_t, uintptr_t); +int getgroups(int, uintptr_t); +int setgroups(int, uintptr_t); +int getsockopt(int, int, int, uintptr_t, uintptr_t); +int setsockopt(int, int, int, uintptr_t, uintptr_t); +int socket(int, int, int); +int socketpair(int, int, int, uintptr_t); +int getpeername(int, uintptr_t, uintptr_t); +int getsockname(int, uintptr_t, uintptr_t); +int recvfrom(int, uintptr_t, size_t, int, uintptr_t, uintptr_t); +int sendto(int, uintptr_t, size_t, int, uintptr_t, uintptr_t); +int nrecvmsg(int, uintptr_t, int); +int nsendmsg(int, uintptr_t, int); +int munmap(uintptr_t, uintptr_t); +int madvise(uintptr_t, size_t, int); +int mprotect(uintptr_t, size_t, int); +int mlock(uintptr_t, size_t); +int mlockall(int); +int msync(uintptr_t, size_t, int); +int munlock(uintptr_t, size_t); +int munlockall(); +int pipe(uintptr_t); +int poll(uintptr_t, int, int); +int gettimeofday(uintptr_t, uintptr_t); +int time(uintptr_t); +int utime(uintptr_t, uintptr_t); +unsigned long long getsystemcfg(int); +int umount(uintptr_t); +int getrlimit64(int, uintptr_t); +long long lseek64(int, long long, int); +uintptr_t mmap(uintptr_t, uintptr_t, int, int, int, long long); + +*/ +import "C" +import ( + "unsafe" +) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.utimes(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(times)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.utimensat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(times))), C.int(flag)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getcwd(buf []byte) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.getcwd(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, er := C.accept(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen)))) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirent(fd int, buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.getdirent(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) { + r0, er := C.wait4(C.int(pid), C.uintptr_t(uintptr(unsafe.Pointer(status))), C.int(options), C.uintptr_t(uintptr(unsafe.Pointer(rusage)))) + wpid = Pid_t(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req int, arg uintptr) (err error) { + r0, er := C.ioctl(C.int(fd), C.int(req), C.uintptr_t(arg)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) { + r0, er := C.ioctl(C.int(fd), C.int(req), C.uintptr_t(uintptr(arg))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FcntlInt(fd uintptr, cmd int, arg int) (r int, err error) { + r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg)) + r = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) { + r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(uintptr(unsafe.Pointer(lk)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg)) + val = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsyncRange(fd int, how int, start int64, length int64) (err error) { + r0, er := C.fsync_range(C.int(fd), C.int(how), C.longlong(start), C.longlong(length)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.acct(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.chdir(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.chroot(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + r0, er := C.close(C.int(fd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, er := C.dup(C.int(oldfd)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + C.exit(C.int(code)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.faccessat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + r0, er := C.fchdir(C.int(fd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + r0, er := C.fchmod(C.int(fd), C.uint(mode)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.fchmodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.fchownat(C.int(dirfd), C.uintptr_t(_p0), C.int(uid), C.int(gid), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + r0, er := C.fdatasync(C.int(fd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, er := C.getpgid(C.int(pid)) + pgid = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pid int) { + r0, _ := C.getpgrp() + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := C.getpid() + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := C.getppid() + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, er := C.getpriority(C.int(which), C.int(who)) + prio = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + r0, er := C.getrusage(C.int(who), C.uintptr_t(uintptr(unsafe.Pointer(rusage)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, er := C.getsid(C.int(pid)) + sid = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig Signal) (err error) { + r0, er := C.kill(C.int(pid), C.int(sig)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.syslog(C.int(typ), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(dirfd int, path string, mode uint32) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mkdir(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mkdirat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mkfifo(C.uintptr_t(_p0), C.uint(mode)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mknod(C.uintptr_t(_p0), C.uint(mode), C.int(dev)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mknodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(dev)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + r0, er := C.nanosleep(C.uintptr_t(uintptr(unsafe.Pointer(time))), C.uintptr_t(uintptr(unsafe.Pointer(leftover)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.open64(C.uintptr_t(_p0), C.int(mode), C.uint(perm)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.openat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.uint(mode)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.read(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + var _p1 *byte + if len(buf) > 0 { + _p1 = &buf[0] + } + var _p2 int + _p2 = len(buf) + r0, er := C.readlink(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(_p1))), C.size_t(_p2)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(oldpath))) + _p1 := uintptr(unsafe.Pointer(C.CString(newpath))) + r0, er := C.renameat(C.int(olddirfd), C.uintptr_t(_p0), C.int(newdirfd), C.uintptr_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.setdomainname(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.sethostname(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + r0, er := C.setpgid(C.int(pid), C.int(pgid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, er := C.setsid() + pid = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + r0, er := C.settimeofday(C.uintptr_t(uintptr(unsafe.Pointer(tv)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + r0, er := C.setuid(C.int(uid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(uid int) (err error) { + r0, er := C.setgid(C.int(uid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + r0, er := C.setpriority(C.int(which), C.int(who), C.int(prio)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.statx(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.int(mask), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + C.sync() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, er := C.times(C.uintptr_t(uintptr(unsafe.Pointer(tms)))) + ticks = uintptr(r0) + if uintptr(r0) == ^uintptr(0) && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := C.umask(C.int(mask)) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + r0, er := C.uname(C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.unlink(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.unlinkat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + r0, er := C.ustat(C.int(dev), C.uintptr_t(uintptr(unsafe.Pointer(ubuf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.write(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + r0, er := C.dup2(C.int(oldfd), C.int(newfd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + r0, er := C.posix_fadvise64(C.int(fd), C.longlong(offset), C.longlong(length), C.int(advice)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + r0, er := C.fchown(C.int(fd), C.int(uid), C.int(gid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat(fd int, stat *Stat_t) (err error) { + r0, er := C.fstat(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.fstatat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat))), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + r0, er := C.fstatfs(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + r0, er := C.ftruncate(C.int(fd), C.longlong(length)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := C.getegid() + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := C.geteuid() + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := C.getgid() + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := C.getuid() + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.lchown(C.uintptr_t(_p0), C.int(uid), C.int(gid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + r0, er := C.listen(C.int(s), C.int(n)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func lstat(path string, stat *Stat_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.lstat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + r0, er := C.pause() + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.pread64(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.longlong(offset)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.pwrite64(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.longlong(offset)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, er := C.c_select(C.int(nfd), C.uintptr_t(uintptr(unsafe.Pointer(r))), C.uintptr_t(uintptr(unsafe.Pointer(w))), C.uintptr_t(uintptr(unsafe.Pointer(e))), C.uintptr_t(uintptr(unsafe.Pointer(timeout)))) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, er := C.pselect(C.int(nfd), C.uintptr_t(uintptr(unsafe.Pointer(r))), C.uintptr_t(uintptr(unsafe.Pointer(w))), C.uintptr_t(uintptr(unsafe.Pointer(e))), C.uintptr_t(uintptr(unsafe.Pointer(timeout))), C.uintptr_t(uintptr(unsafe.Pointer(sigmask)))) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + r0, er := C.setregid(C.int(rgid), C.int(egid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + r0, er := C.setreuid(C.int(ruid), C.int(euid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + r0, er := C.shutdown(C.int(fd), C.int(how)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, er := C.splice(C.int(rfd), C.uintptr_t(uintptr(unsafe.Pointer(roff))), C.int(wfd), C.uintptr_t(uintptr(unsafe.Pointer(woff))), C.int(len), C.int(flags)) + n = int64(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func stat(path string, statptr *Stat_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.stat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(statptr)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.statfs(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.truncate(C.uintptr_t(_p0), C.longlong(length)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + r0, er := C.bind(C.int(s), C.uintptr_t(uintptr(addr)), C.uintptr_t(uintptr(addrlen))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + r0, er := C.connect(C.int(s), C.uintptr_t(uintptr(addr)), C.uintptr_t(uintptr(addrlen))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, er := C.getgroups(C.int(n), C.uintptr_t(uintptr(unsafe.Pointer(list)))) + nn = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + r0, er := C.setgroups(C.int(n), C.uintptr_t(uintptr(unsafe.Pointer(list)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + r0, er := C.getsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(uintptr(val)), C.uintptr_t(uintptr(unsafe.Pointer(vallen)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + r0, er := C.setsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(uintptr(val)), C.uintptr_t(vallen)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, er := C.socket(C.int(domain), C.int(typ), C.int(proto)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + r0, er := C.socketpair(C.int(domain), C.int(typ), C.int(proto), C.uintptr_t(uintptr(unsafe.Pointer(fd)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + r0, er := C.getpeername(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + r0, er := C.getsockname(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.recvfrom(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags), C.uintptr_t(uintptr(unsafe.Pointer(from))), C.uintptr_t(uintptr(unsafe.Pointer(fromlen)))) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.sendto(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags), C.uintptr_t(uintptr(to)), C.uintptr_t(uintptr(addrlen))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, er := C.nrecvmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, er := C.nsendmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + r0, er := C.munmap(C.uintptr_t(addr), C.uintptr_t(length)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.madvise(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(advice)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.mprotect(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(prot)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.mlock(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + r0, er := C.mlockall(C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.msync(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.munlock(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + r0, er := C.munlockall() + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + r0, er := C.pipe(C.uintptr_t(uintptr(unsafe.Pointer(p)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, er := C.poll(C.uintptr_t(uintptr(unsafe.Pointer(fds))), C.int(nfds), C.int(timeout)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tv *Timeval, tzp *Timezone) (err error) { + r0, er := C.gettimeofday(C.uintptr_t(uintptr(unsafe.Pointer(tv))), C.uintptr_t(uintptr(unsafe.Pointer(tzp)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, er := C.time(C.uintptr_t(uintptr(unsafe.Pointer(t)))) + tt = Time_t(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.utime(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsystemcfg(label int) (n uint64) { + r0, _ := C.getsystemcfg(C.int(label)) + n = uint64(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func umount(target string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(target))) + r0, er := C.umount(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + r0, er := C.getrlimit64(C.int(resource), C.uintptr_t(uintptr(unsafe.Pointer(rlim)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, er := C.lseek64(C.int(fd), C.longlong(offset), C.int(whence)) + off = int64(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, er := C.mmap(C.uintptr_t(addr), C.uintptr_t(length), C.int(prot), C.int(flags), C.int(fd), C.longlong(offset)) + xaddr = uintptr(r0) + if uintptr(r0) == ^uintptr(0) && er != nil { + err = er + } + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go new file mode 100644 index 000000000..99ee4399a --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go @@ -0,0 +1,1420 @@ +// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build aix && ppc64 + +package unix + +import ( + "unsafe" +) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callutimes(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callutimensat(dirfd, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), flag) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getcwd(buf []byte) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + _, e1 := callgetcwd(uintptr(unsafe.Pointer(_p0)), len(buf)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, e1 := callaccept(s, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirent(fd int, buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r0, e1 := callgetdirent(fd, uintptr(unsafe.Pointer(_p0)), len(buf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) { + r0, e1 := callwait4(int(pid), uintptr(unsafe.Pointer(status)), options, uintptr(unsafe.Pointer(rusage))) + wpid = Pid_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req int, arg uintptr) (err error) { + _, e1 := callioctl(fd, req, arg) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) { + _, e1 := callioctl_ptr(fd, req, arg) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FcntlInt(fd uintptr, cmd int, arg int) (r int, err error) { + r0, e1 := callfcntl(fd, cmd, uintptr(arg)) + r = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) { + _, e1 := callfcntl(fd, cmd, uintptr(unsafe.Pointer(lk))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, e1 := callfcntl(uintptr(fd), cmd, uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsyncRange(fd int, how int, start int64, length int64) (err error) { + _, e1 := callfsync_range(fd, how, start, length) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callacct(uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callchdir(uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callchroot(uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, e1 := callclose(fd) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, e1 := calldup(oldfd) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + callexit(code) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callfaccessat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, e1 := callfchdir(fd) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, e1 := callfchmod(fd, mode) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callfchmodat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callfchownat(dirfd, uintptr(unsafe.Pointer(_p0)), uid, gid, flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, e1 := callfdatasync(fd) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, e1 := callgetpgid(pid) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pid int) { + r0, _ := callgetpgrp() + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := callgetpid() + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := callgetppid() + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, e1 := callgetpriority(which, who) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, e1 := callgetrusage(who, uintptr(unsafe.Pointer(rusage))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, e1 := callgetsid(pid) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig Signal) (err error) { + _, e1 := callkill(pid, int(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r0, e1 := callsyslog(typ, uintptr(unsafe.Pointer(_p0)), len(buf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callmkdir(dirfd, uintptr(unsafe.Pointer(_p0)), mode) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callmkdirat(dirfd, uintptr(unsafe.Pointer(_p0)), mode) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callmkfifo(uintptr(unsafe.Pointer(_p0)), mode) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callmknod(uintptr(unsafe.Pointer(_p0)), mode, dev) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callmknodat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, dev) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, e1 := callnanosleep(uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, e1 := callopen64(uintptr(unsafe.Pointer(_p0)), mode, perm) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, e1 := callopenat(dirfd, uintptr(unsafe.Pointer(_p0)), flags, mode) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, e1 := callread(fd, uintptr(unsafe.Pointer(_p0)), len(p)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + if len(buf) > 0 { + _p1 = &buf[0] + } + r0, e1 := callreadlink(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), len(buf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, e1 := callrenameat(olddirfd, uintptr(unsafe.Pointer(_p0)), newdirfd, uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + _, e1 := callsetdomainname(uintptr(unsafe.Pointer(_p0)), len(p)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + _, e1 := callsethostname(uintptr(unsafe.Pointer(_p0)), len(p)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, e1 := callsetpgid(pid, pgid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, e1 := callsetsid() + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, e1 := callsettimeofday(uintptr(unsafe.Pointer(tv))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, e1 := callsetuid(uid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(uid int) (err error) { + _, e1 := callsetgid(uid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, e1 := callsetpriority(which, who, prio) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callstatx(dirfd, uintptr(unsafe.Pointer(_p0)), flags, mask, uintptr(unsafe.Pointer(stat))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + callsync() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, e1 := calltimes(uintptr(unsafe.Pointer(tms))) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := callumask(mask) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, e1 := calluname(uintptr(unsafe.Pointer(buf))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callunlink(uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callunlinkat(dirfd, uintptr(unsafe.Pointer(_p0)), flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, e1 := callustat(dev, uintptr(unsafe.Pointer(ubuf))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, e1 := callwrite(fd, uintptr(unsafe.Pointer(_p0)), len(p)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, e1 := calldup2(oldfd, newfd) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, e1 := callposix_fadvise64(fd, offset, length, advice) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, e1 := callfchown(fd, uid, gid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat(fd int, stat *Stat_t) (err error) { + _, e1 := callfstat(fd, uintptr(unsafe.Pointer(stat))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callfstatat(dirfd, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, e1 := callfstatfs(fd, uintptr(unsafe.Pointer(buf))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, e1 := callftruncate(fd, length) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := callgetegid() + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := callgeteuid() + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := callgetgid() + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := callgetuid() + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := calllchown(uintptr(unsafe.Pointer(_p0)), uid, gid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, e1 := calllisten(s, n) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := calllstat(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, e1 := callpause() + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, e1 := callpread64(fd, uintptr(unsafe.Pointer(_p0)), len(p), offset) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, e1 := callpwrite64(fd, uintptr(unsafe.Pointer(_p0)), len(p), offset) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, e1 := callselect(nfd, uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, e1 := callpselect(nfd, uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, e1 := callsetregid(rgid, egid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, e1 := callsetreuid(ruid, euid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, e1 := callshutdown(fd, how) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, e1 := callsplice(rfd, uintptr(unsafe.Pointer(roff)), wfd, uintptr(unsafe.Pointer(woff)), len, flags) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func stat(path string, statptr *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callstat(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(statptr))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callstatfs(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := calltruncate(uintptr(unsafe.Pointer(_p0)), length) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, e1 := callbind(s, uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, e1 := callconnect(s, uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, e1 := callgetgroups(n, uintptr(unsafe.Pointer(list))) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, e1 := callsetgroups(n, uintptr(unsafe.Pointer(list))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, e1 := callgetsockopt(s, level, name, uintptr(val), uintptr(unsafe.Pointer(vallen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, e1 := callsetsockopt(s, level, name, uintptr(val), vallen) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, e1 := callsocket(domain, typ, proto) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, e1 := callsocketpair(domain, typ, proto, uintptr(unsafe.Pointer(fd))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, e1 := callgetpeername(fd, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, e1 := callgetsockname(fd, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, e1 := callrecvfrom(fd, uintptr(unsafe.Pointer(_p0)), len(p), flags, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + _, e1 := callsendto(s, uintptr(unsafe.Pointer(_p0)), len(buf), flags, uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, e1 := callnrecvmsg(s, uintptr(unsafe.Pointer(msg)), flags) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, e1 := callnsendmsg(s, uintptr(unsafe.Pointer(msg)), flags) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, e1 := callmunmap(addr, length) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, e1 := callmadvise(uintptr(unsafe.Pointer(_p0)), len(b), advice) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, e1 := callmprotect(uintptr(unsafe.Pointer(_p0)), len(b), prot) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, e1 := callmlock(uintptr(unsafe.Pointer(_p0)), len(b)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, e1 := callmlockall(flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, e1 := callmsync(uintptr(unsafe.Pointer(_p0)), len(b), flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, e1 := callmunlock(uintptr(unsafe.Pointer(_p0)), len(b)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, e1 := callmunlockall() + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, e1 := callpipe(uintptr(unsafe.Pointer(p))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, e1 := callpoll(uintptr(unsafe.Pointer(fds)), nfds, timeout) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tv *Timeval, tzp *Timezone) (err error) { + _, e1 := callgettimeofday(uintptr(unsafe.Pointer(tv)), uintptr(unsafe.Pointer(tzp))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, e1 := calltime(uintptr(unsafe.Pointer(t))) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callutime(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsystemcfg(label int) (n uint64) { + r0, _ := callgetsystemcfg(label) + n = uint64(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func umount(target string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, e1 := callumount(uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, e1 := callgetrlimit(resource, uintptr(unsafe.Pointer(rlim))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, e1 := calllseek(fd, offset, whence) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, e1 := callmmap64(addr, length, prot, flags, fd, offset) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go new file mode 100644 index 000000000..b68a78362 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go @@ -0,0 +1,1188 @@ +// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build aix && ppc64 && gc + +package unix + +import ( + "unsafe" +) + +//go:cgo_import_dynamic libc_utimes utimes "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_utimensat utimensat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getcwd getcwd "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_accept accept "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getdirent getdirent "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_wait4 wait4 "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_ioctl ioctl "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fcntl fcntl "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fsync_range fsync_range "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_acct acct "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_chdir chdir "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_chroot chroot "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_close close "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_dup dup "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_exit exit "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_faccessat faccessat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fchdir fchdir "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fchmod fchmod "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fchmodat fchmodat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fchownat fchownat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fdatasync fdatasync "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getpgid getpgid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getpgrp getpgrp "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getpid getpid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getppid getppid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getpriority getpriority "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getrusage getrusage "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getsid getsid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_kill kill "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_syslog syslog "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mkdir mkdir "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mkdirat mkdirat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mkfifo mkfifo "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mknod mknod "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mknodat mknodat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_nanosleep nanosleep "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_open64 open64 "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_openat openat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_read read "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_readlink readlink "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_renameat renameat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setdomainname setdomainname "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_sethostname sethostname "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setpgid setpgid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setsid setsid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_settimeofday settimeofday "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setuid setuid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setgid setgid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setpriority setpriority "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_statx statx "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_sync sync "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_times times "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_umask umask "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_uname uname "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_unlink unlink "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_unlinkat unlinkat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_ustat ustat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_write write "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_dup2 dup2 "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_posix_fadvise64 posix_fadvise64 "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fchown fchown "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fstat fstat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fstatat fstatat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fstatfs fstatfs "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_ftruncate ftruncate "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getegid getegid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_geteuid geteuid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getgid getgid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getuid getuid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_lchown lchown "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_listen listen "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_lstat lstat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_pause pause "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_pread64 pread64 "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_pwrite64 pwrite64 "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_select select "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_pselect pselect "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setregid setregid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setreuid setreuid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_shutdown shutdown "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_splice splice "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_stat stat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_statfs statfs "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_truncate truncate "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_bind bind "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_connect connect "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getgroups getgroups "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setgroups setgroups "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getsockopt getsockopt "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setsockopt setsockopt "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_socket socket "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_socketpair socketpair "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getpeername getpeername "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getsockname getsockname "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_recvfrom recvfrom "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_sendto sendto "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_nrecvmsg nrecvmsg "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_nsendmsg nsendmsg "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_munmap munmap "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_madvise madvise "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mprotect mprotect "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mlock mlock "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mlockall mlockall "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_msync msync "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_munlock munlock "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_munlockall munlockall "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_pipe pipe "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_poll poll "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_time time "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_utime utime "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getsystemcfg getsystemcfg "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_umount umount "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getrlimit getrlimit "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_lseek lseek "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mmap64 mmap64 "libc.a/shr_64.o" + +//go:linkname libc_utimes libc_utimes +//go:linkname libc_utimensat libc_utimensat +//go:linkname libc_getcwd libc_getcwd +//go:linkname libc_accept libc_accept +//go:linkname libc_getdirent libc_getdirent +//go:linkname libc_wait4 libc_wait4 +//go:linkname libc_ioctl libc_ioctl +//go:linkname libc_fcntl libc_fcntl +//go:linkname libc_fsync_range libc_fsync_range +//go:linkname libc_acct libc_acct +//go:linkname libc_chdir libc_chdir +//go:linkname libc_chroot libc_chroot +//go:linkname libc_close libc_close +//go:linkname libc_dup libc_dup +//go:linkname libc_exit libc_exit +//go:linkname libc_faccessat libc_faccessat +//go:linkname libc_fchdir libc_fchdir +//go:linkname libc_fchmod libc_fchmod +//go:linkname libc_fchmodat libc_fchmodat +//go:linkname libc_fchownat libc_fchownat +//go:linkname libc_fdatasync libc_fdatasync +//go:linkname libc_getpgid libc_getpgid +//go:linkname libc_getpgrp libc_getpgrp +//go:linkname libc_getpid libc_getpid +//go:linkname libc_getppid libc_getppid +//go:linkname libc_getpriority libc_getpriority +//go:linkname libc_getrusage libc_getrusage +//go:linkname libc_getsid libc_getsid +//go:linkname libc_kill libc_kill +//go:linkname libc_syslog libc_syslog +//go:linkname libc_mkdir libc_mkdir +//go:linkname libc_mkdirat libc_mkdirat +//go:linkname libc_mkfifo libc_mkfifo +//go:linkname libc_mknod libc_mknod +//go:linkname libc_mknodat libc_mknodat +//go:linkname libc_nanosleep libc_nanosleep +//go:linkname libc_open64 libc_open64 +//go:linkname libc_openat libc_openat +//go:linkname libc_read libc_read +//go:linkname libc_readlink libc_readlink +//go:linkname libc_renameat libc_renameat +//go:linkname libc_setdomainname libc_setdomainname +//go:linkname libc_sethostname libc_sethostname +//go:linkname libc_setpgid libc_setpgid +//go:linkname libc_setsid libc_setsid +//go:linkname libc_settimeofday libc_settimeofday +//go:linkname libc_setuid libc_setuid +//go:linkname libc_setgid libc_setgid +//go:linkname libc_setpriority libc_setpriority +//go:linkname libc_statx libc_statx +//go:linkname libc_sync libc_sync +//go:linkname libc_times libc_times +//go:linkname libc_umask libc_umask +//go:linkname libc_uname libc_uname +//go:linkname libc_unlink libc_unlink +//go:linkname libc_unlinkat libc_unlinkat +//go:linkname libc_ustat libc_ustat +//go:linkname libc_write libc_write +//go:linkname libc_dup2 libc_dup2 +//go:linkname libc_posix_fadvise64 libc_posix_fadvise64 +//go:linkname libc_fchown libc_fchown +//go:linkname libc_fstat libc_fstat +//go:linkname libc_fstatat libc_fstatat +//go:linkname libc_fstatfs libc_fstatfs +//go:linkname libc_ftruncate libc_ftruncate +//go:linkname libc_getegid libc_getegid +//go:linkname libc_geteuid libc_geteuid +//go:linkname libc_getgid libc_getgid +//go:linkname libc_getuid libc_getuid +//go:linkname libc_lchown libc_lchown +//go:linkname libc_listen libc_listen +//go:linkname libc_lstat libc_lstat +//go:linkname libc_pause libc_pause +//go:linkname libc_pread64 libc_pread64 +//go:linkname libc_pwrite64 libc_pwrite64 +//go:linkname libc_select libc_select +//go:linkname libc_pselect libc_pselect +//go:linkname libc_setregid libc_setregid +//go:linkname libc_setreuid libc_setreuid +//go:linkname libc_shutdown libc_shutdown +//go:linkname libc_splice libc_splice +//go:linkname libc_stat libc_stat +//go:linkname libc_statfs libc_statfs +//go:linkname libc_truncate libc_truncate +//go:linkname libc_bind libc_bind +//go:linkname libc_connect libc_connect +//go:linkname libc_getgroups libc_getgroups +//go:linkname libc_setgroups libc_setgroups +//go:linkname libc_getsockopt libc_getsockopt +//go:linkname libc_setsockopt libc_setsockopt +//go:linkname libc_socket libc_socket +//go:linkname libc_socketpair libc_socketpair +//go:linkname libc_getpeername libc_getpeername +//go:linkname libc_getsockname libc_getsockname +//go:linkname libc_recvfrom libc_recvfrom +//go:linkname libc_sendto libc_sendto +//go:linkname libc_nrecvmsg libc_nrecvmsg +//go:linkname libc_nsendmsg libc_nsendmsg +//go:linkname libc_munmap libc_munmap +//go:linkname libc_madvise libc_madvise +//go:linkname libc_mprotect libc_mprotect +//go:linkname libc_mlock libc_mlock +//go:linkname libc_mlockall libc_mlockall +//go:linkname libc_msync libc_msync +//go:linkname libc_munlock libc_munlock +//go:linkname libc_munlockall libc_munlockall +//go:linkname libc_pipe libc_pipe +//go:linkname libc_poll libc_poll +//go:linkname libc_gettimeofday libc_gettimeofday +//go:linkname libc_time libc_time +//go:linkname libc_utime libc_utime +//go:linkname libc_getsystemcfg libc_getsystemcfg +//go:linkname libc_umount libc_umount +//go:linkname libc_getrlimit libc_getrlimit +//go:linkname libc_lseek libc_lseek +//go:linkname libc_mmap64 libc_mmap64 + +type syscallFunc uintptr + +var ( + libc_utimes, + libc_utimensat, + libc_getcwd, + libc_accept, + libc_getdirent, + libc_wait4, + libc_ioctl, + libc_fcntl, + libc_fsync_range, + libc_acct, + libc_chdir, + libc_chroot, + libc_close, + libc_dup, + libc_exit, + libc_faccessat, + libc_fchdir, + libc_fchmod, + libc_fchmodat, + libc_fchownat, + libc_fdatasync, + libc_getpgid, + libc_getpgrp, + libc_getpid, + libc_getppid, + libc_getpriority, + libc_getrusage, + libc_getsid, + libc_kill, + libc_syslog, + libc_mkdir, + libc_mkdirat, + libc_mkfifo, + libc_mknod, + libc_mknodat, + libc_nanosleep, + libc_open64, + libc_openat, + libc_read, + libc_readlink, + libc_renameat, + libc_setdomainname, + libc_sethostname, + libc_setpgid, + libc_setsid, + libc_settimeofday, + libc_setuid, + libc_setgid, + libc_setpriority, + libc_statx, + libc_sync, + libc_times, + libc_umask, + libc_uname, + libc_unlink, + libc_unlinkat, + libc_ustat, + libc_write, + libc_dup2, + libc_posix_fadvise64, + libc_fchown, + libc_fstat, + libc_fstatat, + libc_fstatfs, + libc_ftruncate, + libc_getegid, + libc_geteuid, + libc_getgid, + libc_getuid, + libc_lchown, + libc_listen, + libc_lstat, + libc_pause, + libc_pread64, + libc_pwrite64, + libc_select, + libc_pselect, + libc_setregid, + libc_setreuid, + libc_shutdown, + libc_splice, + libc_stat, + libc_statfs, + libc_truncate, + libc_bind, + libc_connect, + libc_getgroups, + libc_setgroups, + libc_getsockopt, + libc_setsockopt, + libc_socket, + libc_socketpair, + libc_getpeername, + libc_getsockname, + libc_recvfrom, + libc_sendto, + libc_nrecvmsg, + libc_nsendmsg, + libc_munmap, + libc_madvise, + libc_mprotect, + libc_mlock, + libc_mlockall, + libc_msync, + libc_munlock, + libc_munlockall, + libc_pipe, + libc_poll, + libc_gettimeofday, + libc_time, + libc_utime, + libc_getsystemcfg, + libc_umount, + libc_getrlimit, + libc_lseek, + libc_mmap64 syscallFunc +) + +// Implemented in runtime/syscall_aix.go. +func rawSyscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) +func syscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callutimes(_p0 uintptr, times uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utimes)), 2, _p0, times, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callutimensat(dirfd int, _p0 uintptr, times uintptr, flag int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utimensat)), 4, uintptr(dirfd), _p0, times, uintptr(flag), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetcwd(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getcwd)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callaccept(s int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_accept)), 3, uintptr(s), rsa, addrlen, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetdirent(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getdirent)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callwait4(pid int, status uintptr, options int, rusage uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_wait4)), 4, uintptr(pid), status, uintptr(options), rusage, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callioctl(fd int, req int, arg uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ioctl)), 3, uintptr(fd), uintptr(req), arg, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callioctl_ptr(fd int, req int, arg unsafe.Pointer) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfcntl(fd uintptr, cmd int, arg uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fcntl)), 3, fd, uintptr(cmd), arg, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfsync_range(fd int, how int, start int64, length int64) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fsync_range)), 4, uintptr(fd), uintptr(how), uintptr(start), uintptr(length), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callacct(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_acct)), 1, _p0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callchdir(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_chdir)), 1, _p0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callchroot(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_chroot)), 1, _p0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callclose(fd int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_close)), 1, uintptr(fd), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calldup(oldfd int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_dup)), 1, uintptr(oldfd), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callexit(code int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_exit)), 1, uintptr(code), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfaccessat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_faccessat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(flags), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchdir(fd int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchdir)), 1, uintptr(fd), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchmod(fd int, mode uint32) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchmod)), 2, uintptr(fd), uintptr(mode), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchmodat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchmodat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(flags), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchownat(dirfd int, _p0 uintptr, uid int, gid int, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchownat)), 5, uintptr(dirfd), _p0, uintptr(uid), uintptr(gid), uintptr(flags), 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfdatasync(fd int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fdatasync)), 1, uintptr(fd), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpgid(pid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpgid)), 1, uintptr(pid), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpgrp() (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getpgrp)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetppid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getppid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpriority(which int, who int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getpriority)), 2, uintptr(which), uintptr(who), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetrusage(who int, rusage uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getrusage)), 2, uintptr(who), rusage, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsid(pid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getsid)), 1, uintptr(pid), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callkill(pid int, sig int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_kill)), 2, uintptr(pid), uintptr(sig), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsyslog(typ int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_syslog)), 3, uintptr(typ), _p0, uintptr(_lenp0), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmkdir(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkdir)), 3, uintptr(dirfd), _p0, uintptr(mode), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmkdirat(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkdirat)), 3, uintptr(dirfd), _p0, uintptr(mode), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmkfifo(_p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkfifo)), 2, _p0, uintptr(mode), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmknod(_p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mknod)), 3, _p0, uintptr(mode), uintptr(dev), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmknodat(dirfd int, _p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mknodat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(dev), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callnanosleep(time uintptr, leftover uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nanosleep)), 2, time, leftover, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callopen64(_p0 uintptr, mode int, perm uint32) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_open64)), 3, _p0, uintptr(mode), uintptr(perm), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callopenat(dirfd int, _p0 uintptr, flags int, mode uint32) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_openat)), 4, uintptr(dirfd), _p0, uintptr(flags), uintptr(mode), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callread(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_read)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callreadlink(_p0 uintptr, _p1 uintptr, _lenp1 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_readlink)), 3, _p0, _p1, uintptr(_lenp1), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callrenameat(olddirfd int, _p0 uintptr, newdirfd int, _p1 uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_renameat)), 4, uintptr(olddirfd), _p0, uintptr(newdirfd), _p1, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetdomainname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setdomainname)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsethostname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sethostname)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetpgid(pid int, pgid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setpgid)), 2, uintptr(pid), uintptr(pgid), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetsid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setsid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsettimeofday(tv uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_settimeofday)), 1, tv, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetuid(uid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setuid)), 1, uintptr(uid), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetgid(uid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setgid)), 1, uintptr(uid), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetpriority(which int, who int, prio int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setpriority)), 3, uintptr(which), uintptr(who), uintptr(prio), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callstatx(dirfd int, _p0 uintptr, flags int, mask int, stat uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_statx)), 5, uintptr(dirfd), _p0, uintptr(flags), uintptr(mask), stat, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsync() (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sync)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calltimes(tms uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_times)), 1, tms, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callumask(mask int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_umask)), 1, uintptr(mask), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calluname(buf uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_uname)), 1, buf, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callunlink(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_unlink)), 1, _p0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callunlinkat(dirfd int, _p0 uintptr, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_unlinkat)), 3, uintptr(dirfd), _p0, uintptr(flags), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callustat(dev int, ubuf uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ustat)), 2, uintptr(dev), ubuf, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callwrite(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_write)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calldup2(oldfd int, newfd int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_dup2)), 2, uintptr(oldfd), uintptr(newfd), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callposix_fadvise64(fd int, offset int64, length int64, advice int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_posix_fadvise64)), 4, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchown(fd int, uid int, gid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchown)), 3, uintptr(fd), uintptr(uid), uintptr(gid), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfstat(fd int, stat uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstat)), 2, uintptr(fd), stat, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfstatat(dirfd int, _p0 uintptr, stat uintptr, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstatat)), 4, uintptr(dirfd), _p0, stat, uintptr(flags), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfstatfs(fd int, buf uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstatfs)), 2, uintptr(fd), buf, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callftruncate(fd int, length int64) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ftruncate)), 2, uintptr(fd), uintptr(length), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetegid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getegid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgeteuid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_geteuid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetgid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getgid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetuid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getuid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllchown(_p0 uintptr, uid int, gid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lchown)), 3, _p0, uintptr(uid), uintptr(gid), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllisten(s int, n int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_listen)), 2, uintptr(s), uintptr(n), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lstat)), 2, _p0, stat, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpause() (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pause)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpread64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pread64)), 4, uintptr(fd), _p0, uintptr(_lenp0), uintptr(offset), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpwrite64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pwrite64)), 4, uintptr(fd), _p0, uintptr(_lenp0), uintptr(offset), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_select)), 5, uintptr(nfd), r, w, e, timeout, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr, sigmask uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pselect)), 6, uintptr(nfd), r, w, e, timeout, sigmask) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetregid(rgid int, egid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setregid)), 2, uintptr(rgid), uintptr(egid), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetreuid(ruid int, euid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setreuid)), 2, uintptr(ruid), uintptr(euid), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callshutdown(fd int, how int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_shutdown)), 2, uintptr(fd), uintptr(how), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsplice(rfd int, roff uintptr, wfd int, woff uintptr, len int, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_splice)), 6, uintptr(rfd), roff, uintptr(wfd), woff, uintptr(len), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callstat(_p0 uintptr, statptr uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_stat)), 2, _p0, statptr, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callstatfs(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_statfs)), 2, _p0, buf, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calltruncate(_p0 uintptr, length int64) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_truncate)), 2, _p0, uintptr(length), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callbind(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_bind)), 3, uintptr(s), addr, addrlen, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callconnect(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_connect)), 3, uintptr(s), addr, addrlen, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getgroups)), 2, uintptr(n), list, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setgroups)), 2, uintptr(n), list, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), val, vallen, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), val, vallen, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsocket(domain int, typ int, proto int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_socket)), 3, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsocketpair(domain int, typ int, proto int, fd uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_socketpair)), 4, uintptr(domain), uintptr(typ), uintptr(proto), fd, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpeername(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpeername)), 3, uintptr(fd), rsa, addrlen, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsockname(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getsockname)), 3, uintptr(fd), rsa, addrlen, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callrecvfrom(fd int, _p0 uintptr, _lenp0 int, flags int, from uintptr, fromlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_recvfrom)), 6, uintptr(fd), _p0, uintptr(_lenp0), uintptr(flags), from, fromlen) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsendto(s int, _p0 uintptr, _lenp0 int, flags int, to uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sendto)), 6, uintptr(s), _p0, uintptr(_lenp0), uintptr(flags), to, addrlen) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callnrecvmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nrecvmsg)), 3, uintptr(s), msg, uintptr(flags), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callnsendmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nsendmsg)), 3, uintptr(s), msg, uintptr(flags), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmunmap(addr uintptr, length uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munmap)), 2, addr, length, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmadvise(_p0 uintptr, _lenp0 int, advice int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_madvise)), 3, _p0, uintptr(_lenp0), uintptr(advice), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmprotect(_p0 uintptr, _lenp0 int, prot int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mprotect)), 3, _p0, uintptr(_lenp0), uintptr(prot), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mlock)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmlockall(flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mlockall)), 1, uintptr(flags), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmsync(_p0 uintptr, _lenp0 int, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_msync)), 3, _p0, uintptr(_lenp0), uintptr(flags), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmunlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munlock)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmunlockall() (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munlockall)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpipe(p uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_pipe)), 1, p, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpoll(fds uintptr, nfds int, timeout int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_poll)), 3, fds, uintptr(nfds), uintptr(timeout), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgettimeofday(tv uintptr, tzp uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_gettimeofday)), 2, tv, tzp, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calltime(t uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_time)), 1, t, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callutime(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utime)), 2, _p0, buf, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsystemcfg(label int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getsystemcfg)), 1, uintptr(label), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callumount(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_umount)), 1, _p0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getrlimit)), 2, uintptr(resource), rlim, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllseek(fd int, offset int64, whence int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lseek)), 3, uintptr(fd), uintptr(offset), uintptr(whence), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmmap64(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mmap64)), 6, addr, length, uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go new file mode 100644 index 000000000..0a87450bf --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go @@ -0,0 +1,1069 @@ +// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build aix && ppc64 && gccgo + +package unix + +/* +#include <stdint.h> +int utimes(uintptr_t, uintptr_t); +int utimensat(int, uintptr_t, uintptr_t, int); +int getcwd(uintptr_t, size_t); +int accept(int, uintptr_t, uintptr_t); +int getdirent(int, uintptr_t, size_t); +int wait4(int, uintptr_t, int, uintptr_t); +int ioctl(int, int, uintptr_t); +int fcntl(uintptr_t, int, uintptr_t); +int fsync_range(int, int, long long, long long); +int acct(uintptr_t); +int chdir(uintptr_t); +int chroot(uintptr_t); +int close(int); +int dup(int); +void exit(int); +int faccessat(int, uintptr_t, unsigned int, int); +int fchdir(int); +int fchmod(int, unsigned int); +int fchmodat(int, uintptr_t, unsigned int, int); +int fchownat(int, uintptr_t, int, int, int); +int fdatasync(int); +int getpgid(int); +int getpgrp(); +int getpid(); +int getppid(); +int getpriority(int, int); +int getrusage(int, uintptr_t); +int getsid(int); +int kill(int, int); +int syslog(int, uintptr_t, size_t); +int mkdir(int, uintptr_t, unsigned int); +int mkdirat(int, uintptr_t, unsigned int); +int mkfifo(uintptr_t, unsigned int); +int mknod(uintptr_t, unsigned int, int); +int mknodat(int, uintptr_t, unsigned int, int); +int nanosleep(uintptr_t, uintptr_t); +int open64(uintptr_t, int, unsigned int); +int openat(int, uintptr_t, int, unsigned int); +int read(int, uintptr_t, size_t); +int readlink(uintptr_t, uintptr_t, size_t); +int renameat(int, uintptr_t, int, uintptr_t); +int setdomainname(uintptr_t, size_t); +int sethostname(uintptr_t, size_t); +int setpgid(int, int); +int setsid(); +int settimeofday(uintptr_t); +int setuid(int); +int setgid(int); +int setpriority(int, int, int); +int statx(int, uintptr_t, int, int, uintptr_t); +int sync(); +uintptr_t times(uintptr_t); +int umask(int); +int uname(uintptr_t); +int unlink(uintptr_t); +int unlinkat(int, uintptr_t, int); +int ustat(int, uintptr_t); +int write(int, uintptr_t, size_t); +int dup2(int, int); +int posix_fadvise64(int, long long, long long, int); +int fchown(int, int, int); +int fstat(int, uintptr_t); +int fstatat(int, uintptr_t, uintptr_t, int); +int fstatfs(int, uintptr_t); +int ftruncate(int, long long); +int getegid(); +int geteuid(); +int getgid(); +int getuid(); +int lchown(uintptr_t, int, int); +int listen(int, int); +int lstat(uintptr_t, uintptr_t); +int pause(); +int pread64(int, uintptr_t, size_t, long long); +int pwrite64(int, uintptr_t, size_t, long long); +#define c_select select +int select(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t); +int pselect(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t); +int setregid(int, int); +int setreuid(int, int); +int shutdown(int, int); +long long splice(int, uintptr_t, int, uintptr_t, int, int); +int stat(uintptr_t, uintptr_t); +int statfs(uintptr_t, uintptr_t); +int truncate(uintptr_t, long long); +int bind(int, uintptr_t, uintptr_t); +int connect(int, uintptr_t, uintptr_t); +int getgroups(int, uintptr_t); +int setgroups(int, uintptr_t); +int getsockopt(int, int, int, uintptr_t, uintptr_t); +int setsockopt(int, int, int, uintptr_t, uintptr_t); +int socket(int, int, int); +int socketpair(int, int, int, uintptr_t); +int getpeername(int, uintptr_t, uintptr_t); +int getsockname(int, uintptr_t, uintptr_t); +int recvfrom(int, uintptr_t, size_t, int, uintptr_t, uintptr_t); +int sendto(int, uintptr_t, size_t, int, uintptr_t, uintptr_t); +int nrecvmsg(int, uintptr_t, int); +int nsendmsg(int, uintptr_t, int); +int munmap(uintptr_t, uintptr_t); +int madvise(uintptr_t, size_t, int); +int mprotect(uintptr_t, size_t, int); +int mlock(uintptr_t, size_t); +int mlockall(int); +int msync(uintptr_t, size_t, int); +int munlock(uintptr_t, size_t); +int munlockall(); +int pipe(uintptr_t); +int poll(uintptr_t, int, int); +int gettimeofday(uintptr_t, uintptr_t); +int time(uintptr_t); +int utime(uintptr_t, uintptr_t); +unsigned long long getsystemcfg(int); +int umount(uintptr_t); +int getrlimit(int, uintptr_t); +long long lseek(int, long long, int); +uintptr_t mmap64(uintptr_t, uintptr_t, int, int, int, long long); + +*/ +import "C" +import ( + "syscall" + "unsafe" +) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callutimes(_p0 uintptr, times uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.utimes(C.uintptr_t(_p0), C.uintptr_t(times))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callutimensat(dirfd int, _p0 uintptr, times uintptr, flag int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.utimensat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(times), C.int(flag))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetcwd(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getcwd(C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callaccept(s int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.accept(C.int(s), C.uintptr_t(rsa), C.uintptr_t(addrlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetdirent(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getdirent(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callwait4(pid int, status uintptr, options int, rusage uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.wait4(C.int(pid), C.uintptr_t(status), C.int(options), C.uintptr_t(rusage))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callioctl(fd int, req int, arg uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.ioctl(C.int(fd), C.int(req), C.uintptr_t(arg))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callioctl_ptr(fd int, req int, arg unsafe.Pointer) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.ioctl(C.int(fd), C.int(req), C.uintptr_t(uintptr(arg)))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfcntl(fd uintptr, cmd int, arg uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfsync_range(fd int, how int, start int64, length int64) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fsync_range(C.int(fd), C.int(how), C.longlong(start), C.longlong(length))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callacct(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.acct(C.uintptr_t(_p0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callchdir(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.chdir(C.uintptr_t(_p0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callchroot(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.chroot(C.uintptr_t(_p0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callclose(fd int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.close(C.int(fd))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calldup(oldfd int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.dup(C.int(oldfd))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callexit(code int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.exit(C.int(code))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfaccessat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.faccessat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchdir(fd int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fchdir(C.int(fd))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchmod(fd int, mode uint32) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fchmod(C.int(fd), C.uint(mode))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchmodat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fchmodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchownat(dirfd int, _p0 uintptr, uid int, gid int, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fchownat(C.int(dirfd), C.uintptr_t(_p0), C.int(uid), C.int(gid), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfdatasync(fd int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fdatasync(C.int(fd))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpgid(pid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getpgid(C.int(pid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpgrp() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getpgrp()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getpid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetppid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getppid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpriority(which int, who int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getpriority(C.int(which), C.int(who))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetrusage(who int, rusage uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getrusage(C.int(who), C.uintptr_t(rusage))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsid(pid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getsid(C.int(pid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callkill(pid int, sig int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.kill(C.int(pid), C.int(sig))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsyslog(typ int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.syslog(C.int(typ), C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmkdir(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mkdir(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmkdirat(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mkdirat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmkfifo(_p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mkfifo(C.uintptr_t(_p0), C.uint(mode))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmknod(_p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mknod(C.uintptr_t(_p0), C.uint(mode), C.int(dev))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmknodat(dirfd int, _p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mknodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(dev))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callnanosleep(time uintptr, leftover uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.nanosleep(C.uintptr_t(time), C.uintptr_t(leftover))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callopen64(_p0 uintptr, mode int, perm uint32) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.open64(C.uintptr_t(_p0), C.int(mode), C.uint(perm))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callopenat(dirfd int, _p0 uintptr, flags int, mode uint32) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.openat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.uint(mode))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callread(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.read(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callreadlink(_p0 uintptr, _p1 uintptr, _lenp1 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.readlink(C.uintptr_t(_p0), C.uintptr_t(_p1), C.size_t(_lenp1))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callrenameat(olddirfd int, _p0 uintptr, newdirfd int, _p1 uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.renameat(C.int(olddirfd), C.uintptr_t(_p0), C.int(newdirfd), C.uintptr_t(_p1))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetdomainname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setdomainname(C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsethostname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.sethostname(C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetpgid(pid int, pgid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setpgid(C.int(pid), C.int(pgid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetsid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setsid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsettimeofday(tv uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.settimeofday(C.uintptr_t(tv))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetuid(uid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setuid(C.int(uid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetgid(uid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setgid(C.int(uid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetpriority(which int, who int, prio int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setpriority(C.int(which), C.int(who), C.int(prio))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callstatx(dirfd int, _p0 uintptr, flags int, mask int, stat uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.statx(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.int(mask), C.uintptr_t(stat))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsync() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.sync()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calltimes(tms uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.times(C.uintptr_t(tms))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callumask(mask int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.umask(C.int(mask))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calluname(buf uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.uname(C.uintptr_t(buf))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callunlink(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.unlink(C.uintptr_t(_p0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callunlinkat(dirfd int, _p0 uintptr, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.unlinkat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callustat(dev int, ubuf uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.ustat(C.int(dev), C.uintptr_t(ubuf))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callwrite(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.write(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calldup2(oldfd int, newfd int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.dup2(C.int(oldfd), C.int(newfd))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callposix_fadvise64(fd int, offset int64, length int64, advice int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.posix_fadvise64(C.int(fd), C.longlong(offset), C.longlong(length), C.int(advice))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchown(fd int, uid int, gid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fchown(C.int(fd), C.int(uid), C.int(gid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfstat(fd int, stat uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fstat(C.int(fd), C.uintptr_t(stat))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfstatat(dirfd int, _p0 uintptr, stat uintptr, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fstatat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(stat), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfstatfs(fd int, buf uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fstatfs(C.int(fd), C.uintptr_t(buf))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callftruncate(fd int, length int64) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.ftruncate(C.int(fd), C.longlong(length))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetegid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getegid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgeteuid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.geteuid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetgid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getgid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetuid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getuid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllchown(_p0 uintptr, uid int, gid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.lchown(C.uintptr_t(_p0), C.int(uid), C.int(gid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllisten(s int, n int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.listen(C.int(s), C.int(n))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.lstat(C.uintptr_t(_p0), C.uintptr_t(stat))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpause() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.pause()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpread64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.pread64(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.longlong(offset))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpwrite64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.pwrite64(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.longlong(offset))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.c_select(C.int(nfd), C.uintptr_t(r), C.uintptr_t(w), C.uintptr_t(e), C.uintptr_t(timeout))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr, sigmask uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.pselect(C.int(nfd), C.uintptr_t(r), C.uintptr_t(w), C.uintptr_t(e), C.uintptr_t(timeout), C.uintptr_t(sigmask))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetregid(rgid int, egid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setregid(C.int(rgid), C.int(egid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetreuid(ruid int, euid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setreuid(C.int(ruid), C.int(euid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callshutdown(fd int, how int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.shutdown(C.int(fd), C.int(how))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsplice(rfd int, roff uintptr, wfd int, woff uintptr, len int, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.splice(C.int(rfd), C.uintptr_t(roff), C.int(wfd), C.uintptr_t(woff), C.int(len), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callstat(_p0 uintptr, statptr uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.stat(C.uintptr_t(_p0), C.uintptr_t(statptr))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callstatfs(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.statfs(C.uintptr_t(_p0), C.uintptr_t(buf))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calltruncate(_p0 uintptr, length int64) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.truncate(C.uintptr_t(_p0), C.longlong(length))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callbind(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.bind(C.int(s), C.uintptr_t(addr), C.uintptr_t(addrlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callconnect(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.connect(C.int(s), C.uintptr_t(addr), C.uintptr_t(addrlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getgroups(C.int(n), C.uintptr_t(list))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setgroups(C.int(n), C.uintptr_t(list))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(val), C.uintptr_t(vallen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(val), C.uintptr_t(vallen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsocket(domain int, typ int, proto int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.socket(C.int(domain), C.int(typ), C.int(proto))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsocketpair(domain int, typ int, proto int, fd uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.socketpair(C.int(domain), C.int(typ), C.int(proto), C.uintptr_t(fd))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpeername(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getpeername(C.int(fd), C.uintptr_t(rsa), C.uintptr_t(addrlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsockname(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getsockname(C.int(fd), C.uintptr_t(rsa), C.uintptr_t(addrlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callrecvfrom(fd int, _p0 uintptr, _lenp0 int, flags int, from uintptr, fromlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.recvfrom(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags), C.uintptr_t(from), C.uintptr_t(fromlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsendto(s int, _p0 uintptr, _lenp0 int, flags int, to uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.sendto(C.int(s), C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags), C.uintptr_t(to), C.uintptr_t(addrlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callnrecvmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.nrecvmsg(C.int(s), C.uintptr_t(msg), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callnsendmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.nsendmsg(C.int(s), C.uintptr_t(msg), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmunmap(addr uintptr, length uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.munmap(C.uintptr_t(addr), C.uintptr_t(length))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmadvise(_p0 uintptr, _lenp0 int, advice int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.madvise(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(advice))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmprotect(_p0 uintptr, _lenp0 int, prot int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mprotect(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(prot))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mlock(C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmlockall(flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mlockall(C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmsync(_p0 uintptr, _lenp0 int, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.msync(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmunlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.munlock(C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmunlockall() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.munlockall()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpipe(p uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.pipe(C.uintptr_t(p))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpoll(fds uintptr, nfds int, timeout int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.poll(C.uintptr_t(fds), C.int(nfds), C.int(timeout))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgettimeofday(tv uintptr, tzp uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.gettimeofday(C.uintptr_t(tv), C.uintptr_t(tzp))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calltime(t uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.time(C.uintptr_t(t))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callutime(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.utime(C.uintptr_t(_p0), C.uintptr_t(buf))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsystemcfg(label int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getsystemcfg(C.int(label))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callumount(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.umount(C.uintptr_t(_p0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getrlimit(C.int(resource), C.uintptr_t(rlim))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllseek(fd int, offset int64, whence int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.lseek(C.int(fd), C.longlong(offset), C.int(whence))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmmap64(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mmap64(C.uintptr_t(addr), C.uintptr_t(length), C.int(prot), C.int(flags), C.int(fd), C.longlong(offset))) + e1 = syscall.GetErrno() + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go new file mode 100644 index 000000000..813c05b66 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go @@ -0,0 +1,2728 @@ +// go run mksyscall.go -tags darwin,amd64 syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build darwin && amd64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgroups getgroups "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgroups setgroups "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_wait4_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_wait4 wait4 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_accept_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_accept accept "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_bind_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_bind bind "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_connect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_connect connect "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socket_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socket socket "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockopt getsockopt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsockopt setsockopt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpeername_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpeername getpeername "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockname_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockname getsockname "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shutdown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shutdown shutdown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socketpair_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socketpair socketpair "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvfrom_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvfrom recvfrom "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendto_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendto sendto "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvmsg recvmsg "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendmsg sendmsg "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kevent_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kevent kevent "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimes utimes "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_futimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_futimes futimes "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_poll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_poll poll "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_madvise_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_madvise madvise "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlock mlock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlockall mlockall "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mprotect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mprotect mprotect "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_msync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_msync msync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlock munlock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlockall munlockall "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func closedir(dir uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_closedir_trampoline_addr, uintptr(dir), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_closedir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_closedir closedir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) { + r0, _, _ := syscall_syscall(libc_readdir_r_trampoline_addr, uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result))) + res = Errno(r0) + return +} + +var libc_readdir_r_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readdir_r readdir_r "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall(libc_pipe_trampoline_addr, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pipe_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pipe pipe "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(libc_getxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getxattr_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getxattr getxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(libc_fgetxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fgetxattr_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fgetxattr fgetxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_setxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setxattr_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setxattr setxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fsetxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fsetxattr_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fsetxattr fsetxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func removexattr(path string, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_removexattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_removexattr_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_removexattr removexattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_fremovexattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fremovexattr_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fremovexattr fremovexattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(libc_listxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_listxattr_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_listxattr listxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := syscall_syscall6(libc_flistxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_flistxattr_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_flistxattr flistxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimensat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimensat utimensat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fcntl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fcntl fcntl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kill(pid int, signum int, posix int) (err error) { + _, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), uintptr(posix)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kill_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kill kill "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ioctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func renamexNp(from string, to string, flag uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_renamex_np_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flag)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_renamex_np_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renamex_np renamex_np "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func renameatxNp(fromfd int, from string, tofd int, to string, flag uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_renameatx_np_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), uintptr(flag), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_renameatx_np_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renameatx_np renameatx_np "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sysctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sysctl sysctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pthread_chdir_np(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_pthread_chdir_np_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pthread_chdir_np_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pthread_chdir_np pthread_chdir_np "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pthread_fchdir_np(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_pthread_fchdir_np_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pthread_fchdir_np_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pthread_fchdir_np pthread_fchdir_np "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connectx(fd int, endpoints *SaEndpoints, associd SaeAssocID, flags uint32, iov []Iovec, n *uintptr, connid *SaeConnID) (err error) { + var _p0 unsafe.Pointer + if len(iov) > 0 { + _p0 = unsafe.Pointer(&iov[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall9(libc_connectx_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(endpoints)), uintptr(associd), uintptr(flags), uintptr(_p0), uintptr(len(iov)), uintptr(unsafe.Pointer(n)), uintptr(unsafe.Pointer(connid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_connectx_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_connectx connectx "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) { + _, _, e1 := syscall_syscall6(libc_sendfile_trampoline_addr, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendfile_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendfile sendfile "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmat(id int, addr uintptr, flag int) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall(libc_shmat_trampoline_addr, uintptr(id), uintptr(addr), uintptr(flag)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shmat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shmat shmat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) { + r0, _, e1 := syscall_syscall(libc_shmctl_trampoline_addr, uintptr(id), uintptr(cmd), uintptr(unsafe.Pointer(buf))) + result = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shmctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shmctl shmctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmdt(addr uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_shmdt_trampoline_addr, uintptr(addr), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shmdt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shmdt shmdt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmget(key int, size int, flag int) (id int, err error) { + r0, _, e1 := syscall_syscall(libc_shmget_trampoline_addr, uintptr(key), uintptr(size), uintptr(flag)) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shmget_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shmget shmget "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_access_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_access access "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_adjtime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_adjtime adjtime "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chdir chdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chflags chflags "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chmod chmod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chown chown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chroot_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chroot chroot "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_clock_gettime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_clock_gettime clock_gettime "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_close_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_close close "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Clonefile(src string, dst string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(src) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dst) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_clonefile_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_clonefile_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_clonefile clonefile "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Clonefileat(srcDirfd int, src string, dstDirfd int, dst string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(src) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dst) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_clonefileat_trampoline_addr, uintptr(srcDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_clonefileat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_clonefileat clonefileat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup dup "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup2 dup2 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exchangedata(path1 string, path2 string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path1) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(path2) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_exchangedata_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_exchangedata_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_exchangedata exchangedata "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + syscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0) + return +} + +var libc_exit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_exit exit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_faccessat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_faccessat faccessat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchdir fchdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchflags fchflags "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmod fchmod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmodat fchmodat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchown fchown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchownat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchownat fchownat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fclonefileat(srcDirfd int, dstDirfd int, dst string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(dst) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fclonefileat_trampoline_addr, uintptr(srcDirfd), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fclonefileat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fclonefileat fclonefileat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_flock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_flock flock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fpathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fpathconf fpathconf "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fsync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fsync fsync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ftruncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ftruncate ftruncate "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getcwd_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getcwd getcwd "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := syscall_syscall(libc_getdtablesize_trampoline_addr, 0, 0, 0) + size = int(r0) + return +} + +var libc_getdtablesize_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getdtablesize getdtablesize "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0) + egid = int(r0) + return +} + +var libc_getegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getegid getegid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_geteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_geteuid geteuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0) + gid = int(r0) + return +} + +var libc_getgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgid getgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgid getpgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0) + pgrp = int(r0) + return +} + +var libc_getpgrp_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgrp getpgrp "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0) + pid = int(r0) + return +} + +var libc_getpid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpid getpid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0) + ppid = int(r0) + return +} + +var libc_getppid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getppid getppid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpriority getpriority "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrlimit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrlimit getrlimit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrusage_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrusage getrusage "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsid getsid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_gettimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_getuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getuid getuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := syscall_rawSyscall(libc_issetugid_trampoline_addr, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +var libc_issetugid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_issetugid issetugid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kqueue_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kqueue kqueue "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lchown lchown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_link_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_link link "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_linkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_linkat linkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_listen_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_listen listen "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdir mkdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdirat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdirat mkdirat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkfifo_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifo mkfifo "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mknod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknod mknod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_open_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_open open "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_openat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_openat openat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pathconf pathconf "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pread_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pread pread "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pwrite_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pwrite pwrite "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_read_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_read read "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlink readlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlinkat readlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rename_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rename rename "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_renameat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renameat renameat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_revoke_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_revoke revoke "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rmdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rmdir rmdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lseek_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lseek lseek "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_select_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_select select "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setattrlist(path string, attrlist *Attrlist, attrBuf []byte, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(attrBuf) > 0 { + _p1 = unsafe.Pointer(&attrBuf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_setattrlist_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(attrlist)), uintptr(_p1), uintptr(len(attrBuf)), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setattrlist_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setattrlist setattrlist "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := syscall_syscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setegid setegid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_seteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_seteuid seteuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgid setgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setlogin_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setlogin setlogin "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpgid setpgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpriority setpriority "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setprivexec(flag int) (err error) { + _, _, e1 := syscall_syscall(libc_setprivexec_trampoline_addr, uintptr(flag), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setprivexec_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setprivexec setprivexec "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setregid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setregid setregid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setreuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setreuid setreuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsid setsid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_settimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_settimeofday settimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setuid setuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlink symlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlinkat symlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sync sync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_truncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_truncate truncate "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +var libc_umask_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_umask umask "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_undelete_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_undelete_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_undelete undelete "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlink unlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlinkat unlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unmount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unmount unmount "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_write_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_write write "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mmap mmap "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munmap munmap "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readv(fd int, iovecs []Iovec) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovecs) > 0 { + _p0 = unsafe.Pointer(&iovecs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_readv_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readv_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readv readv "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func preadv(fd int, iovecs []Iovec, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovecs) > 0 { + _p0 = unsafe.Pointer(&iovecs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_preadv_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_preadv_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_preadv preadv "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writev(fd int, iovecs []Iovec) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovecs) > 0 { + _p0 = unsafe.Pointer(&iovecs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_writev_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_writev_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_writev writev "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwritev(fd int, iovecs []Iovec, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovecs) > 0 { + _p0 = unsafe.Pointer(&iovecs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pwritev_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pwritev_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pwritev pwritev "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstat64_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstat64_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstat64 fstat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fstatat64_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatat64_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatat64 fstatat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstatfs64_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatfs64_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatfs64 fstatfs64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_getfsstat64_trampoline_addr, uintptr(buf), uintptr(size), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getfsstat64_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getfsstat64 getfsstat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lstat64_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lstat64_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lstat64 lstat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := syscall_syscall6(libc_ptrace_trampoline_addr, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ptrace_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_stat64_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_stat64_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_stat64 stat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_statfs64_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_statfs64_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_statfs64 statfs64 "/usr/lib/libSystem.B.dylib" diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s b/tests/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s new file mode 100644 index 000000000..fda328582 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s @@ -0,0 +1,799 @@ +// go run mkasm.go darwin amd64 +// Code generated by the command above; DO NOT EDIT. + +#include "textflag.h" + +TEXT libc_fdopendir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fdopendir(SB) +GLOBL ·libc_fdopendir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fdopendir_trampoline_addr(SB)/8, $libc_fdopendir_trampoline<>(SB) + +TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgroups(SB) +GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB) + +TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgroups(SB) +GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB) + +TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_wait4(SB) +GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $8 +DATA ·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB) + +TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_accept(SB) +GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $8 +DATA ·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB) + +TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_bind(SB) +GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $8 +DATA ·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB) + +TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_connect(SB) +GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB) + +TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socket(SB) +GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB) + +TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockopt(SB) +GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB) + +TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsockopt(SB) +GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB) + +TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpeername(SB) +GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB) + +TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockname(SB) +GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB) + +TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shutdown(SB) +GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB) + +TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socketpair(SB) +GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB) + +TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvfrom(SB) +GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB) + +TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendto(SB) +GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB) + +TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvmsg(SB) +GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB) + +TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendmsg(SB) +GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB) + +TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kevent(SB) +GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB) + +TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimes(SB) +GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB) + +TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_futimes(SB) +GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB) + +TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_poll(SB) +GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $8 +DATA ·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB) + +TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_madvise(SB) +GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $8 +DATA ·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB) + +TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlock(SB) +GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB) + +TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlockall(SB) +GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB) + +TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mprotect(SB) +GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB) + +TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_msync(SB) +GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB) + +TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlock(SB) +GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB) + +TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlockall(SB) +GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB) + +TEXT libc_closedir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_closedir(SB) +GLOBL ·libc_closedir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_closedir_trampoline_addr(SB)/8, $libc_closedir_trampoline<>(SB) + +TEXT libc_readdir_r_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readdir_r(SB) +GLOBL ·libc_readdir_r_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readdir_r_trampoline_addr(SB)/8, $libc_readdir_r_trampoline<>(SB) + +TEXT libc_pipe_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pipe(SB) +GLOBL ·libc_pipe_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pipe_trampoline_addr(SB)/8, $libc_pipe_trampoline<>(SB) + +TEXT libc_getxattr_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getxattr(SB) +GLOBL ·libc_getxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getxattr_trampoline_addr(SB)/8, $libc_getxattr_trampoline<>(SB) + +TEXT libc_fgetxattr_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fgetxattr(SB) +GLOBL ·libc_fgetxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fgetxattr_trampoline_addr(SB)/8, $libc_fgetxattr_trampoline<>(SB) + +TEXT libc_setxattr_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setxattr(SB) +GLOBL ·libc_setxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setxattr_trampoline_addr(SB)/8, $libc_setxattr_trampoline<>(SB) + +TEXT libc_fsetxattr_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fsetxattr(SB) +GLOBL ·libc_fsetxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fsetxattr_trampoline_addr(SB)/8, $libc_fsetxattr_trampoline<>(SB) + +TEXT libc_removexattr_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_removexattr(SB) +GLOBL ·libc_removexattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_removexattr_trampoline_addr(SB)/8, $libc_removexattr_trampoline<>(SB) + +TEXT libc_fremovexattr_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fremovexattr(SB) +GLOBL ·libc_fremovexattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fremovexattr_trampoline_addr(SB)/8, $libc_fremovexattr_trampoline<>(SB) + +TEXT libc_listxattr_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_listxattr(SB) +GLOBL ·libc_listxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_listxattr_trampoline_addr(SB)/8, $libc_listxattr_trampoline<>(SB) + +TEXT libc_flistxattr_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_flistxattr(SB) +GLOBL ·libc_flistxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_flistxattr_trampoline_addr(SB)/8, $libc_flistxattr_trampoline<>(SB) + +TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimensat(SB) +GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB) + +TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fcntl(SB) +GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB) + +TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kill(SB) +GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB) + +TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ioctl(SB) +GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB) + +TEXT libc_renamex_np_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renamex_np(SB) +GLOBL ·libc_renamex_np_trampoline_addr(SB), RODATA, $8 +DATA ·libc_renamex_np_trampoline_addr(SB)/8, $libc_renamex_np_trampoline<>(SB) + +TEXT libc_renameatx_np_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renameatx_np(SB) +GLOBL ·libc_renameatx_np_trampoline_addr(SB), RODATA, $8 +DATA ·libc_renameatx_np_trampoline_addr(SB)/8, $libc_renameatx_np_trampoline<>(SB) + +TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sysctl(SB) +GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) + +TEXT libc_pthread_chdir_np_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pthread_chdir_np(SB) +GLOBL ·libc_pthread_chdir_np_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pthread_chdir_np_trampoline_addr(SB)/8, $libc_pthread_chdir_np_trampoline<>(SB) + +TEXT libc_pthread_fchdir_np_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pthread_fchdir_np(SB) +GLOBL ·libc_pthread_fchdir_np_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pthread_fchdir_np_trampoline_addr(SB)/8, $libc_pthread_fchdir_np_trampoline<>(SB) + +TEXT libc_connectx_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_connectx(SB) +GLOBL ·libc_connectx_trampoline_addr(SB), RODATA, $8 +DATA ·libc_connectx_trampoline_addr(SB)/8, $libc_connectx_trampoline<>(SB) + +TEXT libc_sendfile_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendfile(SB) +GLOBL ·libc_sendfile_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendfile_trampoline_addr(SB)/8, $libc_sendfile_trampoline<>(SB) + +TEXT libc_shmat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shmat(SB) +GLOBL ·libc_shmat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shmat_trampoline_addr(SB)/8, $libc_shmat_trampoline<>(SB) + +TEXT libc_shmctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shmctl(SB) +GLOBL ·libc_shmctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shmctl_trampoline_addr(SB)/8, $libc_shmctl_trampoline<>(SB) + +TEXT libc_shmdt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shmdt(SB) +GLOBL ·libc_shmdt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shmdt_trampoline_addr(SB)/8, $libc_shmdt_trampoline<>(SB) + +TEXT libc_shmget_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shmget(SB) +GLOBL ·libc_shmget_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shmget_trampoline_addr(SB)/8, $libc_shmget_trampoline<>(SB) + +TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_access(SB) +GLOBL ·libc_access_trampoline_addr(SB), RODATA, $8 +DATA ·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB) + +TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_adjtime(SB) +GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $8 +DATA ·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB) + +TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chdir(SB) +GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB) + +TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chflags(SB) +GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB) + +TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chmod(SB) +GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB) + +TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chown(SB) +GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB) + +TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chroot(SB) +GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB) + +TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_clock_gettime(SB) +GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $8 +DATA ·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB) + +TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_close(SB) +GLOBL ·libc_close_trampoline_addr(SB), RODATA, $8 +DATA ·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB) + +TEXT libc_clonefile_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_clonefile(SB) +GLOBL ·libc_clonefile_trampoline_addr(SB), RODATA, $8 +DATA ·libc_clonefile_trampoline_addr(SB)/8, $libc_clonefile_trampoline<>(SB) + +TEXT libc_clonefileat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_clonefileat(SB) +GLOBL ·libc_clonefileat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_clonefileat_trampoline_addr(SB)/8, $libc_clonefileat_trampoline<>(SB) + +TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup(SB) +GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB) + +TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup2(SB) +GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB) + +TEXT libc_exchangedata_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_exchangedata(SB) +GLOBL ·libc_exchangedata_trampoline_addr(SB), RODATA, $8 +DATA ·libc_exchangedata_trampoline_addr(SB)/8, $libc_exchangedata_trampoline<>(SB) + +TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_exit(SB) +GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB) + +TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_faccessat(SB) +GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB) + +TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchdir(SB) +GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB) + +TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchflags(SB) +GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB) + +TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmod(SB) +GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB) + +TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmodat(SB) +GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB) + +TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchown(SB) +GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB) + +TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchownat(SB) +GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB) + +TEXT libc_fclonefileat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fclonefileat(SB) +GLOBL ·libc_fclonefileat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fclonefileat_trampoline_addr(SB)/8, $libc_fclonefileat_trampoline<>(SB) + +TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_flock(SB) +GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB) + +TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fpathconf(SB) +GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB) + +TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fsync(SB) +GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB) + +TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ftruncate(SB) +GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB) + +TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getcwd(SB) +GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB) + +TEXT libc_getdtablesize_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getdtablesize(SB) +GLOBL ·libc_getdtablesize_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getdtablesize_trampoline_addr(SB)/8, $libc_getdtablesize_trampoline<>(SB) + +TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getegid(SB) +GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB) + +TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_geteuid(SB) +GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB) + +TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgid(SB) +GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB) + +TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgid(SB) +GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB) + +TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgrp(SB) +GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB) + +TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpid(SB) +GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB) + +TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getppid(SB) +GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB) + +TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpriority(SB) +GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB) + +TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrlimit(SB) +GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB) + +TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrusage(SB) +GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB) + +TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsid(SB) +GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB) + +TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_gettimeofday(SB) +GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB) + +TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getuid(SB) +GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB) + +TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_issetugid(SB) +GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB) + +TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kqueue(SB) +GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB) + +TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lchown(SB) +GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB) + +TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_link(SB) +GLOBL ·libc_link_trampoline_addr(SB), RODATA, $8 +DATA ·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB) + +TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_linkat(SB) +GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB) + +TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_listen(SB) +GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $8 +DATA ·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB) + +TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdir(SB) +GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB) + +TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdirat(SB) +GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB) + +TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifo(SB) +GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB) + +TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknod(SB) +GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB) + +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mount(SB) +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB) + +TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_open(SB) +GLOBL ·libc_open_trampoline_addr(SB), RODATA, $8 +DATA ·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB) + +TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_openat(SB) +GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB) + +TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pathconf(SB) +GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB) + +TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pread(SB) +GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB) + +TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pwrite(SB) +GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB) + +TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_read(SB) +GLOBL ·libc_read_trampoline_addr(SB), RODATA, $8 +DATA ·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB) + +TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlink(SB) +GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB) + +TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlinkat(SB) +GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB) + +TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rename(SB) +GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB) + +TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renameat(SB) +GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB) + +TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_revoke(SB) +GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $8 +DATA ·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB) + +TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rmdir(SB) +GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB) + +TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lseek(SB) +GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB) + +TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_select(SB) +GLOBL ·libc_select_trampoline_addr(SB), RODATA, $8 +DATA ·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB) + +TEXT libc_setattrlist_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setattrlist(SB) +GLOBL ·libc_setattrlist_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setattrlist_trampoline_addr(SB)/8, $libc_setattrlist_trampoline<>(SB) + +TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setegid(SB) +GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB) + +TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_seteuid(SB) +GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB) + +TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgid(SB) +GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB) + +TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setlogin(SB) +GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB) + +TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpgid(SB) +GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB) + +TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpriority(SB) +GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB) + +TEXT libc_setprivexec_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setprivexec(SB) +GLOBL ·libc_setprivexec_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setprivexec_trampoline_addr(SB)/8, $libc_setprivexec_trampoline<>(SB) + +TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setregid(SB) +GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB) + +TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setreuid(SB) +GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB) + +TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsid(SB) +GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB) + +TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_settimeofday(SB) +GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB) + +TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setuid(SB) +GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB) + +TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlink(SB) +GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB) + +TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlinkat(SB) +GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB) + +TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sync(SB) +GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB) + +TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_truncate(SB) +GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB) + +TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_umask(SB) +GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $8 +DATA ·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB) + +TEXT libc_undelete_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_undelete(SB) +GLOBL ·libc_undelete_trampoline_addr(SB), RODATA, $8 +DATA ·libc_undelete_trampoline_addr(SB)/8, $libc_undelete_trampoline<>(SB) + +TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlink(SB) +GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB) + +TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlinkat(SB) +GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB) + +TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unmount(SB) +GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB) + +TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_write(SB) +GLOBL ·libc_write_trampoline_addr(SB), RODATA, $8 +DATA ·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB) + +TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mmap(SB) +GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB) + +TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munmap(SB) +GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) + +TEXT libc_readv_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readv(SB) +GLOBL ·libc_readv_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readv_trampoline_addr(SB)/8, $libc_readv_trampoline<>(SB) + +TEXT libc_preadv_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_preadv(SB) +GLOBL ·libc_preadv_trampoline_addr(SB), RODATA, $8 +DATA ·libc_preadv_trampoline_addr(SB)/8, $libc_preadv_trampoline<>(SB) + +TEXT libc_writev_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_writev(SB) +GLOBL ·libc_writev_trampoline_addr(SB), RODATA, $8 +DATA ·libc_writev_trampoline_addr(SB)/8, $libc_writev_trampoline<>(SB) + +TEXT libc_pwritev_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pwritev(SB) +GLOBL ·libc_pwritev_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pwritev_trampoline_addr(SB)/8, $libc_pwritev_trampoline<>(SB) + +TEXT libc_fstat64_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstat64(SB) +GLOBL ·libc_fstat64_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstat64_trampoline_addr(SB)/8, $libc_fstat64_trampoline<>(SB) + +TEXT libc_fstatat64_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatat64(SB) +GLOBL ·libc_fstatat64_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatat64_trampoline_addr(SB)/8, $libc_fstatat64_trampoline<>(SB) + +TEXT libc_fstatfs64_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatfs64(SB) +GLOBL ·libc_fstatfs64_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatfs64_trampoline_addr(SB)/8, $libc_fstatfs64_trampoline<>(SB) + +TEXT libc_getfsstat64_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getfsstat64(SB) +GLOBL ·libc_getfsstat64_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getfsstat64_trampoline_addr(SB)/8, $libc_getfsstat64_trampoline<>(SB) + +TEXT libc_lstat64_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lstat64(SB) +GLOBL ·libc_lstat64_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lstat64_trampoline_addr(SB)/8, $libc_lstat64_trampoline<>(SB) + +TEXT libc_ptrace_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ptrace(SB) +GLOBL ·libc_ptrace_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ptrace_trampoline_addr(SB)/8, $libc_ptrace_trampoline<>(SB) + +TEXT libc_stat64_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_stat64(SB) +GLOBL ·libc_stat64_trampoline_addr(SB), RODATA, $8 +DATA ·libc_stat64_trampoline_addr(SB)/8, $libc_stat64_trampoline<>(SB) + +TEXT libc_statfs64_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_statfs64(SB) +GLOBL ·libc_statfs64_trampoline_addr(SB), RODATA, $8 +DATA ·libc_statfs64_trampoline_addr(SB)/8, $libc_statfs64_trampoline<>(SB) diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go new file mode 100644 index 000000000..e6f58f3c6 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go @@ -0,0 +1,2728 @@ +// go run mksyscall.go -tags darwin,arm64 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build darwin && arm64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgroups getgroups "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgroups setgroups "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_wait4_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_wait4 wait4 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_accept_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_accept accept "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_bind_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_bind bind "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_connect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_connect connect "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socket_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socket socket "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockopt getsockopt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsockopt setsockopt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpeername_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpeername getpeername "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockname_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockname getsockname "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shutdown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shutdown shutdown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socketpair_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socketpair socketpair "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvfrom_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvfrom recvfrom "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendto_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendto sendto "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvmsg recvmsg "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendmsg sendmsg "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kevent_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kevent kevent "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimes utimes "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_futimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_futimes futimes "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_poll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_poll poll "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_madvise_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_madvise madvise "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlock mlock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlockall mlockall "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mprotect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mprotect mprotect "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_msync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_msync msync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlock munlock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlockall munlockall "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func closedir(dir uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_closedir_trampoline_addr, uintptr(dir), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_closedir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_closedir closedir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) { + r0, _, _ := syscall_syscall(libc_readdir_r_trampoline_addr, uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result))) + res = Errno(r0) + return +} + +var libc_readdir_r_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readdir_r readdir_r "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall(libc_pipe_trampoline_addr, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pipe_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pipe pipe "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(libc_getxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getxattr_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getxattr getxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(libc_fgetxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fgetxattr_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fgetxattr fgetxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_setxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setxattr_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setxattr setxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fsetxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fsetxattr_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fsetxattr fsetxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func removexattr(path string, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_removexattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_removexattr_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_removexattr removexattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_fremovexattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fremovexattr_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fremovexattr fremovexattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(libc_listxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_listxattr_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_listxattr listxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := syscall_syscall6(libc_flistxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_flistxattr_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_flistxattr flistxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimensat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimensat utimensat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fcntl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fcntl fcntl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kill(pid int, signum int, posix int) (err error) { + _, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), uintptr(posix)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kill_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kill kill "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ioctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func renamexNp(from string, to string, flag uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_renamex_np_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flag)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_renamex_np_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renamex_np renamex_np "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func renameatxNp(fromfd int, from string, tofd int, to string, flag uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_renameatx_np_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), uintptr(flag), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_renameatx_np_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renameatx_np renameatx_np "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sysctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sysctl sysctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pthread_chdir_np(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_pthread_chdir_np_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pthread_chdir_np_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pthread_chdir_np pthread_chdir_np "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pthread_fchdir_np(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_pthread_fchdir_np_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pthread_fchdir_np_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pthread_fchdir_np pthread_fchdir_np "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connectx(fd int, endpoints *SaEndpoints, associd SaeAssocID, flags uint32, iov []Iovec, n *uintptr, connid *SaeConnID) (err error) { + var _p0 unsafe.Pointer + if len(iov) > 0 { + _p0 = unsafe.Pointer(&iov[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall9(libc_connectx_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(endpoints)), uintptr(associd), uintptr(flags), uintptr(_p0), uintptr(len(iov)), uintptr(unsafe.Pointer(n)), uintptr(unsafe.Pointer(connid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_connectx_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_connectx connectx "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) { + _, _, e1 := syscall_syscall6(libc_sendfile_trampoline_addr, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendfile_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendfile sendfile "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmat(id int, addr uintptr, flag int) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall(libc_shmat_trampoline_addr, uintptr(id), uintptr(addr), uintptr(flag)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shmat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shmat shmat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) { + r0, _, e1 := syscall_syscall(libc_shmctl_trampoline_addr, uintptr(id), uintptr(cmd), uintptr(unsafe.Pointer(buf))) + result = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shmctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shmctl shmctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmdt(addr uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_shmdt_trampoline_addr, uintptr(addr), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shmdt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shmdt shmdt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmget(key int, size int, flag int) (id int, err error) { + r0, _, e1 := syscall_syscall(libc_shmget_trampoline_addr, uintptr(key), uintptr(size), uintptr(flag)) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shmget_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shmget shmget "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_access_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_access access "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_adjtime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_adjtime adjtime "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chdir chdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chflags chflags "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chmod chmod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chown chown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chroot_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chroot chroot "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_clock_gettime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_clock_gettime clock_gettime "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_close_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_close close "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Clonefile(src string, dst string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(src) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dst) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_clonefile_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_clonefile_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_clonefile clonefile "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Clonefileat(srcDirfd int, src string, dstDirfd int, dst string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(src) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dst) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_clonefileat_trampoline_addr, uintptr(srcDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_clonefileat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_clonefileat clonefileat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup dup "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup2 dup2 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exchangedata(path1 string, path2 string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path1) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(path2) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_exchangedata_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_exchangedata_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_exchangedata exchangedata "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + syscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0) + return +} + +var libc_exit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_exit exit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_faccessat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_faccessat faccessat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchdir fchdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchflags fchflags "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmod fchmod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmodat fchmodat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchown fchown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchownat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchownat fchownat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fclonefileat(srcDirfd int, dstDirfd int, dst string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(dst) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fclonefileat_trampoline_addr, uintptr(srcDirfd), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fclonefileat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fclonefileat fclonefileat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_flock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_flock flock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fpathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fpathconf fpathconf "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fsync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fsync fsync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ftruncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ftruncate ftruncate "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getcwd_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getcwd getcwd "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := syscall_syscall(libc_getdtablesize_trampoline_addr, 0, 0, 0) + size = int(r0) + return +} + +var libc_getdtablesize_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getdtablesize getdtablesize "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0) + egid = int(r0) + return +} + +var libc_getegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getegid getegid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_geteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_geteuid geteuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0) + gid = int(r0) + return +} + +var libc_getgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgid getgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgid getpgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0) + pgrp = int(r0) + return +} + +var libc_getpgrp_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgrp getpgrp "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0) + pid = int(r0) + return +} + +var libc_getpid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpid getpid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0) + ppid = int(r0) + return +} + +var libc_getppid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getppid getppid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpriority getpriority "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrlimit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrlimit getrlimit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrusage_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrusage getrusage "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsid getsid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_gettimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_getuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getuid getuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := syscall_rawSyscall(libc_issetugid_trampoline_addr, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +var libc_issetugid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_issetugid issetugid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kqueue_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kqueue kqueue "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lchown lchown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_link_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_link link "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_linkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_linkat linkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_listen_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_listen listen "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdir mkdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdirat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdirat mkdirat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkfifo_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifo mkfifo "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mknod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknod mknod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_open_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_open open "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_openat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_openat openat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pathconf pathconf "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pread_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pread pread "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pwrite_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pwrite pwrite "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_read_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_read read "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlink readlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlinkat readlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rename_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rename rename "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_renameat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renameat renameat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_revoke_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_revoke revoke "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rmdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rmdir rmdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lseek_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lseek lseek "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_select_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_select select "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setattrlist(path string, attrlist *Attrlist, attrBuf []byte, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(attrBuf) > 0 { + _p1 = unsafe.Pointer(&attrBuf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_setattrlist_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(attrlist)), uintptr(_p1), uintptr(len(attrBuf)), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setattrlist_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setattrlist setattrlist "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := syscall_syscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setegid setegid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_seteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_seteuid seteuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgid setgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setlogin_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setlogin setlogin "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpgid setpgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpriority setpriority "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setprivexec(flag int) (err error) { + _, _, e1 := syscall_syscall(libc_setprivexec_trampoline_addr, uintptr(flag), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setprivexec_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setprivexec setprivexec "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setregid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setregid setregid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setreuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setreuid setreuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsid setsid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_settimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_settimeofday settimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setuid setuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlink symlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlinkat symlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sync sync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_truncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_truncate truncate "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +var libc_umask_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_umask umask "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_undelete_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_undelete_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_undelete undelete "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlink unlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlinkat unlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unmount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unmount unmount "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_write_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_write write "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mmap mmap "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munmap munmap "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readv(fd int, iovecs []Iovec) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovecs) > 0 { + _p0 = unsafe.Pointer(&iovecs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_readv_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readv_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readv readv "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func preadv(fd int, iovecs []Iovec, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovecs) > 0 { + _p0 = unsafe.Pointer(&iovecs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_preadv_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_preadv_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_preadv preadv "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writev(fd int, iovecs []Iovec) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovecs) > 0 { + _p0 = unsafe.Pointer(&iovecs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_writev_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_writev_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_writev writev "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwritev(fd int, iovecs []Iovec, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovecs) > 0 { + _p0 = unsafe.Pointer(&iovecs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pwritev_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pwritev_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pwritev pwritev "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstat fstat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatat fstatat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatfs fstatfs "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(buf), uintptr(size), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getfsstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getfsstat getfsstat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lstat lstat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := syscall_syscall6(libc_ptrace_trampoline_addr, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ptrace_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_stat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_stat stat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_statfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_statfs statfs "/usr/lib/libSystem.B.dylib" diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s b/tests/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s new file mode 100644 index 000000000..7f8998b90 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s @@ -0,0 +1,799 @@ +// go run mkasm.go darwin arm64 +// Code generated by the command above; DO NOT EDIT. + +#include "textflag.h" + +TEXT libc_fdopendir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fdopendir(SB) +GLOBL ·libc_fdopendir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fdopendir_trampoline_addr(SB)/8, $libc_fdopendir_trampoline<>(SB) + +TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgroups(SB) +GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB) + +TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgroups(SB) +GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB) + +TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_wait4(SB) +GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $8 +DATA ·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB) + +TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_accept(SB) +GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $8 +DATA ·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB) + +TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_bind(SB) +GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $8 +DATA ·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB) + +TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_connect(SB) +GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB) + +TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socket(SB) +GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB) + +TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockopt(SB) +GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB) + +TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsockopt(SB) +GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB) + +TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpeername(SB) +GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB) + +TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockname(SB) +GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB) + +TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shutdown(SB) +GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB) + +TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socketpair(SB) +GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB) + +TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvfrom(SB) +GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB) + +TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendto(SB) +GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB) + +TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvmsg(SB) +GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB) + +TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendmsg(SB) +GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB) + +TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kevent(SB) +GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB) + +TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimes(SB) +GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB) + +TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_futimes(SB) +GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB) + +TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_poll(SB) +GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $8 +DATA ·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB) + +TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_madvise(SB) +GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $8 +DATA ·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB) + +TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlock(SB) +GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB) + +TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlockall(SB) +GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB) + +TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mprotect(SB) +GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB) + +TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_msync(SB) +GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB) + +TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlock(SB) +GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB) + +TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlockall(SB) +GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB) + +TEXT libc_closedir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_closedir(SB) +GLOBL ·libc_closedir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_closedir_trampoline_addr(SB)/8, $libc_closedir_trampoline<>(SB) + +TEXT libc_readdir_r_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readdir_r(SB) +GLOBL ·libc_readdir_r_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readdir_r_trampoline_addr(SB)/8, $libc_readdir_r_trampoline<>(SB) + +TEXT libc_pipe_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pipe(SB) +GLOBL ·libc_pipe_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pipe_trampoline_addr(SB)/8, $libc_pipe_trampoline<>(SB) + +TEXT libc_getxattr_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getxattr(SB) +GLOBL ·libc_getxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getxattr_trampoline_addr(SB)/8, $libc_getxattr_trampoline<>(SB) + +TEXT libc_fgetxattr_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fgetxattr(SB) +GLOBL ·libc_fgetxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fgetxattr_trampoline_addr(SB)/8, $libc_fgetxattr_trampoline<>(SB) + +TEXT libc_setxattr_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setxattr(SB) +GLOBL ·libc_setxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setxattr_trampoline_addr(SB)/8, $libc_setxattr_trampoline<>(SB) + +TEXT libc_fsetxattr_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fsetxattr(SB) +GLOBL ·libc_fsetxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fsetxattr_trampoline_addr(SB)/8, $libc_fsetxattr_trampoline<>(SB) + +TEXT libc_removexattr_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_removexattr(SB) +GLOBL ·libc_removexattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_removexattr_trampoline_addr(SB)/8, $libc_removexattr_trampoline<>(SB) + +TEXT libc_fremovexattr_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fremovexattr(SB) +GLOBL ·libc_fremovexattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fremovexattr_trampoline_addr(SB)/8, $libc_fremovexattr_trampoline<>(SB) + +TEXT libc_listxattr_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_listxattr(SB) +GLOBL ·libc_listxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_listxattr_trampoline_addr(SB)/8, $libc_listxattr_trampoline<>(SB) + +TEXT libc_flistxattr_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_flistxattr(SB) +GLOBL ·libc_flistxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_flistxattr_trampoline_addr(SB)/8, $libc_flistxattr_trampoline<>(SB) + +TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimensat(SB) +GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB) + +TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fcntl(SB) +GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB) + +TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kill(SB) +GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB) + +TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ioctl(SB) +GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB) + +TEXT libc_renamex_np_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renamex_np(SB) +GLOBL ·libc_renamex_np_trampoline_addr(SB), RODATA, $8 +DATA ·libc_renamex_np_trampoline_addr(SB)/8, $libc_renamex_np_trampoline<>(SB) + +TEXT libc_renameatx_np_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renameatx_np(SB) +GLOBL ·libc_renameatx_np_trampoline_addr(SB), RODATA, $8 +DATA ·libc_renameatx_np_trampoline_addr(SB)/8, $libc_renameatx_np_trampoline<>(SB) + +TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sysctl(SB) +GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) + +TEXT libc_pthread_chdir_np_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pthread_chdir_np(SB) +GLOBL ·libc_pthread_chdir_np_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pthread_chdir_np_trampoline_addr(SB)/8, $libc_pthread_chdir_np_trampoline<>(SB) + +TEXT libc_pthread_fchdir_np_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pthread_fchdir_np(SB) +GLOBL ·libc_pthread_fchdir_np_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pthread_fchdir_np_trampoline_addr(SB)/8, $libc_pthread_fchdir_np_trampoline<>(SB) + +TEXT libc_connectx_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_connectx(SB) +GLOBL ·libc_connectx_trampoline_addr(SB), RODATA, $8 +DATA ·libc_connectx_trampoline_addr(SB)/8, $libc_connectx_trampoline<>(SB) + +TEXT libc_sendfile_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendfile(SB) +GLOBL ·libc_sendfile_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendfile_trampoline_addr(SB)/8, $libc_sendfile_trampoline<>(SB) + +TEXT libc_shmat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shmat(SB) +GLOBL ·libc_shmat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shmat_trampoline_addr(SB)/8, $libc_shmat_trampoline<>(SB) + +TEXT libc_shmctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shmctl(SB) +GLOBL ·libc_shmctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shmctl_trampoline_addr(SB)/8, $libc_shmctl_trampoline<>(SB) + +TEXT libc_shmdt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shmdt(SB) +GLOBL ·libc_shmdt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shmdt_trampoline_addr(SB)/8, $libc_shmdt_trampoline<>(SB) + +TEXT libc_shmget_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shmget(SB) +GLOBL ·libc_shmget_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shmget_trampoline_addr(SB)/8, $libc_shmget_trampoline<>(SB) + +TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_access(SB) +GLOBL ·libc_access_trampoline_addr(SB), RODATA, $8 +DATA ·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB) + +TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_adjtime(SB) +GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $8 +DATA ·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB) + +TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chdir(SB) +GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB) + +TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chflags(SB) +GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB) + +TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chmod(SB) +GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB) + +TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chown(SB) +GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB) + +TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chroot(SB) +GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB) + +TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_clock_gettime(SB) +GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $8 +DATA ·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB) + +TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_close(SB) +GLOBL ·libc_close_trampoline_addr(SB), RODATA, $8 +DATA ·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB) + +TEXT libc_clonefile_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_clonefile(SB) +GLOBL ·libc_clonefile_trampoline_addr(SB), RODATA, $8 +DATA ·libc_clonefile_trampoline_addr(SB)/8, $libc_clonefile_trampoline<>(SB) + +TEXT libc_clonefileat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_clonefileat(SB) +GLOBL ·libc_clonefileat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_clonefileat_trampoline_addr(SB)/8, $libc_clonefileat_trampoline<>(SB) + +TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup(SB) +GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB) + +TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup2(SB) +GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB) + +TEXT libc_exchangedata_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_exchangedata(SB) +GLOBL ·libc_exchangedata_trampoline_addr(SB), RODATA, $8 +DATA ·libc_exchangedata_trampoline_addr(SB)/8, $libc_exchangedata_trampoline<>(SB) + +TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_exit(SB) +GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB) + +TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_faccessat(SB) +GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB) + +TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchdir(SB) +GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB) + +TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchflags(SB) +GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB) + +TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmod(SB) +GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB) + +TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmodat(SB) +GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB) + +TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchown(SB) +GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB) + +TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchownat(SB) +GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB) + +TEXT libc_fclonefileat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fclonefileat(SB) +GLOBL ·libc_fclonefileat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fclonefileat_trampoline_addr(SB)/8, $libc_fclonefileat_trampoline<>(SB) + +TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_flock(SB) +GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB) + +TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fpathconf(SB) +GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB) + +TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fsync(SB) +GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB) + +TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ftruncate(SB) +GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB) + +TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getcwd(SB) +GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB) + +TEXT libc_getdtablesize_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getdtablesize(SB) +GLOBL ·libc_getdtablesize_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getdtablesize_trampoline_addr(SB)/8, $libc_getdtablesize_trampoline<>(SB) + +TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getegid(SB) +GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB) + +TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_geteuid(SB) +GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB) + +TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgid(SB) +GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB) + +TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgid(SB) +GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB) + +TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgrp(SB) +GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB) + +TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpid(SB) +GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB) + +TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getppid(SB) +GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB) + +TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpriority(SB) +GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB) + +TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrlimit(SB) +GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB) + +TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrusage(SB) +GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB) + +TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsid(SB) +GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB) + +TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_gettimeofday(SB) +GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB) + +TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getuid(SB) +GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB) + +TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_issetugid(SB) +GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB) + +TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kqueue(SB) +GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB) + +TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lchown(SB) +GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB) + +TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_link(SB) +GLOBL ·libc_link_trampoline_addr(SB), RODATA, $8 +DATA ·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB) + +TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_linkat(SB) +GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB) + +TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_listen(SB) +GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $8 +DATA ·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB) + +TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdir(SB) +GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB) + +TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdirat(SB) +GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB) + +TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifo(SB) +GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB) + +TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknod(SB) +GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB) + +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mount(SB) +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB) + +TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_open(SB) +GLOBL ·libc_open_trampoline_addr(SB), RODATA, $8 +DATA ·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB) + +TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_openat(SB) +GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB) + +TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pathconf(SB) +GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB) + +TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pread(SB) +GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB) + +TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pwrite(SB) +GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB) + +TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_read(SB) +GLOBL ·libc_read_trampoline_addr(SB), RODATA, $8 +DATA ·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB) + +TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlink(SB) +GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB) + +TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlinkat(SB) +GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB) + +TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rename(SB) +GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB) + +TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renameat(SB) +GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB) + +TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_revoke(SB) +GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $8 +DATA ·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB) + +TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rmdir(SB) +GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB) + +TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lseek(SB) +GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB) + +TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_select(SB) +GLOBL ·libc_select_trampoline_addr(SB), RODATA, $8 +DATA ·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB) + +TEXT libc_setattrlist_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setattrlist(SB) +GLOBL ·libc_setattrlist_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setattrlist_trampoline_addr(SB)/8, $libc_setattrlist_trampoline<>(SB) + +TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setegid(SB) +GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB) + +TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_seteuid(SB) +GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB) + +TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgid(SB) +GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB) + +TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setlogin(SB) +GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB) + +TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpgid(SB) +GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB) + +TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpriority(SB) +GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB) + +TEXT libc_setprivexec_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setprivexec(SB) +GLOBL ·libc_setprivexec_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setprivexec_trampoline_addr(SB)/8, $libc_setprivexec_trampoline<>(SB) + +TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setregid(SB) +GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB) + +TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setreuid(SB) +GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB) + +TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsid(SB) +GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB) + +TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_settimeofday(SB) +GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB) + +TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setuid(SB) +GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB) + +TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlink(SB) +GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB) + +TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlinkat(SB) +GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB) + +TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sync(SB) +GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB) + +TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_truncate(SB) +GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB) + +TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_umask(SB) +GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $8 +DATA ·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB) + +TEXT libc_undelete_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_undelete(SB) +GLOBL ·libc_undelete_trampoline_addr(SB), RODATA, $8 +DATA ·libc_undelete_trampoline_addr(SB)/8, $libc_undelete_trampoline<>(SB) + +TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlink(SB) +GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB) + +TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlinkat(SB) +GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB) + +TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unmount(SB) +GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB) + +TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_write(SB) +GLOBL ·libc_write_trampoline_addr(SB), RODATA, $8 +DATA ·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB) + +TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mmap(SB) +GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB) + +TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munmap(SB) +GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) + +TEXT libc_readv_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readv(SB) +GLOBL ·libc_readv_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readv_trampoline_addr(SB)/8, $libc_readv_trampoline<>(SB) + +TEXT libc_preadv_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_preadv(SB) +GLOBL ·libc_preadv_trampoline_addr(SB), RODATA, $8 +DATA ·libc_preadv_trampoline_addr(SB)/8, $libc_preadv_trampoline<>(SB) + +TEXT libc_writev_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_writev(SB) +GLOBL ·libc_writev_trampoline_addr(SB), RODATA, $8 +DATA ·libc_writev_trampoline_addr(SB)/8, $libc_writev_trampoline<>(SB) + +TEXT libc_pwritev_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pwritev(SB) +GLOBL ·libc_pwritev_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pwritev_trampoline_addr(SB)/8, $libc_pwritev_trampoline<>(SB) + +TEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstat(SB) +GLOBL ·libc_fstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB) + +TEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatat(SB) +GLOBL ·libc_fstatat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB) + +TEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatfs(SB) +GLOBL ·libc_fstatfs_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB) + +TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getfsstat(SB) +GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB) + +TEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lstat(SB) +GLOBL ·libc_lstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB) + +TEXT libc_ptrace_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ptrace(SB) +GLOBL ·libc_ptrace_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ptrace_trampoline_addr(SB)/8, $libc_ptrace_trampoline<>(SB) + +TEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_stat(SB) +GLOBL ·libc_stat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB) + +TEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_statfs(SB) +GLOBL ·libc_statfs_trampoline_addr(SB), RODATA, $8 +DATA ·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB) diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go new file mode 100644 index 000000000..aad65fc79 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go @@ -0,0 +1,1666 @@ +// go run mksyscall.go -dragonfly -tags dragonfly,amd64 syscall_bsd.go syscall_dragonfly.go syscall_dragonfly_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build dragonfly && amd64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (r int, w int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + r = int(r0) + w = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (r int, w int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + r = int(r0) + w = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func extpread(fd int, p []byte, flags int, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EXTPREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func extpwrite(fd int, p []byte, flags int, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EXTPWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(fd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go new file mode 100644 index 000000000..c0096391a --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go @@ -0,0 +1,1886 @@ +// go run mksyscall.go -l32 -tags freebsd,386 syscall_bsd.go syscall_freebsd.go syscall_freebsd_386.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build freebsd && 386 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data int) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CapEnter() (err error) { + _, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsGet(version int, fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsLimit(fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(fd int, path string, mode uint32, dev uint64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), uintptr(dev>>32), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go new file mode 100644 index 000000000..7664df749 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go @@ -0,0 +1,1886 @@ +// go run mksyscall.go -tags freebsd,amd64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build freebsd && amd64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data int) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CapEnter() (err error) { + _, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsGet(version int, fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsLimit(fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(fd int, path string, mode uint32, dev uint64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go new file mode 100644 index 000000000..ae099182c --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go @@ -0,0 +1,1886 @@ +// go run mksyscall.go -l32 -arm -tags freebsd,arm syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build freebsd && arm + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data int) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CapEnter() (err error) { + _, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsGet(version int, fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsLimit(fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(fd int, path string, mode uint32, dev uint64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, uintptr(dev), uintptr(dev>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go new file mode 100644 index 000000000..11fd5d45b --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go @@ -0,0 +1,1886 @@ +// go run mksyscall.go -tags freebsd,arm64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build freebsd && arm64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data int) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CapEnter() (err error) { + _, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsGet(version int, fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsLimit(fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(fd int, path string, mode uint32, dev uint64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go new file mode 100644 index 000000000..c3d2d6530 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go @@ -0,0 +1,1886 @@ +// go run mksyscall.go -tags freebsd,riscv64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_riscv64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build freebsd && riscv64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data int) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CapEnter() (err error) { + _, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsGet(version int, fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsLimit(fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(fd int, path string, mode uint32, dev uint64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go new file mode 100644 index 000000000..c698cbc01 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go @@ -0,0 +1,101 @@ +// go run mksyscall_solaris.go -illumos -tags illumos,amd64 syscall_illumos.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build illumos && amd64 + +package unix + +import ( + "unsafe" +) + +//go:cgo_import_dynamic libc_readv readv "libc.so" +//go:cgo_import_dynamic libc_preadv preadv "libc.so" +//go:cgo_import_dynamic libc_writev writev "libc.so" +//go:cgo_import_dynamic libc_pwritev pwritev "libc.so" +//go:cgo_import_dynamic libc_accept4 accept4 "libsocket.so" + +//go:linkname procreadv libc_readv +//go:linkname procpreadv libc_preadv +//go:linkname procwritev libc_writev +//go:linkname procpwritev libc_pwritev +//go:linkname procaccept4 libc_accept4 + +var ( + procreadv, + procpreadv, + procwritev, + procpwritev, + procaccept4 syscallFunc +) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readv(fd int, iovs []Iovec) (n int, err error) { + var _p0 *Iovec + if len(iovs) > 0 { + _p0 = &iovs[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procreadv)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func preadv(fd int, iovs []Iovec, off int64) (n int, err error) { + var _p0 *Iovec + if len(iovs) > 0 { + _p0 = &iovs[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpreadv)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), uintptr(off), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writev(fd int, iovs []Iovec) (n int, err error) { + var _p0 *Iovec + if len(iovs) > 0 { + _p0 = &iovs[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwritev)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwritev(fd int, iovs []Iovec, off int64) (n int, err error) { + var _p0 *Iovec + if len(iovs) > 0 { + _p0 = &iovs[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpwritev)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), uintptr(off), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procaccept4)), 4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_linux.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_linux.go new file mode 100644 index 000000000..5cc1e8eb2 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_linux.go @@ -0,0 +1,2240 @@ +// Code generated by mkmerge; DO NOT EDIT. + +//go:build linux + +package unix + +import ( + "syscall" + "unsafe" +) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat2(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT2, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT2, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(open_how)), uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Waitid(idType int, id int, info *Siginfo, options int, rusage *Rusage) (err error) { + _, _, e1 := Syscall6(SYS_WAITID, uintptr(idType), uintptr(id), uintptr(unsafe.Pointer(info)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(restriction) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlRestrictKeyring(cmd int, arg2 int) (err error) { + _, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptracePtr(request int, pid int, addr uintptr, data unsafe.Pointer) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mountSetattr(dirfd int, pathname string, flags uint, attr *MountAttr, size uintptr) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT_SETATTR, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(unsafe.Pointer(attr)), uintptr(size), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Capget(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := RawSyscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Capset(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := RawSyscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockAdjtime(clockid int32, buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_CLOCK_ADJTIME, uintptr(clockid), uintptr(unsafe.Pointer(buf)), 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockSettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_SETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CloseRange(first uint, last uint, flags uint) (err error) { + _, _, e1 := Syscall(SYS_CLOSE_RANGE, uintptr(first), uintptr(last), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsmount(fd int, flags int, mountAttrs int) (fsfd int, err error) { + r0, _, e1 := Syscall(SYS_FSMOUNT, uintptr(fd), uintptr(flags), uintptr(mountAttrs)) + fsfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsopen(fsName string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsName) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_FSOPEN, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fspick(dirfd int, pathName string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathName) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_FSPICK, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsconfig(fd int, cmd uint, key *byte, value *byte, aux int) (err error) { + _, _, e1 := Syscall6(SYS_FSCONFIG, uintptr(fd), uintptr(cmd), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(value)), uintptr(aux), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MoveMount(fromDirfd int, fromPathName string, toDirfd int, toPathName string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fromPathName) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(toPathName) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOVE_MOUNT, uintptr(fromDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(toDirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func OpenTree(dfd int, fileName string, flags uint) (r int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fileName) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN_TREE, uintptr(dfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + r = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pselect6(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *sigset_argpack) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) { + r0, _, e1 := Syscall6(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(sigmask)), uintptr(maskSize), uintptr(flags), 0, 0) + newfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func TimerfdCreate(clockid int, flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_TIMERFD_CREATE, uintptr(clockid), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func TimerfdGettime(fd int, currValue *ItimerSpec) (err error) { + _, _, e1 := RawSyscall(SYS_TIMERFD_GETTIME, uintptr(fd), uintptr(unsafe.Pointer(currValue)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func TimerfdSettime(fd int, flags int, newValue *ItimerSpec, oldValue *ItimerSpec) (err error) { + _, _, e1 := RawSyscall6(SYS_TIMERFD_SETTIME, uintptr(fd), uintptr(flags), uintptr(unsafe.Pointer(newValue)), uintptr(unsafe.Pointer(oldValue)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readv(fd int, iovs []Iovec) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovs) > 0 { + _p0 = unsafe.Pointer(&iovs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READV, uintptr(fd), uintptr(_p0), uintptr(len(iovs))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writev(fd int, iovs []Iovec) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovs) > 0 { + _p0 = unsafe.Pointer(&iovs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITEV, uintptr(fd), uintptr(_p0), uintptr(len(iovs))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func preadv(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovs) > 0 { + _p0 = unsafe.Pointer(&iovs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREADV, uintptr(fd), uintptr(_p0), uintptr(len(iovs)), uintptr(offs_l), uintptr(offs_h), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwritev(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovs) > 0 { + _p0 = unsafe.Pointer(&iovs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITEV, uintptr(fd), uintptr(_p0), uintptr(len(iovs)), uintptr(offs_l), uintptr(offs_h), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func preadv2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovs) > 0 { + _p0 = unsafe.Pointer(&iovs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREADV2, uintptr(fd), uintptr(_p0), uintptr(len(iovs)), uintptr(offs_l), uintptr(offs_h), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwritev2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovs) > 0 { + _p0 = unsafe.Pointer(&iovs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITEV2, uintptr(fd), uintptr(_p0), uintptr(len(iovs)), uintptr(offs_l), uintptr(offs_h), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mremap(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldaddr), uintptr(oldlength), uintptr(newlength), uintptr(flags), uintptr(newaddr), 0) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat2(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT2, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NAME_TO_HANDLE_AT, uintptr(dirFD), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(fh)), uintptr(unsafe.Pointer(mountID)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_OPEN_BY_HANDLE_AT, uintptr(mountFD), uintptr(unsafe.Pointer(fh)), uintptr(flags)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ProcessVMReadv(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) { + var _p0 unsafe.Pointer + if len(localIov) > 0 { + _p0 = unsafe.Pointer(&localIov[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 unsafe.Pointer + if len(remoteIov) > 0 { + _p1 = unsafe.Pointer(&remoteIov[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PROCESS_VM_READV, uintptr(pid), uintptr(_p0), uintptr(len(localIov)), uintptr(_p1), uintptr(len(remoteIov)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ProcessVMWritev(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) { + var _p0 unsafe.Pointer + if len(localIov) > 0 { + _p0 = unsafe.Pointer(&localIov[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 unsafe.Pointer + if len(remoteIov) > 0 { + _p1 = unsafe.Pointer(&remoteIov[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PROCESS_VM_WRITEV, uintptr(pid), uintptr(_p0), uintptr(len(localIov)), uintptr(_p1), uintptr(len(remoteIov)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PidfdOpen(pid int, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_PIDFD_OPEN, uintptr(pid), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PidfdGetfd(pidfd int, targetfd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_PIDFD_GETFD, uintptr(pidfd), uintptr(targetfd), uintptr(flags)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PidfdSendSignal(pidfd int, sig Signal, info *Siginfo, flags int) (err error) { + _, _, e1 := Syscall6(SYS_PIDFD_SEND_SIGNAL, uintptr(pidfd), uintptr(sig), uintptr(unsafe.Pointer(info)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmat(id int, addr uintptr, flag int) (ret uintptr, err error) { + r0, _, e1 := Syscall(SYS_SHMAT, uintptr(id), uintptr(addr), uintptr(flag)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) { + r0, _, e1 := Syscall(SYS_SHMCTL, uintptr(id), uintptr(cmd), uintptr(unsafe.Pointer(buf))) + result = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmdt(addr uintptr) (err error) { + _, _, e1 := Syscall(SYS_SHMDT, uintptr(addr), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmget(key int, size int, flag int) (id int, err error) { + r0, _, e1 := Syscall(SYS_SHMGET, uintptr(key), uintptr(size), uintptr(flag)) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getitimer(which int, currValue *Itimerval) (err error) { + _, _, e1 := Syscall(SYS_GETITIMER, uintptr(which), uintptr(unsafe.Pointer(currValue)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setitimer(which int, newValue *Itimerval, oldValue *Itimerval) (err error) { + _, _, e1 := Syscall(SYS_SETITIMER, uintptr(which), uintptr(unsafe.Pointer(newValue)), uintptr(unsafe.Pointer(oldValue))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func rtSigprocmask(how int, set *Sigset_t, oldset *Sigset_t, sigsetsize uintptr) (err error) { + _, _, e1 := RawSyscall6(SYS_RT_SIGPROCMASK, uintptr(how), uintptr(unsafe.Pointer(set)), uintptr(unsafe.Pointer(oldset)), uintptr(sigsetsize), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) { + RawSyscallNoError(SYS_GETRESUID, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid))) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) { + RawSyscallNoError(SYS_GETRESGID, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid))) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func schedSetattr(pid int, attr *SchedAttr, flags uint) (err error) { + _, _, e1 := Syscall(SYS_SCHED_SETATTR, uintptr(pid), uintptr(unsafe.Pointer(attr)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func schedGetattr(pid int, attr *SchedAttr, size uint, flags uint) (err error) { + _, _, e1 := Syscall6(SYS_SCHED_GETATTR, uintptr(pid), uintptr(unsafe.Pointer(attr)), uintptr(size), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Cachestat(fd uint, crange *CachestatRange, cstat *Cachestat_t, flags uint) (err error) { + _, _, e1 := Syscall6(SYS_CACHESTAT, uintptr(fd), uintptr(unsafe.Pointer(crange)), uintptr(unsafe.Pointer(cstat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mseal(b []byte, flags uint) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSEAL, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go new file mode 100644 index 000000000..4def3e9fc --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go @@ -0,0 +1,486 @@ +// go run mksyscall.go -l32 -tags linux,386 syscall_linux.go syscall_linux_386.go syscall_linux_alarm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build linux && 386 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64_64, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE64, uintptr(fd), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID32, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID32, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID32, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID32, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN32, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsgid(gid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsuid(uid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Alarm(seconds uint) (remaining uint, err error) { + r0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0) + remaining = uint(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go new file mode 100644 index 000000000..fef2bc8ba --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go @@ -0,0 +1,653 @@ +// go run mksyscall.go -tags linux,amd64 syscall_linux.go syscall_linux_amd64.go syscall_linux_alarm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build linux && amd64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdSecret(flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_MEMFD_SECRET, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsgid(gid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsuid(uid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Alarm(seconds uint) (remaining uint, err error) { + r0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0) + remaining = uint(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go new file mode 100644 index 000000000..a9fd76a88 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go @@ -0,0 +1,601 @@ +// go run mksyscall.go -l32 -arm -tags linux,arm syscall_linux.go syscall_linux_arm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build linux && arm + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, flags int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID32, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID32, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID32, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID32, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN32, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsgid(gid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsuid(uid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func armSyncFileRange(fd int, flags int, off int64, n int64) (err error) { + _, _, e1 := Syscall6(SYS_ARM_SYNC_FILE_RANGE, uintptr(fd), uintptr(flags), uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go new file mode 100644 index 000000000..460065028 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go @@ -0,0 +1,552 @@ +// go run mksyscall.go -tags linux,arm64 syscall_linux.go syscall_linux_arm64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build linux && arm64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdSecret(flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_MEMFD_SECRET, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsgid(gid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsuid(uid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go new file mode 100644 index 000000000..c8987d264 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go @@ -0,0 +1,486 @@ +// go run mksyscall.go -tags linux,loong64 syscall_linux.go syscall_linux_loong64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build linux && loong64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsgid(gid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsuid(uid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go new file mode 100644 index 000000000..921f43061 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go @@ -0,0 +1,653 @@ +// go run mksyscall.go -b32 -arm -tags linux,mips syscall_linux.go syscall_linux_mipsx.go syscall_linux_alarm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build linux && mips + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask>>32), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off>>32), uintptr(off), uintptr(len>>32), uintptr(len)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(int64(r0)<<32 | int64(r1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall9(SYS_FADVISE64, uintptr(fd), 0, uintptr(offset>>32), uintptr(offset), uintptr(length>>32), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length>>32), uintptr(length), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset>>32), uintptr(offset)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset>>32), uintptr(offset)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsgid(gid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsuid(uid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall9(SYS_SYNC_FILE_RANGE, uintptr(fd), 0, uintptr(off>>32), uintptr(off), uintptr(n>>32), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length>>32), uintptr(length), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Alarm(seconds uint) (remaining uint, err error) { + r0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0) + remaining = uint(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go new file mode 100644 index 000000000..44f067829 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go @@ -0,0 +1,647 @@ +// go run mksyscall.go -tags linux,mips64 syscall_linux.go syscall_linux_mips64x.go syscall_linux_alarm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build linux && mips64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsgid(gid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsuid(uid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat(fd int, st *stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(st)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat(dirfd int, path string, st *stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func lstat(path string, st *stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func stat(path string, st *stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Alarm(seconds uint) (remaining uint, err error) { + r0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0) + remaining = uint(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go new file mode 100644 index 000000000..e7fa0abf0 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go @@ -0,0 +1,636 @@ +// go run mksyscall.go -tags linux,mips64le syscall_linux.go syscall_linux_mips64x.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build linux && mips64le + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsgid(gid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsuid(uid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat(fd int, st *stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(st)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat(dirfd int, path string, st *stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func lstat(path string, st *stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func stat(path string, st *stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go new file mode 100644 index 000000000..8c5125675 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go @@ -0,0 +1,653 @@ +// go run mksyscall.go -l32 -arm -tags linux,mipsle syscall_linux.go syscall_linux_mipsx.go syscall_linux_alarm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build linux && mipsle + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall9(SYS_FADVISE64, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsgid(gid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsuid(uid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall9(SYS_SYNC_FILE_RANGE, uintptr(fd), 0, uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Alarm(seconds uint) (remaining uint, err error) { + r0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0) + remaining = uint(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go new file mode 100644 index 000000000..7392fd45e --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go @@ -0,0 +1,658 @@ +// go run mksyscall.go -b32 -tags linux,ppc syscall_linux.go syscall_linux_ppc.go syscall_linux_alarm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build linux && ppc + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask>>32), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off>>32), uintptr(off), uintptr(len>>32), uintptr(len)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(int64(r0)<<32 | int64(r1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE64, uintptr(fd), uintptr(length>>32), uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset>>32), uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset>>32), uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsgid(gid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsuid(uid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), uintptr(length>>32), uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func syncFileRange2(fd int, flags int, off int64, n int64) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off>>32), uintptr(off), uintptr(n>>32), uintptr(n)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Alarm(seconds uint) (remaining uint, err error) { + r0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0) + remaining = uint(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go new file mode 100644 index 000000000..41180434e --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go @@ -0,0 +1,704 @@ +// go run mksyscall.go -tags linux,ppc64 syscall_linux.go syscall_linux_ppc64x.go syscall_linux_alarm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build linux && ppc64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsgid(gid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsuid(uid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func syncFileRange2(fd int, flags int, off int64, n int64) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off), uintptr(n), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Alarm(seconds uint) (remaining uint, err error) { + r0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0) + remaining = uint(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go new file mode 100644 index 000000000..40c6ce7ae --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go @@ -0,0 +1,704 @@ +// go run mksyscall.go -tags linux,ppc64le syscall_linux.go syscall_linux_ppc64x.go syscall_linux_alarm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build linux && ppc64le + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsgid(gid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsuid(uid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func syncFileRange2(fd int, flags int, off int64, n int64) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off), uintptr(n), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Alarm(seconds uint) (remaining uint, err error) { + r0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0) + remaining = uint(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go new file mode 100644 index 000000000..2cfe34adb --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go @@ -0,0 +1,548 @@ +// go run mksyscall.go -tags linux,riscv64 syscall_linux.go syscall_linux_riscv64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build linux && riscv64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdSecret(flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_MEMFD_SECRET, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsgid(gid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsuid(uid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func riscvHWProbe(pairs []RISCVHWProbePairs, cpuCount uintptr, cpus *CPUSet, flags uint) (err error) { + var _p0 unsafe.Pointer + if len(pairs) > 0 { + _p0 = unsafe.Pointer(&pairs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_RISCV_HWPROBE, uintptr(_p0), uintptr(len(pairs)), uintptr(cpuCount), uintptr(unsafe.Pointer(cpus)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go new file mode 100644 index 000000000..61e6f0709 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go @@ -0,0 +1,495 @@ +// go run mksyscall.go -tags linux,s390x syscall_linux.go syscall_linux_s390x.go syscall_linux_alarm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build linux && s390x + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsgid(gid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsuid(uid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Alarm(seconds uint) (remaining uint, err error) { + r0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0) + remaining = uint(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go new file mode 100644 index 000000000..834b84204 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go @@ -0,0 +1,648 @@ +// go run mksyscall.go -tags linux,sparc64 syscall_linux.go syscall_linux_sparc64.go syscall_linux_alarm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build linux && sparc64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsgid(gid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsuid(uid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Alarm(seconds uint) (remaining uint, err error) { + r0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0) + remaining = uint(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go new file mode 100644 index 000000000..e91ebc14a --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go @@ -0,0 +1,1848 @@ +// go run mksyscall.go -l32 -netbsd -tags netbsd,386 syscall_bsd.go syscall_netbsd.go syscall_netbsd_386.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build netbsd && 386 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(from int, to int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), 0, uintptr(length), uintptr(length>>32), uintptr(advice), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) { + _, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statvfs1(path string, buf *Statvfs_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldp), uintptr(oldsize), uintptr(newp), uintptr(newsize), uintptr(flags), 0) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go new file mode 100644 index 000000000..be28babbc --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go @@ -0,0 +1,1848 @@ +// go run mksyscall.go -netbsd -tags netbsd,amd64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build netbsd && amd64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(from int, to int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), 0, uintptr(length), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) { + _, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statvfs1(path string, buf *Statvfs_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldp), uintptr(oldsize), uintptr(newp), uintptr(newsize), uintptr(flags), 0) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go new file mode 100644 index 000000000..fb587e826 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go @@ -0,0 +1,1848 @@ +// go run mksyscall.go -l32 -netbsd -arm -tags netbsd,arm syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build netbsd && arm + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(from int, to int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), 0, uintptr(length), uintptr(length>>32), uintptr(advice), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) { + _, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statvfs1(path string, buf *Statvfs_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldp), uintptr(oldsize), uintptr(newp), uintptr(newsize), uintptr(flags), 0) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go new file mode 100644 index 000000000..d576438bb --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go @@ -0,0 +1,1848 @@ +// go run mksyscall.go -netbsd -tags netbsd,arm64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build netbsd && arm64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(from int, to int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), 0, uintptr(length), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) { + _, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statvfs1(path string, buf *Statvfs_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldp), uintptr(oldsize), uintptr(newp), uintptr(newsize), uintptr(flags), 0) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go new file mode 100644 index 000000000..1851df14e --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go @@ -0,0 +1,2323 @@ +// go run mksyscall.go -l32 -openbsd -libc -tags openbsd,386 syscall_bsd.go syscall_openbsd.go syscall_openbsd_386.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build openbsd && 386 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgroups getgroups "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgroups setgroups "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_wait4_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_wait4 wait4 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_accept_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_accept accept "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_bind_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_bind bind "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_connect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_connect connect "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socket_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socket socket "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockopt getsockopt "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsockopt setsockopt "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpeername_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpeername getpeername "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockname_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockname getsockname "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shutdown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shutdown shutdown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socketpair_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socketpair socketpair "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvfrom_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvfrom recvfrom "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendto_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendto sendto "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvmsg recvmsg "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendmsg sendmsg "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kevent_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kevent kevent "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimes utimes "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_futimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_futimes futimes "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_poll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_poll poll "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_madvise_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_madvise madvise "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlock mlock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlockall mlockall "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mprotect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mprotect mprotect "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_msync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_msync msync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlock munlock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlockall munlockall "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pipe2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pipe2 pipe2 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getdents_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getdents getdents "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getcwd_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getcwd getcwd "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) { + syscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid))) + return +} + +var libc_getresuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getresuid getresuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) { + syscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid))) + return +} + +var libc_getresgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getresgid getresgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ioctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sysctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sysctl sysctl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fcntl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fcntl fcntl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ppoll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ppoll ppoll "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_access_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_access access "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_adjtime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_adjtime adjtime "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chdir chdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chflags chflags "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chmod chmod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chown chown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chroot_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chroot chroot "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_clock_gettime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_clock_gettime clock_gettime "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_close_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_close close "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup dup "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup2 dup2 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(from int, to int, flags int) (err error) { + _, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup3_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup3 dup3 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + syscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0) + return +} + +var libc_exit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_exit exit "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_faccessat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_faccessat faccessat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchdir fchdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchflags fchflags "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmod fchmod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmodat fchmodat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchown fchown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchownat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchownat fchownat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_flock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_flock flock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fpathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fpathconf fpathconf "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstat fstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatat fstatat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatfs fstatfs "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fsync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fsync fsync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ftruncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ftruncate ftruncate "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0) + egid = int(r0) + return +} + +var libc_getegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getegid getegid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_geteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_geteuid geteuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0) + gid = int(r0) + return +} + +var libc_getgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgid getgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgid getpgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0) + pgrp = int(r0) + return +} + +var libc_getpgrp_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgrp getpgrp "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0) + pid = int(r0) + return +} + +var libc_getpid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpid getpid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0) + ppid = int(r0) + return +} + +var libc_getppid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getppid getppid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpriority getpriority "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrlimit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrlimit getrlimit "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrtable() (rtable int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0) + rtable = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrtable getrtable "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrusage_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrusage getrusage "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsid getsid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_gettimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_getuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getuid getuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +var libc_issetugid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_issetugid issetugid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kill_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kill kill "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kqueue_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kqueue kqueue "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lchown lchown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_link_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_link link "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_linkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_linkat linkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_listen_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_listen listen "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lstat lstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdir mkdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdirat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdirat mkdirat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkfifo_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifo mkfifo "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkfifoat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifoat mkfifoat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mknod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknod mknod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mknodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknodat mknodat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_nanosleep_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_nanosleep nanosleep "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_open_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_open open "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_openat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_openat openat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pathconf pathconf "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pread_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pread pread "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pwrite_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pwrite pwrite "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_read_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_read read "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlink readlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlinkat readlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rename_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rename rename "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_renameat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renameat renameat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_revoke_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_revoke revoke "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rmdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rmdir rmdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := syscall_syscall6(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lseek_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lseek lseek "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_select_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_select select "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setegid setegid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_seteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_seteuid seteuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgid setgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setlogin_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setlogin setlogin "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpgid setpgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpriority setpriority "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setregid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setregid setregid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setreuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setreuid setreuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setresgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresgid setresgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setresuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresuid setresuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrtable(rtable int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setrtable setrtable "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsid setsid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_settimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_settimeofday settimeofday "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setuid setuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_stat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_stat stat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_statfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_statfs statfs "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlink symlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlinkat symlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sync sync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_truncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_truncate truncate "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +var libc_umask_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_umask umask "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlink unlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlinkat unlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unmount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unmount unmount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_write_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_write write "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall9(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mmap mmap "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munmap munmap "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getfsstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getfsstat getfsstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimensat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimensat utimensat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pledge(promises *byte, execpromises *byte) (err error) { + _, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pledge_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pledge pledge "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func unveil(path *byte, flags *byte) (err error) { + _, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unveil_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unveil unveil "libc.so" diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s b/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s new file mode 100644 index 000000000..0b43c6936 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s @@ -0,0 +1,699 @@ +// go run mkasm.go openbsd 386 +// Code generated by the command above; DO NOT EDIT. + +#include "textflag.h" + +TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgroups(SB) +GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getgroups_trampoline_addr(SB)/4, $libc_getgroups_trampoline<>(SB) + +TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgroups(SB) +GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setgroups_trampoline_addr(SB)/4, $libc_setgroups_trampoline<>(SB) + +TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_wait4(SB) +GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $4 +DATA ·libc_wait4_trampoline_addr(SB)/4, $libc_wait4_trampoline<>(SB) + +TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_accept(SB) +GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $4 +DATA ·libc_accept_trampoline_addr(SB)/4, $libc_accept_trampoline<>(SB) + +TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_bind(SB) +GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $4 +DATA ·libc_bind_trampoline_addr(SB)/4, $libc_bind_trampoline<>(SB) + +TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_connect(SB) +GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $4 +DATA ·libc_connect_trampoline_addr(SB)/4, $libc_connect_trampoline<>(SB) + +TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socket(SB) +GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $4 +DATA ·libc_socket_trampoline_addr(SB)/4, $libc_socket_trampoline<>(SB) + +TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockopt(SB) +GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getsockopt_trampoline_addr(SB)/4, $libc_getsockopt_trampoline<>(SB) + +TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsockopt(SB) +GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setsockopt_trampoline_addr(SB)/4, $libc_setsockopt_trampoline<>(SB) + +TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpeername(SB) +GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getpeername_trampoline_addr(SB)/4, $libc_getpeername_trampoline<>(SB) + +TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockname(SB) +GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getsockname_trampoline_addr(SB)/4, $libc_getsockname_trampoline<>(SB) + +TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shutdown(SB) +GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $4 +DATA ·libc_shutdown_trampoline_addr(SB)/4, $libc_shutdown_trampoline<>(SB) + +TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socketpair(SB) +GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $4 +DATA ·libc_socketpair_trampoline_addr(SB)/4, $libc_socketpair_trampoline<>(SB) + +TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvfrom(SB) +GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $4 +DATA ·libc_recvfrom_trampoline_addr(SB)/4, $libc_recvfrom_trampoline<>(SB) + +TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendto(SB) +GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $4 +DATA ·libc_sendto_trampoline_addr(SB)/4, $libc_sendto_trampoline<>(SB) + +TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvmsg(SB) +GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $4 +DATA ·libc_recvmsg_trampoline_addr(SB)/4, $libc_recvmsg_trampoline<>(SB) + +TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendmsg(SB) +GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $4 +DATA ·libc_sendmsg_trampoline_addr(SB)/4, $libc_sendmsg_trampoline<>(SB) + +TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kevent(SB) +GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $4 +DATA ·libc_kevent_trampoline_addr(SB)/4, $libc_kevent_trampoline<>(SB) + +TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimes(SB) +GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $4 +DATA ·libc_utimes_trampoline_addr(SB)/4, $libc_utimes_trampoline<>(SB) + +TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_futimes(SB) +GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $4 +DATA ·libc_futimes_trampoline_addr(SB)/4, $libc_futimes_trampoline<>(SB) + +TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_poll(SB) +GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $4 +DATA ·libc_poll_trampoline_addr(SB)/4, $libc_poll_trampoline<>(SB) + +TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_madvise(SB) +GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $4 +DATA ·libc_madvise_trampoline_addr(SB)/4, $libc_madvise_trampoline<>(SB) + +TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlock(SB) +GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mlock_trampoline_addr(SB)/4, $libc_mlock_trampoline<>(SB) + +TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlockall(SB) +GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mlockall_trampoline_addr(SB)/4, $libc_mlockall_trampoline<>(SB) + +TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mprotect(SB) +GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mprotect_trampoline_addr(SB)/4, $libc_mprotect_trampoline<>(SB) + +TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_msync(SB) +GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $4 +DATA ·libc_msync_trampoline_addr(SB)/4, $libc_msync_trampoline<>(SB) + +TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlock(SB) +GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $4 +DATA ·libc_munlock_trampoline_addr(SB)/4, $libc_munlock_trampoline<>(SB) + +TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlockall(SB) +GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $4 +DATA ·libc_munlockall_trampoline_addr(SB)/4, $libc_munlockall_trampoline<>(SB) + +TEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pipe2(SB) +GLOBL ·libc_pipe2_trampoline_addr(SB), RODATA, $4 +DATA ·libc_pipe2_trampoline_addr(SB)/4, $libc_pipe2_trampoline<>(SB) + +TEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getdents(SB) +GLOBL ·libc_getdents_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getdents_trampoline_addr(SB)/4, $libc_getdents_trampoline<>(SB) + +TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getcwd(SB) +GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getcwd_trampoline_addr(SB)/4, $libc_getcwd_trampoline<>(SB) + +TEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getresuid(SB) +GLOBL ·libc_getresuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getresuid_trampoline_addr(SB)/4, $libc_getresuid_trampoline<>(SB) + +TEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getresgid(SB) +GLOBL ·libc_getresgid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getresgid_trampoline_addr(SB)/4, $libc_getresgid_trampoline<>(SB) + +TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ioctl(SB) +GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $4 +DATA ·libc_ioctl_trampoline_addr(SB)/4, $libc_ioctl_trampoline<>(SB) + +TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sysctl(SB) +GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $4 +DATA ·libc_sysctl_trampoline_addr(SB)/4, $libc_sysctl_trampoline<>(SB) + +TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fcntl(SB) +GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fcntl_trampoline_addr(SB)/4, $libc_fcntl_trampoline<>(SB) + +TEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ppoll(SB) +GLOBL ·libc_ppoll_trampoline_addr(SB), RODATA, $4 +DATA ·libc_ppoll_trampoline_addr(SB)/4, $libc_ppoll_trampoline<>(SB) + +TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_access(SB) +GLOBL ·libc_access_trampoline_addr(SB), RODATA, $4 +DATA ·libc_access_trampoline_addr(SB)/4, $libc_access_trampoline<>(SB) + +TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_adjtime(SB) +GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $4 +DATA ·libc_adjtime_trampoline_addr(SB)/4, $libc_adjtime_trampoline<>(SB) + +TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chdir(SB) +GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $4 +DATA ·libc_chdir_trampoline_addr(SB)/4, $libc_chdir_trampoline<>(SB) + +TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chflags(SB) +GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $4 +DATA ·libc_chflags_trampoline_addr(SB)/4, $libc_chflags_trampoline<>(SB) + +TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chmod(SB) +GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $4 +DATA ·libc_chmod_trampoline_addr(SB)/4, $libc_chmod_trampoline<>(SB) + +TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chown(SB) +GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $4 +DATA ·libc_chown_trampoline_addr(SB)/4, $libc_chown_trampoline<>(SB) + +TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chroot(SB) +GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $4 +DATA ·libc_chroot_trampoline_addr(SB)/4, $libc_chroot_trampoline<>(SB) + +TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_clock_gettime(SB) +GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $4 +DATA ·libc_clock_gettime_trampoline_addr(SB)/4, $libc_clock_gettime_trampoline<>(SB) + +TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_close(SB) +GLOBL ·libc_close_trampoline_addr(SB), RODATA, $4 +DATA ·libc_close_trampoline_addr(SB)/4, $libc_close_trampoline<>(SB) + +TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup(SB) +GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $4 +DATA ·libc_dup_trampoline_addr(SB)/4, $libc_dup_trampoline<>(SB) + +TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup2(SB) +GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $4 +DATA ·libc_dup2_trampoline_addr(SB)/4, $libc_dup2_trampoline<>(SB) + +TEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup3(SB) +GLOBL ·libc_dup3_trampoline_addr(SB), RODATA, $4 +DATA ·libc_dup3_trampoline_addr(SB)/4, $libc_dup3_trampoline<>(SB) + +TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_exit(SB) +GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $4 +DATA ·libc_exit_trampoline_addr(SB)/4, $libc_exit_trampoline<>(SB) + +TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_faccessat(SB) +GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_faccessat_trampoline_addr(SB)/4, $libc_faccessat_trampoline<>(SB) + +TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchdir(SB) +GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchdir_trampoline_addr(SB)/4, $libc_fchdir_trampoline<>(SB) + +TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchflags(SB) +GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchflags_trampoline_addr(SB)/4, $libc_fchflags_trampoline<>(SB) + +TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmod(SB) +GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchmod_trampoline_addr(SB)/4, $libc_fchmod_trampoline<>(SB) + +TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmodat(SB) +GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchmodat_trampoline_addr(SB)/4, $libc_fchmodat_trampoline<>(SB) + +TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchown(SB) +GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchown_trampoline_addr(SB)/4, $libc_fchown_trampoline<>(SB) + +TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchownat(SB) +GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchownat_trampoline_addr(SB)/4, $libc_fchownat_trampoline<>(SB) + +TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_flock(SB) +GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $4 +DATA ·libc_flock_trampoline_addr(SB)/4, $libc_flock_trampoline<>(SB) + +TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fpathconf(SB) +GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fpathconf_trampoline_addr(SB)/4, $libc_fpathconf_trampoline<>(SB) + +TEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstat(SB) +GLOBL ·libc_fstat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fstat_trampoline_addr(SB)/4, $libc_fstat_trampoline<>(SB) + +TEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatat(SB) +GLOBL ·libc_fstatat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fstatat_trampoline_addr(SB)/4, $libc_fstatat_trampoline<>(SB) + +TEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatfs(SB) +GLOBL ·libc_fstatfs_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fstatfs_trampoline_addr(SB)/4, $libc_fstatfs_trampoline<>(SB) + +TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fsync(SB) +GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fsync_trampoline_addr(SB)/4, $libc_fsync_trampoline<>(SB) + +TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ftruncate(SB) +GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $4 +DATA ·libc_ftruncate_trampoline_addr(SB)/4, $libc_ftruncate_trampoline<>(SB) + +TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getegid(SB) +GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getegid_trampoline_addr(SB)/4, $libc_getegid_trampoline<>(SB) + +TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_geteuid(SB) +GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_geteuid_trampoline_addr(SB)/4, $libc_geteuid_trampoline<>(SB) + +TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgid(SB) +GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getgid_trampoline_addr(SB)/4, $libc_getgid_trampoline<>(SB) + +TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgid(SB) +GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getpgid_trampoline_addr(SB)/4, $libc_getpgid_trampoline<>(SB) + +TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgrp(SB) +GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getpgrp_trampoline_addr(SB)/4, $libc_getpgrp_trampoline<>(SB) + +TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpid(SB) +GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getpid_trampoline_addr(SB)/4, $libc_getpid_trampoline<>(SB) + +TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getppid(SB) +GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getppid_trampoline_addr(SB)/4, $libc_getppid_trampoline<>(SB) + +TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpriority(SB) +GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getpriority_trampoline_addr(SB)/4, $libc_getpriority_trampoline<>(SB) + +TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrlimit(SB) +GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getrlimit_trampoline_addr(SB)/4, $libc_getrlimit_trampoline<>(SB) + +TEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrtable(SB) +GLOBL ·libc_getrtable_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getrtable_trampoline_addr(SB)/4, $libc_getrtable_trampoline<>(SB) + +TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrusage(SB) +GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getrusage_trampoline_addr(SB)/4, $libc_getrusage_trampoline<>(SB) + +TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsid(SB) +GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getsid_trampoline_addr(SB)/4, $libc_getsid_trampoline<>(SB) + +TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_gettimeofday(SB) +GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $4 +DATA ·libc_gettimeofday_trampoline_addr(SB)/4, $libc_gettimeofday_trampoline<>(SB) + +TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getuid(SB) +GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getuid_trampoline_addr(SB)/4, $libc_getuid_trampoline<>(SB) + +TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_issetugid(SB) +GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_issetugid_trampoline_addr(SB)/4, $libc_issetugid_trampoline<>(SB) + +TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kill(SB) +GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $4 +DATA ·libc_kill_trampoline_addr(SB)/4, $libc_kill_trampoline<>(SB) + +TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kqueue(SB) +GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $4 +DATA ·libc_kqueue_trampoline_addr(SB)/4, $libc_kqueue_trampoline<>(SB) + +TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lchown(SB) +GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $4 +DATA ·libc_lchown_trampoline_addr(SB)/4, $libc_lchown_trampoline<>(SB) + +TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_link(SB) +GLOBL ·libc_link_trampoline_addr(SB), RODATA, $4 +DATA ·libc_link_trampoline_addr(SB)/4, $libc_link_trampoline<>(SB) + +TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_linkat(SB) +GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_linkat_trampoline_addr(SB)/4, $libc_linkat_trampoline<>(SB) + +TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_listen(SB) +GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $4 +DATA ·libc_listen_trampoline_addr(SB)/4, $libc_listen_trampoline<>(SB) + +TEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lstat(SB) +GLOBL ·libc_lstat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_lstat_trampoline_addr(SB)/4, $libc_lstat_trampoline<>(SB) + +TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdir(SB) +GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mkdir_trampoline_addr(SB)/4, $libc_mkdir_trampoline<>(SB) + +TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdirat(SB) +GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mkdirat_trampoline_addr(SB)/4, $libc_mkdirat_trampoline<>(SB) + +TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifo(SB) +GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mkfifo_trampoline_addr(SB)/4, $libc_mkfifo_trampoline<>(SB) + +TEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifoat(SB) +GLOBL ·libc_mkfifoat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mkfifoat_trampoline_addr(SB)/4, $libc_mkfifoat_trampoline<>(SB) + +TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknod(SB) +GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mknod_trampoline_addr(SB)/4, $libc_mknod_trampoline<>(SB) + +TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknodat(SB) +GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mknodat_trampoline_addr(SB)/4, $libc_mknodat_trampoline<>(SB) + +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mount(SB) +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mount_trampoline_addr(SB)/4, $libc_mount_trampoline<>(SB) + +TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_nanosleep(SB) +GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $4 +DATA ·libc_nanosleep_trampoline_addr(SB)/4, $libc_nanosleep_trampoline<>(SB) + +TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_open(SB) +GLOBL ·libc_open_trampoline_addr(SB), RODATA, $4 +DATA ·libc_open_trampoline_addr(SB)/4, $libc_open_trampoline<>(SB) + +TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_openat(SB) +GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_openat_trampoline_addr(SB)/4, $libc_openat_trampoline<>(SB) + +TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pathconf(SB) +GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $4 +DATA ·libc_pathconf_trampoline_addr(SB)/4, $libc_pathconf_trampoline<>(SB) + +TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pread(SB) +GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $4 +DATA ·libc_pread_trampoline_addr(SB)/4, $libc_pread_trampoline<>(SB) + +TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pwrite(SB) +GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $4 +DATA ·libc_pwrite_trampoline_addr(SB)/4, $libc_pwrite_trampoline<>(SB) + +TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_read(SB) +GLOBL ·libc_read_trampoline_addr(SB), RODATA, $4 +DATA ·libc_read_trampoline_addr(SB)/4, $libc_read_trampoline<>(SB) + +TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlink(SB) +GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $4 +DATA ·libc_readlink_trampoline_addr(SB)/4, $libc_readlink_trampoline<>(SB) + +TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlinkat(SB) +GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_readlinkat_trampoline_addr(SB)/4, $libc_readlinkat_trampoline<>(SB) + +TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rename(SB) +GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $4 +DATA ·libc_rename_trampoline_addr(SB)/4, $libc_rename_trampoline<>(SB) + +TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renameat(SB) +GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_renameat_trampoline_addr(SB)/4, $libc_renameat_trampoline<>(SB) + +TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_revoke(SB) +GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $4 +DATA ·libc_revoke_trampoline_addr(SB)/4, $libc_revoke_trampoline<>(SB) + +TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rmdir(SB) +GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $4 +DATA ·libc_rmdir_trampoline_addr(SB)/4, $libc_rmdir_trampoline<>(SB) + +TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lseek(SB) +GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $4 +DATA ·libc_lseek_trampoline_addr(SB)/4, $libc_lseek_trampoline<>(SB) + +TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_select(SB) +GLOBL ·libc_select_trampoline_addr(SB), RODATA, $4 +DATA ·libc_select_trampoline_addr(SB)/4, $libc_select_trampoline<>(SB) + +TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setegid(SB) +GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setegid_trampoline_addr(SB)/4, $libc_setegid_trampoline<>(SB) + +TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_seteuid(SB) +GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_seteuid_trampoline_addr(SB)/4, $libc_seteuid_trampoline<>(SB) + +TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgid(SB) +GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setgid_trampoline_addr(SB)/4, $libc_setgid_trampoline<>(SB) + +TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setlogin(SB) +GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setlogin_trampoline_addr(SB)/4, $libc_setlogin_trampoline<>(SB) + +TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpgid(SB) +GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setpgid_trampoline_addr(SB)/4, $libc_setpgid_trampoline<>(SB) + +TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpriority(SB) +GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setpriority_trampoline_addr(SB)/4, $libc_setpriority_trampoline<>(SB) + +TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setregid(SB) +GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setregid_trampoline_addr(SB)/4, $libc_setregid_trampoline<>(SB) + +TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setreuid(SB) +GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setreuid_trampoline_addr(SB)/4, $libc_setreuid_trampoline<>(SB) + +TEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setresgid(SB) +GLOBL ·libc_setresgid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setresgid_trampoline_addr(SB)/4, $libc_setresgid_trampoline<>(SB) + +TEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setresuid(SB) +GLOBL ·libc_setresuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setresuid_trampoline_addr(SB)/4, $libc_setresuid_trampoline<>(SB) + +TEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setrtable(SB) +GLOBL ·libc_setrtable_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setrtable_trampoline_addr(SB)/4, $libc_setrtable_trampoline<>(SB) + +TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsid(SB) +GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setsid_trampoline_addr(SB)/4, $libc_setsid_trampoline<>(SB) + +TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_settimeofday(SB) +GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $4 +DATA ·libc_settimeofday_trampoline_addr(SB)/4, $libc_settimeofday_trampoline<>(SB) + +TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setuid(SB) +GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setuid_trampoline_addr(SB)/4, $libc_setuid_trampoline<>(SB) + +TEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_stat(SB) +GLOBL ·libc_stat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_stat_trampoline_addr(SB)/4, $libc_stat_trampoline<>(SB) + +TEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_statfs(SB) +GLOBL ·libc_statfs_trampoline_addr(SB), RODATA, $4 +DATA ·libc_statfs_trampoline_addr(SB)/4, $libc_statfs_trampoline<>(SB) + +TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlink(SB) +GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $4 +DATA ·libc_symlink_trampoline_addr(SB)/4, $libc_symlink_trampoline<>(SB) + +TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlinkat(SB) +GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_symlinkat_trampoline_addr(SB)/4, $libc_symlinkat_trampoline<>(SB) + +TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sync(SB) +GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $4 +DATA ·libc_sync_trampoline_addr(SB)/4, $libc_sync_trampoline<>(SB) + +TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_truncate(SB) +GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $4 +DATA ·libc_truncate_trampoline_addr(SB)/4, $libc_truncate_trampoline<>(SB) + +TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_umask(SB) +GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $4 +DATA ·libc_umask_trampoline_addr(SB)/4, $libc_umask_trampoline<>(SB) + +TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlink(SB) +GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $4 +DATA ·libc_unlink_trampoline_addr(SB)/4, $libc_unlink_trampoline<>(SB) + +TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlinkat(SB) +GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_unlinkat_trampoline_addr(SB)/4, $libc_unlinkat_trampoline<>(SB) + +TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unmount(SB) +GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $4 +DATA ·libc_unmount_trampoline_addr(SB)/4, $libc_unmount_trampoline<>(SB) + +TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_write(SB) +GLOBL ·libc_write_trampoline_addr(SB), RODATA, $4 +DATA ·libc_write_trampoline_addr(SB)/4, $libc_write_trampoline<>(SB) + +TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mmap(SB) +GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mmap_trampoline_addr(SB)/4, $libc_mmap_trampoline<>(SB) + +TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munmap(SB) +GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $4 +DATA ·libc_munmap_trampoline_addr(SB)/4, $libc_munmap_trampoline<>(SB) + +TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getfsstat(SB) +GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getfsstat_trampoline_addr(SB)/4, $libc_getfsstat_trampoline<>(SB) + +TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimensat(SB) +GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_utimensat_trampoline_addr(SB)/4, $libc_utimensat_trampoline<>(SB) + +TEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pledge(SB) +GLOBL ·libc_pledge_trampoline_addr(SB), RODATA, $4 +DATA ·libc_pledge_trampoline_addr(SB)/4, $libc_pledge_trampoline<>(SB) + +TEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unveil(SB) +GLOBL ·libc_unveil_trampoline_addr(SB), RODATA, $4 +DATA ·libc_unveil_trampoline_addr(SB)/4, $libc_unveil_trampoline<>(SB) diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go new file mode 100644 index 000000000..e1ec0dbe4 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go @@ -0,0 +1,2323 @@ +// go run mksyscall.go -openbsd -libc -tags openbsd,amd64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build openbsd && amd64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgroups getgroups "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgroups setgroups "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_wait4_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_wait4 wait4 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_accept_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_accept accept "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_bind_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_bind bind "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_connect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_connect connect "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socket_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socket socket "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockopt getsockopt "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsockopt setsockopt "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpeername_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpeername getpeername "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockname_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockname getsockname "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shutdown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shutdown shutdown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socketpair_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socketpair socketpair "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvfrom_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvfrom recvfrom "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendto_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendto sendto "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvmsg recvmsg "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendmsg sendmsg "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kevent_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kevent kevent "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimes utimes "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_futimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_futimes futimes "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_poll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_poll poll "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_madvise_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_madvise madvise "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlock mlock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlockall mlockall "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mprotect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mprotect mprotect "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_msync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_msync msync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlock munlock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlockall munlockall "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pipe2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pipe2 pipe2 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getdents_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getdents getdents "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getcwd_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getcwd getcwd "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) { + syscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid))) + return +} + +var libc_getresuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getresuid getresuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) { + syscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid))) + return +} + +var libc_getresgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getresgid getresgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ioctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sysctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sysctl sysctl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fcntl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fcntl fcntl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ppoll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ppoll ppoll "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_access_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_access access "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_adjtime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_adjtime adjtime "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chdir chdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chflags chflags "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chmod chmod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chown chown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chroot_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chroot chroot "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_clock_gettime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_clock_gettime clock_gettime "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_close_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_close close "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup dup "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup2 dup2 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(from int, to int, flags int) (err error) { + _, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup3_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup3 dup3 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + syscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0) + return +} + +var libc_exit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_exit exit "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_faccessat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_faccessat faccessat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchdir fchdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchflags fchflags "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmod fchmod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmodat fchmodat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchown fchown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchownat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchownat fchownat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_flock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_flock flock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fpathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fpathconf fpathconf "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstat fstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatat fstatat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatfs fstatfs "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fsync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fsync fsync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ftruncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ftruncate ftruncate "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0) + egid = int(r0) + return +} + +var libc_getegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getegid getegid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_geteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_geteuid geteuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0) + gid = int(r0) + return +} + +var libc_getgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgid getgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgid getpgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0) + pgrp = int(r0) + return +} + +var libc_getpgrp_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgrp getpgrp "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0) + pid = int(r0) + return +} + +var libc_getpid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpid getpid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0) + ppid = int(r0) + return +} + +var libc_getppid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getppid getppid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpriority getpriority "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrlimit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrlimit getrlimit "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrtable() (rtable int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0) + rtable = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrtable getrtable "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrusage_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrusage getrusage "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsid getsid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_gettimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_getuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getuid getuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +var libc_issetugid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_issetugid issetugid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kill_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kill kill "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kqueue_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kqueue kqueue "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lchown lchown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_link_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_link link "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_linkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_linkat linkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_listen_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_listen listen "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lstat lstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdir mkdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdirat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdirat mkdirat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkfifo_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifo mkfifo "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkfifoat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifoat mkfifoat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mknod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknod mknod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mknodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknodat mknodat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_nanosleep_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_nanosleep nanosleep "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_open_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_open open "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_openat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_openat openat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pathconf pathconf "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pread_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pread pread "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pwrite_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pwrite pwrite "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_read_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_read read "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlink readlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlinkat readlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rename_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rename rename "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_renameat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renameat renameat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_revoke_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_revoke revoke "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rmdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rmdir rmdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lseek_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lseek lseek "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_select_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_select select "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setegid setegid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_seteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_seteuid seteuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgid setgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setlogin_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setlogin setlogin "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpgid setpgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpriority setpriority "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setregid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setregid setregid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setreuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setreuid setreuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setresgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresgid setresgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setresuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresuid setresuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrtable(rtable int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setrtable setrtable "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsid setsid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_settimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_settimeofday settimeofday "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setuid setuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_stat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_stat stat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_statfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_statfs statfs "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlink symlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlinkat symlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sync sync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_truncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_truncate truncate "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +var libc_umask_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_umask umask "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlink unlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlinkat unlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unmount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unmount unmount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_write_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_write write "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mmap mmap "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munmap munmap "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getfsstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getfsstat getfsstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimensat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimensat utimensat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pledge(promises *byte, execpromises *byte) (err error) { + _, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pledge_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pledge pledge "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func unveil(path *byte, flags *byte) (err error) { + _, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unveil_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unveil unveil "libc.so" diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s b/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s new file mode 100644 index 000000000..880c6d6e3 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s @@ -0,0 +1,699 @@ +// go run mkasm.go openbsd amd64 +// Code generated by the command above; DO NOT EDIT. + +#include "textflag.h" + +TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgroups(SB) +GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB) + +TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgroups(SB) +GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB) + +TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_wait4(SB) +GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $8 +DATA ·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB) + +TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_accept(SB) +GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $8 +DATA ·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB) + +TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_bind(SB) +GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $8 +DATA ·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB) + +TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_connect(SB) +GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB) + +TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socket(SB) +GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB) + +TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockopt(SB) +GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB) + +TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsockopt(SB) +GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB) + +TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpeername(SB) +GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB) + +TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockname(SB) +GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB) + +TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shutdown(SB) +GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB) + +TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socketpair(SB) +GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB) + +TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvfrom(SB) +GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB) + +TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendto(SB) +GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB) + +TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvmsg(SB) +GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB) + +TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendmsg(SB) +GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB) + +TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kevent(SB) +GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB) + +TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimes(SB) +GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB) + +TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_futimes(SB) +GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB) + +TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_poll(SB) +GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $8 +DATA ·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB) + +TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_madvise(SB) +GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $8 +DATA ·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB) + +TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlock(SB) +GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB) + +TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlockall(SB) +GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB) + +TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mprotect(SB) +GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB) + +TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_msync(SB) +GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB) + +TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlock(SB) +GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB) + +TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlockall(SB) +GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB) + +TEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pipe2(SB) +GLOBL ·libc_pipe2_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB) + +TEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getdents(SB) +GLOBL ·libc_getdents_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB) + +TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getcwd(SB) +GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB) + +TEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getresuid(SB) +GLOBL ·libc_getresuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB) + +TEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getresgid(SB) +GLOBL ·libc_getresgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB) + +TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ioctl(SB) +GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB) + +TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sysctl(SB) +GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) + +TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fcntl(SB) +GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB) + +TEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ppoll(SB) +GLOBL ·libc_ppoll_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB) + +TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_access(SB) +GLOBL ·libc_access_trampoline_addr(SB), RODATA, $8 +DATA ·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB) + +TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_adjtime(SB) +GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $8 +DATA ·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB) + +TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chdir(SB) +GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB) + +TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chflags(SB) +GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB) + +TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chmod(SB) +GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB) + +TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chown(SB) +GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB) + +TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chroot(SB) +GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB) + +TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_clock_gettime(SB) +GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $8 +DATA ·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB) + +TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_close(SB) +GLOBL ·libc_close_trampoline_addr(SB), RODATA, $8 +DATA ·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB) + +TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup(SB) +GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB) + +TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup2(SB) +GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB) + +TEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup3(SB) +GLOBL ·libc_dup3_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB) + +TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_exit(SB) +GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB) + +TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_faccessat(SB) +GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB) + +TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchdir(SB) +GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB) + +TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchflags(SB) +GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB) + +TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmod(SB) +GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB) + +TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmodat(SB) +GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB) + +TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchown(SB) +GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB) + +TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchownat(SB) +GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB) + +TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_flock(SB) +GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB) + +TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fpathconf(SB) +GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB) + +TEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstat(SB) +GLOBL ·libc_fstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB) + +TEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatat(SB) +GLOBL ·libc_fstatat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB) + +TEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatfs(SB) +GLOBL ·libc_fstatfs_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB) + +TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fsync(SB) +GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB) + +TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ftruncate(SB) +GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB) + +TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getegid(SB) +GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB) + +TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_geteuid(SB) +GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB) + +TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgid(SB) +GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB) + +TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgid(SB) +GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB) + +TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgrp(SB) +GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB) + +TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpid(SB) +GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB) + +TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getppid(SB) +GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB) + +TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpriority(SB) +GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB) + +TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrlimit(SB) +GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB) + +TEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrtable(SB) +GLOBL ·libc_getrtable_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB) + +TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrusage(SB) +GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB) + +TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsid(SB) +GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB) + +TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_gettimeofday(SB) +GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB) + +TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getuid(SB) +GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB) + +TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_issetugid(SB) +GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB) + +TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kill(SB) +GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB) + +TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kqueue(SB) +GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB) + +TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lchown(SB) +GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB) + +TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_link(SB) +GLOBL ·libc_link_trampoline_addr(SB), RODATA, $8 +DATA ·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB) + +TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_linkat(SB) +GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB) + +TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_listen(SB) +GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $8 +DATA ·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB) + +TEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lstat(SB) +GLOBL ·libc_lstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB) + +TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdir(SB) +GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB) + +TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdirat(SB) +GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB) + +TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifo(SB) +GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB) + +TEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifoat(SB) +GLOBL ·libc_mkfifoat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB) + +TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknod(SB) +GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB) + +TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknodat(SB) +GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB) + +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mount(SB) +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB) + +TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_nanosleep(SB) +GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $8 +DATA ·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB) + +TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_open(SB) +GLOBL ·libc_open_trampoline_addr(SB), RODATA, $8 +DATA ·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB) + +TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_openat(SB) +GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB) + +TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pathconf(SB) +GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB) + +TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pread(SB) +GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB) + +TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pwrite(SB) +GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB) + +TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_read(SB) +GLOBL ·libc_read_trampoline_addr(SB), RODATA, $8 +DATA ·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB) + +TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlink(SB) +GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB) + +TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlinkat(SB) +GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB) + +TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rename(SB) +GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB) + +TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renameat(SB) +GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB) + +TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_revoke(SB) +GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $8 +DATA ·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB) + +TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rmdir(SB) +GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB) + +TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lseek(SB) +GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB) + +TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_select(SB) +GLOBL ·libc_select_trampoline_addr(SB), RODATA, $8 +DATA ·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB) + +TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setegid(SB) +GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB) + +TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_seteuid(SB) +GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB) + +TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgid(SB) +GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB) + +TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setlogin(SB) +GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB) + +TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpgid(SB) +GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB) + +TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpriority(SB) +GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB) + +TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setregid(SB) +GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB) + +TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setreuid(SB) +GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB) + +TEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setresgid(SB) +GLOBL ·libc_setresgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB) + +TEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setresuid(SB) +GLOBL ·libc_setresuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB) + +TEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setrtable(SB) +GLOBL ·libc_setrtable_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB) + +TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsid(SB) +GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB) + +TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_settimeofday(SB) +GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB) + +TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setuid(SB) +GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB) + +TEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_stat(SB) +GLOBL ·libc_stat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB) + +TEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_statfs(SB) +GLOBL ·libc_statfs_trampoline_addr(SB), RODATA, $8 +DATA ·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB) + +TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlink(SB) +GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB) + +TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlinkat(SB) +GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB) + +TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sync(SB) +GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB) + +TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_truncate(SB) +GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB) + +TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_umask(SB) +GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $8 +DATA ·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB) + +TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlink(SB) +GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB) + +TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlinkat(SB) +GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB) + +TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unmount(SB) +GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB) + +TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_write(SB) +GLOBL ·libc_write_trampoline_addr(SB), RODATA, $8 +DATA ·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB) + +TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mmap(SB) +GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB) + +TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munmap(SB) +GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) + +TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getfsstat(SB) +GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB) + +TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimensat(SB) +GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB) + +TEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pledge(SB) +GLOBL ·libc_pledge_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB) + +TEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unveil(SB) +GLOBL ·libc_unveil_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB) diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go new file mode 100644 index 000000000..7c8452a63 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go @@ -0,0 +1,2323 @@ +// go run mksyscall.go -l32 -openbsd -arm -libc -tags openbsd,arm syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build openbsd && arm + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgroups getgroups "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgroups setgroups "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_wait4_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_wait4 wait4 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_accept_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_accept accept "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_bind_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_bind bind "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_connect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_connect connect "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socket_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socket socket "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockopt getsockopt "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsockopt setsockopt "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpeername_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpeername getpeername "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockname_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockname getsockname "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shutdown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shutdown shutdown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socketpair_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socketpair socketpair "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvfrom_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvfrom recvfrom "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendto_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendto sendto "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvmsg recvmsg "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendmsg sendmsg "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kevent_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kevent kevent "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimes utimes "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_futimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_futimes futimes "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_poll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_poll poll "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_madvise_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_madvise madvise "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlock mlock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlockall mlockall "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mprotect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mprotect mprotect "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_msync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_msync msync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlock munlock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlockall munlockall "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pipe2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pipe2 pipe2 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getdents_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getdents getdents "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getcwd_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getcwd getcwd "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) { + syscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid))) + return +} + +var libc_getresuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getresuid getresuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) { + syscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid))) + return +} + +var libc_getresgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getresgid getresgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ioctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sysctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sysctl sysctl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fcntl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fcntl fcntl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ppoll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ppoll ppoll "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_access_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_access access "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_adjtime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_adjtime adjtime "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chdir chdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chflags chflags "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chmod chmod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chown chown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chroot_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chroot chroot "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_clock_gettime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_clock_gettime clock_gettime "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_close_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_close close "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup dup "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup2 dup2 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(from int, to int, flags int) (err error) { + _, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup3_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup3 dup3 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + syscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0) + return +} + +var libc_exit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_exit exit "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_faccessat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_faccessat faccessat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchdir fchdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchflags fchflags "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmod fchmod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmodat fchmodat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchown fchown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchownat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchownat fchownat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_flock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_flock flock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fpathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fpathconf fpathconf "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstat fstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatat fstatat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatfs fstatfs "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fsync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fsync fsync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := syscall_syscall6(libc_ftruncate_trampoline_addr, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ftruncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ftruncate ftruncate "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0) + egid = int(r0) + return +} + +var libc_getegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getegid getegid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_geteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_geteuid geteuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0) + gid = int(r0) + return +} + +var libc_getgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgid getgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgid getpgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0) + pgrp = int(r0) + return +} + +var libc_getpgrp_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgrp getpgrp "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0) + pid = int(r0) + return +} + +var libc_getpid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpid getpid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0) + ppid = int(r0) + return +} + +var libc_getppid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getppid getppid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpriority getpriority "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrlimit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrlimit getrlimit "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrtable() (rtable int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0) + rtable = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrtable getrtable "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrusage_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrusage getrusage "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsid getsid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_gettimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_getuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getuid getuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +var libc_issetugid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_issetugid issetugid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kill_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kill kill "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kqueue_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kqueue kqueue "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lchown lchown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_link_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_link link "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_linkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_linkat linkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_listen_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_listen listen "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lstat lstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdir mkdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdirat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdirat mkdirat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkfifo_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifo mkfifo "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkfifoat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifoat mkfifoat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mknod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknod mknod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mknodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknodat mknodat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_nanosleep_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_nanosleep nanosleep "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_open_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_open open "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_openat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_openat openat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pathconf pathconf "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pread_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pread pread "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pwrite_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pwrite pwrite "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_read_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_read read "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlink readlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlinkat readlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rename_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rename rename "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_renameat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renameat renameat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_revoke_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_revoke revoke "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rmdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rmdir rmdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := syscall_syscall6(libc_lseek_trampoline_addr, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lseek_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lseek lseek "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_select_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_select select "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setegid setegid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_seteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_seteuid seteuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgid setgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setlogin_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setlogin setlogin "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpgid setpgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpriority setpriority "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setregid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setregid setregid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setreuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setreuid setreuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setresgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresgid setresgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setresuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresuid setresuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrtable(rtable int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setrtable setrtable "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsid setsid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_settimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_settimeofday settimeofday "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setuid setuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_stat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_stat stat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_statfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_statfs statfs "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlink symlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlinkat symlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sync sync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_truncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_truncate truncate "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +var libc_umask_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_umask umask "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlink unlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlinkat unlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unmount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unmount unmount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_write_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_write write "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall9(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mmap mmap "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munmap munmap "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getfsstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getfsstat getfsstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimensat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimensat utimensat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pledge(promises *byte, execpromises *byte) (err error) { + _, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pledge_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pledge pledge "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func unveil(path *byte, flags *byte) (err error) { + _, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unveil_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unveil unveil "libc.so" diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s b/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s new file mode 100644 index 000000000..b8ef95b0f --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s @@ -0,0 +1,699 @@ +// go run mkasm.go openbsd arm +// Code generated by the command above; DO NOT EDIT. + +#include "textflag.h" + +TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgroups(SB) +GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getgroups_trampoline_addr(SB)/4, $libc_getgroups_trampoline<>(SB) + +TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgroups(SB) +GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setgroups_trampoline_addr(SB)/4, $libc_setgroups_trampoline<>(SB) + +TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_wait4(SB) +GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $4 +DATA ·libc_wait4_trampoline_addr(SB)/4, $libc_wait4_trampoline<>(SB) + +TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_accept(SB) +GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $4 +DATA ·libc_accept_trampoline_addr(SB)/4, $libc_accept_trampoline<>(SB) + +TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_bind(SB) +GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $4 +DATA ·libc_bind_trampoline_addr(SB)/4, $libc_bind_trampoline<>(SB) + +TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_connect(SB) +GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $4 +DATA ·libc_connect_trampoline_addr(SB)/4, $libc_connect_trampoline<>(SB) + +TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socket(SB) +GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $4 +DATA ·libc_socket_trampoline_addr(SB)/4, $libc_socket_trampoline<>(SB) + +TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockopt(SB) +GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getsockopt_trampoline_addr(SB)/4, $libc_getsockopt_trampoline<>(SB) + +TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsockopt(SB) +GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setsockopt_trampoline_addr(SB)/4, $libc_setsockopt_trampoline<>(SB) + +TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpeername(SB) +GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getpeername_trampoline_addr(SB)/4, $libc_getpeername_trampoline<>(SB) + +TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockname(SB) +GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getsockname_trampoline_addr(SB)/4, $libc_getsockname_trampoline<>(SB) + +TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shutdown(SB) +GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $4 +DATA ·libc_shutdown_trampoline_addr(SB)/4, $libc_shutdown_trampoline<>(SB) + +TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socketpair(SB) +GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $4 +DATA ·libc_socketpair_trampoline_addr(SB)/4, $libc_socketpair_trampoline<>(SB) + +TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvfrom(SB) +GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $4 +DATA ·libc_recvfrom_trampoline_addr(SB)/4, $libc_recvfrom_trampoline<>(SB) + +TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendto(SB) +GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $4 +DATA ·libc_sendto_trampoline_addr(SB)/4, $libc_sendto_trampoline<>(SB) + +TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvmsg(SB) +GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $4 +DATA ·libc_recvmsg_trampoline_addr(SB)/4, $libc_recvmsg_trampoline<>(SB) + +TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendmsg(SB) +GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $4 +DATA ·libc_sendmsg_trampoline_addr(SB)/4, $libc_sendmsg_trampoline<>(SB) + +TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kevent(SB) +GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $4 +DATA ·libc_kevent_trampoline_addr(SB)/4, $libc_kevent_trampoline<>(SB) + +TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimes(SB) +GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $4 +DATA ·libc_utimes_trampoline_addr(SB)/4, $libc_utimes_trampoline<>(SB) + +TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_futimes(SB) +GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $4 +DATA ·libc_futimes_trampoline_addr(SB)/4, $libc_futimes_trampoline<>(SB) + +TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_poll(SB) +GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $4 +DATA ·libc_poll_trampoline_addr(SB)/4, $libc_poll_trampoline<>(SB) + +TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_madvise(SB) +GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $4 +DATA ·libc_madvise_trampoline_addr(SB)/4, $libc_madvise_trampoline<>(SB) + +TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlock(SB) +GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mlock_trampoline_addr(SB)/4, $libc_mlock_trampoline<>(SB) + +TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlockall(SB) +GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mlockall_trampoline_addr(SB)/4, $libc_mlockall_trampoline<>(SB) + +TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mprotect(SB) +GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mprotect_trampoline_addr(SB)/4, $libc_mprotect_trampoline<>(SB) + +TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_msync(SB) +GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $4 +DATA ·libc_msync_trampoline_addr(SB)/4, $libc_msync_trampoline<>(SB) + +TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlock(SB) +GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $4 +DATA ·libc_munlock_trampoline_addr(SB)/4, $libc_munlock_trampoline<>(SB) + +TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlockall(SB) +GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $4 +DATA ·libc_munlockall_trampoline_addr(SB)/4, $libc_munlockall_trampoline<>(SB) + +TEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pipe2(SB) +GLOBL ·libc_pipe2_trampoline_addr(SB), RODATA, $4 +DATA ·libc_pipe2_trampoline_addr(SB)/4, $libc_pipe2_trampoline<>(SB) + +TEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getdents(SB) +GLOBL ·libc_getdents_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getdents_trampoline_addr(SB)/4, $libc_getdents_trampoline<>(SB) + +TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getcwd(SB) +GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getcwd_trampoline_addr(SB)/4, $libc_getcwd_trampoline<>(SB) + +TEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getresuid(SB) +GLOBL ·libc_getresuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getresuid_trampoline_addr(SB)/4, $libc_getresuid_trampoline<>(SB) + +TEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getresgid(SB) +GLOBL ·libc_getresgid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getresgid_trampoline_addr(SB)/4, $libc_getresgid_trampoline<>(SB) + +TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ioctl(SB) +GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $4 +DATA ·libc_ioctl_trampoline_addr(SB)/4, $libc_ioctl_trampoline<>(SB) + +TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sysctl(SB) +GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $4 +DATA ·libc_sysctl_trampoline_addr(SB)/4, $libc_sysctl_trampoline<>(SB) + +TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fcntl(SB) +GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fcntl_trampoline_addr(SB)/4, $libc_fcntl_trampoline<>(SB) + +TEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ppoll(SB) +GLOBL ·libc_ppoll_trampoline_addr(SB), RODATA, $4 +DATA ·libc_ppoll_trampoline_addr(SB)/4, $libc_ppoll_trampoline<>(SB) + +TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_access(SB) +GLOBL ·libc_access_trampoline_addr(SB), RODATA, $4 +DATA ·libc_access_trampoline_addr(SB)/4, $libc_access_trampoline<>(SB) + +TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_adjtime(SB) +GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $4 +DATA ·libc_adjtime_trampoline_addr(SB)/4, $libc_adjtime_trampoline<>(SB) + +TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chdir(SB) +GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $4 +DATA ·libc_chdir_trampoline_addr(SB)/4, $libc_chdir_trampoline<>(SB) + +TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chflags(SB) +GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $4 +DATA ·libc_chflags_trampoline_addr(SB)/4, $libc_chflags_trampoline<>(SB) + +TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chmod(SB) +GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $4 +DATA ·libc_chmod_trampoline_addr(SB)/4, $libc_chmod_trampoline<>(SB) + +TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chown(SB) +GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $4 +DATA ·libc_chown_trampoline_addr(SB)/4, $libc_chown_trampoline<>(SB) + +TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chroot(SB) +GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $4 +DATA ·libc_chroot_trampoline_addr(SB)/4, $libc_chroot_trampoline<>(SB) + +TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_clock_gettime(SB) +GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $4 +DATA ·libc_clock_gettime_trampoline_addr(SB)/4, $libc_clock_gettime_trampoline<>(SB) + +TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_close(SB) +GLOBL ·libc_close_trampoline_addr(SB), RODATA, $4 +DATA ·libc_close_trampoline_addr(SB)/4, $libc_close_trampoline<>(SB) + +TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup(SB) +GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $4 +DATA ·libc_dup_trampoline_addr(SB)/4, $libc_dup_trampoline<>(SB) + +TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup2(SB) +GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $4 +DATA ·libc_dup2_trampoline_addr(SB)/4, $libc_dup2_trampoline<>(SB) + +TEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup3(SB) +GLOBL ·libc_dup3_trampoline_addr(SB), RODATA, $4 +DATA ·libc_dup3_trampoline_addr(SB)/4, $libc_dup3_trampoline<>(SB) + +TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_exit(SB) +GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $4 +DATA ·libc_exit_trampoline_addr(SB)/4, $libc_exit_trampoline<>(SB) + +TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_faccessat(SB) +GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_faccessat_trampoline_addr(SB)/4, $libc_faccessat_trampoline<>(SB) + +TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchdir(SB) +GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchdir_trampoline_addr(SB)/4, $libc_fchdir_trampoline<>(SB) + +TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchflags(SB) +GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchflags_trampoline_addr(SB)/4, $libc_fchflags_trampoline<>(SB) + +TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmod(SB) +GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchmod_trampoline_addr(SB)/4, $libc_fchmod_trampoline<>(SB) + +TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmodat(SB) +GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchmodat_trampoline_addr(SB)/4, $libc_fchmodat_trampoline<>(SB) + +TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchown(SB) +GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchown_trampoline_addr(SB)/4, $libc_fchown_trampoline<>(SB) + +TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchownat(SB) +GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchownat_trampoline_addr(SB)/4, $libc_fchownat_trampoline<>(SB) + +TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_flock(SB) +GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $4 +DATA ·libc_flock_trampoline_addr(SB)/4, $libc_flock_trampoline<>(SB) + +TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fpathconf(SB) +GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fpathconf_trampoline_addr(SB)/4, $libc_fpathconf_trampoline<>(SB) + +TEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstat(SB) +GLOBL ·libc_fstat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fstat_trampoline_addr(SB)/4, $libc_fstat_trampoline<>(SB) + +TEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatat(SB) +GLOBL ·libc_fstatat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fstatat_trampoline_addr(SB)/4, $libc_fstatat_trampoline<>(SB) + +TEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatfs(SB) +GLOBL ·libc_fstatfs_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fstatfs_trampoline_addr(SB)/4, $libc_fstatfs_trampoline<>(SB) + +TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fsync(SB) +GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fsync_trampoline_addr(SB)/4, $libc_fsync_trampoline<>(SB) + +TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ftruncate(SB) +GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $4 +DATA ·libc_ftruncate_trampoline_addr(SB)/4, $libc_ftruncate_trampoline<>(SB) + +TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getegid(SB) +GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getegid_trampoline_addr(SB)/4, $libc_getegid_trampoline<>(SB) + +TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_geteuid(SB) +GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_geteuid_trampoline_addr(SB)/4, $libc_geteuid_trampoline<>(SB) + +TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgid(SB) +GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getgid_trampoline_addr(SB)/4, $libc_getgid_trampoline<>(SB) + +TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgid(SB) +GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getpgid_trampoline_addr(SB)/4, $libc_getpgid_trampoline<>(SB) + +TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgrp(SB) +GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getpgrp_trampoline_addr(SB)/4, $libc_getpgrp_trampoline<>(SB) + +TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpid(SB) +GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getpid_trampoline_addr(SB)/4, $libc_getpid_trampoline<>(SB) + +TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getppid(SB) +GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getppid_trampoline_addr(SB)/4, $libc_getppid_trampoline<>(SB) + +TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpriority(SB) +GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getpriority_trampoline_addr(SB)/4, $libc_getpriority_trampoline<>(SB) + +TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrlimit(SB) +GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getrlimit_trampoline_addr(SB)/4, $libc_getrlimit_trampoline<>(SB) + +TEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrtable(SB) +GLOBL ·libc_getrtable_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getrtable_trampoline_addr(SB)/4, $libc_getrtable_trampoline<>(SB) + +TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrusage(SB) +GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getrusage_trampoline_addr(SB)/4, $libc_getrusage_trampoline<>(SB) + +TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsid(SB) +GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getsid_trampoline_addr(SB)/4, $libc_getsid_trampoline<>(SB) + +TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_gettimeofday(SB) +GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $4 +DATA ·libc_gettimeofday_trampoline_addr(SB)/4, $libc_gettimeofday_trampoline<>(SB) + +TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getuid(SB) +GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getuid_trampoline_addr(SB)/4, $libc_getuid_trampoline<>(SB) + +TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_issetugid(SB) +GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_issetugid_trampoline_addr(SB)/4, $libc_issetugid_trampoline<>(SB) + +TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kill(SB) +GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $4 +DATA ·libc_kill_trampoline_addr(SB)/4, $libc_kill_trampoline<>(SB) + +TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kqueue(SB) +GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $4 +DATA ·libc_kqueue_trampoline_addr(SB)/4, $libc_kqueue_trampoline<>(SB) + +TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lchown(SB) +GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $4 +DATA ·libc_lchown_trampoline_addr(SB)/4, $libc_lchown_trampoline<>(SB) + +TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_link(SB) +GLOBL ·libc_link_trampoline_addr(SB), RODATA, $4 +DATA ·libc_link_trampoline_addr(SB)/4, $libc_link_trampoline<>(SB) + +TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_linkat(SB) +GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_linkat_trampoline_addr(SB)/4, $libc_linkat_trampoline<>(SB) + +TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_listen(SB) +GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $4 +DATA ·libc_listen_trampoline_addr(SB)/4, $libc_listen_trampoline<>(SB) + +TEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lstat(SB) +GLOBL ·libc_lstat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_lstat_trampoline_addr(SB)/4, $libc_lstat_trampoline<>(SB) + +TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdir(SB) +GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mkdir_trampoline_addr(SB)/4, $libc_mkdir_trampoline<>(SB) + +TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdirat(SB) +GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mkdirat_trampoline_addr(SB)/4, $libc_mkdirat_trampoline<>(SB) + +TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifo(SB) +GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mkfifo_trampoline_addr(SB)/4, $libc_mkfifo_trampoline<>(SB) + +TEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifoat(SB) +GLOBL ·libc_mkfifoat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mkfifoat_trampoline_addr(SB)/4, $libc_mkfifoat_trampoline<>(SB) + +TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknod(SB) +GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mknod_trampoline_addr(SB)/4, $libc_mknod_trampoline<>(SB) + +TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknodat(SB) +GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mknodat_trampoline_addr(SB)/4, $libc_mknodat_trampoline<>(SB) + +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mount(SB) +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mount_trampoline_addr(SB)/4, $libc_mount_trampoline<>(SB) + +TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_nanosleep(SB) +GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $4 +DATA ·libc_nanosleep_trampoline_addr(SB)/4, $libc_nanosleep_trampoline<>(SB) + +TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_open(SB) +GLOBL ·libc_open_trampoline_addr(SB), RODATA, $4 +DATA ·libc_open_trampoline_addr(SB)/4, $libc_open_trampoline<>(SB) + +TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_openat(SB) +GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_openat_trampoline_addr(SB)/4, $libc_openat_trampoline<>(SB) + +TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pathconf(SB) +GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $4 +DATA ·libc_pathconf_trampoline_addr(SB)/4, $libc_pathconf_trampoline<>(SB) + +TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pread(SB) +GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $4 +DATA ·libc_pread_trampoline_addr(SB)/4, $libc_pread_trampoline<>(SB) + +TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pwrite(SB) +GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $4 +DATA ·libc_pwrite_trampoline_addr(SB)/4, $libc_pwrite_trampoline<>(SB) + +TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_read(SB) +GLOBL ·libc_read_trampoline_addr(SB), RODATA, $4 +DATA ·libc_read_trampoline_addr(SB)/4, $libc_read_trampoline<>(SB) + +TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlink(SB) +GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $4 +DATA ·libc_readlink_trampoline_addr(SB)/4, $libc_readlink_trampoline<>(SB) + +TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlinkat(SB) +GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_readlinkat_trampoline_addr(SB)/4, $libc_readlinkat_trampoline<>(SB) + +TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rename(SB) +GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $4 +DATA ·libc_rename_trampoline_addr(SB)/4, $libc_rename_trampoline<>(SB) + +TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renameat(SB) +GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_renameat_trampoline_addr(SB)/4, $libc_renameat_trampoline<>(SB) + +TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_revoke(SB) +GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $4 +DATA ·libc_revoke_trampoline_addr(SB)/4, $libc_revoke_trampoline<>(SB) + +TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rmdir(SB) +GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $4 +DATA ·libc_rmdir_trampoline_addr(SB)/4, $libc_rmdir_trampoline<>(SB) + +TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lseek(SB) +GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $4 +DATA ·libc_lseek_trampoline_addr(SB)/4, $libc_lseek_trampoline<>(SB) + +TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_select(SB) +GLOBL ·libc_select_trampoline_addr(SB), RODATA, $4 +DATA ·libc_select_trampoline_addr(SB)/4, $libc_select_trampoline<>(SB) + +TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setegid(SB) +GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setegid_trampoline_addr(SB)/4, $libc_setegid_trampoline<>(SB) + +TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_seteuid(SB) +GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_seteuid_trampoline_addr(SB)/4, $libc_seteuid_trampoline<>(SB) + +TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgid(SB) +GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setgid_trampoline_addr(SB)/4, $libc_setgid_trampoline<>(SB) + +TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setlogin(SB) +GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setlogin_trampoline_addr(SB)/4, $libc_setlogin_trampoline<>(SB) + +TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpgid(SB) +GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setpgid_trampoline_addr(SB)/4, $libc_setpgid_trampoline<>(SB) + +TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpriority(SB) +GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setpriority_trampoline_addr(SB)/4, $libc_setpriority_trampoline<>(SB) + +TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setregid(SB) +GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setregid_trampoline_addr(SB)/4, $libc_setregid_trampoline<>(SB) + +TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setreuid(SB) +GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setreuid_trampoline_addr(SB)/4, $libc_setreuid_trampoline<>(SB) + +TEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setresgid(SB) +GLOBL ·libc_setresgid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setresgid_trampoline_addr(SB)/4, $libc_setresgid_trampoline<>(SB) + +TEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setresuid(SB) +GLOBL ·libc_setresuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setresuid_trampoline_addr(SB)/4, $libc_setresuid_trampoline<>(SB) + +TEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setrtable(SB) +GLOBL ·libc_setrtable_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setrtable_trampoline_addr(SB)/4, $libc_setrtable_trampoline<>(SB) + +TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsid(SB) +GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setsid_trampoline_addr(SB)/4, $libc_setsid_trampoline<>(SB) + +TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_settimeofday(SB) +GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $4 +DATA ·libc_settimeofday_trampoline_addr(SB)/4, $libc_settimeofday_trampoline<>(SB) + +TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setuid(SB) +GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setuid_trampoline_addr(SB)/4, $libc_setuid_trampoline<>(SB) + +TEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_stat(SB) +GLOBL ·libc_stat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_stat_trampoline_addr(SB)/4, $libc_stat_trampoline<>(SB) + +TEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_statfs(SB) +GLOBL ·libc_statfs_trampoline_addr(SB), RODATA, $4 +DATA ·libc_statfs_trampoline_addr(SB)/4, $libc_statfs_trampoline<>(SB) + +TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlink(SB) +GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $4 +DATA ·libc_symlink_trampoline_addr(SB)/4, $libc_symlink_trampoline<>(SB) + +TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlinkat(SB) +GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_symlinkat_trampoline_addr(SB)/4, $libc_symlinkat_trampoline<>(SB) + +TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sync(SB) +GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $4 +DATA ·libc_sync_trampoline_addr(SB)/4, $libc_sync_trampoline<>(SB) + +TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_truncate(SB) +GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $4 +DATA ·libc_truncate_trampoline_addr(SB)/4, $libc_truncate_trampoline<>(SB) + +TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_umask(SB) +GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $4 +DATA ·libc_umask_trampoline_addr(SB)/4, $libc_umask_trampoline<>(SB) + +TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlink(SB) +GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $4 +DATA ·libc_unlink_trampoline_addr(SB)/4, $libc_unlink_trampoline<>(SB) + +TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlinkat(SB) +GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_unlinkat_trampoline_addr(SB)/4, $libc_unlinkat_trampoline<>(SB) + +TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unmount(SB) +GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $4 +DATA ·libc_unmount_trampoline_addr(SB)/4, $libc_unmount_trampoline<>(SB) + +TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_write(SB) +GLOBL ·libc_write_trampoline_addr(SB), RODATA, $4 +DATA ·libc_write_trampoline_addr(SB)/4, $libc_write_trampoline<>(SB) + +TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mmap(SB) +GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mmap_trampoline_addr(SB)/4, $libc_mmap_trampoline<>(SB) + +TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munmap(SB) +GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $4 +DATA ·libc_munmap_trampoline_addr(SB)/4, $libc_munmap_trampoline<>(SB) + +TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getfsstat(SB) +GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getfsstat_trampoline_addr(SB)/4, $libc_getfsstat_trampoline<>(SB) + +TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimensat(SB) +GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_utimensat_trampoline_addr(SB)/4, $libc_utimensat_trampoline<>(SB) + +TEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pledge(SB) +GLOBL ·libc_pledge_trampoline_addr(SB), RODATA, $4 +DATA ·libc_pledge_trampoline_addr(SB)/4, $libc_pledge_trampoline<>(SB) + +TEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unveil(SB) +GLOBL ·libc_unveil_trampoline_addr(SB), RODATA, $4 +DATA ·libc_unveil_trampoline_addr(SB)/4, $libc_unveil_trampoline<>(SB) diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go new file mode 100644 index 000000000..2ffdf861f --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go @@ -0,0 +1,2323 @@ +// go run mksyscall.go -openbsd -libc -tags openbsd,arm64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build openbsd && arm64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgroups getgroups "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgroups setgroups "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_wait4_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_wait4 wait4 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_accept_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_accept accept "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_bind_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_bind bind "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_connect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_connect connect "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socket_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socket socket "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockopt getsockopt "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsockopt setsockopt "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpeername_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpeername getpeername "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockname_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockname getsockname "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shutdown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shutdown shutdown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socketpair_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socketpair socketpair "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvfrom_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvfrom recvfrom "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendto_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendto sendto "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvmsg recvmsg "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendmsg sendmsg "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kevent_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kevent kevent "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimes utimes "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_futimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_futimes futimes "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_poll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_poll poll "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_madvise_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_madvise madvise "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlock mlock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlockall mlockall "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mprotect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mprotect mprotect "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_msync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_msync msync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlock munlock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlockall munlockall "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pipe2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pipe2 pipe2 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getdents_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getdents getdents "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getcwd_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getcwd getcwd "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) { + syscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid))) + return +} + +var libc_getresuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getresuid getresuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) { + syscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid))) + return +} + +var libc_getresgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getresgid getresgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ioctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sysctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sysctl sysctl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fcntl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fcntl fcntl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ppoll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ppoll ppoll "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_access_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_access access "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_adjtime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_adjtime adjtime "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chdir chdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chflags chflags "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chmod chmod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chown chown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chroot_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chroot chroot "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_clock_gettime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_clock_gettime clock_gettime "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_close_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_close close "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup dup "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup2 dup2 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(from int, to int, flags int) (err error) { + _, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup3_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup3 dup3 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + syscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0) + return +} + +var libc_exit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_exit exit "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_faccessat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_faccessat faccessat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchdir fchdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchflags fchflags "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmod fchmod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmodat fchmodat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchown fchown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchownat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchownat fchownat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_flock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_flock flock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fpathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fpathconf fpathconf "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstat fstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatat fstatat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatfs fstatfs "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fsync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fsync fsync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ftruncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ftruncate ftruncate "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0) + egid = int(r0) + return +} + +var libc_getegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getegid getegid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_geteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_geteuid geteuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0) + gid = int(r0) + return +} + +var libc_getgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgid getgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgid getpgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0) + pgrp = int(r0) + return +} + +var libc_getpgrp_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgrp getpgrp "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0) + pid = int(r0) + return +} + +var libc_getpid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpid getpid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0) + ppid = int(r0) + return +} + +var libc_getppid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getppid getppid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpriority getpriority "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrlimit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrlimit getrlimit "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrtable() (rtable int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0) + rtable = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrtable getrtable "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrusage_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrusage getrusage "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsid getsid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_gettimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_getuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getuid getuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +var libc_issetugid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_issetugid issetugid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kill_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kill kill "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kqueue_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kqueue kqueue "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lchown lchown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_link_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_link link "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_linkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_linkat linkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_listen_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_listen listen "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lstat lstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdir mkdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdirat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdirat mkdirat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkfifo_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifo mkfifo "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkfifoat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifoat mkfifoat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mknod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknod mknod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mknodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknodat mknodat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_nanosleep_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_nanosleep nanosleep "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_open_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_open open "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_openat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_openat openat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pathconf pathconf "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pread_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pread pread "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pwrite_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pwrite pwrite "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_read_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_read read "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlink readlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlinkat readlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rename_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rename rename "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_renameat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renameat renameat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_revoke_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_revoke revoke "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rmdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rmdir rmdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lseek_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lseek lseek "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_select_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_select select "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setegid setegid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_seteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_seteuid seteuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgid setgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setlogin_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setlogin setlogin "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpgid setpgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpriority setpriority "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setregid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setregid setregid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setreuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setreuid setreuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setresgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresgid setresgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setresuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresuid setresuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrtable(rtable int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setrtable setrtable "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsid setsid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_settimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_settimeofday settimeofday "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setuid setuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_stat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_stat stat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_statfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_statfs statfs "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlink symlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlinkat symlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sync sync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_truncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_truncate truncate "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +var libc_umask_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_umask umask "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlink unlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlinkat unlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unmount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unmount unmount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_write_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_write write "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mmap mmap "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munmap munmap "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getfsstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getfsstat getfsstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimensat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimensat utimensat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pledge(promises *byte, execpromises *byte) (err error) { + _, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pledge_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pledge pledge "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func unveil(path *byte, flags *byte) (err error) { + _, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unveil_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unveil unveil "libc.so" diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s b/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s new file mode 100644 index 000000000..2af3b5c76 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s @@ -0,0 +1,699 @@ +// go run mkasm.go openbsd arm64 +// Code generated by the command above; DO NOT EDIT. + +#include "textflag.h" + +TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgroups(SB) +GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB) + +TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgroups(SB) +GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB) + +TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_wait4(SB) +GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $8 +DATA ·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB) + +TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_accept(SB) +GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $8 +DATA ·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB) + +TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_bind(SB) +GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $8 +DATA ·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB) + +TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_connect(SB) +GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB) + +TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socket(SB) +GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB) + +TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockopt(SB) +GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB) + +TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsockopt(SB) +GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB) + +TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpeername(SB) +GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB) + +TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockname(SB) +GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB) + +TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shutdown(SB) +GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB) + +TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socketpair(SB) +GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB) + +TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvfrom(SB) +GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB) + +TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendto(SB) +GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB) + +TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvmsg(SB) +GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB) + +TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendmsg(SB) +GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB) + +TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kevent(SB) +GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB) + +TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimes(SB) +GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB) + +TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_futimes(SB) +GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB) + +TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_poll(SB) +GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $8 +DATA ·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB) + +TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_madvise(SB) +GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $8 +DATA ·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB) + +TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlock(SB) +GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB) + +TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlockall(SB) +GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB) + +TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mprotect(SB) +GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB) + +TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_msync(SB) +GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB) + +TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlock(SB) +GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB) + +TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlockall(SB) +GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB) + +TEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pipe2(SB) +GLOBL ·libc_pipe2_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB) + +TEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getdents(SB) +GLOBL ·libc_getdents_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB) + +TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getcwd(SB) +GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB) + +TEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getresuid(SB) +GLOBL ·libc_getresuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB) + +TEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getresgid(SB) +GLOBL ·libc_getresgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB) + +TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ioctl(SB) +GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB) + +TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sysctl(SB) +GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) + +TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fcntl(SB) +GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB) + +TEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ppoll(SB) +GLOBL ·libc_ppoll_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB) + +TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_access(SB) +GLOBL ·libc_access_trampoline_addr(SB), RODATA, $8 +DATA ·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB) + +TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_adjtime(SB) +GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $8 +DATA ·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB) + +TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chdir(SB) +GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB) + +TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chflags(SB) +GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB) + +TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chmod(SB) +GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB) + +TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chown(SB) +GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB) + +TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chroot(SB) +GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB) + +TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_clock_gettime(SB) +GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $8 +DATA ·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB) + +TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_close(SB) +GLOBL ·libc_close_trampoline_addr(SB), RODATA, $8 +DATA ·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB) + +TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup(SB) +GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB) + +TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup2(SB) +GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB) + +TEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup3(SB) +GLOBL ·libc_dup3_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB) + +TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_exit(SB) +GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB) + +TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_faccessat(SB) +GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB) + +TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchdir(SB) +GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB) + +TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchflags(SB) +GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB) + +TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmod(SB) +GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB) + +TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmodat(SB) +GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB) + +TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchown(SB) +GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB) + +TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchownat(SB) +GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB) + +TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_flock(SB) +GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB) + +TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fpathconf(SB) +GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB) + +TEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstat(SB) +GLOBL ·libc_fstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB) + +TEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatat(SB) +GLOBL ·libc_fstatat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB) + +TEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatfs(SB) +GLOBL ·libc_fstatfs_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB) + +TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fsync(SB) +GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB) + +TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ftruncate(SB) +GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB) + +TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getegid(SB) +GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB) + +TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_geteuid(SB) +GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB) + +TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgid(SB) +GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB) + +TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgid(SB) +GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB) + +TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgrp(SB) +GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB) + +TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpid(SB) +GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB) + +TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getppid(SB) +GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB) + +TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpriority(SB) +GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB) + +TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrlimit(SB) +GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB) + +TEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrtable(SB) +GLOBL ·libc_getrtable_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB) + +TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrusage(SB) +GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB) + +TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsid(SB) +GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB) + +TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_gettimeofday(SB) +GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB) + +TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getuid(SB) +GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB) + +TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_issetugid(SB) +GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB) + +TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kill(SB) +GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB) + +TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kqueue(SB) +GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB) + +TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lchown(SB) +GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB) + +TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_link(SB) +GLOBL ·libc_link_trampoline_addr(SB), RODATA, $8 +DATA ·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB) + +TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_linkat(SB) +GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB) + +TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_listen(SB) +GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $8 +DATA ·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB) + +TEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lstat(SB) +GLOBL ·libc_lstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB) + +TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdir(SB) +GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB) + +TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdirat(SB) +GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB) + +TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifo(SB) +GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB) + +TEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifoat(SB) +GLOBL ·libc_mkfifoat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB) + +TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknod(SB) +GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB) + +TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknodat(SB) +GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB) + +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mount(SB) +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB) + +TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_nanosleep(SB) +GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $8 +DATA ·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB) + +TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_open(SB) +GLOBL ·libc_open_trampoline_addr(SB), RODATA, $8 +DATA ·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB) + +TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_openat(SB) +GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB) + +TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pathconf(SB) +GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB) + +TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pread(SB) +GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB) + +TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pwrite(SB) +GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB) + +TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_read(SB) +GLOBL ·libc_read_trampoline_addr(SB), RODATA, $8 +DATA ·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB) + +TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlink(SB) +GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB) + +TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlinkat(SB) +GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB) + +TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rename(SB) +GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB) + +TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renameat(SB) +GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB) + +TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_revoke(SB) +GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $8 +DATA ·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB) + +TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rmdir(SB) +GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB) + +TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lseek(SB) +GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB) + +TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_select(SB) +GLOBL ·libc_select_trampoline_addr(SB), RODATA, $8 +DATA ·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB) + +TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setegid(SB) +GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB) + +TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_seteuid(SB) +GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB) + +TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgid(SB) +GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB) + +TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setlogin(SB) +GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB) + +TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpgid(SB) +GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB) + +TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpriority(SB) +GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB) + +TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setregid(SB) +GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB) + +TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setreuid(SB) +GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB) + +TEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setresgid(SB) +GLOBL ·libc_setresgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB) + +TEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setresuid(SB) +GLOBL ·libc_setresuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB) + +TEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setrtable(SB) +GLOBL ·libc_setrtable_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB) + +TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsid(SB) +GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB) + +TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_settimeofday(SB) +GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB) + +TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setuid(SB) +GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB) + +TEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_stat(SB) +GLOBL ·libc_stat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB) + +TEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_statfs(SB) +GLOBL ·libc_statfs_trampoline_addr(SB), RODATA, $8 +DATA ·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB) + +TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlink(SB) +GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB) + +TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlinkat(SB) +GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB) + +TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sync(SB) +GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB) + +TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_truncate(SB) +GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB) + +TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_umask(SB) +GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $8 +DATA ·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB) + +TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlink(SB) +GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB) + +TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlinkat(SB) +GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB) + +TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unmount(SB) +GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB) + +TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_write(SB) +GLOBL ·libc_write_trampoline_addr(SB), RODATA, $8 +DATA ·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB) + +TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mmap(SB) +GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB) + +TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munmap(SB) +GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) + +TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getfsstat(SB) +GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB) + +TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimensat(SB) +GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB) + +TEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pledge(SB) +GLOBL ·libc_pledge_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB) + +TEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unveil(SB) +GLOBL ·libc_unveil_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB) diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go new file mode 100644 index 000000000..1da08d526 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go @@ -0,0 +1,2323 @@ +// go run mksyscall.go -openbsd -libc -tags openbsd,mips64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_mips64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build openbsd && mips64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgroups getgroups "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgroups setgroups "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_wait4_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_wait4 wait4 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_accept_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_accept accept "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_bind_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_bind bind "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_connect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_connect connect "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socket_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socket socket "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockopt getsockopt "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsockopt setsockopt "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpeername_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpeername getpeername "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockname_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockname getsockname "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shutdown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shutdown shutdown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socketpair_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socketpair socketpair "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvfrom_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvfrom recvfrom "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendto_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendto sendto "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvmsg recvmsg "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendmsg sendmsg "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kevent_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kevent kevent "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimes utimes "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_futimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_futimes futimes "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_poll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_poll poll "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_madvise_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_madvise madvise "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlock mlock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlockall mlockall "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mprotect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mprotect mprotect "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_msync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_msync msync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlock munlock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlockall munlockall "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pipe2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pipe2 pipe2 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getdents_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getdents getdents "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getcwd_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getcwd getcwd "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) { + syscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid))) + return +} + +var libc_getresuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getresuid getresuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) { + syscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid))) + return +} + +var libc_getresgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getresgid getresgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ioctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sysctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sysctl sysctl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fcntl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fcntl fcntl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ppoll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ppoll ppoll "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_access_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_access access "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_adjtime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_adjtime adjtime "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chdir chdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chflags chflags "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chmod chmod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chown chown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chroot_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chroot chroot "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_clock_gettime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_clock_gettime clock_gettime "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_close_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_close close "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup dup "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup2 dup2 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(from int, to int, flags int) (err error) { + _, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup3_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup3 dup3 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + syscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0) + return +} + +var libc_exit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_exit exit "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_faccessat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_faccessat faccessat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchdir fchdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchflags fchflags "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmod fchmod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmodat fchmodat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchown fchown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchownat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchownat fchownat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_flock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_flock flock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fpathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fpathconf fpathconf "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstat fstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatat fstatat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatfs fstatfs "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fsync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fsync fsync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ftruncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ftruncate ftruncate "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0) + egid = int(r0) + return +} + +var libc_getegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getegid getegid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_geteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_geteuid geteuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0) + gid = int(r0) + return +} + +var libc_getgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgid getgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgid getpgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0) + pgrp = int(r0) + return +} + +var libc_getpgrp_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgrp getpgrp "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0) + pid = int(r0) + return +} + +var libc_getpid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpid getpid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0) + ppid = int(r0) + return +} + +var libc_getppid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getppid getppid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpriority getpriority "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrlimit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrlimit getrlimit "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrtable() (rtable int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0) + rtable = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrtable getrtable "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrusage_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrusage getrusage "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsid getsid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_gettimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_getuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getuid getuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +var libc_issetugid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_issetugid issetugid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kill_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kill kill "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kqueue_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kqueue kqueue "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lchown lchown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_link_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_link link "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_linkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_linkat linkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_listen_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_listen listen "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lstat lstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdir mkdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdirat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdirat mkdirat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkfifo_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifo mkfifo "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkfifoat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifoat mkfifoat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mknod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknod mknod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mknodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknodat mknodat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_nanosleep_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_nanosleep nanosleep "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_open_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_open open "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_openat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_openat openat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pathconf pathconf "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pread_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pread pread "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pwrite_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pwrite pwrite "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_read_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_read read "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlink readlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlinkat readlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rename_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rename rename "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_renameat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renameat renameat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_revoke_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_revoke revoke "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rmdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rmdir rmdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lseek_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lseek lseek "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_select_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_select select "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setegid setegid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_seteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_seteuid seteuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgid setgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setlogin_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setlogin setlogin "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpgid setpgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpriority setpriority "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setregid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setregid setregid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setreuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setreuid setreuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setresgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresgid setresgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setresuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresuid setresuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrtable(rtable int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setrtable setrtable "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsid setsid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_settimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_settimeofday settimeofday "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setuid setuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_stat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_stat stat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_statfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_statfs statfs "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlink symlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlinkat symlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sync sync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_truncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_truncate truncate "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +var libc_umask_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_umask umask "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlink unlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlinkat unlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unmount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unmount unmount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_write_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_write write "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mmap mmap "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munmap munmap "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getfsstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getfsstat getfsstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimensat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimensat utimensat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pledge(promises *byte, execpromises *byte) (err error) { + _, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pledge_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pledge pledge "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func unveil(path *byte, flags *byte) (err error) { + _, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unveil_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unveil unveil "libc.so" diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s b/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s new file mode 100644 index 000000000..b7a251353 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s @@ -0,0 +1,699 @@ +// go run mkasm.go openbsd mips64 +// Code generated by the command above; DO NOT EDIT. + +#include "textflag.h" + +TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgroups(SB) +GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB) + +TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgroups(SB) +GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB) + +TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_wait4(SB) +GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $8 +DATA ·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB) + +TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_accept(SB) +GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $8 +DATA ·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB) + +TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_bind(SB) +GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $8 +DATA ·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB) + +TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_connect(SB) +GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB) + +TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socket(SB) +GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB) + +TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockopt(SB) +GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB) + +TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsockopt(SB) +GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB) + +TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpeername(SB) +GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB) + +TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockname(SB) +GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB) + +TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shutdown(SB) +GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB) + +TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socketpair(SB) +GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB) + +TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvfrom(SB) +GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB) + +TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendto(SB) +GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB) + +TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvmsg(SB) +GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB) + +TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendmsg(SB) +GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB) + +TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kevent(SB) +GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB) + +TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimes(SB) +GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB) + +TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_futimes(SB) +GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB) + +TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_poll(SB) +GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $8 +DATA ·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB) + +TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_madvise(SB) +GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $8 +DATA ·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB) + +TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlock(SB) +GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB) + +TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlockall(SB) +GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB) + +TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mprotect(SB) +GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB) + +TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_msync(SB) +GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB) + +TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlock(SB) +GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB) + +TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlockall(SB) +GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB) + +TEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pipe2(SB) +GLOBL ·libc_pipe2_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB) + +TEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getdents(SB) +GLOBL ·libc_getdents_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB) + +TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getcwd(SB) +GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB) + +TEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getresuid(SB) +GLOBL ·libc_getresuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB) + +TEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getresgid(SB) +GLOBL ·libc_getresgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB) + +TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ioctl(SB) +GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB) + +TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sysctl(SB) +GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) + +TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fcntl(SB) +GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB) + +TEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ppoll(SB) +GLOBL ·libc_ppoll_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB) + +TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_access(SB) +GLOBL ·libc_access_trampoline_addr(SB), RODATA, $8 +DATA ·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB) + +TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_adjtime(SB) +GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $8 +DATA ·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB) + +TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chdir(SB) +GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB) + +TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chflags(SB) +GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB) + +TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chmod(SB) +GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB) + +TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chown(SB) +GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB) + +TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chroot(SB) +GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB) + +TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_clock_gettime(SB) +GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $8 +DATA ·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB) + +TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_close(SB) +GLOBL ·libc_close_trampoline_addr(SB), RODATA, $8 +DATA ·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB) + +TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup(SB) +GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB) + +TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup2(SB) +GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB) + +TEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup3(SB) +GLOBL ·libc_dup3_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB) + +TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_exit(SB) +GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB) + +TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_faccessat(SB) +GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB) + +TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchdir(SB) +GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB) + +TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchflags(SB) +GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB) + +TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmod(SB) +GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB) + +TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmodat(SB) +GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB) + +TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchown(SB) +GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB) + +TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchownat(SB) +GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB) + +TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_flock(SB) +GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB) + +TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fpathconf(SB) +GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB) + +TEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstat(SB) +GLOBL ·libc_fstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB) + +TEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatat(SB) +GLOBL ·libc_fstatat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB) + +TEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatfs(SB) +GLOBL ·libc_fstatfs_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB) + +TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fsync(SB) +GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB) + +TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ftruncate(SB) +GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB) + +TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getegid(SB) +GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB) + +TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_geteuid(SB) +GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB) + +TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgid(SB) +GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB) + +TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgid(SB) +GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB) + +TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgrp(SB) +GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB) + +TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpid(SB) +GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB) + +TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getppid(SB) +GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB) + +TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpriority(SB) +GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB) + +TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrlimit(SB) +GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB) + +TEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrtable(SB) +GLOBL ·libc_getrtable_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB) + +TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrusage(SB) +GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB) + +TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsid(SB) +GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB) + +TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_gettimeofday(SB) +GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB) + +TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getuid(SB) +GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB) + +TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_issetugid(SB) +GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB) + +TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kill(SB) +GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB) + +TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kqueue(SB) +GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB) + +TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lchown(SB) +GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB) + +TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_link(SB) +GLOBL ·libc_link_trampoline_addr(SB), RODATA, $8 +DATA ·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB) + +TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_linkat(SB) +GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB) + +TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_listen(SB) +GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $8 +DATA ·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB) + +TEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lstat(SB) +GLOBL ·libc_lstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB) + +TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdir(SB) +GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB) + +TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdirat(SB) +GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB) + +TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifo(SB) +GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB) + +TEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifoat(SB) +GLOBL ·libc_mkfifoat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB) + +TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknod(SB) +GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB) + +TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknodat(SB) +GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB) + +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mount(SB) +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB) + +TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_nanosleep(SB) +GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $8 +DATA ·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB) + +TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_open(SB) +GLOBL ·libc_open_trampoline_addr(SB), RODATA, $8 +DATA ·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB) + +TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_openat(SB) +GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB) + +TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pathconf(SB) +GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB) + +TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pread(SB) +GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB) + +TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pwrite(SB) +GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB) + +TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_read(SB) +GLOBL ·libc_read_trampoline_addr(SB), RODATA, $8 +DATA ·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB) + +TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlink(SB) +GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB) + +TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlinkat(SB) +GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB) + +TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rename(SB) +GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB) + +TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renameat(SB) +GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB) + +TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_revoke(SB) +GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $8 +DATA ·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB) + +TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rmdir(SB) +GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB) + +TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lseek(SB) +GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB) + +TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_select(SB) +GLOBL ·libc_select_trampoline_addr(SB), RODATA, $8 +DATA ·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB) + +TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setegid(SB) +GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB) + +TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_seteuid(SB) +GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB) + +TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgid(SB) +GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB) + +TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setlogin(SB) +GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB) + +TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpgid(SB) +GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB) + +TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpriority(SB) +GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB) + +TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setregid(SB) +GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB) + +TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setreuid(SB) +GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB) + +TEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setresgid(SB) +GLOBL ·libc_setresgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB) + +TEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setresuid(SB) +GLOBL ·libc_setresuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB) + +TEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setrtable(SB) +GLOBL ·libc_setrtable_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB) + +TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsid(SB) +GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB) + +TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_settimeofday(SB) +GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB) + +TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setuid(SB) +GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB) + +TEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_stat(SB) +GLOBL ·libc_stat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB) + +TEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_statfs(SB) +GLOBL ·libc_statfs_trampoline_addr(SB), RODATA, $8 +DATA ·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB) + +TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlink(SB) +GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB) + +TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlinkat(SB) +GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB) + +TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sync(SB) +GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB) + +TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_truncate(SB) +GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB) + +TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_umask(SB) +GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $8 +DATA ·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB) + +TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlink(SB) +GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB) + +TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlinkat(SB) +GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB) + +TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unmount(SB) +GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB) + +TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_write(SB) +GLOBL ·libc_write_trampoline_addr(SB), RODATA, $8 +DATA ·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB) + +TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mmap(SB) +GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB) + +TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munmap(SB) +GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) + +TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getfsstat(SB) +GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB) + +TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimensat(SB) +GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB) + +TEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pledge(SB) +GLOBL ·libc_pledge_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB) + +TEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unveil(SB) +GLOBL ·libc_unveil_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB) diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go new file mode 100644 index 000000000..6e85b0aac --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go @@ -0,0 +1,2323 @@ +// go run mksyscall.go -openbsd -libc -tags openbsd,ppc64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_ppc64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build openbsd && ppc64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgroups getgroups "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgroups setgroups "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_wait4_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_wait4 wait4 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_accept_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_accept accept "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_bind_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_bind bind "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_connect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_connect connect "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socket_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socket socket "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockopt getsockopt "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsockopt setsockopt "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpeername_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpeername getpeername "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockname_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockname getsockname "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shutdown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shutdown shutdown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socketpair_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socketpair socketpair "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvfrom_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvfrom recvfrom "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendto_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendto sendto "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvmsg recvmsg "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendmsg sendmsg "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kevent_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kevent kevent "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimes utimes "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_futimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_futimes futimes "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_poll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_poll poll "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_madvise_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_madvise madvise "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlock mlock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlockall mlockall "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mprotect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mprotect mprotect "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_msync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_msync msync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlock munlock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlockall munlockall "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pipe2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pipe2 pipe2 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getdents_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getdents getdents "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getcwd_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getcwd getcwd "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) { + syscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid))) + return +} + +var libc_getresuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getresuid getresuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) { + syscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid))) + return +} + +var libc_getresgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getresgid getresgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ioctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sysctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sysctl sysctl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fcntl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fcntl fcntl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ppoll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ppoll ppoll "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_access_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_access access "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_adjtime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_adjtime adjtime "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chdir chdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chflags chflags "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chmod chmod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chown chown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chroot_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chroot chroot "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_clock_gettime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_clock_gettime clock_gettime "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_close_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_close close "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup dup "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup2 dup2 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(from int, to int, flags int) (err error) { + _, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup3_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup3 dup3 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + syscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0) + return +} + +var libc_exit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_exit exit "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_faccessat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_faccessat faccessat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchdir fchdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchflags fchflags "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmod fchmod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmodat fchmodat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchown fchown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchownat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchownat fchownat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_flock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_flock flock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fpathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fpathconf fpathconf "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstat fstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatat fstatat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatfs fstatfs "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fsync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fsync fsync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ftruncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ftruncate ftruncate "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0) + egid = int(r0) + return +} + +var libc_getegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getegid getegid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_geteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_geteuid geteuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0) + gid = int(r0) + return +} + +var libc_getgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgid getgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgid getpgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0) + pgrp = int(r0) + return +} + +var libc_getpgrp_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgrp getpgrp "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0) + pid = int(r0) + return +} + +var libc_getpid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpid getpid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0) + ppid = int(r0) + return +} + +var libc_getppid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getppid getppid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpriority getpriority "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrlimit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrlimit getrlimit "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrtable() (rtable int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0) + rtable = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrtable getrtable "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrusage_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrusage getrusage "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsid getsid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_gettimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_getuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getuid getuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +var libc_issetugid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_issetugid issetugid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kill_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kill kill "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kqueue_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kqueue kqueue "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lchown lchown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_link_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_link link "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_linkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_linkat linkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_listen_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_listen listen "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lstat lstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdir mkdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdirat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdirat mkdirat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkfifo_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifo mkfifo "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkfifoat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifoat mkfifoat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mknod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknod mknod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mknodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknodat mknodat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_nanosleep_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_nanosleep nanosleep "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_open_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_open open "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_openat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_openat openat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pathconf pathconf "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pread_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pread pread "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pwrite_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pwrite pwrite "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_read_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_read read "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlink readlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlinkat readlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rename_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rename rename "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_renameat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renameat renameat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_revoke_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_revoke revoke "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rmdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rmdir rmdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lseek_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lseek lseek "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_select_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_select select "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setegid setegid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_seteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_seteuid seteuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgid setgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setlogin_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setlogin setlogin "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpgid setpgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpriority setpriority "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setregid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setregid setregid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setreuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setreuid setreuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setresgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresgid setresgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setresuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresuid setresuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrtable(rtable int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setrtable setrtable "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsid setsid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_settimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_settimeofday settimeofday "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setuid setuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_stat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_stat stat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_statfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_statfs statfs "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlink symlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlinkat symlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sync sync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_truncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_truncate truncate "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +var libc_umask_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_umask umask "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlink unlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlinkat unlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unmount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unmount unmount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_write_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_write write "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mmap mmap "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munmap munmap "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getfsstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getfsstat getfsstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimensat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimensat utimensat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pledge(promises *byte, execpromises *byte) (err error) { + _, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pledge_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pledge pledge "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func unveil(path *byte, flags *byte) (err error) { + _, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unveil_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unveil unveil "libc.so" diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s b/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s new file mode 100644 index 000000000..f15dadf05 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s @@ -0,0 +1,838 @@ +// go run mkasm.go openbsd ppc64 +// Code generated by the command above; DO NOT EDIT. + +#include "textflag.h" + +TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getgroups(SB) + RET +GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB) + +TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_setgroups(SB) + RET +GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB) + +TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_wait4(SB) + RET +GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $8 +DATA ·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB) + +TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_accept(SB) + RET +GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $8 +DATA ·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB) + +TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_bind(SB) + RET +GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $8 +DATA ·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB) + +TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_connect(SB) + RET +GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB) + +TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_socket(SB) + RET +GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB) + +TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getsockopt(SB) + RET +GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB) + +TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_setsockopt(SB) + RET +GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB) + +TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getpeername(SB) + RET +GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB) + +TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getsockname(SB) + RET +GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB) + +TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_shutdown(SB) + RET +GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB) + +TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_socketpair(SB) + RET +GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB) + +TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_recvfrom(SB) + RET +GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB) + +TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_sendto(SB) + RET +GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB) + +TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_recvmsg(SB) + RET +GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB) + +TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_sendmsg(SB) + RET +GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB) + +TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_kevent(SB) + RET +GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB) + +TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_utimes(SB) + RET +GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB) + +TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_futimes(SB) + RET +GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB) + +TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_poll(SB) + RET +GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $8 +DATA ·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB) + +TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_madvise(SB) + RET +GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $8 +DATA ·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB) + +TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_mlock(SB) + RET +GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB) + +TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_mlockall(SB) + RET +GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB) + +TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_mprotect(SB) + RET +GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB) + +TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_msync(SB) + RET +GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB) + +TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_munlock(SB) + RET +GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB) + +TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_munlockall(SB) + RET +GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB) + +TEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_pipe2(SB) + RET +GLOBL ·libc_pipe2_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB) + +TEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getdents(SB) + RET +GLOBL ·libc_getdents_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB) + +TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getcwd(SB) + RET +GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB) + +TEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getresuid(SB) + RET +GLOBL ·libc_getresuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB) + +TEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getresgid(SB) + RET +GLOBL ·libc_getresgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB) + +TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_ioctl(SB) + RET +GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB) + +TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_sysctl(SB) + RET +GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) + +TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_fcntl(SB) + RET +GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB) + +TEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_ppoll(SB) + RET +GLOBL ·libc_ppoll_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB) + +TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_access(SB) + RET +GLOBL ·libc_access_trampoline_addr(SB), RODATA, $8 +DATA ·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB) + +TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_adjtime(SB) + RET +GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $8 +DATA ·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB) + +TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_chdir(SB) + RET +GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB) + +TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_chflags(SB) + RET +GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB) + +TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_chmod(SB) + RET +GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB) + +TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_chown(SB) + RET +GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB) + +TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_chroot(SB) + RET +GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB) + +TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_clock_gettime(SB) + RET +GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $8 +DATA ·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB) + +TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_close(SB) + RET +GLOBL ·libc_close_trampoline_addr(SB), RODATA, $8 +DATA ·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB) + +TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_dup(SB) + RET +GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB) + +TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_dup2(SB) + RET +GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB) + +TEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_dup3(SB) + RET +GLOBL ·libc_dup3_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB) + +TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_exit(SB) + RET +GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB) + +TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_faccessat(SB) + RET +GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB) + +TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_fchdir(SB) + RET +GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB) + +TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_fchflags(SB) + RET +GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB) + +TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_fchmod(SB) + RET +GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB) + +TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_fchmodat(SB) + RET +GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB) + +TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_fchown(SB) + RET +GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB) + +TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_fchownat(SB) + RET +GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB) + +TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_flock(SB) + RET +GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB) + +TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_fpathconf(SB) + RET +GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB) + +TEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_fstat(SB) + RET +GLOBL ·libc_fstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB) + +TEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_fstatat(SB) + RET +GLOBL ·libc_fstatat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB) + +TEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_fstatfs(SB) + RET +GLOBL ·libc_fstatfs_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB) + +TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_fsync(SB) + RET +GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB) + +TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_ftruncate(SB) + RET +GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB) + +TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getegid(SB) + RET +GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB) + +TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_geteuid(SB) + RET +GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB) + +TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getgid(SB) + RET +GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB) + +TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getpgid(SB) + RET +GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB) + +TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getpgrp(SB) + RET +GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB) + +TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getpid(SB) + RET +GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB) + +TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getppid(SB) + RET +GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB) + +TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getpriority(SB) + RET +GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB) + +TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getrlimit(SB) + RET +GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB) + +TEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getrtable(SB) + RET +GLOBL ·libc_getrtable_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB) + +TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getrusage(SB) + RET +GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB) + +TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getsid(SB) + RET +GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB) + +TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_gettimeofday(SB) + RET +GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB) + +TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getuid(SB) + RET +GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB) + +TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_issetugid(SB) + RET +GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB) + +TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_kill(SB) + RET +GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB) + +TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_kqueue(SB) + RET +GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB) + +TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_lchown(SB) + RET +GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB) + +TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_link(SB) + RET +GLOBL ·libc_link_trampoline_addr(SB), RODATA, $8 +DATA ·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB) + +TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_linkat(SB) + RET +GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB) + +TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_listen(SB) + RET +GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $8 +DATA ·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB) + +TEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_lstat(SB) + RET +GLOBL ·libc_lstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB) + +TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_mkdir(SB) + RET +GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB) + +TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_mkdirat(SB) + RET +GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB) + +TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_mkfifo(SB) + RET +GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB) + +TEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_mkfifoat(SB) + RET +GLOBL ·libc_mkfifoat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB) + +TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_mknod(SB) + RET +GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB) + +TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_mknodat(SB) + RET +GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB) + +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_mount(SB) + RET +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB) + +TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_nanosleep(SB) + RET +GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $8 +DATA ·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB) + +TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_open(SB) + RET +GLOBL ·libc_open_trampoline_addr(SB), RODATA, $8 +DATA ·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB) + +TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_openat(SB) + RET +GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB) + +TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_pathconf(SB) + RET +GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB) + +TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_pread(SB) + RET +GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB) + +TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_pwrite(SB) + RET +GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB) + +TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_read(SB) + RET +GLOBL ·libc_read_trampoline_addr(SB), RODATA, $8 +DATA ·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB) + +TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_readlink(SB) + RET +GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB) + +TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_readlinkat(SB) + RET +GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB) + +TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_rename(SB) + RET +GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB) + +TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_renameat(SB) + RET +GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB) + +TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_revoke(SB) + RET +GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $8 +DATA ·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB) + +TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_rmdir(SB) + RET +GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB) + +TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_lseek(SB) + RET +GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB) + +TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_select(SB) + RET +GLOBL ·libc_select_trampoline_addr(SB), RODATA, $8 +DATA ·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB) + +TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_setegid(SB) + RET +GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB) + +TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_seteuid(SB) + RET +GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB) + +TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_setgid(SB) + RET +GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB) + +TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_setlogin(SB) + RET +GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB) + +TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_setpgid(SB) + RET +GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB) + +TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_setpriority(SB) + RET +GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB) + +TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_setregid(SB) + RET +GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB) + +TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_setreuid(SB) + RET +GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB) + +TEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_setresgid(SB) + RET +GLOBL ·libc_setresgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB) + +TEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_setresuid(SB) + RET +GLOBL ·libc_setresuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB) + +TEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_setrtable(SB) + RET +GLOBL ·libc_setrtable_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB) + +TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_setsid(SB) + RET +GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB) + +TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_settimeofday(SB) + RET +GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB) + +TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_setuid(SB) + RET +GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB) + +TEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_stat(SB) + RET +GLOBL ·libc_stat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB) + +TEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_statfs(SB) + RET +GLOBL ·libc_statfs_trampoline_addr(SB), RODATA, $8 +DATA ·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB) + +TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_symlink(SB) + RET +GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB) + +TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_symlinkat(SB) + RET +GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB) + +TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_sync(SB) + RET +GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB) + +TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_truncate(SB) + RET +GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB) + +TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_umask(SB) + RET +GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $8 +DATA ·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB) + +TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_unlink(SB) + RET +GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB) + +TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_unlinkat(SB) + RET +GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB) + +TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_unmount(SB) + RET +GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB) + +TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_write(SB) + RET +GLOBL ·libc_write_trampoline_addr(SB), RODATA, $8 +DATA ·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB) + +TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_mmap(SB) + RET +GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB) + +TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_munmap(SB) + RET +GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) + +TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getfsstat(SB) + RET +GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB) + +TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_utimensat(SB) + RET +GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB) + +TEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_pledge(SB) + RET +GLOBL ·libc_pledge_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB) + +TEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_unveil(SB) + RET +GLOBL ·libc_unveil_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB) diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go new file mode 100644 index 000000000..28b487df2 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go @@ -0,0 +1,2323 @@ +// go run mksyscall.go -openbsd -libc -tags openbsd,riscv64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_riscv64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build openbsd && riscv64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgroups getgroups "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgroups setgroups "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_wait4_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_wait4 wait4 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_accept_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_accept accept "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_bind_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_bind bind "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_connect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_connect connect "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socket_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socket socket "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockopt getsockopt "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsockopt setsockopt "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpeername_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpeername getpeername "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockname_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockname getsockname "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shutdown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shutdown shutdown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socketpair_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socketpair socketpair "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvfrom_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvfrom recvfrom "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendto_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendto sendto "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvmsg recvmsg "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendmsg sendmsg "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kevent_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kevent kevent "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimes utimes "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_futimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_futimes futimes "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_poll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_poll poll "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_madvise_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_madvise madvise "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlock mlock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlockall mlockall "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mprotect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mprotect mprotect "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_msync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_msync msync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlock munlock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlockall munlockall "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pipe2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pipe2 pipe2 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getdents_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getdents getdents "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getcwd_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getcwd getcwd "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) { + syscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid))) + return +} + +var libc_getresuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getresuid getresuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) { + syscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid))) + return +} + +var libc_getresgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getresgid getresgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ioctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sysctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sysctl sysctl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fcntl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fcntl fcntl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ppoll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ppoll ppoll "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_access_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_access access "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_adjtime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_adjtime adjtime "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chdir chdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chflags chflags "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chmod chmod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chown chown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chroot_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chroot chroot "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_clock_gettime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_clock_gettime clock_gettime "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_close_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_close close "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup dup "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup2 dup2 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(from int, to int, flags int) (err error) { + _, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup3_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup3 dup3 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + syscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0) + return +} + +var libc_exit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_exit exit "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_faccessat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_faccessat faccessat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchdir fchdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchflags fchflags "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmod fchmod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmodat fchmodat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchown fchown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchownat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchownat fchownat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_flock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_flock flock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fpathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fpathconf fpathconf "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstat fstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatat fstatat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatfs fstatfs "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fsync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fsync fsync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ftruncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ftruncate ftruncate "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0) + egid = int(r0) + return +} + +var libc_getegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getegid getegid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_geteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_geteuid geteuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0) + gid = int(r0) + return +} + +var libc_getgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgid getgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgid getpgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0) + pgrp = int(r0) + return +} + +var libc_getpgrp_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgrp getpgrp "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0) + pid = int(r0) + return +} + +var libc_getpid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpid getpid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0) + ppid = int(r0) + return +} + +var libc_getppid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getppid getppid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpriority getpriority "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrlimit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrlimit getrlimit "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrtable() (rtable int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0) + rtable = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrtable getrtable "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrusage_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrusage getrusage "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsid getsid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_gettimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_getuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getuid getuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +var libc_issetugid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_issetugid issetugid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kill_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kill kill "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kqueue_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kqueue kqueue "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lchown lchown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_link_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_link link "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_linkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_linkat linkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_listen_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_listen listen "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lstat lstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdir mkdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdirat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdirat mkdirat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkfifo_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifo mkfifo "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkfifoat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifoat mkfifoat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mknod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknod mknod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mknodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknodat mknodat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_nanosleep_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_nanosleep nanosleep "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_open_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_open open "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_openat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_openat openat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pathconf pathconf "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pread_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pread pread "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pwrite_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pwrite pwrite "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_read_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_read read "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlink readlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlinkat readlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rename_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rename rename "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_renameat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renameat renameat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_revoke_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_revoke revoke "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rmdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rmdir rmdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lseek_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lseek lseek "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_select_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_select select "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setegid setegid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_seteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_seteuid seteuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgid setgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setlogin_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setlogin setlogin "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpgid setpgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpriority setpriority "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setregid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setregid setregid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setreuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setreuid setreuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setresgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresgid setresgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setresuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresuid setresuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrtable(rtable int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setrtable setrtable "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsid setsid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_settimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_settimeofday settimeofday "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setuid setuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_stat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_stat stat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_statfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_statfs statfs "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlink symlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlinkat symlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sync sync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_truncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_truncate truncate "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +var libc_umask_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_umask umask "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlink unlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlinkat unlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unmount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unmount unmount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_write_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_write write "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mmap mmap "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munmap munmap "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getfsstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getfsstat getfsstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimensat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimensat utimensat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pledge(promises *byte, execpromises *byte) (err error) { + _, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pledge_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pledge pledge "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func unveil(path *byte, flags *byte) (err error) { + _, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unveil_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unveil unveil "libc.so" diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s b/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s new file mode 100644 index 000000000..1e7f321e4 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s @@ -0,0 +1,699 @@ +// go run mkasm.go openbsd riscv64 +// Code generated by the command above; DO NOT EDIT. + +#include "textflag.h" + +TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgroups(SB) +GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB) + +TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgroups(SB) +GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB) + +TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_wait4(SB) +GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $8 +DATA ·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB) + +TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_accept(SB) +GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $8 +DATA ·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB) + +TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_bind(SB) +GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $8 +DATA ·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB) + +TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_connect(SB) +GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB) + +TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socket(SB) +GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB) + +TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockopt(SB) +GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB) + +TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsockopt(SB) +GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB) + +TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpeername(SB) +GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB) + +TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockname(SB) +GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB) + +TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shutdown(SB) +GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB) + +TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socketpair(SB) +GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB) + +TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvfrom(SB) +GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB) + +TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendto(SB) +GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB) + +TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvmsg(SB) +GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB) + +TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendmsg(SB) +GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB) + +TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kevent(SB) +GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB) + +TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimes(SB) +GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB) + +TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_futimes(SB) +GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB) + +TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_poll(SB) +GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $8 +DATA ·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB) + +TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_madvise(SB) +GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $8 +DATA ·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB) + +TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlock(SB) +GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB) + +TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlockall(SB) +GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB) + +TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mprotect(SB) +GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB) + +TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_msync(SB) +GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB) + +TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlock(SB) +GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB) + +TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlockall(SB) +GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB) + +TEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pipe2(SB) +GLOBL ·libc_pipe2_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB) + +TEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getdents(SB) +GLOBL ·libc_getdents_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB) + +TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getcwd(SB) +GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB) + +TEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getresuid(SB) +GLOBL ·libc_getresuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB) + +TEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getresgid(SB) +GLOBL ·libc_getresgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB) + +TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ioctl(SB) +GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB) + +TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sysctl(SB) +GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) + +TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fcntl(SB) +GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB) + +TEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ppoll(SB) +GLOBL ·libc_ppoll_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB) + +TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_access(SB) +GLOBL ·libc_access_trampoline_addr(SB), RODATA, $8 +DATA ·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB) + +TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_adjtime(SB) +GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $8 +DATA ·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB) + +TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chdir(SB) +GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB) + +TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chflags(SB) +GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB) + +TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chmod(SB) +GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB) + +TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chown(SB) +GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB) + +TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chroot(SB) +GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB) + +TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_clock_gettime(SB) +GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $8 +DATA ·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB) + +TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_close(SB) +GLOBL ·libc_close_trampoline_addr(SB), RODATA, $8 +DATA ·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB) + +TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup(SB) +GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB) + +TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup2(SB) +GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB) + +TEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup3(SB) +GLOBL ·libc_dup3_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB) + +TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_exit(SB) +GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB) + +TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_faccessat(SB) +GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB) + +TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchdir(SB) +GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB) + +TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchflags(SB) +GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB) + +TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmod(SB) +GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB) + +TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmodat(SB) +GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB) + +TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchown(SB) +GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB) + +TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchownat(SB) +GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB) + +TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_flock(SB) +GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB) + +TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fpathconf(SB) +GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB) + +TEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstat(SB) +GLOBL ·libc_fstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB) + +TEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatat(SB) +GLOBL ·libc_fstatat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB) + +TEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatfs(SB) +GLOBL ·libc_fstatfs_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB) + +TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fsync(SB) +GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB) + +TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ftruncate(SB) +GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB) + +TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getegid(SB) +GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB) + +TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_geteuid(SB) +GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB) + +TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgid(SB) +GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB) + +TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgid(SB) +GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB) + +TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgrp(SB) +GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB) + +TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpid(SB) +GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB) + +TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getppid(SB) +GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB) + +TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpriority(SB) +GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB) + +TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrlimit(SB) +GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB) + +TEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrtable(SB) +GLOBL ·libc_getrtable_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB) + +TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrusage(SB) +GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB) + +TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsid(SB) +GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB) + +TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_gettimeofday(SB) +GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB) + +TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getuid(SB) +GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB) + +TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_issetugid(SB) +GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB) + +TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kill(SB) +GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB) + +TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kqueue(SB) +GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB) + +TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lchown(SB) +GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB) + +TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_link(SB) +GLOBL ·libc_link_trampoline_addr(SB), RODATA, $8 +DATA ·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB) + +TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_linkat(SB) +GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB) + +TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_listen(SB) +GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $8 +DATA ·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB) + +TEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lstat(SB) +GLOBL ·libc_lstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB) + +TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdir(SB) +GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB) + +TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdirat(SB) +GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB) + +TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifo(SB) +GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB) + +TEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifoat(SB) +GLOBL ·libc_mkfifoat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB) + +TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknod(SB) +GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB) + +TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknodat(SB) +GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB) + +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mount(SB) +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB) + +TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_nanosleep(SB) +GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $8 +DATA ·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB) + +TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_open(SB) +GLOBL ·libc_open_trampoline_addr(SB), RODATA, $8 +DATA ·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB) + +TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_openat(SB) +GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB) + +TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pathconf(SB) +GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB) + +TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pread(SB) +GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB) + +TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pwrite(SB) +GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB) + +TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_read(SB) +GLOBL ·libc_read_trampoline_addr(SB), RODATA, $8 +DATA ·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB) + +TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlink(SB) +GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB) + +TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlinkat(SB) +GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB) + +TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rename(SB) +GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB) + +TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renameat(SB) +GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB) + +TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_revoke(SB) +GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $8 +DATA ·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB) + +TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rmdir(SB) +GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB) + +TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lseek(SB) +GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB) + +TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_select(SB) +GLOBL ·libc_select_trampoline_addr(SB), RODATA, $8 +DATA ·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB) + +TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setegid(SB) +GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB) + +TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_seteuid(SB) +GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB) + +TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgid(SB) +GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB) + +TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setlogin(SB) +GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB) + +TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpgid(SB) +GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB) + +TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpriority(SB) +GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB) + +TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setregid(SB) +GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB) + +TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setreuid(SB) +GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB) + +TEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setresgid(SB) +GLOBL ·libc_setresgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB) + +TEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setresuid(SB) +GLOBL ·libc_setresuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB) + +TEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setrtable(SB) +GLOBL ·libc_setrtable_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB) + +TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsid(SB) +GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB) + +TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_settimeofday(SB) +GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB) + +TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setuid(SB) +GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB) + +TEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_stat(SB) +GLOBL ·libc_stat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB) + +TEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_statfs(SB) +GLOBL ·libc_statfs_trampoline_addr(SB), RODATA, $8 +DATA ·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB) + +TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlink(SB) +GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB) + +TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlinkat(SB) +GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB) + +TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sync(SB) +GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB) + +TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_truncate(SB) +GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB) + +TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_umask(SB) +GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $8 +DATA ·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB) + +TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlink(SB) +GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB) + +TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlinkat(SB) +GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB) + +TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unmount(SB) +GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB) + +TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_write(SB) +GLOBL ·libc_write_trampoline_addr(SB), RODATA, $8 +DATA ·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB) + +TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mmap(SB) +GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB) + +TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munmap(SB) +GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) + +TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getfsstat(SB) +GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB) + +TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimensat(SB) +GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB) + +TEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pledge(SB) +GLOBL ·libc_pledge_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB) + +TEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unveil(SB) +GLOBL ·libc_unveil_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB) diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go new file mode 100644 index 000000000..c6545413c --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go @@ -0,0 +1,2217 @@ +// go run mksyscall_solaris.go -tags solaris,amd64 syscall_solaris.go syscall_solaris_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build solaris && amd64 + +package unix + +import ( + "syscall" + "unsafe" +) + +//go:cgo_import_dynamic libc_pipe pipe "libc.so" +//go:cgo_import_dynamic libc_pipe2 pipe2 "libc.so" +//go:cgo_import_dynamic libc_getsockname getsockname "libsocket.so" +//go:cgo_import_dynamic libc_getcwd getcwd "libc.so" +//go:cgo_import_dynamic libc_getgroups getgroups "libc.so" +//go:cgo_import_dynamic libc_setgroups setgroups "libc.so" +//go:cgo_import_dynamic libc_wait4 wait4 "libc.so" +//go:cgo_import_dynamic libc_gethostname gethostname "libc.so" +//go:cgo_import_dynamic libc_utimes utimes "libc.so" +//go:cgo_import_dynamic libc_utimensat utimensat "libc.so" +//go:cgo_import_dynamic libc_fcntl fcntl "libc.so" +//go:cgo_import_dynamic libc_futimesat futimesat "libc.so" +//go:cgo_import_dynamic libc_accept accept "libsocket.so" +//go:cgo_import_dynamic libc___xnet_recvmsg __xnet_recvmsg "libsocket.so" +//go:cgo_import_dynamic libc___xnet_sendmsg __xnet_sendmsg "libsocket.so" +//go:cgo_import_dynamic libc_acct acct "libc.so" +//go:cgo_import_dynamic libc___makedev __makedev "libc.so" +//go:cgo_import_dynamic libc___major __major "libc.so" +//go:cgo_import_dynamic libc___minor __minor "libc.so" +//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" +//go:cgo_import_dynamic libc_poll poll "libc.so" +//go:cgo_import_dynamic libc_access access "libc.so" +//go:cgo_import_dynamic libc_adjtime adjtime "libc.so" +//go:cgo_import_dynamic libc_chdir chdir "libc.so" +//go:cgo_import_dynamic libc_chmod chmod "libc.so" +//go:cgo_import_dynamic libc_chown chown "libc.so" +//go:cgo_import_dynamic libc_chroot chroot "libc.so" +//go:cgo_import_dynamic libc_clockgettime clockgettime "libc.so" +//go:cgo_import_dynamic libc_close close "libc.so" +//go:cgo_import_dynamic libc_creat creat "libc.so" +//go:cgo_import_dynamic libc_dup dup "libc.so" +//go:cgo_import_dynamic libc_dup2 dup2 "libc.so" +//go:cgo_import_dynamic libc_exit exit "libc.so" +//go:cgo_import_dynamic libc_faccessat faccessat "libc.so" +//go:cgo_import_dynamic libc_fchdir fchdir "libc.so" +//go:cgo_import_dynamic libc_fchmod fchmod "libc.so" +//go:cgo_import_dynamic libc_fchmodat fchmodat "libc.so" +//go:cgo_import_dynamic libc_fchown fchown "libc.so" +//go:cgo_import_dynamic libc_fchownat fchownat "libc.so" +//go:cgo_import_dynamic libc_fdatasync fdatasync "libc.so" +//go:cgo_import_dynamic libc_flock flock "libc.so" +//go:cgo_import_dynamic libc_fpathconf fpathconf "libc.so" +//go:cgo_import_dynamic libc_fstat fstat "libc.so" +//go:cgo_import_dynamic libc_fstatat fstatat "libc.so" +//go:cgo_import_dynamic libc_fstatvfs fstatvfs "libc.so" +//go:cgo_import_dynamic libc_getdents getdents "libc.so" +//go:cgo_import_dynamic libc_getgid getgid "libc.so" +//go:cgo_import_dynamic libc_getpid getpid "libc.so" +//go:cgo_import_dynamic libc_getpgid getpgid "libc.so" +//go:cgo_import_dynamic libc_getpgrp getpgrp "libc.so" +//go:cgo_import_dynamic libc_geteuid geteuid "libc.so" +//go:cgo_import_dynamic libc_getegid getegid "libc.so" +//go:cgo_import_dynamic libc_getppid getppid "libc.so" +//go:cgo_import_dynamic libc_getpriority getpriority "libc.so" +//go:cgo_import_dynamic libc_getrlimit getrlimit "libc.so" +//go:cgo_import_dynamic libc_getrusage getrusage "libc.so" +//go:cgo_import_dynamic libc_getsid getsid "libc.so" +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.so" +//go:cgo_import_dynamic libc_getuid getuid "libc.so" +//go:cgo_import_dynamic libc_kill kill "libc.so" +//go:cgo_import_dynamic libc_lchown lchown "libc.so" +//go:cgo_import_dynamic libc_link link "libc.so" +//go:cgo_import_dynamic libc___xnet_llisten __xnet_llisten "libsocket.so" +//go:cgo_import_dynamic libc_lstat lstat "libc.so" +//go:cgo_import_dynamic libc_madvise madvise "libc.so" +//go:cgo_import_dynamic libc_mkdir mkdir "libc.so" +//go:cgo_import_dynamic libc_mkdirat mkdirat "libc.so" +//go:cgo_import_dynamic libc_mkfifo mkfifo "libc.so" +//go:cgo_import_dynamic libc_mkfifoat mkfifoat "libc.so" +//go:cgo_import_dynamic libc_mknod mknod "libc.so" +//go:cgo_import_dynamic libc_mknodat mknodat "libc.so" +//go:cgo_import_dynamic libc_mlock mlock "libc.so" +//go:cgo_import_dynamic libc_mlockall mlockall "libc.so" +//go:cgo_import_dynamic libc_mprotect mprotect "libc.so" +//go:cgo_import_dynamic libc_msync msync "libc.so" +//go:cgo_import_dynamic libc_munlock munlock "libc.so" +//go:cgo_import_dynamic libc_munlockall munlockall "libc.so" +//go:cgo_import_dynamic libc_nanosleep nanosleep "libc.so" +//go:cgo_import_dynamic libc_open open "libc.so" +//go:cgo_import_dynamic libc_openat openat "libc.so" +//go:cgo_import_dynamic libc_pathconf pathconf "libc.so" +//go:cgo_import_dynamic libc_pause pause "libc.so" +//go:cgo_import_dynamic libc_pread pread "libc.so" +//go:cgo_import_dynamic libc_pwrite pwrite "libc.so" +//go:cgo_import_dynamic libc_read read "libc.so" +//go:cgo_import_dynamic libc_readlink readlink "libc.so" +//go:cgo_import_dynamic libc_rename rename "libc.so" +//go:cgo_import_dynamic libc_renameat renameat "libc.so" +//go:cgo_import_dynamic libc_rmdir rmdir "libc.so" +//go:cgo_import_dynamic libc_lseek lseek "libc.so" +//go:cgo_import_dynamic libc_select select "libc.so" +//go:cgo_import_dynamic libc_setegid setegid "libc.so" +//go:cgo_import_dynamic libc_seteuid seteuid "libc.so" +//go:cgo_import_dynamic libc_setgid setgid "libc.so" +//go:cgo_import_dynamic libc_sethostname sethostname "libc.so" +//go:cgo_import_dynamic libc_setpgid setpgid "libc.so" +//go:cgo_import_dynamic libc_setpriority setpriority "libc.so" +//go:cgo_import_dynamic libc_setregid setregid "libc.so" +//go:cgo_import_dynamic libc_setreuid setreuid "libc.so" +//go:cgo_import_dynamic libc_setsid setsid "libc.so" +//go:cgo_import_dynamic libc_setuid setuid "libc.so" +//go:cgo_import_dynamic libc_shutdown shutdown "libsocket.so" +//go:cgo_import_dynamic libc_stat stat "libc.so" +//go:cgo_import_dynamic libc_statvfs statvfs "libc.so" +//go:cgo_import_dynamic libc_symlink symlink "libc.so" +//go:cgo_import_dynamic libc_sync sync "libc.so" +//go:cgo_import_dynamic libc_sysconf sysconf "libc.so" +//go:cgo_import_dynamic libc_times times "libc.so" +//go:cgo_import_dynamic libc_truncate truncate "libc.so" +//go:cgo_import_dynamic libc_fsync fsync "libc.so" +//go:cgo_import_dynamic libc_ftruncate ftruncate "libc.so" +//go:cgo_import_dynamic libc_umask umask "libc.so" +//go:cgo_import_dynamic libc_uname uname "libc.so" +//go:cgo_import_dynamic libc_umount umount "libc.so" +//go:cgo_import_dynamic libc_unlink unlink "libc.so" +//go:cgo_import_dynamic libc_unlinkat unlinkat "libc.so" +//go:cgo_import_dynamic libc_ustat ustat "libc.so" +//go:cgo_import_dynamic libc_utime utime "libc.so" +//go:cgo_import_dynamic libc___xnet_bind __xnet_bind "libsocket.so" +//go:cgo_import_dynamic libc___xnet_connect __xnet_connect "libsocket.so" +//go:cgo_import_dynamic libc_mmap mmap "libc.so" +//go:cgo_import_dynamic libc_munmap munmap "libc.so" +//go:cgo_import_dynamic libc_sendfile sendfile "libsendfile.so" +//go:cgo_import_dynamic libc___xnet_sendto __xnet_sendto "libsocket.so" +//go:cgo_import_dynamic libc___xnet_socket __xnet_socket "libsocket.so" +//go:cgo_import_dynamic libc___xnet_socketpair __xnet_socketpair "libsocket.so" +//go:cgo_import_dynamic libc_write write "libc.so" +//go:cgo_import_dynamic libc___xnet_getsockopt __xnet_getsockopt "libsocket.so" +//go:cgo_import_dynamic libc_getpeername getpeername "libsocket.so" +//go:cgo_import_dynamic libc_setsockopt setsockopt "libsocket.so" +//go:cgo_import_dynamic libc_recvfrom recvfrom "libsocket.so" +//go:cgo_import_dynamic libc_getpeerucred getpeerucred "libc.so" +//go:cgo_import_dynamic libc_ucred_get ucred_get "libc.so" +//go:cgo_import_dynamic libc_ucred_geteuid ucred_geteuid "libc.so" +//go:cgo_import_dynamic libc_ucred_getegid ucred_getegid "libc.so" +//go:cgo_import_dynamic libc_ucred_getruid ucred_getruid "libc.so" +//go:cgo_import_dynamic libc_ucred_getrgid ucred_getrgid "libc.so" +//go:cgo_import_dynamic libc_ucred_getsuid ucred_getsuid "libc.so" +//go:cgo_import_dynamic libc_ucred_getsgid ucred_getsgid "libc.so" +//go:cgo_import_dynamic libc_ucred_getpid ucred_getpid "libc.so" +//go:cgo_import_dynamic libc_ucred_free ucred_free "libc.so" +//go:cgo_import_dynamic libc_port_create port_create "libc.so" +//go:cgo_import_dynamic libc_port_associate port_associate "libc.so" +//go:cgo_import_dynamic libc_port_dissociate port_dissociate "libc.so" +//go:cgo_import_dynamic libc_port_get port_get "libc.so" +//go:cgo_import_dynamic libc_port_getn port_getn "libc.so" +//go:cgo_import_dynamic libc_putmsg putmsg "libc.so" +//go:cgo_import_dynamic libc_getmsg getmsg "libc.so" + +//go:linkname procpipe libc_pipe +//go:linkname procpipe2 libc_pipe2 +//go:linkname procgetsockname libc_getsockname +//go:linkname procGetcwd libc_getcwd +//go:linkname procgetgroups libc_getgroups +//go:linkname procsetgroups libc_setgroups +//go:linkname procwait4 libc_wait4 +//go:linkname procgethostname libc_gethostname +//go:linkname procutimes libc_utimes +//go:linkname procutimensat libc_utimensat +//go:linkname procfcntl libc_fcntl +//go:linkname procfutimesat libc_futimesat +//go:linkname procaccept libc_accept +//go:linkname proc__xnet_recvmsg libc___xnet_recvmsg +//go:linkname proc__xnet_sendmsg libc___xnet_sendmsg +//go:linkname procacct libc_acct +//go:linkname proc__makedev libc___makedev +//go:linkname proc__major libc___major +//go:linkname proc__minor libc___minor +//go:linkname procioctl libc_ioctl +//go:linkname procpoll libc_poll +//go:linkname procAccess libc_access +//go:linkname procAdjtime libc_adjtime +//go:linkname procChdir libc_chdir +//go:linkname procChmod libc_chmod +//go:linkname procChown libc_chown +//go:linkname procChroot libc_chroot +//go:linkname procClockGettime libc_clockgettime +//go:linkname procClose libc_close +//go:linkname procCreat libc_creat +//go:linkname procDup libc_dup +//go:linkname procDup2 libc_dup2 +//go:linkname procExit libc_exit +//go:linkname procFaccessat libc_faccessat +//go:linkname procFchdir libc_fchdir +//go:linkname procFchmod libc_fchmod +//go:linkname procFchmodat libc_fchmodat +//go:linkname procFchown libc_fchown +//go:linkname procFchownat libc_fchownat +//go:linkname procFdatasync libc_fdatasync +//go:linkname procFlock libc_flock +//go:linkname procFpathconf libc_fpathconf +//go:linkname procFstat libc_fstat +//go:linkname procFstatat libc_fstatat +//go:linkname procFstatvfs libc_fstatvfs +//go:linkname procGetdents libc_getdents +//go:linkname procGetgid libc_getgid +//go:linkname procGetpid libc_getpid +//go:linkname procGetpgid libc_getpgid +//go:linkname procGetpgrp libc_getpgrp +//go:linkname procGeteuid libc_geteuid +//go:linkname procGetegid libc_getegid +//go:linkname procGetppid libc_getppid +//go:linkname procGetpriority libc_getpriority +//go:linkname procGetrlimit libc_getrlimit +//go:linkname procGetrusage libc_getrusage +//go:linkname procGetsid libc_getsid +//go:linkname procGettimeofday libc_gettimeofday +//go:linkname procGetuid libc_getuid +//go:linkname procKill libc_kill +//go:linkname procLchown libc_lchown +//go:linkname procLink libc_link +//go:linkname proc__xnet_llisten libc___xnet_llisten +//go:linkname procLstat libc_lstat +//go:linkname procMadvise libc_madvise +//go:linkname procMkdir libc_mkdir +//go:linkname procMkdirat libc_mkdirat +//go:linkname procMkfifo libc_mkfifo +//go:linkname procMkfifoat libc_mkfifoat +//go:linkname procMknod libc_mknod +//go:linkname procMknodat libc_mknodat +//go:linkname procMlock libc_mlock +//go:linkname procMlockall libc_mlockall +//go:linkname procMprotect libc_mprotect +//go:linkname procMsync libc_msync +//go:linkname procMunlock libc_munlock +//go:linkname procMunlockall libc_munlockall +//go:linkname procNanosleep libc_nanosleep +//go:linkname procOpen libc_open +//go:linkname procOpenat libc_openat +//go:linkname procPathconf libc_pathconf +//go:linkname procPause libc_pause +//go:linkname procpread libc_pread +//go:linkname procpwrite libc_pwrite +//go:linkname procread libc_read +//go:linkname procReadlink libc_readlink +//go:linkname procRename libc_rename +//go:linkname procRenameat libc_renameat +//go:linkname procRmdir libc_rmdir +//go:linkname proclseek libc_lseek +//go:linkname procSelect libc_select +//go:linkname procSetegid libc_setegid +//go:linkname procSeteuid libc_seteuid +//go:linkname procSetgid libc_setgid +//go:linkname procSethostname libc_sethostname +//go:linkname procSetpgid libc_setpgid +//go:linkname procSetpriority libc_setpriority +//go:linkname procSetregid libc_setregid +//go:linkname procSetreuid libc_setreuid +//go:linkname procSetsid libc_setsid +//go:linkname procSetuid libc_setuid +//go:linkname procshutdown libc_shutdown +//go:linkname procStat libc_stat +//go:linkname procStatvfs libc_statvfs +//go:linkname procSymlink libc_symlink +//go:linkname procSync libc_sync +//go:linkname procSysconf libc_sysconf +//go:linkname procTimes libc_times +//go:linkname procTruncate libc_truncate +//go:linkname procFsync libc_fsync +//go:linkname procFtruncate libc_ftruncate +//go:linkname procUmask libc_umask +//go:linkname procUname libc_uname +//go:linkname procumount libc_umount +//go:linkname procUnlink libc_unlink +//go:linkname procUnlinkat libc_unlinkat +//go:linkname procUstat libc_ustat +//go:linkname procUtime libc_utime +//go:linkname proc__xnet_bind libc___xnet_bind +//go:linkname proc__xnet_connect libc___xnet_connect +//go:linkname procmmap libc_mmap +//go:linkname procmunmap libc_munmap +//go:linkname procsendfile libc_sendfile +//go:linkname proc__xnet_sendto libc___xnet_sendto +//go:linkname proc__xnet_socket libc___xnet_socket +//go:linkname proc__xnet_socketpair libc___xnet_socketpair +//go:linkname procwrite libc_write +//go:linkname proc__xnet_getsockopt libc___xnet_getsockopt +//go:linkname procgetpeername libc_getpeername +//go:linkname procsetsockopt libc_setsockopt +//go:linkname procrecvfrom libc_recvfrom +//go:linkname procgetpeerucred libc_getpeerucred +//go:linkname procucred_get libc_ucred_get +//go:linkname procucred_geteuid libc_ucred_geteuid +//go:linkname procucred_getegid libc_ucred_getegid +//go:linkname procucred_getruid libc_ucred_getruid +//go:linkname procucred_getrgid libc_ucred_getrgid +//go:linkname procucred_getsuid libc_ucred_getsuid +//go:linkname procucred_getsgid libc_ucred_getsgid +//go:linkname procucred_getpid libc_ucred_getpid +//go:linkname procucred_free libc_ucred_free +//go:linkname procport_create libc_port_create +//go:linkname procport_associate libc_port_associate +//go:linkname procport_dissociate libc_port_dissociate +//go:linkname procport_get libc_port_get +//go:linkname procport_getn libc_port_getn +//go:linkname procputmsg libc_putmsg +//go:linkname procgetmsg libc_getmsg + +var ( + procpipe, + procpipe2, + procgetsockname, + procGetcwd, + procgetgroups, + procsetgroups, + procwait4, + procgethostname, + procutimes, + procutimensat, + procfcntl, + procfutimesat, + procaccept, + proc__xnet_recvmsg, + proc__xnet_sendmsg, + procacct, + proc__makedev, + proc__major, + proc__minor, + procioctl, + procpoll, + procAccess, + procAdjtime, + procChdir, + procChmod, + procChown, + procChroot, + procClockGettime, + procClose, + procCreat, + procDup, + procDup2, + procExit, + procFaccessat, + procFchdir, + procFchmod, + procFchmodat, + procFchown, + procFchownat, + procFdatasync, + procFlock, + procFpathconf, + procFstat, + procFstatat, + procFstatvfs, + procGetdents, + procGetgid, + procGetpid, + procGetpgid, + procGetpgrp, + procGeteuid, + procGetegid, + procGetppid, + procGetpriority, + procGetrlimit, + procGetrusage, + procGetsid, + procGettimeofday, + procGetuid, + procKill, + procLchown, + procLink, + proc__xnet_llisten, + procLstat, + procMadvise, + procMkdir, + procMkdirat, + procMkfifo, + procMkfifoat, + procMknod, + procMknodat, + procMlock, + procMlockall, + procMprotect, + procMsync, + procMunlock, + procMunlockall, + procNanosleep, + procOpen, + procOpenat, + procPathconf, + procPause, + procpread, + procpwrite, + procread, + procReadlink, + procRename, + procRenameat, + procRmdir, + proclseek, + procSelect, + procSetegid, + procSeteuid, + procSetgid, + procSethostname, + procSetpgid, + procSetpriority, + procSetregid, + procSetreuid, + procSetsid, + procSetuid, + procshutdown, + procStat, + procStatvfs, + procSymlink, + procSync, + procSysconf, + procTimes, + procTruncate, + procFsync, + procFtruncate, + procUmask, + procUname, + procumount, + procUnlink, + procUnlinkat, + procUstat, + procUtime, + proc__xnet_bind, + proc__xnet_connect, + procmmap, + procmunmap, + procsendfile, + proc__xnet_sendto, + proc__xnet_socket, + proc__xnet_socketpair, + procwrite, + proc__xnet_getsockopt, + procgetpeername, + procsetsockopt, + procrecvfrom, + procgetpeerucred, + procucred_get, + procucred_geteuid, + procucred_getegid, + procucred_getruid, + procucred_getrgid, + procucred_getsuid, + procucred_getsgid, + procucred_getpid, + procucred_free, + procport_create, + procport_associate, + procport_dissociate, + procport_get, + procport_getn, + procputmsg, + procgetmsg syscallFunc +) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (n int, err error) { + r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procpipe)), 1, uintptr(unsafe.Pointer(p)), 0, 0, 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procpipe2)), 2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetsockname)), 3, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetcwd)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), 0, 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procgetgroups)), 2, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0, 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procsetgroups)), 2, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int32, statusp *_C_int, options int, rusage *Rusage) (wpid int32, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwait4)), 4, uintptr(pid), uintptr(unsafe.Pointer(statusp)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int32(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gethostname(buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgethostname)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), 0, 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procutimes)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(fd int, path string, times *[2]Timespec, flag int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procutimensat)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flag), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(arg), 0, 0, 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(fildes int, path *byte, times *[2]Timeval) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfutimesat)), 3, uintptr(fildes), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procaccept)), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_recvmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_sendmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func acct(path *byte) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procacct)), 1, uintptr(unsafe.Pointer(path)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func __makedev(version int, major uint, minor uint) (val uint64) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__makedev)), 3, uintptr(version), uintptr(major), uintptr(minor), 0, 0, 0) + val = uint64(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func __major(version int, dev uint64) (val uint) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__major)), 2, uintptr(version), uintptr(dev), 0, 0, 0, 0) + val = uint(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func __minor(version int, dev uint64) (val uint) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__minor)), 2, uintptr(version), uintptr(dev), 0, 0, 0, 0) + val = uint(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlRet(fd int, req int, arg uintptr) (ret int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtrRet(fd int, req int, arg unsafe.Pointer) (ret int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpoll)), 3, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procAccess)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procAdjtime)), 2, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChdir)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChmod)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChown)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChroot)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procClockGettime)), 2, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procClose)), 1, uintptr(fd), 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Creat(path string, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procCreat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procDup)), 1, uintptr(fd), 0, 0, 0, 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procDup2)), 2, uintptr(oldfd), uintptr(newfd), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + sysvicall6(uintptr(unsafe.Pointer(&procExit)), 1, uintptr(code), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFaccessat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchdir)), 1, uintptr(fd), 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchmod)), 2, uintptr(fd), uintptr(mode), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchmodat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchown)), 3, uintptr(fd), uintptr(uid), uintptr(gid), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchownat)), 5, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFdatasync)), 1, uintptr(fd), 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFlock)), 2, uintptr(fd), uintptr(how), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFpathconf)), 2, uintptr(fd), uintptr(name), 0, 0, 0, 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstat)), 2, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstatat)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatvfs(fd int, vfsstat *Statvfs_t) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstatvfs)), 2, uintptr(fd), uintptr(unsafe.Pointer(vfsstat)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetdents)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetgid)), 0, 0, 0, 0, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpid)), 0, 0, 0, 0, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpgid)), 1, uintptr(pid), 0, 0, 0, 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgid int, err error) { + r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpgrp)), 0, 0, 0, 0, 0, 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGeteuid)), 0, 0, 0, 0, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGetegid)), 0, 0, 0, 0, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGetppid)), 0, 0, 0, 0, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetpriority)), 2, uintptr(which), uintptr(who), 0, 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetrlimit)), 2, uintptr(which), uintptr(unsafe.Pointer(lim)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetrusage)), 2, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetsid)), 1, uintptr(pid), 0, 0, 0, 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGettimeofday)), 1, uintptr(unsafe.Pointer(tv)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetuid)), 0, 0, 0, 0, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procKill)), 2, uintptr(pid), uintptr(signum), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLchown)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLink)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_llisten)), 2, uintptr(s), uintptr(backlog), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLstat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMadvise)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(advice), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkdir)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkdirat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkfifo)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkfifoat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMknod)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMknodat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMlock)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMlockall)), 1, uintptr(flags), 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMprotect)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(prot), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMsync)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(flags), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMunlock)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMunlockall)), 0, 0, 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procNanosleep)), 2, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procOpen)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procOpenat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPathconf)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0, 0, 0, 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPause)), 0, 0, 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpread)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpwrite)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procread)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + if len(buf) > 0 { + _p1 = &buf[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procReadlink)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(len(buf)), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRename)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRenameat)), 4, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRmdir)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proclseek)), 3, uintptr(fd), uintptr(offset), uintptr(whence), 0, 0, 0) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSelect)), 5, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetegid)), 1, uintptr(egid), 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSeteuid)), 1, uintptr(euid), 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetgid)), 1, uintptr(gid), 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSethostname)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetpgid)), 2, uintptr(pid), uintptr(pgid), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSetpriority)), 3, uintptr(which), uintptr(who), uintptr(prio), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetregid)), 2, uintptr(rgid), uintptr(egid), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetreuid)), 2, uintptr(ruid), uintptr(euid), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetsid)), 0, 0, 0, 0, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetuid)), 1, uintptr(uid), 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procshutdown)), 2, uintptr(s), uintptr(how), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procStat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statvfs(path string, vfsstat *Statvfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procStatvfs)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(vfsstat)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSymlink)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSync)), 0, 0, 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysconf(which int) (n int64, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSysconf)), 1, uintptr(which), 0, 0, 0, 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procTimes)), 1, uintptr(unsafe.Pointer(tms)), 0, 0, 0, 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procTruncate)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFsync)), 1, uintptr(fd), 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFtruncate)), 2, uintptr(fd), uintptr(length), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procUmask)), 1, uintptr(mask), 0, 0, 0, 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procUname)), 1, uintptr(unsafe.Pointer(buf)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procumount)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUnlink)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUnlinkat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUstat)), 2, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUtime)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_bind)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_connect)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procmmap)), 6, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procmunmap)), 2, uintptr(addr), uintptr(length), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsendfile)), 4, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_sendto)), 6, uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_socket)), 3, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&proc__xnet_socketpair)), 4, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwrite)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_getsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procgetpeername)), 3, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsetsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procrecvfrom)), 6, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeerucred(fd uintptr, ucred *uintptr) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetpeerucred)), 2, uintptr(fd), uintptr(unsafe.Pointer(ucred)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredGet(pid int) (ucred uintptr, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procucred_get)), 1, uintptr(pid), 0, 0, 0, 0, 0) + ucred = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredGeteuid(ucred uintptr) (uid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_geteuid)), 1, uintptr(ucred), 0, 0, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredGetegid(ucred uintptr) (gid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getegid)), 1, uintptr(ucred), 0, 0, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredGetruid(ucred uintptr) (uid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getruid)), 1, uintptr(ucred), 0, 0, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredGetrgid(ucred uintptr) (gid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getrgid)), 1, uintptr(ucred), 0, 0, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredGetsuid(ucred uintptr) (uid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getsuid)), 1, uintptr(ucred), 0, 0, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredGetsgid(ucred uintptr) (gid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getsgid)), 1, uintptr(ucred), 0, 0, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredGetpid(ucred uintptr) (pid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getpid)), 1, uintptr(ucred), 0, 0, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredFree(ucred uintptr) { + sysvicall6(uintptr(unsafe.Pointer(&procucred_free)), 1, uintptr(ucred), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func port_create() (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_create)), 0, 0, 0, 0, 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func port_associate(port int, source int, object uintptr, events int, user *byte) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_associate)), 5, uintptr(port), uintptr(source), uintptr(object), uintptr(events), uintptr(unsafe.Pointer(user)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func port_dissociate(port int, source int, object uintptr) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_dissociate)), 3, uintptr(port), uintptr(source), uintptr(object), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func port_get(port int, pe *portEvent, timeout *Timespec) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_get)), 3, uintptr(port), uintptr(unsafe.Pointer(pe)), uintptr(unsafe.Pointer(timeout)), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func port_getn(port int, pe *portEvent, max uint32, nget *uint32, timeout *Timespec) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_getn)), 5, uintptr(port), uintptr(unsafe.Pointer(pe)), uintptr(max), uintptr(unsafe.Pointer(nget)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func putmsg(fd int, clptr *strbuf, dataptr *strbuf, flags int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procputmsg)), 4, uintptr(fd), uintptr(unsafe.Pointer(clptr)), uintptr(unsafe.Pointer(dataptr)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getmsg(fd int, clptr *strbuf, dataptr *strbuf, flags *int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetmsg)), 4, uintptr(fd), uintptr(unsafe.Pointer(clptr)), uintptr(unsafe.Pointer(dataptr)), uintptr(unsafe.Pointer(flags)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go b/tests/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go new file mode 100644 index 000000000..7ccf66b7e --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go @@ -0,0 +1,3458 @@ +// go run mksyscall_zos_s390x.go -o_sysnum zsysnum_zos_s390x.go -o_syscall zsyscall_zos_s390x.go -i_syscall syscall_zos_s390x.go -o_asm zsymaddr_zos_s390x.s +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build zos && s390x + +package unix + +import ( + "runtime" + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCNTL<<4, uintptr(fd), uintptr(cmd), uintptr(arg)) + runtime.ExitSyscall() + val = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FLISTXATTR_A<<4, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + runtime.ExitSyscall() + sz = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_FlistxattrAddr() *(func(fd int, dest []byte) (sz int, err error)) + +var Flistxattr = enter_Flistxattr + +func enter_Flistxattr(fd int, dest []byte) (sz int, err error) { + funcref := get_FlistxattrAddr() + if funcptrtest(GetZosLibVec()+SYS___FLISTXATTR_A<<4, "") == 0 { + *funcref = impl_Flistxattr + } else { + *funcref = error_Flistxattr + } + return (*funcref)(fd, dest) +} + +func error_Flistxattr(fd int, dest []byte) (sz int, err error) { + sz = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FREMOVEXATTR_A<<4, uintptr(fd), uintptr(unsafe.Pointer(_p0))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_FremovexattrAddr() *(func(fd int, attr string) (err error)) + +var Fremovexattr = enter_Fremovexattr + +func enter_Fremovexattr(fd int, attr string) (err error) { + funcref := get_FremovexattrAddr() + if funcptrtest(GetZosLibVec()+SYS___FREMOVEXATTR_A<<4, "") == 0 { + *funcref = impl_Fremovexattr + } else { + *funcref = error_Fremovexattr + } + return (*funcref)(fd, attr) +} + +func error_Fremovexattr(fd int, attr string) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_READ<<4, uintptr(fd), uintptr(_p0), uintptr(len(p))) + runtime.ExitSyscall() + n = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_WRITE<<4, uintptr(fd), uintptr(_p0), uintptr(len(p))) + runtime.ExitSyscall() + n = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FGETXATTR_A<<4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + runtime.ExitSyscall() + sz = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_FgetxattrAddr() *(func(fd int, attr string, dest []byte) (sz int, err error)) + +var Fgetxattr = enter_Fgetxattr + +func enter_Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + funcref := get_FgetxattrAddr() + if funcptrtest(GetZosLibVec()+SYS___FGETXATTR_A<<4, "") == 0 { + *funcref = impl_Fgetxattr + } else { + *funcref = error_Fgetxattr + } + return (*funcref)(fd, attr, dest) +} + +func error_Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + sz = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Fsetxattr(fd int, attr string, data []byte, flag int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(data) > 0 { + _p1 = unsafe.Pointer(&data[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FSETXATTR_A<<4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(data)), uintptr(flag)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_FsetxattrAddr() *(func(fd int, attr string, data []byte, flag int) (err error)) + +var Fsetxattr = enter_Fsetxattr + +func enter_Fsetxattr(fd int, attr string, data []byte, flag int) (err error) { + funcref := get_FsetxattrAddr() + if funcptrtest(GetZosLibVec()+SYS___FSETXATTR_A<<4, "") == 0 { + *funcref = impl_Fsetxattr + } else { + *funcref = error_Fsetxattr + } + return (*funcref)(fd, attr, data, flag) +} + +func error_Fsetxattr(fd int, attr string, data []byte, flag int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___ACCEPT_A<<4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___ACCEPT4_A<<4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags)) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_accept4Addr() *(func(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)) + +var accept4 = enter_accept4 + +func enter_accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + funcref := get_accept4Addr() + if funcptrtest(GetZosLibVec()+SYS___ACCEPT4_A<<4, "") == 0 { + *funcref = impl_accept4 + } else { + *funcref = error_accept4 + } + return (*funcref)(s, rsa, addrlen, flags) +} + +func error_accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + fd = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___BIND_A<<4, uintptr(s), uintptr(addr), uintptr(addrlen)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CONNECT_A<<4, uintptr(s), uintptr(addr), uintptr(addrlen)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETGROUPS<<4, uintptr(n), uintptr(unsafe.Pointer(list))) + nn = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETGROUPS<<4, uintptr(n), uintptr(unsafe.Pointer(list))) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETSOCKOPT<<4, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETSOCKOPT<<4, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SOCKET<<4, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SOCKETPAIR<<4, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd))) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___GETPEERNAME_A<<4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___GETSOCKNAME_A<<4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___REMOVEXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_RemovexattrAddr() *(func(path string, attr string) (err error)) + +var Removexattr = enter_Removexattr + +func enter_Removexattr(path string, attr string) (err error) { + funcref := get_RemovexattrAddr() + if funcptrtest(GetZosLibVec()+SYS___REMOVEXATTR_A<<4, "") == 0 { + *funcref = impl_Removexattr + } else { + *funcref = error_Removexattr + } + return (*funcref)(path, attr) +} + +func error_Removexattr(path string, attr string) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RECVFROM_A<<4, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + runtime.ExitSyscall() + n = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SENDTO_A<<4, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RECVMSG_A<<4, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + runtime.ExitSyscall() + n = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SENDMSG_A<<4, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + runtime.ExitSyscall() + n = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_MMAP<<4, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + runtime.ExitSyscall() + ret = uintptr(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_MUNMAP<<4, uintptr(addr), uintptr(length)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req int, arg uintptr) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_IOCTL<<4, uintptr(fd), uintptr(req), uintptr(arg)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_IOCTL<<4, uintptr(fd), uintptr(req), uintptr(arg)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmat(id int, addr uintptr, flag int) (ret uintptr, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SHMAT<<4, uintptr(id), uintptr(addr), uintptr(flag)) + runtime.ExitSyscall() + ret = uintptr(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SHMCTL64<<4, uintptr(id), uintptr(cmd), uintptr(unsafe.Pointer(buf))) + runtime.ExitSyscall() + result = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmdt(addr uintptr) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SHMDT<<4, uintptr(addr)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmget(key int, size int, flag int) (id int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SHMGET<<4, uintptr(key), uintptr(size), uintptr(flag)) + runtime.ExitSyscall() + id = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___ACCESS_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CHDIR_A<<4, uintptr(unsafe.Pointer(_p0))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CHOWN_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CHMOD_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Creat(path string, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CREAT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_DUP<<4, uintptr(oldfd)) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_DUP2<<4, uintptr(oldfd), uintptr(newfd)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Dup3(oldfd int, newfd int, flags int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_DUP3<<4, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_Dup3Addr() *(func(oldfd int, newfd int, flags int) (err error)) + +var Dup3 = enter_Dup3 + +func enter_Dup3(oldfd int, newfd int, flags int) (err error) { + funcref := get_Dup3Addr() + if funcptrtest(GetZosLibVec()+SYS_DUP3<<4, "") == 0 { + *funcref = impl_Dup3 + } else { + *funcref = error_Dup3 + } + return (*funcref)(oldfd, newfd, flags) +} + +func error_Dup3(oldfd int, newfd int, flags int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Dirfd(dirp uintptr) (fd int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_DIRFD<<4, uintptr(dirp)) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_DirfdAddr() *(func(dirp uintptr) (fd int, err error)) + +var Dirfd = enter_Dirfd + +func enter_Dirfd(dirp uintptr) (fd int, err error) { + funcref := get_DirfdAddr() + if funcptrtest(GetZosLibVec()+SYS_DIRFD<<4, "") == 0 { + *funcref = impl_Dirfd + } else { + *funcref = error_Dirfd + } + return (*funcref)(dirp) +} + +func error_Dirfd(dirp uintptr) (fd int, err error) { + fd = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_EpollCreate(size int) (fd int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EPOLL_CREATE<<4, uintptr(size)) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_EpollCreateAddr() *(func(size int) (fd int, err error)) + +var EpollCreate = enter_EpollCreate + +func enter_EpollCreate(size int) (fd int, err error) { + funcref := get_EpollCreateAddr() + if funcptrtest(GetZosLibVec()+SYS_EPOLL_CREATE<<4, "") == 0 { + *funcref = impl_EpollCreate + } else { + *funcref = error_EpollCreate + } + return (*funcref)(size) +} + +func error_EpollCreate(size int) (fd int, err error) { + fd = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_EpollCreate1(flags int) (fd int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EPOLL_CREATE1<<4, uintptr(flags)) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_EpollCreate1Addr() *(func(flags int) (fd int, err error)) + +var EpollCreate1 = enter_EpollCreate1 + +func enter_EpollCreate1(flags int) (fd int, err error) { + funcref := get_EpollCreate1Addr() + if funcptrtest(GetZosLibVec()+SYS_EPOLL_CREATE1<<4, "") == 0 { + *funcref = impl_EpollCreate1 + } else { + *funcref = error_EpollCreate1 + } + return (*funcref)(flags) +} + +func error_EpollCreate1(flags int) (fd int, err error) { + fd = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EPOLL_CTL<<4, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_EpollCtlAddr() *(func(epfd int, op int, fd int, event *EpollEvent) (err error)) + +var EpollCtl = enter_EpollCtl + +func enter_EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + funcref := get_EpollCtlAddr() + if funcptrtest(GetZosLibVec()+SYS_EPOLL_CTL<<4, "") == 0 { + *funcref = impl_EpollCtl + } else { + *funcref = error_EpollCtl + } + return (*funcref)(epfd, op, fd, event) +} + +func error_EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_EpollPwait(epfd int, events []EpollEvent, msec int, sigmask *int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EPOLL_PWAIT<<4, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), uintptr(unsafe.Pointer(sigmask))) + runtime.ExitSyscall() + n = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_EpollPwaitAddr() *(func(epfd int, events []EpollEvent, msec int, sigmask *int) (n int, err error)) + +var EpollPwait = enter_EpollPwait + +func enter_EpollPwait(epfd int, events []EpollEvent, msec int, sigmask *int) (n int, err error) { + funcref := get_EpollPwaitAddr() + if funcptrtest(GetZosLibVec()+SYS_EPOLL_PWAIT<<4, "") == 0 { + *funcref = impl_EpollPwait + } else { + *funcref = error_EpollPwait + } + return (*funcref)(epfd, events, msec, sigmask) +} + +func error_EpollPwait(epfd int, events []EpollEvent, msec int, sigmask *int) (n int, err error) { + n = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EPOLL_WAIT<<4, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec)) + runtime.ExitSyscall() + n = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_EpollWaitAddr() *(func(epfd int, events []EpollEvent, msec int) (n int, err error)) + +var EpollWait = enter_EpollWait + +func enter_EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + funcref := get_EpollWaitAddr() + if funcptrtest(GetZosLibVec()+SYS_EPOLL_WAIT<<4, "") == 0 { + *funcref = impl_EpollWait + } else { + *funcref = error_EpollWait + } + return (*funcref)(epfd, events, msec) +} + +func error_EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + n = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Errno2() (er2 int) { + runtime.EnterSyscall() + r0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS___ERRNO2<<4) + runtime.ExitSyscall() + er2 = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Eventfd(initval uint, flags int) (fd int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EVENTFD<<4, uintptr(initval), uintptr(flags)) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_EventfdAddr() *(func(initval uint, flags int) (fd int, err error)) + +var Eventfd = enter_Eventfd + +func enter_Eventfd(initval uint, flags int) (fd int, err error) { + funcref := get_EventfdAddr() + if funcptrtest(GetZosLibVec()+SYS_EVENTFD<<4, "") == 0 { + *funcref = impl_Eventfd + } else { + *funcref = error_Eventfd + } + return (*funcref)(initval, flags) +} + +func error_Eventfd(initval uint, flags int) (fd int, err error) { + fd = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + runtime.EnterSyscall() + CallLeFuncWithErr(GetZosLibVec()+SYS_EXIT<<4, uintptr(code)) + runtime.ExitSyscall() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FACCESSAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_FaccessatAddr() *(func(dirfd int, path string, mode uint32, flags int) (err error)) + +var Faccessat = enter_Faccessat + +func enter_Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + funcref := get_FaccessatAddr() + if funcptrtest(GetZosLibVec()+SYS___FACCESSAT_A<<4, "") == 0 { + *funcref = impl_Faccessat + } else { + *funcref = error_Faccessat + } + return (*funcref)(dirfd, path, mode, flags) +} + +func error_Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCHDIR<<4, uintptr(fd)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCHMOD<<4, uintptr(fd), uintptr(mode)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FCHMODAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_FchmodatAddr() *(func(dirfd int, path string, mode uint32, flags int) (err error)) + +var Fchmodat = enter_Fchmodat + +func enter_Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + funcref := get_FchmodatAddr() + if funcptrtest(GetZosLibVec()+SYS___FCHMODAT_A<<4, "") == 0 { + *funcref = impl_Fchmodat + } else { + *funcref = error_Fchmodat + } + return (*funcref)(dirfd, path, mode, flags) +} + +func error_Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCHOWN<<4, uintptr(fd), uintptr(uid), uintptr(gid)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Fchownat(fd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FCHOWNAT_A<<4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_FchownatAddr() *(func(fd int, path string, uid int, gid int, flags int) (err error)) + +var Fchownat = enter_Fchownat + +func enter_Fchownat(fd int, path string, uid int, gid int, flags int) (err error) { + funcref := get_FchownatAddr() + if funcptrtest(GetZosLibVec()+SYS___FCHOWNAT_A<<4, "") == 0 { + *funcref = impl_Fchownat + } else { + *funcref = error_Fchownat + } + return (*funcref)(fd, path, uid, gid, flags) +} + +func error_Fchownat(fd int, path string, uid int, gid int, flags int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FcntlInt(fd uintptr, cmd int, arg int) (retval int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCNTL<<4, uintptr(fd), uintptr(cmd), uintptr(arg)) + runtime.ExitSyscall() + retval = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Fdatasync(fd int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FDATASYNC<<4, uintptr(fd)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_FdatasyncAddr() *(func(fd int) (err error)) + +var Fdatasync = enter_Fdatasync + +func enter_Fdatasync(fd int) (err error) { + funcref := get_FdatasyncAddr() + if funcptrtest(GetZosLibVec()+SYS_FDATASYNC<<4, "") == 0 { + *funcref = impl_Fdatasync + } else { + *funcref = error_Fdatasync + } + return (*funcref)(fd) +} + +func error_Fdatasync(fd int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat(fd int, stat *Stat_LE_t) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FSTAT<<4, uintptr(fd), uintptr(unsafe.Pointer(stat))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_fstatat(dirfd int, path string, stat *Stat_LE_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FSTATAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_fstatatAddr() *(func(dirfd int, path string, stat *Stat_LE_t, flags int) (err error)) + +var fstatat = enter_fstatat + +func enter_fstatat(dirfd int, path string, stat *Stat_LE_t, flags int) (err error) { + funcref := get_fstatatAddr() + if funcptrtest(GetZosLibVec()+SYS___FSTATAT_A<<4, "") == 0 { + *funcref = impl_fstatat + } else { + *funcref = error_fstatat + } + return (*funcref)(dirfd, path, stat, flags) +} + +func error_fstatat(dirfd int, path string, stat *Stat_LE_t, flags int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Lgetxattr(link string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LGETXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest))) + runtime.ExitSyscall() + sz = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_LgetxattrAddr() *(func(link string, attr string, dest []byte) (sz int, err error)) + +var Lgetxattr = enter_Lgetxattr + +func enter_Lgetxattr(link string, attr string, dest []byte) (sz int, err error) { + funcref := get_LgetxattrAddr() + if funcptrtest(GetZosLibVec()+SYS___LGETXATTR_A<<4, "") == 0 { + *funcref = impl_Lgetxattr + } else { + *funcref = error_Lgetxattr + } + return (*funcref)(link, attr, dest) +} + +func error_Lgetxattr(link string, attr string, dest []byte) (sz int, err error) { + sz = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LSETXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_LsetxattrAddr() *(func(path string, attr string, data []byte, flags int) (err error)) + +var Lsetxattr = enter_Lsetxattr + +func enter_Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + funcref := get_LsetxattrAddr() + if funcptrtest(GetZosLibVec()+SYS___LSETXATTR_A<<4, "") == 0 { + *funcref = impl_Lsetxattr + } else { + *funcref = error_Lsetxattr + } + return (*funcref)(path, attr, data, flags) +} + +func error_Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Fstatfs(fd int, buf *Statfs_t) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FSTATFS<<4, uintptr(fd), uintptr(unsafe.Pointer(buf))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_FstatfsAddr() *(func(fd int, buf *Statfs_t) (err error)) + +var Fstatfs = enter_Fstatfs + +func enter_Fstatfs(fd int, buf *Statfs_t) (err error) { + funcref := get_FstatfsAddr() + if funcptrtest(GetZosLibVec()+SYS_FSTATFS<<4, "") == 0 { + *funcref = impl_Fstatfs + } else { + *funcref = error_Fstatfs + } + return (*funcref)(fd, buf) +} + +func error_Fstatfs(fd int, buf *Statfs_t) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatvfs(fd int, stat *Statvfs_t) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FSTATVFS<<4, uintptr(fd), uintptr(unsafe.Pointer(stat))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FSYNC<<4, uintptr(fd)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Futimes(fd int, tv []Timeval) (err error) { + var _p0 unsafe.Pointer + if len(tv) > 0 { + _p0 = unsafe.Pointer(&tv[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FUTIMES<<4, uintptr(fd), uintptr(_p0), uintptr(len(tv))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_FutimesAddr() *(func(fd int, tv []Timeval) (err error)) + +var Futimes = enter_Futimes + +func enter_Futimes(fd int, tv []Timeval) (err error) { + funcref := get_FutimesAddr() + if funcptrtest(GetZosLibVec()+SYS_FUTIMES<<4, "") == 0 { + *funcref = impl_Futimes + } else { + *funcref = error_Futimes + } + return (*funcref)(fd, tv) +} + +func error_Futimes(fd int, tv []Timeval) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Futimesat(dirfd int, path string, tv []Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(tv) > 0 { + _p1 = unsafe.Pointer(&tv[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FUTIMESAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(tv))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_FutimesatAddr() *(func(dirfd int, path string, tv []Timeval) (err error)) + +var Futimesat = enter_Futimesat + +func enter_Futimesat(dirfd int, path string, tv []Timeval) (err error) { + funcref := get_FutimesatAddr() + if funcptrtest(GetZosLibVec()+SYS___FUTIMESAT_A<<4, "") == 0 { + *funcref = impl_Futimesat + } else { + *funcref = error_Futimesat + } + return (*funcref)(dirfd, path, tv) +} + +func error_Futimesat(dirfd int, path string, tv []Timeval) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FTRUNCATE<<4, uintptr(fd), uintptr(length)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETRANDOM<<4, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + runtime.ExitSyscall() + n = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_GetrandomAddr() *(func(buf []byte, flags int) (n int, err error)) + +var Getrandom = enter_Getrandom + +func enter_Getrandom(buf []byte, flags int) (n int, err error) { + funcref := get_GetrandomAddr() + if funcptrtest(GetZosLibVec()+SYS_GETRANDOM<<4, "") == 0 { + *funcref = impl_Getrandom + } else { + *funcref = error_Getrandom + } + return (*funcref)(buf, flags) +} + +func error_Getrandom(buf []byte, flags int) (n int, err error) { + n = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_InotifyInit() (fd int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec() + SYS_INOTIFY_INIT<<4) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_InotifyInitAddr() *(func() (fd int, err error)) + +var InotifyInit = enter_InotifyInit + +func enter_InotifyInit() (fd int, err error) { + funcref := get_InotifyInitAddr() + if funcptrtest(GetZosLibVec()+SYS_INOTIFY_INIT<<4, "") == 0 { + *funcref = impl_InotifyInit + } else { + *funcref = error_InotifyInit + } + return (*funcref)() +} + +func error_InotifyInit() (fd int, err error) { + fd = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_InotifyInit1(flags int) (fd int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_INOTIFY_INIT1<<4, uintptr(flags)) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_InotifyInit1Addr() *(func(flags int) (fd int, err error)) + +var InotifyInit1 = enter_InotifyInit1 + +func enter_InotifyInit1(flags int) (fd int, err error) { + funcref := get_InotifyInit1Addr() + if funcptrtest(GetZosLibVec()+SYS_INOTIFY_INIT1<<4, "") == 0 { + *funcref = impl_InotifyInit1 + } else { + *funcref = error_InotifyInit1 + } + return (*funcref)(flags) +} + +func error_InotifyInit1(flags int) (fd int, err error) { + fd = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___INOTIFY_ADD_WATCH_A<<4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + runtime.ExitSyscall() + watchdesc = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_InotifyAddWatchAddr() *(func(fd int, pathname string, mask uint32) (watchdesc int, err error)) + +var InotifyAddWatch = enter_InotifyAddWatch + +func enter_InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + funcref := get_InotifyAddWatchAddr() + if funcptrtest(GetZosLibVec()+SYS___INOTIFY_ADD_WATCH_A<<4, "") == 0 { + *funcref = impl_InotifyAddWatch + } else { + *funcref = error_InotifyAddWatch + } + return (*funcref)(fd, pathname, mask) +} + +func error_InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + watchdesc = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_INOTIFY_RM_WATCH<<4, uintptr(fd), uintptr(watchdesc)) + runtime.ExitSyscall() + success = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_InotifyRmWatchAddr() *(func(fd int, watchdesc uint32) (success int, err error)) + +var InotifyRmWatch = enter_InotifyRmWatch + +func enter_InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + funcref := get_InotifyRmWatchAddr() + if funcptrtest(GetZosLibVec()+SYS_INOTIFY_RM_WATCH<<4, "") == 0 { + *funcref = impl_InotifyRmWatch + } else { + *funcref = error_InotifyRmWatch + } + return (*funcref)(fd, watchdesc) +} + +func error_InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + success = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LISTXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + runtime.ExitSyscall() + sz = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_ListxattrAddr() *(func(path string, dest []byte) (sz int, err error)) + +var Listxattr = enter_Listxattr + +func enter_Listxattr(path string, dest []byte) (sz int, err error) { + funcref := get_ListxattrAddr() + if funcptrtest(GetZosLibVec()+SYS___LISTXATTR_A<<4, "") == 0 { + *funcref = impl_Listxattr + } else { + *funcref = error_Listxattr + } + return (*funcref)(path, dest) +} + +func error_Listxattr(path string, dest []byte) (sz int, err error) { + sz = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LLISTXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + runtime.ExitSyscall() + sz = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_LlistxattrAddr() *(func(path string, dest []byte) (sz int, err error)) + +var Llistxattr = enter_Llistxattr + +func enter_Llistxattr(path string, dest []byte) (sz int, err error) { + funcref := get_LlistxattrAddr() + if funcptrtest(GetZosLibVec()+SYS___LLISTXATTR_A<<4, "") == 0 { + *funcref = impl_Llistxattr + } else { + *funcref = error_Llistxattr + } + return (*funcref)(path, dest) +} + +func error_Llistxattr(path string, dest []byte) (sz int, err error) { + sz = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LREMOVEXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_LremovexattrAddr() *(func(path string, attr string) (err error)) + +var Lremovexattr = enter_Lremovexattr + +func enter_Lremovexattr(path string, attr string) (err error) { + funcref := get_LremovexattrAddr() + if funcptrtest(GetZosLibVec()+SYS___LREMOVEXATTR_A<<4, "") == 0 { + *funcref = impl_Lremovexattr + } else { + *funcref = error_Lremovexattr + } + return (*funcref)(path, attr) +} + +func error_Lremovexattr(path string, attr string) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Lutimes(path string, tv []Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(tv) > 0 { + _p1 = unsafe.Pointer(&tv[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LUTIMES_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(tv))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_LutimesAddr() *(func(path string, tv []Timeval) (err error)) + +var Lutimes = enter_Lutimes + +func enter_Lutimes(path string, tv []Timeval) (err error) { + funcref := get_LutimesAddr() + if funcptrtest(GetZosLibVec()+SYS___LUTIMES_A<<4, "") == 0 { + *funcref = impl_Lutimes + } else { + *funcref = error_Lutimes + } + return (*funcref)(path, tv) +} + +func error_Lutimes(path string, tv []Timeval) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_MPROTECT<<4, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_MSYNC<<4, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Console2(cmsg *ConsMsg2, modstr *byte, concmd *uint32) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CONSOLE2<<4, uintptr(unsafe.Pointer(cmsg)), uintptr(unsafe.Pointer(modstr)), uintptr(unsafe.Pointer(concmd))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Poll(fds []PollFd, timeout int) (n int, err error) { + var _p0 unsafe.Pointer + if len(fds) > 0 { + _p0 = unsafe.Pointer(&fds[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_POLL<<4, uintptr(_p0), uintptr(len(fds)), uintptr(timeout)) + runtime.ExitSyscall() + n = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readdir_r(dirp uintptr, entry *direntLE, result **direntLE) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___READDIR_R_A<<4, uintptr(dirp), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___STATFS_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_StatfsAddr() *(func(path string, buf *Statfs_t) (err error)) + +var Statfs = enter_Statfs + +func enter_Statfs(path string, buf *Statfs_t) (err error) { + funcref := get_StatfsAddr() + if funcptrtest(GetZosLibVec()+SYS___STATFS_A<<4, "") == 0 { + *funcref = impl_Statfs + } else { + *funcref = error_Statfs + } + return (*funcref)(path, buf) +} + +func error_Statfs(path string, buf *Statfs_t) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Syncfs(fd int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SYNCFS<<4, uintptr(fd)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_SyncfsAddr() *(func(fd int) (err error)) + +var Syncfs = enter_Syncfs + +func enter_Syncfs(fd int) (err error) { + funcref := get_SyncfsAddr() + if funcptrtest(GetZosLibVec()+SYS_SYNCFS<<4, "") == 0 { + *funcref = impl_Syncfs + } else { + *funcref = error_Syncfs + } + return (*funcref)(fd) +} + +func error_Syncfs(fd int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_TIMES<<4, uintptr(unsafe.Pointer(tms))) + runtime.ExitSyscall() + ticks = uintptr(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func W_Getmntent(buff *byte, size int) (lastsys int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_W_GETMNTENT<<4, uintptr(unsafe.Pointer(buff)), uintptr(size)) + runtime.ExitSyscall() + lastsys = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func W_Getmntent_A(buff *byte, size int) (lastsys int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___W_GETMNTENT_A<<4, uintptr(unsafe.Pointer(buff)), uintptr(size)) + runtime.ExitSyscall() + lastsys = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount_LE(path string, filesystem string, fstype string, mtm uint32, parmlen int32, parm string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(filesystem) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + var _p3 *byte + _p3, err = BytePtrFromString(parm) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MOUNT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(mtm), uintptr(parmlen), uintptr(unsafe.Pointer(_p3))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func unmount_LE(filesystem string, mtm int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(filesystem) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UMOUNT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mtm)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CHROOT_A<<4, uintptr(unsafe.Pointer(_p0))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nmsgsfds int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (ret int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SELECT<<4, uintptr(nmsgsfds), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout))) + runtime.ExitSyscall() + ret = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_____OSNAME_A<<4, uintptr(unsafe.Pointer(buf))) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Unshare(flags int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_UNSHARE<<4, uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_UnshareAddr() *(func(flags int) (err error)) + +var Unshare = enter_Unshare + +func enter_Unshare(flags int) (err error) { + funcref := get_UnshareAddr() + if funcptrtest(GetZosLibVec()+SYS_UNSHARE<<4, "") == 0 { + *funcref = impl_Unshare + } else { + *funcref = error_Unshare + } + return (*funcref)(flags) +} + +func error_Unshare(flags int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gethostname(buf []byte) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___GETHOSTNAME_A<<4, uintptr(_p0), uintptr(len(buf))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETGID<<4) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETPID<<4) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETPGID<<4, uintptr(pid)) + pgid = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (pid int) { + r0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETPPID<<4) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETPRIORITY<<4, uintptr(which), uintptr(who)) + runtime.ExitSyscall() + prio = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETRLIMIT<<4, uintptr(resource), uintptr(unsafe.Pointer(rlim))) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getrusage(who int, rusage *rusage_zos) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETRUSAGE<<4, uintptr(who), uintptr(unsafe.Pointer(rusage))) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + runtime.EnterSyscall() + r0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETEGID<<4) + runtime.ExitSyscall() + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + runtime.EnterSyscall() + r0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETEUID<<4) + runtime.ExitSyscall() + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETSID<<4, uintptr(pid)) + sid = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETUID<<4) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig Signal) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_KILL<<4, uintptr(pid), uintptr(sig)) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LCHOWN_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LINK_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Linkat(oldDirFd int, oldPath string, newDirFd int, newPath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldPath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newPath) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LINKAT_A<<4, uintptr(oldDirFd), uintptr(unsafe.Pointer(_p0)), uintptr(newDirFd), uintptr(unsafe.Pointer(_p1)), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_LinkatAddr() *(func(oldDirFd int, oldPath string, newDirFd int, newPath string, flags int) (err error)) + +var Linkat = enter_Linkat + +func enter_Linkat(oldDirFd int, oldPath string, newDirFd int, newPath string, flags int) (err error) { + funcref := get_LinkatAddr() + if funcptrtest(GetZosLibVec()+SYS___LINKAT_A<<4, "") == 0 { + *funcref = impl_Linkat + } else { + *funcref = error_Linkat + } + return (*funcref)(oldDirFd, oldPath, newDirFd, newPath, flags) +} + +func error_Linkat(oldDirFd int, oldPath string, newDirFd int, newPath string, flags int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_LISTEN<<4, uintptr(s), uintptr(n)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func lstat(path string, stat *Stat_LE_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LSTAT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKDIR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKDIRAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_MkdiratAddr() *(func(dirfd int, path string, mode uint32) (err error)) + +var Mkdirat = enter_Mkdirat + +func enter_Mkdirat(dirfd int, path string, mode uint32) (err error) { + funcref := get_MkdiratAddr() + if funcptrtest(GetZosLibVec()+SYS___MKDIRAT_A<<4, "") == 0 { + *funcref = impl_Mkdirat + } else { + *funcref = error_Mkdirat + } + return (*funcref)(dirfd, path, mode) +} + +func error_Mkdirat(dirfd int, path string, mode uint32) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKFIFO_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKNOD_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKNODAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_MknodatAddr() *(func(dirfd int, path string, mode uint32, dev int) (err error)) + +var Mknodat = enter_Mknodat + +func enter_Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + funcref := get_MknodatAddr() + if funcptrtest(GetZosLibVec()+SYS___MKNODAT_A<<4, "") == 0 { + *funcref = impl_Mknodat + } else { + *funcref = error_Mknodat + } + return (*funcref)(dirfd, path, mode, dev) +} + +func error_Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_PivotRoot(newroot string, oldroot string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(oldroot) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___PIVOT_ROOT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_PivotRootAddr() *(func(newroot string, oldroot string) (err error)) + +var PivotRoot = enter_PivotRoot + +func enter_PivotRoot(newroot string, oldroot string) (err error) { + funcref := get_PivotRootAddr() + if funcptrtest(GetZosLibVec()+SYS___PIVOT_ROOT_A<<4, "") == 0 { + *funcref = impl_PivotRoot + } else { + *funcref = error_PivotRoot + } + return (*funcref)(newroot, oldroot) +} + +func error_PivotRoot(newroot string, oldroot string) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_PREAD<<4, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset)) + runtime.ExitSyscall() + n = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_PWRITE<<4, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset)) + runtime.ExitSyscall() + n = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___PRCTL_A<<4, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_PrctlAddr() *(func(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error)) + +var Prctl = enter_Prctl + +func enter_Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + funcref := get_PrctlAddr() + if funcptrtest(GetZosLibVec()+SYS___PRCTL_A<<4, "") == 0 { + *funcref = impl_Prctl + } else { + *funcref = error_Prctl + } + return (*funcref)(option, arg2, arg3, arg4, arg5) +} + +func error_Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_PRLIMIT<<4, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old))) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_PrlimitAddr() *(func(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error)) + +var Prlimit = enter_Prlimit + +func enter_Prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + funcref := get_PrlimitAddr() + if funcptrtest(GetZosLibVec()+SYS_PRLIMIT<<4, "") == 0 { + *funcref = impl_Prlimit + } else { + *funcref = error_Prlimit + } + return (*funcref)(pid, resource, newlimit, old) +} + +func error_Prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RENAME_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RENAMEAT_A<<4, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_RenameatAddr() *(func(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)) + +var Renameat = enter_Renameat + +func enter_Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + funcref := get_RenameatAddr() + if funcptrtest(GetZosLibVec()+SYS___RENAMEAT_A<<4, "") == 0 { + *funcref = impl_Renameat + } else { + *funcref = error_Renameat + } + return (*funcref)(olddirfd, oldpath, newdirfd, newpath) +} + +func error_Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RENAMEAT2_A<<4, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_Renameat2Addr() *(func(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error)) + +var Renameat2 = enter_Renameat2 + +func enter_Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + funcref := get_Renameat2Addr() + if funcptrtest(GetZosLibVec()+SYS___RENAMEAT2_A<<4, "") == 0 { + *funcref = impl_Renameat2 + } else { + *funcref = error_Renameat2 + } + return (*funcref)(olddirfd, oldpath, newdirfd, newpath, flags) +} + +func error_Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RMDIR_A<<4, uintptr(unsafe.Pointer(_p0))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_LSEEK<<4, uintptr(fd), uintptr(offset), uintptr(whence)) + runtime.ExitSyscall() + off = int64(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETEGID<<4, uintptr(egid)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETEUID<<4, uintptr(euid)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SETHOSTNAME_A<<4, uintptr(_p0), uintptr(len(p))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_SethostnameAddr() *(func(p []byte) (err error)) + +var Sethostname = enter_Sethostname + +func enter_Sethostname(p []byte) (err error) { + funcref := get_SethostnameAddr() + if funcptrtest(GetZosLibVec()+SYS___SETHOSTNAME_A<<4, "") == 0 { + *funcref = impl_Sethostname + } else { + *funcref = error_Sethostname + } + return (*funcref)(p) +} + +func error_Sethostname(p []byte) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Setns(fd int, nstype int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETNS<<4, uintptr(fd), uintptr(nstype)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_SetnsAddr() *(func(fd int, nstype int) (err error)) + +var Setns = enter_Setns + +func enter_Setns(fd int, nstype int) (err error) { + funcref := get_SetnsAddr() + if funcptrtest(GetZosLibVec()+SYS_SETNS<<4, "") == 0 { + *funcref = impl_Setns + } else { + *funcref = error_Setns + } + return (*funcref)(fd, nstype) +} + +func error_Setns(fd int, nstype int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETPRIORITY<<4, uintptr(which), uintptr(who), uintptr(prio)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETPGID<<4, uintptr(pid), uintptr(pgid)) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, lim *Rlimit) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETRLIMIT<<4, uintptr(resource), uintptr(unsafe.Pointer(lim))) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETREGID<<4, uintptr(rgid), uintptr(egid)) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETREUID<<4, uintptr(ruid), uintptr(euid)) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec() + SYS_SETSID<<4) + pid = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETUID<<4, uintptr(uid)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(uid int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETGID<<4, uintptr(uid)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SHUTDOWN<<4, uintptr(fd), uintptr(how)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func stat(path string, statLE *Stat_LE_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___STAT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(statLE))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SYMLINK_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Symlinkat(oldPath string, dirfd int, newPath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldPath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newPath) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SYMLINKAT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(dirfd), uintptr(unsafe.Pointer(_p1))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_SymlinkatAddr() *(func(oldPath string, dirfd int, newPath string) (err error)) + +var Symlinkat = enter_Symlinkat + +func enter_Symlinkat(oldPath string, dirfd int, newPath string) (err error) { + funcref := get_SymlinkatAddr() + if funcptrtest(GetZosLibVec()+SYS___SYMLINKAT_A<<4, "") == 0 { + *funcref = impl_Symlinkat + } else { + *funcref = error_Symlinkat + } + return (*funcref)(oldPath, dirfd, newPath) +} + +func error_Symlinkat(oldPath string, dirfd int, newPath string) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + runtime.EnterSyscall() + CallLeFuncWithErr(GetZosLibVec() + SYS_SYNC<<4) + runtime.ExitSyscall() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___TRUNCATE_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(length)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tcgetattr(fildes int, termptr *Termios) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_TCGETATTR<<4, uintptr(fildes), uintptr(unsafe.Pointer(termptr))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tcsetattr(fildes int, when int, termptr *Termios) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_TCSETATTR<<4, uintptr(fildes), uintptr(when), uintptr(unsafe.Pointer(termptr))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + runtime.EnterSyscall() + r0, _, _ := CallLeFuncWithErr(GetZosLibVec()+SYS_UMASK<<4, uintptr(mask)) + runtime.ExitSyscall() + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UNLINK_A<<4, uintptr(unsafe.Pointer(_p0))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UNLINKAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_UnlinkatAddr() *(func(dirfd int, path string, flags int) (err error)) + +var Unlinkat = enter_Unlinkat + +func enter_Unlinkat(dirfd int, path string, flags int) (err error) { + funcref := get_UnlinkatAddr() + if funcptrtest(GetZosLibVec()+SYS___UNLINKAT_A<<4, "") == 0 { + *funcref = impl_Unlinkat + } else { + *funcref = error_Unlinkat + } + return (*funcref)(dirfd, path, flags) +} + +func error_Unlinkat(dirfd int, path string, flags int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, utim *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UTIME_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(utim))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___OPEN_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___OPENAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode)) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_openatAddr() *(func(dirfd int, path string, flags int, mode uint32) (fd int, err error)) + +var openat = enter_openat + +func enter_openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + funcref := get_openatAddr() + if funcptrtest(GetZosLibVec()+SYS___OPENAT_A<<4, "") == 0 { + *funcref = impl_openat + } else { + *funcref = error_openat + } + return (*funcref)(dirfd, path, flags, mode) +} + +func error_openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + fd = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___OPENAT2_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(open_how)), uintptr(size)) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_openat2Addr() *(func(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error)) + +var openat2 = enter_openat2 + +func enter_openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) { + funcref := get_openat2Addr() + if funcptrtest(GetZosLibVec()+SYS___OPENAT2_A<<4, "") == 0 { + *funcref = impl_openat2 + } else { + *funcref = error_openat2 + } + return (*funcref)(dirfd, path, open_how, size) +} + +func error_openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) { + fd = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func remove(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_REMOVE<<4, uintptr(unsafe.Pointer(_p0))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func waitid(idType int, id int, info *Siginfo, options int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_WAITID<<4, uintptr(idType), uintptr(id), uintptr(unsafe.Pointer(info)), uintptr(options)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func waitpid(pid int, wstatus *_C_int, options int) (wpid int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_WAITPID<<4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options)) + runtime.ExitSyscall() + wpid = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tv *timeval_zos) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETTIMEOFDAY<<4, uintptr(unsafe.Pointer(tv))) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_PIPE<<4, uintptr(unsafe.Pointer(p))) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UTIMES_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_utimensat(dirfd int, path string, ts *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UTIMENSAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(ts)), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_utimensatAddr() *(func(dirfd int, path string, ts *[2]Timespec, flags int) (err error)) + +var utimensat = enter_utimensat + +func enter_utimensat(dirfd int, path string, ts *[2]Timespec, flags int) (err error) { + funcref := get_utimensatAddr() + if funcptrtest(GetZosLibVec()+SYS___UTIMENSAT_A<<4, "") == 0 { + *funcref = impl_utimensat + } else { + *funcref = error_utimensat + } + return (*funcref)(dirfd, path, ts, flags) +} + +func error_utimensat(dirfd int, path string, ts *[2]Timespec, flags int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Posix_openpt(oflag int) (fd int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_POSIX_OPENPT<<4, uintptr(oflag)) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Grantpt(fildes int) (rc int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GRANTPT<<4, uintptr(fildes)) + runtime.ExitSyscall() + rc = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlockpt(fildes int) (rc int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_UNLOCKPT<<4, uintptr(fildes)) + runtime.ExitSyscall() + rc = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go b/tests/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go new file mode 100644 index 000000000..3a58ae819 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go @@ -0,0 +1,280 @@ +// go run mksysctl_openbsd.go +// Code generated by the command above; DO NOT EDIT. + +//go:build 386 && openbsd + +package unix + +type mibentry struct { + ctlname string + ctloid []_C_int +} + +var sysctlMib = []mibentry{ + {"ddb.console", []_C_int{9, 6}}, + {"ddb.log", []_C_int{9, 7}}, + {"ddb.max_line", []_C_int{9, 3}}, + {"ddb.max_width", []_C_int{9, 2}}, + {"ddb.panic", []_C_int{9, 5}}, + {"ddb.profile", []_C_int{9, 9}}, + {"ddb.radix", []_C_int{9, 1}}, + {"ddb.tab_stop_width", []_C_int{9, 4}}, + {"ddb.trigger", []_C_int{9, 8}}, + {"fs.posix.setuid", []_C_int{3, 1, 1}}, + {"hw.allowpowerdown", []_C_int{6, 22}}, + {"hw.byteorder", []_C_int{6, 4}}, + {"hw.cpuspeed", []_C_int{6, 12}}, + {"hw.diskcount", []_C_int{6, 10}}, + {"hw.disknames", []_C_int{6, 8}}, + {"hw.diskstats", []_C_int{6, 9}}, + {"hw.machine", []_C_int{6, 1}}, + {"hw.model", []_C_int{6, 2}}, + {"hw.ncpu", []_C_int{6, 3}}, + {"hw.ncpufound", []_C_int{6, 21}}, + {"hw.ncpuonline", []_C_int{6, 25}}, + {"hw.pagesize", []_C_int{6, 7}}, + {"hw.perfpolicy", []_C_int{6, 23}}, + {"hw.physmem", []_C_int{6, 19}}, + {"hw.power", []_C_int{6, 26}}, + {"hw.product", []_C_int{6, 15}}, + {"hw.serialno", []_C_int{6, 17}}, + {"hw.setperf", []_C_int{6, 13}}, + {"hw.smt", []_C_int{6, 24}}, + {"hw.usermem", []_C_int{6, 20}}, + {"hw.uuid", []_C_int{6, 18}}, + {"hw.vendor", []_C_int{6, 14}}, + {"hw.version", []_C_int{6, 16}}, + {"kern.allowdt", []_C_int{1, 65}}, + {"kern.allowkmem", []_C_int{1, 52}}, + {"kern.argmax", []_C_int{1, 8}}, + {"kern.audio", []_C_int{1, 84}}, + {"kern.boottime", []_C_int{1, 21}}, + {"kern.bufcachepercent", []_C_int{1, 72}}, + {"kern.ccpu", []_C_int{1, 45}}, + {"kern.clockrate", []_C_int{1, 12}}, + {"kern.consbuf", []_C_int{1, 83}}, + {"kern.consbufsize", []_C_int{1, 82}}, + {"kern.consdev", []_C_int{1, 75}}, + {"kern.cp_time", []_C_int{1, 40}}, + {"kern.cp_time2", []_C_int{1, 71}}, + {"kern.cpustats", []_C_int{1, 85}}, + {"kern.domainname", []_C_int{1, 22}}, + {"kern.file", []_C_int{1, 73}}, + {"kern.forkstat", []_C_int{1, 42}}, + {"kern.fscale", []_C_int{1, 46}}, + {"kern.fsync", []_C_int{1, 33}}, + {"kern.global_ptrace", []_C_int{1, 81}}, + {"kern.hostid", []_C_int{1, 11}}, + {"kern.hostname", []_C_int{1, 10}}, + {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}}, + {"kern.job_control", []_C_int{1, 19}}, + {"kern.malloc.buckets", []_C_int{1, 39, 1}}, + {"kern.malloc.kmemnames", []_C_int{1, 39, 3}}, + {"kern.maxclusters", []_C_int{1, 67}}, + {"kern.maxfiles", []_C_int{1, 7}}, + {"kern.maxlocksperuid", []_C_int{1, 70}}, + {"kern.maxpartitions", []_C_int{1, 23}}, + {"kern.maxproc", []_C_int{1, 6}}, + {"kern.maxthread", []_C_int{1, 25}}, + {"kern.maxvnodes", []_C_int{1, 5}}, + {"kern.mbstat", []_C_int{1, 59}}, + {"kern.msgbuf", []_C_int{1, 48}}, + {"kern.msgbufsize", []_C_int{1, 38}}, + {"kern.nchstats", []_C_int{1, 41}}, + {"kern.netlivelocks", []_C_int{1, 76}}, + {"kern.nfiles", []_C_int{1, 56}}, + {"kern.ngroups", []_C_int{1, 18}}, + {"kern.nosuidcoredump", []_C_int{1, 32}}, + {"kern.nprocs", []_C_int{1, 47}}, + {"kern.nthreads", []_C_int{1, 26}}, + {"kern.numvnodes", []_C_int{1, 58}}, + {"kern.osrelease", []_C_int{1, 2}}, + {"kern.osrevision", []_C_int{1, 3}}, + {"kern.ostype", []_C_int{1, 1}}, + {"kern.osversion", []_C_int{1, 27}}, + {"kern.pfstatus", []_C_int{1, 86}}, + {"kern.pool_debug", []_C_int{1, 77}}, + {"kern.posix1version", []_C_int{1, 17}}, + {"kern.proc", []_C_int{1, 66}}, + {"kern.rawpartition", []_C_int{1, 24}}, + {"kern.saved_ids", []_C_int{1, 20}}, + {"kern.securelevel", []_C_int{1, 9}}, + {"kern.seminfo", []_C_int{1, 61}}, + {"kern.shminfo", []_C_int{1, 62}}, + {"kern.somaxconn", []_C_int{1, 28}}, + {"kern.sominconn", []_C_int{1, 29}}, + {"kern.splassert", []_C_int{1, 54}}, + {"kern.stackgap_random", []_C_int{1, 50}}, + {"kern.sysvipc_info", []_C_int{1, 51}}, + {"kern.sysvmsg", []_C_int{1, 34}}, + {"kern.sysvsem", []_C_int{1, 35}}, + {"kern.sysvshm", []_C_int{1, 36}}, + {"kern.timecounter.choice", []_C_int{1, 69, 4}}, + {"kern.timecounter.hardware", []_C_int{1, 69, 3}}, + {"kern.timecounter.tick", []_C_int{1, 69, 1}}, + {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}}, + {"kern.timeout_stats", []_C_int{1, 87}}, + {"kern.tty.tk_cancc", []_C_int{1, 44, 4}}, + {"kern.tty.tk_nin", []_C_int{1, 44, 1}}, + {"kern.tty.tk_nout", []_C_int{1, 44, 2}}, + {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}}, + {"kern.tty.ttyinfo", []_C_int{1, 44, 5}}, + {"kern.ttycount", []_C_int{1, 57}}, + {"kern.utc_offset", []_C_int{1, 88}}, + {"kern.version", []_C_int{1, 4}}, + {"kern.video", []_C_int{1, 89}}, + {"kern.watchdog.auto", []_C_int{1, 64, 2}}, + {"kern.watchdog.period", []_C_int{1, 64, 1}}, + {"kern.witnesswatch", []_C_int{1, 53}}, + {"kern.wxabort", []_C_int{1, 74}}, + {"net.bpf.bufsize", []_C_int{4, 31, 1}}, + {"net.bpf.maxbufsize", []_C_int{4, 31, 2}}, + {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}}, + {"net.inet.ah.stats", []_C_int{4, 2, 51, 2}}, + {"net.inet.carp.allow", []_C_int{4, 2, 112, 1}}, + {"net.inet.carp.log", []_C_int{4, 2, 112, 3}}, + {"net.inet.carp.preempt", []_C_int{4, 2, 112, 2}}, + {"net.inet.carp.stats", []_C_int{4, 2, 112, 4}}, + {"net.inet.divert.recvspace", []_C_int{4, 2, 258, 1}}, + {"net.inet.divert.sendspace", []_C_int{4, 2, 258, 2}}, + {"net.inet.divert.stats", []_C_int{4, 2, 258, 3}}, + {"net.inet.esp.enable", []_C_int{4, 2, 50, 1}}, + {"net.inet.esp.stats", []_C_int{4, 2, 50, 4}}, + {"net.inet.esp.udpencap", []_C_int{4, 2, 50, 2}}, + {"net.inet.esp.udpencap_port", []_C_int{4, 2, 50, 3}}, + {"net.inet.etherip.allow", []_C_int{4, 2, 97, 1}}, + {"net.inet.etherip.stats", []_C_int{4, 2, 97, 2}}, + {"net.inet.gre.allow", []_C_int{4, 2, 47, 1}}, + {"net.inet.gre.wccp", []_C_int{4, 2, 47, 2}}, + {"net.inet.icmp.bmcastecho", []_C_int{4, 2, 1, 2}}, + {"net.inet.icmp.errppslimit", []_C_int{4, 2, 1, 3}}, + {"net.inet.icmp.maskrepl", []_C_int{4, 2, 1, 1}}, + {"net.inet.icmp.rediraccept", []_C_int{4, 2, 1, 4}}, + {"net.inet.icmp.redirtimeout", []_C_int{4, 2, 1, 5}}, + {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}}, + {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}}, + {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}}, + {"net.inet.ip.arpdown", []_C_int{4, 2, 0, 40}}, + {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}}, + {"net.inet.ip.arptimeout", []_C_int{4, 2, 0, 39}}, + {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}}, + {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}}, + {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}}, + {"net.inet.ip.ifq.drops", []_C_int{4, 2, 0, 30, 3}}, + {"net.inet.ip.ifq.len", []_C_int{4, 2, 0, 30, 1}}, + {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}}, + {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}}, + {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}}, + {"net.inet.ip.mrtmfc", []_C_int{4, 2, 0, 37}}, + {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}}, + {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}}, + {"net.inet.ip.mrtvif", []_C_int{4, 2, 0, 38}}, + {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}}, + {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}}, + {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}}, + {"net.inet.ip.multipath", []_C_int{4, 2, 0, 32}}, + {"net.inet.ip.portfirst", []_C_int{4, 2, 0, 7}}, + {"net.inet.ip.porthifirst", []_C_int{4, 2, 0, 9}}, + {"net.inet.ip.porthilast", []_C_int{4, 2, 0, 10}}, + {"net.inet.ip.portlast", []_C_int{4, 2, 0, 8}}, + {"net.inet.ip.redirect", []_C_int{4, 2, 0, 2}}, + {"net.inet.ip.sourceroute", []_C_int{4, 2, 0, 5}}, + {"net.inet.ip.stats", []_C_int{4, 2, 0, 33}}, + {"net.inet.ip.ttl", []_C_int{4, 2, 0, 3}}, + {"net.inet.ipcomp.enable", []_C_int{4, 2, 108, 1}}, + {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}}, + {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}}, + {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}}, + {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}}, + {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}}, + {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}}, + {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}}, + {"net.inet.tcp.drop", []_C_int{4, 2, 6, 19}}, + {"net.inet.tcp.ecn", []_C_int{4, 2, 6, 14}}, + {"net.inet.tcp.ident", []_C_int{4, 2, 6, 9}}, + {"net.inet.tcp.keepidle", []_C_int{4, 2, 6, 3}}, + {"net.inet.tcp.keepinittime", []_C_int{4, 2, 6, 2}}, + {"net.inet.tcp.keepintvl", []_C_int{4, 2, 6, 4}}, + {"net.inet.tcp.mssdflt", []_C_int{4, 2, 6, 11}}, + {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}}, + {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}}, + {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}}, + {"net.inet.tcp.rootonly", []_C_int{4, 2, 6, 24}}, + {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}}, + {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}}, + {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}}, + {"net.inet.tcp.slowhz", []_C_int{4, 2, 6, 5}}, + {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}}, + {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}}, + {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}}, + {"net.inet.tcp.synhashsize", []_C_int{4, 2, 6, 25}}, + {"net.inet.tcp.synuselimit", []_C_int{4, 2, 6, 23}}, + {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}}, + {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}}, + {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}}, + {"net.inet.udp.rootonly", []_C_int{4, 2, 17, 6}}, + {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}}, + {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}}, + {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}}, + {"net.inet6.divert.sendspace", []_C_int{4, 24, 86, 2}}, + {"net.inet6.divert.stats", []_C_int{4, 24, 86, 3}}, + {"net.inet6.icmp6.errppslimit", []_C_int{4, 24, 30, 14}}, + {"net.inet6.icmp6.mtudisc_hiwat", []_C_int{4, 24, 30, 16}}, + {"net.inet6.icmp6.mtudisc_lowat", []_C_int{4, 24, 30, 17}}, + {"net.inet6.icmp6.nd6_debug", []_C_int{4, 24, 30, 18}}, + {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}}, + {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}}, + {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}}, + {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}}, + {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}}, + {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}}, + {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}}, + {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}}, + {"net.inet6.ip6.defmcasthlim", []_C_int{4, 24, 17, 18}}, + {"net.inet6.ip6.forwarding", []_C_int{4, 24, 17, 1}}, + {"net.inet6.ip6.forwsrcrt", []_C_int{4, 24, 17, 5}}, + {"net.inet6.ip6.hdrnestlimit", []_C_int{4, 24, 17, 15}}, + {"net.inet6.ip6.hlim", []_C_int{4, 24, 17, 3}}, + {"net.inet6.ip6.log_interval", []_C_int{4, 24, 17, 14}}, + {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}}, + {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}}, + {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}}, + {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}}, + {"net.inet6.ip6.mrtmfc", []_C_int{4, 24, 17, 53}}, + {"net.inet6.ip6.mrtmif", []_C_int{4, 24, 17, 52}}, + {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}}, + {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}}, + {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}}, + {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}}, + {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}}, + {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}}, + {"net.inet6.ip6.soiikey", []_C_int{4, 24, 17, 54}}, + {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}}, + {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}}, + {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}}, + {"net.key.sadb_dump", []_C_int{4, 30, 1}}, + {"net.key.spd_dump", []_C_int{4, 30, 2}}, + {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}}, + {"net.mpls.ifq.drops", []_C_int{4, 33, 3, 3}}, + {"net.mpls.ifq.len", []_C_int{4, 33, 3, 1}}, + {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}}, + {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}}, + {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}}, + {"net.mpls.ttl", []_C_int{4, 33, 2}}, + {"net.pflow.stats", []_C_int{4, 34, 1}}, + {"net.pipex.enable", []_C_int{4, 35, 1}}, + {"vm.anonmin", []_C_int{2, 7}}, + {"vm.loadavg", []_C_int{2, 2}}, + {"vm.malloc_conf", []_C_int{2, 12}}, + {"vm.maxslp", []_C_int{2, 10}}, + {"vm.nkmempages", []_C_int{2, 6}}, + {"vm.psstrings", []_C_int{2, 3}}, + {"vm.swapencrypt.enable", []_C_int{2, 5, 0}}, + {"vm.swapencrypt.keyscreated", []_C_int{2, 5, 1}}, + {"vm.swapencrypt.keysdeleted", []_C_int{2, 5, 2}}, + {"vm.uspace", []_C_int{2, 11}}, + {"vm.uvmexp", []_C_int{2, 4}}, + {"vm.vmmeter", []_C_int{2, 1}}, + {"vm.vnodemin", []_C_int{2, 9}}, + {"vm.vtextmin", []_C_int{2, 8}}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go b/tests/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go new file mode 100644 index 000000000..dcb7a0eb7 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go @@ -0,0 +1,280 @@ +// go run mksysctl_openbsd.go +// Code generated by the command above; DO NOT EDIT. + +//go:build amd64 && openbsd + +package unix + +type mibentry struct { + ctlname string + ctloid []_C_int +} + +var sysctlMib = []mibentry{ + {"ddb.console", []_C_int{9, 6}}, + {"ddb.log", []_C_int{9, 7}}, + {"ddb.max_line", []_C_int{9, 3}}, + {"ddb.max_width", []_C_int{9, 2}}, + {"ddb.panic", []_C_int{9, 5}}, + {"ddb.profile", []_C_int{9, 9}}, + {"ddb.radix", []_C_int{9, 1}}, + {"ddb.tab_stop_width", []_C_int{9, 4}}, + {"ddb.trigger", []_C_int{9, 8}}, + {"fs.posix.setuid", []_C_int{3, 1, 1}}, + {"hw.allowpowerdown", []_C_int{6, 22}}, + {"hw.byteorder", []_C_int{6, 4}}, + {"hw.cpuspeed", []_C_int{6, 12}}, + {"hw.diskcount", []_C_int{6, 10}}, + {"hw.disknames", []_C_int{6, 8}}, + {"hw.diskstats", []_C_int{6, 9}}, + {"hw.machine", []_C_int{6, 1}}, + {"hw.model", []_C_int{6, 2}}, + {"hw.ncpu", []_C_int{6, 3}}, + {"hw.ncpufound", []_C_int{6, 21}}, + {"hw.ncpuonline", []_C_int{6, 25}}, + {"hw.pagesize", []_C_int{6, 7}}, + {"hw.perfpolicy", []_C_int{6, 23}}, + {"hw.physmem", []_C_int{6, 19}}, + {"hw.power", []_C_int{6, 26}}, + {"hw.product", []_C_int{6, 15}}, + {"hw.serialno", []_C_int{6, 17}}, + {"hw.setperf", []_C_int{6, 13}}, + {"hw.smt", []_C_int{6, 24}}, + {"hw.usermem", []_C_int{6, 20}}, + {"hw.uuid", []_C_int{6, 18}}, + {"hw.vendor", []_C_int{6, 14}}, + {"hw.version", []_C_int{6, 16}}, + {"kern.allowdt", []_C_int{1, 65}}, + {"kern.allowkmem", []_C_int{1, 52}}, + {"kern.argmax", []_C_int{1, 8}}, + {"kern.audio", []_C_int{1, 84}}, + {"kern.boottime", []_C_int{1, 21}}, + {"kern.bufcachepercent", []_C_int{1, 72}}, + {"kern.ccpu", []_C_int{1, 45}}, + {"kern.clockrate", []_C_int{1, 12}}, + {"kern.consbuf", []_C_int{1, 83}}, + {"kern.consbufsize", []_C_int{1, 82}}, + {"kern.consdev", []_C_int{1, 75}}, + {"kern.cp_time", []_C_int{1, 40}}, + {"kern.cp_time2", []_C_int{1, 71}}, + {"kern.cpustats", []_C_int{1, 85}}, + {"kern.domainname", []_C_int{1, 22}}, + {"kern.file", []_C_int{1, 73}}, + {"kern.forkstat", []_C_int{1, 42}}, + {"kern.fscale", []_C_int{1, 46}}, + {"kern.fsync", []_C_int{1, 33}}, + {"kern.global_ptrace", []_C_int{1, 81}}, + {"kern.hostid", []_C_int{1, 11}}, + {"kern.hostname", []_C_int{1, 10}}, + {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}}, + {"kern.job_control", []_C_int{1, 19}}, + {"kern.malloc.buckets", []_C_int{1, 39, 1}}, + {"kern.malloc.kmemnames", []_C_int{1, 39, 3}}, + {"kern.maxclusters", []_C_int{1, 67}}, + {"kern.maxfiles", []_C_int{1, 7}}, + {"kern.maxlocksperuid", []_C_int{1, 70}}, + {"kern.maxpartitions", []_C_int{1, 23}}, + {"kern.maxproc", []_C_int{1, 6}}, + {"kern.maxthread", []_C_int{1, 25}}, + {"kern.maxvnodes", []_C_int{1, 5}}, + {"kern.mbstat", []_C_int{1, 59}}, + {"kern.msgbuf", []_C_int{1, 48}}, + {"kern.msgbufsize", []_C_int{1, 38}}, + {"kern.nchstats", []_C_int{1, 41}}, + {"kern.netlivelocks", []_C_int{1, 76}}, + {"kern.nfiles", []_C_int{1, 56}}, + {"kern.ngroups", []_C_int{1, 18}}, + {"kern.nosuidcoredump", []_C_int{1, 32}}, + {"kern.nprocs", []_C_int{1, 47}}, + {"kern.nthreads", []_C_int{1, 26}}, + {"kern.numvnodes", []_C_int{1, 58}}, + {"kern.osrelease", []_C_int{1, 2}}, + {"kern.osrevision", []_C_int{1, 3}}, + {"kern.ostype", []_C_int{1, 1}}, + {"kern.osversion", []_C_int{1, 27}}, + {"kern.pfstatus", []_C_int{1, 86}}, + {"kern.pool_debug", []_C_int{1, 77}}, + {"kern.posix1version", []_C_int{1, 17}}, + {"kern.proc", []_C_int{1, 66}}, + {"kern.rawpartition", []_C_int{1, 24}}, + {"kern.saved_ids", []_C_int{1, 20}}, + {"kern.securelevel", []_C_int{1, 9}}, + {"kern.seminfo", []_C_int{1, 61}}, + {"kern.shminfo", []_C_int{1, 62}}, + {"kern.somaxconn", []_C_int{1, 28}}, + {"kern.sominconn", []_C_int{1, 29}}, + {"kern.splassert", []_C_int{1, 54}}, + {"kern.stackgap_random", []_C_int{1, 50}}, + {"kern.sysvipc_info", []_C_int{1, 51}}, + {"kern.sysvmsg", []_C_int{1, 34}}, + {"kern.sysvsem", []_C_int{1, 35}}, + {"kern.sysvshm", []_C_int{1, 36}}, + {"kern.timecounter.choice", []_C_int{1, 69, 4}}, + {"kern.timecounter.hardware", []_C_int{1, 69, 3}}, + {"kern.timecounter.tick", []_C_int{1, 69, 1}}, + {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}}, + {"kern.timeout_stats", []_C_int{1, 87}}, + {"kern.tty.tk_cancc", []_C_int{1, 44, 4}}, + {"kern.tty.tk_nin", []_C_int{1, 44, 1}}, + {"kern.tty.tk_nout", []_C_int{1, 44, 2}}, + {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}}, + {"kern.tty.ttyinfo", []_C_int{1, 44, 5}}, + {"kern.ttycount", []_C_int{1, 57}}, + {"kern.utc_offset", []_C_int{1, 88}}, + {"kern.version", []_C_int{1, 4}}, + {"kern.video", []_C_int{1, 89}}, + {"kern.watchdog.auto", []_C_int{1, 64, 2}}, + {"kern.watchdog.period", []_C_int{1, 64, 1}}, + {"kern.witnesswatch", []_C_int{1, 53}}, + {"kern.wxabort", []_C_int{1, 74}}, + {"net.bpf.bufsize", []_C_int{4, 31, 1}}, + {"net.bpf.maxbufsize", []_C_int{4, 31, 2}}, + {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}}, + {"net.inet.ah.stats", []_C_int{4, 2, 51, 2}}, + {"net.inet.carp.allow", []_C_int{4, 2, 112, 1}}, + {"net.inet.carp.log", []_C_int{4, 2, 112, 3}}, + {"net.inet.carp.preempt", []_C_int{4, 2, 112, 2}}, + {"net.inet.carp.stats", []_C_int{4, 2, 112, 4}}, + {"net.inet.divert.recvspace", []_C_int{4, 2, 258, 1}}, + {"net.inet.divert.sendspace", []_C_int{4, 2, 258, 2}}, + {"net.inet.divert.stats", []_C_int{4, 2, 258, 3}}, + {"net.inet.esp.enable", []_C_int{4, 2, 50, 1}}, + {"net.inet.esp.stats", []_C_int{4, 2, 50, 4}}, + {"net.inet.esp.udpencap", []_C_int{4, 2, 50, 2}}, + {"net.inet.esp.udpencap_port", []_C_int{4, 2, 50, 3}}, + {"net.inet.etherip.allow", []_C_int{4, 2, 97, 1}}, + {"net.inet.etherip.stats", []_C_int{4, 2, 97, 2}}, + {"net.inet.gre.allow", []_C_int{4, 2, 47, 1}}, + {"net.inet.gre.wccp", []_C_int{4, 2, 47, 2}}, + {"net.inet.icmp.bmcastecho", []_C_int{4, 2, 1, 2}}, + {"net.inet.icmp.errppslimit", []_C_int{4, 2, 1, 3}}, + {"net.inet.icmp.maskrepl", []_C_int{4, 2, 1, 1}}, + {"net.inet.icmp.rediraccept", []_C_int{4, 2, 1, 4}}, + {"net.inet.icmp.redirtimeout", []_C_int{4, 2, 1, 5}}, + {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}}, + {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}}, + {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}}, + {"net.inet.ip.arpdown", []_C_int{4, 2, 0, 40}}, + {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}}, + {"net.inet.ip.arptimeout", []_C_int{4, 2, 0, 39}}, + {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}}, + {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}}, + {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}}, + {"net.inet.ip.ifq.drops", []_C_int{4, 2, 0, 30, 3}}, + {"net.inet.ip.ifq.len", []_C_int{4, 2, 0, 30, 1}}, + {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}}, + {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}}, + {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}}, + {"net.inet.ip.mrtmfc", []_C_int{4, 2, 0, 37}}, + {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}}, + {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}}, + {"net.inet.ip.mrtvif", []_C_int{4, 2, 0, 38}}, + {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}}, + {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}}, + {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}}, + {"net.inet.ip.multipath", []_C_int{4, 2, 0, 32}}, + {"net.inet.ip.portfirst", []_C_int{4, 2, 0, 7}}, + {"net.inet.ip.porthifirst", []_C_int{4, 2, 0, 9}}, + {"net.inet.ip.porthilast", []_C_int{4, 2, 0, 10}}, + {"net.inet.ip.portlast", []_C_int{4, 2, 0, 8}}, + {"net.inet.ip.redirect", []_C_int{4, 2, 0, 2}}, + {"net.inet.ip.sourceroute", []_C_int{4, 2, 0, 5}}, + {"net.inet.ip.stats", []_C_int{4, 2, 0, 33}}, + {"net.inet.ip.ttl", []_C_int{4, 2, 0, 3}}, + {"net.inet.ipcomp.enable", []_C_int{4, 2, 108, 1}}, + {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}}, + {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}}, + {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}}, + {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}}, + {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}}, + {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}}, + {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}}, + {"net.inet.tcp.drop", []_C_int{4, 2, 6, 19}}, + {"net.inet.tcp.ecn", []_C_int{4, 2, 6, 14}}, + {"net.inet.tcp.ident", []_C_int{4, 2, 6, 9}}, + {"net.inet.tcp.keepidle", []_C_int{4, 2, 6, 3}}, + {"net.inet.tcp.keepinittime", []_C_int{4, 2, 6, 2}}, + {"net.inet.tcp.keepintvl", []_C_int{4, 2, 6, 4}}, + {"net.inet.tcp.mssdflt", []_C_int{4, 2, 6, 11}}, + {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}}, + {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}}, + {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}}, + {"net.inet.tcp.rootonly", []_C_int{4, 2, 6, 24}}, + {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}}, + {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}}, + {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}}, + {"net.inet.tcp.slowhz", []_C_int{4, 2, 6, 5}}, + {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}}, + {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}}, + {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}}, + {"net.inet.tcp.synhashsize", []_C_int{4, 2, 6, 25}}, + {"net.inet.tcp.synuselimit", []_C_int{4, 2, 6, 23}}, + {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}}, + {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}}, + {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}}, + {"net.inet.udp.rootonly", []_C_int{4, 2, 17, 6}}, + {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}}, + {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}}, + {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}}, + {"net.inet6.divert.sendspace", []_C_int{4, 24, 86, 2}}, + {"net.inet6.divert.stats", []_C_int{4, 24, 86, 3}}, + {"net.inet6.icmp6.errppslimit", []_C_int{4, 24, 30, 14}}, + {"net.inet6.icmp6.mtudisc_hiwat", []_C_int{4, 24, 30, 16}}, + {"net.inet6.icmp6.mtudisc_lowat", []_C_int{4, 24, 30, 17}}, + {"net.inet6.icmp6.nd6_debug", []_C_int{4, 24, 30, 18}}, + {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}}, + {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}}, + {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}}, + {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}}, + {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}}, + {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}}, + {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}}, + {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}}, + {"net.inet6.ip6.defmcasthlim", []_C_int{4, 24, 17, 18}}, + {"net.inet6.ip6.forwarding", []_C_int{4, 24, 17, 1}}, + {"net.inet6.ip6.forwsrcrt", []_C_int{4, 24, 17, 5}}, + {"net.inet6.ip6.hdrnestlimit", []_C_int{4, 24, 17, 15}}, + {"net.inet6.ip6.hlim", []_C_int{4, 24, 17, 3}}, + {"net.inet6.ip6.log_interval", []_C_int{4, 24, 17, 14}}, + {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}}, + {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}}, + {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}}, + {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}}, + {"net.inet6.ip6.mrtmfc", []_C_int{4, 24, 17, 53}}, + {"net.inet6.ip6.mrtmif", []_C_int{4, 24, 17, 52}}, + {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}}, + {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}}, + {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}}, + {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}}, + {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}}, + {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}}, + {"net.inet6.ip6.soiikey", []_C_int{4, 24, 17, 54}}, + {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}}, + {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}}, + {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}}, + {"net.key.sadb_dump", []_C_int{4, 30, 1}}, + {"net.key.spd_dump", []_C_int{4, 30, 2}}, + {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}}, + {"net.mpls.ifq.drops", []_C_int{4, 33, 3, 3}}, + {"net.mpls.ifq.len", []_C_int{4, 33, 3, 1}}, + {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}}, + {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}}, + {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}}, + {"net.mpls.ttl", []_C_int{4, 33, 2}}, + {"net.pflow.stats", []_C_int{4, 34, 1}}, + {"net.pipex.enable", []_C_int{4, 35, 1}}, + {"vm.anonmin", []_C_int{2, 7}}, + {"vm.loadavg", []_C_int{2, 2}}, + {"vm.malloc_conf", []_C_int{2, 12}}, + {"vm.maxslp", []_C_int{2, 10}}, + {"vm.nkmempages", []_C_int{2, 6}}, + {"vm.psstrings", []_C_int{2, 3}}, + {"vm.swapencrypt.enable", []_C_int{2, 5, 0}}, + {"vm.swapencrypt.keyscreated", []_C_int{2, 5, 1}}, + {"vm.swapencrypt.keysdeleted", []_C_int{2, 5, 2}}, + {"vm.uspace", []_C_int{2, 11}}, + {"vm.uvmexp", []_C_int{2, 4}}, + {"vm.vmmeter", []_C_int{2, 1}}, + {"vm.vnodemin", []_C_int{2, 9}}, + {"vm.vtextmin", []_C_int{2, 8}}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go b/tests/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go new file mode 100644 index 000000000..db5a7bf13 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go @@ -0,0 +1,280 @@ +// go run mksysctl_openbsd.go +// Code generated by the command above; DO NOT EDIT. + +//go:build arm && openbsd + +package unix + +type mibentry struct { + ctlname string + ctloid []_C_int +} + +var sysctlMib = []mibentry{ + {"ddb.console", []_C_int{9, 6}}, + {"ddb.log", []_C_int{9, 7}}, + {"ddb.max_line", []_C_int{9, 3}}, + {"ddb.max_width", []_C_int{9, 2}}, + {"ddb.panic", []_C_int{9, 5}}, + {"ddb.profile", []_C_int{9, 9}}, + {"ddb.radix", []_C_int{9, 1}}, + {"ddb.tab_stop_width", []_C_int{9, 4}}, + {"ddb.trigger", []_C_int{9, 8}}, + {"fs.posix.setuid", []_C_int{3, 1, 1}}, + {"hw.allowpowerdown", []_C_int{6, 22}}, + {"hw.byteorder", []_C_int{6, 4}}, + {"hw.cpuspeed", []_C_int{6, 12}}, + {"hw.diskcount", []_C_int{6, 10}}, + {"hw.disknames", []_C_int{6, 8}}, + {"hw.diskstats", []_C_int{6, 9}}, + {"hw.machine", []_C_int{6, 1}}, + {"hw.model", []_C_int{6, 2}}, + {"hw.ncpu", []_C_int{6, 3}}, + {"hw.ncpufound", []_C_int{6, 21}}, + {"hw.ncpuonline", []_C_int{6, 25}}, + {"hw.pagesize", []_C_int{6, 7}}, + {"hw.perfpolicy", []_C_int{6, 23}}, + {"hw.physmem", []_C_int{6, 19}}, + {"hw.power", []_C_int{6, 26}}, + {"hw.product", []_C_int{6, 15}}, + {"hw.serialno", []_C_int{6, 17}}, + {"hw.setperf", []_C_int{6, 13}}, + {"hw.smt", []_C_int{6, 24}}, + {"hw.usermem", []_C_int{6, 20}}, + {"hw.uuid", []_C_int{6, 18}}, + {"hw.vendor", []_C_int{6, 14}}, + {"hw.version", []_C_int{6, 16}}, + {"kern.allowdt", []_C_int{1, 65}}, + {"kern.allowkmem", []_C_int{1, 52}}, + {"kern.argmax", []_C_int{1, 8}}, + {"kern.audio", []_C_int{1, 84}}, + {"kern.boottime", []_C_int{1, 21}}, + {"kern.bufcachepercent", []_C_int{1, 72}}, + {"kern.ccpu", []_C_int{1, 45}}, + {"kern.clockrate", []_C_int{1, 12}}, + {"kern.consbuf", []_C_int{1, 83}}, + {"kern.consbufsize", []_C_int{1, 82}}, + {"kern.consdev", []_C_int{1, 75}}, + {"kern.cp_time", []_C_int{1, 40}}, + {"kern.cp_time2", []_C_int{1, 71}}, + {"kern.cpustats", []_C_int{1, 85}}, + {"kern.domainname", []_C_int{1, 22}}, + {"kern.file", []_C_int{1, 73}}, + {"kern.forkstat", []_C_int{1, 42}}, + {"kern.fscale", []_C_int{1, 46}}, + {"kern.fsync", []_C_int{1, 33}}, + {"kern.global_ptrace", []_C_int{1, 81}}, + {"kern.hostid", []_C_int{1, 11}}, + {"kern.hostname", []_C_int{1, 10}}, + {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}}, + {"kern.job_control", []_C_int{1, 19}}, + {"kern.malloc.buckets", []_C_int{1, 39, 1}}, + {"kern.malloc.kmemnames", []_C_int{1, 39, 3}}, + {"kern.maxclusters", []_C_int{1, 67}}, + {"kern.maxfiles", []_C_int{1, 7}}, + {"kern.maxlocksperuid", []_C_int{1, 70}}, + {"kern.maxpartitions", []_C_int{1, 23}}, + {"kern.maxproc", []_C_int{1, 6}}, + {"kern.maxthread", []_C_int{1, 25}}, + {"kern.maxvnodes", []_C_int{1, 5}}, + {"kern.mbstat", []_C_int{1, 59}}, + {"kern.msgbuf", []_C_int{1, 48}}, + {"kern.msgbufsize", []_C_int{1, 38}}, + {"kern.nchstats", []_C_int{1, 41}}, + {"kern.netlivelocks", []_C_int{1, 76}}, + {"kern.nfiles", []_C_int{1, 56}}, + {"kern.ngroups", []_C_int{1, 18}}, + {"kern.nosuidcoredump", []_C_int{1, 32}}, + {"kern.nprocs", []_C_int{1, 47}}, + {"kern.nthreads", []_C_int{1, 26}}, + {"kern.numvnodes", []_C_int{1, 58}}, + {"kern.osrelease", []_C_int{1, 2}}, + {"kern.osrevision", []_C_int{1, 3}}, + {"kern.ostype", []_C_int{1, 1}}, + {"kern.osversion", []_C_int{1, 27}}, + {"kern.pfstatus", []_C_int{1, 86}}, + {"kern.pool_debug", []_C_int{1, 77}}, + {"kern.posix1version", []_C_int{1, 17}}, + {"kern.proc", []_C_int{1, 66}}, + {"kern.rawpartition", []_C_int{1, 24}}, + {"kern.saved_ids", []_C_int{1, 20}}, + {"kern.securelevel", []_C_int{1, 9}}, + {"kern.seminfo", []_C_int{1, 61}}, + {"kern.shminfo", []_C_int{1, 62}}, + {"kern.somaxconn", []_C_int{1, 28}}, + {"kern.sominconn", []_C_int{1, 29}}, + {"kern.splassert", []_C_int{1, 54}}, + {"kern.stackgap_random", []_C_int{1, 50}}, + {"kern.sysvipc_info", []_C_int{1, 51}}, + {"kern.sysvmsg", []_C_int{1, 34}}, + {"kern.sysvsem", []_C_int{1, 35}}, + {"kern.sysvshm", []_C_int{1, 36}}, + {"kern.timecounter.choice", []_C_int{1, 69, 4}}, + {"kern.timecounter.hardware", []_C_int{1, 69, 3}}, + {"kern.timecounter.tick", []_C_int{1, 69, 1}}, + {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}}, + {"kern.timeout_stats", []_C_int{1, 87}}, + {"kern.tty.tk_cancc", []_C_int{1, 44, 4}}, + {"kern.tty.tk_nin", []_C_int{1, 44, 1}}, + {"kern.tty.tk_nout", []_C_int{1, 44, 2}}, + {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}}, + {"kern.tty.ttyinfo", []_C_int{1, 44, 5}}, + {"kern.ttycount", []_C_int{1, 57}}, + {"kern.utc_offset", []_C_int{1, 88}}, + {"kern.version", []_C_int{1, 4}}, + {"kern.video", []_C_int{1, 89}}, + {"kern.watchdog.auto", []_C_int{1, 64, 2}}, + {"kern.watchdog.period", []_C_int{1, 64, 1}}, + {"kern.witnesswatch", []_C_int{1, 53}}, + {"kern.wxabort", []_C_int{1, 74}}, + {"net.bpf.bufsize", []_C_int{4, 31, 1}}, + {"net.bpf.maxbufsize", []_C_int{4, 31, 2}}, + {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}}, + {"net.inet.ah.stats", []_C_int{4, 2, 51, 2}}, + {"net.inet.carp.allow", []_C_int{4, 2, 112, 1}}, + {"net.inet.carp.log", []_C_int{4, 2, 112, 3}}, + {"net.inet.carp.preempt", []_C_int{4, 2, 112, 2}}, + {"net.inet.carp.stats", []_C_int{4, 2, 112, 4}}, + {"net.inet.divert.recvspace", []_C_int{4, 2, 258, 1}}, + {"net.inet.divert.sendspace", []_C_int{4, 2, 258, 2}}, + {"net.inet.divert.stats", []_C_int{4, 2, 258, 3}}, + {"net.inet.esp.enable", []_C_int{4, 2, 50, 1}}, + {"net.inet.esp.stats", []_C_int{4, 2, 50, 4}}, + {"net.inet.esp.udpencap", []_C_int{4, 2, 50, 2}}, + {"net.inet.esp.udpencap_port", []_C_int{4, 2, 50, 3}}, + {"net.inet.etherip.allow", []_C_int{4, 2, 97, 1}}, + {"net.inet.etherip.stats", []_C_int{4, 2, 97, 2}}, + {"net.inet.gre.allow", []_C_int{4, 2, 47, 1}}, + {"net.inet.gre.wccp", []_C_int{4, 2, 47, 2}}, + {"net.inet.icmp.bmcastecho", []_C_int{4, 2, 1, 2}}, + {"net.inet.icmp.errppslimit", []_C_int{4, 2, 1, 3}}, + {"net.inet.icmp.maskrepl", []_C_int{4, 2, 1, 1}}, + {"net.inet.icmp.rediraccept", []_C_int{4, 2, 1, 4}}, + {"net.inet.icmp.redirtimeout", []_C_int{4, 2, 1, 5}}, + {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}}, + {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}}, + {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}}, + {"net.inet.ip.arpdown", []_C_int{4, 2, 0, 40}}, + {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}}, + {"net.inet.ip.arptimeout", []_C_int{4, 2, 0, 39}}, + {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}}, + {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}}, + {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}}, + {"net.inet.ip.ifq.drops", []_C_int{4, 2, 0, 30, 3}}, + {"net.inet.ip.ifq.len", []_C_int{4, 2, 0, 30, 1}}, + {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}}, + {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}}, + {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}}, + {"net.inet.ip.mrtmfc", []_C_int{4, 2, 0, 37}}, + {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}}, + {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}}, + {"net.inet.ip.mrtvif", []_C_int{4, 2, 0, 38}}, + {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}}, + {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}}, + {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}}, + {"net.inet.ip.multipath", []_C_int{4, 2, 0, 32}}, + {"net.inet.ip.portfirst", []_C_int{4, 2, 0, 7}}, + {"net.inet.ip.porthifirst", []_C_int{4, 2, 0, 9}}, + {"net.inet.ip.porthilast", []_C_int{4, 2, 0, 10}}, + {"net.inet.ip.portlast", []_C_int{4, 2, 0, 8}}, + {"net.inet.ip.redirect", []_C_int{4, 2, 0, 2}}, + {"net.inet.ip.sourceroute", []_C_int{4, 2, 0, 5}}, + {"net.inet.ip.stats", []_C_int{4, 2, 0, 33}}, + {"net.inet.ip.ttl", []_C_int{4, 2, 0, 3}}, + {"net.inet.ipcomp.enable", []_C_int{4, 2, 108, 1}}, + {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}}, + {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}}, + {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}}, + {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}}, + {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}}, + {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}}, + {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}}, + {"net.inet.tcp.drop", []_C_int{4, 2, 6, 19}}, + {"net.inet.tcp.ecn", []_C_int{4, 2, 6, 14}}, + {"net.inet.tcp.ident", []_C_int{4, 2, 6, 9}}, + {"net.inet.tcp.keepidle", []_C_int{4, 2, 6, 3}}, + {"net.inet.tcp.keepinittime", []_C_int{4, 2, 6, 2}}, + {"net.inet.tcp.keepintvl", []_C_int{4, 2, 6, 4}}, + {"net.inet.tcp.mssdflt", []_C_int{4, 2, 6, 11}}, + {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}}, + {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}}, + {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}}, + {"net.inet.tcp.rootonly", []_C_int{4, 2, 6, 24}}, + {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}}, + {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}}, + {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}}, + {"net.inet.tcp.slowhz", []_C_int{4, 2, 6, 5}}, + {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}}, + {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}}, + {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}}, + {"net.inet.tcp.synhashsize", []_C_int{4, 2, 6, 25}}, + {"net.inet.tcp.synuselimit", []_C_int{4, 2, 6, 23}}, + {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}}, + {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}}, + {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}}, + {"net.inet.udp.rootonly", []_C_int{4, 2, 17, 6}}, + {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}}, + {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}}, + {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}}, + {"net.inet6.divert.sendspace", []_C_int{4, 24, 86, 2}}, + {"net.inet6.divert.stats", []_C_int{4, 24, 86, 3}}, + {"net.inet6.icmp6.errppslimit", []_C_int{4, 24, 30, 14}}, + {"net.inet6.icmp6.mtudisc_hiwat", []_C_int{4, 24, 30, 16}}, + {"net.inet6.icmp6.mtudisc_lowat", []_C_int{4, 24, 30, 17}}, + {"net.inet6.icmp6.nd6_debug", []_C_int{4, 24, 30, 18}}, + {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}}, + {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}}, + {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}}, + {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}}, + {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}}, + {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}}, + {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}}, + {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}}, + {"net.inet6.ip6.defmcasthlim", []_C_int{4, 24, 17, 18}}, + {"net.inet6.ip6.forwarding", []_C_int{4, 24, 17, 1}}, + {"net.inet6.ip6.forwsrcrt", []_C_int{4, 24, 17, 5}}, + {"net.inet6.ip6.hdrnestlimit", []_C_int{4, 24, 17, 15}}, + {"net.inet6.ip6.hlim", []_C_int{4, 24, 17, 3}}, + {"net.inet6.ip6.log_interval", []_C_int{4, 24, 17, 14}}, + {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}}, + {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}}, + {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}}, + {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}}, + {"net.inet6.ip6.mrtmfc", []_C_int{4, 24, 17, 53}}, + {"net.inet6.ip6.mrtmif", []_C_int{4, 24, 17, 52}}, + {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}}, + {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}}, + {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}}, + {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}}, + {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}}, + {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}}, + {"net.inet6.ip6.soiikey", []_C_int{4, 24, 17, 54}}, + {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}}, + {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}}, + {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}}, + {"net.key.sadb_dump", []_C_int{4, 30, 1}}, + {"net.key.spd_dump", []_C_int{4, 30, 2}}, + {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}}, + {"net.mpls.ifq.drops", []_C_int{4, 33, 3, 3}}, + {"net.mpls.ifq.len", []_C_int{4, 33, 3, 1}}, + {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}}, + {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}}, + {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}}, + {"net.mpls.ttl", []_C_int{4, 33, 2}}, + {"net.pflow.stats", []_C_int{4, 34, 1}}, + {"net.pipex.enable", []_C_int{4, 35, 1}}, + {"vm.anonmin", []_C_int{2, 7}}, + {"vm.loadavg", []_C_int{2, 2}}, + {"vm.malloc_conf", []_C_int{2, 12}}, + {"vm.maxslp", []_C_int{2, 10}}, + {"vm.nkmempages", []_C_int{2, 6}}, + {"vm.psstrings", []_C_int{2, 3}}, + {"vm.swapencrypt.enable", []_C_int{2, 5, 0}}, + {"vm.swapencrypt.keyscreated", []_C_int{2, 5, 1}}, + {"vm.swapencrypt.keysdeleted", []_C_int{2, 5, 2}}, + {"vm.uspace", []_C_int{2, 11}}, + {"vm.uvmexp", []_C_int{2, 4}}, + {"vm.vmmeter", []_C_int{2, 1}}, + {"vm.vnodemin", []_C_int{2, 9}}, + {"vm.vtextmin", []_C_int{2, 8}}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go b/tests/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go new file mode 100644 index 000000000..7be575a77 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go @@ -0,0 +1,280 @@ +// go run mksysctl_openbsd.go +// Code generated by the command above; DO NOT EDIT. + +//go:build arm64 && openbsd + +package unix + +type mibentry struct { + ctlname string + ctloid []_C_int +} + +var sysctlMib = []mibentry{ + {"ddb.console", []_C_int{9, 6}}, + {"ddb.log", []_C_int{9, 7}}, + {"ddb.max_line", []_C_int{9, 3}}, + {"ddb.max_width", []_C_int{9, 2}}, + {"ddb.panic", []_C_int{9, 5}}, + {"ddb.profile", []_C_int{9, 9}}, + {"ddb.radix", []_C_int{9, 1}}, + {"ddb.tab_stop_width", []_C_int{9, 4}}, + {"ddb.trigger", []_C_int{9, 8}}, + {"fs.posix.setuid", []_C_int{3, 1, 1}}, + {"hw.allowpowerdown", []_C_int{6, 22}}, + {"hw.byteorder", []_C_int{6, 4}}, + {"hw.cpuspeed", []_C_int{6, 12}}, + {"hw.diskcount", []_C_int{6, 10}}, + {"hw.disknames", []_C_int{6, 8}}, + {"hw.diskstats", []_C_int{6, 9}}, + {"hw.machine", []_C_int{6, 1}}, + {"hw.model", []_C_int{6, 2}}, + {"hw.ncpu", []_C_int{6, 3}}, + {"hw.ncpufound", []_C_int{6, 21}}, + {"hw.ncpuonline", []_C_int{6, 25}}, + {"hw.pagesize", []_C_int{6, 7}}, + {"hw.perfpolicy", []_C_int{6, 23}}, + {"hw.physmem", []_C_int{6, 19}}, + {"hw.power", []_C_int{6, 26}}, + {"hw.product", []_C_int{6, 15}}, + {"hw.serialno", []_C_int{6, 17}}, + {"hw.setperf", []_C_int{6, 13}}, + {"hw.smt", []_C_int{6, 24}}, + {"hw.usermem", []_C_int{6, 20}}, + {"hw.uuid", []_C_int{6, 18}}, + {"hw.vendor", []_C_int{6, 14}}, + {"hw.version", []_C_int{6, 16}}, + {"kern.allowdt", []_C_int{1, 65}}, + {"kern.allowkmem", []_C_int{1, 52}}, + {"kern.argmax", []_C_int{1, 8}}, + {"kern.audio", []_C_int{1, 84}}, + {"kern.boottime", []_C_int{1, 21}}, + {"kern.bufcachepercent", []_C_int{1, 72}}, + {"kern.ccpu", []_C_int{1, 45}}, + {"kern.clockrate", []_C_int{1, 12}}, + {"kern.consbuf", []_C_int{1, 83}}, + {"kern.consbufsize", []_C_int{1, 82}}, + {"kern.consdev", []_C_int{1, 75}}, + {"kern.cp_time", []_C_int{1, 40}}, + {"kern.cp_time2", []_C_int{1, 71}}, + {"kern.cpustats", []_C_int{1, 85}}, + {"kern.domainname", []_C_int{1, 22}}, + {"kern.file", []_C_int{1, 73}}, + {"kern.forkstat", []_C_int{1, 42}}, + {"kern.fscale", []_C_int{1, 46}}, + {"kern.fsync", []_C_int{1, 33}}, + {"kern.global_ptrace", []_C_int{1, 81}}, + {"kern.hostid", []_C_int{1, 11}}, + {"kern.hostname", []_C_int{1, 10}}, + {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}}, + {"kern.job_control", []_C_int{1, 19}}, + {"kern.malloc.buckets", []_C_int{1, 39, 1}}, + {"kern.malloc.kmemnames", []_C_int{1, 39, 3}}, + {"kern.maxclusters", []_C_int{1, 67}}, + {"kern.maxfiles", []_C_int{1, 7}}, + {"kern.maxlocksperuid", []_C_int{1, 70}}, + {"kern.maxpartitions", []_C_int{1, 23}}, + {"kern.maxproc", []_C_int{1, 6}}, + {"kern.maxthread", []_C_int{1, 25}}, + {"kern.maxvnodes", []_C_int{1, 5}}, + {"kern.mbstat", []_C_int{1, 59}}, + {"kern.msgbuf", []_C_int{1, 48}}, + {"kern.msgbufsize", []_C_int{1, 38}}, + {"kern.nchstats", []_C_int{1, 41}}, + {"kern.netlivelocks", []_C_int{1, 76}}, + {"kern.nfiles", []_C_int{1, 56}}, + {"kern.ngroups", []_C_int{1, 18}}, + {"kern.nosuidcoredump", []_C_int{1, 32}}, + {"kern.nprocs", []_C_int{1, 47}}, + {"kern.nthreads", []_C_int{1, 26}}, + {"kern.numvnodes", []_C_int{1, 58}}, + {"kern.osrelease", []_C_int{1, 2}}, + {"kern.osrevision", []_C_int{1, 3}}, + {"kern.ostype", []_C_int{1, 1}}, + {"kern.osversion", []_C_int{1, 27}}, + {"kern.pfstatus", []_C_int{1, 86}}, + {"kern.pool_debug", []_C_int{1, 77}}, + {"kern.posix1version", []_C_int{1, 17}}, + {"kern.proc", []_C_int{1, 66}}, + {"kern.rawpartition", []_C_int{1, 24}}, + {"kern.saved_ids", []_C_int{1, 20}}, + {"kern.securelevel", []_C_int{1, 9}}, + {"kern.seminfo", []_C_int{1, 61}}, + {"kern.shminfo", []_C_int{1, 62}}, + {"kern.somaxconn", []_C_int{1, 28}}, + {"kern.sominconn", []_C_int{1, 29}}, + {"kern.splassert", []_C_int{1, 54}}, + {"kern.stackgap_random", []_C_int{1, 50}}, + {"kern.sysvipc_info", []_C_int{1, 51}}, + {"kern.sysvmsg", []_C_int{1, 34}}, + {"kern.sysvsem", []_C_int{1, 35}}, + {"kern.sysvshm", []_C_int{1, 36}}, + {"kern.timecounter.choice", []_C_int{1, 69, 4}}, + {"kern.timecounter.hardware", []_C_int{1, 69, 3}}, + {"kern.timecounter.tick", []_C_int{1, 69, 1}}, + {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}}, + {"kern.timeout_stats", []_C_int{1, 87}}, + {"kern.tty.tk_cancc", []_C_int{1, 44, 4}}, + {"kern.tty.tk_nin", []_C_int{1, 44, 1}}, + {"kern.tty.tk_nout", []_C_int{1, 44, 2}}, + {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}}, + {"kern.tty.ttyinfo", []_C_int{1, 44, 5}}, + {"kern.ttycount", []_C_int{1, 57}}, + {"kern.utc_offset", []_C_int{1, 88}}, + {"kern.version", []_C_int{1, 4}}, + {"kern.video", []_C_int{1, 89}}, + {"kern.watchdog.auto", []_C_int{1, 64, 2}}, + {"kern.watchdog.period", []_C_int{1, 64, 1}}, + {"kern.witnesswatch", []_C_int{1, 53}}, + {"kern.wxabort", []_C_int{1, 74}}, + {"net.bpf.bufsize", []_C_int{4, 31, 1}}, + {"net.bpf.maxbufsize", []_C_int{4, 31, 2}}, + {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}}, + {"net.inet.ah.stats", []_C_int{4, 2, 51, 2}}, + {"net.inet.carp.allow", []_C_int{4, 2, 112, 1}}, + {"net.inet.carp.log", []_C_int{4, 2, 112, 3}}, + {"net.inet.carp.preempt", []_C_int{4, 2, 112, 2}}, + {"net.inet.carp.stats", []_C_int{4, 2, 112, 4}}, + {"net.inet.divert.recvspace", []_C_int{4, 2, 258, 1}}, + {"net.inet.divert.sendspace", []_C_int{4, 2, 258, 2}}, + {"net.inet.divert.stats", []_C_int{4, 2, 258, 3}}, + {"net.inet.esp.enable", []_C_int{4, 2, 50, 1}}, + {"net.inet.esp.stats", []_C_int{4, 2, 50, 4}}, + {"net.inet.esp.udpencap", []_C_int{4, 2, 50, 2}}, + {"net.inet.esp.udpencap_port", []_C_int{4, 2, 50, 3}}, + {"net.inet.etherip.allow", []_C_int{4, 2, 97, 1}}, + {"net.inet.etherip.stats", []_C_int{4, 2, 97, 2}}, + {"net.inet.gre.allow", []_C_int{4, 2, 47, 1}}, + {"net.inet.gre.wccp", []_C_int{4, 2, 47, 2}}, + {"net.inet.icmp.bmcastecho", []_C_int{4, 2, 1, 2}}, + {"net.inet.icmp.errppslimit", []_C_int{4, 2, 1, 3}}, + {"net.inet.icmp.maskrepl", []_C_int{4, 2, 1, 1}}, + {"net.inet.icmp.rediraccept", []_C_int{4, 2, 1, 4}}, + {"net.inet.icmp.redirtimeout", []_C_int{4, 2, 1, 5}}, + {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}}, + {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}}, + {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}}, + {"net.inet.ip.arpdown", []_C_int{4, 2, 0, 40}}, + {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}}, + {"net.inet.ip.arptimeout", []_C_int{4, 2, 0, 39}}, + {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}}, + {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}}, + {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}}, + {"net.inet.ip.ifq.drops", []_C_int{4, 2, 0, 30, 3}}, + {"net.inet.ip.ifq.len", []_C_int{4, 2, 0, 30, 1}}, + {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}}, + {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}}, + {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}}, + {"net.inet.ip.mrtmfc", []_C_int{4, 2, 0, 37}}, + {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}}, + {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}}, + {"net.inet.ip.mrtvif", []_C_int{4, 2, 0, 38}}, + {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}}, + {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}}, + {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}}, + {"net.inet.ip.multipath", []_C_int{4, 2, 0, 32}}, + {"net.inet.ip.portfirst", []_C_int{4, 2, 0, 7}}, + {"net.inet.ip.porthifirst", []_C_int{4, 2, 0, 9}}, + {"net.inet.ip.porthilast", []_C_int{4, 2, 0, 10}}, + {"net.inet.ip.portlast", []_C_int{4, 2, 0, 8}}, + {"net.inet.ip.redirect", []_C_int{4, 2, 0, 2}}, + {"net.inet.ip.sourceroute", []_C_int{4, 2, 0, 5}}, + {"net.inet.ip.stats", []_C_int{4, 2, 0, 33}}, + {"net.inet.ip.ttl", []_C_int{4, 2, 0, 3}}, + {"net.inet.ipcomp.enable", []_C_int{4, 2, 108, 1}}, + {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}}, + {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}}, + {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}}, + {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}}, + {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}}, + {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}}, + {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}}, + {"net.inet.tcp.drop", []_C_int{4, 2, 6, 19}}, + {"net.inet.tcp.ecn", []_C_int{4, 2, 6, 14}}, + {"net.inet.tcp.ident", []_C_int{4, 2, 6, 9}}, + {"net.inet.tcp.keepidle", []_C_int{4, 2, 6, 3}}, + {"net.inet.tcp.keepinittime", []_C_int{4, 2, 6, 2}}, + {"net.inet.tcp.keepintvl", []_C_int{4, 2, 6, 4}}, + {"net.inet.tcp.mssdflt", []_C_int{4, 2, 6, 11}}, + {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}}, + {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}}, + {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}}, + {"net.inet.tcp.rootonly", []_C_int{4, 2, 6, 24}}, + {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}}, + {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}}, + {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}}, + {"net.inet.tcp.slowhz", []_C_int{4, 2, 6, 5}}, + {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}}, + {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}}, + {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}}, + {"net.inet.tcp.synhashsize", []_C_int{4, 2, 6, 25}}, + {"net.inet.tcp.synuselimit", []_C_int{4, 2, 6, 23}}, + {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}}, + {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}}, + {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}}, + {"net.inet.udp.rootonly", []_C_int{4, 2, 17, 6}}, + {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}}, + {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}}, + {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}}, + {"net.inet6.divert.sendspace", []_C_int{4, 24, 86, 2}}, + {"net.inet6.divert.stats", []_C_int{4, 24, 86, 3}}, + {"net.inet6.icmp6.errppslimit", []_C_int{4, 24, 30, 14}}, + {"net.inet6.icmp6.mtudisc_hiwat", []_C_int{4, 24, 30, 16}}, + {"net.inet6.icmp6.mtudisc_lowat", []_C_int{4, 24, 30, 17}}, + {"net.inet6.icmp6.nd6_debug", []_C_int{4, 24, 30, 18}}, + {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}}, + {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}}, + {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}}, + {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}}, + {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}}, + {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}}, + {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}}, + {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}}, + {"net.inet6.ip6.defmcasthlim", []_C_int{4, 24, 17, 18}}, + {"net.inet6.ip6.forwarding", []_C_int{4, 24, 17, 1}}, + {"net.inet6.ip6.forwsrcrt", []_C_int{4, 24, 17, 5}}, + {"net.inet6.ip6.hdrnestlimit", []_C_int{4, 24, 17, 15}}, + {"net.inet6.ip6.hlim", []_C_int{4, 24, 17, 3}}, + {"net.inet6.ip6.log_interval", []_C_int{4, 24, 17, 14}}, + {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}}, + {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}}, + {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}}, + {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}}, + {"net.inet6.ip6.mrtmfc", []_C_int{4, 24, 17, 53}}, + {"net.inet6.ip6.mrtmif", []_C_int{4, 24, 17, 52}}, + {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}}, + {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}}, + {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}}, + {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}}, + {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}}, + {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}}, + {"net.inet6.ip6.soiikey", []_C_int{4, 24, 17, 54}}, + {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}}, + {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}}, + {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}}, + {"net.key.sadb_dump", []_C_int{4, 30, 1}}, + {"net.key.spd_dump", []_C_int{4, 30, 2}}, + {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}}, + {"net.mpls.ifq.drops", []_C_int{4, 33, 3, 3}}, + {"net.mpls.ifq.len", []_C_int{4, 33, 3, 1}}, + {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}}, + {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}}, + {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}}, + {"net.mpls.ttl", []_C_int{4, 33, 2}}, + {"net.pflow.stats", []_C_int{4, 34, 1}}, + {"net.pipex.enable", []_C_int{4, 35, 1}}, + {"vm.anonmin", []_C_int{2, 7}}, + {"vm.loadavg", []_C_int{2, 2}}, + {"vm.malloc_conf", []_C_int{2, 12}}, + {"vm.maxslp", []_C_int{2, 10}}, + {"vm.nkmempages", []_C_int{2, 6}}, + {"vm.psstrings", []_C_int{2, 3}}, + {"vm.swapencrypt.enable", []_C_int{2, 5, 0}}, + {"vm.swapencrypt.keyscreated", []_C_int{2, 5, 1}}, + {"vm.swapencrypt.keysdeleted", []_C_int{2, 5, 2}}, + {"vm.uspace", []_C_int{2, 11}}, + {"vm.uvmexp", []_C_int{2, 4}}, + {"vm.vmmeter", []_C_int{2, 1}}, + {"vm.vnodemin", []_C_int{2, 9}}, + {"vm.vtextmin", []_C_int{2, 8}}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go b/tests/vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go new file mode 100644 index 000000000..d6e3174c6 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go @@ -0,0 +1,280 @@ +// go run mksysctl_openbsd.go +// Code generated by the command above; DO NOT EDIT. + +//go:build mips64 && openbsd + +package unix + +type mibentry struct { + ctlname string + ctloid []_C_int +} + +var sysctlMib = []mibentry{ + {"ddb.console", []_C_int{9, 6}}, + {"ddb.log", []_C_int{9, 7}}, + {"ddb.max_line", []_C_int{9, 3}}, + {"ddb.max_width", []_C_int{9, 2}}, + {"ddb.panic", []_C_int{9, 5}}, + {"ddb.profile", []_C_int{9, 9}}, + {"ddb.radix", []_C_int{9, 1}}, + {"ddb.tab_stop_width", []_C_int{9, 4}}, + {"ddb.trigger", []_C_int{9, 8}}, + {"fs.posix.setuid", []_C_int{3, 1, 1}}, + {"hw.allowpowerdown", []_C_int{6, 22}}, + {"hw.byteorder", []_C_int{6, 4}}, + {"hw.cpuspeed", []_C_int{6, 12}}, + {"hw.diskcount", []_C_int{6, 10}}, + {"hw.disknames", []_C_int{6, 8}}, + {"hw.diskstats", []_C_int{6, 9}}, + {"hw.machine", []_C_int{6, 1}}, + {"hw.model", []_C_int{6, 2}}, + {"hw.ncpu", []_C_int{6, 3}}, + {"hw.ncpufound", []_C_int{6, 21}}, + {"hw.ncpuonline", []_C_int{6, 25}}, + {"hw.pagesize", []_C_int{6, 7}}, + {"hw.perfpolicy", []_C_int{6, 23}}, + {"hw.physmem", []_C_int{6, 19}}, + {"hw.power", []_C_int{6, 26}}, + {"hw.product", []_C_int{6, 15}}, + {"hw.serialno", []_C_int{6, 17}}, + {"hw.setperf", []_C_int{6, 13}}, + {"hw.smt", []_C_int{6, 24}}, + {"hw.usermem", []_C_int{6, 20}}, + {"hw.uuid", []_C_int{6, 18}}, + {"hw.vendor", []_C_int{6, 14}}, + {"hw.version", []_C_int{6, 16}}, + {"kern.allowdt", []_C_int{1, 65}}, + {"kern.allowkmem", []_C_int{1, 52}}, + {"kern.argmax", []_C_int{1, 8}}, + {"kern.audio", []_C_int{1, 84}}, + {"kern.boottime", []_C_int{1, 21}}, + {"kern.bufcachepercent", []_C_int{1, 72}}, + {"kern.ccpu", []_C_int{1, 45}}, + {"kern.clockrate", []_C_int{1, 12}}, + {"kern.consbuf", []_C_int{1, 83}}, + {"kern.consbufsize", []_C_int{1, 82}}, + {"kern.consdev", []_C_int{1, 75}}, + {"kern.cp_time", []_C_int{1, 40}}, + {"kern.cp_time2", []_C_int{1, 71}}, + {"kern.cpustats", []_C_int{1, 85}}, + {"kern.domainname", []_C_int{1, 22}}, + {"kern.file", []_C_int{1, 73}}, + {"kern.forkstat", []_C_int{1, 42}}, + {"kern.fscale", []_C_int{1, 46}}, + {"kern.fsync", []_C_int{1, 33}}, + {"kern.global_ptrace", []_C_int{1, 81}}, + {"kern.hostid", []_C_int{1, 11}}, + {"kern.hostname", []_C_int{1, 10}}, + {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}}, + {"kern.job_control", []_C_int{1, 19}}, + {"kern.malloc.buckets", []_C_int{1, 39, 1}}, + {"kern.malloc.kmemnames", []_C_int{1, 39, 3}}, + {"kern.maxclusters", []_C_int{1, 67}}, + {"kern.maxfiles", []_C_int{1, 7}}, + {"kern.maxlocksperuid", []_C_int{1, 70}}, + {"kern.maxpartitions", []_C_int{1, 23}}, + {"kern.maxproc", []_C_int{1, 6}}, + {"kern.maxthread", []_C_int{1, 25}}, + {"kern.maxvnodes", []_C_int{1, 5}}, + {"kern.mbstat", []_C_int{1, 59}}, + {"kern.msgbuf", []_C_int{1, 48}}, + {"kern.msgbufsize", []_C_int{1, 38}}, + {"kern.nchstats", []_C_int{1, 41}}, + {"kern.netlivelocks", []_C_int{1, 76}}, + {"kern.nfiles", []_C_int{1, 56}}, + {"kern.ngroups", []_C_int{1, 18}}, + {"kern.nosuidcoredump", []_C_int{1, 32}}, + {"kern.nprocs", []_C_int{1, 47}}, + {"kern.nthreads", []_C_int{1, 26}}, + {"kern.numvnodes", []_C_int{1, 58}}, + {"kern.osrelease", []_C_int{1, 2}}, + {"kern.osrevision", []_C_int{1, 3}}, + {"kern.ostype", []_C_int{1, 1}}, + {"kern.osversion", []_C_int{1, 27}}, + {"kern.pfstatus", []_C_int{1, 86}}, + {"kern.pool_debug", []_C_int{1, 77}}, + {"kern.posix1version", []_C_int{1, 17}}, + {"kern.proc", []_C_int{1, 66}}, + {"kern.rawpartition", []_C_int{1, 24}}, + {"kern.saved_ids", []_C_int{1, 20}}, + {"kern.securelevel", []_C_int{1, 9}}, + {"kern.seminfo", []_C_int{1, 61}}, + {"kern.shminfo", []_C_int{1, 62}}, + {"kern.somaxconn", []_C_int{1, 28}}, + {"kern.sominconn", []_C_int{1, 29}}, + {"kern.splassert", []_C_int{1, 54}}, + {"kern.stackgap_random", []_C_int{1, 50}}, + {"kern.sysvipc_info", []_C_int{1, 51}}, + {"kern.sysvmsg", []_C_int{1, 34}}, + {"kern.sysvsem", []_C_int{1, 35}}, + {"kern.sysvshm", []_C_int{1, 36}}, + {"kern.timecounter.choice", []_C_int{1, 69, 4}}, + {"kern.timecounter.hardware", []_C_int{1, 69, 3}}, + {"kern.timecounter.tick", []_C_int{1, 69, 1}}, + {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}}, + {"kern.timeout_stats", []_C_int{1, 87}}, + {"kern.tty.tk_cancc", []_C_int{1, 44, 4}}, + {"kern.tty.tk_nin", []_C_int{1, 44, 1}}, + {"kern.tty.tk_nout", []_C_int{1, 44, 2}}, + {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}}, + {"kern.tty.ttyinfo", []_C_int{1, 44, 5}}, + {"kern.ttycount", []_C_int{1, 57}}, + {"kern.utc_offset", []_C_int{1, 88}}, + {"kern.version", []_C_int{1, 4}}, + {"kern.video", []_C_int{1, 89}}, + {"kern.watchdog.auto", []_C_int{1, 64, 2}}, + {"kern.watchdog.period", []_C_int{1, 64, 1}}, + {"kern.witnesswatch", []_C_int{1, 53}}, + {"kern.wxabort", []_C_int{1, 74}}, + {"net.bpf.bufsize", []_C_int{4, 31, 1}}, + {"net.bpf.maxbufsize", []_C_int{4, 31, 2}}, + {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}}, + {"net.inet.ah.stats", []_C_int{4, 2, 51, 2}}, + {"net.inet.carp.allow", []_C_int{4, 2, 112, 1}}, + {"net.inet.carp.log", []_C_int{4, 2, 112, 3}}, + {"net.inet.carp.preempt", []_C_int{4, 2, 112, 2}}, + {"net.inet.carp.stats", []_C_int{4, 2, 112, 4}}, + {"net.inet.divert.recvspace", []_C_int{4, 2, 258, 1}}, + {"net.inet.divert.sendspace", []_C_int{4, 2, 258, 2}}, + {"net.inet.divert.stats", []_C_int{4, 2, 258, 3}}, + {"net.inet.esp.enable", []_C_int{4, 2, 50, 1}}, + {"net.inet.esp.stats", []_C_int{4, 2, 50, 4}}, + {"net.inet.esp.udpencap", []_C_int{4, 2, 50, 2}}, + {"net.inet.esp.udpencap_port", []_C_int{4, 2, 50, 3}}, + {"net.inet.etherip.allow", []_C_int{4, 2, 97, 1}}, + {"net.inet.etherip.stats", []_C_int{4, 2, 97, 2}}, + {"net.inet.gre.allow", []_C_int{4, 2, 47, 1}}, + {"net.inet.gre.wccp", []_C_int{4, 2, 47, 2}}, + {"net.inet.icmp.bmcastecho", []_C_int{4, 2, 1, 2}}, + {"net.inet.icmp.errppslimit", []_C_int{4, 2, 1, 3}}, + {"net.inet.icmp.maskrepl", []_C_int{4, 2, 1, 1}}, + {"net.inet.icmp.rediraccept", []_C_int{4, 2, 1, 4}}, + {"net.inet.icmp.redirtimeout", []_C_int{4, 2, 1, 5}}, + {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}}, + {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}}, + {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}}, + {"net.inet.ip.arpdown", []_C_int{4, 2, 0, 40}}, + {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}}, + {"net.inet.ip.arptimeout", []_C_int{4, 2, 0, 39}}, + {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}}, + {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}}, + {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}}, + {"net.inet.ip.ifq.drops", []_C_int{4, 2, 0, 30, 3}}, + {"net.inet.ip.ifq.len", []_C_int{4, 2, 0, 30, 1}}, + {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}}, + {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}}, + {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}}, + {"net.inet.ip.mrtmfc", []_C_int{4, 2, 0, 37}}, + {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}}, + {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}}, + {"net.inet.ip.mrtvif", []_C_int{4, 2, 0, 38}}, + {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}}, + {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}}, + {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}}, + {"net.inet.ip.multipath", []_C_int{4, 2, 0, 32}}, + {"net.inet.ip.portfirst", []_C_int{4, 2, 0, 7}}, + {"net.inet.ip.porthifirst", []_C_int{4, 2, 0, 9}}, + {"net.inet.ip.porthilast", []_C_int{4, 2, 0, 10}}, + {"net.inet.ip.portlast", []_C_int{4, 2, 0, 8}}, + {"net.inet.ip.redirect", []_C_int{4, 2, 0, 2}}, + {"net.inet.ip.sourceroute", []_C_int{4, 2, 0, 5}}, + {"net.inet.ip.stats", []_C_int{4, 2, 0, 33}}, + {"net.inet.ip.ttl", []_C_int{4, 2, 0, 3}}, + {"net.inet.ipcomp.enable", []_C_int{4, 2, 108, 1}}, + {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}}, + {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}}, + {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}}, + {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}}, + {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}}, + {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}}, + {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}}, + {"net.inet.tcp.drop", []_C_int{4, 2, 6, 19}}, + {"net.inet.tcp.ecn", []_C_int{4, 2, 6, 14}}, + {"net.inet.tcp.ident", []_C_int{4, 2, 6, 9}}, + {"net.inet.tcp.keepidle", []_C_int{4, 2, 6, 3}}, + {"net.inet.tcp.keepinittime", []_C_int{4, 2, 6, 2}}, + {"net.inet.tcp.keepintvl", []_C_int{4, 2, 6, 4}}, + {"net.inet.tcp.mssdflt", []_C_int{4, 2, 6, 11}}, + {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}}, + {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}}, + {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}}, + {"net.inet.tcp.rootonly", []_C_int{4, 2, 6, 24}}, + {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}}, + {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}}, + {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}}, + {"net.inet.tcp.slowhz", []_C_int{4, 2, 6, 5}}, + {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}}, + {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}}, + {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}}, + {"net.inet.tcp.synhashsize", []_C_int{4, 2, 6, 25}}, + {"net.inet.tcp.synuselimit", []_C_int{4, 2, 6, 23}}, + {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}}, + {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}}, + {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}}, + {"net.inet.udp.rootonly", []_C_int{4, 2, 17, 6}}, + {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}}, + {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}}, + {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}}, + {"net.inet6.divert.sendspace", []_C_int{4, 24, 86, 2}}, + {"net.inet6.divert.stats", []_C_int{4, 24, 86, 3}}, + {"net.inet6.icmp6.errppslimit", []_C_int{4, 24, 30, 14}}, + {"net.inet6.icmp6.mtudisc_hiwat", []_C_int{4, 24, 30, 16}}, + {"net.inet6.icmp6.mtudisc_lowat", []_C_int{4, 24, 30, 17}}, + {"net.inet6.icmp6.nd6_debug", []_C_int{4, 24, 30, 18}}, + {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}}, + {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}}, + {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}}, + {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}}, + {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}}, + {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}}, + {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}}, + {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}}, + {"net.inet6.ip6.defmcasthlim", []_C_int{4, 24, 17, 18}}, + {"net.inet6.ip6.forwarding", []_C_int{4, 24, 17, 1}}, + {"net.inet6.ip6.forwsrcrt", []_C_int{4, 24, 17, 5}}, + {"net.inet6.ip6.hdrnestlimit", []_C_int{4, 24, 17, 15}}, + {"net.inet6.ip6.hlim", []_C_int{4, 24, 17, 3}}, + {"net.inet6.ip6.log_interval", []_C_int{4, 24, 17, 14}}, + {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}}, + {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}}, + {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}}, + {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}}, + {"net.inet6.ip6.mrtmfc", []_C_int{4, 24, 17, 53}}, + {"net.inet6.ip6.mrtmif", []_C_int{4, 24, 17, 52}}, + {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}}, + {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}}, + {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}}, + {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}}, + {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}}, + {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}}, + {"net.inet6.ip6.soiikey", []_C_int{4, 24, 17, 54}}, + {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}}, + {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}}, + {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}}, + {"net.key.sadb_dump", []_C_int{4, 30, 1}}, + {"net.key.spd_dump", []_C_int{4, 30, 2}}, + {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}}, + {"net.mpls.ifq.drops", []_C_int{4, 33, 3, 3}}, + {"net.mpls.ifq.len", []_C_int{4, 33, 3, 1}}, + {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}}, + {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}}, + {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}}, + {"net.mpls.ttl", []_C_int{4, 33, 2}}, + {"net.pflow.stats", []_C_int{4, 34, 1}}, + {"net.pipex.enable", []_C_int{4, 35, 1}}, + {"vm.anonmin", []_C_int{2, 7}}, + {"vm.loadavg", []_C_int{2, 2}}, + {"vm.malloc_conf", []_C_int{2, 12}}, + {"vm.maxslp", []_C_int{2, 10}}, + {"vm.nkmempages", []_C_int{2, 6}}, + {"vm.psstrings", []_C_int{2, 3}}, + {"vm.swapencrypt.enable", []_C_int{2, 5, 0}}, + {"vm.swapencrypt.keyscreated", []_C_int{2, 5, 1}}, + {"vm.swapencrypt.keysdeleted", []_C_int{2, 5, 2}}, + {"vm.uspace", []_C_int{2, 11}}, + {"vm.uvmexp", []_C_int{2, 4}}, + {"vm.vmmeter", []_C_int{2, 1}}, + {"vm.vnodemin", []_C_int{2, 9}}, + {"vm.vtextmin", []_C_int{2, 8}}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsysctl_openbsd_ppc64.go b/tests/vendor/golang.org/x/sys/unix/zsysctl_openbsd_ppc64.go new file mode 100644 index 000000000..ee97157d0 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysctl_openbsd_ppc64.go @@ -0,0 +1,280 @@ +// go run mksysctl_openbsd.go +// Code generated by the command above; DO NOT EDIT. + +//go:build ppc64 && openbsd + +package unix + +type mibentry struct { + ctlname string + ctloid []_C_int +} + +var sysctlMib = []mibentry{ + {"ddb.console", []_C_int{9, 6}}, + {"ddb.log", []_C_int{9, 7}}, + {"ddb.max_line", []_C_int{9, 3}}, + {"ddb.max_width", []_C_int{9, 2}}, + {"ddb.panic", []_C_int{9, 5}}, + {"ddb.profile", []_C_int{9, 9}}, + {"ddb.radix", []_C_int{9, 1}}, + {"ddb.tab_stop_width", []_C_int{9, 4}}, + {"ddb.trigger", []_C_int{9, 8}}, + {"fs.posix.setuid", []_C_int{3, 1, 1}}, + {"hw.allowpowerdown", []_C_int{6, 22}}, + {"hw.byteorder", []_C_int{6, 4}}, + {"hw.cpuspeed", []_C_int{6, 12}}, + {"hw.diskcount", []_C_int{6, 10}}, + {"hw.disknames", []_C_int{6, 8}}, + {"hw.diskstats", []_C_int{6, 9}}, + {"hw.machine", []_C_int{6, 1}}, + {"hw.model", []_C_int{6, 2}}, + {"hw.ncpu", []_C_int{6, 3}}, + {"hw.ncpufound", []_C_int{6, 21}}, + {"hw.ncpuonline", []_C_int{6, 25}}, + {"hw.pagesize", []_C_int{6, 7}}, + {"hw.perfpolicy", []_C_int{6, 23}}, + {"hw.physmem", []_C_int{6, 19}}, + {"hw.power", []_C_int{6, 26}}, + {"hw.product", []_C_int{6, 15}}, + {"hw.serialno", []_C_int{6, 17}}, + {"hw.setperf", []_C_int{6, 13}}, + {"hw.smt", []_C_int{6, 24}}, + {"hw.usermem", []_C_int{6, 20}}, + {"hw.uuid", []_C_int{6, 18}}, + {"hw.vendor", []_C_int{6, 14}}, + {"hw.version", []_C_int{6, 16}}, + {"kern.allowdt", []_C_int{1, 65}}, + {"kern.allowkmem", []_C_int{1, 52}}, + {"kern.argmax", []_C_int{1, 8}}, + {"kern.audio", []_C_int{1, 84}}, + {"kern.boottime", []_C_int{1, 21}}, + {"kern.bufcachepercent", []_C_int{1, 72}}, + {"kern.ccpu", []_C_int{1, 45}}, + {"kern.clockrate", []_C_int{1, 12}}, + {"kern.consbuf", []_C_int{1, 83}}, + {"kern.consbufsize", []_C_int{1, 82}}, + {"kern.consdev", []_C_int{1, 75}}, + {"kern.cp_time", []_C_int{1, 40}}, + {"kern.cp_time2", []_C_int{1, 71}}, + {"kern.cpustats", []_C_int{1, 85}}, + {"kern.domainname", []_C_int{1, 22}}, + {"kern.file", []_C_int{1, 73}}, + {"kern.forkstat", []_C_int{1, 42}}, + {"kern.fscale", []_C_int{1, 46}}, + {"kern.fsync", []_C_int{1, 33}}, + {"kern.global_ptrace", []_C_int{1, 81}}, + {"kern.hostid", []_C_int{1, 11}}, + {"kern.hostname", []_C_int{1, 10}}, + {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}}, + {"kern.job_control", []_C_int{1, 19}}, + {"kern.malloc.buckets", []_C_int{1, 39, 1}}, + {"kern.malloc.kmemnames", []_C_int{1, 39, 3}}, + {"kern.maxclusters", []_C_int{1, 67}}, + {"kern.maxfiles", []_C_int{1, 7}}, + {"kern.maxlocksperuid", []_C_int{1, 70}}, + {"kern.maxpartitions", []_C_int{1, 23}}, + {"kern.maxproc", []_C_int{1, 6}}, + {"kern.maxthread", []_C_int{1, 25}}, + {"kern.maxvnodes", []_C_int{1, 5}}, + {"kern.mbstat", []_C_int{1, 59}}, + {"kern.msgbuf", []_C_int{1, 48}}, + {"kern.msgbufsize", []_C_int{1, 38}}, + {"kern.nchstats", []_C_int{1, 41}}, + {"kern.netlivelocks", []_C_int{1, 76}}, + {"kern.nfiles", []_C_int{1, 56}}, + {"kern.ngroups", []_C_int{1, 18}}, + {"kern.nosuidcoredump", []_C_int{1, 32}}, + {"kern.nprocs", []_C_int{1, 47}}, + {"kern.nthreads", []_C_int{1, 26}}, + {"kern.numvnodes", []_C_int{1, 58}}, + {"kern.osrelease", []_C_int{1, 2}}, + {"kern.osrevision", []_C_int{1, 3}}, + {"kern.ostype", []_C_int{1, 1}}, + {"kern.osversion", []_C_int{1, 27}}, + {"kern.pfstatus", []_C_int{1, 86}}, + {"kern.pool_debug", []_C_int{1, 77}}, + {"kern.posix1version", []_C_int{1, 17}}, + {"kern.proc", []_C_int{1, 66}}, + {"kern.rawpartition", []_C_int{1, 24}}, + {"kern.saved_ids", []_C_int{1, 20}}, + {"kern.securelevel", []_C_int{1, 9}}, + {"kern.seminfo", []_C_int{1, 61}}, + {"kern.shminfo", []_C_int{1, 62}}, + {"kern.somaxconn", []_C_int{1, 28}}, + {"kern.sominconn", []_C_int{1, 29}}, + {"kern.splassert", []_C_int{1, 54}}, + {"kern.stackgap_random", []_C_int{1, 50}}, + {"kern.sysvipc_info", []_C_int{1, 51}}, + {"kern.sysvmsg", []_C_int{1, 34}}, + {"kern.sysvsem", []_C_int{1, 35}}, + {"kern.sysvshm", []_C_int{1, 36}}, + {"kern.timecounter.choice", []_C_int{1, 69, 4}}, + {"kern.timecounter.hardware", []_C_int{1, 69, 3}}, + {"kern.timecounter.tick", []_C_int{1, 69, 1}}, + {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}}, + {"kern.timeout_stats", []_C_int{1, 87}}, + {"kern.tty.tk_cancc", []_C_int{1, 44, 4}}, + {"kern.tty.tk_nin", []_C_int{1, 44, 1}}, + {"kern.tty.tk_nout", []_C_int{1, 44, 2}}, + {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}}, + {"kern.tty.ttyinfo", []_C_int{1, 44, 5}}, + {"kern.ttycount", []_C_int{1, 57}}, + {"kern.utc_offset", []_C_int{1, 88}}, + {"kern.version", []_C_int{1, 4}}, + {"kern.video", []_C_int{1, 89}}, + {"kern.watchdog.auto", []_C_int{1, 64, 2}}, + {"kern.watchdog.period", []_C_int{1, 64, 1}}, + {"kern.witnesswatch", []_C_int{1, 53}}, + {"kern.wxabort", []_C_int{1, 74}}, + {"net.bpf.bufsize", []_C_int{4, 31, 1}}, + {"net.bpf.maxbufsize", []_C_int{4, 31, 2}}, + {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}}, + {"net.inet.ah.stats", []_C_int{4, 2, 51, 2}}, + {"net.inet.carp.allow", []_C_int{4, 2, 112, 1}}, + {"net.inet.carp.log", []_C_int{4, 2, 112, 3}}, + {"net.inet.carp.preempt", []_C_int{4, 2, 112, 2}}, + {"net.inet.carp.stats", []_C_int{4, 2, 112, 4}}, + {"net.inet.divert.recvspace", []_C_int{4, 2, 258, 1}}, + {"net.inet.divert.sendspace", []_C_int{4, 2, 258, 2}}, + {"net.inet.divert.stats", []_C_int{4, 2, 258, 3}}, + {"net.inet.esp.enable", []_C_int{4, 2, 50, 1}}, + {"net.inet.esp.stats", []_C_int{4, 2, 50, 4}}, + {"net.inet.esp.udpencap", []_C_int{4, 2, 50, 2}}, + {"net.inet.esp.udpencap_port", []_C_int{4, 2, 50, 3}}, + {"net.inet.etherip.allow", []_C_int{4, 2, 97, 1}}, + {"net.inet.etherip.stats", []_C_int{4, 2, 97, 2}}, + {"net.inet.gre.allow", []_C_int{4, 2, 47, 1}}, + {"net.inet.gre.wccp", []_C_int{4, 2, 47, 2}}, + {"net.inet.icmp.bmcastecho", []_C_int{4, 2, 1, 2}}, + {"net.inet.icmp.errppslimit", []_C_int{4, 2, 1, 3}}, + {"net.inet.icmp.maskrepl", []_C_int{4, 2, 1, 1}}, + {"net.inet.icmp.rediraccept", []_C_int{4, 2, 1, 4}}, + {"net.inet.icmp.redirtimeout", []_C_int{4, 2, 1, 5}}, + {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}}, + {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}}, + {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}}, + {"net.inet.ip.arpdown", []_C_int{4, 2, 0, 40}}, + {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}}, + {"net.inet.ip.arptimeout", []_C_int{4, 2, 0, 39}}, + {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}}, + {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}}, + {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}}, + {"net.inet.ip.ifq.drops", []_C_int{4, 2, 0, 30, 3}}, + {"net.inet.ip.ifq.len", []_C_int{4, 2, 0, 30, 1}}, + {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}}, + {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}}, + {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}}, + {"net.inet.ip.mrtmfc", []_C_int{4, 2, 0, 37}}, + {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}}, + {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}}, + {"net.inet.ip.mrtvif", []_C_int{4, 2, 0, 38}}, + {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}}, + {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}}, + {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}}, + {"net.inet.ip.multipath", []_C_int{4, 2, 0, 32}}, + {"net.inet.ip.portfirst", []_C_int{4, 2, 0, 7}}, + {"net.inet.ip.porthifirst", []_C_int{4, 2, 0, 9}}, + {"net.inet.ip.porthilast", []_C_int{4, 2, 0, 10}}, + {"net.inet.ip.portlast", []_C_int{4, 2, 0, 8}}, + {"net.inet.ip.redirect", []_C_int{4, 2, 0, 2}}, + {"net.inet.ip.sourceroute", []_C_int{4, 2, 0, 5}}, + {"net.inet.ip.stats", []_C_int{4, 2, 0, 33}}, + {"net.inet.ip.ttl", []_C_int{4, 2, 0, 3}}, + {"net.inet.ipcomp.enable", []_C_int{4, 2, 108, 1}}, + {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}}, + {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}}, + {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}}, + {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}}, + {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}}, + {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}}, + {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}}, + {"net.inet.tcp.drop", []_C_int{4, 2, 6, 19}}, + {"net.inet.tcp.ecn", []_C_int{4, 2, 6, 14}}, + {"net.inet.tcp.ident", []_C_int{4, 2, 6, 9}}, + {"net.inet.tcp.keepidle", []_C_int{4, 2, 6, 3}}, + {"net.inet.tcp.keepinittime", []_C_int{4, 2, 6, 2}}, + {"net.inet.tcp.keepintvl", []_C_int{4, 2, 6, 4}}, + {"net.inet.tcp.mssdflt", []_C_int{4, 2, 6, 11}}, + {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}}, + {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}}, + {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}}, + {"net.inet.tcp.rootonly", []_C_int{4, 2, 6, 24}}, + {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}}, + {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}}, + {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}}, + {"net.inet.tcp.slowhz", []_C_int{4, 2, 6, 5}}, + {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}}, + {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}}, + {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}}, + {"net.inet.tcp.synhashsize", []_C_int{4, 2, 6, 25}}, + {"net.inet.tcp.synuselimit", []_C_int{4, 2, 6, 23}}, + {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}}, + {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}}, + {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}}, + {"net.inet.udp.rootonly", []_C_int{4, 2, 17, 6}}, + {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}}, + {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}}, + {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}}, + {"net.inet6.divert.sendspace", []_C_int{4, 24, 86, 2}}, + {"net.inet6.divert.stats", []_C_int{4, 24, 86, 3}}, + {"net.inet6.icmp6.errppslimit", []_C_int{4, 24, 30, 14}}, + {"net.inet6.icmp6.mtudisc_hiwat", []_C_int{4, 24, 30, 16}}, + {"net.inet6.icmp6.mtudisc_lowat", []_C_int{4, 24, 30, 17}}, + {"net.inet6.icmp6.nd6_debug", []_C_int{4, 24, 30, 18}}, + {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}}, + {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}}, + {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}}, + {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}}, + {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}}, + {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}}, + {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}}, + {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}}, + {"net.inet6.ip6.defmcasthlim", []_C_int{4, 24, 17, 18}}, + {"net.inet6.ip6.forwarding", []_C_int{4, 24, 17, 1}}, + {"net.inet6.ip6.forwsrcrt", []_C_int{4, 24, 17, 5}}, + {"net.inet6.ip6.hdrnestlimit", []_C_int{4, 24, 17, 15}}, + {"net.inet6.ip6.hlim", []_C_int{4, 24, 17, 3}}, + {"net.inet6.ip6.log_interval", []_C_int{4, 24, 17, 14}}, + {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}}, + {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}}, + {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}}, + {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}}, + {"net.inet6.ip6.mrtmfc", []_C_int{4, 24, 17, 53}}, + {"net.inet6.ip6.mrtmif", []_C_int{4, 24, 17, 52}}, + {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}}, + {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}}, + {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}}, + {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}}, + {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}}, + {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}}, + {"net.inet6.ip6.soiikey", []_C_int{4, 24, 17, 54}}, + {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}}, + {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}}, + {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}}, + {"net.key.sadb_dump", []_C_int{4, 30, 1}}, + {"net.key.spd_dump", []_C_int{4, 30, 2}}, + {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}}, + {"net.mpls.ifq.drops", []_C_int{4, 33, 3, 3}}, + {"net.mpls.ifq.len", []_C_int{4, 33, 3, 1}}, + {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}}, + {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}}, + {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}}, + {"net.mpls.ttl", []_C_int{4, 33, 2}}, + {"net.pflow.stats", []_C_int{4, 34, 1}}, + {"net.pipex.enable", []_C_int{4, 35, 1}}, + {"vm.anonmin", []_C_int{2, 7}}, + {"vm.loadavg", []_C_int{2, 2}}, + {"vm.malloc_conf", []_C_int{2, 12}}, + {"vm.maxslp", []_C_int{2, 10}}, + {"vm.nkmempages", []_C_int{2, 6}}, + {"vm.psstrings", []_C_int{2, 3}}, + {"vm.swapencrypt.enable", []_C_int{2, 5, 0}}, + {"vm.swapencrypt.keyscreated", []_C_int{2, 5, 1}}, + {"vm.swapencrypt.keysdeleted", []_C_int{2, 5, 2}}, + {"vm.uspace", []_C_int{2, 11}}, + {"vm.uvmexp", []_C_int{2, 4}}, + {"vm.vmmeter", []_C_int{2, 1}}, + {"vm.vnodemin", []_C_int{2, 9}}, + {"vm.vtextmin", []_C_int{2, 8}}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsysctl_openbsd_riscv64.go b/tests/vendor/golang.org/x/sys/unix/zsysctl_openbsd_riscv64.go new file mode 100644 index 000000000..35c3b91d0 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysctl_openbsd_riscv64.go @@ -0,0 +1,281 @@ +// go run mksysctl_openbsd.go +// Code generated by the command above; DO NOT EDIT. + +//go:build riscv64 && openbsd + +package unix + +type mibentry struct { + ctlname string + ctloid []_C_int +} + +var sysctlMib = []mibentry{ + {"ddb.console", []_C_int{9, 6}}, + {"ddb.log", []_C_int{9, 7}}, + {"ddb.max_line", []_C_int{9, 3}}, + {"ddb.max_width", []_C_int{9, 2}}, + {"ddb.panic", []_C_int{9, 5}}, + {"ddb.profile", []_C_int{9, 9}}, + {"ddb.radix", []_C_int{9, 1}}, + {"ddb.tab_stop_width", []_C_int{9, 4}}, + {"ddb.trigger", []_C_int{9, 8}}, + {"fs.posix.setuid", []_C_int{3, 1, 1}}, + {"hw.allowpowerdown", []_C_int{6, 22}}, + {"hw.byteorder", []_C_int{6, 4}}, + {"hw.cpuspeed", []_C_int{6, 12}}, + {"hw.diskcount", []_C_int{6, 10}}, + {"hw.disknames", []_C_int{6, 8}}, + {"hw.diskstats", []_C_int{6, 9}}, + {"hw.machine", []_C_int{6, 1}}, + {"hw.model", []_C_int{6, 2}}, + {"hw.ncpu", []_C_int{6, 3}}, + {"hw.ncpufound", []_C_int{6, 21}}, + {"hw.ncpuonline", []_C_int{6, 25}}, + {"hw.pagesize", []_C_int{6, 7}}, + {"hw.perfpolicy", []_C_int{6, 23}}, + {"hw.physmem", []_C_int{6, 19}}, + {"hw.power", []_C_int{6, 26}}, + {"hw.product", []_C_int{6, 15}}, + {"hw.serialno", []_C_int{6, 17}}, + {"hw.setperf", []_C_int{6, 13}}, + {"hw.smt", []_C_int{6, 24}}, + {"hw.usermem", []_C_int{6, 20}}, + {"hw.uuid", []_C_int{6, 18}}, + {"hw.vendor", []_C_int{6, 14}}, + {"hw.version", []_C_int{6, 16}}, + {"kern.allowdt", []_C_int{1, 65}}, + {"kern.allowkmem", []_C_int{1, 52}}, + {"kern.argmax", []_C_int{1, 8}}, + {"kern.audio", []_C_int{1, 84}}, + {"kern.boottime", []_C_int{1, 21}}, + {"kern.bufcachepercent", []_C_int{1, 72}}, + {"kern.ccpu", []_C_int{1, 45}}, + {"kern.clockrate", []_C_int{1, 12}}, + {"kern.consbuf", []_C_int{1, 83}}, + {"kern.consbufsize", []_C_int{1, 82}}, + {"kern.consdev", []_C_int{1, 75}}, + {"kern.cp_time", []_C_int{1, 40}}, + {"kern.cp_time2", []_C_int{1, 71}}, + {"kern.cpustats", []_C_int{1, 85}}, + {"kern.domainname", []_C_int{1, 22}}, + {"kern.file", []_C_int{1, 73}}, + {"kern.forkstat", []_C_int{1, 42}}, + {"kern.fscale", []_C_int{1, 46}}, + {"kern.fsync", []_C_int{1, 33}}, + {"kern.global_ptrace", []_C_int{1, 81}}, + {"kern.hostid", []_C_int{1, 11}}, + {"kern.hostname", []_C_int{1, 10}}, + {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}}, + {"kern.job_control", []_C_int{1, 19}}, + {"kern.malloc.buckets", []_C_int{1, 39, 1}}, + {"kern.malloc.kmemnames", []_C_int{1, 39, 3}}, + {"kern.maxclusters", []_C_int{1, 67}}, + {"kern.maxfiles", []_C_int{1, 7}}, + {"kern.maxlocksperuid", []_C_int{1, 70}}, + {"kern.maxpartitions", []_C_int{1, 23}}, + {"kern.maxproc", []_C_int{1, 6}}, + {"kern.maxthread", []_C_int{1, 25}}, + {"kern.maxvnodes", []_C_int{1, 5}}, + {"kern.mbstat", []_C_int{1, 59}}, + {"kern.msgbuf", []_C_int{1, 48}}, + {"kern.msgbufsize", []_C_int{1, 38}}, + {"kern.nchstats", []_C_int{1, 41}}, + {"kern.netlivelocks", []_C_int{1, 76}}, + {"kern.nfiles", []_C_int{1, 56}}, + {"kern.ngroups", []_C_int{1, 18}}, + {"kern.nosuidcoredump", []_C_int{1, 32}}, + {"kern.nprocs", []_C_int{1, 47}}, + {"kern.nselcoll", []_C_int{1, 43}}, + {"kern.nthreads", []_C_int{1, 26}}, + {"kern.numvnodes", []_C_int{1, 58}}, + {"kern.osrelease", []_C_int{1, 2}}, + {"kern.osrevision", []_C_int{1, 3}}, + {"kern.ostype", []_C_int{1, 1}}, + {"kern.osversion", []_C_int{1, 27}}, + {"kern.pfstatus", []_C_int{1, 86}}, + {"kern.pool_debug", []_C_int{1, 77}}, + {"kern.posix1version", []_C_int{1, 17}}, + {"kern.proc", []_C_int{1, 66}}, + {"kern.rawpartition", []_C_int{1, 24}}, + {"kern.saved_ids", []_C_int{1, 20}}, + {"kern.securelevel", []_C_int{1, 9}}, + {"kern.seminfo", []_C_int{1, 61}}, + {"kern.shminfo", []_C_int{1, 62}}, + {"kern.somaxconn", []_C_int{1, 28}}, + {"kern.sominconn", []_C_int{1, 29}}, + {"kern.splassert", []_C_int{1, 54}}, + {"kern.stackgap_random", []_C_int{1, 50}}, + {"kern.sysvipc_info", []_C_int{1, 51}}, + {"kern.sysvmsg", []_C_int{1, 34}}, + {"kern.sysvsem", []_C_int{1, 35}}, + {"kern.sysvshm", []_C_int{1, 36}}, + {"kern.timecounter.choice", []_C_int{1, 69, 4}}, + {"kern.timecounter.hardware", []_C_int{1, 69, 3}}, + {"kern.timecounter.tick", []_C_int{1, 69, 1}}, + {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}}, + {"kern.timeout_stats", []_C_int{1, 87}}, + {"kern.tty.tk_cancc", []_C_int{1, 44, 4}}, + {"kern.tty.tk_nin", []_C_int{1, 44, 1}}, + {"kern.tty.tk_nout", []_C_int{1, 44, 2}}, + {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}}, + {"kern.tty.ttyinfo", []_C_int{1, 44, 5}}, + {"kern.ttycount", []_C_int{1, 57}}, + {"kern.utc_offset", []_C_int{1, 88}}, + {"kern.version", []_C_int{1, 4}}, + {"kern.video", []_C_int{1, 89}}, + {"kern.watchdog.auto", []_C_int{1, 64, 2}}, + {"kern.watchdog.period", []_C_int{1, 64, 1}}, + {"kern.witnesswatch", []_C_int{1, 53}}, + {"kern.wxabort", []_C_int{1, 74}}, + {"net.bpf.bufsize", []_C_int{4, 31, 1}}, + {"net.bpf.maxbufsize", []_C_int{4, 31, 2}}, + {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}}, + {"net.inet.ah.stats", []_C_int{4, 2, 51, 2}}, + {"net.inet.carp.allow", []_C_int{4, 2, 112, 1}}, + {"net.inet.carp.log", []_C_int{4, 2, 112, 3}}, + {"net.inet.carp.preempt", []_C_int{4, 2, 112, 2}}, + {"net.inet.carp.stats", []_C_int{4, 2, 112, 4}}, + {"net.inet.divert.recvspace", []_C_int{4, 2, 258, 1}}, + {"net.inet.divert.sendspace", []_C_int{4, 2, 258, 2}}, + {"net.inet.divert.stats", []_C_int{4, 2, 258, 3}}, + {"net.inet.esp.enable", []_C_int{4, 2, 50, 1}}, + {"net.inet.esp.stats", []_C_int{4, 2, 50, 4}}, + {"net.inet.esp.udpencap", []_C_int{4, 2, 50, 2}}, + {"net.inet.esp.udpencap_port", []_C_int{4, 2, 50, 3}}, + {"net.inet.etherip.allow", []_C_int{4, 2, 97, 1}}, + {"net.inet.etherip.stats", []_C_int{4, 2, 97, 2}}, + {"net.inet.gre.allow", []_C_int{4, 2, 47, 1}}, + {"net.inet.gre.wccp", []_C_int{4, 2, 47, 2}}, + {"net.inet.icmp.bmcastecho", []_C_int{4, 2, 1, 2}}, + {"net.inet.icmp.errppslimit", []_C_int{4, 2, 1, 3}}, + {"net.inet.icmp.maskrepl", []_C_int{4, 2, 1, 1}}, + {"net.inet.icmp.rediraccept", []_C_int{4, 2, 1, 4}}, + {"net.inet.icmp.redirtimeout", []_C_int{4, 2, 1, 5}}, + {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}}, + {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}}, + {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}}, + {"net.inet.ip.arpdown", []_C_int{4, 2, 0, 40}}, + {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}}, + {"net.inet.ip.arptimeout", []_C_int{4, 2, 0, 39}}, + {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}}, + {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}}, + {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}}, + {"net.inet.ip.ifq.drops", []_C_int{4, 2, 0, 30, 3}}, + {"net.inet.ip.ifq.len", []_C_int{4, 2, 0, 30, 1}}, + {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}}, + {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}}, + {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}}, + {"net.inet.ip.mrtmfc", []_C_int{4, 2, 0, 37}}, + {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}}, + {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}}, + {"net.inet.ip.mrtvif", []_C_int{4, 2, 0, 38}}, + {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}}, + {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}}, + {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}}, + {"net.inet.ip.multipath", []_C_int{4, 2, 0, 32}}, + {"net.inet.ip.portfirst", []_C_int{4, 2, 0, 7}}, + {"net.inet.ip.porthifirst", []_C_int{4, 2, 0, 9}}, + {"net.inet.ip.porthilast", []_C_int{4, 2, 0, 10}}, + {"net.inet.ip.portlast", []_C_int{4, 2, 0, 8}}, + {"net.inet.ip.redirect", []_C_int{4, 2, 0, 2}}, + {"net.inet.ip.sourceroute", []_C_int{4, 2, 0, 5}}, + {"net.inet.ip.stats", []_C_int{4, 2, 0, 33}}, + {"net.inet.ip.ttl", []_C_int{4, 2, 0, 3}}, + {"net.inet.ipcomp.enable", []_C_int{4, 2, 108, 1}}, + {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}}, + {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}}, + {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}}, + {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}}, + {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}}, + {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}}, + {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}}, + {"net.inet.tcp.drop", []_C_int{4, 2, 6, 19}}, + {"net.inet.tcp.ecn", []_C_int{4, 2, 6, 14}}, + {"net.inet.tcp.ident", []_C_int{4, 2, 6, 9}}, + {"net.inet.tcp.keepidle", []_C_int{4, 2, 6, 3}}, + {"net.inet.tcp.keepinittime", []_C_int{4, 2, 6, 2}}, + {"net.inet.tcp.keepintvl", []_C_int{4, 2, 6, 4}}, + {"net.inet.tcp.mssdflt", []_C_int{4, 2, 6, 11}}, + {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}}, + {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}}, + {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}}, + {"net.inet.tcp.rootonly", []_C_int{4, 2, 6, 24}}, + {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}}, + {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}}, + {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}}, + {"net.inet.tcp.slowhz", []_C_int{4, 2, 6, 5}}, + {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}}, + {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}}, + {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}}, + {"net.inet.tcp.synhashsize", []_C_int{4, 2, 6, 25}}, + {"net.inet.tcp.synuselimit", []_C_int{4, 2, 6, 23}}, + {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}}, + {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}}, + {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}}, + {"net.inet.udp.rootonly", []_C_int{4, 2, 17, 6}}, + {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}}, + {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}}, + {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}}, + {"net.inet6.divert.sendspace", []_C_int{4, 24, 86, 2}}, + {"net.inet6.divert.stats", []_C_int{4, 24, 86, 3}}, + {"net.inet6.icmp6.errppslimit", []_C_int{4, 24, 30, 14}}, + {"net.inet6.icmp6.mtudisc_hiwat", []_C_int{4, 24, 30, 16}}, + {"net.inet6.icmp6.mtudisc_lowat", []_C_int{4, 24, 30, 17}}, + {"net.inet6.icmp6.nd6_debug", []_C_int{4, 24, 30, 18}}, + {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}}, + {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}}, + {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}}, + {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}}, + {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}}, + {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}}, + {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}}, + {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}}, + {"net.inet6.ip6.defmcasthlim", []_C_int{4, 24, 17, 18}}, + {"net.inet6.ip6.forwarding", []_C_int{4, 24, 17, 1}}, + {"net.inet6.ip6.forwsrcrt", []_C_int{4, 24, 17, 5}}, + {"net.inet6.ip6.hdrnestlimit", []_C_int{4, 24, 17, 15}}, + {"net.inet6.ip6.hlim", []_C_int{4, 24, 17, 3}}, + {"net.inet6.ip6.log_interval", []_C_int{4, 24, 17, 14}}, + {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}}, + {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}}, + {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}}, + {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}}, + {"net.inet6.ip6.mrtmfc", []_C_int{4, 24, 17, 53}}, + {"net.inet6.ip6.mrtmif", []_C_int{4, 24, 17, 52}}, + {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}}, + {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}}, + {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}}, + {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}}, + {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}}, + {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}}, + {"net.inet6.ip6.soiikey", []_C_int{4, 24, 17, 54}}, + {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}}, + {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}}, + {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}}, + {"net.key.sadb_dump", []_C_int{4, 30, 1}}, + {"net.key.spd_dump", []_C_int{4, 30, 2}}, + {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}}, + {"net.mpls.ifq.drops", []_C_int{4, 33, 3, 3}}, + {"net.mpls.ifq.len", []_C_int{4, 33, 3, 1}}, + {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}}, + {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}}, + {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}}, + {"net.mpls.ttl", []_C_int{4, 33, 2}}, + {"net.pflow.stats", []_C_int{4, 34, 1}}, + {"net.pipex.enable", []_C_int{4, 35, 1}}, + {"vm.anonmin", []_C_int{2, 7}}, + {"vm.loadavg", []_C_int{2, 2}}, + {"vm.malloc_conf", []_C_int{2, 12}}, + {"vm.maxslp", []_C_int{2, 10}}, + {"vm.nkmempages", []_C_int{2, 6}}, + {"vm.psstrings", []_C_int{2, 3}}, + {"vm.swapencrypt.enable", []_C_int{2, 5, 0}}, + {"vm.swapencrypt.keyscreated", []_C_int{2, 5, 1}}, + {"vm.swapencrypt.keysdeleted", []_C_int{2, 5, 2}}, + {"vm.uspace", []_C_int{2, 11}}, + {"vm.uvmexp", []_C_int{2, 4}}, + {"vm.vmmeter", []_C_int{2, 1}}, + {"vm.vnodemin", []_C_int{2, 9}}, + {"vm.vtextmin", []_C_int{2, 8}}, +} diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go new file mode 100644 index 000000000..5edda7687 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go @@ -0,0 +1,439 @@ +// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/sys/syscall.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && darwin + +package unix + +// Deprecated: Use libSystem wrappers instead of direct syscalls. +const ( + SYS_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAIT4 = 7 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_CHDIR = 12 + SYS_FCHDIR = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_CHOWN = 16 + SYS_GETFSSTAT = 18 + SYS_GETPID = 20 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_GETEUID = 25 + SYS_PTRACE = 26 + SYS_RECVMSG = 27 + SYS_SENDMSG = 28 + SYS_RECVFROM = 29 + SYS_ACCEPT = 30 + SYS_GETPEERNAME = 31 + SYS_GETSOCKNAME = 32 + SYS_ACCESS = 33 + SYS_CHFLAGS = 34 + SYS_FCHFLAGS = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_GETPPID = 39 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_GETEGID = 43 + SYS_SIGACTION = 46 + SYS_GETGID = 47 + SYS_SIGPROCMASK = 48 + SYS_GETLOGIN = 49 + SYS_SETLOGIN = 50 + SYS_ACCT = 51 + SYS_SIGPENDING = 52 + SYS_SIGALTSTACK = 53 + SYS_IOCTL = 54 + SYS_REBOOT = 55 + SYS_REVOKE = 56 + SYS_SYMLINK = 57 + SYS_READLINK = 58 + SYS_EXECVE = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_MSYNC = 65 + SYS_VFORK = 66 + SYS_MUNMAP = 73 + SYS_MPROTECT = 74 + SYS_MADVISE = 75 + SYS_MINCORE = 78 + SYS_GETGROUPS = 79 + SYS_SETGROUPS = 80 + SYS_GETPGRP = 81 + SYS_SETPGID = 82 + SYS_SETITIMER = 83 + SYS_SWAPON = 85 + SYS_GETITIMER = 86 + SYS_GETDTABLESIZE = 89 + SYS_DUP2 = 90 + SYS_FCNTL = 92 + SYS_SELECT = 93 + SYS_FSYNC = 95 + SYS_SETPRIORITY = 96 + SYS_SOCKET = 97 + SYS_CONNECT = 98 + SYS_GETPRIORITY = 100 + SYS_BIND = 104 + SYS_SETSOCKOPT = 105 + SYS_LISTEN = 106 + SYS_SIGSUSPEND = 111 + SYS_GETTIMEOFDAY = 116 + SYS_GETRUSAGE = 117 + SYS_GETSOCKOPT = 118 + SYS_READV = 120 + SYS_WRITEV = 121 + SYS_SETTIMEOFDAY = 122 + SYS_FCHOWN = 123 + SYS_FCHMOD = 124 + SYS_SETREUID = 126 + SYS_SETREGID = 127 + SYS_RENAME = 128 + SYS_FLOCK = 131 + SYS_MKFIFO = 132 + SYS_SENDTO = 133 + SYS_SHUTDOWN = 134 + SYS_SOCKETPAIR = 135 + SYS_MKDIR = 136 + SYS_RMDIR = 137 + SYS_UTIMES = 138 + SYS_FUTIMES = 139 + SYS_ADJTIME = 140 + SYS_GETHOSTUUID = 142 + SYS_SETSID = 147 + SYS_GETPGID = 151 + SYS_SETPRIVEXEC = 152 + SYS_PREAD = 153 + SYS_PWRITE = 154 + SYS_NFSSVC = 155 + SYS_STATFS = 157 + SYS_FSTATFS = 158 + SYS_UNMOUNT = 159 + SYS_GETFH = 161 + SYS_QUOTACTL = 165 + SYS_MOUNT = 167 + SYS_CSOPS = 169 + SYS_CSOPS_AUDITTOKEN = 170 + SYS_WAITID = 173 + SYS_KDEBUG_TYPEFILTER = 177 + SYS_KDEBUG_TRACE_STRING = 178 + SYS_KDEBUG_TRACE64 = 179 + SYS_KDEBUG_TRACE = 180 + SYS_SETGID = 181 + SYS_SETEGID = 182 + SYS_SETEUID = 183 + SYS_SIGRETURN = 184 + SYS_THREAD_SELFCOUNTS = 186 + SYS_FDATASYNC = 187 + SYS_STAT = 188 + SYS_FSTAT = 189 + SYS_LSTAT = 190 + SYS_PATHCONF = 191 + SYS_FPATHCONF = 192 + SYS_GETRLIMIT = 194 + SYS_SETRLIMIT = 195 + SYS_GETDIRENTRIES = 196 + SYS_MMAP = 197 + SYS_LSEEK = 199 + SYS_TRUNCATE = 200 + SYS_FTRUNCATE = 201 + SYS_SYSCTL = 202 + SYS_MLOCK = 203 + SYS_MUNLOCK = 204 + SYS_UNDELETE = 205 + SYS_OPEN_DPROTECTED_NP = 216 + SYS_GETATTRLIST = 220 + SYS_SETATTRLIST = 221 + SYS_GETDIRENTRIESATTR = 222 + SYS_EXCHANGEDATA = 223 + SYS_SEARCHFS = 225 + SYS_DELETE = 226 + SYS_COPYFILE = 227 + SYS_FGETATTRLIST = 228 + SYS_FSETATTRLIST = 229 + SYS_POLL = 230 + SYS_WATCHEVENT = 231 + SYS_WAITEVENT = 232 + SYS_MODWATCH = 233 + SYS_GETXATTR = 234 + SYS_FGETXATTR = 235 + SYS_SETXATTR = 236 + SYS_FSETXATTR = 237 + SYS_REMOVEXATTR = 238 + SYS_FREMOVEXATTR = 239 + SYS_LISTXATTR = 240 + SYS_FLISTXATTR = 241 + SYS_FSCTL = 242 + SYS_INITGROUPS = 243 + SYS_POSIX_SPAWN = 244 + SYS_FFSCTL = 245 + SYS_NFSCLNT = 247 + SYS_FHOPEN = 248 + SYS_MINHERIT = 250 + SYS_SEMSYS = 251 + SYS_MSGSYS = 252 + SYS_SHMSYS = 253 + SYS_SEMCTL = 254 + SYS_SEMGET = 255 + SYS_SEMOP = 256 + SYS_MSGCTL = 258 + SYS_MSGGET = 259 + SYS_MSGSND = 260 + SYS_MSGRCV = 261 + SYS_SHMAT = 262 + SYS_SHMCTL = 263 + SYS_SHMDT = 264 + SYS_SHMGET = 265 + SYS_SHM_OPEN = 266 + SYS_SHM_UNLINK = 267 + SYS_SEM_OPEN = 268 + SYS_SEM_CLOSE = 269 + SYS_SEM_UNLINK = 270 + SYS_SEM_WAIT = 271 + SYS_SEM_TRYWAIT = 272 + SYS_SEM_POST = 273 + SYS_SYSCTLBYNAME = 274 + SYS_OPEN_EXTENDED = 277 + SYS_UMASK_EXTENDED = 278 + SYS_STAT_EXTENDED = 279 + SYS_LSTAT_EXTENDED = 280 + SYS_FSTAT_EXTENDED = 281 + SYS_CHMOD_EXTENDED = 282 + SYS_FCHMOD_EXTENDED = 283 + SYS_ACCESS_EXTENDED = 284 + SYS_SETTID = 285 + SYS_GETTID = 286 + SYS_SETSGROUPS = 287 + SYS_GETSGROUPS = 288 + SYS_SETWGROUPS = 289 + SYS_GETWGROUPS = 290 + SYS_MKFIFO_EXTENDED = 291 + SYS_MKDIR_EXTENDED = 292 + SYS_IDENTITYSVC = 293 + SYS_SHARED_REGION_CHECK_NP = 294 + SYS_VM_PRESSURE_MONITOR = 296 + SYS_PSYNCH_RW_LONGRDLOCK = 297 + SYS_PSYNCH_RW_YIELDWRLOCK = 298 + SYS_PSYNCH_RW_DOWNGRADE = 299 + SYS_PSYNCH_RW_UPGRADE = 300 + SYS_PSYNCH_MUTEXWAIT = 301 + SYS_PSYNCH_MUTEXDROP = 302 + SYS_PSYNCH_CVBROAD = 303 + SYS_PSYNCH_CVSIGNAL = 304 + SYS_PSYNCH_CVWAIT = 305 + SYS_PSYNCH_RW_RDLOCK = 306 + SYS_PSYNCH_RW_WRLOCK = 307 + SYS_PSYNCH_RW_UNLOCK = 308 + SYS_PSYNCH_RW_UNLOCK2 = 309 + SYS_GETSID = 310 + SYS_SETTID_WITH_PID = 311 + SYS_PSYNCH_CVCLRPREPOST = 312 + SYS_AIO_FSYNC = 313 + SYS_AIO_RETURN = 314 + SYS_AIO_SUSPEND = 315 + SYS_AIO_CANCEL = 316 + SYS_AIO_ERROR = 317 + SYS_AIO_READ = 318 + SYS_AIO_WRITE = 319 + SYS_LIO_LISTIO = 320 + SYS_IOPOLICYSYS = 322 + SYS_PROCESS_POLICY = 323 + SYS_MLOCKALL = 324 + SYS_MUNLOCKALL = 325 + SYS_ISSETUGID = 327 + SYS___PTHREAD_KILL = 328 + SYS___PTHREAD_SIGMASK = 329 + SYS___SIGWAIT = 330 + SYS___DISABLE_THREADSIGNAL = 331 + SYS___PTHREAD_MARKCANCEL = 332 + SYS___PTHREAD_CANCELED = 333 + SYS___SEMWAIT_SIGNAL = 334 + SYS_PROC_INFO = 336 + SYS_SENDFILE = 337 + SYS_STAT64 = 338 + SYS_FSTAT64 = 339 + SYS_LSTAT64 = 340 + SYS_STAT64_EXTENDED = 341 + SYS_LSTAT64_EXTENDED = 342 + SYS_FSTAT64_EXTENDED = 343 + SYS_GETDIRENTRIES64 = 344 + SYS_STATFS64 = 345 + SYS_FSTATFS64 = 346 + SYS_GETFSSTAT64 = 347 + SYS___PTHREAD_CHDIR = 348 + SYS___PTHREAD_FCHDIR = 349 + SYS_AUDIT = 350 + SYS_AUDITON = 351 + SYS_GETAUID = 353 + SYS_SETAUID = 354 + SYS_GETAUDIT_ADDR = 357 + SYS_SETAUDIT_ADDR = 358 + SYS_AUDITCTL = 359 + SYS_BSDTHREAD_CREATE = 360 + SYS_BSDTHREAD_TERMINATE = 361 + SYS_KQUEUE = 362 + SYS_KEVENT = 363 + SYS_LCHOWN = 364 + SYS_BSDTHREAD_REGISTER = 366 + SYS_WORKQ_OPEN = 367 + SYS_WORKQ_KERNRETURN = 368 + SYS_KEVENT64 = 369 + SYS___OLD_SEMWAIT_SIGNAL = 370 + SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL = 371 + SYS_THREAD_SELFID = 372 + SYS_LEDGER = 373 + SYS_KEVENT_QOS = 374 + SYS_KEVENT_ID = 375 + SYS___MAC_EXECVE = 380 + SYS___MAC_SYSCALL = 381 + SYS___MAC_GET_FILE = 382 + SYS___MAC_SET_FILE = 383 + SYS___MAC_GET_LINK = 384 + SYS___MAC_SET_LINK = 385 + SYS___MAC_GET_PROC = 386 + SYS___MAC_SET_PROC = 387 + SYS___MAC_GET_FD = 388 + SYS___MAC_SET_FD = 389 + SYS___MAC_GET_PID = 390 + SYS_PSELECT = 394 + SYS_PSELECT_NOCANCEL = 395 + SYS_READ_NOCANCEL = 396 + SYS_WRITE_NOCANCEL = 397 + SYS_OPEN_NOCANCEL = 398 + SYS_CLOSE_NOCANCEL = 399 + SYS_WAIT4_NOCANCEL = 400 + SYS_RECVMSG_NOCANCEL = 401 + SYS_SENDMSG_NOCANCEL = 402 + SYS_RECVFROM_NOCANCEL = 403 + SYS_ACCEPT_NOCANCEL = 404 + SYS_MSYNC_NOCANCEL = 405 + SYS_FCNTL_NOCANCEL = 406 + SYS_SELECT_NOCANCEL = 407 + SYS_FSYNC_NOCANCEL = 408 + SYS_CONNECT_NOCANCEL = 409 + SYS_SIGSUSPEND_NOCANCEL = 410 + SYS_READV_NOCANCEL = 411 + SYS_WRITEV_NOCANCEL = 412 + SYS_SENDTO_NOCANCEL = 413 + SYS_PREAD_NOCANCEL = 414 + SYS_PWRITE_NOCANCEL = 415 + SYS_WAITID_NOCANCEL = 416 + SYS_POLL_NOCANCEL = 417 + SYS_MSGSND_NOCANCEL = 418 + SYS_MSGRCV_NOCANCEL = 419 + SYS_SEM_WAIT_NOCANCEL = 420 + SYS_AIO_SUSPEND_NOCANCEL = 421 + SYS___SIGWAIT_NOCANCEL = 422 + SYS___SEMWAIT_SIGNAL_NOCANCEL = 423 + SYS___MAC_MOUNT = 424 + SYS___MAC_GET_MOUNT = 425 + SYS___MAC_GETFSSTAT = 426 + SYS_FSGETPATH = 427 + SYS_AUDIT_SESSION_SELF = 428 + SYS_AUDIT_SESSION_JOIN = 429 + SYS_FILEPORT_MAKEPORT = 430 + SYS_FILEPORT_MAKEFD = 431 + SYS_AUDIT_SESSION_PORT = 432 + SYS_PID_SUSPEND = 433 + SYS_PID_RESUME = 434 + SYS_PID_HIBERNATE = 435 + SYS_PID_SHUTDOWN_SOCKETS = 436 + SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438 + SYS_KAS_INFO = 439 + SYS_MEMORYSTATUS_CONTROL = 440 + SYS_GUARDED_OPEN_NP = 441 + SYS_GUARDED_CLOSE_NP = 442 + SYS_GUARDED_KQUEUE_NP = 443 + SYS_CHANGE_FDGUARD_NP = 444 + SYS_USRCTL = 445 + SYS_PROC_RLIMIT_CONTROL = 446 + SYS_CONNECTX = 447 + SYS_DISCONNECTX = 448 + SYS_PEELOFF = 449 + SYS_SOCKET_DELEGATE = 450 + SYS_TELEMETRY = 451 + SYS_PROC_UUID_POLICY = 452 + SYS_MEMORYSTATUS_GET_LEVEL = 453 + SYS_SYSTEM_OVERRIDE = 454 + SYS_VFS_PURGE = 455 + SYS_SFI_CTL = 456 + SYS_SFI_PIDCTL = 457 + SYS_COALITION = 458 + SYS_COALITION_INFO = 459 + SYS_NECP_MATCH_POLICY = 460 + SYS_GETATTRLISTBULK = 461 + SYS_CLONEFILEAT = 462 + SYS_OPENAT = 463 + SYS_OPENAT_NOCANCEL = 464 + SYS_RENAMEAT = 465 + SYS_FACCESSAT = 466 + SYS_FCHMODAT = 467 + SYS_FCHOWNAT = 468 + SYS_FSTATAT = 469 + SYS_FSTATAT64 = 470 + SYS_LINKAT = 471 + SYS_UNLINKAT = 472 + SYS_READLINKAT = 473 + SYS_SYMLINKAT = 474 + SYS_MKDIRAT = 475 + SYS_GETATTRLISTAT = 476 + SYS_PROC_TRACE_LOG = 477 + SYS_BSDTHREAD_CTL = 478 + SYS_OPENBYID_NP = 479 + SYS_RECVMSG_X = 480 + SYS_SENDMSG_X = 481 + SYS_THREAD_SELFUSAGE = 482 + SYS_CSRCTL = 483 + SYS_GUARDED_OPEN_DPROTECTED_NP = 484 + SYS_GUARDED_WRITE_NP = 485 + SYS_GUARDED_PWRITE_NP = 486 + SYS_GUARDED_WRITEV_NP = 487 + SYS_RENAMEATX_NP = 488 + SYS_MREMAP_ENCRYPTED = 489 + SYS_NETAGENT_TRIGGER = 490 + SYS_STACK_SNAPSHOT_WITH_CONFIG = 491 + SYS_MICROSTACKSHOT = 492 + SYS_GRAB_PGO_DATA = 493 + SYS_PERSONA = 494 + SYS_WORK_INTERVAL_CTL = 499 + SYS_GETENTROPY = 500 + SYS_NECP_OPEN = 501 + SYS_NECP_CLIENT_ACTION = 502 + SYS___NEXUS_OPEN = 503 + SYS___NEXUS_REGISTER = 504 + SYS___NEXUS_DEREGISTER = 505 + SYS___NEXUS_CREATE = 506 + SYS___NEXUS_DESTROY = 507 + SYS___NEXUS_GET_OPT = 508 + SYS___NEXUS_SET_OPT = 509 + SYS___CHANNEL_OPEN = 510 + SYS___CHANNEL_GET_INFO = 511 + SYS___CHANNEL_SYNC = 512 + SYS___CHANNEL_GET_OPT = 513 + SYS___CHANNEL_SET_OPT = 514 + SYS_ULOCK_WAIT = 515 + SYS_ULOCK_WAKE = 516 + SYS_FCLONEFILEAT = 517 + SYS_FS_SNAPSHOT = 518 + SYS_TERMINATE_WITH_PAYLOAD = 520 + SYS_ABORT_WITH_PAYLOAD = 521 + SYS_NECP_SESSION_OPEN = 522 + SYS_NECP_SESSION_ACTION = 523 + SYS_SETATTRLISTAT = 524 + SYS_NET_QOS_GUIDELINE = 525 + SYS_FMOUNT = 526 + SYS_NTP_ADJTIME = 527 + SYS_NTP_GETTIME = 528 + SYS_OS_FAULT_WITH_PAYLOAD = 529 + SYS_KQUEUE_WORKLOOP_CTL = 530 + SYS___MACH_BRIDGE_REMOTE_TIME = 531 + SYS_MAXSYSCALL = 532 + SYS_INVALID = 63 +) diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go new file mode 100644 index 000000000..0dc9e8b4d --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go @@ -0,0 +1,437 @@ +// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.sdk/usr/include/sys/syscall.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm64 && darwin + +package unix + +// Deprecated: Use libSystem wrappers instead of direct syscalls. +const ( + SYS_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAIT4 = 7 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_CHDIR = 12 + SYS_FCHDIR = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_CHOWN = 16 + SYS_GETFSSTAT = 18 + SYS_GETPID = 20 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_GETEUID = 25 + SYS_PTRACE = 26 + SYS_RECVMSG = 27 + SYS_SENDMSG = 28 + SYS_RECVFROM = 29 + SYS_ACCEPT = 30 + SYS_GETPEERNAME = 31 + SYS_GETSOCKNAME = 32 + SYS_ACCESS = 33 + SYS_CHFLAGS = 34 + SYS_FCHFLAGS = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_GETPPID = 39 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_GETEGID = 43 + SYS_SIGACTION = 46 + SYS_GETGID = 47 + SYS_SIGPROCMASK = 48 + SYS_GETLOGIN = 49 + SYS_SETLOGIN = 50 + SYS_ACCT = 51 + SYS_SIGPENDING = 52 + SYS_SIGALTSTACK = 53 + SYS_IOCTL = 54 + SYS_REBOOT = 55 + SYS_REVOKE = 56 + SYS_SYMLINK = 57 + SYS_READLINK = 58 + SYS_EXECVE = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_MSYNC = 65 + SYS_VFORK = 66 + SYS_MUNMAP = 73 + SYS_MPROTECT = 74 + SYS_MADVISE = 75 + SYS_MINCORE = 78 + SYS_GETGROUPS = 79 + SYS_SETGROUPS = 80 + SYS_GETPGRP = 81 + SYS_SETPGID = 82 + SYS_SETITIMER = 83 + SYS_SWAPON = 85 + SYS_GETITIMER = 86 + SYS_GETDTABLESIZE = 89 + SYS_DUP2 = 90 + SYS_FCNTL = 92 + SYS_SELECT = 93 + SYS_FSYNC = 95 + SYS_SETPRIORITY = 96 + SYS_SOCKET = 97 + SYS_CONNECT = 98 + SYS_GETPRIORITY = 100 + SYS_BIND = 104 + SYS_SETSOCKOPT = 105 + SYS_LISTEN = 106 + SYS_SIGSUSPEND = 111 + SYS_GETTIMEOFDAY = 116 + SYS_GETRUSAGE = 117 + SYS_GETSOCKOPT = 118 + SYS_READV = 120 + SYS_WRITEV = 121 + SYS_SETTIMEOFDAY = 122 + SYS_FCHOWN = 123 + SYS_FCHMOD = 124 + SYS_SETREUID = 126 + SYS_SETREGID = 127 + SYS_RENAME = 128 + SYS_FLOCK = 131 + SYS_MKFIFO = 132 + SYS_SENDTO = 133 + SYS_SHUTDOWN = 134 + SYS_SOCKETPAIR = 135 + SYS_MKDIR = 136 + SYS_RMDIR = 137 + SYS_UTIMES = 138 + SYS_FUTIMES = 139 + SYS_ADJTIME = 140 + SYS_GETHOSTUUID = 142 + SYS_SETSID = 147 + SYS_GETPGID = 151 + SYS_SETPRIVEXEC = 152 + SYS_PREAD = 153 + SYS_PWRITE = 154 + SYS_NFSSVC = 155 + SYS_STATFS = 157 + SYS_FSTATFS = 158 + SYS_UNMOUNT = 159 + SYS_GETFH = 161 + SYS_QUOTACTL = 165 + SYS_MOUNT = 167 + SYS_CSOPS = 169 + SYS_CSOPS_AUDITTOKEN = 170 + SYS_WAITID = 173 + SYS_KDEBUG_TYPEFILTER = 177 + SYS_KDEBUG_TRACE_STRING = 178 + SYS_KDEBUG_TRACE64 = 179 + SYS_KDEBUG_TRACE = 180 + SYS_SETGID = 181 + SYS_SETEGID = 182 + SYS_SETEUID = 183 + SYS_SIGRETURN = 184 + SYS_THREAD_SELFCOUNTS = 186 + SYS_FDATASYNC = 187 + SYS_STAT = 188 + SYS_FSTAT = 189 + SYS_LSTAT = 190 + SYS_PATHCONF = 191 + SYS_FPATHCONF = 192 + SYS_GETRLIMIT = 194 + SYS_SETRLIMIT = 195 + SYS_GETDIRENTRIES = 196 + SYS_MMAP = 197 + SYS_LSEEK = 199 + SYS_TRUNCATE = 200 + SYS_FTRUNCATE = 201 + SYS_SYSCTL = 202 + SYS_MLOCK = 203 + SYS_MUNLOCK = 204 + SYS_UNDELETE = 205 + SYS_OPEN_DPROTECTED_NP = 216 + SYS_GETATTRLIST = 220 + SYS_SETATTRLIST = 221 + SYS_GETDIRENTRIESATTR = 222 + SYS_EXCHANGEDATA = 223 + SYS_SEARCHFS = 225 + SYS_DELETE = 226 + SYS_COPYFILE = 227 + SYS_FGETATTRLIST = 228 + SYS_FSETATTRLIST = 229 + SYS_POLL = 230 + SYS_WATCHEVENT = 231 + SYS_WAITEVENT = 232 + SYS_MODWATCH = 233 + SYS_GETXATTR = 234 + SYS_FGETXATTR = 235 + SYS_SETXATTR = 236 + SYS_FSETXATTR = 237 + SYS_REMOVEXATTR = 238 + SYS_FREMOVEXATTR = 239 + SYS_LISTXATTR = 240 + SYS_FLISTXATTR = 241 + SYS_FSCTL = 242 + SYS_INITGROUPS = 243 + SYS_POSIX_SPAWN = 244 + SYS_FFSCTL = 245 + SYS_NFSCLNT = 247 + SYS_FHOPEN = 248 + SYS_MINHERIT = 250 + SYS_SEMSYS = 251 + SYS_MSGSYS = 252 + SYS_SHMSYS = 253 + SYS_SEMCTL = 254 + SYS_SEMGET = 255 + SYS_SEMOP = 256 + SYS_MSGCTL = 258 + SYS_MSGGET = 259 + SYS_MSGSND = 260 + SYS_MSGRCV = 261 + SYS_SHMAT = 262 + SYS_SHMCTL = 263 + SYS_SHMDT = 264 + SYS_SHMGET = 265 + SYS_SHM_OPEN = 266 + SYS_SHM_UNLINK = 267 + SYS_SEM_OPEN = 268 + SYS_SEM_CLOSE = 269 + SYS_SEM_UNLINK = 270 + SYS_SEM_WAIT = 271 + SYS_SEM_TRYWAIT = 272 + SYS_SEM_POST = 273 + SYS_SYSCTLBYNAME = 274 + SYS_OPEN_EXTENDED = 277 + SYS_UMASK_EXTENDED = 278 + SYS_STAT_EXTENDED = 279 + SYS_LSTAT_EXTENDED = 280 + SYS_FSTAT_EXTENDED = 281 + SYS_CHMOD_EXTENDED = 282 + SYS_FCHMOD_EXTENDED = 283 + SYS_ACCESS_EXTENDED = 284 + SYS_SETTID = 285 + SYS_GETTID = 286 + SYS_SETSGROUPS = 287 + SYS_GETSGROUPS = 288 + SYS_SETWGROUPS = 289 + SYS_GETWGROUPS = 290 + SYS_MKFIFO_EXTENDED = 291 + SYS_MKDIR_EXTENDED = 292 + SYS_IDENTITYSVC = 293 + SYS_SHARED_REGION_CHECK_NP = 294 + SYS_VM_PRESSURE_MONITOR = 296 + SYS_PSYNCH_RW_LONGRDLOCK = 297 + SYS_PSYNCH_RW_YIELDWRLOCK = 298 + SYS_PSYNCH_RW_DOWNGRADE = 299 + SYS_PSYNCH_RW_UPGRADE = 300 + SYS_PSYNCH_MUTEXWAIT = 301 + SYS_PSYNCH_MUTEXDROP = 302 + SYS_PSYNCH_CVBROAD = 303 + SYS_PSYNCH_CVSIGNAL = 304 + SYS_PSYNCH_CVWAIT = 305 + SYS_PSYNCH_RW_RDLOCK = 306 + SYS_PSYNCH_RW_WRLOCK = 307 + SYS_PSYNCH_RW_UNLOCK = 308 + SYS_PSYNCH_RW_UNLOCK2 = 309 + SYS_GETSID = 310 + SYS_SETTID_WITH_PID = 311 + SYS_PSYNCH_CVCLRPREPOST = 312 + SYS_AIO_FSYNC = 313 + SYS_AIO_RETURN = 314 + SYS_AIO_SUSPEND = 315 + SYS_AIO_CANCEL = 316 + SYS_AIO_ERROR = 317 + SYS_AIO_READ = 318 + SYS_AIO_WRITE = 319 + SYS_LIO_LISTIO = 320 + SYS_IOPOLICYSYS = 322 + SYS_PROCESS_POLICY = 323 + SYS_MLOCKALL = 324 + SYS_MUNLOCKALL = 325 + SYS_ISSETUGID = 327 + SYS___PTHREAD_KILL = 328 + SYS___PTHREAD_SIGMASK = 329 + SYS___SIGWAIT = 330 + SYS___DISABLE_THREADSIGNAL = 331 + SYS___PTHREAD_MARKCANCEL = 332 + SYS___PTHREAD_CANCELED = 333 + SYS___SEMWAIT_SIGNAL = 334 + SYS_PROC_INFO = 336 + SYS_SENDFILE = 337 + SYS_STAT64 = 338 + SYS_FSTAT64 = 339 + SYS_LSTAT64 = 340 + SYS_STAT64_EXTENDED = 341 + SYS_LSTAT64_EXTENDED = 342 + SYS_FSTAT64_EXTENDED = 343 + SYS_GETDIRENTRIES64 = 344 + SYS_STATFS64 = 345 + SYS_FSTATFS64 = 346 + SYS_GETFSSTAT64 = 347 + SYS___PTHREAD_CHDIR = 348 + SYS___PTHREAD_FCHDIR = 349 + SYS_AUDIT = 350 + SYS_AUDITON = 351 + SYS_GETAUID = 353 + SYS_SETAUID = 354 + SYS_GETAUDIT_ADDR = 357 + SYS_SETAUDIT_ADDR = 358 + SYS_AUDITCTL = 359 + SYS_BSDTHREAD_CREATE = 360 + SYS_BSDTHREAD_TERMINATE = 361 + SYS_KQUEUE = 362 + SYS_KEVENT = 363 + SYS_LCHOWN = 364 + SYS_BSDTHREAD_REGISTER = 366 + SYS_WORKQ_OPEN = 367 + SYS_WORKQ_KERNRETURN = 368 + SYS_KEVENT64 = 369 + SYS___OLD_SEMWAIT_SIGNAL = 370 + SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL = 371 + SYS_THREAD_SELFID = 372 + SYS_LEDGER = 373 + SYS_KEVENT_QOS = 374 + SYS_KEVENT_ID = 375 + SYS___MAC_EXECVE = 380 + SYS___MAC_SYSCALL = 381 + SYS___MAC_GET_FILE = 382 + SYS___MAC_SET_FILE = 383 + SYS___MAC_GET_LINK = 384 + SYS___MAC_SET_LINK = 385 + SYS___MAC_GET_PROC = 386 + SYS___MAC_SET_PROC = 387 + SYS___MAC_GET_FD = 388 + SYS___MAC_SET_FD = 389 + SYS___MAC_GET_PID = 390 + SYS_PSELECT = 394 + SYS_PSELECT_NOCANCEL = 395 + SYS_READ_NOCANCEL = 396 + SYS_WRITE_NOCANCEL = 397 + SYS_OPEN_NOCANCEL = 398 + SYS_CLOSE_NOCANCEL = 399 + SYS_WAIT4_NOCANCEL = 400 + SYS_RECVMSG_NOCANCEL = 401 + SYS_SENDMSG_NOCANCEL = 402 + SYS_RECVFROM_NOCANCEL = 403 + SYS_ACCEPT_NOCANCEL = 404 + SYS_MSYNC_NOCANCEL = 405 + SYS_FCNTL_NOCANCEL = 406 + SYS_SELECT_NOCANCEL = 407 + SYS_FSYNC_NOCANCEL = 408 + SYS_CONNECT_NOCANCEL = 409 + SYS_SIGSUSPEND_NOCANCEL = 410 + SYS_READV_NOCANCEL = 411 + SYS_WRITEV_NOCANCEL = 412 + SYS_SENDTO_NOCANCEL = 413 + SYS_PREAD_NOCANCEL = 414 + SYS_PWRITE_NOCANCEL = 415 + SYS_WAITID_NOCANCEL = 416 + SYS_POLL_NOCANCEL = 417 + SYS_MSGSND_NOCANCEL = 418 + SYS_MSGRCV_NOCANCEL = 419 + SYS_SEM_WAIT_NOCANCEL = 420 + SYS_AIO_SUSPEND_NOCANCEL = 421 + SYS___SIGWAIT_NOCANCEL = 422 + SYS___SEMWAIT_SIGNAL_NOCANCEL = 423 + SYS___MAC_MOUNT = 424 + SYS___MAC_GET_MOUNT = 425 + SYS___MAC_GETFSSTAT = 426 + SYS_FSGETPATH = 427 + SYS_AUDIT_SESSION_SELF = 428 + SYS_AUDIT_SESSION_JOIN = 429 + SYS_FILEPORT_MAKEPORT = 430 + SYS_FILEPORT_MAKEFD = 431 + SYS_AUDIT_SESSION_PORT = 432 + SYS_PID_SUSPEND = 433 + SYS_PID_RESUME = 434 + SYS_PID_HIBERNATE = 435 + SYS_PID_SHUTDOWN_SOCKETS = 436 + SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438 + SYS_KAS_INFO = 439 + SYS_MEMORYSTATUS_CONTROL = 440 + SYS_GUARDED_OPEN_NP = 441 + SYS_GUARDED_CLOSE_NP = 442 + SYS_GUARDED_KQUEUE_NP = 443 + SYS_CHANGE_FDGUARD_NP = 444 + SYS_USRCTL = 445 + SYS_PROC_RLIMIT_CONTROL = 446 + SYS_CONNECTX = 447 + SYS_DISCONNECTX = 448 + SYS_PEELOFF = 449 + SYS_SOCKET_DELEGATE = 450 + SYS_TELEMETRY = 451 + SYS_PROC_UUID_POLICY = 452 + SYS_MEMORYSTATUS_GET_LEVEL = 453 + SYS_SYSTEM_OVERRIDE = 454 + SYS_VFS_PURGE = 455 + SYS_SFI_CTL = 456 + SYS_SFI_PIDCTL = 457 + SYS_COALITION = 458 + SYS_COALITION_INFO = 459 + SYS_NECP_MATCH_POLICY = 460 + SYS_GETATTRLISTBULK = 461 + SYS_CLONEFILEAT = 462 + SYS_OPENAT = 463 + SYS_OPENAT_NOCANCEL = 464 + SYS_RENAMEAT = 465 + SYS_FACCESSAT = 466 + SYS_FCHMODAT = 467 + SYS_FCHOWNAT = 468 + SYS_FSTATAT = 469 + SYS_FSTATAT64 = 470 + SYS_LINKAT = 471 + SYS_UNLINKAT = 472 + SYS_READLINKAT = 473 + SYS_SYMLINKAT = 474 + SYS_MKDIRAT = 475 + SYS_GETATTRLISTAT = 476 + SYS_PROC_TRACE_LOG = 477 + SYS_BSDTHREAD_CTL = 478 + SYS_OPENBYID_NP = 479 + SYS_RECVMSG_X = 480 + SYS_SENDMSG_X = 481 + SYS_THREAD_SELFUSAGE = 482 + SYS_CSRCTL = 483 + SYS_GUARDED_OPEN_DPROTECTED_NP = 484 + SYS_GUARDED_WRITE_NP = 485 + SYS_GUARDED_PWRITE_NP = 486 + SYS_GUARDED_WRITEV_NP = 487 + SYS_RENAMEATX_NP = 488 + SYS_MREMAP_ENCRYPTED = 489 + SYS_NETAGENT_TRIGGER = 490 + SYS_STACK_SNAPSHOT_WITH_CONFIG = 491 + SYS_MICROSTACKSHOT = 492 + SYS_GRAB_PGO_DATA = 493 + SYS_PERSONA = 494 + SYS_WORK_INTERVAL_CTL = 499 + SYS_GETENTROPY = 500 + SYS_NECP_OPEN = 501 + SYS_NECP_CLIENT_ACTION = 502 + SYS___NEXUS_OPEN = 503 + SYS___NEXUS_REGISTER = 504 + SYS___NEXUS_DEREGISTER = 505 + SYS___NEXUS_CREATE = 506 + SYS___NEXUS_DESTROY = 507 + SYS___NEXUS_GET_OPT = 508 + SYS___NEXUS_SET_OPT = 509 + SYS___CHANNEL_OPEN = 510 + SYS___CHANNEL_GET_INFO = 511 + SYS___CHANNEL_SYNC = 512 + SYS___CHANNEL_GET_OPT = 513 + SYS___CHANNEL_SET_OPT = 514 + SYS_ULOCK_WAIT = 515 + SYS_ULOCK_WAKE = 516 + SYS_FCLONEFILEAT = 517 + SYS_FS_SNAPSHOT = 518 + SYS_TERMINATE_WITH_PAYLOAD = 520 + SYS_ABORT_WITH_PAYLOAD = 521 + SYS_NECP_SESSION_OPEN = 522 + SYS_NECP_SESSION_ACTION = 523 + SYS_SETATTRLISTAT = 524 + SYS_NET_QOS_GUIDELINE = 525 + SYS_FMOUNT = 526 + SYS_NTP_ADJTIME = 527 + SYS_NTP_GETTIME = 528 + SYS_OS_FAULT_WITH_PAYLOAD = 529 + SYS_MAXSYSCALL = 530 + SYS_INVALID = 63 +) diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go new file mode 100644 index 000000000..308ddf3a1 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go @@ -0,0 +1,316 @@ +// go run mksysnum.go https://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && dragonfly + +package unix + +const ( + SYS_EXIT = 1 // { void exit(int rval); } + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } wait4 wait_args int + // SYS_NOSYS = 8; // { int nosys(void); } __nosys nosys_args int + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_OBREAK = 17 // { int obreak(char *nsize); } break obreak_args int + SYS_GETFSSTAT = 18 // { int getfsstat(struct statfs *buf, long bufsize, int flags); } + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { int sendmsg(int s, caddr_t msg, int flags); } + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, caddr_t from, int *fromlenaddr); } + SYS_ACCEPT = 30 // { int accept(int s, caddr_t name, int *anamelen); } + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, caddr_t asa, int *alen); } + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, caddr_t asa, int *alen); } + SYS_ACCESS = 33 // { int access(char *path, int flags); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(int fd); } + SYS_PIPE = 42 // { int pipe(void); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, size_t namelen); } + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); } + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); } + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { int readlink(char *path, char *buf, int count); } + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } + SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args int + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } + SYS_VFORK = 66 // { pid_t vfork(void); } + SYS_SBRK = 69 // { caddr_t sbrk(size_t incr); } + SYS_SSTK = 70 // { int sstk(size_t incr); } + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); } + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); } + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); } + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(int from, int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); } + SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); } + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); } + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); } + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); } + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); } + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); } + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); } + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); } + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); } + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); } + SYS_STATFS = 157 // { int statfs(char *path, struct statfs *buf); } + SYS_FSTATFS = 158 // { int fstatfs(int fd, struct statfs *buf); } + SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); } + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); } + SYS_EXTPREAD = 173 // { ssize_t extpread(int fd, void *buf, size_t nbyte, int flags, off_t offset); } + SYS_EXTPWRITE = 174 // { ssize_t extpwrite(int fd, const void *buf, size_t nbyte, int flags, off_t offset); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int + SYS_MMAP = 197 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, int pad, off_t pos); } + SYS_LSEEK = 199 // { off_t lseek(int fd, int pad, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int truncate(char *path, int pad, off_t length); } + SYS_FTRUNCATE = 201 // { int ftruncate(int fd, int pad, off_t length); } + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS___SEMCTL = 220 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, u_int nsops); } + SYS_MSGCTL = 224 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { caddr_t shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMCTL = 229 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } + SYS_EXTPREADV = 289 // { ssize_t extpreadv(int fd, const struct iovec *iovp, int iovcnt, int flags, off_t offset); } + SYS_EXTPWRITEV = 290 // { ssize_t extpwritev(int fd, const struct iovec *iovp, int iovcnt, int flags, off_t offset); } + SYS_FHSTATFS = 297 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat* stat); } + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); } + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_AIO_RETURN = 314 // { int aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_AIO_READ = 318 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 319 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 320 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); } + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(u_char *buf, u_int buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); } + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); } + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); } + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGACTION = 342 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGRETURN = 344 // { int sigreturn(ucontext_t *sigcntxp); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set,siginfo_t *info, const struct timespec *timeout); } + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set,siginfo_t *info); } + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, acl_type_t type); } + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); } + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 356 // { int extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { int extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_AIO_WAITCOMPLETE = 359 // { int aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); } + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_KEVENT = 363 // { int kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); } + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, u_long flags); } + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } + SYS_VARSYM_SET = 450 // { int varsym_set(int level, const char *name, const char *data); } + SYS_VARSYM_GET = 451 // { int varsym_get(int mask, const char *wild, char *buf, int bufsize); } + SYS_VARSYM_LIST = 452 // { int varsym_list(int level, char *buf, int maxsize, int *marker); } + SYS_EXEC_SYS_REGISTER = 465 // { int exec_sys_register(void *entry); } + SYS_EXEC_SYS_UNREGISTER = 466 // { int exec_sys_unregister(int id); } + SYS_SYS_CHECKPOINT = 467 // { int sys_checkpoint(int type, int fd, pid_t pid, int retval); } + SYS_MOUNTCTL = 468 // { int mountctl(const char *path, int op, int fd, const void *ctl, int ctllen, void *buf, int buflen); } + SYS_UMTX_SLEEP = 469 // { int umtx_sleep(volatile const int *ptr, int value, int timeout); } + SYS_UMTX_WAKEUP = 470 // { int umtx_wakeup(volatile const int *ptr, int count); } + SYS_JAIL_ATTACH = 471 // { int jail_attach(int jid); } + SYS_SET_TLS_AREA = 472 // { int set_tls_area(int which, struct tls_info *info, size_t infosize); } + SYS_GET_TLS_AREA = 473 // { int get_tls_area(int which, struct tls_info *info, size_t infosize); } + SYS_CLOSEFROM = 474 // { int closefrom(int fd); } + SYS_STAT = 475 // { int stat(const char *path, struct stat *ub); } + SYS_FSTAT = 476 // { int fstat(int fd, struct stat *sb); } + SYS_LSTAT = 477 // { int lstat(const char *path, struct stat *ub); } + SYS_FHSTAT = 478 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } + SYS_GETDIRENTRIES = 479 // { int getdirentries(int fd, char *buf, u_int count, long *basep); } + SYS_GETDENTS = 480 // { int getdents(int fd, char *buf, size_t count); } + SYS_USCHED_SET = 481 // { int usched_set(pid_t pid, int cmd, void *data, int bytes); } + SYS_EXTACCEPT = 482 // { int extaccept(int s, int flags, caddr_t name, int *anamelen); } + SYS_EXTCONNECT = 483 // { int extconnect(int s, int flags, caddr_t name, int namelen); } + SYS_MCONTROL = 485 // { int mcontrol(void *addr, size_t len, int behav, off_t value); } + SYS_VMSPACE_CREATE = 486 // { int vmspace_create(void *id, int type, void *data); } + SYS_VMSPACE_DESTROY = 487 // { int vmspace_destroy(void *id); } + SYS_VMSPACE_CTL = 488 // { int vmspace_ctl(void *id, int cmd, struct trapframe *tframe, struct vextframe *vframe); } + SYS_VMSPACE_MMAP = 489 // { int vmspace_mmap(void *id, void *addr, size_t len, int prot, int flags, int fd, off_t offset); } + SYS_VMSPACE_MUNMAP = 490 // { int vmspace_munmap(void *id, void *addr, size_t len); } + SYS_VMSPACE_MCONTROL = 491 // { int vmspace_mcontrol(void *id, void *addr, size_t len, int behav, off_t value); } + SYS_VMSPACE_PREAD = 492 // { ssize_t vmspace_pread(void *id, void *buf, size_t nbyte, int flags, off_t offset); } + SYS_VMSPACE_PWRITE = 493 // { ssize_t vmspace_pwrite(void *id, const void *buf, size_t nbyte, int flags, off_t offset); } + SYS_EXTEXIT = 494 // { void extexit(int how, int status, void *addr); } + SYS_LWP_CREATE = 495 // { int lwp_create(struct lwp_params *params); } + SYS_LWP_GETTID = 496 // { lwpid_t lwp_gettid(void); } + SYS_LWP_KILL = 497 // { int lwp_kill(pid_t pid, lwpid_t tid, int signum); } + SYS_LWP_RTPRIO = 498 // { int lwp_rtprio(int function, pid_t pid, lwpid_t tid, struct rtprio *rtp); } + SYS_PSELECT = 499 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sigmask); } + SYS_STATVFS = 500 // { int statvfs(const char *path, struct statvfs *buf); } + SYS_FSTATVFS = 501 // { int fstatvfs(int fd, struct statvfs *buf); } + SYS_FHSTATVFS = 502 // { int fhstatvfs(const struct fhandle *u_fhp, struct statvfs *buf); } + SYS_GETVFSSTAT = 503 // { int getvfsstat(struct statfs *buf, struct statvfs *vbuf, long vbufsize, int flags); } + SYS_OPENAT = 504 // { int openat(int fd, char *path, int flags, int mode); } + SYS_FSTATAT = 505 // { int fstatat(int fd, char *path, struct stat *sb, int flags); } + SYS_FCHMODAT = 506 // { int fchmodat(int fd, char *path, int mode, int flags); } + SYS_FCHOWNAT = 507 // { int fchownat(int fd, char *path, int uid, int gid, int flags); } + SYS_UNLINKAT = 508 // { int unlinkat(int fd, char *path, int flags); } + SYS_FACCESSAT = 509 // { int faccessat(int fd, char *path, int amode, int flags); } + SYS_MQ_OPEN = 510 // { mqd_t mq_open(const char * name, int oflag, mode_t mode, struct mq_attr *attr); } + SYS_MQ_CLOSE = 511 // { int mq_close(mqd_t mqdes); } + SYS_MQ_UNLINK = 512 // { int mq_unlink(const char *name); } + SYS_MQ_GETATTR = 513 // { int mq_getattr(mqd_t mqdes, struct mq_attr *mqstat); } + SYS_MQ_SETATTR = 514 // { int mq_setattr(mqd_t mqdes, const struct mq_attr *mqstat, struct mq_attr *omqstat); } + SYS_MQ_NOTIFY = 515 // { int mq_notify(mqd_t mqdes, const struct sigevent *notification); } + SYS_MQ_SEND = 516 // { int mq_send(mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned msg_prio); } + SYS_MQ_RECEIVE = 517 // { ssize_t mq_receive(mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned *msg_prio); } + SYS_MQ_TIMEDSEND = 518 // { int mq_timedsend(mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); } + SYS_MQ_TIMEDRECEIVE = 519 // { ssize_t mq_timedreceive(mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_IOPRIO_SET = 520 // { int ioprio_set(int which, int who, int prio); } + SYS_IOPRIO_GET = 521 // { int ioprio_get(int which, int who); } + SYS_CHROOT_KERNEL = 522 // { int chroot_kernel(char *path); } + SYS_RENAMEAT = 523 // { int renameat(int oldfd, char *old, int newfd, char *new); } + SYS_MKDIRAT = 524 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 525 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_MKNODAT = 526 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_READLINKAT = 527 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_SYMLINKAT = 528 // { int symlinkat(char *path1, int fd, char *path2); } + SYS_SWAPOFF = 529 // { int swapoff(char *name); } + SYS_VQUOTACTL = 530 // { int vquotactl(const char *path, struct plistref *pref); } + SYS_LINKAT = 531 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flags); } + SYS_EACCESS = 532 // { int eaccess(char *path, int flags); } + SYS_LPATHCONF = 533 // { int lpathconf(char *path, int name); } + SYS_VMM_GUEST_CTL = 534 // { int vmm_guest_ctl(int op, struct vmm_guest_options *options); } + SYS_VMM_GUEST_SYNC_ADDR = 535 // { int vmm_guest_sync_addr(long *dstaddr, long *srcaddr); } + SYS_PROCCTL = 536 // { int procctl(idtype_t idtype, id_t id, int cmd, void *data); } + SYS_CHFLAGSAT = 537 // { int chflagsat(int fd, const char *path, u_long flags, int atflags);} + SYS_PIPE2 = 538 // { int pipe2(int *fildes, int flags); } + SYS_UTIMENSAT = 539 // { int utimensat(int fd, const char *path, const struct timespec *ts, int flags); } + SYS_FUTIMENS = 540 // { int futimens(int fd, const struct timespec *ts); } + SYS_ACCEPT4 = 541 // { int accept4(int s, caddr_t name, int *anamelen, int flags); } + SYS_LWP_SETNAME = 542 // { int lwp_setname(lwpid_t tid, const char *name); } + SYS_PPOLL = 543 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *sigmask); } + SYS_LWP_SETAFFINITY = 544 // { int lwp_setaffinity(pid_t pid, lwpid_t tid, const cpumask_t *mask); } + SYS_LWP_GETAFFINITY = 545 // { int lwp_getaffinity(pid_t pid, lwpid_t tid, cpumask_t *mask); } + SYS_LWP_CREATE2 = 546 // { int lwp_create2(struct lwp_params *params, const cpumask_t *mask); } + SYS_GETCPUCLOCKID = 547 // { int getcpuclockid(pid_t pid, lwpid_t lwp_id, clockid_t *clock_id); } + SYS_WAIT6 = 548 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); } + SYS_LWP_GETNAME = 549 // { int lwp_getname(lwpid_t tid, char *name, size_t len); } + SYS_GETRANDOM = 550 // { ssize_t getrandom(void *buf, size_t len, unsigned flags); } + SYS___REALPATH = 551 // { ssize_t __realpath(const char *path, char *buf, size_t len); } +) diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go new file mode 100644 index 000000000..418664e3d --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go @@ -0,0 +1,393 @@ +// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build 386 && freebsd + +package unix + +const ( + // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int + SYS_EXIT = 1 // { void sys_exit(int rval); } exit sys_exit_args void + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_BREAK = 17 // { caddr_t break(char *nsize); } + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); } + SYS_ACCEPT = 30 // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); } + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_ACCESS = 33 // { int access(char *path, int amode); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(u_int fd); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); } + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); } + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); } + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); } + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } + SYS_UMASK = 60 // { int umask(int newmask); } + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } + SYS_VFORK = 66 // { int vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); } + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); } + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); } + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); } + SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); } + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); } + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); } + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); } + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); } + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); } + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); } + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); } + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); } + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); } + SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); } + SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); } + SYS_LGETFH = 160 // { int lgetfh(char *fname, struct fhandle *fhp); } + SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); } + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); } + SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); } + SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); } + SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, int a4); } + SYS_SETFIB = 175 // { int setfib(int fibnum); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); } + SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); } + SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); } + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); } + SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); } + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); } + SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); } + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat* stat); } + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); } + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, size_t buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); } + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); } + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); } + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); } + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); } + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, acl_type_t type); } + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); } + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); } + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS___SETUGID = 374 // { int __setugid(int flag); } + SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } + SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); } + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); } + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); } + SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); } + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, u_long flags); } + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } + SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } + SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } + SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } + SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); } + SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, unsigned int value); } + SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); } + SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); } + SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); } + SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); } + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); } + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); } + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); } + SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } + SYS_SIGRETURN = 417 // { int sigreturn(const struct __ucontext *sigcntxp); } + SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext(const struct __ucontext *ucp); } + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); } + SYS_SWAPOFF = 424 // { int swapoff(const char *name); } + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, acl_type_t type); } + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, int *sig); } + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); } + SYS_THR_EXIT = 431 // { void thr_exit(long *state); } + SYS_THR_SELF = 432 // { int thr_self(long *id); } + SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } + SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); } + SYS_THR_SUSPEND = 442 // { int thr_suspend(const struct timespec *timeout); } + SYS_THR_WAKE = 443 // { int thr_wake(long id); } + SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } + SYS_AUDIT = 445 // { int audit(const void *record, u_int length); } + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, u_int length); } + SYS_GETAUID = 447 // { int getauid(uid_t *auid); } + SYS_SETAUID = 448 // { int setauid(uid_t *auid); } + SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } + SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_AUDITCTL = 453 // { int auditctl(char *path); } + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); } + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); } + SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } + SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); } + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } + SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } + SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } + SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } + SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); } + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); } + SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } + SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); } + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); } + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); } + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, int whence); } + SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } + SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } + SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, mode_t mode); } + SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } + SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); } + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); } + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); } + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); } + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, int flag); } + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); } + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); } + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); } + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); } + SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); } + SYS_READLINKAT = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); } + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); } + SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } + SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } + SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); } + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } + SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } + SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); } + SYS_CAP_ENTER = 516 // { int cap_enter(void); } + SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } + SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } + SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } + SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); } + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, size_t namelen); } + SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); } + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); } + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); } + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); } + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); } + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); } + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); } + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); } + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); } + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); } + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); } + SYS_ACCEPT4 = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); } + SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } + SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); } + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); } + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } + SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } + SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } + SYS_FDATASYNC = 550 // { int fdatasync(int fd); } + SYS_FSTAT = 551 // { int fstat(int fd, struct stat *sb); } + SYS_FSTATAT = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } + SYS_FHSTAT = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } + SYS_GETDIRENTRIES = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); } + SYS_STATFS = 555 // { int statfs(char *path, struct statfs *buf); } + SYS_FSTATFS = 556 // { int fstatfs(int fd, struct statfs *buf); } + SYS_GETFSSTAT = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } + SYS_FHSTATFS = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } + SYS_MKNODAT = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_KEVENT = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_CPUSET_GETDOMAIN = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); } + SYS_CPUSET_SETDOMAIN = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); } + SYS_GETRANDOM = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); } + SYS_GETFHAT = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); } + SYS_FHLINK = 565 // { int fhlink(struct fhandle *fhp, const char *to); } + SYS_FHLINKAT = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); } + SYS_FHREADLINK = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); } + SYS___SYSCTLBYNAME = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_CLOSE_RANGE = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); } +) diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go new file mode 100644 index 000000000..34d0b86d7 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go @@ -0,0 +1,393 @@ +// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && freebsd + +package unix + +const ( + // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int + SYS_EXIT = 1 // { void sys_exit(int rval); } exit sys_exit_args void + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_BREAK = 17 // { caddr_t break(char *nsize); } + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); } + SYS_ACCEPT = 30 // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); } + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_ACCESS = 33 // { int access(char *path, int amode); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(u_int fd); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); } + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); } + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); } + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); } + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } + SYS_UMASK = 60 // { int umask(int newmask); } + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } + SYS_VFORK = 66 // { int vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); } + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); } + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); } + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); } + SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); } + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); } + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); } + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); } + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); } + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); } + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); } + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); } + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); } + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); } + SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); } + SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); } + SYS_LGETFH = 160 // { int lgetfh(char *fname, struct fhandle *fhp); } + SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); } + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); } + SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); } + SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); } + SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, int a4); } + SYS_SETFIB = 175 // { int setfib(int fibnum); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); } + SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); } + SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); } + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); } + SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); } + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); } + SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); } + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat* stat); } + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); } + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, size_t buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); } + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); } + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); } + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); } + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); } + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, acl_type_t type); } + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); } + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); } + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS___SETUGID = 374 // { int __setugid(int flag); } + SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } + SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); } + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); } + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); } + SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); } + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, u_long flags); } + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } + SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } + SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } + SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } + SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); } + SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, unsigned int value); } + SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); } + SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); } + SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); } + SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); } + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); } + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); } + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); } + SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } + SYS_SIGRETURN = 417 // { int sigreturn(const struct __ucontext *sigcntxp); } + SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext(const struct __ucontext *ucp); } + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); } + SYS_SWAPOFF = 424 // { int swapoff(const char *name); } + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, acl_type_t type); } + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, int *sig); } + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); } + SYS_THR_EXIT = 431 // { void thr_exit(long *state); } + SYS_THR_SELF = 432 // { int thr_self(long *id); } + SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } + SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); } + SYS_THR_SUSPEND = 442 // { int thr_suspend(const struct timespec *timeout); } + SYS_THR_WAKE = 443 // { int thr_wake(long id); } + SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } + SYS_AUDIT = 445 // { int audit(const void *record, u_int length); } + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, u_int length); } + SYS_GETAUID = 447 // { int getauid(uid_t *auid); } + SYS_SETAUID = 448 // { int setauid(uid_t *auid); } + SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } + SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_AUDITCTL = 453 // { int auditctl(char *path); } + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); } + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); } + SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } + SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); } + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } + SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } + SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } + SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } + SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); } + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); } + SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } + SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); } + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); } + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); } + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, int whence); } + SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } + SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } + SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, mode_t mode); } + SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } + SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); } + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); } + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); } + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); } + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, int flag); } + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); } + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); } + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); } + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); } + SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); } + SYS_READLINKAT = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); } + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); } + SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } + SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } + SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); } + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } + SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } + SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); } + SYS_CAP_ENTER = 516 // { int cap_enter(void); } + SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } + SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } + SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } + SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); } + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, size_t namelen); } + SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); } + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); } + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); } + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); } + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); } + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); } + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); } + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); } + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); } + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); } + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); } + SYS_ACCEPT4 = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); } + SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } + SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); } + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); } + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } + SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } + SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } + SYS_FDATASYNC = 550 // { int fdatasync(int fd); } + SYS_FSTAT = 551 // { int fstat(int fd, struct stat *sb); } + SYS_FSTATAT = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } + SYS_FHSTAT = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } + SYS_GETDIRENTRIES = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); } + SYS_STATFS = 555 // { int statfs(char *path, struct statfs *buf); } + SYS_FSTATFS = 556 // { int fstatfs(int fd, struct statfs *buf); } + SYS_GETFSSTAT = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } + SYS_FHSTATFS = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } + SYS_MKNODAT = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_KEVENT = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_CPUSET_GETDOMAIN = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); } + SYS_CPUSET_SETDOMAIN = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); } + SYS_GETRANDOM = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); } + SYS_GETFHAT = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); } + SYS_FHLINK = 565 // { int fhlink(struct fhandle *fhp, const char *to); } + SYS_FHLINKAT = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); } + SYS_FHREADLINK = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); } + SYS___SYSCTLBYNAME = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_CLOSE_RANGE = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); } +) diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go new file mode 100644 index 000000000..b71cf45e2 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go @@ -0,0 +1,393 @@ +// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm && freebsd + +package unix + +const ( + // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int + SYS_EXIT = 1 // { void sys_exit(int rval); } exit sys_exit_args void + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_BREAK = 17 // { caddr_t break(char *nsize); } + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); } + SYS_ACCEPT = 30 // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); } + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_ACCESS = 33 // { int access(char *path, int amode); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(u_int fd); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); } + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); } + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); } + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); } + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } + SYS_UMASK = 60 // { int umask(int newmask); } + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } + SYS_VFORK = 66 // { int vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); } + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); } + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); } + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); } + SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); } + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); } + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); } + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); } + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); } + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); } + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); } + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); } + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); } + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); } + SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); } + SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); } + SYS_LGETFH = 160 // { int lgetfh(char *fname, struct fhandle *fhp); } + SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); } + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); } + SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); } + SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); } + SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, int a4); } + SYS_SETFIB = 175 // { int setfib(int fibnum); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); } + SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); } + SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); } + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); } + SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); } + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); } + SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); } + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat* stat); } + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); } + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, size_t buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); } + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); } + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); } + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); } + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); } + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, acl_type_t type); } + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); } + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); } + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS___SETUGID = 374 // { int __setugid(int flag); } + SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } + SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); } + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); } + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); } + SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); } + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, u_long flags); } + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } + SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } + SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } + SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } + SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); } + SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, unsigned int value); } + SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); } + SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); } + SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); } + SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); } + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); } + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); } + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); } + SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } + SYS_SIGRETURN = 417 // { int sigreturn(const struct __ucontext *sigcntxp); } + SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext(const struct __ucontext *ucp); } + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); } + SYS_SWAPOFF = 424 // { int swapoff(const char *name); } + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, acl_type_t type); } + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, int *sig); } + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); } + SYS_THR_EXIT = 431 // { void thr_exit(long *state); } + SYS_THR_SELF = 432 // { int thr_self(long *id); } + SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } + SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); } + SYS_THR_SUSPEND = 442 // { int thr_suspend(const struct timespec *timeout); } + SYS_THR_WAKE = 443 // { int thr_wake(long id); } + SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } + SYS_AUDIT = 445 // { int audit(const void *record, u_int length); } + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, u_int length); } + SYS_GETAUID = 447 // { int getauid(uid_t *auid); } + SYS_SETAUID = 448 // { int setauid(uid_t *auid); } + SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } + SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_AUDITCTL = 453 // { int auditctl(char *path); } + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); } + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); } + SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } + SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); } + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } + SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } + SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } + SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } + SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); } + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); } + SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } + SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); } + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); } + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); } + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, int whence); } + SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } + SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } + SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, mode_t mode); } + SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } + SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); } + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); } + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); } + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); } + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, int flag); } + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); } + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); } + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); } + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); } + SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); } + SYS_READLINKAT = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); } + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); } + SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } + SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } + SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); } + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } + SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } + SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); } + SYS_CAP_ENTER = 516 // { int cap_enter(void); } + SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } + SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } + SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } + SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); } + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, size_t namelen); } + SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); } + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); } + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); } + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); } + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); } + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); } + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); } + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); } + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); } + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); } + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); } + SYS_ACCEPT4 = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); } + SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } + SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); } + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); } + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } + SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } + SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } + SYS_FDATASYNC = 550 // { int fdatasync(int fd); } + SYS_FSTAT = 551 // { int fstat(int fd, struct stat *sb); } + SYS_FSTATAT = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } + SYS_FHSTAT = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } + SYS_GETDIRENTRIES = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); } + SYS_STATFS = 555 // { int statfs(char *path, struct statfs *buf); } + SYS_FSTATFS = 556 // { int fstatfs(int fd, struct statfs *buf); } + SYS_GETFSSTAT = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } + SYS_FHSTATFS = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } + SYS_MKNODAT = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_KEVENT = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_CPUSET_GETDOMAIN = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); } + SYS_CPUSET_SETDOMAIN = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); } + SYS_GETRANDOM = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); } + SYS_GETFHAT = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); } + SYS_FHLINK = 565 // { int fhlink(struct fhandle *fhp, const char *to); } + SYS_FHLINKAT = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); } + SYS_FHREADLINK = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); } + SYS___SYSCTLBYNAME = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_CLOSE_RANGE = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); } +) diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go new file mode 100644 index 000000000..e32df1c1e --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go @@ -0,0 +1,393 @@ +// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm64 && freebsd + +package unix + +const ( + // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int + SYS_EXIT = 1 // { void sys_exit(int rval); } exit sys_exit_args void + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_BREAK = 17 // { caddr_t break(char *nsize); } + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); } + SYS_ACCEPT = 30 // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); } + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_ACCESS = 33 // { int access(char *path, int amode); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(u_int fd); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); } + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); } + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); } + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); } + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } + SYS_UMASK = 60 // { int umask(int newmask); } + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } + SYS_VFORK = 66 // { int vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); } + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); } + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); } + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); } + SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); } + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); } + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); } + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); } + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); } + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); } + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); } + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); } + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); } + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); } + SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); } + SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); } + SYS_LGETFH = 160 // { int lgetfh(char *fname, struct fhandle *fhp); } + SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); } + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); } + SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); } + SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); } + SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, int a4); } + SYS_SETFIB = 175 // { int setfib(int fibnum); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); } + SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); } + SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); } + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); } + SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); } + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); } + SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); } + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat* stat); } + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); } + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, size_t buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); } + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); } + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); } + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); } + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); } + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, acl_type_t type); } + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); } + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); } + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS___SETUGID = 374 // { int __setugid(int flag); } + SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } + SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); } + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); } + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); } + SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); } + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, u_long flags); } + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } + SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } + SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } + SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } + SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); } + SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, unsigned int value); } + SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); } + SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); } + SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); } + SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); } + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); } + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); } + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); } + SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } + SYS_SIGRETURN = 417 // { int sigreturn(const struct __ucontext *sigcntxp); } + SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext(const struct __ucontext *ucp); } + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); } + SYS_SWAPOFF = 424 // { int swapoff(const char *name); } + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, acl_type_t type); } + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, int *sig); } + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); } + SYS_THR_EXIT = 431 // { void thr_exit(long *state); } + SYS_THR_SELF = 432 // { int thr_self(long *id); } + SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } + SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); } + SYS_THR_SUSPEND = 442 // { int thr_suspend(const struct timespec *timeout); } + SYS_THR_WAKE = 443 // { int thr_wake(long id); } + SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } + SYS_AUDIT = 445 // { int audit(const void *record, u_int length); } + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, u_int length); } + SYS_GETAUID = 447 // { int getauid(uid_t *auid); } + SYS_SETAUID = 448 // { int setauid(uid_t *auid); } + SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } + SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_AUDITCTL = 453 // { int auditctl(char *path); } + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); } + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); } + SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } + SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); } + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } + SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } + SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } + SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } + SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); } + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); } + SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } + SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); } + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); } + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); } + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, int whence); } + SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } + SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } + SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, mode_t mode); } + SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } + SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); } + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); } + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); } + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); } + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, int flag); } + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); } + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); } + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); } + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); } + SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); } + SYS_READLINKAT = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); } + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); } + SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } + SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } + SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); } + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } + SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } + SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); } + SYS_CAP_ENTER = 516 // { int cap_enter(void); } + SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } + SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } + SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } + SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); } + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, size_t namelen); } + SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); } + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); } + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); } + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); } + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); } + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); } + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); } + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); } + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); } + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); } + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); } + SYS_ACCEPT4 = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); } + SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } + SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); } + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); } + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } + SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } + SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } + SYS_FDATASYNC = 550 // { int fdatasync(int fd); } + SYS_FSTAT = 551 // { int fstat(int fd, struct stat *sb); } + SYS_FSTATAT = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } + SYS_FHSTAT = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } + SYS_GETDIRENTRIES = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); } + SYS_STATFS = 555 // { int statfs(char *path, struct statfs *buf); } + SYS_FSTATFS = 556 // { int fstatfs(int fd, struct statfs *buf); } + SYS_GETFSSTAT = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } + SYS_FHSTATFS = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } + SYS_MKNODAT = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_KEVENT = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_CPUSET_GETDOMAIN = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); } + SYS_CPUSET_SETDOMAIN = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); } + SYS_GETRANDOM = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); } + SYS_GETFHAT = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); } + SYS_FHLINK = 565 // { int fhlink(struct fhandle *fhp, const char *to); } + SYS_FHLINKAT = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); } + SYS_FHREADLINK = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); } + SYS___SYSCTLBYNAME = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_CLOSE_RANGE = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); } +) diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go new file mode 100644 index 000000000..15ad6111f --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go @@ -0,0 +1,393 @@ +// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build riscv64 && freebsd + +package unix + +const ( + // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int + SYS_EXIT = 1 // { void sys_exit(int rval); } exit sys_exit_args void + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_BREAK = 17 // { caddr_t break(char *nsize); } + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); } + SYS_ACCEPT = 30 // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); } + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_ACCESS = 33 // { int access(char *path, int amode); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(u_int fd); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); } + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); } + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); } + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); } + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } + SYS_UMASK = 60 // { int umask(int newmask); } + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } + SYS_VFORK = 66 // { int vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); } + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); } + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); } + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); } + SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); } + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); } + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); } + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); } + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); } + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); } + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); } + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); } + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); } + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); } + SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); } + SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); } + SYS_LGETFH = 160 // { int lgetfh(char *fname, struct fhandle *fhp); } + SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); } + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); } + SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); } + SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); } + SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, int a4); } + SYS_SETFIB = 175 // { int setfib(int fibnum); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); } + SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); } + SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); } + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); } + SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); } + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); } + SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); } + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat* stat); } + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); } + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, size_t buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); } + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); } + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); } + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); } + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); } + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, acl_type_t type); } + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); } + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); } + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS___SETUGID = 374 // { int __setugid(int flag); } + SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } + SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); } + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); } + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); } + SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); } + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, u_long flags); } + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } + SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } + SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } + SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } + SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); } + SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, unsigned int value); } + SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); } + SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); } + SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); } + SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); } + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); } + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); } + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); } + SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } + SYS_SIGRETURN = 417 // { int sigreturn(const struct __ucontext *sigcntxp); } + SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext(const struct __ucontext *ucp); } + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); } + SYS_SWAPOFF = 424 // { int swapoff(const char *name); } + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, acl_type_t type); } + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, int *sig); } + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); } + SYS_THR_EXIT = 431 // { void thr_exit(long *state); } + SYS_THR_SELF = 432 // { int thr_self(long *id); } + SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } + SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); } + SYS_THR_SUSPEND = 442 // { int thr_suspend(const struct timespec *timeout); } + SYS_THR_WAKE = 443 // { int thr_wake(long id); } + SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } + SYS_AUDIT = 445 // { int audit(const void *record, u_int length); } + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, u_int length); } + SYS_GETAUID = 447 // { int getauid(uid_t *auid); } + SYS_SETAUID = 448 // { int setauid(uid_t *auid); } + SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } + SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_AUDITCTL = 453 // { int auditctl(char *path); } + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); } + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); } + SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } + SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); } + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } + SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } + SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } + SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } + SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); } + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); } + SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } + SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); } + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); } + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); } + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, int whence); } + SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } + SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } + SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, mode_t mode); } + SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } + SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); } + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); } + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); } + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); } + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, int flag); } + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); } + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); } + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); } + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); } + SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); } + SYS_READLINKAT = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); } + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); } + SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } + SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } + SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); } + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } + SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } + SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); } + SYS_CAP_ENTER = 516 // { int cap_enter(void); } + SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } + SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } + SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } + SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); } + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, size_t namelen); } + SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); } + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); } + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); } + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); } + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); } + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); } + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); } + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); } + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); } + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); } + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); } + SYS_ACCEPT4 = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); } + SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } + SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); } + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); } + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } + SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } + SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } + SYS_FDATASYNC = 550 // { int fdatasync(int fd); } + SYS_FSTAT = 551 // { int fstat(int fd, struct stat *sb); } + SYS_FSTATAT = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } + SYS_FHSTAT = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } + SYS_GETDIRENTRIES = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); } + SYS_STATFS = 555 // { int statfs(char *path, struct statfs *buf); } + SYS_FSTATFS = 556 // { int fstatfs(int fd, struct statfs *buf); } + SYS_GETFSSTAT = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } + SYS_FHSTATFS = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } + SYS_MKNODAT = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_KEVENT = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_CPUSET_GETDOMAIN = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); } + SYS_CPUSET_SETDOMAIN = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); } + SYS_GETRANDOM = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); } + SYS_GETFHAT = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); } + SYS_FHLINK = 565 // { int fhlink(struct fhandle *fhp, const char *to); } + SYS_FHLINKAT = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); } + SYS_FHREADLINK = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); } + SYS___SYSCTLBYNAME = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_CLOSE_RANGE = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); } +) diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go new file mode 100644 index 000000000..c79aaff30 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go @@ -0,0 +1,465 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/386/include -m32 /tmp/386/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build 386 && linux + +package unix + +const ( + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAITPID = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_TIME = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_BREAK = 17 + SYS_OLDSTAT = 18 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_UMOUNT = 22 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_STIME = 25 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_OLDFSTAT = 28 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_STTY = 31 + SYS_GTTY = 32 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_FTIME = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_PROF = 44 + SYS_BRK = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_SIGNAL = 48 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_LOCK = 53 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_MPX = 56 + SYS_SETPGID = 57 + SYS_ULIMIT = 58 + SYS_OLDOLDUNAME = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SGETMASK = 68 + SYS_SSETMASK = 69 + SYS_SETREUID = 70 + SYS_SETREGID = 71 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRLIMIT = 76 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_GETGROUPS = 80 + SYS_SETGROUPS = 81 + SYS_SELECT = 82 + SYS_SYMLINK = 83 + SYS_OLDLSTAT = 84 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_READDIR = 89 + SYS_MMAP = 90 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_FCHOWN = 95 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_PROFIL = 98 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_IOPERM = 101 + SYS_SOCKETCALL = 102 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_OLDUNAME = 109 + SYS_IOPL = 110 + SYS_VHANGUP = 111 + SYS_IDLE = 112 + SYS_VM86OLD = 113 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_IPC = 117 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_MODIFY_LDT = 123 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_CREATE_MODULE = 127 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_GET_KERNEL_SYMS = 130 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_AFS_SYSCALL = 137 + SYS_SETFSUID = 138 + SYS_SETFSGID = 139 + SYS__LLSEEK = 140 + SYS_GETDENTS = 141 + SYS__NEWSELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_SETRESUID = 164 + SYS_GETRESUID = 165 + SYS_VM86 = 166 + SYS_QUERY_MODULE = 167 + SYS_POLL = 168 + SYS_NFSSERVCTL = 169 + SYS_SETRESGID = 170 + SYS_GETRESGID = 171 + SYS_PRCTL = 172 + SYS_RT_SIGRETURN = 173 + SYS_RT_SIGACTION = 174 + SYS_RT_SIGPROCMASK = 175 + SYS_RT_SIGPENDING = 176 + SYS_RT_SIGTIMEDWAIT = 177 + SYS_RT_SIGQUEUEINFO = 178 + SYS_RT_SIGSUSPEND = 179 + SYS_PREAD64 = 180 + SYS_PWRITE64 = 181 + SYS_CHOWN = 182 + SYS_GETCWD = 183 + SYS_CAPGET = 184 + SYS_CAPSET = 185 + SYS_SIGALTSTACK = 186 + SYS_SENDFILE = 187 + SYS_GETPMSG = 188 + SYS_PUTPMSG = 189 + SYS_VFORK = 190 + SYS_UGETRLIMIT = 191 + SYS_MMAP2 = 192 + SYS_TRUNCATE64 = 193 + SYS_FTRUNCATE64 = 194 + SYS_STAT64 = 195 + SYS_LSTAT64 = 196 + SYS_FSTAT64 = 197 + SYS_LCHOWN32 = 198 + SYS_GETUID32 = 199 + SYS_GETGID32 = 200 + SYS_GETEUID32 = 201 + SYS_GETEGID32 = 202 + SYS_SETREUID32 = 203 + SYS_SETREGID32 = 204 + SYS_GETGROUPS32 = 205 + SYS_SETGROUPS32 = 206 + SYS_FCHOWN32 = 207 + SYS_SETRESUID32 = 208 + SYS_GETRESUID32 = 209 + SYS_SETRESGID32 = 210 + SYS_GETRESGID32 = 211 + SYS_CHOWN32 = 212 + SYS_SETUID32 = 213 + SYS_SETGID32 = 214 + SYS_SETFSUID32 = 215 + SYS_SETFSGID32 = 216 + SYS_PIVOT_ROOT = 217 + SYS_MINCORE = 218 + SYS_MADVISE = 219 + SYS_GETDENTS64 = 220 + SYS_FCNTL64 = 221 + SYS_GETTID = 224 + SYS_READAHEAD = 225 + SYS_SETXATTR = 226 + SYS_LSETXATTR = 227 + SYS_FSETXATTR = 228 + SYS_GETXATTR = 229 + SYS_LGETXATTR = 230 + SYS_FGETXATTR = 231 + SYS_LISTXATTR = 232 + SYS_LLISTXATTR = 233 + SYS_FLISTXATTR = 234 + SYS_REMOVEXATTR = 235 + SYS_LREMOVEXATTR = 236 + SYS_FREMOVEXATTR = 237 + SYS_TKILL = 238 + SYS_SENDFILE64 = 239 + SYS_FUTEX = 240 + SYS_SCHED_SETAFFINITY = 241 + SYS_SCHED_GETAFFINITY = 242 + SYS_SET_THREAD_AREA = 243 + SYS_GET_THREAD_AREA = 244 + SYS_IO_SETUP = 245 + SYS_IO_DESTROY = 246 + SYS_IO_GETEVENTS = 247 + SYS_IO_SUBMIT = 248 + SYS_IO_CANCEL = 249 + SYS_FADVISE64 = 250 + SYS_EXIT_GROUP = 252 + SYS_LOOKUP_DCOOKIE = 253 + SYS_EPOLL_CREATE = 254 + SYS_EPOLL_CTL = 255 + SYS_EPOLL_WAIT = 256 + SYS_REMAP_FILE_PAGES = 257 + SYS_SET_TID_ADDRESS = 258 + SYS_TIMER_CREATE = 259 + SYS_TIMER_SETTIME = 260 + SYS_TIMER_GETTIME = 261 + SYS_TIMER_GETOVERRUN = 262 + SYS_TIMER_DELETE = 263 + SYS_CLOCK_SETTIME = 264 + SYS_CLOCK_GETTIME = 265 + SYS_CLOCK_GETRES = 266 + SYS_CLOCK_NANOSLEEP = 267 + SYS_STATFS64 = 268 + SYS_FSTATFS64 = 269 + SYS_TGKILL = 270 + SYS_UTIMES = 271 + SYS_FADVISE64_64 = 272 + SYS_VSERVER = 273 + SYS_MBIND = 274 + SYS_GET_MEMPOLICY = 275 + SYS_SET_MEMPOLICY = 276 + SYS_MQ_OPEN = 277 + SYS_MQ_UNLINK = 278 + SYS_MQ_TIMEDSEND = 279 + SYS_MQ_TIMEDRECEIVE = 280 + SYS_MQ_NOTIFY = 281 + SYS_MQ_GETSETATTR = 282 + SYS_KEXEC_LOAD = 283 + SYS_WAITID = 284 + SYS_ADD_KEY = 286 + SYS_REQUEST_KEY = 287 + SYS_KEYCTL = 288 + SYS_IOPRIO_SET = 289 + SYS_IOPRIO_GET = 290 + SYS_INOTIFY_INIT = 291 + SYS_INOTIFY_ADD_WATCH = 292 + SYS_INOTIFY_RM_WATCH = 293 + SYS_MIGRATE_PAGES = 294 + SYS_OPENAT = 295 + SYS_MKDIRAT = 296 + SYS_MKNODAT = 297 + SYS_FCHOWNAT = 298 + SYS_FUTIMESAT = 299 + SYS_FSTATAT64 = 300 + SYS_UNLINKAT = 301 + SYS_RENAMEAT = 302 + SYS_LINKAT = 303 + SYS_SYMLINKAT = 304 + SYS_READLINKAT = 305 + SYS_FCHMODAT = 306 + SYS_FACCESSAT = 307 + SYS_PSELECT6 = 308 + SYS_PPOLL = 309 + SYS_UNSHARE = 310 + SYS_SET_ROBUST_LIST = 311 + SYS_GET_ROBUST_LIST = 312 + SYS_SPLICE = 313 + SYS_SYNC_FILE_RANGE = 314 + SYS_TEE = 315 + SYS_VMSPLICE = 316 + SYS_MOVE_PAGES = 317 + SYS_GETCPU = 318 + SYS_EPOLL_PWAIT = 319 + SYS_UTIMENSAT = 320 + SYS_SIGNALFD = 321 + SYS_TIMERFD_CREATE = 322 + SYS_EVENTFD = 323 + SYS_FALLOCATE = 324 + SYS_TIMERFD_SETTIME = 325 + SYS_TIMERFD_GETTIME = 326 + SYS_SIGNALFD4 = 327 + SYS_EVENTFD2 = 328 + SYS_EPOLL_CREATE1 = 329 + SYS_DUP3 = 330 + SYS_PIPE2 = 331 + SYS_INOTIFY_INIT1 = 332 + SYS_PREADV = 333 + SYS_PWRITEV = 334 + SYS_RT_TGSIGQUEUEINFO = 335 + SYS_PERF_EVENT_OPEN = 336 + SYS_RECVMMSG = 337 + SYS_FANOTIFY_INIT = 338 + SYS_FANOTIFY_MARK = 339 + SYS_PRLIMIT64 = 340 + SYS_NAME_TO_HANDLE_AT = 341 + SYS_OPEN_BY_HANDLE_AT = 342 + SYS_CLOCK_ADJTIME = 343 + SYS_SYNCFS = 344 + SYS_SENDMMSG = 345 + SYS_SETNS = 346 + SYS_PROCESS_VM_READV = 347 + SYS_PROCESS_VM_WRITEV = 348 + SYS_KCMP = 349 + SYS_FINIT_MODULE = 350 + SYS_SCHED_SETATTR = 351 + SYS_SCHED_GETATTR = 352 + SYS_RENAMEAT2 = 353 + SYS_SECCOMP = 354 + SYS_GETRANDOM = 355 + SYS_MEMFD_CREATE = 356 + SYS_BPF = 357 + SYS_EXECVEAT = 358 + SYS_SOCKET = 359 + SYS_SOCKETPAIR = 360 + SYS_BIND = 361 + SYS_CONNECT = 362 + SYS_LISTEN = 363 + SYS_ACCEPT4 = 364 + SYS_GETSOCKOPT = 365 + SYS_SETSOCKOPT = 366 + SYS_GETSOCKNAME = 367 + SYS_GETPEERNAME = 368 + SYS_SENDTO = 369 + SYS_SENDMSG = 370 + SYS_RECVFROM = 371 + SYS_RECVMSG = 372 + SYS_SHUTDOWN = 373 + SYS_USERFAULTFD = 374 + SYS_MEMBARRIER = 375 + SYS_MLOCK2 = 376 + SYS_COPY_FILE_RANGE = 377 + SYS_PREADV2 = 378 + SYS_PWRITEV2 = 379 + SYS_PKEY_MPROTECT = 380 + SYS_PKEY_ALLOC = 381 + SYS_PKEY_FREE = 382 + SYS_STATX = 383 + SYS_ARCH_PRCTL = 384 + SYS_IO_PGETEVENTS = 385 + SYS_RSEQ = 386 + SYS_SEMGET = 393 + SYS_SEMCTL = 394 + SYS_SHMGET = 395 + SYS_SHMCTL = 396 + SYS_SHMAT = 397 + SYS_SHMDT = 398 + SYS_MSGGET = 399 + SYS_MSGSND = 400 + SYS_MSGRCV = 401 + SYS_MSGCTL = 402 + SYS_CLOCK_GETTIME64 = 403 + SYS_CLOCK_SETTIME64 = 404 + SYS_CLOCK_ADJTIME64 = 405 + SYS_CLOCK_GETRES_TIME64 = 406 + SYS_CLOCK_NANOSLEEP_TIME64 = 407 + SYS_TIMER_GETTIME64 = 408 + SYS_TIMER_SETTIME64 = 409 + SYS_TIMERFD_GETTIME64 = 410 + SYS_TIMERFD_SETTIME64 = 411 + SYS_UTIMENSAT_TIME64 = 412 + SYS_PSELECT6_TIME64 = 413 + SYS_PPOLL_TIME64 = 414 + SYS_IO_PGETEVENTS_TIME64 = 416 + SYS_RECVMMSG_TIME64 = 417 + SYS_MQ_TIMEDSEND_TIME64 = 418 + SYS_MQ_TIMEDRECEIVE_TIME64 = 419 + SYS_SEMTIMEDOP_TIME64 = 420 + SYS_RT_SIGTIMEDWAIT_TIME64 = 421 + SYS_FUTEX_TIME64 = 422 + SYS_SCHED_RR_GET_INTERVAL_TIME64 = 423 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_QUOTACTL_FD = 443 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 + SYS_MEMFD_SECRET = 447 + SYS_PROCESS_MRELEASE = 448 + SYS_FUTEX_WAITV = 449 + SYS_SET_MEMPOLICY_HOME_NODE = 450 + SYS_CACHESTAT = 451 + SYS_FCHMODAT2 = 452 + SYS_MAP_SHADOW_STACK = 453 + SYS_FUTEX_WAKE = 454 + SYS_FUTEX_WAIT = 455 + SYS_FUTEX_REQUEUE = 456 + SYS_STATMOUNT = 457 + SYS_LISTMOUNT = 458 + SYS_LSM_GET_SELF_ATTR = 459 + SYS_LSM_SET_SELF_ATTR = 460 + SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 +) diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go new file mode 100644 index 000000000..5eb450695 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go @@ -0,0 +1,388 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/amd64/include -m64 /tmp/amd64/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && linux + +package unix + +const ( + SYS_READ = 0 + SYS_WRITE = 1 + SYS_OPEN = 2 + SYS_CLOSE = 3 + SYS_STAT = 4 + SYS_FSTAT = 5 + SYS_LSTAT = 6 + SYS_POLL = 7 + SYS_LSEEK = 8 + SYS_MMAP = 9 + SYS_MPROTECT = 10 + SYS_MUNMAP = 11 + SYS_BRK = 12 + SYS_RT_SIGACTION = 13 + SYS_RT_SIGPROCMASK = 14 + SYS_RT_SIGRETURN = 15 + SYS_IOCTL = 16 + SYS_PREAD64 = 17 + SYS_PWRITE64 = 18 + SYS_READV = 19 + SYS_WRITEV = 20 + SYS_ACCESS = 21 + SYS_PIPE = 22 + SYS_SELECT = 23 + SYS_SCHED_YIELD = 24 + SYS_MREMAP = 25 + SYS_MSYNC = 26 + SYS_MINCORE = 27 + SYS_MADVISE = 28 + SYS_SHMGET = 29 + SYS_SHMAT = 30 + SYS_SHMCTL = 31 + SYS_DUP = 32 + SYS_DUP2 = 33 + SYS_PAUSE = 34 + SYS_NANOSLEEP = 35 + SYS_GETITIMER = 36 + SYS_ALARM = 37 + SYS_SETITIMER = 38 + SYS_GETPID = 39 + SYS_SENDFILE = 40 + SYS_SOCKET = 41 + SYS_CONNECT = 42 + SYS_ACCEPT = 43 + SYS_SENDTO = 44 + SYS_RECVFROM = 45 + SYS_SENDMSG = 46 + SYS_RECVMSG = 47 + SYS_SHUTDOWN = 48 + SYS_BIND = 49 + SYS_LISTEN = 50 + SYS_GETSOCKNAME = 51 + SYS_GETPEERNAME = 52 + SYS_SOCKETPAIR = 53 + SYS_SETSOCKOPT = 54 + SYS_GETSOCKOPT = 55 + SYS_CLONE = 56 + SYS_FORK = 57 + SYS_VFORK = 58 + SYS_EXECVE = 59 + SYS_EXIT = 60 + SYS_WAIT4 = 61 + SYS_KILL = 62 + SYS_UNAME = 63 + SYS_SEMGET = 64 + SYS_SEMOP = 65 + SYS_SEMCTL = 66 + SYS_SHMDT = 67 + SYS_MSGGET = 68 + SYS_MSGSND = 69 + SYS_MSGRCV = 70 + SYS_MSGCTL = 71 + SYS_FCNTL = 72 + SYS_FLOCK = 73 + SYS_FSYNC = 74 + SYS_FDATASYNC = 75 + SYS_TRUNCATE = 76 + SYS_FTRUNCATE = 77 + SYS_GETDENTS = 78 + SYS_GETCWD = 79 + SYS_CHDIR = 80 + SYS_FCHDIR = 81 + SYS_RENAME = 82 + SYS_MKDIR = 83 + SYS_RMDIR = 84 + SYS_CREAT = 85 + SYS_LINK = 86 + SYS_UNLINK = 87 + SYS_SYMLINK = 88 + SYS_READLINK = 89 + SYS_CHMOD = 90 + SYS_FCHMOD = 91 + SYS_CHOWN = 92 + SYS_FCHOWN = 93 + SYS_LCHOWN = 94 + SYS_UMASK = 95 + SYS_GETTIMEOFDAY = 96 + SYS_GETRLIMIT = 97 + SYS_GETRUSAGE = 98 + SYS_SYSINFO = 99 + SYS_TIMES = 100 + SYS_PTRACE = 101 + SYS_GETUID = 102 + SYS_SYSLOG = 103 + SYS_GETGID = 104 + SYS_SETUID = 105 + SYS_SETGID = 106 + SYS_GETEUID = 107 + SYS_GETEGID = 108 + SYS_SETPGID = 109 + SYS_GETPPID = 110 + SYS_GETPGRP = 111 + SYS_SETSID = 112 + SYS_SETREUID = 113 + SYS_SETREGID = 114 + SYS_GETGROUPS = 115 + SYS_SETGROUPS = 116 + SYS_SETRESUID = 117 + SYS_GETRESUID = 118 + SYS_SETRESGID = 119 + SYS_GETRESGID = 120 + SYS_GETPGID = 121 + SYS_SETFSUID = 122 + SYS_SETFSGID = 123 + SYS_GETSID = 124 + SYS_CAPGET = 125 + SYS_CAPSET = 126 + SYS_RT_SIGPENDING = 127 + SYS_RT_SIGTIMEDWAIT = 128 + SYS_RT_SIGQUEUEINFO = 129 + SYS_RT_SIGSUSPEND = 130 + SYS_SIGALTSTACK = 131 + SYS_UTIME = 132 + SYS_MKNOD = 133 + SYS_USELIB = 134 + SYS_PERSONALITY = 135 + SYS_USTAT = 136 + SYS_STATFS = 137 + SYS_FSTATFS = 138 + SYS_SYSFS = 139 + SYS_GETPRIORITY = 140 + SYS_SETPRIORITY = 141 + SYS_SCHED_SETPARAM = 142 + SYS_SCHED_GETPARAM = 143 + SYS_SCHED_SETSCHEDULER = 144 + SYS_SCHED_GETSCHEDULER = 145 + SYS_SCHED_GET_PRIORITY_MAX = 146 + SYS_SCHED_GET_PRIORITY_MIN = 147 + SYS_SCHED_RR_GET_INTERVAL = 148 + SYS_MLOCK = 149 + SYS_MUNLOCK = 150 + SYS_MLOCKALL = 151 + SYS_MUNLOCKALL = 152 + SYS_VHANGUP = 153 + SYS_MODIFY_LDT = 154 + SYS_PIVOT_ROOT = 155 + SYS__SYSCTL = 156 + SYS_PRCTL = 157 + SYS_ARCH_PRCTL = 158 + SYS_ADJTIMEX = 159 + SYS_SETRLIMIT = 160 + SYS_CHROOT = 161 + SYS_SYNC = 162 + SYS_ACCT = 163 + SYS_SETTIMEOFDAY = 164 + SYS_MOUNT = 165 + SYS_UMOUNT2 = 166 + SYS_SWAPON = 167 + SYS_SWAPOFF = 168 + SYS_REBOOT = 169 + SYS_SETHOSTNAME = 170 + SYS_SETDOMAINNAME = 171 + SYS_IOPL = 172 + SYS_IOPERM = 173 + SYS_CREATE_MODULE = 174 + SYS_INIT_MODULE = 175 + SYS_DELETE_MODULE = 176 + SYS_GET_KERNEL_SYMS = 177 + SYS_QUERY_MODULE = 178 + SYS_QUOTACTL = 179 + SYS_NFSSERVCTL = 180 + SYS_GETPMSG = 181 + SYS_PUTPMSG = 182 + SYS_AFS_SYSCALL = 183 + SYS_TUXCALL = 184 + SYS_SECURITY = 185 + SYS_GETTID = 186 + SYS_READAHEAD = 187 + SYS_SETXATTR = 188 + SYS_LSETXATTR = 189 + SYS_FSETXATTR = 190 + SYS_GETXATTR = 191 + SYS_LGETXATTR = 192 + SYS_FGETXATTR = 193 + SYS_LISTXATTR = 194 + SYS_LLISTXATTR = 195 + SYS_FLISTXATTR = 196 + SYS_REMOVEXATTR = 197 + SYS_LREMOVEXATTR = 198 + SYS_FREMOVEXATTR = 199 + SYS_TKILL = 200 + SYS_TIME = 201 + SYS_FUTEX = 202 + SYS_SCHED_SETAFFINITY = 203 + SYS_SCHED_GETAFFINITY = 204 + SYS_SET_THREAD_AREA = 205 + SYS_IO_SETUP = 206 + SYS_IO_DESTROY = 207 + SYS_IO_GETEVENTS = 208 + SYS_IO_SUBMIT = 209 + SYS_IO_CANCEL = 210 + SYS_GET_THREAD_AREA = 211 + SYS_LOOKUP_DCOOKIE = 212 + SYS_EPOLL_CREATE = 213 + SYS_EPOLL_CTL_OLD = 214 + SYS_EPOLL_WAIT_OLD = 215 + SYS_REMAP_FILE_PAGES = 216 + SYS_GETDENTS64 = 217 + SYS_SET_TID_ADDRESS = 218 + SYS_RESTART_SYSCALL = 219 + SYS_SEMTIMEDOP = 220 + SYS_FADVISE64 = 221 + SYS_TIMER_CREATE = 222 + SYS_TIMER_SETTIME = 223 + SYS_TIMER_GETTIME = 224 + SYS_TIMER_GETOVERRUN = 225 + SYS_TIMER_DELETE = 226 + SYS_CLOCK_SETTIME = 227 + SYS_CLOCK_GETTIME = 228 + SYS_CLOCK_GETRES = 229 + SYS_CLOCK_NANOSLEEP = 230 + SYS_EXIT_GROUP = 231 + SYS_EPOLL_WAIT = 232 + SYS_EPOLL_CTL = 233 + SYS_TGKILL = 234 + SYS_UTIMES = 235 + SYS_VSERVER = 236 + SYS_MBIND = 237 + SYS_SET_MEMPOLICY = 238 + SYS_GET_MEMPOLICY = 239 + SYS_MQ_OPEN = 240 + SYS_MQ_UNLINK = 241 + SYS_MQ_TIMEDSEND = 242 + SYS_MQ_TIMEDRECEIVE = 243 + SYS_MQ_NOTIFY = 244 + SYS_MQ_GETSETATTR = 245 + SYS_KEXEC_LOAD = 246 + SYS_WAITID = 247 + SYS_ADD_KEY = 248 + SYS_REQUEST_KEY = 249 + SYS_KEYCTL = 250 + SYS_IOPRIO_SET = 251 + SYS_IOPRIO_GET = 252 + SYS_INOTIFY_INIT = 253 + SYS_INOTIFY_ADD_WATCH = 254 + SYS_INOTIFY_RM_WATCH = 255 + SYS_MIGRATE_PAGES = 256 + SYS_OPENAT = 257 + SYS_MKDIRAT = 258 + SYS_MKNODAT = 259 + SYS_FCHOWNAT = 260 + SYS_FUTIMESAT = 261 + SYS_NEWFSTATAT = 262 + SYS_UNLINKAT = 263 + SYS_RENAMEAT = 264 + SYS_LINKAT = 265 + SYS_SYMLINKAT = 266 + SYS_READLINKAT = 267 + SYS_FCHMODAT = 268 + SYS_FACCESSAT = 269 + SYS_PSELECT6 = 270 + SYS_PPOLL = 271 + SYS_UNSHARE = 272 + SYS_SET_ROBUST_LIST = 273 + SYS_GET_ROBUST_LIST = 274 + SYS_SPLICE = 275 + SYS_TEE = 276 + SYS_SYNC_FILE_RANGE = 277 + SYS_VMSPLICE = 278 + SYS_MOVE_PAGES = 279 + SYS_UTIMENSAT = 280 + SYS_EPOLL_PWAIT = 281 + SYS_SIGNALFD = 282 + SYS_TIMERFD_CREATE = 283 + SYS_EVENTFD = 284 + SYS_FALLOCATE = 285 + SYS_TIMERFD_SETTIME = 286 + SYS_TIMERFD_GETTIME = 287 + SYS_ACCEPT4 = 288 + SYS_SIGNALFD4 = 289 + SYS_EVENTFD2 = 290 + SYS_EPOLL_CREATE1 = 291 + SYS_DUP3 = 292 + SYS_PIPE2 = 293 + SYS_INOTIFY_INIT1 = 294 + SYS_PREADV = 295 + SYS_PWRITEV = 296 + SYS_RT_TGSIGQUEUEINFO = 297 + SYS_PERF_EVENT_OPEN = 298 + SYS_RECVMMSG = 299 + SYS_FANOTIFY_INIT = 300 + SYS_FANOTIFY_MARK = 301 + SYS_PRLIMIT64 = 302 + SYS_NAME_TO_HANDLE_AT = 303 + SYS_OPEN_BY_HANDLE_AT = 304 + SYS_CLOCK_ADJTIME = 305 + SYS_SYNCFS = 306 + SYS_SENDMMSG = 307 + SYS_SETNS = 308 + SYS_GETCPU = 309 + SYS_PROCESS_VM_READV = 310 + SYS_PROCESS_VM_WRITEV = 311 + SYS_KCMP = 312 + SYS_FINIT_MODULE = 313 + SYS_SCHED_SETATTR = 314 + SYS_SCHED_GETATTR = 315 + SYS_RENAMEAT2 = 316 + SYS_SECCOMP = 317 + SYS_GETRANDOM = 318 + SYS_MEMFD_CREATE = 319 + SYS_KEXEC_FILE_LOAD = 320 + SYS_BPF = 321 + SYS_EXECVEAT = 322 + SYS_USERFAULTFD = 323 + SYS_MEMBARRIER = 324 + SYS_MLOCK2 = 325 + SYS_COPY_FILE_RANGE = 326 + SYS_PREADV2 = 327 + SYS_PWRITEV2 = 328 + SYS_PKEY_MPROTECT = 329 + SYS_PKEY_ALLOC = 330 + SYS_PKEY_FREE = 331 + SYS_STATX = 332 + SYS_IO_PGETEVENTS = 333 + SYS_RSEQ = 334 + SYS_URETPROBE = 335 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_QUOTACTL_FD = 443 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 + SYS_MEMFD_SECRET = 447 + SYS_PROCESS_MRELEASE = 448 + SYS_FUTEX_WAITV = 449 + SYS_SET_MEMPOLICY_HOME_NODE = 450 + SYS_CACHESTAT = 451 + SYS_FCHMODAT2 = 452 + SYS_MAP_SHADOW_STACK = 453 + SYS_FUTEX_WAKE = 454 + SYS_FUTEX_WAIT = 455 + SYS_FUTEX_REQUEUE = 456 + SYS_STATMOUNT = 457 + SYS_LISTMOUNT = 458 + SYS_LSM_GET_SELF_ATTR = 459 + SYS_LSM_SET_SELF_ATTR = 460 + SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 +) diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go new file mode 100644 index 000000000..05e502974 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go @@ -0,0 +1,429 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/arm/include /tmp/arm/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm && linux + +package unix + +const ( + SYS_SYSCALL_MASK = 0 + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_PTRACE = 26 + SYS_PAUSE = 29 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_BRK = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_SETPGID = 57 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SETREUID = 70 + SYS_SETREGID = 71 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_GETGROUPS = 80 + SYS_SETGROUPS = 81 + SYS_SYMLINK = 83 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_FCHOWN = 95 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_VHANGUP = 111 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_SETFSUID = 138 + SYS_SETFSGID = 139 + SYS__LLSEEK = 140 + SYS_GETDENTS = 141 + SYS__NEWSELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_SETRESUID = 164 + SYS_GETRESUID = 165 + SYS_POLL = 168 + SYS_NFSSERVCTL = 169 + SYS_SETRESGID = 170 + SYS_GETRESGID = 171 + SYS_PRCTL = 172 + SYS_RT_SIGRETURN = 173 + SYS_RT_SIGACTION = 174 + SYS_RT_SIGPROCMASK = 175 + SYS_RT_SIGPENDING = 176 + SYS_RT_SIGTIMEDWAIT = 177 + SYS_RT_SIGQUEUEINFO = 178 + SYS_RT_SIGSUSPEND = 179 + SYS_PREAD64 = 180 + SYS_PWRITE64 = 181 + SYS_CHOWN = 182 + SYS_GETCWD = 183 + SYS_CAPGET = 184 + SYS_CAPSET = 185 + SYS_SIGALTSTACK = 186 + SYS_SENDFILE = 187 + SYS_VFORK = 190 + SYS_UGETRLIMIT = 191 + SYS_MMAP2 = 192 + SYS_TRUNCATE64 = 193 + SYS_FTRUNCATE64 = 194 + SYS_STAT64 = 195 + SYS_LSTAT64 = 196 + SYS_FSTAT64 = 197 + SYS_LCHOWN32 = 198 + SYS_GETUID32 = 199 + SYS_GETGID32 = 200 + SYS_GETEUID32 = 201 + SYS_GETEGID32 = 202 + SYS_SETREUID32 = 203 + SYS_SETREGID32 = 204 + SYS_GETGROUPS32 = 205 + SYS_SETGROUPS32 = 206 + SYS_FCHOWN32 = 207 + SYS_SETRESUID32 = 208 + SYS_GETRESUID32 = 209 + SYS_SETRESGID32 = 210 + SYS_GETRESGID32 = 211 + SYS_CHOWN32 = 212 + SYS_SETUID32 = 213 + SYS_SETGID32 = 214 + SYS_SETFSUID32 = 215 + SYS_SETFSGID32 = 216 + SYS_GETDENTS64 = 217 + SYS_PIVOT_ROOT = 218 + SYS_MINCORE = 219 + SYS_MADVISE = 220 + SYS_FCNTL64 = 221 + SYS_GETTID = 224 + SYS_READAHEAD = 225 + SYS_SETXATTR = 226 + SYS_LSETXATTR = 227 + SYS_FSETXATTR = 228 + SYS_GETXATTR = 229 + SYS_LGETXATTR = 230 + SYS_FGETXATTR = 231 + SYS_LISTXATTR = 232 + SYS_LLISTXATTR = 233 + SYS_FLISTXATTR = 234 + SYS_REMOVEXATTR = 235 + SYS_LREMOVEXATTR = 236 + SYS_FREMOVEXATTR = 237 + SYS_TKILL = 238 + SYS_SENDFILE64 = 239 + SYS_FUTEX = 240 + SYS_SCHED_SETAFFINITY = 241 + SYS_SCHED_GETAFFINITY = 242 + SYS_IO_SETUP = 243 + SYS_IO_DESTROY = 244 + SYS_IO_GETEVENTS = 245 + SYS_IO_SUBMIT = 246 + SYS_IO_CANCEL = 247 + SYS_EXIT_GROUP = 248 + SYS_LOOKUP_DCOOKIE = 249 + SYS_EPOLL_CREATE = 250 + SYS_EPOLL_CTL = 251 + SYS_EPOLL_WAIT = 252 + SYS_REMAP_FILE_PAGES = 253 + SYS_SET_TID_ADDRESS = 256 + SYS_TIMER_CREATE = 257 + SYS_TIMER_SETTIME = 258 + SYS_TIMER_GETTIME = 259 + SYS_TIMER_GETOVERRUN = 260 + SYS_TIMER_DELETE = 261 + SYS_CLOCK_SETTIME = 262 + SYS_CLOCK_GETTIME = 263 + SYS_CLOCK_GETRES = 264 + SYS_CLOCK_NANOSLEEP = 265 + SYS_STATFS64 = 266 + SYS_FSTATFS64 = 267 + SYS_TGKILL = 268 + SYS_UTIMES = 269 + SYS_ARM_FADVISE64_64 = 270 + SYS_PCICONFIG_IOBASE = 271 + SYS_PCICONFIG_READ = 272 + SYS_PCICONFIG_WRITE = 273 + SYS_MQ_OPEN = 274 + SYS_MQ_UNLINK = 275 + SYS_MQ_TIMEDSEND = 276 + SYS_MQ_TIMEDRECEIVE = 277 + SYS_MQ_NOTIFY = 278 + SYS_MQ_GETSETATTR = 279 + SYS_WAITID = 280 + SYS_SOCKET = 281 + SYS_BIND = 282 + SYS_CONNECT = 283 + SYS_LISTEN = 284 + SYS_ACCEPT = 285 + SYS_GETSOCKNAME = 286 + SYS_GETPEERNAME = 287 + SYS_SOCKETPAIR = 288 + SYS_SEND = 289 + SYS_SENDTO = 290 + SYS_RECV = 291 + SYS_RECVFROM = 292 + SYS_SHUTDOWN = 293 + SYS_SETSOCKOPT = 294 + SYS_GETSOCKOPT = 295 + SYS_SENDMSG = 296 + SYS_RECVMSG = 297 + SYS_SEMOP = 298 + SYS_SEMGET = 299 + SYS_SEMCTL = 300 + SYS_MSGSND = 301 + SYS_MSGRCV = 302 + SYS_MSGGET = 303 + SYS_MSGCTL = 304 + SYS_SHMAT = 305 + SYS_SHMDT = 306 + SYS_SHMGET = 307 + SYS_SHMCTL = 308 + SYS_ADD_KEY = 309 + SYS_REQUEST_KEY = 310 + SYS_KEYCTL = 311 + SYS_SEMTIMEDOP = 312 + SYS_VSERVER = 313 + SYS_IOPRIO_SET = 314 + SYS_IOPRIO_GET = 315 + SYS_INOTIFY_INIT = 316 + SYS_INOTIFY_ADD_WATCH = 317 + SYS_INOTIFY_RM_WATCH = 318 + SYS_MBIND = 319 + SYS_GET_MEMPOLICY = 320 + SYS_SET_MEMPOLICY = 321 + SYS_OPENAT = 322 + SYS_MKDIRAT = 323 + SYS_MKNODAT = 324 + SYS_FCHOWNAT = 325 + SYS_FUTIMESAT = 326 + SYS_FSTATAT64 = 327 + SYS_UNLINKAT = 328 + SYS_RENAMEAT = 329 + SYS_LINKAT = 330 + SYS_SYMLINKAT = 331 + SYS_READLINKAT = 332 + SYS_FCHMODAT = 333 + SYS_FACCESSAT = 334 + SYS_PSELECT6 = 335 + SYS_PPOLL = 336 + SYS_UNSHARE = 337 + SYS_SET_ROBUST_LIST = 338 + SYS_GET_ROBUST_LIST = 339 + SYS_SPLICE = 340 + SYS_ARM_SYNC_FILE_RANGE = 341 + SYS_TEE = 342 + SYS_VMSPLICE = 343 + SYS_MOVE_PAGES = 344 + SYS_GETCPU = 345 + SYS_EPOLL_PWAIT = 346 + SYS_KEXEC_LOAD = 347 + SYS_UTIMENSAT = 348 + SYS_SIGNALFD = 349 + SYS_TIMERFD_CREATE = 350 + SYS_EVENTFD = 351 + SYS_FALLOCATE = 352 + SYS_TIMERFD_SETTIME = 353 + SYS_TIMERFD_GETTIME = 354 + SYS_SIGNALFD4 = 355 + SYS_EVENTFD2 = 356 + SYS_EPOLL_CREATE1 = 357 + SYS_DUP3 = 358 + SYS_PIPE2 = 359 + SYS_INOTIFY_INIT1 = 360 + SYS_PREADV = 361 + SYS_PWRITEV = 362 + SYS_RT_TGSIGQUEUEINFO = 363 + SYS_PERF_EVENT_OPEN = 364 + SYS_RECVMMSG = 365 + SYS_ACCEPT4 = 366 + SYS_FANOTIFY_INIT = 367 + SYS_FANOTIFY_MARK = 368 + SYS_PRLIMIT64 = 369 + SYS_NAME_TO_HANDLE_AT = 370 + SYS_OPEN_BY_HANDLE_AT = 371 + SYS_CLOCK_ADJTIME = 372 + SYS_SYNCFS = 373 + SYS_SENDMMSG = 374 + SYS_SETNS = 375 + SYS_PROCESS_VM_READV = 376 + SYS_PROCESS_VM_WRITEV = 377 + SYS_KCMP = 378 + SYS_FINIT_MODULE = 379 + SYS_SCHED_SETATTR = 380 + SYS_SCHED_GETATTR = 381 + SYS_RENAMEAT2 = 382 + SYS_SECCOMP = 383 + SYS_GETRANDOM = 384 + SYS_MEMFD_CREATE = 385 + SYS_BPF = 386 + SYS_EXECVEAT = 387 + SYS_USERFAULTFD = 388 + SYS_MEMBARRIER = 389 + SYS_MLOCK2 = 390 + SYS_COPY_FILE_RANGE = 391 + SYS_PREADV2 = 392 + SYS_PWRITEV2 = 393 + SYS_PKEY_MPROTECT = 394 + SYS_PKEY_ALLOC = 395 + SYS_PKEY_FREE = 396 + SYS_STATX = 397 + SYS_RSEQ = 398 + SYS_IO_PGETEVENTS = 399 + SYS_MIGRATE_PAGES = 400 + SYS_KEXEC_FILE_LOAD = 401 + SYS_CLOCK_GETTIME64 = 403 + SYS_CLOCK_SETTIME64 = 404 + SYS_CLOCK_ADJTIME64 = 405 + SYS_CLOCK_GETRES_TIME64 = 406 + SYS_CLOCK_NANOSLEEP_TIME64 = 407 + SYS_TIMER_GETTIME64 = 408 + SYS_TIMER_SETTIME64 = 409 + SYS_TIMERFD_GETTIME64 = 410 + SYS_TIMERFD_SETTIME64 = 411 + SYS_UTIMENSAT_TIME64 = 412 + SYS_PSELECT6_TIME64 = 413 + SYS_PPOLL_TIME64 = 414 + SYS_IO_PGETEVENTS_TIME64 = 416 + SYS_RECVMMSG_TIME64 = 417 + SYS_MQ_TIMEDSEND_TIME64 = 418 + SYS_MQ_TIMEDRECEIVE_TIME64 = 419 + SYS_SEMTIMEDOP_TIME64 = 420 + SYS_RT_SIGTIMEDWAIT_TIME64 = 421 + SYS_FUTEX_TIME64 = 422 + SYS_SCHED_RR_GET_INTERVAL_TIME64 = 423 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_QUOTACTL_FD = 443 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 + SYS_PROCESS_MRELEASE = 448 + SYS_FUTEX_WAITV = 449 + SYS_SET_MEMPOLICY_HOME_NODE = 450 + SYS_CACHESTAT = 451 + SYS_FCHMODAT2 = 452 + SYS_MAP_SHADOW_STACK = 453 + SYS_FUTEX_WAKE = 454 + SYS_FUTEX_WAIT = 455 + SYS_FUTEX_REQUEUE = 456 + SYS_STATMOUNT = 457 + SYS_LISTMOUNT = 458 + SYS_LSM_GET_SELF_ATTR = 459 + SYS_LSM_SET_SELF_ATTR = 460 + SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 +) diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go new file mode 100644 index 000000000..38c53ec51 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go @@ -0,0 +1,332 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/arm64/include -fsigned-char /tmp/arm64/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm64 && linux + +package unix + +const ( + SYS_IO_SETUP = 0 + SYS_IO_DESTROY = 1 + SYS_IO_SUBMIT = 2 + SYS_IO_CANCEL = 3 + SYS_IO_GETEVENTS = 4 + SYS_SETXATTR = 5 + SYS_LSETXATTR = 6 + SYS_FSETXATTR = 7 + SYS_GETXATTR = 8 + SYS_LGETXATTR = 9 + SYS_FGETXATTR = 10 + SYS_LISTXATTR = 11 + SYS_LLISTXATTR = 12 + SYS_FLISTXATTR = 13 + SYS_REMOVEXATTR = 14 + SYS_LREMOVEXATTR = 15 + SYS_FREMOVEXATTR = 16 + SYS_GETCWD = 17 + SYS_LOOKUP_DCOOKIE = 18 + SYS_EVENTFD2 = 19 + SYS_EPOLL_CREATE1 = 20 + SYS_EPOLL_CTL = 21 + SYS_EPOLL_PWAIT = 22 + SYS_DUP = 23 + SYS_DUP3 = 24 + SYS_FCNTL = 25 + SYS_INOTIFY_INIT1 = 26 + SYS_INOTIFY_ADD_WATCH = 27 + SYS_INOTIFY_RM_WATCH = 28 + SYS_IOCTL = 29 + SYS_IOPRIO_SET = 30 + SYS_IOPRIO_GET = 31 + SYS_FLOCK = 32 + SYS_MKNODAT = 33 + SYS_MKDIRAT = 34 + SYS_UNLINKAT = 35 + SYS_SYMLINKAT = 36 + SYS_LINKAT = 37 + SYS_RENAMEAT = 38 + SYS_UMOUNT2 = 39 + SYS_MOUNT = 40 + SYS_PIVOT_ROOT = 41 + SYS_NFSSERVCTL = 42 + SYS_STATFS = 43 + SYS_FSTATFS = 44 + SYS_TRUNCATE = 45 + SYS_FTRUNCATE = 46 + SYS_FALLOCATE = 47 + SYS_FACCESSAT = 48 + SYS_CHDIR = 49 + SYS_FCHDIR = 50 + SYS_CHROOT = 51 + SYS_FCHMOD = 52 + SYS_FCHMODAT = 53 + SYS_FCHOWNAT = 54 + SYS_FCHOWN = 55 + SYS_OPENAT = 56 + SYS_CLOSE = 57 + SYS_VHANGUP = 58 + SYS_PIPE2 = 59 + SYS_QUOTACTL = 60 + SYS_GETDENTS64 = 61 + SYS_LSEEK = 62 + SYS_READ = 63 + SYS_WRITE = 64 + SYS_READV = 65 + SYS_WRITEV = 66 + SYS_PREAD64 = 67 + SYS_PWRITE64 = 68 + SYS_PREADV = 69 + SYS_PWRITEV = 70 + SYS_SENDFILE = 71 + SYS_PSELECT6 = 72 + SYS_PPOLL = 73 + SYS_SIGNALFD4 = 74 + SYS_VMSPLICE = 75 + SYS_SPLICE = 76 + SYS_TEE = 77 + SYS_READLINKAT = 78 + SYS_NEWFSTATAT = 79 + SYS_FSTAT = 80 + SYS_SYNC = 81 + SYS_FSYNC = 82 + SYS_FDATASYNC = 83 + SYS_SYNC_FILE_RANGE = 84 + SYS_TIMERFD_CREATE = 85 + SYS_TIMERFD_SETTIME = 86 + SYS_TIMERFD_GETTIME = 87 + SYS_UTIMENSAT = 88 + SYS_ACCT = 89 + SYS_CAPGET = 90 + SYS_CAPSET = 91 + SYS_PERSONALITY = 92 + SYS_EXIT = 93 + SYS_EXIT_GROUP = 94 + SYS_WAITID = 95 + SYS_SET_TID_ADDRESS = 96 + SYS_UNSHARE = 97 + SYS_FUTEX = 98 + SYS_SET_ROBUST_LIST = 99 + SYS_GET_ROBUST_LIST = 100 + SYS_NANOSLEEP = 101 + SYS_GETITIMER = 102 + SYS_SETITIMER = 103 + SYS_KEXEC_LOAD = 104 + SYS_INIT_MODULE = 105 + SYS_DELETE_MODULE = 106 + SYS_TIMER_CREATE = 107 + SYS_TIMER_GETTIME = 108 + SYS_TIMER_GETOVERRUN = 109 + SYS_TIMER_SETTIME = 110 + SYS_TIMER_DELETE = 111 + SYS_CLOCK_SETTIME = 112 + SYS_CLOCK_GETTIME = 113 + SYS_CLOCK_GETRES = 114 + SYS_CLOCK_NANOSLEEP = 115 + SYS_SYSLOG = 116 + SYS_PTRACE = 117 + SYS_SCHED_SETPARAM = 118 + SYS_SCHED_SETSCHEDULER = 119 + SYS_SCHED_GETSCHEDULER = 120 + SYS_SCHED_GETPARAM = 121 + SYS_SCHED_SETAFFINITY = 122 + SYS_SCHED_GETAFFINITY = 123 + SYS_SCHED_YIELD = 124 + SYS_SCHED_GET_PRIORITY_MAX = 125 + SYS_SCHED_GET_PRIORITY_MIN = 126 + SYS_SCHED_RR_GET_INTERVAL = 127 + SYS_RESTART_SYSCALL = 128 + SYS_KILL = 129 + SYS_TKILL = 130 + SYS_TGKILL = 131 + SYS_SIGALTSTACK = 132 + SYS_RT_SIGSUSPEND = 133 + SYS_RT_SIGACTION = 134 + SYS_RT_SIGPROCMASK = 135 + SYS_RT_SIGPENDING = 136 + SYS_RT_SIGTIMEDWAIT = 137 + SYS_RT_SIGQUEUEINFO = 138 + SYS_RT_SIGRETURN = 139 + SYS_SETPRIORITY = 140 + SYS_GETPRIORITY = 141 + SYS_REBOOT = 142 + SYS_SETREGID = 143 + SYS_SETGID = 144 + SYS_SETREUID = 145 + SYS_SETUID = 146 + SYS_SETRESUID = 147 + SYS_GETRESUID = 148 + SYS_SETRESGID = 149 + SYS_GETRESGID = 150 + SYS_SETFSUID = 151 + SYS_SETFSGID = 152 + SYS_TIMES = 153 + SYS_SETPGID = 154 + SYS_GETPGID = 155 + SYS_GETSID = 156 + SYS_SETSID = 157 + SYS_GETGROUPS = 158 + SYS_SETGROUPS = 159 + SYS_UNAME = 160 + SYS_SETHOSTNAME = 161 + SYS_SETDOMAINNAME = 162 + SYS_GETRLIMIT = 163 + SYS_SETRLIMIT = 164 + SYS_GETRUSAGE = 165 + SYS_UMASK = 166 + SYS_PRCTL = 167 + SYS_GETCPU = 168 + SYS_GETTIMEOFDAY = 169 + SYS_SETTIMEOFDAY = 170 + SYS_ADJTIMEX = 171 + SYS_GETPID = 172 + SYS_GETPPID = 173 + SYS_GETUID = 174 + SYS_GETEUID = 175 + SYS_GETGID = 176 + SYS_GETEGID = 177 + SYS_GETTID = 178 + SYS_SYSINFO = 179 + SYS_MQ_OPEN = 180 + SYS_MQ_UNLINK = 181 + SYS_MQ_TIMEDSEND = 182 + SYS_MQ_TIMEDRECEIVE = 183 + SYS_MQ_NOTIFY = 184 + SYS_MQ_GETSETATTR = 185 + SYS_MSGGET = 186 + SYS_MSGCTL = 187 + SYS_MSGRCV = 188 + SYS_MSGSND = 189 + SYS_SEMGET = 190 + SYS_SEMCTL = 191 + SYS_SEMTIMEDOP = 192 + SYS_SEMOP = 193 + SYS_SHMGET = 194 + SYS_SHMCTL = 195 + SYS_SHMAT = 196 + SYS_SHMDT = 197 + SYS_SOCKET = 198 + SYS_SOCKETPAIR = 199 + SYS_BIND = 200 + SYS_LISTEN = 201 + SYS_ACCEPT = 202 + SYS_CONNECT = 203 + SYS_GETSOCKNAME = 204 + SYS_GETPEERNAME = 205 + SYS_SENDTO = 206 + SYS_RECVFROM = 207 + SYS_SETSOCKOPT = 208 + SYS_GETSOCKOPT = 209 + SYS_SHUTDOWN = 210 + SYS_SENDMSG = 211 + SYS_RECVMSG = 212 + SYS_READAHEAD = 213 + SYS_BRK = 214 + SYS_MUNMAP = 215 + SYS_MREMAP = 216 + SYS_ADD_KEY = 217 + SYS_REQUEST_KEY = 218 + SYS_KEYCTL = 219 + SYS_CLONE = 220 + SYS_EXECVE = 221 + SYS_MMAP = 222 + SYS_FADVISE64 = 223 + SYS_SWAPON = 224 + SYS_SWAPOFF = 225 + SYS_MPROTECT = 226 + SYS_MSYNC = 227 + SYS_MLOCK = 228 + SYS_MUNLOCK = 229 + SYS_MLOCKALL = 230 + SYS_MUNLOCKALL = 231 + SYS_MINCORE = 232 + SYS_MADVISE = 233 + SYS_REMAP_FILE_PAGES = 234 + SYS_MBIND = 235 + SYS_GET_MEMPOLICY = 236 + SYS_SET_MEMPOLICY = 237 + SYS_MIGRATE_PAGES = 238 + SYS_MOVE_PAGES = 239 + SYS_RT_TGSIGQUEUEINFO = 240 + SYS_PERF_EVENT_OPEN = 241 + SYS_ACCEPT4 = 242 + SYS_RECVMMSG = 243 + SYS_ARCH_SPECIFIC_SYSCALL = 244 + SYS_WAIT4 = 260 + SYS_PRLIMIT64 = 261 + SYS_FANOTIFY_INIT = 262 + SYS_FANOTIFY_MARK = 263 + SYS_NAME_TO_HANDLE_AT = 264 + SYS_OPEN_BY_HANDLE_AT = 265 + SYS_CLOCK_ADJTIME = 266 + SYS_SYNCFS = 267 + SYS_SETNS = 268 + SYS_SENDMMSG = 269 + SYS_PROCESS_VM_READV = 270 + SYS_PROCESS_VM_WRITEV = 271 + SYS_KCMP = 272 + SYS_FINIT_MODULE = 273 + SYS_SCHED_SETATTR = 274 + SYS_SCHED_GETATTR = 275 + SYS_RENAMEAT2 = 276 + SYS_SECCOMP = 277 + SYS_GETRANDOM = 278 + SYS_MEMFD_CREATE = 279 + SYS_BPF = 280 + SYS_EXECVEAT = 281 + SYS_USERFAULTFD = 282 + SYS_MEMBARRIER = 283 + SYS_MLOCK2 = 284 + SYS_COPY_FILE_RANGE = 285 + SYS_PREADV2 = 286 + SYS_PWRITEV2 = 287 + SYS_PKEY_MPROTECT = 288 + SYS_PKEY_ALLOC = 289 + SYS_PKEY_FREE = 290 + SYS_STATX = 291 + SYS_IO_PGETEVENTS = 292 + SYS_RSEQ = 293 + SYS_KEXEC_FILE_LOAD = 294 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_QUOTACTL_FD = 443 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 + SYS_MEMFD_SECRET = 447 + SYS_PROCESS_MRELEASE = 448 + SYS_FUTEX_WAITV = 449 + SYS_SET_MEMPOLICY_HOME_NODE = 450 + SYS_CACHESTAT = 451 + SYS_FCHMODAT2 = 452 + SYS_MAP_SHADOW_STACK = 453 + SYS_FUTEX_WAKE = 454 + SYS_FUTEX_WAIT = 455 + SYS_FUTEX_REQUEUE = 456 + SYS_STATMOUNT = 457 + SYS_LISTMOUNT = 458 + SYS_LSM_GET_SELF_ATTR = 459 + SYS_LSM_SET_SELF_ATTR = 460 + SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 +) diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go new file mode 100644 index 000000000..31d2e71a1 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go @@ -0,0 +1,328 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/loong64/include /tmp/loong64/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build loong64 && linux + +package unix + +const ( + SYS_IO_SETUP = 0 + SYS_IO_DESTROY = 1 + SYS_IO_SUBMIT = 2 + SYS_IO_CANCEL = 3 + SYS_IO_GETEVENTS = 4 + SYS_SETXATTR = 5 + SYS_LSETXATTR = 6 + SYS_FSETXATTR = 7 + SYS_GETXATTR = 8 + SYS_LGETXATTR = 9 + SYS_FGETXATTR = 10 + SYS_LISTXATTR = 11 + SYS_LLISTXATTR = 12 + SYS_FLISTXATTR = 13 + SYS_REMOVEXATTR = 14 + SYS_LREMOVEXATTR = 15 + SYS_FREMOVEXATTR = 16 + SYS_GETCWD = 17 + SYS_LOOKUP_DCOOKIE = 18 + SYS_EVENTFD2 = 19 + SYS_EPOLL_CREATE1 = 20 + SYS_EPOLL_CTL = 21 + SYS_EPOLL_PWAIT = 22 + SYS_DUP = 23 + SYS_DUP3 = 24 + SYS_FCNTL = 25 + SYS_INOTIFY_INIT1 = 26 + SYS_INOTIFY_ADD_WATCH = 27 + SYS_INOTIFY_RM_WATCH = 28 + SYS_IOCTL = 29 + SYS_IOPRIO_SET = 30 + SYS_IOPRIO_GET = 31 + SYS_FLOCK = 32 + SYS_MKNODAT = 33 + SYS_MKDIRAT = 34 + SYS_UNLINKAT = 35 + SYS_SYMLINKAT = 36 + SYS_LINKAT = 37 + SYS_UMOUNT2 = 39 + SYS_MOUNT = 40 + SYS_PIVOT_ROOT = 41 + SYS_NFSSERVCTL = 42 + SYS_STATFS = 43 + SYS_FSTATFS = 44 + SYS_TRUNCATE = 45 + SYS_FTRUNCATE = 46 + SYS_FALLOCATE = 47 + SYS_FACCESSAT = 48 + SYS_CHDIR = 49 + SYS_FCHDIR = 50 + SYS_CHROOT = 51 + SYS_FCHMOD = 52 + SYS_FCHMODAT = 53 + SYS_FCHOWNAT = 54 + SYS_FCHOWN = 55 + SYS_OPENAT = 56 + SYS_CLOSE = 57 + SYS_VHANGUP = 58 + SYS_PIPE2 = 59 + SYS_QUOTACTL = 60 + SYS_GETDENTS64 = 61 + SYS_LSEEK = 62 + SYS_READ = 63 + SYS_WRITE = 64 + SYS_READV = 65 + SYS_WRITEV = 66 + SYS_PREAD64 = 67 + SYS_PWRITE64 = 68 + SYS_PREADV = 69 + SYS_PWRITEV = 70 + SYS_SENDFILE = 71 + SYS_PSELECT6 = 72 + SYS_PPOLL = 73 + SYS_SIGNALFD4 = 74 + SYS_VMSPLICE = 75 + SYS_SPLICE = 76 + SYS_TEE = 77 + SYS_READLINKAT = 78 + SYS_NEWFSTATAT = 79 + SYS_FSTAT = 80 + SYS_SYNC = 81 + SYS_FSYNC = 82 + SYS_FDATASYNC = 83 + SYS_SYNC_FILE_RANGE = 84 + SYS_TIMERFD_CREATE = 85 + SYS_TIMERFD_SETTIME = 86 + SYS_TIMERFD_GETTIME = 87 + SYS_UTIMENSAT = 88 + SYS_ACCT = 89 + SYS_CAPGET = 90 + SYS_CAPSET = 91 + SYS_PERSONALITY = 92 + SYS_EXIT = 93 + SYS_EXIT_GROUP = 94 + SYS_WAITID = 95 + SYS_SET_TID_ADDRESS = 96 + SYS_UNSHARE = 97 + SYS_FUTEX = 98 + SYS_SET_ROBUST_LIST = 99 + SYS_GET_ROBUST_LIST = 100 + SYS_NANOSLEEP = 101 + SYS_GETITIMER = 102 + SYS_SETITIMER = 103 + SYS_KEXEC_LOAD = 104 + SYS_INIT_MODULE = 105 + SYS_DELETE_MODULE = 106 + SYS_TIMER_CREATE = 107 + SYS_TIMER_GETTIME = 108 + SYS_TIMER_GETOVERRUN = 109 + SYS_TIMER_SETTIME = 110 + SYS_TIMER_DELETE = 111 + SYS_CLOCK_SETTIME = 112 + SYS_CLOCK_GETTIME = 113 + SYS_CLOCK_GETRES = 114 + SYS_CLOCK_NANOSLEEP = 115 + SYS_SYSLOG = 116 + SYS_PTRACE = 117 + SYS_SCHED_SETPARAM = 118 + SYS_SCHED_SETSCHEDULER = 119 + SYS_SCHED_GETSCHEDULER = 120 + SYS_SCHED_GETPARAM = 121 + SYS_SCHED_SETAFFINITY = 122 + SYS_SCHED_GETAFFINITY = 123 + SYS_SCHED_YIELD = 124 + SYS_SCHED_GET_PRIORITY_MAX = 125 + SYS_SCHED_GET_PRIORITY_MIN = 126 + SYS_SCHED_RR_GET_INTERVAL = 127 + SYS_RESTART_SYSCALL = 128 + SYS_KILL = 129 + SYS_TKILL = 130 + SYS_TGKILL = 131 + SYS_SIGALTSTACK = 132 + SYS_RT_SIGSUSPEND = 133 + SYS_RT_SIGACTION = 134 + SYS_RT_SIGPROCMASK = 135 + SYS_RT_SIGPENDING = 136 + SYS_RT_SIGTIMEDWAIT = 137 + SYS_RT_SIGQUEUEINFO = 138 + SYS_RT_SIGRETURN = 139 + SYS_SETPRIORITY = 140 + SYS_GETPRIORITY = 141 + SYS_REBOOT = 142 + SYS_SETREGID = 143 + SYS_SETGID = 144 + SYS_SETREUID = 145 + SYS_SETUID = 146 + SYS_SETRESUID = 147 + SYS_GETRESUID = 148 + SYS_SETRESGID = 149 + SYS_GETRESGID = 150 + SYS_SETFSUID = 151 + SYS_SETFSGID = 152 + SYS_TIMES = 153 + SYS_SETPGID = 154 + SYS_GETPGID = 155 + SYS_GETSID = 156 + SYS_SETSID = 157 + SYS_GETGROUPS = 158 + SYS_SETGROUPS = 159 + SYS_UNAME = 160 + SYS_SETHOSTNAME = 161 + SYS_SETDOMAINNAME = 162 + SYS_GETRUSAGE = 165 + SYS_UMASK = 166 + SYS_PRCTL = 167 + SYS_GETCPU = 168 + SYS_GETTIMEOFDAY = 169 + SYS_SETTIMEOFDAY = 170 + SYS_ADJTIMEX = 171 + SYS_GETPID = 172 + SYS_GETPPID = 173 + SYS_GETUID = 174 + SYS_GETEUID = 175 + SYS_GETGID = 176 + SYS_GETEGID = 177 + SYS_GETTID = 178 + SYS_SYSINFO = 179 + SYS_MQ_OPEN = 180 + SYS_MQ_UNLINK = 181 + SYS_MQ_TIMEDSEND = 182 + SYS_MQ_TIMEDRECEIVE = 183 + SYS_MQ_NOTIFY = 184 + SYS_MQ_GETSETATTR = 185 + SYS_MSGGET = 186 + SYS_MSGCTL = 187 + SYS_MSGRCV = 188 + SYS_MSGSND = 189 + SYS_SEMGET = 190 + SYS_SEMCTL = 191 + SYS_SEMTIMEDOP = 192 + SYS_SEMOP = 193 + SYS_SHMGET = 194 + SYS_SHMCTL = 195 + SYS_SHMAT = 196 + SYS_SHMDT = 197 + SYS_SOCKET = 198 + SYS_SOCKETPAIR = 199 + SYS_BIND = 200 + SYS_LISTEN = 201 + SYS_ACCEPT = 202 + SYS_CONNECT = 203 + SYS_GETSOCKNAME = 204 + SYS_GETPEERNAME = 205 + SYS_SENDTO = 206 + SYS_RECVFROM = 207 + SYS_SETSOCKOPT = 208 + SYS_GETSOCKOPT = 209 + SYS_SHUTDOWN = 210 + SYS_SENDMSG = 211 + SYS_RECVMSG = 212 + SYS_READAHEAD = 213 + SYS_BRK = 214 + SYS_MUNMAP = 215 + SYS_MREMAP = 216 + SYS_ADD_KEY = 217 + SYS_REQUEST_KEY = 218 + SYS_KEYCTL = 219 + SYS_CLONE = 220 + SYS_EXECVE = 221 + SYS_MMAP = 222 + SYS_FADVISE64 = 223 + SYS_SWAPON = 224 + SYS_SWAPOFF = 225 + SYS_MPROTECT = 226 + SYS_MSYNC = 227 + SYS_MLOCK = 228 + SYS_MUNLOCK = 229 + SYS_MLOCKALL = 230 + SYS_MUNLOCKALL = 231 + SYS_MINCORE = 232 + SYS_MADVISE = 233 + SYS_REMAP_FILE_PAGES = 234 + SYS_MBIND = 235 + SYS_GET_MEMPOLICY = 236 + SYS_SET_MEMPOLICY = 237 + SYS_MIGRATE_PAGES = 238 + SYS_MOVE_PAGES = 239 + SYS_RT_TGSIGQUEUEINFO = 240 + SYS_PERF_EVENT_OPEN = 241 + SYS_ACCEPT4 = 242 + SYS_RECVMMSG = 243 + SYS_ARCH_SPECIFIC_SYSCALL = 244 + SYS_WAIT4 = 260 + SYS_PRLIMIT64 = 261 + SYS_FANOTIFY_INIT = 262 + SYS_FANOTIFY_MARK = 263 + SYS_NAME_TO_HANDLE_AT = 264 + SYS_OPEN_BY_HANDLE_AT = 265 + SYS_CLOCK_ADJTIME = 266 + SYS_SYNCFS = 267 + SYS_SETNS = 268 + SYS_SENDMMSG = 269 + SYS_PROCESS_VM_READV = 270 + SYS_PROCESS_VM_WRITEV = 271 + SYS_KCMP = 272 + SYS_FINIT_MODULE = 273 + SYS_SCHED_SETATTR = 274 + SYS_SCHED_GETATTR = 275 + SYS_RENAMEAT2 = 276 + SYS_SECCOMP = 277 + SYS_GETRANDOM = 278 + SYS_MEMFD_CREATE = 279 + SYS_BPF = 280 + SYS_EXECVEAT = 281 + SYS_USERFAULTFD = 282 + SYS_MEMBARRIER = 283 + SYS_MLOCK2 = 284 + SYS_COPY_FILE_RANGE = 285 + SYS_PREADV2 = 286 + SYS_PWRITEV2 = 287 + SYS_PKEY_MPROTECT = 288 + SYS_PKEY_ALLOC = 289 + SYS_PKEY_FREE = 290 + SYS_STATX = 291 + SYS_IO_PGETEVENTS = 292 + SYS_RSEQ = 293 + SYS_KEXEC_FILE_LOAD = 294 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_QUOTACTL_FD = 443 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 + SYS_PROCESS_MRELEASE = 448 + SYS_FUTEX_WAITV = 449 + SYS_SET_MEMPOLICY_HOME_NODE = 450 + SYS_CACHESTAT = 451 + SYS_FCHMODAT2 = 452 + SYS_MAP_SHADOW_STACK = 453 + SYS_FUTEX_WAKE = 454 + SYS_FUTEX_WAIT = 455 + SYS_FUTEX_REQUEUE = 456 + SYS_STATMOUNT = 457 + SYS_LISTMOUNT = 458 + SYS_LSM_GET_SELF_ATTR = 459 + SYS_LSM_SET_SELF_ATTR = 460 + SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 +) diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go new file mode 100644 index 000000000..f4184a336 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go @@ -0,0 +1,449 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mips/include /tmp/mips/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build mips && linux + +package unix + +const ( + SYS_SYSCALL = 4000 + SYS_EXIT = 4001 + SYS_FORK = 4002 + SYS_READ = 4003 + SYS_WRITE = 4004 + SYS_OPEN = 4005 + SYS_CLOSE = 4006 + SYS_WAITPID = 4007 + SYS_CREAT = 4008 + SYS_LINK = 4009 + SYS_UNLINK = 4010 + SYS_EXECVE = 4011 + SYS_CHDIR = 4012 + SYS_TIME = 4013 + SYS_MKNOD = 4014 + SYS_CHMOD = 4015 + SYS_LCHOWN = 4016 + SYS_BREAK = 4017 + SYS_UNUSED18 = 4018 + SYS_LSEEK = 4019 + SYS_GETPID = 4020 + SYS_MOUNT = 4021 + SYS_UMOUNT = 4022 + SYS_SETUID = 4023 + SYS_GETUID = 4024 + SYS_STIME = 4025 + SYS_PTRACE = 4026 + SYS_ALARM = 4027 + SYS_UNUSED28 = 4028 + SYS_PAUSE = 4029 + SYS_UTIME = 4030 + SYS_STTY = 4031 + SYS_GTTY = 4032 + SYS_ACCESS = 4033 + SYS_NICE = 4034 + SYS_FTIME = 4035 + SYS_SYNC = 4036 + SYS_KILL = 4037 + SYS_RENAME = 4038 + SYS_MKDIR = 4039 + SYS_RMDIR = 4040 + SYS_DUP = 4041 + SYS_PIPE = 4042 + SYS_TIMES = 4043 + SYS_PROF = 4044 + SYS_BRK = 4045 + SYS_SETGID = 4046 + SYS_GETGID = 4047 + SYS_SIGNAL = 4048 + SYS_GETEUID = 4049 + SYS_GETEGID = 4050 + SYS_ACCT = 4051 + SYS_UMOUNT2 = 4052 + SYS_LOCK = 4053 + SYS_IOCTL = 4054 + SYS_FCNTL = 4055 + SYS_MPX = 4056 + SYS_SETPGID = 4057 + SYS_ULIMIT = 4058 + SYS_UNUSED59 = 4059 + SYS_UMASK = 4060 + SYS_CHROOT = 4061 + SYS_USTAT = 4062 + SYS_DUP2 = 4063 + SYS_GETPPID = 4064 + SYS_GETPGRP = 4065 + SYS_SETSID = 4066 + SYS_SIGACTION = 4067 + SYS_SGETMASK = 4068 + SYS_SSETMASK = 4069 + SYS_SETREUID = 4070 + SYS_SETREGID = 4071 + SYS_SIGSUSPEND = 4072 + SYS_SIGPENDING = 4073 + SYS_SETHOSTNAME = 4074 + SYS_SETRLIMIT = 4075 + SYS_GETRLIMIT = 4076 + SYS_GETRUSAGE = 4077 + SYS_GETTIMEOFDAY = 4078 + SYS_SETTIMEOFDAY = 4079 + SYS_GETGROUPS = 4080 + SYS_SETGROUPS = 4081 + SYS_RESERVED82 = 4082 + SYS_SYMLINK = 4083 + SYS_UNUSED84 = 4084 + SYS_READLINK = 4085 + SYS_USELIB = 4086 + SYS_SWAPON = 4087 + SYS_REBOOT = 4088 + SYS_READDIR = 4089 + SYS_MMAP = 4090 + SYS_MUNMAP = 4091 + SYS_TRUNCATE = 4092 + SYS_FTRUNCATE = 4093 + SYS_FCHMOD = 4094 + SYS_FCHOWN = 4095 + SYS_GETPRIORITY = 4096 + SYS_SETPRIORITY = 4097 + SYS_PROFIL = 4098 + SYS_STATFS = 4099 + SYS_FSTATFS = 4100 + SYS_IOPERM = 4101 + SYS_SOCKETCALL = 4102 + SYS_SYSLOG = 4103 + SYS_SETITIMER = 4104 + SYS_GETITIMER = 4105 + SYS_STAT = 4106 + SYS_LSTAT = 4107 + SYS_FSTAT = 4108 + SYS_UNUSED109 = 4109 + SYS_IOPL = 4110 + SYS_VHANGUP = 4111 + SYS_IDLE = 4112 + SYS_VM86 = 4113 + SYS_WAIT4 = 4114 + SYS_SWAPOFF = 4115 + SYS_SYSINFO = 4116 + SYS_IPC = 4117 + SYS_FSYNC = 4118 + SYS_SIGRETURN = 4119 + SYS_CLONE = 4120 + SYS_SETDOMAINNAME = 4121 + SYS_UNAME = 4122 + SYS_MODIFY_LDT = 4123 + SYS_ADJTIMEX = 4124 + SYS_MPROTECT = 4125 + SYS_SIGPROCMASK = 4126 + SYS_CREATE_MODULE = 4127 + SYS_INIT_MODULE = 4128 + SYS_DELETE_MODULE = 4129 + SYS_GET_KERNEL_SYMS = 4130 + SYS_QUOTACTL = 4131 + SYS_GETPGID = 4132 + SYS_FCHDIR = 4133 + SYS_BDFLUSH = 4134 + SYS_SYSFS = 4135 + SYS_PERSONALITY = 4136 + SYS_AFS_SYSCALL = 4137 + SYS_SETFSUID = 4138 + SYS_SETFSGID = 4139 + SYS__LLSEEK = 4140 + SYS_GETDENTS = 4141 + SYS__NEWSELECT = 4142 + SYS_FLOCK = 4143 + SYS_MSYNC = 4144 + SYS_READV = 4145 + SYS_WRITEV = 4146 + SYS_CACHEFLUSH = 4147 + SYS_CACHECTL = 4148 + SYS_SYSMIPS = 4149 + SYS_UNUSED150 = 4150 + SYS_GETSID = 4151 + SYS_FDATASYNC = 4152 + SYS__SYSCTL = 4153 + SYS_MLOCK = 4154 + SYS_MUNLOCK = 4155 + SYS_MLOCKALL = 4156 + SYS_MUNLOCKALL = 4157 + SYS_SCHED_SETPARAM = 4158 + SYS_SCHED_GETPARAM = 4159 + SYS_SCHED_SETSCHEDULER = 4160 + SYS_SCHED_GETSCHEDULER = 4161 + SYS_SCHED_YIELD = 4162 + SYS_SCHED_GET_PRIORITY_MAX = 4163 + SYS_SCHED_GET_PRIORITY_MIN = 4164 + SYS_SCHED_RR_GET_INTERVAL = 4165 + SYS_NANOSLEEP = 4166 + SYS_MREMAP = 4167 + SYS_ACCEPT = 4168 + SYS_BIND = 4169 + SYS_CONNECT = 4170 + SYS_GETPEERNAME = 4171 + SYS_GETSOCKNAME = 4172 + SYS_GETSOCKOPT = 4173 + SYS_LISTEN = 4174 + SYS_RECV = 4175 + SYS_RECVFROM = 4176 + SYS_RECVMSG = 4177 + SYS_SEND = 4178 + SYS_SENDMSG = 4179 + SYS_SENDTO = 4180 + SYS_SETSOCKOPT = 4181 + SYS_SHUTDOWN = 4182 + SYS_SOCKET = 4183 + SYS_SOCKETPAIR = 4184 + SYS_SETRESUID = 4185 + SYS_GETRESUID = 4186 + SYS_QUERY_MODULE = 4187 + SYS_POLL = 4188 + SYS_NFSSERVCTL = 4189 + SYS_SETRESGID = 4190 + SYS_GETRESGID = 4191 + SYS_PRCTL = 4192 + SYS_RT_SIGRETURN = 4193 + SYS_RT_SIGACTION = 4194 + SYS_RT_SIGPROCMASK = 4195 + SYS_RT_SIGPENDING = 4196 + SYS_RT_SIGTIMEDWAIT = 4197 + SYS_RT_SIGQUEUEINFO = 4198 + SYS_RT_SIGSUSPEND = 4199 + SYS_PREAD64 = 4200 + SYS_PWRITE64 = 4201 + SYS_CHOWN = 4202 + SYS_GETCWD = 4203 + SYS_CAPGET = 4204 + SYS_CAPSET = 4205 + SYS_SIGALTSTACK = 4206 + SYS_SENDFILE = 4207 + SYS_GETPMSG = 4208 + SYS_PUTPMSG = 4209 + SYS_MMAP2 = 4210 + SYS_TRUNCATE64 = 4211 + SYS_FTRUNCATE64 = 4212 + SYS_STAT64 = 4213 + SYS_LSTAT64 = 4214 + SYS_FSTAT64 = 4215 + SYS_PIVOT_ROOT = 4216 + SYS_MINCORE = 4217 + SYS_MADVISE = 4218 + SYS_GETDENTS64 = 4219 + SYS_FCNTL64 = 4220 + SYS_RESERVED221 = 4221 + SYS_GETTID = 4222 + SYS_READAHEAD = 4223 + SYS_SETXATTR = 4224 + SYS_LSETXATTR = 4225 + SYS_FSETXATTR = 4226 + SYS_GETXATTR = 4227 + SYS_LGETXATTR = 4228 + SYS_FGETXATTR = 4229 + SYS_LISTXATTR = 4230 + SYS_LLISTXATTR = 4231 + SYS_FLISTXATTR = 4232 + SYS_REMOVEXATTR = 4233 + SYS_LREMOVEXATTR = 4234 + SYS_FREMOVEXATTR = 4235 + SYS_TKILL = 4236 + SYS_SENDFILE64 = 4237 + SYS_FUTEX = 4238 + SYS_SCHED_SETAFFINITY = 4239 + SYS_SCHED_GETAFFINITY = 4240 + SYS_IO_SETUP = 4241 + SYS_IO_DESTROY = 4242 + SYS_IO_GETEVENTS = 4243 + SYS_IO_SUBMIT = 4244 + SYS_IO_CANCEL = 4245 + SYS_EXIT_GROUP = 4246 + SYS_LOOKUP_DCOOKIE = 4247 + SYS_EPOLL_CREATE = 4248 + SYS_EPOLL_CTL = 4249 + SYS_EPOLL_WAIT = 4250 + SYS_REMAP_FILE_PAGES = 4251 + SYS_SET_TID_ADDRESS = 4252 + SYS_RESTART_SYSCALL = 4253 + SYS_FADVISE64 = 4254 + SYS_STATFS64 = 4255 + SYS_FSTATFS64 = 4256 + SYS_TIMER_CREATE = 4257 + SYS_TIMER_SETTIME = 4258 + SYS_TIMER_GETTIME = 4259 + SYS_TIMER_GETOVERRUN = 4260 + SYS_TIMER_DELETE = 4261 + SYS_CLOCK_SETTIME = 4262 + SYS_CLOCK_GETTIME = 4263 + SYS_CLOCK_GETRES = 4264 + SYS_CLOCK_NANOSLEEP = 4265 + SYS_TGKILL = 4266 + SYS_UTIMES = 4267 + SYS_MBIND = 4268 + SYS_GET_MEMPOLICY = 4269 + SYS_SET_MEMPOLICY = 4270 + SYS_MQ_OPEN = 4271 + SYS_MQ_UNLINK = 4272 + SYS_MQ_TIMEDSEND = 4273 + SYS_MQ_TIMEDRECEIVE = 4274 + SYS_MQ_NOTIFY = 4275 + SYS_MQ_GETSETATTR = 4276 + SYS_VSERVER = 4277 + SYS_WAITID = 4278 + SYS_ADD_KEY = 4280 + SYS_REQUEST_KEY = 4281 + SYS_KEYCTL = 4282 + SYS_SET_THREAD_AREA = 4283 + SYS_INOTIFY_INIT = 4284 + SYS_INOTIFY_ADD_WATCH = 4285 + SYS_INOTIFY_RM_WATCH = 4286 + SYS_MIGRATE_PAGES = 4287 + SYS_OPENAT = 4288 + SYS_MKDIRAT = 4289 + SYS_MKNODAT = 4290 + SYS_FCHOWNAT = 4291 + SYS_FUTIMESAT = 4292 + SYS_FSTATAT64 = 4293 + SYS_UNLINKAT = 4294 + SYS_RENAMEAT = 4295 + SYS_LINKAT = 4296 + SYS_SYMLINKAT = 4297 + SYS_READLINKAT = 4298 + SYS_FCHMODAT = 4299 + SYS_FACCESSAT = 4300 + SYS_PSELECT6 = 4301 + SYS_PPOLL = 4302 + SYS_UNSHARE = 4303 + SYS_SPLICE = 4304 + SYS_SYNC_FILE_RANGE = 4305 + SYS_TEE = 4306 + SYS_VMSPLICE = 4307 + SYS_MOVE_PAGES = 4308 + SYS_SET_ROBUST_LIST = 4309 + SYS_GET_ROBUST_LIST = 4310 + SYS_KEXEC_LOAD = 4311 + SYS_GETCPU = 4312 + SYS_EPOLL_PWAIT = 4313 + SYS_IOPRIO_SET = 4314 + SYS_IOPRIO_GET = 4315 + SYS_UTIMENSAT = 4316 + SYS_SIGNALFD = 4317 + SYS_TIMERFD = 4318 + SYS_EVENTFD = 4319 + SYS_FALLOCATE = 4320 + SYS_TIMERFD_CREATE = 4321 + SYS_TIMERFD_GETTIME = 4322 + SYS_TIMERFD_SETTIME = 4323 + SYS_SIGNALFD4 = 4324 + SYS_EVENTFD2 = 4325 + SYS_EPOLL_CREATE1 = 4326 + SYS_DUP3 = 4327 + SYS_PIPE2 = 4328 + SYS_INOTIFY_INIT1 = 4329 + SYS_PREADV = 4330 + SYS_PWRITEV = 4331 + SYS_RT_TGSIGQUEUEINFO = 4332 + SYS_PERF_EVENT_OPEN = 4333 + SYS_ACCEPT4 = 4334 + SYS_RECVMMSG = 4335 + SYS_FANOTIFY_INIT = 4336 + SYS_FANOTIFY_MARK = 4337 + SYS_PRLIMIT64 = 4338 + SYS_NAME_TO_HANDLE_AT = 4339 + SYS_OPEN_BY_HANDLE_AT = 4340 + SYS_CLOCK_ADJTIME = 4341 + SYS_SYNCFS = 4342 + SYS_SENDMMSG = 4343 + SYS_SETNS = 4344 + SYS_PROCESS_VM_READV = 4345 + SYS_PROCESS_VM_WRITEV = 4346 + SYS_KCMP = 4347 + SYS_FINIT_MODULE = 4348 + SYS_SCHED_SETATTR = 4349 + SYS_SCHED_GETATTR = 4350 + SYS_RENAMEAT2 = 4351 + SYS_SECCOMP = 4352 + SYS_GETRANDOM = 4353 + SYS_MEMFD_CREATE = 4354 + SYS_BPF = 4355 + SYS_EXECVEAT = 4356 + SYS_USERFAULTFD = 4357 + SYS_MEMBARRIER = 4358 + SYS_MLOCK2 = 4359 + SYS_COPY_FILE_RANGE = 4360 + SYS_PREADV2 = 4361 + SYS_PWRITEV2 = 4362 + SYS_PKEY_MPROTECT = 4363 + SYS_PKEY_ALLOC = 4364 + SYS_PKEY_FREE = 4365 + SYS_STATX = 4366 + SYS_RSEQ = 4367 + SYS_IO_PGETEVENTS = 4368 + SYS_SEMGET = 4393 + SYS_SEMCTL = 4394 + SYS_SHMGET = 4395 + SYS_SHMCTL = 4396 + SYS_SHMAT = 4397 + SYS_SHMDT = 4398 + SYS_MSGGET = 4399 + SYS_MSGSND = 4400 + SYS_MSGRCV = 4401 + SYS_MSGCTL = 4402 + SYS_CLOCK_GETTIME64 = 4403 + SYS_CLOCK_SETTIME64 = 4404 + SYS_CLOCK_ADJTIME64 = 4405 + SYS_CLOCK_GETRES_TIME64 = 4406 + SYS_CLOCK_NANOSLEEP_TIME64 = 4407 + SYS_TIMER_GETTIME64 = 4408 + SYS_TIMER_SETTIME64 = 4409 + SYS_TIMERFD_GETTIME64 = 4410 + SYS_TIMERFD_SETTIME64 = 4411 + SYS_UTIMENSAT_TIME64 = 4412 + SYS_PSELECT6_TIME64 = 4413 + SYS_PPOLL_TIME64 = 4414 + SYS_IO_PGETEVENTS_TIME64 = 4416 + SYS_RECVMMSG_TIME64 = 4417 + SYS_MQ_TIMEDSEND_TIME64 = 4418 + SYS_MQ_TIMEDRECEIVE_TIME64 = 4419 + SYS_SEMTIMEDOP_TIME64 = 4420 + SYS_RT_SIGTIMEDWAIT_TIME64 = 4421 + SYS_FUTEX_TIME64 = 4422 + SYS_SCHED_RR_GET_INTERVAL_TIME64 = 4423 + SYS_PIDFD_SEND_SIGNAL = 4424 + SYS_IO_URING_SETUP = 4425 + SYS_IO_URING_ENTER = 4426 + SYS_IO_URING_REGISTER = 4427 + SYS_OPEN_TREE = 4428 + SYS_MOVE_MOUNT = 4429 + SYS_FSOPEN = 4430 + SYS_FSCONFIG = 4431 + SYS_FSMOUNT = 4432 + SYS_FSPICK = 4433 + SYS_PIDFD_OPEN = 4434 + SYS_CLONE3 = 4435 + SYS_CLOSE_RANGE = 4436 + SYS_OPENAT2 = 4437 + SYS_PIDFD_GETFD = 4438 + SYS_FACCESSAT2 = 4439 + SYS_PROCESS_MADVISE = 4440 + SYS_EPOLL_PWAIT2 = 4441 + SYS_MOUNT_SETATTR = 4442 + SYS_QUOTACTL_FD = 4443 + SYS_LANDLOCK_CREATE_RULESET = 4444 + SYS_LANDLOCK_ADD_RULE = 4445 + SYS_LANDLOCK_RESTRICT_SELF = 4446 + SYS_PROCESS_MRELEASE = 4448 + SYS_FUTEX_WAITV = 4449 + SYS_SET_MEMPOLICY_HOME_NODE = 4450 + SYS_CACHESTAT = 4451 + SYS_FCHMODAT2 = 4452 + SYS_MAP_SHADOW_STACK = 4453 + SYS_FUTEX_WAKE = 4454 + SYS_FUTEX_WAIT = 4455 + SYS_FUTEX_REQUEUE = 4456 + SYS_STATMOUNT = 4457 + SYS_LISTMOUNT = 4458 + SYS_LSM_GET_SELF_ATTR = 4459 + SYS_LSM_SET_SELF_ATTR = 4460 + SYS_LSM_LIST_MODULES = 4461 + SYS_MSEAL = 4462 + SYS_SETXATTRAT = 4463 + SYS_GETXATTRAT = 4464 + SYS_LISTXATTRAT = 4465 + SYS_REMOVEXATTRAT = 4466 +) diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go new file mode 100644 index 000000000..05b996227 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go @@ -0,0 +1,379 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mips64/include /tmp/mips64/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build mips64 && linux + +package unix + +const ( + SYS_READ = 5000 + SYS_WRITE = 5001 + SYS_OPEN = 5002 + SYS_CLOSE = 5003 + SYS_STAT = 5004 + SYS_FSTAT = 5005 + SYS_LSTAT = 5006 + SYS_POLL = 5007 + SYS_LSEEK = 5008 + SYS_MMAP = 5009 + SYS_MPROTECT = 5010 + SYS_MUNMAP = 5011 + SYS_BRK = 5012 + SYS_RT_SIGACTION = 5013 + SYS_RT_SIGPROCMASK = 5014 + SYS_IOCTL = 5015 + SYS_PREAD64 = 5016 + SYS_PWRITE64 = 5017 + SYS_READV = 5018 + SYS_WRITEV = 5019 + SYS_ACCESS = 5020 + SYS_PIPE = 5021 + SYS__NEWSELECT = 5022 + SYS_SCHED_YIELD = 5023 + SYS_MREMAP = 5024 + SYS_MSYNC = 5025 + SYS_MINCORE = 5026 + SYS_MADVISE = 5027 + SYS_SHMGET = 5028 + SYS_SHMAT = 5029 + SYS_SHMCTL = 5030 + SYS_DUP = 5031 + SYS_DUP2 = 5032 + SYS_PAUSE = 5033 + SYS_NANOSLEEP = 5034 + SYS_GETITIMER = 5035 + SYS_SETITIMER = 5036 + SYS_ALARM = 5037 + SYS_GETPID = 5038 + SYS_SENDFILE = 5039 + SYS_SOCKET = 5040 + SYS_CONNECT = 5041 + SYS_ACCEPT = 5042 + SYS_SENDTO = 5043 + SYS_RECVFROM = 5044 + SYS_SENDMSG = 5045 + SYS_RECVMSG = 5046 + SYS_SHUTDOWN = 5047 + SYS_BIND = 5048 + SYS_LISTEN = 5049 + SYS_GETSOCKNAME = 5050 + SYS_GETPEERNAME = 5051 + SYS_SOCKETPAIR = 5052 + SYS_SETSOCKOPT = 5053 + SYS_GETSOCKOPT = 5054 + SYS_CLONE = 5055 + SYS_FORK = 5056 + SYS_EXECVE = 5057 + SYS_EXIT = 5058 + SYS_WAIT4 = 5059 + SYS_KILL = 5060 + SYS_UNAME = 5061 + SYS_SEMGET = 5062 + SYS_SEMOP = 5063 + SYS_SEMCTL = 5064 + SYS_SHMDT = 5065 + SYS_MSGGET = 5066 + SYS_MSGSND = 5067 + SYS_MSGRCV = 5068 + SYS_MSGCTL = 5069 + SYS_FCNTL = 5070 + SYS_FLOCK = 5071 + SYS_FSYNC = 5072 + SYS_FDATASYNC = 5073 + SYS_TRUNCATE = 5074 + SYS_FTRUNCATE = 5075 + SYS_GETDENTS = 5076 + SYS_GETCWD = 5077 + SYS_CHDIR = 5078 + SYS_FCHDIR = 5079 + SYS_RENAME = 5080 + SYS_MKDIR = 5081 + SYS_RMDIR = 5082 + SYS_CREAT = 5083 + SYS_LINK = 5084 + SYS_UNLINK = 5085 + SYS_SYMLINK = 5086 + SYS_READLINK = 5087 + SYS_CHMOD = 5088 + SYS_FCHMOD = 5089 + SYS_CHOWN = 5090 + SYS_FCHOWN = 5091 + SYS_LCHOWN = 5092 + SYS_UMASK = 5093 + SYS_GETTIMEOFDAY = 5094 + SYS_GETRLIMIT = 5095 + SYS_GETRUSAGE = 5096 + SYS_SYSINFO = 5097 + SYS_TIMES = 5098 + SYS_PTRACE = 5099 + SYS_GETUID = 5100 + SYS_SYSLOG = 5101 + SYS_GETGID = 5102 + SYS_SETUID = 5103 + SYS_SETGID = 5104 + SYS_GETEUID = 5105 + SYS_GETEGID = 5106 + SYS_SETPGID = 5107 + SYS_GETPPID = 5108 + SYS_GETPGRP = 5109 + SYS_SETSID = 5110 + SYS_SETREUID = 5111 + SYS_SETREGID = 5112 + SYS_GETGROUPS = 5113 + SYS_SETGROUPS = 5114 + SYS_SETRESUID = 5115 + SYS_GETRESUID = 5116 + SYS_SETRESGID = 5117 + SYS_GETRESGID = 5118 + SYS_GETPGID = 5119 + SYS_SETFSUID = 5120 + SYS_SETFSGID = 5121 + SYS_GETSID = 5122 + SYS_CAPGET = 5123 + SYS_CAPSET = 5124 + SYS_RT_SIGPENDING = 5125 + SYS_RT_SIGTIMEDWAIT = 5126 + SYS_RT_SIGQUEUEINFO = 5127 + SYS_RT_SIGSUSPEND = 5128 + SYS_SIGALTSTACK = 5129 + SYS_UTIME = 5130 + SYS_MKNOD = 5131 + SYS_PERSONALITY = 5132 + SYS_USTAT = 5133 + SYS_STATFS = 5134 + SYS_FSTATFS = 5135 + SYS_SYSFS = 5136 + SYS_GETPRIORITY = 5137 + SYS_SETPRIORITY = 5138 + SYS_SCHED_SETPARAM = 5139 + SYS_SCHED_GETPARAM = 5140 + SYS_SCHED_SETSCHEDULER = 5141 + SYS_SCHED_GETSCHEDULER = 5142 + SYS_SCHED_GET_PRIORITY_MAX = 5143 + SYS_SCHED_GET_PRIORITY_MIN = 5144 + SYS_SCHED_RR_GET_INTERVAL = 5145 + SYS_MLOCK = 5146 + SYS_MUNLOCK = 5147 + SYS_MLOCKALL = 5148 + SYS_MUNLOCKALL = 5149 + SYS_VHANGUP = 5150 + SYS_PIVOT_ROOT = 5151 + SYS__SYSCTL = 5152 + SYS_PRCTL = 5153 + SYS_ADJTIMEX = 5154 + SYS_SETRLIMIT = 5155 + SYS_CHROOT = 5156 + SYS_SYNC = 5157 + SYS_ACCT = 5158 + SYS_SETTIMEOFDAY = 5159 + SYS_MOUNT = 5160 + SYS_UMOUNT2 = 5161 + SYS_SWAPON = 5162 + SYS_SWAPOFF = 5163 + SYS_REBOOT = 5164 + SYS_SETHOSTNAME = 5165 + SYS_SETDOMAINNAME = 5166 + SYS_CREATE_MODULE = 5167 + SYS_INIT_MODULE = 5168 + SYS_DELETE_MODULE = 5169 + SYS_GET_KERNEL_SYMS = 5170 + SYS_QUERY_MODULE = 5171 + SYS_QUOTACTL = 5172 + SYS_NFSSERVCTL = 5173 + SYS_GETPMSG = 5174 + SYS_PUTPMSG = 5175 + SYS_AFS_SYSCALL = 5176 + SYS_RESERVED177 = 5177 + SYS_GETTID = 5178 + SYS_READAHEAD = 5179 + SYS_SETXATTR = 5180 + SYS_LSETXATTR = 5181 + SYS_FSETXATTR = 5182 + SYS_GETXATTR = 5183 + SYS_LGETXATTR = 5184 + SYS_FGETXATTR = 5185 + SYS_LISTXATTR = 5186 + SYS_LLISTXATTR = 5187 + SYS_FLISTXATTR = 5188 + SYS_REMOVEXATTR = 5189 + SYS_LREMOVEXATTR = 5190 + SYS_FREMOVEXATTR = 5191 + SYS_TKILL = 5192 + SYS_RESERVED193 = 5193 + SYS_FUTEX = 5194 + SYS_SCHED_SETAFFINITY = 5195 + SYS_SCHED_GETAFFINITY = 5196 + SYS_CACHEFLUSH = 5197 + SYS_CACHECTL = 5198 + SYS_SYSMIPS = 5199 + SYS_IO_SETUP = 5200 + SYS_IO_DESTROY = 5201 + SYS_IO_GETEVENTS = 5202 + SYS_IO_SUBMIT = 5203 + SYS_IO_CANCEL = 5204 + SYS_EXIT_GROUP = 5205 + SYS_LOOKUP_DCOOKIE = 5206 + SYS_EPOLL_CREATE = 5207 + SYS_EPOLL_CTL = 5208 + SYS_EPOLL_WAIT = 5209 + SYS_REMAP_FILE_PAGES = 5210 + SYS_RT_SIGRETURN = 5211 + SYS_SET_TID_ADDRESS = 5212 + SYS_RESTART_SYSCALL = 5213 + SYS_SEMTIMEDOP = 5214 + SYS_FADVISE64 = 5215 + SYS_TIMER_CREATE = 5216 + SYS_TIMER_SETTIME = 5217 + SYS_TIMER_GETTIME = 5218 + SYS_TIMER_GETOVERRUN = 5219 + SYS_TIMER_DELETE = 5220 + SYS_CLOCK_SETTIME = 5221 + SYS_CLOCK_GETTIME = 5222 + SYS_CLOCK_GETRES = 5223 + SYS_CLOCK_NANOSLEEP = 5224 + SYS_TGKILL = 5225 + SYS_UTIMES = 5226 + SYS_MBIND = 5227 + SYS_GET_MEMPOLICY = 5228 + SYS_SET_MEMPOLICY = 5229 + SYS_MQ_OPEN = 5230 + SYS_MQ_UNLINK = 5231 + SYS_MQ_TIMEDSEND = 5232 + SYS_MQ_TIMEDRECEIVE = 5233 + SYS_MQ_NOTIFY = 5234 + SYS_MQ_GETSETATTR = 5235 + SYS_VSERVER = 5236 + SYS_WAITID = 5237 + SYS_ADD_KEY = 5239 + SYS_REQUEST_KEY = 5240 + SYS_KEYCTL = 5241 + SYS_SET_THREAD_AREA = 5242 + SYS_INOTIFY_INIT = 5243 + SYS_INOTIFY_ADD_WATCH = 5244 + SYS_INOTIFY_RM_WATCH = 5245 + SYS_MIGRATE_PAGES = 5246 + SYS_OPENAT = 5247 + SYS_MKDIRAT = 5248 + SYS_MKNODAT = 5249 + SYS_FCHOWNAT = 5250 + SYS_FUTIMESAT = 5251 + SYS_NEWFSTATAT = 5252 + SYS_UNLINKAT = 5253 + SYS_RENAMEAT = 5254 + SYS_LINKAT = 5255 + SYS_SYMLINKAT = 5256 + SYS_READLINKAT = 5257 + SYS_FCHMODAT = 5258 + SYS_FACCESSAT = 5259 + SYS_PSELECT6 = 5260 + SYS_PPOLL = 5261 + SYS_UNSHARE = 5262 + SYS_SPLICE = 5263 + SYS_SYNC_FILE_RANGE = 5264 + SYS_TEE = 5265 + SYS_VMSPLICE = 5266 + SYS_MOVE_PAGES = 5267 + SYS_SET_ROBUST_LIST = 5268 + SYS_GET_ROBUST_LIST = 5269 + SYS_KEXEC_LOAD = 5270 + SYS_GETCPU = 5271 + SYS_EPOLL_PWAIT = 5272 + SYS_IOPRIO_SET = 5273 + SYS_IOPRIO_GET = 5274 + SYS_UTIMENSAT = 5275 + SYS_SIGNALFD = 5276 + SYS_TIMERFD = 5277 + SYS_EVENTFD = 5278 + SYS_FALLOCATE = 5279 + SYS_TIMERFD_CREATE = 5280 + SYS_TIMERFD_GETTIME = 5281 + SYS_TIMERFD_SETTIME = 5282 + SYS_SIGNALFD4 = 5283 + SYS_EVENTFD2 = 5284 + SYS_EPOLL_CREATE1 = 5285 + SYS_DUP3 = 5286 + SYS_PIPE2 = 5287 + SYS_INOTIFY_INIT1 = 5288 + SYS_PREADV = 5289 + SYS_PWRITEV = 5290 + SYS_RT_TGSIGQUEUEINFO = 5291 + SYS_PERF_EVENT_OPEN = 5292 + SYS_ACCEPT4 = 5293 + SYS_RECVMMSG = 5294 + SYS_FANOTIFY_INIT = 5295 + SYS_FANOTIFY_MARK = 5296 + SYS_PRLIMIT64 = 5297 + SYS_NAME_TO_HANDLE_AT = 5298 + SYS_OPEN_BY_HANDLE_AT = 5299 + SYS_CLOCK_ADJTIME = 5300 + SYS_SYNCFS = 5301 + SYS_SENDMMSG = 5302 + SYS_SETNS = 5303 + SYS_PROCESS_VM_READV = 5304 + SYS_PROCESS_VM_WRITEV = 5305 + SYS_KCMP = 5306 + SYS_FINIT_MODULE = 5307 + SYS_GETDENTS64 = 5308 + SYS_SCHED_SETATTR = 5309 + SYS_SCHED_GETATTR = 5310 + SYS_RENAMEAT2 = 5311 + SYS_SECCOMP = 5312 + SYS_GETRANDOM = 5313 + SYS_MEMFD_CREATE = 5314 + SYS_BPF = 5315 + SYS_EXECVEAT = 5316 + SYS_USERFAULTFD = 5317 + SYS_MEMBARRIER = 5318 + SYS_MLOCK2 = 5319 + SYS_COPY_FILE_RANGE = 5320 + SYS_PREADV2 = 5321 + SYS_PWRITEV2 = 5322 + SYS_PKEY_MPROTECT = 5323 + SYS_PKEY_ALLOC = 5324 + SYS_PKEY_FREE = 5325 + SYS_STATX = 5326 + SYS_RSEQ = 5327 + SYS_IO_PGETEVENTS = 5328 + SYS_PIDFD_SEND_SIGNAL = 5424 + SYS_IO_URING_SETUP = 5425 + SYS_IO_URING_ENTER = 5426 + SYS_IO_URING_REGISTER = 5427 + SYS_OPEN_TREE = 5428 + SYS_MOVE_MOUNT = 5429 + SYS_FSOPEN = 5430 + SYS_FSCONFIG = 5431 + SYS_FSMOUNT = 5432 + SYS_FSPICK = 5433 + SYS_PIDFD_OPEN = 5434 + SYS_CLONE3 = 5435 + SYS_CLOSE_RANGE = 5436 + SYS_OPENAT2 = 5437 + SYS_PIDFD_GETFD = 5438 + SYS_FACCESSAT2 = 5439 + SYS_PROCESS_MADVISE = 5440 + SYS_EPOLL_PWAIT2 = 5441 + SYS_MOUNT_SETATTR = 5442 + SYS_QUOTACTL_FD = 5443 + SYS_LANDLOCK_CREATE_RULESET = 5444 + SYS_LANDLOCK_ADD_RULE = 5445 + SYS_LANDLOCK_RESTRICT_SELF = 5446 + SYS_PROCESS_MRELEASE = 5448 + SYS_FUTEX_WAITV = 5449 + SYS_SET_MEMPOLICY_HOME_NODE = 5450 + SYS_CACHESTAT = 5451 + SYS_FCHMODAT2 = 5452 + SYS_MAP_SHADOW_STACK = 5453 + SYS_FUTEX_WAKE = 5454 + SYS_FUTEX_WAIT = 5455 + SYS_FUTEX_REQUEUE = 5456 + SYS_STATMOUNT = 5457 + SYS_LISTMOUNT = 5458 + SYS_LSM_GET_SELF_ATTR = 5459 + SYS_LSM_SET_SELF_ATTR = 5460 + SYS_LSM_LIST_MODULES = 5461 + SYS_MSEAL = 5462 + SYS_SETXATTRAT = 5463 + SYS_GETXATTRAT = 5464 + SYS_LISTXATTRAT = 5465 + SYS_REMOVEXATTRAT = 5466 +) diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go new file mode 100644 index 000000000..43a256e9e --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go @@ -0,0 +1,379 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mips64le/include /tmp/mips64le/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build mips64le && linux + +package unix + +const ( + SYS_READ = 5000 + SYS_WRITE = 5001 + SYS_OPEN = 5002 + SYS_CLOSE = 5003 + SYS_STAT = 5004 + SYS_FSTAT = 5005 + SYS_LSTAT = 5006 + SYS_POLL = 5007 + SYS_LSEEK = 5008 + SYS_MMAP = 5009 + SYS_MPROTECT = 5010 + SYS_MUNMAP = 5011 + SYS_BRK = 5012 + SYS_RT_SIGACTION = 5013 + SYS_RT_SIGPROCMASK = 5014 + SYS_IOCTL = 5015 + SYS_PREAD64 = 5016 + SYS_PWRITE64 = 5017 + SYS_READV = 5018 + SYS_WRITEV = 5019 + SYS_ACCESS = 5020 + SYS_PIPE = 5021 + SYS__NEWSELECT = 5022 + SYS_SCHED_YIELD = 5023 + SYS_MREMAP = 5024 + SYS_MSYNC = 5025 + SYS_MINCORE = 5026 + SYS_MADVISE = 5027 + SYS_SHMGET = 5028 + SYS_SHMAT = 5029 + SYS_SHMCTL = 5030 + SYS_DUP = 5031 + SYS_DUP2 = 5032 + SYS_PAUSE = 5033 + SYS_NANOSLEEP = 5034 + SYS_GETITIMER = 5035 + SYS_SETITIMER = 5036 + SYS_ALARM = 5037 + SYS_GETPID = 5038 + SYS_SENDFILE = 5039 + SYS_SOCKET = 5040 + SYS_CONNECT = 5041 + SYS_ACCEPT = 5042 + SYS_SENDTO = 5043 + SYS_RECVFROM = 5044 + SYS_SENDMSG = 5045 + SYS_RECVMSG = 5046 + SYS_SHUTDOWN = 5047 + SYS_BIND = 5048 + SYS_LISTEN = 5049 + SYS_GETSOCKNAME = 5050 + SYS_GETPEERNAME = 5051 + SYS_SOCKETPAIR = 5052 + SYS_SETSOCKOPT = 5053 + SYS_GETSOCKOPT = 5054 + SYS_CLONE = 5055 + SYS_FORK = 5056 + SYS_EXECVE = 5057 + SYS_EXIT = 5058 + SYS_WAIT4 = 5059 + SYS_KILL = 5060 + SYS_UNAME = 5061 + SYS_SEMGET = 5062 + SYS_SEMOP = 5063 + SYS_SEMCTL = 5064 + SYS_SHMDT = 5065 + SYS_MSGGET = 5066 + SYS_MSGSND = 5067 + SYS_MSGRCV = 5068 + SYS_MSGCTL = 5069 + SYS_FCNTL = 5070 + SYS_FLOCK = 5071 + SYS_FSYNC = 5072 + SYS_FDATASYNC = 5073 + SYS_TRUNCATE = 5074 + SYS_FTRUNCATE = 5075 + SYS_GETDENTS = 5076 + SYS_GETCWD = 5077 + SYS_CHDIR = 5078 + SYS_FCHDIR = 5079 + SYS_RENAME = 5080 + SYS_MKDIR = 5081 + SYS_RMDIR = 5082 + SYS_CREAT = 5083 + SYS_LINK = 5084 + SYS_UNLINK = 5085 + SYS_SYMLINK = 5086 + SYS_READLINK = 5087 + SYS_CHMOD = 5088 + SYS_FCHMOD = 5089 + SYS_CHOWN = 5090 + SYS_FCHOWN = 5091 + SYS_LCHOWN = 5092 + SYS_UMASK = 5093 + SYS_GETTIMEOFDAY = 5094 + SYS_GETRLIMIT = 5095 + SYS_GETRUSAGE = 5096 + SYS_SYSINFO = 5097 + SYS_TIMES = 5098 + SYS_PTRACE = 5099 + SYS_GETUID = 5100 + SYS_SYSLOG = 5101 + SYS_GETGID = 5102 + SYS_SETUID = 5103 + SYS_SETGID = 5104 + SYS_GETEUID = 5105 + SYS_GETEGID = 5106 + SYS_SETPGID = 5107 + SYS_GETPPID = 5108 + SYS_GETPGRP = 5109 + SYS_SETSID = 5110 + SYS_SETREUID = 5111 + SYS_SETREGID = 5112 + SYS_GETGROUPS = 5113 + SYS_SETGROUPS = 5114 + SYS_SETRESUID = 5115 + SYS_GETRESUID = 5116 + SYS_SETRESGID = 5117 + SYS_GETRESGID = 5118 + SYS_GETPGID = 5119 + SYS_SETFSUID = 5120 + SYS_SETFSGID = 5121 + SYS_GETSID = 5122 + SYS_CAPGET = 5123 + SYS_CAPSET = 5124 + SYS_RT_SIGPENDING = 5125 + SYS_RT_SIGTIMEDWAIT = 5126 + SYS_RT_SIGQUEUEINFO = 5127 + SYS_RT_SIGSUSPEND = 5128 + SYS_SIGALTSTACK = 5129 + SYS_UTIME = 5130 + SYS_MKNOD = 5131 + SYS_PERSONALITY = 5132 + SYS_USTAT = 5133 + SYS_STATFS = 5134 + SYS_FSTATFS = 5135 + SYS_SYSFS = 5136 + SYS_GETPRIORITY = 5137 + SYS_SETPRIORITY = 5138 + SYS_SCHED_SETPARAM = 5139 + SYS_SCHED_GETPARAM = 5140 + SYS_SCHED_SETSCHEDULER = 5141 + SYS_SCHED_GETSCHEDULER = 5142 + SYS_SCHED_GET_PRIORITY_MAX = 5143 + SYS_SCHED_GET_PRIORITY_MIN = 5144 + SYS_SCHED_RR_GET_INTERVAL = 5145 + SYS_MLOCK = 5146 + SYS_MUNLOCK = 5147 + SYS_MLOCKALL = 5148 + SYS_MUNLOCKALL = 5149 + SYS_VHANGUP = 5150 + SYS_PIVOT_ROOT = 5151 + SYS__SYSCTL = 5152 + SYS_PRCTL = 5153 + SYS_ADJTIMEX = 5154 + SYS_SETRLIMIT = 5155 + SYS_CHROOT = 5156 + SYS_SYNC = 5157 + SYS_ACCT = 5158 + SYS_SETTIMEOFDAY = 5159 + SYS_MOUNT = 5160 + SYS_UMOUNT2 = 5161 + SYS_SWAPON = 5162 + SYS_SWAPOFF = 5163 + SYS_REBOOT = 5164 + SYS_SETHOSTNAME = 5165 + SYS_SETDOMAINNAME = 5166 + SYS_CREATE_MODULE = 5167 + SYS_INIT_MODULE = 5168 + SYS_DELETE_MODULE = 5169 + SYS_GET_KERNEL_SYMS = 5170 + SYS_QUERY_MODULE = 5171 + SYS_QUOTACTL = 5172 + SYS_NFSSERVCTL = 5173 + SYS_GETPMSG = 5174 + SYS_PUTPMSG = 5175 + SYS_AFS_SYSCALL = 5176 + SYS_RESERVED177 = 5177 + SYS_GETTID = 5178 + SYS_READAHEAD = 5179 + SYS_SETXATTR = 5180 + SYS_LSETXATTR = 5181 + SYS_FSETXATTR = 5182 + SYS_GETXATTR = 5183 + SYS_LGETXATTR = 5184 + SYS_FGETXATTR = 5185 + SYS_LISTXATTR = 5186 + SYS_LLISTXATTR = 5187 + SYS_FLISTXATTR = 5188 + SYS_REMOVEXATTR = 5189 + SYS_LREMOVEXATTR = 5190 + SYS_FREMOVEXATTR = 5191 + SYS_TKILL = 5192 + SYS_RESERVED193 = 5193 + SYS_FUTEX = 5194 + SYS_SCHED_SETAFFINITY = 5195 + SYS_SCHED_GETAFFINITY = 5196 + SYS_CACHEFLUSH = 5197 + SYS_CACHECTL = 5198 + SYS_SYSMIPS = 5199 + SYS_IO_SETUP = 5200 + SYS_IO_DESTROY = 5201 + SYS_IO_GETEVENTS = 5202 + SYS_IO_SUBMIT = 5203 + SYS_IO_CANCEL = 5204 + SYS_EXIT_GROUP = 5205 + SYS_LOOKUP_DCOOKIE = 5206 + SYS_EPOLL_CREATE = 5207 + SYS_EPOLL_CTL = 5208 + SYS_EPOLL_WAIT = 5209 + SYS_REMAP_FILE_PAGES = 5210 + SYS_RT_SIGRETURN = 5211 + SYS_SET_TID_ADDRESS = 5212 + SYS_RESTART_SYSCALL = 5213 + SYS_SEMTIMEDOP = 5214 + SYS_FADVISE64 = 5215 + SYS_TIMER_CREATE = 5216 + SYS_TIMER_SETTIME = 5217 + SYS_TIMER_GETTIME = 5218 + SYS_TIMER_GETOVERRUN = 5219 + SYS_TIMER_DELETE = 5220 + SYS_CLOCK_SETTIME = 5221 + SYS_CLOCK_GETTIME = 5222 + SYS_CLOCK_GETRES = 5223 + SYS_CLOCK_NANOSLEEP = 5224 + SYS_TGKILL = 5225 + SYS_UTIMES = 5226 + SYS_MBIND = 5227 + SYS_GET_MEMPOLICY = 5228 + SYS_SET_MEMPOLICY = 5229 + SYS_MQ_OPEN = 5230 + SYS_MQ_UNLINK = 5231 + SYS_MQ_TIMEDSEND = 5232 + SYS_MQ_TIMEDRECEIVE = 5233 + SYS_MQ_NOTIFY = 5234 + SYS_MQ_GETSETATTR = 5235 + SYS_VSERVER = 5236 + SYS_WAITID = 5237 + SYS_ADD_KEY = 5239 + SYS_REQUEST_KEY = 5240 + SYS_KEYCTL = 5241 + SYS_SET_THREAD_AREA = 5242 + SYS_INOTIFY_INIT = 5243 + SYS_INOTIFY_ADD_WATCH = 5244 + SYS_INOTIFY_RM_WATCH = 5245 + SYS_MIGRATE_PAGES = 5246 + SYS_OPENAT = 5247 + SYS_MKDIRAT = 5248 + SYS_MKNODAT = 5249 + SYS_FCHOWNAT = 5250 + SYS_FUTIMESAT = 5251 + SYS_NEWFSTATAT = 5252 + SYS_UNLINKAT = 5253 + SYS_RENAMEAT = 5254 + SYS_LINKAT = 5255 + SYS_SYMLINKAT = 5256 + SYS_READLINKAT = 5257 + SYS_FCHMODAT = 5258 + SYS_FACCESSAT = 5259 + SYS_PSELECT6 = 5260 + SYS_PPOLL = 5261 + SYS_UNSHARE = 5262 + SYS_SPLICE = 5263 + SYS_SYNC_FILE_RANGE = 5264 + SYS_TEE = 5265 + SYS_VMSPLICE = 5266 + SYS_MOVE_PAGES = 5267 + SYS_SET_ROBUST_LIST = 5268 + SYS_GET_ROBUST_LIST = 5269 + SYS_KEXEC_LOAD = 5270 + SYS_GETCPU = 5271 + SYS_EPOLL_PWAIT = 5272 + SYS_IOPRIO_SET = 5273 + SYS_IOPRIO_GET = 5274 + SYS_UTIMENSAT = 5275 + SYS_SIGNALFD = 5276 + SYS_TIMERFD = 5277 + SYS_EVENTFD = 5278 + SYS_FALLOCATE = 5279 + SYS_TIMERFD_CREATE = 5280 + SYS_TIMERFD_GETTIME = 5281 + SYS_TIMERFD_SETTIME = 5282 + SYS_SIGNALFD4 = 5283 + SYS_EVENTFD2 = 5284 + SYS_EPOLL_CREATE1 = 5285 + SYS_DUP3 = 5286 + SYS_PIPE2 = 5287 + SYS_INOTIFY_INIT1 = 5288 + SYS_PREADV = 5289 + SYS_PWRITEV = 5290 + SYS_RT_TGSIGQUEUEINFO = 5291 + SYS_PERF_EVENT_OPEN = 5292 + SYS_ACCEPT4 = 5293 + SYS_RECVMMSG = 5294 + SYS_FANOTIFY_INIT = 5295 + SYS_FANOTIFY_MARK = 5296 + SYS_PRLIMIT64 = 5297 + SYS_NAME_TO_HANDLE_AT = 5298 + SYS_OPEN_BY_HANDLE_AT = 5299 + SYS_CLOCK_ADJTIME = 5300 + SYS_SYNCFS = 5301 + SYS_SENDMMSG = 5302 + SYS_SETNS = 5303 + SYS_PROCESS_VM_READV = 5304 + SYS_PROCESS_VM_WRITEV = 5305 + SYS_KCMP = 5306 + SYS_FINIT_MODULE = 5307 + SYS_GETDENTS64 = 5308 + SYS_SCHED_SETATTR = 5309 + SYS_SCHED_GETATTR = 5310 + SYS_RENAMEAT2 = 5311 + SYS_SECCOMP = 5312 + SYS_GETRANDOM = 5313 + SYS_MEMFD_CREATE = 5314 + SYS_BPF = 5315 + SYS_EXECVEAT = 5316 + SYS_USERFAULTFD = 5317 + SYS_MEMBARRIER = 5318 + SYS_MLOCK2 = 5319 + SYS_COPY_FILE_RANGE = 5320 + SYS_PREADV2 = 5321 + SYS_PWRITEV2 = 5322 + SYS_PKEY_MPROTECT = 5323 + SYS_PKEY_ALLOC = 5324 + SYS_PKEY_FREE = 5325 + SYS_STATX = 5326 + SYS_RSEQ = 5327 + SYS_IO_PGETEVENTS = 5328 + SYS_PIDFD_SEND_SIGNAL = 5424 + SYS_IO_URING_SETUP = 5425 + SYS_IO_URING_ENTER = 5426 + SYS_IO_URING_REGISTER = 5427 + SYS_OPEN_TREE = 5428 + SYS_MOVE_MOUNT = 5429 + SYS_FSOPEN = 5430 + SYS_FSCONFIG = 5431 + SYS_FSMOUNT = 5432 + SYS_FSPICK = 5433 + SYS_PIDFD_OPEN = 5434 + SYS_CLONE3 = 5435 + SYS_CLOSE_RANGE = 5436 + SYS_OPENAT2 = 5437 + SYS_PIDFD_GETFD = 5438 + SYS_FACCESSAT2 = 5439 + SYS_PROCESS_MADVISE = 5440 + SYS_EPOLL_PWAIT2 = 5441 + SYS_MOUNT_SETATTR = 5442 + SYS_QUOTACTL_FD = 5443 + SYS_LANDLOCK_CREATE_RULESET = 5444 + SYS_LANDLOCK_ADD_RULE = 5445 + SYS_LANDLOCK_RESTRICT_SELF = 5446 + SYS_PROCESS_MRELEASE = 5448 + SYS_FUTEX_WAITV = 5449 + SYS_SET_MEMPOLICY_HOME_NODE = 5450 + SYS_CACHESTAT = 5451 + SYS_FCHMODAT2 = 5452 + SYS_MAP_SHADOW_STACK = 5453 + SYS_FUTEX_WAKE = 5454 + SYS_FUTEX_WAIT = 5455 + SYS_FUTEX_REQUEUE = 5456 + SYS_STATMOUNT = 5457 + SYS_LISTMOUNT = 5458 + SYS_LSM_GET_SELF_ATTR = 5459 + SYS_LSM_SET_SELF_ATTR = 5460 + SYS_LSM_LIST_MODULES = 5461 + SYS_MSEAL = 5462 + SYS_SETXATTRAT = 5463 + SYS_GETXATTRAT = 5464 + SYS_LISTXATTRAT = 5465 + SYS_REMOVEXATTRAT = 5466 +) diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go new file mode 100644 index 000000000..eea5ddfc2 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go @@ -0,0 +1,449 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mipsle/include /tmp/mipsle/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build mipsle && linux + +package unix + +const ( + SYS_SYSCALL = 4000 + SYS_EXIT = 4001 + SYS_FORK = 4002 + SYS_READ = 4003 + SYS_WRITE = 4004 + SYS_OPEN = 4005 + SYS_CLOSE = 4006 + SYS_WAITPID = 4007 + SYS_CREAT = 4008 + SYS_LINK = 4009 + SYS_UNLINK = 4010 + SYS_EXECVE = 4011 + SYS_CHDIR = 4012 + SYS_TIME = 4013 + SYS_MKNOD = 4014 + SYS_CHMOD = 4015 + SYS_LCHOWN = 4016 + SYS_BREAK = 4017 + SYS_UNUSED18 = 4018 + SYS_LSEEK = 4019 + SYS_GETPID = 4020 + SYS_MOUNT = 4021 + SYS_UMOUNT = 4022 + SYS_SETUID = 4023 + SYS_GETUID = 4024 + SYS_STIME = 4025 + SYS_PTRACE = 4026 + SYS_ALARM = 4027 + SYS_UNUSED28 = 4028 + SYS_PAUSE = 4029 + SYS_UTIME = 4030 + SYS_STTY = 4031 + SYS_GTTY = 4032 + SYS_ACCESS = 4033 + SYS_NICE = 4034 + SYS_FTIME = 4035 + SYS_SYNC = 4036 + SYS_KILL = 4037 + SYS_RENAME = 4038 + SYS_MKDIR = 4039 + SYS_RMDIR = 4040 + SYS_DUP = 4041 + SYS_PIPE = 4042 + SYS_TIMES = 4043 + SYS_PROF = 4044 + SYS_BRK = 4045 + SYS_SETGID = 4046 + SYS_GETGID = 4047 + SYS_SIGNAL = 4048 + SYS_GETEUID = 4049 + SYS_GETEGID = 4050 + SYS_ACCT = 4051 + SYS_UMOUNT2 = 4052 + SYS_LOCK = 4053 + SYS_IOCTL = 4054 + SYS_FCNTL = 4055 + SYS_MPX = 4056 + SYS_SETPGID = 4057 + SYS_ULIMIT = 4058 + SYS_UNUSED59 = 4059 + SYS_UMASK = 4060 + SYS_CHROOT = 4061 + SYS_USTAT = 4062 + SYS_DUP2 = 4063 + SYS_GETPPID = 4064 + SYS_GETPGRP = 4065 + SYS_SETSID = 4066 + SYS_SIGACTION = 4067 + SYS_SGETMASK = 4068 + SYS_SSETMASK = 4069 + SYS_SETREUID = 4070 + SYS_SETREGID = 4071 + SYS_SIGSUSPEND = 4072 + SYS_SIGPENDING = 4073 + SYS_SETHOSTNAME = 4074 + SYS_SETRLIMIT = 4075 + SYS_GETRLIMIT = 4076 + SYS_GETRUSAGE = 4077 + SYS_GETTIMEOFDAY = 4078 + SYS_SETTIMEOFDAY = 4079 + SYS_GETGROUPS = 4080 + SYS_SETGROUPS = 4081 + SYS_RESERVED82 = 4082 + SYS_SYMLINK = 4083 + SYS_UNUSED84 = 4084 + SYS_READLINK = 4085 + SYS_USELIB = 4086 + SYS_SWAPON = 4087 + SYS_REBOOT = 4088 + SYS_READDIR = 4089 + SYS_MMAP = 4090 + SYS_MUNMAP = 4091 + SYS_TRUNCATE = 4092 + SYS_FTRUNCATE = 4093 + SYS_FCHMOD = 4094 + SYS_FCHOWN = 4095 + SYS_GETPRIORITY = 4096 + SYS_SETPRIORITY = 4097 + SYS_PROFIL = 4098 + SYS_STATFS = 4099 + SYS_FSTATFS = 4100 + SYS_IOPERM = 4101 + SYS_SOCKETCALL = 4102 + SYS_SYSLOG = 4103 + SYS_SETITIMER = 4104 + SYS_GETITIMER = 4105 + SYS_STAT = 4106 + SYS_LSTAT = 4107 + SYS_FSTAT = 4108 + SYS_UNUSED109 = 4109 + SYS_IOPL = 4110 + SYS_VHANGUP = 4111 + SYS_IDLE = 4112 + SYS_VM86 = 4113 + SYS_WAIT4 = 4114 + SYS_SWAPOFF = 4115 + SYS_SYSINFO = 4116 + SYS_IPC = 4117 + SYS_FSYNC = 4118 + SYS_SIGRETURN = 4119 + SYS_CLONE = 4120 + SYS_SETDOMAINNAME = 4121 + SYS_UNAME = 4122 + SYS_MODIFY_LDT = 4123 + SYS_ADJTIMEX = 4124 + SYS_MPROTECT = 4125 + SYS_SIGPROCMASK = 4126 + SYS_CREATE_MODULE = 4127 + SYS_INIT_MODULE = 4128 + SYS_DELETE_MODULE = 4129 + SYS_GET_KERNEL_SYMS = 4130 + SYS_QUOTACTL = 4131 + SYS_GETPGID = 4132 + SYS_FCHDIR = 4133 + SYS_BDFLUSH = 4134 + SYS_SYSFS = 4135 + SYS_PERSONALITY = 4136 + SYS_AFS_SYSCALL = 4137 + SYS_SETFSUID = 4138 + SYS_SETFSGID = 4139 + SYS__LLSEEK = 4140 + SYS_GETDENTS = 4141 + SYS__NEWSELECT = 4142 + SYS_FLOCK = 4143 + SYS_MSYNC = 4144 + SYS_READV = 4145 + SYS_WRITEV = 4146 + SYS_CACHEFLUSH = 4147 + SYS_CACHECTL = 4148 + SYS_SYSMIPS = 4149 + SYS_UNUSED150 = 4150 + SYS_GETSID = 4151 + SYS_FDATASYNC = 4152 + SYS__SYSCTL = 4153 + SYS_MLOCK = 4154 + SYS_MUNLOCK = 4155 + SYS_MLOCKALL = 4156 + SYS_MUNLOCKALL = 4157 + SYS_SCHED_SETPARAM = 4158 + SYS_SCHED_GETPARAM = 4159 + SYS_SCHED_SETSCHEDULER = 4160 + SYS_SCHED_GETSCHEDULER = 4161 + SYS_SCHED_YIELD = 4162 + SYS_SCHED_GET_PRIORITY_MAX = 4163 + SYS_SCHED_GET_PRIORITY_MIN = 4164 + SYS_SCHED_RR_GET_INTERVAL = 4165 + SYS_NANOSLEEP = 4166 + SYS_MREMAP = 4167 + SYS_ACCEPT = 4168 + SYS_BIND = 4169 + SYS_CONNECT = 4170 + SYS_GETPEERNAME = 4171 + SYS_GETSOCKNAME = 4172 + SYS_GETSOCKOPT = 4173 + SYS_LISTEN = 4174 + SYS_RECV = 4175 + SYS_RECVFROM = 4176 + SYS_RECVMSG = 4177 + SYS_SEND = 4178 + SYS_SENDMSG = 4179 + SYS_SENDTO = 4180 + SYS_SETSOCKOPT = 4181 + SYS_SHUTDOWN = 4182 + SYS_SOCKET = 4183 + SYS_SOCKETPAIR = 4184 + SYS_SETRESUID = 4185 + SYS_GETRESUID = 4186 + SYS_QUERY_MODULE = 4187 + SYS_POLL = 4188 + SYS_NFSSERVCTL = 4189 + SYS_SETRESGID = 4190 + SYS_GETRESGID = 4191 + SYS_PRCTL = 4192 + SYS_RT_SIGRETURN = 4193 + SYS_RT_SIGACTION = 4194 + SYS_RT_SIGPROCMASK = 4195 + SYS_RT_SIGPENDING = 4196 + SYS_RT_SIGTIMEDWAIT = 4197 + SYS_RT_SIGQUEUEINFO = 4198 + SYS_RT_SIGSUSPEND = 4199 + SYS_PREAD64 = 4200 + SYS_PWRITE64 = 4201 + SYS_CHOWN = 4202 + SYS_GETCWD = 4203 + SYS_CAPGET = 4204 + SYS_CAPSET = 4205 + SYS_SIGALTSTACK = 4206 + SYS_SENDFILE = 4207 + SYS_GETPMSG = 4208 + SYS_PUTPMSG = 4209 + SYS_MMAP2 = 4210 + SYS_TRUNCATE64 = 4211 + SYS_FTRUNCATE64 = 4212 + SYS_STAT64 = 4213 + SYS_LSTAT64 = 4214 + SYS_FSTAT64 = 4215 + SYS_PIVOT_ROOT = 4216 + SYS_MINCORE = 4217 + SYS_MADVISE = 4218 + SYS_GETDENTS64 = 4219 + SYS_FCNTL64 = 4220 + SYS_RESERVED221 = 4221 + SYS_GETTID = 4222 + SYS_READAHEAD = 4223 + SYS_SETXATTR = 4224 + SYS_LSETXATTR = 4225 + SYS_FSETXATTR = 4226 + SYS_GETXATTR = 4227 + SYS_LGETXATTR = 4228 + SYS_FGETXATTR = 4229 + SYS_LISTXATTR = 4230 + SYS_LLISTXATTR = 4231 + SYS_FLISTXATTR = 4232 + SYS_REMOVEXATTR = 4233 + SYS_LREMOVEXATTR = 4234 + SYS_FREMOVEXATTR = 4235 + SYS_TKILL = 4236 + SYS_SENDFILE64 = 4237 + SYS_FUTEX = 4238 + SYS_SCHED_SETAFFINITY = 4239 + SYS_SCHED_GETAFFINITY = 4240 + SYS_IO_SETUP = 4241 + SYS_IO_DESTROY = 4242 + SYS_IO_GETEVENTS = 4243 + SYS_IO_SUBMIT = 4244 + SYS_IO_CANCEL = 4245 + SYS_EXIT_GROUP = 4246 + SYS_LOOKUP_DCOOKIE = 4247 + SYS_EPOLL_CREATE = 4248 + SYS_EPOLL_CTL = 4249 + SYS_EPOLL_WAIT = 4250 + SYS_REMAP_FILE_PAGES = 4251 + SYS_SET_TID_ADDRESS = 4252 + SYS_RESTART_SYSCALL = 4253 + SYS_FADVISE64 = 4254 + SYS_STATFS64 = 4255 + SYS_FSTATFS64 = 4256 + SYS_TIMER_CREATE = 4257 + SYS_TIMER_SETTIME = 4258 + SYS_TIMER_GETTIME = 4259 + SYS_TIMER_GETOVERRUN = 4260 + SYS_TIMER_DELETE = 4261 + SYS_CLOCK_SETTIME = 4262 + SYS_CLOCK_GETTIME = 4263 + SYS_CLOCK_GETRES = 4264 + SYS_CLOCK_NANOSLEEP = 4265 + SYS_TGKILL = 4266 + SYS_UTIMES = 4267 + SYS_MBIND = 4268 + SYS_GET_MEMPOLICY = 4269 + SYS_SET_MEMPOLICY = 4270 + SYS_MQ_OPEN = 4271 + SYS_MQ_UNLINK = 4272 + SYS_MQ_TIMEDSEND = 4273 + SYS_MQ_TIMEDRECEIVE = 4274 + SYS_MQ_NOTIFY = 4275 + SYS_MQ_GETSETATTR = 4276 + SYS_VSERVER = 4277 + SYS_WAITID = 4278 + SYS_ADD_KEY = 4280 + SYS_REQUEST_KEY = 4281 + SYS_KEYCTL = 4282 + SYS_SET_THREAD_AREA = 4283 + SYS_INOTIFY_INIT = 4284 + SYS_INOTIFY_ADD_WATCH = 4285 + SYS_INOTIFY_RM_WATCH = 4286 + SYS_MIGRATE_PAGES = 4287 + SYS_OPENAT = 4288 + SYS_MKDIRAT = 4289 + SYS_MKNODAT = 4290 + SYS_FCHOWNAT = 4291 + SYS_FUTIMESAT = 4292 + SYS_FSTATAT64 = 4293 + SYS_UNLINKAT = 4294 + SYS_RENAMEAT = 4295 + SYS_LINKAT = 4296 + SYS_SYMLINKAT = 4297 + SYS_READLINKAT = 4298 + SYS_FCHMODAT = 4299 + SYS_FACCESSAT = 4300 + SYS_PSELECT6 = 4301 + SYS_PPOLL = 4302 + SYS_UNSHARE = 4303 + SYS_SPLICE = 4304 + SYS_SYNC_FILE_RANGE = 4305 + SYS_TEE = 4306 + SYS_VMSPLICE = 4307 + SYS_MOVE_PAGES = 4308 + SYS_SET_ROBUST_LIST = 4309 + SYS_GET_ROBUST_LIST = 4310 + SYS_KEXEC_LOAD = 4311 + SYS_GETCPU = 4312 + SYS_EPOLL_PWAIT = 4313 + SYS_IOPRIO_SET = 4314 + SYS_IOPRIO_GET = 4315 + SYS_UTIMENSAT = 4316 + SYS_SIGNALFD = 4317 + SYS_TIMERFD = 4318 + SYS_EVENTFD = 4319 + SYS_FALLOCATE = 4320 + SYS_TIMERFD_CREATE = 4321 + SYS_TIMERFD_GETTIME = 4322 + SYS_TIMERFD_SETTIME = 4323 + SYS_SIGNALFD4 = 4324 + SYS_EVENTFD2 = 4325 + SYS_EPOLL_CREATE1 = 4326 + SYS_DUP3 = 4327 + SYS_PIPE2 = 4328 + SYS_INOTIFY_INIT1 = 4329 + SYS_PREADV = 4330 + SYS_PWRITEV = 4331 + SYS_RT_TGSIGQUEUEINFO = 4332 + SYS_PERF_EVENT_OPEN = 4333 + SYS_ACCEPT4 = 4334 + SYS_RECVMMSG = 4335 + SYS_FANOTIFY_INIT = 4336 + SYS_FANOTIFY_MARK = 4337 + SYS_PRLIMIT64 = 4338 + SYS_NAME_TO_HANDLE_AT = 4339 + SYS_OPEN_BY_HANDLE_AT = 4340 + SYS_CLOCK_ADJTIME = 4341 + SYS_SYNCFS = 4342 + SYS_SENDMMSG = 4343 + SYS_SETNS = 4344 + SYS_PROCESS_VM_READV = 4345 + SYS_PROCESS_VM_WRITEV = 4346 + SYS_KCMP = 4347 + SYS_FINIT_MODULE = 4348 + SYS_SCHED_SETATTR = 4349 + SYS_SCHED_GETATTR = 4350 + SYS_RENAMEAT2 = 4351 + SYS_SECCOMP = 4352 + SYS_GETRANDOM = 4353 + SYS_MEMFD_CREATE = 4354 + SYS_BPF = 4355 + SYS_EXECVEAT = 4356 + SYS_USERFAULTFD = 4357 + SYS_MEMBARRIER = 4358 + SYS_MLOCK2 = 4359 + SYS_COPY_FILE_RANGE = 4360 + SYS_PREADV2 = 4361 + SYS_PWRITEV2 = 4362 + SYS_PKEY_MPROTECT = 4363 + SYS_PKEY_ALLOC = 4364 + SYS_PKEY_FREE = 4365 + SYS_STATX = 4366 + SYS_RSEQ = 4367 + SYS_IO_PGETEVENTS = 4368 + SYS_SEMGET = 4393 + SYS_SEMCTL = 4394 + SYS_SHMGET = 4395 + SYS_SHMCTL = 4396 + SYS_SHMAT = 4397 + SYS_SHMDT = 4398 + SYS_MSGGET = 4399 + SYS_MSGSND = 4400 + SYS_MSGRCV = 4401 + SYS_MSGCTL = 4402 + SYS_CLOCK_GETTIME64 = 4403 + SYS_CLOCK_SETTIME64 = 4404 + SYS_CLOCK_ADJTIME64 = 4405 + SYS_CLOCK_GETRES_TIME64 = 4406 + SYS_CLOCK_NANOSLEEP_TIME64 = 4407 + SYS_TIMER_GETTIME64 = 4408 + SYS_TIMER_SETTIME64 = 4409 + SYS_TIMERFD_GETTIME64 = 4410 + SYS_TIMERFD_SETTIME64 = 4411 + SYS_UTIMENSAT_TIME64 = 4412 + SYS_PSELECT6_TIME64 = 4413 + SYS_PPOLL_TIME64 = 4414 + SYS_IO_PGETEVENTS_TIME64 = 4416 + SYS_RECVMMSG_TIME64 = 4417 + SYS_MQ_TIMEDSEND_TIME64 = 4418 + SYS_MQ_TIMEDRECEIVE_TIME64 = 4419 + SYS_SEMTIMEDOP_TIME64 = 4420 + SYS_RT_SIGTIMEDWAIT_TIME64 = 4421 + SYS_FUTEX_TIME64 = 4422 + SYS_SCHED_RR_GET_INTERVAL_TIME64 = 4423 + SYS_PIDFD_SEND_SIGNAL = 4424 + SYS_IO_URING_SETUP = 4425 + SYS_IO_URING_ENTER = 4426 + SYS_IO_URING_REGISTER = 4427 + SYS_OPEN_TREE = 4428 + SYS_MOVE_MOUNT = 4429 + SYS_FSOPEN = 4430 + SYS_FSCONFIG = 4431 + SYS_FSMOUNT = 4432 + SYS_FSPICK = 4433 + SYS_PIDFD_OPEN = 4434 + SYS_CLONE3 = 4435 + SYS_CLOSE_RANGE = 4436 + SYS_OPENAT2 = 4437 + SYS_PIDFD_GETFD = 4438 + SYS_FACCESSAT2 = 4439 + SYS_PROCESS_MADVISE = 4440 + SYS_EPOLL_PWAIT2 = 4441 + SYS_MOUNT_SETATTR = 4442 + SYS_QUOTACTL_FD = 4443 + SYS_LANDLOCK_CREATE_RULESET = 4444 + SYS_LANDLOCK_ADD_RULE = 4445 + SYS_LANDLOCK_RESTRICT_SELF = 4446 + SYS_PROCESS_MRELEASE = 4448 + SYS_FUTEX_WAITV = 4449 + SYS_SET_MEMPOLICY_HOME_NODE = 4450 + SYS_CACHESTAT = 4451 + SYS_FCHMODAT2 = 4452 + SYS_MAP_SHADOW_STACK = 4453 + SYS_FUTEX_WAKE = 4454 + SYS_FUTEX_WAIT = 4455 + SYS_FUTEX_REQUEUE = 4456 + SYS_STATMOUNT = 4457 + SYS_LISTMOUNT = 4458 + SYS_LSM_GET_SELF_ATTR = 4459 + SYS_LSM_SET_SELF_ATTR = 4460 + SYS_LSM_LIST_MODULES = 4461 + SYS_MSEAL = 4462 + SYS_SETXATTRAT = 4463 + SYS_GETXATTRAT = 4464 + SYS_LISTXATTRAT = 4465 + SYS_REMOVEXATTRAT = 4466 +) diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go new file mode 100644 index 000000000..0d777bfbb --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go @@ -0,0 +1,456 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/ppc/include /tmp/ppc/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc && linux + +package unix + +const ( + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAITPID = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_TIME = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_BREAK = 17 + SYS_OLDSTAT = 18 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_UMOUNT = 22 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_STIME = 25 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_OLDFSTAT = 28 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_STTY = 31 + SYS_GTTY = 32 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_FTIME = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_PROF = 44 + SYS_BRK = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_SIGNAL = 48 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_LOCK = 53 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_MPX = 56 + SYS_SETPGID = 57 + SYS_ULIMIT = 58 + SYS_OLDOLDUNAME = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SGETMASK = 68 + SYS_SSETMASK = 69 + SYS_SETREUID = 70 + SYS_SETREGID = 71 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRLIMIT = 76 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_GETGROUPS = 80 + SYS_SETGROUPS = 81 + SYS_SELECT = 82 + SYS_SYMLINK = 83 + SYS_OLDLSTAT = 84 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_READDIR = 89 + SYS_MMAP = 90 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_FCHOWN = 95 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_PROFIL = 98 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_IOPERM = 101 + SYS_SOCKETCALL = 102 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_OLDUNAME = 109 + SYS_IOPL = 110 + SYS_VHANGUP = 111 + SYS_IDLE = 112 + SYS_VM86 = 113 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_IPC = 117 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_MODIFY_LDT = 123 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_CREATE_MODULE = 127 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_GET_KERNEL_SYMS = 130 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_AFS_SYSCALL = 137 + SYS_SETFSUID = 138 + SYS_SETFSGID = 139 + SYS__LLSEEK = 140 + SYS_GETDENTS = 141 + SYS__NEWSELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_SETRESUID = 164 + SYS_GETRESUID = 165 + SYS_QUERY_MODULE = 166 + SYS_POLL = 167 + SYS_NFSSERVCTL = 168 + SYS_SETRESGID = 169 + SYS_GETRESGID = 170 + SYS_PRCTL = 171 + SYS_RT_SIGRETURN = 172 + SYS_RT_SIGACTION = 173 + SYS_RT_SIGPROCMASK = 174 + SYS_RT_SIGPENDING = 175 + SYS_RT_SIGTIMEDWAIT = 176 + SYS_RT_SIGQUEUEINFO = 177 + SYS_RT_SIGSUSPEND = 178 + SYS_PREAD64 = 179 + SYS_PWRITE64 = 180 + SYS_CHOWN = 181 + SYS_GETCWD = 182 + SYS_CAPGET = 183 + SYS_CAPSET = 184 + SYS_SIGALTSTACK = 185 + SYS_SENDFILE = 186 + SYS_GETPMSG = 187 + SYS_PUTPMSG = 188 + SYS_VFORK = 189 + SYS_UGETRLIMIT = 190 + SYS_READAHEAD = 191 + SYS_MMAP2 = 192 + SYS_TRUNCATE64 = 193 + SYS_FTRUNCATE64 = 194 + SYS_STAT64 = 195 + SYS_LSTAT64 = 196 + SYS_FSTAT64 = 197 + SYS_PCICONFIG_READ = 198 + SYS_PCICONFIG_WRITE = 199 + SYS_PCICONFIG_IOBASE = 200 + SYS_MULTIPLEXER = 201 + SYS_GETDENTS64 = 202 + SYS_PIVOT_ROOT = 203 + SYS_FCNTL64 = 204 + SYS_MADVISE = 205 + SYS_MINCORE = 206 + SYS_GETTID = 207 + SYS_TKILL = 208 + SYS_SETXATTR = 209 + SYS_LSETXATTR = 210 + SYS_FSETXATTR = 211 + SYS_GETXATTR = 212 + SYS_LGETXATTR = 213 + SYS_FGETXATTR = 214 + SYS_LISTXATTR = 215 + SYS_LLISTXATTR = 216 + SYS_FLISTXATTR = 217 + SYS_REMOVEXATTR = 218 + SYS_LREMOVEXATTR = 219 + SYS_FREMOVEXATTR = 220 + SYS_FUTEX = 221 + SYS_SCHED_SETAFFINITY = 222 + SYS_SCHED_GETAFFINITY = 223 + SYS_TUXCALL = 225 + SYS_SENDFILE64 = 226 + SYS_IO_SETUP = 227 + SYS_IO_DESTROY = 228 + SYS_IO_GETEVENTS = 229 + SYS_IO_SUBMIT = 230 + SYS_IO_CANCEL = 231 + SYS_SET_TID_ADDRESS = 232 + SYS_FADVISE64 = 233 + SYS_EXIT_GROUP = 234 + SYS_LOOKUP_DCOOKIE = 235 + SYS_EPOLL_CREATE = 236 + SYS_EPOLL_CTL = 237 + SYS_EPOLL_WAIT = 238 + SYS_REMAP_FILE_PAGES = 239 + SYS_TIMER_CREATE = 240 + SYS_TIMER_SETTIME = 241 + SYS_TIMER_GETTIME = 242 + SYS_TIMER_GETOVERRUN = 243 + SYS_TIMER_DELETE = 244 + SYS_CLOCK_SETTIME = 245 + SYS_CLOCK_GETTIME = 246 + SYS_CLOCK_GETRES = 247 + SYS_CLOCK_NANOSLEEP = 248 + SYS_SWAPCONTEXT = 249 + SYS_TGKILL = 250 + SYS_UTIMES = 251 + SYS_STATFS64 = 252 + SYS_FSTATFS64 = 253 + SYS_FADVISE64_64 = 254 + SYS_RTAS = 255 + SYS_SYS_DEBUG_SETCONTEXT = 256 + SYS_MIGRATE_PAGES = 258 + SYS_MBIND = 259 + SYS_GET_MEMPOLICY = 260 + SYS_SET_MEMPOLICY = 261 + SYS_MQ_OPEN = 262 + SYS_MQ_UNLINK = 263 + SYS_MQ_TIMEDSEND = 264 + SYS_MQ_TIMEDRECEIVE = 265 + SYS_MQ_NOTIFY = 266 + SYS_MQ_GETSETATTR = 267 + SYS_KEXEC_LOAD = 268 + SYS_ADD_KEY = 269 + SYS_REQUEST_KEY = 270 + SYS_KEYCTL = 271 + SYS_WAITID = 272 + SYS_IOPRIO_SET = 273 + SYS_IOPRIO_GET = 274 + SYS_INOTIFY_INIT = 275 + SYS_INOTIFY_ADD_WATCH = 276 + SYS_INOTIFY_RM_WATCH = 277 + SYS_SPU_RUN = 278 + SYS_SPU_CREATE = 279 + SYS_PSELECT6 = 280 + SYS_PPOLL = 281 + SYS_UNSHARE = 282 + SYS_SPLICE = 283 + SYS_TEE = 284 + SYS_VMSPLICE = 285 + SYS_OPENAT = 286 + SYS_MKDIRAT = 287 + SYS_MKNODAT = 288 + SYS_FCHOWNAT = 289 + SYS_FUTIMESAT = 290 + SYS_FSTATAT64 = 291 + SYS_UNLINKAT = 292 + SYS_RENAMEAT = 293 + SYS_LINKAT = 294 + SYS_SYMLINKAT = 295 + SYS_READLINKAT = 296 + SYS_FCHMODAT = 297 + SYS_FACCESSAT = 298 + SYS_GET_ROBUST_LIST = 299 + SYS_SET_ROBUST_LIST = 300 + SYS_MOVE_PAGES = 301 + SYS_GETCPU = 302 + SYS_EPOLL_PWAIT = 303 + SYS_UTIMENSAT = 304 + SYS_SIGNALFD = 305 + SYS_TIMERFD_CREATE = 306 + SYS_EVENTFD = 307 + SYS_SYNC_FILE_RANGE2 = 308 + SYS_FALLOCATE = 309 + SYS_SUBPAGE_PROT = 310 + SYS_TIMERFD_SETTIME = 311 + SYS_TIMERFD_GETTIME = 312 + SYS_SIGNALFD4 = 313 + SYS_EVENTFD2 = 314 + SYS_EPOLL_CREATE1 = 315 + SYS_DUP3 = 316 + SYS_PIPE2 = 317 + SYS_INOTIFY_INIT1 = 318 + SYS_PERF_EVENT_OPEN = 319 + SYS_PREADV = 320 + SYS_PWRITEV = 321 + SYS_RT_TGSIGQUEUEINFO = 322 + SYS_FANOTIFY_INIT = 323 + SYS_FANOTIFY_MARK = 324 + SYS_PRLIMIT64 = 325 + SYS_SOCKET = 326 + SYS_BIND = 327 + SYS_CONNECT = 328 + SYS_LISTEN = 329 + SYS_ACCEPT = 330 + SYS_GETSOCKNAME = 331 + SYS_GETPEERNAME = 332 + SYS_SOCKETPAIR = 333 + SYS_SEND = 334 + SYS_SENDTO = 335 + SYS_RECV = 336 + SYS_RECVFROM = 337 + SYS_SHUTDOWN = 338 + SYS_SETSOCKOPT = 339 + SYS_GETSOCKOPT = 340 + SYS_SENDMSG = 341 + SYS_RECVMSG = 342 + SYS_RECVMMSG = 343 + SYS_ACCEPT4 = 344 + SYS_NAME_TO_HANDLE_AT = 345 + SYS_OPEN_BY_HANDLE_AT = 346 + SYS_CLOCK_ADJTIME = 347 + SYS_SYNCFS = 348 + SYS_SENDMMSG = 349 + SYS_SETNS = 350 + SYS_PROCESS_VM_READV = 351 + SYS_PROCESS_VM_WRITEV = 352 + SYS_FINIT_MODULE = 353 + SYS_KCMP = 354 + SYS_SCHED_SETATTR = 355 + SYS_SCHED_GETATTR = 356 + SYS_RENAMEAT2 = 357 + SYS_SECCOMP = 358 + SYS_GETRANDOM = 359 + SYS_MEMFD_CREATE = 360 + SYS_BPF = 361 + SYS_EXECVEAT = 362 + SYS_SWITCH_ENDIAN = 363 + SYS_USERFAULTFD = 364 + SYS_MEMBARRIER = 365 + SYS_MLOCK2 = 378 + SYS_COPY_FILE_RANGE = 379 + SYS_PREADV2 = 380 + SYS_PWRITEV2 = 381 + SYS_KEXEC_FILE_LOAD = 382 + SYS_STATX = 383 + SYS_PKEY_ALLOC = 384 + SYS_PKEY_FREE = 385 + SYS_PKEY_MPROTECT = 386 + SYS_RSEQ = 387 + SYS_IO_PGETEVENTS = 388 + SYS_SEMGET = 393 + SYS_SEMCTL = 394 + SYS_SHMGET = 395 + SYS_SHMCTL = 396 + SYS_SHMAT = 397 + SYS_SHMDT = 398 + SYS_MSGGET = 399 + SYS_MSGSND = 400 + SYS_MSGRCV = 401 + SYS_MSGCTL = 402 + SYS_CLOCK_GETTIME64 = 403 + SYS_CLOCK_SETTIME64 = 404 + SYS_CLOCK_ADJTIME64 = 405 + SYS_CLOCK_GETRES_TIME64 = 406 + SYS_CLOCK_NANOSLEEP_TIME64 = 407 + SYS_TIMER_GETTIME64 = 408 + SYS_TIMER_SETTIME64 = 409 + SYS_TIMERFD_GETTIME64 = 410 + SYS_TIMERFD_SETTIME64 = 411 + SYS_UTIMENSAT_TIME64 = 412 + SYS_PSELECT6_TIME64 = 413 + SYS_PPOLL_TIME64 = 414 + SYS_IO_PGETEVENTS_TIME64 = 416 + SYS_RECVMMSG_TIME64 = 417 + SYS_MQ_TIMEDSEND_TIME64 = 418 + SYS_MQ_TIMEDRECEIVE_TIME64 = 419 + SYS_SEMTIMEDOP_TIME64 = 420 + SYS_RT_SIGTIMEDWAIT_TIME64 = 421 + SYS_FUTEX_TIME64 = 422 + SYS_SCHED_RR_GET_INTERVAL_TIME64 = 423 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_QUOTACTL_FD = 443 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 + SYS_PROCESS_MRELEASE = 448 + SYS_FUTEX_WAITV = 449 + SYS_SET_MEMPOLICY_HOME_NODE = 450 + SYS_CACHESTAT = 451 + SYS_FCHMODAT2 = 452 + SYS_MAP_SHADOW_STACK = 453 + SYS_FUTEX_WAKE = 454 + SYS_FUTEX_WAIT = 455 + SYS_FUTEX_REQUEUE = 456 + SYS_STATMOUNT = 457 + SYS_LISTMOUNT = 458 + SYS_LSM_GET_SELF_ATTR = 459 + SYS_LSM_SET_SELF_ATTR = 460 + SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 +) diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go new file mode 100644 index 000000000..b44636502 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go @@ -0,0 +1,428 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/ppc64/include /tmp/ppc64/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc64 && linux + +package unix + +const ( + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAITPID = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_TIME = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_BREAK = 17 + SYS_OLDSTAT = 18 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_UMOUNT = 22 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_STIME = 25 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_OLDFSTAT = 28 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_STTY = 31 + SYS_GTTY = 32 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_FTIME = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_PROF = 44 + SYS_BRK = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_SIGNAL = 48 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_LOCK = 53 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_MPX = 56 + SYS_SETPGID = 57 + SYS_ULIMIT = 58 + SYS_OLDOLDUNAME = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SGETMASK = 68 + SYS_SSETMASK = 69 + SYS_SETREUID = 70 + SYS_SETREGID = 71 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRLIMIT = 76 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_GETGROUPS = 80 + SYS_SETGROUPS = 81 + SYS_SELECT = 82 + SYS_SYMLINK = 83 + SYS_OLDLSTAT = 84 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_READDIR = 89 + SYS_MMAP = 90 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_FCHOWN = 95 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_PROFIL = 98 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_IOPERM = 101 + SYS_SOCKETCALL = 102 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_OLDUNAME = 109 + SYS_IOPL = 110 + SYS_VHANGUP = 111 + SYS_IDLE = 112 + SYS_VM86 = 113 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_IPC = 117 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_MODIFY_LDT = 123 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_CREATE_MODULE = 127 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_GET_KERNEL_SYMS = 130 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_AFS_SYSCALL = 137 + SYS_SETFSUID = 138 + SYS_SETFSGID = 139 + SYS__LLSEEK = 140 + SYS_GETDENTS = 141 + SYS__NEWSELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_SETRESUID = 164 + SYS_GETRESUID = 165 + SYS_QUERY_MODULE = 166 + SYS_POLL = 167 + SYS_NFSSERVCTL = 168 + SYS_SETRESGID = 169 + SYS_GETRESGID = 170 + SYS_PRCTL = 171 + SYS_RT_SIGRETURN = 172 + SYS_RT_SIGACTION = 173 + SYS_RT_SIGPROCMASK = 174 + SYS_RT_SIGPENDING = 175 + SYS_RT_SIGTIMEDWAIT = 176 + SYS_RT_SIGQUEUEINFO = 177 + SYS_RT_SIGSUSPEND = 178 + SYS_PREAD64 = 179 + SYS_PWRITE64 = 180 + SYS_CHOWN = 181 + SYS_GETCWD = 182 + SYS_CAPGET = 183 + SYS_CAPSET = 184 + SYS_SIGALTSTACK = 185 + SYS_SENDFILE = 186 + SYS_GETPMSG = 187 + SYS_PUTPMSG = 188 + SYS_VFORK = 189 + SYS_UGETRLIMIT = 190 + SYS_READAHEAD = 191 + SYS_PCICONFIG_READ = 198 + SYS_PCICONFIG_WRITE = 199 + SYS_PCICONFIG_IOBASE = 200 + SYS_MULTIPLEXER = 201 + SYS_GETDENTS64 = 202 + SYS_PIVOT_ROOT = 203 + SYS_MADVISE = 205 + SYS_MINCORE = 206 + SYS_GETTID = 207 + SYS_TKILL = 208 + SYS_SETXATTR = 209 + SYS_LSETXATTR = 210 + SYS_FSETXATTR = 211 + SYS_GETXATTR = 212 + SYS_LGETXATTR = 213 + SYS_FGETXATTR = 214 + SYS_LISTXATTR = 215 + SYS_LLISTXATTR = 216 + SYS_FLISTXATTR = 217 + SYS_REMOVEXATTR = 218 + SYS_LREMOVEXATTR = 219 + SYS_FREMOVEXATTR = 220 + SYS_FUTEX = 221 + SYS_SCHED_SETAFFINITY = 222 + SYS_SCHED_GETAFFINITY = 223 + SYS_TUXCALL = 225 + SYS_IO_SETUP = 227 + SYS_IO_DESTROY = 228 + SYS_IO_GETEVENTS = 229 + SYS_IO_SUBMIT = 230 + SYS_IO_CANCEL = 231 + SYS_SET_TID_ADDRESS = 232 + SYS_FADVISE64 = 233 + SYS_EXIT_GROUP = 234 + SYS_LOOKUP_DCOOKIE = 235 + SYS_EPOLL_CREATE = 236 + SYS_EPOLL_CTL = 237 + SYS_EPOLL_WAIT = 238 + SYS_REMAP_FILE_PAGES = 239 + SYS_TIMER_CREATE = 240 + SYS_TIMER_SETTIME = 241 + SYS_TIMER_GETTIME = 242 + SYS_TIMER_GETOVERRUN = 243 + SYS_TIMER_DELETE = 244 + SYS_CLOCK_SETTIME = 245 + SYS_CLOCK_GETTIME = 246 + SYS_CLOCK_GETRES = 247 + SYS_CLOCK_NANOSLEEP = 248 + SYS_SWAPCONTEXT = 249 + SYS_TGKILL = 250 + SYS_UTIMES = 251 + SYS_STATFS64 = 252 + SYS_FSTATFS64 = 253 + SYS_RTAS = 255 + SYS_SYS_DEBUG_SETCONTEXT = 256 + SYS_MIGRATE_PAGES = 258 + SYS_MBIND = 259 + SYS_GET_MEMPOLICY = 260 + SYS_SET_MEMPOLICY = 261 + SYS_MQ_OPEN = 262 + SYS_MQ_UNLINK = 263 + SYS_MQ_TIMEDSEND = 264 + SYS_MQ_TIMEDRECEIVE = 265 + SYS_MQ_NOTIFY = 266 + SYS_MQ_GETSETATTR = 267 + SYS_KEXEC_LOAD = 268 + SYS_ADD_KEY = 269 + SYS_REQUEST_KEY = 270 + SYS_KEYCTL = 271 + SYS_WAITID = 272 + SYS_IOPRIO_SET = 273 + SYS_IOPRIO_GET = 274 + SYS_INOTIFY_INIT = 275 + SYS_INOTIFY_ADD_WATCH = 276 + SYS_INOTIFY_RM_WATCH = 277 + SYS_SPU_RUN = 278 + SYS_SPU_CREATE = 279 + SYS_PSELECT6 = 280 + SYS_PPOLL = 281 + SYS_UNSHARE = 282 + SYS_SPLICE = 283 + SYS_TEE = 284 + SYS_VMSPLICE = 285 + SYS_OPENAT = 286 + SYS_MKDIRAT = 287 + SYS_MKNODAT = 288 + SYS_FCHOWNAT = 289 + SYS_FUTIMESAT = 290 + SYS_NEWFSTATAT = 291 + SYS_UNLINKAT = 292 + SYS_RENAMEAT = 293 + SYS_LINKAT = 294 + SYS_SYMLINKAT = 295 + SYS_READLINKAT = 296 + SYS_FCHMODAT = 297 + SYS_FACCESSAT = 298 + SYS_GET_ROBUST_LIST = 299 + SYS_SET_ROBUST_LIST = 300 + SYS_MOVE_PAGES = 301 + SYS_GETCPU = 302 + SYS_EPOLL_PWAIT = 303 + SYS_UTIMENSAT = 304 + SYS_SIGNALFD = 305 + SYS_TIMERFD_CREATE = 306 + SYS_EVENTFD = 307 + SYS_SYNC_FILE_RANGE2 = 308 + SYS_FALLOCATE = 309 + SYS_SUBPAGE_PROT = 310 + SYS_TIMERFD_SETTIME = 311 + SYS_TIMERFD_GETTIME = 312 + SYS_SIGNALFD4 = 313 + SYS_EVENTFD2 = 314 + SYS_EPOLL_CREATE1 = 315 + SYS_DUP3 = 316 + SYS_PIPE2 = 317 + SYS_INOTIFY_INIT1 = 318 + SYS_PERF_EVENT_OPEN = 319 + SYS_PREADV = 320 + SYS_PWRITEV = 321 + SYS_RT_TGSIGQUEUEINFO = 322 + SYS_FANOTIFY_INIT = 323 + SYS_FANOTIFY_MARK = 324 + SYS_PRLIMIT64 = 325 + SYS_SOCKET = 326 + SYS_BIND = 327 + SYS_CONNECT = 328 + SYS_LISTEN = 329 + SYS_ACCEPT = 330 + SYS_GETSOCKNAME = 331 + SYS_GETPEERNAME = 332 + SYS_SOCKETPAIR = 333 + SYS_SEND = 334 + SYS_SENDTO = 335 + SYS_RECV = 336 + SYS_RECVFROM = 337 + SYS_SHUTDOWN = 338 + SYS_SETSOCKOPT = 339 + SYS_GETSOCKOPT = 340 + SYS_SENDMSG = 341 + SYS_RECVMSG = 342 + SYS_RECVMMSG = 343 + SYS_ACCEPT4 = 344 + SYS_NAME_TO_HANDLE_AT = 345 + SYS_OPEN_BY_HANDLE_AT = 346 + SYS_CLOCK_ADJTIME = 347 + SYS_SYNCFS = 348 + SYS_SENDMMSG = 349 + SYS_SETNS = 350 + SYS_PROCESS_VM_READV = 351 + SYS_PROCESS_VM_WRITEV = 352 + SYS_FINIT_MODULE = 353 + SYS_KCMP = 354 + SYS_SCHED_SETATTR = 355 + SYS_SCHED_GETATTR = 356 + SYS_RENAMEAT2 = 357 + SYS_SECCOMP = 358 + SYS_GETRANDOM = 359 + SYS_MEMFD_CREATE = 360 + SYS_BPF = 361 + SYS_EXECVEAT = 362 + SYS_SWITCH_ENDIAN = 363 + SYS_USERFAULTFD = 364 + SYS_MEMBARRIER = 365 + SYS_MLOCK2 = 378 + SYS_COPY_FILE_RANGE = 379 + SYS_PREADV2 = 380 + SYS_PWRITEV2 = 381 + SYS_KEXEC_FILE_LOAD = 382 + SYS_STATX = 383 + SYS_PKEY_ALLOC = 384 + SYS_PKEY_FREE = 385 + SYS_PKEY_MPROTECT = 386 + SYS_RSEQ = 387 + SYS_IO_PGETEVENTS = 388 + SYS_SEMTIMEDOP = 392 + SYS_SEMGET = 393 + SYS_SEMCTL = 394 + SYS_SHMGET = 395 + SYS_SHMCTL = 396 + SYS_SHMAT = 397 + SYS_SHMDT = 398 + SYS_MSGGET = 399 + SYS_MSGSND = 400 + SYS_MSGRCV = 401 + SYS_MSGCTL = 402 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_QUOTACTL_FD = 443 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 + SYS_PROCESS_MRELEASE = 448 + SYS_FUTEX_WAITV = 449 + SYS_SET_MEMPOLICY_HOME_NODE = 450 + SYS_CACHESTAT = 451 + SYS_FCHMODAT2 = 452 + SYS_MAP_SHADOW_STACK = 453 + SYS_FUTEX_WAKE = 454 + SYS_FUTEX_WAIT = 455 + SYS_FUTEX_REQUEUE = 456 + SYS_STATMOUNT = 457 + SYS_LISTMOUNT = 458 + SYS_LSM_GET_SELF_ATTR = 459 + SYS_LSM_SET_SELF_ATTR = 460 + SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 +) diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go new file mode 100644 index 000000000..0c7d21c18 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go @@ -0,0 +1,428 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/ppc64le/include /tmp/ppc64le/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc64le && linux + +package unix + +const ( + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAITPID = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_TIME = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_BREAK = 17 + SYS_OLDSTAT = 18 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_UMOUNT = 22 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_STIME = 25 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_OLDFSTAT = 28 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_STTY = 31 + SYS_GTTY = 32 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_FTIME = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_PROF = 44 + SYS_BRK = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_SIGNAL = 48 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_LOCK = 53 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_MPX = 56 + SYS_SETPGID = 57 + SYS_ULIMIT = 58 + SYS_OLDOLDUNAME = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SGETMASK = 68 + SYS_SSETMASK = 69 + SYS_SETREUID = 70 + SYS_SETREGID = 71 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRLIMIT = 76 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_GETGROUPS = 80 + SYS_SETGROUPS = 81 + SYS_SELECT = 82 + SYS_SYMLINK = 83 + SYS_OLDLSTAT = 84 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_READDIR = 89 + SYS_MMAP = 90 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_FCHOWN = 95 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_PROFIL = 98 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_IOPERM = 101 + SYS_SOCKETCALL = 102 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_OLDUNAME = 109 + SYS_IOPL = 110 + SYS_VHANGUP = 111 + SYS_IDLE = 112 + SYS_VM86 = 113 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_IPC = 117 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_MODIFY_LDT = 123 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_CREATE_MODULE = 127 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_GET_KERNEL_SYMS = 130 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_AFS_SYSCALL = 137 + SYS_SETFSUID = 138 + SYS_SETFSGID = 139 + SYS__LLSEEK = 140 + SYS_GETDENTS = 141 + SYS__NEWSELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_SETRESUID = 164 + SYS_GETRESUID = 165 + SYS_QUERY_MODULE = 166 + SYS_POLL = 167 + SYS_NFSSERVCTL = 168 + SYS_SETRESGID = 169 + SYS_GETRESGID = 170 + SYS_PRCTL = 171 + SYS_RT_SIGRETURN = 172 + SYS_RT_SIGACTION = 173 + SYS_RT_SIGPROCMASK = 174 + SYS_RT_SIGPENDING = 175 + SYS_RT_SIGTIMEDWAIT = 176 + SYS_RT_SIGQUEUEINFO = 177 + SYS_RT_SIGSUSPEND = 178 + SYS_PREAD64 = 179 + SYS_PWRITE64 = 180 + SYS_CHOWN = 181 + SYS_GETCWD = 182 + SYS_CAPGET = 183 + SYS_CAPSET = 184 + SYS_SIGALTSTACK = 185 + SYS_SENDFILE = 186 + SYS_GETPMSG = 187 + SYS_PUTPMSG = 188 + SYS_VFORK = 189 + SYS_UGETRLIMIT = 190 + SYS_READAHEAD = 191 + SYS_PCICONFIG_READ = 198 + SYS_PCICONFIG_WRITE = 199 + SYS_PCICONFIG_IOBASE = 200 + SYS_MULTIPLEXER = 201 + SYS_GETDENTS64 = 202 + SYS_PIVOT_ROOT = 203 + SYS_MADVISE = 205 + SYS_MINCORE = 206 + SYS_GETTID = 207 + SYS_TKILL = 208 + SYS_SETXATTR = 209 + SYS_LSETXATTR = 210 + SYS_FSETXATTR = 211 + SYS_GETXATTR = 212 + SYS_LGETXATTR = 213 + SYS_FGETXATTR = 214 + SYS_LISTXATTR = 215 + SYS_LLISTXATTR = 216 + SYS_FLISTXATTR = 217 + SYS_REMOVEXATTR = 218 + SYS_LREMOVEXATTR = 219 + SYS_FREMOVEXATTR = 220 + SYS_FUTEX = 221 + SYS_SCHED_SETAFFINITY = 222 + SYS_SCHED_GETAFFINITY = 223 + SYS_TUXCALL = 225 + SYS_IO_SETUP = 227 + SYS_IO_DESTROY = 228 + SYS_IO_GETEVENTS = 229 + SYS_IO_SUBMIT = 230 + SYS_IO_CANCEL = 231 + SYS_SET_TID_ADDRESS = 232 + SYS_FADVISE64 = 233 + SYS_EXIT_GROUP = 234 + SYS_LOOKUP_DCOOKIE = 235 + SYS_EPOLL_CREATE = 236 + SYS_EPOLL_CTL = 237 + SYS_EPOLL_WAIT = 238 + SYS_REMAP_FILE_PAGES = 239 + SYS_TIMER_CREATE = 240 + SYS_TIMER_SETTIME = 241 + SYS_TIMER_GETTIME = 242 + SYS_TIMER_GETOVERRUN = 243 + SYS_TIMER_DELETE = 244 + SYS_CLOCK_SETTIME = 245 + SYS_CLOCK_GETTIME = 246 + SYS_CLOCK_GETRES = 247 + SYS_CLOCK_NANOSLEEP = 248 + SYS_SWAPCONTEXT = 249 + SYS_TGKILL = 250 + SYS_UTIMES = 251 + SYS_STATFS64 = 252 + SYS_FSTATFS64 = 253 + SYS_RTAS = 255 + SYS_SYS_DEBUG_SETCONTEXT = 256 + SYS_MIGRATE_PAGES = 258 + SYS_MBIND = 259 + SYS_GET_MEMPOLICY = 260 + SYS_SET_MEMPOLICY = 261 + SYS_MQ_OPEN = 262 + SYS_MQ_UNLINK = 263 + SYS_MQ_TIMEDSEND = 264 + SYS_MQ_TIMEDRECEIVE = 265 + SYS_MQ_NOTIFY = 266 + SYS_MQ_GETSETATTR = 267 + SYS_KEXEC_LOAD = 268 + SYS_ADD_KEY = 269 + SYS_REQUEST_KEY = 270 + SYS_KEYCTL = 271 + SYS_WAITID = 272 + SYS_IOPRIO_SET = 273 + SYS_IOPRIO_GET = 274 + SYS_INOTIFY_INIT = 275 + SYS_INOTIFY_ADD_WATCH = 276 + SYS_INOTIFY_RM_WATCH = 277 + SYS_SPU_RUN = 278 + SYS_SPU_CREATE = 279 + SYS_PSELECT6 = 280 + SYS_PPOLL = 281 + SYS_UNSHARE = 282 + SYS_SPLICE = 283 + SYS_TEE = 284 + SYS_VMSPLICE = 285 + SYS_OPENAT = 286 + SYS_MKDIRAT = 287 + SYS_MKNODAT = 288 + SYS_FCHOWNAT = 289 + SYS_FUTIMESAT = 290 + SYS_NEWFSTATAT = 291 + SYS_UNLINKAT = 292 + SYS_RENAMEAT = 293 + SYS_LINKAT = 294 + SYS_SYMLINKAT = 295 + SYS_READLINKAT = 296 + SYS_FCHMODAT = 297 + SYS_FACCESSAT = 298 + SYS_GET_ROBUST_LIST = 299 + SYS_SET_ROBUST_LIST = 300 + SYS_MOVE_PAGES = 301 + SYS_GETCPU = 302 + SYS_EPOLL_PWAIT = 303 + SYS_UTIMENSAT = 304 + SYS_SIGNALFD = 305 + SYS_TIMERFD_CREATE = 306 + SYS_EVENTFD = 307 + SYS_SYNC_FILE_RANGE2 = 308 + SYS_FALLOCATE = 309 + SYS_SUBPAGE_PROT = 310 + SYS_TIMERFD_SETTIME = 311 + SYS_TIMERFD_GETTIME = 312 + SYS_SIGNALFD4 = 313 + SYS_EVENTFD2 = 314 + SYS_EPOLL_CREATE1 = 315 + SYS_DUP3 = 316 + SYS_PIPE2 = 317 + SYS_INOTIFY_INIT1 = 318 + SYS_PERF_EVENT_OPEN = 319 + SYS_PREADV = 320 + SYS_PWRITEV = 321 + SYS_RT_TGSIGQUEUEINFO = 322 + SYS_FANOTIFY_INIT = 323 + SYS_FANOTIFY_MARK = 324 + SYS_PRLIMIT64 = 325 + SYS_SOCKET = 326 + SYS_BIND = 327 + SYS_CONNECT = 328 + SYS_LISTEN = 329 + SYS_ACCEPT = 330 + SYS_GETSOCKNAME = 331 + SYS_GETPEERNAME = 332 + SYS_SOCKETPAIR = 333 + SYS_SEND = 334 + SYS_SENDTO = 335 + SYS_RECV = 336 + SYS_RECVFROM = 337 + SYS_SHUTDOWN = 338 + SYS_SETSOCKOPT = 339 + SYS_GETSOCKOPT = 340 + SYS_SENDMSG = 341 + SYS_RECVMSG = 342 + SYS_RECVMMSG = 343 + SYS_ACCEPT4 = 344 + SYS_NAME_TO_HANDLE_AT = 345 + SYS_OPEN_BY_HANDLE_AT = 346 + SYS_CLOCK_ADJTIME = 347 + SYS_SYNCFS = 348 + SYS_SENDMMSG = 349 + SYS_SETNS = 350 + SYS_PROCESS_VM_READV = 351 + SYS_PROCESS_VM_WRITEV = 352 + SYS_FINIT_MODULE = 353 + SYS_KCMP = 354 + SYS_SCHED_SETATTR = 355 + SYS_SCHED_GETATTR = 356 + SYS_RENAMEAT2 = 357 + SYS_SECCOMP = 358 + SYS_GETRANDOM = 359 + SYS_MEMFD_CREATE = 360 + SYS_BPF = 361 + SYS_EXECVEAT = 362 + SYS_SWITCH_ENDIAN = 363 + SYS_USERFAULTFD = 364 + SYS_MEMBARRIER = 365 + SYS_MLOCK2 = 378 + SYS_COPY_FILE_RANGE = 379 + SYS_PREADV2 = 380 + SYS_PWRITEV2 = 381 + SYS_KEXEC_FILE_LOAD = 382 + SYS_STATX = 383 + SYS_PKEY_ALLOC = 384 + SYS_PKEY_FREE = 385 + SYS_PKEY_MPROTECT = 386 + SYS_RSEQ = 387 + SYS_IO_PGETEVENTS = 388 + SYS_SEMTIMEDOP = 392 + SYS_SEMGET = 393 + SYS_SEMCTL = 394 + SYS_SHMGET = 395 + SYS_SHMCTL = 396 + SYS_SHMAT = 397 + SYS_SHMDT = 398 + SYS_MSGGET = 399 + SYS_MSGSND = 400 + SYS_MSGRCV = 401 + SYS_MSGCTL = 402 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_QUOTACTL_FD = 443 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 + SYS_PROCESS_MRELEASE = 448 + SYS_FUTEX_WAITV = 449 + SYS_SET_MEMPOLICY_HOME_NODE = 450 + SYS_CACHESTAT = 451 + SYS_FCHMODAT2 = 452 + SYS_MAP_SHADOW_STACK = 453 + SYS_FUTEX_WAKE = 454 + SYS_FUTEX_WAIT = 455 + SYS_FUTEX_REQUEUE = 456 + SYS_STATMOUNT = 457 + SYS_LISTMOUNT = 458 + SYS_LSM_GET_SELF_ATTR = 459 + SYS_LSM_SET_SELF_ATTR = 460 + SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 +) diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go new file mode 100644 index 000000000..840539169 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go @@ -0,0 +1,333 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/riscv64/include /tmp/riscv64/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build riscv64 && linux + +package unix + +const ( + SYS_IO_SETUP = 0 + SYS_IO_DESTROY = 1 + SYS_IO_SUBMIT = 2 + SYS_IO_CANCEL = 3 + SYS_IO_GETEVENTS = 4 + SYS_SETXATTR = 5 + SYS_LSETXATTR = 6 + SYS_FSETXATTR = 7 + SYS_GETXATTR = 8 + SYS_LGETXATTR = 9 + SYS_FGETXATTR = 10 + SYS_LISTXATTR = 11 + SYS_LLISTXATTR = 12 + SYS_FLISTXATTR = 13 + SYS_REMOVEXATTR = 14 + SYS_LREMOVEXATTR = 15 + SYS_FREMOVEXATTR = 16 + SYS_GETCWD = 17 + SYS_LOOKUP_DCOOKIE = 18 + SYS_EVENTFD2 = 19 + SYS_EPOLL_CREATE1 = 20 + SYS_EPOLL_CTL = 21 + SYS_EPOLL_PWAIT = 22 + SYS_DUP = 23 + SYS_DUP3 = 24 + SYS_FCNTL = 25 + SYS_INOTIFY_INIT1 = 26 + SYS_INOTIFY_ADD_WATCH = 27 + SYS_INOTIFY_RM_WATCH = 28 + SYS_IOCTL = 29 + SYS_IOPRIO_SET = 30 + SYS_IOPRIO_GET = 31 + SYS_FLOCK = 32 + SYS_MKNODAT = 33 + SYS_MKDIRAT = 34 + SYS_UNLINKAT = 35 + SYS_SYMLINKAT = 36 + SYS_LINKAT = 37 + SYS_UMOUNT2 = 39 + SYS_MOUNT = 40 + SYS_PIVOT_ROOT = 41 + SYS_NFSSERVCTL = 42 + SYS_STATFS = 43 + SYS_FSTATFS = 44 + SYS_TRUNCATE = 45 + SYS_FTRUNCATE = 46 + SYS_FALLOCATE = 47 + SYS_FACCESSAT = 48 + SYS_CHDIR = 49 + SYS_FCHDIR = 50 + SYS_CHROOT = 51 + SYS_FCHMOD = 52 + SYS_FCHMODAT = 53 + SYS_FCHOWNAT = 54 + SYS_FCHOWN = 55 + SYS_OPENAT = 56 + SYS_CLOSE = 57 + SYS_VHANGUP = 58 + SYS_PIPE2 = 59 + SYS_QUOTACTL = 60 + SYS_GETDENTS64 = 61 + SYS_LSEEK = 62 + SYS_READ = 63 + SYS_WRITE = 64 + SYS_READV = 65 + SYS_WRITEV = 66 + SYS_PREAD64 = 67 + SYS_PWRITE64 = 68 + SYS_PREADV = 69 + SYS_PWRITEV = 70 + SYS_SENDFILE = 71 + SYS_PSELECT6 = 72 + SYS_PPOLL = 73 + SYS_SIGNALFD4 = 74 + SYS_VMSPLICE = 75 + SYS_SPLICE = 76 + SYS_TEE = 77 + SYS_READLINKAT = 78 + SYS_NEWFSTATAT = 79 + SYS_FSTAT = 80 + SYS_SYNC = 81 + SYS_FSYNC = 82 + SYS_FDATASYNC = 83 + SYS_SYNC_FILE_RANGE = 84 + SYS_TIMERFD_CREATE = 85 + SYS_TIMERFD_SETTIME = 86 + SYS_TIMERFD_GETTIME = 87 + SYS_UTIMENSAT = 88 + SYS_ACCT = 89 + SYS_CAPGET = 90 + SYS_CAPSET = 91 + SYS_PERSONALITY = 92 + SYS_EXIT = 93 + SYS_EXIT_GROUP = 94 + SYS_WAITID = 95 + SYS_SET_TID_ADDRESS = 96 + SYS_UNSHARE = 97 + SYS_FUTEX = 98 + SYS_SET_ROBUST_LIST = 99 + SYS_GET_ROBUST_LIST = 100 + SYS_NANOSLEEP = 101 + SYS_GETITIMER = 102 + SYS_SETITIMER = 103 + SYS_KEXEC_LOAD = 104 + SYS_INIT_MODULE = 105 + SYS_DELETE_MODULE = 106 + SYS_TIMER_CREATE = 107 + SYS_TIMER_GETTIME = 108 + SYS_TIMER_GETOVERRUN = 109 + SYS_TIMER_SETTIME = 110 + SYS_TIMER_DELETE = 111 + SYS_CLOCK_SETTIME = 112 + SYS_CLOCK_GETTIME = 113 + SYS_CLOCK_GETRES = 114 + SYS_CLOCK_NANOSLEEP = 115 + SYS_SYSLOG = 116 + SYS_PTRACE = 117 + SYS_SCHED_SETPARAM = 118 + SYS_SCHED_SETSCHEDULER = 119 + SYS_SCHED_GETSCHEDULER = 120 + SYS_SCHED_GETPARAM = 121 + SYS_SCHED_SETAFFINITY = 122 + SYS_SCHED_GETAFFINITY = 123 + SYS_SCHED_YIELD = 124 + SYS_SCHED_GET_PRIORITY_MAX = 125 + SYS_SCHED_GET_PRIORITY_MIN = 126 + SYS_SCHED_RR_GET_INTERVAL = 127 + SYS_RESTART_SYSCALL = 128 + SYS_KILL = 129 + SYS_TKILL = 130 + SYS_TGKILL = 131 + SYS_SIGALTSTACK = 132 + SYS_RT_SIGSUSPEND = 133 + SYS_RT_SIGACTION = 134 + SYS_RT_SIGPROCMASK = 135 + SYS_RT_SIGPENDING = 136 + SYS_RT_SIGTIMEDWAIT = 137 + SYS_RT_SIGQUEUEINFO = 138 + SYS_RT_SIGRETURN = 139 + SYS_SETPRIORITY = 140 + SYS_GETPRIORITY = 141 + SYS_REBOOT = 142 + SYS_SETREGID = 143 + SYS_SETGID = 144 + SYS_SETREUID = 145 + SYS_SETUID = 146 + SYS_SETRESUID = 147 + SYS_GETRESUID = 148 + SYS_SETRESGID = 149 + SYS_GETRESGID = 150 + SYS_SETFSUID = 151 + SYS_SETFSGID = 152 + SYS_TIMES = 153 + SYS_SETPGID = 154 + SYS_GETPGID = 155 + SYS_GETSID = 156 + SYS_SETSID = 157 + SYS_GETGROUPS = 158 + SYS_SETGROUPS = 159 + SYS_UNAME = 160 + SYS_SETHOSTNAME = 161 + SYS_SETDOMAINNAME = 162 + SYS_GETRLIMIT = 163 + SYS_SETRLIMIT = 164 + SYS_GETRUSAGE = 165 + SYS_UMASK = 166 + SYS_PRCTL = 167 + SYS_GETCPU = 168 + SYS_GETTIMEOFDAY = 169 + SYS_SETTIMEOFDAY = 170 + SYS_ADJTIMEX = 171 + SYS_GETPID = 172 + SYS_GETPPID = 173 + SYS_GETUID = 174 + SYS_GETEUID = 175 + SYS_GETGID = 176 + SYS_GETEGID = 177 + SYS_GETTID = 178 + SYS_SYSINFO = 179 + SYS_MQ_OPEN = 180 + SYS_MQ_UNLINK = 181 + SYS_MQ_TIMEDSEND = 182 + SYS_MQ_TIMEDRECEIVE = 183 + SYS_MQ_NOTIFY = 184 + SYS_MQ_GETSETATTR = 185 + SYS_MSGGET = 186 + SYS_MSGCTL = 187 + SYS_MSGRCV = 188 + SYS_MSGSND = 189 + SYS_SEMGET = 190 + SYS_SEMCTL = 191 + SYS_SEMTIMEDOP = 192 + SYS_SEMOP = 193 + SYS_SHMGET = 194 + SYS_SHMCTL = 195 + SYS_SHMAT = 196 + SYS_SHMDT = 197 + SYS_SOCKET = 198 + SYS_SOCKETPAIR = 199 + SYS_BIND = 200 + SYS_LISTEN = 201 + SYS_ACCEPT = 202 + SYS_CONNECT = 203 + SYS_GETSOCKNAME = 204 + SYS_GETPEERNAME = 205 + SYS_SENDTO = 206 + SYS_RECVFROM = 207 + SYS_SETSOCKOPT = 208 + SYS_GETSOCKOPT = 209 + SYS_SHUTDOWN = 210 + SYS_SENDMSG = 211 + SYS_RECVMSG = 212 + SYS_READAHEAD = 213 + SYS_BRK = 214 + SYS_MUNMAP = 215 + SYS_MREMAP = 216 + SYS_ADD_KEY = 217 + SYS_REQUEST_KEY = 218 + SYS_KEYCTL = 219 + SYS_CLONE = 220 + SYS_EXECVE = 221 + SYS_MMAP = 222 + SYS_FADVISE64 = 223 + SYS_SWAPON = 224 + SYS_SWAPOFF = 225 + SYS_MPROTECT = 226 + SYS_MSYNC = 227 + SYS_MLOCK = 228 + SYS_MUNLOCK = 229 + SYS_MLOCKALL = 230 + SYS_MUNLOCKALL = 231 + SYS_MINCORE = 232 + SYS_MADVISE = 233 + SYS_REMAP_FILE_PAGES = 234 + SYS_MBIND = 235 + SYS_GET_MEMPOLICY = 236 + SYS_SET_MEMPOLICY = 237 + SYS_MIGRATE_PAGES = 238 + SYS_MOVE_PAGES = 239 + SYS_RT_TGSIGQUEUEINFO = 240 + SYS_PERF_EVENT_OPEN = 241 + SYS_ACCEPT4 = 242 + SYS_RECVMMSG = 243 + SYS_ARCH_SPECIFIC_SYSCALL = 244 + SYS_RISCV_HWPROBE = 258 + SYS_RISCV_FLUSH_ICACHE = 259 + SYS_WAIT4 = 260 + SYS_PRLIMIT64 = 261 + SYS_FANOTIFY_INIT = 262 + SYS_FANOTIFY_MARK = 263 + SYS_NAME_TO_HANDLE_AT = 264 + SYS_OPEN_BY_HANDLE_AT = 265 + SYS_CLOCK_ADJTIME = 266 + SYS_SYNCFS = 267 + SYS_SETNS = 268 + SYS_SENDMMSG = 269 + SYS_PROCESS_VM_READV = 270 + SYS_PROCESS_VM_WRITEV = 271 + SYS_KCMP = 272 + SYS_FINIT_MODULE = 273 + SYS_SCHED_SETATTR = 274 + SYS_SCHED_GETATTR = 275 + SYS_RENAMEAT2 = 276 + SYS_SECCOMP = 277 + SYS_GETRANDOM = 278 + SYS_MEMFD_CREATE = 279 + SYS_BPF = 280 + SYS_EXECVEAT = 281 + SYS_USERFAULTFD = 282 + SYS_MEMBARRIER = 283 + SYS_MLOCK2 = 284 + SYS_COPY_FILE_RANGE = 285 + SYS_PREADV2 = 286 + SYS_PWRITEV2 = 287 + SYS_PKEY_MPROTECT = 288 + SYS_PKEY_ALLOC = 289 + SYS_PKEY_FREE = 290 + SYS_STATX = 291 + SYS_IO_PGETEVENTS = 292 + SYS_RSEQ = 293 + SYS_KEXEC_FILE_LOAD = 294 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_QUOTACTL_FD = 443 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 + SYS_MEMFD_SECRET = 447 + SYS_PROCESS_MRELEASE = 448 + SYS_FUTEX_WAITV = 449 + SYS_SET_MEMPOLICY_HOME_NODE = 450 + SYS_CACHESTAT = 451 + SYS_FCHMODAT2 = 452 + SYS_MAP_SHADOW_STACK = 453 + SYS_FUTEX_WAKE = 454 + SYS_FUTEX_WAIT = 455 + SYS_FUTEX_REQUEUE = 456 + SYS_STATMOUNT = 457 + SYS_LISTMOUNT = 458 + SYS_LSM_GET_SELF_ATTR = 459 + SYS_LSM_SET_SELF_ATTR = 460 + SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 +) diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go new file mode 100644 index 000000000..fcf1b790d --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go @@ -0,0 +1,394 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/s390x/include -fsigned-char /tmp/s390x/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build s390x && linux + +package unix + +const ( + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_RESTART_SYSCALL = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_UMOUNT = 22 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_BRK = 45 + SYS_SIGNAL = 48 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_SETPGID = 57 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_SYMLINK = 83 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_READDIR = 89 + SYS_MMAP = 90 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_SOCKETCALL = 102 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_LOOKUP_DCOOKIE = 110 + SYS_VHANGUP = 111 + SYS_IDLE = 112 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_IPC = 117 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_CREATE_MODULE = 127 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_GET_KERNEL_SYMS = 130 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_AFS_SYSCALL = 137 + SYS_GETDENTS = 141 + SYS_SELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_QUERY_MODULE = 167 + SYS_POLL = 168 + SYS_NFSSERVCTL = 169 + SYS_PRCTL = 172 + SYS_RT_SIGRETURN = 173 + SYS_RT_SIGACTION = 174 + SYS_RT_SIGPROCMASK = 175 + SYS_RT_SIGPENDING = 176 + SYS_RT_SIGTIMEDWAIT = 177 + SYS_RT_SIGQUEUEINFO = 178 + SYS_RT_SIGSUSPEND = 179 + SYS_PREAD64 = 180 + SYS_PWRITE64 = 181 + SYS_GETCWD = 183 + SYS_CAPGET = 184 + SYS_CAPSET = 185 + SYS_SIGALTSTACK = 186 + SYS_SENDFILE = 187 + SYS_GETPMSG = 188 + SYS_PUTPMSG = 189 + SYS_VFORK = 190 + SYS_GETRLIMIT = 191 + SYS_LCHOWN = 198 + SYS_GETUID = 199 + SYS_GETGID = 200 + SYS_GETEUID = 201 + SYS_GETEGID = 202 + SYS_SETREUID = 203 + SYS_SETREGID = 204 + SYS_GETGROUPS = 205 + SYS_SETGROUPS = 206 + SYS_FCHOWN = 207 + SYS_SETRESUID = 208 + SYS_GETRESUID = 209 + SYS_SETRESGID = 210 + SYS_GETRESGID = 211 + SYS_CHOWN = 212 + SYS_SETUID = 213 + SYS_SETGID = 214 + SYS_SETFSUID = 215 + SYS_SETFSGID = 216 + SYS_PIVOT_ROOT = 217 + SYS_MINCORE = 218 + SYS_MADVISE = 219 + SYS_GETDENTS64 = 220 + SYS_READAHEAD = 222 + SYS_SETXATTR = 224 + SYS_LSETXATTR = 225 + SYS_FSETXATTR = 226 + SYS_GETXATTR = 227 + SYS_LGETXATTR = 228 + SYS_FGETXATTR = 229 + SYS_LISTXATTR = 230 + SYS_LLISTXATTR = 231 + SYS_FLISTXATTR = 232 + SYS_REMOVEXATTR = 233 + SYS_LREMOVEXATTR = 234 + SYS_FREMOVEXATTR = 235 + SYS_GETTID = 236 + SYS_TKILL = 237 + SYS_FUTEX = 238 + SYS_SCHED_SETAFFINITY = 239 + SYS_SCHED_GETAFFINITY = 240 + SYS_TGKILL = 241 + SYS_IO_SETUP = 243 + SYS_IO_DESTROY = 244 + SYS_IO_GETEVENTS = 245 + SYS_IO_SUBMIT = 246 + SYS_IO_CANCEL = 247 + SYS_EXIT_GROUP = 248 + SYS_EPOLL_CREATE = 249 + SYS_EPOLL_CTL = 250 + SYS_EPOLL_WAIT = 251 + SYS_SET_TID_ADDRESS = 252 + SYS_FADVISE64 = 253 + SYS_TIMER_CREATE = 254 + SYS_TIMER_SETTIME = 255 + SYS_TIMER_GETTIME = 256 + SYS_TIMER_GETOVERRUN = 257 + SYS_TIMER_DELETE = 258 + SYS_CLOCK_SETTIME = 259 + SYS_CLOCK_GETTIME = 260 + SYS_CLOCK_GETRES = 261 + SYS_CLOCK_NANOSLEEP = 262 + SYS_STATFS64 = 265 + SYS_FSTATFS64 = 266 + SYS_REMAP_FILE_PAGES = 267 + SYS_MBIND = 268 + SYS_GET_MEMPOLICY = 269 + SYS_SET_MEMPOLICY = 270 + SYS_MQ_OPEN = 271 + SYS_MQ_UNLINK = 272 + SYS_MQ_TIMEDSEND = 273 + SYS_MQ_TIMEDRECEIVE = 274 + SYS_MQ_NOTIFY = 275 + SYS_MQ_GETSETATTR = 276 + SYS_KEXEC_LOAD = 277 + SYS_ADD_KEY = 278 + SYS_REQUEST_KEY = 279 + SYS_KEYCTL = 280 + SYS_WAITID = 281 + SYS_IOPRIO_SET = 282 + SYS_IOPRIO_GET = 283 + SYS_INOTIFY_INIT = 284 + SYS_INOTIFY_ADD_WATCH = 285 + SYS_INOTIFY_RM_WATCH = 286 + SYS_MIGRATE_PAGES = 287 + SYS_OPENAT = 288 + SYS_MKDIRAT = 289 + SYS_MKNODAT = 290 + SYS_FCHOWNAT = 291 + SYS_FUTIMESAT = 292 + SYS_NEWFSTATAT = 293 + SYS_UNLINKAT = 294 + SYS_RENAMEAT = 295 + SYS_LINKAT = 296 + SYS_SYMLINKAT = 297 + SYS_READLINKAT = 298 + SYS_FCHMODAT = 299 + SYS_FACCESSAT = 300 + SYS_PSELECT6 = 301 + SYS_PPOLL = 302 + SYS_UNSHARE = 303 + SYS_SET_ROBUST_LIST = 304 + SYS_GET_ROBUST_LIST = 305 + SYS_SPLICE = 306 + SYS_SYNC_FILE_RANGE = 307 + SYS_TEE = 308 + SYS_VMSPLICE = 309 + SYS_MOVE_PAGES = 310 + SYS_GETCPU = 311 + SYS_EPOLL_PWAIT = 312 + SYS_UTIMES = 313 + SYS_FALLOCATE = 314 + SYS_UTIMENSAT = 315 + SYS_SIGNALFD = 316 + SYS_TIMERFD = 317 + SYS_EVENTFD = 318 + SYS_TIMERFD_CREATE = 319 + SYS_TIMERFD_SETTIME = 320 + SYS_TIMERFD_GETTIME = 321 + SYS_SIGNALFD4 = 322 + SYS_EVENTFD2 = 323 + SYS_INOTIFY_INIT1 = 324 + SYS_PIPE2 = 325 + SYS_DUP3 = 326 + SYS_EPOLL_CREATE1 = 327 + SYS_PREADV = 328 + SYS_PWRITEV = 329 + SYS_RT_TGSIGQUEUEINFO = 330 + SYS_PERF_EVENT_OPEN = 331 + SYS_FANOTIFY_INIT = 332 + SYS_FANOTIFY_MARK = 333 + SYS_PRLIMIT64 = 334 + SYS_NAME_TO_HANDLE_AT = 335 + SYS_OPEN_BY_HANDLE_AT = 336 + SYS_CLOCK_ADJTIME = 337 + SYS_SYNCFS = 338 + SYS_SETNS = 339 + SYS_PROCESS_VM_READV = 340 + SYS_PROCESS_VM_WRITEV = 341 + SYS_S390_RUNTIME_INSTR = 342 + SYS_KCMP = 343 + SYS_FINIT_MODULE = 344 + SYS_SCHED_SETATTR = 345 + SYS_SCHED_GETATTR = 346 + SYS_RENAMEAT2 = 347 + SYS_SECCOMP = 348 + SYS_GETRANDOM = 349 + SYS_MEMFD_CREATE = 350 + SYS_BPF = 351 + SYS_S390_PCI_MMIO_WRITE = 352 + SYS_S390_PCI_MMIO_READ = 353 + SYS_EXECVEAT = 354 + SYS_USERFAULTFD = 355 + SYS_MEMBARRIER = 356 + SYS_RECVMMSG = 357 + SYS_SENDMMSG = 358 + SYS_SOCKET = 359 + SYS_SOCKETPAIR = 360 + SYS_BIND = 361 + SYS_CONNECT = 362 + SYS_LISTEN = 363 + SYS_ACCEPT4 = 364 + SYS_GETSOCKOPT = 365 + SYS_SETSOCKOPT = 366 + SYS_GETSOCKNAME = 367 + SYS_GETPEERNAME = 368 + SYS_SENDTO = 369 + SYS_SENDMSG = 370 + SYS_RECVFROM = 371 + SYS_RECVMSG = 372 + SYS_SHUTDOWN = 373 + SYS_MLOCK2 = 374 + SYS_COPY_FILE_RANGE = 375 + SYS_PREADV2 = 376 + SYS_PWRITEV2 = 377 + SYS_S390_GUARDED_STORAGE = 378 + SYS_STATX = 379 + SYS_S390_STHYI = 380 + SYS_KEXEC_FILE_LOAD = 381 + SYS_IO_PGETEVENTS = 382 + SYS_RSEQ = 383 + SYS_PKEY_MPROTECT = 384 + SYS_PKEY_ALLOC = 385 + SYS_PKEY_FREE = 386 + SYS_SEMTIMEDOP = 392 + SYS_SEMGET = 393 + SYS_SEMCTL = 394 + SYS_SHMGET = 395 + SYS_SHMCTL = 396 + SYS_SHMAT = 397 + SYS_SHMDT = 398 + SYS_MSGGET = 399 + SYS_MSGSND = 400 + SYS_MSGRCV = 401 + SYS_MSGCTL = 402 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_QUOTACTL_FD = 443 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 + SYS_MEMFD_SECRET = 447 + SYS_PROCESS_MRELEASE = 448 + SYS_FUTEX_WAITV = 449 + SYS_SET_MEMPOLICY_HOME_NODE = 450 + SYS_CACHESTAT = 451 + SYS_FCHMODAT2 = 452 + SYS_MAP_SHADOW_STACK = 453 + SYS_FUTEX_WAKE = 454 + SYS_FUTEX_WAIT = 455 + SYS_FUTEX_REQUEUE = 456 + SYS_STATMOUNT = 457 + SYS_LISTMOUNT = 458 + SYS_LSM_GET_SELF_ATTR = 459 + SYS_LSM_SET_SELF_ATTR = 460 + SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 +) diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go new file mode 100644 index 000000000..52d15b5f9 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go @@ -0,0 +1,407 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/sparc64/include /tmp/sparc64/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build sparc64 && linux + +package unix + +const ( + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAIT4 = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECV = 11 + SYS_CHDIR = 12 + SYS_CHOWN = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_BRK = 17 + SYS_PERFCTR = 18 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_CAPGET = 21 + SYS_CAPSET = 22 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_VMSPLICE = 25 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_SIGALTSTACK = 28 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_STAT = 38 + SYS_SENDFILE = 39 + SYS_LSTAT = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_UMOUNT2 = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_SIGNAL = 48 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_MEMORY_ORDERING = 52 + SYS_IOCTL = 54 + SYS_REBOOT = 55 + SYS_SYMLINK = 57 + SYS_READLINK = 58 + SYS_EXECVE = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_FSTAT = 62 + SYS_FSTAT64 = 63 + SYS_GETPAGESIZE = 64 + SYS_MSYNC = 65 + SYS_VFORK = 66 + SYS_PREAD64 = 67 + SYS_PWRITE64 = 68 + SYS_MMAP = 71 + SYS_MUNMAP = 73 + SYS_MPROTECT = 74 + SYS_MADVISE = 75 + SYS_VHANGUP = 76 + SYS_MINCORE = 78 + SYS_GETGROUPS = 79 + SYS_SETGROUPS = 80 + SYS_GETPGRP = 81 + SYS_SETITIMER = 83 + SYS_SWAPON = 85 + SYS_GETITIMER = 86 + SYS_SETHOSTNAME = 88 + SYS_DUP2 = 90 + SYS_FCNTL = 92 + SYS_SELECT = 93 + SYS_FSYNC = 95 + SYS_SETPRIORITY = 96 + SYS_SOCKET = 97 + SYS_CONNECT = 98 + SYS_ACCEPT = 99 + SYS_GETPRIORITY = 100 + SYS_RT_SIGRETURN = 101 + SYS_RT_SIGACTION = 102 + SYS_RT_SIGPROCMASK = 103 + SYS_RT_SIGPENDING = 104 + SYS_RT_SIGTIMEDWAIT = 105 + SYS_RT_SIGQUEUEINFO = 106 + SYS_RT_SIGSUSPEND = 107 + SYS_SETRESUID = 108 + SYS_GETRESUID = 109 + SYS_SETRESGID = 110 + SYS_GETRESGID = 111 + SYS_RECVMSG = 113 + SYS_SENDMSG = 114 + SYS_GETTIMEOFDAY = 116 + SYS_GETRUSAGE = 117 + SYS_GETSOCKOPT = 118 + SYS_GETCWD = 119 + SYS_READV = 120 + SYS_WRITEV = 121 + SYS_SETTIMEOFDAY = 122 + SYS_FCHOWN = 123 + SYS_FCHMOD = 124 + SYS_RECVFROM = 125 + SYS_SETREUID = 126 + SYS_SETREGID = 127 + SYS_RENAME = 128 + SYS_TRUNCATE = 129 + SYS_FTRUNCATE = 130 + SYS_FLOCK = 131 + SYS_LSTAT64 = 132 + SYS_SENDTO = 133 + SYS_SHUTDOWN = 134 + SYS_SOCKETPAIR = 135 + SYS_MKDIR = 136 + SYS_RMDIR = 137 + SYS_UTIMES = 138 + SYS_STAT64 = 139 + SYS_SENDFILE64 = 140 + SYS_GETPEERNAME = 141 + SYS_FUTEX = 142 + SYS_GETTID = 143 + SYS_GETRLIMIT = 144 + SYS_SETRLIMIT = 145 + SYS_PIVOT_ROOT = 146 + SYS_PRCTL = 147 + SYS_PCICONFIG_READ = 148 + SYS_PCICONFIG_WRITE = 149 + SYS_GETSOCKNAME = 150 + SYS_INOTIFY_INIT = 151 + SYS_INOTIFY_ADD_WATCH = 152 + SYS_POLL = 153 + SYS_GETDENTS64 = 154 + SYS_INOTIFY_RM_WATCH = 156 + SYS_STATFS = 157 + SYS_FSTATFS = 158 + SYS_UMOUNT = 159 + SYS_SCHED_SET_AFFINITY = 160 + SYS_SCHED_GET_AFFINITY = 161 + SYS_GETDOMAINNAME = 162 + SYS_SETDOMAINNAME = 163 + SYS_UTRAP_INSTALL = 164 + SYS_QUOTACTL = 165 + SYS_SET_TID_ADDRESS = 166 + SYS_MOUNT = 167 + SYS_USTAT = 168 + SYS_SETXATTR = 169 + SYS_LSETXATTR = 170 + SYS_FSETXATTR = 171 + SYS_GETXATTR = 172 + SYS_LGETXATTR = 173 + SYS_GETDENTS = 174 + SYS_SETSID = 175 + SYS_FCHDIR = 176 + SYS_FGETXATTR = 177 + SYS_LISTXATTR = 178 + SYS_LLISTXATTR = 179 + SYS_FLISTXATTR = 180 + SYS_REMOVEXATTR = 181 + SYS_LREMOVEXATTR = 182 + SYS_SIGPENDING = 183 + SYS_QUERY_MODULE = 184 + SYS_SETPGID = 185 + SYS_FREMOVEXATTR = 186 + SYS_TKILL = 187 + SYS_EXIT_GROUP = 188 + SYS_UNAME = 189 + SYS_INIT_MODULE = 190 + SYS_PERSONALITY = 191 + SYS_REMAP_FILE_PAGES = 192 + SYS_EPOLL_CREATE = 193 + SYS_EPOLL_CTL = 194 + SYS_EPOLL_WAIT = 195 + SYS_IOPRIO_SET = 196 + SYS_GETPPID = 197 + SYS_SIGACTION = 198 + SYS_SGETMASK = 199 + SYS_SSETMASK = 200 + SYS_SIGSUSPEND = 201 + SYS_OLDLSTAT = 202 + SYS_USELIB = 203 + SYS_READDIR = 204 + SYS_READAHEAD = 205 + SYS_SOCKETCALL = 206 + SYS_SYSLOG = 207 + SYS_LOOKUP_DCOOKIE = 208 + SYS_FADVISE64 = 209 + SYS_FADVISE64_64 = 210 + SYS_TGKILL = 211 + SYS_WAITPID = 212 + SYS_SWAPOFF = 213 + SYS_SYSINFO = 214 + SYS_IPC = 215 + SYS_SIGRETURN = 216 + SYS_CLONE = 217 + SYS_IOPRIO_GET = 218 + SYS_ADJTIMEX = 219 + SYS_SIGPROCMASK = 220 + SYS_CREATE_MODULE = 221 + SYS_DELETE_MODULE = 222 + SYS_GET_KERNEL_SYMS = 223 + SYS_GETPGID = 224 + SYS_BDFLUSH = 225 + SYS_SYSFS = 226 + SYS_AFS_SYSCALL = 227 + SYS_SETFSUID = 228 + SYS_SETFSGID = 229 + SYS__NEWSELECT = 230 + SYS_SPLICE = 232 + SYS_STIME = 233 + SYS_STATFS64 = 234 + SYS_FSTATFS64 = 235 + SYS__LLSEEK = 236 + SYS_MLOCK = 237 + SYS_MUNLOCK = 238 + SYS_MLOCKALL = 239 + SYS_MUNLOCKALL = 240 + SYS_SCHED_SETPARAM = 241 + SYS_SCHED_GETPARAM = 242 + SYS_SCHED_SETSCHEDULER = 243 + SYS_SCHED_GETSCHEDULER = 244 + SYS_SCHED_YIELD = 245 + SYS_SCHED_GET_PRIORITY_MAX = 246 + SYS_SCHED_GET_PRIORITY_MIN = 247 + SYS_SCHED_RR_GET_INTERVAL = 248 + SYS_NANOSLEEP = 249 + SYS_MREMAP = 250 + SYS__SYSCTL = 251 + SYS_GETSID = 252 + SYS_FDATASYNC = 253 + SYS_NFSSERVCTL = 254 + SYS_SYNC_FILE_RANGE = 255 + SYS_CLOCK_SETTIME = 256 + SYS_CLOCK_GETTIME = 257 + SYS_CLOCK_GETRES = 258 + SYS_CLOCK_NANOSLEEP = 259 + SYS_SCHED_GETAFFINITY = 260 + SYS_SCHED_SETAFFINITY = 261 + SYS_TIMER_SETTIME = 262 + SYS_TIMER_GETTIME = 263 + SYS_TIMER_GETOVERRUN = 264 + SYS_TIMER_DELETE = 265 + SYS_TIMER_CREATE = 266 + SYS_VSERVER = 267 + SYS_IO_SETUP = 268 + SYS_IO_DESTROY = 269 + SYS_IO_SUBMIT = 270 + SYS_IO_CANCEL = 271 + SYS_IO_GETEVENTS = 272 + SYS_MQ_OPEN = 273 + SYS_MQ_UNLINK = 274 + SYS_MQ_TIMEDSEND = 275 + SYS_MQ_TIMEDRECEIVE = 276 + SYS_MQ_NOTIFY = 277 + SYS_MQ_GETSETATTR = 278 + SYS_WAITID = 279 + SYS_TEE = 280 + SYS_ADD_KEY = 281 + SYS_REQUEST_KEY = 282 + SYS_KEYCTL = 283 + SYS_OPENAT = 284 + SYS_MKDIRAT = 285 + SYS_MKNODAT = 286 + SYS_FCHOWNAT = 287 + SYS_FUTIMESAT = 288 + SYS_FSTATAT64 = 289 + SYS_UNLINKAT = 290 + SYS_RENAMEAT = 291 + SYS_LINKAT = 292 + SYS_SYMLINKAT = 293 + SYS_READLINKAT = 294 + SYS_FCHMODAT = 295 + SYS_FACCESSAT = 296 + SYS_PSELECT6 = 297 + SYS_PPOLL = 298 + SYS_UNSHARE = 299 + SYS_SET_ROBUST_LIST = 300 + SYS_GET_ROBUST_LIST = 301 + SYS_MIGRATE_PAGES = 302 + SYS_MBIND = 303 + SYS_GET_MEMPOLICY = 304 + SYS_SET_MEMPOLICY = 305 + SYS_KEXEC_LOAD = 306 + SYS_MOVE_PAGES = 307 + SYS_GETCPU = 308 + SYS_EPOLL_PWAIT = 309 + SYS_UTIMENSAT = 310 + SYS_SIGNALFD = 311 + SYS_TIMERFD_CREATE = 312 + SYS_EVENTFD = 313 + SYS_FALLOCATE = 314 + SYS_TIMERFD_SETTIME = 315 + SYS_TIMERFD_GETTIME = 316 + SYS_SIGNALFD4 = 317 + SYS_EVENTFD2 = 318 + SYS_EPOLL_CREATE1 = 319 + SYS_DUP3 = 320 + SYS_PIPE2 = 321 + SYS_INOTIFY_INIT1 = 322 + SYS_ACCEPT4 = 323 + SYS_PREADV = 324 + SYS_PWRITEV = 325 + SYS_RT_TGSIGQUEUEINFO = 326 + SYS_PERF_EVENT_OPEN = 327 + SYS_RECVMMSG = 328 + SYS_FANOTIFY_INIT = 329 + SYS_FANOTIFY_MARK = 330 + SYS_PRLIMIT64 = 331 + SYS_NAME_TO_HANDLE_AT = 332 + SYS_OPEN_BY_HANDLE_AT = 333 + SYS_CLOCK_ADJTIME = 334 + SYS_SYNCFS = 335 + SYS_SENDMMSG = 336 + SYS_SETNS = 337 + SYS_PROCESS_VM_READV = 338 + SYS_PROCESS_VM_WRITEV = 339 + SYS_KERN_FEATURES = 340 + SYS_KCMP = 341 + SYS_FINIT_MODULE = 342 + SYS_SCHED_SETATTR = 343 + SYS_SCHED_GETATTR = 344 + SYS_RENAMEAT2 = 345 + SYS_SECCOMP = 346 + SYS_GETRANDOM = 347 + SYS_MEMFD_CREATE = 348 + SYS_BPF = 349 + SYS_EXECVEAT = 350 + SYS_MEMBARRIER = 351 + SYS_USERFAULTFD = 352 + SYS_BIND = 353 + SYS_LISTEN = 354 + SYS_SETSOCKOPT = 355 + SYS_MLOCK2 = 356 + SYS_COPY_FILE_RANGE = 357 + SYS_PREADV2 = 358 + SYS_PWRITEV2 = 359 + SYS_STATX = 360 + SYS_IO_PGETEVENTS = 361 + SYS_PKEY_MPROTECT = 362 + SYS_PKEY_ALLOC = 363 + SYS_PKEY_FREE = 364 + SYS_RSEQ = 365 + SYS_SEMTIMEDOP = 392 + SYS_SEMGET = 393 + SYS_SEMCTL = 394 + SYS_SHMGET = 395 + SYS_SHMCTL = 396 + SYS_SHMAT = 397 + SYS_SHMDT = 398 + SYS_MSGGET = 399 + SYS_MSGSND = 400 + SYS_MSGRCV = 401 + SYS_MSGCTL = 402 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_QUOTACTL_FD = 443 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 + SYS_PROCESS_MRELEASE = 448 + SYS_FUTEX_WAITV = 449 + SYS_SET_MEMPOLICY_HOME_NODE = 450 + SYS_CACHESTAT = 451 + SYS_FCHMODAT2 = 452 + SYS_MAP_SHADOW_STACK = 453 + SYS_FUTEX_WAKE = 454 + SYS_FUTEX_WAIT = 455 + SYS_FUTEX_REQUEUE = 456 + SYS_STATMOUNT = 457 + SYS_LISTMOUNT = 458 + SYS_LSM_GET_SELF_ATTR = 459 + SYS_LSM_SET_SELF_ATTR = 460 + SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 +) diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go new file mode 100644 index 000000000..b2aa8cd49 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go @@ -0,0 +1,274 @@ +// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build 386 && netbsd + +package unix + +const ( + SYS_EXIT = 1 // { void|sys||exit(int rval); } + SYS_FORK = 2 // { int|sys||fork(void); } + SYS_READ = 3 // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int|sys||open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int|sys||close(int fd); } + SYS_LINK = 9 // { int|sys||link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int|sys||unlink(const char *path); } + SYS_CHDIR = 12 // { int|sys||chdir(const char *path); } + SYS_FCHDIR = 13 // { int|sys||fchdir(int fd); } + SYS_CHMOD = 15 // { int|sys||chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int|sys||chown(const char *path, uid_t uid, gid_t gid); } + SYS_BREAK = 17 // { int|sys||obreak(char *nsize); } + SYS_GETPID = 20 // { pid_t|sys||getpid_with_ppid(void); } + SYS_UNMOUNT = 22 // { int|sys||unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int|sys||setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t|sys||getuid_with_euid(void); } + SYS_GETEUID = 25 // { uid_t|sys||geteuid(void); } + SYS_PTRACE = 26 // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); } + SYS_RECVMSG = 27 // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int|sys||access(const char *path, int flags); } + SYS_CHFLAGS = 34 // { int|sys||chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int|sys||fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { void|sys||sync(void); } + SYS_KILL = 37 // { int|sys||kill(pid_t pid, int signum); } + SYS_GETPPID = 39 // { pid_t|sys||getppid(void); } + SYS_DUP = 41 // { int|sys||dup(int fd); } + SYS_PIPE = 42 // { int|sys||pipe(void); } + SYS_GETEGID = 43 // { gid_t|sys||getegid(void); } + SYS_PROFIL = 44 // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_GETGID = 47 // { gid_t|sys||getgid_with_egid(void); } + SYS___GETLOGIN = 49 // { int|sys||__getlogin(char *namebuf, size_t namelen); } + SYS___SETLOGIN = 50 // { int|sys||__setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int|sys||acct(const char *path); } + SYS_IOCTL = 54 // { int|sys||ioctl(int fd, u_long com, ... void *data); } + SYS_REVOKE = 56 // { int|sys||revoke(const char *path); } + SYS_SYMLINK = 57 // { int|sys||symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int|sys||execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t|sys||umask(mode_t newmask); } + SYS_CHROOT = 61 // { int|sys||chroot(const char *path); } + SYS_VFORK = 66 // { int|sys||vfork(void); } + SYS_SBRK = 69 // { int|sys||sbrk(intptr_t incr); } + SYS_SSTK = 70 // { int|sys||sstk(int incr); } + SYS_VADVISE = 72 // { int|sys||ovadvise(int anom); } + SYS_MUNMAP = 73 // { int|sys||munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int|sys||mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int|sys||madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int|sys||mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int|sys||getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int|sys||getpgrp(void); } + SYS_SETPGID = 82 // { int|sys||setpgid(pid_t pid, pid_t pgid); } + SYS_DUP2 = 90 // { int|sys||dup2(int from, int to); } + SYS_FCNTL = 92 // { int|sys||fcntl(int fd, int cmd, ... void *arg); } + SYS_FSYNC = 95 // { int|sys||fsync(int fd); } + SYS_SETPRIORITY = 96 // { int|sys||setpriority(int which, id_t who, int prio); } + SYS_CONNECT = 98 // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETPRIORITY = 100 // { int|sys||getpriority(int which, id_t who); } + SYS_BIND = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int|sys||listen(int s, int backlog); } + SYS_GETSOCKOPT = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_READV = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_FCHOWN = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int|sys||fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int|sys||rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int|sys||flock(int fd, int how); } + SYS_MKFIFO = 132 // { int|sys||mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int|sys||shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int|sys||mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int|sys||rmdir(const char *path); } + SYS_SETSID = 147 // { int|sys||setsid(void); } + SYS_SYSARCH = 165 // { int|sys||sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_PWRITE = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_NTP_ADJTIME = 176 // { int|sys||ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int|sys||setgid(gid_t gid); } + SYS_SETEGID = 182 // { int|sys||setegid(gid_t egid); } + SYS_SETEUID = 183 // { int|sys||seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long|sys||pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long|sys||fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); } + SYS_LSEEK = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); } + SYS_FTRUNCATE = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); } + SYS___SYSCTL = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); } + SYS_MLOCK = 203 // { int|sys||mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int|sys||munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int|sys||undelete(const char *path); } + SYS_GETPGID = 207 // { pid_t|sys||getpgid(pid_t pid); } + SYS_REBOOT = 208 // { int|sys||reboot(int opt, char *bootstr); } + SYS_POLL = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int|sys||semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_SEMCONFIG = 223 // { int|sys||semconfig(int flag); } + SYS_MSGGET = 225 // { int|sys||msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int|sys||shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); } + SYS_TIMER_CREATE = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); } + SYS_TIMER_DELETE = 236 // { int|sys||timer_delete(timer_t timerid); } + SYS_TIMER_GETOVERRUN = 239 // { int|sys||timer_getoverrun(timer_t timerid); } + SYS_FDATASYNC = 241 // { int|sys||fdatasync(int fd); } + SYS_MLOCKALL = 242 // { int|sys||mlockall(int flags); } + SYS_MUNLOCKALL = 243 // { int|sys||munlockall(void); } + SYS_SIGQUEUEINFO = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); } + SYS_MODCTL = 246 // { int|sys||modctl(int cmd, void *arg); } + SYS___POSIX_RENAME = 270 // { int|sys||__posix_rename(const char *from, const char *to); } + SYS_SWAPCTL = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); } + SYS_MINHERIT = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); } + SYS_LCHMOD = 274 // { int|sys||lchmod(const char *path, mode_t mode); } + SYS_LCHOWN = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); } + SYS_MSYNC = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); } + SYS___POSIX_CHOWN = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); } + SYS___POSIX_FCHOWN = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); } + SYS___POSIX_LCHOWN = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 286 // { pid_t|sys||getsid(pid_t pid); } + SYS___CLONE = 287 // { pid_t|sys||__clone(int flags, void *stack); } + SYS_FKTRACE = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); } + SYS_PREADV = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS___GETCWD = 296 // { int|sys||__getcwd(char *bufp, size_t length); } + SYS_FCHROOT = 297 // { int|sys||fchroot(int fd); } + SYS_LCHFLAGS = 304 // { int|sys||lchflags(const char *path, u_long flags); } + SYS_ISSETUGID = 305 // { int|sys||issetugid(void); } + SYS_UTRACE = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); } + SYS_GETCONTEXT = 307 // { int|sys||getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 308 // { int|sys||setcontext(const struct __ucontext *ucp); } + SYS__LWP_CREATE = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); } + SYS__LWP_EXIT = 310 // { int|sys||_lwp_exit(void); } + SYS__LWP_SELF = 311 // { lwpid_t|sys||_lwp_self(void); } + SYS__LWP_WAIT = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); } + SYS__LWP_SUSPEND = 313 // { int|sys||_lwp_suspend(lwpid_t target); } + SYS__LWP_CONTINUE = 314 // { int|sys||_lwp_continue(lwpid_t target); } + SYS__LWP_WAKEUP = 315 // { int|sys||_lwp_wakeup(lwpid_t target); } + SYS__LWP_GETPRIVATE = 316 // { void *|sys||_lwp_getprivate(void); } + SYS__LWP_SETPRIVATE = 317 // { void|sys||_lwp_setprivate(void *ptr); } + SYS__LWP_KILL = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); } + SYS__LWP_DETACH = 319 // { int|sys||_lwp_detach(lwpid_t target); } + SYS__LWP_UNPARK = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); } + SYS__LWP_UNPARK_ALL = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); } + SYS__LWP_SETNAME = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); } + SYS__LWP_GETNAME = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); } + SYS__LWP_CTL = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); } + SYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); } + SYS_PMC_GET_INFO = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); } + SYS_PMC_CONTROL = 342 // { int|sys||pmc_control(int ctr, int op, void *args); } + SYS_RASCTL = 343 // { int|sys||rasctl(void *addr, size_t len, int op); } + SYS_KQUEUE = 344 // { int|sys||kqueue(void); } + SYS__SCHED_SETPARAM = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); } + SYS__SCHED_GETPARAM = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); } + SYS__SCHED_SETAFFINITY = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); } + SYS__SCHED_GETAFFINITY = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); } + SYS_SCHED_YIELD = 350 // { int|sys||sched_yield(void); } + SYS_FSYNC_RANGE = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); } + SYS_UUIDGEN = 355 // { int|sys||uuidgen(struct uuid *store, int count); } + SYS_GETVFSSTAT = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); } + SYS_STATVFS1 = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); } + SYS_FSTATVFS1 = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); } + SYS_EXTATTRCTL = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FD = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_LINK = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_LIST_FD = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_SETXATTR = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_LSETXATTR = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_FSETXATTR = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); } + SYS_GETXATTR = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); } + SYS_LGETXATTR = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); } + SYS_FGETXATTR = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); } + SYS_LISTXATTR = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); } + SYS_LLISTXATTR = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); } + SYS_FLISTXATTR = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); } + SYS_REMOVEXATTR = 384 // { int|sys||removexattr(const char *path, const char *name); } + SYS_LREMOVEXATTR = 385 // { int|sys||lremovexattr(const char *path, const char *name); } + SYS_FREMOVEXATTR = 386 // { int|sys||fremovexattr(int fd, const char *name); } + SYS_GETDENTS = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); } + SYS_SOCKET = 394 // { int|sys|30|socket(int domain, int type, int protocol); } + SYS_GETFH = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); } + SYS_MOUNT = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); } + SYS_MREMAP = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); } + SYS_PSET_CREATE = 412 // { int|sys||pset_create(psetid_t *psid); } + SYS_PSET_DESTROY = 413 // { int|sys||pset_destroy(psetid_t psid); } + SYS_PSET_ASSIGN = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); } + SYS__PSET_BIND = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); } + SYS_POSIX_FADVISE = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); } + SYS_SELECT = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_GETTIMEOFDAY = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); } + SYS_SETTIMEOFDAY = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); } + SYS_UTIMES = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); } + SYS_ADJTIME = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_FUTIMES = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); } + SYS_LUTIMES = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); } + SYS_SETITIMER = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); } + SYS_CLOCK_GETTIME = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_NANOSLEEP = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS___SIGTIMEDWAIT = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); } + SYS__LWP_PARK = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); } + SYS_KEVENT = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); } + SYS_PSELECT = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_POLLTS = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_STAT = 439 // { int|sys|50|stat(const char *path, struct stat *ub); } + SYS_FSTAT = 440 // { int|sys|50|fstat(int fd, struct stat *sb); } + SYS_LSTAT = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); } + SYS___SEMCTL = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); } + SYS_SHMCTL = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_GETRUSAGE = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); } + SYS_TIMER_SETTIME = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_TIMER_GETTIME = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); } + SYS_NTP_GETTIME = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); } + SYS_WAIT4 = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_MKNOD = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); } + SYS_FHSTAT = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); } + SYS_PIPE2 = 453 // { int|sys||pipe2(int *fildes, int flags); } + SYS_DUP3 = 454 // { int|sys||dup3(int from, int to, int flags); } + SYS_KQUEUE1 = 455 // { int|sys||kqueue1(int flags); } + SYS_PACCEPT = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); } + SYS_LINKAT = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); } + SYS_RENAMEAT = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_MKFIFOAT = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); } + SYS_MKDIRAT = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); } + SYS_FACCESSAT = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); } + SYS_FEXECVE = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); } + SYS_FSTATAT = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_UTIMENSAT = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); } + SYS_OPENAT = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); } + SYS_READLINKAT = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); } + SYS_SYMLINKAT = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); } + SYS_UNLINKAT = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); } + SYS_FUTIMENS = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); } + SYS___QUOTACTL = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); } + SYS_POSIX_SPAWN = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); } + SYS_RECVMMSG = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); } + SYS_SENDMMSG = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); } +) diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go new file mode 100644 index 000000000..524a1b1c9 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go @@ -0,0 +1,274 @@ +// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && netbsd + +package unix + +const ( + SYS_EXIT = 1 // { void|sys||exit(int rval); } + SYS_FORK = 2 // { int|sys||fork(void); } + SYS_READ = 3 // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int|sys||open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int|sys||close(int fd); } + SYS_LINK = 9 // { int|sys||link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int|sys||unlink(const char *path); } + SYS_CHDIR = 12 // { int|sys||chdir(const char *path); } + SYS_FCHDIR = 13 // { int|sys||fchdir(int fd); } + SYS_CHMOD = 15 // { int|sys||chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int|sys||chown(const char *path, uid_t uid, gid_t gid); } + SYS_BREAK = 17 // { int|sys||obreak(char *nsize); } + SYS_GETPID = 20 // { pid_t|sys||getpid_with_ppid(void); } + SYS_UNMOUNT = 22 // { int|sys||unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int|sys||setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t|sys||getuid_with_euid(void); } + SYS_GETEUID = 25 // { uid_t|sys||geteuid(void); } + SYS_PTRACE = 26 // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); } + SYS_RECVMSG = 27 // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int|sys||access(const char *path, int flags); } + SYS_CHFLAGS = 34 // { int|sys||chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int|sys||fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { void|sys||sync(void); } + SYS_KILL = 37 // { int|sys||kill(pid_t pid, int signum); } + SYS_GETPPID = 39 // { pid_t|sys||getppid(void); } + SYS_DUP = 41 // { int|sys||dup(int fd); } + SYS_PIPE = 42 // { int|sys||pipe(void); } + SYS_GETEGID = 43 // { gid_t|sys||getegid(void); } + SYS_PROFIL = 44 // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_GETGID = 47 // { gid_t|sys||getgid_with_egid(void); } + SYS___GETLOGIN = 49 // { int|sys||__getlogin(char *namebuf, size_t namelen); } + SYS___SETLOGIN = 50 // { int|sys||__setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int|sys||acct(const char *path); } + SYS_IOCTL = 54 // { int|sys||ioctl(int fd, u_long com, ... void *data); } + SYS_REVOKE = 56 // { int|sys||revoke(const char *path); } + SYS_SYMLINK = 57 // { int|sys||symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int|sys||execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t|sys||umask(mode_t newmask); } + SYS_CHROOT = 61 // { int|sys||chroot(const char *path); } + SYS_VFORK = 66 // { int|sys||vfork(void); } + SYS_SBRK = 69 // { int|sys||sbrk(intptr_t incr); } + SYS_SSTK = 70 // { int|sys||sstk(int incr); } + SYS_VADVISE = 72 // { int|sys||ovadvise(int anom); } + SYS_MUNMAP = 73 // { int|sys||munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int|sys||mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int|sys||madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int|sys||mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int|sys||getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int|sys||getpgrp(void); } + SYS_SETPGID = 82 // { int|sys||setpgid(pid_t pid, pid_t pgid); } + SYS_DUP2 = 90 // { int|sys||dup2(int from, int to); } + SYS_FCNTL = 92 // { int|sys||fcntl(int fd, int cmd, ... void *arg); } + SYS_FSYNC = 95 // { int|sys||fsync(int fd); } + SYS_SETPRIORITY = 96 // { int|sys||setpriority(int which, id_t who, int prio); } + SYS_CONNECT = 98 // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETPRIORITY = 100 // { int|sys||getpriority(int which, id_t who); } + SYS_BIND = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int|sys||listen(int s, int backlog); } + SYS_GETSOCKOPT = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_READV = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_FCHOWN = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int|sys||fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int|sys||rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int|sys||flock(int fd, int how); } + SYS_MKFIFO = 132 // { int|sys||mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int|sys||shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int|sys||mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int|sys||rmdir(const char *path); } + SYS_SETSID = 147 // { int|sys||setsid(void); } + SYS_SYSARCH = 165 // { int|sys||sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_PWRITE = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_NTP_ADJTIME = 176 // { int|sys||ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int|sys||setgid(gid_t gid); } + SYS_SETEGID = 182 // { int|sys||setegid(gid_t egid); } + SYS_SETEUID = 183 // { int|sys||seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long|sys||pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long|sys||fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); } + SYS_LSEEK = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); } + SYS_FTRUNCATE = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); } + SYS___SYSCTL = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); } + SYS_MLOCK = 203 // { int|sys||mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int|sys||munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int|sys||undelete(const char *path); } + SYS_GETPGID = 207 // { pid_t|sys||getpgid(pid_t pid); } + SYS_REBOOT = 208 // { int|sys||reboot(int opt, char *bootstr); } + SYS_POLL = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int|sys||semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_SEMCONFIG = 223 // { int|sys||semconfig(int flag); } + SYS_MSGGET = 225 // { int|sys||msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int|sys||shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); } + SYS_TIMER_CREATE = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); } + SYS_TIMER_DELETE = 236 // { int|sys||timer_delete(timer_t timerid); } + SYS_TIMER_GETOVERRUN = 239 // { int|sys||timer_getoverrun(timer_t timerid); } + SYS_FDATASYNC = 241 // { int|sys||fdatasync(int fd); } + SYS_MLOCKALL = 242 // { int|sys||mlockall(int flags); } + SYS_MUNLOCKALL = 243 // { int|sys||munlockall(void); } + SYS_SIGQUEUEINFO = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); } + SYS_MODCTL = 246 // { int|sys||modctl(int cmd, void *arg); } + SYS___POSIX_RENAME = 270 // { int|sys||__posix_rename(const char *from, const char *to); } + SYS_SWAPCTL = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); } + SYS_MINHERIT = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); } + SYS_LCHMOD = 274 // { int|sys||lchmod(const char *path, mode_t mode); } + SYS_LCHOWN = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); } + SYS_MSYNC = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); } + SYS___POSIX_CHOWN = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); } + SYS___POSIX_FCHOWN = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); } + SYS___POSIX_LCHOWN = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 286 // { pid_t|sys||getsid(pid_t pid); } + SYS___CLONE = 287 // { pid_t|sys||__clone(int flags, void *stack); } + SYS_FKTRACE = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); } + SYS_PREADV = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS___GETCWD = 296 // { int|sys||__getcwd(char *bufp, size_t length); } + SYS_FCHROOT = 297 // { int|sys||fchroot(int fd); } + SYS_LCHFLAGS = 304 // { int|sys||lchflags(const char *path, u_long flags); } + SYS_ISSETUGID = 305 // { int|sys||issetugid(void); } + SYS_UTRACE = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); } + SYS_GETCONTEXT = 307 // { int|sys||getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 308 // { int|sys||setcontext(const struct __ucontext *ucp); } + SYS__LWP_CREATE = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); } + SYS__LWP_EXIT = 310 // { int|sys||_lwp_exit(void); } + SYS__LWP_SELF = 311 // { lwpid_t|sys||_lwp_self(void); } + SYS__LWP_WAIT = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); } + SYS__LWP_SUSPEND = 313 // { int|sys||_lwp_suspend(lwpid_t target); } + SYS__LWP_CONTINUE = 314 // { int|sys||_lwp_continue(lwpid_t target); } + SYS__LWP_WAKEUP = 315 // { int|sys||_lwp_wakeup(lwpid_t target); } + SYS__LWP_GETPRIVATE = 316 // { void *|sys||_lwp_getprivate(void); } + SYS__LWP_SETPRIVATE = 317 // { void|sys||_lwp_setprivate(void *ptr); } + SYS__LWP_KILL = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); } + SYS__LWP_DETACH = 319 // { int|sys||_lwp_detach(lwpid_t target); } + SYS__LWP_UNPARK = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); } + SYS__LWP_UNPARK_ALL = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); } + SYS__LWP_SETNAME = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); } + SYS__LWP_GETNAME = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); } + SYS__LWP_CTL = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); } + SYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); } + SYS_PMC_GET_INFO = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); } + SYS_PMC_CONTROL = 342 // { int|sys||pmc_control(int ctr, int op, void *args); } + SYS_RASCTL = 343 // { int|sys||rasctl(void *addr, size_t len, int op); } + SYS_KQUEUE = 344 // { int|sys||kqueue(void); } + SYS__SCHED_SETPARAM = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); } + SYS__SCHED_GETPARAM = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); } + SYS__SCHED_SETAFFINITY = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); } + SYS__SCHED_GETAFFINITY = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); } + SYS_SCHED_YIELD = 350 // { int|sys||sched_yield(void); } + SYS_FSYNC_RANGE = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); } + SYS_UUIDGEN = 355 // { int|sys||uuidgen(struct uuid *store, int count); } + SYS_GETVFSSTAT = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); } + SYS_STATVFS1 = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); } + SYS_FSTATVFS1 = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); } + SYS_EXTATTRCTL = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FD = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_LINK = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_LIST_FD = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_SETXATTR = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_LSETXATTR = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_FSETXATTR = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); } + SYS_GETXATTR = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); } + SYS_LGETXATTR = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); } + SYS_FGETXATTR = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); } + SYS_LISTXATTR = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); } + SYS_LLISTXATTR = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); } + SYS_FLISTXATTR = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); } + SYS_REMOVEXATTR = 384 // { int|sys||removexattr(const char *path, const char *name); } + SYS_LREMOVEXATTR = 385 // { int|sys||lremovexattr(const char *path, const char *name); } + SYS_FREMOVEXATTR = 386 // { int|sys||fremovexattr(int fd, const char *name); } + SYS_GETDENTS = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); } + SYS_SOCKET = 394 // { int|sys|30|socket(int domain, int type, int protocol); } + SYS_GETFH = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); } + SYS_MOUNT = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); } + SYS_MREMAP = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); } + SYS_PSET_CREATE = 412 // { int|sys||pset_create(psetid_t *psid); } + SYS_PSET_DESTROY = 413 // { int|sys||pset_destroy(psetid_t psid); } + SYS_PSET_ASSIGN = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); } + SYS__PSET_BIND = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); } + SYS_POSIX_FADVISE = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); } + SYS_SELECT = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_GETTIMEOFDAY = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); } + SYS_SETTIMEOFDAY = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); } + SYS_UTIMES = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); } + SYS_ADJTIME = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_FUTIMES = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); } + SYS_LUTIMES = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); } + SYS_SETITIMER = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); } + SYS_CLOCK_GETTIME = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_NANOSLEEP = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS___SIGTIMEDWAIT = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); } + SYS__LWP_PARK = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); } + SYS_KEVENT = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); } + SYS_PSELECT = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_POLLTS = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_STAT = 439 // { int|sys|50|stat(const char *path, struct stat *ub); } + SYS_FSTAT = 440 // { int|sys|50|fstat(int fd, struct stat *sb); } + SYS_LSTAT = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); } + SYS___SEMCTL = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); } + SYS_SHMCTL = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_GETRUSAGE = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); } + SYS_TIMER_SETTIME = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_TIMER_GETTIME = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); } + SYS_NTP_GETTIME = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); } + SYS_WAIT4 = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_MKNOD = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); } + SYS_FHSTAT = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); } + SYS_PIPE2 = 453 // { int|sys||pipe2(int *fildes, int flags); } + SYS_DUP3 = 454 // { int|sys||dup3(int from, int to, int flags); } + SYS_KQUEUE1 = 455 // { int|sys||kqueue1(int flags); } + SYS_PACCEPT = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); } + SYS_LINKAT = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); } + SYS_RENAMEAT = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_MKFIFOAT = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); } + SYS_MKDIRAT = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); } + SYS_FACCESSAT = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); } + SYS_FEXECVE = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); } + SYS_FSTATAT = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_UTIMENSAT = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); } + SYS_OPENAT = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); } + SYS_READLINKAT = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); } + SYS_SYMLINKAT = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); } + SYS_UNLINKAT = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); } + SYS_FUTIMENS = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); } + SYS___QUOTACTL = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); } + SYS_POSIX_SPAWN = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); } + SYS_RECVMMSG = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); } + SYS_SENDMMSG = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); } +) diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go new file mode 100644 index 000000000..d59b943ac --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go @@ -0,0 +1,274 @@ +// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm && netbsd + +package unix + +const ( + SYS_EXIT = 1 // { void|sys||exit(int rval); } + SYS_FORK = 2 // { int|sys||fork(void); } + SYS_READ = 3 // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int|sys||open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int|sys||close(int fd); } + SYS_LINK = 9 // { int|sys||link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int|sys||unlink(const char *path); } + SYS_CHDIR = 12 // { int|sys||chdir(const char *path); } + SYS_FCHDIR = 13 // { int|sys||fchdir(int fd); } + SYS_CHMOD = 15 // { int|sys||chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int|sys||chown(const char *path, uid_t uid, gid_t gid); } + SYS_BREAK = 17 // { int|sys||obreak(char *nsize); } + SYS_GETPID = 20 // { pid_t|sys||getpid_with_ppid(void); } + SYS_UNMOUNT = 22 // { int|sys||unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int|sys||setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t|sys||getuid_with_euid(void); } + SYS_GETEUID = 25 // { uid_t|sys||geteuid(void); } + SYS_PTRACE = 26 // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); } + SYS_RECVMSG = 27 // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int|sys||access(const char *path, int flags); } + SYS_CHFLAGS = 34 // { int|sys||chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int|sys||fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { void|sys||sync(void); } + SYS_KILL = 37 // { int|sys||kill(pid_t pid, int signum); } + SYS_GETPPID = 39 // { pid_t|sys||getppid(void); } + SYS_DUP = 41 // { int|sys||dup(int fd); } + SYS_PIPE = 42 // { int|sys||pipe(void); } + SYS_GETEGID = 43 // { gid_t|sys||getegid(void); } + SYS_PROFIL = 44 // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_GETGID = 47 // { gid_t|sys||getgid_with_egid(void); } + SYS___GETLOGIN = 49 // { int|sys||__getlogin(char *namebuf, size_t namelen); } + SYS___SETLOGIN = 50 // { int|sys||__setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int|sys||acct(const char *path); } + SYS_IOCTL = 54 // { int|sys||ioctl(int fd, u_long com, ... void *data); } + SYS_REVOKE = 56 // { int|sys||revoke(const char *path); } + SYS_SYMLINK = 57 // { int|sys||symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int|sys||execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t|sys||umask(mode_t newmask); } + SYS_CHROOT = 61 // { int|sys||chroot(const char *path); } + SYS_VFORK = 66 // { int|sys||vfork(void); } + SYS_SBRK = 69 // { int|sys||sbrk(intptr_t incr); } + SYS_SSTK = 70 // { int|sys||sstk(int incr); } + SYS_VADVISE = 72 // { int|sys||ovadvise(int anom); } + SYS_MUNMAP = 73 // { int|sys||munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int|sys||mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int|sys||madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int|sys||mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int|sys||getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int|sys||getpgrp(void); } + SYS_SETPGID = 82 // { int|sys||setpgid(pid_t pid, pid_t pgid); } + SYS_DUP2 = 90 // { int|sys||dup2(int from, int to); } + SYS_FCNTL = 92 // { int|sys||fcntl(int fd, int cmd, ... void *arg); } + SYS_FSYNC = 95 // { int|sys||fsync(int fd); } + SYS_SETPRIORITY = 96 // { int|sys||setpriority(int which, id_t who, int prio); } + SYS_CONNECT = 98 // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETPRIORITY = 100 // { int|sys||getpriority(int which, id_t who); } + SYS_BIND = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int|sys||listen(int s, int backlog); } + SYS_GETSOCKOPT = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_READV = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_FCHOWN = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int|sys||fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int|sys||rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int|sys||flock(int fd, int how); } + SYS_MKFIFO = 132 // { int|sys||mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int|sys||shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int|sys||mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int|sys||rmdir(const char *path); } + SYS_SETSID = 147 // { int|sys||setsid(void); } + SYS_SYSARCH = 165 // { int|sys||sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_PWRITE = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_NTP_ADJTIME = 176 // { int|sys||ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int|sys||setgid(gid_t gid); } + SYS_SETEGID = 182 // { int|sys||setegid(gid_t egid); } + SYS_SETEUID = 183 // { int|sys||seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long|sys||pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long|sys||fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); } + SYS_LSEEK = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); } + SYS_FTRUNCATE = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); } + SYS___SYSCTL = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); } + SYS_MLOCK = 203 // { int|sys||mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int|sys||munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int|sys||undelete(const char *path); } + SYS_GETPGID = 207 // { pid_t|sys||getpgid(pid_t pid); } + SYS_REBOOT = 208 // { int|sys||reboot(int opt, char *bootstr); } + SYS_POLL = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int|sys||semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_SEMCONFIG = 223 // { int|sys||semconfig(int flag); } + SYS_MSGGET = 225 // { int|sys||msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int|sys||shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); } + SYS_TIMER_CREATE = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); } + SYS_TIMER_DELETE = 236 // { int|sys||timer_delete(timer_t timerid); } + SYS_TIMER_GETOVERRUN = 239 // { int|sys||timer_getoverrun(timer_t timerid); } + SYS_FDATASYNC = 241 // { int|sys||fdatasync(int fd); } + SYS_MLOCKALL = 242 // { int|sys||mlockall(int flags); } + SYS_MUNLOCKALL = 243 // { int|sys||munlockall(void); } + SYS_SIGQUEUEINFO = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); } + SYS_MODCTL = 246 // { int|sys||modctl(int cmd, void *arg); } + SYS___POSIX_RENAME = 270 // { int|sys||__posix_rename(const char *from, const char *to); } + SYS_SWAPCTL = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); } + SYS_MINHERIT = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); } + SYS_LCHMOD = 274 // { int|sys||lchmod(const char *path, mode_t mode); } + SYS_LCHOWN = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); } + SYS_MSYNC = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); } + SYS___POSIX_CHOWN = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); } + SYS___POSIX_FCHOWN = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); } + SYS___POSIX_LCHOWN = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 286 // { pid_t|sys||getsid(pid_t pid); } + SYS___CLONE = 287 // { pid_t|sys||__clone(int flags, void *stack); } + SYS_FKTRACE = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); } + SYS_PREADV = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS___GETCWD = 296 // { int|sys||__getcwd(char *bufp, size_t length); } + SYS_FCHROOT = 297 // { int|sys||fchroot(int fd); } + SYS_LCHFLAGS = 304 // { int|sys||lchflags(const char *path, u_long flags); } + SYS_ISSETUGID = 305 // { int|sys||issetugid(void); } + SYS_UTRACE = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); } + SYS_GETCONTEXT = 307 // { int|sys||getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 308 // { int|sys||setcontext(const struct __ucontext *ucp); } + SYS__LWP_CREATE = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); } + SYS__LWP_EXIT = 310 // { int|sys||_lwp_exit(void); } + SYS__LWP_SELF = 311 // { lwpid_t|sys||_lwp_self(void); } + SYS__LWP_WAIT = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); } + SYS__LWP_SUSPEND = 313 // { int|sys||_lwp_suspend(lwpid_t target); } + SYS__LWP_CONTINUE = 314 // { int|sys||_lwp_continue(lwpid_t target); } + SYS__LWP_WAKEUP = 315 // { int|sys||_lwp_wakeup(lwpid_t target); } + SYS__LWP_GETPRIVATE = 316 // { void *|sys||_lwp_getprivate(void); } + SYS__LWP_SETPRIVATE = 317 // { void|sys||_lwp_setprivate(void *ptr); } + SYS__LWP_KILL = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); } + SYS__LWP_DETACH = 319 // { int|sys||_lwp_detach(lwpid_t target); } + SYS__LWP_UNPARK = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); } + SYS__LWP_UNPARK_ALL = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); } + SYS__LWP_SETNAME = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); } + SYS__LWP_GETNAME = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); } + SYS__LWP_CTL = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); } + SYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); } + SYS_PMC_GET_INFO = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); } + SYS_PMC_CONTROL = 342 // { int|sys||pmc_control(int ctr, int op, void *args); } + SYS_RASCTL = 343 // { int|sys||rasctl(void *addr, size_t len, int op); } + SYS_KQUEUE = 344 // { int|sys||kqueue(void); } + SYS__SCHED_SETPARAM = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); } + SYS__SCHED_GETPARAM = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); } + SYS__SCHED_SETAFFINITY = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); } + SYS__SCHED_GETAFFINITY = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); } + SYS_SCHED_YIELD = 350 // { int|sys||sched_yield(void); } + SYS_FSYNC_RANGE = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); } + SYS_UUIDGEN = 355 // { int|sys||uuidgen(struct uuid *store, int count); } + SYS_GETVFSSTAT = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); } + SYS_STATVFS1 = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); } + SYS_FSTATVFS1 = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); } + SYS_EXTATTRCTL = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FD = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_LINK = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_LIST_FD = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_SETXATTR = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_LSETXATTR = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_FSETXATTR = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); } + SYS_GETXATTR = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); } + SYS_LGETXATTR = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); } + SYS_FGETXATTR = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); } + SYS_LISTXATTR = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); } + SYS_LLISTXATTR = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); } + SYS_FLISTXATTR = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); } + SYS_REMOVEXATTR = 384 // { int|sys||removexattr(const char *path, const char *name); } + SYS_LREMOVEXATTR = 385 // { int|sys||lremovexattr(const char *path, const char *name); } + SYS_FREMOVEXATTR = 386 // { int|sys||fremovexattr(int fd, const char *name); } + SYS_GETDENTS = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); } + SYS_SOCKET = 394 // { int|sys|30|socket(int domain, int type, int protocol); } + SYS_GETFH = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); } + SYS_MOUNT = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); } + SYS_MREMAP = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); } + SYS_PSET_CREATE = 412 // { int|sys||pset_create(psetid_t *psid); } + SYS_PSET_DESTROY = 413 // { int|sys||pset_destroy(psetid_t psid); } + SYS_PSET_ASSIGN = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); } + SYS__PSET_BIND = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); } + SYS_POSIX_FADVISE = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); } + SYS_SELECT = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_GETTIMEOFDAY = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); } + SYS_SETTIMEOFDAY = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); } + SYS_UTIMES = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); } + SYS_ADJTIME = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_FUTIMES = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); } + SYS_LUTIMES = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); } + SYS_SETITIMER = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); } + SYS_CLOCK_GETTIME = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_NANOSLEEP = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS___SIGTIMEDWAIT = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); } + SYS__LWP_PARK = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); } + SYS_KEVENT = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); } + SYS_PSELECT = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_POLLTS = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_STAT = 439 // { int|sys|50|stat(const char *path, struct stat *ub); } + SYS_FSTAT = 440 // { int|sys|50|fstat(int fd, struct stat *sb); } + SYS_LSTAT = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); } + SYS___SEMCTL = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); } + SYS_SHMCTL = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_GETRUSAGE = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); } + SYS_TIMER_SETTIME = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_TIMER_GETTIME = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); } + SYS_NTP_GETTIME = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); } + SYS_WAIT4 = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_MKNOD = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); } + SYS_FHSTAT = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); } + SYS_PIPE2 = 453 // { int|sys||pipe2(int *fildes, int flags); } + SYS_DUP3 = 454 // { int|sys||dup3(int from, int to, int flags); } + SYS_KQUEUE1 = 455 // { int|sys||kqueue1(int flags); } + SYS_PACCEPT = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); } + SYS_LINKAT = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); } + SYS_RENAMEAT = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_MKFIFOAT = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); } + SYS_MKDIRAT = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); } + SYS_FACCESSAT = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); } + SYS_FEXECVE = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); } + SYS_FSTATAT = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_UTIMENSAT = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); } + SYS_OPENAT = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); } + SYS_READLINKAT = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); } + SYS_SYMLINKAT = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); } + SYS_UNLINKAT = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); } + SYS_FUTIMENS = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); } + SYS___QUOTACTL = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); } + SYS_POSIX_SPAWN = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); } + SYS_RECVMMSG = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); } + SYS_SENDMMSG = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); } +) diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go new file mode 100644 index 000000000..31e771d53 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go @@ -0,0 +1,274 @@ +// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; DO NOT EDIT. + +//go:build arm64 && netbsd + +package unix + +const ( + SYS_EXIT = 1 // { void|sys||exit(int rval); } + SYS_FORK = 2 // { int|sys||fork(void); } + SYS_READ = 3 // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int|sys||open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int|sys||close(int fd); } + SYS_LINK = 9 // { int|sys||link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int|sys||unlink(const char *path); } + SYS_CHDIR = 12 // { int|sys||chdir(const char *path); } + SYS_FCHDIR = 13 // { int|sys||fchdir(int fd); } + SYS_CHMOD = 15 // { int|sys||chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int|sys||chown(const char *path, uid_t uid, gid_t gid); } + SYS_BREAK = 17 // { int|sys||obreak(char *nsize); } + SYS_GETPID = 20 // { pid_t|sys||getpid_with_ppid(void); } + SYS_UNMOUNT = 22 // { int|sys||unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int|sys||setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t|sys||getuid_with_euid(void); } + SYS_GETEUID = 25 // { uid_t|sys||geteuid(void); } + SYS_PTRACE = 26 // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); } + SYS_RECVMSG = 27 // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int|sys||access(const char *path, int flags); } + SYS_CHFLAGS = 34 // { int|sys||chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int|sys||fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { void|sys||sync(void); } + SYS_KILL = 37 // { int|sys||kill(pid_t pid, int signum); } + SYS_GETPPID = 39 // { pid_t|sys||getppid(void); } + SYS_DUP = 41 // { int|sys||dup(int fd); } + SYS_PIPE = 42 // { int|sys||pipe(void); } + SYS_GETEGID = 43 // { gid_t|sys||getegid(void); } + SYS_PROFIL = 44 // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_GETGID = 47 // { gid_t|sys||getgid_with_egid(void); } + SYS___GETLOGIN = 49 // { int|sys||__getlogin(char *namebuf, size_t namelen); } + SYS___SETLOGIN = 50 // { int|sys||__setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int|sys||acct(const char *path); } + SYS_IOCTL = 54 // { int|sys||ioctl(int fd, u_long com, ... void *data); } + SYS_REVOKE = 56 // { int|sys||revoke(const char *path); } + SYS_SYMLINK = 57 // { int|sys||symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int|sys||execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t|sys||umask(mode_t newmask); } + SYS_CHROOT = 61 // { int|sys||chroot(const char *path); } + SYS_VFORK = 66 // { int|sys||vfork(void); } + SYS_SBRK = 69 // { int|sys||sbrk(intptr_t incr); } + SYS_SSTK = 70 // { int|sys||sstk(int incr); } + SYS_VADVISE = 72 // { int|sys||ovadvise(int anom); } + SYS_MUNMAP = 73 // { int|sys||munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int|sys||mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int|sys||madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int|sys||mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int|sys||getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int|sys||getpgrp(void); } + SYS_SETPGID = 82 // { int|sys||setpgid(pid_t pid, pid_t pgid); } + SYS_DUP2 = 90 // { int|sys||dup2(int from, int to); } + SYS_FCNTL = 92 // { int|sys||fcntl(int fd, int cmd, ... void *arg); } + SYS_FSYNC = 95 // { int|sys||fsync(int fd); } + SYS_SETPRIORITY = 96 // { int|sys||setpriority(int which, id_t who, int prio); } + SYS_CONNECT = 98 // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETPRIORITY = 100 // { int|sys||getpriority(int which, id_t who); } + SYS_BIND = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int|sys||listen(int s, int backlog); } + SYS_GETSOCKOPT = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_READV = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_FCHOWN = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int|sys||fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int|sys||rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int|sys||flock(int fd, int how); } + SYS_MKFIFO = 132 // { int|sys||mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int|sys||shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int|sys||mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int|sys||rmdir(const char *path); } + SYS_SETSID = 147 // { int|sys||setsid(void); } + SYS_SYSARCH = 165 // { int|sys||sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_PWRITE = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_NTP_ADJTIME = 176 // { int|sys||ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int|sys||setgid(gid_t gid); } + SYS_SETEGID = 182 // { int|sys||setegid(gid_t egid); } + SYS_SETEUID = 183 // { int|sys||seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long|sys||pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long|sys||fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); } + SYS_LSEEK = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); } + SYS_FTRUNCATE = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); } + SYS___SYSCTL = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); } + SYS_MLOCK = 203 // { int|sys||mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int|sys||munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int|sys||undelete(const char *path); } + SYS_GETPGID = 207 // { pid_t|sys||getpgid(pid_t pid); } + SYS_REBOOT = 208 // { int|sys||reboot(int opt, char *bootstr); } + SYS_POLL = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int|sys||semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_SEMCONFIG = 223 // { int|sys||semconfig(int flag); } + SYS_MSGGET = 225 // { int|sys||msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int|sys||shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); } + SYS_TIMER_CREATE = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); } + SYS_TIMER_DELETE = 236 // { int|sys||timer_delete(timer_t timerid); } + SYS_TIMER_GETOVERRUN = 239 // { int|sys||timer_getoverrun(timer_t timerid); } + SYS_FDATASYNC = 241 // { int|sys||fdatasync(int fd); } + SYS_MLOCKALL = 242 // { int|sys||mlockall(int flags); } + SYS_MUNLOCKALL = 243 // { int|sys||munlockall(void); } + SYS_SIGQUEUEINFO = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); } + SYS_MODCTL = 246 // { int|sys||modctl(int cmd, void *arg); } + SYS___POSIX_RENAME = 270 // { int|sys||__posix_rename(const char *from, const char *to); } + SYS_SWAPCTL = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); } + SYS_MINHERIT = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); } + SYS_LCHMOD = 274 // { int|sys||lchmod(const char *path, mode_t mode); } + SYS_LCHOWN = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); } + SYS_MSYNC = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); } + SYS___POSIX_CHOWN = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); } + SYS___POSIX_FCHOWN = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); } + SYS___POSIX_LCHOWN = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 286 // { pid_t|sys||getsid(pid_t pid); } + SYS___CLONE = 287 // { pid_t|sys||__clone(int flags, void *stack); } + SYS_FKTRACE = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); } + SYS_PREADV = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS___GETCWD = 296 // { int|sys||__getcwd(char *bufp, size_t length); } + SYS_FCHROOT = 297 // { int|sys||fchroot(int fd); } + SYS_LCHFLAGS = 304 // { int|sys||lchflags(const char *path, u_long flags); } + SYS_ISSETUGID = 305 // { int|sys||issetugid(void); } + SYS_UTRACE = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); } + SYS_GETCONTEXT = 307 // { int|sys||getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 308 // { int|sys||setcontext(const struct __ucontext *ucp); } + SYS__LWP_CREATE = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); } + SYS__LWP_EXIT = 310 // { int|sys||_lwp_exit(void); } + SYS__LWP_SELF = 311 // { lwpid_t|sys||_lwp_self(void); } + SYS__LWP_WAIT = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); } + SYS__LWP_SUSPEND = 313 // { int|sys||_lwp_suspend(lwpid_t target); } + SYS__LWP_CONTINUE = 314 // { int|sys||_lwp_continue(lwpid_t target); } + SYS__LWP_WAKEUP = 315 // { int|sys||_lwp_wakeup(lwpid_t target); } + SYS__LWP_GETPRIVATE = 316 // { void *|sys||_lwp_getprivate(void); } + SYS__LWP_SETPRIVATE = 317 // { void|sys||_lwp_setprivate(void *ptr); } + SYS__LWP_KILL = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); } + SYS__LWP_DETACH = 319 // { int|sys||_lwp_detach(lwpid_t target); } + SYS__LWP_UNPARK = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); } + SYS__LWP_UNPARK_ALL = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); } + SYS__LWP_SETNAME = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); } + SYS__LWP_GETNAME = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); } + SYS__LWP_CTL = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); } + SYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); } + SYS_PMC_GET_INFO = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); } + SYS_PMC_CONTROL = 342 // { int|sys||pmc_control(int ctr, int op, void *args); } + SYS_RASCTL = 343 // { int|sys||rasctl(void *addr, size_t len, int op); } + SYS_KQUEUE = 344 // { int|sys||kqueue(void); } + SYS__SCHED_SETPARAM = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); } + SYS__SCHED_GETPARAM = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); } + SYS__SCHED_SETAFFINITY = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); } + SYS__SCHED_GETAFFINITY = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); } + SYS_SCHED_YIELD = 350 // { int|sys||sched_yield(void); } + SYS_FSYNC_RANGE = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); } + SYS_UUIDGEN = 355 // { int|sys||uuidgen(struct uuid *store, int count); } + SYS_GETVFSSTAT = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); } + SYS_STATVFS1 = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); } + SYS_FSTATVFS1 = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); } + SYS_EXTATTRCTL = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FD = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_LINK = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_LIST_FD = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_SETXATTR = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_LSETXATTR = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_FSETXATTR = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); } + SYS_GETXATTR = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); } + SYS_LGETXATTR = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); } + SYS_FGETXATTR = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); } + SYS_LISTXATTR = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); } + SYS_LLISTXATTR = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); } + SYS_FLISTXATTR = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); } + SYS_REMOVEXATTR = 384 // { int|sys||removexattr(const char *path, const char *name); } + SYS_LREMOVEXATTR = 385 // { int|sys||lremovexattr(const char *path, const char *name); } + SYS_FREMOVEXATTR = 386 // { int|sys||fremovexattr(int fd, const char *name); } + SYS_GETDENTS = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); } + SYS_SOCKET = 394 // { int|sys|30|socket(int domain, int type, int protocol); } + SYS_GETFH = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); } + SYS_MOUNT = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); } + SYS_MREMAP = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); } + SYS_PSET_CREATE = 412 // { int|sys||pset_create(psetid_t *psid); } + SYS_PSET_DESTROY = 413 // { int|sys||pset_destroy(psetid_t psid); } + SYS_PSET_ASSIGN = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); } + SYS__PSET_BIND = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); } + SYS_POSIX_FADVISE = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); } + SYS_SELECT = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_GETTIMEOFDAY = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); } + SYS_SETTIMEOFDAY = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); } + SYS_UTIMES = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); } + SYS_ADJTIME = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_FUTIMES = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); } + SYS_LUTIMES = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); } + SYS_SETITIMER = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); } + SYS_CLOCK_GETTIME = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_NANOSLEEP = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS___SIGTIMEDWAIT = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); } + SYS__LWP_PARK = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); } + SYS_KEVENT = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); } + SYS_PSELECT = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_POLLTS = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_STAT = 439 // { int|sys|50|stat(const char *path, struct stat *ub); } + SYS_FSTAT = 440 // { int|sys|50|fstat(int fd, struct stat *sb); } + SYS_LSTAT = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); } + SYS___SEMCTL = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); } + SYS_SHMCTL = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_GETRUSAGE = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); } + SYS_TIMER_SETTIME = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_TIMER_GETTIME = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); } + SYS_NTP_GETTIME = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); } + SYS_WAIT4 = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_MKNOD = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); } + SYS_FHSTAT = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); } + SYS_PIPE2 = 453 // { int|sys||pipe2(int *fildes, int flags); } + SYS_DUP3 = 454 // { int|sys||dup3(int from, int to, int flags); } + SYS_KQUEUE1 = 455 // { int|sys||kqueue1(int flags); } + SYS_PACCEPT = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); } + SYS_LINKAT = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); } + SYS_RENAMEAT = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_MKFIFOAT = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); } + SYS_MKDIRAT = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); } + SYS_FACCESSAT = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); } + SYS_FEXECVE = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); } + SYS_FSTATAT = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_UTIMENSAT = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); } + SYS_OPENAT = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); } + SYS_READLINKAT = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); } + SYS_SYMLINKAT = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); } + SYS_UNLINKAT = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); } + SYS_FUTIMENS = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); } + SYS___QUOTACTL = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); } + SYS_POSIX_SPAWN = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); } + SYS_RECVMMSG = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); } + SYS_SENDMMSG = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); } +) diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go new file mode 100644 index 000000000..9fd77c6cb --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go @@ -0,0 +1,219 @@ +// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build 386 && openbsd + +package unix + +// Deprecated: Use libc wrappers instead of direct syscalls. +const ( + SYS_EXIT = 1 // { void sys_exit(int rval); } + SYS_FORK = 2 // { int sys_fork(void); } + SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int sys_open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int sys_close(int fd); } + SYS_GETENTROPY = 7 // { int sys_getentropy(void *buf, size_t nbyte); } + SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, size_t psize); } + SYS_LINK = 9 // { int sys_link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int sys_unlink(const char *path); } + SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_CHDIR = 12 // { int sys_chdir(const char *path); } + SYS_FCHDIR = 13 // { int sys_fchdir(int fd); } + SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, dev_t dev); } + SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, gid_t gid); } + SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break + SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); } + SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, struct rusage *rusage); } + SYS_GETPID = 20 // { pid_t sys_getpid(void); } + SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, int flags, void *data); } + SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int sys_setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t sys_getuid(void); } + SYS_GETEUID = 25 // { uid_t sys_geteuid(void); } + SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int sys_access(const char *path, int amode); } + SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); } + SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); } + SYS_SYNC = 36 // { void sys_sync(void); } + SYS_STAT = 38 // { int sys_stat(const char *path, struct stat *ub); } + SYS_GETPPID = 39 // { pid_t sys_getppid(void); } + SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); } + SYS_DUP = 41 // { int sys_dup(int fd); } + SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_GETEGID = 43 // { gid_t sys_getegid(void); } + SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_SIGACTION = 46 // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); } + SYS_GETGID = 47 // { gid_t sys_getgid(void); } + SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); } + SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int sys_acct(const char *path); } + SYS_SIGPENDING = 52 // { int sys_sigpending(void); } + SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); } + SYS_IOCTL = 54 // { int sys_ioctl(int fd, u_long com, ... void *data); } + SYS_REBOOT = 55 // { int sys_reboot(int opt); } + SYS_REVOKE = 56 // { int sys_revoke(const char *path); } + SYS_SYMLINK = 57 // { int sys_symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int sys_execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); } + SYS_CHROOT = 61 // { int sys_chroot(const char *path); } + SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); } + SYS_STATFS = 63 // { int sys_statfs(const char *path, struct statfs *buf); } + SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); } + SYS_VFORK = 66 // { int sys_vfork(void); } + SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); } + SYS_SETITIMER = 69 // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 70 // { int sys_getitimer(int which, struct itimerval *itv); } + SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_KEVENT = 72 // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, int behav); } + SYS_UTIMES = 76 // { int sys_utimes(const char *path, const struct timeval *tptr); } + SYS_FUTIMES = 77 // { int sys_futimes(int fd, const struct timeval *tptr); } + SYS_MINCORE = 78 // { int sys_mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int sys_getpgrp(void); } + SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, pid_t pgid); } + SYS_FUTEX = 83 // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); } + SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); } + SYS_FUTIMENS = 85 // { int sys_futimens(int fd, const struct timespec *times); } + SYS_KBIND = 86 // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); } + SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_DUP2 = 90 // { int sys_dup2(int from, int to); } + SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); } + SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); } + SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); } + SYS_FSYNC = 95 // { int sys_fsync(int fd); } + SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); } + SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); } + SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); } + SYS_PIPE2 = 101 // { int sys_pipe2(int *fdp, int flags); } + SYS_DUP3 = 102 // { int sys_dup3(int from, int to, int flags); } + SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); } + SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); } + SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); } + SYS_PLEDGE = 108 // { int sys_pledge(const char *promises, const char *execpromises); } + SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); } + SYS_SENDSYSLOG = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); } + SYS_UNVEIL = 114 // { int sys_unveil(const char *path, const char *permissions); } + SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_THRKILL = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); } + SYS_READV = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_KILL = 122 // { int sys_kill(int pid, int signum); } + SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int sys_setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int sys_flock(int fd, int how); } + SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int sys_rmdir(const char *path); } + SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_GETLOGIN_R = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); } + SYS_SETSID = 147 // { int sys_setsid(void); } + SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); } + SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); } + SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); } + SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETGID = 181 // { int sys_setgid(gid_t gid); } + SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); } + SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); } + SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); } + SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, off_t length); } + SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); } + SYS_SYSCTL = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); } + SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); } + SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); } + SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); } + SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); } + SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, int inherit); } + SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int sys_issetugid(void); } + SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); } + SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); } + SYS_PIPE = 263 // { int sys_pipe(int *fdp); } + SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); } + SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_KQUEUE = 269 // { int sys_kqueue(void); } + SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); } + SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); } + SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); } + SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); } + SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); } + SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); } + SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); } + SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); } + SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, int n); } + SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); } + SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); } + SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); } + SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); } + SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); } + SYS_GETRTABLE = 311 // { int sys_getrtable(void); } + SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); } + SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); } + SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); } + SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); } + SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); } + SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); } + SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, int flag); } + SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); } + SYS___GET_TCB = 330 // { void *sys___get_tcb(void); } +) diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go new file mode 100644 index 000000000..af10af28c --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go @@ -0,0 +1,219 @@ +// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && openbsd + +package unix + +// Deprecated: Use libc wrappers instead of direct syscalls. +const ( + SYS_EXIT = 1 // { void sys_exit(int rval); } + SYS_FORK = 2 // { int sys_fork(void); } + SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int sys_open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int sys_close(int fd); } + SYS_GETENTROPY = 7 // { int sys_getentropy(void *buf, size_t nbyte); } + SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, size_t psize); } + SYS_LINK = 9 // { int sys_link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int sys_unlink(const char *path); } + SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_CHDIR = 12 // { int sys_chdir(const char *path); } + SYS_FCHDIR = 13 // { int sys_fchdir(int fd); } + SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, dev_t dev); } + SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, gid_t gid); } + SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break + SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); } + SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, struct rusage *rusage); } + SYS_GETPID = 20 // { pid_t sys_getpid(void); } + SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, int flags, void *data); } + SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int sys_setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t sys_getuid(void); } + SYS_GETEUID = 25 // { uid_t sys_geteuid(void); } + SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int sys_access(const char *path, int amode); } + SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); } + SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); } + SYS_SYNC = 36 // { void sys_sync(void); } + SYS_STAT = 38 // { int sys_stat(const char *path, struct stat *ub); } + SYS_GETPPID = 39 // { pid_t sys_getppid(void); } + SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); } + SYS_DUP = 41 // { int sys_dup(int fd); } + SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_GETEGID = 43 // { gid_t sys_getegid(void); } + SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_SIGACTION = 46 // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); } + SYS_GETGID = 47 // { gid_t sys_getgid(void); } + SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); } + SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int sys_acct(const char *path); } + SYS_SIGPENDING = 52 // { int sys_sigpending(void); } + SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); } + SYS_IOCTL = 54 // { int sys_ioctl(int fd, u_long com, ... void *data); } + SYS_REBOOT = 55 // { int sys_reboot(int opt); } + SYS_REVOKE = 56 // { int sys_revoke(const char *path); } + SYS_SYMLINK = 57 // { int sys_symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int sys_execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); } + SYS_CHROOT = 61 // { int sys_chroot(const char *path); } + SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); } + SYS_STATFS = 63 // { int sys_statfs(const char *path, struct statfs *buf); } + SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); } + SYS_VFORK = 66 // { int sys_vfork(void); } + SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); } + SYS_SETITIMER = 69 // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 70 // { int sys_getitimer(int which, struct itimerval *itv); } + SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_KEVENT = 72 // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, int behav); } + SYS_UTIMES = 76 // { int sys_utimes(const char *path, const struct timeval *tptr); } + SYS_FUTIMES = 77 // { int sys_futimes(int fd, const struct timeval *tptr); } + SYS_MINCORE = 78 // { int sys_mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int sys_getpgrp(void); } + SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, pid_t pgid); } + SYS_FUTEX = 83 // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); } + SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); } + SYS_FUTIMENS = 85 // { int sys_futimens(int fd, const struct timespec *times); } + SYS_KBIND = 86 // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); } + SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_DUP2 = 90 // { int sys_dup2(int from, int to); } + SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); } + SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); } + SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); } + SYS_FSYNC = 95 // { int sys_fsync(int fd); } + SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); } + SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); } + SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); } + SYS_PIPE2 = 101 // { int sys_pipe2(int *fdp, int flags); } + SYS_DUP3 = 102 // { int sys_dup3(int from, int to, int flags); } + SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); } + SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); } + SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); } + SYS_PLEDGE = 108 // { int sys_pledge(const char *promises, const char *execpromises); } + SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); } + SYS_SENDSYSLOG = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); } + SYS_UNVEIL = 114 // { int sys_unveil(const char *path, const char *permissions); } + SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_THRKILL = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); } + SYS_READV = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_KILL = 122 // { int sys_kill(int pid, int signum); } + SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int sys_setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int sys_flock(int fd, int how); } + SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int sys_rmdir(const char *path); } + SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_GETLOGIN_R = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); } + SYS_SETSID = 147 // { int sys_setsid(void); } + SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); } + SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); } + SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); } + SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETGID = 181 // { int sys_setgid(gid_t gid); } + SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); } + SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); } + SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); } + SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, off_t length); } + SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); } + SYS_SYSCTL = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); } + SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); } + SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); } + SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); } + SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); } + SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, int inherit); } + SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int sys_issetugid(void); } + SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); } + SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); } + SYS_PIPE = 263 // { int sys_pipe(int *fdp); } + SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); } + SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_KQUEUE = 269 // { int sys_kqueue(void); } + SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); } + SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); } + SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); } + SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); } + SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); } + SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); } + SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); } + SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); } + SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, int n); } + SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); } + SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); } + SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); } + SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); } + SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); } + SYS_GETRTABLE = 311 // { int sys_getrtable(void); } + SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); } + SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); } + SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); } + SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); } + SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); } + SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); } + SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, int flag); } + SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); } + SYS___GET_TCB = 330 // { void *sys___get_tcb(void); } +) diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go new file mode 100644 index 000000000..cc2028af4 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go @@ -0,0 +1,219 @@ +// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm && openbsd + +package unix + +// Deprecated: Use libc wrappers instead of direct syscalls. +const ( + SYS_EXIT = 1 // { void sys_exit(int rval); } + SYS_FORK = 2 // { int sys_fork(void); } + SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int sys_open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int sys_close(int fd); } + SYS_GETENTROPY = 7 // { int sys_getentropy(void *buf, size_t nbyte); } + SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, size_t psize); } + SYS_LINK = 9 // { int sys_link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int sys_unlink(const char *path); } + SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_CHDIR = 12 // { int sys_chdir(const char *path); } + SYS_FCHDIR = 13 // { int sys_fchdir(int fd); } + SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, dev_t dev); } + SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, gid_t gid); } + SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break + SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); } + SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, struct rusage *rusage); } + SYS_GETPID = 20 // { pid_t sys_getpid(void); } + SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, int flags, void *data); } + SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int sys_setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t sys_getuid(void); } + SYS_GETEUID = 25 // { uid_t sys_geteuid(void); } + SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int sys_access(const char *path, int amode); } + SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); } + SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); } + SYS_SYNC = 36 // { void sys_sync(void); } + SYS_STAT = 38 // { int sys_stat(const char *path, struct stat *ub); } + SYS_GETPPID = 39 // { pid_t sys_getppid(void); } + SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); } + SYS_DUP = 41 // { int sys_dup(int fd); } + SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_GETEGID = 43 // { gid_t sys_getegid(void); } + SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_SIGACTION = 46 // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); } + SYS_GETGID = 47 // { gid_t sys_getgid(void); } + SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); } + SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int sys_acct(const char *path); } + SYS_SIGPENDING = 52 // { int sys_sigpending(void); } + SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); } + SYS_IOCTL = 54 // { int sys_ioctl(int fd, u_long com, ... void *data); } + SYS_REBOOT = 55 // { int sys_reboot(int opt); } + SYS_REVOKE = 56 // { int sys_revoke(const char *path); } + SYS_SYMLINK = 57 // { int sys_symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int sys_execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); } + SYS_CHROOT = 61 // { int sys_chroot(const char *path); } + SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); } + SYS_STATFS = 63 // { int sys_statfs(const char *path, struct statfs *buf); } + SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); } + SYS_VFORK = 66 // { int sys_vfork(void); } + SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); } + SYS_SETITIMER = 69 // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 70 // { int sys_getitimer(int which, struct itimerval *itv); } + SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_KEVENT = 72 // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, int behav); } + SYS_UTIMES = 76 // { int sys_utimes(const char *path, const struct timeval *tptr); } + SYS_FUTIMES = 77 // { int sys_futimes(int fd, const struct timeval *tptr); } + SYS_MINCORE = 78 // { int sys_mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int sys_getpgrp(void); } + SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, pid_t pgid); } + SYS_FUTEX = 83 // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); } + SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); } + SYS_FUTIMENS = 85 // { int sys_futimens(int fd, const struct timespec *times); } + SYS_KBIND = 86 // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); } + SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_DUP2 = 90 // { int sys_dup2(int from, int to); } + SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); } + SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); } + SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); } + SYS_FSYNC = 95 // { int sys_fsync(int fd); } + SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); } + SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); } + SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); } + SYS_PIPE2 = 101 // { int sys_pipe2(int *fdp, int flags); } + SYS_DUP3 = 102 // { int sys_dup3(int from, int to, int flags); } + SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); } + SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); } + SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); } + SYS_PLEDGE = 108 // { int sys_pledge(const char *promises, const char *execpromises); } + SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); } + SYS_SENDSYSLOG = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); } + SYS_UNVEIL = 114 // { int sys_unveil(const char *path, const char *permissions); } + SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_THRKILL = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); } + SYS_READV = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_KILL = 122 // { int sys_kill(int pid, int signum); } + SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int sys_setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int sys_flock(int fd, int how); } + SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int sys_rmdir(const char *path); } + SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_GETLOGIN_R = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); } + SYS_SETSID = 147 // { int sys_setsid(void); } + SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); } + SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); } + SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); } + SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETGID = 181 // { int sys_setgid(gid_t gid); } + SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); } + SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); } + SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); } + SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, off_t length); } + SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); } + SYS_SYSCTL = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); } + SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); } + SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); } + SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); } + SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); } + SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, int inherit); } + SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int sys_issetugid(void); } + SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); } + SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); } + SYS_PIPE = 263 // { int sys_pipe(int *fdp); } + SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); } + SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_KQUEUE = 269 // { int sys_kqueue(void); } + SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); } + SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); } + SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); } + SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); } + SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); } + SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); } + SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); } + SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); } + SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, int n); } + SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); } + SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); } + SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); } + SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); } + SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); } + SYS_GETRTABLE = 311 // { int sys_getrtable(void); } + SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); } + SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); } + SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); } + SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); } + SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); } + SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); } + SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, int flag); } + SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); } + SYS___GET_TCB = 330 // { void *sys___get_tcb(void); } +) diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go new file mode 100644 index 000000000..c06dd4415 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go @@ -0,0 +1,218 @@ +// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm64 && openbsd + +package unix + +// Deprecated: Use libc wrappers instead of direct syscalls. +const ( + SYS_EXIT = 1 // { void sys_exit(int rval); } + SYS_FORK = 2 // { int sys_fork(void); } + SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int sys_open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int sys_close(int fd); } + SYS_GETENTROPY = 7 // { int sys_getentropy(void *buf, size_t nbyte); } + SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, size_t psize); } + SYS_LINK = 9 // { int sys_link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int sys_unlink(const char *path); } + SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_CHDIR = 12 // { int sys_chdir(const char *path); } + SYS_FCHDIR = 13 // { int sys_fchdir(int fd); } + SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, dev_t dev); } + SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, gid_t gid); } + SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break + SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); } + SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, struct rusage *rusage); } + SYS_GETPID = 20 // { pid_t sys_getpid(void); } + SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, int flags, void *data); } + SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int sys_setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t sys_getuid(void); } + SYS_GETEUID = 25 // { uid_t sys_geteuid(void); } + SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int sys_access(const char *path, int amode); } + SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); } + SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); } + SYS_SYNC = 36 // { void sys_sync(void); } + SYS_STAT = 38 // { int sys_stat(const char *path, struct stat *ub); } + SYS_GETPPID = 39 // { pid_t sys_getppid(void); } + SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); } + SYS_DUP = 41 // { int sys_dup(int fd); } + SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_GETEGID = 43 // { gid_t sys_getegid(void); } + SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_SIGACTION = 46 // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); } + SYS_GETGID = 47 // { gid_t sys_getgid(void); } + SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); } + SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int sys_acct(const char *path); } + SYS_SIGPENDING = 52 // { int sys_sigpending(void); } + SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); } + SYS_IOCTL = 54 // { int sys_ioctl(int fd, u_long com, ... void *data); } + SYS_REBOOT = 55 // { int sys_reboot(int opt); } + SYS_REVOKE = 56 // { int sys_revoke(const char *path); } + SYS_SYMLINK = 57 // { int sys_symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int sys_execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); } + SYS_CHROOT = 61 // { int sys_chroot(const char *path); } + SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); } + SYS_STATFS = 63 // { int sys_statfs(const char *path, struct statfs *buf); } + SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); } + SYS_VFORK = 66 // { int sys_vfork(void); } + SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); } + SYS_SETITIMER = 69 // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 70 // { int sys_getitimer(int which, struct itimerval *itv); } + SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_KEVENT = 72 // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, int behav); } + SYS_UTIMES = 76 // { int sys_utimes(const char *path, const struct timeval *tptr); } + SYS_FUTIMES = 77 // { int sys_futimes(int fd, const struct timeval *tptr); } + SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int sys_getpgrp(void); } + SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, pid_t pgid); } + SYS_FUTEX = 83 // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); } + SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); } + SYS_FUTIMENS = 85 // { int sys_futimens(int fd, const struct timespec *times); } + SYS_KBIND = 86 // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); } + SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_DUP2 = 90 // { int sys_dup2(int from, int to); } + SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); } + SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); } + SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); } + SYS_FSYNC = 95 // { int sys_fsync(int fd); } + SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); } + SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); } + SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); } + SYS_PIPE2 = 101 // { int sys_pipe2(int *fdp, int flags); } + SYS_DUP3 = 102 // { int sys_dup3(int from, int to, int flags); } + SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); } + SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); } + SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); } + SYS_PLEDGE = 108 // { int sys_pledge(const char *promises, const char *execpromises); } + SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); } + SYS_SENDSYSLOG = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); } + SYS_UNVEIL = 114 // { int sys_unveil(const char *path, const char *permissions); } + SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_THRKILL = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); } + SYS_READV = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_KILL = 122 // { int sys_kill(int pid, int signum); } + SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int sys_setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int sys_flock(int fd, int how); } + SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int sys_rmdir(const char *path); } + SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_GETLOGIN_R = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); } + SYS_SETSID = 147 // { int sys_setsid(void); } + SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); } + SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); } + SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); } + SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETGID = 181 // { int sys_setgid(gid_t gid); } + SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); } + SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); } + SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); } + SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, off_t length); } + SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); } + SYS_SYSCTL = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); } + SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); } + SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); } + SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); } + SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); } + SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, int inherit); } + SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int sys_issetugid(void); } + SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); } + SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); } + SYS_PIPE = 263 // { int sys_pipe(int *fdp); } + SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); } + SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_KQUEUE = 269 // { int sys_kqueue(void); } + SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); } + SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); } + SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); } + SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); } + SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); } + SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); } + SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); } + SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); } + SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, int n); } + SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); } + SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); } + SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); } + SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); } + SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); } + SYS_GETRTABLE = 311 // { int sys_getrtable(void); } + SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); } + SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); } + SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); } + SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); } + SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); } + SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); } + SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, int flag); } + SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); } + SYS___GET_TCB = 330 // { void *sys___get_tcb(void); } +) diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go new file mode 100644 index 000000000..9ddbf3e08 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go @@ -0,0 +1,221 @@ +// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build mips64 && openbsd + +package unix + +// Deprecated: Use libc wrappers instead of direct syscalls. +const ( + SYS_EXIT = 1 // { void sys_exit(int rval); } + SYS_FORK = 2 // { int sys_fork(void); } + SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int sys_open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int sys_close(int fd); } + SYS_GETENTROPY = 7 // { int sys_getentropy(void *buf, size_t nbyte); } + SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, size_t psize); } + SYS_LINK = 9 // { int sys_link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int sys_unlink(const char *path); } + SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_CHDIR = 12 // { int sys_chdir(const char *path); } + SYS_FCHDIR = 13 // { int sys_fchdir(int fd); } + SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, dev_t dev); } + SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, gid_t gid); } + SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break + SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); } + SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, struct rusage *rusage); } + SYS_GETPID = 20 // { pid_t sys_getpid(void); } + SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, int flags, void *data); } + SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int sys_setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t sys_getuid(void); } + SYS_GETEUID = 25 // { uid_t sys_geteuid(void); } + SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int sys_access(const char *path, int amode); } + SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); } + SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); } + SYS_SYNC = 36 // { void sys_sync(void); } + SYS_MSYSCALL = 37 // { int sys_msyscall(void *addr, size_t len); } + SYS_STAT = 38 // { int sys_stat(const char *path, struct stat *ub); } + SYS_GETPPID = 39 // { pid_t sys_getppid(void); } + SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); } + SYS_DUP = 41 // { int sys_dup(int fd); } + SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_GETEGID = 43 // { gid_t sys_getegid(void); } + SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_SIGACTION = 46 // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); } + SYS_GETGID = 47 // { gid_t sys_getgid(void); } + SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); } + SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int sys_acct(const char *path); } + SYS_SIGPENDING = 52 // { int sys_sigpending(void); } + SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); } + SYS_IOCTL = 54 // { int sys_ioctl(int fd, u_long com, ... void *data); } + SYS_REBOOT = 55 // { int sys_reboot(int opt); } + SYS_REVOKE = 56 // { int sys_revoke(const char *path); } + SYS_SYMLINK = 57 // { int sys_symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int sys_execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); } + SYS_CHROOT = 61 // { int sys_chroot(const char *path); } + SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); } + SYS_STATFS = 63 // { int sys_statfs(const char *path, struct statfs *buf); } + SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); } + SYS_VFORK = 66 // { int sys_vfork(void); } + SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); } + SYS_SETITIMER = 69 // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 70 // { int sys_getitimer(int which, struct itimerval *itv); } + SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_KEVENT = 72 // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, int behav); } + SYS_UTIMES = 76 // { int sys_utimes(const char *path, const struct timeval *tptr); } + SYS_FUTIMES = 77 // { int sys_futimes(int fd, const struct timeval *tptr); } + SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int sys_getpgrp(void); } + SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, pid_t pgid); } + SYS_FUTEX = 83 // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); } + SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); } + SYS_FUTIMENS = 85 // { int sys_futimens(int fd, const struct timespec *times); } + SYS_KBIND = 86 // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); } + SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_DUP2 = 90 // { int sys_dup2(int from, int to); } + SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); } + SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); } + SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); } + SYS_FSYNC = 95 // { int sys_fsync(int fd); } + SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); } + SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); } + SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); } + SYS_PIPE2 = 101 // { int sys_pipe2(int *fdp, int flags); } + SYS_DUP3 = 102 // { int sys_dup3(int from, int to, int flags); } + SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); } + SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); } + SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); } + SYS_PLEDGE = 108 // { int sys_pledge(const char *promises, const char *execpromises); } + SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); } + SYS_SENDSYSLOG = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); } + SYS_UNVEIL = 114 // { int sys_unveil(const char *path, const char *permissions); } + SYS___REALPATH = 115 // { int sys___realpath(const char *pathname, char *resolved); } + SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_THRKILL = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); } + SYS_READV = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_KILL = 122 // { int sys_kill(int pid, int signum); } + SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int sys_setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int sys_flock(int fd, int how); } + SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int sys_rmdir(const char *path); } + SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_GETLOGIN_R = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); } + SYS_SETSID = 147 // { int sys_setsid(void); } + SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); } + SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); } + SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); } + SYS___TMPFD = 164 // { int sys___tmpfd(int flags); } + SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETGID = 181 // { int sys_setgid(gid_t gid); } + SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); } + SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); } + SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); } + SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, off_t length); } + SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); } + SYS_SYSCTL = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); } + SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); } + SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); } + SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); } + SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); } + SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, int inherit); } + SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int sys_issetugid(void); } + SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); } + SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); } + SYS_PIPE = 263 // { int sys_pipe(int *fdp); } + SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); } + SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_KQUEUE = 269 // { int sys_kqueue(void); } + SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); } + SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); } + SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); } + SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); } + SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); } + SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); } + SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); } + SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); } + SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, int n); } + SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); } + SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); } + SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); } + SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); } + SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); } + SYS_GETRTABLE = 311 // { int sys_getrtable(void); } + SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); } + SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); } + SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); } + SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); } + SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); } + SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); } + SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, int flag); } + SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); } + SYS___GET_TCB = 330 // { void *sys___get_tcb(void); } +) diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_openbsd_ppc64.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_openbsd_ppc64.go new file mode 100644 index 000000000..19a6ee413 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_openbsd_ppc64.go @@ -0,0 +1,217 @@ +// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc64 && openbsd + +package unix + +const ( + SYS_EXIT = 1 // { void sys_exit(int rval); } + SYS_FORK = 2 // { int sys_fork(void); } + SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int sys_open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int sys_close(int fd); } + SYS_GETENTROPY = 7 // { int sys_getentropy(void *buf, size_t nbyte); } + SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, size_t psize); } + SYS_LINK = 9 // { int sys_link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int sys_unlink(const char *path); } + SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_CHDIR = 12 // { int sys_chdir(const char *path); } + SYS_FCHDIR = 13 // { int sys_fchdir(int fd); } + SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, dev_t dev); } + SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, gid_t gid); } + SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break + SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); } + SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, struct rusage *rusage); } + SYS_GETPID = 20 // { pid_t sys_getpid(void); } + SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, int flags, void *data); } + SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int sys_setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t sys_getuid(void); } + SYS_GETEUID = 25 // { uid_t sys_geteuid(void); } + SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int sys_access(const char *path, int amode); } + SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); } + SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); } + SYS_SYNC = 36 // { void sys_sync(void); } + SYS_STAT = 38 // { int sys_stat(const char *path, struct stat *ub); } + SYS_GETPPID = 39 // { pid_t sys_getppid(void); } + SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); } + SYS_DUP = 41 // { int sys_dup(int fd); } + SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_GETEGID = 43 // { gid_t sys_getegid(void); } + SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_SIGACTION = 46 // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); } + SYS_GETGID = 47 // { gid_t sys_getgid(void); } + SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); } + SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int sys_acct(const char *path); } + SYS_SIGPENDING = 52 // { int sys_sigpending(void); } + SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); } + SYS_IOCTL = 54 // { int sys_ioctl(int fd, u_long com, ... void *data); } + SYS_REBOOT = 55 // { int sys_reboot(int opt); } + SYS_REVOKE = 56 // { int sys_revoke(const char *path); } + SYS_SYMLINK = 57 // { int sys_symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int sys_execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); } + SYS_CHROOT = 61 // { int sys_chroot(const char *path); } + SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); } + SYS_STATFS = 63 // { int sys_statfs(const char *path, struct statfs *buf); } + SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); } + SYS_VFORK = 66 // { int sys_vfork(void); } + SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); } + SYS_SETITIMER = 69 // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 70 // { int sys_getitimer(int which, struct itimerval *itv); } + SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_KEVENT = 72 // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, int behav); } + SYS_UTIMES = 76 // { int sys_utimes(const char *path, const struct timeval *tptr); } + SYS_FUTIMES = 77 // { int sys_futimes(int fd, const struct timeval *tptr); } + SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int sys_getpgrp(void); } + SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, pid_t pgid); } + SYS_FUTEX = 83 // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); } + SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); } + SYS_FUTIMENS = 85 // { int sys_futimens(int fd, const struct timespec *times); } + SYS_KBIND = 86 // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); } + SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_DUP2 = 90 // { int sys_dup2(int from, int to); } + SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); } + SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); } + SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); } + SYS_FSYNC = 95 // { int sys_fsync(int fd); } + SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); } + SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); } + SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); } + SYS_PIPE2 = 101 // { int sys_pipe2(int *fdp, int flags); } + SYS_DUP3 = 102 // { int sys_dup3(int from, int to, int flags); } + SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); } + SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); } + SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); } + SYS_PLEDGE = 108 // { int sys_pledge(const char *promises, const char *execpromises); } + SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); } + SYS_SENDSYSLOG = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); } + SYS_UNVEIL = 114 // { int sys_unveil(const char *path, const char *permissions); } + SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_THRKILL = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); } + SYS_READV = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_KILL = 122 // { int sys_kill(int pid, int signum); } + SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int sys_setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int sys_flock(int fd, int how); } + SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int sys_rmdir(const char *path); } + SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_GETLOGIN_R = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); } + SYS_SETSID = 147 // { int sys_setsid(void); } + SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); } + SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); } + SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); } + SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETGID = 181 // { int sys_setgid(gid_t gid); } + SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); } + SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); } + SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); } + SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, off_t length); } + SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); } + SYS_SYSCTL = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); } + SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); } + SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); } + SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); } + SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); } + SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, int inherit); } + SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int sys_issetugid(void); } + SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); } + SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); } + SYS_PIPE = 263 // { int sys_pipe(int *fdp); } + SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); } + SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_KQUEUE = 269 // { int sys_kqueue(void); } + SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); } + SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); } + SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); } + SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); } + SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); } + SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); } + SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); } + SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); } + SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, int n); } + SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); } + SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); } + SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); } + SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); } + SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); } + SYS_GETRTABLE = 311 // { int sys_getrtable(void); } + SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); } + SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); } + SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); } + SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); } + SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); } + SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); } + SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, int flag); } + SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); } + SYS___GET_TCB = 330 // { void *sys___get_tcb(void); } +) diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_openbsd_riscv64.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_openbsd_riscv64.go new file mode 100644 index 000000000..05192a782 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_openbsd_riscv64.go @@ -0,0 +1,218 @@ +// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build riscv64 && openbsd + +package unix + +// Deprecated: Use libc wrappers instead of direct syscalls. +const ( + SYS_EXIT = 1 // { void sys_exit(int rval); } + SYS_FORK = 2 // { int sys_fork(void); } + SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int sys_open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int sys_close(int fd); } + SYS_GETENTROPY = 7 // { int sys_getentropy(void *buf, size_t nbyte); } + SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, size_t psize); } + SYS_LINK = 9 // { int sys_link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int sys_unlink(const char *path); } + SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_CHDIR = 12 // { int sys_chdir(const char *path); } + SYS_FCHDIR = 13 // { int sys_fchdir(int fd); } + SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, dev_t dev); } + SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, gid_t gid); } + SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break + SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); } + SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, struct rusage *rusage); } + SYS_GETPID = 20 // { pid_t sys_getpid(void); } + SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, int flags, void *data); } + SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int sys_setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t sys_getuid(void); } + SYS_GETEUID = 25 // { uid_t sys_geteuid(void); } + SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int sys_access(const char *path, int amode); } + SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); } + SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); } + SYS_SYNC = 36 // { void sys_sync(void); } + SYS_STAT = 38 // { int sys_stat(const char *path, struct stat *ub); } + SYS_GETPPID = 39 // { pid_t sys_getppid(void); } + SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); } + SYS_DUP = 41 // { int sys_dup(int fd); } + SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_GETEGID = 43 // { gid_t sys_getegid(void); } + SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_SIGACTION = 46 // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); } + SYS_GETGID = 47 // { gid_t sys_getgid(void); } + SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); } + SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int sys_acct(const char *path); } + SYS_SIGPENDING = 52 // { int sys_sigpending(void); } + SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); } + SYS_IOCTL = 54 // { int sys_ioctl(int fd, u_long com, ... void *data); } + SYS_REBOOT = 55 // { int sys_reboot(int opt); } + SYS_REVOKE = 56 // { int sys_revoke(const char *path); } + SYS_SYMLINK = 57 // { int sys_symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int sys_execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); } + SYS_CHROOT = 61 // { int sys_chroot(const char *path); } + SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); } + SYS_STATFS = 63 // { int sys_statfs(const char *path, struct statfs *buf); } + SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); } + SYS_VFORK = 66 // { int sys_vfork(void); } + SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); } + SYS_SETITIMER = 69 // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 70 // { int sys_getitimer(int which, struct itimerval *itv); } + SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_KEVENT = 72 // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, int behav); } + SYS_UTIMES = 76 // { int sys_utimes(const char *path, const struct timeval *tptr); } + SYS_FUTIMES = 77 // { int sys_futimes(int fd, const struct timeval *tptr); } + SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int sys_getpgrp(void); } + SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, pid_t pgid); } + SYS_FUTEX = 83 // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); } + SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); } + SYS_FUTIMENS = 85 // { int sys_futimens(int fd, const struct timespec *times); } + SYS_KBIND = 86 // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); } + SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_DUP2 = 90 // { int sys_dup2(int from, int to); } + SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); } + SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); } + SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); } + SYS_FSYNC = 95 // { int sys_fsync(int fd); } + SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); } + SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); } + SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); } + SYS_PIPE2 = 101 // { int sys_pipe2(int *fdp, int flags); } + SYS_DUP3 = 102 // { int sys_dup3(int from, int to, int flags); } + SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); } + SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); } + SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); } + SYS_PLEDGE = 108 // { int sys_pledge(const char *promises, const char *execpromises); } + SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); } + SYS_SENDSYSLOG = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); } + SYS_UNVEIL = 114 // { int sys_unveil(const char *path, const char *permissions); } + SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_THRKILL = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); } + SYS_READV = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_KILL = 122 // { int sys_kill(int pid, int signum); } + SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int sys_setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int sys_flock(int fd, int how); } + SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int sys_rmdir(const char *path); } + SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_GETLOGIN_R = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); } + SYS_SETSID = 147 // { int sys_setsid(void); } + SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); } + SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); } + SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); } + SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETGID = 181 // { int sys_setgid(gid_t gid); } + SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); } + SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); } + SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); } + SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, off_t length); } + SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); } + SYS_SYSCTL = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); } + SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); } + SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); } + SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); } + SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); } + SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, int inherit); } + SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int sys_issetugid(void); } + SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); } + SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); } + SYS_PIPE = 263 // { int sys_pipe(int *fdp); } + SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); } + SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_KQUEUE = 269 // { int sys_kqueue(void); } + SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); } + SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); } + SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); } + SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); } + SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); } + SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); } + SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); } + SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); } + SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, int n); } + SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); } + SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); } + SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); } + SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); } + SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); } + SYS_GETRTABLE = 311 // { int sys_getrtable(void); } + SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); } + SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); } + SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); } + SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); } + SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); } + SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); } + SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, int flag); } + SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); } + SYS___GET_TCB = 330 // { void *sys___get_tcb(void); } +) diff --git a/tests/vendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go b/tests/vendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go new file mode 100644 index 000000000..5e8c263ca --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go @@ -0,0 +1,2852 @@ +// go run mksyscall_zos_s390x.go -o_sysnum zsysnum_zos_s390x.go -o_syscall zsyscall_zos_s390x.go -i_syscall syscall_zos_s390x.go -o_asm zsymaddr_zos_s390x.s +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build zos && s390x + +package unix + +const ( + SYS_LOG = 0x17 // 23 + SYS_COSH = 0x18 // 24 + SYS_TANH = 0x19 // 25 + SYS_EXP = 0x1A // 26 + SYS_MODF = 0x1B // 27 + SYS_LOG10 = 0x1C // 28 + SYS_FREXP = 0x1D // 29 + SYS_LDEXP = 0x1E // 30 + SYS_CEIL = 0x1F // 31 + SYS_POW = 0x20 // 32 + SYS_SQRT = 0x21 // 33 + SYS_FLOOR = 0x22 // 34 + SYS_J1 = 0x23 // 35 + SYS_FABS = 0x24 // 36 + SYS_FMOD = 0x25 // 37 + SYS_J0 = 0x26 // 38 + SYS_YN = 0x27 // 39 + SYS_JN = 0x28 // 40 + SYS_Y0 = 0x29 // 41 + SYS_Y1 = 0x2A // 42 + SYS_HYPOT = 0x2B // 43 + SYS_ERF = 0x2C // 44 + SYS_ERFC = 0x2D // 45 + SYS_GAMMA = 0x2E // 46 + SYS_ISALPHA = 0x30 // 48 + SYS_ISALNUM = 0x31 // 49 + SYS_ISLOWER = 0x32 // 50 + SYS_ISCNTRL = 0x33 // 51 + SYS_ISDIGIT = 0x34 // 52 + SYS_ISGRAPH = 0x35 // 53 + SYS_ISUPPER = 0x36 // 54 + SYS_ISPRINT = 0x37 // 55 + SYS_ISPUNCT = 0x38 // 56 + SYS_ISSPACE = 0x39 // 57 + SYS_SETLOCAL = 0x3A // 58 + SYS_SETLOCALE = 0x3A // 58 + SYS_ISXDIGIT = 0x3B // 59 + SYS_TOLOWER = 0x3C // 60 + SYS_TOUPPER = 0x3D // 61 + SYS_ASIN = 0x3E // 62 + SYS_SIN = 0x3F // 63 + SYS_COS = 0x40 // 64 + SYS_TAN = 0x41 // 65 + SYS_SINH = 0x42 // 66 + SYS_ACOS = 0x43 // 67 + SYS_ATAN = 0x44 // 68 + SYS_ATAN2 = 0x45 // 69 + SYS_FTELL = 0x46 // 70 + SYS_FGETPOS = 0x47 // 71 + SYS_FSEEK = 0x48 // 72 + SYS_FSETPOS = 0x49 // 73 + SYS_FERROR = 0x4A // 74 + SYS_REWIND = 0x4B // 75 + SYS_CLEARERR = 0x4C // 76 + SYS_FEOF = 0x4D // 77 + SYS_ATOL = 0x4E // 78 + SYS_PERROR = 0x4F // 79 + SYS_ATOF = 0x50 // 80 + SYS_ATOI = 0x51 // 81 + SYS_RAND = 0x52 // 82 + SYS_STRTOD = 0x53 // 83 + SYS_STRTOL = 0x54 // 84 + SYS_STRTOUL = 0x55 // 85 + SYS_MALLOC = 0x56 // 86 + SYS_SRAND = 0x57 // 87 + SYS_CALLOC = 0x58 // 88 + SYS_FREE = 0x59 // 89 + SYS_EXIT = 0x5A // 90 + SYS_REALLOC = 0x5B // 91 + SYS_ABORT = 0x5C // 92 + SYS___ABORT = 0x5C // 92 + SYS_ATEXIT = 0x5D // 93 + SYS_RAISE = 0x5E // 94 + SYS_SETJMP = 0x5F // 95 + SYS_LONGJMP = 0x60 // 96 + SYS_SIGNAL = 0x61 // 97 + SYS_TMPNAM = 0x62 // 98 + SYS_REMOVE = 0x63 // 99 + SYS_RENAME = 0x64 // 100 + SYS_TMPFILE = 0x65 // 101 + SYS_FREOPEN = 0x66 // 102 + SYS_FCLOSE = 0x67 // 103 + SYS_FFLUSH = 0x68 // 104 + SYS_FOPEN = 0x69 // 105 + SYS_FSCANF = 0x6A // 106 + SYS_SETBUF = 0x6B // 107 + SYS_SETVBUF = 0x6C // 108 + SYS_FPRINTF = 0x6D // 109 + SYS_SSCANF = 0x6E // 110 + SYS_PRINTF = 0x6F // 111 + SYS_SCANF = 0x70 // 112 + SYS_SPRINTF = 0x71 // 113 + SYS_FGETC = 0x72 // 114 + SYS_VFPRINTF = 0x73 // 115 + SYS_VPRINTF = 0x74 // 116 + SYS_VSPRINTF = 0x75 // 117 + SYS_GETC = 0x76 // 118 + SYS_FGETS = 0x77 // 119 + SYS_FPUTC = 0x78 // 120 + SYS_FPUTS = 0x79 // 121 + SYS_PUTCHAR = 0x7A // 122 + SYS_GETCHAR = 0x7B // 123 + SYS_GETS = 0x7C // 124 + SYS_PUTC = 0x7D // 125 + SYS_FWRITE = 0x7E // 126 + SYS_PUTS = 0x7F // 127 + SYS_UNGETC = 0x80 // 128 + SYS_FREAD = 0x81 // 129 + SYS_WCSTOMBS = 0x82 // 130 + SYS_MBTOWC = 0x83 // 131 + SYS_WCTOMB = 0x84 // 132 + SYS_MBSTOWCS = 0x85 // 133 + SYS_WCSCPY = 0x86 // 134 + SYS_WCSCAT = 0x87 // 135 + SYS_WCSCHR = 0x88 // 136 + SYS_WCSCMP = 0x89 // 137 + SYS_WCSNCMP = 0x8A // 138 + SYS_WCSCSPN = 0x8B // 139 + SYS_WCSLEN = 0x8C // 140 + SYS_WCSNCAT = 0x8D // 141 + SYS_WCSSPN = 0x8E // 142 + SYS_WCSNCPY = 0x8F // 143 + SYS_ABS = 0x90 // 144 + SYS_DIV = 0x91 // 145 + SYS_LABS = 0x92 // 146 + SYS_STRNCPY = 0x93 // 147 + SYS_MEMCPY = 0x94 // 148 + SYS_MEMMOVE = 0x95 // 149 + SYS_STRCPY = 0x96 // 150 + SYS_STRCMP = 0x97 // 151 + SYS_STRCAT = 0x98 // 152 + SYS_STRNCAT = 0x99 // 153 + SYS_MEMCMP = 0x9A // 154 + SYS_MEMCHR = 0x9B // 155 + SYS_STRCOLL = 0x9C // 156 + SYS_STRNCMP = 0x9D // 157 + SYS_STRXFRM = 0x9E // 158 + SYS_STRRCHR = 0x9F // 159 + SYS_STRCHR = 0xA0 // 160 + SYS_STRCSPN = 0xA1 // 161 + SYS_STRPBRK = 0xA2 // 162 + SYS_MEMSET = 0xA3 // 163 + SYS_STRSPN = 0xA4 // 164 + SYS_STRSTR = 0xA5 // 165 + SYS_STRTOK = 0xA6 // 166 + SYS_DIFFTIME = 0xA7 // 167 + SYS_STRERROR = 0xA8 // 168 + SYS_STRLEN = 0xA9 // 169 + SYS_CLOCK = 0xAA // 170 + SYS_CTIME = 0xAB // 171 + SYS_MKTIME = 0xAC // 172 + SYS_TIME = 0xAD // 173 + SYS_ASCTIME = 0xAE // 174 + SYS_MBLEN = 0xAF // 175 + SYS_GMTIME = 0xB0 // 176 + SYS_LOCALTIM = 0xB1 // 177 + SYS_LOCALTIME = 0xB1 // 177 + SYS_STRFTIME = 0xB2 // 178 + SYS___GETCB = 0xB4 // 180 + SYS_FUPDATE = 0xB5 // 181 + SYS___FUPDT = 0xB5 // 181 + SYS_CLRMEMF = 0xBD // 189 + SYS___CLRMF = 0xBD // 189 + SYS_FETCHEP = 0xBF // 191 + SYS___FTCHEP = 0xBF // 191 + SYS_FLDATA = 0xC1 // 193 + SYS___FLDATA = 0xC1 // 193 + SYS_DYNFREE = 0xC2 // 194 + SYS___DYNFRE = 0xC2 // 194 + SYS_DYNALLOC = 0xC3 // 195 + SYS___DYNALL = 0xC3 // 195 + SYS___CDUMP = 0xC4 // 196 + SYS_CSNAP = 0xC5 // 197 + SYS___CSNAP = 0xC5 // 197 + SYS_CTRACE = 0xC6 // 198 + SYS___CTRACE = 0xC6 // 198 + SYS___CTEST = 0xC7 // 199 + SYS_SETENV = 0xC8 // 200 + SYS___SETENV = 0xC8 // 200 + SYS_CLEARENV = 0xC9 // 201 + SYS___CLRENV = 0xC9 // 201 + SYS___REGCOMP_STD = 0xEA // 234 + SYS_NL_LANGINFO = 0xFC // 252 + SYS_GETSYNTX = 0xFD // 253 + SYS_ISBLANK = 0xFE // 254 + SYS___ISBLNK = 0xFE // 254 + SYS_ISWALNUM = 0xFF // 255 + SYS_ISWALPHA = 0x100 // 256 + SYS_ISWBLANK = 0x101 // 257 + SYS___ISWBLK = 0x101 // 257 + SYS_ISWCNTRL = 0x102 // 258 + SYS_ISWDIGIT = 0x103 // 259 + SYS_ISWGRAPH = 0x104 // 260 + SYS_ISWLOWER = 0x105 // 261 + SYS_ISWPRINT = 0x106 // 262 + SYS_ISWPUNCT = 0x107 // 263 + SYS_ISWSPACE = 0x108 // 264 + SYS_ISWUPPER = 0x109 // 265 + SYS_ISWXDIGI = 0x10A // 266 + SYS_ISWXDIGIT = 0x10A // 266 + SYS_WCTYPE = 0x10B // 267 + SYS_ISWCTYPE = 0x10C // 268 + SYS_TOWLOWER = 0x10D // 269 + SYS_TOWUPPER = 0x10E // 270 + SYS_MBSINIT = 0x10F // 271 + SYS_WCTOB = 0x110 // 272 + SYS_MBRLEN = 0x111 // 273 + SYS_MBRTOWC = 0x112 // 274 + SYS_MBSRTOWC = 0x113 // 275 + SYS_MBSRTOWCS = 0x113 // 275 + SYS_WCRTOMB = 0x114 // 276 + SYS_WCSRTOMB = 0x115 // 277 + SYS_WCSRTOMBS = 0x115 // 277 + SYS___CSID = 0x116 // 278 + SYS___WCSID = 0x117 // 279 + SYS_STRPTIME = 0x118 // 280 + SYS___STRPTM = 0x118 // 280 + SYS_STRFMON = 0x119 // 281 + SYS___RPMTCH = 0x11A // 282 + SYS_WCSSTR = 0x11B // 283 + SYS_WCSTOK = 0x12C // 300 + SYS_WCSTOL = 0x12D // 301 + SYS_WCSTOD = 0x12E // 302 + SYS_WCSTOUL = 0x12F // 303 + SYS_WCSCOLL = 0x130 // 304 + SYS_WCSXFRM = 0x131 // 305 + SYS_WCSWIDTH = 0x132 // 306 + SYS_WCWIDTH = 0x133 // 307 + SYS_WCSFTIME = 0x134 // 308 + SYS_SWPRINTF = 0x135 // 309 + SYS_VSWPRINT = 0x136 // 310 + SYS_VSWPRINTF = 0x136 // 310 + SYS_SWSCANF = 0x137 // 311 + SYS_REGCOMP = 0x138 // 312 + SYS_REGEXEC = 0x139 // 313 + SYS_REGFREE = 0x13A // 314 + SYS_REGERROR = 0x13B // 315 + SYS_FGETWC = 0x13C // 316 + SYS_FGETWS = 0x13D // 317 + SYS_FPUTWC = 0x13E // 318 + SYS_FPUTWS = 0x13F // 319 + SYS_GETWC = 0x140 // 320 + SYS_GETWCHAR = 0x141 // 321 + SYS_PUTWC = 0x142 // 322 + SYS_PUTWCHAR = 0x143 // 323 + SYS_UNGETWC = 0x144 // 324 + SYS_ICONV_OPEN = 0x145 // 325 + SYS_ICONV = 0x146 // 326 + SYS_ICONV_CLOSE = 0x147 // 327 + SYS_ISMCCOLLEL = 0x14C // 332 + SYS_STRTOCOLL = 0x14D // 333 + SYS_COLLTOSTR = 0x14E // 334 + SYS_COLLEQUIV = 0x14F // 335 + SYS_COLLRANGE = 0x150 // 336 + SYS_CCLASS = 0x151 // 337 + SYS_COLLORDER = 0x152 // 338 + SYS___DEMANGLE = 0x154 // 340 + SYS_FDOPEN = 0x155 // 341 + SYS___ERRNO = 0x156 // 342 + SYS___ERRNO2 = 0x157 // 343 + SYS___TERROR = 0x158 // 344 + SYS_MAXCOLL = 0x169 // 361 + SYS_GETMCCOLL = 0x16A // 362 + SYS_GETWMCCOLL = 0x16B // 363 + SYS___ERR2AD = 0x16C // 364 + SYS_DLLQUERYFN = 0x16D // 365 + SYS_DLLQUERYVAR = 0x16E // 366 + SYS_DLLFREE = 0x16F // 367 + SYS_DLLLOAD = 0x170 // 368 + SYS__EXIT = 0x174 // 372 + SYS_ACCESS = 0x175 // 373 + SYS_ALARM = 0x176 // 374 + SYS_CFGETISPEED = 0x177 // 375 + SYS_CFGETOSPEED = 0x178 // 376 + SYS_CFSETISPEED = 0x179 // 377 + SYS_CFSETOSPEED = 0x17A // 378 + SYS_CHDIR = 0x17B // 379 + SYS_CHMOD = 0x17C // 380 + SYS_CHOWN = 0x17D // 381 + SYS_CLOSE = 0x17E // 382 + SYS_CLOSEDIR = 0x17F // 383 + SYS_CREAT = 0x180 // 384 + SYS_CTERMID = 0x181 // 385 + SYS_DUP = 0x182 // 386 + SYS_DUP2 = 0x183 // 387 + SYS_EXECL = 0x184 // 388 + SYS_EXECLE = 0x185 // 389 + SYS_EXECLP = 0x186 // 390 + SYS_EXECV = 0x187 // 391 + SYS_EXECVE = 0x188 // 392 + SYS_EXECVP = 0x189 // 393 + SYS_FCHMOD = 0x18A // 394 + SYS_FCHOWN = 0x18B // 395 + SYS_FCNTL = 0x18C // 396 + SYS_FILENO = 0x18D // 397 + SYS_FORK = 0x18E // 398 + SYS_FPATHCONF = 0x18F // 399 + SYS_FSTAT = 0x190 // 400 + SYS_FSYNC = 0x191 // 401 + SYS_FTRUNCATE = 0x192 // 402 + SYS_GETCWD = 0x193 // 403 + SYS_GETEGID = 0x194 // 404 + SYS_GETEUID = 0x195 // 405 + SYS_GETGID = 0x196 // 406 + SYS_GETGRGID = 0x197 // 407 + SYS_GETGRNAM = 0x198 // 408 + SYS_GETGROUPS = 0x199 // 409 + SYS_GETLOGIN = 0x19A // 410 + SYS_W_GETMNTENT = 0x19B // 411 + SYS_GETPGRP = 0x19C // 412 + SYS_GETPID = 0x19D // 413 + SYS_GETPPID = 0x19E // 414 + SYS_GETPWNAM = 0x19F // 415 + SYS_GETPWUID = 0x1A0 // 416 + SYS_GETUID = 0x1A1 // 417 + SYS_W_IOCTL = 0x1A2 // 418 + SYS_ISATTY = 0x1A3 // 419 + SYS_KILL = 0x1A4 // 420 + SYS_LINK = 0x1A5 // 421 + SYS_LSEEK = 0x1A6 // 422 + SYS_LSTAT = 0x1A7 // 423 + SYS_MKDIR = 0x1A8 // 424 + SYS_MKFIFO = 0x1A9 // 425 + SYS_MKNOD = 0x1AA // 426 + SYS_MOUNT = 0x1AB // 427 + SYS_OPEN = 0x1AC // 428 + SYS_OPENDIR = 0x1AD // 429 + SYS_PATHCONF = 0x1AE // 430 + SYS_PAUSE = 0x1AF // 431 + SYS_PIPE = 0x1B0 // 432 + SYS_W_GETPSENT = 0x1B1 // 433 + SYS_READ = 0x1B2 // 434 + SYS_READDIR = 0x1B3 // 435 + SYS_READLINK = 0x1B4 // 436 + SYS_REWINDDIR = 0x1B5 // 437 + SYS_RMDIR = 0x1B6 // 438 + SYS_SETEGID = 0x1B7 // 439 + SYS_SETEUID = 0x1B8 // 440 + SYS_SETGID = 0x1B9 // 441 + SYS_SETPGID = 0x1BA // 442 + SYS_SETSID = 0x1BB // 443 + SYS_SETUID = 0x1BC // 444 + SYS_SIGACTION = 0x1BD // 445 + SYS_SIGADDSET = 0x1BE // 446 + SYS_SIGDELSET = 0x1BF // 447 + SYS_SIGEMPTYSET = 0x1C0 // 448 + SYS_SIGFILLSET = 0x1C1 // 449 + SYS_SIGISMEMBER = 0x1C2 // 450 + SYS_SIGLONGJMP = 0x1C3 // 451 + SYS_SIGPENDING = 0x1C4 // 452 + SYS_SIGPROCMASK = 0x1C5 // 453 + SYS_SIGSETJMP = 0x1C6 // 454 + SYS_SIGSUSPEND = 0x1C7 // 455 + SYS_SLEEP = 0x1C8 // 456 + SYS_STAT = 0x1C9 // 457 + SYS_W_STATFS = 0x1CA // 458 + SYS_SYMLINK = 0x1CB // 459 + SYS_SYSCONF = 0x1CC // 460 + SYS_TCDRAIN = 0x1CD // 461 + SYS_TCFLOW = 0x1CE // 462 + SYS_TCFLUSH = 0x1CF // 463 + SYS_TCGETATTR = 0x1D0 // 464 + SYS_TCGETPGRP = 0x1D1 // 465 + SYS_TCSENDBREAK = 0x1D2 // 466 + SYS_TCSETATTR = 0x1D3 // 467 + SYS_TCSETPGRP = 0x1D4 // 468 + SYS_TIMES = 0x1D5 // 469 + SYS_TTYNAME = 0x1D6 // 470 + SYS_TZSET = 0x1D7 // 471 + SYS_UMASK = 0x1D8 // 472 + SYS_UMOUNT = 0x1D9 // 473 + SYS_UNAME = 0x1DA // 474 + SYS_UNLINK = 0x1DB // 475 + SYS_UTIME = 0x1DC // 476 + SYS_WAIT = 0x1DD // 477 + SYS_WAITPID = 0x1DE // 478 + SYS_WRITE = 0x1DF // 479 + SYS_CHAUDIT = 0x1E0 // 480 + SYS_FCHAUDIT = 0x1E1 // 481 + SYS_GETGROUPSBYNAME = 0x1E2 // 482 + SYS_SIGWAIT = 0x1E3 // 483 + SYS_PTHREAD_EXIT = 0x1E4 // 484 + SYS_PTHREAD_KILL = 0x1E5 // 485 + SYS_PTHREAD_ATTR_INIT = 0x1E6 // 486 + SYS_PTHREAD_ATTR_DESTROY = 0x1E7 // 487 + SYS_PTHREAD_ATTR_SETSTACKSIZE = 0x1E8 // 488 + SYS_PTHREAD_ATTR_GETSTACKSIZE = 0x1E9 // 489 + SYS_PTHREAD_ATTR_SETDETACHSTATE = 0x1EA // 490 + SYS_PTHREAD_ATTR_GETDETACHSTATE = 0x1EB // 491 + SYS_PTHREAD_ATTR_SETWEIGHT_NP = 0x1EC // 492 + SYS_PTHREAD_ATTR_GETWEIGHT_NP = 0x1ED // 493 + SYS_PTHREAD_CANCEL = 0x1EE // 494 + SYS_PTHREAD_CLEANUP_PUSH = 0x1EF // 495 + SYS_PTHREAD_CLEANUP_POP = 0x1F0 // 496 + SYS_PTHREAD_CONDATTR_INIT = 0x1F1 // 497 + SYS_PTHREAD_CONDATTR_DESTROY = 0x1F2 // 498 + SYS_PTHREAD_COND_INIT = 0x1F3 // 499 + SYS_PTHREAD_COND_DESTROY = 0x1F4 // 500 + SYS_PTHREAD_COND_SIGNAL = 0x1F5 // 501 + SYS_PTHREAD_COND_BROADCAST = 0x1F6 // 502 + SYS_PTHREAD_COND_WAIT = 0x1F7 // 503 + SYS_PTHREAD_COND_TIMEDWAIT = 0x1F8 // 504 + SYS_PTHREAD_CREATE = 0x1F9 // 505 + SYS_PTHREAD_DETACH = 0x1FA // 506 + SYS_PTHREAD_EQUAL = 0x1FB // 507 + SYS_PTHREAD_GETSPECIFIC = 0x1FC // 508 + SYS_PTHREAD_JOIN = 0x1FD // 509 + SYS_PTHREAD_KEY_CREATE = 0x1FE // 510 + SYS_PTHREAD_MUTEXATTR_INIT = 0x1FF // 511 + SYS_PTHREAD_MUTEXATTR_DESTROY = 0x200 // 512 + SYS_PTHREAD_MUTEXATTR_SETKIND_NP = 0x201 // 513 + SYS_PTHREAD_MUTEXATTR_GETKIND_NP = 0x202 // 514 + SYS_PTHREAD_MUTEX_INIT = 0x203 // 515 + SYS_PTHREAD_MUTEX_DESTROY = 0x204 // 516 + SYS_PTHREAD_MUTEX_LOCK = 0x205 // 517 + SYS_PTHREAD_MUTEX_TRYLOCK = 0x206 // 518 + SYS_PTHREAD_MUTEX_UNLOCK = 0x207 // 519 + SYS_PTHREAD_ONCE = 0x209 // 521 + SYS_PTHREAD_SELF = 0x20A // 522 + SYS_PTHREAD_SETINTR = 0x20B // 523 + SYS_PTHREAD_SETINTRTYPE = 0x20C // 524 + SYS_PTHREAD_SETSPECIFIC = 0x20D // 525 + SYS_PTHREAD_TESTINTR = 0x20E // 526 + SYS_PTHREAD_YIELD = 0x20F // 527 + SYS_TW_OPEN = 0x210 // 528 + SYS_TW_FCNTL = 0x211 // 529 + SYS_PTHREAD_JOIN_D4_NP = 0x212 // 530 + SYS_PTHREAD_CONDATTR_SETKIND_NP = 0x213 // 531 + SYS_PTHREAD_CONDATTR_GETKIND_NP = 0x214 // 532 + SYS_EXTLINK_NP = 0x215 // 533 + SYS___PASSWD = 0x216 // 534 + SYS_SETGROUPS = 0x217 // 535 + SYS_INITGROUPS = 0x218 // 536 + SYS_WCSPBRK = 0x23F // 575 + SYS_WCSRCHR = 0x240 // 576 + SYS_SVC99 = 0x241 // 577 + SYS___SVC99 = 0x241 // 577 + SYS_WCSWCS = 0x242 // 578 + SYS_LOCALECO = 0x243 // 579 + SYS_LOCALECONV = 0x243 // 579 + SYS___LIBREL = 0x244 // 580 + SYS_RELEASE = 0x245 // 581 + SYS___RLSE = 0x245 // 581 + SYS_FLOCATE = 0x246 // 582 + SYS___FLOCT = 0x246 // 582 + SYS_FDELREC = 0x247 // 583 + SYS___FDLREC = 0x247 // 583 + SYS_FETCH = 0x248 // 584 + SYS___FETCH = 0x248 // 584 + SYS_QSORT = 0x249 // 585 + SYS_GETENV = 0x24A // 586 + SYS_SYSTEM = 0x24B // 587 + SYS_BSEARCH = 0x24C // 588 + SYS_LDIV = 0x24D // 589 + SYS___THROW = 0x25E // 606 + SYS___RETHROW = 0x25F // 607 + SYS___CLEANUPCATCH = 0x260 // 608 + SYS___CATCHMATCH = 0x261 // 609 + SYS___CLEAN2UPCATCH = 0x262 // 610 + SYS_PUTENV = 0x26A // 618 + SYS___GETENV = 0x26F // 623 + SYS_GETPRIORITY = 0x270 // 624 + SYS_NICE = 0x271 // 625 + SYS_SETPRIORITY = 0x272 // 626 + SYS_GETITIMER = 0x273 // 627 + SYS_SETITIMER = 0x274 // 628 + SYS_MSGCTL = 0x275 // 629 + SYS_MSGGET = 0x276 // 630 + SYS_MSGRCV = 0x277 // 631 + SYS_MSGSND = 0x278 // 632 + SYS_MSGXRCV = 0x279 // 633 + SYS___MSGXR = 0x279 // 633 + SYS_SEMCTL = 0x27A // 634 + SYS_SEMGET = 0x27B // 635 + SYS_SEMOP = 0x27C // 636 + SYS_SHMAT = 0x27D // 637 + SYS_SHMCTL = 0x27E // 638 + SYS_SHMDT = 0x27F // 639 + SYS_SHMGET = 0x280 // 640 + SYS___GETIPC = 0x281 // 641 + SYS_SETGRENT = 0x282 // 642 + SYS_GETGRENT = 0x283 // 643 + SYS_ENDGRENT = 0x284 // 644 + SYS_SETPWENT = 0x285 // 645 + SYS_GETPWENT = 0x286 // 646 + SYS_ENDPWENT = 0x287 // 647 + SYS_BSD_SIGNAL = 0x288 // 648 + SYS_KILLPG = 0x289 // 649 + SYS_SIGALTSTACK = 0x28A // 650 + SYS_SIGHOLD = 0x28B // 651 + SYS_SIGIGNORE = 0x28C // 652 + SYS_SIGINTERRUPT = 0x28D // 653 + SYS_SIGPAUSE = 0x28E // 654 + SYS_SIGRELSE = 0x28F // 655 + SYS_SIGSET = 0x290 // 656 + SYS_SIGSTACK = 0x291 // 657 + SYS_GETRLIMIT = 0x292 // 658 + SYS_SETRLIMIT = 0x293 // 659 + SYS_GETRUSAGE = 0x294 // 660 + SYS_MMAP = 0x295 // 661 + SYS_MPROTECT = 0x296 // 662 + SYS_MSYNC = 0x297 // 663 + SYS_MUNMAP = 0x298 // 664 + SYS_CONFSTR = 0x299 // 665 + SYS_GETOPT = 0x29A // 666 + SYS_LCHOWN = 0x29B // 667 + SYS_TRUNCATE = 0x29C // 668 + SYS_GETSUBOPT = 0x29D // 669 + SYS_SETPGRP = 0x29E // 670 + SYS___GDERR = 0x29F // 671 + SYS___TZONE = 0x2A0 // 672 + SYS___DLGHT = 0x2A1 // 673 + SYS___OPARGF = 0x2A2 // 674 + SYS___OPOPTF = 0x2A3 // 675 + SYS___OPINDF = 0x2A4 // 676 + SYS___OPERRF = 0x2A5 // 677 + SYS_GETDATE = 0x2A6 // 678 + SYS_WAIT3 = 0x2A7 // 679 + SYS_WAITID = 0x2A8 // 680 + SYS___CATTRM = 0x2A9 // 681 + SYS___GDTRM = 0x2AA // 682 + SYS___RNDTRM = 0x2AB // 683 + SYS_CRYPT = 0x2AC // 684 + SYS_ENCRYPT = 0x2AD // 685 + SYS_SETKEY = 0x2AE // 686 + SYS___CNVBLK = 0x2AF // 687 + SYS___CRYTRM = 0x2B0 // 688 + SYS___ECRTRM = 0x2B1 // 689 + SYS_DRAND48 = 0x2B2 // 690 + SYS_ERAND48 = 0x2B3 // 691 + SYS_FSTATVFS = 0x2B4 // 692 + SYS_STATVFS = 0x2B5 // 693 + SYS_CATCLOSE = 0x2B6 // 694 + SYS_CATGETS = 0x2B7 // 695 + SYS_CATOPEN = 0x2B8 // 696 + SYS_BCMP = 0x2B9 // 697 + SYS_BCOPY = 0x2BA // 698 + SYS_BZERO = 0x2BB // 699 + SYS_FFS = 0x2BC // 700 + SYS_INDEX = 0x2BD // 701 + SYS_RINDEX = 0x2BE // 702 + SYS_STRCASECMP = 0x2BF // 703 + SYS_STRDUP = 0x2C0 // 704 + SYS_STRNCASECMP = 0x2C1 // 705 + SYS_INITSTATE = 0x2C2 // 706 + SYS_SETSTATE = 0x2C3 // 707 + SYS_RANDOM = 0x2C4 // 708 + SYS_SRANDOM = 0x2C5 // 709 + SYS_HCREATE = 0x2C6 // 710 + SYS_HDESTROY = 0x2C7 // 711 + SYS_HSEARCH = 0x2C8 // 712 + SYS_LFIND = 0x2C9 // 713 + SYS_LSEARCH = 0x2CA // 714 + SYS_TDELETE = 0x2CB // 715 + SYS_TFIND = 0x2CC // 716 + SYS_TSEARCH = 0x2CD // 717 + SYS_TWALK = 0x2CE // 718 + SYS_INSQUE = 0x2CF // 719 + SYS_REMQUE = 0x2D0 // 720 + SYS_POPEN = 0x2D1 // 721 + SYS_PCLOSE = 0x2D2 // 722 + SYS_SWAB = 0x2D3 // 723 + SYS_MEMCCPY = 0x2D4 // 724 + SYS_GETPAGESIZE = 0x2D8 // 728 + SYS_FCHDIR = 0x2D9 // 729 + SYS___OCLCK = 0x2DA // 730 + SYS___ATOE = 0x2DB // 731 + SYS___ATOE_L = 0x2DC // 732 + SYS___ETOA = 0x2DD // 733 + SYS___ETOA_L = 0x2DE // 734 + SYS_SETUTXENT = 0x2DF // 735 + SYS_GETUTXENT = 0x2E0 // 736 + SYS_ENDUTXENT = 0x2E1 // 737 + SYS_GETUTXID = 0x2E2 // 738 + SYS_GETUTXLINE = 0x2E3 // 739 + SYS_PUTUTXLINE = 0x2E4 // 740 + SYS_FMTMSG = 0x2E5 // 741 + SYS_JRAND48 = 0x2E6 // 742 + SYS_LRAND48 = 0x2E7 // 743 + SYS_MRAND48 = 0x2E8 // 744 + SYS_NRAND48 = 0x2E9 // 745 + SYS_LCONG48 = 0x2EA // 746 + SYS_SRAND48 = 0x2EB // 747 + SYS_SEED48 = 0x2EC // 748 + SYS_ISASCII = 0x2ED // 749 + SYS_TOASCII = 0x2EE // 750 + SYS_A64L = 0x2EF // 751 + SYS_L64A = 0x2F0 // 752 + SYS_UALARM = 0x2F1 // 753 + SYS_USLEEP = 0x2F2 // 754 + SYS___UTXTRM = 0x2F3 // 755 + SYS___SRCTRM = 0x2F4 // 756 + SYS_FTIME = 0x2F5 // 757 + SYS_GETTIMEOFDAY = 0x2F6 // 758 + SYS_DBM_CLEARERR = 0x2F7 // 759 + SYS_DBM_CLOSE = 0x2F8 // 760 + SYS_DBM_DELETE = 0x2F9 // 761 + SYS_DBM_ERROR = 0x2FA // 762 + SYS_DBM_FETCH = 0x2FB // 763 + SYS_DBM_FIRSTKEY = 0x2FC // 764 + SYS_DBM_NEXTKEY = 0x2FD // 765 + SYS_DBM_OPEN = 0x2FE // 766 + SYS_DBM_STORE = 0x2FF // 767 + SYS___NDMTRM = 0x300 // 768 + SYS_FTOK = 0x301 // 769 + SYS_BASENAME = 0x302 // 770 + SYS_DIRNAME = 0x303 // 771 + SYS_GETDTABLESIZE = 0x304 // 772 + SYS_MKSTEMP = 0x305 // 773 + SYS_MKTEMP = 0x306 // 774 + SYS_NFTW = 0x307 // 775 + SYS_GETWD = 0x308 // 776 + SYS_LOCKF = 0x309 // 777 + SYS__LONGJMP = 0x30D // 781 + SYS__SETJMP = 0x30E // 782 + SYS_VFORK = 0x30F // 783 + SYS_WORDEXP = 0x310 // 784 + SYS_WORDFREE = 0x311 // 785 + SYS_GETPGID = 0x312 // 786 + SYS_GETSID = 0x313 // 787 + SYS___UTMPXNAME = 0x314 // 788 + SYS_CUSERID = 0x315 // 789 + SYS_GETPASS = 0x316 // 790 + SYS_FNMATCH = 0x317 // 791 + SYS_FTW = 0x318 // 792 + SYS_GETW = 0x319 // 793 + SYS_GLOB = 0x31A // 794 + SYS_GLOBFREE = 0x31B // 795 + SYS_PUTW = 0x31C // 796 + SYS_SEEKDIR = 0x31D // 797 + SYS_TELLDIR = 0x31E // 798 + SYS_TEMPNAM = 0x31F // 799 + SYS_ACOSH = 0x320 // 800 + SYS_ASINH = 0x321 // 801 + SYS_ATANH = 0x322 // 802 + SYS_CBRT = 0x323 // 803 + SYS_EXPM1 = 0x324 // 804 + SYS_ILOGB = 0x325 // 805 + SYS_LOGB = 0x326 // 806 + SYS_LOG1P = 0x327 // 807 + SYS_NEXTAFTER = 0x328 // 808 + SYS_RINT = 0x329 // 809 + SYS_REMAINDER = 0x32A // 810 + SYS_SCALB = 0x32B // 811 + SYS_LGAMMA = 0x32C // 812 + SYS_TTYSLOT = 0x32D // 813 + SYS_GETTIMEOFDAY_R = 0x32E // 814 + SYS_SYNC = 0x32F // 815 + SYS_SPAWN = 0x330 // 816 + SYS_SPAWNP = 0x331 // 817 + SYS_GETLOGIN_UU = 0x332 // 818 + SYS_ECVT = 0x333 // 819 + SYS_FCVT = 0x334 // 820 + SYS_GCVT = 0x335 // 821 + SYS_ACCEPT = 0x336 // 822 + SYS_BIND = 0x337 // 823 + SYS_CONNECT = 0x338 // 824 + SYS_ENDHOSTENT = 0x339 // 825 + SYS_ENDPROTOENT = 0x33A // 826 + SYS_ENDSERVENT = 0x33B // 827 + SYS_GETHOSTBYADDR_R = 0x33C // 828 + SYS_GETHOSTBYADDR = 0x33D // 829 + SYS_GETHOSTBYNAME_R = 0x33E // 830 + SYS_GETHOSTBYNAME = 0x33F // 831 + SYS_GETHOSTENT = 0x340 // 832 + SYS_GETHOSTID = 0x341 // 833 + SYS_GETHOSTNAME = 0x342 // 834 + SYS_GETNETBYADDR = 0x343 // 835 + SYS_GETNETBYNAME = 0x344 // 836 + SYS_GETNETENT = 0x345 // 837 + SYS_GETPEERNAME = 0x346 // 838 + SYS_GETPROTOBYNAME = 0x347 // 839 + SYS_GETPROTOBYNUMBER = 0x348 // 840 + SYS_GETPROTOENT = 0x349 // 841 + SYS_GETSERVBYNAME = 0x34A // 842 + SYS_GETSERVBYPORT = 0x34B // 843 + SYS_GETSERVENT = 0x34C // 844 + SYS_GETSOCKNAME = 0x34D // 845 + SYS_GETSOCKOPT = 0x34E // 846 + SYS_INET_ADDR = 0x34F // 847 + SYS_INET_LNAOF = 0x350 // 848 + SYS_INET_MAKEADDR = 0x351 // 849 + SYS_INET_NETOF = 0x352 // 850 + SYS_INET_NETWORK = 0x353 // 851 + SYS_INET_NTOA = 0x354 // 852 + SYS_IOCTL = 0x355 // 853 + SYS_LISTEN = 0x356 // 854 + SYS_READV = 0x357 // 855 + SYS_RECV = 0x358 // 856 + SYS_RECVFROM = 0x359 // 857 + SYS_SELECT = 0x35B // 859 + SYS_SELECTEX = 0x35C // 860 + SYS_SEND = 0x35D // 861 + SYS_SENDTO = 0x35F // 863 + SYS_SETHOSTENT = 0x360 // 864 + SYS_SETNETENT = 0x361 // 865 + SYS_SETPEER = 0x362 // 866 + SYS_SETPROTOENT = 0x363 // 867 + SYS_SETSERVENT = 0x364 // 868 + SYS_SETSOCKOPT = 0x365 // 869 + SYS_SHUTDOWN = 0x366 // 870 + SYS_SOCKET = 0x367 // 871 + SYS_SOCKETPAIR = 0x368 // 872 + SYS_WRITEV = 0x369 // 873 + SYS_CHROOT = 0x36A // 874 + SYS_W_STATVFS = 0x36B // 875 + SYS_ULIMIT = 0x36C // 876 + SYS_ISNAN = 0x36D // 877 + SYS_UTIMES = 0x36E // 878 + SYS___H_ERRNO = 0x36F // 879 + SYS_ENDNETENT = 0x370 // 880 + SYS_CLOSELOG = 0x371 // 881 + SYS_OPENLOG = 0x372 // 882 + SYS_SETLOGMASK = 0x373 // 883 + SYS_SYSLOG = 0x374 // 884 + SYS_PTSNAME = 0x375 // 885 + SYS_SETREUID = 0x376 // 886 + SYS_SETREGID = 0x377 // 887 + SYS_REALPATH = 0x378 // 888 + SYS___SIGNGAM = 0x379 // 889 + SYS_GRANTPT = 0x37A // 890 + SYS_UNLOCKPT = 0x37B // 891 + SYS_TCGETSID = 0x37C // 892 + SYS___TCGETCP = 0x37D // 893 + SYS___TCSETCP = 0x37E // 894 + SYS___TCSETTABLES = 0x37F // 895 + SYS_POLL = 0x380 // 896 + SYS_REXEC = 0x381 // 897 + SYS___ISASCII2 = 0x382 // 898 + SYS___TOASCII2 = 0x383 // 899 + SYS_CHPRIORITY = 0x384 // 900 + SYS_PTHREAD_ATTR_SETSYNCTYPE_NP = 0x385 // 901 + SYS_PTHREAD_ATTR_GETSYNCTYPE_NP = 0x386 // 902 + SYS_PTHREAD_SET_LIMIT_NP = 0x387 // 903 + SYS___STNETENT = 0x388 // 904 + SYS___STPROTOENT = 0x389 // 905 + SYS___STSERVENT = 0x38A // 906 + SYS___STHOSTENT = 0x38B // 907 + SYS_NLIST = 0x38C // 908 + SYS___IPDBCS = 0x38D // 909 + SYS___IPDSPX = 0x38E // 910 + SYS___IPMSGC = 0x38F // 911 + SYS___SELECT1 = 0x390 // 912 + SYS_PTHREAD_SECURITY_NP = 0x391 // 913 + SYS___CHECK_RESOURCE_AUTH_NP = 0x392 // 914 + SYS___CONVERT_ID_NP = 0x393 // 915 + SYS___OPENVMREL = 0x394 // 916 + SYS_WMEMCHR = 0x395 // 917 + SYS_WMEMCMP = 0x396 // 918 + SYS_WMEMCPY = 0x397 // 919 + SYS_WMEMMOVE = 0x398 // 920 + SYS_WMEMSET = 0x399 // 921 + SYS___FPUTWC = 0x400 // 1024 + SYS___PUTWC = 0x401 // 1025 + SYS___PWCHAR = 0x402 // 1026 + SYS___WCSFTM = 0x403 // 1027 + SYS___WCSTOK = 0x404 // 1028 + SYS___WCWDTH = 0x405 // 1029 + SYS_T_ACCEPT = 0x409 // 1033 + SYS_T_ALLOC = 0x40A // 1034 + SYS_T_BIND = 0x40B // 1035 + SYS_T_CLOSE = 0x40C // 1036 + SYS_T_CONNECT = 0x40D // 1037 + SYS_T_ERROR = 0x40E // 1038 + SYS_T_FREE = 0x40F // 1039 + SYS_T_GETINFO = 0x410 // 1040 + SYS_T_GETPROTADDR = 0x411 // 1041 + SYS_T_GETSTATE = 0x412 // 1042 + SYS_T_LISTEN = 0x413 // 1043 + SYS_T_LOOK = 0x414 // 1044 + SYS_T_OPEN = 0x415 // 1045 + SYS_T_OPTMGMT = 0x416 // 1046 + SYS_T_RCV = 0x417 // 1047 + SYS_T_RCVCONNECT = 0x418 // 1048 + SYS_T_RCVDIS = 0x419 // 1049 + SYS_T_RCVREL = 0x41A // 1050 + SYS_T_RCVUDATA = 0x41B // 1051 + SYS_T_RCVUDERR = 0x41C // 1052 + SYS_T_SND = 0x41D // 1053 + SYS_T_SNDDIS = 0x41E // 1054 + SYS_T_SNDREL = 0x41F // 1055 + SYS_T_SNDUDATA = 0x420 // 1056 + SYS_T_STRERROR = 0x421 // 1057 + SYS_T_SYNC = 0x422 // 1058 + SYS_T_UNBIND = 0x423 // 1059 + SYS___T_ERRNO = 0x424 // 1060 + SYS___RECVMSG2 = 0x425 // 1061 + SYS___SENDMSG2 = 0x426 // 1062 + SYS_FATTACH = 0x427 // 1063 + SYS_FDETACH = 0x428 // 1064 + SYS_GETMSG = 0x429 // 1065 + SYS_GETPMSG = 0x42A // 1066 + SYS_ISASTREAM = 0x42B // 1067 + SYS_PUTMSG = 0x42C // 1068 + SYS_PUTPMSG = 0x42D // 1069 + SYS___ISPOSIXON = 0x42E // 1070 + SYS___OPENMVSREL = 0x42F // 1071 + SYS_GETCONTEXT = 0x430 // 1072 + SYS_SETCONTEXT = 0x431 // 1073 + SYS_MAKECONTEXT = 0x432 // 1074 + SYS_SWAPCONTEXT = 0x433 // 1075 + SYS_PTHREAD_GETSPECIFIC_D8_NP = 0x434 // 1076 + SYS_GETCLIENTID = 0x470 // 1136 + SYS___GETCLIENTID = 0x471 // 1137 + SYS_GETSTABLESIZE = 0x472 // 1138 + SYS_GETIBMOPT = 0x473 // 1139 + SYS_GETIBMSOCKOPT = 0x474 // 1140 + SYS_GIVESOCKET = 0x475 // 1141 + SYS_IBMSFLUSH = 0x476 // 1142 + SYS_MAXDESC = 0x477 // 1143 + SYS_SETIBMOPT = 0x478 // 1144 + SYS_SETIBMSOCKOPT = 0x479 // 1145 + SYS_SOCK_DEBUG = 0x47A // 1146 + SYS_SOCK_DO_TESTSTOR = 0x47D // 1149 + SYS_TAKESOCKET = 0x47E // 1150 + SYS___SERVER_INIT = 0x47F // 1151 + SYS___SERVER_PWU = 0x480 // 1152 + SYS_PTHREAD_TAG_NP = 0x481 // 1153 + SYS___CONSOLE = 0x482 // 1154 + SYS___WSINIT = 0x483 // 1155 + SYS___IPTCPN = 0x489 // 1161 + SYS___SMF_RECORD = 0x48A // 1162 + SYS___IPHOST = 0x48B // 1163 + SYS___IPNODE = 0x48C // 1164 + SYS___SERVER_CLASSIFY_CREATE = 0x48D // 1165 + SYS___SERVER_CLASSIFY_DESTROY = 0x48E // 1166 + SYS___SERVER_CLASSIFY_RESET = 0x48F // 1167 + SYS___SERVER_CLASSIFY = 0x490 // 1168 + SYS___HEAPRPT = 0x496 // 1174 + SYS___FNWSA = 0x49B // 1179 + SYS___SPAWN2 = 0x49D // 1181 + SYS___SPAWNP2 = 0x49E // 1182 + SYS___GDRR = 0x4A1 // 1185 + SYS___HRRNO = 0x4A2 // 1186 + SYS___OPRG = 0x4A3 // 1187 + SYS___OPRR = 0x4A4 // 1188 + SYS___OPND = 0x4A5 // 1189 + SYS___OPPT = 0x4A6 // 1190 + SYS___SIGGM = 0x4A7 // 1191 + SYS___DGHT = 0x4A8 // 1192 + SYS___TZNE = 0x4A9 // 1193 + SYS___TZZN = 0x4AA // 1194 + SYS___TRRNO = 0x4AF // 1199 + SYS___ENVN = 0x4B0 // 1200 + SYS___MLOCKALL = 0x4B1 // 1201 + SYS_CREATEWO = 0x4B2 // 1202 + SYS_CREATEWORKUNIT = 0x4B2 // 1202 + SYS_CONTINUE = 0x4B3 // 1203 + SYS_CONTINUEWORKUNIT = 0x4B3 // 1203 + SYS_CONNECTW = 0x4B4 // 1204 + SYS_CONNECTWORKMGR = 0x4B4 // 1204 + SYS_CONNECTS = 0x4B5 // 1205 + SYS_CONNECTSERVER = 0x4B5 // 1205 + SYS_DISCONNE = 0x4B6 // 1206 + SYS_DISCONNECTSERVER = 0x4B6 // 1206 + SYS_JOINWORK = 0x4B7 // 1207 + SYS_JOINWORKUNIT = 0x4B7 // 1207 + SYS_LEAVEWOR = 0x4B8 // 1208 + SYS_LEAVEWORKUNIT = 0x4B8 // 1208 + SYS_DELETEWO = 0x4B9 // 1209 + SYS_DELETEWORKUNIT = 0x4B9 // 1209 + SYS_QUERYMET = 0x4BA // 1210 + SYS_QUERYMETRICS = 0x4BA // 1210 + SYS_QUERYSCH = 0x4BB // 1211 + SYS_QUERYSCHENV = 0x4BB // 1211 + SYS_CHECKSCH = 0x4BC // 1212 + SYS_CHECKSCHENV = 0x4BC // 1212 + SYS___PID_AFFINITY = 0x4BD // 1213 + SYS___ASINH_B = 0x4BE // 1214 + SYS___ATAN_B = 0x4BF // 1215 + SYS___CBRT_B = 0x4C0 // 1216 + SYS___CEIL_B = 0x4C1 // 1217 + SYS_COPYSIGN = 0x4C2 // 1218 + SYS___COS_B = 0x4C3 // 1219 + SYS___ERF_B = 0x4C4 // 1220 + SYS___ERFC_B = 0x4C5 // 1221 + SYS___EXPM1_B = 0x4C6 // 1222 + SYS___FABS_B = 0x4C7 // 1223 + SYS_FINITE = 0x4C8 // 1224 + SYS___FLOOR_B = 0x4C9 // 1225 + SYS___FREXP_B = 0x4CA // 1226 + SYS___ILOGB_B = 0x4CB // 1227 + SYS___ISNAN_B = 0x4CC // 1228 + SYS___LDEXP_B = 0x4CD // 1229 + SYS___LOG1P_B = 0x4CE // 1230 + SYS___LOGB_B = 0x4CF // 1231 + SYS_MATHERR = 0x4D0 // 1232 + SYS___MODF_B = 0x4D1 // 1233 + SYS___NEXTAFTER_B = 0x4D2 // 1234 + SYS___RINT_B = 0x4D3 // 1235 + SYS_SCALBN = 0x4D4 // 1236 + SYS_SIGNIFIC = 0x4D5 // 1237 + SYS_SIGNIFICAND = 0x4D5 // 1237 + SYS___SIN_B = 0x4D6 // 1238 + SYS___TAN_B = 0x4D7 // 1239 + SYS___TANH_B = 0x4D8 // 1240 + SYS___ACOS_B = 0x4D9 // 1241 + SYS___ACOSH_B = 0x4DA // 1242 + SYS___ASIN_B = 0x4DB // 1243 + SYS___ATAN2_B = 0x4DC // 1244 + SYS___ATANH_B = 0x4DD // 1245 + SYS___COSH_B = 0x4DE // 1246 + SYS___EXP_B = 0x4DF // 1247 + SYS___FMOD_B = 0x4E0 // 1248 + SYS___GAMMA_B = 0x4E1 // 1249 + SYS_GAMMA_R = 0x4E2 // 1250 + SYS___HYPOT_B = 0x4E3 // 1251 + SYS___J0_B = 0x4E4 // 1252 + SYS___Y0_B = 0x4E5 // 1253 + SYS___J1_B = 0x4E6 // 1254 + SYS___Y1_B = 0x4E7 // 1255 + SYS___JN_B = 0x4E8 // 1256 + SYS___YN_B = 0x4E9 // 1257 + SYS___LGAMMA_B = 0x4EA // 1258 + SYS_LGAMMA_R = 0x4EB // 1259 + SYS___LOG_B = 0x4EC // 1260 + SYS___LOG10_B = 0x4ED // 1261 + SYS___POW_B = 0x4EE // 1262 + SYS___REMAINDER_B = 0x4EF // 1263 + SYS___SCALB_B = 0x4F0 // 1264 + SYS___SINH_B = 0x4F1 // 1265 + SYS___SQRT_B = 0x4F2 // 1266 + SYS___OPENDIR2 = 0x4F3 // 1267 + SYS___READDIR2 = 0x4F4 // 1268 + SYS___LOGIN = 0x4F5 // 1269 + SYS___OPEN_STAT = 0x4F6 // 1270 + SYS_ACCEPT_AND_RECV = 0x4F7 // 1271 + SYS___FP_SETMODE = 0x4F8 // 1272 + SYS___SIGACTIONSET = 0x4FB // 1275 + SYS___UCREATE = 0x4FC // 1276 + SYS___UMALLOC = 0x4FD // 1277 + SYS___UFREE = 0x4FE // 1278 + SYS___UHEAPREPORT = 0x4FF // 1279 + SYS___ISBFP = 0x500 // 1280 + SYS___FP_CAST = 0x501 // 1281 + SYS___CERTIFICATE = 0x502 // 1282 + SYS_SEND_FILE = 0x503 // 1283 + SYS_AIO_CANCEL = 0x504 // 1284 + SYS_AIO_ERROR = 0x505 // 1285 + SYS_AIO_READ = 0x506 // 1286 + SYS_AIO_RETURN = 0x507 // 1287 + SYS_AIO_SUSPEND = 0x508 // 1288 + SYS_AIO_WRITE = 0x509 // 1289 + SYS_PTHREAD_MUTEXATTR_GETPSHARED = 0x50A // 1290 + SYS_PTHREAD_MUTEXATTR_SETPSHARED = 0x50B // 1291 + SYS_PTHREAD_RWLOCK_DESTROY = 0x50C // 1292 + SYS_PTHREAD_RWLOCK_INIT = 0x50D // 1293 + SYS_PTHREAD_RWLOCK_RDLOCK = 0x50E // 1294 + SYS_PTHREAD_RWLOCK_TRYRDLOCK = 0x50F // 1295 + SYS_PTHREAD_RWLOCK_TRYWRLOCK = 0x510 // 1296 + SYS_PTHREAD_RWLOCK_UNLOCK = 0x511 // 1297 + SYS_PTHREAD_RWLOCK_WRLOCK = 0x512 // 1298 + SYS_PTHREAD_RWLOCKATTR_GETPSHARED = 0x513 // 1299 + SYS_PTHREAD_RWLOCKATTR_SETPSHARED = 0x514 // 1300 + SYS_PTHREAD_RWLOCKATTR_INIT = 0x515 // 1301 + SYS_PTHREAD_RWLOCKATTR_DESTROY = 0x516 // 1302 + SYS___CTTBL = 0x517 // 1303 + SYS_PTHREAD_MUTEXATTR_SETTYPE = 0x518 // 1304 + SYS_PTHREAD_MUTEXATTR_GETTYPE = 0x519 // 1305 + SYS___FP_CLR_FLAG = 0x51A // 1306 + SYS___FP_READ_FLAG = 0x51B // 1307 + SYS___FP_RAISE_XCP = 0x51C // 1308 + SYS___FP_CLASS = 0x51D // 1309 + SYS___FP_FINITE = 0x51E // 1310 + SYS___FP_ISNAN = 0x51F // 1311 + SYS___FP_UNORDERED = 0x520 // 1312 + SYS___FP_READ_RND = 0x521 // 1313 + SYS___FP_READ_RND_B = 0x522 // 1314 + SYS___FP_SWAP_RND = 0x523 // 1315 + SYS___FP_SWAP_RND_B = 0x524 // 1316 + SYS___FP_LEVEL = 0x525 // 1317 + SYS___FP_BTOH = 0x526 // 1318 + SYS___FP_HTOB = 0x527 // 1319 + SYS___FPC_RD = 0x528 // 1320 + SYS___FPC_WR = 0x529 // 1321 + SYS___FPC_RW = 0x52A // 1322 + SYS___FPC_SM = 0x52B // 1323 + SYS___FPC_RS = 0x52C // 1324 + SYS_SIGTIMEDWAIT = 0x52D // 1325 + SYS_SIGWAITINFO = 0x52E // 1326 + SYS___CHKBFP = 0x52F // 1327 + SYS___W_PIOCTL = 0x59E // 1438 + SYS___OSENV = 0x59F // 1439 + SYS_EXPORTWO = 0x5A1 // 1441 + SYS_EXPORTWORKUNIT = 0x5A1 // 1441 + SYS_UNDOEXPO = 0x5A2 // 1442 + SYS_UNDOEXPORTWORKUNIT = 0x5A2 // 1442 + SYS_IMPORTWO = 0x5A3 // 1443 + SYS_IMPORTWORKUNIT = 0x5A3 // 1443 + SYS_UNDOIMPO = 0x5A4 // 1444 + SYS_UNDOIMPORTWORKUNIT = 0x5A4 // 1444 + SYS_EXTRACTW = 0x5A5 // 1445 + SYS_EXTRACTWORKUNIT = 0x5A5 // 1445 + SYS___CPL = 0x5A6 // 1446 + SYS___MAP_INIT = 0x5A7 // 1447 + SYS___MAP_SERVICE = 0x5A8 // 1448 + SYS_SIGQUEUE = 0x5A9 // 1449 + SYS___MOUNT = 0x5AA // 1450 + SYS___GETUSERID = 0x5AB // 1451 + SYS___IPDOMAINNAME = 0x5AC // 1452 + SYS_QUERYENC = 0x5AD // 1453 + SYS_QUERYWORKUNITCLASSIFICATION = 0x5AD // 1453 + SYS_CONNECTE = 0x5AE // 1454 + SYS_CONNECTEXPORTIMPORT = 0x5AE // 1454 + SYS___FP_SWAPMODE = 0x5AF // 1455 + SYS_STRTOLL = 0x5B0 // 1456 + SYS_STRTOULL = 0x5B1 // 1457 + SYS___DSA_PREV = 0x5B2 // 1458 + SYS___EP_FIND = 0x5B3 // 1459 + SYS___SERVER_THREADS_QUERY = 0x5B4 // 1460 + SYS___MSGRCV_TIMED = 0x5B7 // 1463 + SYS___SEMOP_TIMED = 0x5B8 // 1464 + SYS___GET_CPUID = 0x5B9 // 1465 + SYS___GET_SYSTEM_SETTINGS = 0x5BA // 1466 + SYS_FTELLO = 0x5C8 // 1480 + SYS_FSEEKO = 0x5C9 // 1481 + SYS_LLDIV = 0x5CB // 1483 + SYS_WCSTOLL = 0x5CC // 1484 + SYS_WCSTOULL = 0x5CD // 1485 + SYS_LLABS = 0x5CE // 1486 + SYS___CONSOLE2 = 0x5D2 // 1490 + SYS_INET_NTOP = 0x5D3 // 1491 + SYS_INET_PTON = 0x5D4 // 1492 + SYS___RES = 0x5D6 // 1494 + SYS_RES_MKQUERY = 0x5D7 // 1495 + SYS_RES_INIT = 0x5D8 // 1496 + SYS_RES_QUERY = 0x5D9 // 1497 + SYS_RES_SEARCH = 0x5DA // 1498 + SYS_RES_SEND = 0x5DB // 1499 + SYS_RES_QUERYDOMAIN = 0x5DC // 1500 + SYS_DN_EXPAND = 0x5DD // 1501 + SYS_DN_SKIPNAME = 0x5DE // 1502 + SYS_DN_COMP = 0x5DF // 1503 + SYS_ASCTIME_R = 0x5E0 // 1504 + SYS_CTIME_R = 0x5E1 // 1505 + SYS_GMTIME_R = 0x5E2 // 1506 + SYS_LOCALTIME_R = 0x5E3 // 1507 + SYS_RAND_R = 0x5E4 // 1508 + SYS_STRTOK_R = 0x5E5 // 1509 + SYS_READDIR_R = 0x5E6 // 1510 + SYS_GETGRGID_R = 0x5E7 // 1511 + SYS_GETGRNAM_R = 0x5E8 // 1512 + SYS_GETLOGIN_R = 0x5E9 // 1513 + SYS_GETPWNAM_R = 0x5EA // 1514 + SYS_GETPWUID_R = 0x5EB // 1515 + SYS_TTYNAME_R = 0x5EC // 1516 + SYS_PTHREAD_ATFORK = 0x5ED // 1517 + SYS_PTHREAD_ATTR_GETGUARDSIZE = 0x5EE // 1518 + SYS_PTHREAD_ATTR_GETSTACKADDR = 0x5EF // 1519 + SYS_PTHREAD_ATTR_SETGUARDSIZE = 0x5F0 // 1520 + SYS_PTHREAD_ATTR_SETSTACKADDR = 0x5F1 // 1521 + SYS_PTHREAD_CONDATTR_GETPSHARED = 0x5F2 // 1522 + SYS_PTHREAD_CONDATTR_SETPSHARED = 0x5F3 // 1523 + SYS_PTHREAD_GETCONCURRENCY = 0x5F4 // 1524 + SYS_PTHREAD_KEY_DELETE = 0x5F5 // 1525 + SYS_PTHREAD_SETCONCURRENCY = 0x5F6 // 1526 + SYS_PTHREAD_SIGMASK = 0x5F7 // 1527 + SYS___DISCARDDATA = 0x5F8 // 1528 + SYS_PTHREAD_ATTR_GETSCHEDPARAM = 0x5F9 // 1529 + SYS_PTHREAD_ATTR_SETSCHEDPARAM = 0x5FA // 1530 + SYS_PTHREAD_ATTR_GETDETACHSTATE_U98 = 0x5FB // 1531 + SYS_PTHREAD_ATTR_SETDETACHSTATE_U98 = 0x5FC // 1532 + SYS_PTHREAD_DETACH_U98 = 0x5FD // 1533 + SYS_PTHREAD_GETSPECIFIC_U98 = 0x5FE // 1534 + SYS_PTHREAD_SETCANCELSTATE = 0x5FF // 1535 + SYS_PTHREAD_SETCANCELTYPE = 0x600 // 1536 + SYS_PTHREAD_TESTCANCEL = 0x601 // 1537 + SYS___ATANF_B = 0x602 // 1538 + SYS___ATANL_B = 0x603 // 1539 + SYS___CEILF_B = 0x604 // 1540 + SYS___CEILL_B = 0x605 // 1541 + SYS___COSF_B = 0x606 // 1542 + SYS___COSL_B = 0x607 // 1543 + SYS___FABSF_B = 0x608 // 1544 + SYS___FABSL_B = 0x609 // 1545 + SYS___FLOORF_B = 0x60A // 1546 + SYS___FLOORL_B = 0x60B // 1547 + SYS___FREXPF_B = 0x60C // 1548 + SYS___FREXPL_B = 0x60D // 1549 + SYS___LDEXPF_B = 0x60E // 1550 + SYS___LDEXPL_B = 0x60F // 1551 + SYS___SINF_B = 0x610 // 1552 + SYS___SINL_B = 0x611 // 1553 + SYS___TANF_B = 0x612 // 1554 + SYS___TANL_B = 0x613 // 1555 + SYS___TANHF_B = 0x614 // 1556 + SYS___TANHL_B = 0x615 // 1557 + SYS___ACOSF_B = 0x616 // 1558 + SYS___ACOSL_B = 0x617 // 1559 + SYS___ASINF_B = 0x618 // 1560 + SYS___ASINL_B = 0x619 // 1561 + SYS___ATAN2F_B = 0x61A // 1562 + SYS___ATAN2L_B = 0x61B // 1563 + SYS___COSHF_B = 0x61C // 1564 + SYS___COSHL_B = 0x61D // 1565 + SYS___EXPF_B = 0x61E // 1566 + SYS___EXPL_B = 0x61F // 1567 + SYS___LOGF_B = 0x620 // 1568 + SYS___LOGL_B = 0x621 // 1569 + SYS___LOG10F_B = 0x622 // 1570 + SYS___LOG10L_B = 0x623 // 1571 + SYS___POWF_B = 0x624 // 1572 + SYS___POWL_B = 0x625 // 1573 + SYS___SINHF_B = 0x626 // 1574 + SYS___SINHL_B = 0x627 // 1575 + SYS___SQRTF_B = 0x628 // 1576 + SYS___SQRTL_B = 0x629 // 1577 + SYS___ABSF_B = 0x62A // 1578 + SYS___ABS_B = 0x62B // 1579 + SYS___ABSL_B = 0x62C // 1580 + SYS___FMODF_B = 0x62D // 1581 + SYS___FMODL_B = 0x62E // 1582 + SYS___MODFF_B = 0x62F // 1583 + SYS___MODFL_B = 0x630 // 1584 + SYS_ABSF = 0x631 // 1585 + SYS_ABSL = 0x632 // 1586 + SYS_ACOSF = 0x633 // 1587 + SYS_ACOSL = 0x634 // 1588 + SYS_ASINF = 0x635 // 1589 + SYS_ASINL = 0x636 // 1590 + SYS_ATAN2F = 0x637 // 1591 + SYS_ATAN2L = 0x638 // 1592 + SYS_ATANF = 0x639 // 1593 + SYS_ATANL = 0x63A // 1594 + SYS_CEILF = 0x63B // 1595 + SYS_CEILL = 0x63C // 1596 + SYS_COSF = 0x63D // 1597 + SYS_COSL = 0x63E // 1598 + SYS_COSHF = 0x63F // 1599 + SYS_COSHL = 0x640 // 1600 + SYS_EXPF = 0x641 // 1601 + SYS_EXPL = 0x642 // 1602 + SYS_TANHF = 0x643 // 1603 + SYS_TANHL = 0x644 // 1604 + SYS_LOG10F = 0x645 // 1605 + SYS_LOG10L = 0x646 // 1606 + SYS_LOGF = 0x647 // 1607 + SYS_LOGL = 0x648 // 1608 + SYS_POWF = 0x649 // 1609 + SYS_POWL = 0x64A // 1610 + SYS_SINF = 0x64B // 1611 + SYS_SINL = 0x64C // 1612 + SYS_SQRTF = 0x64D // 1613 + SYS_SQRTL = 0x64E // 1614 + SYS_SINHF = 0x64F // 1615 + SYS_SINHL = 0x650 // 1616 + SYS_TANF = 0x651 // 1617 + SYS_TANL = 0x652 // 1618 + SYS_FABSF = 0x653 // 1619 + SYS_FABSL = 0x654 // 1620 + SYS_FLOORF = 0x655 // 1621 + SYS_FLOORL = 0x656 // 1622 + SYS_FMODF = 0x657 // 1623 + SYS_FMODL = 0x658 // 1624 + SYS_FREXPF = 0x659 // 1625 + SYS_FREXPL = 0x65A // 1626 + SYS_LDEXPF = 0x65B // 1627 + SYS_LDEXPL = 0x65C // 1628 + SYS_MODFF = 0x65D // 1629 + SYS_MODFL = 0x65E // 1630 + SYS_BTOWC = 0x65F // 1631 + SYS___CHATTR = 0x660 // 1632 + SYS___FCHATTR = 0x661 // 1633 + SYS___TOCCSID = 0x662 // 1634 + SYS___CSNAMETYPE = 0x663 // 1635 + SYS___TOCSNAME = 0x664 // 1636 + SYS___CCSIDTYPE = 0x665 // 1637 + SYS___AE_CORRESTBL_QUERY = 0x666 // 1638 + SYS___AE_AUTOCONVERT_STATE = 0x667 // 1639 + SYS_DN_FIND = 0x668 // 1640 + SYS___GETHOSTBYADDR_A = 0x669 // 1641 + SYS___GETHOSTBYNAME_A = 0x66A // 1642 + SYS___RES_INIT_A = 0x66B // 1643 + SYS___GETHOSTBYADDR_R_A = 0x66C // 1644 + SYS___GETHOSTBYNAME_R_A = 0x66D // 1645 + SYS___CHARMAP_INIT_A = 0x66E // 1646 + SYS___MBLEN_A = 0x66F // 1647 + SYS___MBLEN_SB_A = 0x670 // 1648 + SYS___MBLEN_STD_A = 0x671 // 1649 + SYS___MBLEN_UTF = 0x672 // 1650 + SYS___MBSTOWCS_A = 0x673 // 1651 + SYS___MBSTOWCS_STD_A = 0x674 // 1652 + SYS___MBTOWC_A = 0x675 // 1653 + SYS___MBTOWC_ISO1 = 0x676 // 1654 + SYS___MBTOWC_SBCS = 0x677 // 1655 + SYS___MBTOWC_MBCS = 0x678 // 1656 + SYS___MBTOWC_UTF = 0x679 // 1657 + SYS___WCSTOMBS_A = 0x67A // 1658 + SYS___WCSTOMBS_STD_A = 0x67B // 1659 + SYS___WCSWIDTH_A = 0x67C // 1660 + SYS___GETGRGID_R_A = 0x67D // 1661 + SYS___WCSWIDTH_STD_A = 0x67E // 1662 + SYS___WCSWIDTH_ASIA = 0x67F // 1663 + SYS___CSID_A = 0x680 // 1664 + SYS___CSID_STD_A = 0x681 // 1665 + SYS___WCSID_A = 0x682 // 1666 + SYS___WCSID_STD_A = 0x683 // 1667 + SYS___WCTOMB_A = 0x684 // 1668 + SYS___WCTOMB_ISO1 = 0x685 // 1669 + SYS___WCTOMB_STD_A = 0x686 // 1670 + SYS___WCTOMB_UTF = 0x687 // 1671 + SYS___WCWIDTH_A = 0x688 // 1672 + SYS___GETGRNAM_R_A = 0x689 // 1673 + SYS___WCWIDTH_STD_A = 0x68A // 1674 + SYS___WCWIDTH_ASIA = 0x68B // 1675 + SYS___GETPWNAM_R_A = 0x68C // 1676 + SYS___GETPWUID_R_A = 0x68D // 1677 + SYS___GETLOGIN_R_A = 0x68E // 1678 + SYS___TTYNAME_R_A = 0x68F // 1679 + SYS___READDIR_R_A = 0x690 // 1680 + SYS___E2A_S = 0x691 // 1681 + SYS___FNMATCH_A = 0x692 // 1682 + SYS___FNMATCH_C_A = 0x693 // 1683 + SYS___EXECL_A = 0x694 // 1684 + SYS___FNMATCH_STD_A = 0x695 // 1685 + SYS___REGCOMP_A = 0x696 // 1686 + SYS___REGCOMP_STD_A = 0x697 // 1687 + SYS___REGERROR_A = 0x698 // 1688 + SYS___REGERROR_STD_A = 0x699 // 1689 + SYS___REGEXEC_A = 0x69A // 1690 + SYS___REGEXEC_STD_A = 0x69B // 1691 + SYS___REGFREE_A = 0x69C // 1692 + SYS___REGFREE_STD_A = 0x69D // 1693 + SYS___STRCOLL_A = 0x69E // 1694 + SYS___STRCOLL_C_A = 0x69F // 1695 + SYS___EXECLE_A = 0x6A0 // 1696 + SYS___STRCOLL_STD_A = 0x6A1 // 1697 + SYS___STRXFRM_A = 0x6A2 // 1698 + SYS___STRXFRM_C_A = 0x6A3 // 1699 + SYS___EXECLP_A = 0x6A4 // 1700 + SYS___STRXFRM_STD_A = 0x6A5 // 1701 + SYS___WCSCOLL_A = 0x6A6 // 1702 + SYS___WCSCOLL_C_A = 0x6A7 // 1703 + SYS___WCSCOLL_STD_A = 0x6A8 // 1704 + SYS___WCSXFRM_A = 0x6A9 // 1705 + SYS___WCSXFRM_C_A = 0x6AA // 1706 + SYS___WCSXFRM_STD_A = 0x6AB // 1707 + SYS___COLLATE_INIT_A = 0x6AC // 1708 + SYS___WCTYPE_A = 0x6AD // 1709 + SYS___GET_WCTYPE_STD_A = 0x6AE // 1710 + SYS___CTYPE_INIT_A = 0x6AF // 1711 + SYS___ISWCTYPE_A = 0x6B0 // 1712 + SYS___EXECV_A = 0x6B1 // 1713 + SYS___IS_WCTYPE_STD_A = 0x6B2 // 1714 + SYS___TOWLOWER_A = 0x6B3 // 1715 + SYS___TOWLOWER_STD_A = 0x6B4 // 1716 + SYS___TOWUPPER_A = 0x6B5 // 1717 + SYS___TOWUPPER_STD_A = 0x6B6 // 1718 + SYS___LOCALE_INIT_A = 0x6B7 // 1719 + SYS___LOCALECONV_A = 0x6B8 // 1720 + SYS___LOCALECONV_STD_A = 0x6B9 // 1721 + SYS___NL_LANGINFO_A = 0x6BA // 1722 + SYS___NL_LNAGINFO_STD_A = 0x6BB // 1723 + SYS___MONETARY_INIT_A = 0x6BC // 1724 + SYS___STRFMON_A = 0x6BD // 1725 + SYS___STRFMON_STD_A = 0x6BE // 1726 + SYS___GETADDRINFO_A = 0x6BF // 1727 + SYS___CATGETS_A = 0x6C0 // 1728 + SYS___EXECVE_A = 0x6C1 // 1729 + SYS___EXECVP_A = 0x6C2 // 1730 + SYS___SPAWN_A = 0x6C3 // 1731 + SYS___GETNAMEINFO_A = 0x6C4 // 1732 + SYS___SPAWNP_A = 0x6C5 // 1733 + SYS___NUMERIC_INIT_A = 0x6C6 // 1734 + SYS___RESP_INIT_A = 0x6C7 // 1735 + SYS___RPMATCH_A = 0x6C8 // 1736 + SYS___RPMATCH_C_A = 0x6C9 // 1737 + SYS___RPMATCH_STD_A = 0x6CA // 1738 + SYS___TIME_INIT_A = 0x6CB // 1739 + SYS___STRFTIME_A = 0x6CC // 1740 + SYS___STRFTIME_STD_A = 0x6CD // 1741 + SYS___STRPTIME_A = 0x6CE // 1742 + SYS___STRPTIME_STD_A = 0x6CF // 1743 + SYS___WCSFTIME_A = 0x6D0 // 1744 + SYS___WCSFTIME_STD_A = 0x6D1 // 1745 + SYS_____SPAWN2_A = 0x6D2 // 1746 + SYS_____SPAWNP2_A = 0x6D3 // 1747 + SYS___SYNTAX_INIT_A = 0x6D4 // 1748 + SYS___TOD_INIT_A = 0x6D5 // 1749 + SYS___NL_CSINFO_A = 0x6D6 // 1750 + SYS___NL_MONINFO_A = 0x6D7 // 1751 + SYS___NL_NUMINFO_A = 0x6D8 // 1752 + SYS___NL_RESPINFO_A = 0x6D9 // 1753 + SYS___NL_TIMINFO_A = 0x6DA // 1754 + SYS___IF_NAMETOINDEX_A = 0x6DB // 1755 + SYS___IF_INDEXTONAME_A = 0x6DC // 1756 + SYS___PRINTF_A = 0x6DD // 1757 + SYS___ICONV_OPEN_A = 0x6DE // 1758 + SYS___DLLLOAD_A = 0x6DF // 1759 + SYS___DLLQUERYFN_A = 0x6E0 // 1760 + SYS___DLLQUERYVAR_A = 0x6E1 // 1761 + SYS_____CHATTR_A = 0x6E2 // 1762 + SYS___E2A_L = 0x6E3 // 1763 + SYS_____TOCCSID_A = 0x6E4 // 1764 + SYS_____TOCSNAME_A = 0x6E5 // 1765 + SYS_____CCSIDTYPE_A = 0x6E6 // 1766 + SYS_____CSNAMETYPE_A = 0x6E7 // 1767 + SYS___CHMOD_A = 0x6E8 // 1768 + SYS___MKDIR_A = 0x6E9 // 1769 + SYS___STAT_A = 0x6EA // 1770 + SYS___STAT_O_A = 0x6EB // 1771 + SYS___MKFIFO_A = 0x6EC // 1772 + SYS_____OPEN_STAT_A = 0x6ED // 1773 + SYS___LSTAT_A = 0x6EE // 1774 + SYS___LSTAT_O_A = 0x6EF // 1775 + SYS___MKNOD_A = 0x6F0 // 1776 + SYS___MOUNT_A = 0x6F1 // 1777 + SYS___UMOUNT_A = 0x6F2 // 1778 + SYS___CHAUDIT_A = 0x6F4 // 1780 + SYS___W_GETMNTENT_A = 0x6F5 // 1781 + SYS___CREAT_A = 0x6F6 // 1782 + SYS___OPEN_A = 0x6F7 // 1783 + SYS___SETLOCALE_A = 0x6F9 // 1785 + SYS___FPRINTF_A = 0x6FA // 1786 + SYS___SPRINTF_A = 0x6FB // 1787 + SYS___VFPRINTF_A = 0x6FC // 1788 + SYS___VPRINTF_A = 0x6FD // 1789 + SYS___VSPRINTF_A = 0x6FE // 1790 + SYS___VSWPRINTF_A = 0x6FF // 1791 + SYS___SWPRINTF_A = 0x700 // 1792 + SYS___FSCANF_A = 0x701 // 1793 + SYS___SCANF_A = 0x702 // 1794 + SYS___SSCANF_A = 0x703 // 1795 + SYS___SWSCANF_A = 0x704 // 1796 + SYS___ATOF_A = 0x705 // 1797 + SYS___ATOI_A = 0x706 // 1798 + SYS___ATOL_A = 0x707 // 1799 + SYS___STRTOD_A = 0x708 // 1800 + SYS___STRTOL_A = 0x709 // 1801 + SYS___STRTOUL_A = 0x70A // 1802 + SYS_____AE_CORRESTBL_QUERY_A = 0x70B // 1803 + SYS___A64L_A = 0x70C // 1804 + SYS___ECVT_A = 0x70D // 1805 + SYS___FCVT_A = 0x70E // 1806 + SYS___GCVT_A = 0x70F // 1807 + SYS___L64A_A = 0x710 // 1808 + SYS___STRERROR_A = 0x711 // 1809 + SYS___PERROR_A = 0x712 // 1810 + SYS___FETCH_A = 0x713 // 1811 + SYS___GETENV_A = 0x714 // 1812 + SYS___MKSTEMP_A = 0x717 // 1815 + SYS___PTSNAME_A = 0x718 // 1816 + SYS___PUTENV_A = 0x719 // 1817 + SYS___REALPATH_A = 0x71A // 1818 + SYS___SETENV_A = 0x71B // 1819 + SYS___SYSTEM_A = 0x71C // 1820 + SYS___GETOPT_A = 0x71D // 1821 + SYS___CATOPEN_A = 0x71E // 1822 + SYS___ACCESS_A = 0x71F // 1823 + SYS___CHDIR_A = 0x720 // 1824 + SYS___CHOWN_A = 0x721 // 1825 + SYS___CHROOT_A = 0x722 // 1826 + SYS___GETCWD_A = 0x723 // 1827 + SYS___GETWD_A = 0x724 // 1828 + SYS___LCHOWN_A = 0x725 // 1829 + SYS___LINK_A = 0x726 // 1830 + SYS___PATHCONF_A = 0x727 // 1831 + SYS___IF_NAMEINDEX_A = 0x728 // 1832 + SYS___READLINK_A = 0x729 // 1833 + SYS___RMDIR_A = 0x72A // 1834 + SYS___STATVFS_A = 0x72B // 1835 + SYS___SYMLINK_A = 0x72C // 1836 + SYS___TRUNCATE_A = 0x72D // 1837 + SYS___UNLINK_A = 0x72E // 1838 + SYS___GAI_STRERROR_A = 0x72F // 1839 + SYS___EXTLINK_NP_A = 0x730 // 1840 + SYS___ISALNUM_A = 0x731 // 1841 + SYS___ISALPHA_A = 0x732 // 1842 + SYS___A2E_S = 0x733 // 1843 + SYS___ISCNTRL_A = 0x734 // 1844 + SYS___ISDIGIT_A = 0x735 // 1845 + SYS___ISGRAPH_A = 0x736 // 1846 + SYS___ISLOWER_A = 0x737 // 1847 + SYS___ISPRINT_A = 0x738 // 1848 + SYS___ISPUNCT_A = 0x739 // 1849 + SYS___ISSPACE_A = 0x73A // 1850 + SYS___ISUPPER_A = 0x73B // 1851 + SYS___ISXDIGIT_A = 0x73C // 1852 + SYS___TOLOWER_A = 0x73D // 1853 + SYS___TOUPPER_A = 0x73E // 1854 + SYS___ISWALNUM_A = 0x73F // 1855 + SYS___ISWALPHA_A = 0x740 // 1856 + SYS___A2E_L = 0x741 // 1857 + SYS___ISWCNTRL_A = 0x742 // 1858 + SYS___ISWDIGIT_A = 0x743 // 1859 + SYS___ISWGRAPH_A = 0x744 // 1860 + SYS___ISWLOWER_A = 0x745 // 1861 + SYS___ISWPRINT_A = 0x746 // 1862 + SYS___ISWPUNCT_A = 0x747 // 1863 + SYS___ISWSPACE_A = 0x748 // 1864 + SYS___ISWUPPER_A = 0x749 // 1865 + SYS___ISWXDIGIT_A = 0x74A // 1866 + SYS___CONFSTR_A = 0x74B // 1867 + SYS___FTOK_A = 0x74C // 1868 + SYS___MKTEMP_A = 0x74D // 1869 + SYS___FDOPEN_A = 0x74E // 1870 + SYS___FLDATA_A = 0x74F // 1871 + SYS___REMOVE_A = 0x750 // 1872 + SYS___RENAME_A = 0x751 // 1873 + SYS___TMPNAM_A = 0x752 // 1874 + SYS___FOPEN_A = 0x753 // 1875 + SYS___FREOPEN_A = 0x754 // 1876 + SYS___CUSERID_A = 0x755 // 1877 + SYS___POPEN_A = 0x756 // 1878 + SYS___TEMPNAM_A = 0x757 // 1879 + SYS___FTW_A = 0x758 // 1880 + SYS___GETGRENT_A = 0x759 // 1881 + SYS___GETGRGID_A = 0x75A // 1882 + SYS___GETGRNAM_A = 0x75B // 1883 + SYS___GETGROUPSBYNAME_A = 0x75C // 1884 + SYS___GETHOSTENT_A = 0x75D // 1885 + SYS___GETHOSTNAME_A = 0x75E // 1886 + SYS___GETLOGIN_A = 0x75F // 1887 + SYS___INET_NTOP_A = 0x760 // 1888 + SYS___GETPASS_A = 0x761 // 1889 + SYS___GETPWENT_A = 0x762 // 1890 + SYS___GETPWNAM_A = 0x763 // 1891 + SYS___GETPWUID_A = 0x764 // 1892 + SYS_____CHECK_RESOURCE_AUTH_NP_A = 0x765 // 1893 + SYS___CHECKSCHENV_A = 0x766 // 1894 + SYS___CONNECTSERVER_A = 0x767 // 1895 + SYS___CONNECTWORKMGR_A = 0x768 // 1896 + SYS_____CONSOLE_A = 0x769 // 1897 + SYS___CREATEWORKUNIT_A = 0x76A // 1898 + SYS___CTERMID_A = 0x76B // 1899 + SYS___FMTMSG_A = 0x76C // 1900 + SYS___INITGROUPS_A = 0x76D // 1901 + SYS_____LOGIN_A = 0x76E // 1902 + SYS___MSGRCV_A = 0x76F // 1903 + SYS___MSGSND_A = 0x770 // 1904 + SYS___MSGXRCV_A = 0x771 // 1905 + SYS___NFTW_A = 0x772 // 1906 + SYS_____PASSWD_A = 0x773 // 1907 + SYS___PTHREAD_SECURITY_NP_A = 0x774 // 1908 + SYS___QUERYMETRICS_A = 0x775 // 1909 + SYS___QUERYSCHENV = 0x776 // 1910 + SYS___READV_A = 0x777 // 1911 + SYS_____SERVER_CLASSIFY_A = 0x778 // 1912 + SYS_____SERVER_INIT_A = 0x779 // 1913 + SYS_____SERVER_PWU_A = 0x77A // 1914 + SYS___STRCASECMP_A = 0x77B // 1915 + SYS___STRNCASECMP_A = 0x77C // 1916 + SYS___TTYNAME_A = 0x77D // 1917 + SYS___UNAME_A = 0x77E // 1918 + SYS___UTIMES_A = 0x77F // 1919 + SYS___W_GETPSENT_A = 0x780 // 1920 + SYS___WRITEV_A = 0x781 // 1921 + SYS___W_STATFS_A = 0x782 // 1922 + SYS___W_STATVFS_A = 0x783 // 1923 + SYS___FPUTC_A = 0x784 // 1924 + SYS___PUTCHAR_A = 0x785 // 1925 + SYS___PUTS_A = 0x786 // 1926 + SYS___FGETS_A = 0x787 // 1927 + SYS___GETS_A = 0x788 // 1928 + SYS___FPUTS_A = 0x789 // 1929 + SYS___FREAD_A = 0x78A // 1930 + SYS___FWRITE_A = 0x78B // 1931 + SYS___OPEN_O_A = 0x78C // 1932 + SYS___ISASCII = 0x78D // 1933 + SYS___CREAT_O_A = 0x78E // 1934 + SYS___ENVNA = 0x78F // 1935 + SYS___PUTC_A = 0x790 // 1936 + SYS___AE_THREAD_SETMODE = 0x791 // 1937 + SYS___AE_THREAD_SWAPMODE = 0x792 // 1938 + SYS___GETNETBYADDR_A = 0x793 // 1939 + SYS___GETNETBYNAME_A = 0x794 // 1940 + SYS___GETNETENT_A = 0x795 // 1941 + SYS___GETPROTOBYNAME_A = 0x796 // 1942 + SYS___GETPROTOBYNUMBER_A = 0x797 // 1943 + SYS___GETPROTOENT_A = 0x798 // 1944 + SYS___GETSERVBYNAME_A = 0x799 // 1945 + SYS___GETSERVBYPORT_A = 0x79A // 1946 + SYS___GETSERVENT_A = 0x79B // 1947 + SYS___ASCTIME_A = 0x79C // 1948 + SYS___CTIME_A = 0x79D // 1949 + SYS___GETDATE_A = 0x79E // 1950 + SYS___TZSET_A = 0x79F // 1951 + SYS___UTIME_A = 0x7A0 // 1952 + SYS___ASCTIME_R_A = 0x7A1 // 1953 + SYS___CTIME_R_A = 0x7A2 // 1954 + SYS___STRTOLL_A = 0x7A3 // 1955 + SYS___STRTOULL_A = 0x7A4 // 1956 + SYS___FPUTWC_A = 0x7A5 // 1957 + SYS___PUTWC_A = 0x7A6 // 1958 + SYS___PUTWCHAR_A = 0x7A7 // 1959 + SYS___FPUTWS_A = 0x7A8 // 1960 + SYS___UNGETWC_A = 0x7A9 // 1961 + SYS___FGETWC_A = 0x7AA // 1962 + SYS___GETWC_A = 0x7AB // 1963 + SYS___GETWCHAR_A = 0x7AC // 1964 + SYS___FGETWS_A = 0x7AD // 1965 + SYS___GETTIMEOFDAY_A = 0x7AE // 1966 + SYS___GMTIME_A = 0x7AF // 1967 + SYS___GMTIME_R_A = 0x7B0 // 1968 + SYS___LOCALTIME_A = 0x7B1 // 1969 + SYS___LOCALTIME_R_A = 0x7B2 // 1970 + SYS___MKTIME_A = 0x7B3 // 1971 + SYS___TZZNA = 0x7B4 // 1972 + SYS_UNATEXIT = 0x7B5 // 1973 + SYS___CEE3DMP_A = 0x7B6 // 1974 + SYS___CDUMP_A = 0x7B7 // 1975 + SYS___CSNAP_A = 0x7B8 // 1976 + SYS___CTEST_A = 0x7B9 // 1977 + SYS___CTRACE_A = 0x7BA // 1978 + SYS___VSWPRNTF2_A = 0x7BB // 1979 + SYS___INET_PTON_A = 0x7BC // 1980 + SYS___SYSLOG_A = 0x7BD // 1981 + SYS___CRYPT_A = 0x7BE // 1982 + SYS_____OPENDIR2_A = 0x7BF // 1983 + SYS_____READDIR2_A = 0x7C0 // 1984 + SYS___OPENDIR_A = 0x7C2 // 1986 + SYS___READDIR_A = 0x7C3 // 1987 + SYS_PREAD = 0x7C7 // 1991 + SYS_PWRITE = 0x7C8 // 1992 + SYS_M_CREATE_LAYOUT = 0x7C9 // 1993 + SYS_M_DESTROY_LAYOUT = 0x7CA // 1994 + SYS_M_GETVALUES_LAYOUT = 0x7CB // 1995 + SYS_M_SETVALUES_LAYOUT = 0x7CC // 1996 + SYS_M_TRANSFORM_LAYOUT = 0x7CD // 1997 + SYS_M_WTRANSFORM_LAYOUT = 0x7CE // 1998 + SYS_FWPRINTF = 0x7D1 // 2001 + SYS_WPRINTF = 0x7D2 // 2002 + SYS_VFWPRINT = 0x7D3 // 2003 + SYS_VFWPRINTF = 0x7D3 // 2003 + SYS_VWPRINTF = 0x7D4 // 2004 + SYS_FWSCANF = 0x7D5 // 2005 + SYS_WSCANF = 0x7D6 // 2006 + SYS_WCTRANS = 0x7D7 // 2007 + SYS_TOWCTRAN = 0x7D8 // 2008 + SYS_TOWCTRANS = 0x7D8 // 2008 + SYS___WCSTOD_A = 0x7D9 // 2009 + SYS___WCSTOL_A = 0x7DA // 2010 + SYS___WCSTOUL_A = 0x7DB // 2011 + SYS___BASENAME_A = 0x7DC // 2012 + SYS___DIRNAME_A = 0x7DD // 2013 + SYS___GLOB_A = 0x7DE // 2014 + SYS_FWIDE = 0x7DF // 2015 + SYS___OSNAME = 0x7E0 // 2016 + SYS_____OSNAME_A = 0x7E1 // 2017 + SYS___BTOWC_A = 0x7E4 // 2020 + SYS___WCTOB_A = 0x7E5 // 2021 + SYS___DBM_OPEN_A = 0x7E6 // 2022 + SYS___VFPRINTF2_A = 0x7E7 // 2023 + SYS___VPRINTF2_A = 0x7E8 // 2024 + SYS___VSPRINTF2_A = 0x7E9 // 2025 + SYS___CEIL_H = 0x7EA // 2026 + SYS___FLOOR_H = 0x7EB // 2027 + SYS___MODF_H = 0x7EC // 2028 + SYS___FABS_H = 0x7ED // 2029 + SYS___J0_H = 0x7EE // 2030 + SYS___J1_H = 0x7EF // 2031 + SYS___JN_H = 0x7F0 // 2032 + SYS___Y0_H = 0x7F1 // 2033 + SYS___Y1_H = 0x7F2 // 2034 + SYS___YN_H = 0x7F3 // 2035 + SYS___CEILF_H = 0x7F4 // 2036 + SYS___CEILL_H = 0x7F5 // 2037 + SYS___FLOORF_H = 0x7F6 // 2038 + SYS___FLOORL_H = 0x7F7 // 2039 + SYS___MODFF_H = 0x7F8 // 2040 + SYS___MODFL_H = 0x7F9 // 2041 + SYS___FABSF_H = 0x7FA // 2042 + SYS___FABSL_H = 0x7FB // 2043 + SYS___MALLOC24 = 0x7FC // 2044 + SYS___MALLOC31 = 0x7FD // 2045 + SYS_ACL_INIT = 0x7FE // 2046 + SYS_ACL_FREE = 0x7FF // 2047 + SYS_ACL_FIRST_ENTRY = 0x800 // 2048 + SYS_ACL_GET_ENTRY = 0x801 // 2049 + SYS_ACL_VALID = 0x802 // 2050 + SYS_ACL_CREATE_ENTRY = 0x803 // 2051 + SYS_ACL_DELETE_ENTRY = 0x804 // 2052 + SYS_ACL_UPDATE_ENTRY = 0x805 // 2053 + SYS_ACL_DELETE_FD = 0x806 // 2054 + SYS_ACL_DELETE_FILE = 0x807 // 2055 + SYS_ACL_GET_FD = 0x808 // 2056 + SYS_ACL_GET_FILE = 0x809 // 2057 + SYS_ACL_SET_FD = 0x80A // 2058 + SYS_ACL_SET_FILE = 0x80B // 2059 + SYS_ACL_FROM_TEXT = 0x80C // 2060 + SYS_ACL_TO_TEXT = 0x80D // 2061 + SYS_ACL_SORT = 0x80E // 2062 + SYS___SHUTDOWN_REGISTRATION = 0x80F // 2063 + SYS___ERFL_B = 0x810 // 2064 + SYS___ERFCL_B = 0x811 // 2065 + SYS___LGAMMAL_B = 0x812 // 2066 + SYS___SETHOOKEVENTS = 0x813 // 2067 + SYS_IF_NAMETOINDEX = 0x814 // 2068 + SYS_IF_INDEXTONAME = 0x815 // 2069 + SYS_IF_NAMEINDEX = 0x816 // 2070 + SYS_IF_FREENAMEINDEX = 0x817 // 2071 + SYS_GETADDRINFO = 0x818 // 2072 + SYS_GETNAMEINFO = 0x819 // 2073 + SYS_FREEADDRINFO = 0x81A // 2074 + SYS_GAI_STRERROR = 0x81B // 2075 + SYS_REXEC_AF = 0x81C // 2076 + SYS___POE = 0x81D // 2077 + SYS___DYNALLOC_A = 0x81F // 2079 + SYS___DYNFREE_A = 0x820 // 2080 + SYS___RES_QUERY_A = 0x821 // 2081 + SYS___RES_SEARCH_A = 0x822 // 2082 + SYS___RES_QUERYDOMAIN_A = 0x823 // 2083 + SYS___RES_MKQUERY_A = 0x824 // 2084 + SYS___RES_SEND_A = 0x825 // 2085 + SYS___DN_EXPAND_A = 0x826 // 2086 + SYS___DN_SKIPNAME_A = 0x827 // 2087 + SYS___DN_COMP_A = 0x828 // 2088 + SYS___DN_FIND_A = 0x829 // 2089 + SYS___NLIST_A = 0x82A // 2090 + SYS_____TCGETCP_A = 0x82B // 2091 + SYS_____TCSETCP_A = 0x82C // 2092 + SYS_____W_PIOCTL_A = 0x82E // 2094 + SYS___INET_ADDR_A = 0x82F // 2095 + SYS___INET_NTOA_A = 0x830 // 2096 + SYS___INET_NETWORK_A = 0x831 // 2097 + SYS___ACCEPT_A = 0x832 // 2098 + SYS___ACCEPT_AND_RECV_A = 0x833 // 2099 + SYS___BIND_A = 0x834 // 2100 + SYS___CONNECT_A = 0x835 // 2101 + SYS___GETPEERNAME_A = 0x836 // 2102 + SYS___GETSOCKNAME_A = 0x837 // 2103 + SYS___RECVFROM_A = 0x838 // 2104 + SYS___SENDTO_A = 0x839 // 2105 + SYS___SENDMSG_A = 0x83A // 2106 + SYS___RECVMSG_A = 0x83B // 2107 + SYS_____LCHATTR_A = 0x83C // 2108 + SYS___CABEND = 0x83D // 2109 + SYS___LE_CIB_GET = 0x83E // 2110 + SYS___SET_LAA_FOR_JIT = 0x83F // 2111 + SYS___LCHATTR = 0x840 // 2112 + SYS___WRITEDOWN = 0x841 // 2113 + SYS_PTHREAD_MUTEX_INIT2 = 0x842 // 2114 + SYS___ACOSHF_B = 0x843 // 2115 + SYS___ACOSHL_B = 0x844 // 2116 + SYS___ASINHF_B = 0x845 // 2117 + SYS___ASINHL_B = 0x846 // 2118 + SYS___ATANHF_B = 0x847 // 2119 + SYS___ATANHL_B = 0x848 // 2120 + SYS___CBRTF_B = 0x849 // 2121 + SYS___CBRTL_B = 0x84A // 2122 + SYS___COPYSIGNF_B = 0x84B // 2123 + SYS___COPYSIGNL_B = 0x84C // 2124 + SYS___COTANF_B = 0x84D // 2125 + SYS___COTAN_B = 0x84E // 2126 + SYS___COTANL_B = 0x84F // 2127 + SYS___EXP2F_B = 0x850 // 2128 + SYS___EXP2L_B = 0x851 // 2129 + SYS___EXPM1F_B = 0x852 // 2130 + SYS___EXPM1L_B = 0x853 // 2131 + SYS___FDIMF_B = 0x854 // 2132 + SYS___FDIM_B = 0x855 // 2133 + SYS___FDIML_B = 0x856 // 2134 + SYS___HYPOTF_B = 0x857 // 2135 + SYS___HYPOTL_B = 0x858 // 2136 + SYS___LOG1PF_B = 0x859 // 2137 + SYS___LOG1PL_B = 0x85A // 2138 + SYS___LOG2F_B = 0x85B // 2139 + SYS___LOG2_B = 0x85C // 2140 + SYS___LOG2L_B = 0x85D // 2141 + SYS___REMAINDERF_B = 0x85E // 2142 + SYS___REMAINDERL_B = 0x85F // 2143 + SYS___REMQUOF_B = 0x860 // 2144 + SYS___REMQUO_B = 0x861 // 2145 + SYS___REMQUOL_B = 0x862 // 2146 + SYS___TGAMMAF_B = 0x863 // 2147 + SYS___TGAMMA_B = 0x864 // 2148 + SYS___TGAMMAL_B = 0x865 // 2149 + SYS___TRUNCF_B = 0x866 // 2150 + SYS___TRUNC_B = 0x867 // 2151 + SYS___TRUNCL_B = 0x868 // 2152 + SYS___LGAMMAF_B = 0x869 // 2153 + SYS___LROUNDF_B = 0x86A // 2154 + SYS___LROUND_B = 0x86B // 2155 + SYS___ERFF_B = 0x86C // 2156 + SYS___ERFCF_B = 0x86D // 2157 + SYS_ACOSHF = 0x86E // 2158 + SYS_ACOSHL = 0x86F // 2159 + SYS_ASINHF = 0x870 // 2160 + SYS_ASINHL = 0x871 // 2161 + SYS_ATANHF = 0x872 // 2162 + SYS_ATANHL = 0x873 // 2163 + SYS_CBRTF = 0x874 // 2164 + SYS_CBRTL = 0x875 // 2165 + SYS_COPYSIGNF = 0x876 // 2166 + SYS_CPYSIGNF = 0x876 // 2166 + SYS_COPYSIGNL = 0x877 // 2167 + SYS_CPYSIGNL = 0x877 // 2167 + SYS_COTANF = 0x878 // 2168 + SYS___COTANF = 0x878 // 2168 + SYS_COTAN = 0x879 // 2169 + SYS___COTAN = 0x879 // 2169 + SYS_COTANL = 0x87A // 2170 + SYS___COTANL = 0x87A // 2170 + SYS_EXP2F = 0x87B // 2171 + SYS_EXP2L = 0x87C // 2172 + SYS_EXPM1F = 0x87D // 2173 + SYS_EXPM1L = 0x87E // 2174 + SYS_FDIMF = 0x87F // 2175 + SYS_FDIM = 0x881 // 2177 + SYS_FDIML = 0x882 // 2178 + SYS_HYPOTF = 0x883 // 2179 + SYS_HYPOTL = 0x884 // 2180 + SYS_LOG1PF = 0x885 // 2181 + SYS_LOG1PL = 0x886 // 2182 + SYS_LOG2F = 0x887 // 2183 + SYS_LOG2 = 0x888 // 2184 + SYS_LOG2L = 0x889 // 2185 + SYS_REMAINDERF = 0x88A // 2186 + SYS_REMAINDF = 0x88A // 2186 + SYS_REMAINDERL = 0x88B // 2187 + SYS_REMAINDL = 0x88B // 2187 + SYS_REMQUOF = 0x88C // 2188 + SYS_REMQUO = 0x88D // 2189 + SYS_REMQUOL = 0x88E // 2190 + SYS_TGAMMAF = 0x88F // 2191 + SYS_TGAMMA = 0x890 // 2192 + SYS_TGAMMAL = 0x891 // 2193 + SYS_TRUNCF = 0x892 // 2194 + SYS_TRUNC = 0x893 // 2195 + SYS_TRUNCL = 0x894 // 2196 + SYS_LGAMMAF = 0x895 // 2197 + SYS_LGAMMAL = 0x896 // 2198 + SYS_LROUNDF = 0x897 // 2199 + SYS_LROUND = 0x898 // 2200 + SYS_ERFF = 0x899 // 2201 + SYS_ERFL = 0x89A // 2202 + SYS_ERFCF = 0x89B // 2203 + SYS_ERFCL = 0x89C // 2204 + SYS___EXP2_B = 0x89D // 2205 + SYS_EXP2 = 0x89E // 2206 + SYS___FAR_JUMP = 0x89F // 2207 + SYS___TCGETATTR_A = 0x8A1 // 2209 + SYS___TCSETATTR_A = 0x8A2 // 2210 + SYS___SUPERKILL = 0x8A4 // 2212 + SYS___LE_CONDITION_TOKEN_BUILD = 0x8A5 // 2213 + SYS___LE_MSG_ADD_INSERT = 0x8A6 // 2214 + SYS___LE_MSG_GET = 0x8A7 // 2215 + SYS___LE_MSG_GET_AND_WRITE = 0x8A8 // 2216 + SYS___LE_MSG_WRITE = 0x8A9 // 2217 + SYS___ITOA = 0x8AA // 2218 + SYS___UTOA = 0x8AB // 2219 + SYS___LTOA = 0x8AC // 2220 + SYS___ULTOA = 0x8AD // 2221 + SYS___LLTOA = 0x8AE // 2222 + SYS___ULLTOA = 0x8AF // 2223 + SYS___ITOA_A = 0x8B0 // 2224 + SYS___UTOA_A = 0x8B1 // 2225 + SYS___LTOA_A = 0x8B2 // 2226 + SYS___ULTOA_A = 0x8B3 // 2227 + SYS___LLTOA_A = 0x8B4 // 2228 + SYS___ULLTOA_A = 0x8B5 // 2229 + SYS_____GETENV_A = 0x8C3 // 2243 + SYS___REXEC_A = 0x8C4 // 2244 + SYS___REXEC_AF_A = 0x8C5 // 2245 + SYS___GETUTXENT_A = 0x8C6 // 2246 + SYS___GETUTXID_A = 0x8C7 // 2247 + SYS___GETUTXLINE_A = 0x8C8 // 2248 + SYS___PUTUTXLINE_A = 0x8C9 // 2249 + SYS_____UTMPXNAME_A = 0x8CA // 2250 + SYS___PUTC_UNLOCKED_A = 0x8CB // 2251 + SYS___PUTCHAR_UNLOCKED_A = 0x8CC // 2252 + SYS___SNPRINTF_A = 0x8CD // 2253 + SYS___VSNPRINTF_A = 0x8CE // 2254 + SYS___DLOPEN_A = 0x8D0 // 2256 + SYS___DLSYM_A = 0x8D1 // 2257 + SYS___DLERROR_A = 0x8D2 // 2258 + SYS_FLOCKFILE = 0x8D3 // 2259 + SYS_FTRYLOCKFILE = 0x8D4 // 2260 + SYS_FUNLOCKFILE = 0x8D5 // 2261 + SYS_GETC_UNLOCKED = 0x8D6 // 2262 + SYS_GETCHAR_UNLOCKED = 0x8D7 // 2263 + SYS_PUTC_UNLOCKED = 0x8D8 // 2264 + SYS_PUTCHAR_UNLOCKED = 0x8D9 // 2265 + SYS_SNPRINTF = 0x8DA // 2266 + SYS_VSNPRINTF = 0x8DB // 2267 + SYS_DLOPEN = 0x8DD // 2269 + SYS_DLSYM = 0x8DE // 2270 + SYS_DLCLOSE = 0x8DF // 2271 + SYS_DLERROR = 0x8E0 // 2272 + SYS___SET_EXCEPTION_HANDLER = 0x8E2 // 2274 + SYS___RESET_EXCEPTION_HANDLER = 0x8E3 // 2275 + SYS___VHM_EVENT = 0x8E4 // 2276 + SYS___ABS_H = 0x8E6 // 2278 + SYS___ABSF_H = 0x8E7 // 2279 + SYS___ABSL_H = 0x8E8 // 2280 + SYS___ACOS_H = 0x8E9 // 2281 + SYS___ACOSF_H = 0x8EA // 2282 + SYS___ACOSL_H = 0x8EB // 2283 + SYS___ACOSH_H = 0x8EC // 2284 + SYS___ASIN_H = 0x8ED // 2285 + SYS___ASINF_H = 0x8EE // 2286 + SYS___ASINL_H = 0x8EF // 2287 + SYS___ASINH_H = 0x8F0 // 2288 + SYS___ATAN_H = 0x8F1 // 2289 + SYS___ATANF_H = 0x8F2 // 2290 + SYS___ATANL_H = 0x8F3 // 2291 + SYS___ATANH_H = 0x8F4 // 2292 + SYS___ATANHF_H = 0x8F5 // 2293 + SYS___ATANHL_H = 0x8F6 // 2294 + SYS___ATAN2_H = 0x8F7 // 2295 + SYS___ATAN2F_H = 0x8F8 // 2296 + SYS___ATAN2L_H = 0x8F9 // 2297 + SYS___CBRT_H = 0x8FA // 2298 + SYS___COPYSIGNF_H = 0x8FB // 2299 + SYS___COPYSIGNL_H = 0x8FC // 2300 + SYS___COS_H = 0x8FD // 2301 + SYS___COSF_H = 0x8FE // 2302 + SYS___COSL_H = 0x8FF // 2303 + SYS___COSHF_H = 0x900 // 2304 + SYS___COSHL_H = 0x901 // 2305 + SYS___COTAN_H = 0x902 // 2306 + SYS___COTANF_H = 0x903 // 2307 + SYS___COTANL_H = 0x904 // 2308 + SYS___ERF_H = 0x905 // 2309 + SYS___ERFF_H = 0x906 // 2310 + SYS___ERFL_H = 0x907 // 2311 + SYS___ERFC_H = 0x908 // 2312 + SYS___ERFCF_H = 0x909 // 2313 + SYS___ERFCL_H = 0x90A // 2314 + SYS___EXP_H = 0x90B // 2315 + SYS___EXPF_H = 0x90C // 2316 + SYS___EXPL_H = 0x90D // 2317 + SYS___EXPM1_H = 0x90E // 2318 + SYS___FDIM_H = 0x90F // 2319 + SYS___FDIMF_H = 0x910 // 2320 + SYS___FDIML_H = 0x911 // 2321 + SYS___FMOD_H = 0x912 // 2322 + SYS___FMODF_H = 0x913 // 2323 + SYS___FMODL_H = 0x914 // 2324 + SYS___GAMMA_H = 0x915 // 2325 + SYS___HYPOT_H = 0x916 // 2326 + SYS___ILOGB_H = 0x917 // 2327 + SYS___LGAMMA_H = 0x918 // 2328 + SYS___LGAMMAF_H = 0x919 // 2329 + SYS___LOG_H = 0x91A // 2330 + SYS___LOGF_H = 0x91B // 2331 + SYS___LOGL_H = 0x91C // 2332 + SYS___LOGB_H = 0x91D // 2333 + SYS___LOG2_H = 0x91E // 2334 + SYS___LOG2F_H = 0x91F // 2335 + SYS___LOG2L_H = 0x920 // 2336 + SYS___LOG1P_H = 0x921 // 2337 + SYS___LOG10_H = 0x922 // 2338 + SYS___LOG10F_H = 0x923 // 2339 + SYS___LOG10L_H = 0x924 // 2340 + SYS___LROUND_H = 0x925 // 2341 + SYS___LROUNDF_H = 0x926 // 2342 + SYS___NEXTAFTER_H = 0x927 // 2343 + SYS___POW_H = 0x928 // 2344 + SYS___POWF_H = 0x929 // 2345 + SYS___POWL_H = 0x92A // 2346 + SYS___REMAINDER_H = 0x92B // 2347 + SYS___RINT_H = 0x92C // 2348 + SYS___SCALB_H = 0x92D // 2349 + SYS___SIN_H = 0x92E // 2350 + SYS___SINF_H = 0x92F // 2351 + SYS___SINL_H = 0x930 // 2352 + SYS___SINH_H = 0x931 // 2353 + SYS___SINHF_H = 0x932 // 2354 + SYS___SINHL_H = 0x933 // 2355 + SYS___SQRT_H = 0x934 // 2356 + SYS___SQRTF_H = 0x935 // 2357 + SYS___SQRTL_H = 0x936 // 2358 + SYS___TAN_H = 0x937 // 2359 + SYS___TANF_H = 0x938 // 2360 + SYS___TANL_H = 0x939 // 2361 + SYS___TANH_H = 0x93A // 2362 + SYS___TANHF_H = 0x93B // 2363 + SYS___TANHL_H = 0x93C // 2364 + SYS___TGAMMA_H = 0x93D // 2365 + SYS___TGAMMAF_H = 0x93E // 2366 + SYS___TRUNC_H = 0x93F // 2367 + SYS___TRUNCF_H = 0x940 // 2368 + SYS___TRUNCL_H = 0x941 // 2369 + SYS___COSH_H = 0x942 // 2370 + SYS___LE_DEBUG_SET_RESUME_MCH = 0x943 // 2371 + SYS_VFSCANF = 0x944 // 2372 + SYS_VSCANF = 0x946 // 2374 + SYS_VSSCANF = 0x948 // 2376 + SYS_VFWSCANF = 0x94A // 2378 + SYS_VWSCANF = 0x94C // 2380 + SYS_VSWSCANF = 0x94E // 2382 + SYS_IMAXABS = 0x950 // 2384 + SYS_IMAXDIV = 0x951 // 2385 + SYS_STRTOIMAX = 0x952 // 2386 + SYS_STRTOUMAX = 0x953 // 2387 + SYS_WCSTOIMAX = 0x954 // 2388 + SYS_WCSTOUMAX = 0x955 // 2389 + SYS_ATOLL = 0x956 // 2390 + SYS_STRTOF = 0x957 // 2391 + SYS_STRTOLD = 0x958 // 2392 + SYS_WCSTOF = 0x959 // 2393 + SYS_WCSTOLD = 0x95A // 2394 + SYS_INET6_RTH_SPACE = 0x95B // 2395 + SYS_INET6_RTH_INIT = 0x95C // 2396 + SYS_INET6_RTH_ADD = 0x95D // 2397 + SYS_INET6_RTH_REVERSE = 0x95E // 2398 + SYS_INET6_RTH_SEGMENTS = 0x95F // 2399 + SYS_INET6_RTH_GETADDR = 0x960 // 2400 + SYS_INET6_OPT_INIT = 0x961 // 2401 + SYS_INET6_OPT_APPEND = 0x962 // 2402 + SYS_INET6_OPT_FINISH = 0x963 // 2403 + SYS_INET6_OPT_SET_VAL = 0x964 // 2404 + SYS_INET6_OPT_NEXT = 0x965 // 2405 + SYS_INET6_OPT_FIND = 0x966 // 2406 + SYS_INET6_OPT_GET_VAL = 0x967 // 2407 + SYS___POW_I = 0x987 // 2439 + SYS___POW_I_B = 0x988 // 2440 + SYS___POW_I_H = 0x989 // 2441 + SYS___POW_II = 0x98A // 2442 + SYS___POW_II_B = 0x98B // 2443 + SYS___POW_II_H = 0x98C // 2444 + SYS_CABS = 0x98E // 2446 + SYS___CABS_B = 0x98F // 2447 + SYS___CABS_H = 0x990 // 2448 + SYS_CABSF = 0x991 // 2449 + SYS___CABSF_B = 0x992 // 2450 + SYS___CABSF_H = 0x993 // 2451 + SYS_CABSL = 0x994 // 2452 + SYS___CABSL_B = 0x995 // 2453 + SYS___CABSL_H = 0x996 // 2454 + SYS_CACOS = 0x997 // 2455 + SYS___CACOS_B = 0x998 // 2456 + SYS___CACOS_H = 0x999 // 2457 + SYS_CACOSF = 0x99A // 2458 + SYS___CACOSF_B = 0x99B // 2459 + SYS___CACOSF_H = 0x99C // 2460 + SYS_CACOSL = 0x99D // 2461 + SYS___CACOSL_B = 0x99E // 2462 + SYS___CACOSL_H = 0x99F // 2463 + SYS_CACOSH = 0x9A0 // 2464 + SYS___CACOSH_B = 0x9A1 // 2465 + SYS___CACOSH_H = 0x9A2 // 2466 + SYS_CACOSHF = 0x9A3 // 2467 + SYS___CACOSHF_B = 0x9A4 // 2468 + SYS___CACOSHF_H = 0x9A5 // 2469 + SYS_CACOSHL = 0x9A6 // 2470 + SYS___CACOSHL_B = 0x9A7 // 2471 + SYS___CACOSHL_H = 0x9A8 // 2472 + SYS_CARG = 0x9A9 // 2473 + SYS___CARG_B = 0x9AA // 2474 + SYS___CARG_H = 0x9AB // 2475 + SYS_CARGF = 0x9AC // 2476 + SYS___CARGF_B = 0x9AD // 2477 + SYS___CARGF_H = 0x9AE // 2478 + SYS_CARGL = 0x9AF // 2479 + SYS___CARGL_B = 0x9B0 // 2480 + SYS___CARGL_H = 0x9B1 // 2481 + SYS_CASIN = 0x9B2 // 2482 + SYS___CASIN_B = 0x9B3 // 2483 + SYS___CASIN_H = 0x9B4 // 2484 + SYS_CASINF = 0x9B5 // 2485 + SYS___CASINF_B = 0x9B6 // 2486 + SYS___CASINF_H = 0x9B7 // 2487 + SYS_CASINL = 0x9B8 // 2488 + SYS___CASINL_B = 0x9B9 // 2489 + SYS___CASINL_H = 0x9BA // 2490 + SYS_CASINH = 0x9BB // 2491 + SYS___CASINH_B = 0x9BC // 2492 + SYS___CASINH_H = 0x9BD // 2493 + SYS_CASINHF = 0x9BE // 2494 + SYS___CASINHF_B = 0x9BF // 2495 + SYS___CASINHF_H = 0x9C0 // 2496 + SYS_CASINHL = 0x9C1 // 2497 + SYS___CASINHL_B = 0x9C2 // 2498 + SYS___CASINHL_H = 0x9C3 // 2499 + SYS_CATAN = 0x9C4 // 2500 + SYS___CATAN_B = 0x9C5 // 2501 + SYS___CATAN_H = 0x9C6 // 2502 + SYS_CATANF = 0x9C7 // 2503 + SYS___CATANF_B = 0x9C8 // 2504 + SYS___CATANF_H = 0x9C9 // 2505 + SYS_CATANL = 0x9CA // 2506 + SYS___CATANL_B = 0x9CB // 2507 + SYS___CATANL_H = 0x9CC // 2508 + SYS_CATANH = 0x9CD // 2509 + SYS___CATANH_B = 0x9CE // 2510 + SYS___CATANH_H = 0x9CF // 2511 + SYS_CATANHF = 0x9D0 // 2512 + SYS___CATANHF_B = 0x9D1 // 2513 + SYS___CATANHF_H = 0x9D2 // 2514 + SYS_CATANHL = 0x9D3 // 2515 + SYS___CATANHL_B = 0x9D4 // 2516 + SYS___CATANHL_H = 0x9D5 // 2517 + SYS_CCOS = 0x9D6 // 2518 + SYS___CCOS_B = 0x9D7 // 2519 + SYS___CCOS_H = 0x9D8 // 2520 + SYS_CCOSF = 0x9D9 // 2521 + SYS___CCOSF_B = 0x9DA // 2522 + SYS___CCOSF_H = 0x9DB // 2523 + SYS_CCOSL = 0x9DC // 2524 + SYS___CCOSL_B = 0x9DD // 2525 + SYS___CCOSL_H = 0x9DE // 2526 + SYS_CCOSH = 0x9DF // 2527 + SYS___CCOSH_B = 0x9E0 // 2528 + SYS___CCOSH_H = 0x9E1 // 2529 + SYS_CCOSHF = 0x9E2 // 2530 + SYS___CCOSHF_B = 0x9E3 // 2531 + SYS___CCOSHF_H = 0x9E4 // 2532 + SYS_CCOSHL = 0x9E5 // 2533 + SYS___CCOSHL_B = 0x9E6 // 2534 + SYS___CCOSHL_H = 0x9E7 // 2535 + SYS_CEXP = 0x9E8 // 2536 + SYS___CEXP_B = 0x9E9 // 2537 + SYS___CEXP_H = 0x9EA // 2538 + SYS_CEXPF = 0x9EB // 2539 + SYS___CEXPF_B = 0x9EC // 2540 + SYS___CEXPF_H = 0x9ED // 2541 + SYS_CEXPL = 0x9EE // 2542 + SYS___CEXPL_B = 0x9EF // 2543 + SYS___CEXPL_H = 0x9F0 // 2544 + SYS_CIMAG = 0x9F1 // 2545 + SYS___CIMAG_B = 0x9F2 // 2546 + SYS___CIMAG_H = 0x9F3 // 2547 + SYS_CIMAGF = 0x9F4 // 2548 + SYS___CIMAGF_B = 0x9F5 // 2549 + SYS___CIMAGF_H = 0x9F6 // 2550 + SYS_CIMAGL = 0x9F7 // 2551 + SYS___CIMAGL_B = 0x9F8 // 2552 + SYS___CIMAGL_H = 0x9F9 // 2553 + SYS___CLOG = 0x9FA // 2554 + SYS___CLOG_B = 0x9FB // 2555 + SYS___CLOG_H = 0x9FC // 2556 + SYS_CLOGF = 0x9FD // 2557 + SYS___CLOGF_B = 0x9FE // 2558 + SYS___CLOGF_H = 0x9FF // 2559 + SYS_CLOGL = 0xA00 // 2560 + SYS___CLOGL_B = 0xA01 // 2561 + SYS___CLOGL_H = 0xA02 // 2562 + SYS_CONJ = 0xA03 // 2563 + SYS___CONJ_B = 0xA04 // 2564 + SYS___CONJ_H = 0xA05 // 2565 + SYS_CONJF = 0xA06 // 2566 + SYS___CONJF_B = 0xA07 // 2567 + SYS___CONJF_H = 0xA08 // 2568 + SYS_CONJL = 0xA09 // 2569 + SYS___CONJL_B = 0xA0A // 2570 + SYS___CONJL_H = 0xA0B // 2571 + SYS_CPOW = 0xA0C // 2572 + SYS___CPOW_B = 0xA0D // 2573 + SYS___CPOW_H = 0xA0E // 2574 + SYS_CPOWF = 0xA0F // 2575 + SYS___CPOWF_B = 0xA10 // 2576 + SYS___CPOWF_H = 0xA11 // 2577 + SYS_CPOWL = 0xA12 // 2578 + SYS___CPOWL_B = 0xA13 // 2579 + SYS___CPOWL_H = 0xA14 // 2580 + SYS_CPROJ = 0xA15 // 2581 + SYS___CPROJ_B = 0xA16 // 2582 + SYS___CPROJ_H = 0xA17 // 2583 + SYS_CPROJF = 0xA18 // 2584 + SYS___CPROJF_B = 0xA19 // 2585 + SYS___CPROJF_H = 0xA1A // 2586 + SYS_CPROJL = 0xA1B // 2587 + SYS___CPROJL_B = 0xA1C // 2588 + SYS___CPROJL_H = 0xA1D // 2589 + SYS_CREAL = 0xA1E // 2590 + SYS___CREAL_B = 0xA1F // 2591 + SYS___CREAL_H = 0xA20 // 2592 + SYS_CREALF = 0xA21 // 2593 + SYS___CREALF_B = 0xA22 // 2594 + SYS___CREALF_H = 0xA23 // 2595 + SYS_CREALL = 0xA24 // 2596 + SYS___CREALL_B = 0xA25 // 2597 + SYS___CREALL_H = 0xA26 // 2598 + SYS_CSIN = 0xA27 // 2599 + SYS___CSIN_B = 0xA28 // 2600 + SYS___CSIN_H = 0xA29 // 2601 + SYS_CSINF = 0xA2A // 2602 + SYS___CSINF_B = 0xA2B // 2603 + SYS___CSINF_H = 0xA2C // 2604 + SYS_CSINL = 0xA2D // 2605 + SYS___CSINL_B = 0xA2E // 2606 + SYS___CSINL_H = 0xA2F // 2607 + SYS_CSINH = 0xA30 // 2608 + SYS___CSINH_B = 0xA31 // 2609 + SYS___CSINH_H = 0xA32 // 2610 + SYS_CSINHF = 0xA33 // 2611 + SYS___CSINHF_B = 0xA34 // 2612 + SYS___CSINHF_H = 0xA35 // 2613 + SYS_CSINHL = 0xA36 // 2614 + SYS___CSINHL_B = 0xA37 // 2615 + SYS___CSINHL_H = 0xA38 // 2616 + SYS_CSQRT = 0xA39 // 2617 + SYS___CSQRT_B = 0xA3A // 2618 + SYS___CSQRT_H = 0xA3B // 2619 + SYS_CSQRTF = 0xA3C // 2620 + SYS___CSQRTF_B = 0xA3D // 2621 + SYS___CSQRTF_H = 0xA3E // 2622 + SYS_CSQRTL = 0xA3F // 2623 + SYS___CSQRTL_B = 0xA40 // 2624 + SYS___CSQRTL_H = 0xA41 // 2625 + SYS_CTAN = 0xA42 // 2626 + SYS___CTAN_B = 0xA43 // 2627 + SYS___CTAN_H = 0xA44 // 2628 + SYS_CTANF = 0xA45 // 2629 + SYS___CTANF_B = 0xA46 // 2630 + SYS___CTANF_H = 0xA47 // 2631 + SYS_CTANL = 0xA48 // 2632 + SYS___CTANL_B = 0xA49 // 2633 + SYS___CTANL_H = 0xA4A // 2634 + SYS_CTANH = 0xA4B // 2635 + SYS___CTANH_B = 0xA4C // 2636 + SYS___CTANH_H = 0xA4D // 2637 + SYS_CTANHF = 0xA4E // 2638 + SYS___CTANHF_B = 0xA4F // 2639 + SYS___CTANHF_H = 0xA50 // 2640 + SYS_CTANHL = 0xA51 // 2641 + SYS___CTANHL_B = 0xA52 // 2642 + SYS___CTANHL_H = 0xA53 // 2643 + SYS___ACOSHF_H = 0xA54 // 2644 + SYS___ACOSHL_H = 0xA55 // 2645 + SYS___ASINHF_H = 0xA56 // 2646 + SYS___ASINHL_H = 0xA57 // 2647 + SYS___CBRTF_H = 0xA58 // 2648 + SYS___CBRTL_H = 0xA59 // 2649 + SYS___COPYSIGN_B = 0xA5A // 2650 + SYS___EXPM1F_H = 0xA5B // 2651 + SYS___EXPM1L_H = 0xA5C // 2652 + SYS___EXP2_H = 0xA5D // 2653 + SYS___EXP2F_H = 0xA5E // 2654 + SYS___EXP2L_H = 0xA5F // 2655 + SYS___LOG1PF_H = 0xA60 // 2656 + SYS___LOG1PL_H = 0xA61 // 2657 + SYS___LGAMMAL_H = 0xA62 // 2658 + SYS_FMA = 0xA63 // 2659 + SYS___FMA_B = 0xA64 // 2660 + SYS___FMA_H = 0xA65 // 2661 + SYS_FMAF = 0xA66 // 2662 + SYS___FMAF_B = 0xA67 // 2663 + SYS___FMAF_H = 0xA68 // 2664 + SYS_FMAL = 0xA69 // 2665 + SYS___FMAL_B = 0xA6A // 2666 + SYS___FMAL_H = 0xA6B // 2667 + SYS_FMAX = 0xA6C // 2668 + SYS___FMAX_B = 0xA6D // 2669 + SYS___FMAX_H = 0xA6E // 2670 + SYS_FMAXF = 0xA6F // 2671 + SYS___FMAXF_B = 0xA70 // 2672 + SYS___FMAXF_H = 0xA71 // 2673 + SYS_FMAXL = 0xA72 // 2674 + SYS___FMAXL_B = 0xA73 // 2675 + SYS___FMAXL_H = 0xA74 // 2676 + SYS_FMIN = 0xA75 // 2677 + SYS___FMIN_B = 0xA76 // 2678 + SYS___FMIN_H = 0xA77 // 2679 + SYS_FMINF = 0xA78 // 2680 + SYS___FMINF_B = 0xA79 // 2681 + SYS___FMINF_H = 0xA7A // 2682 + SYS_FMINL = 0xA7B // 2683 + SYS___FMINL_B = 0xA7C // 2684 + SYS___FMINL_H = 0xA7D // 2685 + SYS_ILOGBF = 0xA7E // 2686 + SYS___ILOGBF_B = 0xA7F // 2687 + SYS___ILOGBF_H = 0xA80 // 2688 + SYS_ILOGBL = 0xA81 // 2689 + SYS___ILOGBL_B = 0xA82 // 2690 + SYS___ILOGBL_H = 0xA83 // 2691 + SYS_LLRINT = 0xA84 // 2692 + SYS___LLRINT_B = 0xA85 // 2693 + SYS___LLRINT_H = 0xA86 // 2694 + SYS_LLRINTF = 0xA87 // 2695 + SYS___LLRINTF_B = 0xA88 // 2696 + SYS___LLRINTF_H = 0xA89 // 2697 + SYS_LLRINTL = 0xA8A // 2698 + SYS___LLRINTL_B = 0xA8B // 2699 + SYS___LLRINTL_H = 0xA8C // 2700 + SYS_LLROUND = 0xA8D // 2701 + SYS___LLROUND_B = 0xA8E // 2702 + SYS___LLROUND_H = 0xA8F // 2703 + SYS_LLROUNDF = 0xA90 // 2704 + SYS___LLROUNDF_B = 0xA91 // 2705 + SYS___LLROUNDF_H = 0xA92 // 2706 + SYS_LLROUNDL = 0xA93 // 2707 + SYS___LLROUNDL_B = 0xA94 // 2708 + SYS___LLROUNDL_H = 0xA95 // 2709 + SYS_LOGBF = 0xA96 // 2710 + SYS___LOGBF_B = 0xA97 // 2711 + SYS___LOGBF_H = 0xA98 // 2712 + SYS_LOGBL = 0xA99 // 2713 + SYS___LOGBL_B = 0xA9A // 2714 + SYS___LOGBL_H = 0xA9B // 2715 + SYS_LRINT = 0xA9C // 2716 + SYS___LRINT_B = 0xA9D // 2717 + SYS___LRINT_H = 0xA9E // 2718 + SYS_LRINTF = 0xA9F // 2719 + SYS___LRINTF_B = 0xAA0 // 2720 + SYS___LRINTF_H = 0xAA1 // 2721 + SYS_LRINTL = 0xAA2 // 2722 + SYS___LRINTL_B = 0xAA3 // 2723 + SYS___LRINTL_H = 0xAA4 // 2724 + SYS_LROUNDL = 0xAA5 // 2725 + SYS___LROUNDL_B = 0xAA6 // 2726 + SYS___LROUNDL_H = 0xAA7 // 2727 + SYS_NAN = 0xAA8 // 2728 + SYS___NAN_B = 0xAA9 // 2729 + SYS_NANF = 0xAAA // 2730 + SYS___NANF_B = 0xAAB // 2731 + SYS_NANL = 0xAAC // 2732 + SYS___NANL_B = 0xAAD // 2733 + SYS_NEARBYINT = 0xAAE // 2734 + SYS___NEARBYINT_B = 0xAAF // 2735 + SYS___NEARBYINT_H = 0xAB0 // 2736 + SYS_NEARBYINTF = 0xAB1 // 2737 + SYS___NEARBYINTF_B = 0xAB2 // 2738 + SYS___NEARBYINTF_H = 0xAB3 // 2739 + SYS_NEARBYINTL = 0xAB4 // 2740 + SYS___NEARBYINTL_B = 0xAB5 // 2741 + SYS___NEARBYINTL_H = 0xAB6 // 2742 + SYS_NEXTAFTERF = 0xAB7 // 2743 + SYS___NEXTAFTERF_B = 0xAB8 // 2744 + SYS___NEXTAFTERF_H = 0xAB9 // 2745 + SYS_NEXTAFTERL = 0xABA // 2746 + SYS___NEXTAFTERL_B = 0xABB // 2747 + SYS___NEXTAFTERL_H = 0xABC // 2748 + SYS_NEXTTOWARD = 0xABD // 2749 + SYS___NEXTTOWARD_B = 0xABE // 2750 + SYS___NEXTTOWARD_H = 0xABF // 2751 + SYS_NEXTTOWARDF = 0xAC0 // 2752 + SYS___NEXTTOWARDF_B = 0xAC1 // 2753 + SYS___NEXTTOWARDF_H = 0xAC2 // 2754 + SYS_NEXTTOWARDL = 0xAC3 // 2755 + SYS___NEXTTOWARDL_B = 0xAC4 // 2756 + SYS___NEXTTOWARDL_H = 0xAC5 // 2757 + SYS___REMAINDERF_H = 0xAC6 // 2758 + SYS___REMAINDERL_H = 0xAC7 // 2759 + SYS___REMQUO_H = 0xAC8 // 2760 + SYS___REMQUOF_H = 0xAC9 // 2761 + SYS___REMQUOL_H = 0xACA // 2762 + SYS_RINTF = 0xACB // 2763 + SYS___RINTF_B = 0xACC // 2764 + SYS_RINTL = 0xACD // 2765 + SYS___RINTL_B = 0xACE // 2766 + SYS_ROUND = 0xACF // 2767 + SYS___ROUND_B = 0xAD0 // 2768 + SYS___ROUND_H = 0xAD1 // 2769 + SYS_ROUNDF = 0xAD2 // 2770 + SYS___ROUNDF_B = 0xAD3 // 2771 + SYS___ROUNDF_H = 0xAD4 // 2772 + SYS_ROUNDL = 0xAD5 // 2773 + SYS___ROUNDL_B = 0xAD6 // 2774 + SYS___ROUNDL_H = 0xAD7 // 2775 + SYS_SCALBLN = 0xAD8 // 2776 + SYS___SCALBLN_B = 0xAD9 // 2777 + SYS___SCALBLN_H = 0xADA // 2778 + SYS_SCALBLNF = 0xADB // 2779 + SYS___SCALBLNF_B = 0xADC // 2780 + SYS___SCALBLNF_H = 0xADD // 2781 + SYS_SCALBLNL = 0xADE // 2782 + SYS___SCALBLNL_B = 0xADF // 2783 + SYS___SCALBLNL_H = 0xAE0 // 2784 + SYS___SCALBN_B = 0xAE1 // 2785 + SYS___SCALBN_H = 0xAE2 // 2786 + SYS_SCALBNF = 0xAE3 // 2787 + SYS___SCALBNF_B = 0xAE4 // 2788 + SYS___SCALBNF_H = 0xAE5 // 2789 + SYS_SCALBNL = 0xAE6 // 2790 + SYS___SCALBNL_B = 0xAE7 // 2791 + SYS___SCALBNL_H = 0xAE8 // 2792 + SYS___TGAMMAL_H = 0xAE9 // 2793 + SYS_FECLEAREXCEPT = 0xAEA // 2794 + SYS_FEGETENV = 0xAEB // 2795 + SYS_FEGETEXCEPTFLAG = 0xAEC // 2796 + SYS_FEGETROUND = 0xAED // 2797 + SYS_FEHOLDEXCEPT = 0xAEE // 2798 + SYS_FERAISEEXCEPT = 0xAEF // 2799 + SYS_FESETENV = 0xAF0 // 2800 + SYS_FESETEXCEPTFLAG = 0xAF1 // 2801 + SYS_FESETROUND = 0xAF2 // 2802 + SYS_FETESTEXCEPT = 0xAF3 // 2803 + SYS_FEUPDATEENV = 0xAF4 // 2804 + SYS___COPYSIGN_H = 0xAF5 // 2805 + SYS___HYPOTF_H = 0xAF6 // 2806 + SYS___HYPOTL_H = 0xAF7 // 2807 + SYS___CLASS = 0xAFA // 2810 + SYS___CLASS_B = 0xAFB // 2811 + SYS___CLASS_H = 0xAFC // 2812 + SYS___ISBLANK_A = 0xB2E // 2862 + SYS___ISWBLANK_A = 0xB2F // 2863 + SYS___LROUND_FIXUP = 0xB30 // 2864 + SYS___LROUNDF_FIXUP = 0xB31 // 2865 + SYS_SCHED_YIELD = 0xB32 // 2866 + SYS_STRERROR_R = 0xB33 // 2867 + SYS_UNSETENV = 0xB34 // 2868 + SYS___LGAMMA_H_C99 = 0xB38 // 2872 + SYS___LGAMMA_B_C99 = 0xB39 // 2873 + SYS___LGAMMA_R_C99 = 0xB3A // 2874 + SYS___FTELL2 = 0xB3B // 2875 + SYS___FSEEK2 = 0xB3C // 2876 + SYS___STATIC_REINIT = 0xB3D // 2877 + SYS_PTHREAD_ATTR_GETSTACK = 0xB3E // 2878 + SYS_PTHREAD_ATTR_SETSTACK = 0xB3F // 2879 + SYS___TGAMMA_H_C99 = 0xB78 // 2936 + SYS___TGAMMAF_H_C99 = 0xB79 // 2937 + SYS___LE_TRACEBACK = 0xB7A // 2938 + SYS___MUST_STAY_CLEAN = 0xB7C // 2940 + SYS___O_ENV = 0xB7D // 2941 + SYS_ACOSD32 = 0xB7E // 2942 + SYS_ACOSD64 = 0xB7F // 2943 + SYS_ACOSD128 = 0xB80 // 2944 + SYS_ACOSHD32 = 0xB81 // 2945 + SYS_ACOSHD64 = 0xB82 // 2946 + SYS_ACOSHD128 = 0xB83 // 2947 + SYS_ASIND32 = 0xB84 // 2948 + SYS_ASIND64 = 0xB85 // 2949 + SYS_ASIND128 = 0xB86 // 2950 + SYS_ASINHD32 = 0xB87 // 2951 + SYS_ASINHD64 = 0xB88 // 2952 + SYS_ASINHD128 = 0xB89 // 2953 + SYS_ATAND32 = 0xB8A // 2954 + SYS_ATAND64 = 0xB8B // 2955 + SYS_ATAND128 = 0xB8C // 2956 + SYS_ATAN2D32 = 0xB8D // 2957 + SYS_ATAN2D64 = 0xB8E // 2958 + SYS_ATAN2D128 = 0xB8F // 2959 + SYS_ATANHD32 = 0xB90 // 2960 + SYS_ATANHD64 = 0xB91 // 2961 + SYS_ATANHD128 = 0xB92 // 2962 + SYS_CBRTD32 = 0xB93 // 2963 + SYS_CBRTD64 = 0xB94 // 2964 + SYS_CBRTD128 = 0xB95 // 2965 + SYS_CEILD32 = 0xB96 // 2966 + SYS_CEILD64 = 0xB97 // 2967 + SYS_CEILD128 = 0xB98 // 2968 + SYS___CLASS2 = 0xB99 // 2969 + SYS___CLASS2_B = 0xB9A // 2970 + SYS___CLASS2_H = 0xB9B // 2971 + SYS_COPYSIGND32 = 0xB9C // 2972 + SYS_COPYSIGND64 = 0xB9D // 2973 + SYS_COPYSIGND128 = 0xB9E // 2974 + SYS_COSD32 = 0xB9F // 2975 + SYS_COSD64 = 0xBA0 // 2976 + SYS_COSD128 = 0xBA1 // 2977 + SYS_COSHD32 = 0xBA2 // 2978 + SYS_COSHD64 = 0xBA3 // 2979 + SYS_COSHD128 = 0xBA4 // 2980 + SYS_ERFD32 = 0xBA5 // 2981 + SYS_ERFD64 = 0xBA6 // 2982 + SYS_ERFD128 = 0xBA7 // 2983 + SYS_ERFCD32 = 0xBA8 // 2984 + SYS_ERFCD64 = 0xBA9 // 2985 + SYS_ERFCD128 = 0xBAA // 2986 + SYS_EXPD32 = 0xBAB // 2987 + SYS_EXPD64 = 0xBAC // 2988 + SYS_EXPD128 = 0xBAD // 2989 + SYS_EXP2D32 = 0xBAE // 2990 + SYS_EXP2D64 = 0xBAF // 2991 + SYS_EXP2D128 = 0xBB0 // 2992 + SYS_EXPM1D32 = 0xBB1 // 2993 + SYS_EXPM1D64 = 0xBB2 // 2994 + SYS_EXPM1D128 = 0xBB3 // 2995 + SYS_FABSD32 = 0xBB4 // 2996 + SYS_FABSD64 = 0xBB5 // 2997 + SYS_FABSD128 = 0xBB6 // 2998 + SYS_FDIMD32 = 0xBB7 // 2999 + SYS_FDIMD64 = 0xBB8 // 3000 + SYS_FDIMD128 = 0xBB9 // 3001 + SYS_FE_DEC_GETROUND = 0xBBA // 3002 + SYS_FE_DEC_SETROUND = 0xBBB // 3003 + SYS_FLOORD32 = 0xBBC // 3004 + SYS_FLOORD64 = 0xBBD // 3005 + SYS_FLOORD128 = 0xBBE // 3006 + SYS_FMAD32 = 0xBBF // 3007 + SYS_FMAD64 = 0xBC0 // 3008 + SYS_FMAD128 = 0xBC1 // 3009 + SYS_FMAXD32 = 0xBC2 // 3010 + SYS_FMAXD64 = 0xBC3 // 3011 + SYS_FMAXD128 = 0xBC4 // 3012 + SYS_FMIND32 = 0xBC5 // 3013 + SYS_FMIND64 = 0xBC6 // 3014 + SYS_FMIND128 = 0xBC7 // 3015 + SYS_FMODD32 = 0xBC8 // 3016 + SYS_FMODD64 = 0xBC9 // 3017 + SYS_FMODD128 = 0xBCA // 3018 + SYS___FP_CAST_D = 0xBCB // 3019 + SYS_FREXPD32 = 0xBCC // 3020 + SYS_FREXPD64 = 0xBCD // 3021 + SYS_FREXPD128 = 0xBCE // 3022 + SYS_HYPOTD32 = 0xBCF // 3023 + SYS_HYPOTD64 = 0xBD0 // 3024 + SYS_HYPOTD128 = 0xBD1 // 3025 + SYS_ILOGBD32 = 0xBD2 // 3026 + SYS_ILOGBD64 = 0xBD3 // 3027 + SYS_ILOGBD128 = 0xBD4 // 3028 + SYS_LDEXPD32 = 0xBD5 // 3029 + SYS_LDEXPD64 = 0xBD6 // 3030 + SYS_LDEXPD128 = 0xBD7 // 3031 + SYS_LGAMMAD32 = 0xBD8 // 3032 + SYS_LGAMMAD64 = 0xBD9 // 3033 + SYS_LGAMMAD128 = 0xBDA // 3034 + SYS_LLRINTD32 = 0xBDB // 3035 + SYS_LLRINTD64 = 0xBDC // 3036 + SYS_LLRINTD128 = 0xBDD // 3037 + SYS_LLROUNDD32 = 0xBDE // 3038 + SYS_LLROUNDD64 = 0xBDF // 3039 + SYS_LLROUNDD128 = 0xBE0 // 3040 + SYS_LOGD32 = 0xBE1 // 3041 + SYS_LOGD64 = 0xBE2 // 3042 + SYS_LOGD128 = 0xBE3 // 3043 + SYS_LOG10D32 = 0xBE4 // 3044 + SYS_LOG10D64 = 0xBE5 // 3045 + SYS_LOG10D128 = 0xBE6 // 3046 + SYS_LOG1PD32 = 0xBE7 // 3047 + SYS_LOG1PD64 = 0xBE8 // 3048 + SYS_LOG1PD128 = 0xBE9 // 3049 + SYS_LOG2D32 = 0xBEA // 3050 + SYS_LOG2D64 = 0xBEB // 3051 + SYS_LOG2D128 = 0xBEC // 3052 + SYS_LOGBD32 = 0xBED // 3053 + SYS_LOGBD64 = 0xBEE // 3054 + SYS_LOGBD128 = 0xBEF // 3055 + SYS_LRINTD32 = 0xBF0 // 3056 + SYS_LRINTD64 = 0xBF1 // 3057 + SYS_LRINTD128 = 0xBF2 // 3058 + SYS_LROUNDD32 = 0xBF3 // 3059 + SYS_LROUNDD64 = 0xBF4 // 3060 + SYS_LROUNDD128 = 0xBF5 // 3061 + SYS_MODFD32 = 0xBF6 // 3062 + SYS_MODFD64 = 0xBF7 // 3063 + SYS_MODFD128 = 0xBF8 // 3064 + SYS_NAND32 = 0xBF9 // 3065 + SYS_NAND64 = 0xBFA // 3066 + SYS_NAND128 = 0xBFB // 3067 + SYS_NEARBYINTD32 = 0xBFC // 3068 + SYS_NEARBYINTD64 = 0xBFD // 3069 + SYS_NEARBYINTD128 = 0xBFE // 3070 + SYS_NEXTAFTERD32 = 0xBFF // 3071 + SYS_NEXTAFTERD64 = 0xC00 // 3072 + SYS_NEXTAFTERD128 = 0xC01 // 3073 + SYS_NEXTTOWARDD32 = 0xC02 // 3074 + SYS_NEXTTOWARDD64 = 0xC03 // 3075 + SYS_NEXTTOWARDD128 = 0xC04 // 3076 + SYS_POWD32 = 0xC05 // 3077 + SYS_POWD64 = 0xC06 // 3078 + SYS_POWD128 = 0xC07 // 3079 + SYS_QUANTIZED32 = 0xC08 // 3080 + SYS_QUANTIZED64 = 0xC09 // 3081 + SYS_QUANTIZED128 = 0xC0A // 3082 + SYS_REMAINDERD32 = 0xC0B // 3083 + SYS_REMAINDERD64 = 0xC0C // 3084 + SYS_REMAINDERD128 = 0xC0D // 3085 + SYS___REMQUOD32 = 0xC0E // 3086 + SYS___REMQUOD64 = 0xC0F // 3087 + SYS___REMQUOD128 = 0xC10 // 3088 + SYS_RINTD32 = 0xC11 // 3089 + SYS_RINTD64 = 0xC12 // 3090 + SYS_RINTD128 = 0xC13 // 3091 + SYS_ROUNDD32 = 0xC14 // 3092 + SYS_ROUNDD64 = 0xC15 // 3093 + SYS_ROUNDD128 = 0xC16 // 3094 + SYS_SAMEQUANTUMD32 = 0xC17 // 3095 + SYS_SAMEQUANTUMD64 = 0xC18 // 3096 + SYS_SAMEQUANTUMD128 = 0xC19 // 3097 + SYS_SCALBLND32 = 0xC1A // 3098 + SYS_SCALBLND64 = 0xC1B // 3099 + SYS_SCALBLND128 = 0xC1C // 3100 + SYS_SCALBND32 = 0xC1D // 3101 + SYS_SCALBND64 = 0xC1E // 3102 + SYS_SCALBND128 = 0xC1F // 3103 + SYS_SIND32 = 0xC20 // 3104 + SYS_SIND64 = 0xC21 // 3105 + SYS_SIND128 = 0xC22 // 3106 + SYS_SINHD32 = 0xC23 // 3107 + SYS_SINHD64 = 0xC24 // 3108 + SYS_SINHD128 = 0xC25 // 3109 + SYS_SQRTD32 = 0xC26 // 3110 + SYS_SQRTD64 = 0xC27 // 3111 + SYS_SQRTD128 = 0xC28 // 3112 + SYS_STRTOD32 = 0xC29 // 3113 + SYS_STRTOD64 = 0xC2A // 3114 + SYS_STRTOD128 = 0xC2B // 3115 + SYS_TAND32 = 0xC2C // 3116 + SYS_TAND64 = 0xC2D // 3117 + SYS_TAND128 = 0xC2E // 3118 + SYS_TANHD32 = 0xC2F // 3119 + SYS_TANHD64 = 0xC30 // 3120 + SYS_TANHD128 = 0xC31 // 3121 + SYS_TGAMMAD32 = 0xC32 // 3122 + SYS_TGAMMAD64 = 0xC33 // 3123 + SYS_TGAMMAD128 = 0xC34 // 3124 + SYS_TRUNCD32 = 0xC3E // 3134 + SYS_TRUNCD64 = 0xC3F // 3135 + SYS_TRUNCD128 = 0xC40 // 3136 + SYS_WCSTOD32 = 0xC41 // 3137 + SYS_WCSTOD64 = 0xC42 // 3138 + SYS_WCSTOD128 = 0xC43 // 3139 + SYS___CODEPAGE_INFO = 0xC64 // 3172 + SYS_POSIX_OPENPT = 0xC66 // 3174 + SYS_PSELECT = 0xC67 // 3175 + SYS_SOCKATMARK = 0xC68 // 3176 + SYS_AIO_FSYNC = 0xC69 // 3177 + SYS_LIO_LISTIO = 0xC6A // 3178 + SYS___ATANPID32 = 0xC6B // 3179 + SYS___ATANPID64 = 0xC6C // 3180 + SYS___ATANPID128 = 0xC6D // 3181 + SYS___COSPID32 = 0xC6E // 3182 + SYS___COSPID64 = 0xC6F // 3183 + SYS___COSPID128 = 0xC70 // 3184 + SYS___SINPID32 = 0xC71 // 3185 + SYS___SINPID64 = 0xC72 // 3186 + SYS___SINPID128 = 0xC73 // 3187 + SYS_SETIPV4SOURCEFILTER = 0xC76 // 3190 + SYS_GETIPV4SOURCEFILTER = 0xC77 // 3191 + SYS_SETSOURCEFILTER = 0xC78 // 3192 + SYS_GETSOURCEFILTER = 0xC79 // 3193 + SYS_FWRITE_UNLOCKED = 0xC7A // 3194 + SYS_FREAD_UNLOCKED = 0xC7B // 3195 + SYS_FGETS_UNLOCKED = 0xC7C // 3196 + SYS_GETS_UNLOCKED = 0xC7D // 3197 + SYS_FPUTS_UNLOCKED = 0xC7E // 3198 + SYS_PUTS_UNLOCKED = 0xC7F // 3199 + SYS_FGETC_UNLOCKED = 0xC80 // 3200 + SYS_FPUTC_UNLOCKED = 0xC81 // 3201 + SYS_DLADDR = 0xC82 // 3202 + SYS_SHM_OPEN = 0xC8C // 3212 + SYS_SHM_UNLINK = 0xC8D // 3213 + SYS___CLASS2F = 0xC91 // 3217 + SYS___CLASS2L = 0xC92 // 3218 + SYS___CLASS2F_B = 0xC93 // 3219 + SYS___CLASS2F_H = 0xC94 // 3220 + SYS___CLASS2L_B = 0xC95 // 3221 + SYS___CLASS2L_H = 0xC96 // 3222 + SYS___CLASS2D32 = 0xC97 // 3223 + SYS___CLASS2D64 = 0xC98 // 3224 + SYS___CLASS2D128 = 0xC99 // 3225 + SYS___TOCSNAME2 = 0xC9A // 3226 + SYS___D1TOP = 0xC9B // 3227 + SYS___D2TOP = 0xC9C // 3228 + SYS___D4TOP = 0xC9D // 3229 + SYS___PTOD1 = 0xC9E // 3230 + SYS___PTOD2 = 0xC9F // 3231 + SYS___PTOD4 = 0xCA0 // 3232 + SYS_CLEARERR_UNLOCKED = 0xCA1 // 3233 + SYS_FDELREC_UNLOCKED = 0xCA2 // 3234 + SYS_FEOF_UNLOCKED = 0xCA3 // 3235 + SYS_FERROR_UNLOCKED = 0xCA4 // 3236 + SYS_FFLUSH_UNLOCKED = 0xCA5 // 3237 + SYS_FGETPOS_UNLOCKED = 0xCA6 // 3238 + SYS_FGETWC_UNLOCKED = 0xCA7 // 3239 + SYS_FGETWS_UNLOCKED = 0xCA8 // 3240 + SYS_FILENO_UNLOCKED = 0xCA9 // 3241 + SYS_FLDATA_UNLOCKED = 0xCAA // 3242 + SYS_FLOCATE_UNLOCKED = 0xCAB // 3243 + SYS_FPRINTF_UNLOCKED = 0xCAC // 3244 + SYS_FPUTWC_UNLOCKED = 0xCAD // 3245 + SYS_FPUTWS_UNLOCKED = 0xCAE // 3246 + SYS_FSCANF_UNLOCKED = 0xCAF // 3247 + SYS_FSEEK_UNLOCKED = 0xCB0 // 3248 + SYS_FSEEKO_UNLOCKED = 0xCB1 // 3249 + SYS_FSETPOS_UNLOCKED = 0xCB3 // 3251 + SYS_FTELL_UNLOCKED = 0xCB4 // 3252 + SYS_FTELLO_UNLOCKED = 0xCB5 // 3253 + SYS_FUPDATE_UNLOCKED = 0xCB7 // 3255 + SYS_FWIDE_UNLOCKED = 0xCB8 // 3256 + SYS_FWPRINTF_UNLOCKED = 0xCB9 // 3257 + SYS_FWSCANF_UNLOCKED = 0xCBA // 3258 + SYS_GETWC_UNLOCKED = 0xCBB // 3259 + SYS_GETWCHAR_UNLOCKED = 0xCBC // 3260 + SYS_PERROR_UNLOCKED = 0xCBD // 3261 + SYS_PRINTF_UNLOCKED = 0xCBE // 3262 + SYS_PUTWC_UNLOCKED = 0xCBF // 3263 + SYS_PUTWCHAR_UNLOCKED = 0xCC0 // 3264 + SYS_REWIND_UNLOCKED = 0xCC1 // 3265 + SYS_SCANF_UNLOCKED = 0xCC2 // 3266 + SYS_UNGETC_UNLOCKED = 0xCC3 // 3267 + SYS_UNGETWC_UNLOCKED = 0xCC4 // 3268 + SYS_VFPRINTF_UNLOCKED = 0xCC5 // 3269 + SYS_VFSCANF_UNLOCKED = 0xCC7 // 3271 + SYS_VFWPRINTF_UNLOCKED = 0xCC9 // 3273 + SYS_VFWSCANF_UNLOCKED = 0xCCB // 3275 + SYS_VPRINTF_UNLOCKED = 0xCCD // 3277 + SYS_VSCANF_UNLOCKED = 0xCCF // 3279 + SYS_VWPRINTF_UNLOCKED = 0xCD1 // 3281 + SYS_VWSCANF_UNLOCKED = 0xCD3 // 3283 + SYS_WPRINTF_UNLOCKED = 0xCD5 // 3285 + SYS_WSCANF_UNLOCKED = 0xCD6 // 3286 + SYS_ASCTIME64 = 0xCD7 // 3287 + SYS_ASCTIME64_R = 0xCD8 // 3288 + SYS_CTIME64 = 0xCD9 // 3289 + SYS_CTIME64_R = 0xCDA // 3290 + SYS_DIFFTIME64 = 0xCDB // 3291 + SYS_GMTIME64 = 0xCDC // 3292 + SYS_GMTIME64_R = 0xCDD // 3293 + SYS_LOCALTIME64 = 0xCDE // 3294 + SYS_LOCALTIME64_R = 0xCDF // 3295 + SYS_MKTIME64 = 0xCE0 // 3296 + SYS_TIME64 = 0xCE1 // 3297 + SYS___LOGIN_APPLID = 0xCE2 // 3298 + SYS___PASSWD_APPLID = 0xCE3 // 3299 + SYS_PTHREAD_SECURITY_APPLID_NP = 0xCE4 // 3300 + SYS___GETTHENT = 0xCE5 // 3301 + SYS_FREEIFADDRS = 0xCE6 // 3302 + SYS_GETIFADDRS = 0xCE7 // 3303 + SYS_POSIX_FALLOCATE = 0xCE8 // 3304 + SYS_POSIX_MEMALIGN = 0xCE9 // 3305 + SYS_SIZEOF_ALLOC = 0xCEA // 3306 + SYS_RESIZE_ALLOC = 0xCEB // 3307 + SYS_FREAD_NOUPDATE = 0xCEC // 3308 + SYS_FREAD_NOUPDATE_UNLOCKED = 0xCED // 3309 + SYS_FGETPOS64 = 0xCEE // 3310 + SYS_FSEEK64 = 0xCEF // 3311 + SYS_FSEEKO64 = 0xCF0 // 3312 + SYS_FSETPOS64 = 0xCF1 // 3313 + SYS_FTELL64 = 0xCF2 // 3314 + SYS_FTELLO64 = 0xCF3 // 3315 + SYS_FGETPOS64_UNLOCKED = 0xCF4 // 3316 + SYS_FSEEK64_UNLOCKED = 0xCF5 // 3317 + SYS_FSEEKO64_UNLOCKED = 0xCF6 // 3318 + SYS_FSETPOS64_UNLOCKED = 0xCF7 // 3319 + SYS_FTELL64_UNLOCKED = 0xCF8 // 3320 + SYS_FTELLO64_UNLOCKED = 0xCF9 // 3321 + SYS_FOPEN_UNLOCKED = 0xCFA // 3322 + SYS_FREOPEN_UNLOCKED = 0xCFB // 3323 + SYS_FDOPEN_UNLOCKED = 0xCFC // 3324 + SYS_TMPFILE_UNLOCKED = 0xCFD // 3325 + SYS___MOSERVICES = 0xD3D // 3389 + SYS___GETTOD = 0xD3E // 3390 + SYS_C16RTOMB = 0xD40 // 3392 + SYS_C32RTOMB = 0xD41 // 3393 + SYS_MBRTOC16 = 0xD42 // 3394 + SYS_MBRTOC32 = 0xD43 // 3395 + SYS_QUANTEXPD32 = 0xD44 // 3396 + SYS_QUANTEXPD64 = 0xD45 // 3397 + SYS_QUANTEXPD128 = 0xD46 // 3398 + SYS___LOCALE_CTL = 0xD47 // 3399 + SYS___SMF_RECORD2 = 0xD48 // 3400 + SYS_FOPEN64 = 0xD49 // 3401 + SYS_FOPEN64_UNLOCKED = 0xD4A // 3402 + SYS_FREOPEN64 = 0xD4B // 3403 + SYS_FREOPEN64_UNLOCKED = 0xD4C // 3404 + SYS_TMPFILE64 = 0xD4D // 3405 + SYS_TMPFILE64_UNLOCKED = 0xD4E // 3406 + SYS_GETDATE64 = 0xD4F // 3407 + SYS_GETTIMEOFDAY64 = 0xD50 // 3408 + SYS_BIND2ADDRSEL = 0xD59 // 3417 + SYS_INET6_IS_SRCADDR = 0xD5A // 3418 + SYS___GETGRGID1 = 0xD5B // 3419 + SYS___GETGRNAM1 = 0xD5C // 3420 + SYS___FBUFSIZE = 0xD60 // 3424 + SYS___FPENDING = 0xD61 // 3425 + SYS___FLBF = 0xD62 // 3426 + SYS___FREADABLE = 0xD63 // 3427 + SYS___FWRITABLE = 0xD64 // 3428 + SYS___FREADING = 0xD65 // 3429 + SYS___FWRITING = 0xD66 // 3430 + SYS___FSETLOCKING = 0xD67 // 3431 + SYS__FLUSHLBF = 0xD68 // 3432 + SYS___FPURGE = 0xD69 // 3433 + SYS___FREADAHEAD = 0xD6A // 3434 + SYS___FSETERR = 0xD6B // 3435 + SYS___FPENDING_UNLOCKED = 0xD6C // 3436 + SYS___FREADING_UNLOCKED = 0xD6D // 3437 + SYS___FWRITING_UNLOCKED = 0xD6E // 3438 + SYS__FLUSHLBF_UNLOCKED = 0xD6F // 3439 + SYS___FPURGE_UNLOCKED = 0xD70 // 3440 + SYS___FREADAHEAD_UNLOCKED = 0xD71 // 3441 + SYS___LE_CEEGTJS = 0xD72 // 3442 + SYS___LE_RECORD_DUMP = 0xD73 // 3443 + SYS_FSTAT64 = 0xD74 // 3444 + SYS_LSTAT64 = 0xD75 // 3445 + SYS_STAT64 = 0xD76 // 3446 + SYS___READDIR2_64 = 0xD77 // 3447 + SYS___OPEN_STAT64 = 0xD78 // 3448 + SYS_FTW64 = 0xD79 // 3449 + SYS_NFTW64 = 0xD7A // 3450 + SYS_UTIME64 = 0xD7B // 3451 + SYS_UTIMES64 = 0xD7C // 3452 + SYS___GETIPC64 = 0xD7D // 3453 + SYS_MSGCTL64 = 0xD7E // 3454 + SYS_SEMCTL64 = 0xD7F // 3455 + SYS_SHMCTL64 = 0xD80 // 3456 + SYS_MSGXRCV64 = 0xD81 // 3457 + SYS___MGXR64 = 0xD81 // 3457 + SYS_W_GETPSENT64 = 0xD82 // 3458 + SYS_PTHREAD_COND_TIMEDWAIT64 = 0xD83 // 3459 + SYS_FTIME64 = 0xD85 // 3461 + SYS_GETUTXENT64 = 0xD86 // 3462 + SYS_GETUTXID64 = 0xD87 // 3463 + SYS_GETUTXLINE64 = 0xD88 // 3464 + SYS_PUTUTXLINE64 = 0xD89 // 3465 + SYS_NEWLOCALE = 0xD8A // 3466 + SYS_FREELOCALE = 0xD8B // 3467 + SYS_USELOCALE = 0xD8C // 3468 + SYS_DUPLOCALE = 0xD8D // 3469 + SYS___CHATTR64 = 0xD9C // 3484 + SYS___LCHATTR64 = 0xD9D // 3485 + SYS___FCHATTR64 = 0xD9E // 3486 + SYS_____CHATTR64_A = 0xD9F // 3487 + SYS_____LCHATTR64_A = 0xDA0 // 3488 + SYS___LE_CEEUSGD = 0xDA1 // 3489 + SYS___LE_IFAM_CON = 0xDA2 // 3490 + SYS___LE_IFAM_DSC = 0xDA3 // 3491 + SYS___LE_IFAM_GET = 0xDA4 // 3492 + SYS___LE_IFAM_QRY = 0xDA5 // 3493 + SYS_ALIGNED_ALLOC = 0xDA6 // 3494 + SYS_ACCEPT4 = 0xDA7 // 3495 + SYS___ACCEPT4_A = 0xDA8 // 3496 + SYS_COPYFILERANGE = 0xDA9 // 3497 + SYS_GETLINE = 0xDAA // 3498 + SYS___GETLINE_A = 0xDAB // 3499 + SYS_DIRFD = 0xDAC // 3500 + SYS_CLOCK_GETTIME = 0xDAD // 3501 + SYS_DUP3 = 0xDAE // 3502 + SYS_EPOLL_CREATE = 0xDAF // 3503 + SYS_EPOLL_CREATE1 = 0xDB0 // 3504 + SYS_EPOLL_CTL = 0xDB1 // 3505 + SYS_EPOLL_WAIT = 0xDB2 // 3506 + SYS_EPOLL_PWAIT = 0xDB3 // 3507 + SYS_EVENTFD = 0xDB4 // 3508 + SYS_STATFS = 0xDB5 // 3509 + SYS___STATFS_A = 0xDB6 // 3510 + SYS_FSTATFS = 0xDB7 // 3511 + SYS_INOTIFY_INIT = 0xDB8 // 3512 + SYS_INOTIFY_INIT1 = 0xDB9 // 3513 + SYS_INOTIFY_ADD_WATCH = 0xDBA // 3514 + SYS___INOTIFY_ADD_WATCH_A = 0xDBB // 3515 + SYS_INOTIFY_RM_WATCH = 0xDBC // 3516 + SYS_PIPE2 = 0xDBD // 3517 + SYS_PIVOT_ROOT = 0xDBE // 3518 + SYS___PIVOT_ROOT_A = 0xDBF // 3519 + SYS_PRCTL = 0xDC0 // 3520 + SYS_PRLIMIT = 0xDC1 // 3521 + SYS_SETHOSTNAME = 0xDC2 // 3522 + SYS___SETHOSTNAME_A = 0xDC3 // 3523 + SYS_SETRESUID = 0xDC4 // 3524 + SYS_SETRESGID = 0xDC5 // 3525 + SYS_PTHREAD_CONDATTR_GETCLOCK = 0xDC6 // 3526 + SYS_FLOCK = 0xDC7 // 3527 + SYS_FGETXATTR = 0xDC8 // 3528 + SYS___FGETXATTR_A = 0xDC9 // 3529 + SYS_FLISTXATTR = 0xDCA // 3530 + SYS___FLISTXATTR_A = 0xDCB // 3531 + SYS_FREMOVEXATTR = 0xDCC // 3532 + SYS___FREMOVEXATTR_A = 0xDCD // 3533 + SYS_FSETXATTR = 0xDCE // 3534 + SYS___FSETXATTR_A = 0xDCF // 3535 + SYS_GETXATTR = 0xDD0 // 3536 + SYS___GETXATTR_A = 0xDD1 // 3537 + SYS_LGETXATTR = 0xDD2 // 3538 + SYS___LGETXATTR_A = 0xDD3 // 3539 + SYS_LISTXATTR = 0xDD4 // 3540 + SYS___LISTXATTR_A = 0xDD5 // 3541 + SYS_LLISTXATTR = 0xDD6 // 3542 + SYS___LLISTXATTR_A = 0xDD7 // 3543 + SYS_LREMOVEXATTR = 0xDD8 // 3544 + SYS___LREMOVEXATTR_A = 0xDD9 // 3545 + SYS_LSETXATTR = 0xDDA // 3546 + SYS___LSETXATTR_A = 0xDDB // 3547 + SYS_REMOVEXATTR = 0xDDC // 3548 + SYS___REMOVEXATTR_A = 0xDDD // 3549 + SYS_SETXATTR = 0xDDE // 3550 + SYS___SETXATTR_A = 0xDDF // 3551 + SYS_FDATASYNC = 0xDE0 // 3552 + SYS_SYNCFS = 0xDE1 // 3553 + SYS_FUTIMES = 0xDE2 // 3554 + SYS_FUTIMESAT = 0xDE3 // 3555 + SYS___FUTIMESAT_A = 0xDE4 // 3556 + SYS_LUTIMES = 0xDE5 // 3557 + SYS___LUTIMES_A = 0xDE6 // 3558 + SYS_INET_ATON = 0xDE7 // 3559 + SYS_GETRANDOM = 0xDE8 // 3560 + SYS_GETTID = 0xDE9 // 3561 + SYS_MEMFD_CREATE = 0xDEA // 3562 + SYS___MEMFD_CREATE_A = 0xDEB // 3563 + SYS_FACCESSAT = 0xDEC // 3564 + SYS___FACCESSAT_A = 0xDED // 3565 + SYS_FCHMODAT = 0xDEE // 3566 + SYS___FCHMODAT_A = 0xDEF // 3567 + SYS_FCHOWNAT = 0xDF0 // 3568 + SYS___FCHOWNAT_A = 0xDF1 // 3569 + SYS_FSTATAT = 0xDF2 // 3570 + SYS___FSTATAT_A = 0xDF3 // 3571 + SYS_LINKAT = 0xDF4 // 3572 + SYS___LINKAT_A = 0xDF5 // 3573 + SYS_MKDIRAT = 0xDF6 // 3574 + SYS___MKDIRAT_A = 0xDF7 // 3575 + SYS_MKFIFOAT = 0xDF8 // 3576 + SYS___MKFIFOAT_A = 0xDF9 // 3577 + SYS_MKNODAT = 0xDFA // 3578 + SYS___MKNODAT_A = 0xDFB // 3579 + SYS_OPENAT = 0xDFC // 3580 + SYS___OPENAT_A = 0xDFD // 3581 + SYS_READLINKAT = 0xDFE // 3582 + SYS___READLINKAT_A = 0xDFF // 3583 + SYS_RENAMEAT = 0xE00 // 3584 + SYS___RENAMEAT_A = 0xE01 // 3585 + SYS_RENAMEAT2 = 0xE02 // 3586 + SYS___RENAMEAT2_A = 0xE03 // 3587 + SYS_SYMLINKAT = 0xE04 // 3588 + SYS___SYMLINKAT_A = 0xE05 // 3589 + SYS_UNLINKAT = 0xE06 // 3590 + SYS___UNLINKAT_A = 0xE07 // 3591 + SYS_SYSINFO = 0xE08 // 3592 + SYS_WAIT4 = 0xE0A // 3594 + SYS_CLONE = 0xE0B // 3595 + SYS_UNSHARE = 0xE0C // 3596 + SYS_SETNS = 0xE0D // 3597 + SYS_CAPGET = 0xE0E // 3598 + SYS_CAPSET = 0xE0F // 3599 + SYS_STRCHRNUL = 0xE10 // 3600 + SYS_PTHREAD_CONDATTR_SETCLOCK = 0xE12 // 3602 + SYS_OPEN_BY_HANDLE_AT = 0xE13 // 3603 + SYS___OPEN_BY_HANDLE_AT_A = 0xE14 // 3604 + SYS___INET_ATON_A = 0xE15 // 3605 + SYS_MOUNT1 = 0xE16 // 3606 + SYS___MOUNT1_A = 0xE17 // 3607 + SYS_UMOUNT1 = 0xE18 // 3608 + SYS___UMOUNT1_A = 0xE19 // 3609 + SYS_UMOUNT2 = 0xE1A // 3610 + SYS___UMOUNT2_A = 0xE1B // 3611 + SYS___PRCTL_A = 0xE1C // 3612 + SYS_LOCALTIME_R2 = 0xE1D // 3613 + SYS___LOCALTIME_R2_A = 0xE1E // 3614 + SYS_OPENAT2 = 0xE1F // 3615 + SYS___OPENAT2_A = 0xE20 // 3616 + SYS___LE_CEEMICT = 0xE21 // 3617 + SYS_GETENTROPY = 0xE22 // 3618 + SYS_NANOSLEEP = 0xE23 // 3619 + SYS_UTIMENSAT = 0xE24 // 3620 + SYS___UTIMENSAT_A = 0xE25 // 3621 + SYS_ASPRINTF = 0xE26 // 3622 + SYS___ASPRINTF_A = 0xE27 // 3623 + SYS_VASPRINTF = 0xE28 // 3624 + SYS___VASPRINTF_A = 0xE29 // 3625 + SYS_DPRINTF = 0xE2A // 3626 + SYS___DPRINTF_A = 0xE2B // 3627 + SYS_GETOPT_LONG = 0xE2C // 3628 + SYS___GETOPT_LONG_A = 0xE2D // 3629 + SYS_PSIGNAL = 0xE2E // 3630 + SYS___PSIGNAL_A = 0xE2F // 3631 + SYS_PSIGNAL_UNLOCKED = 0xE30 // 3632 + SYS___PSIGNAL_UNLOCKED_A = 0xE31 // 3633 + SYS_FSTATAT_O = 0xE32 // 3634 + SYS___FSTATAT_O_A = 0xE33 // 3635 + SYS_FSTATAT64 = 0xE34 // 3636 + SYS___FSTATAT64_A = 0xE35 // 3637 + SYS___CHATTRAT = 0xE36 // 3638 + SYS_____CHATTRAT_A = 0xE37 // 3639 + SYS___CHATTRAT64 = 0xE38 // 3640 + SYS_____CHATTRAT64_A = 0xE39 // 3641 + SYS_MADVISE = 0xE3A // 3642 + SYS___AUTHENTICATE = 0xE3B // 3643 + +) diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go b/tests/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go new file mode 100644 index 000000000..3e6d57cae --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go @@ -0,0 +1,353 @@ +// cgo -godefs types_aix.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc && aix + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 + PathMax = 0x3ff +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type off64 int64 +type off int32 +type Mode_t uint32 + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timeval32 struct { + Sec int32 + Usec int32 +} + +type Timex struct{} + +type Time_t int32 + +type Tms struct{} + +type Utimbuf struct { + Actime int32 + Modtime int32 +} + +type Timezone struct { + Minuteswest int32 + Dsttime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type Pid_t int32 + +type _Gid_t uint32 + +type dev_t uint32 + +type Stat_t struct { + Dev uint32 + Ino uint32 + Mode uint32 + Nlink int16 + Flag uint16 + Uid uint32 + Gid uint32 + Rdev uint32 + Size int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize int32 + Blocks int32 + Vfstype int32 + Vfs uint32 + Type uint32 + Gen uint32 + Reserved [9]uint32 +} + +type StatxTimestamp struct{} + +type Statx_t struct{} + +type Dirent struct { + Offset uint32 + Ino uint32 + Reclen uint16 + Namlen uint16 + Name [256]uint8 +} + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [1023]uint8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [120]uint8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [1012]uint8 +} + +type _Socklen uint32 + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x404 + SizeofSockaddrUnix = 0x401 + SizeofSockaddrDatalink = 0x80 + SizeofLinger = 0x8 + SizeofIovec = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofICMPv6Filter = 0x20 +) + +const ( + SizeofIfMsghdr = 0x10 +) + +type IfMsgHdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Addrlen uint8 + _ [1]byte +} + +type FdSet struct { + Bits [2048]int32 +} + +type Utsname struct { + Sysname [32]byte + Nodename [32]byte + Release [32]byte + Version [32]byte + Machine [32]byte +} + +type Ustat_t struct{} + +type Sigset_t struct { + Losigs uint32 + Hisigs uint32 +} + +const ( + AT_FDCWD = -0x2 + AT_REMOVEDIR = 0x1 + AT_SYMLINK_NOFOLLOW = 0x1 +) + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [16]uint8 +} + +type Termio struct { + Iflag uint16 + Oflag uint16 + Cflag uint16 + Lflag uint16 + Line uint8 + Cc [8]uint8 + _ [1]byte +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type PollFd struct { + Fd int32 + Events uint16 + Revents uint16 +} + +const ( + POLLERR = 0x4000 + POLLHUP = 0x2000 + POLLIN = 0x1 + POLLNVAL = 0x8000 + POLLOUT = 0x2 + POLLPRI = 0x4 + POLLRDBAND = 0x20 + POLLRDNORM = 0x10 + POLLWRBAND = 0x40 + POLLWRNORM = 0x2 +) + +type Flock_t struct { + Type int16 + Whence int16 + Sysid uint32 + Pid int32 + Vfs int32 + Start int64 + Len int64 +} + +type Fsid_t struct { + Val [2]uint32 +} +type Fsid64_t struct { + Val [2]uint64 +} + +type Statfs_t struct { + Version int32 + Type int32 + Bsize uint32 + Blocks uint32 + Bfree uint32 + Bavail uint32 + Files uint32 + Ffree uint32 + Fsid Fsid_t + Vfstype int32 + Fsize uint32 + Vfsnumber int32 + Vfsoff int32 + Vfslen int32 + Vfsvers int32 + Fname [32]uint8 + Fpack [32]uint8 + Name_max int32 +} + +const RNDGETENTCNT = 0x80045200 diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go b/tests/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go new file mode 100644 index 000000000..3a219bdce --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go @@ -0,0 +1,357 @@ +// cgo -godefs types_aix.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc64 && aix + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x3ff +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type off64 int64 +type off int64 +type Mode_t uint32 + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int32 + _ [4]byte +} + +type Timeval32 struct { + Sec int32 + Usec int32 +} + +type Timex struct{} + +type Time_t int64 + +type Tms struct{} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Timezone struct { + Minuteswest int32 + Dsttime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type Pid_t int32 + +type _Gid_t uint32 + +type dev_t uint64 + +type Stat_t struct { + Dev uint64 + Ino uint64 + Mode uint32 + Nlink int16 + Flag uint16 + Uid uint32 + Gid uint32 + Rdev uint64 + Ssize int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize int64 + Blocks int64 + Vfstype int32 + Vfs uint32 + Type uint32 + Gen uint32 + Reserved [9]uint32 + Padto_ll uint32 + Size int64 +} + +type StatxTimestamp struct{} + +type Statx_t struct{} + +type Dirent struct { + Offset uint64 + Ino uint64 + Reclen uint16 + Namlen uint16 + Name [256]uint8 + _ [4]byte +} + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [1023]uint8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [120]uint8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [1012]uint8 +} + +type _Socklen uint32 + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x404 + SizeofSockaddrUnix = 0x401 + SizeofSockaddrDatalink = 0x80 + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofICMPv6Filter = 0x20 +) + +const ( + SizeofIfMsghdr = 0x10 +) + +type IfMsgHdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Addrlen uint8 + _ [1]byte +} + +type FdSet struct { + Bits [1024]int64 +} + +type Utsname struct { + Sysname [32]byte + Nodename [32]byte + Release [32]byte + Version [32]byte + Machine [32]byte +} + +type Ustat_t struct{} + +type Sigset_t struct { + Set [4]uint64 +} + +const ( + AT_FDCWD = -0x2 + AT_REMOVEDIR = 0x1 + AT_SYMLINK_NOFOLLOW = 0x1 +) + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [16]uint8 +} + +type Termio struct { + Iflag uint16 + Oflag uint16 + Cflag uint16 + Lflag uint16 + Line uint8 + Cc [8]uint8 + _ [1]byte +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type PollFd struct { + Fd int32 + Events uint16 + Revents uint16 +} + +const ( + POLLERR = 0x4000 + POLLHUP = 0x2000 + POLLIN = 0x1 + POLLNVAL = 0x8000 + POLLOUT = 0x2 + POLLPRI = 0x4 + POLLRDBAND = 0x20 + POLLRDNORM = 0x10 + POLLWRBAND = 0x40 + POLLWRNORM = 0x2 +) + +type Flock_t struct { + Type int16 + Whence int16 + Sysid uint32 + Pid int32 + Vfs int32 + Start int64 + Len int64 +} + +type Fsid_t struct { + Val [2]uint32 +} +type Fsid64_t struct { + Val [2]uint64 +} + +type Statfs_t struct { + Version int32 + Type int32 + Bsize uint64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid64_t + Vfstype int32 + Fsize uint64 + Vfsnumber int32 + Vfsoff int32 + Vfslen int32 + Vfsvers int32 + Fname [32]uint8 + Fpack [32]uint8 + Name_max int32 + _ [4]byte +} + +const RNDGETENTCNT = 0x80045200 diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go b/tests/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go new file mode 100644 index 000000000..17c53bd9b --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go @@ -0,0 +1,878 @@ +// cgo -godefs types_darwin.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && darwin + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int32 + _ [4]byte +} + +type Timeval32 struct { + Sec int32 + Usec int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev int32 + Mode uint16 + Nlink uint16 + Ino uint64 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Qspare [2]int64 +} + +type Statfs_t struct { + Bsize uint32 + Iosize int32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Owner uint32 + Type uint32 + Flags uint32 + Fssubtype uint32 + Fstypename [16]byte + Mntonname [1024]byte + Mntfromname [1024]byte + Flags_ext uint32 + Reserved [7]uint32 +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Fstore_t struct { + Flags uint32 + Posmode int32 + Offset int64 + Length int64 + Bytesalloc int64 +} + +type Radvisory_t struct { + Offset int64 + Count int32 + _ [4]byte +} + +type Fbootstraptransfer_t struct { + Offset int64 + Length uint64 + Buffer *byte +} + +type Log2phys_t struct { + Flags uint32 + _ [16]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Dirent struct { + Ino uint64 + Seekoff uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [1024]int8 + _ [3]byte +} + +type Attrlist struct { + Bitmapcount uint16 + Reserved uint16 + Commonattr uint32 + Volattr uint32 + Dirattr uint32 + Fileattr uint32 + Forkattr uint32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type RawSockaddrCtl struct { + Sc_len uint8 + Sc_family uint8 + Ss_sysaddr uint16 + Sc_id uint32 + Sc_unit uint32 + Sc_reserved [5]uint32 +} + +type RawSockaddrVM struct { + Len uint8 + Family uint8 + Reserved1 uint16 + Port uint32 + Cid uint32 +} + +type XVSockPCB struct { + Xv_len uint32 + Xv_vsockpp uint64 + Xvp_local_cid uint32 + Xvp_local_port uint32 + Xvp_remote_cid uint32 + Xvp_remote_port uint32 + Xvp_rxcnt uint32 + Xvp_txcnt uint32 + Xvp_peer_rxhiwat uint32 + Xvp_peer_rxcnt uint32 + Xvp_last_pid int32 + Xvp_gencnt uint64 + Xv_socket XSocket + _ [4]byte +} + +type XSocket struct { + Xso_len uint32 + Xso_so uint32 + So_type int16 + So_options int16 + So_linger int16 + So_state int16 + So_pcb uint32 + Xso_protocol int32 + Xso_family int32 + So_qlen int16 + So_incqlen int16 + So_qlimit int16 + So_timeo int16 + So_error uint16 + So_pgid int32 + So_oobmark uint32 + So_rcv XSockbuf + So_snd XSockbuf + So_uid uint32 +} + +type XSocket64 struct { + Xso_len uint32 + _ [8]byte + So_type int16 + So_options int16 + So_linger int16 + So_state int16 + _ [8]byte + Xso_protocol int32 + Xso_family int32 + So_qlen int16 + So_incqlen int16 + So_qlimit int16 + So_timeo int16 + So_error uint16 + So_pgid int32 + So_oobmark uint32 + So_rcv XSockbuf + So_snd XSockbuf + So_uid uint32 +} + +type XSockbuf struct { + Cc uint32 + Hiwat uint32 + Mbcnt uint32 + Mbmax uint32 + Lowat int32 + Flags int16 + Timeo int16 +} + +type XVSockPgen struct { + Len uint32 + Count uint64 + Gen uint64 + Sogen uint64 +} + +type _Socklen uint32 + +type SaeAssocID uint32 + +type SaeConnID uint32 + +type SaEndpoints struct { + Srcif uint32 + Srcaddr *RawSockaddr + Srcaddrlen uint32 + Dstaddr *RawSockaddr + Dstaddrlen uint32 + _ [4]byte +} + +type Xucred struct { + Version uint32 + Uid uint32 + Ngroups int16 + Groups [16]uint32 +} + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex uint32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +type TCPConnectionInfo struct { + State uint8 + Snd_wscale uint8 + Rcv_wscale uint8 + _ uint8 + Options uint32 + Flags uint32 + Rto uint32 + Maxseg uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Snd_wnd uint32 + Snd_sbbytes uint32 + Rcv_wnd uint32 + Rttcur uint32 + Srtt uint32 + Rttvar uint32 + Txpackets uint64 + Txbytes uint64 + Txretransmitbytes uint64 + Rxpackets uint64 + Rxbytes uint64 + Rxoutoforderbytes uint64 + Txretransmitpackets uint64 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofSockaddrCtl = 0x20 + SizeofSockaddrVM = 0xc + SizeofXvsockpcb = 0xa8 + SizeofXSocket = 0x64 + SizeofXSockbuf = 0x18 + SizeofXVSockPgen = 0x20 + SizeofXucred = 0x4c + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofTCPConnectionInfo = 0x70 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [32]int32 +} + +const ( + SizeofIfMsghdr = 0x70 + SizeofIfMsghdr2 = 0xa0 + SizeofIfData = 0x60 + SizeofIfData64 = 0x80 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfmaMsghdr2 = 0x14 + SizeofRtMsghdr = 0x5c + SizeofRtMsghdr2 = 0x5c + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Data IfData +} + +type IfMsghdr2 struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Snd_len int32 + Snd_maxlen int32 + Snd_drops int32 + Timer int32 + Data IfData64 +} + +type IfData struct { + Type uint8 + Typelen uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Recvquota uint8 + Xmitquota uint8 + Unused1 uint8 + Mtu uint32 + Metric uint32 + Baudrate uint32 + Ipackets uint32 + Ierrors uint32 + Opackets uint32 + Oerrors uint32 + Collisions uint32 + Ibytes uint32 + Obytes uint32 + Imcasts uint32 + Omcasts uint32 + Iqdrops uint32 + Noproto uint32 + Recvtiming uint32 + Xmittiming uint32 + Lastchange Timeval32 + Unused2 uint32 + Hwassist uint32 + Reserved1 uint32 + Reserved2 uint32 +} + +type IfData64 struct { + Type uint8 + Typelen uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Recvquota uint8 + Xmitquota uint8 + Unused1 uint8 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Recvtiming uint32 + Xmittiming uint32 + Lastchange Timeval32 +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte +} + +type IfmaMsghdr2 struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Refcount int32 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMsghdr2 struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Flags int32 + Addrs int32 + Refcnt int32 + Parentflags int32 + Reserved int32 + Use int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint32 + Mtu uint32 + Hopcount uint32 + Expire int32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pksent uint32 + State uint32 + Filler [3]uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval32 + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type Termios struct { + Iflag uint64 + Oflag uint64 + Cflag uint64 + Lflag uint64 + Cc [20]uint8 + Ispeed uint64 + Ospeed uint64 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x2 + AT_REMOVEDIR = 0x80 + AT_SYMLINK_FOLLOW = 0x40 + AT_SYMLINK_NOFOLLOW = 0x20 + AT_EACCESS = 0x10 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} + +type CtlInfo struct { + Id uint32 + Name [96]byte +} + +const SizeofKinfoProc = 0x288 + +type Eproc struct { + Paddr uintptr + Sess uintptr + Pcred Pcred + Ucred Ucred + Vm Vmspace + Ppid int32 + Pgid int32 + Jobc int16 + Tdev int32 + Tpgid int32 + Tsess uintptr + Wmesg [8]byte + Xsize int32 + Xrssize int16 + Xccount int16 + Xswrss int16 + Flag int32 + Login [12]byte + Spare [4]int32 + _ [4]byte +} + +type ExternProc struct { + P_starttime Timeval + P_vmspace *Vmspace + P_sigacts uintptr + P_flag int32 + P_stat int8 + P_pid int32 + P_oppid int32 + P_dupfd int32 + User_stack *int8 + Exit_thread *byte + P_debugger int32 + Sigwait int32 + P_estcpu uint32 + P_cpticks int32 + P_pctcpu uint32 + P_wchan *byte + P_wmesg *int8 + P_swtime uint32 + P_slptime uint32 + P_realtimer Itimerval + P_rtime Timeval + P_uticks uint64 + P_sticks uint64 + P_iticks uint64 + P_traceflag int32 + P_tracep uintptr + P_siglist int32 + P_textvp uintptr + P_holdcnt int32 + P_sigmask uint32 + P_sigignore uint32 + P_sigcatch uint32 + P_priority uint8 + P_usrpri uint8 + P_nice int8 + P_comm [17]byte + P_pgrp uintptr + P_addr uintptr + P_xstat uint16 + P_acflag uint16 + P_ru *Rusage +} + +type Itimerval struct { + Interval Timeval + Value Timeval +} + +type KinfoProc struct { + Proc ExternProc + Eproc Eproc +} + +type Vmspace struct { + Dummy int32 + Dummy2 *int8 + Dummy3 [5]int32 + Dummy4 [3]*int8 +} + +type Pcred struct { + Pc_lock [72]int8 + Pc_ucred uintptr + P_ruid uint32 + P_svuid uint32 + P_rgid uint32 + P_svgid uint32 + P_refcnt int32 + _ [4]byte +} + +type Ucred struct { + Ref int32 + Uid uint32 + Ngroups int16 + Groups [16]uint32 +} + +type SysvIpcPerm struct { + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint16 + _ uint16 + _ int32 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint64 + Lpid int32 + Cpid int32 + Nattch uint16 + _ [34]byte +} + +const ( + IPC_CREAT = 0x200 + IPC_EXCL = 0x400 + IPC_NOWAIT = 0x800 + IPC_PRIVATE = 0x0 +) + +const ( + IPC_RMID = 0x0 + IPC_SET = 0x1 + IPC_STAT = 0x2 +) + +const ( + SHM_RDONLY = 0x1000 + SHM_RND = 0x2000 +) diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go b/tests/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go new file mode 100644 index 000000000..2392226a7 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go @@ -0,0 +1,878 @@ +// cgo -godefs types_darwin.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm64 && darwin + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int32 + _ [4]byte +} + +type Timeval32 struct { + Sec int32 + Usec int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev int32 + Mode uint16 + Nlink uint16 + Ino uint64 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Qspare [2]int64 +} + +type Statfs_t struct { + Bsize uint32 + Iosize int32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Owner uint32 + Type uint32 + Flags uint32 + Fssubtype uint32 + Fstypename [16]byte + Mntonname [1024]byte + Mntfromname [1024]byte + Flags_ext uint32 + Reserved [7]uint32 +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Fstore_t struct { + Flags uint32 + Posmode int32 + Offset int64 + Length int64 + Bytesalloc int64 +} + +type Radvisory_t struct { + Offset int64 + Count int32 + _ [4]byte +} + +type Fbootstraptransfer_t struct { + Offset int64 + Length uint64 + Buffer *byte +} + +type Log2phys_t struct { + Flags uint32 + _ [16]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Dirent struct { + Ino uint64 + Seekoff uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [1024]int8 + _ [3]byte +} + +type Attrlist struct { + Bitmapcount uint16 + Reserved uint16 + Commonattr uint32 + Volattr uint32 + Dirattr uint32 + Fileattr uint32 + Forkattr uint32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type RawSockaddrCtl struct { + Sc_len uint8 + Sc_family uint8 + Ss_sysaddr uint16 + Sc_id uint32 + Sc_unit uint32 + Sc_reserved [5]uint32 +} + +type RawSockaddrVM struct { + Len uint8 + Family uint8 + Reserved1 uint16 + Port uint32 + Cid uint32 +} + +type XVSockPCB struct { + Xv_len uint32 + Xv_vsockpp uint64 + Xvp_local_cid uint32 + Xvp_local_port uint32 + Xvp_remote_cid uint32 + Xvp_remote_port uint32 + Xvp_rxcnt uint32 + Xvp_txcnt uint32 + Xvp_peer_rxhiwat uint32 + Xvp_peer_rxcnt uint32 + Xvp_last_pid int32 + Xvp_gencnt uint64 + Xv_socket XSocket + _ [4]byte +} + +type XSocket struct { + Xso_len uint32 + Xso_so uint32 + So_type int16 + So_options int16 + So_linger int16 + So_state int16 + So_pcb uint32 + Xso_protocol int32 + Xso_family int32 + So_qlen int16 + So_incqlen int16 + So_qlimit int16 + So_timeo int16 + So_error uint16 + So_pgid int32 + So_oobmark uint32 + So_rcv XSockbuf + So_snd XSockbuf + So_uid uint32 +} + +type XSocket64 struct { + Xso_len uint32 + _ [8]byte + So_type int16 + So_options int16 + So_linger int16 + So_state int16 + _ [8]byte + Xso_protocol int32 + Xso_family int32 + So_qlen int16 + So_incqlen int16 + So_qlimit int16 + So_timeo int16 + So_error uint16 + So_pgid int32 + So_oobmark uint32 + So_rcv XSockbuf + So_snd XSockbuf + So_uid uint32 +} + +type XSockbuf struct { + Cc uint32 + Hiwat uint32 + Mbcnt uint32 + Mbmax uint32 + Lowat int32 + Flags int16 + Timeo int16 +} + +type XVSockPgen struct { + Len uint32 + Count uint64 + Gen uint64 + Sogen uint64 +} + +type _Socklen uint32 + +type SaeAssocID uint32 + +type SaeConnID uint32 + +type SaEndpoints struct { + Srcif uint32 + Srcaddr *RawSockaddr + Srcaddrlen uint32 + Dstaddr *RawSockaddr + Dstaddrlen uint32 + _ [4]byte +} + +type Xucred struct { + Version uint32 + Uid uint32 + Ngroups int16 + Groups [16]uint32 +} + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex uint32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +type TCPConnectionInfo struct { + State uint8 + Snd_wscale uint8 + Rcv_wscale uint8 + _ uint8 + Options uint32 + Flags uint32 + Rto uint32 + Maxseg uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Snd_wnd uint32 + Snd_sbbytes uint32 + Rcv_wnd uint32 + Rttcur uint32 + Srtt uint32 + Rttvar uint32 + Txpackets uint64 + Txbytes uint64 + Txretransmitbytes uint64 + Rxpackets uint64 + Rxbytes uint64 + Rxoutoforderbytes uint64 + Txretransmitpackets uint64 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofSockaddrCtl = 0x20 + SizeofSockaddrVM = 0xc + SizeofXvsockpcb = 0xa8 + SizeofXSocket = 0x64 + SizeofXSockbuf = 0x18 + SizeofXVSockPgen = 0x20 + SizeofXucred = 0x4c + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofTCPConnectionInfo = 0x70 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [32]int32 +} + +const ( + SizeofIfMsghdr = 0x70 + SizeofIfMsghdr2 = 0xa0 + SizeofIfData = 0x60 + SizeofIfData64 = 0x80 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfmaMsghdr2 = 0x14 + SizeofRtMsghdr = 0x5c + SizeofRtMsghdr2 = 0x5c + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Data IfData +} + +type IfMsghdr2 struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Snd_len int32 + Snd_maxlen int32 + Snd_drops int32 + Timer int32 + Data IfData64 +} + +type IfData struct { + Type uint8 + Typelen uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Recvquota uint8 + Xmitquota uint8 + Unused1 uint8 + Mtu uint32 + Metric uint32 + Baudrate uint32 + Ipackets uint32 + Ierrors uint32 + Opackets uint32 + Oerrors uint32 + Collisions uint32 + Ibytes uint32 + Obytes uint32 + Imcasts uint32 + Omcasts uint32 + Iqdrops uint32 + Noproto uint32 + Recvtiming uint32 + Xmittiming uint32 + Lastchange Timeval32 + Unused2 uint32 + Hwassist uint32 + Reserved1 uint32 + Reserved2 uint32 +} + +type IfData64 struct { + Type uint8 + Typelen uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Recvquota uint8 + Xmitquota uint8 + Unused1 uint8 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Recvtiming uint32 + Xmittiming uint32 + Lastchange Timeval32 +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte +} + +type IfmaMsghdr2 struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Refcount int32 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMsghdr2 struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Flags int32 + Addrs int32 + Refcnt int32 + Parentflags int32 + Reserved int32 + Use int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint32 + Mtu uint32 + Hopcount uint32 + Expire int32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pksent uint32 + State uint32 + Filler [3]uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval32 + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type Termios struct { + Iflag uint64 + Oflag uint64 + Cflag uint64 + Lflag uint64 + Cc [20]uint8 + Ispeed uint64 + Ospeed uint64 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x2 + AT_REMOVEDIR = 0x80 + AT_SYMLINK_FOLLOW = 0x40 + AT_SYMLINK_NOFOLLOW = 0x20 + AT_EACCESS = 0x10 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} + +type CtlInfo struct { + Id uint32 + Name [96]byte +} + +const SizeofKinfoProc = 0x288 + +type Eproc struct { + Paddr uintptr + Sess uintptr + Pcred Pcred + Ucred Ucred + Vm Vmspace + Ppid int32 + Pgid int32 + Jobc int16 + Tdev int32 + Tpgid int32 + Tsess uintptr + Wmesg [8]byte + Xsize int32 + Xrssize int16 + Xccount int16 + Xswrss int16 + Flag int32 + Login [12]byte + Spare [4]int32 + _ [4]byte +} + +type ExternProc struct { + P_starttime Timeval + P_vmspace *Vmspace + P_sigacts uintptr + P_flag int32 + P_stat int8 + P_pid int32 + P_oppid int32 + P_dupfd int32 + User_stack *int8 + Exit_thread *byte + P_debugger int32 + Sigwait int32 + P_estcpu uint32 + P_cpticks int32 + P_pctcpu uint32 + P_wchan *byte + P_wmesg *int8 + P_swtime uint32 + P_slptime uint32 + P_realtimer Itimerval + P_rtime Timeval + P_uticks uint64 + P_sticks uint64 + P_iticks uint64 + P_traceflag int32 + P_tracep uintptr + P_siglist int32 + P_textvp uintptr + P_holdcnt int32 + P_sigmask uint32 + P_sigignore uint32 + P_sigcatch uint32 + P_priority uint8 + P_usrpri uint8 + P_nice int8 + P_comm [17]byte + P_pgrp uintptr + P_addr uintptr + P_xstat uint16 + P_acflag uint16 + P_ru *Rusage +} + +type Itimerval struct { + Interval Timeval + Value Timeval +} + +type KinfoProc struct { + Proc ExternProc + Eproc Eproc +} + +type Vmspace struct { + Dummy int32 + Dummy2 *int8 + Dummy3 [5]int32 + Dummy4 [3]*int8 +} + +type Pcred struct { + Pc_lock [72]int8 + Pc_ucred uintptr + P_ruid uint32 + P_svuid uint32 + P_rgid uint32 + P_svgid uint32 + P_refcnt int32 + _ [4]byte +} + +type Ucred struct { + Ref int32 + Uid uint32 + Ngroups int16 + Groups [16]uint32 +} + +type SysvIpcPerm struct { + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint16 + _ uint16 + _ int32 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint64 + Lpid int32 + Cpid int32 + Nattch uint16 + _ [34]byte +} + +const ( + IPC_CREAT = 0x200 + IPC_EXCL = 0x400 + IPC_NOWAIT = 0x800 + IPC_PRIVATE = 0x0 +) + +const ( + IPC_RMID = 0x0 + IPC_SET = 0x1 + IPC_STAT = 0x2 +) + +const ( + SHM_RDONLY = 0x1000 + SHM_RND = 0x2000 +) diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go b/tests/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go new file mode 100644 index 000000000..30e405bb4 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go @@ -0,0 +1,473 @@ +// cgo -godefs types_dragonfly.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && dragonfly + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur int64 + Max int64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Ino uint64 + Nlink uint32 + Dev uint32 + Mode uint16 + _1 uint16 + Uid uint32 + Gid uint32 + Rdev uint32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + _ uint32 + Flags uint32 + Gen uint32 + Lspare int32 + Blksize int64 + Qspare2 int64 +} + +type Statfs_t struct { + Spare2 int64 + Bsize int64 + Iosize int64 + Blocks int64 + Bfree int64 + Bavail int64 + Files int64 + Ffree int64 + Fsid Fsid + Owner uint32 + Type int32 + Flags int32 + Syncwrites int64 + Asyncwrites int64 + Fstypename [16]byte + Mntonname [80]byte + Syncreads int64 + Asyncreads int64 + Spares1 int16 + Mntfromname [80]byte + Spares2 int16 + Spare [2]int64 +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Namlen uint16 + Type uint8 + Unused1 uint8 + Unused2 uint32 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 + Rcf uint16 + Route [16]uint16 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x36 + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [16]uint64 +} + +const ( + SizeofIfMsghdr = 0xb0 + SizeofIfData = 0xa0 + SizeofIfaMsghdr = 0x18 + SizeofIfmaMsghdr = 0x10 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x98 + SizeofRtMetrics = 0x70 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Flags int32 + Addrs int32 + Data IfData +} + +type IfData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Recvquota uint8 + Xmitquota uint8 + Mtu uint64 + Metric uint64 + Link_state uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Hwassist uint64 + Oqdrops uint64 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Flags int32 + Addrs int32 + Addrflags int32 + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Flags int32 + Addrs int32 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits uint64 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Pksent uint64 + Expire uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Recvpipe uint64 + Hopcount uint64 + Mssopt uint16 + Pad uint16 + Msl uint64 + Iwmaxsegs uint64 + Iwcapsegs uint64 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [6]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = 0xfffafdcd + AT_SYMLINK_NOFOLLOW = 0x1 + AT_REMOVEDIR = 0x2 + AT_EACCESS = 0x4 + AT_SYMLINK_FOLLOW = 0x8 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Utsname struct { + Sysname [32]byte + Nodename [32]byte + Release [32]byte + Version [32]byte + Machine [32]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go b/tests/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go new file mode 100644 index 000000000..51e13eb05 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go @@ -0,0 +1,651 @@ +// cgo -godefs types_freebsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build 386 && freebsd + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Time_t int32 + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur int64 + Max int64 +} + +type _Gid_t uint32 + +const ( + _statfsVersion = 0x20140518 + _dirblksiz = 0x400 +) + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint16 + _0 int16 + Uid uint32 + Gid uint32 + _1 int32 + Rdev uint64 + _ int32 + Atim Timespec + _ int32 + Mtim Timespec + _ int32 + Ctim Timespec + _ int32 + Btim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint64 + Spare [10]uint64 +} + +type Statfs_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]byte + Mntfromname [1024]byte + Mntonname [1024]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 + Sysid int32 +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Pad0 uint8 + Namlen uint16 + Pad1 uint16 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [46]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Xucred struct { + Version uint32 + Uid uint32 + Ngroups int16 + Groups [16]uint32 + _ *byte +} + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x36 + SizeofXucred = 0x50 + SizeofLinger = 0x8 + SizeofIovec = 0x8 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type PtraceLwpInfoStruct struct { + Lwpid int32 + Event int32 + Flags int32 + Sigmask Sigset_t + Siglist Sigset_t + Siginfo __PtraceSiginfo + Tdname [20]int8 + Child_pid int32 + Syscall_code uint32 + Syscall_narg uint32 +} + +type __Siginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr *byte + Value [4]byte + _ [32]byte +} +type __PtraceSiginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr uintptr + Value [4]byte + _ [32]byte +} + +type Sigset_t struct { + Val [4]uint32 +} + +type Reg struct { + Fs uint32 + Es uint32 + Ds uint32 + Edi uint32 + Esi uint32 + Ebp uint32 + Isp uint32 + Ebx uint32 + Edx uint32 + Ecx uint32 + Eax uint32 + Trapno uint32 + Err uint32 + Eip uint32 + Cs uint32 + Eflags uint32 + Esp uint32 + Ss uint32 + Gs uint32 +} + +type FpReg struct { + Env [7]uint32 + Acc [8][10]uint8 + Ex_sw uint32 + Pad [64]uint8 +} + +type FpExtendedPrecision struct{} + +type PtraceIoDesc struct { + Op int32 + Offs uintptr + Addr *byte + Len uint32 +} + +type Kevent_t struct { + Ident uint32 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte + Ext [4]uint64 +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + sizeofIfMsghdr = 0xa8 + SizeofIfMsghdr = 0x60 + sizeofIfData = 0x98 + SizeofIfData = 0x50 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x5c + SizeofRtMetrics = 0x38 +) + +type ifMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 + Data ifData +} + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Data IfData +} + +type ifData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Vhid uint8 + Datalen uint16 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Hwassist uint64 + _ [8]byte + _ [16]byte +} + +type IfData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Spare_char1 uint8 + Spare_char2 uint8 + Datalen uint8 + Mtu uint32 + Metric uint32 + Baudrate uint32 + Ipackets uint32 + Ierrors uint32 + Opackets uint32 + Oerrors uint32 + Collisions uint32 + Ibytes uint32 + Obytes uint32 + Imcasts uint32 + Omcasts uint32 + Iqdrops uint32 + Noproto uint32 + Hwassist uint32 + Epoch int32 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ uint16 + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Fmask int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint32 + Mtu uint32 + Hopcount uint32 + Expire uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pksent uint32 + Weight uint32 + Filler [3]uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfZbuf = 0xc + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 + SizeofBpfZbufHeader = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfZbuf struct { + Bufa *byte + Bufb *byte + Buflen uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type BpfZbufHeader struct { + Kernel_gen uint32 + Kernel_len uint32 + User_gen uint32 + _ [5]uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_EACCESS = 0x100 + AT_SYMLINK_NOFOLLOW = 0x200 + AT_SYMLINK_FOLLOW = 0x400 + AT_REMOVEDIR = 0x800 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLINIGNEOF = 0x2000 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 + POLLRDHUP = 0x4000 +) + +type CapRights struct { + Rights [2]uint64 +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Spare int32 + Stathz int32 + Profhz int32 +} diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go b/tests/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go new file mode 100644 index 000000000..d002d8ef3 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go @@ -0,0 +1,656 @@ +// cgo -godefs types_freebsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && freebsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Time_t int64 + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur int64 + Max int64 +} + +type _Gid_t uint32 + +const ( + _statfsVersion = 0x20140518 + _dirblksiz = 0x400 +) + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint16 + _0 int16 + Uid uint32 + Gid uint32 + _1 int32 + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint64 + Spare [10]uint64 +} + +type Statfs_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]byte + Mntfromname [1024]byte + Mntonname [1024]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 + Sysid int32 + _ [4]byte +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Pad0 uint8 + Namlen uint16 + Pad1 uint16 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [46]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Xucred struct { + Version uint32 + Uid uint32 + Ngroups int16 + Groups [16]uint32 + _ *byte +} + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x36 + SizeofXucred = 0x58 + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type PtraceLwpInfoStruct struct { + Lwpid int32 + Event int32 + Flags int32 + Sigmask Sigset_t + Siglist Sigset_t + Siginfo __PtraceSiginfo + Tdname [20]int8 + Child_pid int32 + Syscall_code uint32 + Syscall_narg uint32 +} + +type __Siginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr *byte + Value [8]byte + _ [40]byte +} + +type __PtraceSiginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr uintptr + Value [8]byte + _ [40]byte +} + +type Sigset_t struct { + Val [4]uint32 +} + +type Reg struct { + R15 int64 + R14 int64 + R13 int64 + R12 int64 + R11 int64 + R10 int64 + R9 int64 + R8 int64 + Rdi int64 + Rsi int64 + Rbp int64 + Rbx int64 + Rdx int64 + Rcx int64 + Rax int64 + Trapno uint32 + Fs uint16 + Gs uint16 + Err uint32 + Es uint16 + Ds uint16 + Rip int64 + Cs int64 + Rflags int64 + Rsp int64 + Ss int64 +} + +type FpReg struct { + Env [4]uint64 + Acc [8][16]uint8 + Xacc [16][16]uint8 + Spare [12]uint64 +} + +type FpExtendedPrecision struct{} + +type PtraceIoDesc struct { + Op int32 + Offs uintptr + Addr *byte + Len uint64 +} + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte + Ext [4]uint64 +} + +type FdSet struct { + Bits [16]uint64 +} + +const ( + sizeofIfMsghdr = 0xa8 + SizeofIfMsghdr = 0xa8 + sizeofIfData = 0x98 + SizeofIfData = 0x98 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x98 + SizeofRtMetrics = 0x70 +) + +type ifMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 + Data ifData +} + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Data IfData +} + +type ifData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Vhid uint8 + Datalen uint16 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Hwassist uint64 + _ [8]byte + _ [16]byte +} + +type IfData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Spare_char1 uint8 + Spare_char2 uint8 + Datalen uint8 + Mtu uint64 + Metric uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Hwassist uint64 + Epoch int64 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ uint16 + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Fmask int32 + Inits uint64 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Hopcount uint64 + Expire uint64 + Recvpipe uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Pksent uint64 + Weight uint64 + Filler [3]uint64 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfZbuf = 0x18 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x20 + SizeofBpfZbufHeader = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfZbuf struct { + Bufa *byte + Bufb *byte + Buflen uint64 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [6]byte +} + +type BpfZbufHeader struct { + Kernel_gen uint32 + Kernel_len uint32 + User_gen uint32 + _ [5]uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_EACCESS = 0x100 + AT_SYMLINK_NOFOLLOW = 0x200 + AT_SYMLINK_FOLLOW = 0x400 + AT_REMOVEDIR = 0x800 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLINIGNEOF = 0x2000 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 + POLLRDHUP = 0x4000 +) + +type CapRights struct { + Rights [2]uint64 +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Spare int32 + Stathz int32 + Profhz int32 +} diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go b/tests/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go new file mode 100644 index 000000000..3f863d898 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go @@ -0,0 +1,642 @@ +// cgo -godefs -- -fsigned-char types_freebsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm && freebsd + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int32 + _ [4]byte +} + +type Timeval struct { + Sec int64 + Usec int32 + _ [4]byte +} + +type Time_t int64 + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur int64 + Max int64 +} + +type _Gid_t uint32 + +const ( + _statfsVersion = 0x20140518 + _dirblksiz = 0x400 +) + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint16 + _0 int16 + Uid uint32 + Gid uint32 + _1 int32 + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint64 + Spare [10]uint64 +} + +type Statfs_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]byte + Mntfromname [1024]byte + Mntonname [1024]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 + Sysid int32 + _ [4]byte +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Pad0 uint8 + Namlen uint16 + Pad1 uint16 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [46]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Xucred struct { + Version uint32 + Uid uint32 + Ngroups int16 + Groups [16]uint32 + _ *byte +} + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x36 + SizeofXucred = 0x50 + SizeofLinger = 0x8 + SizeofIovec = 0x8 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type PtraceLwpInfoStruct struct { + Lwpid int32 + Event int32 + Flags int32 + Sigmask Sigset_t + Siglist Sigset_t + Siginfo __PtraceSiginfo + Tdname [20]int8 + Child_pid int32 + Syscall_code uint32 + Syscall_narg uint32 +} + +type __Siginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr *byte + Value [4]byte + _ [32]byte +} + +type __PtraceSiginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr uintptr + Value [4]byte + _ [32]byte +} + +type Sigset_t struct { + Val [4]uint32 +} + +type Reg struct { + R [13]uint32 + Sp uint32 + Lr uint32 + Pc uint32 + Cpsr uint32 +} + +type FpReg struct { + Fpsr uint32 + Fpr [8]FpExtendedPrecision +} + +type FpExtendedPrecision struct { + Exponent uint32 + Mantissa_hi uint32 + Mantissa_lo uint32 +} + +type PtraceIoDesc struct { + Op int32 + Offs uintptr + Addr *byte + Len uint32 +} + +type Kevent_t struct { + Ident uint32 + Filter int16 + Flags uint16 + Fflags uint32 + _ [4]byte + Data int64 + Udata *byte + _ [4]byte + Ext [4]uint64 +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + sizeofIfMsghdr = 0xa8 + SizeofIfMsghdr = 0x70 + sizeofIfData = 0x98 + SizeofIfData = 0x60 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x5c + SizeofRtMetrics = 0x38 +) + +type ifMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 + Data ifData +} + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Data IfData +} + +type ifData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Vhid uint8 + Datalen uint16 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Hwassist uint64 + _ [8]byte + _ [16]byte +} + +type IfData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Spare_char1 uint8 + Spare_char2 uint8 + Datalen uint8 + Mtu uint32 + Metric uint32 + Baudrate uint32 + Ipackets uint32 + Ierrors uint32 + Opackets uint32 + Oerrors uint32 + Collisions uint32 + Ibytes uint32 + Obytes uint32 + Imcasts uint32 + Omcasts uint32 + Iqdrops uint32 + Noproto uint32 + Hwassist uint32 + _ [4]byte + Epoch int64 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ uint16 + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Fmask int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint32 + Mtu uint32 + Hopcount uint32 + Expire uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pksent uint32 + Weight uint32 + Filler [3]uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfZbuf = 0xc + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x20 + SizeofBpfZbufHeader = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfZbuf struct { + Bufa *byte + Bufb *byte + Buflen uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [6]byte +} + +type BpfZbufHeader struct { + Kernel_gen uint32 + Kernel_len uint32 + User_gen uint32 + _ [5]uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_EACCESS = 0x100 + AT_SYMLINK_NOFOLLOW = 0x200 + AT_SYMLINK_FOLLOW = 0x400 + AT_REMOVEDIR = 0x800 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLINIGNEOF = 0x2000 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 + POLLRDHUP = 0x4000 +) + +type CapRights struct { + Rights [2]uint64 +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Spare int32 + Stathz int32 + Profhz int32 +} diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go b/tests/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go new file mode 100644 index 000000000..61c729310 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go @@ -0,0 +1,636 @@ +// cgo -godefs -- -fsigned-char types_freebsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm64 && freebsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Time_t int64 + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur int64 + Max int64 +} + +type _Gid_t uint32 + +const ( + _statfsVersion = 0x20140518 + _dirblksiz = 0x400 +) + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint16 + _0 int16 + Uid uint32 + Gid uint32 + _1 int32 + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint64 + Spare [10]uint64 +} + +type Statfs_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]byte + Mntfromname [1024]byte + Mntonname [1024]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 + Sysid int32 + _ [4]byte +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Pad0 uint8 + Namlen uint16 + Pad1 uint16 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [46]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Xucred struct { + Version uint32 + Uid uint32 + Ngroups int16 + Groups [16]uint32 + _ *byte +} + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x36 + SizeofXucred = 0x58 + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type PtraceLwpInfoStruct struct { + Lwpid int32 + Event int32 + Flags int32 + Sigmask Sigset_t + Siglist Sigset_t + Siginfo __PtraceSiginfo + Tdname [20]int8 + Child_pid int32 + Syscall_code uint32 + Syscall_narg uint32 +} + +type __Siginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr *byte + Value [8]byte + _ [40]byte +} + +type __PtraceSiginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr uintptr + Value [8]byte + _ [40]byte +} + +type Sigset_t struct { + Val [4]uint32 +} + +type Reg struct { + X [30]uint64 + Lr uint64 + Sp uint64 + Elr uint64 + Spsr uint32 + _ [4]byte +} + +type FpReg struct { + Q [32][16]uint8 + Sr uint32 + Cr uint32 + _ [8]byte +} + +type FpExtendedPrecision struct{} + +type PtraceIoDesc struct { + Op int32 + Offs uintptr + Addr *byte + Len uint64 +} + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte + Ext [4]uint64 +} + +type FdSet struct { + Bits [16]uint64 +} + +const ( + sizeofIfMsghdr = 0xa8 + SizeofIfMsghdr = 0xa8 + sizeofIfData = 0x98 + SizeofIfData = 0x98 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x98 + SizeofRtMetrics = 0x70 +) + +type ifMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 + Data ifData +} + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Data IfData +} + +type ifData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Vhid uint8 + Datalen uint16 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Hwassist uint64 + _ [8]byte + _ [16]byte +} + +type IfData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Spare_char1 uint8 + Spare_char2 uint8 + Datalen uint8 + Mtu uint64 + Metric uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Hwassist uint64 + Epoch int64 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ uint16 + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Fmask int32 + Inits uint64 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Hopcount uint64 + Expire uint64 + Recvpipe uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Pksent uint64 + Weight uint64 + Filler [3]uint64 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfZbuf = 0x18 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x20 + SizeofBpfZbufHeader = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfZbuf struct { + Bufa *byte + Bufb *byte + Buflen uint64 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [6]byte +} + +type BpfZbufHeader struct { + Kernel_gen uint32 + Kernel_len uint32 + User_gen uint32 + _ [5]uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_EACCESS = 0x100 + AT_SYMLINK_NOFOLLOW = 0x200 + AT_SYMLINK_FOLLOW = 0x400 + AT_REMOVEDIR = 0x800 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLINIGNEOF = 0x2000 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 + POLLRDHUP = 0x4000 +) + +type CapRights struct { + Rights [2]uint64 +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Spare int32 + Stathz int32 + Profhz int32 +} diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go b/tests/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go new file mode 100644 index 000000000..b5d17414f --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go @@ -0,0 +1,638 @@ +// cgo -godefs -- -fsigned-char types_freebsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build riscv64 && freebsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Time_t int64 + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur int64 + Max int64 +} + +type _Gid_t uint32 + +const ( + _statfsVersion = 0x20140518 + _dirblksiz = 0x400 +) + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint16 + _0 int16 + Uid uint32 + Gid uint32 + _1 int32 + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint64 + Spare [10]uint64 +} + +type Statfs_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]byte + Mntfromname [1024]byte + Mntonname [1024]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 + Sysid int32 + _ [4]byte +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Pad0 uint8 + Namlen uint16 + Pad1 uint16 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [46]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Xucred struct { + Version uint32 + Uid uint32 + Ngroups int16 + Groups [16]uint32 + _ *byte +} + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x36 + SizeofXucred = 0x58 + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type PtraceLwpInfoStruct struct { + Lwpid int32 + Event int32 + Flags int32 + Sigmask Sigset_t + Siglist Sigset_t + Siginfo __PtraceSiginfo + Tdname [20]int8 + Child_pid int32 + Syscall_code uint32 + Syscall_narg uint32 +} + +type __Siginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr *byte + Value [8]byte + _ [40]byte +} + +type __PtraceSiginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr uintptr + Value [8]byte + _ [40]byte +} + +type Sigset_t struct { + Val [4]uint32 +} + +type Reg struct { + Ra uint64 + Sp uint64 + Gp uint64 + Tp uint64 + T [7]uint64 + S [12]uint64 + A [8]uint64 + Sepc uint64 + Sstatus uint64 +} + +type FpReg struct { + X [32][2]uint64 + Fcsr uint64 +} + +type FpExtendedPrecision struct{} + +type PtraceIoDesc struct { + Op int32 + Offs uintptr + Addr *byte + Len uint64 +} + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte + Ext [4]uint64 +} + +type FdSet struct { + Bits [16]uint64 +} + +const ( + sizeofIfMsghdr = 0xa8 + SizeofIfMsghdr = 0xa8 + sizeofIfData = 0x98 + SizeofIfData = 0x98 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x98 + SizeofRtMetrics = 0x70 +) + +type ifMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 + Data ifData +} + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Data IfData +} + +type ifData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Vhid uint8 + Datalen uint16 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Hwassist uint64 + _ [8]byte + _ [16]byte +} + +type IfData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Spare_char1 uint8 + Spare_char2 uint8 + Datalen uint8 + Mtu uint64 + Metric uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Hwassist uint64 + Epoch int64 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ uint16 + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Fmask int32 + Inits uint64 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Hopcount uint64 + Expire uint64 + Recvpipe uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Pksent uint64 + Weight uint64 + Nhidx uint64 + Filler [2]uint64 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfZbuf = 0x18 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x20 + SizeofBpfZbufHeader = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfZbuf struct { + Bufa *byte + Bufb *byte + Buflen uint64 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [6]byte +} + +type BpfZbufHeader struct { + Kernel_gen uint32 + Kernel_len uint32 + User_gen uint32 + _ [5]uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_EACCESS = 0x100 + AT_SYMLINK_NOFOLLOW = 0x200 + AT_SYMLINK_FOLLOW = 0x400 + AT_REMOVEDIR = 0x800 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLINIGNEOF = 0x2000 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 + POLLRDHUP = 0x4000 +) + +type CapRights struct { + Rights [2]uint64 +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Spare int32 + Stathz int32 + Profhz int32 +} diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_linux.go b/tests/vendor/golang.org/x/sys/unix/ztypes_linux.go new file mode 100644 index 000000000..a46abe647 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_linux.go @@ -0,0 +1,6178 @@ +// Code generated by mkmerge; DO NOT EDIT. + +//go:build linux + +package unix + +const ( + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + + _C_long_long int64 +) + +type ItimerSpec struct { + Interval Timespec + Value Timespec +} + +type Itimerval struct { + Interval Timeval + Value Timeval +} + +const ( + ADJ_OFFSET = 0x1 + ADJ_FREQUENCY = 0x2 + ADJ_MAXERROR = 0x4 + ADJ_ESTERROR = 0x8 + ADJ_STATUS = 0x10 + ADJ_TIMECONST = 0x20 + ADJ_TAI = 0x80 + ADJ_SETOFFSET = 0x100 + ADJ_MICRO = 0x1000 + ADJ_NANO = 0x2000 + ADJ_TICK = 0x4000 + ADJ_OFFSET_SINGLESHOT = 0x8001 + ADJ_OFFSET_SS_READ = 0xa001 +) + +const ( + STA_PLL = 0x1 + STA_PPSFREQ = 0x2 + STA_PPSTIME = 0x4 + STA_FLL = 0x8 + STA_INS = 0x10 + STA_DEL = 0x20 + STA_UNSYNC = 0x40 + STA_FREQHOLD = 0x80 + STA_PPSSIGNAL = 0x100 + STA_PPSJITTER = 0x200 + STA_PPSWANDER = 0x400 + STA_PPSERROR = 0x800 + STA_CLOCKERR = 0x1000 + STA_NANO = 0x2000 + STA_MODE = 0x4000 + STA_CLK = 0x8000 +) + +const ( + TIME_OK = 0x0 + TIME_INS = 0x1 + TIME_DEL = 0x2 + TIME_OOP = 0x3 + TIME_WAIT = 0x4 + TIME_ERROR = 0x5 + TIME_BAD = 0x5 +) + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + Mnt_id uint64 + Dio_mem_align uint32 + Dio_offset_align uint32 + Subvol uint64 + Atomic_write_unit_min uint32 + Atomic_write_unit_max uint32 + Atomic_write_segments_max uint32 + _ [1]uint32 + _ [9]uint64 +} + +type Fsid struct { + Val [2]int32 +} + +type FileCloneRange struct { + Src_fd int64 + Src_offset uint64 + Src_length uint64 + Dest_offset uint64 +} + +type RawFileDedupeRange struct { + Src_offset uint64 + Src_length uint64 + Dest_count uint16 + Reserved1 uint16 + Reserved2 uint32 +} + +type RawFileDedupeRangeInfo struct { + Dest_fd int64 + Dest_offset uint64 + Bytes_deduped uint64 + Status int32 + Reserved uint32 +} + +const ( + SizeofRawFileDedupeRange = 0x18 + SizeofRawFileDedupeRangeInfo = 0x20 + FILE_DEDUPE_RANGE_SAME = 0x0 + FILE_DEDUPE_RANGE_DIFFERS = 0x1 +) + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type FscryptPolicyV1 struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptPolicyV2 struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Log2_data_unit_size uint8 + _ [3]uint8 + Master_key_identifier [16]uint8 +} + +type FscryptGetPolicyExArg struct { + Size uint64 + Policy [24]byte +} + +type FscryptKeySpecifier struct { + Type uint32 + _ uint32 + U [32]byte +} + +type FscryptAddKeyArg struct { + Key_spec FscryptKeySpecifier + Raw_size uint32 + Key_id uint32 + _ [8]uint32 +} + +type FscryptRemoveKeyArg struct { + Key_spec FscryptKeySpecifier + Removal_status_flags uint32 + _ [5]uint32 +} + +type FscryptGetKeyStatusArg struct { + Key_spec FscryptKeySpecifier + _ [6]uint32 + Status uint32 + Status_flags uint32 + User_count uint32 + _ [13]uint32 +} + +type DmIoctl struct { + Version [3]uint32 + Data_size uint32 + Data_start uint32 + Target_count uint32 + Open_count int32 + Flags uint32 + Event_nr uint32 + _ uint32 + Dev uint64 + Name [128]byte + Uuid [129]byte + Data [7]byte +} + +type DmTargetSpec struct { + Sector_start uint64 + Length uint64 + Status int32 + Next uint32 + Target_type [16]byte +} + +type DmTargetDeps struct { + Count uint32 + _ uint32 +} + +type DmTargetVersions struct { + Next uint32 + Version [3]uint32 +} + +type DmTargetMsg struct { + Sector uint64 +} + +const ( + SizeofDmIoctl = 0x138 + SizeofDmTargetSpec = 0x28 +) + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [16]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Flags uint8 + Zero [3]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddrTIPC struct { + Family uint16 + Addrtype uint8 + Scope int8 + Addr [12]byte +} + +type RawSockaddrL2TPIP struct { + Family uint16 + Unused uint16 + Addr [4]byte /* in_addr */ + Conn_id uint32 + _ [4]uint8 +} + +type RawSockaddrL2TPIP6 struct { + Family uint16 + Unused uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 + Conn_id uint32 +} + +type RawSockaddrIUCV struct { + Family uint16 + Port uint16 + Addr uint32 + Nodeid [8]int8 + User_id [8]int8 + Name [8]int8 +} + +type RawSockaddrNFC struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 + Pacing_rate uint64 + Max_pacing_rate uint64 + Bytes_acked uint64 + Bytes_received uint64 + Segs_out uint32 + Segs_in uint32 + Notsent_bytes uint32 + Min_rtt uint32 + Data_segs_in uint32 + Data_segs_out uint32 + Delivery_rate uint64 + Busy_time uint64 + Rwnd_limited uint64 + Sndbuf_limited uint64 + Delivered uint32 + Delivered_ce uint32 + Bytes_sent uint64 + Bytes_retrans uint64 + Dsack_dups uint32 + Reord_seen uint32 + Rcv_ooopack uint32 + Snd_wnd uint32 + Rcv_wnd uint32 + Rehash uint32 + Total_rto uint16 + Total_rto_recoveries uint16 + Total_rto_time uint32 +} + +type TCPVegasInfo struct { + Enabled uint32 + Rttcnt uint32 + Rtt uint32 + Minrtt uint32 +} + +type TCPDCTCPInfo struct { + Enabled uint16 + Ce_state uint16 + Alpha uint32 + Ab_ecn uint32 + Ab_tot uint32 +} + +type TCPBBRInfo struct { + Bw_lo uint32 + Bw_hi uint32 + Min_rtt uint32 + Pacing_gain uint32 + Cwnd_gain uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +type TCPRepairOpt struct { + Code uint32 + Val uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x18 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofSockaddrTIPC = 0x10 + SizeofSockaddrL2TPIP = 0x10 + SizeofSockaddrL2TPIP6 = 0x20 + SizeofSockaddrIUCV = 0x20 + SizeofSockaddrNFC = 0x10 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0xf8 + SizeofTCPCCInfo = 0x14 + SizeofCanFilter = 0x8 + SizeofTCPRepairOpt = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofIfaCacheinfo = 0x10 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type IfaCacheinfo struct { + Prefered uint32 + Valid uint32 + Cstamp uint32 + Tstamp uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + ICMP_FILTER = 0x1 + + ICMPV6_FILTER = 0x1 + ICMPV6_FILTER_BLOCK = 0x1 + ICMPV6_FILTER_BLOCKOTHERS = 0x3 + ICMPV6_FILTER_PASS = 0x2 + ICMPV6_FILTER_PASSONLY = 0x4 +) + +const ( + SizeofSockFilter = 0x8 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +const SI_LOAD_SHIFT = 0x10 + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_RECURSIVE = 0x8000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 + + OPEN_TREE_CLONE = 0x1 + + MOVE_MOUNT_F_SYMLINKS = 0x1 + MOVE_MOUNT_F_AUTOMOUNTS = 0x2 + MOVE_MOUNT_F_EMPTY_PATH = 0x4 + MOVE_MOUNT_T_SYMLINKS = 0x10 + MOVE_MOUNT_T_AUTOMOUNTS = 0x20 + MOVE_MOUNT_T_EMPTY_PATH = 0x40 + MOVE_MOUNT_SET_GROUP = 0x100 + + FSOPEN_CLOEXEC = 0x1 + + FSPICK_CLOEXEC = 0x1 + FSPICK_SYMLINK_NOFOLLOW = 0x2 + FSPICK_NO_AUTOMOUNT = 0x4 + FSPICK_EMPTY_PATH = 0x8 + + FSMOUNT_CLOEXEC = 0x1 + + FSCONFIG_SET_FLAG = 0x0 + FSCONFIG_SET_STRING = 0x1 + FSCONFIG_SET_BINARY = 0x2 + FSCONFIG_SET_PATH = 0x3 + FSCONFIG_SET_PATH_EMPTY = 0x4 + FSCONFIG_SET_FD = 0x5 + FSCONFIG_CMD_CREATE = 0x6 + FSCONFIG_CMD_RECONFIGURE = 0x7 +) + +type OpenHow struct { + Flags uint64 + Mode uint64 + Resolve uint64 +} + +const SizeofOpenHow = 0x18 + +const ( + RESOLVE_BENEATH = 0x8 + RESOLVE_IN_ROOT = 0x10 + RESOLVE_NO_MAGICLINKS = 0x2 + RESOLVE_NO_SYMLINKS = 0x4 + RESOLVE_NO_XDEV = 0x1 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type sigset_argpack struct { + ss *Sigset_t + ssLen uintptr +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_CMD_GETPOLICY = 0xa + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_POLICY = 0x8 + CTRL_ATTR_OP_POLICY = 0x9 + CTRL_ATTR_OP = 0xa + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 + CTRL_ATTR_POLICY_UNSPEC = 0x0 + CTRL_ATTR_POLICY_DO = 0x1 + CTRL_ATTR_POLICY_DUMP = 0x2 + CTRL_ATTR_POLICY_DUMP_MAX = 0x2 +) + +const ( + _CPU_SETSIZE = 0x400 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 + Aux_sample_size uint32 + _ uint32 + Sig_data uint64 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ uint32 + Time_cycles uint64 + Time_mask uint64 + _ [928]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 + PerfBitWriteBackward = CBitFieldMaskBit27 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + PERF_TYPE_MAX = 0x6 + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + PERF_COUNT_HW_MAX = 0xa + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + PERF_COUNT_HW_CACHE_MAX = 0x7 + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + PERF_COUNT_HW_CACHE_OP_MAX = 0x3 + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + PERF_COUNT_HW_CACHE_RESULT_MAX = 0x2 + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + PERF_COUNT_SW_MAX = 0xc + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + PERF_SAMPLE_REGS_USER = 0x1000 + PERF_SAMPLE_STACK_USER = 0x2000 + PERF_SAMPLE_WEIGHT = 0x4000 + PERF_SAMPLE_DATA_SRC = 0x8000 + PERF_SAMPLE_IDENTIFIER = 0x10000 + PERF_SAMPLE_TRANSACTION = 0x20000 + PERF_SAMPLE_REGS_INTR = 0x40000 + PERF_SAMPLE_PHYS_ADDR = 0x80000 + PERF_SAMPLE_AUX = 0x100000 + PERF_SAMPLE_CGROUP = 0x200000 + PERF_SAMPLE_DATA_PAGE_SIZE = 0x400000 + PERF_SAMPLE_CODE_PAGE_SIZE = 0x800000 + PERF_SAMPLE_WEIGHT_STRUCT = 0x1000000 + PERF_SAMPLE_MAX = 0x2000000 + PERF_SAMPLE_BRANCH_USER_SHIFT = 0x0 + PERF_SAMPLE_BRANCH_KERNEL_SHIFT = 0x1 + PERF_SAMPLE_BRANCH_HV_SHIFT = 0x2 + PERF_SAMPLE_BRANCH_ANY_SHIFT = 0x3 + PERF_SAMPLE_BRANCH_ANY_CALL_SHIFT = 0x4 + PERF_SAMPLE_BRANCH_ANY_RETURN_SHIFT = 0x5 + PERF_SAMPLE_BRANCH_IND_CALL_SHIFT = 0x6 + PERF_SAMPLE_BRANCH_ABORT_TX_SHIFT = 0x7 + PERF_SAMPLE_BRANCH_IN_TX_SHIFT = 0x8 + PERF_SAMPLE_BRANCH_NO_TX_SHIFT = 0x9 + PERF_SAMPLE_BRANCH_COND_SHIFT = 0xa + PERF_SAMPLE_BRANCH_CALL_STACK_SHIFT = 0xb + PERF_SAMPLE_BRANCH_IND_JUMP_SHIFT = 0xc + PERF_SAMPLE_BRANCH_CALL_SHIFT = 0xd + PERF_SAMPLE_BRANCH_NO_FLAGS_SHIFT = 0xe + PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT = 0xf + PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT = 0x10 + PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT = 0x11 + PERF_SAMPLE_BRANCH_PRIV_SAVE_SHIFT = 0x12 + PERF_SAMPLE_BRANCH_COUNTERS = 0x80000 + PERF_SAMPLE_BRANCH_MAX_SHIFT = 0x14 + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + PERF_SAMPLE_BRANCH_HW_INDEX = 0x20000 + PERF_SAMPLE_BRANCH_PRIV_SAVE = 0x40000 + PERF_SAMPLE_BRANCH_MAX = 0x100000 + PERF_BR_UNKNOWN = 0x0 + PERF_BR_COND = 0x1 + PERF_BR_UNCOND = 0x2 + PERF_BR_IND = 0x3 + PERF_BR_CALL = 0x4 + PERF_BR_IND_CALL = 0x5 + PERF_BR_RET = 0x6 + PERF_BR_SYSCALL = 0x7 + PERF_BR_SYSRET = 0x8 + PERF_BR_COND_CALL = 0x9 + PERF_BR_COND_RET = 0xa + PERF_BR_ERET = 0xb + PERF_BR_IRQ = 0xc + PERF_BR_SERROR = 0xd + PERF_BR_NO_TX = 0xe + PERF_BR_EXTEND_ABI = 0xf + PERF_BR_MAX = 0x10 + PERF_SAMPLE_REGS_ABI_NONE = 0x0 + PERF_SAMPLE_REGS_ABI_32 = 0x1 + PERF_SAMPLE_REGS_ABI_64 = 0x2 + PERF_TXN_ELISION = 0x1 + PERF_TXN_TRANSACTION = 0x2 + PERF_TXN_SYNC = 0x4 + PERF_TXN_ASYNC = 0x8 + PERF_TXN_RETRY = 0x10 + PERF_TXN_CONFLICT = 0x20 + PERF_TXN_CAPACITY_WRITE = 0x40 + PERF_TXN_CAPACITY_READ = 0x80 + PERF_TXN_MAX = 0x100 + PERF_TXN_ABORT_MASK = -0x100000000 + PERF_TXN_ABORT_SHIFT = 0x20 + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + PERF_FORMAT_LOST = 0x10 + PERF_FORMAT_MAX = 0x20 + PERF_IOC_FLAG_GROUP = 0x1 + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + PERF_RECORD_KSYMBOL = 0x11 + PERF_RECORD_BPF_EVENT = 0x12 + PERF_RECORD_CGROUP = 0x13 + PERF_RECORD_TEXT_POKE = 0x14 + PERF_RECORD_AUX_OUTPUT_HW_ID = 0x15 + PERF_RECORD_MAX = 0x16 + PERF_RECORD_KSYMBOL_TYPE_UNKNOWN = 0x0 + PERF_RECORD_KSYMBOL_TYPE_BPF = 0x1 + PERF_RECORD_KSYMBOL_TYPE_OOL = 0x2 + PERF_RECORD_KSYMBOL_TYPE_MAX = 0x3 + PERF_BPF_EVENT_UNKNOWN = 0x0 + PERF_BPF_EVENT_PROG_LOAD = 0x1 + PERF_BPF_EVENT_PROG_UNLOAD = 0x2 + PERF_BPF_EVENT_MAX = 0x3 + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + PERF_CONTEXT_MAX = -0xfff +) + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + Ifindex int32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_PROP_LIST = 0x34 + IFLA_ALT_IFNAME = 0x35 + IFLA_PERM_ADDRESS = 0x36 + IFLA_PROTO_DOWN_REASON = 0x37 + IFLA_PARENT_DEV_NAME = 0x38 + IFLA_PARENT_DEV_BUS_NAME = 0x39 + IFLA_GRO_MAX_SIZE = 0x3a + IFLA_TSO_MAX_SIZE = 0x3b + IFLA_TSO_MAX_SEGS = 0x3c + IFLA_ALLMULTI = 0x3d + IFLA_DEVLINK_PORT = 0x3e + IFLA_GSO_IPV4_MAX_SIZE = 0x3f + IFLA_GRO_IPV4_MAX_SIZE = 0x40 + IFLA_DPLL_PIN = 0x41 + IFLA_PROTO_DOWN_REASON_UNSPEC = 0x0 + IFLA_PROTO_DOWN_REASON_MASK = 0x1 + IFLA_PROTO_DOWN_REASON_VALUE = 0x2 + IFLA_PROTO_DOWN_REASON_MAX = 0x2 + IFLA_INET_UNSPEC = 0x0 + IFLA_INET_CONF = 0x1 + IFLA_INET6_UNSPEC = 0x0 + IFLA_INET6_FLAGS = 0x1 + IFLA_INET6_CONF = 0x2 + IFLA_INET6_STATS = 0x3 + IFLA_INET6_MCAST = 0x4 + IFLA_INET6_CACHEINFO = 0x5 + IFLA_INET6_ICMP6STATS = 0x6 + IFLA_INET6_TOKEN = 0x7 + IFLA_INET6_ADDR_GEN_MODE = 0x8 + IFLA_INET6_RA_MTU = 0x9 + IFLA_BR_UNSPEC = 0x0 + IFLA_BR_FORWARD_DELAY = 0x1 + IFLA_BR_HELLO_TIME = 0x2 + IFLA_BR_MAX_AGE = 0x3 + IFLA_BR_AGEING_TIME = 0x4 + IFLA_BR_STP_STATE = 0x5 + IFLA_BR_PRIORITY = 0x6 + IFLA_BR_VLAN_FILTERING = 0x7 + IFLA_BR_VLAN_PROTOCOL = 0x8 + IFLA_BR_GROUP_FWD_MASK = 0x9 + IFLA_BR_ROOT_ID = 0xa + IFLA_BR_BRIDGE_ID = 0xb + IFLA_BR_ROOT_PORT = 0xc + IFLA_BR_ROOT_PATH_COST = 0xd + IFLA_BR_TOPOLOGY_CHANGE = 0xe + IFLA_BR_TOPOLOGY_CHANGE_DETECTED = 0xf + IFLA_BR_HELLO_TIMER = 0x10 + IFLA_BR_TCN_TIMER = 0x11 + IFLA_BR_TOPOLOGY_CHANGE_TIMER = 0x12 + IFLA_BR_GC_TIMER = 0x13 + IFLA_BR_GROUP_ADDR = 0x14 + IFLA_BR_FDB_FLUSH = 0x15 + IFLA_BR_MCAST_ROUTER = 0x16 + IFLA_BR_MCAST_SNOOPING = 0x17 + IFLA_BR_MCAST_QUERY_USE_IFADDR = 0x18 + IFLA_BR_MCAST_QUERIER = 0x19 + IFLA_BR_MCAST_HASH_ELASTICITY = 0x1a + IFLA_BR_MCAST_HASH_MAX = 0x1b + IFLA_BR_MCAST_LAST_MEMBER_CNT = 0x1c + IFLA_BR_MCAST_STARTUP_QUERY_CNT = 0x1d + IFLA_BR_MCAST_LAST_MEMBER_INTVL = 0x1e + IFLA_BR_MCAST_MEMBERSHIP_INTVL = 0x1f + IFLA_BR_MCAST_QUERIER_INTVL = 0x20 + IFLA_BR_MCAST_QUERY_INTVL = 0x21 + IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 0x22 + IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 0x23 + IFLA_BR_NF_CALL_IPTABLES = 0x24 + IFLA_BR_NF_CALL_IP6TABLES = 0x25 + IFLA_BR_NF_CALL_ARPTABLES = 0x26 + IFLA_BR_VLAN_DEFAULT_PVID = 0x27 + IFLA_BR_PAD = 0x28 + IFLA_BR_VLAN_STATS_ENABLED = 0x29 + IFLA_BR_MCAST_STATS_ENABLED = 0x2a + IFLA_BR_MCAST_IGMP_VERSION = 0x2b + IFLA_BR_MCAST_MLD_VERSION = 0x2c + IFLA_BR_VLAN_STATS_PER_PORT = 0x2d + IFLA_BR_MULTI_BOOLOPT = 0x2e + IFLA_BR_MCAST_QUERIER_STATE = 0x2f + IFLA_BR_FDB_N_LEARNED = 0x30 + IFLA_BR_FDB_MAX_LEARNED = 0x31 + IFLA_BRPORT_UNSPEC = 0x0 + IFLA_BRPORT_STATE = 0x1 + IFLA_BRPORT_PRIORITY = 0x2 + IFLA_BRPORT_COST = 0x3 + IFLA_BRPORT_MODE = 0x4 + IFLA_BRPORT_GUARD = 0x5 + IFLA_BRPORT_PROTECT = 0x6 + IFLA_BRPORT_FAST_LEAVE = 0x7 + IFLA_BRPORT_LEARNING = 0x8 + IFLA_BRPORT_UNICAST_FLOOD = 0x9 + IFLA_BRPORT_PROXYARP = 0xa + IFLA_BRPORT_LEARNING_SYNC = 0xb + IFLA_BRPORT_PROXYARP_WIFI = 0xc + IFLA_BRPORT_ROOT_ID = 0xd + IFLA_BRPORT_BRIDGE_ID = 0xe + IFLA_BRPORT_DESIGNATED_PORT = 0xf + IFLA_BRPORT_DESIGNATED_COST = 0x10 + IFLA_BRPORT_ID = 0x11 + IFLA_BRPORT_NO = 0x12 + IFLA_BRPORT_TOPOLOGY_CHANGE_ACK = 0x13 + IFLA_BRPORT_CONFIG_PENDING = 0x14 + IFLA_BRPORT_MESSAGE_AGE_TIMER = 0x15 + IFLA_BRPORT_FORWARD_DELAY_TIMER = 0x16 + IFLA_BRPORT_HOLD_TIMER = 0x17 + IFLA_BRPORT_FLUSH = 0x18 + IFLA_BRPORT_MULTICAST_ROUTER = 0x19 + IFLA_BRPORT_PAD = 0x1a + IFLA_BRPORT_MCAST_FLOOD = 0x1b + IFLA_BRPORT_MCAST_TO_UCAST = 0x1c + IFLA_BRPORT_VLAN_TUNNEL = 0x1d + IFLA_BRPORT_BCAST_FLOOD = 0x1e + IFLA_BRPORT_GROUP_FWD_MASK = 0x1f + IFLA_BRPORT_NEIGH_SUPPRESS = 0x20 + IFLA_BRPORT_ISOLATED = 0x21 + IFLA_BRPORT_BACKUP_PORT = 0x22 + IFLA_BRPORT_MRP_RING_OPEN = 0x23 + IFLA_BRPORT_MRP_IN_OPEN = 0x24 + IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT = 0x25 + IFLA_BRPORT_MCAST_EHT_HOSTS_CNT = 0x26 + IFLA_BRPORT_LOCKED = 0x27 + IFLA_BRPORT_MAB = 0x28 + IFLA_BRPORT_MCAST_N_GROUPS = 0x29 + IFLA_BRPORT_MCAST_MAX_GROUPS = 0x2a + IFLA_BRPORT_NEIGH_VLAN_SUPPRESS = 0x2b + IFLA_BRPORT_BACKUP_NHID = 0x2c + IFLA_INFO_UNSPEC = 0x0 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + IFLA_VLAN_UNSPEC = 0x0 + IFLA_VLAN_ID = 0x1 + IFLA_VLAN_FLAGS = 0x2 + IFLA_VLAN_EGRESS_QOS = 0x3 + IFLA_VLAN_INGRESS_QOS = 0x4 + IFLA_VLAN_PROTOCOL = 0x5 + IFLA_VLAN_QOS_UNSPEC = 0x0 + IFLA_VLAN_QOS_MAPPING = 0x1 + IFLA_MACVLAN_UNSPEC = 0x0 + IFLA_MACVLAN_MODE = 0x1 + IFLA_MACVLAN_FLAGS = 0x2 + IFLA_MACVLAN_MACADDR_MODE = 0x3 + IFLA_MACVLAN_MACADDR = 0x4 + IFLA_MACVLAN_MACADDR_DATA = 0x5 + IFLA_MACVLAN_MACADDR_COUNT = 0x6 + IFLA_MACVLAN_BC_QUEUE_LEN = 0x7 + IFLA_MACVLAN_BC_QUEUE_LEN_USED = 0x8 + IFLA_MACVLAN_BC_CUTOFF = 0x9 + IFLA_VRF_UNSPEC = 0x0 + IFLA_VRF_TABLE = 0x1 + IFLA_VRF_PORT_UNSPEC = 0x0 + IFLA_VRF_PORT_TABLE = 0x1 + IFLA_MACSEC_UNSPEC = 0x0 + IFLA_MACSEC_SCI = 0x1 + IFLA_MACSEC_PORT = 0x2 + IFLA_MACSEC_ICV_LEN = 0x3 + IFLA_MACSEC_CIPHER_SUITE = 0x4 + IFLA_MACSEC_WINDOW = 0x5 + IFLA_MACSEC_ENCODING_SA = 0x6 + IFLA_MACSEC_ENCRYPT = 0x7 + IFLA_MACSEC_PROTECT = 0x8 + IFLA_MACSEC_INC_SCI = 0x9 + IFLA_MACSEC_ES = 0xa + IFLA_MACSEC_SCB = 0xb + IFLA_MACSEC_REPLAY_PROTECT = 0xc + IFLA_MACSEC_VALIDATION = 0xd + IFLA_MACSEC_PAD = 0xe + IFLA_MACSEC_OFFLOAD = 0xf + IFLA_XFRM_UNSPEC = 0x0 + IFLA_XFRM_LINK = 0x1 + IFLA_XFRM_IF_ID = 0x2 + IFLA_XFRM_COLLECT_METADATA = 0x3 + IFLA_IPVLAN_UNSPEC = 0x0 + IFLA_IPVLAN_MODE = 0x1 + IFLA_IPVLAN_FLAGS = 0x2 + IFLA_NETKIT_UNSPEC = 0x0 + IFLA_NETKIT_PEER_INFO = 0x1 + IFLA_NETKIT_PRIMARY = 0x2 + IFLA_NETKIT_POLICY = 0x3 + IFLA_NETKIT_PEER_POLICY = 0x4 + IFLA_NETKIT_MODE = 0x5 + IFLA_VXLAN_UNSPEC = 0x0 + IFLA_VXLAN_ID = 0x1 + IFLA_VXLAN_GROUP = 0x2 + IFLA_VXLAN_LINK = 0x3 + IFLA_VXLAN_LOCAL = 0x4 + IFLA_VXLAN_TTL = 0x5 + IFLA_VXLAN_TOS = 0x6 + IFLA_VXLAN_LEARNING = 0x7 + IFLA_VXLAN_AGEING = 0x8 + IFLA_VXLAN_LIMIT = 0x9 + IFLA_VXLAN_PORT_RANGE = 0xa + IFLA_VXLAN_PROXY = 0xb + IFLA_VXLAN_RSC = 0xc + IFLA_VXLAN_L2MISS = 0xd + IFLA_VXLAN_L3MISS = 0xe + IFLA_VXLAN_PORT = 0xf + IFLA_VXLAN_GROUP6 = 0x10 + IFLA_VXLAN_LOCAL6 = 0x11 + IFLA_VXLAN_UDP_CSUM = 0x12 + IFLA_VXLAN_UDP_ZERO_CSUM6_TX = 0x13 + IFLA_VXLAN_UDP_ZERO_CSUM6_RX = 0x14 + IFLA_VXLAN_REMCSUM_TX = 0x15 + IFLA_VXLAN_REMCSUM_RX = 0x16 + IFLA_VXLAN_GBP = 0x17 + IFLA_VXLAN_REMCSUM_NOPARTIAL = 0x18 + IFLA_VXLAN_COLLECT_METADATA = 0x19 + IFLA_VXLAN_LABEL = 0x1a + IFLA_VXLAN_GPE = 0x1b + IFLA_VXLAN_TTL_INHERIT = 0x1c + IFLA_VXLAN_DF = 0x1d + IFLA_VXLAN_VNIFILTER = 0x1e + IFLA_VXLAN_LOCALBYPASS = 0x1f + IFLA_VXLAN_LABEL_POLICY = 0x20 + IFLA_GENEVE_UNSPEC = 0x0 + IFLA_GENEVE_ID = 0x1 + IFLA_GENEVE_REMOTE = 0x2 + IFLA_GENEVE_TTL = 0x3 + IFLA_GENEVE_TOS = 0x4 + IFLA_GENEVE_PORT = 0x5 + IFLA_GENEVE_COLLECT_METADATA = 0x6 + IFLA_GENEVE_REMOTE6 = 0x7 + IFLA_GENEVE_UDP_CSUM = 0x8 + IFLA_GENEVE_UDP_ZERO_CSUM6_TX = 0x9 + IFLA_GENEVE_UDP_ZERO_CSUM6_RX = 0xa + IFLA_GENEVE_LABEL = 0xb + IFLA_GENEVE_TTL_INHERIT = 0xc + IFLA_GENEVE_DF = 0xd + IFLA_GENEVE_INNER_PROTO_INHERIT = 0xe + IFLA_BAREUDP_UNSPEC = 0x0 + IFLA_BAREUDP_PORT = 0x1 + IFLA_BAREUDP_ETHERTYPE = 0x2 + IFLA_BAREUDP_SRCPORT_MIN = 0x3 + IFLA_BAREUDP_MULTIPROTO_MODE = 0x4 + IFLA_PPP_UNSPEC = 0x0 + IFLA_PPP_DEV_FD = 0x1 + IFLA_GTP_UNSPEC = 0x0 + IFLA_GTP_FD0 = 0x1 + IFLA_GTP_FD1 = 0x2 + IFLA_GTP_PDP_HASHSIZE = 0x3 + IFLA_GTP_ROLE = 0x4 + IFLA_GTP_CREATE_SOCKETS = 0x5 + IFLA_GTP_RESTART_COUNT = 0x6 + IFLA_GTP_LOCAL = 0x7 + IFLA_GTP_LOCAL6 = 0x8 + IFLA_BOND_UNSPEC = 0x0 + IFLA_BOND_MODE = 0x1 + IFLA_BOND_ACTIVE_SLAVE = 0x2 + IFLA_BOND_MIIMON = 0x3 + IFLA_BOND_UPDELAY = 0x4 + IFLA_BOND_DOWNDELAY = 0x5 + IFLA_BOND_USE_CARRIER = 0x6 + IFLA_BOND_ARP_INTERVAL = 0x7 + IFLA_BOND_ARP_IP_TARGET = 0x8 + IFLA_BOND_ARP_VALIDATE = 0x9 + IFLA_BOND_ARP_ALL_TARGETS = 0xa + IFLA_BOND_PRIMARY = 0xb + IFLA_BOND_PRIMARY_RESELECT = 0xc + IFLA_BOND_FAIL_OVER_MAC = 0xd + IFLA_BOND_XMIT_HASH_POLICY = 0xe + IFLA_BOND_RESEND_IGMP = 0xf + IFLA_BOND_NUM_PEER_NOTIF = 0x10 + IFLA_BOND_ALL_SLAVES_ACTIVE = 0x11 + IFLA_BOND_MIN_LINKS = 0x12 + IFLA_BOND_LP_INTERVAL = 0x13 + IFLA_BOND_PACKETS_PER_SLAVE = 0x14 + IFLA_BOND_AD_LACP_RATE = 0x15 + IFLA_BOND_AD_SELECT = 0x16 + IFLA_BOND_AD_INFO = 0x17 + IFLA_BOND_AD_ACTOR_SYS_PRIO = 0x18 + IFLA_BOND_AD_USER_PORT_KEY = 0x19 + IFLA_BOND_AD_ACTOR_SYSTEM = 0x1a + IFLA_BOND_TLB_DYNAMIC_LB = 0x1b + IFLA_BOND_PEER_NOTIF_DELAY = 0x1c + IFLA_BOND_AD_LACP_ACTIVE = 0x1d + IFLA_BOND_MISSED_MAX = 0x1e + IFLA_BOND_NS_IP6_TARGET = 0x1f + IFLA_BOND_COUPLED_CONTROL = 0x20 + IFLA_BOND_AD_INFO_UNSPEC = 0x0 + IFLA_BOND_AD_INFO_AGGREGATOR = 0x1 + IFLA_BOND_AD_INFO_NUM_PORTS = 0x2 + IFLA_BOND_AD_INFO_ACTOR_KEY = 0x3 + IFLA_BOND_AD_INFO_PARTNER_KEY = 0x4 + IFLA_BOND_AD_INFO_PARTNER_MAC = 0x5 + IFLA_BOND_SLAVE_UNSPEC = 0x0 + IFLA_BOND_SLAVE_STATE = 0x1 + IFLA_BOND_SLAVE_MII_STATUS = 0x2 + IFLA_BOND_SLAVE_LINK_FAILURE_COUNT = 0x3 + IFLA_BOND_SLAVE_PERM_HWADDR = 0x4 + IFLA_BOND_SLAVE_QUEUE_ID = 0x5 + IFLA_BOND_SLAVE_AD_AGGREGATOR_ID = 0x6 + IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE = 0x7 + IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE = 0x8 + IFLA_BOND_SLAVE_PRIO = 0x9 + IFLA_VF_INFO_UNSPEC = 0x0 + IFLA_VF_INFO = 0x1 + IFLA_VF_UNSPEC = 0x0 + IFLA_VF_MAC = 0x1 + IFLA_VF_VLAN = 0x2 + IFLA_VF_TX_RATE = 0x3 + IFLA_VF_SPOOFCHK = 0x4 + IFLA_VF_LINK_STATE = 0x5 + IFLA_VF_RATE = 0x6 + IFLA_VF_RSS_QUERY_EN = 0x7 + IFLA_VF_STATS = 0x8 + IFLA_VF_TRUST = 0x9 + IFLA_VF_IB_NODE_GUID = 0xa + IFLA_VF_IB_PORT_GUID = 0xb + IFLA_VF_VLAN_LIST = 0xc + IFLA_VF_BROADCAST = 0xd + IFLA_VF_VLAN_INFO_UNSPEC = 0x0 + IFLA_VF_VLAN_INFO = 0x1 + IFLA_VF_LINK_STATE_AUTO = 0x0 + IFLA_VF_LINK_STATE_ENABLE = 0x1 + IFLA_VF_LINK_STATE_DISABLE = 0x2 + IFLA_VF_STATS_RX_PACKETS = 0x0 + IFLA_VF_STATS_TX_PACKETS = 0x1 + IFLA_VF_STATS_RX_BYTES = 0x2 + IFLA_VF_STATS_TX_BYTES = 0x3 + IFLA_VF_STATS_BROADCAST = 0x4 + IFLA_VF_STATS_MULTICAST = 0x5 + IFLA_VF_STATS_PAD = 0x6 + IFLA_VF_STATS_RX_DROPPED = 0x7 + IFLA_VF_STATS_TX_DROPPED = 0x8 + IFLA_VF_PORT_UNSPEC = 0x0 + IFLA_VF_PORT = 0x1 + IFLA_PORT_UNSPEC = 0x0 + IFLA_PORT_VF = 0x1 + IFLA_PORT_PROFILE = 0x2 + IFLA_PORT_VSI_TYPE = 0x3 + IFLA_PORT_INSTANCE_UUID = 0x4 + IFLA_PORT_HOST_UUID = 0x5 + IFLA_PORT_REQUEST = 0x6 + IFLA_PORT_RESPONSE = 0x7 + IFLA_IPOIB_UNSPEC = 0x0 + IFLA_IPOIB_PKEY = 0x1 + IFLA_IPOIB_MODE = 0x2 + IFLA_IPOIB_UMCAST = 0x3 + IFLA_HSR_UNSPEC = 0x0 + IFLA_HSR_SLAVE1 = 0x1 + IFLA_HSR_SLAVE2 = 0x2 + IFLA_HSR_MULTICAST_SPEC = 0x3 + IFLA_HSR_SUPERVISION_ADDR = 0x4 + IFLA_HSR_SEQ_NR = 0x5 + IFLA_HSR_VERSION = 0x6 + IFLA_HSR_PROTOCOL = 0x7 + IFLA_HSR_INTERLINK = 0x8 + IFLA_STATS_UNSPEC = 0x0 + IFLA_STATS_LINK_64 = 0x1 + IFLA_STATS_LINK_XSTATS = 0x2 + IFLA_STATS_LINK_XSTATS_SLAVE = 0x3 + IFLA_STATS_LINK_OFFLOAD_XSTATS = 0x4 + IFLA_STATS_AF_SPEC = 0x5 + IFLA_STATS_GETSET_UNSPEC = 0x0 + IFLA_STATS_GET_FILTERS = 0x1 + IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 0x2 + IFLA_OFFLOAD_XSTATS_UNSPEC = 0x0 + IFLA_OFFLOAD_XSTATS_CPU_HIT = 0x1 + IFLA_OFFLOAD_XSTATS_HW_S_INFO = 0x2 + IFLA_OFFLOAD_XSTATS_L3_STATS = 0x3 + IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC = 0x0 + IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST = 0x1 + IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 0x2 + IFLA_XDP_UNSPEC = 0x0 + IFLA_XDP_FD = 0x1 + IFLA_XDP_ATTACHED = 0x2 + IFLA_XDP_FLAGS = 0x3 + IFLA_XDP_PROG_ID = 0x4 + IFLA_XDP_DRV_PROG_ID = 0x5 + IFLA_XDP_SKB_PROG_ID = 0x6 + IFLA_XDP_HW_PROG_ID = 0x7 + IFLA_XDP_EXPECTED_FD = 0x8 + IFLA_EVENT_NONE = 0x0 + IFLA_EVENT_REBOOT = 0x1 + IFLA_EVENT_FEATURES = 0x2 + IFLA_EVENT_BONDING_FAILOVER = 0x3 + IFLA_EVENT_NOTIFY_PEERS = 0x4 + IFLA_EVENT_IGMP_RESEND = 0x5 + IFLA_EVENT_BONDING_OPTIONS = 0x6 + IFLA_TUN_UNSPEC = 0x0 + IFLA_TUN_OWNER = 0x1 + IFLA_TUN_GROUP = 0x2 + IFLA_TUN_TYPE = 0x3 + IFLA_TUN_PI = 0x4 + IFLA_TUN_VNET_HDR = 0x5 + IFLA_TUN_PERSIST = 0x6 + IFLA_TUN_MULTI_QUEUE = 0x7 + IFLA_TUN_NUM_QUEUES = 0x8 + IFLA_TUN_NUM_DISABLED_QUEUES = 0x9 + IFLA_RMNET_UNSPEC = 0x0 + IFLA_RMNET_MUX_ID = 0x1 + IFLA_RMNET_FLAGS = 0x2 + IFLA_MCTP_UNSPEC = 0x0 + IFLA_MCTP_NET = 0x1 + IFLA_DSA_UNSPEC = 0x0 + IFLA_DSA_CONDUIT = 0x1 + IFLA_DSA_MASTER = 0x1 +) + +const ( + NETKIT_NEXT = -0x1 + NETKIT_PASS = 0x0 + NETKIT_DROP = 0x2 + NETKIT_REDIRECT = 0x7 + NETKIT_L2 = 0x0 + NETKIT_L3 = 0x1 +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_EGRESS = 0x1 + NF_NETDEV_NUMHOOKS = 0x2 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +const SO_ORIGINAL_DST = 0x50 + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_NEWFLOWTABLE = 0x16 + NFT_MSG_GETFLOWTABLE = 0x17 + NFT_MSG_DELFLOWTABLE = 0x18 + NFT_MSG_GETRULE_RESET = 0x19 + NFT_MSG_MAX = 0x22 + NFTA_LIST_UNSPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +const ( + NFTA_TARGET_UNSPEC = 0x0 + NFTA_TARGET_NAME = 0x1 + NFTA_TARGET_REV = 0x2 + NFTA_TARGET_INFO = 0x3 + NFTA_MATCH_UNSPEC = 0x0 + NFTA_MATCH_NAME = 0x1 + NFTA_MATCH_REV = 0x2 + NFTA_MATCH_INFO = 0x3 + NFTA_COMPAT_UNSPEC = 0x0 + NFTA_COMPAT_NAME = 0x1 + NFTA_COMPAT_REV = 0x2 + NFTA_COMPAT_TYPE = 0x3 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +const ( + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 + NETNSA_TARGET_NSID = 0x4 + NETNSA_CURRENT_NSID = 0x5 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 + Flags uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 + Flags uint32 + Tx_metadata_len uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 + Rx_ring_full uint64 + Rx_fill_ring_empty_descs uint64 + Tx_ring_empty_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + SOF_TIMESTAMPING_BIND_PHC = 0x8000 + SOF_TIMESTAMPING_OPT_ID_TCP = 0x10000 + + SOF_TIMESTAMPING_LAST = 0x20000 + SOF_TIMESTAMPING_MASK = 0x3ffff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +const ( + BPF_REG_0 = 0x0 + BPF_REG_1 = 0x1 + BPF_REG_2 = 0x2 + BPF_REG_3 = 0x3 + BPF_REG_4 = 0x4 + BPF_REG_5 = 0x5 + BPF_REG_6 = 0x6 + BPF_REG_7 = 0x7 + BPF_REG_8 = 0x8 + BPF_REG_9 = 0x9 + BPF_REG_10 = 0xa + BPF_CGROUP_ITER_ORDER_UNSPEC = 0x0 + BPF_CGROUP_ITER_SELF_ONLY = 0x1 + BPF_CGROUP_ITER_DESCENDANTS_PRE = 0x2 + BPF_CGROUP_ITER_DESCENDANTS_POST = 0x3 + BPF_CGROUP_ITER_ANCESTORS_UP = 0x4 + BPF_MAP_CREATE = 0x0 + BPF_MAP_LOOKUP_ELEM = 0x1 + BPF_MAP_UPDATE_ELEM = 0x2 + BPF_MAP_DELETE_ELEM = 0x3 + BPF_MAP_GET_NEXT_KEY = 0x4 + BPF_PROG_LOAD = 0x5 + BPF_OBJ_PIN = 0x6 + BPF_OBJ_GET = 0x7 + BPF_PROG_ATTACH = 0x8 + BPF_PROG_DETACH = 0x9 + BPF_PROG_TEST_RUN = 0xa + BPF_PROG_RUN = 0xa + BPF_PROG_GET_NEXT_ID = 0xb + BPF_MAP_GET_NEXT_ID = 0xc + BPF_PROG_GET_FD_BY_ID = 0xd + BPF_MAP_GET_FD_BY_ID = 0xe + BPF_OBJ_GET_INFO_BY_FD = 0xf + BPF_PROG_QUERY = 0x10 + BPF_RAW_TRACEPOINT_OPEN = 0x11 + BPF_BTF_LOAD = 0x12 + BPF_BTF_GET_FD_BY_ID = 0x13 + BPF_TASK_FD_QUERY = 0x14 + BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 + BPF_MAP_FREEZE = 0x16 + BPF_BTF_GET_NEXT_ID = 0x17 + BPF_MAP_LOOKUP_BATCH = 0x18 + BPF_MAP_LOOKUP_AND_DELETE_BATCH = 0x19 + BPF_MAP_UPDATE_BATCH = 0x1a + BPF_MAP_DELETE_BATCH = 0x1b + BPF_LINK_CREATE = 0x1c + BPF_LINK_UPDATE = 0x1d + BPF_LINK_GET_FD_BY_ID = 0x1e + BPF_LINK_GET_NEXT_ID = 0x1f + BPF_ENABLE_STATS = 0x20 + BPF_ITER_CREATE = 0x21 + BPF_LINK_DETACH = 0x22 + BPF_PROG_BIND_MAP = 0x23 + BPF_MAP_TYPE_UNSPEC = 0x0 + BPF_MAP_TYPE_HASH = 0x1 + BPF_MAP_TYPE_ARRAY = 0x2 + BPF_MAP_TYPE_PROG_ARRAY = 0x3 + BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 + BPF_MAP_TYPE_PERCPU_HASH = 0x5 + BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 + BPF_MAP_TYPE_STACK_TRACE = 0x7 + BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 + BPF_MAP_TYPE_LRU_HASH = 0x9 + BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa + BPF_MAP_TYPE_LPM_TRIE = 0xb + BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc + BPF_MAP_TYPE_HASH_OF_MAPS = 0xd + BPF_MAP_TYPE_DEVMAP = 0xe + BPF_MAP_TYPE_SOCKMAP = 0xf + BPF_MAP_TYPE_CPUMAP = 0x10 + BPF_MAP_TYPE_XSKMAP = 0x11 + BPF_MAP_TYPE_SOCKHASH = 0x12 + BPF_MAP_TYPE_CGROUP_STORAGE_DEPRECATED = 0x13 + BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 + BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 + BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 + BPF_MAP_TYPE_QUEUE = 0x16 + BPF_MAP_TYPE_STACK = 0x17 + BPF_MAP_TYPE_SK_STORAGE = 0x18 + BPF_MAP_TYPE_DEVMAP_HASH = 0x19 + BPF_MAP_TYPE_STRUCT_OPS = 0x1a + BPF_MAP_TYPE_RINGBUF = 0x1b + BPF_MAP_TYPE_INODE_STORAGE = 0x1c + BPF_MAP_TYPE_TASK_STORAGE = 0x1d + BPF_MAP_TYPE_BLOOM_FILTER = 0x1e + BPF_MAP_TYPE_USER_RINGBUF = 0x1f + BPF_MAP_TYPE_CGRP_STORAGE = 0x20 + BPF_PROG_TYPE_UNSPEC = 0x0 + BPF_PROG_TYPE_SOCKET_FILTER = 0x1 + BPF_PROG_TYPE_KPROBE = 0x2 + BPF_PROG_TYPE_SCHED_CLS = 0x3 + BPF_PROG_TYPE_SCHED_ACT = 0x4 + BPF_PROG_TYPE_TRACEPOINT = 0x5 + BPF_PROG_TYPE_XDP = 0x6 + BPF_PROG_TYPE_PERF_EVENT = 0x7 + BPF_PROG_TYPE_CGROUP_SKB = 0x8 + BPF_PROG_TYPE_CGROUP_SOCK = 0x9 + BPF_PROG_TYPE_LWT_IN = 0xa + BPF_PROG_TYPE_LWT_OUT = 0xb + BPF_PROG_TYPE_LWT_XMIT = 0xc + BPF_PROG_TYPE_SOCK_OPS = 0xd + BPF_PROG_TYPE_SK_SKB = 0xe + BPF_PROG_TYPE_CGROUP_DEVICE = 0xf + BPF_PROG_TYPE_SK_MSG = 0x10 + BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 + BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 + BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 + BPF_PROG_TYPE_LIRC_MODE2 = 0x14 + BPF_PROG_TYPE_SK_REUSEPORT = 0x15 + BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 + BPF_PROG_TYPE_CGROUP_SYSCTL = 0x17 + BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE = 0x18 + BPF_PROG_TYPE_CGROUP_SOCKOPT = 0x19 + BPF_PROG_TYPE_TRACING = 0x1a + BPF_PROG_TYPE_STRUCT_OPS = 0x1b + BPF_PROG_TYPE_EXT = 0x1c + BPF_PROG_TYPE_LSM = 0x1d + BPF_PROG_TYPE_SK_LOOKUP = 0x1e + BPF_PROG_TYPE_SYSCALL = 0x1f + BPF_PROG_TYPE_NETFILTER = 0x20 + BPF_CGROUP_INET_INGRESS = 0x0 + BPF_CGROUP_INET_EGRESS = 0x1 + BPF_CGROUP_INET_SOCK_CREATE = 0x2 + BPF_CGROUP_SOCK_OPS = 0x3 + BPF_SK_SKB_STREAM_PARSER = 0x4 + BPF_SK_SKB_STREAM_VERDICT = 0x5 + BPF_CGROUP_DEVICE = 0x6 + BPF_SK_MSG_VERDICT = 0x7 + BPF_CGROUP_INET4_BIND = 0x8 + BPF_CGROUP_INET6_BIND = 0x9 + BPF_CGROUP_INET4_CONNECT = 0xa + BPF_CGROUP_INET6_CONNECT = 0xb + BPF_CGROUP_INET4_POST_BIND = 0xc + BPF_CGROUP_INET6_POST_BIND = 0xd + BPF_CGROUP_UDP4_SENDMSG = 0xe + BPF_CGROUP_UDP6_SENDMSG = 0xf + BPF_LIRC_MODE2 = 0x10 + BPF_FLOW_DISSECTOR = 0x11 + BPF_CGROUP_SYSCTL = 0x12 + BPF_CGROUP_UDP4_RECVMSG = 0x13 + BPF_CGROUP_UDP6_RECVMSG = 0x14 + BPF_CGROUP_GETSOCKOPT = 0x15 + BPF_CGROUP_SETSOCKOPT = 0x16 + BPF_TRACE_RAW_TP = 0x17 + BPF_TRACE_FENTRY = 0x18 + BPF_TRACE_FEXIT = 0x19 + BPF_MODIFY_RETURN = 0x1a + BPF_LSM_MAC = 0x1b + BPF_TRACE_ITER = 0x1c + BPF_CGROUP_INET4_GETPEERNAME = 0x1d + BPF_CGROUP_INET6_GETPEERNAME = 0x1e + BPF_CGROUP_INET4_GETSOCKNAME = 0x1f + BPF_CGROUP_INET6_GETSOCKNAME = 0x20 + BPF_XDP_DEVMAP = 0x21 + BPF_CGROUP_INET_SOCK_RELEASE = 0x22 + BPF_XDP_CPUMAP = 0x23 + BPF_SK_LOOKUP = 0x24 + BPF_XDP = 0x25 + BPF_SK_SKB_VERDICT = 0x26 + BPF_SK_REUSEPORT_SELECT = 0x27 + BPF_SK_REUSEPORT_SELECT_OR_MIGRATE = 0x28 + BPF_PERF_EVENT = 0x29 + BPF_TRACE_KPROBE_MULTI = 0x2a + BPF_LSM_CGROUP = 0x2b + BPF_STRUCT_OPS = 0x2c + BPF_NETFILTER = 0x2d + BPF_TCX_INGRESS = 0x2e + BPF_TCX_EGRESS = 0x2f + BPF_TRACE_UPROBE_MULTI = 0x30 + BPF_LINK_TYPE_UNSPEC = 0x0 + BPF_LINK_TYPE_RAW_TRACEPOINT = 0x1 + BPF_LINK_TYPE_TRACING = 0x2 + BPF_LINK_TYPE_CGROUP = 0x3 + BPF_LINK_TYPE_ITER = 0x4 + BPF_LINK_TYPE_NETNS = 0x5 + BPF_LINK_TYPE_XDP = 0x6 + BPF_LINK_TYPE_PERF_EVENT = 0x7 + BPF_LINK_TYPE_KPROBE_MULTI = 0x8 + BPF_LINK_TYPE_STRUCT_OPS = 0x9 + BPF_LINK_TYPE_NETFILTER = 0xa + BPF_LINK_TYPE_TCX = 0xb + BPF_LINK_TYPE_UPROBE_MULTI = 0xc + BPF_PERF_EVENT_UNSPEC = 0x0 + BPF_PERF_EVENT_UPROBE = 0x1 + BPF_PERF_EVENT_URETPROBE = 0x2 + BPF_PERF_EVENT_KPROBE = 0x3 + BPF_PERF_EVENT_KRETPROBE = 0x4 + BPF_PERF_EVENT_TRACEPOINT = 0x5 + BPF_PERF_EVENT_EVENT = 0x6 + BPF_F_KPROBE_MULTI_RETURN = 0x1 + BPF_F_UPROBE_MULTI_RETURN = 0x1 + BPF_ANY = 0x0 + BPF_NOEXIST = 0x1 + BPF_EXIST = 0x2 + BPF_F_LOCK = 0x4 + BPF_F_NO_PREALLOC = 0x1 + BPF_F_NO_COMMON_LRU = 0x2 + BPF_F_NUMA_NODE = 0x4 + BPF_F_RDONLY = 0x8 + BPF_F_WRONLY = 0x10 + BPF_F_STACK_BUILD_ID = 0x20 + BPF_F_ZERO_SEED = 0x40 + BPF_F_RDONLY_PROG = 0x80 + BPF_F_WRONLY_PROG = 0x100 + BPF_F_CLONE = 0x200 + BPF_F_MMAPABLE = 0x400 + BPF_F_PRESERVE_ELEMS = 0x800 + BPF_F_INNER_MAP = 0x1000 + BPF_F_LINK = 0x2000 + BPF_F_PATH_FD = 0x4000 + BPF_STATS_RUN_TIME = 0x0 + BPF_STACK_BUILD_ID_EMPTY = 0x0 + BPF_STACK_BUILD_ID_VALID = 0x1 + BPF_STACK_BUILD_ID_IP = 0x2 + BPF_F_RECOMPUTE_CSUM = 0x1 + BPF_F_INVALIDATE_HASH = 0x2 + BPF_F_HDR_FIELD_MASK = 0xf + BPF_F_PSEUDO_HDR = 0x10 + BPF_F_MARK_MANGLED_0 = 0x20 + BPF_F_MARK_ENFORCE = 0x40 + BPF_F_INGRESS = 0x1 + BPF_F_TUNINFO_IPV6 = 0x1 + BPF_F_SKIP_FIELD_MASK = 0xff + BPF_F_USER_STACK = 0x100 + BPF_F_FAST_STACK_CMP = 0x200 + BPF_F_REUSE_STACKID = 0x400 + BPF_F_USER_BUILD_ID = 0x800 + BPF_F_ZERO_CSUM_TX = 0x2 + BPF_F_DONT_FRAGMENT = 0x4 + BPF_F_SEQ_NUMBER = 0x8 + BPF_F_NO_TUNNEL_KEY = 0x10 + BPF_F_TUNINFO_FLAGS = 0x10 + BPF_F_INDEX_MASK = 0xffffffff + BPF_F_CURRENT_CPU = 0xffffffff + BPF_F_CTXLEN_MASK = 0xfffff00000000 + BPF_F_CURRENT_NETNS = -0x1 + BPF_CSUM_LEVEL_QUERY = 0x0 + BPF_CSUM_LEVEL_INC = 0x1 + BPF_CSUM_LEVEL_DEC = 0x2 + BPF_CSUM_LEVEL_RESET = 0x3 + BPF_F_ADJ_ROOM_FIXED_GSO = 0x1 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 0x2 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 0x4 + BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8 + BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10 + BPF_F_ADJ_ROOM_NO_CSUM_RESET = 0x20 + BPF_F_ADJ_ROOM_ENCAP_L2_ETH = 0x40 + BPF_F_ADJ_ROOM_DECAP_L3_IPV4 = 0x80 + BPF_F_ADJ_ROOM_DECAP_L3_IPV6 = 0x100 + BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff + BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38 + BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_LOCAL_STORAGE_GET_F_CREATE = 0x1 + BPF_SK_STORAGE_GET_F_CREATE = 0x1 + BPF_F_GET_BRANCH_RECORDS_SIZE = 0x1 + BPF_RB_NO_WAKEUP = 0x1 + BPF_RB_FORCE_WAKEUP = 0x2 + BPF_RB_AVAIL_DATA = 0x0 + BPF_RB_RING_SIZE = 0x1 + BPF_RB_CONS_POS = 0x2 + BPF_RB_PROD_POS = 0x3 + BPF_RINGBUF_BUSY_BIT = 0x80000000 + BPF_RINGBUF_DISCARD_BIT = 0x40000000 + BPF_RINGBUF_HDR_SZ = 0x8 + BPF_SK_LOOKUP_F_REPLACE = 0x1 + BPF_SK_LOOKUP_F_NO_REUSEPORT = 0x2 + BPF_ADJ_ROOM_NET = 0x0 + BPF_ADJ_ROOM_MAC = 0x1 + BPF_HDR_START_MAC = 0x0 + BPF_HDR_START_NET = 0x1 + BPF_LWT_ENCAP_SEG6 = 0x0 + BPF_LWT_ENCAP_SEG6_INLINE = 0x1 + BPF_LWT_ENCAP_IP = 0x2 + BPF_F_BPRM_SECUREEXEC = 0x1 + BPF_F_BROADCAST = 0x8 + BPF_F_EXCLUDE_INGRESS = 0x10 + BPF_SKB_TSTAMP_UNSPEC = 0x0 + BPF_SKB_TSTAMP_DELIVERY_MONO = 0x1 + BPF_OK = 0x0 + BPF_DROP = 0x2 + BPF_REDIRECT = 0x7 + BPF_LWT_REROUTE = 0x80 + BPF_FLOW_DISSECTOR_CONTINUE = 0x81 + BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 + BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 + BPF_SOCK_OPS_RTT_CB_FLAG = 0x8 + BPF_SOCK_OPS_PARSE_ALL_HDR_OPT_CB_FLAG = 0x10 + BPF_SOCK_OPS_PARSE_UNKNOWN_HDR_OPT_CB_FLAG = 0x20 + BPF_SOCK_OPS_WRITE_HDR_OPT_CB_FLAG = 0x40 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7f + BPF_SOCK_OPS_VOID = 0x0 + BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 + BPF_SOCK_OPS_RWND_INIT = 0x2 + BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 + BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 + BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 + BPF_SOCK_OPS_NEEDS_ECN = 0x6 + BPF_SOCK_OPS_BASE_RTT = 0x7 + BPF_SOCK_OPS_RTO_CB = 0x8 + BPF_SOCK_OPS_RETRANS_CB = 0x9 + BPF_SOCK_OPS_STATE_CB = 0xa + BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb + BPF_SOCK_OPS_RTT_CB = 0xc + BPF_SOCK_OPS_PARSE_HDR_OPT_CB = 0xd + BPF_SOCK_OPS_HDR_OPT_LEN_CB = 0xe + BPF_SOCK_OPS_WRITE_HDR_OPT_CB = 0xf + BPF_TCP_ESTABLISHED = 0x1 + BPF_TCP_SYN_SENT = 0x2 + BPF_TCP_SYN_RECV = 0x3 + BPF_TCP_FIN_WAIT1 = 0x4 + BPF_TCP_FIN_WAIT2 = 0x5 + BPF_TCP_TIME_WAIT = 0x6 + BPF_TCP_CLOSE = 0x7 + BPF_TCP_CLOSE_WAIT = 0x8 + BPF_TCP_LAST_ACK = 0x9 + BPF_TCP_LISTEN = 0xa + BPF_TCP_CLOSING = 0xb + BPF_TCP_NEW_SYN_RECV = 0xc + BPF_TCP_MAX_STATES = 0xe + TCP_BPF_IW = 0x3e9 + TCP_BPF_SNDCWND_CLAMP = 0x3ea + TCP_BPF_DELACK_MAX = 0x3eb + TCP_BPF_RTO_MIN = 0x3ec + TCP_BPF_SYN = 0x3ed + TCP_BPF_SYN_IP = 0x3ee + TCP_BPF_SYN_MAC = 0x3ef + BPF_LOAD_HDR_OPT_TCP_SYN = 0x1 + BPF_WRITE_HDR_TCP_CURRENT_MSS = 0x1 + BPF_WRITE_HDR_TCP_SYNACK_COOKIE = 0x2 + BPF_DEVCG_ACC_MKNOD = 0x1 + BPF_DEVCG_ACC_READ = 0x2 + BPF_DEVCG_ACC_WRITE = 0x4 + BPF_DEVCG_DEV_BLOCK = 0x1 + BPF_DEVCG_DEV_CHAR = 0x2 + BPF_FIB_LOOKUP_DIRECT = 0x1 + BPF_FIB_LOOKUP_OUTPUT = 0x2 + BPF_FIB_LOOKUP_SKIP_NEIGH = 0x4 + BPF_FIB_LOOKUP_TBID = 0x8 + BPF_FIB_LKUP_RET_SUCCESS = 0x0 + BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 + BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 + BPF_FIB_LKUP_RET_PROHIBIT = 0x3 + BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 + BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 + BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 + BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 + BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 + BPF_MTU_CHK_SEGS = 0x1 + BPF_MTU_CHK_RET_SUCCESS = 0x0 + BPF_MTU_CHK_RET_FRAG_NEEDED = 0x1 + BPF_MTU_CHK_RET_SEGS_TOOBIG = 0x2 + BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 + BPF_FD_TYPE_TRACEPOINT = 0x1 + BPF_FD_TYPE_KPROBE = 0x2 + BPF_FD_TYPE_KRETPROBE = 0x3 + BPF_FD_TYPE_UPROBE = 0x4 + BPF_FD_TYPE_URETPROBE = 0x5 + BPF_FLOW_DISSECTOR_F_PARSE_1ST_FRAG = 0x1 + BPF_FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL = 0x2 + BPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP = 0x4 + BPF_CORE_FIELD_BYTE_OFFSET = 0x0 + BPF_CORE_FIELD_BYTE_SIZE = 0x1 + BPF_CORE_FIELD_EXISTS = 0x2 + BPF_CORE_FIELD_SIGNED = 0x3 + BPF_CORE_FIELD_LSHIFT_U64 = 0x4 + BPF_CORE_FIELD_RSHIFT_U64 = 0x5 + BPF_CORE_TYPE_ID_LOCAL = 0x6 + BPF_CORE_TYPE_ID_TARGET = 0x7 + BPF_CORE_TYPE_EXISTS = 0x8 + BPF_CORE_TYPE_SIZE = 0x9 + BPF_CORE_ENUMVAL_EXISTS = 0xa + BPF_CORE_ENUMVAL_VALUE = 0xb + BPF_CORE_TYPE_MATCHES = 0xc + BPF_F_TIMER_ABS = 0x1 +) + +const ( + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_DECnet_IFADDR = 0xd + RTNLGRP_NOP2 = 0xe + RTNLGRP_DECnet_ROUTE = 0xf + RTNLGRP_DECnet_RULE = 0x10 + RTNLGRP_NOP4 = 0x11 + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + RTNLGRP_PHONET_IFADDR = 0x15 + RTNLGRP_PHONET_ROUTE = 0x16 + RTNLGRP_DCB = 0x17 + RTNLGRP_IPV4_NETCONF = 0x18 + RTNLGRP_IPV6_NETCONF = 0x19 + RTNLGRP_MDB = 0x1a + RTNLGRP_MPLS_ROUTE = 0x1b + RTNLGRP_NSID = 0x1c + RTNLGRP_MPLS_NETCONF = 0x1d + RTNLGRP_IPV4_MROUTE_R = 0x1e + RTNLGRP_IPV6_MROUTE_R = 0x1f + RTNLGRP_NEXTHOP = 0x20 + RTNLGRP_BRVLAN = 0x21 +) + +type CapUserHeader struct { + Version uint32 + Pid int32 +} + +type CapUserData struct { + Effective uint32 + Permitted uint32 + Inheritable uint32 +} + +const ( + LINUX_CAPABILITY_VERSION_1 = 0x19980330 + LINUX_CAPABILITY_VERSION_2 = 0x20071026 + LINUX_CAPABILITY_VERSION_3 = 0x20080522 +) + +const ( + LO_FLAGS_READ_ONLY = 0x1 + LO_FLAGS_AUTOCLEAR = 0x4 + LO_FLAGS_PARTSCAN = 0x8 + LO_FLAGS_DIRECT_IO = 0x10 +) + +type LoopInfo64 struct { + Device uint64 + Inode uint64 + Rdevice uint64 + Offset uint64 + Sizelimit uint64 + Number uint32 + Encrypt_type uint32 + Encrypt_key_size uint32 + Flags uint32 + File_name [64]uint8 + Crypt_name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 +} +type LoopConfig struct { + Fd uint32 + Size uint32 + Info LoopInfo64 + _ [8]uint64 +} + +type TIPCSocketAddr struct { + Ref uint32 + Node uint32 +} + +type TIPCServiceRange struct { + Type uint32 + Lower uint32 + Upper uint32 +} + +type TIPCServiceName struct { + Type uint32 + Instance uint32 + Domain uint32 +} + +type TIPCEvent struct { + Event uint32 + Lower uint32 + Upper uint32 + Port TIPCSocketAddr + S TIPCSubscr +} + +type TIPCGroupReq struct { + Type uint32 + Instance uint32 + Scope uint32 + Flags uint32 +} + +const ( + TIPC_CLUSTER_SCOPE = 0x2 + TIPC_NODE_SCOPE = 0x3 +) + +const ( + SYSLOG_ACTION_CLOSE = 0 + SYSLOG_ACTION_OPEN = 1 + SYSLOG_ACTION_READ = 2 + SYSLOG_ACTION_READ_ALL = 3 + SYSLOG_ACTION_READ_CLEAR = 4 + SYSLOG_ACTION_CLEAR = 5 + SYSLOG_ACTION_CONSOLE_OFF = 6 + SYSLOG_ACTION_CONSOLE_ON = 7 + SYSLOG_ACTION_CONSOLE_LEVEL = 8 + SYSLOG_ACTION_SIZE_UNREAD = 9 + SYSLOG_ACTION_SIZE_BUFFER = 10 +) + +const ( + DEVLINK_CMD_UNSPEC = 0x0 + DEVLINK_CMD_GET = 0x1 + DEVLINK_CMD_SET = 0x2 + DEVLINK_CMD_NEW = 0x3 + DEVLINK_CMD_DEL = 0x4 + DEVLINK_CMD_PORT_GET = 0x5 + DEVLINK_CMD_PORT_SET = 0x6 + DEVLINK_CMD_PORT_NEW = 0x7 + DEVLINK_CMD_PORT_DEL = 0x8 + DEVLINK_CMD_PORT_SPLIT = 0x9 + DEVLINK_CMD_PORT_UNSPLIT = 0xa + DEVLINK_CMD_SB_GET = 0xb + DEVLINK_CMD_SB_SET = 0xc + DEVLINK_CMD_SB_NEW = 0xd + DEVLINK_CMD_SB_DEL = 0xe + DEVLINK_CMD_SB_POOL_GET = 0xf + DEVLINK_CMD_SB_POOL_SET = 0x10 + DEVLINK_CMD_SB_POOL_NEW = 0x11 + DEVLINK_CMD_SB_POOL_DEL = 0x12 + DEVLINK_CMD_SB_PORT_POOL_GET = 0x13 + DEVLINK_CMD_SB_PORT_POOL_SET = 0x14 + DEVLINK_CMD_SB_PORT_POOL_NEW = 0x15 + DEVLINK_CMD_SB_PORT_POOL_DEL = 0x16 + DEVLINK_CMD_SB_TC_POOL_BIND_GET = 0x17 + DEVLINK_CMD_SB_TC_POOL_BIND_SET = 0x18 + DEVLINK_CMD_SB_TC_POOL_BIND_NEW = 0x19 + DEVLINK_CMD_SB_TC_POOL_BIND_DEL = 0x1a + DEVLINK_CMD_SB_OCC_SNAPSHOT = 0x1b + DEVLINK_CMD_SB_OCC_MAX_CLEAR = 0x1c + DEVLINK_CMD_ESWITCH_GET = 0x1d + DEVLINK_CMD_ESWITCH_SET = 0x1e + DEVLINK_CMD_DPIPE_TABLE_GET = 0x1f + DEVLINK_CMD_DPIPE_ENTRIES_GET = 0x20 + DEVLINK_CMD_DPIPE_HEADERS_GET = 0x21 + DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET = 0x22 + DEVLINK_CMD_RESOURCE_SET = 0x23 + DEVLINK_CMD_RESOURCE_DUMP = 0x24 + DEVLINK_CMD_RELOAD = 0x25 + DEVLINK_CMD_PARAM_GET = 0x26 + DEVLINK_CMD_PARAM_SET = 0x27 + DEVLINK_CMD_PARAM_NEW = 0x28 + DEVLINK_CMD_PARAM_DEL = 0x29 + DEVLINK_CMD_REGION_GET = 0x2a + DEVLINK_CMD_REGION_SET = 0x2b + DEVLINK_CMD_REGION_NEW = 0x2c + DEVLINK_CMD_REGION_DEL = 0x2d + DEVLINK_CMD_REGION_READ = 0x2e + DEVLINK_CMD_PORT_PARAM_GET = 0x2f + DEVLINK_CMD_PORT_PARAM_SET = 0x30 + DEVLINK_CMD_PORT_PARAM_NEW = 0x31 + DEVLINK_CMD_PORT_PARAM_DEL = 0x32 + DEVLINK_CMD_INFO_GET = 0x33 + DEVLINK_CMD_HEALTH_REPORTER_GET = 0x34 + DEVLINK_CMD_HEALTH_REPORTER_SET = 0x35 + DEVLINK_CMD_HEALTH_REPORTER_RECOVER = 0x36 + DEVLINK_CMD_HEALTH_REPORTER_DIAGNOSE = 0x37 + DEVLINK_CMD_HEALTH_REPORTER_DUMP_GET = 0x38 + DEVLINK_CMD_HEALTH_REPORTER_DUMP_CLEAR = 0x39 + DEVLINK_CMD_FLASH_UPDATE = 0x3a + DEVLINK_CMD_FLASH_UPDATE_END = 0x3b + DEVLINK_CMD_FLASH_UPDATE_STATUS = 0x3c + DEVLINK_CMD_TRAP_GET = 0x3d + DEVLINK_CMD_TRAP_SET = 0x3e + DEVLINK_CMD_TRAP_NEW = 0x3f + DEVLINK_CMD_TRAP_DEL = 0x40 + DEVLINK_CMD_TRAP_GROUP_GET = 0x41 + DEVLINK_CMD_TRAP_GROUP_SET = 0x42 + DEVLINK_CMD_TRAP_GROUP_NEW = 0x43 + DEVLINK_CMD_TRAP_GROUP_DEL = 0x44 + DEVLINK_CMD_TRAP_POLICER_GET = 0x45 + DEVLINK_CMD_TRAP_POLICER_SET = 0x46 + DEVLINK_CMD_TRAP_POLICER_NEW = 0x47 + DEVLINK_CMD_TRAP_POLICER_DEL = 0x48 + DEVLINK_CMD_HEALTH_REPORTER_TEST = 0x49 + DEVLINK_CMD_RATE_GET = 0x4a + DEVLINK_CMD_RATE_SET = 0x4b + DEVLINK_CMD_RATE_NEW = 0x4c + DEVLINK_CMD_RATE_DEL = 0x4d + DEVLINK_CMD_LINECARD_GET = 0x4e + DEVLINK_CMD_LINECARD_SET = 0x4f + DEVLINK_CMD_LINECARD_NEW = 0x50 + DEVLINK_CMD_LINECARD_DEL = 0x51 + DEVLINK_CMD_SELFTESTS_GET = 0x52 + DEVLINK_CMD_MAX = 0x54 + DEVLINK_PORT_TYPE_NOTSET = 0x0 + DEVLINK_PORT_TYPE_AUTO = 0x1 + DEVLINK_PORT_TYPE_ETH = 0x2 + DEVLINK_PORT_TYPE_IB = 0x3 + DEVLINK_SB_POOL_TYPE_INGRESS = 0x0 + DEVLINK_SB_POOL_TYPE_EGRESS = 0x1 + DEVLINK_SB_THRESHOLD_TYPE_STATIC = 0x0 + DEVLINK_SB_THRESHOLD_TYPE_DYNAMIC = 0x1 + DEVLINK_ESWITCH_MODE_LEGACY = 0x0 + DEVLINK_ESWITCH_MODE_SWITCHDEV = 0x1 + DEVLINK_ESWITCH_INLINE_MODE_NONE = 0x0 + DEVLINK_ESWITCH_INLINE_MODE_LINK = 0x1 + DEVLINK_ESWITCH_INLINE_MODE_NETWORK = 0x2 + DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT = 0x3 + DEVLINK_ESWITCH_ENCAP_MODE_NONE = 0x0 + DEVLINK_ESWITCH_ENCAP_MODE_BASIC = 0x1 + DEVLINK_PORT_FLAVOUR_PHYSICAL = 0x0 + DEVLINK_PORT_FLAVOUR_CPU = 0x1 + DEVLINK_PORT_FLAVOUR_DSA = 0x2 + DEVLINK_PORT_FLAVOUR_PCI_PF = 0x3 + DEVLINK_PORT_FLAVOUR_PCI_VF = 0x4 + DEVLINK_PORT_FLAVOUR_VIRTUAL = 0x5 + DEVLINK_PORT_FLAVOUR_UNUSED = 0x6 + DEVLINK_PARAM_CMODE_RUNTIME = 0x0 + DEVLINK_PARAM_CMODE_DRIVERINIT = 0x1 + DEVLINK_PARAM_CMODE_PERMANENT = 0x2 + DEVLINK_PARAM_CMODE_MAX = 0x2 + DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_DRIVER = 0x0 + DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_FLASH = 0x1 + DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_DISK = 0x2 + DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_UNKNOWN = 0x3 + DEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_UNKNOWN = 0x0 + DEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_ALWAYS = 0x1 + DEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_NEVER = 0x2 + DEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_DISK = 0x3 + DEVLINK_ATTR_STATS_RX_PACKETS = 0x0 + DEVLINK_ATTR_STATS_RX_BYTES = 0x1 + DEVLINK_ATTR_STATS_RX_DROPPED = 0x2 + DEVLINK_ATTR_STATS_MAX = 0x2 + DEVLINK_FLASH_OVERWRITE_SETTINGS_BIT = 0x0 + DEVLINK_FLASH_OVERWRITE_IDENTIFIERS_BIT = 0x1 + DEVLINK_FLASH_OVERWRITE_MAX_BIT = 0x1 + DEVLINK_TRAP_ACTION_DROP = 0x0 + DEVLINK_TRAP_ACTION_TRAP = 0x1 + DEVLINK_TRAP_ACTION_MIRROR = 0x2 + DEVLINK_TRAP_TYPE_DROP = 0x0 + DEVLINK_TRAP_TYPE_EXCEPTION = 0x1 + DEVLINK_TRAP_TYPE_CONTROL = 0x2 + DEVLINK_ATTR_TRAP_METADATA_TYPE_IN_PORT = 0x0 + DEVLINK_ATTR_TRAP_METADATA_TYPE_FA_COOKIE = 0x1 + DEVLINK_RELOAD_ACTION_UNSPEC = 0x0 + DEVLINK_RELOAD_ACTION_DRIVER_REINIT = 0x1 + DEVLINK_RELOAD_ACTION_FW_ACTIVATE = 0x2 + DEVLINK_RELOAD_ACTION_MAX = 0x2 + DEVLINK_RELOAD_LIMIT_UNSPEC = 0x0 + DEVLINK_RELOAD_LIMIT_NO_RESET = 0x1 + DEVLINK_RELOAD_LIMIT_MAX = 0x1 + DEVLINK_ATTR_UNSPEC = 0x0 + DEVLINK_ATTR_BUS_NAME = 0x1 + DEVLINK_ATTR_DEV_NAME = 0x2 + DEVLINK_ATTR_PORT_INDEX = 0x3 + DEVLINK_ATTR_PORT_TYPE = 0x4 + DEVLINK_ATTR_PORT_DESIRED_TYPE = 0x5 + DEVLINK_ATTR_PORT_NETDEV_IFINDEX = 0x6 + DEVLINK_ATTR_PORT_NETDEV_NAME = 0x7 + DEVLINK_ATTR_PORT_IBDEV_NAME = 0x8 + DEVLINK_ATTR_PORT_SPLIT_COUNT = 0x9 + DEVLINK_ATTR_PORT_SPLIT_GROUP = 0xa + DEVLINK_ATTR_SB_INDEX = 0xb + DEVLINK_ATTR_SB_SIZE = 0xc + DEVLINK_ATTR_SB_INGRESS_POOL_COUNT = 0xd + DEVLINK_ATTR_SB_EGRESS_POOL_COUNT = 0xe + DEVLINK_ATTR_SB_INGRESS_TC_COUNT = 0xf + DEVLINK_ATTR_SB_EGRESS_TC_COUNT = 0x10 + DEVLINK_ATTR_SB_POOL_INDEX = 0x11 + DEVLINK_ATTR_SB_POOL_TYPE = 0x12 + DEVLINK_ATTR_SB_POOL_SIZE = 0x13 + DEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE = 0x14 + DEVLINK_ATTR_SB_THRESHOLD = 0x15 + DEVLINK_ATTR_SB_TC_INDEX = 0x16 + DEVLINK_ATTR_SB_OCC_CUR = 0x17 + DEVLINK_ATTR_SB_OCC_MAX = 0x18 + DEVLINK_ATTR_ESWITCH_MODE = 0x19 + DEVLINK_ATTR_ESWITCH_INLINE_MODE = 0x1a + DEVLINK_ATTR_DPIPE_TABLES = 0x1b + DEVLINK_ATTR_DPIPE_TABLE = 0x1c + DEVLINK_ATTR_DPIPE_TABLE_NAME = 0x1d + DEVLINK_ATTR_DPIPE_TABLE_SIZE = 0x1e + DEVLINK_ATTR_DPIPE_TABLE_MATCHES = 0x1f + DEVLINK_ATTR_DPIPE_TABLE_ACTIONS = 0x20 + DEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED = 0x21 + DEVLINK_ATTR_DPIPE_ENTRIES = 0x22 + DEVLINK_ATTR_DPIPE_ENTRY = 0x23 + DEVLINK_ATTR_DPIPE_ENTRY_INDEX = 0x24 + DEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES = 0x25 + DEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES = 0x26 + DEVLINK_ATTR_DPIPE_ENTRY_COUNTER = 0x27 + DEVLINK_ATTR_DPIPE_MATCH = 0x28 + DEVLINK_ATTR_DPIPE_MATCH_VALUE = 0x29 + DEVLINK_ATTR_DPIPE_MATCH_TYPE = 0x2a + DEVLINK_ATTR_DPIPE_ACTION = 0x2b + DEVLINK_ATTR_DPIPE_ACTION_VALUE = 0x2c + DEVLINK_ATTR_DPIPE_ACTION_TYPE = 0x2d + DEVLINK_ATTR_DPIPE_VALUE = 0x2e + DEVLINK_ATTR_DPIPE_VALUE_MASK = 0x2f + DEVLINK_ATTR_DPIPE_VALUE_MAPPING = 0x30 + DEVLINK_ATTR_DPIPE_HEADERS = 0x31 + DEVLINK_ATTR_DPIPE_HEADER = 0x32 + DEVLINK_ATTR_DPIPE_HEADER_NAME = 0x33 + DEVLINK_ATTR_DPIPE_HEADER_ID = 0x34 + DEVLINK_ATTR_DPIPE_HEADER_FIELDS = 0x35 + DEVLINK_ATTR_DPIPE_HEADER_GLOBAL = 0x36 + DEVLINK_ATTR_DPIPE_HEADER_INDEX = 0x37 + DEVLINK_ATTR_DPIPE_FIELD = 0x38 + DEVLINK_ATTR_DPIPE_FIELD_NAME = 0x39 + DEVLINK_ATTR_DPIPE_FIELD_ID = 0x3a + DEVLINK_ATTR_DPIPE_FIELD_BITWIDTH = 0x3b + DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE = 0x3c + DEVLINK_ATTR_PAD = 0x3d + DEVLINK_ATTR_ESWITCH_ENCAP_MODE = 0x3e + DEVLINK_ATTR_RESOURCE_LIST = 0x3f + DEVLINK_ATTR_RESOURCE = 0x40 + DEVLINK_ATTR_RESOURCE_NAME = 0x41 + DEVLINK_ATTR_RESOURCE_ID = 0x42 + DEVLINK_ATTR_RESOURCE_SIZE = 0x43 + DEVLINK_ATTR_RESOURCE_SIZE_NEW = 0x44 + DEVLINK_ATTR_RESOURCE_SIZE_VALID = 0x45 + DEVLINK_ATTR_RESOURCE_SIZE_MIN = 0x46 + DEVLINK_ATTR_RESOURCE_SIZE_MAX = 0x47 + DEVLINK_ATTR_RESOURCE_SIZE_GRAN = 0x48 + DEVLINK_ATTR_RESOURCE_UNIT = 0x49 + DEVLINK_ATTR_RESOURCE_OCC = 0x4a + DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_ID = 0x4b + DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_UNITS = 0x4c + DEVLINK_ATTR_PORT_FLAVOUR = 0x4d + DEVLINK_ATTR_PORT_NUMBER = 0x4e + DEVLINK_ATTR_PORT_SPLIT_SUBPORT_NUMBER = 0x4f + DEVLINK_ATTR_PARAM = 0x50 + DEVLINK_ATTR_PARAM_NAME = 0x51 + DEVLINK_ATTR_PARAM_GENERIC = 0x52 + DEVLINK_ATTR_PARAM_TYPE = 0x53 + DEVLINK_ATTR_PARAM_VALUES_LIST = 0x54 + DEVLINK_ATTR_PARAM_VALUE = 0x55 + DEVLINK_ATTR_PARAM_VALUE_DATA = 0x56 + DEVLINK_ATTR_PARAM_VALUE_CMODE = 0x57 + DEVLINK_ATTR_REGION_NAME = 0x58 + DEVLINK_ATTR_REGION_SIZE = 0x59 + DEVLINK_ATTR_REGION_SNAPSHOTS = 0x5a + DEVLINK_ATTR_REGION_SNAPSHOT = 0x5b + DEVLINK_ATTR_REGION_SNAPSHOT_ID = 0x5c + DEVLINK_ATTR_REGION_CHUNKS = 0x5d + DEVLINK_ATTR_REGION_CHUNK = 0x5e + DEVLINK_ATTR_REGION_CHUNK_DATA = 0x5f + DEVLINK_ATTR_REGION_CHUNK_ADDR = 0x60 + DEVLINK_ATTR_REGION_CHUNK_LEN = 0x61 + DEVLINK_ATTR_INFO_DRIVER_NAME = 0x62 + DEVLINK_ATTR_INFO_SERIAL_NUMBER = 0x63 + DEVLINK_ATTR_INFO_VERSION_FIXED = 0x64 + DEVLINK_ATTR_INFO_VERSION_RUNNING = 0x65 + DEVLINK_ATTR_INFO_VERSION_STORED = 0x66 + DEVLINK_ATTR_INFO_VERSION_NAME = 0x67 + DEVLINK_ATTR_INFO_VERSION_VALUE = 0x68 + DEVLINK_ATTR_SB_POOL_CELL_SIZE = 0x69 + DEVLINK_ATTR_FMSG = 0x6a + DEVLINK_ATTR_FMSG_OBJ_NEST_START = 0x6b + DEVLINK_ATTR_FMSG_PAIR_NEST_START = 0x6c + DEVLINK_ATTR_FMSG_ARR_NEST_START = 0x6d + DEVLINK_ATTR_FMSG_NEST_END = 0x6e + DEVLINK_ATTR_FMSG_OBJ_NAME = 0x6f + DEVLINK_ATTR_FMSG_OBJ_VALUE_TYPE = 0x70 + DEVLINK_ATTR_FMSG_OBJ_VALUE_DATA = 0x71 + DEVLINK_ATTR_HEALTH_REPORTER = 0x72 + DEVLINK_ATTR_HEALTH_REPORTER_NAME = 0x73 + DEVLINK_ATTR_HEALTH_REPORTER_STATE = 0x74 + DEVLINK_ATTR_HEALTH_REPORTER_ERR_COUNT = 0x75 + DEVLINK_ATTR_HEALTH_REPORTER_RECOVER_COUNT = 0x76 + DEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS = 0x77 + DEVLINK_ATTR_HEALTH_REPORTER_GRACEFUL_PERIOD = 0x78 + DEVLINK_ATTR_HEALTH_REPORTER_AUTO_RECOVER = 0x79 + DEVLINK_ATTR_FLASH_UPDATE_FILE_NAME = 0x7a + DEVLINK_ATTR_FLASH_UPDATE_COMPONENT = 0x7b + DEVLINK_ATTR_FLASH_UPDATE_STATUS_MSG = 0x7c + DEVLINK_ATTR_FLASH_UPDATE_STATUS_DONE = 0x7d + DEVLINK_ATTR_FLASH_UPDATE_STATUS_TOTAL = 0x7e + DEVLINK_ATTR_PORT_PCI_PF_NUMBER = 0x7f + DEVLINK_ATTR_PORT_PCI_VF_NUMBER = 0x80 + DEVLINK_ATTR_STATS = 0x81 + DEVLINK_ATTR_TRAP_NAME = 0x82 + DEVLINK_ATTR_TRAP_ACTION = 0x83 + DEVLINK_ATTR_TRAP_TYPE = 0x84 + DEVLINK_ATTR_TRAP_GENERIC = 0x85 + DEVLINK_ATTR_TRAP_METADATA = 0x86 + DEVLINK_ATTR_TRAP_GROUP_NAME = 0x87 + DEVLINK_ATTR_RELOAD_FAILED = 0x88 + DEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS_NS = 0x89 + DEVLINK_ATTR_NETNS_FD = 0x8a + DEVLINK_ATTR_NETNS_PID = 0x8b + DEVLINK_ATTR_NETNS_ID = 0x8c + DEVLINK_ATTR_HEALTH_REPORTER_AUTO_DUMP = 0x8d + DEVLINK_ATTR_TRAP_POLICER_ID = 0x8e + DEVLINK_ATTR_TRAP_POLICER_RATE = 0x8f + DEVLINK_ATTR_TRAP_POLICER_BURST = 0x90 + DEVLINK_ATTR_PORT_FUNCTION = 0x91 + DEVLINK_ATTR_INFO_BOARD_SERIAL_NUMBER = 0x92 + DEVLINK_ATTR_PORT_LANES = 0x93 + DEVLINK_ATTR_PORT_SPLITTABLE = 0x94 + DEVLINK_ATTR_PORT_EXTERNAL = 0x95 + DEVLINK_ATTR_PORT_CONTROLLER_NUMBER = 0x96 + DEVLINK_ATTR_FLASH_UPDATE_STATUS_TIMEOUT = 0x97 + DEVLINK_ATTR_FLASH_UPDATE_OVERWRITE_MASK = 0x98 + DEVLINK_ATTR_RELOAD_ACTION = 0x99 + DEVLINK_ATTR_RELOAD_ACTIONS_PERFORMED = 0x9a + DEVLINK_ATTR_RELOAD_LIMITS = 0x9b + DEVLINK_ATTR_DEV_STATS = 0x9c + DEVLINK_ATTR_RELOAD_STATS = 0x9d + DEVLINK_ATTR_RELOAD_STATS_ENTRY = 0x9e + DEVLINK_ATTR_RELOAD_STATS_LIMIT = 0x9f + DEVLINK_ATTR_RELOAD_STATS_VALUE = 0xa0 + DEVLINK_ATTR_REMOTE_RELOAD_STATS = 0xa1 + DEVLINK_ATTR_RELOAD_ACTION_INFO = 0xa2 + DEVLINK_ATTR_RELOAD_ACTION_STATS = 0xa3 + DEVLINK_ATTR_PORT_PCI_SF_NUMBER = 0xa4 + DEVLINK_ATTR_RATE_TYPE = 0xa5 + DEVLINK_ATTR_RATE_TX_SHARE = 0xa6 + DEVLINK_ATTR_RATE_TX_MAX = 0xa7 + DEVLINK_ATTR_RATE_NODE_NAME = 0xa8 + DEVLINK_ATTR_RATE_PARENT_NODE_NAME = 0xa9 + DEVLINK_ATTR_REGION_MAX_SNAPSHOTS = 0xaa + DEVLINK_ATTR_LINECARD_INDEX = 0xab + DEVLINK_ATTR_LINECARD_STATE = 0xac + DEVLINK_ATTR_LINECARD_TYPE = 0xad + DEVLINK_ATTR_LINECARD_SUPPORTED_TYPES = 0xae + DEVLINK_ATTR_NESTED_DEVLINK = 0xaf + DEVLINK_ATTR_SELFTESTS = 0xb0 + DEVLINK_ATTR_MAX = 0xb3 + DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE = 0x0 + DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX = 0x1 + DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT = 0x0 + DEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY = 0x0 + DEVLINK_DPIPE_FIELD_ETHERNET_DST_MAC = 0x0 + DEVLINK_DPIPE_FIELD_IPV4_DST_IP = 0x0 + DEVLINK_DPIPE_FIELD_IPV6_DST_IP = 0x0 + DEVLINK_DPIPE_HEADER_ETHERNET = 0x0 + DEVLINK_DPIPE_HEADER_IPV4 = 0x1 + DEVLINK_DPIPE_HEADER_IPV6 = 0x2 + DEVLINK_RESOURCE_UNIT_ENTRY = 0x0 + DEVLINK_PORT_FUNCTION_ATTR_UNSPEC = 0x0 + DEVLINK_PORT_FUNCTION_ATTR_HW_ADDR = 0x1 + DEVLINK_PORT_FN_ATTR_STATE = 0x2 + DEVLINK_PORT_FN_ATTR_OPSTATE = 0x3 + DEVLINK_PORT_FN_ATTR_CAPS = 0x4 + DEVLINK_PORT_FUNCTION_ATTR_MAX = 0x6 +) + +type FsverityDigest struct { + Algorithm uint16 + Size uint16 +} + +type FsverityEnableArg struct { + Version uint32 + Hash_algorithm uint32 + Block_size uint32 + Salt_size uint32 + Salt_ptr uint64 + Sig_size uint32 + _ uint32 + Sig_ptr uint64 + _ [11]uint64 +} + +type Nhmsg struct { + Family uint8 + Scope uint8 + Protocol uint8 + Resvd uint8 + Flags uint32 +} + +type NexthopGrp struct { + Id uint32 + Weight uint8 + High uint8 + Resvd2 uint16 +} + +const ( + NHA_UNSPEC = 0x0 + NHA_ID = 0x1 + NHA_GROUP = 0x2 + NHA_GROUP_TYPE = 0x3 + NHA_BLACKHOLE = 0x4 + NHA_OIF = 0x5 + NHA_GATEWAY = 0x6 + NHA_ENCAP_TYPE = 0x7 + NHA_ENCAP = 0x8 + NHA_GROUPS = 0x9 + NHA_MASTER = 0xa +) + +const ( + CAN_RAW_FILTER = 0x1 + CAN_RAW_ERR_FILTER = 0x2 + CAN_RAW_LOOPBACK = 0x3 + CAN_RAW_RECV_OWN_MSGS = 0x4 + CAN_RAW_FD_FRAMES = 0x5 + CAN_RAW_JOIN_FILTERS = 0x6 +) + +type WatchdogInfo struct { + Options uint32 + Version uint32 + Identity [32]uint8 +} + +type PPSFData struct { + Info PPSKInfo + Timeout PPSKTime +} + +type PPSKParams struct { + Api_version int32 + Mode int32 + Assert_off_tu PPSKTime + Clear_off_tu PPSKTime +} + +type PPSKTime struct { + Sec int64 + Nsec int32 + Flags uint32 +} + +const ( + LWTUNNEL_ENCAP_NONE = 0x0 + LWTUNNEL_ENCAP_MPLS = 0x1 + LWTUNNEL_ENCAP_IP = 0x2 + LWTUNNEL_ENCAP_ILA = 0x3 + LWTUNNEL_ENCAP_IP6 = 0x4 + LWTUNNEL_ENCAP_SEG6 = 0x5 + LWTUNNEL_ENCAP_BPF = 0x6 + LWTUNNEL_ENCAP_SEG6_LOCAL = 0x7 + LWTUNNEL_ENCAP_RPL = 0x8 + LWTUNNEL_ENCAP_IOAM6 = 0x9 + LWTUNNEL_ENCAP_XFRM = 0xa + LWTUNNEL_ENCAP_MAX = 0xa + + MPLS_IPTUNNEL_UNSPEC = 0x0 + MPLS_IPTUNNEL_DST = 0x1 + MPLS_IPTUNNEL_TTL = 0x2 + MPLS_IPTUNNEL_MAX = 0x2 +) + +const ( + ETHTOOL_ID_UNSPEC = 0x0 + ETHTOOL_RX_COPYBREAK = 0x1 + ETHTOOL_TX_COPYBREAK = 0x2 + ETHTOOL_PFC_PREVENTION_TOUT = 0x3 + ETHTOOL_TUNABLE_UNSPEC = 0x0 + ETHTOOL_TUNABLE_U8 = 0x1 + ETHTOOL_TUNABLE_U16 = 0x2 + ETHTOOL_TUNABLE_U32 = 0x3 + ETHTOOL_TUNABLE_U64 = 0x4 + ETHTOOL_TUNABLE_STRING = 0x5 + ETHTOOL_TUNABLE_S8 = 0x6 + ETHTOOL_TUNABLE_S16 = 0x7 + ETHTOOL_TUNABLE_S32 = 0x8 + ETHTOOL_TUNABLE_S64 = 0x9 + ETHTOOL_PHY_ID_UNSPEC = 0x0 + ETHTOOL_PHY_DOWNSHIFT = 0x1 + ETHTOOL_PHY_FAST_LINK_DOWN = 0x2 + ETHTOOL_PHY_EDPD = 0x3 + ETHTOOL_LINK_EXT_STATE_AUTONEG = 0x0 + ETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE = 0x1 + ETHTOOL_LINK_EXT_STATE_LINK_LOGICAL_MISMATCH = 0x2 + ETHTOOL_LINK_EXT_STATE_BAD_SIGNAL_INTEGRITY = 0x3 + ETHTOOL_LINK_EXT_STATE_NO_CABLE = 0x4 + ETHTOOL_LINK_EXT_STATE_CABLE_ISSUE = 0x5 + ETHTOOL_LINK_EXT_STATE_EEPROM_ISSUE = 0x6 + ETHTOOL_LINK_EXT_STATE_CALIBRATION_FAILURE = 0x7 + ETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDED = 0x8 + ETHTOOL_LINK_EXT_STATE_OVERHEAT = 0x9 + ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED = 0x1 + ETHTOOL_LINK_EXT_SUBSTATE_AN_ACK_NOT_RECEIVED = 0x2 + ETHTOOL_LINK_EXT_SUBSTATE_AN_NEXT_PAGE_EXCHANGE_FAILED = 0x3 + ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED_FORCE_MODE = 0x4 + ETHTOOL_LINK_EXT_SUBSTATE_AN_FEC_MISMATCH_DURING_OVERRIDE = 0x5 + ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_HCD = 0x6 + ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_FRAME_LOCK_NOT_ACQUIRED = 0x1 + ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_INHIBIT_TIMEOUT = 0x2 + ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_PARTNER_DID_NOT_SET_RECEIVER_READY = 0x3 + ETHTOOL_LINK_EXT_SUBSTATE_LT_REMOTE_FAULT = 0x4 + ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_BLOCK_LOCK = 0x1 + ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_AM_LOCK = 0x2 + ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_GET_ALIGN_STATUS = 0x3 + ETHTOOL_LINK_EXT_SUBSTATE_LLM_FC_FEC_IS_NOT_LOCKED = 0x4 + ETHTOOL_LINK_EXT_SUBSTATE_LLM_RS_FEC_IS_NOT_LOCKED = 0x5 + ETHTOOL_LINK_EXT_SUBSTATE_BSI_LARGE_NUMBER_OF_PHYSICAL_ERRORS = 0x1 + ETHTOOL_LINK_EXT_SUBSTATE_BSI_UNSUPPORTED_RATE = 0x2 + ETHTOOL_LINK_EXT_SUBSTATE_CI_UNSUPPORTED_CABLE = 0x1 + ETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURE = 0x2 + ETHTOOL_FLASH_ALL_REGIONS = 0x0 + ETHTOOL_F_UNSUPPORTED__BIT = 0x0 + ETHTOOL_F_WISH__BIT = 0x1 + ETHTOOL_F_COMPAT__BIT = 0x2 + ETHTOOL_FEC_NONE_BIT = 0x0 + ETHTOOL_FEC_AUTO_BIT = 0x1 + ETHTOOL_FEC_OFF_BIT = 0x2 + ETHTOOL_FEC_RS_BIT = 0x3 + ETHTOOL_FEC_BASER_BIT = 0x4 + ETHTOOL_FEC_LLRS_BIT = 0x5 + ETHTOOL_LINK_MODE_10baseT_Half_BIT = 0x0 + ETHTOOL_LINK_MODE_10baseT_Full_BIT = 0x1 + ETHTOOL_LINK_MODE_100baseT_Half_BIT = 0x2 + ETHTOOL_LINK_MODE_100baseT_Full_BIT = 0x3 + ETHTOOL_LINK_MODE_1000baseT_Half_BIT = 0x4 + ETHTOOL_LINK_MODE_1000baseT_Full_BIT = 0x5 + ETHTOOL_LINK_MODE_Autoneg_BIT = 0x6 + ETHTOOL_LINK_MODE_TP_BIT = 0x7 + ETHTOOL_LINK_MODE_AUI_BIT = 0x8 + ETHTOOL_LINK_MODE_MII_BIT = 0x9 + ETHTOOL_LINK_MODE_FIBRE_BIT = 0xa + ETHTOOL_LINK_MODE_BNC_BIT = 0xb + ETHTOOL_LINK_MODE_10000baseT_Full_BIT = 0xc + ETHTOOL_LINK_MODE_Pause_BIT = 0xd + ETHTOOL_LINK_MODE_Asym_Pause_BIT = 0xe + ETHTOOL_LINK_MODE_2500baseX_Full_BIT = 0xf + ETHTOOL_LINK_MODE_Backplane_BIT = 0x10 + ETHTOOL_LINK_MODE_1000baseKX_Full_BIT = 0x11 + ETHTOOL_LINK_MODE_10000baseKX4_Full_BIT = 0x12 + ETHTOOL_LINK_MODE_10000baseKR_Full_BIT = 0x13 + ETHTOOL_LINK_MODE_10000baseR_FEC_BIT = 0x14 + ETHTOOL_LINK_MODE_20000baseMLD2_Full_BIT = 0x15 + ETHTOOL_LINK_MODE_20000baseKR2_Full_BIT = 0x16 + ETHTOOL_LINK_MODE_40000baseKR4_Full_BIT = 0x17 + ETHTOOL_LINK_MODE_40000baseCR4_Full_BIT = 0x18 + ETHTOOL_LINK_MODE_40000baseSR4_Full_BIT = 0x19 + ETHTOOL_LINK_MODE_40000baseLR4_Full_BIT = 0x1a + ETHTOOL_LINK_MODE_56000baseKR4_Full_BIT = 0x1b + ETHTOOL_LINK_MODE_56000baseCR4_Full_BIT = 0x1c + ETHTOOL_LINK_MODE_56000baseSR4_Full_BIT = 0x1d + ETHTOOL_LINK_MODE_56000baseLR4_Full_BIT = 0x1e + ETHTOOL_LINK_MODE_25000baseCR_Full_BIT = 0x1f + ETHTOOL_LINK_MODE_25000baseKR_Full_BIT = 0x20 + ETHTOOL_LINK_MODE_25000baseSR_Full_BIT = 0x21 + ETHTOOL_LINK_MODE_50000baseCR2_Full_BIT = 0x22 + ETHTOOL_LINK_MODE_50000baseKR2_Full_BIT = 0x23 + ETHTOOL_LINK_MODE_100000baseKR4_Full_BIT = 0x24 + ETHTOOL_LINK_MODE_100000baseSR4_Full_BIT = 0x25 + ETHTOOL_LINK_MODE_100000baseCR4_Full_BIT = 0x26 + ETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT = 0x27 + ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT = 0x28 + ETHTOOL_LINK_MODE_1000baseX_Full_BIT = 0x29 + ETHTOOL_LINK_MODE_10000baseCR_Full_BIT = 0x2a + ETHTOOL_LINK_MODE_10000baseSR_Full_BIT = 0x2b + ETHTOOL_LINK_MODE_10000baseLR_Full_BIT = 0x2c + ETHTOOL_LINK_MODE_10000baseLRM_Full_BIT = 0x2d + ETHTOOL_LINK_MODE_10000baseER_Full_BIT = 0x2e + ETHTOOL_LINK_MODE_2500baseT_Full_BIT = 0x2f + ETHTOOL_LINK_MODE_5000baseT_Full_BIT = 0x30 + ETHTOOL_LINK_MODE_FEC_NONE_BIT = 0x31 + ETHTOOL_LINK_MODE_FEC_RS_BIT = 0x32 + ETHTOOL_LINK_MODE_FEC_BASER_BIT = 0x33 + ETHTOOL_LINK_MODE_50000baseKR_Full_BIT = 0x34 + ETHTOOL_LINK_MODE_50000baseSR_Full_BIT = 0x35 + ETHTOOL_LINK_MODE_50000baseCR_Full_BIT = 0x36 + ETHTOOL_LINK_MODE_50000baseLR_ER_FR_Full_BIT = 0x37 + ETHTOOL_LINK_MODE_50000baseDR_Full_BIT = 0x38 + ETHTOOL_LINK_MODE_100000baseKR2_Full_BIT = 0x39 + ETHTOOL_LINK_MODE_100000baseSR2_Full_BIT = 0x3a + ETHTOOL_LINK_MODE_100000baseCR2_Full_BIT = 0x3b + ETHTOOL_LINK_MODE_100000baseLR2_ER2_FR2_Full_BIT = 0x3c + ETHTOOL_LINK_MODE_100000baseDR2_Full_BIT = 0x3d + ETHTOOL_LINK_MODE_200000baseKR4_Full_BIT = 0x3e + ETHTOOL_LINK_MODE_200000baseSR4_Full_BIT = 0x3f + ETHTOOL_LINK_MODE_200000baseLR4_ER4_FR4_Full_BIT = 0x40 + ETHTOOL_LINK_MODE_200000baseDR4_Full_BIT = 0x41 + ETHTOOL_LINK_MODE_200000baseCR4_Full_BIT = 0x42 + ETHTOOL_LINK_MODE_100baseT1_Full_BIT = 0x43 + ETHTOOL_LINK_MODE_1000baseT1_Full_BIT = 0x44 + ETHTOOL_LINK_MODE_400000baseKR8_Full_BIT = 0x45 + ETHTOOL_LINK_MODE_400000baseSR8_Full_BIT = 0x46 + ETHTOOL_LINK_MODE_400000baseLR8_ER8_FR8_Full_BIT = 0x47 + ETHTOOL_LINK_MODE_400000baseDR8_Full_BIT = 0x48 + ETHTOOL_LINK_MODE_400000baseCR8_Full_BIT = 0x49 + ETHTOOL_LINK_MODE_FEC_LLRS_BIT = 0x4a + ETHTOOL_LINK_MODE_100000baseKR_Full_BIT = 0x4b + ETHTOOL_LINK_MODE_100000baseSR_Full_BIT = 0x4c + ETHTOOL_LINK_MODE_100000baseLR_ER_FR_Full_BIT = 0x4d + ETHTOOL_LINK_MODE_100000baseCR_Full_BIT = 0x4e + ETHTOOL_LINK_MODE_100000baseDR_Full_BIT = 0x4f + ETHTOOL_LINK_MODE_200000baseKR2_Full_BIT = 0x50 + ETHTOOL_LINK_MODE_200000baseSR2_Full_BIT = 0x51 + ETHTOOL_LINK_MODE_200000baseLR2_ER2_FR2_Full_BIT = 0x52 + ETHTOOL_LINK_MODE_200000baseDR2_Full_BIT = 0x53 + ETHTOOL_LINK_MODE_200000baseCR2_Full_BIT = 0x54 + ETHTOOL_LINK_MODE_400000baseKR4_Full_BIT = 0x55 + ETHTOOL_LINK_MODE_400000baseSR4_Full_BIT = 0x56 + ETHTOOL_LINK_MODE_400000baseLR4_ER4_FR4_Full_BIT = 0x57 + ETHTOOL_LINK_MODE_400000baseDR4_Full_BIT = 0x58 + ETHTOOL_LINK_MODE_400000baseCR4_Full_BIT = 0x59 + ETHTOOL_LINK_MODE_100baseFX_Half_BIT = 0x5a + ETHTOOL_LINK_MODE_100baseFX_Full_BIT = 0x5b + + ETHTOOL_MSG_USER_NONE = 0x0 + ETHTOOL_MSG_STRSET_GET = 0x1 + ETHTOOL_MSG_LINKINFO_GET = 0x2 + ETHTOOL_MSG_LINKINFO_SET = 0x3 + ETHTOOL_MSG_LINKMODES_GET = 0x4 + ETHTOOL_MSG_LINKMODES_SET = 0x5 + ETHTOOL_MSG_LINKSTATE_GET = 0x6 + ETHTOOL_MSG_DEBUG_GET = 0x7 + ETHTOOL_MSG_DEBUG_SET = 0x8 + ETHTOOL_MSG_WOL_GET = 0x9 + ETHTOOL_MSG_WOL_SET = 0xa + ETHTOOL_MSG_FEATURES_GET = 0xb + ETHTOOL_MSG_FEATURES_SET = 0xc + ETHTOOL_MSG_PRIVFLAGS_GET = 0xd + ETHTOOL_MSG_PRIVFLAGS_SET = 0xe + ETHTOOL_MSG_RINGS_GET = 0xf + ETHTOOL_MSG_RINGS_SET = 0x10 + ETHTOOL_MSG_CHANNELS_GET = 0x11 + ETHTOOL_MSG_CHANNELS_SET = 0x12 + ETHTOOL_MSG_COALESCE_GET = 0x13 + ETHTOOL_MSG_COALESCE_SET = 0x14 + ETHTOOL_MSG_PAUSE_GET = 0x15 + ETHTOOL_MSG_PAUSE_SET = 0x16 + ETHTOOL_MSG_EEE_GET = 0x17 + ETHTOOL_MSG_EEE_SET = 0x18 + ETHTOOL_MSG_TSINFO_GET = 0x19 + ETHTOOL_MSG_CABLE_TEST_ACT = 0x1a + ETHTOOL_MSG_CABLE_TEST_TDR_ACT = 0x1b + ETHTOOL_MSG_TUNNEL_INFO_GET = 0x1c + ETHTOOL_MSG_FEC_GET = 0x1d + ETHTOOL_MSG_FEC_SET = 0x1e + ETHTOOL_MSG_MODULE_EEPROM_GET = 0x1f + ETHTOOL_MSG_STATS_GET = 0x20 + ETHTOOL_MSG_PHC_VCLOCKS_GET = 0x21 + ETHTOOL_MSG_MODULE_GET = 0x22 + ETHTOOL_MSG_MODULE_SET = 0x23 + ETHTOOL_MSG_PSE_GET = 0x24 + ETHTOOL_MSG_PSE_SET = 0x25 + ETHTOOL_MSG_RSS_GET = 0x26 + ETHTOOL_MSG_USER_MAX = 0x2d + ETHTOOL_MSG_KERNEL_NONE = 0x0 + ETHTOOL_MSG_STRSET_GET_REPLY = 0x1 + ETHTOOL_MSG_LINKINFO_GET_REPLY = 0x2 + ETHTOOL_MSG_LINKINFO_NTF = 0x3 + ETHTOOL_MSG_LINKMODES_GET_REPLY = 0x4 + ETHTOOL_MSG_LINKMODES_NTF = 0x5 + ETHTOOL_MSG_LINKSTATE_GET_REPLY = 0x6 + ETHTOOL_MSG_DEBUG_GET_REPLY = 0x7 + ETHTOOL_MSG_DEBUG_NTF = 0x8 + ETHTOOL_MSG_WOL_GET_REPLY = 0x9 + ETHTOOL_MSG_WOL_NTF = 0xa + ETHTOOL_MSG_FEATURES_GET_REPLY = 0xb + ETHTOOL_MSG_FEATURES_SET_REPLY = 0xc + ETHTOOL_MSG_FEATURES_NTF = 0xd + ETHTOOL_MSG_PRIVFLAGS_GET_REPLY = 0xe + ETHTOOL_MSG_PRIVFLAGS_NTF = 0xf + ETHTOOL_MSG_RINGS_GET_REPLY = 0x10 + ETHTOOL_MSG_RINGS_NTF = 0x11 + ETHTOOL_MSG_CHANNELS_GET_REPLY = 0x12 + ETHTOOL_MSG_CHANNELS_NTF = 0x13 + ETHTOOL_MSG_COALESCE_GET_REPLY = 0x14 + ETHTOOL_MSG_COALESCE_NTF = 0x15 + ETHTOOL_MSG_PAUSE_GET_REPLY = 0x16 + ETHTOOL_MSG_PAUSE_NTF = 0x17 + ETHTOOL_MSG_EEE_GET_REPLY = 0x18 + ETHTOOL_MSG_EEE_NTF = 0x19 + ETHTOOL_MSG_TSINFO_GET_REPLY = 0x1a + ETHTOOL_MSG_CABLE_TEST_NTF = 0x1b + ETHTOOL_MSG_CABLE_TEST_TDR_NTF = 0x1c + ETHTOOL_MSG_TUNNEL_INFO_GET_REPLY = 0x1d + ETHTOOL_MSG_FEC_GET_REPLY = 0x1e + ETHTOOL_MSG_FEC_NTF = 0x1f + ETHTOOL_MSG_MODULE_EEPROM_GET_REPLY = 0x20 + ETHTOOL_MSG_STATS_GET_REPLY = 0x21 + ETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY = 0x22 + ETHTOOL_MSG_MODULE_GET_REPLY = 0x23 + ETHTOOL_MSG_MODULE_NTF = 0x24 + ETHTOOL_MSG_PSE_GET_REPLY = 0x25 + ETHTOOL_MSG_RSS_GET_REPLY = 0x26 + ETHTOOL_MSG_KERNEL_MAX = 0x2e + ETHTOOL_FLAG_COMPACT_BITSETS = 0x1 + ETHTOOL_FLAG_OMIT_REPLY = 0x2 + ETHTOOL_FLAG_STATS = 0x4 + ETHTOOL_A_HEADER_UNSPEC = 0x0 + ETHTOOL_A_HEADER_DEV_INDEX = 0x1 + ETHTOOL_A_HEADER_DEV_NAME = 0x2 + ETHTOOL_A_HEADER_FLAGS = 0x3 + ETHTOOL_A_HEADER_MAX = 0x4 + ETHTOOL_A_BITSET_BIT_UNSPEC = 0x0 + ETHTOOL_A_BITSET_BIT_INDEX = 0x1 + ETHTOOL_A_BITSET_BIT_NAME = 0x2 + ETHTOOL_A_BITSET_BIT_VALUE = 0x3 + ETHTOOL_A_BITSET_BIT_MAX = 0x3 + ETHTOOL_A_BITSET_BITS_UNSPEC = 0x0 + ETHTOOL_A_BITSET_BITS_BIT = 0x1 + ETHTOOL_A_BITSET_BITS_MAX = 0x1 + ETHTOOL_A_BITSET_UNSPEC = 0x0 + ETHTOOL_A_BITSET_NOMASK = 0x1 + ETHTOOL_A_BITSET_SIZE = 0x2 + ETHTOOL_A_BITSET_BITS = 0x3 + ETHTOOL_A_BITSET_VALUE = 0x4 + ETHTOOL_A_BITSET_MASK = 0x5 + ETHTOOL_A_BITSET_MAX = 0x5 + ETHTOOL_A_STRING_UNSPEC = 0x0 + ETHTOOL_A_STRING_INDEX = 0x1 + ETHTOOL_A_STRING_VALUE = 0x2 + ETHTOOL_A_STRING_MAX = 0x2 + ETHTOOL_A_STRINGS_UNSPEC = 0x0 + ETHTOOL_A_STRINGS_STRING = 0x1 + ETHTOOL_A_STRINGS_MAX = 0x1 + ETHTOOL_A_STRINGSET_UNSPEC = 0x0 + ETHTOOL_A_STRINGSET_ID = 0x1 + ETHTOOL_A_STRINGSET_COUNT = 0x2 + ETHTOOL_A_STRINGSET_STRINGS = 0x3 + ETHTOOL_A_STRINGSET_MAX = 0x3 + ETHTOOL_A_STRINGSETS_UNSPEC = 0x0 + ETHTOOL_A_STRINGSETS_STRINGSET = 0x1 + ETHTOOL_A_STRINGSETS_MAX = 0x1 + ETHTOOL_A_STRSET_UNSPEC = 0x0 + ETHTOOL_A_STRSET_HEADER = 0x1 + ETHTOOL_A_STRSET_STRINGSETS = 0x2 + ETHTOOL_A_STRSET_COUNTS_ONLY = 0x3 + ETHTOOL_A_STRSET_MAX = 0x3 + ETHTOOL_A_LINKINFO_UNSPEC = 0x0 + ETHTOOL_A_LINKINFO_HEADER = 0x1 + ETHTOOL_A_LINKINFO_PORT = 0x2 + ETHTOOL_A_LINKINFO_PHYADDR = 0x3 + ETHTOOL_A_LINKINFO_TP_MDIX = 0x4 + ETHTOOL_A_LINKINFO_TP_MDIX_CTRL = 0x5 + ETHTOOL_A_LINKINFO_TRANSCEIVER = 0x6 + ETHTOOL_A_LINKINFO_MAX = 0x6 + ETHTOOL_A_LINKMODES_UNSPEC = 0x0 + ETHTOOL_A_LINKMODES_HEADER = 0x1 + ETHTOOL_A_LINKMODES_AUTONEG = 0x2 + ETHTOOL_A_LINKMODES_OURS = 0x3 + ETHTOOL_A_LINKMODES_PEER = 0x4 + ETHTOOL_A_LINKMODES_SPEED = 0x5 + ETHTOOL_A_LINKMODES_DUPLEX = 0x6 + ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG = 0x7 + ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE = 0x8 + ETHTOOL_A_LINKMODES_LANES = 0x9 + ETHTOOL_A_LINKMODES_RATE_MATCHING = 0xa + ETHTOOL_A_LINKMODES_MAX = 0xa + ETHTOOL_A_LINKSTATE_UNSPEC = 0x0 + ETHTOOL_A_LINKSTATE_HEADER = 0x1 + ETHTOOL_A_LINKSTATE_LINK = 0x2 + ETHTOOL_A_LINKSTATE_SQI = 0x3 + ETHTOOL_A_LINKSTATE_SQI_MAX = 0x4 + ETHTOOL_A_LINKSTATE_EXT_STATE = 0x5 + ETHTOOL_A_LINKSTATE_EXT_SUBSTATE = 0x6 + ETHTOOL_A_LINKSTATE_EXT_DOWN_CNT = 0x7 + ETHTOOL_A_LINKSTATE_MAX = 0x7 + ETHTOOL_A_DEBUG_UNSPEC = 0x0 + ETHTOOL_A_DEBUG_HEADER = 0x1 + ETHTOOL_A_DEBUG_MSGMASK = 0x2 + ETHTOOL_A_DEBUG_MAX = 0x2 + ETHTOOL_A_WOL_UNSPEC = 0x0 + ETHTOOL_A_WOL_HEADER = 0x1 + ETHTOOL_A_WOL_MODES = 0x2 + ETHTOOL_A_WOL_SOPASS = 0x3 + ETHTOOL_A_WOL_MAX = 0x3 + ETHTOOL_A_FEATURES_UNSPEC = 0x0 + ETHTOOL_A_FEATURES_HEADER = 0x1 + ETHTOOL_A_FEATURES_HW = 0x2 + ETHTOOL_A_FEATURES_WANTED = 0x3 + ETHTOOL_A_FEATURES_ACTIVE = 0x4 + ETHTOOL_A_FEATURES_NOCHANGE = 0x5 + ETHTOOL_A_FEATURES_MAX = 0x5 + ETHTOOL_A_PRIVFLAGS_UNSPEC = 0x0 + ETHTOOL_A_PRIVFLAGS_HEADER = 0x1 + ETHTOOL_A_PRIVFLAGS_FLAGS = 0x2 + ETHTOOL_A_PRIVFLAGS_MAX = 0x2 + ETHTOOL_A_RINGS_UNSPEC = 0x0 + ETHTOOL_A_RINGS_HEADER = 0x1 + ETHTOOL_A_RINGS_RX_MAX = 0x2 + ETHTOOL_A_RINGS_RX_MINI_MAX = 0x3 + ETHTOOL_A_RINGS_RX_JUMBO_MAX = 0x4 + ETHTOOL_A_RINGS_TX_MAX = 0x5 + ETHTOOL_A_RINGS_RX = 0x6 + ETHTOOL_A_RINGS_RX_MINI = 0x7 + ETHTOOL_A_RINGS_RX_JUMBO = 0x8 + ETHTOOL_A_RINGS_TX = 0x9 + ETHTOOL_A_RINGS_RX_BUF_LEN = 0xa + ETHTOOL_A_RINGS_TCP_DATA_SPLIT = 0xb + ETHTOOL_A_RINGS_CQE_SIZE = 0xc + ETHTOOL_A_RINGS_TX_PUSH = 0xd + ETHTOOL_A_RINGS_MAX = 0x10 + ETHTOOL_A_CHANNELS_UNSPEC = 0x0 + ETHTOOL_A_CHANNELS_HEADER = 0x1 + ETHTOOL_A_CHANNELS_RX_MAX = 0x2 + ETHTOOL_A_CHANNELS_TX_MAX = 0x3 + ETHTOOL_A_CHANNELS_OTHER_MAX = 0x4 + ETHTOOL_A_CHANNELS_COMBINED_MAX = 0x5 + ETHTOOL_A_CHANNELS_RX_COUNT = 0x6 + ETHTOOL_A_CHANNELS_TX_COUNT = 0x7 + ETHTOOL_A_CHANNELS_OTHER_COUNT = 0x8 + ETHTOOL_A_CHANNELS_COMBINED_COUNT = 0x9 + ETHTOOL_A_CHANNELS_MAX = 0x9 + ETHTOOL_A_COALESCE_UNSPEC = 0x0 + ETHTOOL_A_COALESCE_HEADER = 0x1 + ETHTOOL_A_COALESCE_RX_USECS = 0x2 + ETHTOOL_A_COALESCE_RX_MAX_FRAMES = 0x3 + ETHTOOL_A_COALESCE_RX_USECS_IRQ = 0x4 + ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ = 0x5 + ETHTOOL_A_COALESCE_TX_USECS = 0x6 + ETHTOOL_A_COALESCE_TX_MAX_FRAMES = 0x7 + ETHTOOL_A_COALESCE_TX_USECS_IRQ = 0x8 + ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ = 0x9 + ETHTOOL_A_COALESCE_STATS_BLOCK_USECS = 0xa + ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX = 0xb + ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX = 0xc + ETHTOOL_A_COALESCE_PKT_RATE_LOW = 0xd + ETHTOOL_A_COALESCE_RX_USECS_LOW = 0xe + ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW = 0xf + ETHTOOL_A_COALESCE_TX_USECS_LOW = 0x10 + ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW = 0x11 + ETHTOOL_A_COALESCE_PKT_RATE_HIGH = 0x12 + ETHTOOL_A_COALESCE_RX_USECS_HIGH = 0x13 + ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH = 0x14 + ETHTOOL_A_COALESCE_TX_USECS_HIGH = 0x15 + ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH = 0x16 + ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL = 0x17 + ETHTOOL_A_COALESCE_USE_CQE_MODE_TX = 0x18 + ETHTOOL_A_COALESCE_USE_CQE_MODE_RX = 0x19 + ETHTOOL_A_COALESCE_MAX = 0x1e + ETHTOOL_A_PAUSE_UNSPEC = 0x0 + ETHTOOL_A_PAUSE_HEADER = 0x1 + ETHTOOL_A_PAUSE_AUTONEG = 0x2 + ETHTOOL_A_PAUSE_RX = 0x3 + ETHTOOL_A_PAUSE_TX = 0x4 + ETHTOOL_A_PAUSE_STATS = 0x5 + ETHTOOL_A_PAUSE_MAX = 0x6 + ETHTOOL_A_PAUSE_STAT_UNSPEC = 0x0 + ETHTOOL_A_PAUSE_STAT_PAD = 0x1 + ETHTOOL_A_PAUSE_STAT_TX_FRAMES = 0x2 + ETHTOOL_A_PAUSE_STAT_RX_FRAMES = 0x3 + ETHTOOL_A_PAUSE_STAT_MAX = 0x3 + ETHTOOL_A_EEE_UNSPEC = 0x0 + ETHTOOL_A_EEE_HEADER = 0x1 + ETHTOOL_A_EEE_MODES_OURS = 0x2 + ETHTOOL_A_EEE_MODES_PEER = 0x3 + ETHTOOL_A_EEE_ACTIVE = 0x4 + ETHTOOL_A_EEE_ENABLED = 0x5 + ETHTOOL_A_EEE_TX_LPI_ENABLED = 0x6 + ETHTOOL_A_EEE_TX_LPI_TIMER = 0x7 + ETHTOOL_A_EEE_MAX = 0x7 + ETHTOOL_A_TSINFO_UNSPEC = 0x0 + ETHTOOL_A_TSINFO_HEADER = 0x1 + ETHTOOL_A_TSINFO_TIMESTAMPING = 0x2 + ETHTOOL_A_TSINFO_TX_TYPES = 0x3 + ETHTOOL_A_TSINFO_RX_FILTERS = 0x4 + ETHTOOL_A_TSINFO_PHC_INDEX = 0x5 + ETHTOOL_A_TSINFO_MAX = 0x6 + ETHTOOL_A_CABLE_TEST_UNSPEC = 0x0 + ETHTOOL_A_CABLE_TEST_HEADER = 0x1 + ETHTOOL_A_CABLE_TEST_MAX = 0x1 + ETHTOOL_A_CABLE_RESULT_CODE_UNSPEC = 0x0 + ETHTOOL_A_CABLE_RESULT_CODE_OK = 0x1 + ETHTOOL_A_CABLE_RESULT_CODE_OPEN = 0x2 + ETHTOOL_A_CABLE_RESULT_CODE_SAME_SHORT = 0x3 + ETHTOOL_A_CABLE_RESULT_CODE_CROSS_SHORT = 0x4 + ETHTOOL_A_CABLE_PAIR_A = 0x0 + ETHTOOL_A_CABLE_PAIR_B = 0x1 + ETHTOOL_A_CABLE_PAIR_C = 0x2 + ETHTOOL_A_CABLE_PAIR_D = 0x3 + ETHTOOL_A_CABLE_RESULT_UNSPEC = 0x0 + ETHTOOL_A_CABLE_RESULT_PAIR = 0x1 + ETHTOOL_A_CABLE_RESULT_CODE = 0x2 + ETHTOOL_A_CABLE_RESULT_MAX = 0x3 + ETHTOOL_A_CABLE_FAULT_LENGTH_UNSPEC = 0x0 + ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR = 0x1 + ETHTOOL_A_CABLE_FAULT_LENGTH_CM = 0x2 + ETHTOOL_A_CABLE_FAULT_LENGTH_MAX = 0x3 + ETHTOOL_A_CABLE_TEST_NTF_STATUS_UNSPEC = 0x0 + ETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED = 0x1 + ETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED = 0x2 + ETHTOOL_A_CABLE_NEST_UNSPEC = 0x0 + ETHTOOL_A_CABLE_NEST_RESULT = 0x1 + ETHTOOL_A_CABLE_NEST_FAULT_LENGTH = 0x2 + ETHTOOL_A_CABLE_NEST_MAX = 0x2 + ETHTOOL_A_CABLE_TEST_NTF_UNSPEC = 0x0 + ETHTOOL_A_CABLE_TEST_NTF_HEADER = 0x1 + ETHTOOL_A_CABLE_TEST_NTF_STATUS = 0x2 + ETHTOOL_A_CABLE_TEST_NTF_NEST = 0x3 + ETHTOOL_A_CABLE_TEST_NTF_MAX = 0x3 + ETHTOOL_A_CABLE_TEST_TDR_CFG_UNSPEC = 0x0 + ETHTOOL_A_CABLE_TEST_TDR_CFG_FIRST = 0x1 + ETHTOOL_A_CABLE_TEST_TDR_CFG_LAST = 0x2 + ETHTOOL_A_CABLE_TEST_TDR_CFG_STEP = 0x3 + ETHTOOL_A_CABLE_TEST_TDR_CFG_PAIR = 0x4 + ETHTOOL_A_CABLE_TEST_TDR_CFG_MAX = 0x4 + ETHTOOL_A_CABLE_TEST_TDR_UNSPEC = 0x0 + ETHTOOL_A_CABLE_TEST_TDR_HEADER = 0x1 + ETHTOOL_A_CABLE_TEST_TDR_CFG = 0x2 + ETHTOOL_A_CABLE_TEST_TDR_MAX = 0x2 + ETHTOOL_A_CABLE_AMPLITUDE_UNSPEC = 0x0 + ETHTOOL_A_CABLE_AMPLITUDE_PAIR = 0x1 + ETHTOOL_A_CABLE_AMPLITUDE_mV = 0x2 + ETHTOOL_A_CABLE_AMPLITUDE_MAX = 0x2 + ETHTOOL_A_CABLE_PULSE_UNSPEC = 0x0 + ETHTOOL_A_CABLE_PULSE_mV = 0x1 + ETHTOOL_A_CABLE_PULSE_MAX = 0x1 + ETHTOOL_A_CABLE_STEP_UNSPEC = 0x0 + ETHTOOL_A_CABLE_STEP_FIRST_DISTANCE = 0x1 + ETHTOOL_A_CABLE_STEP_LAST_DISTANCE = 0x2 + ETHTOOL_A_CABLE_STEP_STEP_DISTANCE = 0x3 + ETHTOOL_A_CABLE_STEP_MAX = 0x3 + ETHTOOL_A_CABLE_TDR_NEST_UNSPEC = 0x0 + ETHTOOL_A_CABLE_TDR_NEST_STEP = 0x1 + ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE = 0x2 + ETHTOOL_A_CABLE_TDR_NEST_PULSE = 0x3 + ETHTOOL_A_CABLE_TDR_NEST_MAX = 0x3 + ETHTOOL_A_CABLE_TEST_TDR_NTF_UNSPEC = 0x0 + ETHTOOL_A_CABLE_TEST_TDR_NTF_HEADER = 0x1 + ETHTOOL_A_CABLE_TEST_TDR_NTF_STATUS = 0x2 + ETHTOOL_A_CABLE_TEST_TDR_NTF_NEST = 0x3 + ETHTOOL_A_CABLE_TEST_TDR_NTF_MAX = 0x3 + ETHTOOL_UDP_TUNNEL_TYPE_VXLAN = 0x0 + ETHTOOL_UDP_TUNNEL_TYPE_GENEVE = 0x1 + ETHTOOL_UDP_TUNNEL_TYPE_VXLAN_GPE = 0x2 + ETHTOOL_A_TUNNEL_UDP_ENTRY_UNSPEC = 0x0 + ETHTOOL_A_TUNNEL_UDP_ENTRY_PORT = 0x1 + ETHTOOL_A_TUNNEL_UDP_ENTRY_TYPE = 0x2 + ETHTOOL_A_TUNNEL_UDP_ENTRY_MAX = 0x2 + ETHTOOL_A_TUNNEL_UDP_TABLE_UNSPEC = 0x0 + ETHTOOL_A_TUNNEL_UDP_TABLE_SIZE = 0x1 + ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES = 0x2 + ETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY = 0x3 + ETHTOOL_A_TUNNEL_UDP_TABLE_MAX = 0x3 + ETHTOOL_A_TUNNEL_UDP_UNSPEC = 0x0 + ETHTOOL_A_TUNNEL_UDP_TABLE = 0x1 + ETHTOOL_A_TUNNEL_UDP_MAX = 0x1 + ETHTOOL_A_TUNNEL_INFO_UNSPEC = 0x0 + ETHTOOL_A_TUNNEL_INFO_HEADER = 0x1 + ETHTOOL_A_TUNNEL_INFO_UDP_PORTS = 0x2 + ETHTOOL_A_TUNNEL_INFO_MAX = 0x2 +) + +const SPEED_UNKNOWN = -0x1 + +type EthtoolDrvinfo struct { + Cmd uint32 + Driver [32]byte + Version [32]byte + Fw_version [32]byte + Bus_info [32]byte + Erom_version [32]byte + Reserved2 [12]byte + N_priv_flags uint32 + N_stats uint32 + Testinfo_len uint32 + Eedump_len uint32 + Regdump_len uint32 +} + +type EthtoolTsInfo struct { + Cmd uint32 + So_timestamping uint32 + Phc_index int32 + Tx_types uint32 + Tx_reserved [3]uint32 + Rx_filters uint32 + Rx_reserved [3]uint32 +} + +type HwTstampConfig struct { + Flags int32 + Tx_type int32 + Rx_filter int32 +} + +const ( + HWTSTAMP_FILTER_NONE = 0x0 + HWTSTAMP_FILTER_ALL = 0x1 + HWTSTAMP_FILTER_SOME = 0x2 + HWTSTAMP_FILTER_PTP_V1_L4_EVENT = 0x3 + HWTSTAMP_FILTER_PTP_V2_L4_EVENT = 0x6 + HWTSTAMP_FILTER_PTP_V2_L2_EVENT = 0x9 + HWTSTAMP_FILTER_PTP_V2_EVENT = 0xc +) + +const ( + HWTSTAMP_TX_OFF = 0x0 + HWTSTAMP_TX_ON = 0x1 + HWTSTAMP_TX_ONESTEP_SYNC = 0x2 +) + +type ( + PtpClockCaps struct { + Max_adj int32 + N_alarm int32 + N_ext_ts int32 + N_per_out int32 + Pps int32 + N_pins int32 + Cross_timestamping int32 + Adjust_phase int32 + Max_phase_adj int32 + Rsv [11]int32 + } + PtpClockTime struct { + Sec int64 + Nsec uint32 + Reserved uint32 + } + PtpExttsEvent struct { + T PtpClockTime + Index uint32 + Flags uint32 + Rsv [2]uint32 + } + PtpExttsRequest struct { + Index uint32 + Flags uint32 + Rsv [2]uint32 + } + PtpPeroutRequest struct { + StartOrPhase PtpClockTime + Period PtpClockTime + Index uint32 + Flags uint32 + On PtpClockTime + } + PtpPinDesc struct { + Name [64]byte + Index uint32 + Func uint32 + Chan uint32 + Rsv [5]uint32 + } + PtpSysOffset struct { + Samples uint32 + Rsv [3]uint32 + Ts [51]PtpClockTime + } + PtpSysOffsetExtended struct { + Samples uint32 + Clockid int32 + Rsv [2]uint32 + Ts [25][3]PtpClockTime + } + PtpSysOffsetPrecise struct { + Device PtpClockTime + Realtime PtpClockTime + Monoraw PtpClockTime + Rsv [4]uint32 + } +) + +const ( + PTP_PF_NONE = 0x0 + PTP_PF_EXTTS = 0x1 + PTP_PF_PEROUT = 0x2 + PTP_PF_PHYSYNC = 0x3 +) + +type ( + HIDRawReportDescriptor struct { + Size uint32 + Value [4096]uint8 + } + HIDRawDevInfo struct { + Bustype uint32 + Vendor int16 + Product int16 + } +) + +const ( + CLOSE_RANGE_UNSHARE = 0x2 + CLOSE_RANGE_CLOEXEC = 0x4 +) + +const ( + NLMSGERR_ATTR_MSG = 0x1 + NLMSGERR_ATTR_OFFS = 0x2 + NLMSGERR_ATTR_COOKIE = 0x3 +) + +type ( + EraseInfo struct { + Start uint32 + Length uint32 + } + EraseInfo64 struct { + Start uint64 + Length uint64 + } + MtdOobBuf struct { + Start uint32 + Length uint32 + Ptr *uint8 + } + MtdOobBuf64 struct { + Start uint64 + Pad uint32 + Length uint32 + Ptr uint64 + } + MtdWriteReq struct { + Start uint64 + Len uint64 + Ooblen uint64 + Data uint64 + Oob uint64 + Mode uint8 + _ [7]uint8 + } + MtdInfo struct { + Type uint8 + Flags uint32 + Size uint32 + Erasesize uint32 + Writesize uint32 + Oobsize uint32 + _ uint64 + } + RegionInfo struct { + Offset uint32 + Erasesize uint32 + Numblocks uint32 + Regionindex uint32 + } + OtpInfo struct { + Start uint32 + Length uint32 + Locked uint32 + } + NandOobinfo struct { + Useecc uint32 + Eccbytes uint32 + Oobfree [8][2]uint32 + Eccpos [32]uint32 + } + NandOobfree struct { + Offset uint32 + Length uint32 + } + NandEcclayout struct { + Eccbytes uint32 + Eccpos [64]uint32 + Oobavail uint32 + Oobfree [8]NandOobfree + } + MtdEccStats struct { + Corrected uint32 + Failed uint32 + Badblocks uint32 + Bbtblocks uint32 + } +) + +const ( + MTD_OPS_PLACE_OOB = 0x0 + MTD_OPS_AUTO_OOB = 0x1 + MTD_OPS_RAW = 0x2 +) + +const ( + MTD_FILE_MODE_NORMAL = 0x0 + MTD_FILE_MODE_OTP_FACTORY = 0x1 + MTD_FILE_MODE_OTP_USER = 0x2 + MTD_FILE_MODE_RAW = 0x3 +) + +const ( + NFC_CMD_UNSPEC = 0x0 + NFC_CMD_GET_DEVICE = 0x1 + NFC_CMD_DEV_UP = 0x2 + NFC_CMD_DEV_DOWN = 0x3 + NFC_CMD_DEP_LINK_UP = 0x4 + NFC_CMD_DEP_LINK_DOWN = 0x5 + NFC_CMD_START_POLL = 0x6 + NFC_CMD_STOP_POLL = 0x7 + NFC_CMD_GET_TARGET = 0x8 + NFC_EVENT_TARGETS_FOUND = 0x9 + NFC_EVENT_DEVICE_ADDED = 0xa + NFC_EVENT_DEVICE_REMOVED = 0xb + NFC_EVENT_TARGET_LOST = 0xc + NFC_EVENT_TM_ACTIVATED = 0xd + NFC_EVENT_TM_DEACTIVATED = 0xe + NFC_CMD_LLC_GET_PARAMS = 0xf + NFC_CMD_LLC_SET_PARAMS = 0x10 + NFC_CMD_ENABLE_SE = 0x11 + NFC_CMD_DISABLE_SE = 0x12 + NFC_CMD_LLC_SDREQ = 0x13 + NFC_EVENT_LLC_SDRES = 0x14 + NFC_CMD_FW_DOWNLOAD = 0x15 + NFC_EVENT_SE_ADDED = 0x16 + NFC_EVENT_SE_REMOVED = 0x17 + NFC_EVENT_SE_CONNECTIVITY = 0x18 + NFC_EVENT_SE_TRANSACTION = 0x19 + NFC_CMD_GET_SE = 0x1a + NFC_CMD_SE_IO = 0x1b + NFC_CMD_ACTIVATE_TARGET = 0x1c + NFC_CMD_VENDOR = 0x1d + NFC_CMD_DEACTIVATE_TARGET = 0x1e + NFC_ATTR_UNSPEC = 0x0 + NFC_ATTR_DEVICE_INDEX = 0x1 + NFC_ATTR_DEVICE_NAME = 0x2 + NFC_ATTR_PROTOCOLS = 0x3 + NFC_ATTR_TARGET_INDEX = 0x4 + NFC_ATTR_TARGET_SENS_RES = 0x5 + NFC_ATTR_TARGET_SEL_RES = 0x6 + NFC_ATTR_TARGET_NFCID1 = 0x7 + NFC_ATTR_TARGET_SENSB_RES = 0x8 + NFC_ATTR_TARGET_SENSF_RES = 0x9 + NFC_ATTR_COMM_MODE = 0xa + NFC_ATTR_RF_MODE = 0xb + NFC_ATTR_DEVICE_POWERED = 0xc + NFC_ATTR_IM_PROTOCOLS = 0xd + NFC_ATTR_TM_PROTOCOLS = 0xe + NFC_ATTR_LLC_PARAM_LTO = 0xf + NFC_ATTR_LLC_PARAM_RW = 0x10 + NFC_ATTR_LLC_PARAM_MIUX = 0x11 + NFC_ATTR_SE = 0x12 + NFC_ATTR_LLC_SDP = 0x13 + NFC_ATTR_FIRMWARE_NAME = 0x14 + NFC_ATTR_SE_INDEX = 0x15 + NFC_ATTR_SE_TYPE = 0x16 + NFC_ATTR_SE_AID = 0x17 + NFC_ATTR_FIRMWARE_DOWNLOAD_STATUS = 0x18 + NFC_ATTR_SE_APDU = 0x19 + NFC_ATTR_TARGET_ISO15693_DSFID = 0x1a + NFC_ATTR_TARGET_ISO15693_UID = 0x1b + NFC_ATTR_SE_PARAMS = 0x1c + NFC_ATTR_VENDOR_ID = 0x1d + NFC_ATTR_VENDOR_SUBCMD = 0x1e + NFC_ATTR_VENDOR_DATA = 0x1f + NFC_SDP_ATTR_UNSPEC = 0x0 + NFC_SDP_ATTR_URI = 0x1 + NFC_SDP_ATTR_SAP = 0x2 +) + +type LandlockRulesetAttr struct { + Access_fs uint64 + Access_net uint64 + Scoped uint64 +} + +type LandlockPathBeneathAttr struct { + Allowed_access uint64 + Parent_fd int32 +} + +const ( + LANDLOCK_RULE_PATH_BENEATH = 0x1 +) + +const ( + IPC_CREAT = 0x200 + IPC_EXCL = 0x400 + IPC_NOWAIT = 0x800 + IPC_PRIVATE = 0x0 + + ipc_64 = 0x100 +) + +const ( + IPC_RMID = 0x0 + IPC_SET = 0x1 + IPC_STAT = 0x2 +) + +const ( + SHM_RDONLY = 0x1000 + SHM_RND = 0x2000 +) + +type MountAttr struct { + Attr_set uint64 + Attr_clr uint64 + Propagation uint64 + Userns_fd uint64 +} + +const ( + WG_CMD_GET_DEVICE = 0x0 + WG_CMD_SET_DEVICE = 0x1 + WGDEVICE_F_REPLACE_PEERS = 0x1 + WGDEVICE_A_UNSPEC = 0x0 + WGDEVICE_A_IFINDEX = 0x1 + WGDEVICE_A_IFNAME = 0x2 + WGDEVICE_A_PRIVATE_KEY = 0x3 + WGDEVICE_A_PUBLIC_KEY = 0x4 + WGDEVICE_A_FLAGS = 0x5 + WGDEVICE_A_LISTEN_PORT = 0x6 + WGDEVICE_A_FWMARK = 0x7 + WGDEVICE_A_PEERS = 0x8 + WGPEER_F_REMOVE_ME = 0x1 + WGPEER_F_REPLACE_ALLOWEDIPS = 0x2 + WGPEER_F_UPDATE_ONLY = 0x4 + WGPEER_A_UNSPEC = 0x0 + WGPEER_A_PUBLIC_KEY = 0x1 + WGPEER_A_PRESHARED_KEY = 0x2 + WGPEER_A_FLAGS = 0x3 + WGPEER_A_ENDPOINT = 0x4 + WGPEER_A_PERSISTENT_KEEPALIVE_INTERVAL = 0x5 + WGPEER_A_LAST_HANDSHAKE_TIME = 0x6 + WGPEER_A_RX_BYTES = 0x7 + WGPEER_A_TX_BYTES = 0x8 + WGPEER_A_ALLOWEDIPS = 0x9 + WGPEER_A_PROTOCOL_VERSION = 0xa + WGALLOWEDIP_A_UNSPEC = 0x0 + WGALLOWEDIP_A_FAMILY = 0x1 + WGALLOWEDIP_A_IPADDR = 0x2 + WGALLOWEDIP_A_CIDR_MASK = 0x3 +) + +const ( + NL_ATTR_TYPE_INVALID = 0x0 + NL_ATTR_TYPE_FLAG = 0x1 + NL_ATTR_TYPE_U8 = 0x2 + NL_ATTR_TYPE_U16 = 0x3 + NL_ATTR_TYPE_U32 = 0x4 + NL_ATTR_TYPE_U64 = 0x5 + NL_ATTR_TYPE_S8 = 0x6 + NL_ATTR_TYPE_S16 = 0x7 + NL_ATTR_TYPE_S32 = 0x8 + NL_ATTR_TYPE_S64 = 0x9 + NL_ATTR_TYPE_BINARY = 0xa + NL_ATTR_TYPE_STRING = 0xb + NL_ATTR_TYPE_NUL_STRING = 0xc + NL_ATTR_TYPE_NESTED = 0xd + NL_ATTR_TYPE_NESTED_ARRAY = 0xe + NL_ATTR_TYPE_BITFIELD32 = 0xf + + NL_POLICY_TYPE_ATTR_UNSPEC = 0x0 + NL_POLICY_TYPE_ATTR_TYPE = 0x1 + NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 0x2 + NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 0x3 + NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 0x4 + NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 0x5 + NL_POLICY_TYPE_ATTR_MIN_LENGTH = 0x6 + NL_POLICY_TYPE_ATTR_MAX_LENGTH = 0x7 + NL_POLICY_TYPE_ATTR_POLICY_IDX = 0x8 + NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 0x9 + NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 0xa + NL_POLICY_TYPE_ATTR_PAD = 0xb + NL_POLICY_TYPE_ATTR_MASK = 0xc + NL_POLICY_TYPE_ATTR_MAX = 0xc +) + +type CANBitTiming struct { + Bitrate uint32 + Sample_point uint32 + Tq uint32 + Prop_seg uint32 + Phase_seg1 uint32 + Phase_seg2 uint32 + Sjw uint32 + Brp uint32 +} + +type CANBitTimingConst struct { + Name [16]uint8 + Tseg1_min uint32 + Tseg1_max uint32 + Tseg2_min uint32 + Tseg2_max uint32 + Sjw_max uint32 + Brp_min uint32 + Brp_max uint32 + Brp_inc uint32 +} + +type CANClock struct { + Freq uint32 +} + +type CANBusErrorCounters struct { + Txerr uint16 + Rxerr uint16 +} + +type CANCtrlMode struct { + Mask uint32 + Flags uint32 +} + +type CANDeviceStats struct { + Bus_error uint32 + Error_warning uint32 + Error_passive uint32 + Bus_off uint32 + Arbitration_lost uint32 + Restarts uint32 +} + +const ( + CAN_STATE_ERROR_ACTIVE = 0x0 + CAN_STATE_ERROR_WARNING = 0x1 + CAN_STATE_ERROR_PASSIVE = 0x2 + CAN_STATE_BUS_OFF = 0x3 + CAN_STATE_STOPPED = 0x4 + CAN_STATE_SLEEPING = 0x5 + CAN_STATE_MAX = 0x6 +) + +const ( + IFLA_CAN_UNSPEC = 0x0 + IFLA_CAN_BITTIMING = 0x1 + IFLA_CAN_BITTIMING_CONST = 0x2 + IFLA_CAN_CLOCK = 0x3 + IFLA_CAN_STATE = 0x4 + IFLA_CAN_CTRLMODE = 0x5 + IFLA_CAN_RESTART_MS = 0x6 + IFLA_CAN_RESTART = 0x7 + IFLA_CAN_BERR_COUNTER = 0x8 + IFLA_CAN_DATA_BITTIMING = 0x9 + IFLA_CAN_DATA_BITTIMING_CONST = 0xa + IFLA_CAN_TERMINATION = 0xb + IFLA_CAN_TERMINATION_CONST = 0xc + IFLA_CAN_BITRATE_CONST = 0xd + IFLA_CAN_DATA_BITRATE_CONST = 0xe + IFLA_CAN_BITRATE_MAX = 0xf +) + +type KCMAttach struct { + Fd int32 + Bpf_fd int32 +} + +type KCMUnattach struct { + Fd int32 +} + +type KCMClone struct { + Fd int32 +} + +const ( + NL80211_AC_BE = 0x2 + NL80211_AC_BK = 0x3 + NL80211_ACL_POLICY_ACCEPT_UNLESS_LISTED = 0x0 + NL80211_ACL_POLICY_DENY_UNLESS_LISTED = 0x1 + NL80211_AC_VI = 0x1 + NL80211_AC_VO = 0x0 + NL80211_AP_SETTINGS_EXTERNAL_AUTH_SUPPORT = 0x1 + NL80211_AP_SETTINGS_SA_QUERY_OFFLOAD_SUPPORT = 0x2 + NL80211_AP_SME_SA_QUERY_OFFLOAD = 0x1 + NL80211_ATTR_4ADDR = 0x53 + NL80211_ATTR_ACK = 0x5c + NL80211_ATTR_ACK_SIGNAL = 0x107 + NL80211_ATTR_ACL_POLICY = 0xa5 + NL80211_ATTR_ADMITTED_TIME = 0xd4 + NL80211_ATTR_AIRTIME_WEIGHT = 0x112 + NL80211_ATTR_AKM_SUITES = 0x4c + NL80211_ATTR_AP_ISOLATE = 0x60 + NL80211_ATTR_AP_SETTINGS_FLAGS = 0x135 + NL80211_ATTR_AUTH_DATA = 0x9c + NL80211_ATTR_AUTH_TYPE = 0x35 + NL80211_ATTR_BANDS = 0xef + NL80211_ATTR_BEACON_HEAD = 0xe + NL80211_ATTR_BEACON_INTERVAL = 0xc + NL80211_ATTR_BEACON_TAIL = 0xf + NL80211_ATTR_BG_SCAN_PERIOD = 0x98 + NL80211_ATTR_BSS_BASIC_RATES = 0x24 + NL80211_ATTR_BSS = 0x2f + NL80211_ATTR_BSS_CTS_PROT = 0x1c + NL80211_ATTR_BSS_HT_OPMODE = 0x6d + NL80211_ATTR_BSSID = 0xf5 + NL80211_ATTR_BSS_SELECT = 0xe3 + NL80211_ATTR_BSS_SHORT_PREAMBLE = 0x1d + NL80211_ATTR_BSS_SHORT_SLOT_TIME = 0x1e + NL80211_ATTR_CENTER_FREQ1 = 0xa0 + NL80211_ATTR_CENTER_FREQ1_OFFSET = 0x123 + NL80211_ATTR_CENTER_FREQ2 = 0xa1 + NL80211_ATTR_CHANNEL_WIDTH = 0x9f + NL80211_ATTR_CH_SWITCH_BLOCK_TX = 0xb8 + NL80211_ATTR_CH_SWITCH_COUNT = 0xb7 + NL80211_ATTR_CIPHER_SUITE_GROUP = 0x4a + NL80211_ATTR_CIPHER_SUITES = 0x39 + NL80211_ATTR_CIPHER_SUITES_PAIRWISE = 0x49 + NL80211_ATTR_CNTDWN_OFFS_BEACON = 0xba + NL80211_ATTR_CNTDWN_OFFS_PRESP = 0xbb + NL80211_ATTR_COALESCE_RULE = 0xb6 + NL80211_ATTR_COALESCE_RULE_CONDITION = 0x2 + NL80211_ATTR_COALESCE_RULE_DELAY = 0x1 + NL80211_ATTR_COALESCE_RULE_MAX = 0x3 + NL80211_ATTR_COALESCE_RULE_PKT_PATTERN = 0x3 + NL80211_ATTR_COLOR_CHANGE_COLOR = 0x130 + NL80211_ATTR_COLOR_CHANGE_COUNT = 0x12f + NL80211_ATTR_COLOR_CHANGE_ELEMS = 0x131 + NL80211_ATTR_CONN_FAILED_REASON = 0x9b + NL80211_ATTR_CONTROL_PORT = 0x44 + NL80211_ATTR_CONTROL_PORT_ETHERTYPE = 0x66 + NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT = 0x67 + NL80211_ATTR_CONTROL_PORT_NO_PREAUTH = 0x11e + NL80211_ATTR_CONTROL_PORT_OVER_NL80211 = 0x108 + NL80211_ATTR_COOKIE = 0x58 + NL80211_ATTR_CQM_BEACON_LOSS_EVENT = 0x8 + NL80211_ATTR_CQM = 0x5e + NL80211_ATTR_CQM_MAX = 0x9 + NL80211_ATTR_CQM_PKT_LOSS_EVENT = 0x4 + NL80211_ATTR_CQM_RSSI_HYST = 0x2 + NL80211_ATTR_CQM_RSSI_LEVEL = 0x9 + NL80211_ATTR_CQM_RSSI_THOLD = 0x1 + NL80211_ATTR_CQM_RSSI_THRESHOLD_EVENT = 0x3 + NL80211_ATTR_CQM_TXE_INTVL = 0x7 + NL80211_ATTR_CQM_TXE_PKTS = 0x6 + NL80211_ATTR_CQM_TXE_RATE = 0x5 + NL80211_ATTR_CRIT_PROT_ID = 0xb3 + NL80211_ATTR_CSA_C_OFF_BEACON = 0xba + NL80211_ATTR_CSA_C_OFF_PRESP = 0xbb + NL80211_ATTR_CSA_C_OFFSETS_TX = 0xcd + NL80211_ATTR_CSA_IES = 0xb9 + NL80211_ATTR_DEVICE_AP_SME = 0x8d + NL80211_ATTR_DFS_CAC_TIME = 0x7 + NL80211_ATTR_DFS_REGION = 0x92 + NL80211_ATTR_DISABLE_EHT = 0x137 + NL80211_ATTR_DISABLE_HE = 0x12d + NL80211_ATTR_DISABLE_HT = 0x93 + NL80211_ATTR_DISABLE_VHT = 0xaf + NL80211_ATTR_DISCONNECTED_BY_AP = 0x47 + NL80211_ATTR_DONT_WAIT_FOR_ACK = 0x8e + NL80211_ATTR_DTIM_PERIOD = 0xd + NL80211_ATTR_DURATION = 0x57 + NL80211_ATTR_EHT_CAPABILITY = 0x136 + NL80211_ATTR_EML_CAPABILITY = 0x13d + NL80211_ATTR_EXT_CAPA = 0xa9 + NL80211_ATTR_EXT_CAPA_MASK = 0xaa + NL80211_ATTR_EXTERNAL_AUTH_ACTION = 0x104 + NL80211_ATTR_EXTERNAL_AUTH_SUPPORT = 0x105 + NL80211_ATTR_EXT_FEATURES = 0xd9 + NL80211_ATTR_FEATURE_FLAGS = 0x8f + NL80211_ATTR_FILS_CACHE_ID = 0xfd + NL80211_ATTR_FILS_DISCOVERY = 0x126 + NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM = 0xfb + NL80211_ATTR_FILS_ERP_REALM = 0xfa + NL80211_ATTR_FILS_ERP_RRK = 0xfc + NL80211_ATTR_FILS_ERP_USERNAME = 0xf9 + NL80211_ATTR_FILS_KEK = 0xf2 + NL80211_ATTR_FILS_NONCES = 0xf3 + NL80211_ATTR_FRAME = 0x33 + NL80211_ATTR_FRAME_MATCH = 0x5b + NL80211_ATTR_FRAME_TYPE = 0x65 + NL80211_ATTR_FREQ_AFTER = 0x3b + NL80211_ATTR_FREQ_BEFORE = 0x3a + NL80211_ATTR_FREQ_FIXED = 0x3c + NL80211_ATTR_FREQ_RANGE_END = 0x3 + NL80211_ATTR_FREQ_RANGE_MAX_BW = 0x4 + NL80211_ATTR_FREQ_RANGE_START = 0x2 + NL80211_ATTR_FTM_RESPONDER = 0x10e + NL80211_ATTR_FTM_RESPONDER_STATS = 0x10f + NL80211_ATTR_GENERATION = 0x2e + NL80211_ATTR_HANDLE_DFS = 0xbf + NL80211_ATTR_HE_6GHZ_CAPABILITY = 0x125 + NL80211_ATTR_HE_BSS_COLOR = 0x11b + NL80211_ATTR_HE_CAPABILITY = 0x10d + NL80211_ATTR_HE_OBSS_PD = 0x117 + NL80211_ATTR_HIDDEN_SSID = 0x7e + NL80211_ATTR_HT_CAPABILITY = 0x1f + NL80211_ATTR_HT_CAPABILITY_MASK = 0x94 + NL80211_ATTR_IE_ASSOC_RESP = 0x80 + NL80211_ATTR_IE = 0x2a + NL80211_ATTR_IE_PROBE_RESP = 0x7f + NL80211_ATTR_IE_RIC = 0xb2 + NL80211_ATTR_IFACE_SOCKET_OWNER = 0xcc + NL80211_ATTR_IFINDEX = 0x3 + NL80211_ATTR_IFNAME = 0x4 + NL80211_ATTR_IFTYPE_AKM_SUITES = 0x11c + NL80211_ATTR_IFTYPE = 0x5 + NL80211_ATTR_IFTYPE_EXT_CAPA = 0xe6 + NL80211_ATTR_INACTIVITY_TIMEOUT = 0x96 + NL80211_ATTR_INTERFACE_COMBINATIONS = 0x78 + NL80211_ATTR_KEY_CIPHER = 0x9 + NL80211_ATTR_KEY = 0x50 + NL80211_ATTR_KEY_DATA = 0x7 + NL80211_ATTR_KEY_DEFAULT = 0xb + NL80211_ATTR_KEY_DEFAULT_MGMT = 0x28 + NL80211_ATTR_KEY_DEFAULT_TYPES = 0x6e + NL80211_ATTR_KEY_IDX = 0x8 + NL80211_ATTR_KEYS = 0x51 + NL80211_ATTR_KEY_SEQ = 0xa + NL80211_ATTR_KEY_TYPE = 0x37 + NL80211_ATTR_LOCAL_MESH_POWER_MODE = 0xa4 + NL80211_ATTR_LOCAL_STATE_CHANGE = 0x5f + NL80211_ATTR_MAC_ACL_MAX = 0xa7 + NL80211_ATTR_MAC_ADDRS = 0xa6 + NL80211_ATTR_MAC = 0x6 + NL80211_ATTR_MAC_HINT = 0xc8 + NL80211_ATTR_MAC_MASK = 0xd7 + NL80211_ATTR_MAX_AP_ASSOC_STA = 0xca + NL80211_ATTR_MAX = 0x14d + NL80211_ATTR_MAX_CRIT_PROT_DURATION = 0xb4 + NL80211_ATTR_MAX_CSA_COUNTERS = 0xce + NL80211_ATTR_MAX_MATCH_SETS = 0x85 + NL80211_ATTR_MAX_NUM_AKM_SUITES = 0x13c + NL80211_ATTR_MAX_NUM_PMKIDS = 0x56 + NL80211_ATTR_MAX_NUM_SCAN_SSIDS = 0x2b + NL80211_ATTR_MAX_NUM_SCHED_SCAN_PLANS = 0xde + NL80211_ATTR_MAX_NUM_SCHED_SCAN_SSIDS = 0x7b + NL80211_ATTR_MAX_REMAIN_ON_CHANNEL_DURATION = 0x6f + NL80211_ATTR_MAX_SCAN_IE_LEN = 0x38 + NL80211_ATTR_MAX_SCAN_PLAN_INTERVAL = 0xdf + NL80211_ATTR_MAX_SCAN_PLAN_ITERATIONS = 0xe0 + NL80211_ATTR_MAX_SCHED_SCAN_IE_LEN = 0x7c + NL80211_ATTR_MBSSID_CONFIG = 0x132 + NL80211_ATTR_MBSSID_ELEMS = 0x133 + NL80211_ATTR_MCAST_RATE = 0x6b + NL80211_ATTR_MDID = 0xb1 + NL80211_ATTR_MEASUREMENT_DURATION = 0xeb + NL80211_ATTR_MEASUREMENT_DURATION_MANDATORY = 0xec + NL80211_ATTR_MESH_CONFIG = 0x23 + NL80211_ATTR_MESH_ID = 0x18 + NL80211_ATTR_MESH_PEER_AID = 0xed + NL80211_ATTR_MESH_SETUP = 0x70 + NL80211_ATTR_MGMT_SUBTYPE = 0x29 + NL80211_ATTR_MLD_ADDR = 0x13a + NL80211_ATTR_MLD_CAPA_AND_OPS = 0x13e + NL80211_ATTR_MLO_LINK_ID = 0x139 + NL80211_ATTR_MLO_LINKS = 0x138 + NL80211_ATTR_MLO_SUPPORT = 0x13b + NL80211_ATTR_MNTR_FLAGS = 0x17 + NL80211_ATTR_MPATH_INFO = 0x1b + NL80211_ATTR_MPATH_NEXT_HOP = 0x1a + NL80211_ATTR_MULTICAST_TO_UNICAST_ENABLED = 0xf4 + NL80211_ATTR_MU_MIMO_FOLLOW_MAC_ADDR = 0xe8 + NL80211_ATTR_MU_MIMO_GROUP_DATA = 0xe7 + NL80211_ATTR_NAN_FUNC = 0xf0 + NL80211_ATTR_NAN_MASTER_PREF = 0xee + NL80211_ATTR_NAN_MATCH = 0xf1 + NL80211_ATTR_NETNS_FD = 0xdb + NL80211_ATTR_NOACK_MAP = 0x95 + NL80211_ATTR_NSS = 0x106 + NL80211_ATTR_OBSS_COLOR_BITMAP = 0x12e + NL80211_ATTR_OFFCHANNEL_TX_OK = 0x6c + NL80211_ATTR_OPER_CLASS = 0xd6 + NL80211_ATTR_OPMODE_NOTIF = 0xc2 + NL80211_ATTR_P2P_CTWINDOW = 0xa2 + NL80211_ATTR_P2P_OPPPS = 0xa3 + NL80211_ATTR_PAD = 0xe5 + NL80211_ATTR_PBSS = 0xe2 + NL80211_ATTR_PEER_AID = 0xb5 + NL80211_ATTR_PEER_MEASUREMENTS = 0x111 + NL80211_ATTR_PID = 0x52 + NL80211_ATTR_PMK = 0xfe + NL80211_ATTR_PMKID = 0x55 + NL80211_ATTR_PMK_LIFETIME = 0x11f + NL80211_ATTR_PMKR0_NAME = 0x102 + NL80211_ATTR_PMK_REAUTH_THRESHOLD = 0x120 + NL80211_ATTR_PMKSA_CANDIDATE = 0x86 + NL80211_ATTR_PORT_AUTHORIZED = 0x103 + NL80211_ATTR_POWER_RULE_MAX_ANT_GAIN = 0x5 + NL80211_ATTR_POWER_RULE_MAX_EIRP = 0x6 + NL80211_ATTR_PREV_BSSID = 0x4f + NL80211_ATTR_PRIVACY = 0x46 + NL80211_ATTR_PROBE_RESP = 0x91 + NL80211_ATTR_PROBE_RESP_OFFLOAD = 0x90 + NL80211_ATTR_PROTOCOL_FEATURES = 0xad + NL80211_ATTR_PS_STATE = 0x5d + NL80211_ATTR_QOS_MAP = 0xc7 + NL80211_ATTR_RADAR_BACKGROUND = 0x134 + NL80211_ATTR_RADAR_EVENT = 0xa8 + NL80211_ATTR_REASON_CODE = 0x36 + NL80211_ATTR_RECEIVE_MULTICAST = 0x121 + NL80211_ATTR_RECONNECT_REQUESTED = 0x12b + NL80211_ATTR_REG_ALPHA2 = 0x21 + NL80211_ATTR_REG_INDOOR = 0xdd + NL80211_ATTR_REG_INITIATOR = 0x30 + NL80211_ATTR_REG_RULE_FLAGS = 0x1 + NL80211_ATTR_REG_RULES = 0x22 + NL80211_ATTR_REG_TYPE = 0x31 + NL80211_ATTR_REKEY_DATA = 0x7a + NL80211_ATTR_REQ_IE = 0x4d + NL80211_ATTR_RESP_IE = 0x4e + NL80211_ATTR_ROAM_SUPPORT = 0x83 + NL80211_ATTR_RX_FRAME_TYPES = 0x64 + NL80211_ATTR_RX_HW_TIMESTAMP = 0x140 + NL80211_ATTR_RXMGMT_FLAGS = 0xbc + NL80211_ATTR_RX_SIGNAL_DBM = 0x97 + NL80211_ATTR_S1G_CAPABILITY = 0x128 + NL80211_ATTR_S1G_CAPABILITY_MASK = 0x129 + NL80211_ATTR_SAE_DATA = 0x9c + NL80211_ATTR_SAE_PASSWORD = 0x115 + NL80211_ATTR_SAE_PWE = 0x12a + NL80211_ATTR_SAR_SPEC = 0x12c + NL80211_ATTR_SCAN_FLAGS = 0x9e + NL80211_ATTR_SCAN_FREQ_KHZ = 0x124 + NL80211_ATTR_SCAN_FREQUENCIES = 0x2c + NL80211_ATTR_SCAN_GENERATION = 0x2e + NL80211_ATTR_SCAN_SSIDS = 0x2d + NL80211_ATTR_SCAN_START_TIME_TSF_BSSID = 0xea + NL80211_ATTR_SCAN_START_TIME_TSF = 0xe9 + NL80211_ATTR_SCAN_SUPP_RATES = 0x7d + NL80211_ATTR_SCHED_SCAN_DELAY = 0xdc + NL80211_ATTR_SCHED_SCAN_INTERVAL = 0x77 + NL80211_ATTR_SCHED_SCAN_MATCH = 0x84 + NL80211_ATTR_SCHED_SCAN_MATCH_SSID = 0x1 + NL80211_ATTR_SCHED_SCAN_MAX_REQS = 0x100 + NL80211_ATTR_SCHED_SCAN_MULTI = 0xff + NL80211_ATTR_SCHED_SCAN_PLANS = 0xe1 + NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI = 0xf6 + NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST = 0xf7 + NL80211_ATTR_SMPS_MODE = 0xd5 + NL80211_ATTR_SOCKET_OWNER = 0xcc + NL80211_ATTR_SOFTWARE_IFTYPES = 0x79 + NL80211_ATTR_SPLIT_WIPHY_DUMP = 0xae + NL80211_ATTR_SSID = 0x34 + NL80211_ATTR_STA_AID = 0x10 + NL80211_ATTR_STA_CAPABILITY = 0xab + NL80211_ATTR_STA_EXT_CAPABILITY = 0xac + NL80211_ATTR_STA_FLAGS2 = 0x43 + NL80211_ATTR_STA_FLAGS = 0x11 + NL80211_ATTR_STA_INFO = 0x15 + NL80211_ATTR_STA_LISTEN_INTERVAL = 0x12 + NL80211_ATTR_STA_PLINK_ACTION = 0x19 + NL80211_ATTR_STA_PLINK_STATE = 0x74 + NL80211_ATTR_STA_SUPPORTED_CHANNELS = 0xbd + NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES = 0xbe + NL80211_ATTR_STA_SUPPORTED_RATES = 0x13 + NL80211_ATTR_STA_SUPPORT_P2P_PS = 0xe4 + NL80211_ATTR_STATUS_CODE = 0x48 + NL80211_ATTR_STA_TX_POWER = 0x114 + NL80211_ATTR_STA_TX_POWER_SETTING = 0x113 + NL80211_ATTR_STA_VLAN = 0x14 + NL80211_ATTR_STA_WME = 0x81 + NL80211_ATTR_SUPPORT_10_MHZ = 0xc1 + NL80211_ATTR_SUPPORT_5_MHZ = 0xc0 + NL80211_ATTR_SUPPORT_AP_UAPSD = 0x82 + NL80211_ATTR_SUPPORTED_COMMANDS = 0x32 + NL80211_ATTR_SUPPORTED_IFTYPES = 0x20 + NL80211_ATTR_SUPPORT_IBSS_RSN = 0x68 + NL80211_ATTR_SUPPORT_MESH_AUTH = 0x73 + NL80211_ATTR_SURVEY_INFO = 0x54 + NL80211_ATTR_SURVEY_RADIO_STATS = 0xda + NL80211_ATTR_TD_BITMAP = 0x141 + NL80211_ATTR_TDLS_ACTION = 0x88 + NL80211_ATTR_TDLS_DIALOG_TOKEN = 0x89 + NL80211_ATTR_TDLS_EXTERNAL_SETUP = 0x8c + NL80211_ATTR_TDLS_INITIATOR = 0xcf + NL80211_ATTR_TDLS_OPERATION = 0x8a + NL80211_ATTR_TDLS_PEER_CAPABILITY = 0xcb + NL80211_ATTR_TDLS_SUPPORT = 0x8b + NL80211_ATTR_TESTDATA = 0x45 + NL80211_ATTR_TID_CONFIG = 0x11d + NL80211_ATTR_TIMED_OUT = 0x41 + NL80211_ATTR_TIMEOUT = 0x110 + NL80211_ATTR_TIMEOUT_REASON = 0xf8 + NL80211_ATTR_TSID = 0xd2 + NL80211_ATTR_TWT_RESPONDER = 0x116 + NL80211_ATTR_TX_FRAME_TYPES = 0x63 + NL80211_ATTR_TX_HW_TIMESTAMP = 0x13f + NL80211_ATTR_TX_NO_CCK_RATE = 0x87 + NL80211_ATTR_TXQ_LIMIT = 0x10a + NL80211_ATTR_TXQ_MEMORY_LIMIT = 0x10b + NL80211_ATTR_TXQ_QUANTUM = 0x10c + NL80211_ATTR_TXQ_STATS = 0x109 + NL80211_ATTR_TX_RATES = 0x5a + NL80211_ATTR_UNSOL_BCAST_PROBE_RESP = 0x127 + NL80211_ATTR_UNSPEC = 0x0 + NL80211_ATTR_USE_MFP = 0x42 + NL80211_ATTR_USER_PRIO = 0xd3 + NL80211_ATTR_USER_REG_HINT_TYPE = 0x9a + NL80211_ATTR_USE_RRM = 0xd0 + NL80211_ATTR_VENDOR_DATA = 0xc5 + NL80211_ATTR_VENDOR_EVENTS = 0xc6 + NL80211_ATTR_VENDOR_ID = 0xc3 + NL80211_ATTR_VENDOR_SUBCMD = 0xc4 + NL80211_ATTR_VHT_CAPABILITY = 0x9d + NL80211_ATTR_VHT_CAPABILITY_MASK = 0xb0 + NL80211_ATTR_VLAN_ID = 0x11a + NL80211_ATTR_WANT_1X_4WAY_HS = 0x101 + NL80211_ATTR_WDEV = 0x99 + NL80211_ATTR_WIPHY_ANTENNA_AVAIL_RX = 0x72 + NL80211_ATTR_WIPHY_ANTENNA_AVAIL_TX = 0x71 + NL80211_ATTR_WIPHY_ANTENNA_RX = 0x6a + NL80211_ATTR_WIPHY_ANTENNA_TX = 0x69 + NL80211_ATTR_WIPHY_BANDS = 0x16 + NL80211_ATTR_WIPHY_CHANNEL_TYPE = 0x27 + NL80211_ATTR_WIPHY = 0x1 + NL80211_ATTR_WIPHY_COVERAGE_CLASS = 0x59 + NL80211_ATTR_WIPHY_DYN_ACK = 0xd1 + NL80211_ATTR_WIPHY_EDMG_BW_CONFIG = 0x119 + NL80211_ATTR_WIPHY_EDMG_CHANNELS = 0x118 + NL80211_ATTR_WIPHY_FRAG_THRESHOLD = 0x3f + NL80211_ATTR_WIPHY_FREQ = 0x26 + NL80211_ATTR_WIPHY_FREQ_HINT = 0xc9 + NL80211_ATTR_WIPHY_FREQ_OFFSET = 0x122 + NL80211_ATTR_WIPHY_NAME = 0x2 + NL80211_ATTR_WIPHY_RETRY_LONG = 0x3e + NL80211_ATTR_WIPHY_RETRY_SHORT = 0x3d + NL80211_ATTR_WIPHY_RTS_THRESHOLD = 0x40 + NL80211_ATTR_WIPHY_SELF_MANAGED_REG = 0xd8 + NL80211_ATTR_WIPHY_TX_POWER_LEVEL = 0x62 + NL80211_ATTR_WIPHY_TX_POWER_SETTING = 0x61 + NL80211_ATTR_WIPHY_TXQ_PARAMS = 0x25 + NL80211_ATTR_WOWLAN_TRIGGERS = 0x75 + NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED = 0x76 + NL80211_ATTR_WPA_VERSIONS = 0x4b + NL80211_AUTHTYPE_AUTOMATIC = 0x8 + NL80211_AUTHTYPE_FILS_PK = 0x7 + NL80211_AUTHTYPE_FILS_SK = 0x5 + NL80211_AUTHTYPE_FILS_SK_PFS = 0x6 + NL80211_AUTHTYPE_FT = 0x2 + NL80211_AUTHTYPE_MAX = 0x7 + NL80211_AUTHTYPE_NETWORK_EAP = 0x3 + NL80211_AUTHTYPE_OPEN_SYSTEM = 0x0 + NL80211_AUTHTYPE_SAE = 0x4 + NL80211_AUTHTYPE_SHARED_KEY = 0x1 + NL80211_BAND_2GHZ = 0x0 + NL80211_BAND_5GHZ = 0x1 + NL80211_BAND_60GHZ = 0x2 + NL80211_BAND_6GHZ = 0x3 + NL80211_BAND_ATTR_EDMG_BW_CONFIG = 0xb + NL80211_BAND_ATTR_EDMG_CHANNELS = 0xa + NL80211_BAND_ATTR_FREQS = 0x1 + NL80211_BAND_ATTR_HT_AMPDU_DENSITY = 0x6 + NL80211_BAND_ATTR_HT_AMPDU_FACTOR = 0x5 + NL80211_BAND_ATTR_HT_CAPA = 0x4 + NL80211_BAND_ATTR_HT_MCS_SET = 0x3 + NL80211_BAND_ATTR_IFTYPE_DATA = 0x9 + NL80211_BAND_ATTR_MAX = 0xd + NL80211_BAND_ATTR_RATES = 0x2 + NL80211_BAND_ATTR_VHT_CAPA = 0x8 + NL80211_BAND_ATTR_VHT_MCS_SET = 0x7 + NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MAC = 0x8 + NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MCS_SET = 0xa + NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY = 0x9 + NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE = 0xb + NL80211_BAND_IFTYPE_ATTR_HE_6GHZ_CAPA = 0x6 + NL80211_BAND_IFTYPE_ATTR_HE_CAP_MAC = 0x2 + NL80211_BAND_IFTYPE_ATTR_HE_CAP_MCS_SET = 0x4 + NL80211_BAND_IFTYPE_ATTR_HE_CAP_PHY = 0x3 + NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE = 0x5 + NL80211_BAND_IFTYPE_ATTR_IFTYPES = 0x1 + NL80211_BAND_IFTYPE_ATTR_MAX = 0xb + NL80211_BAND_IFTYPE_ATTR_VENDOR_ELEMS = 0x7 + NL80211_BAND_LC = 0x5 + NL80211_BAND_S1GHZ = 0x4 + NL80211_BITRATE_ATTR_2GHZ_SHORTPREAMBLE = 0x2 + NL80211_BITRATE_ATTR_MAX = 0x2 + NL80211_BITRATE_ATTR_RATE = 0x1 + NL80211_BSS_BEACON_IES = 0xb + NL80211_BSS_BEACON_INTERVAL = 0x4 + NL80211_BSS_BEACON_TSF = 0xd + NL80211_BSS_BSSID = 0x1 + NL80211_BSS_CAPABILITY = 0x5 + NL80211_BSS_CHAIN_SIGNAL = 0x13 + NL80211_BSS_CHAN_WIDTH_10 = 0x1 + NL80211_BSS_CHAN_WIDTH_1 = 0x3 + NL80211_BSS_CHAN_WIDTH_20 = 0x0 + NL80211_BSS_CHAN_WIDTH_2 = 0x4 + NL80211_BSS_CHAN_WIDTH_5 = 0x2 + NL80211_BSS_CHAN_WIDTH = 0xc + NL80211_BSS_FREQUENCY = 0x2 + NL80211_BSS_FREQUENCY_OFFSET = 0x14 + NL80211_BSS_INFORMATION_ELEMENTS = 0x6 + NL80211_BSS_LAST_SEEN_BOOTTIME = 0xf + NL80211_BSS_MAX = 0x18 + NL80211_BSS_MLD_ADDR = 0x16 + NL80211_BSS_MLO_LINK_ID = 0x15 + NL80211_BSS_PAD = 0x10 + NL80211_BSS_PARENT_BSSID = 0x12 + NL80211_BSS_PARENT_TSF = 0x11 + NL80211_BSS_PRESP_DATA = 0xe + NL80211_BSS_SEEN_MS_AGO = 0xa + NL80211_BSS_SELECT_ATTR_BAND_PREF = 0x2 + NL80211_BSS_SELECT_ATTR_MAX = 0x3 + NL80211_BSS_SELECT_ATTR_RSSI_ADJUST = 0x3 + NL80211_BSS_SELECT_ATTR_RSSI = 0x1 + NL80211_BSS_SIGNAL_MBM = 0x7 + NL80211_BSS_SIGNAL_UNSPEC = 0x8 + NL80211_BSS_STATUS_ASSOCIATED = 0x1 + NL80211_BSS_STATUS_AUTHENTICATED = 0x0 + NL80211_BSS_STATUS = 0x9 + NL80211_BSS_STATUS_IBSS_JOINED = 0x2 + NL80211_BSS_TSF = 0x3 + NL80211_CHAN_HT20 = 0x1 + NL80211_CHAN_HT40MINUS = 0x2 + NL80211_CHAN_HT40PLUS = 0x3 + NL80211_CHAN_NO_HT = 0x0 + NL80211_CHAN_WIDTH_10 = 0x7 + NL80211_CHAN_WIDTH_160 = 0x5 + NL80211_CHAN_WIDTH_16 = 0xc + NL80211_CHAN_WIDTH_1 = 0x8 + NL80211_CHAN_WIDTH_20 = 0x1 + NL80211_CHAN_WIDTH_20_NOHT = 0x0 + NL80211_CHAN_WIDTH_2 = 0x9 + NL80211_CHAN_WIDTH_320 = 0xd + NL80211_CHAN_WIDTH_40 = 0x2 + NL80211_CHAN_WIDTH_4 = 0xa + NL80211_CHAN_WIDTH_5 = 0x6 + NL80211_CHAN_WIDTH_80 = 0x3 + NL80211_CHAN_WIDTH_80P80 = 0x4 + NL80211_CHAN_WIDTH_8 = 0xb + NL80211_CMD_ABORT_SCAN = 0x72 + NL80211_CMD_ACTION = 0x3b + NL80211_CMD_ACTION_TX_STATUS = 0x3c + NL80211_CMD_ADD_LINK = 0x94 + NL80211_CMD_ADD_LINK_STA = 0x96 + NL80211_CMD_ADD_NAN_FUNCTION = 0x75 + NL80211_CMD_ADD_TX_TS = 0x69 + NL80211_CMD_ASSOC_COMEBACK = 0x93 + NL80211_CMD_ASSOCIATE = 0x26 + NL80211_CMD_AUTHENTICATE = 0x25 + NL80211_CMD_CANCEL_REMAIN_ON_CHANNEL = 0x38 + NL80211_CMD_CHANGE_NAN_CONFIG = 0x77 + NL80211_CMD_CHANNEL_SWITCH = 0x66 + NL80211_CMD_CH_SWITCH_NOTIFY = 0x58 + NL80211_CMD_CH_SWITCH_STARTED_NOTIFY = 0x6e + NL80211_CMD_COLOR_CHANGE_ABORTED = 0x90 + NL80211_CMD_COLOR_CHANGE_COMPLETED = 0x91 + NL80211_CMD_COLOR_CHANGE_REQUEST = 0x8e + NL80211_CMD_COLOR_CHANGE_STARTED = 0x8f + NL80211_CMD_CONNECT = 0x2e + NL80211_CMD_CONN_FAILED = 0x5b + NL80211_CMD_CONTROL_PORT_FRAME = 0x81 + NL80211_CMD_CONTROL_PORT_FRAME_TX_STATUS = 0x8b + NL80211_CMD_CRIT_PROTOCOL_START = 0x62 + NL80211_CMD_CRIT_PROTOCOL_STOP = 0x63 + NL80211_CMD_DEAUTHENTICATE = 0x27 + NL80211_CMD_DEL_BEACON = 0x10 + NL80211_CMD_DEL_INTERFACE = 0x8 + NL80211_CMD_DEL_KEY = 0xc + NL80211_CMD_DEL_MPATH = 0x18 + NL80211_CMD_DEL_NAN_FUNCTION = 0x76 + NL80211_CMD_DEL_PMK = 0x7c + NL80211_CMD_DEL_PMKSA = 0x35 + NL80211_CMD_DEL_STATION = 0x14 + NL80211_CMD_DEL_TX_TS = 0x6a + NL80211_CMD_DEL_WIPHY = 0x4 + NL80211_CMD_DISASSOCIATE = 0x28 + NL80211_CMD_DISCONNECT = 0x30 + NL80211_CMD_EXTERNAL_AUTH = 0x7f + NL80211_CMD_FLUSH_PMKSA = 0x36 + NL80211_CMD_FRAME = 0x3b + NL80211_CMD_FRAME_TX_STATUS = 0x3c + NL80211_CMD_FRAME_WAIT_CANCEL = 0x43 + NL80211_CMD_FT_EVENT = 0x61 + NL80211_CMD_GET_BEACON = 0xd + NL80211_CMD_GET_COALESCE = 0x64 + NL80211_CMD_GET_FTM_RESPONDER_STATS = 0x82 + NL80211_CMD_GET_INTERFACE = 0x5 + NL80211_CMD_GET_KEY = 0x9 + NL80211_CMD_GET_MESH_CONFIG = 0x1c + NL80211_CMD_GET_MESH_PARAMS = 0x1c + NL80211_CMD_GET_MPATH = 0x15 + NL80211_CMD_GET_MPP = 0x6b + NL80211_CMD_GET_POWER_SAVE = 0x3e + NL80211_CMD_GET_PROTOCOL_FEATURES = 0x5f + NL80211_CMD_GET_REG = 0x1f + NL80211_CMD_GET_SCAN = 0x20 + NL80211_CMD_GET_STATION = 0x11 + NL80211_CMD_GET_SURVEY = 0x32 + NL80211_CMD_GET_WIPHY = 0x1 + NL80211_CMD_GET_WOWLAN = 0x49 + NL80211_CMD_JOIN_IBSS = 0x2b + NL80211_CMD_JOIN_MESH = 0x44 + NL80211_CMD_JOIN_OCB = 0x6c + NL80211_CMD_LEAVE_IBSS = 0x2c + NL80211_CMD_LEAVE_MESH = 0x45 + NL80211_CMD_LEAVE_OCB = 0x6d + NL80211_CMD_MAX = 0x9b + NL80211_CMD_MICHAEL_MIC_FAILURE = 0x29 + NL80211_CMD_MODIFY_LINK_STA = 0x97 + NL80211_CMD_NAN_MATCH = 0x78 + NL80211_CMD_NEW_BEACON = 0xf + NL80211_CMD_NEW_INTERFACE = 0x7 + NL80211_CMD_NEW_KEY = 0xb + NL80211_CMD_NEW_MPATH = 0x17 + NL80211_CMD_NEW_PEER_CANDIDATE = 0x48 + NL80211_CMD_NEW_SCAN_RESULTS = 0x22 + NL80211_CMD_NEW_STATION = 0x13 + NL80211_CMD_NEW_SURVEY_RESULTS = 0x33 + NL80211_CMD_NEW_WIPHY = 0x3 + NL80211_CMD_NOTIFY_CQM = 0x40 + NL80211_CMD_NOTIFY_RADAR = 0x86 + NL80211_CMD_OBSS_COLOR_COLLISION = 0x8d + NL80211_CMD_PEER_MEASUREMENT_COMPLETE = 0x85 + NL80211_CMD_PEER_MEASUREMENT_RESULT = 0x84 + NL80211_CMD_PEER_MEASUREMENT_START = 0x83 + NL80211_CMD_PMKSA_CANDIDATE = 0x50 + NL80211_CMD_PORT_AUTHORIZED = 0x7d + NL80211_CMD_PROBE_CLIENT = 0x54 + NL80211_CMD_PROBE_MESH_LINK = 0x88 + NL80211_CMD_RADAR_DETECT = 0x5e + NL80211_CMD_REG_BEACON_HINT = 0x2a + NL80211_CMD_REG_CHANGE = 0x24 + NL80211_CMD_REGISTER_ACTION = 0x3a + NL80211_CMD_REGISTER_BEACONS = 0x55 + NL80211_CMD_REGISTER_FRAME = 0x3a + NL80211_CMD_RELOAD_REGDB = 0x7e + NL80211_CMD_REMAIN_ON_CHANNEL = 0x37 + NL80211_CMD_REMOVE_LINK = 0x95 + NL80211_CMD_REMOVE_LINK_STA = 0x98 + NL80211_CMD_REQ_SET_REG = 0x1b + NL80211_CMD_ROAM = 0x2f + NL80211_CMD_SCAN_ABORTED = 0x23 + NL80211_CMD_SCHED_SCAN_RESULTS = 0x4d + NL80211_CMD_SCHED_SCAN_STOPPED = 0x4e + NL80211_CMD_SET_BEACON = 0xe + NL80211_CMD_SET_BSS = 0x19 + NL80211_CMD_SET_CHANNEL = 0x41 + NL80211_CMD_SET_COALESCE = 0x65 + NL80211_CMD_SET_CQM = 0x3f + NL80211_CMD_SET_FILS_AAD = 0x92 + NL80211_CMD_SET_INTERFACE = 0x6 + NL80211_CMD_SET_KEY = 0xa + NL80211_CMD_SET_MAC_ACL = 0x5d + NL80211_CMD_SET_MCAST_RATE = 0x5c + NL80211_CMD_SET_MESH_CONFIG = 0x1d + NL80211_CMD_SET_MESH_PARAMS = 0x1d + NL80211_CMD_SET_MGMT_EXTRA_IE = 0x1e + NL80211_CMD_SET_MPATH = 0x16 + NL80211_CMD_SET_MULTICAST_TO_UNICAST = 0x79 + NL80211_CMD_SET_NOACK_MAP = 0x57 + NL80211_CMD_SET_PMK = 0x7b + NL80211_CMD_SET_PMKSA = 0x34 + NL80211_CMD_SET_POWER_SAVE = 0x3d + NL80211_CMD_SET_QOS_MAP = 0x68 + NL80211_CMD_SET_REG = 0x1a + NL80211_CMD_SET_REKEY_OFFLOAD = 0x4f + NL80211_CMD_SET_SAR_SPECS = 0x8c + NL80211_CMD_SET_STATION = 0x12 + NL80211_CMD_SET_TID_CONFIG = 0x89 + NL80211_CMD_SET_TX_BITRATE_MASK = 0x39 + NL80211_CMD_SET_WDS_PEER = 0x42 + NL80211_CMD_SET_WIPHY = 0x2 + NL80211_CMD_SET_WIPHY_NETNS = 0x31 + NL80211_CMD_SET_WOWLAN = 0x4a + NL80211_CMD_STA_OPMODE_CHANGED = 0x80 + NL80211_CMD_START_AP = 0xf + NL80211_CMD_START_NAN = 0x73 + NL80211_CMD_START_P2P_DEVICE = 0x59 + NL80211_CMD_START_SCHED_SCAN = 0x4b + NL80211_CMD_STOP_AP = 0x10 + NL80211_CMD_STOP_NAN = 0x74 + NL80211_CMD_STOP_P2P_DEVICE = 0x5a + NL80211_CMD_STOP_SCHED_SCAN = 0x4c + NL80211_CMD_TDLS_CANCEL_CHANNEL_SWITCH = 0x70 + NL80211_CMD_TDLS_CHANNEL_SWITCH = 0x6f + NL80211_CMD_TDLS_MGMT = 0x52 + NL80211_CMD_TDLS_OPER = 0x51 + NL80211_CMD_TESTMODE = 0x2d + NL80211_CMD_TRIGGER_SCAN = 0x21 + NL80211_CMD_UNEXPECTED_4ADDR_FRAME = 0x56 + NL80211_CMD_UNEXPECTED_FRAME = 0x53 + NL80211_CMD_UNPROT_BEACON = 0x8a + NL80211_CMD_UNPROT_DEAUTHENTICATE = 0x46 + NL80211_CMD_UNPROT_DISASSOCIATE = 0x47 + NL80211_CMD_UNSPEC = 0x0 + NL80211_CMD_UPDATE_CONNECT_PARAMS = 0x7a + NL80211_CMD_UPDATE_FT_IES = 0x60 + NL80211_CMD_UPDATE_OWE_INFO = 0x87 + NL80211_CMD_VENDOR = 0x67 + NL80211_CMD_WIPHY_REG_CHANGE = 0x71 + NL80211_COALESCE_CONDITION_MATCH = 0x0 + NL80211_COALESCE_CONDITION_NO_MATCH = 0x1 + NL80211_CONN_FAIL_BLOCKED_CLIENT = 0x1 + NL80211_CONN_FAIL_MAX_CLIENTS = 0x0 + NL80211_CQM_RSSI_BEACON_LOSS_EVENT = 0x2 + NL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH = 0x1 + NL80211_CQM_RSSI_THRESHOLD_EVENT_LOW = 0x0 + NL80211_CQM_TXE_MAX_INTVL = 0x708 + NL80211_CRIT_PROTO_APIPA = 0x3 + NL80211_CRIT_PROTO_DHCP = 0x1 + NL80211_CRIT_PROTO_EAPOL = 0x2 + NL80211_CRIT_PROTO_MAX_DURATION = 0x1388 + NL80211_CRIT_PROTO_UNSPEC = 0x0 + NL80211_DFS_AVAILABLE = 0x2 + NL80211_DFS_ETSI = 0x2 + NL80211_DFS_FCC = 0x1 + NL80211_DFS_JP = 0x3 + NL80211_DFS_UNAVAILABLE = 0x1 + NL80211_DFS_UNSET = 0x0 + NL80211_DFS_USABLE = 0x0 + NL80211_EDMG_BW_CONFIG_MAX = 0xf + NL80211_EDMG_BW_CONFIG_MIN = 0x4 + NL80211_EDMG_CHANNELS_MAX = 0x3c + NL80211_EDMG_CHANNELS_MIN = 0x1 + NL80211_EHT_MAX_CAPABILITY_LEN = 0x33 + NL80211_EHT_MIN_CAPABILITY_LEN = 0xd + NL80211_EXTERNAL_AUTH_ABORT = 0x1 + NL80211_EXTERNAL_AUTH_START = 0x0 + NL80211_EXT_FEATURE_4WAY_HANDSHAKE_AP_PSK = 0x32 + NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_1X = 0x10 + NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_PSK = 0xf + NL80211_EXT_FEATURE_ACCEPT_BCAST_PROBE_RESP = 0x12 + NL80211_EXT_FEATURE_ACK_SIGNAL_SUPPORT = 0x1b + NL80211_EXT_FEATURE_AIRTIME_FAIRNESS = 0x21 + NL80211_EXT_FEATURE_AP_PMKSA_CACHING = 0x22 + NL80211_EXT_FEATURE_AQL = 0x28 + NL80211_EXT_FEATURE_BEACON_PROTECTION_CLIENT = 0x2e + NL80211_EXT_FEATURE_BEACON_PROTECTION = 0x29 + NL80211_EXT_FEATURE_BEACON_RATE_HE = 0x36 + NL80211_EXT_FEATURE_BEACON_RATE_HT = 0x7 + NL80211_EXT_FEATURE_BEACON_RATE_LEGACY = 0x6 + NL80211_EXT_FEATURE_BEACON_RATE_VHT = 0x8 + NL80211_EXT_FEATURE_BSS_COLOR = 0x3a + NL80211_EXT_FEATURE_BSS_PARENT_TSF = 0x4 + NL80211_EXT_FEATURE_CAN_REPLACE_PTK0 = 0x1f + NL80211_EXT_FEATURE_CONTROL_PORT_NO_PREAUTH = 0x2a + NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211 = 0x1a + NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211_TX_STATUS = 0x30 + NL80211_EXT_FEATURE_CQM_RSSI_LIST = 0xd + NL80211_EXT_FEATURE_DATA_ACK_SIGNAL_SUPPORT = 0x1b + NL80211_EXT_FEATURE_DEL_IBSS_STA = 0x2c + NL80211_EXT_FEATURE_DFS_OFFLOAD = 0x19 + NL80211_EXT_FEATURE_ENABLE_FTM_RESPONDER = 0x20 + NL80211_EXT_FEATURE_EXT_KEY_ID = 0x24 + NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD = 0x3b + NL80211_EXT_FEATURE_FILS_DISCOVERY = 0x34 + NL80211_EXT_FEATURE_FILS_MAX_CHANNEL_TIME = 0x11 + NL80211_EXT_FEATURE_FILS_SK_OFFLOAD = 0xe + NL80211_EXT_FEATURE_FILS_STA = 0x9 + NL80211_EXT_FEATURE_HIGH_ACCURACY_SCAN = 0x18 + NL80211_EXT_FEATURE_LOW_POWER_SCAN = 0x17 + NL80211_EXT_FEATURE_LOW_SPAN_SCAN = 0x16 + NL80211_EXT_FEATURE_MFP_OPTIONAL = 0x15 + NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA = 0xa + NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA_CONNECTED = 0xb + NL80211_EXT_FEATURE_MULTICAST_REGISTRATIONS = 0x2d + NL80211_EXT_FEATURE_MU_MIMO_AIR_SNIFFER = 0x2 + NL80211_EXT_FEATURE_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION = 0x14 + NL80211_EXT_FEATURE_OCE_PROBE_REQ_HIGH_TX_RATE = 0x13 + NL80211_EXT_FEATURE_OPERATING_CHANNEL_VALIDATION = 0x31 + NL80211_EXT_FEATURE_POWERED_ADDR_CHANGE = 0x3d + NL80211_EXT_FEATURE_PROTECTED_TWT = 0x2b + NL80211_EXT_FEATURE_PROT_RANGE_NEGO_AND_MEASURE = 0x39 + NL80211_EXT_FEATURE_RADAR_BACKGROUND = 0x3c + NL80211_EXT_FEATURE_RRM = 0x1 + NL80211_EXT_FEATURE_SAE_OFFLOAD_AP = 0x33 + NL80211_EXT_FEATURE_SAE_OFFLOAD = 0x26 + NL80211_EXT_FEATURE_SCAN_FREQ_KHZ = 0x2f + NL80211_EXT_FEATURE_SCAN_MIN_PREQ_CONTENT = 0x1e + NL80211_EXT_FEATURE_SCAN_RANDOM_SN = 0x1d + NL80211_EXT_FEATURE_SCAN_START_TIME = 0x3 + NL80211_EXT_FEATURE_SCHED_SCAN_BAND_SPECIFIC_RSSI_THOLD = 0x23 + NL80211_EXT_FEATURE_SCHED_SCAN_RELATIVE_RSSI = 0xc + NL80211_EXT_FEATURE_SECURE_LTF = 0x37 + NL80211_EXT_FEATURE_SECURE_RTT = 0x38 + NL80211_EXT_FEATURE_SET_SCAN_DWELL = 0x5 + NL80211_EXT_FEATURE_STA_TX_PWR = 0x25 + NL80211_EXT_FEATURE_TXQS = 0x1c + NL80211_EXT_FEATURE_UNSOL_BCAST_PROBE_RESP = 0x35 + NL80211_EXT_FEATURE_VHT_IBSS = 0x0 + NL80211_EXT_FEATURE_VLAN_OFFLOAD = 0x27 + NL80211_FEATURE_ACKTO_ESTIMATION = 0x800000 + NL80211_FEATURE_ACTIVE_MONITOR = 0x20000 + NL80211_FEATURE_ADVERTISE_CHAN_LIMITS = 0x4000 + NL80211_FEATURE_AP_MODE_CHAN_WIDTH_CHANGE = 0x40000 + NL80211_FEATURE_AP_SCAN = 0x100 + NL80211_FEATURE_CELL_BASE_REG_HINTS = 0x8 + NL80211_FEATURE_DS_PARAM_SET_IE_IN_PROBES = 0x80000 + NL80211_FEATURE_DYNAMIC_SMPS = 0x2000000 + NL80211_FEATURE_FULL_AP_CLIENT_STATE = 0x8000 + NL80211_FEATURE_HT_IBSS = 0x2 + NL80211_FEATURE_INACTIVITY_TIMER = 0x4 + NL80211_FEATURE_LOW_PRIORITY_SCAN = 0x40 + NL80211_FEATURE_MAC_ON_CREATE = 0x8000000 + NL80211_FEATURE_ND_RANDOM_MAC_ADDR = 0x80000000 + NL80211_FEATURE_NEED_OBSS_SCAN = 0x400 + NL80211_FEATURE_P2P_DEVICE_NEEDS_CHANNEL = 0x10 + NL80211_FEATURE_P2P_GO_CTWIN = 0x800 + NL80211_FEATURE_P2P_GO_OPPPS = 0x1000 + NL80211_FEATURE_QUIET = 0x200000 + NL80211_FEATURE_SAE = 0x20 + NL80211_FEATURE_SCAN_FLUSH = 0x80 + NL80211_FEATURE_SCAN_RANDOM_MAC_ADDR = 0x20000000 + NL80211_FEATURE_SCHED_SCAN_RANDOM_MAC_ADDR = 0x40000000 + NL80211_FEATURE_SK_TX_STATUS = 0x1 + NL80211_FEATURE_STATIC_SMPS = 0x1000000 + NL80211_FEATURE_SUPPORTS_WMM_ADMISSION = 0x4000000 + NL80211_FEATURE_TDLS_CHANNEL_SWITCH = 0x10000000 + NL80211_FEATURE_TX_POWER_INSERTION = 0x400000 + NL80211_FEATURE_USERSPACE_MPM = 0x10000 + NL80211_FEATURE_VIF_TXPOWER = 0x200 + NL80211_FEATURE_WFA_TPC_IE_IN_PROBES = 0x100000 + NL80211_FILS_DISCOVERY_ATTR_INT_MAX = 0x2 + NL80211_FILS_DISCOVERY_ATTR_INT_MIN = 0x1 + NL80211_FILS_DISCOVERY_ATTR_MAX = 0x3 + NL80211_FILS_DISCOVERY_ATTR_TMPL = 0x3 + NL80211_FILS_DISCOVERY_TMPL_MIN_LEN = 0x2a + NL80211_FREQUENCY_ATTR_16MHZ = 0x19 + NL80211_FREQUENCY_ATTR_1MHZ = 0x15 + NL80211_FREQUENCY_ATTR_2MHZ = 0x16 + NL80211_FREQUENCY_ATTR_4MHZ = 0x17 + NL80211_FREQUENCY_ATTR_8MHZ = 0x18 + NL80211_FREQUENCY_ATTR_DFS_CAC_TIME = 0xd + NL80211_FREQUENCY_ATTR_DFS_STATE = 0x7 + NL80211_FREQUENCY_ATTR_DFS_TIME = 0x8 + NL80211_FREQUENCY_ATTR_DISABLED = 0x2 + NL80211_FREQUENCY_ATTR_FREQ = 0x1 + NL80211_FREQUENCY_ATTR_GO_CONCURRENT = 0xf + NL80211_FREQUENCY_ATTR_INDOOR_ONLY = 0xe + NL80211_FREQUENCY_ATTR_IR_CONCURRENT = 0xf + NL80211_FREQUENCY_ATTR_MAX = 0x21 + NL80211_FREQUENCY_ATTR_MAX_TX_POWER = 0x6 + NL80211_FREQUENCY_ATTR_NO_10MHZ = 0x11 + NL80211_FREQUENCY_ATTR_NO_160MHZ = 0xc + NL80211_FREQUENCY_ATTR_NO_20MHZ = 0x10 + NL80211_FREQUENCY_ATTR_NO_320MHZ = 0x1a + NL80211_FREQUENCY_ATTR_NO_80MHZ = 0xb + NL80211_FREQUENCY_ATTR_NO_EHT = 0x1b + NL80211_FREQUENCY_ATTR_NO_HE = 0x13 + NL80211_FREQUENCY_ATTR_NO_HT40_MINUS = 0x9 + NL80211_FREQUENCY_ATTR_NO_HT40_PLUS = 0xa + NL80211_FREQUENCY_ATTR_NO_IBSS = 0x3 + NL80211_FREQUENCY_ATTR_NO_IR = 0x3 + NL80211_FREQUENCY_ATTR_OFFSET = 0x14 + NL80211_FREQUENCY_ATTR_PASSIVE_SCAN = 0x3 + NL80211_FREQUENCY_ATTR_RADAR = 0x5 + NL80211_FREQUENCY_ATTR_WMM = 0x12 + NL80211_FTM_RESP_ATTR_CIVICLOC = 0x3 + NL80211_FTM_RESP_ATTR_ENABLED = 0x1 + NL80211_FTM_RESP_ATTR_LCI = 0x2 + NL80211_FTM_RESP_ATTR_MAX = 0x3 + NL80211_FTM_STATS_ASAP_NUM = 0x4 + NL80211_FTM_STATS_FAILED_NUM = 0x3 + NL80211_FTM_STATS_MAX = 0xa + NL80211_FTM_STATS_NON_ASAP_NUM = 0x5 + NL80211_FTM_STATS_OUT_OF_WINDOW_TRIGGERS_NUM = 0x9 + NL80211_FTM_STATS_PAD = 0xa + NL80211_FTM_STATS_PARTIAL_NUM = 0x2 + NL80211_FTM_STATS_RESCHEDULE_REQUESTS_NUM = 0x8 + NL80211_FTM_STATS_SUCCESS_NUM = 0x1 + NL80211_FTM_STATS_TOTAL_DURATION_MSEC = 0x6 + NL80211_FTM_STATS_UNKNOWN_TRIGGERS_NUM = 0x7 + NL80211_GENL_NAME = "nl80211" + NL80211_HE_BSS_COLOR_ATTR_COLOR = 0x1 + NL80211_HE_BSS_COLOR_ATTR_DISABLED = 0x2 + NL80211_HE_BSS_COLOR_ATTR_MAX = 0x3 + NL80211_HE_BSS_COLOR_ATTR_PARTIAL = 0x3 + NL80211_HE_MAX_CAPABILITY_LEN = 0x36 + NL80211_HE_MIN_CAPABILITY_LEN = 0x10 + NL80211_HE_NSS_MAX = 0x8 + NL80211_HE_OBSS_PD_ATTR_BSS_COLOR_BITMAP = 0x4 + NL80211_HE_OBSS_PD_ATTR_MAX = 0x6 + NL80211_HE_OBSS_PD_ATTR_MAX_OFFSET = 0x2 + NL80211_HE_OBSS_PD_ATTR_MIN_OFFSET = 0x1 + NL80211_HE_OBSS_PD_ATTR_NON_SRG_MAX_OFFSET = 0x3 + NL80211_HE_OBSS_PD_ATTR_PARTIAL_BSSID_BITMAP = 0x5 + NL80211_HE_OBSS_PD_ATTR_SR_CTRL = 0x6 + NL80211_HIDDEN_SSID_NOT_IN_USE = 0x0 + NL80211_HIDDEN_SSID_ZERO_CONTENTS = 0x2 + NL80211_HIDDEN_SSID_ZERO_LEN = 0x1 + NL80211_HT_CAPABILITY_LEN = 0x1a + NL80211_IFACE_COMB_BI_MIN_GCD = 0x7 + NL80211_IFACE_COMB_LIMITS = 0x1 + NL80211_IFACE_COMB_MAXNUM = 0x2 + NL80211_IFACE_COMB_NUM_CHANNELS = 0x4 + NL80211_IFACE_COMB_RADAR_DETECT_REGIONS = 0x6 + NL80211_IFACE_COMB_RADAR_DETECT_WIDTHS = 0x5 + NL80211_IFACE_COMB_STA_AP_BI_MATCH = 0x3 + NL80211_IFACE_COMB_UNSPEC = 0x0 + NL80211_IFACE_LIMIT_MAX = 0x1 + NL80211_IFACE_LIMIT_TYPES = 0x2 + NL80211_IFACE_LIMIT_UNSPEC = 0x0 + NL80211_IFTYPE_ADHOC = 0x1 + NL80211_IFTYPE_AKM_ATTR_IFTYPES = 0x1 + NL80211_IFTYPE_AKM_ATTR_MAX = 0x2 + NL80211_IFTYPE_AKM_ATTR_SUITES = 0x2 + NL80211_IFTYPE_AP = 0x3 + NL80211_IFTYPE_AP_VLAN = 0x4 + NL80211_IFTYPE_MAX = 0xc + NL80211_IFTYPE_MESH_POINT = 0x7 + NL80211_IFTYPE_MONITOR = 0x6 + NL80211_IFTYPE_NAN = 0xc + NL80211_IFTYPE_OCB = 0xb + NL80211_IFTYPE_P2P_CLIENT = 0x8 + NL80211_IFTYPE_P2P_DEVICE = 0xa + NL80211_IFTYPE_P2P_GO = 0x9 + NL80211_IFTYPE_STATION = 0x2 + NL80211_IFTYPE_UNSPECIFIED = 0x0 + NL80211_IFTYPE_WDS = 0x5 + NL80211_KCK_EXT_LEN = 0x18 + NL80211_KCK_LEN = 0x10 + NL80211_KEK_EXT_LEN = 0x20 + NL80211_KEK_LEN = 0x10 + NL80211_KEY_CIPHER = 0x3 + NL80211_KEY_DATA = 0x1 + NL80211_KEY_DEFAULT_BEACON = 0xa + NL80211_KEY_DEFAULT = 0x5 + NL80211_KEY_DEFAULT_MGMT = 0x6 + NL80211_KEY_DEFAULT_TYPE_MULTICAST = 0x2 + NL80211_KEY_DEFAULT_TYPES = 0x8 + NL80211_KEY_DEFAULT_TYPE_UNICAST = 0x1 + NL80211_KEY_IDX = 0x2 + NL80211_KEY_MAX = 0xa + NL80211_KEY_MODE = 0x9 + NL80211_KEY_NO_TX = 0x1 + NL80211_KEY_RX_TX = 0x0 + NL80211_KEY_SEQ = 0x4 + NL80211_KEY_SET_TX = 0x2 + NL80211_KEY_TYPE = 0x7 + NL80211_KEYTYPE_GROUP = 0x0 + NL80211_KEYTYPE_PAIRWISE = 0x1 + NL80211_KEYTYPE_PEERKEY = 0x2 + NL80211_MAX_NR_AKM_SUITES = 0x2 + NL80211_MAX_NR_CIPHER_SUITES = 0x5 + NL80211_MAX_SUPP_HT_RATES = 0x4d + NL80211_MAX_SUPP_RATES = 0x20 + NL80211_MAX_SUPP_REG_RULES = 0x80 + NL80211_MBSSID_CONFIG_ATTR_EMA = 0x5 + NL80211_MBSSID_CONFIG_ATTR_INDEX = 0x3 + NL80211_MBSSID_CONFIG_ATTR_MAX = 0x5 + NL80211_MBSSID_CONFIG_ATTR_MAX_EMA_PROFILE_PERIODICITY = 0x2 + NL80211_MBSSID_CONFIG_ATTR_MAX_INTERFACES = 0x1 + NL80211_MBSSID_CONFIG_ATTR_TX_IFINDEX = 0x4 + NL80211_MESHCONF_ATTR_MAX = 0x1f + NL80211_MESHCONF_AUTO_OPEN_PLINKS = 0x7 + NL80211_MESHCONF_AWAKE_WINDOW = 0x1b + NL80211_MESHCONF_CONFIRM_TIMEOUT = 0x2 + NL80211_MESHCONF_CONNECTED_TO_AS = 0x1f + NL80211_MESHCONF_CONNECTED_TO_GATE = 0x1d + NL80211_MESHCONF_ELEMENT_TTL = 0xf + NL80211_MESHCONF_FORWARDING = 0x13 + NL80211_MESHCONF_GATE_ANNOUNCEMENTS = 0x11 + NL80211_MESHCONF_HOLDING_TIMEOUT = 0x3 + NL80211_MESHCONF_HT_OPMODE = 0x16 + NL80211_MESHCONF_HWMP_ACTIVE_PATH_TIMEOUT = 0xb + NL80211_MESHCONF_HWMP_CONFIRMATION_INTERVAL = 0x19 + NL80211_MESHCONF_HWMP_MAX_PREQ_RETRIES = 0x8 + NL80211_MESHCONF_HWMP_NET_DIAM_TRVS_TIME = 0xd + NL80211_MESHCONF_HWMP_PATH_TO_ROOT_TIMEOUT = 0x17 + NL80211_MESHCONF_HWMP_PERR_MIN_INTERVAL = 0x12 + NL80211_MESHCONF_HWMP_PREQ_MIN_INTERVAL = 0xc + NL80211_MESHCONF_HWMP_RANN_INTERVAL = 0x10 + NL80211_MESHCONF_HWMP_ROOT_INTERVAL = 0x18 + NL80211_MESHCONF_HWMP_ROOTMODE = 0xe + NL80211_MESHCONF_MAX_PEER_LINKS = 0x4 + NL80211_MESHCONF_MAX_RETRIES = 0x5 + NL80211_MESHCONF_MIN_DISCOVERY_TIMEOUT = 0xa + NL80211_MESHCONF_NOLEARN = 0x1e + NL80211_MESHCONF_PATH_REFRESH_TIME = 0x9 + NL80211_MESHCONF_PLINK_TIMEOUT = 0x1c + NL80211_MESHCONF_POWER_MODE = 0x1a + NL80211_MESHCONF_RETRY_TIMEOUT = 0x1 + NL80211_MESHCONF_RSSI_THRESHOLD = 0x14 + NL80211_MESHCONF_SYNC_OFFSET_MAX_NEIGHBOR = 0x15 + NL80211_MESHCONF_TTL = 0x6 + NL80211_MESH_POWER_ACTIVE = 0x1 + NL80211_MESH_POWER_DEEP_SLEEP = 0x3 + NL80211_MESH_POWER_LIGHT_SLEEP = 0x2 + NL80211_MESH_POWER_MAX = 0x3 + NL80211_MESH_POWER_UNKNOWN = 0x0 + NL80211_MESH_SETUP_ATTR_MAX = 0x8 + NL80211_MESH_SETUP_AUTH_PROTOCOL = 0x8 + NL80211_MESH_SETUP_ENABLE_VENDOR_METRIC = 0x2 + NL80211_MESH_SETUP_ENABLE_VENDOR_PATH_SEL = 0x1 + NL80211_MESH_SETUP_ENABLE_VENDOR_SYNC = 0x6 + NL80211_MESH_SETUP_IE = 0x3 + NL80211_MESH_SETUP_USERSPACE_AMPE = 0x5 + NL80211_MESH_SETUP_USERSPACE_AUTH = 0x4 + NL80211_MESH_SETUP_USERSPACE_MPM = 0x7 + NL80211_MESH_SETUP_VENDOR_PATH_SEL_IE = 0x3 + NL80211_MFP_NO = 0x0 + NL80211_MFP_OPTIONAL = 0x2 + NL80211_MFP_REQUIRED = 0x1 + NL80211_MIN_REMAIN_ON_CHANNEL_TIME = 0xa + NL80211_MNTR_FLAG_ACTIVE = 0x6 + NL80211_MNTR_FLAG_CONTROL = 0x3 + NL80211_MNTR_FLAG_COOK_FRAMES = 0x5 + NL80211_MNTR_FLAG_FCSFAIL = 0x1 + NL80211_MNTR_FLAG_MAX = 0x7 + NL80211_MNTR_FLAG_OTHER_BSS = 0x4 + NL80211_MNTR_FLAG_PLCPFAIL = 0x2 + NL80211_MPATH_FLAG_ACTIVE = 0x1 + NL80211_MPATH_FLAG_FIXED = 0x8 + NL80211_MPATH_FLAG_RESOLVED = 0x10 + NL80211_MPATH_FLAG_RESOLVING = 0x2 + NL80211_MPATH_FLAG_SN_VALID = 0x4 + NL80211_MPATH_INFO_DISCOVERY_RETRIES = 0x7 + NL80211_MPATH_INFO_DISCOVERY_TIMEOUT = 0x6 + NL80211_MPATH_INFO_EXPTIME = 0x4 + NL80211_MPATH_INFO_FLAGS = 0x5 + NL80211_MPATH_INFO_FRAME_QLEN = 0x1 + NL80211_MPATH_INFO_HOP_COUNT = 0x8 + NL80211_MPATH_INFO_MAX = 0x9 + NL80211_MPATH_INFO_METRIC = 0x3 + NL80211_MPATH_INFO_PATH_CHANGE = 0x9 + NL80211_MPATH_INFO_SN = 0x2 + NL80211_MULTICAST_GROUP_CONFIG = "config" + NL80211_MULTICAST_GROUP_MLME = "mlme" + NL80211_MULTICAST_GROUP_NAN = "nan" + NL80211_MULTICAST_GROUP_REG = "regulatory" + NL80211_MULTICAST_GROUP_SCAN = "scan" + NL80211_MULTICAST_GROUP_TESTMODE = "testmode" + NL80211_MULTICAST_GROUP_VENDOR = "vendor" + NL80211_NAN_FUNC_ATTR_MAX = 0x10 + NL80211_NAN_FUNC_CLOSE_RANGE = 0x9 + NL80211_NAN_FUNC_FOLLOW_UP = 0x2 + NL80211_NAN_FUNC_FOLLOW_UP_DEST = 0x8 + NL80211_NAN_FUNC_FOLLOW_UP_ID = 0x6 + NL80211_NAN_FUNC_FOLLOW_UP_REQ_ID = 0x7 + NL80211_NAN_FUNC_INSTANCE_ID = 0xf + NL80211_NAN_FUNC_MAX_TYPE = 0x2 + NL80211_NAN_FUNC_PUBLISH_BCAST = 0x4 + NL80211_NAN_FUNC_PUBLISH = 0x0 + NL80211_NAN_FUNC_PUBLISH_TYPE = 0x3 + NL80211_NAN_FUNC_RX_MATCH_FILTER = 0xd + NL80211_NAN_FUNC_SERVICE_ID = 0x2 + NL80211_NAN_FUNC_SERVICE_ID_LEN = 0x6 + NL80211_NAN_FUNC_SERVICE_INFO = 0xb + NL80211_NAN_FUNC_SERVICE_SPEC_INFO_MAX_LEN = 0xff + NL80211_NAN_FUNC_SRF = 0xc + NL80211_NAN_FUNC_SRF_MAX_LEN = 0xff + NL80211_NAN_FUNC_SUBSCRIBE_ACTIVE = 0x5 + NL80211_NAN_FUNC_SUBSCRIBE = 0x1 + NL80211_NAN_FUNC_TERM_REASON = 0x10 + NL80211_NAN_FUNC_TERM_REASON_ERROR = 0x2 + NL80211_NAN_FUNC_TERM_REASON_TTL_EXPIRED = 0x1 + NL80211_NAN_FUNC_TERM_REASON_USER_REQUEST = 0x0 + NL80211_NAN_FUNC_TTL = 0xa + NL80211_NAN_FUNC_TX_MATCH_FILTER = 0xe + NL80211_NAN_FUNC_TYPE = 0x1 + NL80211_NAN_MATCH_ATTR_MAX = 0x2 + NL80211_NAN_MATCH_FUNC_LOCAL = 0x1 + NL80211_NAN_MATCH_FUNC_PEER = 0x2 + NL80211_NAN_SOLICITED_PUBLISH = 0x1 + NL80211_NAN_SRF_ATTR_MAX = 0x4 + NL80211_NAN_SRF_BF = 0x2 + NL80211_NAN_SRF_BF_IDX = 0x3 + NL80211_NAN_SRF_INCLUDE = 0x1 + NL80211_NAN_SRF_MAC_ADDRS = 0x4 + NL80211_NAN_UNSOLICITED_PUBLISH = 0x2 + NL80211_NUM_ACS = 0x4 + NL80211_P2P_PS_SUPPORTED = 0x1 + NL80211_P2P_PS_UNSUPPORTED = 0x0 + NL80211_PKTPAT_MASK = 0x1 + NL80211_PKTPAT_OFFSET = 0x3 + NL80211_PKTPAT_PATTERN = 0x2 + NL80211_PLINK_ACTION_BLOCK = 0x2 + NL80211_PLINK_ACTION_NO_ACTION = 0x0 + NL80211_PLINK_ACTION_OPEN = 0x1 + NL80211_PLINK_BLOCKED = 0x6 + NL80211_PLINK_CNF_RCVD = 0x3 + NL80211_PLINK_ESTAB = 0x4 + NL80211_PLINK_HOLDING = 0x5 + NL80211_PLINK_LISTEN = 0x0 + NL80211_PLINK_OPN_RCVD = 0x2 + NL80211_PLINK_OPN_SNT = 0x1 + NL80211_PMKSA_CANDIDATE_BSSID = 0x2 + NL80211_PMKSA_CANDIDATE_INDEX = 0x1 + NL80211_PMKSA_CANDIDATE_PREAUTH = 0x3 + NL80211_PMSR_ATTR_MAX = 0x5 + NL80211_PMSR_ATTR_MAX_PEERS = 0x1 + NL80211_PMSR_ATTR_PEERS = 0x5 + NL80211_PMSR_ATTR_RANDOMIZE_MAC_ADDR = 0x3 + NL80211_PMSR_ATTR_REPORT_AP_TSF = 0x2 + NL80211_PMSR_ATTR_TYPE_CAPA = 0x4 + NL80211_PMSR_FTM_CAPA_ATTR_ASAP = 0x1 + NL80211_PMSR_FTM_CAPA_ATTR_BANDWIDTHS = 0x6 + NL80211_PMSR_FTM_CAPA_ATTR_MAX_BURSTS_EXPONENT = 0x7 + NL80211_PMSR_FTM_CAPA_ATTR_MAX = 0xa + NL80211_PMSR_FTM_CAPA_ATTR_MAX_FTMS_PER_BURST = 0x8 + NL80211_PMSR_FTM_CAPA_ATTR_NON_ASAP = 0x2 + NL80211_PMSR_FTM_CAPA_ATTR_NON_TRIGGER_BASED = 0xa + NL80211_PMSR_FTM_CAPA_ATTR_PREAMBLES = 0x5 + NL80211_PMSR_FTM_CAPA_ATTR_REQ_CIVICLOC = 0x4 + NL80211_PMSR_FTM_CAPA_ATTR_REQ_LCI = 0x3 + NL80211_PMSR_FTM_CAPA_ATTR_TRIGGER_BASED = 0x9 + NL80211_PMSR_FTM_FAILURE_BAD_CHANGED_PARAMS = 0x7 + NL80211_PMSR_FTM_FAILURE_INVALID_TIMESTAMP = 0x5 + NL80211_PMSR_FTM_FAILURE_NO_RESPONSE = 0x1 + NL80211_PMSR_FTM_FAILURE_PEER_BUSY = 0x6 + NL80211_PMSR_FTM_FAILURE_PEER_NOT_CAPABLE = 0x4 + NL80211_PMSR_FTM_FAILURE_REJECTED = 0x2 + NL80211_PMSR_FTM_FAILURE_UNSPECIFIED = 0x0 + NL80211_PMSR_FTM_FAILURE_WRONG_CHANNEL = 0x3 + NL80211_PMSR_FTM_REQ_ATTR_ASAP = 0x1 + NL80211_PMSR_FTM_REQ_ATTR_BSS_COLOR = 0xd + NL80211_PMSR_FTM_REQ_ATTR_BURST_DURATION = 0x5 + NL80211_PMSR_FTM_REQ_ATTR_BURST_PERIOD = 0x4 + NL80211_PMSR_FTM_REQ_ATTR_FTMS_PER_BURST = 0x6 + NL80211_PMSR_FTM_REQ_ATTR_LMR_FEEDBACK = 0xc + NL80211_PMSR_FTM_REQ_ATTR_MAX = 0xd + NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED = 0xb + NL80211_PMSR_FTM_REQ_ATTR_NUM_BURSTS_EXP = 0x3 + NL80211_PMSR_FTM_REQ_ATTR_NUM_FTMR_RETRIES = 0x7 + NL80211_PMSR_FTM_REQ_ATTR_PREAMBLE = 0x2 + NL80211_PMSR_FTM_REQ_ATTR_REQUEST_CIVICLOC = 0x9 + NL80211_PMSR_FTM_REQ_ATTR_REQUEST_LCI = 0x8 + NL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED = 0xa + NL80211_PMSR_FTM_RESP_ATTR_BURST_DURATION = 0x7 + NL80211_PMSR_FTM_RESP_ATTR_BURST_INDEX = 0x2 + NL80211_PMSR_FTM_RESP_ATTR_BUSY_RETRY_TIME = 0x5 + NL80211_PMSR_FTM_RESP_ATTR_CIVICLOC = 0x14 + NL80211_PMSR_FTM_RESP_ATTR_DIST_AVG = 0x10 + NL80211_PMSR_FTM_RESP_ATTR_DIST_SPREAD = 0x12 + NL80211_PMSR_FTM_RESP_ATTR_DIST_VARIANCE = 0x11 + NL80211_PMSR_FTM_RESP_ATTR_FAIL_REASON = 0x1 + NL80211_PMSR_FTM_RESP_ATTR_FTMS_PER_BURST = 0x8 + NL80211_PMSR_FTM_RESP_ATTR_LCI = 0x13 + NL80211_PMSR_FTM_RESP_ATTR_MAX = 0x15 + NL80211_PMSR_FTM_RESP_ATTR_NUM_BURSTS_EXP = 0x6 + NL80211_PMSR_FTM_RESP_ATTR_NUM_FTMR_ATTEMPTS = 0x3 + NL80211_PMSR_FTM_RESP_ATTR_NUM_FTMR_SUCCESSES = 0x4 + NL80211_PMSR_FTM_RESP_ATTR_PAD = 0x15 + NL80211_PMSR_FTM_RESP_ATTR_RSSI_AVG = 0x9 + NL80211_PMSR_FTM_RESP_ATTR_RSSI_SPREAD = 0xa + NL80211_PMSR_FTM_RESP_ATTR_RTT_AVG = 0xd + NL80211_PMSR_FTM_RESP_ATTR_RTT_SPREAD = 0xf + NL80211_PMSR_FTM_RESP_ATTR_RTT_VARIANCE = 0xe + NL80211_PMSR_FTM_RESP_ATTR_RX_RATE = 0xc + NL80211_PMSR_FTM_RESP_ATTR_TX_RATE = 0xb + NL80211_PMSR_PEER_ATTR_ADDR = 0x1 + NL80211_PMSR_PEER_ATTR_CHAN = 0x2 + NL80211_PMSR_PEER_ATTR_MAX = 0x4 + NL80211_PMSR_PEER_ATTR_REQ = 0x3 + NL80211_PMSR_PEER_ATTR_RESP = 0x4 + NL80211_PMSR_REQ_ATTR_DATA = 0x1 + NL80211_PMSR_REQ_ATTR_GET_AP_TSF = 0x2 + NL80211_PMSR_REQ_ATTR_MAX = 0x2 + NL80211_PMSR_RESP_ATTR_AP_TSF = 0x4 + NL80211_PMSR_RESP_ATTR_DATA = 0x1 + NL80211_PMSR_RESP_ATTR_FINAL = 0x5 + NL80211_PMSR_RESP_ATTR_HOST_TIME = 0x3 + NL80211_PMSR_RESP_ATTR_MAX = 0x6 + NL80211_PMSR_RESP_ATTR_PAD = 0x6 + NL80211_PMSR_RESP_ATTR_STATUS = 0x2 + NL80211_PMSR_STATUS_FAILURE = 0x3 + NL80211_PMSR_STATUS_REFUSED = 0x1 + NL80211_PMSR_STATUS_SUCCESS = 0x0 + NL80211_PMSR_STATUS_TIMEOUT = 0x2 + NL80211_PMSR_TYPE_FTM = 0x1 + NL80211_PMSR_TYPE_INVALID = 0x0 + NL80211_PMSR_TYPE_MAX = 0x1 + NL80211_PREAMBLE_DMG = 0x3 + NL80211_PREAMBLE_HE = 0x4 + NL80211_PREAMBLE_HT = 0x1 + NL80211_PREAMBLE_LEGACY = 0x0 + NL80211_PREAMBLE_VHT = 0x2 + NL80211_PROBE_RESP_OFFLOAD_SUPPORT_80211U = 0x8 + NL80211_PROBE_RESP_OFFLOAD_SUPPORT_P2P = 0x4 + NL80211_PROBE_RESP_OFFLOAD_SUPPORT_WPS2 = 0x2 + NL80211_PROBE_RESP_OFFLOAD_SUPPORT_WPS = 0x1 + NL80211_PROTOCOL_FEATURE_SPLIT_WIPHY_DUMP = 0x1 + NL80211_PS_DISABLED = 0x0 + NL80211_PS_ENABLED = 0x1 + NL80211_RADAR_CAC_ABORTED = 0x2 + NL80211_RADAR_CAC_FINISHED = 0x1 + NL80211_RADAR_CAC_STARTED = 0x5 + NL80211_RADAR_DETECTED = 0x0 + NL80211_RADAR_NOP_FINISHED = 0x3 + NL80211_RADAR_PRE_CAC_EXPIRED = 0x4 + NL80211_RATE_INFO_10_MHZ_WIDTH = 0xb + NL80211_RATE_INFO_160_MHZ_WIDTH = 0xa + NL80211_RATE_INFO_320_MHZ_WIDTH = 0x12 + NL80211_RATE_INFO_40_MHZ_WIDTH = 0x3 + NL80211_RATE_INFO_5_MHZ_WIDTH = 0xc + NL80211_RATE_INFO_80_MHZ_WIDTH = 0x8 + NL80211_RATE_INFO_80P80_MHZ_WIDTH = 0x9 + NL80211_RATE_INFO_BITRATE32 = 0x5 + NL80211_RATE_INFO_BITRATE = 0x1 + NL80211_RATE_INFO_EHT_GI_0_8 = 0x0 + NL80211_RATE_INFO_EHT_GI_1_6 = 0x1 + NL80211_RATE_INFO_EHT_GI_3_2 = 0x2 + NL80211_RATE_INFO_EHT_GI = 0x15 + NL80211_RATE_INFO_EHT_MCS = 0x13 + NL80211_RATE_INFO_EHT_NSS = 0x14 + NL80211_RATE_INFO_EHT_RU_ALLOC_106 = 0x3 + NL80211_RATE_INFO_EHT_RU_ALLOC_106P26 = 0x4 + NL80211_RATE_INFO_EHT_RU_ALLOC_242 = 0x5 + NL80211_RATE_INFO_EHT_RU_ALLOC_26 = 0x0 + NL80211_RATE_INFO_EHT_RU_ALLOC_2x996 = 0xb + NL80211_RATE_INFO_EHT_RU_ALLOC_2x996P484 = 0xc + NL80211_RATE_INFO_EHT_RU_ALLOC_3x996 = 0xd + NL80211_RATE_INFO_EHT_RU_ALLOC_3x996P484 = 0xe + NL80211_RATE_INFO_EHT_RU_ALLOC_484 = 0x6 + NL80211_RATE_INFO_EHT_RU_ALLOC_484P242 = 0x7 + NL80211_RATE_INFO_EHT_RU_ALLOC_4x996 = 0xf + NL80211_RATE_INFO_EHT_RU_ALLOC_52 = 0x1 + NL80211_RATE_INFO_EHT_RU_ALLOC_52P26 = 0x2 + NL80211_RATE_INFO_EHT_RU_ALLOC_996 = 0x8 + NL80211_RATE_INFO_EHT_RU_ALLOC_996P484 = 0x9 + NL80211_RATE_INFO_EHT_RU_ALLOC_996P484P242 = 0xa + NL80211_RATE_INFO_EHT_RU_ALLOC = 0x16 + NL80211_RATE_INFO_HE_1XLTF = 0x0 + NL80211_RATE_INFO_HE_2XLTF = 0x1 + NL80211_RATE_INFO_HE_4XLTF = 0x2 + NL80211_RATE_INFO_HE_DCM = 0x10 + NL80211_RATE_INFO_HE_GI_0_8 = 0x0 + NL80211_RATE_INFO_HE_GI_1_6 = 0x1 + NL80211_RATE_INFO_HE_GI_3_2 = 0x2 + NL80211_RATE_INFO_HE_GI = 0xf + NL80211_RATE_INFO_HE_MCS = 0xd + NL80211_RATE_INFO_HE_NSS = 0xe + NL80211_RATE_INFO_HE_RU_ALLOC_106 = 0x2 + NL80211_RATE_INFO_HE_RU_ALLOC_242 = 0x3 + NL80211_RATE_INFO_HE_RU_ALLOC_26 = 0x0 + NL80211_RATE_INFO_HE_RU_ALLOC_2x996 = 0x6 + NL80211_RATE_INFO_HE_RU_ALLOC_484 = 0x4 + NL80211_RATE_INFO_HE_RU_ALLOC_52 = 0x1 + NL80211_RATE_INFO_HE_RU_ALLOC_996 = 0x5 + NL80211_RATE_INFO_HE_RU_ALLOC = 0x11 + NL80211_RATE_INFO_MAX = 0x1d + NL80211_RATE_INFO_MCS = 0x2 + NL80211_RATE_INFO_SHORT_GI = 0x4 + NL80211_RATE_INFO_VHT_MCS = 0x6 + NL80211_RATE_INFO_VHT_NSS = 0x7 + NL80211_REGDOM_SET_BY_CORE = 0x0 + NL80211_REGDOM_SET_BY_COUNTRY_IE = 0x3 + NL80211_REGDOM_SET_BY_DRIVER = 0x2 + NL80211_REGDOM_SET_BY_USER = 0x1 + NL80211_REGDOM_TYPE_COUNTRY = 0x0 + NL80211_REGDOM_TYPE_CUSTOM_WORLD = 0x2 + NL80211_REGDOM_TYPE_INTERSECTION = 0x3 + NL80211_REGDOM_TYPE_WORLD = 0x1 + NL80211_REG_RULE_ATTR_MAX = 0x8 + NL80211_REKEY_DATA_AKM = 0x4 + NL80211_REKEY_DATA_KCK = 0x2 + NL80211_REKEY_DATA_KEK = 0x1 + NL80211_REKEY_DATA_REPLAY_CTR = 0x3 + NL80211_REPLAY_CTR_LEN = 0x8 + NL80211_RRF_AUTO_BW = 0x800 + NL80211_RRF_DFS = 0x10 + NL80211_RRF_GO_CONCURRENT = 0x1000 + NL80211_RRF_IR_CONCURRENT = 0x1000 + NL80211_RRF_NO_160MHZ = 0x10000 + NL80211_RRF_NO_320MHZ = 0x40000 + NL80211_RRF_NO_80MHZ = 0x8000 + NL80211_RRF_NO_CCK = 0x2 + NL80211_RRF_NO_HE = 0x20000 + NL80211_RRF_NO_HT40 = 0x6000 + NL80211_RRF_NO_HT40MINUS = 0x2000 + NL80211_RRF_NO_HT40PLUS = 0x4000 + NL80211_RRF_NO_IBSS = 0x80 + NL80211_RRF_NO_INDOOR = 0x4 + NL80211_RRF_NO_IR_ALL = 0x180 + NL80211_RRF_NO_IR = 0x80 + NL80211_RRF_NO_OFDM = 0x1 + NL80211_RRF_NO_OUTDOOR = 0x8 + NL80211_RRF_PASSIVE_SCAN = 0x80 + NL80211_RRF_PTMP_ONLY = 0x40 + NL80211_RRF_PTP_ONLY = 0x20 + NL80211_RXMGMT_FLAG_ANSWERED = 0x1 + NL80211_RXMGMT_FLAG_EXTERNAL_AUTH = 0x2 + NL80211_SAE_PWE_BOTH = 0x3 + NL80211_SAE_PWE_HASH_TO_ELEMENT = 0x2 + NL80211_SAE_PWE_HUNT_AND_PECK = 0x1 + NL80211_SAE_PWE_UNSPECIFIED = 0x0 + NL80211_SAR_ATTR_MAX = 0x2 + NL80211_SAR_ATTR_SPECS = 0x2 + NL80211_SAR_ATTR_SPECS_END_FREQ = 0x4 + NL80211_SAR_ATTR_SPECS_MAX = 0x4 + NL80211_SAR_ATTR_SPECS_POWER = 0x1 + NL80211_SAR_ATTR_SPECS_RANGE_INDEX = 0x2 + NL80211_SAR_ATTR_SPECS_START_FREQ = 0x3 + NL80211_SAR_ATTR_TYPE = 0x1 + NL80211_SAR_TYPE_POWER = 0x0 + NL80211_SCAN_FLAG_ACCEPT_BCAST_PROBE_RESP = 0x20 + NL80211_SCAN_FLAG_AP = 0x4 + NL80211_SCAN_FLAG_COLOCATED_6GHZ = 0x4000 + NL80211_SCAN_FLAG_FILS_MAX_CHANNEL_TIME = 0x10 + NL80211_SCAN_FLAG_FLUSH = 0x2 + NL80211_SCAN_FLAG_FREQ_KHZ = 0x2000 + NL80211_SCAN_FLAG_HIGH_ACCURACY = 0x400 + NL80211_SCAN_FLAG_LOW_POWER = 0x200 + NL80211_SCAN_FLAG_LOW_PRIORITY = 0x1 + NL80211_SCAN_FLAG_LOW_SPAN = 0x100 + NL80211_SCAN_FLAG_MIN_PREQ_CONTENT = 0x1000 + NL80211_SCAN_FLAG_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION = 0x80 + NL80211_SCAN_FLAG_OCE_PROBE_REQ_HIGH_TX_RATE = 0x40 + NL80211_SCAN_FLAG_RANDOM_ADDR = 0x8 + NL80211_SCAN_FLAG_RANDOM_SN = 0x800 + NL80211_SCAN_RSSI_THOLD_OFF = -0x12c + NL80211_SCHED_SCAN_MATCH_ATTR_BSSID = 0x5 + NL80211_SCHED_SCAN_MATCH_ATTR_MAX = 0x6 + NL80211_SCHED_SCAN_MATCH_ATTR_RELATIVE_RSSI = 0x3 + NL80211_SCHED_SCAN_MATCH_ATTR_RSSI_ADJUST = 0x4 + NL80211_SCHED_SCAN_MATCH_ATTR_RSSI = 0x2 + NL80211_SCHED_SCAN_MATCH_ATTR_SSID = 0x1 + NL80211_SCHED_SCAN_MATCH_PER_BAND_RSSI = 0x6 + NL80211_SCHED_SCAN_PLAN_INTERVAL = 0x1 + NL80211_SCHED_SCAN_PLAN_ITERATIONS = 0x2 + NL80211_SCHED_SCAN_PLAN_MAX = 0x2 + NL80211_SMPS_DYNAMIC = 0x2 + NL80211_SMPS_MAX = 0x2 + NL80211_SMPS_OFF = 0x0 + NL80211_SMPS_STATIC = 0x1 + NL80211_STA_BSS_PARAM_BEACON_INTERVAL = 0x5 + NL80211_STA_BSS_PARAM_CTS_PROT = 0x1 + NL80211_STA_BSS_PARAM_DTIM_PERIOD = 0x4 + NL80211_STA_BSS_PARAM_MAX = 0x5 + NL80211_STA_BSS_PARAM_SHORT_PREAMBLE = 0x2 + NL80211_STA_BSS_PARAM_SHORT_SLOT_TIME = 0x3 + NL80211_STA_FLAG_ASSOCIATED = 0x7 + NL80211_STA_FLAG_AUTHENTICATED = 0x5 + NL80211_STA_FLAG_AUTHORIZED = 0x1 + NL80211_STA_FLAG_MAX = 0x8 + NL80211_STA_FLAG_MAX_OLD_API = 0x6 + NL80211_STA_FLAG_MFP = 0x4 + NL80211_STA_FLAG_SHORT_PREAMBLE = 0x2 + NL80211_STA_FLAG_TDLS_PEER = 0x6 + NL80211_STA_FLAG_WME = 0x3 + NL80211_STA_INFO_ACK_SIGNAL_AVG = 0x23 + NL80211_STA_INFO_ACK_SIGNAL = 0x22 + NL80211_STA_INFO_AIRTIME_LINK_METRIC = 0x29 + NL80211_STA_INFO_AIRTIME_WEIGHT = 0x28 + NL80211_STA_INFO_ASSOC_AT_BOOTTIME = 0x2a + NL80211_STA_INFO_BEACON_LOSS = 0x12 + NL80211_STA_INFO_BEACON_RX = 0x1d + NL80211_STA_INFO_BEACON_SIGNAL_AVG = 0x1e + NL80211_STA_INFO_BSS_PARAM = 0xf + NL80211_STA_INFO_CHAIN_SIGNAL_AVG = 0x1a + NL80211_STA_INFO_CHAIN_SIGNAL = 0x19 + NL80211_STA_INFO_CONNECTED_TIME = 0x10 + NL80211_STA_INFO_CONNECTED_TO_AS = 0x2b + NL80211_STA_INFO_CONNECTED_TO_GATE = 0x26 + NL80211_STA_INFO_DATA_ACK_SIGNAL_AVG = 0x23 + NL80211_STA_INFO_EXPECTED_THROUGHPUT = 0x1b + NL80211_STA_INFO_FCS_ERROR_COUNT = 0x25 + NL80211_STA_INFO_INACTIVE_TIME = 0x1 + NL80211_STA_INFO_LLID = 0x4 + NL80211_STA_INFO_LOCAL_PM = 0x14 + NL80211_STA_INFO_MAX = 0x2b + NL80211_STA_INFO_NONPEER_PM = 0x16 + NL80211_STA_INFO_PAD = 0x21 + NL80211_STA_INFO_PEER_PM = 0x15 + NL80211_STA_INFO_PLID = 0x5 + NL80211_STA_INFO_PLINK_STATE = 0x6 + NL80211_STA_INFO_RX_BITRATE = 0xe + NL80211_STA_INFO_RX_BYTES64 = 0x17 + NL80211_STA_INFO_RX_BYTES = 0x2 + NL80211_STA_INFO_RX_DROP_MISC = 0x1c + NL80211_STA_INFO_RX_DURATION = 0x20 + NL80211_STA_INFO_RX_MPDUS = 0x24 + NL80211_STA_INFO_RX_PACKETS = 0x9 + NL80211_STA_INFO_SIGNAL_AVG = 0xd + NL80211_STA_INFO_SIGNAL = 0x7 + NL80211_STA_INFO_STA_FLAGS = 0x11 + NL80211_STA_INFO_TID_STATS = 0x1f + NL80211_STA_INFO_T_OFFSET = 0x13 + NL80211_STA_INFO_TX_BITRATE = 0x8 + NL80211_STA_INFO_TX_BYTES64 = 0x18 + NL80211_STA_INFO_TX_BYTES = 0x3 + NL80211_STA_INFO_TX_DURATION = 0x27 + NL80211_STA_INFO_TX_FAILED = 0xc + NL80211_STA_INFO_TX_PACKETS = 0xa + NL80211_STA_INFO_TX_RETRIES = 0xb + NL80211_STA_WME_MAX = 0x2 + NL80211_STA_WME_MAX_SP = 0x2 + NL80211_STA_WME_UAPSD_QUEUES = 0x1 + NL80211_SURVEY_INFO_CHANNEL_TIME_BUSY = 0x5 + NL80211_SURVEY_INFO_CHANNEL_TIME = 0x4 + NL80211_SURVEY_INFO_CHANNEL_TIME_EXT_BUSY = 0x6 + NL80211_SURVEY_INFO_CHANNEL_TIME_RX = 0x7 + NL80211_SURVEY_INFO_CHANNEL_TIME_TX = 0x8 + NL80211_SURVEY_INFO_FREQUENCY = 0x1 + NL80211_SURVEY_INFO_FREQUENCY_OFFSET = 0xc + NL80211_SURVEY_INFO_IN_USE = 0x3 + NL80211_SURVEY_INFO_MAX = 0xc + NL80211_SURVEY_INFO_NOISE = 0x2 + NL80211_SURVEY_INFO_PAD = 0xa + NL80211_SURVEY_INFO_TIME_BSS_RX = 0xb + NL80211_SURVEY_INFO_TIME_BUSY = 0x5 + NL80211_SURVEY_INFO_TIME = 0x4 + NL80211_SURVEY_INFO_TIME_EXT_BUSY = 0x6 + NL80211_SURVEY_INFO_TIME_RX = 0x7 + NL80211_SURVEY_INFO_TIME_SCAN = 0x9 + NL80211_SURVEY_INFO_TIME_TX = 0x8 + NL80211_TDLS_DISABLE_LINK = 0x4 + NL80211_TDLS_DISCOVERY_REQ = 0x0 + NL80211_TDLS_ENABLE_LINK = 0x3 + NL80211_TDLS_PEER_HE = 0x8 + NL80211_TDLS_PEER_HT = 0x1 + NL80211_TDLS_PEER_VHT = 0x2 + NL80211_TDLS_PEER_WMM = 0x4 + NL80211_TDLS_SETUP = 0x1 + NL80211_TDLS_TEARDOWN = 0x2 + NL80211_TID_CONFIG_ATTR_AMPDU_CTRL = 0x9 + NL80211_TID_CONFIG_ATTR_AMSDU_CTRL = 0xb + NL80211_TID_CONFIG_ATTR_MAX = 0xd + NL80211_TID_CONFIG_ATTR_NOACK = 0x6 + NL80211_TID_CONFIG_ATTR_OVERRIDE = 0x4 + NL80211_TID_CONFIG_ATTR_PAD = 0x1 + NL80211_TID_CONFIG_ATTR_PEER_SUPP = 0x3 + NL80211_TID_CONFIG_ATTR_RETRY_LONG = 0x8 + NL80211_TID_CONFIG_ATTR_RETRY_SHORT = 0x7 + NL80211_TID_CONFIG_ATTR_RTSCTS_CTRL = 0xa + NL80211_TID_CONFIG_ATTR_TIDS = 0x5 + NL80211_TID_CONFIG_ATTR_TX_RATE = 0xd + NL80211_TID_CONFIG_ATTR_TX_RATE_TYPE = 0xc + NL80211_TID_CONFIG_ATTR_VIF_SUPP = 0x2 + NL80211_TID_CONFIG_DISABLE = 0x1 + NL80211_TID_CONFIG_ENABLE = 0x0 + NL80211_TID_STATS_MAX = 0x6 + NL80211_TID_STATS_PAD = 0x5 + NL80211_TID_STATS_RX_MSDU = 0x1 + NL80211_TID_STATS_TX_MSDU = 0x2 + NL80211_TID_STATS_TX_MSDU_FAILED = 0x4 + NL80211_TID_STATS_TX_MSDU_RETRIES = 0x3 + NL80211_TID_STATS_TXQ_STATS = 0x6 + NL80211_TIMEOUT_ASSOC = 0x3 + NL80211_TIMEOUT_AUTH = 0x2 + NL80211_TIMEOUT_SCAN = 0x1 + NL80211_TIMEOUT_UNSPECIFIED = 0x0 + NL80211_TKIP_DATA_OFFSET_ENCR_KEY = 0x0 + NL80211_TKIP_DATA_OFFSET_RX_MIC_KEY = 0x18 + NL80211_TKIP_DATA_OFFSET_TX_MIC_KEY = 0x10 + NL80211_TX_POWER_AUTOMATIC = 0x0 + NL80211_TX_POWER_FIXED = 0x2 + NL80211_TX_POWER_LIMITED = 0x1 + NL80211_TXQ_ATTR_AC = 0x1 + NL80211_TXQ_ATTR_AIFS = 0x5 + NL80211_TXQ_ATTR_CWMAX = 0x4 + NL80211_TXQ_ATTR_CWMIN = 0x3 + NL80211_TXQ_ATTR_MAX = 0x5 + NL80211_TXQ_ATTR_QUEUE = 0x1 + NL80211_TXQ_ATTR_TXOP = 0x2 + NL80211_TXQ_Q_BE = 0x2 + NL80211_TXQ_Q_BK = 0x3 + NL80211_TXQ_Q_VI = 0x1 + NL80211_TXQ_Q_VO = 0x0 + NL80211_TXQ_STATS_BACKLOG_BYTES = 0x1 + NL80211_TXQ_STATS_BACKLOG_PACKETS = 0x2 + NL80211_TXQ_STATS_COLLISIONS = 0x8 + NL80211_TXQ_STATS_DROPS = 0x4 + NL80211_TXQ_STATS_ECN_MARKS = 0x5 + NL80211_TXQ_STATS_FLOWS = 0x3 + NL80211_TXQ_STATS_MAX = 0xb + NL80211_TXQ_STATS_MAX_FLOWS = 0xb + NL80211_TXQ_STATS_OVERLIMIT = 0x6 + NL80211_TXQ_STATS_OVERMEMORY = 0x7 + NL80211_TXQ_STATS_TX_BYTES = 0x9 + NL80211_TXQ_STATS_TX_PACKETS = 0xa + NL80211_TX_RATE_AUTOMATIC = 0x0 + NL80211_TXRATE_DEFAULT_GI = 0x0 + NL80211_TX_RATE_FIXED = 0x2 + NL80211_TXRATE_FORCE_LGI = 0x2 + NL80211_TXRATE_FORCE_SGI = 0x1 + NL80211_TXRATE_GI = 0x4 + NL80211_TXRATE_HE = 0x5 + NL80211_TXRATE_HE_GI = 0x6 + NL80211_TXRATE_HE_LTF = 0x7 + NL80211_TXRATE_HT = 0x2 + NL80211_TXRATE_LEGACY = 0x1 + NL80211_TX_RATE_LIMITED = 0x1 + NL80211_TXRATE_MAX = 0x7 + NL80211_TXRATE_MCS = 0x2 + NL80211_TXRATE_VHT = 0x3 + NL80211_UNSOL_BCAST_PROBE_RESP_ATTR_INT = 0x1 + NL80211_UNSOL_BCAST_PROBE_RESP_ATTR_MAX = 0x2 + NL80211_UNSOL_BCAST_PROBE_RESP_ATTR_TMPL = 0x2 + NL80211_USER_REG_HINT_CELL_BASE = 0x1 + NL80211_USER_REG_HINT_INDOOR = 0x2 + NL80211_USER_REG_HINT_USER = 0x0 + NL80211_VENDOR_ID_IS_LINUX = 0x80000000 + NL80211_VHT_CAPABILITY_LEN = 0xc + NL80211_VHT_NSS_MAX = 0x8 + NL80211_WIPHY_NAME_MAXLEN = 0x40 + NL80211_WMMR_AIFSN = 0x3 + NL80211_WMMR_CW_MAX = 0x2 + NL80211_WMMR_CW_MIN = 0x1 + NL80211_WMMR_MAX = 0x4 + NL80211_WMMR_TXOP = 0x4 + NL80211_WOWLAN_PKTPAT_MASK = 0x1 + NL80211_WOWLAN_PKTPAT_OFFSET = 0x3 + NL80211_WOWLAN_PKTPAT_PATTERN = 0x2 + NL80211_WOWLAN_TCP_DATA_INTERVAL = 0x9 + NL80211_WOWLAN_TCP_DATA_PAYLOAD = 0x6 + NL80211_WOWLAN_TCP_DATA_PAYLOAD_SEQ = 0x7 + NL80211_WOWLAN_TCP_DATA_PAYLOAD_TOKEN = 0x8 + NL80211_WOWLAN_TCP_DST_IPV4 = 0x2 + NL80211_WOWLAN_TCP_DST_MAC = 0x3 + NL80211_WOWLAN_TCP_DST_PORT = 0x5 + NL80211_WOWLAN_TCP_SRC_IPV4 = 0x1 + NL80211_WOWLAN_TCP_SRC_PORT = 0x4 + NL80211_WOWLAN_TCP_WAKE_MASK = 0xb + NL80211_WOWLAN_TCP_WAKE_PAYLOAD = 0xa + NL80211_WOWLAN_TRIG_4WAY_HANDSHAKE = 0x8 + NL80211_WOWLAN_TRIG_ANY = 0x1 + NL80211_WOWLAN_TRIG_DISCONNECT = 0x2 + NL80211_WOWLAN_TRIG_EAP_IDENT_REQUEST = 0x7 + NL80211_WOWLAN_TRIG_GTK_REKEY_FAILURE = 0x6 + NL80211_WOWLAN_TRIG_GTK_REKEY_SUPPORTED = 0x5 + NL80211_WOWLAN_TRIG_MAGIC_PKT = 0x3 + NL80211_WOWLAN_TRIG_NET_DETECT = 0x12 + NL80211_WOWLAN_TRIG_NET_DETECT_RESULTS = 0x13 + NL80211_WOWLAN_TRIG_PKT_PATTERN = 0x4 + NL80211_WOWLAN_TRIG_RFKILL_RELEASE = 0x9 + NL80211_WOWLAN_TRIG_TCP_CONNECTION = 0xe + NL80211_WOWLAN_TRIG_WAKEUP_PKT_80211 = 0xa + NL80211_WOWLAN_TRIG_WAKEUP_PKT_80211_LEN = 0xb + NL80211_WOWLAN_TRIG_WAKEUP_PKT_8023 = 0xc + NL80211_WOWLAN_TRIG_WAKEUP_PKT_8023_LEN = 0xd + NL80211_WOWLAN_TRIG_WAKEUP_TCP_CONNLOST = 0x10 + NL80211_WOWLAN_TRIG_WAKEUP_TCP_MATCH = 0xf + NL80211_WOWLAN_TRIG_WAKEUP_TCP_NOMORETOKENS = 0x11 + NL80211_WPA_VERSION_1 = 0x1 + NL80211_WPA_VERSION_2 = 0x2 + NL80211_WPA_VERSION_3 = 0x4 +) + +const ( + FRA_UNSPEC = 0x0 + FRA_DST = 0x1 + FRA_SRC = 0x2 + FRA_IIFNAME = 0x3 + FRA_GOTO = 0x4 + FRA_UNUSED2 = 0x5 + FRA_PRIORITY = 0x6 + FRA_UNUSED3 = 0x7 + FRA_UNUSED4 = 0x8 + FRA_UNUSED5 = 0x9 + FRA_FWMARK = 0xa + FRA_FLOW = 0xb + FRA_TUN_ID = 0xc + FRA_SUPPRESS_IFGROUP = 0xd + FRA_SUPPRESS_PREFIXLEN = 0xe + FRA_TABLE = 0xf + FRA_FWMASK = 0x10 + FRA_OIFNAME = 0x11 + FRA_PAD = 0x12 + FRA_L3MDEV = 0x13 + FRA_UID_RANGE = 0x14 + FRA_PROTOCOL = 0x15 + FRA_IP_PROTO = 0x16 + FRA_SPORT_RANGE = 0x17 + FRA_DPORT_RANGE = 0x18 + FR_ACT_UNSPEC = 0x0 + FR_ACT_TO_TBL = 0x1 + FR_ACT_GOTO = 0x2 + FR_ACT_NOP = 0x3 + FR_ACT_RES3 = 0x4 + FR_ACT_RES4 = 0x5 + FR_ACT_BLACKHOLE = 0x6 + FR_ACT_UNREACHABLE = 0x7 + FR_ACT_PROHIBIT = 0x8 +) + +const ( + AUDIT_NLGRP_NONE = 0x0 + AUDIT_NLGRP_READLOG = 0x1 +) + +const ( + TUN_F_CSUM = 0x1 + TUN_F_TSO4 = 0x2 + TUN_F_TSO6 = 0x4 + TUN_F_TSO_ECN = 0x8 + TUN_F_UFO = 0x10 + TUN_F_USO4 = 0x20 + TUN_F_USO6 = 0x40 +) + +const ( + VIRTIO_NET_HDR_F_NEEDS_CSUM = 0x1 + VIRTIO_NET_HDR_F_DATA_VALID = 0x2 + VIRTIO_NET_HDR_F_RSC_INFO = 0x4 +) + +const ( + VIRTIO_NET_HDR_GSO_NONE = 0x0 + VIRTIO_NET_HDR_GSO_TCPV4 = 0x1 + VIRTIO_NET_HDR_GSO_UDP = 0x3 + VIRTIO_NET_HDR_GSO_TCPV6 = 0x4 + VIRTIO_NET_HDR_GSO_UDP_L4 = 0x5 + VIRTIO_NET_HDR_GSO_ECN = 0x80 +) + +type SchedAttr struct { + Size uint32 + Policy uint32 + Flags uint64 + Nice int32 + Priority uint32 + Runtime uint64 + Deadline uint64 + Period uint64 + Util_min uint32 + Util_max uint32 +} + +const SizeofSchedAttr = 0x38 + +type Cachestat_t struct { + Cache uint64 + Dirty uint64 + Writeback uint64 + Evicted uint64 + Recently_evicted uint64 +} +type CachestatRange struct { + Off uint64 + Len uint64 +} + +const ( + SK_MEMINFO_RMEM_ALLOC = 0x0 + SK_MEMINFO_RCVBUF = 0x1 + SK_MEMINFO_WMEM_ALLOC = 0x2 + SK_MEMINFO_SNDBUF = 0x3 + SK_MEMINFO_FWD_ALLOC = 0x4 + SK_MEMINFO_WMEM_QUEUED = 0x5 + SK_MEMINFO_OPTMEM = 0x6 + SK_MEMINFO_BACKLOG = 0x7 + SK_MEMINFO_DROPS = 0x8 + SK_MEMINFO_VARS = 0x9 + SKNLGRP_NONE = 0x0 + SKNLGRP_INET_TCP_DESTROY = 0x1 + SKNLGRP_INET_UDP_DESTROY = 0x2 + SKNLGRP_INET6_TCP_DESTROY = 0x3 + SKNLGRP_INET6_UDP_DESTROY = 0x4 + SK_DIAG_BPF_STORAGE_REQ_NONE = 0x0 + SK_DIAG_BPF_STORAGE_REQ_MAP_FD = 0x1 + SK_DIAG_BPF_STORAGE_REP_NONE = 0x0 + SK_DIAG_BPF_STORAGE = 0x1 + SK_DIAG_BPF_STORAGE_NONE = 0x0 + SK_DIAG_BPF_STORAGE_PAD = 0x1 + SK_DIAG_BPF_STORAGE_MAP_ID = 0x2 + SK_DIAG_BPF_STORAGE_MAP_VALUE = 0x3 +) + +type SockDiagReq struct { + Family uint8 + Protocol uint8 +} + +const RTM_NEWNVLAN = 0x70 diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_linux_386.go b/tests/vendor/golang.org/x/sys/unix/ztypes_linux_386.go new file mode 100644 index 000000000..fd402da43 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_linux_386.go @@ -0,0 +1,689 @@ +// cgo -godefs -objdir=/tmp/386/cgo -- -Wall -Werror -static -I/tmp/386/include -m32 linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build 386 && linux + +package unix + +const ( + SizeofPtr = 0x4 + SizeofLong = 0x4 +) + +type ( + _C_long int32 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timex struct { + Modes uint32 + Offset int32 + Freq int32 + Maxerror int32 + Esterror int32 + Status int32 + Constant int32 + Precision int32 + Tolerance int32 + Time Timeval + Tick int32 + Ppsfreq int32 + Jitter int32 + Shift int32 + Stabil int32 + Jitcnt int32 + Calcnt int32 + Errcnt int32 + Stbcnt int32 + Tai int32 + _ [44]byte +} + +type Time_t int32 + +type Tms struct { + Utime int32 + Stime int32 + Cutime int32 + Cstime int32 +} + +type Utimbuf struct { + Actime int32 + Modtime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Stat_t struct { + Dev uint64 + _ uint16 + _ uint32 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + _ uint16 + Size int64 + Blksize int32 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Ino uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [1]byte +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 +} + +type DmNameList struct { + Dev uint64 + Next uint32 +} + +const ( + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint32 +} + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type ifreq struct { + Ifrn [16]byte + Ifru [16]byte +} + +const ( + SizeofSockaddrNFCLLCP = 0x58 + SizeofIovec = 0x8 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc +) + +const ( + SizeofSockFprog = 0x8 +) + +type PtraceRegs struct { + Ebx int32 + Ecx int32 + Edx int32 + Esi int32 + Edi int32 + Ebp int32 + Eax int32 + Xds int32 + Xes int32 + Xfs int32 + Xgs int32 + Orig_eax int32 + Eip int32 + Xcs int32 + Eflags int32 + Esp int32 + Xss int32 +} + +type FdSet struct { + Bits [32]int32 +} + +type Sysinfo_t struct { + Uptime int32 + Loads [3]uint32 + Totalram uint32 + Freeram uint32 + Sharedram uint32 + Bufferram uint32 + Totalswap uint32 + Freeswap uint32 + Procs uint16 + Pad uint16 + Totalhigh uint32 + Freehigh uint32 + Unit uint32 + _ [8]int8 +} + +type Ustat_t struct { + Tfree int32 + Tinode uint32 + Fname [6]int8 + Fpack [6]int8 +} + +type EpollEvent struct { + Events uint32 + Fd int32 + Pad int32 +} + +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + +const ( + POLLRDHUP = 0x2000 +) + +type Sigset_t struct { + Val [32]uint32 +} + +const _C__NSIG = 0x41 + +const ( + SIG_BLOCK = 0x0 + SIG_UNBLOCK = 0x1 + SIG_SETMASK = 0x2 +) + +type Siginfo struct { + Signo int32 + Errno int32 + Code int32 + _ [116]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + _ [4]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + _ [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 + Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + _ [4]byte + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 + Irq_count uint64 + Irq_delay_total uint64 +} + +type cpuMask uint32 + +const ( + _NCPUBITS = 0x20 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + Data [122]byte + _ uint32 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint32 +} + +type Statfs_t struct { + Type int32 + Bsize int32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int32 + Frsize int32 + Flags int32 + Spare [4]int32 +} + +type TpacketHdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 +} + +const ( + SizeofTpacketHdr = 0x18 +) + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int32 +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 +} + +const ( + BLKPG = 0x1269 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +type LoopInfo struct { + Number int32 + Device uint16 + Inode uint32 + Rdevice uint16 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint32 + Reserved [4]int8 +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]int8 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]int8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]int8 +} + +type PPSKInfo struct { + Assert_sequence uint32 + Clear_sequence uint32 + Assert_tu PPSKTime + Clear_tu PPSKTime + Current_mode int32 +} + +const ( + PPS_GETPARAMS = 0x800470a1 + PPS_SETPARAMS = 0x400470a2 + PPS_GETCAP = 0x800470a3 + PPS_FETCH = 0xc00470a4 +) + +const ( + PIDFD_NONBLOCK = 0x800 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint16 + _ [2]uint8 + Seq uint16 + _ uint16 + _ uint32 + _ uint32 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint32 + Atime uint32 + Atime_high uint32 + Dtime uint32 + Dtime_high uint32 + Ctime uint32 + Ctime_high uint32 + Cpid int32 + Lpid int32 + Nattch uint32 + _ uint32 + _ uint32 +} diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go b/tests/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go new file mode 100644 index 000000000..eb7a5e186 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go @@ -0,0 +1,703 @@ +// cgo -godefs -objdir=/tmp/amd64/cgo -- -Wall -Werror -static -I/tmp/amd64/include -m64 linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofLong = 0x8 +) + +type ( + _C_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint32 + Uid uint32 + Gid uint32 + _ int32 + Rdev uint64 + Size int64 + Blksize int64 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ [3]int64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type DmNameList struct { + Dev uint64 + Next uint32 + Name [0]byte + _ [4]byte +} + +const ( + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint64 +} + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + +const ( + SizeofSockaddrNFCLLCP = 0x60 + SizeofIovec = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 +) + +const ( + SizeofSockFprog = 0x10 +) + +type PtraceRegs struct { + R15 uint64 + R14 uint64 + R13 uint64 + R12 uint64 + Rbp uint64 + Rbx uint64 + R11 uint64 + R10 uint64 + R9 uint64 + R8 uint64 + Rax uint64 + Rcx uint64 + Rdx uint64 + Rsi uint64 + Rdi uint64 + Orig_rax uint64 + Rip uint64 + Cs uint64 + Eflags uint64 + Rsp uint64 + Ss uint64 + Fs_base uint64 + Gs_base uint64 + Ds uint64 + Es uint64 + Fs uint64 + Gs uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]int8 + _ [4]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + Fd int32 + Pad int32 +} + +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + +const ( + POLLRDHUP = 0x2000 +) + +type Sigset_t struct { + Val [16]uint64 +} + +const _C__NSIG = 0x41 + +const ( + SIG_BLOCK = 0x0 + SIG_UNBLOCK = 0x1 + SIG_SETMASK = 0x2 +) + +type Siginfo struct { + Signo int32 + Errno int32 + Code int32 + _ int32 + _ [112]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 + Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 + Irq_count uint64 + Irq_delay_total uint64 +} + +type cpuMask uint64 + +const ( + _NCPUBITS = 0x40 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + Data [118]byte + _ uint64 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +const ( + SizeofTpacketHdr = 0x20 +) + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +type LoopInfo struct { + Number int32 + Device uint64 + Inode uint64 + Rdevice uint64 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]int8 + _ [4]byte +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]int8 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]int8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]int8 +} + +type PPSKInfo struct { + Assert_sequence uint32 + Clear_sequence uint32 + Assert_tu PPSKTime + Clear_tu PPSKTime + Current_mode int32 + _ [4]byte +} + +const ( + PPS_GETPARAMS = 0x800870a1 + PPS_SETPARAMS = 0x400870a2 + PPS_GETCAP = 0x800870a3 + PPS_FETCH = 0xc00870a4 +) + +const ( + PIDFD_NONBLOCK = 0x800 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + _ [0]uint8 + Seq uint16 + _ uint16 + _ uint64 + _ uint64 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint64 + Atime int64 + Dtime int64 + Ctime int64 + Cpid int32 + Lpid int32 + Nattch uint64 + _ uint64 + _ uint64 +} diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go b/tests/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go new file mode 100644 index 000000000..d78ac108b --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go @@ -0,0 +1,683 @@ +// cgo -godefs -objdir=/tmp/arm/cgo -- -Wall -Werror -static -I/tmp/arm/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm && linux + +package unix + +const ( + SizeofPtr = 0x4 + SizeofLong = 0x4 +) + +type ( + _C_long int32 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timex struct { + Modes uint32 + Offset int32 + Freq int32 + Maxerror int32 + Esterror int32 + Status int32 + Constant int32 + Precision int32 + Tolerance int32 + Time Timeval + Tick int32 + Ppsfreq int32 + Jitter int32 + Shift int32 + Stabil int32 + Jitcnt int32 + Calcnt int32 + Errcnt int32 + Stbcnt int32 + Tai int32 + _ [44]byte +} + +type Time_t int32 + +type Tms struct { + Utime int32 + Stime int32 + Cutime int32 + Cstime int32 +} + +type Utimbuf struct { + Actime int32 + Modtime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Stat_t struct { + Dev uint64 + _ uint16 + _ uint32 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + _ uint16 + _ [4]byte + Size int64 + Blksize int32 + _ [4]byte + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Ino uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]uint8 + _ [5]byte +} + +type Flock_t struct { + Type int16 + Whence int16 + _ [4]byte + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type DmNameList struct { + Dev uint64 + Next uint32 + Name [0]byte + _ [4]byte +} + +const ( + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint32 +} + +type RawSockaddr struct { + Family uint16 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]uint8 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type ifreq struct { + Ifrn [16]byte + Ifru [16]byte +} + +const ( + SizeofSockaddrNFCLLCP = 0x58 + SizeofIovec = 0x8 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc +) + +const ( + SizeofSockFprog = 0x8 +) + +type PtraceRegs struct { + Uregs [18]uint32 +} + +type FdSet struct { + Bits [32]int32 +} + +type Sysinfo_t struct { + Uptime int32 + Loads [3]uint32 + Totalram uint32 + Freeram uint32 + Sharedram uint32 + Bufferram uint32 + Totalswap uint32 + Freeswap uint32 + Procs uint16 + Pad uint16 + Totalhigh uint32 + Freehigh uint32 + Unit uint32 + _ [8]uint8 +} + +type Ustat_t struct { + Tfree int32 + Tinode uint32 + Fname [6]uint8 + Fpack [6]uint8 +} + +type EpollEvent struct { + Events uint32 + PadFd int32 + Fd int32 + Pad int32 +} + +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + +const ( + POLLRDHUP = 0x2000 +) + +type Sigset_t struct { + Val [32]uint32 +} + +const _C__NSIG = 0x41 + +const ( + SIG_BLOCK = 0x0 + SIG_UNBLOCK = 0x1 + SIG_SETMASK = 0x2 +) + +type Siginfo struct { + Signo int32 + Errno int32 + Code int32 + _ [116]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + _ [4]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]uint8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + _ [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 + Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + _ [4]byte + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 + Irq_count uint64 + Irq_delay_total uint64 +} + +type cpuMask uint32 + +const ( + _NCPUBITS = 0x20 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + Data [122]byte + _ uint32 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint32 +} + +type Statfs_t struct { + Type int32 + Bsize int32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int32 + Frsize int32 + Flags int32 + Spare [4]int32 + _ [4]byte +} + +type TpacketHdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 +} + +const ( + SizeofTpacketHdr = 0x18 +) + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int32 +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 +) + +type CryptoUserAlg struct { + Name [64]uint8 + Driver_name [64]uint8 + Module_name [64]uint8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]uint8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]uint8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]uint8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]uint8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]uint8 +} + +type CryptoReportLarval struct { + Type [64]uint8 +} + +type CryptoReportHash struct { + Type [64]uint8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]uint8 +} + +type CryptoReportRNG struct { + Type [64]uint8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]uint8 +} + +type CryptoReportKPP struct { + Type [64]uint8 +} + +type CryptoReportAcomp struct { + Type [64]uint8 +} + +type LoopInfo struct { + Number int32 + Device uint16 + Inode uint32 + Rdevice uint16 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint32 + Reserved [4]uint8 +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]uint8 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]uint8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]uint8 +} + +type PPSKInfo struct { + Assert_sequence uint32 + Clear_sequence uint32 + Assert_tu PPSKTime + Clear_tu PPSKTime + Current_mode int32 + _ [4]byte +} + +const ( + PPS_GETPARAMS = 0x800470a1 + PPS_SETPARAMS = 0x400470a2 + PPS_GETCAP = 0x800470a3 + PPS_FETCH = 0xc00470a4 +) + +const ( + PIDFD_NONBLOCK = 0x800 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint16 + _ [2]uint8 + Seq uint16 + _ uint16 + _ uint32 + _ uint32 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint32 + Atime uint32 + Atime_high uint32 + Dtime uint32 + Dtime_high uint32 + Ctime uint32 + Ctime_high uint32 + Cpid int32 + Lpid int32 + Nattch uint32 + _ uint32 + _ uint32 +} diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go b/tests/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go new file mode 100644 index 000000000..cd06d47f1 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go @@ -0,0 +1,682 @@ +// cgo -godefs -objdir=/tmp/arm64/cgo -- -Wall -Werror -static -I/tmp/arm64/include -fsigned-char linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm64 && linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofLong = 0x8 +) + +type ( + _C_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Stat_t struct { + Dev uint64 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + _ uint64 + Size int64 + Blksize int32 + _ int32 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ [2]int32 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type DmNameList struct { + Dev uint64 + Next uint32 + Name [0]byte + _ [4]byte +} + +const ( + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint64 +} + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + +const ( + SizeofSockaddrNFCLLCP = 0x60 + SizeofIovec = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 +) + +const ( + SizeofSockFprog = 0x10 +) + +type PtraceRegs struct { + Regs [31]uint64 + Sp uint64 + Pc uint64 + Pstate uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]int8 + _ [4]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + PadFd int32 + Fd int32 + Pad int32 +} + +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + +const ( + POLLRDHUP = 0x2000 +) + +type Sigset_t struct { + Val [16]uint64 +} + +const _C__NSIG = 0x41 + +const ( + SIG_BLOCK = 0x0 + SIG_UNBLOCK = 0x1 + SIG_SETMASK = 0x2 +) + +type Siginfo struct { + Signo int32 + Errno int32 + Code int32 + _ int32 + _ [112]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 + Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 + Irq_count uint64 + Irq_delay_total uint64 +} + +type cpuMask uint64 + +const ( + _NCPUBITS = 0x40 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + Data [118]byte + _ uint64 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +const ( + SizeofTpacketHdr = 0x20 +) + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint64 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]int8 + _ [4]byte +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]int8 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]int8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]int8 +} + +type PPSKInfo struct { + Assert_sequence uint32 + Clear_sequence uint32 + Assert_tu PPSKTime + Clear_tu PPSKTime + Current_mode int32 + _ [4]byte +} + +const ( + PPS_GETPARAMS = 0x800870a1 + PPS_SETPARAMS = 0x400870a2 + PPS_GETCAP = 0x800870a3 + PPS_FETCH = 0xc00870a4 +) + +const ( + PIDFD_NONBLOCK = 0x800 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + _ [0]uint8 + Seq uint16 + _ uint16 + _ uint64 + _ uint64 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint64 + Atime int64 + Dtime int64 + Ctime int64 + Cpid int32 + Lpid int32 + Nattch uint64 + _ uint64 + _ uint64 +} diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go b/tests/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go new file mode 100644 index 000000000..2f28fe26c --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go @@ -0,0 +1,683 @@ +// cgo -godefs -objdir=/tmp/loong64/cgo -- -Wall -Werror -static -I/tmp/loong64/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build loong64 && linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofLong = 0x8 +) + +type ( + _C_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Stat_t struct { + Dev uint64 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + _ uint64 + Size int64 + Blksize int32 + _ int32 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ [2]int32 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type DmNameList struct { + Dev uint64 + Next uint32 + Name [0]byte + _ [4]byte +} + +const ( + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint64 +} + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + +const ( + SizeofSockaddrNFCLLCP = 0x60 + SizeofIovec = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 +) + +const ( + SizeofSockFprog = 0x10 +) + +type PtraceRegs struct { + Regs [32]uint64 + Orig_a0 uint64 + Era uint64 + Badv uint64 + Reserved [10]uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]int8 + _ [4]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + +const ( + POLLRDHUP = 0x2000 +) + +type Sigset_t struct { + Val [16]uint64 +} + +const _C__NSIG = 0x41 + +const ( + SIG_BLOCK = 0x0 + SIG_UNBLOCK = 0x1 + SIG_SETMASK = 0x2 +) + +type Siginfo struct { + Signo int32 + Errno int32 + Code int32 + _ int32 + _ [112]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 + Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 + Irq_count uint64 + Irq_delay_total uint64 +} + +type cpuMask uint64 + +const ( + _NCPUBITS = 0x40 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + Data [118]byte + _ uint64 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +const ( + SizeofTpacketHdr = 0x20 +) + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint64 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]int8 + _ [4]byte +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]int8 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]int8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]int8 +} + +type PPSKInfo struct { + Assert_sequence uint32 + Clear_sequence uint32 + Assert_tu PPSKTime + Clear_tu PPSKTime + Current_mode int32 + _ [4]byte +} + +const ( + PPS_GETPARAMS = 0x800870a1 + PPS_SETPARAMS = 0x400870a2 + PPS_GETCAP = 0x800870a3 + PPS_FETCH = 0xc00870a4 +) + +const ( + PIDFD_NONBLOCK = 0x800 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + _ [0]uint8 + Seq uint16 + _ uint16 + _ uint64 + _ uint64 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint64 + Atime int64 + Dtime int64 + Ctime int64 + Cpid int32 + Lpid int32 + Nattch uint64 + _ uint64 + _ uint64 +} diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go b/tests/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go new file mode 100644 index 000000000..71d6cac2f --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go @@ -0,0 +1,688 @@ +// cgo -godefs -objdir=/tmp/mips/cgo -- -Wall -Werror -static -I/tmp/mips/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build mips && linux + +package unix + +const ( + SizeofPtr = 0x4 + SizeofLong = 0x4 +) + +type ( + _C_long int32 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timex struct { + Modes uint32 + Offset int32 + Freq int32 + Maxerror int32 + Esterror int32 + Status int32 + Constant int32 + Precision int32 + Tolerance int32 + Time Timeval + Tick int32 + Ppsfreq int32 + Jitter int32 + Shift int32 + Stabil int32 + Jitcnt int32 + Calcnt int32 + Errcnt int32 + Stbcnt int32 + Tai int32 + _ [44]byte +} + +type Time_t int32 + +type Tms struct { + Utime int32 + Stime int32 + Cutime int32 + Cstime int32 +} + +type Utimbuf struct { + Actime int32 + Modtime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Stat_t struct { + Dev uint32 + Pad1 [3]int32 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint32 + Pad2 [3]int32 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize int32 + Pad4 int32 + Blocks int64 + Pad5 [14]int32 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Flock_t struct { + Type int16 + Whence int16 + _ [4]byte + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type DmNameList struct { + Dev uint64 + Next uint32 + Name [0]byte + _ [4]byte +} + +const ( + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint32 +} + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type ifreq struct { + Ifrn [16]byte + Ifru [16]byte +} + +const ( + SizeofSockaddrNFCLLCP = 0x58 + SizeofIovec = 0x8 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc +) + +const ( + SizeofSockFprog = 0x8 +) + +type PtraceRegs struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +type FdSet struct { + Bits [32]int32 +} + +type Sysinfo_t struct { + Uptime int32 + Loads [3]uint32 + Totalram uint32 + Freeram uint32 + Sharedram uint32 + Bufferram uint32 + Totalswap uint32 + Freeswap uint32 + Procs uint16 + Pad uint16 + Totalhigh uint32 + Freehigh uint32 + Unit uint32 + _ [8]int8 +} + +type Ustat_t struct { + Tfree int32 + Tinode uint32 + Fname [6]int8 + Fpack [6]int8 +} + +type EpollEvent struct { + Events uint32 + PadFd int32 + Fd int32 + Pad int32 +} + +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + +const ( + POLLRDHUP = 0x2000 +) + +type Sigset_t struct { + Val [32]uint32 +} + +const _C__NSIG = 0x80 + +const ( + SIG_BLOCK = 0x1 + SIG_UNBLOCK = 0x2 + SIG_SETMASK = 0x3 +) + +type Siginfo struct { + Signo int32 + Code int32 + Errno int32 + _ [116]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [23]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + _ [4]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + _ [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 + Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + _ [4]byte + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 + Irq_count uint64 + Irq_delay_total uint64 +} + +type cpuMask uint32 + +const ( + _NCPUBITS = 0x20 +) + +const ( + CBitFieldMaskBit0 = 0x8000000000000000 + CBitFieldMaskBit1 = 0x4000000000000000 + CBitFieldMaskBit2 = 0x2000000000000000 + CBitFieldMaskBit3 = 0x1000000000000000 + CBitFieldMaskBit4 = 0x800000000000000 + CBitFieldMaskBit5 = 0x400000000000000 + CBitFieldMaskBit6 = 0x200000000000000 + CBitFieldMaskBit7 = 0x100000000000000 + CBitFieldMaskBit8 = 0x80000000000000 + CBitFieldMaskBit9 = 0x40000000000000 + CBitFieldMaskBit10 = 0x20000000000000 + CBitFieldMaskBit11 = 0x10000000000000 + CBitFieldMaskBit12 = 0x8000000000000 + CBitFieldMaskBit13 = 0x4000000000000 + CBitFieldMaskBit14 = 0x2000000000000 + CBitFieldMaskBit15 = 0x1000000000000 + CBitFieldMaskBit16 = 0x800000000000 + CBitFieldMaskBit17 = 0x400000000000 + CBitFieldMaskBit18 = 0x200000000000 + CBitFieldMaskBit19 = 0x100000000000 + CBitFieldMaskBit20 = 0x80000000000 + CBitFieldMaskBit21 = 0x40000000000 + CBitFieldMaskBit22 = 0x20000000000 + CBitFieldMaskBit23 = 0x10000000000 + CBitFieldMaskBit24 = 0x8000000000 + CBitFieldMaskBit25 = 0x4000000000 + CBitFieldMaskBit26 = 0x2000000000 + CBitFieldMaskBit27 = 0x1000000000 + CBitFieldMaskBit28 = 0x800000000 + CBitFieldMaskBit29 = 0x400000000 + CBitFieldMaskBit30 = 0x200000000 + CBitFieldMaskBit31 = 0x100000000 + CBitFieldMaskBit32 = 0x80000000 + CBitFieldMaskBit33 = 0x40000000 + CBitFieldMaskBit34 = 0x20000000 + CBitFieldMaskBit35 = 0x10000000 + CBitFieldMaskBit36 = 0x8000000 + CBitFieldMaskBit37 = 0x4000000 + CBitFieldMaskBit38 = 0x2000000 + CBitFieldMaskBit39 = 0x1000000 + CBitFieldMaskBit40 = 0x800000 + CBitFieldMaskBit41 = 0x400000 + CBitFieldMaskBit42 = 0x200000 + CBitFieldMaskBit43 = 0x100000 + CBitFieldMaskBit44 = 0x80000 + CBitFieldMaskBit45 = 0x40000 + CBitFieldMaskBit46 = 0x20000 + CBitFieldMaskBit47 = 0x10000 + CBitFieldMaskBit48 = 0x8000 + CBitFieldMaskBit49 = 0x4000 + CBitFieldMaskBit50 = 0x2000 + CBitFieldMaskBit51 = 0x1000 + CBitFieldMaskBit52 = 0x800 + CBitFieldMaskBit53 = 0x400 + CBitFieldMaskBit54 = 0x200 + CBitFieldMaskBit55 = 0x100 + CBitFieldMaskBit56 = 0x80 + CBitFieldMaskBit57 = 0x40 + CBitFieldMaskBit58 = 0x20 + CBitFieldMaskBit59 = 0x10 + CBitFieldMaskBit60 = 0x8 + CBitFieldMaskBit61 = 0x4 + CBitFieldMaskBit62 = 0x2 + CBitFieldMaskBit63 = 0x1 +) + +type SockaddrStorage struct { + Family uint16 + Data [122]byte + _ uint32 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint32 +} + +type Statfs_t struct { + Type int32 + Bsize int32 + Frsize int32 + _ [4]byte + Blocks uint64 + Bfree uint64 + Files uint64 + Ffree uint64 + Bavail uint64 + Fsid Fsid + Namelen int32 + Flags int32 + Spare [5]int32 + _ [4]byte +} + +type TpacketHdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 +} + +const ( + SizeofTpacketHdr = 0x18 +) + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int32 +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint32 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint32 + Reserved [4]int8 +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]int8 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]int8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]int8 +} + +type PPSKInfo struct { + Assert_sequence uint32 + Clear_sequence uint32 + Assert_tu PPSKTime + Clear_tu PPSKTime + Current_mode int32 + _ [4]byte +} + +const ( + PPS_GETPARAMS = 0x400470a1 + PPS_SETPARAMS = 0x800470a2 + PPS_GETCAP = 0x400470a3 + PPS_FETCH = 0xc00470a4 +) + +const ( + PIDFD_NONBLOCK = 0x80 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + _ [0]uint8 + Seq uint16 + _ uint16 + _ uint32 + _ uint32 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint32 + Atime uint32 + Dtime uint32 + Ctime uint32 + Cpid int32 + Lpid int32 + Nattch uint32 + Atime_high uint16 + Dtime_high uint16 + Ctime_high uint16 + _ uint16 +} diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go b/tests/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go new file mode 100644 index 000000000..8596d4535 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go @@ -0,0 +1,685 @@ +// cgo -godefs -objdir=/tmp/mips64/cgo -- -Wall -Werror -static -I/tmp/mips64/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build mips64 && linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofLong = 0x8 +) + +type ( + _C_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Stat_t struct { + Dev uint32 + Pad1 [3]uint32 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint32 + Pad2 [3]uint32 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize uint32 + Pad4 uint32 + Blocks int64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type DmNameList struct { + Dev uint64 + Next uint32 + Name [0]byte + _ [4]byte +} + +const ( + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint64 +} + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + +const ( + SizeofSockaddrNFCLLCP = 0x60 + SizeofIovec = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 +) + +const ( + SizeofSockFprog = 0x10 +) + +type PtraceRegs struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]int8 + _ [4]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + +const ( + POLLRDHUP = 0x2000 +) + +type Sigset_t struct { + Val [16]uint64 +} + +const _C__NSIG = 0x80 + +const ( + SIG_BLOCK = 0x1 + SIG_UNBLOCK = 0x2 + SIG_SETMASK = 0x3 +) + +type Siginfo struct { + Signo int32 + Code int32 + Errno int32 + _ int32 + _ [112]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [23]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 + Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 + Irq_count uint64 + Irq_delay_total uint64 +} + +type cpuMask uint64 + +const ( + _NCPUBITS = 0x40 +) + +const ( + CBitFieldMaskBit0 = 0x8000000000000000 + CBitFieldMaskBit1 = 0x4000000000000000 + CBitFieldMaskBit2 = 0x2000000000000000 + CBitFieldMaskBit3 = 0x1000000000000000 + CBitFieldMaskBit4 = 0x800000000000000 + CBitFieldMaskBit5 = 0x400000000000000 + CBitFieldMaskBit6 = 0x200000000000000 + CBitFieldMaskBit7 = 0x100000000000000 + CBitFieldMaskBit8 = 0x80000000000000 + CBitFieldMaskBit9 = 0x40000000000000 + CBitFieldMaskBit10 = 0x20000000000000 + CBitFieldMaskBit11 = 0x10000000000000 + CBitFieldMaskBit12 = 0x8000000000000 + CBitFieldMaskBit13 = 0x4000000000000 + CBitFieldMaskBit14 = 0x2000000000000 + CBitFieldMaskBit15 = 0x1000000000000 + CBitFieldMaskBit16 = 0x800000000000 + CBitFieldMaskBit17 = 0x400000000000 + CBitFieldMaskBit18 = 0x200000000000 + CBitFieldMaskBit19 = 0x100000000000 + CBitFieldMaskBit20 = 0x80000000000 + CBitFieldMaskBit21 = 0x40000000000 + CBitFieldMaskBit22 = 0x20000000000 + CBitFieldMaskBit23 = 0x10000000000 + CBitFieldMaskBit24 = 0x8000000000 + CBitFieldMaskBit25 = 0x4000000000 + CBitFieldMaskBit26 = 0x2000000000 + CBitFieldMaskBit27 = 0x1000000000 + CBitFieldMaskBit28 = 0x800000000 + CBitFieldMaskBit29 = 0x400000000 + CBitFieldMaskBit30 = 0x200000000 + CBitFieldMaskBit31 = 0x100000000 + CBitFieldMaskBit32 = 0x80000000 + CBitFieldMaskBit33 = 0x40000000 + CBitFieldMaskBit34 = 0x20000000 + CBitFieldMaskBit35 = 0x10000000 + CBitFieldMaskBit36 = 0x8000000 + CBitFieldMaskBit37 = 0x4000000 + CBitFieldMaskBit38 = 0x2000000 + CBitFieldMaskBit39 = 0x1000000 + CBitFieldMaskBit40 = 0x800000 + CBitFieldMaskBit41 = 0x400000 + CBitFieldMaskBit42 = 0x200000 + CBitFieldMaskBit43 = 0x100000 + CBitFieldMaskBit44 = 0x80000 + CBitFieldMaskBit45 = 0x40000 + CBitFieldMaskBit46 = 0x20000 + CBitFieldMaskBit47 = 0x10000 + CBitFieldMaskBit48 = 0x8000 + CBitFieldMaskBit49 = 0x4000 + CBitFieldMaskBit50 = 0x2000 + CBitFieldMaskBit51 = 0x1000 + CBitFieldMaskBit52 = 0x800 + CBitFieldMaskBit53 = 0x400 + CBitFieldMaskBit54 = 0x200 + CBitFieldMaskBit55 = 0x100 + CBitFieldMaskBit56 = 0x80 + CBitFieldMaskBit57 = 0x40 + CBitFieldMaskBit58 = 0x20 + CBitFieldMaskBit59 = 0x10 + CBitFieldMaskBit60 = 0x8 + CBitFieldMaskBit61 = 0x4 + CBitFieldMaskBit62 = 0x2 + CBitFieldMaskBit63 = 0x1 +) + +type SockaddrStorage struct { + Family uint16 + Data [118]byte + _ uint64 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Frsize int64 + Blocks uint64 + Bfree uint64 + Files uint64 + Ffree uint64 + Bavail uint64 + Fsid Fsid + Namelen int64 + Flags int64 + Spare [5]int64 +} + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +const ( + SizeofTpacketHdr = 0x20 +) + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint64 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]int8 + _ [4]byte +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]int8 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]int8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]int8 +} + +type PPSKInfo struct { + Assert_sequence uint32 + Clear_sequence uint32 + Assert_tu PPSKTime + Clear_tu PPSKTime + Current_mode int32 + _ [4]byte +} + +const ( + PPS_GETPARAMS = 0x400870a1 + PPS_SETPARAMS = 0x800870a2 + PPS_GETCAP = 0x400870a3 + PPS_FETCH = 0xc00870a4 +) + +const ( + PIDFD_NONBLOCK = 0x80 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + _ [0]uint8 + Seq uint16 + _ uint16 + _ uint64 + _ uint64 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint64 + Atime int64 + Dtime int64 + Ctime int64 + Cpid int32 + Lpid int32 + Nattch uint64 + _ uint64 + _ uint64 +} diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go b/tests/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go new file mode 100644 index 000000000..cd60ea186 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go @@ -0,0 +1,685 @@ +// cgo -godefs -objdir=/tmp/mips64le/cgo -- -Wall -Werror -static -I/tmp/mips64le/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build mips64le && linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofLong = 0x8 +) + +type ( + _C_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Stat_t struct { + Dev uint32 + Pad1 [3]uint32 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint32 + Pad2 [3]uint32 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize uint32 + Pad4 uint32 + Blocks int64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type DmNameList struct { + Dev uint64 + Next uint32 + Name [0]byte + _ [4]byte +} + +const ( + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint64 +} + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + +const ( + SizeofSockaddrNFCLLCP = 0x60 + SizeofIovec = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 +) + +const ( + SizeofSockFprog = 0x10 +) + +type PtraceRegs struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]int8 + _ [4]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + +const ( + POLLRDHUP = 0x2000 +) + +type Sigset_t struct { + Val [16]uint64 +} + +const _C__NSIG = 0x80 + +const ( + SIG_BLOCK = 0x1 + SIG_UNBLOCK = 0x2 + SIG_SETMASK = 0x3 +) + +type Siginfo struct { + Signo int32 + Code int32 + Errno int32 + _ int32 + _ [112]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [23]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 + Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 + Irq_count uint64 + Irq_delay_total uint64 +} + +type cpuMask uint64 + +const ( + _NCPUBITS = 0x40 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + Data [118]byte + _ uint64 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Frsize int64 + Blocks uint64 + Bfree uint64 + Files uint64 + Ffree uint64 + Bavail uint64 + Fsid Fsid + Namelen int64 + Flags int64 + Spare [5]int64 +} + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +const ( + SizeofTpacketHdr = 0x20 +) + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint64 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]int8 + _ [4]byte +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]int8 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]int8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]int8 +} + +type PPSKInfo struct { + Assert_sequence uint32 + Clear_sequence uint32 + Assert_tu PPSKTime + Clear_tu PPSKTime + Current_mode int32 + _ [4]byte +} + +const ( + PPS_GETPARAMS = 0x400870a1 + PPS_SETPARAMS = 0x800870a2 + PPS_GETCAP = 0x400870a3 + PPS_FETCH = 0xc00870a4 +) + +const ( + PIDFD_NONBLOCK = 0x80 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + _ [0]uint8 + Seq uint16 + _ uint16 + _ uint64 + _ uint64 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint64 + Atime int64 + Dtime int64 + Ctime int64 + Cpid int32 + Lpid int32 + Nattch uint64 + _ uint64 + _ uint64 +} diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go b/tests/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go new file mode 100644 index 000000000..b0ae420c4 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go @@ -0,0 +1,688 @@ +// cgo -godefs -objdir=/tmp/mipsle/cgo -- -Wall -Werror -static -I/tmp/mipsle/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build mipsle && linux + +package unix + +const ( + SizeofPtr = 0x4 + SizeofLong = 0x4 +) + +type ( + _C_long int32 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timex struct { + Modes uint32 + Offset int32 + Freq int32 + Maxerror int32 + Esterror int32 + Status int32 + Constant int32 + Precision int32 + Tolerance int32 + Time Timeval + Tick int32 + Ppsfreq int32 + Jitter int32 + Shift int32 + Stabil int32 + Jitcnt int32 + Calcnt int32 + Errcnt int32 + Stbcnt int32 + Tai int32 + _ [44]byte +} + +type Time_t int32 + +type Tms struct { + Utime int32 + Stime int32 + Cutime int32 + Cstime int32 +} + +type Utimbuf struct { + Actime int32 + Modtime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Stat_t struct { + Dev uint32 + Pad1 [3]int32 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint32 + Pad2 [3]int32 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize int32 + Pad4 int32 + Blocks int64 + Pad5 [14]int32 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Flock_t struct { + Type int16 + Whence int16 + _ [4]byte + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type DmNameList struct { + Dev uint64 + Next uint32 + Name [0]byte + _ [4]byte +} + +const ( + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint32 +} + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type ifreq struct { + Ifrn [16]byte + Ifru [16]byte +} + +const ( + SizeofSockaddrNFCLLCP = 0x58 + SizeofIovec = 0x8 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc +) + +const ( + SizeofSockFprog = 0x8 +) + +type PtraceRegs struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +type FdSet struct { + Bits [32]int32 +} + +type Sysinfo_t struct { + Uptime int32 + Loads [3]uint32 + Totalram uint32 + Freeram uint32 + Sharedram uint32 + Bufferram uint32 + Totalswap uint32 + Freeswap uint32 + Procs uint16 + Pad uint16 + Totalhigh uint32 + Freehigh uint32 + Unit uint32 + _ [8]int8 +} + +type Ustat_t struct { + Tfree int32 + Tinode uint32 + Fname [6]int8 + Fpack [6]int8 +} + +type EpollEvent struct { + Events uint32 + PadFd int32 + Fd int32 + Pad int32 +} + +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + +const ( + POLLRDHUP = 0x2000 +) + +type Sigset_t struct { + Val [32]uint32 +} + +const _C__NSIG = 0x80 + +const ( + SIG_BLOCK = 0x1 + SIG_UNBLOCK = 0x2 + SIG_SETMASK = 0x3 +) + +type Siginfo struct { + Signo int32 + Code int32 + Errno int32 + _ [116]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [23]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + _ [4]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + _ [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 + Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + _ [4]byte + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 + Irq_count uint64 + Irq_delay_total uint64 +} + +type cpuMask uint32 + +const ( + _NCPUBITS = 0x20 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + Data [122]byte + _ uint32 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint32 +} + +type Statfs_t struct { + Type int32 + Bsize int32 + Frsize int32 + _ [4]byte + Blocks uint64 + Bfree uint64 + Files uint64 + Ffree uint64 + Bavail uint64 + Fsid Fsid + Namelen int32 + Flags int32 + Spare [5]int32 + _ [4]byte +} + +type TpacketHdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 +} + +const ( + SizeofTpacketHdr = 0x18 +) + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int32 +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint32 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint32 + Reserved [4]int8 +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]int8 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]int8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]int8 +} + +type PPSKInfo struct { + Assert_sequence uint32 + Clear_sequence uint32 + Assert_tu PPSKTime + Clear_tu PPSKTime + Current_mode int32 + _ [4]byte +} + +const ( + PPS_GETPARAMS = 0x400470a1 + PPS_SETPARAMS = 0x800470a2 + PPS_GETCAP = 0x400470a3 + PPS_FETCH = 0xc00470a4 +) + +const ( + PIDFD_NONBLOCK = 0x80 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + _ [0]uint8 + Seq uint16 + _ uint16 + _ uint32 + _ uint32 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint32 + Atime uint32 + Dtime uint32 + Ctime uint32 + Cpid int32 + Lpid int32 + Nattch uint32 + Atime_high uint16 + Dtime_high uint16 + Ctime_high uint16 + _ uint16 +} diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go b/tests/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go new file mode 100644 index 000000000..835972875 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go @@ -0,0 +1,696 @@ +// cgo -godefs -objdir=/tmp/ppc/cgo -- -Wall -Werror -static -I/tmp/ppc/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc && linux + +package unix + +const ( + SizeofPtr = 0x4 + SizeofLong = 0x4 +) + +type ( + _C_long int32 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timex struct { + Modes uint32 + Offset int32 + Freq int32 + Maxerror int32 + Esterror int32 + Status int32 + Constant int32 + Precision int32 + Tolerance int32 + Time Timeval + Tick int32 + Ppsfreq int32 + Jitter int32 + Shift int32 + Stabil int32 + Jitcnt int32 + Calcnt int32 + Errcnt int32 + Stbcnt int32 + Tai int32 + _ [44]byte +} + +type Time_t int32 + +type Tms struct { + Utime int32 + Stime int32 + Cutime int32 + Cstime int32 +} + +type Utimbuf struct { + Actime int32 + Modtime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Stat_t struct { + Dev uint64 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + _ uint16 + _ [4]byte + Size int64 + Blksize int32 + _ [4]byte + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ uint32 + _ uint32 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]uint8 + _ [5]byte +} + +type Flock_t struct { + Type int16 + Whence int16 + _ [4]byte + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type DmNameList struct { + Dev uint64 + Next uint32 + Name [0]byte + _ [4]byte +} + +const ( + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint32 +} + +type RawSockaddr struct { + Family uint16 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]uint8 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type ifreq struct { + Ifrn [16]byte + Ifru [16]byte +} + +const ( + SizeofSockaddrNFCLLCP = 0x58 + SizeofIovec = 0x8 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc +) + +const ( + SizeofSockFprog = 0x8 +) + +type PtraceRegs struct { + Gpr [32]uint32 + Nip uint32 + Msr uint32 + Orig_gpr3 uint32 + Ctr uint32 + Link uint32 + Xer uint32 + Ccr uint32 + Mq uint32 + Trap uint32 + Dar uint32 + Dsisr uint32 + Result uint32 +} + +type FdSet struct { + Bits [32]int32 +} + +type Sysinfo_t struct { + Uptime int32 + Loads [3]uint32 + Totalram uint32 + Freeram uint32 + Sharedram uint32 + Bufferram uint32 + Totalswap uint32 + Freeswap uint32 + Procs uint16 + Pad uint16 + Totalhigh uint32 + Freehigh uint32 + Unit uint32 + _ [8]uint8 +} + +type Ustat_t struct { + Tfree int32 + Tinode uint32 + Fname [6]uint8 + Fpack [6]uint8 +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + +const ( + POLLRDHUP = 0x2000 +) + +type Sigset_t struct { + Val [32]uint32 +} + +const _C__NSIG = 0x41 + +const ( + SIG_BLOCK = 0x0 + SIG_UNBLOCK = 0x1 + SIG_SETMASK = 0x2 +) + +type Siginfo struct { + Signo int32 + Errno int32 + Code int32 + _ [116]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [19]uint8 + Line uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + _ [4]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]uint8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + _ [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 + Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + _ [4]byte + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 + Irq_count uint64 + Irq_delay_total uint64 +} + +type cpuMask uint32 + +const ( + _NCPUBITS = 0x20 +) + +const ( + CBitFieldMaskBit0 = 0x8000000000000000 + CBitFieldMaskBit1 = 0x4000000000000000 + CBitFieldMaskBit2 = 0x2000000000000000 + CBitFieldMaskBit3 = 0x1000000000000000 + CBitFieldMaskBit4 = 0x800000000000000 + CBitFieldMaskBit5 = 0x400000000000000 + CBitFieldMaskBit6 = 0x200000000000000 + CBitFieldMaskBit7 = 0x100000000000000 + CBitFieldMaskBit8 = 0x80000000000000 + CBitFieldMaskBit9 = 0x40000000000000 + CBitFieldMaskBit10 = 0x20000000000000 + CBitFieldMaskBit11 = 0x10000000000000 + CBitFieldMaskBit12 = 0x8000000000000 + CBitFieldMaskBit13 = 0x4000000000000 + CBitFieldMaskBit14 = 0x2000000000000 + CBitFieldMaskBit15 = 0x1000000000000 + CBitFieldMaskBit16 = 0x800000000000 + CBitFieldMaskBit17 = 0x400000000000 + CBitFieldMaskBit18 = 0x200000000000 + CBitFieldMaskBit19 = 0x100000000000 + CBitFieldMaskBit20 = 0x80000000000 + CBitFieldMaskBit21 = 0x40000000000 + CBitFieldMaskBit22 = 0x20000000000 + CBitFieldMaskBit23 = 0x10000000000 + CBitFieldMaskBit24 = 0x8000000000 + CBitFieldMaskBit25 = 0x4000000000 + CBitFieldMaskBit26 = 0x2000000000 + CBitFieldMaskBit27 = 0x1000000000 + CBitFieldMaskBit28 = 0x800000000 + CBitFieldMaskBit29 = 0x400000000 + CBitFieldMaskBit30 = 0x200000000 + CBitFieldMaskBit31 = 0x100000000 + CBitFieldMaskBit32 = 0x80000000 + CBitFieldMaskBit33 = 0x40000000 + CBitFieldMaskBit34 = 0x20000000 + CBitFieldMaskBit35 = 0x10000000 + CBitFieldMaskBit36 = 0x8000000 + CBitFieldMaskBit37 = 0x4000000 + CBitFieldMaskBit38 = 0x2000000 + CBitFieldMaskBit39 = 0x1000000 + CBitFieldMaskBit40 = 0x800000 + CBitFieldMaskBit41 = 0x400000 + CBitFieldMaskBit42 = 0x200000 + CBitFieldMaskBit43 = 0x100000 + CBitFieldMaskBit44 = 0x80000 + CBitFieldMaskBit45 = 0x40000 + CBitFieldMaskBit46 = 0x20000 + CBitFieldMaskBit47 = 0x10000 + CBitFieldMaskBit48 = 0x8000 + CBitFieldMaskBit49 = 0x4000 + CBitFieldMaskBit50 = 0x2000 + CBitFieldMaskBit51 = 0x1000 + CBitFieldMaskBit52 = 0x800 + CBitFieldMaskBit53 = 0x400 + CBitFieldMaskBit54 = 0x200 + CBitFieldMaskBit55 = 0x100 + CBitFieldMaskBit56 = 0x80 + CBitFieldMaskBit57 = 0x40 + CBitFieldMaskBit58 = 0x20 + CBitFieldMaskBit59 = 0x10 + CBitFieldMaskBit60 = 0x8 + CBitFieldMaskBit61 = 0x4 + CBitFieldMaskBit62 = 0x2 + CBitFieldMaskBit63 = 0x1 +) + +type SockaddrStorage struct { + Family uint16 + Data [122]byte + _ uint32 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint32 +} + +type Statfs_t struct { + Type int32 + Bsize int32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int32 + Frsize int32 + Flags int32 + Spare [4]int32 + _ [4]byte +} + +type TpacketHdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 +} + +const ( + SizeofTpacketHdr = 0x18 +) + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int32 +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 +) + +type CryptoUserAlg struct { + Name [64]uint8 + Driver_name [64]uint8 + Module_name [64]uint8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]uint8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]uint8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]uint8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]uint8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]uint8 +} + +type CryptoReportLarval struct { + Type [64]uint8 +} + +type CryptoReportHash struct { + Type [64]uint8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]uint8 +} + +type CryptoReportRNG struct { + Type [64]uint8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]uint8 +} + +type CryptoReportKPP struct { + Type [64]uint8 +} + +type CryptoReportAcomp struct { + Type [64]uint8 +} + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint32 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint32 + Reserved [4]uint8 +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]uint8 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]uint8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]uint8 +} + +type PPSKInfo struct { + Assert_sequence uint32 + Clear_sequence uint32 + Assert_tu PPSKTime + Clear_tu PPSKTime + Current_mode int32 + _ [4]byte +} + +const ( + PPS_GETPARAMS = 0x400470a1 + PPS_SETPARAMS = 0x800470a2 + PPS_GETCAP = 0x400470a3 + PPS_FETCH = 0xc00470a4 +) + +const ( + PIDFD_NONBLOCK = 0x800 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + Seq uint32 + _ uint32 + _ uint64 + _ uint64 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Atime_high uint32 + Atime uint32 + Dtime_high uint32 + Dtime uint32 + Ctime_high uint32 + Ctime uint32 + _ uint32 + Segsz uint32 + Cpid int32 + Lpid int32 + Nattch uint32 + _ uint32 + _ uint32 + _ [4]byte +} diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go b/tests/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go new file mode 100644 index 000000000..69eb6a5c6 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go @@ -0,0 +1,691 @@ +// cgo -godefs -objdir=/tmp/ppc64/cgo -- -Wall -Werror -static -I/tmp/ppc64/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc64 && linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofLong = 0x8 +) + +type ( + _C_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint32 + Uid uint32 + Gid uint32 + _ int32 + Rdev uint64 + Size int64 + Blksize int64 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ uint64 + _ uint64 + _ uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]uint8 + _ [5]byte +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type DmNameList struct { + Dev uint64 + Next uint32 + Name [0]byte + _ [4]byte +} + +const ( + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint64 +} + +type RawSockaddr struct { + Family uint16 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]uint8 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + +const ( + SizeofSockaddrNFCLLCP = 0x60 + SizeofIovec = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 +) + +const ( + SizeofSockFprog = 0x10 +) + +type PtraceRegs struct { + Gpr [32]uint64 + Nip uint64 + Msr uint64 + Orig_gpr3 uint64 + Ctr uint64 + Link uint64 + Xer uint64 + Ccr uint64 + Softe uint64 + Trap uint64 + Dar uint64 + Dsisr uint64 + Result uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]uint8 + _ [4]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]uint8 + Fpack [6]uint8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + +const ( + POLLRDHUP = 0x2000 +) + +type Sigset_t struct { + Val [16]uint64 +} + +const _C__NSIG = 0x41 + +const ( + SIG_BLOCK = 0x0 + SIG_UNBLOCK = 0x1 + SIG_SETMASK = 0x2 +) + +type Siginfo struct { + Signo int32 + Errno int32 + Code int32 + _ int32 + _ [112]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [19]uint8 + Line uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]uint8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 + Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 + Irq_count uint64 + Irq_delay_total uint64 +} + +type cpuMask uint64 + +const ( + _NCPUBITS = 0x40 +) + +const ( + CBitFieldMaskBit0 = 0x8000000000000000 + CBitFieldMaskBit1 = 0x4000000000000000 + CBitFieldMaskBit2 = 0x2000000000000000 + CBitFieldMaskBit3 = 0x1000000000000000 + CBitFieldMaskBit4 = 0x800000000000000 + CBitFieldMaskBit5 = 0x400000000000000 + CBitFieldMaskBit6 = 0x200000000000000 + CBitFieldMaskBit7 = 0x100000000000000 + CBitFieldMaskBit8 = 0x80000000000000 + CBitFieldMaskBit9 = 0x40000000000000 + CBitFieldMaskBit10 = 0x20000000000000 + CBitFieldMaskBit11 = 0x10000000000000 + CBitFieldMaskBit12 = 0x8000000000000 + CBitFieldMaskBit13 = 0x4000000000000 + CBitFieldMaskBit14 = 0x2000000000000 + CBitFieldMaskBit15 = 0x1000000000000 + CBitFieldMaskBit16 = 0x800000000000 + CBitFieldMaskBit17 = 0x400000000000 + CBitFieldMaskBit18 = 0x200000000000 + CBitFieldMaskBit19 = 0x100000000000 + CBitFieldMaskBit20 = 0x80000000000 + CBitFieldMaskBit21 = 0x40000000000 + CBitFieldMaskBit22 = 0x20000000000 + CBitFieldMaskBit23 = 0x10000000000 + CBitFieldMaskBit24 = 0x8000000000 + CBitFieldMaskBit25 = 0x4000000000 + CBitFieldMaskBit26 = 0x2000000000 + CBitFieldMaskBit27 = 0x1000000000 + CBitFieldMaskBit28 = 0x800000000 + CBitFieldMaskBit29 = 0x400000000 + CBitFieldMaskBit30 = 0x200000000 + CBitFieldMaskBit31 = 0x100000000 + CBitFieldMaskBit32 = 0x80000000 + CBitFieldMaskBit33 = 0x40000000 + CBitFieldMaskBit34 = 0x20000000 + CBitFieldMaskBit35 = 0x10000000 + CBitFieldMaskBit36 = 0x8000000 + CBitFieldMaskBit37 = 0x4000000 + CBitFieldMaskBit38 = 0x2000000 + CBitFieldMaskBit39 = 0x1000000 + CBitFieldMaskBit40 = 0x800000 + CBitFieldMaskBit41 = 0x400000 + CBitFieldMaskBit42 = 0x200000 + CBitFieldMaskBit43 = 0x100000 + CBitFieldMaskBit44 = 0x80000 + CBitFieldMaskBit45 = 0x40000 + CBitFieldMaskBit46 = 0x20000 + CBitFieldMaskBit47 = 0x10000 + CBitFieldMaskBit48 = 0x8000 + CBitFieldMaskBit49 = 0x4000 + CBitFieldMaskBit50 = 0x2000 + CBitFieldMaskBit51 = 0x1000 + CBitFieldMaskBit52 = 0x800 + CBitFieldMaskBit53 = 0x400 + CBitFieldMaskBit54 = 0x200 + CBitFieldMaskBit55 = 0x100 + CBitFieldMaskBit56 = 0x80 + CBitFieldMaskBit57 = 0x40 + CBitFieldMaskBit58 = 0x20 + CBitFieldMaskBit59 = 0x10 + CBitFieldMaskBit60 = 0x8 + CBitFieldMaskBit61 = 0x4 + CBitFieldMaskBit62 = 0x2 + CBitFieldMaskBit63 = 0x1 +) + +type SockaddrStorage struct { + Family uint16 + Data [118]byte + _ uint64 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +const ( + SizeofTpacketHdr = 0x20 +) + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 +) + +type CryptoUserAlg struct { + Name [64]uint8 + Driver_name [64]uint8 + Module_name [64]uint8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]uint8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]uint8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]uint8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]uint8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]uint8 +} + +type CryptoReportLarval struct { + Type [64]uint8 +} + +type CryptoReportHash struct { + Type [64]uint8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]uint8 +} + +type CryptoReportRNG struct { + Type [64]uint8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]uint8 +} + +type CryptoReportKPP struct { + Type [64]uint8 +} + +type CryptoReportAcomp struct { + Type [64]uint8 +} + +type LoopInfo struct { + Number int32 + Device uint64 + Inode uint64 + Rdevice uint64 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]uint8 + _ [4]byte +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]uint8 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]uint8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]uint8 +} + +type PPSKInfo struct { + Assert_sequence uint32 + Clear_sequence uint32 + Assert_tu PPSKTime + Clear_tu PPSKTime + Current_mode int32 + _ [4]byte +} + +const ( + PPS_GETPARAMS = 0x400870a1 + PPS_SETPARAMS = 0x800870a2 + PPS_GETCAP = 0x400870a3 + PPS_FETCH = 0xc00870a4 +) + +const ( + PIDFD_NONBLOCK = 0x800 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + Seq uint32 + _ uint32 + _ uint64 + _ uint64 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Atime int64 + Dtime int64 + Ctime int64 + Segsz uint64 + Cpid int32 + Lpid int32 + Nattch uint64 + _ uint64 + _ uint64 +} diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go b/tests/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go new file mode 100644 index 000000000..5f583cb62 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go @@ -0,0 +1,691 @@ +// cgo -godefs -objdir=/tmp/ppc64le/cgo -- -Wall -Werror -static -I/tmp/ppc64le/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc64le && linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofLong = 0x8 +) + +type ( + _C_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint32 + Uid uint32 + Gid uint32 + _ int32 + Rdev uint64 + Size int64 + Blksize int64 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ uint64 + _ uint64 + _ uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]uint8 + _ [5]byte +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type DmNameList struct { + Dev uint64 + Next uint32 + Name [0]byte + _ [4]byte +} + +const ( + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint64 +} + +type RawSockaddr struct { + Family uint16 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]uint8 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + +const ( + SizeofSockaddrNFCLLCP = 0x60 + SizeofIovec = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 +) + +const ( + SizeofSockFprog = 0x10 +) + +type PtraceRegs struct { + Gpr [32]uint64 + Nip uint64 + Msr uint64 + Orig_gpr3 uint64 + Ctr uint64 + Link uint64 + Xer uint64 + Ccr uint64 + Softe uint64 + Trap uint64 + Dar uint64 + Dsisr uint64 + Result uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]uint8 + _ [4]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]uint8 + Fpack [6]uint8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + +const ( + POLLRDHUP = 0x2000 +) + +type Sigset_t struct { + Val [16]uint64 +} + +const _C__NSIG = 0x41 + +const ( + SIG_BLOCK = 0x0 + SIG_UNBLOCK = 0x1 + SIG_SETMASK = 0x2 +) + +type Siginfo struct { + Signo int32 + Errno int32 + Code int32 + _ int32 + _ [112]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [19]uint8 + Line uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]uint8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 + Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 + Irq_count uint64 + Irq_delay_total uint64 +} + +type cpuMask uint64 + +const ( + _NCPUBITS = 0x40 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + Data [118]byte + _ uint64 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +const ( + SizeofTpacketHdr = 0x20 +) + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 +) + +type CryptoUserAlg struct { + Name [64]uint8 + Driver_name [64]uint8 + Module_name [64]uint8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]uint8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]uint8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]uint8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]uint8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]uint8 +} + +type CryptoReportLarval struct { + Type [64]uint8 +} + +type CryptoReportHash struct { + Type [64]uint8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]uint8 +} + +type CryptoReportRNG struct { + Type [64]uint8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]uint8 +} + +type CryptoReportKPP struct { + Type [64]uint8 +} + +type CryptoReportAcomp struct { + Type [64]uint8 +} + +type LoopInfo struct { + Number int32 + Device uint64 + Inode uint64 + Rdevice uint64 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]uint8 + _ [4]byte +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]uint8 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]uint8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]uint8 +} + +type PPSKInfo struct { + Assert_sequence uint32 + Clear_sequence uint32 + Assert_tu PPSKTime + Clear_tu PPSKTime + Current_mode int32 + _ [4]byte +} + +const ( + PPS_GETPARAMS = 0x400870a1 + PPS_SETPARAMS = 0x800870a2 + PPS_GETCAP = 0x400870a3 + PPS_FETCH = 0xc00870a4 +) + +const ( + PIDFD_NONBLOCK = 0x800 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + Seq uint32 + _ uint32 + _ uint64 + _ uint64 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Atime int64 + Dtime int64 + Ctime int64 + Segsz uint64 + Cpid int32 + Lpid int32 + Nattch uint64 + _ uint64 + _ uint64 +} diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go b/tests/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go new file mode 100644 index 000000000..ad05b51a6 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go @@ -0,0 +1,770 @@ +// cgo -godefs -objdir=/tmp/riscv64/cgo -- -Wall -Werror -static -I/tmp/riscv64/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build riscv64 && linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofLong = 0x8 +) + +type ( + _C_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Stat_t struct { + Dev uint64 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + _ uint64 + Size int64 + Blksize int32 + _ int32 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ [2]int32 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]uint8 + _ [5]byte +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type DmNameList struct { + Dev uint64 + Next uint32 + Name [0]byte + _ [4]byte +} + +const ( + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint64 +} + +type RawSockaddr struct { + Family uint16 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]uint8 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + +const ( + SizeofSockaddrNFCLLCP = 0x60 + SizeofIovec = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 +) + +const ( + SizeofSockFprog = 0x10 +) + +type PtraceRegs struct { + Pc uint64 + Ra uint64 + Sp uint64 + Gp uint64 + Tp uint64 + T0 uint64 + T1 uint64 + T2 uint64 + S0 uint64 + S1 uint64 + A0 uint64 + A1 uint64 + A2 uint64 + A3 uint64 + A4 uint64 + A5 uint64 + A6 uint64 + A7 uint64 + S2 uint64 + S3 uint64 + S4 uint64 + S5 uint64 + S6 uint64 + S7 uint64 + S8 uint64 + S9 uint64 + S10 uint64 + S11 uint64 + T3 uint64 + T4 uint64 + T5 uint64 + T6 uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]uint8 + _ [4]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]uint8 + Fpack [6]uint8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + +const ( + POLLRDHUP = 0x2000 +) + +type Sigset_t struct { + Val [16]uint64 +} + +const _C__NSIG = 0x41 + +const ( + SIG_BLOCK = 0x0 + SIG_UNBLOCK = 0x1 + SIG_SETMASK = 0x2 +) + +type Siginfo struct { + Signo int32 + Errno int32 + Code int32 + _ int32 + _ [112]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]uint8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 + Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 + Irq_count uint64 + Irq_delay_total uint64 +} + +type cpuMask uint64 + +const ( + _NCPUBITS = 0x40 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + Data [118]byte + _ uint64 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +const ( + SizeofTpacketHdr = 0x20 +) + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 +) + +type CryptoUserAlg struct { + Name [64]uint8 + Driver_name [64]uint8 + Module_name [64]uint8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]uint8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]uint8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]uint8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]uint8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]uint8 +} + +type CryptoReportLarval struct { + Type [64]uint8 +} + +type CryptoReportHash struct { + Type [64]uint8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]uint8 +} + +type CryptoReportRNG struct { + Type [64]uint8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]uint8 +} + +type CryptoReportKPP struct { + Type [64]uint8 +} + +type CryptoReportAcomp struct { + Type [64]uint8 +} + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint64 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]uint8 + _ [4]byte +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]uint8 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]uint8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]uint8 +} + +type PPSKInfo struct { + Assert_sequence uint32 + Clear_sequence uint32 + Assert_tu PPSKTime + Clear_tu PPSKTime + Current_mode int32 + _ [4]byte +} + +const ( + PPS_GETPARAMS = 0x800870a1 + PPS_SETPARAMS = 0x400870a2 + PPS_GETCAP = 0x800870a3 + PPS_FETCH = 0xc00870a4 +) + +const ( + PIDFD_NONBLOCK = 0x800 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + _ [0]uint8 + Seq uint16 + _ uint16 + _ uint64 + _ uint64 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint64 + Atime int64 + Dtime int64 + Ctime int64 + Cpid int32 + Lpid int32 + Nattch uint64 + _ uint64 + _ uint64 +} + +type RISCVHWProbePairs struct { + Key int64 + Value uint64 +} + +const ( + RISCV_HWPROBE_KEY_MVENDORID = 0x0 + RISCV_HWPROBE_KEY_MARCHID = 0x1 + RISCV_HWPROBE_KEY_MIMPID = 0x2 + RISCV_HWPROBE_KEY_BASE_BEHAVIOR = 0x3 + RISCV_HWPROBE_BASE_BEHAVIOR_IMA = 0x1 + RISCV_HWPROBE_KEY_IMA_EXT_0 = 0x4 + RISCV_HWPROBE_IMA_FD = 0x1 + RISCV_HWPROBE_IMA_C = 0x2 + RISCV_HWPROBE_IMA_V = 0x4 + RISCV_HWPROBE_EXT_ZBA = 0x8 + RISCV_HWPROBE_EXT_ZBB = 0x10 + RISCV_HWPROBE_EXT_ZBS = 0x20 + RISCV_HWPROBE_EXT_ZICBOZ = 0x40 + RISCV_HWPROBE_EXT_ZBC = 0x80 + RISCV_HWPROBE_EXT_ZBKB = 0x100 + RISCV_HWPROBE_EXT_ZBKC = 0x200 + RISCV_HWPROBE_EXT_ZBKX = 0x400 + RISCV_HWPROBE_EXT_ZKND = 0x800 + RISCV_HWPROBE_EXT_ZKNE = 0x1000 + RISCV_HWPROBE_EXT_ZKNH = 0x2000 + RISCV_HWPROBE_EXT_ZKSED = 0x4000 + RISCV_HWPROBE_EXT_ZKSH = 0x8000 + RISCV_HWPROBE_EXT_ZKT = 0x10000 + RISCV_HWPROBE_EXT_ZVBB = 0x20000 + RISCV_HWPROBE_EXT_ZVBC = 0x40000 + RISCV_HWPROBE_EXT_ZVKB = 0x80000 + RISCV_HWPROBE_EXT_ZVKG = 0x100000 + RISCV_HWPROBE_EXT_ZVKNED = 0x200000 + RISCV_HWPROBE_EXT_ZVKNHA = 0x400000 + RISCV_HWPROBE_EXT_ZVKNHB = 0x800000 + RISCV_HWPROBE_EXT_ZVKSED = 0x1000000 + RISCV_HWPROBE_EXT_ZVKSH = 0x2000000 + RISCV_HWPROBE_EXT_ZVKT = 0x4000000 + RISCV_HWPROBE_EXT_ZFH = 0x8000000 + RISCV_HWPROBE_EXT_ZFHMIN = 0x10000000 + RISCV_HWPROBE_EXT_ZIHINTNTL = 0x20000000 + RISCV_HWPROBE_EXT_ZVFH = 0x40000000 + RISCV_HWPROBE_EXT_ZVFHMIN = 0x80000000 + RISCV_HWPROBE_EXT_ZFA = 0x100000000 + RISCV_HWPROBE_EXT_ZTSO = 0x200000000 + RISCV_HWPROBE_EXT_ZACAS = 0x400000000 + RISCV_HWPROBE_EXT_ZICOND = 0x800000000 + RISCV_HWPROBE_EXT_ZIHINTPAUSE = 0x1000000000 + RISCV_HWPROBE_KEY_CPUPERF_0 = 0x5 + RISCV_HWPROBE_MISALIGNED_UNKNOWN = 0x0 + RISCV_HWPROBE_MISALIGNED_EMULATED = 0x1 + RISCV_HWPROBE_MISALIGNED_SLOW = 0x2 + RISCV_HWPROBE_MISALIGNED_FAST = 0x3 + RISCV_HWPROBE_MISALIGNED_UNSUPPORTED = 0x4 + RISCV_HWPROBE_MISALIGNED_MASK = 0x7 + RISCV_HWPROBE_KEY_ZICBOZ_BLOCK_SIZE = 0x6 + RISCV_HWPROBE_WHICH_CPUS = 0x1 +) diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go b/tests/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go new file mode 100644 index 000000000..cf3ce9003 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go @@ -0,0 +1,705 @@ +// cgo -godefs -objdir=/tmp/s390x/cgo -- -Wall -Werror -static -I/tmp/s390x/include -fsigned-char linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build s390x && linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofLong = 0x8 +) + +type ( + _C_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint32 + Uid uint32 + Gid uint32 + _ int32 + Rdev uint64 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize int64 + Blocks int64 + _ [3]int64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type DmNameList struct { + Dev uint64 + Next uint32 + Name [0]byte + _ [4]byte +} + +const ( + FADV_DONTNEED = 0x6 + FADV_NOREUSE = 0x7 +) + +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint64 +} + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + +const ( + SizeofSockaddrNFCLLCP = 0x60 + SizeofIovec = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 +) + +const ( + SizeofSockFprog = 0x10 +) + +type PtraceRegs struct { + Psw PtracePsw + Gprs [16]uint64 + Acrs [16]uint32 + Orig_gpr2 uint64 + Fp_regs PtraceFpregs + Per_info PtracePer + Ieee_instruction_pointer uint64 +} + +type PtracePsw struct { + Mask uint64 + Addr uint64 +} + +type PtraceFpregs struct { + Fpc uint32 + Fprs [16]float64 +} + +type PtracePer struct { + Control_regs [3]uint64 + _ [8]byte + Starting_addr uint64 + Ending_addr uint64 + Perc_atmid uint16 + Address uint64 + Access_id uint8 + _ [7]byte +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]int8 + _ [4]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + +const ( + POLLRDHUP = 0x2000 +) + +type Sigset_t struct { + Val [16]uint64 +} + +const _C__NSIG = 0x41 + +const ( + SIG_BLOCK = 0x0 + SIG_UNBLOCK = 0x1 + SIG_SETMASK = 0x2 +) + +type Siginfo struct { + Signo int32 + Errno int32 + Code int32 + _ int32 + _ [112]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 + Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 + Irq_count uint64 + Irq_delay_total uint64 +} + +type cpuMask uint64 + +const ( + _NCPUBITS = 0x40 +) + +const ( + CBitFieldMaskBit0 = 0x8000000000000000 + CBitFieldMaskBit1 = 0x4000000000000000 + CBitFieldMaskBit2 = 0x2000000000000000 + CBitFieldMaskBit3 = 0x1000000000000000 + CBitFieldMaskBit4 = 0x800000000000000 + CBitFieldMaskBit5 = 0x400000000000000 + CBitFieldMaskBit6 = 0x200000000000000 + CBitFieldMaskBit7 = 0x100000000000000 + CBitFieldMaskBit8 = 0x80000000000000 + CBitFieldMaskBit9 = 0x40000000000000 + CBitFieldMaskBit10 = 0x20000000000000 + CBitFieldMaskBit11 = 0x10000000000000 + CBitFieldMaskBit12 = 0x8000000000000 + CBitFieldMaskBit13 = 0x4000000000000 + CBitFieldMaskBit14 = 0x2000000000000 + CBitFieldMaskBit15 = 0x1000000000000 + CBitFieldMaskBit16 = 0x800000000000 + CBitFieldMaskBit17 = 0x400000000000 + CBitFieldMaskBit18 = 0x200000000000 + CBitFieldMaskBit19 = 0x100000000000 + CBitFieldMaskBit20 = 0x80000000000 + CBitFieldMaskBit21 = 0x40000000000 + CBitFieldMaskBit22 = 0x20000000000 + CBitFieldMaskBit23 = 0x10000000000 + CBitFieldMaskBit24 = 0x8000000000 + CBitFieldMaskBit25 = 0x4000000000 + CBitFieldMaskBit26 = 0x2000000000 + CBitFieldMaskBit27 = 0x1000000000 + CBitFieldMaskBit28 = 0x800000000 + CBitFieldMaskBit29 = 0x400000000 + CBitFieldMaskBit30 = 0x200000000 + CBitFieldMaskBit31 = 0x100000000 + CBitFieldMaskBit32 = 0x80000000 + CBitFieldMaskBit33 = 0x40000000 + CBitFieldMaskBit34 = 0x20000000 + CBitFieldMaskBit35 = 0x10000000 + CBitFieldMaskBit36 = 0x8000000 + CBitFieldMaskBit37 = 0x4000000 + CBitFieldMaskBit38 = 0x2000000 + CBitFieldMaskBit39 = 0x1000000 + CBitFieldMaskBit40 = 0x800000 + CBitFieldMaskBit41 = 0x400000 + CBitFieldMaskBit42 = 0x200000 + CBitFieldMaskBit43 = 0x100000 + CBitFieldMaskBit44 = 0x80000 + CBitFieldMaskBit45 = 0x40000 + CBitFieldMaskBit46 = 0x20000 + CBitFieldMaskBit47 = 0x10000 + CBitFieldMaskBit48 = 0x8000 + CBitFieldMaskBit49 = 0x4000 + CBitFieldMaskBit50 = 0x2000 + CBitFieldMaskBit51 = 0x1000 + CBitFieldMaskBit52 = 0x800 + CBitFieldMaskBit53 = 0x400 + CBitFieldMaskBit54 = 0x200 + CBitFieldMaskBit55 = 0x100 + CBitFieldMaskBit56 = 0x80 + CBitFieldMaskBit57 = 0x40 + CBitFieldMaskBit58 = 0x20 + CBitFieldMaskBit59 = 0x10 + CBitFieldMaskBit60 = 0x8 + CBitFieldMaskBit61 = 0x4 + CBitFieldMaskBit62 = 0x2 + CBitFieldMaskBit63 = 0x1 +) + +type SockaddrStorage struct { + Family uint16 + Data [118]byte + _ uint64 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type Statfs_t struct { + Type uint32 + Bsize uint32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen uint32 + Frsize uint32 + Flags uint32 + Spare [4]uint32 + _ [4]byte +} + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +const ( + SizeofTpacketHdr = 0x20 +) + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +type LoopInfo struct { + Number int32 + Device uint16 + Inode uint64 + Rdevice uint16 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]int8 + _ [4]byte +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]int8 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]int8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]int8 +} + +type PPSKInfo struct { + Assert_sequence uint32 + Clear_sequence uint32 + Assert_tu PPSKTime + Clear_tu PPSKTime + Current_mode int32 + _ [4]byte +} + +const ( + PPS_GETPARAMS = 0x800870a1 + PPS_SETPARAMS = 0x400870a2 + PPS_GETCAP = 0x800870a3 + PPS_FETCH = 0xc00870a4 +) + +const ( + PIDFD_NONBLOCK = 0x800 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + _ uint16 + Seq uint16 + _ uint64 + _ uint64 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint64 + Atime int64 + Dtime int64 + Ctime int64 + Cpid int32 + Lpid int32 + Nattch uint64 + _ uint64 + _ uint64 +} diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go b/tests/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go new file mode 100644 index 000000000..590b56739 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go @@ -0,0 +1,686 @@ +// cgo -godefs -objdir=/tmp/sparc64/cgo -- -Wall -Werror -static -I/tmp/sparc64/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build sparc64 && linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofLong = 0x8 +) + +type ( + _C_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int32 + _ [4]byte +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Stat_t struct { + Dev uint64 + _ uint16 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + _ uint16 + Size int64 + Blksize int64 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ uint64 + _ uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ int16 + _ [2]byte +} + +type DmNameList struct { + Dev uint64 + Next uint32 + Name [0]byte + _ [4]byte +} + +const ( + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint64 +} + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + +const ( + SizeofSockaddrNFCLLCP = 0x60 + SizeofIovec = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 +) + +const ( + SizeofSockFprog = 0x10 +) + +type PtraceRegs struct { + Regs [16]uint64 + Tstate uint64 + Tpc uint64 + Tnpc uint64 + Y uint32 + Magic uint32 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]int8 + _ [4]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +const ( + OPEN_TREE_CLOEXEC = 0x400000 +) + +const ( + POLLRDHUP = 0x800 +) + +type Sigset_t struct { + Val [16]uint64 +} + +const _C__NSIG = 0x41 + +const ( + SIG_BLOCK = 0x1 + SIG_UNBLOCK = 0x2 + SIG_SETMASK = 0x4 +) + +type Siginfo struct { + Signo int32 + Errno int32 + Code int32 + _ int32 + _ [112]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 + Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 + Irq_count uint64 + Irq_delay_total uint64 +} + +type cpuMask uint64 + +const ( + _NCPUBITS = 0x40 +) + +const ( + CBitFieldMaskBit0 = 0x8000000000000000 + CBitFieldMaskBit1 = 0x4000000000000000 + CBitFieldMaskBit2 = 0x2000000000000000 + CBitFieldMaskBit3 = 0x1000000000000000 + CBitFieldMaskBit4 = 0x800000000000000 + CBitFieldMaskBit5 = 0x400000000000000 + CBitFieldMaskBit6 = 0x200000000000000 + CBitFieldMaskBit7 = 0x100000000000000 + CBitFieldMaskBit8 = 0x80000000000000 + CBitFieldMaskBit9 = 0x40000000000000 + CBitFieldMaskBit10 = 0x20000000000000 + CBitFieldMaskBit11 = 0x10000000000000 + CBitFieldMaskBit12 = 0x8000000000000 + CBitFieldMaskBit13 = 0x4000000000000 + CBitFieldMaskBit14 = 0x2000000000000 + CBitFieldMaskBit15 = 0x1000000000000 + CBitFieldMaskBit16 = 0x800000000000 + CBitFieldMaskBit17 = 0x400000000000 + CBitFieldMaskBit18 = 0x200000000000 + CBitFieldMaskBit19 = 0x100000000000 + CBitFieldMaskBit20 = 0x80000000000 + CBitFieldMaskBit21 = 0x40000000000 + CBitFieldMaskBit22 = 0x20000000000 + CBitFieldMaskBit23 = 0x10000000000 + CBitFieldMaskBit24 = 0x8000000000 + CBitFieldMaskBit25 = 0x4000000000 + CBitFieldMaskBit26 = 0x2000000000 + CBitFieldMaskBit27 = 0x1000000000 + CBitFieldMaskBit28 = 0x800000000 + CBitFieldMaskBit29 = 0x400000000 + CBitFieldMaskBit30 = 0x200000000 + CBitFieldMaskBit31 = 0x100000000 + CBitFieldMaskBit32 = 0x80000000 + CBitFieldMaskBit33 = 0x40000000 + CBitFieldMaskBit34 = 0x20000000 + CBitFieldMaskBit35 = 0x10000000 + CBitFieldMaskBit36 = 0x8000000 + CBitFieldMaskBit37 = 0x4000000 + CBitFieldMaskBit38 = 0x2000000 + CBitFieldMaskBit39 = 0x1000000 + CBitFieldMaskBit40 = 0x800000 + CBitFieldMaskBit41 = 0x400000 + CBitFieldMaskBit42 = 0x200000 + CBitFieldMaskBit43 = 0x100000 + CBitFieldMaskBit44 = 0x80000 + CBitFieldMaskBit45 = 0x40000 + CBitFieldMaskBit46 = 0x20000 + CBitFieldMaskBit47 = 0x10000 + CBitFieldMaskBit48 = 0x8000 + CBitFieldMaskBit49 = 0x4000 + CBitFieldMaskBit50 = 0x2000 + CBitFieldMaskBit51 = 0x1000 + CBitFieldMaskBit52 = 0x800 + CBitFieldMaskBit53 = 0x400 + CBitFieldMaskBit54 = 0x200 + CBitFieldMaskBit55 = 0x100 + CBitFieldMaskBit56 = 0x80 + CBitFieldMaskBit57 = 0x40 + CBitFieldMaskBit58 = 0x20 + CBitFieldMaskBit59 = 0x10 + CBitFieldMaskBit60 = 0x8 + CBitFieldMaskBit61 = 0x4 + CBitFieldMaskBit62 = 0x2 + CBitFieldMaskBit63 = 0x1 +) + +type SockaddrStorage struct { + Family uint16 + Data [118]byte + _ uint64 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +const ( + SizeofTpacketHdr = 0x20 +) + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint64 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]int8 + _ [4]byte +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]int8 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]int8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]int8 +} + +type PPSKInfo struct { + Assert_sequence uint32 + Clear_sequence uint32 + Assert_tu PPSKTime + Clear_tu PPSKTime + Current_mode int32 + _ [4]byte +} + +const ( + PPS_GETPARAMS = 0x400870a1 + PPS_SETPARAMS = 0x800870a2 + PPS_GETCAP = 0x400870a3 + PPS_FETCH = 0xc00870a4 +) + +const ( + PIDFD_NONBLOCK = 0x4000 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + _ uint16 + Seq uint16 + _ uint64 + _ uint64 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Atime int64 + Dtime int64 + Ctime int64 + Segsz uint64 + Cpid int32 + Lpid int32 + Nattch uint64 + _ uint64 + _ uint64 +} diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go b/tests/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go new file mode 100644 index 000000000..f22e7947d --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go @@ -0,0 +1,585 @@ +// cgo -godefs types_netbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build 386 && netbsd + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int32 +} + +type Timeval struct { + Sec int64 + Usec int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Mode uint32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + Spare [2]uint32 +} + +type Statfs_t [0]byte + +type Statvfs_t struct { + Flag uint32 + Bsize uint32 + Frsize uint32 + Iosize uint32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Bresvd uint64 + Files uint64 + Ffree uint64 + Favail uint64 + Fresvd uint64 + Syncreads uint64 + Syncwrites uint64 + Asyncreads uint64 + Asyncwrites uint64 + Fsidx Fsid + Fsid uint32 + Namemax uint32 + Owner uint32 + Spare [4]uint32 + Fstypename [32]byte + Mntonname [1024]byte + Mntfromname [1024]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [512]int8 + Pad_cgo_0 [3]byte +} + +type Fsid struct { + X__fsid_val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + ST_WAIT = 0x1 + ST_NOWAIT = 0x2 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofLinger = 0x8 + SizeofIovec = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint32 + Filter uint32 + Flags uint32 + Fflags uint32 + Data int64 + Udata int32 +} + +type FdSet struct { + Bits [8]uint32 +} + +const ( + SizeofIfMsghdr = 0x98 + SizeofIfData = 0x84 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x78 + SizeofRtMetrics = 0x50 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Pad_cgo_0 [2]byte + Data IfData + Pad_cgo_1 [4]byte +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Pad_cgo_0 [1]byte + Link_state int32 + Mtu uint64 + Metric uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Lastchange Timespec +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Metric int32 + Index uint16 + Pad_cgo_0 [6]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Pad_cgo_0 [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits int32 + Pad_cgo_1 [4]byte + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Hopcount uint64 + Recvpipe uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Expire int64 + Pksent int64 +} + +type Mclpool [0]byte + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x80 + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint64 + Drop uint64 + Capt uint64 + Padding [13]uint64 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Pad_cgo_0 [2]byte +} + +type BpfTimeval struct { + Sec int32 + Usec int32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Ptmget struct { + Cfd int32 + Sfd int32 + Cn [1024]byte + Sn [1024]byte +} + +const ( + AT_FDCWD = -0x64 + AT_EACCESS = 0x100 + AT_SYMLINK_NOFOLLOW = 0x200 + AT_SYMLINK_FOLLOW = 0x400 + AT_REMOVEDIR = 0x800 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sysctlnode struct { + Flags uint32 + Num int32 + Name [32]int8 + Ver uint32 + X__rsvd uint32 + Un [16]byte + X_sysctl_size [8]byte + X_sysctl_func [8]byte + X_sysctl_parent [8]byte + X_sysctl_desc [8]byte +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofUvmexp = 0x278 + +type Uvmexp struct { + Pagesize int64 + Pagemask int64 + Pageshift int64 + Npages int64 + Free int64 + Active int64 + Inactive int64 + Paging int64 + Wired int64 + Zeropages int64 + Reserve_pagedaemon int64 + Reserve_kernel int64 + Freemin int64 + Freetarg int64 + Inactarg int64 + Wiredmax int64 + Nswapdev int64 + Swpages int64 + Swpginuse int64 + Swpgonly int64 + Nswget int64 + Unused1 int64 + Cpuhit int64 + Cpumiss int64 + Faults int64 + Traps int64 + Intrs int64 + Swtch int64 + Softs int64 + Syscalls int64 + Pageins int64 + Swapins int64 + Swapouts int64 + Pgswapin int64 + Pgswapout int64 + Forks int64 + Forks_ppwait int64 + Forks_sharevm int64 + Pga_zerohit int64 + Pga_zeromiss int64 + Zeroaborts int64 + Fltnoram int64 + Fltnoanon int64 + Fltpgwait int64 + Fltpgrele int64 + Fltrelck int64 + Fltrelckok int64 + Fltanget int64 + Fltanretry int64 + Fltamcopy int64 + Fltnamap int64 + Fltnomap int64 + Fltlget int64 + Fltget int64 + Flt_anon int64 + Flt_acow int64 + Flt_obj int64 + Flt_prcopy int64 + Flt_przero int64 + Pdwoke int64 + Pdrevs int64 + Unused4 int64 + Pdfreed int64 + Pdscans int64 + Pdanscan int64 + Pdobscan int64 + Pdreact int64 + Pdbusy int64 + Pdpageouts int64 + Pdpending int64 + Pddeact int64 + Anonpages int64 + Filepages int64 + Execpages int64 + Colorhit int64 + Colormiss int64 + Ncolors int64 + Bootpages int64 + Poolpages int64 +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go b/tests/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go new file mode 100644 index 000000000..066a7d83d --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go @@ -0,0 +1,593 @@ +// cgo -godefs types_netbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && netbsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int32 + Pad_cgo_0 [4]byte +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Mode uint32 + _ [4]byte + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + _ [4]byte + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + Spare [2]uint32 + _ [4]byte +} + +type Statfs_t [0]byte + +type Statvfs_t struct { + Flag uint64 + Bsize uint64 + Frsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Bresvd uint64 + Files uint64 + Ffree uint64 + Favail uint64 + Fresvd uint64 + Syncreads uint64 + Syncwrites uint64 + Asyncreads uint64 + Asyncwrites uint64 + Fsidx Fsid + Fsid uint64 + Namemax uint64 + Owner uint32 + Spare [4]uint32 + Fstypename [32]byte + Mntonname [1024]byte + Mntfromname [1024]byte + _ [4]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [512]int8 + Pad_cgo_0 [3]byte +} + +type Fsid struct { + X__fsid_val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + ST_WAIT = 0x1 + ST_NOWAIT = 0x2 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *Iovec + Iovlen int32 + Pad_cgo_1 [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter uint32 + Flags uint32 + Fflags uint32 + Pad_cgo_0 [4]byte + Data int64 + Udata int64 +} + +type FdSet struct { + Bits [8]uint32 +} + +const ( + SizeofIfMsghdr = 0x98 + SizeofIfData = 0x88 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x78 + SizeofRtMetrics = 0x50 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Pad_cgo_0 [2]byte + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Pad_cgo_0 [1]byte + Link_state int32 + Mtu uint64 + Metric uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Lastchange Timespec +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Metric int32 + Index uint16 + Pad_cgo_0 [6]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Pad_cgo_0 [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits int32 + Pad_cgo_1 [4]byte + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Hopcount uint64 + Recvpipe uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Expire int64 + Pksent int64 +} + +type Mclpool [0]byte + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x80 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint64 + Drop uint64 + Capt uint64 + Padding [13]uint64 +} + +type BpfProgram struct { + Len uint32 + Pad_cgo_0 [4]byte + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Pad_cgo_0 [6]byte +} + +type BpfTimeval struct { + Sec int64 + Usec int64 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Ptmget struct { + Cfd int32 + Sfd int32 + Cn [1024]byte + Sn [1024]byte +} + +const ( + AT_FDCWD = -0x64 + AT_EACCESS = 0x100 + AT_SYMLINK_NOFOLLOW = 0x200 + AT_SYMLINK_FOLLOW = 0x400 + AT_REMOVEDIR = 0x800 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sysctlnode struct { + Flags uint32 + Num int32 + Name [32]int8 + Ver uint32 + X__rsvd uint32 + Un [16]byte + X_sysctl_size [8]byte + X_sysctl_func [8]byte + X_sysctl_parent [8]byte + X_sysctl_desc [8]byte +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofUvmexp = 0x278 + +type Uvmexp struct { + Pagesize int64 + Pagemask int64 + Pageshift int64 + Npages int64 + Free int64 + Active int64 + Inactive int64 + Paging int64 + Wired int64 + Zeropages int64 + Reserve_pagedaemon int64 + Reserve_kernel int64 + Freemin int64 + Freetarg int64 + Inactarg int64 + Wiredmax int64 + Nswapdev int64 + Swpages int64 + Swpginuse int64 + Swpgonly int64 + Nswget int64 + Unused1 int64 + Cpuhit int64 + Cpumiss int64 + Faults int64 + Traps int64 + Intrs int64 + Swtch int64 + Softs int64 + Syscalls int64 + Pageins int64 + Swapins int64 + Swapouts int64 + Pgswapin int64 + Pgswapout int64 + Forks int64 + Forks_ppwait int64 + Forks_sharevm int64 + Pga_zerohit int64 + Pga_zeromiss int64 + Zeroaborts int64 + Fltnoram int64 + Fltnoanon int64 + Fltpgwait int64 + Fltpgrele int64 + Fltrelck int64 + Fltrelckok int64 + Fltanget int64 + Fltanretry int64 + Fltamcopy int64 + Fltnamap int64 + Fltnomap int64 + Fltlget int64 + Fltget int64 + Flt_anon int64 + Flt_acow int64 + Flt_obj int64 + Flt_prcopy int64 + Flt_przero int64 + Pdwoke int64 + Pdrevs int64 + Unused4 int64 + Pdfreed int64 + Pdscans int64 + Pdanscan int64 + Pdobscan int64 + Pdreact int64 + Pdbusy int64 + Pdpageouts int64 + Pdpending int64 + Pddeact int64 + Anonpages int64 + Filepages int64 + Execpages int64 + Colorhit int64 + Colormiss int64 + Ncolors int64 + Bootpages int64 + Poolpages int64 +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go b/tests/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go new file mode 100644 index 000000000..439548ec9 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go @@ -0,0 +1,590 @@ +// cgo -godefs types_netbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm && netbsd + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int32 + Pad_cgo_0 [4]byte +} + +type Timeval struct { + Sec int64 + Usec int32 + Pad_cgo_0 [4]byte +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Mode uint32 + _ [4]byte + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + _ [4]byte + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + Spare [2]uint32 + _ [4]byte +} + +type Statfs_t [0]byte + +type Statvfs_t struct { + Flag uint32 + Bsize uint32 + Frsize uint32 + Iosize uint32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Bresvd uint64 + Files uint64 + Ffree uint64 + Favail uint64 + Fresvd uint64 + Syncreads uint64 + Syncwrites uint64 + Asyncreads uint64 + Asyncwrites uint64 + Fsidx Fsid + Fsid uint32 + Namemax uint32 + Owner uint32 + Spare [4]uint32 + Fstypename [32]byte + Mntonname [1024]byte + Mntfromname [1024]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [512]int8 + Pad_cgo_0 [3]byte +} + +type Fsid struct { + X__fsid_val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + ST_WAIT = 0x1 + ST_NOWAIT = 0x2 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofLinger = 0x8 + SizeofIovec = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint32 + Filter uint32 + Flags uint32 + Fflags uint32 + Data int64 + Udata int32 + Pad_cgo_0 [4]byte +} + +type FdSet struct { + Bits [8]uint32 +} + +const ( + SizeofIfMsghdr = 0x98 + SizeofIfData = 0x88 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x78 + SizeofRtMetrics = 0x50 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Pad_cgo_0 [2]byte + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Pad_cgo_0 [1]byte + Link_state int32 + Mtu uint64 + Metric uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Lastchange Timespec +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Metric int32 + Index uint16 + Pad_cgo_0 [6]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Pad_cgo_0 [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits int32 + Pad_cgo_1 [4]byte + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Hopcount uint64 + Recvpipe uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Expire int64 + Pksent int64 +} + +type Mclpool [0]byte + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x80 + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint64 + Drop uint64 + Capt uint64 + Padding [13]uint64 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Pad_cgo_0 [2]byte +} + +type BpfTimeval struct { + Sec int32 + Usec int32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Ptmget struct { + Cfd int32 + Sfd int32 + Cn [1024]byte + Sn [1024]byte +} + +const ( + AT_FDCWD = -0x64 + AT_EACCESS = 0x100 + AT_SYMLINK_NOFOLLOW = 0x200 + AT_SYMLINK_FOLLOW = 0x400 + AT_REMOVEDIR = 0x800 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sysctlnode struct { + Flags uint32 + Num int32 + Name [32]int8 + Ver uint32 + X__rsvd uint32 + Un [16]byte + X_sysctl_size [8]byte + X_sysctl_func [8]byte + X_sysctl_parent [8]byte + X_sysctl_desc [8]byte +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofUvmexp = 0x278 + +type Uvmexp struct { + Pagesize int64 + Pagemask int64 + Pageshift int64 + Npages int64 + Free int64 + Active int64 + Inactive int64 + Paging int64 + Wired int64 + Zeropages int64 + Reserve_pagedaemon int64 + Reserve_kernel int64 + Freemin int64 + Freetarg int64 + Inactarg int64 + Wiredmax int64 + Nswapdev int64 + Swpages int64 + Swpginuse int64 + Swpgonly int64 + Nswget int64 + Unused1 int64 + Cpuhit int64 + Cpumiss int64 + Faults int64 + Traps int64 + Intrs int64 + Swtch int64 + Softs int64 + Syscalls int64 + Pageins int64 + Swapins int64 + Swapouts int64 + Pgswapin int64 + Pgswapout int64 + Forks int64 + Forks_ppwait int64 + Forks_sharevm int64 + Pga_zerohit int64 + Pga_zeromiss int64 + Zeroaborts int64 + Fltnoram int64 + Fltnoanon int64 + Fltpgwait int64 + Fltpgrele int64 + Fltrelck int64 + Fltrelckok int64 + Fltanget int64 + Fltanretry int64 + Fltamcopy int64 + Fltnamap int64 + Fltnomap int64 + Fltlget int64 + Fltget int64 + Flt_anon int64 + Flt_acow int64 + Flt_obj int64 + Flt_prcopy int64 + Flt_przero int64 + Pdwoke int64 + Pdrevs int64 + Unused4 int64 + Pdfreed int64 + Pdscans int64 + Pdanscan int64 + Pdobscan int64 + Pdreact int64 + Pdbusy int64 + Pdpageouts int64 + Pdpending int64 + Pddeact int64 + Anonpages int64 + Filepages int64 + Execpages int64 + Colorhit int64 + Colormiss int64 + Ncolors int64 + Bootpages int64 + Poolpages int64 +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go b/tests/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go new file mode 100644 index 000000000..16085d3bb --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go @@ -0,0 +1,593 @@ +// cgo -godefs types_netbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm64 && netbsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int32 + Pad_cgo_0 [4]byte +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Mode uint32 + _ [4]byte + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + _ [4]byte + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + Spare [2]uint32 + _ [4]byte +} + +type Statfs_t [0]byte + +type Statvfs_t struct { + Flag uint64 + Bsize uint64 + Frsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Bresvd uint64 + Files uint64 + Ffree uint64 + Favail uint64 + Fresvd uint64 + Syncreads uint64 + Syncwrites uint64 + Asyncreads uint64 + Asyncwrites uint64 + Fsidx Fsid + Fsid uint64 + Namemax uint64 + Owner uint32 + Spare [4]uint32 + Fstypename [32]byte + Mntonname [1024]byte + Mntfromname [1024]byte + _ [4]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [512]int8 + Pad_cgo_0 [3]byte +} + +type Fsid struct { + X__fsid_val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + ST_WAIT = 0x1 + ST_NOWAIT = 0x2 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *Iovec + Iovlen int32 + Pad_cgo_1 [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter uint32 + Flags uint32 + Fflags uint32 + Pad_cgo_0 [4]byte + Data int64 + Udata int64 +} + +type FdSet struct { + Bits [8]uint32 +} + +const ( + SizeofIfMsghdr = 0x98 + SizeofIfData = 0x88 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x78 + SizeofRtMetrics = 0x50 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Pad_cgo_0 [2]byte + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Pad_cgo_0 [1]byte + Link_state int32 + Mtu uint64 + Metric uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Lastchange Timespec +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Metric int32 + Index uint16 + Pad_cgo_0 [6]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Pad_cgo_0 [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits int32 + Pad_cgo_1 [4]byte + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Hopcount uint64 + Recvpipe uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Expire int64 + Pksent int64 +} + +type Mclpool [0]byte + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x80 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint64 + Drop uint64 + Capt uint64 + Padding [13]uint64 +} + +type BpfProgram struct { + Len uint32 + Pad_cgo_0 [4]byte + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Pad_cgo_0 [6]byte +} + +type BpfTimeval struct { + Sec int64 + Usec int64 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Ptmget struct { + Cfd int32 + Sfd int32 + Cn [1024]byte + Sn [1024]byte +} + +const ( + AT_FDCWD = -0x64 + AT_EACCESS = 0x100 + AT_SYMLINK_NOFOLLOW = 0x200 + AT_SYMLINK_FOLLOW = 0x400 + AT_REMOVEDIR = 0x800 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sysctlnode struct { + Flags uint32 + Num int32 + Name [32]int8 + Ver uint32 + X__rsvd uint32 + Un [16]byte + X_sysctl_size [8]byte + X_sysctl_func [8]byte + X_sysctl_parent [8]byte + X_sysctl_desc [8]byte +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofUvmexp = 0x278 + +type Uvmexp struct { + Pagesize int64 + Pagemask int64 + Pageshift int64 + Npages int64 + Free int64 + Active int64 + Inactive int64 + Paging int64 + Wired int64 + Zeropages int64 + Reserve_pagedaemon int64 + Reserve_kernel int64 + Freemin int64 + Freetarg int64 + Inactarg int64 + Wiredmax int64 + Nswapdev int64 + Swpages int64 + Swpginuse int64 + Swpgonly int64 + Nswget int64 + Unused1 int64 + Cpuhit int64 + Cpumiss int64 + Faults int64 + Traps int64 + Intrs int64 + Swtch int64 + Softs int64 + Syscalls int64 + Pageins int64 + Swapins int64 + Swapouts int64 + Pgswapin int64 + Pgswapout int64 + Forks int64 + Forks_ppwait int64 + Forks_sharevm int64 + Pga_zerohit int64 + Pga_zeromiss int64 + Zeroaborts int64 + Fltnoram int64 + Fltnoanon int64 + Fltpgwait int64 + Fltpgrele int64 + Fltrelck int64 + Fltrelckok int64 + Fltanget int64 + Fltanretry int64 + Fltamcopy int64 + Fltnamap int64 + Fltnomap int64 + Fltlget int64 + Fltget int64 + Flt_anon int64 + Flt_acow int64 + Flt_obj int64 + Flt_prcopy int64 + Flt_przero int64 + Pdwoke int64 + Pdrevs int64 + Unused4 int64 + Pdfreed int64 + Pdscans int64 + Pdanscan int64 + Pdobscan int64 + Pdreact int64 + Pdbusy int64 + Pdpageouts int64 + Pdpending int64 + Pddeact int64 + Anonpages int64 + Filepages int64 + Execpages int64 + Colorhit int64 + Colormiss int64 + Ncolors int64 + Bootpages int64 + Poolpages int64 +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go b/tests/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go new file mode 100644 index 000000000..afd13a3af --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go @@ -0,0 +1,568 @@ +// cgo -godefs types_openbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build 386 && openbsd + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int32 +} + +type Timeval struct { + Sec int64 + Usec int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Mode uint32 + Dev int32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + _ Timespec +} + +type Statfs_t struct { + F_flags uint32 + F_bsize uint32 + F_iosize uint32 + F_blocks uint64 + F_bfree uint64 + F_bavail int64 + F_files uint64 + F_ffree uint64 + F_favail int64 + F_syncwrites uint64 + F_syncreads uint64 + F_asyncwrites uint64 + F_asyncreads uint64 + F_fsid Fsid + F_namemax uint32 + F_owner uint32 + F_ctime uint64 + F_fstypename [16]byte + F_mntonname [90]byte + F_mntfromname [90]byte + F_mntfromspec [90]byte + _ [2]byte + Mount_info [160]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Namlen uint8 + _ [4]uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [24]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x20 + SizeofLinger = 0x8 + SizeofIovec = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint32 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + SizeofIfMsghdr = 0xa0 + SizeofIfData = 0x88 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x1a + SizeofRtMsghdr = 0x60 + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Xflags int32 + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Mtu uint32 + Metric uint32 + Rdomain uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Capabilities uint32 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Metric int32 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + What uint16 + Name [16]int8 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Priority uint8 + Mpls uint8 + Addrs int32 + Flags int32 + Fmask int32 + Pid int32 + Seq int32 + Errno int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Pksent uint64 + Expire int64 + Locks uint32 + Mtu uint32 + Refcnt uint32 + Hopcount uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pad uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x18 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Ifidx uint16 + Flowid uint16 + Flags uint8 + Drops uint8 +} + +type BpfTimeval struct { + Sec uint32 + Usec uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_EACCESS = 0x1 + AT_SYMLINK_NOFOLLOW = 0x2 + AT_SYMLINK_FOLLOW = 0x4 + AT_REMOVEDIR = 0x8 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sigset_t uint32 + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofUvmexp = 0x158 + +type Uvmexp struct { + Pagesize int32 + Pagemask int32 + Pageshift int32 + Npages int32 + Free int32 + Active int32 + Inactive int32 + Paging int32 + Wired int32 + Zeropages int32 + Reserve_pagedaemon int32 + Reserve_kernel int32 + Unused01 int32 + Vnodepages int32 + Vtextpages int32 + Freemin int32 + Freetarg int32 + Inactarg int32 + Wiredmax int32 + Anonmin int32 + Vtextmin int32 + Vnodemin int32 + Anonminpct int32 + Vtextminpct int32 + Vnodeminpct int32 + Nswapdev int32 + Swpages int32 + Swpginuse int32 + Swpgonly int32 + Nswget int32 + Nanon int32 + Unused05 int32 + Unused06 int32 + Faults int32 + Traps int32 + Intrs int32 + Swtch int32 + Softs int32 + Syscalls int32 + Pageins int32 + Unused07 int32 + Unused08 int32 + Pgswapin int32 + Pgswapout int32 + Forks int32 + Forks_ppwait int32 + Forks_sharevm int32 + Pga_zerohit int32 + Pga_zeromiss int32 + Unused09 int32 + Fltnoram int32 + Fltnoanon int32 + Fltnoamap int32 + Fltpgwait int32 + Fltpgrele int32 + Fltrelck int32 + Fltrelckok int32 + Fltanget int32 + Fltanretry int32 + Fltamcopy int32 + Fltnamap int32 + Fltnomap int32 + Fltlget int32 + Fltget int32 + Flt_anon int32 + Flt_acow int32 + Flt_obj int32 + Flt_prcopy int32 + Flt_przero int32 + Pdwoke int32 + Pdrevs int32 + Pdswout int32 + Pdfreed int32 + Pdscans int32 + Pdanscan int32 + Pdobscan int32 + Pdreact int32 + Pdbusy int32 + Pdpageouts int32 + Pdpending int32 + Pddeact int32 + Unused11 int32 + Unused12 int32 + Unused13 int32 + Fpswtch int32 + Kmapent int32 +} + +const SizeofClockinfo = 0x10 + +type Clockinfo struct { + Hz int32 + Tick int32 + Stathz int32 + Profhz int32 +} diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go b/tests/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go new file mode 100644 index 000000000..5d97f1f9b --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go @@ -0,0 +1,568 @@ +// cgo -godefs types_openbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && openbsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Mode uint32 + Dev int32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + _ Timespec +} + +type Statfs_t struct { + F_flags uint32 + F_bsize uint32 + F_iosize uint32 + F_blocks uint64 + F_bfree uint64 + F_bavail int64 + F_files uint64 + F_ffree uint64 + F_favail int64 + F_syncwrites uint64 + F_syncreads uint64 + F_asyncwrites uint64 + F_asyncreads uint64 + F_fsid Fsid + F_namemax uint32 + F_owner uint32 + F_ctime uint64 + F_fstypename [16]byte + F_mntonname [90]byte + F_mntfromname [90]byte + F_mntfromspec [90]byte + _ [2]byte + Mount_info [160]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Namlen uint8 + _ [4]uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [24]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x20 + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + SizeofIfMsghdr = 0xa8 + SizeofIfData = 0x90 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x1a + SizeofRtMsghdr = 0x60 + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Xflags int32 + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Mtu uint32 + Metric uint32 + Rdomain uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Capabilities uint32 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Metric int32 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + What uint16 + Name [16]int8 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Priority uint8 + Mpls uint8 + Addrs int32 + Flags int32 + Fmask int32 + Pid int32 + Seq int32 + Errno int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Pksent uint64 + Expire int64 + Locks uint32 + Mtu uint32 + Refcnt uint32 + Hopcount uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pad uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x18 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Ifidx uint16 + Flowid uint16 + Flags uint8 + Drops uint8 +} + +type BpfTimeval struct { + Sec uint32 + Usec uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_EACCESS = 0x1 + AT_SYMLINK_NOFOLLOW = 0x2 + AT_SYMLINK_FOLLOW = 0x4 + AT_REMOVEDIR = 0x8 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sigset_t uint32 + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofUvmexp = 0x158 + +type Uvmexp struct { + Pagesize int32 + Pagemask int32 + Pageshift int32 + Npages int32 + Free int32 + Active int32 + Inactive int32 + Paging int32 + Wired int32 + Zeropages int32 + Reserve_pagedaemon int32 + Reserve_kernel int32 + Unused01 int32 + Vnodepages int32 + Vtextpages int32 + Freemin int32 + Freetarg int32 + Inactarg int32 + Wiredmax int32 + Anonmin int32 + Vtextmin int32 + Vnodemin int32 + Anonminpct int32 + Vtextminpct int32 + Vnodeminpct int32 + Nswapdev int32 + Swpages int32 + Swpginuse int32 + Swpgonly int32 + Nswget int32 + Nanon int32 + Unused05 int32 + Unused06 int32 + Faults int32 + Traps int32 + Intrs int32 + Swtch int32 + Softs int32 + Syscalls int32 + Pageins int32 + Unused07 int32 + Unused08 int32 + Pgswapin int32 + Pgswapout int32 + Forks int32 + Forks_ppwait int32 + Forks_sharevm int32 + Pga_zerohit int32 + Pga_zeromiss int32 + Unused09 int32 + Fltnoram int32 + Fltnoanon int32 + Fltnoamap int32 + Fltpgwait int32 + Fltpgrele int32 + Fltrelck int32 + Fltrelckok int32 + Fltanget int32 + Fltanretry int32 + Fltamcopy int32 + Fltnamap int32 + Fltnomap int32 + Fltlget int32 + Fltget int32 + Flt_anon int32 + Flt_acow int32 + Flt_obj int32 + Flt_prcopy int32 + Flt_przero int32 + Pdwoke int32 + Pdrevs int32 + Pdswout int32 + Pdfreed int32 + Pdscans int32 + Pdanscan int32 + Pdobscan int32 + Pdreact int32 + Pdbusy int32 + Pdpageouts int32 + Pdpending int32 + Pddeact int32 + Unused11 int32 + Unused12 int32 + Unused13 int32 + Fpswtch int32 + Kmapent int32 +} + +const SizeofClockinfo = 0x10 + +type Clockinfo struct { + Hz int32 + Tick int32 + Stathz int32 + Profhz int32 +} diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go b/tests/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go new file mode 100644 index 000000000..34871cdc1 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go @@ -0,0 +1,575 @@ +// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm && openbsd + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int32 + _ [4]byte +} + +type Timeval struct { + Sec int64 + Usec int32 + _ [4]byte +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Mode uint32 + Dev int32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + _ [4]byte + _ Timespec +} + +type Statfs_t struct { + F_flags uint32 + F_bsize uint32 + F_iosize uint32 + _ [4]byte + F_blocks uint64 + F_bfree uint64 + F_bavail int64 + F_files uint64 + F_ffree uint64 + F_favail int64 + F_syncwrites uint64 + F_syncreads uint64 + F_asyncwrites uint64 + F_asyncreads uint64 + F_fsid Fsid + F_namemax uint32 + F_owner uint32 + F_ctime uint64 + F_fstypename [16]byte + F_mntonname [90]byte + F_mntfromname [90]byte + F_mntfromspec [90]byte + _ [2]byte + Mount_info [160]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Namlen uint8 + _ [4]uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [24]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x20 + SizeofLinger = 0x8 + SizeofIovec = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint32 + Filter int16 + Flags uint16 + Fflags uint32 + _ [4]byte + Data int64 + Udata *byte + _ [4]byte +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + SizeofIfMsghdr = 0xa8 + SizeofIfData = 0x90 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x1a + SizeofRtMsghdr = 0x60 + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Xflags int32 + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Mtu uint32 + Metric uint32 + Rdomain uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Capabilities uint32 + _ [4]byte + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Metric int32 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + What uint16 + Name [16]int8 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Priority uint8 + Mpls uint8 + Addrs int32 + Flags int32 + Fmask int32 + Pid int32 + Seq int32 + Errno int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Pksent uint64 + Expire int64 + Locks uint32 + Mtu uint32 + Refcnt uint32 + Hopcount uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pad uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x18 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Ifidx uint16 + Flowid uint16 + Flags uint8 + Drops uint8 +} + +type BpfTimeval struct { + Sec uint32 + Usec uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_EACCESS = 0x1 + AT_SYMLINK_NOFOLLOW = 0x2 + AT_SYMLINK_FOLLOW = 0x4 + AT_REMOVEDIR = 0x8 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sigset_t uint32 + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofUvmexp = 0x158 + +type Uvmexp struct { + Pagesize int32 + Pagemask int32 + Pageshift int32 + Npages int32 + Free int32 + Active int32 + Inactive int32 + Paging int32 + Wired int32 + Zeropages int32 + Reserve_pagedaemon int32 + Reserve_kernel int32 + Unused01 int32 + Vnodepages int32 + Vtextpages int32 + Freemin int32 + Freetarg int32 + Inactarg int32 + Wiredmax int32 + Anonmin int32 + Vtextmin int32 + Vnodemin int32 + Anonminpct int32 + Vtextminpct int32 + Vnodeminpct int32 + Nswapdev int32 + Swpages int32 + Swpginuse int32 + Swpgonly int32 + Nswget int32 + Nanon int32 + Unused05 int32 + Unused06 int32 + Faults int32 + Traps int32 + Intrs int32 + Swtch int32 + Softs int32 + Syscalls int32 + Pageins int32 + Unused07 int32 + Unused08 int32 + Pgswapin int32 + Pgswapout int32 + Forks int32 + Forks_ppwait int32 + Forks_sharevm int32 + Pga_zerohit int32 + Pga_zeromiss int32 + Unused09 int32 + Fltnoram int32 + Fltnoanon int32 + Fltnoamap int32 + Fltpgwait int32 + Fltpgrele int32 + Fltrelck int32 + Fltrelckok int32 + Fltanget int32 + Fltanretry int32 + Fltamcopy int32 + Fltnamap int32 + Fltnomap int32 + Fltlget int32 + Fltget int32 + Flt_anon int32 + Flt_acow int32 + Flt_obj int32 + Flt_prcopy int32 + Flt_przero int32 + Pdwoke int32 + Pdrevs int32 + Pdswout int32 + Pdfreed int32 + Pdscans int32 + Pdanscan int32 + Pdobscan int32 + Pdreact int32 + Pdbusy int32 + Pdpageouts int32 + Pdpending int32 + Pddeact int32 + Unused11 int32 + Unused12 int32 + Unused13 int32 + Fpswtch int32 + Kmapent int32 +} + +const SizeofClockinfo = 0x10 + +type Clockinfo struct { + Hz int32 + Tick int32 + Stathz int32 + Profhz int32 +} diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go b/tests/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go new file mode 100644 index 000000000..5911bceb3 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go @@ -0,0 +1,568 @@ +// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm64 && openbsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Mode uint32 + Dev int32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + _ Timespec +} + +type Statfs_t struct { + F_flags uint32 + F_bsize uint32 + F_iosize uint32 + F_blocks uint64 + F_bfree uint64 + F_bavail int64 + F_files uint64 + F_ffree uint64 + F_favail int64 + F_syncwrites uint64 + F_syncreads uint64 + F_asyncwrites uint64 + F_asyncreads uint64 + F_fsid Fsid + F_namemax uint32 + F_owner uint32 + F_ctime uint64 + F_fstypename [16]byte + F_mntonname [90]byte + F_mntfromname [90]byte + F_mntfromspec [90]byte + _ [2]byte + Mount_info [160]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Namlen uint8 + _ [4]uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [24]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x20 + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + SizeofIfMsghdr = 0xa8 + SizeofIfData = 0x90 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x1a + SizeofRtMsghdr = 0x60 + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Xflags int32 + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Mtu uint32 + Metric uint32 + Rdomain uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Capabilities uint32 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Metric int32 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + What uint16 + Name [16]int8 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Priority uint8 + Mpls uint8 + Addrs int32 + Flags int32 + Fmask int32 + Pid int32 + Seq int32 + Errno int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Pksent uint64 + Expire int64 + Locks uint32 + Mtu uint32 + Refcnt uint32 + Hopcount uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pad uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x18 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Ifidx uint16 + Flowid uint16 + Flags uint8 + Drops uint8 +} + +type BpfTimeval struct { + Sec uint32 + Usec uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_EACCESS = 0x1 + AT_SYMLINK_NOFOLLOW = 0x2 + AT_SYMLINK_FOLLOW = 0x4 + AT_REMOVEDIR = 0x8 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sigset_t uint32 + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofUvmexp = 0x158 + +type Uvmexp struct { + Pagesize int32 + Pagemask int32 + Pageshift int32 + Npages int32 + Free int32 + Active int32 + Inactive int32 + Paging int32 + Wired int32 + Zeropages int32 + Reserve_pagedaemon int32 + Reserve_kernel int32 + Unused01 int32 + Vnodepages int32 + Vtextpages int32 + Freemin int32 + Freetarg int32 + Inactarg int32 + Wiredmax int32 + Anonmin int32 + Vtextmin int32 + Vnodemin int32 + Anonminpct int32 + Vtextminpct int32 + Vnodeminpct int32 + Nswapdev int32 + Swpages int32 + Swpginuse int32 + Swpgonly int32 + Nswget int32 + Nanon int32 + Unused05 int32 + Unused06 int32 + Faults int32 + Traps int32 + Intrs int32 + Swtch int32 + Softs int32 + Syscalls int32 + Pageins int32 + Unused07 int32 + Unused08 int32 + Pgswapin int32 + Pgswapout int32 + Forks int32 + Forks_ppwait int32 + Forks_sharevm int32 + Pga_zerohit int32 + Pga_zeromiss int32 + Unused09 int32 + Fltnoram int32 + Fltnoanon int32 + Fltnoamap int32 + Fltpgwait int32 + Fltpgrele int32 + Fltrelck int32 + Fltrelckok int32 + Fltanget int32 + Fltanretry int32 + Fltamcopy int32 + Fltnamap int32 + Fltnomap int32 + Fltlget int32 + Fltget int32 + Flt_anon int32 + Flt_acow int32 + Flt_obj int32 + Flt_prcopy int32 + Flt_przero int32 + Pdwoke int32 + Pdrevs int32 + Pdswout int32 + Pdfreed int32 + Pdscans int32 + Pdanscan int32 + Pdobscan int32 + Pdreact int32 + Pdbusy int32 + Pdpageouts int32 + Pdpending int32 + Pddeact int32 + Unused11 int32 + Unused12 int32 + Unused13 int32 + Fpswtch int32 + Kmapent int32 +} + +const SizeofClockinfo = 0x10 + +type Clockinfo struct { + Hz int32 + Tick int32 + Stathz int32 + Profhz int32 +} diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go b/tests/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go new file mode 100644 index 000000000..e4f24f3bc --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go @@ -0,0 +1,568 @@ +// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build mips64 && openbsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Mode uint32 + Dev int32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + _ Timespec +} + +type Statfs_t struct { + F_flags uint32 + F_bsize uint32 + F_iosize uint32 + F_blocks uint64 + F_bfree uint64 + F_bavail int64 + F_files uint64 + F_ffree uint64 + F_favail int64 + F_syncwrites uint64 + F_syncreads uint64 + F_asyncwrites uint64 + F_asyncreads uint64 + F_fsid Fsid + F_namemax uint32 + F_owner uint32 + F_ctime uint64 + F_fstypename [16]byte + F_mntonname [90]byte + F_mntfromname [90]byte + F_mntfromspec [90]byte + _ [2]byte + Mount_info [160]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Namlen uint8 + _ [4]uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [24]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x20 + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + SizeofIfMsghdr = 0xa8 + SizeofIfData = 0x90 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x1a + SizeofRtMsghdr = 0x60 + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Xflags int32 + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Mtu uint32 + Metric uint32 + Rdomain uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Capabilities uint32 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Metric int32 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + What uint16 + Name [16]int8 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Priority uint8 + Mpls uint8 + Addrs int32 + Flags int32 + Fmask int32 + Pid int32 + Seq int32 + Errno int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Pksent uint64 + Expire int64 + Locks uint32 + Mtu uint32 + Refcnt uint32 + Hopcount uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pad uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x18 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Ifidx uint16 + Flowid uint16 + Flags uint8 + Drops uint8 +} + +type BpfTimeval struct { + Sec uint32 + Usec uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_EACCESS = 0x1 + AT_SYMLINK_NOFOLLOW = 0x2 + AT_SYMLINK_FOLLOW = 0x4 + AT_REMOVEDIR = 0x8 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sigset_t uint32 + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofUvmexp = 0x158 + +type Uvmexp struct { + Pagesize int32 + Pagemask int32 + Pageshift int32 + Npages int32 + Free int32 + Active int32 + Inactive int32 + Paging int32 + Wired int32 + Zeropages int32 + Reserve_pagedaemon int32 + Reserve_kernel int32 + Unused01 int32 + Vnodepages int32 + Vtextpages int32 + Freemin int32 + Freetarg int32 + Inactarg int32 + Wiredmax int32 + Anonmin int32 + Vtextmin int32 + Vnodemin int32 + Anonminpct int32 + Vtextminpct int32 + Vnodeminpct int32 + Nswapdev int32 + Swpages int32 + Swpginuse int32 + Swpgonly int32 + Nswget int32 + Nanon int32 + Unused05 int32 + Unused06 int32 + Faults int32 + Traps int32 + Intrs int32 + Swtch int32 + Softs int32 + Syscalls int32 + Pageins int32 + Unused07 int32 + Unused08 int32 + Pgswapin int32 + Pgswapout int32 + Forks int32 + Forks_ppwait int32 + Forks_sharevm int32 + Pga_zerohit int32 + Pga_zeromiss int32 + Unused09 int32 + Fltnoram int32 + Fltnoanon int32 + Fltnoamap int32 + Fltpgwait int32 + Fltpgrele int32 + Fltrelck int32 + Fltrelckok int32 + Fltanget int32 + Fltanretry int32 + Fltamcopy int32 + Fltnamap int32 + Fltnomap int32 + Fltlget int32 + Fltget int32 + Flt_anon int32 + Flt_acow int32 + Flt_obj int32 + Flt_prcopy int32 + Flt_przero int32 + Pdwoke int32 + Pdrevs int32 + Pdswout int32 + Pdfreed int32 + Pdscans int32 + Pdanscan int32 + Pdobscan int32 + Pdreact int32 + Pdbusy int32 + Pdpageouts int32 + Pdpending int32 + Pddeact int32 + Unused11 int32 + Unused12 int32 + Unused13 int32 + Fpswtch int32 + Kmapent int32 +} + +const SizeofClockinfo = 0x10 + +type Clockinfo struct { + Hz int32 + Tick int32 + Stathz int32 + Profhz int32 +} diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_openbsd_ppc64.go b/tests/vendor/golang.org/x/sys/unix/ztypes_openbsd_ppc64.go new file mode 100644 index 000000000..ca50a7930 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_openbsd_ppc64.go @@ -0,0 +1,570 @@ +// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc64 && openbsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Mode uint32 + Dev int32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + _ Timespec +} + +type Statfs_t struct { + F_flags uint32 + F_bsize uint32 + F_iosize uint32 + F_blocks uint64 + F_bfree uint64 + F_bavail int64 + F_files uint64 + F_ffree uint64 + F_favail int64 + F_syncwrites uint64 + F_syncreads uint64 + F_asyncwrites uint64 + F_asyncreads uint64 + F_fsid Fsid + F_namemax uint32 + F_owner uint32 + F_ctime uint64 + F_fstypename [16]byte + F_mntonname [90]byte + F_mntfromname [90]byte + F_mntfromspec [90]byte + _ [2]byte + Mount_info [160]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Namlen uint8 + _ [4]uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [24]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x20 + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + SizeofIfMsghdr = 0xa8 + SizeofIfData = 0x90 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x1a + SizeofRtMsghdr = 0x60 + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Xflags int32 + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Mtu uint32 + Metric uint32 + Rdomain uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Capabilities uint32 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Metric int32 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + What uint16 + Name [16]int8 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Priority uint8 + Mpls uint8 + Addrs int32 + Flags int32 + Fmask int32 + Pid int32 + Seq int32 + Errno int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Pksent uint64 + Expire int64 + Locks uint32 + Mtu uint32 + Refcnt uint32 + Hopcount uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pad uint32 +} + +type Mclpool struct{} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x18 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Ifidx uint16 + Flowid uint16 + Flags uint8 + Drops uint8 +} + +type BpfTimeval struct { + Sec uint32 + Usec uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_EACCESS = 0x1 + AT_SYMLINK_NOFOLLOW = 0x2 + AT_SYMLINK_FOLLOW = 0x4 + AT_REMOVEDIR = 0x8 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sigset_t uint32 + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofUvmexp = 0x158 + +type Uvmexp struct { + Pagesize int32 + Pagemask int32 + Pageshift int32 + Npages int32 + Free int32 + Active int32 + Inactive int32 + Paging int32 + Wired int32 + Zeropages int32 + Reserve_pagedaemon int32 + Reserve_kernel int32 + Unused01 int32 + Vnodepages int32 + Vtextpages int32 + Freemin int32 + Freetarg int32 + Inactarg int32 + Wiredmax int32 + Anonmin int32 + Vtextmin int32 + Vnodemin int32 + Anonminpct int32 + Vtextminpct int32 + Vnodeminpct int32 + Nswapdev int32 + Swpages int32 + Swpginuse int32 + Swpgonly int32 + Nswget int32 + Nanon int32 + Unused05 int32 + Unused06 int32 + Faults int32 + Traps int32 + Intrs int32 + Swtch int32 + Softs int32 + Syscalls int32 + Pageins int32 + Unused07 int32 + Unused08 int32 + Pgswapin int32 + Pgswapout int32 + Forks int32 + Forks_ppwait int32 + Forks_sharevm int32 + Pga_zerohit int32 + Pga_zeromiss int32 + Unused09 int32 + Fltnoram int32 + Fltnoanon int32 + Fltnoamap int32 + Fltpgwait int32 + Fltpgrele int32 + Fltrelck int32 + Fltrelckok int32 + Fltanget int32 + Fltanretry int32 + Fltamcopy int32 + Fltnamap int32 + Fltnomap int32 + Fltlget int32 + Fltget int32 + Flt_anon int32 + Flt_acow int32 + Flt_obj int32 + Flt_prcopy int32 + Flt_przero int32 + Pdwoke int32 + Pdrevs int32 + Pdswout int32 + Pdfreed int32 + Pdscans int32 + Pdanscan int32 + Pdobscan int32 + Pdreact int32 + Pdbusy int32 + Pdpageouts int32 + Pdpending int32 + Pddeact int32 + Unused11 int32 + Unused12 int32 + Unused13 int32 + Fpswtch int32 + Kmapent int32 +} + +const SizeofClockinfo = 0x10 + +type Clockinfo struct { + Hz int32 + Tick int32 + Stathz int32 + Profhz int32 +} diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_openbsd_riscv64.go b/tests/vendor/golang.org/x/sys/unix/ztypes_openbsd_riscv64.go new file mode 100644 index 000000000..d7d7f7902 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_openbsd_riscv64.go @@ -0,0 +1,570 @@ +// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build riscv64 && openbsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Mode uint32 + Dev int32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + _ Timespec +} + +type Statfs_t struct { + F_flags uint32 + F_bsize uint32 + F_iosize uint32 + F_blocks uint64 + F_bfree uint64 + F_bavail int64 + F_files uint64 + F_ffree uint64 + F_favail int64 + F_syncwrites uint64 + F_syncreads uint64 + F_asyncwrites uint64 + F_asyncreads uint64 + F_fsid Fsid + F_namemax uint32 + F_owner uint32 + F_ctime uint64 + F_fstypename [16]byte + F_mntonname [90]byte + F_mntfromname [90]byte + F_mntfromspec [90]byte + _ [2]byte + Mount_info [160]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Namlen uint8 + _ [4]uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [24]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x20 + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + SizeofIfMsghdr = 0xa8 + SizeofIfData = 0x90 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x1a + SizeofRtMsghdr = 0x60 + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Xflags int32 + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Mtu uint32 + Metric uint32 + Rdomain uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Capabilities uint32 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Metric int32 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + What uint16 + Name [16]int8 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Priority uint8 + Mpls uint8 + Addrs int32 + Flags int32 + Fmask int32 + Pid int32 + Seq int32 + Errno int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Pksent uint64 + Expire int64 + Locks uint32 + Mtu uint32 + Refcnt uint32 + Hopcount uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pad uint32 +} + +type Mclpool struct{} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x18 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Ifidx uint16 + Flowid uint16 + Flags uint8 + Drops uint8 +} + +type BpfTimeval struct { + Sec uint32 + Usec uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_EACCESS = 0x1 + AT_SYMLINK_NOFOLLOW = 0x2 + AT_SYMLINK_FOLLOW = 0x4 + AT_REMOVEDIR = 0x8 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sigset_t uint32 + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofUvmexp = 0x158 + +type Uvmexp struct { + Pagesize int32 + Pagemask int32 + Pageshift int32 + Npages int32 + Free int32 + Active int32 + Inactive int32 + Paging int32 + Wired int32 + Zeropages int32 + Reserve_pagedaemon int32 + Reserve_kernel int32 + Unused01 int32 + Vnodepages int32 + Vtextpages int32 + Freemin int32 + Freetarg int32 + Inactarg int32 + Wiredmax int32 + Anonmin int32 + Vtextmin int32 + Vnodemin int32 + Anonminpct int32 + Vtextminpct int32 + Vnodeminpct int32 + Nswapdev int32 + Swpages int32 + Swpginuse int32 + Swpgonly int32 + Nswget int32 + Nanon int32 + Unused05 int32 + Unused06 int32 + Faults int32 + Traps int32 + Intrs int32 + Swtch int32 + Softs int32 + Syscalls int32 + Pageins int32 + Unused07 int32 + Unused08 int32 + Pgswapin int32 + Pgswapout int32 + Forks int32 + Forks_ppwait int32 + Forks_sharevm int32 + Pga_zerohit int32 + Pga_zeromiss int32 + Unused09 int32 + Fltnoram int32 + Fltnoanon int32 + Fltnoamap int32 + Fltpgwait int32 + Fltpgrele int32 + Fltrelck int32 + Fltrelckok int32 + Fltanget int32 + Fltanretry int32 + Fltamcopy int32 + Fltnamap int32 + Fltnomap int32 + Fltlget int32 + Fltget int32 + Flt_anon int32 + Flt_acow int32 + Flt_obj int32 + Flt_prcopy int32 + Flt_przero int32 + Pdwoke int32 + Pdrevs int32 + Pdswout int32 + Pdfreed int32 + Pdscans int32 + Pdanscan int32 + Pdobscan int32 + Pdreact int32 + Pdbusy int32 + Pdpageouts int32 + Pdpending int32 + Pddeact int32 + Unused11 int32 + Unused12 int32 + Unused13 int32 + Fpswtch int32 + Kmapent int32 +} + +const SizeofClockinfo = 0x10 + +type Clockinfo struct { + Hz int32 + Tick int32 + Stathz int32 + Profhz int32 +} diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go b/tests/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go new file mode 100644 index 000000000..14160576d --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go @@ -0,0 +1,516 @@ +// cgo -godefs types_solaris.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && solaris + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x400 + MaxHostNameLen = 0x100 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timeval32 struct { + Sec int32 + Usec int32 +} + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize int32 + Blocks int64 + Fstype [16]int8 +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Sysid int32 + Pid int32 + Pad [4]int64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Name [1]int8 + _ [5]byte +} + +type _Fsblkcnt_t uint64 + +type Statvfs_t struct { + Bsize uint64 + Frsize uint64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Favail uint64 + Fsid uint64 + Basetype [16]int8 + Flag uint64 + Namemax uint64 + Fstr [32]int8 +} + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 + _ uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrDatalink struct { + Family uint16 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [244]int8 +} + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [236]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Accrights *int8 + Accrightslen int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex uint32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x20 + SizeofSockaddrAny = 0xfc + SizeofSockaddrUnix = 0x6e + SizeofSockaddrDatalink = 0xfc + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x24 + SizeofICMPv6Filter = 0x20 +) + +type FdSet struct { + Bits [1024]int64 +} + +type Utsname struct { + Sysname [257]byte + Nodename [257]byte + Release [257]byte + Version [257]byte + Machine [257]byte +} + +type Ustat_t struct { + Tfree int64 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +const ( + AT_FDCWD = 0xffd19553 + AT_SYMLINK_NOFOLLOW = 0x1000 + AT_SYMLINK_FOLLOW = 0x2000 + AT_REMOVEDIR = 0x1 + AT_EACCESS = 0x4 +) + +const ( + SizeofIfMsghdr = 0x54 + SizeofIfData = 0x44 + SizeofIfaMsghdr = 0x14 + SizeofRtMsghdr = 0x4c + SizeofRtMetrics = 0x28 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Mtu uint32 + Metric uint32 + Baudrate uint32 + Ipackets uint32 + Ierrors uint32 + Opackets uint32 + Oerrors uint32 + Collisions uint32 + Ibytes uint32 + Obytes uint32 + Imcasts uint32 + Omcasts uint32 + Iqdrops uint32 + Noproto uint32 + Lastchange Timeval32 +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Metric int32 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint32 + Mtu uint32 + Hopcount uint32 + Expire uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pksent uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x80 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint64 + Drop uint64 + Capt uint64 + _ [13]uint64 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfTimeval struct { + Sec int32 + Usec int32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [19]uint8 + _ [1]byte +} + +type Termio struct { + Iflag uint16 + Oflag uint16 + Cflag uint16 + Lflag uint16 + Line int8 + Cc [8]uint8 + _ [1]byte +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type fileObj struct { + Atim Timespec + Mtim Timespec + Ctim Timespec + Pad [3]uint64 + Name *int8 +} + +type portEvent struct { + Events int32 + Source uint16 + Pad uint16 + Object uint64 + User *byte +} + +const ( + PORT_SOURCE_AIO = 0x1 + PORT_SOURCE_TIMER = 0x2 + PORT_SOURCE_USER = 0x3 + PORT_SOURCE_FD = 0x4 + PORT_SOURCE_ALERT = 0x5 + PORT_SOURCE_MQ = 0x6 + PORT_SOURCE_FILE = 0x7 + PORT_ALERT_SET = 0x1 + PORT_ALERT_UPDATE = 0x2 + PORT_ALERT_INVALID = 0x3 + FILE_ACCESS = 0x1 + FILE_MODIFIED = 0x2 + FILE_ATTRIB = 0x4 + FILE_TRUNC = 0x100000 + FILE_NOFOLLOW = 0x10000000 + FILE_DELETE = 0x10 + FILE_RENAME_TO = 0x20 + FILE_RENAME_FROM = 0x40 + UNMOUNTED = 0x20000000 + MOUNTEDOVER = 0x40000000 + FILE_EXCEPTION = 0x60000070 +) + +const ( + TUNNEWPPA = 0x540001 + TUNSETPPA = 0x540002 + + I_STR = 0x5308 + I_POP = 0x5303 + I_PUSH = 0x5302 + I_LINK = 0x530c + I_UNLINK = 0x530d + I_PLINK = 0x5316 + I_PUNLINK = 0x5317 + + IF_UNITSEL = -0x7ffb8cca +) + +type strbuf struct { + Maxlen int32 + Len int32 + Buf *int8 +} + +type Strioctl struct { + Cmd int32 + Timout int32 + Len int32 + Dp *int8 +} + +type Lifreq struct { + Name [32]int8 + Lifru1 [4]byte + Type uint32 + Lifru [336]byte +} diff --git a/tests/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go b/tests/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go new file mode 100644 index 000000000..2e5d5a443 --- /dev/null +++ b/tests/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go @@ -0,0 +1,552 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos && s390x + +// Hand edited based on ztypes_linux_s390x.go +// TODO: auto-generate. + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +const ( + SizeofSockaddrAny = 128 + SizeofCmsghdr = 12 + SizeofIPMreq = 8 + SizeofIPv6Mreq = 20 + SizeofICMPv6Filter = 32 + SizeofIPv6MTUInfo = 32 + SizeofInet4Pktinfo = 8 + SizeofInet6Pktinfo = 20 + SizeofLinger = 8 + SizeofSockaddrInet4 = 16 + SizeofSockaddrInet6 = 28 + SizeofTCPInfo = 0x68 + SizeofUcred = 12 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type timeval_zos struct { //correct (with padding and all) + Sec int64 + _ [4]byte // pad + Usec int32 +} + +type Tms struct { //clock_t is 4-byte unsigned int in zos + Utime uint32 + Stime uint32 + Cutime uint32 + Cstime uint32 +} + +type Time_t int64 + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Utsname struct { + Sysname [16]byte + Nodename [32]byte + Release [8]byte + Version [8]byte + Machine [16]byte +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [108]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + _ [112]uint8 // pad +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Iov *Iovec + Control *byte + Flags int32 + Namelen int32 + Iovlen int32 + Controllen int32 +} + +type Cmsghdr struct { + Len int32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Addr [4]byte /* in_addr */ + Ifindex uint32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type _Gid_t uint32 + +type rusage_zos struct { + Utime timeval_zos + Stime timeval_zos +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +// { int, short, short } in poll.h +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +type Stat_t struct { //Linux Definition + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint32 + Uid uint32 + Gid uint32 + _ int32 + Rdev uint64 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize int64 + Blocks int64 + _ [3]int64 +} + +type Stat_LE_t struct { + _ [4]byte // eye catcher + Length uint16 + Version uint16 + Mode int32 + Ino uint32 + Dev uint32 + Nlink int32 + Uid int32 + Gid int32 + Size int64 + Atim31 [4]byte + Mtim31 [4]byte + Ctim31 [4]byte + Rdev uint32 + Auditoraudit uint32 + Useraudit uint32 + Blksize int32 + Creatim31 [4]byte + AuditID [16]byte + _ [4]byte // rsrvd1 + File_tag struct { + Ccsid uint16 + Txtflag uint16 // aggregating Txflag:1 deferred:1 rsvflags:14 + } + CharsetID [8]byte + Blocks int64 + Genvalue uint32 + Reftim31 [4]byte + Fid [8]byte + Filefmt byte + Fspflag2 byte + _ [2]byte // rsrvd2 + Ctimemsec int32 + Seclabel [8]byte + _ [4]byte // rsrvd3 + _ [4]byte // rsrvd4 + Atim Time_t + Mtim Time_t + Ctim Time_t + Creatim Time_t + Reftim Time_t + _ [24]byte // rsrvd5 +} + +type Statvfs_t struct { + ID [4]byte + Len int32 + Bsize uint64 + Blocks uint64 + Usedspace uint64 + Bavail uint64 + Flag uint64 + Maxfilesize int64 + _ [16]byte + Frsize uint64 + Bfree uint64 + Files uint32 + Ffree uint32 + Favail uint32 + Namemax31 uint32 + Invarsec uint32 + _ [4]byte + Fsid uint64 + Namemax uint64 +} + +type Statfs_t struct { + Type uint64 + Bsize uint64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint32 + Ffree uint32 + Fsid uint64 + Namelen uint64 + Frsize uint64 + Flags uint64 + _ [4]uint64 +} + +type direntLE struct { + Reclen uint16 + Namlen uint16 + Ino uint32 + Extra uintptr + Name [256]byte +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]uint8 + _ [5]byte +} + +type FdSet struct { + Bits [64]int32 +} + +// This struct is packed on z/OS so it can't be used directly. +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 +} + +type F_cnvrt struct { + Cvtcmd int32 + Pccsid int16 + Fccsid int16 +} + +type Termios struct { + Cflag uint32 + Iflag uint32 + Lflag uint32 + Oflag uint32 + Cc [11]uint8 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type W_Mnth struct { + Hid [4]byte + Size int32 + Cur1 int32 //32bit pointer + Cur2 int32 //^ + Devno uint32 + _ [4]byte +} + +type W_Mntent struct { + Fstype uint32 + Mode uint32 + Dev uint32 + Parentdev uint32 + Rootino uint32 + Status byte + Ddname [9]byte + Fstname [9]byte + Fsname [45]byte + Pathlen uint32 + Mountpoint [1024]byte + Jobname [8]byte + PID int32 + Parmoffset int32 + Parmlen int16 + Owner [8]byte + Quiesceowner [8]byte + _ [38]byte +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 + Name string +} + +const ( + SizeofInotifyEvent = 0x10 +) + +type ConsMsg2 struct { + Cm2Format uint16 + Cm2R1 uint16 + Cm2Msglength uint32 + Cm2Msg *byte + Cm2R2 [4]byte + Cm2R3 [4]byte + Cm2Routcde *uint32 + Cm2Descr *uint32 + Cm2Msgflag uint32 + Cm2Token uint32 + Cm2Msgid *uint32 + Cm2R4 [4]byte + Cm2DomToken uint32 + Cm2DomMsgid *uint32 + Cm2ModCartptr *byte + Cm2ModConsidptr *byte + Cm2MsgCart [8]byte + Cm2MsgConsid [4]byte + Cm2R5 [12]byte +} + +const ( + CC_modify = 1 + CC_stop = 2 + CONSOLE_FORMAT_2 = 2 + CONSOLE_FORMAT_3 = 3 + CONSOLE_HRDCPY = 0x80000000 +) + +type OpenHow struct { + Flags uint64 + Mode uint64 + Resolve uint64 +} + +const SizeofOpenHow = 0x18 + +const ( + RESOLVE_CACHED = 0x20 + RESOLVE_BENEATH = 0x8 + RESOLVE_IN_ROOT = 0x10 + RESOLVE_NO_MAGICLINKS = 0x2 + RESOLVE_NO_SYMLINKS = 0x4 + RESOLVE_NO_XDEV = 0x1 +) + +type Siginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + _ [44]byte +} + +type SysvIpcPerm struct { + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode int32 +} + +type SysvShmDesc struct { + Perm SysvIpcPerm + _ [4]byte + Lpid int32 + Cpid int32 + Nattch uint32 + _ [4]byte + _ [4]byte + _ [4]byte + _ int32 + _ uint8 + _ uint8 + _ uint16 + _ *byte + Segsz uint64 + Atime Time_t + Dtime Time_t + Ctime Time_t +} + +type SysvShmDesc64 struct { + Perm SysvIpcPerm + _ [4]byte + Lpid int32 + Cpid int32 + Nattch uint32 + _ [4]byte + _ [4]byte + _ [4]byte + _ int32 + _ byte + _ uint8 + _ uint16 + _ *byte + Segsz uint64 + Atime int64 + Dtime int64 + Ctime int64 +} diff --git a/tests/vendor/golang.org/x/text/LICENSE b/tests/vendor/golang.org/x/text/LICENSE new file mode 100644 index 000000000..2a7cf70da --- /dev/null +++ b/tests/vendor/golang.org/x/text/LICENSE @@ -0,0 +1,27 @@ +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/tests/vendor/golang.org/x/text/PATENTS b/tests/vendor/golang.org/x/text/PATENTS new file mode 100644 index 000000000..733099041 --- /dev/null +++ b/tests/vendor/golang.org/x/text/PATENTS @@ -0,0 +1,22 @@ +Additional IP Rights Grant (Patents) + +"This implementation" means the copyrightable works distributed by +Google as part of the Go project. + +Google hereby grants to You a perpetual, worldwide, non-exclusive, +no-charge, royalty-free, irrevocable (except as stated in this section) +patent license to make, have made, use, offer to sell, sell, import, +transfer and otherwise run, modify and propagate the contents of this +implementation of Go, where such license applies only to those patent +claims, both currently owned or controlled by Google and acquired in +the future, licensable by Google that are necessarily infringed by this +implementation of Go. This grant does not include claims that would be +infringed only as a consequence of further modification of this +implementation. If you or your agent or exclusive licensee institute or +order or agree to the institution of patent litigation against any +entity (including a cross-claim or counterclaim in a lawsuit) alleging +that this implementation of Go or any code incorporated within this +implementation of Go constitutes direct or contributory patent +infringement, or inducement of patent infringement, then any patent +rights granted to you under this License for this implementation of Go +shall terminate as of the date such litigation is filed. diff --git a/tests/vendor/golang.org/x/text/encoding/charmap/charmap.go b/tests/vendor/golang.org/x/text/encoding/charmap/charmap.go new file mode 100644 index 000000000..e89ff0734 --- /dev/null +++ b/tests/vendor/golang.org/x/text/encoding/charmap/charmap.go @@ -0,0 +1,249 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:generate go run maketables.go + +// Package charmap provides simple character encodings such as IBM Code Page 437 +// and Windows 1252. +package charmap // import "golang.org/x/text/encoding/charmap" + +import ( + "unicode/utf8" + + "golang.org/x/text/encoding" + "golang.org/x/text/encoding/internal" + "golang.org/x/text/encoding/internal/identifier" + "golang.org/x/text/transform" +) + +// These encodings vary only in the way clients should interpret them. Their +// coded character set is identical and a single implementation can be shared. +var ( + // ISO8859_6E is the ISO 8859-6E encoding. + ISO8859_6E encoding.Encoding = &iso8859_6E + + // ISO8859_6I is the ISO 8859-6I encoding. + ISO8859_6I encoding.Encoding = &iso8859_6I + + // ISO8859_8E is the ISO 8859-8E encoding. + ISO8859_8E encoding.Encoding = &iso8859_8E + + // ISO8859_8I is the ISO 8859-8I encoding. + ISO8859_8I encoding.Encoding = &iso8859_8I + + iso8859_6E = internal.Encoding{ + Encoding: ISO8859_6, + Name: "ISO-8859-6E", + MIB: identifier.ISO88596E, + } + + iso8859_6I = internal.Encoding{ + Encoding: ISO8859_6, + Name: "ISO-8859-6I", + MIB: identifier.ISO88596I, + } + + iso8859_8E = internal.Encoding{ + Encoding: ISO8859_8, + Name: "ISO-8859-8E", + MIB: identifier.ISO88598E, + } + + iso8859_8I = internal.Encoding{ + Encoding: ISO8859_8, + Name: "ISO-8859-8I", + MIB: identifier.ISO88598I, + } +) + +// All is a list of all defined encodings in this package. +var All []encoding.Encoding = listAll + +// TODO: implement these encodings, in order of importance. +// ASCII, ISO8859_1: Rather common. Close to Windows 1252. +// ISO8859_9: Close to Windows 1254. + +// utf8Enc holds a rune's UTF-8 encoding in data[:len]. +type utf8Enc struct { + len uint8 + data [3]byte +} + +// Charmap is an 8-bit character set encoding. +type Charmap struct { + // name is the encoding's name. + name string + // mib is the encoding type of this encoder. + mib identifier.MIB + // asciiSuperset states whether the encoding is a superset of ASCII. + asciiSuperset bool + // low is the lower bound of the encoded byte for a non-ASCII rune. If + // Charmap.asciiSuperset is true then this will be 0x80, otherwise 0x00. + low uint8 + // replacement is the encoded replacement character. + replacement byte + // decode is the map from encoded byte to UTF-8. + decode [256]utf8Enc + // encoding is the map from runes to encoded bytes. Each entry is a + // uint32: the high 8 bits are the encoded byte and the low 24 bits are + // the rune. The table entries are sorted by ascending rune. + encode [256]uint32 +} + +// NewDecoder implements the encoding.Encoding interface. +func (m *Charmap) NewDecoder() *encoding.Decoder { + return &encoding.Decoder{Transformer: charmapDecoder{charmap: m}} +} + +// NewEncoder implements the encoding.Encoding interface. +func (m *Charmap) NewEncoder() *encoding.Encoder { + return &encoding.Encoder{Transformer: charmapEncoder{charmap: m}} +} + +// String returns the Charmap's name. +func (m *Charmap) String() string { + return m.name +} + +// ID implements an internal interface. +func (m *Charmap) ID() (mib identifier.MIB, other string) { + return m.mib, "" +} + +// charmapDecoder implements transform.Transformer by decoding to UTF-8. +type charmapDecoder struct { + transform.NopResetter + charmap *Charmap +} + +func (m charmapDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + for i, c := range src { + if m.charmap.asciiSuperset && c < utf8.RuneSelf { + if nDst >= len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst] = c + nDst++ + nSrc = i + 1 + continue + } + + decode := &m.charmap.decode[c] + n := int(decode.len) + if nDst+n > len(dst) { + err = transform.ErrShortDst + break + } + // It's 15% faster to avoid calling copy for these tiny slices. + for j := 0; j < n; j++ { + dst[nDst] = decode.data[j] + nDst++ + } + nSrc = i + 1 + } + return nDst, nSrc, err +} + +// DecodeByte returns the Charmap's rune decoding of the byte b. +func (m *Charmap) DecodeByte(b byte) rune { + switch x := &m.decode[b]; x.len { + case 1: + return rune(x.data[0]) + case 2: + return rune(x.data[0]&0x1f)<<6 | rune(x.data[1]&0x3f) + default: + return rune(x.data[0]&0x0f)<<12 | rune(x.data[1]&0x3f)<<6 | rune(x.data[2]&0x3f) + } +} + +// charmapEncoder implements transform.Transformer by encoding from UTF-8. +type charmapEncoder struct { + transform.NopResetter + charmap *Charmap +} + +func (m charmapEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + r, size := rune(0), 0 +loop: + for nSrc < len(src) { + if nDst >= len(dst) { + err = transform.ErrShortDst + break + } + r = rune(src[nSrc]) + + // Decode a 1-byte rune. + if r < utf8.RuneSelf { + if m.charmap.asciiSuperset { + nSrc++ + dst[nDst] = uint8(r) + nDst++ + continue + } + size = 1 + + } else { + // Decode a multi-byte rune. + r, size = utf8.DecodeRune(src[nSrc:]) + if size == 1 { + // All valid runes of size 1 (those below utf8.RuneSelf) were + // handled above. We have invalid UTF-8 or we haven't seen the + // full character yet. + if !atEOF && !utf8.FullRune(src[nSrc:]) { + err = transform.ErrShortSrc + } else { + err = internal.RepertoireError(m.charmap.replacement) + } + break + } + } + + // Binary search in [low, high) for that rune in the m.charmap.encode table. + for low, high := int(m.charmap.low), 0x100; ; { + if low >= high { + err = internal.RepertoireError(m.charmap.replacement) + break loop + } + mid := (low + high) / 2 + got := m.charmap.encode[mid] + gotRune := rune(got & (1<<24 - 1)) + if gotRune < r { + low = mid + 1 + } else if gotRune > r { + high = mid + } else { + dst[nDst] = byte(got >> 24) + nDst++ + break + } + } + nSrc += size + } + return nDst, nSrc, err +} + +// EncodeRune returns the Charmap's byte encoding of the rune r. ok is whether +// r is in the Charmap's repertoire. If not, b is set to the Charmap's +// replacement byte. This is often the ASCII substitute character '\x1a'. +func (m *Charmap) EncodeRune(r rune) (b byte, ok bool) { + if r < utf8.RuneSelf && m.asciiSuperset { + return byte(r), true + } + for low, high := int(m.low), 0x100; ; { + if low >= high { + return m.replacement, false + } + mid := (low + high) / 2 + got := m.encode[mid] + gotRune := rune(got & (1<<24 - 1)) + if gotRune < r { + low = mid + 1 + } else if gotRune > r { + high = mid + } else { + return byte(got >> 24), true + } + } +} diff --git a/tests/vendor/golang.org/x/text/encoding/charmap/tables.go b/tests/vendor/golang.org/x/text/encoding/charmap/tables.go new file mode 100644 index 000000000..cf7281e9e --- /dev/null +++ b/tests/vendor/golang.org/x/text/encoding/charmap/tables.go @@ -0,0 +1,7410 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +package charmap + +import ( + "golang.org/x/text/encoding" + "golang.org/x/text/encoding/internal/identifier" +) + +// CodePage037 is the IBM Code Page 037 encoding. +var CodePage037 *Charmap = &codePage037 + +var codePage037 = Charmap{ + name: "IBM Code Page 037", + mib: identifier.IBM037, + asciiSuperset: false, + low: 0x00, + replacement: 0x3f, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x9c, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x86, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x97, 0x00}}, {2, [3]byte{0xc2, 0x8d, 0x00}}, + {2, [3]byte{0xc2, 0x8e, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x9d, 0x00}}, {2, [3]byte{0xc2, 0x85, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x87, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x92, 0x00}}, {2, [3]byte{0xc2, 0x8f, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x80, 0x00}}, {2, [3]byte{0xc2, 0x81, 0x00}}, + {2, [3]byte{0xc2, 0x82, 0x00}}, {2, [3]byte{0xc2, 0x83, 0x00}}, + {2, [3]byte{0xc2, 0x84, 0x00}}, {1, [3]byte{0x0a, 0x00, 0x00}}, + {1, [3]byte{0x17, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x88, 0x00}}, {2, [3]byte{0xc2, 0x89, 0x00}}, + {2, [3]byte{0xc2, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0x8b, 0x00}}, + {2, [3]byte{0xc2, 0x8c, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x90, 0x00}}, {2, [3]byte{0xc2, 0x91, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x93, 0x00}}, + {2, [3]byte{0xc2, 0x94, 0x00}}, {2, [3]byte{0xc2, 0x95, 0x00}}, + {2, [3]byte{0xc2, 0x96, 0x00}}, {1, [3]byte{0x04, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x98, 0x00}}, {2, [3]byte{0xc2, 0x99, 0x00}}, + {2, [3]byte{0xc2, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9b, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x9e, 0x00}}, {1, [3]byte{0x1a, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa4, 0x00}}, + {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, + {2, [3]byte{0xc3, 0xa7, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xa2, 0x00}}, {1, [3]byte{0x2e, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x28, 0x00, 0x00}}, + {1, [3]byte{0x2b, 0x00, 0x00}}, {1, [3]byte{0x7c, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {1, [3]byte{0x21, 0x00, 0x00}}, {1, [3]byte{0x24, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x3b, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xac, 0x00}}, + {1, [3]byte{0x2d, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x84, 0x00}}, + {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x83, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {1, [3]byte{0x2c, 0x00, 0x00}}, + {1, [3]byte{0x25, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, + {2, [3]byte{0xc3, 0x8c, 0x00}}, {1, [3]byte{0x60, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x3d, 0x00, 0x00}}, {1, [3]byte{0x22, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x98, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}}, + {2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {1, [3]byte{0x6a, 0x00, 0x00}}, + {1, [3]byte{0x6b, 0x00, 0x00}}, {1, [3]byte{0x6c, 0x00, 0x00}}, + {1, [3]byte{0x6d, 0x00, 0x00}}, {1, [3]byte{0x6e, 0x00, 0x00}}, + {1, [3]byte{0x6f, 0x00, 0x00}}, {1, [3]byte{0x70, 0x00, 0x00}}, + {1, [3]byte{0x71, 0x00, 0x00}}, {1, [3]byte{0x72, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}}, + {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc2, 0xa4, 0x00}}, + {2, [3]byte{0xc2, 0xb5, 0x00}}, {1, [3]byte{0x7e, 0x00, 0x00}}, + {1, [3]byte{0x73, 0x00, 0x00}}, {1, [3]byte{0x74, 0x00, 0x00}}, + {1, [3]byte{0x75, 0x00, 0x00}}, {1, [3]byte{0x76, 0x00, 0x00}}, + {1, [3]byte{0x77, 0x00, 0x00}}, {1, [3]byte{0x78, 0x00, 0x00}}, + {1, [3]byte{0x79, 0x00, 0x00}}, {1, [3]byte{0x7a, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xa1, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}}, + {2, [3]byte{0xc3, 0x90, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, + {2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc2, 0xae, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa5, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc2, 0xa9, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xbc, 0x00}}, + {2, [3]byte{0xc2, 0xbd, 0x00}}, {2, [3]byte{0xc2, 0xbe, 0x00}}, + {1, [3]byte{0x5b, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xaf, 0x00}}, {2, [3]byte{0xc2, 0xa8, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {1, [3]byte{0x7b, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}}, + {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, + {1, [3]byte{0x7d, 0x00, 0x00}}, {1, [3]byte{0x4a, 0x00, 0x00}}, + {1, [3]byte{0x4b, 0x00, 0x00}}, {1, [3]byte{0x4c, 0x00, 0x00}}, + {1, [3]byte{0x4d, 0x00, 0x00}}, {1, [3]byte{0x4e, 0x00, 0x00}}, + {1, [3]byte{0x4f, 0x00, 0x00}}, {1, [3]byte{0x50, 0x00, 0x00}}, + {1, [3]byte{0x51, 0x00, 0x00}}, {1, [3]byte{0x52, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xb9, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {1, [3]byte{0x53, 0x00, 0x00}}, {1, [3]byte{0x54, 0x00, 0x00}}, + {1, [3]byte{0x55, 0x00, 0x00}}, {1, [3]byte{0x56, 0x00, 0x00}}, + {1, [3]byte{0x57, 0x00, 0x00}}, {1, [3]byte{0x58, 0x00, 0x00}}, + {1, [3]byte{0x59, 0x00, 0x00}}, {1, [3]byte{0x5a, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0x94, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x92, 0x00}}, + {2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9f, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x37000004, 0x2d000005, 0x2e000006, 0x2f000007, + 0x16000008, 0x05000009, 0x2500000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x3c000014, 0x3d000015, 0x32000016, 0x26000017, + 0x18000018, 0x19000019, 0x3f00001a, 0x2700001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x40000020, 0x5a000021, 0x7f000022, 0x7b000023, 0x5b000024, 0x6c000025, 0x50000026, 0x7d000027, + 0x4d000028, 0x5d000029, 0x5c00002a, 0x4e00002b, 0x6b00002c, 0x6000002d, 0x4b00002e, 0x6100002f, + 0xf0000030, 0xf1000031, 0xf2000032, 0xf3000033, 0xf4000034, 0xf5000035, 0xf6000036, 0xf7000037, + 0xf8000038, 0xf9000039, 0x7a00003a, 0x5e00003b, 0x4c00003c, 0x7e00003d, 0x6e00003e, 0x6f00003f, + 0x7c000040, 0xc1000041, 0xc2000042, 0xc3000043, 0xc4000044, 0xc5000045, 0xc6000046, 0xc7000047, + 0xc8000048, 0xc9000049, 0xd100004a, 0xd200004b, 0xd300004c, 0xd400004d, 0xd500004e, 0xd600004f, + 0xd7000050, 0xd8000051, 0xd9000052, 0xe2000053, 0xe3000054, 0xe4000055, 0xe5000056, 0xe6000057, + 0xe7000058, 0xe8000059, 0xe900005a, 0xba00005b, 0xe000005c, 0xbb00005d, 0xb000005e, 0x6d00005f, + 0x79000060, 0x81000061, 0x82000062, 0x83000063, 0x84000064, 0x85000065, 0x86000066, 0x87000067, + 0x88000068, 0x89000069, 0x9100006a, 0x9200006b, 0x9300006c, 0x9400006d, 0x9500006e, 0x9600006f, + 0x97000070, 0x98000071, 0x99000072, 0xa2000073, 0xa3000074, 0xa4000075, 0xa5000076, 0xa6000077, + 0xa7000078, 0xa8000079, 0xa900007a, 0xc000007b, 0x4f00007c, 0xd000007d, 0xa100007e, 0x0700007f, + 0x20000080, 0x21000081, 0x22000082, 0x23000083, 0x24000084, 0x15000085, 0x06000086, 0x17000087, + 0x28000088, 0x29000089, 0x2a00008a, 0x2b00008b, 0x2c00008c, 0x0900008d, 0x0a00008e, 0x1b00008f, + 0x30000090, 0x31000091, 0x1a000092, 0x33000093, 0x34000094, 0x35000095, 0x36000096, 0x08000097, + 0x38000098, 0x39000099, 0x3a00009a, 0x3b00009b, 0x0400009c, 0x1400009d, 0x3e00009e, 0xff00009f, + 0x410000a0, 0xaa0000a1, 0x4a0000a2, 0xb10000a3, 0x9f0000a4, 0xb20000a5, 0x6a0000a6, 0xb50000a7, + 0xbd0000a8, 0xb40000a9, 0x9a0000aa, 0x8a0000ab, 0x5f0000ac, 0xca0000ad, 0xaf0000ae, 0xbc0000af, + 0x900000b0, 0x8f0000b1, 0xea0000b2, 0xfa0000b3, 0xbe0000b4, 0xa00000b5, 0xb60000b6, 0xb30000b7, + 0x9d0000b8, 0xda0000b9, 0x9b0000ba, 0x8b0000bb, 0xb70000bc, 0xb80000bd, 0xb90000be, 0xab0000bf, + 0x640000c0, 0x650000c1, 0x620000c2, 0x660000c3, 0x630000c4, 0x670000c5, 0x9e0000c6, 0x680000c7, + 0x740000c8, 0x710000c9, 0x720000ca, 0x730000cb, 0x780000cc, 0x750000cd, 0x760000ce, 0x770000cf, + 0xac0000d0, 0x690000d1, 0xed0000d2, 0xee0000d3, 0xeb0000d4, 0xef0000d5, 0xec0000d6, 0xbf0000d7, + 0x800000d8, 0xfd0000d9, 0xfe0000da, 0xfb0000db, 0xfc0000dc, 0xad0000dd, 0xae0000de, 0x590000df, + 0x440000e0, 0x450000e1, 0x420000e2, 0x460000e3, 0x430000e4, 0x470000e5, 0x9c0000e6, 0x480000e7, + 0x540000e8, 0x510000e9, 0x520000ea, 0x530000eb, 0x580000ec, 0x550000ed, 0x560000ee, 0x570000ef, + 0x8c0000f0, 0x490000f1, 0xcd0000f2, 0xce0000f3, 0xcb0000f4, 0xcf0000f5, 0xcc0000f6, 0xe10000f7, + 0x700000f8, 0xdd0000f9, 0xde0000fa, 0xdb0000fb, 0xdc0000fc, 0x8d0000fd, 0x8e0000fe, 0xdf0000ff, + }, +} + +// CodePage437 is the IBM Code Page 437 encoding. +var CodePage437 *Charmap = &codePage437 + +var codePage437 = Charmap{ + name: "IBM Code Page 437", + mib: identifier.PC8CodePage437, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}}, + {2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa0, 0x00}}, + {2, [3]byte{0xc3, 0xa5, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xac, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x89, 0x00}}, {2, [3]byte{0xc3, 0xa6, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}}, + {2, [3]byte{0xc3, 0xbb, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xbf, 0x00}}, {2, [3]byte{0xc3, 0x96, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc2, 0xa2, 0x00}}, + {2, [3]byte{0xc2, 0xa3, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xa7}}, {2, [3]byte{0xc6, 0x92, 0x00}}, + {2, [3]byte{0xc3, 0xa1, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}}, + {2, [3]byte{0xc3, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}}, + {2, [3]byte{0xc2, 0xbf, 0x00}}, {3, [3]byte{0xe2, 0x8c, 0x90}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, + {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, + {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}}, + {3, [3]byte{0xe2, 0x94, 0xa4}}, {3, [3]byte{0xe2, 0x95, 0xa1}}, + {3, [3]byte{0xe2, 0x95, 0xa2}}, {3, [3]byte{0xe2, 0x95, 0x96}}, + {3, [3]byte{0xe2, 0x95, 0x95}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, + {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}}, + {3, [3]byte{0xe2, 0x95, 0x9d}}, {3, [3]byte{0xe2, 0x95, 0x9c}}, + {3, [3]byte{0xe2, 0x95, 0x9b}}, {3, [3]byte{0xe2, 0x94, 0x90}}, + {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, + {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}}, + {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}}, + {3, [3]byte{0xe2, 0x95, 0x9e}}, {3, [3]byte{0xe2, 0x95, 0x9f}}, + {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}}, + {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}}, + {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}}, + {3, [3]byte{0xe2, 0x95, 0xac}}, {3, [3]byte{0xe2, 0x95, 0xa7}}, + {3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa4}}, + {3, [3]byte{0xe2, 0x95, 0xa5}}, {3, [3]byte{0xe2, 0x95, 0x99}}, + {3, [3]byte{0xe2, 0x95, 0x98}}, {3, [3]byte{0xe2, 0x95, 0x92}}, + {3, [3]byte{0xe2, 0x95, 0x93}}, {3, [3]byte{0xe2, 0x95, 0xab}}, + {3, [3]byte{0xe2, 0x95, 0xaa}}, {3, [3]byte{0xe2, 0x94, 0x98}}, + {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}}, + {3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x8c}}, + {3, [3]byte{0xe2, 0x96, 0x90}}, {3, [3]byte{0xe2, 0x96, 0x80}}, + {2, [3]byte{0xce, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xce, 0x93, 0x00}}, {2, [3]byte{0xcf, 0x80, 0x00}}, + {2, [3]byte{0xce, 0xa3, 0x00}}, {2, [3]byte{0xcf, 0x83, 0x00}}, + {2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xcf, 0x84, 0x00}}, + {2, [3]byte{0xce, 0xa6, 0x00}}, {2, [3]byte{0xce, 0x98, 0x00}}, + {2, [3]byte{0xce, 0xa9, 0x00}}, {2, [3]byte{0xce, 0xb4, 0x00}}, + {3, [3]byte{0xe2, 0x88, 0x9e}}, {2, [3]byte{0xcf, 0x86, 0x00}}, + {2, [3]byte{0xce, 0xb5, 0x00}}, {3, [3]byte{0xe2, 0x88, 0xa9}}, + {3, [3]byte{0xe2, 0x89, 0xa1}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {3, [3]byte{0xe2, 0x89, 0xa5}}, {3, [3]byte{0xe2, 0x89, 0xa4}}, + {3, [3]byte{0xe2, 0x8c, 0xa0}}, {3, [3]byte{0xe2, 0x8c, 0xa1}}, + {2, [3]byte{0xc3, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x89, 0x88}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x99}}, + {2, [3]byte{0xc2, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}}, + {3, [3]byte{0xe2, 0x81, 0xbf}}, {2, [3]byte{0xc2, 0xb2, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xff0000a0, 0xad0000a1, 0x9b0000a2, 0x9c0000a3, 0x9d0000a5, 0xa60000aa, 0xae0000ab, 0xaa0000ac, + 0xf80000b0, 0xf10000b1, 0xfd0000b2, 0xe60000b5, 0xfa0000b7, 0xa70000ba, 0xaf0000bb, 0xac0000bc, + 0xab0000bd, 0xa80000bf, 0x8e0000c4, 0x8f0000c5, 0x920000c6, 0x800000c7, 0x900000c9, 0xa50000d1, + 0x990000d6, 0x9a0000dc, 0xe10000df, 0x850000e0, 0xa00000e1, 0x830000e2, 0x840000e4, 0x860000e5, + 0x910000e6, 0x870000e7, 0x8a0000e8, 0x820000e9, 0x880000ea, 0x890000eb, 0x8d0000ec, 0xa10000ed, + 0x8c0000ee, 0x8b0000ef, 0xa40000f1, 0x950000f2, 0xa20000f3, 0x930000f4, 0x940000f6, 0xf60000f7, + 0x970000f9, 0xa30000fa, 0x960000fb, 0x810000fc, 0x980000ff, 0x9f000192, 0xe2000393, 0xe9000398, + 0xe40003a3, 0xe80003a6, 0xea0003a9, 0xe00003b1, 0xeb0003b4, 0xee0003b5, 0xe30003c0, 0xe50003c3, + 0xe70003c4, 0xed0003c6, 0xfc00207f, 0x9e0020a7, 0xf9002219, 0xfb00221a, 0xec00221e, 0xef002229, + 0xf7002248, 0xf0002261, 0xf3002264, 0xf2002265, 0xa9002310, 0xf4002320, 0xf5002321, 0xc4002500, + 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, + 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, 0xd5002552, 0xd6002553, 0xc9002554, 0xb8002555, + 0xb7002556, 0xbb002557, 0xd4002558, 0xd3002559, 0xc800255a, 0xbe00255b, 0xbd00255c, 0xbc00255d, + 0xc600255e, 0xc700255f, 0xcc002560, 0xb5002561, 0xb6002562, 0xb9002563, 0xd1002564, 0xd2002565, + 0xcb002566, 0xcf002567, 0xd0002568, 0xca002569, 0xd800256a, 0xd700256b, 0xce00256c, 0xdf002580, + 0xdc002584, 0xdb002588, 0xdd00258c, 0xde002590, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, + }, +} + +// CodePage850 is the IBM Code Page 850 encoding. +var CodePage850 *Charmap = &codePage850 + +var codePage850 = Charmap{ + name: "IBM Code Page 850", + mib: identifier.PC850Multilingual, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}}, + {2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa0, 0x00}}, + {2, [3]byte{0xc3, 0xa5, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xac, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x89, 0x00}}, {2, [3]byte{0xc3, 0xa6, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}}, + {2, [3]byte{0xc3, 0xbb, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xbf, 0x00}}, {2, [3]byte{0xc3, 0x96, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0xb8, 0x00}}, + {2, [3]byte{0xc2, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x98, 0x00}}, + {2, [3]byte{0xc3, 0x97, 0x00}}, {2, [3]byte{0xc6, 0x92, 0x00}}, + {2, [3]byte{0xc3, 0xa1, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}}, + {2, [3]byte{0xc3, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}}, + {2, [3]byte{0xc2, 0xbf, 0x00}}, {2, [3]byte{0xc2, 0xae, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, + {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, + {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}}, + {3, [3]byte{0xe2, 0x94, 0xa4}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x80, 0x00}}, + {2, [3]byte{0xc2, 0xa9, 0x00}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, + {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}}, + {3, [3]byte{0xe2, 0x95, 0x9d}}, {2, [3]byte{0xc2, 0xa2, 0x00}}, + {2, [3]byte{0xc2, 0xa5, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x90}}, + {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, + {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}}, + {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}}, + {2, [3]byte{0xc3, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}}, + {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}}, + {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}}, + {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}}, + {3, [3]byte{0xe2, 0x95, 0xac}}, {2, [3]byte{0xc2, 0xa4, 0x00}}, + {2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0x90, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc4, 0xb1, 0x00}}, + {2, [3]byte{0xc3, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0x8e, 0x00}}, + {2, [3]byte{0xc3, 0x8f, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x98}}, + {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}}, + {3, [3]byte{0xe2, 0x96, 0x84}}, {2, [3]byte{0xc2, 0xa6, 0x00}}, + {2, [3]byte{0xc3, 0x8c, 0x00}}, {3, [3]byte{0xe2, 0x96, 0x80}}, + {2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x92, 0x00}}, + {2, [3]byte{0xc3, 0xb5, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xc3, 0xbe, 0x00}}, + {2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9a, 0x00}}, + {2, [3]byte{0xc3, 0x9b, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0xbd, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, + {2, [3]byte{0xc2, 0xaf, 0x00}}, {2, [3]byte{0xc2, 0xb4, 0x00}}, + {2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {3, [3]byte{0xe2, 0x80, 0x97}}, {2, [3]byte{0xc2, 0xbe, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xa8, 0x00}}, + {2, [3]byte{0xc2, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, + {2, [3]byte{0xc2, 0xb3, 0x00}}, {2, [3]byte{0xc2, 0xb2, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xff0000a0, 0xad0000a1, 0xbd0000a2, 0x9c0000a3, 0xcf0000a4, 0xbe0000a5, 0xdd0000a6, 0xf50000a7, + 0xf90000a8, 0xb80000a9, 0xa60000aa, 0xae0000ab, 0xaa0000ac, 0xf00000ad, 0xa90000ae, 0xee0000af, + 0xf80000b0, 0xf10000b1, 0xfd0000b2, 0xfc0000b3, 0xef0000b4, 0xe60000b5, 0xf40000b6, 0xfa0000b7, + 0xf70000b8, 0xfb0000b9, 0xa70000ba, 0xaf0000bb, 0xac0000bc, 0xab0000bd, 0xf30000be, 0xa80000bf, + 0xb70000c0, 0xb50000c1, 0xb60000c2, 0xc70000c3, 0x8e0000c4, 0x8f0000c5, 0x920000c6, 0x800000c7, + 0xd40000c8, 0x900000c9, 0xd20000ca, 0xd30000cb, 0xde0000cc, 0xd60000cd, 0xd70000ce, 0xd80000cf, + 0xd10000d0, 0xa50000d1, 0xe30000d2, 0xe00000d3, 0xe20000d4, 0xe50000d5, 0x990000d6, 0x9e0000d7, + 0x9d0000d8, 0xeb0000d9, 0xe90000da, 0xea0000db, 0x9a0000dc, 0xed0000dd, 0xe80000de, 0xe10000df, + 0x850000e0, 0xa00000e1, 0x830000e2, 0xc60000e3, 0x840000e4, 0x860000e5, 0x910000e6, 0x870000e7, + 0x8a0000e8, 0x820000e9, 0x880000ea, 0x890000eb, 0x8d0000ec, 0xa10000ed, 0x8c0000ee, 0x8b0000ef, + 0xd00000f0, 0xa40000f1, 0x950000f2, 0xa20000f3, 0x930000f4, 0xe40000f5, 0x940000f6, 0xf60000f7, + 0x9b0000f8, 0x970000f9, 0xa30000fa, 0x960000fb, 0x810000fc, 0xec0000fd, 0xe70000fe, 0x980000ff, + 0xd5000131, 0x9f000192, 0xf2002017, 0xc4002500, 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, + 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, + 0xc9002554, 0xbb002557, 0xc800255a, 0xbc00255d, 0xcc002560, 0xb9002563, 0xcb002566, 0xca002569, + 0xce00256c, 0xdf002580, 0xdc002584, 0xdb002588, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, + }, +} + +// CodePage852 is the IBM Code Page 852 encoding. +var CodePage852 *Charmap = &codePage852 + +var codePage852 = Charmap{ + name: "IBM Code Page 852", + mib: identifier.PCp852, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}}, + {2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc5, 0xaf, 0x00}}, + {2, [3]byte{0xc4, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc5, 0x82, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc5, 0x90, 0x00}}, {2, [3]byte{0xc5, 0x91, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc5, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc4, 0x86, 0x00}}, + {2, [3]byte{0xc3, 0x89, 0x00}}, {2, [3]byte{0xc4, 0xb9, 0x00}}, + {2, [3]byte{0xc4, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc4, 0xbd, 0x00}}, + {2, [3]byte{0xc4, 0xbe, 0x00}}, {2, [3]byte{0xc5, 0x9a, 0x00}}, + {2, [3]byte{0xc5, 0x9b, 0x00}}, {2, [3]byte{0xc3, 0x96, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc5, 0xa4, 0x00}}, + {2, [3]byte{0xc5, 0xa5, 0x00}}, {2, [3]byte{0xc5, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x97, 0x00}}, {2, [3]byte{0xc4, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0xa1, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}}, + {2, [3]byte{0xc4, 0x84, 0x00}}, {2, [3]byte{0xc4, 0x85, 0x00}}, + {2, [3]byte{0xc5, 0xbd, 0x00}}, {2, [3]byte{0xc5, 0xbe, 0x00}}, + {2, [3]byte{0xc4, 0x98, 0x00}}, {2, [3]byte{0xc4, 0x99, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc5, 0xba, 0x00}}, + {2, [3]byte{0xc4, 0x8c, 0x00}}, {2, [3]byte{0xc5, 0x9f, 0x00}}, + {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, + {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}}, + {3, [3]byte{0xe2, 0x94, 0xa4}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc4, 0x9a, 0x00}}, + {2, [3]byte{0xc5, 0x9e, 0x00}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, + {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}}, + {3, [3]byte{0xe2, 0x95, 0x9d}}, {2, [3]byte{0xc5, 0xbb, 0x00}}, + {2, [3]byte{0xc5, 0xbc, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x90}}, + {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, + {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}}, + {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}}, + {2, [3]byte{0xc4, 0x82, 0x00}}, {2, [3]byte{0xc4, 0x83, 0x00}}, + {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}}, + {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}}, + {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}}, + {3, [3]byte{0xe2, 0x95, 0xac}}, {2, [3]byte{0xc2, 0xa4, 0x00}}, + {2, [3]byte{0xc4, 0x91, 0x00}}, {2, [3]byte{0xc4, 0x90, 0x00}}, + {2, [3]byte{0xc4, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc4, 0x8f, 0x00}}, {2, [3]byte{0xc5, 0x87, 0x00}}, + {2, [3]byte{0xc3, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0x8e, 0x00}}, + {2, [3]byte{0xc4, 0x9b, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x98}}, + {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}}, + {3, [3]byte{0xe2, 0x96, 0x84}}, {2, [3]byte{0xc5, 0xa2, 0x00}}, + {2, [3]byte{0xc5, 0xae, 0x00}}, {3, [3]byte{0xe2, 0x96, 0x80}}, + {2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc5, 0x83, 0x00}}, + {2, [3]byte{0xc5, 0x84, 0x00}}, {2, [3]byte{0xc5, 0x88, 0x00}}, + {2, [3]byte{0xc5, 0xa0, 0x00}}, {2, [3]byte{0xc5, 0xa1, 0x00}}, + {2, [3]byte{0xc5, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x9a, 0x00}}, + {2, [3]byte{0xc5, 0x95, 0x00}}, {2, [3]byte{0xc5, 0xb0, 0x00}}, + {2, [3]byte{0xc3, 0xbd, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, + {2, [3]byte{0xc5, 0xa3, 0x00}}, {2, [3]byte{0xc2, 0xb4, 0x00}}, + {2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xcb, 0x9d, 0x00}}, + {2, [3]byte{0xcb, 0x9b, 0x00}}, {2, [3]byte{0xcb, 0x87, 0x00}}, + {2, [3]byte{0xcb, 0x98, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xa8, 0x00}}, + {2, [3]byte{0xcb, 0x99, 0x00}}, {2, [3]byte{0xc5, 0xb1, 0x00}}, + {2, [3]byte{0xc5, 0x98, 0x00}}, {2, [3]byte{0xc5, 0x99, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xff0000a0, 0xcf0000a4, 0xf50000a7, 0xf90000a8, 0xae0000ab, 0xaa0000ac, 0xf00000ad, 0xf80000b0, + 0xef0000b4, 0xf70000b8, 0xaf0000bb, 0xb50000c1, 0xb60000c2, 0x8e0000c4, 0x800000c7, 0x900000c9, + 0xd30000cb, 0xd60000cd, 0xd70000ce, 0xe00000d3, 0xe20000d4, 0x990000d6, 0x9e0000d7, 0xe90000da, + 0x9a0000dc, 0xed0000dd, 0xe10000df, 0xa00000e1, 0x830000e2, 0x840000e4, 0x870000e7, 0x820000e9, + 0x890000eb, 0xa10000ed, 0x8c0000ee, 0xa20000f3, 0x930000f4, 0x940000f6, 0xf60000f7, 0xa30000fa, + 0x810000fc, 0xec0000fd, 0xc6000102, 0xc7000103, 0xa4000104, 0xa5000105, 0x8f000106, 0x86000107, + 0xac00010c, 0x9f00010d, 0xd200010e, 0xd400010f, 0xd1000110, 0xd0000111, 0xa8000118, 0xa9000119, + 0xb700011a, 0xd800011b, 0x91000139, 0x9200013a, 0x9500013d, 0x9600013e, 0x9d000141, 0x88000142, + 0xe3000143, 0xe4000144, 0xd5000147, 0xe5000148, 0x8a000150, 0x8b000151, 0xe8000154, 0xea000155, + 0xfc000158, 0xfd000159, 0x9700015a, 0x9800015b, 0xb800015e, 0xad00015f, 0xe6000160, 0xe7000161, + 0xdd000162, 0xee000163, 0x9b000164, 0x9c000165, 0xde00016e, 0x8500016f, 0xeb000170, 0xfb000171, + 0x8d000179, 0xab00017a, 0xbd00017b, 0xbe00017c, 0xa600017d, 0xa700017e, 0xf30002c7, 0xf40002d8, + 0xfa0002d9, 0xf20002db, 0xf10002dd, 0xc4002500, 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, + 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, + 0xc9002554, 0xbb002557, 0xc800255a, 0xbc00255d, 0xcc002560, 0xb9002563, 0xcb002566, 0xca002569, + 0xce00256c, 0xdf002580, 0xdc002584, 0xdb002588, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, + }, +} + +// CodePage855 is the IBM Code Page 855 encoding. +var CodePage855 *Charmap = &codePage855 + +var codePage855 = Charmap{ + name: "IBM Code Page 855", + mib: identifier.IBM855, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xd1, 0x92, 0x00}}, {2, [3]byte{0xd0, 0x82, 0x00}}, + {2, [3]byte{0xd1, 0x93, 0x00}}, {2, [3]byte{0xd0, 0x83, 0x00}}, + {2, [3]byte{0xd1, 0x91, 0x00}}, {2, [3]byte{0xd0, 0x81, 0x00}}, + {2, [3]byte{0xd1, 0x94, 0x00}}, {2, [3]byte{0xd0, 0x84, 0x00}}, + {2, [3]byte{0xd1, 0x95, 0x00}}, {2, [3]byte{0xd0, 0x85, 0x00}}, + {2, [3]byte{0xd1, 0x96, 0x00}}, {2, [3]byte{0xd0, 0x86, 0x00}}, + {2, [3]byte{0xd1, 0x97, 0x00}}, {2, [3]byte{0xd0, 0x87, 0x00}}, + {2, [3]byte{0xd1, 0x98, 0x00}}, {2, [3]byte{0xd0, 0x88, 0x00}}, + {2, [3]byte{0xd1, 0x99, 0x00}}, {2, [3]byte{0xd0, 0x89, 0x00}}, + {2, [3]byte{0xd1, 0x9a, 0x00}}, {2, [3]byte{0xd0, 0x8a, 0x00}}, + {2, [3]byte{0xd1, 0x9b, 0x00}}, {2, [3]byte{0xd0, 0x8b, 0x00}}, + {2, [3]byte{0xd1, 0x9c, 0x00}}, {2, [3]byte{0xd0, 0x8c, 0x00}}, + {2, [3]byte{0xd1, 0x9e, 0x00}}, {2, [3]byte{0xd0, 0x8e, 0x00}}, + {2, [3]byte{0xd1, 0x9f, 0x00}}, {2, [3]byte{0xd0, 0x8f, 0x00}}, + {2, [3]byte{0xd1, 0x8e, 0x00}}, {2, [3]byte{0xd0, 0xae, 0x00}}, + {2, [3]byte{0xd1, 0x8a, 0x00}}, {2, [3]byte{0xd0, 0xaa, 0x00}}, + {2, [3]byte{0xd0, 0xb0, 0x00}}, {2, [3]byte{0xd0, 0x90, 0x00}}, + {2, [3]byte{0xd0, 0xb1, 0x00}}, {2, [3]byte{0xd0, 0x91, 0x00}}, + {2, [3]byte{0xd1, 0x86, 0x00}}, {2, [3]byte{0xd0, 0xa6, 0x00}}, + {2, [3]byte{0xd0, 0xb4, 0x00}}, {2, [3]byte{0xd0, 0x94, 0x00}}, + {2, [3]byte{0xd0, 0xb5, 0x00}}, {2, [3]byte{0xd0, 0x95, 0x00}}, + {2, [3]byte{0xd1, 0x84, 0x00}}, {2, [3]byte{0xd0, 0xa4, 0x00}}, + {2, [3]byte{0xd0, 0xb3, 0x00}}, {2, [3]byte{0xd0, 0x93, 0x00}}, + {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, + {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}}, + {3, [3]byte{0xe2, 0x94, 0xa4}}, {2, [3]byte{0xd1, 0x85, 0x00}}, + {2, [3]byte{0xd0, 0xa5, 0x00}}, {2, [3]byte{0xd0, 0xb8, 0x00}}, + {2, [3]byte{0xd0, 0x98, 0x00}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, + {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}}, + {3, [3]byte{0xe2, 0x95, 0x9d}}, {2, [3]byte{0xd0, 0xb9, 0x00}}, + {2, [3]byte{0xd0, 0x99, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x90}}, + {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, + {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}}, + {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}}, + {2, [3]byte{0xd0, 0xba, 0x00}}, {2, [3]byte{0xd0, 0x9a, 0x00}}, + {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}}, + {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}}, + {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}}, + {3, [3]byte{0xe2, 0x95, 0xac}}, {2, [3]byte{0xc2, 0xa4, 0x00}}, + {2, [3]byte{0xd0, 0xbb, 0x00}}, {2, [3]byte{0xd0, 0x9b, 0x00}}, + {2, [3]byte{0xd0, 0xbc, 0x00}}, {2, [3]byte{0xd0, 0x9c, 0x00}}, + {2, [3]byte{0xd0, 0xbd, 0x00}}, {2, [3]byte{0xd0, 0x9d, 0x00}}, + {2, [3]byte{0xd0, 0xbe, 0x00}}, {2, [3]byte{0xd0, 0x9e, 0x00}}, + {2, [3]byte{0xd0, 0xbf, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x98}}, + {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}}, + {3, [3]byte{0xe2, 0x96, 0x84}}, {2, [3]byte{0xd0, 0x9f, 0x00}}, + {2, [3]byte{0xd1, 0x8f, 0x00}}, {3, [3]byte{0xe2, 0x96, 0x80}}, + {2, [3]byte{0xd0, 0xaf, 0x00}}, {2, [3]byte{0xd1, 0x80, 0x00}}, + {2, [3]byte{0xd0, 0xa0, 0x00}}, {2, [3]byte{0xd1, 0x81, 0x00}}, + {2, [3]byte{0xd0, 0xa1, 0x00}}, {2, [3]byte{0xd1, 0x82, 0x00}}, + {2, [3]byte{0xd0, 0xa2, 0x00}}, {2, [3]byte{0xd1, 0x83, 0x00}}, + {2, [3]byte{0xd0, 0xa3, 0x00}}, {2, [3]byte{0xd0, 0xb6, 0x00}}, + {2, [3]byte{0xd0, 0x96, 0x00}}, {2, [3]byte{0xd0, 0xb2, 0x00}}, + {2, [3]byte{0xd0, 0x92, 0x00}}, {2, [3]byte{0xd1, 0x8c, 0x00}}, + {2, [3]byte{0xd0, 0xac, 0x00}}, {3, [3]byte{0xe2, 0x84, 0x96}}, + {2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xd1, 0x8b, 0x00}}, + {2, [3]byte{0xd0, 0xab, 0x00}}, {2, [3]byte{0xd0, 0xb7, 0x00}}, + {2, [3]byte{0xd0, 0x97, 0x00}}, {2, [3]byte{0xd1, 0x88, 0x00}}, + {2, [3]byte{0xd0, 0xa8, 0x00}}, {2, [3]byte{0xd1, 0x8d, 0x00}}, + {2, [3]byte{0xd0, 0xad, 0x00}}, {2, [3]byte{0xd1, 0x89, 0x00}}, + {2, [3]byte{0xd0, 0xa9, 0x00}}, {2, [3]byte{0xd1, 0x87, 0x00}}, + {2, [3]byte{0xd0, 0xa7, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xff0000a0, 0xcf0000a4, 0xfd0000a7, 0xae0000ab, 0xf00000ad, 0xaf0000bb, 0x85000401, 0x81000402, + 0x83000403, 0x87000404, 0x89000405, 0x8b000406, 0x8d000407, 0x8f000408, 0x91000409, 0x9300040a, + 0x9500040b, 0x9700040c, 0x9900040e, 0x9b00040f, 0xa1000410, 0xa3000411, 0xec000412, 0xad000413, + 0xa7000414, 0xa9000415, 0xea000416, 0xf4000417, 0xb8000418, 0xbe000419, 0xc700041a, 0xd100041b, + 0xd300041c, 0xd500041d, 0xd700041e, 0xdd00041f, 0xe2000420, 0xe4000421, 0xe6000422, 0xe8000423, + 0xab000424, 0xb6000425, 0xa5000426, 0xfc000427, 0xf6000428, 0xfa000429, 0x9f00042a, 0xf200042b, + 0xee00042c, 0xf800042d, 0x9d00042e, 0xe000042f, 0xa0000430, 0xa2000431, 0xeb000432, 0xac000433, + 0xa6000434, 0xa8000435, 0xe9000436, 0xf3000437, 0xb7000438, 0xbd000439, 0xc600043a, 0xd000043b, + 0xd200043c, 0xd400043d, 0xd600043e, 0xd800043f, 0xe1000440, 0xe3000441, 0xe5000442, 0xe7000443, + 0xaa000444, 0xb5000445, 0xa4000446, 0xfb000447, 0xf5000448, 0xf9000449, 0x9e00044a, 0xf100044b, + 0xed00044c, 0xf700044d, 0x9c00044e, 0xde00044f, 0x84000451, 0x80000452, 0x82000453, 0x86000454, + 0x88000455, 0x8a000456, 0x8c000457, 0x8e000458, 0x90000459, 0x9200045a, 0x9400045b, 0x9600045c, + 0x9800045e, 0x9a00045f, 0xef002116, 0xc4002500, 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, + 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, + 0xc9002554, 0xbb002557, 0xc800255a, 0xbc00255d, 0xcc002560, 0xb9002563, 0xcb002566, 0xca002569, + 0xce00256c, 0xdf002580, 0xdc002584, 0xdb002588, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, + }, +} + +// CodePage858 is the Windows Code Page 858 encoding. +var CodePage858 *Charmap = &codePage858 + +var codePage858 = Charmap{ + name: "Windows Code Page 858", + mib: identifier.IBM00858, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}}, + {2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa0, 0x00}}, + {2, [3]byte{0xc3, 0xa5, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xac, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x89, 0x00}}, {2, [3]byte{0xc3, 0xa6, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}}, + {2, [3]byte{0xc3, 0xbb, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xbf, 0x00}}, {2, [3]byte{0xc3, 0x96, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0xb8, 0x00}}, + {2, [3]byte{0xc2, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x98, 0x00}}, + {2, [3]byte{0xc3, 0x97, 0x00}}, {2, [3]byte{0xc6, 0x92, 0x00}}, + {2, [3]byte{0xc3, 0xa1, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}}, + {2, [3]byte{0xc3, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}}, + {2, [3]byte{0xc2, 0xbf, 0x00}}, {2, [3]byte{0xc2, 0xae, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, + {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, + {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}}, + {3, [3]byte{0xe2, 0x94, 0xa4}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x80, 0x00}}, + {2, [3]byte{0xc2, 0xa9, 0x00}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, + {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}}, + {3, [3]byte{0xe2, 0x95, 0x9d}}, {2, [3]byte{0xc2, 0xa2, 0x00}}, + {2, [3]byte{0xc2, 0xa5, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x90}}, + {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, + {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}}, + {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}}, + {2, [3]byte{0xc3, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}}, + {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}}, + {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}}, + {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}}, + {3, [3]byte{0xe2, 0x95, 0xac}}, {2, [3]byte{0xc2, 0xa4, 0x00}}, + {2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0x90, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {3, [3]byte{0xe2, 0x82, 0xac}}, + {2, [3]byte{0xc3, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0x8e, 0x00}}, + {2, [3]byte{0xc3, 0x8f, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x98}}, + {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}}, + {3, [3]byte{0xe2, 0x96, 0x84}}, {2, [3]byte{0xc2, 0xa6, 0x00}}, + {2, [3]byte{0xc3, 0x8c, 0x00}}, {3, [3]byte{0xe2, 0x96, 0x80}}, + {2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x92, 0x00}}, + {2, [3]byte{0xc3, 0xb5, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xc3, 0xbe, 0x00}}, + {2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9a, 0x00}}, + {2, [3]byte{0xc3, 0x9b, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0xbd, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, + {2, [3]byte{0xc2, 0xaf, 0x00}}, {2, [3]byte{0xc2, 0xb4, 0x00}}, + {2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {3, [3]byte{0xe2, 0x80, 0x97}}, {2, [3]byte{0xc2, 0xbe, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xa8, 0x00}}, + {2, [3]byte{0xc2, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, + {2, [3]byte{0xc2, 0xb3, 0x00}}, {2, [3]byte{0xc2, 0xb2, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xff0000a0, 0xad0000a1, 0xbd0000a2, 0x9c0000a3, 0xcf0000a4, 0xbe0000a5, 0xdd0000a6, 0xf50000a7, + 0xf90000a8, 0xb80000a9, 0xa60000aa, 0xae0000ab, 0xaa0000ac, 0xf00000ad, 0xa90000ae, 0xee0000af, + 0xf80000b0, 0xf10000b1, 0xfd0000b2, 0xfc0000b3, 0xef0000b4, 0xe60000b5, 0xf40000b6, 0xfa0000b7, + 0xf70000b8, 0xfb0000b9, 0xa70000ba, 0xaf0000bb, 0xac0000bc, 0xab0000bd, 0xf30000be, 0xa80000bf, + 0xb70000c0, 0xb50000c1, 0xb60000c2, 0xc70000c3, 0x8e0000c4, 0x8f0000c5, 0x920000c6, 0x800000c7, + 0xd40000c8, 0x900000c9, 0xd20000ca, 0xd30000cb, 0xde0000cc, 0xd60000cd, 0xd70000ce, 0xd80000cf, + 0xd10000d0, 0xa50000d1, 0xe30000d2, 0xe00000d3, 0xe20000d4, 0xe50000d5, 0x990000d6, 0x9e0000d7, + 0x9d0000d8, 0xeb0000d9, 0xe90000da, 0xea0000db, 0x9a0000dc, 0xed0000dd, 0xe80000de, 0xe10000df, + 0x850000e0, 0xa00000e1, 0x830000e2, 0xc60000e3, 0x840000e4, 0x860000e5, 0x910000e6, 0x870000e7, + 0x8a0000e8, 0x820000e9, 0x880000ea, 0x890000eb, 0x8d0000ec, 0xa10000ed, 0x8c0000ee, 0x8b0000ef, + 0xd00000f0, 0xa40000f1, 0x950000f2, 0xa20000f3, 0x930000f4, 0xe40000f5, 0x940000f6, 0xf60000f7, + 0x9b0000f8, 0x970000f9, 0xa30000fa, 0x960000fb, 0x810000fc, 0xec0000fd, 0xe70000fe, 0x980000ff, + 0x9f000192, 0xf2002017, 0xd50020ac, 0xc4002500, 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, + 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, + 0xc9002554, 0xbb002557, 0xc800255a, 0xbc00255d, 0xcc002560, 0xb9002563, 0xcb002566, 0xca002569, + 0xce00256c, 0xdf002580, 0xdc002584, 0xdb002588, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, + }, +} + +// CodePage860 is the IBM Code Page 860 encoding. +var CodePage860 *Charmap = &codePage860 + +var codePage860 = Charmap{ + name: "IBM Code Page 860", + mib: identifier.IBM860, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}}, + {2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}}, + {2, [3]byte{0xc3, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0xa0, 0x00}}, + {2, [3]byte{0xc3, 0x81, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0x8a, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0xac, 0x00}}, + {2, [3]byte{0xc3, 0x83, 0x00}}, {2, [3]byte{0xc3, 0x82, 0x00}}, + {2, [3]byte{0xc3, 0x89, 0x00}}, {2, [3]byte{0xc3, 0x80, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, + {2, [3]byte{0xc3, 0xb5, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc2, 0xa2, 0x00}}, + {2, [3]byte{0xc2, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xa7}}, {2, [3]byte{0xc3, 0x93, 0x00}}, + {2, [3]byte{0xc3, 0xa1, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}}, + {2, [3]byte{0xc3, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}}, + {2, [3]byte{0xc2, 0xbf, 0x00}}, {2, [3]byte{0xc3, 0x92, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, + {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, + {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}}, + {3, [3]byte{0xe2, 0x94, 0xa4}}, {3, [3]byte{0xe2, 0x95, 0xa1}}, + {3, [3]byte{0xe2, 0x95, 0xa2}}, {3, [3]byte{0xe2, 0x95, 0x96}}, + {3, [3]byte{0xe2, 0x95, 0x95}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, + {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}}, + {3, [3]byte{0xe2, 0x95, 0x9d}}, {3, [3]byte{0xe2, 0x95, 0x9c}}, + {3, [3]byte{0xe2, 0x95, 0x9b}}, {3, [3]byte{0xe2, 0x94, 0x90}}, + {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, + {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}}, + {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}}, + {3, [3]byte{0xe2, 0x95, 0x9e}}, {3, [3]byte{0xe2, 0x95, 0x9f}}, + {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}}, + {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}}, + {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}}, + {3, [3]byte{0xe2, 0x95, 0xac}}, {3, [3]byte{0xe2, 0x95, 0xa7}}, + {3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa4}}, + {3, [3]byte{0xe2, 0x95, 0xa5}}, {3, [3]byte{0xe2, 0x95, 0x99}}, + {3, [3]byte{0xe2, 0x95, 0x98}}, {3, [3]byte{0xe2, 0x95, 0x92}}, + {3, [3]byte{0xe2, 0x95, 0x93}}, {3, [3]byte{0xe2, 0x95, 0xab}}, + {3, [3]byte{0xe2, 0x95, 0xaa}}, {3, [3]byte{0xe2, 0x94, 0x98}}, + {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}}, + {3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x8c}}, + {3, [3]byte{0xe2, 0x96, 0x90}}, {3, [3]byte{0xe2, 0x96, 0x80}}, + {2, [3]byte{0xce, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xce, 0x93, 0x00}}, {2, [3]byte{0xcf, 0x80, 0x00}}, + {2, [3]byte{0xce, 0xa3, 0x00}}, {2, [3]byte{0xcf, 0x83, 0x00}}, + {2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xcf, 0x84, 0x00}}, + {2, [3]byte{0xce, 0xa6, 0x00}}, {2, [3]byte{0xce, 0x98, 0x00}}, + {2, [3]byte{0xce, 0xa9, 0x00}}, {2, [3]byte{0xce, 0xb4, 0x00}}, + {3, [3]byte{0xe2, 0x88, 0x9e}}, {2, [3]byte{0xcf, 0x86, 0x00}}, + {2, [3]byte{0xce, 0xb5, 0x00}}, {3, [3]byte{0xe2, 0x88, 0xa9}}, + {3, [3]byte{0xe2, 0x89, 0xa1}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {3, [3]byte{0xe2, 0x89, 0xa5}}, {3, [3]byte{0xe2, 0x89, 0xa4}}, + {3, [3]byte{0xe2, 0x8c, 0xa0}}, {3, [3]byte{0xe2, 0x8c, 0xa1}}, + {2, [3]byte{0xc3, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x89, 0x88}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x99}}, + {2, [3]byte{0xc2, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}}, + {3, [3]byte{0xe2, 0x81, 0xbf}}, {2, [3]byte{0xc2, 0xb2, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xff0000a0, 0xad0000a1, 0x9b0000a2, 0x9c0000a3, 0xa60000aa, 0xae0000ab, 0xaa0000ac, 0xf80000b0, + 0xf10000b1, 0xfd0000b2, 0xe60000b5, 0xfa0000b7, 0xa70000ba, 0xaf0000bb, 0xac0000bc, 0xab0000bd, + 0xa80000bf, 0x910000c0, 0x860000c1, 0x8f0000c2, 0x8e0000c3, 0x800000c7, 0x920000c8, 0x900000c9, + 0x890000ca, 0x980000cc, 0x8b0000cd, 0xa50000d1, 0xa90000d2, 0x9f0000d3, 0x8c0000d4, 0x990000d5, + 0x9d0000d9, 0x960000da, 0x9a0000dc, 0xe10000df, 0x850000e0, 0xa00000e1, 0x830000e2, 0x840000e3, + 0x870000e7, 0x8a0000e8, 0x820000e9, 0x880000ea, 0x8d0000ec, 0xa10000ed, 0xa40000f1, 0x950000f2, + 0xa20000f3, 0x930000f4, 0x940000f5, 0xf60000f7, 0x970000f9, 0xa30000fa, 0x810000fc, 0xe2000393, + 0xe9000398, 0xe40003a3, 0xe80003a6, 0xea0003a9, 0xe00003b1, 0xeb0003b4, 0xee0003b5, 0xe30003c0, + 0xe50003c3, 0xe70003c4, 0xed0003c6, 0xfc00207f, 0x9e0020a7, 0xf9002219, 0xfb00221a, 0xec00221e, + 0xef002229, 0xf7002248, 0xf0002261, 0xf3002264, 0xf2002265, 0xf4002320, 0xf5002321, 0xc4002500, + 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, + 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, 0xd5002552, 0xd6002553, 0xc9002554, 0xb8002555, + 0xb7002556, 0xbb002557, 0xd4002558, 0xd3002559, 0xc800255a, 0xbe00255b, 0xbd00255c, 0xbc00255d, + 0xc600255e, 0xc700255f, 0xcc002560, 0xb5002561, 0xb6002562, 0xb9002563, 0xd1002564, 0xd2002565, + 0xcb002566, 0xcf002567, 0xd0002568, 0xca002569, 0xd800256a, 0xd700256b, 0xce00256c, 0xdf002580, + 0xdc002584, 0xdb002588, 0xdd00258c, 0xde002590, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, + }, +} + +// CodePage862 is the IBM Code Page 862 encoding. +var CodePage862 *Charmap = &codePage862 + +var codePage862 = Charmap{ + name: "IBM Code Page 862", + mib: identifier.PC862LatinHebrew, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xd7, 0x90, 0x00}}, {2, [3]byte{0xd7, 0x91, 0x00}}, + {2, [3]byte{0xd7, 0x92, 0x00}}, {2, [3]byte{0xd7, 0x93, 0x00}}, + {2, [3]byte{0xd7, 0x94, 0x00}}, {2, [3]byte{0xd7, 0x95, 0x00}}, + {2, [3]byte{0xd7, 0x96, 0x00}}, {2, [3]byte{0xd7, 0x97, 0x00}}, + {2, [3]byte{0xd7, 0x98, 0x00}}, {2, [3]byte{0xd7, 0x99, 0x00}}, + {2, [3]byte{0xd7, 0x9a, 0x00}}, {2, [3]byte{0xd7, 0x9b, 0x00}}, + {2, [3]byte{0xd7, 0x9c, 0x00}}, {2, [3]byte{0xd7, 0x9d, 0x00}}, + {2, [3]byte{0xd7, 0x9e, 0x00}}, {2, [3]byte{0xd7, 0x9f, 0x00}}, + {2, [3]byte{0xd7, 0xa0, 0x00}}, {2, [3]byte{0xd7, 0xa1, 0x00}}, + {2, [3]byte{0xd7, 0xa2, 0x00}}, {2, [3]byte{0xd7, 0xa3, 0x00}}, + {2, [3]byte{0xd7, 0xa4, 0x00}}, {2, [3]byte{0xd7, 0xa5, 0x00}}, + {2, [3]byte{0xd7, 0xa6, 0x00}}, {2, [3]byte{0xd7, 0xa7, 0x00}}, + {2, [3]byte{0xd7, 0xa8, 0x00}}, {2, [3]byte{0xd7, 0xa9, 0x00}}, + {2, [3]byte{0xd7, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xa2, 0x00}}, + {2, [3]byte{0xc2, 0xa3, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xa7}}, {2, [3]byte{0xc6, 0x92, 0x00}}, + {2, [3]byte{0xc3, 0xa1, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}}, + {2, [3]byte{0xc3, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}}, + {2, [3]byte{0xc2, 0xbf, 0x00}}, {3, [3]byte{0xe2, 0x8c, 0x90}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, + {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, + {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}}, + {3, [3]byte{0xe2, 0x94, 0xa4}}, {3, [3]byte{0xe2, 0x95, 0xa1}}, + {3, [3]byte{0xe2, 0x95, 0xa2}}, {3, [3]byte{0xe2, 0x95, 0x96}}, + {3, [3]byte{0xe2, 0x95, 0x95}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, + {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}}, + {3, [3]byte{0xe2, 0x95, 0x9d}}, {3, [3]byte{0xe2, 0x95, 0x9c}}, + {3, [3]byte{0xe2, 0x95, 0x9b}}, {3, [3]byte{0xe2, 0x94, 0x90}}, + {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, + {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}}, + {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}}, + {3, [3]byte{0xe2, 0x95, 0x9e}}, {3, [3]byte{0xe2, 0x95, 0x9f}}, + {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}}, + {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}}, + {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}}, + {3, [3]byte{0xe2, 0x95, 0xac}}, {3, [3]byte{0xe2, 0x95, 0xa7}}, + {3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa4}}, + {3, [3]byte{0xe2, 0x95, 0xa5}}, {3, [3]byte{0xe2, 0x95, 0x99}}, + {3, [3]byte{0xe2, 0x95, 0x98}}, {3, [3]byte{0xe2, 0x95, 0x92}}, + {3, [3]byte{0xe2, 0x95, 0x93}}, {3, [3]byte{0xe2, 0x95, 0xab}}, + {3, [3]byte{0xe2, 0x95, 0xaa}}, {3, [3]byte{0xe2, 0x94, 0x98}}, + {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}}, + {3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x8c}}, + {3, [3]byte{0xe2, 0x96, 0x90}}, {3, [3]byte{0xe2, 0x96, 0x80}}, + {2, [3]byte{0xce, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xce, 0x93, 0x00}}, {2, [3]byte{0xcf, 0x80, 0x00}}, + {2, [3]byte{0xce, 0xa3, 0x00}}, {2, [3]byte{0xcf, 0x83, 0x00}}, + {2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xcf, 0x84, 0x00}}, + {2, [3]byte{0xce, 0xa6, 0x00}}, {2, [3]byte{0xce, 0x98, 0x00}}, + {2, [3]byte{0xce, 0xa9, 0x00}}, {2, [3]byte{0xce, 0xb4, 0x00}}, + {3, [3]byte{0xe2, 0x88, 0x9e}}, {2, [3]byte{0xcf, 0x86, 0x00}}, + {2, [3]byte{0xce, 0xb5, 0x00}}, {3, [3]byte{0xe2, 0x88, 0xa9}}, + {3, [3]byte{0xe2, 0x89, 0xa1}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {3, [3]byte{0xe2, 0x89, 0xa5}}, {3, [3]byte{0xe2, 0x89, 0xa4}}, + {3, [3]byte{0xe2, 0x8c, 0xa0}}, {3, [3]byte{0xe2, 0x8c, 0xa1}}, + {2, [3]byte{0xc3, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x89, 0x88}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x99}}, + {2, [3]byte{0xc2, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}}, + {3, [3]byte{0xe2, 0x81, 0xbf}}, {2, [3]byte{0xc2, 0xb2, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xff0000a0, 0xad0000a1, 0x9b0000a2, 0x9c0000a3, 0x9d0000a5, 0xa60000aa, 0xae0000ab, 0xaa0000ac, + 0xf80000b0, 0xf10000b1, 0xfd0000b2, 0xe60000b5, 0xfa0000b7, 0xa70000ba, 0xaf0000bb, 0xac0000bc, + 0xab0000bd, 0xa80000bf, 0xa50000d1, 0xe10000df, 0xa00000e1, 0xa10000ed, 0xa40000f1, 0xa20000f3, + 0xf60000f7, 0xa30000fa, 0x9f000192, 0xe2000393, 0xe9000398, 0xe40003a3, 0xe80003a6, 0xea0003a9, + 0xe00003b1, 0xeb0003b4, 0xee0003b5, 0xe30003c0, 0xe50003c3, 0xe70003c4, 0xed0003c6, 0x800005d0, + 0x810005d1, 0x820005d2, 0x830005d3, 0x840005d4, 0x850005d5, 0x860005d6, 0x870005d7, 0x880005d8, + 0x890005d9, 0x8a0005da, 0x8b0005db, 0x8c0005dc, 0x8d0005dd, 0x8e0005de, 0x8f0005df, 0x900005e0, + 0x910005e1, 0x920005e2, 0x930005e3, 0x940005e4, 0x950005e5, 0x960005e6, 0x970005e7, 0x980005e8, + 0x990005e9, 0x9a0005ea, 0xfc00207f, 0x9e0020a7, 0xf9002219, 0xfb00221a, 0xec00221e, 0xef002229, + 0xf7002248, 0xf0002261, 0xf3002264, 0xf2002265, 0xa9002310, 0xf4002320, 0xf5002321, 0xc4002500, + 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, + 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, 0xd5002552, 0xd6002553, 0xc9002554, 0xb8002555, + 0xb7002556, 0xbb002557, 0xd4002558, 0xd3002559, 0xc800255a, 0xbe00255b, 0xbd00255c, 0xbc00255d, + 0xc600255e, 0xc700255f, 0xcc002560, 0xb5002561, 0xb6002562, 0xb9002563, 0xd1002564, 0xd2002565, + 0xcb002566, 0xcf002567, 0xd0002568, 0xca002569, 0xd800256a, 0xd700256b, 0xce00256c, 0xdf002580, + 0xdc002584, 0xdb002588, 0xdd00258c, 0xde002590, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, + }, +} + +// CodePage863 is the IBM Code Page 863 encoding. +var CodePage863 *Charmap = &codePage863 + +var codePage863 = Charmap{ + name: "IBM Code Page 863", + mib: identifier.IBM863, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}}, + {2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0xa0, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x97}}, + {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0x89, 0x00}}, {2, [3]byte{0xc3, 0x88, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, + {2, [3]byte{0xc3, 0x8b, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, + {2, [3]byte{0xc3, 0xbb, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0x94, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc2, 0xa2, 0x00}}, + {2, [3]byte{0xc2, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0x9b, 0x00}}, {2, [3]byte{0xc6, 0x92, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xb4, 0x00}}, + {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}}, + {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}}, + {2, [3]byte{0xc2, 0xb3, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {3, [3]byte{0xe2, 0x8c, 0x90}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbe, 0x00}}, + {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, + {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}}, + {3, [3]byte{0xe2, 0x94, 0xa4}}, {3, [3]byte{0xe2, 0x95, 0xa1}}, + {3, [3]byte{0xe2, 0x95, 0xa2}}, {3, [3]byte{0xe2, 0x95, 0x96}}, + {3, [3]byte{0xe2, 0x95, 0x95}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, + {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}}, + {3, [3]byte{0xe2, 0x95, 0x9d}}, {3, [3]byte{0xe2, 0x95, 0x9c}}, + {3, [3]byte{0xe2, 0x95, 0x9b}}, {3, [3]byte{0xe2, 0x94, 0x90}}, + {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, + {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}}, + {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}}, + {3, [3]byte{0xe2, 0x95, 0x9e}}, {3, [3]byte{0xe2, 0x95, 0x9f}}, + {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}}, + {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}}, + {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}}, + {3, [3]byte{0xe2, 0x95, 0xac}}, {3, [3]byte{0xe2, 0x95, 0xa7}}, + {3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa4}}, + {3, [3]byte{0xe2, 0x95, 0xa5}}, {3, [3]byte{0xe2, 0x95, 0x99}}, + {3, [3]byte{0xe2, 0x95, 0x98}}, {3, [3]byte{0xe2, 0x95, 0x92}}, + {3, [3]byte{0xe2, 0x95, 0x93}}, {3, [3]byte{0xe2, 0x95, 0xab}}, + {3, [3]byte{0xe2, 0x95, 0xaa}}, {3, [3]byte{0xe2, 0x94, 0x98}}, + {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}}, + {3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x8c}}, + {3, [3]byte{0xe2, 0x96, 0x90}}, {3, [3]byte{0xe2, 0x96, 0x80}}, + {2, [3]byte{0xce, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xce, 0x93, 0x00}}, {2, [3]byte{0xcf, 0x80, 0x00}}, + {2, [3]byte{0xce, 0xa3, 0x00}}, {2, [3]byte{0xcf, 0x83, 0x00}}, + {2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xcf, 0x84, 0x00}}, + {2, [3]byte{0xce, 0xa6, 0x00}}, {2, [3]byte{0xce, 0x98, 0x00}}, + {2, [3]byte{0xce, 0xa9, 0x00}}, {2, [3]byte{0xce, 0xb4, 0x00}}, + {3, [3]byte{0xe2, 0x88, 0x9e}}, {2, [3]byte{0xcf, 0x86, 0x00}}, + {2, [3]byte{0xce, 0xb5, 0x00}}, {3, [3]byte{0xe2, 0x88, 0xa9}}, + {3, [3]byte{0xe2, 0x89, 0xa1}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {3, [3]byte{0xe2, 0x89, 0xa5}}, {3, [3]byte{0xe2, 0x89, 0xa4}}, + {3, [3]byte{0xe2, 0x8c, 0xa0}}, {3, [3]byte{0xe2, 0x8c, 0xa1}}, + {2, [3]byte{0xc3, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x89, 0x88}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x99}}, + {2, [3]byte{0xc2, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}}, + {3, [3]byte{0xe2, 0x81, 0xbf}}, {2, [3]byte{0xc2, 0xb2, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xff0000a0, 0x9b0000a2, 0x9c0000a3, 0x980000a4, 0xa00000a6, 0x8f0000a7, 0xa40000a8, 0xae0000ab, + 0xaa0000ac, 0xa70000af, 0xf80000b0, 0xf10000b1, 0xfd0000b2, 0xa60000b3, 0xa10000b4, 0xe60000b5, + 0x860000b6, 0xfa0000b7, 0xa50000b8, 0xaf0000bb, 0xac0000bc, 0xab0000bd, 0xad0000be, 0x8e0000c0, + 0x840000c2, 0x800000c7, 0x910000c8, 0x900000c9, 0x920000ca, 0x940000cb, 0xa80000ce, 0x950000cf, + 0x990000d4, 0x9d0000d9, 0x9e0000db, 0x9a0000dc, 0xe10000df, 0x850000e0, 0x830000e2, 0x870000e7, + 0x8a0000e8, 0x820000e9, 0x880000ea, 0x890000eb, 0x8c0000ee, 0x8b0000ef, 0xa20000f3, 0x930000f4, + 0xf60000f7, 0x970000f9, 0xa30000fa, 0x960000fb, 0x810000fc, 0x9f000192, 0xe2000393, 0xe9000398, + 0xe40003a3, 0xe80003a6, 0xea0003a9, 0xe00003b1, 0xeb0003b4, 0xee0003b5, 0xe30003c0, 0xe50003c3, + 0xe70003c4, 0xed0003c6, 0x8d002017, 0xfc00207f, 0xf9002219, 0xfb00221a, 0xec00221e, 0xef002229, + 0xf7002248, 0xf0002261, 0xf3002264, 0xf2002265, 0xa9002310, 0xf4002320, 0xf5002321, 0xc4002500, + 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, + 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, 0xd5002552, 0xd6002553, 0xc9002554, 0xb8002555, + 0xb7002556, 0xbb002557, 0xd4002558, 0xd3002559, 0xc800255a, 0xbe00255b, 0xbd00255c, 0xbc00255d, + 0xc600255e, 0xc700255f, 0xcc002560, 0xb5002561, 0xb6002562, 0xb9002563, 0xd1002564, 0xd2002565, + 0xcb002566, 0xcf002567, 0xd0002568, 0xca002569, 0xd800256a, 0xd700256b, 0xce00256c, 0xdf002580, + 0xdc002584, 0xdb002588, 0xdd00258c, 0xde002590, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, + }, +} + +// CodePage865 is the IBM Code Page 865 encoding. +var CodePage865 *Charmap = &codePage865 + +var codePage865 = Charmap{ + name: "IBM Code Page 865", + mib: identifier.IBM865, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}}, + {2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa0, 0x00}}, + {2, [3]byte{0xc3, 0xa5, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xac, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x89, 0x00}}, {2, [3]byte{0xc3, 0xa6, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}}, + {2, [3]byte{0xc3, 0xbb, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xbf, 0x00}}, {2, [3]byte{0xc3, 0x96, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0xb8, 0x00}}, + {2, [3]byte{0xc2, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x98, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xa7}}, {2, [3]byte{0xc6, 0x92, 0x00}}, + {2, [3]byte{0xc3, 0xa1, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}}, + {2, [3]byte{0xc3, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}}, + {2, [3]byte{0xc2, 0xbf, 0x00}}, {3, [3]byte{0xe2, 0x8c, 0x90}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, + {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xa4, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, + {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}}, + {3, [3]byte{0xe2, 0x94, 0xa4}}, {3, [3]byte{0xe2, 0x95, 0xa1}}, + {3, [3]byte{0xe2, 0x95, 0xa2}}, {3, [3]byte{0xe2, 0x95, 0x96}}, + {3, [3]byte{0xe2, 0x95, 0x95}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, + {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}}, + {3, [3]byte{0xe2, 0x95, 0x9d}}, {3, [3]byte{0xe2, 0x95, 0x9c}}, + {3, [3]byte{0xe2, 0x95, 0x9b}}, {3, [3]byte{0xe2, 0x94, 0x90}}, + {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, + {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}}, + {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}}, + {3, [3]byte{0xe2, 0x95, 0x9e}}, {3, [3]byte{0xe2, 0x95, 0x9f}}, + {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}}, + {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}}, + {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}}, + {3, [3]byte{0xe2, 0x95, 0xac}}, {3, [3]byte{0xe2, 0x95, 0xa7}}, + {3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa4}}, + {3, [3]byte{0xe2, 0x95, 0xa5}}, {3, [3]byte{0xe2, 0x95, 0x99}}, + {3, [3]byte{0xe2, 0x95, 0x98}}, {3, [3]byte{0xe2, 0x95, 0x92}}, + {3, [3]byte{0xe2, 0x95, 0x93}}, {3, [3]byte{0xe2, 0x95, 0xab}}, + {3, [3]byte{0xe2, 0x95, 0xaa}}, {3, [3]byte{0xe2, 0x94, 0x98}}, + {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}}, + {3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x8c}}, + {3, [3]byte{0xe2, 0x96, 0x90}}, {3, [3]byte{0xe2, 0x96, 0x80}}, + {2, [3]byte{0xce, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xce, 0x93, 0x00}}, {2, [3]byte{0xcf, 0x80, 0x00}}, + {2, [3]byte{0xce, 0xa3, 0x00}}, {2, [3]byte{0xcf, 0x83, 0x00}}, + {2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xcf, 0x84, 0x00}}, + {2, [3]byte{0xce, 0xa6, 0x00}}, {2, [3]byte{0xce, 0x98, 0x00}}, + {2, [3]byte{0xce, 0xa9, 0x00}}, {2, [3]byte{0xce, 0xb4, 0x00}}, + {3, [3]byte{0xe2, 0x88, 0x9e}}, {2, [3]byte{0xcf, 0x86, 0x00}}, + {2, [3]byte{0xce, 0xb5, 0x00}}, {3, [3]byte{0xe2, 0x88, 0xa9}}, + {3, [3]byte{0xe2, 0x89, 0xa1}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {3, [3]byte{0xe2, 0x89, 0xa5}}, {3, [3]byte{0xe2, 0x89, 0xa4}}, + {3, [3]byte{0xe2, 0x8c, 0xa0}}, {3, [3]byte{0xe2, 0x8c, 0xa1}}, + {2, [3]byte{0xc3, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x89, 0x88}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x99}}, + {2, [3]byte{0xc2, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}}, + {3, [3]byte{0xe2, 0x81, 0xbf}}, {2, [3]byte{0xc2, 0xb2, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xff0000a0, 0xad0000a1, 0x9c0000a3, 0xaf0000a4, 0xa60000aa, 0xae0000ab, 0xaa0000ac, 0xf80000b0, + 0xf10000b1, 0xfd0000b2, 0xe60000b5, 0xfa0000b7, 0xa70000ba, 0xac0000bc, 0xab0000bd, 0xa80000bf, + 0x8e0000c4, 0x8f0000c5, 0x920000c6, 0x800000c7, 0x900000c9, 0xa50000d1, 0x990000d6, 0x9d0000d8, + 0x9a0000dc, 0xe10000df, 0x850000e0, 0xa00000e1, 0x830000e2, 0x840000e4, 0x860000e5, 0x910000e6, + 0x870000e7, 0x8a0000e8, 0x820000e9, 0x880000ea, 0x890000eb, 0x8d0000ec, 0xa10000ed, 0x8c0000ee, + 0x8b0000ef, 0xa40000f1, 0x950000f2, 0xa20000f3, 0x930000f4, 0x940000f6, 0xf60000f7, 0x9b0000f8, + 0x970000f9, 0xa30000fa, 0x960000fb, 0x810000fc, 0x980000ff, 0x9f000192, 0xe2000393, 0xe9000398, + 0xe40003a3, 0xe80003a6, 0xea0003a9, 0xe00003b1, 0xeb0003b4, 0xee0003b5, 0xe30003c0, 0xe50003c3, + 0xe70003c4, 0xed0003c6, 0xfc00207f, 0x9e0020a7, 0xf9002219, 0xfb00221a, 0xec00221e, 0xef002229, + 0xf7002248, 0xf0002261, 0xf3002264, 0xf2002265, 0xa9002310, 0xf4002320, 0xf5002321, 0xc4002500, + 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, + 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, 0xd5002552, 0xd6002553, 0xc9002554, 0xb8002555, + 0xb7002556, 0xbb002557, 0xd4002558, 0xd3002559, 0xc800255a, 0xbe00255b, 0xbd00255c, 0xbc00255d, + 0xc600255e, 0xc700255f, 0xcc002560, 0xb5002561, 0xb6002562, 0xb9002563, 0xd1002564, 0xd2002565, + 0xcb002566, 0xcf002567, 0xd0002568, 0xca002569, 0xd800256a, 0xd700256b, 0xce00256c, 0xdf002580, + 0xdc002584, 0xdb002588, 0xdd00258c, 0xde002590, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, + }, +} + +// CodePage866 is the IBM Code Page 866 encoding. +var CodePage866 *Charmap = &codePage866 + +var codePage866 = Charmap{ + name: "IBM Code Page 866", + mib: identifier.IBM866, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xd0, 0x90, 0x00}}, {2, [3]byte{0xd0, 0x91, 0x00}}, + {2, [3]byte{0xd0, 0x92, 0x00}}, {2, [3]byte{0xd0, 0x93, 0x00}}, + {2, [3]byte{0xd0, 0x94, 0x00}}, {2, [3]byte{0xd0, 0x95, 0x00}}, + {2, [3]byte{0xd0, 0x96, 0x00}}, {2, [3]byte{0xd0, 0x97, 0x00}}, + {2, [3]byte{0xd0, 0x98, 0x00}}, {2, [3]byte{0xd0, 0x99, 0x00}}, + {2, [3]byte{0xd0, 0x9a, 0x00}}, {2, [3]byte{0xd0, 0x9b, 0x00}}, + {2, [3]byte{0xd0, 0x9c, 0x00}}, {2, [3]byte{0xd0, 0x9d, 0x00}}, + {2, [3]byte{0xd0, 0x9e, 0x00}}, {2, [3]byte{0xd0, 0x9f, 0x00}}, + {2, [3]byte{0xd0, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0xa1, 0x00}}, + {2, [3]byte{0xd0, 0xa2, 0x00}}, {2, [3]byte{0xd0, 0xa3, 0x00}}, + {2, [3]byte{0xd0, 0xa4, 0x00}}, {2, [3]byte{0xd0, 0xa5, 0x00}}, + {2, [3]byte{0xd0, 0xa6, 0x00}}, {2, [3]byte{0xd0, 0xa7, 0x00}}, + {2, [3]byte{0xd0, 0xa8, 0x00}}, {2, [3]byte{0xd0, 0xa9, 0x00}}, + {2, [3]byte{0xd0, 0xaa, 0x00}}, {2, [3]byte{0xd0, 0xab, 0x00}}, + {2, [3]byte{0xd0, 0xac, 0x00}}, {2, [3]byte{0xd0, 0xad, 0x00}}, + {2, [3]byte{0xd0, 0xae, 0x00}}, {2, [3]byte{0xd0, 0xaf, 0x00}}, + {2, [3]byte{0xd0, 0xb0, 0x00}}, {2, [3]byte{0xd0, 0xb1, 0x00}}, + {2, [3]byte{0xd0, 0xb2, 0x00}}, {2, [3]byte{0xd0, 0xb3, 0x00}}, + {2, [3]byte{0xd0, 0xb4, 0x00}}, {2, [3]byte{0xd0, 0xb5, 0x00}}, + {2, [3]byte{0xd0, 0xb6, 0x00}}, {2, [3]byte{0xd0, 0xb7, 0x00}}, + {2, [3]byte{0xd0, 0xb8, 0x00}}, {2, [3]byte{0xd0, 0xb9, 0x00}}, + {2, [3]byte{0xd0, 0xba, 0x00}}, {2, [3]byte{0xd0, 0xbb, 0x00}}, + {2, [3]byte{0xd0, 0xbc, 0x00}}, {2, [3]byte{0xd0, 0xbd, 0x00}}, + {2, [3]byte{0xd0, 0xbe, 0x00}}, {2, [3]byte{0xd0, 0xbf, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, + {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}}, + {3, [3]byte{0xe2, 0x94, 0xa4}}, {3, [3]byte{0xe2, 0x95, 0xa1}}, + {3, [3]byte{0xe2, 0x95, 0xa2}}, {3, [3]byte{0xe2, 0x95, 0x96}}, + {3, [3]byte{0xe2, 0x95, 0x95}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, + {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}}, + {3, [3]byte{0xe2, 0x95, 0x9d}}, {3, [3]byte{0xe2, 0x95, 0x9c}}, + {3, [3]byte{0xe2, 0x95, 0x9b}}, {3, [3]byte{0xe2, 0x94, 0x90}}, + {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, + {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}}, + {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}}, + {3, [3]byte{0xe2, 0x95, 0x9e}}, {3, [3]byte{0xe2, 0x95, 0x9f}}, + {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}}, + {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}}, + {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}}, + {3, [3]byte{0xe2, 0x95, 0xac}}, {3, [3]byte{0xe2, 0x95, 0xa7}}, + {3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa4}}, + {3, [3]byte{0xe2, 0x95, 0xa5}}, {3, [3]byte{0xe2, 0x95, 0x99}}, + {3, [3]byte{0xe2, 0x95, 0x98}}, {3, [3]byte{0xe2, 0x95, 0x92}}, + {3, [3]byte{0xe2, 0x95, 0x93}}, {3, [3]byte{0xe2, 0x95, 0xab}}, + {3, [3]byte{0xe2, 0x95, 0xaa}}, {3, [3]byte{0xe2, 0x94, 0x98}}, + {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}}, + {3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x8c}}, + {3, [3]byte{0xe2, 0x96, 0x90}}, {3, [3]byte{0xe2, 0x96, 0x80}}, + {2, [3]byte{0xd1, 0x80, 0x00}}, {2, [3]byte{0xd1, 0x81, 0x00}}, + {2, [3]byte{0xd1, 0x82, 0x00}}, {2, [3]byte{0xd1, 0x83, 0x00}}, + {2, [3]byte{0xd1, 0x84, 0x00}}, {2, [3]byte{0xd1, 0x85, 0x00}}, + {2, [3]byte{0xd1, 0x86, 0x00}}, {2, [3]byte{0xd1, 0x87, 0x00}}, + {2, [3]byte{0xd1, 0x88, 0x00}}, {2, [3]byte{0xd1, 0x89, 0x00}}, + {2, [3]byte{0xd1, 0x8a, 0x00}}, {2, [3]byte{0xd1, 0x8b, 0x00}}, + {2, [3]byte{0xd1, 0x8c, 0x00}}, {2, [3]byte{0xd1, 0x8d, 0x00}}, + {2, [3]byte{0xd1, 0x8e, 0x00}}, {2, [3]byte{0xd1, 0x8f, 0x00}}, + {2, [3]byte{0xd0, 0x81, 0x00}}, {2, [3]byte{0xd1, 0x91, 0x00}}, + {2, [3]byte{0xd0, 0x84, 0x00}}, {2, [3]byte{0xd1, 0x94, 0x00}}, + {2, [3]byte{0xd0, 0x87, 0x00}}, {2, [3]byte{0xd1, 0x97, 0x00}}, + {2, [3]byte{0xd0, 0x8e, 0x00}}, {2, [3]byte{0xd1, 0x9e, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x99}}, + {2, [3]byte{0xc2, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}}, + {3, [3]byte{0xe2, 0x84, 0x96}}, {2, [3]byte{0xc2, 0xa4, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xff0000a0, 0xfd0000a4, 0xf80000b0, 0xfa0000b7, 0xf0000401, 0xf2000404, 0xf4000407, 0xf600040e, + 0x80000410, 0x81000411, 0x82000412, 0x83000413, 0x84000414, 0x85000415, 0x86000416, 0x87000417, + 0x88000418, 0x89000419, 0x8a00041a, 0x8b00041b, 0x8c00041c, 0x8d00041d, 0x8e00041e, 0x8f00041f, + 0x90000420, 0x91000421, 0x92000422, 0x93000423, 0x94000424, 0x95000425, 0x96000426, 0x97000427, + 0x98000428, 0x99000429, 0x9a00042a, 0x9b00042b, 0x9c00042c, 0x9d00042d, 0x9e00042e, 0x9f00042f, + 0xa0000430, 0xa1000431, 0xa2000432, 0xa3000433, 0xa4000434, 0xa5000435, 0xa6000436, 0xa7000437, + 0xa8000438, 0xa9000439, 0xaa00043a, 0xab00043b, 0xac00043c, 0xad00043d, 0xae00043e, 0xaf00043f, + 0xe0000440, 0xe1000441, 0xe2000442, 0xe3000443, 0xe4000444, 0xe5000445, 0xe6000446, 0xe7000447, + 0xe8000448, 0xe9000449, 0xea00044a, 0xeb00044b, 0xec00044c, 0xed00044d, 0xee00044e, 0xef00044f, + 0xf1000451, 0xf3000454, 0xf5000457, 0xf700045e, 0xfc002116, 0xf9002219, 0xfb00221a, 0xc4002500, + 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, + 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, 0xd5002552, 0xd6002553, 0xc9002554, 0xb8002555, + 0xb7002556, 0xbb002557, 0xd4002558, 0xd3002559, 0xc800255a, 0xbe00255b, 0xbd00255c, 0xbc00255d, + 0xc600255e, 0xc700255f, 0xcc002560, 0xb5002561, 0xb6002562, 0xb9002563, 0xd1002564, 0xd2002565, + 0xcb002566, 0xcf002567, 0xd0002568, 0xca002569, 0xd800256a, 0xd700256b, 0xce00256c, 0xdf002580, + 0xdc002584, 0xdb002588, 0xdd00258c, 0xde002590, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, + }, +} + +// CodePage1047 is the IBM Code Page 1047 encoding. +var CodePage1047 *Charmap = &codePage1047 + +var codePage1047 = Charmap{ + name: "IBM Code Page 1047", + mib: identifier.IBM1047, + asciiSuperset: false, + low: 0x00, + replacement: 0x3f, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x9c, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x86, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x97, 0x00}}, {2, [3]byte{0xc2, 0x8d, 0x00}}, + {2, [3]byte{0xc2, 0x8e, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x9d, 0x00}}, {2, [3]byte{0xc2, 0x85, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x87, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x92, 0x00}}, {2, [3]byte{0xc2, 0x8f, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x80, 0x00}}, {2, [3]byte{0xc2, 0x81, 0x00}}, + {2, [3]byte{0xc2, 0x82, 0x00}}, {2, [3]byte{0xc2, 0x83, 0x00}}, + {2, [3]byte{0xc2, 0x84, 0x00}}, {1, [3]byte{0x0a, 0x00, 0x00}}, + {1, [3]byte{0x17, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x88, 0x00}}, {2, [3]byte{0xc2, 0x89, 0x00}}, + {2, [3]byte{0xc2, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0x8b, 0x00}}, + {2, [3]byte{0xc2, 0x8c, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x90, 0x00}}, {2, [3]byte{0xc2, 0x91, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x93, 0x00}}, + {2, [3]byte{0xc2, 0x94, 0x00}}, {2, [3]byte{0xc2, 0x95, 0x00}}, + {2, [3]byte{0xc2, 0x96, 0x00}}, {1, [3]byte{0x04, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x98, 0x00}}, {2, [3]byte{0xc2, 0x99, 0x00}}, + {2, [3]byte{0xc2, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9b, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x9e, 0x00}}, {1, [3]byte{0x1a, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa4, 0x00}}, + {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, + {2, [3]byte{0xc3, 0xa7, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xa2, 0x00}}, {1, [3]byte{0x2e, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x28, 0x00, 0x00}}, + {1, [3]byte{0x2b, 0x00, 0x00}}, {1, [3]byte{0x7c, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {1, [3]byte{0x21, 0x00, 0x00}}, {1, [3]byte{0x24, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x3b, 0x00, 0x00}}, {1, [3]byte{0x5e, 0x00, 0x00}}, + {1, [3]byte{0x2d, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x84, 0x00}}, + {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x83, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {1, [3]byte{0x2c, 0x00, 0x00}}, + {1, [3]byte{0x25, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, + {2, [3]byte{0xc3, 0x8c, 0x00}}, {1, [3]byte{0x60, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x3d, 0x00, 0x00}}, {1, [3]byte{0x22, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x98, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}}, + {2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {1, [3]byte{0x6a, 0x00, 0x00}}, + {1, [3]byte{0x6b, 0x00, 0x00}}, {1, [3]byte{0x6c, 0x00, 0x00}}, + {1, [3]byte{0x6d, 0x00, 0x00}}, {1, [3]byte{0x6e, 0x00, 0x00}}, + {1, [3]byte{0x6f, 0x00, 0x00}}, {1, [3]byte{0x70, 0x00, 0x00}}, + {1, [3]byte{0x71, 0x00, 0x00}}, {1, [3]byte{0x72, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}}, + {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc2, 0xa4, 0x00}}, + {2, [3]byte{0xc2, 0xb5, 0x00}}, {1, [3]byte{0x7e, 0x00, 0x00}}, + {1, [3]byte{0x73, 0x00, 0x00}}, {1, [3]byte{0x74, 0x00, 0x00}}, + {1, [3]byte{0x75, 0x00, 0x00}}, {1, [3]byte{0x76, 0x00, 0x00}}, + {1, [3]byte{0x77, 0x00, 0x00}}, {1, [3]byte{0x78, 0x00, 0x00}}, + {1, [3]byte{0x79, 0x00, 0x00}}, {1, [3]byte{0x7a, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xa1, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}}, + {2, [3]byte{0xc3, 0x90, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc2, 0xae, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa5, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc2, 0xa9, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xbc, 0x00}}, + {2, [3]byte{0xc2, 0xbd, 0x00}}, {2, [3]byte{0xc2, 0xbe, 0x00}}, + {2, [3]byte{0xc3, 0x9d, 0x00}}, {2, [3]byte{0xc2, 0xa8, 0x00}}, + {2, [3]byte{0xc2, 0xaf, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {1, [3]byte{0x7b, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}}, + {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, + {1, [3]byte{0x7d, 0x00, 0x00}}, {1, [3]byte{0x4a, 0x00, 0x00}}, + {1, [3]byte{0x4b, 0x00, 0x00}}, {1, [3]byte{0x4c, 0x00, 0x00}}, + {1, [3]byte{0x4d, 0x00, 0x00}}, {1, [3]byte{0x4e, 0x00, 0x00}}, + {1, [3]byte{0x4f, 0x00, 0x00}}, {1, [3]byte{0x50, 0x00, 0x00}}, + {1, [3]byte{0x51, 0x00, 0x00}}, {1, [3]byte{0x52, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xb9, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {1, [3]byte{0x53, 0x00, 0x00}}, {1, [3]byte{0x54, 0x00, 0x00}}, + {1, [3]byte{0x55, 0x00, 0x00}}, {1, [3]byte{0x56, 0x00, 0x00}}, + {1, [3]byte{0x57, 0x00, 0x00}}, {1, [3]byte{0x58, 0x00, 0x00}}, + {1, [3]byte{0x59, 0x00, 0x00}}, {1, [3]byte{0x5a, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0x94, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x92, 0x00}}, + {2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9f, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x37000004, 0x2d000005, 0x2e000006, 0x2f000007, + 0x16000008, 0x05000009, 0x2500000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x3c000014, 0x3d000015, 0x32000016, 0x26000017, + 0x18000018, 0x19000019, 0x3f00001a, 0x2700001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x40000020, 0x5a000021, 0x7f000022, 0x7b000023, 0x5b000024, 0x6c000025, 0x50000026, 0x7d000027, + 0x4d000028, 0x5d000029, 0x5c00002a, 0x4e00002b, 0x6b00002c, 0x6000002d, 0x4b00002e, 0x6100002f, + 0xf0000030, 0xf1000031, 0xf2000032, 0xf3000033, 0xf4000034, 0xf5000035, 0xf6000036, 0xf7000037, + 0xf8000038, 0xf9000039, 0x7a00003a, 0x5e00003b, 0x4c00003c, 0x7e00003d, 0x6e00003e, 0x6f00003f, + 0x7c000040, 0xc1000041, 0xc2000042, 0xc3000043, 0xc4000044, 0xc5000045, 0xc6000046, 0xc7000047, + 0xc8000048, 0xc9000049, 0xd100004a, 0xd200004b, 0xd300004c, 0xd400004d, 0xd500004e, 0xd600004f, + 0xd7000050, 0xd8000051, 0xd9000052, 0xe2000053, 0xe3000054, 0xe4000055, 0xe5000056, 0xe6000057, + 0xe7000058, 0xe8000059, 0xe900005a, 0xad00005b, 0xe000005c, 0xbd00005d, 0x5f00005e, 0x6d00005f, + 0x79000060, 0x81000061, 0x82000062, 0x83000063, 0x84000064, 0x85000065, 0x86000066, 0x87000067, + 0x88000068, 0x89000069, 0x9100006a, 0x9200006b, 0x9300006c, 0x9400006d, 0x9500006e, 0x9600006f, + 0x97000070, 0x98000071, 0x99000072, 0xa2000073, 0xa3000074, 0xa4000075, 0xa5000076, 0xa6000077, + 0xa7000078, 0xa8000079, 0xa900007a, 0xc000007b, 0x4f00007c, 0xd000007d, 0xa100007e, 0x0700007f, + 0x20000080, 0x21000081, 0x22000082, 0x23000083, 0x24000084, 0x15000085, 0x06000086, 0x17000087, + 0x28000088, 0x29000089, 0x2a00008a, 0x2b00008b, 0x2c00008c, 0x0900008d, 0x0a00008e, 0x1b00008f, + 0x30000090, 0x31000091, 0x1a000092, 0x33000093, 0x34000094, 0x35000095, 0x36000096, 0x08000097, + 0x38000098, 0x39000099, 0x3a00009a, 0x3b00009b, 0x0400009c, 0x1400009d, 0x3e00009e, 0xff00009f, + 0x410000a0, 0xaa0000a1, 0x4a0000a2, 0xb10000a3, 0x9f0000a4, 0xb20000a5, 0x6a0000a6, 0xb50000a7, + 0xbb0000a8, 0xb40000a9, 0x9a0000aa, 0x8a0000ab, 0xb00000ac, 0xca0000ad, 0xaf0000ae, 0xbc0000af, + 0x900000b0, 0x8f0000b1, 0xea0000b2, 0xfa0000b3, 0xbe0000b4, 0xa00000b5, 0xb60000b6, 0xb30000b7, + 0x9d0000b8, 0xda0000b9, 0x9b0000ba, 0x8b0000bb, 0xb70000bc, 0xb80000bd, 0xb90000be, 0xab0000bf, + 0x640000c0, 0x650000c1, 0x620000c2, 0x660000c3, 0x630000c4, 0x670000c5, 0x9e0000c6, 0x680000c7, + 0x740000c8, 0x710000c9, 0x720000ca, 0x730000cb, 0x780000cc, 0x750000cd, 0x760000ce, 0x770000cf, + 0xac0000d0, 0x690000d1, 0xed0000d2, 0xee0000d3, 0xeb0000d4, 0xef0000d5, 0xec0000d6, 0xbf0000d7, + 0x800000d8, 0xfd0000d9, 0xfe0000da, 0xfb0000db, 0xfc0000dc, 0xba0000dd, 0xae0000de, 0x590000df, + 0x440000e0, 0x450000e1, 0x420000e2, 0x460000e3, 0x430000e4, 0x470000e5, 0x9c0000e6, 0x480000e7, + 0x540000e8, 0x510000e9, 0x520000ea, 0x530000eb, 0x580000ec, 0x550000ed, 0x560000ee, 0x570000ef, + 0x8c0000f0, 0x490000f1, 0xcd0000f2, 0xce0000f3, 0xcb0000f4, 0xcf0000f5, 0xcc0000f6, 0xe10000f7, + 0x700000f8, 0xdd0000f9, 0xde0000fa, 0xdb0000fb, 0xdc0000fc, 0x8d0000fd, 0x8e0000fe, 0xdf0000ff, + }, +} + +// CodePage1140 is the IBM Code Page 1140 encoding. +var CodePage1140 *Charmap = &codePage1140 + +var codePage1140 = Charmap{ + name: "IBM Code Page 1140", + mib: identifier.IBM01140, + asciiSuperset: false, + low: 0x00, + replacement: 0x3f, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x9c, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x86, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x97, 0x00}}, {2, [3]byte{0xc2, 0x8d, 0x00}}, + {2, [3]byte{0xc2, 0x8e, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x9d, 0x00}}, {2, [3]byte{0xc2, 0x85, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x87, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x92, 0x00}}, {2, [3]byte{0xc2, 0x8f, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x80, 0x00}}, {2, [3]byte{0xc2, 0x81, 0x00}}, + {2, [3]byte{0xc2, 0x82, 0x00}}, {2, [3]byte{0xc2, 0x83, 0x00}}, + {2, [3]byte{0xc2, 0x84, 0x00}}, {1, [3]byte{0x0a, 0x00, 0x00}}, + {1, [3]byte{0x17, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x88, 0x00}}, {2, [3]byte{0xc2, 0x89, 0x00}}, + {2, [3]byte{0xc2, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0x8b, 0x00}}, + {2, [3]byte{0xc2, 0x8c, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x90, 0x00}}, {2, [3]byte{0xc2, 0x91, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x93, 0x00}}, + {2, [3]byte{0xc2, 0x94, 0x00}}, {2, [3]byte{0xc2, 0x95, 0x00}}, + {2, [3]byte{0xc2, 0x96, 0x00}}, {1, [3]byte{0x04, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x98, 0x00}}, {2, [3]byte{0xc2, 0x99, 0x00}}, + {2, [3]byte{0xc2, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9b, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x9e, 0x00}}, {1, [3]byte{0x1a, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa4, 0x00}}, + {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, + {2, [3]byte{0xc3, 0xa7, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xa2, 0x00}}, {1, [3]byte{0x2e, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x28, 0x00, 0x00}}, + {1, [3]byte{0x2b, 0x00, 0x00}}, {1, [3]byte{0x7c, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {1, [3]byte{0x21, 0x00, 0x00}}, {1, [3]byte{0x24, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x3b, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xac, 0x00}}, + {1, [3]byte{0x2d, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x84, 0x00}}, + {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x83, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {1, [3]byte{0x2c, 0x00, 0x00}}, + {1, [3]byte{0x25, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, + {2, [3]byte{0xc3, 0x8c, 0x00}}, {1, [3]byte{0x60, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x3d, 0x00, 0x00}}, {1, [3]byte{0x22, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x98, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}}, + {2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {1, [3]byte{0x6a, 0x00, 0x00}}, + {1, [3]byte{0x6b, 0x00, 0x00}}, {1, [3]byte{0x6c, 0x00, 0x00}}, + {1, [3]byte{0x6d, 0x00, 0x00}}, {1, [3]byte{0x6e, 0x00, 0x00}}, + {1, [3]byte{0x6f, 0x00, 0x00}}, {1, [3]byte{0x70, 0x00, 0x00}}, + {1, [3]byte{0x71, 0x00, 0x00}}, {1, [3]byte{0x72, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}}, + {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {3, [3]byte{0xe2, 0x82, 0xac}}, + {2, [3]byte{0xc2, 0xb5, 0x00}}, {1, [3]byte{0x7e, 0x00, 0x00}}, + {1, [3]byte{0x73, 0x00, 0x00}}, {1, [3]byte{0x74, 0x00, 0x00}}, + {1, [3]byte{0x75, 0x00, 0x00}}, {1, [3]byte{0x76, 0x00, 0x00}}, + {1, [3]byte{0x77, 0x00, 0x00}}, {1, [3]byte{0x78, 0x00, 0x00}}, + {1, [3]byte{0x79, 0x00, 0x00}}, {1, [3]byte{0x7a, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xa1, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}}, + {2, [3]byte{0xc3, 0x90, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, + {2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc2, 0xae, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa5, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc2, 0xa9, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xbc, 0x00}}, + {2, [3]byte{0xc2, 0xbd, 0x00}}, {2, [3]byte{0xc2, 0xbe, 0x00}}, + {1, [3]byte{0x5b, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xaf, 0x00}}, {2, [3]byte{0xc2, 0xa8, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {1, [3]byte{0x7b, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}}, + {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, + {1, [3]byte{0x7d, 0x00, 0x00}}, {1, [3]byte{0x4a, 0x00, 0x00}}, + {1, [3]byte{0x4b, 0x00, 0x00}}, {1, [3]byte{0x4c, 0x00, 0x00}}, + {1, [3]byte{0x4d, 0x00, 0x00}}, {1, [3]byte{0x4e, 0x00, 0x00}}, + {1, [3]byte{0x4f, 0x00, 0x00}}, {1, [3]byte{0x50, 0x00, 0x00}}, + {1, [3]byte{0x51, 0x00, 0x00}}, {1, [3]byte{0x52, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xb9, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {1, [3]byte{0x53, 0x00, 0x00}}, {1, [3]byte{0x54, 0x00, 0x00}}, + {1, [3]byte{0x55, 0x00, 0x00}}, {1, [3]byte{0x56, 0x00, 0x00}}, + {1, [3]byte{0x57, 0x00, 0x00}}, {1, [3]byte{0x58, 0x00, 0x00}}, + {1, [3]byte{0x59, 0x00, 0x00}}, {1, [3]byte{0x5a, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0x94, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x92, 0x00}}, + {2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9f, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x37000004, 0x2d000005, 0x2e000006, 0x2f000007, + 0x16000008, 0x05000009, 0x2500000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x3c000014, 0x3d000015, 0x32000016, 0x26000017, + 0x18000018, 0x19000019, 0x3f00001a, 0x2700001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x40000020, 0x5a000021, 0x7f000022, 0x7b000023, 0x5b000024, 0x6c000025, 0x50000026, 0x7d000027, + 0x4d000028, 0x5d000029, 0x5c00002a, 0x4e00002b, 0x6b00002c, 0x6000002d, 0x4b00002e, 0x6100002f, + 0xf0000030, 0xf1000031, 0xf2000032, 0xf3000033, 0xf4000034, 0xf5000035, 0xf6000036, 0xf7000037, + 0xf8000038, 0xf9000039, 0x7a00003a, 0x5e00003b, 0x4c00003c, 0x7e00003d, 0x6e00003e, 0x6f00003f, + 0x7c000040, 0xc1000041, 0xc2000042, 0xc3000043, 0xc4000044, 0xc5000045, 0xc6000046, 0xc7000047, + 0xc8000048, 0xc9000049, 0xd100004a, 0xd200004b, 0xd300004c, 0xd400004d, 0xd500004e, 0xd600004f, + 0xd7000050, 0xd8000051, 0xd9000052, 0xe2000053, 0xe3000054, 0xe4000055, 0xe5000056, 0xe6000057, + 0xe7000058, 0xe8000059, 0xe900005a, 0xba00005b, 0xe000005c, 0xbb00005d, 0xb000005e, 0x6d00005f, + 0x79000060, 0x81000061, 0x82000062, 0x83000063, 0x84000064, 0x85000065, 0x86000066, 0x87000067, + 0x88000068, 0x89000069, 0x9100006a, 0x9200006b, 0x9300006c, 0x9400006d, 0x9500006e, 0x9600006f, + 0x97000070, 0x98000071, 0x99000072, 0xa2000073, 0xa3000074, 0xa4000075, 0xa5000076, 0xa6000077, + 0xa7000078, 0xa8000079, 0xa900007a, 0xc000007b, 0x4f00007c, 0xd000007d, 0xa100007e, 0x0700007f, + 0x20000080, 0x21000081, 0x22000082, 0x23000083, 0x24000084, 0x15000085, 0x06000086, 0x17000087, + 0x28000088, 0x29000089, 0x2a00008a, 0x2b00008b, 0x2c00008c, 0x0900008d, 0x0a00008e, 0x1b00008f, + 0x30000090, 0x31000091, 0x1a000092, 0x33000093, 0x34000094, 0x35000095, 0x36000096, 0x08000097, + 0x38000098, 0x39000099, 0x3a00009a, 0x3b00009b, 0x0400009c, 0x1400009d, 0x3e00009e, 0xff00009f, + 0x410000a0, 0xaa0000a1, 0x4a0000a2, 0xb10000a3, 0xb20000a5, 0x6a0000a6, 0xb50000a7, 0xbd0000a8, + 0xb40000a9, 0x9a0000aa, 0x8a0000ab, 0x5f0000ac, 0xca0000ad, 0xaf0000ae, 0xbc0000af, 0x900000b0, + 0x8f0000b1, 0xea0000b2, 0xfa0000b3, 0xbe0000b4, 0xa00000b5, 0xb60000b6, 0xb30000b7, 0x9d0000b8, + 0xda0000b9, 0x9b0000ba, 0x8b0000bb, 0xb70000bc, 0xb80000bd, 0xb90000be, 0xab0000bf, 0x640000c0, + 0x650000c1, 0x620000c2, 0x660000c3, 0x630000c4, 0x670000c5, 0x9e0000c6, 0x680000c7, 0x740000c8, + 0x710000c9, 0x720000ca, 0x730000cb, 0x780000cc, 0x750000cd, 0x760000ce, 0x770000cf, 0xac0000d0, + 0x690000d1, 0xed0000d2, 0xee0000d3, 0xeb0000d4, 0xef0000d5, 0xec0000d6, 0xbf0000d7, 0x800000d8, + 0xfd0000d9, 0xfe0000da, 0xfb0000db, 0xfc0000dc, 0xad0000dd, 0xae0000de, 0x590000df, 0x440000e0, + 0x450000e1, 0x420000e2, 0x460000e3, 0x430000e4, 0x470000e5, 0x9c0000e6, 0x480000e7, 0x540000e8, + 0x510000e9, 0x520000ea, 0x530000eb, 0x580000ec, 0x550000ed, 0x560000ee, 0x570000ef, 0x8c0000f0, + 0x490000f1, 0xcd0000f2, 0xce0000f3, 0xcb0000f4, 0xcf0000f5, 0xcc0000f6, 0xe10000f7, 0x700000f8, + 0xdd0000f9, 0xde0000fa, 0xdb0000fb, 0xdc0000fc, 0x8d0000fd, 0x8e0000fe, 0xdf0000ff, 0x9f0020ac, + }, +} + +// ISO8859_1 is the ISO 8859-1 encoding. +var ISO8859_1 *Charmap = &iso8859_1 + +var iso8859_1 = Charmap{ + name: "ISO 8859-1", + mib: identifier.ISOLatin1, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x80, 0x00}}, {2, [3]byte{0xc2, 0x81, 0x00}}, + {2, [3]byte{0xc2, 0x82, 0x00}}, {2, [3]byte{0xc2, 0x83, 0x00}}, + {2, [3]byte{0xc2, 0x84, 0x00}}, {2, [3]byte{0xc2, 0x85, 0x00}}, + {2, [3]byte{0xc2, 0x86, 0x00}}, {2, [3]byte{0xc2, 0x87, 0x00}}, + {2, [3]byte{0xc2, 0x88, 0x00}}, {2, [3]byte{0xc2, 0x89, 0x00}}, + {2, [3]byte{0xc2, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0x8b, 0x00}}, + {2, [3]byte{0xc2, 0x8c, 0x00}}, {2, [3]byte{0xc2, 0x8d, 0x00}}, + {2, [3]byte{0xc2, 0x8e, 0x00}}, {2, [3]byte{0xc2, 0x8f, 0x00}}, + {2, [3]byte{0xc2, 0x90, 0x00}}, {2, [3]byte{0xc2, 0x91, 0x00}}, + {2, [3]byte{0xc2, 0x92, 0x00}}, {2, [3]byte{0xc2, 0x93, 0x00}}, + {2, [3]byte{0xc2, 0x94, 0x00}}, {2, [3]byte{0xc2, 0x95, 0x00}}, + {2, [3]byte{0xc2, 0x96, 0x00}}, {2, [3]byte{0xc2, 0x97, 0x00}}, + {2, [3]byte{0xc2, 0x98, 0x00}}, {2, [3]byte{0xc2, 0x99, 0x00}}, + {2, [3]byte{0xc2, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9b, 0x00}}, + {2, [3]byte{0xc2, 0x9c, 0x00}}, {2, [3]byte{0xc2, 0x9d, 0x00}}, + {2, [3]byte{0xc2, 0x9e, 0x00}}, {2, [3]byte{0xc2, 0x9f, 0x00}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, + {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, + {2, [3]byte{0xc2, 0xba, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}}, + {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, + {2, [3]byte{0xc3, 0x90, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, + {2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, + {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, + {2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, + {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}}, + {2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0x80000080, 0x81000081, 0x82000082, 0x83000083, 0x84000084, 0x85000085, 0x86000086, 0x87000087, + 0x88000088, 0x89000089, 0x8a00008a, 0x8b00008b, 0x8c00008c, 0x8d00008d, 0x8e00008e, 0x8f00008f, + 0x90000090, 0x91000091, 0x92000092, 0x93000093, 0x94000094, 0x95000095, 0x96000096, 0x97000097, + 0x98000098, 0x99000099, 0x9a00009a, 0x9b00009b, 0x9c00009c, 0x9d00009d, 0x9e00009e, 0x9f00009f, + 0xa00000a0, 0xa10000a1, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7, + 0xa80000a8, 0xa90000a9, 0xaa0000aa, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af, + 0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, + 0xb80000b8, 0xb90000b9, 0xba0000ba, 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xbf0000bf, + 0xc00000c0, 0xc10000c1, 0xc20000c2, 0xc30000c3, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc70000c7, + 0xc80000c8, 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc, 0xcd0000cd, 0xce0000ce, 0xcf0000cf, + 0xd00000d0, 0xd10000d1, 0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd70000d7, + 0xd80000d8, 0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc, 0xdd0000dd, 0xde0000de, 0xdf0000df, + 0xe00000e0, 0xe10000e1, 0xe20000e2, 0xe30000e3, 0xe40000e4, 0xe50000e5, 0xe60000e6, 0xe70000e7, + 0xe80000e8, 0xe90000e9, 0xea0000ea, 0xeb0000eb, 0xec0000ec, 0xed0000ed, 0xee0000ee, 0xef0000ef, + 0xf00000f0, 0xf10000f1, 0xf20000f2, 0xf30000f3, 0xf40000f4, 0xf50000f5, 0xf60000f6, 0xf70000f7, + 0xf80000f8, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, 0xfc0000fc, 0xfd0000fd, 0xfe0000fe, 0xff0000ff, + }, +} + +// ISO8859_2 is the ISO 8859-2 encoding. +var ISO8859_2 *Charmap = &iso8859_2 + +var iso8859_2 = Charmap{ + name: "ISO 8859-2", + mib: identifier.ISOLatin2, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc4, 0x84, 0x00}}, + {2, [3]byte{0xcb, 0x98, 0x00}}, {2, [3]byte{0xc5, 0x81, 0x00}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc4, 0xbd, 0x00}}, + {2, [3]byte{0xc5, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc5, 0xa0, 0x00}}, + {2, [3]byte{0xc5, 0x9e, 0x00}}, {2, [3]byte{0xc5, 0xa4, 0x00}}, + {2, [3]byte{0xc5, 0xb9, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc5, 0xbd, 0x00}}, {2, [3]byte{0xc5, 0xbb, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc4, 0x85, 0x00}}, + {2, [3]byte{0xcb, 0x9b, 0x00}}, {2, [3]byte{0xc5, 0x82, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc4, 0xbe, 0x00}}, + {2, [3]byte{0xc5, 0x9b, 0x00}}, {2, [3]byte{0xcb, 0x87, 0x00}}, + {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc5, 0xa1, 0x00}}, + {2, [3]byte{0xc5, 0x9f, 0x00}}, {2, [3]byte{0xc5, 0xa5, 0x00}}, + {2, [3]byte{0xc5, 0xba, 0x00}}, {2, [3]byte{0xcb, 0x9d, 0x00}}, + {2, [3]byte{0xc5, 0xbe, 0x00}}, {2, [3]byte{0xc5, 0xbc, 0x00}}, + {2, [3]byte{0xc5, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc4, 0x82, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc4, 0xb9, 0x00}}, + {2, [3]byte{0xc4, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}}, + {2, [3]byte{0xc4, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc4, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc4, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc4, 0x8e, 0x00}}, + {2, [3]byte{0xc4, 0x90, 0x00}}, {2, [3]byte{0xc5, 0x83, 0x00}}, + {2, [3]byte{0xc5, 0x87, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc5, 0x90, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {2, [3]byte{0xc5, 0x98, 0x00}}, {2, [3]byte{0xc5, 0xae, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc5, 0xb0, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, + {2, [3]byte{0xc5, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc5, 0x95, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc4, 0x83, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc4, 0xba, 0x00}}, + {2, [3]byte{0xc4, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc4, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc4, 0x99, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc4, 0x9b, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc4, 0x8f, 0x00}}, + {2, [3]byte{0xc4, 0x91, 0x00}}, {2, [3]byte{0xc5, 0x84, 0x00}}, + {2, [3]byte{0xc5, 0x88, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, + {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc5, 0x91, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {2, [3]byte{0xc5, 0x99, 0x00}}, {2, [3]byte{0xc5, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc5, 0xb1, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}}, + {2, [3]byte{0xc5, 0xa3, 0x00}}, {2, [3]byte{0xcb, 0x99, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa40000a4, 0xa70000a7, 0xa80000a8, 0xad0000ad, 0xb00000b0, 0xb40000b4, 0xb80000b8, + 0xc10000c1, 0xc20000c2, 0xc40000c4, 0xc70000c7, 0xc90000c9, 0xcb0000cb, 0xcd0000cd, 0xce0000ce, + 0xd30000d3, 0xd40000d4, 0xd60000d6, 0xd70000d7, 0xda0000da, 0xdc0000dc, 0xdd0000dd, 0xdf0000df, + 0xe10000e1, 0xe20000e2, 0xe40000e4, 0xe70000e7, 0xe90000e9, 0xeb0000eb, 0xed0000ed, 0xee0000ee, + 0xf30000f3, 0xf40000f4, 0xf60000f6, 0xf70000f7, 0xfa0000fa, 0xfc0000fc, 0xfd0000fd, 0xc3000102, + 0xe3000103, 0xa1000104, 0xb1000105, 0xc6000106, 0xe6000107, 0xc800010c, 0xe800010d, 0xcf00010e, + 0xef00010f, 0xd0000110, 0xf0000111, 0xca000118, 0xea000119, 0xcc00011a, 0xec00011b, 0xc5000139, + 0xe500013a, 0xa500013d, 0xb500013e, 0xa3000141, 0xb3000142, 0xd1000143, 0xf1000144, 0xd2000147, + 0xf2000148, 0xd5000150, 0xf5000151, 0xc0000154, 0xe0000155, 0xd8000158, 0xf8000159, 0xa600015a, + 0xb600015b, 0xaa00015e, 0xba00015f, 0xa9000160, 0xb9000161, 0xde000162, 0xfe000163, 0xab000164, + 0xbb000165, 0xd900016e, 0xf900016f, 0xdb000170, 0xfb000171, 0xac000179, 0xbc00017a, 0xaf00017b, + 0xbf00017c, 0xae00017d, 0xbe00017e, 0xb70002c7, 0xa20002d8, 0xff0002d9, 0xb20002db, 0xbd0002dd, + 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, + 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, + 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, + 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, + }, +} + +// ISO8859_3 is the ISO 8859-3 encoding. +var ISO8859_3 *Charmap = &iso8859_3 + +var iso8859_3 = Charmap{ + name: "ISO 8859-3", + mib: identifier.ISOLatin3, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc4, 0xa6, 0x00}}, + {2, [3]byte{0xcb, 0x98, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc4, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc4, 0xb0, 0x00}}, + {2, [3]byte{0xc5, 0x9e, 0x00}}, {2, [3]byte{0xc4, 0x9e, 0x00}}, + {2, [3]byte{0xc4, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc5, 0xbb, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc4, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {2, [3]byte{0xc4, 0xa5, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc4, 0xb1, 0x00}}, + {2, [3]byte{0xc5, 0x9f, 0x00}}, {2, [3]byte{0xc4, 0x9f, 0x00}}, + {2, [3]byte{0xc4, 0xb5, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc5, 0xbc, 0x00}}, + {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc4, 0x8a, 0x00}}, + {2, [3]byte{0xc4, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc4, 0xa0, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {2, [3]byte{0xc4, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc5, 0xac, 0x00}}, + {2, [3]byte{0xc5, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc4, 0x8b, 0x00}}, + {2, [3]byte{0xc4, 0x89, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, + {2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, + {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc4, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {2, [3]byte{0xc4, 0x9d, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc5, 0xad, 0x00}}, + {2, [3]byte{0xc5, 0x9d, 0x00}}, {2, [3]byte{0xcb, 0x99, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa30000a3, 0xa40000a4, 0xa70000a7, 0xa80000a8, 0xad0000ad, 0xb00000b0, 0xb20000b2, + 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb70000b7, 0xb80000b8, 0xbd0000bd, 0xc00000c0, 0xc10000c1, + 0xc20000c2, 0xc40000c4, 0xc70000c7, 0xc80000c8, 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc, + 0xcd0000cd, 0xce0000ce, 0xcf0000cf, 0xd10000d1, 0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd60000d6, + 0xd70000d7, 0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc, 0xdf0000df, 0xe00000e0, 0xe10000e1, + 0xe20000e2, 0xe40000e4, 0xe70000e7, 0xe80000e8, 0xe90000e9, 0xea0000ea, 0xeb0000eb, 0xec0000ec, + 0xed0000ed, 0xee0000ee, 0xef0000ef, 0xf10000f1, 0xf20000f2, 0xf30000f3, 0xf40000f4, 0xf60000f6, + 0xf70000f7, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, 0xfc0000fc, 0xc6000108, 0xe6000109, 0xc500010a, + 0xe500010b, 0xd800011c, 0xf800011d, 0xab00011e, 0xbb00011f, 0xd5000120, 0xf5000121, 0xa6000124, + 0xb6000125, 0xa1000126, 0xb1000127, 0xa9000130, 0xb9000131, 0xac000134, 0xbc000135, 0xde00015c, + 0xfe00015d, 0xaa00015e, 0xba00015f, 0xdd00016c, 0xfd00016d, 0xaf00017b, 0xbf00017c, 0xa20002d8, + 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, + 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, + 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, + 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, + 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, + }, +} + +// ISO8859_4 is the ISO 8859-4 encoding. +var ISO8859_4 *Charmap = &iso8859_4 + +var iso8859_4 = Charmap{ + name: "ISO 8859-4", + mib: identifier.ISOLatin4, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc4, 0x84, 0x00}}, + {2, [3]byte{0xc4, 0xb8, 0x00}}, {2, [3]byte{0xc5, 0x96, 0x00}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc4, 0xa8, 0x00}}, + {2, [3]byte{0xc4, 0xbb, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc5, 0xa0, 0x00}}, + {2, [3]byte{0xc4, 0x92, 0x00}}, {2, [3]byte{0xc4, 0xa2, 0x00}}, + {2, [3]byte{0xc5, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc5, 0xbd, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc4, 0x85, 0x00}}, + {2, [3]byte{0xcb, 0x9b, 0x00}}, {2, [3]byte{0xc5, 0x97, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc4, 0xa9, 0x00}}, + {2, [3]byte{0xc4, 0xbc, 0x00}}, {2, [3]byte{0xcb, 0x87, 0x00}}, + {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc5, 0xa1, 0x00}}, + {2, [3]byte{0xc4, 0x93, 0x00}}, {2, [3]byte{0xc4, 0xa3, 0x00}}, + {2, [3]byte{0xc5, 0xa7, 0x00}}, {2, [3]byte{0xc5, 0x8a, 0x00}}, + {2, [3]byte{0xc5, 0xbe, 0x00}}, {2, [3]byte{0xc5, 0x8b, 0x00}}, + {2, [3]byte{0xc4, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc4, 0xae, 0x00}}, + {2, [3]byte{0xc4, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc4, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc4, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc4, 0xaa, 0x00}}, + {2, [3]byte{0xc4, 0x90, 0x00}}, {2, [3]byte{0xc5, 0x85, 0x00}}, + {2, [3]byte{0xc5, 0x8c, 0x00}}, {2, [3]byte{0xc4, 0xb6, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc5, 0xb2, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc5, 0xa8, 0x00}}, + {2, [3]byte{0xc5, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc4, 0x81, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, + {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc4, 0xaf, 0x00}}, + {2, [3]byte{0xc4, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc4, 0x99, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc4, 0x97, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc4, 0xab, 0x00}}, + {2, [3]byte{0xc4, 0x91, 0x00}}, {2, [3]byte{0xc5, 0x86, 0x00}}, + {2, [3]byte{0xc5, 0x8d, 0x00}}, {2, [3]byte{0xc4, 0xb7, 0x00}}, + {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc5, 0xb3, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc5, 0xa9, 0x00}}, + {2, [3]byte{0xc5, 0xab, 0x00}}, {2, [3]byte{0xcb, 0x99, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa40000a4, 0xa70000a7, 0xa80000a8, 0xad0000ad, 0xaf0000af, 0xb00000b0, 0xb40000b4, + 0xb80000b8, 0xc10000c1, 0xc20000c2, 0xc30000c3, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc90000c9, + 0xcb0000cb, 0xcd0000cd, 0xce0000ce, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd70000d7, 0xd80000d8, + 0xda0000da, 0xdb0000db, 0xdc0000dc, 0xdf0000df, 0xe10000e1, 0xe20000e2, 0xe30000e3, 0xe40000e4, + 0xe50000e5, 0xe60000e6, 0xe90000e9, 0xeb0000eb, 0xed0000ed, 0xee0000ee, 0xf40000f4, 0xf50000f5, + 0xf60000f6, 0xf70000f7, 0xf80000f8, 0xfa0000fa, 0xfb0000fb, 0xfc0000fc, 0xc0000100, 0xe0000101, + 0xa1000104, 0xb1000105, 0xc800010c, 0xe800010d, 0xd0000110, 0xf0000111, 0xaa000112, 0xba000113, + 0xcc000116, 0xec000117, 0xca000118, 0xea000119, 0xab000122, 0xbb000123, 0xa5000128, 0xb5000129, + 0xcf00012a, 0xef00012b, 0xc700012e, 0xe700012f, 0xd3000136, 0xf3000137, 0xa2000138, 0xa600013b, + 0xb600013c, 0xd1000145, 0xf1000146, 0xbd00014a, 0xbf00014b, 0xd200014c, 0xf200014d, 0xa3000156, + 0xb3000157, 0xa9000160, 0xb9000161, 0xac000166, 0xbc000167, 0xdd000168, 0xfd000169, 0xde00016a, + 0xfe00016b, 0xd9000172, 0xf9000173, 0xae00017d, 0xbe00017e, 0xb70002c7, 0xff0002d9, 0xb20002db, + 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, + 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, + 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, + 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, + }, +} + +// ISO8859_5 is the ISO 8859-5 encoding. +var ISO8859_5 *Charmap = &iso8859_5 + +var iso8859_5 = Charmap{ + name: "ISO 8859-5", + mib: identifier.ISOLatinCyrillic, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0x81, 0x00}}, + {2, [3]byte{0xd0, 0x82, 0x00}}, {2, [3]byte{0xd0, 0x83, 0x00}}, + {2, [3]byte{0xd0, 0x84, 0x00}}, {2, [3]byte{0xd0, 0x85, 0x00}}, + {2, [3]byte{0xd0, 0x86, 0x00}}, {2, [3]byte{0xd0, 0x87, 0x00}}, + {2, [3]byte{0xd0, 0x88, 0x00}}, {2, [3]byte{0xd0, 0x89, 0x00}}, + {2, [3]byte{0xd0, 0x8a, 0x00}}, {2, [3]byte{0xd0, 0x8b, 0x00}}, + {2, [3]byte{0xd0, 0x8c, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xd0, 0x8e, 0x00}}, {2, [3]byte{0xd0, 0x8f, 0x00}}, + {2, [3]byte{0xd0, 0x90, 0x00}}, {2, [3]byte{0xd0, 0x91, 0x00}}, + {2, [3]byte{0xd0, 0x92, 0x00}}, {2, [3]byte{0xd0, 0x93, 0x00}}, + {2, [3]byte{0xd0, 0x94, 0x00}}, {2, [3]byte{0xd0, 0x95, 0x00}}, + {2, [3]byte{0xd0, 0x96, 0x00}}, {2, [3]byte{0xd0, 0x97, 0x00}}, + {2, [3]byte{0xd0, 0x98, 0x00}}, {2, [3]byte{0xd0, 0x99, 0x00}}, + {2, [3]byte{0xd0, 0x9a, 0x00}}, {2, [3]byte{0xd0, 0x9b, 0x00}}, + {2, [3]byte{0xd0, 0x9c, 0x00}}, {2, [3]byte{0xd0, 0x9d, 0x00}}, + {2, [3]byte{0xd0, 0x9e, 0x00}}, {2, [3]byte{0xd0, 0x9f, 0x00}}, + {2, [3]byte{0xd0, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0xa1, 0x00}}, + {2, [3]byte{0xd0, 0xa2, 0x00}}, {2, [3]byte{0xd0, 0xa3, 0x00}}, + {2, [3]byte{0xd0, 0xa4, 0x00}}, {2, [3]byte{0xd0, 0xa5, 0x00}}, + {2, [3]byte{0xd0, 0xa6, 0x00}}, {2, [3]byte{0xd0, 0xa7, 0x00}}, + {2, [3]byte{0xd0, 0xa8, 0x00}}, {2, [3]byte{0xd0, 0xa9, 0x00}}, + {2, [3]byte{0xd0, 0xaa, 0x00}}, {2, [3]byte{0xd0, 0xab, 0x00}}, + {2, [3]byte{0xd0, 0xac, 0x00}}, {2, [3]byte{0xd0, 0xad, 0x00}}, + {2, [3]byte{0xd0, 0xae, 0x00}}, {2, [3]byte{0xd0, 0xaf, 0x00}}, + {2, [3]byte{0xd0, 0xb0, 0x00}}, {2, [3]byte{0xd0, 0xb1, 0x00}}, + {2, [3]byte{0xd0, 0xb2, 0x00}}, {2, [3]byte{0xd0, 0xb3, 0x00}}, + {2, [3]byte{0xd0, 0xb4, 0x00}}, {2, [3]byte{0xd0, 0xb5, 0x00}}, + {2, [3]byte{0xd0, 0xb6, 0x00}}, {2, [3]byte{0xd0, 0xb7, 0x00}}, + {2, [3]byte{0xd0, 0xb8, 0x00}}, {2, [3]byte{0xd0, 0xb9, 0x00}}, + {2, [3]byte{0xd0, 0xba, 0x00}}, {2, [3]byte{0xd0, 0xbb, 0x00}}, + {2, [3]byte{0xd0, 0xbc, 0x00}}, {2, [3]byte{0xd0, 0xbd, 0x00}}, + {2, [3]byte{0xd0, 0xbe, 0x00}}, {2, [3]byte{0xd0, 0xbf, 0x00}}, + {2, [3]byte{0xd1, 0x80, 0x00}}, {2, [3]byte{0xd1, 0x81, 0x00}}, + {2, [3]byte{0xd1, 0x82, 0x00}}, {2, [3]byte{0xd1, 0x83, 0x00}}, + {2, [3]byte{0xd1, 0x84, 0x00}}, {2, [3]byte{0xd1, 0x85, 0x00}}, + {2, [3]byte{0xd1, 0x86, 0x00}}, {2, [3]byte{0xd1, 0x87, 0x00}}, + {2, [3]byte{0xd1, 0x88, 0x00}}, {2, [3]byte{0xd1, 0x89, 0x00}}, + {2, [3]byte{0xd1, 0x8a, 0x00}}, {2, [3]byte{0xd1, 0x8b, 0x00}}, + {2, [3]byte{0xd1, 0x8c, 0x00}}, {2, [3]byte{0xd1, 0x8d, 0x00}}, + {2, [3]byte{0xd1, 0x8e, 0x00}}, {2, [3]byte{0xd1, 0x8f, 0x00}}, + {3, [3]byte{0xe2, 0x84, 0x96}}, {2, [3]byte{0xd1, 0x91, 0x00}}, + {2, [3]byte{0xd1, 0x92, 0x00}}, {2, [3]byte{0xd1, 0x93, 0x00}}, + {2, [3]byte{0xd1, 0x94, 0x00}}, {2, [3]byte{0xd1, 0x95, 0x00}}, + {2, [3]byte{0xd1, 0x96, 0x00}}, {2, [3]byte{0xd1, 0x97, 0x00}}, + {2, [3]byte{0xd1, 0x98, 0x00}}, {2, [3]byte{0xd1, 0x99, 0x00}}, + {2, [3]byte{0xd1, 0x9a, 0x00}}, {2, [3]byte{0xd1, 0x9b, 0x00}}, + {2, [3]byte{0xd1, 0x9c, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xd1, 0x9e, 0x00}}, {2, [3]byte{0xd1, 0x9f, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xfd0000a7, 0xad0000ad, 0xa1000401, 0xa2000402, 0xa3000403, 0xa4000404, 0xa5000405, + 0xa6000406, 0xa7000407, 0xa8000408, 0xa9000409, 0xaa00040a, 0xab00040b, 0xac00040c, 0xae00040e, + 0xaf00040f, 0xb0000410, 0xb1000411, 0xb2000412, 0xb3000413, 0xb4000414, 0xb5000415, 0xb6000416, + 0xb7000417, 0xb8000418, 0xb9000419, 0xba00041a, 0xbb00041b, 0xbc00041c, 0xbd00041d, 0xbe00041e, + 0xbf00041f, 0xc0000420, 0xc1000421, 0xc2000422, 0xc3000423, 0xc4000424, 0xc5000425, 0xc6000426, + 0xc7000427, 0xc8000428, 0xc9000429, 0xca00042a, 0xcb00042b, 0xcc00042c, 0xcd00042d, 0xce00042e, + 0xcf00042f, 0xd0000430, 0xd1000431, 0xd2000432, 0xd3000433, 0xd4000434, 0xd5000435, 0xd6000436, + 0xd7000437, 0xd8000438, 0xd9000439, 0xda00043a, 0xdb00043b, 0xdc00043c, 0xdd00043d, 0xde00043e, + 0xdf00043f, 0xe0000440, 0xe1000441, 0xe2000442, 0xe3000443, 0xe4000444, 0xe5000445, 0xe6000446, + 0xe7000447, 0xe8000448, 0xe9000449, 0xea00044a, 0xeb00044b, 0xec00044c, 0xed00044d, 0xee00044e, + 0xef00044f, 0xf1000451, 0xf2000452, 0xf3000453, 0xf4000454, 0xf5000455, 0xf6000456, 0xf7000457, + 0xf8000458, 0xf9000459, 0xfa00045a, 0xfb00045b, 0xfc00045c, 0xfe00045e, 0xff00045f, 0xf0002116, + 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, + 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, + 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, + 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, + }, +} + +// ISO8859_6 is the ISO 8859-6 encoding. +var ISO8859_6 *Charmap = &iso8859_6 + +var iso8859_6 = Charmap{ + name: "ISO 8859-6", + mib: identifier.ISOLatinArabic, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xd8, 0x8c, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xd8, 0x9b, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xd8, 0x9f, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xd8, 0xa1, 0x00}}, + {2, [3]byte{0xd8, 0xa2, 0x00}}, {2, [3]byte{0xd8, 0xa3, 0x00}}, + {2, [3]byte{0xd8, 0xa4, 0x00}}, {2, [3]byte{0xd8, 0xa5, 0x00}}, + {2, [3]byte{0xd8, 0xa6, 0x00}}, {2, [3]byte{0xd8, 0xa7, 0x00}}, + {2, [3]byte{0xd8, 0xa8, 0x00}}, {2, [3]byte{0xd8, 0xa9, 0x00}}, + {2, [3]byte{0xd8, 0xaa, 0x00}}, {2, [3]byte{0xd8, 0xab, 0x00}}, + {2, [3]byte{0xd8, 0xac, 0x00}}, {2, [3]byte{0xd8, 0xad, 0x00}}, + {2, [3]byte{0xd8, 0xae, 0x00}}, {2, [3]byte{0xd8, 0xaf, 0x00}}, + {2, [3]byte{0xd8, 0xb0, 0x00}}, {2, [3]byte{0xd8, 0xb1, 0x00}}, + {2, [3]byte{0xd8, 0xb2, 0x00}}, {2, [3]byte{0xd8, 0xb3, 0x00}}, + {2, [3]byte{0xd8, 0xb4, 0x00}}, {2, [3]byte{0xd8, 0xb5, 0x00}}, + {2, [3]byte{0xd8, 0xb6, 0x00}}, {2, [3]byte{0xd8, 0xb7, 0x00}}, + {2, [3]byte{0xd8, 0xb8, 0x00}}, {2, [3]byte{0xd8, 0xb9, 0x00}}, + {2, [3]byte{0xd8, 0xba, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xd9, 0x80, 0x00}}, {2, [3]byte{0xd9, 0x81, 0x00}}, + {2, [3]byte{0xd9, 0x82, 0x00}}, {2, [3]byte{0xd9, 0x83, 0x00}}, + {2, [3]byte{0xd9, 0x84, 0x00}}, {2, [3]byte{0xd9, 0x85, 0x00}}, + {2, [3]byte{0xd9, 0x86, 0x00}}, {2, [3]byte{0xd9, 0x87, 0x00}}, + {2, [3]byte{0xd9, 0x88, 0x00}}, {2, [3]byte{0xd9, 0x89, 0x00}}, + {2, [3]byte{0xd9, 0x8a, 0x00}}, {2, [3]byte{0xd9, 0x8b, 0x00}}, + {2, [3]byte{0xd9, 0x8c, 0x00}}, {2, [3]byte{0xd9, 0x8d, 0x00}}, + {2, [3]byte{0xd9, 0x8e, 0x00}}, {2, [3]byte{0xd9, 0x8f, 0x00}}, + {2, [3]byte{0xd9, 0x90, 0x00}}, {2, [3]byte{0xd9, 0x91, 0x00}}, + {2, [3]byte{0xd9, 0x92, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa40000a4, 0xad0000ad, 0xac00060c, 0xbb00061b, 0xbf00061f, 0xc1000621, 0xc2000622, + 0xc3000623, 0xc4000624, 0xc5000625, 0xc6000626, 0xc7000627, 0xc8000628, 0xc9000629, 0xca00062a, + 0xcb00062b, 0xcc00062c, 0xcd00062d, 0xce00062e, 0xcf00062f, 0xd0000630, 0xd1000631, 0xd2000632, + 0xd3000633, 0xd4000634, 0xd5000635, 0xd6000636, 0xd7000637, 0xd8000638, 0xd9000639, 0xda00063a, + 0xe0000640, 0xe1000641, 0xe2000642, 0xe3000643, 0xe4000644, 0xe5000645, 0xe6000646, 0xe7000647, + 0xe8000648, 0xe9000649, 0xea00064a, 0xeb00064b, 0xec00064c, 0xed00064d, 0xee00064e, 0xef00064f, + 0xf0000650, 0xf1000651, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, + 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, + 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, + 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, + 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, + 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, + 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, + 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, + 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, + 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, + }, +} + +// ISO8859_7 is the ISO 8859-7 encoding. +var ISO8859_7 *Charmap = &iso8859_7 + +var iso8859_7 = Charmap{ + name: "ISO 8859-7", + mib: identifier.ISOLatinGreek, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x98}}, + {3, [3]byte{0xe2, 0x80, 0x99}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xe2, 0x82, 0xaf}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xcd, 0xba, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x95}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, + {2, [3]byte{0xce, 0x84, 0x00}}, {2, [3]byte{0xce, 0x85, 0x00}}, + {2, [3]byte{0xce, 0x86, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xce, 0x88, 0x00}}, {2, [3]byte{0xce, 0x89, 0x00}}, + {2, [3]byte{0xce, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xce, 0x8c, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xce, 0x8e, 0x00}}, {2, [3]byte{0xce, 0x8f, 0x00}}, + {2, [3]byte{0xce, 0x90, 0x00}}, {2, [3]byte{0xce, 0x91, 0x00}}, + {2, [3]byte{0xce, 0x92, 0x00}}, {2, [3]byte{0xce, 0x93, 0x00}}, + {2, [3]byte{0xce, 0x94, 0x00}}, {2, [3]byte{0xce, 0x95, 0x00}}, + {2, [3]byte{0xce, 0x96, 0x00}}, {2, [3]byte{0xce, 0x97, 0x00}}, + {2, [3]byte{0xce, 0x98, 0x00}}, {2, [3]byte{0xce, 0x99, 0x00}}, + {2, [3]byte{0xce, 0x9a, 0x00}}, {2, [3]byte{0xce, 0x9b, 0x00}}, + {2, [3]byte{0xce, 0x9c, 0x00}}, {2, [3]byte{0xce, 0x9d, 0x00}}, + {2, [3]byte{0xce, 0x9e, 0x00}}, {2, [3]byte{0xce, 0x9f, 0x00}}, + {2, [3]byte{0xce, 0xa0, 0x00}}, {2, [3]byte{0xce, 0xa1, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xce, 0xa3, 0x00}}, + {2, [3]byte{0xce, 0xa4, 0x00}}, {2, [3]byte{0xce, 0xa5, 0x00}}, + {2, [3]byte{0xce, 0xa6, 0x00}}, {2, [3]byte{0xce, 0xa7, 0x00}}, + {2, [3]byte{0xce, 0xa8, 0x00}}, {2, [3]byte{0xce, 0xa9, 0x00}}, + {2, [3]byte{0xce, 0xaa, 0x00}}, {2, [3]byte{0xce, 0xab, 0x00}}, + {2, [3]byte{0xce, 0xac, 0x00}}, {2, [3]byte{0xce, 0xad, 0x00}}, + {2, [3]byte{0xce, 0xae, 0x00}}, {2, [3]byte{0xce, 0xaf, 0x00}}, + {2, [3]byte{0xce, 0xb0, 0x00}}, {2, [3]byte{0xce, 0xb1, 0x00}}, + {2, [3]byte{0xce, 0xb2, 0x00}}, {2, [3]byte{0xce, 0xb3, 0x00}}, + {2, [3]byte{0xce, 0xb4, 0x00}}, {2, [3]byte{0xce, 0xb5, 0x00}}, + {2, [3]byte{0xce, 0xb6, 0x00}}, {2, [3]byte{0xce, 0xb7, 0x00}}, + {2, [3]byte{0xce, 0xb8, 0x00}}, {2, [3]byte{0xce, 0xb9, 0x00}}, + {2, [3]byte{0xce, 0xba, 0x00}}, {2, [3]byte{0xce, 0xbb, 0x00}}, + {2, [3]byte{0xce, 0xbc, 0x00}}, {2, [3]byte{0xce, 0xbd, 0x00}}, + {2, [3]byte{0xce, 0xbe, 0x00}}, {2, [3]byte{0xce, 0xbf, 0x00}}, + {2, [3]byte{0xcf, 0x80, 0x00}}, {2, [3]byte{0xcf, 0x81, 0x00}}, + {2, [3]byte{0xcf, 0x82, 0x00}}, {2, [3]byte{0xcf, 0x83, 0x00}}, + {2, [3]byte{0xcf, 0x84, 0x00}}, {2, [3]byte{0xcf, 0x85, 0x00}}, + {2, [3]byte{0xcf, 0x86, 0x00}}, {2, [3]byte{0xcf, 0x87, 0x00}}, + {2, [3]byte{0xcf, 0x88, 0x00}}, {2, [3]byte{0xcf, 0x89, 0x00}}, + {2, [3]byte{0xcf, 0x8a, 0x00}}, {2, [3]byte{0xcf, 0x8b, 0x00}}, + {2, [3]byte{0xcf, 0x8c, 0x00}}, {2, [3]byte{0xcf, 0x8d, 0x00}}, + {2, [3]byte{0xcf, 0x8e, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa30000a3, 0xa60000a6, 0xa70000a7, 0xa80000a8, 0xa90000a9, 0xab0000ab, 0xac0000ac, + 0xad0000ad, 0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3, 0xb70000b7, 0xbb0000bb, 0xbd0000bd, + 0xaa00037a, 0xb4000384, 0xb5000385, 0xb6000386, 0xb8000388, 0xb9000389, 0xba00038a, 0xbc00038c, + 0xbe00038e, 0xbf00038f, 0xc0000390, 0xc1000391, 0xc2000392, 0xc3000393, 0xc4000394, 0xc5000395, + 0xc6000396, 0xc7000397, 0xc8000398, 0xc9000399, 0xca00039a, 0xcb00039b, 0xcc00039c, 0xcd00039d, + 0xce00039e, 0xcf00039f, 0xd00003a0, 0xd10003a1, 0xd30003a3, 0xd40003a4, 0xd50003a5, 0xd60003a6, + 0xd70003a7, 0xd80003a8, 0xd90003a9, 0xda0003aa, 0xdb0003ab, 0xdc0003ac, 0xdd0003ad, 0xde0003ae, + 0xdf0003af, 0xe00003b0, 0xe10003b1, 0xe20003b2, 0xe30003b3, 0xe40003b4, 0xe50003b5, 0xe60003b6, + 0xe70003b7, 0xe80003b8, 0xe90003b9, 0xea0003ba, 0xeb0003bb, 0xec0003bc, 0xed0003bd, 0xee0003be, + 0xef0003bf, 0xf00003c0, 0xf10003c1, 0xf20003c2, 0xf30003c3, 0xf40003c4, 0xf50003c5, 0xf60003c6, + 0xf70003c7, 0xf80003c8, 0xf90003c9, 0xfa0003ca, 0xfb0003cb, 0xfc0003cc, 0xfd0003cd, 0xfe0003ce, + 0xaf002015, 0xa1002018, 0xa2002019, 0xa40020ac, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, + 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, + 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, + 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, + 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, + }, +} + +// ISO8859_8 is the ISO 8859-8 encoding. +var ISO8859_8 *Charmap = &iso8859_8 + +var iso8859_8 = Charmap{ + name: "ISO 8859-8", + mib: identifier.ISOLatinHebrew, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0x97, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbe, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x97}}, + {2, [3]byte{0xd7, 0x90, 0x00}}, {2, [3]byte{0xd7, 0x91, 0x00}}, + {2, [3]byte{0xd7, 0x92, 0x00}}, {2, [3]byte{0xd7, 0x93, 0x00}}, + {2, [3]byte{0xd7, 0x94, 0x00}}, {2, [3]byte{0xd7, 0x95, 0x00}}, + {2, [3]byte{0xd7, 0x96, 0x00}}, {2, [3]byte{0xd7, 0x97, 0x00}}, + {2, [3]byte{0xd7, 0x98, 0x00}}, {2, [3]byte{0xd7, 0x99, 0x00}}, + {2, [3]byte{0xd7, 0x9a, 0x00}}, {2, [3]byte{0xd7, 0x9b, 0x00}}, + {2, [3]byte{0xd7, 0x9c, 0x00}}, {2, [3]byte{0xd7, 0x9d, 0x00}}, + {2, [3]byte{0xd7, 0x9e, 0x00}}, {2, [3]byte{0xd7, 0x9f, 0x00}}, + {2, [3]byte{0xd7, 0xa0, 0x00}}, {2, [3]byte{0xd7, 0xa1, 0x00}}, + {2, [3]byte{0xd7, 0xa2, 0x00}}, {2, [3]byte{0xd7, 0xa3, 0x00}}, + {2, [3]byte{0xd7, 0xa4, 0x00}}, {2, [3]byte{0xd7, 0xa5, 0x00}}, + {2, [3]byte{0xd7, 0xa6, 0x00}}, {2, [3]byte{0xd7, 0xa7, 0x00}}, + {2, [3]byte{0xd7, 0xa8, 0x00}}, {2, [3]byte{0xd7, 0xa9, 0x00}}, + {2, [3]byte{0xd7, 0xaa, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x8e}}, + {3, [3]byte{0xe2, 0x80, 0x8f}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7, 0xa80000a8, + 0xa90000a9, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af, 0xb00000b0, 0xb10000b1, + 0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, 0xb80000b8, 0xb90000b9, + 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xaa0000d7, 0xba0000f7, 0xe00005d0, 0xe10005d1, + 0xe20005d2, 0xe30005d3, 0xe40005d4, 0xe50005d5, 0xe60005d6, 0xe70005d7, 0xe80005d8, 0xe90005d9, + 0xea0005da, 0xeb0005db, 0xec0005dc, 0xed0005dd, 0xee0005de, 0xef0005df, 0xf00005e0, 0xf10005e1, + 0xf20005e2, 0xf30005e3, 0xf40005e4, 0xf50005e5, 0xf60005e6, 0xf70005e7, 0xf80005e8, 0xf90005e9, + 0xfa0005ea, 0xfd00200e, 0xfe00200f, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, + 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, + 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, + 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, + 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, + 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, + 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, + 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, + 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, + }, +} + +// ISO8859_9 is the ISO 8859-9 encoding. +var ISO8859_9 *Charmap = &iso8859_9 + +var iso8859_9 = Charmap{ + name: "ISO 8859-9", + mib: identifier.ISOLatin5, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x80, 0x00}}, {2, [3]byte{0xc2, 0x81, 0x00}}, + {2, [3]byte{0xc2, 0x82, 0x00}}, {2, [3]byte{0xc2, 0x83, 0x00}}, + {2, [3]byte{0xc2, 0x84, 0x00}}, {2, [3]byte{0xc2, 0x85, 0x00}}, + {2, [3]byte{0xc2, 0x86, 0x00}}, {2, [3]byte{0xc2, 0x87, 0x00}}, + {2, [3]byte{0xc2, 0x88, 0x00}}, {2, [3]byte{0xc2, 0x89, 0x00}}, + {2, [3]byte{0xc2, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0x8b, 0x00}}, + {2, [3]byte{0xc2, 0x8c, 0x00}}, {2, [3]byte{0xc2, 0x8d, 0x00}}, + {2, [3]byte{0xc2, 0x8e, 0x00}}, {2, [3]byte{0xc2, 0x8f, 0x00}}, + {2, [3]byte{0xc2, 0x90, 0x00}}, {2, [3]byte{0xc2, 0x91, 0x00}}, + {2, [3]byte{0xc2, 0x92, 0x00}}, {2, [3]byte{0xc2, 0x93, 0x00}}, + {2, [3]byte{0xc2, 0x94, 0x00}}, {2, [3]byte{0xc2, 0x95, 0x00}}, + {2, [3]byte{0xc2, 0x96, 0x00}}, {2, [3]byte{0xc2, 0x97, 0x00}}, + {2, [3]byte{0xc2, 0x98, 0x00}}, {2, [3]byte{0xc2, 0x99, 0x00}}, + {2, [3]byte{0xc2, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9b, 0x00}}, + {2, [3]byte{0xc2, 0x9c, 0x00}}, {2, [3]byte{0xc2, 0x9d, 0x00}}, + {2, [3]byte{0xc2, 0x9e, 0x00}}, {2, [3]byte{0xc2, 0x9f, 0x00}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, + {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, + {2, [3]byte{0xc2, 0xba, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}}, + {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, + {2, [3]byte{0xc4, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc4, 0xb0, 0x00}}, + {2, [3]byte{0xc5, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, + {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc4, 0x9f, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, + {2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, + {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc4, 0xb1, 0x00}}, + {2, [3]byte{0xc5, 0x9f, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0x80000080, 0x81000081, 0x82000082, 0x83000083, 0x84000084, 0x85000085, 0x86000086, 0x87000087, + 0x88000088, 0x89000089, 0x8a00008a, 0x8b00008b, 0x8c00008c, 0x8d00008d, 0x8e00008e, 0x8f00008f, + 0x90000090, 0x91000091, 0x92000092, 0x93000093, 0x94000094, 0x95000095, 0x96000096, 0x97000097, + 0x98000098, 0x99000099, 0x9a00009a, 0x9b00009b, 0x9c00009c, 0x9d00009d, 0x9e00009e, 0x9f00009f, + 0xa00000a0, 0xa10000a1, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7, + 0xa80000a8, 0xa90000a9, 0xaa0000aa, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af, + 0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, + 0xb80000b8, 0xb90000b9, 0xba0000ba, 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xbf0000bf, + 0xc00000c0, 0xc10000c1, 0xc20000c2, 0xc30000c3, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc70000c7, + 0xc80000c8, 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc, 0xcd0000cd, 0xce0000ce, 0xcf0000cf, + 0xd10000d1, 0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd70000d7, 0xd80000d8, + 0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc, 0xdf0000df, 0xe00000e0, 0xe10000e1, 0xe20000e2, + 0xe30000e3, 0xe40000e4, 0xe50000e5, 0xe60000e6, 0xe70000e7, 0xe80000e8, 0xe90000e9, 0xea0000ea, + 0xeb0000eb, 0xec0000ec, 0xed0000ed, 0xee0000ee, 0xef0000ef, 0xf10000f1, 0xf20000f2, 0xf30000f3, + 0xf40000f4, 0xf50000f5, 0xf60000f6, 0xf70000f7, 0xf80000f8, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, + 0xfc0000fc, 0xff0000ff, 0xd000011e, 0xf000011f, 0xdd000130, 0xfd000131, 0xde00015e, 0xfe00015f, + }, +} + +// ISO8859_10 is the ISO 8859-10 encoding. +var ISO8859_10 *Charmap = &iso8859_10 + +var iso8859_10 = Charmap{ + name: "ISO 8859-10", + mib: identifier.ISOLatin6, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc4, 0x84, 0x00}}, + {2, [3]byte{0xc4, 0x92, 0x00}}, {2, [3]byte{0xc4, 0xa2, 0x00}}, + {2, [3]byte{0xc4, 0xaa, 0x00}}, {2, [3]byte{0xc4, 0xa8, 0x00}}, + {2, [3]byte{0xc4, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc4, 0xbb, 0x00}}, {2, [3]byte{0xc4, 0x90, 0x00}}, + {2, [3]byte{0xc5, 0xa0, 0x00}}, {2, [3]byte{0xc5, 0xa6, 0x00}}, + {2, [3]byte{0xc5, 0xbd, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc5, 0xaa, 0x00}}, {2, [3]byte{0xc5, 0x8a, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc4, 0x85, 0x00}}, + {2, [3]byte{0xc4, 0x93, 0x00}}, {2, [3]byte{0xc4, 0xa3, 0x00}}, + {2, [3]byte{0xc4, 0xab, 0x00}}, {2, [3]byte{0xc4, 0xa9, 0x00}}, + {2, [3]byte{0xc4, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc4, 0xbc, 0x00}}, {2, [3]byte{0xc4, 0x91, 0x00}}, + {2, [3]byte{0xc5, 0xa1, 0x00}}, {2, [3]byte{0xc5, 0xa7, 0x00}}, + {2, [3]byte{0xc5, 0xbe, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x95}}, + {2, [3]byte{0xc5, 0xab, 0x00}}, {2, [3]byte{0xc5, 0x8b, 0x00}}, + {2, [3]byte{0xc4, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc4, 0xae, 0x00}}, + {2, [3]byte{0xc4, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc4, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc4, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, + {2, [3]byte{0xc3, 0x90, 0x00}}, {2, [3]byte{0xc5, 0x85, 0x00}}, + {2, [3]byte{0xc5, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc5, 0xa8, 0x00}}, + {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc5, 0xb2, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, + {2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc4, 0x81, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, + {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc4, 0xaf, 0x00}}, + {2, [3]byte{0xc4, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc4, 0x99, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc4, 0x97, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc5, 0x86, 0x00}}, + {2, [3]byte{0xc5, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, + {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc5, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc5, 0xb3, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}}, + {2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc4, 0xb8, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa70000a7, 0xad0000ad, 0xb00000b0, 0xb70000b7, 0xc10000c1, 0xc20000c2, 0xc30000c3, + 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc90000c9, 0xcb0000cb, 0xcd0000cd, 0xce0000ce, 0xcf0000cf, + 0xd00000d0, 0xd30000d3, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd80000d8, 0xda0000da, 0xdb0000db, + 0xdc0000dc, 0xdd0000dd, 0xde0000de, 0xdf0000df, 0xe10000e1, 0xe20000e2, 0xe30000e3, 0xe40000e4, + 0xe50000e5, 0xe60000e6, 0xe90000e9, 0xeb0000eb, 0xed0000ed, 0xee0000ee, 0xef0000ef, 0xf00000f0, + 0xf30000f3, 0xf40000f4, 0xf50000f5, 0xf60000f6, 0xf80000f8, 0xfa0000fa, 0xfb0000fb, 0xfc0000fc, + 0xfd0000fd, 0xfe0000fe, 0xc0000100, 0xe0000101, 0xa1000104, 0xb1000105, 0xc800010c, 0xe800010d, + 0xa9000110, 0xb9000111, 0xa2000112, 0xb2000113, 0xcc000116, 0xec000117, 0xca000118, 0xea000119, + 0xa3000122, 0xb3000123, 0xa5000128, 0xb5000129, 0xa400012a, 0xb400012b, 0xc700012e, 0xe700012f, + 0xa6000136, 0xb6000137, 0xff000138, 0xa800013b, 0xb800013c, 0xd1000145, 0xf1000146, 0xaf00014a, + 0xbf00014b, 0xd200014c, 0xf200014d, 0xaa000160, 0xba000161, 0xab000166, 0xbb000167, 0xd7000168, + 0xf7000169, 0xae00016a, 0xbe00016b, 0xd9000172, 0xf9000173, 0xac00017d, 0xbc00017e, 0xbd002015, + 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, + 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, + 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, + 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, + }, +} + +// ISO8859_13 is the ISO 8859-13 encoding. +var ISO8859_13 *Charmap = &iso8859_13 + +var iso8859_13 = Charmap{ + name: "ISO 8859-13", + mib: identifier.ISO885913, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x9d}}, + {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x9e}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xc5, 0x96, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc3, 0x86, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, + {3, [3]byte{0xe2, 0x80, 0x9c}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, + {2, [3]byte{0xc5, 0x97, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc3, 0xa6, 0x00}}, + {2, [3]byte{0xc4, 0x84, 0x00}}, {2, [3]byte{0xc4, 0xae, 0x00}}, + {2, [3]byte{0xc4, 0x80, 0x00}}, {2, [3]byte{0xc4, 0x86, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc4, 0x98, 0x00}}, {2, [3]byte{0xc4, 0x92, 0x00}}, + {2, [3]byte{0xc4, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc5, 0xb9, 0x00}}, {2, [3]byte{0xc4, 0x96, 0x00}}, + {2, [3]byte{0xc4, 0xa2, 0x00}}, {2, [3]byte{0xc4, 0xb6, 0x00}}, + {2, [3]byte{0xc4, 0xaa, 0x00}}, {2, [3]byte{0xc4, 0xbb, 0x00}}, + {2, [3]byte{0xc5, 0xa0, 0x00}}, {2, [3]byte{0xc5, 0x83, 0x00}}, + {2, [3]byte{0xc5, 0x85, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, + {2, [3]byte{0xc5, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {2, [3]byte{0xc5, 0xb2, 0x00}}, {2, [3]byte{0xc5, 0x81, 0x00}}, + {2, [3]byte{0xc5, 0x9a, 0x00}}, {2, [3]byte{0xc5, 0xaa, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc5, 0xbb, 0x00}}, + {2, [3]byte{0xc5, 0xbd, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc4, 0x85, 0x00}}, {2, [3]byte{0xc4, 0xaf, 0x00}}, + {2, [3]byte{0xc4, 0x81, 0x00}}, {2, [3]byte{0xc4, 0x87, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, + {2, [3]byte{0xc4, 0x99, 0x00}}, {2, [3]byte{0xc4, 0x93, 0x00}}, + {2, [3]byte{0xc4, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc5, 0xba, 0x00}}, {2, [3]byte{0xc4, 0x97, 0x00}}, + {2, [3]byte{0xc4, 0xa3, 0x00}}, {2, [3]byte{0xc4, 0xb7, 0x00}}, + {2, [3]byte{0xc4, 0xab, 0x00}}, {2, [3]byte{0xc4, 0xbc, 0x00}}, + {2, [3]byte{0xc5, 0xa1, 0x00}}, {2, [3]byte{0xc5, 0x84, 0x00}}, + {2, [3]byte{0xc5, 0x86, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, + {2, [3]byte{0xc5, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {2, [3]byte{0xc5, 0xb3, 0x00}}, {2, [3]byte{0xc5, 0x82, 0x00}}, + {2, [3]byte{0xc5, 0x9b, 0x00}}, {2, [3]byte{0xc5, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc5, 0xbc, 0x00}}, + {2, [3]byte{0xc5, 0xbe, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x99}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa60000a6, 0xa70000a7, 0xa90000a9, 0xab0000ab, + 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3, 0xb50000b5, + 0xb60000b6, 0xb70000b7, 0xb90000b9, 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xc40000c4, + 0xc50000c5, 0xaf0000c6, 0xc90000c9, 0xd30000d3, 0xd50000d5, 0xd60000d6, 0xd70000d7, 0xa80000d8, + 0xdc0000dc, 0xdf0000df, 0xe40000e4, 0xe50000e5, 0xbf0000e6, 0xe90000e9, 0xf30000f3, 0xf50000f5, + 0xf60000f6, 0xf70000f7, 0xb80000f8, 0xfc0000fc, 0xc2000100, 0xe2000101, 0xc0000104, 0xe0000105, + 0xc3000106, 0xe3000107, 0xc800010c, 0xe800010d, 0xc7000112, 0xe7000113, 0xcb000116, 0xeb000117, + 0xc6000118, 0xe6000119, 0xcc000122, 0xec000123, 0xce00012a, 0xee00012b, 0xc100012e, 0xe100012f, + 0xcd000136, 0xed000137, 0xcf00013b, 0xef00013c, 0xd9000141, 0xf9000142, 0xd1000143, 0xf1000144, + 0xd2000145, 0xf2000146, 0xd400014c, 0xf400014d, 0xaa000156, 0xba000157, 0xda00015a, 0xfa00015b, + 0xd0000160, 0xf0000161, 0xdb00016a, 0xfb00016b, 0xd8000172, 0xf8000173, 0xca000179, 0xea00017a, + 0xdd00017b, 0xfd00017c, 0xde00017d, 0xfe00017e, 0xff002019, 0xb400201c, 0xa100201d, 0xa500201e, + 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, + 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, + 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, + 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, + }, +} + +// ISO8859_14 is the ISO 8859-14 encoding. +var ISO8859_14 *Charmap = &iso8859_14 + +var iso8859_14 = Charmap{ + name: "ISO 8859-14", + mib: identifier.ISO885914, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xe1, 0xb8, 0x82}}, + {3, [3]byte{0xe1, 0xb8, 0x83}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc4, 0x8a, 0x00}}, {2, [3]byte{0xc4, 0x8b, 0x00}}, + {3, [3]byte{0xe1, 0xb8, 0x8a}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {3, [3]byte{0xe1, 0xba, 0x80}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {3, [3]byte{0xe1, 0xba, 0x82}}, {3, [3]byte{0xe1, 0xb8, 0x8b}}, + {3, [3]byte{0xe1, 0xbb, 0xb2}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc5, 0xb8, 0x00}}, + {3, [3]byte{0xe1, 0xb8, 0x9e}}, {3, [3]byte{0xe1, 0xb8, 0x9f}}, + {2, [3]byte{0xc4, 0xa0, 0x00}}, {2, [3]byte{0xc4, 0xa1, 0x00}}, + {3, [3]byte{0xe1, 0xb9, 0x80}}, {3, [3]byte{0xe1, 0xb9, 0x81}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {3, [3]byte{0xe1, 0xb9, 0x96}}, + {3, [3]byte{0xe1, 0xba, 0x81}}, {3, [3]byte{0xe1, 0xb9, 0x97}}, + {3, [3]byte{0xe1, 0xba, 0x83}}, {3, [3]byte{0xe1, 0xb9, 0xa0}}, + {3, [3]byte{0xe1, 0xbb, 0xb3}}, {3, [3]byte{0xe1, 0xba, 0x84}}, + {3, [3]byte{0xe1, 0xba, 0x85}}, {3, [3]byte{0xe1, 0xb9, 0xa1}}, + {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, + {2, [3]byte{0xc5, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {3, [3]byte{0xe1, 0xb9, 0xaa}}, + {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, + {2, [3]byte{0xc5, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, + {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc5, 0xb5, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, + {2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, + {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {3, [3]byte{0xe1, 0xb9, 0xab}}, + {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}}, + {2, [3]byte{0xc5, 0xb7, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa30000a3, 0xa70000a7, 0xa90000a9, 0xad0000ad, 0xae0000ae, 0xb60000b6, 0xc00000c0, + 0xc10000c1, 0xc20000c2, 0xc30000c3, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc70000c7, 0xc80000c8, + 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc, 0xcd0000cd, 0xce0000ce, 0xcf0000cf, 0xd10000d1, + 0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd80000d8, 0xd90000d9, 0xda0000da, + 0xdb0000db, 0xdc0000dc, 0xdd0000dd, 0xdf0000df, 0xe00000e0, 0xe10000e1, 0xe20000e2, 0xe30000e3, + 0xe40000e4, 0xe50000e5, 0xe60000e6, 0xe70000e7, 0xe80000e8, 0xe90000e9, 0xea0000ea, 0xeb0000eb, + 0xec0000ec, 0xed0000ed, 0xee0000ee, 0xef0000ef, 0xf10000f1, 0xf20000f2, 0xf30000f3, 0xf40000f4, + 0xf50000f5, 0xf60000f6, 0xf80000f8, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, 0xfc0000fc, 0xfd0000fd, + 0xff0000ff, 0xa400010a, 0xa500010b, 0xb2000120, 0xb3000121, 0xd0000174, 0xf0000175, 0xde000176, + 0xfe000177, 0xaf000178, 0xa1001e02, 0xa2001e03, 0xa6001e0a, 0xab001e0b, 0xb0001e1e, 0xb1001e1f, + 0xb4001e40, 0xb5001e41, 0xb7001e56, 0xb9001e57, 0xbb001e60, 0xbf001e61, 0xd7001e6a, 0xf7001e6b, + 0xa8001e80, 0xb8001e81, 0xaa001e82, 0xba001e83, 0xbd001e84, 0xbe001e85, 0xac001ef2, 0xbc001ef3, + 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, + 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, + 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, + 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, + }, +} + +// ISO8859_15 is the ISO 8859-15 encoding. +var ISO8859_15 *Charmap = &iso8859_15 + +var iso8859_15 = Charmap{ + name: "ISO 8859-15", + mib: identifier.ISO885915, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, + {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xac}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, + {2, [3]byte{0xc5, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc5, 0xa1, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, + {2, [3]byte{0xc5, 0xbd, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc5, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, + {2, [3]byte{0xc2, 0xba, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc5, 0x92, 0x00}}, {2, [3]byte{0xc5, 0x93, 0x00}}, + {2, [3]byte{0xc5, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}}, + {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, + {2, [3]byte{0xc3, 0x90, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, + {2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, + {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, + {2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, + {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}}, + {2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa10000a1, 0xa20000a2, 0xa30000a3, 0xa50000a5, 0xa70000a7, 0xa90000a9, 0xaa0000aa, + 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af, 0xb00000b0, 0xb10000b1, 0xb20000b2, + 0xb30000b3, 0xb50000b5, 0xb60000b6, 0xb70000b7, 0xb90000b9, 0xba0000ba, 0xbb0000bb, 0xbf0000bf, + 0xc00000c0, 0xc10000c1, 0xc20000c2, 0xc30000c3, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc70000c7, + 0xc80000c8, 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc, 0xcd0000cd, 0xce0000ce, 0xcf0000cf, + 0xd00000d0, 0xd10000d1, 0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd70000d7, + 0xd80000d8, 0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc, 0xdd0000dd, 0xde0000de, 0xdf0000df, + 0xe00000e0, 0xe10000e1, 0xe20000e2, 0xe30000e3, 0xe40000e4, 0xe50000e5, 0xe60000e6, 0xe70000e7, + 0xe80000e8, 0xe90000e9, 0xea0000ea, 0xeb0000eb, 0xec0000ec, 0xed0000ed, 0xee0000ee, 0xef0000ef, + 0xf00000f0, 0xf10000f1, 0xf20000f2, 0xf30000f3, 0xf40000f4, 0xf50000f5, 0xf60000f6, 0xf70000f7, + 0xf80000f8, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, 0xfc0000fc, 0xfd0000fd, 0xfe0000fe, 0xff0000ff, + 0xbc000152, 0xbd000153, 0xa6000160, 0xa8000161, 0xbe000178, 0xb400017d, 0xb800017e, 0xa40020ac, + 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, + 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, + 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, + 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, + }, +} + +// ISO8859_16 is the ISO 8859-16 encoding. +var ISO8859_16 *Charmap = &iso8859_16 + +var iso8859_16 = Charmap{ + name: "ISO 8859-16", + mib: identifier.ISO885916, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc4, 0x84, 0x00}}, + {2, [3]byte{0xc4, 0x85, 0x00}}, {2, [3]byte{0xc5, 0x81, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xe2, 0x80, 0x9e}}, + {2, [3]byte{0xc5, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc5, 0xa1, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xc8, 0x98, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc5, 0xb9, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc5, 0xba, 0x00}}, {2, [3]byte{0xc5, 0xbb, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc4, 0x8c, 0x00}}, {2, [3]byte{0xc5, 0x82, 0x00}}, + {2, [3]byte{0xc5, 0xbd, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x9d}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc5, 0xbe, 0x00}}, {2, [3]byte{0xc4, 0x8d, 0x00}}, + {2, [3]byte{0xc8, 0x99, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc5, 0x92, 0x00}}, {2, [3]byte{0xc5, 0x93, 0x00}}, + {2, [3]byte{0xc5, 0xb8, 0x00}}, {2, [3]byte{0xc5, 0xbc, 0x00}}, + {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc4, 0x82, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc4, 0x86, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, + {2, [3]byte{0xc4, 0x90, 0x00}}, {2, [3]byte{0xc5, 0x83, 0x00}}, + {2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc5, 0x90, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc5, 0x9a, 0x00}}, + {2, [3]byte{0xc5, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc4, 0x98, 0x00}}, + {2, [3]byte{0xc8, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc4, 0x83, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc4, 0x87, 0x00}}, + {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc4, 0x91, 0x00}}, {2, [3]byte{0xc5, 0x84, 0x00}}, + {2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, + {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc5, 0x91, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc5, 0x9b, 0x00}}, + {2, [3]byte{0xc5, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc4, 0x99, 0x00}}, + {2, [3]byte{0xc8, 0x9b, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa70000a7, 0xa90000a9, 0xab0000ab, 0xad0000ad, 0xb00000b0, 0xb10000b1, 0xb60000b6, + 0xb70000b7, 0xbb0000bb, 0xc00000c0, 0xc10000c1, 0xc20000c2, 0xc40000c4, 0xc60000c6, 0xc70000c7, + 0xc80000c8, 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc, 0xcd0000cd, 0xce0000ce, 0xcf0000cf, + 0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd60000d6, 0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc, + 0xdf0000df, 0xe00000e0, 0xe10000e1, 0xe20000e2, 0xe40000e4, 0xe60000e6, 0xe70000e7, 0xe80000e8, + 0xe90000e9, 0xea0000ea, 0xeb0000eb, 0xec0000ec, 0xed0000ed, 0xee0000ee, 0xef0000ef, 0xf20000f2, + 0xf30000f3, 0xf40000f4, 0xf60000f6, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, 0xfc0000fc, 0xff0000ff, + 0xc3000102, 0xe3000103, 0xa1000104, 0xa2000105, 0xc5000106, 0xe5000107, 0xb200010c, 0xb900010d, + 0xd0000110, 0xf0000111, 0xdd000118, 0xfd000119, 0xa3000141, 0xb3000142, 0xd1000143, 0xf1000144, + 0xd5000150, 0xf5000151, 0xbc000152, 0xbd000153, 0xd700015a, 0xf700015b, 0xa6000160, 0xa8000161, + 0xd8000170, 0xf8000171, 0xbe000178, 0xac000179, 0xae00017a, 0xaf00017b, 0xbf00017c, 0xb400017d, + 0xb800017e, 0xaa000218, 0xba000219, 0xde00021a, 0xfe00021b, 0xb500201d, 0xa500201e, 0xa40020ac, + 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, + 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, + 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, + 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, + }, +} + +// KOI8R is the KOI8-R encoding. +var KOI8R *Charmap = &koi8R + +var koi8R = Charmap{ + name: "KOI8-R", + mib: identifier.KOI8R, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0x82}}, + {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x94, 0x90}}, + {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0x98}}, + {3, [3]byte{0xe2, 0x94, 0x9c}}, {3, [3]byte{0xe2, 0x94, 0xa4}}, + {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, + {3, [3]byte{0xe2, 0x94, 0xbc}}, {3, [3]byte{0xe2, 0x96, 0x80}}, + {3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x88}}, + {3, [3]byte{0xe2, 0x96, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x90}}, + {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, + {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x8c, 0xa0}}, + {3, [3]byte{0xe2, 0x96, 0xa0}}, {3, [3]byte{0xe2, 0x88, 0x99}}, + {3, [3]byte{0xe2, 0x88, 0x9a}}, {3, [3]byte{0xe2, 0x89, 0x88}}, + {3, [3]byte{0xe2, 0x89, 0xa4}}, {3, [3]byte{0xe2, 0x89, 0xa5}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xe2, 0x8c, 0xa1}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb2, 0x00}}, + {2, [3]byte{0xc2, 0xb7, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {3, [3]byte{0xe2, 0x95, 0x90}}, {3, [3]byte{0xe2, 0x95, 0x91}}, + {3, [3]byte{0xe2, 0x95, 0x92}}, {2, [3]byte{0xd1, 0x91, 0x00}}, + {3, [3]byte{0xe2, 0x95, 0x93}}, {3, [3]byte{0xe2, 0x95, 0x94}}, + {3, [3]byte{0xe2, 0x95, 0x95}}, {3, [3]byte{0xe2, 0x95, 0x96}}, + {3, [3]byte{0xe2, 0x95, 0x97}}, {3, [3]byte{0xe2, 0x95, 0x98}}, + {3, [3]byte{0xe2, 0x95, 0x99}}, {3, [3]byte{0xe2, 0x95, 0x9a}}, + {3, [3]byte{0xe2, 0x95, 0x9b}}, {3, [3]byte{0xe2, 0x95, 0x9c}}, + {3, [3]byte{0xe2, 0x95, 0x9d}}, {3, [3]byte{0xe2, 0x95, 0x9e}}, + {3, [3]byte{0xe2, 0x95, 0x9f}}, {3, [3]byte{0xe2, 0x95, 0xa0}}, + {3, [3]byte{0xe2, 0x95, 0xa1}}, {2, [3]byte{0xd0, 0x81, 0x00}}, + {3, [3]byte{0xe2, 0x95, 0xa2}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, + {3, [3]byte{0xe2, 0x95, 0xa4}}, {3, [3]byte{0xe2, 0x95, 0xa5}}, + {3, [3]byte{0xe2, 0x95, 0xa6}}, {3, [3]byte{0xe2, 0x95, 0xa7}}, + {3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa9}}, + {3, [3]byte{0xe2, 0x95, 0xaa}}, {3, [3]byte{0xe2, 0x95, 0xab}}, + {3, [3]byte{0xe2, 0x95, 0xac}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xd1, 0x8e, 0x00}}, {2, [3]byte{0xd0, 0xb0, 0x00}}, + {2, [3]byte{0xd0, 0xb1, 0x00}}, {2, [3]byte{0xd1, 0x86, 0x00}}, + {2, [3]byte{0xd0, 0xb4, 0x00}}, {2, [3]byte{0xd0, 0xb5, 0x00}}, + {2, [3]byte{0xd1, 0x84, 0x00}}, {2, [3]byte{0xd0, 0xb3, 0x00}}, + {2, [3]byte{0xd1, 0x85, 0x00}}, {2, [3]byte{0xd0, 0xb8, 0x00}}, + {2, [3]byte{0xd0, 0xb9, 0x00}}, {2, [3]byte{0xd0, 0xba, 0x00}}, + {2, [3]byte{0xd0, 0xbb, 0x00}}, {2, [3]byte{0xd0, 0xbc, 0x00}}, + {2, [3]byte{0xd0, 0xbd, 0x00}}, {2, [3]byte{0xd0, 0xbe, 0x00}}, + {2, [3]byte{0xd0, 0xbf, 0x00}}, {2, [3]byte{0xd1, 0x8f, 0x00}}, + {2, [3]byte{0xd1, 0x80, 0x00}}, {2, [3]byte{0xd1, 0x81, 0x00}}, + {2, [3]byte{0xd1, 0x82, 0x00}}, {2, [3]byte{0xd1, 0x83, 0x00}}, + {2, [3]byte{0xd0, 0xb6, 0x00}}, {2, [3]byte{0xd0, 0xb2, 0x00}}, + {2, [3]byte{0xd1, 0x8c, 0x00}}, {2, [3]byte{0xd1, 0x8b, 0x00}}, + {2, [3]byte{0xd0, 0xb7, 0x00}}, {2, [3]byte{0xd1, 0x88, 0x00}}, + {2, [3]byte{0xd1, 0x8d, 0x00}}, {2, [3]byte{0xd1, 0x89, 0x00}}, + {2, [3]byte{0xd1, 0x87, 0x00}}, {2, [3]byte{0xd1, 0x8a, 0x00}}, + {2, [3]byte{0xd0, 0xae, 0x00}}, {2, [3]byte{0xd0, 0x90, 0x00}}, + {2, [3]byte{0xd0, 0x91, 0x00}}, {2, [3]byte{0xd0, 0xa6, 0x00}}, + {2, [3]byte{0xd0, 0x94, 0x00}}, {2, [3]byte{0xd0, 0x95, 0x00}}, + {2, [3]byte{0xd0, 0xa4, 0x00}}, {2, [3]byte{0xd0, 0x93, 0x00}}, + {2, [3]byte{0xd0, 0xa5, 0x00}}, {2, [3]byte{0xd0, 0x98, 0x00}}, + {2, [3]byte{0xd0, 0x99, 0x00}}, {2, [3]byte{0xd0, 0x9a, 0x00}}, + {2, [3]byte{0xd0, 0x9b, 0x00}}, {2, [3]byte{0xd0, 0x9c, 0x00}}, + {2, [3]byte{0xd0, 0x9d, 0x00}}, {2, [3]byte{0xd0, 0x9e, 0x00}}, + {2, [3]byte{0xd0, 0x9f, 0x00}}, {2, [3]byte{0xd0, 0xaf, 0x00}}, + {2, [3]byte{0xd0, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0xa1, 0x00}}, + {2, [3]byte{0xd0, 0xa2, 0x00}}, {2, [3]byte{0xd0, 0xa3, 0x00}}, + {2, [3]byte{0xd0, 0x96, 0x00}}, {2, [3]byte{0xd0, 0x92, 0x00}}, + {2, [3]byte{0xd0, 0xac, 0x00}}, {2, [3]byte{0xd0, 0xab, 0x00}}, + {2, [3]byte{0xd0, 0x97, 0x00}}, {2, [3]byte{0xd0, 0xa8, 0x00}}, + {2, [3]byte{0xd0, 0xad, 0x00}}, {2, [3]byte{0xd0, 0xa9, 0x00}}, + {2, [3]byte{0xd0, 0xa7, 0x00}}, {2, [3]byte{0xd0, 0xaa, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0x9a0000a0, 0xbf0000a9, 0x9c0000b0, 0x9d0000b2, 0x9e0000b7, 0x9f0000f7, 0xb3000401, 0xe1000410, + 0xe2000411, 0xf7000412, 0xe7000413, 0xe4000414, 0xe5000415, 0xf6000416, 0xfa000417, 0xe9000418, + 0xea000419, 0xeb00041a, 0xec00041b, 0xed00041c, 0xee00041d, 0xef00041e, 0xf000041f, 0xf2000420, + 0xf3000421, 0xf4000422, 0xf5000423, 0xe6000424, 0xe8000425, 0xe3000426, 0xfe000427, 0xfb000428, + 0xfd000429, 0xff00042a, 0xf900042b, 0xf800042c, 0xfc00042d, 0xe000042e, 0xf100042f, 0xc1000430, + 0xc2000431, 0xd7000432, 0xc7000433, 0xc4000434, 0xc5000435, 0xd6000436, 0xda000437, 0xc9000438, + 0xca000439, 0xcb00043a, 0xcc00043b, 0xcd00043c, 0xce00043d, 0xcf00043e, 0xd000043f, 0xd2000440, + 0xd3000441, 0xd4000442, 0xd5000443, 0xc6000444, 0xc8000445, 0xc3000446, 0xde000447, 0xdb000448, + 0xdd000449, 0xdf00044a, 0xd900044b, 0xd800044c, 0xdc00044d, 0xc000044e, 0xd100044f, 0xa3000451, + 0x95002219, 0x9600221a, 0x97002248, 0x98002264, 0x99002265, 0x93002320, 0x9b002321, 0x80002500, + 0x81002502, 0x8200250c, 0x83002510, 0x84002514, 0x85002518, 0x8600251c, 0x87002524, 0x8800252c, + 0x89002534, 0x8a00253c, 0xa0002550, 0xa1002551, 0xa2002552, 0xa4002553, 0xa5002554, 0xa6002555, + 0xa7002556, 0xa8002557, 0xa9002558, 0xaa002559, 0xab00255a, 0xac00255b, 0xad00255c, 0xae00255d, + 0xaf00255e, 0xb000255f, 0xb1002560, 0xb2002561, 0xb4002562, 0xb5002563, 0xb6002564, 0xb7002565, + 0xb8002566, 0xb9002567, 0xba002568, 0xbb002569, 0xbc00256a, 0xbd00256b, 0xbe00256c, 0x8b002580, + 0x8c002584, 0x8d002588, 0x8e00258c, 0x8f002590, 0x90002591, 0x91002592, 0x92002593, 0x940025a0, + }, +} + +// KOI8U is the KOI8-U encoding. +var KOI8U *Charmap = &koi8U + +var koi8U = Charmap{ + name: "KOI8-U", + mib: identifier.KOI8U, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0x82}}, + {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x94, 0x90}}, + {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0x98}}, + {3, [3]byte{0xe2, 0x94, 0x9c}}, {3, [3]byte{0xe2, 0x94, 0xa4}}, + {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, + {3, [3]byte{0xe2, 0x94, 0xbc}}, {3, [3]byte{0xe2, 0x96, 0x80}}, + {3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x88}}, + {3, [3]byte{0xe2, 0x96, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x90}}, + {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, + {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x8c, 0xa0}}, + {3, [3]byte{0xe2, 0x96, 0xa0}}, {3, [3]byte{0xe2, 0x88, 0x99}}, + {3, [3]byte{0xe2, 0x88, 0x9a}}, {3, [3]byte{0xe2, 0x89, 0x88}}, + {3, [3]byte{0xe2, 0x89, 0xa4}}, {3, [3]byte{0xe2, 0x89, 0xa5}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xe2, 0x8c, 0xa1}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb2, 0x00}}, + {2, [3]byte{0xc2, 0xb7, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {3, [3]byte{0xe2, 0x95, 0x90}}, {3, [3]byte{0xe2, 0x95, 0x91}}, + {3, [3]byte{0xe2, 0x95, 0x92}}, {2, [3]byte{0xd1, 0x91, 0x00}}, + {2, [3]byte{0xd1, 0x94, 0x00}}, {3, [3]byte{0xe2, 0x95, 0x94}}, + {2, [3]byte{0xd1, 0x96, 0x00}}, {2, [3]byte{0xd1, 0x97, 0x00}}, + {3, [3]byte{0xe2, 0x95, 0x97}}, {3, [3]byte{0xe2, 0x95, 0x98}}, + {3, [3]byte{0xe2, 0x95, 0x99}}, {3, [3]byte{0xe2, 0x95, 0x9a}}, + {3, [3]byte{0xe2, 0x95, 0x9b}}, {2, [3]byte{0xd2, 0x91, 0x00}}, + {2, [3]byte{0xd1, 0x9e, 0x00}}, {3, [3]byte{0xe2, 0x95, 0x9e}}, + {3, [3]byte{0xe2, 0x95, 0x9f}}, {3, [3]byte{0xe2, 0x95, 0xa0}}, + {3, [3]byte{0xe2, 0x95, 0xa1}}, {2, [3]byte{0xd0, 0x81, 0x00}}, + {2, [3]byte{0xd0, 0x84, 0x00}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, + {2, [3]byte{0xd0, 0x86, 0x00}}, {2, [3]byte{0xd0, 0x87, 0x00}}, + {3, [3]byte{0xe2, 0x95, 0xa6}}, {3, [3]byte{0xe2, 0x95, 0xa7}}, + {3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa9}}, + {3, [3]byte{0xe2, 0x95, 0xaa}}, {2, [3]byte{0xd2, 0x90, 0x00}}, + {2, [3]byte{0xd0, 0x8e, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xd1, 0x8e, 0x00}}, {2, [3]byte{0xd0, 0xb0, 0x00}}, + {2, [3]byte{0xd0, 0xb1, 0x00}}, {2, [3]byte{0xd1, 0x86, 0x00}}, + {2, [3]byte{0xd0, 0xb4, 0x00}}, {2, [3]byte{0xd0, 0xb5, 0x00}}, + {2, [3]byte{0xd1, 0x84, 0x00}}, {2, [3]byte{0xd0, 0xb3, 0x00}}, + {2, [3]byte{0xd1, 0x85, 0x00}}, {2, [3]byte{0xd0, 0xb8, 0x00}}, + {2, [3]byte{0xd0, 0xb9, 0x00}}, {2, [3]byte{0xd0, 0xba, 0x00}}, + {2, [3]byte{0xd0, 0xbb, 0x00}}, {2, [3]byte{0xd0, 0xbc, 0x00}}, + {2, [3]byte{0xd0, 0xbd, 0x00}}, {2, [3]byte{0xd0, 0xbe, 0x00}}, + {2, [3]byte{0xd0, 0xbf, 0x00}}, {2, [3]byte{0xd1, 0x8f, 0x00}}, + {2, [3]byte{0xd1, 0x80, 0x00}}, {2, [3]byte{0xd1, 0x81, 0x00}}, + {2, [3]byte{0xd1, 0x82, 0x00}}, {2, [3]byte{0xd1, 0x83, 0x00}}, + {2, [3]byte{0xd0, 0xb6, 0x00}}, {2, [3]byte{0xd0, 0xb2, 0x00}}, + {2, [3]byte{0xd1, 0x8c, 0x00}}, {2, [3]byte{0xd1, 0x8b, 0x00}}, + {2, [3]byte{0xd0, 0xb7, 0x00}}, {2, [3]byte{0xd1, 0x88, 0x00}}, + {2, [3]byte{0xd1, 0x8d, 0x00}}, {2, [3]byte{0xd1, 0x89, 0x00}}, + {2, [3]byte{0xd1, 0x87, 0x00}}, {2, [3]byte{0xd1, 0x8a, 0x00}}, + {2, [3]byte{0xd0, 0xae, 0x00}}, {2, [3]byte{0xd0, 0x90, 0x00}}, + {2, [3]byte{0xd0, 0x91, 0x00}}, {2, [3]byte{0xd0, 0xa6, 0x00}}, + {2, [3]byte{0xd0, 0x94, 0x00}}, {2, [3]byte{0xd0, 0x95, 0x00}}, + {2, [3]byte{0xd0, 0xa4, 0x00}}, {2, [3]byte{0xd0, 0x93, 0x00}}, + {2, [3]byte{0xd0, 0xa5, 0x00}}, {2, [3]byte{0xd0, 0x98, 0x00}}, + {2, [3]byte{0xd0, 0x99, 0x00}}, {2, [3]byte{0xd0, 0x9a, 0x00}}, + {2, [3]byte{0xd0, 0x9b, 0x00}}, {2, [3]byte{0xd0, 0x9c, 0x00}}, + {2, [3]byte{0xd0, 0x9d, 0x00}}, {2, [3]byte{0xd0, 0x9e, 0x00}}, + {2, [3]byte{0xd0, 0x9f, 0x00}}, {2, [3]byte{0xd0, 0xaf, 0x00}}, + {2, [3]byte{0xd0, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0xa1, 0x00}}, + {2, [3]byte{0xd0, 0xa2, 0x00}}, {2, [3]byte{0xd0, 0xa3, 0x00}}, + {2, [3]byte{0xd0, 0x96, 0x00}}, {2, [3]byte{0xd0, 0x92, 0x00}}, + {2, [3]byte{0xd0, 0xac, 0x00}}, {2, [3]byte{0xd0, 0xab, 0x00}}, + {2, [3]byte{0xd0, 0x97, 0x00}}, {2, [3]byte{0xd0, 0xa8, 0x00}}, + {2, [3]byte{0xd0, 0xad, 0x00}}, {2, [3]byte{0xd0, 0xa9, 0x00}}, + {2, [3]byte{0xd0, 0xa7, 0x00}}, {2, [3]byte{0xd0, 0xaa, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0x9a0000a0, 0xbf0000a9, 0x9c0000b0, 0x9d0000b2, 0x9e0000b7, 0x9f0000f7, 0xb3000401, 0xb4000404, + 0xb6000406, 0xb7000407, 0xbe00040e, 0xe1000410, 0xe2000411, 0xf7000412, 0xe7000413, 0xe4000414, + 0xe5000415, 0xf6000416, 0xfa000417, 0xe9000418, 0xea000419, 0xeb00041a, 0xec00041b, 0xed00041c, + 0xee00041d, 0xef00041e, 0xf000041f, 0xf2000420, 0xf3000421, 0xf4000422, 0xf5000423, 0xe6000424, + 0xe8000425, 0xe3000426, 0xfe000427, 0xfb000428, 0xfd000429, 0xff00042a, 0xf900042b, 0xf800042c, + 0xfc00042d, 0xe000042e, 0xf100042f, 0xc1000430, 0xc2000431, 0xd7000432, 0xc7000433, 0xc4000434, + 0xc5000435, 0xd6000436, 0xda000437, 0xc9000438, 0xca000439, 0xcb00043a, 0xcc00043b, 0xcd00043c, + 0xce00043d, 0xcf00043e, 0xd000043f, 0xd2000440, 0xd3000441, 0xd4000442, 0xd5000443, 0xc6000444, + 0xc8000445, 0xc3000446, 0xde000447, 0xdb000448, 0xdd000449, 0xdf00044a, 0xd900044b, 0xd800044c, + 0xdc00044d, 0xc000044e, 0xd100044f, 0xa3000451, 0xa4000454, 0xa6000456, 0xa7000457, 0xae00045e, + 0xbd000490, 0xad000491, 0x95002219, 0x9600221a, 0x97002248, 0x98002264, 0x99002265, 0x93002320, + 0x9b002321, 0x80002500, 0x81002502, 0x8200250c, 0x83002510, 0x84002514, 0x85002518, 0x8600251c, + 0x87002524, 0x8800252c, 0x89002534, 0x8a00253c, 0xa0002550, 0xa1002551, 0xa2002552, 0xa5002554, + 0xa8002557, 0xa9002558, 0xaa002559, 0xab00255a, 0xac00255b, 0xaf00255e, 0xb000255f, 0xb1002560, + 0xb2002561, 0xb5002563, 0xb8002566, 0xb9002567, 0xba002568, 0xbb002569, 0xbc00256a, 0x8b002580, + 0x8c002584, 0x8d002588, 0x8e00258c, 0x8f002590, 0x90002591, 0x91002592, 0x92002593, 0x940025a0, + }, +} + +// Macintosh is the Macintosh encoding. +var Macintosh *Charmap = &macintosh + +var macintosh = Charmap{ + name: "Macintosh", + mib: identifier.Macintosh, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc3, 0x91, 0x00}}, {2, [3]byte{0xc3, 0x96, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}}, + {2, [3]byte{0xc3, 0xa5, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa8, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xad, 0x00}}, {2, [3]byte{0xc3, 0xac, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, + {2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xbb, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}}, + {3, [3]byte{0xe2, 0x80, 0xa0}}, {2, [3]byte{0xc2, 0xb0, 0x00}}, + {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa7, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {3, [3]byte{0xe2, 0x84, 0xa2}}, {2, [3]byte{0xc2, 0xb4, 0x00}}, + {2, [3]byte{0xc2, 0xa8, 0x00}}, {3, [3]byte{0xe2, 0x89, 0xa0}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x98, 0x00}}, + {3, [3]byte{0xe2, 0x88, 0x9e}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {3, [3]byte{0xe2, 0x89, 0xa4}}, {3, [3]byte{0xe2, 0x89, 0xa5}}, + {2, [3]byte{0xc2, 0xa5, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {3, [3]byte{0xe2, 0x88, 0x82}}, {3, [3]byte{0xe2, 0x88, 0x91}}, + {3, [3]byte{0xe2, 0x88, 0x8f}}, {2, [3]byte{0xcf, 0x80, 0x00}}, + {3, [3]byte{0xe2, 0x88, 0xab}}, {2, [3]byte{0xc2, 0xaa, 0x00}}, + {2, [3]byte{0xc2, 0xba, 0x00}}, {2, [3]byte{0xce, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xb8, 0x00}}, + {2, [3]byte{0xc2, 0xbf, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}}, + {2, [3]byte{0xc6, 0x92, 0x00}}, {3, [3]byte{0xe2, 0x89, 0x88}}, + {3, [3]byte{0xe2, 0x88, 0x86}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xbb, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0x80, 0x00}}, + {2, [3]byte{0xc3, 0x83, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {2, [3]byte{0xc5, 0x92, 0x00}}, {2, [3]byte{0xc5, 0x93, 0x00}}, + {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, + {3, [3]byte{0xe2, 0x80, 0x9c}}, {3, [3]byte{0xe2, 0x80, 0x9d}}, + {3, [3]byte{0xe2, 0x80, 0x98}}, {3, [3]byte{0xe2, 0x80, 0x99}}, + {2, [3]byte{0xc3, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x97, 0x8a}}, + {2, [3]byte{0xc3, 0xbf, 0x00}}, {2, [3]byte{0xc5, 0xb8, 0x00}}, + {3, [3]byte{0xe2, 0x81, 0x84}}, {3, [3]byte{0xe2, 0x82, 0xac}}, + {3, [3]byte{0xe2, 0x80, 0xb9}}, {3, [3]byte{0xe2, 0x80, 0xba}}, + {3, [3]byte{0xef, 0xac, 0x81}}, {3, [3]byte{0xef, 0xac, 0x82}}, + {3, [3]byte{0xe2, 0x80, 0xa1}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {3, [3]byte{0xe2, 0x80, 0x9a}}, {3, [3]byte{0xe2, 0x80, 0x9e}}, + {3, [3]byte{0xe2, 0x80, 0xb0}}, {2, [3]byte{0xc3, 0x82, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x8b, 0x00}}, {2, [3]byte{0xc3, 0x88, 0x00}}, + {2, [3]byte{0xc3, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0x8e, 0x00}}, + {2, [3]byte{0xc3, 0x8f, 0x00}}, {2, [3]byte{0xc3, 0x8c, 0x00}}, + {2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x94, 0x00}}, + {3, [3]byte{0xef, 0xa3, 0xbf}}, {2, [3]byte{0xc3, 0x92, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, + {2, [3]byte{0xc3, 0x99, 0x00}}, {2, [3]byte{0xc4, 0xb1, 0x00}}, + {2, [3]byte{0xcb, 0x86, 0x00}}, {2, [3]byte{0xcb, 0x9c, 0x00}}, + {2, [3]byte{0xc2, 0xaf, 0x00}}, {2, [3]byte{0xcb, 0x98, 0x00}}, + {2, [3]byte{0xcb, 0x99, 0x00}}, {2, [3]byte{0xcb, 0x9a, 0x00}}, + {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xcb, 0x9d, 0x00}}, + {2, [3]byte{0xcb, 0x9b, 0x00}}, {2, [3]byte{0xcb, 0x87, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xca0000a0, 0xc10000a1, 0xa20000a2, 0xa30000a3, 0xb40000a5, 0xa40000a7, 0xac0000a8, 0xa90000a9, + 0xbb0000aa, 0xc70000ab, 0xc20000ac, 0xa80000ae, 0xf80000af, 0xa10000b0, 0xb10000b1, 0xab0000b4, + 0xb50000b5, 0xa60000b6, 0xe10000b7, 0xfc0000b8, 0xbc0000ba, 0xc80000bb, 0xc00000bf, 0xcb0000c0, + 0xe70000c1, 0xe50000c2, 0xcc0000c3, 0x800000c4, 0x810000c5, 0xae0000c6, 0x820000c7, 0xe90000c8, + 0x830000c9, 0xe60000ca, 0xe80000cb, 0xed0000cc, 0xea0000cd, 0xeb0000ce, 0xec0000cf, 0x840000d1, + 0xf10000d2, 0xee0000d3, 0xef0000d4, 0xcd0000d5, 0x850000d6, 0xaf0000d8, 0xf40000d9, 0xf20000da, + 0xf30000db, 0x860000dc, 0xa70000df, 0x880000e0, 0x870000e1, 0x890000e2, 0x8b0000e3, 0x8a0000e4, + 0x8c0000e5, 0xbe0000e6, 0x8d0000e7, 0x8f0000e8, 0x8e0000e9, 0x900000ea, 0x910000eb, 0x930000ec, + 0x920000ed, 0x940000ee, 0x950000ef, 0x960000f1, 0x980000f2, 0x970000f3, 0x990000f4, 0x9b0000f5, + 0x9a0000f6, 0xd60000f7, 0xbf0000f8, 0x9d0000f9, 0x9c0000fa, 0x9e0000fb, 0x9f0000fc, 0xd80000ff, + 0xf5000131, 0xce000152, 0xcf000153, 0xd9000178, 0xc4000192, 0xf60002c6, 0xff0002c7, 0xf90002d8, + 0xfa0002d9, 0xfb0002da, 0xfe0002db, 0xf70002dc, 0xfd0002dd, 0xbd0003a9, 0xb90003c0, 0xd0002013, + 0xd1002014, 0xd4002018, 0xd5002019, 0xe200201a, 0xd200201c, 0xd300201d, 0xe300201e, 0xa0002020, + 0xe0002021, 0xa5002022, 0xc9002026, 0xe4002030, 0xdc002039, 0xdd00203a, 0xda002044, 0xdb0020ac, + 0xaa002122, 0xb6002202, 0xc6002206, 0xb800220f, 0xb7002211, 0xc300221a, 0xb000221e, 0xba00222b, + 0xc5002248, 0xad002260, 0xb2002264, 0xb3002265, 0xd70025ca, 0xf000f8ff, 0xde00fb01, 0xdf00fb02, + }, +} + +// MacintoshCyrillic is the Macintosh Cyrillic encoding. +var MacintoshCyrillic *Charmap = &macintoshCyrillic + +var macintoshCyrillic = Charmap{ + name: "Macintosh Cyrillic", + mib: identifier.MacintoshCyrillic, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xd0, 0x90, 0x00}}, {2, [3]byte{0xd0, 0x91, 0x00}}, + {2, [3]byte{0xd0, 0x92, 0x00}}, {2, [3]byte{0xd0, 0x93, 0x00}}, + {2, [3]byte{0xd0, 0x94, 0x00}}, {2, [3]byte{0xd0, 0x95, 0x00}}, + {2, [3]byte{0xd0, 0x96, 0x00}}, {2, [3]byte{0xd0, 0x97, 0x00}}, + {2, [3]byte{0xd0, 0x98, 0x00}}, {2, [3]byte{0xd0, 0x99, 0x00}}, + {2, [3]byte{0xd0, 0x9a, 0x00}}, {2, [3]byte{0xd0, 0x9b, 0x00}}, + {2, [3]byte{0xd0, 0x9c, 0x00}}, {2, [3]byte{0xd0, 0x9d, 0x00}}, + {2, [3]byte{0xd0, 0x9e, 0x00}}, {2, [3]byte{0xd0, 0x9f, 0x00}}, + {2, [3]byte{0xd0, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0xa1, 0x00}}, + {2, [3]byte{0xd0, 0xa2, 0x00}}, {2, [3]byte{0xd0, 0xa3, 0x00}}, + {2, [3]byte{0xd0, 0xa4, 0x00}}, {2, [3]byte{0xd0, 0xa5, 0x00}}, + {2, [3]byte{0xd0, 0xa6, 0x00}}, {2, [3]byte{0xd0, 0xa7, 0x00}}, + {2, [3]byte{0xd0, 0xa8, 0x00}}, {2, [3]byte{0xd0, 0xa9, 0x00}}, + {2, [3]byte{0xd0, 0xaa, 0x00}}, {2, [3]byte{0xd0, 0xab, 0x00}}, + {2, [3]byte{0xd0, 0xac, 0x00}}, {2, [3]byte{0xd0, 0xad, 0x00}}, + {2, [3]byte{0xd0, 0xae, 0x00}}, {2, [3]byte{0xd0, 0xaf, 0x00}}, + {3, [3]byte{0xe2, 0x80, 0xa0}}, {2, [3]byte{0xc2, 0xb0, 0x00}}, + {2, [3]byte{0xd2, 0x90, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa7, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xd0, 0x86, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {3, [3]byte{0xe2, 0x84, 0xa2}}, {2, [3]byte{0xd0, 0x82, 0x00}}, + {2, [3]byte{0xd1, 0x92, 0x00}}, {3, [3]byte{0xe2, 0x89, 0xa0}}, + {2, [3]byte{0xd0, 0x83, 0x00}}, {2, [3]byte{0xd1, 0x93, 0x00}}, + {3, [3]byte{0xe2, 0x88, 0x9e}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {3, [3]byte{0xe2, 0x89, 0xa4}}, {3, [3]byte{0xe2, 0x89, 0xa5}}, + {2, [3]byte{0xd1, 0x96, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {2, [3]byte{0xd2, 0x91, 0x00}}, {2, [3]byte{0xd0, 0x88, 0x00}}, + {2, [3]byte{0xd0, 0x84, 0x00}}, {2, [3]byte{0xd1, 0x94, 0x00}}, + {2, [3]byte{0xd0, 0x87, 0x00}}, {2, [3]byte{0xd1, 0x97, 0x00}}, + {2, [3]byte{0xd0, 0x89, 0x00}}, {2, [3]byte{0xd1, 0x99, 0x00}}, + {2, [3]byte{0xd0, 0x8a, 0x00}}, {2, [3]byte{0xd1, 0x9a, 0x00}}, + {2, [3]byte{0xd1, 0x98, 0x00}}, {2, [3]byte{0xd0, 0x85, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}}, + {2, [3]byte{0xc6, 0x92, 0x00}}, {3, [3]byte{0xe2, 0x89, 0x88}}, + {3, [3]byte{0xe2, 0x88, 0x86}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xbb, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0x8b, 0x00}}, + {2, [3]byte{0xd1, 0x9b, 0x00}}, {2, [3]byte{0xd0, 0x8c, 0x00}}, + {2, [3]byte{0xd1, 0x9c, 0x00}}, {2, [3]byte{0xd1, 0x95, 0x00}}, + {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, + {3, [3]byte{0xe2, 0x80, 0x9c}}, {3, [3]byte{0xe2, 0x80, 0x9d}}, + {3, [3]byte{0xe2, 0x80, 0x98}}, {3, [3]byte{0xe2, 0x80, 0x99}}, + {2, [3]byte{0xc3, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x9e}}, + {2, [3]byte{0xd0, 0x8e, 0x00}}, {2, [3]byte{0xd1, 0x9e, 0x00}}, + {2, [3]byte{0xd0, 0x8f, 0x00}}, {2, [3]byte{0xd1, 0x9f, 0x00}}, + {3, [3]byte{0xe2, 0x84, 0x96}}, {2, [3]byte{0xd0, 0x81, 0x00}}, + {2, [3]byte{0xd1, 0x91, 0x00}}, {2, [3]byte{0xd1, 0x8f, 0x00}}, + {2, [3]byte{0xd0, 0xb0, 0x00}}, {2, [3]byte{0xd0, 0xb1, 0x00}}, + {2, [3]byte{0xd0, 0xb2, 0x00}}, {2, [3]byte{0xd0, 0xb3, 0x00}}, + {2, [3]byte{0xd0, 0xb4, 0x00}}, {2, [3]byte{0xd0, 0xb5, 0x00}}, + {2, [3]byte{0xd0, 0xb6, 0x00}}, {2, [3]byte{0xd0, 0xb7, 0x00}}, + {2, [3]byte{0xd0, 0xb8, 0x00}}, {2, [3]byte{0xd0, 0xb9, 0x00}}, + {2, [3]byte{0xd0, 0xba, 0x00}}, {2, [3]byte{0xd0, 0xbb, 0x00}}, + {2, [3]byte{0xd0, 0xbc, 0x00}}, {2, [3]byte{0xd0, 0xbd, 0x00}}, + {2, [3]byte{0xd0, 0xbe, 0x00}}, {2, [3]byte{0xd0, 0xbf, 0x00}}, + {2, [3]byte{0xd1, 0x80, 0x00}}, {2, [3]byte{0xd1, 0x81, 0x00}}, + {2, [3]byte{0xd1, 0x82, 0x00}}, {2, [3]byte{0xd1, 0x83, 0x00}}, + {2, [3]byte{0xd1, 0x84, 0x00}}, {2, [3]byte{0xd1, 0x85, 0x00}}, + {2, [3]byte{0xd1, 0x86, 0x00}}, {2, [3]byte{0xd1, 0x87, 0x00}}, + {2, [3]byte{0xd1, 0x88, 0x00}}, {2, [3]byte{0xd1, 0x89, 0x00}}, + {2, [3]byte{0xd1, 0x8a, 0x00}}, {2, [3]byte{0xd1, 0x8b, 0x00}}, + {2, [3]byte{0xd1, 0x8c, 0x00}}, {2, [3]byte{0xd1, 0x8d, 0x00}}, + {2, [3]byte{0xd1, 0x8e, 0x00}}, {3, [3]byte{0xe2, 0x82, 0xac}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xca0000a0, 0xa30000a3, 0xa40000a7, 0xa90000a9, 0xc70000ab, 0xc20000ac, 0xa80000ae, 0xa10000b0, + 0xb10000b1, 0xb50000b5, 0xa60000b6, 0xc80000bb, 0xd60000f7, 0xc4000192, 0xdd000401, 0xab000402, + 0xae000403, 0xb8000404, 0xc1000405, 0xa7000406, 0xba000407, 0xb7000408, 0xbc000409, 0xbe00040a, + 0xcb00040b, 0xcd00040c, 0xd800040e, 0xda00040f, 0x80000410, 0x81000411, 0x82000412, 0x83000413, + 0x84000414, 0x85000415, 0x86000416, 0x87000417, 0x88000418, 0x89000419, 0x8a00041a, 0x8b00041b, + 0x8c00041c, 0x8d00041d, 0x8e00041e, 0x8f00041f, 0x90000420, 0x91000421, 0x92000422, 0x93000423, + 0x94000424, 0x95000425, 0x96000426, 0x97000427, 0x98000428, 0x99000429, 0x9a00042a, 0x9b00042b, + 0x9c00042c, 0x9d00042d, 0x9e00042e, 0x9f00042f, 0xe0000430, 0xe1000431, 0xe2000432, 0xe3000433, + 0xe4000434, 0xe5000435, 0xe6000436, 0xe7000437, 0xe8000438, 0xe9000439, 0xea00043a, 0xeb00043b, + 0xec00043c, 0xed00043d, 0xee00043e, 0xef00043f, 0xf0000440, 0xf1000441, 0xf2000442, 0xf3000443, + 0xf4000444, 0xf5000445, 0xf6000446, 0xf7000447, 0xf8000448, 0xf9000449, 0xfa00044a, 0xfb00044b, + 0xfc00044c, 0xfd00044d, 0xfe00044e, 0xdf00044f, 0xde000451, 0xac000452, 0xaf000453, 0xb9000454, + 0xcf000455, 0xb4000456, 0xbb000457, 0xc0000458, 0xbd000459, 0xbf00045a, 0xcc00045b, 0xce00045c, + 0xd900045e, 0xdb00045f, 0xa2000490, 0xb6000491, 0xd0002013, 0xd1002014, 0xd4002018, 0xd5002019, + 0xd200201c, 0xd300201d, 0xd700201e, 0xa0002020, 0xa5002022, 0xc9002026, 0xff0020ac, 0xdc002116, + 0xaa002122, 0xc6002206, 0xc300221a, 0xb000221e, 0xc5002248, 0xad002260, 0xb2002264, 0xb3002265, + }, +} + +// Windows874 is the Windows 874 encoding. +var Windows874 *Charmap = &windows874 + +var windows874 = Charmap{ + name: "Windows 874", + mib: identifier.Windows874, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x98}}, + {3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}}, + {3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, + {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xe0, 0xb8, 0x81}}, + {3, [3]byte{0xe0, 0xb8, 0x82}}, {3, [3]byte{0xe0, 0xb8, 0x83}}, + {3, [3]byte{0xe0, 0xb8, 0x84}}, {3, [3]byte{0xe0, 0xb8, 0x85}}, + {3, [3]byte{0xe0, 0xb8, 0x86}}, {3, [3]byte{0xe0, 0xb8, 0x87}}, + {3, [3]byte{0xe0, 0xb8, 0x88}}, {3, [3]byte{0xe0, 0xb8, 0x89}}, + {3, [3]byte{0xe0, 0xb8, 0x8a}}, {3, [3]byte{0xe0, 0xb8, 0x8b}}, + {3, [3]byte{0xe0, 0xb8, 0x8c}}, {3, [3]byte{0xe0, 0xb8, 0x8d}}, + {3, [3]byte{0xe0, 0xb8, 0x8e}}, {3, [3]byte{0xe0, 0xb8, 0x8f}}, + {3, [3]byte{0xe0, 0xb8, 0x90}}, {3, [3]byte{0xe0, 0xb8, 0x91}}, + {3, [3]byte{0xe0, 0xb8, 0x92}}, {3, [3]byte{0xe0, 0xb8, 0x93}}, + {3, [3]byte{0xe0, 0xb8, 0x94}}, {3, [3]byte{0xe0, 0xb8, 0x95}}, + {3, [3]byte{0xe0, 0xb8, 0x96}}, {3, [3]byte{0xe0, 0xb8, 0x97}}, + {3, [3]byte{0xe0, 0xb8, 0x98}}, {3, [3]byte{0xe0, 0xb8, 0x99}}, + {3, [3]byte{0xe0, 0xb8, 0x9a}}, {3, [3]byte{0xe0, 0xb8, 0x9b}}, + {3, [3]byte{0xe0, 0xb8, 0x9c}}, {3, [3]byte{0xe0, 0xb8, 0x9d}}, + {3, [3]byte{0xe0, 0xb8, 0x9e}}, {3, [3]byte{0xe0, 0xb8, 0x9f}}, + {3, [3]byte{0xe0, 0xb8, 0xa0}}, {3, [3]byte{0xe0, 0xb8, 0xa1}}, + {3, [3]byte{0xe0, 0xb8, 0xa2}}, {3, [3]byte{0xe0, 0xb8, 0xa3}}, + {3, [3]byte{0xe0, 0xb8, 0xa4}}, {3, [3]byte{0xe0, 0xb8, 0xa5}}, + {3, [3]byte{0xe0, 0xb8, 0xa6}}, {3, [3]byte{0xe0, 0xb8, 0xa7}}, + {3, [3]byte{0xe0, 0xb8, 0xa8}}, {3, [3]byte{0xe0, 0xb8, 0xa9}}, + {3, [3]byte{0xe0, 0xb8, 0xaa}}, {3, [3]byte{0xe0, 0xb8, 0xab}}, + {3, [3]byte{0xe0, 0xb8, 0xac}}, {3, [3]byte{0xe0, 0xb8, 0xad}}, + {3, [3]byte{0xe0, 0xb8, 0xae}}, {3, [3]byte{0xe0, 0xb8, 0xaf}}, + {3, [3]byte{0xe0, 0xb8, 0xb0}}, {3, [3]byte{0xe0, 0xb8, 0xb1}}, + {3, [3]byte{0xe0, 0xb8, 0xb2}}, {3, [3]byte{0xe0, 0xb8, 0xb3}}, + {3, [3]byte{0xe0, 0xb8, 0xb4}}, {3, [3]byte{0xe0, 0xb8, 0xb5}}, + {3, [3]byte{0xe0, 0xb8, 0xb6}}, {3, [3]byte{0xe0, 0xb8, 0xb7}}, + {3, [3]byte{0xe0, 0xb8, 0xb8}}, {3, [3]byte{0xe0, 0xb8, 0xb9}}, + {3, [3]byte{0xe0, 0xb8, 0xba}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe0, 0xb8, 0xbf}}, + {3, [3]byte{0xe0, 0xb9, 0x80}}, {3, [3]byte{0xe0, 0xb9, 0x81}}, + {3, [3]byte{0xe0, 0xb9, 0x82}}, {3, [3]byte{0xe0, 0xb9, 0x83}}, + {3, [3]byte{0xe0, 0xb9, 0x84}}, {3, [3]byte{0xe0, 0xb9, 0x85}}, + {3, [3]byte{0xe0, 0xb9, 0x86}}, {3, [3]byte{0xe0, 0xb9, 0x87}}, + {3, [3]byte{0xe0, 0xb9, 0x88}}, {3, [3]byte{0xe0, 0xb9, 0x89}}, + {3, [3]byte{0xe0, 0xb9, 0x8a}}, {3, [3]byte{0xe0, 0xb9, 0x8b}}, + {3, [3]byte{0xe0, 0xb9, 0x8c}}, {3, [3]byte{0xe0, 0xb9, 0x8d}}, + {3, [3]byte{0xe0, 0xb9, 0x8e}}, {3, [3]byte{0xe0, 0xb9, 0x8f}}, + {3, [3]byte{0xe0, 0xb9, 0x90}}, {3, [3]byte{0xe0, 0xb9, 0x91}}, + {3, [3]byte{0xe0, 0xb9, 0x92}}, {3, [3]byte{0xe0, 0xb9, 0x93}}, + {3, [3]byte{0xe0, 0xb9, 0x94}}, {3, [3]byte{0xe0, 0xb9, 0x95}}, + {3, [3]byte{0xe0, 0xb9, 0x96}}, {3, [3]byte{0xe0, 0xb9, 0x97}}, + {3, [3]byte{0xe0, 0xb9, 0x98}}, {3, [3]byte{0xe0, 0xb9, 0x99}}, + {3, [3]byte{0xe0, 0xb9, 0x9a}}, {3, [3]byte{0xe0, 0xb9, 0x9b}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa1000e01, 0xa2000e02, 0xa3000e03, 0xa4000e04, 0xa5000e05, 0xa6000e06, 0xa7000e07, + 0xa8000e08, 0xa9000e09, 0xaa000e0a, 0xab000e0b, 0xac000e0c, 0xad000e0d, 0xae000e0e, 0xaf000e0f, + 0xb0000e10, 0xb1000e11, 0xb2000e12, 0xb3000e13, 0xb4000e14, 0xb5000e15, 0xb6000e16, 0xb7000e17, + 0xb8000e18, 0xb9000e19, 0xba000e1a, 0xbb000e1b, 0xbc000e1c, 0xbd000e1d, 0xbe000e1e, 0xbf000e1f, + 0xc0000e20, 0xc1000e21, 0xc2000e22, 0xc3000e23, 0xc4000e24, 0xc5000e25, 0xc6000e26, 0xc7000e27, + 0xc8000e28, 0xc9000e29, 0xca000e2a, 0xcb000e2b, 0xcc000e2c, 0xcd000e2d, 0xce000e2e, 0xcf000e2f, + 0xd0000e30, 0xd1000e31, 0xd2000e32, 0xd3000e33, 0xd4000e34, 0xd5000e35, 0xd6000e36, 0xd7000e37, + 0xd8000e38, 0xd9000e39, 0xda000e3a, 0xdf000e3f, 0xe0000e40, 0xe1000e41, 0xe2000e42, 0xe3000e43, + 0xe4000e44, 0xe5000e45, 0xe6000e46, 0xe7000e47, 0xe8000e48, 0xe9000e49, 0xea000e4a, 0xeb000e4b, + 0xec000e4c, 0xed000e4d, 0xee000e4e, 0xef000e4f, 0xf0000e50, 0xf1000e51, 0xf2000e52, 0xf3000e53, + 0xf4000e54, 0xf5000e55, 0xf6000e56, 0xf7000e57, 0xf8000e58, 0xf9000e59, 0xfa000e5a, 0xfb000e5b, + 0x96002013, 0x97002014, 0x91002018, 0x92002019, 0x9300201c, 0x9400201d, 0x95002022, 0x85002026, + 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, + 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, + 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, + 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, + }, +} + +// Windows1250 is the Windows 1250 encoding. +var Windows1250 *Charmap = &windows1250 + +var windows1250 = Charmap{ + name: "Windows 1250", + mib: identifier.Windows1250, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xe2, 0x80, 0x9a}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, + {3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xb0}}, + {2, [3]byte{0xc5, 0xa0, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb9}}, + {2, [3]byte{0xc5, 0x9a, 0x00}}, {2, [3]byte{0xc5, 0xa4, 0x00}}, + {2, [3]byte{0xc5, 0xbd, 0x00}}, {2, [3]byte{0xc5, 0xb9, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x98}}, + {3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}}, + {3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, + {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x84, 0xa2}}, + {2, [3]byte{0xc5, 0xa1, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xba}}, + {2, [3]byte{0xc5, 0x9b, 0x00}}, {2, [3]byte{0xc5, 0xa5, 0x00}}, + {2, [3]byte{0xc5, 0xbe, 0x00}}, {2, [3]byte{0xc5, 0xba, 0x00}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xcb, 0x87, 0x00}}, + {2, [3]byte{0xcb, 0x98, 0x00}}, {2, [3]byte{0xc5, 0x81, 0x00}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc4, 0x84, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xc5, 0x9e, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc5, 0xbb, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xcb, 0x9b, 0x00}}, {2, [3]byte{0xc5, 0x82, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc4, 0x85, 0x00}}, + {2, [3]byte{0xc5, 0x9f, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc4, 0xbd, 0x00}}, {2, [3]byte{0xcb, 0x9d, 0x00}}, + {2, [3]byte{0xc4, 0xbe, 0x00}}, {2, [3]byte{0xc5, 0xbc, 0x00}}, + {2, [3]byte{0xc5, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc4, 0x82, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc4, 0xb9, 0x00}}, + {2, [3]byte{0xc4, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}}, + {2, [3]byte{0xc4, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc4, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc4, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc4, 0x8e, 0x00}}, + {2, [3]byte{0xc4, 0x90, 0x00}}, {2, [3]byte{0xc5, 0x83, 0x00}}, + {2, [3]byte{0xc5, 0x87, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc5, 0x90, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {2, [3]byte{0xc5, 0x98, 0x00}}, {2, [3]byte{0xc5, 0xae, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc5, 0xb0, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, + {2, [3]byte{0xc5, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc5, 0x95, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc4, 0x83, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc4, 0xba, 0x00}}, + {2, [3]byte{0xc4, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc4, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc4, 0x99, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc4, 0x9b, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc4, 0x8f, 0x00}}, + {2, [3]byte{0xc4, 0x91, 0x00}}, {2, [3]byte{0xc5, 0x84, 0x00}}, + {2, [3]byte{0xc5, 0x88, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, + {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc5, 0x91, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {2, [3]byte{0xc5, 0x99, 0x00}}, {2, [3]byte{0xc5, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc5, 0xb1, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}}, + {2, [3]byte{0xc5, 0xa3, 0x00}}, {2, [3]byte{0xcb, 0x99, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa40000a4, 0xa60000a6, 0xa70000a7, 0xa80000a8, 0xa90000a9, 0xab0000ab, 0xac0000ac, + 0xad0000ad, 0xae0000ae, 0xb00000b0, 0xb10000b1, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, + 0xb80000b8, 0xbb0000bb, 0xc10000c1, 0xc20000c2, 0xc40000c4, 0xc70000c7, 0xc90000c9, 0xcb0000cb, + 0xcd0000cd, 0xce0000ce, 0xd30000d3, 0xd40000d4, 0xd60000d6, 0xd70000d7, 0xda0000da, 0xdc0000dc, + 0xdd0000dd, 0xdf0000df, 0xe10000e1, 0xe20000e2, 0xe40000e4, 0xe70000e7, 0xe90000e9, 0xeb0000eb, + 0xed0000ed, 0xee0000ee, 0xf30000f3, 0xf40000f4, 0xf60000f6, 0xf70000f7, 0xfa0000fa, 0xfc0000fc, + 0xfd0000fd, 0xc3000102, 0xe3000103, 0xa5000104, 0xb9000105, 0xc6000106, 0xe6000107, 0xc800010c, + 0xe800010d, 0xcf00010e, 0xef00010f, 0xd0000110, 0xf0000111, 0xca000118, 0xea000119, 0xcc00011a, + 0xec00011b, 0xc5000139, 0xe500013a, 0xbc00013d, 0xbe00013e, 0xa3000141, 0xb3000142, 0xd1000143, + 0xf1000144, 0xd2000147, 0xf2000148, 0xd5000150, 0xf5000151, 0xc0000154, 0xe0000155, 0xd8000158, + 0xf8000159, 0x8c00015a, 0x9c00015b, 0xaa00015e, 0xba00015f, 0x8a000160, 0x9a000161, 0xde000162, + 0xfe000163, 0x8d000164, 0x9d000165, 0xd900016e, 0xf900016f, 0xdb000170, 0xfb000171, 0x8f000179, + 0x9f00017a, 0xaf00017b, 0xbf00017c, 0x8e00017d, 0x9e00017e, 0xa10002c7, 0xa20002d8, 0xff0002d9, + 0xb20002db, 0xbd0002dd, 0x96002013, 0x97002014, 0x91002018, 0x92002019, 0x8200201a, 0x9300201c, + 0x9400201d, 0x8400201e, 0x86002020, 0x87002021, 0x95002022, 0x85002026, 0x89002030, 0x8b002039, + 0x9b00203a, 0x800020ac, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, + }, +} + +// Windows1251 is the Windows 1251 encoding. +var Windows1251 *Charmap = &windows1251 + +var windows1251 = Charmap{ + name: "Windows 1251", + mib: identifier.Windows1251, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xd0, 0x82, 0x00}}, {2, [3]byte{0xd0, 0x83, 0x00}}, + {3, [3]byte{0xe2, 0x80, 0x9a}}, {2, [3]byte{0xd1, 0x93, 0x00}}, + {3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, + {3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}}, + {3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xe2, 0x80, 0xb0}}, + {2, [3]byte{0xd0, 0x89, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb9}}, + {2, [3]byte{0xd0, 0x8a, 0x00}}, {2, [3]byte{0xd0, 0x8c, 0x00}}, + {2, [3]byte{0xd0, 0x8b, 0x00}}, {2, [3]byte{0xd0, 0x8f, 0x00}}, + {2, [3]byte{0xd1, 0x92, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x98}}, + {3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}}, + {3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, + {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x84, 0xa2}}, + {2, [3]byte{0xd1, 0x99, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xba}}, + {2, [3]byte{0xd1, 0x9a, 0x00}}, {2, [3]byte{0xd1, 0x9c, 0x00}}, + {2, [3]byte{0xd1, 0x9b, 0x00}}, {2, [3]byte{0xd1, 0x9f, 0x00}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0x8e, 0x00}}, + {2, [3]byte{0xd1, 0x9e, 0x00}}, {2, [3]byte{0xd0, 0x88, 0x00}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xd2, 0x90, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xd0, 0x81, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xd0, 0x84, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xd0, 0x87, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xd0, 0x86, 0x00}}, {2, [3]byte{0xd1, 0x96, 0x00}}, + {2, [3]byte{0xd2, 0x91, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xd1, 0x91, 0x00}}, {3, [3]byte{0xe2, 0x84, 0x96}}, + {2, [3]byte{0xd1, 0x94, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xd1, 0x98, 0x00}}, {2, [3]byte{0xd0, 0x85, 0x00}}, + {2, [3]byte{0xd1, 0x95, 0x00}}, {2, [3]byte{0xd1, 0x97, 0x00}}, + {2, [3]byte{0xd0, 0x90, 0x00}}, {2, [3]byte{0xd0, 0x91, 0x00}}, + {2, [3]byte{0xd0, 0x92, 0x00}}, {2, [3]byte{0xd0, 0x93, 0x00}}, + {2, [3]byte{0xd0, 0x94, 0x00}}, {2, [3]byte{0xd0, 0x95, 0x00}}, + {2, [3]byte{0xd0, 0x96, 0x00}}, {2, [3]byte{0xd0, 0x97, 0x00}}, + {2, [3]byte{0xd0, 0x98, 0x00}}, {2, [3]byte{0xd0, 0x99, 0x00}}, + {2, [3]byte{0xd0, 0x9a, 0x00}}, {2, [3]byte{0xd0, 0x9b, 0x00}}, + {2, [3]byte{0xd0, 0x9c, 0x00}}, {2, [3]byte{0xd0, 0x9d, 0x00}}, + {2, [3]byte{0xd0, 0x9e, 0x00}}, {2, [3]byte{0xd0, 0x9f, 0x00}}, + {2, [3]byte{0xd0, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0xa1, 0x00}}, + {2, [3]byte{0xd0, 0xa2, 0x00}}, {2, [3]byte{0xd0, 0xa3, 0x00}}, + {2, [3]byte{0xd0, 0xa4, 0x00}}, {2, [3]byte{0xd0, 0xa5, 0x00}}, + {2, [3]byte{0xd0, 0xa6, 0x00}}, {2, [3]byte{0xd0, 0xa7, 0x00}}, + {2, [3]byte{0xd0, 0xa8, 0x00}}, {2, [3]byte{0xd0, 0xa9, 0x00}}, + {2, [3]byte{0xd0, 0xaa, 0x00}}, {2, [3]byte{0xd0, 0xab, 0x00}}, + {2, [3]byte{0xd0, 0xac, 0x00}}, {2, [3]byte{0xd0, 0xad, 0x00}}, + {2, [3]byte{0xd0, 0xae, 0x00}}, {2, [3]byte{0xd0, 0xaf, 0x00}}, + {2, [3]byte{0xd0, 0xb0, 0x00}}, {2, [3]byte{0xd0, 0xb1, 0x00}}, + {2, [3]byte{0xd0, 0xb2, 0x00}}, {2, [3]byte{0xd0, 0xb3, 0x00}}, + {2, [3]byte{0xd0, 0xb4, 0x00}}, {2, [3]byte{0xd0, 0xb5, 0x00}}, + {2, [3]byte{0xd0, 0xb6, 0x00}}, {2, [3]byte{0xd0, 0xb7, 0x00}}, + {2, [3]byte{0xd0, 0xb8, 0x00}}, {2, [3]byte{0xd0, 0xb9, 0x00}}, + {2, [3]byte{0xd0, 0xba, 0x00}}, {2, [3]byte{0xd0, 0xbb, 0x00}}, + {2, [3]byte{0xd0, 0xbc, 0x00}}, {2, [3]byte{0xd0, 0xbd, 0x00}}, + {2, [3]byte{0xd0, 0xbe, 0x00}}, {2, [3]byte{0xd0, 0xbf, 0x00}}, + {2, [3]byte{0xd1, 0x80, 0x00}}, {2, [3]byte{0xd1, 0x81, 0x00}}, + {2, [3]byte{0xd1, 0x82, 0x00}}, {2, [3]byte{0xd1, 0x83, 0x00}}, + {2, [3]byte{0xd1, 0x84, 0x00}}, {2, [3]byte{0xd1, 0x85, 0x00}}, + {2, [3]byte{0xd1, 0x86, 0x00}}, {2, [3]byte{0xd1, 0x87, 0x00}}, + {2, [3]byte{0xd1, 0x88, 0x00}}, {2, [3]byte{0xd1, 0x89, 0x00}}, + {2, [3]byte{0xd1, 0x8a, 0x00}}, {2, [3]byte{0xd1, 0x8b, 0x00}}, + {2, [3]byte{0xd1, 0x8c, 0x00}}, {2, [3]byte{0xd1, 0x8d, 0x00}}, + {2, [3]byte{0xd1, 0x8e, 0x00}}, {2, [3]byte{0xd1, 0x8f, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa40000a4, 0xa60000a6, 0xa70000a7, 0xa90000a9, 0xab0000ab, 0xac0000ac, 0xad0000ad, + 0xae0000ae, 0xb00000b0, 0xb10000b1, 0xb50000b5, 0xb60000b6, 0xb70000b7, 0xbb0000bb, 0xa8000401, + 0x80000402, 0x81000403, 0xaa000404, 0xbd000405, 0xb2000406, 0xaf000407, 0xa3000408, 0x8a000409, + 0x8c00040a, 0x8e00040b, 0x8d00040c, 0xa100040e, 0x8f00040f, 0xc0000410, 0xc1000411, 0xc2000412, + 0xc3000413, 0xc4000414, 0xc5000415, 0xc6000416, 0xc7000417, 0xc8000418, 0xc9000419, 0xca00041a, + 0xcb00041b, 0xcc00041c, 0xcd00041d, 0xce00041e, 0xcf00041f, 0xd0000420, 0xd1000421, 0xd2000422, + 0xd3000423, 0xd4000424, 0xd5000425, 0xd6000426, 0xd7000427, 0xd8000428, 0xd9000429, 0xda00042a, + 0xdb00042b, 0xdc00042c, 0xdd00042d, 0xde00042e, 0xdf00042f, 0xe0000430, 0xe1000431, 0xe2000432, + 0xe3000433, 0xe4000434, 0xe5000435, 0xe6000436, 0xe7000437, 0xe8000438, 0xe9000439, 0xea00043a, + 0xeb00043b, 0xec00043c, 0xed00043d, 0xee00043e, 0xef00043f, 0xf0000440, 0xf1000441, 0xf2000442, + 0xf3000443, 0xf4000444, 0xf5000445, 0xf6000446, 0xf7000447, 0xf8000448, 0xf9000449, 0xfa00044a, + 0xfb00044b, 0xfc00044c, 0xfd00044d, 0xfe00044e, 0xff00044f, 0xb8000451, 0x90000452, 0x83000453, + 0xba000454, 0xbe000455, 0xb3000456, 0xbf000457, 0xbc000458, 0x9a000459, 0x9c00045a, 0x9e00045b, + 0x9d00045c, 0xa200045e, 0x9f00045f, 0xa5000490, 0xb4000491, 0x96002013, 0x97002014, 0x91002018, + 0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e, 0x86002020, 0x87002021, 0x95002022, + 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0x880020ac, 0xb9002116, 0x99002122, 0x99002122, + }, +} + +// Windows1252 is the Windows 1252 encoding. +var Windows1252 *Charmap = &windows1252 + +var windows1252 = Charmap{ + name: "Windows 1252", + mib: identifier.Windows1252, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xe2, 0x80, 0x9a}}, {2, [3]byte{0xc6, 0x92, 0x00}}, + {3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, + {3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}}, + {2, [3]byte{0xcb, 0x86, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb0}}, + {2, [3]byte{0xc5, 0xa0, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb9}}, + {2, [3]byte{0xc5, 0x92, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc5, 0xbd, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x98}}, + {3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}}, + {3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, + {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, + {2, [3]byte{0xcb, 0x9c, 0x00}}, {3, [3]byte{0xe2, 0x84, 0xa2}}, + {2, [3]byte{0xc5, 0xa1, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xba}}, + {2, [3]byte{0xc5, 0x93, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc5, 0xbe, 0x00}}, {2, [3]byte{0xc5, 0xb8, 0x00}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, + {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, + {2, [3]byte{0xc2, 0xba, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}}, + {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, + {2, [3]byte{0xc3, 0x90, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, + {2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, + {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, + {2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, + {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}}, + {2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa10000a1, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7, + 0xa80000a8, 0xa90000a9, 0xaa0000aa, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af, + 0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, + 0xb80000b8, 0xb90000b9, 0xba0000ba, 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xbf0000bf, + 0xc00000c0, 0xc10000c1, 0xc20000c2, 0xc30000c3, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc70000c7, + 0xc80000c8, 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc, 0xcd0000cd, 0xce0000ce, 0xcf0000cf, + 0xd00000d0, 0xd10000d1, 0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd70000d7, + 0xd80000d8, 0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc, 0xdd0000dd, 0xde0000de, 0xdf0000df, + 0xe00000e0, 0xe10000e1, 0xe20000e2, 0xe30000e3, 0xe40000e4, 0xe50000e5, 0xe60000e6, 0xe70000e7, + 0xe80000e8, 0xe90000e9, 0xea0000ea, 0xeb0000eb, 0xec0000ec, 0xed0000ed, 0xee0000ee, 0xef0000ef, + 0xf00000f0, 0xf10000f1, 0xf20000f2, 0xf30000f3, 0xf40000f4, 0xf50000f5, 0xf60000f6, 0xf70000f7, + 0xf80000f8, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, 0xfc0000fc, 0xfd0000fd, 0xfe0000fe, 0xff0000ff, + 0x8c000152, 0x9c000153, 0x8a000160, 0x9a000161, 0x9f000178, 0x8e00017d, 0x9e00017e, 0x83000192, + 0x880002c6, 0x980002dc, 0x96002013, 0x97002014, 0x91002018, 0x92002019, 0x8200201a, 0x9300201c, + 0x9400201d, 0x8400201e, 0x86002020, 0x87002021, 0x95002022, 0x85002026, 0x89002030, 0x8b002039, + 0x9b00203a, 0x800020ac, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, + }, +} + +// Windows1253 is the Windows 1253 encoding. +var Windows1253 *Charmap = &windows1253 + +var windows1253 = Charmap{ + name: "Windows 1253", + mib: identifier.Windows1253, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xe2, 0x80, 0x9a}}, {2, [3]byte{0xc6, 0x92, 0x00}}, + {3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, + {3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xb0}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xb9}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x98}}, + {3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}}, + {3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, + {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x84, 0xa2}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xba}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xce, 0x85, 0x00}}, + {2, [3]byte{0xce, 0x86, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x95}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, + {2, [3]byte{0xce, 0x84, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xce, 0x88, 0x00}}, {2, [3]byte{0xce, 0x89, 0x00}}, + {2, [3]byte{0xce, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xce, 0x8c, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xce, 0x8e, 0x00}}, {2, [3]byte{0xce, 0x8f, 0x00}}, + {2, [3]byte{0xce, 0x90, 0x00}}, {2, [3]byte{0xce, 0x91, 0x00}}, + {2, [3]byte{0xce, 0x92, 0x00}}, {2, [3]byte{0xce, 0x93, 0x00}}, + {2, [3]byte{0xce, 0x94, 0x00}}, {2, [3]byte{0xce, 0x95, 0x00}}, + {2, [3]byte{0xce, 0x96, 0x00}}, {2, [3]byte{0xce, 0x97, 0x00}}, + {2, [3]byte{0xce, 0x98, 0x00}}, {2, [3]byte{0xce, 0x99, 0x00}}, + {2, [3]byte{0xce, 0x9a, 0x00}}, {2, [3]byte{0xce, 0x9b, 0x00}}, + {2, [3]byte{0xce, 0x9c, 0x00}}, {2, [3]byte{0xce, 0x9d, 0x00}}, + {2, [3]byte{0xce, 0x9e, 0x00}}, {2, [3]byte{0xce, 0x9f, 0x00}}, + {2, [3]byte{0xce, 0xa0, 0x00}}, {2, [3]byte{0xce, 0xa1, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xce, 0xa3, 0x00}}, + {2, [3]byte{0xce, 0xa4, 0x00}}, {2, [3]byte{0xce, 0xa5, 0x00}}, + {2, [3]byte{0xce, 0xa6, 0x00}}, {2, [3]byte{0xce, 0xa7, 0x00}}, + {2, [3]byte{0xce, 0xa8, 0x00}}, {2, [3]byte{0xce, 0xa9, 0x00}}, + {2, [3]byte{0xce, 0xaa, 0x00}}, {2, [3]byte{0xce, 0xab, 0x00}}, + {2, [3]byte{0xce, 0xac, 0x00}}, {2, [3]byte{0xce, 0xad, 0x00}}, + {2, [3]byte{0xce, 0xae, 0x00}}, {2, [3]byte{0xce, 0xaf, 0x00}}, + {2, [3]byte{0xce, 0xb0, 0x00}}, {2, [3]byte{0xce, 0xb1, 0x00}}, + {2, [3]byte{0xce, 0xb2, 0x00}}, {2, [3]byte{0xce, 0xb3, 0x00}}, + {2, [3]byte{0xce, 0xb4, 0x00}}, {2, [3]byte{0xce, 0xb5, 0x00}}, + {2, [3]byte{0xce, 0xb6, 0x00}}, {2, [3]byte{0xce, 0xb7, 0x00}}, + {2, [3]byte{0xce, 0xb8, 0x00}}, {2, [3]byte{0xce, 0xb9, 0x00}}, + {2, [3]byte{0xce, 0xba, 0x00}}, {2, [3]byte{0xce, 0xbb, 0x00}}, + {2, [3]byte{0xce, 0xbc, 0x00}}, {2, [3]byte{0xce, 0xbd, 0x00}}, + {2, [3]byte{0xce, 0xbe, 0x00}}, {2, [3]byte{0xce, 0xbf, 0x00}}, + {2, [3]byte{0xcf, 0x80, 0x00}}, {2, [3]byte{0xcf, 0x81, 0x00}}, + {2, [3]byte{0xcf, 0x82, 0x00}}, {2, [3]byte{0xcf, 0x83, 0x00}}, + {2, [3]byte{0xcf, 0x84, 0x00}}, {2, [3]byte{0xcf, 0x85, 0x00}}, + {2, [3]byte{0xcf, 0x86, 0x00}}, {2, [3]byte{0xcf, 0x87, 0x00}}, + {2, [3]byte{0xcf, 0x88, 0x00}}, {2, [3]byte{0xcf, 0x89, 0x00}}, + {2, [3]byte{0xcf, 0x8a, 0x00}}, {2, [3]byte{0xcf, 0x8b, 0x00}}, + {2, [3]byte{0xcf, 0x8c, 0x00}}, {2, [3]byte{0xcf, 0x8d, 0x00}}, + {2, [3]byte{0xcf, 0x8e, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7, 0xa80000a8, 0xa90000a9, + 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3, + 0xb50000b5, 0xb60000b6, 0xb70000b7, 0xbb0000bb, 0xbd0000bd, 0x83000192, 0xb4000384, 0xa1000385, + 0xa2000386, 0xb8000388, 0xb9000389, 0xba00038a, 0xbc00038c, 0xbe00038e, 0xbf00038f, 0xc0000390, + 0xc1000391, 0xc2000392, 0xc3000393, 0xc4000394, 0xc5000395, 0xc6000396, 0xc7000397, 0xc8000398, + 0xc9000399, 0xca00039a, 0xcb00039b, 0xcc00039c, 0xcd00039d, 0xce00039e, 0xcf00039f, 0xd00003a0, + 0xd10003a1, 0xd30003a3, 0xd40003a4, 0xd50003a5, 0xd60003a6, 0xd70003a7, 0xd80003a8, 0xd90003a9, + 0xda0003aa, 0xdb0003ab, 0xdc0003ac, 0xdd0003ad, 0xde0003ae, 0xdf0003af, 0xe00003b0, 0xe10003b1, + 0xe20003b2, 0xe30003b3, 0xe40003b4, 0xe50003b5, 0xe60003b6, 0xe70003b7, 0xe80003b8, 0xe90003b9, + 0xea0003ba, 0xeb0003bb, 0xec0003bc, 0xed0003bd, 0xee0003be, 0xef0003bf, 0xf00003c0, 0xf10003c1, + 0xf20003c2, 0xf30003c3, 0xf40003c4, 0xf50003c5, 0xf60003c6, 0xf70003c7, 0xf80003c8, 0xf90003c9, + 0xfa0003ca, 0xfb0003cb, 0xfc0003cc, 0xfd0003cd, 0xfe0003ce, 0x96002013, 0x97002014, 0xaf002015, + 0x91002018, 0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e, 0x86002020, 0x87002021, + 0x95002022, 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0x800020ac, 0x99002122, 0x99002122, + 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, + 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, + }, +} + +// Windows1254 is the Windows 1254 encoding. +var Windows1254 *Charmap = &windows1254 + +var windows1254 = Charmap{ + name: "Windows 1254", + mib: identifier.Windows1254, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xe2, 0x80, 0x9a}}, {2, [3]byte{0xc6, 0x92, 0x00}}, + {3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, + {3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}}, + {2, [3]byte{0xcb, 0x86, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb0}}, + {2, [3]byte{0xc5, 0xa0, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb9}}, + {2, [3]byte{0xc5, 0x92, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x98}}, + {3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}}, + {3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, + {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, + {2, [3]byte{0xcb, 0x9c, 0x00}}, {3, [3]byte{0xe2, 0x84, 0xa2}}, + {2, [3]byte{0xc5, 0xa1, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xba}}, + {2, [3]byte{0xc5, 0x93, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc5, 0xb8, 0x00}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, + {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, + {2, [3]byte{0xc2, 0xba, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}}, + {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, + {2, [3]byte{0xc4, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc4, 0xb0, 0x00}}, + {2, [3]byte{0xc5, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, + {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc4, 0x9f, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, + {2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, + {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc4, 0xb1, 0x00}}, + {2, [3]byte{0xc5, 0x9f, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa10000a1, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7, + 0xa80000a8, 0xa90000a9, 0xaa0000aa, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af, + 0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, + 0xb80000b8, 0xb90000b9, 0xba0000ba, 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xbf0000bf, + 0xc00000c0, 0xc10000c1, 0xc20000c2, 0xc30000c3, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc70000c7, + 0xc80000c8, 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc, 0xcd0000cd, 0xce0000ce, 0xcf0000cf, + 0xd10000d1, 0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd70000d7, 0xd80000d8, + 0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc, 0xdf0000df, 0xe00000e0, 0xe10000e1, 0xe20000e2, + 0xe30000e3, 0xe40000e4, 0xe50000e5, 0xe60000e6, 0xe70000e7, 0xe80000e8, 0xe90000e9, 0xea0000ea, + 0xeb0000eb, 0xec0000ec, 0xed0000ed, 0xee0000ee, 0xef0000ef, 0xf10000f1, 0xf20000f2, 0xf30000f3, + 0xf40000f4, 0xf50000f5, 0xf60000f6, 0xf70000f7, 0xf80000f8, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, + 0xfc0000fc, 0xff0000ff, 0xd000011e, 0xf000011f, 0xdd000130, 0xfd000131, 0x8c000152, 0x9c000153, + 0xde00015e, 0xfe00015f, 0x8a000160, 0x9a000161, 0x9f000178, 0x83000192, 0x880002c6, 0x980002dc, + 0x96002013, 0x97002014, 0x91002018, 0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e, + 0x86002020, 0x87002021, 0x95002022, 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0x800020ac, + 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, + }, +} + +// Windows1255 is the Windows 1255 encoding. +var Windows1255 *Charmap = &windows1255 + +var windows1255 = Charmap{ + name: "Windows 1255", + mib: identifier.Windows1255, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xe2, 0x80, 0x9a}}, {2, [3]byte{0xc6, 0x92, 0x00}}, + {3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, + {3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}}, + {2, [3]byte{0xcb, 0x86, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb0}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xb9}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x98}}, + {3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}}, + {3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, + {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, + {2, [3]byte{0xcb, 0x9c, 0x00}}, {3, [3]byte{0xe2, 0x84, 0xa2}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xba}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, + {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xaa}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0x97, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}}, + {2, [3]byte{0xd6, 0xb0, 0x00}}, {2, [3]byte{0xd6, 0xb1, 0x00}}, + {2, [3]byte{0xd6, 0xb2, 0x00}}, {2, [3]byte{0xd6, 0xb3, 0x00}}, + {2, [3]byte{0xd6, 0xb4, 0x00}}, {2, [3]byte{0xd6, 0xb5, 0x00}}, + {2, [3]byte{0xd6, 0xb6, 0x00}}, {2, [3]byte{0xd6, 0xb7, 0x00}}, + {2, [3]byte{0xd6, 0xb8, 0x00}}, {2, [3]byte{0xd6, 0xb9, 0x00}}, + {2, [3]byte{0xd6, 0xba, 0x00}}, {2, [3]byte{0xd6, 0xbb, 0x00}}, + {2, [3]byte{0xd6, 0xbc, 0x00}}, {2, [3]byte{0xd6, 0xbd, 0x00}}, + {2, [3]byte{0xd6, 0xbe, 0x00}}, {2, [3]byte{0xd6, 0xbf, 0x00}}, + {2, [3]byte{0xd7, 0x80, 0x00}}, {2, [3]byte{0xd7, 0x81, 0x00}}, + {2, [3]byte{0xd7, 0x82, 0x00}}, {2, [3]byte{0xd7, 0x83, 0x00}}, + {2, [3]byte{0xd7, 0xb0, 0x00}}, {2, [3]byte{0xd7, 0xb1, 0x00}}, + {2, [3]byte{0xd7, 0xb2, 0x00}}, {2, [3]byte{0xd7, 0xb3, 0x00}}, + {2, [3]byte{0xd7, 0xb4, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xd7, 0x90, 0x00}}, {2, [3]byte{0xd7, 0x91, 0x00}}, + {2, [3]byte{0xd7, 0x92, 0x00}}, {2, [3]byte{0xd7, 0x93, 0x00}}, + {2, [3]byte{0xd7, 0x94, 0x00}}, {2, [3]byte{0xd7, 0x95, 0x00}}, + {2, [3]byte{0xd7, 0x96, 0x00}}, {2, [3]byte{0xd7, 0x97, 0x00}}, + {2, [3]byte{0xd7, 0x98, 0x00}}, {2, [3]byte{0xd7, 0x99, 0x00}}, + {2, [3]byte{0xd7, 0x9a, 0x00}}, {2, [3]byte{0xd7, 0x9b, 0x00}}, + {2, [3]byte{0xd7, 0x9c, 0x00}}, {2, [3]byte{0xd7, 0x9d, 0x00}}, + {2, [3]byte{0xd7, 0x9e, 0x00}}, {2, [3]byte{0xd7, 0x9f, 0x00}}, + {2, [3]byte{0xd7, 0xa0, 0x00}}, {2, [3]byte{0xd7, 0xa1, 0x00}}, + {2, [3]byte{0xd7, 0xa2, 0x00}}, {2, [3]byte{0xd7, 0xa3, 0x00}}, + {2, [3]byte{0xd7, 0xa4, 0x00}}, {2, [3]byte{0xd7, 0xa5, 0x00}}, + {2, [3]byte{0xd7, 0xa6, 0x00}}, {2, [3]byte{0xd7, 0xa7, 0x00}}, + {2, [3]byte{0xd7, 0xa8, 0x00}}, {2, [3]byte{0xd7, 0xa9, 0x00}}, + {2, [3]byte{0xd7, 0xaa, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x8e}}, + {3, [3]byte{0xe2, 0x80, 0x8f}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa10000a1, 0xa20000a2, 0xa30000a3, 0xa50000a5, 0xa60000a6, 0xa70000a7, 0xa80000a8, + 0xa90000a9, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af, 0xb00000b0, 0xb10000b1, + 0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, 0xb80000b8, 0xb90000b9, + 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xbf0000bf, 0xaa0000d7, 0xba0000f7, 0x83000192, + 0x880002c6, 0x980002dc, 0xc00005b0, 0xc10005b1, 0xc20005b2, 0xc30005b3, 0xc40005b4, 0xc50005b5, + 0xc60005b6, 0xc70005b7, 0xc80005b8, 0xc90005b9, 0xca0005ba, 0xcb0005bb, 0xcc0005bc, 0xcd0005bd, + 0xce0005be, 0xcf0005bf, 0xd00005c0, 0xd10005c1, 0xd20005c2, 0xd30005c3, 0xe00005d0, 0xe10005d1, + 0xe20005d2, 0xe30005d3, 0xe40005d4, 0xe50005d5, 0xe60005d6, 0xe70005d7, 0xe80005d8, 0xe90005d9, + 0xea0005da, 0xeb0005db, 0xec0005dc, 0xed0005dd, 0xee0005de, 0xef0005df, 0xf00005e0, 0xf10005e1, + 0xf20005e2, 0xf30005e3, 0xf40005e4, 0xf50005e5, 0xf60005e6, 0xf70005e7, 0xf80005e8, 0xf90005e9, + 0xfa0005ea, 0xd40005f0, 0xd50005f1, 0xd60005f2, 0xd70005f3, 0xd80005f4, 0xfd00200e, 0xfe00200f, + 0x96002013, 0x97002014, 0x91002018, 0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e, + 0x86002020, 0x87002021, 0x95002022, 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0xa40020aa, + 0x800020ac, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, + 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, + 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, + }, +} + +// Windows1256 is the Windows 1256 encoding. +var Windows1256 *Charmap = &windows1256 + +var windows1256 = Charmap{ + name: "Windows 1256", + mib: identifier.Windows1256, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xac}}, {2, [3]byte{0xd9, 0xbe, 0x00}}, + {3, [3]byte{0xe2, 0x80, 0x9a}}, {2, [3]byte{0xc6, 0x92, 0x00}}, + {3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, + {3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}}, + {2, [3]byte{0xcb, 0x86, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb0}}, + {2, [3]byte{0xd9, 0xb9, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb9}}, + {2, [3]byte{0xc5, 0x92, 0x00}}, {2, [3]byte{0xda, 0x86, 0x00}}, + {2, [3]byte{0xda, 0x98, 0x00}}, {2, [3]byte{0xda, 0x88, 0x00}}, + {2, [3]byte{0xda, 0xaf, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x98}}, + {3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}}, + {3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, + {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, + {2, [3]byte{0xda, 0xa9, 0x00}}, {3, [3]byte{0xe2, 0x84, 0xa2}}, + {2, [3]byte{0xda, 0x91, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xba}}, + {2, [3]byte{0xc5, 0x93, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x8c}}, + {3, [3]byte{0xe2, 0x80, 0x8d}}, {2, [3]byte{0xda, 0xba, 0x00}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xd8, 0x8c, 0x00}}, + {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xda, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, + {2, [3]byte{0xd8, 0x9b, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xd8, 0x9f, 0x00}}, + {2, [3]byte{0xdb, 0x81, 0x00}}, {2, [3]byte{0xd8, 0xa1, 0x00}}, + {2, [3]byte{0xd8, 0xa2, 0x00}}, {2, [3]byte{0xd8, 0xa3, 0x00}}, + {2, [3]byte{0xd8, 0xa4, 0x00}}, {2, [3]byte{0xd8, 0xa5, 0x00}}, + {2, [3]byte{0xd8, 0xa6, 0x00}}, {2, [3]byte{0xd8, 0xa7, 0x00}}, + {2, [3]byte{0xd8, 0xa8, 0x00}}, {2, [3]byte{0xd8, 0xa9, 0x00}}, + {2, [3]byte{0xd8, 0xaa, 0x00}}, {2, [3]byte{0xd8, 0xab, 0x00}}, + {2, [3]byte{0xd8, 0xac, 0x00}}, {2, [3]byte{0xd8, 0xad, 0x00}}, + {2, [3]byte{0xd8, 0xae, 0x00}}, {2, [3]byte{0xd8, 0xaf, 0x00}}, + {2, [3]byte{0xd8, 0xb0, 0x00}}, {2, [3]byte{0xd8, 0xb1, 0x00}}, + {2, [3]byte{0xd8, 0xb2, 0x00}}, {2, [3]byte{0xd8, 0xb3, 0x00}}, + {2, [3]byte{0xd8, 0xb4, 0x00}}, {2, [3]byte{0xd8, 0xb5, 0x00}}, + {2, [3]byte{0xd8, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {2, [3]byte{0xd8, 0xb7, 0x00}}, {2, [3]byte{0xd8, 0xb8, 0x00}}, + {2, [3]byte{0xd8, 0xb9, 0x00}}, {2, [3]byte{0xd8, 0xba, 0x00}}, + {2, [3]byte{0xd9, 0x80, 0x00}}, {2, [3]byte{0xd9, 0x81, 0x00}}, + {2, [3]byte{0xd9, 0x82, 0x00}}, {2, [3]byte{0xd9, 0x83, 0x00}}, + {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xd9, 0x84, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xd9, 0x85, 0x00}}, + {2, [3]byte{0xd9, 0x86, 0x00}}, {2, [3]byte{0xd9, 0x87, 0x00}}, + {2, [3]byte{0xd9, 0x88, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xd9, 0x89, 0x00}}, {2, [3]byte{0xd9, 0x8a, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xd9, 0x8b, 0x00}}, {2, [3]byte{0xd9, 0x8c, 0x00}}, + {2, [3]byte{0xd9, 0x8d, 0x00}}, {2, [3]byte{0xd9, 0x8e, 0x00}}, + {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xd9, 0x8f, 0x00}}, + {2, [3]byte{0xd9, 0x90, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {2, [3]byte{0xd9, 0x91, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xd9, 0x92, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x8e}}, + {3, [3]byte{0xe2, 0x80, 0x8f}}, {2, [3]byte{0xdb, 0x92, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7, 0xa80000a8, + 0xa90000a9, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af, 0xb00000b0, 0xb10000b1, + 0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, 0xb80000b8, 0xb90000b9, + 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xd70000d7, 0xe00000e0, 0xe20000e2, 0xe70000e7, + 0xe80000e8, 0xe90000e9, 0xea0000ea, 0xeb0000eb, 0xee0000ee, 0xef0000ef, 0xf40000f4, 0xf70000f7, + 0xf90000f9, 0xfb0000fb, 0xfc0000fc, 0x8c000152, 0x9c000153, 0x83000192, 0x880002c6, 0xa100060c, + 0xba00061b, 0xbf00061f, 0xc1000621, 0xc2000622, 0xc3000623, 0xc4000624, 0xc5000625, 0xc6000626, + 0xc7000627, 0xc8000628, 0xc9000629, 0xca00062a, 0xcb00062b, 0xcc00062c, 0xcd00062d, 0xce00062e, + 0xcf00062f, 0xd0000630, 0xd1000631, 0xd2000632, 0xd3000633, 0xd4000634, 0xd5000635, 0xd6000636, + 0xd8000637, 0xd9000638, 0xda000639, 0xdb00063a, 0xdc000640, 0xdd000641, 0xde000642, 0xdf000643, + 0xe1000644, 0xe3000645, 0xe4000646, 0xe5000647, 0xe6000648, 0xec000649, 0xed00064a, 0xf000064b, + 0xf100064c, 0xf200064d, 0xf300064e, 0xf500064f, 0xf6000650, 0xf8000651, 0xfa000652, 0x8a000679, + 0x8100067e, 0x8d000686, 0x8f000688, 0x9a000691, 0x8e000698, 0x980006a9, 0x900006af, 0x9f0006ba, + 0xaa0006be, 0xc00006c1, 0xff0006d2, 0x9d00200c, 0x9e00200d, 0xfd00200e, 0xfe00200f, 0x96002013, + 0x97002014, 0x91002018, 0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e, 0x86002020, + 0x87002021, 0x95002022, 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0x800020ac, 0x99002122, + }, +} + +// Windows1257 is the Windows 1257 encoding. +var Windows1257 *Charmap = &windows1257 + +var windows1257 = Charmap{ + name: "Windows 1257", + mib: identifier.Windows1257, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xe2, 0x80, 0x9a}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, + {3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xb0}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xb9}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc2, 0xa8, 0x00}}, + {2, [3]byte{0xcb, 0x87, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x98}}, + {3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}}, + {3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, + {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x84, 0xa2}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xba}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, + {2, [3]byte{0xcb, 0x9b, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xc5, 0x96, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc3, 0x86, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, + {2, [3]byte{0xc5, 0x97, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc3, 0xa6, 0x00}}, + {2, [3]byte{0xc4, 0x84, 0x00}}, {2, [3]byte{0xc4, 0xae, 0x00}}, + {2, [3]byte{0xc4, 0x80, 0x00}}, {2, [3]byte{0xc4, 0x86, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc4, 0x98, 0x00}}, {2, [3]byte{0xc4, 0x92, 0x00}}, + {2, [3]byte{0xc4, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc5, 0xb9, 0x00}}, {2, [3]byte{0xc4, 0x96, 0x00}}, + {2, [3]byte{0xc4, 0xa2, 0x00}}, {2, [3]byte{0xc4, 0xb6, 0x00}}, + {2, [3]byte{0xc4, 0xaa, 0x00}}, {2, [3]byte{0xc4, 0xbb, 0x00}}, + {2, [3]byte{0xc5, 0xa0, 0x00}}, {2, [3]byte{0xc5, 0x83, 0x00}}, + {2, [3]byte{0xc5, 0x85, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, + {2, [3]byte{0xc5, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {2, [3]byte{0xc5, 0xb2, 0x00}}, {2, [3]byte{0xc5, 0x81, 0x00}}, + {2, [3]byte{0xc5, 0x9a, 0x00}}, {2, [3]byte{0xc5, 0xaa, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc5, 0xbb, 0x00}}, + {2, [3]byte{0xc5, 0xbd, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc4, 0x85, 0x00}}, {2, [3]byte{0xc4, 0xaf, 0x00}}, + {2, [3]byte{0xc4, 0x81, 0x00}}, {2, [3]byte{0xc4, 0x87, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, + {2, [3]byte{0xc4, 0x99, 0x00}}, {2, [3]byte{0xc4, 0x93, 0x00}}, + {2, [3]byte{0xc4, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc5, 0xba, 0x00}}, {2, [3]byte{0xc4, 0x97, 0x00}}, + {2, [3]byte{0xc4, 0xa3, 0x00}}, {2, [3]byte{0xc4, 0xb7, 0x00}}, + {2, [3]byte{0xc4, 0xab, 0x00}}, {2, [3]byte{0xc4, 0xbc, 0x00}}, + {2, [3]byte{0xc5, 0xa1, 0x00}}, {2, [3]byte{0xc5, 0x84, 0x00}}, + {2, [3]byte{0xc5, 0x86, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, + {2, [3]byte{0xc5, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {2, [3]byte{0xc5, 0xb3, 0x00}}, {2, [3]byte{0xc5, 0x82, 0x00}}, + {2, [3]byte{0xc5, 0x9b, 0x00}}, {2, [3]byte{0xc5, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc5, 0xbc, 0x00}}, + {2, [3]byte{0xc5, 0xbe, 0x00}}, {2, [3]byte{0xcb, 0x99, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa60000a6, 0xa70000a7, 0x8d0000a8, 0xa90000a9, + 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0x9d0000af, 0xb00000b0, 0xb10000b1, 0xb20000b2, + 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, 0x8f0000b8, 0xb90000b9, 0xbb0000bb, + 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xc40000c4, 0xc50000c5, 0xaf0000c6, 0xc90000c9, 0xd30000d3, + 0xd50000d5, 0xd60000d6, 0xd70000d7, 0xa80000d8, 0xdc0000dc, 0xdf0000df, 0xe40000e4, 0xe50000e5, + 0xbf0000e6, 0xe90000e9, 0xf30000f3, 0xf50000f5, 0xf60000f6, 0xf70000f7, 0xb80000f8, 0xfc0000fc, + 0xc2000100, 0xe2000101, 0xc0000104, 0xe0000105, 0xc3000106, 0xe3000107, 0xc800010c, 0xe800010d, + 0xc7000112, 0xe7000113, 0xcb000116, 0xeb000117, 0xc6000118, 0xe6000119, 0xcc000122, 0xec000123, + 0xce00012a, 0xee00012b, 0xc100012e, 0xe100012f, 0xcd000136, 0xed000137, 0xcf00013b, 0xef00013c, + 0xd9000141, 0xf9000142, 0xd1000143, 0xf1000144, 0xd2000145, 0xf2000146, 0xd400014c, 0xf400014d, + 0xaa000156, 0xba000157, 0xda00015a, 0xfa00015b, 0xd0000160, 0xf0000161, 0xdb00016a, 0xfb00016b, + 0xd8000172, 0xf8000173, 0xca000179, 0xea00017a, 0xdd00017b, 0xfd00017c, 0xde00017d, 0xfe00017e, + 0x8e0002c7, 0xff0002d9, 0x9e0002db, 0x96002013, 0x97002014, 0x91002018, 0x92002019, 0x8200201a, + 0x9300201c, 0x9400201d, 0x8400201e, 0x86002020, 0x87002021, 0x95002022, 0x85002026, 0x89002030, + 0x8b002039, 0x9b00203a, 0x800020ac, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, + 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, + }, +} + +// Windows1258 is the Windows 1258 encoding. +var Windows1258 *Charmap = &windows1258 + +var windows1258 = Charmap{ + name: "Windows 1258", + mib: identifier.Windows1258, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xe2, 0x80, 0x9a}}, {2, [3]byte{0xc6, 0x92, 0x00}}, + {3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, + {3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}}, + {2, [3]byte{0xcb, 0x86, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb0}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xb9}}, + {2, [3]byte{0xc5, 0x92, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x98}}, + {3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}}, + {3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, + {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, + {2, [3]byte{0xcb, 0x9c, 0x00}}, {3, [3]byte{0xe2, 0x84, 0xa2}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xba}}, + {2, [3]byte{0xc5, 0x93, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc5, 0xb8, 0x00}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, + {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, + {2, [3]byte{0xc2, 0xba, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}}, + {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc4, 0x82, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xcc, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, + {2, [3]byte{0xc4, 0x90, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xcc, 0x89, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc6, 0xa0, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc6, 0xaf, 0x00}}, + {2, [3]byte{0xcc, 0x83, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc4, 0x83, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, + {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xcc, 0x81, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc4, 0x91, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, + {2, [3]byte{0xcc, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, + {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc6, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc6, 0xb0, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xab}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa10000a1, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7, + 0xa80000a8, 0xa90000a9, 0xaa0000aa, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af, + 0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, + 0xb80000b8, 0xb90000b9, 0xba0000ba, 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xbf0000bf, + 0xc00000c0, 0xc10000c1, 0xc20000c2, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc70000c7, 0xc80000c8, + 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcd0000cd, 0xce0000ce, 0xcf0000cf, 0xd10000d1, 0xd30000d3, + 0xd40000d4, 0xd60000d6, 0xd70000d7, 0xd80000d8, 0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc, + 0xdf0000df, 0xe00000e0, 0xe10000e1, 0xe20000e2, 0xe40000e4, 0xe50000e5, 0xe60000e6, 0xe70000e7, + 0xe80000e8, 0xe90000e9, 0xea0000ea, 0xeb0000eb, 0xed0000ed, 0xee0000ee, 0xef0000ef, 0xf10000f1, + 0xf30000f3, 0xf40000f4, 0xf60000f6, 0xf70000f7, 0xf80000f8, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, + 0xfc0000fc, 0xff0000ff, 0xc3000102, 0xe3000103, 0xd0000110, 0xf0000111, 0x8c000152, 0x9c000153, + 0x9f000178, 0x83000192, 0xd50001a0, 0xf50001a1, 0xdd0001af, 0xfd0001b0, 0x880002c6, 0x980002dc, + 0xcc000300, 0xec000301, 0xde000303, 0xd2000309, 0xf2000323, 0x96002013, 0x97002014, 0x91002018, + 0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e, 0x86002020, 0x87002021, 0x95002022, + 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0xfe0020ab, 0x800020ac, 0x99002122, 0x99002122, + 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, + }, +} + +// XUserDefined is the X-User-Defined encoding. +// +// It is defined at http://encoding.spec.whatwg.org/#x-user-defined +var XUserDefined *Charmap = &xUserDefined + +var xUserDefined = Charmap{ + name: "X-User-Defined", + mib: identifier.XUserDefined, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xef, 0x9e, 0x80}}, {3, [3]byte{0xef, 0x9e, 0x81}}, + {3, [3]byte{0xef, 0x9e, 0x82}}, {3, [3]byte{0xef, 0x9e, 0x83}}, + {3, [3]byte{0xef, 0x9e, 0x84}}, {3, [3]byte{0xef, 0x9e, 0x85}}, + {3, [3]byte{0xef, 0x9e, 0x86}}, {3, [3]byte{0xef, 0x9e, 0x87}}, + {3, [3]byte{0xef, 0x9e, 0x88}}, {3, [3]byte{0xef, 0x9e, 0x89}}, + {3, [3]byte{0xef, 0x9e, 0x8a}}, {3, [3]byte{0xef, 0x9e, 0x8b}}, + {3, [3]byte{0xef, 0x9e, 0x8c}}, {3, [3]byte{0xef, 0x9e, 0x8d}}, + {3, [3]byte{0xef, 0x9e, 0x8e}}, {3, [3]byte{0xef, 0x9e, 0x8f}}, + {3, [3]byte{0xef, 0x9e, 0x90}}, {3, [3]byte{0xef, 0x9e, 0x91}}, + {3, [3]byte{0xef, 0x9e, 0x92}}, {3, [3]byte{0xef, 0x9e, 0x93}}, + {3, [3]byte{0xef, 0x9e, 0x94}}, {3, [3]byte{0xef, 0x9e, 0x95}}, + {3, [3]byte{0xef, 0x9e, 0x96}}, {3, [3]byte{0xef, 0x9e, 0x97}}, + {3, [3]byte{0xef, 0x9e, 0x98}}, {3, [3]byte{0xef, 0x9e, 0x99}}, + {3, [3]byte{0xef, 0x9e, 0x9a}}, {3, [3]byte{0xef, 0x9e, 0x9b}}, + {3, [3]byte{0xef, 0x9e, 0x9c}}, {3, [3]byte{0xef, 0x9e, 0x9d}}, + {3, [3]byte{0xef, 0x9e, 0x9e}}, {3, [3]byte{0xef, 0x9e, 0x9f}}, + {3, [3]byte{0xef, 0x9e, 0xa0}}, {3, [3]byte{0xef, 0x9e, 0xa1}}, + {3, [3]byte{0xef, 0x9e, 0xa2}}, {3, [3]byte{0xef, 0x9e, 0xa3}}, + {3, [3]byte{0xef, 0x9e, 0xa4}}, {3, [3]byte{0xef, 0x9e, 0xa5}}, + {3, [3]byte{0xef, 0x9e, 0xa6}}, {3, [3]byte{0xef, 0x9e, 0xa7}}, + {3, [3]byte{0xef, 0x9e, 0xa8}}, {3, [3]byte{0xef, 0x9e, 0xa9}}, + {3, [3]byte{0xef, 0x9e, 0xaa}}, {3, [3]byte{0xef, 0x9e, 0xab}}, + {3, [3]byte{0xef, 0x9e, 0xac}}, {3, [3]byte{0xef, 0x9e, 0xad}}, + {3, [3]byte{0xef, 0x9e, 0xae}}, {3, [3]byte{0xef, 0x9e, 0xaf}}, + {3, [3]byte{0xef, 0x9e, 0xb0}}, {3, [3]byte{0xef, 0x9e, 0xb1}}, + {3, [3]byte{0xef, 0x9e, 0xb2}}, {3, [3]byte{0xef, 0x9e, 0xb3}}, + {3, [3]byte{0xef, 0x9e, 0xb4}}, {3, [3]byte{0xef, 0x9e, 0xb5}}, + {3, [3]byte{0xef, 0x9e, 0xb6}}, {3, [3]byte{0xef, 0x9e, 0xb7}}, + {3, [3]byte{0xef, 0x9e, 0xb8}}, {3, [3]byte{0xef, 0x9e, 0xb9}}, + {3, [3]byte{0xef, 0x9e, 0xba}}, {3, [3]byte{0xef, 0x9e, 0xbb}}, + {3, [3]byte{0xef, 0x9e, 0xbc}}, {3, [3]byte{0xef, 0x9e, 0xbd}}, + {3, [3]byte{0xef, 0x9e, 0xbe}}, {3, [3]byte{0xef, 0x9e, 0xbf}}, + {3, [3]byte{0xef, 0x9f, 0x80}}, {3, [3]byte{0xef, 0x9f, 0x81}}, + {3, [3]byte{0xef, 0x9f, 0x82}}, {3, [3]byte{0xef, 0x9f, 0x83}}, + {3, [3]byte{0xef, 0x9f, 0x84}}, {3, [3]byte{0xef, 0x9f, 0x85}}, + {3, [3]byte{0xef, 0x9f, 0x86}}, {3, [3]byte{0xef, 0x9f, 0x87}}, + {3, [3]byte{0xef, 0x9f, 0x88}}, {3, [3]byte{0xef, 0x9f, 0x89}}, + {3, [3]byte{0xef, 0x9f, 0x8a}}, {3, [3]byte{0xef, 0x9f, 0x8b}}, + {3, [3]byte{0xef, 0x9f, 0x8c}}, {3, [3]byte{0xef, 0x9f, 0x8d}}, + {3, [3]byte{0xef, 0x9f, 0x8e}}, {3, [3]byte{0xef, 0x9f, 0x8f}}, + {3, [3]byte{0xef, 0x9f, 0x90}}, {3, [3]byte{0xef, 0x9f, 0x91}}, + {3, [3]byte{0xef, 0x9f, 0x92}}, {3, [3]byte{0xef, 0x9f, 0x93}}, + {3, [3]byte{0xef, 0x9f, 0x94}}, {3, [3]byte{0xef, 0x9f, 0x95}}, + {3, [3]byte{0xef, 0x9f, 0x96}}, {3, [3]byte{0xef, 0x9f, 0x97}}, + {3, [3]byte{0xef, 0x9f, 0x98}}, {3, [3]byte{0xef, 0x9f, 0x99}}, + {3, [3]byte{0xef, 0x9f, 0x9a}}, {3, [3]byte{0xef, 0x9f, 0x9b}}, + {3, [3]byte{0xef, 0x9f, 0x9c}}, {3, [3]byte{0xef, 0x9f, 0x9d}}, + {3, [3]byte{0xef, 0x9f, 0x9e}}, {3, [3]byte{0xef, 0x9f, 0x9f}}, + {3, [3]byte{0xef, 0x9f, 0xa0}}, {3, [3]byte{0xef, 0x9f, 0xa1}}, + {3, [3]byte{0xef, 0x9f, 0xa2}}, {3, [3]byte{0xef, 0x9f, 0xa3}}, + {3, [3]byte{0xef, 0x9f, 0xa4}}, {3, [3]byte{0xef, 0x9f, 0xa5}}, + {3, [3]byte{0xef, 0x9f, 0xa6}}, {3, [3]byte{0xef, 0x9f, 0xa7}}, + {3, [3]byte{0xef, 0x9f, 0xa8}}, {3, [3]byte{0xef, 0x9f, 0xa9}}, + {3, [3]byte{0xef, 0x9f, 0xaa}}, {3, [3]byte{0xef, 0x9f, 0xab}}, + {3, [3]byte{0xef, 0x9f, 0xac}}, {3, [3]byte{0xef, 0x9f, 0xad}}, + {3, [3]byte{0xef, 0x9f, 0xae}}, {3, [3]byte{0xef, 0x9f, 0xaf}}, + {3, [3]byte{0xef, 0x9f, 0xb0}}, {3, [3]byte{0xef, 0x9f, 0xb1}}, + {3, [3]byte{0xef, 0x9f, 0xb2}}, {3, [3]byte{0xef, 0x9f, 0xb3}}, + {3, [3]byte{0xef, 0x9f, 0xb4}}, {3, [3]byte{0xef, 0x9f, 0xb5}}, + {3, [3]byte{0xef, 0x9f, 0xb6}}, {3, [3]byte{0xef, 0x9f, 0xb7}}, + {3, [3]byte{0xef, 0x9f, 0xb8}}, {3, [3]byte{0xef, 0x9f, 0xb9}}, + {3, [3]byte{0xef, 0x9f, 0xba}}, {3, [3]byte{0xef, 0x9f, 0xbb}}, + {3, [3]byte{0xef, 0x9f, 0xbc}}, {3, [3]byte{0xef, 0x9f, 0xbd}}, + {3, [3]byte{0xef, 0x9f, 0xbe}}, {3, [3]byte{0xef, 0x9f, 0xbf}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0x8000f780, 0x8100f781, 0x8200f782, 0x8300f783, 0x8400f784, 0x8500f785, 0x8600f786, 0x8700f787, + 0x8800f788, 0x8900f789, 0x8a00f78a, 0x8b00f78b, 0x8c00f78c, 0x8d00f78d, 0x8e00f78e, 0x8f00f78f, + 0x9000f790, 0x9100f791, 0x9200f792, 0x9300f793, 0x9400f794, 0x9500f795, 0x9600f796, 0x9700f797, + 0x9800f798, 0x9900f799, 0x9a00f79a, 0x9b00f79b, 0x9c00f79c, 0x9d00f79d, 0x9e00f79e, 0x9f00f79f, + 0xa000f7a0, 0xa100f7a1, 0xa200f7a2, 0xa300f7a3, 0xa400f7a4, 0xa500f7a5, 0xa600f7a6, 0xa700f7a7, + 0xa800f7a8, 0xa900f7a9, 0xaa00f7aa, 0xab00f7ab, 0xac00f7ac, 0xad00f7ad, 0xae00f7ae, 0xaf00f7af, + 0xb000f7b0, 0xb100f7b1, 0xb200f7b2, 0xb300f7b3, 0xb400f7b4, 0xb500f7b5, 0xb600f7b6, 0xb700f7b7, + 0xb800f7b8, 0xb900f7b9, 0xba00f7ba, 0xbb00f7bb, 0xbc00f7bc, 0xbd00f7bd, 0xbe00f7be, 0xbf00f7bf, + 0xc000f7c0, 0xc100f7c1, 0xc200f7c2, 0xc300f7c3, 0xc400f7c4, 0xc500f7c5, 0xc600f7c6, 0xc700f7c7, + 0xc800f7c8, 0xc900f7c9, 0xca00f7ca, 0xcb00f7cb, 0xcc00f7cc, 0xcd00f7cd, 0xce00f7ce, 0xcf00f7cf, + 0xd000f7d0, 0xd100f7d1, 0xd200f7d2, 0xd300f7d3, 0xd400f7d4, 0xd500f7d5, 0xd600f7d6, 0xd700f7d7, + 0xd800f7d8, 0xd900f7d9, 0xda00f7da, 0xdb00f7db, 0xdc00f7dc, 0xdd00f7dd, 0xde00f7de, 0xdf00f7df, + 0xe000f7e0, 0xe100f7e1, 0xe200f7e2, 0xe300f7e3, 0xe400f7e4, 0xe500f7e5, 0xe600f7e6, 0xe700f7e7, + 0xe800f7e8, 0xe900f7e9, 0xea00f7ea, 0xeb00f7eb, 0xec00f7ec, 0xed00f7ed, 0xee00f7ee, 0xef00f7ef, + 0xf000f7f0, 0xf100f7f1, 0xf200f7f2, 0xf300f7f3, 0xf400f7f4, 0xf500f7f5, 0xf600f7f6, 0xf700f7f7, + 0xf800f7f8, 0xf900f7f9, 0xfa00f7fa, 0xfb00f7fb, 0xfc00f7fc, 0xfd00f7fd, 0xfe00f7fe, 0xff00f7ff, + }, +} +var listAll = []encoding.Encoding{ + CodePage037, + CodePage437, + CodePage850, + CodePage852, + CodePage855, + CodePage858, + CodePage860, + CodePage862, + CodePage863, + CodePage865, + CodePage866, + CodePage1047, + CodePage1140, + ISO8859_1, + ISO8859_2, + ISO8859_3, + ISO8859_4, + ISO8859_5, + ISO8859_6, + ISO8859_6E, + ISO8859_6I, + ISO8859_7, + ISO8859_8, + ISO8859_8E, + ISO8859_8I, + ISO8859_9, + ISO8859_10, + ISO8859_13, + ISO8859_14, + ISO8859_15, + ISO8859_16, + KOI8R, + KOI8U, + Macintosh, + MacintoshCyrillic, + Windows874, + Windows1250, + Windows1251, + Windows1252, + Windows1253, + Windows1254, + Windows1255, + Windows1256, + Windows1257, + Windows1258, + XUserDefined, +} + +// Total table size 87024 bytes (84KiB); checksum: 811C9DC5 diff --git a/tests/vendor/golang.org/x/text/encoding/encoding.go b/tests/vendor/golang.org/x/text/encoding/encoding.go new file mode 100644 index 000000000..a0bd7cd4d --- /dev/null +++ b/tests/vendor/golang.org/x/text/encoding/encoding.go @@ -0,0 +1,335 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package encoding defines an interface for character encodings, such as Shift +// JIS and Windows 1252, that can convert to and from UTF-8. +// +// Encoding implementations are provided in other packages, such as +// golang.org/x/text/encoding/charmap and +// golang.org/x/text/encoding/japanese. +package encoding // import "golang.org/x/text/encoding" + +import ( + "errors" + "io" + "strconv" + "unicode/utf8" + + "golang.org/x/text/encoding/internal/identifier" + "golang.org/x/text/transform" +) + +// TODO: +// - There seems to be some inconsistency in when decoders return errors +// and when not. Also documentation seems to suggest they shouldn't return +// errors at all (except for UTF-16). +// - Encoders seem to rely on or at least benefit from the input being in NFC +// normal form. Perhaps add an example how users could prepare their output. + +// Encoding is a character set encoding that can be transformed to and from +// UTF-8. +type Encoding interface { + // NewDecoder returns a Decoder. + NewDecoder() *Decoder + + // NewEncoder returns an Encoder. + NewEncoder() *Encoder +} + +// A Decoder converts bytes to UTF-8. It implements transform.Transformer. +// +// Transforming source bytes that are not of that encoding will not result in an +// error per se. Each byte that cannot be transcoded will be represented in the +// output by the UTF-8 encoding of '\uFFFD', the replacement rune. +type Decoder struct { + transform.Transformer + + // This forces external creators of Decoders to use names in struct + // initializers, allowing for future extendibility without having to break + // code. + _ struct{} +} + +// Bytes converts the given encoded bytes to UTF-8. It returns the converted +// bytes or nil, err if any error occurred. +func (d *Decoder) Bytes(b []byte) ([]byte, error) { + b, _, err := transform.Bytes(d, b) + if err != nil { + return nil, err + } + return b, nil +} + +// String converts the given encoded string to UTF-8. It returns the converted +// string or "", err if any error occurred. +func (d *Decoder) String(s string) (string, error) { + s, _, err := transform.String(d, s) + if err != nil { + return "", err + } + return s, nil +} + +// Reader wraps another Reader to decode its bytes. +// +// The Decoder may not be used for any other operation as long as the returned +// Reader is in use. +func (d *Decoder) Reader(r io.Reader) io.Reader { + return transform.NewReader(r, d) +} + +// An Encoder converts bytes from UTF-8. It implements transform.Transformer. +// +// Each rune that cannot be transcoded will result in an error. In this case, +// the transform will consume all source byte up to, not including the offending +// rune. Transforming source bytes that are not valid UTF-8 will be replaced by +// `\uFFFD`. To return early with an error instead, use transform.Chain to +// preprocess the data with a UTF8Validator. +type Encoder struct { + transform.Transformer + + // This forces external creators of Encoders to use names in struct + // initializers, allowing for future extendibility without having to break + // code. + _ struct{} +} + +// Bytes converts bytes from UTF-8. It returns the converted bytes or nil, err if +// any error occurred. +func (e *Encoder) Bytes(b []byte) ([]byte, error) { + b, _, err := transform.Bytes(e, b) + if err != nil { + return nil, err + } + return b, nil +} + +// String converts a string from UTF-8. It returns the converted string or +// "", err if any error occurred. +func (e *Encoder) String(s string) (string, error) { + s, _, err := transform.String(e, s) + if err != nil { + return "", err + } + return s, nil +} + +// Writer wraps another Writer to encode its UTF-8 output. +// +// The Encoder may not be used for any other operation as long as the returned +// Writer is in use. +func (e *Encoder) Writer(w io.Writer) io.Writer { + return transform.NewWriter(w, e) +} + +// ASCIISub is the ASCII substitute character, as recommended by +// https://unicode.org/reports/tr36/#Text_Comparison +const ASCIISub = '\x1a' + +// Nop is the nop encoding. Its transformed bytes are the same as the source +// bytes; it does not replace invalid UTF-8 sequences. +var Nop Encoding = nop{} + +type nop struct{} + +func (nop) NewDecoder() *Decoder { + return &Decoder{Transformer: transform.Nop} +} +func (nop) NewEncoder() *Encoder { + return &Encoder{Transformer: transform.Nop} +} + +// Replacement is the replacement encoding. Decoding from the replacement +// encoding yields a single '\uFFFD' replacement rune. Encoding from UTF-8 to +// the replacement encoding yields the same as the source bytes except that +// invalid UTF-8 is converted to '\uFFFD'. +// +// It is defined at http://encoding.spec.whatwg.org/#replacement +var Replacement Encoding = replacement{} + +type replacement struct{} + +func (replacement) NewDecoder() *Decoder { + return &Decoder{Transformer: replacementDecoder{}} +} + +func (replacement) NewEncoder() *Encoder { + return &Encoder{Transformer: replacementEncoder{}} +} + +func (replacement) ID() (mib identifier.MIB, other string) { + return identifier.Replacement, "" +} + +type replacementDecoder struct{ transform.NopResetter } + +func (replacementDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + if len(dst) < 3 { + return 0, 0, transform.ErrShortDst + } + if atEOF { + const fffd = "\ufffd" + dst[0] = fffd[0] + dst[1] = fffd[1] + dst[2] = fffd[2] + nDst = 3 + } + return nDst, len(src), nil +} + +type replacementEncoder struct{ transform.NopResetter } + +func (replacementEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + r, size := rune(0), 0 + + for ; nSrc < len(src); nSrc += size { + r = rune(src[nSrc]) + + // Decode a 1-byte rune. + if r < utf8.RuneSelf { + size = 1 + + } else { + // Decode a multi-byte rune. + r, size = utf8.DecodeRune(src[nSrc:]) + if size == 1 { + // All valid runes of size 1 (those below utf8.RuneSelf) were + // handled above. We have invalid UTF-8 or we haven't seen the + // full character yet. + if !atEOF && !utf8.FullRune(src[nSrc:]) { + err = transform.ErrShortSrc + break + } + r = '\ufffd' + } + } + + if nDst+utf8.RuneLen(r) > len(dst) { + err = transform.ErrShortDst + break + } + nDst += utf8.EncodeRune(dst[nDst:], r) + } + return nDst, nSrc, err +} + +// HTMLEscapeUnsupported wraps encoders to replace source runes outside the +// repertoire of the destination encoding with HTML escape sequences. +// +// This wrapper exists to comply to URL and HTML forms requiring a +// non-terminating legacy encoder. The produced sequences may lead to data +// loss as they are indistinguishable from legitimate input. To avoid this +// issue, use UTF-8 encodings whenever possible. +func HTMLEscapeUnsupported(e *Encoder) *Encoder { + return &Encoder{Transformer: &errorHandler{e, errorToHTML}} +} + +// ReplaceUnsupported wraps encoders to replace source runes outside the +// repertoire of the destination encoding with an encoding-specific +// replacement. +// +// This wrapper is only provided for backwards compatibility and legacy +// handling. Its use is strongly discouraged. Use UTF-8 whenever possible. +func ReplaceUnsupported(e *Encoder) *Encoder { + return &Encoder{Transformer: &errorHandler{e, errorToReplacement}} +} + +type errorHandler struct { + *Encoder + handler func(dst []byte, r rune, err repertoireError) (n int, ok bool) +} + +// TODO: consider making this error public in some form. +type repertoireError interface { + Replacement() byte +} + +func (h errorHandler) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + nDst, nSrc, err = h.Transformer.Transform(dst, src, atEOF) + for err != nil { + rerr, ok := err.(repertoireError) + if !ok { + return nDst, nSrc, err + } + r, sz := utf8.DecodeRune(src[nSrc:]) + n, ok := h.handler(dst[nDst:], r, rerr) + if !ok { + return nDst, nSrc, transform.ErrShortDst + } + err = nil + nDst += n + if nSrc += sz; nSrc < len(src) { + var dn, sn int + dn, sn, err = h.Transformer.Transform(dst[nDst:], src[nSrc:], atEOF) + nDst += dn + nSrc += sn + } + } + return nDst, nSrc, err +} + +func errorToHTML(dst []byte, r rune, err repertoireError) (n int, ok bool) { + buf := [8]byte{} + b := strconv.AppendUint(buf[:0], uint64(r), 10) + if n = len(b) + len("&#;"); n >= len(dst) { + return 0, false + } + dst[0] = '&' + dst[1] = '#' + dst[copy(dst[2:], b)+2] = ';' + return n, true +} + +func errorToReplacement(dst []byte, r rune, err repertoireError) (n int, ok bool) { + if len(dst) == 0 { + return 0, false + } + dst[0] = err.Replacement() + return 1, true +} + +// ErrInvalidUTF8 means that a transformer encountered invalid UTF-8. +var ErrInvalidUTF8 = errors.New("encoding: invalid UTF-8") + +// UTF8Validator is a transformer that returns ErrInvalidUTF8 on the first +// input byte that is not valid UTF-8. +var UTF8Validator transform.Transformer = utf8Validator{} + +type utf8Validator struct{ transform.NopResetter } + +func (utf8Validator) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + n := len(src) + if n > len(dst) { + n = len(dst) + } + for i := 0; i < n; { + if c := src[i]; c < utf8.RuneSelf { + dst[i] = c + i++ + continue + } + _, size := utf8.DecodeRune(src[i:]) + if size == 1 { + // All valid runes of size 1 (those below utf8.RuneSelf) were + // handled above. We have invalid UTF-8 or we haven't seen the + // full character yet. + err = ErrInvalidUTF8 + if !atEOF && !utf8.FullRune(src[i:]) { + err = transform.ErrShortSrc + } + return i, i, err + } + if i+size > len(dst) { + return i, i, transform.ErrShortDst + } + for ; size > 0; size-- { + dst[i] = src[i] + i++ + } + } + if len(src) > len(dst) { + err = transform.ErrShortDst + } + return n, n, err +} diff --git a/tests/vendor/golang.org/x/text/encoding/htmlindex/htmlindex.go b/tests/vendor/golang.org/x/text/encoding/htmlindex/htmlindex.go new file mode 100644 index 000000000..bdc7d15dd --- /dev/null +++ b/tests/vendor/golang.org/x/text/encoding/htmlindex/htmlindex.go @@ -0,0 +1,86 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:generate go run gen.go + +// Package htmlindex maps character set encoding names to Encodings as +// recommended by the W3C for use in HTML 5. See http://www.w3.org/TR/encoding. +package htmlindex + +// TODO: perhaps have a "bare" version of the index (used by this package) that +// is not pre-loaded with all encodings. Global variables in encodings prevent +// the linker from being able to purge unneeded tables. This means that +// referencing all encodings, as this package does for the default index, links +// in all encodings unconditionally. +// +// This issue can be solved by either solving the linking issue (see +// https://github.com/golang/go/issues/6330) or refactoring the encoding tables +// (e.g. moving the tables to internal packages that do not use global +// variables). + +// TODO: allow canonicalizing names + +import ( + "errors" + "strings" + "sync" + + "golang.org/x/text/encoding" + "golang.org/x/text/encoding/internal/identifier" + "golang.org/x/text/language" +) + +var ( + errInvalidName = errors.New("htmlindex: invalid encoding name") + errUnknown = errors.New("htmlindex: unknown Encoding") + errUnsupported = errors.New("htmlindex: this encoding is not supported") +) + +var ( + matcherOnce sync.Once + matcher language.Matcher +) + +// LanguageDefault returns the canonical name of the default encoding for a +// given language. +func LanguageDefault(tag language.Tag) string { + matcherOnce.Do(func() { + tags := []language.Tag{} + for _, t := range strings.Split(locales, " ") { + tags = append(tags, language.MustParse(t)) + } + matcher = language.NewMatcher(tags, language.PreferSameScript(true)) + }) + _, i, _ := matcher.Match(tag) + return canonical[localeMap[i]] // Default is Windows-1252. +} + +// Get returns an Encoding for one of the names listed in +// http://www.w3.org/TR/encoding using the Default Index. Matching is case- +// insensitive. +func Get(name string) (encoding.Encoding, error) { + x, ok := nameMap[strings.ToLower(strings.TrimSpace(name))] + if !ok { + return nil, errInvalidName + } + return encodings[x], nil +} + +// Name reports the canonical name of the given Encoding. It will return +// an error if e is not associated with a supported encoding scheme. +func Name(e encoding.Encoding) (string, error) { + id, ok := e.(identifier.Interface) + if !ok { + return "", errUnknown + } + mib, _ := id.ID() + if mib == 0 { + return "", errUnknown + } + v, ok := mibMap[mib] + if !ok { + return "", errUnsupported + } + return canonical[v], nil +} diff --git a/tests/vendor/golang.org/x/text/encoding/htmlindex/map.go b/tests/vendor/golang.org/x/text/encoding/htmlindex/map.go new file mode 100644 index 000000000..c61439045 --- /dev/null +++ b/tests/vendor/golang.org/x/text/encoding/htmlindex/map.go @@ -0,0 +1,105 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package htmlindex + +import ( + "golang.org/x/text/encoding" + "golang.org/x/text/encoding/charmap" + "golang.org/x/text/encoding/internal/identifier" + "golang.org/x/text/encoding/japanese" + "golang.org/x/text/encoding/korean" + "golang.org/x/text/encoding/simplifiedchinese" + "golang.org/x/text/encoding/traditionalchinese" + "golang.org/x/text/encoding/unicode" +) + +// mibMap maps a MIB identifier to an htmlEncoding index. +var mibMap = map[identifier.MIB]htmlEncoding{ + identifier.UTF8: utf8, + identifier.UTF16BE: utf16be, + identifier.UTF16LE: utf16le, + identifier.IBM866: ibm866, + identifier.ISOLatin2: iso8859_2, + identifier.ISOLatin3: iso8859_3, + identifier.ISOLatin4: iso8859_4, + identifier.ISOLatinCyrillic: iso8859_5, + identifier.ISOLatinArabic: iso8859_6, + identifier.ISOLatinGreek: iso8859_7, + identifier.ISOLatinHebrew: iso8859_8, + identifier.ISO88598I: iso8859_8I, + identifier.ISOLatin6: iso8859_10, + identifier.ISO885913: iso8859_13, + identifier.ISO885914: iso8859_14, + identifier.ISO885915: iso8859_15, + identifier.ISO885916: iso8859_16, + identifier.KOI8R: koi8r, + identifier.KOI8U: koi8u, + identifier.Macintosh: macintosh, + identifier.MacintoshCyrillic: macintoshCyrillic, + identifier.Windows874: windows874, + identifier.Windows1250: windows1250, + identifier.Windows1251: windows1251, + identifier.Windows1252: windows1252, + identifier.Windows1253: windows1253, + identifier.Windows1254: windows1254, + identifier.Windows1255: windows1255, + identifier.Windows1256: windows1256, + identifier.Windows1257: windows1257, + identifier.Windows1258: windows1258, + identifier.XUserDefined: xUserDefined, + identifier.GBK: gbk, + identifier.GB18030: gb18030, + identifier.Big5: big5, + identifier.EUCPkdFmtJapanese: eucjp, + identifier.ISO2022JP: iso2022jp, + identifier.ShiftJIS: shiftJIS, + identifier.EUCKR: euckr, + identifier.Replacement: replacement, +} + +// encodings maps the internal htmlEncoding to an Encoding. +// TODO: consider using a reusable index in encoding/internal. +var encodings = [numEncodings]encoding.Encoding{ + utf8: unicode.UTF8, + ibm866: charmap.CodePage866, + iso8859_2: charmap.ISO8859_2, + iso8859_3: charmap.ISO8859_3, + iso8859_4: charmap.ISO8859_4, + iso8859_5: charmap.ISO8859_5, + iso8859_6: charmap.ISO8859_6, + iso8859_7: charmap.ISO8859_7, + iso8859_8: charmap.ISO8859_8, + iso8859_8I: charmap.ISO8859_8I, + iso8859_10: charmap.ISO8859_10, + iso8859_13: charmap.ISO8859_13, + iso8859_14: charmap.ISO8859_14, + iso8859_15: charmap.ISO8859_15, + iso8859_16: charmap.ISO8859_16, + koi8r: charmap.KOI8R, + koi8u: charmap.KOI8U, + macintosh: charmap.Macintosh, + windows874: charmap.Windows874, + windows1250: charmap.Windows1250, + windows1251: charmap.Windows1251, + windows1252: charmap.Windows1252, + windows1253: charmap.Windows1253, + windows1254: charmap.Windows1254, + windows1255: charmap.Windows1255, + windows1256: charmap.Windows1256, + windows1257: charmap.Windows1257, + windows1258: charmap.Windows1258, + macintoshCyrillic: charmap.MacintoshCyrillic, + gbk: simplifiedchinese.GBK, + gb18030: simplifiedchinese.GB18030, + big5: traditionalchinese.Big5, + eucjp: japanese.EUCJP, + iso2022jp: japanese.ISO2022JP, + shiftJIS: japanese.ShiftJIS, + euckr: korean.EUCKR, + replacement: encoding.Replacement, + utf16be: unicode.UTF16(unicode.BigEndian, unicode.IgnoreBOM), + utf16le: unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM), + xUserDefined: charmap.XUserDefined, +} diff --git a/tests/vendor/golang.org/x/text/encoding/htmlindex/tables.go b/tests/vendor/golang.org/x/text/encoding/htmlindex/tables.go new file mode 100644 index 000000000..9e6daa896 --- /dev/null +++ b/tests/vendor/golang.org/x/text/encoding/htmlindex/tables.go @@ -0,0 +1,362 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +package htmlindex + +type htmlEncoding byte + +const ( + utf8 htmlEncoding = iota + ibm866 + iso8859_2 + iso8859_3 + iso8859_4 + iso8859_5 + iso8859_6 + iso8859_7 + iso8859_8 + iso8859_8I + iso8859_10 + iso8859_13 + iso8859_14 + iso8859_15 + iso8859_16 + koi8r + koi8u + macintosh + windows874 + windows1250 + windows1251 + windows1252 + windows1253 + windows1254 + windows1255 + windows1256 + windows1257 + windows1258 + macintoshCyrillic + gbk + gb18030 + big5 + eucjp + iso2022jp + shiftJIS + euckr + replacement + utf16be + utf16le + xUserDefined + numEncodings +) + +var canonical = [numEncodings]string{ + "utf-8", + "ibm866", + "iso-8859-2", + "iso-8859-3", + "iso-8859-4", + "iso-8859-5", + "iso-8859-6", + "iso-8859-7", + "iso-8859-8", + "iso-8859-8-i", + "iso-8859-10", + "iso-8859-13", + "iso-8859-14", + "iso-8859-15", + "iso-8859-16", + "koi8-r", + "koi8-u", + "macintosh", + "windows-874", + "windows-1250", + "windows-1251", + "windows-1252", + "windows-1253", + "windows-1254", + "windows-1255", + "windows-1256", + "windows-1257", + "windows-1258", + "x-mac-cyrillic", + "gbk", + "gb18030", + "big5", + "euc-jp", + "iso-2022-jp", + "shift_jis", + "euc-kr", + "replacement", + "utf-16be", + "utf-16le", + "x-user-defined", +} + +var nameMap = map[string]htmlEncoding{ + "unicode-1-1-utf-8": utf8, + "unicode11utf8": utf8, + "unicode20utf8": utf8, + "utf-8": utf8, + "utf8": utf8, + "x-unicode20utf8": utf8, + "866": ibm866, + "cp866": ibm866, + "csibm866": ibm866, + "ibm866": ibm866, + "csisolatin2": iso8859_2, + "iso-8859-2": iso8859_2, + "iso-ir-101": iso8859_2, + "iso8859-2": iso8859_2, + "iso88592": iso8859_2, + "iso_8859-2": iso8859_2, + "iso_8859-2:1987": iso8859_2, + "l2": iso8859_2, + "latin2": iso8859_2, + "csisolatin3": iso8859_3, + "iso-8859-3": iso8859_3, + "iso-ir-109": iso8859_3, + "iso8859-3": iso8859_3, + "iso88593": iso8859_3, + "iso_8859-3": iso8859_3, + "iso_8859-3:1988": iso8859_3, + "l3": iso8859_3, + "latin3": iso8859_3, + "csisolatin4": iso8859_4, + "iso-8859-4": iso8859_4, + "iso-ir-110": iso8859_4, + "iso8859-4": iso8859_4, + "iso88594": iso8859_4, + "iso_8859-4": iso8859_4, + "iso_8859-4:1988": iso8859_4, + "l4": iso8859_4, + "latin4": iso8859_4, + "csisolatincyrillic": iso8859_5, + "cyrillic": iso8859_5, + "iso-8859-5": iso8859_5, + "iso-ir-144": iso8859_5, + "iso8859-5": iso8859_5, + "iso88595": iso8859_5, + "iso_8859-5": iso8859_5, + "iso_8859-5:1988": iso8859_5, + "arabic": iso8859_6, + "asmo-708": iso8859_6, + "csiso88596e": iso8859_6, + "csiso88596i": iso8859_6, + "csisolatinarabic": iso8859_6, + "ecma-114": iso8859_6, + "iso-8859-6": iso8859_6, + "iso-8859-6-e": iso8859_6, + "iso-8859-6-i": iso8859_6, + "iso-ir-127": iso8859_6, + "iso8859-6": iso8859_6, + "iso88596": iso8859_6, + "iso_8859-6": iso8859_6, + "iso_8859-6:1987": iso8859_6, + "csisolatingreek": iso8859_7, + "ecma-118": iso8859_7, + "elot_928": iso8859_7, + "greek": iso8859_7, + "greek8": iso8859_7, + "iso-8859-7": iso8859_7, + "iso-ir-126": iso8859_7, + "iso8859-7": iso8859_7, + "iso88597": iso8859_7, + "iso_8859-7": iso8859_7, + "iso_8859-7:1987": iso8859_7, + "sun_eu_greek": iso8859_7, + "csiso88598e": iso8859_8, + "csisolatinhebrew": iso8859_8, + "hebrew": iso8859_8, + "iso-8859-8": iso8859_8, + "iso-8859-8-e": iso8859_8, + "iso-ir-138": iso8859_8, + "iso8859-8": iso8859_8, + "iso88598": iso8859_8, + "iso_8859-8": iso8859_8, + "iso_8859-8:1988": iso8859_8, + "visual": iso8859_8, + "csiso88598i": iso8859_8I, + "iso-8859-8-i": iso8859_8I, + "logical": iso8859_8I, + "csisolatin6": iso8859_10, + "iso-8859-10": iso8859_10, + "iso-ir-157": iso8859_10, + "iso8859-10": iso8859_10, + "iso885910": iso8859_10, + "l6": iso8859_10, + "latin6": iso8859_10, + "iso-8859-13": iso8859_13, + "iso8859-13": iso8859_13, + "iso885913": iso8859_13, + "iso-8859-14": iso8859_14, + "iso8859-14": iso8859_14, + "iso885914": iso8859_14, + "csisolatin9": iso8859_15, + "iso-8859-15": iso8859_15, + "iso8859-15": iso8859_15, + "iso885915": iso8859_15, + "iso_8859-15": iso8859_15, + "l9": iso8859_15, + "iso-8859-16": iso8859_16, + "cskoi8r": koi8r, + "koi": koi8r, + "koi8": koi8r, + "koi8-r": koi8r, + "koi8_r": koi8r, + "koi8-ru": koi8u, + "koi8-u": koi8u, + "csmacintosh": macintosh, + "mac": macintosh, + "macintosh": macintosh, + "x-mac-roman": macintosh, + "dos-874": windows874, + "iso-8859-11": windows874, + "iso8859-11": windows874, + "iso885911": windows874, + "tis-620": windows874, + "windows-874": windows874, + "cp1250": windows1250, + "windows-1250": windows1250, + "x-cp1250": windows1250, + "cp1251": windows1251, + "windows-1251": windows1251, + "x-cp1251": windows1251, + "ansi_x3.4-1968": windows1252, + "ascii": windows1252, + "cp1252": windows1252, + "cp819": windows1252, + "csisolatin1": windows1252, + "ibm819": windows1252, + "iso-8859-1": windows1252, + "iso-ir-100": windows1252, + "iso8859-1": windows1252, + "iso88591": windows1252, + "iso_8859-1": windows1252, + "iso_8859-1:1987": windows1252, + "l1": windows1252, + "latin1": windows1252, + "us-ascii": windows1252, + "windows-1252": windows1252, + "x-cp1252": windows1252, + "cp1253": windows1253, + "windows-1253": windows1253, + "x-cp1253": windows1253, + "cp1254": windows1254, + "csisolatin5": windows1254, + "iso-8859-9": windows1254, + "iso-ir-148": windows1254, + "iso8859-9": windows1254, + "iso88599": windows1254, + "iso_8859-9": windows1254, + "iso_8859-9:1989": windows1254, + "l5": windows1254, + "latin5": windows1254, + "windows-1254": windows1254, + "x-cp1254": windows1254, + "cp1255": windows1255, + "windows-1255": windows1255, + "x-cp1255": windows1255, + "cp1256": windows1256, + "windows-1256": windows1256, + "x-cp1256": windows1256, + "cp1257": windows1257, + "windows-1257": windows1257, + "x-cp1257": windows1257, + "cp1258": windows1258, + "windows-1258": windows1258, + "x-cp1258": windows1258, + "x-mac-cyrillic": macintoshCyrillic, + "x-mac-ukrainian": macintoshCyrillic, + "chinese": gbk, + "csgb2312": gbk, + "csiso58gb231280": gbk, + "gb2312": gbk, + "gb_2312": gbk, + "gb_2312-80": gbk, + "gbk": gbk, + "iso-ir-58": gbk, + "x-gbk": gbk, + "gb18030": gb18030, + "big5": big5, + "big5-hkscs": big5, + "cn-big5": big5, + "csbig5": big5, + "x-x-big5": big5, + "cseucpkdfmtjapanese": eucjp, + "euc-jp": eucjp, + "x-euc-jp": eucjp, + "csiso2022jp": iso2022jp, + "iso-2022-jp": iso2022jp, + "csshiftjis": shiftJIS, + "ms932": shiftJIS, + "ms_kanji": shiftJIS, + "shift-jis": shiftJIS, + "shift_jis": shiftJIS, + "sjis": shiftJIS, + "windows-31j": shiftJIS, + "x-sjis": shiftJIS, + "cseuckr": euckr, + "csksc56011987": euckr, + "euc-kr": euckr, + "iso-ir-149": euckr, + "korean": euckr, + "ks_c_5601-1987": euckr, + "ks_c_5601-1989": euckr, + "ksc5601": euckr, + "ksc_5601": euckr, + "windows-949": euckr, + "csiso2022kr": replacement, + "hz-gb-2312": replacement, + "iso-2022-cn": replacement, + "iso-2022-cn-ext": replacement, + "iso-2022-kr": replacement, + "replacement": replacement, + "unicodefffe": utf16be, + "utf-16be": utf16be, + "csunicode": utf16le, + "iso-10646-ucs-2": utf16le, + "ucs-2": utf16le, + "unicode": utf16le, + "unicodefeff": utf16le, + "utf-16": utf16le, + "utf-16le": utf16le, + "x-user-defined": xUserDefined, +} + +var localeMap = []htmlEncoding{ + windows1252, // und_Latn + windows1256, // ar + windows1251, // ba + windows1251, // be + windows1251, // bg + windows1250, // cs + iso8859_7, // el + windows1257, // et + windows1256, // fa + windows1255, // he + windows1250, // hr + iso8859_2, // hu + shiftJIS, // ja + windows1251, // kk + euckr, // ko + windows1254, // ku + windows1251, // ky + windows1257, // lt + windows1257, // lv + windows1251, // mk + iso8859_2, // pl + windows1251, // ru + windows1251, // sah + windows1250, // sk + iso8859_2, // sl + windows1251, // sr + windows1251, // tg + windows874, // th + windows1254, // tr + windows1251, // tt + windows1251, // uk + windows1258, // vi + gb18030, // zh-hans + big5, // zh-hant +} + +const locales = "und_Latn ar ba be bg cs el et fa he hr hu ja kk ko ku ky lt lv mk pl ru sah sk sl sr tg th tr tt uk vi zh-hans zh-hant" diff --git a/tests/vendor/golang.org/x/text/encoding/internal/identifier/identifier.go b/tests/vendor/golang.org/x/text/encoding/internal/identifier/identifier.go new file mode 100644 index 000000000..5c9b85c28 --- /dev/null +++ b/tests/vendor/golang.org/x/text/encoding/internal/identifier/identifier.go @@ -0,0 +1,81 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:generate go run gen.go + +// Package identifier defines the contract between implementations of Encoding +// and Index by defining identifiers that uniquely identify standardized coded +// character sets (CCS) and character encoding schemes (CES), which we will +// together refer to as encodings, for which Encoding implementations provide +// converters to and from UTF-8. This package is typically only of concern to +// implementers of Indexes and Encodings. +// +// One part of the identifier is the MIB code, which is defined by IANA and +// uniquely identifies a CCS or CES. Each code is associated with data that +// references authorities, official documentation as well as aliases and MIME +// names. +// +// Not all CESs are covered by the IANA registry. The "other" string that is +// returned by ID can be used to identify other character sets or versions of +// existing ones. +// +// It is recommended that each package that provides a set of Encodings provide +// the All and Common variables to reference all supported encodings and +// commonly used subset. This allows Index implementations to include all +// available encodings without explicitly referencing or knowing about them. +package identifier + +// Note: this package is internal, but could be made public if there is a need +// for writing third-party Indexes and Encodings. + +// References: +// - http://source.icu-project.org/repos/icu/icu/trunk/source/data/mappings/convrtrs.txt +// - http://www.iana.org/assignments/character-sets/character-sets.xhtml +// - http://www.iana.org/assignments/ianacharset-mib/ianacharset-mib +// - http://www.ietf.org/rfc/rfc2978.txt +// - https://www.unicode.org/reports/tr22/ +// - http://www.w3.org/TR/encoding/ +// - https://encoding.spec.whatwg.org/ +// - https://encoding.spec.whatwg.org/encodings.json +// - https://tools.ietf.org/html/rfc6657#section-5 + +// Interface can be implemented by Encodings to define the CCS or CES for which +// it implements conversions. +type Interface interface { + // ID returns an encoding identifier. Exactly one of the mib and other + // values should be non-zero. + // + // In the usual case it is only necessary to indicate the MIB code. The + // other string can be used to specify encodings for which there is no MIB, + // such as "x-mac-dingbat". + // + // The other string may only contain the characters a-z, A-Z, 0-9, - and _. + ID() (mib MIB, other string) + + // NOTE: the restrictions on the encoding are to allow extending the syntax + // with additional information such as versions, vendors and other variants. +} + +// A MIB identifies an encoding. It is derived from the IANA MIB codes and adds +// some identifiers for some encodings that are not covered by the IANA +// standard. +// +// See http://www.iana.org/assignments/ianacharset-mib. +type MIB uint16 + +// These additional MIB types are not defined in IANA. They are added because +// they are common and defined within the text repo. +const ( + // Unofficial marks the start of encodings not registered by IANA. + Unofficial MIB = 10000 + iota + + // Replacement is the WhatWG replacement encoding. + Replacement + + // XUserDefined is the code for x-user-defined. + XUserDefined + + // MacintoshCyrillic is the code for x-mac-cyrillic. + MacintoshCyrillic +) diff --git a/tests/vendor/golang.org/x/text/encoding/internal/identifier/mib.go b/tests/vendor/golang.org/x/text/encoding/internal/identifier/mib.go new file mode 100644 index 000000000..351fb86e2 --- /dev/null +++ b/tests/vendor/golang.org/x/text/encoding/internal/identifier/mib.go @@ -0,0 +1,1627 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +package identifier + +const ( + // ASCII is the MIB identifier with IANA name US-ASCII (MIME: US-ASCII). + // + // ANSI X3.4-1986 + // Reference: RFC2046 + ASCII MIB = 3 + + // ISOLatin1 is the MIB identifier with IANA name ISO_8859-1:1987 (MIME: ISO-8859-1). + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISOLatin1 MIB = 4 + + // ISOLatin2 is the MIB identifier with IANA name ISO_8859-2:1987 (MIME: ISO-8859-2). + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISOLatin2 MIB = 5 + + // ISOLatin3 is the MIB identifier with IANA name ISO_8859-3:1988 (MIME: ISO-8859-3). + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISOLatin3 MIB = 6 + + // ISOLatin4 is the MIB identifier with IANA name ISO_8859-4:1988 (MIME: ISO-8859-4). + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISOLatin4 MIB = 7 + + // ISOLatinCyrillic is the MIB identifier with IANA name ISO_8859-5:1988 (MIME: ISO-8859-5). + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISOLatinCyrillic MIB = 8 + + // ISOLatinArabic is the MIB identifier with IANA name ISO_8859-6:1987 (MIME: ISO-8859-6). + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISOLatinArabic MIB = 9 + + // ISOLatinGreek is the MIB identifier with IANA name ISO_8859-7:1987 (MIME: ISO-8859-7). + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1947 + // Reference: RFC1345 + ISOLatinGreek MIB = 10 + + // ISOLatinHebrew is the MIB identifier with IANA name ISO_8859-8:1988 (MIME: ISO-8859-8). + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISOLatinHebrew MIB = 11 + + // ISOLatin5 is the MIB identifier with IANA name ISO_8859-9:1989 (MIME: ISO-8859-9). + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISOLatin5 MIB = 12 + + // ISOLatin6 is the MIB identifier with IANA name ISO-8859-10 (MIME: ISO-8859-10). + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISOLatin6 MIB = 13 + + // ISOTextComm is the MIB identifier with IANA name ISO_6937-2-add. + // + // ISO-IR: International Register of Escape Sequences and ISO 6937-2:1983 + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISOTextComm MIB = 14 + + // HalfWidthKatakana is the MIB identifier with IANA name JIS_X0201. + // + // JIS X 0201-1976. One byte only, this is equivalent to + // JIS/Roman (similar to ASCII) plus eight-bit half-width + // Katakana + // Reference: RFC1345 + HalfWidthKatakana MIB = 15 + + // JISEncoding is the MIB identifier with IANA name JIS_Encoding. + // + // JIS X 0202-1991. Uses ISO 2022 escape sequences to + // shift code sets as documented in JIS X 0202-1991. + JISEncoding MIB = 16 + + // ShiftJIS is the MIB identifier with IANA name Shift_JIS (MIME: Shift_JIS). + // + // This charset is an extension of csHalfWidthKatakana by + // adding graphic characters in JIS X 0208. The CCS's are + // JIS X0201:1997 and JIS X0208:1997. The + // complete definition is shown in Appendix 1 of JIS + // X0208:1997. + // This charset can be used for the top-level media type "text". + ShiftJIS MIB = 17 + + // EUCPkdFmtJapanese is the MIB identifier with IANA name Extended_UNIX_Code_Packed_Format_for_Japanese (MIME: EUC-JP). + // + // Standardized by OSF, UNIX International, and UNIX Systems + // Laboratories Pacific. Uses ISO 2022 rules to select + // code set 0: US-ASCII (a single 7-bit byte set) + // code set 1: JIS X0208-1990 (a double 8-bit byte set) + // restricted to A0-FF in both bytes + // code set 2: Half Width Katakana (a single 7-bit byte set) + // requiring SS2 as the character prefix + // code set 3: JIS X0212-1990 (a double 7-bit byte set) + // restricted to A0-FF in both bytes + // requiring SS3 as the character prefix + EUCPkdFmtJapanese MIB = 18 + + // EUCFixWidJapanese is the MIB identifier with IANA name Extended_UNIX_Code_Fixed_Width_for_Japanese. + // + // Used in Japan. Each character is 2 octets. + // code set 0: US-ASCII (a single 7-bit byte set) + // 1st byte = 00 + // 2nd byte = 20-7E + // code set 1: JIS X0208-1990 (a double 7-bit byte set) + // restricted to A0-FF in both bytes + // code set 2: Half Width Katakana (a single 7-bit byte set) + // 1st byte = 00 + // 2nd byte = A0-FF + // code set 3: JIS X0212-1990 (a double 7-bit byte set) + // restricted to A0-FF in + // the first byte + // and 21-7E in the second byte + EUCFixWidJapanese MIB = 19 + + // ISO4UnitedKingdom is the MIB identifier with IANA name BS_4730. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO4UnitedKingdom MIB = 20 + + // ISO11SwedishForNames is the MIB identifier with IANA name SEN_850200_C. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO11SwedishForNames MIB = 21 + + // ISO15Italian is the MIB identifier with IANA name IT. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO15Italian MIB = 22 + + // ISO17Spanish is the MIB identifier with IANA name ES. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO17Spanish MIB = 23 + + // ISO21German is the MIB identifier with IANA name DIN_66003. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO21German MIB = 24 + + // ISO60Norwegian1 is the MIB identifier with IANA name NS_4551-1. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO60Norwegian1 MIB = 25 + + // ISO69French is the MIB identifier with IANA name NF_Z_62-010. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO69French MIB = 26 + + // ISO10646UTF1 is the MIB identifier with IANA name ISO-10646-UTF-1. + // + // Universal Transfer Format (1), this is the multibyte + // encoding, that subsets ASCII-7. It does not have byte + // ordering issues. + ISO10646UTF1 MIB = 27 + + // ISO646basic1983 is the MIB identifier with IANA name ISO_646.basic:1983. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO646basic1983 MIB = 28 + + // INVARIANT is the MIB identifier with IANA name INVARIANT. + // + // Reference: RFC1345 + INVARIANT MIB = 29 + + // ISO2IntlRefVersion is the MIB identifier with IANA name ISO_646.irv:1983. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO2IntlRefVersion MIB = 30 + + // NATSSEFI is the MIB identifier with IANA name NATS-SEFI. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + NATSSEFI MIB = 31 + + // NATSSEFIADD is the MIB identifier with IANA name NATS-SEFI-ADD. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + NATSSEFIADD MIB = 32 + + // NATSDANO is the MIB identifier with IANA name NATS-DANO. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + NATSDANO MIB = 33 + + // NATSDANOADD is the MIB identifier with IANA name NATS-DANO-ADD. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + NATSDANOADD MIB = 34 + + // ISO10Swedish is the MIB identifier with IANA name SEN_850200_B. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO10Swedish MIB = 35 + + // KSC56011987 is the MIB identifier with IANA name KS_C_5601-1987. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + KSC56011987 MIB = 36 + + // ISO2022KR is the MIB identifier with IANA name ISO-2022-KR (MIME: ISO-2022-KR). + // + // rfc1557 (see also KS_C_5601-1987) + // Reference: RFC1557 + ISO2022KR MIB = 37 + + // EUCKR is the MIB identifier with IANA name EUC-KR (MIME: EUC-KR). + // + // rfc1557 (see also KS_C_5861-1992) + // Reference: RFC1557 + EUCKR MIB = 38 + + // ISO2022JP is the MIB identifier with IANA name ISO-2022-JP (MIME: ISO-2022-JP). + // + // rfc1468 (see also rfc2237 ) + // Reference: RFC1468 + ISO2022JP MIB = 39 + + // ISO2022JP2 is the MIB identifier with IANA name ISO-2022-JP-2 (MIME: ISO-2022-JP-2). + // + // rfc1554 + // Reference: RFC1554 + ISO2022JP2 MIB = 40 + + // ISO13JISC6220jp is the MIB identifier with IANA name JIS_C6220-1969-jp. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO13JISC6220jp MIB = 41 + + // ISO14JISC6220ro is the MIB identifier with IANA name JIS_C6220-1969-ro. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO14JISC6220ro MIB = 42 + + // ISO16Portuguese is the MIB identifier with IANA name PT. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO16Portuguese MIB = 43 + + // ISO18Greek7Old is the MIB identifier with IANA name greek7-old. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO18Greek7Old MIB = 44 + + // ISO19LatinGreek is the MIB identifier with IANA name latin-greek. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO19LatinGreek MIB = 45 + + // ISO25French is the MIB identifier with IANA name NF_Z_62-010_(1973). + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO25French MIB = 46 + + // ISO27LatinGreek1 is the MIB identifier with IANA name Latin-greek-1. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO27LatinGreek1 MIB = 47 + + // ISO5427Cyrillic is the MIB identifier with IANA name ISO_5427. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO5427Cyrillic MIB = 48 + + // ISO42JISC62261978 is the MIB identifier with IANA name JIS_C6226-1978. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO42JISC62261978 MIB = 49 + + // ISO47BSViewdata is the MIB identifier with IANA name BS_viewdata. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO47BSViewdata MIB = 50 + + // ISO49INIS is the MIB identifier with IANA name INIS. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO49INIS MIB = 51 + + // ISO50INIS8 is the MIB identifier with IANA name INIS-8. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO50INIS8 MIB = 52 + + // ISO51INISCyrillic is the MIB identifier with IANA name INIS-cyrillic. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO51INISCyrillic MIB = 53 + + // ISO54271981 is the MIB identifier with IANA name ISO_5427:1981. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO54271981 MIB = 54 + + // ISO5428Greek is the MIB identifier with IANA name ISO_5428:1980. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO5428Greek MIB = 55 + + // ISO57GB1988 is the MIB identifier with IANA name GB_1988-80. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO57GB1988 MIB = 56 + + // ISO58GB231280 is the MIB identifier with IANA name GB_2312-80. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO58GB231280 MIB = 57 + + // ISO61Norwegian2 is the MIB identifier with IANA name NS_4551-2. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO61Norwegian2 MIB = 58 + + // ISO70VideotexSupp1 is the MIB identifier with IANA name videotex-suppl. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO70VideotexSupp1 MIB = 59 + + // ISO84Portuguese2 is the MIB identifier with IANA name PT2. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO84Portuguese2 MIB = 60 + + // ISO85Spanish2 is the MIB identifier with IANA name ES2. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO85Spanish2 MIB = 61 + + // ISO86Hungarian is the MIB identifier with IANA name MSZ_7795.3. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO86Hungarian MIB = 62 + + // ISO87JISX0208 is the MIB identifier with IANA name JIS_C6226-1983. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO87JISX0208 MIB = 63 + + // ISO88Greek7 is the MIB identifier with IANA name greek7. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO88Greek7 MIB = 64 + + // ISO89ASMO449 is the MIB identifier with IANA name ASMO_449. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO89ASMO449 MIB = 65 + + // ISO90 is the MIB identifier with IANA name iso-ir-90. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO90 MIB = 66 + + // ISO91JISC62291984a is the MIB identifier with IANA name JIS_C6229-1984-a. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO91JISC62291984a MIB = 67 + + // ISO92JISC62991984b is the MIB identifier with IANA name JIS_C6229-1984-b. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO92JISC62991984b MIB = 68 + + // ISO93JIS62291984badd is the MIB identifier with IANA name JIS_C6229-1984-b-add. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO93JIS62291984badd MIB = 69 + + // ISO94JIS62291984hand is the MIB identifier with IANA name JIS_C6229-1984-hand. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO94JIS62291984hand MIB = 70 + + // ISO95JIS62291984handadd is the MIB identifier with IANA name JIS_C6229-1984-hand-add. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO95JIS62291984handadd MIB = 71 + + // ISO96JISC62291984kana is the MIB identifier with IANA name JIS_C6229-1984-kana. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO96JISC62291984kana MIB = 72 + + // ISO2033 is the MIB identifier with IANA name ISO_2033-1983. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO2033 MIB = 73 + + // ISO99NAPLPS is the MIB identifier with IANA name ANSI_X3.110-1983. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO99NAPLPS MIB = 74 + + // ISO102T617bit is the MIB identifier with IANA name T.61-7bit. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO102T617bit MIB = 75 + + // ISO103T618bit is the MIB identifier with IANA name T.61-8bit. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO103T618bit MIB = 76 + + // ISO111ECMACyrillic is the MIB identifier with IANA name ECMA-cyrillic. + // + // ISO registry + ISO111ECMACyrillic MIB = 77 + + // ISO121Canadian1 is the MIB identifier with IANA name CSA_Z243.4-1985-1. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO121Canadian1 MIB = 78 + + // ISO122Canadian2 is the MIB identifier with IANA name CSA_Z243.4-1985-2. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO122Canadian2 MIB = 79 + + // ISO123CSAZ24341985gr is the MIB identifier with IANA name CSA_Z243.4-1985-gr. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO123CSAZ24341985gr MIB = 80 + + // ISO88596E is the MIB identifier with IANA name ISO_8859-6-E (MIME: ISO-8859-6-E). + // + // rfc1556 + // Reference: RFC1556 + ISO88596E MIB = 81 + + // ISO88596I is the MIB identifier with IANA name ISO_8859-6-I (MIME: ISO-8859-6-I). + // + // rfc1556 + // Reference: RFC1556 + ISO88596I MIB = 82 + + // ISO128T101G2 is the MIB identifier with IANA name T.101-G2. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO128T101G2 MIB = 83 + + // ISO88598E is the MIB identifier with IANA name ISO_8859-8-E (MIME: ISO-8859-8-E). + // + // rfc1556 + // Reference: RFC1556 + ISO88598E MIB = 84 + + // ISO88598I is the MIB identifier with IANA name ISO_8859-8-I (MIME: ISO-8859-8-I). + // + // rfc1556 + // Reference: RFC1556 + ISO88598I MIB = 85 + + // ISO139CSN369103 is the MIB identifier with IANA name CSN_369103. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO139CSN369103 MIB = 86 + + // ISO141JUSIB1002 is the MIB identifier with IANA name JUS_I.B1.002. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO141JUSIB1002 MIB = 87 + + // ISO143IECP271 is the MIB identifier with IANA name IEC_P27-1. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO143IECP271 MIB = 88 + + // ISO146Serbian is the MIB identifier with IANA name JUS_I.B1.003-serb. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO146Serbian MIB = 89 + + // ISO147Macedonian is the MIB identifier with IANA name JUS_I.B1.003-mac. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO147Macedonian MIB = 90 + + // ISO150GreekCCITT is the MIB identifier with IANA name greek-ccitt. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO150GreekCCITT MIB = 91 + + // ISO151Cuba is the MIB identifier with IANA name NC_NC00-10:81. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO151Cuba MIB = 92 + + // ISO6937Add is the MIB identifier with IANA name ISO_6937-2-25. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO6937Add MIB = 93 + + // ISO153GOST1976874 is the MIB identifier with IANA name GOST_19768-74. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO153GOST1976874 MIB = 94 + + // ISO8859Supp is the MIB identifier with IANA name ISO_8859-supp. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO8859Supp MIB = 95 + + // ISO10367Box is the MIB identifier with IANA name ISO_10367-box. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO10367Box MIB = 96 + + // ISO158Lap is the MIB identifier with IANA name latin-lap. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO158Lap MIB = 97 + + // ISO159JISX02121990 is the MIB identifier with IANA name JIS_X0212-1990. + // + // ISO-IR: International Register of Escape Sequences + // Note: The current registration authority is IPSJ/ITSCJ, Japan. + // Reference: RFC1345 + ISO159JISX02121990 MIB = 98 + + // ISO646Danish is the MIB identifier with IANA name DS_2089. + // + // Danish Standard, DS 2089, February 1974 + // Reference: RFC1345 + ISO646Danish MIB = 99 + + // USDK is the MIB identifier with IANA name us-dk. + // + // Reference: RFC1345 + USDK MIB = 100 + + // DKUS is the MIB identifier with IANA name dk-us. + // + // Reference: RFC1345 + DKUS MIB = 101 + + // KSC5636 is the MIB identifier with IANA name KSC5636. + // + // Reference: RFC1345 + KSC5636 MIB = 102 + + // Unicode11UTF7 is the MIB identifier with IANA name UNICODE-1-1-UTF-7. + // + // rfc1642 + // Reference: RFC1642 + Unicode11UTF7 MIB = 103 + + // ISO2022CN is the MIB identifier with IANA name ISO-2022-CN. + // + // rfc1922 + // Reference: RFC1922 + ISO2022CN MIB = 104 + + // ISO2022CNEXT is the MIB identifier with IANA name ISO-2022-CN-EXT. + // + // rfc1922 + // Reference: RFC1922 + ISO2022CNEXT MIB = 105 + + // UTF8 is the MIB identifier with IANA name UTF-8. + // + // rfc3629 + // Reference: RFC3629 + UTF8 MIB = 106 + + // ISO885913 is the MIB identifier with IANA name ISO-8859-13. + // + // ISO See https://www.iana.org/assignments/charset-reg/ISO-8859-13 https://www.iana.org/assignments/charset-reg/ISO-8859-13 + ISO885913 MIB = 109 + + // ISO885914 is the MIB identifier with IANA name ISO-8859-14. + // + // ISO See https://www.iana.org/assignments/charset-reg/ISO-8859-14 + ISO885914 MIB = 110 + + // ISO885915 is the MIB identifier with IANA name ISO-8859-15. + // + // ISO + // Please see: https://www.iana.org/assignments/charset-reg/ISO-8859-15 + ISO885915 MIB = 111 + + // ISO885916 is the MIB identifier with IANA name ISO-8859-16. + // + // ISO + ISO885916 MIB = 112 + + // GBK is the MIB identifier with IANA name GBK. + // + // Chinese IT Standardization Technical Committee + // Please see: https://www.iana.org/assignments/charset-reg/GBK + GBK MIB = 113 + + // GB18030 is the MIB identifier with IANA name GB18030. + // + // Chinese IT Standardization Technical Committee + // Please see: https://www.iana.org/assignments/charset-reg/GB18030 + GB18030 MIB = 114 + + // OSDEBCDICDF0415 is the MIB identifier with IANA name OSD_EBCDIC_DF04_15. + // + // Fujitsu-Siemens standard mainframe EBCDIC encoding + // Please see: https://www.iana.org/assignments/charset-reg/OSD-EBCDIC-DF04-15 + OSDEBCDICDF0415 MIB = 115 + + // OSDEBCDICDF03IRV is the MIB identifier with IANA name OSD_EBCDIC_DF03_IRV. + // + // Fujitsu-Siemens standard mainframe EBCDIC encoding + // Please see: https://www.iana.org/assignments/charset-reg/OSD-EBCDIC-DF03-IRV + OSDEBCDICDF03IRV MIB = 116 + + // OSDEBCDICDF041 is the MIB identifier with IANA name OSD_EBCDIC_DF04_1. + // + // Fujitsu-Siemens standard mainframe EBCDIC encoding + // Please see: https://www.iana.org/assignments/charset-reg/OSD-EBCDIC-DF04-1 + OSDEBCDICDF041 MIB = 117 + + // ISO115481 is the MIB identifier with IANA name ISO-11548-1. + // + // See https://www.iana.org/assignments/charset-reg/ISO-11548-1 + ISO115481 MIB = 118 + + // KZ1048 is the MIB identifier with IANA name KZ-1048. + // + // See https://www.iana.org/assignments/charset-reg/KZ-1048 + KZ1048 MIB = 119 + + // Unicode is the MIB identifier with IANA name ISO-10646-UCS-2. + // + // the 2-octet Basic Multilingual Plane, aka Unicode + // this needs to specify network byte order: the standard + // does not specify (it is a 16-bit integer space) + Unicode MIB = 1000 + + // UCS4 is the MIB identifier with IANA name ISO-10646-UCS-4. + // + // the full code space. (same comment about byte order, + // these are 31-bit numbers. + UCS4 MIB = 1001 + + // UnicodeASCII is the MIB identifier with IANA name ISO-10646-UCS-Basic. + // + // ASCII subset of Unicode. Basic Latin = collection 1 + // See ISO 10646, Appendix A + UnicodeASCII MIB = 1002 + + // UnicodeLatin1 is the MIB identifier with IANA name ISO-10646-Unicode-Latin1. + // + // ISO Latin-1 subset of Unicode. Basic Latin and Latin-1 + // Supplement = collections 1 and 2. See ISO 10646, + // Appendix A. See rfc1815 . + UnicodeLatin1 MIB = 1003 + + // UnicodeJapanese is the MIB identifier with IANA name ISO-10646-J-1. + // + // ISO 10646 Japanese, see rfc1815 . + UnicodeJapanese MIB = 1004 + + // UnicodeIBM1261 is the MIB identifier with IANA name ISO-Unicode-IBM-1261. + // + // IBM Latin-2, -3, -5, Extended Presentation Set, GCSGID: 1261 + UnicodeIBM1261 MIB = 1005 + + // UnicodeIBM1268 is the MIB identifier with IANA name ISO-Unicode-IBM-1268. + // + // IBM Latin-4 Extended Presentation Set, GCSGID: 1268 + UnicodeIBM1268 MIB = 1006 + + // UnicodeIBM1276 is the MIB identifier with IANA name ISO-Unicode-IBM-1276. + // + // IBM Cyrillic Greek Extended Presentation Set, GCSGID: 1276 + UnicodeIBM1276 MIB = 1007 + + // UnicodeIBM1264 is the MIB identifier with IANA name ISO-Unicode-IBM-1264. + // + // IBM Arabic Presentation Set, GCSGID: 1264 + UnicodeIBM1264 MIB = 1008 + + // UnicodeIBM1265 is the MIB identifier with IANA name ISO-Unicode-IBM-1265. + // + // IBM Hebrew Presentation Set, GCSGID: 1265 + UnicodeIBM1265 MIB = 1009 + + // Unicode11 is the MIB identifier with IANA name UNICODE-1-1. + // + // rfc1641 + // Reference: RFC1641 + Unicode11 MIB = 1010 + + // SCSU is the MIB identifier with IANA name SCSU. + // + // SCSU See https://www.iana.org/assignments/charset-reg/SCSU + SCSU MIB = 1011 + + // UTF7 is the MIB identifier with IANA name UTF-7. + // + // rfc2152 + // Reference: RFC2152 + UTF7 MIB = 1012 + + // UTF16BE is the MIB identifier with IANA name UTF-16BE. + // + // rfc2781 + // Reference: RFC2781 + UTF16BE MIB = 1013 + + // UTF16LE is the MIB identifier with IANA name UTF-16LE. + // + // rfc2781 + // Reference: RFC2781 + UTF16LE MIB = 1014 + + // UTF16 is the MIB identifier with IANA name UTF-16. + // + // rfc2781 + // Reference: RFC2781 + UTF16 MIB = 1015 + + // CESU8 is the MIB identifier with IANA name CESU-8. + // + // https://www.unicode.org/reports/tr26 + CESU8 MIB = 1016 + + // UTF32 is the MIB identifier with IANA name UTF-32. + // + // https://www.unicode.org/reports/tr19/ + UTF32 MIB = 1017 + + // UTF32BE is the MIB identifier with IANA name UTF-32BE. + // + // https://www.unicode.org/reports/tr19/ + UTF32BE MIB = 1018 + + // UTF32LE is the MIB identifier with IANA name UTF-32LE. + // + // https://www.unicode.org/reports/tr19/ + UTF32LE MIB = 1019 + + // BOCU1 is the MIB identifier with IANA name BOCU-1. + // + // https://www.unicode.org/notes/tn6/ + BOCU1 MIB = 1020 + + // UTF7IMAP is the MIB identifier with IANA name UTF-7-IMAP. + // + // Note: This charset is used to encode Unicode in IMAP mailbox names; + // see section 5.1.3 of rfc3501 . It should never be used + // outside this context. A name has been assigned so that charset processing + // implementations can refer to it in a consistent way. + UTF7IMAP MIB = 1021 + + // Windows30Latin1 is the MIB identifier with IANA name ISO-8859-1-Windows-3.0-Latin-1. + // + // Extended ISO 8859-1 Latin-1 for Windows 3.0. + // PCL Symbol Set id: 9U + Windows30Latin1 MIB = 2000 + + // Windows31Latin1 is the MIB identifier with IANA name ISO-8859-1-Windows-3.1-Latin-1. + // + // Extended ISO 8859-1 Latin-1 for Windows 3.1. + // PCL Symbol Set id: 19U + Windows31Latin1 MIB = 2001 + + // Windows31Latin2 is the MIB identifier with IANA name ISO-8859-2-Windows-Latin-2. + // + // Extended ISO 8859-2. Latin-2 for Windows 3.1. + // PCL Symbol Set id: 9E + Windows31Latin2 MIB = 2002 + + // Windows31Latin5 is the MIB identifier with IANA name ISO-8859-9-Windows-Latin-5. + // + // Extended ISO 8859-9. Latin-5 for Windows 3.1 + // PCL Symbol Set id: 5T + Windows31Latin5 MIB = 2003 + + // HPRoman8 is the MIB identifier with IANA name hp-roman8. + // + // LaserJet IIP Printer User's Manual, + // HP part no 33471-90901, Hewlet-Packard, June 1989. + // Reference: RFC1345 + HPRoman8 MIB = 2004 + + // AdobeStandardEncoding is the MIB identifier with IANA name Adobe-Standard-Encoding. + // + // PostScript Language Reference Manual + // PCL Symbol Set id: 10J + AdobeStandardEncoding MIB = 2005 + + // VenturaUS is the MIB identifier with IANA name Ventura-US. + // + // Ventura US. ASCII plus characters typically used in + // publishing, like pilcrow, copyright, registered, trade mark, + // section, dagger, and double dagger in the range A0 (hex) + // to FF (hex). + // PCL Symbol Set id: 14J + VenturaUS MIB = 2006 + + // VenturaInternational is the MIB identifier with IANA name Ventura-International. + // + // Ventura International. ASCII plus coded characters similar + // to Roman8. + // PCL Symbol Set id: 13J + VenturaInternational MIB = 2007 + + // DECMCS is the MIB identifier with IANA name DEC-MCS. + // + // VAX/VMS User's Manual, + // Order Number: AI-Y517A-TE, April 1986. + // Reference: RFC1345 + DECMCS MIB = 2008 + + // PC850Multilingual is the MIB identifier with IANA name IBM850. + // + // IBM NLS RM Vol2 SE09-8002-01, March 1990 + // Reference: RFC1345 + PC850Multilingual MIB = 2009 + + // PC8DanishNorwegian is the MIB identifier with IANA name PC8-Danish-Norwegian. + // + // PC Danish Norwegian + // 8-bit PC set for Danish Norwegian + // PCL Symbol Set id: 11U + PC8DanishNorwegian MIB = 2012 + + // PC862LatinHebrew is the MIB identifier with IANA name IBM862. + // + // IBM NLS RM Vol2 SE09-8002-01, March 1990 + // Reference: RFC1345 + PC862LatinHebrew MIB = 2013 + + // PC8Turkish is the MIB identifier with IANA name PC8-Turkish. + // + // PC Latin Turkish. PCL Symbol Set id: 9T + PC8Turkish MIB = 2014 + + // IBMSymbols is the MIB identifier with IANA name IBM-Symbols. + // + // Presentation Set, CPGID: 259 + IBMSymbols MIB = 2015 + + // IBMThai is the MIB identifier with IANA name IBM-Thai. + // + // Presentation Set, CPGID: 838 + IBMThai MIB = 2016 + + // HPLegal is the MIB identifier with IANA name HP-Legal. + // + // PCL 5 Comparison Guide, Hewlett-Packard, + // HP part number 5961-0510, October 1992 + // PCL Symbol Set id: 1U + HPLegal MIB = 2017 + + // HPPiFont is the MIB identifier with IANA name HP-Pi-font. + // + // PCL 5 Comparison Guide, Hewlett-Packard, + // HP part number 5961-0510, October 1992 + // PCL Symbol Set id: 15U + HPPiFont MIB = 2018 + + // HPMath8 is the MIB identifier with IANA name HP-Math8. + // + // PCL 5 Comparison Guide, Hewlett-Packard, + // HP part number 5961-0510, October 1992 + // PCL Symbol Set id: 8M + HPMath8 MIB = 2019 + + // HPPSMath is the MIB identifier with IANA name Adobe-Symbol-Encoding. + // + // PostScript Language Reference Manual + // PCL Symbol Set id: 5M + HPPSMath MIB = 2020 + + // HPDesktop is the MIB identifier with IANA name HP-DeskTop. + // + // PCL 5 Comparison Guide, Hewlett-Packard, + // HP part number 5961-0510, October 1992 + // PCL Symbol Set id: 7J + HPDesktop MIB = 2021 + + // VenturaMath is the MIB identifier with IANA name Ventura-Math. + // + // PCL 5 Comparison Guide, Hewlett-Packard, + // HP part number 5961-0510, October 1992 + // PCL Symbol Set id: 6M + VenturaMath MIB = 2022 + + // MicrosoftPublishing is the MIB identifier with IANA name Microsoft-Publishing. + // + // PCL 5 Comparison Guide, Hewlett-Packard, + // HP part number 5961-0510, October 1992 + // PCL Symbol Set id: 6J + MicrosoftPublishing MIB = 2023 + + // Windows31J is the MIB identifier with IANA name Windows-31J. + // + // Windows Japanese. A further extension of Shift_JIS + // to include NEC special characters (Row 13), NEC + // selection of IBM extensions (Rows 89 to 92), and IBM + // extensions (Rows 115 to 119). The CCS's are + // JIS X0201:1997, JIS X0208:1997, and these extensions. + // This charset can be used for the top-level media type "text", + // but it is of limited or specialized use (see rfc2278 ). + // PCL Symbol Set id: 19K + Windows31J MIB = 2024 + + // GB2312 is the MIB identifier with IANA name GB2312 (MIME: GB2312). + // + // Chinese for People's Republic of China (PRC) mixed one byte, + // two byte set: + // 20-7E = one byte ASCII + // A1-FE = two byte PRC Kanji + // See GB 2312-80 + // PCL Symbol Set Id: 18C + GB2312 MIB = 2025 + + // Big5 is the MIB identifier with IANA name Big5 (MIME: Big5). + // + // Chinese for Taiwan Multi-byte set. + // PCL Symbol Set Id: 18T + Big5 MIB = 2026 + + // Macintosh is the MIB identifier with IANA name macintosh. + // + // The Unicode Standard ver1.0, ISBN 0-201-56788-1, Oct 1991 + // Reference: RFC1345 + Macintosh MIB = 2027 + + // IBM037 is the MIB identifier with IANA name IBM037. + // + // IBM NLS RM Vol2 SE09-8002-01, March 1990 + // Reference: RFC1345 + IBM037 MIB = 2028 + + // IBM038 is the MIB identifier with IANA name IBM038. + // + // IBM 3174 Character Set Ref, GA27-3831-02, March 1990 + // Reference: RFC1345 + IBM038 MIB = 2029 + + // IBM273 is the MIB identifier with IANA name IBM273. + // + // IBM NLS RM Vol2 SE09-8002-01, March 1990 + // Reference: RFC1345 + IBM273 MIB = 2030 + + // IBM274 is the MIB identifier with IANA name IBM274. + // + // IBM 3174 Character Set Ref, GA27-3831-02, March 1990 + // Reference: RFC1345 + IBM274 MIB = 2031 + + // IBM275 is the MIB identifier with IANA name IBM275. + // + // IBM NLS RM Vol2 SE09-8002-01, March 1990 + // Reference: RFC1345 + IBM275 MIB = 2032 + + // IBM277 is the MIB identifier with IANA name IBM277. + // + // IBM NLS RM Vol2 SE09-8002-01, March 1990 + // Reference: RFC1345 + IBM277 MIB = 2033 + + // IBM278 is the MIB identifier with IANA name IBM278. + // + // IBM NLS RM Vol2 SE09-8002-01, March 1990 + // Reference: RFC1345 + IBM278 MIB = 2034 + + // IBM280 is the MIB identifier with IANA name IBM280. + // + // IBM NLS RM Vol2 SE09-8002-01, March 1990 + // Reference: RFC1345 + IBM280 MIB = 2035 + + // IBM281 is the MIB identifier with IANA name IBM281. + // + // IBM 3174 Character Set Ref, GA27-3831-02, March 1990 + // Reference: RFC1345 + IBM281 MIB = 2036 + + // IBM284 is the MIB identifier with IANA name IBM284. + // + // IBM NLS RM Vol2 SE09-8002-01, March 1990 + // Reference: RFC1345 + IBM284 MIB = 2037 + + // IBM285 is the MIB identifier with IANA name IBM285. + // + // IBM NLS RM Vol2 SE09-8002-01, March 1990 + // Reference: RFC1345 + IBM285 MIB = 2038 + + // IBM290 is the MIB identifier with IANA name IBM290. + // + // IBM 3174 Character Set Ref, GA27-3831-02, March 1990 + // Reference: RFC1345 + IBM290 MIB = 2039 + + // IBM297 is the MIB identifier with IANA name IBM297. + // + // IBM NLS RM Vol2 SE09-8002-01, March 1990 + // Reference: RFC1345 + IBM297 MIB = 2040 + + // IBM420 is the MIB identifier with IANA name IBM420. + // + // IBM NLS RM Vol2 SE09-8002-01, March 1990, + // IBM NLS RM p 11-11 + // Reference: RFC1345 + IBM420 MIB = 2041 + + // IBM423 is the MIB identifier with IANA name IBM423. + // + // IBM NLS RM Vol2 SE09-8002-01, March 1990 + // Reference: RFC1345 + IBM423 MIB = 2042 + + // IBM424 is the MIB identifier with IANA name IBM424. + // + // IBM NLS RM Vol2 SE09-8002-01, March 1990 + // Reference: RFC1345 + IBM424 MIB = 2043 + + // PC8CodePage437 is the MIB identifier with IANA name IBM437. + // + // IBM NLS RM Vol2 SE09-8002-01, March 1990 + // Reference: RFC1345 + PC8CodePage437 MIB = 2011 + + // IBM500 is the MIB identifier with IANA name IBM500. + // + // IBM NLS RM Vol2 SE09-8002-01, March 1990 + // Reference: RFC1345 + IBM500 MIB = 2044 + + // IBM851 is the MIB identifier with IANA name IBM851. + // + // IBM NLS RM Vol2 SE09-8002-01, March 1990 + // Reference: RFC1345 + IBM851 MIB = 2045 + + // PCp852 is the MIB identifier with IANA name IBM852. + // + // IBM NLS RM Vol2 SE09-8002-01, March 1990 + // Reference: RFC1345 + PCp852 MIB = 2010 + + // IBM855 is the MIB identifier with IANA name IBM855. + // + // IBM NLS RM Vol2 SE09-8002-01, March 1990 + // Reference: RFC1345 + IBM855 MIB = 2046 + + // IBM857 is the MIB identifier with IANA name IBM857. + // + // IBM NLS RM Vol2 SE09-8002-01, March 1990 + // Reference: RFC1345 + IBM857 MIB = 2047 + + // IBM860 is the MIB identifier with IANA name IBM860. + // + // IBM NLS RM Vol2 SE09-8002-01, March 1990 + // Reference: RFC1345 + IBM860 MIB = 2048 + + // IBM861 is the MIB identifier with IANA name IBM861. + // + // IBM NLS RM Vol2 SE09-8002-01, March 1990 + // Reference: RFC1345 + IBM861 MIB = 2049 + + // IBM863 is the MIB identifier with IANA name IBM863. + // + // IBM Keyboard layouts and code pages, PN 07G4586 June 1991 + // Reference: RFC1345 + IBM863 MIB = 2050 + + // IBM864 is the MIB identifier with IANA name IBM864. + // + // IBM Keyboard layouts and code pages, PN 07G4586 June 1991 + // Reference: RFC1345 + IBM864 MIB = 2051 + + // IBM865 is the MIB identifier with IANA name IBM865. + // + // IBM DOS 3.3 Ref (Abridged), 94X9575 (Feb 1987) + // Reference: RFC1345 + IBM865 MIB = 2052 + + // IBM868 is the MIB identifier with IANA name IBM868. + // + // IBM NLS RM Vol2 SE09-8002-01, March 1990 + // Reference: RFC1345 + IBM868 MIB = 2053 + + // IBM869 is the MIB identifier with IANA name IBM869. + // + // IBM Keyboard layouts and code pages, PN 07G4586 June 1991 + // Reference: RFC1345 + IBM869 MIB = 2054 + + // IBM870 is the MIB identifier with IANA name IBM870. + // + // IBM NLS RM Vol2 SE09-8002-01, March 1990 + // Reference: RFC1345 + IBM870 MIB = 2055 + + // IBM871 is the MIB identifier with IANA name IBM871. + // + // IBM NLS RM Vol2 SE09-8002-01, March 1990 + // Reference: RFC1345 + IBM871 MIB = 2056 + + // IBM880 is the MIB identifier with IANA name IBM880. + // + // IBM NLS RM Vol2 SE09-8002-01, March 1990 + // Reference: RFC1345 + IBM880 MIB = 2057 + + // IBM891 is the MIB identifier with IANA name IBM891. + // + // IBM NLS RM Vol2 SE09-8002-01, March 1990 + // Reference: RFC1345 + IBM891 MIB = 2058 + + // IBM903 is the MIB identifier with IANA name IBM903. + // + // IBM NLS RM Vol2 SE09-8002-01, March 1990 + // Reference: RFC1345 + IBM903 MIB = 2059 + + // IBBM904 is the MIB identifier with IANA name IBM904. + // + // IBM NLS RM Vol2 SE09-8002-01, March 1990 + // Reference: RFC1345 + IBBM904 MIB = 2060 + + // IBM905 is the MIB identifier with IANA name IBM905. + // + // IBM 3174 Character Set Ref, GA27-3831-02, March 1990 + // Reference: RFC1345 + IBM905 MIB = 2061 + + // IBM918 is the MIB identifier with IANA name IBM918. + // + // IBM NLS RM Vol2 SE09-8002-01, March 1990 + // Reference: RFC1345 + IBM918 MIB = 2062 + + // IBM1026 is the MIB identifier with IANA name IBM1026. + // + // IBM NLS RM Vol2 SE09-8002-01, March 1990 + // Reference: RFC1345 + IBM1026 MIB = 2063 + + // IBMEBCDICATDE is the MIB identifier with IANA name EBCDIC-AT-DE. + // + // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 + // Reference: RFC1345 + IBMEBCDICATDE MIB = 2064 + + // EBCDICATDEA is the MIB identifier with IANA name EBCDIC-AT-DE-A. + // + // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 + // Reference: RFC1345 + EBCDICATDEA MIB = 2065 + + // EBCDICCAFR is the MIB identifier with IANA name EBCDIC-CA-FR. + // + // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 + // Reference: RFC1345 + EBCDICCAFR MIB = 2066 + + // EBCDICDKNO is the MIB identifier with IANA name EBCDIC-DK-NO. + // + // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 + // Reference: RFC1345 + EBCDICDKNO MIB = 2067 + + // EBCDICDKNOA is the MIB identifier with IANA name EBCDIC-DK-NO-A. + // + // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 + // Reference: RFC1345 + EBCDICDKNOA MIB = 2068 + + // EBCDICFISE is the MIB identifier with IANA name EBCDIC-FI-SE. + // + // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 + // Reference: RFC1345 + EBCDICFISE MIB = 2069 + + // EBCDICFISEA is the MIB identifier with IANA name EBCDIC-FI-SE-A. + // + // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 + // Reference: RFC1345 + EBCDICFISEA MIB = 2070 + + // EBCDICFR is the MIB identifier with IANA name EBCDIC-FR. + // + // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 + // Reference: RFC1345 + EBCDICFR MIB = 2071 + + // EBCDICIT is the MIB identifier with IANA name EBCDIC-IT. + // + // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 + // Reference: RFC1345 + EBCDICIT MIB = 2072 + + // EBCDICPT is the MIB identifier with IANA name EBCDIC-PT. + // + // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 + // Reference: RFC1345 + EBCDICPT MIB = 2073 + + // EBCDICES is the MIB identifier with IANA name EBCDIC-ES. + // + // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 + // Reference: RFC1345 + EBCDICES MIB = 2074 + + // EBCDICESA is the MIB identifier with IANA name EBCDIC-ES-A. + // + // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 + // Reference: RFC1345 + EBCDICESA MIB = 2075 + + // EBCDICESS is the MIB identifier with IANA name EBCDIC-ES-S. + // + // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 + // Reference: RFC1345 + EBCDICESS MIB = 2076 + + // EBCDICUK is the MIB identifier with IANA name EBCDIC-UK. + // + // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 + // Reference: RFC1345 + EBCDICUK MIB = 2077 + + // EBCDICUS is the MIB identifier with IANA name EBCDIC-US. + // + // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987 + // Reference: RFC1345 + EBCDICUS MIB = 2078 + + // Unknown8BiT is the MIB identifier with IANA name UNKNOWN-8BIT. + // + // Reference: RFC1428 + Unknown8BiT MIB = 2079 + + // Mnemonic is the MIB identifier with IANA name MNEMONIC. + // + // rfc1345 , also known as "mnemonic+ascii+38" + // Reference: RFC1345 + Mnemonic MIB = 2080 + + // Mnem is the MIB identifier with IANA name MNEM. + // + // rfc1345 , also known as "mnemonic+ascii+8200" + // Reference: RFC1345 + Mnem MIB = 2081 + + // VISCII is the MIB identifier with IANA name VISCII. + // + // rfc1456 + // Reference: RFC1456 + VISCII MIB = 2082 + + // VIQR is the MIB identifier with IANA name VIQR. + // + // rfc1456 + // Reference: RFC1456 + VIQR MIB = 2083 + + // KOI8R is the MIB identifier with IANA name KOI8-R (MIME: KOI8-R). + // + // rfc1489 , based on GOST-19768-74, ISO-6937/8, + // INIS-Cyrillic, ISO-5427. + // Reference: RFC1489 + KOI8R MIB = 2084 + + // HZGB2312 is the MIB identifier with IANA name HZ-GB-2312. + // + // rfc1842 , rfc1843 rfc1843 rfc1842 + HZGB2312 MIB = 2085 + + // IBM866 is the MIB identifier with IANA name IBM866. + // + // IBM NLDG Volume 2 (SE09-8002-03) August 1994 + IBM866 MIB = 2086 + + // PC775Baltic is the MIB identifier with IANA name IBM775. + // + // HP PCL 5 Comparison Guide (P/N 5021-0329) pp B-13, 1996 + PC775Baltic MIB = 2087 + + // KOI8U is the MIB identifier with IANA name KOI8-U. + // + // rfc2319 + // Reference: RFC2319 + KOI8U MIB = 2088 + + // IBM00858 is the MIB identifier with IANA name IBM00858. + // + // IBM See https://www.iana.org/assignments/charset-reg/IBM00858 + IBM00858 MIB = 2089 + + // IBM00924 is the MIB identifier with IANA name IBM00924. + // + // IBM See https://www.iana.org/assignments/charset-reg/IBM00924 + IBM00924 MIB = 2090 + + // IBM01140 is the MIB identifier with IANA name IBM01140. + // + // IBM See https://www.iana.org/assignments/charset-reg/IBM01140 + IBM01140 MIB = 2091 + + // IBM01141 is the MIB identifier with IANA name IBM01141. + // + // IBM See https://www.iana.org/assignments/charset-reg/IBM01141 + IBM01141 MIB = 2092 + + // IBM01142 is the MIB identifier with IANA name IBM01142. + // + // IBM See https://www.iana.org/assignments/charset-reg/IBM01142 + IBM01142 MIB = 2093 + + // IBM01143 is the MIB identifier with IANA name IBM01143. + // + // IBM See https://www.iana.org/assignments/charset-reg/IBM01143 + IBM01143 MIB = 2094 + + // IBM01144 is the MIB identifier with IANA name IBM01144. + // + // IBM See https://www.iana.org/assignments/charset-reg/IBM01144 + IBM01144 MIB = 2095 + + // IBM01145 is the MIB identifier with IANA name IBM01145. + // + // IBM See https://www.iana.org/assignments/charset-reg/IBM01145 + IBM01145 MIB = 2096 + + // IBM01146 is the MIB identifier with IANA name IBM01146. + // + // IBM See https://www.iana.org/assignments/charset-reg/IBM01146 + IBM01146 MIB = 2097 + + // IBM01147 is the MIB identifier with IANA name IBM01147. + // + // IBM See https://www.iana.org/assignments/charset-reg/IBM01147 + IBM01147 MIB = 2098 + + // IBM01148 is the MIB identifier with IANA name IBM01148. + // + // IBM See https://www.iana.org/assignments/charset-reg/IBM01148 + IBM01148 MIB = 2099 + + // IBM01149 is the MIB identifier with IANA name IBM01149. + // + // IBM See https://www.iana.org/assignments/charset-reg/IBM01149 + IBM01149 MIB = 2100 + + // Big5HKSCS is the MIB identifier with IANA name Big5-HKSCS. + // + // See https://www.iana.org/assignments/charset-reg/Big5-HKSCS + Big5HKSCS MIB = 2101 + + // IBM1047 is the MIB identifier with IANA name IBM1047. + // + // IBM1047 (EBCDIC Latin 1/Open Systems) https://www-1.ibm.com/servers/eserver/iseries/software/globalization/pdf/cp01047z.pdf + IBM1047 MIB = 2102 + + // PTCP154 is the MIB identifier with IANA name PTCP154. + // + // See https://www.iana.org/assignments/charset-reg/PTCP154 + PTCP154 MIB = 2103 + + // Amiga1251 is the MIB identifier with IANA name Amiga-1251. + // + // See https://www.amiga.ultranet.ru/Amiga-1251.html + Amiga1251 MIB = 2104 + + // KOI7switched is the MIB identifier with IANA name KOI7-switched. + // + // See https://www.iana.org/assignments/charset-reg/KOI7-switched + KOI7switched MIB = 2105 + + // BRF is the MIB identifier with IANA name BRF. + // + // See https://www.iana.org/assignments/charset-reg/BRF + BRF MIB = 2106 + + // TSCII is the MIB identifier with IANA name TSCII. + // + // See https://www.iana.org/assignments/charset-reg/TSCII + TSCII MIB = 2107 + + // CP51932 is the MIB identifier with IANA name CP51932. + // + // See https://www.iana.org/assignments/charset-reg/CP51932 + CP51932 MIB = 2108 + + // Windows874 is the MIB identifier with IANA name windows-874. + // + // See https://www.iana.org/assignments/charset-reg/windows-874 + Windows874 MIB = 2109 + + // Windows1250 is the MIB identifier with IANA name windows-1250. + // + // Microsoft https://www.iana.org/assignments/charset-reg/windows-1250 + Windows1250 MIB = 2250 + + // Windows1251 is the MIB identifier with IANA name windows-1251. + // + // Microsoft https://www.iana.org/assignments/charset-reg/windows-1251 + Windows1251 MIB = 2251 + + // Windows1252 is the MIB identifier with IANA name windows-1252. + // + // Microsoft https://www.iana.org/assignments/charset-reg/windows-1252 + Windows1252 MIB = 2252 + + // Windows1253 is the MIB identifier with IANA name windows-1253. + // + // Microsoft https://www.iana.org/assignments/charset-reg/windows-1253 + Windows1253 MIB = 2253 + + // Windows1254 is the MIB identifier with IANA name windows-1254. + // + // Microsoft https://www.iana.org/assignments/charset-reg/windows-1254 + Windows1254 MIB = 2254 + + // Windows1255 is the MIB identifier with IANA name windows-1255. + // + // Microsoft https://www.iana.org/assignments/charset-reg/windows-1255 + Windows1255 MIB = 2255 + + // Windows1256 is the MIB identifier with IANA name windows-1256. + // + // Microsoft https://www.iana.org/assignments/charset-reg/windows-1256 + Windows1256 MIB = 2256 + + // Windows1257 is the MIB identifier with IANA name windows-1257. + // + // Microsoft https://www.iana.org/assignments/charset-reg/windows-1257 + Windows1257 MIB = 2257 + + // Windows1258 is the MIB identifier with IANA name windows-1258. + // + // Microsoft https://www.iana.org/assignments/charset-reg/windows-1258 + Windows1258 MIB = 2258 + + // TIS620 is the MIB identifier with IANA name TIS-620. + // + // Thai Industrial Standards Institute (TISI) + TIS620 MIB = 2259 + + // CP50220 is the MIB identifier with IANA name CP50220. + // + // See https://www.iana.org/assignments/charset-reg/CP50220 + CP50220 MIB = 2260 +) diff --git a/tests/vendor/golang.org/x/text/encoding/internal/internal.go b/tests/vendor/golang.org/x/text/encoding/internal/internal.go new file mode 100644 index 000000000..413e6fc6d --- /dev/null +++ b/tests/vendor/golang.org/x/text/encoding/internal/internal.go @@ -0,0 +1,75 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package internal contains code that is shared among encoding implementations. +package internal + +import ( + "golang.org/x/text/encoding" + "golang.org/x/text/encoding/internal/identifier" + "golang.org/x/text/transform" +) + +// Encoding is an implementation of the Encoding interface that adds the String +// and ID methods to an existing encoding. +type Encoding struct { + encoding.Encoding + Name string + MIB identifier.MIB +} + +// _ verifies that Encoding implements identifier.Interface. +var _ identifier.Interface = (*Encoding)(nil) + +func (e *Encoding) String() string { + return e.Name +} + +func (e *Encoding) ID() (mib identifier.MIB, other string) { + return e.MIB, "" +} + +// SimpleEncoding is an Encoding that combines two Transformers. +type SimpleEncoding struct { + Decoder transform.Transformer + Encoder transform.Transformer +} + +func (e *SimpleEncoding) NewDecoder() *encoding.Decoder { + return &encoding.Decoder{Transformer: e.Decoder} +} + +func (e *SimpleEncoding) NewEncoder() *encoding.Encoder { + return &encoding.Encoder{Transformer: e.Encoder} +} + +// FuncEncoding is an Encoding that combines two functions returning a new +// Transformer. +type FuncEncoding struct { + Decoder func() transform.Transformer + Encoder func() transform.Transformer +} + +func (e FuncEncoding) NewDecoder() *encoding.Decoder { + return &encoding.Decoder{Transformer: e.Decoder()} +} + +func (e FuncEncoding) NewEncoder() *encoding.Encoder { + return &encoding.Encoder{Transformer: e.Encoder()} +} + +// A RepertoireError indicates a rune is not in the repertoire of a destination +// encoding. It is associated with an encoding-specific suggested replacement +// byte. +type RepertoireError byte + +// Error implements the error interface. +func (r RepertoireError) Error() string { + return "encoding: rune not supported by encoding." +} + +// Replacement returns the replacement string associated with this error. +func (r RepertoireError) Replacement() byte { return byte(r) } + +var ErrASCIIReplacement = RepertoireError(encoding.ASCIISub) diff --git a/tests/vendor/golang.org/x/text/encoding/japanese/all.go b/tests/vendor/golang.org/x/text/encoding/japanese/all.go new file mode 100644 index 000000000..6cfa8de45 --- /dev/null +++ b/tests/vendor/golang.org/x/text/encoding/japanese/all.go @@ -0,0 +1,12 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package japanese + +import ( + "golang.org/x/text/encoding" +) + +// All is a list of all defined encodings in this package. +var All = []encoding.Encoding{EUCJP, ISO2022JP, ShiftJIS} diff --git a/tests/vendor/golang.org/x/text/encoding/japanese/eucjp.go b/tests/vendor/golang.org/x/text/encoding/japanese/eucjp.go new file mode 100644 index 000000000..79313fa58 --- /dev/null +++ b/tests/vendor/golang.org/x/text/encoding/japanese/eucjp.go @@ -0,0 +1,225 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package japanese + +import ( + "unicode/utf8" + + "golang.org/x/text/encoding" + "golang.org/x/text/encoding/internal" + "golang.org/x/text/encoding/internal/identifier" + "golang.org/x/text/transform" +) + +// EUCJP is the EUC-JP encoding. +var EUCJP encoding.Encoding = &eucJP + +var eucJP = internal.Encoding{ + &internal.SimpleEncoding{eucJPDecoder{}, eucJPEncoder{}}, + "EUC-JP", + identifier.EUCPkdFmtJapanese, +} + +type eucJPDecoder struct{ transform.NopResetter } + +// See https://encoding.spec.whatwg.org/#euc-jp-decoder. +func (eucJPDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + r, size := rune(0), 0 +loop: + for ; nSrc < len(src); nSrc += size { + switch c0 := src[nSrc]; { + case c0 < utf8.RuneSelf: + r, size = rune(c0), 1 + + case c0 == 0x8e: + if nSrc+1 >= len(src) { + if !atEOF { + err = transform.ErrShortSrc + break loop + } + r, size = utf8.RuneError, 1 + break + } + c1 := src[nSrc+1] + switch { + case c1 < 0xa1: + r, size = utf8.RuneError, 1 + case c1 > 0xdf: + r, size = utf8.RuneError, 2 + if c1 == 0xff { + size = 1 + } + default: + r, size = rune(c1)+(0xff61-0xa1), 2 + } + case c0 == 0x8f: + if nSrc+2 >= len(src) { + if !atEOF { + err = transform.ErrShortSrc + break loop + } + r, size = utf8.RuneError, 1 + if p := nSrc + 1; p < len(src) && 0xa1 <= src[p] && src[p] < 0xfe { + size = 2 + } + break + } + c1 := src[nSrc+1] + if c1 < 0xa1 || 0xfe < c1 { + r, size = utf8.RuneError, 1 + break + } + c2 := src[nSrc+2] + if c2 < 0xa1 || 0xfe < c2 { + r, size = utf8.RuneError, 2 + break + } + r, size = utf8.RuneError, 3 + if i := int(c1-0xa1)*94 + int(c2-0xa1); i < len(jis0212Decode) { + r = rune(jis0212Decode[i]) + if r == 0 { + r = utf8.RuneError + } + } + + case 0xa1 <= c0 && c0 <= 0xfe: + if nSrc+1 >= len(src) { + if !atEOF { + err = transform.ErrShortSrc + break loop + } + r, size = utf8.RuneError, 1 + break + } + c1 := src[nSrc+1] + if c1 < 0xa1 || 0xfe < c1 { + r, size = utf8.RuneError, 1 + break + } + r, size = utf8.RuneError, 2 + if i := int(c0-0xa1)*94 + int(c1-0xa1); i < len(jis0208Decode) { + r = rune(jis0208Decode[i]) + if r == 0 { + r = utf8.RuneError + } + } + + default: + r, size = utf8.RuneError, 1 + } + + if nDst+utf8.RuneLen(r) > len(dst) { + err = transform.ErrShortDst + break loop + } + nDst += utf8.EncodeRune(dst[nDst:], r) + } + return nDst, nSrc, err +} + +type eucJPEncoder struct{ transform.NopResetter } + +func (eucJPEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + r, size := rune(0), 0 + for ; nSrc < len(src); nSrc += size { + r = rune(src[nSrc]) + + // Decode a 1-byte rune. + if r < utf8.RuneSelf { + size = 1 + + } else { + // Decode a multi-byte rune. + r, size = utf8.DecodeRune(src[nSrc:]) + if size == 1 { + // All valid runes of size 1 (those below utf8.RuneSelf) were + // handled above. We have invalid UTF-8 or we haven't seen the + // full character yet. + if !atEOF && !utf8.FullRune(src[nSrc:]) { + err = transform.ErrShortSrc + break + } + } + + // func init checks that the switch covers all tables. + switch { + case encode0Low <= r && r < encode0High: + if r = rune(encode0[r-encode0Low]); r != 0 { + goto write2or3 + } + case encode1Low <= r && r < encode1High: + if r = rune(encode1[r-encode1Low]); r != 0 { + goto write2or3 + } + case encode2Low <= r && r < encode2High: + if r = rune(encode2[r-encode2Low]); r != 0 { + goto write2or3 + } + case encode3Low <= r && r < encode3High: + if r = rune(encode3[r-encode3Low]); r != 0 { + goto write2or3 + } + case encode4Low <= r && r < encode4High: + if r = rune(encode4[r-encode4Low]); r != 0 { + goto write2or3 + } + case encode5Low <= r && r < encode5High: + if 0xff61 <= r && r < 0xffa0 { + goto write2 + } + if r = rune(encode5[r-encode5Low]); r != 0 { + goto write2or3 + } + } + err = internal.ErrASCIIReplacement + break + } + + if nDst >= len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst] = uint8(r) + nDst++ + continue + + write2or3: + if r>>tableShift == jis0208 { + if nDst+2 > len(dst) { + err = transform.ErrShortDst + break + } + } else { + if nDst+3 > len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst] = 0x8f + nDst++ + } + dst[nDst+0] = 0xa1 + uint8(r>>codeShift)&codeMask + dst[nDst+1] = 0xa1 + uint8(r)&codeMask + nDst += 2 + continue + + write2: + if nDst+2 > len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst+0] = 0x8e + dst[nDst+1] = uint8(r - (0xff61 - 0xa1)) + nDst += 2 + continue + } + return nDst, nSrc, err +} + +func init() { + // Check that the hard-coded encode switch covers all tables. + if numEncodeTables != 6 { + panic("bad numEncodeTables") + } +} diff --git a/tests/vendor/golang.org/x/text/encoding/japanese/iso2022jp.go b/tests/vendor/golang.org/x/text/encoding/japanese/iso2022jp.go new file mode 100644 index 000000000..613226df5 --- /dev/null +++ b/tests/vendor/golang.org/x/text/encoding/japanese/iso2022jp.go @@ -0,0 +1,299 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package japanese + +import ( + "unicode/utf8" + + "golang.org/x/text/encoding" + "golang.org/x/text/encoding/internal" + "golang.org/x/text/encoding/internal/identifier" + "golang.org/x/text/transform" +) + +// ISO2022JP is the ISO-2022-JP encoding. +var ISO2022JP encoding.Encoding = &iso2022JP + +var iso2022JP = internal.Encoding{ + internal.FuncEncoding{iso2022JPNewDecoder, iso2022JPNewEncoder}, + "ISO-2022-JP", + identifier.ISO2022JP, +} + +func iso2022JPNewDecoder() transform.Transformer { + return new(iso2022JPDecoder) +} + +func iso2022JPNewEncoder() transform.Transformer { + return new(iso2022JPEncoder) +} + +const ( + asciiState = iota + katakanaState + jis0208State + jis0212State +) + +const asciiEsc = 0x1b + +type iso2022JPDecoder int + +func (d *iso2022JPDecoder) Reset() { + *d = asciiState +} + +func (d *iso2022JPDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + r, size := rune(0), 0 + for ; nSrc < len(src); nSrc += size { + c0 := src[nSrc] + if c0 >= utf8.RuneSelf { + r, size = '\ufffd', 1 + goto write + } + + if c0 == asciiEsc { + if nSrc+2 >= len(src) { + if !atEOF { + return nDst, nSrc, transform.ErrShortSrc + } + // TODO: is it correct to only skip 1?? + r, size = '\ufffd', 1 + goto write + } + size = 3 + c1 := src[nSrc+1] + c2 := src[nSrc+2] + switch { + case c1 == '$' && (c2 == '@' || c2 == 'B'): // 0x24 {0x40, 0x42} + *d = jis0208State + continue + case c1 == '$' && c2 == '(': // 0x24 0x28 + if nSrc+3 >= len(src) { + if !atEOF { + return nDst, nSrc, transform.ErrShortSrc + } + r, size = '\ufffd', 1 + goto write + } + size = 4 + if src[nSrc+3] == 'D' { + *d = jis0212State + continue + } + case c1 == '(' && (c2 == 'B' || c2 == 'J'): // 0x28 {0x42, 0x4A} + *d = asciiState + continue + case c1 == '(' && c2 == 'I': // 0x28 0x49 + *d = katakanaState + continue + } + r, size = '\ufffd', 1 + goto write + } + + switch *d { + case asciiState: + r, size = rune(c0), 1 + + case katakanaState: + if c0 < 0x21 || 0x60 <= c0 { + r, size = '\ufffd', 1 + goto write + } + r, size = rune(c0)+(0xff61-0x21), 1 + + default: + if c0 == 0x0a { + *d = asciiState + r, size = rune(c0), 1 + goto write + } + if nSrc+1 >= len(src) { + if !atEOF { + return nDst, nSrc, transform.ErrShortSrc + } + r, size = '\ufffd', 1 + goto write + } + size = 2 + c1 := src[nSrc+1] + i := int(c0-0x21)*94 + int(c1-0x21) + if *d == jis0208State && i < len(jis0208Decode) { + r = rune(jis0208Decode[i]) + } else if *d == jis0212State && i < len(jis0212Decode) { + r = rune(jis0212Decode[i]) + } else { + r = '\ufffd' + goto write + } + if r == 0 { + r = '\ufffd' + } + } + + write: + if nDst+utf8.RuneLen(r) > len(dst) { + return nDst, nSrc, transform.ErrShortDst + } + nDst += utf8.EncodeRune(dst[nDst:], r) + } + return nDst, nSrc, err +} + +type iso2022JPEncoder int + +func (e *iso2022JPEncoder) Reset() { + *e = asciiState +} + +func (e *iso2022JPEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + r, size := rune(0), 0 + for ; nSrc < len(src); nSrc += size { + r = rune(src[nSrc]) + + // Decode a 1-byte rune. + if r < utf8.RuneSelf { + size = 1 + + } else { + // Decode a multi-byte rune. + r, size = utf8.DecodeRune(src[nSrc:]) + if size == 1 { + // All valid runes of size 1 (those below utf8.RuneSelf) were + // handled above. We have invalid UTF-8 or we haven't seen the + // full character yet. + if !atEOF && !utf8.FullRune(src[nSrc:]) { + err = transform.ErrShortSrc + break + } + } + + // func init checks that the switch covers all tables. + // + // http://encoding.spec.whatwg.org/#iso-2022-jp says that "the index jis0212 + // is not used by the iso-2022-jp encoder due to lack of widespread support". + // + // TODO: do we have to special-case U+00A5 and U+203E, as per + // http://encoding.spec.whatwg.org/#iso-2022-jp + // Doing so would mean that "\u00a5" would not be preserved + // after an encode-decode round trip. + switch { + case encode0Low <= r && r < encode0High: + if r = rune(encode0[r-encode0Low]); r>>tableShift == jis0208 { + goto writeJIS + } + case encode1Low <= r && r < encode1High: + if r = rune(encode1[r-encode1Low]); r>>tableShift == jis0208 { + goto writeJIS + } + case encode2Low <= r && r < encode2High: + if r = rune(encode2[r-encode2Low]); r>>tableShift == jis0208 { + goto writeJIS + } + case encode3Low <= r && r < encode3High: + if r = rune(encode3[r-encode3Low]); r>>tableShift == jis0208 { + goto writeJIS + } + case encode4Low <= r && r < encode4High: + if r = rune(encode4[r-encode4Low]); r>>tableShift == jis0208 { + goto writeJIS + } + case encode5Low <= r && r < encode5High: + if 0xff61 <= r && r < 0xffa0 { + goto writeKatakana + } + if r = rune(encode5[r-encode5Low]); r>>tableShift == jis0208 { + goto writeJIS + } + } + + // Switch back to ASCII state in case of error so that an ASCII + // replacement character can be written in the correct state. + if *e != asciiState { + if nDst+3 > len(dst) { + err = transform.ErrShortDst + break + } + *e = asciiState + dst[nDst+0] = asciiEsc + dst[nDst+1] = '(' + dst[nDst+2] = 'B' + nDst += 3 + } + err = internal.ErrASCIIReplacement + break + } + + if *e != asciiState { + if nDst+4 > len(dst) { + err = transform.ErrShortDst + break + } + *e = asciiState + dst[nDst+0] = asciiEsc + dst[nDst+1] = '(' + dst[nDst+2] = 'B' + nDst += 3 + } else if nDst >= len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst] = uint8(r) + nDst++ + continue + + writeJIS: + if *e != jis0208State { + if nDst+5 > len(dst) { + err = transform.ErrShortDst + break + } + *e = jis0208State + dst[nDst+0] = asciiEsc + dst[nDst+1] = '$' + dst[nDst+2] = 'B' + nDst += 3 + } else if nDst+2 > len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst+0] = 0x21 + uint8(r>>codeShift)&codeMask + dst[nDst+1] = 0x21 + uint8(r)&codeMask + nDst += 2 + continue + + writeKatakana: + if *e != katakanaState { + if nDst+4 > len(dst) { + err = transform.ErrShortDst + break + } + *e = katakanaState + dst[nDst+0] = asciiEsc + dst[nDst+1] = '(' + dst[nDst+2] = 'I' + nDst += 3 + } else if nDst >= len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst] = uint8(r - (0xff61 - 0x21)) + nDst++ + continue + } + if atEOF && err == nil && *e != asciiState { + if nDst+3 > len(dst) { + err = transform.ErrShortDst + } else { + *e = asciiState + dst[nDst+0] = asciiEsc + dst[nDst+1] = '(' + dst[nDst+2] = 'B' + nDst += 3 + } + } + return nDst, nSrc, err +} diff --git a/tests/vendor/golang.org/x/text/encoding/japanese/shiftjis.go b/tests/vendor/golang.org/x/text/encoding/japanese/shiftjis.go new file mode 100644 index 000000000..16fd8a6e3 --- /dev/null +++ b/tests/vendor/golang.org/x/text/encoding/japanese/shiftjis.go @@ -0,0 +1,189 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package japanese + +import ( + "unicode/utf8" + + "golang.org/x/text/encoding" + "golang.org/x/text/encoding/internal" + "golang.org/x/text/encoding/internal/identifier" + "golang.org/x/text/transform" +) + +// ShiftJIS is the Shift JIS encoding, also known as Code Page 932 and +// Windows-31J. +var ShiftJIS encoding.Encoding = &shiftJIS + +var shiftJIS = internal.Encoding{ + &internal.SimpleEncoding{shiftJISDecoder{}, shiftJISEncoder{}}, + "Shift JIS", + identifier.ShiftJIS, +} + +type shiftJISDecoder struct{ transform.NopResetter } + +func (shiftJISDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + r, size := rune(0), 0 +loop: + for ; nSrc < len(src); nSrc += size { + switch c0 := src[nSrc]; { + case c0 < utf8.RuneSelf: + r, size = rune(c0), 1 + + case 0xa1 <= c0 && c0 < 0xe0: + r, size = rune(c0)+(0xff61-0xa1), 1 + + case (0x81 <= c0 && c0 < 0xa0) || (0xe0 <= c0 && c0 < 0xfd): + if c0 <= 0x9f { + c0 -= 0x70 + } else { + c0 -= 0xb0 + } + c0 = 2*c0 - 0x21 + + if nSrc+1 >= len(src) { + if !atEOF { + err = transform.ErrShortSrc + break loop + } + r, size = '\ufffd', 1 + goto write + } + c1 := src[nSrc+1] + switch { + case c1 < 0x40: + r, size = '\ufffd', 1 // c1 is ASCII so output on next round + goto write + case c1 < 0x7f: + c0-- + c1 -= 0x40 + case c1 == 0x7f: + r, size = '\ufffd', 1 // c1 is ASCII so output on next round + goto write + case c1 < 0x9f: + c0-- + c1 -= 0x41 + case c1 < 0xfd: + c1 -= 0x9f + default: + r, size = '\ufffd', 2 + goto write + } + r, size = '\ufffd', 2 + if i := int(c0)*94 + int(c1); i < len(jis0208Decode) { + r = rune(jis0208Decode[i]) + if r == 0 { + r = '\ufffd' + } + } + + case c0 == 0x80: + r, size = 0x80, 1 + + default: + r, size = '\ufffd', 1 + } + write: + if nDst+utf8.RuneLen(r) > len(dst) { + err = transform.ErrShortDst + break loop + } + nDst += utf8.EncodeRune(dst[nDst:], r) + } + return nDst, nSrc, err +} + +type shiftJISEncoder struct{ transform.NopResetter } + +func (shiftJISEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + r, size := rune(0), 0 +loop: + for ; nSrc < len(src); nSrc += size { + r = rune(src[nSrc]) + + // Decode a 1-byte rune. + if r < utf8.RuneSelf { + size = 1 + + } else { + // Decode a multi-byte rune. + r, size = utf8.DecodeRune(src[nSrc:]) + if size == 1 { + // All valid runes of size 1 (those below utf8.RuneSelf) were + // handled above. We have invalid UTF-8 or we haven't seen the + // full character yet. + if !atEOF && !utf8.FullRune(src[nSrc:]) { + err = transform.ErrShortSrc + break loop + } + } + + // func init checks that the switch covers all tables. + switch { + case encode0Low <= r && r < encode0High: + if r = rune(encode0[r-encode0Low]); r>>tableShift == jis0208 { + goto write2 + } + case encode1Low <= r && r < encode1High: + if r = rune(encode1[r-encode1Low]); r>>tableShift == jis0208 { + goto write2 + } + case encode2Low <= r && r < encode2High: + if r = rune(encode2[r-encode2Low]); r>>tableShift == jis0208 { + goto write2 + } + case encode3Low <= r && r < encode3High: + if r = rune(encode3[r-encode3Low]); r>>tableShift == jis0208 { + goto write2 + } + case encode4Low <= r && r < encode4High: + if r = rune(encode4[r-encode4Low]); r>>tableShift == jis0208 { + goto write2 + } + case encode5Low <= r && r < encode5High: + if 0xff61 <= r && r < 0xffa0 { + r -= 0xff61 - 0xa1 + goto write1 + } + if r = rune(encode5[r-encode5Low]); r>>tableShift == jis0208 { + goto write2 + } + } + err = internal.ErrASCIIReplacement + break + } + + write1: + if nDst >= len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst] = uint8(r) + nDst++ + continue + + write2: + j1 := uint8(r>>codeShift) & codeMask + j2 := uint8(r) & codeMask + if nDst+2 > len(dst) { + err = transform.ErrShortDst + break loop + } + if j1 <= 61 { + dst[nDst+0] = 129 + j1/2 + } else { + dst[nDst+0] = 193 + j1/2 + } + if j1&1 == 0 { + dst[nDst+1] = j2 + j2/63 + 64 + } else { + dst[nDst+1] = j2 + 159 + } + nDst += 2 + continue + } + return nDst, nSrc, err +} diff --git a/tests/vendor/golang.org/x/text/encoding/japanese/tables.go b/tests/vendor/golang.org/x/text/encoding/japanese/tables.go new file mode 100644 index 000000000..8717b79ae --- /dev/null +++ b/tests/vendor/golang.org/x/text/encoding/japanese/tables.go @@ -0,0 +1,26971 @@ +// generated by go run maketables.go; DO NOT EDIT + +// Package japanese provides Japanese encodings such as EUC-JP and Shift JIS. +package japanese // import "golang.org/x/text/encoding/japanese" + +// jis0208Decode is the decoding table from JIS 0208 code to Unicode. +// It is defined at http://encoding.spec.whatwg.org/index-jis0208.txt +var jis0208Decode = [...]uint16{ + 0: 0x3000, + 1: 0x3001, + 2: 0x3002, + 3: 0xFF0C, + 4: 0xFF0E, + 5: 0x30FB, + 6: 0xFF1A, + 7: 0xFF1B, + 8: 0xFF1F, + 9: 0xFF01, + 10: 0x309B, + 11: 0x309C, + 12: 0x00B4, + 13: 0xFF40, + 14: 0x00A8, + 15: 0xFF3E, + 16: 0xFFE3, + 17: 0xFF3F, + 18: 0x30FD, + 19: 0x30FE, + 20: 0x309D, + 21: 0x309E, + 22: 0x3003, + 23: 0x4EDD, + 24: 0x3005, + 25: 0x3006, + 26: 0x3007, + 27: 0x30FC, + 28: 0x2015, + 29: 0x2010, + 30: 0xFF0F, + 31: 0xFF3C, + 32: 0xFF5E, + 33: 0x2225, + 34: 0xFF5C, + 35: 0x2026, + 36: 0x2025, + 37: 0x2018, + 38: 0x2019, + 39: 0x201C, + 40: 0x201D, + 41: 0xFF08, + 42: 0xFF09, + 43: 0x3014, + 44: 0x3015, + 45: 0xFF3B, + 46: 0xFF3D, + 47: 0xFF5B, + 48: 0xFF5D, + 49: 0x3008, + 50: 0x3009, + 51: 0x300A, + 52: 0x300B, + 53: 0x300C, + 54: 0x300D, + 55: 0x300E, + 56: 0x300F, + 57: 0x3010, + 58: 0x3011, + 59: 0xFF0B, + 60: 0xFF0D, + 61: 0x00B1, + 62: 0x00D7, + 63: 0x00F7, + 64: 0xFF1D, + 65: 0x2260, + 66: 0xFF1C, + 67: 0xFF1E, + 68: 0x2266, + 69: 0x2267, + 70: 0x221E, + 71: 0x2234, + 72: 0x2642, + 73: 0x2640, + 74: 0x00B0, + 75: 0x2032, + 76: 0x2033, + 77: 0x2103, + 78: 0xFFE5, + 79: 0xFF04, + 80: 0xFFE0, + 81: 0xFFE1, + 82: 0xFF05, + 83: 0xFF03, + 84: 0xFF06, + 85: 0xFF0A, + 86: 0xFF20, + 87: 0x00A7, + 88: 0x2606, + 89: 0x2605, + 90: 0x25CB, + 91: 0x25CF, + 92: 0x25CE, + 93: 0x25C7, + 94: 0x25C6, + 95: 0x25A1, + 96: 0x25A0, + 97: 0x25B3, + 98: 0x25B2, + 99: 0x25BD, + 100: 0x25BC, + 101: 0x203B, + 102: 0x3012, + 103: 0x2192, + 104: 0x2190, + 105: 0x2191, + 106: 0x2193, + 107: 0x3013, + 119: 0x2208, + 120: 0x220B, + 121: 0x2286, + 122: 0x2287, + 123: 0x2282, + 124: 0x2283, + 125: 0x222A, + 126: 0x2229, + 135: 0x2227, + 136: 0x2228, + 137: 0xFFE2, + 138: 0x21D2, + 139: 0x21D4, + 140: 0x2200, + 141: 0x2203, + 153: 0x2220, + 154: 0x22A5, + 155: 0x2312, + 156: 0x2202, + 157: 0x2207, + 158: 0x2261, + 159: 0x2252, + 160: 0x226A, + 161: 0x226B, + 162: 0x221A, + 163: 0x223D, + 164: 0x221D, + 165: 0x2235, + 166: 0x222B, + 167: 0x222C, + 175: 0x212B, + 176: 0x2030, + 177: 0x266F, + 178: 0x266D, + 179: 0x266A, + 180: 0x2020, + 181: 0x2021, + 182: 0x00B6, + 187: 0x25EF, + 203: 0xFF10, + 204: 0xFF11, + 205: 0xFF12, + 206: 0xFF13, + 207: 0xFF14, + 208: 0xFF15, + 209: 0xFF16, + 210: 0xFF17, + 211: 0xFF18, + 212: 0xFF19, + 220: 0xFF21, + 221: 0xFF22, + 222: 0xFF23, + 223: 0xFF24, + 224: 0xFF25, + 225: 0xFF26, + 226: 0xFF27, + 227: 0xFF28, + 228: 0xFF29, + 229: 0xFF2A, + 230: 0xFF2B, + 231: 0xFF2C, + 232: 0xFF2D, + 233: 0xFF2E, + 234: 0xFF2F, + 235: 0xFF30, + 236: 0xFF31, + 237: 0xFF32, + 238: 0xFF33, + 239: 0xFF34, + 240: 0xFF35, + 241: 0xFF36, + 242: 0xFF37, + 243: 0xFF38, + 244: 0xFF39, + 245: 0xFF3A, + 252: 0xFF41, + 253: 0xFF42, + 254: 0xFF43, + 255: 0xFF44, + 256: 0xFF45, + 257: 0xFF46, + 258: 0xFF47, + 259: 0xFF48, + 260: 0xFF49, + 261: 0xFF4A, + 262: 0xFF4B, + 263: 0xFF4C, + 264: 0xFF4D, + 265: 0xFF4E, + 266: 0xFF4F, + 267: 0xFF50, + 268: 0xFF51, + 269: 0xFF52, + 270: 0xFF53, + 271: 0xFF54, + 272: 0xFF55, + 273: 0xFF56, + 274: 0xFF57, + 275: 0xFF58, + 276: 0xFF59, + 277: 0xFF5A, + 282: 0x3041, + 283: 0x3042, + 284: 0x3043, + 285: 0x3044, + 286: 0x3045, + 287: 0x3046, + 288: 0x3047, + 289: 0x3048, + 290: 0x3049, + 291: 0x304A, + 292: 0x304B, + 293: 0x304C, + 294: 0x304D, + 295: 0x304E, + 296: 0x304F, + 297: 0x3050, + 298: 0x3051, + 299: 0x3052, + 300: 0x3053, + 301: 0x3054, + 302: 0x3055, + 303: 0x3056, + 304: 0x3057, + 305: 0x3058, + 306: 0x3059, + 307: 0x305A, + 308: 0x305B, + 309: 0x305C, + 310: 0x305D, + 311: 0x305E, + 312: 0x305F, + 313: 0x3060, + 314: 0x3061, + 315: 0x3062, + 316: 0x3063, + 317: 0x3064, + 318: 0x3065, + 319: 0x3066, + 320: 0x3067, + 321: 0x3068, + 322: 0x3069, + 323: 0x306A, + 324: 0x306B, + 325: 0x306C, + 326: 0x306D, + 327: 0x306E, + 328: 0x306F, + 329: 0x3070, + 330: 0x3071, + 331: 0x3072, + 332: 0x3073, + 333: 0x3074, + 334: 0x3075, + 335: 0x3076, + 336: 0x3077, + 337: 0x3078, + 338: 0x3079, + 339: 0x307A, + 340: 0x307B, + 341: 0x307C, + 342: 0x307D, + 343: 0x307E, + 344: 0x307F, + 345: 0x3080, + 346: 0x3081, + 347: 0x3082, + 348: 0x3083, + 349: 0x3084, + 350: 0x3085, + 351: 0x3086, + 352: 0x3087, + 353: 0x3088, + 354: 0x3089, + 355: 0x308A, + 356: 0x308B, + 357: 0x308C, + 358: 0x308D, + 359: 0x308E, + 360: 0x308F, + 361: 0x3090, + 362: 0x3091, + 363: 0x3092, + 364: 0x3093, + 376: 0x30A1, + 377: 0x30A2, + 378: 0x30A3, + 379: 0x30A4, + 380: 0x30A5, + 381: 0x30A6, + 382: 0x30A7, + 383: 0x30A8, + 384: 0x30A9, + 385: 0x30AA, + 386: 0x30AB, + 387: 0x30AC, + 388: 0x30AD, + 389: 0x30AE, + 390: 0x30AF, + 391: 0x30B0, + 392: 0x30B1, + 393: 0x30B2, + 394: 0x30B3, + 395: 0x30B4, + 396: 0x30B5, + 397: 0x30B6, + 398: 0x30B7, + 399: 0x30B8, + 400: 0x30B9, + 401: 0x30BA, + 402: 0x30BB, + 403: 0x30BC, + 404: 0x30BD, + 405: 0x30BE, + 406: 0x30BF, + 407: 0x30C0, + 408: 0x30C1, + 409: 0x30C2, + 410: 0x30C3, + 411: 0x30C4, + 412: 0x30C5, + 413: 0x30C6, + 414: 0x30C7, + 415: 0x30C8, + 416: 0x30C9, + 417: 0x30CA, + 418: 0x30CB, + 419: 0x30CC, + 420: 0x30CD, + 421: 0x30CE, + 422: 0x30CF, + 423: 0x30D0, + 424: 0x30D1, + 425: 0x30D2, + 426: 0x30D3, + 427: 0x30D4, + 428: 0x30D5, + 429: 0x30D6, + 430: 0x30D7, + 431: 0x30D8, + 432: 0x30D9, + 433: 0x30DA, + 434: 0x30DB, + 435: 0x30DC, + 436: 0x30DD, + 437: 0x30DE, + 438: 0x30DF, + 439: 0x30E0, + 440: 0x30E1, + 441: 0x30E2, + 442: 0x30E3, + 443: 0x30E4, + 444: 0x30E5, + 445: 0x30E6, + 446: 0x30E7, + 447: 0x30E8, + 448: 0x30E9, + 449: 0x30EA, + 450: 0x30EB, + 451: 0x30EC, + 452: 0x30ED, + 453: 0x30EE, + 454: 0x30EF, + 455: 0x30F0, + 456: 0x30F1, + 457: 0x30F2, + 458: 0x30F3, + 459: 0x30F4, + 460: 0x30F5, + 461: 0x30F6, + 470: 0x0391, + 471: 0x0392, + 472: 0x0393, + 473: 0x0394, + 474: 0x0395, + 475: 0x0396, + 476: 0x0397, + 477: 0x0398, + 478: 0x0399, + 479: 0x039A, + 480: 0x039B, + 481: 0x039C, + 482: 0x039D, + 483: 0x039E, + 484: 0x039F, + 485: 0x03A0, + 486: 0x03A1, + 487: 0x03A3, + 488: 0x03A4, + 489: 0x03A5, + 490: 0x03A6, + 491: 0x03A7, + 492: 0x03A8, + 493: 0x03A9, + 502: 0x03B1, + 503: 0x03B2, + 504: 0x03B3, + 505: 0x03B4, + 506: 0x03B5, + 507: 0x03B6, + 508: 0x03B7, + 509: 0x03B8, + 510: 0x03B9, + 511: 0x03BA, + 512: 0x03BB, + 513: 0x03BC, + 514: 0x03BD, + 515: 0x03BE, + 516: 0x03BF, + 517: 0x03C0, + 518: 0x03C1, + 519: 0x03C3, + 520: 0x03C4, + 521: 0x03C5, + 522: 0x03C6, + 523: 0x03C7, + 524: 0x03C8, + 525: 0x03C9, + 564: 0x0410, + 565: 0x0411, + 566: 0x0412, + 567: 0x0413, + 568: 0x0414, + 569: 0x0415, + 570: 0x0401, + 571: 0x0416, + 572: 0x0417, + 573: 0x0418, + 574: 0x0419, + 575: 0x041A, + 576: 0x041B, + 577: 0x041C, + 578: 0x041D, + 579: 0x041E, + 580: 0x041F, + 581: 0x0420, + 582: 0x0421, + 583: 0x0422, + 584: 0x0423, + 585: 0x0424, + 586: 0x0425, + 587: 0x0426, + 588: 0x0427, + 589: 0x0428, + 590: 0x0429, + 591: 0x042A, + 592: 0x042B, + 593: 0x042C, + 594: 0x042D, + 595: 0x042E, + 596: 0x042F, + 612: 0x0430, + 613: 0x0431, + 614: 0x0432, + 615: 0x0433, + 616: 0x0434, + 617: 0x0435, + 618: 0x0451, + 619: 0x0436, + 620: 0x0437, + 621: 0x0438, + 622: 0x0439, + 623: 0x043A, + 624: 0x043B, + 625: 0x043C, + 626: 0x043D, + 627: 0x043E, + 628: 0x043F, + 629: 0x0440, + 630: 0x0441, + 631: 0x0442, + 632: 0x0443, + 633: 0x0444, + 634: 0x0445, + 635: 0x0446, + 636: 0x0447, + 637: 0x0448, + 638: 0x0449, + 639: 0x044A, + 640: 0x044B, + 641: 0x044C, + 642: 0x044D, + 643: 0x044E, + 644: 0x044F, + 658: 0x2500, + 659: 0x2502, + 660: 0x250C, + 661: 0x2510, + 662: 0x2518, + 663: 0x2514, + 664: 0x251C, + 665: 0x252C, + 666: 0x2524, + 667: 0x2534, + 668: 0x253C, + 669: 0x2501, + 670: 0x2503, + 671: 0x250F, + 672: 0x2513, + 673: 0x251B, + 674: 0x2517, + 675: 0x2523, + 676: 0x2533, + 677: 0x252B, + 678: 0x253B, + 679: 0x254B, + 680: 0x2520, + 681: 0x252F, + 682: 0x2528, + 683: 0x2537, + 684: 0x253F, + 685: 0x251D, + 686: 0x2530, + 687: 0x2525, + 688: 0x2538, + 689: 0x2542, + 1128: 0x2460, + 1129: 0x2461, + 1130: 0x2462, + 1131: 0x2463, + 1132: 0x2464, + 1133: 0x2465, + 1134: 0x2466, + 1135: 0x2467, + 1136: 0x2468, + 1137: 0x2469, + 1138: 0x246A, + 1139: 0x246B, + 1140: 0x246C, + 1141: 0x246D, + 1142: 0x246E, + 1143: 0x246F, + 1144: 0x2470, + 1145: 0x2471, + 1146: 0x2472, + 1147: 0x2473, + 1148: 0x2160, + 1149: 0x2161, + 1150: 0x2162, + 1151: 0x2163, + 1152: 0x2164, + 1153: 0x2165, + 1154: 0x2166, + 1155: 0x2167, + 1156: 0x2168, + 1157: 0x2169, + 1159: 0x3349, + 1160: 0x3314, + 1161: 0x3322, + 1162: 0x334D, + 1163: 0x3318, + 1164: 0x3327, + 1165: 0x3303, + 1166: 0x3336, + 1167: 0x3351, + 1168: 0x3357, + 1169: 0x330D, + 1170: 0x3326, + 1171: 0x3323, + 1172: 0x332B, + 1173: 0x334A, + 1174: 0x333B, + 1175: 0x339C, + 1176: 0x339D, + 1177: 0x339E, + 1178: 0x338E, + 1179: 0x338F, + 1180: 0x33C4, + 1181: 0x33A1, + 1190: 0x337B, + 1191: 0x301D, + 1192: 0x301F, + 1193: 0x2116, + 1194: 0x33CD, + 1195: 0x2121, + 1196: 0x32A4, + 1197: 0x32A5, + 1198: 0x32A6, + 1199: 0x32A7, + 1200: 0x32A8, + 1201: 0x3231, + 1202: 0x3232, + 1203: 0x3239, + 1204: 0x337E, + 1205: 0x337D, + 1206: 0x337C, + 1207: 0x2252, + 1208: 0x2261, + 1209: 0x222B, + 1210: 0x222E, + 1211: 0x2211, + 1212: 0x221A, + 1213: 0x22A5, + 1214: 0x2220, + 1215: 0x221F, + 1216: 0x22BF, + 1217: 0x2235, + 1218: 0x2229, + 1219: 0x222A, + 1410: 0x4E9C, + 1411: 0x5516, + 1412: 0x5A03, + 1413: 0x963F, + 1414: 0x54C0, + 1415: 0x611B, + 1416: 0x6328, + 1417: 0x59F6, + 1418: 0x9022, + 1419: 0x8475, + 1420: 0x831C, + 1421: 0x7A50, + 1422: 0x60AA, + 1423: 0x63E1, + 1424: 0x6E25, + 1425: 0x65ED, + 1426: 0x8466, + 1427: 0x82A6, + 1428: 0x9BF5, + 1429: 0x6893, + 1430: 0x5727, + 1431: 0x65A1, + 1432: 0x6271, + 1433: 0x5B9B, + 1434: 0x59D0, + 1435: 0x867B, + 1436: 0x98F4, + 1437: 0x7D62, + 1438: 0x7DBE, + 1439: 0x9B8E, + 1440: 0x6216, + 1441: 0x7C9F, + 1442: 0x88B7, + 1443: 0x5B89, + 1444: 0x5EB5, + 1445: 0x6309, + 1446: 0x6697, + 1447: 0x6848, + 1448: 0x95C7, + 1449: 0x978D, + 1450: 0x674F, + 1451: 0x4EE5, + 1452: 0x4F0A, + 1453: 0x4F4D, + 1454: 0x4F9D, + 1455: 0x5049, + 1456: 0x56F2, + 1457: 0x5937, + 1458: 0x59D4, + 1459: 0x5A01, + 1460: 0x5C09, + 1461: 0x60DF, + 1462: 0x610F, + 1463: 0x6170, + 1464: 0x6613, + 1465: 0x6905, + 1466: 0x70BA, + 1467: 0x754F, + 1468: 0x7570, + 1469: 0x79FB, + 1470: 0x7DAD, + 1471: 0x7DEF, + 1472: 0x80C3, + 1473: 0x840E, + 1474: 0x8863, + 1475: 0x8B02, + 1476: 0x9055, + 1477: 0x907A, + 1478: 0x533B, + 1479: 0x4E95, + 1480: 0x4EA5, + 1481: 0x57DF, + 1482: 0x80B2, + 1483: 0x90C1, + 1484: 0x78EF, + 1485: 0x4E00, + 1486: 0x58F1, + 1487: 0x6EA2, + 1488: 0x9038, + 1489: 0x7A32, + 1490: 0x8328, + 1491: 0x828B, + 1492: 0x9C2F, + 1493: 0x5141, + 1494: 0x5370, + 1495: 0x54BD, + 1496: 0x54E1, + 1497: 0x56E0, + 1498: 0x59FB, + 1499: 0x5F15, + 1500: 0x98F2, + 1501: 0x6DEB, + 1502: 0x80E4, + 1503: 0x852D, + 1504: 0x9662, + 1505: 0x9670, + 1506: 0x96A0, + 1507: 0x97FB, + 1508: 0x540B, + 1509: 0x53F3, + 1510: 0x5B87, + 1511: 0x70CF, + 1512: 0x7FBD, + 1513: 0x8FC2, + 1514: 0x96E8, + 1515: 0x536F, + 1516: 0x9D5C, + 1517: 0x7ABA, + 1518: 0x4E11, + 1519: 0x7893, + 1520: 0x81FC, + 1521: 0x6E26, + 1522: 0x5618, + 1523: 0x5504, + 1524: 0x6B1D, + 1525: 0x851A, + 1526: 0x9C3B, + 1527: 0x59E5, + 1528: 0x53A9, + 1529: 0x6D66, + 1530: 0x74DC, + 1531: 0x958F, + 1532: 0x5642, + 1533: 0x4E91, + 1534: 0x904B, + 1535: 0x96F2, + 1536: 0x834F, + 1537: 0x990C, + 1538: 0x53E1, + 1539: 0x55B6, + 1540: 0x5B30, + 1541: 0x5F71, + 1542: 0x6620, + 1543: 0x66F3, + 1544: 0x6804, + 1545: 0x6C38, + 1546: 0x6CF3, + 1547: 0x6D29, + 1548: 0x745B, + 1549: 0x76C8, + 1550: 0x7A4E, + 1551: 0x9834, + 1552: 0x82F1, + 1553: 0x885B, + 1554: 0x8A60, + 1555: 0x92ED, + 1556: 0x6DB2, + 1557: 0x75AB, + 1558: 0x76CA, + 1559: 0x99C5, + 1560: 0x60A6, + 1561: 0x8B01, + 1562: 0x8D8A, + 1563: 0x95B2, + 1564: 0x698E, + 1565: 0x53AD, + 1566: 0x5186, + 1567: 0x5712, + 1568: 0x5830, + 1569: 0x5944, + 1570: 0x5BB4, + 1571: 0x5EF6, + 1572: 0x6028, + 1573: 0x63A9, + 1574: 0x63F4, + 1575: 0x6CBF, + 1576: 0x6F14, + 1577: 0x708E, + 1578: 0x7114, + 1579: 0x7159, + 1580: 0x71D5, + 1581: 0x733F, + 1582: 0x7E01, + 1583: 0x8276, + 1584: 0x82D1, + 1585: 0x8597, + 1586: 0x9060, + 1587: 0x925B, + 1588: 0x9D1B, + 1589: 0x5869, + 1590: 0x65BC, + 1591: 0x6C5A, + 1592: 0x7525, + 1593: 0x51F9, + 1594: 0x592E, + 1595: 0x5965, + 1596: 0x5F80, + 1597: 0x5FDC, + 1598: 0x62BC, + 1599: 0x65FA, + 1600: 0x6A2A, + 1601: 0x6B27, + 1602: 0x6BB4, + 1603: 0x738B, + 1604: 0x7FC1, + 1605: 0x8956, + 1606: 0x9D2C, + 1607: 0x9D0E, + 1608: 0x9EC4, + 1609: 0x5CA1, + 1610: 0x6C96, + 1611: 0x837B, + 1612: 0x5104, + 1613: 0x5C4B, + 1614: 0x61B6, + 1615: 0x81C6, + 1616: 0x6876, + 1617: 0x7261, + 1618: 0x4E59, + 1619: 0x4FFA, + 1620: 0x5378, + 1621: 0x6069, + 1622: 0x6E29, + 1623: 0x7A4F, + 1624: 0x97F3, + 1625: 0x4E0B, + 1626: 0x5316, + 1627: 0x4EEE, + 1628: 0x4F55, + 1629: 0x4F3D, + 1630: 0x4FA1, + 1631: 0x4F73, + 1632: 0x52A0, + 1633: 0x53EF, + 1634: 0x5609, + 1635: 0x590F, + 1636: 0x5AC1, + 1637: 0x5BB6, + 1638: 0x5BE1, + 1639: 0x79D1, + 1640: 0x6687, + 1641: 0x679C, + 1642: 0x67B6, + 1643: 0x6B4C, + 1644: 0x6CB3, + 1645: 0x706B, + 1646: 0x73C2, + 1647: 0x798D, + 1648: 0x79BE, + 1649: 0x7A3C, + 1650: 0x7B87, + 1651: 0x82B1, + 1652: 0x82DB, + 1653: 0x8304, + 1654: 0x8377, + 1655: 0x83EF, + 1656: 0x83D3, + 1657: 0x8766, + 1658: 0x8AB2, + 1659: 0x5629, + 1660: 0x8CA8, + 1661: 0x8FE6, + 1662: 0x904E, + 1663: 0x971E, + 1664: 0x868A, + 1665: 0x4FC4, + 1666: 0x5CE8, + 1667: 0x6211, + 1668: 0x7259, + 1669: 0x753B, + 1670: 0x81E5, + 1671: 0x82BD, + 1672: 0x86FE, + 1673: 0x8CC0, + 1674: 0x96C5, + 1675: 0x9913, + 1676: 0x99D5, + 1677: 0x4ECB, + 1678: 0x4F1A, + 1679: 0x89E3, + 1680: 0x56DE, + 1681: 0x584A, + 1682: 0x58CA, + 1683: 0x5EFB, + 1684: 0x5FEB, + 1685: 0x602A, + 1686: 0x6094, + 1687: 0x6062, + 1688: 0x61D0, + 1689: 0x6212, + 1690: 0x62D0, + 1691: 0x6539, + 1692: 0x9B41, + 1693: 0x6666, + 1694: 0x68B0, + 1695: 0x6D77, + 1696: 0x7070, + 1697: 0x754C, + 1698: 0x7686, + 1699: 0x7D75, + 1700: 0x82A5, + 1701: 0x87F9, + 1702: 0x958B, + 1703: 0x968E, + 1704: 0x8C9D, + 1705: 0x51F1, + 1706: 0x52BE, + 1707: 0x5916, + 1708: 0x54B3, + 1709: 0x5BB3, + 1710: 0x5D16, + 1711: 0x6168, + 1712: 0x6982, + 1713: 0x6DAF, + 1714: 0x788D, + 1715: 0x84CB, + 1716: 0x8857, + 1717: 0x8A72, + 1718: 0x93A7, + 1719: 0x9AB8, + 1720: 0x6D6C, + 1721: 0x99A8, + 1722: 0x86D9, + 1723: 0x57A3, + 1724: 0x67FF, + 1725: 0x86CE, + 1726: 0x920E, + 1727: 0x5283, + 1728: 0x5687, + 1729: 0x5404, + 1730: 0x5ED3, + 1731: 0x62E1, + 1732: 0x64B9, + 1733: 0x683C, + 1734: 0x6838, + 1735: 0x6BBB, + 1736: 0x7372, + 1737: 0x78BA, + 1738: 0x7A6B, + 1739: 0x899A, + 1740: 0x89D2, + 1741: 0x8D6B, + 1742: 0x8F03, + 1743: 0x90ED, + 1744: 0x95A3, + 1745: 0x9694, + 1746: 0x9769, + 1747: 0x5B66, + 1748: 0x5CB3, + 1749: 0x697D, + 1750: 0x984D, + 1751: 0x984E, + 1752: 0x639B, + 1753: 0x7B20, + 1754: 0x6A2B, + 1755: 0x6A7F, + 1756: 0x68B6, + 1757: 0x9C0D, + 1758: 0x6F5F, + 1759: 0x5272, + 1760: 0x559D, + 1761: 0x6070, + 1762: 0x62EC, + 1763: 0x6D3B, + 1764: 0x6E07, + 1765: 0x6ED1, + 1766: 0x845B, + 1767: 0x8910, + 1768: 0x8F44, + 1769: 0x4E14, + 1770: 0x9C39, + 1771: 0x53F6, + 1772: 0x691B, + 1773: 0x6A3A, + 1774: 0x9784, + 1775: 0x682A, + 1776: 0x515C, + 1777: 0x7AC3, + 1778: 0x84B2, + 1779: 0x91DC, + 1780: 0x938C, + 1781: 0x565B, + 1782: 0x9D28, + 1783: 0x6822, + 1784: 0x8305, + 1785: 0x8431, + 1786: 0x7CA5, + 1787: 0x5208, + 1788: 0x82C5, + 1789: 0x74E6, + 1790: 0x4E7E, + 1791: 0x4F83, + 1792: 0x51A0, + 1793: 0x5BD2, + 1794: 0x520A, + 1795: 0x52D8, + 1796: 0x52E7, + 1797: 0x5DFB, + 1798: 0x559A, + 1799: 0x582A, + 1800: 0x59E6, + 1801: 0x5B8C, + 1802: 0x5B98, + 1803: 0x5BDB, + 1804: 0x5E72, + 1805: 0x5E79, + 1806: 0x60A3, + 1807: 0x611F, + 1808: 0x6163, + 1809: 0x61BE, + 1810: 0x63DB, + 1811: 0x6562, + 1812: 0x67D1, + 1813: 0x6853, + 1814: 0x68FA, + 1815: 0x6B3E, + 1816: 0x6B53, + 1817: 0x6C57, + 1818: 0x6F22, + 1819: 0x6F97, + 1820: 0x6F45, + 1821: 0x74B0, + 1822: 0x7518, + 1823: 0x76E3, + 1824: 0x770B, + 1825: 0x7AFF, + 1826: 0x7BA1, + 1827: 0x7C21, + 1828: 0x7DE9, + 1829: 0x7F36, + 1830: 0x7FF0, + 1831: 0x809D, + 1832: 0x8266, + 1833: 0x839E, + 1834: 0x89B3, + 1835: 0x8ACC, + 1836: 0x8CAB, + 1837: 0x9084, + 1838: 0x9451, + 1839: 0x9593, + 1840: 0x9591, + 1841: 0x95A2, + 1842: 0x9665, + 1843: 0x97D3, + 1844: 0x9928, + 1845: 0x8218, + 1846: 0x4E38, + 1847: 0x542B, + 1848: 0x5CB8, + 1849: 0x5DCC, + 1850: 0x73A9, + 1851: 0x764C, + 1852: 0x773C, + 1853: 0x5CA9, + 1854: 0x7FEB, + 1855: 0x8D0B, + 1856: 0x96C1, + 1857: 0x9811, + 1858: 0x9854, + 1859: 0x9858, + 1860: 0x4F01, + 1861: 0x4F0E, + 1862: 0x5371, + 1863: 0x559C, + 1864: 0x5668, + 1865: 0x57FA, + 1866: 0x5947, + 1867: 0x5B09, + 1868: 0x5BC4, + 1869: 0x5C90, + 1870: 0x5E0C, + 1871: 0x5E7E, + 1872: 0x5FCC, + 1873: 0x63EE, + 1874: 0x673A, + 1875: 0x65D7, + 1876: 0x65E2, + 1877: 0x671F, + 1878: 0x68CB, + 1879: 0x68C4, + 1880: 0x6A5F, + 1881: 0x5E30, + 1882: 0x6BC5, + 1883: 0x6C17, + 1884: 0x6C7D, + 1885: 0x757F, + 1886: 0x7948, + 1887: 0x5B63, + 1888: 0x7A00, + 1889: 0x7D00, + 1890: 0x5FBD, + 1891: 0x898F, + 1892: 0x8A18, + 1893: 0x8CB4, + 1894: 0x8D77, + 1895: 0x8ECC, + 1896: 0x8F1D, + 1897: 0x98E2, + 1898: 0x9A0E, + 1899: 0x9B3C, + 1900: 0x4E80, + 1901: 0x507D, + 1902: 0x5100, + 1903: 0x5993, + 1904: 0x5B9C, + 1905: 0x622F, + 1906: 0x6280, + 1907: 0x64EC, + 1908: 0x6B3A, + 1909: 0x72A0, + 1910: 0x7591, + 1911: 0x7947, + 1912: 0x7FA9, + 1913: 0x87FB, + 1914: 0x8ABC, + 1915: 0x8B70, + 1916: 0x63AC, + 1917: 0x83CA, + 1918: 0x97A0, + 1919: 0x5409, + 1920: 0x5403, + 1921: 0x55AB, + 1922: 0x6854, + 1923: 0x6A58, + 1924: 0x8A70, + 1925: 0x7827, + 1926: 0x6775, + 1927: 0x9ECD, + 1928: 0x5374, + 1929: 0x5BA2, + 1930: 0x811A, + 1931: 0x8650, + 1932: 0x9006, + 1933: 0x4E18, + 1934: 0x4E45, + 1935: 0x4EC7, + 1936: 0x4F11, + 1937: 0x53CA, + 1938: 0x5438, + 1939: 0x5BAE, + 1940: 0x5F13, + 1941: 0x6025, + 1942: 0x6551, + 1943: 0x673D, + 1944: 0x6C42, + 1945: 0x6C72, + 1946: 0x6CE3, + 1947: 0x7078, + 1948: 0x7403, + 1949: 0x7A76, + 1950: 0x7AAE, + 1951: 0x7B08, + 1952: 0x7D1A, + 1953: 0x7CFE, + 1954: 0x7D66, + 1955: 0x65E7, + 1956: 0x725B, + 1957: 0x53BB, + 1958: 0x5C45, + 1959: 0x5DE8, + 1960: 0x62D2, + 1961: 0x62E0, + 1962: 0x6319, + 1963: 0x6E20, + 1964: 0x865A, + 1965: 0x8A31, + 1966: 0x8DDD, + 1967: 0x92F8, + 1968: 0x6F01, + 1969: 0x79A6, + 1970: 0x9B5A, + 1971: 0x4EA8, + 1972: 0x4EAB, + 1973: 0x4EAC, + 1974: 0x4F9B, + 1975: 0x4FA0, + 1976: 0x50D1, + 1977: 0x5147, + 1978: 0x7AF6, + 1979: 0x5171, + 1980: 0x51F6, + 1981: 0x5354, + 1982: 0x5321, + 1983: 0x537F, + 1984: 0x53EB, + 1985: 0x55AC, + 1986: 0x5883, + 1987: 0x5CE1, + 1988: 0x5F37, + 1989: 0x5F4A, + 1990: 0x602F, + 1991: 0x6050, + 1992: 0x606D, + 1993: 0x631F, + 1994: 0x6559, + 1995: 0x6A4B, + 1996: 0x6CC1, + 1997: 0x72C2, + 1998: 0x72ED, + 1999: 0x77EF, + 2000: 0x80F8, + 2001: 0x8105, + 2002: 0x8208, + 2003: 0x854E, + 2004: 0x90F7, + 2005: 0x93E1, + 2006: 0x97FF, + 2007: 0x9957, + 2008: 0x9A5A, + 2009: 0x4EF0, + 2010: 0x51DD, + 2011: 0x5C2D, + 2012: 0x6681, + 2013: 0x696D, + 2014: 0x5C40, + 2015: 0x66F2, + 2016: 0x6975, + 2017: 0x7389, + 2018: 0x6850, + 2019: 0x7C81, + 2020: 0x50C5, + 2021: 0x52E4, + 2022: 0x5747, + 2023: 0x5DFE, + 2024: 0x9326, + 2025: 0x65A4, + 2026: 0x6B23, + 2027: 0x6B3D, + 2028: 0x7434, + 2029: 0x7981, + 2030: 0x79BD, + 2031: 0x7B4B, + 2032: 0x7DCA, + 2033: 0x82B9, + 2034: 0x83CC, + 2035: 0x887F, + 2036: 0x895F, + 2037: 0x8B39, + 2038: 0x8FD1, + 2039: 0x91D1, + 2040: 0x541F, + 2041: 0x9280, + 2042: 0x4E5D, + 2043: 0x5036, + 2044: 0x53E5, + 2045: 0x533A, + 2046: 0x72D7, + 2047: 0x7396, + 2048: 0x77E9, + 2049: 0x82E6, + 2050: 0x8EAF, + 2051: 0x99C6, + 2052: 0x99C8, + 2053: 0x99D2, + 2054: 0x5177, + 2055: 0x611A, + 2056: 0x865E, + 2057: 0x55B0, + 2058: 0x7A7A, + 2059: 0x5076, + 2060: 0x5BD3, + 2061: 0x9047, + 2062: 0x9685, + 2063: 0x4E32, + 2064: 0x6ADB, + 2065: 0x91E7, + 2066: 0x5C51, + 2067: 0x5C48, + 2068: 0x6398, + 2069: 0x7A9F, + 2070: 0x6C93, + 2071: 0x9774, + 2072: 0x8F61, + 2073: 0x7AAA, + 2074: 0x718A, + 2075: 0x9688, + 2076: 0x7C82, + 2077: 0x6817, + 2078: 0x7E70, + 2079: 0x6851, + 2080: 0x936C, + 2081: 0x52F2, + 2082: 0x541B, + 2083: 0x85AB, + 2084: 0x8A13, + 2085: 0x7FA4, + 2086: 0x8ECD, + 2087: 0x90E1, + 2088: 0x5366, + 2089: 0x8888, + 2090: 0x7941, + 2091: 0x4FC2, + 2092: 0x50BE, + 2093: 0x5211, + 2094: 0x5144, + 2095: 0x5553, + 2096: 0x572D, + 2097: 0x73EA, + 2098: 0x578B, + 2099: 0x5951, + 2100: 0x5F62, + 2101: 0x5F84, + 2102: 0x6075, + 2103: 0x6176, + 2104: 0x6167, + 2105: 0x61A9, + 2106: 0x63B2, + 2107: 0x643A, + 2108: 0x656C, + 2109: 0x666F, + 2110: 0x6842, + 2111: 0x6E13, + 2112: 0x7566, + 2113: 0x7A3D, + 2114: 0x7CFB, + 2115: 0x7D4C, + 2116: 0x7D99, + 2117: 0x7E4B, + 2118: 0x7F6B, + 2119: 0x830E, + 2120: 0x834A, + 2121: 0x86CD, + 2122: 0x8A08, + 2123: 0x8A63, + 2124: 0x8B66, + 2125: 0x8EFD, + 2126: 0x981A, + 2127: 0x9D8F, + 2128: 0x82B8, + 2129: 0x8FCE, + 2130: 0x9BE8, + 2131: 0x5287, + 2132: 0x621F, + 2133: 0x6483, + 2134: 0x6FC0, + 2135: 0x9699, + 2136: 0x6841, + 2137: 0x5091, + 2138: 0x6B20, + 2139: 0x6C7A, + 2140: 0x6F54, + 2141: 0x7A74, + 2142: 0x7D50, + 2143: 0x8840, + 2144: 0x8A23, + 2145: 0x6708, + 2146: 0x4EF6, + 2147: 0x5039, + 2148: 0x5026, + 2149: 0x5065, + 2150: 0x517C, + 2151: 0x5238, + 2152: 0x5263, + 2153: 0x55A7, + 2154: 0x570F, + 2155: 0x5805, + 2156: 0x5ACC, + 2157: 0x5EFA, + 2158: 0x61B2, + 2159: 0x61F8, + 2160: 0x62F3, + 2161: 0x6372, + 2162: 0x691C, + 2163: 0x6A29, + 2164: 0x727D, + 2165: 0x72AC, + 2166: 0x732E, + 2167: 0x7814, + 2168: 0x786F, + 2169: 0x7D79, + 2170: 0x770C, + 2171: 0x80A9, + 2172: 0x898B, + 2173: 0x8B19, + 2174: 0x8CE2, + 2175: 0x8ED2, + 2176: 0x9063, + 2177: 0x9375, + 2178: 0x967A, + 2179: 0x9855, + 2180: 0x9A13, + 2181: 0x9E78, + 2182: 0x5143, + 2183: 0x539F, + 2184: 0x53B3, + 2185: 0x5E7B, + 2186: 0x5F26, + 2187: 0x6E1B, + 2188: 0x6E90, + 2189: 0x7384, + 2190: 0x73FE, + 2191: 0x7D43, + 2192: 0x8237, + 2193: 0x8A00, + 2194: 0x8AFA, + 2195: 0x9650, + 2196: 0x4E4E, + 2197: 0x500B, + 2198: 0x53E4, + 2199: 0x547C, + 2200: 0x56FA, + 2201: 0x59D1, + 2202: 0x5B64, + 2203: 0x5DF1, + 2204: 0x5EAB, + 2205: 0x5F27, + 2206: 0x6238, + 2207: 0x6545, + 2208: 0x67AF, + 2209: 0x6E56, + 2210: 0x72D0, + 2211: 0x7CCA, + 2212: 0x88B4, + 2213: 0x80A1, + 2214: 0x80E1, + 2215: 0x83F0, + 2216: 0x864E, + 2217: 0x8A87, + 2218: 0x8DE8, + 2219: 0x9237, + 2220: 0x96C7, + 2221: 0x9867, + 2222: 0x9F13, + 2223: 0x4E94, + 2224: 0x4E92, + 2225: 0x4F0D, + 2226: 0x5348, + 2227: 0x5449, + 2228: 0x543E, + 2229: 0x5A2F, + 2230: 0x5F8C, + 2231: 0x5FA1, + 2232: 0x609F, + 2233: 0x68A7, + 2234: 0x6A8E, + 2235: 0x745A, + 2236: 0x7881, + 2237: 0x8A9E, + 2238: 0x8AA4, + 2239: 0x8B77, + 2240: 0x9190, + 2241: 0x4E5E, + 2242: 0x9BC9, + 2243: 0x4EA4, + 2244: 0x4F7C, + 2245: 0x4FAF, + 2246: 0x5019, + 2247: 0x5016, + 2248: 0x5149, + 2249: 0x516C, + 2250: 0x529F, + 2251: 0x52B9, + 2252: 0x52FE, + 2253: 0x539A, + 2254: 0x53E3, + 2255: 0x5411, + 2256: 0x540E, + 2257: 0x5589, + 2258: 0x5751, + 2259: 0x57A2, + 2260: 0x597D, + 2261: 0x5B54, + 2262: 0x5B5D, + 2263: 0x5B8F, + 2264: 0x5DE5, + 2265: 0x5DE7, + 2266: 0x5DF7, + 2267: 0x5E78, + 2268: 0x5E83, + 2269: 0x5E9A, + 2270: 0x5EB7, + 2271: 0x5F18, + 2272: 0x6052, + 2273: 0x614C, + 2274: 0x6297, + 2275: 0x62D8, + 2276: 0x63A7, + 2277: 0x653B, + 2278: 0x6602, + 2279: 0x6643, + 2280: 0x66F4, + 2281: 0x676D, + 2282: 0x6821, + 2283: 0x6897, + 2284: 0x69CB, + 2285: 0x6C5F, + 2286: 0x6D2A, + 2287: 0x6D69, + 2288: 0x6E2F, + 2289: 0x6E9D, + 2290: 0x7532, + 2291: 0x7687, + 2292: 0x786C, + 2293: 0x7A3F, + 2294: 0x7CE0, + 2295: 0x7D05, + 2296: 0x7D18, + 2297: 0x7D5E, + 2298: 0x7DB1, + 2299: 0x8015, + 2300: 0x8003, + 2301: 0x80AF, + 2302: 0x80B1, + 2303: 0x8154, + 2304: 0x818F, + 2305: 0x822A, + 2306: 0x8352, + 2307: 0x884C, + 2308: 0x8861, + 2309: 0x8B1B, + 2310: 0x8CA2, + 2311: 0x8CFC, + 2312: 0x90CA, + 2313: 0x9175, + 2314: 0x9271, + 2315: 0x783F, + 2316: 0x92FC, + 2317: 0x95A4, + 2318: 0x964D, + 2319: 0x9805, + 2320: 0x9999, + 2321: 0x9AD8, + 2322: 0x9D3B, + 2323: 0x525B, + 2324: 0x52AB, + 2325: 0x53F7, + 2326: 0x5408, + 2327: 0x58D5, + 2328: 0x62F7, + 2329: 0x6FE0, + 2330: 0x8C6A, + 2331: 0x8F5F, + 2332: 0x9EB9, + 2333: 0x514B, + 2334: 0x523B, + 2335: 0x544A, + 2336: 0x56FD, + 2337: 0x7A40, + 2338: 0x9177, + 2339: 0x9D60, + 2340: 0x9ED2, + 2341: 0x7344, + 2342: 0x6F09, + 2343: 0x8170, + 2344: 0x7511, + 2345: 0x5FFD, + 2346: 0x60DA, + 2347: 0x9AA8, + 2348: 0x72DB, + 2349: 0x8FBC, + 2350: 0x6B64, + 2351: 0x9803, + 2352: 0x4ECA, + 2353: 0x56F0, + 2354: 0x5764, + 2355: 0x58BE, + 2356: 0x5A5A, + 2357: 0x6068, + 2358: 0x61C7, + 2359: 0x660F, + 2360: 0x6606, + 2361: 0x6839, + 2362: 0x68B1, + 2363: 0x6DF7, + 2364: 0x75D5, + 2365: 0x7D3A, + 2366: 0x826E, + 2367: 0x9B42, + 2368: 0x4E9B, + 2369: 0x4F50, + 2370: 0x53C9, + 2371: 0x5506, + 2372: 0x5D6F, + 2373: 0x5DE6, + 2374: 0x5DEE, + 2375: 0x67FB, + 2376: 0x6C99, + 2377: 0x7473, + 2378: 0x7802, + 2379: 0x8A50, + 2380: 0x9396, + 2381: 0x88DF, + 2382: 0x5750, + 2383: 0x5EA7, + 2384: 0x632B, + 2385: 0x50B5, + 2386: 0x50AC, + 2387: 0x518D, + 2388: 0x6700, + 2389: 0x54C9, + 2390: 0x585E, + 2391: 0x59BB, + 2392: 0x5BB0, + 2393: 0x5F69, + 2394: 0x624D, + 2395: 0x63A1, + 2396: 0x683D, + 2397: 0x6B73, + 2398: 0x6E08, + 2399: 0x707D, + 2400: 0x91C7, + 2401: 0x7280, + 2402: 0x7815, + 2403: 0x7826, + 2404: 0x796D, + 2405: 0x658E, + 2406: 0x7D30, + 2407: 0x83DC, + 2408: 0x88C1, + 2409: 0x8F09, + 2410: 0x969B, + 2411: 0x5264, + 2412: 0x5728, + 2413: 0x6750, + 2414: 0x7F6A, + 2415: 0x8CA1, + 2416: 0x51B4, + 2417: 0x5742, + 2418: 0x962A, + 2419: 0x583A, + 2420: 0x698A, + 2421: 0x80B4, + 2422: 0x54B2, + 2423: 0x5D0E, + 2424: 0x57FC, + 2425: 0x7895, + 2426: 0x9DFA, + 2427: 0x4F5C, + 2428: 0x524A, + 2429: 0x548B, + 2430: 0x643E, + 2431: 0x6628, + 2432: 0x6714, + 2433: 0x67F5, + 2434: 0x7A84, + 2435: 0x7B56, + 2436: 0x7D22, + 2437: 0x932F, + 2438: 0x685C, + 2439: 0x9BAD, + 2440: 0x7B39, + 2441: 0x5319, + 2442: 0x518A, + 2443: 0x5237, + 2444: 0x5BDF, + 2445: 0x62F6, + 2446: 0x64AE, + 2447: 0x64E6, + 2448: 0x672D, + 2449: 0x6BBA, + 2450: 0x85A9, + 2451: 0x96D1, + 2452: 0x7690, + 2453: 0x9BD6, + 2454: 0x634C, + 2455: 0x9306, + 2456: 0x9BAB, + 2457: 0x76BF, + 2458: 0x6652, + 2459: 0x4E09, + 2460: 0x5098, + 2461: 0x53C2, + 2462: 0x5C71, + 2463: 0x60E8, + 2464: 0x6492, + 2465: 0x6563, + 2466: 0x685F, + 2467: 0x71E6, + 2468: 0x73CA, + 2469: 0x7523, + 2470: 0x7B97, + 2471: 0x7E82, + 2472: 0x8695, + 2473: 0x8B83, + 2474: 0x8CDB, + 2475: 0x9178, + 2476: 0x9910, + 2477: 0x65AC, + 2478: 0x66AB, + 2479: 0x6B8B, + 2480: 0x4ED5, + 2481: 0x4ED4, + 2482: 0x4F3A, + 2483: 0x4F7F, + 2484: 0x523A, + 2485: 0x53F8, + 2486: 0x53F2, + 2487: 0x55E3, + 2488: 0x56DB, + 2489: 0x58EB, + 2490: 0x59CB, + 2491: 0x59C9, + 2492: 0x59FF, + 2493: 0x5B50, + 2494: 0x5C4D, + 2495: 0x5E02, + 2496: 0x5E2B, + 2497: 0x5FD7, + 2498: 0x601D, + 2499: 0x6307, + 2500: 0x652F, + 2501: 0x5B5C, + 2502: 0x65AF, + 2503: 0x65BD, + 2504: 0x65E8, + 2505: 0x679D, + 2506: 0x6B62, + 2507: 0x6B7B, + 2508: 0x6C0F, + 2509: 0x7345, + 2510: 0x7949, + 2511: 0x79C1, + 2512: 0x7CF8, + 2513: 0x7D19, + 2514: 0x7D2B, + 2515: 0x80A2, + 2516: 0x8102, + 2517: 0x81F3, + 2518: 0x8996, + 2519: 0x8A5E, + 2520: 0x8A69, + 2521: 0x8A66, + 2522: 0x8A8C, + 2523: 0x8AEE, + 2524: 0x8CC7, + 2525: 0x8CDC, + 2526: 0x96CC, + 2527: 0x98FC, + 2528: 0x6B6F, + 2529: 0x4E8B, + 2530: 0x4F3C, + 2531: 0x4F8D, + 2532: 0x5150, + 2533: 0x5B57, + 2534: 0x5BFA, + 2535: 0x6148, + 2536: 0x6301, + 2537: 0x6642, + 2538: 0x6B21, + 2539: 0x6ECB, + 2540: 0x6CBB, + 2541: 0x723E, + 2542: 0x74BD, + 2543: 0x75D4, + 2544: 0x78C1, + 2545: 0x793A, + 2546: 0x800C, + 2547: 0x8033, + 2548: 0x81EA, + 2549: 0x8494, + 2550: 0x8F9E, + 2551: 0x6C50, + 2552: 0x9E7F, + 2553: 0x5F0F, + 2554: 0x8B58, + 2555: 0x9D2B, + 2556: 0x7AFA, + 2557: 0x8EF8, + 2558: 0x5B8D, + 2559: 0x96EB, + 2560: 0x4E03, + 2561: 0x53F1, + 2562: 0x57F7, + 2563: 0x5931, + 2564: 0x5AC9, + 2565: 0x5BA4, + 2566: 0x6089, + 2567: 0x6E7F, + 2568: 0x6F06, + 2569: 0x75BE, + 2570: 0x8CEA, + 2571: 0x5B9F, + 2572: 0x8500, + 2573: 0x7BE0, + 2574: 0x5072, + 2575: 0x67F4, + 2576: 0x829D, + 2577: 0x5C61, + 2578: 0x854A, + 2579: 0x7E1E, + 2580: 0x820E, + 2581: 0x5199, + 2582: 0x5C04, + 2583: 0x6368, + 2584: 0x8D66, + 2585: 0x659C, + 2586: 0x716E, + 2587: 0x793E, + 2588: 0x7D17, + 2589: 0x8005, + 2590: 0x8B1D, + 2591: 0x8ECA, + 2592: 0x906E, + 2593: 0x86C7, + 2594: 0x90AA, + 2595: 0x501F, + 2596: 0x52FA, + 2597: 0x5C3A, + 2598: 0x6753, + 2599: 0x707C, + 2600: 0x7235, + 2601: 0x914C, + 2602: 0x91C8, + 2603: 0x932B, + 2604: 0x82E5, + 2605: 0x5BC2, + 2606: 0x5F31, + 2607: 0x60F9, + 2608: 0x4E3B, + 2609: 0x53D6, + 2610: 0x5B88, + 2611: 0x624B, + 2612: 0x6731, + 2613: 0x6B8A, + 2614: 0x72E9, + 2615: 0x73E0, + 2616: 0x7A2E, + 2617: 0x816B, + 2618: 0x8DA3, + 2619: 0x9152, + 2620: 0x9996, + 2621: 0x5112, + 2622: 0x53D7, + 2623: 0x546A, + 2624: 0x5BFF, + 2625: 0x6388, + 2626: 0x6A39, + 2627: 0x7DAC, + 2628: 0x9700, + 2629: 0x56DA, + 2630: 0x53CE, + 2631: 0x5468, + 2632: 0x5B97, + 2633: 0x5C31, + 2634: 0x5DDE, + 2635: 0x4FEE, + 2636: 0x6101, + 2637: 0x62FE, + 2638: 0x6D32, + 2639: 0x79C0, + 2640: 0x79CB, + 2641: 0x7D42, + 2642: 0x7E4D, + 2643: 0x7FD2, + 2644: 0x81ED, + 2645: 0x821F, + 2646: 0x8490, + 2647: 0x8846, + 2648: 0x8972, + 2649: 0x8B90, + 2650: 0x8E74, + 2651: 0x8F2F, + 2652: 0x9031, + 2653: 0x914B, + 2654: 0x916C, + 2655: 0x96C6, + 2656: 0x919C, + 2657: 0x4EC0, + 2658: 0x4F4F, + 2659: 0x5145, + 2660: 0x5341, + 2661: 0x5F93, + 2662: 0x620E, + 2663: 0x67D4, + 2664: 0x6C41, + 2665: 0x6E0B, + 2666: 0x7363, + 2667: 0x7E26, + 2668: 0x91CD, + 2669: 0x9283, + 2670: 0x53D4, + 2671: 0x5919, + 2672: 0x5BBF, + 2673: 0x6DD1, + 2674: 0x795D, + 2675: 0x7E2E, + 2676: 0x7C9B, + 2677: 0x587E, + 2678: 0x719F, + 2679: 0x51FA, + 2680: 0x8853, + 2681: 0x8FF0, + 2682: 0x4FCA, + 2683: 0x5CFB, + 2684: 0x6625, + 2685: 0x77AC, + 2686: 0x7AE3, + 2687: 0x821C, + 2688: 0x99FF, + 2689: 0x51C6, + 2690: 0x5FAA, + 2691: 0x65EC, + 2692: 0x696F, + 2693: 0x6B89, + 2694: 0x6DF3, + 2695: 0x6E96, + 2696: 0x6F64, + 2697: 0x76FE, + 2698: 0x7D14, + 2699: 0x5DE1, + 2700: 0x9075, + 2701: 0x9187, + 2702: 0x9806, + 2703: 0x51E6, + 2704: 0x521D, + 2705: 0x6240, + 2706: 0x6691, + 2707: 0x66D9, + 2708: 0x6E1A, + 2709: 0x5EB6, + 2710: 0x7DD2, + 2711: 0x7F72, + 2712: 0x66F8, + 2713: 0x85AF, + 2714: 0x85F7, + 2715: 0x8AF8, + 2716: 0x52A9, + 2717: 0x53D9, + 2718: 0x5973, + 2719: 0x5E8F, + 2720: 0x5F90, + 2721: 0x6055, + 2722: 0x92E4, + 2723: 0x9664, + 2724: 0x50B7, + 2725: 0x511F, + 2726: 0x52DD, + 2727: 0x5320, + 2728: 0x5347, + 2729: 0x53EC, + 2730: 0x54E8, + 2731: 0x5546, + 2732: 0x5531, + 2733: 0x5617, + 2734: 0x5968, + 2735: 0x59BE, + 2736: 0x5A3C, + 2737: 0x5BB5, + 2738: 0x5C06, + 2739: 0x5C0F, + 2740: 0x5C11, + 2741: 0x5C1A, + 2742: 0x5E84, + 2743: 0x5E8A, + 2744: 0x5EE0, + 2745: 0x5F70, + 2746: 0x627F, + 2747: 0x6284, + 2748: 0x62DB, + 2749: 0x638C, + 2750: 0x6377, + 2751: 0x6607, + 2752: 0x660C, + 2753: 0x662D, + 2754: 0x6676, + 2755: 0x677E, + 2756: 0x68A2, + 2757: 0x6A1F, + 2758: 0x6A35, + 2759: 0x6CBC, + 2760: 0x6D88, + 2761: 0x6E09, + 2762: 0x6E58, + 2763: 0x713C, + 2764: 0x7126, + 2765: 0x7167, + 2766: 0x75C7, + 2767: 0x7701, + 2768: 0x785D, + 2769: 0x7901, + 2770: 0x7965, + 2771: 0x79F0, + 2772: 0x7AE0, + 2773: 0x7B11, + 2774: 0x7CA7, + 2775: 0x7D39, + 2776: 0x8096, + 2777: 0x83D6, + 2778: 0x848B, + 2779: 0x8549, + 2780: 0x885D, + 2781: 0x88F3, + 2782: 0x8A1F, + 2783: 0x8A3C, + 2784: 0x8A54, + 2785: 0x8A73, + 2786: 0x8C61, + 2787: 0x8CDE, + 2788: 0x91A4, + 2789: 0x9266, + 2790: 0x937E, + 2791: 0x9418, + 2792: 0x969C, + 2793: 0x9798, + 2794: 0x4E0A, + 2795: 0x4E08, + 2796: 0x4E1E, + 2797: 0x4E57, + 2798: 0x5197, + 2799: 0x5270, + 2800: 0x57CE, + 2801: 0x5834, + 2802: 0x58CC, + 2803: 0x5B22, + 2804: 0x5E38, + 2805: 0x60C5, + 2806: 0x64FE, + 2807: 0x6761, + 2808: 0x6756, + 2809: 0x6D44, + 2810: 0x72B6, + 2811: 0x7573, + 2812: 0x7A63, + 2813: 0x84B8, + 2814: 0x8B72, + 2815: 0x91B8, + 2816: 0x9320, + 2817: 0x5631, + 2818: 0x57F4, + 2819: 0x98FE, + 2820: 0x62ED, + 2821: 0x690D, + 2822: 0x6B96, + 2823: 0x71ED, + 2824: 0x7E54, + 2825: 0x8077, + 2826: 0x8272, + 2827: 0x89E6, + 2828: 0x98DF, + 2829: 0x8755, + 2830: 0x8FB1, + 2831: 0x5C3B, + 2832: 0x4F38, + 2833: 0x4FE1, + 2834: 0x4FB5, + 2835: 0x5507, + 2836: 0x5A20, + 2837: 0x5BDD, + 2838: 0x5BE9, + 2839: 0x5FC3, + 2840: 0x614E, + 2841: 0x632F, + 2842: 0x65B0, + 2843: 0x664B, + 2844: 0x68EE, + 2845: 0x699B, + 2846: 0x6D78, + 2847: 0x6DF1, + 2848: 0x7533, + 2849: 0x75B9, + 2850: 0x771F, + 2851: 0x795E, + 2852: 0x79E6, + 2853: 0x7D33, + 2854: 0x81E3, + 2855: 0x82AF, + 2856: 0x85AA, + 2857: 0x89AA, + 2858: 0x8A3A, + 2859: 0x8EAB, + 2860: 0x8F9B, + 2861: 0x9032, + 2862: 0x91DD, + 2863: 0x9707, + 2864: 0x4EBA, + 2865: 0x4EC1, + 2866: 0x5203, + 2867: 0x5875, + 2868: 0x58EC, + 2869: 0x5C0B, + 2870: 0x751A, + 2871: 0x5C3D, + 2872: 0x814E, + 2873: 0x8A0A, + 2874: 0x8FC5, + 2875: 0x9663, + 2876: 0x976D, + 2877: 0x7B25, + 2878: 0x8ACF, + 2879: 0x9808, + 2880: 0x9162, + 2881: 0x56F3, + 2882: 0x53A8, + 2883: 0x9017, + 2884: 0x5439, + 2885: 0x5782, + 2886: 0x5E25, + 2887: 0x63A8, + 2888: 0x6C34, + 2889: 0x708A, + 2890: 0x7761, + 2891: 0x7C8B, + 2892: 0x7FE0, + 2893: 0x8870, + 2894: 0x9042, + 2895: 0x9154, + 2896: 0x9310, + 2897: 0x9318, + 2898: 0x968F, + 2899: 0x745E, + 2900: 0x9AC4, + 2901: 0x5D07, + 2902: 0x5D69, + 2903: 0x6570, + 2904: 0x67A2, + 2905: 0x8DA8, + 2906: 0x96DB, + 2907: 0x636E, + 2908: 0x6749, + 2909: 0x6919, + 2910: 0x83C5, + 2911: 0x9817, + 2912: 0x96C0, + 2913: 0x88FE, + 2914: 0x6F84, + 2915: 0x647A, + 2916: 0x5BF8, + 2917: 0x4E16, + 2918: 0x702C, + 2919: 0x755D, + 2920: 0x662F, + 2921: 0x51C4, + 2922: 0x5236, + 2923: 0x52E2, + 2924: 0x59D3, + 2925: 0x5F81, + 2926: 0x6027, + 2927: 0x6210, + 2928: 0x653F, + 2929: 0x6574, + 2930: 0x661F, + 2931: 0x6674, + 2932: 0x68F2, + 2933: 0x6816, + 2934: 0x6B63, + 2935: 0x6E05, + 2936: 0x7272, + 2937: 0x751F, + 2938: 0x76DB, + 2939: 0x7CBE, + 2940: 0x8056, + 2941: 0x58F0, + 2942: 0x88FD, + 2943: 0x897F, + 2944: 0x8AA0, + 2945: 0x8A93, + 2946: 0x8ACB, + 2947: 0x901D, + 2948: 0x9192, + 2949: 0x9752, + 2950: 0x9759, + 2951: 0x6589, + 2952: 0x7A0E, + 2953: 0x8106, + 2954: 0x96BB, + 2955: 0x5E2D, + 2956: 0x60DC, + 2957: 0x621A, + 2958: 0x65A5, + 2959: 0x6614, + 2960: 0x6790, + 2961: 0x77F3, + 2962: 0x7A4D, + 2963: 0x7C4D, + 2964: 0x7E3E, + 2965: 0x810A, + 2966: 0x8CAC, + 2967: 0x8D64, + 2968: 0x8DE1, + 2969: 0x8E5F, + 2970: 0x78A9, + 2971: 0x5207, + 2972: 0x62D9, + 2973: 0x63A5, + 2974: 0x6442, + 2975: 0x6298, + 2976: 0x8A2D, + 2977: 0x7A83, + 2978: 0x7BC0, + 2979: 0x8AAC, + 2980: 0x96EA, + 2981: 0x7D76, + 2982: 0x820C, + 2983: 0x8749, + 2984: 0x4ED9, + 2985: 0x5148, + 2986: 0x5343, + 2987: 0x5360, + 2988: 0x5BA3, + 2989: 0x5C02, + 2990: 0x5C16, + 2991: 0x5DDD, + 2992: 0x6226, + 2993: 0x6247, + 2994: 0x64B0, + 2995: 0x6813, + 2996: 0x6834, + 2997: 0x6CC9, + 2998: 0x6D45, + 2999: 0x6D17, + 3000: 0x67D3, + 3001: 0x6F5C, + 3002: 0x714E, + 3003: 0x717D, + 3004: 0x65CB, + 3005: 0x7A7F, + 3006: 0x7BAD, + 3007: 0x7DDA, + 3008: 0x7E4A, + 3009: 0x7FA8, + 3010: 0x817A, + 3011: 0x821B, + 3012: 0x8239, + 3013: 0x85A6, + 3014: 0x8A6E, + 3015: 0x8CCE, + 3016: 0x8DF5, + 3017: 0x9078, + 3018: 0x9077, + 3019: 0x92AD, + 3020: 0x9291, + 3021: 0x9583, + 3022: 0x9BAE, + 3023: 0x524D, + 3024: 0x5584, + 3025: 0x6F38, + 3026: 0x7136, + 3027: 0x5168, + 3028: 0x7985, + 3029: 0x7E55, + 3030: 0x81B3, + 3031: 0x7CCE, + 3032: 0x564C, + 3033: 0x5851, + 3034: 0x5CA8, + 3035: 0x63AA, + 3036: 0x66FE, + 3037: 0x66FD, + 3038: 0x695A, + 3039: 0x72D9, + 3040: 0x758F, + 3041: 0x758E, + 3042: 0x790E, + 3043: 0x7956, + 3044: 0x79DF, + 3045: 0x7C97, + 3046: 0x7D20, + 3047: 0x7D44, + 3048: 0x8607, + 3049: 0x8A34, + 3050: 0x963B, + 3051: 0x9061, + 3052: 0x9F20, + 3053: 0x50E7, + 3054: 0x5275, + 3055: 0x53CC, + 3056: 0x53E2, + 3057: 0x5009, + 3058: 0x55AA, + 3059: 0x58EE, + 3060: 0x594F, + 3061: 0x723D, + 3062: 0x5B8B, + 3063: 0x5C64, + 3064: 0x531D, + 3065: 0x60E3, + 3066: 0x60F3, + 3067: 0x635C, + 3068: 0x6383, + 3069: 0x633F, + 3070: 0x63BB, + 3071: 0x64CD, + 3072: 0x65E9, + 3073: 0x66F9, + 3074: 0x5DE3, + 3075: 0x69CD, + 3076: 0x69FD, + 3077: 0x6F15, + 3078: 0x71E5, + 3079: 0x4E89, + 3080: 0x75E9, + 3081: 0x76F8, + 3082: 0x7A93, + 3083: 0x7CDF, + 3084: 0x7DCF, + 3085: 0x7D9C, + 3086: 0x8061, + 3087: 0x8349, + 3088: 0x8358, + 3089: 0x846C, + 3090: 0x84BC, + 3091: 0x85FB, + 3092: 0x88C5, + 3093: 0x8D70, + 3094: 0x9001, + 3095: 0x906D, + 3096: 0x9397, + 3097: 0x971C, + 3098: 0x9A12, + 3099: 0x50CF, + 3100: 0x5897, + 3101: 0x618E, + 3102: 0x81D3, + 3103: 0x8535, + 3104: 0x8D08, + 3105: 0x9020, + 3106: 0x4FC3, + 3107: 0x5074, + 3108: 0x5247, + 3109: 0x5373, + 3110: 0x606F, + 3111: 0x6349, + 3112: 0x675F, + 3113: 0x6E2C, + 3114: 0x8DB3, + 3115: 0x901F, + 3116: 0x4FD7, + 3117: 0x5C5E, + 3118: 0x8CCA, + 3119: 0x65CF, + 3120: 0x7D9A, + 3121: 0x5352, + 3122: 0x8896, + 3123: 0x5176, + 3124: 0x63C3, + 3125: 0x5B58, + 3126: 0x5B6B, + 3127: 0x5C0A, + 3128: 0x640D, + 3129: 0x6751, + 3130: 0x905C, + 3131: 0x4ED6, + 3132: 0x591A, + 3133: 0x592A, + 3134: 0x6C70, + 3135: 0x8A51, + 3136: 0x553E, + 3137: 0x5815, + 3138: 0x59A5, + 3139: 0x60F0, + 3140: 0x6253, + 3141: 0x67C1, + 3142: 0x8235, + 3143: 0x6955, + 3144: 0x9640, + 3145: 0x99C4, + 3146: 0x9A28, + 3147: 0x4F53, + 3148: 0x5806, + 3149: 0x5BFE, + 3150: 0x8010, + 3151: 0x5CB1, + 3152: 0x5E2F, + 3153: 0x5F85, + 3154: 0x6020, + 3155: 0x614B, + 3156: 0x6234, + 3157: 0x66FF, + 3158: 0x6CF0, + 3159: 0x6EDE, + 3160: 0x80CE, + 3161: 0x817F, + 3162: 0x82D4, + 3163: 0x888B, + 3164: 0x8CB8, + 3165: 0x9000, + 3166: 0x902E, + 3167: 0x968A, + 3168: 0x9EDB, + 3169: 0x9BDB, + 3170: 0x4EE3, + 3171: 0x53F0, + 3172: 0x5927, + 3173: 0x7B2C, + 3174: 0x918D, + 3175: 0x984C, + 3176: 0x9DF9, + 3177: 0x6EDD, + 3178: 0x7027, + 3179: 0x5353, + 3180: 0x5544, + 3181: 0x5B85, + 3182: 0x6258, + 3183: 0x629E, + 3184: 0x62D3, + 3185: 0x6CA2, + 3186: 0x6FEF, + 3187: 0x7422, + 3188: 0x8A17, + 3189: 0x9438, + 3190: 0x6FC1, + 3191: 0x8AFE, + 3192: 0x8338, + 3193: 0x51E7, + 3194: 0x86F8, + 3195: 0x53EA, + 3196: 0x53E9, + 3197: 0x4F46, + 3198: 0x9054, + 3199: 0x8FB0, + 3200: 0x596A, + 3201: 0x8131, + 3202: 0x5DFD, + 3203: 0x7AEA, + 3204: 0x8FBF, + 3205: 0x68DA, + 3206: 0x8C37, + 3207: 0x72F8, + 3208: 0x9C48, + 3209: 0x6A3D, + 3210: 0x8AB0, + 3211: 0x4E39, + 3212: 0x5358, + 3213: 0x5606, + 3214: 0x5766, + 3215: 0x62C5, + 3216: 0x63A2, + 3217: 0x65E6, + 3218: 0x6B4E, + 3219: 0x6DE1, + 3220: 0x6E5B, + 3221: 0x70AD, + 3222: 0x77ED, + 3223: 0x7AEF, + 3224: 0x7BAA, + 3225: 0x7DBB, + 3226: 0x803D, + 3227: 0x80C6, + 3228: 0x86CB, + 3229: 0x8A95, + 3230: 0x935B, + 3231: 0x56E3, + 3232: 0x58C7, + 3233: 0x5F3E, + 3234: 0x65AD, + 3235: 0x6696, + 3236: 0x6A80, + 3237: 0x6BB5, + 3238: 0x7537, + 3239: 0x8AC7, + 3240: 0x5024, + 3241: 0x77E5, + 3242: 0x5730, + 3243: 0x5F1B, + 3244: 0x6065, + 3245: 0x667A, + 3246: 0x6C60, + 3247: 0x75F4, + 3248: 0x7A1A, + 3249: 0x7F6E, + 3250: 0x81F4, + 3251: 0x8718, + 3252: 0x9045, + 3253: 0x99B3, + 3254: 0x7BC9, + 3255: 0x755C, + 3256: 0x7AF9, + 3257: 0x7B51, + 3258: 0x84C4, + 3259: 0x9010, + 3260: 0x79E9, + 3261: 0x7A92, + 3262: 0x8336, + 3263: 0x5AE1, + 3264: 0x7740, + 3265: 0x4E2D, + 3266: 0x4EF2, + 3267: 0x5B99, + 3268: 0x5FE0, + 3269: 0x62BD, + 3270: 0x663C, + 3271: 0x67F1, + 3272: 0x6CE8, + 3273: 0x866B, + 3274: 0x8877, + 3275: 0x8A3B, + 3276: 0x914E, + 3277: 0x92F3, + 3278: 0x99D0, + 3279: 0x6A17, + 3280: 0x7026, + 3281: 0x732A, + 3282: 0x82E7, + 3283: 0x8457, + 3284: 0x8CAF, + 3285: 0x4E01, + 3286: 0x5146, + 3287: 0x51CB, + 3288: 0x558B, + 3289: 0x5BF5, + 3290: 0x5E16, + 3291: 0x5E33, + 3292: 0x5E81, + 3293: 0x5F14, + 3294: 0x5F35, + 3295: 0x5F6B, + 3296: 0x5FB4, + 3297: 0x61F2, + 3298: 0x6311, + 3299: 0x66A2, + 3300: 0x671D, + 3301: 0x6F6E, + 3302: 0x7252, + 3303: 0x753A, + 3304: 0x773A, + 3305: 0x8074, + 3306: 0x8139, + 3307: 0x8178, + 3308: 0x8776, + 3309: 0x8ABF, + 3310: 0x8ADC, + 3311: 0x8D85, + 3312: 0x8DF3, + 3313: 0x929A, + 3314: 0x9577, + 3315: 0x9802, + 3316: 0x9CE5, + 3317: 0x52C5, + 3318: 0x6357, + 3319: 0x76F4, + 3320: 0x6715, + 3321: 0x6C88, + 3322: 0x73CD, + 3323: 0x8CC3, + 3324: 0x93AE, + 3325: 0x9673, + 3326: 0x6D25, + 3327: 0x589C, + 3328: 0x690E, + 3329: 0x69CC, + 3330: 0x8FFD, + 3331: 0x939A, + 3332: 0x75DB, + 3333: 0x901A, + 3334: 0x585A, + 3335: 0x6802, + 3336: 0x63B4, + 3337: 0x69FB, + 3338: 0x4F43, + 3339: 0x6F2C, + 3340: 0x67D8, + 3341: 0x8FBB, + 3342: 0x8526, + 3343: 0x7DB4, + 3344: 0x9354, + 3345: 0x693F, + 3346: 0x6F70, + 3347: 0x576A, + 3348: 0x58F7, + 3349: 0x5B2C, + 3350: 0x7D2C, + 3351: 0x722A, + 3352: 0x540A, + 3353: 0x91E3, + 3354: 0x9DB4, + 3355: 0x4EAD, + 3356: 0x4F4E, + 3357: 0x505C, + 3358: 0x5075, + 3359: 0x5243, + 3360: 0x8C9E, + 3361: 0x5448, + 3362: 0x5824, + 3363: 0x5B9A, + 3364: 0x5E1D, + 3365: 0x5E95, + 3366: 0x5EAD, + 3367: 0x5EF7, + 3368: 0x5F1F, + 3369: 0x608C, + 3370: 0x62B5, + 3371: 0x633A, + 3372: 0x63D0, + 3373: 0x68AF, + 3374: 0x6C40, + 3375: 0x7887, + 3376: 0x798E, + 3377: 0x7A0B, + 3378: 0x7DE0, + 3379: 0x8247, + 3380: 0x8A02, + 3381: 0x8AE6, + 3382: 0x8E44, + 3383: 0x9013, + 3384: 0x90B8, + 3385: 0x912D, + 3386: 0x91D8, + 3387: 0x9F0E, + 3388: 0x6CE5, + 3389: 0x6458, + 3390: 0x64E2, + 3391: 0x6575, + 3392: 0x6EF4, + 3393: 0x7684, + 3394: 0x7B1B, + 3395: 0x9069, + 3396: 0x93D1, + 3397: 0x6EBA, + 3398: 0x54F2, + 3399: 0x5FB9, + 3400: 0x64A4, + 3401: 0x8F4D, + 3402: 0x8FED, + 3403: 0x9244, + 3404: 0x5178, + 3405: 0x586B, + 3406: 0x5929, + 3407: 0x5C55, + 3408: 0x5E97, + 3409: 0x6DFB, + 3410: 0x7E8F, + 3411: 0x751C, + 3412: 0x8CBC, + 3413: 0x8EE2, + 3414: 0x985B, + 3415: 0x70B9, + 3416: 0x4F1D, + 3417: 0x6BBF, + 3418: 0x6FB1, + 3419: 0x7530, + 3420: 0x96FB, + 3421: 0x514E, + 3422: 0x5410, + 3423: 0x5835, + 3424: 0x5857, + 3425: 0x59AC, + 3426: 0x5C60, + 3427: 0x5F92, + 3428: 0x6597, + 3429: 0x675C, + 3430: 0x6E21, + 3431: 0x767B, + 3432: 0x83DF, + 3433: 0x8CED, + 3434: 0x9014, + 3435: 0x90FD, + 3436: 0x934D, + 3437: 0x7825, + 3438: 0x783A, + 3439: 0x52AA, + 3440: 0x5EA6, + 3441: 0x571F, + 3442: 0x5974, + 3443: 0x6012, + 3444: 0x5012, + 3445: 0x515A, + 3446: 0x51AC, + 3447: 0x51CD, + 3448: 0x5200, + 3449: 0x5510, + 3450: 0x5854, + 3451: 0x5858, + 3452: 0x5957, + 3453: 0x5B95, + 3454: 0x5CF6, + 3455: 0x5D8B, + 3456: 0x60BC, + 3457: 0x6295, + 3458: 0x642D, + 3459: 0x6771, + 3460: 0x6843, + 3461: 0x68BC, + 3462: 0x68DF, + 3463: 0x76D7, + 3464: 0x6DD8, + 3465: 0x6E6F, + 3466: 0x6D9B, + 3467: 0x706F, + 3468: 0x71C8, + 3469: 0x5F53, + 3470: 0x75D8, + 3471: 0x7977, + 3472: 0x7B49, + 3473: 0x7B54, + 3474: 0x7B52, + 3475: 0x7CD6, + 3476: 0x7D71, + 3477: 0x5230, + 3478: 0x8463, + 3479: 0x8569, + 3480: 0x85E4, + 3481: 0x8A0E, + 3482: 0x8B04, + 3483: 0x8C46, + 3484: 0x8E0F, + 3485: 0x9003, + 3486: 0x900F, + 3487: 0x9419, + 3488: 0x9676, + 3489: 0x982D, + 3490: 0x9A30, + 3491: 0x95D8, + 3492: 0x50CD, + 3493: 0x52D5, + 3494: 0x540C, + 3495: 0x5802, + 3496: 0x5C0E, + 3497: 0x61A7, + 3498: 0x649E, + 3499: 0x6D1E, + 3500: 0x77B3, + 3501: 0x7AE5, + 3502: 0x80F4, + 3503: 0x8404, + 3504: 0x9053, + 3505: 0x9285, + 3506: 0x5CE0, + 3507: 0x9D07, + 3508: 0x533F, + 3509: 0x5F97, + 3510: 0x5FB3, + 3511: 0x6D9C, + 3512: 0x7279, + 3513: 0x7763, + 3514: 0x79BF, + 3515: 0x7BE4, + 3516: 0x6BD2, + 3517: 0x72EC, + 3518: 0x8AAD, + 3519: 0x6803, + 3520: 0x6A61, + 3521: 0x51F8, + 3522: 0x7A81, + 3523: 0x6934, + 3524: 0x5C4A, + 3525: 0x9CF6, + 3526: 0x82EB, + 3527: 0x5BC5, + 3528: 0x9149, + 3529: 0x701E, + 3530: 0x5678, + 3531: 0x5C6F, + 3532: 0x60C7, + 3533: 0x6566, + 3534: 0x6C8C, + 3535: 0x8C5A, + 3536: 0x9041, + 3537: 0x9813, + 3538: 0x5451, + 3539: 0x66C7, + 3540: 0x920D, + 3541: 0x5948, + 3542: 0x90A3, + 3543: 0x5185, + 3544: 0x4E4D, + 3545: 0x51EA, + 3546: 0x8599, + 3547: 0x8B0E, + 3548: 0x7058, + 3549: 0x637A, + 3550: 0x934B, + 3551: 0x6962, + 3552: 0x99B4, + 3553: 0x7E04, + 3554: 0x7577, + 3555: 0x5357, + 3556: 0x6960, + 3557: 0x8EDF, + 3558: 0x96E3, + 3559: 0x6C5D, + 3560: 0x4E8C, + 3561: 0x5C3C, + 3562: 0x5F10, + 3563: 0x8FE9, + 3564: 0x5302, + 3565: 0x8CD1, + 3566: 0x8089, + 3567: 0x8679, + 3568: 0x5EFF, + 3569: 0x65E5, + 3570: 0x4E73, + 3571: 0x5165, + 3572: 0x5982, + 3573: 0x5C3F, + 3574: 0x97EE, + 3575: 0x4EFB, + 3576: 0x598A, + 3577: 0x5FCD, + 3578: 0x8A8D, + 3579: 0x6FE1, + 3580: 0x79B0, + 3581: 0x7962, + 3582: 0x5BE7, + 3583: 0x8471, + 3584: 0x732B, + 3585: 0x71B1, + 3586: 0x5E74, + 3587: 0x5FF5, + 3588: 0x637B, + 3589: 0x649A, + 3590: 0x71C3, + 3591: 0x7C98, + 3592: 0x4E43, + 3593: 0x5EFC, + 3594: 0x4E4B, + 3595: 0x57DC, + 3596: 0x56A2, + 3597: 0x60A9, + 3598: 0x6FC3, + 3599: 0x7D0D, + 3600: 0x80FD, + 3601: 0x8133, + 3602: 0x81BF, + 3603: 0x8FB2, + 3604: 0x8997, + 3605: 0x86A4, + 3606: 0x5DF4, + 3607: 0x628A, + 3608: 0x64AD, + 3609: 0x8987, + 3610: 0x6777, + 3611: 0x6CE2, + 3612: 0x6D3E, + 3613: 0x7436, + 3614: 0x7834, + 3615: 0x5A46, + 3616: 0x7F75, + 3617: 0x82AD, + 3618: 0x99AC, + 3619: 0x4FF3, + 3620: 0x5EC3, + 3621: 0x62DD, + 3622: 0x6392, + 3623: 0x6557, + 3624: 0x676F, + 3625: 0x76C3, + 3626: 0x724C, + 3627: 0x80CC, + 3628: 0x80BA, + 3629: 0x8F29, + 3630: 0x914D, + 3631: 0x500D, + 3632: 0x57F9, + 3633: 0x5A92, + 3634: 0x6885, + 3635: 0x6973, + 3636: 0x7164, + 3637: 0x72FD, + 3638: 0x8CB7, + 3639: 0x58F2, + 3640: 0x8CE0, + 3641: 0x966A, + 3642: 0x9019, + 3643: 0x877F, + 3644: 0x79E4, + 3645: 0x77E7, + 3646: 0x8429, + 3647: 0x4F2F, + 3648: 0x5265, + 3649: 0x535A, + 3650: 0x62CD, + 3651: 0x67CF, + 3652: 0x6CCA, + 3653: 0x767D, + 3654: 0x7B94, + 3655: 0x7C95, + 3656: 0x8236, + 3657: 0x8584, + 3658: 0x8FEB, + 3659: 0x66DD, + 3660: 0x6F20, + 3661: 0x7206, + 3662: 0x7E1B, + 3663: 0x83AB, + 3664: 0x99C1, + 3665: 0x9EA6, + 3666: 0x51FD, + 3667: 0x7BB1, + 3668: 0x7872, + 3669: 0x7BB8, + 3670: 0x8087, + 3671: 0x7B48, + 3672: 0x6AE8, + 3673: 0x5E61, + 3674: 0x808C, + 3675: 0x7551, + 3676: 0x7560, + 3677: 0x516B, + 3678: 0x9262, + 3679: 0x6E8C, + 3680: 0x767A, + 3681: 0x9197, + 3682: 0x9AEA, + 3683: 0x4F10, + 3684: 0x7F70, + 3685: 0x629C, + 3686: 0x7B4F, + 3687: 0x95A5, + 3688: 0x9CE9, + 3689: 0x567A, + 3690: 0x5859, + 3691: 0x86E4, + 3692: 0x96BC, + 3693: 0x4F34, + 3694: 0x5224, + 3695: 0x534A, + 3696: 0x53CD, + 3697: 0x53DB, + 3698: 0x5E06, + 3699: 0x642C, + 3700: 0x6591, + 3701: 0x677F, + 3702: 0x6C3E, + 3703: 0x6C4E, + 3704: 0x7248, + 3705: 0x72AF, + 3706: 0x73ED, + 3707: 0x7554, + 3708: 0x7E41, + 3709: 0x822C, + 3710: 0x85E9, + 3711: 0x8CA9, + 3712: 0x7BC4, + 3713: 0x91C6, + 3714: 0x7169, + 3715: 0x9812, + 3716: 0x98EF, + 3717: 0x633D, + 3718: 0x6669, + 3719: 0x756A, + 3720: 0x76E4, + 3721: 0x78D0, + 3722: 0x8543, + 3723: 0x86EE, + 3724: 0x532A, + 3725: 0x5351, + 3726: 0x5426, + 3727: 0x5983, + 3728: 0x5E87, + 3729: 0x5F7C, + 3730: 0x60B2, + 3731: 0x6249, + 3732: 0x6279, + 3733: 0x62AB, + 3734: 0x6590, + 3735: 0x6BD4, + 3736: 0x6CCC, + 3737: 0x75B2, + 3738: 0x76AE, + 3739: 0x7891, + 3740: 0x79D8, + 3741: 0x7DCB, + 3742: 0x7F77, + 3743: 0x80A5, + 3744: 0x88AB, + 3745: 0x8AB9, + 3746: 0x8CBB, + 3747: 0x907F, + 3748: 0x975E, + 3749: 0x98DB, + 3750: 0x6A0B, + 3751: 0x7C38, + 3752: 0x5099, + 3753: 0x5C3E, + 3754: 0x5FAE, + 3755: 0x6787, + 3756: 0x6BD8, + 3757: 0x7435, + 3758: 0x7709, + 3759: 0x7F8E, + 3760: 0x9F3B, + 3761: 0x67CA, + 3762: 0x7A17, + 3763: 0x5339, + 3764: 0x758B, + 3765: 0x9AED, + 3766: 0x5F66, + 3767: 0x819D, + 3768: 0x83F1, + 3769: 0x8098, + 3770: 0x5F3C, + 3771: 0x5FC5, + 3772: 0x7562, + 3773: 0x7B46, + 3774: 0x903C, + 3775: 0x6867, + 3776: 0x59EB, + 3777: 0x5A9B, + 3778: 0x7D10, + 3779: 0x767E, + 3780: 0x8B2C, + 3781: 0x4FF5, + 3782: 0x5F6A, + 3783: 0x6A19, + 3784: 0x6C37, + 3785: 0x6F02, + 3786: 0x74E2, + 3787: 0x7968, + 3788: 0x8868, + 3789: 0x8A55, + 3790: 0x8C79, + 3791: 0x5EDF, + 3792: 0x63CF, + 3793: 0x75C5, + 3794: 0x79D2, + 3795: 0x82D7, + 3796: 0x9328, + 3797: 0x92F2, + 3798: 0x849C, + 3799: 0x86ED, + 3800: 0x9C2D, + 3801: 0x54C1, + 3802: 0x5F6C, + 3803: 0x658C, + 3804: 0x6D5C, + 3805: 0x7015, + 3806: 0x8CA7, + 3807: 0x8CD3, + 3808: 0x983B, + 3809: 0x654F, + 3810: 0x74F6, + 3811: 0x4E0D, + 3812: 0x4ED8, + 3813: 0x57E0, + 3814: 0x592B, + 3815: 0x5A66, + 3816: 0x5BCC, + 3817: 0x51A8, + 3818: 0x5E03, + 3819: 0x5E9C, + 3820: 0x6016, + 3821: 0x6276, + 3822: 0x6577, + 3823: 0x65A7, + 3824: 0x666E, + 3825: 0x6D6E, + 3826: 0x7236, + 3827: 0x7B26, + 3828: 0x8150, + 3829: 0x819A, + 3830: 0x8299, + 3831: 0x8B5C, + 3832: 0x8CA0, + 3833: 0x8CE6, + 3834: 0x8D74, + 3835: 0x961C, + 3836: 0x9644, + 3837: 0x4FAE, + 3838: 0x64AB, + 3839: 0x6B66, + 3840: 0x821E, + 3841: 0x8461, + 3842: 0x856A, + 3843: 0x90E8, + 3844: 0x5C01, + 3845: 0x6953, + 3846: 0x98A8, + 3847: 0x847A, + 3848: 0x8557, + 3849: 0x4F0F, + 3850: 0x526F, + 3851: 0x5FA9, + 3852: 0x5E45, + 3853: 0x670D, + 3854: 0x798F, + 3855: 0x8179, + 3856: 0x8907, + 3857: 0x8986, + 3858: 0x6DF5, + 3859: 0x5F17, + 3860: 0x6255, + 3861: 0x6CB8, + 3862: 0x4ECF, + 3863: 0x7269, + 3864: 0x9B92, + 3865: 0x5206, + 3866: 0x543B, + 3867: 0x5674, + 3868: 0x58B3, + 3869: 0x61A4, + 3870: 0x626E, + 3871: 0x711A, + 3872: 0x596E, + 3873: 0x7C89, + 3874: 0x7CDE, + 3875: 0x7D1B, + 3876: 0x96F0, + 3877: 0x6587, + 3878: 0x805E, + 3879: 0x4E19, + 3880: 0x4F75, + 3881: 0x5175, + 3882: 0x5840, + 3883: 0x5E63, + 3884: 0x5E73, + 3885: 0x5F0A, + 3886: 0x67C4, + 3887: 0x4E26, + 3888: 0x853D, + 3889: 0x9589, + 3890: 0x965B, + 3891: 0x7C73, + 3892: 0x9801, + 3893: 0x50FB, + 3894: 0x58C1, + 3895: 0x7656, + 3896: 0x78A7, + 3897: 0x5225, + 3898: 0x77A5, + 3899: 0x8511, + 3900: 0x7B86, + 3901: 0x504F, + 3902: 0x5909, + 3903: 0x7247, + 3904: 0x7BC7, + 3905: 0x7DE8, + 3906: 0x8FBA, + 3907: 0x8FD4, + 3908: 0x904D, + 3909: 0x4FBF, + 3910: 0x52C9, + 3911: 0x5A29, + 3912: 0x5F01, + 3913: 0x97AD, + 3914: 0x4FDD, + 3915: 0x8217, + 3916: 0x92EA, + 3917: 0x5703, + 3918: 0x6355, + 3919: 0x6B69, + 3920: 0x752B, + 3921: 0x88DC, + 3922: 0x8F14, + 3923: 0x7A42, + 3924: 0x52DF, + 3925: 0x5893, + 3926: 0x6155, + 3927: 0x620A, + 3928: 0x66AE, + 3929: 0x6BCD, + 3930: 0x7C3F, + 3931: 0x83E9, + 3932: 0x5023, + 3933: 0x4FF8, + 3934: 0x5305, + 3935: 0x5446, + 3936: 0x5831, + 3937: 0x5949, + 3938: 0x5B9D, + 3939: 0x5CF0, + 3940: 0x5CEF, + 3941: 0x5D29, + 3942: 0x5E96, + 3943: 0x62B1, + 3944: 0x6367, + 3945: 0x653E, + 3946: 0x65B9, + 3947: 0x670B, + 3948: 0x6CD5, + 3949: 0x6CE1, + 3950: 0x70F9, + 3951: 0x7832, + 3952: 0x7E2B, + 3953: 0x80DE, + 3954: 0x82B3, + 3955: 0x840C, + 3956: 0x84EC, + 3957: 0x8702, + 3958: 0x8912, + 3959: 0x8A2A, + 3960: 0x8C4A, + 3961: 0x90A6, + 3962: 0x92D2, + 3963: 0x98FD, + 3964: 0x9CF3, + 3965: 0x9D6C, + 3966: 0x4E4F, + 3967: 0x4EA1, + 3968: 0x508D, + 3969: 0x5256, + 3970: 0x574A, + 3971: 0x59A8, + 3972: 0x5E3D, + 3973: 0x5FD8, + 3974: 0x5FD9, + 3975: 0x623F, + 3976: 0x66B4, + 3977: 0x671B, + 3978: 0x67D0, + 3979: 0x68D2, + 3980: 0x5192, + 3981: 0x7D21, + 3982: 0x80AA, + 3983: 0x81A8, + 3984: 0x8B00, + 3985: 0x8C8C, + 3986: 0x8CBF, + 3987: 0x927E, + 3988: 0x9632, + 3989: 0x5420, + 3990: 0x982C, + 3991: 0x5317, + 3992: 0x50D5, + 3993: 0x535C, + 3994: 0x58A8, + 3995: 0x64B2, + 3996: 0x6734, + 3997: 0x7267, + 3998: 0x7766, + 3999: 0x7A46, + 4000: 0x91E6, + 4001: 0x52C3, + 4002: 0x6CA1, + 4003: 0x6B86, + 4004: 0x5800, + 4005: 0x5E4C, + 4006: 0x5954, + 4007: 0x672C, + 4008: 0x7FFB, + 4009: 0x51E1, + 4010: 0x76C6, + 4011: 0x6469, + 4012: 0x78E8, + 4013: 0x9B54, + 4014: 0x9EBB, + 4015: 0x57CB, + 4016: 0x59B9, + 4017: 0x6627, + 4018: 0x679A, + 4019: 0x6BCE, + 4020: 0x54E9, + 4021: 0x69D9, + 4022: 0x5E55, + 4023: 0x819C, + 4024: 0x6795, + 4025: 0x9BAA, + 4026: 0x67FE, + 4027: 0x9C52, + 4028: 0x685D, + 4029: 0x4EA6, + 4030: 0x4FE3, + 4031: 0x53C8, + 4032: 0x62B9, + 4033: 0x672B, + 4034: 0x6CAB, + 4035: 0x8FC4, + 4036: 0x4FAD, + 4037: 0x7E6D, + 4038: 0x9EBF, + 4039: 0x4E07, + 4040: 0x6162, + 4041: 0x6E80, + 4042: 0x6F2B, + 4043: 0x8513, + 4044: 0x5473, + 4045: 0x672A, + 4046: 0x9B45, + 4047: 0x5DF3, + 4048: 0x7B95, + 4049: 0x5CAC, + 4050: 0x5BC6, + 4051: 0x871C, + 4052: 0x6E4A, + 4053: 0x84D1, + 4054: 0x7A14, + 4055: 0x8108, + 4056: 0x5999, + 4057: 0x7C8D, + 4058: 0x6C11, + 4059: 0x7720, + 4060: 0x52D9, + 4061: 0x5922, + 4062: 0x7121, + 4063: 0x725F, + 4064: 0x77DB, + 4065: 0x9727, + 4066: 0x9D61, + 4067: 0x690B, + 4068: 0x5A7F, + 4069: 0x5A18, + 4070: 0x51A5, + 4071: 0x540D, + 4072: 0x547D, + 4073: 0x660E, + 4074: 0x76DF, + 4075: 0x8FF7, + 4076: 0x9298, + 4077: 0x9CF4, + 4078: 0x59EA, + 4079: 0x725D, + 4080: 0x6EC5, + 4081: 0x514D, + 4082: 0x68C9, + 4083: 0x7DBF, + 4084: 0x7DEC, + 4085: 0x9762, + 4086: 0x9EBA, + 4087: 0x6478, + 4088: 0x6A21, + 4089: 0x8302, + 4090: 0x5984, + 4091: 0x5B5F, + 4092: 0x6BDB, + 4093: 0x731B, + 4094: 0x76F2, + 4095: 0x7DB2, + 4096: 0x8017, + 4097: 0x8499, + 4098: 0x5132, + 4099: 0x6728, + 4100: 0x9ED9, + 4101: 0x76EE, + 4102: 0x6762, + 4103: 0x52FF, + 4104: 0x9905, + 4105: 0x5C24, + 4106: 0x623B, + 4107: 0x7C7E, + 4108: 0x8CB0, + 4109: 0x554F, + 4110: 0x60B6, + 4111: 0x7D0B, + 4112: 0x9580, + 4113: 0x5301, + 4114: 0x4E5F, + 4115: 0x51B6, + 4116: 0x591C, + 4117: 0x723A, + 4118: 0x8036, + 4119: 0x91CE, + 4120: 0x5F25, + 4121: 0x77E2, + 4122: 0x5384, + 4123: 0x5F79, + 4124: 0x7D04, + 4125: 0x85AC, + 4126: 0x8A33, + 4127: 0x8E8D, + 4128: 0x9756, + 4129: 0x67F3, + 4130: 0x85AE, + 4131: 0x9453, + 4132: 0x6109, + 4133: 0x6108, + 4134: 0x6CB9, + 4135: 0x7652, + 4136: 0x8AED, + 4137: 0x8F38, + 4138: 0x552F, + 4139: 0x4F51, + 4140: 0x512A, + 4141: 0x52C7, + 4142: 0x53CB, + 4143: 0x5BA5, + 4144: 0x5E7D, + 4145: 0x60A0, + 4146: 0x6182, + 4147: 0x63D6, + 4148: 0x6709, + 4149: 0x67DA, + 4150: 0x6E67, + 4151: 0x6D8C, + 4152: 0x7336, + 4153: 0x7337, + 4154: 0x7531, + 4155: 0x7950, + 4156: 0x88D5, + 4157: 0x8A98, + 4158: 0x904A, + 4159: 0x9091, + 4160: 0x90F5, + 4161: 0x96C4, + 4162: 0x878D, + 4163: 0x5915, + 4164: 0x4E88, + 4165: 0x4F59, + 4166: 0x4E0E, + 4167: 0x8A89, + 4168: 0x8F3F, + 4169: 0x9810, + 4170: 0x50AD, + 4171: 0x5E7C, + 4172: 0x5996, + 4173: 0x5BB9, + 4174: 0x5EB8, + 4175: 0x63DA, + 4176: 0x63FA, + 4177: 0x64C1, + 4178: 0x66DC, + 4179: 0x694A, + 4180: 0x69D8, + 4181: 0x6D0B, + 4182: 0x6EB6, + 4183: 0x7194, + 4184: 0x7528, + 4185: 0x7AAF, + 4186: 0x7F8A, + 4187: 0x8000, + 4188: 0x8449, + 4189: 0x84C9, + 4190: 0x8981, + 4191: 0x8B21, + 4192: 0x8E0A, + 4193: 0x9065, + 4194: 0x967D, + 4195: 0x990A, + 4196: 0x617E, + 4197: 0x6291, + 4198: 0x6B32, + 4199: 0x6C83, + 4200: 0x6D74, + 4201: 0x7FCC, + 4202: 0x7FFC, + 4203: 0x6DC0, + 4204: 0x7F85, + 4205: 0x87BA, + 4206: 0x88F8, + 4207: 0x6765, + 4208: 0x83B1, + 4209: 0x983C, + 4210: 0x96F7, + 4211: 0x6D1B, + 4212: 0x7D61, + 4213: 0x843D, + 4214: 0x916A, + 4215: 0x4E71, + 4216: 0x5375, + 4217: 0x5D50, + 4218: 0x6B04, + 4219: 0x6FEB, + 4220: 0x85CD, + 4221: 0x862D, + 4222: 0x89A7, + 4223: 0x5229, + 4224: 0x540F, + 4225: 0x5C65, + 4226: 0x674E, + 4227: 0x68A8, + 4228: 0x7406, + 4229: 0x7483, + 4230: 0x75E2, + 4231: 0x88CF, + 4232: 0x88E1, + 4233: 0x91CC, + 4234: 0x96E2, + 4235: 0x9678, + 4236: 0x5F8B, + 4237: 0x7387, + 4238: 0x7ACB, + 4239: 0x844E, + 4240: 0x63A0, + 4241: 0x7565, + 4242: 0x5289, + 4243: 0x6D41, + 4244: 0x6E9C, + 4245: 0x7409, + 4246: 0x7559, + 4247: 0x786B, + 4248: 0x7C92, + 4249: 0x9686, + 4250: 0x7ADC, + 4251: 0x9F8D, + 4252: 0x4FB6, + 4253: 0x616E, + 4254: 0x65C5, + 4255: 0x865C, + 4256: 0x4E86, + 4257: 0x4EAE, + 4258: 0x50DA, + 4259: 0x4E21, + 4260: 0x51CC, + 4261: 0x5BEE, + 4262: 0x6599, + 4263: 0x6881, + 4264: 0x6DBC, + 4265: 0x731F, + 4266: 0x7642, + 4267: 0x77AD, + 4268: 0x7A1C, + 4269: 0x7CE7, + 4270: 0x826F, + 4271: 0x8AD2, + 4272: 0x907C, + 4273: 0x91CF, + 4274: 0x9675, + 4275: 0x9818, + 4276: 0x529B, + 4277: 0x7DD1, + 4278: 0x502B, + 4279: 0x5398, + 4280: 0x6797, + 4281: 0x6DCB, + 4282: 0x71D0, + 4283: 0x7433, + 4284: 0x81E8, + 4285: 0x8F2A, + 4286: 0x96A3, + 4287: 0x9C57, + 4288: 0x9E9F, + 4289: 0x7460, + 4290: 0x5841, + 4291: 0x6D99, + 4292: 0x7D2F, + 4293: 0x985E, + 4294: 0x4EE4, + 4295: 0x4F36, + 4296: 0x4F8B, + 4297: 0x51B7, + 4298: 0x52B1, + 4299: 0x5DBA, + 4300: 0x601C, + 4301: 0x73B2, + 4302: 0x793C, + 4303: 0x82D3, + 4304: 0x9234, + 4305: 0x96B7, + 4306: 0x96F6, + 4307: 0x970A, + 4308: 0x9E97, + 4309: 0x9F62, + 4310: 0x66A6, + 4311: 0x6B74, + 4312: 0x5217, + 4313: 0x52A3, + 4314: 0x70C8, + 4315: 0x88C2, + 4316: 0x5EC9, + 4317: 0x604B, + 4318: 0x6190, + 4319: 0x6F23, + 4320: 0x7149, + 4321: 0x7C3E, + 4322: 0x7DF4, + 4323: 0x806F, + 4324: 0x84EE, + 4325: 0x9023, + 4326: 0x932C, + 4327: 0x5442, + 4328: 0x9B6F, + 4329: 0x6AD3, + 4330: 0x7089, + 4331: 0x8CC2, + 4332: 0x8DEF, + 4333: 0x9732, + 4334: 0x52B4, + 4335: 0x5A41, + 4336: 0x5ECA, + 4337: 0x5F04, + 4338: 0x6717, + 4339: 0x697C, + 4340: 0x6994, + 4341: 0x6D6A, + 4342: 0x6F0F, + 4343: 0x7262, + 4344: 0x72FC, + 4345: 0x7BED, + 4346: 0x8001, + 4347: 0x807E, + 4348: 0x874B, + 4349: 0x90CE, + 4350: 0x516D, + 4351: 0x9E93, + 4352: 0x7984, + 4353: 0x808B, + 4354: 0x9332, + 4355: 0x8AD6, + 4356: 0x502D, + 4357: 0x548C, + 4358: 0x8A71, + 4359: 0x6B6A, + 4360: 0x8CC4, + 4361: 0x8107, + 4362: 0x60D1, + 4363: 0x67A0, + 4364: 0x9DF2, + 4365: 0x4E99, + 4366: 0x4E98, + 4367: 0x9C10, + 4368: 0x8A6B, + 4369: 0x85C1, + 4370: 0x8568, + 4371: 0x6900, + 4372: 0x6E7E, + 4373: 0x7897, + 4374: 0x8155, + 4418: 0x5F0C, + 4419: 0x4E10, + 4420: 0x4E15, + 4421: 0x4E2A, + 4422: 0x4E31, + 4423: 0x4E36, + 4424: 0x4E3C, + 4425: 0x4E3F, + 4426: 0x4E42, + 4427: 0x4E56, + 4428: 0x4E58, + 4429: 0x4E82, + 4430: 0x4E85, + 4431: 0x8C6B, + 4432: 0x4E8A, + 4433: 0x8212, + 4434: 0x5F0D, + 4435: 0x4E8E, + 4436: 0x4E9E, + 4437: 0x4E9F, + 4438: 0x4EA0, + 4439: 0x4EA2, + 4440: 0x4EB0, + 4441: 0x4EB3, + 4442: 0x4EB6, + 4443: 0x4ECE, + 4444: 0x4ECD, + 4445: 0x4EC4, + 4446: 0x4EC6, + 4447: 0x4EC2, + 4448: 0x4ED7, + 4449: 0x4EDE, + 4450: 0x4EED, + 4451: 0x4EDF, + 4452: 0x4EF7, + 4453: 0x4F09, + 4454: 0x4F5A, + 4455: 0x4F30, + 4456: 0x4F5B, + 4457: 0x4F5D, + 4458: 0x4F57, + 4459: 0x4F47, + 4460: 0x4F76, + 4461: 0x4F88, + 4462: 0x4F8F, + 4463: 0x4F98, + 4464: 0x4F7B, + 4465: 0x4F69, + 4466: 0x4F70, + 4467: 0x4F91, + 4468: 0x4F6F, + 4469: 0x4F86, + 4470: 0x4F96, + 4471: 0x5118, + 4472: 0x4FD4, + 4473: 0x4FDF, + 4474: 0x4FCE, + 4475: 0x4FD8, + 4476: 0x4FDB, + 4477: 0x4FD1, + 4478: 0x4FDA, + 4479: 0x4FD0, + 4480: 0x4FE4, + 4481: 0x4FE5, + 4482: 0x501A, + 4483: 0x5028, + 4484: 0x5014, + 4485: 0x502A, + 4486: 0x5025, + 4487: 0x5005, + 4488: 0x4F1C, + 4489: 0x4FF6, + 4490: 0x5021, + 4491: 0x5029, + 4492: 0x502C, + 4493: 0x4FFE, + 4494: 0x4FEF, + 4495: 0x5011, + 4496: 0x5006, + 4497: 0x5043, + 4498: 0x5047, + 4499: 0x6703, + 4500: 0x5055, + 4501: 0x5050, + 4502: 0x5048, + 4503: 0x505A, + 4504: 0x5056, + 4505: 0x506C, + 4506: 0x5078, + 4507: 0x5080, + 4508: 0x509A, + 4509: 0x5085, + 4510: 0x50B4, + 4511: 0x50B2, + 4512: 0x50C9, + 4513: 0x50CA, + 4514: 0x50B3, + 4515: 0x50C2, + 4516: 0x50D6, + 4517: 0x50DE, + 4518: 0x50E5, + 4519: 0x50ED, + 4520: 0x50E3, + 4521: 0x50EE, + 4522: 0x50F9, + 4523: 0x50F5, + 4524: 0x5109, + 4525: 0x5101, + 4526: 0x5102, + 4527: 0x5116, + 4528: 0x5115, + 4529: 0x5114, + 4530: 0x511A, + 4531: 0x5121, + 4532: 0x513A, + 4533: 0x5137, + 4534: 0x513C, + 4535: 0x513B, + 4536: 0x513F, + 4537: 0x5140, + 4538: 0x5152, + 4539: 0x514C, + 4540: 0x5154, + 4541: 0x5162, + 4542: 0x7AF8, + 4543: 0x5169, + 4544: 0x516A, + 4545: 0x516E, + 4546: 0x5180, + 4547: 0x5182, + 4548: 0x56D8, + 4549: 0x518C, + 4550: 0x5189, + 4551: 0x518F, + 4552: 0x5191, + 4553: 0x5193, + 4554: 0x5195, + 4555: 0x5196, + 4556: 0x51A4, + 4557: 0x51A6, + 4558: 0x51A2, + 4559: 0x51A9, + 4560: 0x51AA, + 4561: 0x51AB, + 4562: 0x51B3, + 4563: 0x51B1, + 4564: 0x51B2, + 4565: 0x51B0, + 4566: 0x51B5, + 4567: 0x51BD, + 4568: 0x51C5, + 4569: 0x51C9, + 4570: 0x51DB, + 4571: 0x51E0, + 4572: 0x8655, + 4573: 0x51E9, + 4574: 0x51ED, + 4575: 0x51F0, + 4576: 0x51F5, + 4577: 0x51FE, + 4578: 0x5204, + 4579: 0x520B, + 4580: 0x5214, + 4581: 0x520E, + 4582: 0x5227, + 4583: 0x522A, + 4584: 0x522E, + 4585: 0x5233, + 4586: 0x5239, + 4587: 0x524F, + 4588: 0x5244, + 4589: 0x524B, + 4590: 0x524C, + 4591: 0x525E, + 4592: 0x5254, + 4593: 0x526A, + 4594: 0x5274, + 4595: 0x5269, + 4596: 0x5273, + 4597: 0x527F, + 4598: 0x527D, + 4599: 0x528D, + 4600: 0x5294, + 4601: 0x5292, + 4602: 0x5271, + 4603: 0x5288, + 4604: 0x5291, + 4605: 0x8FA8, + 4606: 0x8FA7, + 4607: 0x52AC, + 4608: 0x52AD, + 4609: 0x52BC, + 4610: 0x52B5, + 4611: 0x52C1, + 4612: 0x52CD, + 4613: 0x52D7, + 4614: 0x52DE, + 4615: 0x52E3, + 4616: 0x52E6, + 4617: 0x98ED, + 4618: 0x52E0, + 4619: 0x52F3, + 4620: 0x52F5, + 4621: 0x52F8, + 4622: 0x52F9, + 4623: 0x5306, + 4624: 0x5308, + 4625: 0x7538, + 4626: 0x530D, + 4627: 0x5310, + 4628: 0x530F, + 4629: 0x5315, + 4630: 0x531A, + 4631: 0x5323, + 4632: 0x532F, + 4633: 0x5331, + 4634: 0x5333, + 4635: 0x5338, + 4636: 0x5340, + 4637: 0x5346, + 4638: 0x5345, + 4639: 0x4E17, + 4640: 0x5349, + 4641: 0x534D, + 4642: 0x51D6, + 4643: 0x535E, + 4644: 0x5369, + 4645: 0x536E, + 4646: 0x5918, + 4647: 0x537B, + 4648: 0x5377, + 4649: 0x5382, + 4650: 0x5396, + 4651: 0x53A0, + 4652: 0x53A6, + 4653: 0x53A5, + 4654: 0x53AE, + 4655: 0x53B0, + 4656: 0x53B6, + 4657: 0x53C3, + 4658: 0x7C12, + 4659: 0x96D9, + 4660: 0x53DF, + 4661: 0x66FC, + 4662: 0x71EE, + 4663: 0x53EE, + 4664: 0x53E8, + 4665: 0x53ED, + 4666: 0x53FA, + 4667: 0x5401, + 4668: 0x543D, + 4669: 0x5440, + 4670: 0x542C, + 4671: 0x542D, + 4672: 0x543C, + 4673: 0x542E, + 4674: 0x5436, + 4675: 0x5429, + 4676: 0x541D, + 4677: 0x544E, + 4678: 0x548F, + 4679: 0x5475, + 4680: 0x548E, + 4681: 0x545F, + 4682: 0x5471, + 4683: 0x5477, + 4684: 0x5470, + 4685: 0x5492, + 4686: 0x547B, + 4687: 0x5480, + 4688: 0x5476, + 4689: 0x5484, + 4690: 0x5490, + 4691: 0x5486, + 4692: 0x54C7, + 4693: 0x54A2, + 4694: 0x54B8, + 4695: 0x54A5, + 4696: 0x54AC, + 4697: 0x54C4, + 4698: 0x54C8, + 4699: 0x54A8, + 4700: 0x54AB, + 4701: 0x54C2, + 4702: 0x54A4, + 4703: 0x54BE, + 4704: 0x54BC, + 4705: 0x54D8, + 4706: 0x54E5, + 4707: 0x54E6, + 4708: 0x550F, + 4709: 0x5514, + 4710: 0x54FD, + 4711: 0x54EE, + 4712: 0x54ED, + 4713: 0x54FA, + 4714: 0x54E2, + 4715: 0x5539, + 4716: 0x5540, + 4717: 0x5563, + 4718: 0x554C, + 4719: 0x552E, + 4720: 0x555C, + 4721: 0x5545, + 4722: 0x5556, + 4723: 0x5557, + 4724: 0x5538, + 4725: 0x5533, + 4726: 0x555D, + 4727: 0x5599, + 4728: 0x5580, + 4729: 0x54AF, + 4730: 0x558A, + 4731: 0x559F, + 4732: 0x557B, + 4733: 0x557E, + 4734: 0x5598, + 4735: 0x559E, + 4736: 0x55AE, + 4737: 0x557C, + 4738: 0x5583, + 4739: 0x55A9, + 4740: 0x5587, + 4741: 0x55A8, + 4742: 0x55DA, + 4743: 0x55C5, + 4744: 0x55DF, + 4745: 0x55C4, + 4746: 0x55DC, + 4747: 0x55E4, + 4748: 0x55D4, + 4749: 0x5614, + 4750: 0x55F7, + 4751: 0x5616, + 4752: 0x55FE, + 4753: 0x55FD, + 4754: 0x561B, + 4755: 0x55F9, + 4756: 0x564E, + 4757: 0x5650, + 4758: 0x71DF, + 4759: 0x5634, + 4760: 0x5636, + 4761: 0x5632, + 4762: 0x5638, + 4763: 0x566B, + 4764: 0x5664, + 4765: 0x562F, + 4766: 0x566C, + 4767: 0x566A, + 4768: 0x5686, + 4769: 0x5680, + 4770: 0x568A, + 4771: 0x56A0, + 4772: 0x5694, + 4773: 0x568F, + 4774: 0x56A5, + 4775: 0x56AE, + 4776: 0x56B6, + 4777: 0x56B4, + 4778: 0x56C2, + 4779: 0x56BC, + 4780: 0x56C1, + 4781: 0x56C3, + 4782: 0x56C0, + 4783: 0x56C8, + 4784: 0x56CE, + 4785: 0x56D1, + 4786: 0x56D3, + 4787: 0x56D7, + 4788: 0x56EE, + 4789: 0x56F9, + 4790: 0x5700, + 4791: 0x56FF, + 4792: 0x5704, + 4793: 0x5709, + 4794: 0x5708, + 4795: 0x570B, + 4796: 0x570D, + 4797: 0x5713, + 4798: 0x5718, + 4799: 0x5716, + 4800: 0x55C7, + 4801: 0x571C, + 4802: 0x5726, + 4803: 0x5737, + 4804: 0x5738, + 4805: 0x574E, + 4806: 0x573B, + 4807: 0x5740, + 4808: 0x574F, + 4809: 0x5769, + 4810: 0x57C0, + 4811: 0x5788, + 4812: 0x5761, + 4813: 0x577F, + 4814: 0x5789, + 4815: 0x5793, + 4816: 0x57A0, + 4817: 0x57B3, + 4818: 0x57A4, + 4819: 0x57AA, + 4820: 0x57B0, + 4821: 0x57C3, + 4822: 0x57C6, + 4823: 0x57D4, + 4824: 0x57D2, + 4825: 0x57D3, + 4826: 0x580A, + 4827: 0x57D6, + 4828: 0x57E3, + 4829: 0x580B, + 4830: 0x5819, + 4831: 0x581D, + 4832: 0x5872, + 4833: 0x5821, + 4834: 0x5862, + 4835: 0x584B, + 4836: 0x5870, + 4837: 0x6BC0, + 4838: 0x5852, + 4839: 0x583D, + 4840: 0x5879, + 4841: 0x5885, + 4842: 0x58B9, + 4843: 0x589F, + 4844: 0x58AB, + 4845: 0x58BA, + 4846: 0x58DE, + 4847: 0x58BB, + 4848: 0x58B8, + 4849: 0x58AE, + 4850: 0x58C5, + 4851: 0x58D3, + 4852: 0x58D1, + 4853: 0x58D7, + 4854: 0x58D9, + 4855: 0x58D8, + 4856: 0x58E5, + 4857: 0x58DC, + 4858: 0x58E4, + 4859: 0x58DF, + 4860: 0x58EF, + 4861: 0x58FA, + 4862: 0x58F9, + 4863: 0x58FB, + 4864: 0x58FC, + 4865: 0x58FD, + 4866: 0x5902, + 4867: 0x590A, + 4868: 0x5910, + 4869: 0x591B, + 4870: 0x68A6, + 4871: 0x5925, + 4872: 0x592C, + 4873: 0x592D, + 4874: 0x5932, + 4875: 0x5938, + 4876: 0x593E, + 4877: 0x7AD2, + 4878: 0x5955, + 4879: 0x5950, + 4880: 0x594E, + 4881: 0x595A, + 4882: 0x5958, + 4883: 0x5962, + 4884: 0x5960, + 4885: 0x5967, + 4886: 0x596C, + 4887: 0x5969, + 4888: 0x5978, + 4889: 0x5981, + 4890: 0x599D, + 4891: 0x4F5E, + 4892: 0x4FAB, + 4893: 0x59A3, + 4894: 0x59B2, + 4895: 0x59C6, + 4896: 0x59E8, + 4897: 0x59DC, + 4898: 0x598D, + 4899: 0x59D9, + 4900: 0x59DA, + 4901: 0x5A25, + 4902: 0x5A1F, + 4903: 0x5A11, + 4904: 0x5A1C, + 4905: 0x5A09, + 4906: 0x5A1A, + 4907: 0x5A40, + 4908: 0x5A6C, + 4909: 0x5A49, + 4910: 0x5A35, + 4911: 0x5A36, + 4912: 0x5A62, + 4913: 0x5A6A, + 4914: 0x5A9A, + 4915: 0x5ABC, + 4916: 0x5ABE, + 4917: 0x5ACB, + 4918: 0x5AC2, + 4919: 0x5ABD, + 4920: 0x5AE3, + 4921: 0x5AD7, + 4922: 0x5AE6, + 4923: 0x5AE9, + 4924: 0x5AD6, + 4925: 0x5AFA, + 4926: 0x5AFB, + 4927: 0x5B0C, + 4928: 0x5B0B, + 4929: 0x5B16, + 4930: 0x5B32, + 4931: 0x5AD0, + 4932: 0x5B2A, + 4933: 0x5B36, + 4934: 0x5B3E, + 4935: 0x5B43, + 4936: 0x5B45, + 4937: 0x5B40, + 4938: 0x5B51, + 4939: 0x5B55, + 4940: 0x5B5A, + 4941: 0x5B5B, + 4942: 0x5B65, + 4943: 0x5B69, + 4944: 0x5B70, + 4945: 0x5B73, + 4946: 0x5B75, + 4947: 0x5B78, + 4948: 0x6588, + 4949: 0x5B7A, + 4950: 0x5B80, + 4951: 0x5B83, + 4952: 0x5BA6, + 4953: 0x5BB8, + 4954: 0x5BC3, + 4955: 0x5BC7, + 4956: 0x5BC9, + 4957: 0x5BD4, + 4958: 0x5BD0, + 4959: 0x5BE4, + 4960: 0x5BE6, + 4961: 0x5BE2, + 4962: 0x5BDE, + 4963: 0x5BE5, + 4964: 0x5BEB, + 4965: 0x5BF0, + 4966: 0x5BF6, + 4967: 0x5BF3, + 4968: 0x5C05, + 4969: 0x5C07, + 4970: 0x5C08, + 4971: 0x5C0D, + 4972: 0x5C13, + 4973: 0x5C20, + 4974: 0x5C22, + 4975: 0x5C28, + 4976: 0x5C38, + 4977: 0x5C39, + 4978: 0x5C41, + 4979: 0x5C46, + 4980: 0x5C4E, + 4981: 0x5C53, + 4982: 0x5C50, + 4983: 0x5C4F, + 4984: 0x5B71, + 4985: 0x5C6C, + 4986: 0x5C6E, + 4987: 0x4E62, + 4988: 0x5C76, + 4989: 0x5C79, + 4990: 0x5C8C, + 4991: 0x5C91, + 4992: 0x5C94, + 4993: 0x599B, + 4994: 0x5CAB, + 4995: 0x5CBB, + 4996: 0x5CB6, + 4997: 0x5CBC, + 4998: 0x5CB7, + 4999: 0x5CC5, + 5000: 0x5CBE, + 5001: 0x5CC7, + 5002: 0x5CD9, + 5003: 0x5CE9, + 5004: 0x5CFD, + 5005: 0x5CFA, + 5006: 0x5CED, + 5007: 0x5D8C, + 5008: 0x5CEA, + 5009: 0x5D0B, + 5010: 0x5D15, + 5011: 0x5D17, + 5012: 0x5D5C, + 5013: 0x5D1F, + 5014: 0x5D1B, + 5015: 0x5D11, + 5016: 0x5D14, + 5017: 0x5D22, + 5018: 0x5D1A, + 5019: 0x5D19, + 5020: 0x5D18, + 5021: 0x5D4C, + 5022: 0x5D52, + 5023: 0x5D4E, + 5024: 0x5D4B, + 5025: 0x5D6C, + 5026: 0x5D73, + 5027: 0x5D76, + 5028: 0x5D87, + 5029: 0x5D84, + 5030: 0x5D82, + 5031: 0x5DA2, + 5032: 0x5D9D, + 5033: 0x5DAC, + 5034: 0x5DAE, + 5035: 0x5DBD, + 5036: 0x5D90, + 5037: 0x5DB7, + 5038: 0x5DBC, + 5039: 0x5DC9, + 5040: 0x5DCD, + 5041: 0x5DD3, + 5042: 0x5DD2, + 5043: 0x5DD6, + 5044: 0x5DDB, + 5045: 0x5DEB, + 5046: 0x5DF2, + 5047: 0x5DF5, + 5048: 0x5E0B, + 5049: 0x5E1A, + 5050: 0x5E19, + 5051: 0x5E11, + 5052: 0x5E1B, + 5053: 0x5E36, + 5054: 0x5E37, + 5055: 0x5E44, + 5056: 0x5E43, + 5057: 0x5E40, + 5058: 0x5E4E, + 5059: 0x5E57, + 5060: 0x5E54, + 5061: 0x5E5F, + 5062: 0x5E62, + 5063: 0x5E64, + 5064: 0x5E47, + 5065: 0x5E75, + 5066: 0x5E76, + 5067: 0x5E7A, + 5068: 0x9EBC, + 5069: 0x5E7F, + 5070: 0x5EA0, + 5071: 0x5EC1, + 5072: 0x5EC2, + 5073: 0x5EC8, + 5074: 0x5ED0, + 5075: 0x5ECF, + 5076: 0x5ED6, + 5077: 0x5EE3, + 5078: 0x5EDD, + 5079: 0x5EDA, + 5080: 0x5EDB, + 5081: 0x5EE2, + 5082: 0x5EE1, + 5083: 0x5EE8, + 5084: 0x5EE9, + 5085: 0x5EEC, + 5086: 0x5EF1, + 5087: 0x5EF3, + 5088: 0x5EF0, + 5089: 0x5EF4, + 5090: 0x5EF8, + 5091: 0x5EFE, + 5092: 0x5F03, + 5093: 0x5F09, + 5094: 0x5F5D, + 5095: 0x5F5C, + 5096: 0x5F0B, + 5097: 0x5F11, + 5098: 0x5F16, + 5099: 0x5F29, + 5100: 0x5F2D, + 5101: 0x5F38, + 5102: 0x5F41, + 5103: 0x5F48, + 5104: 0x5F4C, + 5105: 0x5F4E, + 5106: 0x5F2F, + 5107: 0x5F51, + 5108: 0x5F56, + 5109: 0x5F57, + 5110: 0x5F59, + 5111: 0x5F61, + 5112: 0x5F6D, + 5113: 0x5F73, + 5114: 0x5F77, + 5115: 0x5F83, + 5116: 0x5F82, + 5117: 0x5F7F, + 5118: 0x5F8A, + 5119: 0x5F88, + 5120: 0x5F91, + 5121: 0x5F87, + 5122: 0x5F9E, + 5123: 0x5F99, + 5124: 0x5F98, + 5125: 0x5FA0, + 5126: 0x5FA8, + 5127: 0x5FAD, + 5128: 0x5FBC, + 5129: 0x5FD6, + 5130: 0x5FFB, + 5131: 0x5FE4, + 5132: 0x5FF8, + 5133: 0x5FF1, + 5134: 0x5FDD, + 5135: 0x60B3, + 5136: 0x5FFF, + 5137: 0x6021, + 5138: 0x6060, + 5139: 0x6019, + 5140: 0x6010, + 5141: 0x6029, + 5142: 0x600E, + 5143: 0x6031, + 5144: 0x601B, + 5145: 0x6015, + 5146: 0x602B, + 5147: 0x6026, + 5148: 0x600F, + 5149: 0x603A, + 5150: 0x605A, + 5151: 0x6041, + 5152: 0x606A, + 5153: 0x6077, + 5154: 0x605F, + 5155: 0x604A, + 5156: 0x6046, + 5157: 0x604D, + 5158: 0x6063, + 5159: 0x6043, + 5160: 0x6064, + 5161: 0x6042, + 5162: 0x606C, + 5163: 0x606B, + 5164: 0x6059, + 5165: 0x6081, + 5166: 0x608D, + 5167: 0x60E7, + 5168: 0x6083, + 5169: 0x609A, + 5170: 0x6084, + 5171: 0x609B, + 5172: 0x6096, + 5173: 0x6097, + 5174: 0x6092, + 5175: 0x60A7, + 5176: 0x608B, + 5177: 0x60E1, + 5178: 0x60B8, + 5179: 0x60E0, + 5180: 0x60D3, + 5181: 0x60B4, + 5182: 0x5FF0, + 5183: 0x60BD, + 5184: 0x60C6, + 5185: 0x60B5, + 5186: 0x60D8, + 5187: 0x614D, + 5188: 0x6115, + 5189: 0x6106, + 5190: 0x60F6, + 5191: 0x60F7, + 5192: 0x6100, + 5193: 0x60F4, + 5194: 0x60FA, + 5195: 0x6103, + 5196: 0x6121, + 5197: 0x60FB, + 5198: 0x60F1, + 5199: 0x610D, + 5200: 0x610E, + 5201: 0x6147, + 5202: 0x613E, + 5203: 0x6128, + 5204: 0x6127, + 5205: 0x614A, + 5206: 0x613F, + 5207: 0x613C, + 5208: 0x612C, + 5209: 0x6134, + 5210: 0x613D, + 5211: 0x6142, + 5212: 0x6144, + 5213: 0x6173, + 5214: 0x6177, + 5215: 0x6158, + 5216: 0x6159, + 5217: 0x615A, + 5218: 0x616B, + 5219: 0x6174, + 5220: 0x616F, + 5221: 0x6165, + 5222: 0x6171, + 5223: 0x615F, + 5224: 0x615D, + 5225: 0x6153, + 5226: 0x6175, + 5227: 0x6199, + 5228: 0x6196, + 5229: 0x6187, + 5230: 0x61AC, + 5231: 0x6194, + 5232: 0x619A, + 5233: 0x618A, + 5234: 0x6191, + 5235: 0x61AB, + 5236: 0x61AE, + 5237: 0x61CC, + 5238: 0x61CA, + 5239: 0x61C9, + 5240: 0x61F7, + 5241: 0x61C8, + 5242: 0x61C3, + 5243: 0x61C6, + 5244: 0x61BA, + 5245: 0x61CB, + 5246: 0x7F79, + 5247: 0x61CD, + 5248: 0x61E6, + 5249: 0x61E3, + 5250: 0x61F6, + 5251: 0x61FA, + 5252: 0x61F4, + 5253: 0x61FF, + 5254: 0x61FD, + 5255: 0x61FC, + 5256: 0x61FE, + 5257: 0x6200, + 5258: 0x6208, + 5259: 0x6209, + 5260: 0x620D, + 5261: 0x620C, + 5262: 0x6214, + 5263: 0x621B, + 5264: 0x621E, + 5265: 0x6221, + 5266: 0x622A, + 5267: 0x622E, + 5268: 0x6230, + 5269: 0x6232, + 5270: 0x6233, + 5271: 0x6241, + 5272: 0x624E, + 5273: 0x625E, + 5274: 0x6263, + 5275: 0x625B, + 5276: 0x6260, + 5277: 0x6268, + 5278: 0x627C, + 5279: 0x6282, + 5280: 0x6289, + 5281: 0x627E, + 5282: 0x6292, + 5283: 0x6293, + 5284: 0x6296, + 5285: 0x62D4, + 5286: 0x6283, + 5287: 0x6294, + 5288: 0x62D7, + 5289: 0x62D1, + 5290: 0x62BB, + 5291: 0x62CF, + 5292: 0x62FF, + 5293: 0x62C6, + 5294: 0x64D4, + 5295: 0x62C8, + 5296: 0x62DC, + 5297: 0x62CC, + 5298: 0x62CA, + 5299: 0x62C2, + 5300: 0x62C7, + 5301: 0x629B, + 5302: 0x62C9, + 5303: 0x630C, + 5304: 0x62EE, + 5305: 0x62F1, + 5306: 0x6327, + 5307: 0x6302, + 5308: 0x6308, + 5309: 0x62EF, + 5310: 0x62F5, + 5311: 0x6350, + 5312: 0x633E, + 5313: 0x634D, + 5314: 0x641C, + 5315: 0x634F, + 5316: 0x6396, + 5317: 0x638E, + 5318: 0x6380, + 5319: 0x63AB, + 5320: 0x6376, + 5321: 0x63A3, + 5322: 0x638F, + 5323: 0x6389, + 5324: 0x639F, + 5325: 0x63B5, + 5326: 0x636B, + 5327: 0x6369, + 5328: 0x63BE, + 5329: 0x63E9, + 5330: 0x63C0, + 5331: 0x63C6, + 5332: 0x63E3, + 5333: 0x63C9, + 5334: 0x63D2, + 5335: 0x63F6, + 5336: 0x63C4, + 5337: 0x6416, + 5338: 0x6434, + 5339: 0x6406, + 5340: 0x6413, + 5341: 0x6426, + 5342: 0x6436, + 5343: 0x651D, + 5344: 0x6417, + 5345: 0x6428, + 5346: 0x640F, + 5347: 0x6467, + 5348: 0x646F, + 5349: 0x6476, + 5350: 0x644E, + 5351: 0x652A, + 5352: 0x6495, + 5353: 0x6493, + 5354: 0x64A5, + 5355: 0x64A9, + 5356: 0x6488, + 5357: 0x64BC, + 5358: 0x64DA, + 5359: 0x64D2, + 5360: 0x64C5, + 5361: 0x64C7, + 5362: 0x64BB, + 5363: 0x64D8, + 5364: 0x64C2, + 5365: 0x64F1, + 5366: 0x64E7, + 5367: 0x8209, + 5368: 0x64E0, + 5369: 0x64E1, + 5370: 0x62AC, + 5371: 0x64E3, + 5372: 0x64EF, + 5373: 0x652C, + 5374: 0x64F6, + 5375: 0x64F4, + 5376: 0x64F2, + 5377: 0x64FA, + 5378: 0x6500, + 5379: 0x64FD, + 5380: 0x6518, + 5381: 0x651C, + 5382: 0x6505, + 5383: 0x6524, + 5384: 0x6523, + 5385: 0x652B, + 5386: 0x6534, + 5387: 0x6535, + 5388: 0x6537, + 5389: 0x6536, + 5390: 0x6538, + 5391: 0x754B, + 5392: 0x6548, + 5393: 0x6556, + 5394: 0x6555, + 5395: 0x654D, + 5396: 0x6558, + 5397: 0x655E, + 5398: 0x655D, + 5399: 0x6572, + 5400: 0x6578, + 5401: 0x6582, + 5402: 0x6583, + 5403: 0x8B8A, + 5404: 0x659B, + 5405: 0x659F, + 5406: 0x65AB, + 5407: 0x65B7, + 5408: 0x65C3, + 5409: 0x65C6, + 5410: 0x65C1, + 5411: 0x65C4, + 5412: 0x65CC, + 5413: 0x65D2, + 5414: 0x65DB, + 5415: 0x65D9, + 5416: 0x65E0, + 5417: 0x65E1, + 5418: 0x65F1, + 5419: 0x6772, + 5420: 0x660A, + 5421: 0x6603, + 5422: 0x65FB, + 5423: 0x6773, + 5424: 0x6635, + 5425: 0x6636, + 5426: 0x6634, + 5427: 0x661C, + 5428: 0x664F, + 5429: 0x6644, + 5430: 0x6649, + 5431: 0x6641, + 5432: 0x665E, + 5433: 0x665D, + 5434: 0x6664, + 5435: 0x6667, + 5436: 0x6668, + 5437: 0x665F, + 5438: 0x6662, + 5439: 0x6670, + 5440: 0x6683, + 5441: 0x6688, + 5442: 0x668E, + 5443: 0x6689, + 5444: 0x6684, + 5445: 0x6698, + 5446: 0x669D, + 5447: 0x66C1, + 5448: 0x66B9, + 5449: 0x66C9, + 5450: 0x66BE, + 5451: 0x66BC, + 5452: 0x66C4, + 5453: 0x66B8, + 5454: 0x66D6, + 5455: 0x66DA, + 5456: 0x66E0, + 5457: 0x663F, + 5458: 0x66E6, + 5459: 0x66E9, + 5460: 0x66F0, + 5461: 0x66F5, + 5462: 0x66F7, + 5463: 0x670F, + 5464: 0x6716, + 5465: 0x671E, + 5466: 0x6726, + 5467: 0x6727, + 5468: 0x9738, + 5469: 0x672E, + 5470: 0x673F, + 5471: 0x6736, + 5472: 0x6741, + 5473: 0x6738, + 5474: 0x6737, + 5475: 0x6746, + 5476: 0x675E, + 5477: 0x6760, + 5478: 0x6759, + 5479: 0x6763, + 5480: 0x6764, + 5481: 0x6789, + 5482: 0x6770, + 5483: 0x67A9, + 5484: 0x677C, + 5485: 0x676A, + 5486: 0x678C, + 5487: 0x678B, + 5488: 0x67A6, + 5489: 0x67A1, + 5490: 0x6785, + 5491: 0x67B7, + 5492: 0x67EF, + 5493: 0x67B4, + 5494: 0x67EC, + 5495: 0x67B3, + 5496: 0x67E9, + 5497: 0x67B8, + 5498: 0x67E4, + 5499: 0x67DE, + 5500: 0x67DD, + 5501: 0x67E2, + 5502: 0x67EE, + 5503: 0x67B9, + 5504: 0x67CE, + 5505: 0x67C6, + 5506: 0x67E7, + 5507: 0x6A9C, + 5508: 0x681E, + 5509: 0x6846, + 5510: 0x6829, + 5511: 0x6840, + 5512: 0x684D, + 5513: 0x6832, + 5514: 0x684E, + 5515: 0x68B3, + 5516: 0x682B, + 5517: 0x6859, + 5518: 0x6863, + 5519: 0x6877, + 5520: 0x687F, + 5521: 0x689F, + 5522: 0x688F, + 5523: 0x68AD, + 5524: 0x6894, + 5525: 0x689D, + 5526: 0x689B, + 5527: 0x6883, + 5528: 0x6AAE, + 5529: 0x68B9, + 5530: 0x6874, + 5531: 0x68B5, + 5532: 0x68A0, + 5533: 0x68BA, + 5534: 0x690F, + 5535: 0x688D, + 5536: 0x687E, + 5537: 0x6901, + 5538: 0x68CA, + 5539: 0x6908, + 5540: 0x68D8, + 5541: 0x6922, + 5542: 0x6926, + 5543: 0x68E1, + 5544: 0x690C, + 5545: 0x68CD, + 5546: 0x68D4, + 5547: 0x68E7, + 5548: 0x68D5, + 5549: 0x6936, + 5550: 0x6912, + 5551: 0x6904, + 5552: 0x68D7, + 5553: 0x68E3, + 5554: 0x6925, + 5555: 0x68F9, + 5556: 0x68E0, + 5557: 0x68EF, + 5558: 0x6928, + 5559: 0x692A, + 5560: 0x691A, + 5561: 0x6923, + 5562: 0x6921, + 5563: 0x68C6, + 5564: 0x6979, + 5565: 0x6977, + 5566: 0x695C, + 5567: 0x6978, + 5568: 0x696B, + 5569: 0x6954, + 5570: 0x697E, + 5571: 0x696E, + 5572: 0x6939, + 5573: 0x6974, + 5574: 0x693D, + 5575: 0x6959, + 5576: 0x6930, + 5577: 0x6961, + 5578: 0x695E, + 5579: 0x695D, + 5580: 0x6981, + 5581: 0x696A, + 5582: 0x69B2, + 5583: 0x69AE, + 5584: 0x69D0, + 5585: 0x69BF, + 5586: 0x69C1, + 5587: 0x69D3, + 5588: 0x69BE, + 5589: 0x69CE, + 5590: 0x5BE8, + 5591: 0x69CA, + 5592: 0x69DD, + 5593: 0x69BB, + 5594: 0x69C3, + 5595: 0x69A7, + 5596: 0x6A2E, + 5597: 0x6991, + 5598: 0x69A0, + 5599: 0x699C, + 5600: 0x6995, + 5601: 0x69B4, + 5602: 0x69DE, + 5603: 0x69E8, + 5604: 0x6A02, + 5605: 0x6A1B, + 5606: 0x69FF, + 5607: 0x6B0A, + 5608: 0x69F9, + 5609: 0x69F2, + 5610: 0x69E7, + 5611: 0x6A05, + 5612: 0x69B1, + 5613: 0x6A1E, + 5614: 0x69ED, + 5615: 0x6A14, + 5616: 0x69EB, + 5617: 0x6A0A, + 5618: 0x6A12, + 5619: 0x6AC1, + 5620: 0x6A23, + 5621: 0x6A13, + 5622: 0x6A44, + 5623: 0x6A0C, + 5624: 0x6A72, + 5625: 0x6A36, + 5626: 0x6A78, + 5627: 0x6A47, + 5628: 0x6A62, + 5629: 0x6A59, + 5630: 0x6A66, + 5631: 0x6A48, + 5632: 0x6A38, + 5633: 0x6A22, + 5634: 0x6A90, + 5635: 0x6A8D, + 5636: 0x6AA0, + 5637: 0x6A84, + 5638: 0x6AA2, + 5639: 0x6AA3, + 5640: 0x6A97, + 5641: 0x8617, + 5642: 0x6ABB, + 5643: 0x6AC3, + 5644: 0x6AC2, + 5645: 0x6AB8, + 5646: 0x6AB3, + 5647: 0x6AAC, + 5648: 0x6ADE, + 5649: 0x6AD1, + 5650: 0x6ADF, + 5651: 0x6AAA, + 5652: 0x6ADA, + 5653: 0x6AEA, + 5654: 0x6AFB, + 5655: 0x6B05, + 5656: 0x8616, + 5657: 0x6AFA, + 5658: 0x6B12, + 5659: 0x6B16, + 5660: 0x9B31, + 5661: 0x6B1F, + 5662: 0x6B38, + 5663: 0x6B37, + 5664: 0x76DC, + 5665: 0x6B39, + 5666: 0x98EE, + 5667: 0x6B47, + 5668: 0x6B43, + 5669: 0x6B49, + 5670: 0x6B50, + 5671: 0x6B59, + 5672: 0x6B54, + 5673: 0x6B5B, + 5674: 0x6B5F, + 5675: 0x6B61, + 5676: 0x6B78, + 5677: 0x6B79, + 5678: 0x6B7F, + 5679: 0x6B80, + 5680: 0x6B84, + 5681: 0x6B83, + 5682: 0x6B8D, + 5683: 0x6B98, + 5684: 0x6B95, + 5685: 0x6B9E, + 5686: 0x6BA4, + 5687: 0x6BAA, + 5688: 0x6BAB, + 5689: 0x6BAF, + 5690: 0x6BB2, + 5691: 0x6BB1, + 5692: 0x6BB3, + 5693: 0x6BB7, + 5694: 0x6BBC, + 5695: 0x6BC6, + 5696: 0x6BCB, + 5697: 0x6BD3, + 5698: 0x6BDF, + 5699: 0x6BEC, + 5700: 0x6BEB, + 5701: 0x6BF3, + 5702: 0x6BEF, + 5703: 0x9EBE, + 5704: 0x6C08, + 5705: 0x6C13, + 5706: 0x6C14, + 5707: 0x6C1B, + 5708: 0x6C24, + 5709: 0x6C23, + 5710: 0x6C5E, + 5711: 0x6C55, + 5712: 0x6C62, + 5713: 0x6C6A, + 5714: 0x6C82, + 5715: 0x6C8D, + 5716: 0x6C9A, + 5717: 0x6C81, + 5718: 0x6C9B, + 5719: 0x6C7E, + 5720: 0x6C68, + 5721: 0x6C73, + 5722: 0x6C92, + 5723: 0x6C90, + 5724: 0x6CC4, + 5725: 0x6CF1, + 5726: 0x6CD3, + 5727: 0x6CBD, + 5728: 0x6CD7, + 5729: 0x6CC5, + 5730: 0x6CDD, + 5731: 0x6CAE, + 5732: 0x6CB1, + 5733: 0x6CBE, + 5734: 0x6CBA, + 5735: 0x6CDB, + 5736: 0x6CEF, + 5737: 0x6CD9, + 5738: 0x6CEA, + 5739: 0x6D1F, + 5740: 0x884D, + 5741: 0x6D36, + 5742: 0x6D2B, + 5743: 0x6D3D, + 5744: 0x6D38, + 5745: 0x6D19, + 5746: 0x6D35, + 5747: 0x6D33, + 5748: 0x6D12, + 5749: 0x6D0C, + 5750: 0x6D63, + 5751: 0x6D93, + 5752: 0x6D64, + 5753: 0x6D5A, + 5754: 0x6D79, + 5755: 0x6D59, + 5756: 0x6D8E, + 5757: 0x6D95, + 5758: 0x6FE4, + 5759: 0x6D85, + 5760: 0x6DF9, + 5761: 0x6E15, + 5762: 0x6E0A, + 5763: 0x6DB5, + 5764: 0x6DC7, + 5765: 0x6DE6, + 5766: 0x6DB8, + 5767: 0x6DC6, + 5768: 0x6DEC, + 5769: 0x6DDE, + 5770: 0x6DCC, + 5771: 0x6DE8, + 5772: 0x6DD2, + 5773: 0x6DC5, + 5774: 0x6DFA, + 5775: 0x6DD9, + 5776: 0x6DE4, + 5777: 0x6DD5, + 5778: 0x6DEA, + 5779: 0x6DEE, + 5780: 0x6E2D, + 5781: 0x6E6E, + 5782: 0x6E2E, + 5783: 0x6E19, + 5784: 0x6E72, + 5785: 0x6E5F, + 5786: 0x6E3E, + 5787: 0x6E23, + 5788: 0x6E6B, + 5789: 0x6E2B, + 5790: 0x6E76, + 5791: 0x6E4D, + 5792: 0x6E1F, + 5793: 0x6E43, + 5794: 0x6E3A, + 5795: 0x6E4E, + 5796: 0x6E24, + 5797: 0x6EFF, + 5798: 0x6E1D, + 5799: 0x6E38, + 5800: 0x6E82, + 5801: 0x6EAA, + 5802: 0x6E98, + 5803: 0x6EC9, + 5804: 0x6EB7, + 5805: 0x6ED3, + 5806: 0x6EBD, + 5807: 0x6EAF, + 5808: 0x6EC4, + 5809: 0x6EB2, + 5810: 0x6ED4, + 5811: 0x6ED5, + 5812: 0x6E8F, + 5813: 0x6EA5, + 5814: 0x6EC2, + 5815: 0x6E9F, + 5816: 0x6F41, + 5817: 0x6F11, + 5818: 0x704C, + 5819: 0x6EEC, + 5820: 0x6EF8, + 5821: 0x6EFE, + 5822: 0x6F3F, + 5823: 0x6EF2, + 5824: 0x6F31, + 5825: 0x6EEF, + 5826: 0x6F32, + 5827: 0x6ECC, + 5828: 0x6F3E, + 5829: 0x6F13, + 5830: 0x6EF7, + 5831: 0x6F86, + 5832: 0x6F7A, + 5833: 0x6F78, + 5834: 0x6F81, + 5835: 0x6F80, + 5836: 0x6F6F, + 5837: 0x6F5B, + 5838: 0x6FF3, + 5839: 0x6F6D, + 5840: 0x6F82, + 5841: 0x6F7C, + 5842: 0x6F58, + 5843: 0x6F8E, + 5844: 0x6F91, + 5845: 0x6FC2, + 5846: 0x6F66, + 5847: 0x6FB3, + 5848: 0x6FA3, + 5849: 0x6FA1, + 5850: 0x6FA4, + 5851: 0x6FB9, + 5852: 0x6FC6, + 5853: 0x6FAA, + 5854: 0x6FDF, + 5855: 0x6FD5, + 5856: 0x6FEC, + 5857: 0x6FD4, + 5858: 0x6FD8, + 5859: 0x6FF1, + 5860: 0x6FEE, + 5861: 0x6FDB, + 5862: 0x7009, + 5863: 0x700B, + 5864: 0x6FFA, + 5865: 0x7011, + 5866: 0x7001, + 5867: 0x700F, + 5868: 0x6FFE, + 5869: 0x701B, + 5870: 0x701A, + 5871: 0x6F74, + 5872: 0x701D, + 5873: 0x7018, + 5874: 0x701F, + 5875: 0x7030, + 5876: 0x703E, + 5877: 0x7032, + 5878: 0x7051, + 5879: 0x7063, + 5880: 0x7099, + 5881: 0x7092, + 5882: 0x70AF, + 5883: 0x70F1, + 5884: 0x70AC, + 5885: 0x70B8, + 5886: 0x70B3, + 5887: 0x70AE, + 5888: 0x70DF, + 5889: 0x70CB, + 5890: 0x70DD, + 5891: 0x70D9, + 5892: 0x7109, + 5893: 0x70FD, + 5894: 0x711C, + 5895: 0x7119, + 5896: 0x7165, + 5897: 0x7155, + 5898: 0x7188, + 5899: 0x7166, + 5900: 0x7162, + 5901: 0x714C, + 5902: 0x7156, + 5903: 0x716C, + 5904: 0x718F, + 5905: 0x71FB, + 5906: 0x7184, + 5907: 0x7195, + 5908: 0x71A8, + 5909: 0x71AC, + 5910: 0x71D7, + 5911: 0x71B9, + 5912: 0x71BE, + 5913: 0x71D2, + 5914: 0x71C9, + 5915: 0x71D4, + 5916: 0x71CE, + 5917: 0x71E0, + 5918: 0x71EC, + 5919: 0x71E7, + 5920: 0x71F5, + 5921: 0x71FC, + 5922: 0x71F9, + 5923: 0x71FF, + 5924: 0x720D, + 5925: 0x7210, + 5926: 0x721B, + 5927: 0x7228, + 5928: 0x722D, + 5929: 0x722C, + 5930: 0x7230, + 5931: 0x7232, + 5932: 0x723B, + 5933: 0x723C, + 5934: 0x723F, + 5935: 0x7240, + 5936: 0x7246, + 5937: 0x724B, + 5938: 0x7258, + 5939: 0x7274, + 5940: 0x727E, + 5941: 0x7282, + 5942: 0x7281, + 5943: 0x7287, + 5944: 0x7292, + 5945: 0x7296, + 5946: 0x72A2, + 5947: 0x72A7, + 5948: 0x72B9, + 5949: 0x72B2, + 5950: 0x72C3, + 5951: 0x72C6, + 5952: 0x72C4, + 5953: 0x72CE, + 5954: 0x72D2, + 5955: 0x72E2, + 5956: 0x72E0, + 5957: 0x72E1, + 5958: 0x72F9, + 5959: 0x72F7, + 5960: 0x500F, + 5961: 0x7317, + 5962: 0x730A, + 5963: 0x731C, + 5964: 0x7316, + 5965: 0x731D, + 5966: 0x7334, + 5967: 0x732F, + 5968: 0x7329, + 5969: 0x7325, + 5970: 0x733E, + 5971: 0x734E, + 5972: 0x734F, + 5973: 0x9ED8, + 5974: 0x7357, + 5975: 0x736A, + 5976: 0x7368, + 5977: 0x7370, + 5978: 0x7378, + 5979: 0x7375, + 5980: 0x737B, + 5981: 0x737A, + 5982: 0x73C8, + 5983: 0x73B3, + 5984: 0x73CE, + 5985: 0x73BB, + 5986: 0x73C0, + 5987: 0x73E5, + 5988: 0x73EE, + 5989: 0x73DE, + 5990: 0x74A2, + 5991: 0x7405, + 5992: 0x746F, + 5993: 0x7425, + 5994: 0x73F8, + 5995: 0x7432, + 5996: 0x743A, + 5997: 0x7455, + 5998: 0x743F, + 5999: 0x745F, + 6000: 0x7459, + 6001: 0x7441, + 6002: 0x745C, + 6003: 0x7469, + 6004: 0x7470, + 6005: 0x7463, + 6006: 0x746A, + 6007: 0x7476, + 6008: 0x747E, + 6009: 0x748B, + 6010: 0x749E, + 6011: 0x74A7, + 6012: 0x74CA, + 6013: 0x74CF, + 6014: 0x74D4, + 6015: 0x73F1, + 6016: 0x74E0, + 6017: 0x74E3, + 6018: 0x74E7, + 6019: 0x74E9, + 6020: 0x74EE, + 6021: 0x74F2, + 6022: 0x74F0, + 6023: 0x74F1, + 6024: 0x74F8, + 6025: 0x74F7, + 6026: 0x7504, + 6027: 0x7503, + 6028: 0x7505, + 6029: 0x750C, + 6030: 0x750E, + 6031: 0x750D, + 6032: 0x7515, + 6033: 0x7513, + 6034: 0x751E, + 6035: 0x7526, + 6036: 0x752C, + 6037: 0x753C, + 6038: 0x7544, + 6039: 0x754D, + 6040: 0x754A, + 6041: 0x7549, + 6042: 0x755B, + 6043: 0x7546, + 6044: 0x755A, + 6045: 0x7569, + 6046: 0x7564, + 6047: 0x7567, + 6048: 0x756B, + 6049: 0x756D, + 6050: 0x7578, + 6051: 0x7576, + 6052: 0x7586, + 6053: 0x7587, + 6054: 0x7574, + 6055: 0x758A, + 6056: 0x7589, + 6057: 0x7582, + 6058: 0x7594, + 6059: 0x759A, + 6060: 0x759D, + 6061: 0x75A5, + 6062: 0x75A3, + 6063: 0x75C2, + 6064: 0x75B3, + 6065: 0x75C3, + 6066: 0x75B5, + 6067: 0x75BD, + 6068: 0x75B8, + 6069: 0x75BC, + 6070: 0x75B1, + 6071: 0x75CD, + 6072: 0x75CA, + 6073: 0x75D2, + 6074: 0x75D9, + 6075: 0x75E3, + 6076: 0x75DE, + 6077: 0x75FE, + 6078: 0x75FF, + 6079: 0x75FC, + 6080: 0x7601, + 6081: 0x75F0, + 6082: 0x75FA, + 6083: 0x75F2, + 6084: 0x75F3, + 6085: 0x760B, + 6086: 0x760D, + 6087: 0x7609, + 6088: 0x761F, + 6089: 0x7627, + 6090: 0x7620, + 6091: 0x7621, + 6092: 0x7622, + 6093: 0x7624, + 6094: 0x7634, + 6095: 0x7630, + 6096: 0x763B, + 6097: 0x7647, + 6098: 0x7648, + 6099: 0x7646, + 6100: 0x765C, + 6101: 0x7658, + 6102: 0x7661, + 6103: 0x7662, + 6104: 0x7668, + 6105: 0x7669, + 6106: 0x766A, + 6107: 0x7667, + 6108: 0x766C, + 6109: 0x7670, + 6110: 0x7672, + 6111: 0x7676, + 6112: 0x7678, + 6113: 0x767C, + 6114: 0x7680, + 6115: 0x7683, + 6116: 0x7688, + 6117: 0x768B, + 6118: 0x768E, + 6119: 0x7696, + 6120: 0x7693, + 6121: 0x7699, + 6122: 0x769A, + 6123: 0x76B0, + 6124: 0x76B4, + 6125: 0x76B8, + 6126: 0x76B9, + 6127: 0x76BA, + 6128: 0x76C2, + 6129: 0x76CD, + 6130: 0x76D6, + 6131: 0x76D2, + 6132: 0x76DE, + 6133: 0x76E1, + 6134: 0x76E5, + 6135: 0x76E7, + 6136: 0x76EA, + 6137: 0x862F, + 6138: 0x76FB, + 6139: 0x7708, + 6140: 0x7707, + 6141: 0x7704, + 6142: 0x7729, + 6143: 0x7724, + 6144: 0x771E, + 6145: 0x7725, + 6146: 0x7726, + 6147: 0x771B, + 6148: 0x7737, + 6149: 0x7738, + 6150: 0x7747, + 6151: 0x775A, + 6152: 0x7768, + 6153: 0x776B, + 6154: 0x775B, + 6155: 0x7765, + 6156: 0x777F, + 6157: 0x777E, + 6158: 0x7779, + 6159: 0x778E, + 6160: 0x778B, + 6161: 0x7791, + 6162: 0x77A0, + 6163: 0x779E, + 6164: 0x77B0, + 6165: 0x77B6, + 6166: 0x77B9, + 6167: 0x77BF, + 6168: 0x77BC, + 6169: 0x77BD, + 6170: 0x77BB, + 6171: 0x77C7, + 6172: 0x77CD, + 6173: 0x77D7, + 6174: 0x77DA, + 6175: 0x77DC, + 6176: 0x77E3, + 6177: 0x77EE, + 6178: 0x77FC, + 6179: 0x780C, + 6180: 0x7812, + 6181: 0x7926, + 6182: 0x7820, + 6183: 0x792A, + 6184: 0x7845, + 6185: 0x788E, + 6186: 0x7874, + 6187: 0x7886, + 6188: 0x787C, + 6189: 0x789A, + 6190: 0x788C, + 6191: 0x78A3, + 6192: 0x78B5, + 6193: 0x78AA, + 6194: 0x78AF, + 6195: 0x78D1, + 6196: 0x78C6, + 6197: 0x78CB, + 6198: 0x78D4, + 6199: 0x78BE, + 6200: 0x78BC, + 6201: 0x78C5, + 6202: 0x78CA, + 6203: 0x78EC, + 6204: 0x78E7, + 6205: 0x78DA, + 6206: 0x78FD, + 6207: 0x78F4, + 6208: 0x7907, + 6209: 0x7912, + 6210: 0x7911, + 6211: 0x7919, + 6212: 0x792C, + 6213: 0x792B, + 6214: 0x7940, + 6215: 0x7960, + 6216: 0x7957, + 6217: 0x795F, + 6218: 0x795A, + 6219: 0x7955, + 6220: 0x7953, + 6221: 0x797A, + 6222: 0x797F, + 6223: 0x798A, + 6224: 0x799D, + 6225: 0x79A7, + 6226: 0x9F4B, + 6227: 0x79AA, + 6228: 0x79AE, + 6229: 0x79B3, + 6230: 0x79B9, + 6231: 0x79BA, + 6232: 0x79C9, + 6233: 0x79D5, + 6234: 0x79E7, + 6235: 0x79EC, + 6236: 0x79E1, + 6237: 0x79E3, + 6238: 0x7A08, + 6239: 0x7A0D, + 6240: 0x7A18, + 6241: 0x7A19, + 6242: 0x7A20, + 6243: 0x7A1F, + 6244: 0x7980, + 6245: 0x7A31, + 6246: 0x7A3B, + 6247: 0x7A3E, + 6248: 0x7A37, + 6249: 0x7A43, + 6250: 0x7A57, + 6251: 0x7A49, + 6252: 0x7A61, + 6253: 0x7A62, + 6254: 0x7A69, + 6255: 0x9F9D, + 6256: 0x7A70, + 6257: 0x7A79, + 6258: 0x7A7D, + 6259: 0x7A88, + 6260: 0x7A97, + 6261: 0x7A95, + 6262: 0x7A98, + 6263: 0x7A96, + 6264: 0x7AA9, + 6265: 0x7AC8, + 6266: 0x7AB0, + 6267: 0x7AB6, + 6268: 0x7AC5, + 6269: 0x7AC4, + 6270: 0x7ABF, + 6271: 0x9083, + 6272: 0x7AC7, + 6273: 0x7ACA, + 6274: 0x7ACD, + 6275: 0x7ACF, + 6276: 0x7AD5, + 6277: 0x7AD3, + 6278: 0x7AD9, + 6279: 0x7ADA, + 6280: 0x7ADD, + 6281: 0x7AE1, + 6282: 0x7AE2, + 6283: 0x7AE6, + 6284: 0x7AED, + 6285: 0x7AF0, + 6286: 0x7B02, + 6287: 0x7B0F, + 6288: 0x7B0A, + 6289: 0x7B06, + 6290: 0x7B33, + 6291: 0x7B18, + 6292: 0x7B19, + 6293: 0x7B1E, + 6294: 0x7B35, + 6295: 0x7B28, + 6296: 0x7B36, + 6297: 0x7B50, + 6298: 0x7B7A, + 6299: 0x7B04, + 6300: 0x7B4D, + 6301: 0x7B0B, + 6302: 0x7B4C, + 6303: 0x7B45, + 6304: 0x7B75, + 6305: 0x7B65, + 6306: 0x7B74, + 6307: 0x7B67, + 6308: 0x7B70, + 6309: 0x7B71, + 6310: 0x7B6C, + 6311: 0x7B6E, + 6312: 0x7B9D, + 6313: 0x7B98, + 6314: 0x7B9F, + 6315: 0x7B8D, + 6316: 0x7B9C, + 6317: 0x7B9A, + 6318: 0x7B8B, + 6319: 0x7B92, + 6320: 0x7B8F, + 6321: 0x7B5D, + 6322: 0x7B99, + 6323: 0x7BCB, + 6324: 0x7BC1, + 6325: 0x7BCC, + 6326: 0x7BCF, + 6327: 0x7BB4, + 6328: 0x7BC6, + 6329: 0x7BDD, + 6330: 0x7BE9, + 6331: 0x7C11, + 6332: 0x7C14, + 6333: 0x7BE6, + 6334: 0x7BE5, + 6335: 0x7C60, + 6336: 0x7C00, + 6337: 0x7C07, + 6338: 0x7C13, + 6339: 0x7BF3, + 6340: 0x7BF7, + 6341: 0x7C17, + 6342: 0x7C0D, + 6343: 0x7BF6, + 6344: 0x7C23, + 6345: 0x7C27, + 6346: 0x7C2A, + 6347: 0x7C1F, + 6348: 0x7C37, + 6349: 0x7C2B, + 6350: 0x7C3D, + 6351: 0x7C4C, + 6352: 0x7C43, + 6353: 0x7C54, + 6354: 0x7C4F, + 6355: 0x7C40, + 6356: 0x7C50, + 6357: 0x7C58, + 6358: 0x7C5F, + 6359: 0x7C64, + 6360: 0x7C56, + 6361: 0x7C65, + 6362: 0x7C6C, + 6363: 0x7C75, + 6364: 0x7C83, + 6365: 0x7C90, + 6366: 0x7CA4, + 6367: 0x7CAD, + 6368: 0x7CA2, + 6369: 0x7CAB, + 6370: 0x7CA1, + 6371: 0x7CA8, + 6372: 0x7CB3, + 6373: 0x7CB2, + 6374: 0x7CB1, + 6375: 0x7CAE, + 6376: 0x7CB9, + 6377: 0x7CBD, + 6378: 0x7CC0, + 6379: 0x7CC5, + 6380: 0x7CC2, + 6381: 0x7CD8, + 6382: 0x7CD2, + 6383: 0x7CDC, + 6384: 0x7CE2, + 6385: 0x9B3B, + 6386: 0x7CEF, + 6387: 0x7CF2, + 6388: 0x7CF4, + 6389: 0x7CF6, + 6390: 0x7CFA, + 6391: 0x7D06, + 6392: 0x7D02, + 6393: 0x7D1C, + 6394: 0x7D15, + 6395: 0x7D0A, + 6396: 0x7D45, + 6397: 0x7D4B, + 6398: 0x7D2E, + 6399: 0x7D32, + 6400: 0x7D3F, + 6401: 0x7D35, + 6402: 0x7D46, + 6403: 0x7D73, + 6404: 0x7D56, + 6405: 0x7D4E, + 6406: 0x7D72, + 6407: 0x7D68, + 6408: 0x7D6E, + 6409: 0x7D4F, + 6410: 0x7D63, + 6411: 0x7D93, + 6412: 0x7D89, + 6413: 0x7D5B, + 6414: 0x7D8F, + 6415: 0x7D7D, + 6416: 0x7D9B, + 6417: 0x7DBA, + 6418: 0x7DAE, + 6419: 0x7DA3, + 6420: 0x7DB5, + 6421: 0x7DC7, + 6422: 0x7DBD, + 6423: 0x7DAB, + 6424: 0x7E3D, + 6425: 0x7DA2, + 6426: 0x7DAF, + 6427: 0x7DDC, + 6428: 0x7DB8, + 6429: 0x7D9F, + 6430: 0x7DB0, + 6431: 0x7DD8, + 6432: 0x7DDD, + 6433: 0x7DE4, + 6434: 0x7DDE, + 6435: 0x7DFB, + 6436: 0x7DF2, + 6437: 0x7DE1, + 6438: 0x7E05, + 6439: 0x7E0A, + 6440: 0x7E23, + 6441: 0x7E21, + 6442: 0x7E12, + 6443: 0x7E31, + 6444: 0x7E1F, + 6445: 0x7E09, + 6446: 0x7E0B, + 6447: 0x7E22, + 6448: 0x7E46, + 6449: 0x7E66, + 6450: 0x7E3B, + 6451: 0x7E35, + 6452: 0x7E39, + 6453: 0x7E43, + 6454: 0x7E37, + 6455: 0x7E32, + 6456: 0x7E3A, + 6457: 0x7E67, + 6458: 0x7E5D, + 6459: 0x7E56, + 6460: 0x7E5E, + 6461: 0x7E59, + 6462: 0x7E5A, + 6463: 0x7E79, + 6464: 0x7E6A, + 6465: 0x7E69, + 6466: 0x7E7C, + 6467: 0x7E7B, + 6468: 0x7E83, + 6469: 0x7DD5, + 6470: 0x7E7D, + 6471: 0x8FAE, + 6472: 0x7E7F, + 6473: 0x7E88, + 6474: 0x7E89, + 6475: 0x7E8C, + 6476: 0x7E92, + 6477: 0x7E90, + 6478: 0x7E93, + 6479: 0x7E94, + 6480: 0x7E96, + 6481: 0x7E8E, + 6482: 0x7E9B, + 6483: 0x7E9C, + 6484: 0x7F38, + 6485: 0x7F3A, + 6486: 0x7F45, + 6487: 0x7F4C, + 6488: 0x7F4D, + 6489: 0x7F4E, + 6490: 0x7F50, + 6491: 0x7F51, + 6492: 0x7F55, + 6493: 0x7F54, + 6494: 0x7F58, + 6495: 0x7F5F, + 6496: 0x7F60, + 6497: 0x7F68, + 6498: 0x7F69, + 6499: 0x7F67, + 6500: 0x7F78, + 6501: 0x7F82, + 6502: 0x7F86, + 6503: 0x7F83, + 6504: 0x7F88, + 6505: 0x7F87, + 6506: 0x7F8C, + 6507: 0x7F94, + 6508: 0x7F9E, + 6509: 0x7F9D, + 6510: 0x7F9A, + 6511: 0x7FA3, + 6512: 0x7FAF, + 6513: 0x7FB2, + 6514: 0x7FB9, + 6515: 0x7FAE, + 6516: 0x7FB6, + 6517: 0x7FB8, + 6518: 0x8B71, + 6519: 0x7FC5, + 6520: 0x7FC6, + 6521: 0x7FCA, + 6522: 0x7FD5, + 6523: 0x7FD4, + 6524: 0x7FE1, + 6525: 0x7FE6, + 6526: 0x7FE9, + 6527: 0x7FF3, + 6528: 0x7FF9, + 6529: 0x98DC, + 6530: 0x8006, + 6531: 0x8004, + 6532: 0x800B, + 6533: 0x8012, + 6534: 0x8018, + 6535: 0x8019, + 6536: 0x801C, + 6537: 0x8021, + 6538: 0x8028, + 6539: 0x803F, + 6540: 0x803B, + 6541: 0x804A, + 6542: 0x8046, + 6543: 0x8052, + 6544: 0x8058, + 6545: 0x805A, + 6546: 0x805F, + 6547: 0x8062, + 6548: 0x8068, + 6549: 0x8073, + 6550: 0x8072, + 6551: 0x8070, + 6552: 0x8076, + 6553: 0x8079, + 6554: 0x807D, + 6555: 0x807F, + 6556: 0x8084, + 6557: 0x8086, + 6558: 0x8085, + 6559: 0x809B, + 6560: 0x8093, + 6561: 0x809A, + 6562: 0x80AD, + 6563: 0x5190, + 6564: 0x80AC, + 6565: 0x80DB, + 6566: 0x80E5, + 6567: 0x80D9, + 6568: 0x80DD, + 6569: 0x80C4, + 6570: 0x80DA, + 6571: 0x80D6, + 6572: 0x8109, + 6573: 0x80EF, + 6574: 0x80F1, + 6575: 0x811B, + 6576: 0x8129, + 6577: 0x8123, + 6578: 0x812F, + 6579: 0x814B, + 6580: 0x968B, + 6581: 0x8146, + 6582: 0x813E, + 6583: 0x8153, + 6584: 0x8151, + 6585: 0x80FC, + 6586: 0x8171, + 6587: 0x816E, + 6588: 0x8165, + 6589: 0x8166, + 6590: 0x8174, + 6591: 0x8183, + 6592: 0x8188, + 6593: 0x818A, + 6594: 0x8180, + 6595: 0x8182, + 6596: 0x81A0, + 6597: 0x8195, + 6598: 0x81A4, + 6599: 0x81A3, + 6600: 0x815F, + 6601: 0x8193, + 6602: 0x81A9, + 6603: 0x81B0, + 6604: 0x81B5, + 6605: 0x81BE, + 6606: 0x81B8, + 6607: 0x81BD, + 6608: 0x81C0, + 6609: 0x81C2, + 6610: 0x81BA, + 6611: 0x81C9, + 6612: 0x81CD, + 6613: 0x81D1, + 6614: 0x81D9, + 6615: 0x81D8, + 6616: 0x81C8, + 6617: 0x81DA, + 6618: 0x81DF, + 6619: 0x81E0, + 6620: 0x81E7, + 6621: 0x81FA, + 6622: 0x81FB, + 6623: 0x81FE, + 6624: 0x8201, + 6625: 0x8202, + 6626: 0x8205, + 6627: 0x8207, + 6628: 0x820A, + 6629: 0x820D, + 6630: 0x8210, + 6631: 0x8216, + 6632: 0x8229, + 6633: 0x822B, + 6634: 0x8238, + 6635: 0x8233, + 6636: 0x8240, + 6637: 0x8259, + 6638: 0x8258, + 6639: 0x825D, + 6640: 0x825A, + 6641: 0x825F, + 6642: 0x8264, + 6643: 0x8262, + 6644: 0x8268, + 6645: 0x826A, + 6646: 0x826B, + 6647: 0x822E, + 6648: 0x8271, + 6649: 0x8277, + 6650: 0x8278, + 6651: 0x827E, + 6652: 0x828D, + 6653: 0x8292, + 6654: 0x82AB, + 6655: 0x829F, + 6656: 0x82BB, + 6657: 0x82AC, + 6658: 0x82E1, + 6659: 0x82E3, + 6660: 0x82DF, + 6661: 0x82D2, + 6662: 0x82F4, + 6663: 0x82F3, + 6664: 0x82FA, + 6665: 0x8393, + 6666: 0x8303, + 6667: 0x82FB, + 6668: 0x82F9, + 6669: 0x82DE, + 6670: 0x8306, + 6671: 0x82DC, + 6672: 0x8309, + 6673: 0x82D9, + 6674: 0x8335, + 6675: 0x8334, + 6676: 0x8316, + 6677: 0x8332, + 6678: 0x8331, + 6679: 0x8340, + 6680: 0x8339, + 6681: 0x8350, + 6682: 0x8345, + 6683: 0x832F, + 6684: 0x832B, + 6685: 0x8317, + 6686: 0x8318, + 6687: 0x8385, + 6688: 0x839A, + 6689: 0x83AA, + 6690: 0x839F, + 6691: 0x83A2, + 6692: 0x8396, + 6693: 0x8323, + 6694: 0x838E, + 6695: 0x8387, + 6696: 0x838A, + 6697: 0x837C, + 6698: 0x83B5, + 6699: 0x8373, + 6700: 0x8375, + 6701: 0x83A0, + 6702: 0x8389, + 6703: 0x83A8, + 6704: 0x83F4, + 6705: 0x8413, + 6706: 0x83EB, + 6707: 0x83CE, + 6708: 0x83FD, + 6709: 0x8403, + 6710: 0x83D8, + 6711: 0x840B, + 6712: 0x83C1, + 6713: 0x83F7, + 6714: 0x8407, + 6715: 0x83E0, + 6716: 0x83F2, + 6717: 0x840D, + 6718: 0x8422, + 6719: 0x8420, + 6720: 0x83BD, + 6721: 0x8438, + 6722: 0x8506, + 6723: 0x83FB, + 6724: 0x846D, + 6725: 0x842A, + 6726: 0x843C, + 6727: 0x855A, + 6728: 0x8484, + 6729: 0x8477, + 6730: 0x846B, + 6731: 0x84AD, + 6732: 0x846E, + 6733: 0x8482, + 6734: 0x8469, + 6735: 0x8446, + 6736: 0x842C, + 6737: 0x846F, + 6738: 0x8479, + 6739: 0x8435, + 6740: 0x84CA, + 6741: 0x8462, + 6742: 0x84B9, + 6743: 0x84BF, + 6744: 0x849F, + 6745: 0x84D9, + 6746: 0x84CD, + 6747: 0x84BB, + 6748: 0x84DA, + 6749: 0x84D0, + 6750: 0x84C1, + 6751: 0x84C6, + 6752: 0x84D6, + 6753: 0x84A1, + 6754: 0x8521, + 6755: 0x84FF, + 6756: 0x84F4, + 6757: 0x8517, + 6758: 0x8518, + 6759: 0x852C, + 6760: 0x851F, + 6761: 0x8515, + 6762: 0x8514, + 6763: 0x84FC, + 6764: 0x8540, + 6765: 0x8563, + 6766: 0x8558, + 6767: 0x8548, + 6768: 0x8541, + 6769: 0x8602, + 6770: 0x854B, + 6771: 0x8555, + 6772: 0x8580, + 6773: 0x85A4, + 6774: 0x8588, + 6775: 0x8591, + 6776: 0x858A, + 6777: 0x85A8, + 6778: 0x856D, + 6779: 0x8594, + 6780: 0x859B, + 6781: 0x85EA, + 6782: 0x8587, + 6783: 0x859C, + 6784: 0x8577, + 6785: 0x857E, + 6786: 0x8590, + 6787: 0x85C9, + 6788: 0x85BA, + 6789: 0x85CF, + 6790: 0x85B9, + 6791: 0x85D0, + 6792: 0x85D5, + 6793: 0x85DD, + 6794: 0x85E5, + 6795: 0x85DC, + 6796: 0x85F9, + 6797: 0x860A, + 6798: 0x8613, + 6799: 0x860B, + 6800: 0x85FE, + 6801: 0x85FA, + 6802: 0x8606, + 6803: 0x8622, + 6804: 0x861A, + 6805: 0x8630, + 6806: 0x863F, + 6807: 0x864D, + 6808: 0x4E55, + 6809: 0x8654, + 6810: 0x865F, + 6811: 0x8667, + 6812: 0x8671, + 6813: 0x8693, + 6814: 0x86A3, + 6815: 0x86A9, + 6816: 0x86AA, + 6817: 0x868B, + 6818: 0x868C, + 6819: 0x86B6, + 6820: 0x86AF, + 6821: 0x86C4, + 6822: 0x86C6, + 6823: 0x86B0, + 6824: 0x86C9, + 6825: 0x8823, + 6826: 0x86AB, + 6827: 0x86D4, + 6828: 0x86DE, + 6829: 0x86E9, + 6830: 0x86EC, + 6831: 0x86DF, + 6832: 0x86DB, + 6833: 0x86EF, + 6834: 0x8712, + 6835: 0x8706, + 6836: 0x8708, + 6837: 0x8700, + 6838: 0x8703, + 6839: 0x86FB, + 6840: 0x8711, + 6841: 0x8709, + 6842: 0x870D, + 6843: 0x86F9, + 6844: 0x870A, + 6845: 0x8734, + 6846: 0x873F, + 6847: 0x8737, + 6848: 0x873B, + 6849: 0x8725, + 6850: 0x8729, + 6851: 0x871A, + 6852: 0x8760, + 6853: 0x875F, + 6854: 0x8778, + 6855: 0x874C, + 6856: 0x874E, + 6857: 0x8774, + 6858: 0x8757, + 6859: 0x8768, + 6860: 0x876E, + 6861: 0x8759, + 6862: 0x8753, + 6863: 0x8763, + 6864: 0x876A, + 6865: 0x8805, + 6866: 0x87A2, + 6867: 0x879F, + 6868: 0x8782, + 6869: 0x87AF, + 6870: 0x87CB, + 6871: 0x87BD, + 6872: 0x87C0, + 6873: 0x87D0, + 6874: 0x96D6, + 6875: 0x87AB, + 6876: 0x87C4, + 6877: 0x87B3, + 6878: 0x87C7, + 6879: 0x87C6, + 6880: 0x87BB, + 6881: 0x87EF, + 6882: 0x87F2, + 6883: 0x87E0, + 6884: 0x880F, + 6885: 0x880D, + 6886: 0x87FE, + 6887: 0x87F6, + 6888: 0x87F7, + 6889: 0x880E, + 6890: 0x87D2, + 6891: 0x8811, + 6892: 0x8816, + 6893: 0x8815, + 6894: 0x8822, + 6895: 0x8821, + 6896: 0x8831, + 6897: 0x8836, + 6898: 0x8839, + 6899: 0x8827, + 6900: 0x883B, + 6901: 0x8844, + 6902: 0x8842, + 6903: 0x8852, + 6904: 0x8859, + 6905: 0x885E, + 6906: 0x8862, + 6907: 0x886B, + 6908: 0x8881, + 6909: 0x887E, + 6910: 0x889E, + 6911: 0x8875, + 6912: 0x887D, + 6913: 0x88B5, + 6914: 0x8872, + 6915: 0x8882, + 6916: 0x8897, + 6917: 0x8892, + 6918: 0x88AE, + 6919: 0x8899, + 6920: 0x88A2, + 6921: 0x888D, + 6922: 0x88A4, + 6923: 0x88B0, + 6924: 0x88BF, + 6925: 0x88B1, + 6926: 0x88C3, + 6927: 0x88C4, + 6928: 0x88D4, + 6929: 0x88D8, + 6930: 0x88D9, + 6931: 0x88DD, + 6932: 0x88F9, + 6933: 0x8902, + 6934: 0x88FC, + 6935: 0x88F4, + 6936: 0x88E8, + 6937: 0x88F2, + 6938: 0x8904, + 6939: 0x890C, + 6940: 0x890A, + 6941: 0x8913, + 6942: 0x8943, + 6943: 0x891E, + 6944: 0x8925, + 6945: 0x892A, + 6946: 0x892B, + 6947: 0x8941, + 6948: 0x8944, + 6949: 0x893B, + 6950: 0x8936, + 6951: 0x8938, + 6952: 0x894C, + 6953: 0x891D, + 6954: 0x8960, + 6955: 0x895E, + 6956: 0x8966, + 6957: 0x8964, + 6958: 0x896D, + 6959: 0x896A, + 6960: 0x896F, + 6961: 0x8974, + 6962: 0x8977, + 6963: 0x897E, + 6964: 0x8983, + 6965: 0x8988, + 6966: 0x898A, + 6967: 0x8993, + 6968: 0x8998, + 6969: 0x89A1, + 6970: 0x89A9, + 6971: 0x89A6, + 6972: 0x89AC, + 6973: 0x89AF, + 6974: 0x89B2, + 6975: 0x89BA, + 6976: 0x89BD, + 6977: 0x89BF, + 6978: 0x89C0, + 6979: 0x89DA, + 6980: 0x89DC, + 6981: 0x89DD, + 6982: 0x89E7, + 6983: 0x89F4, + 6984: 0x89F8, + 6985: 0x8A03, + 6986: 0x8A16, + 6987: 0x8A10, + 6988: 0x8A0C, + 6989: 0x8A1B, + 6990: 0x8A1D, + 6991: 0x8A25, + 6992: 0x8A36, + 6993: 0x8A41, + 6994: 0x8A5B, + 6995: 0x8A52, + 6996: 0x8A46, + 6997: 0x8A48, + 6998: 0x8A7C, + 6999: 0x8A6D, + 7000: 0x8A6C, + 7001: 0x8A62, + 7002: 0x8A85, + 7003: 0x8A82, + 7004: 0x8A84, + 7005: 0x8AA8, + 7006: 0x8AA1, + 7007: 0x8A91, + 7008: 0x8AA5, + 7009: 0x8AA6, + 7010: 0x8A9A, + 7011: 0x8AA3, + 7012: 0x8AC4, + 7013: 0x8ACD, + 7014: 0x8AC2, + 7015: 0x8ADA, + 7016: 0x8AEB, + 7017: 0x8AF3, + 7018: 0x8AE7, + 7019: 0x8AE4, + 7020: 0x8AF1, + 7021: 0x8B14, + 7022: 0x8AE0, + 7023: 0x8AE2, + 7024: 0x8AF7, + 7025: 0x8ADE, + 7026: 0x8ADB, + 7027: 0x8B0C, + 7028: 0x8B07, + 7029: 0x8B1A, + 7030: 0x8AE1, + 7031: 0x8B16, + 7032: 0x8B10, + 7033: 0x8B17, + 7034: 0x8B20, + 7035: 0x8B33, + 7036: 0x97AB, + 7037: 0x8B26, + 7038: 0x8B2B, + 7039: 0x8B3E, + 7040: 0x8B28, + 7041: 0x8B41, + 7042: 0x8B4C, + 7043: 0x8B4F, + 7044: 0x8B4E, + 7045: 0x8B49, + 7046: 0x8B56, + 7047: 0x8B5B, + 7048: 0x8B5A, + 7049: 0x8B6B, + 7050: 0x8B5F, + 7051: 0x8B6C, + 7052: 0x8B6F, + 7053: 0x8B74, + 7054: 0x8B7D, + 7055: 0x8B80, + 7056: 0x8B8C, + 7057: 0x8B8E, + 7058: 0x8B92, + 7059: 0x8B93, + 7060: 0x8B96, + 7061: 0x8B99, + 7062: 0x8B9A, + 7063: 0x8C3A, + 7064: 0x8C41, + 7065: 0x8C3F, + 7066: 0x8C48, + 7067: 0x8C4C, + 7068: 0x8C4E, + 7069: 0x8C50, + 7070: 0x8C55, + 7071: 0x8C62, + 7072: 0x8C6C, + 7073: 0x8C78, + 7074: 0x8C7A, + 7075: 0x8C82, + 7076: 0x8C89, + 7077: 0x8C85, + 7078: 0x8C8A, + 7079: 0x8C8D, + 7080: 0x8C8E, + 7081: 0x8C94, + 7082: 0x8C7C, + 7083: 0x8C98, + 7084: 0x621D, + 7085: 0x8CAD, + 7086: 0x8CAA, + 7087: 0x8CBD, + 7088: 0x8CB2, + 7089: 0x8CB3, + 7090: 0x8CAE, + 7091: 0x8CB6, + 7092: 0x8CC8, + 7093: 0x8CC1, + 7094: 0x8CE4, + 7095: 0x8CE3, + 7096: 0x8CDA, + 7097: 0x8CFD, + 7098: 0x8CFA, + 7099: 0x8CFB, + 7100: 0x8D04, + 7101: 0x8D05, + 7102: 0x8D0A, + 7103: 0x8D07, + 7104: 0x8D0F, + 7105: 0x8D0D, + 7106: 0x8D10, + 7107: 0x9F4E, + 7108: 0x8D13, + 7109: 0x8CCD, + 7110: 0x8D14, + 7111: 0x8D16, + 7112: 0x8D67, + 7113: 0x8D6D, + 7114: 0x8D71, + 7115: 0x8D73, + 7116: 0x8D81, + 7117: 0x8D99, + 7118: 0x8DC2, + 7119: 0x8DBE, + 7120: 0x8DBA, + 7121: 0x8DCF, + 7122: 0x8DDA, + 7123: 0x8DD6, + 7124: 0x8DCC, + 7125: 0x8DDB, + 7126: 0x8DCB, + 7127: 0x8DEA, + 7128: 0x8DEB, + 7129: 0x8DDF, + 7130: 0x8DE3, + 7131: 0x8DFC, + 7132: 0x8E08, + 7133: 0x8E09, + 7134: 0x8DFF, + 7135: 0x8E1D, + 7136: 0x8E1E, + 7137: 0x8E10, + 7138: 0x8E1F, + 7139: 0x8E42, + 7140: 0x8E35, + 7141: 0x8E30, + 7142: 0x8E34, + 7143: 0x8E4A, + 7144: 0x8E47, + 7145: 0x8E49, + 7146: 0x8E4C, + 7147: 0x8E50, + 7148: 0x8E48, + 7149: 0x8E59, + 7150: 0x8E64, + 7151: 0x8E60, + 7152: 0x8E2A, + 7153: 0x8E63, + 7154: 0x8E55, + 7155: 0x8E76, + 7156: 0x8E72, + 7157: 0x8E7C, + 7158: 0x8E81, + 7159: 0x8E87, + 7160: 0x8E85, + 7161: 0x8E84, + 7162: 0x8E8B, + 7163: 0x8E8A, + 7164: 0x8E93, + 7165: 0x8E91, + 7166: 0x8E94, + 7167: 0x8E99, + 7168: 0x8EAA, + 7169: 0x8EA1, + 7170: 0x8EAC, + 7171: 0x8EB0, + 7172: 0x8EC6, + 7173: 0x8EB1, + 7174: 0x8EBE, + 7175: 0x8EC5, + 7176: 0x8EC8, + 7177: 0x8ECB, + 7178: 0x8EDB, + 7179: 0x8EE3, + 7180: 0x8EFC, + 7181: 0x8EFB, + 7182: 0x8EEB, + 7183: 0x8EFE, + 7184: 0x8F0A, + 7185: 0x8F05, + 7186: 0x8F15, + 7187: 0x8F12, + 7188: 0x8F19, + 7189: 0x8F13, + 7190: 0x8F1C, + 7191: 0x8F1F, + 7192: 0x8F1B, + 7193: 0x8F0C, + 7194: 0x8F26, + 7195: 0x8F33, + 7196: 0x8F3B, + 7197: 0x8F39, + 7198: 0x8F45, + 7199: 0x8F42, + 7200: 0x8F3E, + 7201: 0x8F4C, + 7202: 0x8F49, + 7203: 0x8F46, + 7204: 0x8F4E, + 7205: 0x8F57, + 7206: 0x8F5C, + 7207: 0x8F62, + 7208: 0x8F63, + 7209: 0x8F64, + 7210: 0x8F9C, + 7211: 0x8F9F, + 7212: 0x8FA3, + 7213: 0x8FAD, + 7214: 0x8FAF, + 7215: 0x8FB7, + 7216: 0x8FDA, + 7217: 0x8FE5, + 7218: 0x8FE2, + 7219: 0x8FEA, + 7220: 0x8FEF, + 7221: 0x9087, + 7222: 0x8FF4, + 7223: 0x9005, + 7224: 0x8FF9, + 7225: 0x8FFA, + 7226: 0x9011, + 7227: 0x9015, + 7228: 0x9021, + 7229: 0x900D, + 7230: 0x901E, + 7231: 0x9016, + 7232: 0x900B, + 7233: 0x9027, + 7234: 0x9036, + 7235: 0x9035, + 7236: 0x9039, + 7237: 0x8FF8, + 7238: 0x904F, + 7239: 0x9050, + 7240: 0x9051, + 7241: 0x9052, + 7242: 0x900E, + 7243: 0x9049, + 7244: 0x903E, + 7245: 0x9056, + 7246: 0x9058, + 7247: 0x905E, + 7248: 0x9068, + 7249: 0x906F, + 7250: 0x9076, + 7251: 0x96A8, + 7252: 0x9072, + 7253: 0x9082, + 7254: 0x907D, + 7255: 0x9081, + 7256: 0x9080, + 7257: 0x908A, + 7258: 0x9089, + 7259: 0x908F, + 7260: 0x90A8, + 7261: 0x90AF, + 7262: 0x90B1, + 7263: 0x90B5, + 7264: 0x90E2, + 7265: 0x90E4, + 7266: 0x6248, + 7267: 0x90DB, + 7268: 0x9102, + 7269: 0x9112, + 7270: 0x9119, + 7271: 0x9132, + 7272: 0x9130, + 7273: 0x914A, + 7274: 0x9156, + 7275: 0x9158, + 7276: 0x9163, + 7277: 0x9165, + 7278: 0x9169, + 7279: 0x9173, + 7280: 0x9172, + 7281: 0x918B, + 7282: 0x9189, + 7283: 0x9182, + 7284: 0x91A2, + 7285: 0x91AB, + 7286: 0x91AF, + 7287: 0x91AA, + 7288: 0x91B5, + 7289: 0x91B4, + 7290: 0x91BA, + 7291: 0x91C0, + 7292: 0x91C1, + 7293: 0x91C9, + 7294: 0x91CB, + 7295: 0x91D0, + 7296: 0x91D6, + 7297: 0x91DF, + 7298: 0x91E1, + 7299: 0x91DB, + 7300: 0x91FC, + 7301: 0x91F5, + 7302: 0x91F6, + 7303: 0x921E, + 7304: 0x91FF, + 7305: 0x9214, + 7306: 0x922C, + 7307: 0x9215, + 7308: 0x9211, + 7309: 0x925E, + 7310: 0x9257, + 7311: 0x9245, + 7312: 0x9249, + 7313: 0x9264, + 7314: 0x9248, + 7315: 0x9295, + 7316: 0x923F, + 7317: 0x924B, + 7318: 0x9250, + 7319: 0x929C, + 7320: 0x9296, + 7321: 0x9293, + 7322: 0x929B, + 7323: 0x925A, + 7324: 0x92CF, + 7325: 0x92B9, + 7326: 0x92B7, + 7327: 0x92E9, + 7328: 0x930F, + 7329: 0x92FA, + 7330: 0x9344, + 7331: 0x932E, + 7332: 0x9319, + 7333: 0x9322, + 7334: 0x931A, + 7335: 0x9323, + 7336: 0x933A, + 7337: 0x9335, + 7338: 0x933B, + 7339: 0x935C, + 7340: 0x9360, + 7341: 0x937C, + 7342: 0x936E, + 7343: 0x9356, + 7344: 0x93B0, + 7345: 0x93AC, + 7346: 0x93AD, + 7347: 0x9394, + 7348: 0x93B9, + 7349: 0x93D6, + 7350: 0x93D7, + 7351: 0x93E8, + 7352: 0x93E5, + 7353: 0x93D8, + 7354: 0x93C3, + 7355: 0x93DD, + 7356: 0x93D0, + 7357: 0x93C8, + 7358: 0x93E4, + 7359: 0x941A, + 7360: 0x9414, + 7361: 0x9413, + 7362: 0x9403, + 7363: 0x9407, + 7364: 0x9410, + 7365: 0x9436, + 7366: 0x942B, + 7367: 0x9435, + 7368: 0x9421, + 7369: 0x943A, + 7370: 0x9441, + 7371: 0x9452, + 7372: 0x9444, + 7373: 0x945B, + 7374: 0x9460, + 7375: 0x9462, + 7376: 0x945E, + 7377: 0x946A, + 7378: 0x9229, + 7379: 0x9470, + 7380: 0x9475, + 7381: 0x9477, + 7382: 0x947D, + 7383: 0x945A, + 7384: 0x947C, + 7385: 0x947E, + 7386: 0x9481, + 7387: 0x947F, + 7388: 0x9582, + 7389: 0x9587, + 7390: 0x958A, + 7391: 0x9594, + 7392: 0x9596, + 7393: 0x9598, + 7394: 0x9599, + 7395: 0x95A0, + 7396: 0x95A8, + 7397: 0x95A7, + 7398: 0x95AD, + 7399: 0x95BC, + 7400: 0x95BB, + 7401: 0x95B9, + 7402: 0x95BE, + 7403: 0x95CA, + 7404: 0x6FF6, + 7405: 0x95C3, + 7406: 0x95CD, + 7407: 0x95CC, + 7408: 0x95D5, + 7409: 0x95D4, + 7410: 0x95D6, + 7411: 0x95DC, + 7412: 0x95E1, + 7413: 0x95E5, + 7414: 0x95E2, + 7415: 0x9621, + 7416: 0x9628, + 7417: 0x962E, + 7418: 0x962F, + 7419: 0x9642, + 7420: 0x964C, + 7421: 0x964F, + 7422: 0x964B, + 7423: 0x9677, + 7424: 0x965C, + 7425: 0x965E, + 7426: 0x965D, + 7427: 0x965F, + 7428: 0x9666, + 7429: 0x9672, + 7430: 0x966C, + 7431: 0x968D, + 7432: 0x9698, + 7433: 0x9695, + 7434: 0x9697, + 7435: 0x96AA, + 7436: 0x96A7, + 7437: 0x96B1, + 7438: 0x96B2, + 7439: 0x96B0, + 7440: 0x96B4, + 7441: 0x96B6, + 7442: 0x96B8, + 7443: 0x96B9, + 7444: 0x96CE, + 7445: 0x96CB, + 7446: 0x96C9, + 7447: 0x96CD, + 7448: 0x894D, + 7449: 0x96DC, + 7450: 0x970D, + 7451: 0x96D5, + 7452: 0x96F9, + 7453: 0x9704, + 7454: 0x9706, + 7455: 0x9708, + 7456: 0x9713, + 7457: 0x970E, + 7458: 0x9711, + 7459: 0x970F, + 7460: 0x9716, + 7461: 0x9719, + 7462: 0x9724, + 7463: 0x972A, + 7464: 0x9730, + 7465: 0x9739, + 7466: 0x973D, + 7467: 0x973E, + 7468: 0x9744, + 7469: 0x9746, + 7470: 0x9748, + 7471: 0x9742, + 7472: 0x9749, + 7473: 0x975C, + 7474: 0x9760, + 7475: 0x9764, + 7476: 0x9766, + 7477: 0x9768, + 7478: 0x52D2, + 7479: 0x976B, + 7480: 0x9771, + 7481: 0x9779, + 7482: 0x9785, + 7483: 0x977C, + 7484: 0x9781, + 7485: 0x977A, + 7486: 0x9786, + 7487: 0x978B, + 7488: 0x978F, + 7489: 0x9790, + 7490: 0x979C, + 7491: 0x97A8, + 7492: 0x97A6, + 7493: 0x97A3, + 7494: 0x97B3, + 7495: 0x97B4, + 7496: 0x97C3, + 7497: 0x97C6, + 7498: 0x97C8, + 7499: 0x97CB, + 7500: 0x97DC, + 7501: 0x97ED, + 7502: 0x9F4F, + 7503: 0x97F2, + 7504: 0x7ADF, + 7505: 0x97F6, + 7506: 0x97F5, + 7507: 0x980F, + 7508: 0x980C, + 7509: 0x9838, + 7510: 0x9824, + 7511: 0x9821, + 7512: 0x9837, + 7513: 0x983D, + 7514: 0x9846, + 7515: 0x984F, + 7516: 0x984B, + 7517: 0x986B, + 7518: 0x986F, + 7519: 0x9870, + 7520: 0x9871, + 7521: 0x9874, + 7522: 0x9873, + 7523: 0x98AA, + 7524: 0x98AF, + 7525: 0x98B1, + 7526: 0x98B6, + 7527: 0x98C4, + 7528: 0x98C3, + 7529: 0x98C6, + 7530: 0x98E9, + 7531: 0x98EB, + 7532: 0x9903, + 7533: 0x9909, + 7534: 0x9912, + 7535: 0x9914, + 7536: 0x9918, + 7537: 0x9921, + 7538: 0x991D, + 7539: 0x991E, + 7540: 0x9924, + 7541: 0x9920, + 7542: 0x992C, + 7543: 0x992E, + 7544: 0x993D, + 7545: 0x993E, + 7546: 0x9942, + 7547: 0x9949, + 7548: 0x9945, + 7549: 0x9950, + 7550: 0x994B, + 7551: 0x9951, + 7552: 0x9952, + 7553: 0x994C, + 7554: 0x9955, + 7555: 0x9997, + 7556: 0x9998, + 7557: 0x99A5, + 7558: 0x99AD, + 7559: 0x99AE, + 7560: 0x99BC, + 7561: 0x99DF, + 7562: 0x99DB, + 7563: 0x99DD, + 7564: 0x99D8, + 7565: 0x99D1, + 7566: 0x99ED, + 7567: 0x99EE, + 7568: 0x99F1, + 7569: 0x99F2, + 7570: 0x99FB, + 7571: 0x99F8, + 7572: 0x9A01, + 7573: 0x9A0F, + 7574: 0x9A05, + 7575: 0x99E2, + 7576: 0x9A19, + 7577: 0x9A2B, + 7578: 0x9A37, + 7579: 0x9A45, + 7580: 0x9A42, + 7581: 0x9A40, + 7582: 0x9A43, + 7583: 0x9A3E, + 7584: 0x9A55, + 7585: 0x9A4D, + 7586: 0x9A5B, + 7587: 0x9A57, + 7588: 0x9A5F, + 7589: 0x9A62, + 7590: 0x9A65, + 7591: 0x9A64, + 7592: 0x9A69, + 7593: 0x9A6B, + 7594: 0x9A6A, + 7595: 0x9AAD, + 7596: 0x9AB0, + 7597: 0x9ABC, + 7598: 0x9AC0, + 7599: 0x9ACF, + 7600: 0x9AD1, + 7601: 0x9AD3, + 7602: 0x9AD4, + 7603: 0x9ADE, + 7604: 0x9ADF, + 7605: 0x9AE2, + 7606: 0x9AE3, + 7607: 0x9AE6, + 7608: 0x9AEF, + 7609: 0x9AEB, + 7610: 0x9AEE, + 7611: 0x9AF4, + 7612: 0x9AF1, + 7613: 0x9AF7, + 7614: 0x9AFB, + 7615: 0x9B06, + 7616: 0x9B18, + 7617: 0x9B1A, + 7618: 0x9B1F, + 7619: 0x9B22, + 7620: 0x9B23, + 7621: 0x9B25, + 7622: 0x9B27, + 7623: 0x9B28, + 7624: 0x9B29, + 7625: 0x9B2A, + 7626: 0x9B2E, + 7627: 0x9B2F, + 7628: 0x9B32, + 7629: 0x9B44, + 7630: 0x9B43, + 7631: 0x9B4F, + 7632: 0x9B4D, + 7633: 0x9B4E, + 7634: 0x9B51, + 7635: 0x9B58, + 7636: 0x9B74, + 7637: 0x9B93, + 7638: 0x9B83, + 7639: 0x9B91, + 7640: 0x9B96, + 7641: 0x9B97, + 7642: 0x9B9F, + 7643: 0x9BA0, + 7644: 0x9BA8, + 7645: 0x9BB4, + 7646: 0x9BC0, + 7647: 0x9BCA, + 7648: 0x9BB9, + 7649: 0x9BC6, + 7650: 0x9BCF, + 7651: 0x9BD1, + 7652: 0x9BD2, + 7653: 0x9BE3, + 7654: 0x9BE2, + 7655: 0x9BE4, + 7656: 0x9BD4, + 7657: 0x9BE1, + 7658: 0x9C3A, + 7659: 0x9BF2, + 7660: 0x9BF1, + 7661: 0x9BF0, + 7662: 0x9C15, + 7663: 0x9C14, + 7664: 0x9C09, + 7665: 0x9C13, + 7666: 0x9C0C, + 7667: 0x9C06, + 7668: 0x9C08, + 7669: 0x9C12, + 7670: 0x9C0A, + 7671: 0x9C04, + 7672: 0x9C2E, + 7673: 0x9C1B, + 7674: 0x9C25, + 7675: 0x9C24, + 7676: 0x9C21, + 7677: 0x9C30, + 7678: 0x9C47, + 7679: 0x9C32, + 7680: 0x9C46, + 7681: 0x9C3E, + 7682: 0x9C5A, + 7683: 0x9C60, + 7684: 0x9C67, + 7685: 0x9C76, + 7686: 0x9C78, + 7687: 0x9CE7, + 7688: 0x9CEC, + 7689: 0x9CF0, + 7690: 0x9D09, + 7691: 0x9D08, + 7692: 0x9CEB, + 7693: 0x9D03, + 7694: 0x9D06, + 7695: 0x9D2A, + 7696: 0x9D26, + 7697: 0x9DAF, + 7698: 0x9D23, + 7699: 0x9D1F, + 7700: 0x9D44, + 7701: 0x9D15, + 7702: 0x9D12, + 7703: 0x9D41, + 7704: 0x9D3F, + 7705: 0x9D3E, + 7706: 0x9D46, + 7707: 0x9D48, + 7708: 0x9D5D, + 7709: 0x9D5E, + 7710: 0x9D64, + 7711: 0x9D51, + 7712: 0x9D50, + 7713: 0x9D59, + 7714: 0x9D72, + 7715: 0x9D89, + 7716: 0x9D87, + 7717: 0x9DAB, + 7718: 0x9D6F, + 7719: 0x9D7A, + 7720: 0x9D9A, + 7721: 0x9DA4, + 7722: 0x9DA9, + 7723: 0x9DB2, + 7724: 0x9DC4, + 7725: 0x9DC1, + 7726: 0x9DBB, + 7727: 0x9DB8, + 7728: 0x9DBA, + 7729: 0x9DC6, + 7730: 0x9DCF, + 7731: 0x9DC2, + 7732: 0x9DD9, + 7733: 0x9DD3, + 7734: 0x9DF8, + 7735: 0x9DE6, + 7736: 0x9DED, + 7737: 0x9DEF, + 7738: 0x9DFD, + 7739: 0x9E1A, + 7740: 0x9E1B, + 7741: 0x9E1E, + 7742: 0x9E75, + 7743: 0x9E79, + 7744: 0x9E7D, + 7745: 0x9E81, + 7746: 0x9E88, + 7747: 0x9E8B, + 7748: 0x9E8C, + 7749: 0x9E92, + 7750: 0x9E95, + 7751: 0x9E91, + 7752: 0x9E9D, + 7753: 0x9EA5, + 7754: 0x9EA9, + 7755: 0x9EB8, + 7756: 0x9EAA, + 7757: 0x9EAD, + 7758: 0x9761, + 7759: 0x9ECC, + 7760: 0x9ECE, + 7761: 0x9ECF, + 7762: 0x9ED0, + 7763: 0x9ED4, + 7764: 0x9EDC, + 7765: 0x9EDE, + 7766: 0x9EDD, + 7767: 0x9EE0, + 7768: 0x9EE5, + 7769: 0x9EE8, + 7770: 0x9EEF, + 7771: 0x9EF4, + 7772: 0x9EF6, + 7773: 0x9EF7, + 7774: 0x9EF9, + 7775: 0x9EFB, + 7776: 0x9EFC, + 7777: 0x9EFD, + 7778: 0x9F07, + 7779: 0x9F08, + 7780: 0x76B7, + 7781: 0x9F15, + 7782: 0x9F21, + 7783: 0x9F2C, + 7784: 0x9F3E, + 7785: 0x9F4A, + 7786: 0x9F52, + 7787: 0x9F54, + 7788: 0x9F63, + 7789: 0x9F5F, + 7790: 0x9F60, + 7791: 0x9F61, + 7792: 0x9F66, + 7793: 0x9F67, + 7794: 0x9F6C, + 7795: 0x9F6A, + 7796: 0x9F77, + 7797: 0x9F72, + 7798: 0x9F76, + 7799: 0x9F95, + 7800: 0x9F9C, + 7801: 0x9FA0, + 7802: 0x582F, + 7803: 0x69C7, + 7804: 0x9059, + 7805: 0x7464, + 7806: 0x51DC, + 7807: 0x7199, + 8272: 0x7E8A, + 8273: 0x891C, + 8274: 0x9348, + 8275: 0x9288, + 8276: 0x84DC, + 8277: 0x4FC9, + 8278: 0x70BB, + 8279: 0x6631, + 8280: 0x68C8, + 8281: 0x92F9, + 8282: 0x66FB, + 8283: 0x5F45, + 8284: 0x4E28, + 8285: 0x4EE1, + 8286: 0x4EFC, + 8287: 0x4F00, + 8288: 0x4F03, + 8289: 0x4F39, + 8290: 0x4F56, + 8291: 0x4F92, + 8292: 0x4F8A, + 8293: 0x4F9A, + 8294: 0x4F94, + 8295: 0x4FCD, + 8296: 0x5040, + 8297: 0x5022, + 8298: 0x4FFF, + 8299: 0x501E, + 8300: 0x5046, + 8301: 0x5070, + 8302: 0x5042, + 8303: 0x5094, + 8304: 0x50F4, + 8305: 0x50D8, + 8306: 0x514A, + 8307: 0x5164, + 8308: 0x519D, + 8309: 0x51BE, + 8310: 0x51EC, + 8311: 0x5215, + 8312: 0x529C, + 8313: 0x52A6, + 8314: 0x52C0, + 8315: 0x52DB, + 8316: 0x5300, + 8317: 0x5307, + 8318: 0x5324, + 8319: 0x5372, + 8320: 0x5393, + 8321: 0x53B2, + 8322: 0x53DD, + 8323: 0xFA0E, + 8324: 0x549C, + 8325: 0x548A, + 8326: 0x54A9, + 8327: 0x54FF, + 8328: 0x5586, + 8329: 0x5759, + 8330: 0x5765, + 8331: 0x57AC, + 8332: 0x57C8, + 8333: 0x57C7, + 8334: 0xFA0F, + 8335: 0xFA10, + 8336: 0x589E, + 8337: 0x58B2, + 8338: 0x590B, + 8339: 0x5953, + 8340: 0x595B, + 8341: 0x595D, + 8342: 0x5963, + 8343: 0x59A4, + 8344: 0x59BA, + 8345: 0x5B56, + 8346: 0x5BC0, + 8347: 0x752F, + 8348: 0x5BD8, + 8349: 0x5BEC, + 8350: 0x5C1E, + 8351: 0x5CA6, + 8352: 0x5CBA, + 8353: 0x5CF5, + 8354: 0x5D27, + 8355: 0x5D53, + 8356: 0xFA11, + 8357: 0x5D42, + 8358: 0x5D6D, + 8359: 0x5DB8, + 8360: 0x5DB9, + 8361: 0x5DD0, + 8362: 0x5F21, + 8363: 0x5F34, + 8364: 0x5F67, + 8365: 0x5FB7, + 8366: 0x5FDE, + 8367: 0x605D, + 8368: 0x6085, + 8369: 0x608A, + 8370: 0x60DE, + 8371: 0x60D5, + 8372: 0x6120, + 8373: 0x60F2, + 8374: 0x6111, + 8375: 0x6137, + 8376: 0x6130, + 8377: 0x6198, + 8378: 0x6213, + 8379: 0x62A6, + 8380: 0x63F5, + 8381: 0x6460, + 8382: 0x649D, + 8383: 0x64CE, + 8384: 0x654E, + 8385: 0x6600, + 8386: 0x6615, + 8387: 0x663B, + 8388: 0x6609, + 8389: 0x662E, + 8390: 0x661E, + 8391: 0x6624, + 8392: 0x6665, + 8393: 0x6657, + 8394: 0x6659, + 8395: 0xFA12, + 8396: 0x6673, + 8397: 0x6699, + 8398: 0x66A0, + 8399: 0x66B2, + 8400: 0x66BF, + 8401: 0x66FA, + 8402: 0x670E, + 8403: 0xF929, + 8404: 0x6766, + 8405: 0x67BB, + 8406: 0x6852, + 8407: 0x67C0, + 8408: 0x6801, + 8409: 0x6844, + 8410: 0x68CF, + 8411: 0xFA13, + 8412: 0x6968, + 8413: 0xFA14, + 8414: 0x6998, + 8415: 0x69E2, + 8416: 0x6A30, + 8417: 0x6A6B, + 8418: 0x6A46, + 8419: 0x6A73, + 8420: 0x6A7E, + 8421: 0x6AE2, + 8422: 0x6AE4, + 8423: 0x6BD6, + 8424: 0x6C3F, + 8425: 0x6C5C, + 8426: 0x6C86, + 8427: 0x6C6F, + 8428: 0x6CDA, + 8429: 0x6D04, + 8430: 0x6D87, + 8431: 0x6D6F, + 8432: 0x6D96, + 8433: 0x6DAC, + 8434: 0x6DCF, + 8435: 0x6DF8, + 8436: 0x6DF2, + 8437: 0x6DFC, + 8438: 0x6E39, + 8439: 0x6E5C, + 8440: 0x6E27, + 8441: 0x6E3C, + 8442: 0x6EBF, + 8443: 0x6F88, + 8444: 0x6FB5, + 8445: 0x6FF5, + 8446: 0x7005, + 8447: 0x7007, + 8448: 0x7028, + 8449: 0x7085, + 8450: 0x70AB, + 8451: 0x710F, + 8452: 0x7104, + 8453: 0x715C, + 8454: 0x7146, + 8455: 0x7147, + 8456: 0xFA15, + 8457: 0x71C1, + 8458: 0x71FE, + 8459: 0x72B1, + 8460: 0x72BE, + 8461: 0x7324, + 8462: 0xFA16, + 8463: 0x7377, + 8464: 0x73BD, + 8465: 0x73C9, + 8466: 0x73D6, + 8467: 0x73E3, + 8468: 0x73D2, + 8469: 0x7407, + 8470: 0x73F5, + 8471: 0x7426, + 8472: 0x742A, + 8473: 0x7429, + 8474: 0x742E, + 8475: 0x7462, + 8476: 0x7489, + 8477: 0x749F, + 8478: 0x7501, + 8479: 0x756F, + 8480: 0x7682, + 8481: 0x769C, + 8482: 0x769E, + 8483: 0x769B, + 8484: 0x76A6, + 8485: 0xFA17, + 8486: 0x7746, + 8487: 0x52AF, + 8488: 0x7821, + 8489: 0x784E, + 8490: 0x7864, + 8491: 0x787A, + 8492: 0x7930, + 8493: 0xFA18, + 8494: 0xFA19, + 8495: 0xFA1A, + 8496: 0x7994, + 8497: 0xFA1B, + 8498: 0x799B, + 8499: 0x7AD1, + 8500: 0x7AE7, + 8501: 0xFA1C, + 8502: 0x7AEB, + 8503: 0x7B9E, + 8504: 0xFA1D, + 8505: 0x7D48, + 8506: 0x7D5C, + 8507: 0x7DB7, + 8508: 0x7DA0, + 8509: 0x7DD6, + 8510: 0x7E52, + 8511: 0x7F47, + 8512: 0x7FA1, + 8513: 0xFA1E, + 8514: 0x8301, + 8515: 0x8362, + 8516: 0x837F, + 8517: 0x83C7, + 8518: 0x83F6, + 8519: 0x8448, + 8520: 0x84B4, + 8521: 0x8553, + 8522: 0x8559, + 8523: 0x856B, + 8524: 0xFA1F, + 8525: 0x85B0, + 8526: 0xFA20, + 8527: 0xFA21, + 8528: 0x8807, + 8529: 0x88F5, + 8530: 0x8A12, + 8531: 0x8A37, + 8532: 0x8A79, + 8533: 0x8AA7, + 8534: 0x8ABE, + 8535: 0x8ADF, + 8536: 0xFA22, + 8537: 0x8AF6, + 8538: 0x8B53, + 8539: 0x8B7F, + 8540: 0x8CF0, + 8541: 0x8CF4, + 8542: 0x8D12, + 8543: 0x8D76, + 8544: 0xFA23, + 8545: 0x8ECF, + 8546: 0xFA24, + 8547: 0xFA25, + 8548: 0x9067, + 8549: 0x90DE, + 8550: 0xFA26, + 8551: 0x9115, + 8552: 0x9127, + 8553: 0x91DA, + 8554: 0x91D7, + 8555: 0x91DE, + 8556: 0x91ED, + 8557: 0x91EE, + 8558: 0x91E4, + 8559: 0x91E5, + 8560: 0x9206, + 8561: 0x9210, + 8562: 0x920A, + 8563: 0x923A, + 8564: 0x9240, + 8565: 0x923C, + 8566: 0x924E, + 8567: 0x9259, + 8568: 0x9251, + 8569: 0x9239, + 8570: 0x9267, + 8571: 0x92A7, + 8572: 0x9277, + 8573: 0x9278, + 8574: 0x92E7, + 8575: 0x92D7, + 8576: 0x92D9, + 8577: 0x92D0, + 8578: 0xFA27, + 8579: 0x92D5, + 8580: 0x92E0, + 8581: 0x92D3, + 8582: 0x9325, + 8583: 0x9321, + 8584: 0x92FB, + 8585: 0xFA28, + 8586: 0x931E, + 8587: 0x92FF, + 8588: 0x931D, + 8589: 0x9302, + 8590: 0x9370, + 8591: 0x9357, + 8592: 0x93A4, + 8593: 0x93C6, + 8594: 0x93DE, + 8595: 0x93F8, + 8596: 0x9431, + 8597: 0x9445, + 8598: 0x9448, + 8599: 0x9592, + 8600: 0xF9DC, + 8601: 0xFA29, + 8602: 0x969D, + 8603: 0x96AF, + 8604: 0x9733, + 8605: 0x973B, + 8606: 0x9743, + 8607: 0x974D, + 8608: 0x974F, + 8609: 0x9751, + 8610: 0x9755, + 8611: 0x9857, + 8612: 0x9865, + 8613: 0xFA2A, + 8614: 0xFA2B, + 8615: 0x9927, + 8616: 0xFA2C, + 8617: 0x999E, + 8618: 0x9A4E, + 8619: 0x9AD9, + 8620: 0x9ADC, + 8621: 0x9B75, + 8622: 0x9B72, + 8623: 0x9B8F, + 8624: 0x9BB1, + 8625: 0x9BBB, + 8626: 0x9C00, + 8627: 0x9D70, + 8628: 0x9D6B, + 8629: 0xFA2D, + 8630: 0x9E19, + 8631: 0x9ED1, + 8634: 0x2170, + 8635: 0x2171, + 8636: 0x2172, + 8637: 0x2173, + 8638: 0x2174, + 8639: 0x2175, + 8640: 0x2176, + 8641: 0x2177, + 8642: 0x2178, + 8643: 0x2179, + 8644: 0xFFE2, + 8645: 0xFFE4, + 8646: 0xFF07, + 8647: 0xFF02, + 10716: 0x2170, + 10717: 0x2171, + 10718: 0x2172, + 10719: 0x2173, + 10720: 0x2174, + 10721: 0x2175, + 10722: 0x2176, + 10723: 0x2177, + 10724: 0x2178, + 10725: 0x2179, + 10726: 0x2160, + 10727: 0x2161, + 10728: 0x2162, + 10729: 0x2163, + 10730: 0x2164, + 10731: 0x2165, + 10732: 0x2166, + 10733: 0x2167, + 10734: 0x2168, + 10735: 0x2169, + 10736: 0xFFE2, + 10737: 0xFFE4, + 10738: 0xFF07, + 10739: 0xFF02, + 10740: 0x3231, + 10741: 0x2116, + 10742: 0x2121, + 10743: 0x2235, + 10744: 0x7E8A, + 10745: 0x891C, + 10746: 0x9348, + 10747: 0x9288, + 10748: 0x84DC, + 10749: 0x4FC9, + 10750: 0x70BB, + 10751: 0x6631, + 10752: 0x68C8, + 10753: 0x92F9, + 10754: 0x66FB, + 10755: 0x5F45, + 10756: 0x4E28, + 10757: 0x4EE1, + 10758: 0x4EFC, + 10759: 0x4F00, + 10760: 0x4F03, + 10761: 0x4F39, + 10762: 0x4F56, + 10763: 0x4F92, + 10764: 0x4F8A, + 10765: 0x4F9A, + 10766: 0x4F94, + 10767: 0x4FCD, + 10768: 0x5040, + 10769: 0x5022, + 10770: 0x4FFF, + 10771: 0x501E, + 10772: 0x5046, + 10773: 0x5070, + 10774: 0x5042, + 10775: 0x5094, + 10776: 0x50F4, + 10777: 0x50D8, + 10778: 0x514A, + 10779: 0x5164, + 10780: 0x519D, + 10781: 0x51BE, + 10782: 0x51EC, + 10783: 0x5215, + 10784: 0x529C, + 10785: 0x52A6, + 10786: 0x52C0, + 10787: 0x52DB, + 10788: 0x5300, + 10789: 0x5307, + 10790: 0x5324, + 10791: 0x5372, + 10792: 0x5393, + 10793: 0x53B2, + 10794: 0x53DD, + 10795: 0xFA0E, + 10796: 0x549C, + 10797: 0x548A, + 10798: 0x54A9, + 10799: 0x54FF, + 10800: 0x5586, + 10801: 0x5759, + 10802: 0x5765, + 10803: 0x57AC, + 10804: 0x57C8, + 10805: 0x57C7, + 10806: 0xFA0F, + 10807: 0xFA10, + 10808: 0x589E, + 10809: 0x58B2, + 10810: 0x590B, + 10811: 0x5953, + 10812: 0x595B, + 10813: 0x595D, + 10814: 0x5963, + 10815: 0x59A4, + 10816: 0x59BA, + 10817: 0x5B56, + 10818: 0x5BC0, + 10819: 0x752F, + 10820: 0x5BD8, + 10821: 0x5BEC, + 10822: 0x5C1E, + 10823: 0x5CA6, + 10824: 0x5CBA, + 10825: 0x5CF5, + 10826: 0x5D27, + 10827: 0x5D53, + 10828: 0xFA11, + 10829: 0x5D42, + 10830: 0x5D6D, + 10831: 0x5DB8, + 10832: 0x5DB9, + 10833: 0x5DD0, + 10834: 0x5F21, + 10835: 0x5F34, + 10836: 0x5F67, + 10837: 0x5FB7, + 10838: 0x5FDE, + 10839: 0x605D, + 10840: 0x6085, + 10841: 0x608A, + 10842: 0x60DE, + 10843: 0x60D5, + 10844: 0x6120, + 10845: 0x60F2, + 10846: 0x6111, + 10847: 0x6137, + 10848: 0x6130, + 10849: 0x6198, + 10850: 0x6213, + 10851: 0x62A6, + 10852: 0x63F5, + 10853: 0x6460, + 10854: 0x649D, + 10855: 0x64CE, + 10856: 0x654E, + 10857: 0x6600, + 10858: 0x6615, + 10859: 0x663B, + 10860: 0x6609, + 10861: 0x662E, + 10862: 0x661E, + 10863: 0x6624, + 10864: 0x6665, + 10865: 0x6657, + 10866: 0x6659, + 10867: 0xFA12, + 10868: 0x6673, + 10869: 0x6699, + 10870: 0x66A0, + 10871: 0x66B2, + 10872: 0x66BF, + 10873: 0x66FA, + 10874: 0x670E, + 10875: 0xF929, + 10876: 0x6766, + 10877: 0x67BB, + 10878: 0x6852, + 10879: 0x67C0, + 10880: 0x6801, + 10881: 0x6844, + 10882: 0x68CF, + 10883: 0xFA13, + 10884: 0x6968, + 10885: 0xFA14, + 10886: 0x6998, + 10887: 0x69E2, + 10888: 0x6A30, + 10889: 0x6A6B, + 10890: 0x6A46, + 10891: 0x6A73, + 10892: 0x6A7E, + 10893: 0x6AE2, + 10894: 0x6AE4, + 10895: 0x6BD6, + 10896: 0x6C3F, + 10897: 0x6C5C, + 10898: 0x6C86, + 10899: 0x6C6F, + 10900: 0x6CDA, + 10901: 0x6D04, + 10902: 0x6D87, + 10903: 0x6D6F, + 10904: 0x6D96, + 10905: 0x6DAC, + 10906: 0x6DCF, + 10907: 0x6DF8, + 10908: 0x6DF2, + 10909: 0x6DFC, + 10910: 0x6E39, + 10911: 0x6E5C, + 10912: 0x6E27, + 10913: 0x6E3C, + 10914: 0x6EBF, + 10915: 0x6F88, + 10916: 0x6FB5, + 10917: 0x6FF5, + 10918: 0x7005, + 10919: 0x7007, + 10920: 0x7028, + 10921: 0x7085, + 10922: 0x70AB, + 10923: 0x710F, + 10924: 0x7104, + 10925: 0x715C, + 10926: 0x7146, + 10927: 0x7147, + 10928: 0xFA15, + 10929: 0x71C1, + 10930: 0x71FE, + 10931: 0x72B1, + 10932: 0x72BE, + 10933: 0x7324, + 10934: 0xFA16, + 10935: 0x7377, + 10936: 0x73BD, + 10937: 0x73C9, + 10938: 0x73D6, + 10939: 0x73E3, + 10940: 0x73D2, + 10941: 0x7407, + 10942: 0x73F5, + 10943: 0x7426, + 10944: 0x742A, + 10945: 0x7429, + 10946: 0x742E, + 10947: 0x7462, + 10948: 0x7489, + 10949: 0x749F, + 10950: 0x7501, + 10951: 0x756F, + 10952: 0x7682, + 10953: 0x769C, + 10954: 0x769E, + 10955: 0x769B, + 10956: 0x76A6, + 10957: 0xFA17, + 10958: 0x7746, + 10959: 0x52AF, + 10960: 0x7821, + 10961: 0x784E, + 10962: 0x7864, + 10963: 0x787A, + 10964: 0x7930, + 10965: 0xFA18, + 10966: 0xFA19, + 10967: 0xFA1A, + 10968: 0x7994, + 10969: 0xFA1B, + 10970: 0x799B, + 10971: 0x7AD1, + 10972: 0x7AE7, + 10973: 0xFA1C, + 10974: 0x7AEB, + 10975: 0x7B9E, + 10976: 0xFA1D, + 10977: 0x7D48, + 10978: 0x7D5C, + 10979: 0x7DB7, + 10980: 0x7DA0, + 10981: 0x7DD6, + 10982: 0x7E52, + 10983: 0x7F47, + 10984: 0x7FA1, + 10985: 0xFA1E, + 10986: 0x8301, + 10987: 0x8362, + 10988: 0x837F, + 10989: 0x83C7, + 10990: 0x83F6, + 10991: 0x8448, + 10992: 0x84B4, + 10993: 0x8553, + 10994: 0x8559, + 10995: 0x856B, + 10996: 0xFA1F, + 10997: 0x85B0, + 10998: 0xFA20, + 10999: 0xFA21, + 11000: 0x8807, + 11001: 0x88F5, + 11002: 0x8A12, + 11003: 0x8A37, + 11004: 0x8A79, + 11005: 0x8AA7, + 11006: 0x8ABE, + 11007: 0x8ADF, + 11008: 0xFA22, + 11009: 0x8AF6, + 11010: 0x8B53, + 11011: 0x8B7F, + 11012: 0x8CF0, + 11013: 0x8CF4, + 11014: 0x8D12, + 11015: 0x8D76, + 11016: 0xFA23, + 11017: 0x8ECF, + 11018: 0xFA24, + 11019: 0xFA25, + 11020: 0x9067, + 11021: 0x90DE, + 11022: 0xFA26, + 11023: 0x9115, + 11024: 0x9127, + 11025: 0x91DA, + 11026: 0x91D7, + 11027: 0x91DE, + 11028: 0x91ED, + 11029: 0x91EE, + 11030: 0x91E4, + 11031: 0x91E5, + 11032: 0x9206, + 11033: 0x9210, + 11034: 0x920A, + 11035: 0x923A, + 11036: 0x9240, + 11037: 0x923C, + 11038: 0x924E, + 11039: 0x9259, + 11040: 0x9251, + 11041: 0x9239, + 11042: 0x9267, + 11043: 0x92A7, + 11044: 0x9277, + 11045: 0x9278, + 11046: 0x92E7, + 11047: 0x92D7, + 11048: 0x92D9, + 11049: 0x92D0, + 11050: 0xFA27, + 11051: 0x92D5, + 11052: 0x92E0, + 11053: 0x92D3, + 11054: 0x9325, + 11055: 0x9321, + 11056: 0x92FB, + 11057: 0xFA28, + 11058: 0x931E, + 11059: 0x92FF, + 11060: 0x931D, + 11061: 0x9302, + 11062: 0x9370, + 11063: 0x9357, + 11064: 0x93A4, + 11065: 0x93C6, + 11066: 0x93DE, + 11067: 0x93F8, + 11068: 0x9431, + 11069: 0x9445, + 11070: 0x9448, + 11071: 0x9592, + 11072: 0xF9DC, + 11073: 0xFA29, + 11074: 0x969D, + 11075: 0x96AF, + 11076: 0x9733, + 11077: 0x973B, + 11078: 0x9743, + 11079: 0x974D, + 11080: 0x974F, + 11081: 0x9751, + 11082: 0x9755, + 11083: 0x9857, + 11084: 0x9865, + 11085: 0xFA2A, + 11086: 0xFA2B, + 11087: 0x9927, + 11088: 0xFA2C, + 11089: 0x999E, + 11090: 0x9A4E, + 11091: 0x9AD9, + 11092: 0x9ADC, + 11093: 0x9B75, + 11094: 0x9B72, + 11095: 0x9B8F, + 11096: 0x9BB1, + 11097: 0x9BBB, + 11098: 0x9C00, + 11099: 0x9D70, + 11100: 0x9D6B, + 11101: 0xFA2D, + 11102: 0x9E19, + 11103: 0x9ED1, +} + +// jis0212Decode is the decoding table from JIS 0212 code to Unicode. +// It is defined at http://encoding.spec.whatwg.org/index-jis0212.txt +var jis0212Decode = [...]uint16{ + 108: 0x02D8, + 109: 0x02C7, + 110: 0x00B8, + 111: 0x02D9, + 112: 0x02DD, + 113: 0x00AF, + 114: 0x02DB, + 115: 0x02DA, + 116: 0xFF5E, + 117: 0x0384, + 118: 0x0385, + 127: 0x00A1, + 128: 0x00A6, + 129: 0x00BF, + 168: 0x00BA, + 169: 0x00AA, + 170: 0x00A9, + 171: 0x00AE, + 172: 0x2122, + 173: 0x00A4, + 174: 0x2116, + 534: 0x0386, + 535: 0x0388, + 536: 0x0389, + 537: 0x038A, + 538: 0x03AA, + 540: 0x038C, + 542: 0x038E, + 543: 0x03AB, + 545: 0x038F, + 550: 0x03AC, + 551: 0x03AD, + 552: 0x03AE, + 553: 0x03AF, + 554: 0x03CA, + 555: 0x0390, + 556: 0x03CC, + 557: 0x03C2, + 558: 0x03CD, + 559: 0x03CB, + 560: 0x03B0, + 561: 0x03CE, + 597: 0x0402, + 598: 0x0403, + 599: 0x0404, + 600: 0x0405, + 601: 0x0406, + 602: 0x0407, + 603: 0x0408, + 604: 0x0409, + 605: 0x040A, + 606: 0x040B, + 607: 0x040C, + 608: 0x040E, + 609: 0x040F, + 645: 0x0452, + 646: 0x0453, + 647: 0x0454, + 648: 0x0455, + 649: 0x0456, + 650: 0x0457, + 651: 0x0458, + 652: 0x0459, + 653: 0x045A, + 654: 0x045B, + 655: 0x045C, + 656: 0x045E, + 657: 0x045F, + 752: 0x00C6, + 753: 0x0110, + 755: 0x0126, + 757: 0x0132, + 759: 0x0141, + 760: 0x013F, + 762: 0x014A, + 763: 0x00D8, + 764: 0x0152, + 766: 0x0166, + 767: 0x00DE, + 784: 0x00E6, + 785: 0x0111, + 786: 0x00F0, + 787: 0x0127, + 788: 0x0131, + 789: 0x0133, + 790: 0x0138, + 791: 0x0142, + 792: 0x0140, + 793: 0x0149, + 794: 0x014B, + 795: 0x00F8, + 796: 0x0153, + 797: 0x00DF, + 798: 0x0167, + 799: 0x00FE, + 846: 0x00C1, + 847: 0x00C0, + 848: 0x00C4, + 849: 0x00C2, + 850: 0x0102, + 851: 0x01CD, + 852: 0x0100, + 853: 0x0104, + 854: 0x00C5, + 855: 0x00C3, + 856: 0x0106, + 857: 0x0108, + 858: 0x010C, + 859: 0x00C7, + 860: 0x010A, + 861: 0x010E, + 862: 0x00C9, + 863: 0x00C8, + 864: 0x00CB, + 865: 0x00CA, + 866: 0x011A, + 867: 0x0116, + 868: 0x0112, + 869: 0x0118, + 871: 0x011C, + 872: 0x011E, + 873: 0x0122, + 874: 0x0120, + 875: 0x0124, + 876: 0x00CD, + 877: 0x00CC, + 878: 0x00CF, + 879: 0x00CE, + 880: 0x01CF, + 881: 0x0130, + 882: 0x012A, + 883: 0x012E, + 884: 0x0128, + 885: 0x0134, + 886: 0x0136, + 887: 0x0139, + 888: 0x013D, + 889: 0x013B, + 890: 0x0143, + 891: 0x0147, + 892: 0x0145, + 893: 0x00D1, + 894: 0x00D3, + 895: 0x00D2, + 896: 0x00D6, + 897: 0x00D4, + 898: 0x01D1, + 899: 0x0150, + 900: 0x014C, + 901: 0x00D5, + 902: 0x0154, + 903: 0x0158, + 904: 0x0156, + 905: 0x015A, + 906: 0x015C, + 907: 0x0160, + 908: 0x015E, + 909: 0x0164, + 910: 0x0162, + 911: 0x00DA, + 912: 0x00D9, + 913: 0x00DC, + 914: 0x00DB, + 915: 0x016C, + 916: 0x01D3, + 917: 0x0170, + 918: 0x016A, + 919: 0x0172, + 920: 0x016E, + 921: 0x0168, + 922: 0x01D7, + 923: 0x01DB, + 924: 0x01D9, + 925: 0x01D5, + 926: 0x0174, + 927: 0x00DD, + 928: 0x0178, + 929: 0x0176, + 930: 0x0179, + 931: 0x017D, + 932: 0x017B, + 940: 0x00E1, + 941: 0x00E0, + 942: 0x00E4, + 943: 0x00E2, + 944: 0x0103, + 945: 0x01CE, + 946: 0x0101, + 947: 0x0105, + 948: 0x00E5, + 949: 0x00E3, + 950: 0x0107, + 951: 0x0109, + 952: 0x010D, + 953: 0x00E7, + 954: 0x010B, + 955: 0x010F, + 956: 0x00E9, + 957: 0x00E8, + 958: 0x00EB, + 959: 0x00EA, + 960: 0x011B, + 961: 0x0117, + 962: 0x0113, + 963: 0x0119, + 964: 0x01F5, + 965: 0x011D, + 966: 0x011F, + 968: 0x0121, + 969: 0x0125, + 970: 0x00ED, + 971: 0x00EC, + 972: 0x00EF, + 973: 0x00EE, + 974: 0x01D0, + 976: 0x012B, + 977: 0x012F, + 978: 0x0129, + 979: 0x0135, + 980: 0x0137, + 981: 0x013A, + 982: 0x013E, + 983: 0x013C, + 984: 0x0144, + 985: 0x0148, + 986: 0x0146, + 987: 0x00F1, + 988: 0x00F3, + 989: 0x00F2, + 990: 0x00F6, + 991: 0x00F4, + 992: 0x01D2, + 993: 0x0151, + 994: 0x014D, + 995: 0x00F5, + 996: 0x0155, + 997: 0x0159, + 998: 0x0157, + 999: 0x015B, + 1000: 0x015D, + 1001: 0x0161, + 1002: 0x015F, + 1003: 0x0165, + 1004: 0x0163, + 1005: 0x00FA, + 1006: 0x00F9, + 1007: 0x00FC, + 1008: 0x00FB, + 1009: 0x016D, + 1010: 0x01D4, + 1011: 0x0171, + 1012: 0x016B, + 1013: 0x0173, + 1014: 0x016F, + 1015: 0x0169, + 1016: 0x01D8, + 1017: 0x01DC, + 1018: 0x01DA, + 1019: 0x01D6, + 1020: 0x0175, + 1021: 0x00FD, + 1022: 0x00FF, + 1023: 0x0177, + 1024: 0x017A, + 1025: 0x017E, + 1026: 0x017C, + 1410: 0x4E02, + 1411: 0x4E04, + 1412: 0x4E05, + 1413: 0x4E0C, + 1414: 0x4E12, + 1415: 0x4E1F, + 1416: 0x4E23, + 1417: 0x4E24, + 1418: 0x4E28, + 1419: 0x4E2B, + 1420: 0x4E2E, + 1421: 0x4E2F, + 1422: 0x4E30, + 1423: 0x4E35, + 1424: 0x4E40, + 1425: 0x4E41, + 1426: 0x4E44, + 1427: 0x4E47, + 1428: 0x4E51, + 1429: 0x4E5A, + 1430: 0x4E5C, + 1431: 0x4E63, + 1432: 0x4E68, + 1433: 0x4E69, + 1434: 0x4E74, + 1435: 0x4E75, + 1436: 0x4E79, + 1437: 0x4E7F, + 1438: 0x4E8D, + 1439: 0x4E96, + 1440: 0x4E97, + 1441: 0x4E9D, + 1442: 0x4EAF, + 1443: 0x4EB9, + 1444: 0x4EC3, + 1445: 0x4ED0, + 1446: 0x4EDA, + 1447: 0x4EDB, + 1448: 0x4EE0, + 1449: 0x4EE1, + 1450: 0x4EE2, + 1451: 0x4EE8, + 1452: 0x4EEF, + 1453: 0x4EF1, + 1454: 0x4EF3, + 1455: 0x4EF5, + 1456: 0x4EFD, + 1457: 0x4EFE, + 1458: 0x4EFF, + 1459: 0x4F00, + 1460: 0x4F02, + 1461: 0x4F03, + 1462: 0x4F08, + 1463: 0x4F0B, + 1464: 0x4F0C, + 1465: 0x4F12, + 1466: 0x4F15, + 1467: 0x4F16, + 1468: 0x4F17, + 1469: 0x4F19, + 1470: 0x4F2E, + 1471: 0x4F31, + 1472: 0x4F60, + 1473: 0x4F33, + 1474: 0x4F35, + 1475: 0x4F37, + 1476: 0x4F39, + 1477: 0x4F3B, + 1478: 0x4F3E, + 1479: 0x4F40, + 1480: 0x4F42, + 1481: 0x4F48, + 1482: 0x4F49, + 1483: 0x4F4B, + 1484: 0x4F4C, + 1485: 0x4F52, + 1486: 0x4F54, + 1487: 0x4F56, + 1488: 0x4F58, + 1489: 0x4F5F, + 1490: 0x4F63, + 1491: 0x4F6A, + 1492: 0x4F6C, + 1493: 0x4F6E, + 1494: 0x4F71, + 1495: 0x4F77, + 1496: 0x4F78, + 1497: 0x4F79, + 1498: 0x4F7A, + 1499: 0x4F7D, + 1500: 0x4F7E, + 1501: 0x4F81, + 1502: 0x4F82, + 1503: 0x4F84, + 1504: 0x4F85, + 1505: 0x4F89, + 1506: 0x4F8A, + 1507: 0x4F8C, + 1508: 0x4F8E, + 1509: 0x4F90, + 1510: 0x4F92, + 1511: 0x4F93, + 1512: 0x4F94, + 1513: 0x4F97, + 1514: 0x4F99, + 1515: 0x4F9A, + 1516: 0x4F9E, + 1517: 0x4F9F, + 1518: 0x4FB2, + 1519: 0x4FB7, + 1520: 0x4FB9, + 1521: 0x4FBB, + 1522: 0x4FBC, + 1523: 0x4FBD, + 1524: 0x4FBE, + 1525: 0x4FC0, + 1526: 0x4FC1, + 1527: 0x4FC5, + 1528: 0x4FC6, + 1529: 0x4FC8, + 1530: 0x4FC9, + 1531: 0x4FCB, + 1532: 0x4FCC, + 1533: 0x4FCD, + 1534: 0x4FCF, + 1535: 0x4FD2, + 1536: 0x4FDC, + 1537: 0x4FE0, + 1538: 0x4FE2, + 1539: 0x4FF0, + 1540: 0x4FF2, + 1541: 0x4FFC, + 1542: 0x4FFD, + 1543: 0x4FFF, + 1544: 0x5000, + 1545: 0x5001, + 1546: 0x5004, + 1547: 0x5007, + 1548: 0x500A, + 1549: 0x500C, + 1550: 0x500E, + 1551: 0x5010, + 1552: 0x5013, + 1553: 0x5017, + 1554: 0x5018, + 1555: 0x501B, + 1556: 0x501C, + 1557: 0x501D, + 1558: 0x501E, + 1559: 0x5022, + 1560: 0x5027, + 1561: 0x502E, + 1562: 0x5030, + 1563: 0x5032, + 1564: 0x5033, + 1565: 0x5035, + 1566: 0x5040, + 1567: 0x5041, + 1568: 0x5042, + 1569: 0x5045, + 1570: 0x5046, + 1571: 0x504A, + 1572: 0x504C, + 1573: 0x504E, + 1574: 0x5051, + 1575: 0x5052, + 1576: 0x5053, + 1577: 0x5057, + 1578: 0x5059, + 1579: 0x505F, + 1580: 0x5060, + 1581: 0x5062, + 1582: 0x5063, + 1583: 0x5066, + 1584: 0x5067, + 1585: 0x506A, + 1586: 0x506D, + 1587: 0x5070, + 1588: 0x5071, + 1589: 0x503B, + 1590: 0x5081, + 1591: 0x5083, + 1592: 0x5084, + 1593: 0x5086, + 1594: 0x508A, + 1595: 0x508E, + 1596: 0x508F, + 1597: 0x5090, + 1598: 0x5092, + 1599: 0x5093, + 1600: 0x5094, + 1601: 0x5096, + 1602: 0x509B, + 1603: 0x509C, + 1604: 0x509E, + 1605: 0x509F, + 1606: 0x50A0, + 1607: 0x50A1, + 1608: 0x50A2, + 1609: 0x50AA, + 1610: 0x50AF, + 1611: 0x50B0, + 1612: 0x50B9, + 1613: 0x50BA, + 1614: 0x50BD, + 1615: 0x50C0, + 1616: 0x50C3, + 1617: 0x50C4, + 1618: 0x50C7, + 1619: 0x50CC, + 1620: 0x50CE, + 1621: 0x50D0, + 1622: 0x50D3, + 1623: 0x50D4, + 1624: 0x50D8, + 1625: 0x50DC, + 1626: 0x50DD, + 1627: 0x50DF, + 1628: 0x50E2, + 1629: 0x50E4, + 1630: 0x50E6, + 1631: 0x50E8, + 1632: 0x50E9, + 1633: 0x50EF, + 1634: 0x50F1, + 1635: 0x50F6, + 1636: 0x50FA, + 1637: 0x50FE, + 1638: 0x5103, + 1639: 0x5106, + 1640: 0x5107, + 1641: 0x5108, + 1642: 0x510B, + 1643: 0x510C, + 1644: 0x510D, + 1645: 0x510E, + 1646: 0x50F2, + 1647: 0x5110, + 1648: 0x5117, + 1649: 0x5119, + 1650: 0x511B, + 1651: 0x511C, + 1652: 0x511D, + 1653: 0x511E, + 1654: 0x5123, + 1655: 0x5127, + 1656: 0x5128, + 1657: 0x512C, + 1658: 0x512D, + 1659: 0x512F, + 1660: 0x5131, + 1661: 0x5133, + 1662: 0x5134, + 1663: 0x5135, + 1664: 0x5138, + 1665: 0x5139, + 1666: 0x5142, + 1667: 0x514A, + 1668: 0x514F, + 1669: 0x5153, + 1670: 0x5155, + 1671: 0x5157, + 1672: 0x5158, + 1673: 0x515F, + 1674: 0x5164, + 1675: 0x5166, + 1676: 0x517E, + 1677: 0x5183, + 1678: 0x5184, + 1679: 0x518B, + 1680: 0x518E, + 1681: 0x5198, + 1682: 0x519D, + 1683: 0x51A1, + 1684: 0x51A3, + 1685: 0x51AD, + 1686: 0x51B8, + 1687: 0x51BA, + 1688: 0x51BC, + 1689: 0x51BE, + 1690: 0x51BF, + 1691: 0x51C2, + 1692: 0x51C8, + 1693: 0x51CF, + 1694: 0x51D1, + 1695: 0x51D2, + 1696: 0x51D3, + 1697: 0x51D5, + 1698: 0x51D8, + 1699: 0x51DE, + 1700: 0x51E2, + 1701: 0x51E5, + 1702: 0x51EE, + 1703: 0x51F2, + 1704: 0x51F3, + 1705: 0x51F4, + 1706: 0x51F7, + 1707: 0x5201, + 1708: 0x5202, + 1709: 0x5205, + 1710: 0x5212, + 1711: 0x5213, + 1712: 0x5215, + 1713: 0x5216, + 1714: 0x5218, + 1715: 0x5222, + 1716: 0x5228, + 1717: 0x5231, + 1718: 0x5232, + 1719: 0x5235, + 1720: 0x523C, + 1721: 0x5245, + 1722: 0x5249, + 1723: 0x5255, + 1724: 0x5257, + 1725: 0x5258, + 1726: 0x525A, + 1727: 0x525C, + 1728: 0x525F, + 1729: 0x5260, + 1730: 0x5261, + 1731: 0x5266, + 1732: 0x526E, + 1733: 0x5277, + 1734: 0x5278, + 1735: 0x5279, + 1736: 0x5280, + 1737: 0x5282, + 1738: 0x5285, + 1739: 0x528A, + 1740: 0x528C, + 1741: 0x5293, + 1742: 0x5295, + 1743: 0x5296, + 1744: 0x5297, + 1745: 0x5298, + 1746: 0x529A, + 1747: 0x529C, + 1748: 0x52A4, + 1749: 0x52A5, + 1750: 0x52A6, + 1751: 0x52A7, + 1752: 0x52AF, + 1753: 0x52B0, + 1754: 0x52B6, + 1755: 0x52B7, + 1756: 0x52B8, + 1757: 0x52BA, + 1758: 0x52BB, + 1759: 0x52BD, + 1760: 0x52C0, + 1761: 0x52C4, + 1762: 0x52C6, + 1763: 0x52C8, + 1764: 0x52CC, + 1765: 0x52CF, + 1766: 0x52D1, + 1767: 0x52D4, + 1768: 0x52D6, + 1769: 0x52DB, + 1770: 0x52DC, + 1771: 0x52E1, + 1772: 0x52E5, + 1773: 0x52E8, + 1774: 0x52E9, + 1775: 0x52EA, + 1776: 0x52EC, + 1777: 0x52F0, + 1778: 0x52F1, + 1779: 0x52F4, + 1780: 0x52F6, + 1781: 0x52F7, + 1782: 0x5300, + 1783: 0x5303, + 1784: 0x530A, + 1785: 0x530B, + 1786: 0x530C, + 1787: 0x5311, + 1788: 0x5313, + 1789: 0x5318, + 1790: 0x531B, + 1791: 0x531C, + 1792: 0x531E, + 1793: 0x531F, + 1794: 0x5325, + 1795: 0x5327, + 1796: 0x5328, + 1797: 0x5329, + 1798: 0x532B, + 1799: 0x532C, + 1800: 0x532D, + 1801: 0x5330, + 1802: 0x5332, + 1803: 0x5335, + 1804: 0x533C, + 1805: 0x533D, + 1806: 0x533E, + 1807: 0x5342, + 1808: 0x534C, + 1809: 0x534B, + 1810: 0x5359, + 1811: 0x535B, + 1812: 0x5361, + 1813: 0x5363, + 1814: 0x5365, + 1815: 0x536C, + 1816: 0x536D, + 1817: 0x5372, + 1818: 0x5379, + 1819: 0x537E, + 1820: 0x5383, + 1821: 0x5387, + 1822: 0x5388, + 1823: 0x538E, + 1824: 0x5393, + 1825: 0x5394, + 1826: 0x5399, + 1827: 0x539D, + 1828: 0x53A1, + 1829: 0x53A4, + 1830: 0x53AA, + 1831: 0x53AB, + 1832: 0x53AF, + 1833: 0x53B2, + 1834: 0x53B4, + 1835: 0x53B5, + 1836: 0x53B7, + 1837: 0x53B8, + 1838: 0x53BA, + 1839: 0x53BD, + 1840: 0x53C0, + 1841: 0x53C5, + 1842: 0x53CF, + 1843: 0x53D2, + 1844: 0x53D3, + 1845: 0x53D5, + 1846: 0x53DA, + 1847: 0x53DD, + 1848: 0x53DE, + 1849: 0x53E0, + 1850: 0x53E6, + 1851: 0x53E7, + 1852: 0x53F5, + 1853: 0x5402, + 1854: 0x5413, + 1855: 0x541A, + 1856: 0x5421, + 1857: 0x5427, + 1858: 0x5428, + 1859: 0x542A, + 1860: 0x542F, + 1861: 0x5431, + 1862: 0x5434, + 1863: 0x5435, + 1864: 0x5443, + 1865: 0x5444, + 1866: 0x5447, + 1867: 0x544D, + 1868: 0x544F, + 1869: 0x545E, + 1870: 0x5462, + 1871: 0x5464, + 1872: 0x5466, + 1873: 0x5467, + 1874: 0x5469, + 1875: 0x546B, + 1876: 0x546D, + 1877: 0x546E, + 1878: 0x5474, + 1879: 0x547F, + 1880: 0x5481, + 1881: 0x5483, + 1882: 0x5485, + 1883: 0x5488, + 1884: 0x5489, + 1885: 0x548D, + 1886: 0x5491, + 1887: 0x5495, + 1888: 0x5496, + 1889: 0x549C, + 1890: 0x549F, + 1891: 0x54A1, + 1892: 0x54A6, + 1893: 0x54A7, + 1894: 0x54A9, + 1895: 0x54AA, + 1896: 0x54AD, + 1897: 0x54AE, + 1898: 0x54B1, + 1899: 0x54B7, + 1900: 0x54B9, + 1901: 0x54BA, + 1902: 0x54BB, + 1903: 0x54BF, + 1904: 0x54C6, + 1905: 0x54CA, + 1906: 0x54CD, + 1907: 0x54CE, + 1908: 0x54E0, + 1909: 0x54EA, + 1910: 0x54EC, + 1911: 0x54EF, + 1912: 0x54F6, + 1913: 0x54FC, + 1914: 0x54FE, + 1915: 0x54FF, + 1916: 0x5500, + 1917: 0x5501, + 1918: 0x5505, + 1919: 0x5508, + 1920: 0x5509, + 1921: 0x550C, + 1922: 0x550D, + 1923: 0x550E, + 1924: 0x5515, + 1925: 0x552A, + 1926: 0x552B, + 1927: 0x5532, + 1928: 0x5535, + 1929: 0x5536, + 1930: 0x553B, + 1931: 0x553C, + 1932: 0x553D, + 1933: 0x5541, + 1934: 0x5547, + 1935: 0x5549, + 1936: 0x554A, + 1937: 0x554D, + 1938: 0x5550, + 1939: 0x5551, + 1940: 0x5558, + 1941: 0x555A, + 1942: 0x555B, + 1943: 0x555E, + 1944: 0x5560, + 1945: 0x5561, + 1946: 0x5564, + 1947: 0x5566, + 1948: 0x557F, + 1949: 0x5581, + 1950: 0x5582, + 1951: 0x5586, + 1952: 0x5588, + 1953: 0x558E, + 1954: 0x558F, + 1955: 0x5591, + 1956: 0x5592, + 1957: 0x5593, + 1958: 0x5594, + 1959: 0x5597, + 1960: 0x55A3, + 1961: 0x55A4, + 1962: 0x55AD, + 1963: 0x55B2, + 1964: 0x55BF, + 1965: 0x55C1, + 1966: 0x55C3, + 1967: 0x55C6, + 1968: 0x55C9, + 1969: 0x55CB, + 1970: 0x55CC, + 1971: 0x55CE, + 1972: 0x55D1, + 1973: 0x55D2, + 1974: 0x55D3, + 1975: 0x55D7, + 1976: 0x55D8, + 1977: 0x55DB, + 1978: 0x55DE, + 1979: 0x55E2, + 1980: 0x55E9, + 1981: 0x55F6, + 1982: 0x55FF, + 1983: 0x5605, + 1984: 0x5608, + 1985: 0x560A, + 1986: 0x560D, + 1987: 0x560E, + 1988: 0x560F, + 1989: 0x5610, + 1990: 0x5611, + 1991: 0x5612, + 1992: 0x5619, + 1993: 0x562C, + 1994: 0x5630, + 1995: 0x5633, + 1996: 0x5635, + 1997: 0x5637, + 1998: 0x5639, + 1999: 0x563B, + 2000: 0x563C, + 2001: 0x563D, + 2002: 0x563F, + 2003: 0x5640, + 2004: 0x5641, + 2005: 0x5643, + 2006: 0x5644, + 2007: 0x5646, + 2008: 0x5649, + 2009: 0x564B, + 2010: 0x564D, + 2011: 0x564F, + 2012: 0x5654, + 2013: 0x565E, + 2014: 0x5660, + 2015: 0x5661, + 2016: 0x5662, + 2017: 0x5663, + 2018: 0x5666, + 2019: 0x5669, + 2020: 0x566D, + 2021: 0x566F, + 2022: 0x5671, + 2023: 0x5672, + 2024: 0x5675, + 2025: 0x5684, + 2026: 0x5685, + 2027: 0x5688, + 2028: 0x568B, + 2029: 0x568C, + 2030: 0x5695, + 2031: 0x5699, + 2032: 0x569A, + 2033: 0x569D, + 2034: 0x569E, + 2035: 0x569F, + 2036: 0x56A6, + 2037: 0x56A7, + 2038: 0x56A8, + 2039: 0x56A9, + 2040: 0x56AB, + 2041: 0x56AC, + 2042: 0x56AD, + 2043: 0x56B1, + 2044: 0x56B3, + 2045: 0x56B7, + 2046: 0x56BE, + 2047: 0x56C5, + 2048: 0x56C9, + 2049: 0x56CA, + 2050: 0x56CB, + 2051: 0x56CF, + 2052: 0x56D0, + 2053: 0x56CC, + 2054: 0x56CD, + 2055: 0x56D9, + 2056: 0x56DC, + 2057: 0x56DD, + 2058: 0x56DF, + 2059: 0x56E1, + 2060: 0x56E4, + 2061: 0x56E5, + 2062: 0x56E6, + 2063: 0x56E7, + 2064: 0x56E8, + 2065: 0x56F1, + 2066: 0x56EB, + 2067: 0x56ED, + 2068: 0x56F6, + 2069: 0x56F7, + 2070: 0x5701, + 2071: 0x5702, + 2072: 0x5707, + 2073: 0x570A, + 2074: 0x570C, + 2075: 0x5711, + 2076: 0x5715, + 2077: 0x571A, + 2078: 0x571B, + 2079: 0x571D, + 2080: 0x5720, + 2081: 0x5722, + 2082: 0x5723, + 2083: 0x5724, + 2084: 0x5725, + 2085: 0x5729, + 2086: 0x572A, + 2087: 0x572C, + 2088: 0x572E, + 2089: 0x572F, + 2090: 0x5733, + 2091: 0x5734, + 2092: 0x573D, + 2093: 0x573E, + 2094: 0x573F, + 2095: 0x5745, + 2096: 0x5746, + 2097: 0x574C, + 2098: 0x574D, + 2099: 0x5752, + 2100: 0x5762, + 2101: 0x5765, + 2102: 0x5767, + 2103: 0x5768, + 2104: 0x576B, + 2105: 0x576D, + 2106: 0x576E, + 2107: 0x576F, + 2108: 0x5770, + 2109: 0x5771, + 2110: 0x5773, + 2111: 0x5774, + 2112: 0x5775, + 2113: 0x5777, + 2114: 0x5779, + 2115: 0x577A, + 2116: 0x577B, + 2117: 0x577C, + 2118: 0x577E, + 2119: 0x5781, + 2120: 0x5783, + 2121: 0x578C, + 2122: 0x5794, + 2123: 0x5797, + 2124: 0x5799, + 2125: 0x579A, + 2126: 0x579C, + 2127: 0x579D, + 2128: 0x579E, + 2129: 0x579F, + 2130: 0x57A1, + 2131: 0x5795, + 2132: 0x57A7, + 2133: 0x57A8, + 2134: 0x57A9, + 2135: 0x57AC, + 2136: 0x57B8, + 2137: 0x57BD, + 2138: 0x57C7, + 2139: 0x57C8, + 2140: 0x57CC, + 2141: 0x57CF, + 2142: 0x57D5, + 2143: 0x57DD, + 2144: 0x57DE, + 2145: 0x57E4, + 2146: 0x57E6, + 2147: 0x57E7, + 2148: 0x57E9, + 2149: 0x57ED, + 2150: 0x57F0, + 2151: 0x57F5, + 2152: 0x57F6, + 2153: 0x57F8, + 2154: 0x57FD, + 2155: 0x57FE, + 2156: 0x57FF, + 2157: 0x5803, + 2158: 0x5804, + 2159: 0x5808, + 2160: 0x5809, + 2161: 0x57E1, + 2162: 0x580C, + 2163: 0x580D, + 2164: 0x581B, + 2165: 0x581E, + 2166: 0x581F, + 2167: 0x5820, + 2168: 0x5826, + 2169: 0x5827, + 2170: 0x582D, + 2171: 0x5832, + 2172: 0x5839, + 2173: 0x583F, + 2174: 0x5849, + 2175: 0x584C, + 2176: 0x584D, + 2177: 0x584F, + 2178: 0x5850, + 2179: 0x5855, + 2180: 0x585F, + 2181: 0x5861, + 2182: 0x5864, + 2183: 0x5867, + 2184: 0x5868, + 2185: 0x5878, + 2186: 0x587C, + 2187: 0x587F, + 2188: 0x5880, + 2189: 0x5881, + 2190: 0x5887, + 2191: 0x5888, + 2192: 0x5889, + 2193: 0x588A, + 2194: 0x588C, + 2195: 0x588D, + 2196: 0x588F, + 2197: 0x5890, + 2198: 0x5894, + 2199: 0x5896, + 2200: 0x589D, + 2201: 0x58A0, + 2202: 0x58A1, + 2203: 0x58A2, + 2204: 0x58A6, + 2205: 0x58A9, + 2206: 0x58B1, + 2207: 0x58B2, + 2208: 0x58C4, + 2209: 0x58BC, + 2210: 0x58C2, + 2211: 0x58C8, + 2212: 0x58CD, + 2213: 0x58CE, + 2214: 0x58D0, + 2215: 0x58D2, + 2216: 0x58D4, + 2217: 0x58D6, + 2218: 0x58DA, + 2219: 0x58DD, + 2220: 0x58E1, + 2221: 0x58E2, + 2222: 0x58E9, + 2223: 0x58F3, + 2224: 0x5905, + 2225: 0x5906, + 2226: 0x590B, + 2227: 0x590C, + 2228: 0x5912, + 2229: 0x5913, + 2230: 0x5914, + 2231: 0x8641, + 2232: 0x591D, + 2233: 0x5921, + 2234: 0x5923, + 2235: 0x5924, + 2236: 0x5928, + 2237: 0x592F, + 2238: 0x5930, + 2239: 0x5933, + 2240: 0x5935, + 2241: 0x5936, + 2242: 0x593F, + 2243: 0x5943, + 2244: 0x5946, + 2245: 0x5952, + 2246: 0x5953, + 2247: 0x5959, + 2248: 0x595B, + 2249: 0x595D, + 2250: 0x595E, + 2251: 0x595F, + 2252: 0x5961, + 2253: 0x5963, + 2254: 0x596B, + 2255: 0x596D, + 2256: 0x596F, + 2257: 0x5972, + 2258: 0x5975, + 2259: 0x5976, + 2260: 0x5979, + 2261: 0x597B, + 2262: 0x597C, + 2263: 0x598B, + 2264: 0x598C, + 2265: 0x598E, + 2266: 0x5992, + 2267: 0x5995, + 2268: 0x5997, + 2269: 0x599F, + 2270: 0x59A4, + 2271: 0x59A7, + 2272: 0x59AD, + 2273: 0x59AE, + 2274: 0x59AF, + 2275: 0x59B0, + 2276: 0x59B3, + 2277: 0x59B7, + 2278: 0x59BA, + 2279: 0x59BC, + 2280: 0x59C1, + 2281: 0x59C3, + 2282: 0x59C4, + 2283: 0x59C8, + 2284: 0x59CA, + 2285: 0x59CD, + 2286: 0x59D2, + 2287: 0x59DD, + 2288: 0x59DE, + 2289: 0x59DF, + 2290: 0x59E3, + 2291: 0x59E4, + 2292: 0x59E7, + 2293: 0x59EE, + 2294: 0x59EF, + 2295: 0x59F1, + 2296: 0x59F2, + 2297: 0x59F4, + 2298: 0x59F7, + 2299: 0x5A00, + 2300: 0x5A04, + 2301: 0x5A0C, + 2302: 0x5A0D, + 2303: 0x5A0E, + 2304: 0x5A12, + 2305: 0x5A13, + 2306: 0x5A1E, + 2307: 0x5A23, + 2308: 0x5A24, + 2309: 0x5A27, + 2310: 0x5A28, + 2311: 0x5A2A, + 2312: 0x5A2D, + 2313: 0x5A30, + 2314: 0x5A44, + 2315: 0x5A45, + 2316: 0x5A47, + 2317: 0x5A48, + 2318: 0x5A4C, + 2319: 0x5A50, + 2320: 0x5A55, + 2321: 0x5A5E, + 2322: 0x5A63, + 2323: 0x5A65, + 2324: 0x5A67, + 2325: 0x5A6D, + 2326: 0x5A77, + 2327: 0x5A7A, + 2328: 0x5A7B, + 2329: 0x5A7E, + 2330: 0x5A8B, + 2331: 0x5A90, + 2332: 0x5A93, + 2333: 0x5A96, + 2334: 0x5A99, + 2335: 0x5A9C, + 2336: 0x5A9E, + 2337: 0x5A9F, + 2338: 0x5AA0, + 2339: 0x5AA2, + 2340: 0x5AA7, + 2341: 0x5AAC, + 2342: 0x5AB1, + 2343: 0x5AB2, + 2344: 0x5AB3, + 2345: 0x5AB5, + 2346: 0x5AB8, + 2347: 0x5ABA, + 2348: 0x5ABB, + 2349: 0x5ABF, + 2350: 0x5AC4, + 2351: 0x5AC6, + 2352: 0x5AC8, + 2353: 0x5ACF, + 2354: 0x5ADA, + 2355: 0x5ADC, + 2356: 0x5AE0, + 2357: 0x5AE5, + 2358: 0x5AEA, + 2359: 0x5AEE, + 2360: 0x5AF5, + 2361: 0x5AF6, + 2362: 0x5AFD, + 2363: 0x5B00, + 2364: 0x5B01, + 2365: 0x5B08, + 2366: 0x5B17, + 2367: 0x5B34, + 2368: 0x5B19, + 2369: 0x5B1B, + 2370: 0x5B1D, + 2371: 0x5B21, + 2372: 0x5B25, + 2373: 0x5B2D, + 2374: 0x5B38, + 2375: 0x5B41, + 2376: 0x5B4B, + 2377: 0x5B4C, + 2378: 0x5B52, + 2379: 0x5B56, + 2380: 0x5B5E, + 2381: 0x5B68, + 2382: 0x5B6E, + 2383: 0x5B6F, + 2384: 0x5B7C, + 2385: 0x5B7D, + 2386: 0x5B7E, + 2387: 0x5B7F, + 2388: 0x5B81, + 2389: 0x5B84, + 2390: 0x5B86, + 2391: 0x5B8A, + 2392: 0x5B8E, + 2393: 0x5B90, + 2394: 0x5B91, + 2395: 0x5B93, + 2396: 0x5B94, + 2397: 0x5B96, + 2398: 0x5BA8, + 2399: 0x5BA9, + 2400: 0x5BAC, + 2401: 0x5BAD, + 2402: 0x5BAF, + 2403: 0x5BB1, + 2404: 0x5BB2, + 2405: 0x5BB7, + 2406: 0x5BBA, + 2407: 0x5BBC, + 2408: 0x5BC0, + 2409: 0x5BC1, + 2410: 0x5BCD, + 2411: 0x5BCF, + 2412: 0x5BD6, + 2413: 0x5BD7, + 2414: 0x5BD8, + 2415: 0x5BD9, + 2416: 0x5BDA, + 2417: 0x5BE0, + 2418: 0x5BEF, + 2419: 0x5BF1, + 2420: 0x5BF4, + 2421: 0x5BFD, + 2422: 0x5C0C, + 2423: 0x5C17, + 2424: 0x5C1E, + 2425: 0x5C1F, + 2426: 0x5C23, + 2427: 0x5C26, + 2428: 0x5C29, + 2429: 0x5C2B, + 2430: 0x5C2C, + 2431: 0x5C2E, + 2432: 0x5C30, + 2433: 0x5C32, + 2434: 0x5C35, + 2435: 0x5C36, + 2436: 0x5C59, + 2437: 0x5C5A, + 2438: 0x5C5C, + 2439: 0x5C62, + 2440: 0x5C63, + 2441: 0x5C67, + 2442: 0x5C68, + 2443: 0x5C69, + 2444: 0x5C6D, + 2445: 0x5C70, + 2446: 0x5C74, + 2447: 0x5C75, + 2448: 0x5C7A, + 2449: 0x5C7B, + 2450: 0x5C7C, + 2451: 0x5C7D, + 2452: 0x5C87, + 2453: 0x5C88, + 2454: 0x5C8A, + 2455: 0x5C8F, + 2456: 0x5C92, + 2457: 0x5C9D, + 2458: 0x5C9F, + 2459: 0x5CA0, + 2460: 0x5CA2, + 2461: 0x5CA3, + 2462: 0x5CA6, + 2463: 0x5CAA, + 2464: 0x5CB2, + 2465: 0x5CB4, + 2466: 0x5CB5, + 2467: 0x5CBA, + 2468: 0x5CC9, + 2469: 0x5CCB, + 2470: 0x5CD2, + 2471: 0x5CDD, + 2472: 0x5CD7, + 2473: 0x5CEE, + 2474: 0x5CF1, + 2475: 0x5CF2, + 2476: 0x5CF4, + 2477: 0x5D01, + 2478: 0x5D06, + 2479: 0x5D0D, + 2480: 0x5D12, + 2481: 0x5D2B, + 2482: 0x5D23, + 2483: 0x5D24, + 2484: 0x5D26, + 2485: 0x5D27, + 2486: 0x5D31, + 2487: 0x5D34, + 2488: 0x5D39, + 2489: 0x5D3D, + 2490: 0x5D3F, + 2491: 0x5D42, + 2492: 0x5D43, + 2493: 0x5D46, + 2494: 0x5D48, + 2495: 0x5D55, + 2496: 0x5D51, + 2497: 0x5D59, + 2498: 0x5D4A, + 2499: 0x5D5F, + 2500: 0x5D60, + 2501: 0x5D61, + 2502: 0x5D62, + 2503: 0x5D64, + 2504: 0x5D6A, + 2505: 0x5D6D, + 2506: 0x5D70, + 2507: 0x5D79, + 2508: 0x5D7A, + 2509: 0x5D7E, + 2510: 0x5D7F, + 2511: 0x5D81, + 2512: 0x5D83, + 2513: 0x5D88, + 2514: 0x5D8A, + 2515: 0x5D92, + 2516: 0x5D93, + 2517: 0x5D94, + 2518: 0x5D95, + 2519: 0x5D99, + 2520: 0x5D9B, + 2521: 0x5D9F, + 2522: 0x5DA0, + 2523: 0x5DA7, + 2524: 0x5DAB, + 2525: 0x5DB0, + 2526: 0x5DB4, + 2527: 0x5DB8, + 2528: 0x5DB9, + 2529: 0x5DC3, + 2530: 0x5DC7, + 2531: 0x5DCB, + 2532: 0x5DD0, + 2533: 0x5DCE, + 2534: 0x5DD8, + 2535: 0x5DD9, + 2536: 0x5DE0, + 2537: 0x5DE4, + 2538: 0x5DE9, + 2539: 0x5DF8, + 2540: 0x5DF9, + 2541: 0x5E00, + 2542: 0x5E07, + 2543: 0x5E0D, + 2544: 0x5E12, + 2545: 0x5E14, + 2546: 0x5E15, + 2547: 0x5E18, + 2548: 0x5E1F, + 2549: 0x5E20, + 2550: 0x5E2E, + 2551: 0x5E28, + 2552: 0x5E32, + 2553: 0x5E35, + 2554: 0x5E3E, + 2555: 0x5E4B, + 2556: 0x5E50, + 2557: 0x5E49, + 2558: 0x5E51, + 2559: 0x5E56, + 2560: 0x5E58, + 2561: 0x5E5B, + 2562: 0x5E5C, + 2563: 0x5E5E, + 2564: 0x5E68, + 2565: 0x5E6A, + 2566: 0x5E6B, + 2567: 0x5E6C, + 2568: 0x5E6D, + 2569: 0x5E6E, + 2570: 0x5E70, + 2571: 0x5E80, + 2572: 0x5E8B, + 2573: 0x5E8E, + 2574: 0x5EA2, + 2575: 0x5EA4, + 2576: 0x5EA5, + 2577: 0x5EA8, + 2578: 0x5EAA, + 2579: 0x5EAC, + 2580: 0x5EB1, + 2581: 0x5EB3, + 2582: 0x5EBD, + 2583: 0x5EBE, + 2584: 0x5EBF, + 2585: 0x5EC6, + 2586: 0x5ECC, + 2587: 0x5ECB, + 2588: 0x5ECE, + 2589: 0x5ED1, + 2590: 0x5ED2, + 2591: 0x5ED4, + 2592: 0x5ED5, + 2593: 0x5EDC, + 2594: 0x5EDE, + 2595: 0x5EE5, + 2596: 0x5EEB, + 2597: 0x5F02, + 2598: 0x5F06, + 2599: 0x5F07, + 2600: 0x5F08, + 2601: 0x5F0E, + 2602: 0x5F19, + 2603: 0x5F1C, + 2604: 0x5F1D, + 2605: 0x5F21, + 2606: 0x5F22, + 2607: 0x5F23, + 2608: 0x5F24, + 2609: 0x5F28, + 2610: 0x5F2B, + 2611: 0x5F2C, + 2612: 0x5F2E, + 2613: 0x5F30, + 2614: 0x5F34, + 2615: 0x5F36, + 2616: 0x5F3B, + 2617: 0x5F3D, + 2618: 0x5F3F, + 2619: 0x5F40, + 2620: 0x5F44, + 2621: 0x5F45, + 2622: 0x5F47, + 2623: 0x5F4D, + 2624: 0x5F50, + 2625: 0x5F54, + 2626: 0x5F58, + 2627: 0x5F5B, + 2628: 0x5F60, + 2629: 0x5F63, + 2630: 0x5F64, + 2631: 0x5F67, + 2632: 0x5F6F, + 2633: 0x5F72, + 2634: 0x5F74, + 2635: 0x5F75, + 2636: 0x5F78, + 2637: 0x5F7A, + 2638: 0x5F7D, + 2639: 0x5F7E, + 2640: 0x5F89, + 2641: 0x5F8D, + 2642: 0x5F8F, + 2643: 0x5F96, + 2644: 0x5F9C, + 2645: 0x5F9D, + 2646: 0x5FA2, + 2647: 0x5FA7, + 2648: 0x5FAB, + 2649: 0x5FA4, + 2650: 0x5FAC, + 2651: 0x5FAF, + 2652: 0x5FB0, + 2653: 0x5FB1, + 2654: 0x5FB8, + 2655: 0x5FC4, + 2656: 0x5FC7, + 2657: 0x5FC8, + 2658: 0x5FC9, + 2659: 0x5FCB, + 2660: 0x5FD0, + 2661: 0x5FD1, + 2662: 0x5FD2, + 2663: 0x5FD3, + 2664: 0x5FD4, + 2665: 0x5FDE, + 2666: 0x5FE1, + 2667: 0x5FE2, + 2668: 0x5FE8, + 2669: 0x5FE9, + 2670: 0x5FEA, + 2671: 0x5FEC, + 2672: 0x5FED, + 2673: 0x5FEE, + 2674: 0x5FEF, + 2675: 0x5FF2, + 2676: 0x5FF3, + 2677: 0x5FF6, + 2678: 0x5FFA, + 2679: 0x5FFC, + 2680: 0x6007, + 2681: 0x600A, + 2682: 0x600D, + 2683: 0x6013, + 2684: 0x6014, + 2685: 0x6017, + 2686: 0x6018, + 2687: 0x601A, + 2688: 0x601F, + 2689: 0x6024, + 2690: 0x602D, + 2691: 0x6033, + 2692: 0x6035, + 2693: 0x6040, + 2694: 0x6047, + 2695: 0x6048, + 2696: 0x6049, + 2697: 0x604C, + 2698: 0x6051, + 2699: 0x6054, + 2700: 0x6056, + 2701: 0x6057, + 2702: 0x605D, + 2703: 0x6061, + 2704: 0x6067, + 2705: 0x6071, + 2706: 0x607E, + 2707: 0x607F, + 2708: 0x6082, + 2709: 0x6086, + 2710: 0x6088, + 2711: 0x608A, + 2712: 0x608E, + 2713: 0x6091, + 2714: 0x6093, + 2715: 0x6095, + 2716: 0x6098, + 2717: 0x609D, + 2718: 0x609E, + 2719: 0x60A2, + 2720: 0x60A4, + 2721: 0x60A5, + 2722: 0x60A8, + 2723: 0x60B0, + 2724: 0x60B1, + 2725: 0x60B7, + 2726: 0x60BB, + 2727: 0x60BE, + 2728: 0x60C2, + 2729: 0x60C4, + 2730: 0x60C8, + 2731: 0x60C9, + 2732: 0x60CA, + 2733: 0x60CB, + 2734: 0x60CE, + 2735: 0x60CF, + 2736: 0x60D4, + 2737: 0x60D5, + 2738: 0x60D9, + 2739: 0x60DB, + 2740: 0x60DD, + 2741: 0x60DE, + 2742: 0x60E2, + 2743: 0x60E5, + 2744: 0x60F2, + 2745: 0x60F5, + 2746: 0x60F8, + 2747: 0x60FC, + 2748: 0x60FD, + 2749: 0x6102, + 2750: 0x6107, + 2751: 0x610A, + 2752: 0x610C, + 2753: 0x6110, + 2754: 0x6111, + 2755: 0x6112, + 2756: 0x6113, + 2757: 0x6114, + 2758: 0x6116, + 2759: 0x6117, + 2760: 0x6119, + 2761: 0x611C, + 2762: 0x611E, + 2763: 0x6122, + 2764: 0x612A, + 2765: 0x612B, + 2766: 0x6130, + 2767: 0x6131, + 2768: 0x6135, + 2769: 0x6136, + 2770: 0x6137, + 2771: 0x6139, + 2772: 0x6141, + 2773: 0x6145, + 2774: 0x6146, + 2775: 0x6149, + 2776: 0x615E, + 2777: 0x6160, + 2778: 0x616C, + 2779: 0x6172, + 2780: 0x6178, + 2781: 0x617B, + 2782: 0x617C, + 2783: 0x617F, + 2784: 0x6180, + 2785: 0x6181, + 2786: 0x6183, + 2787: 0x6184, + 2788: 0x618B, + 2789: 0x618D, + 2790: 0x6192, + 2791: 0x6193, + 2792: 0x6197, + 2793: 0x6198, + 2794: 0x619C, + 2795: 0x619D, + 2796: 0x619F, + 2797: 0x61A0, + 2798: 0x61A5, + 2799: 0x61A8, + 2800: 0x61AA, + 2801: 0x61AD, + 2802: 0x61B8, + 2803: 0x61B9, + 2804: 0x61BC, + 2805: 0x61C0, + 2806: 0x61C1, + 2807: 0x61C2, + 2808: 0x61CE, + 2809: 0x61CF, + 2810: 0x61D5, + 2811: 0x61DC, + 2812: 0x61DD, + 2813: 0x61DE, + 2814: 0x61DF, + 2815: 0x61E1, + 2816: 0x61E2, + 2817: 0x61E7, + 2818: 0x61E9, + 2819: 0x61E5, + 2820: 0x61EC, + 2821: 0x61ED, + 2822: 0x61EF, + 2823: 0x6201, + 2824: 0x6203, + 2825: 0x6204, + 2826: 0x6207, + 2827: 0x6213, + 2828: 0x6215, + 2829: 0x621C, + 2830: 0x6220, + 2831: 0x6222, + 2832: 0x6223, + 2833: 0x6227, + 2834: 0x6229, + 2835: 0x622B, + 2836: 0x6239, + 2837: 0x623D, + 2838: 0x6242, + 2839: 0x6243, + 2840: 0x6244, + 2841: 0x6246, + 2842: 0x624C, + 2843: 0x6250, + 2844: 0x6251, + 2845: 0x6252, + 2846: 0x6254, + 2847: 0x6256, + 2848: 0x625A, + 2849: 0x625C, + 2850: 0x6264, + 2851: 0x626D, + 2852: 0x626F, + 2853: 0x6273, + 2854: 0x627A, + 2855: 0x627D, + 2856: 0x628D, + 2857: 0x628E, + 2858: 0x628F, + 2859: 0x6290, + 2860: 0x62A6, + 2861: 0x62A8, + 2862: 0x62B3, + 2863: 0x62B6, + 2864: 0x62B7, + 2865: 0x62BA, + 2866: 0x62BE, + 2867: 0x62BF, + 2868: 0x62C4, + 2869: 0x62CE, + 2870: 0x62D5, + 2871: 0x62D6, + 2872: 0x62DA, + 2873: 0x62EA, + 2874: 0x62F2, + 2875: 0x62F4, + 2876: 0x62FC, + 2877: 0x62FD, + 2878: 0x6303, + 2879: 0x6304, + 2880: 0x630A, + 2881: 0x630B, + 2882: 0x630D, + 2883: 0x6310, + 2884: 0x6313, + 2885: 0x6316, + 2886: 0x6318, + 2887: 0x6329, + 2888: 0x632A, + 2889: 0x632D, + 2890: 0x6335, + 2891: 0x6336, + 2892: 0x6339, + 2893: 0x633C, + 2894: 0x6341, + 2895: 0x6342, + 2896: 0x6343, + 2897: 0x6344, + 2898: 0x6346, + 2899: 0x634A, + 2900: 0x634B, + 2901: 0x634E, + 2902: 0x6352, + 2903: 0x6353, + 2904: 0x6354, + 2905: 0x6358, + 2906: 0x635B, + 2907: 0x6365, + 2908: 0x6366, + 2909: 0x636C, + 2910: 0x636D, + 2911: 0x6371, + 2912: 0x6374, + 2913: 0x6375, + 2914: 0x6378, + 2915: 0x637C, + 2916: 0x637D, + 2917: 0x637F, + 2918: 0x6382, + 2919: 0x6384, + 2920: 0x6387, + 2921: 0x638A, + 2922: 0x6390, + 2923: 0x6394, + 2924: 0x6395, + 2925: 0x6399, + 2926: 0x639A, + 2927: 0x639E, + 2928: 0x63A4, + 2929: 0x63A6, + 2930: 0x63AD, + 2931: 0x63AE, + 2932: 0x63AF, + 2933: 0x63BD, + 2934: 0x63C1, + 2935: 0x63C5, + 2936: 0x63C8, + 2937: 0x63CE, + 2938: 0x63D1, + 2939: 0x63D3, + 2940: 0x63D4, + 2941: 0x63D5, + 2942: 0x63DC, + 2943: 0x63E0, + 2944: 0x63E5, + 2945: 0x63EA, + 2946: 0x63EC, + 2947: 0x63F2, + 2948: 0x63F3, + 2949: 0x63F5, + 2950: 0x63F8, + 2951: 0x63F9, + 2952: 0x6409, + 2953: 0x640A, + 2954: 0x6410, + 2955: 0x6412, + 2956: 0x6414, + 2957: 0x6418, + 2958: 0x641E, + 2959: 0x6420, + 2960: 0x6422, + 2961: 0x6424, + 2962: 0x6425, + 2963: 0x6429, + 2964: 0x642A, + 2965: 0x642F, + 2966: 0x6430, + 2967: 0x6435, + 2968: 0x643D, + 2969: 0x643F, + 2970: 0x644B, + 2971: 0x644F, + 2972: 0x6451, + 2973: 0x6452, + 2974: 0x6453, + 2975: 0x6454, + 2976: 0x645A, + 2977: 0x645B, + 2978: 0x645C, + 2979: 0x645D, + 2980: 0x645F, + 2981: 0x6460, + 2982: 0x6461, + 2983: 0x6463, + 2984: 0x646D, + 2985: 0x6473, + 2986: 0x6474, + 2987: 0x647B, + 2988: 0x647D, + 2989: 0x6485, + 2990: 0x6487, + 2991: 0x648F, + 2992: 0x6490, + 2993: 0x6491, + 2994: 0x6498, + 2995: 0x6499, + 2996: 0x649B, + 2997: 0x649D, + 2998: 0x649F, + 2999: 0x64A1, + 3000: 0x64A3, + 3001: 0x64A6, + 3002: 0x64A8, + 3003: 0x64AC, + 3004: 0x64B3, + 3005: 0x64BD, + 3006: 0x64BE, + 3007: 0x64BF, + 3008: 0x64C4, + 3009: 0x64C9, + 3010: 0x64CA, + 3011: 0x64CB, + 3012: 0x64CC, + 3013: 0x64CE, + 3014: 0x64D0, + 3015: 0x64D1, + 3016: 0x64D5, + 3017: 0x64D7, + 3018: 0x64E4, + 3019: 0x64E5, + 3020: 0x64E9, + 3021: 0x64EA, + 3022: 0x64ED, + 3023: 0x64F0, + 3024: 0x64F5, + 3025: 0x64F7, + 3026: 0x64FB, + 3027: 0x64FF, + 3028: 0x6501, + 3029: 0x6504, + 3030: 0x6508, + 3031: 0x6509, + 3032: 0x650A, + 3033: 0x650F, + 3034: 0x6513, + 3035: 0x6514, + 3036: 0x6516, + 3037: 0x6519, + 3038: 0x651B, + 3039: 0x651E, + 3040: 0x651F, + 3041: 0x6522, + 3042: 0x6526, + 3043: 0x6529, + 3044: 0x652E, + 3045: 0x6531, + 3046: 0x653A, + 3047: 0x653C, + 3048: 0x653D, + 3049: 0x6543, + 3050: 0x6547, + 3051: 0x6549, + 3052: 0x6550, + 3053: 0x6552, + 3054: 0x6554, + 3055: 0x655F, + 3056: 0x6560, + 3057: 0x6567, + 3058: 0x656B, + 3059: 0x657A, + 3060: 0x657D, + 3061: 0x6581, + 3062: 0x6585, + 3063: 0x658A, + 3064: 0x6592, + 3065: 0x6595, + 3066: 0x6598, + 3067: 0x659D, + 3068: 0x65A0, + 3069: 0x65A3, + 3070: 0x65A6, + 3071: 0x65AE, + 3072: 0x65B2, + 3073: 0x65B3, + 3074: 0x65B4, + 3075: 0x65BF, + 3076: 0x65C2, + 3077: 0x65C8, + 3078: 0x65C9, + 3079: 0x65CE, + 3080: 0x65D0, + 3081: 0x65D4, + 3082: 0x65D6, + 3083: 0x65D8, + 3084: 0x65DF, + 3085: 0x65F0, + 3086: 0x65F2, + 3087: 0x65F4, + 3088: 0x65F5, + 3089: 0x65F9, + 3090: 0x65FE, + 3091: 0x65FF, + 3092: 0x6600, + 3093: 0x6604, + 3094: 0x6608, + 3095: 0x6609, + 3096: 0x660D, + 3097: 0x6611, + 3098: 0x6612, + 3099: 0x6615, + 3100: 0x6616, + 3101: 0x661D, + 3102: 0x661E, + 3103: 0x6621, + 3104: 0x6622, + 3105: 0x6623, + 3106: 0x6624, + 3107: 0x6626, + 3108: 0x6629, + 3109: 0x662A, + 3110: 0x662B, + 3111: 0x662C, + 3112: 0x662E, + 3113: 0x6630, + 3114: 0x6631, + 3115: 0x6633, + 3116: 0x6639, + 3117: 0x6637, + 3118: 0x6640, + 3119: 0x6645, + 3120: 0x6646, + 3121: 0x664A, + 3122: 0x664C, + 3123: 0x6651, + 3124: 0x664E, + 3125: 0x6657, + 3126: 0x6658, + 3127: 0x6659, + 3128: 0x665B, + 3129: 0x665C, + 3130: 0x6660, + 3131: 0x6661, + 3132: 0x66FB, + 3133: 0x666A, + 3134: 0x666B, + 3135: 0x666C, + 3136: 0x667E, + 3137: 0x6673, + 3138: 0x6675, + 3139: 0x667F, + 3140: 0x6677, + 3141: 0x6678, + 3142: 0x6679, + 3143: 0x667B, + 3144: 0x6680, + 3145: 0x667C, + 3146: 0x668B, + 3147: 0x668C, + 3148: 0x668D, + 3149: 0x6690, + 3150: 0x6692, + 3151: 0x6699, + 3152: 0x669A, + 3153: 0x669B, + 3154: 0x669C, + 3155: 0x669F, + 3156: 0x66A0, + 3157: 0x66A4, + 3158: 0x66AD, + 3159: 0x66B1, + 3160: 0x66B2, + 3161: 0x66B5, + 3162: 0x66BB, + 3163: 0x66BF, + 3164: 0x66C0, + 3165: 0x66C2, + 3166: 0x66C3, + 3167: 0x66C8, + 3168: 0x66CC, + 3169: 0x66CE, + 3170: 0x66CF, + 3171: 0x66D4, + 3172: 0x66DB, + 3173: 0x66DF, + 3174: 0x66E8, + 3175: 0x66EB, + 3176: 0x66EC, + 3177: 0x66EE, + 3178: 0x66FA, + 3179: 0x6705, + 3180: 0x6707, + 3181: 0x670E, + 3182: 0x6713, + 3183: 0x6719, + 3184: 0x671C, + 3185: 0x6720, + 3186: 0x6722, + 3187: 0x6733, + 3188: 0x673E, + 3189: 0x6745, + 3190: 0x6747, + 3191: 0x6748, + 3192: 0x674C, + 3193: 0x6754, + 3194: 0x6755, + 3195: 0x675D, + 3196: 0x6766, + 3197: 0x676C, + 3198: 0x676E, + 3199: 0x6774, + 3200: 0x6776, + 3201: 0x677B, + 3202: 0x6781, + 3203: 0x6784, + 3204: 0x678E, + 3205: 0x678F, + 3206: 0x6791, + 3207: 0x6793, + 3208: 0x6796, + 3209: 0x6798, + 3210: 0x6799, + 3211: 0x679B, + 3212: 0x67B0, + 3213: 0x67B1, + 3214: 0x67B2, + 3215: 0x67B5, + 3216: 0x67BB, + 3217: 0x67BC, + 3218: 0x67BD, + 3219: 0x67F9, + 3220: 0x67C0, + 3221: 0x67C2, + 3222: 0x67C3, + 3223: 0x67C5, + 3224: 0x67C8, + 3225: 0x67C9, + 3226: 0x67D2, + 3227: 0x67D7, + 3228: 0x67D9, + 3229: 0x67DC, + 3230: 0x67E1, + 3231: 0x67E6, + 3232: 0x67F0, + 3233: 0x67F2, + 3234: 0x67F6, + 3235: 0x67F7, + 3236: 0x6852, + 3237: 0x6814, + 3238: 0x6819, + 3239: 0x681D, + 3240: 0x681F, + 3241: 0x6828, + 3242: 0x6827, + 3243: 0x682C, + 3244: 0x682D, + 3245: 0x682F, + 3246: 0x6830, + 3247: 0x6831, + 3248: 0x6833, + 3249: 0x683B, + 3250: 0x683F, + 3251: 0x6844, + 3252: 0x6845, + 3253: 0x684A, + 3254: 0x684C, + 3255: 0x6855, + 3256: 0x6857, + 3257: 0x6858, + 3258: 0x685B, + 3259: 0x686B, + 3260: 0x686E, + 3261: 0x686F, + 3262: 0x6870, + 3263: 0x6871, + 3264: 0x6872, + 3265: 0x6875, + 3266: 0x6879, + 3267: 0x687A, + 3268: 0x687B, + 3269: 0x687C, + 3270: 0x6882, + 3271: 0x6884, + 3272: 0x6886, + 3273: 0x6888, + 3274: 0x6896, + 3275: 0x6898, + 3276: 0x689A, + 3277: 0x689C, + 3278: 0x68A1, + 3279: 0x68A3, + 3280: 0x68A5, + 3281: 0x68A9, + 3282: 0x68AA, + 3283: 0x68AE, + 3284: 0x68B2, + 3285: 0x68BB, + 3286: 0x68C5, + 3287: 0x68C8, + 3288: 0x68CC, + 3289: 0x68CF, + 3290: 0x68D0, + 3291: 0x68D1, + 3292: 0x68D3, + 3293: 0x68D6, + 3294: 0x68D9, + 3295: 0x68DC, + 3296: 0x68DD, + 3297: 0x68E5, + 3298: 0x68E8, + 3299: 0x68EA, + 3300: 0x68EB, + 3301: 0x68EC, + 3302: 0x68ED, + 3303: 0x68F0, + 3304: 0x68F1, + 3305: 0x68F5, + 3306: 0x68F6, + 3307: 0x68FB, + 3308: 0x68FC, + 3309: 0x68FD, + 3310: 0x6906, + 3311: 0x6909, + 3312: 0x690A, + 3313: 0x6910, + 3314: 0x6911, + 3315: 0x6913, + 3316: 0x6916, + 3317: 0x6917, + 3318: 0x6931, + 3319: 0x6933, + 3320: 0x6935, + 3321: 0x6938, + 3322: 0x693B, + 3323: 0x6942, + 3324: 0x6945, + 3325: 0x6949, + 3326: 0x694E, + 3327: 0x6957, + 3328: 0x695B, + 3329: 0x6963, + 3330: 0x6964, + 3331: 0x6965, + 3332: 0x6966, + 3333: 0x6968, + 3334: 0x6969, + 3335: 0x696C, + 3336: 0x6970, + 3337: 0x6971, + 3338: 0x6972, + 3339: 0x697A, + 3340: 0x697B, + 3341: 0x697F, + 3342: 0x6980, + 3343: 0x698D, + 3344: 0x6992, + 3345: 0x6996, + 3346: 0x6998, + 3347: 0x69A1, + 3348: 0x69A5, + 3349: 0x69A6, + 3350: 0x69A8, + 3351: 0x69AB, + 3352: 0x69AD, + 3353: 0x69AF, + 3354: 0x69B7, + 3355: 0x69B8, + 3356: 0x69BA, + 3357: 0x69BC, + 3358: 0x69C5, + 3359: 0x69C8, + 3360: 0x69D1, + 3361: 0x69D6, + 3362: 0x69D7, + 3363: 0x69E2, + 3364: 0x69E5, + 3365: 0x69EE, + 3366: 0x69EF, + 3367: 0x69F1, + 3368: 0x69F3, + 3369: 0x69F5, + 3370: 0x69FE, + 3371: 0x6A00, + 3372: 0x6A01, + 3373: 0x6A03, + 3374: 0x6A0F, + 3375: 0x6A11, + 3376: 0x6A15, + 3377: 0x6A1A, + 3378: 0x6A1D, + 3379: 0x6A20, + 3380: 0x6A24, + 3381: 0x6A28, + 3382: 0x6A30, + 3383: 0x6A32, + 3384: 0x6A34, + 3385: 0x6A37, + 3386: 0x6A3B, + 3387: 0x6A3E, + 3388: 0x6A3F, + 3389: 0x6A45, + 3390: 0x6A46, + 3391: 0x6A49, + 3392: 0x6A4A, + 3393: 0x6A4E, + 3394: 0x6A50, + 3395: 0x6A51, + 3396: 0x6A52, + 3397: 0x6A55, + 3398: 0x6A56, + 3399: 0x6A5B, + 3400: 0x6A64, + 3401: 0x6A67, + 3402: 0x6A6A, + 3403: 0x6A71, + 3404: 0x6A73, + 3405: 0x6A7E, + 3406: 0x6A81, + 3407: 0x6A83, + 3408: 0x6A86, + 3409: 0x6A87, + 3410: 0x6A89, + 3411: 0x6A8B, + 3412: 0x6A91, + 3413: 0x6A9B, + 3414: 0x6A9D, + 3415: 0x6A9E, + 3416: 0x6A9F, + 3417: 0x6AA5, + 3418: 0x6AAB, + 3419: 0x6AAF, + 3420: 0x6AB0, + 3421: 0x6AB1, + 3422: 0x6AB4, + 3423: 0x6ABD, + 3424: 0x6ABE, + 3425: 0x6ABF, + 3426: 0x6AC6, + 3427: 0x6AC9, + 3428: 0x6AC8, + 3429: 0x6ACC, + 3430: 0x6AD0, + 3431: 0x6AD4, + 3432: 0x6AD5, + 3433: 0x6AD6, + 3434: 0x6ADC, + 3435: 0x6ADD, + 3436: 0x6AE4, + 3437: 0x6AE7, + 3438: 0x6AEC, + 3439: 0x6AF0, + 3440: 0x6AF1, + 3441: 0x6AF2, + 3442: 0x6AFC, + 3443: 0x6AFD, + 3444: 0x6B02, + 3445: 0x6B03, + 3446: 0x6B06, + 3447: 0x6B07, + 3448: 0x6B09, + 3449: 0x6B0F, + 3450: 0x6B10, + 3451: 0x6B11, + 3452: 0x6B17, + 3453: 0x6B1B, + 3454: 0x6B1E, + 3455: 0x6B24, + 3456: 0x6B28, + 3457: 0x6B2B, + 3458: 0x6B2C, + 3459: 0x6B2F, + 3460: 0x6B35, + 3461: 0x6B36, + 3462: 0x6B3B, + 3463: 0x6B3F, + 3464: 0x6B46, + 3465: 0x6B4A, + 3466: 0x6B4D, + 3467: 0x6B52, + 3468: 0x6B56, + 3469: 0x6B58, + 3470: 0x6B5D, + 3471: 0x6B60, + 3472: 0x6B67, + 3473: 0x6B6B, + 3474: 0x6B6E, + 3475: 0x6B70, + 3476: 0x6B75, + 3477: 0x6B7D, + 3478: 0x6B7E, + 3479: 0x6B82, + 3480: 0x6B85, + 3481: 0x6B97, + 3482: 0x6B9B, + 3483: 0x6B9F, + 3484: 0x6BA0, + 3485: 0x6BA2, + 3486: 0x6BA3, + 3487: 0x6BA8, + 3488: 0x6BA9, + 3489: 0x6BAC, + 3490: 0x6BAD, + 3491: 0x6BAE, + 3492: 0x6BB0, + 3493: 0x6BB8, + 3494: 0x6BB9, + 3495: 0x6BBD, + 3496: 0x6BBE, + 3497: 0x6BC3, + 3498: 0x6BC4, + 3499: 0x6BC9, + 3500: 0x6BCC, + 3501: 0x6BD6, + 3502: 0x6BDA, + 3503: 0x6BE1, + 3504: 0x6BE3, + 3505: 0x6BE6, + 3506: 0x6BE7, + 3507: 0x6BEE, + 3508: 0x6BF1, + 3509: 0x6BF7, + 3510: 0x6BF9, + 3511: 0x6BFF, + 3512: 0x6C02, + 3513: 0x6C04, + 3514: 0x6C05, + 3515: 0x6C09, + 3516: 0x6C0D, + 3517: 0x6C0E, + 3518: 0x6C10, + 3519: 0x6C12, + 3520: 0x6C19, + 3521: 0x6C1F, + 3522: 0x6C26, + 3523: 0x6C27, + 3524: 0x6C28, + 3525: 0x6C2C, + 3526: 0x6C2E, + 3527: 0x6C33, + 3528: 0x6C35, + 3529: 0x6C36, + 3530: 0x6C3A, + 3531: 0x6C3B, + 3532: 0x6C3F, + 3533: 0x6C4A, + 3534: 0x6C4B, + 3535: 0x6C4D, + 3536: 0x6C4F, + 3537: 0x6C52, + 3538: 0x6C54, + 3539: 0x6C59, + 3540: 0x6C5B, + 3541: 0x6C5C, + 3542: 0x6C6B, + 3543: 0x6C6D, + 3544: 0x6C6F, + 3545: 0x6C74, + 3546: 0x6C76, + 3547: 0x6C78, + 3548: 0x6C79, + 3549: 0x6C7B, + 3550: 0x6C85, + 3551: 0x6C86, + 3552: 0x6C87, + 3553: 0x6C89, + 3554: 0x6C94, + 3555: 0x6C95, + 3556: 0x6C97, + 3557: 0x6C98, + 3558: 0x6C9C, + 3559: 0x6C9F, + 3560: 0x6CB0, + 3561: 0x6CB2, + 3562: 0x6CB4, + 3563: 0x6CC2, + 3564: 0x6CC6, + 3565: 0x6CCD, + 3566: 0x6CCF, + 3567: 0x6CD0, + 3568: 0x6CD1, + 3569: 0x6CD2, + 3570: 0x6CD4, + 3571: 0x6CD6, + 3572: 0x6CDA, + 3573: 0x6CDC, + 3574: 0x6CE0, + 3575: 0x6CE7, + 3576: 0x6CE9, + 3577: 0x6CEB, + 3578: 0x6CEC, + 3579: 0x6CEE, + 3580: 0x6CF2, + 3581: 0x6CF4, + 3582: 0x6D04, + 3583: 0x6D07, + 3584: 0x6D0A, + 3585: 0x6D0E, + 3586: 0x6D0F, + 3587: 0x6D11, + 3588: 0x6D13, + 3589: 0x6D1A, + 3590: 0x6D26, + 3591: 0x6D27, + 3592: 0x6D28, + 3593: 0x6C67, + 3594: 0x6D2E, + 3595: 0x6D2F, + 3596: 0x6D31, + 3597: 0x6D39, + 3598: 0x6D3C, + 3599: 0x6D3F, + 3600: 0x6D57, + 3601: 0x6D5E, + 3602: 0x6D5F, + 3603: 0x6D61, + 3604: 0x6D65, + 3605: 0x6D67, + 3606: 0x6D6F, + 3607: 0x6D70, + 3608: 0x6D7C, + 3609: 0x6D82, + 3610: 0x6D87, + 3611: 0x6D91, + 3612: 0x6D92, + 3613: 0x6D94, + 3614: 0x6D96, + 3615: 0x6D97, + 3616: 0x6D98, + 3617: 0x6DAA, + 3618: 0x6DAC, + 3619: 0x6DB4, + 3620: 0x6DB7, + 3621: 0x6DB9, + 3622: 0x6DBD, + 3623: 0x6DBF, + 3624: 0x6DC4, + 3625: 0x6DC8, + 3626: 0x6DCA, + 3627: 0x6DCE, + 3628: 0x6DCF, + 3629: 0x6DD6, + 3630: 0x6DDB, + 3631: 0x6DDD, + 3632: 0x6DDF, + 3633: 0x6DE0, + 3634: 0x6DE2, + 3635: 0x6DE5, + 3636: 0x6DE9, + 3637: 0x6DEF, + 3638: 0x6DF0, + 3639: 0x6DF4, + 3640: 0x6DF6, + 3641: 0x6DFC, + 3642: 0x6E00, + 3643: 0x6E04, + 3644: 0x6E1E, + 3645: 0x6E22, + 3646: 0x6E27, + 3647: 0x6E32, + 3648: 0x6E36, + 3649: 0x6E39, + 3650: 0x6E3B, + 3651: 0x6E3C, + 3652: 0x6E44, + 3653: 0x6E45, + 3654: 0x6E48, + 3655: 0x6E49, + 3656: 0x6E4B, + 3657: 0x6E4F, + 3658: 0x6E51, + 3659: 0x6E52, + 3660: 0x6E53, + 3661: 0x6E54, + 3662: 0x6E57, + 3663: 0x6E5C, + 3664: 0x6E5D, + 3665: 0x6E5E, + 3666: 0x6E62, + 3667: 0x6E63, + 3668: 0x6E68, + 3669: 0x6E73, + 3670: 0x6E7B, + 3671: 0x6E7D, + 3672: 0x6E8D, + 3673: 0x6E93, + 3674: 0x6E99, + 3675: 0x6EA0, + 3676: 0x6EA7, + 3677: 0x6EAD, + 3678: 0x6EAE, + 3679: 0x6EB1, + 3680: 0x6EB3, + 3681: 0x6EBB, + 3682: 0x6EBF, + 3683: 0x6EC0, + 3684: 0x6EC1, + 3685: 0x6EC3, + 3686: 0x6EC7, + 3687: 0x6EC8, + 3688: 0x6ECA, + 3689: 0x6ECD, + 3690: 0x6ECE, + 3691: 0x6ECF, + 3692: 0x6EEB, + 3693: 0x6EED, + 3694: 0x6EEE, + 3695: 0x6EF9, + 3696: 0x6EFB, + 3697: 0x6EFD, + 3698: 0x6F04, + 3699: 0x6F08, + 3700: 0x6F0A, + 3701: 0x6F0C, + 3702: 0x6F0D, + 3703: 0x6F16, + 3704: 0x6F18, + 3705: 0x6F1A, + 3706: 0x6F1B, + 3707: 0x6F26, + 3708: 0x6F29, + 3709: 0x6F2A, + 3710: 0x6F2F, + 3711: 0x6F30, + 3712: 0x6F33, + 3713: 0x6F36, + 3714: 0x6F3B, + 3715: 0x6F3C, + 3716: 0x6F2D, + 3717: 0x6F4F, + 3718: 0x6F51, + 3719: 0x6F52, + 3720: 0x6F53, + 3721: 0x6F57, + 3722: 0x6F59, + 3723: 0x6F5A, + 3724: 0x6F5D, + 3725: 0x6F5E, + 3726: 0x6F61, + 3727: 0x6F62, + 3728: 0x6F68, + 3729: 0x6F6C, + 3730: 0x6F7D, + 3731: 0x6F7E, + 3732: 0x6F83, + 3733: 0x6F87, + 3734: 0x6F88, + 3735: 0x6F8B, + 3736: 0x6F8C, + 3737: 0x6F8D, + 3738: 0x6F90, + 3739: 0x6F92, + 3740: 0x6F93, + 3741: 0x6F94, + 3742: 0x6F96, + 3743: 0x6F9A, + 3744: 0x6F9F, + 3745: 0x6FA0, + 3746: 0x6FA5, + 3747: 0x6FA6, + 3748: 0x6FA7, + 3749: 0x6FA8, + 3750: 0x6FAE, + 3751: 0x6FAF, + 3752: 0x6FB0, + 3753: 0x6FB5, + 3754: 0x6FB6, + 3755: 0x6FBC, + 3756: 0x6FC5, + 3757: 0x6FC7, + 3758: 0x6FC8, + 3759: 0x6FCA, + 3760: 0x6FDA, + 3761: 0x6FDE, + 3762: 0x6FE8, + 3763: 0x6FE9, + 3764: 0x6FF0, + 3765: 0x6FF5, + 3766: 0x6FF9, + 3767: 0x6FFC, + 3768: 0x6FFD, + 3769: 0x7000, + 3770: 0x7005, + 3771: 0x7006, + 3772: 0x7007, + 3773: 0x700D, + 3774: 0x7017, + 3775: 0x7020, + 3776: 0x7023, + 3777: 0x702F, + 3778: 0x7034, + 3779: 0x7037, + 3780: 0x7039, + 3781: 0x703C, + 3782: 0x7043, + 3783: 0x7044, + 3784: 0x7048, + 3785: 0x7049, + 3786: 0x704A, + 3787: 0x704B, + 3788: 0x7054, + 3789: 0x7055, + 3790: 0x705D, + 3791: 0x705E, + 3792: 0x704E, + 3793: 0x7064, + 3794: 0x7065, + 3795: 0x706C, + 3796: 0x706E, + 3797: 0x7075, + 3798: 0x7076, + 3799: 0x707E, + 3800: 0x7081, + 3801: 0x7085, + 3802: 0x7086, + 3803: 0x7094, + 3804: 0x7095, + 3805: 0x7096, + 3806: 0x7097, + 3807: 0x7098, + 3808: 0x709B, + 3809: 0x70A4, + 3810: 0x70AB, + 3811: 0x70B0, + 3812: 0x70B1, + 3813: 0x70B4, + 3814: 0x70B7, + 3815: 0x70CA, + 3816: 0x70D1, + 3817: 0x70D3, + 3818: 0x70D4, + 3819: 0x70D5, + 3820: 0x70D6, + 3821: 0x70D8, + 3822: 0x70DC, + 3823: 0x70E4, + 3824: 0x70FA, + 3825: 0x7103, + 3826: 0x7104, + 3827: 0x7105, + 3828: 0x7106, + 3829: 0x7107, + 3830: 0x710B, + 3831: 0x710C, + 3832: 0x710F, + 3833: 0x711E, + 3834: 0x7120, + 3835: 0x712B, + 3836: 0x712D, + 3837: 0x712F, + 3838: 0x7130, + 3839: 0x7131, + 3840: 0x7138, + 3841: 0x7141, + 3842: 0x7145, + 3843: 0x7146, + 3844: 0x7147, + 3845: 0x714A, + 3846: 0x714B, + 3847: 0x7150, + 3848: 0x7152, + 3849: 0x7157, + 3850: 0x715A, + 3851: 0x715C, + 3852: 0x715E, + 3853: 0x7160, + 3854: 0x7168, + 3855: 0x7179, + 3856: 0x7180, + 3857: 0x7185, + 3858: 0x7187, + 3859: 0x718C, + 3860: 0x7192, + 3861: 0x719A, + 3862: 0x719B, + 3863: 0x71A0, + 3864: 0x71A2, + 3865: 0x71AF, + 3866: 0x71B0, + 3867: 0x71B2, + 3868: 0x71B3, + 3869: 0x71BA, + 3870: 0x71BF, + 3871: 0x71C0, + 3872: 0x71C1, + 3873: 0x71C4, + 3874: 0x71CB, + 3875: 0x71CC, + 3876: 0x71D3, + 3877: 0x71D6, + 3878: 0x71D9, + 3879: 0x71DA, + 3880: 0x71DC, + 3881: 0x71F8, + 3882: 0x71FE, + 3883: 0x7200, + 3884: 0x7207, + 3885: 0x7208, + 3886: 0x7209, + 3887: 0x7213, + 3888: 0x7217, + 3889: 0x721A, + 3890: 0x721D, + 3891: 0x721F, + 3892: 0x7224, + 3893: 0x722B, + 3894: 0x722F, + 3895: 0x7234, + 3896: 0x7238, + 3897: 0x7239, + 3898: 0x7241, + 3899: 0x7242, + 3900: 0x7243, + 3901: 0x7245, + 3902: 0x724E, + 3903: 0x724F, + 3904: 0x7250, + 3905: 0x7253, + 3906: 0x7255, + 3907: 0x7256, + 3908: 0x725A, + 3909: 0x725C, + 3910: 0x725E, + 3911: 0x7260, + 3912: 0x7263, + 3913: 0x7268, + 3914: 0x726B, + 3915: 0x726E, + 3916: 0x726F, + 3917: 0x7271, + 3918: 0x7277, + 3919: 0x7278, + 3920: 0x727B, + 3921: 0x727C, + 3922: 0x727F, + 3923: 0x7284, + 3924: 0x7289, + 3925: 0x728D, + 3926: 0x728E, + 3927: 0x7293, + 3928: 0x729B, + 3929: 0x72A8, + 3930: 0x72AD, + 3931: 0x72AE, + 3932: 0x72B1, + 3933: 0x72B4, + 3934: 0x72BE, + 3935: 0x72C1, + 3936: 0x72C7, + 3937: 0x72C9, + 3938: 0x72CC, + 3939: 0x72D5, + 3940: 0x72D6, + 3941: 0x72D8, + 3942: 0x72DF, + 3943: 0x72E5, + 3944: 0x72F3, + 3945: 0x72F4, + 3946: 0x72FA, + 3947: 0x72FB, + 3948: 0x72FE, + 3949: 0x7302, + 3950: 0x7304, + 3951: 0x7305, + 3952: 0x7307, + 3953: 0x730B, + 3954: 0x730D, + 3955: 0x7312, + 3956: 0x7313, + 3957: 0x7318, + 3958: 0x7319, + 3959: 0x731E, + 3960: 0x7322, + 3961: 0x7324, + 3962: 0x7327, + 3963: 0x7328, + 3964: 0x732C, + 3965: 0x7331, + 3966: 0x7332, + 3967: 0x7335, + 3968: 0x733A, + 3969: 0x733B, + 3970: 0x733D, + 3971: 0x7343, + 3972: 0x734D, + 3973: 0x7350, + 3974: 0x7352, + 3975: 0x7356, + 3976: 0x7358, + 3977: 0x735D, + 3978: 0x735E, + 3979: 0x735F, + 3980: 0x7360, + 3981: 0x7366, + 3982: 0x7367, + 3983: 0x7369, + 3984: 0x736B, + 3985: 0x736C, + 3986: 0x736E, + 3987: 0x736F, + 3988: 0x7371, + 3989: 0x7377, + 3990: 0x7379, + 3991: 0x737C, + 3992: 0x7380, + 3993: 0x7381, + 3994: 0x7383, + 3995: 0x7385, + 3996: 0x7386, + 3997: 0x738E, + 3998: 0x7390, + 3999: 0x7393, + 4000: 0x7395, + 4001: 0x7397, + 4002: 0x7398, + 4003: 0x739C, + 4004: 0x739E, + 4005: 0x739F, + 4006: 0x73A0, + 4007: 0x73A2, + 4008: 0x73A5, + 4009: 0x73A6, + 4010: 0x73AA, + 4011: 0x73AB, + 4012: 0x73AD, + 4013: 0x73B5, + 4014: 0x73B7, + 4015: 0x73B9, + 4016: 0x73BC, + 4017: 0x73BD, + 4018: 0x73BF, + 4019: 0x73C5, + 4020: 0x73C6, + 4021: 0x73C9, + 4022: 0x73CB, + 4023: 0x73CC, + 4024: 0x73CF, + 4025: 0x73D2, + 4026: 0x73D3, + 4027: 0x73D6, + 4028: 0x73D9, + 4029: 0x73DD, + 4030: 0x73E1, + 4031: 0x73E3, + 4032: 0x73E6, + 4033: 0x73E7, + 4034: 0x73E9, + 4035: 0x73F4, + 4036: 0x73F5, + 4037: 0x73F7, + 4038: 0x73F9, + 4039: 0x73FA, + 4040: 0x73FB, + 4041: 0x73FD, + 4042: 0x73FF, + 4043: 0x7400, + 4044: 0x7401, + 4045: 0x7404, + 4046: 0x7407, + 4047: 0x740A, + 4048: 0x7411, + 4049: 0x741A, + 4050: 0x741B, + 4051: 0x7424, + 4052: 0x7426, + 4053: 0x7428, + 4054: 0x7429, + 4055: 0x742A, + 4056: 0x742B, + 4057: 0x742C, + 4058: 0x742D, + 4059: 0x742E, + 4060: 0x742F, + 4061: 0x7430, + 4062: 0x7431, + 4063: 0x7439, + 4064: 0x7440, + 4065: 0x7443, + 4066: 0x7444, + 4067: 0x7446, + 4068: 0x7447, + 4069: 0x744B, + 4070: 0x744D, + 4071: 0x7451, + 4072: 0x7452, + 4073: 0x7457, + 4074: 0x745D, + 4075: 0x7462, + 4076: 0x7466, + 4077: 0x7467, + 4078: 0x7468, + 4079: 0x746B, + 4080: 0x746D, + 4081: 0x746E, + 4082: 0x7471, + 4083: 0x7472, + 4084: 0x7480, + 4085: 0x7481, + 4086: 0x7485, + 4087: 0x7486, + 4088: 0x7487, + 4089: 0x7489, + 4090: 0x748F, + 4091: 0x7490, + 4092: 0x7491, + 4093: 0x7492, + 4094: 0x7498, + 4095: 0x7499, + 4096: 0x749A, + 4097: 0x749C, + 4098: 0x749F, + 4099: 0x74A0, + 4100: 0x74A1, + 4101: 0x74A3, + 4102: 0x74A6, + 4103: 0x74A8, + 4104: 0x74A9, + 4105: 0x74AA, + 4106: 0x74AB, + 4107: 0x74AE, + 4108: 0x74AF, + 4109: 0x74B1, + 4110: 0x74B2, + 4111: 0x74B5, + 4112: 0x74B9, + 4113: 0x74BB, + 4114: 0x74BF, + 4115: 0x74C8, + 4116: 0x74C9, + 4117: 0x74CC, + 4118: 0x74D0, + 4119: 0x74D3, + 4120: 0x74D8, + 4121: 0x74DA, + 4122: 0x74DB, + 4123: 0x74DE, + 4124: 0x74DF, + 4125: 0x74E4, + 4126: 0x74E8, + 4127: 0x74EA, + 4128: 0x74EB, + 4129: 0x74EF, + 4130: 0x74F4, + 4131: 0x74FA, + 4132: 0x74FB, + 4133: 0x74FC, + 4134: 0x74FF, + 4135: 0x7506, + 4136: 0x7512, + 4137: 0x7516, + 4138: 0x7517, + 4139: 0x7520, + 4140: 0x7521, + 4141: 0x7524, + 4142: 0x7527, + 4143: 0x7529, + 4144: 0x752A, + 4145: 0x752F, + 4146: 0x7536, + 4147: 0x7539, + 4148: 0x753D, + 4149: 0x753E, + 4150: 0x753F, + 4151: 0x7540, + 4152: 0x7543, + 4153: 0x7547, + 4154: 0x7548, + 4155: 0x754E, + 4156: 0x7550, + 4157: 0x7552, + 4158: 0x7557, + 4159: 0x755E, + 4160: 0x755F, + 4161: 0x7561, + 4162: 0x756F, + 4163: 0x7571, + 4164: 0x7579, + 4165: 0x757A, + 4166: 0x757B, + 4167: 0x757C, + 4168: 0x757D, + 4169: 0x757E, + 4170: 0x7581, + 4171: 0x7585, + 4172: 0x7590, + 4173: 0x7592, + 4174: 0x7593, + 4175: 0x7595, + 4176: 0x7599, + 4177: 0x759C, + 4178: 0x75A2, + 4179: 0x75A4, + 4180: 0x75B4, + 4181: 0x75BA, + 4182: 0x75BF, + 4183: 0x75C0, + 4184: 0x75C1, + 4185: 0x75C4, + 4186: 0x75C6, + 4187: 0x75CC, + 4188: 0x75CE, + 4189: 0x75CF, + 4190: 0x75D7, + 4191: 0x75DC, + 4192: 0x75DF, + 4193: 0x75E0, + 4194: 0x75E1, + 4195: 0x75E4, + 4196: 0x75E7, + 4197: 0x75EC, + 4198: 0x75EE, + 4199: 0x75EF, + 4200: 0x75F1, + 4201: 0x75F9, + 4202: 0x7600, + 4203: 0x7602, + 4204: 0x7603, + 4205: 0x7604, + 4206: 0x7607, + 4207: 0x7608, + 4208: 0x760A, + 4209: 0x760C, + 4210: 0x760F, + 4211: 0x7612, + 4212: 0x7613, + 4213: 0x7615, + 4214: 0x7616, + 4215: 0x7619, + 4216: 0x761B, + 4217: 0x761C, + 4218: 0x761D, + 4219: 0x761E, + 4220: 0x7623, + 4221: 0x7625, + 4222: 0x7626, + 4223: 0x7629, + 4224: 0x762D, + 4225: 0x7632, + 4226: 0x7633, + 4227: 0x7635, + 4228: 0x7638, + 4229: 0x7639, + 4230: 0x763A, + 4231: 0x763C, + 4232: 0x764A, + 4233: 0x7640, + 4234: 0x7641, + 4235: 0x7643, + 4236: 0x7644, + 4237: 0x7645, + 4238: 0x7649, + 4239: 0x764B, + 4240: 0x7655, + 4241: 0x7659, + 4242: 0x765F, + 4243: 0x7664, + 4244: 0x7665, + 4245: 0x766D, + 4246: 0x766E, + 4247: 0x766F, + 4248: 0x7671, + 4249: 0x7674, + 4250: 0x7681, + 4251: 0x7685, + 4252: 0x768C, + 4253: 0x768D, + 4254: 0x7695, + 4255: 0x769B, + 4256: 0x769C, + 4257: 0x769D, + 4258: 0x769F, + 4259: 0x76A0, + 4260: 0x76A2, + 4261: 0x76A3, + 4262: 0x76A4, + 4263: 0x76A5, + 4264: 0x76A6, + 4265: 0x76A7, + 4266: 0x76A8, + 4267: 0x76AA, + 4268: 0x76AD, + 4269: 0x76BD, + 4270: 0x76C1, + 4271: 0x76C5, + 4272: 0x76C9, + 4273: 0x76CB, + 4274: 0x76CC, + 4275: 0x76CE, + 4276: 0x76D4, + 4277: 0x76D9, + 4278: 0x76E0, + 4279: 0x76E6, + 4280: 0x76E8, + 4281: 0x76EC, + 4282: 0x76F0, + 4283: 0x76F1, + 4284: 0x76F6, + 4285: 0x76F9, + 4286: 0x76FC, + 4287: 0x7700, + 4288: 0x7706, + 4289: 0x770A, + 4290: 0x770E, + 4291: 0x7712, + 4292: 0x7714, + 4293: 0x7715, + 4294: 0x7717, + 4295: 0x7719, + 4296: 0x771A, + 4297: 0x771C, + 4298: 0x7722, + 4299: 0x7728, + 4300: 0x772D, + 4301: 0x772E, + 4302: 0x772F, + 4303: 0x7734, + 4304: 0x7735, + 4305: 0x7736, + 4306: 0x7739, + 4307: 0x773D, + 4308: 0x773E, + 4309: 0x7742, + 4310: 0x7745, + 4311: 0x7746, + 4312: 0x774A, + 4313: 0x774D, + 4314: 0x774E, + 4315: 0x774F, + 4316: 0x7752, + 4317: 0x7756, + 4318: 0x7757, + 4319: 0x775C, + 4320: 0x775E, + 4321: 0x775F, + 4322: 0x7760, + 4323: 0x7762, + 4324: 0x7764, + 4325: 0x7767, + 4326: 0x776A, + 4327: 0x776C, + 4328: 0x7770, + 4329: 0x7772, + 4330: 0x7773, + 4331: 0x7774, + 4332: 0x777A, + 4333: 0x777D, + 4334: 0x7780, + 4335: 0x7784, + 4336: 0x778C, + 4337: 0x778D, + 4338: 0x7794, + 4339: 0x7795, + 4340: 0x7796, + 4341: 0x779A, + 4342: 0x779F, + 4343: 0x77A2, + 4344: 0x77A7, + 4345: 0x77AA, + 4346: 0x77AE, + 4347: 0x77AF, + 4348: 0x77B1, + 4349: 0x77B5, + 4350: 0x77BE, + 4351: 0x77C3, + 4352: 0x77C9, + 4353: 0x77D1, + 4354: 0x77D2, + 4355: 0x77D5, + 4356: 0x77D9, + 4357: 0x77DE, + 4358: 0x77DF, + 4359: 0x77E0, + 4360: 0x77E4, + 4361: 0x77E6, + 4362: 0x77EA, + 4363: 0x77EC, + 4364: 0x77F0, + 4365: 0x77F1, + 4366: 0x77F4, + 4367: 0x77F8, + 4368: 0x77FB, + 4369: 0x7805, + 4370: 0x7806, + 4371: 0x7809, + 4372: 0x780D, + 4373: 0x780E, + 4374: 0x7811, + 4375: 0x781D, + 4376: 0x7821, + 4377: 0x7822, + 4378: 0x7823, + 4379: 0x782D, + 4380: 0x782E, + 4381: 0x7830, + 4382: 0x7835, + 4383: 0x7837, + 4384: 0x7843, + 4385: 0x7844, + 4386: 0x7847, + 4387: 0x7848, + 4388: 0x784C, + 4389: 0x784E, + 4390: 0x7852, + 4391: 0x785C, + 4392: 0x785E, + 4393: 0x7860, + 4394: 0x7861, + 4395: 0x7863, + 4396: 0x7864, + 4397: 0x7868, + 4398: 0x786A, + 4399: 0x786E, + 4400: 0x787A, + 4401: 0x787E, + 4402: 0x788A, + 4403: 0x788F, + 4404: 0x7894, + 4405: 0x7898, + 4406: 0x78A1, + 4407: 0x789D, + 4408: 0x789E, + 4409: 0x789F, + 4410: 0x78A4, + 4411: 0x78A8, + 4412: 0x78AC, + 4413: 0x78AD, + 4414: 0x78B0, + 4415: 0x78B1, + 4416: 0x78B2, + 4417: 0x78B3, + 4418: 0x78BB, + 4419: 0x78BD, + 4420: 0x78BF, + 4421: 0x78C7, + 4422: 0x78C8, + 4423: 0x78C9, + 4424: 0x78CC, + 4425: 0x78CE, + 4426: 0x78D2, + 4427: 0x78D3, + 4428: 0x78D5, + 4429: 0x78D6, + 4430: 0x78E4, + 4431: 0x78DB, + 4432: 0x78DF, + 4433: 0x78E0, + 4434: 0x78E1, + 4435: 0x78E6, + 4436: 0x78EA, + 4437: 0x78F2, + 4438: 0x78F3, + 4439: 0x7900, + 4440: 0x78F6, + 4441: 0x78F7, + 4442: 0x78FA, + 4443: 0x78FB, + 4444: 0x78FF, + 4445: 0x7906, + 4446: 0x790C, + 4447: 0x7910, + 4448: 0x791A, + 4449: 0x791C, + 4450: 0x791E, + 4451: 0x791F, + 4452: 0x7920, + 4453: 0x7925, + 4454: 0x7927, + 4455: 0x7929, + 4456: 0x792D, + 4457: 0x7931, + 4458: 0x7934, + 4459: 0x7935, + 4460: 0x793B, + 4461: 0x793D, + 4462: 0x793F, + 4463: 0x7944, + 4464: 0x7945, + 4465: 0x7946, + 4466: 0x794A, + 4467: 0x794B, + 4468: 0x794F, + 4469: 0x7951, + 4470: 0x7954, + 4471: 0x7958, + 4472: 0x795B, + 4473: 0x795C, + 4474: 0x7967, + 4475: 0x7969, + 4476: 0x796B, + 4477: 0x7972, + 4478: 0x7979, + 4479: 0x797B, + 4480: 0x797C, + 4481: 0x797E, + 4482: 0x798B, + 4483: 0x798C, + 4484: 0x7991, + 4485: 0x7993, + 4486: 0x7994, + 4487: 0x7995, + 4488: 0x7996, + 4489: 0x7998, + 4490: 0x799B, + 4491: 0x799C, + 4492: 0x79A1, + 4493: 0x79A8, + 4494: 0x79A9, + 4495: 0x79AB, + 4496: 0x79AF, + 4497: 0x79B1, + 4498: 0x79B4, + 4499: 0x79B8, + 4500: 0x79BB, + 4501: 0x79C2, + 4502: 0x79C4, + 4503: 0x79C7, + 4504: 0x79C8, + 4505: 0x79CA, + 4506: 0x79CF, + 4507: 0x79D4, + 4508: 0x79D6, + 4509: 0x79DA, + 4510: 0x79DD, + 4511: 0x79DE, + 4512: 0x79E0, + 4513: 0x79E2, + 4514: 0x79E5, + 4515: 0x79EA, + 4516: 0x79EB, + 4517: 0x79ED, + 4518: 0x79F1, + 4519: 0x79F8, + 4520: 0x79FC, + 4521: 0x7A02, + 4522: 0x7A03, + 4523: 0x7A07, + 4524: 0x7A09, + 4525: 0x7A0A, + 4526: 0x7A0C, + 4527: 0x7A11, + 4528: 0x7A15, + 4529: 0x7A1B, + 4530: 0x7A1E, + 4531: 0x7A21, + 4532: 0x7A27, + 4533: 0x7A2B, + 4534: 0x7A2D, + 4535: 0x7A2F, + 4536: 0x7A30, + 4537: 0x7A34, + 4538: 0x7A35, + 4539: 0x7A38, + 4540: 0x7A39, + 4541: 0x7A3A, + 4542: 0x7A44, + 4543: 0x7A45, + 4544: 0x7A47, + 4545: 0x7A48, + 4546: 0x7A4C, + 4547: 0x7A55, + 4548: 0x7A56, + 4549: 0x7A59, + 4550: 0x7A5C, + 4551: 0x7A5D, + 4552: 0x7A5F, + 4553: 0x7A60, + 4554: 0x7A65, + 4555: 0x7A67, + 4556: 0x7A6A, + 4557: 0x7A6D, + 4558: 0x7A75, + 4559: 0x7A78, + 4560: 0x7A7E, + 4561: 0x7A80, + 4562: 0x7A82, + 4563: 0x7A85, + 4564: 0x7A86, + 4565: 0x7A8A, + 4566: 0x7A8B, + 4567: 0x7A90, + 4568: 0x7A91, + 4569: 0x7A94, + 4570: 0x7A9E, + 4571: 0x7AA0, + 4572: 0x7AA3, + 4573: 0x7AAC, + 4574: 0x7AB3, + 4575: 0x7AB5, + 4576: 0x7AB9, + 4577: 0x7ABB, + 4578: 0x7ABC, + 4579: 0x7AC6, + 4580: 0x7AC9, + 4581: 0x7ACC, + 4582: 0x7ACE, + 4583: 0x7AD1, + 4584: 0x7ADB, + 4585: 0x7AE8, + 4586: 0x7AE9, + 4587: 0x7AEB, + 4588: 0x7AEC, + 4589: 0x7AF1, + 4590: 0x7AF4, + 4591: 0x7AFB, + 4592: 0x7AFD, + 4593: 0x7AFE, + 4594: 0x7B07, + 4595: 0x7B14, + 4596: 0x7B1F, + 4597: 0x7B23, + 4598: 0x7B27, + 4599: 0x7B29, + 4600: 0x7B2A, + 4601: 0x7B2B, + 4602: 0x7B2D, + 4603: 0x7B2E, + 4604: 0x7B2F, + 4605: 0x7B30, + 4606: 0x7B31, + 4607: 0x7B34, + 4608: 0x7B3D, + 4609: 0x7B3F, + 4610: 0x7B40, + 4611: 0x7B41, + 4612: 0x7B47, + 4613: 0x7B4E, + 4614: 0x7B55, + 4615: 0x7B60, + 4616: 0x7B64, + 4617: 0x7B66, + 4618: 0x7B69, + 4619: 0x7B6A, + 4620: 0x7B6D, + 4621: 0x7B6F, + 4622: 0x7B72, + 4623: 0x7B73, + 4624: 0x7B77, + 4625: 0x7B84, + 4626: 0x7B89, + 4627: 0x7B8E, + 4628: 0x7B90, + 4629: 0x7B91, + 4630: 0x7B96, + 4631: 0x7B9B, + 4632: 0x7B9E, + 4633: 0x7BA0, + 4634: 0x7BA5, + 4635: 0x7BAC, + 4636: 0x7BAF, + 4637: 0x7BB0, + 4638: 0x7BB2, + 4639: 0x7BB5, + 4640: 0x7BB6, + 4641: 0x7BBA, + 4642: 0x7BBB, + 4643: 0x7BBC, + 4644: 0x7BBD, + 4645: 0x7BC2, + 4646: 0x7BC5, + 4647: 0x7BC8, + 4648: 0x7BCA, + 4649: 0x7BD4, + 4650: 0x7BD6, + 4651: 0x7BD7, + 4652: 0x7BD9, + 4653: 0x7BDA, + 4654: 0x7BDB, + 4655: 0x7BE8, + 4656: 0x7BEA, + 4657: 0x7BF2, + 4658: 0x7BF4, + 4659: 0x7BF5, + 4660: 0x7BF8, + 4661: 0x7BF9, + 4662: 0x7BFA, + 4663: 0x7BFC, + 4664: 0x7BFE, + 4665: 0x7C01, + 4666: 0x7C02, + 4667: 0x7C03, + 4668: 0x7C04, + 4669: 0x7C06, + 4670: 0x7C09, + 4671: 0x7C0B, + 4672: 0x7C0C, + 4673: 0x7C0E, + 4674: 0x7C0F, + 4675: 0x7C19, + 4676: 0x7C1B, + 4677: 0x7C20, + 4678: 0x7C25, + 4679: 0x7C26, + 4680: 0x7C28, + 4681: 0x7C2C, + 4682: 0x7C31, + 4683: 0x7C33, + 4684: 0x7C34, + 4685: 0x7C36, + 4686: 0x7C39, + 4687: 0x7C3A, + 4688: 0x7C46, + 4689: 0x7C4A, + 4690: 0x7C55, + 4691: 0x7C51, + 4692: 0x7C52, + 4693: 0x7C53, + 4694: 0x7C59, + 4695: 0x7C5A, + 4696: 0x7C5B, + 4697: 0x7C5C, + 4698: 0x7C5D, + 4699: 0x7C5E, + 4700: 0x7C61, + 4701: 0x7C63, + 4702: 0x7C67, + 4703: 0x7C69, + 4704: 0x7C6D, + 4705: 0x7C6E, + 4706: 0x7C70, + 4707: 0x7C72, + 4708: 0x7C79, + 4709: 0x7C7C, + 4710: 0x7C7D, + 4711: 0x7C86, + 4712: 0x7C87, + 4713: 0x7C8F, + 4714: 0x7C94, + 4715: 0x7C9E, + 4716: 0x7CA0, + 4717: 0x7CA6, + 4718: 0x7CB0, + 4719: 0x7CB6, + 4720: 0x7CB7, + 4721: 0x7CBA, + 4722: 0x7CBB, + 4723: 0x7CBC, + 4724: 0x7CBF, + 4725: 0x7CC4, + 4726: 0x7CC7, + 4727: 0x7CC8, + 4728: 0x7CC9, + 4729: 0x7CCD, + 4730: 0x7CCF, + 4731: 0x7CD3, + 4732: 0x7CD4, + 4733: 0x7CD5, + 4734: 0x7CD7, + 4735: 0x7CD9, + 4736: 0x7CDA, + 4737: 0x7CDD, + 4738: 0x7CE6, + 4739: 0x7CE9, + 4740: 0x7CEB, + 4741: 0x7CF5, + 4742: 0x7D03, + 4743: 0x7D07, + 4744: 0x7D08, + 4745: 0x7D09, + 4746: 0x7D0F, + 4747: 0x7D11, + 4748: 0x7D12, + 4749: 0x7D13, + 4750: 0x7D16, + 4751: 0x7D1D, + 4752: 0x7D1E, + 4753: 0x7D23, + 4754: 0x7D26, + 4755: 0x7D2A, + 4756: 0x7D2D, + 4757: 0x7D31, + 4758: 0x7D3C, + 4759: 0x7D3D, + 4760: 0x7D3E, + 4761: 0x7D40, + 4762: 0x7D41, + 4763: 0x7D47, + 4764: 0x7D48, + 4765: 0x7D4D, + 4766: 0x7D51, + 4767: 0x7D53, + 4768: 0x7D57, + 4769: 0x7D59, + 4770: 0x7D5A, + 4771: 0x7D5C, + 4772: 0x7D5D, + 4773: 0x7D65, + 4774: 0x7D67, + 4775: 0x7D6A, + 4776: 0x7D70, + 4777: 0x7D78, + 4778: 0x7D7A, + 4779: 0x7D7B, + 4780: 0x7D7F, + 4781: 0x7D81, + 4782: 0x7D82, + 4783: 0x7D83, + 4784: 0x7D85, + 4785: 0x7D86, + 4786: 0x7D88, + 4787: 0x7D8B, + 4788: 0x7D8C, + 4789: 0x7D8D, + 4790: 0x7D91, + 4791: 0x7D96, + 4792: 0x7D97, + 4793: 0x7D9D, + 4794: 0x7D9E, + 4795: 0x7DA6, + 4796: 0x7DA7, + 4797: 0x7DAA, + 4798: 0x7DB3, + 4799: 0x7DB6, + 4800: 0x7DB7, + 4801: 0x7DB9, + 4802: 0x7DC2, + 4803: 0x7DC3, + 4804: 0x7DC4, + 4805: 0x7DC5, + 4806: 0x7DC6, + 4807: 0x7DCC, + 4808: 0x7DCD, + 4809: 0x7DCE, + 4810: 0x7DD7, + 4811: 0x7DD9, + 4812: 0x7E00, + 4813: 0x7DE2, + 4814: 0x7DE5, + 4815: 0x7DE6, + 4816: 0x7DEA, + 4817: 0x7DEB, + 4818: 0x7DED, + 4819: 0x7DF1, + 4820: 0x7DF5, + 4821: 0x7DF6, + 4822: 0x7DF9, + 4823: 0x7DFA, + 4824: 0x7E08, + 4825: 0x7E10, + 4826: 0x7E11, + 4827: 0x7E15, + 4828: 0x7E17, + 4829: 0x7E1C, + 4830: 0x7E1D, + 4831: 0x7E20, + 4832: 0x7E27, + 4833: 0x7E28, + 4834: 0x7E2C, + 4835: 0x7E2D, + 4836: 0x7E2F, + 4837: 0x7E33, + 4838: 0x7E36, + 4839: 0x7E3F, + 4840: 0x7E44, + 4841: 0x7E45, + 4842: 0x7E47, + 4843: 0x7E4E, + 4844: 0x7E50, + 4845: 0x7E52, + 4846: 0x7E58, + 4847: 0x7E5F, + 4848: 0x7E61, + 4849: 0x7E62, + 4850: 0x7E65, + 4851: 0x7E6B, + 4852: 0x7E6E, + 4853: 0x7E6F, + 4854: 0x7E73, + 4855: 0x7E78, + 4856: 0x7E7E, + 4857: 0x7E81, + 4858: 0x7E86, + 4859: 0x7E87, + 4860: 0x7E8A, + 4861: 0x7E8D, + 4862: 0x7E91, + 4863: 0x7E95, + 4864: 0x7E98, + 4865: 0x7E9A, + 4866: 0x7E9D, + 4867: 0x7E9E, + 4868: 0x7F3C, + 4869: 0x7F3B, + 4870: 0x7F3D, + 4871: 0x7F3E, + 4872: 0x7F3F, + 4873: 0x7F43, + 4874: 0x7F44, + 4875: 0x7F47, + 4876: 0x7F4F, + 4877: 0x7F52, + 4878: 0x7F53, + 4879: 0x7F5B, + 4880: 0x7F5C, + 4881: 0x7F5D, + 4882: 0x7F61, + 4883: 0x7F63, + 4884: 0x7F64, + 4885: 0x7F65, + 4886: 0x7F66, + 4887: 0x7F6D, + 4888: 0x7F71, + 4889: 0x7F7D, + 4890: 0x7F7E, + 4891: 0x7F7F, + 4892: 0x7F80, + 4893: 0x7F8B, + 4894: 0x7F8D, + 4895: 0x7F8F, + 4896: 0x7F90, + 4897: 0x7F91, + 4898: 0x7F96, + 4899: 0x7F97, + 4900: 0x7F9C, + 4901: 0x7FA1, + 4902: 0x7FA2, + 4903: 0x7FA6, + 4904: 0x7FAA, + 4905: 0x7FAD, + 4906: 0x7FB4, + 4907: 0x7FBC, + 4908: 0x7FBF, + 4909: 0x7FC0, + 4910: 0x7FC3, + 4911: 0x7FC8, + 4912: 0x7FCE, + 4913: 0x7FCF, + 4914: 0x7FDB, + 4915: 0x7FDF, + 4916: 0x7FE3, + 4917: 0x7FE5, + 4918: 0x7FE8, + 4919: 0x7FEC, + 4920: 0x7FEE, + 4921: 0x7FEF, + 4922: 0x7FF2, + 4923: 0x7FFA, + 4924: 0x7FFD, + 4925: 0x7FFE, + 4926: 0x7FFF, + 4927: 0x8007, + 4928: 0x8008, + 4929: 0x800A, + 4930: 0x800D, + 4931: 0x800E, + 4932: 0x800F, + 4933: 0x8011, + 4934: 0x8013, + 4935: 0x8014, + 4936: 0x8016, + 4937: 0x801D, + 4938: 0x801E, + 4939: 0x801F, + 4940: 0x8020, + 4941: 0x8024, + 4942: 0x8026, + 4943: 0x802C, + 4944: 0x802E, + 4945: 0x8030, + 4946: 0x8034, + 4947: 0x8035, + 4948: 0x8037, + 4949: 0x8039, + 4950: 0x803A, + 4951: 0x803C, + 4952: 0x803E, + 4953: 0x8040, + 4954: 0x8044, + 4955: 0x8060, + 4956: 0x8064, + 4957: 0x8066, + 4958: 0x806D, + 4959: 0x8071, + 4960: 0x8075, + 4961: 0x8081, + 4962: 0x8088, + 4963: 0x808E, + 4964: 0x809C, + 4965: 0x809E, + 4966: 0x80A6, + 4967: 0x80A7, + 4968: 0x80AB, + 4969: 0x80B8, + 4970: 0x80B9, + 4971: 0x80C8, + 4972: 0x80CD, + 4973: 0x80CF, + 4974: 0x80D2, + 4975: 0x80D4, + 4976: 0x80D5, + 4977: 0x80D7, + 4978: 0x80D8, + 4979: 0x80E0, + 4980: 0x80ED, + 4981: 0x80EE, + 4982: 0x80F0, + 4983: 0x80F2, + 4984: 0x80F3, + 4985: 0x80F6, + 4986: 0x80F9, + 4987: 0x80FA, + 4988: 0x80FE, + 4989: 0x8103, + 4990: 0x810B, + 4991: 0x8116, + 4992: 0x8117, + 4993: 0x8118, + 4994: 0x811C, + 4995: 0x811E, + 4996: 0x8120, + 4997: 0x8124, + 4998: 0x8127, + 4999: 0x812C, + 5000: 0x8130, + 5001: 0x8135, + 5002: 0x813A, + 5003: 0x813C, + 5004: 0x8145, + 5005: 0x8147, + 5006: 0x814A, + 5007: 0x814C, + 5008: 0x8152, + 5009: 0x8157, + 5010: 0x8160, + 5011: 0x8161, + 5012: 0x8167, + 5013: 0x8168, + 5014: 0x8169, + 5015: 0x816D, + 5016: 0x816F, + 5017: 0x8177, + 5018: 0x8181, + 5019: 0x8190, + 5020: 0x8184, + 5021: 0x8185, + 5022: 0x8186, + 5023: 0x818B, + 5024: 0x818E, + 5025: 0x8196, + 5026: 0x8198, + 5027: 0x819B, + 5028: 0x819E, + 5029: 0x81A2, + 5030: 0x81AE, + 5031: 0x81B2, + 5032: 0x81B4, + 5033: 0x81BB, + 5034: 0x81CB, + 5035: 0x81C3, + 5036: 0x81C5, + 5037: 0x81CA, + 5038: 0x81CE, + 5039: 0x81CF, + 5040: 0x81D5, + 5041: 0x81D7, + 5042: 0x81DB, + 5043: 0x81DD, + 5044: 0x81DE, + 5045: 0x81E1, + 5046: 0x81E4, + 5047: 0x81EB, + 5048: 0x81EC, + 5049: 0x81F0, + 5050: 0x81F1, + 5051: 0x81F2, + 5052: 0x81F5, + 5053: 0x81F6, + 5054: 0x81F8, + 5055: 0x81F9, + 5056: 0x81FD, + 5057: 0x81FF, + 5058: 0x8200, + 5059: 0x8203, + 5060: 0x820F, + 5061: 0x8213, + 5062: 0x8214, + 5063: 0x8219, + 5064: 0x821A, + 5065: 0x821D, + 5066: 0x8221, + 5067: 0x8222, + 5068: 0x8228, + 5069: 0x8232, + 5070: 0x8234, + 5071: 0x823A, + 5072: 0x8243, + 5073: 0x8244, + 5074: 0x8245, + 5075: 0x8246, + 5076: 0x824B, + 5077: 0x824E, + 5078: 0x824F, + 5079: 0x8251, + 5080: 0x8256, + 5081: 0x825C, + 5082: 0x8260, + 5083: 0x8263, + 5084: 0x8267, + 5085: 0x826D, + 5086: 0x8274, + 5087: 0x827B, + 5088: 0x827D, + 5089: 0x827F, + 5090: 0x8280, + 5091: 0x8281, + 5092: 0x8283, + 5093: 0x8284, + 5094: 0x8287, + 5095: 0x8289, + 5096: 0x828A, + 5097: 0x828E, + 5098: 0x8291, + 5099: 0x8294, + 5100: 0x8296, + 5101: 0x8298, + 5102: 0x829A, + 5103: 0x829B, + 5104: 0x82A0, + 5105: 0x82A1, + 5106: 0x82A3, + 5107: 0x82A4, + 5108: 0x82A7, + 5109: 0x82A8, + 5110: 0x82A9, + 5111: 0x82AA, + 5112: 0x82AE, + 5113: 0x82B0, + 5114: 0x82B2, + 5115: 0x82B4, + 5116: 0x82B7, + 5117: 0x82BA, + 5118: 0x82BC, + 5119: 0x82BE, + 5120: 0x82BF, + 5121: 0x82C6, + 5122: 0x82D0, + 5123: 0x82D5, + 5124: 0x82DA, + 5125: 0x82E0, + 5126: 0x82E2, + 5127: 0x82E4, + 5128: 0x82E8, + 5129: 0x82EA, + 5130: 0x82ED, + 5131: 0x82EF, + 5132: 0x82F6, + 5133: 0x82F7, + 5134: 0x82FD, + 5135: 0x82FE, + 5136: 0x8300, + 5137: 0x8301, + 5138: 0x8307, + 5139: 0x8308, + 5140: 0x830A, + 5141: 0x830B, + 5142: 0x8354, + 5143: 0x831B, + 5144: 0x831D, + 5145: 0x831E, + 5146: 0x831F, + 5147: 0x8321, + 5148: 0x8322, + 5149: 0x832C, + 5150: 0x832D, + 5151: 0x832E, + 5152: 0x8330, + 5153: 0x8333, + 5154: 0x8337, + 5155: 0x833A, + 5156: 0x833C, + 5157: 0x833D, + 5158: 0x8342, + 5159: 0x8343, + 5160: 0x8344, + 5161: 0x8347, + 5162: 0x834D, + 5163: 0x834E, + 5164: 0x8351, + 5165: 0x8355, + 5166: 0x8356, + 5167: 0x8357, + 5168: 0x8370, + 5169: 0x8378, + 5170: 0x837D, + 5171: 0x837F, + 5172: 0x8380, + 5173: 0x8382, + 5174: 0x8384, + 5175: 0x8386, + 5176: 0x838D, + 5177: 0x8392, + 5178: 0x8394, + 5179: 0x8395, + 5180: 0x8398, + 5181: 0x8399, + 5182: 0x839B, + 5183: 0x839C, + 5184: 0x839D, + 5185: 0x83A6, + 5186: 0x83A7, + 5187: 0x83A9, + 5188: 0x83AC, + 5189: 0x83BE, + 5190: 0x83BF, + 5191: 0x83C0, + 5192: 0x83C7, + 5193: 0x83C9, + 5194: 0x83CF, + 5195: 0x83D0, + 5196: 0x83D1, + 5197: 0x83D4, + 5198: 0x83DD, + 5199: 0x8353, + 5200: 0x83E8, + 5201: 0x83EA, + 5202: 0x83F6, + 5203: 0x83F8, + 5204: 0x83F9, + 5205: 0x83FC, + 5206: 0x8401, + 5207: 0x8406, + 5208: 0x840A, + 5209: 0x840F, + 5210: 0x8411, + 5211: 0x8415, + 5212: 0x8419, + 5213: 0x83AD, + 5214: 0x842F, + 5215: 0x8439, + 5216: 0x8445, + 5217: 0x8447, + 5218: 0x8448, + 5219: 0x844A, + 5220: 0x844D, + 5221: 0x844F, + 5222: 0x8451, + 5223: 0x8452, + 5224: 0x8456, + 5225: 0x8458, + 5226: 0x8459, + 5227: 0x845A, + 5228: 0x845C, + 5229: 0x8460, + 5230: 0x8464, + 5231: 0x8465, + 5232: 0x8467, + 5233: 0x846A, + 5234: 0x8470, + 5235: 0x8473, + 5236: 0x8474, + 5237: 0x8476, + 5238: 0x8478, + 5239: 0x847C, + 5240: 0x847D, + 5241: 0x8481, + 5242: 0x8485, + 5243: 0x8492, + 5244: 0x8493, + 5245: 0x8495, + 5246: 0x849E, + 5247: 0x84A6, + 5248: 0x84A8, + 5249: 0x84A9, + 5250: 0x84AA, + 5251: 0x84AF, + 5252: 0x84B1, + 5253: 0x84B4, + 5254: 0x84BA, + 5255: 0x84BD, + 5256: 0x84BE, + 5257: 0x84C0, + 5258: 0x84C2, + 5259: 0x84C7, + 5260: 0x84C8, + 5261: 0x84CC, + 5262: 0x84CF, + 5263: 0x84D3, + 5264: 0x84DC, + 5265: 0x84E7, + 5266: 0x84EA, + 5267: 0x84EF, + 5268: 0x84F0, + 5269: 0x84F1, + 5270: 0x84F2, + 5271: 0x84F7, + 5272: 0x8532, + 5273: 0x84FA, + 5274: 0x84FB, + 5275: 0x84FD, + 5276: 0x8502, + 5277: 0x8503, + 5278: 0x8507, + 5279: 0x850C, + 5280: 0x850E, + 5281: 0x8510, + 5282: 0x851C, + 5283: 0x851E, + 5284: 0x8522, + 5285: 0x8523, + 5286: 0x8524, + 5287: 0x8525, + 5288: 0x8527, + 5289: 0x852A, + 5290: 0x852B, + 5291: 0x852F, + 5292: 0x8533, + 5293: 0x8534, + 5294: 0x8536, + 5295: 0x853F, + 5296: 0x8546, + 5297: 0x854F, + 5298: 0x8550, + 5299: 0x8551, + 5300: 0x8552, + 5301: 0x8553, + 5302: 0x8556, + 5303: 0x8559, + 5304: 0x855C, + 5305: 0x855D, + 5306: 0x855E, + 5307: 0x855F, + 5308: 0x8560, + 5309: 0x8561, + 5310: 0x8562, + 5311: 0x8564, + 5312: 0x856B, + 5313: 0x856F, + 5314: 0x8579, + 5315: 0x857A, + 5316: 0x857B, + 5317: 0x857D, + 5318: 0x857F, + 5319: 0x8581, + 5320: 0x8585, + 5321: 0x8586, + 5322: 0x8589, + 5323: 0x858B, + 5324: 0x858C, + 5325: 0x858F, + 5326: 0x8593, + 5327: 0x8598, + 5328: 0x859D, + 5329: 0x859F, + 5330: 0x85A0, + 5331: 0x85A2, + 5332: 0x85A5, + 5333: 0x85A7, + 5334: 0x85B4, + 5335: 0x85B6, + 5336: 0x85B7, + 5337: 0x85B8, + 5338: 0x85BC, + 5339: 0x85BD, + 5340: 0x85BE, + 5341: 0x85BF, + 5342: 0x85C2, + 5343: 0x85C7, + 5344: 0x85CA, + 5345: 0x85CB, + 5346: 0x85CE, + 5347: 0x85AD, + 5348: 0x85D8, + 5349: 0x85DA, + 5350: 0x85DF, + 5351: 0x85E0, + 5352: 0x85E6, + 5353: 0x85E8, + 5354: 0x85ED, + 5355: 0x85F3, + 5356: 0x85F6, + 5357: 0x85FC, + 5358: 0x85FF, + 5359: 0x8600, + 5360: 0x8604, + 5361: 0x8605, + 5362: 0x860D, + 5363: 0x860E, + 5364: 0x8610, + 5365: 0x8611, + 5366: 0x8612, + 5367: 0x8618, + 5368: 0x8619, + 5369: 0x861B, + 5370: 0x861E, + 5371: 0x8621, + 5372: 0x8627, + 5373: 0x8629, + 5374: 0x8636, + 5375: 0x8638, + 5376: 0x863A, + 5377: 0x863C, + 5378: 0x863D, + 5379: 0x8640, + 5380: 0x8642, + 5381: 0x8646, + 5382: 0x8652, + 5383: 0x8653, + 5384: 0x8656, + 5385: 0x8657, + 5386: 0x8658, + 5387: 0x8659, + 5388: 0x865D, + 5389: 0x8660, + 5390: 0x8661, + 5391: 0x8662, + 5392: 0x8663, + 5393: 0x8664, + 5394: 0x8669, + 5395: 0x866C, + 5396: 0x866F, + 5397: 0x8675, + 5398: 0x8676, + 5399: 0x8677, + 5400: 0x867A, + 5401: 0x868D, + 5402: 0x8691, + 5403: 0x8696, + 5404: 0x8698, + 5405: 0x869A, + 5406: 0x869C, + 5407: 0x86A1, + 5408: 0x86A6, + 5409: 0x86A7, + 5410: 0x86A8, + 5411: 0x86AD, + 5412: 0x86B1, + 5413: 0x86B3, + 5414: 0x86B4, + 5415: 0x86B5, + 5416: 0x86B7, + 5417: 0x86B8, + 5418: 0x86B9, + 5419: 0x86BF, + 5420: 0x86C0, + 5421: 0x86C1, + 5422: 0x86C3, + 5423: 0x86C5, + 5424: 0x86D1, + 5425: 0x86D2, + 5426: 0x86D5, + 5427: 0x86D7, + 5428: 0x86DA, + 5429: 0x86DC, + 5430: 0x86E0, + 5431: 0x86E3, + 5432: 0x86E5, + 5433: 0x86E7, + 5434: 0x8688, + 5435: 0x86FA, + 5436: 0x86FC, + 5437: 0x86FD, + 5438: 0x8704, + 5439: 0x8705, + 5440: 0x8707, + 5441: 0x870B, + 5442: 0x870E, + 5443: 0x870F, + 5444: 0x8710, + 5445: 0x8713, + 5446: 0x8714, + 5447: 0x8719, + 5448: 0x871E, + 5449: 0x871F, + 5450: 0x8721, + 5451: 0x8723, + 5452: 0x8728, + 5453: 0x872E, + 5454: 0x872F, + 5455: 0x8731, + 5456: 0x8732, + 5457: 0x8739, + 5458: 0x873A, + 5459: 0x873C, + 5460: 0x873D, + 5461: 0x873E, + 5462: 0x8740, + 5463: 0x8743, + 5464: 0x8745, + 5465: 0x874D, + 5466: 0x8758, + 5467: 0x875D, + 5468: 0x8761, + 5469: 0x8764, + 5470: 0x8765, + 5471: 0x876F, + 5472: 0x8771, + 5473: 0x8772, + 5474: 0x877B, + 5475: 0x8783, + 5476: 0x8784, + 5477: 0x8785, + 5478: 0x8786, + 5479: 0x8787, + 5480: 0x8788, + 5481: 0x8789, + 5482: 0x878B, + 5483: 0x878C, + 5484: 0x8790, + 5485: 0x8793, + 5486: 0x8795, + 5487: 0x8797, + 5488: 0x8798, + 5489: 0x8799, + 5490: 0x879E, + 5491: 0x87A0, + 5492: 0x87A3, + 5493: 0x87A7, + 5494: 0x87AC, + 5495: 0x87AD, + 5496: 0x87AE, + 5497: 0x87B1, + 5498: 0x87B5, + 5499: 0x87BE, + 5500: 0x87BF, + 5501: 0x87C1, + 5502: 0x87C8, + 5503: 0x87C9, + 5504: 0x87CA, + 5505: 0x87CE, + 5506: 0x87D5, + 5507: 0x87D6, + 5508: 0x87D9, + 5509: 0x87DA, + 5510: 0x87DC, + 5511: 0x87DF, + 5512: 0x87E2, + 5513: 0x87E3, + 5514: 0x87E4, + 5515: 0x87EA, + 5516: 0x87EB, + 5517: 0x87ED, + 5518: 0x87F1, + 5519: 0x87F3, + 5520: 0x87F8, + 5521: 0x87FA, + 5522: 0x87FF, + 5523: 0x8801, + 5524: 0x8803, + 5525: 0x8806, + 5526: 0x8809, + 5527: 0x880A, + 5528: 0x880B, + 5529: 0x8810, + 5530: 0x8819, + 5531: 0x8812, + 5532: 0x8813, + 5533: 0x8814, + 5534: 0x8818, + 5535: 0x881A, + 5536: 0x881B, + 5537: 0x881C, + 5538: 0x881E, + 5539: 0x881F, + 5540: 0x8828, + 5541: 0x882D, + 5542: 0x882E, + 5543: 0x8830, + 5544: 0x8832, + 5545: 0x8835, + 5546: 0x883A, + 5547: 0x883C, + 5548: 0x8841, + 5549: 0x8843, + 5550: 0x8845, + 5551: 0x8848, + 5552: 0x8849, + 5553: 0x884A, + 5554: 0x884B, + 5555: 0x884E, + 5556: 0x8851, + 5557: 0x8855, + 5558: 0x8856, + 5559: 0x8858, + 5560: 0x885A, + 5561: 0x885C, + 5562: 0x885F, + 5563: 0x8860, + 5564: 0x8864, + 5565: 0x8869, + 5566: 0x8871, + 5567: 0x8879, + 5568: 0x887B, + 5569: 0x8880, + 5570: 0x8898, + 5571: 0x889A, + 5572: 0x889B, + 5573: 0x889C, + 5574: 0x889F, + 5575: 0x88A0, + 5576: 0x88A8, + 5577: 0x88AA, + 5578: 0x88BA, + 5579: 0x88BD, + 5580: 0x88BE, + 5581: 0x88C0, + 5582: 0x88CA, + 5583: 0x88CB, + 5584: 0x88CC, + 5585: 0x88CD, + 5586: 0x88CE, + 5587: 0x88D1, + 5588: 0x88D2, + 5589: 0x88D3, + 5590: 0x88DB, + 5591: 0x88DE, + 5592: 0x88E7, + 5593: 0x88EF, + 5594: 0x88F0, + 5595: 0x88F1, + 5596: 0x88F5, + 5597: 0x88F7, + 5598: 0x8901, + 5599: 0x8906, + 5600: 0x890D, + 5601: 0x890E, + 5602: 0x890F, + 5603: 0x8915, + 5604: 0x8916, + 5605: 0x8918, + 5606: 0x8919, + 5607: 0x891A, + 5608: 0x891C, + 5609: 0x8920, + 5610: 0x8926, + 5611: 0x8927, + 5612: 0x8928, + 5613: 0x8930, + 5614: 0x8931, + 5615: 0x8932, + 5616: 0x8935, + 5617: 0x8939, + 5618: 0x893A, + 5619: 0x893E, + 5620: 0x8940, + 5621: 0x8942, + 5622: 0x8945, + 5623: 0x8946, + 5624: 0x8949, + 5625: 0x894F, + 5626: 0x8952, + 5627: 0x8957, + 5628: 0x895A, + 5629: 0x895B, + 5630: 0x895C, + 5631: 0x8961, + 5632: 0x8962, + 5633: 0x8963, + 5634: 0x896B, + 5635: 0x896E, + 5636: 0x8970, + 5637: 0x8973, + 5638: 0x8975, + 5639: 0x897A, + 5640: 0x897B, + 5641: 0x897C, + 5642: 0x897D, + 5643: 0x8989, + 5644: 0x898D, + 5645: 0x8990, + 5646: 0x8994, + 5647: 0x8995, + 5648: 0x899B, + 5649: 0x899C, + 5650: 0x899F, + 5651: 0x89A0, + 5652: 0x89A5, + 5653: 0x89B0, + 5654: 0x89B4, + 5655: 0x89B5, + 5656: 0x89B6, + 5657: 0x89B7, + 5658: 0x89BC, + 5659: 0x89D4, + 5660: 0x89D5, + 5661: 0x89D6, + 5662: 0x89D7, + 5663: 0x89D8, + 5664: 0x89E5, + 5665: 0x89E9, + 5666: 0x89EB, + 5667: 0x89ED, + 5668: 0x89F1, + 5669: 0x89F3, + 5670: 0x89F6, + 5671: 0x89F9, + 5672: 0x89FD, + 5673: 0x89FF, + 5674: 0x8A04, + 5675: 0x8A05, + 5676: 0x8A07, + 5677: 0x8A0F, + 5678: 0x8A11, + 5679: 0x8A12, + 5680: 0x8A14, + 5681: 0x8A15, + 5682: 0x8A1E, + 5683: 0x8A20, + 5684: 0x8A22, + 5685: 0x8A24, + 5686: 0x8A26, + 5687: 0x8A2B, + 5688: 0x8A2C, + 5689: 0x8A2F, + 5690: 0x8A35, + 5691: 0x8A37, + 5692: 0x8A3D, + 5693: 0x8A3E, + 5694: 0x8A40, + 5695: 0x8A43, + 5696: 0x8A45, + 5697: 0x8A47, + 5698: 0x8A49, + 5699: 0x8A4D, + 5700: 0x8A4E, + 5701: 0x8A53, + 5702: 0x8A56, + 5703: 0x8A57, + 5704: 0x8A58, + 5705: 0x8A5C, + 5706: 0x8A5D, + 5707: 0x8A61, + 5708: 0x8A65, + 5709: 0x8A67, + 5710: 0x8A75, + 5711: 0x8A76, + 5712: 0x8A77, + 5713: 0x8A79, + 5714: 0x8A7A, + 5715: 0x8A7B, + 5716: 0x8A7E, + 5717: 0x8A7F, + 5718: 0x8A80, + 5719: 0x8A83, + 5720: 0x8A86, + 5721: 0x8A8B, + 5722: 0x8A8F, + 5723: 0x8A90, + 5724: 0x8A92, + 5725: 0x8A96, + 5726: 0x8A97, + 5727: 0x8A99, + 5728: 0x8A9F, + 5729: 0x8AA7, + 5730: 0x8AA9, + 5731: 0x8AAE, + 5732: 0x8AAF, + 5733: 0x8AB3, + 5734: 0x8AB6, + 5735: 0x8AB7, + 5736: 0x8ABB, + 5737: 0x8ABE, + 5738: 0x8AC3, + 5739: 0x8AC6, + 5740: 0x8AC8, + 5741: 0x8AC9, + 5742: 0x8ACA, + 5743: 0x8AD1, + 5744: 0x8AD3, + 5745: 0x8AD4, + 5746: 0x8AD5, + 5747: 0x8AD7, + 5748: 0x8ADD, + 5749: 0x8ADF, + 5750: 0x8AEC, + 5751: 0x8AF0, + 5752: 0x8AF4, + 5753: 0x8AF5, + 5754: 0x8AF6, + 5755: 0x8AFC, + 5756: 0x8AFF, + 5757: 0x8B05, + 5758: 0x8B06, + 5759: 0x8B0B, + 5760: 0x8B11, + 5761: 0x8B1C, + 5762: 0x8B1E, + 5763: 0x8B1F, + 5764: 0x8B0A, + 5765: 0x8B2D, + 5766: 0x8B30, + 5767: 0x8B37, + 5768: 0x8B3C, + 5769: 0x8B42, + 5770: 0x8B43, + 5771: 0x8B44, + 5772: 0x8B45, + 5773: 0x8B46, + 5774: 0x8B48, + 5775: 0x8B52, + 5776: 0x8B53, + 5777: 0x8B54, + 5778: 0x8B59, + 5779: 0x8B4D, + 5780: 0x8B5E, + 5781: 0x8B63, + 5782: 0x8B6D, + 5783: 0x8B76, + 5784: 0x8B78, + 5785: 0x8B79, + 5786: 0x8B7C, + 5787: 0x8B7E, + 5788: 0x8B81, + 5789: 0x8B84, + 5790: 0x8B85, + 5791: 0x8B8B, + 5792: 0x8B8D, + 5793: 0x8B8F, + 5794: 0x8B94, + 5795: 0x8B95, + 5796: 0x8B9C, + 5797: 0x8B9E, + 5798: 0x8B9F, + 5799: 0x8C38, + 5800: 0x8C39, + 5801: 0x8C3D, + 5802: 0x8C3E, + 5803: 0x8C45, + 5804: 0x8C47, + 5805: 0x8C49, + 5806: 0x8C4B, + 5807: 0x8C4F, + 5808: 0x8C51, + 5809: 0x8C53, + 5810: 0x8C54, + 5811: 0x8C57, + 5812: 0x8C58, + 5813: 0x8C5B, + 5814: 0x8C5D, + 5815: 0x8C59, + 5816: 0x8C63, + 5817: 0x8C64, + 5818: 0x8C66, + 5819: 0x8C68, + 5820: 0x8C69, + 5821: 0x8C6D, + 5822: 0x8C73, + 5823: 0x8C75, + 5824: 0x8C76, + 5825: 0x8C7B, + 5826: 0x8C7E, + 5827: 0x8C86, + 5828: 0x8C87, + 5829: 0x8C8B, + 5830: 0x8C90, + 5831: 0x8C92, + 5832: 0x8C93, + 5833: 0x8C99, + 5834: 0x8C9B, + 5835: 0x8C9C, + 5836: 0x8CA4, + 5837: 0x8CB9, + 5838: 0x8CBA, + 5839: 0x8CC5, + 5840: 0x8CC6, + 5841: 0x8CC9, + 5842: 0x8CCB, + 5843: 0x8CCF, + 5844: 0x8CD6, + 5845: 0x8CD5, + 5846: 0x8CD9, + 5847: 0x8CDD, + 5848: 0x8CE1, + 5849: 0x8CE8, + 5850: 0x8CEC, + 5851: 0x8CEF, + 5852: 0x8CF0, + 5853: 0x8CF2, + 5854: 0x8CF5, + 5855: 0x8CF7, + 5856: 0x8CF8, + 5857: 0x8CFE, + 5858: 0x8CFF, + 5859: 0x8D01, + 5860: 0x8D03, + 5861: 0x8D09, + 5862: 0x8D12, + 5863: 0x8D17, + 5864: 0x8D1B, + 5865: 0x8D65, + 5866: 0x8D69, + 5867: 0x8D6C, + 5868: 0x8D6E, + 5869: 0x8D7F, + 5870: 0x8D82, + 5871: 0x8D84, + 5872: 0x8D88, + 5873: 0x8D8D, + 5874: 0x8D90, + 5875: 0x8D91, + 5876: 0x8D95, + 5877: 0x8D9E, + 5878: 0x8D9F, + 5879: 0x8DA0, + 5880: 0x8DA6, + 5881: 0x8DAB, + 5882: 0x8DAC, + 5883: 0x8DAF, + 5884: 0x8DB2, + 5885: 0x8DB5, + 5886: 0x8DB7, + 5887: 0x8DB9, + 5888: 0x8DBB, + 5889: 0x8DC0, + 5890: 0x8DC5, + 5891: 0x8DC6, + 5892: 0x8DC7, + 5893: 0x8DC8, + 5894: 0x8DCA, + 5895: 0x8DCE, + 5896: 0x8DD1, + 5897: 0x8DD4, + 5898: 0x8DD5, + 5899: 0x8DD7, + 5900: 0x8DD9, + 5901: 0x8DE4, + 5902: 0x8DE5, + 5903: 0x8DE7, + 5904: 0x8DEC, + 5905: 0x8DF0, + 5906: 0x8DBC, + 5907: 0x8DF1, + 5908: 0x8DF2, + 5909: 0x8DF4, + 5910: 0x8DFD, + 5911: 0x8E01, + 5912: 0x8E04, + 5913: 0x8E05, + 5914: 0x8E06, + 5915: 0x8E0B, + 5916: 0x8E11, + 5917: 0x8E14, + 5918: 0x8E16, + 5919: 0x8E20, + 5920: 0x8E21, + 5921: 0x8E22, + 5922: 0x8E23, + 5923: 0x8E26, + 5924: 0x8E27, + 5925: 0x8E31, + 5926: 0x8E33, + 5927: 0x8E36, + 5928: 0x8E37, + 5929: 0x8E38, + 5930: 0x8E39, + 5931: 0x8E3D, + 5932: 0x8E40, + 5933: 0x8E41, + 5934: 0x8E4B, + 5935: 0x8E4D, + 5936: 0x8E4E, + 5937: 0x8E4F, + 5938: 0x8E54, + 5939: 0x8E5B, + 5940: 0x8E5C, + 5941: 0x8E5D, + 5942: 0x8E5E, + 5943: 0x8E61, + 5944: 0x8E62, + 5945: 0x8E69, + 5946: 0x8E6C, + 5947: 0x8E6D, + 5948: 0x8E6F, + 5949: 0x8E70, + 5950: 0x8E71, + 5951: 0x8E79, + 5952: 0x8E7A, + 5953: 0x8E7B, + 5954: 0x8E82, + 5955: 0x8E83, + 5956: 0x8E89, + 5957: 0x8E90, + 5958: 0x8E92, + 5959: 0x8E95, + 5960: 0x8E9A, + 5961: 0x8E9B, + 5962: 0x8E9D, + 5963: 0x8E9E, + 5964: 0x8EA2, + 5965: 0x8EA7, + 5966: 0x8EA9, + 5967: 0x8EAD, + 5968: 0x8EAE, + 5969: 0x8EB3, + 5970: 0x8EB5, + 5971: 0x8EBA, + 5972: 0x8EBB, + 5973: 0x8EC0, + 5974: 0x8EC1, + 5975: 0x8EC3, + 5976: 0x8EC4, + 5977: 0x8EC7, + 5978: 0x8ECF, + 5979: 0x8ED1, + 5980: 0x8ED4, + 5981: 0x8EDC, + 5982: 0x8EE8, + 5983: 0x8EEE, + 5984: 0x8EF0, + 5985: 0x8EF1, + 5986: 0x8EF7, + 5987: 0x8EF9, + 5988: 0x8EFA, + 5989: 0x8EED, + 5990: 0x8F00, + 5991: 0x8F02, + 5992: 0x8F07, + 5993: 0x8F08, + 5994: 0x8F0F, + 5995: 0x8F10, + 5996: 0x8F16, + 5997: 0x8F17, + 5998: 0x8F18, + 5999: 0x8F1E, + 6000: 0x8F20, + 6001: 0x8F21, + 6002: 0x8F23, + 6003: 0x8F25, + 6004: 0x8F27, + 6005: 0x8F28, + 6006: 0x8F2C, + 6007: 0x8F2D, + 6008: 0x8F2E, + 6009: 0x8F34, + 6010: 0x8F35, + 6011: 0x8F36, + 6012: 0x8F37, + 6013: 0x8F3A, + 6014: 0x8F40, + 6015: 0x8F41, + 6016: 0x8F43, + 6017: 0x8F47, + 6018: 0x8F4F, + 6019: 0x8F51, + 6020: 0x8F52, + 6021: 0x8F53, + 6022: 0x8F54, + 6023: 0x8F55, + 6024: 0x8F58, + 6025: 0x8F5D, + 6026: 0x8F5E, + 6027: 0x8F65, + 6028: 0x8F9D, + 6029: 0x8FA0, + 6030: 0x8FA1, + 6031: 0x8FA4, + 6032: 0x8FA5, + 6033: 0x8FA6, + 6034: 0x8FB5, + 6035: 0x8FB6, + 6036: 0x8FB8, + 6037: 0x8FBE, + 6038: 0x8FC0, + 6039: 0x8FC1, + 6040: 0x8FC6, + 6041: 0x8FCA, + 6042: 0x8FCB, + 6043: 0x8FCD, + 6044: 0x8FD0, + 6045: 0x8FD2, + 6046: 0x8FD3, + 6047: 0x8FD5, + 6048: 0x8FE0, + 6049: 0x8FE3, + 6050: 0x8FE4, + 6051: 0x8FE8, + 6052: 0x8FEE, + 6053: 0x8FF1, + 6054: 0x8FF5, + 6055: 0x8FF6, + 6056: 0x8FFB, + 6057: 0x8FFE, + 6058: 0x9002, + 6059: 0x9004, + 6060: 0x9008, + 6061: 0x900C, + 6062: 0x9018, + 6063: 0x901B, + 6064: 0x9028, + 6065: 0x9029, + 6066: 0x902F, + 6067: 0x902A, + 6068: 0x902C, + 6069: 0x902D, + 6070: 0x9033, + 6071: 0x9034, + 6072: 0x9037, + 6073: 0x903F, + 6074: 0x9043, + 6075: 0x9044, + 6076: 0x904C, + 6077: 0x905B, + 6078: 0x905D, + 6079: 0x9062, + 6080: 0x9066, + 6081: 0x9067, + 6082: 0x906C, + 6083: 0x9070, + 6084: 0x9074, + 6085: 0x9079, + 6086: 0x9085, + 6087: 0x9088, + 6088: 0x908B, + 6089: 0x908C, + 6090: 0x908E, + 6091: 0x9090, + 6092: 0x9095, + 6093: 0x9097, + 6094: 0x9098, + 6095: 0x9099, + 6096: 0x909B, + 6097: 0x90A0, + 6098: 0x90A1, + 6099: 0x90A2, + 6100: 0x90A5, + 6101: 0x90B0, + 6102: 0x90B2, + 6103: 0x90B3, + 6104: 0x90B4, + 6105: 0x90B6, + 6106: 0x90BD, + 6107: 0x90CC, + 6108: 0x90BE, + 6109: 0x90C3, + 6110: 0x90C4, + 6111: 0x90C5, + 6112: 0x90C7, + 6113: 0x90C8, + 6114: 0x90D5, + 6115: 0x90D7, + 6116: 0x90D8, + 6117: 0x90D9, + 6118: 0x90DC, + 6119: 0x90DD, + 6120: 0x90DF, + 6121: 0x90E5, + 6122: 0x90D2, + 6123: 0x90F6, + 6124: 0x90EB, + 6125: 0x90EF, + 6126: 0x90F0, + 6127: 0x90F4, + 6128: 0x90FE, + 6129: 0x90FF, + 6130: 0x9100, + 6131: 0x9104, + 6132: 0x9105, + 6133: 0x9106, + 6134: 0x9108, + 6135: 0x910D, + 6136: 0x9110, + 6137: 0x9114, + 6138: 0x9116, + 6139: 0x9117, + 6140: 0x9118, + 6141: 0x911A, + 6142: 0x911C, + 6143: 0x911E, + 6144: 0x9120, + 6145: 0x9125, + 6146: 0x9122, + 6147: 0x9123, + 6148: 0x9127, + 6149: 0x9129, + 6150: 0x912E, + 6151: 0x912F, + 6152: 0x9131, + 6153: 0x9134, + 6154: 0x9136, + 6155: 0x9137, + 6156: 0x9139, + 6157: 0x913A, + 6158: 0x913C, + 6159: 0x913D, + 6160: 0x9143, + 6161: 0x9147, + 6162: 0x9148, + 6163: 0x914F, + 6164: 0x9153, + 6165: 0x9157, + 6166: 0x9159, + 6167: 0x915A, + 6168: 0x915B, + 6169: 0x9161, + 6170: 0x9164, + 6171: 0x9167, + 6172: 0x916D, + 6173: 0x9174, + 6174: 0x9179, + 6175: 0x917A, + 6176: 0x917B, + 6177: 0x9181, + 6178: 0x9183, + 6179: 0x9185, + 6180: 0x9186, + 6181: 0x918A, + 6182: 0x918E, + 6183: 0x9191, + 6184: 0x9193, + 6185: 0x9194, + 6186: 0x9195, + 6187: 0x9198, + 6188: 0x919E, + 6189: 0x91A1, + 6190: 0x91A6, + 6191: 0x91A8, + 6192: 0x91AC, + 6193: 0x91AD, + 6194: 0x91AE, + 6195: 0x91B0, + 6196: 0x91B1, + 6197: 0x91B2, + 6198: 0x91B3, + 6199: 0x91B6, + 6200: 0x91BB, + 6201: 0x91BC, + 6202: 0x91BD, + 6203: 0x91BF, + 6204: 0x91C2, + 6205: 0x91C3, + 6206: 0x91C5, + 6207: 0x91D3, + 6208: 0x91D4, + 6209: 0x91D7, + 6210: 0x91D9, + 6211: 0x91DA, + 6212: 0x91DE, + 6213: 0x91E4, + 6214: 0x91E5, + 6215: 0x91E9, + 6216: 0x91EA, + 6217: 0x91EC, + 6218: 0x91ED, + 6219: 0x91EE, + 6220: 0x91EF, + 6221: 0x91F0, + 6222: 0x91F1, + 6223: 0x91F7, + 6224: 0x91F9, + 6225: 0x91FB, + 6226: 0x91FD, + 6227: 0x9200, + 6228: 0x9201, + 6229: 0x9204, + 6230: 0x9205, + 6231: 0x9206, + 6232: 0x9207, + 6233: 0x9209, + 6234: 0x920A, + 6235: 0x920C, + 6236: 0x9210, + 6237: 0x9212, + 6238: 0x9213, + 6239: 0x9216, + 6240: 0x9218, + 6241: 0x921C, + 6242: 0x921D, + 6243: 0x9223, + 6244: 0x9224, + 6245: 0x9225, + 6246: 0x9226, + 6247: 0x9228, + 6248: 0x922E, + 6249: 0x922F, + 6250: 0x9230, + 6251: 0x9233, + 6252: 0x9235, + 6253: 0x9236, + 6254: 0x9238, + 6255: 0x9239, + 6256: 0x923A, + 6257: 0x923C, + 6258: 0x923E, + 6259: 0x9240, + 6260: 0x9242, + 6261: 0x9243, + 6262: 0x9246, + 6263: 0x9247, + 6264: 0x924A, + 6265: 0x924D, + 6266: 0x924E, + 6267: 0x924F, + 6268: 0x9251, + 6269: 0x9258, + 6270: 0x9259, + 6271: 0x925C, + 6272: 0x925D, + 6273: 0x9260, + 6274: 0x9261, + 6275: 0x9265, + 6276: 0x9267, + 6277: 0x9268, + 6278: 0x9269, + 6279: 0x926E, + 6280: 0x926F, + 6281: 0x9270, + 6282: 0x9275, + 6283: 0x9276, + 6284: 0x9277, + 6285: 0x9278, + 6286: 0x9279, + 6287: 0x927B, + 6288: 0x927C, + 6289: 0x927D, + 6290: 0x927F, + 6291: 0x9288, + 6292: 0x9289, + 6293: 0x928A, + 6294: 0x928D, + 6295: 0x928E, + 6296: 0x9292, + 6297: 0x9297, + 6298: 0x9299, + 6299: 0x929F, + 6300: 0x92A0, + 6301: 0x92A4, + 6302: 0x92A5, + 6303: 0x92A7, + 6304: 0x92A8, + 6305: 0x92AB, + 6306: 0x92AF, + 6307: 0x92B2, + 6308: 0x92B6, + 6309: 0x92B8, + 6310: 0x92BA, + 6311: 0x92BB, + 6312: 0x92BC, + 6313: 0x92BD, + 6314: 0x92BF, + 6315: 0x92C0, + 6316: 0x92C1, + 6317: 0x92C2, + 6318: 0x92C3, + 6319: 0x92C5, + 6320: 0x92C6, + 6321: 0x92C7, + 6322: 0x92C8, + 6323: 0x92CB, + 6324: 0x92CC, + 6325: 0x92CD, + 6326: 0x92CE, + 6327: 0x92D0, + 6328: 0x92D3, + 6329: 0x92D5, + 6330: 0x92D7, + 6331: 0x92D8, + 6332: 0x92D9, + 6333: 0x92DC, + 6334: 0x92DD, + 6335: 0x92DF, + 6336: 0x92E0, + 6337: 0x92E1, + 6338: 0x92E3, + 6339: 0x92E5, + 6340: 0x92E7, + 6341: 0x92E8, + 6342: 0x92EC, + 6343: 0x92EE, + 6344: 0x92F0, + 6345: 0x92F9, + 6346: 0x92FB, + 6347: 0x92FF, + 6348: 0x9300, + 6349: 0x9302, + 6350: 0x9308, + 6351: 0x930D, + 6352: 0x9311, + 6353: 0x9314, + 6354: 0x9315, + 6355: 0x931C, + 6356: 0x931D, + 6357: 0x931E, + 6358: 0x931F, + 6359: 0x9321, + 6360: 0x9324, + 6361: 0x9325, + 6362: 0x9327, + 6363: 0x9329, + 6364: 0x932A, + 6365: 0x9333, + 6366: 0x9334, + 6367: 0x9336, + 6368: 0x9337, + 6369: 0x9347, + 6370: 0x9348, + 6371: 0x9349, + 6372: 0x9350, + 6373: 0x9351, + 6374: 0x9352, + 6375: 0x9355, + 6376: 0x9357, + 6377: 0x9358, + 6378: 0x935A, + 6379: 0x935E, + 6380: 0x9364, + 6381: 0x9365, + 6382: 0x9367, + 6383: 0x9369, + 6384: 0x936A, + 6385: 0x936D, + 6386: 0x936F, + 6387: 0x9370, + 6388: 0x9371, + 6389: 0x9373, + 6390: 0x9374, + 6391: 0x9376, + 6392: 0x937A, + 6393: 0x937D, + 6394: 0x937F, + 6395: 0x9380, + 6396: 0x9381, + 6397: 0x9382, + 6398: 0x9388, + 6399: 0x938A, + 6400: 0x938B, + 6401: 0x938D, + 6402: 0x938F, + 6403: 0x9392, + 6404: 0x9395, + 6405: 0x9398, + 6406: 0x939B, + 6407: 0x939E, + 6408: 0x93A1, + 6409: 0x93A3, + 6410: 0x93A4, + 6411: 0x93A6, + 6412: 0x93A8, + 6413: 0x93AB, + 6414: 0x93B4, + 6415: 0x93B5, + 6416: 0x93B6, + 6417: 0x93BA, + 6418: 0x93A9, + 6419: 0x93C1, + 6420: 0x93C4, + 6421: 0x93C5, + 6422: 0x93C6, + 6423: 0x93C7, + 6424: 0x93C9, + 6425: 0x93CA, + 6426: 0x93CB, + 6427: 0x93CC, + 6428: 0x93CD, + 6429: 0x93D3, + 6430: 0x93D9, + 6431: 0x93DC, + 6432: 0x93DE, + 6433: 0x93DF, + 6434: 0x93E2, + 6435: 0x93E6, + 6436: 0x93E7, + 6437: 0x93F9, + 6438: 0x93F7, + 6439: 0x93F8, + 6440: 0x93FA, + 6441: 0x93FB, + 6442: 0x93FD, + 6443: 0x9401, + 6444: 0x9402, + 6445: 0x9404, + 6446: 0x9408, + 6447: 0x9409, + 6448: 0x940D, + 6449: 0x940E, + 6450: 0x940F, + 6451: 0x9415, + 6452: 0x9416, + 6453: 0x9417, + 6454: 0x941F, + 6455: 0x942E, + 6456: 0x942F, + 6457: 0x9431, + 6458: 0x9432, + 6459: 0x9433, + 6460: 0x9434, + 6461: 0x943B, + 6462: 0x943F, + 6463: 0x943D, + 6464: 0x9443, + 6465: 0x9445, + 6466: 0x9448, + 6467: 0x944A, + 6468: 0x944C, + 6469: 0x9455, + 6470: 0x9459, + 6471: 0x945C, + 6472: 0x945F, + 6473: 0x9461, + 6474: 0x9463, + 6475: 0x9468, + 6476: 0x946B, + 6477: 0x946D, + 6478: 0x946E, + 6479: 0x946F, + 6480: 0x9471, + 6481: 0x9472, + 6482: 0x9484, + 6483: 0x9483, + 6484: 0x9578, + 6485: 0x9579, + 6486: 0x957E, + 6487: 0x9584, + 6488: 0x9588, + 6489: 0x958C, + 6490: 0x958D, + 6491: 0x958E, + 6492: 0x959D, + 6493: 0x959E, + 6494: 0x959F, + 6495: 0x95A1, + 6496: 0x95A6, + 6497: 0x95A9, + 6498: 0x95AB, + 6499: 0x95AC, + 6500: 0x95B4, + 6501: 0x95B6, + 6502: 0x95BA, + 6503: 0x95BD, + 6504: 0x95BF, + 6505: 0x95C6, + 6506: 0x95C8, + 6507: 0x95C9, + 6508: 0x95CB, + 6509: 0x95D0, + 6510: 0x95D1, + 6511: 0x95D2, + 6512: 0x95D3, + 6513: 0x95D9, + 6514: 0x95DA, + 6515: 0x95DD, + 6516: 0x95DE, + 6517: 0x95DF, + 6518: 0x95E0, + 6519: 0x95E4, + 6520: 0x95E6, + 6521: 0x961D, + 6522: 0x961E, + 6523: 0x9622, + 6524: 0x9624, + 6525: 0x9625, + 6526: 0x9626, + 6527: 0x962C, + 6528: 0x9631, + 6529: 0x9633, + 6530: 0x9637, + 6531: 0x9638, + 6532: 0x9639, + 6533: 0x963A, + 6534: 0x963C, + 6535: 0x963D, + 6536: 0x9641, + 6537: 0x9652, + 6538: 0x9654, + 6539: 0x9656, + 6540: 0x9657, + 6541: 0x9658, + 6542: 0x9661, + 6543: 0x966E, + 6544: 0x9674, + 6545: 0x967B, + 6546: 0x967C, + 6547: 0x967E, + 6548: 0x967F, + 6549: 0x9681, + 6550: 0x9682, + 6551: 0x9683, + 6552: 0x9684, + 6553: 0x9689, + 6554: 0x9691, + 6555: 0x9696, + 6556: 0x969A, + 6557: 0x969D, + 6558: 0x969F, + 6559: 0x96A4, + 6560: 0x96A5, + 6561: 0x96A6, + 6562: 0x96A9, + 6563: 0x96AE, + 6564: 0x96AF, + 6565: 0x96B3, + 6566: 0x96BA, + 6567: 0x96CA, + 6568: 0x96D2, + 6569: 0x5DB2, + 6570: 0x96D8, + 6571: 0x96DA, + 6572: 0x96DD, + 6573: 0x96DE, + 6574: 0x96DF, + 6575: 0x96E9, + 6576: 0x96EF, + 6577: 0x96F1, + 6578: 0x96FA, + 6579: 0x9702, + 6580: 0x9703, + 6581: 0x9705, + 6582: 0x9709, + 6583: 0x971A, + 6584: 0x971B, + 6585: 0x971D, + 6586: 0x9721, + 6587: 0x9722, + 6588: 0x9723, + 6589: 0x9728, + 6590: 0x9731, + 6591: 0x9733, + 6592: 0x9741, + 6593: 0x9743, + 6594: 0x974A, + 6595: 0x974E, + 6596: 0x974F, + 6597: 0x9755, + 6598: 0x9757, + 6599: 0x9758, + 6600: 0x975A, + 6601: 0x975B, + 6602: 0x9763, + 6603: 0x9767, + 6604: 0x976A, + 6605: 0x976E, + 6606: 0x9773, + 6607: 0x9776, + 6608: 0x9777, + 6609: 0x9778, + 6610: 0x977B, + 6611: 0x977D, + 6612: 0x977F, + 6613: 0x9780, + 6614: 0x9789, + 6615: 0x9795, + 6616: 0x9796, + 6617: 0x9797, + 6618: 0x9799, + 6619: 0x979A, + 6620: 0x979E, + 6621: 0x979F, + 6622: 0x97A2, + 6623: 0x97AC, + 6624: 0x97AE, + 6625: 0x97B1, + 6626: 0x97B2, + 6627: 0x97B5, + 6628: 0x97B6, + 6629: 0x97B8, + 6630: 0x97B9, + 6631: 0x97BA, + 6632: 0x97BC, + 6633: 0x97BE, + 6634: 0x97BF, + 6635: 0x97C1, + 6636: 0x97C4, + 6637: 0x97C5, + 6638: 0x97C7, + 6639: 0x97C9, + 6640: 0x97CA, + 6641: 0x97CC, + 6642: 0x97CD, + 6643: 0x97CE, + 6644: 0x97D0, + 6645: 0x97D1, + 6646: 0x97D4, + 6647: 0x97D7, + 6648: 0x97D8, + 6649: 0x97D9, + 6650: 0x97DD, + 6651: 0x97DE, + 6652: 0x97E0, + 6653: 0x97DB, + 6654: 0x97E1, + 6655: 0x97E4, + 6656: 0x97EF, + 6657: 0x97F1, + 6658: 0x97F4, + 6659: 0x97F7, + 6660: 0x97F8, + 6661: 0x97FA, + 6662: 0x9807, + 6663: 0x980A, + 6664: 0x9819, + 6665: 0x980D, + 6666: 0x980E, + 6667: 0x9814, + 6668: 0x9816, + 6669: 0x981C, + 6670: 0x981E, + 6671: 0x9820, + 6672: 0x9823, + 6673: 0x9826, + 6674: 0x982B, + 6675: 0x982E, + 6676: 0x982F, + 6677: 0x9830, + 6678: 0x9832, + 6679: 0x9833, + 6680: 0x9835, + 6681: 0x9825, + 6682: 0x983E, + 6683: 0x9844, + 6684: 0x9847, + 6685: 0x984A, + 6686: 0x9851, + 6687: 0x9852, + 6688: 0x9853, + 6689: 0x9856, + 6690: 0x9857, + 6691: 0x9859, + 6692: 0x985A, + 6693: 0x9862, + 6694: 0x9863, + 6695: 0x9865, + 6696: 0x9866, + 6697: 0x986A, + 6698: 0x986C, + 6699: 0x98AB, + 6700: 0x98AD, + 6701: 0x98AE, + 6702: 0x98B0, + 6703: 0x98B4, + 6704: 0x98B7, + 6705: 0x98B8, + 6706: 0x98BA, + 6707: 0x98BB, + 6708: 0x98BF, + 6709: 0x98C2, + 6710: 0x98C5, + 6711: 0x98C8, + 6712: 0x98CC, + 6713: 0x98E1, + 6714: 0x98E3, + 6715: 0x98E5, + 6716: 0x98E6, + 6717: 0x98E7, + 6718: 0x98EA, + 6719: 0x98F3, + 6720: 0x98F6, + 6721: 0x9902, + 6722: 0x9907, + 6723: 0x9908, + 6724: 0x9911, + 6725: 0x9915, + 6726: 0x9916, + 6727: 0x9917, + 6728: 0x991A, + 6729: 0x991B, + 6730: 0x991C, + 6731: 0x991F, + 6732: 0x9922, + 6733: 0x9926, + 6734: 0x9927, + 6735: 0x992B, + 6736: 0x9931, + 6737: 0x9932, + 6738: 0x9933, + 6739: 0x9934, + 6740: 0x9935, + 6741: 0x9939, + 6742: 0x993A, + 6743: 0x993B, + 6744: 0x993C, + 6745: 0x9940, + 6746: 0x9941, + 6747: 0x9946, + 6748: 0x9947, + 6749: 0x9948, + 6750: 0x994D, + 6751: 0x994E, + 6752: 0x9954, + 6753: 0x9958, + 6754: 0x9959, + 6755: 0x995B, + 6756: 0x995C, + 6757: 0x995E, + 6758: 0x995F, + 6759: 0x9960, + 6760: 0x999B, + 6761: 0x999D, + 6762: 0x999F, + 6763: 0x99A6, + 6764: 0x99B0, + 6765: 0x99B1, + 6766: 0x99B2, + 6767: 0x99B5, + 6768: 0x99B9, + 6769: 0x99BA, + 6770: 0x99BD, + 6771: 0x99BF, + 6772: 0x99C3, + 6773: 0x99C9, + 6774: 0x99D3, + 6775: 0x99D4, + 6776: 0x99D9, + 6777: 0x99DA, + 6778: 0x99DC, + 6779: 0x99DE, + 6780: 0x99E7, + 6781: 0x99EA, + 6782: 0x99EB, + 6783: 0x99EC, + 6784: 0x99F0, + 6785: 0x99F4, + 6786: 0x99F5, + 6787: 0x99F9, + 6788: 0x99FD, + 6789: 0x99FE, + 6790: 0x9A02, + 6791: 0x9A03, + 6792: 0x9A04, + 6793: 0x9A0B, + 6794: 0x9A0C, + 6795: 0x9A10, + 6796: 0x9A11, + 6797: 0x9A16, + 6798: 0x9A1E, + 6799: 0x9A20, + 6800: 0x9A22, + 6801: 0x9A23, + 6802: 0x9A24, + 6803: 0x9A27, + 6804: 0x9A2D, + 6805: 0x9A2E, + 6806: 0x9A33, + 6807: 0x9A35, + 6808: 0x9A36, + 6809: 0x9A38, + 6810: 0x9A47, + 6811: 0x9A41, + 6812: 0x9A44, + 6813: 0x9A4A, + 6814: 0x9A4B, + 6815: 0x9A4C, + 6816: 0x9A4E, + 6817: 0x9A51, + 6818: 0x9A54, + 6819: 0x9A56, + 6820: 0x9A5D, + 6821: 0x9AAA, + 6822: 0x9AAC, + 6823: 0x9AAE, + 6824: 0x9AAF, + 6825: 0x9AB2, + 6826: 0x9AB4, + 6827: 0x9AB5, + 6828: 0x9AB6, + 6829: 0x9AB9, + 6830: 0x9ABB, + 6831: 0x9ABE, + 6832: 0x9ABF, + 6833: 0x9AC1, + 6834: 0x9AC3, + 6835: 0x9AC6, + 6836: 0x9AC8, + 6837: 0x9ACE, + 6838: 0x9AD0, + 6839: 0x9AD2, + 6840: 0x9AD5, + 6841: 0x9AD6, + 6842: 0x9AD7, + 6843: 0x9ADB, + 6844: 0x9ADC, + 6845: 0x9AE0, + 6846: 0x9AE4, + 6847: 0x9AE5, + 6848: 0x9AE7, + 6849: 0x9AE9, + 6850: 0x9AEC, + 6851: 0x9AF2, + 6852: 0x9AF3, + 6853: 0x9AF5, + 6854: 0x9AF9, + 6855: 0x9AFA, + 6856: 0x9AFD, + 6857: 0x9AFF, + 6858: 0x9B00, + 6859: 0x9B01, + 6860: 0x9B02, + 6861: 0x9B03, + 6862: 0x9B04, + 6863: 0x9B05, + 6864: 0x9B08, + 6865: 0x9B09, + 6866: 0x9B0B, + 6867: 0x9B0C, + 6868: 0x9B0D, + 6869: 0x9B0E, + 6870: 0x9B10, + 6871: 0x9B12, + 6872: 0x9B16, + 6873: 0x9B19, + 6874: 0x9B1B, + 6875: 0x9B1C, + 6876: 0x9B20, + 6877: 0x9B26, + 6878: 0x9B2B, + 6879: 0x9B2D, + 6880: 0x9B33, + 6881: 0x9B34, + 6882: 0x9B35, + 6883: 0x9B37, + 6884: 0x9B39, + 6885: 0x9B3A, + 6886: 0x9B3D, + 6887: 0x9B48, + 6888: 0x9B4B, + 6889: 0x9B4C, + 6890: 0x9B55, + 6891: 0x9B56, + 6892: 0x9B57, + 6893: 0x9B5B, + 6894: 0x9B5E, + 6895: 0x9B61, + 6896: 0x9B63, + 6897: 0x9B65, + 6898: 0x9B66, + 6899: 0x9B68, + 6900: 0x9B6A, + 6901: 0x9B6B, + 6902: 0x9B6C, + 6903: 0x9B6D, + 6904: 0x9B6E, + 6905: 0x9B73, + 6906: 0x9B75, + 6907: 0x9B77, + 6908: 0x9B78, + 6909: 0x9B79, + 6910: 0x9B7F, + 6911: 0x9B80, + 6912: 0x9B84, + 6913: 0x9B85, + 6914: 0x9B86, + 6915: 0x9B87, + 6916: 0x9B89, + 6917: 0x9B8A, + 6918: 0x9B8B, + 6919: 0x9B8D, + 6920: 0x9B8F, + 6921: 0x9B90, + 6922: 0x9B94, + 6923: 0x9B9A, + 6924: 0x9B9D, + 6925: 0x9B9E, + 6926: 0x9BA6, + 6927: 0x9BA7, + 6928: 0x9BA9, + 6929: 0x9BAC, + 6930: 0x9BB0, + 6931: 0x9BB1, + 6932: 0x9BB2, + 6933: 0x9BB7, + 6934: 0x9BB8, + 6935: 0x9BBB, + 6936: 0x9BBC, + 6937: 0x9BBE, + 6938: 0x9BBF, + 6939: 0x9BC1, + 6940: 0x9BC7, + 6941: 0x9BC8, + 6942: 0x9BCE, + 6943: 0x9BD0, + 6944: 0x9BD7, + 6945: 0x9BD8, + 6946: 0x9BDD, + 6947: 0x9BDF, + 6948: 0x9BE5, + 6949: 0x9BE7, + 6950: 0x9BEA, + 6951: 0x9BEB, + 6952: 0x9BEF, + 6953: 0x9BF3, + 6954: 0x9BF7, + 6955: 0x9BF8, + 6956: 0x9BF9, + 6957: 0x9BFA, + 6958: 0x9BFD, + 6959: 0x9BFF, + 6960: 0x9C00, + 6961: 0x9C02, + 6962: 0x9C0B, + 6963: 0x9C0F, + 6964: 0x9C11, + 6965: 0x9C16, + 6966: 0x9C18, + 6967: 0x9C19, + 6968: 0x9C1A, + 6969: 0x9C1C, + 6970: 0x9C1E, + 6971: 0x9C22, + 6972: 0x9C23, + 6973: 0x9C26, + 6974: 0x9C27, + 6975: 0x9C28, + 6976: 0x9C29, + 6977: 0x9C2A, + 6978: 0x9C31, + 6979: 0x9C35, + 6980: 0x9C36, + 6981: 0x9C37, + 6982: 0x9C3D, + 6983: 0x9C41, + 6984: 0x9C43, + 6985: 0x9C44, + 6986: 0x9C45, + 6987: 0x9C49, + 6988: 0x9C4A, + 6989: 0x9C4E, + 6990: 0x9C4F, + 6991: 0x9C50, + 6992: 0x9C53, + 6993: 0x9C54, + 6994: 0x9C56, + 6995: 0x9C58, + 6996: 0x9C5B, + 6997: 0x9C5D, + 6998: 0x9C5E, + 6999: 0x9C5F, + 7000: 0x9C63, + 7001: 0x9C69, + 7002: 0x9C6A, + 7003: 0x9C5C, + 7004: 0x9C6B, + 7005: 0x9C68, + 7006: 0x9C6E, + 7007: 0x9C70, + 7008: 0x9C72, + 7009: 0x9C75, + 7010: 0x9C77, + 7011: 0x9C7B, + 7012: 0x9CE6, + 7013: 0x9CF2, + 7014: 0x9CF7, + 7015: 0x9CF9, + 7016: 0x9D0B, + 7017: 0x9D02, + 7018: 0x9D11, + 7019: 0x9D17, + 7020: 0x9D18, + 7021: 0x9D1C, + 7022: 0x9D1D, + 7023: 0x9D1E, + 7024: 0x9D2F, + 7025: 0x9D30, + 7026: 0x9D32, + 7027: 0x9D33, + 7028: 0x9D34, + 7029: 0x9D3A, + 7030: 0x9D3C, + 7031: 0x9D45, + 7032: 0x9D3D, + 7033: 0x9D42, + 7034: 0x9D43, + 7035: 0x9D47, + 7036: 0x9D4A, + 7037: 0x9D53, + 7038: 0x9D54, + 7039: 0x9D5F, + 7040: 0x9D63, + 7041: 0x9D62, + 7042: 0x9D65, + 7043: 0x9D69, + 7044: 0x9D6A, + 7045: 0x9D6B, + 7046: 0x9D70, + 7047: 0x9D76, + 7048: 0x9D77, + 7049: 0x9D7B, + 7050: 0x9D7C, + 7051: 0x9D7E, + 7052: 0x9D83, + 7053: 0x9D84, + 7054: 0x9D86, + 7055: 0x9D8A, + 7056: 0x9D8D, + 7057: 0x9D8E, + 7058: 0x9D92, + 7059: 0x9D93, + 7060: 0x9D95, + 7061: 0x9D96, + 7062: 0x9D97, + 7063: 0x9D98, + 7064: 0x9DA1, + 7065: 0x9DAA, + 7066: 0x9DAC, + 7067: 0x9DAE, + 7068: 0x9DB1, + 7069: 0x9DB5, + 7070: 0x9DB9, + 7071: 0x9DBC, + 7072: 0x9DBF, + 7073: 0x9DC3, + 7074: 0x9DC7, + 7075: 0x9DC9, + 7076: 0x9DCA, + 7077: 0x9DD4, + 7078: 0x9DD5, + 7079: 0x9DD6, + 7080: 0x9DD7, + 7081: 0x9DDA, + 7082: 0x9DDE, + 7083: 0x9DDF, + 7084: 0x9DE0, + 7085: 0x9DE5, + 7086: 0x9DE7, + 7087: 0x9DE9, + 7088: 0x9DEB, + 7089: 0x9DEE, + 7090: 0x9DF0, + 7091: 0x9DF3, + 7092: 0x9DF4, + 7093: 0x9DFE, + 7094: 0x9E0A, + 7095: 0x9E02, + 7096: 0x9E07, + 7097: 0x9E0E, + 7098: 0x9E10, + 7099: 0x9E11, + 7100: 0x9E12, + 7101: 0x9E15, + 7102: 0x9E16, + 7103: 0x9E19, + 7104: 0x9E1C, + 7105: 0x9E1D, + 7106: 0x9E7A, + 7107: 0x9E7B, + 7108: 0x9E7C, + 7109: 0x9E80, + 7110: 0x9E82, + 7111: 0x9E83, + 7112: 0x9E84, + 7113: 0x9E85, + 7114: 0x9E87, + 7115: 0x9E8E, + 7116: 0x9E8F, + 7117: 0x9E96, + 7118: 0x9E98, + 7119: 0x9E9B, + 7120: 0x9E9E, + 7121: 0x9EA4, + 7122: 0x9EA8, + 7123: 0x9EAC, + 7124: 0x9EAE, + 7125: 0x9EAF, + 7126: 0x9EB0, + 7127: 0x9EB3, + 7128: 0x9EB4, + 7129: 0x9EB5, + 7130: 0x9EC6, + 7131: 0x9EC8, + 7132: 0x9ECB, + 7133: 0x9ED5, + 7134: 0x9EDF, + 7135: 0x9EE4, + 7136: 0x9EE7, + 7137: 0x9EEC, + 7138: 0x9EED, + 7139: 0x9EEE, + 7140: 0x9EF0, + 7141: 0x9EF1, + 7142: 0x9EF2, + 7143: 0x9EF5, + 7144: 0x9EF8, + 7145: 0x9EFF, + 7146: 0x9F02, + 7147: 0x9F03, + 7148: 0x9F09, + 7149: 0x9F0F, + 7150: 0x9F10, + 7151: 0x9F11, + 7152: 0x9F12, + 7153: 0x9F14, + 7154: 0x9F16, + 7155: 0x9F17, + 7156: 0x9F19, + 7157: 0x9F1A, + 7158: 0x9F1B, + 7159: 0x9F1F, + 7160: 0x9F22, + 7161: 0x9F26, + 7162: 0x9F2A, + 7163: 0x9F2B, + 7164: 0x9F2F, + 7165: 0x9F31, + 7166: 0x9F32, + 7167: 0x9F34, + 7168: 0x9F37, + 7169: 0x9F39, + 7170: 0x9F3A, + 7171: 0x9F3C, + 7172: 0x9F3D, + 7173: 0x9F3F, + 7174: 0x9F41, + 7175: 0x9F43, + 7176: 0x9F44, + 7177: 0x9F45, + 7178: 0x9F46, + 7179: 0x9F47, + 7180: 0x9F53, + 7181: 0x9F55, + 7182: 0x9F56, + 7183: 0x9F57, + 7184: 0x9F58, + 7185: 0x9F5A, + 7186: 0x9F5D, + 7187: 0x9F5E, + 7188: 0x9F68, + 7189: 0x9F69, + 7190: 0x9F6D, + 7191: 0x9F6E, + 7192: 0x9F6F, + 7193: 0x9F70, + 7194: 0x9F71, + 7195: 0x9F73, + 7196: 0x9F75, + 7197: 0x9F7A, + 7198: 0x9F7D, + 7199: 0x9F8F, + 7200: 0x9F90, + 7201: 0x9F91, + 7202: 0x9F92, + 7203: 0x9F94, + 7204: 0x9F96, + 7205: 0x9F97, + 7206: 0x9F9E, + 7207: 0x9FA1, + 7208: 0x9FA2, + 7209: 0x9FA3, + 7210: 0x9FA5, +} + +const ( + jis0208 = 1 + jis0212 = 2 + codeMask = 0x7f + codeShift = 7 + tableShift = 14 +) + +const numEncodeTables = 6 + +// encodeX are the encoding tables from Unicode to JIS code, +// sorted by decreasing length. +// encode0: 20902 entries for runes in [19968, 40870). +// encode1: 1632 entries for runes in [ 8208, 9840). +// encode2: 974 entries for runes in [12288, 13262). +// encode3: 959 entries for runes in [ 161, 1120). +// encode4: 261 entries for runes in [63785, 64046). +// encode5: 229 entries for runes in [65281, 65510). +// +// The high two bits of the value record whether the JIS code comes from the +// JIS0208 table (high bits == 1) or the JIS0212 table (high bits == 2). +// The low 14 bits are two 7-bit unsigned integers j1 and j2 that form the +// JIS code (94*j1 + j2) within that table. + +const encode0Low, encode0High = 19968, 40870 + +var encode0 = [...]uint16{ + 19968 - 19968: jis0208<<14 | 0x0F<<7 | 0x4B, + 19969 - 19968: jis0208<<14 | 0x22<<7 | 0x59, + 19970 - 19968: jis0212<<14 | 0x0F<<7 | 0x00, + 19971 - 19968: jis0208<<14 | 0x1B<<7 | 0x16, + 19972 - 19968: jis0212<<14 | 0x0F<<7 | 0x01, + 19973 - 19968: jis0212<<14 | 0x0F<<7 | 0x02, + 19975 - 19968: jis0208<<14 | 0x2A<<7 | 0x5B, + 19976 - 19968: jis0208<<14 | 0x1D<<7 | 0x45, + 19977 - 19968: jis0208<<14 | 0x1A<<7 | 0x0F, + 19978 - 19968: jis0208<<14 | 0x1D<<7 | 0x44, + 19979 - 19968: jis0208<<14 | 0x11<<7 | 0x1B, + 19980 - 19968: jis0212<<14 | 0x0F<<7 | 0x03, + 19981 - 19968: jis0208<<14 | 0x28<<7 | 0x33, + 19982 - 19968: jis0208<<14 | 0x2C<<7 | 0x1E, + 19984 - 19968: jis0208<<14 | 0x2F<<7 | 0x01, + 19985 - 19968: jis0208<<14 | 0x10<<7 | 0x0E, + 19986 - 19968: jis0212<<14 | 0x0F<<7 | 0x04, + 19988 - 19968: jis0208<<14 | 0x12<<7 | 0x4D, + 19989 - 19968: jis0208<<14 | 0x2F<<7 | 0x02, + 19990 - 19968: jis0208<<14 | 0x1F<<7 | 0x03, + 19991 - 19968: jis0208<<14 | 0x31<<7 | 0x21, + 19992 - 19968: jis0208<<14 | 0x14<<7 | 0x35, + 19993 - 19968: jis0208<<14 | 0x29<<7 | 0x19, + 19998 - 19968: jis0208<<14 | 0x1D<<7 | 0x46, + 19999 - 19968: jis0212<<14 | 0x0F<<7 | 0x05, + 20001 - 19968: jis0208<<14 | 0x2D<<7 | 0x1D, + 20003 - 19968: jis0212<<14 | 0x0F<<7 | 0x06, + 20004 - 19968: jis0212<<14 | 0x0F<<7 | 0x07, + 20006 - 19968: jis0208<<14 | 0x29<<7 | 0x21, + 20008 - 19968: jis0208<<14 | 0x58<<7 | 0x0C, + 20010 - 19968: jis0208<<14 | 0x2F<<7 | 0x03, + 20011 - 19968: jis0212<<14 | 0x0F<<7 | 0x09, + 20013 - 19968: jis0208<<14 | 0x22<<7 | 0x45, + 20014 - 19968: jis0212<<14 | 0x0F<<7 | 0x0A, + 20015 - 19968: jis0212<<14 | 0x0F<<7 | 0x0B, + 20016 - 19968: jis0212<<14 | 0x0F<<7 | 0x0C, + 20017 - 19968: jis0208<<14 | 0x2F<<7 | 0x04, + 20018 - 19968: jis0208<<14 | 0x15<<7 | 0x59, + 20021 - 19968: jis0212<<14 | 0x0F<<7 | 0x0D, + 20022 - 19968: jis0208<<14 | 0x2F<<7 | 0x05, + 20024 - 19968: jis0208<<14 | 0x13<<7 | 0x3C, + 20025 - 19968: jis0208<<14 | 0x22<<7 | 0x0F, + 20027 - 19968: jis0208<<14 | 0x1B<<7 | 0x46, + 20028 - 19968: jis0208<<14 | 0x2F<<7 | 0x06, + 20031 - 19968: jis0208<<14 | 0x2F<<7 | 0x07, + 20032 - 19968: jis0212<<14 | 0x0F<<7 | 0x0E, + 20033 - 19968: jis0212<<14 | 0x0F<<7 | 0x0F, + 20034 - 19968: jis0208<<14 | 0x2F<<7 | 0x08, + 20035 - 19968: jis0208<<14 | 0x26<<7 | 0x14, + 20036 - 19968: jis0212<<14 | 0x0F<<7 | 0x10, + 20037 - 19968: jis0208<<14 | 0x14<<7 | 0x36, + 20039 - 19968: jis0212<<14 | 0x0F<<7 | 0x11, + 20043 - 19968: jis0208<<14 | 0x26<<7 | 0x16, + 20045 - 19968: jis0208<<14 | 0x25<<7 | 0x42, + 20046 - 19968: jis0208<<14 | 0x17<<7 | 0x22, + 20047 - 19968: jis0208<<14 | 0x2A<<7 | 0x12, + 20049 - 19968: jis0212<<14 | 0x0F<<7 | 0x12, + 20053 - 19968: jis0208<<14 | 0x48<<7 | 0x28, + 20054 - 19968: jis0208<<14 | 0x2F<<7 | 0x09, + 20055 - 19968: jis0208<<14 | 0x1D<<7 | 0x47, + 20056 - 19968: jis0208<<14 | 0x2F<<7 | 0x0A, + 20057 - 19968: jis0208<<14 | 0x11<<7 | 0x14, + 20058 - 19968: jis0212<<14 | 0x0F<<7 | 0x13, + 20060 - 19968: jis0212<<14 | 0x0F<<7 | 0x14, + 20061 - 19968: jis0208<<14 | 0x15<<7 | 0x44, + 20062 - 19968: jis0208<<14 | 0x17<<7 | 0x4F, + 20063 - 19968: jis0208<<14 | 0x2B<<7 | 0x48, + 20066 - 19968: jis0208<<14 | 0x35<<7 | 0x05, + 20067 - 19968: jis0212<<14 | 0x0F<<7 | 0x15, + 20072 - 19968: jis0212<<14 | 0x0F<<7 | 0x16, + 20073 - 19968: jis0212<<14 | 0x0F<<7 | 0x17, + 20081 - 19968: jis0208<<14 | 0x2C<<7 | 0x4F, + 20083 - 19968: jis0208<<14 | 0x25<<7 | 0x5C, + 20084 - 19968: jis0212<<14 | 0x0F<<7 | 0x18, + 20085 - 19968: jis0212<<14 | 0x0F<<7 | 0x19, + 20089 - 19968: jis0212<<14 | 0x0F<<7 | 0x1A, + 20094 - 19968: jis0208<<14 | 0x13<<7 | 0x04, + 20095 - 19968: jis0212<<14 | 0x0F<<7 | 0x1B, + 20096 - 19968: jis0208<<14 | 0x14<<7 | 0x14, + 20098 - 19968: jis0208<<14 | 0x2F<<7 | 0x0B, + 20101 - 19968: jis0208<<14 | 0x2F<<7 | 0x0C, + 20102 - 19968: jis0208<<14 | 0x2D<<7 | 0x1A, + 20104 - 19968: jis0208<<14 | 0x2C<<7 | 0x1C, + 20105 - 19968: jis0208<<14 | 0x20<<7 | 0x47, + 20106 - 19968: jis0208<<14 | 0x2F<<7 | 0x0E, + 20107 - 19968: jis0208<<14 | 0x1A<<7 | 0x55, + 20108 - 19968: jis0208<<14 | 0x25<<7 | 0x52, + 20109 - 19968: jis0212<<14 | 0x0F<<7 | 0x1C, + 20110 - 19968: jis0208<<14 | 0x2F<<7 | 0x11, + 20113 - 19968: jis0208<<14 | 0x10<<7 | 0x1D, + 20114 - 19968: jis0208<<14 | 0x17<<7 | 0x3E, + 20116 - 19968: jis0208<<14 | 0x17<<7 | 0x3D, + 20117 - 19968: jis0208<<14 | 0x0F<<7 | 0x45, + 20118 - 19968: jis0212<<14 | 0x0F<<7 | 0x1D, + 20119 - 19968: jis0212<<14 | 0x0F<<7 | 0x1E, + 20120 - 19968: jis0208<<14 | 0x2E<<7 | 0x2A, + 20121 - 19968: jis0208<<14 | 0x2E<<7 | 0x29, + 20123 - 19968: jis0208<<14 | 0x19<<7 | 0x12, + 20124 - 19968: jis0208<<14 | 0x0F<<7 | 0x00, + 20125 - 19968: jis0212<<14 | 0x0F<<7 | 0x1F, + 20126 - 19968: jis0208<<14 | 0x2F<<7 | 0x12, + 20127 - 19968: jis0208<<14 | 0x2F<<7 | 0x13, + 20128 - 19968: jis0208<<14 | 0x2F<<7 | 0x14, + 20129 - 19968: jis0208<<14 | 0x2A<<7 | 0x13, + 20130 - 19968: jis0208<<14 | 0x2F<<7 | 0x15, + 20132 - 19968: jis0208<<14 | 0x17<<7 | 0x51, + 20133 - 19968: jis0208<<14 | 0x0F<<7 | 0x46, + 20134 - 19968: jis0208<<14 | 0x2A<<7 | 0x51, + 20136 - 19968: jis0208<<14 | 0x14<<7 | 0x5B, + 20139 - 19968: jis0208<<14 | 0x14<<7 | 0x5C, + 20140 - 19968: jis0208<<14 | 0x14<<7 | 0x5D, + 20141 - 19968: jis0208<<14 | 0x23<<7 | 0x41, + 20142 - 19968: jis0208<<14 | 0x2D<<7 | 0x1B, + 20143 - 19968: jis0212<<14 | 0x0F<<7 | 0x20, + 20144 - 19968: jis0208<<14 | 0x2F<<7 | 0x16, + 20147 - 19968: jis0208<<14 | 0x2F<<7 | 0x17, + 20150 - 19968: jis0208<<14 | 0x2F<<7 | 0x18, + 20153 - 19968: jis0212<<14 | 0x0F<<7 | 0x21, + 20154 - 19968: jis0208<<14 | 0x1E<<7 | 0x2C, + 20160 - 19968: jis0208<<14 | 0x1C<<7 | 0x19, + 20161 - 19968: jis0208<<14 | 0x1E<<7 | 0x2D, + 20162 - 19968: jis0208<<14 | 0x2F<<7 | 0x1D, + 20163 - 19968: jis0212<<14 | 0x0F<<7 | 0x22, + 20164 - 19968: jis0208<<14 | 0x2F<<7 | 0x1B, + 20166 - 19968: jis0208<<14 | 0x2F<<7 | 0x1C, + 20167 - 19968: jis0208<<14 | 0x14<<7 | 0x37, + 20170 - 19968: jis0208<<14 | 0x19<<7 | 0x02, + 20171 - 19968: jis0208<<14 | 0x11<<7 | 0x4F, + 20173 - 19968: jis0208<<14 | 0x2F<<7 | 0x1A, + 20174 - 19968: jis0208<<14 | 0x2F<<7 | 0x19, + 20175 - 19968: jis0208<<14 | 0x29<<7 | 0x08, + 20176 - 19968: jis0212<<14 | 0x0F<<7 | 0x23, + 20180 - 19968: jis0208<<14 | 0x1A<<7 | 0x25, + 20181 - 19968: jis0208<<14 | 0x1A<<7 | 0x24, + 20182 - 19968: jis0208<<14 | 0x21<<7 | 0x1D, + 20183 - 19968: jis0208<<14 | 0x2F<<7 | 0x1E, + 20184 - 19968: jis0208<<14 | 0x28<<7 | 0x34, + 20185 - 19968: jis0208<<14 | 0x1F<<7 | 0x46, + 20186 - 19968: jis0212<<14 | 0x0F<<7 | 0x24, + 20187 - 19968: jis0212<<14 | 0x0F<<7 | 0x25, + 20189 - 19968: jis0208<<14 | 0x00<<7 | 0x17, + 20190 - 19968: jis0208<<14 | 0x2F<<7 | 0x1F, + 20191 - 19968: jis0208<<14 | 0x2F<<7 | 0x21, + 20192 - 19968: jis0212<<14 | 0x0F<<7 | 0x26, + 20193 - 19968: jis0208<<14 | 0x58<<7 | 0x0D, + 20194 - 19968: jis0212<<14 | 0x0F<<7 | 0x28, + 20195 - 19968: jis0208<<14 | 0x21<<7 | 0x44, + 20196 - 19968: jis0208<<14 | 0x2D<<7 | 0x40, + 20197 - 19968: jis0208<<14 | 0x0F<<7 | 0x29, + 20200 - 19968: jis0212<<14 | 0x0F<<7 | 0x29, + 20205 - 19968: jis0208<<14 | 0x2F<<7 | 0x20, + 20206 - 19968: jis0208<<14 | 0x11<<7 | 0x1D, + 20207 - 19968: jis0212<<14 | 0x0F<<7 | 0x2A, + 20208 - 19968: jis0208<<14 | 0x15<<7 | 0x23, + 20209 - 19968: jis0212<<14 | 0x0F<<7 | 0x2B, + 20210 - 19968: jis0208<<14 | 0x22<<7 | 0x46, + 20211 - 19968: jis0212<<14 | 0x0F<<7 | 0x2C, + 20213 - 19968: jis0212<<14 | 0x0F<<7 | 0x2D, + 20214 - 19968: jis0208<<14 | 0x16<<7 | 0x4E, + 20215 - 19968: jis0208<<14 | 0x2F<<7 | 0x22, + 20219 - 19968: jis0208<<14 | 0x26<<7 | 0x03, + 20220 - 19968: jis0208<<14 | 0x58<<7 | 0x0E, + 20221 - 19968: jis0212<<14 | 0x0F<<7 | 0x2E, + 20222 - 19968: jis0212<<14 | 0x0F<<7 | 0x2F, + 20223 - 19968: jis0212<<14 | 0x0F<<7 | 0x30, + 20224 - 19968: jis0208<<14 | 0x58<<7 | 0x0F, + 20225 - 19968: jis0208<<14 | 0x13<<7 | 0x4A, + 20226 - 19968: jis0212<<14 | 0x0F<<7 | 0x32, + 20227 - 19968: jis0208<<14 | 0x58<<7 | 0x10, + 20232 - 19968: jis0212<<14 | 0x0F<<7 | 0x34, + 20233 - 19968: jis0208<<14 | 0x2F<<7 | 0x23, + 20234 - 19968: jis0208<<14 | 0x0F<<7 | 0x2A, + 20235 - 19968: jis0212<<14 | 0x0F<<7 | 0x35, + 20236 - 19968: jis0212<<14 | 0x0F<<7 | 0x36, + 20237 - 19968: jis0208<<14 | 0x17<<7 | 0x3F, + 20238 - 19968: jis0208<<14 | 0x13<<7 | 0x4B, + 20239 - 19968: jis0208<<14 | 0x28<<7 | 0x59, + 20240 - 19968: jis0208<<14 | 0x27<<7 | 0x11, + 20241 - 19968: jis0208<<14 | 0x14<<7 | 0x38, + 20242 - 19968: jis0212<<14 | 0x0F<<7 | 0x37, + 20245 - 19968: jis0212<<14 | 0x0F<<7 | 0x38, + 20246 - 19968: jis0212<<14 | 0x0F<<7 | 0x39, + 20247 - 19968: jis0212<<14 | 0x0F<<7 | 0x3A, + 20249 - 19968: jis0212<<14 | 0x0F<<7 | 0x3B, + 20250 - 19968: jis0208<<14 | 0x11<<7 | 0x50, + 20252 - 19968: jis0208<<14 | 0x2F<<7 | 0x46, + 20253 - 19968: jis0208<<14 | 0x24<<7 | 0x20, + 20270 - 19968: jis0212<<14 | 0x0F<<7 | 0x3C, + 20271 - 19968: jis0208<<14 | 0x26<<7 | 0x4B, + 20272 - 19968: jis0208<<14 | 0x2F<<7 | 0x25, + 20273 - 19968: jis0212<<14 | 0x0F<<7 | 0x3D, + 20275 - 19968: jis0212<<14 | 0x0F<<7 | 0x3F, + 20276 - 19968: jis0208<<14 | 0x27<<7 | 0x1B, + 20277 - 19968: jis0212<<14 | 0x0F<<7 | 0x40, + 20278 - 19968: jis0208<<14 | 0x2D<<7 | 0x41, + 20279 - 19968: jis0212<<14 | 0x0F<<7 | 0x41, + 20280 - 19968: jis0208<<14 | 0x1E<<7 | 0x0C, + 20281 - 19968: jis0208<<14 | 0x58<<7 | 0x11, + 20282 - 19968: jis0208<<14 | 0x1A<<7 | 0x26, + 20283 - 19968: jis0212<<14 | 0x0F<<7 | 0x43, + 20284 - 19968: jis0208<<14 | 0x1A<<7 | 0x56, + 20285 - 19968: jis0208<<14 | 0x11<<7 | 0x1F, + 20286 - 19968: jis0212<<14 | 0x0F<<7 | 0x44, + 20288 - 19968: jis0212<<14 | 0x0F<<7 | 0x45, + 20290 - 19968: jis0212<<14 | 0x0F<<7 | 0x46, + 20291 - 19968: jis0208<<14 | 0x23<<7 | 0x30, + 20294 - 19968: jis0208<<14 | 0x22<<7 | 0x01, + 20295 - 19968: jis0208<<14 | 0x2F<<7 | 0x29, + 20296 - 19968: jis0212<<14 | 0x0F<<7 | 0x47, + 20297 - 19968: jis0212<<14 | 0x0F<<7 | 0x48, + 20299 - 19968: jis0212<<14 | 0x0F<<7 | 0x49, + 20300 - 19968: jis0212<<14 | 0x0F<<7 | 0x4A, + 20301 - 19968: jis0208<<14 | 0x0F<<7 | 0x2B, + 20302 - 19968: jis0208<<14 | 0x23<<7 | 0x42, + 20303 - 19968: jis0208<<14 | 0x1C<<7 | 0x1A, + 20304 - 19968: jis0208<<14 | 0x19<<7 | 0x13, + 20305 - 19968: jis0208<<14 | 0x2C<<7 | 0x03, + 20306 - 19968: jis0212<<14 | 0x0F<<7 | 0x4B, + 20307 - 19968: jis0208<<14 | 0x21<<7 | 0x2D, + 20308 - 19968: jis0212<<14 | 0x0F<<7 | 0x4C, + 20309 - 19968: jis0208<<14 | 0x11<<7 | 0x1E, + 20310 - 19968: jis0208<<14 | 0x58<<7 | 0x12, + 20311 - 19968: jis0208<<14 | 0x2F<<7 | 0x28, + 20312 - 19968: jis0212<<14 | 0x0F<<7 | 0x4E, + 20313 - 19968: jis0208<<14 | 0x2C<<7 | 0x1D, + 20314 - 19968: jis0208<<14 | 0x2F<<7 | 0x24, + 20315 - 19968: jis0208<<14 | 0x2F<<7 | 0x26, + 20316 - 19968: jis0208<<14 | 0x19<<7 | 0x4D, + 20317 - 19968: jis0208<<14 | 0x2F<<7 | 0x27, + 20318 - 19968: jis0208<<14 | 0x34<<7 | 0x03, + 20319 - 19968: jis0212<<14 | 0x0F<<7 | 0x4F, + 20320 - 19968: jis0212<<14 | 0x0F<<7 | 0x3E, + 20323 - 19968: jis0212<<14 | 0x0F<<7 | 0x50, + 20329 - 19968: jis0208<<14 | 0x2F<<7 | 0x2F, + 20330 - 19968: jis0212<<14 | 0x0F<<7 | 0x51, + 20332 - 19968: jis0212<<14 | 0x0F<<7 | 0x52, + 20334 - 19968: jis0212<<14 | 0x0F<<7 | 0x53, + 20335 - 19968: jis0208<<14 | 0x2F<<7 | 0x32, + 20336 - 19968: jis0208<<14 | 0x2F<<7 | 0x30, + 20337 - 19968: jis0212<<14 | 0x0F<<7 | 0x54, + 20339 - 19968: jis0208<<14 | 0x11<<7 | 0x21, + 20341 - 19968: jis0208<<14 | 0x29<<7 | 0x1A, + 20342 - 19968: jis0208<<14 | 0x2F<<7 | 0x2A, + 20343 - 19968: jis0212<<14 | 0x0F<<7 | 0x55, + 20344 - 19968: jis0212<<14 | 0x0F<<7 | 0x56, + 20345 - 19968: jis0212<<14 | 0x0F<<7 | 0x57, + 20346 - 19968: jis0212<<14 | 0x0F<<7 | 0x58, + 20347 - 19968: jis0208<<14 | 0x2F<<7 | 0x2E, + 20348 - 19968: jis0208<<14 | 0x17<<7 | 0x52, + 20349 - 19968: jis0212<<14 | 0x0F<<7 | 0x59, + 20350 - 19968: jis0212<<14 | 0x0F<<7 | 0x5A, + 20351 - 19968: jis0208<<14 | 0x1A<<7 | 0x27, + 20353 - 19968: jis0212<<14 | 0x0F<<7 | 0x5B, + 20354 - 19968: jis0212<<14 | 0x0F<<7 | 0x5C, + 20355 - 19968: jis0208<<14 | 0x13<<7 | 0x05, + 20356 - 19968: jis0212<<14 | 0x0F<<7 | 0x5D, + 20357 - 19968: jis0212<<14 | 0x10<<7 | 0x00, + 20358 - 19968: jis0208<<14 | 0x2F<<7 | 0x33, + 20360 - 19968: jis0208<<14 | 0x2F<<7 | 0x2B, + 20361 - 19968: jis0212<<14 | 0x10<<7 | 0x01, + 20362 - 19968: jis0208<<14 | 0x58<<7 | 0x14, + 20363 - 19968: jis0208<<14 | 0x2D<<7 | 0x42, + 20364 - 19968: jis0212<<14 | 0x10<<7 | 0x03, + 20365 - 19968: jis0208<<14 | 0x1A<<7 | 0x57, + 20366 - 19968: jis0212<<14 | 0x10<<7 | 0x04, + 20367 - 19968: jis0208<<14 | 0x2F<<7 | 0x2C, + 20368 - 19968: jis0212<<14 | 0x10<<7 | 0x05, + 20369 - 19968: jis0208<<14 | 0x2F<<7 | 0x31, + 20370 - 19968: jis0208<<14 | 0x58<<7 | 0x13, + 20371 - 19968: jis0212<<14 | 0x10<<7 | 0x07, + 20372 - 19968: jis0208<<14 | 0x58<<7 | 0x16, + 20374 - 19968: jis0208<<14 | 0x2F<<7 | 0x34, + 20375 - 19968: jis0212<<14 | 0x10<<7 | 0x09, + 20376 - 19968: jis0208<<14 | 0x2F<<7 | 0x2D, + 20377 - 19968: jis0212<<14 | 0x10<<7 | 0x0A, + 20378 - 19968: jis0208<<14 | 0x58<<7 | 0x15, + 20379 - 19968: jis0208<<14 | 0x15<<7 | 0x00, + 20381 - 19968: jis0208<<14 | 0x0F<<7 | 0x2C, + 20382 - 19968: jis0212<<14 | 0x10<<7 | 0x0C, + 20383 - 19968: jis0212<<14 | 0x10<<7 | 0x0D, + 20384 - 19968: jis0208<<14 | 0x15<<7 | 0x01, + 20385 - 19968: jis0208<<14 | 0x11<<7 | 0x20, + 20395 - 19968: jis0208<<14 | 0x34<<7 | 0x04, + 20397 - 19968: jis0208<<14 | 0x2A<<7 | 0x58, + 20398 - 19968: jis0208<<14 | 0x28<<7 | 0x4D, + 20399 - 19968: jis0208<<14 | 0x17<<7 | 0x53, + 20402 - 19968: jis0212<<14 | 0x10<<7 | 0x0E, + 20405 - 19968: jis0208<<14 | 0x1E<<7 | 0x0E, + 20406 - 19968: jis0208<<14 | 0x2D<<7 | 0x16, + 20407 - 19968: jis0212<<14 | 0x10<<7 | 0x0F, + 20409 - 19968: jis0212<<14 | 0x10<<7 | 0x10, + 20411 - 19968: jis0212<<14 | 0x10<<7 | 0x11, + 20412 - 19968: jis0212<<14 | 0x10<<7 | 0x12, + 20413 - 19968: jis0212<<14 | 0x10<<7 | 0x13, + 20414 - 19968: jis0212<<14 | 0x10<<7 | 0x14, + 20415 - 19968: jis0208<<14 | 0x29<<7 | 0x37, + 20416 - 19968: jis0212<<14 | 0x10<<7 | 0x15, + 20417 - 19968: jis0212<<14 | 0x10<<7 | 0x16, + 20418 - 19968: jis0208<<14 | 0x16<<7 | 0x17, + 20419 - 19968: jis0208<<14 | 0x21<<7 | 0x04, + 20420 - 19968: jis0208<<14 | 0x11<<7 | 0x43, + 20421 - 19968: jis0212<<14 | 0x10<<7 | 0x17, + 20422 - 19968: jis0212<<14 | 0x10<<7 | 0x18, + 20424 - 19968: jis0212<<14 | 0x10<<7 | 0x19, + 20425 - 19968: jis0208<<14 | 0x58<<7 | 0x05, + 20426 - 19968: jis0208<<14 | 0x1C<<7 | 0x32, + 20427 - 19968: jis0212<<14 | 0x10<<7 | 0x1B, + 20428 - 19968: jis0212<<14 | 0x10<<7 | 0x1C, + 20429 - 19968: jis0208<<14 | 0x58<<7 | 0x17, + 20430 - 19968: jis0208<<14 | 0x2F<<7 | 0x38, + 20431 - 19968: jis0212<<14 | 0x10<<7 | 0x1E, + 20432 - 19968: jis0208<<14 | 0x2F<<7 | 0x3D, + 20433 - 19968: jis0208<<14 | 0x2F<<7 | 0x3B, + 20434 - 19968: jis0212<<14 | 0x10<<7 | 0x1F, + 20436 - 19968: jis0208<<14 | 0x2F<<7 | 0x36, + 20439 - 19968: jis0208<<14 | 0x21<<7 | 0x0E, + 20440 - 19968: jis0208<<14 | 0x2F<<7 | 0x39, + 20442 - 19968: jis0208<<14 | 0x2F<<7 | 0x3C, + 20443 - 19968: jis0208<<14 | 0x2F<<7 | 0x3A, + 20444 - 19968: jis0212<<14 | 0x10<<7 | 0x20, + 20445 - 19968: jis0208<<14 | 0x29<<7 | 0x3C, + 20447 - 19968: jis0208<<14 | 0x2F<<7 | 0x37, + 20448 - 19968: jis0212<<14 | 0x10<<7 | 0x21, + 20449 - 19968: jis0208<<14 | 0x1E<<7 | 0x0D, + 20450 - 19968: jis0212<<14 | 0x10<<7 | 0x22, + 20451 - 19968: jis0208<<14 | 0x2A<<7 | 0x52, + 20452 - 19968: jis0208<<14 | 0x2F<<7 | 0x3E, + 20453 - 19968: jis0208<<14 | 0x2F<<7 | 0x3F, + 20462 - 19968: jis0208<<14 | 0x1C<<7 | 0x03, + 20463 - 19968: jis0208<<14 | 0x2F<<7 | 0x4C, + 20464 - 19968: jis0212<<14 | 0x10<<7 | 0x23, + 20466 - 19968: jis0212<<14 | 0x10<<7 | 0x24, + 20467 - 19968: jis0208<<14 | 0x26<<7 | 0x2F, + 20469 - 19968: jis0208<<14 | 0x28<<7 | 0x15, + 20470 - 19968: jis0208<<14 | 0x2F<<7 | 0x47, + 20472 - 19968: jis0208<<14 | 0x29<<7 | 0x4F, + 20474 - 19968: jis0208<<14 | 0x11<<7 | 0x15, + 20476 - 19968: jis0212<<14 | 0x10<<7 | 0x25, + 20477 - 19968: jis0212<<14 | 0x10<<7 | 0x26, + 20478 - 19968: jis0208<<14 | 0x2F<<7 | 0x4B, + 20479 - 19968: jis0208<<14 | 0x58<<7 | 0x1A, + 20480 - 19968: jis0212<<14 | 0x10<<7 | 0x28, + 20481 - 19968: jis0212<<14 | 0x10<<7 | 0x29, + 20484 - 19968: jis0212<<14 | 0x10<<7 | 0x2A, + 20485 - 19968: jis0208<<14 | 0x2F<<7 | 0x45, + 20486 - 19968: jis0208<<14 | 0x2F<<7 | 0x4E, + 20487 - 19968: jis0212<<14 | 0x10<<7 | 0x2B, + 20489 - 19968: jis0208<<14 | 0x20<<7 | 0x31, + 20490 - 19968: jis0212<<14 | 0x10<<7 | 0x2C, + 20491 - 19968: jis0208<<14 | 0x17<<7 | 0x23, + 20492 - 19968: jis0212<<14 | 0x10<<7 | 0x2D, + 20493 - 19968: jis0208<<14 | 0x26<<7 | 0x3B, + 20494 - 19968: jis0212<<14 | 0x10<<7 | 0x2E, + 20495 - 19968: jis0208<<14 | 0x3F<<7 | 0x26, + 20496 - 19968: jis0212<<14 | 0x10<<7 | 0x2F, + 20497 - 19968: jis0208<<14 | 0x2F<<7 | 0x4D, + 20498 - 19968: jis0208<<14 | 0x24<<7 | 0x3C, + 20499 - 19968: jis0212<<14 | 0x10<<7 | 0x30, + 20500 - 19968: jis0208<<14 | 0x2F<<7 | 0x42, + 20502 - 19968: jis0208<<14 | 0x17<<7 | 0x55, + 20503 - 19968: jis0212<<14 | 0x10<<7 | 0x31, + 20504 - 19968: jis0212<<14 | 0x10<<7 | 0x32, + 20505 - 19968: jis0208<<14 | 0x17<<7 | 0x54, + 20506 - 19968: jis0208<<14 | 0x2F<<7 | 0x40, + 20507 - 19968: jis0212<<14 | 0x10<<7 | 0x33, + 20508 - 19968: jis0212<<14 | 0x10<<7 | 0x34, + 20509 - 19968: jis0212<<14 | 0x10<<7 | 0x35, + 20510 - 19968: jis0208<<14 | 0x58<<7 | 0x1B, + 20511 - 19968: jis0208<<14 | 0x1B<<7 | 0x39, + 20513 - 19968: jis0208<<14 | 0x2F<<7 | 0x48, + 20514 - 19968: jis0208<<14 | 0x58<<7 | 0x19, + 20515 - 19968: jis0208<<14 | 0x29<<7 | 0x4E, + 20516 - 19968: jis0208<<14 | 0x22<<7 | 0x2C, + 20517 - 19968: jis0208<<14 | 0x2F<<7 | 0x44, + 20518 - 19968: jis0208<<14 | 0x16<<7 | 0x50, + 20519 - 19968: jis0212<<14 | 0x10<<7 | 0x38, + 20520 - 19968: jis0208<<14 | 0x2F<<7 | 0x41, + 20521 - 19968: jis0208<<14 | 0x2F<<7 | 0x49, + 20522 - 19968: jis0208<<14 | 0x2F<<7 | 0x43, + 20523 - 19968: jis0208<<14 | 0x2D<<7 | 0x30, + 20524 - 19968: jis0208<<14 | 0x2F<<7 | 0x4A, + 20525 - 19968: jis0208<<14 | 0x2E<<7 | 0x20, + 20526 - 19968: jis0212<<14 | 0x10<<7 | 0x39, + 20528 - 19968: jis0212<<14 | 0x10<<7 | 0x3A, + 20530 - 19968: jis0212<<14 | 0x10<<7 | 0x3B, + 20531 - 19968: jis0212<<14 | 0x10<<7 | 0x3C, + 20533 - 19968: jis0212<<14 | 0x10<<7 | 0x3D, + 20534 - 19968: jis0208<<14 | 0x15<<7 | 0x45, + 20537 - 19968: jis0208<<14 | 0x16<<7 | 0x4F, + 20539 - 19968: jis0212<<14 | 0x10<<7 | 0x55, + 20544 - 19968: jis0208<<14 | 0x58<<7 | 0x18, + 20545 - 19968: jis0212<<14 | 0x10<<7 | 0x3F, + 20546 - 19968: jis0208<<14 | 0x58<<7 | 0x1E, + 20547 - 19968: jis0208<<14 | 0x2F<<7 | 0x4F, + 20549 - 19968: jis0212<<14 | 0x10<<7 | 0x41, + 20550 - 19968: jis0208<<14 | 0x58<<7 | 0x1C, + 20551 - 19968: jis0208<<14 | 0x2F<<7 | 0x50, + 20552 - 19968: jis0208<<14 | 0x2F<<7 | 0x54, + 20553 - 19968: jis0208<<14 | 0x0F<<7 | 0x2D, + 20554 - 19968: jis0212<<14 | 0x10<<7 | 0x43, + 20556 - 19968: jis0212<<14 | 0x10<<7 | 0x44, + 20558 - 19968: jis0212<<14 | 0x10<<7 | 0x45, + 20559 - 19968: jis0208<<14 | 0x29<<7 | 0x2F, + 20560 - 19968: jis0208<<14 | 0x2F<<7 | 0x53, + 20561 - 19968: jis0212<<14 | 0x10<<7 | 0x46, + 20562 - 19968: jis0212<<14 | 0x10<<7 | 0x47, + 20563 - 19968: jis0212<<14 | 0x10<<7 | 0x48, + 20565 - 19968: jis0208<<14 | 0x2F<<7 | 0x52, + 20566 - 19968: jis0208<<14 | 0x2F<<7 | 0x56, + 20567 - 19968: jis0212<<14 | 0x10<<7 | 0x49, + 20569 - 19968: jis0212<<14 | 0x10<<7 | 0x4A, + 20570 - 19968: jis0208<<14 | 0x2F<<7 | 0x55, + 20572 - 19968: jis0208<<14 | 0x23<<7 | 0x43, + 20575 - 19968: jis0212<<14 | 0x10<<7 | 0x4B, + 20576 - 19968: jis0212<<14 | 0x10<<7 | 0x4C, + 20578 - 19968: jis0212<<14 | 0x10<<7 | 0x4D, + 20579 - 19968: jis0212<<14 | 0x10<<7 | 0x4E, + 20581 - 19968: jis0208<<14 | 0x16<<7 | 0x51, + 20582 - 19968: jis0212<<14 | 0x10<<7 | 0x4F, + 20583 - 19968: jis0212<<14 | 0x10<<7 | 0x50, + 20586 - 19968: jis0212<<14 | 0x10<<7 | 0x51, + 20588 - 19968: jis0208<<14 | 0x2F<<7 | 0x57, + 20589 - 19968: jis0212<<14 | 0x10<<7 | 0x52, + 20592 - 19968: jis0208<<14 | 0x58<<7 | 0x1D, + 20593 - 19968: jis0212<<14 | 0x10<<7 | 0x54, + 20594 - 19968: jis0208<<14 | 0x1B<<7 | 0x24, + 20596 - 19968: jis0208<<14 | 0x21<<7 | 0x05, + 20597 - 19968: jis0208<<14 | 0x23<<7 | 0x44, + 20598 - 19968: jis0208<<14 | 0x15<<7 | 0x55, + 20600 - 19968: jis0208<<14 | 0x2F<<7 | 0x58, + 20605 - 19968: jis0208<<14 | 0x14<<7 | 0x15, + 20608 - 19968: jis0208<<14 | 0x2F<<7 | 0x59, + 20609 - 19968: jis0212<<14 | 0x10<<7 | 0x56, + 20611 - 19968: jis0212<<14 | 0x10<<7 | 0x57, + 20612 - 19968: jis0212<<14 | 0x10<<7 | 0x58, + 20613 - 19968: jis0208<<14 | 0x2F<<7 | 0x5B, + 20614 - 19968: jis0212<<14 | 0x10<<7 | 0x59, + 20618 - 19968: jis0212<<14 | 0x10<<7 | 0x5A, + 20621 - 19968: jis0208<<14 | 0x2A<<7 | 0x14, + 20622 - 19968: jis0212<<14 | 0x10<<7 | 0x5B, + 20623 - 19968: jis0212<<14 | 0x10<<7 | 0x5C, + 20624 - 19968: jis0212<<14 | 0x10<<7 | 0x5D, + 20625 - 19968: jis0208<<14 | 0x16<<7 | 0x45, + 20626 - 19968: jis0212<<14 | 0x11<<7 | 0x00, + 20627 - 19968: jis0212<<14 | 0x11<<7 | 0x01, + 20628 - 19968: jis0208<<14 | 0x58<<7 | 0x1F, + 20630 - 19968: jis0212<<14 | 0x11<<7 | 0x03, + 20632 - 19968: jis0208<<14 | 0x1A<<7 | 0x10, + 20633 - 19968: jis0208<<14 | 0x27<<7 | 0x56, + 20634 - 19968: jis0208<<14 | 0x2F<<7 | 0x5A, + 20635 - 19968: jis0212<<14 | 0x11<<7 | 0x04, + 20636 - 19968: jis0212<<14 | 0x11<<7 | 0x05, + 20638 - 19968: jis0212<<14 | 0x11<<7 | 0x06, + 20639 - 19968: jis0212<<14 | 0x11<<7 | 0x07, + 20640 - 19968: jis0212<<14 | 0x11<<7 | 0x08, + 20641 - 19968: jis0212<<14 | 0x11<<7 | 0x09, + 20642 - 19968: jis0212<<14 | 0x11<<7 | 0x0A, + 20650 - 19968: jis0212<<14 | 0x11<<7 | 0x0B, + 20652 - 19968: jis0208<<14 | 0x19<<7 | 0x24, + 20653 - 19968: jis0208<<14 | 0x2C<<7 | 0x22, + 20655 - 19968: jis0212<<14 | 0x11<<7 | 0x0C, + 20656 - 19968: jis0212<<14 | 0x11<<7 | 0x0D, + 20658 - 19968: jis0208<<14 | 0x2F<<7 | 0x5D, + 20659 - 19968: jis0208<<14 | 0x30<<7 | 0x02, + 20660 - 19968: jis0208<<14 | 0x2F<<7 | 0x5C, + 20661 - 19968: jis0208<<14 | 0x19<<7 | 0x23, + 20663 - 19968: jis0208<<14 | 0x1C<<7 | 0x5C, + 20665 - 19968: jis0212<<14 | 0x11<<7 | 0x0E, + 20666 - 19968: jis0212<<14 | 0x11<<7 | 0x0F, + 20669 - 19968: jis0212<<14 | 0x11<<7 | 0x10, + 20670 - 19968: jis0208<<14 | 0x16<<7 | 0x18, + 20672 - 19968: jis0212<<14 | 0x11<<7 | 0x11, + 20674 - 19968: jis0208<<14 | 0x30<<7 | 0x03, + 20675 - 19968: jis0212<<14 | 0x11<<7 | 0x12, + 20676 - 19968: jis0212<<14 | 0x11<<7 | 0x13, + 20677 - 19968: jis0208<<14 | 0x15<<7 | 0x2E, + 20679 - 19968: jis0212<<14 | 0x11<<7 | 0x14, + 20681 - 19968: jis0208<<14 | 0x30<<7 | 0x00, + 20682 - 19968: jis0208<<14 | 0x30<<7 | 0x01, + 20684 - 19968: jis0212<<14 | 0x11<<7 | 0x15, + 20685 - 19968: jis0208<<14 | 0x25<<7 | 0x0E, + 20686 - 19968: jis0212<<14 | 0x11<<7 | 0x16, + 20687 - 19968: jis0208<<14 | 0x20<<7 | 0x5B, + 20688 - 19968: jis0212<<14 | 0x11<<7 | 0x17, + 20689 - 19968: jis0208<<14 | 0x15<<7 | 0x02, + 20691 - 19968: jis0212<<14 | 0x11<<7 | 0x18, + 20692 - 19968: jis0212<<14 | 0x11<<7 | 0x19, + 20693 - 19968: jis0208<<14 | 0x2A<<7 | 0x2C, + 20694 - 19968: jis0208<<14 | 0x30<<7 | 0x04, + 20696 - 19968: jis0208<<14 | 0x58<<7 | 0x21, + 20698 - 19968: jis0208<<14 | 0x2D<<7 | 0x1C, + 20700 - 19968: jis0212<<14 | 0x11<<7 | 0x1B, + 20701 - 19968: jis0212<<14 | 0x11<<7 | 0x1C, + 20702 - 19968: jis0208<<14 | 0x30<<7 | 0x05, + 20703 - 19968: jis0212<<14 | 0x11<<7 | 0x1D, + 20706 - 19968: jis0212<<14 | 0x11<<7 | 0x1E, + 20707 - 19968: jis0208<<14 | 0x30<<7 | 0x08, + 20708 - 19968: jis0212<<14 | 0x11<<7 | 0x1F, + 20709 - 19968: jis0208<<14 | 0x30<<7 | 0x06, + 20710 - 19968: jis0212<<14 | 0x11<<7 | 0x20, + 20711 - 19968: jis0208<<14 | 0x20<<7 | 0x2D, + 20712 - 19968: jis0212<<14 | 0x11<<7 | 0x21, + 20713 - 19968: jis0212<<14 | 0x11<<7 | 0x22, + 20717 - 19968: jis0208<<14 | 0x30<<7 | 0x07, + 20718 - 19968: jis0208<<14 | 0x30<<7 | 0x09, + 20719 - 19968: jis0212<<14 | 0x11<<7 | 0x23, + 20721 - 19968: jis0212<<14 | 0x11<<7 | 0x24, + 20722 - 19968: jis0212<<14 | 0x11<<7 | 0x30, + 20724 - 19968: jis0208<<14 | 0x58<<7 | 0x20, + 20725 - 19968: jis0208<<14 | 0x30<<7 | 0x0B, + 20726 - 19968: jis0212<<14 | 0x11<<7 | 0x25, + 20729 - 19968: jis0208<<14 | 0x30<<7 | 0x0A, + 20730 - 19968: jis0212<<14 | 0x11<<7 | 0x26, + 20731 - 19968: jis0208<<14 | 0x29<<7 | 0x27, + 20734 - 19968: jis0212<<14 | 0x11<<7 | 0x27, + 20736 - 19968: jis0208<<14 | 0x14<<7 | 0x16, + 20737 - 19968: jis0208<<14 | 0x30<<7 | 0x0D, + 20738 - 19968: jis0208<<14 | 0x30<<7 | 0x0E, + 20739 - 19968: jis0212<<14 | 0x11<<7 | 0x28, + 20740 - 19968: jis0208<<14 | 0x11<<7 | 0x0E, + 20742 - 19968: jis0212<<14 | 0x11<<7 | 0x29, + 20743 - 19968: jis0212<<14 | 0x11<<7 | 0x2A, + 20744 - 19968: jis0212<<14 | 0x11<<7 | 0x2B, + 20745 - 19968: jis0208<<14 | 0x30<<7 | 0x0C, + 20747 - 19968: jis0212<<14 | 0x11<<7 | 0x2C, + 20748 - 19968: jis0212<<14 | 0x11<<7 | 0x2D, + 20749 - 19968: jis0212<<14 | 0x11<<7 | 0x2E, + 20750 - 19968: jis0212<<14 | 0x11<<7 | 0x2F, + 20752 - 19968: jis0212<<14 | 0x11<<7 | 0x31, + 20754 - 19968: jis0208<<14 | 0x1B<<7 | 0x53, + 20756 - 19968: jis0208<<14 | 0x30<<7 | 0x11, + 20757 - 19968: jis0208<<14 | 0x30<<7 | 0x10, + 20758 - 19968: jis0208<<14 | 0x30<<7 | 0x0F, + 20759 - 19968: jis0212<<14 | 0x11<<7 | 0x32, + 20760 - 19968: jis0208<<14 | 0x2F<<7 | 0x35, + 20761 - 19968: jis0212<<14 | 0x11<<7 | 0x33, + 20762 - 19968: jis0208<<14 | 0x30<<7 | 0x12, + 20763 - 19968: jis0212<<14 | 0x11<<7 | 0x34, + 20764 - 19968: jis0212<<14 | 0x11<<7 | 0x35, + 20765 - 19968: jis0212<<14 | 0x11<<7 | 0x36, + 20766 - 19968: jis0212<<14 | 0x11<<7 | 0x37, + 20767 - 19968: jis0208<<14 | 0x1C<<7 | 0x5D, + 20769 - 19968: jis0208<<14 | 0x30<<7 | 0x13, + 20771 - 19968: jis0212<<14 | 0x11<<7 | 0x38, + 20775 - 19968: jis0212<<14 | 0x11<<7 | 0x39, + 20776 - 19968: jis0212<<14 | 0x11<<7 | 0x3A, + 20778 - 19968: jis0208<<14 | 0x2C<<7 | 0x04, + 20780 - 19968: jis0212<<14 | 0x11<<7 | 0x3B, + 20781 - 19968: jis0212<<14 | 0x11<<7 | 0x3C, + 20783 - 19968: jis0212<<14 | 0x11<<7 | 0x3D, + 20785 - 19968: jis0212<<14 | 0x11<<7 | 0x3E, + 20786 - 19968: jis0208<<14 | 0x2B<<7 | 0x38, + 20787 - 19968: jis0212<<14 | 0x11<<7 | 0x3F, + 20788 - 19968: jis0212<<14 | 0x11<<7 | 0x40, + 20789 - 19968: jis0212<<14 | 0x11<<7 | 0x41, + 20791 - 19968: jis0208<<14 | 0x30<<7 | 0x15, + 20792 - 19968: jis0212<<14 | 0x11<<7 | 0x42, + 20793 - 19968: jis0212<<14 | 0x11<<7 | 0x43, + 20794 - 19968: jis0208<<14 | 0x30<<7 | 0x14, + 20795 - 19968: jis0208<<14 | 0x30<<7 | 0x17, + 20796 - 19968: jis0208<<14 | 0x30<<7 | 0x16, + 20799 - 19968: jis0208<<14 | 0x30<<7 | 0x18, + 20800 - 19968: jis0208<<14 | 0x30<<7 | 0x19, + 20801 - 19968: jis0208<<14 | 0x0F<<7 | 0x53, + 20802 - 19968: jis0212<<14 | 0x11<<7 | 0x44, + 20803 - 19968: jis0208<<14 | 0x17<<7 | 0x14, + 20804 - 19968: jis0208<<14 | 0x16<<7 | 0x1A, + 20805 - 19968: jis0208<<14 | 0x1C<<7 | 0x1B, + 20806 - 19968: jis0208<<14 | 0x22<<7 | 0x5A, + 20807 - 19968: jis0208<<14 | 0x15<<7 | 0x03, + 20808 - 19968: jis0208<<14 | 0x1F<<7 | 0x47, + 20809 - 19968: jis0208<<14 | 0x17<<7 | 0x56, + 20810 - 19968: jis0208<<14 | 0x58<<7 | 0x22, + 20811 - 19968: jis0208<<14 | 0x18<<7 | 0x4D, + 20812 - 19968: jis0208<<14 | 0x30<<7 | 0x1B, + 20813 - 19968: jis0208<<14 | 0x2B<<7 | 0x27, + 20814 - 19968: jis0208<<14 | 0x24<<7 | 0x25, + 20815 - 19968: jis0212<<14 | 0x11<<7 | 0x46, + 20816 - 19968: jis0208<<14 | 0x1A<<7 | 0x58, + 20818 - 19968: jis0208<<14 | 0x30<<7 | 0x1A, + 20819 - 19968: jis0212<<14 | 0x11<<7 | 0x47, + 20820 - 19968: jis0208<<14 | 0x30<<7 | 0x1C, + 20821 - 19968: jis0212<<14 | 0x11<<7 | 0x48, + 20823 - 19968: jis0212<<14 | 0x11<<7 | 0x49, + 20824 - 19968: jis0212<<14 | 0x11<<7 | 0x4A, + 20826 - 19968: jis0208<<14 | 0x24<<7 | 0x3D, + 20828 - 19968: jis0208<<14 | 0x12<<7 | 0x54, + 20831 - 19968: jis0212<<14 | 0x11<<7 | 0x4B, + 20834 - 19968: jis0208<<14 | 0x30<<7 | 0x1D, + 20836 - 19968: jis0208<<14 | 0x58<<7 | 0x23, + 20837 - 19968: jis0208<<14 | 0x25<<7 | 0x5D, + 20838 - 19968: jis0212<<14 | 0x11<<7 | 0x4D, + 20840 - 19968: jis0208<<14 | 0x20<<7 | 0x13, + 20841 - 19968: jis0208<<14 | 0x30<<7 | 0x1F, + 20842 - 19968: jis0208<<14 | 0x30<<7 | 0x20, + 20843 - 19968: jis0208<<14 | 0x27<<7 | 0x0B, + 20844 - 19968: jis0208<<14 | 0x17<<7 | 0x57, + 20845 - 19968: jis0208<<14 | 0x2E<<7 | 0x1A, + 20846 - 19968: jis0208<<14 | 0x30<<7 | 0x21, + 20849 - 19968: jis0208<<14 | 0x15<<7 | 0x05, + 20853 - 19968: jis0208<<14 | 0x29<<7 | 0x1B, + 20854 - 19968: jis0208<<14 | 0x21<<7 | 0x15, + 20855 - 19968: jis0208<<14 | 0x15<<7 | 0x50, + 20856 - 19968: jis0208<<14 | 0x24<<7 | 0x14, + 20860 - 19968: jis0208<<14 | 0x16<<7 | 0x52, + 20862 - 19968: jis0212<<14 | 0x11<<7 | 0x4E, + 20864 - 19968: jis0208<<14 | 0x30<<7 | 0x22, + 20866 - 19968: jis0208<<14 | 0x30<<7 | 0x23, + 20867 - 19968: jis0212<<14 | 0x11<<7 | 0x4F, + 20868 - 19968: jis0212<<14 | 0x11<<7 | 0x50, + 20869 - 19968: jis0208<<14 | 0x25<<7 | 0x41, + 20870 - 19968: jis0208<<14 | 0x10<<7 | 0x3E, + 20873 - 19968: jis0208<<14 | 0x30<<7 | 0x26, + 20874 - 19968: jis0208<<14 | 0x19<<7 | 0x5C, + 20875 - 19968: jis0212<<14 | 0x11<<7 | 0x51, + 20876 - 19968: jis0208<<14 | 0x30<<7 | 0x25, + 20877 - 19968: jis0208<<14 | 0x19<<7 | 0x25, + 20878 - 19968: jis0212<<14 | 0x11<<7 | 0x52, + 20879 - 19968: jis0208<<14 | 0x30<<7 | 0x27, + 20880 - 19968: jis0208<<14 | 0x45<<7 | 0x4D, + 20881 - 19968: jis0208<<14 | 0x30<<7 | 0x28, + 20882 - 19968: jis0208<<14 | 0x2A<<7 | 0x20, + 20883 - 19968: jis0208<<14 | 0x30<<7 | 0x29, + 20885 - 19968: jis0208<<14 | 0x30<<7 | 0x2A, + 20886 - 19968: jis0208<<14 | 0x30<<7 | 0x2B, + 20887 - 19968: jis0208<<14 | 0x1D<<7 | 0x48, + 20888 - 19968: jis0212<<14 | 0x11<<7 | 0x53, + 20889 - 19968: jis0208<<14 | 0x1B<<7 | 0x2B, + 20893 - 19968: jis0208<<14 | 0x58<<7 | 0x24, + 20896 - 19968: jis0208<<14 | 0x13<<7 | 0x06, + 20897 - 19968: jis0212<<14 | 0x11<<7 | 0x55, + 20898 - 19968: jis0208<<14 | 0x30<<7 | 0x2E, + 20899 - 19968: jis0212<<14 | 0x11<<7 | 0x56, + 20900 - 19968: jis0208<<14 | 0x30<<7 | 0x2C, + 20901 - 19968: jis0208<<14 | 0x2B<<7 | 0x1C, + 20902 - 19968: jis0208<<14 | 0x30<<7 | 0x2D, + 20904 - 19968: jis0208<<14 | 0x28<<7 | 0x39, + 20905 - 19968: jis0208<<14 | 0x30<<7 | 0x2F, + 20906 - 19968: jis0208<<14 | 0x30<<7 | 0x30, + 20907 - 19968: jis0208<<14 | 0x30<<7 | 0x31, + 20908 - 19968: jis0208<<14 | 0x24<<7 | 0x3E, + 20909 - 19968: jis0212<<14 | 0x11<<7 | 0x57, + 20912 - 19968: jis0208<<14 | 0x30<<7 | 0x35, + 20913 - 19968: jis0208<<14 | 0x30<<7 | 0x33, + 20914 - 19968: jis0208<<14 | 0x30<<7 | 0x34, + 20915 - 19968: jis0208<<14 | 0x30<<7 | 0x32, + 20916 - 19968: jis0208<<14 | 0x19<<7 | 0x42, + 20917 - 19968: jis0208<<14 | 0x30<<7 | 0x36, + 20918 - 19968: jis0208<<14 | 0x2B<<7 | 0x49, + 20919 - 19968: jis0208<<14 | 0x2D<<7 | 0x43, + 20920 - 19968: jis0212<<14 | 0x11<<7 | 0x58, + 20922 - 19968: jis0212<<14 | 0x11<<7 | 0x59, + 20924 - 19968: jis0212<<14 | 0x11<<7 | 0x5A, + 20925 - 19968: jis0208<<14 | 0x30<<7 | 0x37, + 20926 - 19968: jis0208<<14 | 0x58<<7 | 0x25, + 20927 - 19968: jis0212<<14 | 0x11<<7 | 0x5C, + 20930 - 19968: jis0212<<14 | 0x11<<7 | 0x5D, + 20932 - 19968: jis0208<<14 | 0x1F<<7 | 0x07, + 20933 - 19968: jis0208<<14 | 0x30<<7 | 0x38, + 20934 - 19968: jis0208<<14 | 0x1C<<7 | 0x39, + 20936 - 19968: jis0212<<14 | 0x12<<7 | 0x00, + 20937 - 19968: jis0208<<14 | 0x30<<7 | 0x39, + 20939 - 19968: jis0208<<14 | 0x22<<7 | 0x5B, + 20940 - 19968: jis0208<<14 | 0x2D<<7 | 0x1E, + 20941 - 19968: jis0208<<14 | 0x24<<7 | 0x3F, + 20943 - 19968: jis0212<<14 | 0x12<<7 | 0x01, + 20945 - 19968: jis0212<<14 | 0x12<<7 | 0x02, + 20946 - 19968: jis0212<<14 | 0x12<<7 | 0x03, + 20947 - 19968: jis0212<<14 | 0x12<<7 | 0x04, + 20949 - 19968: jis0212<<14 | 0x12<<7 | 0x05, + 20950 - 19968: jis0208<<14 | 0x31<<7 | 0x24, + 20952 - 19968: jis0212<<14 | 0x12<<7 | 0x06, + 20955 - 19968: jis0208<<14 | 0x30<<7 | 0x3A, + 20956 - 19968: jis0208<<14 | 0x53<<7 | 0x04, + 20957 - 19968: jis0208<<14 | 0x15<<7 | 0x24, + 20958 - 19968: jis0212<<14 | 0x12<<7 | 0x07, + 20960 - 19968: jis0208<<14 | 0x30<<7 | 0x3B, + 20961 - 19968: jis0208<<14 | 0x2A<<7 | 0x3D, + 20962 - 19968: jis0212<<14 | 0x12<<7 | 0x08, + 20965 - 19968: jis0212<<14 | 0x12<<7 | 0x09, + 20966 - 19968: jis0208<<14 | 0x1C<<7 | 0x47, + 20967 - 19968: jis0208<<14 | 0x21<<7 | 0x5B, + 20969 - 19968: jis0208<<14 | 0x30<<7 | 0x3D, + 20970 - 19968: jis0208<<14 | 0x25<<7 | 0x43, + 20972 - 19968: jis0208<<14 | 0x58<<7 | 0x26, + 20973 - 19968: jis0208<<14 | 0x30<<7 | 0x3E, + 20974 - 19968: jis0212<<14 | 0x12<<7 | 0x0A, + 20976 - 19968: jis0208<<14 | 0x30<<7 | 0x3F, + 20977 - 19968: jis0208<<14 | 0x12<<7 | 0x0D, + 20978 - 19968: jis0212<<14 | 0x12<<7 | 0x0B, + 20979 - 19968: jis0212<<14 | 0x12<<7 | 0x0C, + 20980 - 19968: jis0212<<14 | 0x12<<7 | 0x0D, + 20981 - 19968: jis0208<<14 | 0x30<<7 | 0x40, + 20982 - 19968: jis0208<<14 | 0x15<<7 | 0x06, + 20983 - 19968: jis0212<<14 | 0x12<<7 | 0x0E, + 20984 - 19968: jis0208<<14 | 0x25<<7 | 0x2B, + 20985 - 19968: jis0208<<14 | 0x10<<7 | 0x59, + 20986 - 19968: jis0208<<14 | 0x1C<<7 | 0x2F, + 20989 - 19968: jis0208<<14 | 0x27<<7 | 0x00, + 20990 - 19968: jis0208<<14 | 0x30<<7 | 0x41, + 20992 - 19968: jis0208<<14 | 0x24<<7 | 0x40, + 20993 - 19968: jis0212<<14 | 0x12<<7 | 0x0F, + 20994 - 19968: jis0212<<14 | 0x12<<7 | 0x10, + 20995 - 19968: jis0208<<14 | 0x1E<<7 | 0x2E, + 20996 - 19968: jis0208<<14 | 0x30<<7 | 0x42, + 20997 - 19968: jis0212<<14 | 0x12<<7 | 0x11, + 20998 - 19968: jis0208<<14 | 0x29<<7 | 0x0B, + 20999 - 19968: jis0208<<14 | 0x1F<<7 | 0x39, + 21000 - 19968: jis0208<<14 | 0x13<<7 | 0x01, + 21002 - 19968: jis0208<<14 | 0x13<<7 | 0x08, + 21003 - 19968: jis0208<<14 | 0x30<<7 | 0x43, + 21006 - 19968: jis0208<<14 | 0x30<<7 | 0x45, + 21009 - 19968: jis0208<<14 | 0x16<<7 | 0x19, + 21010 - 19968: jis0212<<14 | 0x12<<7 | 0x12, + 21011 - 19968: jis0212<<14 | 0x12<<7 | 0x13, + 21012 - 19968: jis0208<<14 | 0x30<<7 | 0x44, + 21013 - 19968: jis0208<<14 | 0x58<<7 | 0x27, + 21014 - 19968: jis0212<<14 | 0x12<<7 | 0x15, + 21015 - 19968: jis0208<<14 | 0x2D<<7 | 0x52, + 21016 - 19968: jis0212<<14 | 0x12<<7 | 0x16, + 21021 - 19968: jis0208<<14 | 0x1C<<7 | 0x48, + 21026 - 19968: jis0212<<14 | 0x12<<7 | 0x17, + 21028 - 19968: jis0208<<14 | 0x27<<7 | 0x1C, + 21029 - 19968: jis0208<<14 | 0x29<<7 | 0x2B, + 21031 - 19968: jis0208<<14 | 0x30<<7 | 0x46, + 21032 - 19968: jis0212<<14 | 0x12<<7 | 0x18, + 21033 - 19968: jis0208<<14 | 0x2C<<7 | 0x57, + 21034 - 19968: jis0208<<14 | 0x30<<7 | 0x47, + 21038 - 19968: jis0208<<14 | 0x30<<7 | 0x48, + 21040 - 19968: jis0208<<14 | 0x24<<7 | 0x5D, + 21041 - 19968: jis0212<<14 | 0x12<<7 | 0x19, + 21042 - 19968: jis0212<<14 | 0x12<<7 | 0x1A, + 21043 - 19968: jis0208<<14 | 0x30<<7 | 0x49, + 21045 - 19968: jis0212<<14 | 0x12<<7 | 0x1B, + 21046 - 19968: jis0208<<14 | 0x1F<<7 | 0x08, + 21047 - 19968: jis0208<<14 | 0x19<<7 | 0x5D, + 21048 - 19968: jis0208<<14 | 0x16<<7 | 0x53, + 21049 - 19968: jis0208<<14 | 0x30<<7 | 0x4A, + 21050 - 19968: jis0208<<14 | 0x1A<<7 | 0x28, + 21051 - 19968: jis0208<<14 | 0x18<<7 | 0x4E, + 21052 - 19968: jis0212<<14 | 0x12<<7 | 0x1C, + 21059 - 19968: jis0208<<14 | 0x23<<7 | 0x45, + 21060 - 19968: jis0208<<14 | 0x30<<7 | 0x4C, + 21061 - 19968: jis0212<<14 | 0x12<<7 | 0x1D, + 21063 - 19968: jis0208<<14 | 0x21<<7 | 0x06, + 21065 - 19968: jis0212<<14 | 0x12<<7 | 0x1E, + 21066 - 19968: jis0208<<14 | 0x19<<7 | 0x4E, + 21067 - 19968: jis0208<<14 | 0x30<<7 | 0x4D, + 21068 - 19968: jis0208<<14 | 0x30<<7 | 0x4E, + 21069 - 19968: jis0208<<14 | 0x20<<7 | 0x0F, + 21071 - 19968: jis0208<<14 | 0x30<<7 | 0x4B, + 21076 - 19968: jis0208<<14 | 0x30<<7 | 0x50, + 21077 - 19968: jis0212<<14 | 0x12<<7 | 0x1F, + 21078 - 19968: jis0208<<14 | 0x2A<<7 | 0x15, + 21079 - 19968: jis0212<<14 | 0x12<<7 | 0x20, + 21080 - 19968: jis0212<<14 | 0x12<<7 | 0x21, + 21082 - 19968: jis0212<<14 | 0x12<<7 | 0x22, + 21083 - 19968: jis0208<<14 | 0x18<<7 | 0x43, + 21084 - 19968: jis0212<<14 | 0x12<<7 | 0x23, + 21086 - 19968: jis0208<<14 | 0x30<<7 | 0x4F, + 21087 - 19968: jis0212<<14 | 0x12<<7 | 0x24, + 21088 - 19968: jis0212<<14 | 0x12<<7 | 0x25, + 21089 - 19968: jis0212<<14 | 0x12<<7 | 0x26, + 21091 - 19968: jis0208<<14 | 0x16<<7 | 0x54, + 21092 - 19968: jis0208<<14 | 0x19<<7 | 0x3D, + 21093 - 19968: jis0208<<14 | 0x26<<7 | 0x4C, + 21094 - 19968: jis0212<<14 | 0x12<<7 | 0x27, + 21097 - 19968: jis0208<<14 | 0x30<<7 | 0x53, + 21098 - 19968: jis0208<<14 | 0x30<<7 | 0x51, + 21102 - 19968: jis0212<<14 | 0x12<<7 | 0x28, + 21103 - 19968: jis0208<<14 | 0x28<<7 | 0x5A, + 21104 - 19968: jis0208<<14 | 0x1D<<7 | 0x49, + 21105 - 19968: jis0208<<14 | 0x30<<7 | 0x5A, + 21106 - 19968: jis0208<<14 | 0x12<<7 | 0x43, + 21107 - 19968: jis0208<<14 | 0x30<<7 | 0x54, + 21108 - 19968: jis0208<<14 | 0x30<<7 | 0x52, + 21109 - 19968: jis0208<<14 | 0x20<<7 | 0x2E, + 21111 - 19968: jis0212<<14 | 0x12<<7 | 0x29, + 21112 - 19968: jis0212<<14 | 0x12<<7 | 0x2A, + 21113 - 19968: jis0212<<14 | 0x12<<7 | 0x2B, + 21117 - 19968: jis0208<<14 | 0x30<<7 | 0x56, + 21119 - 19968: jis0208<<14 | 0x30<<7 | 0x55, + 21120 - 19968: jis0212<<14 | 0x12<<7 | 0x2C, + 21122 - 19968: jis0212<<14 | 0x12<<7 | 0x2D, + 21123 - 19968: jis0208<<14 | 0x12<<7 | 0x23, + 21125 - 19968: jis0212<<14 | 0x12<<7 | 0x2E, + 21127 - 19968: jis0208<<14 | 0x16<<7 | 0x3F, + 21128 - 19968: jis0208<<14 | 0x30<<7 | 0x5B, + 21129 - 19968: jis0208<<14 | 0x2D<<7 | 0x0C, + 21130 - 19968: jis0212<<14 | 0x12<<7 | 0x2F, + 21132 - 19968: jis0212<<14 | 0x12<<7 | 0x30, + 21133 - 19968: jis0208<<14 | 0x30<<7 | 0x57, + 21137 - 19968: jis0208<<14 | 0x30<<7 | 0x5C, + 21138 - 19968: jis0208<<14 | 0x30<<7 | 0x59, + 21139 - 19968: jis0212<<14 | 0x12<<7 | 0x31, + 21140 - 19968: jis0208<<14 | 0x30<<7 | 0x58, + 21141 - 19968: jis0212<<14 | 0x12<<7 | 0x32, + 21142 - 19968: jis0212<<14 | 0x12<<7 | 0x33, + 21143 - 19968: jis0212<<14 | 0x12<<7 | 0x34, + 21144 - 19968: jis0212<<14 | 0x12<<7 | 0x35, + 21146 - 19968: jis0212<<14 | 0x12<<7 | 0x36, + 21147 - 19968: jis0208<<14 | 0x2D<<7 | 0x2E, + 21148 - 19968: jis0208<<14 | 0x58<<7 | 0x28, + 21151 - 19968: jis0208<<14 | 0x17<<7 | 0x58, + 21152 - 19968: jis0208<<14 | 0x11<<7 | 0x22, + 21155 - 19968: jis0208<<14 | 0x2D<<7 | 0x53, + 21156 - 19968: jis0212<<14 | 0x12<<7 | 0x38, + 21157 - 19968: jis0212<<14 | 0x12<<7 | 0x39, + 21158 - 19968: jis0208<<14 | 0x58<<7 | 0x29, + 21159 - 19968: jis0212<<14 | 0x12<<7 | 0x3B, + 21161 - 19968: jis0208<<14 | 0x1C<<7 | 0x54, + 21162 - 19968: jis0208<<14 | 0x24<<7 | 0x37, + 21163 - 19968: jis0208<<14 | 0x18<<7 | 0x44, + 21164 - 19968: jis0208<<14 | 0x31<<7 | 0x01, + 21165 - 19968: jis0208<<14 | 0x31<<7 | 0x02, + 21167 - 19968: jis0208<<14 | 0x5A<<7 | 0x1B, + 21168 - 19968: jis0212<<14 | 0x12<<7 | 0x3D, + 21169 - 19968: jis0208<<14 | 0x2D<<7 | 0x44, + 21172 - 19968: jis0208<<14 | 0x2E<<7 | 0x0A, + 21173 - 19968: jis0208<<14 | 0x31<<7 | 0x04, + 21174 - 19968: jis0212<<14 | 0x12<<7 | 0x3E, + 21175 - 19968: jis0212<<14 | 0x12<<7 | 0x3F, + 21176 - 19968: jis0212<<14 | 0x12<<7 | 0x40, + 21177 - 19968: jis0208<<14 | 0x17<<7 | 0x59, + 21178 - 19968: jis0212<<14 | 0x12<<7 | 0x41, + 21179 - 19968: jis0212<<14 | 0x12<<7 | 0x42, + 21180 - 19968: jis0208<<14 | 0x31<<7 | 0x03, + 21181 - 19968: jis0212<<14 | 0x12<<7 | 0x43, + 21182 - 19968: jis0208<<14 | 0x12<<7 | 0x0E, + 21184 - 19968: jis0208<<14 | 0x58<<7 | 0x2A, + 21185 - 19968: jis0208<<14 | 0x31<<7 | 0x05, + 21187 - 19968: jis0208<<14 | 0x2A<<7 | 0x35, + 21188 - 19968: jis0212<<14 | 0x12<<7 | 0x45, + 21189 - 19968: jis0208<<14 | 0x23<<7 | 0x1B, + 21190 - 19968: jis0212<<14 | 0x12<<7 | 0x46, + 21191 - 19968: jis0208<<14 | 0x2C<<7 | 0x05, + 21192 - 19968: jis0212<<14 | 0x12<<7 | 0x47, + 21193 - 19968: jis0208<<14 | 0x29<<7 | 0x38, + 21196 - 19968: jis0212<<14 | 0x12<<7 | 0x48, + 21197 - 19968: jis0208<<14 | 0x31<<7 | 0x06, + 21199 - 19968: jis0212<<14 | 0x12<<7 | 0x49, + 21201 - 19968: jis0212<<14 | 0x12<<7 | 0x4A, + 21202 - 19968: jis0208<<14 | 0x4F<<7 | 0x34, + 21204 - 19968: jis0212<<14 | 0x12<<7 | 0x4B, + 21205 - 19968: jis0208<<14 | 0x25<<7 | 0x0F, + 21206 - 19968: jis0212<<14 | 0x12<<7 | 0x4C, + 21207 - 19968: jis0208<<14 | 0x31<<7 | 0x07, + 21208 - 19968: jis0208<<14 | 0x13<<7 | 0x09, + 21209 - 19968: jis0208<<14 | 0x2B<<7 | 0x12, + 21211 - 19968: jis0208<<14 | 0x58<<7 | 0x2B, + 21212 - 19968: jis0212<<14 | 0x12<<7 | 0x4E, + 21213 - 19968: jis0208<<14 | 0x1D<<7 | 0x00, + 21214 - 19968: jis0208<<14 | 0x31<<7 | 0x08, + 21215 - 19968: jis0208<<14 | 0x29<<7 | 0x46, + 21216 - 19968: jis0208<<14 | 0x31<<7 | 0x0C, + 21217 - 19968: jis0212<<14 | 0x12<<7 | 0x4F, + 21218 - 19968: jis0208<<14 | 0x1F<<7 | 0x09, + 21219 - 19968: jis0208<<14 | 0x31<<7 | 0x09, + 21220 - 19968: jis0208<<14 | 0x15<<7 | 0x2F, + 21221 - 19968: jis0212<<14 | 0x12<<7 | 0x50, + 21222 - 19968: jis0208<<14 | 0x31<<7 | 0x0A, + 21223 - 19968: jis0208<<14 | 0x13<<7 | 0x0A, + 21224 - 19968: jis0212<<14 | 0x12<<7 | 0x51, + 21225 - 19968: jis0212<<14 | 0x12<<7 | 0x52, + 21226 - 19968: jis0212<<14 | 0x12<<7 | 0x53, + 21228 - 19968: jis0212<<14 | 0x12<<7 | 0x54, + 21232 - 19968: jis0212<<14 | 0x12<<7 | 0x55, + 21233 - 19968: jis0212<<14 | 0x12<<7 | 0x56, + 21234 - 19968: jis0208<<14 | 0x16<<7 | 0x0D, + 21235 - 19968: jis0208<<14 | 0x31<<7 | 0x0D, + 21236 - 19968: jis0212<<14 | 0x12<<7 | 0x57, + 21237 - 19968: jis0208<<14 | 0x31<<7 | 0x0E, + 21238 - 19968: jis0212<<14 | 0x12<<7 | 0x58, + 21239 - 19968: jis0212<<14 | 0x12<<7 | 0x59, + 21240 - 19968: jis0208<<14 | 0x31<<7 | 0x0F, + 21241 - 19968: jis0208<<14 | 0x31<<7 | 0x10, + 21242 - 19968: jis0208<<14 | 0x1B<<7 | 0x3A, + 21246 - 19968: jis0208<<14 | 0x17<<7 | 0x5A, + 21247 - 19968: jis0208<<14 | 0x2B<<7 | 0x3D, + 21248 - 19968: jis0208<<14 | 0x58<<7 | 0x2C, + 21249 - 19968: jis0208<<14 | 0x2B<<7 | 0x47, + 21250 - 19968: jis0208<<14 | 0x25<<7 | 0x56, + 21251 - 19968: jis0212<<14 | 0x12<<7 | 0x5B, + 21253 - 19968: jis0208<<14 | 0x29<<7 | 0x50, + 21254 - 19968: jis0208<<14 | 0x31<<7 | 0x11, + 21255 - 19968: jis0208<<14 | 0x58<<7 | 0x2D, + 21256 - 19968: jis0208<<14 | 0x31<<7 | 0x12, + 21258 - 19968: jis0212<<14 | 0x12<<7 | 0x5C, + 21259 - 19968: jis0212<<14 | 0x12<<7 | 0x5D, + 21260 - 19968: jis0212<<14 | 0x13<<7 | 0x00, + 21261 - 19968: jis0208<<14 | 0x31<<7 | 0x14, + 21263 - 19968: jis0208<<14 | 0x31<<7 | 0x16, + 21264 - 19968: jis0208<<14 | 0x31<<7 | 0x15, + 21265 - 19968: jis0212<<14 | 0x13<<7 | 0x01, + 21267 - 19968: jis0212<<14 | 0x13<<7 | 0x02, + 21269 - 19968: jis0208<<14 | 0x31<<7 | 0x17, + 21270 - 19968: jis0208<<14 | 0x11<<7 | 0x1C, + 21271 - 19968: jis0208<<14 | 0x2A<<7 | 0x2B, + 21272 - 19968: jis0212<<14 | 0x13<<7 | 0x03, + 21273 - 19968: jis0208<<14 | 0x19<<7 | 0x5B, + 21274 - 19968: jis0208<<14 | 0x31<<7 | 0x18, + 21275 - 19968: jis0212<<14 | 0x13<<7 | 0x04, + 21276 - 19968: jis0212<<14 | 0x13<<7 | 0x05, + 21277 - 19968: jis0208<<14 | 0x20<<7 | 0x38, + 21278 - 19968: jis0212<<14 | 0x13<<7 | 0x06, + 21279 - 19968: jis0212<<14 | 0x13<<7 | 0x07, + 21280 - 19968: jis0208<<14 | 0x1D<<7 | 0x01, + 21281 - 19968: jis0208<<14 | 0x15<<7 | 0x08, + 21283 - 19968: jis0208<<14 | 0x31<<7 | 0x19, + 21284 - 19968: jis0208<<14 | 0x58<<7 | 0x2E, + 21285 - 19968: jis0212<<14 | 0x13<<7 | 0x08, + 21287 - 19968: jis0212<<14 | 0x13<<7 | 0x09, + 21288 - 19968: jis0212<<14 | 0x13<<7 | 0x0A, + 21289 - 19968: jis0212<<14 | 0x13<<7 | 0x0B, + 21290 - 19968: jis0208<<14 | 0x27<<7 | 0x3A, + 21291 - 19968: jis0212<<14 | 0x13<<7 | 0x0C, + 21292 - 19968: jis0212<<14 | 0x13<<7 | 0x0D, + 21293 - 19968: jis0212<<14 | 0x13<<7 | 0x0E, + 21295 - 19968: jis0208<<14 | 0x31<<7 | 0x1A, + 21296 - 19968: jis0212<<14 | 0x13<<7 | 0x0F, + 21297 - 19968: jis0208<<14 | 0x31<<7 | 0x1B, + 21298 - 19968: jis0212<<14 | 0x13<<7 | 0x10, + 21299 - 19968: jis0208<<14 | 0x31<<7 | 0x1C, + 21301 - 19968: jis0212<<14 | 0x13<<7 | 0x11, + 21304 - 19968: jis0208<<14 | 0x31<<7 | 0x1D, + 21305 - 19968: jis0208<<14 | 0x28<<7 | 0x03, + 21306 - 19968: jis0208<<14 | 0x15<<7 | 0x47, + 21307 - 19968: jis0208<<14 | 0x0F<<7 | 0x44, + 21308 - 19968: jis0212<<14 | 0x13<<7 | 0x12, + 21309 - 19968: jis0212<<14 | 0x13<<7 | 0x13, + 21310 - 19968: jis0212<<14 | 0x13<<7 | 0x14, + 21311 - 19968: jis0208<<14 | 0x25<<7 | 0x1E, + 21312 - 19968: jis0208<<14 | 0x31<<7 | 0x1E, + 21313 - 19968: jis0208<<14 | 0x1C<<7 | 0x1C, + 21314 - 19968: jis0212<<14 | 0x13<<7 | 0x15, + 21315 - 19968: jis0208<<14 | 0x1F<<7 | 0x48, + 21317 - 19968: jis0208<<14 | 0x31<<7 | 0x20, + 21318 - 19968: jis0208<<14 | 0x31<<7 | 0x1F, + 21319 - 19968: jis0208<<14 | 0x1D<<7 | 0x02, + 21320 - 19968: jis0208<<14 | 0x17<<7 | 0x40, + 21321 - 19968: jis0208<<14 | 0x31<<7 | 0x22, + 21322 - 19968: jis0208<<14 | 0x27<<7 | 0x1D, + 21323 - 19968: jis0212<<14 | 0x13<<7 | 0x17, + 21324 - 19968: jis0212<<14 | 0x13<<7 | 0x16, + 21325 - 19968: jis0208<<14 | 0x31<<7 | 0x23, + 21329 - 19968: jis0208<<14 | 0x27<<7 | 0x3B, + 21330 - 19968: jis0208<<14 | 0x21<<7 | 0x13, + 21331 - 19968: jis0208<<14 | 0x21<<7 | 0x4D, + 21332 - 19968: jis0208<<14 | 0x15<<7 | 0x07, + 21335 - 19968: jis0208<<14 | 0x25<<7 | 0x4D, + 21336 - 19968: jis0208<<14 | 0x22<<7 | 0x10, + 21337 - 19968: jis0212<<14 | 0x13<<7 | 0x18, + 21338 - 19968: jis0208<<14 | 0x26<<7 | 0x4D, + 21339 - 19968: jis0212<<14 | 0x13<<7 | 0x19, + 21340 - 19968: jis0208<<14 | 0x2A<<7 | 0x2D, + 21342 - 19968: jis0208<<14 | 0x31<<7 | 0x25, + 21344 - 19968: jis0208<<14 | 0x1F<<7 | 0x49, + 21345 - 19968: jis0212<<14 | 0x13<<7 | 0x1A, + 21347 - 19968: jis0212<<14 | 0x13<<7 | 0x1B, + 21349 - 19968: jis0212<<14 | 0x13<<7 | 0x1C, + 21350 - 19968: jis0208<<14 | 0x16<<7 | 0x14, + 21353 - 19968: jis0208<<14 | 0x31<<7 | 0x26, + 21356 - 19968: jis0212<<14 | 0x13<<7 | 0x1D, + 21357 - 19968: jis0212<<14 | 0x13<<7 | 0x1E, + 21358 - 19968: jis0208<<14 | 0x31<<7 | 0x27, + 21359 - 19968: jis0208<<14 | 0x10<<7 | 0x0B, + 21360 - 19968: jis0208<<14 | 0x0F<<7 | 0x54, + 21361 - 19968: jis0208<<14 | 0x13<<7 | 0x4C, + 21362 - 19968: jis0208<<14 | 0x58<<7 | 0x2F, + 21363 - 19968: jis0208<<14 | 0x21<<7 | 0x07, + 21364 - 19968: jis0208<<14 | 0x14<<7 | 0x30, + 21365 - 19968: jis0208<<14 | 0x2C<<7 | 0x50, + 21367 - 19968: jis0208<<14 | 0x31<<7 | 0x2A, + 21368 - 19968: jis0208<<14 | 0x11<<7 | 0x16, + 21369 - 19968: jis0212<<14 | 0x13<<7 | 0x20, + 21371 - 19968: jis0208<<14 | 0x31<<7 | 0x29, + 21374 - 19968: jis0212<<14 | 0x13<<7 | 0x21, + 21375 - 19968: jis0208<<14 | 0x15<<7 | 0x09, + 21378 - 19968: jis0208<<14 | 0x31<<7 | 0x2B, + 21379 - 19968: jis0212<<14 | 0x13<<7 | 0x22, + 21380 - 19968: jis0208<<14 | 0x2B<<7 | 0x50, + 21383 - 19968: jis0212<<14 | 0x13<<7 | 0x23, + 21384 - 19968: jis0212<<14 | 0x13<<7 | 0x24, + 21390 - 19968: jis0212<<14 | 0x13<<7 | 0x25, + 21395 - 19968: jis0208<<14 | 0x58<<7 | 0x30, + 21396 - 19968: jis0212<<14 | 0x13<<7 | 0x27, + 21398 - 19968: jis0208<<14 | 0x31<<7 | 0x2C, + 21400 - 19968: jis0208<<14 | 0x2D<<7 | 0x31, + 21401 - 19968: jis0212<<14 | 0x13<<7 | 0x28, + 21402 - 19968: jis0208<<14 | 0x17<<7 | 0x5B, + 21405 - 19968: jis0212<<14 | 0x13<<7 | 0x29, + 21407 - 19968: jis0208<<14 | 0x17<<7 | 0x15, + 21408 - 19968: jis0208<<14 | 0x31<<7 | 0x2D, + 21409 - 19968: jis0212<<14 | 0x13<<7 | 0x2A, + 21412 - 19968: jis0212<<14 | 0x13<<7 | 0x2B, + 21413 - 19968: jis0208<<14 | 0x31<<7 | 0x2F, + 21414 - 19968: jis0208<<14 | 0x31<<7 | 0x2E, + 21416 - 19968: jis0208<<14 | 0x1E<<7 | 0x3E, + 21417 - 19968: jis0208<<14 | 0x10<<7 | 0x18, + 21418 - 19968: jis0212<<14 | 0x13<<7 | 0x2C, + 21419 - 19968: jis0212<<14 | 0x13<<7 | 0x2D, + 21421 - 19968: jis0208<<14 | 0x10<<7 | 0x3D, + 21422 - 19968: jis0208<<14 | 0x31<<7 | 0x30, + 21423 - 19968: jis0212<<14 | 0x13<<7 | 0x2E, + 21424 - 19968: jis0208<<14 | 0x31<<7 | 0x31, + 21426 - 19968: jis0208<<14 | 0x58<<7 | 0x31, + 21427 - 19968: jis0208<<14 | 0x17<<7 | 0x16, + 21428 - 19968: jis0212<<14 | 0x13<<7 | 0x30, + 21429 - 19968: jis0212<<14 | 0x13<<7 | 0x31, + 21430 - 19968: jis0208<<14 | 0x31<<7 | 0x32, + 21431 - 19968: jis0212<<14 | 0x13<<7 | 0x32, + 21432 - 19968: jis0212<<14 | 0x13<<7 | 0x33, + 21434 - 19968: jis0212<<14 | 0x13<<7 | 0x34, + 21435 - 19968: jis0208<<14 | 0x14<<7 | 0x4D, + 21437 - 19968: jis0212<<14 | 0x13<<7 | 0x35, + 21440 - 19968: jis0212<<14 | 0x13<<7 | 0x36, + 21442 - 19968: jis0208<<14 | 0x1A<<7 | 0x11, + 21443 - 19968: jis0208<<14 | 0x31<<7 | 0x33, + 21445 - 19968: jis0212<<14 | 0x13<<7 | 0x37, + 21448 - 19968: jis0208<<14 | 0x2A<<7 | 0x53, + 21449 - 19968: jis0208<<14 | 0x19<<7 | 0x14, + 21450 - 19968: jis0208<<14 | 0x14<<7 | 0x39, + 21451 - 19968: jis0208<<14 | 0x2C<<7 | 0x06, + 21452 - 19968: jis0208<<14 | 0x20<<7 | 0x2F, + 21453 - 19968: jis0208<<14 | 0x27<<7 | 0x1E, + 21454 - 19968: jis0208<<14 | 0x1B<<7 | 0x5C, + 21455 - 19968: jis0212<<14 | 0x13<<7 | 0x38, + 21458 - 19968: jis0212<<14 | 0x13<<7 | 0x39, + 21459 - 19968: jis0212<<14 | 0x13<<7 | 0x3A, + 21460 - 19968: jis0208<<14 | 0x1C<<7 | 0x26, + 21461 - 19968: jis0212<<14 | 0x13<<7 | 0x3B, + 21462 - 19968: jis0208<<14 | 0x1B<<7 | 0x47, + 21463 - 19968: jis0208<<14 | 0x1B<<7 | 0x54, + 21465 - 19968: jis0208<<14 | 0x1C<<7 | 0x55, + 21466 - 19968: jis0212<<14 | 0x13<<7 | 0x3C, + 21467 - 19968: jis0208<<14 | 0x27<<7 | 0x1F, + 21469 - 19968: jis0208<<14 | 0x58<<7 | 0x32, + 21470 - 19968: jis0212<<14 | 0x13<<7 | 0x3E, + 21471 - 19968: jis0208<<14 | 0x31<<7 | 0x36, + 21472 - 19968: jis0212<<14 | 0x13<<7 | 0x3F, + 21473 - 19968: jis0208<<14 | 0x10<<7 | 0x22, + 21474 - 19968: jis0208<<14 | 0x20<<7 | 0x30, + 21475 - 19968: jis0208<<14 | 0x17<<7 | 0x5C, + 21476 - 19968: jis0208<<14 | 0x17<<7 | 0x24, + 21477 - 19968: jis0208<<14 | 0x15<<7 | 0x46, + 21478 - 19968: jis0212<<14 | 0x13<<7 | 0x40, + 21479 - 19968: jis0212<<14 | 0x13<<7 | 0x41, + 21480 - 19968: jis0208<<14 | 0x31<<7 | 0x3A, + 21481 - 19968: jis0208<<14 | 0x22<<7 | 0x00, + 21482 - 19968: jis0208<<14 | 0x21<<7 | 0x5D, + 21483 - 19968: jis0208<<14 | 0x15<<7 | 0x0A, + 21484 - 19968: jis0208<<14 | 0x1D<<7 | 0x03, + 21485 - 19968: jis0208<<14 | 0x31<<7 | 0x3B, + 21486 - 19968: jis0208<<14 | 0x31<<7 | 0x39, + 21487 - 19968: jis0208<<14 | 0x11<<7 | 0x23, + 21488 - 19968: jis0208<<14 | 0x21<<7 | 0x45, + 21489 - 19968: jis0208<<14 | 0x1B<<7 | 0x17, + 21490 - 19968: jis0208<<14 | 0x1A<<7 | 0x2A, + 21491 - 19968: jis0208<<14 | 0x10<<7 | 0x05, + 21493 - 19968: jis0212<<14 | 0x13<<7 | 0x42, + 21494 - 19968: jis0208<<14 | 0x12<<7 | 0x4F, + 21495 - 19968: jis0208<<14 | 0x18<<7 | 0x45, + 21496 - 19968: jis0208<<14 | 0x1A<<7 | 0x29, + 21498 - 19968: jis0208<<14 | 0x31<<7 | 0x3C, + 21505 - 19968: jis0208<<14 | 0x31<<7 | 0x3D, + 21506 - 19968: jis0212<<14 | 0x13<<7 | 0x43, + 21507 - 19968: jis0208<<14 | 0x14<<7 | 0x28, + 21508 - 19968: jis0208<<14 | 0x12<<7 | 0x25, + 21512 - 19968: jis0208<<14 | 0x18<<7 | 0x46, + 21513 - 19968: jis0208<<14 | 0x14<<7 | 0x27, + 21514 - 19968: jis0208<<14 | 0x23<<7 | 0x3E, + 21515 - 19968: jis0208<<14 | 0x10<<7 | 0x04, + 21516 - 19968: jis0208<<14 | 0x25<<7 | 0x10, + 21517 - 19968: jis0208<<14 | 0x2B<<7 | 0x1D, + 21518 - 19968: jis0208<<14 | 0x18<<7 | 0x00, + 21519 - 19968: jis0208<<14 | 0x2C<<7 | 0x58, + 21520 - 19968: jis0208<<14 | 0x24<<7 | 0x26, + 21521 - 19968: jis0208<<14 | 0x17<<7 | 0x5D, + 21523 - 19968: jis0212<<14 | 0x13<<7 | 0x44, + 21530 - 19968: jis0212<<14 | 0x13<<7 | 0x45, + 21531 - 19968: jis0208<<14 | 0x16<<7 | 0x0E, + 21533 - 19968: jis0208<<14 | 0x31<<7 | 0x46, + 21535 - 19968: jis0208<<14 | 0x15<<7 | 0x42, + 21536 - 19968: jis0208<<14 | 0x2A<<7 | 0x29, + 21537 - 19968: jis0212<<14 | 0x13<<7 | 0x46, + 21542 - 19968: jis0208<<14 | 0x27<<7 | 0x3C, + 21543 - 19968: jis0212<<14 | 0x13<<7 | 0x47, + 21544 - 19968: jis0212<<14 | 0x13<<7 | 0x48, + 21545 - 19968: jis0208<<14 | 0x31<<7 | 0x45, + 21546 - 19968: jis0212<<14 | 0x13<<7 | 0x49, + 21547 - 19968: jis0208<<14 | 0x13<<7 | 0x3D, + 21548 - 19968: jis0208<<14 | 0x31<<7 | 0x40, + 21549 - 19968: jis0208<<14 | 0x31<<7 | 0x41, + 21550 - 19968: jis0208<<14 | 0x31<<7 | 0x43, + 21551 - 19968: jis0212<<14 | 0x13<<7 | 0x4A, + 21553 - 19968: jis0212<<14 | 0x13<<7 | 0x4B, + 21556 - 19968: jis0212<<14 | 0x13<<7 | 0x4C, + 21557 - 19968: jis0212<<14 | 0x13<<7 | 0x4D, + 21558 - 19968: jis0208<<14 | 0x31<<7 | 0x44, + 21560 - 19968: jis0208<<14 | 0x14<<7 | 0x3A, + 21561 - 19968: jis0208<<14 | 0x1E<<7 | 0x40, + 21563 - 19968: jis0208<<14 | 0x29<<7 | 0x0C, + 21564 - 19968: jis0208<<14 | 0x31<<7 | 0x42, + 21565 - 19968: jis0208<<14 | 0x31<<7 | 0x3E, + 21566 - 19968: jis0208<<14 | 0x17<<7 | 0x42, + 21568 - 19968: jis0208<<14 | 0x31<<7 | 0x3F, + 21570 - 19968: jis0208<<14 | 0x2E<<7 | 0x03, + 21571 - 19968: jis0212<<14 | 0x13<<7 | 0x4E, + 21572 - 19968: jis0212<<14 | 0x13<<7 | 0x4F, + 21574 - 19968: jis0208<<14 | 0x29<<7 | 0x51, + 21575 - 19968: jis0212<<14 | 0x13<<7 | 0x50, + 21576 - 19968: jis0208<<14 | 0x23<<7 | 0x47, + 21577 - 19968: jis0208<<14 | 0x17<<7 | 0x41, + 21578 - 19968: jis0208<<14 | 0x18<<7 | 0x4F, + 21581 - 19968: jis0212<<14 | 0x13<<7 | 0x51, + 21582 - 19968: jis0208<<14 | 0x31<<7 | 0x47, + 21583 - 19968: jis0212<<14 | 0x13<<7 | 0x52, + 21585 - 19968: jis0208<<14 | 0x25<<7 | 0x3C, + 21598 - 19968: jis0212<<14 | 0x13<<7 | 0x53, + 21599 - 19968: jis0208<<14 | 0x31<<7 | 0x4B, + 21602 - 19968: jis0212<<14 | 0x13<<7 | 0x54, + 21604 - 19968: jis0212<<14 | 0x13<<7 | 0x55, + 21606 - 19968: jis0212<<14 | 0x13<<7 | 0x56, + 21607 - 19968: jis0212<<14 | 0x13<<7 | 0x57, + 21608 - 19968: jis0208<<14 | 0x1B<<7 | 0x5D, + 21609 - 19968: jis0212<<14 | 0x13<<7 | 0x58, + 21610 - 19968: jis0208<<14 | 0x1B<<7 | 0x55, + 21611 - 19968: jis0212<<14 | 0x13<<7 | 0x59, + 21613 - 19968: jis0212<<14 | 0x13<<7 | 0x5A, + 21614 - 19968: jis0212<<14 | 0x13<<7 | 0x5B, + 21616 - 19968: jis0208<<14 | 0x31<<7 | 0x4E, + 21617 - 19968: jis0208<<14 | 0x31<<7 | 0x4C, + 21619 - 19968: jis0208<<14 | 0x2B<<7 | 0x02, + 21620 - 19968: jis0212<<14 | 0x13<<7 | 0x5C, + 21621 - 19968: jis0208<<14 | 0x31<<7 | 0x49, + 21622 - 19968: jis0208<<14 | 0x31<<7 | 0x52, + 21623 - 19968: jis0208<<14 | 0x31<<7 | 0x4D, + 21627 - 19968: jis0208<<14 | 0x31<<7 | 0x50, + 21628 - 19968: jis0208<<14 | 0x17<<7 | 0x25, + 21629 - 19968: jis0208<<14 | 0x2B<<7 | 0x1E, + 21631 - 19968: jis0212<<14 | 0x13<<7 | 0x5D, + 21632 - 19968: jis0208<<14 | 0x31<<7 | 0x51, + 21633 - 19968: jis0212<<14 | 0x14<<7 | 0x00, + 21635 - 19968: jis0212<<14 | 0x14<<7 | 0x01, + 21636 - 19968: jis0208<<14 | 0x31<<7 | 0x53, + 21637 - 19968: jis0212<<14 | 0x14<<7 | 0x02, + 21638 - 19968: jis0208<<14 | 0x31<<7 | 0x55, + 21640 - 19968: jis0212<<14 | 0x14<<7 | 0x03, + 21641 - 19968: jis0212<<14 | 0x14<<7 | 0x04, + 21642 - 19968: jis0208<<14 | 0x58<<7 | 0x35, + 21643 - 19968: jis0208<<14 | 0x19<<7 | 0x4F, + 21644 - 19968: jis0208<<14 | 0x2E<<7 | 0x21, + 21645 - 19968: jis0212<<14 | 0x14<<7 | 0x05, + 21646 - 19968: jis0208<<14 | 0x31<<7 | 0x4A, + 21647 - 19968: jis0208<<14 | 0x31<<7 | 0x48, + 21648 - 19968: jis0208<<14 | 0x31<<7 | 0x54, + 21649 - 19968: jis0212<<14 | 0x14<<7 | 0x06, + 21650 - 19968: jis0208<<14 | 0x31<<7 | 0x4F, + 21653 - 19968: jis0212<<14 | 0x14<<7 | 0x07, + 21654 - 19968: jis0212<<14 | 0x14<<7 | 0x08, + 21660 - 19968: jis0208<<14 | 0x58<<7 | 0x34, + 21663 - 19968: jis0212<<14 | 0x14<<7 | 0x0A, + 21665 - 19968: jis0212<<14 | 0x14<<7 | 0x0B, + 21666 - 19968: jis0208<<14 | 0x31<<7 | 0x57, + 21668 - 19968: jis0208<<14 | 0x32<<7 | 0x02, + 21669 - 19968: jis0208<<14 | 0x31<<7 | 0x59, + 21670 - 19968: jis0212<<14 | 0x14<<7 | 0x0C, + 21671 - 19968: jis0212<<14 | 0x14<<7 | 0x0D, + 21672 - 19968: jis0208<<14 | 0x31<<7 | 0x5D, + 21673 - 19968: jis0208<<14 | 0x58<<7 | 0x36, + 21674 - 19968: jis0212<<14 | 0x14<<7 | 0x0F, + 21675 - 19968: jis0208<<14 | 0x32<<7 | 0x00, + 21676 - 19968: jis0208<<14 | 0x31<<7 | 0x5A, + 21677 - 19968: jis0212<<14 | 0x14<<7 | 0x10, + 21678 - 19968: jis0212<<14 | 0x14<<7 | 0x11, + 21679 - 19968: jis0208<<14 | 0x32<<7 | 0x1D, + 21681 - 19968: jis0212<<14 | 0x14<<7 | 0x12, + 21682 - 19968: jis0208<<14 | 0x19<<7 | 0x48, + 21683 - 19968: jis0208<<14 | 0x12<<7 | 0x10, + 21687 - 19968: jis0212<<14 | 0x14<<7 | 0x13, + 21688 - 19968: jis0208<<14 | 0x31<<7 | 0x58, + 21689 - 19968: jis0212<<14 | 0x14<<7 | 0x14, + 21690 - 19968: jis0212<<14 | 0x14<<7 | 0x15, + 21691 - 19968: jis0212<<14 | 0x14<<7 | 0x16, + 21692 - 19968: jis0208<<14 | 0x32<<7 | 0x04, + 21693 - 19968: jis0208<<14 | 0x0F<<7 | 0x55, + 21694 - 19968: jis0208<<14 | 0x32<<7 | 0x03, + 21695 - 19968: jis0212<<14 | 0x14<<7 | 0x17, + 21696 - 19968: jis0208<<14 | 0x0F<<7 | 0x04, + 21697 - 19968: jis0208<<14 | 0x28<<7 | 0x29, + 21698 - 19968: jis0208<<14 | 0x32<<7 | 0x01, + 21700 - 19968: jis0208<<14 | 0x31<<7 | 0x5B, + 21702 - 19968: jis0212<<14 | 0x14<<7 | 0x18, + 21703 - 19968: jis0208<<14 | 0x31<<7 | 0x56, + 21704 - 19968: jis0208<<14 | 0x31<<7 | 0x5C, + 21705 - 19968: jis0208<<14 | 0x19<<7 | 0x27, + 21706 - 19968: jis0212<<14 | 0x14<<7 | 0x19, + 21709 - 19968: jis0212<<14 | 0x14<<7 | 0x1A, + 21710 - 19968: jis0212<<14 | 0x14<<7 | 0x1B, + 21720 - 19968: jis0208<<14 | 0x32<<7 | 0x05, + 21728 - 19968: jis0212<<14 | 0x14<<7 | 0x1C, + 21729 - 19968: jis0208<<14 | 0x0F<<7 | 0x56, + 21730 - 19968: jis0208<<14 | 0x32<<7 | 0x0E, + 21733 - 19968: jis0208<<14 | 0x32<<7 | 0x06, + 21734 - 19968: jis0208<<14 | 0x32<<7 | 0x07, + 21736 - 19968: jis0208<<14 | 0x1D<<7 | 0x04, + 21737 - 19968: jis0208<<14 | 0x2A<<7 | 0x48, + 21738 - 19968: jis0212<<14 | 0x14<<7 | 0x1D, + 21740 - 19968: jis0212<<14 | 0x14<<7 | 0x1E, + 21741 - 19968: jis0208<<14 | 0x32<<7 | 0x0C, + 21742 - 19968: jis0208<<14 | 0x32<<7 | 0x0B, + 21743 - 19968: jis0212<<14 | 0x14<<7 | 0x1F, + 21746 - 19968: jis0208<<14 | 0x24<<7 | 0x0E, + 21750 - 19968: jis0212<<14 | 0x14<<7 | 0x20, + 21754 - 19968: jis0208<<14 | 0x32<<7 | 0x0D, + 21756 - 19968: jis0212<<14 | 0x14<<7 | 0x21, + 21757 - 19968: jis0208<<14 | 0x32<<7 | 0x0A, + 21758 - 19968: jis0212<<14 | 0x14<<7 | 0x22, + 21759 - 19968: jis0208<<14 | 0x58<<7 | 0x37, + 21760 - 19968: jis0212<<14 | 0x14<<7 | 0x24, + 21761 - 19968: jis0212<<14 | 0x14<<7 | 0x25, + 21764 - 19968: jis0208<<14 | 0x10<<7 | 0x13, + 21765 - 19968: jis0212<<14 | 0x14<<7 | 0x26, + 21766 - 19968: jis0208<<14 | 0x19<<7 | 0x15, + 21767 - 19968: jis0208<<14 | 0x1E<<7 | 0x0F, + 21768 - 19968: jis0212<<14 | 0x14<<7 | 0x27, + 21769 - 19968: jis0212<<14 | 0x14<<7 | 0x28, + 21772 - 19968: jis0212<<14 | 0x14<<7 | 0x29, + 21773 - 19968: jis0212<<14 | 0x14<<7 | 0x2A, + 21774 - 19968: jis0212<<14 | 0x14<<7 | 0x2B, + 21775 - 19968: jis0208<<14 | 0x32<<7 | 0x08, + 21776 - 19968: jis0208<<14 | 0x24<<7 | 0x41, + 21780 - 19968: jis0208<<14 | 0x32<<7 | 0x09, + 21781 - 19968: jis0212<<14 | 0x14<<7 | 0x2C, + 21782 - 19968: jis0208<<14 | 0x0F<<7 | 0x01, + 21802 - 19968: jis0212<<14 | 0x14<<7 | 0x2D, + 21803 - 19968: jis0212<<14 | 0x14<<7 | 0x2E, + 21806 - 19968: jis0208<<14 | 0x32<<7 | 0x13, + 21807 - 19968: jis0208<<14 | 0x2C<<7 | 0x02, + 21809 - 19968: jis0208<<14 | 0x1D<<7 | 0x06, + 21810 - 19968: jis0212<<14 | 0x14<<7 | 0x2F, + 21811 - 19968: jis0208<<14 | 0x32<<7 | 0x19, + 21813 - 19968: jis0212<<14 | 0x14<<7 | 0x30, + 21814 - 19968: jis0212<<14 | 0x14<<7 | 0x31, + 21816 - 19968: jis0208<<14 | 0x32<<7 | 0x18, + 21817 - 19968: jis0208<<14 | 0x32<<7 | 0x0F, + 21819 - 19968: jis0212<<14 | 0x14<<7 | 0x32, + 21820 - 19968: jis0212<<14 | 0x14<<7 | 0x33, + 21821 - 19968: jis0212<<14 | 0x14<<7 | 0x34, + 21822 - 19968: jis0208<<14 | 0x21<<7 | 0x22, + 21824 - 19968: jis0208<<14 | 0x32<<7 | 0x10, + 21825 - 19968: jis0212<<14 | 0x14<<7 | 0x35, + 21828 - 19968: jis0208<<14 | 0x21<<7 | 0x4E, + 21829 - 19968: jis0208<<14 | 0x32<<7 | 0x15, + 21830 - 19968: jis0208<<14 | 0x1D<<7 | 0x05, + 21831 - 19968: jis0212<<14 | 0x14<<7 | 0x36, + 21833 - 19968: jis0212<<14 | 0x14<<7 | 0x37, + 21834 - 19968: jis0212<<14 | 0x14<<7 | 0x38, + 21836 - 19968: jis0208<<14 | 0x32<<7 | 0x12, + 21837 - 19968: jis0212<<14 | 0x14<<7 | 0x39, + 21839 - 19968: jis0208<<14 | 0x2B<<7 | 0x43, + 21840 - 19968: jis0212<<14 | 0x14<<7 | 0x3A, + 21841 - 19968: jis0212<<14 | 0x14<<7 | 0x3B, + 21843 - 19968: jis0208<<14 | 0x16<<7 | 0x1B, + 21846 - 19968: jis0208<<14 | 0x32<<7 | 0x16, + 21847 - 19968: jis0208<<14 | 0x32<<7 | 0x17, + 21848 - 19968: jis0212<<14 | 0x14<<7 | 0x3C, + 21850 - 19968: jis0212<<14 | 0x14<<7 | 0x3D, + 21851 - 19968: jis0212<<14 | 0x14<<7 | 0x3E, + 21852 - 19968: jis0208<<14 | 0x32<<7 | 0x14, + 21853 - 19968: jis0208<<14 | 0x32<<7 | 0x1A, + 21854 - 19968: jis0212<<14 | 0x14<<7 | 0x3F, + 21856 - 19968: jis0212<<14 | 0x14<<7 | 0x40, + 21857 - 19968: jis0212<<14 | 0x14<<7 | 0x41, + 21859 - 19968: jis0208<<14 | 0x32<<7 | 0x11, + 21860 - 19968: jis0212<<14 | 0x14<<7 | 0x42, + 21862 - 19968: jis0212<<14 | 0x14<<7 | 0x43, + 21883 - 19968: jis0208<<14 | 0x32<<7 | 0x20, + 21884 - 19968: jis0208<<14 | 0x32<<7 | 0x25, + 21886 - 19968: jis0208<<14 | 0x32<<7 | 0x21, + 21887 - 19968: jis0212<<14 | 0x14<<7 | 0x44, + 21888 - 19968: jis0208<<14 | 0x32<<7 | 0x1C, + 21889 - 19968: jis0212<<14 | 0x14<<7 | 0x45, + 21890 - 19968: jis0212<<14 | 0x14<<7 | 0x46, + 21891 - 19968: jis0208<<14 | 0x32<<7 | 0x26, + 21892 - 19968: jis0208<<14 | 0x20<<7 | 0x10, + 21894 - 19968: jis0208<<14 | 0x58<<7 | 0x38, + 21895 - 19968: jis0208<<14 | 0x32<<7 | 0x28, + 21896 - 19968: jis0212<<14 | 0x14<<7 | 0x48, + 21897 - 19968: jis0208<<14 | 0x18<<7 | 0x01, + 21898 - 19968: jis0208<<14 | 0x32<<7 | 0x1E, + 21899 - 19968: jis0208<<14 | 0x22<<7 | 0x5C, + 21902 - 19968: jis0212<<14 | 0x14<<7 | 0x49, + 21903 - 19968: jis0212<<14 | 0x14<<7 | 0x4A, + 21905 - 19968: jis0212<<14 | 0x14<<7 | 0x4B, + 21906 - 19968: jis0212<<14 | 0x14<<7 | 0x4C, + 21907 - 19968: jis0212<<14 | 0x14<<7 | 0x4D, + 21908 - 19968: jis0212<<14 | 0x14<<7 | 0x4E, + 21911 - 19968: jis0212<<14 | 0x14<<7 | 0x4F, + 21912 - 19968: jis0208<<14 | 0x32<<7 | 0x22, + 21913 - 19968: jis0208<<14 | 0x32<<7 | 0x1B, + 21914 - 19968: jis0208<<14 | 0x13<<7 | 0x0C, + 21916 - 19968: jis0208<<14 | 0x13<<7 | 0x4D, + 21917 - 19968: jis0208<<14 | 0x12<<7 | 0x44, + 21918 - 19968: jis0208<<14 | 0x32<<7 | 0x23, + 21919 - 19968: jis0208<<14 | 0x32<<7 | 0x1F, + 21923 - 19968: jis0212<<14 | 0x14<<7 | 0x50, + 21924 - 19968: jis0212<<14 | 0x14<<7 | 0x51, + 21927 - 19968: jis0208<<14 | 0x16<<7 | 0x55, + 21928 - 19968: jis0208<<14 | 0x32<<7 | 0x29, + 21929 - 19968: jis0208<<14 | 0x32<<7 | 0x27, + 21930 - 19968: jis0208<<14 | 0x20<<7 | 0x32, + 21931 - 19968: jis0208<<14 | 0x14<<7 | 0x29, + 21932 - 19968: jis0208<<14 | 0x15<<7 | 0x0B, + 21933 - 19968: jis0212<<14 | 0x14<<7 | 0x52, + 21934 - 19968: jis0208<<14 | 0x32<<7 | 0x24, + 21936 - 19968: jis0208<<14 | 0x15<<7 | 0x53, + 21938 - 19968: jis0212<<14 | 0x14<<7 | 0x53, + 21942 - 19968: jis0208<<14 | 0x10<<7 | 0x23, + 21951 - 19968: jis0212<<14 | 0x14<<7 | 0x54, + 21953 - 19968: jis0212<<14 | 0x14<<7 | 0x55, + 21955 - 19968: jis0212<<14 | 0x14<<7 | 0x56, + 21956 - 19968: jis0208<<14 | 0x32<<7 | 0x2D, + 21957 - 19968: jis0208<<14 | 0x32<<7 | 0x2B, + 21958 - 19968: jis0212<<14 | 0x14<<7 | 0x57, + 21959 - 19968: jis0208<<14 | 0x33<<7 | 0x06, + 21961 - 19968: jis0212<<14 | 0x14<<7 | 0x58, + 21963 - 19968: jis0212<<14 | 0x14<<7 | 0x59, + 21964 - 19968: jis0212<<14 | 0x14<<7 | 0x5A, + 21966 - 19968: jis0212<<14 | 0x14<<7 | 0x5B, + 21969 - 19968: jis0212<<14 | 0x14<<7 | 0x5C, + 21970 - 19968: jis0212<<14 | 0x14<<7 | 0x5D, + 21971 - 19968: jis0212<<14 | 0x15<<7 | 0x00, + 21972 - 19968: jis0208<<14 | 0x32<<7 | 0x30, + 21975 - 19968: jis0212<<14 | 0x15<<7 | 0x01, + 21976 - 19968: jis0212<<14 | 0x15<<7 | 0x02, + 21978 - 19968: jis0208<<14 | 0x32<<7 | 0x2A, + 21979 - 19968: jis0212<<14 | 0x15<<7 | 0x03, + 21980 - 19968: jis0208<<14 | 0x32<<7 | 0x2E, + 21982 - 19968: jis0212<<14 | 0x15<<7 | 0x04, + 21983 - 19968: jis0208<<14 | 0x32<<7 | 0x2C, + 21986 - 19968: jis0212<<14 | 0x15<<7 | 0x05, + 21987 - 19968: jis0208<<14 | 0x1A<<7 | 0x2B, + 21988 - 19968: jis0208<<14 | 0x32<<7 | 0x2F, + 21993 - 19968: jis0212<<14 | 0x15<<7 | 0x06, + 22006 - 19968: jis0212<<14 | 0x15<<7 | 0x07, + 22007 - 19968: jis0208<<14 | 0x32<<7 | 0x32, + 22009 - 19968: jis0208<<14 | 0x32<<7 | 0x37, + 22013 - 19968: jis0208<<14 | 0x32<<7 | 0x35, + 22014 - 19968: jis0208<<14 | 0x32<<7 | 0x34, + 22015 - 19968: jis0212<<14 | 0x15<<7 | 0x08, + 22021 - 19968: jis0212<<14 | 0x15<<7 | 0x09, + 22022 - 19968: jis0208<<14 | 0x22<<7 | 0x11, + 22024 - 19968: jis0212<<14 | 0x15<<7 | 0x0A, + 22025 - 19968: jis0208<<14 | 0x11<<7 | 0x24, + 22026 - 19968: jis0212<<14 | 0x15<<7 | 0x0B, + 22029 - 19968: jis0212<<14 | 0x15<<7 | 0x0C, + 22030 - 19968: jis0212<<14 | 0x15<<7 | 0x0D, + 22031 - 19968: jis0212<<14 | 0x15<<7 | 0x0E, + 22032 - 19968: jis0212<<14 | 0x15<<7 | 0x0F, + 22033 - 19968: jis0212<<14 | 0x15<<7 | 0x10, + 22034 - 19968: jis0212<<14 | 0x15<<7 | 0x11, + 22036 - 19968: jis0208<<14 | 0x32<<7 | 0x31, + 22038 - 19968: jis0208<<14 | 0x32<<7 | 0x33, + 22039 - 19968: jis0208<<14 | 0x1D<<7 | 0x07, + 22040 - 19968: jis0208<<14 | 0x10<<7 | 0x12, + 22041 - 19968: jis0212<<14 | 0x15<<7 | 0x12, + 22043 - 19968: jis0208<<14 | 0x32<<7 | 0x36, + 22057 - 19968: jis0208<<14 | 0x11<<7 | 0x3D, + 22060 - 19968: jis0212<<14 | 0x15<<7 | 0x13, + 22063 - 19968: jis0208<<14 | 0x32<<7 | 0x41, + 22064 - 19968: jis0212<<14 | 0x15<<7 | 0x14, + 22065 - 19968: jis0208<<14 | 0x1D<<7 | 0x5B, + 22066 - 19968: jis0208<<14 | 0x32<<7 | 0x3D, + 22067 - 19968: jis0212<<14 | 0x15<<7 | 0x15, + 22068 - 19968: jis0208<<14 | 0x32<<7 | 0x3B, + 22069 - 19968: jis0212<<14 | 0x15<<7 | 0x16, + 22070 - 19968: jis0208<<14 | 0x32<<7 | 0x3C, + 22071 - 19968: jis0212<<14 | 0x15<<7 | 0x17, + 22072 - 19968: jis0208<<14 | 0x32<<7 | 0x3E, + 22073 - 19968: jis0212<<14 | 0x15<<7 | 0x18, + 22075 - 19968: jis0212<<14 | 0x15<<7 | 0x19, + 22076 - 19968: jis0212<<14 | 0x15<<7 | 0x1A, + 22077 - 19968: jis0212<<14 | 0x15<<7 | 0x1B, + 22079 - 19968: jis0212<<14 | 0x15<<7 | 0x1C, + 22080 - 19968: jis0212<<14 | 0x15<<7 | 0x1D, + 22081 - 19968: jis0212<<14 | 0x15<<7 | 0x1E, + 22082 - 19968: jis0208<<14 | 0x10<<7 | 0x1C, + 22083 - 19968: jis0212<<14 | 0x15<<7 | 0x1F, + 22084 - 19968: jis0212<<14 | 0x15<<7 | 0x20, + 22086 - 19968: jis0212<<14 | 0x15<<7 | 0x21, + 22089 - 19968: jis0212<<14 | 0x15<<7 | 0x22, + 22091 - 19968: jis0212<<14 | 0x15<<7 | 0x23, + 22092 - 19968: jis0208<<14 | 0x20<<7 | 0x18, + 22093 - 19968: jis0212<<14 | 0x15<<7 | 0x24, + 22094 - 19968: jis0208<<14 | 0x32<<7 | 0x38, + 22095 - 19968: jis0212<<14 | 0x15<<7 | 0x25, + 22096 - 19968: jis0208<<14 | 0x32<<7 | 0x39, + 22100 - 19968: jis0212<<14 | 0x15<<7 | 0x26, + 22107 - 19968: jis0208<<14 | 0x12<<7 | 0x59, + 22110 - 19968: jis0212<<14 | 0x15<<7 | 0x27, + 22112 - 19968: jis0212<<14 | 0x15<<7 | 0x28, + 22113 - 19968: jis0212<<14 | 0x15<<7 | 0x29, + 22114 - 19968: jis0212<<14 | 0x15<<7 | 0x2A, + 22115 - 19968: jis0212<<14 | 0x15<<7 | 0x2B, + 22116 - 19968: jis0208<<14 | 0x32<<7 | 0x40, + 22118 - 19968: jis0212<<14 | 0x15<<7 | 0x2C, + 22120 - 19968: jis0208<<14 | 0x13<<7 | 0x4E, + 22121 - 19968: jis0212<<14 | 0x15<<7 | 0x2D, + 22122 - 19968: jis0208<<14 | 0x32<<7 | 0x43, + 22123 - 19968: jis0208<<14 | 0x32<<7 | 0x3F, + 22124 - 19968: jis0208<<14 | 0x32<<7 | 0x42, + 22125 - 19968: jis0212<<14 | 0x15<<7 | 0x2E, + 22127 - 19968: jis0212<<14 | 0x15<<7 | 0x2F, + 22129 - 19968: jis0212<<14 | 0x15<<7 | 0x30, + 22130 - 19968: jis0212<<14 | 0x15<<7 | 0x31, + 22132 - 19968: jis0208<<14 | 0x29<<7 | 0x0D, + 22133 - 19968: jis0212<<14 | 0x15<<7 | 0x32, + 22136 - 19968: jis0208<<14 | 0x25<<7 | 0x34, + 22138 - 19968: jis0208<<14 | 0x27<<7 | 0x17, + 22144 - 19968: jis0208<<14 | 0x32<<7 | 0x45, + 22148 - 19968: jis0212<<14 | 0x15<<7 | 0x33, + 22149 - 19968: jis0212<<14 | 0x15<<7 | 0x34, + 22150 - 19968: jis0208<<14 | 0x32<<7 | 0x44, + 22151 - 19968: jis0208<<14 | 0x12<<7 | 0x24, + 22152 - 19968: jis0212<<14 | 0x15<<7 | 0x35, + 22154 - 19968: jis0208<<14 | 0x32<<7 | 0x46, + 22155 - 19968: jis0212<<14 | 0x15<<7 | 0x36, + 22156 - 19968: jis0212<<14 | 0x15<<7 | 0x37, + 22159 - 19968: jis0208<<14 | 0x32<<7 | 0x49, + 22164 - 19968: jis0208<<14 | 0x32<<7 | 0x48, + 22165 - 19968: jis0212<<14 | 0x15<<7 | 0x38, + 22169 - 19968: jis0212<<14 | 0x15<<7 | 0x39, + 22170 - 19968: jis0212<<14 | 0x15<<7 | 0x3A, + 22173 - 19968: jis0212<<14 | 0x15<<7 | 0x3B, + 22174 - 19968: jis0212<<14 | 0x15<<7 | 0x3C, + 22175 - 19968: jis0212<<14 | 0x15<<7 | 0x3D, + 22176 - 19968: jis0208<<14 | 0x32<<7 | 0x47, + 22178 - 19968: jis0208<<14 | 0x26<<7 | 0x18, + 22181 - 19968: jis0208<<14 | 0x32<<7 | 0x4A, + 22182 - 19968: jis0212<<14 | 0x15<<7 | 0x3E, + 22183 - 19968: jis0212<<14 | 0x15<<7 | 0x3F, + 22184 - 19968: jis0212<<14 | 0x15<<7 | 0x40, + 22185 - 19968: jis0212<<14 | 0x15<<7 | 0x41, + 22187 - 19968: jis0212<<14 | 0x15<<7 | 0x42, + 22188 - 19968: jis0212<<14 | 0x15<<7 | 0x43, + 22189 - 19968: jis0212<<14 | 0x15<<7 | 0x44, + 22190 - 19968: jis0208<<14 | 0x32<<7 | 0x4B, + 22193 - 19968: jis0212<<14 | 0x15<<7 | 0x45, + 22195 - 19968: jis0212<<14 | 0x15<<7 | 0x46, + 22196 - 19968: jis0208<<14 | 0x32<<7 | 0x4D, + 22198 - 19968: jis0208<<14 | 0x32<<7 | 0x4C, + 22199 - 19968: jis0212<<14 | 0x15<<7 | 0x47, + 22204 - 19968: jis0208<<14 | 0x32<<7 | 0x4F, + 22206 - 19968: jis0212<<14 | 0x15<<7 | 0x48, + 22208 - 19968: jis0208<<14 | 0x32<<7 | 0x52, + 22209 - 19968: jis0208<<14 | 0x32<<7 | 0x50, + 22210 - 19968: jis0208<<14 | 0x32<<7 | 0x4E, + 22211 - 19968: jis0208<<14 | 0x32<<7 | 0x51, + 22213 - 19968: jis0212<<14 | 0x15<<7 | 0x49, + 22216 - 19968: jis0208<<14 | 0x32<<7 | 0x53, + 22217 - 19968: jis0212<<14 | 0x15<<7 | 0x4A, + 22218 - 19968: jis0212<<14 | 0x15<<7 | 0x4B, + 22219 - 19968: jis0212<<14 | 0x15<<7 | 0x4C, + 22220 - 19968: jis0212<<14 | 0x15<<7 | 0x4F, + 22221 - 19968: jis0212<<14 | 0x15<<7 | 0x50, + 22222 - 19968: jis0208<<14 | 0x32<<7 | 0x54, + 22223 - 19968: jis0212<<14 | 0x15<<7 | 0x4D, + 22224 - 19968: jis0212<<14 | 0x15<<7 | 0x4E, + 22225 - 19968: jis0208<<14 | 0x32<<7 | 0x55, + 22227 - 19968: jis0208<<14 | 0x32<<7 | 0x56, + 22231 - 19968: jis0208<<14 | 0x32<<7 | 0x57, + 22232 - 19968: jis0208<<14 | 0x30<<7 | 0x24, + 22233 - 19968: jis0212<<14 | 0x15<<7 | 0x51, + 22234 - 19968: jis0208<<14 | 0x1B<<7 | 0x5B, + 22235 - 19968: jis0208<<14 | 0x1A<<7 | 0x2C, + 22236 - 19968: jis0212<<14 | 0x15<<7 | 0x52, + 22237 - 19968: jis0212<<14 | 0x15<<7 | 0x53, + 22238 - 19968: jis0208<<14 | 0x11<<7 | 0x52, + 22239 - 19968: jis0212<<14 | 0x15<<7 | 0x54, + 22240 - 19968: jis0208<<14 | 0x0F<<7 | 0x57, + 22241 - 19968: jis0212<<14 | 0x15<<7 | 0x55, + 22243 - 19968: jis0208<<14 | 0x22<<7 | 0x23, + 22244 - 19968: jis0212<<14 | 0x15<<7 | 0x56, + 22245 - 19968: jis0212<<14 | 0x15<<7 | 0x57, + 22246 - 19968: jis0212<<14 | 0x15<<7 | 0x58, + 22247 - 19968: jis0212<<14 | 0x15<<7 | 0x59, + 22248 - 19968: jis0212<<14 | 0x15<<7 | 0x5A, + 22251 - 19968: jis0212<<14 | 0x15<<7 | 0x5C, + 22253 - 19968: jis0212<<14 | 0x15<<7 | 0x5D, + 22254 - 19968: jis0208<<14 | 0x32<<7 | 0x58, + 22256 - 19968: jis0208<<14 | 0x19<<7 | 0x03, + 22257 - 19968: jis0212<<14 | 0x15<<7 | 0x5B, + 22258 - 19968: jis0208<<14 | 0x0F<<7 | 0x2E, + 22259 - 19968: jis0208<<14 | 0x1E<<7 | 0x3D, + 22262 - 19968: jis0212<<14 | 0x16<<7 | 0x00, + 22263 - 19968: jis0212<<14 | 0x16<<7 | 0x01, + 22265 - 19968: jis0208<<14 | 0x32<<7 | 0x59, + 22266 - 19968: jis0208<<14 | 0x17<<7 | 0x26, + 22269 - 19968: jis0208<<14 | 0x18<<7 | 0x50, + 22271 - 19968: jis0208<<14 | 0x32<<7 | 0x5B, + 22272 - 19968: jis0208<<14 | 0x32<<7 | 0x5A, + 22273 - 19968: jis0212<<14 | 0x16<<7 | 0x02, + 22274 - 19968: jis0212<<14 | 0x16<<7 | 0x03, + 22275 - 19968: jis0208<<14 | 0x29<<7 | 0x3F, + 22276 - 19968: jis0208<<14 | 0x32<<7 | 0x5C, + 22279 - 19968: jis0212<<14 | 0x16<<7 | 0x04, + 22280 - 19968: jis0208<<14 | 0x33<<7 | 0x00, + 22281 - 19968: jis0208<<14 | 0x32<<7 | 0x5D, + 22282 - 19968: jis0212<<14 | 0x16<<7 | 0x05, + 22283 - 19968: jis0208<<14 | 0x33<<7 | 0x01, + 22284 - 19968: jis0212<<14 | 0x16<<7 | 0x06, + 22285 - 19968: jis0208<<14 | 0x33<<7 | 0x02, + 22287 - 19968: jis0208<<14 | 0x16<<7 | 0x56, + 22289 - 19968: jis0212<<14 | 0x16<<7 | 0x07, + 22290 - 19968: jis0208<<14 | 0x10<<7 | 0x3F, + 22291 - 19968: jis0208<<14 | 0x33<<7 | 0x03, + 22293 - 19968: jis0212<<14 | 0x16<<7 | 0x08, + 22294 - 19968: jis0208<<14 | 0x33<<7 | 0x05, + 22296 - 19968: jis0208<<14 | 0x33<<7 | 0x04, + 22298 - 19968: jis0212<<14 | 0x16<<7 | 0x09, + 22299 - 19968: jis0212<<14 | 0x16<<7 | 0x0A, + 22300 - 19968: jis0208<<14 | 0x33<<7 | 0x07, + 22301 - 19968: jis0212<<14 | 0x16<<7 | 0x0B, + 22303 - 19968: jis0208<<14 | 0x24<<7 | 0x39, + 22304 - 19968: jis0212<<14 | 0x16<<7 | 0x0C, + 22306 - 19968: jis0212<<14 | 0x16<<7 | 0x0D, + 22307 - 19968: jis0212<<14 | 0x16<<7 | 0x0E, + 22308 - 19968: jis0212<<14 | 0x16<<7 | 0x0F, + 22309 - 19968: jis0212<<14 | 0x16<<7 | 0x10, + 22310 - 19968: jis0208<<14 | 0x33<<7 | 0x08, + 22311 - 19968: jis0208<<14 | 0x0F<<7 | 0x14, + 22312 - 19968: jis0208<<14 | 0x19<<7 | 0x3E, + 22313 - 19968: jis0212<<14 | 0x16<<7 | 0x11, + 22314 - 19968: jis0212<<14 | 0x16<<7 | 0x12, + 22316 - 19968: jis0212<<14 | 0x16<<7 | 0x13, + 22317 - 19968: jis0208<<14 | 0x16<<7 | 0x1C, + 22318 - 19968: jis0212<<14 | 0x16<<7 | 0x14, + 22319 - 19968: jis0212<<14 | 0x16<<7 | 0x15, + 22320 - 19968: jis0208<<14 | 0x22<<7 | 0x2E, + 22323 - 19968: jis0212<<14 | 0x16<<7 | 0x16, + 22324 - 19968: jis0212<<14 | 0x16<<7 | 0x17, + 22327 - 19968: jis0208<<14 | 0x33<<7 | 0x09, + 22328 - 19968: jis0208<<14 | 0x33<<7 | 0x0A, + 22331 - 19968: jis0208<<14 | 0x33<<7 | 0x0C, + 22333 - 19968: jis0212<<14 | 0x16<<7 | 0x18, + 22334 - 19968: jis0212<<14 | 0x16<<7 | 0x19, + 22335 - 19968: jis0212<<14 | 0x16<<7 | 0x1A, + 22336 - 19968: jis0208<<14 | 0x33<<7 | 0x0D, + 22338 - 19968: jis0208<<14 | 0x19<<7 | 0x43, + 22341 - 19968: jis0212<<14 | 0x16<<7 | 0x1B, + 22342 - 19968: jis0212<<14 | 0x16<<7 | 0x1C, + 22343 - 19968: jis0208<<14 | 0x15<<7 | 0x30, + 22346 - 19968: jis0208<<14 | 0x2A<<7 | 0x16, + 22348 - 19968: jis0212<<14 | 0x16<<7 | 0x1D, + 22349 - 19968: jis0212<<14 | 0x16<<7 | 0x1E, + 22350 - 19968: jis0208<<14 | 0x33<<7 | 0x0B, + 22351 - 19968: jis0208<<14 | 0x33<<7 | 0x0E, + 22352 - 19968: jis0208<<14 | 0x19<<7 | 0x20, + 22353 - 19968: jis0208<<14 | 0x18<<7 | 0x02, + 22354 - 19968: jis0212<<14 | 0x16<<7 | 0x1F, + 22361 - 19968: jis0208<<14 | 0x58<<7 | 0x39, + 22369 - 19968: jis0208<<14 | 0x33<<7 | 0x12, + 22370 - 19968: jis0212<<14 | 0x16<<7 | 0x20, + 22372 - 19968: jis0208<<14 | 0x19<<7 | 0x04, + 22373 - 19968: jis0208<<14 | 0x58<<7 | 0x3A, + 22374 - 19968: jis0208<<14 | 0x22<<7 | 0x12, + 22375 - 19968: jis0212<<14 | 0x16<<7 | 0x22, + 22376 - 19968: jis0212<<14 | 0x16<<7 | 0x23, + 22377 - 19968: jis0208<<14 | 0x33<<7 | 0x0F, + 22378 - 19968: jis0208<<14 | 0x23<<7 | 0x39, + 22379 - 19968: jis0212<<14 | 0x16<<7 | 0x24, + 22381 - 19968: jis0212<<14 | 0x16<<7 | 0x25, + 22382 - 19968: jis0212<<14 | 0x16<<7 | 0x26, + 22383 - 19968: jis0212<<14 | 0x16<<7 | 0x27, + 22384 - 19968: jis0212<<14 | 0x16<<7 | 0x28, + 22385 - 19968: jis0212<<14 | 0x16<<7 | 0x29, + 22387 - 19968: jis0212<<14 | 0x16<<7 | 0x2A, + 22388 - 19968: jis0212<<14 | 0x16<<7 | 0x2B, + 22389 - 19968: jis0212<<14 | 0x16<<7 | 0x2C, + 22391 - 19968: jis0212<<14 | 0x16<<7 | 0x2D, + 22393 - 19968: jis0212<<14 | 0x16<<7 | 0x2E, + 22394 - 19968: jis0212<<14 | 0x16<<7 | 0x2F, + 22395 - 19968: jis0212<<14 | 0x16<<7 | 0x30, + 22396 - 19968: jis0212<<14 | 0x16<<7 | 0x31, + 22398 - 19968: jis0212<<14 | 0x16<<7 | 0x32, + 22399 - 19968: jis0208<<14 | 0x33<<7 | 0x13, + 22401 - 19968: jis0212<<14 | 0x16<<7 | 0x33, + 22402 - 19968: jis0208<<14 | 0x1E<<7 | 0x41, + 22403 - 19968: jis0212<<14 | 0x16<<7 | 0x34, + 22408 - 19968: jis0208<<14 | 0x33<<7 | 0x11, + 22409 - 19968: jis0208<<14 | 0x33<<7 | 0x14, + 22411 - 19968: jis0208<<14 | 0x16<<7 | 0x1E, + 22412 - 19968: jis0212<<14 | 0x16<<7 | 0x35, + 22419 - 19968: jis0208<<14 | 0x33<<7 | 0x15, + 22420 - 19968: jis0212<<14 | 0x16<<7 | 0x36, + 22421 - 19968: jis0212<<14 | 0x16<<7 | 0x3F, + 22423 - 19968: jis0212<<14 | 0x16<<7 | 0x37, + 22425 - 19968: jis0212<<14 | 0x16<<7 | 0x38, + 22426 - 19968: jis0212<<14 | 0x16<<7 | 0x39, + 22428 - 19968: jis0212<<14 | 0x16<<7 | 0x3A, + 22429 - 19968: jis0212<<14 | 0x16<<7 | 0x3B, + 22430 - 19968: jis0212<<14 | 0x16<<7 | 0x3C, + 22431 - 19968: jis0212<<14 | 0x16<<7 | 0x3D, + 22432 - 19968: jis0208<<14 | 0x33<<7 | 0x16, + 22433 - 19968: jis0212<<14 | 0x16<<7 | 0x3E, + 22434 - 19968: jis0208<<14 | 0x18<<7 | 0x03, + 22435 - 19968: jis0208<<14 | 0x12<<7 | 0x1F, + 22436 - 19968: jis0208<<14 | 0x33<<7 | 0x18, + 22439 - 19968: jis0212<<14 | 0x16<<7 | 0x40, + 22440 - 19968: jis0212<<14 | 0x16<<7 | 0x41, + 22441 - 19968: jis0212<<14 | 0x16<<7 | 0x42, + 22442 - 19968: jis0208<<14 | 0x33<<7 | 0x19, + 22444 - 19968: jis0208<<14 | 0x58<<7 | 0x3B, + 22448 - 19968: jis0208<<14 | 0x33<<7 | 0x1A, + 22451 - 19968: jis0208<<14 | 0x33<<7 | 0x17, + 22456 - 19968: jis0212<<14 | 0x16<<7 | 0x44, + 22461 - 19968: jis0212<<14 | 0x16<<7 | 0x45, + 22464 - 19968: jis0208<<14 | 0x33<<7 | 0x10, + 22467 - 19968: jis0208<<14 | 0x33<<7 | 0x1B, + 22470 - 19968: jis0208<<14 | 0x33<<7 | 0x1C, + 22471 - 19968: jis0208<<14 | 0x58<<7 | 0x3D, + 22472 - 19968: jis0208<<14 | 0x58<<7 | 0x3C, + 22475 - 19968: jis0208<<14 | 0x2A<<7 | 0x43, + 22476 - 19968: jis0212<<14 | 0x16<<7 | 0x48, + 22478 - 19968: jis0208<<14 | 0x1D<<7 | 0x4A, + 22479 - 19968: jis0212<<14 | 0x16<<7 | 0x49, + 22482 - 19968: jis0208<<14 | 0x33<<7 | 0x1E, + 22483 - 19968: jis0208<<14 | 0x33<<7 | 0x1F, + 22484 - 19968: jis0208<<14 | 0x33<<7 | 0x1D, + 22485 - 19968: jis0212<<14 | 0x16<<7 | 0x4A, + 22486 - 19968: jis0208<<14 | 0x33<<7 | 0x21, + 22492 - 19968: jis0208<<14 | 0x26<<7 | 0x17, + 22493 - 19968: jis0212<<14 | 0x16<<7 | 0x4B, + 22494 - 19968: jis0212<<14 | 0x16<<7 | 0x4C, + 22495 - 19968: jis0208<<14 | 0x0F<<7 | 0x47, + 22496 - 19968: jis0208<<14 | 0x28<<7 | 0x35, + 22497 - 19968: jis0212<<14 | 0x16<<7 | 0x5D, + 22499 - 19968: jis0208<<14 | 0x33<<7 | 0x22, + 22500 - 19968: jis0212<<14 | 0x16<<7 | 0x4D, + 22502 - 19968: jis0212<<14 | 0x16<<7 | 0x4E, + 22503 - 19968: jis0212<<14 | 0x16<<7 | 0x4F, + 22505 - 19968: jis0212<<14 | 0x16<<7 | 0x50, + 22509 - 19968: jis0212<<14 | 0x16<<7 | 0x51, + 22512 - 19968: jis0212<<14 | 0x16<<7 | 0x52, + 22516 - 19968: jis0208<<14 | 0x1D<<7 | 0x5C, + 22517 - 19968: jis0212<<14 | 0x16<<7 | 0x53, + 22518 - 19968: jis0212<<14 | 0x16<<7 | 0x54, + 22519 - 19968: jis0208<<14 | 0x1B<<7 | 0x18, + 22520 - 19968: jis0212<<14 | 0x16<<7 | 0x55, + 22521 - 19968: jis0208<<14 | 0x26<<7 | 0x3C, + 22522 - 19968: jis0208<<14 | 0x13<<7 | 0x4F, + 22524 - 19968: jis0208<<14 | 0x19<<7 | 0x4A, + 22525 - 19968: jis0212<<14 | 0x16<<7 | 0x56, + 22526 - 19968: jis0212<<14 | 0x16<<7 | 0x57, + 22527 - 19968: jis0212<<14 | 0x16<<7 | 0x58, + 22528 - 19968: jis0208<<14 | 0x2A<<7 | 0x38, + 22530 - 19968: jis0208<<14 | 0x25<<7 | 0x11, + 22531 - 19968: jis0212<<14 | 0x16<<7 | 0x59, + 22532 - 19968: jis0212<<14 | 0x16<<7 | 0x5A, + 22533 - 19968: jis0208<<14 | 0x16<<7 | 0x57, + 22534 - 19968: jis0208<<14 | 0x21<<7 | 0x2E, + 22536 - 19968: jis0212<<14 | 0x16<<7 | 0x5B, + 22537 - 19968: jis0212<<14 | 0x16<<7 | 0x5C, + 22538 - 19968: jis0208<<14 | 0x33<<7 | 0x20, + 22539 - 19968: jis0208<<14 | 0x33<<7 | 0x23, + 22540 - 19968: jis0212<<14 | 0x17<<7 | 0x00, + 22541 - 19968: jis0212<<14 | 0x17<<7 | 0x01, + 22549 - 19968: jis0208<<14 | 0x21<<7 | 0x23, + 22553 - 19968: jis0208<<14 | 0x33<<7 | 0x24, + 22555 - 19968: jis0212<<14 | 0x17<<7 | 0x02, + 22557 - 19968: jis0208<<14 | 0x33<<7 | 0x25, + 22558 - 19968: jis0212<<14 | 0x17<<7 | 0x03, + 22559 - 19968: jis0212<<14 | 0x17<<7 | 0x04, + 22560 - 19968: jis0212<<14 | 0x17<<7 | 0x05, + 22561 - 19968: jis0208<<14 | 0x33<<7 | 0x27, + 22564 - 19968: jis0208<<14 | 0x23<<7 | 0x48, + 22566 - 19968: jis0212<<14 | 0x17<<7 | 0x06, + 22567 - 19968: jis0212<<14 | 0x17<<7 | 0x07, + 22570 - 19968: jis0208<<14 | 0x13<<7 | 0x0D, + 22573 - 19968: jis0212<<14 | 0x17<<7 | 0x08, + 22575 - 19968: jis0208<<14 | 0x53<<7 | 0x00, + 22576 - 19968: jis0208<<14 | 0x10<<7 | 0x40, + 22577 - 19968: jis0208<<14 | 0x29<<7 | 0x52, + 22578 - 19968: jis0212<<14 | 0x17<<7 | 0x09, + 22580 - 19968: jis0208<<14 | 0x1D<<7 | 0x4B, + 22581 - 19968: jis0208<<14 | 0x24<<7 | 0x27, + 22585 - 19968: jis0212<<14 | 0x17<<7 | 0x0A, + 22586 - 19968: jis0208<<14 | 0x19<<7 | 0x45, + 22589 - 19968: jis0208<<14 | 0x33<<7 | 0x2D, + 22591 - 19968: jis0212<<14 | 0x17<<7 | 0x0B, + 22592 - 19968: jis0208<<14 | 0x29<<7 | 0x1C, + 22593 - 19968: jis0208<<14 | 0x2D<<7 | 0x3C, + 22601 - 19968: jis0212<<14 | 0x17<<7 | 0x0C, + 22602 - 19968: jis0208<<14 | 0x11<<7 | 0x53, + 22603 - 19968: jis0208<<14 | 0x33<<7 | 0x29, + 22604 - 19968: jis0212<<14 | 0x17<<7 | 0x0D, + 22605 - 19968: jis0212<<14 | 0x17<<7 | 0x0E, + 22607 - 19968: jis0212<<14 | 0x17<<7 | 0x0F, + 22608 - 19968: jis0212<<14 | 0x17<<7 | 0x10, + 22609 - 19968: jis0208<<14 | 0x20<<7 | 0x19, + 22610 - 19968: jis0208<<14 | 0x33<<7 | 0x2C, + 22612 - 19968: jis0208<<14 | 0x24<<7 | 0x42, + 22613 - 19968: jis0212<<14 | 0x17<<7 | 0x11, + 22615 - 19968: jis0208<<14 | 0x24<<7 | 0x28, + 22616 - 19968: jis0208<<14 | 0x24<<7 | 0x43, + 22617 - 19968: jis0208<<14 | 0x27<<7 | 0x18, + 22618 - 19968: jis0208<<14 | 0x23<<7 | 0x2C, + 22622 - 19968: jis0208<<14 | 0x19<<7 | 0x28, + 22623 - 19968: jis0212<<14 | 0x17<<7 | 0x12, + 22625 - 19968: jis0212<<14 | 0x17<<7 | 0x13, + 22626 - 19968: jis0208<<14 | 0x33<<7 | 0x28, + 22628 - 19968: jis0212<<14 | 0x17<<7 | 0x14, + 22631 - 19968: jis0212<<14 | 0x17<<7 | 0x15, + 22632 - 19968: jis0212<<14 | 0x17<<7 | 0x16, + 22633 - 19968: jis0208<<14 | 0x10<<7 | 0x55, + 22635 - 19968: jis0208<<14 | 0x24<<7 | 0x15, + 22640 - 19968: jis0208<<14 | 0x33<<7 | 0x2A, + 22642 - 19968: jis0208<<14 | 0x33<<7 | 0x26, + 22645 - 19968: jis0208<<14 | 0x1E<<7 | 0x2F, + 22648 - 19968: jis0212<<14 | 0x17<<7 | 0x17, + 22649 - 19968: jis0208<<14 | 0x33<<7 | 0x2E, + 22652 - 19968: jis0212<<14 | 0x17<<7 | 0x18, + 22654 - 19968: jis0208<<14 | 0x1C<<7 | 0x2D, + 22655 - 19968: jis0212<<14 | 0x17<<7 | 0x19, + 22656 - 19968: jis0212<<14 | 0x17<<7 | 0x1A, + 22657 - 19968: jis0212<<14 | 0x17<<7 | 0x1B, + 22659 - 19968: jis0208<<14 | 0x15<<7 | 0x0C, + 22661 - 19968: jis0208<<14 | 0x33<<7 | 0x2F, + 22663 - 19968: jis0212<<14 | 0x17<<7 | 0x1C, + 22664 - 19968: jis0212<<14 | 0x17<<7 | 0x1D, + 22665 - 19968: jis0212<<14 | 0x17<<7 | 0x1E, + 22666 - 19968: jis0212<<14 | 0x17<<7 | 0x1F, + 22668 - 19968: jis0212<<14 | 0x17<<7 | 0x20, + 22669 - 19968: jis0212<<14 | 0x17<<7 | 0x21, + 22671 - 19968: jis0212<<14 | 0x17<<7 | 0x22, + 22672 - 19968: jis0212<<14 | 0x17<<7 | 0x23, + 22675 - 19968: jis0208<<14 | 0x29<<7 | 0x47, + 22676 - 19968: jis0212<<14 | 0x17<<7 | 0x24, + 22678 - 19968: jis0212<<14 | 0x17<<7 | 0x25, + 22679 - 19968: jis0208<<14 | 0x20<<7 | 0x5C, + 22684 - 19968: jis0208<<14 | 0x23<<7 | 0x25, + 22685 - 19968: jis0212<<14 | 0x17<<7 | 0x26, + 22686 - 19968: jis0208<<14 | 0x58<<7 | 0x40, + 22687 - 19968: jis0208<<14 | 0x33<<7 | 0x31, + 22688 - 19968: jis0212<<14 | 0x17<<7 | 0x27, + 22689 - 19968: jis0212<<14 | 0x17<<7 | 0x28, + 22690 - 19968: jis0212<<14 | 0x17<<7 | 0x29, + 22694 - 19968: jis0212<<14 | 0x17<<7 | 0x2A, + 22696 - 19968: jis0208<<14 | 0x2A<<7 | 0x2E, + 22697 - 19968: jis0212<<14 | 0x17<<7 | 0x2B, + 22699 - 19968: jis0208<<14 | 0x33<<7 | 0x32, + 22702 - 19968: jis0208<<14 | 0x33<<7 | 0x37, + 22705 - 19968: jis0212<<14 | 0x17<<7 | 0x2C, + 22706 - 19968: jis0208<<14 | 0x58<<7 | 0x41, + 22707 - 19968: jis0208<<14 | 0x29<<7 | 0x0E, + 22712 - 19968: jis0208<<14 | 0x33<<7 | 0x36, + 22713 - 19968: jis0208<<14 | 0x33<<7 | 0x30, + 22714 - 19968: jis0208<<14 | 0x33<<7 | 0x33, + 22715 - 19968: jis0208<<14 | 0x33<<7 | 0x35, + 22716 - 19968: jis0212<<14 | 0x17<<7 | 0x2F, + 22718 - 19968: jis0208<<14 | 0x19<<7 | 0x05, + 22721 - 19968: jis0208<<14 | 0x29<<7 | 0x28, + 22722 - 19968: jis0212<<14 | 0x17<<7 | 0x30, + 22724 - 19968: jis0212<<14 | 0x17<<7 | 0x2E, + 22725 - 19968: jis0208<<14 | 0x33<<7 | 0x38, + 22727 - 19968: jis0208<<14 | 0x22<<7 | 0x24, + 22728 - 19968: jis0212<<14 | 0x17<<7 | 0x31, + 22730 - 19968: jis0208<<14 | 0x11<<7 | 0x54, + 22732 - 19968: jis0208<<14 | 0x1D<<7 | 0x4C, + 22733 - 19968: jis0212<<14 | 0x17<<7 | 0x32, + 22734 - 19968: jis0212<<14 | 0x17<<7 | 0x33, + 22736 - 19968: jis0212<<14 | 0x17<<7 | 0x34, + 22737 - 19968: jis0208<<14 | 0x33<<7 | 0x3A, + 22738 - 19968: jis0212<<14 | 0x17<<7 | 0x35, + 22739 - 19968: jis0208<<14 | 0x33<<7 | 0x39, + 22740 - 19968: jis0212<<14 | 0x17<<7 | 0x36, + 22741 - 19968: jis0208<<14 | 0x18<<7 | 0x47, + 22742 - 19968: jis0212<<14 | 0x17<<7 | 0x37, + 22743 - 19968: jis0208<<14 | 0x33<<7 | 0x3B, + 22744 - 19968: jis0208<<14 | 0x33<<7 | 0x3D, + 22745 - 19968: jis0208<<14 | 0x33<<7 | 0x3C, + 22746 - 19968: jis0212<<14 | 0x17<<7 | 0x38, + 22748 - 19968: jis0208<<14 | 0x33<<7 | 0x3F, + 22749 - 19968: jis0212<<14 | 0x17<<7 | 0x39, + 22750 - 19968: jis0208<<14 | 0x33<<7 | 0x34, + 22751 - 19968: jis0208<<14 | 0x33<<7 | 0x41, + 22753 - 19968: jis0212<<14 | 0x17<<7 | 0x3A, + 22754 - 19968: jis0212<<14 | 0x17<<7 | 0x3B, + 22756 - 19968: jis0208<<14 | 0x33<<7 | 0x40, + 22757 - 19968: jis0208<<14 | 0x33<<7 | 0x3E, + 22761 - 19968: jis0212<<14 | 0x17<<7 | 0x3C, + 22763 - 19968: jis0208<<14 | 0x1A<<7 | 0x2D, + 22764 - 19968: jis0208<<14 | 0x1E<<7 | 0x30, + 22766 - 19968: jis0208<<14 | 0x20<<7 | 0x33, + 22767 - 19968: jis0208<<14 | 0x33<<7 | 0x42, + 22768 - 19968: jis0208<<14 | 0x1F<<7 | 0x1B, + 22769 - 19968: jis0208<<14 | 0x0F<<7 | 0x4C, + 22770 - 19968: jis0208<<14 | 0x26<<7 | 0x43, + 22771 - 19968: jis0212<<14 | 0x17<<7 | 0x3D, + 22775 - 19968: jis0208<<14 | 0x23<<7 | 0x3A, + 22777 - 19968: jis0208<<14 | 0x33<<7 | 0x44, + 22778 - 19968: jis0208<<14 | 0x33<<7 | 0x43, + 22779 - 19968: jis0208<<14 | 0x33<<7 | 0x45, + 22780 - 19968: jis0208<<14 | 0x33<<7 | 0x46, + 22781 - 19968: jis0208<<14 | 0x33<<7 | 0x47, + 22786 - 19968: jis0208<<14 | 0x33<<7 | 0x48, + 22789 - 19968: jis0212<<14 | 0x17<<7 | 0x3E, + 22790 - 19968: jis0212<<14 | 0x17<<7 | 0x3F, + 22793 - 19968: jis0208<<14 | 0x29<<7 | 0x30, + 22794 - 19968: jis0208<<14 | 0x33<<7 | 0x49, + 22795 - 19968: jis0208<<14 | 0x58<<7 | 0x42, + 22796 - 19968: jis0212<<14 | 0x17<<7 | 0x41, + 22799 - 19968: jis0208<<14 | 0x11<<7 | 0x25, + 22800 - 19968: jis0208<<14 | 0x33<<7 | 0x4A, + 22802 - 19968: jis0212<<14 | 0x17<<7 | 0x42, + 22803 - 19968: jis0212<<14 | 0x17<<7 | 0x43, + 22804 - 19968: jis0212<<14 | 0x17<<7 | 0x44, + 22805 - 19968: jis0208<<14 | 0x2C<<7 | 0x1B, + 22806 - 19968: jis0208<<14 | 0x12<<7 | 0x0F, + 22808 - 19968: jis0208<<14 | 0x31<<7 | 0x28, + 22809 - 19968: jis0208<<14 | 0x1C<<7 | 0x27, + 22810 - 19968: jis0208<<14 | 0x21<<7 | 0x1E, + 22811 - 19968: jis0208<<14 | 0x33<<7 | 0x4B, + 22812 - 19968: jis0208<<14 | 0x2B<<7 | 0x4A, + 22813 - 19968: jis0212<<14 | 0x17<<7 | 0x46, + 22817 - 19968: jis0212<<14 | 0x17<<7 | 0x47, + 22818 - 19968: jis0208<<14 | 0x2B<<7 | 0x13, + 22819 - 19968: jis0212<<14 | 0x17<<7 | 0x48, + 22820 - 19968: jis0212<<14 | 0x17<<7 | 0x49, + 22821 - 19968: jis0208<<14 | 0x33<<7 | 0x4D, + 22823 - 19968: jis0208<<14 | 0x21<<7 | 0x46, + 22824 - 19968: jis0212<<14 | 0x17<<7 | 0x4A, + 22825 - 19968: jis0208<<14 | 0x24<<7 | 0x16, + 22826 - 19968: jis0208<<14 | 0x21<<7 | 0x1F, + 22827 - 19968: jis0208<<14 | 0x28<<7 | 0x36, + 22828 - 19968: jis0208<<14 | 0x33<<7 | 0x4E, + 22829 - 19968: jis0208<<14 | 0x33<<7 | 0x4F, + 22830 - 19968: jis0208<<14 | 0x10<<7 | 0x5A, + 22831 - 19968: jis0212<<14 | 0x17<<7 | 0x4B, + 22832 - 19968: jis0212<<14 | 0x17<<7 | 0x4C, + 22833 - 19968: jis0208<<14 | 0x1B<<7 | 0x19, + 22834 - 19968: jis0208<<14 | 0x33<<7 | 0x50, + 22835 - 19968: jis0212<<14 | 0x17<<7 | 0x4D, + 22837 - 19968: jis0212<<14 | 0x17<<7 | 0x4E, + 22838 - 19968: jis0212<<14 | 0x17<<7 | 0x4F, + 22839 - 19968: jis0208<<14 | 0x0F<<7 | 0x2F, + 22840 - 19968: jis0208<<14 | 0x33<<7 | 0x51, + 22846 - 19968: jis0208<<14 | 0x33<<7 | 0x52, + 22847 - 19968: jis0212<<14 | 0x17<<7 | 0x50, + 22851 - 19968: jis0212<<14 | 0x17<<7 | 0x51, + 22852 - 19968: jis0208<<14 | 0x10<<7 | 0x41, + 22854 - 19968: jis0212<<14 | 0x17<<7 | 0x52, + 22855 - 19968: jis0208<<14 | 0x13<<7 | 0x50, + 22856 - 19968: jis0208<<14 | 0x25<<7 | 0x3F, + 22857 - 19968: jis0208<<14 | 0x29<<7 | 0x53, + 22862 - 19968: jis0208<<14 | 0x33<<7 | 0x56, + 22863 - 19968: jis0208<<14 | 0x20<<7 | 0x34, + 22864 - 19968: jis0208<<14 | 0x33<<7 | 0x55, + 22865 - 19968: jis0208<<14 | 0x16<<7 | 0x1F, + 22866 - 19968: jis0212<<14 | 0x17<<7 | 0x53, + 22867 - 19968: jis0208<<14 | 0x58<<7 | 0x43, + 22868 - 19968: jis0208<<14 | 0x2A<<7 | 0x3A, + 22869 - 19968: jis0208<<14 | 0x33<<7 | 0x54, + 22871 - 19968: jis0208<<14 | 0x24<<7 | 0x44, + 22872 - 19968: jis0208<<14 | 0x33<<7 | 0x58, + 22873 - 19968: jis0212<<14 | 0x17<<7 | 0x55, + 22874 - 19968: jis0208<<14 | 0x33<<7 | 0x57, + 22875 - 19968: jis0208<<14 | 0x58<<7 | 0x44, + 22877 - 19968: jis0208<<14 | 0x58<<7 | 0x45, + 22878 - 19968: jis0212<<14 | 0x17<<7 | 0x58, + 22879 - 19968: jis0212<<14 | 0x17<<7 | 0x59, + 22880 - 19968: jis0208<<14 | 0x33<<7 | 0x5A, + 22881 - 19968: jis0212<<14 | 0x17<<7 | 0x5A, + 22882 - 19968: jis0208<<14 | 0x33<<7 | 0x59, + 22883 - 19968: jis0208<<14 | 0x58<<7 | 0x46, + 22885 - 19968: jis0208<<14 | 0x10<<7 | 0x5B, + 22887 - 19968: jis0208<<14 | 0x33<<7 | 0x5B, + 22888 - 19968: jis0208<<14 | 0x1D<<7 | 0x08, + 22889 - 19968: jis0208<<14 | 0x33<<7 | 0x5D, + 22890 - 19968: jis0208<<14 | 0x22<<7 | 0x04, + 22891 - 19968: jis0212<<14 | 0x17<<7 | 0x5C, + 22892 - 19968: jis0208<<14 | 0x33<<7 | 0x5C, + 22893 - 19968: jis0212<<14 | 0x17<<7 | 0x5D, + 22894 - 19968: jis0208<<14 | 0x29<<7 | 0x12, + 22895 - 19968: jis0212<<14 | 0x18<<7 | 0x00, + 22898 - 19968: jis0212<<14 | 0x18<<7 | 0x01, + 22899 - 19968: jis0208<<14 | 0x1C<<7 | 0x56, + 22900 - 19968: jis0208<<14 | 0x24<<7 | 0x3A, + 22901 - 19968: jis0212<<14 | 0x18<<7 | 0x02, + 22902 - 19968: jis0212<<14 | 0x18<<7 | 0x03, + 22904 - 19968: jis0208<<14 | 0x34<<7 | 0x00, + 22905 - 19968: jis0212<<14 | 0x18<<7 | 0x04, + 22907 - 19968: jis0212<<14 | 0x18<<7 | 0x05, + 22908 - 19968: jis0212<<14 | 0x18<<7 | 0x06, + 22909 - 19968: jis0208<<14 | 0x18<<7 | 0x04, + 22913 - 19968: jis0208<<14 | 0x34<<7 | 0x01, + 22914 - 19968: jis0208<<14 | 0x26<<7 | 0x00, + 22915 - 19968: jis0208<<14 | 0x27<<7 | 0x3D, + 22916 - 19968: jis0208<<14 | 0x2B<<7 | 0x30, + 22922 - 19968: jis0208<<14 | 0x26<<7 | 0x04, + 22923 - 19968: jis0212<<14 | 0x18<<7 | 0x07, + 22924 - 19968: jis0212<<14 | 0x18<<7 | 0x08, + 22925 - 19968: jis0208<<14 | 0x34<<7 | 0x0A, + 22926 - 19968: jis0212<<14 | 0x18<<7 | 0x09, + 22930 - 19968: jis0212<<14 | 0x18<<7 | 0x0A, + 22931 - 19968: jis0208<<14 | 0x14<<7 | 0x17, + 22933 - 19968: jis0212<<14 | 0x18<<7 | 0x0B, + 22934 - 19968: jis0208<<14 | 0x2C<<7 | 0x24, + 22935 - 19968: jis0212<<14 | 0x18<<7 | 0x0C, + 22937 - 19968: jis0208<<14 | 0x2B<<7 | 0x0E, + 22939 - 19968: jis0208<<14 | 0x35<<7 | 0x0B, + 22941 - 19968: jis0208<<14 | 0x34<<7 | 0x02, + 22943 - 19968: jis0212<<14 | 0x18<<7 | 0x0D, + 22947 - 19968: jis0208<<14 | 0x34<<7 | 0x05, + 22948 - 19968: jis0208<<14 | 0x58<<7 | 0x47, + 22949 - 19968: jis0208<<14 | 0x21<<7 | 0x24, + 22951 - 19968: jis0212<<14 | 0x18<<7 | 0x0F, + 22952 - 19968: jis0208<<14 | 0x2A<<7 | 0x17, + 22956 - 19968: jis0208<<14 | 0x24<<7 | 0x29, + 22957 - 19968: jis0212<<14 | 0x18<<7 | 0x10, + 22958 - 19968: jis0212<<14 | 0x18<<7 | 0x11, + 22959 - 19968: jis0212<<14 | 0x18<<7 | 0x12, + 22960 - 19968: jis0212<<14 | 0x18<<7 | 0x13, + 22962 - 19968: jis0208<<14 | 0x34<<7 | 0x06, + 22963 - 19968: jis0212<<14 | 0x18<<7 | 0x14, + 22967 - 19968: jis0212<<14 | 0x18<<7 | 0x15, + 22969 - 19968: jis0208<<14 | 0x2A<<7 | 0x44, + 22970 - 19968: jis0208<<14 | 0x58<<7 | 0x48, + 22971 - 19968: jis0208<<14 | 0x19<<7 | 0x29, + 22972 - 19968: jis0212<<14 | 0x18<<7 | 0x17, + 22974 - 19968: jis0208<<14 | 0x1D<<7 | 0x09, + 22977 - 19968: jis0212<<14 | 0x18<<7 | 0x18, + 22979 - 19968: jis0212<<14 | 0x18<<7 | 0x19, + 22980 - 19968: jis0212<<14 | 0x18<<7 | 0x1A, + 22982 - 19968: jis0208<<14 | 0x34<<7 | 0x07, + 22984 - 19968: jis0212<<14 | 0x18<<7 | 0x1B, + 22985 - 19968: jis0208<<14 | 0x1A<<7 | 0x2F, + 22986 - 19968: jis0212<<14 | 0x18<<7 | 0x1C, + 22987 - 19968: jis0208<<14 | 0x1A<<7 | 0x2E, + 22989 - 19968: jis0212<<14 | 0x18<<7 | 0x1D, + 22992 - 19968: jis0208<<14 | 0x0F<<7 | 0x18, + 22993 - 19968: jis0208<<14 | 0x17<<7 | 0x27, + 22994 - 19968: jis0212<<14 | 0x18<<7 | 0x1E, + 22995 - 19968: jis0208<<14 | 0x1F<<7 | 0x0A, + 22996 - 19968: jis0208<<14 | 0x0F<<7 | 0x30, + 23001 - 19968: jis0208<<14 | 0x34<<7 | 0x0B, + 23002 - 19968: jis0208<<14 | 0x34<<7 | 0x0C, + 23004 - 19968: jis0208<<14 | 0x34<<7 | 0x09, + 23005 - 19968: jis0212<<14 | 0x18<<7 | 0x1F, + 23006 - 19968: jis0212<<14 | 0x18<<7 | 0x20, + 23007 - 19968: jis0212<<14 | 0x18<<7 | 0x21, + 23011 - 19968: jis0212<<14 | 0x18<<7 | 0x22, + 23012 - 19968: jis0212<<14 | 0x18<<7 | 0x23, + 23013 - 19968: jis0208<<14 | 0x10<<7 | 0x17, + 23014 - 19968: jis0208<<14 | 0x13<<7 | 0x0E, + 23015 - 19968: jis0212<<14 | 0x18<<7 | 0x24, + 23016 - 19968: jis0208<<14 | 0x34<<7 | 0x08, + 23018 - 19968: jis0208<<14 | 0x2B<<7 | 0x24, + 23019 - 19968: jis0208<<14 | 0x28<<7 | 0x10, + 23022 - 19968: jis0212<<14 | 0x18<<7 | 0x25, + 23023 - 19968: jis0212<<14 | 0x18<<7 | 0x26, + 23025 - 19968: jis0212<<14 | 0x18<<7 | 0x27, + 23026 - 19968: jis0212<<14 | 0x18<<7 | 0x28, + 23028 - 19968: jis0212<<14 | 0x18<<7 | 0x29, + 23030 - 19968: jis0208<<14 | 0x0F<<7 | 0x07, + 23031 - 19968: jis0212<<14 | 0x18<<7 | 0x2A, + 23035 - 19968: jis0208<<14 | 0x0F<<7 | 0x58, + 23039 - 19968: jis0208<<14 | 0x1A<<7 | 0x30, + 23040 - 19968: jis0212<<14 | 0x18<<7 | 0x2B, + 23041 - 19968: jis0208<<14 | 0x0F<<7 | 0x31, + 23043 - 19968: jis0208<<14 | 0x0F<<7 | 0x02, + 23044 - 19968: jis0212<<14 | 0x18<<7 | 0x2C, + 23049 - 19968: jis0208<<14 | 0x34<<7 | 0x11, + 23052 - 19968: jis0212<<14 | 0x18<<7 | 0x2D, + 23053 - 19968: jis0212<<14 | 0x18<<7 | 0x2E, + 23054 - 19968: jis0212<<14 | 0x18<<7 | 0x2F, + 23057 - 19968: jis0208<<14 | 0x34<<7 | 0x0F, + 23058 - 19968: jis0212<<14 | 0x18<<7 | 0x30, + 23059 - 19968: jis0212<<14 | 0x18<<7 | 0x31, + 23064 - 19968: jis0208<<14 | 0x2B<<7 | 0x1B, + 23066 - 19968: jis0208<<14 | 0x34<<7 | 0x12, + 23068 - 19968: jis0208<<14 | 0x34<<7 | 0x10, + 23070 - 19968: jis0212<<14 | 0x18<<7 | 0x32, + 23071 - 19968: jis0208<<14 | 0x34<<7 | 0x0E, + 23072 - 19968: jis0208<<14 | 0x1E<<7 | 0x10, + 23075 - 19968: jis0212<<14 | 0x18<<7 | 0x33, + 23076 - 19968: jis0212<<14 | 0x18<<7 | 0x34, + 23077 - 19968: jis0208<<14 | 0x34<<7 | 0x0D, + 23079 - 19968: jis0212<<14 | 0x18<<7 | 0x35, + 23080 - 19968: jis0212<<14 | 0x18<<7 | 0x36, + 23081 - 19968: jis0208<<14 | 0x29<<7 | 0x39, + 23082 - 19968: jis0212<<14 | 0x18<<7 | 0x37, + 23085 - 19968: jis0212<<14 | 0x18<<7 | 0x38, + 23087 - 19968: jis0208<<14 | 0x17<<7 | 0x43, + 23088 - 19968: jis0212<<14 | 0x18<<7 | 0x39, + 23093 - 19968: jis0208<<14 | 0x34<<7 | 0x16, + 23094 - 19968: jis0208<<14 | 0x34<<7 | 0x17, + 23100 - 19968: jis0208<<14 | 0x1D<<7 | 0x0A, + 23104 - 19968: jis0208<<14 | 0x34<<7 | 0x13, + 23105 - 19968: jis0208<<14 | 0x2E<<7 | 0x0B, + 23108 - 19968: jis0212<<14 | 0x18<<7 | 0x3A, + 23109 - 19968: jis0212<<14 | 0x18<<7 | 0x3B, + 23110 - 19968: jis0208<<14 | 0x26<<7 | 0x2B, + 23111 - 19968: jis0212<<14 | 0x18<<7 | 0x3C, + 23112 - 19968: jis0212<<14 | 0x18<<7 | 0x3D, + 23113 - 19968: jis0208<<14 | 0x34<<7 | 0x15, + 23116 - 19968: jis0212<<14 | 0x18<<7 | 0x3E, + 23120 - 19968: jis0212<<14 | 0x18<<7 | 0x3F, + 23125 - 19968: jis0212<<14 | 0x18<<7 | 0x40, + 23130 - 19968: jis0208<<14 | 0x19<<7 | 0x06, + 23134 - 19968: jis0212<<14 | 0x18<<7 | 0x41, + 23138 - 19968: jis0208<<14 | 0x34<<7 | 0x18, + 23139 - 19968: jis0212<<14 | 0x18<<7 | 0x42, + 23141 - 19968: jis0212<<14 | 0x18<<7 | 0x43, + 23142 - 19968: jis0208<<14 | 0x28<<7 | 0x37, + 23143 - 19968: jis0212<<14 | 0x18<<7 | 0x44, + 23146 - 19968: jis0208<<14 | 0x34<<7 | 0x19, + 23148 - 19968: jis0208<<14 | 0x34<<7 | 0x14, + 23149 - 19968: jis0212<<14 | 0x18<<7 | 0x45, + 23159 - 19968: jis0212<<14 | 0x18<<7 | 0x46, + 23162 - 19968: jis0212<<14 | 0x18<<7 | 0x47, + 23163 - 19968: jis0212<<14 | 0x18<<7 | 0x48, + 23166 - 19968: jis0212<<14 | 0x18<<7 | 0x49, + 23167 - 19968: jis0208<<14 | 0x2B<<7 | 0x1A, + 23179 - 19968: jis0212<<14 | 0x18<<7 | 0x4A, + 23184 - 19968: jis0212<<14 | 0x18<<7 | 0x4B, + 23186 - 19968: jis0208<<14 | 0x26<<7 | 0x3D, + 23187 - 19968: jis0212<<14 | 0x18<<7 | 0x4C, + 23190 - 19968: jis0212<<14 | 0x18<<7 | 0x4D, + 23193 - 19968: jis0212<<14 | 0x18<<7 | 0x4E, + 23194 - 19968: jis0208<<14 | 0x34<<7 | 0x1A, + 23195 - 19968: jis0208<<14 | 0x28<<7 | 0x11, + 23196 - 19968: jis0212<<14 | 0x18<<7 | 0x4F, + 23198 - 19968: jis0212<<14 | 0x18<<7 | 0x50, + 23199 - 19968: jis0212<<14 | 0x18<<7 | 0x51, + 23200 - 19968: jis0212<<14 | 0x18<<7 | 0x52, + 23202 - 19968: jis0212<<14 | 0x18<<7 | 0x53, + 23207 - 19968: jis0212<<14 | 0x18<<7 | 0x54, + 23212 - 19968: jis0212<<14 | 0x18<<7 | 0x55, + 23217 - 19968: jis0212<<14 | 0x18<<7 | 0x56, + 23218 - 19968: jis0212<<14 | 0x18<<7 | 0x57, + 23219 - 19968: jis0212<<14 | 0x18<<7 | 0x58, + 23221 - 19968: jis0212<<14 | 0x18<<7 | 0x59, + 23224 - 19968: jis0212<<14 | 0x18<<7 | 0x5A, + 23226 - 19968: jis0212<<14 | 0x18<<7 | 0x5B, + 23227 - 19968: jis0212<<14 | 0x18<<7 | 0x5C, + 23228 - 19968: jis0208<<14 | 0x34<<7 | 0x1B, + 23229 - 19968: jis0208<<14 | 0x34<<7 | 0x1F, + 23230 - 19968: jis0208<<14 | 0x34<<7 | 0x1C, + 23231 - 19968: jis0212<<14 | 0x18<<7 | 0x5D, + 23233 - 19968: jis0208<<14 | 0x11<<7 | 0x26, + 23234 - 19968: jis0208<<14 | 0x34<<7 | 0x1E, + 23236 - 19968: jis0212<<14 | 0x19<<7 | 0x00, + 23238 - 19968: jis0212<<14 | 0x19<<7 | 0x01, + 23240 - 19968: jis0212<<14 | 0x19<<7 | 0x02, + 23241 - 19968: jis0208<<14 | 0x1B<<7 | 0x1A, + 23243 - 19968: jis0208<<14 | 0x34<<7 | 0x1D, + 23244 - 19968: jis0208<<14 | 0x16<<7 | 0x58, + 23247 - 19968: jis0212<<14 | 0x19<<7 | 0x03, + 23248 - 19968: jis0208<<14 | 0x34<<7 | 0x2B, + 23254 - 19968: jis0208<<14 | 0x34<<7 | 0x24, + 23255 - 19968: jis0208<<14 | 0x34<<7 | 0x21, + 23258 - 19968: jis0212<<14 | 0x19<<7 | 0x04, + 23260 - 19968: jis0212<<14 | 0x19<<7 | 0x05, + 23264 - 19968: jis0212<<14 | 0x19<<7 | 0x06, + 23265 - 19968: jis0208<<14 | 0x22<<7 | 0x43, + 23267 - 19968: jis0208<<14 | 0x34<<7 | 0x20, + 23269 - 19968: jis0212<<14 | 0x19<<7 | 0x07, + 23270 - 19968: jis0208<<14 | 0x34<<7 | 0x22, + 23273 - 19968: jis0208<<14 | 0x34<<7 | 0x23, + 23274 - 19968: jis0212<<14 | 0x19<<7 | 0x08, + 23278 - 19968: jis0212<<14 | 0x19<<7 | 0x09, + 23285 - 19968: jis0212<<14 | 0x19<<7 | 0x0A, + 23286 - 19968: jis0212<<14 | 0x19<<7 | 0x0B, + 23290 - 19968: jis0208<<14 | 0x34<<7 | 0x25, + 23291 - 19968: jis0208<<14 | 0x34<<7 | 0x26, + 23293 - 19968: jis0212<<14 | 0x19<<7 | 0x0C, + 23296 - 19968: jis0212<<14 | 0x19<<7 | 0x0D, + 23297 - 19968: jis0212<<14 | 0x19<<7 | 0x0E, + 23304 - 19968: jis0212<<14 | 0x19<<7 | 0x0F, + 23305 - 19968: jis0208<<14 | 0x13<<7 | 0x51, + 23307 - 19968: jis0208<<14 | 0x34<<7 | 0x28, + 23308 - 19968: jis0208<<14 | 0x34<<7 | 0x27, + 23318 - 19968: jis0208<<14 | 0x34<<7 | 0x29, + 23319 - 19968: jis0212<<14 | 0x19<<7 | 0x10, + 23321 - 19968: jis0212<<14 | 0x19<<7 | 0x12, + 23323 - 19968: jis0212<<14 | 0x19<<7 | 0x13, + 23325 - 19968: jis0212<<14 | 0x19<<7 | 0x14, + 23329 - 19968: jis0212<<14 | 0x19<<7 | 0x15, + 23330 - 19968: jis0208<<14 | 0x1D<<7 | 0x4D, + 23333 - 19968: jis0212<<14 | 0x19<<7 | 0x16, + 23338 - 19968: jis0208<<14 | 0x34<<7 | 0x2C, + 23340 - 19968: jis0208<<14 | 0x23<<7 | 0x3B, + 23341 - 19968: jis0212<<14 | 0x19<<7 | 0x17, + 23344 - 19968: jis0208<<14 | 0x10<<7 | 0x24, + 23346 - 19968: jis0208<<14 | 0x34<<7 | 0x2A, + 23348 - 19968: jis0212<<14 | 0x19<<7 | 0x11, + 23350 - 19968: jis0208<<14 | 0x34<<7 | 0x2D, + 23352 - 19968: jis0212<<14 | 0x19<<7 | 0x18, + 23358 - 19968: jis0208<<14 | 0x34<<7 | 0x2E, + 23360 - 19968: jis0208<<14 | 0x34<<7 | 0x31, + 23361 - 19968: jis0212<<14 | 0x19<<7 | 0x19, + 23363 - 19968: jis0208<<14 | 0x34<<7 | 0x2F, + 23365 - 19968: jis0208<<14 | 0x34<<7 | 0x30, + 23371 - 19968: jis0212<<14 | 0x19<<7 | 0x1A, + 23372 - 19968: jis0212<<14 | 0x19<<7 | 0x1B, + 23376 - 19968: jis0208<<14 | 0x1A<<7 | 0x31, + 23377 - 19968: jis0208<<14 | 0x34<<7 | 0x32, + 23378 - 19968: jis0212<<14 | 0x19<<7 | 0x1C, + 23380 - 19968: jis0208<<14 | 0x18<<7 | 0x05, + 23381 - 19968: jis0208<<14 | 0x34<<7 | 0x33, + 23382 - 19968: jis0208<<14 | 0x58<<7 | 0x49, + 23383 - 19968: jis0208<<14 | 0x1A<<7 | 0x59, + 23384 - 19968: jis0208<<14 | 0x21<<7 | 0x17, + 23386 - 19968: jis0208<<14 | 0x34<<7 | 0x34, + 23387 - 19968: jis0208<<14 | 0x34<<7 | 0x35, + 23388 - 19968: jis0208<<14 | 0x1A<<7 | 0x39, + 23389 - 19968: jis0208<<14 | 0x18<<7 | 0x06, + 23390 - 19968: jis0212<<14 | 0x19<<7 | 0x1E, + 23391 - 19968: jis0208<<14 | 0x2B<<7 | 0x31, + 23395 - 19968: jis0208<<14 | 0x14<<7 | 0x07, + 23396 - 19968: jis0208<<14 | 0x17<<7 | 0x28, + 23397 - 19968: jis0208<<14 | 0x34<<7 | 0x36, + 23398 - 19968: jis0208<<14 | 0x12<<7 | 0x37, + 23400 - 19968: jis0212<<14 | 0x19<<7 | 0x1F, + 23401 - 19968: jis0208<<14 | 0x34<<7 | 0x37, + 23403 - 19968: jis0208<<14 | 0x21<<7 | 0x18, + 23406 - 19968: jis0212<<14 | 0x19<<7 | 0x20, + 23407 - 19968: jis0212<<14 | 0x19<<7 | 0x21, + 23408 - 19968: jis0208<<14 | 0x34<<7 | 0x38, + 23409 - 19968: jis0208<<14 | 0x35<<7 | 0x02, + 23411 - 19968: jis0208<<14 | 0x34<<7 | 0x39, + 23413 - 19968: jis0208<<14 | 0x34<<7 | 0x3A, + 23416 - 19968: jis0208<<14 | 0x34<<7 | 0x3B, + 23418 - 19968: jis0208<<14 | 0x34<<7 | 0x3D, + 23420 - 19968: jis0212<<14 | 0x19<<7 | 0x22, + 23421 - 19968: jis0212<<14 | 0x19<<7 | 0x23, + 23422 - 19968: jis0212<<14 | 0x19<<7 | 0x24, + 23423 - 19968: jis0212<<14 | 0x19<<7 | 0x25, + 23424 - 19968: jis0208<<14 | 0x34<<7 | 0x3E, + 23425 - 19968: jis0212<<14 | 0x19<<7 | 0x26, + 23427 - 19968: jis0208<<14 | 0x34<<7 | 0x3F, + 23428 - 19968: jis0212<<14 | 0x19<<7 | 0x27, + 23429 - 19968: jis0208<<14 | 0x21<<7 | 0x4F, + 23430 - 19968: jis0212<<14 | 0x19<<7 | 0x28, + 23431 - 19968: jis0208<<14 | 0x10<<7 | 0x06, + 23432 - 19968: jis0208<<14 | 0x1B<<7 | 0x48, + 23433 - 19968: jis0208<<14 | 0x0F<<7 | 0x21, + 23434 - 19968: jis0212<<14 | 0x19<<7 | 0x29, + 23435 - 19968: jis0208<<14 | 0x20<<7 | 0x36, + 23436 - 19968: jis0208<<14 | 0x13<<7 | 0x0F, + 23437 - 19968: jis0208<<14 | 0x1B<<7 | 0x14, + 23438 - 19968: jis0212<<14 | 0x19<<7 | 0x2A, + 23439 - 19968: jis0208<<14 | 0x18<<7 | 0x07, + 23440 - 19968: jis0212<<14 | 0x19<<7 | 0x2B, + 23441 - 19968: jis0212<<14 | 0x19<<7 | 0x2C, + 23443 - 19968: jis0212<<14 | 0x19<<7 | 0x2D, + 23444 - 19968: jis0212<<14 | 0x19<<7 | 0x2E, + 23445 - 19968: jis0208<<14 | 0x24<<7 | 0x45, + 23446 - 19968: jis0212<<14 | 0x19<<7 | 0x2F, + 23447 - 19968: jis0208<<14 | 0x1C<<7 | 0x00, + 23448 - 19968: jis0208<<14 | 0x13<<7 | 0x10, + 23449 - 19968: jis0208<<14 | 0x22<<7 | 0x47, + 23450 - 19968: jis0208<<14 | 0x23<<7 | 0x49, + 23451 - 19968: jis0208<<14 | 0x0F<<7 | 0x17, + 23452 - 19968: jis0208<<14 | 0x14<<7 | 0x18, + 23453 - 19968: jis0208<<14 | 0x29<<7 | 0x54, + 23455 - 19968: jis0208<<14 | 0x1B<<7 | 0x21, + 23458 - 19968: jis0208<<14 | 0x14<<7 | 0x31, + 23459 - 19968: jis0208<<14 | 0x1F<<7 | 0x4A, + 23460 - 19968: jis0208<<14 | 0x1B<<7 | 0x1B, + 23461 - 19968: jis0208<<14 | 0x2C<<7 | 0x07, + 23462 - 19968: jis0208<<14 | 0x34<<7 | 0x40, + 23464 - 19968: jis0212<<14 | 0x19<<7 | 0x30, + 23465 - 19968: jis0212<<14 | 0x19<<7 | 0x31, + 23468 - 19968: jis0212<<14 | 0x19<<7 | 0x32, + 23469 - 19968: jis0212<<14 | 0x19<<7 | 0x33, + 23470 - 19968: jis0208<<14 | 0x14<<7 | 0x3B, + 23471 - 19968: jis0212<<14 | 0x19<<7 | 0x34, + 23472 - 19968: jis0208<<14 | 0x19<<7 | 0x2A, + 23473 - 19968: jis0212<<14 | 0x19<<7 | 0x35, + 23474 - 19968: jis0212<<14 | 0x19<<7 | 0x36, + 23475 - 19968: jis0208<<14 | 0x12<<7 | 0x11, + 23476 - 19968: jis0208<<14 | 0x10<<7 | 0x42, + 23477 - 19968: jis0208<<14 | 0x1D<<7 | 0x0B, + 23478 - 19968: jis0208<<14 | 0x11<<7 | 0x27, + 23479 - 19968: jis0212<<14 | 0x19<<7 | 0x37, + 23480 - 19968: jis0208<<14 | 0x34<<7 | 0x41, + 23481 - 19968: jis0208<<14 | 0x2C<<7 | 0x25, + 23482 - 19968: jis0212<<14 | 0x19<<7 | 0x38, + 23484 - 19968: jis0212<<14 | 0x19<<7 | 0x39, + 23487 - 19968: jis0208<<14 | 0x1C<<7 | 0x28, + 23488 - 19968: jis0208<<14 | 0x58<<7 | 0x4A, + 23489 - 19968: jis0212<<14 | 0x19<<7 | 0x3B, + 23490 - 19968: jis0208<<14 | 0x1B<<7 | 0x43, + 23491 - 19968: jis0208<<14 | 0x34<<7 | 0x42, + 23492 - 19968: jis0208<<14 | 0x13<<7 | 0x52, + 23493 - 19968: jis0208<<14 | 0x25<<7 | 0x31, + 23494 - 19968: jis0208<<14 | 0x2B<<7 | 0x08, + 23495 - 19968: jis0208<<14 | 0x34<<7 | 0x43, + 23497 - 19968: jis0208<<14 | 0x34<<7 | 0x44, + 23500 - 19968: jis0208<<14 | 0x28<<7 | 0x38, + 23501 - 19968: jis0212<<14 | 0x19<<7 | 0x3C, + 23503 - 19968: jis0212<<14 | 0x19<<7 | 0x3D, + 23504 - 19968: jis0208<<14 | 0x34<<7 | 0x46, + 23506 - 19968: jis0208<<14 | 0x13<<7 | 0x07, + 23507 - 19968: jis0208<<14 | 0x15<<7 | 0x56, + 23508 - 19968: jis0208<<14 | 0x34<<7 | 0x45, + 23510 - 19968: jis0212<<14 | 0x19<<7 | 0x3E, + 23511 - 19968: jis0212<<14 | 0x19<<7 | 0x3F, + 23512 - 19968: jis0208<<14 | 0x58<<7 | 0x4C, + 23513 - 19968: jis0212<<14 | 0x19<<7 | 0x41, + 23514 - 19968: jis0212<<14 | 0x19<<7 | 0x42, + 23515 - 19968: jis0208<<14 | 0x13<<7 | 0x11, + 23517 - 19968: jis0208<<14 | 0x1E<<7 | 0x11, + 23518 - 19968: jis0208<<14 | 0x34<<7 | 0x4A, + 23519 - 19968: jis0208<<14 | 0x1A<<7 | 0x00, + 23520 - 19968: jis0212<<14 | 0x19<<7 | 0x43, + 23521 - 19968: jis0208<<14 | 0x11<<7 | 0x28, + 23522 - 19968: jis0208<<14 | 0x34<<7 | 0x49, + 23524 - 19968: jis0208<<14 | 0x34<<7 | 0x47, + 23525 - 19968: jis0208<<14 | 0x34<<7 | 0x4B, + 23526 - 19968: jis0208<<14 | 0x34<<7 | 0x48, + 23527 - 19968: jis0208<<14 | 0x26<<7 | 0x0A, + 23528 - 19968: jis0208<<14 | 0x3B<<7 | 0x2C, + 23529 - 19968: jis0208<<14 | 0x1E<<7 | 0x12, + 23531 - 19968: jis0208<<14 | 0x34<<7 | 0x4C, + 23532 - 19968: jis0208<<14 | 0x58<<7 | 0x4D, + 23534 - 19968: jis0208<<14 | 0x2D<<7 | 0x1F, + 23535 - 19968: jis0212<<14 | 0x19<<7 | 0x44, + 23536 - 19968: jis0208<<14 | 0x34<<7 | 0x4D, + 23537 - 19968: jis0212<<14 | 0x19<<7 | 0x45, + 23539 - 19968: jis0208<<14 | 0x34<<7 | 0x4F, + 23540 - 19968: jis0212<<14 | 0x19<<7 | 0x46, + 23541 - 19968: jis0208<<14 | 0x22<<7 | 0x5D, + 23542 - 19968: jis0208<<14 | 0x34<<7 | 0x4E, + 23544 - 19968: jis0208<<14 | 0x1F<<7 | 0x02, + 23546 - 19968: jis0208<<14 | 0x1A<<7 | 0x5A, + 23549 - 19968: jis0212<<14 | 0x19<<7 | 0x47, + 23550 - 19968: jis0208<<14 | 0x21<<7 | 0x2F, + 23551 - 19968: jis0208<<14 | 0x1B<<7 | 0x56, + 23553 - 19968: jis0208<<14 | 0x28<<7 | 0x54, + 23554 - 19968: jis0208<<14 | 0x1F<<7 | 0x4B, + 23556 - 19968: jis0208<<14 | 0x1B<<7 | 0x2C, + 23557 - 19968: jis0208<<14 | 0x34<<7 | 0x50, + 23558 - 19968: jis0208<<14 | 0x1D<<7 | 0x0C, + 23559 - 19968: jis0208<<14 | 0x34<<7 | 0x51, + 23560 - 19968: jis0208<<14 | 0x34<<7 | 0x52, + 23561 - 19968: jis0208<<14 | 0x0F<<7 | 0x32, + 23562 - 19968: jis0208<<14 | 0x21<<7 | 0x19, + 23563 - 19968: jis0208<<14 | 0x1E<<7 | 0x31, + 23564 - 19968: jis0212<<14 | 0x19<<7 | 0x48, + 23565 - 19968: jis0208<<14 | 0x34<<7 | 0x53, + 23566 - 19968: jis0208<<14 | 0x25<<7 | 0x12, + 23567 - 19968: jis0208<<14 | 0x1D<<7 | 0x0D, + 23569 - 19968: jis0208<<14 | 0x1D<<7 | 0x0E, + 23571 - 19968: jis0208<<14 | 0x34<<7 | 0x54, + 23574 - 19968: jis0208<<14 | 0x1F<<7 | 0x4C, + 23575 - 19968: jis0212<<14 | 0x19<<7 | 0x49, + 23578 - 19968: jis0208<<14 | 0x1D<<7 | 0x0F, + 23582 - 19968: jis0208<<14 | 0x58<<7 | 0x4E, + 23583 - 19968: jis0212<<14 | 0x19<<7 | 0x4B, + 23584 - 19968: jis0208<<14 | 0x34<<7 | 0x55, + 23586 - 19968: jis0208<<14 | 0x34<<7 | 0x56, + 23587 - 19968: jis0212<<14 | 0x19<<7 | 0x4C, + 23588 - 19968: jis0208<<14 | 0x2B<<7 | 0x3F, + 23590 - 19968: jis0212<<14 | 0x19<<7 | 0x4D, + 23592 - 19968: jis0208<<14 | 0x34<<7 | 0x57, + 23593 - 19968: jis0212<<14 | 0x19<<7 | 0x4E, + 23595 - 19968: jis0212<<14 | 0x19<<7 | 0x4F, + 23596 - 19968: jis0212<<14 | 0x19<<7 | 0x50, + 23597 - 19968: jis0208<<14 | 0x15<<7 | 0x25, + 23598 - 19968: jis0212<<14 | 0x19<<7 | 0x51, + 23600 - 19968: jis0212<<14 | 0x19<<7 | 0x52, + 23601 - 19968: jis0208<<14 | 0x1C<<7 | 0x01, + 23602 - 19968: jis0212<<14 | 0x19<<7 | 0x53, + 23605 - 19968: jis0212<<14 | 0x19<<7 | 0x54, + 23606 - 19968: jis0212<<14 | 0x19<<7 | 0x55, + 23608 - 19968: jis0208<<14 | 0x34<<7 | 0x58, + 23609 - 19968: jis0208<<14 | 0x34<<7 | 0x59, + 23610 - 19968: jis0208<<14 | 0x1B<<7 | 0x3B, + 23611 - 19968: jis0208<<14 | 0x1E<<7 | 0x0B, + 23612 - 19968: jis0208<<14 | 0x25<<7 | 0x53, + 23613 - 19968: jis0208<<14 | 0x1E<<7 | 0x33, + 23614 - 19968: jis0208<<14 | 0x27<<7 | 0x57, + 23615 - 19968: jis0208<<14 | 0x26<<7 | 0x01, + 23616 - 19968: jis0208<<14 | 0x15<<7 | 0x28, + 23617 - 19968: jis0208<<14 | 0x34<<7 | 0x5A, + 23621 - 19968: jis0208<<14 | 0x14<<7 | 0x4E, + 23622 - 19968: jis0208<<14 | 0x34<<7 | 0x5B, + 23624 - 19968: jis0208<<14 | 0x15<<7 | 0x5D, + 23626 - 19968: jis0208<<14 | 0x25<<7 | 0x2E, + 23627 - 19968: jis0208<<14 | 0x11<<7 | 0x0F, + 23629 - 19968: jis0208<<14 | 0x1A<<7 | 0x32, + 23630 - 19968: jis0208<<14 | 0x34<<7 | 0x5C, + 23631 - 19968: jis0208<<14 | 0x35<<7 | 0x01, + 23632 - 19968: jis0208<<14 | 0x35<<7 | 0x00, + 23633 - 19968: jis0208<<14 | 0x15<<7 | 0x5C, + 23635 - 19968: jis0208<<14 | 0x34<<7 | 0x5D, + 23637 - 19968: jis0208<<14 | 0x24<<7 | 0x17, + 23641 - 19968: jis0212<<14 | 0x19<<7 | 0x56, + 23642 - 19968: jis0212<<14 | 0x19<<7 | 0x57, + 23644 - 19968: jis0212<<14 | 0x19<<7 | 0x58, + 23646 - 19968: jis0208<<14 | 0x21<<7 | 0x0F, + 23648 - 19968: jis0208<<14 | 0x24<<7 | 0x2A, + 23649 - 19968: jis0208<<14 | 0x1B<<7 | 0x27, + 23650 - 19968: jis0212<<14 | 0x19<<7 | 0x59, + 23651 - 19968: jis0212<<14 | 0x19<<7 | 0x5A, + 23652 - 19968: jis0208<<14 | 0x20<<7 | 0x37, + 23653 - 19968: jis0208<<14 | 0x2C<<7 | 0x59, + 23655 - 19968: jis0212<<14 | 0x19<<7 | 0x5B, + 23656 - 19968: jis0212<<14 | 0x19<<7 | 0x5C, + 23657 - 19968: jis0212<<14 | 0x19<<7 | 0x5D, + 23660 - 19968: jis0208<<14 | 0x35<<7 | 0x03, + 23661 - 19968: jis0212<<14 | 0x1A<<7 | 0x00, + 23662 - 19968: jis0208<<14 | 0x35<<7 | 0x04, + 23663 - 19968: jis0208<<14 | 0x25<<7 | 0x35, + 23664 - 19968: jis0212<<14 | 0x1A<<7 | 0x01, + 23665 - 19968: jis0208<<14 | 0x1A<<7 | 0x12, + 23668 - 19968: jis0212<<14 | 0x1A<<7 | 0x02, + 23669 - 19968: jis0212<<14 | 0x1A<<7 | 0x03, + 23670 - 19968: jis0208<<14 | 0x35<<7 | 0x06, + 23673 - 19968: jis0208<<14 | 0x35<<7 | 0x07, + 23674 - 19968: jis0212<<14 | 0x1A<<7 | 0x04, + 23675 - 19968: jis0212<<14 | 0x1A<<7 | 0x05, + 23676 - 19968: jis0212<<14 | 0x1A<<7 | 0x06, + 23677 - 19968: jis0212<<14 | 0x1A<<7 | 0x07, + 23687 - 19968: jis0212<<14 | 0x1A<<7 | 0x08, + 23688 - 19968: jis0212<<14 | 0x1A<<7 | 0x09, + 23690 - 19968: jis0212<<14 | 0x1A<<7 | 0x0A, + 23692 - 19968: jis0208<<14 | 0x35<<7 | 0x08, + 23695 - 19968: jis0212<<14 | 0x1A<<7 | 0x0B, + 23696 - 19968: jis0208<<14 | 0x13<<7 | 0x53, + 23697 - 19968: jis0208<<14 | 0x35<<7 | 0x09, + 23698 - 19968: jis0212<<14 | 0x1A<<7 | 0x0C, + 23700 - 19968: jis0208<<14 | 0x35<<7 | 0x0A, + 23709 - 19968: jis0212<<14 | 0x1A<<7 | 0x0D, + 23711 - 19968: jis0212<<14 | 0x1A<<7 | 0x0E, + 23712 - 19968: jis0212<<14 | 0x1A<<7 | 0x0F, + 23713 - 19968: jis0208<<14 | 0x11<<7 | 0x0B, + 23714 - 19968: jis0212<<14 | 0x1A<<7 | 0x10, + 23715 - 19968: jis0212<<14 | 0x1A<<7 | 0x11, + 23718 - 19968: jis0208<<14 | 0x58<<7 | 0x4F, + 23720 - 19968: jis0208<<14 | 0x20<<7 | 0x1A, + 23721 - 19968: jis0208<<14 | 0x13<<7 | 0x43, + 23722 - 19968: jis0212<<14 | 0x1A<<7 | 0x13, + 23723 - 19968: jis0208<<14 | 0x35<<7 | 0x0C, + 23724 - 19968: jis0208<<14 | 0x2B<<7 | 0x07, + 23729 - 19968: jis0208<<14 | 0x21<<7 | 0x31, + 23730 - 19968: jis0212<<14 | 0x1A<<7 | 0x14, + 23731 - 19968: jis0208<<14 | 0x12<<7 | 0x38, + 23732 - 19968: jis0212<<14 | 0x1A<<7 | 0x15, + 23733 - 19968: jis0212<<14 | 0x1A<<7 | 0x16, + 23734 - 19968: jis0208<<14 | 0x35<<7 | 0x0E, + 23735 - 19968: jis0208<<14 | 0x35<<7 | 0x10, + 23736 - 19968: jis0208<<14 | 0x13<<7 | 0x3E, + 23738 - 19968: jis0208<<14 | 0x58<<7 | 0x50, + 23739 - 19968: jis0208<<14 | 0x35<<7 | 0x0D, + 23740 - 19968: jis0208<<14 | 0x35<<7 | 0x0F, + 23742 - 19968: jis0208<<14 | 0x35<<7 | 0x12, + 23749 - 19968: jis0208<<14 | 0x35<<7 | 0x11, + 23751 - 19968: jis0208<<14 | 0x35<<7 | 0x13, + 23753 - 19968: jis0212<<14 | 0x1A<<7 | 0x18, + 23755 - 19968: jis0212<<14 | 0x1A<<7 | 0x19, + 23762 - 19968: jis0212<<14 | 0x1A<<7 | 0x1A, + 23767 - 19968: jis0212<<14 | 0x1A<<7 | 0x1C, + 23769 - 19968: jis0208<<14 | 0x35<<7 | 0x14, + 23773 - 19968: jis0212<<14 | 0x1A<<7 | 0x1B, + 23776 - 19968: jis0208<<14 | 0x25<<7 | 0x1C, + 23777 - 19968: jis0208<<14 | 0x15<<7 | 0x0D, + 23784 - 19968: jis0208<<14 | 0x11<<7 | 0x44, + 23785 - 19968: jis0208<<14 | 0x35<<7 | 0x15, + 23786 - 19968: jis0208<<14 | 0x35<<7 | 0x1A, + 23789 - 19968: jis0208<<14 | 0x35<<7 | 0x18, + 23790 - 19968: jis0212<<14 | 0x1A<<7 | 0x1D, + 23791 - 19968: jis0208<<14 | 0x29<<7 | 0x56, + 23792 - 19968: jis0208<<14 | 0x29<<7 | 0x55, + 23793 - 19968: jis0212<<14 | 0x1A<<7 | 0x1E, + 23794 - 19968: jis0212<<14 | 0x1A<<7 | 0x1F, + 23796 - 19968: jis0212<<14 | 0x1A<<7 | 0x20, + 23797 - 19968: jis0208<<14 | 0x58<<7 | 0x51, + 23798 - 19968: jis0208<<14 | 0x24<<7 | 0x46, + 23802 - 19968: jis0208<<14 | 0x35<<7 | 0x17, + 23803 - 19968: jis0208<<14 | 0x1C<<7 | 0x33, + 23805 - 19968: jis0208<<14 | 0x35<<7 | 0x16, + 23809 - 19968: jis0212<<14 | 0x1A<<7 | 0x21, + 23814 - 19968: jis0212<<14 | 0x1A<<7 | 0x22, + 23815 - 19968: jis0208<<14 | 0x1E<<7 | 0x51, + 23819 - 19968: jis0208<<14 | 0x35<<7 | 0x1B, + 23821 - 19968: jis0212<<14 | 0x1A<<7 | 0x23, + 23822 - 19968: jis0208<<14 | 0x19<<7 | 0x49, + 23825 - 19968: jis0208<<14 | 0x35<<7 | 0x21, + 23826 - 19968: jis0212<<14 | 0x1A<<7 | 0x24, + 23828 - 19968: jis0208<<14 | 0x35<<7 | 0x22, + 23829 - 19968: jis0208<<14 | 0x35<<7 | 0x1C, + 23830 - 19968: jis0208<<14 | 0x12<<7 | 0x12, + 23831 - 19968: jis0208<<14 | 0x35<<7 | 0x1D, + 23832 - 19968: jis0208<<14 | 0x35<<7 | 0x26, + 23833 - 19968: jis0208<<14 | 0x35<<7 | 0x25, + 23834 - 19968: jis0208<<14 | 0x35<<7 | 0x24, + 23835 - 19968: jis0208<<14 | 0x35<<7 | 0x20, + 23839 - 19968: jis0208<<14 | 0x35<<7 | 0x1F, + 23842 - 19968: jis0208<<14 | 0x35<<7 | 0x23, + 23843 - 19968: jis0212<<14 | 0x1A<<7 | 0x26, + 23844 - 19968: jis0212<<14 | 0x1A<<7 | 0x27, + 23846 - 19968: jis0212<<14 | 0x1A<<7 | 0x28, + 23847 - 19968: jis0208<<14 | 0x58<<7 | 0x52, + 23849 - 19968: jis0208<<14 | 0x29<<7 | 0x57, + 23851 - 19968: jis0212<<14 | 0x1A<<7 | 0x25, + 23857 - 19968: jis0212<<14 | 0x1A<<7 | 0x2A, + 23860 - 19968: jis0212<<14 | 0x1A<<7 | 0x2B, + 23865 - 19968: jis0212<<14 | 0x1A<<7 | 0x2C, + 23869 - 19968: jis0212<<14 | 0x1A<<7 | 0x2D, + 23871 - 19968: jis0212<<14 | 0x1A<<7 | 0x2E, + 23874 - 19968: jis0208<<14 | 0x58<<7 | 0x55, + 23875 - 19968: jis0212<<14 | 0x1A<<7 | 0x30, + 23878 - 19968: jis0212<<14 | 0x1A<<7 | 0x31, + 23880 - 19968: jis0212<<14 | 0x1A<<7 | 0x32, + 23882 - 19968: jis0212<<14 | 0x1A<<7 | 0x36, + 23883 - 19968: jis0208<<14 | 0x35<<7 | 0x2A, + 23884 - 19968: jis0208<<14 | 0x35<<7 | 0x27, + 23886 - 19968: jis0208<<14 | 0x35<<7 | 0x29, + 23888 - 19968: jis0208<<14 | 0x2C<<7 | 0x51, + 23889 - 19968: jis0212<<14 | 0x1A<<7 | 0x34, + 23890 - 19968: jis0208<<14 | 0x35<<7 | 0x28, + 23891 - 19968: jis0208<<14 | 0x58<<7 | 0x53, + 23893 - 19968: jis0212<<14 | 0x1A<<7 | 0x33, + 23897 - 19968: jis0212<<14 | 0x1A<<7 | 0x35, + 23900 - 19968: jis0208<<14 | 0x35<<7 | 0x1E, + 23903 - 19968: jis0212<<14 | 0x1A<<7 | 0x37, + 23904 - 19968: jis0212<<14 | 0x1A<<7 | 0x38, + 23905 - 19968: jis0212<<14 | 0x1A<<7 | 0x39, + 23906 - 19968: jis0212<<14 | 0x1A<<7 | 0x3A, + 23908 - 19968: jis0212<<14 | 0x1A<<7 | 0x3B, + 23913 - 19968: jis0208<<14 | 0x1E<<7 | 0x52, + 23914 - 19968: jis0212<<14 | 0x1A<<7 | 0x3C, + 23916 - 19968: jis0208<<14 | 0x35<<7 | 0x2B, + 23917 - 19968: jis0208<<14 | 0x58<<7 | 0x56, + 23919 - 19968: jis0208<<14 | 0x19<<7 | 0x16, + 23920 - 19968: jis0212<<14 | 0x1A<<7 | 0x3E, + 23923 - 19968: jis0208<<14 | 0x35<<7 | 0x2C, + 23926 - 19968: jis0208<<14 | 0x35<<7 | 0x2D, + 23929 - 19968: jis0212<<14 | 0x1A<<7 | 0x3F, + 23930 - 19968: jis0212<<14 | 0x1A<<7 | 0x40, + 23934 - 19968: jis0212<<14 | 0x1A<<7 | 0x41, + 23935 - 19968: jis0212<<14 | 0x1A<<7 | 0x42, + 23937 - 19968: jis0212<<14 | 0x1A<<7 | 0x43, + 23938 - 19968: jis0208<<14 | 0x35<<7 | 0x30, + 23939 - 19968: jis0212<<14 | 0x1A<<7 | 0x44, + 23940 - 19968: jis0208<<14 | 0x35<<7 | 0x2F, + 23943 - 19968: jis0208<<14 | 0x35<<7 | 0x2E, + 23944 - 19968: jis0212<<14 | 0x1A<<7 | 0x45, + 23946 - 19968: jis0212<<14 | 0x1A<<7 | 0x46, + 23947 - 19968: jis0208<<14 | 0x24<<7 | 0x47, + 23948 - 19968: jis0208<<14 | 0x35<<7 | 0x19, + 23952 - 19968: jis0208<<14 | 0x35<<7 | 0x36, + 23954 - 19968: jis0212<<14 | 0x1A<<7 | 0x47, + 23955 - 19968: jis0212<<14 | 0x1A<<7 | 0x48, + 23956 - 19968: jis0212<<14 | 0x1A<<7 | 0x49, + 23957 - 19968: jis0212<<14 | 0x1A<<7 | 0x4A, + 23961 - 19968: jis0212<<14 | 0x1A<<7 | 0x4B, + 23963 - 19968: jis0212<<14 | 0x1A<<7 | 0x4C, + 23965 - 19968: jis0208<<14 | 0x35<<7 | 0x32, + 23967 - 19968: jis0212<<14 | 0x1A<<7 | 0x4D, + 23968 - 19968: jis0212<<14 | 0x1A<<7 | 0x4E, + 23970 - 19968: jis0208<<14 | 0x35<<7 | 0x31, + 23975 - 19968: jis0212<<14 | 0x1A<<7 | 0x4F, + 23979 - 19968: jis0212<<14 | 0x1A<<7 | 0x50, + 23980 - 19968: jis0208<<14 | 0x35<<7 | 0x33, + 23982 - 19968: jis0208<<14 | 0x35<<7 | 0x34, + 23984 - 19968: jis0212<<14 | 0x1A<<7 | 0x51, + 23986 - 19968: jis0212<<14 | 0x45<<7 | 0x53, + 23988 - 19968: jis0212<<14 | 0x1A<<7 | 0x52, + 23991 - 19968: jis0208<<14 | 0x35<<7 | 0x37, + 23992 - 19968: jis0208<<14 | 0x58<<7 | 0x57, + 23993 - 19968: jis0208<<14 | 0x58<<7 | 0x58, + 23994 - 19968: jis0208<<14 | 0x2D<<7 | 0x45, + 23996 - 19968: jis0208<<14 | 0x35<<7 | 0x38, + 23997 - 19968: jis0208<<14 | 0x35<<7 | 0x35, + 24003 - 19968: jis0212<<14 | 0x1A<<7 | 0x55, + 24007 - 19968: jis0212<<14 | 0x1A<<7 | 0x56, + 24009 - 19968: jis0208<<14 | 0x35<<7 | 0x39, + 24011 - 19968: jis0212<<14 | 0x1A<<7 | 0x57, + 24012 - 19968: jis0208<<14 | 0x13<<7 | 0x3F, + 24013 - 19968: jis0208<<14 | 0x35<<7 | 0x3A, + 24014 - 19968: jis0212<<14 | 0x1A<<7 | 0x59, + 24016 - 19968: jis0208<<14 | 0x58<<7 | 0x59, + 24018 - 19968: jis0208<<14 | 0x35<<7 | 0x3C, + 24019 - 19968: jis0208<<14 | 0x35<<7 | 0x3B, + 24022 - 19968: jis0208<<14 | 0x35<<7 | 0x3D, + 24024 - 19968: jis0212<<14 | 0x1A<<7 | 0x5A, + 24025 - 19968: jis0212<<14 | 0x1A<<7 | 0x5B, + 24027 - 19968: jis0208<<14 | 0x35<<7 | 0x3E, + 24029 - 19968: jis0208<<14 | 0x1F<<7 | 0x4D, + 24030 - 19968: jis0208<<14 | 0x1C<<7 | 0x02, + 24032 - 19968: jis0212<<14 | 0x1A<<7 | 0x5C, + 24033 - 19968: jis0208<<14 | 0x1C<<7 | 0x43, + 24035 - 19968: jis0208<<14 | 0x20<<7 | 0x42, + 24036 - 19968: jis0212<<14 | 0x1A<<7 | 0x5D, + 24037 - 19968: jis0208<<14 | 0x18<<7 | 0x08, + 24038 - 19968: jis0208<<14 | 0x19<<7 | 0x17, + 24039 - 19968: jis0208<<14 | 0x18<<7 | 0x09, + 24040 - 19968: jis0208<<14 | 0x14<<7 | 0x4F, + 24041 - 19968: jis0212<<14 | 0x1B<<7 | 0x00, + 24043 - 19968: jis0208<<14 | 0x35<<7 | 0x3F, + 24046 - 19968: jis0208<<14 | 0x19<<7 | 0x18, + 24049 - 19968: jis0208<<14 | 0x17<<7 | 0x29, + 24050 - 19968: jis0208<<14 | 0x35<<7 | 0x40, + 24051 - 19968: jis0208<<14 | 0x2B<<7 | 0x05, + 24052 - 19968: jis0208<<14 | 0x26<<7 | 0x22, + 24053 - 19968: jis0208<<14 | 0x35<<7 | 0x41, + 24055 - 19968: jis0208<<14 | 0x18<<7 | 0x0A, + 24056 - 19968: jis0212<<14 | 0x1B<<7 | 0x01, + 24057 - 19968: jis0212<<14 | 0x1B<<7 | 0x02, + 24059 - 19968: jis0208<<14 | 0x13<<7 | 0x0B, + 24061 - 19968: jis0208<<14 | 0x22<<7 | 0x06, + 24062 - 19968: jis0208<<14 | 0x15<<7 | 0x31, + 24064 - 19968: jis0212<<14 | 0x1B<<7 | 0x03, + 24066 - 19968: jis0208<<14 | 0x1A<<7 | 0x33, + 24067 - 19968: jis0208<<14 | 0x28<<7 | 0x3A, + 24070 - 19968: jis0208<<14 | 0x27<<7 | 0x20, + 24071 - 19968: jis0212<<14 | 0x1B<<7 | 0x04, + 24075 - 19968: jis0208<<14 | 0x35<<7 | 0x42, + 24076 - 19968: jis0208<<14 | 0x13<<7 | 0x54, + 24077 - 19968: jis0212<<14 | 0x1B<<7 | 0x05, + 24081 - 19968: jis0208<<14 | 0x35<<7 | 0x45, + 24082 - 19968: jis0212<<14 | 0x1B<<7 | 0x06, + 24084 - 19968: jis0212<<14 | 0x1B<<7 | 0x07, + 24085 - 19968: jis0212<<14 | 0x1B<<7 | 0x08, + 24086 - 19968: jis0208<<14 | 0x23<<7 | 0x00, + 24088 - 19968: jis0212<<14 | 0x1B<<7 | 0x09, + 24089 - 19968: jis0208<<14 | 0x35<<7 | 0x44, + 24090 - 19968: jis0208<<14 | 0x35<<7 | 0x43, + 24091 - 19968: jis0208<<14 | 0x35<<7 | 0x46, + 24093 - 19968: jis0208<<14 | 0x23<<7 | 0x4A, + 24095 - 19968: jis0212<<14 | 0x1B<<7 | 0x0A, + 24096 - 19968: jis0212<<14 | 0x1B<<7 | 0x0B, + 24101 - 19968: jis0208<<14 | 0x1E<<7 | 0x42, + 24104 - 19968: jis0212<<14 | 0x1B<<7 | 0x0D, + 24107 - 19968: jis0208<<14 | 0x1A<<7 | 0x34, + 24109 - 19968: jis0208<<14 | 0x1F<<7 | 0x29, + 24110 - 19968: jis0212<<14 | 0x1B<<7 | 0x0C, + 24111 - 19968: jis0208<<14 | 0x21<<7 | 0x32, + 24112 - 19968: jis0208<<14 | 0x14<<7 | 0x01, + 24114 - 19968: jis0212<<14 | 0x1B<<7 | 0x0E, + 24115 - 19968: jis0208<<14 | 0x23<<7 | 0x01, + 24117 - 19968: jis0212<<14 | 0x1B<<7 | 0x0F, + 24118 - 19968: jis0208<<14 | 0x35<<7 | 0x47, + 24119 - 19968: jis0208<<14 | 0x35<<7 | 0x48, + 24120 - 19968: jis0208<<14 | 0x1D<<7 | 0x4E, + 24125 - 19968: jis0208<<14 | 0x2A<<7 | 0x18, + 24126 - 19968: jis0212<<14 | 0x1B<<7 | 0x10, + 24128 - 19968: jis0208<<14 | 0x35<<7 | 0x4B, + 24131 - 19968: jis0208<<14 | 0x35<<7 | 0x4A, + 24132 - 19968: jis0208<<14 | 0x35<<7 | 0x49, + 24133 - 19968: jis0208<<14 | 0x28<<7 | 0x5C, + 24135 - 19968: jis0208<<14 | 0x35<<7 | 0x52, + 24137 - 19968: jis0212<<14 | 0x1B<<7 | 0x13, + 24139 - 19968: jis0212<<14 | 0x1B<<7 | 0x11, + 24140 - 19968: jis0208<<14 | 0x2A<<7 | 0x39, + 24142 - 19968: jis0208<<14 | 0x35<<7 | 0x4C, + 24144 - 19968: jis0212<<14 | 0x1B<<7 | 0x12, + 24145 - 19968: jis0212<<14 | 0x1B<<7 | 0x14, + 24148 - 19968: jis0208<<14 | 0x35<<7 | 0x4E, + 24149 - 19968: jis0208<<14 | 0x2A<<7 | 0x4A, + 24150 - 19968: jis0212<<14 | 0x1B<<7 | 0x15, + 24151 - 19968: jis0208<<14 | 0x35<<7 | 0x4D, + 24152 - 19968: jis0212<<14 | 0x1B<<7 | 0x16, + 24155 - 19968: jis0212<<14 | 0x1B<<7 | 0x17, + 24156 - 19968: jis0212<<14 | 0x1B<<7 | 0x18, + 24158 - 19968: jis0212<<14 | 0x1B<<7 | 0x19, + 24159 - 19968: jis0208<<14 | 0x35<<7 | 0x4F, + 24161 - 19968: jis0208<<14 | 0x27<<7 | 0x07, + 24162 - 19968: jis0208<<14 | 0x35<<7 | 0x50, + 24163 - 19968: jis0208<<14 | 0x29<<7 | 0x1D, + 24164 - 19968: jis0208<<14 | 0x35<<7 | 0x51, + 24168 - 19968: jis0212<<14 | 0x1B<<7 | 0x1A, + 24170 - 19968: jis0212<<14 | 0x1B<<7 | 0x1B, + 24171 - 19968: jis0212<<14 | 0x1B<<7 | 0x1C, + 24172 - 19968: jis0212<<14 | 0x1B<<7 | 0x1D, + 24173 - 19968: jis0212<<14 | 0x1B<<7 | 0x1E, + 24174 - 19968: jis0212<<14 | 0x1B<<7 | 0x1F, + 24176 - 19968: jis0212<<14 | 0x1B<<7 | 0x20, + 24178 - 19968: jis0208<<14 | 0x13<<7 | 0x12, + 24179 - 19968: jis0208<<14 | 0x29<<7 | 0x1E, + 24180 - 19968: jis0208<<14 | 0x26<<7 | 0x0E, + 24181 - 19968: jis0208<<14 | 0x35<<7 | 0x53, + 24182 - 19968: jis0208<<14 | 0x35<<7 | 0x54, + 24184 - 19968: jis0208<<14 | 0x18<<7 | 0x0B, + 24185 - 19968: jis0208<<14 | 0x13<<7 | 0x13, + 24186 - 19968: jis0208<<14 | 0x35<<7 | 0x55, + 24187 - 19968: jis0208<<14 | 0x17<<7 | 0x17, + 24188 - 19968: jis0208<<14 | 0x2C<<7 | 0x23, + 24189 - 19968: jis0208<<14 | 0x2C<<7 | 0x08, + 24190 - 19968: jis0208<<14 | 0x13<<7 | 0x55, + 24191 - 19968: jis0208<<14 | 0x35<<7 | 0x57, + 24192 - 19968: jis0212<<14 | 0x1B<<7 | 0x21, + 24193 - 19968: jis0208<<14 | 0x23<<7 | 0x02, + 24195 - 19968: jis0208<<14 | 0x18<<7 | 0x0C, + 24196 - 19968: jis0208<<14 | 0x1D<<7 | 0x10, + 24199 - 19968: jis0208<<14 | 0x27<<7 | 0x3E, + 24202 - 19968: jis0208<<14 | 0x1D<<7 | 0x11, + 24203 - 19968: jis0212<<14 | 0x1B<<7 | 0x22, + 24206 - 19968: jis0212<<14 | 0x1B<<7 | 0x23, + 24207 - 19968: jis0208<<14 | 0x1C<<7 | 0x57, + 24213 - 19968: jis0208<<14 | 0x23<<7 | 0x4B, + 24214 - 19968: jis0208<<14 | 0x29<<7 | 0x58, + 24215 - 19968: jis0208<<14 | 0x24<<7 | 0x18, + 24218 - 19968: jis0208<<14 | 0x18<<7 | 0x0D, + 24220 - 19968: jis0208<<14 | 0x28<<7 | 0x3B, + 24224 - 19968: jis0208<<14 | 0x35<<7 | 0x58, + 24226 - 19968: jis0212<<14 | 0x1B<<7 | 0x24, + 24228 - 19968: jis0212<<14 | 0x1B<<7 | 0x25, + 24229 - 19968: jis0212<<14 | 0x1B<<7 | 0x26, + 24230 - 19968: jis0208<<14 | 0x24<<7 | 0x38, + 24231 - 19968: jis0208<<14 | 0x19<<7 | 0x21, + 24232 - 19968: jis0212<<14 | 0x1B<<7 | 0x27, + 24234 - 19968: jis0212<<14 | 0x1B<<7 | 0x28, + 24235 - 19968: jis0208<<14 | 0x17<<7 | 0x2A, + 24236 - 19968: jis0212<<14 | 0x1B<<7 | 0x29, + 24237 - 19968: jis0208<<14 | 0x23<<7 | 0x4C, + 24241 - 19968: jis0212<<14 | 0x1B<<7 | 0x2A, + 24243 - 19968: jis0212<<14 | 0x1B<<7 | 0x2B, + 24245 - 19968: jis0208<<14 | 0x0F<<7 | 0x22, + 24246 - 19968: jis0208<<14 | 0x1C<<7 | 0x4D, + 24247 - 19968: jis0208<<14 | 0x18<<7 | 0x0E, + 24248 - 19968: jis0208<<14 | 0x2C<<7 | 0x26, + 24253 - 19968: jis0212<<14 | 0x1B<<7 | 0x2C, + 24254 - 19968: jis0212<<14 | 0x1B<<7 | 0x2D, + 24255 - 19968: jis0212<<14 | 0x1B<<7 | 0x2E, + 24257 - 19968: jis0208<<14 | 0x35<<7 | 0x59, + 24258 - 19968: jis0208<<14 | 0x35<<7 | 0x5A, + 24259 - 19968: jis0208<<14 | 0x26<<7 | 0x30, + 24262 - 19968: jis0212<<14 | 0x1B<<7 | 0x2F, + 24264 - 19968: jis0208<<14 | 0x35<<7 | 0x5B, + 24265 - 19968: jis0208<<14 | 0x2D<<7 | 0x56, + 24266 - 19968: jis0208<<14 | 0x2E<<7 | 0x0C, + 24267 - 19968: jis0212<<14 | 0x1B<<7 | 0x31, + 24268 - 19968: jis0212<<14 | 0x1B<<7 | 0x30, + 24270 - 19968: jis0212<<14 | 0x1B<<7 | 0x32, + 24271 - 19968: jis0208<<14 | 0x35<<7 | 0x5D, + 24272 - 19968: jis0208<<14 | 0x35<<7 | 0x5C, + 24273 - 19968: jis0212<<14 | 0x1B<<7 | 0x33, + 24274 - 19968: jis0212<<14 | 0x1B<<7 | 0x34, + 24275 - 19968: jis0208<<14 | 0x12<<7 | 0x26, + 24276 - 19968: jis0212<<14 | 0x1B<<7 | 0x35, + 24277 - 19968: jis0212<<14 | 0x1B<<7 | 0x36, + 24278 - 19968: jis0208<<14 | 0x36<<7 | 0x00, + 24282 - 19968: jis0208<<14 | 0x36<<7 | 0x03, + 24283 - 19968: jis0208<<14 | 0x36<<7 | 0x04, + 24284 - 19968: jis0212<<14 | 0x1B<<7 | 0x37, + 24285 - 19968: jis0208<<14 | 0x36<<7 | 0x02, + 24286 - 19968: jis0212<<14 | 0x1B<<7 | 0x38, + 24287 - 19968: jis0208<<14 | 0x28<<7 | 0x1F, + 24288 - 19968: jis0208<<14 | 0x1D<<7 | 0x12, + 24289 - 19968: jis0208<<14 | 0x36<<7 | 0x06, + 24290 - 19968: jis0208<<14 | 0x36<<7 | 0x05, + 24291 - 19968: jis0208<<14 | 0x36<<7 | 0x01, + 24293 - 19968: jis0212<<14 | 0x1B<<7 | 0x39, + 24296 - 19968: jis0208<<14 | 0x36<<7 | 0x07, + 24297 - 19968: jis0208<<14 | 0x36<<7 | 0x08, + 24299 - 19968: jis0212<<14 | 0x1B<<7 | 0x3A, + 24300 - 19968: jis0208<<14 | 0x36<<7 | 0x09, + 24304 - 19968: jis0208<<14 | 0x36<<7 | 0x0C, + 24305 - 19968: jis0208<<14 | 0x36<<7 | 0x0A, + 24307 - 19968: jis0208<<14 | 0x36<<7 | 0x0B, + 24308 - 19968: jis0208<<14 | 0x36<<7 | 0x0D, + 24310 - 19968: jis0208<<14 | 0x10<<7 | 0x43, + 24311 - 19968: jis0208<<14 | 0x23<<7 | 0x4D, + 24312 - 19968: jis0208<<14 | 0x36<<7 | 0x0E, + 24314 - 19968: jis0208<<14 | 0x16<<7 | 0x59, + 24315 - 19968: jis0208<<14 | 0x11<<7 | 0x55, + 24316 - 19968: jis0208<<14 | 0x26<<7 | 0x15, + 24318 - 19968: jis0208<<14 | 0x36<<7 | 0x0F, + 24319 - 19968: jis0208<<14 | 0x25<<7 | 0x5A, + 24321 - 19968: jis0208<<14 | 0x29<<7 | 0x3A, + 24322 - 19968: jis0212<<14 | 0x1B<<7 | 0x3B, + 24323 - 19968: jis0208<<14 | 0x36<<7 | 0x10, + 24324 - 19968: jis0208<<14 | 0x2E<<7 | 0x0D, + 24326 - 19968: jis0212<<14 | 0x1B<<7 | 0x3C, + 24327 - 19968: jis0212<<14 | 0x1B<<7 | 0x3D, + 24328 - 19968: jis0212<<14 | 0x1B<<7 | 0x3E, + 24329 - 19968: jis0208<<14 | 0x36<<7 | 0x11, + 24330 - 19968: jis0208<<14 | 0x29<<7 | 0x1F, + 24331 - 19968: jis0208<<14 | 0x36<<7 | 0x14, + 24332 - 19968: jis0208<<14 | 0x2F<<7 | 0x00, + 24333 - 19968: jis0208<<14 | 0x2F<<7 | 0x10, + 24334 - 19968: jis0212<<14 | 0x1B<<7 | 0x3F, + 24335 - 19968: jis0208<<14 | 0x1B<<7 | 0x0F, + 24336 - 19968: jis0208<<14 | 0x25<<7 | 0x54, + 24337 - 19968: jis0208<<14 | 0x36<<7 | 0x15, + 24339 - 19968: jis0208<<14 | 0x14<<7 | 0x3C, + 24340 - 19968: jis0208<<14 | 0x23<<7 | 0x03, + 24341 - 19968: jis0208<<14 | 0x0F<<7 | 0x59, + 24342 - 19968: jis0208<<14 | 0x36<<7 | 0x16, + 24343 - 19968: jis0208<<14 | 0x29<<7 | 0x05, + 24344 - 19968: jis0208<<14 | 0x18<<7 | 0x0F, + 24345 - 19968: jis0212<<14 | 0x1B<<7 | 0x40, + 24347 - 19968: jis0208<<14 | 0x22<<7 | 0x2F, + 24348 - 19968: jis0212<<14 | 0x1B<<7 | 0x41, + 24349 - 19968: jis0212<<14 | 0x1B<<7 | 0x42, + 24351 - 19968: jis0208<<14 | 0x23<<7 | 0x4E, + 24353 - 19968: jis0208<<14 | 0x58<<7 | 0x5A, + 24354 - 19968: jis0212<<14 | 0x1B<<7 | 0x44, + 24355 - 19968: jis0212<<14 | 0x1B<<7 | 0x45, + 24356 - 19968: jis0212<<14 | 0x1B<<7 | 0x46, + 24357 - 19968: jis0208<<14 | 0x2B<<7 | 0x4E, + 24358 - 19968: jis0208<<14 | 0x17<<7 | 0x18, + 24359 - 19968: jis0208<<14 | 0x17<<7 | 0x2B, + 24360 - 19968: jis0212<<14 | 0x1B<<7 | 0x47, + 24361 - 19968: jis0208<<14 | 0x36<<7 | 0x17, + 24363 - 19968: jis0212<<14 | 0x1B<<7 | 0x48, + 24364 - 19968: jis0212<<14 | 0x1B<<7 | 0x49, + 24365 - 19968: jis0208<<14 | 0x36<<7 | 0x18, + 24366 - 19968: jis0212<<14 | 0x1B<<7 | 0x4A, + 24367 - 19968: jis0208<<14 | 0x36<<7 | 0x1E, + 24368 - 19968: jis0212<<14 | 0x1B<<7 | 0x4B, + 24369 - 19968: jis0208<<14 | 0x1B<<7 | 0x44, + 24372 - 19968: jis0208<<14 | 0x58<<7 | 0x5B, + 24373 - 19968: jis0208<<14 | 0x23<<7 | 0x04, + 24374 - 19968: jis0212<<14 | 0x1B<<7 | 0x4D, + 24375 - 19968: jis0208<<14 | 0x15<<7 | 0x0E, + 24376 - 19968: jis0208<<14 | 0x36<<7 | 0x19, + 24379 - 19968: jis0212<<14 | 0x1B<<7 | 0x4E, + 24380 - 19968: jis0208<<14 | 0x28<<7 | 0x0A, + 24381 - 19968: jis0212<<14 | 0x1B<<7 | 0x4F, + 24382 - 19968: jis0208<<14 | 0x22<<7 | 0x25, + 24383 - 19968: jis0212<<14 | 0x1B<<7 | 0x50, + 24384 - 19968: jis0212<<14 | 0x1B<<7 | 0x51, + 24385 - 19968: jis0208<<14 | 0x36<<7 | 0x1A, + 24388 - 19968: jis0212<<14 | 0x1B<<7 | 0x52, + 24389 - 19968: jis0208<<14 | 0x58<<7 | 0x0B, + 24391 - 19968: jis0212<<14 | 0x1B<<7 | 0x54, + 24392 - 19968: jis0208<<14 | 0x36<<7 | 0x1B, + 24394 - 19968: jis0208<<14 | 0x15<<7 | 0x0F, + 24396 - 19968: jis0208<<14 | 0x36<<7 | 0x1C, + 24397 - 19968: jis0212<<14 | 0x1B<<7 | 0x55, + 24398 - 19968: jis0208<<14 | 0x36<<7 | 0x1D, + 24400 - 19968: jis0212<<14 | 0x1B<<7 | 0x56, + 24401 - 19968: jis0208<<14 | 0x36<<7 | 0x1F, + 24403 - 19968: jis0208<<14 | 0x24<<7 | 0x55, + 24404 - 19968: jis0212<<14 | 0x1B<<7 | 0x57, + 24406 - 19968: jis0208<<14 | 0x36<<7 | 0x20, + 24407 - 19968: jis0208<<14 | 0x36<<7 | 0x21, + 24408 - 19968: jis0212<<14 | 0x1B<<7 | 0x58, + 24409 - 19968: jis0208<<14 | 0x36<<7 | 0x22, + 24411 - 19968: jis0212<<14 | 0x1B<<7 | 0x59, + 24412 - 19968: jis0208<<14 | 0x36<<7 | 0x13, + 24413 - 19968: jis0208<<14 | 0x36<<7 | 0x12, + 24416 - 19968: jis0212<<14 | 0x1B<<7 | 0x5A, + 24417 - 19968: jis0208<<14 | 0x36<<7 | 0x23, + 24418 - 19968: jis0208<<14 | 0x16<<7 | 0x20, + 24419 - 19968: jis0212<<14 | 0x1B<<7 | 0x5B, + 24420 - 19968: jis0212<<14 | 0x1B<<7 | 0x5C, + 24422 - 19968: jis0208<<14 | 0x28<<7 | 0x06, + 24423 - 19968: jis0208<<14 | 0x58<<7 | 0x5C, + 24425 - 19968: jis0208<<14 | 0x19<<7 | 0x2B, + 24426 - 19968: jis0208<<14 | 0x28<<7 | 0x16, + 24427 - 19968: jis0208<<14 | 0x23<<7 | 0x05, + 24428 - 19968: jis0208<<14 | 0x28<<7 | 0x2A, + 24429 - 19968: jis0208<<14 | 0x36<<7 | 0x24, + 24431 - 19968: jis0212<<14 | 0x1C<<7 | 0x00, + 24432 - 19968: jis0208<<14 | 0x1D<<7 | 0x13, + 24433 - 19968: jis0208<<14 | 0x10<<7 | 0x25, + 24434 - 19968: jis0212<<14 | 0x1C<<7 | 0x01, + 24435 - 19968: jis0208<<14 | 0x36<<7 | 0x25, + 24436 - 19968: jis0212<<14 | 0x1C<<7 | 0x02, + 24437 - 19968: jis0212<<14 | 0x1C<<7 | 0x03, + 24439 - 19968: jis0208<<14 | 0x36<<7 | 0x26, + 24440 - 19968: jis0212<<14 | 0x1C<<7 | 0x04, + 24441 - 19968: jis0208<<14 | 0x2B<<7 | 0x51, + 24442 - 19968: jis0212<<14 | 0x1C<<7 | 0x05, + 24444 - 19968: jis0208<<14 | 0x27<<7 | 0x3F, + 24445 - 19968: jis0212<<14 | 0x1C<<7 | 0x06, + 24446 - 19968: jis0212<<14 | 0x1C<<7 | 0x07, + 24447 - 19968: jis0208<<14 | 0x36<<7 | 0x29, + 24448 - 19968: jis0208<<14 | 0x10<<7 | 0x5C, + 24449 - 19968: jis0208<<14 | 0x1F<<7 | 0x0B, + 24450 - 19968: jis0208<<14 | 0x36<<7 | 0x28, + 24451 - 19968: jis0208<<14 | 0x36<<7 | 0x27, + 24452 - 19968: jis0208<<14 | 0x16<<7 | 0x21, + 24453 - 19968: jis0208<<14 | 0x21<<7 | 0x33, + 24455 - 19968: jis0208<<14 | 0x36<<7 | 0x2D, + 24456 - 19968: jis0208<<14 | 0x36<<7 | 0x2B, + 24457 - 19968: jis0212<<14 | 0x1C<<7 | 0x08, + 24458 - 19968: jis0208<<14 | 0x36<<7 | 0x2A, + 24459 - 19968: jis0208<<14 | 0x2D<<7 | 0x06, + 24460 - 19968: jis0208<<14 | 0x17<<7 | 0x44, + 24461 - 19968: jis0212<<14 | 0x1C<<7 | 0x09, + 24463 - 19968: jis0212<<14 | 0x1C<<7 | 0x0A, + 24464 - 19968: jis0208<<14 | 0x1C<<7 | 0x58, + 24465 - 19968: jis0208<<14 | 0x36<<7 | 0x2C, + 24466 - 19968: jis0208<<14 | 0x24<<7 | 0x2B, + 24467 - 19968: jis0208<<14 | 0x1C<<7 | 0x1D, + 24470 - 19968: jis0212<<14 | 0x1C<<7 | 0x0B, + 24471 - 19968: jis0208<<14 | 0x25<<7 | 0x1F, + 24472 - 19968: jis0208<<14 | 0x36<<7 | 0x30, + 24473 - 19968: jis0208<<14 | 0x36<<7 | 0x2F, + 24476 - 19968: jis0212<<14 | 0x1C<<7 | 0x0C, + 24477 - 19968: jis0212<<14 | 0x1C<<7 | 0x0D, + 24478 - 19968: jis0208<<14 | 0x36<<7 | 0x2E, + 24480 - 19968: jis0208<<14 | 0x36<<7 | 0x31, + 24481 - 19968: jis0208<<14 | 0x17<<7 | 0x45, + 24482 - 19968: jis0212<<14 | 0x1C<<7 | 0x0E, + 24484 - 19968: jis0212<<14 | 0x1C<<7 | 0x11, + 24487 - 19968: jis0212<<14 | 0x1C<<7 | 0x0F, + 24488 - 19968: jis0208<<14 | 0x36<<7 | 0x32, + 24489 - 19968: jis0208<<14 | 0x28<<7 | 0x5B, + 24490 - 19968: jis0208<<14 | 0x1C<<7 | 0x3A, + 24491 - 19968: jis0212<<14 | 0x1C<<7 | 0x10, + 24492 - 19968: jis0212<<14 | 0x1C<<7 | 0x12, + 24493 - 19968: jis0208<<14 | 0x36<<7 | 0x33, + 24494 - 19968: jis0208<<14 | 0x27<<7 | 0x58, + 24495 - 19968: jis0212<<14 | 0x1C<<7 | 0x13, + 24496 - 19968: jis0212<<14 | 0x1C<<7 | 0x14, + 24497 - 19968: jis0212<<14 | 0x1C<<7 | 0x15, + 24499 - 19968: jis0208<<14 | 0x25<<7 | 0x20, + 24500 - 19968: jis0208<<14 | 0x23<<7 | 0x06, + 24503 - 19968: jis0208<<14 | 0x58<<7 | 0x5D, + 24504 - 19968: jis0212<<14 | 0x1C<<7 | 0x16, + 24505 - 19968: jis0208<<14 | 0x24<<7 | 0x0F, + 24508 - 19968: jis0208<<14 | 0x36<<7 | 0x34, + 24509 - 19968: jis0208<<14 | 0x14<<7 | 0x0A, + 24515 - 19968: jis0208<<14 | 0x1E<<7 | 0x13, + 24516 - 19968: jis0212<<14 | 0x1C<<7 | 0x17, + 24517 - 19968: jis0208<<14 | 0x28<<7 | 0x0B, + 24519 - 19968: jis0212<<14 | 0x1C<<7 | 0x18, + 24520 - 19968: jis0212<<14 | 0x1C<<7 | 0x19, + 24521 - 19968: jis0212<<14 | 0x1C<<7 | 0x1A, + 24523 - 19968: jis0212<<14 | 0x1C<<7 | 0x1B, + 24524 - 19968: jis0208<<14 | 0x13<<7 | 0x56, + 24525 - 19968: jis0208<<14 | 0x26<<7 | 0x05, + 24528 - 19968: jis0212<<14 | 0x1C<<7 | 0x1C, + 24529 - 19968: jis0212<<14 | 0x1C<<7 | 0x1D, + 24530 - 19968: jis0212<<14 | 0x1C<<7 | 0x1E, + 24531 - 19968: jis0212<<14 | 0x1C<<7 | 0x1F, + 24532 - 19968: jis0212<<14 | 0x1C<<7 | 0x20, + 24534 - 19968: jis0208<<14 | 0x36<<7 | 0x35, + 24535 - 19968: jis0208<<14 | 0x1A<<7 | 0x35, + 24536 - 19968: jis0208<<14 | 0x2A<<7 | 0x19, + 24537 - 19968: jis0208<<14 | 0x2A<<7 | 0x1A, + 24540 - 19968: jis0208<<14 | 0x10<<7 | 0x5D, + 24541 - 19968: jis0208<<14 | 0x36<<7 | 0x3A, + 24542 - 19968: jis0208<<14 | 0x59<<7 | 0x00, + 24544 - 19968: jis0208<<14 | 0x22<<7 | 0x48, + 24545 - 19968: jis0212<<14 | 0x1C<<7 | 0x22, + 24546 - 19968: jis0212<<14 | 0x1C<<7 | 0x23, + 24548 - 19968: jis0208<<14 | 0x36<<7 | 0x37, + 24552 - 19968: jis0212<<14 | 0x1C<<7 | 0x24, + 24553 - 19968: jis0212<<14 | 0x1C<<7 | 0x25, + 24554 - 19968: jis0212<<14 | 0x1C<<7 | 0x26, + 24555 - 19968: jis0208<<14 | 0x11<<7 | 0x56, + 24556 - 19968: jis0212<<14 | 0x1C<<7 | 0x27, + 24557 - 19968: jis0212<<14 | 0x1C<<7 | 0x28, + 24558 - 19968: jis0212<<14 | 0x1C<<7 | 0x29, + 24559 - 19968: jis0212<<14 | 0x1C<<7 | 0x2A, + 24560 - 19968: jis0208<<14 | 0x37<<7 | 0x0C, + 24561 - 19968: jis0208<<14 | 0x36<<7 | 0x39, + 24562 - 19968: jis0212<<14 | 0x1C<<7 | 0x2B, + 24563 - 19968: jis0212<<14 | 0x1C<<7 | 0x2C, + 24565 - 19968: jis0208<<14 | 0x26<<7 | 0x0F, + 24566 - 19968: jis0212<<14 | 0x1C<<7 | 0x2D, + 24568 - 19968: jis0208<<14 | 0x36<<7 | 0x38, + 24570 - 19968: jis0212<<14 | 0x1C<<7 | 0x2E, + 24571 - 19968: jis0208<<14 | 0x36<<7 | 0x36, + 24572 - 19968: jis0212<<14 | 0x1C<<7 | 0x2F, + 24573 - 19968: jis0208<<14 | 0x18<<7 | 0x59, + 24575 - 19968: jis0208<<14 | 0x36<<7 | 0x3C, + 24583 - 19968: jis0212<<14 | 0x1C<<7 | 0x30, + 24586 - 19968: jis0212<<14 | 0x1C<<7 | 0x31, + 24589 - 19968: jis0212<<14 | 0x1C<<7 | 0x32, + 24590 - 19968: jis0208<<14 | 0x36<<7 | 0x42, + 24591 - 19968: jis0208<<14 | 0x36<<7 | 0x48, + 24592 - 19968: jis0208<<14 | 0x36<<7 | 0x40, + 24594 - 19968: jis0208<<14 | 0x24<<7 | 0x3B, + 24595 - 19968: jis0212<<14 | 0x1C<<7 | 0x33, + 24596 - 19968: jis0212<<14 | 0x1C<<7 | 0x34, + 24597 - 19968: jis0208<<14 | 0x36<<7 | 0x45, + 24598 - 19968: jis0208<<14 | 0x28<<7 | 0x3C, + 24599 - 19968: jis0212<<14 | 0x1C<<7 | 0x35, + 24600 - 19968: jis0212<<14 | 0x1C<<7 | 0x36, + 24601 - 19968: jis0208<<14 | 0x36<<7 | 0x3F, + 24602 - 19968: jis0212<<14 | 0x1C<<7 | 0x37, + 24603 - 19968: jis0208<<14 | 0x36<<7 | 0x44, + 24604 - 19968: jis0208<<14 | 0x2D<<7 | 0x46, + 24605 - 19968: jis0208<<14 | 0x1A<<7 | 0x36, + 24607 - 19968: jis0212<<14 | 0x1C<<7 | 0x38, + 24608 - 19968: jis0208<<14 | 0x21<<7 | 0x34, + 24609 - 19968: jis0208<<14 | 0x36<<7 | 0x3D, + 24612 - 19968: jis0212<<14 | 0x1C<<7 | 0x39, + 24613 - 19968: jis0208<<14 | 0x14<<7 | 0x3D, + 24614 - 19968: jis0208<<14 | 0x36<<7 | 0x47, + 24615 - 19968: jis0208<<14 | 0x1F<<7 | 0x0C, + 24616 - 19968: jis0208<<14 | 0x10<<7 | 0x44, + 24617 - 19968: jis0208<<14 | 0x36<<7 | 0x41, + 24618 - 19968: jis0208<<14 | 0x11<<7 | 0x57, + 24619 - 19968: jis0208<<14 | 0x36<<7 | 0x46, + 24621 - 19968: jis0212<<14 | 0x1C<<7 | 0x3A, + 24623 - 19968: jis0208<<14 | 0x15<<7 | 0x10, + 24625 - 19968: jis0208<<14 | 0x36<<7 | 0x43, + 24627 - 19968: jis0212<<14 | 0x1C<<7 | 0x3B, + 24629 - 19968: jis0212<<14 | 0x1C<<7 | 0x3C, + 24634 - 19968: jis0208<<14 | 0x36<<7 | 0x49, + 24640 - 19968: jis0212<<14 | 0x1C<<7 | 0x3D, + 24641 - 19968: jis0208<<14 | 0x36<<7 | 0x4B, + 24642 - 19968: jis0208<<14 | 0x36<<7 | 0x55, + 24643 - 19968: jis0208<<14 | 0x36<<7 | 0x53, + 24646 - 19968: jis0208<<14 | 0x36<<7 | 0x50, + 24647 - 19968: jis0212<<14 | 0x1C<<7 | 0x3E, + 24648 - 19968: jis0212<<14 | 0x1C<<7 | 0x3F, + 24649 - 19968: jis0212<<14 | 0x1C<<7 | 0x40, + 24650 - 19968: jis0208<<14 | 0x36<<7 | 0x4F, + 24651 - 19968: jis0208<<14 | 0x2D<<7 | 0x57, + 24652 - 19968: jis0212<<14 | 0x1C<<7 | 0x41, + 24653 - 19968: jis0208<<14 | 0x36<<7 | 0x51, + 24656 - 19968: jis0208<<14 | 0x15<<7 | 0x11, + 24657 - 19968: jis0212<<14 | 0x1C<<7 | 0x42, + 24658 - 19968: jis0208<<14 | 0x18<<7 | 0x10, + 24660 - 19968: jis0212<<14 | 0x1C<<7 | 0x43, + 24661 - 19968: jis0208<<14 | 0x1C<<7 | 0x59, + 24662 - 19968: jis0212<<14 | 0x1C<<7 | 0x44, + 24663 - 19968: jis0212<<14 | 0x1C<<7 | 0x45, + 24665 - 19968: jis0208<<14 | 0x36<<7 | 0x58, + 24666 - 19968: jis0208<<14 | 0x36<<7 | 0x4A, + 24669 - 19968: jis0208<<14 | 0x59<<7 | 0x01, + 24671 - 19968: jis0208<<14 | 0x36<<7 | 0x4E, + 24672 - 19968: jis0208<<14 | 0x36<<7 | 0x3E, + 24673 - 19968: jis0212<<14 | 0x1C<<7 | 0x47, + 24674 - 19968: jis0208<<14 | 0x11<<7 | 0x59, + 24675 - 19968: jis0208<<14 | 0x36<<7 | 0x52, + 24676 - 19968: jis0208<<14 | 0x36<<7 | 0x54, + 24677 - 19968: jis0208<<14 | 0x22<<7 | 0x30, + 24679 - 19968: jis0212<<14 | 0x1C<<7 | 0x48, + 24680 - 19968: jis0208<<14 | 0x19<<7 | 0x07, + 24681 - 19968: jis0208<<14 | 0x11<<7 | 0x17, + 24682 - 19968: jis0208<<14 | 0x36<<7 | 0x4C, + 24683 - 19968: jis0208<<14 | 0x36<<7 | 0x57, + 24684 - 19968: jis0208<<14 | 0x36<<7 | 0x56, + 24685 - 19968: jis0208<<14 | 0x15<<7 | 0x12, + 24687 - 19968: jis0208<<14 | 0x21<<7 | 0x08, + 24688 - 19968: jis0208<<14 | 0x12<<7 | 0x45, + 24689 - 19968: jis0212<<14 | 0x1C<<7 | 0x49, + 24693 - 19968: jis0208<<14 | 0x16<<7 | 0x22, + 24695 - 19968: jis0208<<14 | 0x36<<7 | 0x4D, + 24702 - 19968: jis0212<<14 | 0x1C<<7 | 0x4A, + 24703 - 19968: jis0212<<14 | 0x1C<<7 | 0x4B, + 24705 - 19968: jis0208<<14 | 0x36<<7 | 0x59, + 24706 - 19968: jis0212<<14 | 0x1C<<7 | 0x4C, + 24707 - 19968: jis0208<<14 | 0x36<<7 | 0x5C, + 24708 - 19968: jis0208<<14 | 0x37<<7 | 0x00, + 24709 - 19968: jis0208<<14 | 0x59<<7 | 0x02, + 24710 - 19968: jis0212<<14 | 0x1C<<7 | 0x4D, + 24712 - 19968: jis0212<<14 | 0x1C<<7 | 0x4E, + 24713 - 19968: jis0208<<14 | 0x1B<<7 | 0x1C, + 24714 - 19968: jis0208<<14 | 0x59<<7 | 0x03, + 24715 - 19968: jis0208<<14 | 0x37<<7 | 0x06, + 24716 - 19968: jis0208<<14 | 0x23<<7 | 0x4F, + 24717 - 19968: jis0208<<14 | 0x36<<7 | 0x5A, + 24718 - 19968: jis0212<<14 | 0x1C<<7 | 0x50, + 24721 - 19968: jis0212<<14 | 0x1C<<7 | 0x51, + 24722 - 19968: jis0208<<14 | 0x37<<7 | 0x04, + 24723 - 19968: jis0212<<14 | 0x1C<<7 | 0x52, + 24724 - 19968: jis0208<<14 | 0x11<<7 | 0x58, + 24725 - 19968: jis0212<<14 | 0x1C<<7 | 0x53, + 24726 - 19968: jis0208<<14 | 0x37<<7 | 0x02, + 24727 - 19968: jis0208<<14 | 0x37<<7 | 0x03, + 24728 - 19968: jis0212<<14 | 0x1C<<7 | 0x54, + 24730 - 19968: jis0208<<14 | 0x36<<7 | 0x5D, + 24731 - 19968: jis0208<<14 | 0x37<<7 | 0x01, + 24733 - 19968: jis0212<<14 | 0x1C<<7 | 0x55, + 24734 - 19968: jis0212<<14 | 0x1C<<7 | 0x56, + 24735 - 19968: jis0208<<14 | 0x17<<7 | 0x46, + 24736 - 19968: jis0208<<14 | 0x2C<<7 | 0x09, + 24738 - 19968: jis0212<<14 | 0x1C<<7 | 0x57, + 24739 - 19968: jis0208<<14 | 0x13<<7 | 0x14, + 24740 - 19968: jis0212<<14 | 0x1C<<7 | 0x58, + 24741 - 19968: jis0212<<14 | 0x1C<<7 | 0x59, + 24742 - 19968: jis0208<<14 | 0x10<<7 | 0x38, + 24743 - 19968: jis0208<<14 | 0x37<<7 | 0x05, + 24744 - 19968: jis0212<<14 | 0x1C<<7 | 0x5A, + 24745 - 19968: jis0208<<14 | 0x26<<7 | 0x19, + 24746 - 19968: jis0208<<14 | 0x0F<<7 | 0x0C, + 24752 - 19968: jis0212<<14 | 0x1C<<7 | 0x5B, + 24753 - 19968: jis0212<<14 | 0x1C<<7 | 0x5C, + 24754 - 19968: jis0208<<14 | 0x27<<7 | 0x40, + 24755 - 19968: jis0208<<14 | 0x36<<7 | 0x3B, + 24756 - 19968: jis0208<<14 | 0x37<<7 | 0x0B, + 24757 - 19968: jis0208<<14 | 0x37<<7 | 0x0F, + 24758 - 19968: jis0208<<14 | 0x2B<<7 | 0x44, + 24759 - 19968: jis0212<<14 | 0x1C<<7 | 0x5D, + 24760 - 19968: jis0208<<14 | 0x37<<7 | 0x08, + 24763 - 19968: jis0212<<14 | 0x1D<<7 | 0x00, + 24764 - 19968: jis0208<<14 | 0x24<<7 | 0x48, + 24765 - 19968: jis0208<<14 | 0x37<<7 | 0x0D, + 24766 - 19968: jis0212<<14 | 0x1D<<7 | 0x01, + 24770 - 19968: jis0212<<14 | 0x1D<<7 | 0x02, + 24772 - 19968: jis0212<<14 | 0x1D<<7 | 0x03, + 24773 - 19968: jis0208<<14 | 0x1D<<7 | 0x4F, + 24774 - 19968: jis0208<<14 | 0x37<<7 | 0x0E, + 24775 - 19968: jis0208<<14 | 0x25<<7 | 0x36, + 24776 - 19968: jis0212<<14 | 0x1D<<7 | 0x04, + 24777 - 19968: jis0212<<14 | 0x1D<<7 | 0x05, + 24778 - 19968: jis0212<<14 | 0x1D<<7 | 0x06, + 24779 - 19968: jis0212<<14 | 0x1D<<7 | 0x07, + 24782 - 19968: jis0212<<14 | 0x1D<<7 | 0x08, + 24783 - 19968: jis0212<<14 | 0x1D<<7 | 0x09, + 24785 - 19968: jis0208<<14 | 0x2E<<7 | 0x26, + 24787 - 19968: jis0208<<14 | 0x37<<7 | 0x0A, + 24788 - 19968: jis0212<<14 | 0x1D<<7 | 0x0A, + 24789 - 19968: jis0208<<14 | 0x59<<7 | 0x05, + 24792 - 19968: jis0208<<14 | 0x37<<7 | 0x10, + 24793 - 19968: jis0212<<14 | 0x1D<<7 | 0x0C, + 24794 - 19968: jis0208<<14 | 0x18<<7 | 0x5A, + 24795 - 19968: jis0212<<14 | 0x1D<<7 | 0x0D, + 24796 - 19968: jis0208<<14 | 0x1F<<7 | 0x2A, + 24797 - 19968: jis0212<<14 | 0x1D<<7 | 0x0E, + 24798 - 19968: jis0208<<14 | 0x59<<7 | 0x04, + 24799 - 19968: jis0208<<14 | 0x0F<<7 | 0x33, + 24800 - 19968: jis0208<<14 | 0x37<<7 | 0x09, + 24801 - 19968: jis0208<<14 | 0x37<<7 | 0x07, + 24802 - 19968: jis0212<<14 | 0x1D<<7 | 0x10, + 24803 - 19968: jis0208<<14 | 0x20<<7 | 0x39, + 24805 - 19968: jis0212<<14 | 0x1D<<7 | 0x11, + 24807 - 19968: jis0208<<14 | 0x36<<7 | 0x5B, + 24808 - 19968: jis0208<<14 | 0x1A<<7 | 0x13, + 24816 - 19968: jis0208<<14 | 0x21<<7 | 0x25, + 24817 - 19968: jis0208<<14 | 0x37<<7 | 0x1C, + 24818 - 19968: jis0208<<14 | 0x59<<7 | 0x07, + 24819 - 19968: jis0208<<14 | 0x20<<7 | 0x3A, + 24820 - 19968: jis0208<<14 | 0x37<<7 | 0x17, + 24821 - 19968: jis0212<<14 | 0x1D<<7 | 0x13, + 24822 - 19968: jis0208<<14 | 0x37<<7 | 0x14, + 24823 - 19968: jis0208<<14 | 0x37<<7 | 0x15, + 24824 - 19968: jis0212<<14 | 0x1D<<7 | 0x14, + 24825 - 19968: jis0208<<14 | 0x1B<<7 | 0x45, + 24826 - 19968: jis0208<<14 | 0x37<<7 | 0x18, + 24827 - 19968: jis0208<<14 | 0x37<<7 | 0x1B, + 24828 - 19968: jis0212<<14 | 0x1D<<7 | 0x15, + 24829 - 19968: jis0212<<14 | 0x1D<<7 | 0x16, + 24832 - 19968: jis0208<<14 | 0x37<<7 | 0x16, + 24833 - 19968: jis0208<<14 | 0x1C<<7 | 0x04, + 24834 - 19968: jis0212<<14 | 0x1D<<7 | 0x17, + 24835 - 19968: jis0208<<14 | 0x37<<7 | 0x19, + 24838 - 19968: jis0208<<14 | 0x37<<7 | 0x13, + 24839 - 19968: jis0212<<14 | 0x1D<<7 | 0x18, + 24840 - 19968: jis0208<<14 | 0x2B<<7 | 0x5B, + 24841 - 19968: jis0208<<14 | 0x2B<<7 | 0x5A, + 24842 - 19968: jis0212<<14 | 0x1D<<7 | 0x19, + 24844 - 19968: jis0212<<14 | 0x1D<<7 | 0x1A, + 24845 - 19968: jis0208<<14 | 0x37<<7 | 0x1D, + 24846 - 19968: jis0208<<14 | 0x37<<7 | 0x1E, + 24847 - 19968: jis0208<<14 | 0x0F<<7 | 0x34, + 24848 - 19968: jis0212<<14 | 0x1D<<7 | 0x1B, + 24849 - 19968: jis0208<<14 | 0x59<<7 | 0x08, + 24850 - 19968: jis0212<<14 | 0x1D<<7 | 0x1D, + 24851 - 19968: jis0212<<14 | 0x1D<<7 | 0x1E, + 24852 - 19968: jis0212<<14 | 0x1D<<7 | 0x1F, + 24853 - 19968: jis0208<<14 | 0x37<<7 | 0x12, + 24854 - 19968: jis0212<<14 | 0x1D<<7 | 0x20, + 24855 - 19968: jis0212<<14 | 0x1D<<7 | 0x21, + 24857 - 19968: jis0212<<14 | 0x1D<<7 | 0x22, + 24858 - 19968: jis0208<<14 | 0x15<<7 | 0x51, + 24859 - 19968: jis0208<<14 | 0x0F<<7 | 0x05, + 24860 - 19968: jis0212<<14 | 0x1D<<7 | 0x23, + 24862 - 19968: jis0212<<14 | 0x1D<<7 | 0x24, + 24863 - 19968: jis0208<<14 | 0x13<<7 | 0x15, + 24864 - 19968: jis0208<<14 | 0x59<<7 | 0x06, + 24865 - 19968: jis0208<<14 | 0x37<<7 | 0x1A, + 24866 - 19968: jis0212<<14 | 0x1D<<7 | 0x25, + 24871 - 19968: jis0208<<14 | 0x37<<7 | 0x22, + 24872 - 19968: jis0208<<14 | 0x37<<7 | 0x21, + 24874 - 19968: jis0212<<14 | 0x1D<<7 | 0x26, + 24875 - 19968: jis0212<<14 | 0x1D<<7 | 0x27, + 24876 - 19968: jis0208<<14 | 0x37<<7 | 0x26, + 24880 - 19968: jis0208<<14 | 0x59<<7 | 0x0A, + 24881 - 19968: jis0212<<14 | 0x1D<<7 | 0x29, + 24884 - 19968: jis0208<<14 | 0x37<<7 | 0x27, + 24885 - 19968: jis0212<<14 | 0x1D<<7 | 0x2A, + 24886 - 19968: jis0212<<14 | 0x1D<<7 | 0x2B, + 24887 - 19968: jis0208<<14 | 0x59<<7 | 0x09, + 24889 - 19968: jis0212<<14 | 0x1D<<7 | 0x2D, + 24892 - 19968: jis0208<<14 | 0x37<<7 | 0x25, + 24893 - 19968: jis0208<<14 | 0x37<<7 | 0x28, + 24894 - 19968: jis0208<<14 | 0x37<<7 | 0x20, + 24895 - 19968: jis0208<<14 | 0x37<<7 | 0x24, + 24897 - 19968: jis0212<<14 | 0x1D<<7 | 0x2E, + 24898 - 19968: jis0208<<14 | 0x37<<7 | 0x29, + 24900 - 19968: jis0208<<14 | 0x37<<7 | 0x2A, + 24901 - 19968: jis0212<<14 | 0x1D<<7 | 0x2F, + 24902 - 19968: jis0212<<14 | 0x1D<<7 | 0x30, + 24903 - 19968: jis0208<<14 | 0x37<<7 | 0x1F, + 24904 - 19968: jis0208<<14 | 0x1A<<7 | 0x5B, + 24905 - 19968: jis0212<<14 | 0x1D<<7 | 0x31, + 24906 - 19968: jis0208<<14 | 0x37<<7 | 0x23, + 24907 - 19968: jis0208<<14 | 0x21<<7 | 0x35, + 24908 - 19968: jis0208<<14 | 0x18<<7 | 0x11, + 24909 - 19968: jis0208<<14 | 0x37<<7 | 0x11, + 24910 - 19968: jis0208<<14 | 0x1E<<7 | 0x14, + 24915 - 19968: jis0208<<14 | 0x37<<7 | 0x37, + 24917 - 19968: jis0208<<14 | 0x29<<7 | 0x48, + 24920 - 19968: jis0208<<14 | 0x37<<7 | 0x2D, + 24921 - 19968: jis0208<<14 | 0x37<<7 | 0x2E, + 24922 - 19968: jis0208<<14 | 0x37<<7 | 0x2F, + 24925 - 19968: jis0208<<14 | 0x37<<7 | 0x36, + 24926 - 19968: jis0212<<14 | 0x1D<<7 | 0x32, + 24927 - 19968: jis0208<<14 | 0x37<<7 | 0x35, + 24928 - 19968: jis0212<<14 | 0x1D<<7 | 0x33, + 24930 - 19968: jis0208<<14 | 0x2A<<7 | 0x5C, + 24931 - 19968: jis0208<<14 | 0x13<<7 | 0x16, + 24933 - 19968: jis0208<<14 | 0x37<<7 | 0x33, + 24935 - 19968: jis0208<<14 | 0x16<<7 | 0x24, + 24936 - 19968: jis0208<<14 | 0x12<<7 | 0x13, + 24939 - 19968: jis0208<<14 | 0x37<<7 | 0x30, + 24940 - 19968: jis0212<<14 | 0x1D<<7 | 0x34, + 24942 - 19968: jis0208<<14 | 0x2D<<7 | 0x17, + 24943 - 19968: jis0208<<14 | 0x37<<7 | 0x32, + 24944 - 19968: jis0208<<14 | 0x0F<<7 | 0x35, + 24945 - 19968: jis0208<<14 | 0x37<<7 | 0x34, + 24946 - 19968: jis0212<<14 | 0x1D<<7 | 0x35, + 24947 - 19968: jis0208<<14 | 0x37<<7 | 0x2B, + 24948 - 19968: jis0208<<14 | 0x37<<7 | 0x31, + 24949 - 19968: jis0208<<14 | 0x37<<7 | 0x38, + 24950 - 19968: jis0208<<14 | 0x16<<7 | 0x23, + 24951 - 19968: jis0208<<14 | 0x37<<7 | 0x2C, + 24952 - 19968: jis0212<<14 | 0x1D<<7 | 0x36, + 24955 - 19968: jis0212<<14 | 0x1D<<7 | 0x37, + 24956 - 19968: jis0212<<14 | 0x1D<<7 | 0x38, + 24958 - 19968: jis0208<<14 | 0x2C<<7 | 0x3C, + 24959 - 19968: jis0212<<14 | 0x1D<<7 | 0x39, + 24960 - 19968: jis0212<<14 | 0x1D<<7 | 0x3A, + 24961 - 19968: jis0212<<14 | 0x1D<<7 | 0x3B, + 24962 - 19968: jis0208<<14 | 0x2C<<7 | 0x0A, + 24963 - 19968: jis0212<<14 | 0x1D<<7 | 0x3C, + 24964 - 19968: jis0212<<14 | 0x1D<<7 | 0x3D, + 24967 - 19968: jis0208<<14 | 0x37<<7 | 0x3B, + 24970 - 19968: jis0208<<14 | 0x37<<7 | 0x3F, + 24971 - 19968: jis0212<<14 | 0x1D<<7 | 0x3E, + 24973 - 19968: jis0212<<14 | 0x1D<<7 | 0x3F, + 24974 - 19968: jis0208<<14 | 0x20<<7 | 0x5D, + 24976 - 19968: jis0208<<14 | 0x2D<<7 | 0x58, + 24977 - 19968: jis0208<<14 | 0x37<<7 | 0x40, + 24978 - 19968: jis0212<<14 | 0x1D<<7 | 0x40, + 24979 - 19968: jis0212<<14 | 0x1D<<7 | 0x41, + 24980 - 19968: jis0208<<14 | 0x37<<7 | 0x3D, + 24982 - 19968: jis0208<<14 | 0x37<<7 | 0x3A, + 24983 - 19968: jis0212<<14 | 0x1D<<7 | 0x42, + 24984 - 19968: jis0208<<14 | 0x59<<7 | 0x0B, + 24985 - 19968: jis0208<<14 | 0x37<<7 | 0x39, + 24986 - 19968: jis0208<<14 | 0x37<<7 | 0x3E, + 24988 - 19968: jis0212<<14 | 0x1D<<7 | 0x44, + 24989 - 19968: jis0212<<14 | 0x1D<<7 | 0x45, + 24991 - 19968: jis0212<<14 | 0x1D<<7 | 0x46, + 24992 - 19968: jis0212<<14 | 0x1D<<7 | 0x47, + 24996 - 19968: jis0208<<14 | 0x29<<7 | 0x0F, + 24997 - 19968: jis0212<<14 | 0x1D<<7 | 0x48, + 24999 - 19968: jis0208<<14 | 0x25<<7 | 0x13, + 25000 - 19968: jis0212<<14 | 0x1D<<7 | 0x49, + 25001 - 19968: jis0208<<14 | 0x16<<7 | 0x25, + 25002 - 19968: jis0212<<14 | 0x1D<<7 | 0x4A, + 25003 - 19968: jis0208<<14 | 0x37<<7 | 0x41, + 25004 - 19968: jis0208<<14 | 0x37<<7 | 0x3C, + 25005 - 19968: jis0212<<14 | 0x1D<<7 | 0x4B, + 25006 - 19968: jis0208<<14 | 0x37<<7 | 0x42, + 25010 - 19968: jis0208<<14 | 0x16<<7 | 0x5A, + 25014 - 19968: jis0208<<14 | 0x11<<7 | 0x10, + 25016 - 19968: jis0212<<14 | 0x1D<<7 | 0x4C, + 25017 - 19968: jis0212<<14 | 0x1D<<7 | 0x4D, + 25018 - 19968: jis0208<<14 | 0x37<<7 | 0x4A, + 25020 - 19968: jis0212<<14 | 0x1D<<7 | 0x4E, + 25022 - 19968: jis0208<<14 | 0x13<<7 | 0x17, + 25024 - 19968: jis0212<<14 | 0x1D<<7 | 0x4F, + 25025 - 19968: jis0212<<14 | 0x1D<<7 | 0x50, + 25026 - 19968: jis0212<<14 | 0x1D<<7 | 0x51, + 25027 - 19968: jis0208<<14 | 0x37<<7 | 0x48, + 25030 - 19968: jis0208<<14 | 0x37<<7 | 0x49, + 25031 - 19968: jis0208<<14 | 0x19<<7 | 0x08, + 25032 - 19968: jis0208<<14 | 0x37<<7 | 0x47, + 25033 - 19968: jis0208<<14 | 0x37<<7 | 0x45, + 25034 - 19968: jis0208<<14 | 0x37<<7 | 0x44, + 25035 - 19968: jis0208<<14 | 0x37<<7 | 0x4B, + 25036 - 19968: jis0208<<14 | 0x37<<7 | 0x43, + 25037 - 19968: jis0208<<14 | 0x37<<7 | 0x4D, + 25038 - 19968: jis0212<<14 | 0x1D<<7 | 0x52, + 25039 - 19968: jis0212<<14 | 0x1D<<7 | 0x53, + 25040 - 19968: jis0208<<14 | 0x11<<7 | 0x5A, + 25045 - 19968: jis0212<<14 | 0x1D<<7 | 0x54, + 25052 - 19968: jis0212<<14 | 0x1D<<7 | 0x55, + 25053 - 19968: jis0212<<14 | 0x1D<<7 | 0x56, + 25054 - 19968: jis0212<<14 | 0x1D<<7 | 0x57, + 25055 - 19968: jis0212<<14 | 0x1D<<7 | 0x58, + 25057 - 19968: jis0212<<14 | 0x1D<<7 | 0x59, + 25058 - 19968: jis0212<<14 | 0x1D<<7 | 0x5A, + 25059 - 19968: jis0208<<14 | 0x37<<7 | 0x4F, + 25061 - 19968: jis0212<<14 | 0x1D<<7 | 0x5D, + 25062 - 19968: jis0208<<14 | 0x37<<7 | 0x4E, + 25063 - 19968: jis0212<<14 | 0x1D<<7 | 0x5B, + 25065 - 19968: jis0212<<14 | 0x1D<<7 | 0x5C, + 25068 - 19968: jis0212<<14 | 0x1E<<7 | 0x00, + 25069 - 19968: jis0212<<14 | 0x1E<<7 | 0x01, + 25071 - 19968: jis0212<<14 | 0x1E<<7 | 0x02, + 25074 - 19968: jis0208<<14 | 0x23<<7 | 0x07, + 25076 - 19968: jis0208<<14 | 0x37<<7 | 0x52, + 25078 - 19968: jis0208<<14 | 0x37<<7 | 0x50, + 25079 - 19968: jis0208<<14 | 0x37<<7 | 0x46, + 25080 - 19968: jis0208<<14 | 0x16<<7 | 0x5B, + 25082 - 19968: jis0208<<14 | 0x37<<7 | 0x51, + 25084 - 19968: jis0208<<14 | 0x37<<7 | 0x55, + 25085 - 19968: jis0208<<14 | 0x37<<7 | 0x54, + 25086 - 19968: jis0208<<14 | 0x37<<7 | 0x56, + 25087 - 19968: jis0208<<14 | 0x37<<7 | 0x53, + 25088 - 19968: jis0208<<14 | 0x37<<7 | 0x57, + 25089 - 19968: jis0212<<14 | 0x1E<<7 | 0x03, + 25091 - 19968: jis0212<<14 | 0x1E<<7 | 0x04, + 25092 - 19968: jis0212<<14 | 0x1E<<7 | 0x05, + 25095 - 19968: jis0212<<14 | 0x1E<<7 | 0x06, + 25096 - 19968: jis0208<<14 | 0x37<<7 | 0x58, + 25097 - 19968: jis0208<<14 | 0x37<<7 | 0x59, + 25098 - 19968: jis0208<<14 | 0x29<<7 | 0x49, + 25100 - 19968: jis0208<<14 | 0x37<<7 | 0x5B, + 25101 - 19968: jis0208<<14 | 0x37<<7 | 0x5A, + 25102 - 19968: jis0208<<14 | 0x1C<<7 | 0x1E, + 25104 - 19968: jis0208<<14 | 0x1F<<7 | 0x0D, + 25105 - 19968: jis0208<<14 | 0x11<<7 | 0x45, + 25106 - 19968: jis0208<<14 | 0x11<<7 | 0x5B, + 25107 - 19968: jis0208<<14 | 0x59<<7 | 0x0C, + 25108 - 19968: jis0208<<14 | 0x37<<7 | 0x5C, + 25109 - 19968: jis0212<<14 | 0x1E<<7 | 0x08, + 25110 - 19968: jis0208<<14 | 0x0F<<7 | 0x1E, + 25114 - 19968: jis0208<<14 | 0x1F<<7 | 0x2B, + 25115 - 19968: jis0208<<14 | 0x37<<7 | 0x5D, + 25116 - 19968: jis0212<<14 | 0x1E<<7 | 0x09, + 25117 - 19968: jis0208<<14 | 0x4B<<7 | 0x22, + 25118 - 19968: jis0208<<14 | 0x38<<7 | 0x00, + 25119 - 19968: jis0208<<14 | 0x16<<7 | 0x40, + 25120 - 19968: jis0212<<14 | 0x1E<<7 | 0x0A, + 25121 - 19968: jis0208<<14 | 0x38<<7 | 0x01, + 25122 - 19968: jis0212<<14 | 0x1E<<7 | 0x0B, + 25123 - 19968: jis0212<<14 | 0x1E<<7 | 0x0C, + 25126 - 19968: jis0208<<14 | 0x1F<<7 | 0x4E, + 25127 - 19968: jis0212<<14 | 0x1E<<7 | 0x0D, + 25129 - 19968: jis0212<<14 | 0x1E<<7 | 0x0E, + 25130 - 19968: jis0208<<14 | 0x38<<7 | 0x02, + 25131 - 19968: jis0212<<14 | 0x1E<<7 | 0x0F, + 25134 - 19968: jis0208<<14 | 0x38<<7 | 0x03, + 25135 - 19968: jis0208<<14 | 0x14<<7 | 0x19, + 25136 - 19968: jis0208<<14 | 0x38<<7 | 0x04, + 25138 - 19968: jis0208<<14 | 0x38<<7 | 0x05, + 25139 - 19968: jis0208<<14 | 0x38<<7 | 0x06, + 25140 - 19968: jis0208<<14 | 0x21<<7 | 0x36, + 25144 - 19968: jis0208<<14 | 0x17<<7 | 0x2C, + 25145 - 19968: jis0212<<14 | 0x1E<<7 | 0x10, + 25147 - 19968: jis0208<<14 | 0x2B<<7 | 0x40, + 25149 - 19968: jis0212<<14 | 0x1E<<7 | 0x11, + 25151 - 19968: jis0208<<14 | 0x2A<<7 | 0x1B, + 25152 - 19968: jis0208<<14 | 0x1C<<7 | 0x49, + 25153 - 19968: jis0208<<14 | 0x38<<7 | 0x07, + 25154 - 19968: jis0212<<14 | 0x1E<<7 | 0x12, + 25155 - 19968: jis0212<<14 | 0x1E<<7 | 0x13, + 25156 - 19968: jis0212<<14 | 0x1E<<7 | 0x14, + 25158 - 19968: jis0212<<14 | 0x1E<<7 | 0x15, + 25159 - 19968: jis0208<<14 | 0x1F<<7 | 0x4F, + 25160 - 19968: jis0208<<14 | 0x4D<<7 | 0x1C, + 25161 - 19968: jis0208<<14 | 0x27<<7 | 0x41, + 25163 - 19968: jis0208<<14 | 0x1B<<7 | 0x49, + 25164 - 19968: jis0212<<14 | 0x1E<<7 | 0x16, + 25165 - 19968: jis0208<<14 | 0x19<<7 | 0x2C, + 25166 - 19968: jis0208<<14 | 0x38<<7 | 0x08, + 25168 - 19968: jis0212<<14 | 0x1E<<7 | 0x17, + 25169 - 19968: jis0212<<14 | 0x1E<<7 | 0x18, + 25170 - 19968: jis0212<<14 | 0x1E<<7 | 0x19, + 25171 - 19968: jis0208<<14 | 0x21<<7 | 0x26, + 25172 - 19968: jis0212<<14 | 0x1E<<7 | 0x1A, + 25173 - 19968: jis0208<<14 | 0x29<<7 | 0x06, + 25174 - 19968: jis0212<<14 | 0x1E<<7 | 0x1B, + 25176 - 19968: jis0208<<14 | 0x21<<7 | 0x50, + 25178 - 19968: jis0212<<14 | 0x1E<<7 | 0x1C, + 25179 - 19968: jis0208<<14 | 0x38<<7 | 0x0B, + 25180 - 19968: jis0212<<14 | 0x1E<<7 | 0x1D, + 25182 - 19968: jis0208<<14 | 0x38<<7 | 0x09, + 25184 - 19968: jis0208<<14 | 0x38<<7 | 0x0C, + 25187 - 19968: jis0208<<14 | 0x38<<7 | 0x0A, + 25188 - 19968: jis0212<<14 | 0x1E<<7 | 0x1E, + 25192 - 19968: jis0208<<14 | 0x38<<7 | 0x0D, + 25197 - 19968: jis0212<<14 | 0x1E<<7 | 0x1F, + 25198 - 19968: jis0208<<14 | 0x29<<7 | 0x10, + 25199 - 19968: jis0212<<14 | 0x1E<<7 | 0x20, + 25201 - 19968: jis0208<<14 | 0x0F<<7 | 0x16, + 25203 - 19968: jis0212<<14 | 0x1E<<7 | 0x21, + 25206 - 19968: jis0208<<14 | 0x28<<7 | 0x3D, + 25209 - 19968: jis0208<<14 | 0x27<<7 | 0x42, + 25210 - 19968: jis0212<<14 | 0x1E<<7 | 0x22, + 25212 - 19968: jis0208<<14 | 0x38<<7 | 0x0E, + 25213 - 19968: jis0212<<14 | 0x1E<<7 | 0x23, + 25214 - 19968: jis0208<<14 | 0x38<<7 | 0x11, + 25215 - 19968: jis0208<<14 | 0x1D<<7 | 0x14, + 25216 - 19968: jis0208<<14 | 0x14<<7 | 0x1A, + 25218 - 19968: jis0208<<14 | 0x38<<7 | 0x0F, + 25219 - 19968: jis0208<<14 | 0x38<<7 | 0x16, + 25220 - 19968: jis0208<<14 | 0x1D<<7 | 0x15, + 25225 - 19968: jis0208<<14 | 0x38<<7 | 0x10, + 25226 - 19968: jis0208<<14 | 0x26<<7 | 0x23, + 25229 - 19968: jis0212<<14 | 0x1E<<7 | 0x24, + 25230 - 19968: jis0212<<14 | 0x1E<<7 | 0x25, + 25231 - 19968: jis0212<<14 | 0x1E<<7 | 0x26, + 25232 - 19968: jis0212<<14 | 0x1E<<7 | 0x27, + 25233 - 19968: jis0208<<14 | 0x2C<<7 | 0x3D, + 25234 - 19968: jis0208<<14 | 0x38<<7 | 0x12, + 25235 - 19968: jis0208<<14 | 0x38<<7 | 0x13, + 25236 - 19968: jis0208<<14 | 0x38<<7 | 0x17, + 25237 - 19968: jis0208<<14 | 0x24<<7 | 0x49, + 25238 - 19968: jis0208<<14 | 0x38<<7 | 0x14, + 25239 - 19968: jis0208<<14 | 0x18<<7 | 0x12, + 25240 - 19968: jis0208<<14 | 0x1F<<7 | 0x3D, + 25243 - 19968: jis0208<<14 | 0x38<<7 | 0x25, + 25244 - 19968: jis0208<<14 | 0x27<<7 | 0x13, + 25246 - 19968: jis0208<<14 | 0x21<<7 | 0x51, + 25254 - 19968: jis0208<<14 | 0x59<<7 | 0x0D, + 25256 - 19968: jis0212<<14 | 0x1E<<7 | 0x29, + 25259 - 19968: jis0208<<14 | 0x27<<7 | 0x43, + 25260 - 19968: jis0208<<14 | 0x39<<7 | 0x0C, + 25265 - 19968: jis0208<<14 | 0x29<<7 | 0x59, + 25267 - 19968: jis0212<<14 | 0x1E<<7 | 0x2A, + 25269 - 19968: jis0208<<14 | 0x23<<7 | 0x50, + 25270 - 19968: jis0212<<14 | 0x1E<<7 | 0x2B, + 25271 - 19968: jis0212<<14 | 0x1E<<7 | 0x2C, + 25273 - 19968: jis0208<<14 | 0x2A<<7 | 0x54, + 25274 - 19968: jis0212<<14 | 0x1E<<7 | 0x2D, + 25275 - 19968: jis0208<<14 | 0x38<<7 | 0x1A, + 25276 - 19968: jis0208<<14 | 0x11<<7 | 0x00, + 25277 - 19968: jis0208<<14 | 0x22<<7 | 0x49, + 25278 - 19968: jis0212<<14 | 0x1E<<7 | 0x2E, + 25279 - 19968: jis0212<<14 | 0x1E<<7 | 0x2F, + 25282 - 19968: jis0208<<14 | 0x38<<7 | 0x23, + 25284 - 19968: jis0212<<14 | 0x1E<<7 | 0x30, + 25285 - 19968: jis0208<<14 | 0x22<<7 | 0x13, + 25286 - 19968: jis0208<<14 | 0x38<<7 | 0x1D, + 25287 - 19968: jis0208<<14 | 0x38<<7 | 0x24, + 25288 - 19968: jis0208<<14 | 0x38<<7 | 0x1F, + 25289 - 19968: jis0208<<14 | 0x38<<7 | 0x26, + 25290 - 19968: jis0208<<14 | 0x38<<7 | 0x22, + 25292 - 19968: jis0208<<14 | 0x38<<7 | 0x21, + 25293 - 19968: jis0208<<14 | 0x26<<7 | 0x4E, + 25294 - 19968: jis0212<<14 | 0x1E<<7 | 0x31, + 25295 - 19968: jis0208<<14 | 0x38<<7 | 0x1B, + 25296 - 19968: jis0208<<14 | 0x11<<7 | 0x5C, + 25297 - 19968: jis0208<<14 | 0x38<<7 | 0x19, + 25298 - 19968: jis0208<<14 | 0x14<<7 | 0x50, + 25299 - 19968: jis0208<<14 | 0x21<<7 | 0x52, + 25300 - 19968: jis0208<<14 | 0x38<<7 | 0x15, + 25301 - 19968: jis0212<<14 | 0x1E<<7 | 0x32, + 25302 - 19968: jis0212<<14 | 0x1E<<7 | 0x33, + 25303 - 19968: jis0208<<14 | 0x38<<7 | 0x18, + 25304 - 19968: jis0208<<14 | 0x18<<7 | 0x13, + 25305 - 19968: jis0208<<14 | 0x1F<<7 | 0x3A, + 25306 - 19968: jis0212<<14 | 0x1E<<7 | 0x34, + 25307 - 19968: jis0208<<14 | 0x1D<<7 | 0x16, + 25308 - 19968: jis0208<<14 | 0x38<<7 | 0x20, + 25309 - 19968: jis0208<<14 | 0x26<<7 | 0x31, + 25312 - 19968: jis0208<<14 | 0x14<<7 | 0x51, + 25313 - 19968: jis0208<<14 | 0x12<<7 | 0x27, + 25322 - 19968: jis0212<<14 | 0x1E<<7 | 0x35, + 25324 - 19968: jis0208<<14 | 0x12<<7 | 0x46, + 25325 - 19968: jis0208<<14 | 0x1E<<7 | 0x00, + 25326 - 19968: jis0208<<14 | 0x38<<7 | 0x28, + 25327 - 19968: jis0208<<14 | 0x38<<7 | 0x2D, + 25329 - 19968: jis0208<<14 | 0x38<<7 | 0x29, + 25330 - 19968: jis0212<<14 | 0x1E<<7 | 0x36, + 25331 - 19968: jis0208<<14 | 0x16<<7 | 0x5C, + 25332 - 19968: jis0212<<14 | 0x1E<<7 | 0x37, + 25333 - 19968: jis0208<<14 | 0x38<<7 | 0x2E, + 25334 - 19968: jis0208<<14 | 0x1A<<7 | 0x01, + 25335 - 19968: jis0208<<14 | 0x18<<7 | 0x48, + 25340 - 19968: jis0212<<14 | 0x1E<<7 | 0x38, + 25341 - 19968: jis0212<<14 | 0x1E<<7 | 0x39, + 25342 - 19968: jis0208<<14 | 0x1C<<7 | 0x05, + 25343 - 19968: jis0208<<14 | 0x38<<7 | 0x1C, + 25345 - 19968: jis0208<<14 | 0x1A<<7 | 0x5C, + 25346 - 19968: jis0208<<14 | 0x38<<7 | 0x2B, + 25347 - 19968: jis0212<<14 | 0x1E<<7 | 0x3A, + 25348 - 19968: jis0212<<14 | 0x1E<<7 | 0x3B, + 25351 - 19968: jis0208<<14 | 0x1A<<7 | 0x37, + 25352 - 19968: jis0208<<14 | 0x38<<7 | 0x2C, + 25353 - 19968: jis0208<<14 | 0x0F<<7 | 0x23, + 25354 - 19968: jis0212<<14 | 0x1E<<7 | 0x3C, + 25355 - 19968: jis0212<<14 | 0x1E<<7 | 0x3D, + 25356 - 19968: jis0208<<14 | 0x38<<7 | 0x27, + 25357 - 19968: jis0212<<14 | 0x1E<<7 | 0x3E, + 25360 - 19968: jis0212<<14 | 0x1E<<7 | 0x3F, + 25361 - 19968: jis0208<<14 | 0x23<<7 | 0x08, + 25363 - 19968: jis0212<<14 | 0x1E<<7 | 0x40, + 25366 - 19968: jis0212<<14 | 0x1E<<7 | 0x41, + 25368 - 19968: jis0212<<14 | 0x1E<<7 | 0x42, + 25369 - 19968: jis0208<<14 | 0x14<<7 | 0x52, + 25375 - 19968: jis0208<<14 | 0x15<<7 | 0x13, + 25383 - 19968: jis0208<<14 | 0x38<<7 | 0x2A, + 25384 - 19968: jis0208<<14 | 0x0F<<7 | 0x06, + 25385 - 19968: jis0212<<14 | 0x1E<<7 | 0x43, + 25386 - 19968: jis0212<<14 | 0x1E<<7 | 0x44, + 25387 - 19968: jis0208<<14 | 0x19<<7 | 0x22, + 25389 - 19968: jis0212<<14 | 0x1E<<7 | 0x45, + 25391 - 19968: jis0208<<14 | 0x1E<<7 | 0x15, + 25397 - 19968: jis0212<<14 | 0x1E<<7 | 0x46, + 25398 - 19968: jis0212<<14 | 0x1E<<7 | 0x47, + 25401 - 19968: jis0212<<14 | 0x1E<<7 | 0x48, + 25402 - 19968: jis0208<<14 | 0x23<<7 | 0x51, + 25404 - 19968: jis0212<<14 | 0x1E<<7 | 0x49, + 25405 - 19968: jis0208<<14 | 0x27<<7 | 0x33, + 25406 - 19968: jis0208<<14 | 0x38<<7 | 0x30, + 25407 - 19968: jis0208<<14 | 0x20<<7 | 0x3D, + 25409 - 19968: jis0212<<14 | 0x1E<<7 | 0x4A, + 25410 - 19968: jis0212<<14 | 0x1E<<7 | 0x4B, + 25411 - 19968: jis0212<<14 | 0x1E<<7 | 0x4C, + 25412 - 19968: jis0212<<14 | 0x1E<<7 | 0x4D, + 25414 - 19968: jis0212<<14 | 0x1E<<7 | 0x4E, + 25417 - 19968: jis0208<<14 | 0x21<<7 | 0x09, + 25418 - 19968: jis0212<<14 | 0x1E<<7 | 0x4F, + 25419 - 19968: jis0212<<14 | 0x1E<<7 | 0x50, + 25420 - 19968: jis0208<<14 | 0x1A<<7 | 0x0A, + 25421 - 19968: jis0208<<14 | 0x38<<7 | 0x31, + 25422 - 19968: jis0212<<14 | 0x1E<<7 | 0x51, + 25423 - 19968: jis0208<<14 | 0x38<<7 | 0x33, + 25424 - 19968: jis0208<<14 | 0x38<<7 | 0x2F, + 25426 - 19968: jis0212<<14 | 0x1E<<7 | 0x52, + 25427 - 19968: jis0212<<14 | 0x1E<<7 | 0x53, + 25428 - 19968: jis0212<<14 | 0x1E<<7 | 0x54, + 25429 - 19968: jis0208<<14 | 0x29<<7 | 0x40, + 25431 - 19968: jis0208<<14 | 0x23<<7 | 0x1C, + 25432 - 19968: jis0212<<14 | 0x1E<<7 | 0x55, + 25435 - 19968: jis0212<<14 | 0x1E<<7 | 0x56, + 25436 - 19968: jis0208<<14 | 0x20<<7 | 0x3B, + 25445 - 19968: jis0212<<14 | 0x1E<<7 | 0x57, + 25446 - 19968: jis0212<<14 | 0x1E<<7 | 0x58, + 25447 - 19968: jis0208<<14 | 0x29<<7 | 0x5A, + 25448 - 19968: jis0208<<14 | 0x1B<<7 | 0x2D, + 25449 - 19968: jis0208<<14 | 0x38<<7 | 0x3F, + 25451 - 19968: jis0208<<14 | 0x38<<7 | 0x3E, + 25452 - 19968: jis0212<<14 | 0x1E<<7 | 0x59, + 25453 - 19968: jis0212<<14 | 0x1E<<7 | 0x5A, + 25454 - 19968: jis0208<<14 | 0x1E<<7 | 0x57, + 25457 - 19968: jis0212<<14 | 0x1E<<7 | 0x5B, + 25458 - 19968: jis0208<<14 | 0x16<<7 | 0x5D, + 25460 - 19968: jis0212<<14 | 0x1E<<7 | 0x5C, + 25461 - 19968: jis0212<<14 | 0x1E<<7 | 0x5D, + 25462 - 19968: jis0208<<14 | 0x38<<7 | 0x38, + 25463 - 19968: jis0208<<14 | 0x1D<<7 | 0x18, + 25464 - 19968: jis0212<<14 | 0x1F<<7 | 0x00, + 25466 - 19968: jis0208<<14 | 0x25<<7 | 0x47, + 25467 - 19968: jis0208<<14 | 0x26<<7 | 0x10, + 25468 - 19968: jis0212<<14 | 0x1F<<7 | 0x01, + 25469 - 19968: jis0212<<14 | 0x1F<<7 | 0x02, + 25471 - 19968: jis0212<<14 | 0x1F<<7 | 0x03, + 25472 - 19968: jis0208<<14 | 0x38<<7 | 0x36, + 25474 - 19968: jis0212<<14 | 0x1F<<7 | 0x04, + 25475 - 19968: jis0208<<14 | 0x20<<7 | 0x3C, + 25476 - 19968: jis0212<<14 | 0x1F<<7 | 0x05, + 25479 - 19968: jis0212<<14 | 0x1F<<7 | 0x06, + 25480 - 19968: jis0208<<14 | 0x1B<<7 | 0x57, + 25481 - 19968: jis0208<<14 | 0x38<<7 | 0x3B, + 25482 - 19968: jis0212<<14 | 0x1F<<7 | 0x07, + 25484 - 19968: jis0208<<14 | 0x1D<<7 | 0x17, + 25486 - 19968: jis0208<<14 | 0x38<<7 | 0x35, + 25487 - 19968: jis0208<<14 | 0x38<<7 | 0x3A, + 25488 - 19968: jis0212<<14 | 0x1F<<7 | 0x08, + 25490 - 19968: jis0208<<14 | 0x26<<7 | 0x32, + 25492 - 19968: jis0212<<14 | 0x1F<<7 | 0x09, + 25493 - 19968: jis0212<<14 | 0x1F<<7 | 0x0A, + 25494 - 19968: jis0208<<14 | 0x38<<7 | 0x34, + 25496 - 19968: jis0208<<14 | 0x16<<7 | 0x00, + 25497 - 19968: jis0212<<14 | 0x1F<<7 | 0x0B, + 25498 - 19968: jis0212<<14 | 0x1F<<7 | 0x0C, + 25499 - 19968: jis0208<<14 | 0x12<<7 | 0x3C, + 25502 - 19968: jis0212<<14 | 0x1F<<7 | 0x0D, + 25503 - 19968: jis0208<<14 | 0x38<<7 | 0x3C, + 25504 - 19968: jis0208<<14 | 0x2D<<7 | 0x0A, + 25505 - 19968: jis0208<<14 | 0x19<<7 | 0x2D, + 25506 - 19968: jis0208<<14 | 0x22<<7 | 0x14, + 25507 - 19968: jis0208<<14 | 0x38<<7 | 0x39, + 25508 - 19968: jis0212<<14 | 0x1F<<7 | 0x0E, + 25509 - 19968: jis0208<<14 | 0x1F<<7 | 0x3B, + 25510 - 19968: jis0212<<14 | 0x1F<<7 | 0x0F, + 25511 - 19968: jis0208<<14 | 0x18<<7 | 0x14, + 25512 - 19968: jis0208<<14 | 0x1E<<7 | 0x43, + 25513 - 19968: jis0208<<14 | 0x10<<7 | 0x45, + 25514 - 19968: jis0208<<14 | 0x20<<7 | 0x1B, + 25515 - 19968: jis0208<<14 | 0x38<<7 | 0x37, + 25516 - 19968: jis0208<<14 | 0x14<<7 | 0x24, + 25517 - 19968: jis0212<<14 | 0x1F<<7 | 0x10, + 25518 - 19968: jis0212<<14 | 0x1F<<7 | 0x11, + 25519 - 19968: jis0212<<14 | 0x1F<<7 | 0x12, + 25522 - 19968: jis0208<<14 | 0x16<<7 | 0x26, + 25524 - 19968: jis0208<<14 | 0x23<<7 | 0x2E, + 25525 - 19968: jis0208<<14 | 0x38<<7 | 0x3D, + 25531 - 19968: jis0208<<14 | 0x20<<7 | 0x3E, + 25533 - 19968: jis0212<<14 | 0x1F<<7 | 0x13, + 25534 - 19968: jis0208<<14 | 0x38<<7 | 0x40, + 25536 - 19968: jis0208<<14 | 0x38<<7 | 0x42, + 25537 - 19968: jis0212<<14 | 0x1F<<7 | 0x14, + 25539 - 19968: jis0208<<14 | 0x21<<7 | 0x16, + 25540 - 19968: jis0208<<14 | 0x38<<7 | 0x48, + 25541 - 19968: jis0212<<14 | 0x1F<<7 | 0x15, + 25542 - 19968: jis0208<<14 | 0x38<<7 | 0x43, + 25544 - 19968: jis0212<<14 | 0x1F<<7 | 0x16, + 25545 - 19968: jis0208<<14 | 0x38<<7 | 0x45, + 25550 - 19968: jis0212<<14 | 0x1F<<7 | 0x17, + 25551 - 19968: jis0208<<14 | 0x28<<7 | 0x20, + 25552 - 19968: jis0208<<14 | 0x23<<7 | 0x52, + 25553 - 19968: jis0212<<14 | 0x1F<<7 | 0x18, + 25554 - 19968: jis0208<<14 | 0x38<<7 | 0x46, + 25555 - 19968: jis0212<<14 | 0x1F<<7 | 0x19, + 25556 - 19968: jis0212<<14 | 0x1F<<7 | 0x1A, + 25557 - 19968: jis0212<<14 | 0x1F<<7 | 0x1B, + 25558 - 19968: jis0208<<14 | 0x2C<<7 | 0x0B, + 25562 - 19968: jis0208<<14 | 0x2C<<7 | 0x27, + 25563 - 19968: jis0208<<14 | 0x13<<7 | 0x18, + 25564 - 19968: jis0212<<14 | 0x1F<<7 | 0x1C, + 25568 - 19968: jis0212<<14 | 0x1F<<7 | 0x1D, + 25569 - 19968: jis0208<<14 | 0x0F<<7 | 0x0D, + 25571 - 19968: jis0208<<14 | 0x38<<7 | 0x44, + 25573 - 19968: jis0212<<14 | 0x1F<<7 | 0x1E, + 25577 - 19968: jis0208<<14 | 0x38<<7 | 0x41, + 25578 - 19968: jis0212<<14 | 0x1F<<7 | 0x1F, + 25580 - 19968: jis0212<<14 | 0x1F<<7 | 0x20, + 25582 - 19968: jis0208<<14 | 0x13<<7 | 0x57, + 25586 - 19968: jis0212<<14 | 0x1F<<7 | 0x21, + 25587 - 19968: jis0212<<14 | 0x1F<<7 | 0x22, + 25588 - 19968: jis0208<<14 | 0x10<<7 | 0x46, + 25589 - 19968: jis0208<<14 | 0x59<<7 | 0x0E, + 25590 - 19968: jis0208<<14 | 0x38<<7 | 0x47, + 25592 - 19968: jis0212<<14 | 0x1F<<7 | 0x24, + 25593 - 19968: jis0212<<14 | 0x1F<<7 | 0x25, + 25594 - 19968: jis0208<<14 | 0x2C<<7 | 0x28, + 25606 - 19968: jis0208<<14 | 0x38<<7 | 0x4B, + 25609 - 19968: jis0212<<14 | 0x1F<<7 | 0x26, + 25610 - 19968: jis0212<<14 | 0x1F<<7 | 0x27, + 25613 - 19968: jis0208<<14 | 0x21<<7 | 0x1A, + 25615 - 19968: jis0208<<14 | 0x38<<7 | 0x52, + 25616 - 19968: jis0212<<14 | 0x1F<<7 | 0x28, + 25618 - 19968: jis0212<<14 | 0x1F<<7 | 0x29, + 25619 - 19968: jis0208<<14 | 0x38<<7 | 0x4C, + 25620 - 19968: jis0212<<14 | 0x1F<<7 | 0x2A, + 25622 - 19968: jis0208<<14 | 0x38<<7 | 0x49, + 25623 - 19968: jis0208<<14 | 0x38<<7 | 0x50, + 25624 - 19968: jis0212<<14 | 0x1F<<7 | 0x2B, + 25628 - 19968: jis0208<<14 | 0x38<<7 | 0x32, + 25630 - 19968: jis0212<<14 | 0x1F<<7 | 0x2C, + 25632 - 19968: jis0212<<14 | 0x1F<<7 | 0x2D, + 25634 - 19968: jis0212<<14 | 0x1F<<7 | 0x2E, + 25636 - 19968: jis0212<<14 | 0x1F<<7 | 0x2F, + 25637 - 19968: jis0212<<14 | 0x1F<<7 | 0x30, + 25638 - 19968: jis0208<<14 | 0x38<<7 | 0x4D, + 25640 - 19968: jis0208<<14 | 0x38<<7 | 0x51, + 25641 - 19968: jis0212<<14 | 0x1F<<7 | 0x31, + 25642 - 19968: jis0212<<14 | 0x1F<<7 | 0x32, + 25644 - 19968: jis0208<<14 | 0x27<<7 | 0x21, + 25645 - 19968: jis0208<<14 | 0x24<<7 | 0x4A, + 25647 - 19968: jis0212<<14 | 0x1F<<7 | 0x33, + 25648 - 19968: jis0212<<14 | 0x1F<<7 | 0x34, + 25652 - 19968: jis0208<<14 | 0x38<<7 | 0x4A, + 25653 - 19968: jis0212<<14 | 0x1F<<7 | 0x35, + 25654 - 19968: jis0208<<14 | 0x38<<7 | 0x4E, + 25658 - 19968: jis0208<<14 | 0x16<<7 | 0x27, + 25661 - 19968: jis0212<<14 | 0x1F<<7 | 0x36, + 25662 - 19968: jis0208<<14 | 0x19<<7 | 0x50, + 25663 - 19968: jis0212<<14 | 0x1F<<7 | 0x37, + 25666 - 19968: jis0208<<14 | 0x1F<<7 | 0x3C, + 25675 - 19968: jis0212<<14 | 0x1F<<7 | 0x38, + 25678 - 19968: jis0208<<14 | 0x38<<7 | 0x56, + 25679 - 19968: jis0212<<14 | 0x1F<<7 | 0x39, + 25681 - 19968: jis0212<<14 | 0x1F<<7 | 0x3A, + 25682 - 19968: jis0212<<14 | 0x1F<<7 | 0x3B, + 25683 - 19968: jis0212<<14 | 0x1F<<7 | 0x3C, + 25684 - 19968: jis0212<<14 | 0x1F<<7 | 0x3D, + 25688 - 19968: jis0208<<14 | 0x24<<7 | 0x05, + 25690 - 19968: jis0212<<14 | 0x1F<<7 | 0x3E, + 25691 - 19968: jis0212<<14 | 0x1F<<7 | 0x3F, + 25692 - 19968: jis0212<<14 | 0x1F<<7 | 0x40, + 25693 - 19968: jis0212<<14 | 0x1F<<7 | 0x41, + 25695 - 19968: jis0212<<14 | 0x1F<<7 | 0x42, + 25696 - 19968: jis0208<<14 | 0x59<<7 | 0x0F, + 25697 - 19968: jis0212<<14 | 0x1F<<7 | 0x44, + 25699 - 19968: jis0212<<14 | 0x1F<<7 | 0x45, + 25703 - 19968: jis0208<<14 | 0x38<<7 | 0x53, + 25705 - 19968: jis0208<<14 | 0x2A<<7 | 0x3F, + 25709 - 19968: jis0212<<14 | 0x1F<<7 | 0x46, + 25711 - 19968: jis0208<<14 | 0x38<<7 | 0x54, + 25715 - 19968: jis0212<<14 | 0x1F<<7 | 0x47, + 25716 - 19968: jis0212<<14 | 0x1F<<7 | 0x48, + 25718 - 19968: jis0208<<14 | 0x38<<7 | 0x55, + 25720 - 19968: jis0208<<14 | 0x2B<<7 | 0x2D, + 25722 - 19968: jis0208<<14 | 0x1F<<7 | 0x01, + 25723 - 19968: jis0212<<14 | 0x1F<<7 | 0x49, + 25725 - 19968: jis0212<<14 | 0x1F<<7 | 0x4A, + 25731 - 19968: jis0208<<14 | 0x16<<7 | 0x41, + 25733 - 19968: jis0212<<14 | 0x1F<<7 | 0x4B, + 25735 - 19968: jis0212<<14 | 0x1F<<7 | 0x4C, + 25736 - 19968: jis0208<<14 | 0x38<<7 | 0x5C, + 25743 - 19968: jis0212<<14 | 0x1F<<7 | 0x4D, + 25744 - 19968: jis0212<<14 | 0x1F<<7 | 0x4E, + 25745 - 19968: jis0212<<14 | 0x1F<<7 | 0x4F, + 25746 - 19968: jis0208<<14 | 0x1A<<7 | 0x14, + 25747 - 19968: jis0208<<14 | 0x38<<7 | 0x59, + 25749 - 19968: jis0208<<14 | 0x38<<7 | 0x58, + 25752 - 19968: jis0212<<14 | 0x1F<<7 | 0x50, + 25753 - 19968: jis0212<<14 | 0x1F<<7 | 0x51, + 25754 - 19968: jis0208<<14 | 0x26<<7 | 0x11, + 25755 - 19968: jis0212<<14 | 0x1F<<7 | 0x52, + 25757 - 19968: jis0208<<14 | 0x59<<7 | 0x10, + 25758 - 19968: jis0208<<14 | 0x25<<7 | 0x14, + 25759 - 19968: jis0212<<14 | 0x1F<<7 | 0x54, + 25761 - 19968: jis0212<<14 | 0x1F<<7 | 0x55, + 25763 - 19968: jis0212<<14 | 0x1F<<7 | 0x56, + 25764 - 19968: jis0208<<14 | 0x24<<7 | 0x10, + 25765 - 19968: jis0208<<14 | 0x38<<7 | 0x5A, + 25766 - 19968: jis0212<<14 | 0x1F<<7 | 0x57, + 25768 - 19968: jis0212<<14 | 0x1F<<7 | 0x58, + 25769 - 19968: jis0208<<14 | 0x38<<7 | 0x5B, + 25771 - 19968: jis0208<<14 | 0x28<<7 | 0x4E, + 25772 - 19968: jis0212<<14 | 0x1F<<7 | 0x59, + 25773 - 19968: jis0208<<14 | 0x26<<7 | 0x24, + 25774 - 19968: jis0208<<14 | 0x1A<<7 | 0x02, + 25776 - 19968: jis0208<<14 | 0x1F<<7 | 0x50, + 25778 - 19968: jis0208<<14 | 0x2A<<7 | 0x2F, + 25779 - 19968: jis0212<<14 | 0x1F<<7 | 0x5A, + 25785 - 19968: jis0208<<14 | 0x12<<7 | 0x28, + 25787 - 19968: jis0208<<14 | 0x39<<7 | 0x04, + 25788 - 19968: jis0208<<14 | 0x38<<7 | 0x5D, + 25789 - 19968: jis0212<<14 | 0x1F<<7 | 0x5B, + 25790 - 19968: jis0212<<14 | 0x1F<<7 | 0x5C, + 25791 - 19968: jis0212<<14 | 0x1F<<7 | 0x5D, + 25793 - 19968: jis0208<<14 | 0x2C<<7 | 0x29, + 25794 - 19968: jis0208<<14 | 0x39<<7 | 0x06, + 25796 - 19968: jis0212<<14 | 0x20<<7 | 0x00, + 25797 - 19968: jis0208<<14 | 0x39<<7 | 0x02, + 25799 - 19968: jis0208<<14 | 0x39<<7 | 0x03, + 25801 - 19968: jis0212<<14 | 0x20<<7 | 0x01, + 25802 - 19968: jis0212<<14 | 0x20<<7 | 0x02, + 25803 - 19968: jis0212<<14 | 0x20<<7 | 0x03, + 25804 - 19968: jis0212<<14 | 0x20<<7 | 0x04, + 25805 - 19968: jis0208<<14 | 0x20<<7 | 0x3F, + 25806 - 19968: jis0208<<14 | 0x59<<7 | 0x11, + 25808 - 19968: jis0212<<14 | 0x20<<7 | 0x06, + 25809 - 19968: jis0212<<14 | 0x20<<7 | 0x07, + 25810 - 19968: jis0208<<14 | 0x39<<7 | 0x01, + 25812 - 19968: jis0208<<14 | 0x38<<7 | 0x1E, + 25813 - 19968: jis0212<<14 | 0x20<<7 | 0x08, + 25815 - 19968: jis0212<<14 | 0x20<<7 | 0x09, + 25816 - 19968: jis0208<<14 | 0x39<<7 | 0x05, + 25818 - 19968: jis0208<<14 | 0x39<<7 | 0x00, + 25824 - 19968: jis0208<<14 | 0x39<<7 | 0x0A, + 25825 - 19968: jis0208<<14 | 0x39<<7 | 0x0B, + 25826 - 19968: jis0208<<14 | 0x24<<7 | 0x06, + 25827 - 19968: jis0208<<14 | 0x39<<7 | 0x0D, + 25828 - 19968: jis0212<<14 | 0x20<<7 | 0x0A, + 25829 - 19968: jis0212<<14 | 0x20<<7 | 0x0B, + 25830 - 19968: jis0208<<14 | 0x1A<<7 | 0x03, + 25831 - 19968: jis0208<<14 | 0x39<<7 | 0x08, + 25833 - 19968: jis0212<<14 | 0x20<<7 | 0x0C, + 25834 - 19968: jis0212<<14 | 0x20<<7 | 0x0D, + 25836 - 19968: jis0208<<14 | 0x14<<7 | 0x1B, + 25837 - 19968: jis0212<<14 | 0x20<<7 | 0x0E, + 25839 - 19968: jis0208<<14 | 0x39<<7 | 0x0E, + 25840 - 19968: jis0212<<14 | 0x20<<7 | 0x0F, + 25841 - 19968: jis0208<<14 | 0x39<<7 | 0x07, + 25842 - 19968: jis0208<<14 | 0x39<<7 | 0x12, + 25844 - 19968: jis0208<<14 | 0x39<<7 | 0x11, + 25845 - 19968: jis0212<<14 | 0x20<<7 | 0x10, + 25846 - 19968: jis0208<<14 | 0x39<<7 | 0x10, + 25847 - 19968: jis0212<<14 | 0x20<<7 | 0x11, + 25850 - 19968: jis0208<<14 | 0x39<<7 | 0x13, + 25851 - 19968: jis0212<<14 | 0x20<<7 | 0x12, + 25853 - 19968: jis0208<<14 | 0x39<<7 | 0x15, + 25854 - 19968: jis0208<<14 | 0x1D<<7 | 0x50, + 25855 - 19968: jis0212<<14 | 0x20<<7 | 0x13, + 25856 - 19968: jis0208<<14 | 0x39<<7 | 0x14, + 25857 - 19968: jis0212<<14 | 0x20<<7 | 0x14, + 25860 - 19968: jis0212<<14 | 0x20<<7 | 0x15, + 25861 - 19968: jis0208<<14 | 0x39<<7 | 0x18, + 25864 - 19968: jis0212<<14 | 0x20<<7 | 0x16, + 25865 - 19968: jis0212<<14 | 0x20<<7 | 0x17, + 25866 - 19968: jis0212<<14 | 0x20<<7 | 0x18, + 25871 - 19968: jis0212<<14 | 0x20<<7 | 0x19, + 25875 - 19968: jis0212<<14 | 0x20<<7 | 0x1A, + 25876 - 19968: jis0212<<14 | 0x20<<7 | 0x1B, + 25878 - 19968: jis0212<<14 | 0x20<<7 | 0x1C, + 25880 - 19968: jis0208<<14 | 0x39<<7 | 0x16, + 25881 - 19968: jis0212<<14 | 0x20<<7 | 0x1D, + 25883 - 19968: jis0212<<14 | 0x20<<7 | 0x1E, + 25884 - 19968: jis0208<<14 | 0x39<<7 | 0x17, + 25885 - 19968: jis0208<<14 | 0x38<<7 | 0x4F, + 25886 - 19968: jis0212<<14 | 0x20<<7 | 0x1F, + 25887 - 19968: jis0212<<14 | 0x20<<7 | 0x20, + 25890 - 19968: jis0212<<14 | 0x20<<7 | 0x21, + 25891 - 19968: jis0208<<14 | 0x39<<7 | 0x1A, + 25892 - 19968: jis0208<<14 | 0x39<<7 | 0x19, + 25894 - 19968: jis0212<<14 | 0x20<<7 | 0x22, + 25897 - 19968: jis0212<<14 | 0x20<<7 | 0x23, + 25898 - 19968: jis0208<<14 | 0x38<<7 | 0x57, + 25899 - 19968: jis0208<<14 | 0x39<<7 | 0x1B, + 25900 - 19968: jis0208<<14 | 0x39<<7 | 0x0F, + 25902 - 19968: jis0212<<14 | 0x20<<7 | 0x24, + 25903 - 19968: jis0208<<14 | 0x1A<<7 | 0x38, + 25905 - 19968: jis0212<<14 | 0x20<<7 | 0x25, + 25908 - 19968: jis0208<<14 | 0x39<<7 | 0x1C, + 25909 - 19968: jis0208<<14 | 0x39<<7 | 0x1D, + 25910 - 19968: jis0208<<14 | 0x39<<7 | 0x1F, + 25911 - 19968: jis0208<<14 | 0x39<<7 | 0x1E, + 25912 - 19968: jis0208<<14 | 0x39<<7 | 0x20, + 25913 - 19968: jis0208<<14 | 0x11<<7 | 0x5D, + 25914 - 19968: jis0212<<14 | 0x20<<7 | 0x26, + 25915 - 19968: jis0208<<14 | 0x18<<7 | 0x15, + 25916 - 19968: jis0212<<14 | 0x20<<7 | 0x27, + 25917 - 19968: jis0212<<14 | 0x20<<7 | 0x28, + 25918 - 19968: jis0208<<14 | 0x29<<7 | 0x5B, + 25919 - 19968: jis0208<<14 | 0x1F<<7 | 0x0E, + 25923 - 19968: jis0212<<14 | 0x20<<7 | 0x29, + 25925 - 19968: jis0208<<14 | 0x17<<7 | 0x2D, + 25927 - 19968: jis0212<<14 | 0x20<<7 | 0x2A, + 25928 - 19968: jis0208<<14 | 0x39<<7 | 0x22, + 25929 - 19968: jis0212<<14 | 0x20<<7 | 0x2B, + 25933 - 19968: jis0208<<14 | 0x39<<7 | 0x25, + 25934 - 19968: jis0208<<14 | 0x59<<7 | 0x12, + 25935 - 19968: jis0208<<14 | 0x28<<7 | 0x31, + 25936 - 19968: jis0212<<14 | 0x20<<7 | 0x2C, + 25937 - 19968: jis0208<<14 | 0x14<<7 | 0x3E, + 25938 - 19968: jis0212<<14 | 0x20<<7 | 0x2D, + 25940 - 19968: jis0212<<14 | 0x20<<7 | 0x2E, + 25941 - 19968: jis0208<<14 | 0x39<<7 | 0x24, + 25942 - 19968: jis0208<<14 | 0x39<<7 | 0x23, + 25943 - 19968: jis0208<<14 | 0x26<<7 | 0x33, + 25944 - 19968: jis0208<<14 | 0x39<<7 | 0x26, + 25945 - 19968: jis0208<<14 | 0x15<<7 | 0x14, + 25949 - 19968: jis0208<<14 | 0x39<<7 | 0x28, + 25950 - 19968: jis0208<<14 | 0x39<<7 | 0x27, + 25951 - 19968: jis0212<<14 | 0x20<<7 | 0x2F, + 25952 - 19968: jis0212<<14 | 0x20<<7 | 0x30, + 25954 - 19968: jis0208<<14 | 0x13<<7 | 0x19, + 25955 - 19968: jis0208<<14 | 0x1A<<7 | 0x15, + 25958 - 19968: jis0208<<14 | 0x25<<7 | 0x37, + 25959 - 19968: jis0212<<14 | 0x20<<7 | 0x31, + 25963 - 19968: jis0212<<14 | 0x20<<7 | 0x32, + 25964 - 19968: jis0208<<14 | 0x16<<7 | 0x28, + 25968 - 19968: jis0208<<14 | 0x1E<<7 | 0x53, + 25970 - 19968: jis0208<<14 | 0x39<<7 | 0x29, + 25972 - 19968: jis0208<<14 | 0x1F<<7 | 0x0F, + 25973 - 19968: jis0208<<14 | 0x24<<7 | 0x07, + 25975 - 19968: jis0208<<14 | 0x28<<7 | 0x3E, + 25976 - 19968: jis0208<<14 | 0x39<<7 | 0x2A, + 25978 - 19968: jis0212<<14 | 0x20<<7 | 0x33, + 25981 - 19968: jis0212<<14 | 0x20<<7 | 0x34, + 25985 - 19968: jis0212<<14 | 0x20<<7 | 0x35, + 25986 - 19968: jis0208<<14 | 0x39<<7 | 0x2B, + 25987 - 19968: jis0208<<14 | 0x39<<7 | 0x2C, + 25989 - 19968: jis0212<<14 | 0x20<<7 | 0x36, + 25991 - 19968: jis0208<<14 | 0x29<<7 | 0x17, + 25992 - 19968: jis0208<<14 | 0x34<<7 | 0x3C, + 25993 - 19968: jis0208<<14 | 0x1F<<7 | 0x25, + 25994 - 19968: jis0212<<14 | 0x20<<7 | 0x37, + 25996 - 19968: jis0208<<14 | 0x28<<7 | 0x2B, + 25998 - 19968: jis0208<<14 | 0x19<<7 | 0x37, + 26000 - 19968: jis0208<<14 | 0x27<<7 | 0x44, + 26001 - 19968: jis0208<<14 | 0x27<<7 | 0x22, + 26002 - 19968: jis0212<<14 | 0x20<<7 | 0x38, + 26005 - 19968: jis0212<<14 | 0x20<<7 | 0x39, + 26007 - 19968: jis0208<<14 | 0x24<<7 | 0x2C, + 26008 - 19968: jis0212<<14 | 0x20<<7 | 0x3A, + 26009 - 19968: jis0208<<14 | 0x2D<<7 | 0x20, + 26011 - 19968: jis0208<<14 | 0x39<<7 | 0x2E, + 26012 - 19968: jis0208<<14 | 0x1B<<7 | 0x2F, + 26013 - 19968: jis0212<<14 | 0x20<<7 | 0x3B, + 26015 - 19968: jis0208<<14 | 0x39<<7 | 0x2F, + 26016 - 19968: jis0212<<14 | 0x20<<7 | 0x3C, + 26017 - 19968: jis0208<<14 | 0x0F<<7 | 0x15, + 26019 - 19968: jis0212<<14 | 0x20<<7 | 0x3D, + 26020 - 19968: jis0208<<14 | 0x15<<7 | 0x33, + 26021 - 19968: jis0208<<14 | 0x1F<<7 | 0x2C, + 26022 - 19968: jis0212<<14 | 0x20<<7 | 0x3E, + 26023 - 19968: jis0208<<14 | 0x28<<7 | 0x3F, + 26027 - 19968: jis0208<<14 | 0x39<<7 | 0x30, + 26028 - 19968: jis0208<<14 | 0x1A<<7 | 0x21, + 26029 - 19968: jis0208<<14 | 0x22<<7 | 0x26, + 26030 - 19968: jis0212<<14 | 0x20<<7 | 0x3F, + 26031 - 19968: jis0208<<14 | 0x1A<<7 | 0x3A, + 26032 - 19968: jis0208<<14 | 0x1E<<7 | 0x16, + 26034 - 19968: jis0212<<14 | 0x20<<7 | 0x40, + 26035 - 19968: jis0212<<14 | 0x20<<7 | 0x41, + 26036 - 19968: jis0212<<14 | 0x20<<7 | 0x42, + 26039 - 19968: jis0208<<14 | 0x39<<7 | 0x31, + 26041 - 19968: jis0208<<14 | 0x29<<7 | 0x5C, + 26044 - 19968: jis0208<<14 | 0x10<<7 | 0x56, + 26045 - 19968: jis0208<<14 | 0x1A<<7 | 0x3B, + 26047 - 19968: jis0212<<14 | 0x20<<7 | 0x43, + 26049 - 19968: jis0208<<14 | 0x39<<7 | 0x34, + 26050 - 19968: jis0212<<14 | 0x20<<7 | 0x44, + 26051 - 19968: jis0208<<14 | 0x39<<7 | 0x32, + 26052 - 19968: jis0208<<14 | 0x39<<7 | 0x35, + 26053 - 19968: jis0208<<14 | 0x2D<<7 | 0x18, + 26054 - 19968: jis0208<<14 | 0x39<<7 | 0x33, + 26056 - 19968: jis0212<<14 | 0x20<<7 | 0x45, + 26057 - 19968: jis0212<<14 | 0x20<<7 | 0x46, + 26059 - 19968: jis0208<<14 | 0x1F<<7 | 0x5A, + 26060 - 19968: jis0208<<14 | 0x39<<7 | 0x36, + 26062 - 19968: jis0212<<14 | 0x20<<7 | 0x47, + 26063 - 19968: jis0208<<14 | 0x21<<7 | 0x11, + 26064 - 19968: jis0212<<14 | 0x20<<7 | 0x48, + 26066 - 19968: jis0208<<14 | 0x39<<7 | 0x37, + 26068 - 19968: jis0212<<14 | 0x20<<7 | 0x49, + 26070 - 19968: jis0212<<14 | 0x20<<7 | 0x4A, + 26071 - 19968: jis0208<<14 | 0x13<<7 | 0x59, + 26072 - 19968: jis0212<<14 | 0x20<<7 | 0x4B, + 26073 - 19968: jis0208<<14 | 0x39<<7 | 0x39, + 26075 - 19968: jis0208<<14 | 0x39<<7 | 0x38, + 26079 - 19968: jis0212<<14 | 0x20<<7 | 0x4C, + 26080 - 19968: jis0208<<14 | 0x39<<7 | 0x3A, + 26081 - 19968: jis0208<<14 | 0x39<<7 | 0x3B, + 26082 - 19968: jis0208<<14 | 0x13<<7 | 0x5A, + 26085 - 19968: jis0208<<14 | 0x25<<7 | 0x5B, + 26086 - 19968: jis0208<<14 | 0x22<<7 | 0x15, + 26087 - 19968: jis0208<<14 | 0x14<<7 | 0x4B, + 26088 - 19968: jis0208<<14 | 0x1A<<7 | 0x3C, + 26089 - 19968: jis0208<<14 | 0x20<<7 | 0x40, + 26092 - 19968: jis0208<<14 | 0x1C<<7 | 0x3B, + 26093 - 19968: jis0208<<14 | 0x0F<<7 | 0x0F, + 26096 - 19968: jis0212<<14 | 0x20<<7 | 0x4D, + 26097 - 19968: jis0208<<14 | 0x39<<7 | 0x3C, + 26098 - 19968: jis0212<<14 | 0x20<<7 | 0x4E, + 26100 - 19968: jis0212<<14 | 0x20<<7 | 0x4F, + 26101 - 19968: jis0212<<14 | 0x20<<7 | 0x50, + 26105 - 19968: jis0212<<14 | 0x20<<7 | 0x51, + 26106 - 19968: jis0208<<14 | 0x11<<7 | 0x01, + 26107 - 19968: jis0208<<14 | 0x39<<7 | 0x40, + 26110 - 19968: jis0212<<14 | 0x20<<7 | 0x52, + 26111 - 19968: jis0212<<14 | 0x20<<7 | 0x53, + 26112 - 19968: jis0208<<14 | 0x59<<7 | 0x13, + 26114 - 19968: jis0208<<14 | 0x18<<7 | 0x16, + 26115 - 19968: jis0208<<14 | 0x39<<7 | 0x3F, + 26116 - 19968: jis0212<<14 | 0x20<<7 | 0x55, + 26118 - 19968: jis0208<<14 | 0x19<<7 | 0x0A, + 26119 - 19968: jis0208<<14 | 0x1D<<7 | 0x19, + 26120 - 19968: jis0212<<14 | 0x20<<7 | 0x56, + 26121 - 19968: jis0208<<14 | 0x59<<7 | 0x16, + 26122 - 19968: jis0208<<14 | 0x39<<7 | 0x3E, + 26124 - 19968: jis0208<<14 | 0x1D<<7 | 0x1A, + 26125 - 19968: jis0212<<14 | 0x20<<7 | 0x58, + 26126 - 19968: jis0208<<14 | 0x2B<<7 | 0x1F, + 26127 - 19968: jis0208<<14 | 0x19<<7 | 0x09, + 26129 - 19968: jis0212<<14 | 0x20<<7 | 0x59, + 26130 - 19968: jis0212<<14 | 0x20<<7 | 0x5A, + 26131 - 19968: jis0208<<14 | 0x0F<<7 | 0x36, + 26132 - 19968: jis0208<<14 | 0x1F<<7 | 0x2D, + 26133 - 19968: jis0208<<14 | 0x59<<7 | 0x14, + 26134 - 19968: jis0212<<14 | 0x20<<7 | 0x5C, + 26140 - 19968: jis0208<<14 | 0x39<<7 | 0x45, + 26141 - 19968: jis0212<<14 | 0x20<<7 | 0x5D, + 26142 - 19968: jis0208<<14 | 0x59<<7 | 0x18, + 26143 - 19968: jis0208<<14 | 0x1F<<7 | 0x10, + 26144 - 19968: jis0208<<14 | 0x10<<7 | 0x26, + 26145 - 19968: jis0212<<14 | 0x21<<7 | 0x01, + 26146 - 19968: jis0212<<14 | 0x21<<7 | 0x02, + 26147 - 19968: jis0212<<14 | 0x21<<7 | 0x03, + 26148 - 19968: jis0208<<14 | 0x59<<7 | 0x19, + 26149 - 19968: jis0208<<14 | 0x1C<<7 | 0x34, + 26150 - 19968: jis0212<<14 | 0x21<<7 | 0x05, + 26151 - 19968: jis0208<<14 | 0x2A<<7 | 0x45, + 26152 - 19968: jis0208<<14 | 0x19<<7 | 0x51, + 26153 - 19968: jis0212<<14 | 0x21<<7 | 0x06, + 26154 - 19968: jis0212<<14 | 0x21<<7 | 0x07, + 26155 - 19968: jis0212<<14 | 0x21<<7 | 0x08, + 26156 - 19968: jis0212<<14 | 0x21<<7 | 0x09, + 26157 - 19968: jis0208<<14 | 0x1D<<7 | 0x1B, + 26158 - 19968: jis0208<<14 | 0x59<<7 | 0x17, + 26159 - 19968: jis0208<<14 | 0x1F<<7 | 0x06, + 26160 - 19968: jis0212<<14 | 0x21<<7 | 0x0B, + 26161 - 19968: jis0208<<14 | 0x58<<7 | 0x07, + 26163 - 19968: jis0212<<14 | 0x21<<7 | 0x0D, + 26164 - 19968: jis0208<<14 | 0x39<<7 | 0x44, + 26165 - 19968: jis0208<<14 | 0x39<<7 | 0x42, + 26166 - 19968: jis0208<<14 | 0x39<<7 | 0x43, + 26167 - 19968: jis0212<<14 | 0x21<<7 | 0x0F, + 26169 - 19968: jis0212<<14 | 0x21<<7 | 0x0E, + 26171 - 19968: jis0208<<14 | 0x59<<7 | 0x15, + 26172 - 19968: jis0208<<14 | 0x22<<7 | 0x4A, + 26175 - 19968: jis0208<<14 | 0x3A<<7 | 0x05, + 26176 - 19968: jis0212<<14 | 0x21<<7 | 0x10, + 26177 - 19968: jis0208<<14 | 0x39<<7 | 0x49, + 26178 - 19968: jis0208<<14 | 0x1A<<7 | 0x5D, + 26179 - 19968: jis0208<<14 | 0x18<<7 | 0x17, + 26180 - 19968: jis0208<<14 | 0x39<<7 | 0x47, + 26181 - 19968: jis0212<<14 | 0x21<<7 | 0x11, + 26182 - 19968: jis0212<<14 | 0x21<<7 | 0x12, + 26185 - 19968: jis0208<<14 | 0x39<<7 | 0x48, + 26186 - 19968: jis0212<<14 | 0x21<<7 | 0x13, + 26187 - 19968: jis0208<<14 | 0x1E<<7 | 0x17, + 26188 - 19968: jis0212<<14 | 0x21<<7 | 0x14, + 26190 - 19968: jis0212<<14 | 0x21<<7 | 0x16, + 26191 - 19968: jis0208<<14 | 0x39<<7 | 0x46, + 26193 - 19968: jis0212<<14 | 0x21<<7 | 0x15, + 26194 - 19968: jis0208<<14 | 0x1A<<7 | 0x0E, + 26199 - 19968: jis0208<<14 | 0x59<<7 | 0x1B, + 26200 - 19968: jis0212<<14 | 0x21<<7 | 0x18, + 26201 - 19968: jis0208<<14 | 0x59<<7 | 0x1C, + 26203 - 19968: jis0212<<14 | 0x21<<7 | 0x1A, + 26204 - 19968: jis0212<<14 | 0x21<<7 | 0x1B, + 26205 - 19968: jis0208<<14 | 0x39<<7 | 0x4B, + 26206 - 19968: jis0208<<14 | 0x39<<7 | 0x4A, + 26207 - 19968: jis0208<<14 | 0x39<<7 | 0x4F, + 26208 - 19968: jis0212<<14 | 0x21<<7 | 0x1C, + 26209 - 19968: jis0212<<14 | 0x21<<7 | 0x1D, + 26210 - 19968: jis0208<<14 | 0x39<<7 | 0x50, + 26212 - 19968: jis0208<<14 | 0x39<<7 | 0x4C, + 26213 - 19968: jis0208<<14 | 0x59<<7 | 0x1A, + 26214 - 19968: jis0208<<14 | 0x12<<7 | 0x01, + 26215 - 19968: jis0208<<14 | 0x39<<7 | 0x4D, + 26216 - 19968: jis0208<<14 | 0x39<<7 | 0x4E, + 26217 - 19968: jis0208<<14 | 0x27<<7 | 0x34, + 26218 - 19968: jis0212<<14 | 0x21<<7 | 0x1F, + 26219 - 19968: jis0212<<14 | 0x21<<7 | 0x20, + 26220 - 19968: jis0212<<14 | 0x21<<7 | 0x21, + 26222 - 19968: jis0208<<14 | 0x28<<7 | 0x40, + 26223 - 19968: jis0208<<14 | 0x16<<7 | 0x29, + 26224 - 19968: jis0208<<14 | 0x39<<7 | 0x51, + 26227 - 19968: jis0208<<14 | 0x59<<7 | 0x1E, + 26228 - 19968: jis0208<<14 | 0x1F<<7 | 0x11, + 26229 - 19968: jis0212<<14 | 0x21<<7 | 0x24, + 26230 - 19968: jis0208<<14 | 0x1D<<7 | 0x1C, + 26231 - 19968: jis0212<<14 | 0x21<<7 | 0x26, + 26232 - 19968: jis0212<<14 | 0x21<<7 | 0x27, + 26233 - 19968: jis0212<<14 | 0x21<<7 | 0x28, + 26234 - 19968: jis0208<<14 | 0x22<<7 | 0x31, + 26235 - 19968: jis0212<<14 | 0x21<<7 | 0x29, + 26236 - 19968: jis0212<<14 | 0x21<<7 | 0x2B, + 26238 - 19968: jis0212<<14 | 0x21<<7 | 0x22, + 26239 - 19968: jis0212<<14 | 0x21<<7 | 0x25, + 26240 - 19968: jis0212<<14 | 0x21<<7 | 0x2A, + 26241 - 19968: jis0208<<14 | 0x15<<7 | 0x26, + 26243 - 19968: jis0208<<14 | 0x39<<7 | 0x52, + 26244 - 19968: jis0208<<14 | 0x39<<7 | 0x56, + 26247 - 19968: jis0208<<14 | 0x11<<7 | 0x2A, + 26248 - 19968: jis0208<<14 | 0x39<<7 | 0x53, + 26249 - 19968: jis0208<<14 | 0x39<<7 | 0x55, + 26251 - 19968: jis0212<<14 | 0x21<<7 | 0x2C, + 26252 - 19968: jis0212<<14 | 0x21<<7 | 0x2D, + 26253 - 19968: jis0212<<14 | 0x21<<7 | 0x2E, + 26254 - 19968: jis0208<<14 | 0x39<<7 | 0x54, + 26256 - 19968: jis0212<<14 | 0x21<<7 | 0x2F, + 26257 - 19968: jis0208<<14 | 0x1C<<7 | 0x4A, + 26258 - 19968: jis0212<<14 | 0x21<<7 | 0x30, + 26262 - 19968: jis0208<<14 | 0x22<<7 | 0x27, + 26263 - 19968: jis0208<<14 | 0x0F<<7 | 0x24, + 26264 - 19968: jis0208<<14 | 0x39<<7 | 0x57, + 26265 - 19968: jis0208<<14 | 0x59<<7 | 0x1F, + 26266 - 19968: jis0212<<14 | 0x21<<7 | 0x32, + 26267 - 19968: jis0212<<14 | 0x21<<7 | 0x33, + 26268 - 19968: jis0212<<14 | 0x21<<7 | 0x34, + 26269 - 19968: jis0208<<14 | 0x39<<7 | 0x58, + 26271 - 19968: jis0212<<14 | 0x21<<7 | 0x35, + 26272 - 19968: jis0208<<14 | 0x59<<7 | 0x20, + 26274 - 19968: jis0208<<14 | 0x23<<7 | 0x09, + 26276 - 19968: jis0212<<14 | 0x21<<7 | 0x37, + 26278 - 19968: jis0208<<14 | 0x2D<<7 | 0x50, + 26283 - 19968: jis0208<<14 | 0x1A<<7 | 0x22, + 26285 - 19968: jis0212<<14 | 0x21<<7 | 0x38, + 26286 - 19968: jis0208<<14 | 0x29<<7 | 0x4A, + 26289 - 19968: jis0212<<14 | 0x21<<7 | 0x39, + 26290 - 19968: jis0208<<14 | 0x59<<7 | 0x21, + 26292 - 19968: jis0208<<14 | 0x2A<<7 | 0x1C, + 26293 - 19968: jis0212<<14 | 0x21<<7 | 0x3B, + 26296 - 19968: jis0208<<14 | 0x3A<<7 | 0x01, + 26297 - 19968: jis0208<<14 | 0x39<<7 | 0x5A, + 26299 - 19968: jis0212<<14 | 0x21<<7 | 0x3C, + 26300 - 19968: jis0208<<14 | 0x39<<7 | 0x5D, + 26302 - 19968: jis0208<<14 | 0x39<<7 | 0x5C, + 26303 - 19968: jis0208<<14 | 0x59<<7 | 0x22, + 26304 - 19968: jis0212<<14 | 0x21<<7 | 0x3E, + 26305 - 19968: jis0208<<14 | 0x39<<7 | 0x59, + 26306 - 19968: jis0212<<14 | 0x21<<7 | 0x3F, + 26307 - 19968: jis0212<<14 | 0x21<<7 | 0x40, + 26308 - 19968: jis0208<<14 | 0x3A<<7 | 0x00, + 26311 - 19968: jis0208<<14 | 0x25<<7 | 0x3D, + 26312 - 19968: jis0212<<14 | 0x21<<7 | 0x41, + 26313 - 19968: jis0208<<14 | 0x39<<7 | 0x5B, + 26316 - 19968: jis0212<<14 | 0x21<<7 | 0x42, + 26318 - 19968: jis0212<<14 | 0x21<<7 | 0x43, + 26319 - 19968: jis0212<<14 | 0x21<<7 | 0x44, + 26324 - 19968: jis0212<<14 | 0x21<<7 | 0x45, + 26326 - 19968: jis0208<<14 | 0x3A<<7 | 0x02, + 26329 - 19968: jis0208<<14 | 0x1C<<7 | 0x4B, + 26330 - 19968: jis0208<<14 | 0x3A<<7 | 0x03, + 26331 - 19968: jis0212<<14 | 0x21<<7 | 0x46, + 26332 - 19968: jis0208<<14 | 0x2C<<7 | 0x2A, + 26333 - 19968: jis0208<<14 | 0x26<<7 | 0x57, + 26335 - 19968: jis0212<<14 | 0x21<<7 | 0x47, + 26336 - 19968: jis0208<<14 | 0x3A<<7 | 0x04, + 26342 - 19968: jis0208<<14 | 0x3A<<7 | 0x06, + 26344 - 19968: jis0212<<14 | 0x21<<7 | 0x48, + 26345 - 19968: jis0208<<14 | 0x3A<<7 | 0x07, + 26347 - 19968: jis0212<<14 | 0x21<<7 | 0x49, + 26348 - 19968: jis0212<<14 | 0x21<<7 | 0x4A, + 26350 - 19968: jis0212<<14 | 0x21<<7 | 0x4B, + 26352 - 19968: jis0208<<14 | 0x3A<<7 | 0x08, + 26354 - 19968: jis0208<<14 | 0x15<<7 | 0x29, + 26355 - 19968: jis0208<<14 | 0x10<<7 | 0x27, + 26356 - 19968: jis0208<<14 | 0x18<<7 | 0x18, + 26357 - 19968: jis0208<<14 | 0x3A<<7 | 0x09, + 26359 - 19968: jis0208<<14 | 0x3A<<7 | 0x0A, + 26360 - 19968: jis0208<<14 | 0x1C<<7 | 0x50, + 26361 - 19968: jis0208<<14 | 0x20<<7 | 0x41, + 26362 - 19968: jis0208<<14 | 0x59<<7 | 0x23, + 26363 - 19968: jis0208<<14 | 0x58<<7 | 0x0A, + 26364 - 19968: jis0208<<14 | 0x31<<7 | 0x37, + 26365 - 19968: jis0208<<14 | 0x20<<7 | 0x1D, + 26366 - 19968: jis0208<<14 | 0x20<<7 | 0x1C, + 26367 - 19968: jis0208<<14 | 0x21<<7 | 0x37, + 26368 - 19968: jis0208<<14 | 0x19<<7 | 0x26, + 26371 - 19968: jis0208<<14 | 0x2F<<7 | 0x51, + 26373 - 19968: jis0212<<14 | 0x21<<7 | 0x4D, + 26375 - 19968: jis0212<<14 | 0x21<<7 | 0x4E, + 26376 - 19968: jis0208<<14 | 0x16<<7 | 0x4D, + 26377 - 19968: jis0208<<14 | 0x2C<<7 | 0x0C, + 26379 - 19968: jis0208<<14 | 0x29<<7 | 0x5D, + 26381 - 19968: jis0208<<14 | 0x28<<7 | 0x5D, + 26382 - 19968: jis0208<<14 | 0x59<<7 | 0x24, + 26383 - 19968: jis0208<<14 | 0x3A<<7 | 0x0B, + 26387 - 19968: jis0212<<14 | 0x21<<7 | 0x50, + 26388 - 19968: jis0208<<14 | 0x19<<7 | 0x52, + 26389 - 19968: jis0208<<14 | 0x23<<7 | 0x1E, + 26390 - 19968: jis0208<<14 | 0x3A<<7 | 0x0C, + 26391 - 19968: jis0208<<14 | 0x2E<<7 | 0x0E, + 26393 - 19968: jis0212<<14 | 0x21<<7 | 0x51, + 26395 - 19968: jis0208<<14 | 0x2A<<7 | 0x1D, + 26396 - 19968: jis0212<<14 | 0x21<<7 | 0x52, + 26397 - 19968: jis0208<<14 | 0x23<<7 | 0x0A, + 26398 - 19968: jis0208<<14 | 0x3A<<7 | 0x0D, + 26399 - 19968: jis0208<<14 | 0x13<<7 | 0x5B, + 26400 - 19968: jis0212<<14 | 0x21<<7 | 0x53, + 26402 - 19968: jis0212<<14 | 0x21<<7 | 0x54, + 26406 - 19968: jis0208<<14 | 0x3A<<7 | 0x0E, + 26407 - 19968: jis0208<<14 | 0x3A<<7 | 0x0F, + 26408 - 19968: jis0208<<14 | 0x2B<<7 | 0x39, + 26410 - 19968: jis0208<<14 | 0x2B<<7 | 0x03, + 26411 - 19968: jis0208<<14 | 0x2A<<7 | 0x55, + 26412 - 19968: jis0208<<14 | 0x2A<<7 | 0x3B, + 26413 - 19968: jis0208<<14 | 0x1A<<7 | 0x04, + 26414 - 19968: jis0208<<14 | 0x3A<<7 | 0x11, + 26417 - 19968: jis0208<<14 | 0x1B<<7 | 0x4A, + 26419 - 19968: jis0212<<14 | 0x21<<7 | 0x55, + 26420 - 19968: jis0208<<14 | 0x2A<<7 | 0x30, + 26422 - 19968: jis0208<<14 | 0x3A<<7 | 0x13, + 26423 - 19968: jis0208<<14 | 0x3A<<7 | 0x16, + 26424 - 19968: jis0208<<14 | 0x3A<<7 | 0x15, + 26426 - 19968: jis0208<<14 | 0x13<<7 | 0x58, + 26429 - 19968: jis0208<<14 | 0x14<<7 | 0x3F, + 26430 - 19968: jis0212<<14 | 0x21<<7 | 0x56, + 26431 - 19968: jis0208<<14 | 0x3A<<7 | 0x12, + 26433 - 19968: jis0208<<14 | 0x3A<<7 | 0x14, + 26437 - 19968: jis0212<<14 | 0x21<<7 | 0x57, + 26438 - 19968: jis0208<<14 | 0x3A<<7 | 0x17, + 26439 - 19968: jis0212<<14 | 0x21<<7 | 0x58, + 26440 - 19968: jis0212<<14 | 0x21<<7 | 0x59, + 26441 - 19968: jis0208<<14 | 0x1E<<7 | 0x58, + 26444 - 19968: jis0212<<14 | 0x21<<7 | 0x5A, + 26446 - 19968: jis0208<<14 | 0x2C<<7 | 0x5A, + 26447 - 19968: jis0208<<14 | 0x0F<<7 | 0x28, + 26448 - 19968: jis0208<<14 | 0x19<<7 | 0x3F, + 26449 - 19968: jis0208<<14 | 0x21<<7 | 0x1B, + 26451 - 19968: jis0208<<14 | 0x1B<<7 | 0x3C, + 26452 - 19968: jis0212<<14 | 0x21<<7 | 0x5B, + 26453 - 19968: jis0212<<14 | 0x21<<7 | 0x5C, + 26454 - 19968: jis0208<<14 | 0x1D<<7 | 0x52, + 26457 - 19968: jis0208<<14 | 0x3A<<7 | 0x1A, + 26460 - 19968: jis0208<<14 | 0x24<<7 | 0x2D, + 26461 - 19968: jis0212<<14 | 0x21<<7 | 0x5D, + 26462 - 19968: jis0208<<14 | 0x3A<<7 | 0x18, + 26463 - 19968: jis0208<<14 | 0x21<<7 | 0x0A, + 26464 - 19968: jis0208<<14 | 0x3A<<7 | 0x19, + 26465 - 19968: jis0208<<14 | 0x1D<<7 | 0x51, + 26466 - 19968: jis0208<<14 | 0x2B<<7 | 0x3C, + 26467 - 19968: jis0208<<14 | 0x3A<<7 | 0x1B, + 26468 - 19968: jis0208<<14 | 0x3A<<7 | 0x1C, + 26469 - 19968: jis0208<<14 | 0x2C<<7 | 0x47, + 26470 - 19968: jis0208<<14 | 0x59<<7 | 0x26, + 26474 - 19968: jis0208<<14 | 0x3A<<7 | 0x21, + 26476 - 19968: jis0212<<14 | 0x22<<7 | 0x01, + 26477 - 19968: jis0208<<14 | 0x18<<7 | 0x19, + 26478 - 19968: jis0212<<14 | 0x22<<7 | 0x02, + 26479 - 19968: jis0208<<14 | 0x26<<7 | 0x34, + 26480 - 19968: jis0208<<14 | 0x3A<<7 | 0x1E, + 26481 - 19968: jis0208<<14 | 0x24<<7 | 0x4B, + 26482 - 19968: jis0208<<14 | 0x39<<7 | 0x3D, + 26483 - 19968: jis0208<<14 | 0x39<<7 | 0x41, + 26484 - 19968: jis0212<<14 | 0x22<<7 | 0x03, + 26485 - 19968: jis0208<<14 | 0x14<<7 | 0x2E, + 26486 - 19968: jis0212<<14 | 0x22<<7 | 0x04, + 26487 - 19968: jis0208<<14 | 0x26<<7 | 0x26, + 26491 - 19968: jis0212<<14 | 0x22<<7 | 0x05, + 26492 - 19968: jis0208<<14 | 0x3A<<7 | 0x20, + 26494 - 19968: jis0208<<14 | 0x1D<<7 | 0x1D, + 26495 - 19968: jis0208<<14 | 0x27<<7 | 0x23, + 26497 - 19968: jis0212<<14 | 0x22<<7 | 0x06, + 26500 - 19968: jis0212<<14 | 0x22<<7 | 0x07, + 26501 - 19968: jis0208<<14 | 0x3A<<7 | 0x26, + 26503 - 19968: jis0208<<14 | 0x27<<7 | 0x59, + 26505 - 19968: jis0208<<14 | 0x3A<<7 | 0x1D, + 26507 - 19968: jis0208<<14 | 0x3A<<7 | 0x23, + 26508 - 19968: jis0208<<14 | 0x3A<<7 | 0x22, + 26510 - 19968: jis0212<<14 | 0x22<<7 | 0x08, + 26511 - 19968: jis0212<<14 | 0x22<<7 | 0x09, + 26512 - 19968: jis0208<<14 | 0x1F<<7 | 0x2E, + 26513 - 19968: jis0212<<14 | 0x22<<7 | 0x0A, + 26515 - 19968: jis0212<<14 | 0x22<<7 | 0x0B, + 26517 - 19968: jis0208<<14 | 0x2A<<7 | 0x4C, + 26518 - 19968: jis0212<<14 | 0x22<<7 | 0x0C, + 26519 - 19968: jis0208<<14 | 0x2D<<7 | 0x32, + 26520 - 19968: jis0212<<14 | 0x22<<7 | 0x0D, + 26521 - 19968: jis0212<<14 | 0x22<<7 | 0x0E, + 26522 - 19968: jis0208<<14 | 0x2A<<7 | 0x46, + 26523 - 19968: jis0212<<14 | 0x22<<7 | 0x0F, + 26524 - 19968: jis0208<<14 | 0x11<<7 | 0x2B, + 26525 - 19968: jis0208<<14 | 0x1A<<7 | 0x3D, + 26528 - 19968: jis0208<<14 | 0x2E<<7 | 0x27, + 26529 - 19968: jis0208<<14 | 0x3A<<7 | 0x25, + 26530 - 19968: jis0208<<14 | 0x1E<<7 | 0x54, + 26534 - 19968: jis0208<<14 | 0x3A<<7 | 0x24, + 26537 - 19968: jis0208<<14 | 0x3A<<7 | 0x1F, + 26543 - 19968: jis0208<<14 | 0x17<<7 | 0x2E, + 26544 - 19968: jis0212<<14 | 0x22<<7 | 0x10, + 26545 - 19968: jis0212<<14 | 0x22<<7 | 0x11, + 26546 - 19968: jis0212<<14 | 0x22<<7 | 0x12, + 26547 - 19968: jis0208<<14 | 0x3A<<7 | 0x2B, + 26548 - 19968: jis0208<<14 | 0x3A<<7 | 0x29, + 26549 - 19968: jis0212<<14 | 0x22<<7 | 0x13, + 26550 - 19968: jis0208<<14 | 0x11<<7 | 0x2C, + 26551 - 19968: jis0208<<14 | 0x3A<<7 | 0x27, + 26552 - 19968: jis0208<<14 | 0x3A<<7 | 0x2D, + 26553 - 19968: jis0208<<14 | 0x3A<<7 | 0x33, + 26555 - 19968: jis0208<<14 | 0x59<<7 | 0x27, + 26556 - 19968: jis0212<<14 | 0x22<<7 | 0x15, + 26557 - 19968: jis0212<<14 | 0x22<<7 | 0x16, + 26560 - 19968: jis0208<<14 | 0x59<<7 | 0x29, + 26561 - 19968: jis0208<<14 | 0x21<<7 | 0x27, + 26562 - 19968: jis0212<<14 | 0x22<<7 | 0x19, + 26563 - 19968: jis0212<<14 | 0x22<<7 | 0x1A, + 26564 - 19968: jis0208<<14 | 0x29<<7 | 0x20, + 26565 - 19968: jis0212<<14 | 0x22<<7 | 0x1B, + 26566 - 19968: jis0208<<14 | 0x3A<<7 | 0x35, + 26568 - 19968: jis0212<<14 | 0x22<<7 | 0x1C, + 26569 - 19968: jis0212<<14 | 0x22<<7 | 0x1D, + 26570 - 19968: jis0208<<14 | 0x28<<7 | 0x01, + 26574 - 19968: jis0208<<14 | 0x3A<<7 | 0x34, + 26575 - 19968: jis0208<<14 | 0x26<<7 | 0x4F, + 26576 - 19968: jis0208<<14 | 0x2A<<7 | 0x1E, + 26577 - 19968: jis0208<<14 | 0x13<<7 | 0x1A, + 26578 - 19968: jis0212<<14 | 0x22<<7 | 0x1E, + 26579 - 19968: jis0208<<14 | 0x1F<<7 | 0x56, + 26580 - 19968: jis0208<<14 | 0x1C<<7 | 0x1F, + 26583 - 19968: jis0212<<14 | 0x22<<7 | 0x1F, + 26584 - 19968: jis0208<<14 | 0x23<<7 | 0x32, + 26585 - 19968: jis0212<<14 | 0x22<<7 | 0x20, + 26586 - 19968: jis0208<<14 | 0x2C<<7 | 0x0D, + 26588 - 19968: jis0212<<14 | 0x22<<7 | 0x21, + 26589 - 19968: jis0208<<14 | 0x3A<<7 | 0x30, + 26590 - 19968: jis0208<<14 | 0x3A<<7 | 0x2F, + 26593 - 19968: jis0212<<14 | 0x22<<7 | 0x22, + 26594 - 19968: jis0208<<14 | 0x3A<<7 | 0x31, + 26596 - 19968: jis0208<<14 | 0x3A<<7 | 0x2E, + 26598 - 19968: jis0212<<14 | 0x22<<7 | 0x23, + 26599 - 19968: jis0208<<14 | 0x3A<<7 | 0x36, + 26601 - 19968: jis0208<<14 | 0x3A<<7 | 0x2C, + 26604 - 19968: jis0208<<14 | 0x3A<<7 | 0x2A, + 26606 - 19968: jis0208<<14 | 0x3A<<7 | 0x32, + 26607 - 19968: jis0208<<14 | 0x3A<<7 | 0x28, + 26608 - 19968: jis0212<<14 | 0x22<<7 | 0x24, + 26609 - 19968: jis0208<<14 | 0x22<<7 | 0x4B, + 26610 - 19968: jis0212<<14 | 0x22<<7 | 0x25, + 26611 - 19968: jis0208<<14 | 0x2B<<7 | 0x57, + 26612 - 19968: jis0208<<14 | 0x1B<<7 | 0x25, + 26613 - 19968: jis0208<<14 | 0x19<<7 | 0x53, + 26614 - 19968: jis0212<<14 | 0x22<<7 | 0x26, + 26615 - 19968: jis0212<<14 | 0x22<<7 | 0x27, + 26617 - 19968: jis0212<<14 | 0x22<<7 | 0x17, + 26619 - 19968: jis0208<<14 | 0x19<<7 | 0x19, + 26622 - 19968: jis0208<<14 | 0x2A<<7 | 0x4E, + 26623 - 19968: jis0208<<14 | 0x12<<7 | 0x20, + 26625 - 19968: jis0208<<14 | 0x59<<7 | 0x2A, + 26626 - 19968: jis0208<<14 | 0x23<<7 | 0x2D, + 26627 - 19968: jis0208<<14 | 0x25<<7 | 0x29, + 26628 - 19968: jis0208<<14 | 0x10<<7 | 0x28, + 26643 - 19968: jis0208<<14 | 0x1F<<7 | 0x51, + 26644 - 19968: jis0212<<14 | 0x22<<7 | 0x29, + 26646 - 19968: jis0208<<14 | 0x1F<<7 | 0x13, + 26647 - 19968: jis0208<<14 | 0x16<<7 | 0x09, + 26649 - 19968: jis0212<<14 | 0x22<<7 | 0x2A, + 26653 - 19968: jis0212<<14 | 0x22<<7 | 0x2B, + 26654 - 19968: jis0208<<14 | 0x3A<<7 | 0x38, + 26655 - 19968: jis0212<<14 | 0x22<<7 | 0x2C, + 26657 - 19968: jis0208<<14 | 0x18<<7 | 0x1A, + 26658 - 19968: jis0208<<14 | 0x12<<7 | 0x5B, + 26663 - 19968: jis0212<<14 | 0x22<<7 | 0x2E, + 26664 - 19968: jis0212<<14 | 0x22<<7 | 0x2D, + 26665 - 19968: jis0208<<14 | 0x3A<<7 | 0x3A, + 26666 - 19968: jis0208<<14 | 0x12<<7 | 0x53, + 26667 - 19968: jis0208<<14 | 0x3A<<7 | 0x40, + 26668 - 19968: jis0212<<14 | 0x22<<7 | 0x2F, + 26669 - 19968: jis0212<<14 | 0x22<<7 | 0x30, + 26671 - 19968: jis0212<<14 | 0x22<<7 | 0x31, + 26672 - 19968: jis0212<<14 | 0x22<<7 | 0x32, + 26673 - 19968: jis0212<<14 | 0x22<<7 | 0x33, + 26674 - 19968: jis0208<<14 | 0x3A<<7 | 0x3D, + 26675 - 19968: jis0212<<14 | 0x22<<7 | 0x34, + 26676 - 19968: jis0208<<14 | 0x1F<<7 | 0x52, + 26680 - 19968: jis0208<<14 | 0x12<<7 | 0x2A, + 26681 - 19968: jis0208<<14 | 0x19<<7 | 0x0B, + 26683 - 19968: jis0212<<14 | 0x22<<7 | 0x35, + 26684 - 19968: jis0208<<14 | 0x12<<7 | 0x29, + 26685 - 19968: jis0208<<14 | 0x19<<7 | 0x2E, + 26687 - 19968: jis0212<<14 | 0x22<<7 | 0x36, + 26688 - 19968: jis0208<<14 | 0x3A<<7 | 0x3B, + 26689 - 19968: jis0208<<14 | 0x16<<7 | 0x44, + 26690 - 19968: jis0208<<14 | 0x16<<7 | 0x2A, + 26691 - 19968: jis0208<<14 | 0x24<<7 | 0x4C, + 26692 - 19968: jis0208<<14 | 0x59<<7 | 0x2B, + 26693 - 19968: jis0212<<14 | 0x22<<7 | 0x38, + 26694 - 19968: jis0208<<14 | 0x3A<<7 | 0x39, + 26696 - 19968: jis0208<<14 | 0x0F<<7 | 0x25, + 26698 - 19968: jis0212<<14 | 0x22<<7 | 0x39, + 26700 - 19968: jis0212<<14 | 0x22<<7 | 0x3A, + 26701 - 19968: jis0208<<14 | 0x3A<<7 | 0x3C, + 26702 - 19968: jis0208<<14 | 0x3A<<7 | 0x3E, + 26704 - 19968: jis0208<<14 | 0x15<<7 | 0x2C, + 26705 - 19968: jis0208<<14 | 0x16<<7 | 0x0B, + 26706 - 19968: jis0208<<14 | 0x59<<7 | 0x28, + 26707 - 19968: jis0208<<14 | 0x13<<7 | 0x1B, + 26708 - 19968: jis0208<<14 | 0x14<<7 | 0x2A, + 26709 - 19968: jis0212<<14 | 0x22<<7 | 0x3B, + 26711 - 19968: jis0212<<14 | 0x22<<7 | 0x3C, + 26712 - 19968: jis0212<<14 | 0x22<<7 | 0x3D, + 26713 - 19968: jis0208<<14 | 0x3A<<7 | 0x41, + 26715 - 19968: jis0212<<14 | 0x22<<7 | 0x3E, + 26716 - 19968: jis0208<<14 | 0x19<<7 | 0x58, + 26717 - 19968: jis0208<<14 | 0x2A<<7 | 0x50, + 26719 - 19968: jis0208<<14 | 0x1A<<7 | 0x16, + 26723 - 19968: jis0208<<14 | 0x3A<<7 | 0x42, + 26727 - 19968: jis0208<<14 | 0x28<<7 | 0x0F, + 26731 - 19968: jis0212<<14 | 0x22<<7 | 0x3F, + 26734 - 19968: jis0212<<14 | 0x22<<7 | 0x40, + 26735 - 19968: jis0212<<14 | 0x22<<7 | 0x41, + 26736 - 19968: jis0212<<14 | 0x22<<7 | 0x42, + 26737 - 19968: jis0212<<14 | 0x22<<7 | 0x43, + 26738 - 19968: jis0212<<14 | 0x22<<7 | 0x44, + 26740 - 19968: jis0208<<14 | 0x3A<<7 | 0x4E, + 26741 - 19968: jis0212<<14 | 0x22<<7 | 0x45, + 26742 - 19968: jis0208<<14 | 0x11<<7 | 0x12, + 26743 - 19968: jis0208<<14 | 0x3A<<7 | 0x43, + 26745 - 19968: jis0212<<14 | 0x22<<7 | 0x46, + 26746 - 19968: jis0212<<14 | 0x22<<7 | 0x47, + 26747 - 19968: jis0212<<14 | 0x22<<7 | 0x48, + 26748 - 19968: jis0212<<14 | 0x22<<7 | 0x49, + 26750 - 19968: jis0208<<14 | 0x3A<<7 | 0x54, + 26751 - 19968: jis0208<<14 | 0x3A<<7 | 0x44, + 26753 - 19968: jis0208<<14 | 0x2D<<7 | 0x21, + 26754 - 19968: jis0212<<14 | 0x22<<7 | 0x4A, + 26755 - 19968: jis0208<<14 | 0x3A<<7 | 0x4B, + 26756 - 19968: jis0212<<14 | 0x22<<7 | 0x4B, + 26757 - 19968: jis0208<<14 | 0x26<<7 | 0x3E, + 26758 - 19968: jis0212<<14 | 0x22<<7 | 0x4C, + 26760 - 19968: jis0212<<14 | 0x22<<7 | 0x4D, + 26765 - 19968: jis0208<<14 | 0x3A<<7 | 0x53, + 26767 - 19968: jis0208<<14 | 0x3A<<7 | 0x46, + 26771 - 19968: jis0208<<14 | 0x0F<<7 | 0x13, + 26772 - 19968: jis0208<<14 | 0x3A<<7 | 0x48, + 26774 - 19968: jis0212<<14 | 0x22<<7 | 0x4E, + 26775 - 19968: jis0208<<14 | 0x18<<7 | 0x1B, + 26776 - 19968: jis0212<<14 | 0x22<<7 | 0x4F, + 26778 - 19968: jis0212<<14 | 0x22<<7 | 0x50, + 26779 - 19968: jis0208<<14 | 0x3A<<7 | 0x4A, + 26780 - 19968: jis0212<<14 | 0x22<<7 | 0x51, + 26781 - 19968: jis0208<<14 | 0x3A<<7 | 0x49, + 26783 - 19968: jis0208<<14 | 0x3A<<7 | 0x45, + 26784 - 19968: jis0208<<14 | 0x3A<<7 | 0x50, + 26785 - 19968: jis0212<<14 | 0x22<<7 | 0x52, + 26786 - 19968: jis0208<<14 | 0x1D<<7 | 0x1E, + 26787 - 19968: jis0212<<14 | 0x22<<7 | 0x53, + 26789 - 19968: jis0212<<14 | 0x22<<7 | 0x54, + 26790 - 19968: jis0208<<14 | 0x33<<7 | 0x4C, + 26791 - 19968: jis0208<<14 | 0x17<<7 | 0x47, + 26792 - 19968: jis0208<<14 | 0x2C<<7 | 0x5B, + 26793 - 19968: jis0212<<14 | 0x22<<7 | 0x55, + 26794 - 19968: jis0212<<14 | 0x22<<7 | 0x56, + 26797 - 19968: jis0208<<14 | 0x3A<<7 | 0x47, + 26798 - 19968: jis0212<<14 | 0x22<<7 | 0x57, + 26799 - 19968: jis0208<<14 | 0x23<<7 | 0x53, + 26800 - 19968: jis0208<<14 | 0x12<<7 | 0x02, + 26801 - 19968: jis0208<<14 | 0x19<<7 | 0x0C, + 26802 - 19968: jis0212<<14 | 0x22<<7 | 0x58, + 26803 - 19968: jis0208<<14 | 0x3A<<7 | 0x3F, + 26805 - 19968: jis0208<<14 | 0x3A<<7 | 0x4F, + 26806 - 19968: jis0208<<14 | 0x12<<7 | 0x40, + 26809 - 19968: jis0208<<14 | 0x3A<<7 | 0x4D, + 26810 - 19968: jis0208<<14 | 0x3A<<7 | 0x51, + 26811 - 19968: jis0212<<14 | 0x22<<7 | 0x59, + 26812 - 19968: jis0208<<14 | 0x24<<7 | 0x4D, + 26820 - 19968: jis0208<<14 | 0x13<<7 | 0x5D, + 26821 - 19968: jis0212<<14 | 0x22<<7 | 0x5A, + 26822 - 19968: jis0208<<14 | 0x3B<<7 | 0x11, + 26824 - 19968: jis0208<<14 | 0x58<<7 | 0x08, + 26825 - 19968: jis0208<<14 | 0x2B<<7 | 0x28, + 26826 - 19968: jis0208<<14 | 0x3A<<7 | 0x56, + 26827 - 19968: jis0208<<14 | 0x13<<7 | 0x5C, + 26828 - 19968: jis0212<<14 | 0x22<<7 | 0x5C, + 26829 - 19968: jis0208<<14 | 0x3A<<7 | 0x5D, + 26831 - 19968: jis0208<<14 | 0x59<<7 | 0x2C, + 26832 - 19968: jis0212<<14 | 0x23<<7 | 0x00, + 26833 - 19968: jis0212<<14 | 0x23<<7 | 0x01, + 26834 - 19968: jis0208<<14 | 0x2A<<7 | 0x1F, + 26835 - 19968: jis0212<<14 | 0x23<<7 | 0x02, + 26836 - 19968: jis0208<<14 | 0x3B<<7 | 0x00, + 26837 - 19968: jis0208<<14 | 0x3B<<7 | 0x02, + 26838 - 19968: jis0212<<14 | 0x23<<7 | 0x03, + 26839 - 19968: jis0208<<14 | 0x3B<<7 | 0x06, + 26840 - 19968: jis0208<<14 | 0x3A<<7 | 0x58, + 26841 - 19968: jis0212<<14 | 0x23<<7 | 0x04, + 26842 - 19968: jis0208<<14 | 0x22<<7 | 0x09, + 26844 - 19968: jis0212<<14 | 0x23<<7 | 0x05, + 26845 - 19968: jis0212<<14 | 0x23<<7 | 0x06, + 26847 - 19968: jis0208<<14 | 0x24<<7 | 0x4E, + 26848 - 19968: jis0208<<14 | 0x3B<<7 | 0x0A, + 26849 - 19968: jis0208<<14 | 0x3A<<7 | 0x5B, + 26851 - 19968: jis0208<<14 | 0x3B<<7 | 0x07, + 26853 - 19968: jis0212<<14 | 0x23<<7 | 0x07, + 26855 - 19968: jis0208<<14 | 0x3B<<7 | 0x01, + 26856 - 19968: jis0212<<14 | 0x23<<7 | 0x08, + 26858 - 19968: jis0212<<14 | 0x23<<7 | 0x09, + 26859 - 19968: jis0212<<14 | 0x23<<7 | 0x0A, + 26860 - 19968: jis0212<<14 | 0x23<<7 | 0x0B, + 26861 - 19968: jis0212<<14 | 0x23<<7 | 0x0C, + 26862 - 19968: jis0208<<14 | 0x1E<<7 | 0x18, + 26863 - 19968: jis0208<<14 | 0x3B<<7 | 0x0B, + 26864 - 19968: jis0212<<14 | 0x23<<7 | 0x0D, + 26865 - 19968: jis0212<<14 | 0x23<<7 | 0x0E, + 26866 - 19968: jis0208<<14 | 0x1F<<7 | 0x12, + 26869 - 19968: jis0212<<14 | 0x23<<7 | 0x0F, + 26870 - 19968: jis0212<<14 | 0x23<<7 | 0x10, + 26873 - 19968: jis0208<<14 | 0x3B<<7 | 0x09, + 26874 - 19968: jis0208<<14 | 0x13<<7 | 0x1C, + 26875 - 19968: jis0212<<14 | 0x23<<7 | 0x11, + 26876 - 19968: jis0212<<14 | 0x23<<7 | 0x12, + 26877 - 19968: jis0212<<14 | 0x23<<7 | 0x13, + 26880 - 19968: jis0208<<14 | 0x2E<<7 | 0x2F, + 26881 - 19968: jis0208<<14 | 0x3A<<7 | 0x55, + 26884 - 19968: jis0208<<14 | 0x3B<<7 | 0x05, + 26885 - 19968: jis0208<<14 | 0x0F<<7 | 0x37, + 26886 - 19968: jis0212<<14 | 0x23<<7 | 0x14, + 26888 - 19968: jis0208<<14 | 0x3A<<7 | 0x57, + 26889 - 19968: jis0212<<14 | 0x23<<7 | 0x15, + 26890 - 19968: jis0212<<14 | 0x23<<7 | 0x16, + 26891 - 19968: jis0208<<14 | 0x2B<<7 | 0x19, + 26892 - 19968: jis0208<<14 | 0x3A<<7 | 0x5C, + 26893 - 19968: jis0208<<14 | 0x1E<<7 | 0x01, + 26894 - 19968: jis0208<<14 | 0x23<<7 | 0x26, + 26895 - 19968: jis0208<<14 | 0x3A<<7 | 0x52, + 26896 - 19968: jis0212<<14 | 0x23<<7 | 0x17, + 26897 - 19968: jis0212<<14 | 0x23<<7 | 0x18, + 26898 - 19968: jis0208<<14 | 0x3B<<7 | 0x04, + 26899 - 19968: jis0212<<14 | 0x23<<7 | 0x19, + 26902 - 19968: jis0212<<14 | 0x23<<7 | 0x1A, + 26903 - 19968: jis0212<<14 | 0x23<<7 | 0x1B, + 26905 - 19968: jis0208<<14 | 0x1E<<7 | 0x59, + 26906 - 19968: jis0208<<14 | 0x3B<<7 | 0x0E, + 26907 - 19968: jis0208<<14 | 0x12<<7 | 0x50, + 26908 - 19968: jis0208<<14 | 0x17<<7 | 0x00, + 26913 - 19968: jis0208<<14 | 0x3B<<7 | 0x10, + 26914 - 19968: jis0208<<14 | 0x3A<<7 | 0x59, + 26915 - 19968: jis0208<<14 | 0x3B<<7 | 0x0F, + 26917 - 19968: jis0208<<14 | 0x3B<<7 | 0x08, + 26918 - 19968: jis0208<<14 | 0x3A<<7 | 0x5A, + 26920 - 19968: jis0208<<14 | 0x3B<<7 | 0x0C, + 26922 - 19968: jis0208<<14 | 0x3B<<7 | 0x0D, + 26928 - 19968: jis0208<<14 | 0x3B<<7 | 0x1E, + 26929 - 19968: jis0212<<14 | 0x23<<7 | 0x1C, + 26931 - 19968: jis0212<<14 | 0x23<<7 | 0x1D, + 26932 - 19968: jis0208<<14 | 0x25<<7 | 0x2D, + 26933 - 19968: jis0212<<14 | 0x23<<7 | 0x1E, + 26934 - 19968: jis0208<<14 | 0x3B<<7 | 0x03, + 26936 - 19968: jis0212<<14 | 0x23<<7 | 0x1F, + 26937 - 19968: jis0208<<14 | 0x3B<<7 | 0x1A, + 26939 - 19968: jis0212<<14 | 0x23<<7 | 0x20, + 26941 - 19968: jis0208<<14 | 0x3B<<7 | 0x1C, + 26943 - 19968: jis0208<<14 | 0x23<<7 | 0x37, + 26946 - 19968: jis0212<<14 | 0x23<<7 | 0x21, + 26949 - 19968: jis0212<<14 | 0x23<<7 | 0x22, + 26953 - 19968: jis0212<<14 | 0x23<<7 | 0x23, + 26954 - 19968: jis0208<<14 | 0x2C<<7 | 0x2B, + 26958 - 19968: jis0212<<14 | 0x23<<7 | 0x24, + 26963 - 19968: jis0208<<14 | 0x28<<7 | 0x55, + 26964 - 19968: jis0208<<14 | 0x3B<<7 | 0x17, + 26965 - 19968: jis0208<<14 | 0x21<<7 | 0x29, + 26967 - 19968: jis0212<<14 | 0x23<<7 | 0x25, + 26969 - 19968: jis0208<<14 | 0x3B<<7 | 0x1D, + 26970 - 19968: jis0208<<14 | 0x20<<7 | 0x1E, + 26971 - 19968: jis0212<<14 | 0x23<<7 | 0x26, + 26972 - 19968: jis0208<<14 | 0x3B<<7 | 0x14, + 26973 - 19968: jis0208<<14 | 0x3B<<7 | 0x21, + 26974 - 19968: jis0208<<14 | 0x3B<<7 | 0x20, + 26976 - 19968: jis0208<<14 | 0x25<<7 | 0x4E, + 26977 - 19968: jis0208<<14 | 0x3B<<7 | 0x1F, + 26978 - 19968: jis0208<<14 | 0x25<<7 | 0x49, + 26979 - 19968: jis0212<<14 | 0x23<<7 | 0x27, + 26980 - 19968: jis0212<<14 | 0x23<<7 | 0x28, + 26981 - 19968: jis0212<<14 | 0x23<<7 | 0x29, + 26982 - 19968: jis0212<<14 | 0x23<<7 | 0x2A, + 26984 - 19968: jis0208<<14 | 0x59<<7 | 0x2E, + 26985 - 19968: jis0212<<14 | 0x23<<7 | 0x2C, + 26986 - 19968: jis0208<<14 | 0x3B<<7 | 0x23, + 26987 - 19968: jis0208<<14 | 0x3B<<7 | 0x16, + 26988 - 19968: jis0212<<14 | 0x23<<7 | 0x2D, + 26989 - 19968: jis0208<<14 | 0x15<<7 | 0x27, + 26990 - 19968: jis0208<<14 | 0x3B<<7 | 0x19, + 26991 - 19968: jis0208<<14 | 0x1C<<7 | 0x3C, + 26992 - 19968: jis0212<<14 | 0x23<<7 | 0x2E, + 26993 - 19968: jis0212<<14 | 0x23<<7 | 0x2F, + 26994 - 19968: jis0212<<14 | 0x23<<7 | 0x30, + 26995 - 19968: jis0208<<14 | 0x26<<7 | 0x3F, + 26996 - 19968: jis0208<<14 | 0x3B<<7 | 0x1B, + 26997 - 19968: jis0208<<14 | 0x15<<7 | 0x2A, + 26999 - 19968: jis0208<<14 | 0x3B<<7 | 0x13, + 27000 - 19968: jis0208<<14 | 0x3B<<7 | 0x15, + 27001 - 19968: jis0208<<14 | 0x3B<<7 | 0x12, + 27002 - 19968: jis0212<<14 | 0x23<<7 | 0x31, + 27003 - 19968: jis0212<<14 | 0x23<<7 | 0x32, + 27004 - 19968: jis0208<<14 | 0x2E<<7 | 0x0F, + 27005 - 19968: jis0208<<14 | 0x12<<7 | 0x39, + 27006 - 19968: jis0208<<14 | 0x3B<<7 | 0x18, + 27007 - 19968: jis0212<<14 | 0x23<<7 | 0x33, + 27008 - 19968: jis0212<<14 | 0x23<<7 | 0x34, + 27009 - 19968: jis0208<<14 | 0x3B<<7 | 0x22, + 27010 - 19968: jis0208<<14 | 0x12<<7 | 0x14, + 27018 - 19968: jis0208<<14 | 0x19<<7 | 0x46, + 27021 - 19968: jis0212<<14 | 0x23<<7 | 0x35, + 27022 - 19968: jis0208<<14 | 0x10<<7 | 0x3C, + 27025 - 19968: jis0208<<14 | 0x3B<<7 | 0x33, + 27026 - 19968: jis0212<<14 | 0x23<<7 | 0x36, + 27028 - 19968: jis0208<<14 | 0x2E<<7 | 0x10, + 27029 - 19968: jis0208<<14 | 0x3B<<7 | 0x36, + 27030 - 19968: jis0212<<14 | 0x23<<7 | 0x37, + 27032 - 19968: jis0208<<14 | 0x59<<7 | 0x30, + 27035 - 19968: jis0208<<14 | 0x1E<<7 | 0x19, + 27036 - 19968: jis0208<<14 | 0x3B<<7 | 0x35, + 27040 - 19968: jis0208<<14 | 0x3B<<7 | 0x34, + 27041 - 19968: jis0212<<14 | 0x23<<7 | 0x39, + 27045 - 19968: jis0212<<14 | 0x23<<7 | 0x3A, + 27046 - 19968: jis0212<<14 | 0x23<<7 | 0x3B, + 27047 - 19968: jis0208<<14 | 0x3B<<7 | 0x31, + 27048 - 19968: jis0212<<14 | 0x23<<7 | 0x3C, + 27051 - 19968: jis0212<<14 | 0x23<<7 | 0x3D, + 27053 - 19968: jis0212<<14 | 0x23<<7 | 0x3E, + 27054 - 19968: jis0208<<14 | 0x3B<<7 | 0x25, + 27055 - 19968: jis0212<<14 | 0x23<<7 | 0x3F, + 27057 - 19968: jis0208<<14 | 0x3B<<7 | 0x42, + 27058 - 19968: jis0208<<14 | 0x3B<<7 | 0x24, + 27060 - 19968: jis0208<<14 | 0x3B<<7 | 0x37, + 27063 - 19968: jis0212<<14 | 0x23<<7 | 0x40, + 27064 - 19968: jis0212<<14 | 0x23<<7 | 0x41, + 27066 - 19968: jis0212<<14 | 0x23<<7 | 0x42, + 27067 - 19968: jis0208<<14 | 0x3B<<7 | 0x2F, + 27068 - 19968: jis0212<<14 | 0x23<<7 | 0x43, + 27070 - 19968: jis0208<<14 | 0x3B<<7 | 0x2A, + 27071 - 19968: jis0208<<14 | 0x3B<<7 | 0x27, + 27073 - 19968: jis0208<<14 | 0x3B<<7 | 0x28, + 27075 - 19968: jis0208<<14 | 0x3B<<7 | 0x30, + 27077 - 19968: jis0212<<14 | 0x23<<7 | 0x44, + 27079 - 19968: jis0208<<14 | 0x53<<7 | 0x01, + 27080 - 19968: jis0212<<14 | 0x23<<7 | 0x45, + 27082 - 19968: jis0208<<14 | 0x3B<<7 | 0x2D, + 27083 - 19968: jis0208<<14 | 0x18<<7 | 0x1C, + 27084 - 19968: jis0208<<14 | 0x23<<7 | 0x27, + 27085 - 19968: jis0208<<14 | 0x20<<7 | 0x43, + 27086 - 19968: jis0208<<14 | 0x3B<<7 | 0x2B, + 27088 - 19968: jis0208<<14 | 0x3B<<7 | 0x26, + 27089 - 19968: jis0212<<14 | 0x23<<7 | 0x46, + 27091 - 19968: jis0208<<14 | 0x3B<<7 | 0x29, + 27094 - 19968: jis0212<<14 | 0x23<<7 | 0x47, + 27095 - 19968: jis0212<<14 | 0x23<<7 | 0x48, + 27096 - 19968: jis0208<<14 | 0x2C<<7 | 0x2C, + 27097 - 19968: jis0208<<14 | 0x2A<<7 | 0x49, + 27101 - 19968: jis0208<<14 | 0x3B<<7 | 0x2E, + 27102 - 19968: jis0208<<14 | 0x3B<<7 | 0x38, + 27106 - 19968: jis0208<<14 | 0x59<<7 | 0x31, + 27109 - 19968: jis0212<<14 | 0x23<<7 | 0x4A, + 27111 - 19968: jis0208<<14 | 0x3B<<7 | 0x40, + 27112 - 19968: jis0208<<14 | 0x3B<<7 | 0x39, + 27115 - 19968: jis0208<<14 | 0x3B<<7 | 0x46, + 27117 - 19968: jis0208<<14 | 0x3B<<7 | 0x44, + 27118 - 19968: jis0212<<14 | 0x23<<7 | 0x4B, + 27119 - 19968: jis0212<<14 | 0x23<<7 | 0x4C, + 27121 - 19968: jis0212<<14 | 0x23<<7 | 0x4D, + 27122 - 19968: jis0208<<14 | 0x3B<<7 | 0x3F, + 27123 - 19968: jis0212<<14 | 0x23<<7 | 0x4E, + 27125 - 19968: jis0212<<14 | 0x23<<7 | 0x4F, + 27129 - 19968: jis0208<<14 | 0x3B<<7 | 0x3E, + 27131 - 19968: jis0208<<14 | 0x23<<7 | 0x2F, + 27133 - 19968: jis0208<<14 | 0x20<<7 | 0x44, + 27134 - 19968: jis0212<<14 | 0x23<<7 | 0x50, + 27135 - 19968: jis0208<<14 | 0x3B<<7 | 0x3C, + 27136 - 19968: jis0212<<14 | 0x23<<7 | 0x51, + 27137 - 19968: jis0212<<14 | 0x23<<7 | 0x52, + 27138 - 19968: jis0208<<14 | 0x3B<<7 | 0x3A, + 27139 - 19968: jis0212<<14 | 0x23<<7 | 0x53, + 27141 - 19968: jis0208<<14 | 0x3B<<7 | 0x41, + 27146 - 19968: jis0208<<14 | 0x3B<<7 | 0x47, + 27147 - 19968: jis0208<<14 | 0x27<<7 | 0x54, + 27148 - 19968: jis0208<<14 | 0x3B<<7 | 0x4D, + 27151 - 19968: jis0212<<14 | 0x23<<7 | 0x54, + 27153 - 19968: jis0212<<14 | 0x23<<7 | 0x55, + 27154 - 19968: jis0208<<14 | 0x3B<<7 | 0x48, + 27155 - 19968: jis0208<<14 | 0x3B<<7 | 0x4B, + 27156 - 19968: jis0208<<14 | 0x3B<<7 | 0x45, + 27157 - 19968: jis0212<<14 | 0x23<<7 | 0x56, + 27159 - 19968: jis0208<<14 | 0x22<<7 | 0x53, + 27161 - 19968: jis0208<<14 | 0x28<<7 | 0x17, + 27162 - 19968: jis0212<<14 | 0x23<<7 | 0x57, + 27163 - 19968: jis0208<<14 | 0x3B<<7 | 0x3B, + 27165 - 19968: jis0212<<14 | 0x23<<7 | 0x58, + 27166 - 19968: jis0208<<14 | 0x3B<<7 | 0x43, + 27167 - 19968: jis0208<<14 | 0x1D<<7 | 0x1F, + 27168 - 19968: jis0212<<14 | 0x23<<7 | 0x59, + 27169 - 19968: jis0208<<14 | 0x2B<<7 | 0x2E, + 27170 - 19968: jis0208<<14 | 0x3B<<7 | 0x57, + 27171 - 19968: jis0208<<14 | 0x3B<<7 | 0x4A, + 27172 - 19968: jis0212<<14 | 0x23<<7 | 0x5A, + 27176 - 19968: jis0212<<14 | 0x23<<7 | 0x5B, + 27177 - 19968: jis0208<<14 | 0x17<<7 | 0x01, + 27178 - 19968: jis0208<<14 | 0x11<<7 | 0x02, + 27179 - 19968: jis0208<<14 | 0x12<<7 | 0x3E, + 27182 - 19968: jis0208<<14 | 0x3B<<7 | 0x32, + 27184 - 19968: jis0208<<14 | 0x59<<7 | 0x32, + 27186 - 19968: jis0212<<14 | 0x23<<7 | 0x5D, + 27188 - 19968: jis0212<<14 | 0x24<<7 | 0x00, + 27189 - 19968: jis0208<<14 | 0x1D<<7 | 0x20, + 27190 - 19968: jis0208<<14 | 0x3B<<7 | 0x4F, + 27191 - 19968: jis0212<<14 | 0x24<<7 | 0x01, + 27192 - 19968: jis0208<<14 | 0x3B<<7 | 0x56, + 27193 - 19968: jis0208<<14 | 0x1B<<7 | 0x58, + 27194 - 19968: jis0208<<14 | 0x12<<7 | 0x51, + 27195 - 19968: jis0212<<14 | 0x24<<7 | 0x02, + 27197 - 19968: jis0208<<14 | 0x22<<7 | 0x0D, + 27198 - 19968: jis0212<<14 | 0x24<<7 | 0x03, + 27199 - 19968: jis0212<<14 | 0x24<<7 | 0x04, + 27204 - 19968: jis0208<<14 | 0x3B<<7 | 0x4C, + 27205 - 19968: jis0212<<14 | 0x24<<7 | 0x05, + 27206 - 19968: jis0208<<14 | 0x59<<7 | 0x34, + 27207 - 19968: jis0208<<14 | 0x3B<<7 | 0x51, + 27208 - 19968: jis0208<<14 | 0x3B<<7 | 0x55, + 27209 - 19968: jis0212<<14 | 0x24<<7 | 0x07, + 27210 - 19968: jis0212<<14 | 0x24<<7 | 0x08, + 27211 - 19968: jis0208<<14 | 0x15<<7 | 0x15, + 27214 - 19968: jis0212<<14 | 0x24<<7 | 0x09, + 27216 - 19968: jis0212<<14 | 0x24<<7 | 0x0A, + 27217 - 19968: jis0212<<14 | 0x24<<7 | 0x0B, + 27218 - 19968: jis0212<<14 | 0x24<<7 | 0x0C, + 27221 - 19968: jis0212<<14 | 0x24<<7 | 0x0D, + 27222 - 19968: jis0212<<14 | 0x24<<7 | 0x0E, + 27224 - 19968: jis0208<<14 | 0x14<<7 | 0x2B, + 27225 - 19968: jis0208<<14 | 0x3B<<7 | 0x53, + 27227 - 19968: jis0212<<14 | 0x24<<7 | 0x0F, + 27231 - 19968: jis0208<<14 | 0x14<<7 | 0x00, + 27233 - 19968: jis0208<<14 | 0x25<<7 | 0x2A, + 27234 - 19968: jis0208<<14 | 0x3B<<7 | 0x52, + 27236 - 19968: jis0212<<14 | 0x24<<7 | 0x10, + 27238 - 19968: jis0208<<14 | 0x3B<<7 | 0x54, + 27239 - 19968: jis0212<<14 | 0x24<<7 | 0x11, + 27242 - 19968: jis0212<<14 | 0x24<<7 | 0x12, + 27243 - 19968: jis0208<<14 | 0x59<<7 | 0x33, + 27249 - 19968: jis0212<<14 | 0x24<<7 | 0x13, + 27250 - 19968: jis0208<<14 | 0x3B<<7 | 0x4E, + 27251 - 19968: jis0208<<14 | 0x59<<7 | 0x35, + 27256 - 19968: jis0208<<14 | 0x3B<<7 | 0x50, + 27262 - 19968: jis0208<<14 | 0x59<<7 | 0x36, + 27263 - 19968: jis0208<<14 | 0x12<<7 | 0x3F, + 27264 - 19968: jis0208<<14 | 0x22<<7 | 0x28, + 27265 - 19968: jis0212<<14 | 0x24<<7 | 0x16, + 27267 - 19968: jis0212<<14 | 0x24<<7 | 0x17, + 27268 - 19968: jis0208<<14 | 0x3B<<7 | 0x5B, + 27270 - 19968: jis0212<<14 | 0x24<<7 | 0x18, + 27271 - 19968: jis0212<<14 | 0x24<<7 | 0x19, + 27273 - 19968: jis0212<<14 | 0x24<<7 | 0x1A, + 27275 - 19968: jis0212<<14 | 0x24<<7 | 0x1B, + 27277 - 19968: jis0208<<14 | 0x3B<<7 | 0x59, + 27278 - 19968: jis0208<<14 | 0x17<<7 | 0x48, + 27280 - 19968: jis0208<<14 | 0x3B<<7 | 0x58, + 27281 - 19968: jis0212<<14 | 0x24<<7 | 0x1C, + 27287 - 19968: jis0208<<14 | 0x3C<<7 | 0x00, + 27291 - 19968: jis0212<<14 | 0x24<<7 | 0x1D, + 27292 - 19968: jis0208<<14 | 0x3A<<7 | 0x37, + 27293 - 19968: jis0212<<14 | 0x24<<7 | 0x1E, + 27294 - 19968: jis0212<<14 | 0x24<<7 | 0x1F, + 27295 - 19968: jis0212<<14 | 0x24<<7 | 0x20, + 27296 - 19968: jis0208<<14 | 0x3B<<7 | 0x5A, + 27298 - 19968: jis0208<<14 | 0x3B<<7 | 0x5C, + 27299 - 19968: jis0208<<14 | 0x3B<<7 | 0x5D, + 27301 - 19968: jis0212<<14 | 0x24<<7 | 0x21, + 27306 - 19968: jis0208<<14 | 0x3C<<7 | 0x0B, + 27307 - 19968: jis0212<<14 | 0x24<<7 | 0x22, + 27308 - 19968: jis0208<<14 | 0x3C<<7 | 0x07, + 27310 - 19968: jis0208<<14 | 0x3A<<7 | 0x4C, + 27311 - 19968: jis0212<<14 | 0x24<<7 | 0x23, + 27312 - 19968: jis0212<<14 | 0x24<<7 | 0x24, + 27313 - 19968: jis0212<<14 | 0x24<<7 | 0x25, + 27315 - 19968: jis0208<<14 | 0x3C<<7 | 0x06, + 27316 - 19968: jis0212<<14 | 0x24<<7 | 0x26, + 27320 - 19968: jis0208<<14 | 0x3C<<7 | 0x05, + 27323 - 19968: jis0208<<14 | 0x3C<<7 | 0x02, + 27325 - 19968: jis0212<<14 | 0x24<<7 | 0x27, + 27326 - 19968: jis0212<<14 | 0x24<<7 | 0x28, + 27327 - 19968: jis0212<<14 | 0x24<<7 | 0x29, + 27329 - 19968: jis0208<<14 | 0x3B<<7 | 0x49, + 27330 - 19968: jis0208<<14 | 0x3C<<7 | 0x04, + 27331 - 19968: jis0208<<14 | 0x3C<<7 | 0x03, + 27334 - 19968: jis0212<<14 | 0x24<<7 | 0x2A, + 27336 - 19968: jis0212<<14 | 0x24<<7 | 0x2C, + 27337 - 19968: jis0212<<14 | 0x24<<7 | 0x2B, + 27340 - 19968: jis0212<<14 | 0x24<<7 | 0x2D, + 27344 - 19968: jis0212<<14 | 0x24<<7 | 0x2E, + 27345 - 19968: jis0208<<14 | 0x3C<<7 | 0x09, + 27347 - 19968: jis0208<<14 | 0x2E<<7 | 0x05, + 27348 - 19968: jis0212<<14 | 0x24<<7 | 0x2F, + 27349 - 19968: jis0212<<14 | 0x24<<7 | 0x30, + 27350 - 19968: jis0212<<14 | 0x24<<7 | 0x31, + 27354 - 19968: jis0208<<14 | 0x3C<<7 | 0x0C, + 27355 - 19968: jis0208<<14 | 0x15<<7 | 0x5A, + 27356 - 19968: jis0212<<14 | 0x24<<7 | 0x32, + 27357 - 19968: jis0212<<14 | 0x24<<7 | 0x33, + 27358 - 19968: jis0208<<14 | 0x3C<<7 | 0x08, + 27359 - 19968: jis0208<<14 | 0x3C<<7 | 0x0A, + 27362 - 19968: jis0208<<14 | 0x59<<7 | 0x37, + 27364 - 19968: jis0208<<14 | 0x59<<7 | 0x38, + 27367 - 19968: jis0212<<14 | 0x24<<7 | 0x35, + 27368 - 19968: jis0208<<14 | 0x27<<7 | 0x06, + 27370 - 19968: jis0208<<14 | 0x3C<<7 | 0x0D, + 27372 - 19968: jis0212<<14 | 0x24<<7 | 0x36, + 27376 - 19968: jis0212<<14 | 0x24<<7 | 0x37, + 27377 - 19968: jis0212<<14 | 0x24<<7 | 0x38, + 27378 - 19968: jis0212<<14 | 0x24<<7 | 0x39, + 27386 - 19968: jis0208<<14 | 0x3C<<7 | 0x11, + 27387 - 19968: jis0208<<14 | 0x3C<<7 | 0x0E, + 27388 - 19968: jis0212<<14 | 0x24<<7 | 0x3A, + 27389 - 19968: jis0212<<14 | 0x24<<7 | 0x3B, + 27394 - 19968: jis0212<<14 | 0x24<<7 | 0x3C, + 27395 - 19968: jis0212<<14 | 0x24<<7 | 0x3D, + 27396 - 19968: jis0208<<14 | 0x2C<<7 | 0x52, + 27397 - 19968: jis0208<<14 | 0x3C<<7 | 0x0F, + 27398 - 19968: jis0212<<14 | 0x24<<7 | 0x3E, + 27399 - 19968: jis0212<<14 | 0x24<<7 | 0x3F, + 27401 - 19968: jis0212<<14 | 0x24<<7 | 0x40, + 27402 - 19968: jis0208<<14 | 0x3B<<7 | 0x3D, + 27407 - 19968: jis0212<<14 | 0x24<<7 | 0x41, + 27408 - 19968: jis0212<<14 | 0x24<<7 | 0x42, + 27409 - 19968: jis0212<<14 | 0x24<<7 | 0x43, + 27410 - 19968: jis0208<<14 | 0x3C<<7 | 0x12, + 27414 - 19968: jis0208<<14 | 0x3C<<7 | 0x13, + 27415 - 19968: jis0212<<14 | 0x24<<7 | 0x44, + 27419 - 19968: jis0212<<14 | 0x24<<7 | 0x45, + 27421 - 19968: jis0208<<14 | 0x10<<7 | 0x14, + 27422 - 19968: jis0212<<14 | 0x24<<7 | 0x46, + 27423 - 19968: jis0208<<14 | 0x3C<<7 | 0x15, + 27424 - 19968: jis0208<<14 | 0x16<<7 | 0x46, + 27425 - 19968: jis0208<<14 | 0x1B<<7 | 0x00, + 27427 - 19968: jis0208<<14 | 0x15<<7 | 0x34, + 27428 - 19968: jis0212<<14 | 0x24<<7 | 0x47, + 27431 - 19968: jis0208<<14 | 0x11<<7 | 0x03, + 27432 - 19968: jis0212<<14 | 0x24<<7 | 0x48, + 27435 - 19968: jis0212<<14 | 0x24<<7 | 0x49, + 27436 - 19968: jis0212<<14 | 0x24<<7 | 0x4A, + 27439 - 19968: jis0212<<14 | 0x24<<7 | 0x4B, + 27442 - 19968: jis0208<<14 | 0x2C<<7 | 0x3E, + 27445 - 19968: jis0212<<14 | 0x24<<7 | 0x4C, + 27446 - 19968: jis0212<<14 | 0x24<<7 | 0x4D, + 27447 - 19968: jis0208<<14 | 0x3C<<7 | 0x17, + 27448 - 19968: jis0208<<14 | 0x3C<<7 | 0x16, + 27449 - 19968: jis0208<<14 | 0x3C<<7 | 0x19, + 27450 - 19968: jis0208<<14 | 0x14<<7 | 0x1C, + 27451 - 19968: jis0212<<14 | 0x24<<7 | 0x4E, + 27453 - 19968: jis0208<<14 | 0x15<<7 | 0x35, + 27454 - 19968: jis0208<<14 | 0x13<<7 | 0x1D, + 27455 - 19968: jis0212<<14 | 0x24<<7 | 0x4F, + 27459 - 19968: jis0208<<14 | 0x3C<<7 | 0x1C, + 27462 - 19968: jis0212<<14 | 0x24<<7 | 0x50, + 27463 - 19968: jis0208<<14 | 0x3C<<7 | 0x1B, + 27465 - 19968: jis0208<<14 | 0x3C<<7 | 0x1D, + 27466 - 19968: jis0212<<14 | 0x24<<7 | 0x51, + 27468 - 19968: jis0208<<14 | 0x11<<7 | 0x2D, + 27469 - 19968: jis0212<<14 | 0x24<<7 | 0x52, + 27470 - 19968: jis0208<<14 | 0x22<<7 | 0x16, + 27472 - 19968: jis0208<<14 | 0x3C<<7 | 0x1E, + 27474 - 19968: jis0212<<14 | 0x24<<7 | 0x53, + 27475 - 19968: jis0208<<14 | 0x13<<7 | 0x1E, + 27476 - 19968: jis0208<<14 | 0x3C<<7 | 0x20, + 27478 - 19968: jis0212<<14 | 0x24<<7 | 0x54, + 27480 - 19968: jis0212<<14 | 0x24<<7 | 0x55, + 27481 - 19968: jis0208<<14 | 0x3C<<7 | 0x1F, + 27483 - 19968: jis0208<<14 | 0x3C<<7 | 0x21, + 27485 - 19968: jis0212<<14 | 0x24<<7 | 0x56, + 27487 - 19968: jis0208<<14 | 0x3C<<7 | 0x22, + 27488 - 19968: jis0212<<14 | 0x24<<7 | 0x57, + 27489 - 19968: jis0208<<14 | 0x3C<<7 | 0x23, + 27490 - 19968: jis0208<<14 | 0x1A<<7 | 0x3E, + 27491 - 19968: jis0208<<14 | 0x1F<<7 | 0x14, + 27492 - 19968: jis0208<<14 | 0x19<<7 | 0x00, + 27494 - 19968: jis0208<<14 | 0x28<<7 | 0x4F, + 27495 - 19968: jis0212<<14 | 0x24<<7 | 0x58, + 27497 - 19968: jis0208<<14 | 0x29<<7 | 0x41, + 27498 - 19968: jis0208<<14 | 0x2E<<7 | 0x23, + 27499 - 19968: jis0212<<14 | 0x24<<7 | 0x59, + 27502 - 19968: jis0212<<14 | 0x24<<7 | 0x5A, + 27503 - 19968: jis0208<<14 | 0x1A<<7 | 0x54, + 27504 - 19968: jis0212<<14 | 0x24<<7 | 0x5B, + 27507 - 19968: jis0208<<14 | 0x19<<7 | 0x2F, + 27508 - 19968: jis0208<<14 | 0x2D<<7 | 0x51, + 27509 - 19968: jis0212<<14 | 0x24<<7 | 0x5C, + 27512 - 19968: jis0208<<14 | 0x3C<<7 | 0x24, + 27513 - 19968: jis0208<<14 | 0x3C<<7 | 0x25, + 27515 - 19968: jis0208<<14 | 0x1A<<7 | 0x3F, + 27517 - 19968: jis0212<<14 | 0x24<<7 | 0x5D, + 27518 - 19968: jis0212<<14 | 0x25<<7 | 0x00, + 27519 - 19968: jis0208<<14 | 0x3C<<7 | 0x26, + 27520 - 19968: jis0208<<14 | 0x3C<<7 | 0x27, + 27522 - 19968: jis0212<<14 | 0x25<<7 | 0x01, + 27523 - 19968: jis0208<<14 | 0x3C<<7 | 0x29, + 27524 - 19968: jis0208<<14 | 0x3C<<7 | 0x28, + 27525 - 19968: jis0212<<14 | 0x25<<7 | 0x02, + 27526 - 19968: jis0208<<14 | 0x2A<<7 | 0x37, + 27529 - 19968: jis0208<<14 | 0x1C<<7 | 0x3D, + 27530 - 19968: jis0208<<14 | 0x1B<<7 | 0x4B, + 27531 - 19968: jis0208<<14 | 0x1A<<7 | 0x23, + 27533 - 19968: jis0208<<14 | 0x3C<<7 | 0x2A, + 27541 - 19968: jis0208<<14 | 0x3C<<7 | 0x2C, + 27542 - 19968: jis0208<<14 | 0x1E<<7 | 0x02, + 27543 - 19968: jis0212<<14 | 0x25<<7 | 0x03, + 27544 - 19968: jis0208<<14 | 0x3C<<7 | 0x2B, + 27547 - 19968: jis0212<<14 | 0x25<<7 | 0x04, + 27550 - 19968: jis0208<<14 | 0x3C<<7 | 0x2D, + 27551 - 19968: jis0212<<14 | 0x25<<7 | 0x05, + 27552 - 19968: jis0212<<14 | 0x25<<7 | 0x06, + 27554 - 19968: jis0212<<14 | 0x25<<7 | 0x07, + 27555 - 19968: jis0212<<14 | 0x25<<7 | 0x08, + 27556 - 19968: jis0208<<14 | 0x3C<<7 | 0x2E, + 27560 - 19968: jis0212<<14 | 0x25<<7 | 0x09, + 27561 - 19968: jis0212<<14 | 0x25<<7 | 0x0A, + 27562 - 19968: jis0208<<14 | 0x3C<<7 | 0x2F, + 27563 - 19968: jis0208<<14 | 0x3C<<7 | 0x30, + 27564 - 19968: jis0212<<14 | 0x25<<7 | 0x0B, + 27565 - 19968: jis0212<<14 | 0x25<<7 | 0x0C, + 27566 - 19968: jis0212<<14 | 0x25<<7 | 0x0D, + 27567 - 19968: jis0208<<14 | 0x3C<<7 | 0x31, + 27568 - 19968: jis0212<<14 | 0x25<<7 | 0x0E, + 27569 - 19968: jis0208<<14 | 0x3C<<7 | 0x33, + 27570 - 19968: jis0208<<14 | 0x3C<<7 | 0x32, + 27571 - 19968: jis0208<<14 | 0x3C<<7 | 0x34, + 27572 - 19968: jis0208<<14 | 0x11<<7 | 0x04, + 27573 - 19968: jis0208<<14 | 0x22<<7 | 0x29, + 27575 - 19968: jis0208<<14 | 0x3C<<7 | 0x35, + 27576 - 19968: jis0212<<14 | 0x25<<7 | 0x0F, + 27577 - 19968: jis0212<<14 | 0x25<<7 | 0x10, + 27578 - 19968: jis0208<<14 | 0x1A<<7 | 0x05, + 27579 - 19968: jis0208<<14 | 0x12<<7 | 0x2B, + 27580 - 19968: jis0208<<14 | 0x3C<<7 | 0x36, + 27581 - 19968: jis0212<<14 | 0x25<<7 | 0x11, + 27582 - 19968: jis0212<<14 | 0x25<<7 | 0x12, + 27583 - 19968: jis0208<<14 | 0x24<<7 | 0x21, + 27584 - 19968: jis0208<<14 | 0x33<<7 | 0x2B, + 27587 - 19968: jis0212<<14 | 0x25<<7 | 0x13, + 27588 - 19968: jis0212<<14 | 0x25<<7 | 0x14, + 27589 - 19968: jis0208<<14 | 0x14<<7 | 0x02, + 27590 - 19968: jis0208<<14 | 0x3C<<7 | 0x37, + 27593 - 19968: jis0212<<14 | 0x25<<7 | 0x15, + 27595 - 19968: jis0208<<14 | 0x3C<<7 | 0x38, + 27596 - 19968: jis0212<<14 | 0x25<<7 | 0x16, + 27597 - 19968: jis0208<<14 | 0x29<<7 | 0x4B, + 27598 - 19968: jis0208<<14 | 0x2A<<7 | 0x47, + 27602 - 19968: jis0208<<14 | 0x25<<7 | 0x26, + 27603 - 19968: jis0208<<14 | 0x3C<<7 | 0x39, + 27604 - 19968: jis0208<<14 | 0x27<<7 | 0x45, + 27606 - 19968: jis0208<<14 | 0x59<<7 | 0x39, + 27608 - 19968: jis0208<<14 | 0x27<<7 | 0x5A, + 27610 - 19968: jis0212<<14 | 0x25<<7 | 0x18, + 27611 - 19968: jis0208<<14 | 0x2B<<7 | 0x32, + 27615 - 19968: jis0208<<14 | 0x3C<<7 | 0x3A, + 27617 - 19968: jis0212<<14 | 0x25<<7 | 0x19, + 27619 - 19968: jis0212<<14 | 0x25<<7 | 0x1A, + 27622 - 19968: jis0212<<14 | 0x25<<7 | 0x1B, + 27623 - 19968: jis0212<<14 | 0x25<<7 | 0x1C, + 27627 - 19968: jis0208<<14 | 0x3C<<7 | 0x3C, + 27628 - 19968: jis0208<<14 | 0x3C<<7 | 0x3B, + 27630 - 19968: jis0212<<14 | 0x25<<7 | 0x1D, + 27631 - 19968: jis0208<<14 | 0x3C<<7 | 0x3E, + 27633 - 19968: jis0212<<14 | 0x25<<7 | 0x1E, + 27635 - 19968: jis0208<<14 | 0x3C<<7 | 0x3D, + 27639 - 19968: jis0212<<14 | 0x25<<7 | 0x1F, + 27641 - 19968: jis0212<<14 | 0x25<<7 | 0x20, + 27647 - 19968: jis0212<<14 | 0x25<<7 | 0x21, + 27650 - 19968: jis0212<<14 | 0x25<<7 | 0x22, + 27652 - 19968: jis0212<<14 | 0x25<<7 | 0x23, + 27653 - 19968: jis0212<<14 | 0x25<<7 | 0x24, + 27656 - 19968: jis0208<<14 | 0x3C<<7 | 0x40, + 27657 - 19968: jis0212<<14 | 0x25<<7 | 0x25, + 27661 - 19968: jis0212<<14 | 0x25<<7 | 0x26, + 27662 - 19968: jis0212<<14 | 0x25<<7 | 0x27, + 27663 - 19968: jis0208<<14 | 0x1A<<7 | 0x40, + 27664 - 19968: jis0212<<14 | 0x25<<7 | 0x28, + 27665 - 19968: jis0208<<14 | 0x2B<<7 | 0x10, + 27666 - 19968: jis0212<<14 | 0x25<<7 | 0x29, + 27667 - 19968: jis0208<<14 | 0x3C<<7 | 0x41, + 27668 - 19968: jis0208<<14 | 0x3C<<7 | 0x42, + 27671 - 19968: jis0208<<14 | 0x14<<7 | 0x03, + 27673 - 19968: jis0212<<14 | 0x25<<7 | 0x2A, + 27675 - 19968: jis0208<<14 | 0x3C<<7 | 0x43, + 27679 - 19968: jis0212<<14 | 0x25<<7 | 0x2B, + 27683 - 19968: jis0208<<14 | 0x3C<<7 | 0x45, + 27684 - 19968: jis0208<<14 | 0x3C<<7 | 0x44, + 27686 - 19968: jis0212<<14 | 0x25<<7 | 0x2C, + 27687 - 19968: jis0212<<14 | 0x25<<7 | 0x2D, + 27688 - 19968: jis0212<<14 | 0x25<<7 | 0x2E, + 27692 - 19968: jis0212<<14 | 0x25<<7 | 0x2F, + 27694 - 19968: jis0212<<14 | 0x25<<7 | 0x30, + 27699 - 19968: jis0212<<14 | 0x25<<7 | 0x31, + 27700 - 19968: jis0208<<14 | 0x1E<<7 | 0x44, + 27701 - 19968: jis0212<<14 | 0x25<<7 | 0x32, + 27702 - 19968: jis0212<<14 | 0x25<<7 | 0x33, + 27703 - 19968: jis0208<<14 | 0x28<<7 | 0x18, + 27704 - 19968: jis0208<<14 | 0x10<<7 | 0x29, + 27706 - 19968: jis0212<<14 | 0x25<<7 | 0x34, + 27707 - 19968: jis0212<<14 | 0x25<<7 | 0x35, + 27710 - 19968: jis0208<<14 | 0x27<<7 | 0x24, + 27711 - 19968: jis0208<<14 | 0x59<<7 | 0x3A, + 27712 - 19968: jis0208<<14 | 0x23<<7 | 0x54, + 27713 - 19968: jis0208<<14 | 0x1C<<7 | 0x20, + 27714 - 19968: jis0208<<14 | 0x14<<7 | 0x40, + 27722 - 19968: jis0212<<14 | 0x25<<7 | 0x37, + 27723 - 19968: jis0212<<14 | 0x25<<7 | 0x38, + 27725 - 19968: jis0212<<14 | 0x25<<7 | 0x39, + 27726 - 19968: jis0208<<14 | 0x27<<7 | 0x25, + 27727 - 19968: jis0212<<14 | 0x25<<7 | 0x3A, + 27728 - 19968: jis0208<<14 | 0x1B<<7 | 0x0D, + 27730 - 19968: jis0212<<14 | 0x25<<7 | 0x3B, + 27732 - 19968: jis0212<<14 | 0x25<<7 | 0x3C, + 27733 - 19968: jis0208<<14 | 0x3C<<7 | 0x47, + 27735 - 19968: jis0208<<14 | 0x13<<7 | 0x1F, + 27737 - 19968: jis0212<<14 | 0x25<<7 | 0x3D, + 27738 - 19968: jis0208<<14 | 0x10<<7 | 0x57, + 27739 - 19968: jis0212<<14 | 0x25<<7 | 0x3E, + 27740 - 19968: jis0208<<14 | 0x59<<7 | 0x3B, + 27741 - 19968: jis0208<<14 | 0x25<<7 | 0x51, + 27742 - 19968: jis0208<<14 | 0x3C<<7 | 0x46, + 27743 - 19968: jis0208<<14 | 0x18<<7 | 0x1D, + 27744 - 19968: jis0208<<14 | 0x22<<7 | 0x32, + 27746 - 19968: jis0208<<14 | 0x3C<<7 | 0x48, + 27751 - 19968: jis0212<<14 | 0x26<<7 | 0x15, + 27752 - 19968: jis0208<<14 | 0x3C<<7 | 0x50, + 27754 - 19968: jis0208<<14 | 0x3C<<7 | 0x49, + 27755 - 19968: jis0212<<14 | 0x25<<7 | 0x40, + 27757 - 19968: jis0212<<14 | 0x25<<7 | 0x41, + 27759 - 19968: jis0208<<14 | 0x59<<7 | 0x3D, + 27760 - 19968: jis0208<<14 | 0x21<<7 | 0x20, + 27762 - 19968: jis0208<<14 | 0x14<<7 | 0x41, + 27763 - 19968: jis0208<<14 | 0x3C<<7 | 0x51, + 27764 - 19968: jis0212<<14 | 0x25<<7 | 0x43, + 27766 - 19968: jis0212<<14 | 0x25<<7 | 0x44, + 27768 - 19968: jis0212<<14 | 0x25<<7 | 0x45, + 27769 - 19968: jis0212<<14 | 0x25<<7 | 0x46, + 27770 - 19968: jis0208<<14 | 0x16<<7 | 0x47, + 27771 - 19968: jis0212<<14 | 0x25<<7 | 0x47, + 27773 - 19968: jis0208<<14 | 0x14<<7 | 0x04, + 27774 - 19968: jis0208<<14 | 0x3C<<7 | 0x4F, + 27777 - 19968: jis0208<<14 | 0x3C<<7 | 0x4D, + 27778 - 19968: jis0208<<14 | 0x3C<<7 | 0x4A, + 27779 - 19968: jis0208<<14 | 0x2C<<7 | 0x3F, + 27781 - 19968: jis0212<<14 | 0x25<<7 | 0x48, + 27782 - 19968: jis0208<<14 | 0x59<<7 | 0x3C, + 27783 - 19968: jis0212<<14 | 0x25<<7 | 0x4A, + 27784 - 19968: jis0208<<14 | 0x23<<7 | 0x1F, + 27785 - 19968: jis0212<<14 | 0x25<<7 | 0x4B, + 27788 - 19968: jis0208<<14 | 0x25<<7 | 0x38, + 27789 - 19968: jis0208<<14 | 0x3C<<7 | 0x4B, + 27792 - 19968: jis0208<<14 | 0x3C<<7 | 0x53, + 27794 - 19968: jis0208<<14 | 0x3C<<7 | 0x52, + 27795 - 19968: jis0208<<14 | 0x16<<7 | 0x02, + 27796 - 19968: jis0212<<14 | 0x25<<7 | 0x4C, + 27797 - 19968: jis0212<<14 | 0x25<<7 | 0x4D, + 27798 - 19968: jis0208<<14 | 0x11<<7 | 0x0C, + 27799 - 19968: jis0212<<14 | 0x25<<7 | 0x4E, + 27800 - 19968: jis0212<<14 | 0x25<<7 | 0x4F, + 27801 - 19968: jis0208<<14 | 0x19<<7 | 0x1A, + 27802 - 19968: jis0208<<14 | 0x3C<<7 | 0x4C, + 27803 - 19968: jis0208<<14 | 0x3C<<7 | 0x4E, + 27804 - 19968: jis0212<<14 | 0x25<<7 | 0x50, + 27807 - 19968: jis0212<<14 | 0x25<<7 | 0x51, + 27809 - 19968: jis0208<<14 | 0x2A<<7 | 0x36, + 27810 - 19968: jis0208<<14 | 0x21<<7 | 0x53, + 27819 - 19968: jis0208<<14 | 0x2A<<7 | 0x56, + 27822 - 19968: jis0208<<14 | 0x3C<<7 | 0x5B, + 27824 - 19968: jis0212<<14 | 0x25<<7 | 0x52, + 27825 - 19968: jis0208<<14 | 0x3C<<7 | 0x5C, + 27826 - 19968: jis0212<<14 | 0x25<<7 | 0x53, + 27827 - 19968: jis0208<<14 | 0x11<<7 | 0x2E, + 27828 - 19968: jis0212<<14 | 0x25<<7 | 0x54, + 27832 - 19968: jis0208<<14 | 0x29<<7 | 0x07, + 27833 - 19968: jis0208<<14 | 0x2B<<7 | 0x5C, + 27834 - 19968: jis0208<<14 | 0x3D<<7 | 0x00, + 27835 - 19968: jis0208<<14 | 0x1B<<7 | 0x02, + 27836 - 19968: jis0208<<14 | 0x1D<<7 | 0x21, + 27837 - 19968: jis0208<<14 | 0x3C<<7 | 0x57, + 27838 - 19968: jis0208<<14 | 0x3C<<7 | 0x5D, + 27839 - 19968: jis0208<<14 | 0x10<<7 | 0x47, + 27841 - 19968: jis0208<<14 | 0x15<<7 | 0x16, + 27842 - 19968: jis0212<<14 | 0x25<<7 | 0x55, + 27844 - 19968: jis0208<<14 | 0x3C<<7 | 0x54, + 27845 - 19968: jis0208<<14 | 0x3C<<7 | 0x59, + 27846 - 19968: jis0212<<14 | 0x25<<7 | 0x56, + 27849 - 19968: jis0208<<14 | 0x1F<<7 | 0x53, + 27850 - 19968: jis0208<<14 | 0x26<<7 | 0x50, + 27852 - 19968: jis0208<<14 | 0x27<<7 | 0x46, + 27853 - 19968: jis0212<<14 | 0x25<<7 | 0x57, + 27855 - 19968: jis0212<<14 | 0x25<<7 | 0x58, + 27856 - 19968: jis0212<<14 | 0x25<<7 | 0x59, + 27857 - 19968: jis0212<<14 | 0x25<<7 | 0x5A, + 27858 - 19968: jis0212<<14 | 0x25<<7 | 0x5B, + 27859 - 19968: jis0208<<14 | 0x3C<<7 | 0x56, + 27860 - 19968: jis0212<<14 | 0x25<<7 | 0x5C, + 27861 - 19968: jis0208<<14 | 0x2A<<7 | 0x00, + 27862 - 19968: jis0212<<14 | 0x25<<7 | 0x5D, + 27863 - 19968: jis0208<<14 | 0x3C<<7 | 0x58, + 27865 - 19968: jis0208<<14 | 0x3D<<7 | 0x03, + 27866 - 19968: jis0208<<14 | 0x59<<7 | 0x3E, + 27867 - 19968: jis0208<<14 | 0x3D<<7 | 0x01, + 27868 - 19968: jis0212<<14 | 0x26<<7 | 0x01, + 27869 - 19968: jis0208<<14 | 0x3C<<7 | 0x5A, + 27872 - 19968: jis0212<<14 | 0x26<<7 | 0x02, + 27873 - 19968: jis0208<<14 | 0x2A<<7 | 0x01, + 27874 - 19968: jis0208<<14 | 0x26<<7 | 0x27, + 27875 - 19968: jis0208<<14 | 0x14<<7 | 0x42, + 27877 - 19968: jis0208<<14 | 0x24<<7 | 0x04, + 27879 - 19968: jis0212<<14 | 0x26<<7 | 0x03, + 27880 - 19968: jis0208<<14 | 0x22<<7 | 0x4C, + 27881 - 19968: jis0212<<14 | 0x26<<7 | 0x04, + 27882 - 19968: jis0208<<14 | 0x3D<<7 | 0x04, + 27883 - 19968: jis0212<<14 | 0x26<<7 | 0x05, + 27884 - 19968: jis0212<<14 | 0x26<<7 | 0x06, + 27886 - 19968: jis0212<<14 | 0x26<<7 | 0x07, + 27887 - 19968: jis0208<<14 | 0x3D<<7 | 0x02, + 27888 - 19968: jis0208<<14 | 0x21<<7 | 0x38, + 27889 - 19968: jis0208<<14 | 0x3C<<7 | 0x55, + 27890 - 19968: jis0212<<14 | 0x26<<7 | 0x08, + 27891 - 19968: jis0208<<14 | 0x10<<7 | 0x2A, + 27892 - 19968: jis0212<<14 | 0x26<<7 | 0x09, + 27908 - 19968: jis0208<<14 | 0x59<<7 | 0x3F, + 27911 - 19968: jis0212<<14 | 0x26<<7 | 0x0B, + 27914 - 19968: jis0212<<14 | 0x26<<7 | 0x0C, + 27915 - 19968: jis0208<<14 | 0x2C<<7 | 0x2D, + 27916 - 19968: jis0208<<14 | 0x3D<<7 | 0x0F, + 27918 - 19968: jis0212<<14 | 0x26<<7 | 0x0D, + 27919 - 19968: jis0212<<14 | 0x26<<7 | 0x0E, + 27921 - 19968: jis0212<<14 | 0x26<<7 | 0x0F, + 27922 - 19968: jis0208<<14 | 0x3D<<7 | 0x0E, + 27923 - 19968: jis0212<<14 | 0x26<<7 | 0x10, + 27927 - 19968: jis0208<<14 | 0x1F<<7 | 0x55, + 27929 - 19968: jis0208<<14 | 0x3D<<7 | 0x0B, + 27930 - 19968: jis0212<<14 | 0x26<<7 | 0x11, + 27931 - 19968: jis0208<<14 | 0x2C<<7 | 0x4B, + 27934 - 19968: jis0208<<14 | 0x25<<7 | 0x15, + 27935 - 19968: jis0208<<14 | 0x3D<<7 | 0x05, + 27941 - 19968: jis0208<<14 | 0x23<<7 | 0x24, + 27942 - 19968: jis0212<<14 | 0x26<<7 | 0x12, + 27943 - 19968: jis0212<<14 | 0x26<<7 | 0x13, + 27944 - 19968: jis0212<<14 | 0x26<<7 | 0x14, + 27945 - 19968: jis0208<<14 | 0x10<<7 | 0x2B, + 27946 - 19968: jis0208<<14 | 0x18<<7 | 0x1E, + 27947 - 19968: jis0208<<14 | 0x3D<<7 | 0x08, + 27950 - 19968: jis0212<<14 | 0x26<<7 | 0x16, + 27951 - 19968: jis0212<<14 | 0x26<<7 | 0x17, + 27953 - 19968: jis0212<<14 | 0x26<<7 | 0x18, + 27954 - 19968: jis0208<<14 | 0x1C<<7 | 0x06, + 27955 - 19968: jis0208<<14 | 0x3D<<7 | 0x0D, + 27957 - 19968: jis0208<<14 | 0x3D<<7 | 0x0C, + 27958 - 19968: jis0208<<14 | 0x3D<<7 | 0x07, + 27960 - 19968: jis0208<<14 | 0x3D<<7 | 0x0A, + 27961 - 19968: jis0212<<14 | 0x26<<7 | 0x19, + 27963 - 19968: jis0208<<14 | 0x12<<7 | 0x47, + 27964 - 19968: jis0212<<14 | 0x26<<7 | 0x1A, + 27965 - 19968: jis0208<<14 | 0x3D<<7 | 0x09, + 27966 - 19968: jis0208<<14 | 0x26<<7 | 0x28, + 27967 - 19968: jis0212<<14 | 0x26<<7 | 0x1B, + 27969 - 19968: jis0208<<14 | 0x2D<<7 | 0x0D, + 27972 - 19968: jis0208<<14 | 0x1D<<7 | 0x53, + 27973 - 19968: jis0208<<14 | 0x1F<<7 | 0x54, + 27991 - 19968: jis0212<<14 | 0x26<<7 | 0x1C, + 27993 - 19968: jis0208<<14 | 0x3D<<7 | 0x15, + 27994 - 19968: jis0208<<14 | 0x3D<<7 | 0x13, + 27996 - 19968: jis0208<<14 | 0x28<<7 | 0x2C, + 27998 - 19968: jis0212<<14 | 0x26<<7 | 0x1D, + 27999 - 19968: jis0212<<14 | 0x26<<7 | 0x1E, + 28001 - 19968: jis0212<<14 | 0x26<<7 | 0x1F, + 28003 - 19968: jis0208<<14 | 0x3D<<7 | 0x10, + 28004 - 19968: jis0208<<14 | 0x3D<<7 | 0x12, + 28005 - 19968: jis0212<<14 | 0x26<<7 | 0x20, + 28006 - 19968: jis0208<<14 | 0x10<<7 | 0x19, + 28007 - 19968: jis0212<<14 | 0x26<<7 | 0x21, + 28009 - 19968: jis0208<<14 | 0x18<<7 | 0x1F, + 28010 - 19968: jis0208<<14 | 0x2E<<7 | 0x11, + 28012 - 19968: jis0208<<14 | 0x12<<7 | 0x1C, + 28014 - 19968: jis0208<<14 | 0x28<<7 | 0x41, + 28015 - 19968: jis0208<<14 | 0x59<<7 | 0x41, + 28016 - 19968: jis0212<<14 | 0x26<<7 | 0x23, + 28020 - 19968: jis0208<<14 | 0x2C<<7 | 0x40, + 28023 - 19968: jis0208<<14 | 0x12<<7 | 0x03, + 28024 - 19968: jis0208<<14 | 0x1E<<7 | 0x1A, + 28025 - 19968: jis0208<<14 | 0x3D<<7 | 0x14, + 28028 - 19968: jis0212<<14 | 0x26<<7 | 0x24, + 28034 - 19968: jis0212<<14 | 0x26<<7 | 0x25, + 28037 - 19968: jis0208<<14 | 0x3D<<7 | 0x19, + 28039 - 19968: jis0208<<14 | 0x59<<7 | 0x40, + 28040 - 19968: jis0208<<14 | 0x1D<<7 | 0x22, + 28044 - 19968: jis0208<<14 | 0x2C<<7 | 0x0F, + 28046 - 19968: jis0208<<14 | 0x3D<<7 | 0x16, + 28049 - 19968: jis0212<<14 | 0x26<<7 | 0x27, + 28050 - 19968: jis0212<<14 | 0x26<<7 | 0x28, + 28051 - 19968: jis0208<<14 | 0x3D<<7 | 0x11, + 28052 - 19968: jis0212<<14 | 0x26<<7 | 0x29, + 28053 - 19968: jis0208<<14 | 0x3D<<7 | 0x17, + 28054 - 19968: jis0208<<14 | 0x59<<7 | 0x42, + 28055 - 19968: jis0212<<14 | 0x26<<7 | 0x2B, + 28056 - 19968: jis0212<<14 | 0x26<<7 | 0x2C, + 28057 - 19968: jis0208<<14 | 0x2D<<7 | 0x3D, + 28059 - 19968: jis0208<<14 | 0x24<<7 | 0x52, + 28060 - 19968: jis0208<<14 | 0x25<<7 | 0x21, + 28074 - 19968: jis0212<<14 | 0x26<<7 | 0x2D, + 28076 - 19968: jis0208<<14 | 0x59<<7 | 0x43, + 28079 - 19968: jis0208<<14 | 0x12<<7 | 0x15, + 28082 - 19968: jis0208<<14 | 0x10<<7 | 0x34, + 28084 - 19968: jis0212<<14 | 0x26<<7 | 0x2F, + 28085 - 19968: jis0208<<14 | 0x3D<<7 | 0x1D, + 28087 - 19968: jis0212<<14 | 0x26<<7 | 0x30, + 28088 - 19968: jis0208<<14 | 0x3D<<7 | 0x20, + 28089 - 19968: jis0212<<14 | 0x26<<7 | 0x31, + 28092 - 19968: jis0208<<14 | 0x2D<<7 | 0x22, + 28093 - 19968: jis0212<<14 | 0x26<<7 | 0x32, + 28095 - 19968: jis0212<<14 | 0x26<<7 | 0x33, + 28096 - 19968: jis0208<<14 | 0x2C<<7 | 0x43, + 28100 - 19968: jis0212<<14 | 0x26<<7 | 0x34, + 28101 - 19968: jis0208<<14 | 0x3D<<7 | 0x27, + 28102 - 19968: jis0208<<14 | 0x3D<<7 | 0x21, + 28103 - 19968: jis0208<<14 | 0x3D<<7 | 0x1E, + 28104 - 19968: jis0212<<14 | 0x26<<7 | 0x35, + 28106 - 19968: jis0212<<14 | 0x26<<7 | 0x36, + 28107 - 19968: jis0208<<14 | 0x2D<<7 | 0x33, + 28108 - 19968: jis0208<<14 | 0x3D<<7 | 0x24, + 28110 - 19968: jis0212<<14 | 0x26<<7 | 0x37, + 28111 - 19968: jis0208<<14 | 0x59<<7 | 0x44, + 28113 - 19968: jis0208<<14 | 0x1C<<7 | 0x29, + 28114 - 19968: jis0208<<14 | 0x3D<<7 | 0x26, + 28117 - 19968: jis0208<<14 | 0x3D<<7 | 0x2B, + 28118 - 19968: jis0212<<14 | 0x26<<7 | 0x39, + 28120 - 19968: jis0208<<14 | 0x24<<7 | 0x50, + 28121 - 19968: jis0208<<14 | 0x3D<<7 | 0x29, + 28123 - 19968: jis0212<<14 | 0x26<<7 | 0x3A, + 28125 - 19968: jis0212<<14 | 0x26<<7 | 0x3B, + 28126 - 19968: jis0208<<14 | 0x3D<<7 | 0x23, + 28127 - 19968: jis0212<<14 | 0x26<<7 | 0x3C, + 28128 - 19968: jis0212<<14 | 0x26<<7 | 0x3D, + 28129 - 19968: jis0208<<14 | 0x22<<7 | 0x17, + 28130 - 19968: jis0212<<14 | 0x26<<7 | 0x3E, + 28132 - 19968: jis0208<<14 | 0x3D<<7 | 0x2A, + 28133 - 19968: jis0212<<14 | 0x26<<7 | 0x3F, + 28134 - 19968: jis0208<<14 | 0x3D<<7 | 0x1F, + 28136 - 19968: jis0208<<14 | 0x3D<<7 | 0x25, + 28137 - 19968: jis0212<<14 | 0x26<<7 | 0x40, + 28138 - 19968: jis0208<<14 | 0x3D<<7 | 0x2C, + 28139 - 19968: jis0208<<14 | 0x0F<<7 | 0x5B, + 28140 - 19968: jis0208<<14 | 0x3D<<7 | 0x22, + 28142 - 19968: jis0208<<14 | 0x3D<<7 | 0x2D, + 28143 - 19968: jis0212<<14 | 0x26<<7 | 0x41, + 28144 - 19968: jis0212<<14 | 0x26<<7 | 0x42, + 28145 - 19968: jis0208<<14 | 0x1E<<7 | 0x1B, + 28146 - 19968: jis0208<<14 | 0x59<<7 | 0x46, + 28147 - 19968: jis0208<<14 | 0x1C<<7 | 0x3E, + 28148 - 19968: jis0212<<14 | 0x26<<7 | 0x43, + 28149 - 19968: jis0208<<14 | 0x29<<7 | 0x04, + 28150 - 19968: jis0212<<14 | 0x26<<7 | 0x44, + 28151 - 19968: jis0208<<14 | 0x19<<7 | 0x0D, + 28152 - 19968: jis0208<<14 | 0x59<<7 | 0x45, + 28153 - 19968: jis0208<<14 | 0x3D<<7 | 0x1A, + 28154 - 19968: jis0208<<14 | 0x3D<<7 | 0x28, + 28155 - 19968: jis0208<<14 | 0x24<<7 | 0x19, + 28156 - 19968: jis0208<<14 | 0x59<<7 | 0x47, + 28160 - 19968: jis0212<<14 | 0x26<<7 | 0x46, + 28164 - 19968: jis0212<<14 | 0x26<<7 | 0x47, + 28165 - 19968: jis0208<<14 | 0x1F<<7 | 0x15, + 28167 - 19968: jis0208<<14 | 0x12<<7 | 0x48, + 28168 - 19968: jis0208<<14 | 0x19<<7 | 0x30, + 28169 - 19968: jis0208<<14 | 0x1D<<7 | 0x23, + 28170 - 19968: jis0208<<14 | 0x3D<<7 | 0x1C, + 28171 - 19968: jis0208<<14 | 0x1C<<7 | 0x21, + 28179 - 19968: jis0208<<14 | 0x16<<7 | 0x2B, + 28181 - 19968: jis0208<<14 | 0x3D<<7 | 0x1B, + 28185 - 19968: jis0208<<14 | 0x3D<<7 | 0x31, + 28186 - 19968: jis0208<<14 | 0x1C<<7 | 0x4C, + 28187 - 19968: jis0208<<14 | 0x17<<7 | 0x19, + 28189 - 19968: jis0208<<14 | 0x3D<<7 | 0x40, + 28190 - 19968: jis0212<<14 | 0x26<<7 | 0x48, + 28191 - 19968: jis0208<<14 | 0x3D<<7 | 0x3A, + 28192 - 19968: jis0208<<14 | 0x14<<7 | 0x53, + 28193 - 19968: jis0208<<14 | 0x24<<7 | 0x2E, + 28194 - 19968: jis0212<<14 | 0x26<<7 | 0x49, + 28195 - 19968: jis0208<<14 | 0x3D<<7 | 0x35, + 28196 - 19968: jis0208<<14 | 0x3D<<7 | 0x3E, + 28197 - 19968: jis0208<<14 | 0x0F<<7 | 0x0E, + 28198 - 19968: jis0208<<14 | 0x10<<7 | 0x11, + 28199 - 19968: jis0208<<14 | 0x59<<7 | 0x4A, + 28201 - 19968: jis0208<<14 | 0x11<<7 | 0x18, + 28203 - 19968: jis0208<<14 | 0x3D<<7 | 0x37, + 28204 - 19968: jis0208<<14 | 0x21<<7 | 0x0B, + 28205 - 19968: jis0208<<14 | 0x3D<<7 | 0x2E, + 28206 - 19968: jis0208<<14 | 0x3D<<7 | 0x30, + 28207 - 19968: jis0208<<14 | 0x18<<7 | 0x20, + 28210 - 19968: jis0212<<14 | 0x26<<7 | 0x4B, + 28214 - 19968: jis0212<<14 | 0x26<<7 | 0x4C, + 28216 - 19968: jis0208<<14 | 0x3D<<7 | 0x41, + 28217 - 19968: jis0208<<14 | 0x59<<7 | 0x48, + 28218 - 19968: jis0208<<14 | 0x3D<<7 | 0x3C, + 28219 - 19968: jis0212<<14 | 0x26<<7 | 0x4E, + 28220 - 19968: jis0208<<14 | 0x59<<7 | 0x4B, + 28222 - 19968: jis0208<<14 | 0x3D<<7 | 0x34, + 28227 - 19968: jis0208<<14 | 0x3D<<7 | 0x3B, + 28228 - 19968: jis0212<<14 | 0x26<<7 | 0x50, + 28229 - 19968: jis0212<<14 | 0x26<<7 | 0x51, + 28232 - 19968: jis0212<<14 | 0x26<<7 | 0x52, + 28233 - 19968: jis0212<<14 | 0x26<<7 | 0x53, + 28234 - 19968: jis0208<<14 | 0x2B<<7 | 0x0A, + 28235 - 19968: jis0212<<14 | 0x26<<7 | 0x54, + 28237 - 19968: jis0208<<14 | 0x3D<<7 | 0x39, + 28238 - 19968: jis0208<<14 | 0x3D<<7 | 0x3D, + 28239 - 19968: jis0212<<14 | 0x26<<7 | 0x55, + 28241 - 19968: jis0212<<14 | 0x26<<7 | 0x56, + 28242 - 19968: jis0212<<14 | 0x26<<7 | 0x57, + 28243 - 19968: jis0212<<14 | 0x26<<7 | 0x58, + 28244 - 19968: jis0212<<14 | 0x26<<7 | 0x59, + 28246 - 19968: jis0208<<14 | 0x17<<7 | 0x2F, + 28247 - 19968: jis0212<<14 | 0x26<<7 | 0x5A, + 28248 - 19968: jis0208<<14 | 0x1D<<7 | 0x24, + 28251 - 19968: jis0208<<14 | 0x22<<7 | 0x18, + 28252 - 19968: jis0208<<14 | 0x59<<7 | 0x49, + 28253 - 19968: jis0212<<14 | 0x26<<7 | 0x5C, + 28254 - 19968: jis0212<<14 | 0x26<<7 | 0x5D, + 28255 - 19968: jis0208<<14 | 0x3D<<7 | 0x33, + 28258 - 19968: jis0212<<14 | 0x27<<7 | 0x00, + 28259 - 19968: jis0212<<14 | 0x27<<7 | 0x01, + 28263 - 19968: jis0208<<14 | 0x2C<<7 | 0x0E, + 28264 - 19968: jis0212<<14 | 0x27<<7 | 0x02, + 28267 - 19968: jis0208<<14 | 0x3D<<7 | 0x36, + 28270 - 19968: jis0208<<14 | 0x3D<<7 | 0x2F, + 28271 - 19968: jis0208<<14 | 0x24<<7 | 0x51, + 28274 - 19968: jis0208<<14 | 0x3D<<7 | 0x32, + 28275 - 19968: jis0212<<14 | 0x27<<7 | 0x03, + 28278 - 19968: jis0208<<14 | 0x3D<<7 | 0x38, + 28283 - 19968: jis0212<<14 | 0x27<<7 | 0x04, + 28285 - 19968: jis0212<<14 | 0x27<<7 | 0x05, + 28286 - 19968: jis0208<<14 | 0x2E<<7 | 0x30, + 28287 - 19968: jis0208<<14 | 0x1B<<7 | 0x1D, + 28288 - 19968: jis0208<<14 | 0x2A<<7 | 0x5D, + 28290 - 19968: jis0208<<14 | 0x3D<<7 | 0x42, + 28300 - 19968: jis0208<<14 | 0x27<<7 | 0x0D, + 28301 - 19968: jis0212<<14 | 0x27<<7 | 0x06, + 28303 - 19968: jis0208<<14 | 0x3D<<7 | 0x4E, + 28304 - 19968: jis0208<<14 | 0x17<<7 | 0x1A, + 28307 - 19968: jis0212<<14 | 0x27<<7 | 0x07, + 28310 - 19968: jis0208<<14 | 0x1C<<7 | 0x3F, + 28312 - 19968: jis0208<<14 | 0x3D<<7 | 0x44, + 28313 - 19968: jis0212<<14 | 0x27<<7 | 0x08, + 28316 - 19968: jis0208<<14 | 0x2D<<7 | 0x0E, + 28317 - 19968: jis0208<<14 | 0x18<<7 | 0x21, + 28319 - 19968: jis0208<<14 | 0x3D<<7 | 0x51, + 28320 - 19968: jis0212<<14 | 0x27<<7 | 0x09, + 28322 - 19968: jis0208<<14 | 0x0F<<7 | 0x4D, + 28325 - 19968: jis0208<<14 | 0x3D<<7 | 0x4F, + 28327 - 19968: jis0212<<14 | 0x27<<7 | 0x0A, + 28330 - 19968: jis0208<<14 | 0x3D<<7 | 0x43, + 28333 - 19968: jis0212<<14 | 0x27<<7 | 0x0B, + 28334 - 19968: jis0212<<14 | 0x27<<7 | 0x0C, + 28335 - 19968: jis0208<<14 | 0x3D<<7 | 0x49, + 28337 - 19968: jis0212<<14 | 0x27<<7 | 0x0D, + 28338 - 19968: jis0208<<14 | 0x3D<<7 | 0x4B, + 28339 - 19968: jis0212<<14 | 0x27<<7 | 0x0E, + 28342 - 19968: jis0208<<14 | 0x2C<<7 | 0x2E, + 28343 - 19968: jis0208<<14 | 0x3D<<7 | 0x46, + 28346 - 19968: jis0208<<14 | 0x24<<7 | 0x0D, + 28347 - 19968: jis0212<<14 | 0x27<<7 | 0x0F, + 28349 - 19968: jis0208<<14 | 0x3D<<7 | 0x48, + 28351 - 19968: jis0208<<14 | 0x59<<7 | 0x4C, + 28352 - 19968: jis0212<<14 | 0x27<<7 | 0x11, + 28353 - 19968: jis0212<<14 | 0x27<<7 | 0x12, + 28354 - 19968: jis0208<<14 | 0x3D<<7 | 0x50, + 28355 - 19968: jis0212<<14 | 0x27<<7 | 0x13, + 28356 - 19968: jis0208<<14 | 0x3D<<7 | 0x4A, + 28357 - 19968: jis0208<<14 | 0x2B<<7 | 0x26, + 28359 - 19968: jis0212<<14 | 0x27<<7 | 0x14, + 28360 - 19968: jis0212<<14 | 0x27<<7 | 0x15, + 28361 - 19968: jis0208<<14 | 0x3D<<7 | 0x45, + 28362 - 19968: jis0212<<14 | 0x27<<7 | 0x16, + 28363 - 19968: jis0208<<14 | 0x1B<<7 | 0x01, + 28364 - 19968: jis0208<<14 | 0x3D<<7 | 0x5D, + 28365 - 19968: jis0212<<14 | 0x27<<7 | 0x17, + 28366 - 19968: jis0212<<14 | 0x27<<7 | 0x18, + 28367 - 19968: jis0212<<14 | 0x27<<7 | 0x19, + 28369 - 19968: jis0208<<14 | 0x12<<7 | 0x49, + 28371 - 19968: jis0208<<14 | 0x3D<<7 | 0x47, + 28372 - 19968: jis0208<<14 | 0x3D<<7 | 0x4C, + 28373 - 19968: jis0208<<14 | 0x3D<<7 | 0x4D, + 28381 - 19968: jis0208<<14 | 0x21<<7 | 0x4B, + 28382 - 19968: jis0208<<14 | 0x21<<7 | 0x39, + 28395 - 19968: jis0212<<14 | 0x27<<7 | 0x1A, + 28396 - 19968: jis0208<<14 | 0x3D<<7 | 0x55, + 28397 - 19968: jis0212<<14 | 0x27<<7 | 0x1B, + 28398 - 19968: jis0212<<14 | 0x27<<7 | 0x1C, + 28399 - 19968: jis0208<<14 | 0x3D<<7 | 0x5B, + 28402 - 19968: jis0208<<14 | 0x3D<<7 | 0x59, + 28404 - 19968: jis0208<<14 | 0x24<<7 | 0x08, + 28407 - 19968: jis0208<<14 | 0x3E<<7 | 0x02, + 28408 - 19968: jis0208<<14 | 0x3D<<7 | 0x56, + 28409 - 19968: jis0212<<14 | 0x27<<7 | 0x1D, + 28411 - 19968: jis0212<<14 | 0x27<<7 | 0x1E, + 28413 - 19968: jis0212<<14 | 0x27<<7 | 0x1F, + 28414 - 19968: jis0208<<14 | 0x3D<<7 | 0x57, + 28415 - 19968: jis0208<<14 | 0x3D<<7 | 0x3F, + 28417 - 19968: jis0208<<14 | 0x14<<7 | 0x58, + 28418 - 19968: jis0208<<14 | 0x28<<7 | 0x19, + 28420 - 19968: jis0212<<14 | 0x27<<7 | 0x20, + 28422 - 19968: jis0208<<14 | 0x1B<<7 | 0x1E, + 28424 - 19968: jis0212<<14 | 0x27<<7 | 0x21, + 28425 - 19968: jis0208<<14 | 0x18<<7 | 0x56, + 28426 - 19968: jis0212<<14 | 0x27<<7 | 0x22, + 28428 - 19968: jis0212<<14 | 0x27<<7 | 0x23, + 28429 - 19968: jis0212<<14 | 0x27<<7 | 0x24, + 28431 - 19968: jis0208<<14 | 0x2E<<7 | 0x12, + 28433 - 19968: jis0208<<14 | 0x3D<<7 | 0x53, + 28435 - 19968: jis0208<<14 | 0x3E<<7 | 0x01, + 28436 - 19968: jis0208<<14 | 0x10<<7 | 0x48, + 28437 - 19968: jis0208<<14 | 0x20<<7 | 0x45, + 28438 - 19968: jis0212<<14 | 0x27<<7 | 0x25, + 28440 - 19968: jis0212<<14 | 0x27<<7 | 0x26, + 28442 - 19968: jis0212<<14 | 0x27<<7 | 0x27, + 28443 - 19968: jis0212<<14 | 0x27<<7 | 0x28, + 28448 - 19968: jis0208<<14 | 0x26<<7 | 0x58, + 28450 - 19968: jis0208<<14 | 0x13<<7 | 0x20, + 28451 - 19968: jis0208<<14 | 0x2D<<7 | 0x59, + 28454 - 19968: jis0212<<14 | 0x27<<7 | 0x29, + 28457 - 19968: jis0212<<14 | 0x27<<7 | 0x2A, + 28458 - 19968: jis0212<<14 | 0x27<<7 | 0x2B, + 28459 - 19968: jis0208<<14 | 0x2B<<7 | 0x00, + 28460 - 19968: jis0208<<14 | 0x23<<7 | 0x31, + 28461 - 19968: jis0212<<14 | 0x27<<7 | 0x32, + 28463 - 19968: jis0212<<14 | 0x27<<7 | 0x2C, + 28464 - 19968: jis0212<<14 | 0x27<<7 | 0x2D, + 28465 - 19968: jis0208<<14 | 0x3D<<7 | 0x5A, + 28466 - 19968: jis0208<<14 | 0x3D<<7 | 0x5C, + 28467 - 19968: jis0212<<14 | 0x27<<7 | 0x2E, + 28470 - 19968: jis0212<<14 | 0x27<<7 | 0x2F, + 28472 - 19968: jis0208<<14 | 0x20<<7 | 0x11, + 28475 - 19968: jis0212<<14 | 0x27<<7 | 0x30, + 28476 - 19968: jis0212<<14 | 0x27<<7 | 0x31, + 28478 - 19968: jis0208<<14 | 0x3E<<7 | 0x00, + 28479 - 19968: jis0208<<14 | 0x3D<<7 | 0x58, + 28481 - 19968: jis0208<<14 | 0x3D<<7 | 0x52, + 28485 - 19968: jis0208<<14 | 0x13<<7 | 0x22, + 28495 - 19968: jis0212<<14 | 0x27<<7 | 0x33, + 28497 - 19968: jis0212<<14 | 0x27<<7 | 0x34, + 28498 - 19968: jis0212<<14 | 0x27<<7 | 0x35, + 28499 - 19968: jis0212<<14 | 0x27<<7 | 0x36, + 28500 - 19968: jis0208<<14 | 0x16<<7 | 0x48, + 28503 - 19968: jis0212<<14 | 0x27<<7 | 0x37, + 28504 - 19968: jis0208<<14 | 0x3E<<7 | 0x0E, + 28505 - 19968: jis0212<<14 | 0x27<<7 | 0x38, + 28506 - 19968: jis0212<<14 | 0x27<<7 | 0x39, + 28507 - 19968: jis0208<<14 | 0x3E<<7 | 0x09, + 28508 - 19968: jis0208<<14 | 0x1F<<7 | 0x57, + 28509 - 19968: jis0212<<14 | 0x27<<7 | 0x3A, + 28510 - 19968: jis0212<<14 | 0x27<<7 | 0x3B, + 28511 - 19968: jis0208<<14 | 0x12<<7 | 0x42, + 28513 - 19968: jis0212<<14 | 0x27<<7 | 0x3C, + 28514 - 19968: jis0212<<14 | 0x27<<7 | 0x3D, + 28516 - 19968: jis0208<<14 | 0x1C<<7 | 0x40, + 28518 - 19968: jis0208<<14 | 0x3E<<7 | 0x12, + 28520 - 19968: jis0212<<14 | 0x27<<7 | 0x3E, + 28524 - 19968: jis0212<<14 | 0x27<<7 | 0x3F, + 28525 - 19968: jis0208<<14 | 0x3E<<7 | 0x0B, + 28526 - 19968: jis0208<<14 | 0x23<<7 | 0x0B, + 28527 - 19968: jis0208<<14 | 0x3E<<7 | 0x08, + 28528 - 19968: jis0208<<14 | 0x23<<7 | 0x38, + 28532 - 19968: jis0208<<14 | 0x3E<<7 | 0x2B, + 28536 - 19968: jis0208<<14 | 0x3E<<7 | 0x05, + 28538 - 19968: jis0208<<14 | 0x3E<<7 | 0x04, + 28540 - 19968: jis0208<<14 | 0x3E<<7 | 0x0D, + 28541 - 19968: jis0212<<14 | 0x27<<7 | 0x40, + 28542 - 19968: jis0212<<14 | 0x27<<7 | 0x41, + 28544 - 19968: jis0208<<14 | 0x3E<<7 | 0x07, + 28545 - 19968: jis0208<<14 | 0x3E<<7 | 0x06, + 28546 - 19968: jis0208<<14 | 0x3E<<7 | 0x0C, + 28547 - 19968: jis0212<<14 | 0x27<<7 | 0x42, + 28548 - 19968: jis0208<<14 | 0x1F<<7 | 0x00, + 28550 - 19968: jis0208<<14 | 0x3E<<7 | 0x03, + 28551 - 19968: jis0212<<14 | 0x27<<7 | 0x43, + 28552 - 19968: jis0208<<14 | 0x59<<7 | 0x4D, + 28555 - 19968: jis0212<<14 | 0x27<<7 | 0x45, + 28556 - 19968: jis0212<<14 | 0x27<<7 | 0x46, + 28557 - 19968: jis0212<<14 | 0x27<<7 | 0x47, + 28558 - 19968: jis0208<<14 | 0x3E<<7 | 0x0F, + 28560 - 19968: jis0212<<14 | 0x27<<7 | 0x48, + 28561 - 19968: jis0208<<14 | 0x3E<<7 | 0x10, + 28562 - 19968: jis0212<<14 | 0x27<<7 | 0x49, + 28563 - 19968: jis0212<<14 | 0x27<<7 | 0x4A, + 28564 - 19968: jis0212<<14 | 0x27<<7 | 0x4B, + 28566 - 19968: jis0212<<14 | 0x27<<7 | 0x4C, + 28567 - 19968: jis0208<<14 | 0x13<<7 | 0x21, + 28570 - 19968: jis0212<<14 | 0x27<<7 | 0x4D, + 28575 - 19968: jis0212<<14 | 0x27<<7 | 0x4E, + 28576 - 19968: jis0212<<14 | 0x27<<7 | 0x4F, + 28577 - 19968: jis0208<<14 | 0x3E<<7 | 0x15, + 28579 - 19968: jis0208<<14 | 0x3E<<7 | 0x14, + 28580 - 19968: jis0208<<14 | 0x3E<<7 | 0x16, + 28581 - 19968: jis0212<<14 | 0x27<<7 | 0x50, + 28582 - 19968: jis0212<<14 | 0x27<<7 | 0x51, + 28583 - 19968: jis0212<<14 | 0x27<<7 | 0x52, + 28584 - 19968: jis0212<<14 | 0x27<<7 | 0x53, + 28586 - 19968: jis0208<<14 | 0x3E<<7 | 0x19, + 28590 - 19968: jis0212<<14 | 0x27<<7 | 0x54, + 28591 - 19968: jis0212<<14 | 0x27<<7 | 0x55, + 28592 - 19968: jis0212<<14 | 0x27<<7 | 0x56, + 28593 - 19968: jis0208<<14 | 0x24<<7 | 0x22, + 28595 - 19968: jis0208<<14 | 0x3E<<7 | 0x13, + 28597 - 19968: jis0208<<14 | 0x59<<7 | 0x4E, + 28598 - 19968: jis0212<<14 | 0x27<<7 | 0x58, + 28601 - 19968: jis0208<<14 | 0x3E<<7 | 0x17, + 28604 - 19968: jis0212<<14 | 0x27<<7 | 0x59, + 28608 - 19968: jis0208<<14 | 0x16<<7 | 0x42, + 28609 - 19968: jis0208<<14 | 0x21<<7 | 0x58, + 28610 - 19968: jis0208<<14 | 0x3E<<7 | 0x11, + 28611 - 19968: jis0208<<14 | 0x26<<7 | 0x1A, + 28613 - 19968: jis0212<<14 | 0x27<<7 | 0x5A, + 28614 - 19968: jis0208<<14 | 0x3E<<7 | 0x18, + 28615 - 19968: jis0212<<14 | 0x27<<7 | 0x5B, + 28616 - 19968: jis0212<<14 | 0x27<<7 | 0x5C, + 28618 - 19968: jis0212<<14 | 0x27<<7 | 0x5D, + 28628 - 19968: jis0208<<14 | 0x3E<<7 | 0x1D, + 28629 - 19968: jis0208<<14 | 0x3E<<7 | 0x1B, + 28632 - 19968: jis0208<<14 | 0x3E<<7 | 0x1E, + 28634 - 19968: jis0212<<14 | 0x28<<7 | 0x00, + 28635 - 19968: jis0208<<14 | 0x3E<<7 | 0x21, + 28638 - 19968: jis0212<<14 | 0x28<<7 | 0x01, + 28639 - 19968: jis0208<<14 | 0x3E<<7 | 0x1A, + 28640 - 19968: jis0208<<14 | 0x18<<7 | 0x49, + 28641 - 19968: jis0208<<14 | 0x26<<7 | 0x07, + 28644 - 19968: jis0208<<14 | 0x3D<<7 | 0x18, + 28648 - 19968: jis0212<<14 | 0x28<<7 | 0x02, + 28649 - 19968: jis0212<<14 | 0x28<<7 | 0x03, + 28651 - 19968: jis0208<<14 | 0x2C<<7 | 0x53, + 28652 - 19968: jis0208<<14 | 0x3E<<7 | 0x1C, + 28654 - 19968: jis0208<<14 | 0x3E<<7 | 0x20, + 28655 - 19968: jis0208<<14 | 0x21<<7 | 0x54, + 28656 - 19968: jis0212<<14 | 0x28<<7 | 0x04, + 28657 - 19968: jis0208<<14 | 0x3E<<7 | 0x1F, + 28659 - 19968: jis0208<<14 | 0x3E<<7 | 0x0A, + 28661 - 19968: jis0208<<14 | 0x59<<7 | 0x4F, + 28662 - 19968: jis0208<<14 | 0x4E<<7 | 0x48, + 28665 - 19968: jis0212<<14 | 0x28<<7 | 0x06, + 28666 - 19968: jis0208<<14 | 0x3E<<7 | 0x24, + 28668 - 19968: jis0212<<14 | 0x28<<7 | 0x07, + 28669 - 19968: jis0212<<14 | 0x28<<7 | 0x08, + 28670 - 19968: jis0208<<14 | 0x3E<<7 | 0x28, + 28672 - 19968: jis0212<<14 | 0x28<<7 | 0x09, + 28673 - 19968: jis0208<<14 | 0x3E<<7 | 0x26, + 28677 - 19968: jis0208<<14 | 0x59<<7 | 0x50, + 28678 - 19968: jis0212<<14 | 0x28<<7 | 0x0B, + 28679 - 19968: jis0208<<14 | 0x59<<7 | 0x51, + 28681 - 19968: jis0208<<14 | 0x3E<<7 | 0x22, + 28683 - 19968: jis0208<<14 | 0x3E<<7 | 0x23, + 28685 - 19968: jis0212<<14 | 0x28<<7 | 0x0D, + 28687 - 19968: jis0208<<14 | 0x3E<<7 | 0x27, + 28689 - 19968: jis0208<<14 | 0x3E<<7 | 0x25, + 28693 - 19968: jis0208<<14 | 0x28<<7 | 0x2D, + 28695 - 19968: jis0212<<14 | 0x28<<7 | 0x0E, + 28696 - 19968: jis0208<<14 | 0x3E<<7 | 0x2D, + 28698 - 19968: jis0208<<14 | 0x3E<<7 | 0x2A, + 28699 - 19968: jis0208<<14 | 0x3E<<7 | 0x29, + 28701 - 19968: jis0208<<14 | 0x3E<<7 | 0x2C, + 28702 - 19968: jis0208<<14 | 0x25<<7 | 0x33, + 28703 - 19968: jis0208<<14 | 0x3E<<7 | 0x2E, + 28704 - 19968: jis0212<<14 | 0x28<<7 | 0x0F, + 28707 - 19968: jis0212<<14 | 0x28<<7 | 0x10, + 28710 - 19968: jis0208<<14 | 0x22<<7 | 0x54, + 28711 - 19968: jis0208<<14 | 0x21<<7 | 0x4C, + 28712 - 19968: jis0208<<14 | 0x59<<7 | 0x52, + 28716 - 19968: jis0208<<14 | 0x1F<<7 | 0x04, + 28719 - 19968: jis0212<<14 | 0x28<<7 | 0x11, + 28720 - 19968: jis0208<<14 | 0x3E<<7 | 0x2F, + 28722 - 19968: jis0208<<14 | 0x3E<<7 | 0x31, + 28724 - 19968: jis0212<<14 | 0x28<<7 | 0x12, + 28727 - 19968: jis0212<<14 | 0x28<<7 | 0x13, + 28729 - 19968: jis0212<<14 | 0x28<<7 | 0x14, + 28732 - 19968: jis0212<<14 | 0x28<<7 | 0x15, + 28734 - 19968: jis0208<<14 | 0x3E<<7 | 0x30, + 28739 - 19968: jis0212<<14 | 0x28<<7 | 0x16, + 28740 - 19968: jis0212<<14 | 0x28<<7 | 0x17, + 28744 - 19968: jis0212<<14 | 0x28<<7 | 0x18, + 28745 - 19968: jis0212<<14 | 0x28<<7 | 0x19, + 28746 - 19968: jis0212<<14 | 0x28<<7 | 0x1A, + 28747 - 19968: jis0212<<14 | 0x28<<7 | 0x1B, + 28748 - 19968: jis0208<<14 | 0x3D<<7 | 0x54, + 28750 - 19968: jis0212<<14 | 0x28<<7 | 0x20, + 28753 - 19968: jis0208<<14 | 0x3E<<7 | 0x32, + 28756 - 19968: jis0212<<14 | 0x28<<7 | 0x1C, + 28757 - 19968: jis0212<<14 | 0x28<<7 | 0x1D, + 28760 - 19968: jis0208<<14 | 0x25<<7 | 0x46, + 28765 - 19968: jis0212<<14 | 0x28<<7 | 0x1E, + 28766 - 19968: jis0212<<14 | 0x28<<7 | 0x1F, + 28771 - 19968: jis0208<<14 | 0x3E<<7 | 0x33, + 28772 - 19968: jis0212<<14 | 0x28<<7 | 0x21, + 28773 - 19968: jis0212<<14 | 0x28<<7 | 0x22, + 28779 - 19968: jis0208<<14 | 0x11<<7 | 0x2F, + 28780 - 19968: jis0212<<14 | 0x28<<7 | 0x23, + 28782 - 19968: jis0212<<14 | 0x28<<7 | 0x24, + 28783 - 19968: jis0208<<14 | 0x24<<7 | 0x53, + 28784 - 19968: jis0208<<14 | 0x12<<7 | 0x04, + 28789 - 19968: jis0212<<14 | 0x28<<7 | 0x25, + 28790 - 19968: jis0212<<14 | 0x28<<7 | 0x26, + 28792 - 19968: jis0208<<14 | 0x14<<7 | 0x43, + 28796 - 19968: jis0208<<14 | 0x1B<<7 | 0x3D, + 28797 - 19968: jis0208<<14 | 0x19<<7 | 0x31, + 28798 - 19968: jis0212<<14 | 0x28<<7 | 0x27, + 28801 - 19968: jis0212<<14 | 0x28<<7 | 0x28, + 28805 - 19968: jis0208<<14 | 0x59<<7 | 0x53, + 28806 - 19968: jis0212<<14 | 0x28<<7 | 0x2A, + 28809 - 19968: jis0208<<14 | 0x2E<<7 | 0x06, + 28810 - 19968: jis0208<<14 | 0x1E<<7 | 0x45, + 28814 - 19968: jis0208<<14 | 0x10<<7 | 0x49, + 28818 - 19968: jis0208<<14 | 0x3E<<7 | 0x35, + 28820 - 19968: jis0212<<14 | 0x28<<7 | 0x2B, + 28821 - 19968: jis0212<<14 | 0x28<<7 | 0x2C, + 28822 - 19968: jis0212<<14 | 0x28<<7 | 0x2D, + 28823 - 19968: jis0212<<14 | 0x28<<7 | 0x2E, + 28824 - 19968: jis0212<<14 | 0x28<<7 | 0x2F, + 28825 - 19968: jis0208<<14 | 0x3E<<7 | 0x34, + 28827 - 19968: jis0212<<14 | 0x28<<7 | 0x30, + 28836 - 19968: jis0212<<14 | 0x28<<7 | 0x31, + 28843 - 19968: jis0208<<14 | 0x59<<7 | 0x54, + 28844 - 19968: jis0208<<14 | 0x3E<<7 | 0x38, + 28845 - 19968: jis0208<<14 | 0x22<<7 | 0x19, + 28846 - 19968: jis0208<<14 | 0x3E<<7 | 0x3B, + 28847 - 19968: jis0208<<14 | 0x3E<<7 | 0x36, + 28848 - 19968: jis0212<<14 | 0x28<<7 | 0x33, + 28849 - 19968: jis0212<<14 | 0x28<<7 | 0x34, + 28851 - 19968: jis0208<<14 | 0x3E<<7 | 0x3A, + 28852 - 19968: jis0212<<14 | 0x28<<7 | 0x35, + 28855 - 19968: jis0212<<14 | 0x28<<7 | 0x36, + 28856 - 19968: jis0208<<14 | 0x3E<<7 | 0x39, + 28857 - 19968: jis0208<<14 | 0x24<<7 | 0x1F, + 28858 - 19968: jis0208<<14 | 0x0F<<7 | 0x38, + 28859 - 19968: jis0208<<14 | 0x58<<7 | 0x06, + 28872 - 19968: jis0208<<14 | 0x2D<<7 | 0x54, + 28874 - 19968: jis0212<<14 | 0x28<<7 | 0x37, + 28875 - 19968: jis0208<<14 | 0x3E<<7 | 0x3D, + 28879 - 19968: jis0208<<14 | 0x10<<7 | 0x07, + 28881 - 19968: jis0212<<14 | 0x28<<7 | 0x38, + 28883 - 19968: jis0212<<14 | 0x28<<7 | 0x39, + 28884 - 19968: jis0212<<14 | 0x28<<7 | 0x3A, + 28885 - 19968: jis0212<<14 | 0x28<<7 | 0x3B, + 28886 - 19968: jis0212<<14 | 0x28<<7 | 0x3C, + 28888 - 19968: jis0212<<14 | 0x28<<7 | 0x3D, + 28889 - 19968: jis0208<<14 | 0x3E<<7 | 0x3F, + 28892 - 19968: jis0212<<14 | 0x28<<7 | 0x3E, + 28893 - 19968: jis0208<<14 | 0x3E<<7 | 0x3E, + 28895 - 19968: jis0208<<14 | 0x3E<<7 | 0x3C, + 28900 - 19968: jis0212<<14 | 0x28<<7 | 0x3F, + 28913 - 19968: jis0208<<14 | 0x3E<<7 | 0x37, + 28921 - 19968: jis0208<<14 | 0x2A<<7 | 0x02, + 28922 - 19968: jis0212<<14 | 0x28<<7 | 0x40, + 28925 - 19968: jis0208<<14 | 0x3E<<7 | 0x41, + 28931 - 19968: jis0212<<14 | 0x28<<7 | 0x41, + 28932 - 19968: jis0208<<14 | 0x59<<7 | 0x56, + 28933 - 19968: jis0212<<14 | 0x28<<7 | 0x43, + 28934 - 19968: jis0212<<14 | 0x28<<7 | 0x44, + 28935 - 19968: jis0212<<14 | 0x28<<7 | 0x45, + 28937 - 19968: jis0208<<14 | 0x3E<<7 | 0x40, + 28939 - 19968: jis0212<<14 | 0x28<<7 | 0x46, + 28940 - 19968: jis0212<<14 | 0x28<<7 | 0x47, + 28943 - 19968: jis0208<<14 | 0x59<<7 | 0x55, + 28948 - 19968: jis0208<<14 | 0x10<<7 | 0x4A, + 28953 - 19968: jis0208<<14 | 0x3E<<7 | 0x43, + 28954 - 19968: jis0208<<14 | 0x29<<7 | 0x11, + 28956 - 19968: jis0208<<14 | 0x3E<<7 | 0x42, + 28958 - 19968: jis0212<<14 | 0x28<<7 | 0x49, + 28960 - 19968: jis0212<<14 | 0x28<<7 | 0x4A, + 28961 - 19968: jis0208<<14 | 0x2B<<7 | 0x14, + 28966 - 19968: jis0208<<14 | 0x1D<<7 | 0x26, + 28971 - 19968: jis0212<<14 | 0x28<<7 | 0x4B, + 28973 - 19968: jis0212<<14 | 0x28<<7 | 0x4C, + 28975 - 19968: jis0212<<14 | 0x28<<7 | 0x4D, + 28976 - 19968: jis0212<<14 | 0x28<<7 | 0x4E, + 28977 - 19968: jis0212<<14 | 0x28<<7 | 0x4F, + 28982 - 19968: jis0208<<14 | 0x20<<7 | 0x12, + 28984 - 19968: jis0212<<14 | 0x28<<7 | 0x50, + 28988 - 19968: jis0208<<14 | 0x1D<<7 | 0x25, + 28993 - 19968: jis0212<<14 | 0x28<<7 | 0x51, + 28997 - 19968: jis0212<<14 | 0x28<<7 | 0x52, + 28998 - 19968: jis0208<<14 | 0x59<<7 | 0x58, + 28999 - 19968: jis0208<<14 | 0x59<<7 | 0x59, + 29001 - 19968: jis0208<<14 | 0x2D<<7 | 0x5A, + 29002 - 19968: jis0212<<14 | 0x28<<7 | 0x55, + 29003 - 19968: jis0212<<14 | 0x28<<7 | 0x56, + 29004 - 19968: jis0208<<14 | 0x3E<<7 | 0x49, + 29006 - 19968: jis0208<<14 | 0x1F<<7 | 0x58, + 29008 - 19968: jis0212<<14 | 0x28<<7 | 0x57, + 29010 - 19968: jis0212<<14 | 0x28<<7 | 0x58, + 29013 - 19968: jis0208<<14 | 0x3E<<7 | 0x45, + 29014 - 19968: jis0208<<14 | 0x3E<<7 | 0x4A, + 29015 - 19968: jis0212<<14 | 0x28<<7 | 0x59, + 29017 - 19968: jis0208<<14 | 0x10<<7 | 0x4B, + 29018 - 19968: jis0212<<14 | 0x28<<7 | 0x5A, + 29020 - 19968: jis0208<<14 | 0x59<<7 | 0x57, + 29022 - 19968: jis0212<<14 | 0x28<<7 | 0x5C, + 29024 - 19968: jis0212<<14 | 0x28<<7 | 0x5D, + 29026 - 19968: jis0208<<14 | 0x3E<<7 | 0x48, + 29028 - 19968: jis0208<<14 | 0x26<<7 | 0x40, + 29029 - 19968: jis0208<<14 | 0x3E<<7 | 0x44, + 29030 - 19968: jis0208<<14 | 0x3E<<7 | 0x47, + 29031 - 19968: jis0208<<14 | 0x1D<<7 | 0x27, + 29032 - 19968: jis0212<<14 | 0x29<<7 | 0x00, + 29033 - 19968: jis0208<<14 | 0x27<<7 | 0x30, + 29036 - 19968: jis0208<<14 | 0x3E<<7 | 0x4B, + 29038 - 19968: jis0208<<14 | 0x1B<<7 | 0x30, + 29049 - 19968: jis0212<<14 | 0x29<<7 | 0x01, + 29053 - 19968: jis0208<<14 | 0x1F<<7 | 0x59, + 29056 - 19968: jis0212<<14 | 0x29<<7 | 0x02, + 29060 - 19968: jis0208<<14 | 0x3E<<7 | 0x4E, + 29061 - 19968: jis0212<<14 | 0x29<<7 | 0x03, + 29063 - 19968: jis0212<<14 | 0x29<<7 | 0x04, + 29064 - 19968: jis0208<<14 | 0x3E<<7 | 0x46, + 29066 - 19968: jis0208<<14 | 0x16<<7 | 0x06, + 29068 - 19968: jis0212<<14 | 0x29<<7 | 0x05, + 29071 - 19968: jis0208<<14 | 0x3E<<7 | 0x4C, + 29074 - 19968: jis0212<<14 | 0x29<<7 | 0x06, + 29076 - 19968: jis0208<<14 | 0x2C<<7 | 0x2F, + 29077 - 19968: jis0208<<14 | 0x3E<<7 | 0x4F, + 29081 - 19968: jis0208<<14 | 0x53<<7 | 0x05, + 29082 - 19968: jis0212<<14 | 0x29<<7 | 0x07, + 29083 - 19968: jis0212<<14 | 0x29<<7 | 0x08, + 29087 - 19968: jis0208<<14 | 0x1C<<7 | 0x2E, + 29088 - 19968: jis0212<<14 | 0x29<<7 | 0x09, + 29090 - 19968: jis0212<<14 | 0x29<<7 | 0x0A, + 29096 - 19968: jis0208<<14 | 0x3E<<7 | 0x50, + 29100 - 19968: jis0208<<14 | 0x3E<<7 | 0x51, + 29103 - 19968: jis0212<<14 | 0x29<<7 | 0x0B, + 29104 - 19968: jis0212<<14 | 0x29<<7 | 0x0C, + 29105 - 19968: jis0208<<14 | 0x26<<7 | 0x0D, + 29106 - 19968: jis0212<<14 | 0x29<<7 | 0x0D, + 29107 - 19968: jis0212<<14 | 0x29<<7 | 0x0E, + 29113 - 19968: jis0208<<14 | 0x3E<<7 | 0x53, + 29114 - 19968: jis0212<<14 | 0x29<<7 | 0x0F, + 29118 - 19968: jis0208<<14 | 0x3E<<7 | 0x54, + 29119 - 19968: jis0212<<14 | 0x29<<7 | 0x10, + 29120 - 19968: jis0212<<14 | 0x29<<7 | 0x11, + 29121 - 19968: jis0208<<14 | 0x59<<7 | 0x5B, + 29123 - 19968: jis0208<<14 | 0x26<<7 | 0x12, + 29124 - 19968: jis0212<<14 | 0x29<<7 | 0x13, + 29128 - 19968: jis0208<<14 | 0x24<<7 | 0x54, + 29129 - 19968: jis0208<<14 | 0x3E<<7 | 0x56, + 29131 - 19968: jis0212<<14 | 0x29<<7 | 0x14, + 29132 - 19968: jis0212<<14 | 0x29<<7 | 0x15, + 29134 - 19968: jis0208<<14 | 0x3E<<7 | 0x58, + 29136 - 19968: jis0208<<14 | 0x2D<<7 | 0x34, + 29138 - 19968: jis0208<<14 | 0x3E<<7 | 0x55, + 29139 - 19968: jis0212<<14 | 0x29<<7 | 0x16, + 29140 - 19968: jis0208<<14 | 0x3E<<7 | 0x57, + 29141 - 19968: jis0208<<14 | 0x10<<7 | 0x4C, + 29142 - 19968: jis0212<<14 | 0x29<<7 | 0x17, + 29143 - 19968: jis0208<<14 | 0x3E<<7 | 0x52, + 29145 - 19968: jis0212<<14 | 0x29<<7 | 0x18, + 29146 - 19968: jis0212<<14 | 0x29<<7 | 0x19, + 29148 - 19968: jis0212<<14 | 0x29<<7 | 0x1A, + 29151 - 19968: jis0208<<14 | 0x32<<7 | 0x3A, + 29152 - 19968: jis0208<<14 | 0x3E<<7 | 0x59, + 29157 - 19968: jis0208<<14 | 0x20<<7 | 0x46, + 29158 - 19968: jis0208<<14 | 0x1A<<7 | 0x17, + 29159 - 19968: jis0208<<14 | 0x3E<<7 | 0x5B, + 29164 - 19968: jis0208<<14 | 0x3E<<7 | 0x5A, + 29165 - 19968: jis0208<<14 | 0x1E<<7 | 0x03, + 29166 - 19968: jis0208<<14 | 0x31<<7 | 0x38, + 29173 - 19968: jis0208<<14 | 0x3E<<7 | 0x5C, + 29176 - 19968: jis0212<<14 | 0x29<<7 | 0x1B, + 29177 - 19968: jis0208<<14 | 0x3F<<7 | 0x00, + 29179 - 19968: jis0208<<14 | 0x3E<<7 | 0x4D, + 29180 - 19968: jis0208<<14 | 0x3E<<7 | 0x5D, + 29182 - 19968: jis0208<<14 | 0x59<<7 | 0x5C, + 29183 - 19968: jis0208<<14 | 0x3F<<7 | 0x01, + 29184 - 19968: jis0212<<14 | 0x29<<7 | 0x1D, + 29190 - 19968: jis0208<<14 | 0x26<<7 | 0x59, + 29191 - 19968: jis0212<<14 | 0x29<<7 | 0x1E, + 29192 - 19968: jis0212<<14 | 0x29<<7 | 0x1F, + 29193 - 19968: jis0212<<14 | 0x29<<7 | 0x20, + 29197 - 19968: jis0208<<14 | 0x3F<<7 | 0x02, + 29200 - 19968: jis0208<<14 | 0x3F<<7 | 0x03, + 29203 - 19968: jis0212<<14 | 0x29<<7 | 0x21, + 29207 - 19968: jis0212<<14 | 0x29<<7 | 0x22, + 29210 - 19968: jis0212<<14 | 0x29<<7 | 0x23, + 29211 - 19968: jis0208<<14 | 0x3F<<7 | 0x04, + 29213 - 19968: jis0212<<14 | 0x29<<7 | 0x24, + 29215 - 19968: jis0212<<14 | 0x29<<7 | 0x25, + 29220 - 19968: jis0212<<14 | 0x29<<7 | 0x26, + 29224 - 19968: jis0208<<14 | 0x3F<<7 | 0x05, + 29226 - 19968: jis0208<<14 | 0x23<<7 | 0x3D, + 29227 - 19968: jis0212<<14 | 0x29<<7 | 0x27, + 29228 - 19968: jis0208<<14 | 0x3F<<7 | 0x07, + 29229 - 19968: jis0208<<14 | 0x3F<<7 | 0x06, + 29231 - 19968: jis0212<<14 | 0x29<<7 | 0x28, + 29232 - 19968: jis0208<<14 | 0x3F<<7 | 0x08, + 29234 - 19968: jis0208<<14 | 0x3F<<7 | 0x09, + 29236 - 19968: jis0212<<14 | 0x29<<7 | 0x29, + 29237 - 19968: jis0208<<14 | 0x1B<<7 | 0x3E, + 29238 - 19968: jis0208<<14 | 0x28<<7 | 0x42, + 29240 - 19968: jis0212<<14 | 0x29<<7 | 0x2A, + 29241 - 19968: jis0212<<14 | 0x29<<7 | 0x2B, + 29242 - 19968: jis0208<<14 | 0x2B<<7 | 0x4B, + 29243 - 19968: jis0208<<14 | 0x3F<<7 | 0x0A, + 29244 - 19968: jis0208<<14 | 0x3F<<7 | 0x0B, + 29245 - 19968: jis0208<<14 | 0x20<<7 | 0x35, + 29246 - 19968: jis0208<<14 | 0x1B<<7 | 0x03, + 29247 - 19968: jis0208<<14 | 0x3F<<7 | 0x0C, + 29248 - 19968: jis0208<<14 | 0x3F<<7 | 0x0D, + 29249 - 19968: jis0212<<14 | 0x29<<7 | 0x2C, + 29250 - 19968: jis0212<<14 | 0x29<<7 | 0x2D, + 29251 - 19968: jis0212<<14 | 0x29<<7 | 0x2E, + 29253 - 19968: jis0212<<14 | 0x29<<7 | 0x2F, + 29254 - 19968: jis0208<<14 | 0x3F<<7 | 0x0E, + 29255 - 19968: jis0208<<14 | 0x29<<7 | 0x31, + 29256 - 19968: jis0208<<14 | 0x27<<7 | 0x26, + 29259 - 19968: jis0208<<14 | 0x3F<<7 | 0x0F, + 29260 - 19968: jis0208<<14 | 0x26<<7 | 0x36, + 29262 - 19968: jis0212<<14 | 0x29<<7 | 0x30, + 29263 - 19968: jis0212<<14 | 0x29<<7 | 0x31, + 29264 - 19968: jis0212<<14 | 0x29<<7 | 0x32, + 29266 - 19968: jis0208<<14 | 0x23<<7 | 0x0C, + 29267 - 19968: jis0212<<14 | 0x29<<7 | 0x33, + 29269 - 19968: jis0212<<14 | 0x29<<7 | 0x34, + 29270 - 19968: jis0212<<14 | 0x29<<7 | 0x35, + 29272 - 19968: jis0208<<14 | 0x3F<<7 | 0x10, + 29273 - 19968: jis0208<<14 | 0x11<<7 | 0x46, + 29274 - 19968: jis0212<<14 | 0x29<<7 | 0x36, + 29275 - 19968: jis0208<<14 | 0x14<<7 | 0x4C, + 29276 - 19968: jis0212<<14 | 0x29<<7 | 0x37, + 29277 - 19968: jis0208<<14 | 0x2B<<7 | 0x25, + 29278 - 19968: jis0212<<14 | 0x29<<7 | 0x38, + 29279 - 19968: jis0208<<14 | 0x2B<<7 | 0x15, + 29280 - 19968: jis0212<<14 | 0x29<<7 | 0x39, + 29281 - 19968: jis0208<<14 | 0x11<<7 | 0x13, + 29282 - 19968: jis0208<<14 | 0x2E<<7 | 0x13, + 29283 - 19968: jis0212<<14 | 0x29<<7 | 0x3A, + 29287 - 19968: jis0208<<14 | 0x2A<<7 | 0x31, + 29288 - 19968: jis0212<<14 | 0x29<<7 | 0x3B, + 29289 - 19968: jis0208<<14 | 0x29<<7 | 0x09, + 29291 - 19968: jis0212<<14 | 0x29<<7 | 0x3C, + 29294 - 19968: jis0212<<14 | 0x29<<7 | 0x3D, + 29295 - 19968: jis0212<<14 | 0x29<<7 | 0x3E, + 29297 - 19968: jis0212<<14 | 0x29<<7 | 0x3F, + 29298 - 19968: jis0208<<14 | 0x1F<<7 | 0x16, + 29300 - 19968: jis0208<<14 | 0x3F<<7 | 0x11, + 29303 - 19968: jis0212<<14 | 0x29<<7 | 0x40, + 29304 - 19968: jis0212<<14 | 0x29<<7 | 0x41, + 29305 - 19968: jis0208<<14 | 0x25<<7 | 0x22, + 29307 - 19968: jis0212<<14 | 0x29<<7 | 0x42, + 29308 - 19968: jis0212<<14 | 0x29<<7 | 0x43, + 29309 - 19968: jis0208<<14 | 0x17<<7 | 0x02, + 29310 - 19968: jis0208<<14 | 0x3F<<7 | 0x12, + 29311 - 19968: jis0212<<14 | 0x29<<7 | 0x44, + 29312 - 19968: jis0208<<14 | 0x19<<7 | 0x33, + 29313 - 19968: jis0208<<14 | 0x3F<<7 | 0x14, + 29314 - 19968: jis0208<<14 | 0x3F<<7 | 0x13, + 29316 - 19968: jis0212<<14 | 0x29<<7 | 0x45, + 29319 - 19968: jis0208<<14 | 0x3F<<7 | 0x15, + 29321 - 19968: jis0212<<14 | 0x29<<7 | 0x46, + 29325 - 19968: jis0212<<14 | 0x29<<7 | 0x47, + 29326 - 19968: jis0212<<14 | 0x29<<7 | 0x48, + 29330 - 19968: jis0208<<14 | 0x3F<<7 | 0x16, + 29331 - 19968: jis0212<<14 | 0x29<<7 | 0x49, + 29334 - 19968: jis0208<<14 | 0x3F<<7 | 0x17, + 29339 - 19968: jis0212<<14 | 0x29<<7 | 0x4A, + 29344 - 19968: jis0208<<14 | 0x14<<7 | 0x1D, + 29346 - 19968: jis0208<<14 | 0x3F<<7 | 0x18, + 29351 - 19968: jis0208<<14 | 0x3F<<7 | 0x19, + 29352 - 19968: jis0212<<14 | 0x29<<7 | 0x4B, + 29356 - 19968: jis0208<<14 | 0x17<<7 | 0x03, + 29357 - 19968: jis0212<<14 | 0x29<<7 | 0x4C, + 29358 - 19968: jis0212<<14 | 0x29<<7 | 0x4D, + 29359 - 19968: jis0208<<14 | 0x27<<7 | 0x27, + 29361 - 19968: jis0208<<14 | 0x59<<7 | 0x5D, + 29362 - 19968: jis0208<<14 | 0x3F<<7 | 0x1B, + 29364 - 19968: jis0212<<14 | 0x29<<7 | 0x4F, + 29366 - 19968: jis0208<<14 | 0x1D<<7 | 0x54, + 29369 - 19968: jis0208<<14 | 0x3F<<7 | 0x1A, + 29374 - 19968: jis0208<<14 | 0x5A<<7 | 0x00, + 29377 - 19968: jis0212<<14 | 0x29<<7 | 0x51, + 29378 - 19968: jis0208<<14 | 0x15<<7 | 0x17, + 29379 - 19968: jis0208<<14 | 0x3F<<7 | 0x1C, + 29380 - 19968: jis0208<<14 | 0x3F<<7 | 0x1E, + 29382 - 19968: jis0208<<14 | 0x3F<<7 | 0x1D, + 29383 - 19968: jis0212<<14 | 0x29<<7 | 0x52, + 29385 - 19968: jis0212<<14 | 0x29<<7 | 0x53, + 29388 - 19968: jis0212<<14 | 0x29<<7 | 0x54, + 29390 - 19968: jis0208<<14 | 0x3F<<7 | 0x1F, + 29392 - 19968: jis0208<<14 | 0x17<<7 | 0x30, + 29394 - 19968: jis0208<<14 | 0x3F<<7 | 0x20, + 29397 - 19968: jis0212<<14 | 0x29<<7 | 0x55, + 29398 - 19968: jis0212<<14 | 0x29<<7 | 0x56, + 29399 - 19968: jis0208<<14 | 0x15<<7 | 0x48, + 29400 - 19968: jis0212<<14 | 0x29<<7 | 0x57, + 29401 - 19968: jis0208<<14 | 0x20<<7 | 0x1F, + 29403 - 19968: jis0208<<14 | 0x18<<7 | 0x5C, + 29407 - 19968: jis0212<<14 | 0x29<<7 | 0x58, + 29408 - 19968: jis0208<<14 | 0x3F<<7 | 0x22, + 29409 - 19968: jis0208<<14 | 0x3F<<7 | 0x23, + 29410 - 19968: jis0208<<14 | 0x3F<<7 | 0x21, + 29413 - 19968: jis0212<<14 | 0x29<<7 | 0x59, + 29417 - 19968: jis0208<<14 | 0x1B<<7 | 0x4C, + 29420 - 19968: jis0208<<14 | 0x25<<7 | 0x27, + 29421 - 19968: jis0208<<14 | 0x15<<7 | 0x18, + 29427 - 19968: jis0212<<14 | 0x29<<7 | 0x5A, + 29428 - 19968: jis0212<<14 | 0x29<<7 | 0x5B, + 29431 - 19968: jis0208<<14 | 0x3F<<7 | 0x25, + 29432 - 19968: jis0208<<14 | 0x22<<7 | 0x0B, + 29433 - 19968: jis0208<<14 | 0x3F<<7 | 0x24, + 29434 - 19968: jis0212<<14 | 0x29<<7 | 0x5C, + 29435 - 19968: jis0212<<14 | 0x29<<7 | 0x5D, + 29436 - 19968: jis0208<<14 | 0x2E<<7 | 0x14, + 29437 - 19968: jis0208<<14 | 0x26<<7 | 0x41, + 29438 - 19968: jis0212<<14 | 0x2A<<7 | 0x00, + 29442 - 19968: jis0212<<14 | 0x2A<<7 | 0x01, + 29444 - 19968: jis0212<<14 | 0x2A<<7 | 0x02, + 29445 - 19968: jis0212<<14 | 0x2A<<7 | 0x03, + 29447 - 19968: jis0212<<14 | 0x2A<<7 | 0x04, + 29450 - 19968: jis0208<<14 | 0x3F<<7 | 0x28, + 29451 - 19968: jis0212<<14 | 0x2A<<7 | 0x05, + 29453 - 19968: jis0212<<14 | 0x2A<<7 | 0x06, + 29458 - 19968: jis0212<<14 | 0x2A<<7 | 0x07, + 29459 - 19968: jis0212<<14 | 0x2A<<7 | 0x08, + 29462 - 19968: jis0208<<14 | 0x3F<<7 | 0x2A, + 29463 - 19968: jis0208<<14 | 0x3F<<7 | 0x27, + 29464 - 19968: jis0212<<14 | 0x2A<<7 | 0x09, + 29465 - 19968: jis0212<<14 | 0x2A<<7 | 0x0A, + 29467 - 19968: jis0208<<14 | 0x2B<<7 | 0x33, + 29468 - 19968: jis0208<<14 | 0x3F<<7 | 0x29, + 29469 - 19968: jis0208<<14 | 0x3F<<7 | 0x2B, + 29470 - 19968: jis0212<<14 | 0x2A<<7 | 0x0B, + 29471 - 19968: jis0208<<14 | 0x2D<<7 | 0x23, + 29474 - 19968: jis0212<<14 | 0x2A<<7 | 0x0C, + 29476 - 19968: jis0208<<14 | 0x5A<<7 | 0x01, + 29477 - 19968: jis0208<<14 | 0x3F<<7 | 0x2F, + 29479 - 19968: jis0212<<14 | 0x2A<<7 | 0x0E, + 29480 - 19968: jis0212<<14 | 0x2A<<7 | 0x0F, + 29481 - 19968: jis0208<<14 | 0x3F<<7 | 0x2E, + 29482 - 19968: jis0208<<14 | 0x22<<7 | 0x55, + 29483 - 19968: jis0208<<14 | 0x26<<7 | 0x0C, + 29484 - 19968: jis0212<<14 | 0x2A<<7 | 0x10, + 29486 - 19968: jis0208<<14 | 0x17<<7 | 0x04, + 29487 - 19968: jis0208<<14 | 0x3F<<7 | 0x2D, + 29489 - 19968: jis0212<<14 | 0x2A<<7 | 0x11, + 29490 - 19968: jis0212<<14 | 0x2A<<7 | 0x12, + 29492 - 19968: jis0208<<14 | 0x3F<<7 | 0x2C, + 29493 - 19968: jis0212<<14 | 0x2A<<7 | 0x13, + 29494 - 19968: jis0208<<14 | 0x2C<<7 | 0x10, + 29495 - 19968: jis0208<<14 | 0x2C<<7 | 0x11, + 29498 - 19968: jis0212<<14 | 0x2A<<7 | 0x14, + 29499 - 19968: jis0212<<14 | 0x2A<<7 | 0x15, + 29501 - 19968: jis0212<<14 | 0x2A<<7 | 0x16, + 29502 - 19968: jis0208<<14 | 0x3F<<7 | 0x30, + 29503 - 19968: jis0208<<14 | 0x10<<7 | 0x4D, + 29507 - 19968: jis0212<<14 | 0x2A<<7 | 0x17, + 29508 - 19968: jis0208<<14 | 0x18<<7 | 0x55, + 29509 - 19968: jis0208<<14 | 0x1A<<7 | 0x41, + 29517 - 19968: jis0212<<14 | 0x2A<<7 | 0x18, + 29518 - 19968: jis0208<<14 | 0x3F<<7 | 0x31, + 29519 - 19968: jis0208<<14 | 0x3F<<7 | 0x32, + 29520 - 19968: jis0212<<14 | 0x2A<<7 | 0x19, + 29522 - 19968: jis0212<<14 | 0x2A<<7 | 0x1A, + 29526 - 19968: jis0212<<14 | 0x2A<<7 | 0x1B, + 29527 - 19968: jis0208<<14 | 0x3F<<7 | 0x34, + 29528 - 19968: jis0212<<14 | 0x2A<<7 | 0x1C, + 29533 - 19968: jis0212<<14 | 0x2A<<7 | 0x1D, + 29534 - 19968: jis0212<<14 | 0x2A<<7 | 0x1E, + 29535 - 19968: jis0212<<14 | 0x2A<<7 | 0x1F, + 29536 - 19968: jis0212<<14 | 0x2A<<7 | 0x20, + 29539 - 19968: jis0208<<14 | 0x1C<<7 | 0x22, + 29542 - 19968: jis0212<<14 | 0x2A<<7 | 0x21, + 29543 - 19968: jis0212<<14 | 0x2A<<7 | 0x22, + 29544 - 19968: jis0208<<14 | 0x3F<<7 | 0x36, + 29545 - 19968: jis0212<<14 | 0x2A<<7 | 0x23, + 29546 - 19968: jis0208<<14 | 0x3F<<7 | 0x35, + 29547 - 19968: jis0212<<14 | 0x2A<<7 | 0x24, + 29548 - 19968: jis0212<<14 | 0x2A<<7 | 0x25, + 29550 - 19968: jis0212<<14 | 0x2A<<7 | 0x26, + 29551 - 19968: jis0212<<14 | 0x2A<<7 | 0x27, + 29552 - 19968: jis0208<<14 | 0x3F<<7 | 0x37, + 29553 - 19968: jis0212<<14 | 0x2A<<7 | 0x28, + 29554 - 19968: jis0208<<14 | 0x12<<7 | 0x2C, + 29557 - 19968: jis0208<<14 | 0x3F<<7 | 0x39, + 29559 - 19968: jis0208<<14 | 0x5A<<7 | 0x03, + 29560 - 19968: jis0208<<14 | 0x3F<<7 | 0x38, + 29561 - 19968: jis0212<<14 | 0x2A<<7 | 0x2A, + 29562 - 19968: jis0208<<14 | 0x3F<<7 | 0x3B, + 29563 - 19968: jis0208<<14 | 0x3F<<7 | 0x3A, + 29564 - 19968: jis0212<<14 | 0x2A<<7 | 0x2B, + 29568 - 19968: jis0212<<14 | 0x2A<<7 | 0x2C, + 29569 - 19968: jis0212<<14 | 0x2A<<7 | 0x2D, + 29571 - 19968: jis0212<<14 | 0x2A<<7 | 0x2E, + 29572 - 19968: jis0208<<14 | 0x17<<7 | 0x1B, + 29573 - 19968: jis0212<<14 | 0x2A<<7 | 0x2F, + 29574 - 19968: jis0212<<14 | 0x2A<<7 | 0x30, + 29575 - 19968: jis0208<<14 | 0x2D<<7 | 0x07, + 29577 - 19968: jis0208<<14 | 0x15<<7 | 0x2B, + 29579 - 19968: jis0208<<14 | 0x11<<7 | 0x05, + 29582 - 19968: jis0212<<14 | 0x2A<<7 | 0x31, + 29584 - 19968: jis0212<<14 | 0x2A<<7 | 0x32, + 29587 - 19968: jis0212<<14 | 0x2A<<7 | 0x33, + 29589 - 19968: jis0212<<14 | 0x2A<<7 | 0x34, + 29590 - 19968: jis0208<<14 | 0x15<<7 | 0x49, + 29591 - 19968: jis0212<<14 | 0x2A<<7 | 0x35, + 29592 - 19968: jis0212<<14 | 0x2A<<7 | 0x36, + 29596 - 19968: jis0212<<14 | 0x2A<<7 | 0x37, + 29598 - 19968: jis0212<<14 | 0x2A<<7 | 0x38, + 29599 - 19968: jis0212<<14 | 0x2A<<7 | 0x39, + 29600 - 19968: jis0212<<14 | 0x2A<<7 | 0x3A, + 29602 - 19968: jis0212<<14 | 0x2A<<7 | 0x3B, + 29605 - 19968: jis0212<<14 | 0x2A<<7 | 0x3C, + 29606 - 19968: jis0212<<14 | 0x2A<<7 | 0x3D, + 29609 - 19968: jis0208<<14 | 0x13<<7 | 0x40, + 29610 - 19968: jis0212<<14 | 0x2A<<7 | 0x3E, + 29611 - 19968: jis0212<<14 | 0x2A<<7 | 0x3F, + 29613 - 19968: jis0212<<14 | 0x2A<<7 | 0x40, + 29618 - 19968: jis0208<<14 | 0x2D<<7 | 0x47, + 29619 - 19968: jis0208<<14 | 0x3F<<7 | 0x3D, + 29621 - 19968: jis0212<<14 | 0x2A<<7 | 0x41, + 29623 - 19968: jis0212<<14 | 0x2A<<7 | 0x42, + 29625 - 19968: jis0212<<14 | 0x2A<<7 | 0x43, + 29627 - 19968: jis0208<<14 | 0x3F<<7 | 0x3F, + 29628 - 19968: jis0212<<14 | 0x2A<<7 | 0x44, + 29629 - 19968: jis0208<<14 | 0x5A<<7 | 0x04, + 29631 - 19968: jis0212<<14 | 0x2A<<7 | 0x46, + 29632 - 19968: jis0208<<14 | 0x3F<<7 | 0x40, + 29634 - 19968: jis0208<<14 | 0x11<<7 | 0x30, + 29637 - 19968: jis0212<<14 | 0x2A<<7 | 0x47, + 29638 - 19968: jis0212<<14 | 0x2A<<7 | 0x48, + 29640 - 19968: jis0208<<14 | 0x3F<<7 | 0x3C, + 29641 - 19968: jis0208<<14 | 0x5A<<7 | 0x05, + 29642 - 19968: jis0208<<14 | 0x1A<<7 | 0x18, + 29643 - 19968: jis0212<<14 | 0x2A<<7 | 0x4A, + 29644 - 19968: jis0212<<14 | 0x2A<<7 | 0x4B, + 29645 - 19968: jis0208<<14 | 0x23<<7 | 0x20, + 29646 - 19968: jis0208<<14 | 0x3F<<7 | 0x3E, + 29647 - 19968: jis0212<<14 | 0x2A<<7 | 0x4C, + 29650 - 19968: jis0208<<14 | 0x5A<<7 | 0x08, + 29651 - 19968: jis0212<<14 | 0x2A<<7 | 0x4E, + 29654 - 19968: jis0208<<14 | 0x5A<<7 | 0x06, + 29657 - 19968: jis0212<<14 | 0x2A<<7 | 0x50, + 29661 - 19968: jis0212<<14 | 0x2A<<7 | 0x51, + 29662 - 19968: jis0208<<14 | 0x3F<<7 | 0x43, + 29664 - 19968: jis0208<<14 | 0x1B<<7 | 0x4D, + 29665 - 19968: jis0212<<14 | 0x2A<<7 | 0x52, + 29667 - 19968: jis0208<<14 | 0x5A<<7 | 0x07, + 29669 - 19968: jis0208<<14 | 0x3F<<7 | 0x41, + 29670 - 19968: jis0212<<14 | 0x2A<<7 | 0x54, + 29671 - 19968: jis0212<<14 | 0x2A<<7 | 0x55, + 29673 - 19968: jis0212<<14 | 0x2A<<7 | 0x56, + 29674 - 19968: jis0208<<14 | 0x16<<7 | 0x1D, + 29677 - 19968: jis0208<<14 | 0x27<<7 | 0x28, + 29678 - 19968: jis0208<<14 | 0x3F<<7 | 0x42, + 29681 - 19968: jis0208<<14 | 0x3F<<7 | 0x5D, + 29684 - 19968: jis0212<<14 | 0x2A<<7 | 0x57, + 29685 - 19968: jis0208<<14 | 0x5A<<7 | 0x0A, + 29687 - 19968: jis0212<<14 | 0x2A<<7 | 0x59, + 29688 - 19968: jis0208<<14 | 0x3F<<7 | 0x48, + 29689 - 19968: jis0212<<14 | 0x2A<<7 | 0x5A, + 29690 - 19968: jis0212<<14 | 0x2A<<7 | 0x5B, + 29691 - 19968: jis0212<<14 | 0x2A<<7 | 0x5C, + 29693 - 19968: jis0212<<14 | 0x2A<<7 | 0x5D, + 29694 - 19968: jis0208<<14 | 0x17<<7 | 0x1C, + 29695 - 19968: jis0212<<14 | 0x2B<<7 | 0x00, + 29696 - 19968: jis0212<<14 | 0x2B<<7 | 0x01, + 29697 - 19968: jis0212<<14 | 0x2B<<7 | 0x02, + 29699 - 19968: jis0208<<14 | 0x14<<7 | 0x44, + 29700 - 19968: jis0212<<14 | 0x2B<<7 | 0x03, + 29701 - 19968: jis0208<<14 | 0x3F<<7 | 0x45, + 29702 - 19968: jis0208<<14 | 0x2C<<7 | 0x5C, + 29703 - 19968: jis0208<<14 | 0x5A<<7 | 0x09, + 29705 - 19968: jis0208<<14 | 0x2D<<7 | 0x0F, + 29706 - 19968: jis0212<<14 | 0x2B<<7 | 0x05, + 29713 - 19968: jis0212<<14 | 0x2B<<7 | 0x06, + 29722 - 19968: jis0212<<14 | 0x2B<<7 | 0x07, + 29723 - 19968: jis0212<<14 | 0x2B<<7 | 0x08, + 29730 - 19968: jis0208<<14 | 0x21<<7 | 0x55, + 29732 - 19968: jis0212<<14 | 0x2B<<7 | 0x09, + 29733 - 19968: jis0208<<14 | 0x3F<<7 | 0x47, + 29734 - 19968: jis0208<<14 | 0x5A<<7 | 0x0B, + 29736 - 19968: jis0212<<14 | 0x2B<<7 | 0x0B, + 29737 - 19968: jis0208<<14 | 0x5A<<7 | 0x0D, + 29738 - 19968: jis0208<<14 | 0x5A<<7 | 0x0C, + 29739 - 19968: jis0212<<14 | 0x2B<<7 | 0x0E, + 29740 - 19968: jis0212<<14 | 0x2B<<7 | 0x0F, + 29741 - 19968: jis0212<<14 | 0x2B<<7 | 0x10, + 29742 - 19968: jis0208<<14 | 0x5A<<7 | 0x0E, + 29743 - 19968: jis0212<<14 | 0x2B<<7 | 0x12, + 29744 - 19968: jis0212<<14 | 0x2B<<7 | 0x13, + 29745 - 19968: jis0212<<14 | 0x2B<<7 | 0x14, + 29746 - 19968: jis0208<<14 | 0x3F<<7 | 0x49, + 29747 - 19968: jis0208<<14 | 0x2D<<7 | 0x35, + 29748 - 19968: jis0208<<14 | 0x15<<7 | 0x36, + 29749 - 19968: jis0208<<14 | 0x27<<7 | 0x5B, + 29750 - 19968: jis0208<<14 | 0x26<<7 | 0x29, + 29753 - 19968: jis0212<<14 | 0x2B<<7 | 0x15, + 29754 - 19968: jis0208<<14 | 0x3F<<7 | 0x4A, + 29759 - 19968: jis0208<<14 | 0x3F<<7 | 0x4C, + 29760 - 19968: jis0212<<14 | 0x2B<<7 | 0x16, + 29761 - 19968: jis0208<<14 | 0x3F<<7 | 0x4F, + 29763 - 19968: jis0212<<14 | 0x2B<<7 | 0x17, + 29764 - 19968: jis0212<<14 | 0x2B<<7 | 0x18, + 29766 - 19968: jis0212<<14 | 0x2B<<7 | 0x19, + 29767 - 19968: jis0212<<14 | 0x2B<<7 | 0x1A, + 29771 - 19968: jis0212<<14 | 0x2B<<7 | 0x1B, + 29773 - 19968: jis0212<<14 | 0x2B<<7 | 0x1C, + 29777 - 19968: jis0212<<14 | 0x2B<<7 | 0x1D, + 29778 - 19968: jis0212<<14 | 0x2B<<7 | 0x1E, + 29781 - 19968: jis0208<<14 | 0x3F<<7 | 0x4B, + 29783 - 19968: jis0212<<14 | 0x2B<<7 | 0x1F, + 29785 - 19968: jis0208<<14 | 0x3F<<7 | 0x4E, + 29786 - 19968: jis0208<<14 | 0x17<<7 | 0x49, + 29787 - 19968: jis0208<<14 | 0x10<<7 | 0x2C, + 29788 - 19968: jis0208<<14 | 0x3F<<7 | 0x50, + 29789 - 19968: jis0212<<14 | 0x2B<<7 | 0x20, + 29790 - 19968: jis0208<<14 | 0x1E<<7 | 0x4F, + 29791 - 19968: jis0208<<14 | 0x3F<<7 | 0x4D, + 29792 - 19968: jis0208<<14 | 0x2D<<7 | 0x3B, + 29794 - 19968: jis0208<<14 | 0x5A<<7 | 0x0F, + 29795 - 19968: jis0208<<14 | 0x3F<<7 | 0x53, + 29796 - 19968: jis0208<<14 | 0x53<<7 | 0x03, + 29798 - 19968: jis0212<<14 | 0x2B<<7 | 0x22, + 29799 - 19968: jis0212<<14 | 0x2B<<7 | 0x23, + 29800 - 19968: jis0212<<14 | 0x2B<<7 | 0x24, + 29801 - 19968: jis0208<<14 | 0x3F<<7 | 0x51, + 29802 - 19968: jis0208<<14 | 0x3F<<7 | 0x54, + 29803 - 19968: jis0212<<14 | 0x2B<<7 | 0x25, + 29805 - 19968: jis0212<<14 | 0x2B<<7 | 0x26, + 29806 - 19968: jis0212<<14 | 0x2B<<7 | 0x27, + 29807 - 19968: jis0208<<14 | 0x3F<<7 | 0x46, + 29808 - 19968: jis0208<<14 | 0x3F<<7 | 0x52, + 29809 - 19968: jis0212<<14 | 0x2B<<7 | 0x28, + 29810 - 19968: jis0212<<14 | 0x2B<<7 | 0x29, + 29811 - 19968: jis0208<<14 | 0x19<<7 | 0x1B, + 29814 - 19968: jis0208<<14 | 0x3F<<7 | 0x55, + 29822 - 19968: jis0208<<14 | 0x3F<<7 | 0x56, + 29824 - 19968: jis0212<<14 | 0x2B<<7 | 0x2A, + 29825 - 19968: jis0212<<14 | 0x2B<<7 | 0x2B, + 29827 - 19968: jis0208<<14 | 0x2C<<7 | 0x5D, + 29829 - 19968: jis0212<<14 | 0x2B<<7 | 0x2C, + 29830 - 19968: jis0212<<14 | 0x2B<<7 | 0x2D, + 29831 - 19968: jis0212<<14 | 0x2B<<7 | 0x2E, + 29833 - 19968: jis0208<<14 | 0x5A<<7 | 0x10, + 29835 - 19968: jis0208<<14 | 0x3F<<7 | 0x57, + 29839 - 19968: jis0212<<14 | 0x2B<<7 | 0x30, + 29840 - 19968: jis0212<<14 | 0x2B<<7 | 0x31, + 29841 - 19968: jis0212<<14 | 0x2B<<7 | 0x32, + 29842 - 19968: jis0212<<14 | 0x2B<<7 | 0x33, + 29848 - 19968: jis0212<<14 | 0x2B<<7 | 0x34, + 29849 - 19968: jis0212<<14 | 0x2B<<7 | 0x35, + 29850 - 19968: jis0212<<14 | 0x2B<<7 | 0x36, + 29852 - 19968: jis0212<<14 | 0x2B<<7 | 0x37, + 29854 - 19968: jis0208<<14 | 0x3F<<7 | 0x58, + 29855 - 19968: jis0208<<14 | 0x5A<<7 | 0x11, + 29856 - 19968: jis0212<<14 | 0x2B<<7 | 0x39, + 29857 - 19968: jis0212<<14 | 0x2B<<7 | 0x3A, + 29858 - 19968: jis0208<<14 | 0x3F<<7 | 0x44, + 29859 - 19968: jis0212<<14 | 0x2B<<7 | 0x3B, + 29862 - 19968: jis0212<<14 | 0x2B<<7 | 0x3C, + 29863 - 19968: jis0208<<14 | 0x3F<<7 | 0x59, + 29864 - 19968: jis0212<<14 | 0x2B<<7 | 0x3D, + 29865 - 19968: jis0212<<14 | 0x2B<<7 | 0x3E, + 29866 - 19968: jis0212<<14 | 0x2B<<7 | 0x3F, + 29867 - 19968: jis0212<<14 | 0x2B<<7 | 0x40, + 29870 - 19968: jis0212<<14 | 0x2B<<7 | 0x41, + 29871 - 19968: jis0212<<14 | 0x2B<<7 | 0x42, + 29872 - 19968: jis0208<<14 | 0x13<<7 | 0x23, + 29873 - 19968: jis0212<<14 | 0x2B<<7 | 0x43, + 29874 - 19968: jis0212<<14 | 0x2B<<7 | 0x44, + 29877 - 19968: jis0212<<14 | 0x2B<<7 | 0x45, + 29881 - 19968: jis0212<<14 | 0x2B<<7 | 0x46, + 29883 - 19968: jis0212<<14 | 0x2B<<7 | 0x47, + 29885 - 19968: jis0208<<14 | 0x1B<<7 | 0x04, + 29887 - 19968: jis0212<<14 | 0x2B<<7 | 0x48, + 29896 - 19968: jis0212<<14 | 0x2B<<7 | 0x49, + 29897 - 19968: jis0212<<14 | 0x2B<<7 | 0x4A, + 29898 - 19968: jis0208<<14 | 0x3F<<7 | 0x5A, + 29900 - 19968: jis0212<<14 | 0x2B<<7 | 0x4B, + 29903 - 19968: jis0208<<14 | 0x3F<<7 | 0x5B, + 29904 - 19968: jis0212<<14 | 0x2B<<7 | 0x4C, + 29907 - 19968: jis0212<<14 | 0x2B<<7 | 0x4D, + 29908 - 19968: jis0208<<14 | 0x3F<<7 | 0x5C, + 29912 - 19968: jis0212<<14 | 0x2B<<7 | 0x4E, + 29914 - 19968: jis0212<<14 | 0x2B<<7 | 0x4F, + 29915 - 19968: jis0212<<14 | 0x2B<<7 | 0x50, + 29916 - 19968: jis0208<<14 | 0x10<<7 | 0x1A, + 29918 - 19968: jis0212<<14 | 0x2B<<7 | 0x51, + 29919 - 19968: jis0212<<14 | 0x2B<<7 | 0x52, + 29920 - 19968: jis0208<<14 | 0x40<<7 | 0x00, + 29922 - 19968: jis0208<<14 | 0x28<<7 | 0x1A, + 29923 - 19968: jis0208<<14 | 0x40<<7 | 0x01, + 29924 - 19968: jis0212<<14 | 0x2B<<7 | 0x53, + 29926 - 19968: jis0208<<14 | 0x13<<7 | 0x03, + 29927 - 19968: jis0208<<14 | 0x40<<7 | 0x02, + 29928 - 19968: jis0212<<14 | 0x2B<<7 | 0x54, + 29929 - 19968: jis0208<<14 | 0x40<<7 | 0x03, + 29930 - 19968: jis0212<<14 | 0x2B<<7 | 0x55, + 29931 - 19968: jis0212<<14 | 0x2B<<7 | 0x56, + 29934 - 19968: jis0208<<14 | 0x40<<7 | 0x04, + 29935 - 19968: jis0212<<14 | 0x2B<<7 | 0x57, + 29936 - 19968: jis0208<<14 | 0x40<<7 | 0x06, + 29937 - 19968: jis0208<<14 | 0x40<<7 | 0x07, + 29938 - 19968: jis0208<<14 | 0x40<<7 | 0x05, + 29940 - 19968: jis0212<<14 | 0x2B<<7 | 0x58, + 29942 - 19968: jis0208<<14 | 0x28<<7 | 0x32, + 29943 - 19968: jis0208<<14 | 0x40<<7 | 0x09, + 29944 - 19968: jis0208<<14 | 0x40<<7 | 0x08, + 29946 - 19968: jis0212<<14 | 0x2B<<7 | 0x59, + 29947 - 19968: jis0212<<14 | 0x2B<<7 | 0x5A, + 29948 - 19968: jis0212<<14 | 0x2B<<7 | 0x5B, + 29951 - 19968: jis0212<<14 | 0x2B<<7 | 0x5C, + 29953 - 19968: jis0208<<14 | 0x5A<<7 | 0x12, + 29955 - 19968: jis0208<<14 | 0x40<<7 | 0x0B, + 29956 - 19968: jis0208<<14 | 0x40<<7 | 0x0A, + 29957 - 19968: jis0208<<14 | 0x40<<7 | 0x0C, + 29958 - 19968: jis0212<<14 | 0x2B<<7 | 0x5D, + 29964 - 19968: jis0208<<14 | 0x40<<7 | 0x0D, + 29965 - 19968: jis0208<<14 | 0x40<<7 | 0x0F, + 29966 - 19968: jis0208<<14 | 0x40<<7 | 0x0E, + 29969 - 19968: jis0208<<14 | 0x18<<7 | 0x58, + 29970 - 19968: jis0212<<14 | 0x2C<<7 | 0x00, + 29971 - 19968: jis0208<<14 | 0x40<<7 | 0x11, + 29973 - 19968: jis0208<<14 | 0x40<<7 | 0x10, + 29974 - 19968: jis0212<<14 | 0x2C<<7 | 0x01, + 29975 - 19968: jis0212<<14 | 0x2C<<7 | 0x02, + 29976 - 19968: jis0208<<14 | 0x13<<7 | 0x24, + 29978 - 19968: jis0208<<14 | 0x1E<<7 | 0x32, + 29980 - 19968: jis0208<<14 | 0x24<<7 | 0x1B, + 29982 - 19968: jis0208<<14 | 0x40<<7 | 0x12, + 29983 - 19968: jis0208<<14 | 0x1F<<7 | 0x17, + 29984 - 19968: jis0212<<14 | 0x2C<<7 | 0x03, + 29985 - 19968: jis0212<<14 | 0x2C<<7 | 0x04, + 29987 - 19968: jis0208<<14 | 0x1A<<7 | 0x19, + 29988 - 19968: jis0212<<14 | 0x2C<<7 | 0x05, + 29989 - 19968: jis0208<<14 | 0x10<<7 | 0x58, + 29990 - 19968: jis0208<<14 | 0x40<<7 | 0x13, + 29991 - 19968: jis0212<<14 | 0x2C<<7 | 0x06, + 29992 - 19968: jis0208<<14 | 0x2C<<7 | 0x30, + 29993 - 19968: jis0212<<14 | 0x2C<<7 | 0x07, + 29994 - 19968: jis0212<<14 | 0x2C<<7 | 0x08, + 29995 - 19968: jis0208<<14 | 0x29<<7 | 0x42, + 29996 - 19968: jis0208<<14 | 0x40<<7 | 0x14, + 29999 - 19968: jis0208<<14 | 0x58<<7 | 0x4B, + 30000 - 19968: jis0208<<14 | 0x24<<7 | 0x23, + 30001 - 19968: jis0208<<14 | 0x2C<<7 | 0x12, + 30002 - 19968: jis0208<<14 | 0x18<<7 | 0x22, + 30003 - 19968: jis0208<<14 | 0x1E<<7 | 0x1C, + 30006 - 19968: jis0212<<14 | 0x2C<<7 | 0x0A, + 30007 - 19968: jis0208<<14 | 0x22<<7 | 0x2A, + 30008 - 19968: jis0208<<14 | 0x31<<7 | 0x13, + 30009 - 19968: jis0212<<14 | 0x2C<<7 | 0x0B, + 30010 - 19968: jis0208<<14 | 0x23<<7 | 0x0D, + 30011 - 19968: jis0208<<14 | 0x11<<7 | 0x47, + 30012 - 19968: jis0208<<14 | 0x40<<7 | 0x15, + 30013 - 19968: jis0212<<14 | 0x2C<<7 | 0x0C, + 30014 - 19968: jis0212<<14 | 0x2C<<7 | 0x0D, + 30015 - 19968: jis0212<<14 | 0x2C<<7 | 0x0E, + 30016 - 19968: jis0212<<14 | 0x2C<<7 | 0x0F, + 30019 - 19968: jis0212<<14 | 0x2C<<7 | 0x10, + 30020 - 19968: jis0208<<14 | 0x40<<7 | 0x16, + 30022 - 19968: jis0208<<14 | 0x40<<7 | 0x1B, + 30023 - 19968: jis0212<<14 | 0x2C<<7 | 0x11, + 30024 - 19968: jis0212<<14 | 0x2C<<7 | 0x12, + 30025 - 19968: jis0208<<14 | 0x40<<7 | 0x19, + 30026 - 19968: jis0208<<14 | 0x40<<7 | 0x18, + 30027 - 19968: jis0208<<14 | 0x39<<7 | 0x21, + 30028 - 19968: jis0208<<14 | 0x12<<7 | 0x05, + 30029 - 19968: jis0208<<14 | 0x40<<7 | 0x17, + 30030 - 19968: jis0212<<14 | 0x2C<<7 | 0x13, + 30031 - 19968: jis0208<<14 | 0x0F<<7 | 0x39, + 30032 - 19968: jis0212<<14 | 0x2C<<7 | 0x14, + 30033 - 19968: jis0208<<14 | 0x27<<7 | 0x09, + 30034 - 19968: jis0212<<14 | 0x2C<<7 | 0x15, + 30036 - 19968: jis0208<<14 | 0x27<<7 | 0x29, + 30039 - 19968: jis0212<<14 | 0x2C<<7 | 0x16, + 30041 - 19968: jis0208<<14 | 0x2D<<7 | 0x10, + 30042 - 19968: jis0208<<14 | 0x40<<7 | 0x1C, + 30043 - 19968: jis0208<<14 | 0x40<<7 | 0x1A, + 30044 - 19968: jis0208<<14 | 0x22<<7 | 0x3B, + 30045 - 19968: jis0208<<14 | 0x1F<<7 | 0x05, + 30046 - 19968: jis0212<<14 | 0x2C<<7 | 0x17, + 30047 - 19968: jis0212<<14 | 0x2C<<7 | 0x18, + 30048 - 19968: jis0208<<14 | 0x27<<7 | 0x0A, + 30049 - 19968: jis0212<<14 | 0x2C<<7 | 0x19, + 30050 - 19968: jis0208<<14 | 0x28<<7 | 0x0C, + 30052 - 19968: jis0208<<14 | 0x40<<7 | 0x1E, + 30053 - 19968: jis0208<<14 | 0x2D<<7 | 0x0B, + 30054 - 19968: jis0208<<14 | 0x16<<7 | 0x2C, + 30055 - 19968: jis0208<<14 | 0x40<<7 | 0x1F, + 30057 - 19968: jis0208<<14 | 0x40<<7 | 0x1D, + 30058 - 19968: jis0208<<14 | 0x27<<7 | 0x35, + 30059 - 19968: jis0208<<14 | 0x40<<7 | 0x20, + 30061 - 19968: jis0208<<14 | 0x40<<7 | 0x21, + 30063 - 19968: jis0208<<14 | 0x5A<<7 | 0x13, + 30064 - 19968: jis0208<<14 | 0x0F<<7 | 0x3A, + 30065 - 19968: jis0212<<14 | 0x2C<<7 | 0x1B, + 30067 - 19968: jis0208<<14 | 0x1D<<7 | 0x55, + 30068 - 19968: jis0208<<14 | 0x40<<7 | 0x26, + 30070 - 19968: jis0208<<14 | 0x40<<7 | 0x23, + 30071 - 19968: jis0208<<14 | 0x25<<7 | 0x4C, + 30072 - 19968: jis0208<<14 | 0x40<<7 | 0x22, + 30073 - 19968: jis0212<<14 | 0x2C<<7 | 0x1C, + 30074 - 19968: jis0212<<14 | 0x2C<<7 | 0x1D, + 30075 - 19968: jis0212<<14 | 0x2C<<7 | 0x1E, + 30076 - 19968: jis0212<<14 | 0x2C<<7 | 0x1F, + 30077 - 19968: jis0212<<14 | 0x2C<<7 | 0x20, + 30078 - 19968: jis0212<<14 | 0x2C<<7 | 0x21, + 30079 - 19968: jis0208<<14 | 0x14<<7 | 0x05, + 30081 - 19968: jis0212<<14 | 0x2C<<7 | 0x22, + 30082 - 19968: jis0208<<14 | 0x40<<7 | 0x29, + 30085 - 19968: jis0212<<14 | 0x2C<<7 | 0x23, + 30086 - 19968: jis0208<<14 | 0x40<<7 | 0x24, + 30087 - 19968: jis0208<<14 | 0x40<<7 | 0x25, + 30089 - 19968: jis0208<<14 | 0x40<<7 | 0x28, + 30090 - 19968: jis0208<<14 | 0x40<<7 | 0x27, + 30091 - 19968: jis0208<<14 | 0x28<<7 | 0x04, + 30094 - 19968: jis0208<<14 | 0x20<<7 | 0x21, + 30095 - 19968: jis0208<<14 | 0x20<<7 | 0x20, + 30096 - 19968: jis0212<<14 | 0x2C<<7 | 0x24, + 30097 - 19968: jis0208<<14 | 0x14<<7 | 0x1E, + 30098 - 19968: jis0212<<14 | 0x2C<<7 | 0x25, + 30099 - 19968: jis0212<<14 | 0x2C<<7 | 0x26, + 30100 - 19968: jis0208<<14 | 0x40<<7 | 0x2A, + 30101 - 19968: jis0212<<14 | 0x2C<<7 | 0x27, + 30105 - 19968: jis0212<<14 | 0x2C<<7 | 0x28, + 30106 - 19968: jis0208<<14 | 0x40<<7 | 0x2B, + 30108 - 19968: jis0212<<14 | 0x2C<<7 | 0x29, + 30109 - 19968: jis0208<<14 | 0x40<<7 | 0x2C, + 30114 - 19968: jis0212<<14 | 0x2C<<7 | 0x2A, + 30115 - 19968: jis0208<<14 | 0x40<<7 | 0x2E, + 30116 - 19968: jis0212<<14 | 0x2C<<7 | 0x2B, + 30117 - 19968: jis0208<<14 | 0x40<<7 | 0x2D, + 30123 - 19968: jis0208<<14 | 0x10<<7 | 0x35, + 30129 - 19968: jis0208<<14 | 0x40<<7 | 0x36, + 30130 - 19968: jis0208<<14 | 0x27<<7 | 0x47, + 30131 - 19968: jis0208<<14 | 0x40<<7 | 0x30, + 30132 - 19968: jis0212<<14 | 0x2C<<7 | 0x2C, + 30133 - 19968: jis0208<<14 | 0x40<<7 | 0x32, + 30136 - 19968: jis0208<<14 | 0x40<<7 | 0x34, + 30137 - 19968: jis0208<<14 | 0x1E<<7 | 0x1D, + 30138 - 19968: jis0212<<14 | 0x2C<<7 | 0x2D, + 30140 - 19968: jis0208<<14 | 0x40<<7 | 0x35, + 30141 - 19968: jis0208<<14 | 0x40<<7 | 0x33, + 30142 - 19968: jis0208<<14 | 0x1B<<7 | 0x1F, + 30143 - 19968: jis0212<<14 | 0x2C<<7 | 0x2E, + 30144 - 19968: jis0212<<14 | 0x2C<<7 | 0x2F, + 30145 - 19968: jis0212<<14 | 0x2C<<7 | 0x30, + 30146 - 19968: jis0208<<14 | 0x40<<7 | 0x2F, + 30147 - 19968: jis0208<<14 | 0x40<<7 | 0x31, + 30148 - 19968: jis0212<<14 | 0x2C<<7 | 0x31, + 30149 - 19968: jis0208<<14 | 0x28<<7 | 0x21, + 30150 - 19968: jis0212<<14 | 0x2C<<7 | 0x32, + 30151 - 19968: jis0208<<14 | 0x1D<<7 | 0x28, + 30154 - 19968: jis0208<<14 | 0x40<<7 | 0x38, + 30156 - 19968: jis0212<<14 | 0x2C<<7 | 0x33, + 30157 - 19968: jis0208<<14 | 0x40<<7 | 0x37, + 30158 - 19968: jis0212<<14 | 0x2C<<7 | 0x34, + 30159 - 19968: jis0212<<14 | 0x2C<<7 | 0x35, + 30162 - 19968: jis0208<<14 | 0x40<<7 | 0x39, + 30164 - 19968: jis0208<<14 | 0x1B<<7 | 0x05, + 30165 - 19968: jis0208<<14 | 0x19<<7 | 0x0E, + 30167 - 19968: jis0212<<14 | 0x2C<<7 | 0x36, + 30168 - 19968: jis0208<<14 | 0x24<<7 | 0x56, + 30169 - 19968: jis0208<<14 | 0x40<<7 | 0x3A, + 30171 - 19968: jis0208<<14 | 0x23<<7 | 0x2A, + 30172 - 19968: jis0212<<14 | 0x2C<<7 | 0x37, + 30174 - 19968: jis0208<<14 | 0x40<<7 | 0x3C, + 30175 - 19968: jis0212<<14 | 0x2C<<7 | 0x38, + 30176 - 19968: jis0212<<14 | 0x2C<<7 | 0x39, + 30177 - 19968: jis0212<<14 | 0x2C<<7 | 0x3A, + 30178 - 19968: jis0208<<14 | 0x2D<<7 | 0x00, + 30179 - 19968: jis0208<<14 | 0x40<<7 | 0x3B, + 30180 - 19968: jis0212<<14 | 0x2C<<7 | 0x3B, + 30183 - 19968: jis0212<<14 | 0x2C<<7 | 0x3C, + 30185 - 19968: jis0208<<14 | 0x20<<7 | 0x48, + 30188 - 19968: jis0212<<14 | 0x2C<<7 | 0x3D, + 30190 - 19968: jis0212<<14 | 0x2C<<7 | 0x3E, + 30191 - 19968: jis0212<<14 | 0x2C<<7 | 0x3F, + 30192 - 19968: jis0208<<14 | 0x40<<7 | 0x41, + 30193 - 19968: jis0212<<14 | 0x2C<<7 | 0x40, + 30194 - 19968: jis0208<<14 | 0x40<<7 | 0x43, + 30195 - 19968: jis0208<<14 | 0x40<<7 | 0x44, + 30196 - 19968: jis0208<<14 | 0x22<<7 | 0x33, + 30201 - 19968: jis0212<<14 | 0x2C<<7 | 0x41, + 30202 - 19968: jis0208<<14 | 0x40<<7 | 0x42, + 30204 - 19968: jis0208<<14 | 0x40<<7 | 0x3F, + 30206 - 19968: jis0208<<14 | 0x40<<7 | 0x3D, + 30207 - 19968: jis0208<<14 | 0x40<<7 | 0x3E, + 30208 - 19968: jis0212<<14 | 0x2C<<7 | 0x42, + 30209 - 19968: jis0208<<14 | 0x40<<7 | 0x40, + 30210 - 19968: jis0212<<14 | 0x2C<<7 | 0x43, + 30211 - 19968: jis0212<<14 | 0x2C<<7 | 0x44, + 30212 - 19968: jis0212<<14 | 0x2C<<7 | 0x45, + 30215 - 19968: jis0212<<14 | 0x2C<<7 | 0x46, + 30216 - 19968: jis0212<<14 | 0x2C<<7 | 0x47, + 30217 - 19968: jis0208<<14 | 0x40<<7 | 0x47, + 30218 - 19968: jis0212<<14 | 0x2C<<7 | 0x48, + 30219 - 19968: jis0208<<14 | 0x40<<7 | 0x45, + 30220 - 19968: jis0212<<14 | 0x2C<<7 | 0x49, + 30221 - 19968: jis0208<<14 | 0x40<<7 | 0x46, + 30223 - 19968: jis0212<<14 | 0x2C<<7 | 0x4A, + 30226 - 19968: jis0212<<14 | 0x2C<<7 | 0x4B, + 30227 - 19968: jis0212<<14 | 0x2C<<7 | 0x4C, + 30229 - 19968: jis0212<<14 | 0x2C<<7 | 0x4D, + 30230 - 19968: jis0212<<14 | 0x2C<<7 | 0x4E, + 30233 - 19968: jis0212<<14 | 0x2C<<7 | 0x4F, + 30235 - 19968: jis0212<<14 | 0x2C<<7 | 0x50, + 30236 - 19968: jis0212<<14 | 0x2C<<7 | 0x51, + 30237 - 19968: jis0212<<14 | 0x2C<<7 | 0x52, + 30238 - 19968: jis0212<<14 | 0x2C<<7 | 0x53, + 30239 - 19968: jis0208<<14 | 0x40<<7 | 0x48, + 30240 - 19968: jis0208<<14 | 0x40<<7 | 0x4A, + 30241 - 19968: jis0208<<14 | 0x40<<7 | 0x4B, + 30242 - 19968: jis0208<<14 | 0x40<<7 | 0x4C, + 30243 - 19968: jis0212<<14 | 0x2C<<7 | 0x54, + 30244 - 19968: jis0208<<14 | 0x40<<7 | 0x4D, + 30245 - 19968: jis0212<<14 | 0x2C<<7 | 0x55, + 30246 - 19968: jis0212<<14 | 0x2C<<7 | 0x56, + 30247 - 19968: jis0208<<14 | 0x40<<7 | 0x49, + 30249 - 19968: jis0212<<14 | 0x2C<<7 | 0x57, + 30253 - 19968: jis0212<<14 | 0x2C<<7 | 0x58, + 30256 - 19968: jis0208<<14 | 0x40<<7 | 0x4F, + 30258 - 19968: jis0212<<14 | 0x2C<<7 | 0x59, + 30259 - 19968: jis0212<<14 | 0x2C<<7 | 0x5A, + 30260 - 19968: jis0208<<14 | 0x40<<7 | 0x4E, + 30261 - 19968: jis0212<<14 | 0x2C<<7 | 0x5B, + 30264 - 19968: jis0212<<14 | 0x2C<<7 | 0x5C, + 30265 - 19968: jis0212<<14 | 0x2C<<7 | 0x5D, + 30266 - 19968: jis0212<<14 | 0x2D<<7 | 0x00, + 30267 - 19968: jis0208<<14 | 0x40<<7 | 0x50, + 30268 - 19968: jis0212<<14 | 0x2D<<7 | 0x01, + 30272 - 19968: jis0212<<14 | 0x2D<<7 | 0x03, + 30273 - 19968: jis0212<<14 | 0x2D<<7 | 0x04, + 30274 - 19968: jis0208<<14 | 0x2D<<7 | 0x24, + 30275 - 19968: jis0212<<14 | 0x2D<<7 | 0x05, + 30276 - 19968: jis0212<<14 | 0x2D<<7 | 0x06, + 30277 - 19968: jis0212<<14 | 0x2D<<7 | 0x07, + 30278 - 19968: jis0208<<14 | 0x40<<7 | 0x53, + 30279 - 19968: jis0208<<14 | 0x40<<7 | 0x51, + 30280 - 19968: jis0208<<14 | 0x40<<7 | 0x52, + 30281 - 19968: jis0212<<14 | 0x2D<<7 | 0x08, + 30282 - 19968: jis0212<<14 | 0x2D<<7 | 0x02, + 30283 - 19968: jis0212<<14 | 0x2D<<7 | 0x09, + 30284 - 19968: jis0208<<14 | 0x13<<7 | 0x41, + 30290 - 19968: jis0208<<14 | 0x2B<<7 | 0x5D, + 30293 - 19968: jis0212<<14 | 0x2D<<7 | 0x0A, + 30294 - 19968: jis0208<<14 | 0x29<<7 | 0x29, + 30296 - 19968: jis0208<<14 | 0x40<<7 | 0x55, + 30297 - 19968: jis0212<<14 | 0x2D<<7 | 0x0B, + 30300 - 19968: jis0208<<14 | 0x40<<7 | 0x54, + 30303 - 19968: jis0212<<14 | 0x2D<<7 | 0x0C, + 30305 - 19968: jis0208<<14 | 0x40<<7 | 0x56, + 30306 - 19968: jis0208<<14 | 0x40<<7 | 0x57, + 30308 - 19968: jis0212<<14 | 0x2D<<7 | 0x0D, + 30309 - 19968: jis0212<<14 | 0x2D<<7 | 0x0E, + 30311 - 19968: jis0208<<14 | 0x40<<7 | 0x5B, + 30312 - 19968: jis0208<<14 | 0x40<<7 | 0x58, + 30313 - 19968: jis0208<<14 | 0x40<<7 | 0x59, + 30314 - 19968: jis0208<<14 | 0x40<<7 | 0x5A, + 30316 - 19968: jis0208<<14 | 0x40<<7 | 0x5C, + 30317 - 19968: jis0212<<14 | 0x2D<<7 | 0x0F, + 30318 - 19968: jis0212<<14 | 0x2D<<7 | 0x10, + 30319 - 19968: jis0212<<14 | 0x2D<<7 | 0x11, + 30320 - 19968: jis0208<<14 | 0x40<<7 | 0x5D, + 30321 - 19968: jis0212<<14 | 0x2D<<7 | 0x12, + 30322 - 19968: jis0208<<14 | 0x41<<7 | 0x00, + 30324 - 19968: jis0212<<14 | 0x2D<<7 | 0x13, + 30326 - 19968: jis0208<<14 | 0x41<<7 | 0x01, + 30328 - 19968: jis0208<<14 | 0x41<<7 | 0x02, + 30330 - 19968: jis0208<<14 | 0x27<<7 | 0x0E, + 30331 - 19968: jis0208<<14 | 0x24<<7 | 0x2F, + 30332 - 19968: jis0208<<14 | 0x41<<7 | 0x03, + 30333 - 19968: jis0208<<14 | 0x26<<7 | 0x51, + 30334 - 19968: jis0208<<14 | 0x28<<7 | 0x13, + 30336 - 19968: jis0208<<14 | 0x41<<7 | 0x04, + 30337 - 19968: jis0212<<14 | 0x2D<<7 | 0x14, + 30338 - 19968: jis0208<<14 | 0x5A<<7 | 0x14, + 30339 - 19968: jis0208<<14 | 0x41<<7 | 0x05, + 30340 - 19968: jis0208<<14 | 0x24<<7 | 0x09, + 30341 - 19968: jis0212<<14 | 0x2D<<7 | 0x15, + 30342 - 19968: jis0208<<14 | 0x12<<7 | 0x06, + 30343 - 19968: jis0208<<14 | 0x18<<7 | 0x23, + 30344 - 19968: jis0208<<14 | 0x41<<7 | 0x06, + 30347 - 19968: jis0208<<14 | 0x41<<7 | 0x07, + 30348 - 19968: jis0212<<14 | 0x2D<<7 | 0x16, + 30349 - 19968: jis0212<<14 | 0x2D<<7 | 0x17, + 30350 - 19968: jis0208<<14 | 0x41<<7 | 0x08, + 30352 - 19968: jis0208<<14 | 0x1A<<7 | 0x08, + 30355 - 19968: jis0208<<14 | 0x41<<7 | 0x0A, + 30357 - 19968: jis0212<<14 | 0x2D<<7 | 0x18, + 30358 - 19968: jis0208<<14 | 0x41<<7 | 0x09, + 30361 - 19968: jis0208<<14 | 0x41<<7 | 0x0B, + 30362 - 19968: jis0208<<14 | 0x41<<7 | 0x0C, + 30363 - 19968: jis0208<<14 | 0x5A<<7 | 0x17, + 30364 - 19968: jis0208<<14 | 0x5A<<7 | 0x15, + 30365 - 19968: jis0212<<14 | 0x2D<<7 | 0x1B, + 30366 - 19968: jis0208<<14 | 0x5A<<7 | 0x16, + 30367 - 19968: jis0212<<14 | 0x2D<<7 | 0x1C, + 30368 - 19968: jis0212<<14 | 0x2D<<7 | 0x1D, + 30370 - 19968: jis0212<<14 | 0x2D<<7 | 0x1E, + 30371 - 19968: jis0212<<14 | 0x2D<<7 | 0x1F, + 30372 - 19968: jis0212<<14 | 0x2D<<7 | 0x20, + 30373 - 19968: jis0212<<14 | 0x2D<<7 | 0x21, + 30374 - 19968: jis0208<<14 | 0x5A<<7 | 0x18, + 30375 - 19968: jis0212<<14 | 0x2D<<7 | 0x23, + 30376 - 19968: jis0212<<14 | 0x2D<<7 | 0x24, + 30378 - 19968: jis0212<<14 | 0x2D<<7 | 0x25, + 30381 - 19968: jis0212<<14 | 0x2D<<7 | 0x26, + 30382 - 19968: jis0208<<14 | 0x27<<7 | 0x48, + 30384 - 19968: jis0208<<14 | 0x41<<7 | 0x0D, + 30388 - 19968: jis0208<<14 | 0x41<<7 | 0x0E, + 30391 - 19968: jis0208<<14 | 0x52<<7 | 0x48, + 30392 - 19968: jis0208<<14 | 0x41<<7 | 0x0F, + 30393 - 19968: jis0208<<14 | 0x41<<7 | 0x10, + 30394 - 19968: jis0208<<14 | 0x41<<7 | 0x11, + 30397 - 19968: jis0212<<14 | 0x2D<<7 | 0x27, + 30399 - 19968: jis0208<<14 | 0x1A<<7 | 0x0D, + 30401 - 19968: jis0212<<14 | 0x2D<<7 | 0x28, + 30402 - 19968: jis0208<<14 | 0x41<<7 | 0x12, + 30403 - 19968: jis0208<<14 | 0x26<<7 | 0x35, + 30405 - 19968: jis0212<<14 | 0x2D<<7 | 0x29, + 30406 - 19968: jis0208<<14 | 0x2A<<7 | 0x3E, + 30408 - 19968: jis0208<<14 | 0x10<<7 | 0x2D, + 30409 - 19968: jis0212<<14 | 0x2D<<7 | 0x2A, + 30410 - 19968: jis0208<<14 | 0x10<<7 | 0x36, + 30411 - 19968: jis0212<<14 | 0x2D<<7 | 0x2B, + 30412 - 19968: jis0212<<14 | 0x2D<<7 | 0x2C, + 30413 - 19968: jis0208<<14 | 0x41<<7 | 0x13, + 30414 - 19968: jis0212<<14 | 0x2D<<7 | 0x2D, + 30418 - 19968: jis0208<<14 | 0x41<<7 | 0x15, + 30420 - 19968: jis0212<<14 | 0x2D<<7 | 0x2E, + 30422 - 19968: jis0208<<14 | 0x41<<7 | 0x14, + 30423 - 19968: jis0208<<14 | 0x24<<7 | 0x4F, + 30425 - 19968: jis0212<<14 | 0x2D<<7 | 0x2F, + 30427 - 19968: jis0208<<14 | 0x1F<<7 | 0x18, + 30428 - 19968: jis0208<<14 | 0x3C<<7 | 0x18, + 30430 - 19968: jis0208<<14 | 0x41<<7 | 0x16, + 30431 - 19968: jis0208<<14 | 0x2B<<7 | 0x20, + 30432 - 19968: jis0212<<14 | 0x2D<<7 | 0x30, + 30433 - 19968: jis0208<<14 | 0x41<<7 | 0x17, + 30435 - 19968: jis0208<<14 | 0x13<<7 | 0x25, + 30436 - 19968: jis0208<<14 | 0x27<<7 | 0x36, + 30437 - 19968: jis0208<<14 | 0x41<<7 | 0x18, + 30438 - 19968: jis0212<<14 | 0x2D<<7 | 0x31, + 30439 - 19968: jis0208<<14 | 0x41<<7 | 0x19, + 30440 - 19968: jis0212<<14 | 0x2D<<7 | 0x32, + 30442 - 19968: jis0208<<14 | 0x41<<7 | 0x1A, + 30444 - 19968: jis0212<<14 | 0x2D<<7 | 0x33, + 30446 - 19968: jis0208<<14 | 0x2B<<7 | 0x3B, + 30448 - 19968: jis0212<<14 | 0x2D<<7 | 0x34, + 30449 - 19968: jis0212<<14 | 0x2D<<7 | 0x35, + 30450 - 19968: jis0208<<14 | 0x2B<<7 | 0x34, + 30452 - 19968: jis0208<<14 | 0x23<<7 | 0x1D, + 30454 - 19968: jis0212<<14 | 0x2D<<7 | 0x36, + 30456 - 19968: jis0208<<14 | 0x20<<7 | 0x49, + 30457 - 19968: jis0212<<14 | 0x2D<<7 | 0x37, + 30459 - 19968: jis0208<<14 | 0x41<<7 | 0x1C, + 30460 - 19968: jis0212<<14 | 0x2D<<7 | 0x38, + 30462 - 19968: jis0208<<14 | 0x1C<<7 | 0x41, + 30464 - 19968: jis0212<<14 | 0x2D<<7 | 0x39, + 30465 - 19968: jis0208<<14 | 0x1D<<7 | 0x29, + 30468 - 19968: jis0208<<14 | 0x41<<7 | 0x1F, + 30470 - 19968: jis0212<<14 | 0x2D<<7 | 0x3A, + 30471 - 19968: jis0208<<14 | 0x41<<7 | 0x1E, + 30472 - 19968: jis0208<<14 | 0x41<<7 | 0x1D, + 30473 - 19968: jis0208<<14 | 0x27<<7 | 0x5C, + 30474 - 19968: jis0212<<14 | 0x2D<<7 | 0x3B, + 30475 - 19968: jis0208<<14 | 0x13<<7 | 0x26, + 30476 - 19968: jis0208<<14 | 0x17<<7 | 0x08, + 30478 - 19968: jis0212<<14 | 0x2D<<7 | 0x3C, + 30482 - 19968: jis0212<<14 | 0x2D<<7 | 0x3D, + 30484 - 19968: jis0212<<14 | 0x2D<<7 | 0x3E, + 30485 - 19968: jis0212<<14 | 0x2D<<7 | 0x3F, + 30487 - 19968: jis0212<<14 | 0x2D<<7 | 0x40, + 30489 - 19968: jis0212<<14 | 0x2D<<7 | 0x41, + 30490 - 19968: jis0212<<14 | 0x2D<<7 | 0x42, + 30491 - 19968: jis0208<<14 | 0x41<<7 | 0x25, + 30492 - 19968: jis0212<<14 | 0x2D<<7 | 0x43, + 30494 - 19968: jis0208<<14 | 0x41<<7 | 0x22, + 30495 - 19968: jis0208<<14 | 0x1E<<7 | 0x1E, + 30496 - 19968: jis0208<<14 | 0x2B<<7 | 0x11, + 30498 - 19968: jis0212<<14 | 0x2D<<7 | 0x44, + 30500 - 19968: jis0208<<14 | 0x41<<7 | 0x21, + 30501 - 19968: jis0208<<14 | 0x41<<7 | 0x23, + 30502 - 19968: jis0208<<14 | 0x41<<7 | 0x24, + 30504 - 19968: jis0212<<14 | 0x2D<<7 | 0x45, + 30505 - 19968: jis0208<<14 | 0x41<<7 | 0x20, + 30509 - 19968: jis0212<<14 | 0x2D<<7 | 0x46, + 30510 - 19968: jis0212<<14 | 0x2D<<7 | 0x47, + 30511 - 19968: jis0212<<14 | 0x2D<<7 | 0x48, + 30516 - 19968: jis0212<<14 | 0x2D<<7 | 0x49, + 30517 - 19968: jis0212<<14 | 0x2D<<7 | 0x4A, + 30518 - 19968: jis0212<<14 | 0x2D<<7 | 0x4B, + 30519 - 19968: jis0208<<14 | 0x41<<7 | 0x26, + 30520 - 19968: jis0208<<14 | 0x41<<7 | 0x27, + 30521 - 19968: jis0212<<14 | 0x2D<<7 | 0x4C, + 30522 - 19968: jis0208<<14 | 0x23<<7 | 0x0E, + 30524 - 19968: jis0208<<14 | 0x13<<7 | 0x42, + 30525 - 19968: jis0212<<14 | 0x2D<<7 | 0x4D, + 30526 - 19968: jis0212<<14 | 0x2D<<7 | 0x4E, + 30528 - 19968: jis0208<<14 | 0x22<<7 | 0x44, + 30530 - 19968: jis0212<<14 | 0x2D<<7 | 0x4F, + 30533 - 19968: jis0212<<14 | 0x2D<<7 | 0x50, + 30534 - 19968: jis0208<<14 | 0x5A<<7 | 0x1A, + 30535 - 19968: jis0208<<14 | 0x41<<7 | 0x28, + 30538 - 19968: jis0212<<14 | 0x2D<<7 | 0x52, + 30541 - 19968: jis0212<<14 | 0x2D<<7 | 0x53, + 30542 - 19968: jis0212<<14 | 0x2D<<7 | 0x54, + 30543 - 19968: jis0212<<14 | 0x2D<<7 | 0x55, + 30546 - 19968: jis0212<<14 | 0x2D<<7 | 0x56, + 30550 - 19968: jis0212<<14 | 0x2D<<7 | 0x57, + 30551 - 19968: jis0212<<14 | 0x2D<<7 | 0x58, + 30554 - 19968: jis0208<<14 | 0x41<<7 | 0x29, + 30555 - 19968: jis0208<<14 | 0x41<<7 | 0x2C, + 30556 - 19968: jis0212<<14 | 0x2D<<7 | 0x59, + 30558 - 19968: jis0212<<14 | 0x2D<<7 | 0x5A, + 30559 - 19968: jis0212<<14 | 0x2D<<7 | 0x5B, + 30560 - 19968: jis0212<<14 | 0x2D<<7 | 0x5C, + 30561 - 19968: jis0208<<14 | 0x1E<<7 | 0x46, + 30562 - 19968: jis0212<<14 | 0x2D<<7 | 0x5D, + 30563 - 19968: jis0208<<14 | 0x25<<7 | 0x23, + 30564 - 19968: jis0212<<14 | 0x2E<<7 | 0x00, + 30565 - 19968: jis0208<<14 | 0x41<<7 | 0x2D, + 30566 - 19968: jis0208<<14 | 0x2A<<7 | 0x32, + 30567 - 19968: jis0212<<14 | 0x2E<<7 | 0x01, + 30568 - 19968: jis0208<<14 | 0x41<<7 | 0x2A, + 30570 - 19968: jis0212<<14 | 0x2E<<7 | 0x02, + 30571 - 19968: jis0208<<14 | 0x41<<7 | 0x2B, + 30572 - 19968: jis0212<<14 | 0x2E<<7 | 0x03, + 30576 - 19968: jis0212<<14 | 0x2E<<7 | 0x04, + 30578 - 19968: jis0212<<14 | 0x2E<<7 | 0x05, + 30579 - 19968: jis0212<<14 | 0x2E<<7 | 0x06, + 30580 - 19968: jis0212<<14 | 0x2E<<7 | 0x07, + 30585 - 19968: jis0208<<14 | 0x41<<7 | 0x30, + 30586 - 19968: jis0212<<14 | 0x2E<<7 | 0x08, + 30589 - 19968: jis0212<<14 | 0x2E<<7 | 0x09, + 30590 - 19968: jis0208<<14 | 0x41<<7 | 0x2F, + 30591 - 19968: jis0208<<14 | 0x41<<7 | 0x2E, + 30592 - 19968: jis0212<<14 | 0x2E<<7 | 0x0A, + 30596 - 19968: jis0212<<14 | 0x2E<<7 | 0x0B, + 30603 - 19968: jis0208<<14 | 0x41<<7 | 0x32, + 30604 - 19968: jis0212<<14 | 0x2E<<7 | 0x0C, + 30605 - 19968: jis0212<<14 | 0x2E<<7 | 0x0D, + 30606 - 19968: jis0208<<14 | 0x41<<7 | 0x31, + 30609 - 19968: jis0208<<14 | 0x41<<7 | 0x33, + 30612 - 19968: jis0212<<14 | 0x2E<<7 | 0x0E, + 30613 - 19968: jis0212<<14 | 0x2E<<7 | 0x0F, + 30614 - 19968: jis0212<<14 | 0x2E<<7 | 0x10, + 30618 - 19968: jis0212<<14 | 0x2E<<7 | 0x11, + 30622 - 19968: jis0208<<14 | 0x41<<7 | 0x35, + 30623 - 19968: jis0212<<14 | 0x2E<<7 | 0x12, + 30624 - 19968: jis0208<<14 | 0x41<<7 | 0x34, + 30626 - 19968: jis0212<<14 | 0x2E<<7 | 0x13, + 30629 - 19968: jis0208<<14 | 0x29<<7 | 0x2C, + 30631 - 19968: jis0212<<14 | 0x2E<<7 | 0x14, + 30634 - 19968: jis0212<<14 | 0x2E<<7 | 0x15, + 30636 - 19968: jis0208<<14 | 0x1C<<7 | 0x35, + 30637 - 19968: jis0208<<14 | 0x2D<<7 | 0x25, + 30638 - 19968: jis0212<<14 | 0x2E<<7 | 0x16, + 30639 - 19968: jis0212<<14 | 0x2E<<7 | 0x17, + 30640 - 19968: jis0208<<14 | 0x41<<7 | 0x36, + 30641 - 19968: jis0212<<14 | 0x2E<<7 | 0x18, + 30643 - 19968: jis0208<<14 | 0x25<<7 | 0x16, + 30645 - 19968: jis0212<<14 | 0x2E<<7 | 0x19, + 30646 - 19968: jis0208<<14 | 0x41<<7 | 0x37, + 30649 - 19968: jis0208<<14 | 0x41<<7 | 0x38, + 30651 - 19968: jis0208<<14 | 0x41<<7 | 0x3C, + 30652 - 19968: jis0208<<14 | 0x41<<7 | 0x3A, + 30653 - 19968: jis0208<<14 | 0x41<<7 | 0x3B, + 30654 - 19968: jis0212<<14 | 0x2E<<7 | 0x1A, + 30655 - 19968: jis0208<<14 | 0x41<<7 | 0x39, + 30659 - 19968: jis0212<<14 | 0x2E<<7 | 0x1B, + 30663 - 19968: jis0208<<14 | 0x41<<7 | 0x3D, + 30665 - 19968: jis0212<<14 | 0x2E<<7 | 0x1C, + 30669 - 19968: jis0208<<14 | 0x41<<7 | 0x3E, + 30673 - 19968: jis0212<<14 | 0x2E<<7 | 0x1D, + 30674 - 19968: jis0212<<14 | 0x2E<<7 | 0x1E, + 30677 - 19968: jis0212<<14 | 0x2E<<7 | 0x1F, + 30679 - 19968: jis0208<<14 | 0x41<<7 | 0x3F, + 30681 - 19968: jis0212<<14 | 0x2E<<7 | 0x20, + 30682 - 19968: jis0208<<14 | 0x41<<7 | 0x40, + 30683 - 19968: jis0208<<14 | 0x2B<<7 | 0x16, + 30684 - 19968: jis0208<<14 | 0x41<<7 | 0x41, + 30686 - 19968: jis0212<<14 | 0x2E<<7 | 0x21, + 30687 - 19968: jis0212<<14 | 0x2E<<7 | 0x22, + 30688 - 19968: jis0212<<14 | 0x2E<<7 | 0x23, + 30690 - 19968: jis0208<<14 | 0x2B<<7 | 0x4F, + 30691 - 19968: jis0208<<14 | 0x41<<7 | 0x42, + 30692 - 19968: jis0212<<14 | 0x2E<<7 | 0x24, + 30693 - 19968: jis0208<<14 | 0x22<<7 | 0x2D, + 30694 - 19968: jis0212<<14 | 0x2E<<7 | 0x25, + 30695 - 19968: jis0208<<14 | 0x26<<7 | 0x49, + 30697 - 19968: jis0208<<14 | 0x15<<7 | 0x4A, + 30698 - 19968: jis0212<<14 | 0x2E<<7 | 0x26, + 30700 - 19968: jis0212<<14 | 0x2E<<7 | 0x27, + 30701 - 19968: jis0208<<14 | 0x22<<7 | 0x1A, + 30702 - 19968: jis0208<<14 | 0x41<<7 | 0x43, + 30703 - 19968: jis0208<<14 | 0x15<<7 | 0x19, + 30704 - 19968: jis0212<<14 | 0x2E<<7 | 0x28, + 30705 - 19968: jis0212<<14 | 0x2E<<7 | 0x29, + 30707 - 19968: jis0208<<14 | 0x1F<<7 | 0x2F, + 30708 - 19968: jis0212<<14 | 0x2E<<7 | 0x2A, + 30712 - 19968: jis0212<<14 | 0x2E<<7 | 0x2B, + 30715 - 19968: jis0212<<14 | 0x2E<<7 | 0x2C, + 30716 - 19968: jis0208<<14 | 0x41<<7 | 0x44, + 30722 - 19968: jis0208<<14 | 0x19<<7 | 0x1C, + 30725 - 19968: jis0212<<14 | 0x2E<<7 | 0x2D, + 30726 - 19968: jis0212<<14 | 0x2E<<7 | 0x2E, + 30729 - 19968: jis0212<<14 | 0x2E<<7 | 0x2F, + 30732 - 19968: jis0208<<14 | 0x41<<7 | 0x45, + 30733 - 19968: jis0212<<14 | 0x2E<<7 | 0x30, + 30734 - 19968: jis0212<<14 | 0x2E<<7 | 0x31, + 30737 - 19968: jis0212<<14 | 0x2E<<7 | 0x32, + 30738 - 19968: jis0208<<14 | 0x41<<7 | 0x46, + 30740 - 19968: jis0208<<14 | 0x17<<7 | 0x05, + 30741 - 19968: jis0208<<14 | 0x19<<7 | 0x34, + 30749 - 19968: jis0212<<14 | 0x2E<<7 | 0x33, + 30752 - 19968: jis0208<<14 | 0x41<<7 | 0x48, + 30753 - 19968: jis0208<<14 | 0x5A<<7 | 0x1C, + 30754 - 19968: jis0212<<14 | 0x2E<<7 | 0x35, + 30755 - 19968: jis0212<<14 | 0x2E<<7 | 0x36, + 30757 - 19968: jis0208<<14 | 0x24<<7 | 0x35, + 30758 - 19968: jis0208<<14 | 0x19<<7 | 0x35, + 30759 - 19968: jis0208<<14 | 0x14<<7 | 0x2D, + 30765 - 19968: jis0212<<14 | 0x2E<<7 | 0x37, + 30766 - 19968: jis0212<<14 | 0x2E<<7 | 0x38, + 30768 - 19968: jis0212<<14 | 0x2E<<7 | 0x39, + 30770 - 19968: jis0208<<14 | 0x2A<<7 | 0x03, + 30772 - 19968: jis0208<<14 | 0x26<<7 | 0x2A, + 30773 - 19968: jis0212<<14 | 0x2E<<7 | 0x3A, + 30775 - 19968: jis0212<<14 | 0x2E<<7 | 0x3B, + 30778 - 19968: jis0208<<14 | 0x24<<7 | 0x36, + 30783 - 19968: jis0208<<14 | 0x18<<7 | 0x3B, + 30787 - 19968: jis0212<<14 | 0x2E<<7 | 0x3C, + 30788 - 19968: jis0212<<14 | 0x2E<<7 | 0x3D, + 30789 - 19968: jis0208<<14 | 0x41<<7 | 0x4A, + 30791 - 19968: jis0212<<14 | 0x2E<<7 | 0x3E, + 30792 - 19968: jis0212<<14 | 0x2E<<7 | 0x3F, + 30796 - 19968: jis0212<<14 | 0x2E<<7 | 0x40, + 30798 - 19968: jis0208<<14 | 0x5A<<7 | 0x1D, + 30802 - 19968: jis0212<<14 | 0x2E<<7 | 0x42, + 30812 - 19968: jis0212<<14 | 0x2E<<7 | 0x43, + 30813 - 19968: jis0208<<14 | 0x1D<<7 | 0x2A, + 30814 - 19968: jis0212<<14 | 0x2E<<7 | 0x44, + 30816 - 19968: jis0212<<14 | 0x2E<<7 | 0x45, + 30817 - 19968: jis0212<<14 | 0x2E<<7 | 0x46, + 30819 - 19968: jis0212<<14 | 0x2E<<7 | 0x47, + 30820 - 19968: jis0208<<14 | 0x5A<<7 | 0x1E, + 30824 - 19968: jis0212<<14 | 0x2E<<7 | 0x49, + 30826 - 19968: jis0212<<14 | 0x2E<<7 | 0x4A, + 30827 - 19968: jis0208<<14 | 0x2D<<7 | 0x11, + 30828 - 19968: jis0208<<14 | 0x18<<7 | 0x24, + 30830 - 19968: jis0212<<14 | 0x2E<<7 | 0x4B, + 30831 - 19968: jis0208<<14 | 0x17<<7 | 0x06, + 30834 - 19968: jis0208<<14 | 0x27<<7 | 0x02, + 30836 - 19968: jis0208<<14 | 0x41<<7 | 0x4C, + 30842 - 19968: jis0208<<14 | 0x5A<<7 | 0x1F, + 30844 - 19968: jis0208<<14 | 0x41<<7 | 0x4E, + 30846 - 19968: jis0212<<14 | 0x2E<<7 | 0x4D, + 30849 - 19968: jis0208<<14 | 0x17<<7 | 0x4A, + 30854 - 19968: jis0208<<14 | 0x41<<7 | 0x4D, + 30855 - 19968: jis0208<<14 | 0x23<<7 | 0x55, + 30858 - 19968: jis0212<<14 | 0x2E<<7 | 0x4E, + 30860 - 19968: jis0208<<14 | 0x41<<7 | 0x50, + 30861 - 19968: jis0208<<14 | 0x12<<7 | 0x16, + 30862 - 19968: jis0208<<14 | 0x41<<7 | 0x4B, + 30863 - 19968: jis0212<<14 | 0x2E<<7 | 0x4F, + 30865 - 19968: jis0208<<14 | 0x27<<7 | 0x49, + 30867 - 19968: jis0208<<14 | 0x10<<7 | 0x0F, + 30868 - 19968: jis0212<<14 | 0x2E<<7 | 0x50, + 30869 - 19968: jis0208<<14 | 0x19<<7 | 0x4B, + 30871 - 19968: jis0208<<14 | 0x2E<<7 | 0x31, + 30872 - 19968: jis0212<<14 | 0x2E<<7 | 0x51, + 30874 - 19968: jis0208<<14 | 0x41<<7 | 0x4F, + 30877 - 19968: jis0212<<14 | 0x2E<<7 | 0x53, + 30878 - 19968: jis0212<<14 | 0x2E<<7 | 0x54, + 30879 - 19968: jis0212<<14 | 0x2E<<7 | 0x55, + 30881 - 19968: jis0212<<14 | 0x2E<<7 | 0x52, + 30883 - 19968: jis0208<<14 | 0x41<<7 | 0x51, + 30884 - 19968: jis0212<<14 | 0x2E<<7 | 0x56, + 30887 - 19968: jis0208<<14 | 0x29<<7 | 0x2A, + 30888 - 19968: jis0212<<14 | 0x2E<<7 | 0x57, + 30889 - 19968: jis0208<<14 | 0x1F<<7 | 0x38, + 30890 - 19968: jis0208<<14 | 0x41<<7 | 0x53, + 30892 - 19968: jis0212<<14 | 0x2E<<7 | 0x58, + 30893 - 19968: jis0212<<14 | 0x2E<<7 | 0x59, + 30895 - 19968: jis0208<<14 | 0x41<<7 | 0x54, + 30896 - 19968: jis0212<<14 | 0x2E<<7 | 0x5A, + 30897 - 19968: jis0212<<14 | 0x2E<<7 | 0x5B, + 30898 - 19968: jis0212<<14 | 0x2E<<7 | 0x5C, + 30899 - 19968: jis0212<<14 | 0x2E<<7 | 0x5D, + 30901 - 19968: jis0208<<14 | 0x41<<7 | 0x52, + 30906 - 19968: jis0208<<14 | 0x12<<7 | 0x2D, + 30907 - 19968: jis0212<<14 | 0x2F<<7 | 0x00, + 30908 - 19968: jis0208<<14 | 0x41<<7 | 0x5A, + 30909 - 19968: jis0212<<14 | 0x2F<<7 | 0x01, + 30910 - 19968: jis0208<<14 | 0x41<<7 | 0x59, + 30911 - 19968: jis0212<<14 | 0x2F<<7 | 0x02, + 30913 - 19968: jis0208<<14 | 0x1B<<7 | 0x06, + 30917 - 19968: jis0208<<14 | 0x41<<7 | 0x5B, + 30918 - 19968: jis0208<<14 | 0x41<<7 | 0x56, + 30919 - 19968: jis0212<<14 | 0x2F<<7 | 0x03, + 30920 - 19968: jis0212<<14 | 0x2F<<7 | 0x04, + 30921 - 19968: jis0212<<14 | 0x2F<<7 | 0x05, + 30922 - 19968: jis0208<<14 | 0x41<<7 | 0x5C, + 30923 - 19968: jis0208<<14 | 0x41<<7 | 0x57, + 30924 - 19968: jis0212<<14 | 0x2F<<7 | 0x06, + 30926 - 19968: jis0212<<14 | 0x2F<<7 | 0x07, + 30928 - 19968: jis0208<<14 | 0x27<<7 | 0x37, + 30929 - 19968: jis0208<<14 | 0x41<<7 | 0x55, + 30930 - 19968: jis0212<<14 | 0x2F<<7 | 0x08, + 30931 - 19968: jis0212<<14 | 0x2F<<7 | 0x09, + 30932 - 19968: jis0208<<14 | 0x41<<7 | 0x58, + 30933 - 19968: jis0212<<14 | 0x2F<<7 | 0x0A, + 30934 - 19968: jis0212<<14 | 0x2F<<7 | 0x0B, + 30938 - 19968: jis0208<<14 | 0x42<<7 | 0x01, + 30939 - 19968: jis0212<<14 | 0x2F<<7 | 0x0D, + 30943 - 19968: jis0212<<14 | 0x2F<<7 | 0x0E, + 30944 - 19968: jis0212<<14 | 0x2F<<7 | 0x0F, + 30945 - 19968: jis0212<<14 | 0x2F<<7 | 0x10, + 30948 - 19968: jis0212<<14 | 0x2F<<7 | 0x0C, + 30950 - 19968: jis0212<<14 | 0x2F<<7 | 0x11, + 30951 - 19968: jis0208<<14 | 0x42<<7 | 0x00, + 30952 - 19968: jis0208<<14 | 0x2A<<7 | 0x40, + 30954 - 19968: jis0212<<14 | 0x2F<<7 | 0x12, + 30956 - 19968: jis0208<<14 | 0x41<<7 | 0x5D, + 30959 - 19968: jis0208<<14 | 0x0F<<7 | 0x4A, + 30962 - 19968: jis0212<<14 | 0x2F<<7 | 0x13, + 30963 - 19968: jis0212<<14 | 0x2F<<7 | 0x14, + 30964 - 19968: jis0208<<14 | 0x42<<7 | 0x03, + 30966 - 19968: jis0212<<14 | 0x2F<<7 | 0x16, + 30967 - 19968: jis0212<<14 | 0x2F<<7 | 0x17, + 30970 - 19968: jis0212<<14 | 0x2F<<7 | 0x18, + 30971 - 19968: jis0212<<14 | 0x2F<<7 | 0x19, + 30973 - 19968: jis0208<<14 | 0x42<<7 | 0x02, + 30975 - 19968: jis0212<<14 | 0x2F<<7 | 0x1A, + 30976 - 19968: jis0212<<14 | 0x2F<<7 | 0x15, + 30977 - 19968: jis0208<<14 | 0x1D<<7 | 0x2B, + 30982 - 19968: jis0212<<14 | 0x2F<<7 | 0x1B, + 30983 - 19968: jis0208<<14 | 0x42<<7 | 0x04, + 30988 - 19968: jis0212<<14 | 0x2F<<7 | 0x1C, + 30990 - 19968: jis0208<<14 | 0x20<<7 | 0x22, + 30992 - 19968: jis0212<<14 | 0x2F<<7 | 0x1D, + 30993 - 19968: jis0208<<14 | 0x42<<7 | 0x06, + 30994 - 19968: jis0208<<14 | 0x42<<7 | 0x05, + 31001 - 19968: jis0208<<14 | 0x42<<7 | 0x07, + 31002 - 19968: jis0212<<14 | 0x2F<<7 | 0x1E, + 31004 - 19968: jis0212<<14 | 0x2F<<7 | 0x1F, + 31006 - 19968: jis0212<<14 | 0x2F<<7 | 0x20, + 31007 - 19968: jis0212<<14 | 0x2F<<7 | 0x21, + 31008 - 19968: jis0212<<14 | 0x2F<<7 | 0x22, + 31013 - 19968: jis0212<<14 | 0x2F<<7 | 0x23, + 31014 - 19968: jis0208<<14 | 0x41<<7 | 0x47, + 31015 - 19968: jis0212<<14 | 0x2F<<7 | 0x24, + 31017 - 19968: jis0212<<14 | 0x2F<<7 | 0x25, + 31018 - 19968: jis0208<<14 | 0x41<<7 | 0x49, + 31019 - 19968: jis0208<<14 | 0x42<<7 | 0x09, + 31020 - 19968: jis0208<<14 | 0x42<<7 | 0x08, + 31021 - 19968: jis0212<<14 | 0x2F<<7 | 0x26, + 31024 - 19968: jis0208<<14 | 0x5A<<7 | 0x20, + 31025 - 19968: jis0212<<14 | 0x2F<<7 | 0x27, + 31028 - 19968: jis0212<<14 | 0x2F<<7 | 0x28, + 31029 - 19968: jis0212<<14 | 0x2F<<7 | 0x29, + 31034 - 19968: jis0208<<14 | 0x1B<<7 | 0x07, + 31035 - 19968: jis0212<<14 | 0x2F<<7 | 0x2A, + 31036 - 19968: jis0208<<14 | 0x2D<<7 | 0x48, + 31037 - 19968: jis0212<<14 | 0x2F<<7 | 0x2B, + 31038 - 19968: jis0208<<14 | 0x1B<<7 | 0x31, + 31039 - 19968: jis0212<<14 | 0x2F<<7 | 0x2C, + 31040 - 19968: jis0208<<14 | 0x42<<7 | 0x0A, + 31041 - 19968: jis0208<<14 | 0x16<<7 | 0x16, + 31044 - 19968: jis0212<<14 | 0x2F<<7 | 0x2D, + 31045 - 19968: jis0212<<14 | 0x2F<<7 | 0x2E, + 31046 - 19968: jis0212<<14 | 0x2F<<7 | 0x2F, + 31047 - 19968: jis0208<<14 | 0x14<<7 | 0x1F, + 31048 - 19968: jis0208<<14 | 0x14<<7 | 0x06, + 31049 - 19968: jis0208<<14 | 0x1A<<7 | 0x42, + 31050 - 19968: jis0212<<14 | 0x2F<<7 | 0x30, + 31051 - 19968: jis0212<<14 | 0x2F<<7 | 0x31, + 31055 - 19968: jis0212<<14 | 0x2F<<7 | 0x32, + 31056 - 19968: jis0208<<14 | 0x2C<<7 | 0x13, + 31057 - 19968: jis0212<<14 | 0x2F<<7 | 0x33, + 31059 - 19968: jis0208<<14 | 0x42<<7 | 0x10, + 31060 - 19968: jis0212<<14 | 0x2F<<7 | 0x34, + 31061 - 19968: jis0208<<14 | 0x42<<7 | 0x0F, + 31062 - 19968: jis0208<<14 | 0x20<<7 | 0x23, + 31063 - 19968: jis0208<<14 | 0x42<<7 | 0x0C, + 31064 - 19968: jis0212<<14 | 0x2F<<7 | 0x35, + 31066 - 19968: jis0208<<14 | 0x42<<7 | 0x0E, + 31067 - 19968: jis0212<<14 | 0x2F<<7 | 0x36, + 31068 - 19968: jis0212<<14 | 0x2F<<7 | 0x37, + 31069 - 19968: jis0208<<14 | 0x1C<<7 | 0x2A, + 31070 - 19968: jis0208<<14 | 0x1E<<7 | 0x1F, + 31071 - 19968: jis0208<<14 | 0x42<<7 | 0x0D, + 31072 - 19968: jis0208<<14 | 0x42<<7 | 0x0B, + 31074 - 19968: jis0208<<14 | 0x26<<7 | 0x09, + 31077 - 19968: jis0208<<14 | 0x1D<<7 | 0x2C, + 31079 - 19968: jis0212<<14 | 0x2F<<7 | 0x38, + 31080 - 19968: jis0208<<14 | 0x28<<7 | 0x1B, + 31081 - 19968: jis0212<<14 | 0x2F<<7 | 0x39, + 31083 - 19968: jis0212<<14 | 0x2F<<7 | 0x3A, + 31085 - 19968: jis0208<<14 | 0x19<<7 | 0x36, + 31090 - 19968: jis0212<<14 | 0x2F<<7 | 0x3B, + 31095 - 19968: jis0208<<14 | 0x24<<7 | 0x57, + 31097 - 19968: jis0212<<14 | 0x2F<<7 | 0x3C, + 31098 - 19968: jis0208<<14 | 0x42<<7 | 0x11, + 31099 - 19968: jis0212<<14 | 0x2F<<7 | 0x3D, + 31100 - 19968: jis0212<<14 | 0x2F<<7 | 0x3E, + 31102 - 19968: jis0212<<14 | 0x2F<<7 | 0x3F, + 31103 - 19968: jis0208<<14 | 0x42<<7 | 0x12, + 31104 - 19968: jis0208<<14 | 0x42<<7 | 0x28, + 31105 - 19968: jis0208<<14 | 0x15<<7 | 0x37, + 31108 - 19968: jis0208<<14 | 0x2E<<7 | 0x1C, + 31109 - 19968: jis0208<<14 | 0x20<<7 | 0x14, + 31114 - 19968: jis0208<<14 | 0x42<<7 | 0x13, + 31115 - 19968: jis0212<<14 | 0x2F<<7 | 0x40, + 31116 - 19968: jis0212<<14 | 0x2F<<7 | 0x41, + 31117 - 19968: jis0208<<14 | 0x11<<7 | 0x31, + 31118 - 19968: jis0208<<14 | 0x23<<7 | 0x56, + 31119 - 19968: jis0208<<14 | 0x29<<7 | 0x00, + 31121 - 19968: jis0212<<14 | 0x2F<<7 | 0x42, + 31123 - 19968: jis0212<<14 | 0x2F<<7 | 0x43, + 31124 - 19968: jis0208<<14 | 0x5A<<7 | 0x24, + 31125 - 19968: jis0212<<14 | 0x2F<<7 | 0x45, + 31126 - 19968: jis0212<<14 | 0x2F<<7 | 0x46, + 31128 - 19968: jis0212<<14 | 0x2F<<7 | 0x47, + 31131 - 19968: jis0208<<14 | 0x5A<<7 | 0x26, + 31132 - 19968: jis0212<<14 | 0x2F<<7 | 0x49, + 31133 - 19968: jis0208<<14 | 0x42<<7 | 0x14, + 31137 - 19968: jis0212<<14 | 0x2F<<7 | 0x4A, + 31142 - 19968: jis0208<<14 | 0x14<<7 | 0x59, + 31143 - 19968: jis0208<<14 | 0x42<<7 | 0x15, + 31144 - 19968: jis0212<<14 | 0x2F<<7 | 0x4B, + 31145 - 19968: jis0212<<14 | 0x2F<<7 | 0x4C, + 31146 - 19968: jis0208<<14 | 0x42<<7 | 0x17, + 31147 - 19968: jis0212<<14 | 0x2F<<7 | 0x4D, + 31150 - 19968: jis0208<<14 | 0x42<<7 | 0x18, + 31151 - 19968: jis0212<<14 | 0x2F<<7 | 0x4E, + 31152 - 19968: jis0208<<14 | 0x26<<7 | 0x08, + 31153 - 19968: jis0212<<14 | 0x2F<<7 | 0x4F, + 31155 - 19968: jis0208<<14 | 0x42<<7 | 0x19, + 31156 - 19968: jis0212<<14 | 0x2F<<7 | 0x50, + 31160 - 19968: jis0212<<14 | 0x2F<<7 | 0x51, + 31161 - 19968: jis0208<<14 | 0x42<<7 | 0x1A, + 31162 - 19968: jis0208<<14 | 0x42<<7 | 0x1B, + 31163 - 19968: jis0212<<14 | 0x2F<<7 | 0x52, + 31165 - 19968: jis0208<<14 | 0x15<<7 | 0x38, + 31166 - 19968: jis0208<<14 | 0x11<<7 | 0x32, + 31167 - 19968: jis0208<<14 | 0x25<<7 | 0x24, + 31168 - 19968: jis0208<<14 | 0x1C<<7 | 0x07, + 31169 - 19968: jis0208<<14 | 0x1A<<7 | 0x43, + 31170 - 19968: jis0212<<14 | 0x2F<<7 | 0x53, + 31172 - 19968: jis0212<<14 | 0x2F<<7 | 0x54, + 31175 - 19968: jis0212<<14 | 0x2F<<7 | 0x55, + 31176 - 19968: jis0212<<14 | 0x2F<<7 | 0x56, + 31177 - 19968: jis0208<<14 | 0x42<<7 | 0x1C, + 31178 - 19968: jis0212<<14 | 0x2F<<7 | 0x57, + 31179 - 19968: jis0208<<14 | 0x1C<<7 | 0x08, + 31183 - 19968: jis0212<<14 | 0x2F<<7 | 0x58, + 31185 - 19968: jis0208<<14 | 0x11<<7 | 0x29, + 31186 - 19968: jis0208<<14 | 0x28<<7 | 0x22, + 31188 - 19968: jis0212<<14 | 0x2F<<7 | 0x59, + 31189 - 19968: jis0208<<14 | 0x42<<7 | 0x1D, + 31190 - 19968: jis0212<<14 | 0x2F<<7 | 0x5A, + 31192 - 19968: jis0208<<14 | 0x27<<7 | 0x4A, + 31194 - 19968: jis0212<<14 | 0x2F<<7 | 0x5B, + 31197 - 19968: jis0212<<14 | 0x2F<<7 | 0x5C, + 31198 - 19968: jis0212<<14 | 0x2F<<7 | 0x5D, + 31199 - 19968: jis0208<<14 | 0x20<<7 | 0x24, + 31200 - 19968: jis0212<<14 | 0x30<<7 | 0x00, + 31201 - 19968: jis0208<<14 | 0x42<<7 | 0x20, + 31202 - 19968: jis0212<<14 | 0x30<<7 | 0x01, + 31203 - 19968: jis0208<<14 | 0x42<<7 | 0x21, + 31204 - 19968: jis0208<<14 | 0x26<<7 | 0x48, + 31205 - 19968: jis0212<<14 | 0x30<<7 | 0x02, + 31206 - 19968: jis0208<<14 | 0x1E<<7 | 0x20, + 31207 - 19968: jis0208<<14 | 0x42<<7 | 0x1E, + 31209 - 19968: jis0208<<14 | 0x22<<7 | 0x40, + 31210 - 19968: jis0212<<14 | 0x30<<7 | 0x03, + 31211 - 19968: jis0212<<14 | 0x30<<7 | 0x04, + 31212 - 19968: jis0208<<14 | 0x42<<7 | 0x1F, + 31213 - 19968: jis0212<<14 | 0x30<<7 | 0x05, + 31216 - 19968: jis0208<<14 | 0x1D<<7 | 0x2D, + 31217 - 19968: jis0212<<14 | 0x30<<7 | 0x06, + 31224 - 19968: jis0212<<14 | 0x30<<7 | 0x07, + 31227 - 19968: jis0208<<14 | 0x0F<<7 | 0x3B, + 31228 - 19968: jis0212<<14 | 0x30<<7 | 0x08, + 31232 - 19968: jis0208<<14 | 0x14<<7 | 0x08, + 31234 - 19968: jis0212<<14 | 0x30<<7 | 0x09, + 31235 - 19968: jis0212<<14 | 0x30<<7 | 0x0A, + 31239 - 19968: jis0212<<14 | 0x30<<7 | 0x0B, + 31240 - 19968: jis0208<<14 | 0x42<<7 | 0x22, + 31241 - 19968: jis0212<<14 | 0x30<<7 | 0x0C, + 31242 - 19968: jis0212<<14 | 0x30<<7 | 0x0D, + 31243 - 19968: jis0208<<14 | 0x23<<7 | 0x57, + 31244 - 19968: jis0212<<14 | 0x30<<7 | 0x0E, + 31245 - 19968: jis0208<<14 | 0x42<<7 | 0x23, + 31246 - 19968: jis0208<<14 | 0x1F<<7 | 0x26, + 31249 - 19968: jis0212<<14 | 0x30<<7 | 0x0F, + 31252 - 19968: jis0208<<14 | 0x2B<<7 | 0x0C, + 31253 - 19968: jis0212<<14 | 0x30<<7 | 0x10, + 31255 - 19968: jis0208<<14 | 0x28<<7 | 0x02, + 31256 - 19968: jis0208<<14 | 0x42<<7 | 0x24, + 31257 - 19968: jis0208<<14 | 0x42<<7 | 0x25, + 31258 - 19968: jis0208<<14 | 0x22<<7 | 0x34, + 31259 - 19968: jis0212<<14 | 0x30<<7 | 0x11, + 31260 - 19968: jis0208<<14 | 0x2D<<7 | 0x26, + 31262 - 19968: jis0212<<14 | 0x30<<7 | 0x12, + 31263 - 19968: jis0208<<14 | 0x42<<7 | 0x27, + 31264 - 19968: jis0208<<14 | 0x42<<7 | 0x26, + 31265 - 19968: jis0212<<14 | 0x30<<7 | 0x13, + 31271 - 19968: jis0212<<14 | 0x30<<7 | 0x14, + 31275 - 19968: jis0212<<14 | 0x30<<7 | 0x15, + 31277 - 19968: jis0212<<14 | 0x30<<7 | 0x16, + 31278 - 19968: jis0208<<14 | 0x1B<<7 | 0x4E, + 31279 - 19968: jis0212<<14 | 0x30<<7 | 0x17, + 31280 - 19968: jis0212<<14 | 0x30<<7 | 0x18, + 31281 - 19968: jis0208<<14 | 0x42<<7 | 0x29, + 31282 - 19968: jis0208<<14 | 0x0F<<7 | 0x4F, + 31284 - 19968: jis0212<<14 | 0x30<<7 | 0x19, + 31285 - 19968: jis0212<<14 | 0x30<<7 | 0x1A, + 31287 - 19968: jis0208<<14 | 0x42<<7 | 0x2C, + 31288 - 19968: jis0212<<14 | 0x30<<7 | 0x1B, + 31289 - 19968: jis0212<<14 | 0x30<<7 | 0x1C, + 31290 - 19968: jis0212<<14 | 0x30<<7 | 0x1D, + 31291 - 19968: jis0208<<14 | 0x42<<7 | 0x2A, + 31292 - 19968: jis0208<<14 | 0x11<<7 | 0x33, + 31293 - 19968: jis0208<<14 | 0x16<<7 | 0x2D, + 31294 - 19968: jis0208<<14 | 0x42<<7 | 0x2B, + 31295 - 19968: jis0208<<14 | 0x18<<7 | 0x25, + 31296 - 19968: jis0208<<14 | 0x18<<7 | 0x51, + 31298 - 19968: jis0208<<14 | 0x29<<7 | 0x45, + 31299 - 19968: jis0208<<14 | 0x42<<7 | 0x2D, + 31300 - 19968: jis0212<<14 | 0x30<<7 | 0x1E, + 31301 - 19968: jis0212<<14 | 0x30<<7 | 0x1F, + 31302 - 19968: jis0208<<14 | 0x2A<<7 | 0x33, + 31303 - 19968: jis0212<<14 | 0x30<<7 | 0x20, + 31304 - 19968: jis0212<<14 | 0x30<<7 | 0x21, + 31305 - 19968: jis0208<<14 | 0x42<<7 | 0x2F, + 31308 - 19968: jis0212<<14 | 0x30<<7 | 0x22, + 31309 - 19968: jis0208<<14 | 0x1F<<7 | 0x30, + 31310 - 19968: jis0208<<14 | 0x10<<7 | 0x2E, + 31311 - 19968: jis0208<<14 | 0x11<<7 | 0x19, + 31312 - 19968: jis0208<<14 | 0x0F<<7 | 0x0B, + 31317 - 19968: jis0212<<14 | 0x30<<7 | 0x23, + 31318 - 19968: jis0212<<14 | 0x30<<7 | 0x24, + 31319 - 19968: jis0208<<14 | 0x42<<7 | 0x2E, + 31321 - 19968: jis0212<<14 | 0x30<<7 | 0x25, + 31324 - 19968: jis0212<<14 | 0x30<<7 | 0x26, + 31325 - 19968: jis0212<<14 | 0x30<<7 | 0x27, + 31327 - 19968: jis0212<<14 | 0x30<<7 | 0x28, + 31328 - 19968: jis0212<<14 | 0x30<<7 | 0x29, + 31329 - 19968: jis0208<<14 | 0x42<<7 | 0x30, + 31330 - 19968: jis0208<<14 | 0x42<<7 | 0x31, + 31331 - 19968: jis0208<<14 | 0x1D<<7 | 0x56, + 31333 - 19968: jis0212<<14 | 0x30<<7 | 0x2A, + 31335 - 19968: jis0212<<14 | 0x30<<7 | 0x2B, + 31337 - 19968: jis0208<<14 | 0x42<<7 | 0x32, + 31338 - 19968: jis0212<<14 | 0x30<<7 | 0x2C, + 31339 - 19968: jis0208<<14 | 0x12<<7 | 0x2E, + 31341 - 19968: jis0212<<14 | 0x30<<7 | 0x2D, + 31344 - 19968: jis0208<<14 | 0x42<<7 | 0x34, + 31348 - 19968: jis0208<<14 | 0x16<<7 | 0x49, + 31349 - 19968: jis0212<<14 | 0x30<<7 | 0x2E, + 31350 - 19968: jis0208<<14 | 0x14<<7 | 0x45, + 31352 - 19968: jis0212<<14 | 0x30<<7 | 0x2F, + 31353 - 19968: jis0208<<14 | 0x42<<7 | 0x35, + 31354 - 19968: jis0208<<14 | 0x15<<7 | 0x54, + 31357 - 19968: jis0208<<14 | 0x42<<7 | 0x36, + 31358 - 19968: jis0212<<14 | 0x30<<7 | 0x30, + 31359 - 19968: jis0208<<14 | 0x1F<<7 | 0x5B, + 31360 - 19968: jis0212<<14 | 0x30<<7 | 0x31, + 31361 - 19968: jis0208<<14 | 0x25<<7 | 0x2C, + 31362 - 19968: jis0212<<14 | 0x30<<7 | 0x32, + 31363 - 19968: jis0208<<14 | 0x1F<<7 | 0x3F, + 31364 - 19968: jis0208<<14 | 0x19<<7 | 0x54, + 31365 - 19968: jis0212<<14 | 0x30<<7 | 0x33, + 31366 - 19968: jis0212<<14 | 0x30<<7 | 0x34, + 31368 - 19968: jis0208<<14 | 0x42<<7 | 0x37, + 31370 - 19968: jis0212<<14 | 0x30<<7 | 0x35, + 31371 - 19968: jis0212<<14 | 0x30<<7 | 0x36, + 31376 - 19968: jis0212<<14 | 0x30<<7 | 0x37, + 31377 - 19968: jis0212<<14 | 0x30<<7 | 0x38, + 31378 - 19968: jis0208<<14 | 0x22<<7 | 0x41, + 31379 - 19968: jis0208<<14 | 0x20<<7 | 0x4A, + 31380 - 19968: jis0212<<14 | 0x30<<7 | 0x39, + 31381 - 19968: jis0208<<14 | 0x42<<7 | 0x39, + 31382 - 19968: jis0208<<14 | 0x42<<7 | 0x3B, + 31383 - 19968: jis0208<<14 | 0x42<<7 | 0x38, + 31384 - 19968: jis0208<<14 | 0x42<<7 | 0x3A, + 31390 - 19968: jis0212<<14 | 0x30<<7 | 0x3A, + 31391 - 19968: jis0208<<14 | 0x16<<7 | 0x01, + 31392 - 19968: jis0212<<14 | 0x30<<7 | 0x3B, + 31395 - 19968: jis0212<<14 | 0x30<<7 | 0x3C, + 31401 - 19968: jis0208<<14 | 0x42<<7 | 0x3C, + 31402 - 19968: jis0208<<14 | 0x16<<7 | 0x05, + 31404 - 19968: jis0212<<14 | 0x30<<7 | 0x3D, + 31406 - 19968: jis0208<<14 | 0x14<<7 | 0x46, + 31407 - 19968: jis0208<<14 | 0x2C<<7 | 0x31, + 31408 - 19968: jis0208<<14 | 0x42<<7 | 0x3E, + 31411 - 19968: jis0212<<14 | 0x30<<7 | 0x3E, + 31413 - 19968: jis0212<<14 | 0x30<<7 | 0x3F, + 31414 - 19968: jis0208<<14 | 0x42<<7 | 0x3F, + 31417 - 19968: jis0212<<14 | 0x30<<7 | 0x40, + 31418 - 19968: jis0208<<14 | 0x10<<7 | 0x0D, + 31419 - 19968: jis0212<<14 | 0x30<<7 | 0x41, + 31420 - 19968: jis0212<<14 | 0x30<<7 | 0x42, + 31423 - 19968: jis0208<<14 | 0x42<<7 | 0x42, + 31427 - 19968: jis0208<<14 | 0x12<<7 | 0x55, + 31428 - 19968: jis0208<<14 | 0x42<<7 | 0x41, + 31429 - 19968: jis0208<<14 | 0x42<<7 | 0x40, + 31430 - 19968: jis0212<<14 | 0x30<<7 | 0x43, + 31431 - 19968: jis0208<<14 | 0x42<<7 | 0x44, + 31432 - 19968: jis0208<<14 | 0x42<<7 | 0x3D, + 31433 - 19968: jis0212<<14 | 0x30<<7 | 0x44, + 31434 - 19968: jis0208<<14 | 0x42<<7 | 0x45, + 31435 - 19968: jis0208<<14 | 0x2D<<7 | 0x08, + 31436 - 19968: jis0212<<14 | 0x30<<7 | 0x45, + 31437 - 19968: jis0208<<14 | 0x42<<7 | 0x46, + 31438 - 19968: jis0212<<14 | 0x30<<7 | 0x46, + 31439 - 19968: jis0208<<14 | 0x42<<7 | 0x47, + 31441 - 19968: jis0208<<14 | 0x5A<<7 | 0x27, + 31442 - 19968: jis0208<<14 | 0x33<<7 | 0x53, + 31443 - 19968: jis0208<<14 | 0x42<<7 | 0x49, + 31445 - 19968: jis0208<<14 | 0x42<<7 | 0x48, + 31449 - 19968: jis0208<<14 | 0x42<<7 | 0x4A, + 31450 - 19968: jis0208<<14 | 0x42<<7 | 0x4B, + 31451 - 19968: jis0212<<14 | 0x30<<7 | 0x48, + 31452 - 19968: jis0208<<14 | 0x2D<<7 | 0x14, + 31453 - 19968: jis0208<<14 | 0x42<<7 | 0x4C, + 31455 - 19968: jis0208<<14 | 0x4F<<7 | 0x4E, + 31456 - 19968: jis0208<<14 | 0x1D<<7 | 0x2E, + 31457 - 19968: jis0208<<14 | 0x42<<7 | 0x4D, + 31458 - 19968: jis0208<<14 | 0x42<<7 | 0x4E, + 31459 - 19968: jis0208<<14 | 0x1C<<7 | 0x36, + 31461 - 19968: jis0208<<14 | 0x25<<7 | 0x17, + 31462 - 19968: jis0208<<14 | 0x42<<7 | 0x4F, + 31463 - 19968: jis0208<<14 | 0x5A<<7 | 0x28, + 31464 - 19968: jis0212<<14 | 0x30<<7 | 0x49, + 31465 - 19968: jis0212<<14 | 0x30<<7 | 0x4A, + 31466 - 19968: jis0208<<14 | 0x22<<7 | 0x07, + 31467 - 19968: jis0208<<14 | 0x5A<<7 | 0x2A, + 31468 - 19968: jis0212<<14 | 0x30<<7 | 0x4C, + 31469 - 19968: jis0208<<14 | 0x42<<7 | 0x50, + 31471 - 19968: jis0208<<14 | 0x22<<7 | 0x1B, + 31472 - 19968: jis0208<<14 | 0x42<<7 | 0x51, + 31473 - 19968: jis0212<<14 | 0x30<<7 | 0x4D, + 31476 - 19968: jis0212<<14 | 0x30<<7 | 0x4E, + 31478 - 19968: jis0208<<14 | 0x15<<7 | 0x04, + 31480 - 19968: jis0208<<14 | 0x30<<7 | 0x1E, + 31481 - 19968: jis0208<<14 | 0x22<<7 | 0x3C, + 31482 - 19968: jis0208<<14 | 0x1B<<7 | 0x12, + 31483 - 19968: jis0212<<14 | 0x30<<7 | 0x4F, + 31485 - 19968: jis0212<<14 | 0x30<<7 | 0x50, + 31486 - 19968: jis0212<<14 | 0x30<<7 | 0x51, + 31487 - 19968: jis0208<<14 | 0x13<<7 | 0x27, + 31490 - 19968: jis0208<<14 | 0x42<<7 | 0x52, + 31492 - 19968: jis0208<<14 | 0x43<<7 | 0x01, + 31494 - 19968: jis0208<<14 | 0x42<<7 | 0x55, + 31495 - 19968: jis0212<<14 | 0x30<<7 | 0x52, + 31496 - 19968: jis0208<<14 | 0x14<<7 | 0x47, + 31498 - 19968: jis0208<<14 | 0x42<<7 | 0x54, + 31499 - 19968: jis0208<<14 | 0x43<<7 | 0x03, + 31503 - 19968: jis0208<<14 | 0x42<<7 | 0x53, + 31505 - 19968: jis0208<<14 | 0x1D<<7 | 0x2F, + 31508 - 19968: jis0212<<14 | 0x30<<7 | 0x53, + 31512 - 19968: jis0208<<14 | 0x42<<7 | 0x57, + 31513 - 19968: jis0208<<14 | 0x42<<7 | 0x58, + 31515 - 19968: jis0208<<14 | 0x24<<7 | 0x0A, + 31518 - 19968: jis0208<<14 | 0x42<<7 | 0x59, + 31519 - 19968: jis0212<<14 | 0x30<<7 | 0x54, + 31520 - 19968: jis0208<<14 | 0x12<<7 | 0x3D, + 31523 - 19968: jis0212<<14 | 0x30<<7 | 0x55, + 31525 - 19968: jis0208<<14 | 0x1E<<7 | 0x39, + 31526 - 19968: jis0208<<14 | 0x28<<7 | 0x43, + 31527 - 19968: jis0212<<14 | 0x30<<7 | 0x56, + 31528 - 19968: jis0208<<14 | 0x42<<7 | 0x5B, + 31529 - 19968: jis0212<<14 | 0x30<<7 | 0x57, + 31530 - 19968: jis0212<<14 | 0x30<<7 | 0x58, + 31531 - 19968: jis0212<<14 | 0x30<<7 | 0x59, + 31532 - 19968: jis0208<<14 | 0x21<<7 | 0x47, + 31533 - 19968: jis0212<<14 | 0x30<<7 | 0x5A, + 31534 - 19968: jis0212<<14 | 0x30<<7 | 0x5B, + 31535 - 19968: jis0212<<14 | 0x30<<7 | 0x5C, + 31536 - 19968: jis0212<<14 | 0x30<<7 | 0x5D, + 31537 - 19968: jis0212<<14 | 0x31<<7 | 0x00, + 31539 - 19968: jis0208<<14 | 0x42<<7 | 0x56, + 31540 - 19968: jis0212<<14 | 0x31<<7 | 0x01, + 31541 - 19968: jis0208<<14 | 0x42<<7 | 0x5A, + 31542 - 19968: jis0208<<14 | 0x42<<7 | 0x5C, + 31545 - 19968: jis0208<<14 | 0x19<<7 | 0x5A, + 31549 - 19968: jis0212<<14 | 0x31<<7 | 0x02, + 31551 - 19968: jis0212<<14 | 0x31<<7 | 0x03, + 31552 - 19968: jis0212<<14 | 0x31<<7 | 0x04, + 31553 - 19968: jis0212<<14 | 0x31<<7 | 0x05, + 31557 - 19968: jis0208<<14 | 0x43<<7 | 0x05, + 31558 - 19968: jis0208<<14 | 0x28<<7 | 0x0D, + 31559 - 19968: jis0212<<14 | 0x31<<7 | 0x06, + 31560 - 19968: jis0208<<14 | 0x27<<7 | 0x05, + 31561 - 19968: jis0208<<14 | 0x24<<7 | 0x58, + 31563 - 19968: jis0208<<14 | 0x15<<7 | 0x39, + 31564 - 19968: jis0208<<14 | 0x43<<7 | 0x04, + 31565 - 19968: jis0208<<14 | 0x43<<7 | 0x02, + 31566 - 19968: jis0212<<14 | 0x31<<7 | 0x07, + 31567 - 19968: jis0208<<14 | 0x27<<7 | 0x14, + 31568 - 19968: jis0208<<14 | 0x42<<7 | 0x5D, + 31569 - 19968: jis0208<<14 | 0x22<<7 | 0x3D, + 31570 - 19968: jis0208<<14 | 0x24<<7 | 0x5A, + 31572 - 19968: jis0208<<14 | 0x24<<7 | 0x59, + 31573 - 19968: jis0212<<14 | 0x31<<7 | 0x08, + 31574 - 19968: jis0208<<14 | 0x19<<7 | 0x55, + 31581 - 19968: jis0208<<14 | 0x43<<7 | 0x17, + 31584 - 19968: jis0212<<14 | 0x31<<7 | 0x09, + 31588 - 19968: jis0212<<14 | 0x31<<7 | 0x0A, + 31589 - 19968: jis0208<<14 | 0x43<<7 | 0x07, + 31590 - 19968: jis0212<<14 | 0x31<<7 | 0x0B, + 31591 - 19968: jis0208<<14 | 0x43<<7 | 0x09, + 31593 - 19968: jis0212<<14 | 0x31<<7 | 0x0C, + 31594 - 19968: jis0212<<14 | 0x31<<7 | 0x0D, + 31596 - 19968: jis0208<<14 | 0x43<<7 | 0x0C, + 31597 - 19968: jis0212<<14 | 0x31<<7 | 0x0E, + 31598 - 19968: jis0208<<14 | 0x43<<7 | 0x0D, + 31599 - 19968: jis0212<<14 | 0x31<<7 | 0x0F, + 31600 - 19968: jis0208<<14 | 0x43<<7 | 0x0A, + 31601 - 19968: jis0208<<14 | 0x43<<7 | 0x0B, + 31602 - 19968: jis0212<<14 | 0x31<<7 | 0x10, + 31603 - 19968: jis0212<<14 | 0x31<<7 | 0x11, + 31604 - 19968: jis0208<<14 | 0x43<<7 | 0x08, + 31605 - 19968: jis0208<<14 | 0x43<<7 | 0x06, + 31607 - 19968: jis0212<<14 | 0x31<<7 | 0x12, + 31610 - 19968: jis0208<<14 | 0x43<<7 | 0x00, + 31620 - 19968: jis0212<<14 | 0x31<<7 | 0x13, + 31622 - 19968: jis0208<<14 | 0x29<<7 | 0x2E, + 31623 - 19968: jis0208<<14 | 0x11<<7 | 0x34, + 31625 - 19968: jis0212<<14 | 0x31<<7 | 0x14, + 31627 - 19968: jis0208<<14 | 0x43<<7 | 0x14, + 31629 - 19968: jis0208<<14 | 0x43<<7 | 0x11, + 31630 - 19968: jis0212<<14 | 0x31<<7 | 0x15, + 31631 - 19968: jis0208<<14 | 0x43<<7 | 0x16, + 31632 - 19968: jis0212<<14 | 0x31<<7 | 0x16, + 31633 - 19968: jis0212<<14 | 0x31<<7 | 0x17, + 31634 - 19968: jis0208<<14 | 0x43<<7 | 0x15, + 31636 - 19968: jis0208<<14 | 0x26<<7 | 0x52, + 31637 - 19968: jis0208<<14 | 0x2B<<7 | 0x06, + 31638 - 19968: jis0212<<14 | 0x31<<7 | 0x18, + 31639 - 19968: jis0208<<14 | 0x1A<<7 | 0x1A, + 31640 - 19968: jis0208<<14 | 0x43<<7 | 0x0F, + 31641 - 19968: jis0208<<14 | 0x43<<7 | 0x18, + 31642 - 19968: jis0208<<14 | 0x43<<7 | 0x13, + 31643 - 19968: jis0212<<14 | 0x31<<7 | 0x19, + 31644 - 19968: jis0208<<14 | 0x43<<7 | 0x12, + 31645 - 19968: jis0208<<14 | 0x43<<7 | 0x0E, + 31646 - 19968: jis0208<<14 | 0x5A<<7 | 0x2B, + 31647 - 19968: jis0208<<14 | 0x43<<7 | 0x10, + 31648 - 19968: jis0212<<14 | 0x31<<7 | 0x1B, + 31649 - 19968: jis0208<<14 | 0x13<<7 | 0x28, + 31653 - 19968: jis0212<<14 | 0x31<<7 | 0x1C, + 31658 - 19968: jis0208<<14 | 0x22<<7 | 0x1C, + 31660 - 19968: jis0212<<14 | 0x31<<7 | 0x1D, + 31661 - 19968: jis0208<<14 | 0x1F<<7 | 0x5C, + 31663 - 19968: jis0212<<14 | 0x31<<7 | 0x1E, + 31664 - 19968: jis0212<<14 | 0x31<<7 | 0x1F, + 31665 - 19968: jis0208<<14 | 0x27<<7 | 0x01, + 31666 - 19968: jis0212<<14 | 0x31<<7 | 0x20, + 31668 - 19968: jis0208<<14 | 0x43<<7 | 0x1D, + 31669 - 19968: jis0212<<14 | 0x31<<7 | 0x21, + 31670 - 19968: jis0212<<14 | 0x31<<7 | 0x22, + 31672 - 19968: jis0208<<14 | 0x27<<7 | 0x03, + 31674 - 19968: jis0212<<14 | 0x31<<7 | 0x23, + 31675 - 19968: jis0212<<14 | 0x31<<7 | 0x24, + 31676 - 19968: jis0212<<14 | 0x31<<7 | 0x25, + 31677 - 19968: jis0212<<14 | 0x31<<7 | 0x26, + 31680 - 19968: jis0208<<14 | 0x1F<<7 | 0x40, + 31681 - 19968: jis0208<<14 | 0x43<<7 | 0x1A, + 31682 - 19968: jis0212<<14 | 0x31<<7 | 0x27, + 31684 - 19968: jis0208<<14 | 0x27<<7 | 0x2E, + 31685 - 19968: jis0212<<14 | 0x31<<7 | 0x28, + 31686 - 19968: jis0208<<14 | 0x43<<7 | 0x1E, + 31687 - 19968: jis0208<<14 | 0x29<<7 | 0x32, + 31688 - 19968: jis0212<<14 | 0x31<<7 | 0x29, + 31689 - 19968: jis0208<<14 | 0x22<<7 | 0x3A, + 31690 - 19968: jis0212<<14 | 0x31<<7 | 0x2A, + 31691 - 19968: jis0208<<14 | 0x43<<7 | 0x19, + 31692 - 19968: jis0208<<14 | 0x43<<7 | 0x1B, + 31695 - 19968: jis0208<<14 | 0x43<<7 | 0x1C, + 31700 - 19968: jis0212<<14 | 0x31<<7 | 0x2B, + 31702 - 19968: jis0212<<14 | 0x31<<7 | 0x2C, + 31703 - 19968: jis0212<<14 | 0x31<<7 | 0x2D, + 31705 - 19968: jis0212<<14 | 0x31<<7 | 0x2E, + 31706 - 19968: jis0212<<14 | 0x31<<7 | 0x2F, + 31707 - 19968: jis0212<<14 | 0x31<<7 | 0x30, + 31709 - 19968: jis0208<<14 | 0x43<<7 | 0x1F, + 31712 - 19968: jis0208<<14 | 0x1B<<7 | 0x23, + 31716 - 19968: jis0208<<14 | 0x25<<7 | 0x25, + 31717 - 19968: jis0208<<14 | 0x43<<7 | 0x24, + 31718 - 19968: jis0208<<14 | 0x43<<7 | 0x23, + 31720 - 19968: jis0212<<14 | 0x31<<7 | 0x31, + 31721 - 19968: jis0208<<14 | 0x43<<7 | 0x20, + 31722 - 19968: jis0212<<14 | 0x31<<7 | 0x32, + 31725 - 19968: jis0208<<14 | 0x2E<<7 | 0x15, + 31730 - 19968: jis0212<<14 | 0x31<<7 | 0x33, + 31731 - 19968: jis0208<<14 | 0x43<<7 | 0x29, + 31732 - 19968: jis0212<<14 | 0x31<<7 | 0x34, + 31733 - 19968: jis0212<<14 | 0x31<<7 | 0x35, + 31734 - 19968: jis0208<<14 | 0x43<<7 | 0x2D, + 31735 - 19968: jis0208<<14 | 0x43<<7 | 0x2A, + 31736 - 19968: jis0212<<14 | 0x31<<7 | 0x36, + 31737 - 19968: jis0212<<14 | 0x31<<7 | 0x37, + 31738 - 19968: jis0212<<14 | 0x31<<7 | 0x38, + 31740 - 19968: jis0212<<14 | 0x31<<7 | 0x39, + 31742 - 19968: jis0212<<14 | 0x31<<7 | 0x3A, + 31744 - 19968: jis0208<<14 | 0x43<<7 | 0x26, + 31745 - 19968: jis0212<<14 | 0x31<<7 | 0x3B, + 31746 - 19968: jis0212<<14 | 0x31<<7 | 0x3C, + 31747 - 19968: jis0212<<14 | 0x31<<7 | 0x3D, + 31748 - 19968: jis0212<<14 | 0x31<<7 | 0x3E, + 31750 - 19968: jis0212<<14 | 0x31<<7 | 0x3F, + 31751 - 19968: jis0208<<14 | 0x43<<7 | 0x27, + 31753 - 19968: jis0212<<14 | 0x31<<7 | 0x40, + 31755 - 19968: jis0212<<14 | 0x31<<7 | 0x41, + 31756 - 19968: jis0212<<14 | 0x31<<7 | 0x42, + 31757 - 19968: jis0208<<14 | 0x43<<7 | 0x2C, + 31758 - 19968: jis0212<<14 | 0x31<<7 | 0x43, + 31759 - 19968: jis0212<<14 | 0x31<<7 | 0x44, + 31761 - 19968: jis0208<<14 | 0x43<<7 | 0x21, + 31762 - 19968: jis0208<<14 | 0x31<<7 | 0x34, + 31763 - 19968: jis0208<<14 | 0x43<<7 | 0x28, + 31764 - 19968: jis0208<<14 | 0x43<<7 | 0x22, + 31767 - 19968: jis0208<<14 | 0x43<<7 | 0x2B, + 31769 - 19968: jis0212<<14 | 0x31<<7 | 0x45, + 31771 - 19968: jis0212<<14 | 0x31<<7 | 0x46, + 31775 - 19968: jis0208<<14 | 0x43<<7 | 0x31, + 31776 - 19968: jis0212<<14 | 0x31<<7 | 0x47, + 31777 - 19968: jis0208<<14 | 0x13<<7 | 0x29, + 31779 - 19968: jis0208<<14 | 0x43<<7 | 0x2E, + 31781 - 19968: jis0212<<14 | 0x31<<7 | 0x48, + 31782 - 19968: jis0212<<14 | 0x31<<7 | 0x49, + 31783 - 19968: jis0208<<14 | 0x43<<7 | 0x2F, + 31784 - 19968: jis0212<<14 | 0x31<<7 | 0x4A, + 31786 - 19968: jis0208<<14 | 0x43<<7 | 0x30, + 31787 - 19968: jis0208<<14 | 0x43<<7 | 0x33, + 31788 - 19968: jis0212<<14 | 0x31<<7 | 0x4B, + 31793 - 19968: jis0212<<14 | 0x31<<7 | 0x4C, + 31795 - 19968: jis0212<<14 | 0x31<<7 | 0x4D, + 31796 - 19968: jis0212<<14 | 0x31<<7 | 0x4E, + 31798 - 19968: jis0212<<14 | 0x31<<7 | 0x4F, + 31799 - 19968: jis0208<<14 | 0x43<<7 | 0x32, + 31800 - 19968: jis0208<<14 | 0x27<<7 | 0x55, + 31801 - 19968: jis0212<<14 | 0x31<<7 | 0x50, + 31802 - 19968: jis0212<<14 | 0x31<<7 | 0x51, + 31805 - 19968: jis0208<<14 | 0x43<<7 | 0x34, + 31806 - 19968: jis0208<<14 | 0x2D<<7 | 0x5B, + 31807 - 19968: jis0208<<14 | 0x29<<7 | 0x4C, + 31808 - 19968: jis0208<<14 | 0x43<<7 | 0x39, + 31811 - 19968: jis0208<<14 | 0x43<<7 | 0x36, + 31814 - 19968: jis0212<<14 | 0x31<<7 | 0x52, + 31818 - 19968: jis0212<<14 | 0x31<<7 | 0x53, + 31820 - 19968: jis0208<<14 | 0x43<<7 | 0x35, + 31821 - 19968: jis0208<<14 | 0x1F<<7 | 0x31, + 31823 - 19968: jis0208<<14 | 0x43<<7 | 0x38, + 31824 - 19968: jis0208<<14 | 0x43<<7 | 0x3A, + 31825 - 19968: jis0212<<14 | 0x31<<7 | 0x55, + 31826 - 19968: jis0212<<14 | 0x31<<7 | 0x56, + 31827 - 19968: jis0212<<14 | 0x31<<7 | 0x57, + 31828 - 19968: jis0208<<14 | 0x43<<7 | 0x37, + 31829 - 19968: jis0212<<14 | 0x31<<7 | 0x54, + 31830 - 19968: jis0208<<14 | 0x43<<7 | 0x3E, + 31832 - 19968: jis0208<<14 | 0x43<<7 | 0x3B, + 31833 - 19968: jis0212<<14 | 0x31<<7 | 0x58, + 31834 - 19968: jis0212<<14 | 0x31<<7 | 0x59, + 31835 - 19968: jis0212<<14 | 0x31<<7 | 0x5A, + 31836 - 19968: jis0212<<14 | 0x31<<7 | 0x5B, + 31837 - 19968: jis0212<<14 | 0x31<<7 | 0x5C, + 31838 - 19968: jis0212<<14 | 0x31<<7 | 0x5D, + 31839 - 19968: jis0208<<14 | 0x43<<7 | 0x3C, + 31840 - 19968: jis0208<<14 | 0x43<<7 | 0x25, + 31841 - 19968: jis0212<<14 | 0x32<<7 | 0x00, + 31843 - 19968: jis0212<<14 | 0x32<<7 | 0x01, + 31844 - 19968: jis0208<<14 | 0x43<<7 | 0x3D, + 31845 - 19968: jis0208<<14 | 0x43<<7 | 0x3F, + 31847 - 19968: jis0212<<14 | 0x32<<7 | 0x02, + 31849 - 19968: jis0212<<14 | 0x32<<7 | 0x03, + 31852 - 19968: jis0208<<14 | 0x43<<7 | 0x40, + 31853 - 19968: jis0212<<14 | 0x32<<7 | 0x04, + 31854 - 19968: jis0212<<14 | 0x32<<7 | 0x05, + 31856 - 19968: jis0212<<14 | 0x32<<7 | 0x06, + 31858 - 19968: jis0212<<14 | 0x32<<7 | 0x07, + 31859 - 19968: jis0208<<14 | 0x29<<7 | 0x25, + 31861 - 19968: jis0208<<14 | 0x43<<7 | 0x41, + 31865 - 19968: jis0212<<14 | 0x32<<7 | 0x08, + 31868 - 19968: jis0212<<14 | 0x32<<7 | 0x09, + 31869 - 19968: jis0212<<14 | 0x32<<7 | 0x0A, + 31870 - 19968: jis0208<<14 | 0x2B<<7 | 0x41, + 31873 - 19968: jis0208<<14 | 0x15<<7 | 0x2D, + 31874 - 19968: jis0208<<14 | 0x16<<7 | 0x08, + 31875 - 19968: jis0208<<14 | 0x43<<7 | 0x42, + 31878 - 19968: jis0212<<14 | 0x32<<7 | 0x0B, + 31879 - 19968: jis0212<<14 | 0x32<<7 | 0x0C, + 31881 - 19968: jis0208<<14 | 0x29<<7 | 0x13, + 31883 - 19968: jis0208<<14 | 0x1E<<7 | 0x47, + 31885 - 19968: jis0208<<14 | 0x2B<<7 | 0x0F, + 31887 - 19968: jis0212<<14 | 0x32<<7 | 0x0D, + 31888 - 19968: jis0208<<14 | 0x43<<7 | 0x43, + 31890 - 19968: jis0208<<14 | 0x2D<<7 | 0x12, + 31892 - 19968: jis0212<<14 | 0x32<<7 | 0x0E, + 31893 - 19968: jis0208<<14 | 0x26<<7 | 0x53, + 31895 - 19968: jis0208<<14 | 0x20<<7 | 0x25, + 31896 - 19968: jis0208<<14 | 0x26<<7 | 0x13, + 31899 - 19968: jis0208<<14 | 0x1C<<7 | 0x2C, + 31902 - 19968: jis0212<<14 | 0x32<<7 | 0x0F, + 31903 - 19968: jis0208<<14 | 0x0F<<7 | 0x1F, + 31904 - 19968: jis0212<<14 | 0x32<<7 | 0x10, + 31905 - 19968: jis0208<<14 | 0x43<<7 | 0x48, + 31906 - 19968: jis0208<<14 | 0x43<<7 | 0x46, + 31908 - 19968: jis0208<<14 | 0x43<<7 | 0x44, + 31909 - 19968: jis0208<<14 | 0x13<<7 | 0x00, + 31910 - 19968: jis0212<<14 | 0x32<<7 | 0x11, + 31911 - 19968: jis0208<<14 | 0x1D<<7 | 0x30, + 31912 - 19968: jis0208<<14 | 0x43<<7 | 0x49, + 31915 - 19968: jis0208<<14 | 0x43<<7 | 0x47, + 31917 - 19968: jis0208<<14 | 0x43<<7 | 0x45, + 31918 - 19968: jis0208<<14 | 0x43<<7 | 0x4D, + 31920 - 19968: jis0212<<14 | 0x32<<7 | 0x12, + 31921 - 19968: jis0208<<14 | 0x43<<7 | 0x4C, + 31922 - 19968: jis0208<<14 | 0x43<<7 | 0x4B, + 31923 - 19968: jis0208<<14 | 0x43<<7 | 0x4A, + 31926 - 19968: jis0212<<14 | 0x32<<7 | 0x13, + 31927 - 19968: jis0212<<14 | 0x32<<7 | 0x14, + 31929 - 19968: jis0208<<14 | 0x43<<7 | 0x4E, + 31930 - 19968: jis0212<<14 | 0x32<<7 | 0x15, + 31931 - 19968: jis0212<<14 | 0x32<<7 | 0x16, + 31932 - 19968: jis0212<<14 | 0x32<<7 | 0x17, + 31933 - 19968: jis0208<<14 | 0x43<<7 | 0x4F, + 31934 - 19968: jis0208<<14 | 0x1F<<7 | 0x19, + 31935 - 19968: jis0212<<14 | 0x32<<7 | 0x18, + 31936 - 19968: jis0208<<14 | 0x43<<7 | 0x50, + 31938 - 19968: jis0208<<14 | 0x43<<7 | 0x52, + 31940 - 19968: jis0212<<14 | 0x32<<7 | 0x19, + 31941 - 19968: jis0208<<14 | 0x43<<7 | 0x51, + 31943 - 19968: jis0212<<14 | 0x32<<7 | 0x1A, + 31944 - 19968: jis0212<<14 | 0x32<<7 | 0x1B, + 31945 - 19968: jis0212<<14 | 0x32<<7 | 0x1C, + 31946 - 19968: jis0208<<14 | 0x17<<7 | 0x31, + 31949 - 19968: jis0212<<14 | 0x32<<7 | 0x1D, + 31950 - 19968: jis0208<<14 | 0x20<<7 | 0x17, + 31951 - 19968: jis0212<<14 | 0x32<<7 | 0x1E, + 31954 - 19968: jis0208<<14 | 0x43<<7 | 0x54, + 31955 - 19968: jis0212<<14 | 0x32<<7 | 0x1F, + 31956 - 19968: jis0212<<14 | 0x32<<7 | 0x20, + 31957 - 19968: jis0212<<14 | 0x32<<7 | 0x21, + 31958 - 19968: jis0208<<14 | 0x24<<7 | 0x5B, + 31959 - 19968: jis0212<<14 | 0x32<<7 | 0x22, + 31960 - 19968: jis0208<<14 | 0x43<<7 | 0x53, + 31961 - 19968: jis0212<<14 | 0x32<<7 | 0x23, + 31962 - 19968: jis0212<<14 | 0x32<<7 | 0x24, + 31964 - 19968: jis0208<<14 | 0x43<<7 | 0x55, + 31965 - 19968: jis0212<<14 | 0x32<<7 | 0x25, + 31966 - 19968: jis0208<<14 | 0x29<<7 | 0x14, + 31967 - 19968: jis0208<<14 | 0x20<<7 | 0x4B, + 31968 - 19968: jis0208<<14 | 0x18<<7 | 0x26, + 31970 - 19968: jis0208<<14 | 0x43<<7 | 0x56, + 31974 - 19968: jis0212<<14 | 0x32<<7 | 0x26, + 31975 - 19968: jis0208<<14 | 0x2D<<7 | 0x27, + 31977 - 19968: jis0212<<14 | 0x32<<7 | 0x27, + 31979 - 19968: jis0212<<14 | 0x32<<7 | 0x28, + 31983 - 19968: jis0208<<14 | 0x43<<7 | 0x58, + 31986 - 19968: jis0208<<14 | 0x43<<7 | 0x59, + 31988 - 19968: jis0208<<14 | 0x43<<7 | 0x5A, + 31989 - 19968: jis0212<<14 | 0x32<<7 | 0x29, + 31990 - 19968: jis0208<<14 | 0x43<<7 | 0x5B, + 31992 - 19968: jis0208<<14 | 0x1A<<7 | 0x44, + 31994 - 19968: jis0208<<14 | 0x43<<7 | 0x5C, + 31995 - 19968: jis0208<<14 | 0x16<<7 | 0x2E, + 31998 - 19968: jis0208<<14 | 0x14<<7 | 0x49, + 32000 - 19968: jis0208<<14 | 0x14<<7 | 0x09, + 32002 - 19968: jis0208<<14 | 0x44<<7 | 0x00, + 32003 - 19968: jis0212<<14 | 0x32<<7 | 0x2A, + 32004 - 19968: jis0208<<14 | 0x2B<<7 | 0x52, + 32005 - 19968: jis0208<<14 | 0x18<<7 | 0x27, + 32006 - 19968: jis0208<<14 | 0x43<<7 | 0x5D, + 32007 - 19968: jis0212<<14 | 0x32<<7 | 0x2B, + 32008 - 19968: jis0212<<14 | 0x32<<7 | 0x2C, + 32009 - 19968: jis0212<<14 | 0x32<<7 | 0x2D, + 32010 - 19968: jis0208<<14 | 0x44<<7 | 0x03, + 32011 - 19968: jis0208<<14 | 0x2B<<7 | 0x45, + 32013 - 19968: jis0208<<14 | 0x26<<7 | 0x1B, + 32015 - 19968: jis0212<<14 | 0x32<<7 | 0x2E, + 32016 - 19968: jis0208<<14 | 0x28<<7 | 0x12, + 32017 - 19968: jis0212<<14 | 0x32<<7 | 0x2F, + 32018 - 19968: jis0212<<14 | 0x32<<7 | 0x30, + 32019 - 19968: jis0212<<14 | 0x32<<7 | 0x31, + 32020 - 19968: jis0208<<14 | 0x1C<<7 | 0x42, + 32021 - 19968: jis0208<<14 | 0x44<<7 | 0x02, + 32022 - 19968: jis0212<<14 | 0x32<<7 | 0x32, + 32023 - 19968: jis0208<<14 | 0x1B<<7 | 0x32, + 32024 - 19968: jis0208<<14 | 0x18<<7 | 0x28, + 32025 - 19968: jis0208<<14 | 0x1A<<7 | 0x45, + 32026 - 19968: jis0208<<14 | 0x14<<7 | 0x48, + 32027 - 19968: jis0208<<14 | 0x29<<7 | 0x15, + 32028 - 19968: jis0208<<14 | 0x44<<7 | 0x01, + 32029 - 19968: jis0212<<14 | 0x32<<7 | 0x33, + 32030 - 19968: jis0212<<14 | 0x32<<7 | 0x34, + 32032 - 19968: jis0208<<14 | 0x20<<7 | 0x26, + 32033 - 19968: jis0208<<14 | 0x2A<<7 | 0x21, + 32034 - 19968: jis0208<<14 | 0x19<<7 | 0x56, + 32035 - 19968: jis0212<<14 | 0x32<<7 | 0x35, + 32038 - 19968: jis0212<<14 | 0x32<<7 | 0x36, + 32042 - 19968: jis0212<<14 | 0x32<<7 | 0x37, + 32043 - 19968: jis0208<<14 | 0x1A<<7 | 0x46, + 32044 - 19968: jis0208<<14 | 0x23<<7 | 0x3C, + 32045 - 19968: jis0212<<14 | 0x32<<7 | 0x38, + 32046 - 19968: jis0208<<14 | 0x44<<7 | 0x06, + 32047 - 19968: jis0208<<14 | 0x2D<<7 | 0x3E, + 32048 - 19968: jis0208<<14 | 0x19<<7 | 0x38, + 32049 - 19968: jis0212<<14 | 0x32<<7 | 0x39, + 32050 - 19968: jis0208<<14 | 0x44<<7 | 0x07, + 32051 - 19968: jis0208<<14 | 0x1E<<7 | 0x21, + 32053 - 19968: jis0208<<14 | 0x44<<7 | 0x09, + 32057 - 19968: jis0208<<14 | 0x1D<<7 | 0x31, + 32058 - 19968: jis0208<<14 | 0x19<<7 | 0x0F, + 32060 - 19968: jis0212<<14 | 0x32<<7 | 0x3A, + 32061 - 19968: jis0212<<14 | 0x32<<7 | 0x3B, + 32062 - 19968: jis0212<<14 | 0x32<<7 | 0x3C, + 32063 - 19968: jis0208<<14 | 0x44<<7 | 0x08, + 32064 - 19968: jis0212<<14 | 0x32<<7 | 0x3D, + 32065 - 19968: jis0212<<14 | 0x32<<7 | 0x3E, + 32066 - 19968: jis0208<<14 | 0x1C<<7 | 0x09, + 32067 - 19968: jis0208<<14 | 0x17<<7 | 0x1D, + 32068 - 19968: jis0208<<14 | 0x20<<7 | 0x27, + 32069 - 19968: jis0208<<14 | 0x44<<7 | 0x04, + 32070 - 19968: jis0208<<14 | 0x44<<7 | 0x0A, + 32071 - 19968: jis0212<<14 | 0x32<<7 | 0x3F, + 32072 - 19968: jis0208<<14 | 0x5A<<7 | 0x2D, + 32075 - 19968: jis0208<<14 | 0x44<<7 | 0x05, + 32076 - 19968: jis0208<<14 | 0x16<<7 | 0x2F, + 32077 - 19968: jis0212<<14 | 0x32<<7 | 0x41, + 32078 - 19968: jis0208<<14 | 0x44<<7 | 0x0D, + 32079 - 19968: jis0208<<14 | 0x44<<7 | 0x11, + 32080 - 19968: jis0208<<14 | 0x16<<7 | 0x4A, + 32081 - 19968: jis0212<<14 | 0x32<<7 | 0x42, + 32083 - 19968: jis0212<<14 | 0x32<<7 | 0x43, + 32086 - 19968: jis0208<<14 | 0x44<<7 | 0x0C, + 32087 - 19968: jis0212<<14 | 0x32<<7 | 0x44, + 32089 - 19968: jis0212<<14 | 0x32<<7 | 0x45, + 32090 - 19968: jis0212<<14 | 0x32<<7 | 0x46, + 32091 - 19968: jis0208<<14 | 0x44<<7 | 0x15, + 32092 - 19968: jis0208<<14 | 0x5A<<7 | 0x2E, + 32093 - 19968: jis0212<<14 | 0x32<<7 | 0x48, + 32094 - 19968: jis0208<<14 | 0x18<<7 | 0x29, + 32097 - 19968: jis0208<<14 | 0x2C<<7 | 0x4C, + 32098 - 19968: jis0208<<14 | 0x0F<<7 | 0x1B, + 32099 - 19968: jis0208<<14 | 0x44<<7 | 0x12, + 32101 - 19968: jis0212<<14 | 0x32<<7 | 0x49, + 32102 - 19968: jis0208<<14 | 0x14<<7 | 0x4A, + 32103 - 19968: jis0212<<14 | 0x32<<7 | 0x4A, + 32104 - 19968: jis0208<<14 | 0x44<<7 | 0x0F, + 32106 - 19968: jis0212<<14 | 0x32<<7 | 0x4B, + 32110 - 19968: jis0208<<14 | 0x44<<7 | 0x10, + 32112 - 19968: jis0212<<14 | 0x32<<7 | 0x4C, + 32113 - 19968: jis0208<<14 | 0x24<<7 | 0x5C, + 32114 - 19968: jis0208<<14 | 0x44<<7 | 0x0E, + 32115 - 19968: jis0208<<14 | 0x44<<7 | 0x0B, + 32117 - 19968: jis0208<<14 | 0x12<<7 | 0x07, + 32118 - 19968: jis0208<<14 | 0x1F<<7 | 0x43, + 32120 - 19968: jis0212<<14 | 0x32<<7 | 0x4D, + 32121 - 19968: jis0208<<14 | 0x17<<7 | 0x07, + 32122 - 19968: jis0212<<14 | 0x32<<7 | 0x4E, + 32123 - 19968: jis0212<<14 | 0x32<<7 | 0x4F, + 32125 - 19968: jis0208<<14 | 0x44<<7 | 0x17, + 32127 - 19968: jis0212<<14 | 0x32<<7 | 0x50, + 32129 - 19968: jis0212<<14 | 0x32<<7 | 0x51, + 32130 - 19968: jis0212<<14 | 0x32<<7 | 0x52, + 32131 - 19968: jis0212<<14 | 0x32<<7 | 0x53, + 32133 - 19968: jis0212<<14 | 0x32<<7 | 0x54, + 32134 - 19968: jis0212<<14 | 0x32<<7 | 0x55, + 32136 - 19968: jis0212<<14 | 0x32<<7 | 0x56, + 32137 - 19968: jis0208<<14 | 0x44<<7 | 0x14, + 32139 - 19968: jis0212<<14 | 0x32<<7 | 0x57, + 32140 - 19968: jis0212<<14 | 0x32<<7 | 0x58, + 32141 - 19968: jis0212<<14 | 0x32<<7 | 0x59, + 32143 - 19968: jis0208<<14 | 0x44<<7 | 0x16, + 32145 - 19968: jis0212<<14 | 0x32<<7 | 0x5A, + 32147 - 19968: jis0208<<14 | 0x44<<7 | 0x13, + 32150 - 19968: jis0212<<14 | 0x32<<7 | 0x5B, + 32151 - 19968: jis0212<<14 | 0x32<<7 | 0x5C, + 32153 - 19968: jis0208<<14 | 0x16<<7 | 0x30, + 32154 - 19968: jis0208<<14 | 0x21<<7 | 0x12, + 32155 - 19968: jis0208<<14 | 0x44<<7 | 0x18, + 32156 - 19968: jis0208<<14 | 0x20<<7 | 0x4D, + 32157 - 19968: jis0212<<14 | 0x32<<7 | 0x5D, + 32158 - 19968: jis0212<<14 | 0x33<<7 | 0x00, + 32159 - 19968: jis0208<<14 | 0x44<<7 | 0x25, + 32160 - 19968: jis0208<<14 | 0x5A<<7 | 0x30, + 32162 - 19968: jis0208<<14 | 0x44<<7 | 0x21, + 32163 - 19968: jis0208<<14 | 0x44<<7 | 0x1B, + 32166 - 19968: jis0212<<14 | 0x33<<7 | 0x01, + 32167 - 19968: jis0212<<14 | 0x33<<7 | 0x02, + 32170 - 19968: jis0212<<14 | 0x33<<7 | 0x03, + 32171 - 19968: jis0208<<14 | 0x44<<7 | 0x1F, + 32172 - 19968: jis0208<<14 | 0x1B<<7 | 0x59, + 32173 - 19968: jis0208<<14 | 0x0F<<7 | 0x3C, + 32174 - 19968: jis0208<<14 | 0x44<<7 | 0x1A, + 32175 - 19968: jis0208<<14 | 0x44<<7 | 0x22, + 32176 - 19968: jis0208<<14 | 0x44<<7 | 0x26, + 32177 - 19968: jis0208<<14 | 0x18<<7 | 0x2A, + 32178 - 19968: jis0208<<14 | 0x2B<<7 | 0x35, + 32179 - 19968: jis0212<<14 | 0x33<<7 | 0x04, + 32180 - 19968: jis0208<<14 | 0x23<<7 | 0x35, + 32181 - 19968: jis0208<<14 | 0x44<<7 | 0x1C, + 32182 - 19968: jis0212<<14 | 0x33<<7 | 0x05, + 32183 - 19968: jis0208<<14 | 0x5A<<7 | 0x2F, + 32184 - 19968: jis0208<<14 | 0x44<<7 | 0x24, + 32185 - 19968: jis0212<<14 | 0x33<<7 | 0x07, + 32186 - 19968: jis0208<<14 | 0x44<<7 | 0x19, + 32187 - 19968: jis0208<<14 | 0x22<<7 | 0x1D, + 32189 - 19968: jis0208<<14 | 0x44<<7 | 0x1E, + 32190 - 19968: jis0208<<14 | 0x0F<<7 | 0x1C, + 32191 - 19968: jis0208<<14 | 0x2B<<7 | 0x29, + 32194 - 19968: jis0212<<14 | 0x33<<7 | 0x08, + 32195 - 19968: jis0212<<14 | 0x33<<7 | 0x09, + 32196 - 19968: jis0212<<14 | 0x33<<7 | 0x0A, + 32197 - 19968: jis0212<<14 | 0x33<<7 | 0x0B, + 32198 - 19968: jis0212<<14 | 0x33<<7 | 0x0C, + 32199 - 19968: jis0208<<14 | 0x44<<7 | 0x1D, + 32202 - 19968: jis0208<<14 | 0x15<<7 | 0x3A, + 32203 - 19968: jis0208<<14 | 0x27<<7 | 0x4B, + 32204 - 19968: jis0212<<14 | 0x33<<7 | 0x0D, + 32205 - 19968: jis0212<<14 | 0x33<<7 | 0x0E, + 32206 - 19968: jis0212<<14 | 0x33<<7 | 0x0F, + 32207 - 19968: jis0208<<14 | 0x20<<7 | 0x4C, + 32209 - 19968: jis0208<<14 | 0x2D<<7 | 0x2F, + 32210 - 19968: jis0208<<14 | 0x1C<<7 | 0x4E, + 32213 - 19968: jis0208<<14 | 0x44<<7 | 0x4D, + 32214 - 19968: jis0208<<14 | 0x5A<<7 | 0x31, + 32215 - 19968: jis0212<<14 | 0x33<<7 | 0x10, + 32216 - 19968: jis0208<<14 | 0x44<<7 | 0x27, + 32217 - 19968: jis0212<<14 | 0x33<<7 | 0x11, + 32218 - 19968: jis0208<<14 | 0x1F<<7 | 0x5D, + 32220 - 19968: jis0208<<14 | 0x44<<7 | 0x23, + 32221 - 19968: jis0208<<14 | 0x44<<7 | 0x28, + 32222 - 19968: jis0208<<14 | 0x44<<7 | 0x2A, + 32224 - 19968: jis0208<<14 | 0x23<<7 | 0x58, + 32225 - 19968: jis0208<<14 | 0x44<<7 | 0x2D, + 32226 - 19968: jis0212<<14 | 0x33<<7 | 0x13, + 32228 - 19968: jis0208<<14 | 0x44<<7 | 0x29, + 32229 - 19968: jis0212<<14 | 0x33<<7 | 0x14, + 32230 - 19968: jis0212<<14 | 0x33<<7 | 0x15, + 32232 - 19968: jis0208<<14 | 0x29<<7 | 0x33, + 32233 - 19968: jis0208<<14 | 0x13<<7 | 0x2A, + 32234 - 19968: jis0212<<14 | 0x33<<7 | 0x16, + 32235 - 19968: jis0212<<14 | 0x33<<7 | 0x17, + 32236 - 19968: jis0208<<14 | 0x2B<<7 | 0x2A, + 32237 - 19968: jis0212<<14 | 0x33<<7 | 0x18, + 32239 - 19968: jis0208<<14 | 0x0F<<7 | 0x3D, + 32241 - 19968: jis0212<<14 | 0x33<<7 | 0x19, + 32242 - 19968: jis0208<<14 | 0x44<<7 | 0x2C, + 32244 - 19968: jis0208<<14 | 0x2D<<7 | 0x5C, + 32245 - 19968: jis0212<<14 | 0x33<<7 | 0x1A, + 32246 - 19968: jis0212<<14 | 0x33<<7 | 0x1B, + 32249 - 19968: jis0212<<14 | 0x33<<7 | 0x1C, + 32250 - 19968: jis0212<<14 | 0x33<<7 | 0x1D, + 32251 - 19968: jis0208<<14 | 0x44<<7 | 0x2B, + 32256 - 19968: jis0212<<14 | 0x33<<7 | 0x12, + 32257 - 19968: jis0208<<14 | 0x10<<7 | 0x4E, + 32260 - 19968: jis0208<<14 | 0x25<<7 | 0x4B, + 32261 - 19968: jis0208<<14 | 0x44<<7 | 0x2E, + 32264 - 19968: jis0212<<14 | 0x33<<7 | 0x1E, + 32265 - 19968: jis0208<<14 | 0x44<<7 | 0x35, + 32266 - 19968: jis0208<<14 | 0x44<<7 | 0x2F, + 32267 - 19968: jis0208<<14 | 0x44<<7 | 0x36, + 32272 - 19968: jis0212<<14 | 0x33<<7 | 0x1F, + 32273 - 19968: jis0212<<14 | 0x33<<7 | 0x20, + 32274 - 19968: jis0208<<14 | 0x44<<7 | 0x32, + 32277 - 19968: jis0212<<14 | 0x33<<7 | 0x21, + 32279 - 19968: jis0212<<14 | 0x33<<7 | 0x22, + 32283 - 19968: jis0208<<14 | 0x26<<7 | 0x5A, + 32284 - 19968: jis0212<<14 | 0x33<<7 | 0x23, + 32285 - 19968: jis0212<<14 | 0x33<<7 | 0x24, + 32286 - 19968: jis0208<<14 | 0x1B<<7 | 0x29, + 32287 - 19968: jis0208<<14 | 0x44<<7 | 0x34, + 32288 - 19968: jis0212<<14 | 0x33<<7 | 0x25, + 32289 - 19968: jis0208<<14 | 0x44<<7 | 0x31, + 32290 - 19968: jis0208<<14 | 0x44<<7 | 0x37, + 32291 - 19968: jis0208<<14 | 0x44<<7 | 0x30, + 32294 - 19968: jis0208<<14 | 0x1C<<7 | 0x23, + 32295 - 19968: jis0212<<14 | 0x33<<7 | 0x26, + 32296 - 19968: jis0212<<14 | 0x33<<7 | 0x27, + 32299 - 19968: jis0208<<14 | 0x2A<<7 | 0x04, + 32300 - 19968: jis0212<<14 | 0x33<<7 | 0x28, + 32301 - 19968: jis0212<<14 | 0x33<<7 | 0x29, + 32302 - 19968: jis0208<<14 | 0x1C<<7 | 0x2B, + 32303 - 19968: jis0212<<14 | 0x33<<7 | 0x2A, + 32305 - 19968: jis0208<<14 | 0x44<<7 | 0x33, + 32306 - 19968: jis0208<<14 | 0x44<<7 | 0x3F, + 32307 - 19968: jis0212<<14 | 0x33<<7 | 0x2B, + 32309 - 19968: jis0208<<14 | 0x44<<7 | 0x3B, + 32310 - 19968: jis0212<<14 | 0x33<<7 | 0x2C, + 32311 - 19968: jis0208<<14 | 0x44<<7 | 0x3E, + 32313 - 19968: jis0208<<14 | 0x44<<7 | 0x3C, + 32314 - 19968: jis0208<<14 | 0x44<<7 | 0x40, + 32315 - 19968: jis0208<<14 | 0x44<<7 | 0x3A, + 32317 - 19968: jis0208<<14 | 0x44<<7 | 0x20, + 32318 - 19968: jis0208<<14 | 0x1F<<7 | 0x32, + 32319 - 19968: jis0212<<14 | 0x33<<7 | 0x2D, + 32321 - 19968: jis0208<<14 | 0x27<<7 | 0x2A, + 32323 - 19968: jis0208<<14 | 0x44<<7 | 0x3D, + 32324 - 19968: jis0212<<14 | 0x33<<7 | 0x2E, + 32325 - 19968: jis0212<<14 | 0x33<<7 | 0x2F, + 32326 - 19968: jis0208<<14 | 0x44<<7 | 0x38, + 32327 - 19968: jis0212<<14 | 0x33<<7 | 0x30, + 32330 - 19968: jis0208<<14 | 0x20<<7 | 0x00, + 32331 - 19968: jis0208<<14 | 0x16<<7 | 0x31, + 32333 - 19968: jis0208<<14 | 0x1C<<7 | 0x0A, + 32334 - 19968: jis0212<<14 | 0x33<<7 | 0x31, + 32336 - 19968: jis0212<<14 | 0x33<<7 | 0x32, + 32338 - 19968: jis0208<<14 | 0x5A<<7 | 0x32, + 32340 - 19968: jis0208<<14 | 0x1E<<7 | 0x04, + 32341 - 19968: jis0208<<14 | 0x20<<7 | 0x15, + 32342 - 19968: jis0208<<14 | 0x44<<7 | 0x43, + 32344 - 19968: jis0212<<14 | 0x33<<7 | 0x34, + 32345 - 19968: jis0208<<14 | 0x44<<7 | 0x45, + 32346 - 19968: jis0208<<14 | 0x44<<7 | 0x46, + 32349 - 19968: jis0208<<14 | 0x44<<7 | 0x42, + 32350 - 19968: jis0208<<14 | 0x44<<7 | 0x44, + 32351 - 19968: jis0212<<14 | 0x33<<7 | 0x35, + 32353 - 19968: jis0212<<14 | 0x33<<7 | 0x36, + 32354 - 19968: jis0212<<14 | 0x33<<7 | 0x37, + 32357 - 19968: jis0212<<14 | 0x33<<7 | 0x38, + 32358 - 19968: jis0208<<14 | 0x44<<7 | 0x39, + 32359 - 19968: jis0208<<14 | 0x44<<7 | 0x41, + 32361 - 19968: jis0208<<14 | 0x44<<7 | 0x49, + 32362 - 19968: jis0208<<14 | 0x44<<7 | 0x48, + 32363 - 19968: jis0212<<14 | 0x33<<7 | 0x39, + 32365 - 19968: jis0208<<14 | 0x2A<<7 | 0x59, + 32366 - 19968: jis0212<<14 | 0x33<<7 | 0x3A, + 32367 - 19968: jis0212<<14 | 0x33<<7 | 0x3B, + 32368 - 19968: jis0208<<14 | 0x16<<7 | 0x0A, + 32371 - 19968: jis0212<<14 | 0x33<<7 | 0x3C, + 32376 - 19968: jis0212<<14 | 0x33<<7 | 0x3D, + 32377 - 19968: jis0208<<14 | 0x44<<7 | 0x47, + 32379 - 19968: jis0208<<14 | 0x44<<7 | 0x4B, + 32380 - 19968: jis0208<<14 | 0x44<<7 | 0x4A, + 32381 - 19968: jis0208<<14 | 0x44<<7 | 0x4E, + 32382 - 19968: jis0212<<14 | 0x33<<7 | 0x3E, + 32383 - 19968: jis0208<<14 | 0x44<<7 | 0x50, + 32385 - 19968: jis0212<<14 | 0x33<<7 | 0x3F, + 32386 - 19968: jis0208<<14 | 0x1A<<7 | 0x1B, + 32387 - 19968: jis0208<<14 | 0x44<<7 | 0x4C, + 32390 - 19968: jis0212<<14 | 0x33<<7 | 0x40, + 32391 - 19968: jis0212<<14 | 0x33<<7 | 0x41, + 32392 - 19968: jis0208<<14 | 0x44<<7 | 0x51, + 32393 - 19968: jis0208<<14 | 0x44<<7 | 0x52, + 32394 - 19968: jis0208<<14 | 0x58<<7 | 0x00, + 32396 - 19968: jis0208<<14 | 0x44<<7 | 0x53, + 32397 - 19968: jis0212<<14 | 0x33<<7 | 0x43, + 32398 - 19968: jis0208<<14 | 0x44<<7 | 0x59, + 32399 - 19968: jis0208<<14 | 0x24<<7 | 0x1A, + 32400 - 19968: jis0208<<14 | 0x44<<7 | 0x55, + 32401 - 19968: jis0212<<14 | 0x33<<7 | 0x44, + 32402 - 19968: jis0208<<14 | 0x44<<7 | 0x54, + 32403 - 19968: jis0208<<14 | 0x44<<7 | 0x56, + 32404 - 19968: jis0208<<14 | 0x44<<7 | 0x57, + 32405 - 19968: jis0212<<14 | 0x33<<7 | 0x45, + 32406 - 19968: jis0208<<14 | 0x44<<7 | 0x58, + 32408 - 19968: jis0212<<14 | 0x33<<7 | 0x46, + 32410 - 19968: jis0212<<14 | 0x33<<7 | 0x47, + 32411 - 19968: jis0208<<14 | 0x44<<7 | 0x5A, + 32412 - 19968: jis0208<<14 | 0x44<<7 | 0x5B, + 32413 - 19968: jis0212<<14 | 0x33<<7 | 0x48, + 32414 - 19968: jis0212<<14 | 0x33<<7 | 0x49, + 32566 - 19968: jis0208<<14 | 0x13<<7 | 0x2B, + 32568 - 19968: jis0208<<14 | 0x44<<7 | 0x5C, + 32570 - 19968: jis0208<<14 | 0x44<<7 | 0x5D, + 32571 - 19968: jis0212<<14 | 0x33<<7 | 0x4B, + 32572 - 19968: jis0212<<14 | 0x33<<7 | 0x4A, + 32573 - 19968: jis0212<<14 | 0x33<<7 | 0x4C, + 32574 - 19968: jis0212<<14 | 0x33<<7 | 0x4D, + 32575 - 19968: jis0212<<14 | 0x33<<7 | 0x4E, + 32579 - 19968: jis0212<<14 | 0x33<<7 | 0x4F, + 32580 - 19968: jis0212<<14 | 0x33<<7 | 0x50, + 32581 - 19968: jis0208<<14 | 0x45<<7 | 0x00, + 32583 - 19968: jis0208<<14 | 0x5A<<7 | 0x33, + 32588 - 19968: jis0208<<14 | 0x45<<7 | 0x01, + 32589 - 19968: jis0208<<14 | 0x45<<7 | 0x02, + 32590 - 19968: jis0208<<14 | 0x45<<7 | 0x03, + 32591 - 19968: jis0212<<14 | 0x33<<7 | 0x52, + 32592 - 19968: jis0208<<14 | 0x45<<7 | 0x04, + 32593 - 19968: jis0208<<14 | 0x45<<7 | 0x05, + 32594 - 19968: jis0212<<14 | 0x33<<7 | 0x53, + 32595 - 19968: jis0212<<14 | 0x33<<7 | 0x54, + 32596 - 19968: jis0208<<14 | 0x45<<7 | 0x07, + 32597 - 19968: jis0208<<14 | 0x45<<7 | 0x06, + 32600 - 19968: jis0208<<14 | 0x45<<7 | 0x08, + 32603 - 19968: jis0212<<14 | 0x33<<7 | 0x55, + 32604 - 19968: jis0212<<14 | 0x33<<7 | 0x56, + 32605 - 19968: jis0212<<14 | 0x33<<7 | 0x57, + 32607 - 19968: jis0208<<14 | 0x45<<7 | 0x09, + 32608 - 19968: jis0208<<14 | 0x45<<7 | 0x0A, + 32609 - 19968: jis0212<<14 | 0x33<<7 | 0x58, + 32611 - 19968: jis0212<<14 | 0x33<<7 | 0x59, + 32612 - 19968: jis0212<<14 | 0x33<<7 | 0x5A, + 32613 - 19968: jis0212<<14 | 0x33<<7 | 0x5B, + 32614 - 19968: jis0212<<14 | 0x33<<7 | 0x5C, + 32615 - 19968: jis0208<<14 | 0x45<<7 | 0x0D, + 32616 - 19968: jis0208<<14 | 0x45<<7 | 0x0B, + 32617 - 19968: jis0208<<14 | 0x45<<7 | 0x0C, + 32618 - 19968: jis0208<<14 | 0x19<<7 | 0x40, + 32619 - 19968: jis0208<<14 | 0x16<<7 | 0x32, + 32621 - 19968: jis0212<<14 | 0x33<<7 | 0x5D, + 32622 - 19968: jis0208<<14 | 0x22<<7 | 0x35, + 32624 - 19968: jis0208<<14 | 0x27<<7 | 0x12, + 32625 - 19968: jis0212<<14 | 0x34<<7 | 0x00, + 32626 - 19968: jis0208<<14 | 0x1C<<7 | 0x4F, + 32629 - 19968: jis0208<<14 | 0x26<<7 | 0x2C, + 32631 - 19968: jis0208<<14 | 0x27<<7 | 0x4C, + 32632 - 19968: jis0208<<14 | 0x45<<7 | 0x0E, + 32633 - 19968: jis0208<<14 | 0x37<<7 | 0x4C, + 32637 - 19968: jis0212<<14 | 0x34<<7 | 0x01, + 32638 - 19968: jis0212<<14 | 0x34<<7 | 0x02, + 32639 - 19968: jis0212<<14 | 0x34<<7 | 0x03, + 32640 - 19968: jis0212<<14 | 0x34<<7 | 0x04, + 32642 - 19968: jis0208<<14 | 0x45<<7 | 0x0F, + 32643 - 19968: jis0208<<14 | 0x45<<7 | 0x11, + 32645 - 19968: jis0208<<14 | 0x2C<<7 | 0x44, + 32646 - 19968: jis0208<<14 | 0x45<<7 | 0x10, + 32647 - 19968: jis0208<<14 | 0x45<<7 | 0x13, + 32648 - 19968: jis0208<<14 | 0x45<<7 | 0x12, + 32650 - 19968: jis0208<<14 | 0x2C<<7 | 0x32, + 32651 - 19968: jis0212<<14 | 0x34<<7 | 0x05, + 32652 - 19968: jis0208<<14 | 0x45<<7 | 0x14, + 32653 - 19968: jis0212<<14 | 0x34<<7 | 0x06, + 32654 - 19968: jis0208<<14 | 0x27<<7 | 0x5D, + 32655 - 19968: jis0212<<14 | 0x34<<7 | 0x07, + 32656 - 19968: jis0212<<14 | 0x34<<7 | 0x08, + 32657 - 19968: jis0212<<14 | 0x34<<7 | 0x09, + 32660 - 19968: jis0208<<14 | 0x45<<7 | 0x15, + 32662 - 19968: jis0212<<14 | 0x34<<7 | 0x0A, + 32663 - 19968: jis0212<<14 | 0x34<<7 | 0x0B, + 32666 - 19968: jis0208<<14 | 0x45<<7 | 0x18, + 32668 - 19968: jis0212<<14 | 0x34<<7 | 0x0C, + 32669 - 19968: jis0208<<14 | 0x45<<7 | 0x17, + 32670 - 19968: jis0208<<14 | 0x45<<7 | 0x16, + 32673 - 19968: jis0208<<14 | 0x5A<<7 | 0x34, + 32674 - 19968: jis0212<<14 | 0x34<<7 | 0x0E, + 32675 - 19968: jis0208<<14 | 0x45<<7 | 0x19, + 32676 - 19968: jis0208<<14 | 0x16<<7 | 0x11, + 32678 - 19968: jis0212<<14 | 0x34<<7 | 0x0F, + 32680 - 19968: jis0208<<14 | 0x20<<7 | 0x01, + 32681 - 19968: jis0208<<14 | 0x14<<7 | 0x20, + 32682 - 19968: jis0212<<14 | 0x34<<7 | 0x10, + 32685 - 19968: jis0212<<14 | 0x34<<7 | 0x11, + 32686 - 19968: jis0208<<14 | 0x45<<7 | 0x1D, + 32687 - 19968: jis0208<<14 | 0x45<<7 | 0x1A, + 32690 - 19968: jis0208<<14 | 0x45<<7 | 0x1B, + 32692 - 19968: jis0212<<14 | 0x34<<7 | 0x12, + 32694 - 19968: jis0208<<14 | 0x45<<7 | 0x1E, + 32696 - 19968: jis0208<<14 | 0x45<<7 | 0x1F, + 32697 - 19968: jis0208<<14 | 0x45<<7 | 0x1C, + 32700 - 19968: jis0212<<14 | 0x34<<7 | 0x13, + 32701 - 19968: jis0208<<14 | 0x10<<7 | 0x08, + 32703 - 19968: jis0212<<14 | 0x34<<7 | 0x14, + 32704 - 19968: jis0212<<14 | 0x34<<7 | 0x15, + 32705 - 19968: jis0208<<14 | 0x11<<7 | 0x06, + 32707 - 19968: jis0212<<14 | 0x34<<7 | 0x16, + 32709 - 19968: jis0208<<14 | 0x45<<7 | 0x21, + 32710 - 19968: jis0208<<14 | 0x45<<7 | 0x22, + 32712 - 19968: jis0212<<14 | 0x34<<7 | 0x17, + 32714 - 19968: jis0208<<14 | 0x45<<7 | 0x23, + 32716 - 19968: jis0208<<14 | 0x2C<<7 | 0x41, + 32718 - 19968: jis0212<<14 | 0x34<<7 | 0x18, + 32719 - 19968: jis0212<<14 | 0x34<<7 | 0x19, + 32722 - 19968: jis0208<<14 | 0x1C<<7 | 0x0B, + 32724 - 19968: jis0208<<14 | 0x45<<7 | 0x25, + 32725 - 19968: jis0208<<14 | 0x45<<7 | 0x24, + 32731 - 19968: jis0212<<14 | 0x34<<7 | 0x1A, + 32735 - 19968: jis0212<<14 | 0x34<<7 | 0x1B, + 32736 - 19968: jis0208<<14 | 0x1E<<7 | 0x48, + 32737 - 19968: jis0208<<14 | 0x45<<7 | 0x26, + 32739 - 19968: jis0212<<14 | 0x34<<7 | 0x1C, + 32741 - 19968: jis0212<<14 | 0x34<<7 | 0x1D, + 32742 - 19968: jis0208<<14 | 0x45<<7 | 0x27, + 32744 - 19968: jis0212<<14 | 0x34<<7 | 0x1E, + 32745 - 19968: jis0208<<14 | 0x45<<7 | 0x28, + 32747 - 19968: jis0208<<14 | 0x13<<7 | 0x44, + 32748 - 19968: jis0212<<14 | 0x34<<7 | 0x1F, + 32750 - 19968: jis0212<<14 | 0x34<<7 | 0x20, + 32751 - 19968: jis0212<<14 | 0x34<<7 | 0x21, + 32752 - 19968: jis0208<<14 | 0x13<<7 | 0x2C, + 32754 - 19968: jis0212<<14 | 0x34<<7 | 0x22, + 32755 - 19968: jis0208<<14 | 0x45<<7 | 0x29, + 32761 - 19968: jis0208<<14 | 0x45<<7 | 0x2A, + 32762 - 19968: jis0212<<14 | 0x34<<7 | 0x23, + 32763 - 19968: jis0208<<14 | 0x2A<<7 | 0x3C, + 32764 - 19968: jis0208<<14 | 0x2C<<7 | 0x42, + 32765 - 19968: jis0212<<14 | 0x34<<7 | 0x24, + 32766 - 19968: jis0212<<14 | 0x34<<7 | 0x25, + 32767 - 19968: jis0212<<14 | 0x34<<7 | 0x26, + 32768 - 19968: jis0208<<14 | 0x2C<<7 | 0x33, + 32769 - 19968: jis0208<<14 | 0x2E<<7 | 0x16, + 32771 - 19968: jis0208<<14 | 0x18<<7 | 0x2C, + 32772 - 19968: jis0208<<14 | 0x45<<7 | 0x2D, + 32773 - 19968: jis0208<<14 | 0x1B<<7 | 0x33, + 32774 - 19968: jis0208<<14 | 0x45<<7 | 0x2C, + 32775 - 19968: jis0212<<14 | 0x34<<7 | 0x27, + 32776 - 19968: jis0212<<14 | 0x34<<7 | 0x28, + 32778 - 19968: jis0212<<14 | 0x34<<7 | 0x29, + 32779 - 19968: jis0208<<14 | 0x45<<7 | 0x2E, + 32780 - 19968: jis0208<<14 | 0x1B<<7 | 0x08, + 32781 - 19968: jis0212<<14 | 0x34<<7 | 0x2A, + 32782 - 19968: jis0212<<14 | 0x34<<7 | 0x2B, + 32783 - 19968: jis0212<<14 | 0x34<<7 | 0x2C, + 32784 - 19968: jis0208<<14 | 0x21<<7 | 0x30, + 32785 - 19968: jis0212<<14 | 0x34<<7 | 0x2D, + 32786 - 19968: jis0208<<14 | 0x45<<7 | 0x2F, + 32787 - 19968: jis0212<<14 | 0x34<<7 | 0x2E, + 32788 - 19968: jis0212<<14 | 0x34<<7 | 0x2F, + 32789 - 19968: jis0208<<14 | 0x18<<7 | 0x2B, + 32790 - 19968: jis0212<<14 | 0x34<<7 | 0x30, + 32791 - 19968: jis0208<<14 | 0x2B<<7 | 0x36, + 32792 - 19968: jis0208<<14 | 0x45<<7 | 0x30, + 32793 - 19968: jis0208<<14 | 0x45<<7 | 0x31, + 32796 - 19968: jis0208<<14 | 0x45<<7 | 0x32, + 32797 - 19968: jis0212<<14 | 0x34<<7 | 0x31, + 32798 - 19968: jis0212<<14 | 0x34<<7 | 0x32, + 32799 - 19968: jis0212<<14 | 0x34<<7 | 0x33, + 32800 - 19968: jis0212<<14 | 0x34<<7 | 0x34, + 32801 - 19968: jis0208<<14 | 0x45<<7 | 0x33, + 32804 - 19968: jis0212<<14 | 0x34<<7 | 0x35, + 32806 - 19968: jis0212<<14 | 0x34<<7 | 0x36, + 32808 - 19968: jis0208<<14 | 0x45<<7 | 0x34, + 32812 - 19968: jis0212<<14 | 0x34<<7 | 0x37, + 32814 - 19968: jis0212<<14 | 0x34<<7 | 0x38, + 32816 - 19968: jis0212<<14 | 0x34<<7 | 0x39, + 32819 - 19968: jis0208<<14 | 0x1B<<7 | 0x09, + 32820 - 19968: jis0212<<14 | 0x34<<7 | 0x3A, + 32821 - 19968: jis0212<<14 | 0x34<<7 | 0x3B, + 32822 - 19968: jis0208<<14 | 0x2B<<7 | 0x4C, + 32823 - 19968: jis0212<<14 | 0x34<<7 | 0x3C, + 32825 - 19968: jis0212<<14 | 0x34<<7 | 0x3D, + 32826 - 19968: jis0212<<14 | 0x34<<7 | 0x3E, + 32827 - 19968: jis0208<<14 | 0x45<<7 | 0x36, + 32828 - 19968: jis0212<<14 | 0x34<<7 | 0x3F, + 32829 - 19968: jis0208<<14 | 0x22<<7 | 0x1E, + 32830 - 19968: jis0212<<14 | 0x34<<7 | 0x40, + 32831 - 19968: jis0208<<14 | 0x45<<7 | 0x35, + 32832 - 19968: jis0212<<14 | 0x34<<7 | 0x41, + 32836 - 19968: jis0212<<14 | 0x34<<7 | 0x42, + 32838 - 19968: jis0208<<14 | 0x45<<7 | 0x38, + 32842 - 19968: jis0208<<14 | 0x45<<7 | 0x37, + 32850 - 19968: jis0208<<14 | 0x45<<7 | 0x39, + 32854 - 19968: jis0208<<14 | 0x1F<<7 | 0x1A, + 32856 - 19968: jis0208<<14 | 0x45<<7 | 0x3A, + 32858 - 19968: jis0208<<14 | 0x45<<7 | 0x3B, + 32862 - 19968: jis0208<<14 | 0x29<<7 | 0x18, + 32863 - 19968: jis0208<<14 | 0x45<<7 | 0x3C, + 32864 - 19968: jis0212<<14 | 0x34<<7 | 0x43, + 32865 - 19968: jis0208<<14 | 0x20<<7 | 0x4E, + 32866 - 19968: jis0208<<14 | 0x45<<7 | 0x3D, + 32868 - 19968: jis0212<<14 | 0x34<<7 | 0x44, + 32870 - 19968: jis0212<<14 | 0x34<<7 | 0x45, + 32872 - 19968: jis0208<<14 | 0x45<<7 | 0x3E, + 32877 - 19968: jis0212<<14 | 0x34<<7 | 0x46, + 32879 - 19968: jis0208<<14 | 0x2D<<7 | 0x5D, + 32880 - 19968: jis0208<<14 | 0x45<<7 | 0x41, + 32881 - 19968: jis0212<<14 | 0x34<<7 | 0x47, + 32882 - 19968: jis0208<<14 | 0x45<<7 | 0x40, + 32883 - 19968: jis0208<<14 | 0x45<<7 | 0x3F, + 32884 - 19968: jis0208<<14 | 0x23<<7 | 0x0F, + 32885 - 19968: jis0212<<14 | 0x34<<7 | 0x48, + 32886 - 19968: jis0208<<14 | 0x45<<7 | 0x42, + 32887 - 19968: jis0208<<14 | 0x1E<<7 | 0x05, + 32889 - 19968: jis0208<<14 | 0x45<<7 | 0x43, + 32893 - 19968: jis0208<<14 | 0x45<<7 | 0x44, + 32894 - 19968: jis0208<<14 | 0x2E<<7 | 0x17, + 32895 - 19968: jis0208<<14 | 0x45<<7 | 0x45, + 32897 - 19968: jis0212<<14 | 0x34<<7 | 0x49, + 32900 - 19968: jis0208<<14 | 0x45<<7 | 0x46, + 32901 - 19968: jis0208<<14 | 0x45<<7 | 0x48, + 32902 - 19968: jis0208<<14 | 0x45<<7 | 0x47, + 32903 - 19968: jis0208<<14 | 0x27<<7 | 0x04, + 32904 - 19968: jis0212<<14 | 0x34<<7 | 0x4A, + 32905 - 19968: jis0208<<14 | 0x25<<7 | 0x58, + 32907 - 19968: jis0208<<14 | 0x2E<<7 | 0x1D, + 32908 - 19968: jis0208<<14 | 0x27<<7 | 0x08, + 32910 - 19968: jis0212<<14 | 0x34<<7 | 0x4B, + 32915 - 19968: jis0208<<14 | 0x45<<7 | 0x4A, + 32918 - 19968: jis0208<<14 | 0x1D<<7 | 0x32, + 32920 - 19968: jis0208<<14 | 0x28<<7 | 0x09, + 32922 - 19968: jis0208<<14 | 0x45<<7 | 0x4B, + 32923 - 19968: jis0208<<14 | 0x45<<7 | 0x49, + 32924 - 19968: jis0212<<14 | 0x34<<7 | 0x4C, + 32925 - 19968: jis0208<<14 | 0x13<<7 | 0x2D, + 32926 - 19968: jis0212<<14 | 0x34<<7 | 0x4D, + 32929 - 19968: jis0208<<14 | 0x17<<7 | 0x33, + 32930 - 19968: jis0208<<14 | 0x1A<<7 | 0x47, + 32933 - 19968: jis0208<<14 | 0x27<<7 | 0x4D, + 32934 - 19968: jis0212<<14 | 0x34<<7 | 0x4E, + 32935 - 19968: jis0212<<14 | 0x34<<7 | 0x4F, + 32937 - 19968: jis0208<<14 | 0x17<<7 | 0x09, + 32938 - 19968: jis0208<<14 | 0x2A<<7 | 0x22, + 32939 - 19968: jis0212<<14 | 0x34<<7 | 0x50, + 32940 - 19968: jis0208<<14 | 0x45<<7 | 0x4E, + 32941 - 19968: jis0208<<14 | 0x45<<7 | 0x4C, + 32943 - 19968: jis0208<<14 | 0x18<<7 | 0x2D, + 32945 - 19968: jis0208<<14 | 0x18<<7 | 0x2E, + 32946 - 19968: jis0208<<14 | 0x0F<<7 | 0x48, + 32948 - 19968: jis0208<<14 | 0x19<<7 | 0x47, + 32952 - 19968: jis0212<<14 | 0x34<<7 | 0x51, + 32953 - 19968: jis0212<<14 | 0x34<<7 | 0x52, + 32954 - 19968: jis0208<<14 | 0x26<<7 | 0x38, + 32963 - 19968: jis0208<<14 | 0x0F<<7 | 0x3E, + 32964 - 19968: jis0208<<14 | 0x45<<7 | 0x53, + 32966 - 19968: jis0208<<14 | 0x22<<7 | 0x1F, + 32968 - 19968: jis0212<<14 | 0x34<<7 | 0x53, + 32972 - 19968: jis0208<<14 | 0x26<<7 | 0x37, + 32973 - 19968: jis0212<<14 | 0x34<<7 | 0x54, + 32974 - 19968: jis0208<<14 | 0x21<<7 | 0x3A, + 32975 - 19968: jis0212<<14 | 0x34<<7 | 0x55, + 32978 - 19968: jis0212<<14 | 0x34<<7 | 0x56, + 32980 - 19968: jis0212<<14 | 0x34<<7 | 0x57, + 32981 - 19968: jis0212<<14 | 0x34<<7 | 0x58, + 32982 - 19968: jis0208<<14 | 0x45<<7 | 0x55, + 32983 - 19968: jis0212<<14 | 0x34<<7 | 0x59, + 32984 - 19968: jis0212<<14 | 0x34<<7 | 0x5A, + 32985 - 19968: jis0208<<14 | 0x45<<7 | 0x51, + 32986 - 19968: jis0208<<14 | 0x45<<7 | 0x54, + 32987 - 19968: jis0208<<14 | 0x45<<7 | 0x4F, + 32989 - 19968: jis0208<<14 | 0x45<<7 | 0x52, + 32990 - 19968: jis0208<<14 | 0x2A<<7 | 0x05, + 32992 - 19968: jis0212<<14 | 0x34<<7 | 0x5B, + 32993 - 19968: jis0208<<14 | 0x17<<7 | 0x34, + 32996 - 19968: jis0208<<14 | 0x0F<<7 | 0x5C, + 32997 - 19968: jis0208<<14 | 0x45<<7 | 0x50, + 33005 - 19968: jis0212<<14 | 0x34<<7 | 0x5C, + 33006 - 19968: jis0212<<14 | 0x34<<7 | 0x5D, + 33007 - 19968: jis0208<<14 | 0x45<<7 | 0x57, + 33008 - 19968: jis0212<<14 | 0x35<<7 | 0x00, + 33009 - 19968: jis0208<<14 | 0x45<<7 | 0x58, + 33010 - 19968: jis0212<<14 | 0x35<<7 | 0x01, + 33011 - 19968: jis0212<<14 | 0x35<<7 | 0x02, + 33012 - 19968: jis0208<<14 | 0x25<<7 | 0x18, + 33014 - 19968: jis0212<<14 | 0x35<<7 | 0x03, + 33016 - 19968: jis0208<<14 | 0x15<<7 | 0x1A, + 33017 - 19968: jis0212<<14 | 0x35<<7 | 0x04, + 33018 - 19968: jis0212<<14 | 0x35<<7 | 0x05, + 33020 - 19968: jis0208<<14 | 0x46<<7 | 0x05, + 33021 - 19968: jis0208<<14 | 0x26<<7 | 0x1C, + 33022 - 19968: jis0212<<14 | 0x35<<7 | 0x06, + 33026 - 19968: jis0208<<14 | 0x1A<<7 | 0x48, + 33027 - 19968: jis0212<<14 | 0x35<<7 | 0x07, + 33029 - 19968: jis0208<<14 | 0x15<<7 | 0x1B, + 33030 - 19968: jis0208<<14 | 0x1F<<7 | 0x27, + 33031 - 19968: jis0208<<14 | 0x2E<<7 | 0x25, + 33032 - 19968: jis0208<<14 | 0x2B<<7 | 0x0D, + 33033 - 19968: jis0208<<14 | 0x45<<7 | 0x56, + 33034 - 19968: jis0208<<14 | 0x1F<<7 | 0x33, + 33035 - 19968: jis0212<<14 | 0x35<<7 | 0x08, + 33046 - 19968: jis0212<<14 | 0x35<<7 | 0x09, + 33047 - 19968: jis0212<<14 | 0x35<<7 | 0x0A, + 33048 - 19968: jis0212<<14 | 0x35<<7 | 0x0B, + 33050 - 19968: jis0208<<14 | 0x14<<7 | 0x32, + 33051 - 19968: jis0208<<14 | 0x45<<7 | 0x59, + 33052 - 19968: jis0212<<14 | 0x35<<7 | 0x0C, + 33054 - 19968: jis0212<<14 | 0x35<<7 | 0x0D, + 33056 - 19968: jis0212<<14 | 0x35<<7 | 0x0E, + 33059 - 19968: jis0208<<14 | 0x45<<7 | 0x5B, + 33060 - 19968: jis0212<<14 | 0x35<<7 | 0x0F, + 33063 - 19968: jis0212<<14 | 0x35<<7 | 0x10, + 33065 - 19968: jis0208<<14 | 0x45<<7 | 0x5A, + 33068 - 19968: jis0212<<14 | 0x35<<7 | 0x11, + 33071 - 19968: jis0208<<14 | 0x45<<7 | 0x5C, + 33072 - 19968: jis0212<<14 | 0x35<<7 | 0x12, + 33073 - 19968: jis0208<<14 | 0x22<<7 | 0x05, + 33075 - 19968: jis0208<<14 | 0x26<<7 | 0x1D, + 33077 - 19968: jis0212<<14 | 0x35<<7 | 0x13, + 33081 - 19968: jis0208<<14 | 0x23<<7 | 0x10, + 33082 - 19968: jis0212<<14 | 0x35<<7 | 0x14, + 33084 - 19968: jis0212<<14 | 0x35<<7 | 0x15, + 33086 - 19968: jis0208<<14 | 0x46<<7 | 0x02, + 33093 - 19968: jis0212<<14 | 0x35<<7 | 0x16, + 33094 - 19968: jis0208<<14 | 0x46<<7 | 0x01, + 33095 - 19968: jis0212<<14 | 0x35<<7 | 0x17, + 33098 - 19968: jis0212<<14 | 0x35<<7 | 0x18, + 33099 - 19968: jis0208<<14 | 0x45<<7 | 0x5D, + 33100 - 19968: jis0212<<14 | 0x35<<7 | 0x19, + 33102 - 19968: jis0208<<14 | 0x1E<<7 | 0x34, + 33104 - 19968: jis0208<<14 | 0x28<<7 | 0x44, + 33105 - 19968: jis0208<<14 | 0x46<<7 | 0x04, + 33106 - 19968: jis0212<<14 | 0x35<<7 | 0x1A, + 33107 - 19968: jis0208<<14 | 0x46<<7 | 0x03, + 33108 - 19968: jis0208<<14 | 0x18<<7 | 0x2F, + 33109 - 19968: jis0208<<14 | 0x2E<<7 | 0x32, + 33111 - 19968: jis0212<<14 | 0x35<<7 | 0x1B, + 33119 - 19968: jis0208<<14 | 0x46<<7 | 0x14, + 33120 - 19968: jis0212<<14 | 0x35<<7 | 0x1C, + 33121 - 19968: jis0212<<14 | 0x35<<7 | 0x1D, + 33125 - 19968: jis0208<<14 | 0x46<<7 | 0x08, + 33126 - 19968: jis0208<<14 | 0x46<<7 | 0x09, + 33127 - 19968: jis0212<<14 | 0x35<<7 | 0x1E, + 33128 - 19968: jis0212<<14 | 0x35<<7 | 0x1F, + 33129 - 19968: jis0212<<14 | 0x35<<7 | 0x20, + 33131 - 19968: jis0208<<14 | 0x1B<<7 | 0x4F, + 33133 - 19968: jis0212<<14 | 0x35<<7 | 0x21, + 33134 - 19968: jis0208<<14 | 0x46<<7 | 0x07, + 33135 - 19968: jis0212<<14 | 0x35<<7 | 0x22, + 33136 - 19968: jis0208<<14 | 0x18<<7 | 0x57, + 33137 - 19968: jis0208<<14 | 0x46<<7 | 0x06, + 33140 - 19968: jis0208<<14 | 0x46<<7 | 0x0A, + 33143 - 19968: jis0212<<14 | 0x35<<7 | 0x23, + 33144 - 19968: jis0208<<14 | 0x23<<7 | 0x11, + 33145 - 19968: jis0208<<14 | 0x29<<7 | 0x01, + 33146 - 19968: jis0208<<14 | 0x20<<7 | 0x02, + 33151 - 19968: jis0208<<14 | 0x21<<7 | 0x3B, + 33152 - 19968: jis0208<<14 | 0x46<<7 | 0x0E, + 33153 - 19968: jis0212<<14 | 0x35<<7 | 0x24, + 33154 - 19968: jis0208<<14 | 0x46<<7 | 0x0F, + 33155 - 19968: jis0208<<14 | 0x46<<7 | 0x0B, + 33156 - 19968: jis0212<<14 | 0x35<<7 | 0x26, + 33157 - 19968: jis0212<<14 | 0x35<<7 | 0x27, + 33158 - 19968: jis0212<<14 | 0x35<<7 | 0x28, + 33160 - 19968: jis0208<<14 | 0x46<<7 | 0x0C, + 33162 - 19968: jis0208<<14 | 0x46<<7 | 0x0D, + 33163 - 19968: jis0212<<14 | 0x35<<7 | 0x29, + 33166 - 19968: jis0212<<14 | 0x35<<7 | 0x2A, + 33167 - 19968: jis0208<<14 | 0x18<<7 | 0x30, + 33168 - 19968: jis0212<<14 | 0x35<<7 | 0x25, + 33171 - 19968: jis0208<<14 | 0x46<<7 | 0x15, + 33173 - 19968: jis0208<<14 | 0x46<<7 | 0x11, + 33174 - 19968: jis0212<<14 | 0x35<<7 | 0x2B, + 33176 - 19968: jis0212<<14 | 0x35<<7 | 0x2C, + 33178 - 19968: jis0208<<14 | 0x28<<7 | 0x45, + 33179 - 19968: jis0212<<14 | 0x35<<7 | 0x2D, + 33180 - 19968: jis0208<<14 | 0x2A<<7 | 0x4B, + 33181 - 19968: jis0208<<14 | 0x28<<7 | 0x07, + 33182 - 19968: jis0212<<14 | 0x35<<7 | 0x2E, + 33184 - 19968: jis0208<<14 | 0x46<<7 | 0x10, + 33186 - 19968: jis0212<<14 | 0x35<<7 | 0x2F, + 33187 - 19968: jis0208<<14 | 0x46<<7 | 0x13, + 33188 - 19968: jis0208<<14 | 0x46<<7 | 0x12, + 33192 - 19968: jis0208<<14 | 0x2A<<7 | 0x23, + 33193 - 19968: jis0208<<14 | 0x46<<7 | 0x16, + 33198 - 19968: jis0212<<14 | 0x35<<7 | 0x30, + 33200 - 19968: jis0208<<14 | 0x46<<7 | 0x17, + 33202 - 19968: jis0212<<14 | 0x35<<7 | 0x31, + 33203 - 19968: jis0208<<14 | 0x20<<7 | 0x16, + 33204 - 19968: jis0212<<14 | 0x35<<7 | 0x32, + 33205 - 19968: jis0208<<14 | 0x46<<7 | 0x18, + 33208 - 19968: jis0208<<14 | 0x46<<7 | 0x1A, + 33210 - 19968: jis0208<<14 | 0x46<<7 | 0x1E, + 33211 - 19968: jis0212<<14 | 0x35<<7 | 0x33, + 33213 - 19968: jis0208<<14 | 0x46<<7 | 0x1B, + 33214 - 19968: jis0208<<14 | 0x46<<7 | 0x19, + 33215 - 19968: jis0208<<14 | 0x26<<7 | 0x1E, + 33216 - 19968: jis0208<<14 | 0x46<<7 | 0x1C, + 33218 - 19968: jis0208<<14 | 0x46<<7 | 0x1D, + 33219 - 19968: jis0212<<14 | 0x35<<7 | 0x35, + 33221 - 19968: jis0212<<14 | 0x35<<7 | 0x36, + 33222 - 19968: jis0208<<14 | 0x11<<7 | 0x11, + 33224 - 19968: jis0208<<14 | 0x46<<7 | 0x24, + 33225 - 19968: jis0208<<14 | 0x46<<7 | 0x1F, + 33226 - 19968: jis0212<<14 | 0x35<<7 | 0x37, + 33227 - 19968: jis0212<<14 | 0x35<<7 | 0x34, + 33229 - 19968: jis0208<<14 | 0x46<<7 | 0x20, + 33230 - 19968: jis0212<<14 | 0x35<<7 | 0x38, + 33231 - 19968: jis0212<<14 | 0x35<<7 | 0x39, + 33233 - 19968: jis0208<<14 | 0x46<<7 | 0x21, + 33235 - 19968: jis0208<<14 | 0x21<<7 | 0x00, + 33237 - 19968: jis0212<<14 | 0x35<<7 | 0x3A, + 33239 - 19968: jis0212<<14 | 0x35<<7 | 0x3B, + 33240 - 19968: jis0208<<14 | 0x46<<7 | 0x23, + 33241 - 19968: jis0208<<14 | 0x46<<7 | 0x22, + 33242 - 19968: jis0208<<14 | 0x46<<7 | 0x25, + 33243 - 19968: jis0212<<14 | 0x35<<7 | 0x3C, + 33245 - 19968: jis0212<<14 | 0x35<<7 | 0x3D, + 33246 - 19968: jis0212<<14 | 0x35<<7 | 0x3E, + 33247 - 19968: jis0208<<14 | 0x46<<7 | 0x26, + 33248 - 19968: jis0208<<14 | 0x46<<7 | 0x27, + 33249 - 19968: jis0212<<14 | 0x35<<7 | 0x3F, + 33251 - 19968: jis0208<<14 | 0x1E<<7 | 0x22, + 33252 - 19968: jis0212<<14 | 0x35<<7 | 0x40, + 33253 - 19968: jis0208<<14 | 0x11<<7 | 0x48, + 33255 - 19968: jis0208<<14 | 0x46<<7 | 0x28, + 33256 - 19968: jis0208<<14 | 0x2D<<7 | 0x36, + 33258 - 19968: jis0208<<14 | 0x1B<<7 | 0x0A, + 33259 - 19968: jis0212<<14 | 0x35<<7 | 0x41, + 33260 - 19968: jis0212<<14 | 0x35<<7 | 0x42, + 33261 - 19968: jis0208<<14 | 0x1C<<7 | 0x0C, + 33264 - 19968: jis0212<<14 | 0x35<<7 | 0x43, + 33265 - 19968: jis0212<<14 | 0x35<<7 | 0x44, + 33266 - 19968: jis0212<<14 | 0x35<<7 | 0x45, + 33267 - 19968: jis0208<<14 | 0x1A<<7 | 0x49, + 33268 - 19968: jis0208<<14 | 0x22<<7 | 0x36, + 33269 - 19968: jis0212<<14 | 0x35<<7 | 0x46, + 33270 - 19968: jis0212<<14 | 0x35<<7 | 0x47, + 33272 - 19968: jis0212<<14 | 0x35<<7 | 0x48, + 33273 - 19968: jis0212<<14 | 0x35<<7 | 0x49, + 33274 - 19968: jis0208<<14 | 0x46<<7 | 0x29, + 33275 - 19968: jis0208<<14 | 0x46<<7 | 0x2A, + 33276 - 19968: jis0208<<14 | 0x10<<7 | 0x10, + 33277 - 19968: jis0212<<14 | 0x35<<7 | 0x4A, + 33278 - 19968: jis0208<<14 | 0x46<<7 | 0x2B, + 33279 - 19968: jis0212<<14 | 0x35<<7 | 0x4B, + 33280 - 19968: jis0212<<14 | 0x35<<7 | 0x4C, + 33281 - 19968: jis0208<<14 | 0x46<<7 | 0x2C, + 33282 - 19968: jis0208<<14 | 0x46<<7 | 0x2D, + 33283 - 19968: jis0212<<14 | 0x35<<7 | 0x4D, + 33285 - 19968: jis0208<<14 | 0x46<<7 | 0x2E, + 33287 - 19968: jis0208<<14 | 0x46<<7 | 0x2F, + 33288 - 19968: jis0208<<14 | 0x15<<7 | 0x1C, + 33289 - 19968: jis0208<<14 | 0x39<<7 | 0x09, + 33290 - 19968: jis0208<<14 | 0x46<<7 | 0x30, + 33292 - 19968: jis0208<<14 | 0x1F<<7 | 0x44, + 33293 - 19968: jis0208<<14 | 0x46<<7 | 0x31, + 33294 - 19968: jis0208<<14 | 0x1B<<7 | 0x2A, + 33295 - 19968: jis0212<<14 | 0x35<<7 | 0x4E, + 33296 - 19968: jis0208<<14 | 0x46<<7 | 0x32, + 33298 - 19968: jis0208<<14 | 0x2F<<7 | 0x0F, + 33299 - 19968: jis0212<<14 | 0x35<<7 | 0x4F, + 33300 - 19968: jis0212<<14 | 0x35<<7 | 0x50, + 33302 - 19968: jis0208<<14 | 0x46<<7 | 0x33, + 33303 - 19968: jis0208<<14 | 0x29<<7 | 0x3D, + 33304 - 19968: jis0208<<14 | 0x13<<7 | 0x3B, + 33305 - 19968: jis0212<<14 | 0x35<<7 | 0x51, + 33306 - 19968: jis0212<<14 | 0x35<<7 | 0x52, + 33307 - 19968: jis0208<<14 | 0x20<<7 | 0x03, + 33308 - 19968: jis0208<<14 | 0x1C<<7 | 0x37, + 33309 - 19968: jis0212<<14 | 0x35<<7 | 0x53, + 33310 - 19968: jis0208<<14 | 0x28<<7 | 0x50, + 33311 - 19968: jis0208<<14 | 0x1C<<7 | 0x0D, + 33313 - 19968: jis0212<<14 | 0x35<<7 | 0x54, + 33314 - 19968: jis0212<<14 | 0x35<<7 | 0x55, + 33320 - 19968: jis0212<<14 | 0x35<<7 | 0x56, + 33321 - 19968: jis0208<<14 | 0x46<<7 | 0x34, + 33322 - 19968: jis0208<<14 | 0x18<<7 | 0x31, + 33323 - 19968: jis0208<<14 | 0x46<<7 | 0x35, + 33324 - 19968: jis0208<<14 | 0x27<<7 | 0x2B, + 33326 - 19968: jis0208<<14 | 0x46<<7 | 0x43, + 33330 - 19968: jis0212<<14 | 0x35<<7 | 0x57, + 33331 - 19968: jis0208<<14 | 0x46<<7 | 0x37, + 33332 - 19968: jis0212<<14 | 0x35<<7 | 0x58, + 33333 - 19968: jis0208<<14 | 0x21<<7 | 0x28, + 33334 - 19968: jis0208<<14 | 0x26<<7 | 0x54, + 33335 - 19968: jis0208<<14 | 0x17<<7 | 0x1E, + 33336 - 19968: jis0208<<14 | 0x46<<7 | 0x36, + 33337 - 19968: jis0208<<14 | 0x20<<7 | 0x04, + 33338 - 19968: jis0212<<14 | 0x35<<7 | 0x59, + 33344 - 19968: jis0208<<14 | 0x46<<7 | 0x38, + 33347 - 19968: jis0212<<14 | 0x35<<7 | 0x5A, + 33348 - 19968: jis0212<<14 | 0x35<<7 | 0x5B, + 33349 - 19968: jis0212<<14 | 0x35<<7 | 0x5C, + 33350 - 19968: jis0212<<14 | 0x35<<7 | 0x5D, + 33351 - 19968: jis0208<<14 | 0x23<<7 | 0x59, + 33355 - 19968: jis0212<<14 | 0x36<<7 | 0x00, + 33358 - 19968: jis0212<<14 | 0x36<<7 | 0x01, + 33359 - 19968: jis0212<<14 | 0x36<<7 | 0x02, + 33361 - 19968: jis0212<<14 | 0x36<<7 | 0x03, + 33366 - 19968: jis0212<<14 | 0x36<<7 | 0x04, + 33368 - 19968: jis0208<<14 | 0x46<<7 | 0x3A, + 33369 - 19968: jis0208<<14 | 0x46<<7 | 0x39, + 33370 - 19968: jis0208<<14 | 0x46<<7 | 0x3C, + 33372 - 19968: jis0212<<14 | 0x36<<7 | 0x05, + 33373 - 19968: jis0208<<14 | 0x46<<7 | 0x3B, + 33375 - 19968: jis0208<<14 | 0x46<<7 | 0x3D, + 33376 - 19968: jis0212<<14 | 0x36<<7 | 0x06, + 33378 - 19968: jis0208<<14 | 0x46<<7 | 0x3F, + 33379 - 19968: jis0212<<14 | 0x36<<7 | 0x07, + 33380 - 19968: jis0208<<14 | 0x46<<7 | 0x3E, + 33382 - 19968: jis0208<<14 | 0x13<<7 | 0x2E, + 33383 - 19968: jis0212<<14 | 0x36<<7 | 0x08, + 33384 - 19968: jis0208<<14 | 0x46<<7 | 0x40, + 33386 - 19968: jis0208<<14 | 0x46<<7 | 0x41, + 33387 - 19968: jis0208<<14 | 0x46<<7 | 0x42, + 33389 - 19968: jis0212<<14 | 0x36<<7 | 0x09, + 33390 - 19968: jis0208<<14 | 0x19<<7 | 0x10, + 33391 - 19968: jis0208<<14 | 0x2D<<7 | 0x28, + 33393 - 19968: jis0208<<14 | 0x46<<7 | 0x44, + 33394 - 19968: jis0208<<14 | 0x1E<<7 | 0x06, + 33396 - 19968: jis0212<<14 | 0x36<<7 | 0x0A, + 33398 - 19968: jis0208<<14 | 0x10<<7 | 0x4F, + 33399 - 19968: jis0208<<14 | 0x46<<7 | 0x45, + 33400 - 19968: jis0208<<14 | 0x46<<7 | 0x46, + 33403 - 19968: jis0212<<14 | 0x36<<7 | 0x0B, + 33405 - 19968: jis0212<<14 | 0x36<<7 | 0x0C, + 33406 - 19968: jis0208<<14 | 0x46<<7 | 0x47, + 33407 - 19968: jis0212<<14 | 0x36<<7 | 0x0D, + 33408 - 19968: jis0212<<14 | 0x36<<7 | 0x0E, + 33409 - 19968: jis0212<<14 | 0x36<<7 | 0x0F, + 33411 - 19968: jis0212<<14 | 0x36<<7 | 0x10, + 33412 - 19968: jis0212<<14 | 0x36<<7 | 0x11, + 33415 - 19968: jis0212<<14 | 0x36<<7 | 0x12, + 33417 - 19968: jis0212<<14 | 0x36<<7 | 0x13, + 33418 - 19968: jis0212<<14 | 0x36<<7 | 0x14, + 33419 - 19968: jis0208<<14 | 0x0F<<7 | 0x51, + 33421 - 19968: jis0208<<14 | 0x46<<7 | 0x48, + 33422 - 19968: jis0212<<14 | 0x36<<7 | 0x15, + 33425 - 19968: jis0212<<14 | 0x36<<7 | 0x16, + 33426 - 19968: jis0208<<14 | 0x46<<7 | 0x49, + 33428 - 19968: jis0212<<14 | 0x36<<7 | 0x17, + 33430 - 19968: jis0212<<14 | 0x36<<7 | 0x18, + 33432 - 19968: jis0212<<14 | 0x36<<7 | 0x19, + 33433 - 19968: jis0208<<14 | 0x28<<7 | 0x46, + 33434 - 19968: jis0212<<14 | 0x36<<7 | 0x1A, + 33435 - 19968: jis0212<<14 | 0x36<<7 | 0x1B, + 33437 - 19968: jis0208<<14 | 0x1B<<7 | 0x26, + 33439 - 19968: jis0208<<14 | 0x46<<7 | 0x4B, + 33440 - 19968: jis0212<<14 | 0x36<<7 | 0x1C, + 33441 - 19968: jis0212<<14 | 0x36<<7 | 0x1D, + 33443 - 19968: jis0212<<14 | 0x36<<7 | 0x1E, + 33444 - 19968: jis0212<<14 | 0x36<<7 | 0x1F, + 33445 - 19968: jis0208<<14 | 0x12<<7 | 0x08, + 33446 - 19968: jis0208<<14 | 0x0F<<7 | 0x11, + 33447 - 19968: jis0212<<14 | 0x36<<7 | 0x20, + 33448 - 19968: jis0212<<14 | 0x36<<7 | 0x21, + 33449 - 19968: jis0212<<14 | 0x36<<7 | 0x22, + 33450 - 19968: jis0212<<14 | 0x36<<7 | 0x23, + 33451 - 19968: jis0208<<14 | 0x46<<7 | 0x4A, + 33452 - 19968: jis0208<<14 | 0x46<<7 | 0x4D, + 33453 - 19968: jis0208<<14 | 0x26<<7 | 0x2D, + 33454 - 19968: jis0212<<14 | 0x36<<7 | 0x24, + 33455 - 19968: jis0208<<14 | 0x1E<<7 | 0x23, + 33456 - 19968: jis0212<<14 | 0x36<<7 | 0x25, + 33457 - 19968: jis0208<<14 | 0x11<<7 | 0x35, + 33458 - 19968: jis0212<<14 | 0x36<<7 | 0x26, + 33459 - 19968: jis0208<<14 | 0x2A<<7 | 0x06, + 33460 - 19968: jis0212<<14 | 0x36<<7 | 0x27, + 33463 - 19968: jis0212<<14 | 0x36<<7 | 0x28, + 33464 - 19968: jis0208<<14 | 0x16<<7 | 0x3C, + 33465 - 19968: jis0208<<14 | 0x15<<7 | 0x3B, + 33466 - 19968: jis0212<<14 | 0x36<<7 | 0x29, + 33467 - 19968: jis0208<<14 | 0x46<<7 | 0x4C, + 33468 - 19968: jis0212<<14 | 0x36<<7 | 0x2A, + 33469 - 19968: jis0208<<14 | 0x11<<7 | 0x49, + 33470 - 19968: jis0212<<14 | 0x36<<7 | 0x2B, + 33471 - 19968: jis0212<<14 | 0x36<<7 | 0x2C, + 33477 - 19968: jis0208<<14 | 0x13<<7 | 0x02, + 33478 - 19968: jis0212<<14 | 0x36<<7 | 0x2D, + 33488 - 19968: jis0212<<14 | 0x36<<7 | 0x2E, + 33489 - 19968: jis0208<<14 | 0x10<<7 | 0x50, + 33490 - 19968: jis0208<<14 | 0x46<<7 | 0x51, + 33491 - 19968: jis0208<<14 | 0x2D<<7 | 0x49, + 33492 - 19968: jis0208<<14 | 0x21<<7 | 0x3C, + 33493 - 19968: jis0212<<14 | 0x36<<7 | 0x2F, + 33495 - 19968: jis0208<<14 | 0x28<<7 | 0x23, + 33497 - 19968: jis0208<<14 | 0x46<<7 | 0x5D, + 33498 - 19968: jis0212<<14 | 0x36<<7 | 0x30, + 33499 - 19968: jis0208<<14 | 0x11<<7 | 0x36, + 33500 - 19968: jis0208<<14 | 0x46<<7 | 0x5B, + 33502 - 19968: jis0208<<14 | 0x46<<7 | 0x59, + 33503 - 19968: jis0208<<14 | 0x46<<7 | 0x50, + 33504 - 19968: jis0212<<14 | 0x36<<7 | 0x31, + 33505 - 19968: jis0208<<14 | 0x46<<7 | 0x4E, + 33506 - 19968: jis0212<<14 | 0x36<<7 | 0x32, + 33507 - 19968: jis0208<<14 | 0x46<<7 | 0x4F, + 33508 - 19968: jis0212<<14 | 0x36<<7 | 0x33, + 33509 - 19968: jis0208<<14 | 0x1B<<7 | 0x42, + 33510 - 19968: jis0208<<14 | 0x15<<7 | 0x4B, + 33511 - 19968: jis0208<<14 | 0x22<<7 | 0x56, + 33512 - 19968: jis0212<<14 | 0x36<<7 | 0x34, + 33514 - 19968: jis0212<<14 | 0x36<<7 | 0x35, + 33515 - 19968: jis0208<<14 | 0x25<<7 | 0x30, + 33517 - 19968: jis0212<<14 | 0x36<<7 | 0x36, + 33519 - 19968: jis0212<<14 | 0x36<<7 | 0x37, + 33521 - 19968: jis0208<<14 | 0x10<<7 | 0x30, + 33523 - 19968: jis0208<<14 | 0x46<<7 | 0x53, + 33524 - 19968: jis0208<<14 | 0x46<<7 | 0x52, + 33526 - 19968: jis0212<<14 | 0x36<<7 | 0x38, + 33527 - 19968: jis0212<<14 | 0x36<<7 | 0x39, + 33529 - 19968: jis0208<<14 | 0x46<<7 | 0x58, + 33530 - 19968: jis0208<<14 | 0x46<<7 | 0x54, + 33531 - 19968: jis0208<<14 | 0x46<<7 | 0x57, + 33533 - 19968: jis0212<<14 | 0x36<<7 | 0x3A, + 33534 - 19968: jis0212<<14 | 0x36<<7 | 0x3B, + 33536 - 19968: jis0212<<14 | 0x36<<7 | 0x3C, + 33537 - 19968: jis0208<<14 | 0x5A<<7 | 0x36, + 33538 - 19968: jis0208<<14 | 0x2B<<7 | 0x2F, + 33539 - 19968: jis0208<<14 | 0x46<<7 | 0x56, + 33540 - 19968: jis0208<<14 | 0x11<<7 | 0x37, + 33541 - 19968: jis0208<<14 | 0x12<<7 | 0x5C, + 33542 - 19968: jis0208<<14 | 0x46<<7 | 0x5A, + 33543 - 19968: jis0212<<14 | 0x36<<7 | 0x3E, + 33544 - 19968: jis0212<<14 | 0x36<<7 | 0x3F, + 33545 - 19968: jis0208<<14 | 0x46<<7 | 0x5C, + 33546 - 19968: jis0212<<14 | 0x36<<7 | 0x40, + 33547 - 19968: jis0212<<14 | 0x36<<7 | 0x41, + 33550 - 19968: jis0208<<14 | 0x16<<7 | 0x33, + 33558 - 19968: jis0208<<14 | 0x47<<7 | 0x02, + 33559 - 19968: jis0208<<14 | 0x47<<7 | 0x0B, + 33560 - 19968: jis0208<<14 | 0x47<<7 | 0x0C, + 33563 - 19968: jis0212<<14 | 0x36<<7 | 0x43, + 33564 - 19968: jis0208<<14 | 0x0F<<7 | 0x0A, + 33565 - 19968: jis0212<<14 | 0x36<<7 | 0x44, + 33566 - 19968: jis0212<<14 | 0x36<<7 | 0x45, + 33567 - 19968: jis0212<<14 | 0x36<<7 | 0x46, + 33569 - 19968: jis0212<<14 | 0x36<<7 | 0x47, + 33570 - 19968: jis0212<<14 | 0x36<<7 | 0x48, + 33571 - 19968: jis0208<<14 | 0x47<<7 | 0x13, + 33576 - 19968: jis0208<<14 | 0x0F<<7 | 0x50, + 33579 - 19968: jis0208<<14 | 0x47<<7 | 0x0A, + 33580 - 19968: jis0212<<14 | 0x36<<7 | 0x49, + 33581 - 19968: jis0212<<14 | 0x36<<7 | 0x4A, + 33582 - 19968: jis0212<<14 | 0x36<<7 | 0x4B, + 33583 - 19968: jis0208<<14 | 0x47<<7 | 0x09, + 33584 - 19968: jis0212<<14 | 0x36<<7 | 0x4C, + 33585 - 19968: jis0208<<14 | 0x47<<7 | 0x04, + 33586 - 19968: jis0208<<14 | 0x47<<7 | 0x03, + 33587 - 19968: jis0212<<14 | 0x36<<7 | 0x4D, + 33588 - 19968: jis0208<<14 | 0x47<<7 | 0x01, + 33589 - 19968: jis0208<<14 | 0x47<<7 | 0x00, + 33590 - 19968: jis0208<<14 | 0x22<<7 | 0x42, + 33591 - 19968: jis0212<<14 | 0x36<<7 | 0x4E, + 33592 - 19968: jis0208<<14 | 0x21<<7 | 0x5A, + 33593 - 19968: jis0208<<14 | 0x47<<7 | 0x06, + 33594 - 19968: jis0212<<14 | 0x36<<7 | 0x4F, + 33596 - 19968: jis0212<<14 | 0x36<<7 | 0x50, + 33597 - 19968: jis0212<<14 | 0x36<<7 | 0x51, + 33600 - 19968: jis0208<<14 | 0x47<<7 | 0x05, + 33602 - 19968: jis0212<<14 | 0x36<<7 | 0x52, + 33603 - 19968: jis0212<<14 | 0x36<<7 | 0x53, + 33604 - 19968: jis0212<<14 | 0x36<<7 | 0x54, + 33605 - 19968: jis0208<<14 | 0x47<<7 | 0x08, + 33607 - 19968: jis0212<<14 | 0x36<<7 | 0x55, + 33609 - 19968: jis0208<<14 | 0x20<<7 | 0x4F, + 33610 - 19968: jis0208<<14 | 0x16<<7 | 0x34, + 33613 - 19968: jis0212<<14 | 0x36<<7 | 0x56, + 33614 - 19968: jis0212<<14 | 0x36<<7 | 0x57, + 33615 - 19968: jis0208<<14 | 0x10<<7 | 0x20, + 33616 - 19968: jis0208<<14 | 0x47<<7 | 0x07, + 33617 - 19968: jis0212<<14 | 0x36<<7 | 0x58, + 33618 - 19968: jis0208<<14 | 0x18<<7 | 0x32, + 33619 - 19968: jis0212<<14 | 0x37<<7 | 0x1D, + 33620 - 19968: jis0212<<14 | 0x36<<7 | 0x42, + 33621 - 19968: jis0212<<14 | 0x36<<7 | 0x59, + 33622 - 19968: jis0212<<14 | 0x36<<7 | 0x5A, + 33623 - 19968: jis0212<<14 | 0x36<<7 | 0x5B, + 33624 - 19968: jis0208<<14 | 0x20<<7 | 0x50, + 33634 - 19968: jis0208<<14 | 0x5A<<7 | 0x37, + 33648 - 19968: jis0212<<14 | 0x36<<7 | 0x5C, + 33651 - 19968: jis0208<<14 | 0x47<<7 | 0x19, + 33653 - 19968: jis0208<<14 | 0x47<<7 | 0x1A, + 33655 - 19968: jis0208<<14 | 0x11<<7 | 0x38, + 33656 - 19968: jis0212<<14 | 0x36<<7 | 0x5D, + 33659 - 19968: jis0208<<14 | 0x11<<7 | 0x0D, + 33660 - 19968: jis0208<<14 | 0x47<<7 | 0x17, + 33661 - 19968: jis0212<<14 | 0x37<<7 | 0x00, + 33663 - 19968: jis0208<<14 | 0x5A<<7 | 0x38, + 33664 - 19968: jis0212<<14 | 0x37<<7 | 0x02, + 33666 - 19968: jis0212<<14 | 0x37<<7 | 0x03, + 33668 - 19968: jis0212<<14 | 0x37<<7 | 0x04, + 33669 - 19968: jis0208<<14 | 0x47<<7 | 0x0D, + 33670 - 19968: jis0212<<14 | 0x37<<7 | 0x05, + 33671 - 19968: jis0208<<14 | 0x47<<7 | 0x15, + 33673 - 19968: jis0208<<14 | 0x47<<7 | 0x1C, + 33674 - 19968: jis0208<<14 | 0x47<<7 | 0x16, + 33677 - 19968: jis0212<<14 | 0x37<<7 | 0x06, + 33678 - 19968: jis0208<<14 | 0x47<<7 | 0x14, + 33682 - 19968: jis0212<<14 | 0x37<<7 | 0x07, + 33683 - 19968: jis0208<<14 | 0x46<<7 | 0x55, + 33684 - 19968: jis0212<<14 | 0x37<<7 | 0x08, + 33685 - 19968: jis0212<<14 | 0x37<<7 | 0x09, + 33686 - 19968: jis0208<<14 | 0x47<<7 | 0x12, + 33688 - 19968: jis0212<<14 | 0x37<<7 | 0x0A, + 33689 - 19968: jis0212<<14 | 0x37<<7 | 0x0B, + 33690 - 19968: jis0208<<14 | 0x47<<7 | 0x0E, + 33691 - 19968: jis0212<<14 | 0x37<<7 | 0x0C, + 33692 - 19968: jis0212<<14 | 0x37<<7 | 0x0D, + 33693 - 19968: jis0212<<14 | 0x37<<7 | 0x0E, + 33694 - 19968: jis0208<<14 | 0x13<<7 | 0x2F, + 33695 - 19968: jis0208<<14 | 0x47<<7 | 0x10, + 33696 - 19968: jis0208<<14 | 0x47<<7 | 0x1B, + 33698 - 19968: jis0208<<14 | 0x47<<7 | 0x11, + 33702 - 19968: jis0212<<14 | 0x37<<7 | 0x0F, + 33703 - 19968: jis0212<<14 | 0x37<<7 | 0x10, + 33704 - 19968: jis0208<<14 | 0x47<<7 | 0x1D, + 33705 - 19968: jis0212<<14 | 0x37<<7 | 0x11, + 33706 - 19968: jis0208<<14 | 0x47<<7 | 0x0F, + 33707 - 19968: jis0208<<14 | 0x26<<7 | 0x5B, + 33708 - 19968: jis0212<<14 | 0x37<<7 | 0x12, + 33709 - 19968: jis0212<<14 | 0x37<<7 | 0x2B, + 33713 - 19968: jis0208<<14 | 0x2C<<7 | 0x48, + 33717 - 19968: jis0208<<14 | 0x47<<7 | 0x18, + 33725 - 19968: jis0208<<14 | 0x47<<7 | 0x2E, + 33726 - 19968: jis0212<<14 | 0x37<<7 | 0x13, + 33727 - 19968: jis0212<<14 | 0x37<<7 | 0x14, + 33728 - 19968: jis0212<<14 | 0x37<<7 | 0x15, + 33729 - 19968: jis0208<<14 | 0x47<<7 | 0x26, + 33733 - 19968: jis0208<<14 | 0x1E<<7 | 0x5A, + 33735 - 19968: jis0208<<14 | 0x5A<<7 | 0x39, + 33737 - 19968: jis0212<<14 | 0x37<<7 | 0x17, + 33738 - 19968: jis0208<<14 | 0x14<<7 | 0x25, + 33740 - 19968: jis0208<<14 | 0x15<<7 | 0x3C, + 33742 - 19968: jis0208<<14 | 0x47<<7 | 0x21, + 33743 - 19968: jis0212<<14 | 0x37<<7 | 0x18, + 33744 - 19968: jis0212<<14 | 0x37<<7 | 0x19, + 33745 - 19968: jis0212<<14 | 0x37<<7 | 0x1A, + 33747 - 19968: jis0208<<14 | 0x11<<7 | 0x3A, + 33748 - 19968: jis0212<<14 | 0x37<<7 | 0x1B, + 33750 - 19968: jis0208<<14 | 0x1D<<7 | 0x33, + 33752 - 19968: jis0208<<14 | 0x47<<7 | 0x24, + 33756 - 19968: jis0208<<14 | 0x19<<7 | 0x39, + 33757 - 19968: jis0212<<14 | 0x37<<7 | 0x1C, + 33759 - 19968: jis0208<<14 | 0x24<<7 | 0x30, + 33760 - 19968: jis0208<<14 | 0x47<<7 | 0x29, + 33768 - 19968: jis0212<<14 | 0x37<<7 | 0x1E, + 33769 - 19968: jis0208<<14 | 0x29<<7 | 0x4D, + 33770 - 19968: jis0212<<14 | 0x37<<7 | 0x1F, + 33771 - 19968: jis0208<<14 | 0x47<<7 | 0x20, + 33775 - 19968: jis0208<<14 | 0x11<<7 | 0x39, + 33776 - 19968: jis0208<<14 | 0x17<<7 | 0x35, + 33777 - 19968: jis0208<<14 | 0x28<<7 | 0x08, + 33778 - 19968: jis0208<<14 | 0x47<<7 | 0x2A, + 33780 - 19968: jis0208<<14 | 0x47<<7 | 0x1E, + 33782 - 19968: jis0208<<14 | 0x5A<<7 | 0x3A, + 33783 - 19968: jis0208<<14 | 0x47<<7 | 0x27, + 33784 - 19968: jis0212<<14 | 0x37<<7 | 0x21, + 33785 - 19968: jis0212<<14 | 0x37<<7 | 0x22, + 33787 - 19968: jis0208<<14 | 0x47<<7 | 0x31, + 33788 - 19968: jis0212<<14 | 0x37<<7 | 0x23, + 33789 - 19968: jis0208<<14 | 0x47<<7 | 0x22, + 33793 - 19968: jis0212<<14 | 0x37<<7 | 0x24, + 33795 - 19968: jis0208<<14 | 0x47<<7 | 0x23, + 33796 - 19968: jis0208<<14 | 0x25<<7 | 0x19, + 33798 - 19968: jis0212<<14 | 0x37<<7 | 0x25, + 33799 - 19968: jis0208<<14 | 0x47<<7 | 0x28, + 33802 - 19968: jis0212<<14 | 0x37<<7 | 0x26, + 33803 - 19968: jis0208<<14 | 0x47<<7 | 0x25, + 33804 - 19968: jis0208<<14 | 0x2A<<7 | 0x07, + 33805 - 19968: jis0208<<14 | 0x47<<7 | 0x2B, + 33806 - 19968: jis0208<<14 | 0x0F<<7 | 0x3F, + 33807 - 19968: jis0212<<14 | 0x37<<7 | 0x27, + 33809 - 19968: jis0212<<14 | 0x37<<7 | 0x28, + 33811 - 19968: jis0208<<14 | 0x47<<7 | 0x1F, + 33813 - 19968: jis0212<<14 | 0x37<<7 | 0x29, + 33817 - 19968: jis0212<<14 | 0x37<<7 | 0x2A, + 33824 - 19968: jis0208<<14 | 0x47<<7 | 0x2D, + 33826 - 19968: jis0208<<14 | 0x47<<7 | 0x2C, + 33833 - 19968: jis0208<<14 | 0x26<<7 | 0x4A, + 33834 - 19968: jis0208<<14 | 0x47<<7 | 0x33, + 33836 - 19968: jis0208<<14 | 0x47<<7 | 0x3E, + 33839 - 19968: jis0212<<14 | 0x37<<7 | 0x2C, + 33841 - 19968: jis0208<<14 | 0x12<<7 | 0x5D, + 33845 - 19968: jis0208<<14 | 0x47<<7 | 0x41, + 33848 - 19968: jis0208<<14 | 0x47<<7 | 0x2F, + 33849 - 19968: jis0212<<14 | 0x37<<7 | 0x2D, + 33852 - 19968: jis0208<<14 | 0x47<<7 | 0x34, + 33853 - 19968: jis0208<<14 | 0x2C<<7 | 0x4D, + 33861 - 19968: jis0212<<14 | 0x37<<7 | 0x2E, + 33862 - 19968: jis0208<<14 | 0x47<<7 | 0x3D, + 33863 - 19968: jis0212<<14 | 0x37<<7 | 0x2F, + 33864 - 19968: jis0208<<14 | 0x5A<<7 | 0x3B, + 33865 - 19968: jis0208<<14 | 0x2C<<7 | 0x34, + 33866 - 19968: jis0212<<14 | 0x37<<7 | 0x31, + 33869 - 19968: jis0212<<14 | 0x37<<7 | 0x32, + 33870 - 19968: jis0208<<14 | 0x2D<<7 | 0x09, + 33871 - 19968: jis0212<<14 | 0x37<<7 | 0x33, + 33873 - 19968: jis0212<<14 | 0x37<<7 | 0x34, + 33874 - 19968: jis0212<<14 | 0x37<<7 | 0x35, + 33878 - 19968: jis0212<<14 | 0x37<<7 | 0x36, + 33879 - 19968: jis0208<<14 | 0x22<<7 | 0x57, + 33880 - 19968: jis0212<<14 | 0x37<<7 | 0x37, + 33881 - 19968: jis0212<<14 | 0x37<<7 | 0x38, + 33882 - 19968: jis0212<<14 | 0x37<<7 | 0x39, + 33883 - 19968: jis0208<<14 | 0x12<<7 | 0x4A, + 33884 - 19968: jis0212<<14 | 0x37<<7 | 0x3A, + 33888 - 19968: jis0212<<14 | 0x37<<7 | 0x3B, + 33889 - 19968: jis0208<<14 | 0x28<<7 | 0x51, + 33890 - 19968: jis0208<<14 | 0x47<<7 | 0x43, + 33891 - 19968: jis0208<<14 | 0x25<<7 | 0x00, + 33892 - 19968: jis0212<<14 | 0x37<<7 | 0x3C, + 33893 - 19968: jis0212<<14 | 0x37<<7 | 0x3D, + 33894 - 19968: jis0208<<14 | 0x0F<<7 | 0x10, + 33895 - 19968: jis0212<<14 | 0x37<<7 | 0x3E, + 33897 - 19968: jis0208<<14 | 0x47<<7 | 0x3C, + 33898 - 19968: jis0212<<14 | 0x37<<7 | 0x3F, + 33899 - 19968: jis0208<<14 | 0x47<<7 | 0x38, + 33900 - 19968: jis0208<<14 | 0x20<<7 | 0x51, + 33901 - 19968: jis0208<<14 | 0x47<<7 | 0x32, + 33902 - 19968: jis0208<<14 | 0x47<<7 | 0x3A, + 33903 - 19968: jis0208<<14 | 0x47<<7 | 0x3F, + 33904 - 19968: jis0212<<14 | 0x37<<7 | 0x40, + 33905 - 19968: jis0208<<14 | 0x26<<7 | 0x0B, + 33907 - 19968: jis0212<<14 | 0x37<<7 | 0x41, + 33908 - 19968: jis0212<<14 | 0x37<<7 | 0x42, + 33909 - 19968: jis0208<<14 | 0x0F<<7 | 0x09, + 33910 - 19968: jis0212<<14 | 0x37<<7 | 0x43, + 33911 - 19968: jis0208<<14 | 0x47<<7 | 0x37, + 33912 - 19968: jis0212<<14 | 0x37<<7 | 0x44, + 33913 - 19968: jis0208<<14 | 0x47<<7 | 0x40, + 33914 - 19968: jis0208<<14 | 0x28<<7 | 0x57, + 33916 - 19968: jis0212<<14 | 0x37<<7 | 0x45, + 33917 - 19968: jis0212<<14 | 0x37<<7 | 0x46, + 33921 - 19968: jis0212<<14 | 0x37<<7 | 0x47, + 33922 - 19968: jis0208<<14 | 0x47<<7 | 0x3B, + 33924 - 19968: jis0208<<14 | 0x47<<7 | 0x36, + 33925 - 19968: jis0212<<14 | 0x37<<7 | 0x48, + 33931 - 19968: jis0208<<14 | 0x1D<<7 | 0x34, + 33936 - 19968: jis0208<<14 | 0x1C<<7 | 0x0E, + 33938 - 19968: jis0212<<14 | 0x37<<7 | 0x49, + 33939 - 19968: jis0212<<14 | 0x37<<7 | 0x4A, + 33940 - 19968: jis0208<<14 | 0x1B<<7 | 0x0B, + 33941 - 19968: jis0212<<14 | 0x37<<7 | 0x4B, + 33945 - 19968: jis0208<<14 | 0x2B<<7 | 0x37, + 33948 - 19968: jis0208<<14 | 0x28<<7 | 0x26, + 33950 - 19968: jis0212<<14 | 0x37<<7 | 0x4C, + 33951 - 19968: jis0208<<14 | 0x47<<7 | 0x46, + 33953 - 19968: jis0208<<14 | 0x47<<7 | 0x4F, + 33958 - 19968: jis0212<<14 | 0x37<<7 | 0x4D, + 33960 - 19968: jis0212<<14 | 0x37<<7 | 0x4E, + 33961 - 19968: jis0212<<14 | 0x37<<7 | 0x4F, + 33962 - 19968: jis0212<<14 | 0x37<<7 | 0x50, + 33965 - 19968: jis0208<<14 | 0x47<<7 | 0x39, + 33967 - 19968: jis0212<<14 | 0x37<<7 | 0x51, + 33969 - 19968: jis0212<<14 | 0x37<<7 | 0x52, + 33970 - 19968: jis0208<<14 | 0x12<<7 | 0x56, + 33972 - 19968: jis0208<<14 | 0x5A<<7 | 0x3C, + 33976 - 19968: jis0208<<14 | 0x1D<<7 | 0x57, + 33977 - 19968: jis0208<<14 | 0x47<<7 | 0x44, + 33978 - 19968: jis0212<<14 | 0x37<<7 | 0x54, + 33979 - 19968: jis0208<<14 | 0x47<<7 | 0x49, + 33980 - 19968: jis0208<<14 | 0x20<<7 | 0x52, + 33981 - 19968: jis0212<<14 | 0x37<<7 | 0x55, + 33982 - 19968: jis0212<<14 | 0x37<<7 | 0x56, + 33983 - 19968: jis0208<<14 | 0x47<<7 | 0x45, + 33984 - 19968: jis0212<<14 | 0x37<<7 | 0x57, + 33985 - 19968: jis0208<<14 | 0x47<<7 | 0x4C, + 33986 - 19968: jis0212<<14 | 0x37<<7 | 0x58, + 33988 - 19968: jis0208<<14 | 0x22<<7 | 0x3E, + 33990 - 19968: jis0208<<14 | 0x47<<7 | 0x4D, + 33991 - 19968: jis0212<<14 | 0x37<<7 | 0x59, + 33992 - 19968: jis0212<<14 | 0x37<<7 | 0x5A, + 33993 - 19968: jis0208<<14 | 0x2C<<7 | 0x35, + 33994 - 19968: jis0208<<14 | 0x47<<7 | 0x42, + 33995 - 19968: jis0208<<14 | 0x12<<7 | 0x17, + 33996 - 19968: jis0212<<14 | 0x37<<7 | 0x5B, + 33997 - 19968: jis0208<<14 | 0x47<<7 | 0x48, + 33999 - 19968: jis0212<<14 | 0x37<<7 | 0x5C, + 34000 - 19968: jis0208<<14 | 0x47<<7 | 0x4B, + 34001 - 19968: jis0208<<14 | 0x2B<<7 | 0x0B, + 34003 - 19968: jis0212<<14 | 0x37<<7 | 0x5D, + 34006 - 19968: jis0208<<14 | 0x47<<7 | 0x4E, + 34009 - 19968: jis0208<<14 | 0x47<<7 | 0x47, + 34010 - 19968: jis0208<<14 | 0x47<<7 | 0x4A, + 34012 - 19968: jis0208<<14 | 0x58<<7 | 0x04, + 34023 - 19968: jis0212<<14 | 0x38<<7 | 0x01, + 34026 - 19968: jis0212<<14 | 0x38<<7 | 0x02, + 34028 - 19968: jis0208<<14 | 0x2A<<7 | 0x08, + 34030 - 19968: jis0208<<14 | 0x2E<<7 | 0x00, + 34031 - 19968: jis0212<<14 | 0x38<<7 | 0x03, + 34032 - 19968: jis0212<<14 | 0x38<<7 | 0x04, + 34033 - 19968: jis0212<<14 | 0x38<<7 | 0x05, + 34034 - 19968: jis0212<<14 | 0x38<<7 | 0x06, + 34036 - 19968: jis0208<<14 | 0x47<<7 | 0x52, + 34039 - 19968: jis0212<<14 | 0x38<<7 | 0x07, + 34042 - 19968: jis0212<<14 | 0x38<<7 | 0x09, + 34043 - 19968: jis0212<<14 | 0x38<<7 | 0x0A, + 34044 - 19968: jis0208<<14 | 0x47<<7 | 0x59, + 34045 - 19968: jis0212<<14 | 0x38<<7 | 0x0B, + 34047 - 19968: jis0208<<14 | 0x47<<7 | 0x51, + 34048 - 19968: jis0208<<14 | 0x1B<<7 | 0x22, + 34050 - 19968: jis0212<<14 | 0x38<<7 | 0x0C, + 34051 - 19968: jis0212<<14 | 0x38<<7 | 0x0D, + 34054 - 19968: jis0208<<14 | 0x47<<7 | 0x30, + 34055 - 19968: jis0212<<14 | 0x38<<7 | 0x0E, + 34060 - 19968: jis0212<<14 | 0x38<<7 | 0x0F, + 34062 - 19968: jis0212<<14 | 0x38<<7 | 0x10, + 34064 - 19968: jis0212<<14 | 0x38<<7 | 0x11, + 34065 - 19968: jis0208<<14 | 0x29<<7 | 0x2D, + 34067 - 19968: jis0208<<14 | 0x2B<<7 | 0x01, + 34068 - 19968: jis0208<<14 | 0x47<<7 | 0x58, + 34069 - 19968: jis0208<<14 | 0x47<<7 | 0x57, + 34071 - 19968: jis0208<<14 | 0x47<<7 | 0x53, + 34072 - 19968: jis0208<<14 | 0x47<<7 | 0x54, + 34074 - 19968: jis0208<<14 | 0x10<<7 | 0x15, + 34076 - 19968: jis0212<<14 | 0x38<<7 | 0x12, + 34078 - 19968: jis0212<<14 | 0x38<<7 | 0x13, + 34079 - 19968: jis0208<<14 | 0x47<<7 | 0x56, + 34081 - 19968: jis0208<<14 | 0x47<<7 | 0x50, + 34082 - 19968: jis0212<<14 | 0x38<<7 | 0x14, + 34083 - 19968: jis0212<<14 | 0x38<<7 | 0x15, + 34084 - 19968: jis0212<<14 | 0x38<<7 | 0x16, + 34085 - 19968: jis0212<<14 | 0x38<<7 | 0x17, + 34086 - 19968: jis0208<<14 | 0x23<<7 | 0x34, + 34087 - 19968: jis0212<<14 | 0x38<<7 | 0x18, + 34090 - 19968: jis0212<<14 | 0x38<<7 | 0x19, + 34091 - 19968: jis0212<<14 | 0x38<<7 | 0x1A, + 34092 - 19968: jis0208<<14 | 0x47<<7 | 0x55, + 34093 - 19968: jis0208<<14 | 0x0F<<7 | 0x5D, + 34095 - 19968: jis0212<<14 | 0x38<<7 | 0x1B, + 34098 - 19968: jis0212<<14 | 0x38<<7 | 0x08, + 34099 - 19968: jis0212<<14 | 0x38<<7 | 0x1C, + 34100 - 19968: jis0212<<14 | 0x38<<7 | 0x1D, + 34101 - 19968: jis0208<<14 | 0x21<<7 | 0x01, + 34102 - 19968: jis0212<<14 | 0x38<<7 | 0x1E, + 34109 - 19968: jis0208<<14 | 0x29<<7 | 0x22, + 34111 - 19968: jis0212<<14 | 0x38<<7 | 0x1F, + 34112 - 19968: jis0208<<14 | 0x47<<7 | 0x5A, + 34113 - 19968: jis0208<<14 | 0x48<<7 | 0x00, + 34115 - 19968: jis0208<<14 | 0x27<<7 | 0x38, + 34118 - 19968: jis0212<<14 | 0x38<<7 | 0x20, + 34120 - 19968: jis0208<<14 | 0x47<<7 | 0x5D, + 34121 - 19968: jis0208<<14 | 0x1D<<7 | 0x35, + 34122 - 19968: jis0208<<14 | 0x1B<<7 | 0x28, + 34123 - 19968: jis0208<<14 | 0x48<<7 | 0x02, + 34126 - 19968: jis0208<<14 | 0x15<<7 | 0x1D, + 34127 - 19968: jis0212<<14 | 0x38<<7 | 0x21, + 34128 - 19968: jis0212<<14 | 0x38<<7 | 0x22, + 34129 - 19968: jis0212<<14 | 0x38<<7 | 0x23, + 34130 - 19968: jis0212<<14 | 0x38<<7 | 0x24, + 34131 - 19968: jis0208<<14 | 0x5A<<7 | 0x3D, + 34133 - 19968: jis0208<<14 | 0x48<<7 | 0x03, + 34134 - 19968: jis0212<<14 | 0x38<<7 | 0x26, + 34135 - 19968: jis0208<<14 | 0x28<<7 | 0x58, + 34136 - 19968: jis0208<<14 | 0x47<<7 | 0x5C, + 34137 - 19968: jis0208<<14 | 0x5A<<7 | 0x3E, + 34138 - 19968: jis0208<<14 | 0x47<<7 | 0x35, + 34140 - 19968: jis0212<<14 | 0x38<<7 | 0x28, + 34141 - 19968: jis0212<<14 | 0x38<<7 | 0x29, + 34142 - 19968: jis0212<<14 | 0x38<<7 | 0x2A, + 34143 - 19968: jis0212<<14 | 0x38<<7 | 0x2B, + 34144 - 19968: jis0212<<14 | 0x38<<7 | 0x2C, + 34145 - 19968: jis0212<<14 | 0x38<<7 | 0x2D, + 34146 - 19968: jis0212<<14 | 0x38<<7 | 0x2E, + 34147 - 19968: jis0208<<14 | 0x47<<7 | 0x5B, + 34148 - 19968: jis0212<<14 | 0x38<<7 | 0x2F, + 34152 - 19968: jis0208<<14 | 0x2E<<7 | 0x2E, + 34153 - 19968: jis0208<<14 | 0x25<<7 | 0x01, + 34154 - 19968: jis0208<<14 | 0x28<<7 | 0x52, + 34155 - 19968: jis0208<<14 | 0x5A<<7 | 0x3F, + 34157 - 19968: jis0208<<14 | 0x48<<7 | 0x0A, + 34159 - 19968: jis0212<<14 | 0x38<<7 | 0x31, + 34167 - 19968: jis0208<<14 | 0x48<<7 | 0x10, + 34169 - 19968: jis0212<<14 | 0x38<<7 | 0x32, + 34170 - 19968: jis0212<<14 | 0x38<<7 | 0x33, + 34171 - 19968: jis0212<<14 | 0x38<<7 | 0x34, + 34173 - 19968: jis0212<<14 | 0x38<<7 | 0x35, + 34174 - 19968: jis0208<<14 | 0x48<<7 | 0x11, + 34175 - 19968: jis0212<<14 | 0x38<<7 | 0x36, + 34176 - 19968: jis0208<<14 | 0x48<<7 | 0x04, + 34177 - 19968: jis0212<<14 | 0x38<<7 | 0x37, + 34180 - 19968: jis0208<<14 | 0x26<<7 | 0x55, + 34181 - 19968: jis0212<<14 | 0x38<<7 | 0x38, + 34182 - 19968: jis0212<<14 | 0x38<<7 | 0x39, + 34183 - 19968: jis0208<<14 | 0x48<<7 | 0x0E, + 34184 - 19968: jis0208<<14 | 0x48<<7 | 0x06, + 34185 - 19968: jis0212<<14 | 0x38<<7 | 0x3A, + 34186 - 19968: jis0208<<14 | 0x48<<7 | 0x08, + 34187 - 19968: jis0212<<14 | 0x38<<7 | 0x3B, + 34188 - 19968: jis0212<<14 | 0x38<<7 | 0x3C, + 34191 - 19968: jis0212<<14 | 0x38<<7 | 0x3D, + 34192 - 19968: jis0208<<14 | 0x48<<7 | 0x12, + 34193 - 19968: jis0208<<14 | 0x48<<7 | 0x07, + 34195 - 19968: jis0212<<14 | 0x38<<7 | 0x3E, + 34196 - 19968: jis0208<<14 | 0x48<<7 | 0x0B, + 34199 - 19968: jis0208<<14 | 0x10<<7 | 0x51, + 34200 - 19968: jis0212<<14 | 0x38<<7 | 0x3F, + 34201 - 19968: jis0208<<14 | 0x25<<7 | 0x44, + 34203 - 19968: jis0208<<14 | 0x48<<7 | 0x0C, + 34204 - 19968: jis0208<<14 | 0x48<<7 | 0x0F, + 34205 - 19968: jis0212<<14 | 0x38<<7 | 0x40, + 34207 - 19968: jis0212<<14 | 0x38<<7 | 0x41, + 34208 - 19968: jis0212<<14 | 0x38<<7 | 0x42, + 34210 - 19968: jis0212<<14 | 0x38<<7 | 0x43, + 34212 - 19968: jis0208<<14 | 0x48<<7 | 0x05, + 34213 - 19968: jis0212<<14 | 0x38<<7 | 0x44, + 34214 - 19968: jis0208<<14 | 0x20<<7 | 0x05, + 34215 - 19968: jis0212<<14 | 0x38<<7 | 0x45, + 34216 - 19968: jis0208<<14 | 0x48<<7 | 0x09, + 34217 - 19968: jis0208<<14 | 0x1A<<7 | 0x06, + 34218 - 19968: jis0208<<14 | 0x1E<<7 | 0x24, + 34219 - 19968: jis0208<<14 | 0x16<<7 | 0x0F, + 34220 - 19968: jis0208<<14 | 0x2B<<7 | 0x53, + 34221 - 19968: jis0212<<14 | 0x38<<7 | 0x53, + 34222 - 19968: jis0208<<14 | 0x2B<<7 | 0x58, + 34223 - 19968: jis0208<<14 | 0x1C<<7 | 0x51, + 34224 - 19968: jis0208<<14 | 0x5A<<7 | 0x41, + 34228 - 19968: jis0212<<14 | 0x38<<7 | 0x46, + 34230 - 19968: jis0212<<14 | 0x38<<7 | 0x47, + 34231 - 19968: jis0212<<14 | 0x38<<7 | 0x48, + 34232 - 19968: jis0212<<14 | 0x38<<7 | 0x49, + 34233 - 19968: jis0208<<14 | 0x48<<7 | 0x16, + 34234 - 19968: jis0208<<14 | 0x48<<7 | 0x14, + 34236 - 19968: jis0212<<14 | 0x38<<7 | 0x4A, + 34237 - 19968: jis0212<<14 | 0x38<<7 | 0x4B, + 34238 - 19968: jis0212<<14 | 0x38<<7 | 0x4C, + 34239 - 19968: jis0212<<14 | 0x38<<7 | 0x4D, + 34241 - 19968: jis0208<<14 | 0x2E<<7 | 0x2D, + 34242 - 19968: jis0212<<14 | 0x38<<7 | 0x4E, + 34247 - 19968: jis0212<<14 | 0x38<<7 | 0x4F, + 34249 - 19968: jis0208<<14 | 0x48<<7 | 0x13, + 34250 - 19968: jis0212<<14 | 0x38<<7 | 0x50, + 34251 - 19968: jis0212<<14 | 0x38<<7 | 0x51, + 34253 - 19968: jis0208<<14 | 0x2C<<7 | 0x54, + 34254 - 19968: jis0212<<14 | 0x38<<7 | 0x52, + 34255 - 19968: jis0208<<14 | 0x48<<7 | 0x15, + 34256 - 19968: jis0208<<14 | 0x48<<7 | 0x17, + 34261 - 19968: jis0208<<14 | 0x48<<7 | 0x18, + 34264 - 19968: jis0212<<14 | 0x38<<7 | 0x54, + 34266 - 19968: jis0212<<14 | 0x38<<7 | 0x55, + 34268 - 19968: jis0208<<14 | 0x48<<7 | 0x1B, + 34269 - 19968: jis0208<<14 | 0x48<<7 | 0x19, + 34271 - 19968: jis0212<<14 | 0x38<<7 | 0x56, + 34272 - 19968: jis0212<<14 | 0x38<<7 | 0x57, + 34276 - 19968: jis0208<<14 | 0x25<<7 | 0x02, + 34277 - 19968: jis0208<<14 | 0x48<<7 | 0x1A, + 34278 - 19968: jis0212<<14 | 0x38<<7 | 0x58, + 34280 - 19968: jis0212<<14 | 0x38<<7 | 0x59, + 34281 - 19968: jis0208<<14 | 0x27<<7 | 0x2C, + 34282 - 19968: jis0208<<14 | 0x48<<7 | 0x0D, + 34285 - 19968: jis0212<<14 | 0x38<<7 | 0x5A, + 34291 - 19968: jis0212<<14 | 0x38<<7 | 0x5B, + 34294 - 19968: jis0212<<14 | 0x38<<7 | 0x5C, + 34295 - 19968: jis0208<<14 | 0x1C<<7 | 0x52, + 34297 - 19968: jis0208<<14 | 0x48<<7 | 0x1C, + 34298 - 19968: jis0208<<14 | 0x48<<7 | 0x21, + 34299 - 19968: jis0208<<14 | 0x20<<7 | 0x53, + 34300 - 19968: jis0212<<14 | 0x38<<7 | 0x5D, + 34302 - 19968: jis0208<<14 | 0x48<<7 | 0x20, + 34303 - 19968: jis0212<<14 | 0x39<<7 | 0x00, + 34304 - 19968: jis0212<<14 | 0x39<<7 | 0x01, + 34306 - 19968: jis0208<<14 | 0x48<<7 | 0x01, + 34308 - 19968: jis0212<<14 | 0x39<<7 | 0x02, + 34309 - 19968: jis0212<<14 | 0x39<<7 | 0x03, + 34310 - 19968: jis0208<<14 | 0x48<<7 | 0x22, + 34311 - 19968: jis0208<<14 | 0x20<<7 | 0x28, + 34314 - 19968: jis0208<<14 | 0x48<<7 | 0x1D, + 34315 - 19968: jis0208<<14 | 0x48<<7 | 0x1F, + 34317 - 19968: jis0212<<14 | 0x39<<7 | 0x04, + 34318 - 19968: jis0212<<14 | 0x39<<7 | 0x05, + 34320 - 19968: jis0212<<14 | 0x39<<7 | 0x06, + 34321 - 19968: jis0212<<14 | 0x39<<7 | 0x07, + 34322 - 19968: jis0212<<14 | 0x39<<7 | 0x08, + 34323 - 19968: jis0208<<14 | 0x48<<7 | 0x1E, + 34326 - 19968: jis0208<<14 | 0x3C<<7 | 0x10, + 34327 - 19968: jis0208<<14 | 0x3C<<7 | 0x01, + 34328 - 19968: jis0212<<14 | 0x39<<7 | 0x09, + 34329 - 19968: jis0212<<14 | 0x39<<7 | 0x0A, + 34330 - 19968: jis0208<<14 | 0x48<<7 | 0x24, + 34331 - 19968: jis0212<<14 | 0x39<<7 | 0x0B, + 34334 - 19968: jis0212<<14 | 0x39<<7 | 0x0C, + 34337 - 19968: jis0212<<14 | 0x39<<7 | 0x0D, + 34338 - 19968: jis0208<<14 | 0x48<<7 | 0x23, + 34343 - 19968: jis0212<<14 | 0x39<<7 | 0x0E, + 34345 - 19968: jis0212<<14 | 0x39<<7 | 0x0F, + 34349 - 19968: jis0208<<14 | 0x2C<<7 | 0x55, + 34351 - 19968: jis0208<<14 | 0x41<<7 | 0x1B, + 34352 - 19968: jis0208<<14 | 0x48<<7 | 0x25, + 34358 - 19968: jis0212<<14 | 0x39<<7 | 0x10, + 34360 - 19968: jis0212<<14 | 0x39<<7 | 0x11, + 34362 - 19968: jis0212<<14 | 0x39<<7 | 0x12, + 34364 - 19968: jis0212<<14 | 0x39<<7 | 0x13, + 34365 - 19968: jis0212<<14 | 0x39<<7 | 0x14, + 34367 - 19968: jis0208<<14 | 0x48<<7 | 0x26, + 34368 - 19968: jis0212<<14 | 0x39<<7 | 0x15, + 34369 - 19968: jis0212<<14 | 0x17<<7 | 0x45, + 34370 - 19968: jis0212<<14 | 0x39<<7 | 0x16, + 34374 - 19968: jis0212<<14 | 0x39<<7 | 0x17, + 34381 - 19968: jis0208<<14 | 0x48<<7 | 0x27, + 34382 - 19968: jis0208<<14 | 0x17<<7 | 0x36, + 34384 - 19968: jis0208<<14 | 0x14<<7 | 0x33, + 34386 - 19968: jis0212<<14 | 0x39<<7 | 0x18, + 34387 - 19968: jis0212<<14 | 0x39<<7 | 0x19, + 34388 - 19968: jis0208<<14 | 0x48<<7 | 0x29, + 34389 - 19968: jis0208<<14 | 0x30<<7 | 0x3C, + 34390 - 19968: jis0212<<14 | 0x39<<7 | 0x1A, + 34391 - 19968: jis0212<<14 | 0x39<<7 | 0x1B, + 34392 - 19968: jis0212<<14 | 0x39<<7 | 0x1C, + 34393 - 19968: jis0212<<14 | 0x39<<7 | 0x1D, + 34394 - 19968: jis0208<<14 | 0x14<<7 | 0x54, + 34396 - 19968: jis0208<<14 | 0x2D<<7 | 0x19, + 34397 - 19968: jis0212<<14 | 0x39<<7 | 0x1E, + 34398 - 19968: jis0208<<14 | 0x15<<7 | 0x52, + 34399 - 19968: jis0208<<14 | 0x48<<7 | 0x2A, + 34400 - 19968: jis0212<<14 | 0x39<<7 | 0x1F, + 34401 - 19968: jis0212<<14 | 0x39<<7 | 0x20, + 34402 - 19968: jis0212<<14 | 0x39<<7 | 0x21, + 34403 - 19968: jis0212<<14 | 0x39<<7 | 0x22, + 34404 - 19968: jis0212<<14 | 0x39<<7 | 0x23, + 34407 - 19968: jis0208<<14 | 0x48<<7 | 0x2B, + 34409 - 19968: jis0212<<14 | 0x39<<7 | 0x24, + 34411 - 19968: jis0208<<14 | 0x22<<7 | 0x4D, + 34412 - 19968: jis0212<<14 | 0x39<<7 | 0x25, + 34415 - 19968: jis0212<<14 | 0x39<<7 | 0x26, + 34417 - 19968: jis0208<<14 | 0x48<<7 | 0x2C, + 34421 - 19968: jis0212<<14 | 0x39<<7 | 0x27, + 34422 - 19968: jis0212<<14 | 0x39<<7 | 0x28, + 34423 - 19968: jis0212<<14 | 0x39<<7 | 0x29, + 34425 - 19968: jis0208<<14 | 0x25<<7 | 0x59, + 34426 - 19968: jis0212<<14 | 0x39<<7 | 0x2A, + 34427 - 19968: jis0208<<14 | 0x0F<<7 | 0x19, + 34440 - 19968: jis0212<<14 | 0x39<<7 | 0x4C, + 34442 - 19968: jis0208<<14 | 0x11<<7 | 0x42, + 34443 - 19968: jis0208<<14 | 0x48<<7 | 0x31, + 34444 - 19968: jis0208<<14 | 0x48<<7 | 0x32, + 34445 - 19968: jis0212<<14 | 0x39<<7 | 0x2B, + 34449 - 19968: jis0212<<14 | 0x39<<7 | 0x2C, + 34451 - 19968: jis0208<<14 | 0x48<<7 | 0x2D, + 34453 - 19968: jis0208<<14 | 0x1A<<7 | 0x1C, + 34454 - 19968: jis0212<<14 | 0x39<<7 | 0x2D, + 34456 - 19968: jis0212<<14 | 0x39<<7 | 0x2E, + 34458 - 19968: jis0212<<14 | 0x39<<7 | 0x2F, + 34460 - 19968: jis0212<<14 | 0x39<<7 | 0x30, + 34465 - 19968: jis0212<<14 | 0x39<<7 | 0x31, + 34467 - 19968: jis0208<<14 | 0x48<<7 | 0x2E, + 34468 - 19968: jis0208<<14 | 0x26<<7 | 0x21, + 34470 - 19968: jis0212<<14 | 0x39<<7 | 0x32, + 34471 - 19968: jis0212<<14 | 0x39<<7 | 0x33, + 34472 - 19968: jis0212<<14 | 0x39<<7 | 0x34, + 34473 - 19968: jis0208<<14 | 0x48<<7 | 0x2F, + 34474 - 19968: jis0208<<14 | 0x48<<7 | 0x30, + 34475 - 19968: jis0208<<14 | 0x48<<7 | 0x3A, + 34477 - 19968: jis0212<<14 | 0x39<<7 | 0x35, + 34479 - 19968: jis0208<<14 | 0x48<<7 | 0x34, + 34480 - 19968: jis0208<<14 | 0x48<<7 | 0x37, + 34481 - 19968: jis0212<<14 | 0x39<<7 | 0x36, + 34483 - 19968: jis0212<<14 | 0x39<<7 | 0x37, + 34484 - 19968: jis0212<<14 | 0x39<<7 | 0x38, + 34485 - 19968: jis0212<<14 | 0x39<<7 | 0x39, + 34486 - 19968: jis0208<<14 | 0x48<<7 | 0x33, + 34487 - 19968: jis0212<<14 | 0x39<<7 | 0x3A, + 34488 - 19968: jis0212<<14 | 0x39<<7 | 0x3B, + 34489 - 19968: jis0212<<14 | 0x39<<7 | 0x3C, + 34495 - 19968: jis0212<<14 | 0x39<<7 | 0x3D, + 34496 - 19968: jis0212<<14 | 0x39<<7 | 0x3E, + 34497 - 19968: jis0212<<14 | 0x39<<7 | 0x3F, + 34499 - 19968: jis0212<<14 | 0x39<<7 | 0x40, + 34500 - 19968: jis0208<<14 | 0x48<<7 | 0x35, + 34501 - 19968: jis0212<<14 | 0x39<<7 | 0x41, + 34502 - 19968: jis0208<<14 | 0x48<<7 | 0x36, + 34503 - 19968: jis0208<<14 | 0x1B<<7 | 0x37, + 34505 - 19968: jis0208<<14 | 0x48<<7 | 0x38, + 34507 - 19968: jis0208<<14 | 0x22<<7 | 0x20, + 34509 - 19968: jis0208<<14 | 0x16<<7 | 0x35, + 34510 - 19968: jis0208<<14 | 0x12<<7 | 0x21, + 34513 - 19968: jis0212<<14 | 0x39<<7 | 0x42, + 34514 - 19968: jis0212<<14 | 0x39<<7 | 0x43, + 34516 - 19968: jis0208<<14 | 0x48<<7 | 0x3B, + 34517 - 19968: jis0212<<14 | 0x39<<7 | 0x44, + 34519 - 19968: jis0212<<14 | 0x39<<7 | 0x45, + 34521 - 19968: jis0208<<14 | 0x12<<7 | 0x1E, + 34522 - 19968: jis0212<<14 | 0x39<<7 | 0x46, + 34523 - 19968: jis0208<<14 | 0x48<<7 | 0x40, + 34524 - 19968: jis0212<<14 | 0x39<<7 | 0x47, + 34526 - 19968: jis0208<<14 | 0x48<<7 | 0x3C, + 34527 - 19968: jis0208<<14 | 0x48<<7 | 0x3F, + 34528 - 19968: jis0212<<14 | 0x39<<7 | 0x48, + 34531 - 19968: jis0212<<14 | 0x39<<7 | 0x49, + 34532 - 19968: jis0208<<14 | 0x27<<7 | 0x19, + 34533 - 19968: jis0212<<14 | 0x39<<7 | 0x4A, + 34535 - 19968: jis0212<<14 | 0x39<<7 | 0x4B, + 34537 - 19968: jis0208<<14 | 0x48<<7 | 0x3D, + 34540 - 19968: jis0208<<14 | 0x48<<7 | 0x3E, + 34541 - 19968: jis0208<<14 | 0x28<<7 | 0x27, + 34542 - 19968: jis0208<<14 | 0x27<<7 | 0x39, + 34543 - 19968: jis0208<<14 | 0x48<<7 | 0x41, + 34552 - 19968: jis0208<<14 | 0x21<<7 | 0x5C, + 34553 - 19968: jis0208<<14 | 0x48<<7 | 0x4B, + 34554 - 19968: jis0212<<14 | 0x39<<7 | 0x4D, + 34555 - 19968: jis0208<<14 | 0x48<<7 | 0x47, + 34556 - 19968: jis0212<<14 | 0x39<<7 | 0x4E, + 34557 - 19968: jis0212<<14 | 0x39<<7 | 0x4F, + 34558 - 19968: jis0208<<14 | 0x11<<7 | 0x4A, + 34560 - 19968: jis0208<<14 | 0x48<<7 | 0x45, + 34562 - 19968: jis0208<<14 | 0x2A<<7 | 0x09, + 34563 - 19968: jis0208<<14 | 0x48<<7 | 0x46, + 34564 - 19968: jis0212<<14 | 0x39<<7 | 0x50, + 34565 - 19968: jis0212<<14 | 0x39<<7 | 0x51, + 34566 - 19968: jis0208<<14 | 0x48<<7 | 0x43, + 34567 - 19968: jis0212<<14 | 0x39<<7 | 0x52, + 34568 - 19968: jis0208<<14 | 0x48<<7 | 0x44, + 34569 - 19968: jis0208<<14 | 0x48<<7 | 0x49, + 34570 - 19968: jis0208<<14 | 0x48<<7 | 0x4C, + 34571 - 19968: jis0212<<14 | 0x39<<7 | 0x53, + 34573 - 19968: jis0208<<14 | 0x48<<7 | 0x4A, + 34574 - 19968: jis0212<<14 | 0x39<<7 | 0x54, + 34575 - 19968: jis0212<<14 | 0x39<<7 | 0x55, + 34576 - 19968: jis0212<<14 | 0x39<<7 | 0x56, + 34577 - 19968: jis0208<<14 | 0x48<<7 | 0x48, + 34578 - 19968: jis0208<<14 | 0x48<<7 | 0x42, + 34579 - 19968: jis0212<<14 | 0x39<<7 | 0x57, + 34580 - 19968: jis0212<<14 | 0x39<<7 | 0x58, + 34584 - 19968: jis0208<<14 | 0x22<<7 | 0x37, + 34585 - 19968: jis0212<<14 | 0x39<<7 | 0x59, + 34586 - 19968: jis0208<<14 | 0x48<<7 | 0x53, + 34588 - 19968: jis0208<<14 | 0x2B<<7 | 0x09, + 34590 - 19968: jis0212<<14 | 0x39<<7 | 0x5A, + 34591 - 19968: jis0212<<14 | 0x39<<7 | 0x5B, + 34593 - 19968: jis0212<<14 | 0x39<<7 | 0x5C, + 34595 - 19968: jis0212<<14 | 0x39<<7 | 0x5D, + 34597 - 19968: jis0208<<14 | 0x48<<7 | 0x51, + 34600 - 19968: jis0212<<14 | 0x3A<<7 | 0x00, + 34601 - 19968: jis0208<<14 | 0x48<<7 | 0x52, + 34606 - 19968: jis0212<<14 | 0x3A<<7 | 0x01, + 34607 - 19968: jis0212<<14 | 0x3A<<7 | 0x02, + 34609 - 19968: jis0212<<14 | 0x3A<<7 | 0x03, + 34610 - 19968: jis0212<<14 | 0x3A<<7 | 0x04, + 34612 - 19968: jis0208<<14 | 0x48<<7 | 0x4D, + 34615 - 19968: jis0208<<14 | 0x48<<7 | 0x4F, + 34617 - 19968: jis0212<<14 | 0x3A<<7 | 0x05, + 34618 - 19968: jis0212<<14 | 0x3A<<7 | 0x06, + 34619 - 19968: jis0208<<14 | 0x48<<7 | 0x50, + 34620 - 19968: jis0212<<14 | 0x3A<<7 | 0x07, + 34621 - 19968: jis0212<<14 | 0x3A<<7 | 0x08, + 34622 - 19968: jis0212<<14 | 0x3A<<7 | 0x09, + 34623 - 19968: jis0208<<14 | 0x48<<7 | 0x4E, + 34624 - 19968: jis0212<<14 | 0x3A<<7 | 0x0A, + 34627 - 19968: jis0212<<14 | 0x3A<<7 | 0x0B, + 34629 - 19968: jis0212<<14 | 0x3A<<7 | 0x0C, + 34633 - 19968: jis0208<<14 | 0x1F<<7 | 0x45, + 34635 - 19968: jis0208<<14 | 0x2E<<7 | 0x18, + 34636 - 19968: jis0208<<14 | 0x48<<7 | 0x57, + 34637 - 19968: jis0212<<14 | 0x3A<<7 | 0x0D, + 34638 - 19968: jis0208<<14 | 0x48<<7 | 0x58, + 34643 - 19968: jis0208<<14 | 0x49<<7 | 0x00, + 34645 - 19968: jis0208<<14 | 0x1E<<7 | 0x09, + 34647 - 19968: jis0208<<14 | 0x48<<7 | 0x5A, + 34648 - 19968: jis0212<<14 | 0x3A<<7 | 0x0E, + 34649 - 19968: jis0208<<14 | 0x48<<7 | 0x5D, + 34653 - 19968: jis0212<<14 | 0x3A<<7 | 0x0F, + 34655 - 19968: jis0208<<14 | 0x48<<7 | 0x55, + 34656 - 19968: jis0208<<14 | 0x48<<7 | 0x54, + 34657 - 19968: jis0212<<14 | 0x3A<<7 | 0x10, + 34659 - 19968: jis0208<<14 | 0x49<<7 | 0x01, + 34660 - 19968: jis0212<<14 | 0x3A<<7 | 0x11, + 34661 - 19968: jis0212<<14 | 0x3A<<7 | 0x12, + 34662 - 19968: jis0208<<14 | 0x11<<7 | 0x3B, + 34664 - 19968: jis0208<<14 | 0x48<<7 | 0x5B, + 34666 - 19968: jis0208<<14 | 0x49<<7 | 0x02, + 34670 - 19968: jis0208<<14 | 0x48<<7 | 0x5C, + 34671 - 19968: jis0212<<14 | 0x3A<<7 | 0x13, + 34673 - 19968: jis0212<<14 | 0x3A<<7 | 0x14, + 34674 - 19968: jis0212<<14 | 0x3A<<7 | 0x15, + 34676 - 19968: jis0208<<14 | 0x48<<7 | 0x59, + 34678 - 19968: jis0208<<14 | 0x23<<7 | 0x12, + 34680 - 19968: jis0208<<14 | 0x48<<7 | 0x56, + 34683 - 19968: jis0212<<14 | 0x3A<<7 | 0x16, + 34687 - 19968: jis0208<<14 | 0x26<<7 | 0x47, + 34690 - 19968: jis0208<<14 | 0x49<<7 | 0x06, + 34691 - 19968: jis0212<<14 | 0x3A<<7 | 0x17, + 34692 - 19968: jis0212<<14 | 0x3A<<7 | 0x18, + 34693 - 19968: jis0212<<14 | 0x3A<<7 | 0x19, + 34694 - 19968: jis0212<<14 | 0x3A<<7 | 0x1A, + 34695 - 19968: jis0212<<14 | 0x3A<<7 | 0x1B, + 34696 - 19968: jis0212<<14 | 0x3A<<7 | 0x1C, + 34697 - 19968: jis0212<<14 | 0x3A<<7 | 0x1D, + 34699 - 19968: jis0212<<14 | 0x3A<<7 | 0x1E, + 34700 - 19968: jis0212<<14 | 0x3A<<7 | 0x1F, + 34701 - 19968: jis0208<<14 | 0x2C<<7 | 0x1A, + 34704 - 19968: jis0212<<14 | 0x3A<<7 | 0x20, + 34707 - 19968: jis0212<<14 | 0x3A<<7 | 0x21, + 34709 - 19968: jis0212<<14 | 0x3A<<7 | 0x22, + 34711 - 19968: jis0212<<14 | 0x3A<<7 | 0x23, + 34712 - 19968: jis0212<<14 | 0x3A<<7 | 0x24, + 34713 - 19968: jis0212<<14 | 0x3A<<7 | 0x25, + 34718 - 19968: jis0212<<14 | 0x3A<<7 | 0x26, + 34719 - 19968: jis0208<<14 | 0x49<<7 | 0x05, + 34720 - 19968: jis0212<<14 | 0x3A<<7 | 0x27, + 34722 - 19968: jis0208<<14 | 0x49<<7 | 0x04, + 34723 - 19968: jis0212<<14 | 0x3A<<7 | 0x28, + 34727 - 19968: jis0212<<14 | 0x3A<<7 | 0x29, + 34731 - 19968: jis0208<<14 | 0x49<<7 | 0x0D, + 34732 - 19968: jis0212<<14 | 0x3A<<7 | 0x2A, + 34733 - 19968: jis0212<<14 | 0x3A<<7 | 0x2B, + 34734 - 19968: jis0212<<14 | 0x3A<<7 | 0x2C, + 34735 - 19968: jis0208<<14 | 0x49<<7 | 0x07, + 34737 - 19968: jis0212<<14 | 0x3A<<7 | 0x2D, + 34739 - 19968: jis0208<<14 | 0x49<<7 | 0x0F, + 34741 - 19968: jis0212<<14 | 0x3A<<7 | 0x2E, + 34746 - 19968: jis0208<<14 | 0x2C<<7 | 0x45, + 34747 - 19968: jis0208<<14 | 0x49<<7 | 0x12, + 34749 - 19968: jis0208<<14 | 0x49<<7 | 0x09, + 34750 - 19968: jis0212<<14 | 0x3A<<7 | 0x2F, + 34751 - 19968: jis0212<<14 | 0x3A<<7 | 0x30, + 34752 - 19968: jis0208<<14 | 0x49<<7 | 0x0A, + 34753 - 19968: jis0212<<14 | 0x3A<<7 | 0x31, + 34756 - 19968: jis0208<<14 | 0x49<<7 | 0x0E, + 34758 - 19968: jis0208<<14 | 0x49<<7 | 0x11, + 34759 - 19968: jis0208<<14 | 0x49<<7 | 0x10, + 34760 - 19968: jis0212<<14 | 0x3A<<7 | 0x32, + 34761 - 19968: jis0212<<14 | 0x3A<<7 | 0x33, + 34762 - 19968: jis0212<<14 | 0x3A<<7 | 0x34, + 34763 - 19968: jis0208<<14 | 0x49<<7 | 0x08, + 34766 - 19968: jis0212<<14 | 0x3A<<7 | 0x35, + 34768 - 19968: jis0208<<14 | 0x49<<7 | 0x0B, + 34770 - 19968: jis0208<<14 | 0x49<<7 | 0x1C, + 34773 - 19968: jis0212<<14 | 0x3A<<7 | 0x36, + 34774 - 19968: jis0212<<14 | 0x3A<<7 | 0x37, + 34777 - 19968: jis0212<<14 | 0x3A<<7 | 0x38, + 34778 - 19968: jis0212<<14 | 0x3A<<7 | 0x39, + 34780 - 19968: jis0212<<14 | 0x3A<<7 | 0x3A, + 34783 - 19968: jis0212<<14 | 0x3A<<7 | 0x3B, + 34784 - 19968: jis0208<<14 | 0x49<<7 | 0x15, + 34786 - 19968: jis0212<<14 | 0x3A<<7 | 0x3C, + 34787 - 19968: jis0212<<14 | 0x3A<<7 | 0x3D, + 34788 - 19968: jis0212<<14 | 0x3A<<7 | 0x3E, + 34794 - 19968: jis0212<<14 | 0x3A<<7 | 0x3F, + 34795 - 19968: jis0212<<14 | 0x3A<<7 | 0x40, + 34797 - 19968: jis0212<<14 | 0x3A<<7 | 0x41, + 34799 - 19968: jis0208<<14 | 0x49<<7 | 0x13, + 34801 - 19968: jis0212<<14 | 0x3A<<7 | 0x42, + 34802 - 19968: jis0208<<14 | 0x49<<7 | 0x14, + 34803 - 19968: jis0212<<14 | 0x3A<<7 | 0x43, + 34806 - 19968: jis0208<<14 | 0x49<<7 | 0x19, + 34807 - 19968: jis0208<<14 | 0x49<<7 | 0x1A, + 34808 - 19968: jis0212<<14 | 0x3A<<7 | 0x44, + 34809 - 19968: jis0208<<14 | 0x12<<7 | 0x09, + 34810 - 19968: jis0212<<14 | 0x3A<<7 | 0x45, + 34811 - 19968: jis0208<<14 | 0x14<<7 | 0x21, + 34814 - 19968: jis0208<<14 | 0x49<<7 | 0x18, + 34815 - 19968: jis0212<<14 | 0x3A<<7 | 0x46, + 34817 - 19968: jis0212<<14 | 0x3A<<7 | 0x47, + 34819 - 19968: jis0212<<14 | 0x3A<<7 | 0x48, + 34821 - 19968: jis0208<<14 | 0x49<<7 | 0x03, + 34822 - 19968: jis0212<<14 | 0x3A<<7 | 0x49, + 34823 - 19968: jis0208<<14 | 0x5A<<7 | 0x44, + 34825 - 19968: jis0212<<14 | 0x3A<<7 | 0x4A, + 34826 - 19968: jis0212<<14 | 0x3A<<7 | 0x4B, + 34827 - 19968: jis0212<<14 | 0x3A<<7 | 0x4C, + 34829 - 19968: jis0208<<14 | 0x49<<7 | 0x17, + 34830 - 19968: jis0208<<14 | 0x49<<7 | 0x1B, + 34831 - 19968: jis0208<<14 | 0x49<<7 | 0x16, + 34832 - 19968: jis0212<<14 | 0x3A<<7 | 0x4D, + 34833 - 19968: jis0208<<14 | 0x49<<7 | 0x1D, + 34834 - 19968: jis0212<<14 | 0x3A<<7 | 0x4F, + 34835 - 19968: jis0212<<14 | 0x3A<<7 | 0x50, + 34836 - 19968: jis0212<<14 | 0x3A<<7 | 0x51, + 34837 - 19968: jis0208<<14 | 0x49<<7 | 0x1F, + 34838 - 19968: jis0208<<14 | 0x49<<7 | 0x1E, + 34840 - 19968: jis0212<<14 | 0x3A<<7 | 0x52, + 34841 - 19968: jis0212<<14 | 0x3A<<7 | 0x4E, + 34842 - 19968: jis0212<<14 | 0x3A<<7 | 0x53, + 34843 - 19968: jis0212<<14 | 0x3A<<7 | 0x54, + 34844 - 19968: jis0212<<14 | 0x3A<<7 | 0x55, + 34846 - 19968: jis0212<<14 | 0x3A<<7 | 0x56, + 34847 - 19968: jis0212<<14 | 0x3A<<7 | 0x57, + 34849 - 19968: jis0208<<14 | 0x49<<7 | 0x21, + 34850 - 19968: jis0208<<14 | 0x49<<7 | 0x20, + 34851 - 19968: jis0208<<14 | 0x48<<7 | 0x39, + 34855 - 19968: jis0208<<14 | 0x49<<7 | 0x25, + 34856 - 19968: jis0212<<14 | 0x3A<<7 | 0x58, + 34861 - 19968: jis0212<<14 | 0x3A<<7 | 0x59, + 34862 - 19968: jis0212<<14 | 0x3A<<7 | 0x5A, + 34864 - 19968: jis0212<<14 | 0x3A<<7 | 0x5B, + 34865 - 19968: jis0208<<14 | 0x49<<7 | 0x22, + 34866 - 19968: jis0212<<14 | 0x3A<<7 | 0x5C, + 34869 - 19968: jis0212<<14 | 0x3A<<7 | 0x5D, + 34870 - 19968: jis0208<<14 | 0x49<<7 | 0x23, + 34873 - 19968: jis0208<<14 | 0x49<<7 | 0x24, + 34874 - 19968: jis0212<<14 | 0x3B<<7 | 0x00, + 34875 - 19968: jis0208<<14 | 0x49<<7 | 0x26, + 34876 - 19968: jis0212<<14 | 0x3B<<7 | 0x01, + 34880 - 19968: jis0208<<14 | 0x16<<7 | 0x4B, + 34881 - 19968: jis0212<<14 | 0x3B<<7 | 0x02, + 34882 - 19968: jis0208<<14 | 0x49<<7 | 0x28, + 34883 - 19968: jis0212<<14 | 0x3B<<7 | 0x03, + 34884 - 19968: jis0208<<14 | 0x49<<7 | 0x27, + 34885 - 19968: jis0212<<14 | 0x3B<<7 | 0x04, + 34886 - 19968: jis0208<<14 | 0x1C<<7 | 0x0F, + 34888 - 19968: jis0212<<14 | 0x3B<<7 | 0x05, + 34889 - 19968: jis0212<<14 | 0x3B<<7 | 0x06, + 34890 - 19968: jis0212<<14 | 0x3B<<7 | 0x07, + 34891 - 19968: jis0212<<14 | 0x3B<<7 | 0x08, + 34892 - 19968: jis0208<<14 | 0x18<<7 | 0x33, + 34893 - 19968: jis0208<<14 | 0x3D<<7 | 0x06, + 34894 - 19968: jis0212<<14 | 0x3B<<7 | 0x09, + 34897 - 19968: jis0212<<14 | 0x3B<<7 | 0x0A, + 34898 - 19968: jis0208<<14 | 0x49<<7 | 0x29, + 34899 - 19968: jis0208<<14 | 0x1C<<7 | 0x30, + 34901 - 19968: jis0212<<14 | 0x3B<<7 | 0x0B, + 34902 - 19968: jis0212<<14 | 0x3B<<7 | 0x0C, + 34903 - 19968: jis0208<<14 | 0x12<<7 | 0x18, + 34904 - 19968: jis0212<<14 | 0x3B<<7 | 0x0D, + 34905 - 19968: jis0208<<14 | 0x49<<7 | 0x2A, + 34906 - 19968: jis0212<<14 | 0x3B<<7 | 0x0E, + 34907 - 19968: jis0208<<14 | 0x10<<7 | 0x31, + 34908 - 19968: jis0212<<14 | 0x3B<<7 | 0x0F, + 34909 - 19968: jis0208<<14 | 0x1D<<7 | 0x36, + 34910 - 19968: jis0208<<14 | 0x49<<7 | 0x2B, + 34911 - 19968: jis0212<<14 | 0x3B<<7 | 0x10, + 34912 - 19968: jis0212<<14 | 0x3B<<7 | 0x11, + 34913 - 19968: jis0208<<14 | 0x18<<7 | 0x34, + 34914 - 19968: jis0208<<14 | 0x49<<7 | 0x2C, + 34915 - 19968: jis0208<<14 | 0x0F<<7 | 0x40, + 34916 - 19968: jis0212<<14 | 0x3B<<7 | 0x12, + 34920 - 19968: jis0208<<14 | 0x28<<7 | 0x1C, + 34921 - 19968: jis0212<<14 | 0x3B<<7 | 0x13, + 34923 - 19968: jis0208<<14 | 0x49<<7 | 0x2D, + 34928 - 19968: jis0208<<14 | 0x1E<<7 | 0x49, + 34929 - 19968: jis0212<<14 | 0x3B<<7 | 0x14, + 34930 - 19968: jis0208<<14 | 0x49<<7 | 0x34, + 34933 - 19968: jis0208<<14 | 0x49<<7 | 0x31, + 34935 - 19968: jis0208<<14 | 0x22<<7 | 0x4E, + 34937 - 19968: jis0212<<14 | 0x3B<<7 | 0x15, + 34939 - 19968: jis0212<<14 | 0x3B<<7 | 0x16, + 34941 - 19968: jis0208<<14 | 0x49<<7 | 0x32, + 34942 - 19968: jis0208<<14 | 0x49<<7 | 0x2F, + 34943 - 19968: jis0208<<14 | 0x15<<7 | 0x3D, + 34944 - 19968: jis0212<<14 | 0x3B<<7 | 0x17, + 34945 - 19968: jis0208<<14 | 0x49<<7 | 0x2E, + 34946 - 19968: jis0208<<14 | 0x49<<7 | 0x35, + 34952 - 19968: jis0208<<14 | 0x16<<7 | 0x15, + 34955 - 19968: jis0208<<14 | 0x21<<7 | 0x3D, + 34957 - 19968: jis0208<<14 | 0x49<<7 | 0x3B, + 34962 - 19968: jis0208<<14 | 0x49<<7 | 0x37, + 34966 - 19968: jis0208<<14 | 0x21<<7 | 0x14, + 34967 - 19968: jis0208<<14 | 0x49<<7 | 0x36, + 34968 - 19968: jis0212<<14 | 0x3B<<7 | 0x18, + 34969 - 19968: jis0208<<14 | 0x49<<7 | 0x39, + 34970 - 19968: jis0212<<14 | 0x3B<<7 | 0x19, + 34971 - 19968: jis0212<<14 | 0x3B<<7 | 0x1A, + 34972 - 19968: jis0212<<14 | 0x3B<<7 | 0x1B, + 34974 - 19968: jis0208<<14 | 0x49<<7 | 0x30, + 34975 - 19968: jis0212<<14 | 0x3B<<7 | 0x1C, + 34976 - 19968: jis0212<<14 | 0x3B<<7 | 0x1D, + 34978 - 19968: jis0208<<14 | 0x49<<7 | 0x3A, + 34980 - 19968: jis0208<<14 | 0x49<<7 | 0x3C, + 34984 - 19968: jis0212<<14 | 0x3B<<7 | 0x1E, + 34986 - 19968: jis0212<<14 | 0x3B<<7 | 0x1F, + 34987 - 19968: jis0208<<14 | 0x27<<7 | 0x4E, + 34990 - 19968: jis0208<<14 | 0x49<<7 | 0x38, + 34992 - 19968: jis0208<<14 | 0x49<<7 | 0x3D, + 34993 - 19968: jis0208<<14 | 0x49<<7 | 0x3F, + 34996 - 19968: jis0208<<14 | 0x17<<7 | 0x32, + 34997 - 19968: jis0208<<14 | 0x49<<7 | 0x33, + 34999 - 19968: jis0208<<14 | 0x0F<<7 | 0x20, + 35002 - 19968: jis0212<<14 | 0x3B<<7 | 0x20, + 35005 - 19968: jis0212<<14 | 0x3B<<7 | 0x21, + 35006 - 19968: jis0212<<14 | 0x3B<<7 | 0x22, + 35007 - 19968: jis0208<<14 | 0x49<<7 | 0x3E, + 35008 - 19968: jis0212<<14 | 0x3B<<7 | 0x23, + 35009 - 19968: jis0208<<14 | 0x19<<7 | 0x3A, + 35010 - 19968: jis0208<<14 | 0x2D<<7 | 0x55, + 35011 - 19968: jis0208<<14 | 0x49<<7 | 0x40, + 35012 - 19968: jis0208<<14 | 0x49<<7 | 0x41, + 35013 - 19968: jis0208<<14 | 0x20<<7 | 0x54, + 35018 - 19968: jis0212<<14 | 0x3B<<7 | 0x24, + 35019 - 19968: jis0212<<14 | 0x3B<<7 | 0x25, + 35020 - 19968: jis0212<<14 | 0x3B<<7 | 0x26, + 35021 - 19968: jis0212<<14 | 0x3B<<7 | 0x27, + 35022 - 19968: jis0212<<14 | 0x3B<<7 | 0x28, + 35023 - 19968: jis0208<<14 | 0x2D<<7 | 0x01, + 35025 - 19968: jis0212<<14 | 0x3B<<7 | 0x29, + 35026 - 19968: jis0212<<14 | 0x3B<<7 | 0x2A, + 35027 - 19968: jis0212<<14 | 0x3B<<7 | 0x2B, + 35028 - 19968: jis0208<<14 | 0x49<<7 | 0x42, + 35029 - 19968: jis0208<<14 | 0x2C<<7 | 0x14, + 35032 - 19968: jis0208<<14 | 0x49<<7 | 0x43, + 35033 - 19968: jis0208<<14 | 0x49<<7 | 0x44, + 35035 - 19968: jis0212<<14 | 0x3B<<7 | 0x2C, + 35036 - 19968: jis0208<<14 | 0x29<<7 | 0x43, + 35037 - 19968: jis0208<<14 | 0x49<<7 | 0x45, + 35038 - 19968: jis0212<<14 | 0x3B<<7 | 0x2D, + 35039 - 19968: jis0208<<14 | 0x19<<7 | 0x1F, + 35041 - 19968: jis0208<<14 | 0x2D<<7 | 0x02, + 35047 - 19968: jis0212<<14 | 0x3B<<7 | 0x2E, + 35048 - 19968: jis0208<<14 | 0x49<<7 | 0x4A, + 35055 - 19968: jis0212<<14 | 0x3B<<7 | 0x2F, + 35056 - 19968: jis0212<<14 | 0x3B<<7 | 0x30, + 35057 - 19968: jis0212<<14 | 0x3B<<7 | 0x31, + 35058 - 19968: jis0208<<14 | 0x49<<7 | 0x4B, + 35059 - 19968: jis0208<<14 | 0x1D<<7 | 0x37, + 35060 - 19968: jis0208<<14 | 0x49<<7 | 0x49, + 35061 - 19968: jis0208<<14 | 0x5A<<7 | 0x45, + 35063 - 19968: jis0212<<14 | 0x3B<<7 | 0x33, + 35064 - 19968: jis0208<<14 | 0x2C<<7 | 0x46, + 35065 - 19968: jis0208<<14 | 0x49<<7 | 0x46, + 35068 - 19968: jis0208<<14 | 0x49<<7 | 0x48, + 35069 - 19968: jis0208<<14 | 0x1F<<7 | 0x1C, + 35070 - 19968: jis0208<<14 | 0x1E<<7 | 0x5D, + 35073 - 19968: jis0212<<14 | 0x3B<<7 | 0x34, + 35074 - 19968: jis0208<<14 | 0x49<<7 | 0x47, + 35076 - 19968: jis0208<<14 | 0x49<<7 | 0x4C, + 35078 - 19968: jis0212<<14 | 0x3B<<7 | 0x35, + 35079 - 19968: jis0208<<14 | 0x29<<7 | 0x02, + 35082 - 19968: jis0208<<14 | 0x49<<7 | 0x4E, + 35084 - 19968: jis0208<<14 | 0x49<<7 | 0x4D, + 35085 - 19968: jis0212<<14 | 0x3B<<7 | 0x36, + 35086 - 19968: jis0212<<14 | 0x3B<<7 | 0x37, + 35087 - 19968: jis0212<<14 | 0x3B<<7 | 0x38, + 35088 - 19968: jis0208<<14 | 0x12<<7 | 0x4B, + 35090 - 19968: jis0208<<14 | 0x2A<<7 | 0x0A, + 35091 - 19968: jis0208<<14 | 0x49<<7 | 0x4F, + 35093 - 19968: jis0212<<14 | 0x3B<<7 | 0x39, + 35094 - 19968: jis0212<<14 | 0x3B<<7 | 0x3A, + 35096 - 19968: jis0212<<14 | 0x3B<<7 | 0x3B, + 35097 - 19968: jis0212<<14 | 0x3B<<7 | 0x3C, + 35098 - 19968: jis0212<<14 | 0x3B<<7 | 0x3D, + 35100 - 19968: jis0208<<14 | 0x58<<7 | 0x01, + 35101 - 19968: jis0208<<14 | 0x49<<7 | 0x5B, + 35102 - 19968: jis0208<<14 | 0x49<<7 | 0x51, + 35104 - 19968: jis0212<<14 | 0x3B<<7 | 0x3F, + 35109 - 19968: jis0208<<14 | 0x49<<7 | 0x52, + 35110 - 19968: jis0212<<14 | 0x3B<<7 | 0x40, + 35111 - 19968: jis0212<<14 | 0x3B<<7 | 0x41, + 35112 - 19968: jis0212<<14 | 0x3B<<7 | 0x42, + 35114 - 19968: jis0208<<14 | 0x49<<7 | 0x53, + 35115 - 19968: jis0208<<14 | 0x49<<7 | 0x54, + 35120 - 19968: jis0212<<14 | 0x3B<<7 | 0x43, + 35121 - 19968: jis0212<<14 | 0x3B<<7 | 0x44, + 35122 - 19968: jis0212<<14 | 0x3B<<7 | 0x45, + 35125 - 19968: jis0212<<14 | 0x3B<<7 | 0x46, + 35126 - 19968: jis0208<<14 | 0x49<<7 | 0x58, + 35128 - 19968: jis0208<<14 | 0x49<<7 | 0x59, + 35129 - 19968: jis0212<<14 | 0x3B<<7 | 0x47, + 35130 - 19968: jis0212<<14 | 0x3B<<7 | 0x48, + 35131 - 19968: jis0208<<14 | 0x49<<7 | 0x57, + 35134 - 19968: jis0212<<14 | 0x3B<<7 | 0x49, + 35136 - 19968: jis0212<<14 | 0x3B<<7 | 0x4A, + 35137 - 19968: jis0208<<14 | 0x49<<7 | 0x55, + 35138 - 19968: jis0212<<14 | 0x3B<<7 | 0x4B, + 35139 - 19968: jis0208<<14 | 0x49<<7 | 0x50, + 35140 - 19968: jis0208<<14 | 0x49<<7 | 0x56, + 35141 - 19968: jis0212<<14 | 0x3B<<7 | 0x4C, + 35142 - 19968: jis0212<<14 | 0x3B<<7 | 0x4D, + 35145 - 19968: jis0212<<14 | 0x3B<<7 | 0x4E, + 35148 - 19968: jis0208<<14 | 0x49<<7 | 0x5A, + 35149 - 19968: jis0208<<14 | 0x4F<<7 | 0x16, + 35151 - 19968: jis0212<<14 | 0x3B<<7 | 0x4F, + 35154 - 19968: jis0212<<14 | 0x3B<<7 | 0x50, + 35158 - 19968: jis0208<<14 | 0x11<<7 | 0x07, + 35159 - 19968: jis0212<<14 | 0x3B<<7 | 0x51, + 35162 - 19968: jis0212<<14 | 0x3B<<7 | 0x52, + 35163 - 19968: jis0212<<14 | 0x3B<<7 | 0x53, + 35164 - 19968: jis0212<<14 | 0x3B<<7 | 0x54, + 35166 - 19968: jis0208<<14 | 0x49<<7 | 0x5D, + 35167 - 19968: jis0208<<14 | 0x15<<7 | 0x3E, + 35168 - 19968: jis0208<<14 | 0x49<<7 | 0x5C, + 35169 - 19968: jis0212<<14 | 0x3B<<7 | 0x55, + 35170 - 19968: jis0212<<14 | 0x3B<<7 | 0x56, + 35171 - 19968: jis0212<<14 | 0x3B<<7 | 0x57, + 35172 - 19968: jis0208<<14 | 0x4A<<7 | 0x01, + 35174 - 19968: jis0208<<14 | 0x4A<<7 | 0x00, + 35178 - 19968: jis0208<<14 | 0x4A<<7 | 0x03, + 35179 - 19968: jis0212<<14 | 0x3B<<7 | 0x58, + 35181 - 19968: jis0208<<14 | 0x4A<<7 | 0x02, + 35182 - 19968: jis0212<<14 | 0x3B<<7 | 0x59, + 35183 - 19968: jis0208<<14 | 0x4A<<7 | 0x04, + 35184 - 19968: jis0212<<14 | 0x3B<<7 | 0x5A, + 35186 - 19968: jis0208<<14 | 0x1C<<7 | 0x10, + 35187 - 19968: jis0212<<14 | 0x3B<<7 | 0x5B, + 35188 - 19968: jis0208<<14 | 0x4A<<7 | 0x05, + 35189 - 19968: jis0212<<14 | 0x3B<<7 | 0x5C, + 35191 - 19968: jis0208<<14 | 0x4A<<7 | 0x06, + 35194 - 19968: jis0212<<14 | 0x3B<<7 | 0x5D, + 35195 - 19968: jis0212<<14 | 0x3C<<7 | 0x00, + 35196 - 19968: jis0212<<14 | 0x3C<<7 | 0x01, + 35197 - 19968: jis0212<<14 | 0x3C<<7 | 0x02, + 35198 - 19968: jis0208<<14 | 0x4A<<7 | 0x07, + 35199 - 19968: jis0208<<14 | 0x1F<<7 | 0x1D, + 35201 - 19968: jis0208<<14 | 0x2C<<7 | 0x36, + 35203 - 19968: jis0208<<14 | 0x4A<<7 | 0x08, + 35206 - 19968: jis0208<<14 | 0x29<<7 | 0x03, + 35207 - 19968: jis0208<<14 | 0x26<<7 | 0x25, + 35208 - 19968: jis0208<<14 | 0x4A<<7 | 0x09, + 35209 - 19968: jis0212<<14 | 0x3C<<7 | 0x03, + 35210 - 19968: jis0208<<14 | 0x4A<<7 | 0x0A, + 35211 - 19968: jis0208<<14 | 0x17<<7 | 0x0A, + 35213 - 19968: jis0212<<14 | 0x3C<<7 | 0x04, + 35215 - 19968: jis0208<<14 | 0x14<<7 | 0x0B, + 35216 - 19968: jis0212<<14 | 0x3C<<7 | 0x05, + 35219 - 19968: jis0208<<14 | 0x4A<<7 | 0x0B, + 35220 - 19968: jis0212<<14 | 0x3C<<7 | 0x06, + 35221 - 19968: jis0212<<14 | 0x3C<<7 | 0x07, + 35222 - 19968: jis0208<<14 | 0x1A<<7 | 0x4A, + 35223 - 19968: jis0208<<14 | 0x26<<7 | 0x20, + 35224 - 19968: jis0208<<14 | 0x4A<<7 | 0x0C, + 35226 - 19968: jis0208<<14 | 0x12<<7 | 0x2F, + 35227 - 19968: jis0212<<14 | 0x3C<<7 | 0x08, + 35228 - 19968: jis0212<<14 | 0x3C<<7 | 0x09, + 35231 - 19968: jis0212<<14 | 0x3C<<7 | 0x0A, + 35232 - 19968: jis0212<<14 | 0x3C<<7 | 0x0B, + 35233 - 19968: jis0208<<14 | 0x4A<<7 | 0x0D, + 35237 - 19968: jis0212<<14 | 0x3C<<7 | 0x0C, + 35238 - 19968: jis0208<<14 | 0x4A<<7 | 0x0F, + 35239 - 19968: jis0208<<14 | 0x2C<<7 | 0x56, + 35241 - 19968: jis0208<<14 | 0x4A<<7 | 0x0E, + 35242 - 19968: jis0208<<14 | 0x1E<<7 | 0x25, + 35244 - 19968: jis0208<<14 | 0x4A<<7 | 0x10, + 35247 - 19968: jis0208<<14 | 0x4A<<7 | 0x11, + 35248 - 19968: jis0212<<14 | 0x3C<<7 | 0x0D, + 35250 - 19968: jis0208<<14 | 0x4A<<7 | 0x12, + 35251 - 19968: jis0208<<14 | 0x13<<7 | 0x30, + 35252 - 19968: jis0212<<14 | 0x3C<<7 | 0x0E, + 35253 - 19968: jis0212<<14 | 0x3C<<7 | 0x0F, + 35254 - 19968: jis0212<<14 | 0x3C<<7 | 0x10, + 35255 - 19968: jis0212<<14 | 0x3C<<7 | 0x11, + 35258 - 19968: jis0208<<14 | 0x4A<<7 | 0x13, + 35260 - 19968: jis0212<<14 | 0x3C<<7 | 0x12, + 35261 - 19968: jis0208<<14 | 0x4A<<7 | 0x14, + 35263 - 19968: jis0208<<14 | 0x4A<<7 | 0x15, + 35264 - 19968: jis0208<<14 | 0x4A<<7 | 0x16, + 35282 - 19968: jis0208<<14 | 0x12<<7 | 0x30, + 35284 - 19968: jis0212<<14 | 0x3C<<7 | 0x13, + 35285 - 19968: jis0212<<14 | 0x3C<<7 | 0x14, + 35286 - 19968: jis0212<<14 | 0x3C<<7 | 0x15, + 35287 - 19968: jis0212<<14 | 0x3C<<7 | 0x16, + 35288 - 19968: jis0212<<14 | 0x3C<<7 | 0x17, + 35290 - 19968: jis0208<<14 | 0x4A<<7 | 0x17, + 35292 - 19968: jis0208<<14 | 0x4A<<7 | 0x18, + 35293 - 19968: jis0208<<14 | 0x4A<<7 | 0x19, + 35299 - 19968: jis0208<<14 | 0x11<<7 | 0x51, + 35301 - 19968: jis0212<<14 | 0x3C<<7 | 0x18, + 35302 - 19968: jis0208<<14 | 0x1E<<7 | 0x07, + 35303 - 19968: jis0208<<14 | 0x4A<<7 | 0x1A, + 35305 - 19968: jis0212<<14 | 0x3C<<7 | 0x19, + 35307 - 19968: jis0212<<14 | 0x3C<<7 | 0x1A, + 35309 - 19968: jis0212<<14 | 0x3C<<7 | 0x1B, + 35313 - 19968: jis0212<<14 | 0x3C<<7 | 0x1C, + 35315 - 19968: jis0212<<14 | 0x3C<<7 | 0x1D, + 35316 - 19968: jis0208<<14 | 0x4A<<7 | 0x1B, + 35318 - 19968: jis0212<<14 | 0x3C<<7 | 0x1E, + 35320 - 19968: jis0208<<14 | 0x4A<<7 | 0x1C, + 35321 - 19968: jis0212<<14 | 0x3C<<7 | 0x1F, + 35325 - 19968: jis0212<<14 | 0x3C<<7 | 0x20, + 35327 - 19968: jis0212<<14 | 0x3C<<7 | 0x21, + 35328 - 19968: jis0208<<14 | 0x17<<7 | 0x1F, + 35330 - 19968: jis0208<<14 | 0x23<<7 | 0x5A, + 35331 - 19968: jis0208<<14 | 0x4A<<7 | 0x1D, + 35332 - 19968: jis0212<<14 | 0x3C<<7 | 0x22, + 35333 - 19968: jis0212<<14 | 0x3C<<7 | 0x23, + 35335 - 19968: jis0212<<14 | 0x3C<<7 | 0x24, + 35336 - 19968: jis0208<<14 | 0x16<<7 | 0x36, + 35338 - 19968: jis0208<<14 | 0x1E<<7 | 0x35, + 35340 - 19968: jis0208<<14 | 0x4A<<7 | 0x20, + 35342 - 19968: jis0208<<14 | 0x25<<7 | 0x03, + 35343 - 19968: jis0212<<14 | 0x3C<<7 | 0x25, + 35344 - 19968: jis0208<<14 | 0x4A<<7 | 0x1F, + 35345 - 19968: jis0212<<14 | 0x3C<<7 | 0x26, + 35346 - 19968: jis0208<<14 | 0x5A<<7 | 0x46, + 35347 - 19968: jis0208<<14 | 0x16<<7 | 0x10, + 35348 - 19968: jis0212<<14 | 0x3C<<7 | 0x28, + 35349 - 19968: jis0212<<14 | 0x3C<<7 | 0x29, + 35350 - 19968: jis0208<<14 | 0x4A<<7 | 0x1E, + 35351 - 19968: jis0208<<14 | 0x21<<7 | 0x56, + 35352 - 19968: jis0208<<14 | 0x14<<7 | 0x0C, + 35355 - 19968: jis0208<<14 | 0x4A<<7 | 0x21, + 35357 - 19968: jis0208<<14 | 0x4A<<7 | 0x22, + 35358 - 19968: jis0212<<14 | 0x3C<<7 | 0x2A, + 35359 - 19968: jis0208<<14 | 0x1D<<7 | 0x38, + 35360 - 19968: jis0212<<14 | 0x3C<<7 | 0x2B, + 35362 - 19968: jis0212<<14 | 0x3C<<7 | 0x2C, + 35363 - 19968: jis0208<<14 | 0x16<<7 | 0x4C, + 35364 - 19968: jis0212<<14 | 0x3C<<7 | 0x2D, + 35365 - 19968: jis0208<<14 | 0x4A<<7 | 0x23, + 35366 - 19968: jis0212<<14 | 0x3C<<7 | 0x2E, + 35370 - 19968: jis0208<<14 | 0x2A<<7 | 0x0B, + 35371 - 19968: jis0212<<14 | 0x3C<<7 | 0x2F, + 35372 - 19968: jis0212<<14 | 0x3C<<7 | 0x30, + 35373 - 19968: jis0208<<14 | 0x1F<<7 | 0x3E, + 35375 - 19968: jis0212<<14 | 0x3C<<7 | 0x31, + 35377 - 19968: jis0208<<14 | 0x14<<7 | 0x55, + 35379 - 19968: jis0208<<14 | 0x2B<<7 | 0x54, + 35380 - 19968: jis0208<<14 | 0x20<<7 | 0x29, + 35381 - 19968: jis0212<<14 | 0x3C<<7 | 0x32, + 35382 - 19968: jis0208<<14 | 0x4A<<7 | 0x24, + 35383 - 19968: jis0208<<14 | 0x5A<<7 | 0x47, + 35386 - 19968: jis0208<<14 | 0x1E<<7 | 0x26, + 35387 - 19968: jis0208<<14 | 0x22<<7 | 0x4F, + 35388 - 19968: jis0208<<14 | 0x1D<<7 | 0x39, + 35389 - 19968: jis0212<<14 | 0x3C<<7 | 0x34, + 35390 - 19968: jis0212<<14 | 0x3C<<7 | 0x35, + 35392 - 19968: jis0212<<14 | 0x3C<<7 | 0x36, + 35393 - 19968: jis0208<<14 | 0x4A<<7 | 0x25, + 35395 - 19968: jis0212<<14 | 0x3C<<7 | 0x37, + 35397 - 19968: jis0212<<14 | 0x3C<<7 | 0x38, + 35398 - 19968: jis0208<<14 | 0x4A<<7 | 0x28, + 35399 - 19968: jis0212<<14 | 0x3C<<7 | 0x39, + 35400 - 19968: jis0208<<14 | 0x4A<<7 | 0x29, + 35401 - 19968: jis0212<<14 | 0x3C<<7 | 0x3A, + 35405 - 19968: jis0212<<14 | 0x3C<<7 | 0x3B, + 35406 - 19968: jis0212<<14 | 0x3C<<7 | 0x3C, + 35408 - 19968: jis0208<<14 | 0x19<<7 | 0x1D, + 35409 - 19968: jis0208<<14 | 0x21<<7 | 0x21, + 35410 - 19968: jis0208<<14 | 0x4A<<7 | 0x27, + 35411 - 19968: jis0212<<14 | 0x3C<<7 | 0x3D, + 35412 - 19968: jis0208<<14 | 0x1D<<7 | 0x3A, + 35413 - 19968: jis0208<<14 | 0x28<<7 | 0x1D, + 35414 - 19968: jis0212<<14 | 0x3C<<7 | 0x3E, + 35415 - 19968: jis0212<<14 | 0x3C<<7 | 0x3F, + 35416 - 19968: jis0212<<14 | 0x3C<<7 | 0x40, + 35419 - 19968: jis0208<<14 | 0x4A<<7 | 0x26, + 35420 - 19968: jis0212<<14 | 0x3C<<7 | 0x41, + 35421 - 19968: jis0212<<14 | 0x3C<<7 | 0x42, + 35422 - 19968: jis0208<<14 | 0x1A<<7 | 0x4B, + 35424 - 19968: jis0208<<14 | 0x10<<7 | 0x32, + 35425 - 19968: jis0212<<14 | 0x3C<<7 | 0x43, + 35426 - 19968: jis0208<<14 | 0x4A<<7 | 0x2D, + 35427 - 19968: jis0208<<14 | 0x16<<7 | 0x37, + 35429 - 19968: jis0212<<14 | 0x3C<<7 | 0x44, + 35430 - 19968: jis0208<<14 | 0x1A<<7 | 0x4D, + 35431 - 19968: jis0212<<14 | 0x3C<<7 | 0x45, + 35433 - 19968: jis0208<<14 | 0x1A<<7 | 0x4C, + 35435 - 19968: jis0208<<14 | 0x2E<<7 | 0x2C, + 35436 - 19968: jis0208<<14 | 0x4A<<7 | 0x2C, + 35437 - 19968: jis0208<<14 | 0x4A<<7 | 0x2B, + 35438 - 19968: jis0208<<14 | 0x20<<7 | 0x06, + 35440 - 19968: jis0208<<14 | 0x14<<7 | 0x2C, + 35441 - 19968: jis0208<<14 | 0x2E<<7 | 0x22, + 35442 - 19968: jis0208<<14 | 0x12<<7 | 0x19, + 35443 - 19968: jis0208<<14 | 0x1D<<7 | 0x3B, + 35445 - 19968: jis0212<<14 | 0x3C<<7 | 0x46, + 35446 - 19968: jis0212<<14 | 0x3C<<7 | 0x47, + 35447 - 19968: jis0212<<14 | 0x3C<<7 | 0x48, + 35449 - 19968: jis0208<<14 | 0x5A<<7 | 0x48, + 35450 - 19968: jis0212<<14 | 0x3C<<7 | 0x4A, + 35451 - 19968: jis0212<<14 | 0x3C<<7 | 0x4B, + 35452 - 19968: jis0208<<14 | 0x4A<<7 | 0x2A, + 35454 - 19968: jis0212<<14 | 0x3C<<7 | 0x4C, + 35455 - 19968: jis0212<<14 | 0x3C<<7 | 0x4D, + 35456 - 19968: jis0212<<14 | 0x3C<<7 | 0x4E, + 35458 - 19968: jis0208<<14 | 0x4A<<7 | 0x2F, + 35459 - 19968: jis0212<<14 | 0x3C<<7 | 0x4F, + 35460 - 19968: jis0208<<14 | 0x4A<<7 | 0x30, + 35461 - 19968: jis0208<<14 | 0x4A<<7 | 0x2E, + 35462 - 19968: jis0212<<14 | 0x3C<<7 | 0x50, + 35463 - 19968: jis0208<<14 | 0x17<<7 | 0x37, + 35465 - 19968: jis0208<<14 | 0x2C<<7 | 0x1F, + 35467 - 19968: jis0212<<14 | 0x3C<<7 | 0x51, + 35468 - 19968: jis0208<<14 | 0x1A<<7 | 0x4E, + 35469 - 19968: jis0208<<14 | 0x26<<7 | 0x06, + 35471 - 19968: jis0212<<14 | 0x3C<<7 | 0x52, + 35472 - 19968: jis0212<<14 | 0x3C<<7 | 0x53, + 35473 - 19968: jis0208<<14 | 0x4A<<7 | 0x33, + 35474 - 19968: jis0212<<14 | 0x3C<<7 | 0x54, + 35475 - 19968: jis0208<<14 | 0x1F<<7 | 0x1F, + 35477 - 19968: jis0208<<14 | 0x22<<7 | 0x21, + 35478 - 19968: jis0212<<14 | 0x3C<<7 | 0x55, + 35479 - 19968: jis0212<<14 | 0x3C<<7 | 0x56, + 35480 - 19968: jis0208<<14 | 0x2C<<7 | 0x15, + 35481 - 19968: jis0212<<14 | 0x3C<<7 | 0x57, + 35482 - 19968: jis0208<<14 | 0x4A<<7 | 0x36, + 35486 - 19968: jis0208<<14 | 0x17<<7 | 0x4B, + 35487 - 19968: jis0212<<14 | 0x3C<<7 | 0x58, + 35488 - 19968: jis0208<<14 | 0x1F<<7 | 0x1E, + 35489 - 19968: jis0208<<14 | 0x4A<<7 | 0x32, + 35491 - 19968: jis0208<<14 | 0x4A<<7 | 0x37, + 35492 - 19968: jis0208<<14 | 0x17<<7 | 0x4C, + 35493 - 19968: jis0208<<14 | 0x4A<<7 | 0x34, + 35494 - 19968: jis0208<<14 | 0x4A<<7 | 0x35, + 35495 - 19968: jis0208<<14 | 0x5A<<7 | 0x49, + 35496 - 19968: jis0208<<14 | 0x4A<<7 | 0x31, + 35497 - 19968: jis0212<<14 | 0x3C<<7 | 0x5A, + 35500 - 19968: jis0208<<14 | 0x1F<<7 | 0x41, + 35501 - 19968: jis0208<<14 | 0x25<<7 | 0x28, + 35502 - 19968: jis0212<<14 | 0x3C<<7 | 0x5B, + 35503 - 19968: jis0212<<14 | 0x3C<<7 | 0x5C, + 35504 - 19968: jis0208<<14 | 0x22<<7 | 0x0E, + 35506 - 19968: jis0208<<14 | 0x11<<7 | 0x3C, + 35507 - 19968: jis0212<<14 | 0x3C<<7 | 0x5D, + 35510 - 19968: jis0212<<14 | 0x3D<<7 | 0x00, + 35511 - 19968: jis0212<<14 | 0x3D<<7 | 0x01, + 35513 - 19968: jis0208<<14 | 0x27<<7 | 0x4F, + 35515 - 19968: jis0212<<14 | 0x3D<<7 | 0x02, + 35516 - 19968: jis0208<<14 | 0x14<<7 | 0x22, + 35518 - 19968: jis0208<<14 | 0x5A<<7 | 0x4A, + 35519 - 19968: jis0208<<14 | 0x23<<7 | 0x13, + 35522 - 19968: jis0208<<14 | 0x4A<<7 | 0x3A, + 35523 - 19968: jis0212<<14 | 0x3D<<7 | 0x04, + 35524 - 19968: jis0208<<14 | 0x4A<<7 | 0x38, + 35526 - 19968: jis0212<<14 | 0x3D<<7 | 0x05, + 35527 - 19968: jis0208<<14 | 0x22<<7 | 0x2B, + 35528 - 19968: jis0212<<14 | 0x3D<<7 | 0x06, + 35529 - 19968: jis0212<<14 | 0x3D<<7 | 0x07, + 35530 - 19968: jis0212<<14 | 0x3D<<7 | 0x08, + 35531 - 19968: jis0208<<14 | 0x1F<<7 | 0x20, + 35532 - 19968: jis0208<<14 | 0x13<<7 | 0x31, + 35533 - 19968: jis0208<<14 | 0x4A<<7 | 0x39, + 35535 - 19968: jis0208<<14 | 0x1E<<7 | 0x3A, + 35537 - 19968: jis0212<<14 | 0x3D<<7 | 0x09, + 35538 - 19968: jis0208<<14 | 0x2D<<7 | 0x29, + 35539 - 19968: jis0212<<14 | 0x3D<<7 | 0x0A, + 35540 - 19968: jis0212<<14 | 0x3D<<7 | 0x0B, + 35541 - 19968: jis0212<<14 | 0x3D<<7 | 0x0C, + 35542 - 19968: jis0208<<14 | 0x2E<<7 | 0x1F, + 35543 - 19968: jis0212<<14 | 0x3D<<7 | 0x0D, + 35546 - 19968: jis0208<<14 | 0x4A<<7 | 0x3B, + 35547 - 19968: jis0208<<14 | 0x4A<<7 | 0x46, + 35548 - 19968: jis0208<<14 | 0x23<<7 | 0x14, + 35549 - 19968: jis0212<<14 | 0x3D<<7 | 0x0E, + 35550 - 19968: jis0208<<14 | 0x4A<<7 | 0x45, + 35551 - 19968: jis0208<<14 | 0x5A<<7 | 0x4B, + 35552 - 19968: jis0208<<14 | 0x4A<<7 | 0x42, + 35553 - 19968: jis0208<<14 | 0x4A<<7 | 0x4A, + 35554 - 19968: jis0208<<14 | 0x4A<<7 | 0x43, + 35556 - 19968: jis0208<<14 | 0x4A<<7 | 0x3F, + 35558 - 19968: jis0208<<14 | 0x23<<7 | 0x5B, + 35559 - 19968: jis0208<<14 | 0x4A<<7 | 0x3E, + 35563 - 19968: jis0208<<14 | 0x4A<<7 | 0x3C, + 35564 - 19968: jis0212<<14 | 0x3D<<7 | 0x10, + 35565 - 19968: jis0208<<14 | 0x2C<<7 | 0x00, + 35566 - 19968: jis0208<<14 | 0x1A<<7 | 0x4F, + 35568 - 19968: jis0212<<14 | 0x3D<<7 | 0x11, + 35569 - 19968: jis0208<<14 | 0x4A<<7 | 0x40, + 35571 - 19968: jis0208<<14 | 0x4A<<7 | 0x3D, + 35572 - 19968: jis0212<<14 | 0x3D<<7 | 0x12, + 35573 - 19968: jis0212<<14 | 0x3D<<7 | 0x13, + 35574 - 19968: jis0208<<14 | 0x5A<<7 | 0x4D, + 35575 - 19968: jis0208<<14 | 0x4A<<7 | 0x44, + 35576 - 19968: jis0208<<14 | 0x1C<<7 | 0x53, + 35578 - 19968: jis0208<<14 | 0x17<<7 | 0x20, + 35580 - 19968: jis0212<<14 | 0x3D<<7 | 0x15, + 35582 - 19968: jis0208<<14 | 0x21<<7 | 0x59, + 35583 - 19968: jis0212<<14 | 0x3D<<7 | 0x16, + 35584 - 19968: jis0208<<14 | 0x2A<<7 | 0x24, + 35585 - 19968: jis0208<<14 | 0x10<<7 | 0x39, + 35586 - 19968: jis0208<<14 | 0x0F<<7 | 0x41, + 35588 - 19968: jis0208<<14 | 0x25<<7 | 0x04, + 35589 - 19968: jis0212<<14 | 0x3D<<7 | 0x17, + 35590 - 19968: jis0212<<14 | 0x3D<<7 | 0x18, + 35591 - 19968: jis0208<<14 | 0x4A<<7 | 0x48, + 35594 - 19968: jis0212<<14 | 0x3D<<7 | 0x1E, + 35595 - 19968: jis0212<<14 | 0x3D<<7 | 0x19, + 35596 - 19968: jis0208<<14 | 0x4A<<7 | 0x47, + 35598 - 19968: jis0208<<14 | 0x25<<7 | 0x45, + 35600 - 19968: jis0208<<14 | 0x4A<<7 | 0x4C, + 35601 - 19968: jis0212<<14 | 0x3D<<7 | 0x1A, + 35604 - 19968: jis0208<<14 | 0x4A<<7 | 0x41, + 35606 - 19968: jis0208<<14 | 0x4A<<7 | 0x4B, + 35607 - 19968: jis0208<<14 | 0x4A<<7 | 0x4D, + 35609 - 19968: jis0208<<14 | 0x17<<7 | 0x0B, + 35610 - 19968: jis0208<<14 | 0x4A<<7 | 0x49, + 35611 - 19968: jis0208<<14 | 0x18<<7 | 0x35, + 35612 - 19968: jis0212<<14 | 0x3D<<7 | 0x1B, + 35613 - 19968: jis0208<<14 | 0x1B<<7 | 0x34, + 35614 - 19968: jis0212<<14 | 0x3D<<7 | 0x1C, + 35615 - 19968: jis0212<<14 | 0x3D<<7 | 0x1D, + 35616 - 19968: jis0208<<14 | 0x4A<<7 | 0x4E, + 35617 - 19968: jis0208<<14 | 0x2C<<7 | 0x37, + 35622 - 19968: jis0208<<14 | 0x4A<<7 | 0x51, + 35624 - 19968: jis0208<<14 | 0x4A<<7 | 0x54, + 35627 - 19968: jis0208<<14 | 0x4A<<7 | 0x52, + 35628 - 19968: jis0208<<14 | 0x28<<7 | 0x14, + 35629 - 19968: jis0212<<14 | 0x3D<<7 | 0x1F, + 35632 - 19968: jis0212<<14 | 0x3D<<7 | 0x20, + 35635 - 19968: jis0208<<14 | 0x4A<<7 | 0x4F, + 35639 - 19968: jis0212<<14 | 0x3D<<7 | 0x21, + 35641 - 19968: jis0208<<14 | 0x15<<7 | 0x3F, + 35644 - 19968: jis0212<<14 | 0x3D<<7 | 0x22, + 35646 - 19968: jis0208<<14 | 0x4A<<7 | 0x53, + 35649 - 19968: jis0208<<14 | 0x4A<<7 | 0x55, + 35650 - 19968: jis0212<<14 | 0x3D<<7 | 0x23, + 35651 - 19968: jis0212<<14 | 0x3D<<7 | 0x24, + 35652 - 19968: jis0212<<14 | 0x3D<<7 | 0x25, + 35653 - 19968: jis0212<<14 | 0x3D<<7 | 0x26, + 35654 - 19968: jis0212<<14 | 0x3D<<7 | 0x27, + 35656 - 19968: jis0212<<14 | 0x3D<<7 | 0x28, + 35657 - 19968: jis0208<<14 | 0x4A<<7 | 0x59, + 35660 - 19968: jis0208<<14 | 0x4A<<7 | 0x56, + 35661 - 19968: jis0212<<14 | 0x3D<<7 | 0x2D, + 35662 - 19968: jis0208<<14 | 0x4A<<7 | 0x58, + 35663 - 19968: jis0208<<14 | 0x4A<<7 | 0x57, + 35666 - 19968: jis0212<<14 | 0x3D<<7 | 0x29, + 35667 - 19968: jis0208<<14 | 0x5A<<7 | 0x4E, + 35668 - 19968: jis0212<<14 | 0x3D<<7 | 0x2B, + 35670 - 19968: jis0208<<14 | 0x4A<<7 | 0x5A, + 35672 - 19968: jis0208<<14 | 0x1B<<7 | 0x10, + 35673 - 19968: jis0212<<14 | 0x3D<<7 | 0x2C, + 35674 - 19968: jis0208<<14 | 0x4A<<7 | 0x5C, + 35675 - 19968: jis0208<<14 | 0x4A<<7 | 0x5B, + 35676 - 19968: jis0208<<14 | 0x28<<7 | 0x47, + 35678 - 19968: jis0212<<14 | 0x3D<<7 | 0x2E, + 35679 - 19968: jis0208<<14 | 0x4B<<7 | 0x00, + 35683 - 19968: jis0212<<14 | 0x3D<<7 | 0x2F, + 35686 - 19968: jis0208<<14 | 0x16<<7 | 0x38, + 35691 - 19968: jis0208<<14 | 0x4A<<7 | 0x5D, + 35692 - 19968: jis0208<<14 | 0x4B<<7 | 0x01, + 35693 - 19968: jis0212<<14 | 0x3D<<7 | 0x30, + 35695 - 19968: jis0208<<14 | 0x4B<<7 | 0x02, + 35696 - 19968: jis0208<<14 | 0x14<<7 | 0x23, + 35697 - 19968: jis0208<<14 | 0x45<<7 | 0x20, + 35698 - 19968: jis0208<<14 | 0x1D<<7 | 0x58, + 35700 - 19968: jis0208<<14 | 0x4B<<7 | 0x03, + 35702 - 19968: jis0212<<14 | 0x3D<<7 | 0x31, + 35703 - 19968: jis0208<<14 | 0x17<<7 | 0x4D, + 35704 - 19968: jis0212<<14 | 0x3D<<7 | 0x32, + 35705 - 19968: jis0212<<14 | 0x3D<<7 | 0x33, + 35708 - 19968: jis0212<<14 | 0x3D<<7 | 0x34, + 35709 - 19968: jis0208<<14 | 0x4B<<7 | 0x04, + 35710 - 19968: jis0212<<14 | 0x3D<<7 | 0x35, + 35711 - 19968: jis0208<<14 | 0x5A<<7 | 0x4F, + 35712 - 19968: jis0208<<14 | 0x4B<<7 | 0x05, + 35713 - 19968: jis0212<<14 | 0x3D<<7 | 0x36, + 35715 - 19968: jis0208<<14 | 0x1A<<7 | 0x1D, + 35716 - 19968: jis0212<<14 | 0x3D<<7 | 0x37, + 35717 - 19968: jis0212<<14 | 0x3D<<7 | 0x38, + 35722 - 19968: jis0208<<14 | 0x39<<7 | 0x2D, + 35723 - 19968: jis0212<<14 | 0x3D<<7 | 0x39, + 35724 - 19968: jis0208<<14 | 0x4B<<7 | 0x06, + 35725 - 19968: jis0212<<14 | 0x3D<<7 | 0x3A, + 35726 - 19968: jis0208<<14 | 0x4B<<7 | 0x07, + 35727 - 19968: jis0212<<14 | 0x3D<<7 | 0x3B, + 35728 - 19968: jis0208<<14 | 0x1C<<7 | 0x11, + 35730 - 19968: jis0208<<14 | 0x4B<<7 | 0x08, + 35731 - 19968: jis0208<<14 | 0x4B<<7 | 0x09, + 35732 - 19968: jis0212<<14 | 0x3D<<7 | 0x3C, + 35733 - 19968: jis0212<<14 | 0x3D<<7 | 0x3D, + 35734 - 19968: jis0208<<14 | 0x4B<<7 | 0x0A, + 35737 - 19968: jis0208<<14 | 0x4B<<7 | 0x0B, + 35738 - 19968: jis0208<<14 | 0x4B<<7 | 0x0C, + 35740 - 19968: jis0212<<14 | 0x3D<<7 | 0x3E, + 35742 - 19968: jis0212<<14 | 0x3D<<7 | 0x3F, + 35743 - 19968: jis0212<<14 | 0x3D<<7 | 0x40, + 35895 - 19968: jis0208<<14 | 0x22<<7 | 0x0A, + 35896 - 19968: jis0212<<14 | 0x3D<<7 | 0x41, + 35897 - 19968: jis0212<<14 | 0x3D<<7 | 0x42, + 35898 - 19968: jis0208<<14 | 0x4B<<7 | 0x0D, + 35901 - 19968: jis0212<<14 | 0x3D<<7 | 0x43, + 35902 - 19968: jis0212<<14 | 0x3D<<7 | 0x44, + 35903 - 19968: jis0208<<14 | 0x4B<<7 | 0x0F, + 35905 - 19968: jis0208<<14 | 0x4B<<7 | 0x0E, + 35909 - 19968: jis0212<<14 | 0x3D<<7 | 0x45, + 35910 - 19968: jis0208<<14 | 0x25<<7 | 0x05, + 35911 - 19968: jis0212<<14 | 0x3D<<7 | 0x46, + 35912 - 19968: jis0208<<14 | 0x4B<<7 | 0x10, + 35913 - 19968: jis0212<<14 | 0x3D<<7 | 0x47, + 35914 - 19968: jis0208<<14 | 0x2A<<7 | 0x0C, + 35915 - 19968: jis0212<<14 | 0x3D<<7 | 0x48, + 35916 - 19968: jis0208<<14 | 0x4B<<7 | 0x11, + 35918 - 19968: jis0208<<14 | 0x4B<<7 | 0x12, + 35919 - 19968: jis0212<<14 | 0x3D<<7 | 0x49, + 35920 - 19968: jis0208<<14 | 0x4B<<7 | 0x13, + 35921 - 19968: jis0212<<14 | 0x3D<<7 | 0x4A, + 35923 - 19968: jis0212<<14 | 0x3D<<7 | 0x4B, + 35924 - 19968: jis0212<<14 | 0x3D<<7 | 0x4C, + 35925 - 19968: jis0208<<14 | 0x4B<<7 | 0x14, + 35927 - 19968: jis0212<<14 | 0x3D<<7 | 0x4D, + 35928 - 19968: jis0212<<14 | 0x3D<<7 | 0x4E, + 35929 - 19968: jis0212<<14 | 0x3D<<7 | 0x51, + 35930 - 19968: jis0208<<14 | 0x25<<7 | 0x39, + 35931 - 19968: jis0212<<14 | 0x3D<<7 | 0x4F, + 35933 - 19968: jis0212<<14 | 0x3D<<7 | 0x50, + 35937 - 19968: jis0208<<14 | 0x1D<<7 | 0x3C, + 35938 - 19968: jis0208<<14 | 0x4B<<7 | 0x15, + 35939 - 19968: jis0212<<14 | 0x3D<<7 | 0x52, + 35940 - 19968: jis0212<<14 | 0x3D<<7 | 0x53, + 35942 - 19968: jis0212<<14 | 0x3D<<7 | 0x54, + 35944 - 19968: jis0212<<14 | 0x3D<<7 | 0x55, + 35945 - 19968: jis0212<<14 | 0x3D<<7 | 0x56, + 35946 - 19968: jis0208<<14 | 0x18<<7 | 0x4A, + 35947 - 19968: jis0208<<14 | 0x2F<<7 | 0x0D, + 35948 - 19968: jis0208<<14 | 0x4B<<7 | 0x16, + 35949 - 19968: jis0212<<14 | 0x3D<<7 | 0x57, + 35955 - 19968: jis0212<<14 | 0x3D<<7 | 0x58, + 35957 - 19968: jis0212<<14 | 0x3D<<7 | 0x59, + 35958 - 19968: jis0212<<14 | 0x3D<<7 | 0x5A, + 35960 - 19968: jis0208<<14 | 0x4B<<7 | 0x17, + 35961 - 19968: jis0208<<14 | 0x28<<7 | 0x1E, + 35962 - 19968: jis0208<<14 | 0x4B<<7 | 0x18, + 35963 - 19968: jis0212<<14 | 0x3D<<7 | 0x5B, + 35964 - 19968: jis0208<<14 | 0x4B<<7 | 0x20, + 35966 - 19968: jis0212<<14 | 0x3D<<7 | 0x5C, + 35970 - 19968: jis0208<<14 | 0x4B<<7 | 0x19, + 35973 - 19968: jis0208<<14 | 0x4B<<7 | 0x1B, + 35974 - 19968: jis0212<<14 | 0x3D<<7 | 0x5D, + 35975 - 19968: jis0212<<14 | 0x3E<<7 | 0x00, + 35977 - 19968: jis0208<<14 | 0x4B<<7 | 0x1A, + 35978 - 19968: jis0208<<14 | 0x4B<<7 | 0x1C, + 35979 - 19968: jis0212<<14 | 0x3E<<7 | 0x01, + 35980 - 19968: jis0208<<14 | 0x2A<<7 | 0x25, + 35981 - 19968: jis0208<<14 | 0x4B<<7 | 0x1D, + 35982 - 19968: jis0208<<14 | 0x4B<<7 | 0x1E, + 35984 - 19968: jis0212<<14 | 0x3E<<7 | 0x02, + 35986 - 19968: jis0212<<14 | 0x3E<<7 | 0x03, + 35987 - 19968: jis0212<<14 | 0x3E<<7 | 0x04, + 35988 - 19968: jis0208<<14 | 0x4B<<7 | 0x1F, + 35992 - 19968: jis0208<<14 | 0x4B<<7 | 0x21, + 35993 - 19968: jis0212<<14 | 0x3E<<7 | 0x05, + 35995 - 19968: jis0212<<14 | 0x3E<<7 | 0x06, + 35996 - 19968: jis0212<<14 | 0x3E<<7 | 0x07, + 35997 - 19968: jis0208<<14 | 0x12<<7 | 0x0C, + 35998 - 19968: jis0208<<14 | 0x23<<7 | 0x46, + 36000 - 19968: jis0208<<14 | 0x28<<7 | 0x48, + 36001 - 19968: jis0208<<14 | 0x19<<7 | 0x41, + 36002 - 19968: jis0208<<14 | 0x18<<7 | 0x36, + 36004 - 19968: jis0212<<14 | 0x3E<<7 | 0x08, + 36007 - 19968: jis0208<<14 | 0x28<<7 | 0x2E, + 36008 - 19968: jis0208<<14 | 0x11<<7 | 0x3E, + 36009 - 19968: jis0208<<14 | 0x27<<7 | 0x2D, + 36010 - 19968: jis0208<<14 | 0x4B<<7 | 0x24, + 36011 - 19968: jis0208<<14 | 0x13<<7 | 0x32, + 36012 - 19968: jis0208<<14 | 0x1F<<7 | 0x34, + 36013 - 19968: jis0208<<14 | 0x4B<<7 | 0x23, + 36014 - 19968: jis0208<<14 | 0x4B<<7 | 0x28, + 36015 - 19968: jis0208<<14 | 0x22<<7 | 0x58, + 36016 - 19968: jis0208<<14 | 0x2B<<7 | 0x42, + 36018 - 19968: jis0208<<14 | 0x4B<<7 | 0x26, + 36019 - 19968: jis0208<<14 | 0x4B<<7 | 0x27, + 36020 - 19968: jis0208<<14 | 0x14<<7 | 0x0D, + 36022 - 19968: jis0208<<14 | 0x4B<<7 | 0x29, + 36023 - 19968: jis0208<<14 | 0x26<<7 | 0x42, + 36024 - 19968: jis0208<<14 | 0x21<<7 | 0x3E, + 36025 - 19968: jis0212<<14 | 0x3E<<7 | 0x09, + 36026 - 19968: jis0212<<14 | 0x3E<<7 | 0x0A, + 36027 - 19968: jis0208<<14 | 0x27<<7 | 0x50, + 36028 - 19968: jis0208<<14 | 0x24<<7 | 0x1C, + 36029 - 19968: jis0208<<14 | 0x4B<<7 | 0x25, + 36031 - 19968: jis0208<<14 | 0x2A<<7 | 0x26, + 36032 - 19968: jis0208<<14 | 0x11<<7 | 0x4B, + 36033 - 19968: jis0208<<14 | 0x4B<<7 | 0x2B, + 36034 - 19968: jis0208<<14 | 0x2E<<7 | 0x07, + 36035 - 19968: jis0208<<14 | 0x23<<7 | 0x21, + 36036 - 19968: jis0208<<14 | 0x2E<<7 | 0x24, + 36037 - 19968: jis0212<<14 | 0x3E<<7 | 0x0B, + 36038 - 19968: jis0212<<14 | 0x3E<<7 | 0x0C, + 36039 - 19968: jis0208<<14 | 0x1A<<7 | 0x50, + 36040 - 19968: jis0208<<14 | 0x4B<<7 | 0x2A, + 36041 - 19968: jis0212<<14 | 0x3E<<7 | 0x0D, + 36042 - 19968: jis0208<<14 | 0x21<<7 | 0x10, + 36043 - 19968: jis0212<<14 | 0x3E<<7 | 0x0E, + 36045 - 19968: jis0208<<14 | 0x4B<<7 | 0x3B, + 36046 - 19968: jis0208<<14 | 0x20<<7 | 0x07, + 36047 - 19968: jis0212<<14 | 0x3E<<7 | 0x0F, + 36049 - 19968: jis0208<<14 | 0x25<<7 | 0x57, + 36051 - 19968: jis0208<<14 | 0x28<<7 | 0x2F, + 36053 - 19968: jis0212<<14 | 0x3E<<7 | 0x11, + 36054 - 19968: jis0212<<14 | 0x3E<<7 | 0x10, + 36057 - 19968: jis0212<<14 | 0x3E<<7 | 0x12, + 36058 - 19968: jis0208<<14 | 0x4B<<7 | 0x2E, + 36059 - 19968: jis0208<<14 | 0x1A<<7 | 0x1E, + 36060 - 19968: jis0208<<14 | 0x1A<<7 | 0x51, + 36061 - 19968: jis0212<<14 | 0x3E<<7 | 0x13, + 36062 - 19968: jis0208<<14 | 0x1D<<7 | 0x3D, + 36064 - 19968: jis0208<<14 | 0x26<<7 | 0x44, + 36065 - 19968: jis0212<<14 | 0x3E<<7 | 0x14, + 36066 - 19968: jis0208<<14 | 0x17<<7 | 0x0C, + 36067 - 19968: jis0208<<14 | 0x4B<<7 | 0x2D, + 36068 - 19968: jis0208<<14 | 0x4B<<7 | 0x2C, + 36070 - 19968: jis0208<<14 | 0x28<<7 | 0x49, + 36072 - 19968: jis0212<<14 | 0x3E<<7 | 0x15, + 36074 - 19968: jis0208<<14 | 0x1B<<7 | 0x20, + 36076 - 19968: jis0212<<14 | 0x3E<<7 | 0x16, + 36077 - 19968: jis0208<<14 | 0x24<<7 | 0x31, + 36079 - 19968: jis0212<<14 | 0x3E<<7 | 0x17, + 36080 - 19968: jis0208<<14 | 0x5A<<7 | 0x50, + 36082 - 19968: jis0212<<14 | 0x3E<<7 | 0x19, + 36084 - 19968: jis0208<<14 | 0x5A<<7 | 0x51, + 36085 - 19968: jis0212<<14 | 0x3E<<7 | 0x1A, + 36087 - 19968: jis0212<<14 | 0x3E<<7 | 0x1B, + 36088 - 19968: jis0212<<14 | 0x3E<<7 | 0x1C, + 36090 - 19968: jis0208<<14 | 0x4B<<7 | 0x30, + 36091 - 19968: jis0208<<14 | 0x4B<<7 | 0x31, + 36092 - 19968: jis0208<<14 | 0x18<<7 | 0x37, + 36093 - 19968: jis0208<<14 | 0x4B<<7 | 0x2F, + 36094 - 19968: jis0212<<14 | 0x3E<<7 | 0x1D, + 36095 - 19968: jis0212<<14 | 0x3E<<7 | 0x1E, + 36097 - 19968: jis0212<<14 | 0x3E<<7 | 0x1F, + 36099 - 19968: jis0212<<14 | 0x3E<<7 | 0x20, + 36100 - 19968: jis0208<<14 | 0x4B<<7 | 0x32, + 36101 - 19968: jis0208<<14 | 0x4B<<7 | 0x33, + 36103 - 19968: jis0208<<14 | 0x4B<<7 | 0x35, + 36104 - 19968: jis0208<<14 | 0x21<<7 | 0x02, + 36105 - 19968: jis0212<<14 | 0x3E<<7 | 0x21, + 36106 - 19968: jis0208<<14 | 0x4B<<7 | 0x34, + 36107 - 19968: jis0208<<14 | 0x13<<7 | 0x45, + 36109 - 19968: jis0208<<14 | 0x4B<<7 | 0x37, + 36111 - 19968: jis0208<<14 | 0x4B<<7 | 0x36, + 36112 - 19968: jis0208<<14 | 0x4B<<7 | 0x38, + 36114 - 19968: jis0208<<14 | 0x5A<<7 | 0x52, + 36115 - 19968: jis0208<<14 | 0x4B<<7 | 0x3A, + 36116 - 19968: jis0208<<14 | 0x4B<<7 | 0x3C, + 36118 - 19968: jis0208<<14 | 0x4B<<7 | 0x3D, + 36119 - 19968: jis0212<<14 | 0x3E<<7 | 0x23, + 36123 - 19968: jis0212<<14 | 0x3E<<7 | 0x24, + 36196 - 19968: jis0208<<14 | 0x1F<<7 | 0x35, + 36197 - 19968: jis0212<<14 | 0x3E<<7 | 0x25, + 36198 - 19968: jis0208<<14 | 0x1B<<7 | 0x2E, + 36199 - 19968: jis0208<<14 | 0x4B<<7 | 0x3E, + 36201 - 19968: jis0212<<14 | 0x3E<<7 | 0x26, + 36203 - 19968: jis0208<<14 | 0x12<<7 | 0x31, + 36204 - 19968: jis0212<<14 | 0x3E<<7 | 0x27, + 36205 - 19968: jis0208<<14 | 0x4B<<7 | 0x3F, + 36206 - 19968: jis0212<<14 | 0x3E<<7 | 0x28, + 36208 - 19968: jis0208<<14 | 0x20<<7 | 0x55, + 36209 - 19968: jis0208<<14 | 0x4B<<7 | 0x40, + 36211 - 19968: jis0208<<14 | 0x4B<<7 | 0x41, + 36212 - 19968: jis0208<<14 | 0x28<<7 | 0x4A, + 36214 - 19968: jis0208<<14 | 0x5A<<7 | 0x53, + 36215 - 19968: jis0208<<14 | 0x14<<7 | 0x0E, + 36223 - 19968: jis0212<<14 | 0x3E<<7 | 0x29, + 36225 - 19968: jis0208<<14 | 0x4B<<7 | 0x42, + 36226 - 19968: jis0212<<14 | 0x3E<<7 | 0x2A, + 36228 - 19968: jis0212<<14 | 0x3E<<7 | 0x2B, + 36229 - 19968: jis0208<<14 | 0x23<<7 | 0x15, + 36232 - 19968: jis0212<<14 | 0x3E<<7 | 0x2C, + 36234 - 19968: jis0208<<14 | 0x10<<7 | 0x3A, + 36237 - 19968: jis0212<<14 | 0x3E<<7 | 0x2D, + 36240 - 19968: jis0212<<14 | 0x3E<<7 | 0x2E, + 36241 - 19968: jis0212<<14 | 0x3E<<7 | 0x2F, + 36245 - 19968: jis0212<<14 | 0x3E<<7 | 0x30, + 36249 - 19968: jis0208<<14 | 0x4B<<7 | 0x43, + 36254 - 19968: jis0212<<14 | 0x3E<<7 | 0x31, + 36255 - 19968: jis0212<<14 | 0x3E<<7 | 0x32, + 36256 - 19968: jis0212<<14 | 0x3E<<7 | 0x33, + 36259 - 19968: jis0208<<14 | 0x1B<<7 | 0x50, + 36262 - 19968: jis0212<<14 | 0x3E<<7 | 0x34, + 36264 - 19968: jis0208<<14 | 0x1E<<7 | 0x55, + 36267 - 19968: jis0212<<14 | 0x3E<<7 | 0x35, + 36268 - 19968: jis0212<<14 | 0x3E<<7 | 0x36, + 36271 - 19968: jis0212<<14 | 0x3E<<7 | 0x37, + 36274 - 19968: jis0212<<14 | 0x3E<<7 | 0x38, + 36275 - 19968: jis0208<<14 | 0x21<<7 | 0x0C, + 36277 - 19968: jis0212<<14 | 0x3E<<7 | 0x39, + 36279 - 19968: jis0212<<14 | 0x3E<<7 | 0x3A, + 36281 - 19968: jis0212<<14 | 0x3E<<7 | 0x3B, + 36282 - 19968: jis0208<<14 | 0x4B<<7 | 0x46, + 36283 - 19968: jis0212<<14 | 0x3E<<7 | 0x3C, + 36284 - 19968: jis0212<<14 | 0x3E<<7 | 0x4E, + 36286 - 19968: jis0208<<14 | 0x4B<<7 | 0x45, + 36288 - 19968: jis0212<<14 | 0x3E<<7 | 0x3D, + 36290 - 19968: jis0208<<14 | 0x4B<<7 | 0x44, + 36293 - 19968: jis0212<<14 | 0x3E<<7 | 0x3E, + 36294 - 19968: jis0212<<14 | 0x3E<<7 | 0x3F, + 36295 - 19968: jis0212<<14 | 0x3E<<7 | 0x40, + 36296 - 19968: jis0212<<14 | 0x3E<<7 | 0x41, + 36298 - 19968: jis0212<<14 | 0x3E<<7 | 0x42, + 36299 - 19968: jis0208<<14 | 0x4B<<7 | 0x4C, + 36300 - 19968: jis0208<<14 | 0x4B<<7 | 0x4A, + 36302 - 19968: jis0212<<14 | 0x3E<<7 | 0x43, + 36303 - 19968: jis0208<<14 | 0x4B<<7 | 0x47, + 36305 - 19968: jis0212<<14 | 0x3E<<7 | 0x44, + 36308 - 19968: jis0212<<14 | 0x3E<<7 | 0x45, + 36309 - 19968: jis0212<<14 | 0x3E<<7 | 0x46, + 36310 - 19968: jis0208<<14 | 0x4B<<7 | 0x49, + 36311 - 19968: jis0212<<14 | 0x3E<<7 | 0x47, + 36313 - 19968: jis0212<<14 | 0x3E<<7 | 0x48, + 36314 - 19968: jis0208<<14 | 0x4B<<7 | 0x48, + 36315 - 19968: jis0208<<14 | 0x4B<<7 | 0x4B, + 36317 - 19968: jis0208<<14 | 0x14<<7 | 0x56, + 36319 - 19968: jis0208<<14 | 0x4B<<7 | 0x4F, + 36321 - 19968: jis0208<<14 | 0x1F<<7 | 0x36, + 36323 - 19968: jis0208<<14 | 0x4B<<7 | 0x50, + 36324 - 19968: jis0212<<14 | 0x3E<<7 | 0x49, + 36325 - 19968: jis0212<<14 | 0x3E<<7 | 0x4A, + 36327 - 19968: jis0212<<14 | 0x3E<<7 | 0x4B, + 36328 - 19968: jis0208<<14 | 0x17<<7 | 0x38, + 36330 - 19968: jis0208<<14 | 0x4B<<7 | 0x4D, + 36331 - 19968: jis0208<<14 | 0x4B<<7 | 0x4E, + 36332 - 19968: jis0212<<14 | 0x3E<<7 | 0x4C, + 36335 - 19968: jis0208<<14 | 0x2E<<7 | 0x08, + 36336 - 19968: jis0212<<14 | 0x3E<<7 | 0x4D, + 36337 - 19968: jis0212<<14 | 0x3E<<7 | 0x4F, + 36338 - 19968: jis0212<<14 | 0x3E<<7 | 0x50, + 36339 - 19968: jis0208<<14 | 0x23<<7 | 0x16, + 36340 - 19968: jis0212<<14 | 0x3E<<7 | 0x51, + 36341 - 19968: jis0208<<14 | 0x20<<7 | 0x08, + 36348 - 19968: jis0208<<14 | 0x4B<<7 | 0x51, + 36349 - 19968: jis0212<<14 | 0x3E<<7 | 0x52, + 36351 - 19968: jis0208<<14 | 0x4B<<7 | 0x54, + 36353 - 19968: jis0212<<14 | 0x3E<<7 | 0x53, + 36356 - 19968: jis0212<<14 | 0x3E<<7 | 0x54, + 36357 - 19968: jis0212<<14 | 0x3E<<7 | 0x55, + 36358 - 19968: jis0212<<14 | 0x3E<<7 | 0x56, + 36360 - 19968: jis0208<<14 | 0x4B<<7 | 0x52, + 36361 - 19968: jis0208<<14 | 0x4B<<7 | 0x53, + 36362 - 19968: jis0208<<14 | 0x2C<<7 | 0x38, + 36363 - 19968: jis0212<<14 | 0x3E<<7 | 0x57, + 36367 - 19968: jis0208<<14 | 0x25<<7 | 0x06, + 36368 - 19968: jis0208<<14 | 0x4B<<7 | 0x57, + 36369 - 19968: jis0212<<14 | 0x3E<<7 | 0x58, + 36372 - 19968: jis0212<<14 | 0x3E<<7 | 0x59, + 36374 - 19968: jis0212<<14 | 0x3E<<7 | 0x5A, + 36381 - 19968: jis0208<<14 | 0x4B<<7 | 0x55, + 36382 - 19968: jis0208<<14 | 0x4B<<7 | 0x56, + 36383 - 19968: jis0208<<14 | 0x4B<<7 | 0x58, + 36384 - 19968: jis0212<<14 | 0x3E<<7 | 0x5B, + 36385 - 19968: jis0212<<14 | 0x3E<<7 | 0x5C, + 36386 - 19968: jis0212<<14 | 0x3E<<7 | 0x5D, + 36387 - 19968: jis0212<<14 | 0x3F<<7 | 0x00, + 36390 - 19968: jis0212<<14 | 0x3F<<7 | 0x01, + 36391 - 19968: jis0212<<14 | 0x3F<<7 | 0x02, + 36394 - 19968: jis0208<<14 | 0x4C<<7 | 0x08, + 36400 - 19968: jis0208<<14 | 0x4B<<7 | 0x5B, + 36401 - 19968: jis0212<<14 | 0x3F<<7 | 0x03, + 36403 - 19968: jis0212<<14 | 0x3F<<7 | 0x04, + 36404 - 19968: jis0208<<14 | 0x4B<<7 | 0x5C, + 36405 - 19968: jis0208<<14 | 0x4B<<7 | 0x5A, + 36406 - 19968: jis0212<<14 | 0x3F<<7 | 0x05, + 36407 - 19968: jis0212<<14 | 0x3F<<7 | 0x06, + 36408 - 19968: jis0212<<14 | 0x3F<<7 | 0x07, + 36409 - 19968: jis0212<<14 | 0x3F<<7 | 0x08, + 36413 - 19968: jis0212<<14 | 0x3F<<7 | 0x09, + 36416 - 19968: jis0212<<14 | 0x3F<<7 | 0x0A, + 36417 - 19968: jis0212<<14 | 0x3F<<7 | 0x0B, + 36418 - 19968: jis0208<<14 | 0x4B<<7 | 0x59, + 36420 - 19968: jis0208<<14 | 0x23<<7 | 0x5C, + 36423 - 19968: jis0208<<14 | 0x4C<<7 | 0x00, + 36424 - 19968: jis0208<<14 | 0x4C<<7 | 0x04, + 36425 - 19968: jis0208<<14 | 0x4C<<7 | 0x01, + 36426 - 19968: jis0208<<14 | 0x4B<<7 | 0x5D, + 36427 - 19968: jis0212<<14 | 0x3F<<7 | 0x0C, + 36428 - 19968: jis0208<<14 | 0x4C<<7 | 0x02, + 36429 - 19968: jis0212<<14 | 0x3F<<7 | 0x0D, + 36430 - 19968: jis0212<<14 | 0x3F<<7 | 0x0E, + 36431 - 19968: jis0212<<14 | 0x3F<<7 | 0x0F, + 36432 - 19968: jis0208<<14 | 0x4C<<7 | 0x03, + 36436 - 19968: jis0212<<14 | 0x3F<<7 | 0x10, + 36437 - 19968: jis0208<<14 | 0x4C<<7 | 0x0A, + 36441 - 19968: jis0208<<14 | 0x4C<<7 | 0x05, + 36443 - 19968: jis0212<<14 | 0x3F<<7 | 0x11, + 36444 - 19968: jis0212<<14 | 0x3F<<7 | 0x12, + 36445 - 19968: jis0212<<14 | 0x3F<<7 | 0x13, + 36446 - 19968: jis0212<<14 | 0x3F<<7 | 0x14, + 36447 - 19968: jis0208<<14 | 0x1F<<7 | 0x37, + 36448 - 19968: jis0208<<14 | 0x4C<<7 | 0x07, + 36449 - 19968: jis0212<<14 | 0x3F<<7 | 0x15, + 36450 - 19968: jis0212<<14 | 0x3F<<7 | 0x16, + 36451 - 19968: jis0208<<14 | 0x4C<<7 | 0x09, + 36452 - 19968: jis0208<<14 | 0x4C<<7 | 0x06, + 36457 - 19968: jis0212<<14 | 0x3F<<7 | 0x17, + 36460 - 19968: jis0212<<14 | 0x3F<<7 | 0x18, + 36461 - 19968: jis0212<<14 | 0x3F<<7 | 0x19, + 36463 - 19968: jis0212<<14 | 0x3F<<7 | 0x1A, + 36464 - 19968: jis0212<<14 | 0x3F<<7 | 0x1B, + 36465 - 19968: jis0212<<14 | 0x3F<<7 | 0x1C, + 36466 - 19968: jis0208<<14 | 0x4C<<7 | 0x0C, + 36468 - 19968: jis0208<<14 | 0x1C<<7 | 0x12, + 36470 - 19968: jis0208<<14 | 0x4C<<7 | 0x0B, + 36473 - 19968: jis0212<<14 | 0x3F<<7 | 0x1D, + 36474 - 19968: jis0212<<14 | 0x3F<<7 | 0x1E, + 36475 - 19968: jis0212<<14 | 0x3F<<7 | 0x1F, + 36476 - 19968: jis0208<<14 | 0x4C<<7 | 0x0D, + 36481 - 19968: jis0208<<14 | 0x4C<<7 | 0x0E, + 36482 - 19968: jis0212<<14 | 0x3F<<7 | 0x20, + 36483 - 19968: jis0212<<14 | 0x3F<<7 | 0x21, + 36484 - 19968: jis0208<<14 | 0x4C<<7 | 0x11, + 36485 - 19968: jis0208<<14 | 0x4C<<7 | 0x10, + 36487 - 19968: jis0208<<14 | 0x4C<<7 | 0x0F, + 36489 - 19968: jis0212<<14 | 0x3F<<7 | 0x22, + 36490 - 19968: jis0208<<14 | 0x4C<<7 | 0x13, + 36491 - 19968: jis0208<<14 | 0x4C<<7 | 0x12, + 36493 - 19968: jis0208<<14 | 0x2B<<7 | 0x55, + 36496 - 19968: jis0212<<14 | 0x3F<<7 | 0x23, + 36497 - 19968: jis0208<<14 | 0x4C<<7 | 0x15, + 36498 - 19968: jis0212<<14 | 0x3F<<7 | 0x24, + 36499 - 19968: jis0208<<14 | 0x4C<<7 | 0x14, + 36500 - 19968: jis0208<<14 | 0x4C<<7 | 0x16, + 36501 - 19968: jis0212<<14 | 0x3F<<7 | 0x25, + 36505 - 19968: jis0208<<14 | 0x4C<<7 | 0x17, + 36506 - 19968: jis0212<<14 | 0x3F<<7 | 0x26, + 36507 - 19968: jis0212<<14 | 0x3F<<7 | 0x27, + 36509 - 19968: jis0212<<14 | 0x3F<<7 | 0x28, + 36510 - 19968: jis0212<<14 | 0x3F<<7 | 0x29, + 36513 - 19968: jis0208<<14 | 0x4C<<7 | 0x19, + 36514 - 19968: jis0212<<14 | 0x3F<<7 | 0x2A, + 36519 - 19968: jis0212<<14 | 0x3F<<7 | 0x2B, + 36521 - 19968: jis0212<<14 | 0x3F<<7 | 0x2C, + 36522 - 19968: jis0208<<14 | 0x4C<<7 | 0x18, + 36523 - 19968: jis0208<<14 | 0x1E<<7 | 0x27, + 36524 - 19968: jis0208<<14 | 0x4C<<7 | 0x1A, + 36525 - 19968: jis0212<<14 | 0x3F<<7 | 0x2D, + 36526 - 19968: jis0212<<14 | 0x3F<<7 | 0x2E, + 36527 - 19968: jis0208<<14 | 0x15<<7 | 0x4C, + 36528 - 19968: jis0208<<14 | 0x4C<<7 | 0x1B, + 36529 - 19968: jis0208<<14 | 0x4C<<7 | 0x1D, + 36531 - 19968: jis0212<<14 | 0x3F<<7 | 0x2F, + 36533 - 19968: jis0212<<14 | 0x3F<<7 | 0x30, + 36538 - 19968: jis0212<<14 | 0x3F<<7 | 0x31, + 36539 - 19968: jis0212<<14 | 0x3F<<7 | 0x32, + 36542 - 19968: jis0208<<14 | 0x4C<<7 | 0x1E, + 36544 - 19968: jis0212<<14 | 0x3F<<7 | 0x33, + 36545 - 19968: jis0212<<14 | 0x3F<<7 | 0x34, + 36547 - 19968: jis0212<<14 | 0x3F<<7 | 0x35, + 36548 - 19968: jis0212<<14 | 0x3F<<7 | 0x36, + 36549 - 19968: jis0208<<14 | 0x4C<<7 | 0x1F, + 36550 - 19968: jis0208<<14 | 0x4C<<7 | 0x1C, + 36551 - 19968: jis0212<<14 | 0x3F<<7 | 0x37, + 36552 - 19968: jis0208<<14 | 0x4C<<7 | 0x20, + 36554 - 19968: jis0208<<14 | 0x1B<<7 | 0x35, + 36555 - 19968: jis0208<<14 | 0x4C<<7 | 0x21, + 36556 - 19968: jis0208<<14 | 0x14<<7 | 0x0F, + 36557 - 19968: jis0208<<14 | 0x16<<7 | 0x12, + 36559 - 19968: jis0208<<14 | 0x5A<<7 | 0x55, + 36561 - 19968: jis0212<<14 | 0x3F<<7 | 0x39, + 36562 - 19968: jis0208<<14 | 0x17<<7 | 0x0D, + 36564 - 19968: jis0212<<14 | 0x3F<<7 | 0x3A, + 36571 - 19968: jis0208<<14 | 0x4C<<7 | 0x22, + 36572 - 19968: jis0212<<14 | 0x3F<<7 | 0x3B, + 36575 - 19968: jis0208<<14 | 0x25<<7 | 0x4F, + 36578 - 19968: jis0208<<14 | 0x24<<7 | 0x1D, + 36579 - 19968: jis0208<<14 | 0x4C<<7 | 0x23, + 36584 - 19968: jis0212<<14 | 0x3F<<7 | 0x3C, + 36587 - 19968: jis0208<<14 | 0x4C<<7 | 0x26, + 36589 - 19968: jis0212<<14 | 0x3F<<7 | 0x43, + 36590 - 19968: jis0212<<14 | 0x3F<<7 | 0x3D, + 36592 - 19968: jis0212<<14 | 0x3F<<7 | 0x3E, + 36593 - 19968: jis0212<<14 | 0x3F<<7 | 0x3F, + 36599 - 19968: jis0212<<14 | 0x3F<<7 | 0x40, + 36600 - 19968: jis0208<<14 | 0x1B<<7 | 0x13, + 36601 - 19968: jis0212<<14 | 0x3F<<7 | 0x41, + 36602 - 19968: jis0212<<14 | 0x3F<<7 | 0x42, + 36603 - 19968: jis0208<<14 | 0x4C<<7 | 0x25, + 36604 - 19968: jis0208<<14 | 0x4C<<7 | 0x24, + 36605 - 19968: jis0208<<14 | 0x16<<7 | 0x39, + 36606 - 19968: jis0208<<14 | 0x4C<<7 | 0x27, + 36608 - 19968: jis0212<<14 | 0x3F<<7 | 0x44, + 36610 - 19968: jis0212<<14 | 0x3F<<7 | 0x45, + 36611 - 19968: jis0208<<14 | 0x12<<7 | 0x32, + 36613 - 19968: jis0208<<14 | 0x4C<<7 | 0x29, + 36615 - 19968: jis0212<<14 | 0x3F<<7 | 0x46, + 36616 - 19968: jis0212<<14 | 0x3F<<7 | 0x47, + 36617 - 19968: jis0208<<14 | 0x19<<7 | 0x3B, + 36618 - 19968: jis0208<<14 | 0x4C<<7 | 0x28, + 36620 - 19968: jis0208<<14 | 0x4C<<7 | 0x31, + 36623 - 19968: jis0212<<14 | 0x3F<<7 | 0x48, + 36624 - 19968: jis0212<<14 | 0x3F<<7 | 0x49, + 36626 - 19968: jis0208<<14 | 0x4C<<7 | 0x2B, + 36627 - 19968: jis0208<<14 | 0x4C<<7 | 0x2D, + 36628 - 19968: jis0208<<14 | 0x29<<7 | 0x44, + 36629 - 19968: jis0208<<14 | 0x4C<<7 | 0x2A, + 36630 - 19968: jis0212<<14 | 0x3F<<7 | 0x4A, + 36631 - 19968: jis0212<<14 | 0x3F<<7 | 0x4B, + 36632 - 19968: jis0212<<14 | 0x3F<<7 | 0x4C, + 36633 - 19968: jis0208<<14 | 0x4C<<7 | 0x2C, + 36635 - 19968: jis0208<<14 | 0x4C<<7 | 0x30, + 36636 - 19968: jis0208<<14 | 0x4C<<7 | 0x2E, + 36637 - 19968: jis0208<<14 | 0x14<<7 | 0x10, + 36638 - 19968: jis0212<<14 | 0x3F<<7 | 0x4D, + 36639 - 19968: jis0208<<14 | 0x4C<<7 | 0x2F, + 36640 - 19968: jis0212<<14 | 0x3F<<7 | 0x4E, + 36641 - 19968: jis0212<<14 | 0x3F<<7 | 0x4F, + 36643 - 19968: jis0212<<14 | 0x3F<<7 | 0x50, + 36645 - 19968: jis0212<<14 | 0x3F<<7 | 0x51, + 36646 - 19968: jis0208<<14 | 0x4C<<7 | 0x32, + 36647 - 19968: jis0212<<14 | 0x3F<<7 | 0x52, + 36648 - 19968: jis0212<<14 | 0x3F<<7 | 0x53, + 36649 - 19968: jis0208<<14 | 0x26<<7 | 0x39, + 36650 - 19968: jis0208<<14 | 0x2D<<7 | 0x37, + 36652 - 19968: jis0212<<14 | 0x3F<<7 | 0x54, + 36653 - 19968: jis0212<<14 | 0x3F<<7 | 0x55, + 36654 - 19968: jis0212<<14 | 0x3F<<7 | 0x56, + 36655 - 19968: jis0208<<14 | 0x1C<<7 | 0x13, + 36659 - 19968: jis0208<<14 | 0x4C<<7 | 0x33, + 36660 - 19968: jis0212<<14 | 0x3F<<7 | 0x57, + 36661 - 19968: jis0212<<14 | 0x3F<<7 | 0x58, + 36662 - 19968: jis0212<<14 | 0x3F<<7 | 0x59, + 36663 - 19968: jis0212<<14 | 0x3F<<7 | 0x5A, + 36664 - 19968: jis0208<<14 | 0x2C<<7 | 0x01, + 36665 - 19968: jis0208<<14 | 0x4C<<7 | 0x35, + 36666 - 19968: jis0212<<14 | 0x3F<<7 | 0x5B, + 36667 - 19968: jis0208<<14 | 0x4C<<7 | 0x34, + 36670 - 19968: jis0208<<14 | 0x4C<<7 | 0x38, + 36671 - 19968: jis0208<<14 | 0x2C<<7 | 0x20, + 36672 - 19968: jis0212<<14 | 0x3F<<7 | 0x5C, + 36673 - 19968: jis0212<<14 | 0x3F<<7 | 0x5D, + 36674 - 19968: jis0208<<14 | 0x4C<<7 | 0x37, + 36675 - 19968: jis0212<<14 | 0x40<<7 | 0x00, + 36676 - 19968: jis0208<<14 | 0x12<<7 | 0x4C, + 36677 - 19968: jis0208<<14 | 0x4C<<7 | 0x36, + 36678 - 19968: jis0208<<14 | 0x4C<<7 | 0x3B, + 36679 - 19968: jis0212<<14 | 0x40<<7 | 0x01, + 36681 - 19968: jis0208<<14 | 0x4C<<7 | 0x3A, + 36684 - 19968: jis0208<<14 | 0x4C<<7 | 0x39, + 36685 - 19968: jis0208<<14 | 0x24<<7 | 0x11, + 36686 - 19968: jis0208<<14 | 0x4C<<7 | 0x3C, + 36687 - 19968: jis0212<<14 | 0x40<<7 | 0x02, + 36689 - 19968: jis0212<<14 | 0x40<<7 | 0x03, + 36690 - 19968: jis0212<<14 | 0x40<<7 | 0x04, + 36691 - 19968: jis0212<<14 | 0x40<<7 | 0x05, + 36692 - 19968: jis0212<<14 | 0x40<<7 | 0x06, + 36693 - 19968: jis0212<<14 | 0x40<<7 | 0x07, + 36695 - 19968: jis0208<<14 | 0x4C<<7 | 0x3D, + 36696 - 19968: jis0212<<14 | 0x40<<7 | 0x08, + 36700 - 19968: jis0208<<14 | 0x4C<<7 | 0x3E, + 36701 - 19968: jis0212<<14 | 0x40<<7 | 0x09, + 36702 - 19968: jis0212<<14 | 0x40<<7 | 0x0A, + 36703 - 19968: jis0208<<14 | 0x18<<7 | 0x4B, + 36705 - 19968: jis0208<<14 | 0x16<<7 | 0x04, + 36706 - 19968: jis0208<<14 | 0x4C<<7 | 0x3F, + 36707 - 19968: jis0208<<14 | 0x4C<<7 | 0x40, + 36708 - 19968: jis0208<<14 | 0x4C<<7 | 0x41, + 36709 - 19968: jis0212<<14 | 0x40<<7 | 0x0B, + 36763 - 19968: jis0208<<14 | 0x1E<<7 | 0x28, + 36764 - 19968: jis0208<<14 | 0x4C<<7 | 0x42, + 36765 - 19968: jis0212<<14 | 0x40<<7 | 0x0C, + 36766 - 19968: jis0208<<14 | 0x1B<<7 | 0x0C, + 36767 - 19968: jis0208<<14 | 0x4C<<7 | 0x43, + 36768 - 19968: jis0212<<14 | 0x40<<7 | 0x0D, + 36769 - 19968: jis0212<<14 | 0x40<<7 | 0x0E, + 36771 - 19968: jis0208<<14 | 0x4C<<7 | 0x44, + 36772 - 19968: jis0212<<14 | 0x40<<7 | 0x0F, + 36773 - 19968: jis0212<<14 | 0x40<<7 | 0x10, + 36774 - 19968: jis0212<<14 | 0x40<<7 | 0x11, + 36775 - 19968: jis0208<<14 | 0x31<<7 | 0x00, + 36776 - 19968: jis0208<<14 | 0x30<<7 | 0x5D, + 36781 - 19968: jis0208<<14 | 0x4C<<7 | 0x45, + 36782 - 19968: jis0208<<14 | 0x44<<7 | 0x4F, + 36783 - 19968: jis0208<<14 | 0x4C<<7 | 0x46, + 36784 - 19968: jis0208<<14 | 0x22<<7 | 0x03, + 36785 - 19968: jis0208<<14 | 0x1E<<7 | 0x0A, + 36786 - 19968: jis0208<<14 | 0x26<<7 | 0x1F, + 36789 - 19968: jis0212<<14 | 0x40<<7 | 0x12, + 36790 - 19968: jis0212<<14 | 0x40<<7 | 0x13, + 36791 - 19968: jis0208<<14 | 0x4C<<7 | 0x47, + 36792 - 19968: jis0212<<14 | 0x40<<7 | 0x14, + 36794 - 19968: jis0208<<14 | 0x29<<7 | 0x34, + 36795 - 19968: jis0208<<14 | 0x23<<7 | 0x33, + 36796 - 19968: jis0208<<14 | 0x18<<7 | 0x5D, + 36798 - 19968: jis0212<<14 | 0x40<<7 | 0x15, + 36799 - 19968: jis0208<<14 | 0x22<<7 | 0x08, + 36800 - 19968: jis0212<<14 | 0x40<<7 | 0x16, + 36801 - 19968: jis0212<<14 | 0x40<<7 | 0x17, + 36802 - 19968: jis0208<<14 | 0x10<<7 | 0x09, + 36804 - 19968: jis0208<<14 | 0x2A<<7 | 0x57, + 36805 - 19968: jis0208<<14 | 0x1E<<7 | 0x36, + 36806 - 19968: jis0212<<14 | 0x40<<7 | 0x18, + 36810 - 19968: jis0212<<14 | 0x40<<7 | 0x19, + 36811 - 19968: jis0212<<14 | 0x40<<7 | 0x1A, + 36813 - 19968: jis0212<<14 | 0x40<<7 | 0x1B, + 36814 - 19968: jis0208<<14 | 0x16<<7 | 0x3D, + 36816 - 19968: jis0212<<14 | 0x40<<7 | 0x1C, + 36817 - 19968: jis0208<<14 | 0x15<<7 | 0x40, + 36818 - 19968: jis0212<<14 | 0x40<<7 | 0x1D, + 36819 - 19968: jis0212<<14 | 0x40<<7 | 0x1E, + 36820 - 19968: jis0208<<14 | 0x29<<7 | 0x35, + 36821 - 19968: jis0212<<14 | 0x40<<7 | 0x1F, + 36826 - 19968: jis0208<<14 | 0x4C<<7 | 0x48, + 36832 - 19968: jis0212<<14 | 0x40<<7 | 0x20, + 36834 - 19968: jis0208<<14 | 0x4C<<7 | 0x4A, + 36835 - 19968: jis0212<<14 | 0x40<<7 | 0x21, + 36836 - 19968: jis0212<<14 | 0x40<<7 | 0x22, + 36837 - 19968: jis0208<<14 | 0x4C<<7 | 0x49, + 36838 - 19968: jis0208<<14 | 0x11<<7 | 0x3F, + 36840 - 19968: jis0212<<14 | 0x40<<7 | 0x23, + 36841 - 19968: jis0208<<14 | 0x25<<7 | 0x55, + 36842 - 19968: jis0208<<14 | 0x4C<<7 | 0x4B, + 36843 - 19968: jis0208<<14 | 0x26<<7 | 0x56, + 36845 - 19968: jis0208<<14 | 0x24<<7 | 0x12, + 36846 - 19968: jis0212<<14 | 0x40<<7 | 0x24, + 36847 - 19968: jis0208<<14 | 0x4C<<7 | 0x4C, + 36848 - 19968: jis0208<<14 | 0x1C<<7 | 0x31, + 36849 - 19968: jis0212<<14 | 0x40<<7 | 0x25, + 36852 - 19968: jis0208<<14 | 0x4C<<7 | 0x4E, + 36853 - 19968: jis0212<<14 | 0x40<<7 | 0x26, + 36854 - 19968: jis0212<<14 | 0x40<<7 | 0x27, + 36855 - 19968: jis0208<<14 | 0x2B<<7 | 0x21, + 36856 - 19968: jis0208<<14 | 0x4C<<7 | 0x5D, + 36857 - 19968: jis0208<<14 | 0x4C<<7 | 0x50, + 36858 - 19968: jis0208<<14 | 0x4C<<7 | 0x51, + 36859 - 19968: jis0212<<14 | 0x40<<7 | 0x28, + 36861 - 19968: jis0208<<14 | 0x23<<7 | 0x28, + 36862 - 19968: jis0212<<14 | 0x40<<7 | 0x29, + 36864 - 19968: jis0208<<14 | 0x21<<7 | 0x3F, + 36865 - 19968: jis0208<<14 | 0x20<<7 | 0x56, + 36866 - 19968: jis0212<<14 | 0x40<<7 | 0x2A, + 36867 - 19968: jis0208<<14 | 0x25<<7 | 0x07, + 36868 - 19968: jis0212<<14 | 0x40<<7 | 0x2B, + 36869 - 19968: jis0208<<14 | 0x4C<<7 | 0x4F, + 36870 - 19968: jis0208<<14 | 0x14<<7 | 0x34, + 36872 - 19968: jis0212<<14 | 0x40<<7 | 0x2C, + 36875 - 19968: jis0208<<14 | 0x4C<<7 | 0x58, + 36876 - 19968: jis0212<<14 | 0x40<<7 | 0x2D, + 36877 - 19968: jis0208<<14 | 0x4C<<7 | 0x55, + 36878 - 19968: jis0208<<14 | 0x4D<<7 | 0x04, + 36879 - 19968: jis0208<<14 | 0x25<<7 | 0x08, + 36880 - 19968: jis0208<<14 | 0x22<<7 | 0x3F, + 36881 - 19968: jis0208<<14 | 0x4C<<7 | 0x52, + 36883 - 19968: jis0208<<14 | 0x23<<7 | 0x5D, + 36884 - 19968: jis0208<<14 | 0x24<<7 | 0x32, + 36885 - 19968: jis0208<<14 | 0x4C<<7 | 0x53, + 36886 - 19968: jis0208<<14 | 0x4C<<7 | 0x57, + 36887 - 19968: jis0208<<14 | 0x1E<<7 | 0x3F, + 36888 - 19968: jis0212<<14 | 0x40<<7 | 0x2E, + 36889 - 19968: jis0208<<14 | 0x26<<7 | 0x46, + 36890 - 19968: jis0208<<14 | 0x23<<7 | 0x2B, + 36891 - 19968: jis0212<<14 | 0x40<<7 | 0x2F, + 36893 - 19968: jis0208<<14 | 0x1F<<7 | 0x21, + 36894 - 19968: jis0208<<14 | 0x4C<<7 | 0x56, + 36895 - 19968: jis0208<<14 | 0x21<<7 | 0x0D, + 36896 - 19968: jis0208<<14 | 0x21<<7 | 0x03, + 36897 - 19968: jis0208<<14 | 0x4C<<7 | 0x54, + 36898 - 19968: jis0208<<14 | 0x0F<<7 | 0x08, + 36899 - 19968: jis0208<<14 | 0x2E<<7 | 0x01, + 36903 - 19968: jis0208<<14 | 0x4C<<7 | 0x59, + 36904 - 19968: jis0212<<14 | 0x40<<7 | 0x30, + 36905 - 19968: jis0212<<14 | 0x40<<7 | 0x31, + 36906 - 19968: jis0212<<14 | 0x40<<7 | 0x33, + 36908 - 19968: jis0212<<14 | 0x40<<7 | 0x34, + 36909 - 19968: jis0212<<14 | 0x40<<7 | 0x35, + 36910 - 19968: jis0208<<14 | 0x21<<7 | 0x40, + 36911 - 19968: jis0212<<14 | 0x40<<7 | 0x32, + 36913 - 19968: jis0208<<14 | 0x1C<<7 | 0x14, + 36914 - 19968: jis0208<<14 | 0x1E<<7 | 0x29, + 36915 - 19968: jis0212<<14 | 0x40<<7 | 0x36, + 36916 - 19968: jis0212<<14 | 0x40<<7 | 0x37, + 36917 - 19968: jis0208<<14 | 0x4C<<7 | 0x5B, + 36918 - 19968: jis0208<<14 | 0x4C<<7 | 0x5A, + 36919 - 19968: jis0212<<14 | 0x40<<7 | 0x38, + 36920 - 19968: jis0208<<14 | 0x0F<<7 | 0x4E, + 36921 - 19968: jis0208<<14 | 0x4C<<7 | 0x5C, + 36924 - 19968: jis0208<<14 | 0x28<<7 | 0x0E, + 36926 - 19968: jis0208<<14 | 0x4D<<7 | 0x06, + 36927 - 19968: jis0212<<14 | 0x40<<7 | 0x39, + 36929 - 19968: jis0208<<14 | 0x25<<7 | 0x3A, + 36930 - 19968: jis0208<<14 | 0x1E<<7 | 0x4A, + 36931 - 19968: jis0212<<14 | 0x40<<7 | 0x3A, + 36932 - 19968: jis0212<<14 | 0x40<<7 | 0x3B, + 36933 - 19968: jis0208<<14 | 0x22<<7 | 0x38, + 36935 - 19968: jis0208<<14 | 0x15<<7 | 0x57, + 36937 - 19968: jis0208<<14 | 0x4D<<7 | 0x05, + 36938 - 19968: jis0208<<14 | 0x2C<<7 | 0x16, + 36939 - 19968: jis0208<<14 | 0x10<<7 | 0x1E, + 36940 - 19968: jis0212<<14 | 0x40<<7 | 0x3C, + 36941 - 19968: jis0208<<14 | 0x29<<7 | 0x36, + 36942 - 19968: jis0208<<14 | 0x11<<7 | 0x40, + 36943 - 19968: jis0208<<14 | 0x4D<<7 | 0x00, + 36944 - 19968: jis0208<<14 | 0x4D<<7 | 0x01, + 36945 - 19968: jis0208<<14 | 0x4D<<7 | 0x02, + 36946 - 19968: jis0208<<14 | 0x4D<<7 | 0x03, + 36947 - 19968: jis0208<<14 | 0x25<<7 | 0x1A, + 36948 - 19968: jis0208<<14 | 0x22<<7 | 0x02, + 36949 - 19968: jis0208<<14 | 0x0F<<7 | 0x42, + 36950 - 19968: jis0208<<14 | 0x4D<<7 | 0x07, + 36952 - 19968: jis0208<<14 | 0x4D<<7 | 0x08, + 36953 - 19968: jis0208<<14 | 0x53<<7 | 0x02, + 36955 - 19968: jis0212<<14 | 0x40<<7 | 0x3D, + 36956 - 19968: jis0208<<14 | 0x21<<7 | 0x1C, + 36957 - 19968: jis0212<<14 | 0x40<<7 | 0x3E, + 36958 - 19968: jis0208<<14 | 0x4D<<7 | 0x09, + 36960 - 19968: jis0208<<14 | 0x10<<7 | 0x52, + 36961 - 19968: jis0208<<14 | 0x20<<7 | 0x2B, + 36962 - 19968: jis0212<<14 | 0x40<<7 | 0x3F, + 36963 - 19968: jis0208<<14 | 0x17<<7 | 0x0E, + 36965 - 19968: jis0208<<14 | 0x2C<<7 | 0x39, + 36966 - 19968: jis0212<<14 | 0x40<<7 | 0x40, + 36967 - 19968: jis0208<<14 | 0x5A<<7 | 0x58, + 36968 - 19968: jis0208<<14 | 0x4D<<7 | 0x0A, + 36969 - 19968: jis0208<<14 | 0x24<<7 | 0x0B, + 36972 - 19968: jis0212<<14 | 0x40<<7 | 0x42, + 36973 - 19968: jis0208<<14 | 0x20<<7 | 0x57, + 36974 - 19968: jis0208<<14 | 0x1B<<7 | 0x36, + 36975 - 19968: jis0208<<14 | 0x4D<<7 | 0x0B, + 36976 - 19968: jis0212<<14 | 0x40<<7 | 0x43, + 36978 - 19968: jis0208<<14 | 0x4D<<7 | 0x0E, + 36980 - 19968: jis0212<<14 | 0x40<<7 | 0x44, + 36981 - 19968: jis0208<<14 | 0x1C<<7 | 0x44, + 36982 - 19968: jis0208<<14 | 0x4D<<7 | 0x0C, + 36983 - 19968: jis0208<<14 | 0x20<<7 | 0x0A, + 36984 - 19968: jis0208<<14 | 0x20<<7 | 0x09, + 36985 - 19968: jis0212<<14 | 0x40<<7 | 0x45, + 36986 - 19968: jis0208<<14 | 0x0F<<7 | 0x43, + 36988 - 19968: jis0208<<14 | 0x2D<<7 | 0x2A, + 36989 - 19968: jis0208<<14 | 0x4D<<7 | 0x10, + 36991 - 19968: jis0208<<14 | 0x27<<7 | 0x51, + 36992 - 19968: jis0208<<14 | 0x4D<<7 | 0x12, + 36993 - 19968: jis0208<<14 | 0x4D<<7 | 0x11, + 36994 - 19968: jis0208<<14 | 0x4D<<7 | 0x0F, + 36995 - 19968: jis0208<<14 | 0x42<<7 | 0x43, + 36996 - 19968: jis0208<<14 | 0x13<<7 | 0x33, + 36997 - 19968: jis0212<<14 | 0x40<<7 | 0x46, + 36999 - 19968: jis0208<<14 | 0x4C<<7 | 0x4D, + 37000 - 19968: jis0212<<14 | 0x40<<7 | 0x47, + 37001 - 19968: jis0208<<14 | 0x4D<<7 | 0x14, + 37002 - 19968: jis0208<<14 | 0x4D<<7 | 0x13, + 37003 - 19968: jis0212<<14 | 0x40<<7 | 0x48, + 37004 - 19968: jis0212<<14 | 0x40<<7 | 0x49, + 37006 - 19968: jis0212<<14 | 0x40<<7 | 0x4A, + 37007 - 19968: jis0208<<14 | 0x4D<<7 | 0x15, + 37008 - 19968: jis0212<<14 | 0x40<<7 | 0x4B, + 37009 - 19968: jis0208<<14 | 0x2C<<7 | 0x17, + 37013 - 19968: jis0212<<14 | 0x40<<7 | 0x4C, + 37015 - 19968: jis0212<<14 | 0x40<<7 | 0x4D, + 37016 - 19968: jis0212<<14 | 0x40<<7 | 0x4E, + 37017 - 19968: jis0212<<14 | 0x40<<7 | 0x4F, + 37019 - 19968: jis0212<<14 | 0x40<<7 | 0x50, + 37024 - 19968: jis0212<<14 | 0x40<<7 | 0x51, + 37025 - 19968: jis0212<<14 | 0x40<<7 | 0x52, + 37026 - 19968: jis0212<<14 | 0x40<<7 | 0x53, + 37027 - 19968: jis0208<<14 | 0x25<<7 | 0x40, + 37029 - 19968: jis0212<<14 | 0x40<<7 | 0x54, + 37030 - 19968: jis0208<<14 | 0x2A<<7 | 0x0D, + 37032 - 19968: jis0208<<14 | 0x4D<<7 | 0x16, + 37034 - 19968: jis0208<<14 | 0x1B<<7 | 0x38, + 37039 - 19968: jis0208<<14 | 0x4D<<7 | 0x17, + 37040 - 19968: jis0212<<14 | 0x40<<7 | 0x55, + 37041 - 19968: jis0208<<14 | 0x4D<<7 | 0x18, + 37042 - 19968: jis0212<<14 | 0x40<<7 | 0x56, + 37043 - 19968: jis0212<<14 | 0x40<<7 | 0x57, + 37044 - 19968: jis0212<<14 | 0x40<<7 | 0x58, + 37045 - 19968: jis0208<<14 | 0x4D<<7 | 0x19, + 37046 - 19968: jis0212<<14 | 0x40<<7 | 0x59, + 37048 - 19968: jis0208<<14 | 0x24<<7 | 0x00, + 37053 - 19968: jis0212<<14 | 0x40<<7 | 0x5A, + 37054 - 19968: jis0212<<14 | 0x40<<7 | 0x5C, + 37057 - 19968: jis0208<<14 | 0x0F<<7 | 0x49, + 37059 - 19968: jis0212<<14 | 0x40<<7 | 0x5D, + 37060 - 19968: jis0212<<14 | 0x41<<7 | 0x00, + 37061 - 19968: jis0212<<14 | 0x41<<7 | 0x01, + 37063 - 19968: jis0212<<14 | 0x41<<7 | 0x02, + 37064 - 19968: jis0212<<14 | 0x41<<7 | 0x03, + 37066 - 19968: jis0208<<14 | 0x18<<7 | 0x38, + 37068 - 19968: jis0212<<14 | 0x40<<7 | 0x5B, + 37070 - 19968: jis0208<<14 | 0x2E<<7 | 0x19, + 37074 - 19968: jis0212<<14 | 0x41<<7 | 0x0C, + 37077 - 19968: jis0212<<14 | 0x41<<7 | 0x04, + 37079 - 19968: jis0212<<14 | 0x41<<7 | 0x05, + 37080 - 19968: jis0212<<14 | 0x41<<7 | 0x06, + 37081 - 19968: jis0212<<14 | 0x41<<7 | 0x07, + 37083 - 19968: jis0208<<14 | 0x4D<<7 | 0x1D, + 37084 - 19968: jis0212<<14 | 0x41<<7 | 0x08, + 37085 - 19968: jis0212<<14 | 0x41<<7 | 0x09, + 37086 - 19968: jis0208<<14 | 0x5A<<7 | 0x59, + 37087 - 19968: jis0212<<14 | 0x41<<7 | 0x0A, + 37089 - 19968: jis0208<<14 | 0x16<<7 | 0x13, + 37090 - 19968: jis0208<<14 | 0x4D<<7 | 0x1A, + 37092 - 19968: jis0208<<14 | 0x4D<<7 | 0x1B, + 37093 - 19968: jis0212<<14 | 0x41<<7 | 0x0B, + 37096 - 19968: jis0208<<14 | 0x28<<7 | 0x53, + 37099 - 19968: jis0212<<14 | 0x41<<7 | 0x0E, + 37101 - 19968: jis0208<<14 | 0x12<<7 | 0x33, + 37103 - 19968: jis0212<<14 | 0x41<<7 | 0x0F, + 37104 - 19968: jis0212<<14 | 0x41<<7 | 0x10, + 37108 - 19968: jis0212<<14 | 0x41<<7 | 0x11, + 37109 - 19968: jis0208<<14 | 0x2C<<7 | 0x18, + 37110 - 19968: jis0212<<14 | 0x41<<7 | 0x0D, + 37111 - 19968: jis0208<<14 | 0x15<<7 | 0x1E, + 37117 - 19968: jis0208<<14 | 0x24<<7 | 0x33, + 37118 - 19968: jis0212<<14 | 0x41<<7 | 0x12, + 37119 - 19968: jis0212<<14 | 0x41<<7 | 0x13, + 37120 - 19968: jis0212<<14 | 0x41<<7 | 0x14, + 37122 - 19968: jis0208<<14 | 0x4D<<7 | 0x1E, + 37124 - 19968: jis0212<<14 | 0x41<<7 | 0x15, + 37125 - 19968: jis0212<<14 | 0x41<<7 | 0x16, + 37126 - 19968: jis0212<<14 | 0x41<<7 | 0x17, + 37128 - 19968: jis0212<<14 | 0x41<<7 | 0x18, + 37133 - 19968: jis0212<<14 | 0x41<<7 | 0x19, + 37136 - 19968: jis0212<<14 | 0x41<<7 | 0x1A, + 37138 - 19968: jis0208<<14 | 0x4D<<7 | 0x1F, + 37140 - 19968: jis0212<<14 | 0x41<<7 | 0x1B, + 37141 - 19968: jis0208<<14 | 0x5A<<7 | 0x5B, + 37142 - 19968: jis0212<<14 | 0x41<<7 | 0x1C, + 37143 - 19968: jis0212<<14 | 0x41<<7 | 0x1D, + 37144 - 19968: jis0212<<14 | 0x41<<7 | 0x1E, + 37145 - 19968: jis0208<<14 | 0x4D<<7 | 0x20, + 37146 - 19968: jis0212<<14 | 0x41<<7 | 0x1F, + 37148 - 19968: jis0212<<14 | 0x41<<7 | 0x20, + 37150 - 19968: jis0212<<14 | 0x41<<7 | 0x21, + 37152 - 19968: jis0212<<14 | 0x41<<7 | 0x22, + 37154 - 19968: jis0212<<14 | 0x41<<7 | 0x24, + 37155 - 19968: jis0212<<14 | 0x41<<7 | 0x25, + 37157 - 19968: jis0212<<14 | 0x41<<7 | 0x23, + 37159 - 19968: jis0208<<14 | 0x5A<<7 | 0x5C, + 37161 - 19968: jis0212<<14 | 0x41<<7 | 0x27, + 37165 - 19968: jis0208<<14 | 0x24<<7 | 0x01, + 37166 - 19968: jis0212<<14 | 0x41<<7 | 0x28, + 37167 - 19968: jis0212<<14 | 0x41<<7 | 0x29, + 37168 - 19968: jis0208<<14 | 0x4D<<7 | 0x22, + 37169 - 19968: jis0212<<14 | 0x41<<7 | 0x2A, + 37170 - 19968: jis0208<<14 | 0x4D<<7 | 0x21, + 37172 - 19968: jis0212<<14 | 0x41<<7 | 0x2B, + 37174 - 19968: jis0212<<14 | 0x41<<7 | 0x2C, + 37175 - 19968: jis0212<<14 | 0x41<<7 | 0x2D, + 37177 - 19968: jis0212<<14 | 0x41<<7 | 0x2E, + 37178 - 19968: jis0212<<14 | 0x41<<7 | 0x2F, + 37180 - 19968: jis0212<<14 | 0x41<<7 | 0x30, + 37181 - 19968: jis0212<<14 | 0x41<<7 | 0x31, + 37187 - 19968: jis0212<<14 | 0x41<<7 | 0x32, + 37191 - 19968: jis0212<<14 | 0x41<<7 | 0x33, + 37192 - 19968: jis0212<<14 | 0x41<<7 | 0x34, + 37193 - 19968: jis0208<<14 | 0x25<<7 | 0x32, + 37194 - 19968: jis0208<<14 | 0x4D<<7 | 0x23, + 37195 - 19968: jis0208<<14 | 0x1C<<7 | 0x15, + 37196 - 19968: jis0208<<14 | 0x1B<<7 | 0x3F, + 37197 - 19968: jis0208<<14 | 0x26<<7 | 0x3A, + 37198 - 19968: jis0208<<14 | 0x22<<7 | 0x50, + 37199 - 19968: jis0212<<14 | 0x41<<7 | 0x35, + 37202 - 19968: jis0208<<14 | 0x1B<<7 | 0x51, + 37203 - 19968: jis0212<<14 | 0x41<<7 | 0x36, + 37204 - 19968: jis0208<<14 | 0x1E<<7 | 0x4B, + 37206 - 19968: jis0208<<14 | 0x4D<<7 | 0x24, + 37207 - 19968: jis0212<<14 | 0x41<<7 | 0x37, + 37208 - 19968: jis0208<<14 | 0x4D<<7 | 0x25, + 37209 - 19968: jis0212<<14 | 0x41<<7 | 0x38, + 37210 - 19968: jis0212<<14 | 0x41<<7 | 0x39, + 37211 - 19968: jis0212<<14 | 0x41<<7 | 0x3A, + 37217 - 19968: jis0212<<14 | 0x41<<7 | 0x3B, + 37218 - 19968: jis0208<<14 | 0x1E<<7 | 0x3C, + 37219 - 19968: jis0208<<14 | 0x4D<<7 | 0x26, + 37220 - 19968: jis0212<<14 | 0x41<<7 | 0x3C, + 37221 - 19968: jis0208<<14 | 0x4D<<7 | 0x27, + 37223 - 19968: jis0212<<14 | 0x41<<7 | 0x3D, + 37225 - 19968: jis0208<<14 | 0x4D<<7 | 0x28, + 37226 - 19968: jis0208<<14 | 0x2C<<7 | 0x4E, + 37228 - 19968: jis0208<<14 | 0x1C<<7 | 0x16, + 37229 - 19968: jis0212<<14 | 0x41<<7 | 0x3E, + 37234 - 19968: jis0208<<14 | 0x4D<<7 | 0x2A, + 37235 - 19968: jis0208<<14 | 0x4D<<7 | 0x29, + 37236 - 19968: jis0212<<14 | 0x41<<7 | 0x3F, + 37237 - 19968: jis0208<<14 | 0x18<<7 | 0x39, + 37239 - 19968: jis0208<<14 | 0x18<<7 | 0x52, + 37240 - 19968: jis0208<<14 | 0x1A<<7 | 0x1F, + 37241 - 19968: jis0212<<14 | 0x41<<7 | 0x40, + 37242 - 19968: jis0212<<14 | 0x41<<7 | 0x41, + 37243 - 19968: jis0212<<14 | 0x41<<7 | 0x42, + 37249 - 19968: jis0212<<14 | 0x41<<7 | 0x43, + 37250 - 19968: jis0208<<14 | 0x4D<<7 | 0x2D, + 37251 - 19968: jis0212<<14 | 0x41<<7 | 0x44, + 37253 - 19968: jis0212<<14 | 0x41<<7 | 0x45, + 37254 - 19968: jis0212<<14 | 0x41<<7 | 0x46, + 37255 - 19968: jis0208<<14 | 0x1C<<7 | 0x45, + 37257 - 19968: jis0208<<14 | 0x4D<<7 | 0x2C, + 37258 - 19968: jis0212<<14 | 0x41<<7 | 0x47, + 37259 - 19968: jis0208<<14 | 0x4D<<7 | 0x2B, + 37261 - 19968: jis0208<<14 | 0x21<<7 | 0x48, + 37262 - 19968: jis0212<<14 | 0x41<<7 | 0x48, + 37264 - 19968: jis0208<<14 | 0x17<<7 | 0x4E, + 37265 - 19968: jis0212<<14 | 0x41<<7 | 0x49, + 37266 - 19968: jis0208<<14 | 0x1F<<7 | 0x22, + 37267 - 19968: jis0212<<14 | 0x41<<7 | 0x4A, + 37268 - 19968: jis0212<<14 | 0x41<<7 | 0x4B, + 37269 - 19968: jis0212<<14 | 0x41<<7 | 0x4C, + 37271 - 19968: jis0208<<14 | 0x27<<7 | 0x0F, + 37272 - 19968: jis0212<<14 | 0x41<<7 | 0x4D, + 37276 - 19968: jis0208<<14 | 0x1C<<7 | 0x18, + 37278 - 19968: jis0212<<14 | 0x41<<7 | 0x4E, + 37281 - 19968: jis0212<<14 | 0x41<<7 | 0x4F, + 37282 - 19968: jis0208<<14 | 0x4D<<7 | 0x2E, + 37284 - 19968: jis0208<<14 | 0x1D<<7 | 0x3E, + 37286 - 19968: jis0212<<14 | 0x41<<7 | 0x50, + 37288 - 19968: jis0212<<14 | 0x41<<7 | 0x51, + 37290 - 19968: jis0208<<14 | 0x4D<<7 | 0x31, + 37291 - 19968: jis0208<<14 | 0x4D<<7 | 0x2F, + 37292 - 19968: jis0212<<14 | 0x41<<7 | 0x52, + 37293 - 19968: jis0212<<14 | 0x41<<7 | 0x53, + 37294 - 19968: jis0212<<14 | 0x41<<7 | 0x54, + 37295 - 19968: jis0208<<14 | 0x4D<<7 | 0x30, + 37296 - 19968: jis0212<<14 | 0x41<<7 | 0x55, + 37297 - 19968: jis0212<<14 | 0x41<<7 | 0x56, + 37298 - 19968: jis0212<<14 | 0x41<<7 | 0x57, + 37299 - 19968: jis0212<<14 | 0x41<<7 | 0x58, + 37300 - 19968: jis0208<<14 | 0x4D<<7 | 0x33, + 37301 - 19968: jis0208<<14 | 0x4D<<7 | 0x32, + 37302 - 19968: jis0212<<14 | 0x41<<7 | 0x59, + 37304 - 19968: jis0208<<14 | 0x1D<<7 | 0x59, + 37306 - 19968: jis0208<<14 | 0x4D<<7 | 0x34, + 37307 - 19968: jis0212<<14 | 0x41<<7 | 0x5A, + 37308 - 19968: jis0212<<14 | 0x41<<7 | 0x5B, + 37309 - 19968: jis0212<<14 | 0x41<<7 | 0x5C, + 37311 - 19968: jis0212<<14 | 0x41<<7 | 0x5D, + 37312 - 19968: jis0208<<14 | 0x4D<<7 | 0x35, + 37313 - 19968: jis0208<<14 | 0x4D<<7 | 0x36, + 37314 - 19968: jis0212<<14 | 0x42<<7 | 0x00, + 37315 - 19968: jis0212<<14 | 0x42<<7 | 0x01, + 37317 - 19968: jis0212<<14 | 0x42<<7 | 0x02, + 37318 - 19968: jis0208<<14 | 0x27<<7 | 0x2F, + 37319 - 19968: jis0208<<14 | 0x19<<7 | 0x32, + 37320 - 19968: jis0208<<14 | 0x1B<<7 | 0x40, + 37321 - 19968: jis0208<<14 | 0x4D<<7 | 0x37, + 37323 - 19968: jis0208<<14 | 0x4D<<7 | 0x38, + 37324 - 19968: jis0208<<14 | 0x2D<<7 | 0x03, + 37325 - 19968: jis0208<<14 | 0x1C<<7 | 0x24, + 37326 - 19968: jis0208<<14 | 0x2B<<7 | 0x4D, + 37327 - 19968: jis0208<<14 | 0x2D<<7 | 0x2B, + 37328 - 19968: jis0208<<14 | 0x4D<<7 | 0x39, + 37329 - 19968: jis0208<<14 | 0x15<<7 | 0x41, + 37331 - 19968: jis0212<<14 | 0x42<<7 | 0x03, + 37332 - 19968: jis0212<<14 | 0x42<<7 | 0x04, + 37334 - 19968: jis0208<<14 | 0x4D<<7 | 0x3A, + 37335 - 19968: jis0208<<14 | 0x5B<<7 | 0x00, + 37336 - 19968: jis0208<<14 | 0x24<<7 | 0x02, + 37337 - 19968: jis0212<<14 | 0x42<<7 | 0x06, + 37338 - 19968: jis0208<<14 | 0x5A<<7 | 0x5D, + 37339 - 19968: jis0208<<14 | 0x4D<<7 | 0x3D, + 37340 - 19968: jis0208<<14 | 0x12<<7 | 0x57, + 37341 - 19968: jis0208<<14 | 0x1E<<7 | 0x2A, + 37342 - 19968: jis0208<<14 | 0x5B<<7 | 0x01, + 37343 - 19968: jis0208<<14 | 0x4D<<7 | 0x3B, + 37345 - 19968: jis0208<<14 | 0x4D<<7 | 0x3C, + 37347 - 19968: jis0208<<14 | 0x23<<7 | 0x3F, + 37348 - 19968: jis0208<<14 | 0x5B<<7 | 0x04, + 37349 - 19968: jis0208<<14 | 0x5B<<7 | 0x05, + 37350 - 19968: jis0208<<14 | 0x2A<<7 | 0x34, + 37351 - 19968: jis0208<<14 | 0x15<<7 | 0x5B, + 37353 - 19968: jis0212<<14 | 0x42<<7 | 0x0B, + 37354 - 19968: jis0212<<14 | 0x42<<7 | 0x0C, + 37356 - 19968: jis0212<<14 | 0x42<<7 | 0x0D, + 37357 - 19968: jis0208<<14 | 0x5B<<7 | 0x02, + 37358 - 19968: jis0208<<14 | 0x5B<<7 | 0x03, + 37359 - 19968: jis0212<<14 | 0x42<<7 | 0x10, + 37360 - 19968: jis0212<<14 | 0x42<<7 | 0x11, + 37361 - 19968: jis0212<<14 | 0x42<<7 | 0x12, + 37365 - 19968: jis0208<<14 | 0x4D<<7 | 0x3F, + 37366 - 19968: jis0208<<14 | 0x4D<<7 | 0x40, + 37367 - 19968: jis0212<<14 | 0x42<<7 | 0x13, + 37369 - 19968: jis0212<<14 | 0x42<<7 | 0x14, + 37371 - 19968: jis0212<<14 | 0x42<<7 | 0x15, + 37372 - 19968: jis0208<<14 | 0x4D<<7 | 0x3E, + 37373 - 19968: jis0212<<14 | 0x42<<7 | 0x16, + 37375 - 19968: jis0208<<14 | 0x4D<<7 | 0x42, + 37376 - 19968: jis0212<<14 | 0x42<<7 | 0x17, + 37377 - 19968: jis0212<<14 | 0x42<<7 | 0x18, + 37380 - 19968: jis0212<<14 | 0x42<<7 | 0x19, + 37381 - 19968: jis0212<<14 | 0x42<<7 | 0x1A, + 37382 - 19968: jis0208<<14 | 0x5B<<7 | 0x06, + 37383 - 19968: jis0212<<14 | 0x42<<7 | 0x1C, + 37385 - 19968: jis0212<<14 | 0x42<<7 | 0x1D, + 37386 - 19968: jis0208<<14 | 0x5B<<7 | 0x08, + 37388 - 19968: jis0212<<14 | 0x42<<7 | 0x1F, + 37389 - 19968: jis0208<<14 | 0x25<<7 | 0x3E, + 37390 - 19968: jis0208<<14 | 0x12<<7 | 0x22, + 37392 - 19968: jis0208<<14 | 0x5B<<7 | 0x07, + 37393 - 19968: jis0208<<14 | 0x4D<<7 | 0x46, + 37394 - 19968: jis0212<<14 | 0x42<<7 | 0x21, + 37395 - 19968: jis0212<<14 | 0x42<<7 | 0x22, + 37396 - 19968: jis0208<<14 | 0x4D<<7 | 0x43, + 37397 - 19968: jis0208<<14 | 0x4D<<7 | 0x45, + 37398 - 19968: jis0212<<14 | 0x42<<7 | 0x23, + 37400 - 19968: jis0212<<14 | 0x42<<7 | 0x24, + 37404 - 19968: jis0212<<14 | 0x42<<7 | 0x25, + 37405 - 19968: jis0212<<14 | 0x42<<7 | 0x26, + 37406 - 19968: jis0208<<14 | 0x4D<<7 | 0x41, + 37411 - 19968: jis0212<<14 | 0x42<<7 | 0x27, + 37412 - 19968: jis0212<<14 | 0x42<<7 | 0x28, + 37413 - 19968: jis0212<<14 | 0x42<<7 | 0x29, + 37414 - 19968: jis0212<<14 | 0x42<<7 | 0x2A, + 37416 - 19968: jis0212<<14 | 0x42<<7 | 0x2B, + 37417 - 19968: jis0208<<14 | 0x4E<<7 | 0x2E, + 37420 - 19968: jis0208<<14 | 0x4D<<7 | 0x44, + 37422 - 19968: jis0212<<14 | 0x42<<7 | 0x2C, + 37423 - 19968: jis0212<<14 | 0x42<<7 | 0x2D, + 37424 - 19968: jis0212<<14 | 0x42<<7 | 0x2E, + 37427 - 19968: jis0212<<14 | 0x42<<7 | 0x2F, + 37428 - 19968: jis0208<<14 | 0x2D<<7 | 0x4A, + 37429 - 19968: jis0212<<14 | 0x42<<7 | 0x30, + 37430 - 19968: jis0212<<14 | 0x42<<7 | 0x31, + 37431 - 19968: jis0208<<14 | 0x17<<7 | 0x39, + 37432 - 19968: jis0212<<14 | 0x42<<7 | 0x32, + 37433 - 19968: jis0208<<14 | 0x5B<<7 | 0x0F, + 37434 - 19968: jis0208<<14 | 0x5B<<7 | 0x09, + 37436 - 19968: jis0208<<14 | 0x5B<<7 | 0x0B, + 37438 - 19968: jis0212<<14 | 0x42<<7 | 0x36, + 37439 - 19968: jis0208<<14 | 0x4D<<7 | 0x4E, + 37440 - 19968: jis0208<<14 | 0x5B<<7 | 0x0A, + 37442 - 19968: jis0212<<14 | 0x42<<7 | 0x38, + 37443 - 19968: jis0212<<14 | 0x42<<7 | 0x39, + 37444 - 19968: jis0208<<14 | 0x24<<7 | 0x13, + 37445 - 19968: jis0208<<14 | 0x4D<<7 | 0x49, + 37446 - 19968: jis0212<<14 | 0x42<<7 | 0x3A, + 37447 - 19968: jis0212<<14 | 0x42<<7 | 0x3B, + 37448 - 19968: jis0208<<14 | 0x4D<<7 | 0x4C, + 37449 - 19968: jis0208<<14 | 0x4D<<7 | 0x4A, + 37450 - 19968: jis0212<<14 | 0x42<<7 | 0x3C, + 37451 - 19968: jis0208<<14 | 0x4D<<7 | 0x4F, + 37453 - 19968: jis0212<<14 | 0x42<<7 | 0x3D, + 37454 - 19968: jis0208<<14 | 0x5B<<7 | 0x0C, + 37455 - 19968: jis0212<<14 | 0x42<<7 | 0x3F, + 37456 - 19968: jis0208<<14 | 0x4D<<7 | 0x50, + 37457 - 19968: jis0208<<14 | 0x5B<<7 | 0x0E, + 37463 - 19968: jis0208<<14 | 0x4D<<7 | 0x48, + 37464 - 19968: jis0212<<14 | 0x42<<7 | 0x41, + 37465 - 19968: jis0208<<14 | 0x5B<<7 | 0x0D, + 37466 - 19968: jis0208<<14 | 0x4D<<7 | 0x55, + 37467 - 19968: jis0208<<14 | 0x10<<7 | 0x53, + 37468 - 19968: jis0212<<14 | 0x42<<7 | 0x43, + 37469 - 19968: jis0212<<14 | 0x42<<7 | 0x44, + 37470 - 19968: jis0208<<14 | 0x4D<<7 | 0x47, + 37472 - 19968: jis0212<<14 | 0x42<<7 | 0x45, + 37473 - 19968: jis0212<<14 | 0x42<<7 | 0x46, + 37474 - 19968: jis0208<<14 | 0x27<<7 | 0x0C, + 37476 - 19968: jis0208<<14 | 0x4D<<7 | 0x4B, + 37477 - 19968: jis0212<<14 | 0x42<<7 | 0x47, + 37478 - 19968: jis0208<<14 | 0x1D<<7 | 0x3F, + 37479 - 19968: jis0208<<14 | 0x5B<<7 | 0x10, + 37480 - 19968: jis0212<<14 | 0x42<<7 | 0x49, + 37481 - 19968: jis0212<<14 | 0x42<<7 | 0x4A, + 37486 - 19968: jis0212<<14 | 0x42<<7 | 0x4B, + 37487 - 19968: jis0212<<14 | 0x42<<7 | 0x4C, + 37488 - 19968: jis0212<<14 | 0x42<<7 | 0x4D, + 37489 - 19968: jis0208<<14 | 0x18<<7 | 0x3A, + 37493 - 19968: jis0212<<14 | 0x42<<7 | 0x4E, + 37494 - 19968: jis0212<<14 | 0x42<<7 | 0x4F, + 37495 - 19968: jis0208<<14 | 0x5B<<7 | 0x12, + 37496 - 19968: jis0208<<14 | 0x5B<<7 | 0x13, + 37497 - 19968: jis0212<<14 | 0x42<<7 | 0x52, + 37499 - 19968: jis0212<<14 | 0x42<<7 | 0x53, + 37500 - 19968: jis0212<<14 | 0x42<<7 | 0x54, + 37501 - 19968: jis0212<<14 | 0x42<<7 | 0x55, + 37502 - 19968: jis0208<<14 | 0x2A<<7 | 0x27, + 37503 - 19968: jis0212<<14 | 0x42<<7 | 0x56, + 37504 - 19968: jis0208<<14 | 0x15<<7 | 0x43, + 37507 - 19968: jis0208<<14 | 0x1C<<7 | 0x25, + 37509 - 19968: jis0208<<14 | 0x25<<7 | 0x1B, + 37512 - 19968: jis0208<<14 | 0x58<<7 | 0x03, + 37513 - 19968: jis0212<<14 | 0x42<<7 | 0x58, + 37514 - 19968: jis0212<<14 | 0x42<<7 | 0x59, + 37517 - 19968: jis0212<<14 | 0x42<<7 | 0x5A, + 37518 - 19968: jis0212<<14 | 0x42<<7 | 0x5B, + 37521 - 19968: jis0208<<14 | 0x20<<7 | 0x0C, + 37522 - 19968: jis0212<<14 | 0x42<<7 | 0x5C, + 37523 - 19968: jis0208<<14 | 0x4D<<7 | 0x53, + 37525 - 19968: jis0208<<14 | 0x4D<<7 | 0x4D, + 37526 - 19968: jis0208<<14 | 0x4D<<7 | 0x52, + 37527 - 19968: jis0212<<14 | 0x42<<7 | 0x5D, + 37528 - 19968: jis0208<<14 | 0x2B<<7 | 0x22, + 37529 - 19968: jis0212<<14 | 0x43<<7 | 0x00, + 37530 - 19968: jis0208<<14 | 0x23<<7 | 0x17, + 37531 - 19968: jis0208<<14 | 0x4D<<7 | 0x54, + 37532 - 19968: jis0208<<14 | 0x4D<<7 | 0x51, + 37535 - 19968: jis0212<<14 | 0x43<<7 | 0x01, + 37536 - 19968: jis0212<<14 | 0x43<<7 | 0x02, + 37540 - 19968: jis0212<<14 | 0x43<<7 | 0x03, + 37541 - 19968: jis0212<<14 | 0x43<<7 | 0x04, + 37543 - 19968: jis0208<<14 | 0x5B<<7 | 0x11, + 37544 - 19968: jis0212<<14 | 0x43<<7 | 0x06, + 37547 - 19968: jis0212<<14 | 0x43<<7 | 0x07, + 37549 - 19968: jis0208<<14 | 0x20<<7 | 0x0B, + 37551 - 19968: jis0212<<14 | 0x43<<7 | 0x08, + 37554 - 19968: jis0212<<14 | 0x43<<7 | 0x09, + 37558 - 19968: jis0212<<14 | 0x43<<7 | 0x0A, + 37559 - 19968: jis0208<<14 | 0x4D<<7 | 0x58, + 37560 - 19968: jis0212<<14 | 0x43<<7 | 0x0B, + 37561 - 19968: jis0208<<14 | 0x4D<<7 | 0x57, + 37562 - 19968: jis0212<<14 | 0x43<<7 | 0x0C, + 37563 - 19968: jis0212<<14 | 0x43<<7 | 0x0D, + 37564 - 19968: jis0212<<14 | 0x43<<7 | 0x0E, + 37565 - 19968: jis0212<<14 | 0x43<<7 | 0x0F, + 37567 - 19968: jis0212<<14 | 0x43<<7 | 0x10, + 37568 - 19968: jis0212<<14 | 0x43<<7 | 0x11, + 37569 - 19968: jis0212<<14 | 0x43<<7 | 0x12, + 37570 - 19968: jis0212<<14 | 0x43<<7 | 0x13, + 37571 - 19968: jis0212<<14 | 0x43<<7 | 0x14, + 37573 - 19968: jis0212<<14 | 0x43<<7 | 0x15, + 37574 - 19968: jis0212<<14 | 0x43<<7 | 0x16, + 37575 - 19968: jis0212<<14 | 0x43<<7 | 0x17, + 37576 - 19968: jis0212<<14 | 0x43<<7 | 0x18, + 37579 - 19968: jis0212<<14 | 0x43<<7 | 0x19, + 37580 - 19968: jis0212<<14 | 0x43<<7 | 0x1A, + 37581 - 19968: jis0212<<14 | 0x43<<7 | 0x1B, + 37582 - 19968: jis0212<<14 | 0x43<<7 | 0x1C, + 37583 - 19968: jis0208<<14 | 0x4D<<7 | 0x56, + 37584 - 19968: jis0208<<14 | 0x5B<<7 | 0x17, + 37586 - 19968: jis0208<<14 | 0x2A<<7 | 0x0E, + 37587 - 19968: jis0208<<14 | 0x5B<<7 | 0x1B, + 37589 - 19968: jis0208<<14 | 0x5B<<7 | 0x19, + 37591 - 19968: jis0208<<14 | 0x5B<<7 | 0x15, + 37592 - 19968: jis0212<<14 | 0x43<<7 | 0x21, + 37593 - 19968: jis0208<<14 | 0x5B<<7 | 0x16, + 37596 - 19968: jis0212<<14 | 0x43<<7 | 0x23, + 37597 - 19968: jis0212<<14 | 0x43<<7 | 0x24, + 37599 - 19968: jis0212<<14 | 0x43<<7 | 0x25, + 37600 - 19968: jis0208<<14 | 0x5B<<7 | 0x1A, + 37601 - 19968: jis0212<<14 | 0x43<<7 | 0x27, + 37603 - 19968: jis0212<<14 | 0x43<<7 | 0x28, + 37604 - 19968: jis0208<<14 | 0x1C<<7 | 0x5A, + 37605 - 19968: jis0212<<14 | 0x43<<7 | 0x29, + 37607 - 19968: jis0208<<14 | 0x5B<<7 | 0x14, + 37608 - 19968: jis0212<<14 | 0x43<<7 | 0x2B, + 37609 - 19968: jis0208<<14 | 0x4D<<7 | 0x59, + 37610 - 19968: jis0208<<14 | 0x29<<7 | 0x3E, + 37612 - 19968: jis0212<<14 | 0x43<<7 | 0x2C, + 37613 - 19968: jis0208<<14 | 0x10<<7 | 0x33, + 37614 - 19968: jis0212<<14 | 0x43<<7 | 0x2D, + 37616 - 19968: jis0212<<14 | 0x43<<7 | 0x2E, + 37618 - 19968: jis0208<<14 | 0x28<<7 | 0x25, + 37619 - 19968: jis0208<<14 | 0x22<<7 | 0x51, + 37624 - 19968: jis0208<<14 | 0x14<<7 | 0x57, + 37625 - 19968: jis0208<<14 | 0x58<<7 | 0x09, + 37626 - 19968: jis0208<<14 | 0x4D<<7 | 0x5B, + 37627 - 19968: jis0208<<14 | 0x5B<<7 | 0x1E, + 37628 - 19968: jis0208<<14 | 0x18<<7 | 0x3C, + 37631 - 19968: jis0208<<14 | 0x5B<<7 | 0x21, + 37632 - 19968: jis0212<<14 | 0x43<<7 | 0x32, + 37634 - 19968: jis0208<<14 | 0x5B<<7 | 0x23, + 37638 - 19968: jis0208<<14 | 0x1A<<7 | 0x0B, + 37640 - 19968: jis0212<<14 | 0x43<<7 | 0x34, + 37645 - 19968: jis0212<<14 | 0x43<<7 | 0x35, + 37647 - 19968: jis0208<<14 | 0x4D<<7 | 0x5A, + 37648 - 19968: jis0208<<14 | 0x1E<<7 | 0x4C, + 37649 - 19968: jis0212<<14 | 0x43<<7 | 0x36, + 37652 - 19968: jis0212<<14 | 0x43<<7 | 0x37, + 37653 - 19968: jis0212<<14 | 0x43<<7 | 0x38, + 37656 - 19968: jis0208<<14 | 0x1E<<7 | 0x4D, + 37657 - 19968: jis0208<<14 | 0x4E<<7 | 0x00, + 37658 - 19968: jis0208<<14 | 0x4E<<7 | 0x02, + 37660 - 19968: jis0212<<14 | 0x43<<7 | 0x39, + 37661 - 19968: jis0208<<14 | 0x5B<<7 | 0x22, + 37662 - 19968: jis0208<<14 | 0x5B<<7 | 0x20, + 37663 - 19968: jis0212<<14 | 0x43<<7 | 0x3C, + 37664 - 19968: jis0208<<14 | 0x1D<<7 | 0x5A, + 37665 - 19968: jis0208<<14 | 0x5B<<7 | 0x1D, + 37666 - 19968: jis0208<<14 | 0x4E<<7 | 0x01, + 37667 - 19968: jis0208<<14 | 0x4E<<7 | 0x03, + 37668 - 19968: jis0212<<14 | 0x43<<7 | 0x3E, + 37669 - 19968: jis0208<<14 | 0x5B<<7 | 0x1C, + 37670 - 19968: jis0208<<14 | 0x15<<7 | 0x32, + 37671 - 19968: jis0212<<14 | 0x43<<7 | 0x40, + 37672 - 19968: jis0208<<14 | 0x28<<7 | 0x24, + 37673 - 19968: jis0212<<14 | 0x43<<7 | 0x41, + 37674 - 19968: jis0212<<14 | 0x43<<7 | 0x42, + 37675 - 19968: jis0208<<14 | 0x1B<<7 | 0x41, + 37676 - 19968: jis0208<<14 | 0x2E<<7 | 0x02, + 37678 - 19968: jis0208<<14 | 0x4D<<7 | 0x5D, + 37679 - 19968: jis0208<<14 | 0x19<<7 | 0x57, + 37682 - 19968: jis0208<<14 | 0x2E<<7 | 0x1E, + 37683 - 19968: jis0212<<14 | 0x43<<7 | 0x43, + 37684 - 19968: jis0212<<14 | 0x43<<7 | 0x44, + 37685 - 19968: jis0208<<14 | 0x4E<<7 | 0x05, + 37686 - 19968: jis0212<<14 | 0x43<<7 | 0x45, + 37687 - 19968: jis0212<<14 | 0x43<<7 | 0x46, + 37690 - 19968: jis0208<<14 | 0x4E<<7 | 0x04, + 37691 - 19968: jis0208<<14 | 0x4E<<7 | 0x06, + 37700 - 19968: jis0208<<14 | 0x4D<<7 | 0x5C, + 37703 - 19968: jis0212<<14 | 0x43<<7 | 0x47, + 37704 - 19968: jis0208<<14 | 0x58<<7 | 0x02, + 37705 - 19968: jis0212<<14 | 0x43<<7 | 0x49, + 37707 - 19968: jis0208<<14 | 0x25<<7 | 0x48, + 37709 - 19968: jis0208<<14 | 0x24<<7 | 0x34, + 37712 - 19968: jis0212<<14 | 0x43<<7 | 0x4A, + 37713 - 19968: jis0212<<14 | 0x43<<7 | 0x4B, + 37714 - 19968: jis0212<<14 | 0x43<<7 | 0x4C, + 37716 - 19968: jis0208<<14 | 0x23<<7 | 0x36, + 37717 - 19968: jis0212<<14 | 0x43<<7 | 0x4D, + 37718 - 19968: jis0208<<14 | 0x4E<<7 | 0x0B, + 37719 - 19968: jis0208<<14 | 0x5B<<7 | 0x25, + 37720 - 19968: jis0212<<14 | 0x43<<7 | 0x4F, + 37722 - 19968: jis0212<<14 | 0x43<<7 | 0x50, + 37723 - 19968: jis0208<<14 | 0x22<<7 | 0x22, + 37724 - 19968: jis0208<<14 | 0x4E<<7 | 0x07, + 37726 - 19968: jis0212<<14 | 0x43<<7 | 0x51, + 37728 - 19968: jis0208<<14 | 0x4E<<7 | 0x08, + 37732 - 19968: jis0212<<14 | 0x43<<7 | 0x52, + 37733 - 19968: jis0212<<14 | 0x43<<7 | 0x53, + 37735 - 19968: jis0212<<14 | 0x43<<7 | 0x54, + 37737 - 19968: jis0212<<14 | 0x43<<7 | 0x55, + 37738 - 19968: jis0212<<14 | 0x43<<7 | 0x56, + 37740 - 19968: jis0208<<14 | 0x16<<7 | 0x0C, + 37741 - 19968: jis0212<<14 | 0x43<<7 | 0x57, + 37742 - 19968: jis0208<<14 | 0x4E<<7 | 0x0A, + 37743 - 19968: jis0212<<14 | 0x43<<7 | 0x58, + 37744 - 19968: jis0208<<14 | 0x5B<<7 | 0x24, + 37745 - 19968: jis0212<<14 | 0x43<<7 | 0x5A, + 37747 - 19968: jis0212<<14 | 0x43<<7 | 0x5B, + 37748 - 19968: jis0212<<14 | 0x43<<7 | 0x5C, + 37749 - 19968: jis0208<<14 | 0x17<<7 | 0x0F, + 37750 - 19968: jis0212<<14 | 0x43<<7 | 0x5D, + 37754 - 19968: jis0212<<14 | 0x44<<7 | 0x00, + 37756 - 19968: jis0208<<14 | 0x4E<<7 | 0x09, + 37757 - 19968: jis0212<<14 | 0x44<<7 | 0x01, + 37758 - 19968: jis0208<<14 | 0x1D<<7 | 0x40, + 37759 - 19968: jis0212<<14 | 0x44<<7 | 0x02, + 37760 - 19968: jis0212<<14 | 0x44<<7 | 0x03, + 37761 - 19968: jis0212<<14 | 0x44<<7 | 0x04, + 37762 - 19968: jis0212<<14 | 0x44<<7 | 0x05, + 37768 - 19968: jis0212<<14 | 0x44<<7 | 0x06, + 37770 - 19968: jis0212<<14 | 0x44<<7 | 0x07, + 37771 - 19968: jis0212<<14 | 0x44<<7 | 0x08, + 37772 - 19968: jis0208<<14 | 0x12<<7 | 0x58, + 37773 - 19968: jis0212<<14 | 0x44<<7 | 0x09, + 37775 - 19968: jis0212<<14 | 0x44<<7 | 0x0A, + 37778 - 19968: jis0212<<14 | 0x44<<7 | 0x0B, + 37780 - 19968: jis0208<<14 | 0x4E<<7 | 0x0F, + 37781 - 19968: jis0212<<14 | 0x44<<7 | 0x0C, + 37782 - 19968: jis0208<<14 | 0x19<<7 | 0x1E, + 37783 - 19968: jis0208<<14 | 0x20<<7 | 0x58, + 37784 - 19968: jis0212<<14 | 0x44<<7 | 0x0D, + 37786 - 19968: jis0208<<14 | 0x23<<7 | 0x29, + 37787 - 19968: jis0212<<14 | 0x44<<7 | 0x0E, + 37790 - 19968: jis0212<<14 | 0x44<<7 | 0x0F, + 37793 - 19968: jis0212<<14 | 0x44<<7 | 0x10, + 37795 - 19968: jis0212<<14 | 0x44<<7 | 0x11, + 37796 - 19968: jis0208<<14 | 0x5B<<7 | 0x26, + 37798 - 19968: jis0212<<14 | 0x44<<7 | 0x13, + 37799 - 19968: jis0208<<14 | 0x12<<7 | 0x1A, + 37800 - 19968: jis0212<<14 | 0x44<<7 | 0x14, + 37801 - 19968: jis0212<<14 | 0x44<<7 | 0x1A, + 37803 - 19968: jis0212<<14 | 0x44<<7 | 0x15, + 37804 - 19968: jis0208<<14 | 0x4E<<7 | 0x0D, + 37805 - 19968: jis0208<<14 | 0x4E<<7 | 0x0E, + 37806 - 19968: jis0208<<14 | 0x23<<7 | 0x22, + 37808 - 19968: jis0208<<14 | 0x4E<<7 | 0x0C, + 37812 - 19968: jis0212<<14 | 0x44<<7 | 0x16, + 37813 - 19968: jis0212<<14 | 0x44<<7 | 0x17, + 37814 - 19968: jis0212<<14 | 0x44<<7 | 0x18, + 37817 - 19968: jis0208<<14 | 0x4E<<7 | 0x10, + 37818 - 19968: jis0212<<14 | 0x44<<7 | 0x19, + 37825 - 19968: jis0212<<14 | 0x44<<7 | 0x1B, + 37827 - 19968: jis0208<<14 | 0x4E<<7 | 0x16, + 37828 - 19968: jis0212<<14 | 0x44<<7 | 0x1C, + 37829 - 19968: jis0212<<14 | 0x44<<7 | 0x1D, + 37830 - 19968: jis0208<<14 | 0x5B<<7 | 0x27, + 37831 - 19968: jis0212<<14 | 0x44<<7 | 0x1F, + 37832 - 19968: jis0208<<14 | 0x4E<<7 | 0x19, + 37833 - 19968: jis0212<<14 | 0x44<<7 | 0x20, + 37834 - 19968: jis0212<<14 | 0x44<<7 | 0x21, + 37835 - 19968: jis0212<<14 | 0x44<<7 | 0x22, + 37836 - 19968: jis0212<<14 | 0x44<<7 | 0x23, + 37837 - 19968: jis0212<<14 | 0x44<<7 | 0x24, + 37840 - 19968: jis0208<<14 | 0x4E<<7 | 0x18, + 37841 - 19968: jis0208<<14 | 0x24<<7 | 0x0C, + 37843 - 19968: jis0212<<14 | 0x44<<7 | 0x25, + 37846 - 19968: jis0208<<14 | 0x4E<<7 | 0x11, + 37847 - 19968: jis0208<<14 | 0x4E<<7 | 0x12, + 37848 - 19968: jis0208<<14 | 0x4E<<7 | 0x15, + 37849 - 19968: jis0212<<14 | 0x44<<7 | 0x26, + 37852 - 19968: jis0212<<14 | 0x44<<7 | 0x27, + 37853 - 19968: jis0208<<14 | 0x4E<<7 | 0x17, + 37854 - 19968: jis0208<<14 | 0x5B<<7 | 0x28, + 37855 - 19968: jis0212<<14 | 0x44<<7 | 0x29, + 37857 - 19968: jis0208<<14 | 0x15<<7 | 0x1F, + 37858 - 19968: jis0212<<14 | 0x44<<7 | 0x2A, + 37860 - 19968: jis0208<<14 | 0x4E<<7 | 0x1A, + 37861 - 19968: jis0208<<14 | 0x4E<<7 | 0x14, + 37862 - 19968: jis0212<<14 | 0x44<<7 | 0x2B, + 37863 - 19968: jis0212<<14 | 0x44<<7 | 0x2C, + 37864 - 19968: jis0208<<14 | 0x4E<<7 | 0x13, + 37879 - 19968: jis0212<<14 | 0x44<<7 | 0x2E, + 37880 - 19968: jis0208<<14 | 0x5B<<7 | 0x29, + 37881 - 19968: jis0212<<14 | 0x44<<7 | 0x2D, + 37882 - 19968: jis0212<<14 | 0x44<<7 | 0x30, + 37883 - 19968: jis0212<<14 | 0x44<<7 | 0x31, + 37885 - 19968: jis0212<<14 | 0x44<<7 | 0x32, + 37889 - 19968: jis0212<<14 | 0x44<<7 | 0x33, + 37890 - 19968: jis0212<<14 | 0x44<<7 | 0x34, + 37891 - 19968: jis0208<<14 | 0x4E<<7 | 0x1E, + 37892 - 19968: jis0212<<14 | 0x44<<7 | 0x35, + 37895 - 19968: jis0208<<14 | 0x4E<<7 | 0x1F, + 37896 - 19968: jis0212<<14 | 0x44<<7 | 0x36, + 37897 - 19968: jis0212<<14 | 0x44<<7 | 0x37, + 37901 - 19968: jis0212<<14 | 0x44<<7 | 0x38, + 37902 - 19968: jis0212<<14 | 0x44<<7 | 0x39, + 37903 - 19968: jis0212<<14 | 0x44<<7 | 0x3A, + 37904 - 19968: jis0208<<14 | 0x4E<<7 | 0x20, + 37907 - 19968: jis0208<<14 | 0x4E<<7 | 0x1D, + 37908 - 19968: jis0208<<14 | 0x4E<<7 | 0x1C, + 37909 - 19968: jis0212<<14 | 0x44<<7 | 0x3B, + 37910 - 19968: jis0212<<14 | 0x44<<7 | 0x3C, + 37911 - 19968: jis0212<<14 | 0x44<<7 | 0x3D, + 37912 - 19968: jis0208<<14 | 0x1D<<7 | 0x41, + 37913 - 19968: jis0208<<14 | 0x25<<7 | 0x09, + 37914 - 19968: jis0208<<14 | 0x4E<<7 | 0x1B, + 37919 - 19968: jis0212<<14 | 0x44<<7 | 0x3E, + 37921 - 19968: jis0208<<14 | 0x4E<<7 | 0x24, + 37931 - 19968: jis0208<<14 | 0x4E<<7 | 0x22, + 37934 - 19968: jis0212<<14 | 0x44<<7 | 0x3F, + 37935 - 19968: jis0212<<14 | 0x44<<7 | 0x40, + 37937 - 19968: jis0208<<14 | 0x5B<<7 | 0x2A, + 37938 - 19968: jis0212<<14 | 0x44<<7 | 0x42, + 37939 - 19968: jis0212<<14 | 0x44<<7 | 0x43, + 37940 - 19968: jis0212<<14 | 0x44<<7 | 0x44, + 37941 - 19968: jis0208<<14 | 0x4E<<7 | 0x23, + 37942 - 19968: jis0208<<14 | 0x4E<<7 | 0x21, + 37944 - 19968: jis0208<<14 | 0x21<<7 | 0x57, + 37946 - 19968: jis0208<<14 | 0x4E<<7 | 0x25, + 37947 - 19968: jis0212<<14 | 0x44<<7 | 0x45, + 37949 - 19968: jis0212<<14 | 0x44<<7 | 0x47, + 37951 - 19968: jis0212<<14 | 0x44<<7 | 0x46, + 37953 - 19968: jis0208<<14 | 0x4E<<7 | 0x26, + 37955 - 19968: jis0212<<14 | 0x44<<7 | 0x48, + 37956 - 19968: jis0208<<14 | 0x4E<<7 | 0x28, + 37957 - 19968: jis0208<<14 | 0x5B<<7 | 0x2B, + 37960 - 19968: jis0208<<14 | 0x5B<<7 | 0x2C, + 37962 - 19968: jis0212<<14 | 0x44<<7 | 0x4B, + 37964 - 19968: jis0212<<14 | 0x44<<7 | 0x4C, + 37969 - 19968: jis0208<<14 | 0x13<<7 | 0x34, + 37970 - 19968: jis0208<<14 | 0x4E<<7 | 0x27, + 37971 - 19968: jis0208<<14 | 0x2B<<7 | 0x59, + 37973 - 19968: jis0212<<14 | 0x44<<7 | 0x4D, + 37977 - 19968: jis0212<<14 | 0x44<<7 | 0x4E, + 37978 - 19968: jis0208<<14 | 0x4E<<7 | 0x33, + 37979 - 19968: jis0208<<14 | 0x4E<<7 | 0x29, + 37980 - 19968: jis0212<<14 | 0x44<<7 | 0x4F, + 37982 - 19968: jis0208<<14 | 0x4E<<7 | 0x2C, + 37983 - 19968: jis0212<<14 | 0x44<<7 | 0x50, + 37984 - 19968: jis0208<<14 | 0x4E<<7 | 0x2A, + 37985 - 19968: jis0212<<14 | 0x44<<7 | 0x51, + 37986 - 19968: jis0208<<14 | 0x4E<<7 | 0x2B, + 37987 - 19968: jis0212<<14 | 0x44<<7 | 0x52, + 37992 - 19968: jis0212<<14 | 0x44<<7 | 0x53, + 37994 - 19968: jis0208<<14 | 0x4E<<7 | 0x2D, + 37995 - 19968: jis0212<<14 | 0x44<<7 | 0x54, + 37997 - 19968: jis0212<<14 | 0x44<<7 | 0x55, + 37998 - 19968: jis0212<<14 | 0x44<<7 | 0x56, + 37999 - 19968: jis0212<<14 | 0x44<<7 | 0x57, + 38000 - 19968: jis0208<<14 | 0x4E<<7 | 0x2F, + 38001 - 19968: jis0212<<14 | 0x44<<7 | 0x58, + 38002 - 19968: jis0212<<14 | 0x44<<7 | 0x59, + 38005 - 19968: jis0208<<14 | 0x4E<<7 | 0x30, + 38007 - 19968: jis0208<<14 | 0x4E<<7 | 0x31, + 38012 - 19968: jis0208<<14 | 0x4E<<7 | 0x34, + 38013 - 19968: jis0208<<14 | 0x4E<<7 | 0x32, + 38014 - 19968: jis0208<<14 | 0x4E<<7 | 0x35, + 38015 - 19968: jis0208<<14 | 0x4E<<7 | 0x37, + 38017 - 19968: jis0208<<14 | 0x4E<<7 | 0x36, + 38019 - 19968: jis0212<<14 | 0x44<<7 | 0x5B, + 38020 - 19968: jis0212<<14 | 0x44<<7 | 0x5A, + 38263 - 19968: jis0208<<14 | 0x23<<7 | 0x18, + 38264 - 19968: jis0212<<14 | 0x44<<7 | 0x5C, + 38265 - 19968: jis0212<<14 | 0x44<<7 | 0x5D, + 38270 - 19968: jis0212<<14 | 0x45<<7 | 0x00, + 38272 - 19968: jis0208<<14 | 0x2B<<7 | 0x46, + 38274 - 19968: jis0208<<14 | 0x4E<<7 | 0x38, + 38275 - 19968: jis0208<<14 | 0x20<<7 | 0x0D, + 38276 - 19968: jis0212<<14 | 0x45<<7 | 0x01, + 38279 - 19968: jis0208<<14 | 0x4E<<7 | 0x39, + 38280 - 19968: jis0212<<14 | 0x45<<7 | 0x02, + 38281 - 19968: jis0208<<14 | 0x29<<7 | 0x23, + 38282 - 19968: jis0208<<14 | 0x4E<<7 | 0x3A, + 38283 - 19968: jis0208<<14 | 0x12<<7 | 0x0A, + 38284 - 19968: jis0212<<14 | 0x45<<7 | 0x03, + 38285 - 19968: jis0212<<14 | 0x45<<7 | 0x04, + 38286 - 19968: jis0212<<14 | 0x45<<7 | 0x05, + 38287 - 19968: jis0208<<14 | 0x10<<7 | 0x1B, + 38289 - 19968: jis0208<<14 | 0x13<<7 | 0x36, + 38290 - 19968: jis0208<<14 | 0x5B<<7 | 0x2D, + 38291 - 19968: jis0208<<14 | 0x13<<7 | 0x35, + 38292 - 19968: jis0208<<14 | 0x4E<<7 | 0x3B, + 38294 - 19968: jis0208<<14 | 0x4E<<7 | 0x3C, + 38296 - 19968: jis0208<<14 | 0x4E<<7 | 0x3D, + 38297 - 19968: jis0208<<14 | 0x4E<<7 | 0x3E, + 38301 - 19968: jis0212<<14 | 0x45<<7 | 0x06, + 38302 - 19968: jis0212<<14 | 0x45<<7 | 0x07, + 38303 - 19968: jis0212<<14 | 0x45<<7 | 0x08, + 38304 - 19968: jis0208<<14 | 0x4E<<7 | 0x3F, + 38305 - 19968: jis0212<<14 | 0x45<<7 | 0x09, + 38306 - 19968: jis0208<<14 | 0x13<<7 | 0x37, + 38307 - 19968: jis0208<<14 | 0x12<<7 | 0x34, + 38308 - 19968: jis0208<<14 | 0x18<<7 | 0x3D, + 38309 - 19968: jis0208<<14 | 0x27<<7 | 0x15, + 38310 - 19968: jis0212<<14 | 0x45<<7 | 0x0A, + 38311 - 19968: jis0208<<14 | 0x4E<<7 | 0x41, + 38312 - 19968: jis0208<<14 | 0x4E<<7 | 0x40, + 38313 - 19968: jis0212<<14 | 0x45<<7 | 0x0B, + 38315 - 19968: jis0212<<14 | 0x45<<7 | 0x0C, + 38316 - 19968: jis0212<<14 | 0x45<<7 | 0x0D, + 38317 - 19968: jis0208<<14 | 0x4E<<7 | 0x42, + 38322 - 19968: jis0208<<14 | 0x10<<7 | 0x3B, + 38324 - 19968: jis0212<<14 | 0x45<<7 | 0x0E, + 38326 - 19968: jis0212<<14 | 0x45<<7 | 0x0F, + 38329 - 19968: jis0208<<14 | 0x4E<<7 | 0x45, + 38330 - 19968: jis0212<<14 | 0x45<<7 | 0x10, + 38331 - 19968: jis0208<<14 | 0x4E<<7 | 0x44, + 38332 - 19968: jis0208<<14 | 0x4E<<7 | 0x43, + 38333 - 19968: jis0212<<14 | 0x45<<7 | 0x11, + 38334 - 19968: jis0208<<14 | 0x4E<<7 | 0x46, + 38335 - 19968: jis0212<<14 | 0x45<<7 | 0x12, + 38339 - 19968: jis0208<<14 | 0x4E<<7 | 0x49, + 38342 - 19968: jis0212<<14 | 0x45<<7 | 0x13, + 38343 - 19968: jis0208<<14 | 0x0F<<7 | 0x26, + 38344 - 19968: jis0212<<14 | 0x45<<7 | 0x14, + 38345 - 19968: jis0212<<14 | 0x45<<7 | 0x15, + 38346 - 19968: jis0208<<14 | 0x4E<<7 | 0x47, + 38347 - 19968: jis0212<<14 | 0x45<<7 | 0x16, + 38348 - 19968: jis0208<<14 | 0x4E<<7 | 0x4B, + 38349 - 19968: jis0208<<14 | 0x4E<<7 | 0x4A, + 38352 - 19968: jis0212<<14 | 0x45<<7 | 0x17, + 38353 - 19968: jis0212<<14 | 0x45<<7 | 0x18, + 38354 - 19968: jis0212<<14 | 0x45<<7 | 0x19, + 38355 - 19968: jis0212<<14 | 0x45<<7 | 0x1A, + 38356 - 19968: jis0208<<14 | 0x4E<<7 | 0x4D, + 38357 - 19968: jis0208<<14 | 0x4E<<7 | 0x4C, + 38358 - 19968: jis0208<<14 | 0x4E<<7 | 0x4E, + 38360 - 19968: jis0208<<14 | 0x25<<7 | 0x0D, + 38361 - 19968: jis0212<<14 | 0x45<<7 | 0x1B, + 38362 - 19968: jis0212<<14 | 0x45<<7 | 0x1C, + 38364 - 19968: jis0208<<14 | 0x4E<<7 | 0x4F, + 38365 - 19968: jis0212<<14 | 0x45<<7 | 0x1D, + 38366 - 19968: jis0212<<14 | 0x45<<7 | 0x1E, + 38367 - 19968: jis0212<<14 | 0x45<<7 | 0x1F, + 38368 - 19968: jis0212<<14 | 0x45<<7 | 0x20, + 38369 - 19968: jis0208<<14 | 0x4E<<7 | 0x50, + 38370 - 19968: jis0208<<14 | 0x4E<<7 | 0x52, + 38372 - 19968: jis0212<<14 | 0x45<<7 | 0x21, + 38373 - 19968: jis0208<<14 | 0x4E<<7 | 0x51, + 38374 - 19968: jis0212<<14 | 0x45<<7 | 0x22, + 38428 - 19968: jis0208<<14 | 0x28<<7 | 0x4B, + 38429 - 19968: jis0212<<14 | 0x45<<7 | 0x23, + 38430 - 19968: jis0212<<14 | 0x45<<7 | 0x24, + 38433 - 19968: jis0208<<14 | 0x4E<<7 | 0x53, + 38434 - 19968: jis0212<<14 | 0x45<<7 | 0x25, + 38436 - 19968: jis0212<<14 | 0x45<<7 | 0x26, + 38437 - 19968: jis0212<<14 | 0x45<<7 | 0x27, + 38438 - 19968: jis0212<<14 | 0x45<<7 | 0x28, + 38440 - 19968: jis0208<<14 | 0x4E<<7 | 0x54, + 38442 - 19968: jis0208<<14 | 0x19<<7 | 0x44, + 38444 - 19968: jis0212<<14 | 0x45<<7 | 0x29, + 38446 - 19968: jis0208<<14 | 0x4E<<7 | 0x55, + 38447 - 19968: jis0208<<14 | 0x4E<<7 | 0x56, + 38449 - 19968: jis0212<<14 | 0x45<<7 | 0x2A, + 38450 - 19968: jis0208<<14 | 0x2A<<7 | 0x28, + 38451 - 19968: jis0212<<14 | 0x45<<7 | 0x2B, + 38455 - 19968: jis0212<<14 | 0x45<<7 | 0x2C, + 38456 - 19968: jis0212<<14 | 0x45<<7 | 0x2D, + 38457 - 19968: jis0212<<14 | 0x45<<7 | 0x2E, + 38458 - 19968: jis0212<<14 | 0x45<<7 | 0x2F, + 38459 - 19968: jis0208<<14 | 0x20<<7 | 0x2A, + 38460 - 19968: jis0212<<14 | 0x45<<7 | 0x30, + 38461 - 19968: jis0212<<14 | 0x45<<7 | 0x31, + 38463 - 19968: jis0208<<14 | 0x0F<<7 | 0x03, + 38464 - 19968: jis0208<<14 | 0x21<<7 | 0x2A, + 38465 - 19968: jis0212<<14 | 0x45<<7 | 0x32, + 38466 - 19968: jis0208<<14 | 0x4E<<7 | 0x57, + 38468 - 19968: jis0208<<14 | 0x28<<7 | 0x4C, + 38475 - 19968: jis0208<<14 | 0x4E<<7 | 0x5A, + 38476 - 19968: jis0208<<14 | 0x4E<<7 | 0x58, + 38477 - 19968: jis0208<<14 | 0x18<<7 | 0x3E, + 38479 - 19968: jis0208<<14 | 0x4E<<7 | 0x59, + 38480 - 19968: jis0208<<14 | 0x17<<7 | 0x21, + 38482 - 19968: jis0212<<14 | 0x45<<7 | 0x33, + 38484 - 19968: jis0212<<14 | 0x45<<7 | 0x34, + 38486 - 19968: jis0212<<14 | 0x45<<7 | 0x35, + 38487 - 19968: jis0212<<14 | 0x45<<7 | 0x36, + 38488 - 19968: jis0212<<14 | 0x45<<7 | 0x37, + 38491 - 19968: jis0208<<14 | 0x29<<7 | 0x24, + 38492 - 19968: jis0208<<14 | 0x4E<<7 | 0x5C, + 38493 - 19968: jis0208<<14 | 0x4F<<7 | 0x00, + 38494 - 19968: jis0208<<14 | 0x4E<<7 | 0x5D, + 38495 - 19968: jis0208<<14 | 0x4F<<7 | 0x01, + 38497 - 19968: jis0212<<14 | 0x45<<7 | 0x38, + 38498 - 19968: jis0208<<14 | 0x10<<7 | 0x00, + 38499 - 19968: jis0208<<14 | 0x1E<<7 | 0x37, + 38500 - 19968: jis0208<<14 | 0x1C<<7 | 0x5B, + 38501 - 19968: jis0208<<14 | 0x13<<7 | 0x38, + 38502 - 19968: jis0208<<14 | 0x4F<<7 | 0x02, + 38506 - 19968: jis0208<<14 | 0x26<<7 | 0x45, + 38508 - 19968: jis0208<<14 | 0x4F<<7 | 0x04, + 38510 - 19968: jis0212<<14 | 0x45<<7 | 0x39, + 38512 - 19968: jis0208<<14 | 0x10<<7 | 0x01, + 38514 - 19968: jis0208<<14 | 0x4F<<7 | 0x03, + 38515 - 19968: jis0208<<14 | 0x23<<7 | 0x23, + 38516 - 19968: jis0212<<14 | 0x45<<7 | 0x3A, + 38517 - 19968: jis0208<<14 | 0x2D<<7 | 0x2C, + 38518 - 19968: jis0208<<14 | 0x25<<7 | 0x0A, + 38519 - 19968: jis0208<<14 | 0x4E<<7 | 0x5B, + 38520 - 19968: jis0208<<14 | 0x2D<<7 | 0x05, + 38522 - 19968: jis0208<<14 | 0x17<<7 | 0x10, + 38523 - 19968: jis0212<<14 | 0x45<<7 | 0x3B, + 38524 - 19968: jis0212<<14 | 0x45<<7 | 0x3C, + 38525 - 19968: jis0208<<14 | 0x2C<<7 | 0x3A, + 38526 - 19968: jis0212<<14 | 0x45<<7 | 0x3D, + 38527 - 19968: jis0212<<14 | 0x45<<7 | 0x3E, + 38529 - 19968: jis0212<<14 | 0x45<<7 | 0x3F, + 38530 - 19968: jis0212<<14 | 0x45<<7 | 0x40, + 38531 - 19968: jis0212<<14 | 0x45<<7 | 0x41, + 38532 - 19968: jis0212<<14 | 0x45<<7 | 0x42, + 38533 - 19968: jis0208<<14 | 0x15<<7 | 0x58, + 38534 - 19968: jis0208<<14 | 0x2D<<7 | 0x13, + 38536 - 19968: jis0208<<14 | 0x16<<7 | 0x07, + 38537 - 19968: jis0212<<14 | 0x45<<7 | 0x43, + 38538 - 19968: jis0208<<14 | 0x21<<7 | 0x41, + 38539 - 19968: jis0208<<14 | 0x46<<7 | 0x00, + 38541 - 19968: jis0208<<14 | 0x4F<<7 | 0x05, + 38542 - 19968: jis0208<<14 | 0x12<<7 | 0x0B, + 38543 - 19968: jis0208<<14 | 0x1E<<7 | 0x4E, + 38545 - 19968: jis0212<<14 | 0x45<<7 | 0x44, + 38548 - 19968: jis0208<<14 | 0x12<<7 | 0x35, + 38549 - 19968: jis0208<<14 | 0x4F<<7 | 0x07, + 38550 - 19968: jis0212<<14 | 0x45<<7 | 0x45, + 38551 - 19968: jis0208<<14 | 0x4F<<7 | 0x08, + 38552 - 19968: jis0208<<14 | 0x4F<<7 | 0x06, + 38553 - 19968: jis0208<<14 | 0x16<<7 | 0x43, + 38554 - 19968: jis0212<<14 | 0x45<<7 | 0x46, + 38555 - 19968: jis0208<<14 | 0x19<<7 | 0x3C, + 38556 - 19968: jis0208<<14 | 0x1D<<7 | 0x42, + 38557 - 19968: jis0208<<14 | 0x5B<<7 | 0x30, + 38559 - 19968: jis0212<<14 | 0x45<<7 | 0x48, + 38560 - 19968: jis0208<<14 | 0x10<<7 | 0x02, + 38563 - 19968: jis0208<<14 | 0x2D<<7 | 0x38, + 38564 - 19968: jis0212<<14 | 0x45<<7 | 0x49, + 38565 - 19968: jis0212<<14 | 0x45<<7 | 0x4A, + 38566 - 19968: jis0212<<14 | 0x45<<7 | 0x4B, + 38567 - 19968: jis0208<<14 | 0x4F<<7 | 0x0A, + 38568 - 19968: jis0208<<14 | 0x4D<<7 | 0x0D, + 38569 - 19968: jis0212<<14 | 0x45<<7 | 0x4C, + 38570 - 19968: jis0208<<14 | 0x4F<<7 | 0x09, + 38574 - 19968: jis0212<<14 | 0x45<<7 | 0x4D, + 38575 - 19968: jis0208<<14 | 0x5B<<7 | 0x31, + 38576 - 19968: jis0208<<14 | 0x4F<<7 | 0x0D, + 38577 - 19968: jis0208<<14 | 0x4F<<7 | 0x0B, + 38578 - 19968: jis0208<<14 | 0x4F<<7 | 0x0C, + 38579 - 19968: jis0212<<14 | 0x45<<7 | 0x4F, + 38580 - 19968: jis0208<<14 | 0x4F<<7 | 0x0E, + 38582 - 19968: jis0208<<14 | 0x4F<<7 | 0x0F, + 38583 - 19968: jis0208<<14 | 0x2D<<7 | 0x4B, + 38584 - 19968: jis0208<<14 | 0x4F<<7 | 0x10, + 38585 - 19968: jis0208<<14 | 0x4F<<7 | 0x11, + 38586 - 19968: jis0212<<14 | 0x45<<7 | 0x50, + 38587 - 19968: jis0208<<14 | 0x1F<<7 | 0x28, + 38588 - 19968: jis0208<<14 | 0x27<<7 | 0x1A, + 38592 - 19968: jis0208<<14 | 0x1E<<7 | 0x5C, + 38593 - 19968: jis0208<<14 | 0x13<<7 | 0x46, + 38596 - 19968: jis0208<<14 | 0x2C<<7 | 0x19, + 38597 - 19968: jis0208<<14 | 0x11<<7 | 0x4C, + 38598 - 19968: jis0208<<14 | 0x1C<<7 | 0x17, + 38599 - 19968: jis0208<<14 | 0x17<<7 | 0x3A, + 38601 - 19968: jis0208<<14 | 0x4F<<7 | 0x14, + 38602 - 19968: jis0212<<14 | 0x45<<7 | 0x51, + 38603 - 19968: jis0208<<14 | 0x4F<<7 | 0x13, + 38604 - 19968: jis0208<<14 | 0x1A<<7 | 0x52, + 38605 - 19968: jis0208<<14 | 0x4F<<7 | 0x15, + 38606 - 19968: jis0208<<14 | 0x4F<<7 | 0x12, + 38609 - 19968: jis0208<<14 | 0x1A<<7 | 0x07, + 38610 - 19968: jis0212<<14 | 0x45<<7 | 0x52, + 38613 - 19968: jis0208<<14 | 0x4F<<7 | 0x19, + 38614 - 19968: jis0208<<14 | 0x49<<7 | 0x0C, + 38616 - 19968: jis0212<<14 | 0x45<<7 | 0x54, + 38617 - 19968: jis0208<<14 | 0x31<<7 | 0x35, + 38618 - 19968: jis0212<<14 | 0x45<<7 | 0x55, + 38619 - 19968: jis0208<<14 | 0x1E<<7 | 0x56, + 38620 - 19968: jis0208<<14 | 0x4F<<7 | 0x17, + 38621 - 19968: jis0212<<14 | 0x45<<7 | 0x56, + 38622 - 19968: jis0212<<14 | 0x45<<7 | 0x57, + 38623 - 19968: jis0212<<14 | 0x45<<7 | 0x58, + 38626 - 19968: jis0208<<14 | 0x2D<<7 | 0x04, + 38627 - 19968: jis0208<<14 | 0x25<<7 | 0x50, + 38632 - 19968: jis0208<<14 | 0x10<<7 | 0x0A, + 38633 - 19968: jis0212<<14 | 0x45<<7 | 0x59, + 38634 - 19968: jis0208<<14 | 0x1F<<7 | 0x42, + 38635 - 19968: jis0208<<14 | 0x1B<<7 | 0x15, + 38639 - 19968: jis0212<<14 | 0x45<<7 | 0x5A, + 38640 - 19968: jis0208<<14 | 0x29<<7 | 0x16, + 38641 - 19968: jis0212<<14 | 0x45<<7 | 0x5B, + 38642 - 19968: jis0208<<14 | 0x10<<7 | 0x1F, + 38646 - 19968: jis0208<<14 | 0x2D<<7 | 0x4C, + 38647 - 19968: jis0208<<14 | 0x2C<<7 | 0x4A, + 38649 - 19968: jis0208<<14 | 0x4F<<7 | 0x1A, + 38650 - 19968: jis0212<<14 | 0x45<<7 | 0x5C, + 38651 - 19968: jis0208<<14 | 0x24<<7 | 0x24, + 38656 - 19968: jis0208<<14 | 0x1B<<7 | 0x5A, + 38658 - 19968: jis0212<<14 | 0x45<<7 | 0x5D, + 38659 - 19968: jis0212<<14 | 0x46<<7 | 0x00, + 38660 - 19968: jis0208<<14 | 0x4F<<7 | 0x1B, + 38661 - 19968: jis0212<<14 | 0x46<<7 | 0x01, + 38662 - 19968: jis0208<<14 | 0x4F<<7 | 0x1C, + 38663 - 19968: jis0208<<14 | 0x1E<<7 | 0x2B, + 38664 - 19968: jis0208<<14 | 0x4F<<7 | 0x1D, + 38665 - 19968: jis0212<<14 | 0x46<<7 | 0x02, + 38666 - 19968: jis0208<<14 | 0x2D<<7 | 0x4D, + 38669 - 19968: jis0208<<14 | 0x4F<<7 | 0x18, + 38670 - 19968: jis0208<<14 | 0x4F<<7 | 0x1F, + 38671 - 19968: jis0208<<14 | 0x4F<<7 | 0x21, + 38673 - 19968: jis0208<<14 | 0x4F<<7 | 0x20, + 38675 - 19968: jis0208<<14 | 0x4F<<7 | 0x1E, + 38678 - 19968: jis0208<<14 | 0x4F<<7 | 0x22, + 38681 - 19968: jis0208<<14 | 0x4F<<7 | 0x23, + 38682 - 19968: jis0212<<14 | 0x46<<7 | 0x03, + 38683 - 19968: jis0212<<14 | 0x46<<7 | 0x04, + 38684 - 19968: jis0208<<14 | 0x20<<7 | 0x59, + 38685 - 19968: jis0212<<14 | 0x46<<7 | 0x05, + 38686 - 19968: jis0208<<14 | 0x11<<7 | 0x41, + 38689 - 19968: jis0212<<14 | 0x46<<7 | 0x06, + 38690 - 19968: jis0212<<14 | 0x46<<7 | 0x07, + 38691 - 19968: jis0212<<14 | 0x46<<7 | 0x08, + 38692 - 19968: jis0208<<14 | 0x4F<<7 | 0x24, + 38695 - 19968: jis0208<<14 | 0x2B<<7 | 0x17, + 38696 - 19968: jis0212<<14 | 0x46<<7 | 0x09, + 38698 - 19968: jis0208<<14 | 0x4F<<7 | 0x25, + 38704 - 19968: jis0208<<14 | 0x4F<<7 | 0x26, + 38705 - 19968: jis0212<<14 | 0x46<<7 | 0x0A, + 38706 - 19968: jis0208<<14 | 0x2E<<7 | 0x09, + 38707 - 19968: jis0208<<14 | 0x5B<<7 | 0x32, + 38712 - 19968: jis0208<<14 | 0x3A<<7 | 0x10, + 38713 - 19968: jis0208<<14 | 0x4F<<7 | 0x27, + 38715 - 19968: jis0208<<14 | 0x5B<<7 | 0x33, + 38717 - 19968: jis0208<<14 | 0x4F<<7 | 0x28, + 38718 - 19968: jis0208<<14 | 0x4F<<7 | 0x29, + 38721 - 19968: jis0212<<14 | 0x46<<7 | 0x0C, + 38722 - 19968: jis0208<<14 | 0x4F<<7 | 0x2D, + 38723 - 19968: jis0208<<14 | 0x5B<<7 | 0x34, + 38724 - 19968: jis0208<<14 | 0x4F<<7 | 0x2A, + 38726 - 19968: jis0208<<14 | 0x4F<<7 | 0x2B, + 38728 - 19968: jis0208<<14 | 0x4F<<7 | 0x2C, + 38729 - 19968: jis0208<<14 | 0x4F<<7 | 0x2E, + 38730 - 19968: jis0212<<14 | 0x46<<7 | 0x0E, + 38733 - 19968: jis0208<<14 | 0x5B<<7 | 0x35, + 38734 - 19968: jis0212<<14 | 0x46<<7 | 0x0F, + 38735 - 19968: jis0208<<14 | 0x5B<<7 | 0x36, + 38737 - 19968: jis0208<<14 | 0x5B<<7 | 0x37, + 38738 - 19968: jis0208<<14 | 0x1F<<7 | 0x23, + 38741 - 19968: jis0208<<14 | 0x5B<<7 | 0x38, + 38742 - 19968: jis0208<<14 | 0x2B<<7 | 0x56, + 38743 - 19968: jis0212<<14 | 0x46<<7 | 0x12, + 38744 - 19968: jis0212<<14 | 0x46<<7 | 0x13, + 38745 - 19968: jis0208<<14 | 0x1F<<7 | 0x24, + 38746 - 19968: jis0212<<14 | 0x46<<7 | 0x14, + 38747 - 19968: jis0212<<14 | 0x46<<7 | 0x15, + 38748 - 19968: jis0208<<14 | 0x4F<<7 | 0x2F, + 38750 - 19968: jis0208<<14 | 0x27<<7 | 0x52, + 38752 - 19968: jis0208<<14 | 0x4F<<7 | 0x30, + 38753 - 19968: jis0208<<14 | 0x52<<7 | 0x32, + 38754 - 19968: jis0208<<14 | 0x2B<<7 | 0x2B, + 38755 - 19968: jis0212<<14 | 0x46<<7 | 0x16, + 38756 - 19968: jis0208<<14 | 0x4F<<7 | 0x31, + 38758 - 19968: jis0208<<14 | 0x4F<<7 | 0x32, + 38759 - 19968: jis0212<<14 | 0x46<<7 | 0x17, + 38760 - 19968: jis0208<<14 | 0x4F<<7 | 0x33, + 38761 - 19968: jis0208<<14 | 0x12<<7 | 0x36, + 38762 - 19968: jis0212<<14 | 0x46<<7 | 0x18, + 38763 - 19968: jis0208<<14 | 0x4F<<7 | 0x35, + 38765 - 19968: jis0208<<14 | 0x1E<<7 | 0x38, + 38766 - 19968: jis0212<<14 | 0x46<<7 | 0x19, + 38769 - 19968: jis0208<<14 | 0x4F<<7 | 0x36, + 38771 - 19968: jis0212<<14 | 0x46<<7 | 0x1A, + 38772 - 19968: jis0208<<14 | 0x16<<7 | 0x03, + 38774 - 19968: jis0212<<14 | 0x46<<7 | 0x1B, + 38775 - 19968: jis0212<<14 | 0x46<<7 | 0x1C, + 38776 - 19968: jis0212<<14 | 0x46<<7 | 0x1D, + 38777 - 19968: jis0208<<14 | 0x4F<<7 | 0x37, + 38778 - 19968: jis0208<<14 | 0x4F<<7 | 0x3B, + 38779 - 19968: jis0212<<14 | 0x46<<7 | 0x1E, + 38780 - 19968: jis0208<<14 | 0x4F<<7 | 0x39, + 38781 - 19968: jis0212<<14 | 0x46<<7 | 0x1F, + 38783 - 19968: jis0212<<14 | 0x46<<7 | 0x20, + 38784 - 19968: jis0212<<14 | 0x46<<7 | 0x21, + 38785 - 19968: jis0208<<14 | 0x4F<<7 | 0x3A, + 38788 - 19968: jis0208<<14 | 0x12<<7 | 0x52, + 38789 - 19968: jis0208<<14 | 0x4F<<7 | 0x38, + 38790 - 19968: jis0208<<14 | 0x4F<<7 | 0x3C, + 38793 - 19968: jis0212<<14 | 0x46<<7 | 0x22, + 38795 - 19968: jis0208<<14 | 0x4F<<7 | 0x3D, + 38797 - 19968: jis0208<<14 | 0x0F<<7 | 0x27, + 38799 - 19968: jis0208<<14 | 0x4F<<7 | 0x3E, + 38800 - 19968: jis0208<<14 | 0x4F<<7 | 0x3F, + 38805 - 19968: jis0212<<14 | 0x46<<7 | 0x23, + 38806 - 19968: jis0212<<14 | 0x46<<7 | 0x24, + 38807 - 19968: jis0212<<14 | 0x46<<7 | 0x25, + 38808 - 19968: jis0208<<14 | 0x1D<<7 | 0x43, + 38809 - 19968: jis0212<<14 | 0x46<<7 | 0x26, + 38810 - 19968: jis0212<<14 | 0x46<<7 | 0x27, + 38812 - 19968: jis0208<<14 | 0x4F<<7 | 0x40, + 38814 - 19968: jis0212<<14 | 0x46<<7 | 0x28, + 38815 - 19968: jis0212<<14 | 0x46<<7 | 0x29, + 38816 - 19968: jis0208<<14 | 0x14<<7 | 0x26, + 38818 - 19968: jis0212<<14 | 0x46<<7 | 0x2A, + 38819 - 19968: jis0208<<14 | 0x4F<<7 | 0x43, + 38822 - 19968: jis0208<<14 | 0x4F<<7 | 0x42, + 38824 - 19968: jis0208<<14 | 0x4F<<7 | 0x41, + 38827 - 19968: jis0208<<14 | 0x4A<<7 | 0x50, + 38828 - 19968: jis0212<<14 | 0x46<<7 | 0x2B, + 38829 - 19968: jis0208<<14 | 0x29<<7 | 0x3B, + 38830 - 19968: jis0212<<14 | 0x46<<7 | 0x2C, + 38833 - 19968: jis0212<<14 | 0x46<<7 | 0x2D, + 38834 - 19968: jis0212<<14 | 0x46<<7 | 0x2E, + 38835 - 19968: jis0208<<14 | 0x4F<<7 | 0x44, + 38836 - 19968: jis0208<<14 | 0x4F<<7 | 0x45, + 38837 - 19968: jis0212<<14 | 0x46<<7 | 0x2F, + 38838 - 19968: jis0212<<14 | 0x46<<7 | 0x30, + 38840 - 19968: jis0212<<14 | 0x46<<7 | 0x31, + 38841 - 19968: jis0212<<14 | 0x46<<7 | 0x32, + 38842 - 19968: jis0212<<14 | 0x46<<7 | 0x33, + 38844 - 19968: jis0212<<14 | 0x46<<7 | 0x34, + 38846 - 19968: jis0212<<14 | 0x46<<7 | 0x35, + 38847 - 19968: jis0212<<14 | 0x46<<7 | 0x36, + 38849 - 19968: jis0212<<14 | 0x46<<7 | 0x37, + 38851 - 19968: jis0208<<14 | 0x4F<<7 | 0x46, + 38852 - 19968: jis0212<<14 | 0x46<<7 | 0x38, + 38853 - 19968: jis0212<<14 | 0x46<<7 | 0x39, + 38854 - 19968: jis0208<<14 | 0x4F<<7 | 0x47, + 38855 - 19968: jis0212<<14 | 0x46<<7 | 0x3A, + 38856 - 19968: jis0208<<14 | 0x4F<<7 | 0x48, + 38857 - 19968: jis0212<<14 | 0x46<<7 | 0x3B, + 38858 - 19968: jis0212<<14 | 0x46<<7 | 0x3C, + 38859 - 19968: jis0208<<14 | 0x4F<<7 | 0x49, + 38860 - 19968: jis0212<<14 | 0x46<<7 | 0x3D, + 38861 - 19968: jis0212<<14 | 0x46<<7 | 0x3E, + 38862 - 19968: jis0212<<14 | 0x46<<7 | 0x3F, + 38864 - 19968: jis0212<<14 | 0x46<<7 | 0x40, + 38865 - 19968: jis0212<<14 | 0x46<<7 | 0x41, + 38867 - 19968: jis0208<<14 | 0x13<<7 | 0x39, + 38868 - 19968: jis0212<<14 | 0x46<<7 | 0x42, + 38871 - 19968: jis0212<<14 | 0x46<<7 | 0x43, + 38872 - 19968: jis0212<<14 | 0x46<<7 | 0x44, + 38873 - 19968: jis0212<<14 | 0x46<<7 | 0x45, + 38875 - 19968: jis0212<<14 | 0x46<<7 | 0x49, + 38876 - 19968: jis0208<<14 | 0x4F<<7 | 0x4A, + 38877 - 19968: jis0212<<14 | 0x46<<7 | 0x46, + 38878 - 19968: jis0212<<14 | 0x46<<7 | 0x47, + 38880 - 19968: jis0212<<14 | 0x46<<7 | 0x48, + 38881 - 19968: jis0212<<14 | 0x46<<7 | 0x4A, + 38884 - 19968: jis0212<<14 | 0x46<<7 | 0x4B, + 38893 - 19968: jis0208<<14 | 0x4F<<7 | 0x4B, + 38894 - 19968: jis0208<<14 | 0x26<<7 | 0x02, + 38895 - 19968: jis0212<<14 | 0x46<<7 | 0x4C, + 38897 - 19968: jis0212<<14 | 0x46<<7 | 0x4D, + 38898 - 19968: jis0208<<14 | 0x4F<<7 | 0x4D, + 38899 - 19968: jis0208<<14 | 0x11<<7 | 0x1A, + 38900 - 19968: jis0212<<14 | 0x46<<7 | 0x4E, + 38901 - 19968: jis0208<<14 | 0x4F<<7 | 0x50, + 38902 - 19968: jis0208<<14 | 0x4F<<7 | 0x4F, + 38903 - 19968: jis0212<<14 | 0x46<<7 | 0x4F, + 38904 - 19968: jis0212<<14 | 0x46<<7 | 0x50, + 38906 - 19968: jis0212<<14 | 0x46<<7 | 0x51, + 38907 - 19968: jis0208<<14 | 0x10<<7 | 0x03, + 38911 - 19968: jis0208<<14 | 0x15<<7 | 0x20, + 38913 - 19968: jis0208<<14 | 0x29<<7 | 0x26, + 38914 - 19968: jis0208<<14 | 0x23<<7 | 0x19, + 38915 - 19968: jis0208<<14 | 0x19<<7 | 0x01, + 38917 - 19968: jis0208<<14 | 0x18<<7 | 0x3F, + 38918 - 19968: jis0208<<14 | 0x1C<<7 | 0x46, + 38919 - 19968: jis0212<<14 | 0x46<<7 | 0x52, + 38920 - 19968: jis0208<<14 | 0x1E<<7 | 0x3B, + 38922 - 19968: jis0212<<14 | 0x46<<7 | 0x53, + 38924 - 19968: jis0208<<14 | 0x4F<<7 | 0x52, + 38925 - 19968: jis0212<<14 | 0x46<<7 | 0x55, + 38926 - 19968: jis0212<<14 | 0x46<<7 | 0x56, + 38927 - 19968: jis0208<<14 | 0x4F<<7 | 0x51, + 38928 - 19968: jis0208<<14 | 0x2C<<7 | 0x21, + 38929 - 19968: jis0208<<14 | 0x13<<7 | 0x47, + 38930 - 19968: jis0208<<14 | 0x27<<7 | 0x31, + 38931 - 19968: jis0208<<14 | 0x25<<7 | 0x3B, + 38932 - 19968: jis0212<<14 | 0x46<<7 | 0x57, + 38934 - 19968: jis0212<<14 | 0x46<<7 | 0x58, + 38935 - 19968: jis0208<<14 | 0x1E<<7 | 0x5B, + 38936 - 19968: jis0208<<14 | 0x2D<<7 | 0x2D, + 38937 - 19968: jis0212<<14 | 0x46<<7 | 0x54, + 38938 - 19968: jis0208<<14 | 0x16<<7 | 0x3A, + 38940 - 19968: jis0212<<14 | 0x46<<7 | 0x59, + 38942 - 19968: jis0212<<14 | 0x46<<7 | 0x5A, + 38944 - 19968: jis0212<<14 | 0x46<<7 | 0x5B, + 38945 - 19968: jis0208<<14 | 0x4F<<7 | 0x55, + 38947 - 19968: jis0212<<14 | 0x46<<7 | 0x5C, + 38948 - 19968: jis0208<<14 | 0x4F<<7 | 0x54, + 38949 - 19968: jis0212<<14 | 0x47<<7 | 0x07, + 38950 - 19968: jis0212<<14 | 0x46<<7 | 0x5D, + 38955 - 19968: jis0212<<14 | 0x47<<7 | 0x00, + 38956 - 19968: jis0208<<14 | 0x2A<<7 | 0x2A, + 38957 - 19968: jis0208<<14 | 0x25<<7 | 0x0B, + 38958 - 19968: jis0212<<14 | 0x47<<7 | 0x01, + 38959 - 19968: jis0212<<14 | 0x47<<7 | 0x02, + 38960 - 19968: jis0212<<14 | 0x47<<7 | 0x03, + 38962 - 19968: jis0212<<14 | 0x47<<7 | 0x04, + 38963 - 19968: jis0212<<14 | 0x47<<7 | 0x05, + 38964 - 19968: jis0208<<14 | 0x10<<7 | 0x2F, + 38965 - 19968: jis0212<<14 | 0x47<<7 | 0x06, + 38967 - 19968: jis0208<<14 | 0x4F<<7 | 0x56, + 38968 - 19968: jis0208<<14 | 0x4F<<7 | 0x53, + 38971 - 19968: jis0208<<14 | 0x28<<7 | 0x30, + 38972 - 19968: jis0208<<14 | 0x2C<<7 | 0x49, + 38973 - 19968: jis0208<<14 | 0x4F<<7 | 0x57, + 38974 - 19968: jis0212<<14 | 0x47<<7 | 0x08, + 38980 - 19968: jis0212<<14 | 0x47<<7 | 0x09, + 38982 - 19968: jis0208<<14 | 0x4F<<7 | 0x58, + 38983 - 19968: jis0212<<14 | 0x47<<7 | 0x0A, + 38986 - 19968: jis0212<<14 | 0x47<<7 | 0x0B, + 38987 - 19968: jis0208<<14 | 0x4F<<7 | 0x5A, + 38988 - 19968: jis0208<<14 | 0x21<<7 | 0x49, + 38989 - 19968: jis0208<<14 | 0x12<<7 | 0x3A, + 38990 - 19968: jis0208<<14 | 0x12<<7 | 0x3B, + 38991 - 19968: jis0208<<14 | 0x4F<<7 | 0x59, + 38993 - 19968: jis0212<<14 | 0x47<<7 | 0x0C, + 38994 - 19968: jis0212<<14 | 0x47<<7 | 0x0D, + 38995 - 19968: jis0212<<14 | 0x47<<7 | 0x0E, + 38996 - 19968: jis0208<<14 | 0x13<<7 | 0x48, + 38997 - 19968: jis0208<<14 | 0x17<<7 | 0x11, + 38998 - 19968: jis0212<<14 | 0x47<<7 | 0x0F, + 38999 - 19968: jis0208<<14 | 0x5B<<7 | 0x39, + 39000 - 19968: jis0208<<14 | 0x13<<7 | 0x49, + 39001 - 19968: jis0212<<14 | 0x47<<7 | 0x11, + 39002 - 19968: jis0212<<14 | 0x47<<7 | 0x12, + 39003 - 19968: jis0208<<14 | 0x24<<7 | 0x1E, + 39006 - 19968: jis0208<<14 | 0x2D<<7 | 0x3F, + 39010 - 19968: jis0212<<14 | 0x47<<7 | 0x13, + 39011 - 19968: jis0212<<14 | 0x47<<7 | 0x14, + 39013 - 19968: jis0208<<14 | 0x5B<<7 | 0x3A, + 39014 - 19968: jis0212<<14 | 0x47<<7 | 0x16, + 39015 - 19968: jis0208<<14 | 0x17<<7 | 0x3B, + 39018 - 19968: jis0212<<14 | 0x47<<7 | 0x17, + 39019 - 19968: jis0208<<14 | 0x4F<<7 | 0x5B, + 39020 - 19968: jis0212<<14 | 0x47<<7 | 0x18, + 39023 - 19968: jis0208<<14 | 0x4F<<7 | 0x5C, + 39024 - 19968: jis0208<<14 | 0x4F<<7 | 0x5D, + 39025 - 19968: jis0208<<14 | 0x50<<7 | 0x00, + 39027 - 19968: jis0208<<14 | 0x50<<7 | 0x02, + 39028 - 19968: jis0208<<14 | 0x50<<7 | 0x01, + 39080 - 19968: jis0208<<14 | 0x28<<7 | 0x56, + 39082 - 19968: jis0208<<14 | 0x50<<7 | 0x03, + 39083 - 19968: jis0212<<14 | 0x47<<7 | 0x19, + 39085 - 19968: jis0212<<14 | 0x47<<7 | 0x1A, + 39086 - 19968: jis0212<<14 | 0x47<<7 | 0x1B, + 39087 - 19968: jis0208<<14 | 0x50<<7 | 0x04, + 39088 - 19968: jis0212<<14 | 0x47<<7 | 0x1C, + 39089 - 19968: jis0208<<14 | 0x50<<7 | 0x05, + 39092 - 19968: jis0212<<14 | 0x47<<7 | 0x1D, + 39094 - 19968: jis0208<<14 | 0x50<<7 | 0x06, + 39095 - 19968: jis0212<<14 | 0x47<<7 | 0x1E, + 39096 - 19968: jis0212<<14 | 0x47<<7 | 0x1F, + 39098 - 19968: jis0212<<14 | 0x47<<7 | 0x20, + 39099 - 19968: jis0212<<14 | 0x47<<7 | 0x21, + 39103 - 19968: jis0212<<14 | 0x47<<7 | 0x22, + 39106 - 19968: jis0212<<14 | 0x47<<7 | 0x23, + 39107 - 19968: jis0208<<14 | 0x50<<7 | 0x08, + 39108 - 19968: jis0208<<14 | 0x50<<7 | 0x07, + 39109 - 19968: jis0212<<14 | 0x47<<7 | 0x24, + 39110 - 19968: jis0208<<14 | 0x50<<7 | 0x09, + 39112 - 19968: jis0212<<14 | 0x47<<7 | 0x25, + 39116 - 19968: jis0212<<14 | 0x47<<7 | 0x26, + 39131 - 19968: jis0208<<14 | 0x27<<7 | 0x53, + 39132 - 19968: jis0208<<14 | 0x45<<7 | 0x2B, + 39135 - 19968: jis0208<<14 | 0x1E<<7 | 0x08, + 39137 - 19968: jis0212<<14 | 0x47<<7 | 0x27, + 39138 - 19968: jis0208<<14 | 0x14<<7 | 0x11, + 39139 - 19968: jis0212<<14 | 0x47<<7 | 0x28, + 39141 - 19968: jis0212<<14 | 0x47<<7 | 0x29, + 39142 - 19968: jis0212<<14 | 0x47<<7 | 0x2A, + 39143 - 19968: jis0212<<14 | 0x47<<7 | 0x2B, + 39145 - 19968: jis0208<<14 | 0x50<<7 | 0x0A, + 39146 - 19968: jis0212<<14 | 0x47<<7 | 0x2C, + 39147 - 19968: jis0208<<14 | 0x50<<7 | 0x0B, + 39149 - 19968: jis0208<<14 | 0x31<<7 | 0x0B, + 39150 - 19968: jis0208<<14 | 0x3C<<7 | 0x1A, + 39151 - 19968: jis0208<<14 | 0x27<<7 | 0x32, + 39154 - 19968: jis0208<<14 | 0x0F<<7 | 0x5A, + 39155 - 19968: jis0212<<14 | 0x47<<7 | 0x2D, + 39156 - 19968: jis0208<<14 | 0x0F<<7 | 0x1A, + 39158 - 19968: jis0212<<14 | 0x47<<7 | 0x2E, + 39164 - 19968: jis0208<<14 | 0x1A<<7 | 0x53, + 39165 - 19968: jis0208<<14 | 0x2A<<7 | 0x0F, + 39166 - 19968: jis0208<<14 | 0x1D<<7 | 0x5D, + 39170 - 19968: jis0212<<14 | 0x47<<7 | 0x2F, + 39171 - 19968: jis0208<<14 | 0x50<<7 | 0x0C, + 39173 - 19968: jis0208<<14 | 0x2B<<7 | 0x3E, + 39175 - 19968: jis0212<<14 | 0x47<<7 | 0x30, + 39176 - 19968: jis0212<<14 | 0x47<<7 | 0x31, + 39177 - 19968: jis0208<<14 | 0x50<<7 | 0x0D, + 39178 - 19968: jis0208<<14 | 0x2C<<7 | 0x3B, + 39180 - 19968: jis0208<<14 | 0x10<<7 | 0x21, + 39184 - 19968: jis0208<<14 | 0x1A<<7 | 0x20, + 39185 - 19968: jis0212<<14 | 0x47<<7 | 0x32, + 39186 - 19968: jis0208<<14 | 0x50<<7 | 0x0E, + 39187 - 19968: jis0208<<14 | 0x11<<7 | 0x4D, + 39188 - 19968: jis0208<<14 | 0x50<<7 | 0x0F, + 39189 - 19968: jis0212<<14 | 0x47<<7 | 0x33, + 39190 - 19968: jis0212<<14 | 0x47<<7 | 0x34, + 39191 - 19968: jis0212<<14 | 0x47<<7 | 0x35, + 39192 - 19968: jis0208<<14 | 0x50<<7 | 0x10, + 39194 - 19968: jis0212<<14 | 0x47<<7 | 0x36, + 39195 - 19968: jis0212<<14 | 0x47<<7 | 0x37, + 39196 - 19968: jis0212<<14 | 0x47<<7 | 0x38, + 39197 - 19968: jis0208<<14 | 0x50<<7 | 0x12, + 39198 - 19968: jis0208<<14 | 0x50<<7 | 0x13, + 39199 - 19968: jis0212<<14 | 0x47<<7 | 0x39, + 39200 - 19968: jis0208<<14 | 0x50<<7 | 0x15, + 39201 - 19968: jis0208<<14 | 0x50<<7 | 0x11, + 39202 - 19968: jis0212<<14 | 0x47<<7 | 0x3A, + 39204 - 19968: jis0208<<14 | 0x50<<7 | 0x14, + 39206 - 19968: jis0212<<14 | 0x47<<7 | 0x3B, + 39207 - 19968: jis0208<<14 | 0x5B<<7 | 0x3D, + 39208 - 19968: jis0208<<14 | 0x13<<7 | 0x3A, + 39211 - 19968: jis0212<<14 | 0x47<<7 | 0x3D, + 39212 - 19968: jis0208<<14 | 0x50<<7 | 0x16, + 39214 - 19968: jis0208<<14 | 0x50<<7 | 0x17, + 39217 - 19968: jis0212<<14 | 0x47<<7 | 0x3E, + 39218 - 19968: jis0212<<14 | 0x47<<7 | 0x3F, + 39219 - 19968: jis0212<<14 | 0x47<<7 | 0x40, + 39220 - 19968: jis0212<<14 | 0x47<<7 | 0x41, + 39221 - 19968: jis0212<<14 | 0x47<<7 | 0x42, + 39225 - 19968: jis0212<<14 | 0x47<<7 | 0x43, + 39226 - 19968: jis0212<<14 | 0x47<<7 | 0x44, + 39227 - 19968: jis0212<<14 | 0x47<<7 | 0x45, + 39228 - 19968: jis0212<<14 | 0x47<<7 | 0x46, + 39229 - 19968: jis0208<<14 | 0x50<<7 | 0x18, + 39230 - 19968: jis0208<<14 | 0x50<<7 | 0x19, + 39232 - 19968: jis0212<<14 | 0x47<<7 | 0x47, + 39233 - 19968: jis0212<<14 | 0x47<<7 | 0x48, + 39234 - 19968: jis0208<<14 | 0x50<<7 | 0x1A, + 39237 - 19968: jis0208<<14 | 0x50<<7 | 0x1C, + 39238 - 19968: jis0212<<14 | 0x47<<7 | 0x49, + 39239 - 19968: jis0212<<14 | 0x47<<7 | 0x4A, + 39240 - 19968: jis0212<<14 | 0x47<<7 | 0x4B, + 39241 - 19968: jis0208<<14 | 0x50<<7 | 0x1B, + 39243 - 19968: jis0208<<14 | 0x50<<7 | 0x1E, + 39244 - 19968: jis0208<<14 | 0x50<<7 | 0x21, + 39245 - 19968: jis0212<<14 | 0x47<<7 | 0x4C, + 39246 - 19968: jis0212<<14 | 0x47<<7 | 0x4D, + 39248 - 19968: jis0208<<14 | 0x50<<7 | 0x1D, + 39249 - 19968: jis0208<<14 | 0x50<<7 | 0x1F, + 39250 - 19968: jis0208<<14 | 0x50<<7 | 0x20, + 39252 - 19968: jis0212<<14 | 0x47<<7 | 0x4E, + 39253 - 19968: jis0208<<14 | 0x50<<7 | 0x22, + 39255 - 19968: jis0208<<14 | 0x15<<7 | 0x21, + 39256 - 19968: jis0212<<14 | 0x47<<7 | 0x4F, + 39257 - 19968: jis0212<<14 | 0x47<<7 | 0x50, + 39259 - 19968: jis0212<<14 | 0x47<<7 | 0x51, + 39260 - 19968: jis0212<<14 | 0x47<<7 | 0x52, + 39262 - 19968: jis0212<<14 | 0x47<<7 | 0x53, + 39263 - 19968: jis0212<<14 | 0x47<<7 | 0x54, + 39264 - 19968: jis0212<<14 | 0x47<<7 | 0x55, + 39318 - 19968: jis0208<<14 | 0x1B<<7 | 0x52, + 39319 - 19968: jis0208<<14 | 0x50<<7 | 0x23, + 39320 - 19968: jis0208<<14 | 0x50<<7 | 0x24, + 39321 - 19968: jis0208<<14 | 0x18<<7 | 0x40, + 39323 - 19968: jis0212<<14 | 0x47<<7 | 0x56, + 39325 - 19968: jis0212<<14 | 0x47<<7 | 0x57, + 39326 - 19968: jis0208<<14 | 0x5B<<7 | 0x3F, + 39327 - 19968: jis0212<<14 | 0x47<<7 | 0x58, + 39333 - 19968: jis0208<<14 | 0x50<<7 | 0x25, + 39334 - 19968: jis0212<<14 | 0x47<<7 | 0x59, + 39336 - 19968: jis0208<<14 | 0x12<<7 | 0x1D, + 39340 - 19968: jis0208<<14 | 0x26<<7 | 0x2E, + 39341 - 19968: jis0208<<14 | 0x50<<7 | 0x26, + 39342 - 19968: jis0208<<14 | 0x50<<7 | 0x27, + 39344 - 19968: jis0212<<14 | 0x47<<7 | 0x5A, + 39345 - 19968: jis0212<<14 | 0x47<<7 | 0x5B, + 39346 - 19968: jis0212<<14 | 0x47<<7 | 0x5C, + 39347 - 19968: jis0208<<14 | 0x22<<7 | 0x39, + 39348 - 19968: jis0208<<14 | 0x25<<7 | 0x4A, + 39349 - 19968: jis0212<<14 | 0x47<<7 | 0x5D, + 39353 - 19968: jis0212<<14 | 0x48<<7 | 0x00, + 39354 - 19968: jis0212<<14 | 0x48<<7 | 0x01, + 39356 - 19968: jis0208<<14 | 0x50<<7 | 0x28, + 39357 - 19968: jis0212<<14 | 0x48<<7 | 0x02, + 39359 - 19968: jis0212<<14 | 0x48<<7 | 0x03, + 39361 - 19968: jis0208<<14 | 0x26<<7 | 0x5C, + 39363 - 19968: jis0212<<14 | 0x48<<7 | 0x04, + 39364 - 19968: jis0208<<14 | 0x21<<7 | 0x2B, + 39365 - 19968: jis0208<<14 | 0x10<<7 | 0x37, + 39366 - 19968: jis0208<<14 | 0x15<<7 | 0x4D, + 39368 - 19968: jis0208<<14 | 0x15<<7 | 0x4E, + 39369 - 19968: jis0212<<14 | 0x48<<7 | 0x05, + 39376 - 19968: jis0208<<14 | 0x22<<7 | 0x52, + 39377 - 19968: jis0208<<14 | 0x50<<7 | 0x2D, + 39378 - 19968: jis0208<<14 | 0x15<<7 | 0x4F, + 39379 - 19968: jis0212<<14 | 0x48<<7 | 0x06, + 39380 - 19968: jis0212<<14 | 0x48<<7 | 0x07, + 39381 - 19968: jis0208<<14 | 0x11<<7 | 0x4E, + 39384 - 19968: jis0208<<14 | 0x50<<7 | 0x2C, + 39385 - 19968: jis0212<<14 | 0x48<<7 | 0x08, + 39386 - 19968: jis0212<<14 | 0x48<<7 | 0x09, + 39387 - 19968: jis0208<<14 | 0x50<<7 | 0x2A, + 39388 - 19968: jis0212<<14 | 0x48<<7 | 0x0A, + 39389 - 19968: jis0208<<14 | 0x50<<7 | 0x2B, + 39390 - 19968: jis0212<<14 | 0x48<<7 | 0x0B, + 39391 - 19968: jis0208<<14 | 0x50<<7 | 0x29, + 39394 - 19968: jis0208<<14 | 0x50<<7 | 0x37, + 39399 - 19968: jis0212<<14 | 0x48<<7 | 0x0C, + 39402 - 19968: jis0212<<14 | 0x48<<7 | 0x0D, + 39403 - 19968: jis0212<<14 | 0x48<<7 | 0x0E, + 39404 - 19968: jis0212<<14 | 0x48<<7 | 0x0F, + 39405 - 19968: jis0208<<14 | 0x50<<7 | 0x2E, + 39406 - 19968: jis0208<<14 | 0x50<<7 | 0x2F, + 39408 - 19968: jis0212<<14 | 0x48<<7 | 0x10, + 39409 - 19968: jis0208<<14 | 0x50<<7 | 0x30, + 39410 - 19968: jis0208<<14 | 0x50<<7 | 0x31, + 39412 - 19968: jis0212<<14 | 0x48<<7 | 0x11, + 39413 - 19968: jis0212<<14 | 0x48<<7 | 0x12, + 39416 - 19968: jis0208<<14 | 0x50<<7 | 0x33, + 39417 - 19968: jis0212<<14 | 0x48<<7 | 0x13, + 39419 - 19968: jis0208<<14 | 0x50<<7 | 0x32, + 39421 - 19968: jis0212<<14 | 0x48<<7 | 0x14, + 39422 - 19968: jis0212<<14 | 0x48<<7 | 0x15, + 39423 - 19968: jis0208<<14 | 0x1C<<7 | 0x38, + 39425 - 19968: jis0208<<14 | 0x50<<7 | 0x34, + 39426 - 19968: jis0212<<14 | 0x48<<7 | 0x16, + 39427 - 19968: jis0212<<14 | 0x48<<7 | 0x17, + 39428 - 19968: jis0212<<14 | 0x48<<7 | 0x18, + 39429 - 19968: jis0208<<14 | 0x50<<7 | 0x36, + 39435 - 19968: jis0212<<14 | 0x48<<7 | 0x19, + 39436 - 19968: jis0212<<14 | 0x48<<7 | 0x1A, + 39438 - 19968: jis0208<<14 | 0x14<<7 | 0x12, + 39439 - 19968: jis0208<<14 | 0x50<<7 | 0x35, + 39440 - 19968: jis0212<<14 | 0x48<<7 | 0x1B, + 39441 - 19968: jis0212<<14 | 0x48<<7 | 0x1C, + 39442 - 19968: jis0208<<14 | 0x20<<7 | 0x5A, + 39443 - 19968: jis0208<<14 | 0x17<<7 | 0x12, + 39446 - 19968: jis0212<<14 | 0x48<<7 | 0x1D, + 39449 - 19968: jis0208<<14 | 0x50<<7 | 0x38, + 39454 - 19968: jis0212<<14 | 0x48<<7 | 0x1E, + 39456 - 19968: jis0212<<14 | 0x48<<7 | 0x1F, + 39458 - 19968: jis0212<<14 | 0x48<<7 | 0x20, + 39459 - 19968: jis0212<<14 | 0x48<<7 | 0x21, + 39460 - 19968: jis0212<<14 | 0x48<<7 | 0x22, + 39463 - 19968: jis0212<<14 | 0x48<<7 | 0x23, + 39464 - 19968: jis0208<<14 | 0x21<<7 | 0x2C, + 39467 - 19968: jis0208<<14 | 0x50<<7 | 0x39, + 39469 - 19968: jis0212<<14 | 0x48<<7 | 0x24, + 39470 - 19968: jis0212<<14 | 0x48<<7 | 0x25, + 39472 - 19968: jis0208<<14 | 0x25<<7 | 0x0C, + 39475 - 19968: jis0212<<14 | 0x48<<7 | 0x26, + 39477 - 19968: jis0212<<14 | 0x48<<7 | 0x27, + 39478 - 19968: jis0212<<14 | 0x48<<7 | 0x28, + 39479 - 19968: jis0208<<14 | 0x50<<7 | 0x3A, + 39480 - 19968: jis0212<<14 | 0x48<<7 | 0x29, + 39486 - 19968: jis0208<<14 | 0x50<<7 | 0x3F, + 39488 - 19968: jis0208<<14 | 0x50<<7 | 0x3D, + 39489 - 19968: jis0212<<14 | 0x48<<7 | 0x2B, + 39490 - 19968: jis0208<<14 | 0x50<<7 | 0x3C, + 39491 - 19968: jis0208<<14 | 0x50<<7 | 0x3E, + 39492 - 19968: jis0212<<14 | 0x48<<7 | 0x2C, + 39493 - 19968: jis0208<<14 | 0x50<<7 | 0x3B, + 39495 - 19968: jis0212<<14 | 0x48<<7 | 0x2A, + 39498 - 19968: jis0212<<14 | 0x48<<7 | 0x2D, + 39499 - 19968: jis0212<<14 | 0x48<<7 | 0x2E, + 39500 - 19968: jis0212<<14 | 0x48<<7 | 0x2F, + 39501 - 19968: jis0208<<14 | 0x50<<7 | 0x41, + 39502 - 19968: jis0208<<14 | 0x5B<<7 | 0x40, + 39505 - 19968: jis0212<<14 | 0x48<<7 | 0x31, + 39508 - 19968: jis0212<<14 | 0x48<<7 | 0x32, + 39509 - 19968: jis0208<<14 | 0x50<<7 | 0x40, + 39510 - 19968: jis0212<<14 | 0x48<<7 | 0x33, + 39511 - 19968: jis0208<<14 | 0x50<<7 | 0x43, + 39514 - 19968: jis0208<<14 | 0x15<<7 | 0x22, + 39515 - 19968: jis0208<<14 | 0x50<<7 | 0x42, + 39517 - 19968: jis0212<<14 | 0x48<<7 | 0x34, + 39519 - 19968: jis0208<<14 | 0x50<<7 | 0x44, + 39522 - 19968: jis0208<<14 | 0x50<<7 | 0x45, + 39524 - 19968: jis0208<<14 | 0x50<<7 | 0x47, + 39525 - 19968: jis0208<<14 | 0x50<<7 | 0x46, + 39529 - 19968: jis0208<<14 | 0x50<<7 | 0x48, + 39530 - 19968: jis0208<<14 | 0x50<<7 | 0x4A, + 39531 - 19968: jis0208<<14 | 0x50<<7 | 0x49, + 39592 - 19968: jis0208<<14 | 0x18<<7 | 0x5B, + 39594 - 19968: jis0212<<14 | 0x48<<7 | 0x35, + 39596 - 19968: jis0212<<14 | 0x48<<7 | 0x36, + 39597 - 19968: jis0208<<14 | 0x50<<7 | 0x4B, + 39598 - 19968: jis0212<<14 | 0x48<<7 | 0x37, + 39599 - 19968: jis0212<<14 | 0x48<<7 | 0x38, + 39600 - 19968: jis0208<<14 | 0x50<<7 | 0x4C, + 39602 - 19968: jis0212<<14 | 0x48<<7 | 0x39, + 39604 - 19968: jis0212<<14 | 0x48<<7 | 0x3A, + 39605 - 19968: jis0212<<14 | 0x48<<7 | 0x3B, + 39606 - 19968: jis0212<<14 | 0x48<<7 | 0x3C, + 39608 - 19968: jis0208<<14 | 0x12<<7 | 0x1B, + 39609 - 19968: jis0212<<14 | 0x48<<7 | 0x3D, + 39611 - 19968: jis0212<<14 | 0x48<<7 | 0x3E, + 39612 - 19968: jis0208<<14 | 0x50<<7 | 0x4D, + 39614 - 19968: jis0212<<14 | 0x48<<7 | 0x3F, + 39615 - 19968: jis0212<<14 | 0x48<<7 | 0x40, + 39616 - 19968: jis0208<<14 | 0x50<<7 | 0x4E, + 39617 - 19968: jis0212<<14 | 0x48<<7 | 0x41, + 39619 - 19968: jis0212<<14 | 0x48<<7 | 0x42, + 39620 - 19968: jis0208<<14 | 0x1E<<7 | 0x50, + 39622 - 19968: jis0212<<14 | 0x48<<7 | 0x43, + 39624 - 19968: jis0212<<14 | 0x48<<7 | 0x44, + 39630 - 19968: jis0212<<14 | 0x48<<7 | 0x45, + 39631 - 19968: jis0208<<14 | 0x50<<7 | 0x4F, + 39632 - 19968: jis0212<<14 | 0x48<<7 | 0x46, + 39633 - 19968: jis0208<<14 | 0x50<<7 | 0x50, + 39634 - 19968: jis0212<<14 | 0x48<<7 | 0x47, + 39635 - 19968: jis0208<<14 | 0x50<<7 | 0x51, + 39636 - 19968: jis0208<<14 | 0x50<<7 | 0x52, + 39637 - 19968: jis0212<<14 | 0x48<<7 | 0x48, + 39638 - 19968: jis0212<<14 | 0x48<<7 | 0x49, + 39639 - 19968: jis0212<<14 | 0x48<<7 | 0x4A, + 39640 - 19968: jis0208<<14 | 0x18<<7 | 0x41, + 39641 - 19968: jis0208<<14 | 0x5B<<7 | 0x41, + 39643 - 19968: jis0212<<14 | 0x48<<7 | 0x4B, + 39644 - 19968: jis0208<<14 | 0x5B<<7 | 0x42, + 39646 - 19968: jis0208<<14 | 0x50<<7 | 0x53, + 39647 - 19968: jis0208<<14 | 0x50<<7 | 0x54, + 39648 - 19968: jis0212<<14 | 0x48<<7 | 0x4D, + 39650 - 19968: jis0208<<14 | 0x50<<7 | 0x55, + 39651 - 19968: jis0208<<14 | 0x50<<7 | 0x56, + 39652 - 19968: jis0212<<14 | 0x48<<7 | 0x4E, + 39653 - 19968: jis0212<<14 | 0x48<<7 | 0x4F, + 39654 - 19968: jis0208<<14 | 0x50<<7 | 0x57, + 39655 - 19968: jis0212<<14 | 0x48<<7 | 0x50, + 39657 - 19968: jis0212<<14 | 0x48<<7 | 0x51, + 39658 - 19968: jis0208<<14 | 0x27<<7 | 0x10, + 39659 - 19968: jis0208<<14 | 0x50<<7 | 0x59, + 39660 - 19968: jis0212<<14 | 0x48<<7 | 0x52, + 39661 - 19968: jis0208<<14 | 0x28<<7 | 0x05, + 39662 - 19968: jis0208<<14 | 0x50<<7 | 0x5A, + 39663 - 19968: jis0208<<14 | 0x50<<7 | 0x58, + 39665 - 19968: jis0208<<14 | 0x50<<7 | 0x5C, + 39666 - 19968: jis0212<<14 | 0x48<<7 | 0x53, + 39667 - 19968: jis0212<<14 | 0x48<<7 | 0x54, + 39668 - 19968: jis0208<<14 | 0x50<<7 | 0x5B, + 39669 - 19968: jis0212<<14 | 0x48<<7 | 0x55, + 39671 - 19968: jis0208<<14 | 0x50<<7 | 0x5D, + 39673 - 19968: jis0212<<14 | 0x48<<7 | 0x56, + 39674 - 19968: jis0212<<14 | 0x48<<7 | 0x57, + 39675 - 19968: jis0208<<14 | 0x51<<7 | 0x00, + 39677 - 19968: jis0212<<14 | 0x48<<7 | 0x58, + 39679 - 19968: jis0212<<14 | 0x48<<7 | 0x59, + 39680 - 19968: jis0212<<14 | 0x48<<7 | 0x5A, + 39681 - 19968: jis0212<<14 | 0x48<<7 | 0x5B, + 39682 - 19968: jis0212<<14 | 0x48<<7 | 0x5C, + 39683 - 19968: jis0212<<14 | 0x48<<7 | 0x5D, + 39684 - 19968: jis0212<<14 | 0x49<<7 | 0x00, + 39685 - 19968: jis0212<<14 | 0x49<<7 | 0x01, + 39686 - 19968: jis0208<<14 | 0x51<<7 | 0x01, + 39688 - 19968: jis0212<<14 | 0x49<<7 | 0x02, + 39689 - 19968: jis0212<<14 | 0x49<<7 | 0x03, + 39691 - 19968: jis0212<<14 | 0x49<<7 | 0x04, + 39692 - 19968: jis0212<<14 | 0x49<<7 | 0x05, + 39693 - 19968: jis0212<<14 | 0x49<<7 | 0x06, + 39694 - 19968: jis0212<<14 | 0x49<<7 | 0x07, + 39696 - 19968: jis0212<<14 | 0x49<<7 | 0x08, + 39698 - 19968: jis0212<<14 | 0x49<<7 | 0x09, + 39702 - 19968: jis0212<<14 | 0x49<<7 | 0x0A, + 39704 - 19968: jis0208<<14 | 0x51<<7 | 0x02, + 39705 - 19968: jis0212<<14 | 0x49<<7 | 0x0B, + 39706 - 19968: jis0208<<14 | 0x51<<7 | 0x03, + 39707 - 19968: jis0212<<14 | 0x49<<7 | 0x0C, + 39708 - 19968: jis0212<<14 | 0x49<<7 | 0x0D, + 39711 - 19968: jis0208<<14 | 0x51<<7 | 0x04, + 39712 - 19968: jis0212<<14 | 0x49<<7 | 0x0E, + 39714 - 19968: jis0208<<14 | 0x51<<7 | 0x05, + 39715 - 19968: jis0208<<14 | 0x51<<7 | 0x06, + 39717 - 19968: jis0208<<14 | 0x51<<7 | 0x07, + 39718 - 19968: jis0212<<14 | 0x49<<7 | 0x0F, + 39719 - 19968: jis0208<<14 | 0x51<<7 | 0x08, + 39720 - 19968: jis0208<<14 | 0x51<<7 | 0x09, + 39721 - 19968: jis0208<<14 | 0x51<<7 | 0x0A, + 39722 - 19968: jis0208<<14 | 0x51<<7 | 0x0B, + 39723 - 19968: jis0212<<14 | 0x49<<7 | 0x10, + 39725 - 19968: jis0212<<14 | 0x49<<7 | 0x11, + 39726 - 19968: jis0208<<14 | 0x51<<7 | 0x0C, + 39727 - 19968: jis0208<<14 | 0x51<<7 | 0x0D, + 39729 - 19968: jis0208<<14 | 0x3C<<7 | 0x14, + 39730 - 19968: jis0208<<14 | 0x51<<7 | 0x0E, + 39731 - 19968: jis0212<<14 | 0x49<<7 | 0x12, + 39732 - 19968: jis0212<<14 | 0x49<<7 | 0x13, + 39733 - 19968: jis0212<<14 | 0x49<<7 | 0x14, + 39735 - 19968: jis0212<<14 | 0x49<<7 | 0x15, + 39737 - 19968: jis0212<<14 | 0x49<<7 | 0x16, + 39738 - 19968: jis0212<<14 | 0x49<<7 | 0x17, + 39739 - 19968: jis0208<<14 | 0x43<<7 | 0x57, + 39740 - 19968: jis0208<<14 | 0x14<<7 | 0x13, + 39741 - 19968: jis0212<<14 | 0x49<<7 | 0x18, + 39745 - 19968: jis0208<<14 | 0x12<<7 | 0x00, + 39746 - 19968: jis0208<<14 | 0x19<<7 | 0x11, + 39747 - 19968: jis0208<<14 | 0x51<<7 | 0x10, + 39748 - 19968: jis0208<<14 | 0x51<<7 | 0x0F, + 39749 - 19968: jis0208<<14 | 0x2B<<7 | 0x04, + 39752 - 19968: jis0212<<14 | 0x49<<7 | 0x19, + 39755 - 19968: jis0212<<14 | 0x49<<7 | 0x1A, + 39756 - 19968: jis0212<<14 | 0x49<<7 | 0x1B, + 39757 - 19968: jis0208<<14 | 0x51<<7 | 0x12, + 39758 - 19968: jis0208<<14 | 0x51<<7 | 0x13, + 39759 - 19968: jis0208<<14 | 0x51<<7 | 0x11, + 39761 - 19968: jis0208<<14 | 0x51<<7 | 0x14, + 39764 - 19968: jis0208<<14 | 0x2A<<7 | 0x41, + 39765 - 19968: jis0212<<14 | 0x49<<7 | 0x1C, + 39766 - 19968: jis0212<<14 | 0x49<<7 | 0x1D, + 39767 - 19968: jis0212<<14 | 0x49<<7 | 0x1E, + 39768 - 19968: jis0208<<14 | 0x51<<7 | 0x15, + 39770 - 19968: jis0208<<14 | 0x14<<7 | 0x5A, + 39771 - 19968: jis0212<<14 | 0x49<<7 | 0x1F, + 39774 - 19968: jis0212<<14 | 0x49<<7 | 0x20, + 39777 - 19968: jis0212<<14 | 0x49<<7 | 0x21, + 39779 - 19968: jis0212<<14 | 0x49<<7 | 0x22, + 39781 - 19968: jis0212<<14 | 0x49<<7 | 0x23, + 39782 - 19968: jis0212<<14 | 0x49<<7 | 0x24, + 39784 - 19968: jis0212<<14 | 0x49<<7 | 0x25, + 39786 - 19968: jis0212<<14 | 0x49<<7 | 0x26, + 39787 - 19968: jis0212<<14 | 0x49<<7 | 0x27, + 39788 - 19968: jis0212<<14 | 0x49<<7 | 0x28, + 39789 - 19968: jis0212<<14 | 0x49<<7 | 0x29, + 39790 - 19968: jis0212<<14 | 0x49<<7 | 0x2A, + 39791 - 19968: jis0208<<14 | 0x2E<<7 | 0x04, + 39794 - 19968: jis0208<<14 | 0x5B<<7 | 0x44, + 39795 - 19968: jis0212<<14 | 0x49<<7 | 0x2B, + 39796 - 19968: jis0208<<14 | 0x51<<7 | 0x16, + 39797 - 19968: jis0208<<14 | 0x5B<<7 | 0x43, + 39799 - 19968: jis0212<<14 | 0x49<<7 | 0x2D, + 39800 - 19968: jis0212<<14 | 0x49<<7 | 0x2E, + 39801 - 19968: jis0212<<14 | 0x49<<7 | 0x2F, + 39807 - 19968: jis0212<<14 | 0x49<<7 | 0x30, + 39808 - 19968: jis0212<<14 | 0x49<<7 | 0x31, + 39811 - 19968: jis0208<<14 | 0x51<<7 | 0x18, + 39812 - 19968: jis0212<<14 | 0x49<<7 | 0x32, + 39813 - 19968: jis0212<<14 | 0x49<<7 | 0x33, + 39814 - 19968: jis0212<<14 | 0x49<<7 | 0x34, + 39815 - 19968: jis0212<<14 | 0x49<<7 | 0x35, + 39817 - 19968: jis0212<<14 | 0x49<<7 | 0x36, + 39818 - 19968: jis0212<<14 | 0x49<<7 | 0x37, + 39819 - 19968: jis0212<<14 | 0x49<<7 | 0x38, + 39821 - 19968: jis0212<<14 | 0x49<<7 | 0x39, + 39822 - 19968: jis0208<<14 | 0x0F<<7 | 0x1D, + 39823 - 19968: jis0208<<14 | 0x5B<<7 | 0x45, + 39824 - 19968: jis0212<<14 | 0x49<<7 | 0x3B, + 39825 - 19968: jis0208<<14 | 0x51<<7 | 0x19, + 39826 - 19968: jis0208<<14 | 0x29<<7 | 0x0A, + 39827 - 19968: jis0208<<14 | 0x51<<7 | 0x17, + 39828 - 19968: jis0212<<14 | 0x49<<7 | 0x3C, + 39830 - 19968: jis0208<<14 | 0x51<<7 | 0x1A, + 39831 - 19968: jis0208<<14 | 0x51<<7 | 0x1B, + 39834 - 19968: jis0212<<14 | 0x49<<7 | 0x3D, + 39837 - 19968: jis0212<<14 | 0x49<<7 | 0x3E, + 39838 - 19968: jis0212<<14 | 0x49<<7 | 0x3F, + 39839 - 19968: jis0208<<14 | 0x51<<7 | 0x1C, + 39840 - 19968: jis0208<<14 | 0x51<<7 | 0x1D, + 39846 - 19968: jis0212<<14 | 0x49<<7 | 0x40, + 39847 - 19968: jis0212<<14 | 0x49<<7 | 0x41, + 39848 - 19968: jis0208<<14 | 0x51<<7 | 0x1E, + 39849 - 19968: jis0212<<14 | 0x49<<7 | 0x42, + 39850 - 19968: jis0208<<14 | 0x2A<<7 | 0x4D, + 39851 - 19968: jis0208<<14 | 0x1A<<7 | 0x0C, + 39852 - 19968: jis0212<<14 | 0x49<<7 | 0x43, + 39853 - 19968: jis0208<<14 | 0x19<<7 | 0x59, + 39854 - 19968: jis0208<<14 | 0x20<<7 | 0x0E, + 39856 - 19968: jis0212<<14 | 0x49<<7 | 0x44, + 39857 - 19968: jis0208<<14 | 0x5B<<7 | 0x46, + 39858 - 19968: jis0212<<14 | 0x49<<7 | 0x46, + 39860 - 19968: jis0208<<14 | 0x51<<7 | 0x1F, + 39863 - 19968: jis0212<<14 | 0x49<<7 | 0x47, + 39864 - 19968: jis0212<<14 | 0x49<<7 | 0x48, + 39865 - 19968: jis0208<<14 | 0x51<<7 | 0x22, + 39867 - 19968: jis0208<<14 | 0x5B<<7 | 0x47, + 39868 - 19968: jis0212<<14 | 0x49<<7 | 0x4A, + 39870 - 19968: jis0212<<14 | 0x49<<7 | 0x4B, + 39871 - 19968: jis0212<<14 | 0x49<<7 | 0x4C, + 39872 - 19968: jis0208<<14 | 0x51<<7 | 0x20, + 39873 - 19968: jis0212<<14 | 0x49<<7 | 0x4D, + 39878 - 19968: jis0208<<14 | 0x51<<7 | 0x23, + 39879 - 19968: jis0212<<14 | 0x49<<7 | 0x4E, + 39880 - 19968: jis0212<<14 | 0x49<<7 | 0x4F, + 39881 - 19968: jis0208<<14 | 0x17<<7 | 0x50, + 39882 - 19968: jis0208<<14 | 0x51<<7 | 0x21, + 39886 - 19968: jis0212<<14 | 0x49<<7 | 0x50, + 39887 - 19968: jis0208<<14 | 0x51<<7 | 0x24, + 39888 - 19968: jis0212<<14 | 0x49<<7 | 0x51, + 39889 - 19968: jis0208<<14 | 0x51<<7 | 0x25, + 39890 - 19968: jis0208<<14 | 0x51<<7 | 0x26, + 39892 - 19968: jis0208<<14 | 0x51<<7 | 0x2A, + 39894 - 19968: jis0208<<14 | 0x1A<<7 | 0x09, + 39895 - 19968: jis0212<<14 | 0x49<<7 | 0x52, + 39896 - 19968: jis0212<<14 | 0x49<<7 | 0x53, + 39899 - 19968: jis0208<<14 | 0x21<<7 | 0x43, + 39901 - 19968: jis0212<<14 | 0x49<<7 | 0x54, + 39903 - 19968: jis0212<<14 | 0x49<<7 | 0x55, + 39905 - 19968: jis0208<<14 | 0x51<<7 | 0x2B, + 39906 - 19968: jis0208<<14 | 0x51<<7 | 0x28, + 39907 - 19968: jis0208<<14 | 0x51<<7 | 0x27, + 39908 - 19968: jis0208<<14 | 0x51<<7 | 0x29, + 39909 - 19968: jis0212<<14 | 0x49<<7 | 0x56, + 39911 - 19968: jis0212<<14 | 0x49<<7 | 0x57, + 39912 - 19968: jis0208<<14 | 0x16<<7 | 0x3E, + 39914 - 19968: jis0212<<14 | 0x49<<7 | 0x58, + 39915 - 19968: jis0212<<14 | 0x49<<7 | 0x59, + 39919 - 19968: jis0212<<14 | 0x49<<7 | 0x5A, + 39920 - 19968: jis0208<<14 | 0x51<<7 | 0x2F, + 39921 - 19968: jis0208<<14 | 0x51<<7 | 0x2E, + 39922 - 19968: jis0208<<14 | 0x51<<7 | 0x2D, + 39923 - 19968: jis0212<<14 | 0x49<<7 | 0x5B, + 39925 - 19968: jis0208<<14 | 0x0F<<7 | 0x12, + 39927 - 19968: jis0212<<14 | 0x49<<7 | 0x5C, + 39928 - 19968: jis0212<<14 | 0x49<<7 | 0x5D, + 39929 - 19968: jis0212<<14 | 0x4A<<7 | 0x00, + 39930 - 19968: jis0212<<14 | 0x4A<<7 | 0x01, + 39933 - 19968: jis0212<<14 | 0x4A<<7 | 0x02, + 39935 - 19968: jis0212<<14 | 0x4A<<7 | 0x03, + 39936 - 19968: jis0208<<14 | 0x5B<<7 | 0x48, + 39938 - 19968: jis0212<<14 | 0x4A<<7 | 0x05, + 39940 - 19968: jis0208<<14 | 0x51<<7 | 0x39, + 39942 - 19968: jis0208<<14 | 0x51<<7 | 0x35, + 39944 - 19968: jis0208<<14 | 0x51<<7 | 0x36, + 39945 - 19968: jis0208<<14 | 0x51<<7 | 0x32, + 39946 - 19968: jis0208<<14 | 0x51<<7 | 0x38, + 39947 - 19968: jis0212<<14 | 0x4A<<7 | 0x06, + 39948 - 19968: jis0208<<14 | 0x51<<7 | 0x34, + 39949 - 19968: jis0208<<14 | 0x12<<7 | 0x41, + 39951 - 19968: jis0212<<14 | 0x4A<<7 | 0x07, + 39952 - 19968: jis0208<<14 | 0x2E<<7 | 0x2B, + 39953 - 19968: jis0212<<14 | 0x4A<<7 | 0x08, + 39954 - 19968: jis0208<<14 | 0x51<<7 | 0x37, + 39955 - 19968: jis0208<<14 | 0x51<<7 | 0x33, + 39956 - 19968: jis0208<<14 | 0x51<<7 | 0x31, + 39957 - 19968: jis0208<<14 | 0x51<<7 | 0x30, + 39958 - 19968: jis0212<<14 | 0x4A<<7 | 0x09, + 39960 - 19968: jis0212<<14 | 0x4A<<7 | 0x0A, + 39961 - 19968: jis0212<<14 | 0x4A<<7 | 0x0B, + 39962 - 19968: jis0212<<14 | 0x4A<<7 | 0x0C, + 39963 - 19968: jis0208<<14 | 0x51<<7 | 0x3B, + 39964 - 19968: jis0212<<14 | 0x4A<<7 | 0x0D, + 39966 - 19968: jis0212<<14 | 0x4A<<7 | 0x0E, + 39969 - 19968: jis0208<<14 | 0x51<<7 | 0x3E, + 39970 - 19968: jis0212<<14 | 0x4A<<7 | 0x0F, + 39971 - 19968: jis0212<<14 | 0x4A<<7 | 0x10, + 39972 - 19968: jis0208<<14 | 0x51<<7 | 0x3D, + 39973 - 19968: jis0208<<14 | 0x51<<7 | 0x3C, + 39974 - 19968: jis0212<<14 | 0x4A<<7 | 0x11, + 39975 - 19968: jis0212<<14 | 0x4A<<7 | 0x12, + 39976 - 19968: jis0212<<14 | 0x4A<<7 | 0x13, + 39977 - 19968: jis0212<<14 | 0x4A<<7 | 0x14, + 39978 - 19968: jis0212<<14 | 0x4A<<7 | 0x15, + 39981 - 19968: jis0208<<14 | 0x28<<7 | 0x28, + 39982 - 19968: jis0208<<14 | 0x51<<7 | 0x3A, + 39983 - 19968: jis0208<<14 | 0x0F<<7 | 0x52, + 39984 - 19968: jis0208<<14 | 0x51<<7 | 0x3F, + 39985 - 19968: jis0212<<14 | 0x4A<<7 | 0x16, + 39986 - 19968: jis0208<<14 | 0x51<<7 | 0x41, + 39989 - 19968: jis0212<<14 | 0x4A<<7 | 0x17, + 39990 - 19968: jis0212<<14 | 0x4A<<7 | 0x18, + 39991 - 19968: jis0212<<14 | 0x4A<<7 | 0x19, + 39993 - 19968: jis0208<<14 | 0x12<<7 | 0x4E, + 39994 - 19968: jis0208<<14 | 0x51<<7 | 0x2C, + 39995 - 19968: jis0208<<14 | 0x10<<7 | 0x16, + 39997 - 19968: jis0212<<14 | 0x4A<<7 | 0x1A, + 39998 - 19968: jis0208<<14 | 0x51<<7 | 0x43, + 40001 - 19968: jis0212<<14 | 0x4A<<7 | 0x1B, + 40003 - 19968: jis0212<<14 | 0x4A<<7 | 0x1C, + 40004 - 19968: jis0212<<14 | 0x4A<<7 | 0x1D, + 40005 - 19968: jis0212<<14 | 0x4A<<7 | 0x1E, + 40006 - 19968: jis0208<<14 | 0x51<<7 | 0x42, + 40007 - 19968: jis0208<<14 | 0x51<<7 | 0x40, + 40008 - 19968: jis0208<<14 | 0x22<<7 | 0x0C, + 40009 - 19968: jis0212<<14 | 0x4A<<7 | 0x1F, + 40010 - 19968: jis0212<<14 | 0x4A<<7 | 0x20, + 40014 - 19968: jis0212<<14 | 0x4A<<7 | 0x21, + 40015 - 19968: jis0212<<14 | 0x4A<<7 | 0x22, + 40016 - 19968: jis0212<<14 | 0x4A<<7 | 0x23, + 40018 - 19968: jis0208<<14 | 0x2A<<7 | 0x4F, + 40019 - 19968: jis0212<<14 | 0x4A<<7 | 0x24, + 40020 - 19968: jis0212<<14 | 0x4A<<7 | 0x25, + 40022 - 19968: jis0212<<14 | 0x4A<<7 | 0x26, + 40023 - 19968: jis0208<<14 | 0x2D<<7 | 0x39, + 40024 - 19968: jis0212<<14 | 0x4A<<7 | 0x27, + 40026 - 19968: jis0208<<14 | 0x51<<7 | 0x44, + 40027 - 19968: jis0212<<14 | 0x4A<<7 | 0x28, + 40028 - 19968: jis0212<<14 | 0x4A<<7 | 0x2F, + 40029 - 19968: jis0212<<14 | 0x4A<<7 | 0x29, + 40030 - 19968: jis0212<<14 | 0x4A<<7 | 0x2A, + 40031 - 19968: jis0212<<14 | 0x4A<<7 | 0x2B, + 40032 - 19968: jis0208<<14 | 0x51<<7 | 0x45, + 40035 - 19968: jis0212<<14 | 0x4A<<7 | 0x2C, + 40039 - 19968: jis0208<<14 | 0x51<<7 | 0x46, + 40040 - 19968: jis0212<<14 | 0x4A<<7 | 0x31, + 40041 - 19968: jis0212<<14 | 0x4A<<7 | 0x2D, + 40042 - 19968: jis0212<<14 | 0x4A<<7 | 0x2E, + 40043 - 19968: jis0212<<14 | 0x4A<<7 | 0x30, + 40046 - 19968: jis0212<<14 | 0x4A<<7 | 0x32, + 40048 - 19968: jis0212<<14 | 0x4A<<7 | 0x33, + 40050 - 19968: jis0212<<14 | 0x4A<<7 | 0x34, + 40053 - 19968: jis0212<<14 | 0x4A<<7 | 0x35, + 40054 - 19968: jis0208<<14 | 0x51<<7 | 0x47, + 40055 - 19968: jis0212<<14 | 0x4A<<7 | 0x36, + 40056 - 19968: jis0208<<14 | 0x51<<7 | 0x48, + 40059 - 19968: jis0212<<14 | 0x4A<<7 | 0x37, + 40165 - 19968: jis0208<<14 | 0x23<<7 | 0x1A, + 40166 - 19968: jis0212<<14 | 0x4A<<7 | 0x38, + 40167 - 19968: jis0208<<14 | 0x51<<7 | 0x49, + 40169 - 19968: jis0208<<14 | 0x27<<7 | 0x16, + 40171 - 19968: jis0208<<14 | 0x51<<7 | 0x4E, + 40172 - 19968: jis0208<<14 | 0x51<<7 | 0x4A, + 40176 - 19968: jis0208<<14 | 0x51<<7 | 0x4B, + 40178 - 19968: jis0212<<14 | 0x4A<<7 | 0x39, + 40179 - 19968: jis0208<<14 | 0x2A<<7 | 0x10, + 40180 - 19968: jis0208<<14 | 0x2B<<7 | 0x23, + 40182 - 19968: jis0208<<14 | 0x25<<7 | 0x2F, + 40183 - 19968: jis0212<<14 | 0x4A<<7 | 0x3A, + 40185 - 19968: jis0212<<14 | 0x4A<<7 | 0x3B, + 40194 - 19968: jis0212<<14 | 0x4A<<7 | 0x3D, + 40195 - 19968: jis0208<<14 | 0x51<<7 | 0x4F, + 40198 - 19968: jis0208<<14 | 0x51<<7 | 0x50, + 40199 - 19968: jis0208<<14 | 0x25<<7 | 0x1D, + 40200 - 19968: jis0208<<14 | 0x51<<7 | 0x4D, + 40201 - 19968: jis0208<<14 | 0x51<<7 | 0x4C, + 40203 - 19968: jis0212<<14 | 0x4A<<7 | 0x3C, + 40206 - 19968: jis0208<<14 | 0x11<<7 | 0x09, + 40209 - 19968: jis0212<<14 | 0x4A<<7 | 0x3E, + 40210 - 19968: jis0208<<14 | 0x51<<7 | 0x58, + 40213 - 19968: jis0208<<14 | 0x51<<7 | 0x57, + 40215 - 19968: jis0212<<14 | 0x4A<<7 | 0x3F, + 40216 - 19968: jis0212<<14 | 0x4A<<7 | 0x40, + 40219 - 19968: jis0208<<14 | 0x10<<7 | 0x54, + 40220 - 19968: jis0212<<14 | 0x4A<<7 | 0x41, + 40221 - 19968: jis0212<<14 | 0x4A<<7 | 0x42, + 40222 - 19968: jis0212<<14 | 0x4A<<7 | 0x43, + 40223 - 19968: jis0208<<14 | 0x51<<7 | 0x55, + 40227 - 19968: jis0208<<14 | 0x51<<7 | 0x54, + 40230 - 19968: jis0208<<14 | 0x51<<7 | 0x52, + 40232 - 19968: jis0208<<14 | 0x12<<7 | 0x5A, + 40234 - 19968: jis0208<<14 | 0x51<<7 | 0x51, + 40235 - 19968: jis0208<<14 | 0x1B<<7 | 0x11, + 40236 - 19968: jis0208<<14 | 0x11<<7 | 0x08, + 40239 - 19968: jis0212<<14 | 0x4A<<7 | 0x44, + 40240 - 19968: jis0212<<14 | 0x4A<<7 | 0x45, + 40242 - 19968: jis0212<<14 | 0x4A<<7 | 0x46, + 40243 - 19968: jis0212<<14 | 0x4A<<7 | 0x47, + 40244 - 19968: jis0212<<14 | 0x4A<<7 | 0x48, + 40250 - 19968: jis0212<<14 | 0x4A<<7 | 0x49, + 40251 - 19968: jis0208<<14 | 0x18<<7 | 0x42, + 40252 - 19968: jis0212<<14 | 0x4A<<7 | 0x4A, + 40253 - 19968: jis0212<<14 | 0x4A<<7 | 0x4C, + 40254 - 19968: jis0208<<14 | 0x51<<7 | 0x5B, + 40255 - 19968: jis0208<<14 | 0x51<<7 | 0x5A, + 40257 - 19968: jis0208<<14 | 0x51<<7 | 0x59, + 40258 - 19968: jis0212<<14 | 0x4A<<7 | 0x4D, + 40259 - 19968: jis0212<<14 | 0x4A<<7 | 0x4E, + 40260 - 19968: jis0208<<14 | 0x51<<7 | 0x56, + 40261 - 19968: jis0212<<14 | 0x4A<<7 | 0x4B, + 40262 - 19968: jis0208<<14 | 0x51<<7 | 0x5C, + 40263 - 19968: jis0212<<14 | 0x4A<<7 | 0x4F, + 40264 - 19968: jis0208<<14 | 0x51<<7 | 0x5D, + 40266 - 19968: jis0212<<14 | 0x4A<<7 | 0x50, + 40272 - 19968: jis0208<<14 | 0x52<<7 | 0x04, + 40273 - 19968: jis0208<<14 | 0x52<<7 | 0x03, + 40275 - 19968: jis0212<<14 | 0x4A<<7 | 0x51, + 40276 - 19968: jis0212<<14 | 0x4A<<7 | 0x52, + 40281 - 19968: jis0208<<14 | 0x52<<7 | 0x05, + 40284 - 19968: jis0208<<14 | 0x10<<7 | 0x0C, + 40285 - 19968: jis0208<<14 | 0x52<<7 | 0x00, + 40286 - 19968: jis0208<<14 | 0x52<<7 | 0x01, + 40287 - 19968: jis0212<<14 | 0x4A<<7 | 0x53, + 40288 - 19968: jis0208<<14 | 0x18<<7 | 0x53, + 40289 - 19968: jis0208<<14 | 0x2B<<7 | 0x18, + 40290 - 19968: jis0212<<14 | 0x4A<<7 | 0x55, + 40291 - 19968: jis0212<<14 | 0x4A<<7 | 0x54, + 40292 - 19968: jis0208<<14 | 0x52<<7 | 0x02, + 40293 - 19968: jis0212<<14 | 0x4A<<7 | 0x56, + 40297 - 19968: jis0212<<14 | 0x4A<<7 | 0x57, + 40298 - 19968: jis0212<<14 | 0x4A<<7 | 0x58, + 40299 - 19968: jis0208<<14 | 0x5B<<7 | 0x4A, + 40300 - 19968: jis0208<<14 | 0x2A<<7 | 0x11, + 40303 - 19968: jis0208<<14 | 0x52<<7 | 0x0A, + 40304 - 19968: jis0208<<14 | 0x5B<<7 | 0x49, + 40306 - 19968: jis0208<<14 | 0x52<<7 | 0x06, + 40310 - 19968: jis0212<<14 | 0x4A<<7 | 0x5B, + 40311 - 19968: jis0212<<14 | 0x4A<<7 | 0x5C, + 40314 - 19968: jis0208<<14 | 0x52<<7 | 0x0B, + 40315 - 19968: jis0212<<14 | 0x4A<<7 | 0x5D, + 40316 - 19968: jis0212<<14 | 0x4B<<7 | 0x00, + 40318 - 19968: jis0212<<14 | 0x4B<<7 | 0x01, + 40323 - 19968: jis0212<<14 | 0x4B<<7 | 0x02, + 40324 - 19968: jis0212<<14 | 0x4B<<7 | 0x03, + 40326 - 19968: jis0212<<14 | 0x4B<<7 | 0x04, + 40327 - 19968: jis0208<<14 | 0x52<<7 | 0x08, + 40329 - 19968: jis0208<<14 | 0x52<<7 | 0x07, + 40330 - 19968: jis0212<<14 | 0x4B<<7 | 0x05, + 40333 - 19968: jis0212<<14 | 0x4B<<7 | 0x06, + 40334 - 19968: jis0212<<14 | 0x4B<<7 | 0x07, + 40335 - 19968: jis0208<<14 | 0x16<<7 | 0x3B, + 40338 - 19968: jis0212<<14 | 0x4B<<7 | 0x08, + 40339 - 19968: jis0212<<14 | 0x4B<<7 | 0x09, + 40341 - 19968: jis0212<<14 | 0x4B<<7 | 0x0A, + 40342 - 19968: jis0212<<14 | 0x4B<<7 | 0x0B, + 40343 - 19968: jis0212<<14 | 0x4B<<7 | 0x0C, + 40344 - 19968: jis0212<<14 | 0x4B<<7 | 0x0D, + 40346 - 19968: jis0208<<14 | 0x52<<7 | 0x0C, + 40353 - 19968: jis0212<<14 | 0x4B<<7 | 0x0E, + 40356 - 19968: jis0208<<14 | 0x52<<7 | 0x0D, + 40361 - 19968: jis0208<<14 | 0x52<<7 | 0x0E, + 40362 - 19968: jis0212<<14 | 0x4B<<7 | 0x0F, + 40363 - 19968: jis0208<<14 | 0x52<<7 | 0x09, + 40364 - 19968: jis0212<<14 | 0x4B<<7 | 0x10, + 40366 - 19968: jis0212<<14 | 0x4B<<7 | 0x11, + 40367 - 19968: jis0208<<14 | 0x51<<7 | 0x53, + 40369 - 19968: jis0212<<14 | 0x4B<<7 | 0x12, + 40370 - 19968: jis0208<<14 | 0x52<<7 | 0x0F, + 40372 - 19968: jis0208<<14 | 0x23<<7 | 0x40, + 40373 - 19968: jis0212<<14 | 0x4B<<7 | 0x13, + 40376 - 19968: jis0208<<14 | 0x52<<7 | 0x13, + 40377 - 19968: jis0212<<14 | 0x4B<<7 | 0x14, + 40378 - 19968: jis0208<<14 | 0x52<<7 | 0x14, + 40379 - 19968: jis0208<<14 | 0x52<<7 | 0x12, + 40380 - 19968: jis0212<<14 | 0x4B<<7 | 0x15, + 40383 - 19968: jis0212<<14 | 0x4B<<7 | 0x16, + 40385 - 19968: jis0208<<14 | 0x52<<7 | 0x11, + 40386 - 19968: jis0208<<14 | 0x52<<7 | 0x17, + 40387 - 19968: jis0212<<14 | 0x4B<<7 | 0x17, + 40388 - 19968: jis0208<<14 | 0x52<<7 | 0x10, + 40390 - 19968: jis0208<<14 | 0x52<<7 | 0x15, + 40391 - 19968: jis0212<<14 | 0x4B<<7 | 0x18, + 40393 - 19968: jis0212<<14 | 0x4B<<7 | 0x19, + 40394 - 19968: jis0212<<14 | 0x4B<<7 | 0x1A, + 40399 - 19968: jis0208<<14 | 0x52<<7 | 0x16, + 40403 - 19968: jis0208<<14 | 0x52<<7 | 0x19, + 40404 - 19968: jis0212<<14 | 0x4B<<7 | 0x1B, + 40405 - 19968: jis0212<<14 | 0x4B<<7 | 0x1C, + 40406 - 19968: jis0212<<14 | 0x4B<<7 | 0x1D, + 40407 - 19968: jis0212<<14 | 0x4B<<7 | 0x1E, + 40409 - 19968: jis0208<<14 | 0x52<<7 | 0x18, + 40410 - 19968: jis0212<<14 | 0x4B<<7 | 0x1F, + 40414 - 19968: jis0212<<14 | 0x4B<<7 | 0x20, + 40415 - 19968: jis0212<<14 | 0x4B<<7 | 0x21, + 40416 - 19968: jis0212<<14 | 0x4B<<7 | 0x22, + 40421 - 19968: jis0212<<14 | 0x4B<<7 | 0x23, + 40422 - 19968: jis0208<<14 | 0x52<<7 | 0x1B, + 40423 - 19968: jis0212<<14 | 0x4B<<7 | 0x24, + 40425 - 19968: jis0212<<14 | 0x4B<<7 | 0x25, + 40427 - 19968: jis0212<<14 | 0x4B<<7 | 0x26, + 40429 - 19968: jis0208<<14 | 0x52<<7 | 0x1C, + 40430 - 19968: jis0212<<14 | 0x4B<<7 | 0x27, + 40431 - 19968: jis0208<<14 | 0x52<<7 | 0x1D, + 40432 - 19968: jis0212<<14 | 0x4B<<7 | 0x28, + 40434 - 19968: jis0208<<14 | 0x2E<<7 | 0x28, + 40435 - 19968: jis0212<<14 | 0x4B<<7 | 0x29, + 40436 - 19968: jis0212<<14 | 0x4B<<7 | 0x2A, + 40440 - 19968: jis0208<<14 | 0x52<<7 | 0x1A, + 40441 - 19968: jis0208<<14 | 0x21<<7 | 0x4A, + 40442 - 19968: jis0208<<14 | 0x19<<7 | 0x4C, + 40445 - 19968: jis0208<<14 | 0x52<<7 | 0x1E, + 40446 - 19968: jis0212<<14 | 0x4B<<7 | 0x2B, + 40450 - 19968: jis0212<<14 | 0x4B<<7 | 0x2D, + 40455 - 19968: jis0212<<14 | 0x4B<<7 | 0x2E, + 40458 - 19968: jis0212<<14 | 0x4B<<7 | 0x2C, + 40462 - 19968: jis0212<<14 | 0x4B<<7 | 0x2F, + 40464 - 19968: jis0212<<14 | 0x4B<<7 | 0x30, + 40465 - 19968: jis0212<<14 | 0x4B<<7 | 0x31, + 40466 - 19968: jis0212<<14 | 0x4B<<7 | 0x32, + 40469 - 19968: jis0212<<14 | 0x4B<<7 | 0x33, + 40470 - 19968: jis0212<<14 | 0x4B<<7 | 0x34, + 40473 - 19968: jis0208<<14 | 0x5B<<7 | 0x4C, + 40474 - 19968: jis0208<<14 | 0x52<<7 | 0x1F, + 40475 - 19968: jis0208<<14 | 0x52<<7 | 0x20, + 40476 - 19968: jis0212<<14 | 0x4B<<7 | 0x36, + 40477 - 19968: jis0212<<14 | 0x4B<<7 | 0x37, + 40478 - 19968: jis0208<<14 | 0x52<<7 | 0x21, + 40565 - 19968: jis0208<<14 | 0x52<<7 | 0x22, + 40568 - 19968: jis0208<<14 | 0x17<<7 | 0x13, + 40569 - 19968: jis0208<<14 | 0x52<<7 | 0x23, + 40570 - 19968: jis0212<<14 | 0x4B<<7 | 0x38, + 40571 - 19968: jis0212<<14 | 0x4B<<7 | 0x39, + 40572 - 19968: jis0212<<14 | 0x4B<<7 | 0x3A, + 40573 - 19968: jis0208<<14 | 0x52<<7 | 0x24, + 40575 - 19968: jis0208<<14 | 0x1B<<7 | 0x0E, + 40576 - 19968: jis0212<<14 | 0x4B<<7 | 0x3B, + 40577 - 19968: jis0208<<14 | 0x52<<7 | 0x25, + 40578 - 19968: jis0212<<14 | 0x4B<<7 | 0x3C, + 40579 - 19968: jis0212<<14 | 0x4B<<7 | 0x3D, + 40580 - 19968: jis0212<<14 | 0x4B<<7 | 0x3E, + 40581 - 19968: jis0212<<14 | 0x4B<<7 | 0x3F, + 40583 - 19968: jis0212<<14 | 0x4B<<7 | 0x40, + 40584 - 19968: jis0208<<14 | 0x52<<7 | 0x26, + 40587 - 19968: jis0208<<14 | 0x52<<7 | 0x27, + 40588 - 19968: jis0208<<14 | 0x52<<7 | 0x28, + 40590 - 19968: jis0212<<14 | 0x4B<<7 | 0x41, + 40591 - 19968: jis0212<<14 | 0x4B<<7 | 0x42, + 40593 - 19968: jis0208<<14 | 0x52<<7 | 0x2B, + 40594 - 19968: jis0208<<14 | 0x52<<7 | 0x29, + 40595 - 19968: jis0208<<14 | 0x2E<<7 | 0x1B, + 40597 - 19968: jis0208<<14 | 0x52<<7 | 0x2A, + 40598 - 19968: jis0212<<14 | 0x4B<<7 | 0x43, + 40599 - 19968: jis0208<<14 | 0x2D<<7 | 0x4E, + 40600 - 19968: jis0212<<14 | 0x4B<<7 | 0x44, + 40603 - 19968: jis0212<<14 | 0x4B<<7 | 0x45, + 40605 - 19968: jis0208<<14 | 0x52<<7 | 0x2C, + 40606 - 19968: jis0212<<14 | 0x4B<<7 | 0x46, + 40607 - 19968: jis0208<<14 | 0x2D<<7 | 0x3A, + 40612 - 19968: jis0212<<14 | 0x4B<<7 | 0x47, + 40613 - 19968: jis0208<<14 | 0x52<<7 | 0x2D, + 40614 - 19968: jis0208<<14 | 0x26<<7 | 0x5D, + 40616 - 19968: jis0212<<14 | 0x4B<<7 | 0x48, + 40617 - 19968: jis0208<<14 | 0x52<<7 | 0x2E, + 40618 - 19968: jis0208<<14 | 0x52<<7 | 0x30, + 40620 - 19968: jis0212<<14 | 0x4B<<7 | 0x49, + 40621 - 19968: jis0208<<14 | 0x52<<7 | 0x31, + 40622 - 19968: jis0212<<14 | 0x4B<<7 | 0x4A, + 40623 - 19968: jis0212<<14 | 0x4B<<7 | 0x4B, + 40624 - 19968: jis0212<<14 | 0x4B<<7 | 0x4C, + 40627 - 19968: jis0212<<14 | 0x4B<<7 | 0x4D, + 40628 - 19968: jis0212<<14 | 0x4B<<7 | 0x4E, + 40629 - 19968: jis0212<<14 | 0x4B<<7 | 0x4F, + 40632 - 19968: jis0208<<14 | 0x52<<7 | 0x2F, + 40633 - 19968: jis0208<<14 | 0x18<<7 | 0x4C, + 40634 - 19968: jis0208<<14 | 0x2B<<7 | 0x2C, + 40635 - 19968: jis0208<<14 | 0x2A<<7 | 0x42, + 40636 - 19968: jis0208<<14 | 0x35<<7 | 0x56, + 40638 - 19968: jis0208<<14 | 0x3C<<7 | 0x3F, + 40639 - 19968: jis0208<<14 | 0x2A<<7 | 0x5A, + 40644 - 19968: jis0208<<14 | 0x11<<7 | 0x0A, + 40646 - 19968: jis0212<<14 | 0x4B<<7 | 0x50, + 40648 - 19968: jis0212<<14 | 0x4B<<7 | 0x51, + 40651 - 19968: jis0212<<14 | 0x4B<<7 | 0x52, + 40652 - 19968: jis0208<<14 | 0x52<<7 | 0x33, + 40653 - 19968: jis0208<<14 | 0x14<<7 | 0x2F, + 40654 - 19968: jis0208<<14 | 0x52<<7 | 0x34, + 40655 - 19968: jis0208<<14 | 0x52<<7 | 0x35, + 40656 - 19968: jis0208<<14 | 0x52<<7 | 0x36, + 40657 - 19968: jis0208<<14 | 0x5B<<7 | 0x4D, + 40658 - 19968: jis0208<<14 | 0x18<<7 | 0x54, + 40660 - 19968: jis0208<<14 | 0x52<<7 | 0x37, + 40661 - 19968: jis0212<<14 | 0x4B<<7 | 0x53, + 40664 - 19968: jis0208<<14 | 0x3F<<7 | 0x33, + 40665 - 19968: jis0208<<14 | 0x2B<<7 | 0x3A, + 40667 - 19968: jis0208<<14 | 0x21<<7 | 0x42, + 40668 - 19968: jis0208<<14 | 0x52<<7 | 0x38, + 40669 - 19968: jis0208<<14 | 0x52<<7 | 0x3A, + 40670 - 19968: jis0208<<14 | 0x52<<7 | 0x39, + 40671 - 19968: jis0212<<14 | 0x4B<<7 | 0x54, + 40672 - 19968: jis0208<<14 | 0x52<<7 | 0x3B, + 40676 - 19968: jis0212<<14 | 0x4B<<7 | 0x55, + 40677 - 19968: jis0208<<14 | 0x52<<7 | 0x3C, + 40679 - 19968: jis0212<<14 | 0x4B<<7 | 0x56, + 40680 - 19968: jis0208<<14 | 0x52<<7 | 0x3D, + 40684 - 19968: jis0212<<14 | 0x4B<<7 | 0x57, + 40685 - 19968: jis0212<<14 | 0x4B<<7 | 0x58, + 40686 - 19968: jis0212<<14 | 0x4B<<7 | 0x59, + 40687 - 19968: jis0208<<14 | 0x52<<7 | 0x3E, + 40688 - 19968: jis0212<<14 | 0x4B<<7 | 0x5A, + 40689 - 19968: jis0212<<14 | 0x4B<<7 | 0x5B, + 40690 - 19968: jis0212<<14 | 0x4B<<7 | 0x5C, + 40692 - 19968: jis0208<<14 | 0x52<<7 | 0x3F, + 40693 - 19968: jis0212<<14 | 0x4B<<7 | 0x5D, + 40694 - 19968: jis0208<<14 | 0x52<<7 | 0x40, + 40695 - 19968: jis0208<<14 | 0x52<<7 | 0x41, + 40696 - 19968: jis0212<<14 | 0x4C<<7 | 0x00, + 40697 - 19968: jis0208<<14 | 0x52<<7 | 0x42, + 40699 - 19968: jis0208<<14 | 0x52<<7 | 0x43, + 40700 - 19968: jis0208<<14 | 0x52<<7 | 0x44, + 40701 - 19968: jis0208<<14 | 0x52<<7 | 0x45, + 40703 - 19968: jis0212<<14 | 0x4C<<7 | 0x01, + 40706 - 19968: jis0212<<14 | 0x4C<<7 | 0x02, + 40707 - 19968: jis0212<<14 | 0x4C<<7 | 0x03, + 40711 - 19968: jis0208<<14 | 0x52<<7 | 0x46, + 40712 - 19968: jis0208<<14 | 0x52<<7 | 0x47, + 40713 - 19968: jis0212<<14 | 0x4C<<7 | 0x04, + 40718 - 19968: jis0208<<14 | 0x24<<7 | 0x03, + 40719 - 19968: jis0212<<14 | 0x4C<<7 | 0x05, + 40720 - 19968: jis0212<<14 | 0x4C<<7 | 0x06, + 40721 - 19968: jis0212<<14 | 0x4C<<7 | 0x07, + 40722 - 19968: jis0212<<14 | 0x4C<<7 | 0x08, + 40723 - 19968: jis0208<<14 | 0x17<<7 | 0x3C, + 40724 - 19968: jis0212<<14 | 0x4C<<7 | 0x09, + 40725 - 19968: jis0208<<14 | 0x52<<7 | 0x49, + 40726 - 19968: jis0212<<14 | 0x4C<<7 | 0x0A, + 40727 - 19968: jis0212<<14 | 0x4C<<7 | 0x0B, + 40729 - 19968: jis0212<<14 | 0x4C<<7 | 0x0C, + 40730 - 19968: jis0212<<14 | 0x4C<<7 | 0x0D, + 40731 - 19968: jis0212<<14 | 0x4C<<7 | 0x0E, + 40735 - 19968: jis0212<<14 | 0x4C<<7 | 0x0F, + 40736 - 19968: jis0208<<14 | 0x20<<7 | 0x2C, + 40737 - 19968: jis0208<<14 | 0x52<<7 | 0x4A, + 40738 - 19968: jis0212<<14 | 0x4C<<7 | 0x10, + 40742 - 19968: jis0212<<14 | 0x4C<<7 | 0x11, + 40746 - 19968: jis0212<<14 | 0x4C<<7 | 0x12, + 40747 - 19968: jis0212<<14 | 0x4C<<7 | 0x13, + 40748 - 19968: jis0208<<14 | 0x52<<7 | 0x4B, + 40751 - 19968: jis0212<<14 | 0x4C<<7 | 0x14, + 40753 - 19968: jis0212<<14 | 0x4C<<7 | 0x15, + 40754 - 19968: jis0212<<14 | 0x4C<<7 | 0x16, + 40756 - 19968: jis0212<<14 | 0x4C<<7 | 0x17, + 40759 - 19968: jis0212<<14 | 0x4C<<7 | 0x18, + 40761 - 19968: jis0212<<14 | 0x4C<<7 | 0x19, + 40762 - 19968: jis0212<<14 | 0x4C<<7 | 0x1A, + 40763 - 19968: jis0208<<14 | 0x28<<7 | 0x00, + 40764 - 19968: jis0212<<14 | 0x4C<<7 | 0x1B, + 40765 - 19968: jis0212<<14 | 0x4C<<7 | 0x1C, + 40766 - 19968: jis0208<<14 | 0x52<<7 | 0x4C, + 40767 - 19968: jis0212<<14 | 0x4C<<7 | 0x1D, + 40769 - 19968: jis0212<<14 | 0x4C<<7 | 0x1E, + 40771 - 19968: jis0212<<14 | 0x4C<<7 | 0x1F, + 40772 - 19968: jis0212<<14 | 0x4C<<7 | 0x20, + 40773 - 19968: jis0212<<14 | 0x4C<<7 | 0x21, + 40774 - 19968: jis0212<<14 | 0x4C<<7 | 0x22, + 40775 - 19968: jis0212<<14 | 0x4C<<7 | 0x23, + 40778 - 19968: jis0208<<14 | 0x52<<7 | 0x4D, + 40779 - 19968: jis0208<<14 | 0x42<<7 | 0x16, + 40782 - 19968: jis0208<<14 | 0x4B<<7 | 0x39, + 40783 - 19968: jis0208<<14 | 0x4F<<7 | 0x4C, + 40786 - 19968: jis0208<<14 | 0x52<<7 | 0x4E, + 40787 - 19968: jis0212<<14 | 0x4C<<7 | 0x24, + 40788 - 19968: jis0208<<14 | 0x52<<7 | 0x4F, + 40789 - 19968: jis0212<<14 | 0x4C<<7 | 0x25, + 40790 - 19968: jis0212<<14 | 0x4C<<7 | 0x26, + 40791 - 19968: jis0212<<14 | 0x4C<<7 | 0x27, + 40792 - 19968: jis0212<<14 | 0x4C<<7 | 0x28, + 40794 - 19968: jis0212<<14 | 0x4C<<7 | 0x29, + 40797 - 19968: jis0212<<14 | 0x4C<<7 | 0x2A, + 40798 - 19968: jis0212<<14 | 0x4C<<7 | 0x2B, + 40799 - 19968: jis0208<<14 | 0x52<<7 | 0x51, + 40800 - 19968: jis0208<<14 | 0x52<<7 | 0x52, + 40801 - 19968: jis0208<<14 | 0x52<<7 | 0x53, + 40802 - 19968: jis0208<<14 | 0x2D<<7 | 0x4F, + 40803 - 19968: jis0208<<14 | 0x52<<7 | 0x50, + 40806 - 19968: jis0208<<14 | 0x52<<7 | 0x54, + 40807 - 19968: jis0208<<14 | 0x52<<7 | 0x55, + 40808 - 19968: jis0212<<14 | 0x4C<<7 | 0x2C, + 40809 - 19968: jis0212<<14 | 0x4C<<7 | 0x2D, + 40810 - 19968: jis0208<<14 | 0x52<<7 | 0x57, + 40812 - 19968: jis0208<<14 | 0x52<<7 | 0x56, + 40813 - 19968: jis0212<<14 | 0x4C<<7 | 0x2E, + 40814 - 19968: jis0212<<14 | 0x4C<<7 | 0x2F, + 40815 - 19968: jis0212<<14 | 0x4C<<7 | 0x30, + 40816 - 19968: jis0212<<14 | 0x4C<<7 | 0x31, + 40817 - 19968: jis0212<<14 | 0x4C<<7 | 0x32, + 40818 - 19968: jis0208<<14 | 0x52<<7 | 0x59, + 40819 - 19968: jis0212<<14 | 0x4C<<7 | 0x33, + 40821 - 19968: jis0212<<14 | 0x4C<<7 | 0x34, + 40822 - 19968: jis0208<<14 | 0x52<<7 | 0x5A, + 40823 - 19968: jis0208<<14 | 0x52<<7 | 0x58, + 40826 - 19968: jis0212<<14 | 0x4C<<7 | 0x35, + 40829 - 19968: jis0212<<14 | 0x4C<<7 | 0x36, + 40845 - 19968: jis0208<<14 | 0x2D<<7 | 0x15, + 40847 - 19968: jis0212<<14 | 0x4C<<7 | 0x37, + 40848 - 19968: jis0212<<14 | 0x4C<<7 | 0x38, + 40849 - 19968: jis0212<<14 | 0x4C<<7 | 0x39, + 40850 - 19968: jis0212<<14 | 0x4C<<7 | 0x3A, + 40852 - 19968: jis0212<<14 | 0x4C<<7 | 0x3B, + 40853 - 19968: jis0208<<14 | 0x52<<7 | 0x5B, + 40854 - 19968: jis0212<<14 | 0x4C<<7 | 0x3C, + 40855 - 19968: jis0212<<14 | 0x4C<<7 | 0x3D, + 40860 - 19968: jis0208<<14 | 0x52<<7 | 0x5C, + 40861 - 19968: jis0208<<14 | 0x42<<7 | 0x33, + 40862 - 19968: jis0212<<14 | 0x4C<<7 | 0x3E, + 40864 - 19968: jis0208<<14 | 0x52<<7 | 0x5D, + 40865 - 19968: jis0212<<14 | 0x4C<<7 | 0x3F, + 40866 - 19968: jis0212<<14 | 0x4C<<7 | 0x40, + 40867 - 19968: jis0212<<14 | 0x4C<<7 | 0x41, + 40869 - 19968: jis0212<<14 | 0x4C<<7 | 0x42, +} + +const encode1Low, encode1High = 8208, 9840 + +var encode1 = [...]uint16{ + 8208 - 8208: jis0208<<14 | 0x00<<7 | 0x1D, + 8213 - 8208: jis0208<<14 | 0x00<<7 | 0x1C, + 8216 - 8208: jis0208<<14 | 0x00<<7 | 0x25, + 8217 - 8208: jis0208<<14 | 0x00<<7 | 0x26, + 8220 - 8208: jis0208<<14 | 0x00<<7 | 0x27, + 8221 - 8208: jis0208<<14 | 0x00<<7 | 0x28, + 8224 - 8208: jis0208<<14 | 0x01<<7 | 0x56, + 8225 - 8208: jis0208<<14 | 0x01<<7 | 0x57, + 8229 - 8208: jis0208<<14 | 0x00<<7 | 0x24, + 8230 - 8208: jis0208<<14 | 0x00<<7 | 0x23, + 8240 - 8208: jis0208<<14 | 0x01<<7 | 0x52, + 8242 - 8208: jis0208<<14 | 0x00<<7 | 0x4B, + 8243 - 8208: jis0208<<14 | 0x00<<7 | 0x4C, + 8251 - 8208: jis0208<<14 | 0x01<<7 | 0x07, + 8451 - 8208: jis0208<<14 | 0x00<<7 | 0x4D, + 8470 - 8208: jis0208<<14 | 0x0C<<7 | 0x41, + 8481 - 8208: jis0208<<14 | 0x0C<<7 | 0x43, + 8482 - 8208: jis0212<<14 | 0x01<<7 | 0x4E, + 8491 - 8208: jis0208<<14 | 0x01<<7 | 0x51, + 8544 - 8208: jis0208<<14 | 0x0C<<7 | 0x14, + 8545 - 8208: jis0208<<14 | 0x0C<<7 | 0x15, + 8546 - 8208: jis0208<<14 | 0x0C<<7 | 0x16, + 8547 - 8208: jis0208<<14 | 0x0C<<7 | 0x17, + 8548 - 8208: jis0208<<14 | 0x0C<<7 | 0x18, + 8549 - 8208: jis0208<<14 | 0x0C<<7 | 0x19, + 8550 - 8208: jis0208<<14 | 0x0C<<7 | 0x1A, + 8551 - 8208: jis0208<<14 | 0x0C<<7 | 0x1B, + 8552 - 8208: jis0208<<14 | 0x0C<<7 | 0x1C, + 8553 - 8208: jis0208<<14 | 0x0C<<7 | 0x1D, + 8560 - 8208: jis0208<<14 | 0x5B<<7 | 0x50, + 8561 - 8208: jis0208<<14 | 0x5B<<7 | 0x51, + 8562 - 8208: jis0208<<14 | 0x5B<<7 | 0x52, + 8563 - 8208: jis0208<<14 | 0x5B<<7 | 0x53, + 8564 - 8208: jis0208<<14 | 0x5B<<7 | 0x54, + 8565 - 8208: jis0208<<14 | 0x5B<<7 | 0x55, + 8566 - 8208: jis0208<<14 | 0x5B<<7 | 0x56, + 8567 - 8208: jis0208<<14 | 0x5B<<7 | 0x57, + 8568 - 8208: jis0208<<14 | 0x5B<<7 | 0x58, + 8569 - 8208: jis0208<<14 | 0x5B<<7 | 0x59, + 8592 - 8208: jis0208<<14 | 0x01<<7 | 0x0A, + 8593 - 8208: jis0208<<14 | 0x01<<7 | 0x0B, + 8594 - 8208: jis0208<<14 | 0x01<<7 | 0x09, + 8595 - 8208: jis0208<<14 | 0x01<<7 | 0x0C, + 8658 - 8208: jis0208<<14 | 0x01<<7 | 0x2C, + 8660 - 8208: jis0208<<14 | 0x01<<7 | 0x2D, + 8704 - 8208: jis0208<<14 | 0x01<<7 | 0x2E, + 8706 - 8208: jis0208<<14 | 0x01<<7 | 0x3E, + 8707 - 8208: jis0208<<14 | 0x01<<7 | 0x2F, + 8711 - 8208: jis0208<<14 | 0x01<<7 | 0x3F, + 8712 - 8208: jis0208<<14 | 0x01<<7 | 0x19, + 8715 - 8208: jis0208<<14 | 0x01<<7 | 0x1A, + 8721 - 8208: jis0208<<14 | 0x0C<<7 | 0x53, + 8730 - 8208: jis0208<<14 | 0x01<<7 | 0x44, + 8733 - 8208: jis0208<<14 | 0x01<<7 | 0x46, + 8734 - 8208: jis0208<<14 | 0x00<<7 | 0x46, + 8735 - 8208: jis0208<<14 | 0x0C<<7 | 0x57, + 8736 - 8208: jis0208<<14 | 0x01<<7 | 0x3B, + 8741 - 8208: jis0208<<14 | 0x00<<7 | 0x21, + 8743 - 8208: jis0208<<14 | 0x01<<7 | 0x29, + 8744 - 8208: jis0208<<14 | 0x01<<7 | 0x2A, + 8745 - 8208: jis0208<<14 | 0x01<<7 | 0x20, + 8746 - 8208: jis0208<<14 | 0x01<<7 | 0x1F, + 8747 - 8208: jis0208<<14 | 0x01<<7 | 0x48, + 8748 - 8208: jis0208<<14 | 0x01<<7 | 0x49, + 8750 - 8208: jis0208<<14 | 0x0C<<7 | 0x52, + 8756 - 8208: jis0208<<14 | 0x00<<7 | 0x47, + 8757 - 8208: jis0208<<14 | 0x01<<7 | 0x47, + 8765 - 8208: jis0208<<14 | 0x01<<7 | 0x45, + 8786 - 8208: jis0208<<14 | 0x01<<7 | 0x41, + 8800 - 8208: jis0208<<14 | 0x00<<7 | 0x41, + 8801 - 8208: jis0208<<14 | 0x01<<7 | 0x40, + 8806 - 8208: jis0208<<14 | 0x00<<7 | 0x44, + 8807 - 8208: jis0208<<14 | 0x00<<7 | 0x45, + 8810 - 8208: jis0208<<14 | 0x01<<7 | 0x42, + 8811 - 8208: jis0208<<14 | 0x01<<7 | 0x43, + 8834 - 8208: jis0208<<14 | 0x01<<7 | 0x1D, + 8835 - 8208: jis0208<<14 | 0x01<<7 | 0x1E, + 8838 - 8208: jis0208<<14 | 0x01<<7 | 0x1B, + 8839 - 8208: jis0208<<14 | 0x01<<7 | 0x1C, + 8869 - 8208: jis0208<<14 | 0x01<<7 | 0x3C, + 8895 - 8208: jis0208<<14 | 0x0C<<7 | 0x58, + 8978 - 8208: jis0208<<14 | 0x01<<7 | 0x3D, + 9312 - 8208: jis0208<<14 | 0x0C<<7 | 0x00, + 9313 - 8208: jis0208<<14 | 0x0C<<7 | 0x01, + 9314 - 8208: jis0208<<14 | 0x0C<<7 | 0x02, + 9315 - 8208: jis0208<<14 | 0x0C<<7 | 0x03, + 9316 - 8208: jis0208<<14 | 0x0C<<7 | 0x04, + 9317 - 8208: jis0208<<14 | 0x0C<<7 | 0x05, + 9318 - 8208: jis0208<<14 | 0x0C<<7 | 0x06, + 9319 - 8208: jis0208<<14 | 0x0C<<7 | 0x07, + 9320 - 8208: jis0208<<14 | 0x0C<<7 | 0x08, + 9321 - 8208: jis0208<<14 | 0x0C<<7 | 0x09, + 9322 - 8208: jis0208<<14 | 0x0C<<7 | 0x0A, + 9323 - 8208: jis0208<<14 | 0x0C<<7 | 0x0B, + 9324 - 8208: jis0208<<14 | 0x0C<<7 | 0x0C, + 9325 - 8208: jis0208<<14 | 0x0C<<7 | 0x0D, + 9326 - 8208: jis0208<<14 | 0x0C<<7 | 0x0E, + 9327 - 8208: jis0208<<14 | 0x0C<<7 | 0x0F, + 9328 - 8208: jis0208<<14 | 0x0C<<7 | 0x10, + 9329 - 8208: jis0208<<14 | 0x0C<<7 | 0x11, + 9330 - 8208: jis0208<<14 | 0x0C<<7 | 0x12, + 9331 - 8208: jis0208<<14 | 0x0C<<7 | 0x13, + 9472 - 8208: jis0208<<14 | 0x07<<7 | 0x00, + 9473 - 8208: jis0208<<14 | 0x07<<7 | 0x0B, + 9474 - 8208: jis0208<<14 | 0x07<<7 | 0x01, + 9475 - 8208: jis0208<<14 | 0x07<<7 | 0x0C, + 9484 - 8208: jis0208<<14 | 0x07<<7 | 0x02, + 9487 - 8208: jis0208<<14 | 0x07<<7 | 0x0D, + 9488 - 8208: jis0208<<14 | 0x07<<7 | 0x03, + 9491 - 8208: jis0208<<14 | 0x07<<7 | 0x0E, + 9492 - 8208: jis0208<<14 | 0x07<<7 | 0x05, + 9495 - 8208: jis0208<<14 | 0x07<<7 | 0x10, + 9496 - 8208: jis0208<<14 | 0x07<<7 | 0x04, + 9499 - 8208: jis0208<<14 | 0x07<<7 | 0x0F, + 9500 - 8208: jis0208<<14 | 0x07<<7 | 0x06, + 9501 - 8208: jis0208<<14 | 0x07<<7 | 0x1B, + 9504 - 8208: jis0208<<14 | 0x07<<7 | 0x16, + 9507 - 8208: jis0208<<14 | 0x07<<7 | 0x11, + 9508 - 8208: jis0208<<14 | 0x07<<7 | 0x08, + 9509 - 8208: jis0208<<14 | 0x07<<7 | 0x1D, + 9512 - 8208: jis0208<<14 | 0x07<<7 | 0x18, + 9515 - 8208: jis0208<<14 | 0x07<<7 | 0x13, + 9516 - 8208: jis0208<<14 | 0x07<<7 | 0x07, + 9519 - 8208: jis0208<<14 | 0x07<<7 | 0x17, + 9520 - 8208: jis0208<<14 | 0x07<<7 | 0x1C, + 9523 - 8208: jis0208<<14 | 0x07<<7 | 0x12, + 9524 - 8208: jis0208<<14 | 0x07<<7 | 0x09, + 9527 - 8208: jis0208<<14 | 0x07<<7 | 0x19, + 9528 - 8208: jis0208<<14 | 0x07<<7 | 0x1E, + 9531 - 8208: jis0208<<14 | 0x07<<7 | 0x14, + 9532 - 8208: jis0208<<14 | 0x07<<7 | 0x0A, + 9535 - 8208: jis0208<<14 | 0x07<<7 | 0x1A, + 9538 - 8208: jis0208<<14 | 0x07<<7 | 0x1F, + 9547 - 8208: jis0208<<14 | 0x07<<7 | 0x15, + 9632 - 8208: jis0208<<14 | 0x01<<7 | 0x02, + 9633 - 8208: jis0208<<14 | 0x01<<7 | 0x01, + 9650 - 8208: jis0208<<14 | 0x01<<7 | 0x04, + 9651 - 8208: jis0208<<14 | 0x01<<7 | 0x03, + 9660 - 8208: jis0208<<14 | 0x01<<7 | 0x06, + 9661 - 8208: jis0208<<14 | 0x01<<7 | 0x05, + 9670 - 8208: jis0208<<14 | 0x01<<7 | 0x00, + 9671 - 8208: jis0208<<14 | 0x00<<7 | 0x5D, + 9675 - 8208: jis0208<<14 | 0x00<<7 | 0x5A, + 9678 - 8208: jis0208<<14 | 0x00<<7 | 0x5C, + 9679 - 8208: jis0208<<14 | 0x00<<7 | 0x5B, + 9711 - 8208: jis0208<<14 | 0x01<<7 | 0x5D, + 9733 - 8208: jis0208<<14 | 0x00<<7 | 0x59, + 9734 - 8208: jis0208<<14 | 0x00<<7 | 0x58, + 9792 - 8208: jis0208<<14 | 0x00<<7 | 0x49, + 9794 - 8208: jis0208<<14 | 0x00<<7 | 0x48, + 9834 - 8208: jis0208<<14 | 0x01<<7 | 0x55, + 9837 - 8208: jis0208<<14 | 0x01<<7 | 0x54, + 9839 - 8208: jis0208<<14 | 0x01<<7 | 0x53, +} + +const encode2Low, encode2High = 12288, 13262 + +var encode2 = [...]uint16{ + 12288 - 12288: jis0208<<14 | 0x00<<7 | 0x00, + 12289 - 12288: jis0208<<14 | 0x00<<7 | 0x01, + 12290 - 12288: jis0208<<14 | 0x00<<7 | 0x02, + 12291 - 12288: jis0208<<14 | 0x00<<7 | 0x16, + 12293 - 12288: jis0208<<14 | 0x00<<7 | 0x18, + 12294 - 12288: jis0208<<14 | 0x00<<7 | 0x19, + 12295 - 12288: jis0208<<14 | 0x00<<7 | 0x1A, + 12296 - 12288: jis0208<<14 | 0x00<<7 | 0x31, + 12297 - 12288: jis0208<<14 | 0x00<<7 | 0x32, + 12298 - 12288: jis0208<<14 | 0x00<<7 | 0x33, + 12299 - 12288: jis0208<<14 | 0x00<<7 | 0x34, + 12300 - 12288: jis0208<<14 | 0x00<<7 | 0x35, + 12301 - 12288: jis0208<<14 | 0x00<<7 | 0x36, + 12302 - 12288: jis0208<<14 | 0x00<<7 | 0x37, + 12303 - 12288: jis0208<<14 | 0x00<<7 | 0x38, + 12304 - 12288: jis0208<<14 | 0x00<<7 | 0x39, + 12305 - 12288: jis0208<<14 | 0x00<<7 | 0x3A, + 12306 - 12288: jis0208<<14 | 0x01<<7 | 0x08, + 12307 - 12288: jis0208<<14 | 0x01<<7 | 0x0D, + 12308 - 12288: jis0208<<14 | 0x00<<7 | 0x2B, + 12309 - 12288: jis0208<<14 | 0x00<<7 | 0x2C, + 12317 - 12288: jis0208<<14 | 0x0C<<7 | 0x3F, + 12319 - 12288: jis0208<<14 | 0x0C<<7 | 0x40, + 12353 - 12288: jis0208<<14 | 0x03<<7 | 0x00, + 12354 - 12288: jis0208<<14 | 0x03<<7 | 0x01, + 12355 - 12288: jis0208<<14 | 0x03<<7 | 0x02, + 12356 - 12288: jis0208<<14 | 0x03<<7 | 0x03, + 12357 - 12288: jis0208<<14 | 0x03<<7 | 0x04, + 12358 - 12288: jis0208<<14 | 0x03<<7 | 0x05, + 12359 - 12288: jis0208<<14 | 0x03<<7 | 0x06, + 12360 - 12288: jis0208<<14 | 0x03<<7 | 0x07, + 12361 - 12288: jis0208<<14 | 0x03<<7 | 0x08, + 12362 - 12288: jis0208<<14 | 0x03<<7 | 0x09, + 12363 - 12288: jis0208<<14 | 0x03<<7 | 0x0A, + 12364 - 12288: jis0208<<14 | 0x03<<7 | 0x0B, + 12365 - 12288: jis0208<<14 | 0x03<<7 | 0x0C, + 12366 - 12288: jis0208<<14 | 0x03<<7 | 0x0D, + 12367 - 12288: jis0208<<14 | 0x03<<7 | 0x0E, + 12368 - 12288: jis0208<<14 | 0x03<<7 | 0x0F, + 12369 - 12288: jis0208<<14 | 0x03<<7 | 0x10, + 12370 - 12288: jis0208<<14 | 0x03<<7 | 0x11, + 12371 - 12288: jis0208<<14 | 0x03<<7 | 0x12, + 12372 - 12288: jis0208<<14 | 0x03<<7 | 0x13, + 12373 - 12288: jis0208<<14 | 0x03<<7 | 0x14, + 12374 - 12288: jis0208<<14 | 0x03<<7 | 0x15, + 12375 - 12288: jis0208<<14 | 0x03<<7 | 0x16, + 12376 - 12288: jis0208<<14 | 0x03<<7 | 0x17, + 12377 - 12288: jis0208<<14 | 0x03<<7 | 0x18, + 12378 - 12288: jis0208<<14 | 0x03<<7 | 0x19, + 12379 - 12288: jis0208<<14 | 0x03<<7 | 0x1A, + 12380 - 12288: jis0208<<14 | 0x03<<7 | 0x1B, + 12381 - 12288: jis0208<<14 | 0x03<<7 | 0x1C, + 12382 - 12288: jis0208<<14 | 0x03<<7 | 0x1D, + 12383 - 12288: jis0208<<14 | 0x03<<7 | 0x1E, + 12384 - 12288: jis0208<<14 | 0x03<<7 | 0x1F, + 12385 - 12288: jis0208<<14 | 0x03<<7 | 0x20, + 12386 - 12288: jis0208<<14 | 0x03<<7 | 0x21, + 12387 - 12288: jis0208<<14 | 0x03<<7 | 0x22, + 12388 - 12288: jis0208<<14 | 0x03<<7 | 0x23, + 12389 - 12288: jis0208<<14 | 0x03<<7 | 0x24, + 12390 - 12288: jis0208<<14 | 0x03<<7 | 0x25, + 12391 - 12288: jis0208<<14 | 0x03<<7 | 0x26, + 12392 - 12288: jis0208<<14 | 0x03<<7 | 0x27, + 12393 - 12288: jis0208<<14 | 0x03<<7 | 0x28, + 12394 - 12288: jis0208<<14 | 0x03<<7 | 0x29, + 12395 - 12288: jis0208<<14 | 0x03<<7 | 0x2A, + 12396 - 12288: jis0208<<14 | 0x03<<7 | 0x2B, + 12397 - 12288: jis0208<<14 | 0x03<<7 | 0x2C, + 12398 - 12288: jis0208<<14 | 0x03<<7 | 0x2D, + 12399 - 12288: jis0208<<14 | 0x03<<7 | 0x2E, + 12400 - 12288: jis0208<<14 | 0x03<<7 | 0x2F, + 12401 - 12288: jis0208<<14 | 0x03<<7 | 0x30, + 12402 - 12288: jis0208<<14 | 0x03<<7 | 0x31, + 12403 - 12288: jis0208<<14 | 0x03<<7 | 0x32, + 12404 - 12288: jis0208<<14 | 0x03<<7 | 0x33, + 12405 - 12288: jis0208<<14 | 0x03<<7 | 0x34, + 12406 - 12288: jis0208<<14 | 0x03<<7 | 0x35, + 12407 - 12288: jis0208<<14 | 0x03<<7 | 0x36, + 12408 - 12288: jis0208<<14 | 0x03<<7 | 0x37, + 12409 - 12288: jis0208<<14 | 0x03<<7 | 0x38, + 12410 - 12288: jis0208<<14 | 0x03<<7 | 0x39, + 12411 - 12288: jis0208<<14 | 0x03<<7 | 0x3A, + 12412 - 12288: jis0208<<14 | 0x03<<7 | 0x3B, + 12413 - 12288: jis0208<<14 | 0x03<<7 | 0x3C, + 12414 - 12288: jis0208<<14 | 0x03<<7 | 0x3D, + 12415 - 12288: jis0208<<14 | 0x03<<7 | 0x3E, + 12416 - 12288: jis0208<<14 | 0x03<<7 | 0x3F, + 12417 - 12288: jis0208<<14 | 0x03<<7 | 0x40, + 12418 - 12288: jis0208<<14 | 0x03<<7 | 0x41, + 12419 - 12288: jis0208<<14 | 0x03<<7 | 0x42, + 12420 - 12288: jis0208<<14 | 0x03<<7 | 0x43, + 12421 - 12288: jis0208<<14 | 0x03<<7 | 0x44, + 12422 - 12288: jis0208<<14 | 0x03<<7 | 0x45, + 12423 - 12288: jis0208<<14 | 0x03<<7 | 0x46, + 12424 - 12288: jis0208<<14 | 0x03<<7 | 0x47, + 12425 - 12288: jis0208<<14 | 0x03<<7 | 0x48, + 12426 - 12288: jis0208<<14 | 0x03<<7 | 0x49, + 12427 - 12288: jis0208<<14 | 0x03<<7 | 0x4A, + 12428 - 12288: jis0208<<14 | 0x03<<7 | 0x4B, + 12429 - 12288: jis0208<<14 | 0x03<<7 | 0x4C, + 12430 - 12288: jis0208<<14 | 0x03<<7 | 0x4D, + 12431 - 12288: jis0208<<14 | 0x03<<7 | 0x4E, + 12432 - 12288: jis0208<<14 | 0x03<<7 | 0x4F, + 12433 - 12288: jis0208<<14 | 0x03<<7 | 0x50, + 12434 - 12288: jis0208<<14 | 0x03<<7 | 0x51, + 12435 - 12288: jis0208<<14 | 0x03<<7 | 0x52, + 12443 - 12288: jis0208<<14 | 0x00<<7 | 0x0A, + 12444 - 12288: jis0208<<14 | 0x00<<7 | 0x0B, + 12445 - 12288: jis0208<<14 | 0x00<<7 | 0x14, + 12446 - 12288: jis0208<<14 | 0x00<<7 | 0x15, + 12449 - 12288: jis0208<<14 | 0x04<<7 | 0x00, + 12450 - 12288: jis0208<<14 | 0x04<<7 | 0x01, + 12451 - 12288: jis0208<<14 | 0x04<<7 | 0x02, + 12452 - 12288: jis0208<<14 | 0x04<<7 | 0x03, + 12453 - 12288: jis0208<<14 | 0x04<<7 | 0x04, + 12454 - 12288: jis0208<<14 | 0x04<<7 | 0x05, + 12455 - 12288: jis0208<<14 | 0x04<<7 | 0x06, + 12456 - 12288: jis0208<<14 | 0x04<<7 | 0x07, + 12457 - 12288: jis0208<<14 | 0x04<<7 | 0x08, + 12458 - 12288: jis0208<<14 | 0x04<<7 | 0x09, + 12459 - 12288: jis0208<<14 | 0x04<<7 | 0x0A, + 12460 - 12288: jis0208<<14 | 0x04<<7 | 0x0B, + 12461 - 12288: jis0208<<14 | 0x04<<7 | 0x0C, + 12462 - 12288: jis0208<<14 | 0x04<<7 | 0x0D, + 12463 - 12288: jis0208<<14 | 0x04<<7 | 0x0E, + 12464 - 12288: jis0208<<14 | 0x04<<7 | 0x0F, + 12465 - 12288: jis0208<<14 | 0x04<<7 | 0x10, + 12466 - 12288: jis0208<<14 | 0x04<<7 | 0x11, + 12467 - 12288: jis0208<<14 | 0x04<<7 | 0x12, + 12468 - 12288: jis0208<<14 | 0x04<<7 | 0x13, + 12469 - 12288: jis0208<<14 | 0x04<<7 | 0x14, + 12470 - 12288: jis0208<<14 | 0x04<<7 | 0x15, + 12471 - 12288: jis0208<<14 | 0x04<<7 | 0x16, + 12472 - 12288: jis0208<<14 | 0x04<<7 | 0x17, + 12473 - 12288: jis0208<<14 | 0x04<<7 | 0x18, + 12474 - 12288: jis0208<<14 | 0x04<<7 | 0x19, + 12475 - 12288: jis0208<<14 | 0x04<<7 | 0x1A, + 12476 - 12288: jis0208<<14 | 0x04<<7 | 0x1B, + 12477 - 12288: jis0208<<14 | 0x04<<7 | 0x1C, + 12478 - 12288: jis0208<<14 | 0x04<<7 | 0x1D, + 12479 - 12288: jis0208<<14 | 0x04<<7 | 0x1E, + 12480 - 12288: jis0208<<14 | 0x04<<7 | 0x1F, + 12481 - 12288: jis0208<<14 | 0x04<<7 | 0x20, + 12482 - 12288: jis0208<<14 | 0x04<<7 | 0x21, + 12483 - 12288: jis0208<<14 | 0x04<<7 | 0x22, + 12484 - 12288: jis0208<<14 | 0x04<<7 | 0x23, + 12485 - 12288: jis0208<<14 | 0x04<<7 | 0x24, + 12486 - 12288: jis0208<<14 | 0x04<<7 | 0x25, + 12487 - 12288: jis0208<<14 | 0x04<<7 | 0x26, + 12488 - 12288: jis0208<<14 | 0x04<<7 | 0x27, + 12489 - 12288: jis0208<<14 | 0x04<<7 | 0x28, + 12490 - 12288: jis0208<<14 | 0x04<<7 | 0x29, + 12491 - 12288: jis0208<<14 | 0x04<<7 | 0x2A, + 12492 - 12288: jis0208<<14 | 0x04<<7 | 0x2B, + 12493 - 12288: jis0208<<14 | 0x04<<7 | 0x2C, + 12494 - 12288: jis0208<<14 | 0x04<<7 | 0x2D, + 12495 - 12288: jis0208<<14 | 0x04<<7 | 0x2E, + 12496 - 12288: jis0208<<14 | 0x04<<7 | 0x2F, + 12497 - 12288: jis0208<<14 | 0x04<<7 | 0x30, + 12498 - 12288: jis0208<<14 | 0x04<<7 | 0x31, + 12499 - 12288: jis0208<<14 | 0x04<<7 | 0x32, + 12500 - 12288: jis0208<<14 | 0x04<<7 | 0x33, + 12501 - 12288: jis0208<<14 | 0x04<<7 | 0x34, + 12502 - 12288: jis0208<<14 | 0x04<<7 | 0x35, + 12503 - 12288: jis0208<<14 | 0x04<<7 | 0x36, + 12504 - 12288: jis0208<<14 | 0x04<<7 | 0x37, + 12505 - 12288: jis0208<<14 | 0x04<<7 | 0x38, + 12506 - 12288: jis0208<<14 | 0x04<<7 | 0x39, + 12507 - 12288: jis0208<<14 | 0x04<<7 | 0x3A, + 12508 - 12288: jis0208<<14 | 0x04<<7 | 0x3B, + 12509 - 12288: jis0208<<14 | 0x04<<7 | 0x3C, + 12510 - 12288: jis0208<<14 | 0x04<<7 | 0x3D, + 12511 - 12288: jis0208<<14 | 0x04<<7 | 0x3E, + 12512 - 12288: jis0208<<14 | 0x04<<7 | 0x3F, + 12513 - 12288: jis0208<<14 | 0x04<<7 | 0x40, + 12514 - 12288: jis0208<<14 | 0x04<<7 | 0x41, + 12515 - 12288: jis0208<<14 | 0x04<<7 | 0x42, + 12516 - 12288: jis0208<<14 | 0x04<<7 | 0x43, + 12517 - 12288: jis0208<<14 | 0x04<<7 | 0x44, + 12518 - 12288: jis0208<<14 | 0x04<<7 | 0x45, + 12519 - 12288: jis0208<<14 | 0x04<<7 | 0x46, + 12520 - 12288: jis0208<<14 | 0x04<<7 | 0x47, + 12521 - 12288: jis0208<<14 | 0x04<<7 | 0x48, + 12522 - 12288: jis0208<<14 | 0x04<<7 | 0x49, + 12523 - 12288: jis0208<<14 | 0x04<<7 | 0x4A, + 12524 - 12288: jis0208<<14 | 0x04<<7 | 0x4B, + 12525 - 12288: jis0208<<14 | 0x04<<7 | 0x4C, + 12526 - 12288: jis0208<<14 | 0x04<<7 | 0x4D, + 12527 - 12288: jis0208<<14 | 0x04<<7 | 0x4E, + 12528 - 12288: jis0208<<14 | 0x04<<7 | 0x4F, + 12529 - 12288: jis0208<<14 | 0x04<<7 | 0x50, + 12530 - 12288: jis0208<<14 | 0x04<<7 | 0x51, + 12531 - 12288: jis0208<<14 | 0x04<<7 | 0x52, + 12532 - 12288: jis0208<<14 | 0x04<<7 | 0x53, + 12533 - 12288: jis0208<<14 | 0x04<<7 | 0x54, + 12534 - 12288: jis0208<<14 | 0x04<<7 | 0x55, + 12539 - 12288: jis0208<<14 | 0x00<<7 | 0x05, + 12540 - 12288: jis0208<<14 | 0x00<<7 | 0x1B, + 12541 - 12288: jis0208<<14 | 0x00<<7 | 0x12, + 12542 - 12288: jis0208<<14 | 0x00<<7 | 0x13, + 12849 - 12288: jis0208<<14 | 0x0C<<7 | 0x49, + 12850 - 12288: jis0208<<14 | 0x0C<<7 | 0x4A, + 12857 - 12288: jis0208<<14 | 0x0C<<7 | 0x4B, + 12964 - 12288: jis0208<<14 | 0x0C<<7 | 0x44, + 12965 - 12288: jis0208<<14 | 0x0C<<7 | 0x45, + 12966 - 12288: jis0208<<14 | 0x0C<<7 | 0x46, + 12967 - 12288: jis0208<<14 | 0x0C<<7 | 0x47, + 12968 - 12288: jis0208<<14 | 0x0C<<7 | 0x48, + 13059 - 12288: jis0208<<14 | 0x0C<<7 | 0x25, + 13069 - 12288: jis0208<<14 | 0x0C<<7 | 0x29, + 13076 - 12288: jis0208<<14 | 0x0C<<7 | 0x20, + 13080 - 12288: jis0208<<14 | 0x0C<<7 | 0x23, + 13090 - 12288: jis0208<<14 | 0x0C<<7 | 0x21, + 13091 - 12288: jis0208<<14 | 0x0C<<7 | 0x2B, + 13094 - 12288: jis0208<<14 | 0x0C<<7 | 0x2A, + 13095 - 12288: jis0208<<14 | 0x0C<<7 | 0x24, + 13099 - 12288: jis0208<<14 | 0x0C<<7 | 0x2C, + 13110 - 12288: jis0208<<14 | 0x0C<<7 | 0x26, + 13115 - 12288: jis0208<<14 | 0x0C<<7 | 0x2E, + 13129 - 12288: jis0208<<14 | 0x0C<<7 | 0x1F, + 13130 - 12288: jis0208<<14 | 0x0C<<7 | 0x2D, + 13133 - 12288: jis0208<<14 | 0x0C<<7 | 0x22, + 13137 - 12288: jis0208<<14 | 0x0C<<7 | 0x27, + 13143 - 12288: jis0208<<14 | 0x0C<<7 | 0x28, + 13179 - 12288: jis0208<<14 | 0x0C<<7 | 0x3E, + 13180 - 12288: jis0208<<14 | 0x0C<<7 | 0x4E, + 13181 - 12288: jis0208<<14 | 0x0C<<7 | 0x4D, + 13182 - 12288: jis0208<<14 | 0x0C<<7 | 0x4C, + 13198 - 12288: jis0208<<14 | 0x0C<<7 | 0x32, + 13199 - 12288: jis0208<<14 | 0x0C<<7 | 0x33, + 13212 - 12288: jis0208<<14 | 0x0C<<7 | 0x2F, + 13213 - 12288: jis0208<<14 | 0x0C<<7 | 0x30, + 13214 - 12288: jis0208<<14 | 0x0C<<7 | 0x31, + 13217 - 12288: jis0208<<14 | 0x0C<<7 | 0x35, + 13252 - 12288: jis0208<<14 | 0x0C<<7 | 0x34, + 13261 - 12288: jis0208<<14 | 0x0C<<7 | 0x42, +} + +const encode3Low, encode3High = 161, 1120 + +var encode3 = [...]uint16{ + 161 - 161: jis0212<<14 | 0x01<<7 | 0x21, + 164 - 161: jis0212<<14 | 0x01<<7 | 0x4F, + 166 - 161: jis0212<<14 | 0x01<<7 | 0x22, + 167 - 161: jis0208<<14 | 0x00<<7 | 0x57, + 168 - 161: jis0208<<14 | 0x00<<7 | 0x0E, + 169 - 161: jis0212<<14 | 0x01<<7 | 0x4C, + 170 - 161: jis0212<<14 | 0x01<<7 | 0x4B, + 174 - 161: jis0212<<14 | 0x01<<7 | 0x4D, + 175 - 161: jis0212<<14 | 0x01<<7 | 0x13, + 176 - 161: jis0208<<14 | 0x00<<7 | 0x4A, + 177 - 161: jis0208<<14 | 0x00<<7 | 0x3D, + 180 - 161: jis0208<<14 | 0x00<<7 | 0x0C, + 182 - 161: jis0208<<14 | 0x01<<7 | 0x58, + 184 - 161: jis0212<<14 | 0x01<<7 | 0x10, + 186 - 161: jis0212<<14 | 0x01<<7 | 0x4A, + 191 - 161: jis0212<<14 | 0x01<<7 | 0x23, + 192 - 161: jis0212<<14 | 0x09<<7 | 0x01, + 193 - 161: jis0212<<14 | 0x09<<7 | 0x00, + 194 - 161: jis0212<<14 | 0x09<<7 | 0x03, + 195 - 161: jis0212<<14 | 0x09<<7 | 0x09, + 196 - 161: jis0212<<14 | 0x09<<7 | 0x02, + 197 - 161: jis0212<<14 | 0x09<<7 | 0x08, + 198 - 161: jis0212<<14 | 0x08<<7 | 0x00, + 199 - 161: jis0212<<14 | 0x09<<7 | 0x0D, + 200 - 161: jis0212<<14 | 0x09<<7 | 0x11, + 201 - 161: jis0212<<14 | 0x09<<7 | 0x10, + 202 - 161: jis0212<<14 | 0x09<<7 | 0x13, + 203 - 161: jis0212<<14 | 0x09<<7 | 0x12, + 204 - 161: jis0212<<14 | 0x09<<7 | 0x1F, + 205 - 161: jis0212<<14 | 0x09<<7 | 0x1E, + 206 - 161: jis0212<<14 | 0x09<<7 | 0x21, + 207 - 161: jis0212<<14 | 0x09<<7 | 0x20, + 209 - 161: jis0212<<14 | 0x09<<7 | 0x2F, + 210 - 161: jis0212<<14 | 0x09<<7 | 0x31, + 211 - 161: jis0212<<14 | 0x09<<7 | 0x30, + 212 - 161: jis0212<<14 | 0x09<<7 | 0x33, + 213 - 161: jis0212<<14 | 0x09<<7 | 0x37, + 214 - 161: jis0212<<14 | 0x09<<7 | 0x32, + 215 - 161: jis0208<<14 | 0x00<<7 | 0x3E, + 216 - 161: jis0212<<14 | 0x08<<7 | 0x0B, + 217 - 161: jis0212<<14 | 0x09<<7 | 0x42, + 218 - 161: jis0212<<14 | 0x09<<7 | 0x41, + 219 - 161: jis0212<<14 | 0x09<<7 | 0x44, + 220 - 161: jis0212<<14 | 0x09<<7 | 0x43, + 221 - 161: jis0212<<14 | 0x09<<7 | 0x51, + 222 - 161: jis0212<<14 | 0x08<<7 | 0x0F, + 223 - 161: jis0212<<14 | 0x08<<7 | 0x2D, + 224 - 161: jis0212<<14 | 0x0A<<7 | 0x01, + 225 - 161: jis0212<<14 | 0x0A<<7 | 0x00, + 226 - 161: jis0212<<14 | 0x0A<<7 | 0x03, + 227 - 161: jis0212<<14 | 0x0A<<7 | 0x09, + 228 - 161: jis0212<<14 | 0x0A<<7 | 0x02, + 229 - 161: jis0212<<14 | 0x0A<<7 | 0x08, + 230 - 161: jis0212<<14 | 0x08<<7 | 0x20, + 231 - 161: jis0212<<14 | 0x0A<<7 | 0x0D, + 232 - 161: jis0212<<14 | 0x0A<<7 | 0x11, + 233 - 161: jis0212<<14 | 0x0A<<7 | 0x10, + 234 - 161: jis0212<<14 | 0x0A<<7 | 0x13, + 235 - 161: jis0212<<14 | 0x0A<<7 | 0x12, + 236 - 161: jis0212<<14 | 0x0A<<7 | 0x1F, + 237 - 161: jis0212<<14 | 0x0A<<7 | 0x1E, + 238 - 161: jis0212<<14 | 0x0A<<7 | 0x21, + 239 - 161: jis0212<<14 | 0x0A<<7 | 0x20, + 240 - 161: jis0212<<14 | 0x08<<7 | 0x22, + 241 - 161: jis0212<<14 | 0x0A<<7 | 0x2F, + 242 - 161: jis0212<<14 | 0x0A<<7 | 0x31, + 243 - 161: jis0212<<14 | 0x0A<<7 | 0x30, + 244 - 161: jis0212<<14 | 0x0A<<7 | 0x33, + 245 - 161: jis0212<<14 | 0x0A<<7 | 0x37, + 246 - 161: jis0212<<14 | 0x0A<<7 | 0x32, + 247 - 161: jis0208<<14 | 0x00<<7 | 0x3F, + 248 - 161: jis0212<<14 | 0x08<<7 | 0x2B, + 249 - 161: jis0212<<14 | 0x0A<<7 | 0x42, + 250 - 161: jis0212<<14 | 0x0A<<7 | 0x41, + 251 - 161: jis0212<<14 | 0x0A<<7 | 0x44, + 252 - 161: jis0212<<14 | 0x0A<<7 | 0x43, + 253 - 161: jis0212<<14 | 0x0A<<7 | 0x51, + 254 - 161: jis0212<<14 | 0x08<<7 | 0x2F, + 255 - 161: jis0212<<14 | 0x0A<<7 | 0x52, + 256 - 161: jis0212<<14 | 0x09<<7 | 0x06, + 257 - 161: jis0212<<14 | 0x0A<<7 | 0x06, + 258 - 161: jis0212<<14 | 0x09<<7 | 0x04, + 259 - 161: jis0212<<14 | 0x0A<<7 | 0x04, + 260 - 161: jis0212<<14 | 0x09<<7 | 0x07, + 261 - 161: jis0212<<14 | 0x0A<<7 | 0x07, + 262 - 161: jis0212<<14 | 0x09<<7 | 0x0A, + 263 - 161: jis0212<<14 | 0x0A<<7 | 0x0A, + 264 - 161: jis0212<<14 | 0x09<<7 | 0x0B, + 265 - 161: jis0212<<14 | 0x0A<<7 | 0x0B, + 266 - 161: jis0212<<14 | 0x09<<7 | 0x0E, + 267 - 161: jis0212<<14 | 0x0A<<7 | 0x0E, + 268 - 161: jis0212<<14 | 0x09<<7 | 0x0C, + 269 - 161: jis0212<<14 | 0x0A<<7 | 0x0C, + 270 - 161: jis0212<<14 | 0x09<<7 | 0x0F, + 271 - 161: jis0212<<14 | 0x0A<<7 | 0x0F, + 272 - 161: jis0212<<14 | 0x08<<7 | 0x01, + 273 - 161: jis0212<<14 | 0x08<<7 | 0x21, + 274 - 161: jis0212<<14 | 0x09<<7 | 0x16, + 275 - 161: jis0212<<14 | 0x0A<<7 | 0x16, + 278 - 161: jis0212<<14 | 0x09<<7 | 0x15, + 279 - 161: jis0212<<14 | 0x0A<<7 | 0x15, + 280 - 161: jis0212<<14 | 0x09<<7 | 0x17, + 281 - 161: jis0212<<14 | 0x0A<<7 | 0x17, + 282 - 161: jis0212<<14 | 0x09<<7 | 0x14, + 283 - 161: jis0212<<14 | 0x0A<<7 | 0x14, + 284 - 161: jis0212<<14 | 0x09<<7 | 0x19, + 285 - 161: jis0212<<14 | 0x0A<<7 | 0x19, + 286 - 161: jis0212<<14 | 0x09<<7 | 0x1A, + 287 - 161: jis0212<<14 | 0x0A<<7 | 0x1A, + 288 - 161: jis0212<<14 | 0x09<<7 | 0x1C, + 289 - 161: jis0212<<14 | 0x0A<<7 | 0x1C, + 290 - 161: jis0212<<14 | 0x09<<7 | 0x1B, + 292 - 161: jis0212<<14 | 0x09<<7 | 0x1D, + 293 - 161: jis0212<<14 | 0x0A<<7 | 0x1D, + 294 - 161: jis0212<<14 | 0x08<<7 | 0x03, + 295 - 161: jis0212<<14 | 0x08<<7 | 0x23, + 296 - 161: jis0212<<14 | 0x09<<7 | 0x26, + 297 - 161: jis0212<<14 | 0x0A<<7 | 0x26, + 298 - 161: jis0212<<14 | 0x09<<7 | 0x24, + 299 - 161: jis0212<<14 | 0x0A<<7 | 0x24, + 302 - 161: jis0212<<14 | 0x09<<7 | 0x25, + 303 - 161: jis0212<<14 | 0x0A<<7 | 0x25, + 304 - 161: jis0212<<14 | 0x09<<7 | 0x23, + 305 - 161: jis0212<<14 | 0x08<<7 | 0x24, + 306 - 161: jis0212<<14 | 0x08<<7 | 0x05, + 307 - 161: jis0212<<14 | 0x08<<7 | 0x25, + 308 - 161: jis0212<<14 | 0x09<<7 | 0x27, + 309 - 161: jis0212<<14 | 0x0A<<7 | 0x27, + 310 - 161: jis0212<<14 | 0x09<<7 | 0x28, + 311 - 161: jis0212<<14 | 0x0A<<7 | 0x28, + 312 - 161: jis0212<<14 | 0x08<<7 | 0x26, + 313 - 161: jis0212<<14 | 0x09<<7 | 0x29, + 314 - 161: jis0212<<14 | 0x0A<<7 | 0x29, + 315 - 161: jis0212<<14 | 0x09<<7 | 0x2B, + 316 - 161: jis0212<<14 | 0x0A<<7 | 0x2B, + 317 - 161: jis0212<<14 | 0x09<<7 | 0x2A, + 318 - 161: jis0212<<14 | 0x0A<<7 | 0x2A, + 319 - 161: jis0212<<14 | 0x08<<7 | 0x08, + 320 - 161: jis0212<<14 | 0x08<<7 | 0x28, + 321 - 161: jis0212<<14 | 0x08<<7 | 0x07, + 322 - 161: jis0212<<14 | 0x08<<7 | 0x27, + 323 - 161: jis0212<<14 | 0x09<<7 | 0x2C, + 324 - 161: jis0212<<14 | 0x0A<<7 | 0x2C, + 325 - 161: jis0212<<14 | 0x09<<7 | 0x2E, + 326 - 161: jis0212<<14 | 0x0A<<7 | 0x2E, + 327 - 161: jis0212<<14 | 0x09<<7 | 0x2D, + 328 - 161: jis0212<<14 | 0x0A<<7 | 0x2D, + 329 - 161: jis0212<<14 | 0x08<<7 | 0x29, + 330 - 161: jis0212<<14 | 0x08<<7 | 0x0A, + 331 - 161: jis0212<<14 | 0x08<<7 | 0x2A, + 332 - 161: jis0212<<14 | 0x09<<7 | 0x36, + 333 - 161: jis0212<<14 | 0x0A<<7 | 0x36, + 336 - 161: jis0212<<14 | 0x09<<7 | 0x35, + 337 - 161: jis0212<<14 | 0x0A<<7 | 0x35, + 338 - 161: jis0212<<14 | 0x08<<7 | 0x0C, + 339 - 161: jis0212<<14 | 0x08<<7 | 0x2C, + 340 - 161: jis0212<<14 | 0x09<<7 | 0x38, + 341 - 161: jis0212<<14 | 0x0A<<7 | 0x38, + 342 - 161: jis0212<<14 | 0x09<<7 | 0x3A, + 343 - 161: jis0212<<14 | 0x0A<<7 | 0x3A, + 344 - 161: jis0212<<14 | 0x09<<7 | 0x39, + 345 - 161: jis0212<<14 | 0x0A<<7 | 0x39, + 346 - 161: jis0212<<14 | 0x09<<7 | 0x3B, + 347 - 161: jis0212<<14 | 0x0A<<7 | 0x3B, + 348 - 161: jis0212<<14 | 0x09<<7 | 0x3C, + 349 - 161: jis0212<<14 | 0x0A<<7 | 0x3C, + 350 - 161: jis0212<<14 | 0x09<<7 | 0x3E, + 351 - 161: jis0212<<14 | 0x0A<<7 | 0x3E, + 352 - 161: jis0212<<14 | 0x09<<7 | 0x3D, + 353 - 161: jis0212<<14 | 0x0A<<7 | 0x3D, + 354 - 161: jis0212<<14 | 0x09<<7 | 0x40, + 355 - 161: jis0212<<14 | 0x0A<<7 | 0x40, + 356 - 161: jis0212<<14 | 0x09<<7 | 0x3F, + 357 - 161: jis0212<<14 | 0x0A<<7 | 0x3F, + 358 - 161: jis0212<<14 | 0x08<<7 | 0x0E, + 359 - 161: jis0212<<14 | 0x08<<7 | 0x2E, + 360 - 161: jis0212<<14 | 0x09<<7 | 0x4B, + 361 - 161: jis0212<<14 | 0x0A<<7 | 0x4B, + 362 - 161: jis0212<<14 | 0x09<<7 | 0x48, + 363 - 161: jis0212<<14 | 0x0A<<7 | 0x48, + 364 - 161: jis0212<<14 | 0x09<<7 | 0x45, + 365 - 161: jis0212<<14 | 0x0A<<7 | 0x45, + 366 - 161: jis0212<<14 | 0x09<<7 | 0x4A, + 367 - 161: jis0212<<14 | 0x0A<<7 | 0x4A, + 368 - 161: jis0212<<14 | 0x09<<7 | 0x47, + 369 - 161: jis0212<<14 | 0x0A<<7 | 0x47, + 370 - 161: jis0212<<14 | 0x09<<7 | 0x49, + 371 - 161: jis0212<<14 | 0x0A<<7 | 0x49, + 372 - 161: jis0212<<14 | 0x09<<7 | 0x50, + 373 - 161: jis0212<<14 | 0x0A<<7 | 0x50, + 374 - 161: jis0212<<14 | 0x09<<7 | 0x53, + 375 - 161: jis0212<<14 | 0x0A<<7 | 0x53, + 376 - 161: jis0212<<14 | 0x09<<7 | 0x52, + 377 - 161: jis0212<<14 | 0x09<<7 | 0x54, + 378 - 161: jis0212<<14 | 0x0A<<7 | 0x54, + 379 - 161: jis0212<<14 | 0x09<<7 | 0x56, + 380 - 161: jis0212<<14 | 0x0A<<7 | 0x56, + 381 - 161: jis0212<<14 | 0x09<<7 | 0x55, + 382 - 161: jis0212<<14 | 0x0A<<7 | 0x55, + 461 - 161: jis0212<<14 | 0x09<<7 | 0x05, + 462 - 161: jis0212<<14 | 0x0A<<7 | 0x05, + 463 - 161: jis0212<<14 | 0x09<<7 | 0x22, + 464 - 161: jis0212<<14 | 0x0A<<7 | 0x22, + 465 - 161: jis0212<<14 | 0x09<<7 | 0x34, + 466 - 161: jis0212<<14 | 0x0A<<7 | 0x34, + 467 - 161: jis0212<<14 | 0x09<<7 | 0x46, + 468 - 161: jis0212<<14 | 0x0A<<7 | 0x46, + 469 - 161: jis0212<<14 | 0x09<<7 | 0x4F, + 470 - 161: jis0212<<14 | 0x0A<<7 | 0x4F, + 471 - 161: jis0212<<14 | 0x09<<7 | 0x4C, + 472 - 161: jis0212<<14 | 0x0A<<7 | 0x4C, + 473 - 161: jis0212<<14 | 0x09<<7 | 0x4E, + 474 - 161: jis0212<<14 | 0x0A<<7 | 0x4E, + 475 - 161: jis0212<<14 | 0x09<<7 | 0x4D, + 476 - 161: jis0212<<14 | 0x0A<<7 | 0x4D, + 501 - 161: jis0212<<14 | 0x0A<<7 | 0x18, + 711 - 161: jis0212<<14 | 0x01<<7 | 0x0F, + 728 - 161: jis0212<<14 | 0x01<<7 | 0x0E, + 729 - 161: jis0212<<14 | 0x01<<7 | 0x11, + 730 - 161: jis0212<<14 | 0x01<<7 | 0x15, + 731 - 161: jis0212<<14 | 0x01<<7 | 0x14, + 733 - 161: jis0212<<14 | 0x01<<7 | 0x12, + 900 - 161: jis0212<<14 | 0x01<<7 | 0x17, + 901 - 161: jis0212<<14 | 0x01<<7 | 0x18, + 902 - 161: jis0212<<14 | 0x05<<7 | 0x40, + 904 - 161: jis0212<<14 | 0x05<<7 | 0x41, + 905 - 161: jis0212<<14 | 0x05<<7 | 0x42, + 906 - 161: jis0212<<14 | 0x05<<7 | 0x43, + 908 - 161: jis0212<<14 | 0x05<<7 | 0x46, + 910 - 161: jis0212<<14 | 0x05<<7 | 0x48, + 911 - 161: jis0212<<14 | 0x05<<7 | 0x4B, + 912 - 161: jis0212<<14 | 0x05<<7 | 0x55, + 913 - 161: jis0208<<14 | 0x05<<7 | 0x00, + 914 - 161: jis0208<<14 | 0x05<<7 | 0x01, + 915 - 161: jis0208<<14 | 0x05<<7 | 0x02, + 916 - 161: jis0208<<14 | 0x05<<7 | 0x03, + 917 - 161: jis0208<<14 | 0x05<<7 | 0x04, + 918 - 161: jis0208<<14 | 0x05<<7 | 0x05, + 919 - 161: jis0208<<14 | 0x05<<7 | 0x06, + 920 - 161: jis0208<<14 | 0x05<<7 | 0x07, + 921 - 161: jis0208<<14 | 0x05<<7 | 0x08, + 922 - 161: jis0208<<14 | 0x05<<7 | 0x09, + 923 - 161: jis0208<<14 | 0x05<<7 | 0x0A, + 924 - 161: jis0208<<14 | 0x05<<7 | 0x0B, + 925 - 161: jis0208<<14 | 0x05<<7 | 0x0C, + 926 - 161: jis0208<<14 | 0x05<<7 | 0x0D, + 927 - 161: jis0208<<14 | 0x05<<7 | 0x0E, + 928 - 161: jis0208<<14 | 0x05<<7 | 0x0F, + 929 - 161: jis0208<<14 | 0x05<<7 | 0x10, + 931 - 161: jis0208<<14 | 0x05<<7 | 0x11, + 932 - 161: jis0208<<14 | 0x05<<7 | 0x12, + 933 - 161: jis0208<<14 | 0x05<<7 | 0x13, + 934 - 161: jis0208<<14 | 0x05<<7 | 0x14, + 935 - 161: jis0208<<14 | 0x05<<7 | 0x15, + 936 - 161: jis0208<<14 | 0x05<<7 | 0x16, + 937 - 161: jis0208<<14 | 0x05<<7 | 0x17, + 938 - 161: jis0212<<14 | 0x05<<7 | 0x44, + 939 - 161: jis0212<<14 | 0x05<<7 | 0x49, + 940 - 161: jis0212<<14 | 0x05<<7 | 0x50, + 941 - 161: jis0212<<14 | 0x05<<7 | 0x51, + 942 - 161: jis0212<<14 | 0x05<<7 | 0x52, + 943 - 161: jis0212<<14 | 0x05<<7 | 0x53, + 944 - 161: jis0212<<14 | 0x05<<7 | 0x5A, + 945 - 161: jis0208<<14 | 0x05<<7 | 0x20, + 946 - 161: jis0208<<14 | 0x05<<7 | 0x21, + 947 - 161: jis0208<<14 | 0x05<<7 | 0x22, + 948 - 161: jis0208<<14 | 0x05<<7 | 0x23, + 949 - 161: jis0208<<14 | 0x05<<7 | 0x24, + 950 - 161: jis0208<<14 | 0x05<<7 | 0x25, + 951 - 161: jis0208<<14 | 0x05<<7 | 0x26, + 952 - 161: jis0208<<14 | 0x05<<7 | 0x27, + 953 - 161: jis0208<<14 | 0x05<<7 | 0x28, + 954 - 161: jis0208<<14 | 0x05<<7 | 0x29, + 955 - 161: jis0208<<14 | 0x05<<7 | 0x2A, + 956 - 161: jis0208<<14 | 0x05<<7 | 0x2B, + 957 - 161: jis0208<<14 | 0x05<<7 | 0x2C, + 958 - 161: jis0208<<14 | 0x05<<7 | 0x2D, + 959 - 161: jis0208<<14 | 0x05<<7 | 0x2E, + 960 - 161: jis0208<<14 | 0x05<<7 | 0x2F, + 961 - 161: jis0208<<14 | 0x05<<7 | 0x30, + 962 - 161: jis0212<<14 | 0x05<<7 | 0x57, + 963 - 161: jis0208<<14 | 0x05<<7 | 0x31, + 964 - 161: jis0208<<14 | 0x05<<7 | 0x32, + 965 - 161: jis0208<<14 | 0x05<<7 | 0x33, + 966 - 161: jis0208<<14 | 0x05<<7 | 0x34, + 967 - 161: jis0208<<14 | 0x05<<7 | 0x35, + 968 - 161: jis0208<<14 | 0x05<<7 | 0x36, + 969 - 161: jis0208<<14 | 0x05<<7 | 0x37, + 970 - 161: jis0212<<14 | 0x05<<7 | 0x54, + 971 - 161: jis0212<<14 | 0x05<<7 | 0x59, + 972 - 161: jis0212<<14 | 0x05<<7 | 0x56, + 973 - 161: jis0212<<14 | 0x05<<7 | 0x58, + 974 - 161: jis0212<<14 | 0x05<<7 | 0x5B, + 1025 - 161: jis0208<<14 | 0x06<<7 | 0x06, + 1026 - 161: jis0212<<14 | 0x06<<7 | 0x21, + 1027 - 161: jis0212<<14 | 0x06<<7 | 0x22, + 1028 - 161: jis0212<<14 | 0x06<<7 | 0x23, + 1029 - 161: jis0212<<14 | 0x06<<7 | 0x24, + 1030 - 161: jis0212<<14 | 0x06<<7 | 0x25, + 1031 - 161: jis0212<<14 | 0x06<<7 | 0x26, + 1032 - 161: jis0212<<14 | 0x06<<7 | 0x27, + 1033 - 161: jis0212<<14 | 0x06<<7 | 0x28, + 1034 - 161: jis0212<<14 | 0x06<<7 | 0x29, + 1035 - 161: jis0212<<14 | 0x06<<7 | 0x2A, + 1036 - 161: jis0212<<14 | 0x06<<7 | 0x2B, + 1038 - 161: jis0212<<14 | 0x06<<7 | 0x2C, + 1039 - 161: jis0212<<14 | 0x06<<7 | 0x2D, + 1040 - 161: jis0208<<14 | 0x06<<7 | 0x00, + 1041 - 161: jis0208<<14 | 0x06<<7 | 0x01, + 1042 - 161: jis0208<<14 | 0x06<<7 | 0x02, + 1043 - 161: jis0208<<14 | 0x06<<7 | 0x03, + 1044 - 161: jis0208<<14 | 0x06<<7 | 0x04, + 1045 - 161: jis0208<<14 | 0x06<<7 | 0x05, + 1046 - 161: jis0208<<14 | 0x06<<7 | 0x07, + 1047 - 161: jis0208<<14 | 0x06<<7 | 0x08, + 1048 - 161: jis0208<<14 | 0x06<<7 | 0x09, + 1049 - 161: jis0208<<14 | 0x06<<7 | 0x0A, + 1050 - 161: jis0208<<14 | 0x06<<7 | 0x0B, + 1051 - 161: jis0208<<14 | 0x06<<7 | 0x0C, + 1052 - 161: jis0208<<14 | 0x06<<7 | 0x0D, + 1053 - 161: jis0208<<14 | 0x06<<7 | 0x0E, + 1054 - 161: jis0208<<14 | 0x06<<7 | 0x0F, + 1055 - 161: jis0208<<14 | 0x06<<7 | 0x10, + 1056 - 161: jis0208<<14 | 0x06<<7 | 0x11, + 1057 - 161: jis0208<<14 | 0x06<<7 | 0x12, + 1058 - 161: jis0208<<14 | 0x06<<7 | 0x13, + 1059 - 161: jis0208<<14 | 0x06<<7 | 0x14, + 1060 - 161: jis0208<<14 | 0x06<<7 | 0x15, + 1061 - 161: jis0208<<14 | 0x06<<7 | 0x16, + 1062 - 161: jis0208<<14 | 0x06<<7 | 0x17, + 1063 - 161: jis0208<<14 | 0x06<<7 | 0x18, + 1064 - 161: jis0208<<14 | 0x06<<7 | 0x19, + 1065 - 161: jis0208<<14 | 0x06<<7 | 0x1A, + 1066 - 161: jis0208<<14 | 0x06<<7 | 0x1B, + 1067 - 161: jis0208<<14 | 0x06<<7 | 0x1C, + 1068 - 161: jis0208<<14 | 0x06<<7 | 0x1D, + 1069 - 161: jis0208<<14 | 0x06<<7 | 0x1E, + 1070 - 161: jis0208<<14 | 0x06<<7 | 0x1F, + 1071 - 161: jis0208<<14 | 0x06<<7 | 0x20, + 1072 - 161: jis0208<<14 | 0x06<<7 | 0x30, + 1073 - 161: jis0208<<14 | 0x06<<7 | 0x31, + 1074 - 161: jis0208<<14 | 0x06<<7 | 0x32, + 1075 - 161: jis0208<<14 | 0x06<<7 | 0x33, + 1076 - 161: jis0208<<14 | 0x06<<7 | 0x34, + 1077 - 161: jis0208<<14 | 0x06<<7 | 0x35, + 1078 - 161: jis0208<<14 | 0x06<<7 | 0x37, + 1079 - 161: jis0208<<14 | 0x06<<7 | 0x38, + 1080 - 161: jis0208<<14 | 0x06<<7 | 0x39, + 1081 - 161: jis0208<<14 | 0x06<<7 | 0x3A, + 1082 - 161: jis0208<<14 | 0x06<<7 | 0x3B, + 1083 - 161: jis0208<<14 | 0x06<<7 | 0x3C, + 1084 - 161: jis0208<<14 | 0x06<<7 | 0x3D, + 1085 - 161: jis0208<<14 | 0x06<<7 | 0x3E, + 1086 - 161: jis0208<<14 | 0x06<<7 | 0x3F, + 1087 - 161: jis0208<<14 | 0x06<<7 | 0x40, + 1088 - 161: jis0208<<14 | 0x06<<7 | 0x41, + 1089 - 161: jis0208<<14 | 0x06<<7 | 0x42, + 1090 - 161: jis0208<<14 | 0x06<<7 | 0x43, + 1091 - 161: jis0208<<14 | 0x06<<7 | 0x44, + 1092 - 161: jis0208<<14 | 0x06<<7 | 0x45, + 1093 - 161: jis0208<<14 | 0x06<<7 | 0x46, + 1094 - 161: jis0208<<14 | 0x06<<7 | 0x47, + 1095 - 161: jis0208<<14 | 0x06<<7 | 0x48, + 1096 - 161: jis0208<<14 | 0x06<<7 | 0x49, + 1097 - 161: jis0208<<14 | 0x06<<7 | 0x4A, + 1098 - 161: jis0208<<14 | 0x06<<7 | 0x4B, + 1099 - 161: jis0208<<14 | 0x06<<7 | 0x4C, + 1100 - 161: jis0208<<14 | 0x06<<7 | 0x4D, + 1101 - 161: jis0208<<14 | 0x06<<7 | 0x4E, + 1102 - 161: jis0208<<14 | 0x06<<7 | 0x4F, + 1103 - 161: jis0208<<14 | 0x06<<7 | 0x50, + 1105 - 161: jis0208<<14 | 0x06<<7 | 0x36, + 1106 - 161: jis0212<<14 | 0x06<<7 | 0x51, + 1107 - 161: jis0212<<14 | 0x06<<7 | 0x52, + 1108 - 161: jis0212<<14 | 0x06<<7 | 0x53, + 1109 - 161: jis0212<<14 | 0x06<<7 | 0x54, + 1110 - 161: jis0212<<14 | 0x06<<7 | 0x55, + 1111 - 161: jis0212<<14 | 0x06<<7 | 0x56, + 1112 - 161: jis0212<<14 | 0x06<<7 | 0x57, + 1113 - 161: jis0212<<14 | 0x06<<7 | 0x58, + 1114 - 161: jis0212<<14 | 0x06<<7 | 0x59, + 1115 - 161: jis0212<<14 | 0x06<<7 | 0x5A, + 1116 - 161: jis0212<<14 | 0x06<<7 | 0x5B, + 1118 - 161: jis0212<<14 | 0x06<<7 | 0x5C, + 1119 - 161: jis0212<<14 | 0x06<<7 | 0x5D, +} + +const encode4Low, encode4High = 63785, 64046 + +var encode4 = [...]uint16{ + 63785 - 63785: jis0208<<14 | 0x59<<7 | 0x25, + 63964 - 63785: jis0208<<14 | 0x5B<<7 | 0x2E, + 64014 - 63785: jis0208<<14 | 0x58<<7 | 0x33, + 64015 - 63785: jis0208<<14 | 0x58<<7 | 0x3E, + 64016 - 63785: jis0208<<14 | 0x58<<7 | 0x3F, + 64017 - 63785: jis0208<<14 | 0x58<<7 | 0x54, + 64018 - 63785: jis0208<<14 | 0x59<<7 | 0x1D, + 64019 - 63785: jis0208<<14 | 0x59<<7 | 0x2D, + 64020 - 63785: jis0208<<14 | 0x59<<7 | 0x2F, + 64021 - 63785: jis0208<<14 | 0x59<<7 | 0x5A, + 64022 - 63785: jis0208<<14 | 0x5A<<7 | 0x02, + 64023 - 63785: jis0208<<14 | 0x5A<<7 | 0x19, + 64024 - 63785: jis0208<<14 | 0x5A<<7 | 0x21, + 64025 - 63785: jis0208<<14 | 0x5A<<7 | 0x22, + 64026 - 63785: jis0208<<14 | 0x5A<<7 | 0x23, + 64027 - 63785: jis0208<<14 | 0x5A<<7 | 0x25, + 64028 - 63785: jis0208<<14 | 0x5A<<7 | 0x29, + 64029 - 63785: jis0208<<14 | 0x5A<<7 | 0x2C, + 64030 - 63785: jis0208<<14 | 0x5A<<7 | 0x35, + 64031 - 63785: jis0208<<14 | 0x5A<<7 | 0x40, + 64032 - 63785: jis0208<<14 | 0x5A<<7 | 0x42, + 64033 - 63785: jis0208<<14 | 0x5A<<7 | 0x43, + 64034 - 63785: jis0208<<14 | 0x5A<<7 | 0x4C, + 64035 - 63785: jis0208<<14 | 0x5A<<7 | 0x54, + 64036 - 63785: jis0208<<14 | 0x5A<<7 | 0x56, + 64037 - 63785: jis0208<<14 | 0x5A<<7 | 0x57, + 64038 - 63785: jis0208<<14 | 0x5A<<7 | 0x5A, + 64039 - 63785: jis0208<<14 | 0x5B<<7 | 0x18, + 64040 - 63785: jis0208<<14 | 0x5B<<7 | 0x1F, + 64041 - 63785: jis0208<<14 | 0x5B<<7 | 0x2F, + 64042 - 63785: jis0208<<14 | 0x5B<<7 | 0x3B, + 64043 - 63785: jis0208<<14 | 0x5B<<7 | 0x3C, + 64044 - 63785: jis0208<<14 | 0x5B<<7 | 0x3E, + 64045 - 63785: jis0208<<14 | 0x5B<<7 | 0x4B, +} + +const encode5Low, encode5High = 65281, 65510 + +var encode5 = [...]uint16{ + 65281 - 65281: jis0208<<14 | 0x00<<7 | 0x09, + 65282 - 65281: jis0208<<14 | 0x5B<<7 | 0x5D, + 65283 - 65281: jis0208<<14 | 0x00<<7 | 0x53, + 65284 - 65281: jis0208<<14 | 0x00<<7 | 0x4F, + 65285 - 65281: jis0208<<14 | 0x00<<7 | 0x52, + 65286 - 65281: jis0208<<14 | 0x00<<7 | 0x54, + 65287 - 65281: jis0208<<14 | 0x5B<<7 | 0x5C, + 65288 - 65281: jis0208<<14 | 0x00<<7 | 0x29, + 65289 - 65281: jis0208<<14 | 0x00<<7 | 0x2A, + 65290 - 65281: jis0208<<14 | 0x00<<7 | 0x55, + 65291 - 65281: jis0208<<14 | 0x00<<7 | 0x3B, + 65292 - 65281: jis0208<<14 | 0x00<<7 | 0x03, + 65293 - 65281: jis0208<<14 | 0x00<<7 | 0x3C, + 65294 - 65281: jis0208<<14 | 0x00<<7 | 0x04, + 65295 - 65281: jis0208<<14 | 0x00<<7 | 0x1E, + 65296 - 65281: jis0208<<14 | 0x02<<7 | 0x0F, + 65297 - 65281: jis0208<<14 | 0x02<<7 | 0x10, + 65298 - 65281: jis0208<<14 | 0x02<<7 | 0x11, + 65299 - 65281: jis0208<<14 | 0x02<<7 | 0x12, + 65300 - 65281: jis0208<<14 | 0x02<<7 | 0x13, + 65301 - 65281: jis0208<<14 | 0x02<<7 | 0x14, + 65302 - 65281: jis0208<<14 | 0x02<<7 | 0x15, + 65303 - 65281: jis0208<<14 | 0x02<<7 | 0x16, + 65304 - 65281: jis0208<<14 | 0x02<<7 | 0x17, + 65305 - 65281: jis0208<<14 | 0x02<<7 | 0x18, + 65306 - 65281: jis0208<<14 | 0x00<<7 | 0x06, + 65307 - 65281: jis0208<<14 | 0x00<<7 | 0x07, + 65308 - 65281: jis0208<<14 | 0x00<<7 | 0x42, + 65309 - 65281: jis0208<<14 | 0x00<<7 | 0x40, + 65310 - 65281: jis0208<<14 | 0x00<<7 | 0x43, + 65311 - 65281: jis0208<<14 | 0x00<<7 | 0x08, + 65312 - 65281: jis0208<<14 | 0x00<<7 | 0x56, + 65313 - 65281: jis0208<<14 | 0x02<<7 | 0x20, + 65314 - 65281: jis0208<<14 | 0x02<<7 | 0x21, + 65315 - 65281: jis0208<<14 | 0x02<<7 | 0x22, + 65316 - 65281: jis0208<<14 | 0x02<<7 | 0x23, + 65317 - 65281: jis0208<<14 | 0x02<<7 | 0x24, + 65318 - 65281: jis0208<<14 | 0x02<<7 | 0x25, + 65319 - 65281: jis0208<<14 | 0x02<<7 | 0x26, + 65320 - 65281: jis0208<<14 | 0x02<<7 | 0x27, + 65321 - 65281: jis0208<<14 | 0x02<<7 | 0x28, + 65322 - 65281: jis0208<<14 | 0x02<<7 | 0x29, + 65323 - 65281: jis0208<<14 | 0x02<<7 | 0x2A, + 65324 - 65281: jis0208<<14 | 0x02<<7 | 0x2B, + 65325 - 65281: jis0208<<14 | 0x02<<7 | 0x2C, + 65326 - 65281: jis0208<<14 | 0x02<<7 | 0x2D, + 65327 - 65281: jis0208<<14 | 0x02<<7 | 0x2E, + 65328 - 65281: jis0208<<14 | 0x02<<7 | 0x2F, + 65329 - 65281: jis0208<<14 | 0x02<<7 | 0x30, + 65330 - 65281: jis0208<<14 | 0x02<<7 | 0x31, + 65331 - 65281: jis0208<<14 | 0x02<<7 | 0x32, + 65332 - 65281: jis0208<<14 | 0x02<<7 | 0x33, + 65333 - 65281: jis0208<<14 | 0x02<<7 | 0x34, + 65334 - 65281: jis0208<<14 | 0x02<<7 | 0x35, + 65335 - 65281: jis0208<<14 | 0x02<<7 | 0x36, + 65336 - 65281: jis0208<<14 | 0x02<<7 | 0x37, + 65337 - 65281: jis0208<<14 | 0x02<<7 | 0x38, + 65338 - 65281: jis0208<<14 | 0x02<<7 | 0x39, + 65339 - 65281: jis0208<<14 | 0x00<<7 | 0x2D, + 65340 - 65281: jis0208<<14 | 0x00<<7 | 0x1F, + 65341 - 65281: jis0208<<14 | 0x00<<7 | 0x2E, + 65342 - 65281: jis0208<<14 | 0x00<<7 | 0x0F, + 65343 - 65281: jis0208<<14 | 0x00<<7 | 0x11, + 65344 - 65281: jis0208<<14 | 0x00<<7 | 0x0D, + 65345 - 65281: jis0208<<14 | 0x02<<7 | 0x40, + 65346 - 65281: jis0208<<14 | 0x02<<7 | 0x41, + 65347 - 65281: jis0208<<14 | 0x02<<7 | 0x42, + 65348 - 65281: jis0208<<14 | 0x02<<7 | 0x43, + 65349 - 65281: jis0208<<14 | 0x02<<7 | 0x44, + 65350 - 65281: jis0208<<14 | 0x02<<7 | 0x45, + 65351 - 65281: jis0208<<14 | 0x02<<7 | 0x46, + 65352 - 65281: jis0208<<14 | 0x02<<7 | 0x47, + 65353 - 65281: jis0208<<14 | 0x02<<7 | 0x48, + 65354 - 65281: jis0208<<14 | 0x02<<7 | 0x49, + 65355 - 65281: jis0208<<14 | 0x02<<7 | 0x4A, + 65356 - 65281: jis0208<<14 | 0x02<<7 | 0x4B, + 65357 - 65281: jis0208<<14 | 0x02<<7 | 0x4C, + 65358 - 65281: jis0208<<14 | 0x02<<7 | 0x4D, + 65359 - 65281: jis0208<<14 | 0x02<<7 | 0x4E, + 65360 - 65281: jis0208<<14 | 0x02<<7 | 0x4F, + 65361 - 65281: jis0208<<14 | 0x02<<7 | 0x50, + 65362 - 65281: jis0208<<14 | 0x02<<7 | 0x51, + 65363 - 65281: jis0208<<14 | 0x02<<7 | 0x52, + 65364 - 65281: jis0208<<14 | 0x02<<7 | 0x53, + 65365 - 65281: jis0208<<14 | 0x02<<7 | 0x54, + 65366 - 65281: jis0208<<14 | 0x02<<7 | 0x55, + 65367 - 65281: jis0208<<14 | 0x02<<7 | 0x56, + 65368 - 65281: jis0208<<14 | 0x02<<7 | 0x57, + 65369 - 65281: jis0208<<14 | 0x02<<7 | 0x58, + 65370 - 65281: jis0208<<14 | 0x02<<7 | 0x59, + 65371 - 65281: jis0208<<14 | 0x00<<7 | 0x2F, + 65372 - 65281: jis0208<<14 | 0x00<<7 | 0x22, + 65373 - 65281: jis0208<<14 | 0x00<<7 | 0x30, + 65374 - 65281: jis0208<<14 | 0x00<<7 | 0x20, + 65504 - 65281: jis0208<<14 | 0x00<<7 | 0x50, + 65505 - 65281: jis0208<<14 | 0x00<<7 | 0x51, + 65506 - 65281: jis0208<<14 | 0x01<<7 | 0x2B, + 65507 - 65281: jis0208<<14 | 0x00<<7 | 0x10, + 65508 - 65281: jis0208<<14 | 0x5B<<7 | 0x5B, + 65509 - 65281: jis0208<<14 | 0x00<<7 | 0x4E, +} diff --git a/tests/vendor/golang.org/x/text/encoding/korean/euckr.go b/tests/vendor/golang.org/x/text/encoding/korean/euckr.go new file mode 100644 index 000000000..034337f5d --- /dev/null +++ b/tests/vendor/golang.org/x/text/encoding/korean/euckr.go @@ -0,0 +1,177 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package korean + +import ( + "unicode/utf8" + + "golang.org/x/text/encoding" + "golang.org/x/text/encoding/internal" + "golang.org/x/text/encoding/internal/identifier" + "golang.org/x/text/transform" +) + +// All is a list of all defined encodings in this package. +var All = []encoding.Encoding{EUCKR} + +// EUCKR is the EUC-KR encoding, also known as Code Page 949. +var EUCKR encoding.Encoding = &eucKR + +var eucKR = internal.Encoding{ + &internal.SimpleEncoding{eucKRDecoder{}, eucKREncoder{}}, + "EUC-KR", + identifier.EUCKR, +} + +type eucKRDecoder struct{ transform.NopResetter } + +func (eucKRDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + r, size := rune(0), 0 +loop: + for ; nSrc < len(src); nSrc += size { + switch c0 := src[nSrc]; { + case c0 < utf8.RuneSelf: + r, size = rune(c0), 1 + + case 0x81 <= c0 && c0 < 0xff: + if nSrc+1 >= len(src) { + if !atEOF { + err = transform.ErrShortSrc + break loop + } + r, size = utf8.RuneError, 1 + break + } + c1 := src[nSrc+1] + size = 2 + if c0 < 0xc7 { + r = 178 * rune(c0-0x81) + switch { + case 0x41 <= c1 && c1 < 0x5b: + r += rune(c1) - (0x41 - 0*26) + case 0x61 <= c1 && c1 < 0x7b: + r += rune(c1) - (0x61 - 1*26) + case 0x81 <= c1 && c1 < 0xff: + r += rune(c1) - (0x81 - 2*26) + default: + goto decError + } + } else if 0xa1 <= c1 && c1 < 0xff { + r = 178*(0xc7-0x81) + rune(c0-0xc7)*94 + rune(c1-0xa1) + } else { + goto decError + } + if int(r) < len(decode) { + r = rune(decode[r]) + if r != 0 { + break + } + } + decError: + r = utf8.RuneError + if c1 < utf8.RuneSelf { + size = 1 + } + + default: + r, size = utf8.RuneError, 1 + break + } + + if nDst+utf8.RuneLen(r) > len(dst) { + err = transform.ErrShortDst + break + } + nDst += utf8.EncodeRune(dst[nDst:], r) + } + return nDst, nSrc, err +} + +type eucKREncoder struct{ transform.NopResetter } + +func (eucKREncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + r, size := rune(0), 0 + for ; nSrc < len(src); nSrc += size { + r = rune(src[nSrc]) + + // Decode a 1-byte rune. + if r < utf8.RuneSelf { + size = 1 + + if nDst >= len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst] = uint8(r) + nDst++ + continue + + } else { + // Decode a multi-byte rune. + r, size = utf8.DecodeRune(src[nSrc:]) + if size == 1 { + // All valid runes of size 1 (those below utf8.RuneSelf) were + // handled above. We have invalid UTF-8 or we haven't seen the + // full character yet. + if !atEOF && !utf8.FullRune(src[nSrc:]) { + err = transform.ErrShortSrc + break + } + } + + // func init checks that the switch covers all tables. + switch { + case encode0Low <= r && r < encode0High: + if r = rune(encode0[r-encode0Low]); r != 0 { + goto write2 + } + case encode1Low <= r && r < encode1High: + if r = rune(encode1[r-encode1Low]); r != 0 { + goto write2 + } + case encode2Low <= r && r < encode2High: + if r = rune(encode2[r-encode2Low]); r != 0 { + goto write2 + } + case encode3Low <= r && r < encode3High: + if r = rune(encode3[r-encode3Low]); r != 0 { + goto write2 + } + case encode4Low <= r && r < encode4High: + if r = rune(encode4[r-encode4Low]); r != 0 { + goto write2 + } + case encode5Low <= r && r < encode5High: + if r = rune(encode5[r-encode5Low]); r != 0 { + goto write2 + } + case encode6Low <= r && r < encode6High: + if r = rune(encode6[r-encode6Low]); r != 0 { + goto write2 + } + } + err = internal.ErrASCIIReplacement + break + } + + write2: + if nDst+2 > len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst+0] = uint8(r >> 8) + dst[nDst+1] = uint8(r) + nDst += 2 + continue + } + return nDst, nSrc, err +} + +func init() { + // Check that the hard-coded encode switch covers all tables. + if numEncodeTables != 7 { + panic("bad numEncodeTables") + } +} diff --git a/tests/vendor/golang.org/x/text/encoding/korean/tables.go b/tests/vendor/golang.org/x/text/encoding/korean/tables.go new file mode 100644 index 000000000..0480e85c4 --- /dev/null +++ b/tests/vendor/golang.org/x/text/encoding/korean/tables.go @@ -0,0 +1,34152 @@ +// generated by go run maketables.go; DO NOT EDIT + +// Package korean provides Korean encodings such as EUC-KR. +package korean // import "golang.org/x/text/encoding/korean" + +// decode is the decoding table from EUC-KR code to Unicode. +// It is defined at http://encoding.spec.whatwg.org/index-euc-kr.txt +var decode = [...]uint16{ + 0: 0xAC02, + 1: 0xAC03, + 2: 0xAC05, + 3: 0xAC06, + 4: 0xAC0B, + 5: 0xAC0C, + 6: 0xAC0D, + 7: 0xAC0E, + 8: 0xAC0F, + 9: 0xAC18, + 10: 0xAC1E, + 11: 0xAC1F, + 12: 0xAC21, + 13: 0xAC22, + 14: 0xAC23, + 15: 0xAC25, + 16: 0xAC26, + 17: 0xAC27, + 18: 0xAC28, + 19: 0xAC29, + 20: 0xAC2A, + 21: 0xAC2B, + 22: 0xAC2E, + 23: 0xAC32, + 24: 0xAC33, + 25: 0xAC34, + 26: 0xAC35, + 27: 0xAC36, + 28: 0xAC37, + 29: 0xAC3A, + 30: 0xAC3B, + 31: 0xAC3D, + 32: 0xAC3E, + 33: 0xAC3F, + 34: 0xAC41, + 35: 0xAC42, + 36: 0xAC43, + 37: 0xAC44, + 38: 0xAC45, + 39: 0xAC46, + 40: 0xAC47, + 41: 0xAC48, + 42: 0xAC49, + 43: 0xAC4A, + 44: 0xAC4C, + 45: 0xAC4E, + 46: 0xAC4F, + 47: 0xAC50, + 48: 0xAC51, + 49: 0xAC52, + 50: 0xAC53, + 51: 0xAC55, + 52: 0xAC56, + 53: 0xAC57, + 54: 0xAC59, + 55: 0xAC5A, + 56: 0xAC5B, + 57: 0xAC5D, + 58: 0xAC5E, + 59: 0xAC5F, + 60: 0xAC60, + 61: 0xAC61, + 62: 0xAC62, + 63: 0xAC63, + 64: 0xAC64, + 65: 0xAC65, + 66: 0xAC66, + 67: 0xAC67, + 68: 0xAC68, + 69: 0xAC69, + 70: 0xAC6A, + 71: 0xAC6B, + 72: 0xAC6C, + 73: 0xAC6D, + 74: 0xAC6E, + 75: 0xAC6F, + 76: 0xAC72, + 77: 0xAC73, + 78: 0xAC75, + 79: 0xAC76, + 80: 0xAC79, + 81: 0xAC7B, + 82: 0xAC7C, + 83: 0xAC7D, + 84: 0xAC7E, + 85: 0xAC7F, + 86: 0xAC82, + 87: 0xAC87, + 88: 0xAC88, + 89: 0xAC8D, + 90: 0xAC8E, + 91: 0xAC8F, + 92: 0xAC91, + 93: 0xAC92, + 94: 0xAC93, + 95: 0xAC95, + 96: 0xAC96, + 97: 0xAC97, + 98: 0xAC98, + 99: 0xAC99, + 100: 0xAC9A, + 101: 0xAC9B, + 102: 0xAC9E, + 103: 0xACA2, + 104: 0xACA3, + 105: 0xACA4, + 106: 0xACA5, + 107: 0xACA6, + 108: 0xACA7, + 109: 0xACAB, + 110: 0xACAD, + 111: 0xACAE, + 112: 0xACB1, + 113: 0xACB2, + 114: 0xACB3, + 115: 0xACB4, + 116: 0xACB5, + 117: 0xACB6, + 118: 0xACB7, + 119: 0xACBA, + 120: 0xACBE, + 121: 0xACBF, + 122: 0xACC0, + 123: 0xACC2, + 124: 0xACC3, + 125: 0xACC5, + 126: 0xACC6, + 127: 0xACC7, + 128: 0xACC9, + 129: 0xACCA, + 130: 0xACCB, + 131: 0xACCD, + 132: 0xACCE, + 133: 0xACCF, + 134: 0xACD0, + 135: 0xACD1, + 136: 0xACD2, + 137: 0xACD3, + 138: 0xACD4, + 139: 0xACD6, + 140: 0xACD8, + 141: 0xACD9, + 142: 0xACDA, + 143: 0xACDB, + 144: 0xACDC, + 145: 0xACDD, + 146: 0xACDE, + 147: 0xACDF, + 148: 0xACE2, + 149: 0xACE3, + 150: 0xACE5, + 151: 0xACE6, + 152: 0xACE9, + 153: 0xACEB, + 154: 0xACED, + 155: 0xACEE, + 156: 0xACF2, + 157: 0xACF4, + 158: 0xACF7, + 159: 0xACF8, + 160: 0xACF9, + 161: 0xACFA, + 162: 0xACFB, + 163: 0xACFE, + 164: 0xACFF, + 165: 0xAD01, + 166: 0xAD02, + 167: 0xAD03, + 168: 0xAD05, + 169: 0xAD07, + 170: 0xAD08, + 171: 0xAD09, + 172: 0xAD0A, + 173: 0xAD0B, + 174: 0xAD0E, + 175: 0xAD10, + 176: 0xAD12, + 177: 0xAD13, + 178: 0xAD14, + 179: 0xAD15, + 180: 0xAD16, + 181: 0xAD17, + 182: 0xAD19, + 183: 0xAD1A, + 184: 0xAD1B, + 185: 0xAD1D, + 186: 0xAD1E, + 187: 0xAD1F, + 188: 0xAD21, + 189: 0xAD22, + 190: 0xAD23, + 191: 0xAD24, + 192: 0xAD25, + 193: 0xAD26, + 194: 0xAD27, + 195: 0xAD28, + 196: 0xAD2A, + 197: 0xAD2B, + 198: 0xAD2E, + 199: 0xAD2F, + 200: 0xAD30, + 201: 0xAD31, + 202: 0xAD32, + 203: 0xAD33, + 204: 0xAD36, + 205: 0xAD37, + 206: 0xAD39, + 207: 0xAD3A, + 208: 0xAD3B, + 209: 0xAD3D, + 210: 0xAD3E, + 211: 0xAD3F, + 212: 0xAD40, + 213: 0xAD41, + 214: 0xAD42, + 215: 0xAD43, + 216: 0xAD46, + 217: 0xAD48, + 218: 0xAD4A, + 219: 0xAD4B, + 220: 0xAD4C, + 221: 0xAD4D, + 222: 0xAD4E, + 223: 0xAD4F, + 224: 0xAD51, + 225: 0xAD52, + 226: 0xAD53, + 227: 0xAD55, + 228: 0xAD56, + 229: 0xAD57, + 230: 0xAD59, + 231: 0xAD5A, + 232: 0xAD5B, + 233: 0xAD5C, + 234: 0xAD5D, + 235: 0xAD5E, + 236: 0xAD5F, + 237: 0xAD60, + 238: 0xAD62, + 239: 0xAD64, + 240: 0xAD65, + 241: 0xAD66, + 242: 0xAD67, + 243: 0xAD68, + 244: 0xAD69, + 245: 0xAD6A, + 246: 0xAD6B, + 247: 0xAD6E, + 248: 0xAD6F, + 249: 0xAD71, + 250: 0xAD72, + 251: 0xAD77, + 252: 0xAD78, + 253: 0xAD79, + 254: 0xAD7A, + 255: 0xAD7E, + 256: 0xAD80, + 257: 0xAD83, + 258: 0xAD84, + 259: 0xAD85, + 260: 0xAD86, + 261: 0xAD87, + 262: 0xAD8A, + 263: 0xAD8B, + 264: 0xAD8D, + 265: 0xAD8E, + 266: 0xAD8F, + 267: 0xAD91, + 268: 0xAD92, + 269: 0xAD93, + 270: 0xAD94, + 271: 0xAD95, + 272: 0xAD96, + 273: 0xAD97, + 274: 0xAD98, + 275: 0xAD99, + 276: 0xAD9A, + 277: 0xAD9B, + 278: 0xAD9E, + 279: 0xAD9F, + 280: 0xADA0, + 281: 0xADA1, + 282: 0xADA2, + 283: 0xADA3, + 284: 0xADA5, + 285: 0xADA6, + 286: 0xADA7, + 287: 0xADA8, + 288: 0xADA9, + 289: 0xADAA, + 290: 0xADAB, + 291: 0xADAC, + 292: 0xADAD, + 293: 0xADAE, + 294: 0xADAF, + 295: 0xADB0, + 296: 0xADB1, + 297: 0xADB2, + 298: 0xADB3, + 299: 0xADB4, + 300: 0xADB5, + 301: 0xADB6, + 302: 0xADB8, + 303: 0xADB9, + 304: 0xADBA, + 305: 0xADBB, + 306: 0xADBC, + 307: 0xADBD, + 308: 0xADBE, + 309: 0xADBF, + 310: 0xADC2, + 311: 0xADC3, + 312: 0xADC5, + 313: 0xADC6, + 314: 0xADC7, + 315: 0xADC9, + 316: 0xADCA, + 317: 0xADCB, + 318: 0xADCC, + 319: 0xADCD, + 320: 0xADCE, + 321: 0xADCF, + 322: 0xADD2, + 323: 0xADD4, + 324: 0xADD5, + 325: 0xADD6, + 326: 0xADD7, + 327: 0xADD8, + 328: 0xADD9, + 329: 0xADDA, + 330: 0xADDB, + 331: 0xADDD, + 332: 0xADDE, + 333: 0xADDF, + 334: 0xADE1, + 335: 0xADE2, + 336: 0xADE3, + 337: 0xADE5, + 338: 0xADE6, + 339: 0xADE7, + 340: 0xADE8, + 341: 0xADE9, + 342: 0xADEA, + 343: 0xADEB, + 344: 0xADEC, + 345: 0xADED, + 346: 0xADEE, + 347: 0xADEF, + 348: 0xADF0, + 349: 0xADF1, + 350: 0xADF2, + 351: 0xADF3, + 352: 0xADF4, + 353: 0xADF5, + 354: 0xADF6, + 355: 0xADF7, + 356: 0xADFA, + 357: 0xADFB, + 358: 0xADFD, + 359: 0xADFE, + 360: 0xAE02, + 361: 0xAE03, + 362: 0xAE04, + 363: 0xAE05, + 364: 0xAE06, + 365: 0xAE07, + 366: 0xAE0A, + 367: 0xAE0C, + 368: 0xAE0E, + 369: 0xAE0F, + 370: 0xAE10, + 371: 0xAE11, + 372: 0xAE12, + 373: 0xAE13, + 374: 0xAE15, + 375: 0xAE16, + 376: 0xAE17, + 377: 0xAE18, + 378: 0xAE19, + 379: 0xAE1A, + 380: 0xAE1B, + 381: 0xAE1C, + 382: 0xAE1D, + 383: 0xAE1E, + 384: 0xAE1F, + 385: 0xAE20, + 386: 0xAE21, + 387: 0xAE22, + 388: 0xAE23, + 389: 0xAE24, + 390: 0xAE25, + 391: 0xAE26, + 392: 0xAE27, + 393: 0xAE28, + 394: 0xAE29, + 395: 0xAE2A, + 396: 0xAE2B, + 397: 0xAE2C, + 398: 0xAE2D, + 399: 0xAE2E, + 400: 0xAE2F, + 401: 0xAE32, + 402: 0xAE33, + 403: 0xAE35, + 404: 0xAE36, + 405: 0xAE39, + 406: 0xAE3B, + 407: 0xAE3C, + 408: 0xAE3D, + 409: 0xAE3E, + 410: 0xAE3F, + 411: 0xAE42, + 412: 0xAE44, + 413: 0xAE47, + 414: 0xAE48, + 415: 0xAE49, + 416: 0xAE4B, + 417: 0xAE4F, + 418: 0xAE51, + 419: 0xAE52, + 420: 0xAE53, + 421: 0xAE55, + 422: 0xAE57, + 423: 0xAE58, + 424: 0xAE59, + 425: 0xAE5A, + 426: 0xAE5B, + 427: 0xAE5E, + 428: 0xAE62, + 429: 0xAE63, + 430: 0xAE64, + 431: 0xAE66, + 432: 0xAE67, + 433: 0xAE6A, + 434: 0xAE6B, + 435: 0xAE6D, + 436: 0xAE6E, + 437: 0xAE6F, + 438: 0xAE71, + 439: 0xAE72, + 440: 0xAE73, + 441: 0xAE74, + 442: 0xAE75, + 443: 0xAE76, + 444: 0xAE77, + 445: 0xAE7A, + 446: 0xAE7E, + 447: 0xAE7F, + 448: 0xAE80, + 449: 0xAE81, + 450: 0xAE82, + 451: 0xAE83, + 452: 0xAE86, + 453: 0xAE87, + 454: 0xAE88, + 455: 0xAE89, + 456: 0xAE8A, + 457: 0xAE8B, + 458: 0xAE8D, + 459: 0xAE8E, + 460: 0xAE8F, + 461: 0xAE90, + 462: 0xAE91, + 463: 0xAE92, + 464: 0xAE93, + 465: 0xAE94, + 466: 0xAE95, + 467: 0xAE96, + 468: 0xAE97, + 469: 0xAE98, + 470: 0xAE99, + 471: 0xAE9A, + 472: 0xAE9B, + 473: 0xAE9C, + 474: 0xAE9D, + 475: 0xAE9E, + 476: 0xAE9F, + 477: 0xAEA0, + 478: 0xAEA1, + 479: 0xAEA2, + 480: 0xAEA3, + 481: 0xAEA4, + 482: 0xAEA5, + 483: 0xAEA6, + 484: 0xAEA7, + 485: 0xAEA8, + 486: 0xAEA9, + 487: 0xAEAA, + 488: 0xAEAB, + 489: 0xAEAC, + 490: 0xAEAD, + 491: 0xAEAE, + 492: 0xAEAF, + 493: 0xAEB0, + 494: 0xAEB1, + 495: 0xAEB2, + 496: 0xAEB3, + 497: 0xAEB4, + 498: 0xAEB5, + 499: 0xAEB6, + 500: 0xAEB7, + 501: 0xAEB8, + 502: 0xAEB9, + 503: 0xAEBA, + 504: 0xAEBB, + 505: 0xAEBF, + 506: 0xAEC1, + 507: 0xAEC2, + 508: 0xAEC3, + 509: 0xAEC5, + 510: 0xAEC6, + 511: 0xAEC7, + 512: 0xAEC8, + 513: 0xAEC9, + 514: 0xAECA, + 515: 0xAECB, + 516: 0xAECE, + 517: 0xAED2, + 518: 0xAED3, + 519: 0xAED4, + 520: 0xAED5, + 521: 0xAED6, + 522: 0xAED7, + 523: 0xAEDA, + 524: 0xAEDB, + 525: 0xAEDD, + 526: 0xAEDE, + 527: 0xAEDF, + 528: 0xAEE0, + 529: 0xAEE1, + 530: 0xAEE2, + 531: 0xAEE3, + 532: 0xAEE4, + 533: 0xAEE5, + 534: 0xAEE6, + 535: 0xAEE7, + 536: 0xAEE9, + 537: 0xAEEA, + 538: 0xAEEC, + 539: 0xAEEE, + 540: 0xAEEF, + 541: 0xAEF0, + 542: 0xAEF1, + 543: 0xAEF2, + 544: 0xAEF3, + 545: 0xAEF5, + 546: 0xAEF6, + 547: 0xAEF7, + 548: 0xAEF9, + 549: 0xAEFA, + 550: 0xAEFB, + 551: 0xAEFD, + 552: 0xAEFE, + 553: 0xAEFF, + 554: 0xAF00, + 555: 0xAF01, + 556: 0xAF02, + 557: 0xAF03, + 558: 0xAF04, + 559: 0xAF05, + 560: 0xAF06, + 561: 0xAF09, + 562: 0xAF0A, + 563: 0xAF0B, + 564: 0xAF0C, + 565: 0xAF0E, + 566: 0xAF0F, + 567: 0xAF11, + 568: 0xAF12, + 569: 0xAF13, + 570: 0xAF14, + 571: 0xAF15, + 572: 0xAF16, + 573: 0xAF17, + 574: 0xAF18, + 575: 0xAF19, + 576: 0xAF1A, + 577: 0xAF1B, + 578: 0xAF1C, + 579: 0xAF1D, + 580: 0xAF1E, + 581: 0xAF1F, + 582: 0xAF20, + 583: 0xAF21, + 584: 0xAF22, + 585: 0xAF23, + 586: 0xAF24, + 587: 0xAF25, + 588: 0xAF26, + 589: 0xAF27, + 590: 0xAF28, + 591: 0xAF29, + 592: 0xAF2A, + 593: 0xAF2B, + 594: 0xAF2E, + 595: 0xAF2F, + 596: 0xAF31, + 597: 0xAF33, + 598: 0xAF35, + 599: 0xAF36, + 600: 0xAF37, + 601: 0xAF38, + 602: 0xAF39, + 603: 0xAF3A, + 604: 0xAF3B, + 605: 0xAF3E, + 606: 0xAF40, + 607: 0xAF44, + 608: 0xAF45, + 609: 0xAF46, + 610: 0xAF47, + 611: 0xAF4A, + 612: 0xAF4B, + 613: 0xAF4C, + 614: 0xAF4D, + 615: 0xAF4E, + 616: 0xAF4F, + 617: 0xAF51, + 618: 0xAF52, + 619: 0xAF53, + 620: 0xAF54, + 621: 0xAF55, + 622: 0xAF56, + 623: 0xAF57, + 624: 0xAF58, + 625: 0xAF59, + 626: 0xAF5A, + 627: 0xAF5B, + 628: 0xAF5E, + 629: 0xAF5F, + 630: 0xAF60, + 631: 0xAF61, + 632: 0xAF62, + 633: 0xAF63, + 634: 0xAF66, + 635: 0xAF67, + 636: 0xAF68, + 637: 0xAF69, + 638: 0xAF6A, + 639: 0xAF6B, + 640: 0xAF6C, + 641: 0xAF6D, + 642: 0xAF6E, + 643: 0xAF6F, + 644: 0xAF70, + 645: 0xAF71, + 646: 0xAF72, + 647: 0xAF73, + 648: 0xAF74, + 649: 0xAF75, + 650: 0xAF76, + 651: 0xAF77, + 652: 0xAF78, + 653: 0xAF7A, + 654: 0xAF7B, + 655: 0xAF7C, + 656: 0xAF7D, + 657: 0xAF7E, + 658: 0xAF7F, + 659: 0xAF81, + 660: 0xAF82, + 661: 0xAF83, + 662: 0xAF85, + 663: 0xAF86, + 664: 0xAF87, + 665: 0xAF89, + 666: 0xAF8A, + 667: 0xAF8B, + 668: 0xAF8C, + 669: 0xAF8D, + 670: 0xAF8E, + 671: 0xAF8F, + 672: 0xAF92, + 673: 0xAF93, + 674: 0xAF94, + 675: 0xAF96, + 676: 0xAF97, + 677: 0xAF98, + 678: 0xAF99, + 679: 0xAF9A, + 680: 0xAF9B, + 681: 0xAF9D, + 682: 0xAF9E, + 683: 0xAF9F, + 684: 0xAFA0, + 685: 0xAFA1, + 686: 0xAFA2, + 687: 0xAFA3, + 688: 0xAFA4, + 689: 0xAFA5, + 690: 0xAFA6, + 691: 0xAFA7, + 692: 0xAFA8, + 693: 0xAFA9, + 694: 0xAFAA, + 695: 0xAFAB, + 696: 0xAFAC, + 697: 0xAFAD, + 698: 0xAFAE, + 699: 0xAFAF, + 700: 0xAFB0, + 701: 0xAFB1, + 702: 0xAFB2, + 703: 0xAFB3, + 704: 0xAFB4, + 705: 0xAFB5, + 706: 0xAFB6, + 707: 0xAFB7, + 708: 0xAFBA, + 709: 0xAFBB, + 710: 0xAFBD, + 711: 0xAFBE, + 712: 0xAFBF, + 713: 0xAFC1, + 714: 0xAFC2, + 715: 0xAFC3, + 716: 0xAFC4, + 717: 0xAFC5, + 718: 0xAFC6, + 719: 0xAFCA, + 720: 0xAFCC, + 721: 0xAFCF, + 722: 0xAFD0, + 723: 0xAFD1, + 724: 0xAFD2, + 725: 0xAFD3, + 726: 0xAFD5, + 727: 0xAFD6, + 728: 0xAFD7, + 729: 0xAFD8, + 730: 0xAFD9, + 731: 0xAFDA, + 732: 0xAFDB, + 733: 0xAFDD, + 734: 0xAFDE, + 735: 0xAFDF, + 736: 0xAFE0, + 737: 0xAFE1, + 738: 0xAFE2, + 739: 0xAFE3, + 740: 0xAFE4, + 741: 0xAFE5, + 742: 0xAFE6, + 743: 0xAFE7, + 744: 0xAFEA, + 745: 0xAFEB, + 746: 0xAFEC, + 747: 0xAFED, + 748: 0xAFEE, + 749: 0xAFEF, + 750: 0xAFF2, + 751: 0xAFF3, + 752: 0xAFF5, + 753: 0xAFF6, + 754: 0xAFF7, + 755: 0xAFF9, + 756: 0xAFFA, + 757: 0xAFFB, + 758: 0xAFFC, + 759: 0xAFFD, + 760: 0xAFFE, + 761: 0xAFFF, + 762: 0xB002, + 763: 0xB003, + 764: 0xB005, + 765: 0xB006, + 766: 0xB007, + 767: 0xB008, + 768: 0xB009, + 769: 0xB00A, + 770: 0xB00B, + 771: 0xB00D, + 772: 0xB00E, + 773: 0xB00F, + 774: 0xB011, + 775: 0xB012, + 776: 0xB013, + 777: 0xB015, + 778: 0xB016, + 779: 0xB017, + 780: 0xB018, + 781: 0xB019, + 782: 0xB01A, + 783: 0xB01B, + 784: 0xB01E, + 785: 0xB01F, + 786: 0xB020, + 787: 0xB021, + 788: 0xB022, + 789: 0xB023, + 790: 0xB024, + 791: 0xB025, + 792: 0xB026, + 793: 0xB027, + 794: 0xB029, + 795: 0xB02A, + 796: 0xB02B, + 797: 0xB02C, + 798: 0xB02D, + 799: 0xB02E, + 800: 0xB02F, + 801: 0xB030, + 802: 0xB031, + 803: 0xB032, + 804: 0xB033, + 805: 0xB034, + 806: 0xB035, + 807: 0xB036, + 808: 0xB037, + 809: 0xB038, + 810: 0xB039, + 811: 0xB03A, + 812: 0xB03B, + 813: 0xB03C, + 814: 0xB03D, + 815: 0xB03E, + 816: 0xB03F, + 817: 0xB040, + 818: 0xB041, + 819: 0xB042, + 820: 0xB043, + 821: 0xB046, + 822: 0xB047, + 823: 0xB049, + 824: 0xB04B, + 825: 0xB04D, + 826: 0xB04F, + 827: 0xB050, + 828: 0xB051, + 829: 0xB052, + 830: 0xB056, + 831: 0xB058, + 832: 0xB05A, + 833: 0xB05B, + 834: 0xB05C, + 835: 0xB05E, + 836: 0xB05F, + 837: 0xB060, + 838: 0xB061, + 839: 0xB062, + 840: 0xB063, + 841: 0xB064, + 842: 0xB065, + 843: 0xB066, + 844: 0xB067, + 845: 0xB068, + 846: 0xB069, + 847: 0xB06A, + 848: 0xB06B, + 849: 0xB06C, + 850: 0xB06D, + 851: 0xB06E, + 852: 0xB06F, + 853: 0xB070, + 854: 0xB071, + 855: 0xB072, + 856: 0xB073, + 857: 0xB074, + 858: 0xB075, + 859: 0xB076, + 860: 0xB077, + 861: 0xB078, + 862: 0xB079, + 863: 0xB07A, + 864: 0xB07B, + 865: 0xB07E, + 866: 0xB07F, + 867: 0xB081, + 868: 0xB082, + 869: 0xB083, + 870: 0xB085, + 871: 0xB086, + 872: 0xB087, + 873: 0xB088, + 874: 0xB089, + 875: 0xB08A, + 876: 0xB08B, + 877: 0xB08E, + 878: 0xB090, + 879: 0xB092, + 880: 0xB093, + 881: 0xB094, + 882: 0xB095, + 883: 0xB096, + 884: 0xB097, + 885: 0xB09B, + 886: 0xB09D, + 887: 0xB09E, + 888: 0xB0A3, + 889: 0xB0A4, + 890: 0xB0A5, + 891: 0xB0A6, + 892: 0xB0A7, + 893: 0xB0AA, + 894: 0xB0B0, + 895: 0xB0B2, + 896: 0xB0B6, + 897: 0xB0B7, + 898: 0xB0B9, + 899: 0xB0BA, + 900: 0xB0BB, + 901: 0xB0BD, + 902: 0xB0BE, + 903: 0xB0BF, + 904: 0xB0C0, + 905: 0xB0C1, + 906: 0xB0C2, + 907: 0xB0C3, + 908: 0xB0C6, + 909: 0xB0CA, + 910: 0xB0CB, + 911: 0xB0CC, + 912: 0xB0CD, + 913: 0xB0CE, + 914: 0xB0CF, + 915: 0xB0D2, + 916: 0xB0D3, + 917: 0xB0D5, + 918: 0xB0D6, + 919: 0xB0D7, + 920: 0xB0D9, + 921: 0xB0DA, + 922: 0xB0DB, + 923: 0xB0DC, + 924: 0xB0DD, + 925: 0xB0DE, + 926: 0xB0DF, + 927: 0xB0E1, + 928: 0xB0E2, + 929: 0xB0E3, + 930: 0xB0E4, + 931: 0xB0E6, + 932: 0xB0E7, + 933: 0xB0E8, + 934: 0xB0E9, + 935: 0xB0EA, + 936: 0xB0EB, + 937: 0xB0EC, + 938: 0xB0ED, + 939: 0xB0EE, + 940: 0xB0EF, + 941: 0xB0F0, + 942: 0xB0F1, + 943: 0xB0F2, + 944: 0xB0F3, + 945: 0xB0F4, + 946: 0xB0F5, + 947: 0xB0F6, + 948: 0xB0F7, + 949: 0xB0F8, + 950: 0xB0F9, + 951: 0xB0FA, + 952: 0xB0FB, + 953: 0xB0FC, + 954: 0xB0FD, + 955: 0xB0FE, + 956: 0xB0FF, + 957: 0xB100, + 958: 0xB101, + 959: 0xB102, + 960: 0xB103, + 961: 0xB104, + 962: 0xB105, + 963: 0xB106, + 964: 0xB107, + 965: 0xB10A, + 966: 0xB10D, + 967: 0xB10E, + 968: 0xB10F, + 969: 0xB111, + 970: 0xB114, + 971: 0xB115, + 972: 0xB116, + 973: 0xB117, + 974: 0xB11A, + 975: 0xB11E, + 976: 0xB11F, + 977: 0xB120, + 978: 0xB121, + 979: 0xB122, + 980: 0xB126, + 981: 0xB127, + 982: 0xB129, + 983: 0xB12A, + 984: 0xB12B, + 985: 0xB12D, + 986: 0xB12E, + 987: 0xB12F, + 988: 0xB130, + 989: 0xB131, + 990: 0xB132, + 991: 0xB133, + 992: 0xB136, + 993: 0xB13A, + 994: 0xB13B, + 995: 0xB13C, + 996: 0xB13D, + 997: 0xB13E, + 998: 0xB13F, + 999: 0xB142, + 1000: 0xB143, + 1001: 0xB145, + 1002: 0xB146, + 1003: 0xB147, + 1004: 0xB149, + 1005: 0xB14A, + 1006: 0xB14B, + 1007: 0xB14C, + 1008: 0xB14D, + 1009: 0xB14E, + 1010: 0xB14F, + 1011: 0xB152, + 1012: 0xB153, + 1013: 0xB156, + 1014: 0xB157, + 1015: 0xB159, + 1016: 0xB15A, + 1017: 0xB15B, + 1018: 0xB15D, + 1019: 0xB15E, + 1020: 0xB15F, + 1021: 0xB161, + 1022: 0xB162, + 1023: 0xB163, + 1024: 0xB164, + 1025: 0xB165, + 1026: 0xB166, + 1027: 0xB167, + 1028: 0xB168, + 1029: 0xB169, + 1030: 0xB16A, + 1031: 0xB16B, + 1032: 0xB16C, + 1033: 0xB16D, + 1034: 0xB16E, + 1035: 0xB16F, + 1036: 0xB170, + 1037: 0xB171, + 1038: 0xB172, + 1039: 0xB173, + 1040: 0xB174, + 1041: 0xB175, + 1042: 0xB176, + 1043: 0xB177, + 1044: 0xB17A, + 1045: 0xB17B, + 1046: 0xB17D, + 1047: 0xB17E, + 1048: 0xB17F, + 1049: 0xB181, + 1050: 0xB183, + 1051: 0xB184, + 1052: 0xB185, + 1053: 0xB186, + 1054: 0xB187, + 1055: 0xB18A, + 1056: 0xB18C, + 1057: 0xB18E, + 1058: 0xB18F, + 1059: 0xB190, + 1060: 0xB191, + 1061: 0xB195, + 1062: 0xB196, + 1063: 0xB197, + 1064: 0xB199, + 1065: 0xB19A, + 1066: 0xB19B, + 1067: 0xB19D, + 1068: 0xB19E, + 1069: 0xB19F, + 1070: 0xB1A0, + 1071: 0xB1A1, + 1072: 0xB1A2, + 1073: 0xB1A3, + 1074: 0xB1A4, + 1075: 0xB1A5, + 1076: 0xB1A6, + 1077: 0xB1A7, + 1078: 0xB1A9, + 1079: 0xB1AA, + 1080: 0xB1AB, + 1081: 0xB1AC, + 1082: 0xB1AD, + 1083: 0xB1AE, + 1084: 0xB1AF, + 1085: 0xB1B0, + 1086: 0xB1B1, + 1087: 0xB1B2, + 1088: 0xB1B3, + 1089: 0xB1B4, + 1090: 0xB1B5, + 1091: 0xB1B6, + 1092: 0xB1B7, + 1093: 0xB1B8, + 1094: 0xB1B9, + 1095: 0xB1BA, + 1096: 0xB1BB, + 1097: 0xB1BC, + 1098: 0xB1BD, + 1099: 0xB1BE, + 1100: 0xB1BF, + 1101: 0xB1C0, + 1102: 0xB1C1, + 1103: 0xB1C2, + 1104: 0xB1C3, + 1105: 0xB1C4, + 1106: 0xB1C5, + 1107: 0xB1C6, + 1108: 0xB1C7, + 1109: 0xB1C8, + 1110: 0xB1C9, + 1111: 0xB1CA, + 1112: 0xB1CB, + 1113: 0xB1CD, + 1114: 0xB1CE, + 1115: 0xB1CF, + 1116: 0xB1D1, + 1117: 0xB1D2, + 1118: 0xB1D3, + 1119: 0xB1D5, + 1120: 0xB1D6, + 1121: 0xB1D7, + 1122: 0xB1D8, + 1123: 0xB1D9, + 1124: 0xB1DA, + 1125: 0xB1DB, + 1126: 0xB1DE, + 1127: 0xB1E0, + 1128: 0xB1E1, + 1129: 0xB1E2, + 1130: 0xB1E3, + 1131: 0xB1E4, + 1132: 0xB1E5, + 1133: 0xB1E6, + 1134: 0xB1E7, + 1135: 0xB1EA, + 1136: 0xB1EB, + 1137: 0xB1ED, + 1138: 0xB1EE, + 1139: 0xB1EF, + 1140: 0xB1F1, + 1141: 0xB1F2, + 1142: 0xB1F3, + 1143: 0xB1F4, + 1144: 0xB1F5, + 1145: 0xB1F6, + 1146: 0xB1F7, + 1147: 0xB1F8, + 1148: 0xB1FA, + 1149: 0xB1FC, + 1150: 0xB1FE, + 1151: 0xB1FF, + 1152: 0xB200, + 1153: 0xB201, + 1154: 0xB202, + 1155: 0xB203, + 1156: 0xB206, + 1157: 0xB207, + 1158: 0xB209, + 1159: 0xB20A, + 1160: 0xB20D, + 1161: 0xB20E, + 1162: 0xB20F, + 1163: 0xB210, + 1164: 0xB211, + 1165: 0xB212, + 1166: 0xB213, + 1167: 0xB216, + 1168: 0xB218, + 1169: 0xB21A, + 1170: 0xB21B, + 1171: 0xB21C, + 1172: 0xB21D, + 1173: 0xB21E, + 1174: 0xB21F, + 1175: 0xB221, + 1176: 0xB222, + 1177: 0xB223, + 1178: 0xB224, + 1179: 0xB225, + 1180: 0xB226, + 1181: 0xB227, + 1182: 0xB228, + 1183: 0xB229, + 1184: 0xB22A, + 1185: 0xB22B, + 1186: 0xB22C, + 1187: 0xB22D, + 1188: 0xB22E, + 1189: 0xB22F, + 1190: 0xB230, + 1191: 0xB231, + 1192: 0xB232, + 1193: 0xB233, + 1194: 0xB235, + 1195: 0xB236, + 1196: 0xB237, + 1197: 0xB238, + 1198: 0xB239, + 1199: 0xB23A, + 1200: 0xB23B, + 1201: 0xB23D, + 1202: 0xB23E, + 1203: 0xB23F, + 1204: 0xB240, + 1205: 0xB241, + 1206: 0xB242, + 1207: 0xB243, + 1208: 0xB244, + 1209: 0xB245, + 1210: 0xB246, + 1211: 0xB247, + 1212: 0xB248, + 1213: 0xB249, + 1214: 0xB24A, + 1215: 0xB24B, + 1216: 0xB24C, + 1217: 0xB24D, + 1218: 0xB24E, + 1219: 0xB24F, + 1220: 0xB250, + 1221: 0xB251, + 1222: 0xB252, + 1223: 0xB253, + 1224: 0xB254, + 1225: 0xB255, + 1226: 0xB256, + 1227: 0xB257, + 1228: 0xB259, + 1229: 0xB25A, + 1230: 0xB25B, + 1231: 0xB25D, + 1232: 0xB25E, + 1233: 0xB25F, + 1234: 0xB261, + 1235: 0xB262, + 1236: 0xB263, + 1237: 0xB264, + 1238: 0xB265, + 1239: 0xB266, + 1240: 0xB267, + 1241: 0xB26A, + 1242: 0xB26B, + 1243: 0xB26C, + 1244: 0xB26D, + 1245: 0xB26E, + 1246: 0xB26F, + 1247: 0xB270, + 1248: 0xB271, + 1249: 0xB272, + 1250: 0xB273, + 1251: 0xB276, + 1252: 0xB277, + 1253: 0xB278, + 1254: 0xB279, + 1255: 0xB27A, + 1256: 0xB27B, + 1257: 0xB27D, + 1258: 0xB27E, + 1259: 0xB27F, + 1260: 0xB280, + 1261: 0xB281, + 1262: 0xB282, + 1263: 0xB283, + 1264: 0xB286, + 1265: 0xB287, + 1266: 0xB288, + 1267: 0xB28A, + 1268: 0xB28B, + 1269: 0xB28C, + 1270: 0xB28D, + 1271: 0xB28E, + 1272: 0xB28F, + 1273: 0xB292, + 1274: 0xB293, + 1275: 0xB295, + 1276: 0xB296, + 1277: 0xB297, + 1278: 0xB29B, + 1279: 0xB29C, + 1280: 0xB29D, + 1281: 0xB29E, + 1282: 0xB29F, + 1283: 0xB2A2, + 1284: 0xB2A4, + 1285: 0xB2A7, + 1286: 0xB2A8, + 1287: 0xB2A9, + 1288: 0xB2AB, + 1289: 0xB2AD, + 1290: 0xB2AE, + 1291: 0xB2AF, + 1292: 0xB2B1, + 1293: 0xB2B2, + 1294: 0xB2B3, + 1295: 0xB2B5, + 1296: 0xB2B6, + 1297: 0xB2B7, + 1298: 0xB2B8, + 1299: 0xB2B9, + 1300: 0xB2BA, + 1301: 0xB2BB, + 1302: 0xB2BC, + 1303: 0xB2BD, + 1304: 0xB2BE, + 1305: 0xB2BF, + 1306: 0xB2C0, + 1307: 0xB2C1, + 1308: 0xB2C2, + 1309: 0xB2C3, + 1310: 0xB2C4, + 1311: 0xB2C5, + 1312: 0xB2C6, + 1313: 0xB2C7, + 1314: 0xB2CA, + 1315: 0xB2CB, + 1316: 0xB2CD, + 1317: 0xB2CE, + 1318: 0xB2CF, + 1319: 0xB2D1, + 1320: 0xB2D3, + 1321: 0xB2D4, + 1322: 0xB2D5, + 1323: 0xB2D6, + 1324: 0xB2D7, + 1325: 0xB2DA, + 1326: 0xB2DC, + 1327: 0xB2DE, + 1328: 0xB2DF, + 1329: 0xB2E0, + 1330: 0xB2E1, + 1331: 0xB2E3, + 1332: 0xB2E7, + 1333: 0xB2E9, + 1334: 0xB2EA, + 1335: 0xB2F0, + 1336: 0xB2F1, + 1337: 0xB2F2, + 1338: 0xB2F6, + 1339: 0xB2FC, + 1340: 0xB2FD, + 1341: 0xB2FE, + 1342: 0xB302, + 1343: 0xB303, + 1344: 0xB305, + 1345: 0xB306, + 1346: 0xB307, + 1347: 0xB309, + 1348: 0xB30A, + 1349: 0xB30B, + 1350: 0xB30C, + 1351: 0xB30D, + 1352: 0xB30E, + 1353: 0xB30F, + 1354: 0xB312, + 1355: 0xB316, + 1356: 0xB317, + 1357: 0xB318, + 1358: 0xB319, + 1359: 0xB31A, + 1360: 0xB31B, + 1361: 0xB31D, + 1362: 0xB31E, + 1363: 0xB31F, + 1364: 0xB320, + 1365: 0xB321, + 1366: 0xB322, + 1367: 0xB323, + 1368: 0xB324, + 1369: 0xB325, + 1370: 0xB326, + 1371: 0xB327, + 1372: 0xB328, + 1373: 0xB329, + 1374: 0xB32A, + 1375: 0xB32B, + 1376: 0xB32C, + 1377: 0xB32D, + 1378: 0xB32E, + 1379: 0xB32F, + 1380: 0xB330, + 1381: 0xB331, + 1382: 0xB332, + 1383: 0xB333, + 1384: 0xB334, + 1385: 0xB335, + 1386: 0xB336, + 1387: 0xB337, + 1388: 0xB338, + 1389: 0xB339, + 1390: 0xB33A, + 1391: 0xB33B, + 1392: 0xB33C, + 1393: 0xB33D, + 1394: 0xB33E, + 1395: 0xB33F, + 1396: 0xB340, + 1397: 0xB341, + 1398: 0xB342, + 1399: 0xB343, + 1400: 0xB344, + 1401: 0xB345, + 1402: 0xB346, + 1403: 0xB347, + 1404: 0xB348, + 1405: 0xB349, + 1406: 0xB34A, + 1407: 0xB34B, + 1408: 0xB34C, + 1409: 0xB34D, + 1410: 0xB34E, + 1411: 0xB34F, + 1412: 0xB350, + 1413: 0xB351, + 1414: 0xB352, + 1415: 0xB353, + 1416: 0xB357, + 1417: 0xB359, + 1418: 0xB35A, + 1419: 0xB35D, + 1420: 0xB360, + 1421: 0xB361, + 1422: 0xB362, + 1423: 0xB363, + 1424: 0xB366, + 1425: 0xB368, + 1426: 0xB36A, + 1427: 0xB36C, + 1428: 0xB36D, + 1429: 0xB36F, + 1430: 0xB372, + 1431: 0xB373, + 1432: 0xB375, + 1433: 0xB376, + 1434: 0xB377, + 1435: 0xB379, + 1436: 0xB37A, + 1437: 0xB37B, + 1438: 0xB37C, + 1439: 0xB37D, + 1440: 0xB37E, + 1441: 0xB37F, + 1442: 0xB382, + 1443: 0xB386, + 1444: 0xB387, + 1445: 0xB388, + 1446: 0xB389, + 1447: 0xB38A, + 1448: 0xB38B, + 1449: 0xB38D, + 1450: 0xB38E, + 1451: 0xB38F, + 1452: 0xB391, + 1453: 0xB392, + 1454: 0xB393, + 1455: 0xB395, + 1456: 0xB396, + 1457: 0xB397, + 1458: 0xB398, + 1459: 0xB399, + 1460: 0xB39A, + 1461: 0xB39B, + 1462: 0xB39C, + 1463: 0xB39D, + 1464: 0xB39E, + 1465: 0xB39F, + 1466: 0xB3A2, + 1467: 0xB3A3, + 1468: 0xB3A4, + 1469: 0xB3A5, + 1470: 0xB3A6, + 1471: 0xB3A7, + 1472: 0xB3A9, + 1473: 0xB3AA, + 1474: 0xB3AB, + 1475: 0xB3AD, + 1476: 0xB3AE, + 1477: 0xB3AF, + 1478: 0xB3B0, + 1479: 0xB3B1, + 1480: 0xB3B2, + 1481: 0xB3B3, + 1482: 0xB3B4, + 1483: 0xB3B5, + 1484: 0xB3B6, + 1485: 0xB3B7, + 1486: 0xB3B8, + 1487: 0xB3B9, + 1488: 0xB3BA, + 1489: 0xB3BB, + 1490: 0xB3BC, + 1491: 0xB3BD, + 1492: 0xB3BE, + 1493: 0xB3BF, + 1494: 0xB3C0, + 1495: 0xB3C1, + 1496: 0xB3C2, + 1497: 0xB3C3, + 1498: 0xB3C6, + 1499: 0xB3C7, + 1500: 0xB3C9, + 1501: 0xB3CA, + 1502: 0xB3CD, + 1503: 0xB3CF, + 1504: 0xB3D1, + 1505: 0xB3D2, + 1506: 0xB3D3, + 1507: 0xB3D6, + 1508: 0xB3D8, + 1509: 0xB3DA, + 1510: 0xB3DC, + 1511: 0xB3DE, + 1512: 0xB3DF, + 1513: 0xB3E1, + 1514: 0xB3E2, + 1515: 0xB3E3, + 1516: 0xB3E5, + 1517: 0xB3E6, + 1518: 0xB3E7, + 1519: 0xB3E9, + 1520: 0xB3EA, + 1521: 0xB3EB, + 1522: 0xB3EC, + 1523: 0xB3ED, + 1524: 0xB3EE, + 1525: 0xB3EF, + 1526: 0xB3F0, + 1527: 0xB3F1, + 1528: 0xB3F2, + 1529: 0xB3F3, + 1530: 0xB3F4, + 1531: 0xB3F5, + 1532: 0xB3F6, + 1533: 0xB3F7, + 1534: 0xB3F8, + 1535: 0xB3F9, + 1536: 0xB3FA, + 1537: 0xB3FB, + 1538: 0xB3FD, + 1539: 0xB3FE, + 1540: 0xB3FF, + 1541: 0xB400, + 1542: 0xB401, + 1543: 0xB402, + 1544: 0xB403, + 1545: 0xB404, + 1546: 0xB405, + 1547: 0xB406, + 1548: 0xB407, + 1549: 0xB408, + 1550: 0xB409, + 1551: 0xB40A, + 1552: 0xB40B, + 1553: 0xB40C, + 1554: 0xB40D, + 1555: 0xB40E, + 1556: 0xB40F, + 1557: 0xB411, + 1558: 0xB412, + 1559: 0xB413, + 1560: 0xB414, + 1561: 0xB415, + 1562: 0xB416, + 1563: 0xB417, + 1564: 0xB419, + 1565: 0xB41A, + 1566: 0xB41B, + 1567: 0xB41D, + 1568: 0xB41E, + 1569: 0xB41F, + 1570: 0xB421, + 1571: 0xB422, + 1572: 0xB423, + 1573: 0xB424, + 1574: 0xB425, + 1575: 0xB426, + 1576: 0xB427, + 1577: 0xB42A, + 1578: 0xB42C, + 1579: 0xB42D, + 1580: 0xB42E, + 1581: 0xB42F, + 1582: 0xB430, + 1583: 0xB431, + 1584: 0xB432, + 1585: 0xB433, + 1586: 0xB435, + 1587: 0xB436, + 1588: 0xB437, + 1589: 0xB438, + 1590: 0xB439, + 1591: 0xB43A, + 1592: 0xB43B, + 1593: 0xB43C, + 1594: 0xB43D, + 1595: 0xB43E, + 1596: 0xB43F, + 1597: 0xB440, + 1598: 0xB441, + 1599: 0xB442, + 1600: 0xB443, + 1601: 0xB444, + 1602: 0xB445, + 1603: 0xB446, + 1604: 0xB447, + 1605: 0xB448, + 1606: 0xB449, + 1607: 0xB44A, + 1608: 0xB44B, + 1609: 0xB44C, + 1610: 0xB44D, + 1611: 0xB44E, + 1612: 0xB44F, + 1613: 0xB452, + 1614: 0xB453, + 1615: 0xB455, + 1616: 0xB456, + 1617: 0xB457, + 1618: 0xB459, + 1619: 0xB45A, + 1620: 0xB45B, + 1621: 0xB45C, + 1622: 0xB45D, + 1623: 0xB45E, + 1624: 0xB45F, + 1625: 0xB462, + 1626: 0xB464, + 1627: 0xB466, + 1628: 0xB467, + 1629: 0xB468, + 1630: 0xB469, + 1631: 0xB46A, + 1632: 0xB46B, + 1633: 0xB46D, + 1634: 0xB46E, + 1635: 0xB46F, + 1636: 0xB470, + 1637: 0xB471, + 1638: 0xB472, + 1639: 0xB473, + 1640: 0xB474, + 1641: 0xB475, + 1642: 0xB476, + 1643: 0xB477, + 1644: 0xB478, + 1645: 0xB479, + 1646: 0xB47A, + 1647: 0xB47B, + 1648: 0xB47C, + 1649: 0xB47D, + 1650: 0xB47E, + 1651: 0xB47F, + 1652: 0xB481, + 1653: 0xB482, + 1654: 0xB483, + 1655: 0xB484, + 1656: 0xB485, + 1657: 0xB486, + 1658: 0xB487, + 1659: 0xB489, + 1660: 0xB48A, + 1661: 0xB48B, + 1662: 0xB48C, + 1663: 0xB48D, + 1664: 0xB48E, + 1665: 0xB48F, + 1666: 0xB490, + 1667: 0xB491, + 1668: 0xB492, + 1669: 0xB493, + 1670: 0xB494, + 1671: 0xB495, + 1672: 0xB496, + 1673: 0xB497, + 1674: 0xB498, + 1675: 0xB499, + 1676: 0xB49A, + 1677: 0xB49B, + 1678: 0xB49C, + 1679: 0xB49E, + 1680: 0xB49F, + 1681: 0xB4A0, + 1682: 0xB4A1, + 1683: 0xB4A2, + 1684: 0xB4A3, + 1685: 0xB4A5, + 1686: 0xB4A6, + 1687: 0xB4A7, + 1688: 0xB4A9, + 1689: 0xB4AA, + 1690: 0xB4AB, + 1691: 0xB4AD, + 1692: 0xB4AE, + 1693: 0xB4AF, + 1694: 0xB4B0, + 1695: 0xB4B1, + 1696: 0xB4B2, + 1697: 0xB4B3, + 1698: 0xB4B4, + 1699: 0xB4B6, + 1700: 0xB4B8, + 1701: 0xB4BA, + 1702: 0xB4BB, + 1703: 0xB4BC, + 1704: 0xB4BD, + 1705: 0xB4BE, + 1706: 0xB4BF, + 1707: 0xB4C1, + 1708: 0xB4C2, + 1709: 0xB4C3, + 1710: 0xB4C5, + 1711: 0xB4C6, + 1712: 0xB4C7, + 1713: 0xB4C9, + 1714: 0xB4CA, + 1715: 0xB4CB, + 1716: 0xB4CC, + 1717: 0xB4CD, + 1718: 0xB4CE, + 1719: 0xB4CF, + 1720: 0xB4D1, + 1721: 0xB4D2, + 1722: 0xB4D3, + 1723: 0xB4D4, + 1724: 0xB4D6, + 1725: 0xB4D7, + 1726: 0xB4D8, + 1727: 0xB4D9, + 1728: 0xB4DA, + 1729: 0xB4DB, + 1730: 0xB4DE, + 1731: 0xB4DF, + 1732: 0xB4E1, + 1733: 0xB4E2, + 1734: 0xB4E5, + 1735: 0xB4E7, + 1736: 0xB4E8, + 1737: 0xB4E9, + 1738: 0xB4EA, + 1739: 0xB4EB, + 1740: 0xB4EE, + 1741: 0xB4F0, + 1742: 0xB4F2, + 1743: 0xB4F3, + 1744: 0xB4F4, + 1745: 0xB4F5, + 1746: 0xB4F6, + 1747: 0xB4F7, + 1748: 0xB4F9, + 1749: 0xB4FA, + 1750: 0xB4FB, + 1751: 0xB4FC, + 1752: 0xB4FD, + 1753: 0xB4FE, + 1754: 0xB4FF, + 1755: 0xB500, + 1756: 0xB501, + 1757: 0xB502, + 1758: 0xB503, + 1759: 0xB504, + 1760: 0xB505, + 1761: 0xB506, + 1762: 0xB507, + 1763: 0xB508, + 1764: 0xB509, + 1765: 0xB50A, + 1766: 0xB50B, + 1767: 0xB50C, + 1768: 0xB50D, + 1769: 0xB50E, + 1770: 0xB50F, + 1771: 0xB510, + 1772: 0xB511, + 1773: 0xB512, + 1774: 0xB513, + 1775: 0xB516, + 1776: 0xB517, + 1777: 0xB519, + 1778: 0xB51A, + 1779: 0xB51D, + 1780: 0xB51E, + 1781: 0xB51F, + 1782: 0xB520, + 1783: 0xB521, + 1784: 0xB522, + 1785: 0xB523, + 1786: 0xB526, + 1787: 0xB52B, + 1788: 0xB52C, + 1789: 0xB52D, + 1790: 0xB52E, + 1791: 0xB52F, + 1792: 0xB532, + 1793: 0xB533, + 1794: 0xB535, + 1795: 0xB536, + 1796: 0xB537, + 1797: 0xB539, + 1798: 0xB53A, + 1799: 0xB53B, + 1800: 0xB53C, + 1801: 0xB53D, + 1802: 0xB53E, + 1803: 0xB53F, + 1804: 0xB542, + 1805: 0xB546, + 1806: 0xB547, + 1807: 0xB548, + 1808: 0xB549, + 1809: 0xB54A, + 1810: 0xB54E, + 1811: 0xB54F, + 1812: 0xB551, + 1813: 0xB552, + 1814: 0xB553, + 1815: 0xB555, + 1816: 0xB556, + 1817: 0xB557, + 1818: 0xB558, + 1819: 0xB559, + 1820: 0xB55A, + 1821: 0xB55B, + 1822: 0xB55E, + 1823: 0xB562, + 1824: 0xB563, + 1825: 0xB564, + 1826: 0xB565, + 1827: 0xB566, + 1828: 0xB567, + 1829: 0xB568, + 1830: 0xB569, + 1831: 0xB56A, + 1832: 0xB56B, + 1833: 0xB56C, + 1834: 0xB56D, + 1835: 0xB56E, + 1836: 0xB56F, + 1837: 0xB570, + 1838: 0xB571, + 1839: 0xB572, + 1840: 0xB573, + 1841: 0xB574, + 1842: 0xB575, + 1843: 0xB576, + 1844: 0xB577, + 1845: 0xB578, + 1846: 0xB579, + 1847: 0xB57A, + 1848: 0xB57B, + 1849: 0xB57C, + 1850: 0xB57D, + 1851: 0xB57E, + 1852: 0xB57F, + 1853: 0xB580, + 1854: 0xB581, + 1855: 0xB582, + 1856: 0xB583, + 1857: 0xB584, + 1858: 0xB585, + 1859: 0xB586, + 1860: 0xB587, + 1861: 0xB588, + 1862: 0xB589, + 1863: 0xB58A, + 1864: 0xB58B, + 1865: 0xB58C, + 1866: 0xB58D, + 1867: 0xB58E, + 1868: 0xB58F, + 1869: 0xB590, + 1870: 0xB591, + 1871: 0xB592, + 1872: 0xB593, + 1873: 0xB594, + 1874: 0xB595, + 1875: 0xB596, + 1876: 0xB597, + 1877: 0xB598, + 1878: 0xB599, + 1879: 0xB59A, + 1880: 0xB59B, + 1881: 0xB59C, + 1882: 0xB59D, + 1883: 0xB59E, + 1884: 0xB59F, + 1885: 0xB5A2, + 1886: 0xB5A3, + 1887: 0xB5A5, + 1888: 0xB5A6, + 1889: 0xB5A7, + 1890: 0xB5A9, + 1891: 0xB5AC, + 1892: 0xB5AD, + 1893: 0xB5AE, + 1894: 0xB5AF, + 1895: 0xB5B2, + 1896: 0xB5B6, + 1897: 0xB5B7, + 1898: 0xB5B8, + 1899: 0xB5B9, + 1900: 0xB5BA, + 1901: 0xB5BE, + 1902: 0xB5BF, + 1903: 0xB5C1, + 1904: 0xB5C2, + 1905: 0xB5C3, + 1906: 0xB5C5, + 1907: 0xB5C6, + 1908: 0xB5C7, + 1909: 0xB5C8, + 1910: 0xB5C9, + 1911: 0xB5CA, + 1912: 0xB5CB, + 1913: 0xB5CE, + 1914: 0xB5D2, + 1915: 0xB5D3, + 1916: 0xB5D4, + 1917: 0xB5D5, + 1918: 0xB5D6, + 1919: 0xB5D7, + 1920: 0xB5D9, + 1921: 0xB5DA, + 1922: 0xB5DB, + 1923: 0xB5DC, + 1924: 0xB5DD, + 1925: 0xB5DE, + 1926: 0xB5DF, + 1927: 0xB5E0, + 1928: 0xB5E1, + 1929: 0xB5E2, + 1930: 0xB5E3, + 1931: 0xB5E4, + 1932: 0xB5E5, + 1933: 0xB5E6, + 1934: 0xB5E7, + 1935: 0xB5E8, + 1936: 0xB5E9, + 1937: 0xB5EA, + 1938: 0xB5EB, + 1939: 0xB5ED, + 1940: 0xB5EE, + 1941: 0xB5EF, + 1942: 0xB5F0, + 1943: 0xB5F1, + 1944: 0xB5F2, + 1945: 0xB5F3, + 1946: 0xB5F4, + 1947: 0xB5F5, + 1948: 0xB5F6, + 1949: 0xB5F7, + 1950: 0xB5F8, + 1951: 0xB5F9, + 1952: 0xB5FA, + 1953: 0xB5FB, + 1954: 0xB5FC, + 1955: 0xB5FD, + 1956: 0xB5FE, + 1957: 0xB5FF, + 1958: 0xB600, + 1959: 0xB601, + 1960: 0xB602, + 1961: 0xB603, + 1962: 0xB604, + 1963: 0xB605, + 1964: 0xB606, + 1965: 0xB607, + 1966: 0xB608, + 1967: 0xB609, + 1968: 0xB60A, + 1969: 0xB60B, + 1970: 0xB60C, + 1971: 0xB60D, + 1972: 0xB60E, + 1973: 0xB60F, + 1974: 0xB612, + 1975: 0xB613, + 1976: 0xB615, + 1977: 0xB616, + 1978: 0xB617, + 1979: 0xB619, + 1980: 0xB61A, + 1981: 0xB61B, + 1982: 0xB61C, + 1983: 0xB61D, + 1984: 0xB61E, + 1985: 0xB61F, + 1986: 0xB620, + 1987: 0xB621, + 1988: 0xB622, + 1989: 0xB623, + 1990: 0xB624, + 1991: 0xB626, + 1992: 0xB627, + 1993: 0xB628, + 1994: 0xB629, + 1995: 0xB62A, + 1996: 0xB62B, + 1997: 0xB62D, + 1998: 0xB62E, + 1999: 0xB62F, + 2000: 0xB630, + 2001: 0xB631, + 2002: 0xB632, + 2003: 0xB633, + 2004: 0xB635, + 2005: 0xB636, + 2006: 0xB637, + 2007: 0xB638, + 2008: 0xB639, + 2009: 0xB63A, + 2010: 0xB63B, + 2011: 0xB63C, + 2012: 0xB63D, + 2013: 0xB63E, + 2014: 0xB63F, + 2015: 0xB640, + 2016: 0xB641, + 2017: 0xB642, + 2018: 0xB643, + 2019: 0xB644, + 2020: 0xB645, + 2021: 0xB646, + 2022: 0xB647, + 2023: 0xB649, + 2024: 0xB64A, + 2025: 0xB64B, + 2026: 0xB64C, + 2027: 0xB64D, + 2028: 0xB64E, + 2029: 0xB64F, + 2030: 0xB650, + 2031: 0xB651, + 2032: 0xB652, + 2033: 0xB653, + 2034: 0xB654, + 2035: 0xB655, + 2036: 0xB656, + 2037: 0xB657, + 2038: 0xB658, + 2039: 0xB659, + 2040: 0xB65A, + 2041: 0xB65B, + 2042: 0xB65C, + 2043: 0xB65D, + 2044: 0xB65E, + 2045: 0xB65F, + 2046: 0xB660, + 2047: 0xB661, + 2048: 0xB662, + 2049: 0xB663, + 2050: 0xB665, + 2051: 0xB666, + 2052: 0xB667, + 2053: 0xB669, + 2054: 0xB66A, + 2055: 0xB66B, + 2056: 0xB66C, + 2057: 0xB66D, + 2058: 0xB66E, + 2059: 0xB66F, + 2060: 0xB670, + 2061: 0xB671, + 2062: 0xB672, + 2063: 0xB673, + 2064: 0xB674, + 2065: 0xB675, + 2066: 0xB676, + 2067: 0xB677, + 2068: 0xB678, + 2069: 0xB679, + 2070: 0xB67A, + 2071: 0xB67B, + 2072: 0xB67C, + 2073: 0xB67D, + 2074: 0xB67E, + 2075: 0xB67F, + 2076: 0xB680, + 2077: 0xB681, + 2078: 0xB682, + 2079: 0xB683, + 2080: 0xB684, + 2081: 0xB685, + 2082: 0xB686, + 2083: 0xB687, + 2084: 0xB688, + 2085: 0xB689, + 2086: 0xB68A, + 2087: 0xB68B, + 2088: 0xB68C, + 2089: 0xB68D, + 2090: 0xB68E, + 2091: 0xB68F, + 2092: 0xB690, + 2093: 0xB691, + 2094: 0xB692, + 2095: 0xB693, + 2096: 0xB694, + 2097: 0xB695, + 2098: 0xB696, + 2099: 0xB697, + 2100: 0xB698, + 2101: 0xB699, + 2102: 0xB69A, + 2103: 0xB69B, + 2104: 0xB69E, + 2105: 0xB69F, + 2106: 0xB6A1, + 2107: 0xB6A2, + 2108: 0xB6A3, + 2109: 0xB6A5, + 2110: 0xB6A6, + 2111: 0xB6A7, + 2112: 0xB6A8, + 2113: 0xB6A9, + 2114: 0xB6AA, + 2115: 0xB6AD, + 2116: 0xB6AE, + 2117: 0xB6AF, + 2118: 0xB6B0, + 2119: 0xB6B2, + 2120: 0xB6B3, + 2121: 0xB6B4, + 2122: 0xB6B5, + 2123: 0xB6B6, + 2124: 0xB6B7, + 2125: 0xB6B8, + 2126: 0xB6B9, + 2127: 0xB6BA, + 2128: 0xB6BB, + 2129: 0xB6BC, + 2130: 0xB6BD, + 2131: 0xB6BE, + 2132: 0xB6BF, + 2133: 0xB6C0, + 2134: 0xB6C1, + 2135: 0xB6C2, + 2136: 0xB6C3, + 2137: 0xB6C4, + 2138: 0xB6C5, + 2139: 0xB6C6, + 2140: 0xB6C7, + 2141: 0xB6C8, + 2142: 0xB6C9, + 2143: 0xB6CA, + 2144: 0xB6CB, + 2145: 0xB6CC, + 2146: 0xB6CD, + 2147: 0xB6CE, + 2148: 0xB6CF, + 2149: 0xB6D0, + 2150: 0xB6D1, + 2151: 0xB6D2, + 2152: 0xB6D3, + 2153: 0xB6D5, + 2154: 0xB6D6, + 2155: 0xB6D7, + 2156: 0xB6D8, + 2157: 0xB6D9, + 2158: 0xB6DA, + 2159: 0xB6DB, + 2160: 0xB6DC, + 2161: 0xB6DD, + 2162: 0xB6DE, + 2163: 0xB6DF, + 2164: 0xB6E0, + 2165: 0xB6E1, + 2166: 0xB6E2, + 2167: 0xB6E3, + 2168: 0xB6E4, + 2169: 0xB6E5, + 2170: 0xB6E6, + 2171: 0xB6E7, + 2172: 0xB6E8, + 2173: 0xB6E9, + 2174: 0xB6EA, + 2175: 0xB6EB, + 2176: 0xB6EC, + 2177: 0xB6ED, + 2178: 0xB6EE, + 2179: 0xB6EF, + 2180: 0xB6F1, + 2181: 0xB6F2, + 2182: 0xB6F3, + 2183: 0xB6F5, + 2184: 0xB6F6, + 2185: 0xB6F7, + 2186: 0xB6F9, + 2187: 0xB6FA, + 2188: 0xB6FB, + 2189: 0xB6FC, + 2190: 0xB6FD, + 2191: 0xB6FE, + 2192: 0xB6FF, + 2193: 0xB702, + 2194: 0xB703, + 2195: 0xB704, + 2196: 0xB706, + 2197: 0xB707, + 2198: 0xB708, + 2199: 0xB709, + 2200: 0xB70A, + 2201: 0xB70B, + 2202: 0xB70C, + 2203: 0xB70D, + 2204: 0xB70E, + 2205: 0xB70F, + 2206: 0xB710, + 2207: 0xB711, + 2208: 0xB712, + 2209: 0xB713, + 2210: 0xB714, + 2211: 0xB715, + 2212: 0xB716, + 2213: 0xB717, + 2214: 0xB718, + 2215: 0xB719, + 2216: 0xB71A, + 2217: 0xB71B, + 2218: 0xB71C, + 2219: 0xB71D, + 2220: 0xB71E, + 2221: 0xB71F, + 2222: 0xB720, + 2223: 0xB721, + 2224: 0xB722, + 2225: 0xB723, + 2226: 0xB724, + 2227: 0xB725, + 2228: 0xB726, + 2229: 0xB727, + 2230: 0xB72A, + 2231: 0xB72B, + 2232: 0xB72D, + 2233: 0xB72E, + 2234: 0xB731, + 2235: 0xB732, + 2236: 0xB733, + 2237: 0xB734, + 2238: 0xB735, + 2239: 0xB736, + 2240: 0xB737, + 2241: 0xB73A, + 2242: 0xB73C, + 2243: 0xB73D, + 2244: 0xB73E, + 2245: 0xB73F, + 2246: 0xB740, + 2247: 0xB741, + 2248: 0xB742, + 2249: 0xB743, + 2250: 0xB745, + 2251: 0xB746, + 2252: 0xB747, + 2253: 0xB749, + 2254: 0xB74A, + 2255: 0xB74B, + 2256: 0xB74D, + 2257: 0xB74E, + 2258: 0xB74F, + 2259: 0xB750, + 2260: 0xB751, + 2261: 0xB752, + 2262: 0xB753, + 2263: 0xB756, + 2264: 0xB757, + 2265: 0xB758, + 2266: 0xB759, + 2267: 0xB75A, + 2268: 0xB75B, + 2269: 0xB75C, + 2270: 0xB75D, + 2271: 0xB75E, + 2272: 0xB75F, + 2273: 0xB761, + 2274: 0xB762, + 2275: 0xB763, + 2276: 0xB765, + 2277: 0xB766, + 2278: 0xB767, + 2279: 0xB769, + 2280: 0xB76A, + 2281: 0xB76B, + 2282: 0xB76C, + 2283: 0xB76D, + 2284: 0xB76E, + 2285: 0xB76F, + 2286: 0xB772, + 2287: 0xB774, + 2288: 0xB776, + 2289: 0xB777, + 2290: 0xB778, + 2291: 0xB779, + 2292: 0xB77A, + 2293: 0xB77B, + 2294: 0xB77E, + 2295: 0xB77F, + 2296: 0xB781, + 2297: 0xB782, + 2298: 0xB783, + 2299: 0xB785, + 2300: 0xB786, + 2301: 0xB787, + 2302: 0xB788, + 2303: 0xB789, + 2304: 0xB78A, + 2305: 0xB78B, + 2306: 0xB78E, + 2307: 0xB793, + 2308: 0xB794, + 2309: 0xB795, + 2310: 0xB79A, + 2311: 0xB79B, + 2312: 0xB79D, + 2313: 0xB79E, + 2314: 0xB79F, + 2315: 0xB7A1, + 2316: 0xB7A2, + 2317: 0xB7A3, + 2318: 0xB7A4, + 2319: 0xB7A5, + 2320: 0xB7A6, + 2321: 0xB7A7, + 2322: 0xB7AA, + 2323: 0xB7AE, + 2324: 0xB7AF, + 2325: 0xB7B0, + 2326: 0xB7B1, + 2327: 0xB7B2, + 2328: 0xB7B3, + 2329: 0xB7B6, + 2330: 0xB7B7, + 2331: 0xB7B9, + 2332: 0xB7BA, + 2333: 0xB7BB, + 2334: 0xB7BC, + 2335: 0xB7BD, + 2336: 0xB7BE, + 2337: 0xB7BF, + 2338: 0xB7C0, + 2339: 0xB7C1, + 2340: 0xB7C2, + 2341: 0xB7C3, + 2342: 0xB7C4, + 2343: 0xB7C5, + 2344: 0xB7C6, + 2345: 0xB7C8, + 2346: 0xB7CA, + 2347: 0xB7CB, + 2348: 0xB7CC, + 2349: 0xB7CD, + 2350: 0xB7CE, + 2351: 0xB7CF, + 2352: 0xB7D0, + 2353: 0xB7D1, + 2354: 0xB7D2, + 2355: 0xB7D3, + 2356: 0xB7D4, + 2357: 0xB7D5, + 2358: 0xB7D6, + 2359: 0xB7D7, + 2360: 0xB7D8, + 2361: 0xB7D9, + 2362: 0xB7DA, + 2363: 0xB7DB, + 2364: 0xB7DC, + 2365: 0xB7DD, + 2366: 0xB7DE, + 2367: 0xB7DF, + 2368: 0xB7E0, + 2369: 0xB7E1, + 2370: 0xB7E2, + 2371: 0xB7E3, + 2372: 0xB7E4, + 2373: 0xB7E5, + 2374: 0xB7E6, + 2375: 0xB7E7, + 2376: 0xB7E8, + 2377: 0xB7E9, + 2378: 0xB7EA, + 2379: 0xB7EB, + 2380: 0xB7EE, + 2381: 0xB7EF, + 2382: 0xB7F1, + 2383: 0xB7F2, + 2384: 0xB7F3, + 2385: 0xB7F5, + 2386: 0xB7F6, + 2387: 0xB7F7, + 2388: 0xB7F8, + 2389: 0xB7F9, + 2390: 0xB7FA, + 2391: 0xB7FB, + 2392: 0xB7FE, + 2393: 0xB802, + 2394: 0xB803, + 2395: 0xB804, + 2396: 0xB805, + 2397: 0xB806, + 2398: 0xB80A, + 2399: 0xB80B, + 2400: 0xB80D, + 2401: 0xB80E, + 2402: 0xB80F, + 2403: 0xB811, + 2404: 0xB812, + 2405: 0xB813, + 2406: 0xB814, + 2407: 0xB815, + 2408: 0xB816, + 2409: 0xB817, + 2410: 0xB81A, + 2411: 0xB81C, + 2412: 0xB81E, + 2413: 0xB81F, + 2414: 0xB820, + 2415: 0xB821, + 2416: 0xB822, + 2417: 0xB823, + 2418: 0xB826, + 2419: 0xB827, + 2420: 0xB829, + 2421: 0xB82A, + 2422: 0xB82B, + 2423: 0xB82D, + 2424: 0xB82E, + 2425: 0xB82F, + 2426: 0xB830, + 2427: 0xB831, + 2428: 0xB832, + 2429: 0xB833, + 2430: 0xB836, + 2431: 0xB83A, + 2432: 0xB83B, + 2433: 0xB83C, + 2434: 0xB83D, + 2435: 0xB83E, + 2436: 0xB83F, + 2437: 0xB841, + 2438: 0xB842, + 2439: 0xB843, + 2440: 0xB845, + 2441: 0xB846, + 2442: 0xB847, + 2443: 0xB848, + 2444: 0xB849, + 2445: 0xB84A, + 2446: 0xB84B, + 2447: 0xB84C, + 2448: 0xB84D, + 2449: 0xB84E, + 2450: 0xB84F, + 2451: 0xB850, + 2452: 0xB852, + 2453: 0xB854, + 2454: 0xB855, + 2455: 0xB856, + 2456: 0xB857, + 2457: 0xB858, + 2458: 0xB859, + 2459: 0xB85A, + 2460: 0xB85B, + 2461: 0xB85E, + 2462: 0xB85F, + 2463: 0xB861, + 2464: 0xB862, + 2465: 0xB863, + 2466: 0xB865, + 2467: 0xB866, + 2468: 0xB867, + 2469: 0xB868, + 2470: 0xB869, + 2471: 0xB86A, + 2472: 0xB86B, + 2473: 0xB86E, + 2474: 0xB870, + 2475: 0xB872, + 2476: 0xB873, + 2477: 0xB874, + 2478: 0xB875, + 2479: 0xB876, + 2480: 0xB877, + 2481: 0xB879, + 2482: 0xB87A, + 2483: 0xB87B, + 2484: 0xB87D, + 2485: 0xB87E, + 2486: 0xB87F, + 2487: 0xB880, + 2488: 0xB881, + 2489: 0xB882, + 2490: 0xB883, + 2491: 0xB884, + 2492: 0xB885, + 2493: 0xB886, + 2494: 0xB887, + 2495: 0xB888, + 2496: 0xB889, + 2497: 0xB88A, + 2498: 0xB88B, + 2499: 0xB88C, + 2500: 0xB88E, + 2501: 0xB88F, + 2502: 0xB890, + 2503: 0xB891, + 2504: 0xB892, + 2505: 0xB893, + 2506: 0xB894, + 2507: 0xB895, + 2508: 0xB896, + 2509: 0xB897, + 2510: 0xB898, + 2511: 0xB899, + 2512: 0xB89A, + 2513: 0xB89B, + 2514: 0xB89C, + 2515: 0xB89D, + 2516: 0xB89E, + 2517: 0xB89F, + 2518: 0xB8A0, + 2519: 0xB8A1, + 2520: 0xB8A2, + 2521: 0xB8A3, + 2522: 0xB8A4, + 2523: 0xB8A5, + 2524: 0xB8A6, + 2525: 0xB8A7, + 2526: 0xB8A9, + 2527: 0xB8AA, + 2528: 0xB8AB, + 2529: 0xB8AC, + 2530: 0xB8AD, + 2531: 0xB8AE, + 2532: 0xB8AF, + 2533: 0xB8B1, + 2534: 0xB8B2, + 2535: 0xB8B3, + 2536: 0xB8B5, + 2537: 0xB8B6, + 2538: 0xB8B7, + 2539: 0xB8B9, + 2540: 0xB8BA, + 2541: 0xB8BB, + 2542: 0xB8BC, + 2543: 0xB8BD, + 2544: 0xB8BE, + 2545: 0xB8BF, + 2546: 0xB8C2, + 2547: 0xB8C4, + 2548: 0xB8C6, + 2549: 0xB8C7, + 2550: 0xB8C8, + 2551: 0xB8C9, + 2552: 0xB8CA, + 2553: 0xB8CB, + 2554: 0xB8CD, + 2555: 0xB8CE, + 2556: 0xB8CF, + 2557: 0xB8D1, + 2558: 0xB8D2, + 2559: 0xB8D3, + 2560: 0xB8D5, + 2561: 0xB8D6, + 2562: 0xB8D7, + 2563: 0xB8D8, + 2564: 0xB8D9, + 2565: 0xB8DA, + 2566: 0xB8DB, + 2567: 0xB8DC, + 2568: 0xB8DE, + 2569: 0xB8E0, + 2570: 0xB8E2, + 2571: 0xB8E3, + 2572: 0xB8E4, + 2573: 0xB8E5, + 2574: 0xB8E6, + 2575: 0xB8E7, + 2576: 0xB8EA, + 2577: 0xB8EB, + 2578: 0xB8ED, + 2579: 0xB8EE, + 2580: 0xB8EF, + 2581: 0xB8F1, + 2582: 0xB8F2, + 2583: 0xB8F3, + 2584: 0xB8F4, + 2585: 0xB8F5, + 2586: 0xB8F6, + 2587: 0xB8F7, + 2588: 0xB8FA, + 2589: 0xB8FC, + 2590: 0xB8FE, + 2591: 0xB8FF, + 2592: 0xB900, + 2593: 0xB901, + 2594: 0xB902, + 2595: 0xB903, + 2596: 0xB905, + 2597: 0xB906, + 2598: 0xB907, + 2599: 0xB908, + 2600: 0xB909, + 2601: 0xB90A, + 2602: 0xB90B, + 2603: 0xB90C, + 2604: 0xB90D, + 2605: 0xB90E, + 2606: 0xB90F, + 2607: 0xB910, + 2608: 0xB911, + 2609: 0xB912, + 2610: 0xB913, + 2611: 0xB914, + 2612: 0xB915, + 2613: 0xB916, + 2614: 0xB917, + 2615: 0xB919, + 2616: 0xB91A, + 2617: 0xB91B, + 2618: 0xB91C, + 2619: 0xB91D, + 2620: 0xB91E, + 2621: 0xB91F, + 2622: 0xB921, + 2623: 0xB922, + 2624: 0xB923, + 2625: 0xB924, + 2626: 0xB925, + 2627: 0xB926, + 2628: 0xB927, + 2629: 0xB928, + 2630: 0xB929, + 2631: 0xB92A, + 2632: 0xB92B, + 2633: 0xB92C, + 2634: 0xB92D, + 2635: 0xB92E, + 2636: 0xB92F, + 2637: 0xB930, + 2638: 0xB931, + 2639: 0xB932, + 2640: 0xB933, + 2641: 0xB934, + 2642: 0xB935, + 2643: 0xB936, + 2644: 0xB937, + 2645: 0xB938, + 2646: 0xB939, + 2647: 0xB93A, + 2648: 0xB93B, + 2649: 0xB93E, + 2650: 0xB93F, + 2651: 0xB941, + 2652: 0xB942, + 2653: 0xB943, + 2654: 0xB945, + 2655: 0xB946, + 2656: 0xB947, + 2657: 0xB948, + 2658: 0xB949, + 2659: 0xB94A, + 2660: 0xB94B, + 2661: 0xB94D, + 2662: 0xB94E, + 2663: 0xB950, + 2664: 0xB952, + 2665: 0xB953, + 2666: 0xB954, + 2667: 0xB955, + 2668: 0xB956, + 2669: 0xB957, + 2670: 0xB95A, + 2671: 0xB95B, + 2672: 0xB95D, + 2673: 0xB95E, + 2674: 0xB95F, + 2675: 0xB961, + 2676: 0xB962, + 2677: 0xB963, + 2678: 0xB964, + 2679: 0xB965, + 2680: 0xB966, + 2681: 0xB967, + 2682: 0xB96A, + 2683: 0xB96C, + 2684: 0xB96E, + 2685: 0xB96F, + 2686: 0xB970, + 2687: 0xB971, + 2688: 0xB972, + 2689: 0xB973, + 2690: 0xB976, + 2691: 0xB977, + 2692: 0xB979, + 2693: 0xB97A, + 2694: 0xB97B, + 2695: 0xB97D, + 2696: 0xB97E, + 2697: 0xB97F, + 2698: 0xB980, + 2699: 0xB981, + 2700: 0xB982, + 2701: 0xB983, + 2702: 0xB986, + 2703: 0xB988, + 2704: 0xB98B, + 2705: 0xB98C, + 2706: 0xB98F, + 2707: 0xB990, + 2708: 0xB991, + 2709: 0xB992, + 2710: 0xB993, + 2711: 0xB994, + 2712: 0xB995, + 2713: 0xB996, + 2714: 0xB997, + 2715: 0xB998, + 2716: 0xB999, + 2717: 0xB99A, + 2718: 0xB99B, + 2719: 0xB99C, + 2720: 0xB99D, + 2721: 0xB99E, + 2722: 0xB99F, + 2723: 0xB9A0, + 2724: 0xB9A1, + 2725: 0xB9A2, + 2726: 0xB9A3, + 2727: 0xB9A4, + 2728: 0xB9A5, + 2729: 0xB9A6, + 2730: 0xB9A7, + 2731: 0xB9A8, + 2732: 0xB9A9, + 2733: 0xB9AA, + 2734: 0xB9AB, + 2735: 0xB9AE, + 2736: 0xB9AF, + 2737: 0xB9B1, + 2738: 0xB9B2, + 2739: 0xB9B3, + 2740: 0xB9B5, + 2741: 0xB9B6, + 2742: 0xB9B7, + 2743: 0xB9B8, + 2744: 0xB9B9, + 2745: 0xB9BA, + 2746: 0xB9BB, + 2747: 0xB9BE, + 2748: 0xB9C0, + 2749: 0xB9C2, + 2750: 0xB9C3, + 2751: 0xB9C4, + 2752: 0xB9C5, + 2753: 0xB9C6, + 2754: 0xB9C7, + 2755: 0xB9CA, + 2756: 0xB9CB, + 2757: 0xB9CD, + 2758: 0xB9D3, + 2759: 0xB9D4, + 2760: 0xB9D5, + 2761: 0xB9D6, + 2762: 0xB9D7, + 2763: 0xB9DA, + 2764: 0xB9DC, + 2765: 0xB9DF, + 2766: 0xB9E0, + 2767: 0xB9E2, + 2768: 0xB9E6, + 2769: 0xB9E7, + 2770: 0xB9E9, + 2771: 0xB9EA, + 2772: 0xB9EB, + 2773: 0xB9ED, + 2774: 0xB9EE, + 2775: 0xB9EF, + 2776: 0xB9F0, + 2777: 0xB9F1, + 2778: 0xB9F2, + 2779: 0xB9F3, + 2780: 0xB9F6, + 2781: 0xB9FB, + 2782: 0xB9FC, + 2783: 0xB9FD, + 2784: 0xB9FE, + 2785: 0xB9FF, + 2786: 0xBA02, + 2787: 0xBA03, + 2788: 0xBA04, + 2789: 0xBA05, + 2790: 0xBA06, + 2791: 0xBA07, + 2792: 0xBA09, + 2793: 0xBA0A, + 2794: 0xBA0B, + 2795: 0xBA0C, + 2796: 0xBA0D, + 2797: 0xBA0E, + 2798: 0xBA0F, + 2799: 0xBA10, + 2800: 0xBA11, + 2801: 0xBA12, + 2802: 0xBA13, + 2803: 0xBA14, + 2804: 0xBA16, + 2805: 0xBA17, + 2806: 0xBA18, + 2807: 0xBA19, + 2808: 0xBA1A, + 2809: 0xBA1B, + 2810: 0xBA1C, + 2811: 0xBA1D, + 2812: 0xBA1E, + 2813: 0xBA1F, + 2814: 0xBA20, + 2815: 0xBA21, + 2816: 0xBA22, + 2817: 0xBA23, + 2818: 0xBA24, + 2819: 0xBA25, + 2820: 0xBA26, + 2821: 0xBA27, + 2822: 0xBA28, + 2823: 0xBA29, + 2824: 0xBA2A, + 2825: 0xBA2B, + 2826: 0xBA2C, + 2827: 0xBA2D, + 2828: 0xBA2E, + 2829: 0xBA2F, + 2830: 0xBA30, + 2831: 0xBA31, + 2832: 0xBA32, + 2833: 0xBA33, + 2834: 0xBA34, + 2835: 0xBA35, + 2836: 0xBA36, + 2837: 0xBA37, + 2838: 0xBA3A, + 2839: 0xBA3B, + 2840: 0xBA3D, + 2841: 0xBA3E, + 2842: 0xBA3F, + 2843: 0xBA41, + 2844: 0xBA43, + 2845: 0xBA44, + 2846: 0xBA45, + 2847: 0xBA46, + 2848: 0xBA47, + 2849: 0xBA4A, + 2850: 0xBA4C, + 2851: 0xBA4F, + 2852: 0xBA50, + 2853: 0xBA51, + 2854: 0xBA52, + 2855: 0xBA56, + 2856: 0xBA57, + 2857: 0xBA59, + 2858: 0xBA5A, + 2859: 0xBA5B, + 2860: 0xBA5D, + 2861: 0xBA5E, + 2862: 0xBA5F, + 2863: 0xBA60, + 2864: 0xBA61, + 2865: 0xBA62, + 2866: 0xBA63, + 2867: 0xBA66, + 2868: 0xBA6A, + 2869: 0xBA6B, + 2870: 0xBA6C, + 2871: 0xBA6D, + 2872: 0xBA6E, + 2873: 0xBA6F, + 2874: 0xBA72, + 2875: 0xBA73, + 2876: 0xBA75, + 2877: 0xBA76, + 2878: 0xBA77, + 2879: 0xBA79, + 2880: 0xBA7A, + 2881: 0xBA7B, + 2882: 0xBA7C, + 2883: 0xBA7D, + 2884: 0xBA7E, + 2885: 0xBA7F, + 2886: 0xBA80, + 2887: 0xBA81, + 2888: 0xBA82, + 2889: 0xBA86, + 2890: 0xBA88, + 2891: 0xBA89, + 2892: 0xBA8A, + 2893: 0xBA8B, + 2894: 0xBA8D, + 2895: 0xBA8E, + 2896: 0xBA8F, + 2897: 0xBA90, + 2898: 0xBA91, + 2899: 0xBA92, + 2900: 0xBA93, + 2901: 0xBA94, + 2902: 0xBA95, + 2903: 0xBA96, + 2904: 0xBA97, + 2905: 0xBA98, + 2906: 0xBA99, + 2907: 0xBA9A, + 2908: 0xBA9B, + 2909: 0xBA9C, + 2910: 0xBA9D, + 2911: 0xBA9E, + 2912: 0xBA9F, + 2913: 0xBAA0, + 2914: 0xBAA1, + 2915: 0xBAA2, + 2916: 0xBAA3, + 2917: 0xBAA4, + 2918: 0xBAA5, + 2919: 0xBAA6, + 2920: 0xBAA7, + 2921: 0xBAAA, + 2922: 0xBAAD, + 2923: 0xBAAE, + 2924: 0xBAAF, + 2925: 0xBAB1, + 2926: 0xBAB3, + 2927: 0xBAB4, + 2928: 0xBAB5, + 2929: 0xBAB6, + 2930: 0xBAB7, + 2931: 0xBABA, + 2932: 0xBABC, + 2933: 0xBABE, + 2934: 0xBABF, + 2935: 0xBAC0, + 2936: 0xBAC1, + 2937: 0xBAC2, + 2938: 0xBAC3, + 2939: 0xBAC5, + 2940: 0xBAC6, + 2941: 0xBAC7, + 2942: 0xBAC9, + 2943: 0xBACA, + 2944: 0xBACB, + 2945: 0xBACC, + 2946: 0xBACD, + 2947: 0xBACE, + 2948: 0xBACF, + 2949: 0xBAD0, + 2950: 0xBAD1, + 2951: 0xBAD2, + 2952: 0xBAD3, + 2953: 0xBAD4, + 2954: 0xBAD5, + 2955: 0xBAD6, + 2956: 0xBAD7, + 2957: 0xBADA, + 2958: 0xBADB, + 2959: 0xBADC, + 2960: 0xBADD, + 2961: 0xBADE, + 2962: 0xBADF, + 2963: 0xBAE0, + 2964: 0xBAE1, + 2965: 0xBAE2, + 2966: 0xBAE3, + 2967: 0xBAE4, + 2968: 0xBAE5, + 2969: 0xBAE6, + 2970: 0xBAE7, + 2971: 0xBAE8, + 2972: 0xBAE9, + 2973: 0xBAEA, + 2974: 0xBAEB, + 2975: 0xBAEC, + 2976: 0xBAED, + 2977: 0xBAEE, + 2978: 0xBAEF, + 2979: 0xBAF0, + 2980: 0xBAF1, + 2981: 0xBAF2, + 2982: 0xBAF3, + 2983: 0xBAF4, + 2984: 0xBAF5, + 2985: 0xBAF6, + 2986: 0xBAF7, + 2987: 0xBAF8, + 2988: 0xBAF9, + 2989: 0xBAFA, + 2990: 0xBAFB, + 2991: 0xBAFD, + 2992: 0xBAFE, + 2993: 0xBAFF, + 2994: 0xBB01, + 2995: 0xBB02, + 2996: 0xBB03, + 2997: 0xBB05, + 2998: 0xBB06, + 2999: 0xBB07, + 3000: 0xBB08, + 3001: 0xBB09, + 3002: 0xBB0A, + 3003: 0xBB0B, + 3004: 0xBB0C, + 3005: 0xBB0E, + 3006: 0xBB10, + 3007: 0xBB12, + 3008: 0xBB13, + 3009: 0xBB14, + 3010: 0xBB15, + 3011: 0xBB16, + 3012: 0xBB17, + 3013: 0xBB19, + 3014: 0xBB1A, + 3015: 0xBB1B, + 3016: 0xBB1D, + 3017: 0xBB1E, + 3018: 0xBB1F, + 3019: 0xBB21, + 3020: 0xBB22, + 3021: 0xBB23, + 3022: 0xBB24, + 3023: 0xBB25, + 3024: 0xBB26, + 3025: 0xBB27, + 3026: 0xBB28, + 3027: 0xBB2A, + 3028: 0xBB2C, + 3029: 0xBB2D, + 3030: 0xBB2E, + 3031: 0xBB2F, + 3032: 0xBB30, + 3033: 0xBB31, + 3034: 0xBB32, + 3035: 0xBB33, + 3036: 0xBB37, + 3037: 0xBB39, + 3038: 0xBB3A, + 3039: 0xBB3F, + 3040: 0xBB40, + 3041: 0xBB41, + 3042: 0xBB42, + 3043: 0xBB43, + 3044: 0xBB46, + 3045: 0xBB48, + 3046: 0xBB4A, + 3047: 0xBB4B, + 3048: 0xBB4C, + 3049: 0xBB4E, + 3050: 0xBB51, + 3051: 0xBB52, + 3052: 0xBB53, + 3053: 0xBB55, + 3054: 0xBB56, + 3055: 0xBB57, + 3056: 0xBB59, + 3057: 0xBB5A, + 3058: 0xBB5B, + 3059: 0xBB5C, + 3060: 0xBB5D, + 3061: 0xBB5E, + 3062: 0xBB5F, + 3063: 0xBB60, + 3064: 0xBB62, + 3065: 0xBB64, + 3066: 0xBB65, + 3067: 0xBB66, + 3068: 0xBB67, + 3069: 0xBB68, + 3070: 0xBB69, + 3071: 0xBB6A, + 3072: 0xBB6B, + 3073: 0xBB6D, + 3074: 0xBB6E, + 3075: 0xBB6F, + 3076: 0xBB70, + 3077: 0xBB71, + 3078: 0xBB72, + 3079: 0xBB73, + 3080: 0xBB74, + 3081: 0xBB75, + 3082: 0xBB76, + 3083: 0xBB77, + 3084: 0xBB78, + 3085: 0xBB79, + 3086: 0xBB7A, + 3087: 0xBB7B, + 3088: 0xBB7C, + 3089: 0xBB7D, + 3090: 0xBB7E, + 3091: 0xBB7F, + 3092: 0xBB80, + 3093: 0xBB81, + 3094: 0xBB82, + 3095: 0xBB83, + 3096: 0xBB84, + 3097: 0xBB85, + 3098: 0xBB86, + 3099: 0xBB87, + 3100: 0xBB89, + 3101: 0xBB8A, + 3102: 0xBB8B, + 3103: 0xBB8D, + 3104: 0xBB8E, + 3105: 0xBB8F, + 3106: 0xBB91, + 3107: 0xBB92, + 3108: 0xBB93, + 3109: 0xBB94, + 3110: 0xBB95, + 3111: 0xBB96, + 3112: 0xBB97, + 3113: 0xBB98, + 3114: 0xBB99, + 3115: 0xBB9A, + 3116: 0xBB9B, + 3117: 0xBB9C, + 3118: 0xBB9D, + 3119: 0xBB9E, + 3120: 0xBB9F, + 3121: 0xBBA0, + 3122: 0xBBA1, + 3123: 0xBBA2, + 3124: 0xBBA3, + 3125: 0xBBA5, + 3126: 0xBBA6, + 3127: 0xBBA7, + 3128: 0xBBA9, + 3129: 0xBBAA, + 3130: 0xBBAB, + 3131: 0xBBAD, + 3132: 0xBBAE, + 3133: 0xBBAF, + 3134: 0xBBB0, + 3135: 0xBBB1, + 3136: 0xBBB2, + 3137: 0xBBB3, + 3138: 0xBBB5, + 3139: 0xBBB6, + 3140: 0xBBB8, + 3141: 0xBBB9, + 3142: 0xBBBA, + 3143: 0xBBBB, + 3144: 0xBBBC, + 3145: 0xBBBD, + 3146: 0xBBBE, + 3147: 0xBBBF, + 3148: 0xBBC1, + 3149: 0xBBC2, + 3150: 0xBBC3, + 3151: 0xBBC5, + 3152: 0xBBC6, + 3153: 0xBBC7, + 3154: 0xBBC9, + 3155: 0xBBCA, + 3156: 0xBBCB, + 3157: 0xBBCC, + 3158: 0xBBCD, + 3159: 0xBBCE, + 3160: 0xBBCF, + 3161: 0xBBD1, + 3162: 0xBBD2, + 3163: 0xBBD4, + 3164: 0xBBD5, + 3165: 0xBBD6, + 3166: 0xBBD7, + 3167: 0xBBD8, + 3168: 0xBBD9, + 3169: 0xBBDA, + 3170: 0xBBDB, + 3171: 0xBBDC, + 3172: 0xBBDD, + 3173: 0xBBDE, + 3174: 0xBBDF, + 3175: 0xBBE0, + 3176: 0xBBE1, + 3177: 0xBBE2, + 3178: 0xBBE3, + 3179: 0xBBE4, + 3180: 0xBBE5, + 3181: 0xBBE6, + 3182: 0xBBE7, + 3183: 0xBBE8, + 3184: 0xBBE9, + 3185: 0xBBEA, + 3186: 0xBBEB, + 3187: 0xBBEC, + 3188: 0xBBED, + 3189: 0xBBEE, + 3190: 0xBBEF, + 3191: 0xBBF0, + 3192: 0xBBF1, + 3193: 0xBBF2, + 3194: 0xBBF3, + 3195: 0xBBF4, + 3196: 0xBBF5, + 3197: 0xBBF6, + 3198: 0xBBF7, + 3199: 0xBBFA, + 3200: 0xBBFB, + 3201: 0xBBFD, + 3202: 0xBBFE, + 3203: 0xBC01, + 3204: 0xBC03, + 3205: 0xBC04, + 3206: 0xBC05, + 3207: 0xBC06, + 3208: 0xBC07, + 3209: 0xBC0A, + 3210: 0xBC0E, + 3211: 0xBC10, + 3212: 0xBC12, + 3213: 0xBC13, + 3214: 0xBC19, + 3215: 0xBC1A, + 3216: 0xBC20, + 3217: 0xBC21, + 3218: 0xBC22, + 3219: 0xBC23, + 3220: 0xBC26, + 3221: 0xBC28, + 3222: 0xBC2A, + 3223: 0xBC2B, + 3224: 0xBC2C, + 3225: 0xBC2E, + 3226: 0xBC2F, + 3227: 0xBC32, + 3228: 0xBC33, + 3229: 0xBC35, + 3230: 0xBC36, + 3231: 0xBC37, + 3232: 0xBC39, + 3233: 0xBC3A, + 3234: 0xBC3B, + 3235: 0xBC3C, + 3236: 0xBC3D, + 3237: 0xBC3E, + 3238: 0xBC3F, + 3239: 0xBC42, + 3240: 0xBC46, + 3241: 0xBC47, + 3242: 0xBC48, + 3243: 0xBC4A, + 3244: 0xBC4B, + 3245: 0xBC4E, + 3246: 0xBC4F, + 3247: 0xBC51, + 3248: 0xBC52, + 3249: 0xBC53, + 3250: 0xBC54, + 3251: 0xBC55, + 3252: 0xBC56, + 3253: 0xBC57, + 3254: 0xBC58, + 3255: 0xBC59, + 3256: 0xBC5A, + 3257: 0xBC5B, + 3258: 0xBC5C, + 3259: 0xBC5E, + 3260: 0xBC5F, + 3261: 0xBC60, + 3262: 0xBC61, + 3263: 0xBC62, + 3264: 0xBC63, + 3265: 0xBC64, + 3266: 0xBC65, + 3267: 0xBC66, + 3268: 0xBC67, + 3269: 0xBC68, + 3270: 0xBC69, + 3271: 0xBC6A, + 3272: 0xBC6B, + 3273: 0xBC6C, + 3274: 0xBC6D, + 3275: 0xBC6E, + 3276: 0xBC6F, + 3277: 0xBC70, + 3278: 0xBC71, + 3279: 0xBC72, + 3280: 0xBC73, + 3281: 0xBC74, + 3282: 0xBC75, + 3283: 0xBC76, + 3284: 0xBC77, + 3285: 0xBC78, + 3286: 0xBC79, + 3287: 0xBC7A, + 3288: 0xBC7B, + 3289: 0xBC7C, + 3290: 0xBC7D, + 3291: 0xBC7E, + 3292: 0xBC7F, + 3293: 0xBC80, + 3294: 0xBC81, + 3295: 0xBC82, + 3296: 0xBC83, + 3297: 0xBC86, + 3298: 0xBC87, + 3299: 0xBC89, + 3300: 0xBC8A, + 3301: 0xBC8D, + 3302: 0xBC8F, + 3303: 0xBC90, + 3304: 0xBC91, + 3305: 0xBC92, + 3306: 0xBC93, + 3307: 0xBC96, + 3308: 0xBC98, + 3309: 0xBC9B, + 3310: 0xBC9C, + 3311: 0xBC9D, + 3312: 0xBC9E, + 3313: 0xBC9F, + 3314: 0xBCA2, + 3315: 0xBCA3, + 3316: 0xBCA5, + 3317: 0xBCA6, + 3318: 0xBCA9, + 3319: 0xBCAA, + 3320: 0xBCAB, + 3321: 0xBCAC, + 3322: 0xBCAD, + 3323: 0xBCAE, + 3324: 0xBCAF, + 3325: 0xBCB2, + 3326: 0xBCB6, + 3327: 0xBCB7, + 3328: 0xBCB8, + 3329: 0xBCB9, + 3330: 0xBCBA, + 3331: 0xBCBB, + 3332: 0xBCBE, + 3333: 0xBCBF, + 3334: 0xBCC1, + 3335: 0xBCC2, + 3336: 0xBCC3, + 3337: 0xBCC5, + 3338: 0xBCC6, + 3339: 0xBCC7, + 3340: 0xBCC8, + 3341: 0xBCC9, + 3342: 0xBCCA, + 3343: 0xBCCB, + 3344: 0xBCCC, + 3345: 0xBCCE, + 3346: 0xBCD2, + 3347: 0xBCD3, + 3348: 0xBCD4, + 3349: 0xBCD6, + 3350: 0xBCD7, + 3351: 0xBCD9, + 3352: 0xBCDA, + 3353: 0xBCDB, + 3354: 0xBCDD, + 3355: 0xBCDE, + 3356: 0xBCDF, + 3357: 0xBCE0, + 3358: 0xBCE1, + 3359: 0xBCE2, + 3360: 0xBCE3, + 3361: 0xBCE4, + 3362: 0xBCE5, + 3363: 0xBCE6, + 3364: 0xBCE7, + 3365: 0xBCE8, + 3366: 0xBCE9, + 3367: 0xBCEA, + 3368: 0xBCEB, + 3369: 0xBCEC, + 3370: 0xBCED, + 3371: 0xBCEE, + 3372: 0xBCEF, + 3373: 0xBCF0, + 3374: 0xBCF1, + 3375: 0xBCF2, + 3376: 0xBCF3, + 3377: 0xBCF7, + 3378: 0xBCF9, + 3379: 0xBCFA, + 3380: 0xBCFB, + 3381: 0xBCFD, + 3382: 0xBCFE, + 3383: 0xBCFF, + 3384: 0xBD00, + 3385: 0xBD01, + 3386: 0xBD02, + 3387: 0xBD03, + 3388: 0xBD06, + 3389: 0xBD08, + 3390: 0xBD0A, + 3391: 0xBD0B, + 3392: 0xBD0C, + 3393: 0xBD0D, + 3394: 0xBD0E, + 3395: 0xBD0F, + 3396: 0xBD11, + 3397: 0xBD12, + 3398: 0xBD13, + 3399: 0xBD15, + 3400: 0xBD16, + 3401: 0xBD17, + 3402: 0xBD18, + 3403: 0xBD19, + 3404: 0xBD1A, + 3405: 0xBD1B, + 3406: 0xBD1C, + 3407: 0xBD1D, + 3408: 0xBD1E, + 3409: 0xBD1F, + 3410: 0xBD20, + 3411: 0xBD21, + 3412: 0xBD22, + 3413: 0xBD23, + 3414: 0xBD25, + 3415: 0xBD26, + 3416: 0xBD27, + 3417: 0xBD28, + 3418: 0xBD29, + 3419: 0xBD2A, + 3420: 0xBD2B, + 3421: 0xBD2D, + 3422: 0xBD2E, + 3423: 0xBD2F, + 3424: 0xBD30, + 3425: 0xBD31, + 3426: 0xBD32, + 3427: 0xBD33, + 3428: 0xBD34, + 3429: 0xBD35, + 3430: 0xBD36, + 3431: 0xBD37, + 3432: 0xBD38, + 3433: 0xBD39, + 3434: 0xBD3A, + 3435: 0xBD3B, + 3436: 0xBD3C, + 3437: 0xBD3D, + 3438: 0xBD3E, + 3439: 0xBD3F, + 3440: 0xBD41, + 3441: 0xBD42, + 3442: 0xBD43, + 3443: 0xBD44, + 3444: 0xBD45, + 3445: 0xBD46, + 3446: 0xBD47, + 3447: 0xBD4A, + 3448: 0xBD4B, + 3449: 0xBD4D, + 3450: 0xBD4E, + 3451: 0xBD4F, + 3452: 0xBD51, + 3453: 0xBD52, + 3454: 0xBD53, + 3455: 0xBD54, + 3456: 0xBD55, + 3457: 0xBD56, + 3458: 0xBD57, + 3459: 0xBD5A, + 3460: 0xBD5B, + 3461: 0xBD5C, + 3462: 0xBD5D, + 3463: 0xBD5E, + 3464: 0xBD5F, + 3465: 0xBD60, + 3466: 0xBD61, + 3467: 0xBD62, + 3468: 0xBD63, + 3469: 0xBD65, + 3470: 0xBD66, + 3471: 0xBD67, + 3472: 0xBD69, + 3473: 0xBD6A, + 3474: 0xBD6B, + 3475: 0xBD6C, + 3476: 0xBD6D, + 3477: 0xBD6E, + 3478: 0xBD6F, + 3479: 0xBD70, + 3480: 0xBD71, + 3481: 0xBD72, + 3482: 0xBD73, + 3483: 0xBD74, + 3484: 0xBD75, + 3485: 0xBD76, + 3486: 0xBD77, + 3487: 0xBD78, + 3488: 0xBD79, + 3489: 0xBD7A, + 3490: 0xBD7B, + 3491: 0xBD7C, + 3492: 0xBD7D, + 3493: 0xBD7E, + 3494: 0xBD7F, + 3495: 0xBD82, + 3496: 0xBD83, + 3497: 0xBD85, + 3498: 0xBD86, + 3499: 0xBD8B, + 3500: 0xBD8C, + 3501: 0xBD8D, + 3502: 0xBD8E, + 3503: 0xBD8F, + 3504: 0xBD92, + 3505: 0xBD94, + 3506: 0xBD96, + 3507: 0xBD97, + 3508: 0xBD98, + 3509: 0xBD9B, + 3510: 0xBD9D, + 3511: 0xBD9E, + 3512: 0xBD9F, + 3513: 0xBDA0, + 3514: 0xBDA1, + 3515: 0xBDA2, + 3516: 0xBDA3, + 3517: 0xBDA5, + 3518: 0xBDA6, + 3519: 0xBDA7, + 3520: 0xBDA8, + 3521: 0xBDA9, + 3522: 0xBDAA, + 3523: 0xBDAB, + 3524: 0xBDAC, + 3525: 0xBDAD, + 3526: 0xBDAE, + 3527: 0xBDAF, + 3528: 0xBDB1, + 3529: 0xBDB2, + 3530: 0xBDB3, + 3531: 0xBDB4, + 3532: 0xBDB5, + 3533: 0xBDB6, + 3534: 0xBDB7, + 3535: 0xBDB9, + 3536: 0xBDBA, + 3537: 0xBDBB, + 3538: 0xBDBC, + 3539: 0xBDBD, + 3540: 0xBDBE, + 3541: 0xBDBF, + 3542: 0xBDC0, + 3543: 0xBDC1, + 3544: 0xBDC2, + 3545: 0xBDC3, + 3546: 0xBDC4, + 3547: 0xBDC5, + 3548: 0xBDC6, + 3549: 0xBDC7, + 3550: 0xBDC8, + 3551: 0xBDC9, + 3552: 0xBDCA, + 3553: 0xBDCB, + 3554: 0xBDCC, + 3555: 0xBDCD, + 3556: 0xBDCE, + 3557: 0xBDCF, + 3558: 0xBDD0, + 3559: 0xBDD1, + 3560: 0xBDD2, + 3561: 0xBDD3, + 3562: 0xBDD6, + 3563: 0xBDD7, + 3564: 0xBDD9, + 3565: 0xBDDA, + 3566: 0xBDDB, + 3567: 0xBDDD, + 3568: 0xBDDE, + 3569: 0xBDDF, + 3570: 0xBDE0, + 3571: 0xBDE1, + 3572: 0xBDE2, + 3573: 0xBDE3, + 3574: 0xBDE4, + 3575: 0xBDE5, + 3576: 0xBDE6, + 3577: 0xBDE7, + 3578: 0xBDE8, + 3579: 0xBDEA, + 3580: 0xBDEB, + 3581: 0xBDEC, + 3582: 0xBDED, + 3583: 0xBDEE, + 3584: 0xBDEF, + 3585: 0xBDF1, + 3586: 0xBDF2, + 3587: 0xBDF3, + 3588: 0xBDF5, + 3589: 0xBDF6, + 3590: 0xBDF7, + 3591: 0xBDF9, + 3592: 0xBDFA, + 3593: 0xBDFB, + 3594: 0xBDFC, + 3595: 0xBDFD, + 3596: 0xBDFE, + 3597: 0xBDFF, + 3598: 0xBE01, + 3599: 0xBE02, + 3600: 0xBE04, + 3601: 0xBE06, + 3602: 0xBE07, + 3603: 0xBE08, + 3604: 0xBE09, + 3605: 0xBE0A, + 3606: 0xBE0B, + 3607: 0xBE0E, + 3608: 0xBE0F, + 3609: 0xBE11, + 3610: 0xBE12, + 3611: 0xBE13, + 3612: 0xBE15, + 3613: 0xBE16, + 3614: 0xBE17, + 3615: 0xBE18, + 3616: 0xBE19, + 3617: 0xBE1A, + 3618: 0xBE1B, + 3619: 0xBE1E, + 3620: 0xBE20, + 3621: 0xBE21, + 3622: 0xBE22, + 3623: 0xBE23, + 3624: 0xBE24, + 3625: 0xBE25, + 3626: 0xBE26, + 3627: 0xBE27, + 3628: 0xBE28, + 3629: 0xBE29, + 3630: 0xBE2A, + 3631: 0xBE2B, + 3632: 0xBE2C, + 3633: 0xBE2D, + 3634: 0xBE2E, + 3635: 0xBE2F, + 3636: 0xBE30, + 3637: 0xBE31, + 3638: 0xBE32, + 3639: 0xBE33, + 3640: 0xBE34, + 3641: 0xBE35, + 3642: 0xBE36, + 3643: 0xBE37, + 3644: 0xBE38, + 3645: 0xBE39, + 3646: 0xBE3A, + 3647: 0xBE3B, + 3648: 0xBE3C, + 3649: 0xBE3D, + 3650: 0xBE3E, + 3651: 0xBE3F, + 3652: 0xBE40, + 3653: 0xBE41, + 3654: 0xBE42, + 3655: 0xBE43, + 3656: 0xBE46, + 3657: 0xBE47, + 3658: 0xBE49, + 3659: 0xBE4A, + 3660: 0xBE4B, + 3661: 0xBE4D, + 3662: 0xBE4F, + 3663: 0xBE50, + 3664: 0xBE51, + 3665: 0xBE52, + 3666: 0xBE53, + 3667: 0xBE56, + 3668: 0xBE58, + 3669: 0xBE5C, + 3670: 0xBE5D, + 3671: 0xBE5E, + 3672: 0xBE5F, + 3673: 0xBE62, + 3674: 0xBE63, + 3675: 0xBE65, + 3676: 0xBE66, + 3677: 0xBE67, + 3678: 0xBE69, + 3679: 0xBE6B, + 3680: 0xBE6C, + 3681: 0xBE6D, + 3682: 0xBE6E, + 3683: 0xBE6F, + 3684: 0xBE72, + 3685: 0xBE76, + 3686: 0xBE77, + 3687: 0xBE78, + 3688: 0xBE79, + 3689: 0xBE7A, + 3690: 0xBE7E, + 3691: 0xBE7F, + 3692: 0xBE81, + 3693: 0xBE82, + 3694: 0xBE83, + 3695: 0xBE85, + 3696: 0xBE86, + 3697: 0xBE87, + 3698: 0xBE88, + 3699: 0xBE89, + 3700: 0xBE8A, + 3701: 0xBE8B, + 3702: 0xBE8E, + 3703: 0xBE92, + 3704: 0xBE93, + 3705: 0xBE94, + 3706: 0xBE95, + 3707: 0xBE96, + 3708: 0xBE97, + 3709: 0xBE9A, + 3710: 0xBE9B, + 3711: 0xBE9C, + 3712: 0xBE9D, + 3713: 0xBE9E, + 3714: 0xBE9F, + 3715: 0xBEA0, + 3716: 0xBEA1, + 3717: 0xBEA2, + 3718: 0xBEA3, + 3719: 0xBEA4, + 3720: 0xBEA5, + 3721: 0xBEA6, + 3722: 0xBEA7, + 3723: 0xBEA9, + 3724: 0xBEAA, + 3725: 0xBEAB, + 3726: 0xBEAC, + 3727: 0xBEAD, + 3728: 0xBEAE, + 3729: 0xBEAF, + 3730: 0xBEB0, + 3731: 0xBEB1, + 3732: 0xBEB2, + 3733: 0xBEB3, + 3734: 0xBEB4, + 3735: 0xBEB5, + 3736: 0xBEB6, + 3737: 0xBEB7, + 3738: 0xBEB8, + 3739: 0xBEB9, + 3740: 0xBEBA, + 3741: 0xBEBB, + 3742: 0xBEBC, + 3743: 0xBEBD, + 3744: 0xBEBE, + 3745: 0xBEBF, + 3746: 0xBEC0, + 3747: 0xBEC1, + 3748: 0xBEC2, + 3749: 0xBEC3, + 3750: 0xBEC4, + 3751: 0xBEC5, + 3752: 0xBEC6, + 3753: 0xBEC7, + 3754: 0xBEC8, + 3755: 0xBEC9, + 3756: 0xBECA, + 3757: 0xBECB, + 3758: 0xBECC, + 3759: 0xBECD, + 3760: 0xBECE, + 3761: 0xBECF, + 3762: 0xBED2, + 3763: 0xBED3, + 3764: 0xBED5, + 3765: 0xBED6, + 3766: 0xBED9, + 3767: 0xBEDA, + 3768: 0xBEDB, + 3769: 0xBEDC, + 3770: 0xBEDD, + 3771: 0xBEDE, + 3772: 0xBEDF, + 3773: 0xBEE1, + 3774: 0xBEE2, + 3775: 0xBEE6, + 3776: 0xBEE7, + 3777: 0xBEE8, + 3778: 0xBEE9, + 3779: 0xBEEA, + 3780: 0xBEEB, + 3781: 0xBEED, + 3782: 0xBEEE, + 3783: 0xBEEF, + 3784: 0xBEF0, + 3785: 0xBEF1, + 3786: 0xBEF2, + 3787: 0xBEF3, + 3788: 0xBEF4, + 3789: 0xBEF5, + 3790: 0xBEF6, + 3791: 0xBEF7, + 3792: 0xBEF8, + 3793: 0xBEF9, + 3794: 0xBEFA, + 3795: 0xBEFB, + 3796: 0xBEFC, + 3797: 0xBEFD, + 3798: 0xBEFE, + 3799: 0xBEFF, + 3800: 0xBF00, + 3801: 0xBF02, + 3802: 0xBF03, + 3803: 0xBF04, + 3804: 0xBF05, + 3805: 0xBF06, + 3806: 0xBF07, + 3807: 0xBF0A, + 3808: 0xBF0B, + 3809: 0xBF0C, + 3810: 0xBF0D, + 3811: 0xBF0E, + 3812: 0xBF0F, + 3813: 0xBF10, + 3814: 0xBF11, + 3815: 0xBF12, + 3816: 0xBF13, + 3817: 0xBF14, + 3818: 0xBF15, + 3819: 0xBF16, + 3820: 0xBF17, + 3821: 0xBF1A, + 3822: 0xBF1E, + 3823: 0xBF1F, + 3824: 0xBF20, + 3825: 0xBF21, + 3826: 0xBF22, + 3827: 0xBF23, + 3828: 0xBF24, + 3829: 0xBF25, + 3830: 0xBF26, + 3831: 0xBF27, + 3832: 0xBF28, + 3833: 0xBF29, + 3834: 0xBF2A, + 3835: 0xBF2B, + 3836: 0xBF2C, + 3837: 0xBF2D, + 3838: 0xBF2E, + 3839: 0xBF2F, + 3840: 0xBF30, + 3841: 0xBF31, + 3842: 0xBF32, + 3843: 0xBF33, + 3844: 0xBF34, + 3845: 0xBF35, + 3846: 0xBF36, + 3847: 0xBF37, + 3848: 0xBF38, + 3849: 0xBF39, + 3850: 0xBF3A, + 3851: 0xBF3B, + 3852: 0xBF3C, + 3853: 0xBF3D, + 3854: 0xBF3E, + 3855: 0xBF3F, + 3856: 0xBF42, + 3857: 0xBF43, + 3858: 0xBF45, + 3859: 0xBF46, + 3860: 0xBF47, + 3861: 0xBF49, + 3862: 0xBF4A, + 3863: 0xBF4B, + 3864: 0xBF4C, + 3865: 0xBF4D, + 3866: 0xBF4E, + 3867: 0xBF4F, + 3868: 0xBF52, + 3869: 0xBF53, + 3870: 0xBF54, + 3871: 0xBF56, + 3872: 0xBF57, + 3873: 0xBF58, + 3874: 0xBF59, + 3875: 0xBF5A, + 3876: 0xBF5B, + 3877: 0xBF5C, + 3878: 0xBF5D, + 3879: 0xBF5E, + 3880: 0xBF5F, + 3881: 0xBF60, + 3882: 0xBF61, + 3883: 0xBF62, + 3884: 0xBF63, + 3885: 0xBF64, + 3886: 0xBF65, + 3887: 0xBF66, + 3888: 0xBF67, + 3889: 0xBF68, + 3890: 0xBF69, + 3891: 0xBF6A, + 3892: 0xBF6B, + 3893: 0xBF6C, + 3894: 0xBF6D, + 3895: 0xBF6E, + 3896: 0xBF6F, + 3897: 0xBF70, + 3898: 0xBF71, + 3899: 0xBF72, + 3900: 0xBF73, + 3901: 0xBF74, + 3902: 0xBF75, + 3903: 0xBF76, + 3904: 0xBF77, + 3905: 0xBF78, + 3906: 0xBF79, + 3907: 0xBF7A, + 3908: 0xBF7B, + 3909: 0xBF7C, + 3910: 0xBF7D, + 3911: 0xBF7E, + 3912: 0xBF7F, + 3913: 0xBF80, + 3914: 0xBF81, + 3915: 0xBF82, + 3916: 0xBF83, + 3917: 0xBF84, + 3918: 0xBF85, + 3919: 0xBF86, + 3920: 0xBF87, + 3921: 0xBF88, + 3922: 0xBF89, + 3923: 0xBF8A, + 3924: 0xBF8B, + 3925: 0xBF8C, + 3926: 0xBF8D, + 3927: 0xBF8E, + 3928: 0xBF8F, + 3929: 0xBF90, + 3930: 0xBF91, + 3931: 0xBF92, + 3932: 0xBF93, + 3933: 0xBF95, + 3934: 0xBF96, + 3935: 0xBF97, + 3936: 0xBF98, + 3937: 0xBF99, + 3938: 0xBF9A, + 3939: 0xBF9B, + 3940: 0xBF9C, + 3941: 0xBF9D, + 3942: 0xBF9E, + 3943: 0xBF9F, + 3944: 0xBFA0, + 3945: 0xBFA1, + 3946: 0xBFA2, + 3947: 0xBFA3, + 3948: 0xBFA4, + 3949: 0xBFA5, + 3950: 0xBFA6, + 3951: 0xBFA7, + 3952: 0xBFA8, + 3953: 0xBFA9, + 3954: 0xBFAA, + 3955: 0xBFAB, + 3956: 0xBFAC, + 3957: 0xBFAD, + 3958: 0xBFAE, + 3959: 0xBFAF, + 3960: 0xBFB1, + 3961: 0xBFB2, + 3962: 0xBFB3, + 3963: 0xBFB4, + 3964: 0xBFB5, + 3965: 0xBFB6, + 3966: 0xBFB7, + 3967: 0xBFB8, + 3968: 0xBFB9, + 3969: 0xBFBA, + 3970: 0xBFBB, + 3971: 0xBFBC, + 3972: 0xBFBD, + 3973: 0xBFBE, + 3974: 0xBFBF, + 3975: 0xBFC0, + 3976: 0xBFC1, + 3977: 0xBFC2, + 3978: 0xBFC3, + 3979: 0xBFC4, + 3980: 0xBFC6, + 3981: 0xBFC7, + 3982: 0xBFC8, + 3983: 0xBFC9, + 3984: 0xBFCA, + 3985: 0xBFCB, + 3986: 0xBFCE, + 3987: 0xBFCF, + 3988: 0xBFD1, + 3989: 0xBFD2, + 3990: 0xBFD3, + 3991: 0xBFD5, + 3992: 0xBFD6, + 3993: 0xBFD7, + 3994: 0xBFD8, + 3995: 0xBFD9, + 3996: 0xBFDA, + 3997: 0xBFDB, + 3998: 0xBFDD, + 3999: 0xBFDE, + 4000: 0xBFE0, + 4001: 0xBFE2, + 4002: 0xBFE3, + 4003: 0xBFE4, + 4004: 0xBFE5, + 4005: 0xBFE6, + 4006: 0xBFE7, + 4007: 0xBFE8, + 4008: 0xBFE9, + 4009: 0xBFEA, + 4010: 0xBFEB, + 4011: 0xBFEC, + 4012: 0xBFED, + 4013: 0xBFEE, + 4014: 0xBFEF, + 4015: 0xBFF0, + 4016: 0xBFF1, + 4017: 0xBFF2, + 4018: 0xBFF3, + 4019: 0xBFF4, + 4020: 0xBFF5, + 4021: 0xBFF6, + 4022: 0xBFF7, + 4023: 0xBFF8, + 4024: 0xBFF9, + 4025: 0xBFFA, + 4026: 0xBFFB, + 4027: 0xBFFC, + 4028: 0xBFFD, + 4029: 0xBFFE, + 4030: 0xBFFF, + 4031: 0xC000, + 4032: 0xC001, + 4033: 0xC002, + 4034: 0xC003, + 4035: 0xC004, + 4036: 0xC005, + 4037: 0xC006, + 4038: 0xC007, + 4039: 0xC008, + 4040: 0xC009, + 4041: 0xC00A, + 4042: 0xC00B, + 4043: 0xC00C, + 4044: 0xC00D, + 4045: 0xC00E, + 4046: 0xC00F, + 4047: 0xC010, + 4048: 0xC011, + 4049: 0xC012, + 4050: 0xC013, + 4051: 0xC014, + 4052: 0xC015, + 4053: 0xC016, + 4054: 0xC017, + 4055: 0xC018, + 4056: 0xC019, + 4057: 0xC01A, + 4058: 0xC01B, + 4059: 0xC01C, + 4060: 0xC01D, + 4061: 0xC01E, + 4062: 0xC01F, + 4063: 0xC020, + 4064: 0xC021, + 4065: 0xC022, + 4066: 0xC023, + 4067: 0xC024, + 4068: 0xC025, + 4069: 0xC026, + 4070: 0xC027, + 4071: 0xC028, + 4072: 0xC029, + 4073: 0xC02A, + 4074: 0xC02B, + 4075: 0xC02C, + 4076: 0xC02D, + 4077: 0xC02E, + 4078: 0xC02F, + 4079: 0xC030, + 4080: 0xC031, + 4081: 0xC032, + 4082: 0xC033, + 4083: 0xC034, + 4084: 0xC035, + 4085: 0xC036, + 4086: 0xC037, + 4087: 0xC038, + 4088: 0xC039, + 4089: 0xC03A, + 4090: 0xC03B, + 4091: 0xC03D, + 4092: 0xC03E, + 4093: 0xC03F, + 4094: 0xC040, + 4095: 0xC041, + 4096: 0xC042, + 4097: 0xC043, + 4098: 0xC044, + 4099: 0xC045, + 4100: 0xC046, + 4101: 0xC047, + 4102: 0xC048, + 4103: 0xC049, + 4104: 0xC04A, + 4105: 0xC04B, + 4106: 0xC04C, + 4107: 0xC04D, + 4108: 0xC04E, + 4109: 0xC04F, + 4110: 0xC050, + 4111: 0xC052, + 4112: 0xC053, + 4113: 0xC054, + 4114: 0xC055, + 4115: 0xC056, + 4116: 0xC057, + 4117: 0xC059, + 4118: 0xC05A, + 4119: 0xC05B, + 4120: 0xC05D, + 4121: 0xC05E, + 4122: 0xC05F, + 4123: 0xC061, + 4124: 0xC062, + 4125: 0xC063, + 4126: 0xC064, + 4127: 0xC065, + 4128: 0xC066, + 4129: 0xC067, + 4130: 0xC06A, + 4131: 0xC06B, + 4132: 0xC06C, + 4133: 0xC06D, + 4134: 0xC06E, + 4135: 0xC06F, + 4136: 0xC070, + 4137: 0xC071, + 4138: 0xC072, + 4139: 0xC073, + 4140: 0xC074, + 4141: 0xC075, + 4142: 0xC076, + 4143: 0xC077, + 4144: 0xC078, + 4145: 0xC079, + 4146: 0xC07A, + 4147: 0xC07B, + 4148: 0xC07C, + 4149: 0xC07D, + 4150: 0xC07E, + 4151: 0xC07F, + 4152: 0xC080, + 4153: 0xC081, + 4154: 0xC082, + 4155: 0xC083, + 4156: 0xC084, + 4157: 0xC085, + 4158: 0xC086, + 4159: 0xC087, + 4160: 0xC088, + 4161: 0xC089, + 4162: 0xC08A, + 4163: 0xC08B, + 4164: 0xC08C, + 4165: 0xC08D, + 4166: 0xC08E, + 4167: 0xC08F, + 4168: 0xC092, + 4169: 0xC093, + 4170: 0xC095, + 4171: 0xC096, + 4172: 0xC097, + 4173: 0xC099, + 4174: 0xC09A, + 4175: 0xC09B, + 4176: 0xC09C, + 4177: 0xC09D, + 4178: 0xC09E, + 4179: 0xC09F, + 4180: 0xC0A2, + 4181: 0xC0A4, + 4182: 0xC0A6, + 4183: 0xC0A7, + 4184: 0xC0A8, + 4185: 0xC0A9, + 4186: 0xC0AA, + 4187: 0xC0AB, + 4188: 0xC0AE, + 4189: 0xC0B1, + 4190: 0xC0B2, + 4191: 0xC0B7, + 4192: 0xC0B8, + 4193: 0xC0B9, + 4194: 0xC0BA, + 4195: 0xC0BB, + 4196: 0xC0BE, + 4197: 0xC0C2, + 4198: 0xC0C3, + 4199: 0xC0C4, + 4200: 0xC0C6, + 4201: 0xC0C7, + 4202: 0xC0CA, + 4203: 0xC0CB, + 4204: 0xC0CD, + 4205: 0xC0CE, + 4206: 0xC0CF, + 4207: 0xC0D1, + 4208: 0xC0D2, + 4209: 0xC0D3, + 4210: 0xC0D4, + 4211: 0xC0D5, + 4212: 0xC0D6, + 4213: 0xC0D7, + 4214: 0xC0DA, + 4215: 0xC0DE, + 4216: 0xC0DF, + 4217: 0xC0E0, + 4218: 0xC0E1, + 4219: 0xC0E2, + 4220: 0xC0E3, + 4221: 0xC0E6, + 4222: 0xC0E7, + 4223: 0xC0E9, + 4224: 0xC0EA, + 4225: 0xC0EB, + 4226: 0xC0ED, + 4227: 0xC0EE, + 4228: 0xC0EF, + 4229: 0xC0F0, + 4230: 0xC0F1, + 4231: 0xC0F2, + 4232: 0xC0F3, + 4233: 0xC0F6, + 4234: 0xC0F8, + 4235: 0xC0FA, + 4236: 0xC0FB, + 4237: 0xC0FC, + 4238: 0xC0FD, + 4239: 0xC0FE, + 4240: 0xC0FF, + 4241: 0xC101, + 4242: 0xC102, + 4243: 0xC103, + 4244: 0xC105, + 4245: 0xC106, + 4246: 0xC107, + 4247: 0xC109, + 4248: 0xC10A, + 4249: 0xC10B, + 4250: 0xC10C, + 4251: 0xC10D, + 4252: 0xC10E, + 4253: 0xC10F, + 4254: 0xC111, + 4255: 0xC112, + 4256: 0xC113, + 4257: 0xC114, + 4258: 0xC116, + 4259: 0xC117, + 4260: 0xC118, + 4261: 0xC119, + 4262: 0xC11A, + 4263: 0xC11B, + 4264: 0xC121, + 4265: 0xC122, + 4266: 0xC125, + 4267: 0xC128, + 4268: 0xC129, + 4269: 0xC12A, + 4270: 0xC12B, + 4271: 0xC12E, + 4272: 0xC132, + 4273: 0xC133, + 4274: 0xC134, + 4275: 0xC135, + 4276: 0xC137, + 4277: 0xC13A, + 4278: 0xC13B, + 4279: 0xC13D, + 4280: 0xC13E, + 4281: 0xC13F, + 4282: 0xC141, + 4283: 0xC142, + 4284: 0xC143, + 4285: 0xC144, + 4286: 0xC145, + 4287: 0xC146, + 4288: 0xC147, + 4289: 0xC14A, + 4290: 0xC14E, + 4291: 0xC14F, + 4292: 0xC150, + 4293: 0xC151, + 4294: 0xC152, + 4295: 0xC153, + 4296: 0xC156, + 4297: 0xC157, + 4298: 0xC159, + 4299: 0xC15A, + 4300: 0xC15B, + 4301: 0xC15D, + 4302: 0xC15E, + 4303: 0xC15F, + 4304: 0xC160, + 4305: 0xC161, + 4306: 0xC162, + 4307: 0xC163, + 4308: 0xC166, + 4309: 0xC16A, + 4310: 0xC16B, + 4311: 0xC16C, + 4312: 0xC16D, + 4313: 0xC16E, + 4314: 0xC16F, + 4315: 0xC171, + 4316: 0xC172, + 4317: 0xC173, + 4318: 0xC175, + 4319: 0xC176, + 4320: 0xC177, + 4321: 0xC179, + 4322: 0xC17A, + 4323: 0xC17B, + 4324: 0xC17C, + 4325: 0xC17D, + 4326: 0xC17E, + 4327: 0xC17F, + 4328: 0xC180, + 4329: 0xC181, + 4330: 0xC182, + 4331: 0xC183, + 4332: 0xC184, + 4333: 0xC186, + 4334: 0xC187, + 4335: 0xC188, + 4336: 0xC189, + 4337: 0xC18A, + 4338: 0xC18B, + 4339: 0xC18F, + 4340: 0xC191, + 4341: 0xC192, + 4342: 0xC193, + 4343: 0xC195, + 4344: 0xC197, + 4345: 0xC198, + 4346: 0xC199, + 4347: 0xC19A, + 4348: 0xC19B, + 4349: 0xC19E, + 4350: 0xC1A0, + 4351: 0xC1A2, + 4352: 0xC1A3, + 4353: 0xC1A4, + 4354: 0xC1A6, + 4355: 0xC1A7, + 4356: 0xC1AA, + 4357: 0xC1AB, + 4358: 0xC1AD, + 4359: 0xC1AE, + 4360: 0xC1AF, + 4361: 0xC1B1, + 4362: 0xC1B2, + 4363: 0xC1B3, + 4364: 0xC1B4, + 4365: 0xC1B5, + 4366: 0xC1B6, + 4367: 0xC1B7, + 4368: 0xC1B8, + 4369: 0xC1B9, + 4370: 0xC1BA, + 4371: 0xC1BB, + 4372: 0xC1BC, + 4373: 0xC1BE, + 4374: 0xC1BF, + 4375: 0xC1C0, + 4376: 0xC1C1, + 4377: 0xC1C2, + 4378: 0xC1C3, + 4379: 0xC1C5, + 4380: 0xC1C6, + 4381: 0xC1C7, + 4382: 0xC1C9, + 4383: 0xC1CA, + 4384: 0xC1CB, + 4385: 0xC1CD, + 4386: 0xC1CE, + 4387: 0xC1CF, + 4388: 0xC1D0, + 4389: 0xC1D1, + 4390: 0xC1D2, + 4391: 0xC1D3, + 4392: 0xC1D5, + 4393: 0xC1D6, + 4394: 0xC1D9, + 4395: 0xC1DA, + 4396: 0xC1DB, + 4397: 0xC1DC, + 4398: 0xC1DD, + 4399: 0xC1DE, + 4400: 0xC1DF, + 4401: 0xC1E1, + 4402: 0xC1E2, + 4403: 0xC1E3, + 4404: 0xC1E5, + 4405: 0xC1E6, + 4406: 0xC1E7, + 4407: 0xC1E9, + 4408: 0xC1EA, + 4409: 0xC1EB, + 4410: 0xC1EC, + 4411: 0xC1ED, + 4412: 0xC1EE, + 4413: 0xC1EF, + 4414: 0xC1F2, + 4415: 0xC1F4, + 4416: 0xC1F5, + 4417: 0xC1F6, + 4418: 0xC1F7, + 4419: 0xC1F8, + 4420: 0xC1F9, + 4421: 0xC1FA, + 4422: 0xC1FB, + 4423: 0xC1FE, + 4424: 0xC1FF, + 4425: 0xC201, + 4426: 0xC202, + 4427: 0xC203, + 4428: 0xC205, + 4429: 0xC206, + 4430: 0xC207, + 4431: 0xC208, + 4432: 0xC209, + 4433: 0xC20A, + 4434: 0xC20B, + 4435: 0xC20E, + 4436: 0xC210, + 4437: 0xC212, + 4438: 0xC213, + 4439: 0xC214, + 4440: 0xC215, + 4441: 0xC216, + 4442: 0xC217, + 4443: 0xC21A, + 4444: 0xC21B, + 4445: 0xC21D, + 4446: 0xC21E, + 4447: 0xC221, + 4448: 0xC222, + 4449: 0xC223, + 4450: 0xC224, + 4451: 0xC225, + 4452: 0xC226, + 4453: 0xC227, + 4454: 0xC22A, + 4455: 0xC22C, + 4456: 0xC22E, + 4457: 0xC230, + 4458: 0xC233, + 4459: 0xC235, + 4460: 0xC236, + 4461: 0xC237, + 4462: 0xC238, + 4463: 0xC239, + 4464: 0xC23A, + 4465: 0xC23B, + 4466: 0xC23C, + 4467: 0xC23D, + 4468: 0xC23E, + 4469: 0xC23F, + 4470: 0xC240, + 4471: 0xC241, + 4472: 0xC242, + 4473: 0xC243, + 4474: 0xC244, + 4475: 0xC245, + 4476: 0xC246, + 4477: 0xC247, + 4478: 0xC249, + 4479: 0xC24A, + 4480: 0xC24B, + 4481: 0xC24C, + 4482: 0xC24D, + 4483: 0xC24E, + 4484: 0xC24F, + 4485: 0xC252, + 4486: 0xC253, + 4487: 0xC255, + 4488: 0xC256, + 4489: 0xC257, + 4490: 0xC259, + 4491: 0xC25A, + 4492: 0xC25B, + 4493: 0xC25C, + 4494: 0xC25D, + 4495: 0xC25E, + 4496: 0xC25F, + 4497: 0xC261, + 4498: 0xC262, + 4499: 0xC263, + 4500: 0xC264, + 4501: 0xC266, + 4502: 0xC267, + 4503: 0xC268, + 4504: 0xC269, + 4505: 0xC26A, + 4506: 0xC26B, + 4507: 0xC26E, + 4508: 0xC26F, + 4509: 0xC271, + 4510: 0xC272, + 4511: 0xC273, + 4512: 0xC275, + 4513: 0xC276, + 4514: 0xC277, + 4515: 0xC278, + 4516: 0xC279, + 4517: 0xC27A, + 4518: 0xC27B, + 4519: 0xC27E, + 4520: 0xC280, + 4521: 0xC282, + 4522: 0xC283, + 4523: 0xC284, + 4524: 0xC285, + 4525: 0xC286, + 4526: 0xC287, + 4527: 0xC28A, + 4528: 0xC28B, + 4529: 0xC28C, + 4530: 0xC28D, + 4531: 0xC28E, + 4532: 0xC28F, + 4533: 0xC291, + 4534: 0xC292, + 4535: 0xC293, + 4536: 0xC294, + 4537: 0xC295, + 4538: 0xC296, + 4539: 0xC297, + 4540: 0xC299, + 4541: 0xC29A, + 4542: 0xC29C, + 4543: 0xC29E, + 4544: 0xC29F, + 4545: 0xC2A0, + 4546: 0xC2A1, + 4547: 0xC2A2, + 4548: 0xC2A3, + 4549: 0xC2A6, + 4550: 0xC2A7, + 4551: 0xC2A9, + 4552: 0xC2AA, + 4553: 0xC2AB, + 4554: 0xC2AE, + 4555: 0xC2AF, + 4556: 0xC2B0, + 4557: 0xC2B1, + 4558: 0xC2B2, + 4559: 0xC2B3, + 4560: 0xC2B6, + 4561: 0xC2B8, + 4562: 0xC2BA, + 4563: 0xC2BB, + 4564: 0xC2BC, + 4565: 0xC2BD, + 4566: 0xC2BE, + 4567: 0xC2BF, + 4568: 0xC2C0, + 4569: 0xC2C1, + 4570: 0xC2C2, + 4571: 0xC2C3, + 4572: 0xC2C4, + 4573: 0xC2C5, + 4574: 0xC2C6, + 4575: 0xC2C7, + 4576: 0xC2C8, + 4577: 0xC2C9, + 4578: 0xC2CA, + 4579: 0xC2CB, + 4580: 0xC2CC, + 4581: 0xC2CD, + 4582: 0xC2CE, + 4583: 0xC2CF, + 4584: 0xC2D0, + 4585: 0xC2D1, + 4586: 0xC2D2, + 4587: 0xC2D3, + 4588: 0xC2D4, + 4589: 0xC2D5, + 4590: 0xC2D6, + 4591: 0xC2D7, + 4592: 0xC2D8, + 4593: 0xC2D9, + 4594: 0xC2DA, + 4595: 0xC2DB, + 4596: 0xC2DE, + 4597: 0xC2DF, + 4598: 0xC2E1, + 4599: 0xC2E2, + 4600: 0xC2E5, + 4601: 0xC2E6, + 4602: 0xC2E7, + 4603: 0xC2E8, + 4604: 0xC2E9, + 4605: 0xC2EA, + 4606: 0xC2EE, + 4607: 0xC2F0, + 4608: 0xC2F2, + 4609: 0xC2F3, + 4610: 0xC2F4, + 4611: 0xC2F5, + 4612: 0xC2F7, + 4613: 0xC2FA, + 4614: 0xC2FD, + 4615: 0xC2FE, + 4616: 0xC2FF, + 4617: 0xC301, + 4618: 0xC302, + 4619: 0xC303, + 4620: 0xC304, + 4621: 0xC305, + 4622: 0xC306, + 4623: 0xC307, + 4624: 0xC30A, + 4625: 0xC30B, + 4626: 0xC30E, + 4627: 0xC30F, + 4628: 0xC310, + 4629: 0xC311, + 4630: 0xC312, + 4631: 0xC316, + 4632: 0xC317, + 4633: 0xC319, + 4634: 0xC31A, + 4635: 0xC31B, + 4636: 0xC31D, + 4637: 0xC31E, + 4638: 0xC31F, + 4639: 0xC320, + 4640: 0xC321, + 4641: 0xC322, + 4642: 0xC323, + 4643: 0xC326, + 4644: 0xC327, + 4645: 0xC32A, + 4646: 0xC32B, + 4647: 0xC32C, + 4648: 0xC32D, + 4649: 0xC32E, + 4650: 0xC32F, + 4651: 0xC330, + 4652: 0xC331, + 4653: 0xC332, + 4654: 0xC333, + 4655: 0xC334, + 4656: 0xC335, + 4657: 0xC336, + 4658: 0xC337, + 4659: 0xC338, + 4660: 0xC339, + 4661: 0xC33A, + 4662: 0xC33B, + 4663: 0xC33C, + 4664: 0xC33D, + 4665: 0xC33E, + 4666: 0xC33F, + 4667: 0xC340, + 4668: 0xC341, + 4669: 0xC342, + 4670: 0xC343, + 4671: 0xC344, + 4672: 0xC346, + 4673: 0xC347, + 4674: 0xC348, + 4675: 0xC349, + 4676: 0xC34A, + 4677: 0xC34B, + 4678: 0xC34C, + 4679: 0xC34D, + 4680: 0xC34E, + 4681: 0xC34F, + 4682: 0xC350, + 4683: 0xC351, + 4684: 0xC352, + 4685: 0xC353, + 4686: 0xC354, + 4687: 0xC355, + 4688: 0xC356, + 4689: 0xC357, + 4690: 0xC358, + 4691: 0xC359, + 4692: 0xC35A, + 4693: 0xC35B, + 4694: 0xC35C, + 4695: 0xC35D, + 4696: 0xC35E, + 4697: 0xC35F, + 4698: 0xC360, + 4699: 0xC361, + 4700: 0xC362, + 4701: 0xC363, + 4702: 0xC364, + 4703: 0xC365, + 4704: 0xC366, + 4705: 0xC367, + 4706: 0xC36A, + 4707: 0xC36B, + 4708: 0xC36D, + 4709: 0xC36E, + 4710: 0xC36F, + 4711: 0xC371, + 4712: 0xC373, + 4713: 0xC374, + 4714: 0xC375, + 4715: 0xC376, + 4716: 0xC377, + 4717: 0xC37A, + 4718: 0xC37B, + 4719: 0xC37E, + 4720: 0xC37F, + 4721: 0xC380, + 4722: 0xC381, + 4723: 0xC382, + 4724: 0xC383, + 4725: 0xC385, + 4726: 0xC386, + 4727: 0xC387, + 4728: 0xC389, + 4729: 0xC38A, + 4730: 0xC38B, + 4731: 0xC38D, + 4732: 0xC38E, + 4733: 0xC38F, + 4734: 0xC390, + 4735: 0xC391, + 4736: 0xC392, + 4737: 0xC393, + 4738: 0xC394, + 4739: 0xC395, + 4740: 0xC396, + 4741: 0xC397, + 4742: 0xC398, + 4743: 0xC399, + 4744: 0xC39A, + 4745: 0xC39B, + 4746: 0xC39C, + 4747: 0xC39D, + 4748: 0xC39E, + 4749: 0xC39F, + 4750: 0xC3A0, + 4751: 0xC3A1, + 4752: 0xC3A2, + 4753: 0xC3A3, + 4754: 0xC3A4, + 4755: 0xC3A5, + 4756: 0xC3A6, + 4757: 0xC3A7, + 4758: 0xC3A8, + 4759: 0xC3A9, + 4760: 0xC3AA, + 4761: 0xC3AB, + 4762: 0xC3AC, + 4763: 0xC3AD, + 4764: 0xC3AE, + 4765: 0xC3AF, + 4766: 0xC3B0, + 4767: 0xC3B1, + 4768: 0xC3B2, + 4769: 0xC3B3, + 4770: 0xC3B4, + 4771: 0xC3B5, + 4772: 0xC3B6, + 4773: 0xC3B7, + 4774: 0xC3B8, + 4775: 0xC3B9, + 4776: 0xC3BA, + 4777: 0xC3BB, + 4778: 0xC3BC, + 4779: 0xC3BD, + 4780: 0xC3BE, + 4781: 0xC3BF, + 4782: 0xC3C1, + 4783: 0xC3C2, + 4784: 0xC3C3, + 4785: 0xC3C4, + 4786: 0xC3C5, + 4787: 0xC3C6, + 4788: 0xC3C7, + 4789: 0xC3C8, + 4790: 0xC3C9, + 4791: 0xC3CA, + 4792: 0xC3CB, + 4793: 0xC3CC, + 4794: 0xC3CD, + 4795: 0xC3CE, + 4796: 0xC3CF, + 4797: 0xC3D0, + 4798: 0xC3D1, + 4799: 0xC3D2, + 4800: 0xC3D3, + 4801: 0xC3D4, + 4802: 0xC3D5, + 4803: 0xC3D6, + 4804: 0xC3D7, + 4805: 0xC3DA, + 4806: 0xC3DB, + 4807: 0xC3DD, + 4808: 0xC3DE, + 4809: 0xC3E1, + 4810: 0xC3E3, + 4811: 0xC3E4, + 4812: 0xC3E5, + 4813: 0xC3E6, + 4814: 0xC3E7, + 4815: 0xC3EA, + 4816: 0xC3EB, + 4817: 0xC3EC, + 4818: 0xC3EE, + 4819: 0xC3EF, + 4820: 0xC3F0, + 4821: 0xC3F1, + 4822: 0xC3F2, + 4823: 0xC3F3, + 4824: 0xC3F6, + 4825: 0xC3F7, + 4826: 0xC3F9, + 4827: 0xC3FA, + 4828: 0xC3FB, + 4829: 0xC3FC, + 4830: 0xC3FD, + 4831: 0xC3FE, + 4832: 0xC3FF, + 4833: 0xC400, + 4834: 0xC401, + 4835: 0xC402, + 4836: 0xC403, + 4837: 0xC404, + 4838: 0xC405, + 4839: 0xC406, + 4840: 0xC407, + 4841: 0xC409, + 4842: 0xC40A, + 4843: 0xC40B, + 4844: 0xC40C, + 4845: 0xC40D, + 4846: 0xC40E, + 4847: 0xC40F, + 4848: 0xC411, + 4849: 0xC412, + 4850: 0xC413, + 4851: 0xC414, + 4852: 0xC415, + 4853: 0xC416, + 4854: 0xC417, + 4855: 0xC418, + 4856: 0xC419, + 4857: 0xC41A, + 4858: 0xC41B, + 4859: 0xC41C, + 4860: 0xC41D, + 4861: 0xC41E, + 4862: 0xC41F, + 4863: 0xC420, + 4864: 0xC421, + 4865: 0xC422, + 4866: 0xC423, + 4867: 0xC425, + 4868: 0xC426, + 4869: 0xC427, + 4870: 0xC428, + 4871: 0xC429, + 4872: 0xC42A, + 4873: 0xC42B, + 4874: 0xC42D, + 4875: 0xC42E, + 4876: 0xC42F, + 4877: 0xC431, + 4878: 0xC432, + 4879: 0xC433, + 4880: 0xC435, + 4881: 0xC436, + 4882: 0xC437, + 4883: 0xC438, + 4884: 0xC439, + 4885: 0xC43A, + 4886: 0xC43B, + 4887: 0xC43E, + 4888: 0xC43F, + 4889: 0xC440, + 4890: 0xC441, + 4891: 0xC442, + 4892: 0xC443, + 4893: 0xC444, + 4894: 0xC445, + 4895: 0xC446, + 4896: 0xC447, + 4897: 0xC449, + 4898: 0xC44A, + 4899: 0xC44B, + 4900: 0xC44C, + 4901: 0xC44D, + 4902: 0xC44E, + 4903: 0xC44F, + 4904: 0xC450, + 4905: 0xC451, + 4906: 0xC452, + 4907: 0xC453, + 4908: 0xC454, + 4909: 0xC455, + 4910: 0xC456, + 4911: 0xC457, + 4912: 0xC458, + 4913: 0xC459, + 4914: 0xC45A, + 4915: 0xC45B, + 4916: 0xC45C, + 4917: 0xC45D, + 4918: 0xC45E, + 4919: 0xC45F, + 4920: 0xC460, + 4921: 0xC461, + 4922: 0xC462, + 4923: 0xC463, + 4924: 0xC466, + 4925: 0xC467, + 4926: 0xC469, + 4927: 0xC46A, + 4928: 0xC46B, + 4929: 0xC46D, + 4930: 0xC46E, + 4931: 0xC46F, + 4932: 0xC470, + 4933: 0xC471, + 4934: 0xC472, + 4935: 0xC473, + 4936: 0xC476, + 4937: 0xC477, + 4938: 0xC478, + 4939: 0xC47A, + 4940: 0xC47B, + 4941: 0xC47C, + 4942: 0xC47D, + 4943: 0xC47E, + 4944: 0xC47F, + 4945: 0xC481, + 4946: 0xC482, + 4947: 0xC483, + 4948: 0xC484, + 4949: 0xC485, + 4950: 0xC486, + 4951: 0xC487, + 4952: 0xC488, + 4953: 0xC489, + 4954: 0xC48A, + 4955: 0xC48B, + 4956: 0xC48C, + 4957: 0xC48D, + 4958: 0xC48E, + 4959: 0xC48F, + 4960: 0xC490, + 4961: 0xC491, + 4962: 0xC492, + 4963: 0xC493, + 4964: 0xC495, + 4965: 0xC496, + 4966: 0xC497, + 4967: 0xC498, + 4968: 0xC499, + 4969: 0xC49A, + 4970: 0xC49B, + 4971: 0xC49D, + 4972: 0xC49E, + 4973: 0xC49F, + 4974: 0xC4A0, + 4975: 0xC4A1, + 4976: 0xC4A2, + 4977: 0xC4A3, + 4978: 0xC4A4, + 4979: 0xC4A5, + 4980: 0xC4A6, + 4981: 0xC4A7, + 4982: 0xC4A8, + 4983: 0xC4A9, + 4984: 0xC4AA, + 4985: 0xC4AB, + 4986: 0xC4AC, + 4987: 0xC4AD, + 4988: 0xC4AE, + 4989: 0xC4AF, + 4990: 0xC4B0, + 4991: 0xC4B1, + 4992: 0xC4B2, + 4993: 0xC4B3, + 4994: 0xC4B4, + 4995: 0xC4B5, + 4996: 0xC4B6, + 4997: 0xC4B7, + 4998: 0xC4B9, + 4999: 0xC4BA, + 5000: 0xC4BB, + 5001: 0xC4BD, + 5002: 0xC4BE, + 5003: 0xC4BF, + 5004: 0xC4C0, + 5005: 0xC4C1, + 5006: 0xC4C2, + 5007: 0xC4C3, + 5008: 0xC4C4, + 5009: 0xC4C5, + 5010: 0xC4C6, + 5011: 0xC4C7, + 5012: 0xC4C8, + 5013: 0xC4C9, + 5014: 0xC4CA, + 5015: 0xC4CB, + 5016: 0xC4CC, + 5017: 0xC4CD, + 5018: 0xC4CE, + 5019: 0xC4CF, + 5020: 0xC4D0, + 5021: 0xC4D1, + 5022: 0xC4D2, + 5023: 0xC4D3, + 5024: 0xC4D4, + 5025: 0xC4D5, + 5026: 0xC4D6, + 5027: 0xC4D7, + 5028: 0xC4D8, + 5029: 0xC4D9, + 5030: 0xC4DA, + 5031: 0xC4DB, + 5032: 0xC4DC, + 5033: 0xC4DD, + 5034: 0xC4DE, + 5035: 0xC4DF, + 5036: 0xC4E0, + 5037: 0xC4E1, + 5038: 0xC4E2, + 5039: 0xC4E3, + 5040: 0xC4E4, + 5041: 0xC4E5, + 5042: 0xC4E6, + 5043: 0xC4E7, + 5044: 0xC4E8, + 5045: 0xC4EA, + 5046: 0xC4EB, + 5047: 0xC4EC, + 5048: 0xC4ED, + 5049: 0xC4EE, + 5050: 0xC4EF, + 5051: 0xC4F2, + 5052: 0xC4F3, + 5053: 0xC4F5, + 5054: 0xC4F6, + 5055: 0xC4F7, + 5056: 0xC4F9, + 5057: 0xC4FB, + 5058: 0xC4FC, + 5059: 0xC4FD, + 5060: 0xC4FE, + 5061: 0xC502, + 5062: 0xC503, + 5063: 0xC504, + 5064: 0xC505, + 5065: 0xC506, + 5066: 0xC507, + 5067: 0xC508, + 5068: 0xC509, + 5069: 0xC50A, + 5070: 0xC50B, + 5071: 0xC50D, + 5072: 0xC50E, + 5073: 0xC50F, + 5074: 0xC511, + 5075: 0xC512, + 5076: 0xC513, + 5077: 0xC515, + 5078: 0xC516, + 5079: 0xC517, + 5080: 0xC518, + 5081: 0xC519, + 5082: 0xC51A, + 5083: 0xC51B, + 5084: 0xC51D, + 5085: 0xC51E, + 5086: 0xC51F, + 5087: 0xC520, + 5088: 0xC521, + 5089: 0xC522, + 5090: 0xC523, + 5091: 0xC524, + 5092: 0xC525, + 5093: 0xC526, + 5094: 0xC527, + 5095: 0xC52A, + 5096: 0xC52B, + 5097: 0xC52D, + 5098: 0xC52E, + 5099: 0xC52F, + 5100: 0xC531, + 5101: 0xC532, + 5102: 0xC533, + 5103: 0xC534, + 5104: 0xC535, + 5105: 0xC536, + 5106: 0xC537, + 5107: 0xC53A, + 5108: 0xC53C, + 5109: 0xC53E, + 5110: 0xC53F, + 5111: 0xC540, + 5112: 0xC541, + 5113: 0xC542, + 5114: 0xC543, + 5115: 0xC546, + 5116: 0xC547, + 5117: 0xC54B, + 5118: 0xC54F, + 5119: 0xC550, + 5120: 0xC551, + 5121: 0xC552, + 5122: 0xC556, + 5123: 0xC55A, + 5124: 0xC55B, + 5125: 0xC55C, + 5126: 0xC55F, + 5127: 0xC562, + 5128: 0xC563, + 5129: 0xC565, + 5130: 0xC566, + 5131: 0xC567, + 5132: 0xC569, + 5133: 0xC56A, + 5134: 0xC56B, + 5135: 0xC56C, + 5136: 0xC56D, + 5137: 0xC56E, + 5138: 0xC56F, + 5139: 0xC572, + 5140: 0xC576, + 5141: 0xC577, + 5142: 0xC578, + 5143: 0xC579, + 5144: 0xC57A, + 5145: 0xC57B, + 5146: 0xC57E, + 5147: 0xC57F, + 5148: 0xC581, + 5149: 0xC582, + 5150: 0xC583, + 5151: 0xC585, + 5152: 0xC586, + 5153: 0xC588, + 5154: 0xC589, + 5155: 0xC58A, + 5156: 0xC58B, + 5157: 0xC58E, + 5158: 0xC590, + 5159: 0xC592, + 5160: 0xC593, + 5161: 0xC594, + 5162: 0xC596, + 5163: 0xC599, + 5164: 0xC59A, + 5165: 0xC59B, + 5166: 0xC59D, + 5167: 0xC59E, + 5168: 0xC59F, + 5169: 0xC5A1, + 5170: 0xC5A2, + 5171: 0xC5A3, + 5172: 0xC5A4, + 5173: 0xC5A5, + 5174: 0xC5A6, + 5175: 0xC5A7, + 5176: 0xC5A8, + 5177: 0xC5AA, + 5178: 0xC5AB, + 5179: 0xC5AC, + 5180: 0xC5AD, + 5181: 0xC5AE, + 5182: 0xC5AF, + 5183: 0xC5B0, + 5184: 0xC5B1, + 5185: 0xC5B2, + 5186: 0xC5B3, + 5187: 0xC5B6, + 5188: 0xC5B7, + 5189: 0xC5BA, + 5190: 0xC5BF, + 5191: 0xC5C0, + 5192: 0xC5C1, + 5193: 0xC5C2, + 5194: 0xC5C3, + 5195: 0xC5CB, + 5196: 0xC5CD, + 5197: 0xC5CF, + 5198: 0xC5D2, + 5199: 0xC5D3, + 5200: 0xC5D5, + 5201: 0xC5D6, + 5202: 0xC5D7, + 5203: 0xC5D9, + 5204: 0xC5DA, + 5205: 0xC5DB, + 5206: 0xC5DC, + 5207: 0xC5DD, + 5208: 0xC5DE, + 5209: 0xC5DF, + 5210: 0xC5E2, + 5211: 0xC5E4, + 5212: 0xC5E6, + 5213: 0xC5E7, + 5214: 0xC5E8, + 5215: 0xC5E9, + 5216: 0xC5EA, + 5217: 0xC5EB, + 5218: 0xC5EF, + 5219: 0xC5F1, + 5220: 0xC5F2, + 5221: 0xC5F3, + 5222: 0xC5F5, + 5223: 0xC5F8, + 5224: 0xC5F9, + 5225: 0xC5FA, + 5226: 0xC5FB, + 5227: 0xC602, + 5228: 0xC603, + 5229: 0xC604, + 5230: 0xC609, + 5231: 0xC60A, + 5232: 0xC60B, + 5233: 0xC60D, + 5234: 0xC60E, + 5235: 0xC60F, + 5236: 0xC611, + 5237: 0xC612, + 5238: 0xC613, + 5239: 0xC614, + 5240: 0xC615, + 5241: 0xC616, + 5242: 0xC617, + 5243: 0xC61A, + 5244: 0xC61D, + 5245: 0xC61E, + 5246: 0xC61F, + 5247: 0xC620, + 5248: 0xC621, + 5249: 0xC622, + 5250: 0xC623, + 5251: 0xC626, + 5252: 0xC627, + 5253: 0xC629, + 5254: 0xC62A, + 5255: 0xC62B, + 5256: 0xC62F, + 5257: 0xC631, + 5258: 0xC632, + 5259: 0xC636, + 5260: 0xC638, + 5261: 0xC63A, + 5262: 0xC63C, + 5263: 0xC63D, + 5264: 0xC63E, + 5265: 0xC63F, + 5266: 0xC642, + 5267: 0xC643, + 5268: 0xC645, + 5269: 0xC646, + 5270: 0xC647, + 5271: 0xC649, + 5272: 0xC64A, + 5273: 0xC64B, + 5274: 0xC64C, + 5275: 0xC64D, + 5276: 0xC64E, + 5277: 0xC64F, + 5278: 0xC652, + 5279: 0xC656, + 5280: 0xC657, + 5281: 0xC658, + 5282: 0xC659, + 5283: 0xC65A, + 5284: 0xC65B, + 5285: 0xC65E, + 5286: 0xC65F, + 5287: 0xC661, + 5288: 0xC662, + 5289: 0xC663, + 5290: 0xC664, + 5291: 0xC665, + 5292: 0xC666, + 5293: 0xC667, + 5294: 0xC668, + 5295: 0xC669, + 5296: 0xC66A, + 5297: 0xC66B, + 5298: 0xC66D, + 5299: 0xC66E, + 5300: 0xC670, + 5301: 0xC672, + 5302: 0xC673, + 5303: 0xC674, + 5304: 0xC675, + 5305: 0xC676, + 5306: 0xC677, + 5307: 0xC67A, + 5308: 0xC67B, + 5309: 0xC67D, + 5310: 0xC67E, + 5311: 0xC67F, + 5312: 0xC681, + 5313: 0xC682, + 5314: 0xC683, + 5315: 0xC684, + 5316: 0xC685, + 5317: 0xC686, + 5318: 0xC687, + 5319: 0xC68A, + 5320: 0xC68C, + 5321: 0xC68E, + 5322: 0xC68F, + 5323: 0xC690, + 5324: 0xC691, + 5325: 0xC692, + 5326: 0xC693, + 5327: 0xC696, + 5328: 0xC697, + 5329: 0xC699, + 5330: 0xC69A, + 5331: 0xC69B, + 5332: 0xC69D, + 5333: 0xC69E, + 5334: 0xC69F, + 5335: 0xC6A0, + 5336: 0xC6A1, + 5337: 0xC6A2, + 5338: 0xC6A3, + 5339: 0xC6A6, + 5340: 0xC6A8, + 5341: 0xC6AA, + 5342: 0xC6AB, + 5343: 0xC6AC, + 5344: 0xC6AD, + 5345: 0xC6AE, + 5346: 0xC6AF, + 5347: 0xC6B2, + 5348: 0xC6B3, + 5349: 0xC6B5, + 5350: 0xC6B6, + 5351: 0xC6B7, + 5352: 0xC6BB, + 5353: 0xC6BC, + 5354: 0xC6BD, + 5355: 0xC6BE, + 5356: 0xC6BF, + 5357: 0xC6C2, + 5358: 0xC6C4, + 5359: 0xC6C6, + 5360: 0xC6C7, + 5361: 0xC6C8, + 5362: 0xC6C9, + 5363: 0xC6CA, + 5364: 0xC6CB, + 5365: 0xC6CE, + 5366: 0xC6CF, + 5367: 0xC6D1, + 5368: 0xC6D2, + 5369: 0xC6D3, + 5370: 0xC6D5, + 5371: 0xC6D6, + 5372: 0xC6D7, + 5373: 0xC6D8, + 5374: 0xC6D9, + 5375: 0xC6DA, + 5376: 0xC6DB, + 5377: 0xC6DE, + 5378: 0xC6DF, + 5379: 0xC6E2, + 5380: 0xC6E3, + 5381: 0xC6E4, + 5382: 0xC6E5, + 5383: 0xC6E6, + 5384: 0xC6E7, + 5385: 0xC6EA, + 5386: 0xC6EB, + 5387: 0xC6ED, + 5388: 0xC6EE, + 5389: 0xC6EF, + 5390: 0xC6F1, + 5391: 0xC6F2, + 5392: 0xC6F3, + 5393: 0xC6F4, + 5394: 0xC6F5, + 5395: 0xC6F6, + 5396: 0xC6F7, + 5397: 0xC6FA, + 5398: 0xC6FB, + 5399: 0xC6FC, + 5400: 0xC6FE, + 5401: 0xC6FF, + 5402: 0xC700, + 5403: 0xC701, + 5404: 0xC702, + 5405: 0xC703, + 5406: 0xC706, + 5407: 0xC707, + 5408: 0xC709, + 5409: 0xC70A, + 5410: 0xC70B, + 5411: 0xC70D, + 5412: 0xC70E, + 5413: 0xC70F, + 5414: 0xC710, + 5415: 0xC711, + 5416: 0xC712, + 5417: 0xC713, + 5418: 0xC716, + 5419: 0xC718, + 5420: 0xC71A, + 5421: 0xC71B, + 5422: 0xC71C, + 5423: 0xC71D, + 5424: 0xC71E, + 5425: 0xC71F, + 5426: 0xC722, + 5427: 0xC723, + 5428: 0xC725, + 5429: 0xC726, + 5430: 0xC727, + 5431: 0xC729, + 5432: 0xC72A, + 5433: 0xC72B, + 5434: 0xC72C, + 5435: 0xC72D, + 5436: 0xC72E, + 5437: 0xC72F, + 5438: 0xC732, + 5439: 0xC734, + 5440: 0xC736, + 5441: 0xC738, + 5442: 0xC739, + 5443: 0xC73A, + 5444: 0xC73B, + 5445: 0xC73E, + 5446: 0xC73F, + 5447: 0xC741, + 5448: 0xC742, + 5449: 0xC743, + 5450: 0xC745, + 5451: 0xC746, + 5452: 0xC747, + 5453: 0xC748, + 5454: 0xC749, + 5455: 0xC74B, + 5456: 0xC74E, + 5457: 0xC750, + 5458: 0xC759, + 5459: 0xC75A, + 5460: 0xC75B, + 5461: 0xC75D, + 5462: 0xC75E, + 5463: 0xC75F, + 5464: 0xC761, + 5465: 0xC762, + 5466: 0xC763, + 5467: 0xC764, + 5468: 0xC765, + 5469: 0xC766, + 5470: 0xC767, + 5471: 0xC769, + 5472: 0xC76A, + 5473: 0xC76C, + 5474: 0xC76D, + 5475: 0xC76E, + 5476: 0xC76F, + 5477: 0xC770, + 5478: 0xC771, + 5479: 0xC772, + 5480: 0xC773, + 5481: 0xC776, + 5482: 0xC777, + 5483: 0xC779, + 5484: 0xC77A, + 5485: 0xC77B, + 5486: 0xC77F, + 5487: 0xC780, + 5488: 0xC781, + 5489: 0xC782, + 5490: 0xC786, + 5491: 0xC78B, + 5492: 0xC78C, + 5493: 0xC78D, + 5494: 0xC78F, + 5495: 0xC792, + 5496: 0xC793, + 5497: 0xC795, + 5498: 0xC799, + 5499: 0xC79B, + 5500: 0xC79C, + 5501: 0xC79D, + 5502: 0xC79E, + 5503: 0xC79F, + 5504: 0xC7A2, + 5505: 0xC7A7, + 5506: 0xC7A8, + 5507: 0xC7A9, + 5508: 0xC7AA, + 5509: 0xC7AB, + 5510: 0xC7AE, + 5511: 0xC7AF, + 5512: 0xC7B1, + 5513: 0xC7B2, + 5514: 0xC7B3, + 5515: 0xC7B5, + 5516: 0xC7B6, + 5517: 0xC7B7, + 5518: 0xC7B8, + 5519: 0xC7B9, + 5520: 0xC7BA, + 5521: 0xC7BB, + 5522: 0xC7BE, + 5523: 0xC7C2, + 5524: 0xC7C3, + 5525: 0xC7C4, + 5526: 0xC7C5, + 5527: 0xC7C6, + 5528: 0xC7C7, + 5529: 0xC7CA, + 5530: 0xC7CB, + 5531: 0xC7CD, + 5532: 0xC7CF, + 5533: 0xC7D1, + 5534: 0xC7D2, + 5535: 0xC7D3, + 5536: 0xC7D4, + 5537: 0xC7D5, + 5538: 0xC7D6, + 5539: 0xC7D7, + 5540: 0xC7D9, + 5541: 0xC7DA, + 5542: 0xC7DB, + 5543: 0xC7DC, + 5544: 0xC7DE, + 5545: 0xC7DF, + 5546: 0xC7E0, + 5547: 0xC7E1, + 5548: 0xC7E2, + 5549: 0xC7E3, + 5550: 0xC7E5, + 5551: 0xC7E6, + 5552: 0xC7E7, + 5553: 0xC7E9, + 5554: 0xC7EA, + 5555: 0xC7EB, + 5556: 0xC7ED, + 5557: 0xC7EE, + 5558: 0xC7EF, + 5559: 0xC7F0, + 5560: 0xC7F1, + 5561: 0xC7F2, + 5562: 0xC7F3, + 5563: 0xC7F4, + 5564: 0xC7F5, + 5565: 0xC7F6, + 5566: 0xC7F7, + 5567: 0xC7F8, + 5568: 0xC7F9, + 5569: 0xC7FA, + 5570: 0xC7FB, + 5571: 0xC7FC, + 5572: 0xC7FD, + 5573: 0xC7FE, + 5574: 0xC7FF, + 5575: 0xC802, + 5576: 0xC803, + 5577: 0xC805, + 5578: 0xC806, + 5579: 0xC807, + 5580: 0xC809, + 5581: 0xC80B, + 5582: 0xC80C, + 5583: 0xC80D, + 5584: 0xC80E, + 5585: 0xC80F, + 5586: 0xC812, + 5587: 0xC814, + 5588: 0xC817, + 5589: 0xC818, + 5590: 0xC819, + 5591: 0xC81A, + 5592: 0xC81B, + 5593: 0xC81E, + 5594: 0xC81F, + 5595: 0xC821, + 5596: 0xC822, + 5597: 0xC823, + 5598: 0xC825, + 5599: 0xC826, + 5600: 0xC827, + 5601: 0xC828, + 5602: 0xC829, + 5603: 0xC82A, + 5604: 0xC82B, + 5605: 0xC82E, + 5606: 0xC830, + 5607: 0xC832, + 5608: 0xC833, + 5609: 0xC834, + 5610: 0xC835, + 5611: 0xC836, + 5612: 0xC837, + 5613: 0xC839, + 5614: 0xC83A, + 5615: 0xC83B, + 5616: 0xC83D, + 5617: 0xC83E, + 5618: 0xC83F, + 5619: 0xC841, + 5620: 0xC842, + 5621: 0xC843, + 5622: 0xC844, + 5623: 0xC845, + 5624: 0xC846, + 5625: 0xC847, + 5626: 0xC84A, + 5627: 0xC84B, + 5628: 0xC84E, + 5629: 0xC84F, + 5630: 0xC850, + 5631: 0xC851, + 5632: 0xC852, + 5633: 0xC853, + 5634: 0xC855, + 5635: 0xC856, + 5636: 0xC857, + 5637: 0xC858, + 5638: 0xC859, + 5639: 0xC85A, + 5640: 0xC85B, + 5641: 0xC85C, + 5642: 0xC85D, + 5643: 0xC85E, + 5644: 0xC85F, + 5645: 0xC860, + 5646: 0xC861, + 5647: 0xC862, + 5648: 0xC863, + 5649: 0xC864, + 5650: 0xC865, + 5651: 0xC866, + 5652: 0xC867, + 5653: 0xC868, + 5654: 0xC869, + 5655: 0xC86A, + 5656: 0xC86B, + 5657: 0xC86C, + 5658: 0xC86D, + 5659: 0xC86E, + 5660: 0xC86F, + 5661: 0xC872, + 5662: 0xC873, + 5663: 0xC875, + 5664: 0xC876, + 5665: 0xC877, + 5666: 0xC879, + 5667: 0xC87B, + 5668: 0xC87C, + 5669: 0xC87D, + 5670: 0xC87E, + 5671: 0xC87F, + 5672: 0xC882, + 5673: 0xC884, + 5674: 0xC888, + 5675: 0xC889, + 5676: 0xC88A, + 5677: 0xC88E, + 5678: 0xC88F, + 5679: 0xC890, + 5680: 0xC891, + 5681: 0xC892, + 5682: 0xC893, + 5683: 0xC895, + 5684: 0xC896, + 5685: 0xC897, + 5686: 0xC898, + 5687: 0xC899, + 5688: 0xC89A, + 5689: 0xC89B, + 5690: 0xC89C, + 5691: 0xC89E, + 5692: 0xC8A0, + 5693: 0xC8A2, + 5694: 0xC8A3, + 5695: 0xC8A4, + 5696: 0xC8A5, + 5697: 0xC8A6, + 5698: 0xC8A7, + 5699: 0xC8A9, + 5700: 0xC8AA, + 5701: 0xC8AB, + 5702: 0xC8AC, + 5703: 0xC8AD, + 5704: 0xC8AE, + 5705: 0xC8AF, + 5706: 0xC8B0, + 5707: 0xC8B1, + 5708: 0xC8B2, + 5709: 0xC8B3, + 5710: 0xC8B4, + 5711: 0xC8B5, + 5712: 0xC8B6, + 5713: 0xC8B7, + 5714: 0xC8B8, + 5715: 0xC8B9, + 5716: 0xC8BA, + 5717: 0xC8BB, + 5718: 0xC8BE, + 5719: 0xC8BF, + 5720: 0xC8C0, + 5721: 0xC8C1, + 5722: 0xC8C2, + 5723: 0xC8C3, + 5724: 0xC8C5, + 5725: 0xC8C6, + 5726: 0xC8C7, + 5727: 0xC8C9, + 5728: 0xC8CA, + 5729: 0xC8CB, + 5730: 0xC8CD, + 5731: 0xC8CE, + 5732: 0xC8CF, + 5733: 0xC8D0, + 5734: 0xC8D1, + 5735: 0xC8D2, + 5736: 0xC8D3, + 5737: 0xC8D6, + 5738: 0xC8D8, + 5739: 0xC8DA, + 5740: 0xC8DB, + 5741: 0xC8DC, + 5742: 0xC8DD, + 5743: 0xC8DE, + 5744: 0xC8DF, + 5745: 0xC8E2, + 5746: 0xC8E3, + 5747: 0xC8E5, + 5748: 0xC8E6, + 5749: 0xC8E7, + 5750: 0xC8E8, + 5751: 0xC8E9, + 5752: 0xC8EA, + 5753: 0xC8EB, + 5754: 0xC8EC, + 5755: 0xC8ED, + 5756: 0xC8EE, + 5757: 0xC8EF, + 5758: 0xC8F0, + 5759: 0xC8F1, + 5760: 0xC8F2, + 5761: 0xC8F3, + 5762: 0xC8F4, + 5763: 0xC8F6, + 5764: 0xC8F7, + 5765: 0xC8F8, + 5766: 0xC8F9, + 5767: 0xC8FA, + 5768: 0xC8FB, + 5769: 0xC8FE, + 5770: 0xC8FF, + 5771: 0xC901, + 5772: 0xC902, + 5773: 0xC903, + 5774: 0xC907, + 5775: 0xC908, + 5776: 0xC909, + 5777: 0xC90A, + 5778: 0xC90B, + 5779: 0xC90E, + 5780: 0x3000, + 5781: 0x3001, + 5782: 0x3002, + 5783: 0x00B7, + 5784: 0x2025, + 5785: 0x2026, + 5786: 0x00A8, + 5787: 0x3003, + 5788: 0x00AD, + 5789: 0x2015, + 5790: 0x2225, + 5791: 0xFF3C, + 5792: 0x223C, + 5793: 0x2018, + 5794: 0x2019, + 5795: 0x201C, + 5796: 0x201D, + 5797: 0x3014, + 5798: 0x3015, + 5799: 0x3008, + 5800: 0x3009, + 5801: 0x300A, + 5802: 0x300B, + 5803: 0x300C, + 5804: 0x300D, + 5805: 0x300E, + 5806: 0x300F, + 5807: 0x3010, + 5808: 0x3011, + 5809: 0x00B1, + 5810: 0x00D7, + 5811: 0x00F7, + 5812: 0x2260, + 5813: 0x2264, + 5814: 0x2265, + 5815: 0x221E, + 5816: 0x2234, + 5817: 0x00B0, + 5818: 0x2032, + 5819: 0x2033, + 5820: 0x2103, + 5821: 0x212B, + 5822: 0xFFE0, + 5823: 0xFFE1, + 5824: 0xFFE5, + 5825: 0x2642, + 5826: 0x2640, + 5827: 0x2220, + 5828: 0x22A5, + 5829: 0x2312, + 5830: 0x2202, + 5831: 0x2207, + 5832: 0x2261, + 5833: 0x2252, + 5834: 0x00A7, + 5835: 0x203B, + 5836: 0x2606, + 5837: 0x2605, + 5838: 0x25CB, + 5839: 0x25CF, + 5840: 0x25CE, + 5841: 0x25C7, + 5842: 0x25C6, + 5843: 0x25A1, + 5844: 0x25A0, + 5845: 0x25B3, + 5846: 0x25B2, + 5847: 0x25BD, + 5848: 0x25BC, + 5849: 0x2192, + 5850: 0x2190, + 5851: 0x2191, + 5852: 0x2193, + 5853: 0x2194, + 5854: 0x3013, + 5855: 0x226A, + 5856: 0x226B, + 5857: 0x221A, + 5858: 0x223D, + 5859: 0x221D, + 5860: 0x2235, + 5861: 0x222B, + 5862: 0x222C, + 5863: 0x2208, + 5864: 0x220B, + 5865: 0x2286, + 5866: 0x2287, + 5867: 0x2282, + 5868: 0x2283, + 5869: 0x222A, + 5870: 0x2229, + 5871: 0x2227, + 5872: 0x2228, + 5873: 0xFFE2, + 5874: 0xC910, + 5875: 0xC912, + 5876: 0xC913, + 5877: 0xC914, + 5878: 0xC915, + 5879: 0xC916, + 5880: 0xC917, + 5881: 0xC919, + 5882: 0xC91A, + 5883: 0xC91B, + 5884: 0xC91C, + 5885: 0xC91D, + 5886: 0xC91E, + 5887: 0xC91F, + 5888: 0xC920, + 5889: 0xC921, + 5890: 0xC922, + 5891: 0xC923, + 5892: 0xC924, + 5893: 0xC925, + 5894: 0xC926, + 5895: 0xC927, + 5896: 0xC928, + 5897: 0xC929, + 5898: 0xC92A, + 5899: 0xC92B, + 5900: 0xC92D, + 5901: 0xC92E, + 5902: 0xC92F, + 5903: 0xC930, + 5904: 0xC931, + 5905: 0xC932, + 5906: 0xC933, + 5907: 0xC935, + 5908: 0xC936, + 5909: 0xC937, + 5910: 0xC938, + 5911: 0xC939, + 5912: 0xC93A, + 5913: 0xC93B, + 5914: 0xC93C, + 5915: 0xC93D, + 5916: 0xC93E, + 5917: 0xC93F, + 5918: 0xC940, + 5919: 0xC941, + 5920: 0xC942, + 5921: 0xC943, + 5922: 0xC944, + 5923: 0xC945, + 5924: 0xC946, + 5925: 0xC947, + 5926: 0xC948, + 5927: 0xC949, + 5928: 0xC94A, + 5929: 0xC94B, + 5930: 0xC94C, + 5931: 0xC94D, + 5932: 0xC94E, + 5933: 0xC94F, + 5934: 0xC952, + 5935: 0xC953, + 5936: 0xC955, + 5937: 0xC956, + 5938: 0xC957, + 5939: 0xC959, + 5940: 0xC95A, + 5941: 0xC95B, + 5942: 0xC95C, + 5943: 0xC95D, + 5944: 0xC95E, + 5945: 0xC95F, + 5946: 0xC962, + 5947: 0xC964, + 5948: 0xC965, + 5949: 0xC966, + 5950: 0xC967, + 5951: 0xC968, + 5952: 0xC969, + 5953: 0xC96A, + 5954: 0xC96B, + 5955: 0xC96D, + 5956: 0xC96E, + 5957: 0xC96F, + 5958: 0x21D2, + 5959: 0x21D4, + 5960: 0x2200, + 5961: 0x2203, + 5962: 0x00B4, + 5963: 0xFF5E, + 5964: 0x02C7, + 5965: 0x02D8, + 5966: 0x02DD, + 5967: 0x02DA, + 5968: 0x02D9, + 5969: 0x00B8, + 5970: 0x02DB, + 5971: 0x00A1, + 5972: 0x00BF, + 5973: 0x02D0, + 5974: 0x222E, + 5975: 0x2211, + 5976: 0x220F, + 5977: 0x00A4, + 5978: 0x2109, + 5979: 0x2030, + 5980: 0x25C1, + 5981: 0x25C0, + 5982: 0x25B7, + 5983: 0x25B6, + 5984: 0x2664, + 5985: 0x2660, + 5986: 0x2661, + 5987: 0x2665, + 5988: 0x2667, + 5989: 0x2663, + 5990: 0x2299, + 5991: 0x25C8, + 5992: 0x25A3, + 5993: 0x25D0, + 5994: 0x25D1, + 5995: 0x2592, + 5996: 0x25A4, + 5997: 0x25A5, + 5998: 0x25A8, + 5999: 0x25A7, + 6000: 0x25A6, + 6001: 0x25A9, + 6002: 0x2668, + 6003: 0x260F, + 6004: 0x260E, + 6005: 0x261C, + 6006: 0x261E, + 6007: 0x00B6, + 6008: 0x2020, + 6009: 0x2021, + 6010: 0x2195, + 6011: 0x2197, + 6012: 0x2199, + 6013: 0x2196, + 6014: 0x2198, + 6015: 0x266D, + 6016: 0x2669, + 6017: 0x266A, + 6018: 0x266C, + 6019: 0x327F, + 6020: 0x321C, + 6021: 0x2116, + 6022: 0x33C7, + 6023: 0x2122, + 6024: 0x33C2, + 6025: 0x33D8, + 6026: 0x2121, + 6027: 0x20AC, + 6028: 0x00AE, + 6052: 0xC971, + 6053: 0xC972, + 6054: 0xC973, + 6055: 0xC975, + 6056: 0xC976, + 6057: 0xC977, + 6058: 0xC978, + 6059: 0xC979, + 6060: 0xC97A, + 6061: 0xC97B, + 6062: 0xC97D, + 6063: 0xC97E, + 6064: 0xC97F, + 6065: 0xC980, + 6066: 0xC981, + 6067: 0xC982, + 6068: 0xC983, + 6069: 0xC984, + 6070: 0xC985, + 6071: 0xC986, + 6072: 0xC987, + 6073: 0xC98A, + 6074: 0xC98B, + 6075: 0xC98D, + 6076: 0xC98E, + 6077: 0xC98F, + 6078: 0xC991, + 6079: 0xC992, + 6080: 0xC993, + 6081: 0xC994, + 6082: 0xC995, + 6083: 0xC996, + 6084: 0xC997, + 6085: 0xC99A, + 6086: 0xC99C, + 6087: 0xC99E, + 6088: 0xC99F, + 6089: 0xC9A0, + 6090: 0xC9A1, + 6091: 0xC9A2, + 6092: 0xC9A3, + 6093: 0xC9A4, + 6094: 0xC9A5, + 6095: 0xC9A6, + 6096: 0xC9A7, + 6097: 0xC9A8, + 6098: 0xC9A9, + 6099: 0xC9AA, + 6100: 0xC9AB, + 6101: 0xC9AC, + 6102: 0xC9AD, + 6103: 0xC9AE, + 6104: 0xC9AF, + 6105: 0xC9B0, + 6106: 0xC9B1, + 6107: 0xC9B2, + 6108: 0xC9B3, + 6109: 0xC9B4, + 6110: 0xC9B5, + 6111: 0xC9B6, + 6112: 0xC9B7, + 6113: 0xC9B8, + 6114: 0xC9B9, + 6115: 0xC9BA, + 6116: 0xC9BB, + 6117: 0xC9BC, + 6118: 0xC9BD, + 6119: 0xC9BE, + 6120: 0xC9BF, + 6121: 0xC9C2, + 6122: 0xC9C3, + 6123: 0xC9C5, + 6124: 0xC9C6, + 6125: 0xC9C9, + 6126: 0xC9CB, + 6127: 0xC9CC, + 6128: 0xC9CD, + 6129: 0xC9CE, + 6130: 0xC9CF, + 6131: 0xC9D2, + 6132: 0xC9D4, + 6133: 0xC9D7, + 6134: 0xC9D8, + 6135: 0xC9DB, + 6136: 0xFF01, + 6137: 0xFF02, + 6138: 0xFF03, + 6139: 0xFF04, + 6140: 0xFF05, + 6141: 0xFF06, + 6142: 0xFF07, + 6143: 0xFF08, + 6144: 0xFF09, + 6145: 0xFF0A, + 6146: 0xFF0B, + 6147: 0xFF0C, + 6148: 0xFF0D, + 6149: 0xFF0E, + 6150: 0xFF0F, + 6151: 0xFF10, + 6152: 0xFF11, + 6153: 0xFF12, + 6154: 0xFF13, + 6155: 0xFF14, + 6156: 0xFF15, + 6157: 0xFF16, + 6158: 0xFF17, + 6159: 0xFF18, + 6160: 0xFF19, + 6161: 0xFF1A, + 6162: 0xFF1B, + 6163: 0xFF1C, + 6164: 0xFF1D, + 6165: 0xFF1E, + 6166: 0xFF1F, + 6167: 0xFF20, + 6168: 0xFF21, + 6169: 0xFF22, + 6170: 0xFF23, + 6171: 0xFF24, + 6172: 0xFF25, + 6173: 0xFF26, + 6174: 0xFF27, + 6175: 0xFF28, + 6176: 0xFF29, + 6177: 0xFF2A, + 6178: 0xFF2B, + 6179: 0xFF2C, + 6180: 0xFF2D, + 6181: 0xFF2E, + 6182: 0xFF2F, + 6183: 0xFF30, + 6184: 0xFF31, + 6185: 0xFF32, + 6186: 0xFF33, + 6187: 0xFF34, + 6188: 0xFF35, + 6189: 0xFF36, + 6190: 0xFF37, + 6191: 0xFF38, + 6192: 0xFF39, + 6193: 0xFF3A, + 6194: 0xFF3B, + 6195: 0xFFE6, + 6196: 0xFF3D, + 6197: 0xFF3E, + 6198: 0xFF3F, + 6199: 0xFF40, + 6200: 0xFF41, + 6201: 0xFF42, + 6202: 0xFF43, + 6203: 0xFF44, + 6204: 0xFF45, + 6205: 0xFF46, + 6206: 0xFF47, + 6207: 0xFF48, + 6208: 0xFF49, + 6209: 0xFF4A, + 6210: 0xFF4B, + 6211: 0xFF4C, + 6212: 0xFF4D, + 6213: 0xFF4E, + 6214: 0xFF4F, + 6215: 0xFF50, + 6216: 0xFF51, + 6217: 0xFF52, + 6218: 0xFF53, + 6219: 0xFF54, + 6220: 0xFF55, + 6221: 0xFF56, + 6222: 0xFF57, + 6223: 0xFF58, + 6224: 0xFF59, + 6225: 0xFF5A, + 6226: 0xFF5B, + 6227: 0xFF5C, + 6228: 0xFF5D, + 6229: 0xFFE3, + 6230: 0xC9DE, + 6231: 0xC9DF, + 6232: 0xC9E1, + 6233: 0xC9E3, + 6234: 0xC9E5, + 6235: 0xC9E6, + 6236: 0xC9E8, + 6237: 0xC9E9, + 6238: 0xC9EA, + 6239: 0xC9EB, + 6240: 0xC9EE, + 6241: 0xC9F2, + 6242: 0xC9F3, + 6243: 0xC9F4, + 6244: 0xC9F5, + 6245: 0xC9F6, + 6246: 0xC9F7, + 6247: 0xC9FA, + 6248: 0xC9FB, + 6249: 0xC9FD, + 6250: 0xC9FE, + 6251: 0xC9FF, + 6252: 0xCA01, + 6253: 0xCA02, + 6254: 0xCA03, + 6255: 0xCA04, + 6256: 0xCA05, + 6257: 0xCA06, + 6258: 0xCA07, + 6259: 0xCA0A, + 6260: 0xCA0E, + 6261: 0xCA0F, + 6262: 0xCA10, + 6263: 0xCA11, + 6264: 0xCA12, + 6265: 0xCA13, + 6266: 0xCA15, + 6267: 0xCA16, + 6268: 0xCA17, + 6269: 0xCA19, + 6270: 0xCA1A, + 6271: 0xCA1B, + 6272: 0xCA1C, + 6273: 0xCA1D, + 6274: 0xCA1E, + 6275: 0xCA1F, + 6276: 0xCA20, + 6277: 0xCA21, + 6278: 0xCA22, + 6279: 0xCA23, + 6280: 0xCA24, + 6281: 0xCA25, + 6282: 0xCA26, + 6283: 0xCA27, + 6284: 0xCA28, + 6285: 0xCA2A, + 6286: 0xCA2B, + 6287: 0xCA2C, + 6288: 0xCA2D, + 6289: 0xCA2E, + 6290: 0xCA2F, + 6291: 0xCA30, + 6292: 0xCA31, + 6293: 0xCA32, + 6294: 0xCA33, + 6295: 0xCA34, + 6296: 0xCA35, + 6297: 0xCA36, + 6298: 0xCA37, + 6299: 0xCA38, + 6300: 0xCA39, + 6301: 0xCA3A, + 6302: 0xCA3B, + 6303: 0xCA3C, + 6304: 0xCA3D, + 6305: 0xCA3E, + 6306: 0xCA3F, + 6307: 0xCA40, + 6308: 0xCA41, + 6309: 0xCA42, + 6310: 0xCA43, + 6311: 0xCA44, + 6312: 0xCA45, + 6313: 0xCA46, + 6314: 0x3131, + 6315: 0x3132, + 6316: 0x3133, + 6317: 0x3134, + 6318: 0x3135, + 6319: 0x3136, + 6320: 0x3137, + 6321: 0x3138, + 6322: 0x3139, + 6323: 0x313A, + 6324: 0x313B, + 6325: 0x313C, + 6326: 0x313D, + 6327: 0x313E, + 6328: 0x313F, + 6329: 0x3140, + 6330: 0x3141, + 6331: 0x3142, + 6332: 0x3143, + 6333: 0x3144, + 6334: 0x3145, + 6335: 0x3146, + 6336: 0x3147, + 6337: 0x3148, + 6338: 0x3149, + 6339: 0x314A, + 6340: 0x314B, + 6341: 0x314C, + 6342: 0x314D, + 6343: 0x314E, + 6344: 0x314F, + 6345: 0x3150, + 6346: 0x3151, + 6347: 0x3152, + 6348: 0x3153, + 6349: 0x3154, + 6350: 0x3155, + 6351: 0x3156, + 6352: 0x3157, + 6353: 0x3158, + 6354: 0x3159, + 6355: 0x315A, + 6356: 0x315B, + 6357: 0x315C, + 6358: 0x315D, + 6359: 0x315E, + 6360: 0x315F, + 6361: 0x3160, + 6362: 0x3161, + 6363: 0x3162, + 6364: 0x3163, + 6365: 0x3164, + 6366: 0x3165, + 6367: 0x3166, + 6368: 0x3167, + 6369: 0x3168, + 6370: 0x3169, + 6371: 0x316A, + 6372: 0x316B, + 6373: 0x316C, + 6374: 0x316D, + 6375: 0x316E, + 6376: 0x316F, + 6377: 0x3170, + 6378: 0x3171, + 6379: 0x3172, + 6380: 0x3173, + 6381: 0x3174, + 6382: 0x3175, + 6383: 0x3176, + 6384: 0x3177, + 6385: 0x3178, + 6386: 0x3179, + 6387: 0x317A, + 6388: 0x317B, + 6389: 0x317C, + 6390: 0x317D, + 6391: 0x317E, + 6392: 0x317F, + 6393: 0x3180, + 6394: 0x3181, + 6395: 0x3182, + 6396: 0x3183, + 6397: 0x3184, + 6398: 0x3185, + 6399: 0x3186, + 6400: 0x3187, + 6401: 0x3188, + 6402: 0x3189, + 6403: 0x318A, + 6404: 0x318B, + 6405: 0x318C, + 6406: 0x318D, + 6407: 0x318E, + 6408: 0xCA47, + 6409: 0xCA48, + 6410: 0xCA49, + 6411: 0xCA4A, + 6412: 0xCA4B, + 6413: 0xCA4E, + 6414: 0xCA4F, + 6415: 0xCA51, + 6416: 0xCA52, + 6417: 0xCA53, + 6418: 0xCA55, + 6419: 0xCA56, + 6420: 0xCA57, + 6421: 0xCA58, + 6422: 0xCA59, + 6423: 0xCA5A, + 6424: 0xCA5B, + 6425: 0xCA5E, + 6426: 0xCA62, + 6427: 0xCA63, + 6428: 0xCA64, + 6429: 0xCA65, + 6430: 0xCA66, + 6431: 0xCA67, + 6432: 0xCA69, + 6433: 0xCA6A, + 6434: 0xCA6B, + 6435: 0xCA6C, + 6436: 0xCA6D, + 6437: 0xCA6E, + 6438: 0xCA6F, + 6439: 0xCA70, + 6440: 0xCA71, + 6441: 0xCA72, + 6442: 0xCA73, + 6443: 0xCA74, + 6444: 0xCA75, + 6445: 0xCA76, + 6446: 0xCA77, + 6447: 0xCA78, + 6448: 0xCA79, + 6449: 0xCA7A, + 6450: 0xCA7B, + 6451: 0xCA7C, + 6452: 0xCA7E, + 6453: 0xCA7F, + 6454: 0xCA80, + 6455: 0xCA81, + 6456: 0xCA82, + 6457: 0xCA83, + 6458: 0xCA85, + 6459: 0xCA86, + 6460: 0xCA87, + 6461: 0xCA88, + 6462: 0xCA89, + 6463: 0xCA8A, + 6464: 0xCA8B, + 6465: 0xCA8C, + 6466: 0xCA8D, + 6467: 0xCA8E, + 6468: 0xCA8F, + 6469: 0xCA90, + 6470: 0xCA91, + 6471: 0xCA92, + 6472: 0xCA93, + 6473: 0xCA94, + 6474: 0xCA95, + 6475: 0xCA96, + 6476: 0xCA97, + 6477: 0xCA99, + 6478: 0xCA9A, + 6479: 0xCA9B, + 6480: 0xCA9C, + 6481: 0xCA9D, + 6482: 0xCA9E, + 6483: 0xCA9F, + 6484: 0xCAA0, + 6485: 0xCAA1, + 6486: 0xCAA2, + 6487: 0xCAA3, + 6488: 0xCAA4, + 6489: 0xCAA5, + 6490: 0xCAA6, + 6491: 0xCAA7, + 6492: 0x2170, + 6493: 0x2171, + 6494: 0x2172, + 6495: 0x2173, + 6496: 0x2174, + 6497: 0x2175, + 6498: 0x2176, + 6499: 0x2177, + 6500: 0x2178, + 6501: 0x2179, + 6507: 0x2160, + 6508: 0x2161, + 6509: 0x2162, + 6510: 0x2163, + 6511: 0x2164, + 6512: 0x2165, + 6513: 0x2166, + 6514: 0x2167, + 6515: 0x2168, + 6516: 0x2169, + 6524: 0x0391, + 6525: 0x0392, + 6526: 0x0393, + 6527: 0x0394, + 6528: 0x0395, + 6529: 0x0396, + 6530: 0x0397, + 6531: 0x0398, + 6532: 0x0399, + 6533: 0x039A, + 6534: 0x039B, + 6535: 0x039C, + 6536: 0x039D, + 6537: 0x039E, + 6538: 0x039F, + 6539: 0x03A0, + 6540: 0x03A1, + 6541: 0x03A3, + 6542: 0x03A4, + 6543: 0x03A5, + 6544: 0x03A6, + 6545: 0x03A7, + 6546: 0x03A8, + 6547: 0x03A9, + 6556: 0x03B1, + 6557: 0x03B2, + 6558: 0x03B3, + 6559: 0x03B4, + 6560: 0x03B5, + 6561: 0x03B6, + 6562: 0x03B7, + 6563: 0x03B8, + 6564: 0x03B9, + 6565: 0x03BA, + 6566: 0x03BB, + 6567: 0x03BC, + 6568: 0x03BD, + 6569: 0x03BE, + 6570: 0x03BF, + 6571: 0x03C0, + 6572: 0x03C1, + 6573: 0x03C3, + 6574: 0x03C4, + 6575: 0x03C5, + 6576: 0x03C6, + 6577: 0x03C7, + 6578: 0x03C8, + 6579: 0x03C9, + 6586: 0xCAA8, + 6587: 0xCAA9, + 6588: 0xCAAA, + 6589: 0xCAAB, + 6590: 0xCAAC, + 6591: 0xCAAD, + 6592: 0xCAAE, + 6593: 0xCAAF, + 6594: 0xCAB0, + 6595: 0xCAB1, + 6596: 0xCAB2, + 6597: 0xCAB3, + 6598: 0xCAB4, + 6599: 0xCAB5, + 6600: 0xCAB6, + 6601: 0xCAB7, + 6602: 0xCAB8, + 6603: 0xCAB9, + 6604: 0xCABA, + 6605: 0xCABB, + 6606: 0xCABE, + 6607: 0xCABF, + 6608: 0xCAC1, + 6609: 0xCAC2, + 6610: 0xCAC3, + 6611: 0xCAC5, + 6612: 0xCAC6, + 6613: 0xCAC7, + 6614: 0xCAC8, + 6615: 0xCAC9, + 6616: 0xCACA, + 6617: 0xCACB, + 6618: 0xCACE, + 6619: 0xCAD0, + 6620: 0xCAD2, + 6621: 0xCAD4, + 6622: 0xCAD5, + 6623: 0xCAD6, + 6624: 0xCAD7, + 6625: 0xCADA, + 6626: 0xCADB, + 6627: 0xCADC, + 6628: 0xCADD, + 6629: 0xCADE, + 6630: 0xCADF, + 6631: 0xCAE1, + 6632: 0xCAE2, + 6633: 0xCAE3, + 6634: 0xCAE4, + 6635: 0xCAE5, + 6636: 0xCAE6, + 6637: 0xCAE7, + 6638: 0xCAE8, + 6639: 0xCAE9, + 6640: 0xCAEA, + 6641: 0xCAEB, + 6642: 0xCAED, + 6643: 0xCAEE, + 6644: 0xCAEF, + 6645: 0xCAF0, + 6646: 0xCAF1, + 6647: 0xCAF2, + 6648: 0xCAF3, + 6649: 0xCAF5, + 6650: 0xCAF6, + 6651: 0xCAF7, + 6652: 0xCAF8, + 6653: 0xCAF9, + 6654: 0xCAFA, + 6655: 0xCAFB, + 6656: 0xCAFC, + 6657: 0xCAFD, + 6658: 0xCAFE, + 6659: 0xCAFF, + 6660: 0xCB00, + 6661: 0xCB01, + 6662: 0xCB02, + 6663: 0xCB03, + 6664: 0xCB04, + 6665: 0xCB05, + 6666: 0xCB06, + 6667: 0xCB07, + 6668: 0xCB09, + 6669: 0xCB0A, + 6670: 0x2500, + 6671: 0x2502, + 6672: 0x250C, + 6673: 0x2510, + 6674: 0x2518, + 6675: 0x2514, + 6676: 0x251C, + 6677: 0x252C, + 6678: 0x2524, + 6679: 0x2534, + 6680: 0x253C, + 6681: 0x2501, + 6682: 0x2503, + 6683: 0x250F, + 6684: 0x2513, + 6685: 0x251B, + 6686: 0x2517, + 6687: 0x2523, + 6688: 0x2533, + 6689: 0x252B, + 6690: 0x253B, + 6691: 0x254B, + 6692: 0x2520, + 6693: 0x252F, + 6694: 0x2528, + 6695: 0x2537, + 6696: 0x253F, + 6697: 0x251D, + 6698: 0x2530, + 6699: 0x2525, + 6700: 0x2538, + 6701: 0x2542, + 6702: 0x2512, + 6703: 0x2511, + 6704: 0x251A, + 6705: 0x2519, + 6706: 0x2516, + 6707: 0x2515, + 6708: 0x250E, + 6709: 0x250D, + 6710: 0x251E, + 6711: 0x251F, + 6712: 0x2521, + 6713: 0x2522, + 6714: 0x2526, + 6715: 0x2527, + 6716: 0x2529, + 6717: 0x252A, + 6718: 0x252D, + 6719: 0x252E, + 6720: 0x2531, + 6721: 0x2532, + 6722: 0x2535, + 6723: 0x2536, + 6724: 0x2539, + 6725: 0x253A, + 6726: 0x253D, + 6727: 0x253E, + 6728: 0x2540, + 6729: 0x2541, + 6730: 0x2543, + 6731: 0x2544, + 6732: 0x2545, + 6733: 0x2546, + 6734: 0x2547, + 6735: 0x2548, + 6736: 0x2549, + 6737: 0x254A, + 6764: 0xCB0B, + 6765: 0xCB0C, + 6766: 0xCB0D, + 6767: 0xCB0E, + 6768: 0xCB0F, + 6769: 0xCB11, + 6770: 0xCB12, + 6771: 0xCB13, + 6772: 0xCB15, + 6773: 0xCB16, + 6774: 0xCB17, + 6775: 0xCB19, + 6776: 0xCB1A, + 6777: 0xCB1B, + 6778: 0xCB1C, + 6779: 0xCB1D, + 6780: 0xCB1E, + 6781: 0xCB1F, + 6782: 0xCB22, + 6783: 0xCB23, + 6784: 0xCB24, + 6785: 0xCB25, + 6786: 0xCB26, + 6787: 0xCB27, + 6788: 0xCB28, + 6789: 0xCB29, + 6790: 0xCB2A, + 6791: 0xCB2B, + 6792: 0xCB2C, + 6793: 0xCB2D, + 6794: 0xCB2E, + 6795: 0xCB2F, + 6796: 0xCB30, + 6797: 0xCB31, + 6798: 0xCB32, + 6799: 0xCB33, + 6800: 0xCB34, + 6801: 0xCB35, + 6802: 0xCB36, + 6803: 0xCB37, + 6804: 0xCB38, + 6805: 0xCB39, + 6806: 0xCB3A, + 6807: 0xCB3B, + 6808: 0xCB3C, + 6809: 0xCB3D, + 6810: 0xCB3E, + 6811: 0xCB3F, + 6812: 0xCB40, + 6813: 0xCB42, + 6814: 0xCB43, + 6815: 0xCB44, + 6816: 0xCB45, + 6817: 0xCB46, + 6818: 0xCB47, + 6819: 0xCB4A, + 6820: 0xCB4B, + 6821: 0xCB4D, + 6822: 0xCB4E, + 6823: 0xCB4F, + 6824: 0xCB51, + 6825: 0xCB52, + 6826: 0xCB53, + 6827: 0xCB54, + 6828: 0xCB55, + 6829: 0xCB56, + 6830: 0xCB57, + 6831: 0xCB5A, + 6832: 0xCB5B, + 6833: 0xCB5C, + 6834: 0xCB5E, + 6835: 0xCB5F, + 6836: 0xCB60, + 6837: 0xCB61, + 6838: 0xCB62, + 6839: 0xCB63, + 6840: 0xCB65, + 6841: 0xCB66, + 6842: 0xCB67, + 6843: 0xCB68, + 6844: 0xCB69, + 6845: 0xCB6A, + 6846: 0xCB6B, + 6847: 0xCB6C, + 6848: 0x3395, + 6849: 0x3396, + 6850: 0x3397, + 6851: 0x2113, + 6852: 0x3398, + 6853: 0x33C4, + 6854: 0x33A3, + 6855: 0x33A4, + 6856: 0x33A5, + 6857: 0x33A6, + 6858: 0x3399, + 6859: 0x339A, + 6860: 0x339B, + 6861: 0x339C, + 6862: 0x339D, + 6863: 0x339E, + 6864: 0x339F, + 6865: 0x33A0, + 6866: 0x33A1, + 6867: 0x33A2, + 6868: 0x33CA, + 6869: 0x338D, + 6870: 0x338E, + 6871: 0x338F, + 6872: 0x33CF, + 6873: 0x3388, + 6874: 0x3389, + 6875: 0x33C8, + 6876: 0x33A7, + 6877: 0x33A8, + 6878: 0x33B0, + 6879: 0x33B1, + 6880: 0x33B2, + 6881: 0x33B3, + 6882: 0x33B4, + 6883: 0x33B5, + 6884: 0x33B6, + 6885: 0x33B7, + 6886: 0x33B8, + 6887: 0x33B9, + 6888: 0x3380, + 6889: 0x3381, + 6890: 0x3382, + 6891: 0x3383, + 6892: 0x3384, + 6893: 0x33BA, + 6894: 0x33BB, + 6895: 0x33BC, + 6896: 0x33BD, + 6897: 0x33BE, + 6898: 0x33BF, + 6899: 0x3390, + 6900: 0x3391, + 6901: 0x3392, + 6902: 0x3393, + 6903: 0x3394, + 6904: 0x2126, + 6905: 0x33C0, + 6906: 0x33C1, + 6907: 0x338A, + 6908: 0x338B, + 6909: 0x338C, + 6910: 0x33D6, + 6911: 0x33C5, + 6912: 0x33AD, + 6913: 0x33AE, + 6914: 0x33AF, + 6915: 0x33DB, + 6916: 0x33A9, + 6917: 0x33AA, + 6918: 0x33AB, + 6919: 0x33AC, + 6920: 0x33DD, + 6921: 0x33D0, + 6922: 0x33D3, + 6923: 0x33C3, + 6924: 0x33C9, + 6925: 0x33DC, + 6926: 0x33C6, + 6942: 0xCB6D, + 6943: 0xCB6E, + 6944: 0xCB6F, + 6945: 0xCB70, + 6946: 0xCB71, + 6947: 0xCB72, + 6948: 0xCB73, + 6949: 0xCB74, + 6950: 0xCB75, + 6951: 0xCB76, + 6952: 0xCB77, + 6953: 0xCB7A, + 6954: 0xCB7B, + 6955: 0xCB7C, + 6956: 0xCB7D, + 6957: 0xCB7E, + 6958: 0xCB7F, + 6959: 0xCB80, + 6960: 0xCB81, + 6961: 0xCB82, + 6962: 0xCB83, + 6963: 0xCB84, + 6964: 0xCB85, + 6965: 0xCB86, + 6966: 0xCB87, + 6967: 0xCB88, + 6968: 0xCB89, + 6969: 0xCB8A, + 6970: 0xCB8B, + 6971: 0xCB8C, + 6972: 0xCB8D, + 6973: 0xCB8E, + 6974: 0xCB8F, + 6975: 0xCB90, + 6976: 0xCB91, + 6977: 0xCB92, + 6978: 0xCB93, + 6979: 0xCB94, + 6980: 0xCB95, + 6981: 0xCB96, + 6982: 0xCB97, + 6983: 0xCB98, + 6984: 0xCB99, + 6985: 0xCB9A, + 6986: 0xCB9B, + 6987: 0xCB9D, + 6988: 0xCB9E, + 6989: 0xCB9F, + 6990: 0xCBA0, + 6991: 0xCBA1, + 6992: 0xCBA2, + 6993: 0xCBA3, + 6994: 0xCBA4, + 6995: 0xCBA5, + 6996: 0xCBA6, + 6997: 0xCBA7, + 6998: 0xCBA8, + 6999: 0xCBA9, + 7000: 0xCBAA, + 7001: 0xCBAB, + 7002: 0xCBAC, + 7003: 0xCBAD, + 7004: 0xCBAE, + 7005: 0xCBAF, + 7006: 0xCBB0, + 7007: 0xCBB1, + 7008: 0xCBB2, + 7009: 0xCBB3, + 7010: 0xCBB4, + 7011: 0xCBB5, + 7012: 0xCBB6, + 7013: 0xCBB7, + 7014: 0xCBB9, + 7015: 0xCBBA, + 7016: 0xCBBB, + 7017: 0xCBBC, + 7018: 0xCBBD, + 7019: 0xCBBE, + 7020: 0xCBBF, + 7021: 0xCBC0, + 7022: 0xCBC1, + 7023: 0xCBC2, + 7024: 0xCBC3, + 7025: 0xCBC4, + 7026: 0x00C6, + 7027: 0x00D0, + 7028: 0x00AA, + 7029: 0x0126, + 7031: 0x0132, + 7033: 0x013F, + 7034: 0x0141, + 7035: 0x00D8, + 7036: 0x0152, + 7037: 0x00BA, + 7038: 0x00DE, + 7039: 0x0166, + 7040: 0x014A, + 7042: 0x3260, + 7043: 0x3261, + 7044: 0x3262, + 7045: 0x3263, + 7046: 0x3264, + 7047: 0x3265, + 7048: 0x3266, + 7049: 0x3267, + 7050: 0x3268, + 7051: 0x3269, + 7052: 0x326A, + 7053: 0x326B, + 7054: 0x326C, + 7055: 0x326D, + 7056: 0x326E, + 7057: 0x326F, + 7058: 0x3270, + 7059: 0x3271, + 7060: 0x3272, + 7061: 0x3273, + 7062: 0x3274, + 7063: 0x3275, + 7064: 0x3276, + 7065: 0x3277, + 7066: 0x3278, + 7067: 0x3279, + 7068: 0x327A, + 7069: 0x327B, + 7070: 0x24D0, + 7071: 0x24D1, + 7072: 0x24D2, + 7073: 0x24D3, + 7074: 0x24D4, + 7075: 0x24D5, + 7076: 0x24D6, + 7077: 0x24D7, + 7078: 0x24D8, + 7079: 0x24D9, + 7080: 0x24DA, + 7081: 0x24DB, + 7082: 0x24DC, + 7083: 0x24DD, + 7084: 0x24DE, + 7085: 0x24DF, + 7086: 0x24E0, + 7087: 0x24E1, + 7088: 0x24E2, + 7089: 0x24E3, + 7090: 0x24E4, + 7091: 0x24E5, + 7092: 0x24E6, + 7093: 0x24E7, + 7094: 0x24E8, + 7095: 0x24E9, + 7096: 0x2460, + 7097: 0x2461, + 7098: 0x2462, + 7099: 0x2463, + 7100: 0x2464, + 7101: 0x2465, + 7102: 0x2466, + 7103: 0x2467, + 7104: 0x2468, + 7105: 0x2469, + 7106: 0x246A, + 7107: 0x246B, + 7108: 0x246C, + 7109: 0x246D, + 7110: 0x246E, + 7111: 0x00BD, + 7112: 0x2153, + 7113: 0x2154, + 7114: 0x00BC, + 7115: 0x00BE, + 7116: 0x215B, + 7117: 0x215C, + 7118: 0x215D, + 7119: 0x215E, + 7120: 0xCBC5, + 7121: 0xCBC6, + 7122: 0xCBC7, + 7123: 0xCBC8, + 7124: 0xCBC9, + 7125: 0xCBCA, + 7126: 0xCBCB, + 7127: 0xCBCC, + 7128: 0xCBCD, + 7129: 0xCBCE, + 7130: 0xCBCF, + 7131: 0xCBD0, + 7132: 0xCBD1, + 7133: 0xCBD2, + 7134: 0xCBD3, + 7135: 0xCBD5, + 7136: 0xCBD6, + 7137: 0xCBD7, + 7138: 0xCBD8, + 7139: 0xCBD9, + 7140: 0xCBDA, + 7141: 0xCBDB, + 7142: 0xCBDC, + 7143: 0xCBDD, + 7144: 0xCBDE, + 7145: 0xCBDF, + 7146: 0xCBE0, + 7147: 0xCBE1, + 7148: 0xCBE2, + 7149: 0xCBE3, + 7150: 0xCBE5, + 7151: 0xCBE6, + 7152: 0xCBE8, + 7153: 0xCBEA, + 7154: 0xCBEB, + 7155: 0xCBEC, + 7156: 0xCBED, + 7157: 0xCBEE, + 7158: 0xCBEF, + 7159: 0xCBF0, + 7160: 0xCBF1, + 7161: 0xCBF2, + 7162: 0xCBF3, + 7163: 0xCBF4, + 7164: 0xCBF5, + 7165: 0xCBF6, + 7166: 0xCBF7, + 7167: 0xCBF8, + 7168: 0xCBF9, + 7169: 0xCBFA, + 7170: 0xCBFB, + 7171: 0xCBFC, + 7172: 0xCBFD, + 7173: 0xCBFE, + 7174: 0xCBFF, + 7175: 0xCC00, + 7176: 0xCC01, + 7177: 0xCC02, + 7178: 0xCC03, + 7179: 0xCC04, + 7180: 0xCC05, + 7181: 0xCC06, + 7182: 0xCC07, + 7183: 0xCC08, + 7184: 0xCC09, + 7185: 0xCC0A, + 7186: 0xCC0B, + 7187: 0xCC0E, + 7188: 0xCC0F, + 7189: 0xCC11, + 7190: 0xCC12, + 7191: 0xCC13, + 7192: 0xCC15, + 7193: 0xCC16, + 7194: 0xCC17, + 7195: 0xCC18, + 7196: 0xCC19, + 7197: 0xCC1A, + 7198: 0xCC1B, + 7199: 0xCC1E, + 7200: 0xCC1F, + 7201: 0xCC20, + 7202: 0xCC23, + 7203: 0xCC24, + 7204: 0x00E6, + 7205: 0x0111, + 7206: 0x00F0, + 7207: 0x0127, + 7208: 0x0131, + 7209: 0x0133, + 7210: 0x0138, + 7211: 0x0140, + 7212: 0x0142, + 7213: 0x00F8, + 7214: 0x0153, + 7215: 0x00DF, + 7216: 0x00FE, + 7217: 0x0167, + 7218: 0x014B, + 7219: 0x0149, + 7220: 0x3200, + 7221: 0x3201, + 7222: 0x3202, + 7223: 0x3203, + 7224: 0x3204, + 7225: 0x3205, + 7226: 0x3206, + 7227: 0x3207, + 7228: 0x3208, + 7229: 0x3209, + 7230: 0x320A, + 7231: 0x320B, + 7232: 0x320C, + 7233: 0x320D, + 7234: 0x320E, + 7235: 0x320F, + 7236: 0x3210, + 7237: 0x3211, + 7238: 0x3212, + 7239: 0x3213, + 7240: 0x3214, + 7241: 0x3215, + 7242: 0x3216, + 7243: 0x3217, + 7244: 0x3218, + 7245: 0x3219, + 7246: 0x321A, + 7247: 0x321B, + 7248: 0x249C, + 7249: 0x249D, + 7250: 0x249E, + 7251: 0x249F, + 7252: 0x24A0, + 7253: 0x24A1, + 7254: 0x24A2, + 7255: 0x24A3, + 7256: 0x24A4, + 7257: 0x24A5, + 7258: 0x24A6, + 7259: 0x24A7, + 7260: 0x24A8, + 7261: 0x24A9, + 7262: 0x24AA, + 7263: 0x24AB, + 7264: 0x24AC, + 7265: 0x24AD, + 7266: 0x24AE, + 7267: 0x24AF, + 7268: 0x24B0, + 7269: 0x24B1, + 7270: 0x24B2, + 7271: 0x24B3, + 7272: 0x24B4, + 7273: 0x24B5, + 7274: 0x2474, + 7275: 0x2475, + 7276: 0x2476, + 7277: 0x2477, + 7278: 0x2478, + 7279: 0x2479, + 7280: 0x247A, + 7281: 0x247B, + 7282: 0x247C, + 7283: 0x247D, + 7284: 0x247E, + 7285: 0x247F, + 7286: 0x2480, + 7287: 0x2481, + 7288: 0x2482, + 7289: 0x00B9, + 7290: 0x00B2, + 7291: 0x00B3, + 7292: 0x2074, + 7293: 0x207F, + 7294: 0x2081, + 7295: 0x2082, + 7296: 0x2083, + 7297: 0x2084, + 7298: 0xCC25, + 7299: 0xCC26, + 7300: 0xCC2A, + 7301: 0xCC2B, + 7302: 0xCC2D, + 7303: 0xCC2F, + 7304: 0xCC31, + 7305: 0xCC32, + 7306: 0xCC33, + 7307: 0xCC34, + 7308: 0xCC35, + 7309: 0xCC36, + 7310: 0xCC37, + 7311: 0xCC3A, + 7312: 0xCC3F, + 7313: 0xCC40, + 7314: 0xCC41, + 7315: 0xCC42, + 7316: 0xCC43, + 7317: 0xCC46, + 7318: 0xCC47, + 7319: 0xCC49, + 7320: 0xCC4A, + 7321: 0xCC4B, + 7322: 0xCC4D, + 7323: 0xCC4E, + 7324: 0xCC4F, + 7325: 0xCC50, + 7326: 0xCC51, + 7327: 0xCC52, + 7328: 0xCC53, + 7329: 0xCC56, + 7330: 0xCC5A, + 7331: 0xCC5B, + 7332: 0xCC5C, + 7333: 0xCC5D, + 7334: 0xCC5E, + 7335: 0xCC5F, + 7336: 0xCC61, + 7337: 0xCC62, + 7338: 0xCC63, + 7339: 0xCC65, + 7340: 0xCC67, + 7341: 0xCC69, + 7342: 0xCC6A, + 7343: 0xCC6B, + 7344: 0xCC6C, + 7345: 0xCC6D, + 7346: 0xCC6E, + 7347: 0xCC6F, + 7348: 0xCC71, + 7349: 0xCC72, + 7350: 0xCC73, + 7351: 0xCC74, + 7352: 0xCC76, + 7353: 0xCC77, + 7354: 0xCC78, + 7355: 0xCC79, + 7356: 0xCC7A, + 7357: 0xCC7B, + 7358: 0xCC7C, + 7359: 0xCC7D, + 7360: 0xCC7E, + 7361: 0xCC7F, + 7362: 0xCC80, + 7363: 0xCC81, + 7364: 0xCC82, + 7365: 0xCC83, + 7366: 0xCC84, + 7367: 0xCC85, + 7368: 0xCC86, + 7369: 0xCC87, + 7370: 0xCC88, + 7371: 0xCC89, + 7372: 0xCC8A, + 7373: 0xCC8B, + 7374: 0xCC8C, + 7375: 0xCC8D, + 7376: 0xCC8E, + 7377: 0xCC8F, + 7378: 0xCC90, + 7379: 0xCC91, + 7380: 0xCC92, + 7381: 0xCC93, + 7382: 0x3041, + 7383: 0x3042, + 7384: 0x3043, + 7385: 0x3044, + 7386: 0x3045, + 7387: 0x3046, + 7388: 0x3047, + 7389: 0x3048, + 7390: 0x3049, + 7391: 0x304A, + 7392: 0x304B, + 7393: 0x304C, + 7394: 0x304D, + 7395: 0x304E, + 7396: 0x304F, + 7397: 0x3050, + 7398: 0x3051, + 7399: 0x3052, + 7400: 0x3053, + 7401: 0x3054, + 7402: 0x3055, + 7403: 0x3056, + 7404: 0x3057, + 7405: 0x3058, + 7406: 0x3059, + 7407: 0x305A, + 7408: 0x305B, + 7409: 0x305C, + 7410: 0x305D, + 7411: 0x305E, + 7412: 0x305F, + 7413: 0x3060, + 7414: 0x3061, + 7415: 0x3062, + 7416: 0x3063, + 7417: 0x3064, + 7418: 0x3065, + 7419: 0x3066, + 7420: 0x3067, + 7421: 0x3068, + 7422: 0x3069, + 7423: 0x306A, + 7424: 0x306B, + 7425: 0x306C, + 7426: 0x306D, + 7427: 0x306E, + 7428: 0x306F, + 7429: 0x3070, + 7430: 0x3071, + 7431: 0x3072, + 7432: 0x3073, + 7433: 0x3074, + 7434: 0x3075, + 7435: 0x3076, + 7436: 0x3077, + 7437: 0x3078, + 7438: 0x3079, + 7439: 0x307A, + 7440: 0x307B, + 7441: 0x307C, + 7442: 0x307D, + 7443: 0x307E, + 7444: 0x307F, + 7445: 0x3080, + 7446: 0x3081, + 7447: 0x3082, + 7448: 0x3083, + 7449: 0x3084, + 7450: 0x3085, + 7451: 0x3086, + 7452: 0x3087, + 7453: 0x3088, + 7454: 0x3089, + 7455: 0x308A, + 7456: 0x308B, + 7457: 0x308C, + 7458: 0x308D, + 7459: 0x308E, + 7460: 0x308F, + 7461: 0x3090, + 7462: 0x3091, + 7463: 0x3092, + 7464: 0x3093, + 7476: 0xCC94, + 7477: 0xCC95, + 7478: 0xCC96, + 7479: 0xCC97, + 7480: 0xCC9A, + 7481: 0xCC9B, + 7482: 0xCC9D, + 7483: 0xCC9E, + 7484: 0xCC9F, + 7485: 0xCCA1, + 7486: 0xCCA2, + 7487: 0xCCA3, + 7488: 0xCCA4, + 7489: 0xCCA5, + 7490: 0xCCA6, + 7491: 0xCCA7, + 7492: 0xCCAA, + 7493: 0xCCAE, + 7494: 0xCCAF, + 7495: 0xCCB0, + 7496: 0xCCB1, + 7497: 0xCCB2, + 7498: 0xCCB3, + 7499: 0xCCB6, + 7500: 0xCCB7, + 7501: 0xCCB9, + 7502: 0xCCBA, + 7503: 0xCCBB, + 7504: 0xCCBD, + 7505: 0xCCBE, + 7506: 0xCCBF, + 7507: 0xCCC0, + 7508: 0xCCC1, + 7509: 0xCCC2, + 7510: 0xCCC3, + 7511: 0xCCC6, + 7512: 0xCCC8, + 7513: 0xCCCA, + 7514: 0xCCCB, + 7515: 0xCCCC, + 7516: 0xCCCD, + 7517: 0xCCCE, + 7518: 0xCCCF, + 7519: 0xCCD1, + 7520: 0xCCD2, + 7521: 0xCCD3, + 7522: 0xCCD5, + 7523: 0xCCD6, + 7524: 0xCCD7, + 7525: 0xCCD8, + 7526: 0xCCD9, + 7527: 0xCCDA, + 7528: 0xCCDB, + 7529: 0xCCDC, + 7530: 0xCCDD, + 7531: 0xCCDE, + 7532: 0xCCDF, + 7533: 0xCCE0, + 7534: 0xCCE1, + 7535: 0xCCE2, + 7536: 0xCCE3, + 7537: 0xCCE5, + 7538: 0xCCE6, + 7539: 0xCCE7, + 7540: 0xCCE8, + 7541: 0xCCE9, + 7542: 0xCCEA, + 7543: 0xCCEB, + 7544: 0xCCED, + 7545: 0xCCEE, + 7546: 0xCCEF, + 7547: 0xCCF1, + 7548: 0xCCF2, + 7549: 0xCCF3, + 7550: 0xCCF4, + 7551: 0xCCF5, + 7552: 0xCCF6, + 7553: 0xCCF7, + 7554: 0xCCF8, + 7555: 0xCCF9, + 7556: 0xCCFA, + 7557: 0xCCFB, + 7558: 0xCCFC, + 7559: 0xCCFD, + 7560: 0x30A1, + 7561: 0x30A2, + 7562: 0x30A3, + 7563: 0x30A4, + 7564: 0x30A5, + 7565: 0x30A6, + 7566: 0x30A7, + 7567: 0x30A8, + 7568: 0x30A9, + 7569: 0x30AA, + 7570: 0x30AB, + 7571: 0x30AC, + 7572: 0x30AD, + 7573: 0x30AE, + 7574: 0x30AF, + 7575: 0x30B0, + 7576: 0x30B1, + 7577: 0x30B2, + 7578: 0x30B3, + 7579: 0x30B4, + 7580: 0x30B5, + 7581: 0x30B6, + 7582: 0x30B7, + 7583: 0x30B8, + 7584: 0x30B9, + 7585: 0x30BA, + 7586: 0x30BB, + 7587: 0x30BC, + 7588: 0x30BD, + 7589: 0x30BE, + 7590: 0x30BF, + 7591: 0x30C0, + 7592: 0x30C1, + 7593: 0x30C2, + 7594: 0x30C3, + 7595: 0x30C4, + 7596: 0x30C5, + 7597: 0x30C6, + 7598: 0x30C7, + 7599: 0x30C8, + 7600: 0x30C9, + 7601: 0x30CA, + 7602: 0x30CB, + 7603: 0x30CC, + 7604: 0x30CD, + 7605: 0x30CE, + 7606: 0x30CF, + 7607: 0x30D0, + 7608: 0x30D1, + 7609: 0x30D2, + 7610: 0x30D3, + 7611: 0x30D4, + 7612: 0x30D5, + 7613: 0x30D6, + 7614: 0x30D7, + 7615: 0x30D8, + 7616: 0x30D9, + 7617: 0x30DA, + 7618: 0x30DB, + 7619: 0x30DC, + 7620: 0x30DD, + 7621: 0x30DE, + 7622: 0x30DF, + 7623: 0x30E0, + 7624: 0x30E1, + 7625: 0x30E2, + 7626: 0x30E3, + 7627: 0x30E4, + 7628: 0x30E5, + 7629: 0x30E6, + 7630: 0x30E7, + 7631: 0x30E8, + 7632: 0x30E9, + 7633: 0x30EA, + 7634: 0x30EB, + 7635: 0x30EC, + 7636: 0x30ED, + 7637: 0x30EE, + 7638: 0x30EF, + 7639: 0x30F0, + 7640: 0x30F1, + 7641: 0x30F2, + 7642: 0x30F3, + 7643: 0x30F4, + 7644: 0x30F5, + 7645: 0x30F6, + 7654: 0xCCFE, + 7655: 0xCCFF, + 7656: 0xCD00, + 7657: 0xCD02, + 7658: 0xCD03, + 7659: 0xCD04, + 7660: 0xCD05, + 7661: 0xCD06, + 7662: 0xCD07, + 7663: 0xCD0A, + 7664: 0xCD0B, + 7665: 0xCD0D, + 7666: 0xCD0E, + 7667: 0xCD0F, + 7668: 0xCD11, + 7669: 0xCD12, + 7670: 0xCD13, + 7671: 0xCD14, + 7672: 0xCD15, + 7673: 0xCD16, + 7674: 0xCD17, + 7675: 0xCD1A, + 7676: 0xCD1C, + 7677: 0xCD1E, + 7678: 0xCD1F, + 7679: 0xCD20, + 7680: 0xCD21, + 7681: 0xCD22, + 7682: 0xCD23, + 7683: 0xCD25, + 7684: 0xCD26, + 7685: 0xCD27, + 7686: 0xCD29, + 7687: 0xCD2A, + 7688: 0xCD2B, + 7689: 0xCD2D, + 7690: 0xCD2E, + 7691: 0xCD2F, + 7692: 0xCD30, + 7693: 0xCD31, + 7694: 0xCD32, + 7695: 0xCD33, + 7696: 0xCD34, + 7697: 0xCD35, + 7698: 0xCD36, + 7699: 0xCD37, + 7700: 0xCD38, + 7701: 0xCD3A, + 7702: 0xCD3B, + 7703: 0xCD3C, + 7704: 0xCD3D, + 7705: 0xCD3E, + 7706: 0xCD3F, + 7707: 0xCD40, + 7708: 0xCD41, + 7709: 0xCD42, + 7710: 0xCD43, + 7711: 0xCD44, + 7712: 0xCD45, + 7713: 0xCD46, + 7714: 0xCD47, + 7715: 0xCD48, + 7716: 0xCD49, + 7717: 0xCD4A, + 7718: 0xCD4B, + 7719: 0xCD4C, + 7720: 0xCD4D, + 7721: 0xCD4E, + 7722: 0xCD4F, + 7723: 0xCD50, + 7724: 0xCD51, + 7725: 0xCD52, + 7726: 0xCD53, + 7727: 0xCD54, + 7728: 0xCD55, + 7729: 0xCD56, + 7730: 0xCD57, + 7731: 0xCD58, + 7732: 0xCD59, + 7733: 0xCD5A, + 7734: 0xCD5B, + 7735: 0xCD5D, + 7736: 0xCD5E, + 7737: 0xCD5F, + 7738: 0x0410, + 7739: 0x0411, + 7740: 0x0412, + 7741: 0x0413, + 7742: 0x0414, + 7743: 0x0415, + 7744: 0x0401, + 7745: 0x0416, + 7746: 0x0417, + 7747: 0x0418, + 7748: 0x0419, + 7749: 0x041A, + 7750: 0x041B, + 7751: 0x041C, + 7752: 0x041D, + 7753: 0x041E, + 7754: 0x041F, + 7755: 0x0420, + 7756: 0x0421, + 7757: 0x0422, + 7758: 0x0423, + 7759: 0x0424, + 7760: 0x0425, + 7761: 0x0426, + 7762: 0x0427, + 7763: 0x0428, + 7764: 0x0429, + 7765: 0x042A, + 7766: 0x042B, + 7767: 0x042C, + 7768: 0x042D, + 7769: 0x042E, + 7770: 0x042F, + 7786: 0x0430, + 7787: 0x0431, + 7788: 0x0432, + 7789: 0x0433, + 7790: 0x0434, + 7791: 0x0435, + 7792: 0x0451, + 7793: 0x0436, + 7794: 0x0437, + 7795: 0x0438, + 7796: 0x0439, + 7797: 0x043A, + 7798: 0x043B, + 7799: 0x043C, + 7800: 0x043D, + 7801: 0x043E, + 7802: 0x043F, + 7803: 0x0440, + 7804: 0x0441, + 7805: 0x0442, + 7806: 0x0443, + 7807: 0x0444, + 7808: 0x0445, + 7809: 0x0446, + 7810: 0x0447, + 7811: 0x0448, + 7812: 0x0449, + 7813: 0x044A, + 7814: 0x044B, + 7815: 0x044C, + 7816: 0x044D, + 7817: 0x044E, + 7818: 0x044F, + 7832: 0xCD61, + 7833: 0xCD62, + 7834: 0xCD63, + 7835: 0xCD65, + 7836: 0xCD66, + 7837: 0xCD67, + 7838: 0xCD68, + 7839: 0xCD69, + 7840: 0xCD6A, + 7841: 0xCD6B, + 7842: 0xCD6E, + 7843: 0xCD70, + 7844: 0xCD72, + 7845: 0xCD73, + 7846: 0xCD74, + 7847: 0xCD75, + 7848: 0xCD76, + 7849: 0xCD77, + 7850: 0xCD79, + 7851: 0xCD7A, + 7852: 0xCD7B, + 7853: 0xCD7C, + 7854: 0xCD7D, + 7855: 0xCD7E, + 7856: 0xCD7F, + 7857: 0xCD80, + 7858: 0xCD81, + 7859: 0xCD82, + 7860: 0xCD83, + 7861: 0xCD84, + 7862: 0xCD85, + 7863: 0xCD86, + 7864: 0xCD87, + 7865: 0xCD89, + 7866: 0xCD8A, + 7867: 0xCD8B, + 7868: 0xCD8C, + 7869: 0xCD8D, + 7870: 0xCD8E, + 7871: 0xCD8F, + 7872: 0xCD90, + 7873: 0xCD91, + 7874: 0xCD92, + 7875: 0xCD93, + 7876: 0xCD96, + 7877: 0xCD97, + 7878: 0xCD99, + 7879: 0xCD9A, + 7880: 0xCD9B, + 7881: 0xCD9D, + 7882: 0xCD9E, + 7883: 0xCD9F, + 7884: 0xCDA0, + 7885: 0xCDA1, + 7886: 0xCDA2, + 7887: 0xCDA3, + 7888: 0xCDA6, + 7889: 0xCDA8, + 7890: 0xCDAA, + 7891: 0xCDAB, + 7892: 0xCDAC, + 7893: 0xCDAD, + 7894: 0xCDAE, + 7895: 0xCDAF, + 7896: 0xCDB1, + 7897: 0xCDB2, + 7898: 0xCDB3, + 7899: 0xCDB4, + 7900: 0xCDB5, + 7901: 0xCDB6, + 7902: 0xCDB7, + 7903: 0xCDB8, + 7904: 0xCDB9, + 7905: 0xCDBA, + 7906: 0xCDBB, + 7907: 0xCDBC, + 7908: 0xCDBD, + 7909: 0xCDBE, + 7910: 0xCDBF, + 7911: 0xCDC0, + 7912: 0xCDC1, + 7913: 0xCDC2, + 7914: 0xCDC3, + 7915: 0xCDC5, + 8010: 0xCDC6, + 8011: 0xCDC7, + 8012: 0xCDC8, + 8013: 0xCDC9, + 8014: 0xCDCA, + 8015: 0xCDCB, + 8016: 0xCDCD, + 8017: 0xCDCE, + 8018: 0xCDCF, + 8019: 0xCDD1, + 8020: 0xCDD2, + 8021: 0xCDD3, + 8022: 0xCDD4, + 8023: 0xCDD5, + 8024: 0xCDD6, + 8025: 0xCDD7, + 8026: 0xCDD8, + 8027: 0xCDD9, + 8028: 0xCDDA, + 8029: 0xCDDB, + 8030: 0xCDDC, + 8031: 0xCDDD, + 8032: 0xCDDE, + 8033: 0xCDDF, + 8034: 0xCDE0, + 8035: 0xCDE1, + 8036: 0xCDE2, + 8037: 0xCDE3, + 8038: 0xCDE4, + 8039: 0xCDE5, + 8040: 0xCDE6, + 8041: 0xCDE7, + 8042: 0xCDE9, + 8043: 0xCDEA, + 8044: 0xCDEB, + 8045: 0xCDED, + 8046: 0xCDEE, + 8047: 0xCDEF, + 8048: 0xCDF1, + 8049: 0xCDF2, + 8050: 0xCDF3, + 8051: 0xCDF4, + 8052: 0xCDF5, + 8053: 0xCDF6, + 8054: 0xCDF7, + 8055: 0xCDFA, + 8056: 0xCDFC, + 8057: 0xCDFE, + 8058: 0xCDFF, + 8059: 0xCE00, + 8060: 0xCE01, + 8061: 0xCE02, + 8062: 0xCE03, + 8063: 0xCE05, + 8064: 0xCE06, + 8065: 0xCE07, + 8066: 0xCE09, + 8067: 0xCE0A, + 8068: 0xCE0B, + 8069: 0xCE0D, + 8070: 0xCE0E, + 8071: 0xCE0F, + 8072: 0xCE10, + 8073: 0xCE11, + 8074: 0xCE12, + 8075: 0xCE13, + 8076: 0xCE15, + 8077: 0xCE16, + 8078: 0xCE17, + 8079: 0xCE18, + 8080: 0xCE1A, + 8081: 0xCE1B, + 8082: 0xCE1C, + 8083: 0xCE1D, + 8084: 0xCE1E, + 8085: 0xCE1F, + 8086: 0xCE22, + 8087: 0xCE23, + 8088: 0xCE25, + 8089: 0xCE26, + 8090: 0xCE27, + 8091: 0xCE29, + 8092: 0xCE2A, + 8093: 0xCE2B, + 8188: 0xCE2C, + 8189: 0xCE2D, + 8190: 0xCE2E, + 8191: 0xCE2F, + 8192: 0xCE32, + 8193: 0xCE34, + 8194: 0xCE36, + 8195: 0xCE37, + 8196: 0xCE38, + 8197: 0xCE39, + 8198: 0xCE3A, + 8199: 0xCE3B, + 8200: 0xCE3C, + 8201: 0xCE3D, + 8202: 0xCE3E, + 8203: 0xCE3F, + 8204: 0xCE40, + 8205: 0xCE41, + 8206: 0xCE42, + 8207: 0xCE43, + 8208: 0xCE44, + 8209: 0xCE45, + 8210: 0xCE46, + 8211: 0xCE47, + 8212: 0xCE48, + 8213: 0xCE49, + 8214: 0xCE4A, + 8215: 0xCE4B, + 8216: 0xCE4C, + 8217: 0xCE4D, + 8218: 0xCE4E, + 8219: 0xCE4F, + 8220: 0xCE50, + 8221: 0xCE51, + 8222: 0xCE52, + 8223: 0xCE53, + 8224: 0xCE54, + 8225: 0xCE55, + 8226: 0xCE56, + 8227: 0xCE57, + 8228: 0xCE5A, + 8229: 0xCE5B, + 8230: 0xCE5D, + 8231: 0xCE5E, + 8232: 0xCE62, + 8233: 0xCE63, + 8234: 0xCE64, + 8235: 0xCE65, + 8236: 0xCE66, + 8237: 0xCE67, + 8238: 0xCE6A, + 8239: 0xCE6C, + 8240: 0xCE6E, + 8241: 0xCE6F, + 8242: 0xCE70, + 8243: 0xCE71, + 8244: 0xCE72, + 8245: 0xCE73, + 8246: 0xCE76, + 8247: 0xCE77, + 8248: 0xCE79, + 8249: 0xCE7A, + 8250: 0xCE7B, + 8251: 0xCE7D, + 8252: 0xCE7E, + 8253: 0xCE7F, + 8254: 0xCE80, + 8255: 0xCE81, + 8256: 0xCE82, + 8257: 0xCE83, + 8258: 0xCE86, + 8259: 0xCE88, + 8260: 0xCE8A, + 8261: 0xCE8B, + 8262: 0xCE8C, + 8263: 0xCE8D, + 8264: 0xCE8E, + 8265: 0xCE8F, + 8266: 0xCE92, + 8267: 0xCE93, + 8268: 0xCE95, + 8269: 0xCE96, + 8270: 0xCE97, + 8271: 0xCE99, + 8366: 0xCE9A, + 8367: 0xCE9B, + 8368: 0xCE9C, + 8369: 0xCE9D, + 8370: 0xCE9E, + 8371: 0xCE9F, + 8372: 0xCEA2, + 8373: 0xCEA6, + 8374: 0xCEA7, + 8375: 0xCEA8, + 8376: 0xCEA9, + 8377: 0xCEAA, + 8378: 0xCEAB, + 8379: 0xCEAE, + 8380: 0xCEAF, + 8381: 0xCEB0, + 8382: 0xCEB1, + 8383: 0xCEB2, + 8384: 0xCEB3, + 8385: 0xCEB4, + 8386: 0xCEB5, + 8387: 0xCEB6, + 8388: 0xCEB7, + 8389: 0xCEB8, + 8390: 0xCEB9, + 8391: 0xCEBA, + 8392: 0xCEBB, + 8393: 0xCEBC, + 8394: 0xCEBD, + 8395: 0xCEBE, + 8396: 0xCEBF, + 8397: 0xCEC0, + 8398: 0xCEC2, + 8399: 0xCEC3, + 8400: 0xCEC4, + 8401: 0xCEC5, + 8402: 0xCEC6, + 8403: 0xCEC7, + 8404: 0xCEC8, + 8405: 0xCEC9, + 8406: 0xCECA, + 8407: 0xCECB, + 8408: 0xCECC, + 8409: 0xCECD, + 8410: 0xCECE, + 8411: 0xCECF, + 8412: 0xCED0, + 8413: 0xCED1, + 8414: 0xCED2, + 8415: 0xCED3, + 8416: 0xCED4, + 8417: 0xCED5, + 8418: 0xCED6, + 8419: 0xCED7, + 8420: 0xCED8, + 8421: 0xCED9, + 8422: 0xCEDA, + 8423: 0xCEDB, + 8424: 0xCEDC, + 8425: 0xCEDD, + 8426: 0xCEDE, + 8427: 0xCEDF, + 8428: 0xCEE0, + 8429: 0xCEE1, + 8430: 0xCEE2, + 8431: 0xCEE3, + 8432: 0xCEE6, + 8433: 0xCEE7, + 8434: 0xCEE9, + 8435: 0xCEEA, + 8436: 0xCEED, + 8437: 0xCEEE, + 8438: 0xCEEF, + 8439: 0xCEF0, + 8440: 0xCEF1, + 8441: 0xCEF2, + 8442: 0xCEF3, + 8443: 0xCEF6, + 8444: 0xCEFA, + 8445: 0xCEFB, + 8446: 0xCEFC, + 8447: 0xCEFD, + 8448: 0xCEFE, + 8449: 0xCEFF, + 8450: 0xAC00, + 8451: 0xAC01, + 8452: 0xAC04, + 8453: 0xAC07, + 8454: 0xAC08, + 8455: 0xAC09, + 8456: 0xAC0A, + 8457: 0xAC10, + 8458: 0xAC11, + 8459: 0xAC12, + 8460: 0xAC13, + 8461: 0xAC14, + 8462: 0xAC15, + 8463: 0xAC16, + 8464: 0xAC17, + 8465: 0xAC19, + 8466: 0xAC1A, + 8467: 0xAC1B, + 8468: 0xAC1C, + 8469: 0xAC1D, + 8470: 0xAC20, + 8471: 0xAC24, + 8472: 0xAC2C, + 8473: 0xAC2D, + 8474: 0xAC2F, + 8475: 0xAC30, + 8476: 0xAC31, + 8477: 0xAC38, + 8478: 0xAC39, + 8479: 0xAC3C, + 8480: 0xAC40, + 8481: 0xAC4B, + 8482: 0xAC4D, + 8483: 0xAC54, + 8484: 0xAC58, + 8485: 0xAC5C, + 8486: 0xAC70, + 8487: 0xAC71, + 8488: 0xAC74, + 8489: 0xAC77, + 8490: 0xAC78, + 8491: 0xAC7A, + 8492: 0xAC80, + 8493: 0xAC81, + 8494: 0xAC83, + 8495: 0xAC84, + 8496: 0xAC85, + 8497: 0xAC86, + 8498: 0xAC89, + 8499: 0xAC8A, + 8500: 0xAC8B, + 8501: 0xAC8C, + 8502: 0xAC90, + 8503: 0xAC94, + 8504: 0xAC9C, + 8505: 0xAC9D, + 8506: 0xAC9F, + 8507: 0xACA0, + 8508: 0xACA1, + 8509: 0xACA8, + 8510: 0xACA9, + 8511: 0xACAA, + 8512: 0xACAC, + 8513: 0xACAF, + 8514: 0xACB0, + 8515: 0xACB8, + 8516: 0xACB9, + 8517: 0xACBB, + 8518: 0xACBC, + 8519: 0xACBD, + 8520: 0xACC1, + 8521: 0xACC4, + 8522: 0xACC8, + 8523: 0xACCC, + 8524: 0xACD5, + 8525: 0xACD7, + 8526: 0xACE0, + 8527: 0xACE1, + 8528: 0xACE4, + 8529: 0xACE7, + 8530: 0xACE8, + 8531: 0xACEA, + 8532: 0xACEC, + 8533: 0xACEF, + 8534: 0xACF0, + 8535: 0xACF1, + 8536: 0xACF3, + 8537: 0xACF5, + 8538: 0xACF6, + 8539: 0xACFC, + 8540: 0xACFD, + 8541: 0xAD00, + 8542: 0xAD04, + 8543: 0xAD06, + 8544: 0xCF02, + 8545: 0xCF03, + 8546: 0xCF05, + 8547: 0xCF06, + 8548: 0xCF07, + 8549: 0xCF09, + 8550: 0xCF0A, + 8551: 0xCF0B, + 8552: 0xCF0C, + 8553: 0xCF0D, + 8554: 0xCF0E, + 8555: 0xCF0F, + 8556: 0xCF12, + 8557: 0xCF14, + 8558: 0xCF16, + 8559: 0xCF17, + 8560: 0xCF18, + 8561: 0xCF19, + 8562: 0xCF1A, + 8563: 0xCF1B, + 8564: 0xCF1D, + 8565: 0xCF1E, + 8566: 0xCF1F, + 8567: 0xCF21, + 8568: 0xCF22, + 8569: 0xCF23, + 8570: 0xCF25, + 8571: 0xCF26, + 8572: 0xCF27, + 8573: 0xCF28, + 8574: 0xCF29, + 8575: 0xCF2A, + 8576: 0xCF2B, + 8577: 0xCF2E, + 8578: 0xCF32, + 8579: 0xCF33, + 8580: 0xCF34, + 8581: 0xCF35, + 8582: 0xCF36, + 8583: 0xCF37, + 8584: 0xCF39, + 8585: 0xCF3A, + 8586: 0xCF3B, + 8587: 0xCF3C, + 8588: 0xCF3D, + 8589: 0xCF3E, + 8590: 0xCF3F, + 8591: 0xCF40, + 8592: 0xCF41, + 8593: 0xCF42, + 8594: 0xCF43, + 8595: 0xCF44, + 8596: 0xCF45, + 8597: 0xCF46, + 8598: 0xCF47, + 8599: 0xCF48, + 8600: 0xCF49, + 8601: 0xCF4A, + 8602: 0xCF4B, + 8603: 0xCF4C, + 8604: 0xCF4D, + 8605: 0xCF4E, + 8606: 0xCF4F, + 8607: 0xCF50, + 8608: 0xCF51, + 8609: 0xCF52, + 8610: 0xCF53, + 8611: 0xCF56, + 8612: 0xCF57, + 8613: 0xCF59, + 8614: 0xCF5A, + 8615: 0xCF5B, + 8616: 0xCF5D, + 8617: 0xCF5E, + 8618: 0xCF5F, + 8619: 0xCF60, + 8620: 0xCF61, + 8621: 0xCF62, + 8622: 0xCF63, + 8623: 0xCF66, + 8624: 0xCF68, + 8625: 0xCF6A, + 8626: 0xCF6B, + 8627: 0xCF6C, + 8628: 0xAD0C, + 8629: 0xAD0D, + 8630: 0xAD0F, + 8631: 0xAD11, + 8632: 0xAD18, + 8633: 0xAD1C, + 8634: 0xAD20, + 8635: 0xAD29, + 8636: 0xAD2C, + 8637: 0xAD2D, + 8638: 0xAD34, + 8639: 0xAD35, + 8640: 0xAD38, + 8641: 0xAD3C, + 8642: 0xAD44, + 8643: 0xAD45, + 8644: 0xAD47, + 8645: 0xAD49, + 8646: 0xAD50, + 8647: 0xAD54, + 8648: 0xAD58, + 8649: 0xAD61, + 8650: 0xAD63, + 8651: 0xAD6C, + 8652: 0xAD6D, + 8653: 0xAD70, + 8654: 0xAD73, + 8655: 0xAD74, + 8656: 0xAD75, + 8657: 0xAD76, + 8658: 0xAD7B, + 8659: 0xAD7C, + 8660: 0xAD7D, + 8661: 0xAD7F, + 8662: 0xAD81, + 8663: 0xAD82, + 8664: 0xAD88, + 8665: 0xAD89, + 8666: 0xAD8C, + 8667: 0xAD90, + 8668: 0xAD9C, + 8669: 0xAD9D, + 8670: 0xADA4, + 8671: 0xADB7, + 8672: 0xADC0, + 8673: 0xADC1, + 8674: 0xADC4, + 8675: 0xADC8, + 8676: 0xADD0, + 8677: 0xADD1, + 8678: 0xADD3, + 8679: 0xADDC, + 8680: 0xADE0, + 8681: 0xADE4, + 8682: 0xADF8, + 8683: 0xADF9, + 8684: 0xADFC, + 8685: 0xADFF, + 8686: 0xAE00, + 8687: 0xAE01, + 8688: 0xAE08, + 8689: 0xAE09, + 8690: 0xAE0B, + 8691: 0xAE0D, + 8692: 0xAE14, + 8693: 0xAE30, + 8694: 0xAE31, + 8695: 0xAE34, + 8696: 0xAE37, + 8697: 0xAE38, + 8698: 0xAE3A, + 8699: 0xAE40, + 8700: 0xAE41, + 8701: 0xAE43, + 8702: 0xAE45, + 8703: 0xAE46, + 8704: 0xAE4A, + 8705: 0xAE4C, + 8706: 0xAE4D, + 8707: 0xAE4E, + 8708: 0xAE50, + 8709: 0xAE54, + 8710: 0xAE56, + 8711: 0xAE5C, + 8712: 0xAE5D, + 8713: 0xAE5F, + 8714: 0xAE60, + 8715: 0xAE61, + 8716: 0xAE65, + 8717: 0xAE68, + 8718: 0xAE69, + 8719: 0xAE6C, + 8720: 0xAE70, + 8721: 0xAE78, + 8722: 0xCF6D, + 8723: 0xCF6E, + 8724: 0xCF6F, + 8725: 0xCF72, + 8726: 0xCF73, + 8727: 0xCF75, + 8728: 0xCF76, + 8729: 0xCF77, + 8730: 0xCF79, + 8731: 0xCF7A, + 8732: 0xCF7B, + 8733: 0xCF7C, + 8734: 0xCF7D, + 8735: 0xCF7E, + 8736: 0xCF7F, + 8737: 0xCF81, + 8738: 0xCF82, + 8739: 0xCF83, + 8740: 0xCF84, + 8741: 0xCF86, + 8742: 0xCF87, + 8743: 0xCF88, + 8744: 0xCF89, + 8745: 0xCF8A, + 8746: 0xCF8B, + 8747: 0xCF8D, + 8748: 0xCF8E, + 8749: 0xCF8F, + 8750: 0xCF90, + 8751: 0xCF91, + 8752: 0xCF92, + 8753: 0xCF93, + 8754: 0xCF94, + 8755: 0xCF95, + 8756: 0xCF96, + 8757: 0xCF97, + 8758: 0xCF98, + 8759: 0xCF99, + 8760: 0xCF9A, + 8761: 0xCF9B, + 8762: 0xCF9C, + 8763: 0xCF9D, + 8764: 0xCF9E, + 8765: 0xCF9F, + 8766: 0xCFA0, + 8767: 0xCFA2, + 8768: 0xCFA3, + 8769: 0xCFA4, + 8770: 0xCFA5, + 8771: 0xCFA6, + 8772: 0xCFA7, + 8773: 0xCFA9, + 8774: 0xCFAA, + 8775: 0xCFAB, + 8776: 0xCFAC, + 8777: 0xCFAD, + 8778: 0xCFAE, + 8779: 0xCFAF, + 8780: 0xCFB1, + 8781: 0xCFB2, + 8782: 0xCFB3, + 8783: 0xCFB4, + 8784: 0xCFB5, + 8785: 0xCFB6, + 8786: 0xCFB7, + 8787: 0xCFB8, + 8788: 0xCFB9, + 8789: 0xCFBA, + 8790: 0xCFBB, + 8791: 0xCFBC, + 8792: 0xCFBD, + 8793: 0xCFBE, + 8794: 0xCFBF, + 8795: 0xCFC0, + 8796: 0xCFC1, + 8797: 0xCFC2, + 8798: 0xCFC3, + 8799: 0xCFC5, + 8800: 0xCFC6, + 8801: 0xCFC7, + 8802: 0xCFC8, + 8803: 0xCFC9, + 8804: 0xCFCA, + 8805: 0xCFCB, + 8806: 0xAE79, + 8807: 0xAE7B, + 8808: 0xAE7C, + 8809: 0xAE7D, + 8810: 0xAE84, + 8811: 0xAE85, + 8812: 0xAE8C, + 8813: 0xAEBC, + 8814: 0xAEBD, + 8815: 0xAEBE, + 8816: 0xAEC0, + 8817: 0xAEC4, + 8818: 0xAECC, + 8819: 0xAECD, + 8820: 0xAECF, + 8821: 0xAED0, + 8822: 0xAED1, + 8823: 0xAED8, + 8824: 0xAED9, + 8825: 0xAEDC, + 8826: 0xAEE8, + 8827: 0xAEEB, + 8828: 0xAEED, + 8829: 0xAEF4, + 8830: 0xAEF8, + 8831: 0xAEFC, + 8832: 0xAF07, + 8833: 0xAF08, + 8834: 0xAF0D, + 8835: 0xAF10, + 8836: 0xAF2C, + 8837: 0xAF2D, + 8838: 0xAF30, + 8839: 0xAF32, + 8840: 0xAF34, + 8841: 0xAF3C, + 8842: 0xAF3D, + 8843: 0xAF3F, + 8844: 0xAF41, + 8845: 0xAF42, + 8846: 0xAF43, + 8847: 0xAF48, + 8848: 0xAF49, + 8849: 0xAF50, + 8850: 0xAF5C, + 8851: 0xAF5D, + 8852: 0xAF64, + 8853: 0xAF65, + 8854: 0xAF79, + 8855: 0xAF80, + 8856: 0xAF84, + 8857: 0xAF88, + 8858: 0xAF90, + 8859: 0xAF91, + 8860: 0xAF95, + 8861: 0xAF9C, + 8862: 0xAFB8, + 8863: 0xAFB9, + 8864: 0xAFBC, + 8865: 0xAFC0, + 8866: 0xAFC7, + 8867: 0xAFC8, + 8868: 0xAFC9, + 8869: 0xAFCB, + 8870: 0xAFCD, + 8871: 0xAFCE, + 8872: 0xAFD4, + 8873: 0xAFDC, + 8874: 0xAFE8, + 8875: 0xAFE9, + 8876: 0xAFF0, + 8877: 0xAFF1, + 8878: 0xAFF4, + 8879: 0xAFF8, + 8880: 0xB000, + 8881: 0xB001, + 8882: 0xB004, + 8883: 0xB00C, + 8884: 0xB010, + 8885: 0xB014, + 8886: 0xB01C, + 8887: 0xB01D, + 8888: 0xB028, + 8889: 0xB044, + 8890: 0xB045, + 8891: 0xB048, + 8892: 0xB04A, + 8893: 0xB04C, + 8894: 0xB04E, + 8895: 0xB053, + 8896: 0xB054, + 8897: 0xB055, + 8898: 0xB057, + 8899: 0xB059, + 8900: 0xCFCC, + 8901: 0xCFCD, + 8902: 0xCFCE, + 8903: 0xCFCF, + 8904: 0xCFD0, + 8905: 0xCFD1, + 8906: 0xCFD2, + 8907: 0xCFD3, + 8908: 0xCFD4, + 8909: 0xCFD5, + 8910: 0xCFD6, + 8911: 0xCFD7, + 8912: 0xCFD8, + 8913: 0xCFD9, + 8914: 0xCFDA, + 8915: 0xCFDB, + 8916: 0xCFDC, + 8917: 0xCFDD, + 8918: 0xCFDE, + 8919: 0xCFDF, + 8920: 0xCFE2, + 8921: 0xCFE3, + 8922: 0xCFE5, + 8923: 0xCFE6, + 8924: 0xCFE7, + 8925: 0xCFE9, + 8926: 0xCFEA, + 8927: 0xCFEB, + 8928: 0xCFEC, + 8929: 0xCFED, + 8930: 0xCFEE, + 8931: 0xCFEF, + 8932: 0xCFF2, + 8933: 0xCFF4, + 8934: 0xCFF6, + 8935: 0xCFF7, + 8936: 0xCFF8, + 8937: 0xCFF9, + 8938: 0xCFFA, + 8939: 0xCFFB, + 8940: 0xCFFD, + 8941: 0xCFFE, + 8942: 0xCFFF, + 8943: 0xD001, + 8944: 0xD002, + 8945: 0xD003, + 8946: 0xD005, + 8947: 0xD006, + 8948: 0xD007, + 8949: 0xD008, + 8950: 0xD009, + 8951: 0xD00A, + 8952: 0xD00B, + 8953: 0xD00C, + 8954: 0xD00D, + 8955: 0xD00E, + 8956: 0xD00F, + 8957: 0xD010, + 8958: 0xD012, + 8959: 0xD013, + 8960: 0xD014, + 8961: 0xD015, + 8962: 0xD016, + 8963: 0xD017, + 8964: 0xD019, + 8965: 0xD01A, + 8966: 0xD01B, + 8967: 0xD01C, + 8968: 0xD01D, + 8969: 0xD01E, + 8970: 0xD01F, + 8971: 0xD020, + 8972: 0xD021, + 8973: 0xD022, + 8974: 0xD023, + 8975: 0xD024, + 8976: 0xD025, + 8977: 0xD026, + 8978: 0xD027, + 8979: 0xD028, + 8980: 0xD029, + 8981: 0xD02A, + 8982: 0xD02B, + 8983: 0xD02C, + 8984: 0xB05D, + 8985: 0xB07C, + 8986: 0xB07D, + 8987: 0xB080, + 8988: 0xB084, + 8989: 0xB08C, + 8990: 0xB08D, + 8991: 0xB08F, + 8992: 0xB091, + 8993: 0xB098, + 8994: 0xB099, + 8995: 0xB09A, + 8996: 0xB09C, + 8997: 0xB09F, + 8998: 0xB0A0, + 8999: 0xB0A1, + 9000: 0xB0A2, + 9001: 0xB0A8, + 9002: 0xB0A9, + 9003: 0xB0AB, + 9004: 0xB0AC, + 9005: 0xB0AD, + 9006: 0xB0AE, + 9007: 0xB0AF, + 9008: 0xB0B1, + 9009: 0xB0B3, + 9010: 0xB0B4, + 9011: 0xB0B5, + 9012: 0xB0B8, + 9013: 0xB0BC, + 9014: 0xB0C4, + 9015: 0xB0C5, + 9016: 0xB0C7, + 9017: 0xB0C8, + 9018: 0xB0C9, + 9019: 0xB0D0, + 9020: 0xB0D1, + 9021: 0xB0D4, + 9022: 0xB0D8, + 9023: 0xB0E0, + 9024: 0xB0E5, + 9025: 0xB108, + 9026: 0xB109, + 9027: 0xB10B, + 9028: 0xB10C, + 9029: 0xB110, + 9030: 0xB112, + 9031: 0xB113, + 9032: 0xB118, + 9033: 0xB119, + 9034: 0xB11B, + 9035: 0xB11C, + 9036: 0xB11D, + 9037: 0xB123, + 9038: 0xB124, + 9039: 0xB125, + 9040: 0xB128, + 9041: 0xB12C, + 9042: 0xB134, + 9043: 0xB135, + 9044: 0xB137, + 9045: 0xB138, + 9046: 0xB139, + 9047: 0xB140, + 9048: 0xB141, + 9049: 0xB144, + 9050: 0xB148, + 9051: 0xB150, + 9052: 0xB151, + 9053: 0xB154, + 9054: 0xB155, + 9055: 0xB158, + 9056: 0xB15C, + 9057: 0xB160, + 9058: 0xB178, + 9059: 0xB179, + 9060: 0xB17C, + 9061: 0xB180, + 9062: 0xB182, + 9063: 0xB188, + 9064: 0xB189, + 9065: 0xB18B, + 9066: 0xB18D, + 9067: 0xB192, + 9068: 0xB193, + 9069: 0xB194, + 9070: 0xB198, + 9071: 0xB19C, + 9072: 0xB1A8, + 9073: 0xB1CC, + 9074: 0xB1D0, + 9075: 0xB1D4, + 9076: 0xB1DC, + 9077: 0xB1DD, + 9078: 0xD02E, + 9079: 0xD02F, + 9080: 0xD030, + 9081: 0xD031, + 9082: 0xD032, + 9083: 0xD033, + 9084: 0xD036, + 9085: 0xD037, + 9086: 0xD039, + 9087: 0xD03A, + 9088: 0xD03B, + 9089: 0xD03D, + 9090: 0xD03E, + 9091: 0xD03F, + 9092: 0xD040, + 9093: 0xD041, + 9094: 0xD042, + 9095: 0xD043, + 9096: 0xD046, + 9097: 0xD048, + 9098: 0xD04A, + 9099: 0xD04B, + 9100: 0xD04C, + 9101: 0xD04D, + 9102: 0xD04E, + 9103: 0xD04F, + 9104: 0xD051, + 9105: 0xD052, + 9106: 0xD053, + 9107: 0xD055, + 9108: 0xD056, + 9109: 0xD057, + 9110: 0xD059, + 9111: 0xD05A, + 9112: 0xD05B, + 9113: 0xD05C, + 9114: 0xD05D, + 9115: 0xD05E, + 9116: 0xD05F, + 9117: 0xD061, + 9118: 0xD062, + 9119: 0xD063, + 9120: 0xD064, + 9121: 0xD065, + 9122: 0xD066, + 9123: 0xD067, + 9124: 0xD068, + 9125: 0xD069, + 9126: 0xD06A, + 9127: 0xD06B, + 9128: 0xD06E, + 9129: 0xD06F, + 9130: 0xD071, + 9131: 0xD072, + 9132: 0xD073, + 9133: 0xD075, + 9134: 0xD076, + 9135: 0xD077, + 9136: 0xD078, + 9137: 0xD079, + 9138: 0xD07A, + 9139: 0xD07B, + 9140: 0xD07E, + 9141: 0xD07F, + 9142: 0xD080, + 9143: 0xD082, + 9144: 0xD083, + 9145: 0xD084, + 9146: 0xD085, + 9147: 0xD086, + 9148: 0xD087, + 9149: 0xD088, + 9150: 0xD089, + 9151: 0xD08A, + 9152: 0xD08B, + 9153: 0xD08C, + 9154: 0xD08D, + 9155: 0xD08E, + 9156: 0xD08F, + 9157: 0xD090, + 9158: 0xD091, + 9159: 0xD092, + 9160: 0xD093, + 9161: 0xD094, + 9162: 0xB1DF, + 9163: 0xB1E8, + 9164: 0xB1E9, + 9165: 0xB1EC, + 9166: 0xB1F0, + 9167: 0xB1F9, + 9168: 0xB1FB, + 9169: 0xB1FD, + 9170: 0xB204, + 9171: 0xB205, + 9172: 0xB208, + 9173: 0xB20B, + 9174: 0xB20C, + 9175: 0xB214, + 9176: 0xB215, + 9177: 0xB217, + 9178: 0xB219, + 9179: 0xB220, + 9180: 0xB234, + 9181: 0xB23C, + 9182: 0xB258, + 9183: 0xB25C, + 9184: 0xB260, + 9185: 0xB268, + 9186: 0xB269, + 9187: 0xB274, + 9188: 0xB275, + 9189: 0xB27C, + 9190: 0xB284, + 9191: 0xB285, + 9192: 0xB289, + 9193: 0xB290, + 9194: 0xB291, + 9195: 0xB294, + 9196: 0xB298, + 9197: 0xB299, + 9198: 0xB29A, + 9199: 0xB2A0, + 9200: 0xB2A1, + 9201: 0xB2A3, + 9202: 0xB2A5, + 9203: 0xB2A6, + 9204: 0xB2AA, + 9205: 0xB2AC, + 9206: 0xB2B0, + 9207: 0xB2B4, + 9208: 0xB2C8, + 9209: 0xB2C9, + 9210: 0xB2CC, + 9211: 0xB2D0, + 9212: 0xB2D2, + 9213: 0xB2D8, + 9214: 0xB2D9, + 9215: 0xB2DB, + 9216: 0xB2DD, + 9217: 0xB2E2, + 9218: 0xB2E4, + 9219: 0xB2E5, + 9220: 0xB2E6, + 9221: 0xB2E8, + 9222: 0xB2EB, + 9223: 0xB2EC, + 9224: 0xB2ED, + 9225: 0xB2EE, + 9226: 0xB2EF, + 9227: 0xB2F3, + 9228: 0xB2F4, + 9229: 0xB2F5, + 9230: 0xB2F7, + 9231: 0xB2F8, + 9232: 0xB2F9, + 9233: 0xB2FA, + 9234: 0xB2FB, + 9235: 0xB2FF, + 9236: 0xB300, + 9237: 0xB301, + 9238: 0xB304, + 9239: 0xB308, + 9240: 0xB310, + 9241: 0xB311, + 9242: 0xB313, + 9243: 0xB314, + 9244: 0xB315, + 9245: 0xB31C, + 9246: 0xB354, + 9247: 0xB355, + 9248: 0xB356, + 9249: 0xB358, + 9250: 0xB35B, + 9251: 0xB35C, + 9252: 0xB35E, + 9253: 0xB35F, + 9254: 0xB364, + 9255: 0xB365, + 9256: 0xD095, + 9257: 0xD096, + 9258: 0xD097, + 9259: 0xD098, + 9260: 0xD099, + 9261: 0xD09A, + 9262: 0xD09B, + 9263: 0xD09C, + 9264: 0xD09D, + 9265: 0xD09E, + 9266: 0xD09F, + 9267: 0xD0A0, + 9268: 0xD0A1, + 9269: 0xD0A2, + 9270: 0xD0A3, + 9271: 0xD0A6, + 9272: 0xD0A7, + 9273: 0xD0A9, + 9274: 0xD0AA, + 9275: 0xD0AB, + 9276: 0xD0AD, + 9277: 0xD0AE, + 9278: 0xD0AF, + 9279: 0xD0B0, + 9280: 0xD0B1, + 9281: 0xD0B2, + 9282: 0xD0B3, + 9283: 0xD0B6, + 9284: 0xD0B8, + 9285: 0xD0BA, + 9286: 0xD0BB, + 9287: 0xD0BC, + 9288: 0xD0BD, + 9289: 0xD0BE, + 9290: 0xD0BF, + 9291: 0xD0C2, + 9292: 0xD0C3, + 9293: 0xD0C5, + 9294: 0xD0C6, + 9295: 0xD0C7, + 9296: 0xD0CA, + 9297: 0xD0CB, + 9298: 0xD0CC, + 9299: 0xD0CD, + 9300: 0xD0CE, + 9301: 0xD0CF, + 9302: 0xD0D2, + 9303: 0xD0D6, + 9304: 0xD0D7, + 9305: 0xD0D8, + 9306: 0xD0D9, + 9307: 0xD0DA, + 9308: 0xD0DB, + 9309: 0xD0DE, + 9310: 0xD0DF, + 9311: 0xD0E1, + 9312: 0xD0E2, + 9313: 0xD0E3, + 9314: 0xD0E5, + 9315: 0xD0E6, + 9316: 0xD0E7, + 9317: 0xD0E8, + 9318: 0xD0E9, + 9319: 0xD0EA, + 9320: 0xD0EB, + 9321: 0xD0EE, + 9322: 0xD0F2, + 9323: 0xD0F3, + 9324: 0xD0F4, + 9325: 0xD0F5, + 9326: 0xD0F6, + 9327: 0xD0F7, + 9328: 0xD0F9, + 9329: 0xD0FA, + 9330: 0xD0FB, + 9331: 0xD0FC, + 9332: 0xD0FD, + 9333: 0xD0FE, + 9334: 0xD0FF, + 9335: 0xD100, + 9336: 0xD101, + 9337: 0xD102, + 9338: 0xD103, + 9339: 0xD104, + 9340: 0xB367, + 9341: 0xB369, + 9342: 0xB36B, + 9343: 0xB36E, + 9344: 0xB370, + 9345: 0xB371, + 9346: 0xB374, + 9347: 0xB378, + 9348: 0xB380, + 9349: 0xB381, + 9350: 0xB383, + 9351: 0xB384, + 9352: 0xB385, + 9353: 0xB38C, + 9354: 0xB390, + 9355: 0xB394, + 9356: 0xB3A0, + 9357: 0xB3A1, + 9358: 0xB3A8, + 9359: 0xB3AC, + 9360: 0xB3C4, + 9361: 0xB3C5, + 9362: 0xB3C8, + 9363: 0xB3CB, + 9364: 0xB3CC, + 9365: 0xB3CE, + 9366: 0xB3D0, + 9367: 0xB3D4, + 9368: 0xB3D5, + 9369: 0xB3D7, + 9370: 0xB3D9, + 9371: 0xB3DB, + 9372: 0xB3DD, + 9373: 0xB3E0, + 9374: 0xB3E4, + 9375: 0xB3E8, + 9376: 0xB3FC, + 9377: 0xB410, + 9378: 0xB418, + 9379: 0xB41C, + 9380: 0xB420, + 9381: 0xB428, + 9382: 0xB429, + 9383: 0xB42B, + 9384: 0xB434, + 9385: 0xB450, + 9386: 0xB451, + 9387: 0xB454, + 9388: 0xB458, + 9389: 0xB460, + 9390: 0xB461, + 9391: 0xB463, + 9392: 0xB465, + 9393: 0xB46C, + 9394: 0xB480, + 9395: 0xB488, + 9396: 0xB49D, + 9397: 0xB4A4, + 9398: 0xB4A8, + 9399: 0xB4AC, + 9400: 0xB4B5, + 9401: 0xB4B7, + 9402: 0xB4B9, + 9403: 0xB4C0, + 9404: 0xB4C4, + 9405: 0xB4C8, + 9406: 0xB4D0, + 9407: 0xB4D5, + 9408: 0xB4DC, + 9409: 0xB4DD, + 9410: 0xB4E0, + 9411: 0xB4E3, + 9412: 0xB4E4, + 9413: 0xB4E6, + 9414: 0xB4EC, + 9415: 0xB4ED, + 9416: 0xB4EF, + 9417: 0xB4F1, + 9418: 0xB4F8, + 9419: 0xB514, + 9420: 0xB515, + 9421: 0xB518, + 9422: 0xB51B, + 9423: 0xB51C, + 9424: 0xB524, + 9425: 0xB525, + 9426: 0xB527, + 9427: 0xB528, + 9428: 0xB529, + 9429: 0xB52A, + 9430: 0xB530, + 9431: 0xB531, + 9432: 0xB534, + 9433: 0xB538, + 9434: 0xD105, + 9435: 0xD106, + 9436: 0xD107, + 9437: 0xD108, + 9438: 0xD109, + 9439: 0xD10A, + 9440: 0xD10B, + 9441: 0xD10C, + 9442: 0xD10E, + 9443: 0xD10F, + 9444: 0xD110, + 9445: 0xD111, + 9446: 0xD112, + 9447: 0xD113, + 9448: 0xD114, + 9449: 0xD115, + 9450: 0xD116, + 9451: 0xD117, + 9452: 0xD118, + 9453: 0xD119, + 9454: 0xD11A, + 9455: 0xD11B, + 9456: 0xD11C, + 9457: 0xD11D, + 9458: 0xD11E, + 9459: 0xD11F, + 9460: 0xD120, + 9461: 0xD121, + 9462: 0xD122, + 9463: 0xD123, + 9464: 0xD124, + 9465: 0xD125, + 9466: 0xD126, + 9467: 0xD127, + 9468: 0xD128, + 9469: 0xD129, + 9470: 0xD12A, + 9471: 0xD12B, + 9472: 0xD12C, + 9473: 0xD12D, + 9474: 0xD12E, + 9475: 0xD12F, + 9476: 0xD132, + 9477: 0xD133, + 9478: 0xD135, + 9479: 0xD136, + 9480: 0xD137, + 9481: 0xD139, + 9482: 0xD13B, + 9483: 0xD13C, + 9484: 0xD13D, + 9485: 0xD13E, + 9486: 0xD13F, + 9487: 0xD142, + 9488: 0xD146, + 9489: 0xD147, + 9490: 0xD148, + 9491: 0xD149, + 9492: 0xD14A, + 9493: 0xD14B, + 9494: 0xD14E, + 9495: 0xD14F, + 9496: 0xD151, + 9497: 0xD152, + 9498: 0xD153, + 9499: 0xD155, + 9500: 0xD156, + 9501: 0xD157, + 9502: 0xD158, + 9503: 0xD159, + 9504: 0xD15A, + 9505: 0xD15B, + 9506: 0xD15E, + 9507: 0xD160, + 9508: 0xD162, + 9509: 0xD163, + 9510: 0xD164, + 9511: 0xD165, + 9512: 0xD166, + 9513: 0xD167, + 9514: 0xD169, + 9515: 0xD16A, + 9516: 0xD16B, + 9517: 0xD16D, + 9518: 0xB540, + 9519: 0xB541, + 9520: 0xB543, + 9521: 0xB544, + 9522: 0xB545, + 9523: 0xB54B, + 9524: 0xB54C, + 9525: 0xB54D, + 9526: 0xB550, + 9527: 0xB554, + 9528: 0xB55C, + 9529: 0xB55D, + 9530: 0xB55F, + 9531: 0xB560, + 9532: 0xB561, + 9533: 0xB5A0, + 9534: 0xB5A1, + 9535: 0xB5A4, + 9536: 0xB5A8, + 9537: 0xB5AA, + 9538: 0xB5AB, + 9539: 0xB5B0, + 9540: 0xB5B1, + 9541: 0xB5B3, + 9542: 0xB5B4, + 9543: 0xB5B5, + 9544: 0xB5BB, + 9545: 0xB5BC, + 9546: 0xB5BD, + 9547: 0xB5C0, + 9548: 0xB5C4, + 9549: 0xB5CC, + 9550: 0xB5CD, + 9551: 0xB5CF, + 9552: 0xB5D0, + 9553: 0xB5D1, + 9554: 0xB5D8, + 9555: 0xB5EC, + 9556: 0xB610, + 9557: 0xB611, + 9558: 0xB614, + 9559: 0xB618, + 9560: 0xB625, + 9561: 0xB62C, + 9562: 0xB634, + 9563: 0xB648, + 9564: 0xB664, + 9565: 0xB668, + 9566: 0xB69C, + 9567: 0xB69D, + 9568: 0xB6A0, + 9569: 0xB6A4, + 9570: 0xB6AB, + 9571: 0xB6AC, + 9572: 0xB6B1, + 9573: 0xB6D4, + 9574: 0xB6F0, + 9575: 0xB6F4, + 9576: 0xB6F8, + 9577: 0xB700, + 9578: 0xB701, + 9579: 0xB705, + 9580: 0xB728, + 9581: 0xB729, + 9582: 0xB72C, + 9583: 0xB72F, + 9584: 0xB730, + 9585: 0xB738, + 9586: 0xB739, + 9587: 0xB73B, + 9588: 0xB744, + 9589: 0xB748, + 9590: 0xB74C, + 9591: 0xB754, + 9592: 0xB755, + 9593: 0xB760, + 9594: 0xB764, + 9595: 0xB768, + 9596: 0xB770, + 9597: 0xB771, + 9598: 0xB773, + 9599: 0xB775, + 9600: 0xB77C, + 9601: 0xB77D, + 9602: 0xB780, + 9603: 0xB784, + 9604: 0xB78C, + 9605: 0xB78D, + 9606: 0xB78F, + 9607: 0xB790, + 9608: 0xB791, + 9609: 0xB792, + 9610: 0xB796, + 9611: 0xB797, + 9612: 0xD16E, + 9613: 0xD16F, + 9614: 0xD170, + 9615: 0xD171, + 9616: 0xD172, + 9617: 0xD173, + 9618: 0xD174, + 9619: 0xD175, + 9620: 0xD176, + 9621: 0xD177, + 9622: 0xD178, + 9623: 0xD179, + 9624: 0xD17A, + 9625: 0xD17B, + 9626: 0xD17D, + 9627: 0xD17E, + 9628: 0xD17F, + 9629: 0xD180, + 9630: 0xD181, + 9631: 0xD182, + 9632: 0xD183, + 9633: 0xD185, + 9634: 0xD186, + 9635: 0xD187, + 9636: 0xD189, + 9637: 0xD18A, + 9638: 0xD18B, + 9639: 0xD18C, + 9640: 0xD18D, + 9641: 0xD18E, + 9642: 0xD18F, + 9643: 0xD190, + 9644: 0xD191, + 9645: 0xD192, + 9646: 0xD193, + 9647: 0xD194, + 9648: 0xD195, + 9649: 0xD196, + 9650: 0xD197, + 9651: 0xD198, + 9652: 0xD199, + 9653: 0xD19A, + 9654: 0xD19B, + 9655: 0xD19C, + 9656: 0xD19D, + 9657: 0xD19E, + 9658: 0xD19F, + 9659: 0xD1A2, + 9660: 0xD1A3, + 9661: 0xD1A5, + 9662: 0xD1A6, + 9663: 0xD1A7, + 9664: 0xD1A9, + 9665: 0xD1AA, + 9666: 0xD1AB, + 9667: 0xD1AC, + 9668: 0xD1AD, + 9669: 0xD1AE, + 9670: 0xD1AF, + 9671: 0xD1B2, + 9672: 0xD1B4, + 9673: 0xD1B6, + 9674: 0xD1B7, + 9675: 0xD1B8, + 9676: 0xD1B9, + 9677: 0xD1BB, + 9678: 0xD1BD, + 9679: 0xD1BE, + 9680: 0xD1BF, + 9681: 0xD1C1, + 9682: 0xD1C2, + 9683: 0xD1C3, + 9684: 0xD1C4, + 9685: 0xD1C5, + 9686: 0xD1C6, + 9687: 0xD1C7, + 9688: 0xD1C8, + 9689: 0xD1C9, + 9690: 0xD1CA, + 9691: 0xD1CB, + 9692: 0xD1CC, + 9693: 0xD1CD, + 9694: 0xD1CE, + 9695: 0xD1CF, + 9696: 0xB798, + 9697: 0xB799, + 9698: 0xB79C, + 9699: 0xB7A0, + 9700: 0xB7A8, + 9701: 0xB7A9, + 9702: 0xB7AB, + 9703: 0xB7AC, + 9704: 0xB7AD, + 9705: 0xB7B4, + 9706: 0xB7B5, + 9707: 0xB7B8, + 9708: 0xB7C7, + 9709: 0xB7C9, + 9710: 0xB7EC, + 9711: 0xB7ED, + 9712: 0xB7F0, + 9713: 0xB7F4, + 9714: 0xB7FC, + 9715: 0xB7FD, + 9716: 0xB7FF, + 9717: 0xB800, + 9718: 0xB801, + 9719: 0xB807, + 9720: 0xB808, + 9721: 0xB809, + 9722: 0xB80C, + 9723: 0xB810, + 9724: 0xB818, + 9725: 0xB819, + 9726: 0xB81B, + 9727: 0xB81D, + 9728: 0xB824, + 9729: 0xB825, + 9730: 0xB828, + 9731: 0xB82C, + 9732: 0xB834, + 9733: 0xB835, + 9734: 0xB837, + 9735: 0xB838, + 9736: 0xB839, + 9737: 0xB840, + 9738: 0xB844, + 9739: 0xB851, + 9740: 0xB853, + 9741: 0xB85C, + 9742: 0xB85D, + 9743: 0xB860, + 9744: 0xB864, + 9745: 0xB86C, + 9746: 0xB86D, + 9747: 0xB86F, + 9748: 0xB871, + 9749: 0xB878, + 9750: 0xB87C, + 9751: 0xB88D, + 9752: 0xB8A8, + 9753: 0xB8B0, + 9754: 0xB8B4, + 9755: 0xB8B8, + 9756: 0xB8C0, + 9757: 0xB8C1, + 9758: 0xB8C3, + 9759: 0xB8C5, + 9760: 0xB8CC, + 9761: 0xB8D0, + 9762: 0xB8D4, + 9763: 0xB8DD, + 9764: 0xB8DF, + 9765: 0xB8E1, + 9766: 0xB8E8, + 9767: 0xB8E9, + 9768: 0xB8EC, + 9769: 0xB8F0, + 9770: 0xB8F8, + 9771: 0xB8F9, + 9772: 0xB8FB, + 9773: 0xB8FD, + 9774: 0xB904, + 9775: 0xB918, + 9776: 0xB920, + 9777: 0xB93C, + 9778: 0xB93D, + 9779: 0xB940, + 9780: 0xB944, + 9781: 0xB94C, + 9782: 0xB94F, + 9783: 0xB951, + 9784: 0xB958, + 9785: 0xB959, + 9786: 0xB95C, + 9787: 0xB960, + 9788: 0xB968, + 9789: 0xB969, + 9790: 0xD1D0, + 9791: 0xD1D1, + 9792: 0xD1D2, + 9793: 0xD1D3, + 9794: 0xD1D4, + 9795: 0xD1D5, + 9796: 0xD1D6, + 9797: 0xD1D7, + 9798: 0xD1D9, + 9799: 0xD1DA, + 9800: 0xD1DB, + 9801: 0xD1DC, + 9802: 0xD1DD, + 9803: 0xD1DE, + 9804: 0xD1DF, + 9805: 0xD1E0, + 9806: 0xD1E1, + 9807: 0xD1E2, + 9808: 0xD1E3, + 9809: 0xD1E4, + 9810: 0xD1E5, + 9811: 0xD1E6, + 9812: 0xD1E7, + 9813: 0xD1E8, + 9814: 0xD1E9, + 9815: 0xD1EA, + 9816: 0xD1EB, + 9817: 0xD1EC, + 9818: 0xD1ED, + 9819: 0xD1EE, + 9820: 0xD1EF, + 9821: 0xD1F0, + 9822: 0xD1F1, + 9823: 0xD1F2, + 9824: 0xD1F3, + 9825: 0xD1F5, + 9826: 0xD1F6, + 9827: 0xD1F7, + 9828: 0xD1F9, + 9829: 0xD1FA, + 9830: 0xD1FB, + 9831: 0xD1FC, + 9832: 0xD1FD, + 9833: 0xD1FE, + 9834: 0xD1FF, + 9835: 0xD200, + 9836: 0xD201, + 9837: 0xD202, + 9838: 0xD203, + 9839: 0xD204, + 9840: 0xD205, + 9841: 0xD206, + 9842: 0xD208, + 9843: 0xD20A, + 9844: 0xD20B, + 9845: 0xD20C, + 9846: 0xD20D, + 9847: 0xD20E, + 9848: 0xD20F, + 9849: 0xD211, + 9850: 0xD212, + 9851: 0xD213, + 9852: 0xD214, + 9853: 0xD215, + 9854: 0xD216, + 9855: 0xD217, + 9856: 0xD218, + 9857: 0xD219, + 9858: 0xD21A, + 9859: 0xD21B, + 9860: 0xD21C, + 9861: 0xD21D, + 9862: 0xD21E, + 9863: 0xD21F, + 9864: 0xD220, + 9865: 0xD221, + 9866: 0xD222, + 9867: 0xD223, + 9868: 0xD224, + 9869: 0xD225, + 9870: 0xD226, + 9871: 0xD227, + 9872: 0xD228, + 9873: 0xD229, + 9874: 0xB96B, + 9875: 0xB96D, + 9876: 0xB974, + 9877: 0xB975, + 9878: 0xB978, + 9879: 0xB97C, + 9880: 0xB984, + 9881: 0xB985, + 9882: 0xB987, + 9883: 0xB989, + 9884: 0xB98A, + 9885: 0xB98D, + 9886: 0xB98E, + 9887: 0xB9AC, + 9888: 0xB9AD, + 9889: 0xB9B0, + 9890: 0xB9B4, + 9891: 0xB9BC, + 9892: 0xB9BD, + 9893: 0xB9BF, + 9894: 0xB9C1, + 9895: 0xB9C8, + 9896: 0xB9C9, + 9897: 0xB9CC, + 9898: 0xB9CE, + 9899: 0xB9CF, + 9900: 0xB9D0, + 9901: 0xB9D1, + 9902: 0xB9D2, + 9903: 0xB9D8, + 9904: 0xB9D9, + 9905: 0xB9DB, + 9906: 0xB9DD, + 9907: 0xB9DE, + 9908: 0xB9E1, + 9909: 0xB9E3, + 9910: 0xB9E4, + 9911: 0xB9E5, + 9912: 0xB9E8, + 9913: 0xB9EC, + 9914: 0xB9F4, + 9915: 0xB9F5, + 9916: 0xB9F7, + 9917: 0xB9F8, + 9918: 0xB9F9, + 9919: 0xB9FA, + 9920: 0xBA00, + 9921: 0xBA01, + 9922: 0xBA08, + 9923: 0xBA15, + 9924: 0xBA38, + 9925: 0xBA39, + 9926: 0xBA3C, + 9927: 0xBA40, + 9928: 0xBA42, + 9929: 0xBA48, + 9930: 0xBA49, + 9931: 0xBA4B, + 9932: 0xBA4D, + 9933: 0xBA4E, + 9934: 0xBA53, + 9935: 0xBA54, + 9936: 0xBA55, + 9937: 0xBA58, + 9938: 0xBA5C, + 9939: 0xBA64, + 9940: 0xBA65, + 9941: 0xBA67, + 9942: 0xBA68, + 9943: 0xBA69, + 9944: 0xBA70, + 9945: 0xBA71, + 9946: 0xBA74, + 9947: 0xBA78, + 9948: 0xBA83, + 9949: 0xBA84, + 9950: 0xBA85, + 9951: 0xBA87, + 9952: 0xBA8C, + 9953: 0xBAA8, + 9954: 0xBAA9, + 9955: 0xBAAB, + 9956: 0xBAAC, + 9957: 0xBAB0, + 9958: 0xBAB2, + 9959: 0xBAB8, + 9960: 0xBAB9, + 9961: 0xBABB, + 9962: 0xBABD, + 9963: 0xBAC4, + 9964: 0xBAC8, + 9965: 0xBAD8, + 9966: 0xBAD9, + 9967: 0xBAFC, + 9968: 0xD22A, + 9969: 0xD22B, + 9970: 0xD22E, + 9971: 0xD22F, + 9972: 0xD231, + 9973: 0xD232, + 9974: 0xD233, + 9975: 0xD235, + 9976: 0xD236, + 9977: 0xD237, + 9978: 0xD238, + 9979: 0xD239, + 9980: 0xD23A, + 9981: 0xD23B, + 9982: 0xD23E, + 9983: 0xD240, + 9984: 0xD242, + 9985: 0xD243, + 9986: 0xD244, + 9987: 0xD245, + 9988: 0xD246, + 9989: 0xD247, + 9990: 0xD249, + 9991: 0xD24A, + 9992: 0xD24B, + 9993: 0xD24C, + 9994: 0xD24D, + 9995: 0xD24E, + 9996: 0xD24F, + 9997: 0xD250, + 9998: 0xD251, + 9999: 0xD252, + 10000: 0xD253, + 10001: 0xD254, + 10002: 0xD255, + 10003: 0xD256, + 10004: 0xD257, + 10005: 0xD258, + 10006: 0xD259, + 10007: 0xD25A, + 10008: 0xD25B, + 10009: 0xD25D, + 10010: 0xD25E, + 10011: 0xD25F, + 10012: 0xD260, + 10013: 0xD261, + 10014: 0xD262, + 10015: 0xD263, + 10016: 0xD265, + 10017: 0xD266, + 10018: 0xD267, + 10019: 0xD268, + 10020: 0xD269, + 10021: 0xD26A, + 10022: 0xD26B, + 10023: 0xD26C, + 10024: 0xD26D, + 10025: 0xD26E, + 10026: 0xD26F, + 10027: 0xD270, + 10028: 0xD271, + 10029: 0xD272, + 10030: 0xD273, + 10031: 0xD274, + 10032: 0xD275, + 10033: 0xD276, + 10034: 0xD277, + 10035: 0xD278, + 10036: 0xD279, + 10037: 0xD27A, + 10038: 0xD27B, + 10039: 0xD27C, + 10040: 0xD27D, + 10041: 0xD27E, + 10042: 0xD27F, + 10043: 0xD282, + 10044: 0xD283, + 10045: 0xD285, + 10046: 0xD286, + 10047: 0xD287, + 10048: 0xD289, + 10049: 0xD28A, + 10050: 0xD28B, + 10051: 0xD28C, + 10052: 0xBB00, + 10053: 0xBB04, + 10054: 0xBB0D, + 10055: 0xBB0F, + 10056: 0xBB11, + 10057: 0xBB18, + 10058: 0xBB1C, + 10059: 0xBB20, + 10060: 0xBB29, + 10061: 0xBB2B, + 10062: 0xBB34, + 10063: 0xBB35, + 10064: 0xBB36, + 10065: 0xBB38, + 10066: 0xBB3B, + 10067: 0xBB3C, + 10068: 0xBB3D, + 10069: 0xBB3E, + 10070: 0xBB44, + 10071: 0xBB45, + 10072: 0xBB47, + 10073: 0xBB49, + 10074: 0xBB4D, + 10075: 0xBB4F, + 10076: 0xBB50, + 10077: 0xBB54, + 10078: 0xBB58, + 10079: 0xBB61, + 10080: 0xBB63, + 10081: 0xBB6C, + 10082: 0xBB88, + 10083: 0xBB8C, + 10084: 0xBB90, + 10085: 0xBBA4, + 10086: 0xBBA8, + 10087: 0xBBAC, + 10088: 0xBBB4, + 10089: 0xBBB7, + 10090: 0xBBC0, + 10091: 0xBBC4, + 10092: 0xBBC8, + 10093: 0xBBD0, + 10094: 0xBBD3, + 10095: 0xBBF8, + 10096: 0xBBF9, + 10097: 0xBBFC, + 10098: 0xBBFF, + 10099: 0xBC00, + 10100: 0xBC02, + 10101: 0xBC08, + 10102: 0xBC09, + 10103: 0xBC0B, + 10104: 0xBC0C, + 10105: 0xBC0D, + 10106: 0xBC0F, + 10107: 0xBC11, + 10108: 0xBC14, + 10109: 0xBC15, + 10110: 0xBC16, + 10111: 0xBC17, + 10112: 0xBC18, + 10113: 0xBC1B, + 10114: 0xBC1C, + 10115: 0xBC1D, + 10116: 0xBC1E, + 10117: 0xBC1F, + 10118: 0xBC24, + 10119: 0xBC25, + 10120: 0xBC27, + 10121: 0xBC29, + 10122: 0xBC2D, + 10123: 0xBC30, + 10124: 0xBC31, + 10125: 0xBC34, + 10126: 0xBC38, + 10127: 0xBC40, + 10128: 0xBC41, + 10129: 0xBC43, + 10130: 0xBC44, + 10131: 0xBC45, + 10132: 0xBC49, + 10133: 0xBC4C, + 10134: 0xBC4D, + 10135: 0xBC50, + 10136: 0xBC5D, + 10137: 0xBC84, + 10138: 0xBC85, + 10139: 0xBC88, + 10140: 0xBC8B, + 10141: 0xBC8C, + 10142: 0xBC8E, + 10143: 0xBC94, + 10144: 0xBC95, + 10145: 0xBC97, + 10146: 0xD28D, + 10147: 0xD28E, + 10148: 0xD28F, + 10149: 0xD292, + 10150: 0xD293, + 10151: 0xD294, + 10152: 0xD296, + 10153: 0xD297, + 10154: 0xD298, + 10155: 0xD299, + 10156: 0xD29A, + 10157: 0xD29B, + 10158: 0xD29D, + 10159: 0xD29E, + 10160: 0xD29F, + 10161: 0xD2A1, + 10162: 0xD2A2, + 10163: 0xD2A3, + 10164: 0xD2A5, + 10165: 0xD2A6, + 10166: 0xD2A7, + 10167: 0xD2A8, + 10168: 0xD2A9, + 10169: 0xD2AA, + 10170: 0xD2AB, + 10171: 0xD2AD, + 10172: 0xD2AE, + 10173: 0xD2AF, + 10174: 0xD2B0, + 10175: 0xD2B2, + 10176: 0xD2B3, + 10177: 0xD2B4, + 10178: 0xD2B5, + 10179: 0xD2B6, + 10180: 0xD2B7, + 10181: 0xD2BA, + 10182: 0xD2BB, + 10183: 0xD2BD, + 10184: 0xD2BE, + 10185: 0xD2C1, + 10186: 0xD2C3, + 10187: 0xD2C4, + 10188: 0xD2C5, + 10189: 0xD2C6, + 10190: 0xD2C7, + 10191: 0xD2CA, + 10192: 0xD2CC, + 10193: 0xD2CD, + 10194: 0xD2CE, + 10195: 0xD2CF, + 10196: 0xD2D0, + 10197: 0xD2D1, + 10198: 0xD2D2, + 10199: 0xD2D3, + 10200: 0xD2D5, + 10201: 0xD2D6, + 10202: 0xD2D7, + 10203: 0xD2D9, + 10204: 0xD2DA, + 10205: 0xD2DB, + 10206: 0xD2DD, + 10207: 0xD2DE, + 10208: 0xD2DF, + 10209: 0xD2E0, + 10210: 0xD2E1, + 10211: 0xD2E2, + 10212: 0xD2E3, + 10213: 0xD2E6, + 10214: 0xD2E7, + 10215: 0xD2E8, + 10216: 0xD2E9, + 10217: 0xD2EA, + 10218: 0xD2EB, + 10219: 0xD2EC, + 10220: 0xD2ED, + 10221: 0xD2EE, + 10222: 0xD2EF, + 10223: 0xD2F2, + 10224: 0xD2F3, + 10225: 0xD2F5, + 10226: 0xD2F6, + 10227: 0xD2F7, + 10228: 0xD2F9, + 10229: 0xD2FA, + 10230: 0xBC99, + 10231: 0xBC9A, + 10232: 0xBCA0, + 10233: 0xBCA1, + 10234: 0xBCA4, + 10235: 0xBCA7, + 10236: 0xBCA8, + 10237: 0xBCB0, + 10238: 0xBCB1, + 10239: 0xBCB3, + 10240: 0xBCB4, + 10241: 0xBCB5, + 10242: 0xBCBC, + 10243: 0xBCBD, + 10244: 0xBCC0, + 10245: 0xBCC4, + 10246: 0xBCCD, + 10247: 0xBCCF, + 10248: 0xBCD0, + 10249: 0xBCD1, + 10250: 0xBCD5, + 10251: 0xBCD8, + 10252: 0xBCDC, + 10253: 0xBCF4, + 10254: 0xBCF5, + 10255: 0xBCF6, + 10256: 0xBCF8, + 10257: 0xBCFC, + 10258: 0xBD04, + 10259: 0xBD05, + 10260: 0xBD07, + 10261: 0xBD09, + 10262: 0xBD10, + 10263: 0xBD14, + 10264: 0xBD24, + 10265: 0xBD2C, + 10266: 0xBD40, + 10267: 0xBD48, + 10268: 0xBD49, + 10269: 0xBD4C, + 10270: 0xBD50, + 10271: 0xBD58, + 10272: 0xBD59, + 10273: 0xBD64, + 10274: 0xBD68, + 10275: 0xBD80, + 10276: 0xBD81, + 10277: 0xBD84, + 10278: 0xBD87, + 10279: 0xBD88, + 10280: 0xBD89, + 10281: 0xBD8A, + 10282: 0xBD90, + 10283: 0xBD91, + 10284: 0xBD93, + 10285: 0xBD95, + 10286: 0xBD99, + 10287: 0xBD9A, + 10288: 0xBD9C, + 10289: 0xBDA4, + 10290: 0xBDB0, + 10291: 0xBDB8, + 10292: 0xBDD4, + 10293: 0xBDD5, + 10294: 0xBDD8, + 10295: 0xBDDC, + 10296: 0xBDE9, + 10297: 0xBDF0, + 10298: 0xBDF4, + 10299: 0xBDF8, + 10300: 0xBE00, + 10301: 0xBE03, + 10302: 0xBE05, + 10303: 0xBE0C, + 10304: 0xBE0D, + 10305: 0xBE10, + 10306: 0xBE14, + 10307: 0xBE1C, + 10308: 0xBE1D, + 10309: 0xBE1F, + 10310: 0xBE44, + 10311: 0xBE45, + 10312: 0xBE48, + 10313: 0xBE4C, + 10314: 0xBE4E, + 10315: 0xBE54, + 10316: 0xBE55, + 10317: 0xBE57, + 10318: 0xBE59, + 10319: 0xBE5A, + 10320: 0xBE5B, + 10321: 0xBE60, + 10322: 0xBE61, + 10323: 0xBE64, + 10324: 0xD2FB, + 10325: 0xD2FC, + 10326: 0xD2FD, + 10327: 0xD2FE, + 10328: 0xD2FF, + 10329: 0xD302, + 10330: 0xD304, + 10331: 0xD306, + 10332: 0xD307, + 10333: 0xD308, + 10334: 0xD309, + 10335: 0xD30A, + 10336: 0xD30B, + 10337: 0xD30F, + 10338: 0xD311, + 10339: 0xD312, + 10340: 0xD313, + 10341: 0xD315, + 10342: 0xD317, + 10343: 0xD318, + 10344: 0xD319, + 10345: 0xD31A, + 10346: 0xD31B, + 10347: 0xD31E, + 10348: 0xD322, + 10349: 0xD323, + 10350: 0xD324, + 10351: 0xD326, + 10352: 0xD327, + 10353: 0xD32A, + 10354: 0xD32B, + 10355: 0xD32D, + 10356: 0xD32E, + 10357: 0xD32F, + 10358: 0xD331, + 10359: 0xD332, + 10360: 0xD333, + 10361: 0xD334, + 10362: 0xD335, + 10363: 0xD336, + 10364: 0xD337, + 10365: 0xD33A, + 10366: 0xD33E, + 10367: 0xD33F, + 10368: 0xD340, + 10369: 0xD341, + 10370: 0xD342, + 10371: 0xD343, + 10372: 0xD346, + 10373: 0xD347, + 10374: 0xD348, + 10375: 0xD349, + 10376: 0xD34A, + 10377: 0xD34B, + 10378: 0xD34C, + 10379: 0xD34D, + 10380: 0xD34E, + 10381: 0xD34F, + 10382: 0xD350, + 10383: 0xD351, + 10384: 0xD352, + 10385: 0xD353, + 10386: 0xD354, + 10387: 0xD355, + 10388: 0xD356, + 10389: 0xD357, + 10390: 0xD358, + 10391: 0xD359, + 10392: 0xD35A, + 10393: 0xD35B, + 10394: 0xD35C, + 10395: 0xD35D, + 10396: 0xD35E, + 10397: 0xD35F, + 10398: 0xD360, + 10399: 0xD361, + 10400: 0xD362, + 10401: 0xD363, + 10402: 0xD364, + 10403: 0xD365, + 10404: 0xD366, + 10405: 0xD367, + 10406: 0xD368, + 10407: 0xD369, + 10408: 0xBE68, + 10409: 0xBE6A, + 10410: 0xBE70, + 10411: 0xBE71, + 10412: 0xBE73, + 10413: 0xBE74, + 10414: 0xBE75, + 10415: 0xBE7B, + 10416: 0xBE7C, + 10417: 0xBE7D, + 10418: 0xBE80, + 10419: 0xBE84, + 10420: 0xBE8C, + 10421: 0xBE8D, + 10422: 0xBE8F, + 10423: 0xBE90, + 10424: 0xBE91, + 10425: 0xBE98, + 10426: 0xBE99, + 10427: 0xBEA8, + 10428: 0xBED0, + 10429: 0xBED1, + 10430: 0xBED4, + 10431: 0xBED7, + 10432: 0xBED8, + 10433: 0xBEE0, + 10434: 0xBEE3, + 10435: 0xBEE4, + 10436: 0xBEE5, + 10437: 0xBEEC, + 10438: 0xBF01, + 10439: 0xBF08, + 10440: 0xBF09, + 10441: 0xBF18, + 10442: 0xBF19, + 10443: 0xBF1B, + 10444: 0xBF1C, + 10445: 0xBF1D, + 10446: 0xBF40, + 10447: 0xBF41, + 10448: 0xBF44, + 10449: 0xBF48, + 10450: 0xBF50, + 10451: 0xBF51, + 10452: 0xBF55, + 10453: 0xBF94, + 10454: 0xBFB0, + 10455: 0xBFC5, + 10456: 0xBFCC, + 10457: 0xBFCD, + 10458: 0xBFD0, + 10459: 0xBFD4, + 10460: 0xBFDC, + 10461: 0xBFDF, + 10462: 0xBFE1, + 10463: 0xC03C, + 10464: 0xC051, + 10465: 0xC058, + 10466: 0xC05C, + 10467: 0xC060, + 10468: 0xC068, + 10469: 0xC069, + 10470: 0xC090, + 10471: 0xC091, + 10472: 0xC094, + 10473: 0xC098, + 10474: 0xC0A0, + 10475: 0xC0A1, + 10476: 0xC0A3, + 10477: 0xC0A5, + 10478: 0xC0AC, + 10479: 0xC0AD, + 10480: 0xC0AF, + 10481: 0xC0B0, + 10482: 0xC0B3, + 10483: 0xC0B4, + 10484: 0xC0B5, + 10485: 0xC0B6, + 10486: 0xC0BC, + 10487: 0xC0BD, + 10488: 0xC0BF, + 10489: 0xC0C0, + 10490: 0xC0C1, + 10491: 0xC0C5, + 10492: 0xC0C8, + 10493: 0xC0C9, + 10494: 0xC0CC, + 10495: 0xC0D0, + 10496: 0xC0D8, + 10497: 0xC0D9, + 10498: 0xC0DB, + 10499: 0xC0DC, + 10500: 0xC0DD, + 10501: 0xC0E4, + 10502: 0xD36A, + 10503: 0xD36B, + 10504: 0xD36C, + 10505: 0xD36D, + 10506: 0xD36E, + 10507: 0xD36F, + 10508: 0xD370, + 10509: 0xD371, + 10510: 0xD372, + 10511: 0xD373, + 10512: 0xD374, + 10513: 0xD375, + 10514: 0xD376, + 10515: 0xD377, + 10516: 0xD378, + 10517: 0xD379, + 10518: 0xD37A, + 10519: 0xD37B, + 10520: 0xD37E, + 10521: 0xD37F, + 10522: 0xD381, + 10523: 0xD382, + 10524: 0xD383, + 10525: 0xD385, + 10526: 0xD386, + 10527: 0xD387, + 10528: 0xD388, + 10529: 0xD389, + 10530: 0xD38A, + 10531: 0xD38B, + 10532: 0xD38E, + 10533: 0xD392, + 10534: 0xD393, + 10535: 0xD394, + 10536: 0xD395, + 10537: 0xD396, + 10538: 0xD397, + 10539: 0xD39A, + 10540: 0xD39B, + 10541: 0xD39D, + 10542: 0xD39E, + 10543: 0xD39F, + 10544: 0xD3A1, + 10545: 0xD3A2, + 10546: 0xD3A3, + 10547: 0xD3A4, + 10548: 0xD3A5, + 10549: 0xD3A6, + 10550: 0xD3A7, + 10551: 0xD3AA, + 10552: 0xD3AC, + 10553: 0xD3AE, + 10554: 0xD3AF, + 10555: 0xD3B0, + 10556: 0xD3B1, + 10557: 0xD3B2, + 10558: 0xD3B3, + 10559: 0xD3B5, + 10560: 0xD3B6, + 10561: 0xD3B7, + 10562: 0xD3B9, + 10563: 0xD3BA, + 10564: 0xD3BB, + 10565: 0xD3BD, + 10566: 0xD3BE, + 10567: 0xD3BF, + 10568: 0xD3C0, + 10569: 0xD3C1, + 10570: 0xD3C2, + 10571: 0xD3C3, + 10572: 0xD3C6, + 10573: 0xD3C7, + 10574: 0xD3CA, + 10575: 0xD3CB, + 10576: 0xD3CC, + 10577: 0xD3CD, + 10578: 0xD3CE, + 10579: 0xD3CF, + 10580: 0xD3D1, + 10581: 0xD3D2, + 10582: 0xD3D3, + 10583: 0xD3D4, + 10584: 0xD3D5, + 10585: 0xD3D6, + 10586: 0xC0E5, + 10587: 0xC0E8, + 10588: 0xC0EC, + 10589: 0xC0F4, + 10590: 0xC0F5, + 10591: 0xC0F7, + 10592: 0xC0F9, + 10593: 0xC100, + 10594: 0xC104, + 10595: 0xC108, + 10596: 0xC110, + 10597: 0xC115, + 10598: 0xC11C, + 10599: 0xC11D, + 10600: 0xC11E, + 10601: 0xC11F, + 10602: 0xC120, + 10603: 0xC123, + 10604: 0xC124, + 10605: 0xC126, + 10606: 0xC127, + 10607: 0xC12C, + 10608: 0xC12D, + 10609: 0xC12F, + 10610: 0xC130, + 10611: 0xC131, + 10612: 0xC136, + 10613: 0xC138, + 10614: 0xC139, + 10615: 0xC13C, + 10616: 0xC140, + 10617: 0xC148, + 10618: 0xC149, + 10619: 0xC14B, + 10620: 0xC14C, + 10621: 0xC14D, + 10622: 0xC154, + 10623: 0xC155, + 10624: 0xC158, + 10625: 0xC15C, + 10626: 0xC164, + 10627: 0xC165, + 10628: 0xC167, + 10629: 0xC168, + 10630: 0xC169, + 10631: 0xC170, + 10632: 0xC174, + 10633: 0xC178, + 10634: 0xC185, + 10635: 0xC18C, + 10636: 0xC18D, + 10637: 0xC18E, + 10638: 0xC190, + 10639: 0xC194, + 10640: 0xC196, + 10641: 0xC19C, + 10642: 0xC19D, + 10643: 0xC19F, + 10644: 0xC1A1, + 10645: 0xC1A5, + 10646: 0xC1A8, + 10647: 0xC1A9, + 10648: 0xC1AC, + 10649: 0xC1B0, + 10650: 0xC1BD, + 10651: 0xC1C4, + 10652: 0xC1C8, + 10653: 0xC1CC, + 10654: 0xC1D4, + 10655: 0xC1D7, + 10656: 0xC1D8, + 10657: 0xC1E0, + 10658: 0xC1E4, + 10659: 0xC1E8, + 10660: 0xC1F0, + 10661: 0xC1F1, + 10662: 0xC1F3, + 10663: 0xC1FC, + 10664: 0xC1FD, + 10665: 0xC200, + 10666: 0xC204, + 10667: 0xC20C, + 10668: 0xC20D, + 10669: 0xC20F, + 10670: 0xC211, + 10671: 0xC218, + 10672: 0xC219, + 10673: 0xC21C, + 10674: 0xC21F, + 10675: 0xC220, + 10676: 0xC228, + 10677: 0xC229, + 10678: 0xC22B, + 10679: 0xC22D, + 10680: 0xD3D7, + 10681: 0xD3D9, + 10682: 0xD3DA, + 10683: 0xD3DB, + 10684: 0xD3DC, + 10685: 0xD3DD, + 10686: 0xD3DE, + 10687: 0xD3DF, + 10688: 0xD3E0, + 10689: 0xD3E2, + 10690: 0xD3E4, + 10691: 0xD3E5, + 10692: 0xD3E6, + 10693: 0xD3E7, + 10694: 0xD3E8, + 10695: 0xD3E9, + 10696: 0xD3EA, + 10697: 0xD3EB, + 10698: 0xD3EE, + 10699: 0xD3EF, + 10700: 0xD3F1, + 10701: 0xD3F2, + 10702: 0xD3F3, + 10703: 0xD3F5, + 10704: 0xD3F6, + 10705: 0xD3F7, + 10706: 0xD3F8, + 10707: 0xD3F9, + 10708: 0xD3FA, + 10709: 0xD3FB, + 10710: 0xD3FE, + 10711: 0xD400, + 10712: 0xD402, + 10713: 0xD403, + 10714: 0xD404, + 10715: 0xD405, + 10716: 0xD406, + 10717: 0xD407, + 10718: 0xD409, + 10719: 0xD40A, + 10720: 0xD40B, + 10721: 0xD40C, + 10722: 0xD40D, + 10723: 0xD40E, + 10724: 0xD40F, + 10725: 0xD410, + 10726: 0xD411, + 10727: 0xD412, + 10728: 0xD413, + 10729: 0xD414, + 10730: 0xD415, + 10731: 0xD416, + 10732: 0xD417, + 10733: 0xD418, + 10734: 0xD419, + 10735: 0xD41A, + 10736: 0xD41B, + 10737: 0xD41C, + 10738: 0xD41E, + 10739: 0xD41F, + 10740: 0xD420, + 10741: 0xD421, + 10742: 0xD422, + 10743: 0xD423, + 10744: 0xD424, + 10745: 0xD425, + 10746: 0xD426, + 10747: 0xD427, + 10748: 0xD428, + 10749: 0xD429, + 10750: 0xD42A, + 10751: 0xD42B, + 10752: 0xD42C, + 10753: 0xD42D, + 10754: 0xD42E, + 10755: 0xD42F, + 10756: 0xD430, + 10757: 0xD431, + 10758: 0xD432, + 10759: 0xD433, + 10760: 0xD434, + 10761: 0xD435, + 10762: 0xD436, + 10763: 0xD437, + 10764: 0xC22F, + 10765: 0xC231, + 10766: 0xC232, + 10767: 0xC234, + 10768: 0xC248, + 10769: 0xC250, + 10770: 0xC251, + 10771: 0xC254, + 10772: 0xC258, + 10773: 0xC260, + 10774: 0xC265, + 10775: 0xC26C, + 10776: 0xC26D, + 10777: 0xC270, + 10778: 0xC274, + 10779: 0xC27C, + 10780: 0xC27D, + 10781: 0xC27F, + 10782: 0xC281, + 10783: 0xC288, + 10784: 0xC289, + 10785: 0xC290, + 10786: 0xC298, + 10787: 0xC29B, + 10788: 0xC29D, + 10789: 0xC2A4, + 10790: 0xC2A5, + 10791: 0xC2A8, + 10792: 0xC2AC, + 10793: 0xC2AD, + 10794: 0xC2B4, + 10795: 0xC2B5, + 10796: 0xC2B7, + 10797: 0xC2B9, + 10798: 0xC2DC, + 10799: 0xC2DD, + 10800: 0xC2E0, + 10801: 0xC2E3, + 10802: 0xC2E4, + 10803: 0xC2EB, + 10804: 0xC2EC, + 10805: 0xC2ED, + 10806: 0xC2EF, + 10807: 0xC2F1, + 10808: 0xC2F6, + 10809: 0xC2F8, + 10810: 0xC2F9, + 10811: 0xC2FB, + 10812: 0xC2FC, + 10813: 0xC300, + 10814: 0xC308, + 10815: 0xC309, + 10816: 0xC30C, + 10817: 0xC30D, + 10818: 0xC313, + 10819: 0xC314, + 10820: 0xC315, + 10821: 0xC318, + 10822: 0xC31C, + 10823: 0xC324, + 10824: 0xC325, + 10825: 0xC328, + 10826: 0xC329, + 10827: 0xC345, + 10828: 0xC368, + 10829: 0xC369, + 10830: 0xC36C, + 10831: 0xC370, + 10832: 0xC372, + 10833: 0xC378, + 10834: 0xC379, + 10835: 0xC37C, + 10836: 0xC37D, + 10837: 0xC384, + 10838: 0xC388, + 10839: 0xC38C, + 10840: 0xC3C0, + 10841: 0xC3D8, + 10842: 0xC3D9, + 10843: 0xC3DC, + 10844: 0xC3DF, + 10845: 0xC3E0, + 10846: 0xC3E2, + 10847: 0xC3E8, + 10848: 0xC3E9, + 10849: 0xC3ED, + 10850: 0xC3F4, + 10851: 0xC3F5, + 10852: 0xC3F8, + 10853: 0xC408, + 10854: 0xC410, + 10855: 0xC424, + 10856: 0xC42C, + 10857: 0xC430, + 10858: 0xD438, + 10859: 0xD439, + 10860: 0xD43A, + 10861: 0xD43B, + 10862: 0xD43C, + 10863: 0xD43D, + 10864: 0xD43E, + 10865: 0xD43F, + 10866: 0xD441, + 10867: 0xD442, + 10868: 0xD443, + 10869: 0xD445, + 10870: 0xD446, + 10871: 0xD447, + 10872: 0xD448, + 10873: 0xD449, + 10874: 0xD44A, + 10875: 0xD44B, + 10876: 0xD44C, + 10877: 0xD44D, + 10878: 0xD44E, + 10879: 0xD44F, + 10880: 0xD450, + 10881: 0xD451, + 10882: 0xD452, + 10883: 0xD453, + 10884: 0xD454, + 10885: 0xD455, + 10886: 0xD456, + 10887: 0xD457, + 10888: 0xD458, + 10889: 0xD459, + 10890: 0xD45A, + 10891: 0xD45B, + 10892: 0xD45D, + 10893: 0xD45E, + 10894: 0xD45F, + 10895: 0xD461, + 10896: 0xD462, + 10897: 0xD463, + 10898: 0xD465, + 10899: 0xD466, + 10900: 0xD467, + 10901: 0xD468, + 10902: 0xD469, + 10903: 0xD46A, + 10904: 0xD46B, + 10905: 0xD46C, + 10906: 0xD46E, + 10907: 0xD470, + 10908: 0xD471, + 10909: 0xD472, + 10910: 0xD473, + 10911: 0xD474, + 10912: 0xD475, + 10913: 0xD476, + 10914: 0xD477, + 10915: 0xD47A, + 10916: 0xD47B, + 10917: 0xD47D, + 10918: 0xD47E, + 10919: 0xD481, + 10920: 0xD483, + 10921: 0xD484, + 10922: 0xD485, + 10923: 0xD486, + 10924: 0xD487, + 10925: 0xD48A, + 10926: 0xD48C, + 10927: 0xD48E, + 10928: 0xD48F, + 10929: 0xD490, + 10930: 0xD491, + 10931: 0xD492, + 10932: 0xD493, + 10933: 0xD495, + 10934: 0xD496, + 10935: 0xD497, + 10936: 0xD498, + 10937: 0xD499, + 10938: 0xD49A, + 10939: 0xD49B, + 10940: 0xD49C, + 10941: 0xD49D, + 10942: 0xC434, + 10943: 0xC43C, + 10944: 0xC43D, + 10945: 0xC448, + 10946: 0xC464, + 10947: 0xC465, + 10948: 0xC468, + 10949: 0xC46C, + 10950: 0xC474, + 10951: 0xC475, + 10952: 0xC479, + 10953: 0xC480, + 10954: 0xC494, + 10955: 0xC49C, + 10956: 0xC4B8, + 10957: 0xC4BC, + 10958: 0xC4E9, + 10959: 0xC4F0, + 10960: 0xC4F1, + 10961: 0xC4F4, + 10962: 0xC4F8, + 10963: 0xC4FA, + 10964: 0xC4FF, + 10965: 0xC500, + 10966: 0xC501, + 10967: 0xC50C, + 10968: 0xC510, + 10969: 0xC514, + 10970: 0xC51C, + 10971: 0xC528, + 10972: 0xC529, + 10973: 0xC52C, + 10974: 0xC530, + 10975: 0xC538, + 10976: 0xC539, + 10977: 0xC53B, + 10978: 0xC53D, + 10979: 0xC544, + 10980: 0xC545, + 10981: 0xC548, + 10982: 0xC549, + 10983: 0xC54A, + 10984: 0xC54C, + 10985: 0xC54D, + 10986: 0xC54E, + 10987: 0xC553, + 10988: 0xC554, + 10989: 0xC555, + 10990: 0xC557, + 10991: 0xC558, + 10992: 0xC559, + 10993: 0xC55D, + 10994: 0xC55E, + 10995: 0xC560, + 10996: 0xC561, + 10997: 0xC564, + 10998: 0xC568, + 10999: 0xC570, + 11000: 0xC571, + 11001: 0xC573, + 11002: 0xC574, + 11003: 0xC575, + 11004: 0xC57C, + 11005: 0xC57D, + 11006: 0xC580, + 11007: 0xC584, + 11008: 0xC587, + 11009: 0xC58C, + 11010: 0xC58D, + 11011: 0xC58F, + 11012: 0xC591, + 11013: 0xC595, + 11014: 0xC597, + 11015: 0xC598, + 11016: 0xC59C, + 11017: 0xC5A0, + 11018: 0xC5A9, + 11019: 0xC5B4, + 11020: 0xC5B5, + 11021: 0xC5B8, + 11022: 0xC5B9, + 11023: 0xC5BB, + 11024: 0xC5BC, + 11025: 0xC5BD, + 11026: 0xC5BE, + 11027: 0xC5C4, + 11028: 0xC5C5, + 11029: 0xC5C6, + 11030: 0xC5C7, + 11031: 0xC5C8, + 11032: 0xC5C9, + 11033: 0xC5CA, + 11034: 0xC5CC, + 11035: 0xC5CE, + 11036: 0xD49E, + 11037: 0xD49F, + 11038: 0xD4A0, + 11039: 0xD4A1, + 11040: 0xD4A2, + 11041: 0xD4A3, + 11042: 0xD4A4, + 11043: 0xD4A5, + 11044: 0xD4A6, + 11045: 0xD4A7, + 11046: 0xD4A8, + 11047: 0xD4AA, + 11048: 0xD4AB, + 11049: 0xD4AC, + 11050: 0xD4AD, + 11051: 0xD4AE, + 11052: 0xD4AF, + 11053: 0xD4B0, + 11054: 0xD4B1, + 11055: 0xD4B2, + 11056: 0xD4B3, + 11057: 0xD4B4, + 11058: 0xD4B5, + 11059: 0xD4B6, + 11060: 0xD4B7, + 11061: 0xD4B8, + 11062: 0xD4B9, + 11063: 0xD4BA, + 11064: 0xD4BB, + 11065: 0xD4BC, + 11066: 0xD4BD, + 11067: 0xD4BE, + 11068: 0xD4BF, + 11069: 0xD4C0, + 11070: 0xD4C1, + 11071: 0xD4C2, + 11072: 0xD4C3, + 11073: 0xD4C4, + 11074: 0xD4C5, + 11075: 0xD4C6, + 11076: 0xD4C7, + 11077: 0xD4C8, + 11078: 0xD4C9, + 11079: 0xD4CA, + 11080: 0xD4CB, + 11081: 0xD4CD, + 11082: 0xD4CE, + 11083: 0xD4CF, + 11084: 0xD4D1, + 11085: 0xD4D2, + 11086: 0xD4D3, + 11087: 0xD4D5, + 11088: 0xD4D6, + 11089: 0xD4D7, + 11090: 0xD4D8, + 11091: 0xD4D9, + 11092: 0xD4DA, + 11093: 0xD4DB, + 11094: 0xD4DD, + 11095: 0xD4DE, + 11096: 0xD4E0, + 11097: 0xD4E1, + 11098: 0xD4E2, + 11099: 0xD4E3, + 11100: 0xD4E4, + 11101: 0xD4E5, + 11102: 0xD4E6, + 11103: 0xD4E7, + 11104: 0xD4E9, + 11105: 0xD4EA, + 11106: 0xD4EB, + 11107: 0xD4ED, + 11108: 0xD4EE, + 11109: 0xD4EF, + 11110: 0xD4F1, + 11111: 0xD4F2, + 11112: 0xD4F3, + 11113: 0xD4F4, + 11114: 0xD4F5, + 11115: 0xD4F6, + 11116: 0xD4F7, + 11117: 0xD4F9, + 11118: 0xD4FA, + 11119: 0xD4FC, + 11120: 0xC5D0, + 11121: 0xC5D1, + 11122: 0xC5D4, + 11123: 0xC5D8, + 11124: 0xC5E0, + 11125: 0xC5E1, + 11126: 0xC5E3, + 11127: 0xC5E5, + 11128: 0xC5EC, + 11129: 0xC5ED, + 11130: 0xC5EE, + 11131: 0xC5F0, + 11132: 0xC5F4, + 11133: 0xC5F6, + 11134: 0xC5F7, + 11135: 0xC5FC, + 11136: 0xC5FD, + 11137: 0xC5FE, + 11138: 0xC5FF, + 11139: 0xC600, + 11140: 0xC601, + 11141: 0xC605, + 11142: 0xC606, + 11143: 0xC607, + 11144: 0xC608, + 11145: 0xC60C, + 11146: 0xC610, + 11147: 0xC618, + 11148: 0xC619, + 11149: 0xC61B, + 11150: 0xC61C, + 11151: 0xC624, + 11152: 0xC625, + 11153: 0xC628, + 11154: 0xC62C, + 11155: 0xC62D, + 11156: 0xC62E, + 11157: 0xC630, + 11158: 0xC633, + 11159: 0xC634, + 11160: 0xC635, + 11161: 0xC637, + 11162: 0xC639, + 11163: 0xC63B, + 11164: 0xC640, + 11165: 0xC641, + 11166: 0xC644, + 11167: 0xC648, + 11168: 0xC650, + 11169: 0xC651, + 11170: 0xC653, + 11171: 0xC654, + 11172: 0xC655, + 11173: 0xC65C, + 11174: 0xC65D, + 11175: 0xC660, + 11176: 0xC66C, + 11177: 0xC66F, + 11178: 0xC671, + 11179: 0xC678, + 11180: 0xC679, + 11181: 0xC67C, + 11182: 0xC680, + 11183: 0xC688, + 11184: 0xC689, + 11185: 0xC68B, + 11186: 0xC68D, + 11187: 0xC694, + 11188: 0xC695, + 11189: 0xC698, + 11190: 0xC69C, + 11191: 0xC6A4, + 11192: 0xC6A5, + 11193: 0xC6A7, + 11194: 0xC6A9, + 11195: 0xC6B0, + 11196: 0xC6B1, + 11197: 0xC6B4, + 11198: 0xC6B8, + 11199: 0xC6B9, + 11200: 0xC6BA, + 11201: 0xC6C0, + 11202: 0xC6C1, + 11203: 0xC6C3, + 11204: 0xC6C5, + 11205: 0xC6CC, + 11206: 0xC6CD, + 11207: 0xC6D0, + 11208: 0xC6D4, + 11209: 0xC6DC, + 11210: 0xC6DD, + 11211: 0xC6E0, + 11212: 0xC6E1, + 11213: 0xC6E8, + 11214: 0xD4FE, + 11215: 0xD4FF, + 11216: 0xD500, + 11217: 0xD501, + 11218: 0xD502, + 11219: 0xD503, + 11220: 0xD505, + 11221: 0xD506, + 11222: 0xD507, + 11223: 0xD509, + 11224: 0xD50A, + 11225: 0xD50B, + 11226: 0xD50D, + 11227: 0xD50E, + 11228: 0xD50F, + 11229: 0xD510, + 11230: 0xD511, + 11231: 0xD512, + 11232: 0xD513, + 11233: 0xD516, + 11234: 0xD518, + 11235: 0xD519, + 11236: 0xD51A, + 11237: 0xD51B, + 11238: 0xD51C, + 11239: 0xD51D, + 11240: 0xD51E, + 11241: 0xD51F, + 11242: 0xD520, + 11243: 0xD521, + 11244: 0xD522, + 11245: 0xD523, + 11246: 0xD524, + 11247: 0xD525, + 11248: 0xD526, + 11249: 0xD527, + 11250: 0xD528, + 11251: 0xD529, + 11252: 0xD52A, + 11253: 0xD52B, + 11254: 0xD52C, + 11255: 0xD52D, + 11256: 0xD52E, + 11257: 0xD52F, + 11258: 0xD530, + 11259: 0xD531, + 11260: 0xD532, + 11261: 0xD533, + 11262: 0xD534, + 11263: 0xD535, + 11264: 0xD536, + 11265: 0xD537, + 11266: 0xD538, + 11267: 0xD539, + 11268: 0xD53A, + 11269: 0xD53B, + 11270: 0xD53E, + 11271: 0xD53F, + 11272: 0xD541, + 11273: 0xD542, + 11274: 0xD543, + 11275: 0xD545, + 11276: 0xD546, + 11277: 0xD547, + 11278: 0xD548, + 11279: 0xD549, + 11280: 0xD54A, + 11281: 0xD54B, + 11282: 0xD54E, + 11283: 0xD550, + 11284: 0xD552, + 11285: 0xD553, + 11286: 0xD554, + 11287: 0xD555, + 11288: 0xD556, + 11289: 0xD557, + 11290: 0xD55A, + 11291: 0xD55B, + 11292: 0xD55D, + 11293: 0xD55E, + 11294: 0xD55F, + 11295: 0xD561, + 11296: 0xD562, + 11297: 0xD563, + 11298: 0xC6E9, + 11299: 0xC6EC, + 11300: 0xC6F0, + 11301: 0xC6F8, + 11302: 0xC6F9, + 11303: 0xC6FD, + 11304: 0xC704, + 11305: 0xC705, + 11306: 0xC708, + 11307: 0xC70C, + 11308: 0xC714, + 11309: 0xC715, + 11310: 0xC717, + 11311: 0xC719, + 11312: 0xC720, + 11313: 0xC721, + 11314: 0xC724, + 11315: 0xC728, + 11316: 0xC730, + 11317: 0xC731, + 11318: 0xC733, + 11319: 0xC735, + 11320: 0xC737, + 11321: 0xC73C, + 11322: 0xC73D, + 11323: 0xC740, + 11324: 0xC744, + 11325: 0xC74A, + 11326: 0xC74C, + 11327: 0xC74D, + 11328: 0xC74F, + 11329: 0xC751, + 11330: 0xC752, + 11331: 0xC753, + 11332: 0xC754, + 11333: 0xC755, + 11334: 0xC756, + 11335: 0xC757, + 11336: 0xC758, + 11337: 0xC75C, + 11338: 0xC760, + 11339: 0xC768, + 11340: 0xC76B, + 11341: 0xC774, + 11342: 0xC775, + 11343: 0xC778, + 11344: 0xC77C, + 11345: 0xC77D, + 11346: 0xC77E, + 11347: 0xC783, + 11348: 0xC784, + 11349: 0xC785, + 11350: 0xC787, + 11351: 0xC788, + 11352: 0xC789, + 11353: 0xC78A, + 11354: 0xC78E, + 11355: 0xC790, + 11356: 0xC791, + 11357: 0xC794, + 11358: 0xC796, + 11359: 0xC797, + 11360: 0xC798, + 11361: 0xC79A, + 11362: 0xC7A0, + 11363: 0xC7A1, + 11364: 0xC7A3, + 11365: 0xC7A4, + 11366: 0xC7A5, + 11367: 0xC7A6, + 11368: 0xC7AC, + 11369: 0xC7AD, + 11370: 0xC7B0, + 11371: 0xC7B4, + 11372: 0xC7BC, + 11373: 0xC7BD, + 11374: 0xC7BF, + 11375: 0xC7C0, + 11376: 0xC7C1, + 11377: 0xC7C8, + 11378: 0xC7C9, + 11379: 0xC7CC, + 11380: 0xC7CE, + 11381: 0xC7D0, + 11382: 0xC7D8, + 11383: 0xC7DD, + 11384: 0xC7E4, + 11385: 0xC7E8, + 11386: 0xC7EC, + 11387: 0xC800, + 11388: 0xC801, + 11389: 0xC804, + 11390: 0xC808, + 11391: 0xC80A, + 11392: 0xD564, + 11393: 0xD566, + 11394: 0xD567, + 11395: 0xD56A, + 11396: 0xD56C, + 11397: 0xD56E, + 11398: 0xD56F, + 11399: 0xD570, + 11400: 0xD571, + 11401: 0xD572, + 11402: 0xD573, + 11403: 0xD576, + 11404: 0xD577, + 11405: 0xD579, + 11406: 0xD57A, + 11407: 0xD57B, + 11408: 0xD57D, + 11409: 0xD57E, + 11410: 0xD57F, + 11411: 0xD580, + 11412: 0xD581, + 11413: 0xD582, + 11414: 0xD583, + 11415: 0xD586, + 11416: 0xD58A, + 11417: 0xD58B, + 11418: 0xD58C, + 11419: 0xD58D, + 11420: 0xD58E, + 11421: 0xD58F, + 11422: 0xD591, + 11423: 0xD592, + 11424: 0xD593, + 11425: 0xD594, + 11426: 0xD595, + 11427: 0xD596, + 11428: 0xD597, + 11429: 0xD598, + 11430: 0xD599, + 11431: 0xD59A, + 11432: 0xD59B, + 11433: 0xD59C, + 11434: 0xD59D, + 11435: 0xD59E, + 11436: 0xD59F, + 11437: 0xD5A0, + 11438: 0xD5A1, + 11439: 0xD5A2, + 11440: 0xD5A3, + 11441: 0xD5A4, + 11442: 0xD5A6, + 11443: 0xD5A7, + 11444: 0xD5A8, + 11445: 0xD5A9, + 11446: 0xD5AA, + 11447: 0xD5AB, + 11448: 0xD5AC, + 11449: 0xD5AD, + 11450: 0xD5AE, + 11451: 0xD5AF, + 11452: 0xD5B0, + 11453: 0xD5B1, + 11454: 0xD5B2, + 11455: 0xD5B3, + 11456: 0xD5B4, + 11457: 0xD5B5, + 11458: 0xD5B6, + 11459: 0xD5B7, + 11460: 0xD5B8, + 11461: 0xD5B9, + 11462: 0xD5BA, + 11463: 0xD5BB, + 11464: 0xD5BC, + 11465: 0xD5BD, + 11466: 0xD5BE, + 11467: 0xD5BF, + 11468: 0xD5C0, + 11469: 0xD5C1, + 11470: 0xD5C2, + 11471: 0xD5C3, + 11472: 0xD5C4, + 11473: 0xD5C5, + 11474: 0xD5C6, + 11475: 0xD5C7, + 11476: 0xC810, + 11477: 0xC811, + 11478: 0xC813, + 11479: 0xC815, + 11480: 0xC816, + 11481: 0xC81C, + 11482: 0xC81D, + 11483: 0xC820, + 11484: 0xC824, + 11485: 0xC82C, + 11486: 0xC82D, + 11487: 0xC82F, + 11488: 0xC831, + 11489: 0xC838, + 11490: 0xC83C, + 11491: 0xC840, + 11492: 0xC848, + 11493: 0xC849, + 11494: 0xC84C, + 11495: 0xC84D, + 11496: 0xC854, + 11497: 0xC870, + 11498: 0xC871, + 11499: 0xC874, + 11500: 0xC878, + 11501: 0xC87A, + 11502: 0xC880, + 11503: 0xC881, + 11504: 0xC883, + 11505: 0xC885, + 11506: 0xC886, + 11507: 0xC887, + 11508: 0xC88B, + 11509: 0xC88C, + 11510: 0xC88D, + 11511: 0xC894, + 11512: 0xC89D, + 11513: 0xC89F, + 11514: 0xC8A1, + 11515: 0xC8A8, + 11516: 0xC8BC, + 11517: 0xC8BD, + 11518: 0xC8C4, + 11519: 0xC8C8, + 11520: 0xC8CC, + 11521: 0xC8D4, + 11522: 0xC8D5, + 11523: 0xC8D7, + 11524: 0xC8D9, + 11525: 0xC8E0, + 11526: 0xC8E1, + 11527: 0xC8E4, + 11528: 0xC8F5, + 11529: 0xC8FC, + 11530: 0xC8FD, + 11531: 0xC900, + 11532: 0xC904, + 11533: 0xC905, + 11534: 0xC906, + 11535: 0xC90C, + 11536: 0xC90D, + 11537: 0xC90F, + 11538: 0xC911, + 11539: 0xC918, + 11540: 0xC92C, + 11541: 0xC934, + 11542: 0xC950, + 11543: 0xC951, + 11544: 0xC954, + 11545: 0xC958, + 11546: 0xC960, + 11547: 0xC961, + 11548: 0xC963, + 11549: 0xC96C, + 11550: 0xC970, + 11551: 0xC974, + 11552: 0xC97C, + 11553: 0xC988, + 11554: 0xC989, + 11555: 0xC98C, + 11556: 0xC990, + 11557: 0xC998, + 11558: 0xC999, + 11559: 0xC99B, + 11560: 0xC99D, + 11561: 0xC9C0, + 11562: 0xC9C1, + 11563: 0xC9C4, + 11564: 0xC9C7, + 11565: 0xC9C8, + 11566: 0xC9CA, + 11567: 0xC9D0, + 11568: 0xC9D1, + 11569: 0xC9D3, + 11570: 0xD5CA, + 11571: 0xD5CB, + 11572: 0xD5CD, + 11573: 0xD5CE, + 11574: 0xD5CF, + 11575: 0xD5D1, + 11576: 0xD5D3, + 11577: 0xD5D4, + 11578: 0xD5D5, + 11579: 0xD5D6, + 11580: 0xD5D7, + 11581: 0xD5DA, + 11582: 0xD5DC, + 11583: 0xD5DE, + 11584: 0xD5DF, + 11585: 0xD5E0, + 11586: 0xD5E1, + 11587: 0xD5E2, + 11588: 0xD5E3, + 11589: 0xD5E6, + 11590: 0xD5E7, + 11591: 0xD5E9, + 11592: 0xD5EA, + 11593: 0xD5EB, + 11594: 0xD5ED, + 11595: 0xD5EE, + 11596: 0xD5EF, + 11597: 0xD5F0, + 11598: 0xD5F1, + 11599: 0xD5F2, + 11600: 0xD5F3, + 11601: 0xD5F6, + 11602: 0xD5F8, + 11603: 0xD5FA, + 11604: 0xD5FB, + 11605: 0xD5FC, + 11606: 0xD5FD, + 11607: 0xD5FE, + 11608: 0xD5FF, + 11609: 0xD602, + 11610: 0xD603, + 11611: 0xD605, + 11612: 0xD606, + 11613: 0xD607, + 11614: 0xD609, + 11615: 0xD60A, + 11616: 0xD60B, + 11617: 0xD60C, + 11618: 0xD60D, + 11619: 0xD60E, + 11620: 0xD60F, + 11621: 0xD612, + 11622: 0xD616, + 11623: 0xD617, + 11624: 0xD618, + 11625: 0xD619, + 11626: 0xD61A, + 11627: 0xD61B, + 11628: 0xD61D, + 11629: 0xD61E, + 11630: 0xD61F, + 11631: 0xD621, + 11632: 0xD622, + 11633: 0xD623, + 11634: 0xD625, + 11635: 0xD626, + 11636: 0xD627, + 11637: 0xD628, + 11638: 0xD629, + 11639: 0xD62A, + 11640: 0xD62B, + 11641: 0xD62C, + 11642: 0xD62E, + 11643: 0xD62F, + 11644: 0xD630, + 11645: 0xD631, + 11646: 0xD632, + 11647: 0xD633, + 11648: 0xD634, + 11649: 0xD635, + 11650: 0xD636, + 11651: 0xD637, + 11652: 0xD63A, + 11653: 0xD63B, + 11654: 0xC9D5, + 11655: 0xC9D6, + 11656: 0xC9D9, + 11657: 0xC9DA, + 11658: 0xC9DC, + 11659: 0xC9DD, + 11660: 0xC9E0, + 11661: 0xC9E2, + 11662: 0xC9E4, + 11663: 0xC9E7, + 11664: 0xC9EC, + 11665: 0xC9ED, + 11666: 0xC9EF, + 11667: 0xC9F0, + 11668: 0xC9F1, + 11669: 0xC9F8, + 11670: 0xC9F9, + 11671: 0xC9FC, + 11672: 0xCA00, + 11673: 0xCA08, + 11674: 0xCA09, + 11675: 0xCA0B, + 11676: 0xCA0C, + 11677: 0xCA0D, + 11678: 0xCA14, + 11679: 0xCA18, + 11680: 0xCA29, + 11681: 0xCA4C, + 11682: 0xCA4D, + 11683: 0xCA50, + 11684: 0xCA54, + 11685: 0xCA5C, + 11686: 0xCA5D, + 11687: 0xCA5F, + 11688: 0xCA60, + 11689: 0xCA61, + 11690: 0xCA68, + 11691: 0xCA7D, + 11692: 0xCA84, + 11693: 0xCA98, + 11694: 0xCABC, + 11695: 0xCABD, + 11696: 0xCAC0, + 11697: 0xCAC4, + 11698: 0xCACC, + 11699: 0xCACD, + 11700: 0xCACF, + 11701: 0xCAD1, + 11702: 0xCAD3, + 11703: 0xCAD8, + 11704: 0xCAD9, + 11705: 0xCAE0, + 11706: 0xCAEC, + 11707: 0xCAF4, + 11708: 0xCB08, + 11709: 0xCB10, + 11710: 0xCB14, + 11711: 0xCB18, + 11712: 0xCB20, + 11713: 0xCB21, + 11714: 0xCB41, + 11715: 0xCB48, + 11716: 0xCB49, + 11717: 0xCB4C, + 11718: 0xCB50, + 11719: 0xCB58, + 11720: 0xCB59, + 11721: 0xCB5D, + 11722: 0xCB64, + 11723: 0xCB78, + 11724: 0xCB79, + 11725: 0xCB9C, + 11726: 0xCBB8, + 11727: 0xCBD4, + 11728: 0xCBE4, + 11729: 0xCBE7, + 11730: 0xCBE9, + 11731: 0xCC0C, + 11732: 0xCC0D, + 11733: 0xCC10, + 11734: 0xCC14, + 11735: 0xCC1C, + 11736: 0xCC1D, + 11737: 0xCC21, + 11738: 0xCC22, + 11739: 0xCC27, + 11740: 0xCC28, + 11741: 0xCC29, + 11742: 0xCC2C, + 11743: 0xCC2E, + 11744: 0xCC30, + 11745: 0xCC38, + 11746: 0xCC39, + 11747: 0xCC3B, + 11748: 0xD63D, + 11749: 0xD63E, + 11750: 0xD63F, + 11751: 0xD641, + 11752: 0xD642, + 11753: 0xD643, + 11754: 0xD644, + 11755: 0xD646, + 11756: 0xD647, + 11757: 0xD64A, + 11758: 0xD64C, + 11759: 0xD64E, + 11760: 0xD64F, + 11761: 0xD650, + 11762: 0xD652, + 11763: 0xD653, + 11764: 0xD656, + 11765: 0xD657, + 11766: 0xD659, + 11767: 0xD65A, + 11768: 0xD65B, + 11769: 0xD65D, + 11770: 0xD65E, + 11771: 0xD65F, + 11772: 0xD660, + 11773: 0xD661, + 11774: 0xD662, + 11775: 0xD663, + 11776: 0xD664, + 11777: 0xD665, + 11778: 0xD666, + 11779: 0xD668, + 11780: 0xD66A, + 11781: 0xD66B, + 11782: 0xD66C, + 11783: 0xD66D, + 11784: 0xD66E, + 11785: 0xD66F, + 11786: 0xD672, + 11787: 0xD673, + 11788: 0xD675, + 11789: 0xD676, + 11790: 0xD677, + 11791: 0xD678, + 11792: 0xD679, + 11793: 0xD67A, + 11794: 0xD67B, + 11795: 0xD67C, + 11796: 0xD67D, + 11797: 0xD67E, + 11798: 0xD67F, + 11799: 0xD680, + 11800: 0xD681, + 11801: 0xD682, + 11802: 0xD684, + 11803: 0xD686, + 11804: 0xD687, + 11805: 0xD688, + 11806: 0xD689, + 11807: 0xD68A, + 11808: 0xD68B, + 11809: 0xD68E, + 11810: 0xD68F, + 11811: 0xD691, + 11812: 0xD692, + 11813: 0xD693, + 11814: 0xD695, + 11815: 0xD696, + 11816: 0xD697, + 11817: 0xD698, + 11818: 0xD699, + 11819: 0xD69A, + 11820: 0xD69B, + 11821: 0xD69C, + 11822: 0xD69E, + 11823: 0xD6A0, + 11824: 0xD6A2, + 11825: 0xD6A3, + 11826: 0xD6A4, + 11827: 0xD6A5, + 11828: 0xD6A6, + 11829: 0xD6A7, + 11830: 0xD6A9, + 11831: 0xD6AA, + 11832: 0xCC3C, + 11833: 0xCC3D, + 11834: 0xCC3E, + 11835: 0xCC44, + 11836: 0xCC45, + 11837: 0xCC48, + 11838: 0xCC4C, + 11839: 0xCC54, + 11840: 0xCC55, + 11841: 0xCC57, + 11842: 0xCC58, + 11843: 0xCC59, + 11844: 0xCC60, + 11845: 0xCC64, + 11846: 0xCC66, + 11847: 0xCC68, + 11848: 0xCC70, + 11849: 0xCC75, + 11850: 0xCC98, + 11851: 0xCC99, + 11852: 0xCC9C, + 11853: 0xCCA0, + 11854: 0xCCA8, + 11855: 0xCCA9, + 11856: 0xCCAB, + 11857: 0xCCAC, + 11858: 0xCCAD, + 11859: 0xCCB4, + 11860: 0xCCB5, + 11861: 0xCCB8, + 11862: 0xCCBC, + 11863: 0xCCC4, + 11864: 0xCCC5, + 11865: 0xCCC7, + 11866: 0xCCC9, + 11867: 0xCCD0, + 11868: 0xCCD4, + 11869: 0xCCE4, + 11870: 0xCCEC, + 11871: 0xCCF0, + 11872: 0xCD01, + 11873: 0xCD08, + 11874: 0xCD09, + 11875: 0xCD0C, + 11876: 0xCD10, + 11877: 0xCD18, + 11878: 0xCD19, + 11879: 0xCD1B, + 11880: 0xCD1D, + 11881: 0xCD24, + 11882: 0xCD28, + 11883: 0xCD2C, + 11884: 0xCD39, + 11885: 0xCD5C, + 11886: 0xCD60, + 11887: 0xCD64, + 11888: 0xCD6C, + 11889: 0xCD6D, + 11890: 0xCD6F, + 11891: 0xCD71, + 11892: 0xCD78, + 11893: 0xCD88, + 11894: 0xCD94, + 11895: 0xCD95, + 11896: 0xCD98, + 11897: 0xCD9C, + 11898: 0xCDA4, + 11899: 0xCDA5, + 11900: 0xCDA7, + 11901: 0xCDA9, + 11902: 0xCDB0, + 11903: 0xCDC4, + 11904: 0xCDCC, + 11905: 0xCDD0, + 11906: 0xCDE8, + 11907: 0xCDEC, + 11908: 0xCDF0, + 11909: 0xCDF8, + 11910: 0xCDF9, + 11911: 0xCDFB, + 11912: 0xCDFD, + 11913: 0xCE04, + 11914: 0xCE08, + 11915: 0xCE0C, + 11916: 0xCE14, + 11917: 0xCE19, + 11918: 0xCE20, + 11919: 0xCE21, + 11920: 0xCE24, + 11921: 0xCE28, + 11922: 0xCE30, + 11923: 0xCE31, + 11924: 0xCE33, + 11925: 0xCE35, + 11926: 0xD6AB, + 11927: 0xD6AD, + 11928: 0xD6AE, + 11929: 0xD6AF, + 11930: 0xD6B1, + 11931: 0xD6B2, + 11932: 0xD6B3, + 11933: 0xD6B4, + 11934: 0xD6B5, + 11935: 0xD6B6, + 11936: 0xD6B7, + 11937: 0xD6B8, + 11938: 0xD6BA, + 11939: 0xD6BC, + 11940: 0xD6BD, + 11941: 0xD6BE, + 11942: 0xD6BF, + 11943: 0xD6C0, + 11944: 0xD6C1, + 11945: 0xD6C2, + 11946: 0xD6C3, + 11947: 0xD6C6, + 11948: 0xD6C7, + 11949: 0xD6C9, + 11950: 0xD6CA, + 11951: 0xD6CB, + 11952: 0xD6CD, + 11953: 0xD6CE, + 11954: 0xD6CF, + 11955: 0xD6D0, + 11956: 0xD6D2, + 11957: 0xD6D3, + 11958: 0xD6D5, + 11959: 0xD6D6, + 11960: 0xD6D8, + 11961: 0xD6DA, + 11962: 0xD6DB, + 11963: 0xD6DC, + 11964: 0xD6DD, + 11965: 0xD6DE, + 11966: 0xD6DF, + 11967: 0xD6E1, + 11968: 0xD6E2, + 11969: 0xD6E3, + 11970: 0xD6E5, + 11971: 0xD6E6, + 11972: 0xD6E7, + 11973: 0xD6E9, + 11974: 0xD6EA, + 11975: 0xD6EB, + 11976: 0xD6EC, + 11977: 0xD6ED, + 11978: 0xD6EE, + 11979: 0xD6EF, + 11980: 0xD6F1, + 11981: 0xD6F2, + 11982: 0xD6F3, + 11983: 0xD6F4, + 11984: 0xD6F6, + 11985: 0xD6F7, + 11986: 0xD6F8, + 11987: 0xD6F9, + 11988: 0xD6FA, + 11989: 0xD6FB, + 11990: 0xD6FE, + 11991: 0xD6FF, + 11992: 0xD701, + 11993: 0xD702, + 11994: 0xD703, + 11995: 0xD705, + 11996: 0xD706, + 11997: 0xD707, + 11998: 0xD708, + 11999: 0xD709, + 12000: 0xD70A, + 12001: 0xD70B, + 12002: 0xD70C, + 12003: 0xD70D, + 12004: 0xD70E, + 12005: 0xD70F, + 12006: 0xD710, + 12007: 0xD712, + 12008: 0xD713, + 12009: 0xD714, + 12010: 0xCE58, + 12011: 0xCE59, + 12012: 0xCE5C, + 12013: 0xCE5F, + 12014: 0xCE60, + 12015: 0xCE61, + 12016: 0xCE68, + 12017: 0xCE69, + 12018: 0xCE6B, + 12019: 0xCE6D, + 12020: 0xCE74, + 12021: 0xCE75, + 12022: 0xCE78, + 12023: 0xCE7C, + 12024: 0xCE84, + 12025: 0xCE85, + 12026: 0xCE87, + 12027: 0xCE89, + 12028: 0xCE90, + 12029: 0xCE91, + 12030: 0xCE94, + 12031: 0xCE98, + 12032: 0xCEA0, + 12033: 0xCEA1, + 12034: 0xCEA3, + 12035: 0xCEA4, + 12036: 0xCEA5, + 12037: 0xCEAC, + 12038: 0xCEAD, + 12039: 0xCEC1, + 12040: 0xCEE4, + 12041: 0xCEE5, + 12042: 0xCEE8, + 12043: 0xCEEB, + 12044: 0xCEEC, + 12045: 0xCEF4, + 12046: 0xCEF5, + 12047: 0xCEF7, + 12048: 0xCEF8, + 12049: 0xCEF9, + 12050: 0xCF00, + 12051: 0xCF01, + 12052: 0xCF04, + 12053: 0xCF08, + 12054: 0xCF10, + 12055: 0xCF11, + 12056: 0xCF13, + 12057: 0xCF15, + 12058: 0xCF1C, + 12059: 0xCF20, + 12060: 0xCF24, + 12061: 0xCF2C, + 12062: 0xCF2D, + 12063: 0xCF2F, + 12064: 0xCF30, + 12065: 0xCF31, + 12066: 0xCF38, + 12067: 0xCF54, + 12068: 0xCF55, + 12069: 0xCF58, + 12070: 0xCF5C, + 12071: 0xCF64, + 12072: 0xCF65, + 12073: 0xCF67, + 12074: 0xCF69, + 12075: 0xCF70, + 12076: 0xCF71, + 12077: 0xCF74, + 12078: 0xCF78, + 12079: 0xCF80, + 12080: 0xCF85, + 12081: 0xCF8C, + 12082: 0xCFA1, + 12083: 0xCFA8, + 12084: 0xCFB0, + 12085: 0xCFC4, + 12086: 0xCFE0, + 12087: 0xCFE1, + 12088: 0xCFE4, + 12089: 0xCFE8, + 12090: 0xCFF0, + 12091: 0xCFF1, + 12092: 0xCFF3, + 12093: 0xCFF5, + 12094: 0xCFFC, + 12095: 0xD000, + 12096: 0xD004, + 12097: 0xD011, + 12098: 0xD018, + 12099: 0xD02D, + 12100: 0xD034, + 12101: 0xD035, + 12102: 0xD038, + 12103: 0xD03C, + 12104: 0xD715, + 12105: 0xD716, + 12106: 0xD717, + 12107: 0xD71A, + 12108: 0xD71B, + 12109: 0xD71D, + 12110: 0xD71E, + 12111: 0xD71F, + 12112: 0xD721, + 12113: 0xD722, + 12114: 0xD723, + 12115: 0xD724, + 12116: 0xD725, + 12117: 0xD726, + 12118: 0xD727, + 12119: 0xD72A, + 12120: 0xD72C, + 12121: 0xD72E, + 12122: 0xD72F, + 12123: 0xD730, + 12124: 0xD731, + 12125: 0xD732, + 12126: 0xD733, + 12127: 0xD736, + 12128: 0xD737, + 12129: 0xD739, + 12130: 0xD73A, + 12131: 0xD73B, + 12132: 0xD73D, + 12133: 0xD73E, + 12134: 0xD73F, + 12135: 0xD740, + 12136: 0xD741, + 12137: 0xD742, + 12138: 0xD743, + 12139: 0xD745, + 12140: 0xD746, + 12141: 0xD748, + 12142: 0xD74A, + 12143: 0xD74B, + 12144: 0xD74C, + 12145: 0xD74D, + 12146: 0xD74E, + 12147: 0xD74F, + 12148: 0xD752, + 12149: 0xD753, + 12150: 0xD755, + 12151: 0xD75A, + 12152: 0xD75B, + 12153: 0xD75C, + 12154: 0xD75D, + 12155: 0xD75E, + 12156: 0xD75F, + 12157: 0xD762, + 12158: 0xD764, + 12159: 0xD766, + 12160: 0xD767, + 12161: 0xD768, + 12162: 0xD76A, + 12163: 0xD76B, + 12164: 0xD76D, + 12165: 0xD76E, + 12166: 0xD76F, + 12167: 0xD771, + 12168: 0xD772, + 12169: 0xD773, + 12170: 0xD775, + 12171: 0xD776, + 12172: 0xD777, + 12173: 0xD778, + 12174: 0xD779, + 12175: 0xD77A, + 12176: 0xD77B, + 12177: 0xD77E, + 12178: 0xD77F, + 12179: 0xD780, + 12180: 0xD782, + 12181: 0xD783, + 12182: 0xD784, + 12183: 0xD785, + 12184: 0xD786, + 12185: 0xD787, + 12186: 0xD78A, + 12187: 0xD78B, + 12188: 0xD044, + 12189: 0xD045, + 12190: 0xD047, + 12191: 0xD049, + 12192: 0xD050, + 12193: 0xD054, + 12194: 0xD058, + 12195: 0xD060, + 12196: 0xD06C, + 12197: 0xD06D, + 12198: 0xD070, + 12199: 0xD074, + 12200: 0xD07C, + 12201: 0xD07D, + 12202: 0xD081, + 12203: 0xD0A4, + 12204: 0xD0A5, + 12205: 0xD0A8, + 12206: 0xD0AC, + 12207: 0xD0B4, + 12208: 0xD0B5, + 12209: 0xD0B7, + 12210: 0xD0B9, + 12211: 0xD0C0, + 12212: 0xD0C1, + 12213: 0xD0C4, + 12214: 0xD0C8, + 12215: 0xD0C9, + 12216: 0xD0D0, + 12217: 0xD0D1, + 12218: 0xD0D3, + 12219: 0xD0D4, + 12220: 0xD0D5, + 12221: 0xD0DC, + 12222: 0xD0DD, + 12223: 0xD0E0, + 12224: 0xD0E4, + 12225: 0xD0EC, + 12226: 0xD0ED, + 12227: 0xD0EF, + 12228: 0xD0F0, + 12229: 0xD0F1, + 12230: 0xD0F8, + 12231: 0xD10D, + 12232: 0xD130, + 12233: 0xD131, + 12234: 0xD134, + 12235: 0xD138, + 12236: 0xD13A, + 12237: 0xD140, + 12238: 0xD141, + 12239: 0xD143, + 12240: 0xD144, + 12241: 0xD145, + 12242: 0xD14C, + 12243: 0xD14D, + 12244: 0xD150, + 12245: 0xD154, + 12246: 0xD15C, + 12247: 0xD15D, + 12248: 0xD15F, + 12249: 0xD161, + 12250: 0xD168, + 12251: 0xD16C, + 12252: 0xD17C, + 12253: 0xD184, + 12254: 0xD188, + 12255: 0xD1A0, + 12256: 0xD1A1, + 12257: 0xD1A4, + 12258: 0xD1A8, + 12259: 0xD1B0, + 12260: 0xD1B1, + 12261: 0xD1B3, + 12262: 0xD1B5, + 12263: 0xD1BA, + 12264: 0xD1BC, + 12265: 0xD1C0, + 12266: 0xD1D8, + 12267: 0xD1F4, + 12268: 0xD1F8, + 12269: 0xD207, + 12270: 0xD209, + 12271: 0xD210, + 12272: 0xD22C, + 12273: 0xD22D, + 12274: 0xD230, + 12275: 0xD234, + 12276: 0xD23C, + 12277: 0xD23D, + 12278: 0xD23F, + 12279: 0xD241, + 12280: 0xD248, + 12281: 0xD25C, + 12282: 0xD78D, + 12283: 0xD78E, + 12284: 0xD78F, + 12285: 0xD791, + 12286: 0xD792, + 12287: 0xD793, + 12288: 0xD794, + 12289: 0xD795, + 12290: 0xD796, + 12291: 0xD797, + 12292: 0xD79A, + 12293: 0xD79C, + 12294: 0xD79E, + 12295: 0xD79F, + 12296: 0xD7A0, + 12297: 0xD7A1, + 12298: 0xD7A2, + 12299: 0xD7A3, + 12366: 0xD264, + 12367: 0xD280, + 12368: 0xD281, + 12369: 0xD284, + 12370: 0xD288, + 12371: 0xD290, + 12372: 0xD291, + 12373: 0xD295, + 12374: 0xD29C, + 12375: 0xD2A0, + 12376: 0xD2A4, + 12377: 0xD2AC, + 12378: 0xD2B1, + 12379: 0xD2B8, + 12380: 0xD2B9, + 12381: 0xD2BC, + 12382: 0xD2BF, + 12383: 0xD2C0, + 12384: 0xD2C2, + 12385: 0xD2C8, + 12386: 0xD2C9, + 12387: 0xD2CB, + 12388: 0xD2D4, + 12389: 0xD2D8, + 12390: 0xD2DC, + 12391: 0xD2E4, + 12392: 0xD2E5, + 12393: 0xD2F0, + 12394: 0xD2F1, + 12395: 0xD2F4, + 12396: 0xD2F8, + 12397: 0xD300, + 12398: 0xD301, + 12399: 0xD303, + 12400: 0xD305, + 12401: 0xD30C, + 12402: 0xD30D, + 12403: 0xD30E, + 12404: 0xD310, + 12405: 0xD314, + 12406: 0xD316, + 12407: 0xD31C, + 12408: 0xD31D, + 12409: 0xD31F, + 12410: 0xD320, + 12411: 0xD321, + 12412: 0xD325, + 12413: 0xD328, + 12414: 0xD329, + 12415: 0xD32C, + 12416: 0xD330, + 12417: 0xD338, + 12418: 0xD339, + 12419: 0xD33B, + 12420: 0xD33C, + 12421: 0xD33D, + 12422: 0xD344, + 12423: 0xD345, + 12424: 0xD37C, + 12425: 0xD37D, + 12426: 0xD380, + 12427: 0xD384, + 12428: 0xD38C, + 12429: 0xD38D, + 12430: 0xD38F, + 12431: 0xD390, + 12432: 0xD391, + 12433: 0xD398, + 12434: 0xD399, + 12435: 0xD39C, + 12436: 0xD3A0, + 12437: 0xD3A8, + 12438: 0xD3A9, + 12439: 0xD3AB, + 12440: 0xD3AD, + 12441: 0xD3B4, + 12442: 0xD3B8, + 12443: 0xD3BC, + 12444: 0xD3C4, + 12445: 0xD3C5, + 12446: 0xD3C8, + 12447: 0xD3C9, + 12448: 0xD3D0, + 12449: 0xD3D8, + 12450: 0xD3E1, + 12451: 0xD3E3, + 12452: 0xD3EC, + 12453: 0xD3ED, + 12454: 0xD3F0, + 12455: 0xD3F4, + 12456: 0xD3FC, + 12457: 0xD3FD, + 12458: 0xD3FF, + 12459: 0xD401, + 12460: 0xD408, + 12461: 0xD41D, + 12462: 0xD440, + 12463: 0xD444, + 12464: 0xD45C, + 12465: 0xD460, + 12466: 0xD464, + 12467: 0xD46D, + 12468: 0xD46F, + 12469: 0xD478, + 12470: 0xD479, + 12471: 0xD47C, + 12472: 0xD47F, + 12473: 0xD480, + 12474: 0xD482, + 12475: 0xD488, + 12476: 0xD489, + 12477: 0xD48B, + 12478: 0xD48D, + 12479: 0xD494, + 12480: 0xD4A9, + 12481: 0xD4CC, + 12482: 0xD4D0, + 12483: 0xD4D4, + 12484: 0xD4DC, + 12485: 0xD4DF, + 12486: 0xD4E8, + 12487: 0xD4EC, + 12488: 0xD4F0, + 12489: 0xD4F8, + 12490: 0xD4FB, + 12491: 0xD4FD, + 12492: 0xD504, + 12493: 0xD508, + 12494: 0xD50C, + 12495: 0xD514, + 12496: 0xD515, + 12497: 0xD517, + 12498: 0xD53C, + 12499: 0xD53D, + 12500: 0xD540, + 12501: 0xD544, + 12502: 0xD54C, + 12503: 0xD54D, + 12504: 0xD54F, + 12505: 0xD551, + 12506: 0xD558, + 12507: 0xD559, + 12508: 0xD55C, + 12509: 0xD560, + 12510: 0xD565, + 12511: 0xD568, + 12512: 0xD569, + 12513: 0xD56B, + 12514: 0xD56D, + 12515: 0xD574, + 12516: 0xD575, + 12517: 0xD578, + 12518: 0xD57C, + 12519: 0xD584, + 12520: 0xD585, + 12521: 0xD587, + 12522: 0xD588, + 12523: 0xD589, + 12524: 0xD590, + 12525: 0xD5A5, + 12526: 0xD5C8, + 12527: 0xD5C9, + 12528: 0xD5CC, + 12529: 0xD5D0, + 12530: 0xD5D2, + 12531: 0xD5D8, + 12532: 0xD5D9, + 12533: 0xD5DB, + 12534: 0xD5DD, + 12535: 0xD5E4, + 12536: 0xD5E5, + 12537: 0xD5E8, + 12538: 0xD5EC, + 12539: 0xD5F4, + 12540: 0xD5F5, + 12541: 0xD5F7, + 12542: 0xD5F9, + 12543: 0xD600, + 12544: 0xD601, + 12545: 0xD604, + 12546: 0xD608, + 12547: 0xD610, + 12548: 0xD611, + 12549: 0xD613, + 12550: 0xD614, + 12551: 0xD615, + 12552: 0xD61C, + 12553: 0xD620, + 12554: 0xD624, + 12555: 0xD62D, + 12556: 0xD638, + 12557: 0xD639, + 12558: 0xD63C, + 12559: 0xD640, + 12560: 0xD645, + 12561: 0xD648, + 12562: 0xD649, + 12563: 0xD64B, + 12564: 0xD64D, + 12565: 0xD651, + 12566: 0xD654, + 12567: 0xD655, + 12568: 0xD658, + 12569: 0xD65C, + 12570: 0xD667, + 12571: 0xD669, + 12572: 0xD670, + 12573: 0xD671, + 12574: 0xD674, + 12575: 0xD683, + 12576: 0xD685, + 12577: 0xD68C, + 12578: 0xD68D, + 12579: 0xD690, + 12580: 0xD694, + 12581: 0xD69D, + 12582: 0xD69F, + 12583: 0xD6A1, + 12584: 0xD6A8, + 12585: 0xD6AC, + 12586: 0xD6B0, + 12587: 0xD6B9, + 12588: 0xD6BB, + 12589: 0xD6C4, + 12590: 0xD6C5, + 12591: 0xD6C8, + 12592: 0xD6CC, + 12593: 0xD6D1, + 12594: 0xD6D4, + 12595: 0xD6D7, + 12596: 0xD6D9, + 12597: 0xD6E0, + 12598: 0xD6E4, + 12599: 0xD6E8, + 12600: 0xD6F0, + 12601: 0xD6F5, + 12602: 0xD6FC, + 12603: 0xD6FD, + 12604: 0xD700, + 12605: 0xD704, + 12606: 0xD711, + 12607: 0xD718, + 12608: 0xD719, + 12609: 0xD71C, + 12610: 0xD720, + 12611: 0xD728, + 12612: 0xD729, + 12613: 0xD72B, + 12614: 0xD72D, + 12615: 0xD734, + 12616: 0xD735, + 12617: 0xD738, + 12618: 0xD73C, + 12619: 0xD744, + 12620: 0xD747, + 12621: 0xD749, + 12622: 0xD750, + 12623: 0xD751, + 12624: 0xD754, + 12625: 0xD756, + 12626: 0xD757, + 12627: 0xD758, + 12628: 0xD759, + 12629: 0xD760, + 12630: 0xD761, + 12631: 0xD763, + 12632: 0xD765, + 12633: 0xD769, + 12634: 0xD76C, + 12635: 0xD770, + 12636: 0xD774, + 12637: 0xD77C, + 12638: 0xD77D, + 12639: 0xD781, + 12640: 0xD788, + 12641: 0xD789, + 12642: 0xD78C, + 12643: 0xD790, + 12644: 0xD798, + 12645: 0xD799, + 12646: 0xD79B, + 12647: 0xD79D, + 12742: 0x4F3D, + 12743: 0x4F73, + 12744: 0x5047, + 12745: 0x50F9, + 12746: 0x52A0, + 12747: 0x53EF, + 12748: 0x5475, + 12749: 0x54E5, + 12750: 0x5609, + 12751: 0x5AC1, + 12752: 0x5BB6, + 12753: 0x6687, + 12754: 0x67B6, + 12755: 0x67B7, + 12756: 0x67EF, + 12757: 0x6B4C, + 12758: 0x73C2, + 12759: 0x75C2, + 12760: 0x7A3C, + 12761: 0x82DB, + 12762: 0x8304, + 12763: 0x8857, + 12764: 0x8888, + 12765: 0x8A36, + 12766: 0x8CC8, + 12767: 0x8DCF, + 12768: 0x8EFB, + 12769: 0x8FE6, + 12770: 0x99D5, + 12771: 0x523B, + 12772: 0x5374, + 12773: 0x5404, + 12774: 0x606A, + 12775: 0x6164, + 12776: 0x6BBC, + 12777: 0x73CF, + 12778: 0x811A, + 12779: 0x89BA, + 12780: 0x89D2, + 12781: 0x95A3, + 12782: 0x4F83, + 12783: 0x520A, + 12784: 0x58BE, + 12785: 0x5978, + 12786: 0x59E6, + 12787: 0x5E72, + 12788: 0x5E79, + 12789: 0x61C7, + 12790: 0x63C0, + 12791: 0x6746, + 12792: 0x67EC, + 12793: 0x687F, + 12794: 0x6F97, + 12795: 0x764E, + 12796: 0x770B, + 12797: 0x78F5, + 12798: 0x7A08, + 12799: 0x7AFF, + 12800: 0x7C21, + 12801: 0x809D, + 12802: 0x826E, + 12803: 0x8271, + 12804: 0x8AEB, + 12805: 0x9593, + 12806: 0x4E6B, + 12807: 0x559D, + 12808: 0x66F7, + 12809: 0x6E34, + 12810: 0x78A3, + 12811: 0x7AED, + 12812: 0x845B, + 12813: 0x8910, + 12814: 0x874E, + 12815: 0x97A8, + 12816: 0x52D8, + 12817: 0x574E, + 12818: 0x582A, + 12819: 0x5D4C, + 12820: 0x611F, + 12821: 0x61BE, + 12822: 0x6221, + 12823: 0x6562, + 12824: 0x67D1, + 12825: 0x6A44, + 12826: 0x6E1B, + 12827: 0x7518, + 12828: 0x75B3, + 12829: 0x76E3, + 12830: 0x77B0, + 12831: 0x7D3A, + 12832: 0x90AF, + 12833: 0x9451, + 12834: 0x9452, + 12835: 0x9F95, + 12836: 0x5323, + 12837: 0x5CAC, + 12838: 0x7532, + 12839: 0x80DB, + 12840: 0x9240, + 12841: 0x9598, + 12842: 0x525B, + 12843: 0x5808, + 12844: 0x59DC, + 12845: 0x5CA1, + 12846: 0x5D17, + 12847: 0x5EB7, + 12848: 0x5F3A, + 12849: 0x5F4A, + 12850: 0x6177, + 12851: 0x6C5F, + 12852: 0x757A, + 12853: 0x7586, + 12854: 0x7CE0, + 12855: 0x7D73, + 12856: 0x7DB1, + 12857: 0x7F8C, + 12858: 0x8154, + 12859: 0x8221, + 12860: 0x8591, + 12861: 0x8941, + 12862: 0x8B1B, + 12863: 0x92FC, + 12864: 0x964D, + 12865: 0x9C47, + 12866: 0x4ECB, + 12867: 0x4EF7, + 12868: 0x500B, + 12869: 0x51F1, + 12870: 0x584F, + 12871: 0x6137, + 12872: 0x613E, + 12873: 0x6168, + 12874: 0x6539, + 12875: 0x69EA, + 12876: 0x6F11, + 12877: 0x75A5, + 12878: 0x7686, + 12879: 0x76D6, + 12880: 0x7B87, + 12881: 0x82A5, + 12882: 0x84CB, + 12883: 0xF900, + 12884: 0x93A7, + 12885: 0x958B, + 12886: 0x5580, + 12887: 0x5BA2, + 12888: 0x5751, + 12889: 0xF901, + 12890: 0x7CB3, + 12891: 0x7FB9, + 12892: 0x91B5, + 12893: 0x5028, + 12894: 0x53BB, + 12895: 0x5C45, + 12896: 0x5DE8, + 12897: 0x62D2, + 12898: 0x636E, + 12899: 0x64DA, + 12900: 0x64E7, + 12901: 0x6E20, + 12902: 0x70AC, + 12903: 0x795B, + 12904: 0x8DDD, + 12905: 0x8E1E, + 12906: 0xF902, + 12907: 0x907D, + 12908: 0x9245, + 12909: 0x92F8, + 12910: 0x4E7E, + 12911: 0x4EF6, + 12912: 0x5065, + 12913: 0x5DFE, + 12914: 0x5EFA, + 12915: 0x6106, + 12916: 0x6957, + 12917: 0x8171, + 12918: 0x8654, + 12919: 0x8E47, + 12920: 0x9375, + 12921: 0x9A2B, + 12922: 0x4E5E, + 12923: 0x5091, + 12924: 0x6770, + 12925: 0x6840, + 12926: 0x5109, + 12927: 0x528D, + 12928: 0x5292, + 12929: 0x6AA2, + 12930: 0x77BC, + 12931: 0x9210, + 12932: 0x9ED4, + 12933: 0x52AB, + 12934: 0x602F, + 12935: 0x8FF2, + 12936: 0x5048, + 12937: 0x61A9, + 12938: 0x63ED, + 12939: 0x64CA, + 12940: 0x683C, + 12941: 0x6A84, + 12942: 0x6FC0, + 12943: 0x8188, + 12944: 0x89A1, + 12945: 0x9694, + 12946: 0x5805, + 12947: 0x727D, + 12948: 0x72AC, + 12949: 0x7504, + 12950: 0x7D79, + 12951: 0x7E6D, + 12952: 0x80A9, + 12953: 0x898B, + 12954: 0x8B74, + 12955: 0x9063, + 12956: 0x9D51, + 12957: 0x6289, + 12958: 0x6C7A, + 12959: 0x6F54, + 12960: 0x7D50, + 12961: 0x7F3A, + 12962: 0x8A23, + 12963: 0x517C, + 12964: 0x614A, + 12965: 0x7B9D, + 12966: 0x8B19, + 12967: 0x9257, + 12968: 0x938C, + 12969: 0x4EAC, + 12970: 0x4FD3, + 12971: 0x501E, + 12972: 0x50BE, + 12973: 0x5106, + 12974: 0x52C1, + 12975: 0x52CD, + 12976: 0x537F, + 12977: 0x5770, + 12978: 0x5883, + 12979: 0x5E9A, + 12980: 0x5F91, + 12981: 0x6176, + 12982: 0x61AC, + 12983: 0x64CE, + 12984: 0x656C, + 12985: 0x666F, + 12986: 0x66BB, + 12987: 0x66F4, + 12988: 0x6897, + 12989: 0x6D87, + 12990: 0x7085, + 12991: 0x70F1, + 12992: 0x749F, + 12993: 0x74A5, + 12994: 0x74CA, + 12995: 0x75D9, + 12996: 0x786C, + 12997: 0x78EC, + 12998: 0x7ADF, + 12999: 0x7AF6, + 13000: 0x7D45, + 13001: 0x7D93, + 13002: 0x8015, + 13003: 0x803F, + 13004: 0x811B, + 13005: 0x8396, + 13006: 0x8B66, + 13007: 0x8F15, + 13008: 0x9015, + 13009: 0x93E1, + 13010: 0x9803, + 13011: 0x9838, + 13012: 0x9A5A, + 13013: 0x9BE8, + 13014: 0x4FC2, + 13015: 0x5553, + 13016: 0x583A, + 13017: 0x5951, + 13018: 0x5B63, + 13019: 0x5C46, + 13020: 0x60B8, + 13021: 0x6212, + 13022: 0x6842, + 13023: 0x68B0, + 13024: 0x68E8, + 13025: 0x6EAA, + 13026: 0x754C, + 13027: 0x7678, + 13028: 0x78CE, + 13029: 0x7A3D, + 13030: 0x7CFB, + 13031: 0x7E6B, + 13032: 0x7E7C, + 13033: 0x8A08, + 13034: 0x8AA1, + 13035: 0x8C3F, + 13036: 0x968E, + 13037: 0x9DC4, + 13038: 0x53E4, + 13039: 0x53E9, + 13040: 0x544A, + 13041: 0x5471, + 13042: 0x56FA, + 13043: 0x59D1, + 13044: 0x5B64, + 13045: 0x5C3B, + 13046: 0x5EAB, + 13047: 0x62F7, + 13048: 0x6537, + 13049: 0x6545, + 13050: 0x6572, + 13051: 0x66A0, + 13052: 0x67AF, + 13053: 0x69C1, + 13054: 0x6CBD, + 13055: 0x75FC, + 13056: 0x7690, + 13057: 0x777E, + 13058: 0x7A3F, + 13059: 0x7F94, + 13060: 0x8003, + 13061: 0x80A1, + 13062: 0x818F, + 13063: 0x82E6, + 13064: 0x82FD, + 13065: 0x83F0, + 13066: 0x85C1, + 13067: 0x8831, + 13068: 0x88B4, + 13069: 0x8AA5, + 13070: 0xF903, + 13071: 0x8F9C, + 13072: 0x932E, + 13073: 0x96C7, + 13074: 0x9867, + 13075: 0x9AD8, + 13076: 0x9F13, + 13077: 0x54ED, + 13078: 0x659B, + 13079: 0x66F2, + 13080: 0x688F, + 13081: 0x7A40, + 13082: 0x8C37, + 13083: 0x9D60, + 13084: 0x56F0, + 13085: 0x5764, + 13086: 0x5D11, + 13087: 0x6606, + 13088: 0x68B1, + 13089: 0x68CD, + 13090: 0x6EFE, + 13091: 0x7428, + 13092: 0x889E, + 13093: 0x9BE4, + 13094: 0x6C68, + 13095: 0xF904, + 13096: 0x9AA8, + 13097: 0x4F9B, + 13098: 0x516C, + 13099: 0x5171, + 13100: 0x529F, + 13101: 0x5B54, + 13102: 0x5DE5, + 13103: 0x6050, + 13104: 0x606D, + 13105: 0x62F1, + 13106: 0x63A7, + 13107: 0x653B, + 13108: 0x73D9, + 13109: 0x7A7A, + 13110: 0x86A3, + 13111: 0x8CA2, + 13112: 0x978F, + 13113: 0x4E32, + 13114: 0x5BE1, + 13115: 0x6208, + 13116: 0x679C, + 13117: 0x74DC, + 13118: 0x79D1, + 13119: 0x83D3, + 13120: 0x8A87, + 13121: 0x8AB2, + 13122: 0x8DE8, + 13123: 0x904E, + 13124: 0x934B, + 13125: 0x9846, + 13126: 0x5ED3, + 13127: 0x69E8, + 13128: 0x85FF, + 13129: 0x90ED, + 13130: 0xF905, + 13131: 0x51A0, + 13132: 0x5B98, + 13133: 0x5BEC, + 13134: 0x6163, + 13135: 0x68FA, + 13136: 0x6B3E, + 13137: 0x704C, + 13138: 0x742F, + 13139: 0x74D8, + 13140: 0x7BA1, + 13141: 0x7F50, + 13142: 0x83C5, + 13143: 0x89C0, + 13144: 0x8CAB, + 13145: 0x95DC, + 13146: 0x9928, + 13147: 0x522E, + 13148: 0x605D, + 13149: 0x62EC, + 13150: 0x9002, + 13151: 0x4F8A, + 13152: 0x5149, + 13153: 0x5321, + 13154: 0x58D9, + 13155: 0x5EE3, + 13156: 0x66E0, + 13157: 0x6D38, + 13158: 0x709A, + 13159: 0x72C2, + 13160: 0x73D6, + 13161: 0x7B50, + 13162: 0x80F1, + 13163: 0x945B, + 13164: 0x5366, + 13165: 0x639B, + 13166: 0x7F6B, + 13167: 0x4E56, + 13168: 0x5080, + 13169: 0x584A, + 13170: 0x58DE, + 13171: 0x602A, + 13172: 0x6127, + 13173: 0x62D0, + 13174: 0x69D0, + 13175: 0x9B41, + 13176: 0x5B8F, + 13177: 0x7D18, + 13178: 0x80B1, + 13179: 0x8F5F, + 13180: 0x4EA4, + 13181: 0x50D1, + 13182: 0x54AC, + 13183: 0x55AC, + 13184: 0x5B0C, + 13185: 0x5DA0, + 13186: 0x5DE7, + 13187: 0x652A, + 13188: 0x654E, + 13189: 0x6821, + 13190: 0x6A4B, + 13191: 0x72E1, + 13192: 0x768E, + 13193: 0x77EF, + 13194: 0x7D5E, + 13195: 0x7FF9, + 13196: 0x81A0, + 13197: 0x854E, + 13198: 0x86DF, + 13199: 0x8F03, + 13200: 0x8F4E, + 13201: 0x90CA, + 13202: 0x9903, + 13203: 0x9A55, + 13204: 0x9BAB, + 13205: 0x4E18, + 13206: 0x4E45, + 13207: 0x4E5D, + 13208: 0x4EC7, + 13209: 0x4FF1, + 13210: 0x5177, + 13211: 0x52FE, + 13212: 0x5340, + 13213: 0x53E3, + 13214: 0x53E5, + 13215: 0x548E, + 13216: 0x5614, + 13217: 0x5775, + 13218: 0x57A2, + 13219: 0x5BC7, + 13220: 0x5D87, + 13221: 0x5ED0, + 13222: 0x61FC, + 13223: 0x62D8, + 13224: 0x6551, + 13225: 0x67B8, + 13226: 0x67E9, + 13227: 0x69CB, + 13228: 0x6B50, + 13229: 0x6BC6, + 13230: 0x6BEC, + 13231: 0x6C42, + 13232: 0x6E9D, + 13233: 0x7078, + 13234: 0x72D7, + 13235: 0x7396, + 13236: 0x7403, + 13237: 0x77BF, + 13238: 0x77E9, + 13239: 0x7A76, + 13240: 0x7D7F, + 13241: 0x8009, + 13242: 0x81FC, + 13243: 0x8205, + 13244: 0x820A, + 13245: 0x82DF, + 13246: 0x8862, + 13247: 0x8B33, + 13248: 0x8CFC, + 13249: 0x8EC0, + 13250: 0x9011, + 13251: 0x90B1, + 13252: 0x9264, + 13253: 0x92B6, + 13254: 0x99D2, + 13255: 0x9A45, + 13256: 0x9CE9, + 13257: 0x9DD7, + 13258: 0x9F9C, + 13259: 0x570B, + 13260: 0x5C40, + 13261: 0x83CA, + 13262: 0x97A0, + 13263: 0x97AB, + 13264: 0x9EB4, + 13265: 0x541B, + 13266: 0x7A98, + 13267: 0x7FA4, + 13268: 0x88D9, + 13269: 0x8ECD, + 13270: 0x90E1, + 13271: 0x5800, + 13272: 0x5C48, + 13273: 0x6398, + 13274: 0x7A9F, + 13275: 0x5BAE, + 13276: 0x5F13, + 13277: 0x7A79, + 13278: 0x7AAE, + 13279: 0x828E, + 13280: 0x8EAC, + 13281: 0x5026, + 13282: 0x5238, + 13283: 0x52F8, + 13284: 0x5377, + 13285: 0x5708, + 13286: 0x62F3, + 13287: 0x6372, + 13288: 0x6B0A, + 13289: 0x6DC3, + 13290: 0x7737, + 13291: 0x53A5, + 13292: 0x7357, + 13293: 0x8568, + 13294: 0x8E76, + 13295: 0x95D5, + 13296: 0x673A, + 13297: 0x6AC3, + 13298: 0x6F70, + 13299: 0x8A6D, + 13300: 0x8ECC, + 13301: 0x994B, + 13302: 0xF906, + 13303: 0x6677, + 13304: 0x6B78, + 13305: 0x8CB4, + 13306: 0x9B3C, + 13307: 0xF907, + 13308: 0x53EB, + 13309: 0x572D, + 13310: 0x594E, + 13311: 0x63C6, + 13312: 0x69FB, + 13313: 0x73EA, + 13314: 0x7845, + 13315: 0x7ABA, + 13316: 0x7AC5, + 13317: 0x7CFE, + 13318: 0x8475, + 13319: 0x898F, + 13320: 0x8D73, + 13321: 0x9035, + 13322: 0x95A8, + 13323: 0x52FB, + 13324: 0x5747, + 13325: 0x7547, + 13326: 0x7B60, + 13327: 0x83CC, + 13328: 0x921E, + 13329: 0xF908, + 13330: 0x6A58, + 13331: 0x514B, + 13332: 0x524B, + 13333: 0x5287, + 13334: 0x621F, + 13335: 0x68D8, + 13336: 0x6975, + 13337: 0x9699, + 13338: 0x50C5, + 13339: 0x52A4, + 13340: 0x52E4, + 13341: 0x61C3, + 13342: 0x65A4, + 13343: 0x6839, + 13344: 0x69FF, + 13345: 0x747E, + 13346: 0x7B4B, + 13347: 0x82B9, + 13348: 0x83EB, + 13349: 0x89B2, + 13350: 0x8B39, + 13351: 0x8FD1, + 13352: 0x9949, + 13353: 0xF909, + 13354: 0x4ECA, + 13355: 0x5997, + 13356: 0x64D2, + 13357: 0x6611, + 13358: 0x6A8E, + 13359: 0x7434, + 13360: 0x7981, + 13361: 0x79BD, + 13362: 0x82A9, + 13363: 0x887E, + 13364: 0x887F, + 13365: 0x895F, + 13366: 0xF90A, + 13367: 0x9326, + 13368: 0x4F0B, + 13369: 0x53CA, + 13370: 0x6025, + 13371: 0x6271, + 13372: 0x6C72, + 13373: 0x7D1A, + 13374: 0x7D66, + 13375: 0x4E98, + 13376: 0x5162, + 13377: 0x77DC, + 13378: 0x80AF, + 13379: 0x4F01, + 13380: 0x4F0E, + 13381: 0x5176, + 13382: 0x5180, + 13383: 0x55DC, + 13384: 0x5668, + 13385: 0x573B, + 13386: 0x57FA, + 13387: 0x57FC, + 13388: 0x5914, + 13389: 0x5947, + 13390: 0x5993, + 13391: 0x5BC4, + 13392: 0x5C90, + 13393: 0x5D0E, + 13394: 0x5DF1, + 13395: 0x5E7E, + 13396: 0x5FCC, + 13397: 0x6280, + 13398: 0x65D7, + 13399: 0x65E3, + 13400: 0x671E, + 13401: 0x671F, + 13402: 0x675E, + 13403: 0x68CB, + 13404: 0x68C4, + 13405: 0x6A5F, + 13406: 0x6B3A, + 13407: 0x6C23, + 13408: 0x6C7D, + 13409: 0x6C82, + 13410: 0x6DC7, + 13411: 0x7398, + 13412: 0x7426, + 13413: 0x742A, + 13414: 0x7482, + 13415: 0x74A3, + 13416: 0x7578, + 13417: 0x757F, + 13418: 0x7881, + 13419: 0x78EF, + 13420: 0x7941, + 13421: 0x7947, + 13422: 0x7948, + 13423: 0x797A, + 13424: 0x7B95, + 13425: 0x7D00, + 13426: 0x7DBA, + 13427: 0x7F88, + 13428: 0x8006, + 13429: 0x802D, + 13430: 0x808C, + 13431: 0x8A18, + 13432: 0x8B4F, + 13433: 0x8C48, + 13434: 0x8D77, + 13435: 0x9321, + 13436: 0x9324, + 13437: 0x98E2, + 13438: 0x9951, + 13439: 0x9A0E, + 13440: 0x9A0F, + 13441: 0x9A65, + 13442: 0x9E92, + 13443: 0x7DCA, + 13444: 0x4F76, + 13445: 0x5409, + 13446: 0x62EE, + 13447: 0x6854, + 13448: 0x91D1, + 13449: 0x55AB, + 13450: 0x513A, + 13451: 0xF90B, + 13452: 0xF90C, + 13453: 0x5A1C, + 13454: 0x61E6, + 13455: 0xF90D, + 13456: 0x62CF, + 13457: 0x62FF, + 13458: 0xF90E, + 13459: 0xF90F, + 13460: 0xF910, + 13461: 0xF911, + 13462: 0xF912, + 13463: 0xF913, + 13464: 0x90A3, + 13465: 0xF914, + 13466: 0xF915, + 13467: 0xF916, + 13468: 0xF917, + 13469: 0xF918, + 13470: 0x8AFE, + 13471: 0xF919, + 13472: 0xF91A, + 13473: 0xF91B, + 13474: 0xF91C, + 13475: 0x6696, + 13476: 0xF91D, + 13477: 0x7156, + 13478: 0xF91E, + 13479: 0xF91F, + 13480: 0x96E3, + 13481: 0xF920, + 13482: 0x634F, + 13483: 0x637A, + 13484: 0x5357, + 13485: 0xF921, + 13486: 0x678F, + 13487: 0x6960, + 13488: 0x6E73, + 13489: 0xF922, + 13490: 0x7537, + 13491: 0xF923, + 13492: 0xF924, + 13493: 0xF925, + 13494: 0x7D0D, + 13495: 0xF926, + 13496: 0xF927, + 13497: 0x8872, + 13498: 0x56CA, + 13499: 0x5A18, + 13500: 0xF928, + 13501: 0xF929, + 13502: 0xF92A, + 13503: 0xF92B, + 13504: 0xF92C, + 13505: 0x4E43, + 13506: 0xF92D, + 13507: 0x5167, + 13508: 0x5948, + 13509: 0x67F0, + 13510: 0x8010, + 13511: 0xF92E, + 13512: 0x5973, + 13513: 0x5E74, + 13514: 0x649A, + 13515: 0x79CA, + 13516: 0x5FF5, + 13517: 0x606C, + 13518: 0x62C8, + 13519: 0x637B, + 13520: 0x5BE7, + 13521: 0x5BD7, + 13522: 0x52AA, + 13523: 0xF92F, + 13524: 0x5974, + 13525: 0x5F29, + 13526: 0x6012, + 13527: 0xF930, + 13528: 0xF931, + 13529: 0xF932, + 13530: 0x7459, + 13531: 0xF933, + 13532: 0xF934, + 13533: 0xF935, + 13534: 0xF936, + 13535: 0xF937, + 13536: 0xF938, + 13537: 0x99D1, + 13538: 0xF939, + 13539: 0xF93A, + 13540: 0xF93B, + 13541: 0xF93C, + 13542: 0xF93D, + 13543: 0xF93E, + 13544: 0xF93F, + 13545: 0xF940, + 13546: 0xF941, + 13547: 0xF942, + 13548: 0xF943, + 13549: 0x6FC3, + 13550: 0xF944, + 13551: 0xF945, + 13552: 0x81BF, + 13553: 0x8FB2, + 13554: 0x60F1, + 13555: 0xF946, + 13556: 0xF947, + 13557: 0x8166, + 13558: 0xF948, + 13559: 0xF949, + 13560: 0x5C3F, + 13561: 0xF94A, + 13562: 0xF94B, + 13563: 0xF94C, + 13564: 0xF94D, + 13565: 0xF94E, + 13566: 0xF94F, + 13567: 0xF950, + 13568: 0xF951, + 13569: 0x5AE9, + 13570: 0x8A25, + 13571: 0x677B, + 13572: 0x7D10, + 13573: 0xF952, + 13574: 0xF953, + 13575: 0xF954, + 13576: 0xF955, + 13577: 0xF956, + 13578: 0xF957, + 13579: 0x80FD, + 13580: 0xF958, + 13581: 0xF959, + 13582: 0x5C3C, + 13583: 0x6CE5, + 13584: 0x533F, + 13585: 0x6EBA, + 13586: 0x591A, + 13587: 0x8336, + 13588: 0x4E39, + 13589: 0x4EB6, + 13590: 0x4F46, + 13591: 0x55AE, + 13592: 0x5718, + 13593: 0x58C7, + 13594: 0x5F56, + 13595: 0x65B7, + 13596: 0x65E6, + 13597: 0x6A80, + 13598: 0x6BB5, + 13599: 0x6E4D, + 13600: 0x77ED, + 13601: 0x7AEF, + 13602: 0x7C1E, + 13603: 0x7DDE, + 13604: 0x86CB, + 13605: 0x8892, + 13606: 0x9132, + 13607: 0x935B, + 13608: 0x64BB, + 13609: 0x6FBE, + 13610: 0x737A, + 13611: 0x75B8, + 13612: 0x9054, + 13613: 0x5556, + 13614: 0x574D, + 13615: 0x61BA, + 13616: 0x64D4, + 13617: 0x66C7, + 13618: 0x6DE1, + 13619: 0x6E5B, + 13620: 0x6F6D, + 13621: 0x6FB9, + 13622: 0x75F0, + 13623: 0x8043, + 13624: 0x81BD, + 13625: 0x8541, + 13626: 0x8983, + 13627: 0x8AC7, + 13628: 0x8B5A, + 13629: 0x931F, + 13630: 0x6C93, + 13631: 0x7553, + 13632: 0x7B54, + 13633: 0x8E0F, + 13634: 0x905D, + 13635: 0x5510, + 13636: 0x5802, + 13637: 0x5858, + 13638: 0x5E62, + 13639: 0x6207, + 13640: 0x649E, + 13641: 0x68E0, + 13642: 0x7576, + 13643: 0x7CD6, + 13644: 0x87B3, + 13645: 0x9EE8, + 13646: 0x4EE3, + 13647: 0x5788, + 13648: 0x576E, + 13649: 0x5927, + 13650: 0x5C0D, + 13651: 0x5CB1, + 13652: 0x5E36, + 13653: 0x5F85, + 13654: 0x6234, + 13655: 0x64E1, + 13656: 0x73B3, + 13657: 0x81FA, + 13658: 0x888B, + 13659: 0x8CB8, + 13660: 0x968A, + 13661: 0x9EDB, + 13662: 0x5B85, + 13663: 0x5FB7, + 13664: 0x60B3, + 13665: 0x5012, + 13666: 0x5200, + 13667: 0x5230, + 13668: 0x5716, + 13669: 0x5835, + 13670: 0x5857, + 13671: 0x5C0E, + 13672: 0x5C60, + 13673: 0x5CF6, + 13674: 0x5D8B, + 13675: 0x5EA6, + 13676: 0x5F92, + 13677: 0x60BC, + 13678: 0x6311, + 13679: 0x6389, + 13680: 0x6417, + 13681: 0x6843, + 13682: 0x68F9, + 13683: 0x6AC2, + 13684: 0x6DD8, + 13685: 0x6E21, + 13686: 0x6ED4, + 13687: 0x6FE4, + 13688: 0x71FE, + 13689: 0x76DC, + 13690: 0x7779, + 13691: 0x79B1, + 13692: 0x7A3B, + 13693: 0x8404, + 13694: 0x89A9, + 13695: 0x8CED, + 13696: 0x8DF3, + 13697: 0x8E48, + 13698: 0x9003, + 13699: 0x9014, + 13700: 0x9053, + 13701: 0x90FD, + 13702: 0x934D, + 13703: 0x9676, + 13704: 0x97DC, + 13705: 0x6BD2, + 13706: 0x7006, + 13707: 0x7258, + 13708: 0x72A2, + 13709: 0x7368, + 13710: 0x7763, + 13711: 0x79BF, + 13712: 0x7BE4, + 13713: 0x7E9B, + 13714: 0x8B80, + 13715: 0x58A9, + 13716: 0x60C7, + 13717: 0x6566, + 13718: 0x65FD, + 13719: 0x66BE, + 13720: 0x6C8C, + 13721: 0x711E, + 13722: 0x71C9, + 13723: 0x8C5A, + 13724: 0x9813, + 13725: 0x4E6D, + 13726: 0x7A81, + 13727: 0x4EDD, + 13728: 0x51AC, + 13729: 0x51CD, + 13730: 0x52D5, + 13731: 0x540C, + 13732: 0x61A7, + 13733: 0x6771, + 13734: 0x6850, + 13735: 0x68DF, + 13736: 0x6D1E, + 13737: 0x6F7C, + 13738: 0x75BC, + 13739: 0x77B3, + 13740: 0x7AE5, + 13741: 0x80F4, + 13742: 0x8463, + 13743: 0x9285, + 13744: 0x515C, + 13745: 0x6597, + 13746: 0x675C, + 13747: 0x6793, + 13748: 0x75D8, + 13749: 0x7AC7, + 13750: 0x8373, + 13751: 0xF95A, + 13752: 0x8C46, + 13753: 0x9017, + 13754: 0x982D, + 13755: 0x5C6F, + 13756: 0x81C0, + 13757: 0x829A, + 13758: 0x9041, + 13759: 0x906F, + 13760: 0x920D, + 13761: 0x5F97, + 13762: 0x5D9D, + 13763: 0x6A59, + 13764: 0x71C8, + 13765: 0x767B, + 13766: 0x7B49, + 13767: 0x85E4, + 13768: 0x8B04, + 13769: 0x9127, + 13770: 0x9A30, + 13771: 0x5587, + 13772: 0x61F6, + 13773: 0xF95B, + 13774: 0x7669, + 13775: 0x7F85, + 13776: 0x863F, + 13777: 0x87BA, + 13778: 0x88F8, + 13779: 0x908F, + 13780: 0xF95C, + 13781: 0x6D1B, + 13782: 0x70D9, + 13783: 0x73DE, + 13784: 0x7D61, + 13785: 0x843D, + 13786: 0xF95D, + 13787: 0x916A, + 13788: 0x99F1, + 13789: 0xF95E, + 13790: 0x4E82, + 13791: 0x5375, + 13792: 0x6B04, + 13793: 0x6B12, + 13794: 0x703E, + 13795: 0x721B, + 13796: 0x862D, + 13797: 0x9E1E, + 13798: 0x524C, + 13799: 0x8FA3, + 13800: 0x5D50, + 13801: 0x64E5, + 13802: 0x652C, + 13803: 0x6B16, + 13804: 0x6FEB, + 13805: 0x7C43, + 13806: 0x7E9C, + 13807: 0x85CD, + 13808: 0x8964, + 13809: 0x89BD, + 13810: 0x62C9, + 13811: 0x81D8, + 13812: 0x881F, + 13813: 0x5ECA, + 13814: 0x6717, + 13815: 0x6D6A, + 13816: 0x72FC, + 13817: 0x7405, + 13818: 0x746F, + 13819: 0x8782, + 13820: 0x90DE, + 13821: 0x4F86, + 13822: 0x5D0D, + 13823: 0x5FA0, + 13824: 0x840A, + 13825: 0x51B7, + 13826: 0x63A0, + 13827: 0x7565, + 13828: 0x4EAE, + 13829: 0x5006, + 13830: 0x5169, + 13831: 0x51C9, + 13832: 0x6881, + 13833: 0x6A11, + 13834: 0x7CAE, + 13835: 0x7CB1, + 13836: 0x7CE7, + 13837: 0x826F, + 13838: 0x8AD2, + 13839: 0x8F1B, + 13840: 0x91CF, + 13841: 0x4FB6, + 13842: 0x5137, + 13843: 0x52F5, + 13844: 0x5442, + 13845: 0x5EEC, + 13846: 0x616E, + 13847: 0x623E, + 13848: 0x65C5, + 13849: 0x6ADA, + 13850: 0x6FFE, + 13851: 0x792A, + 13852: 0x85DC, + 13853: 0x8823, + 13854: 0x95AD, + 13855: 0x9A62, + 13856: 0x9A6A, + 13857: 0x9E97, + 13858: 0x9ECE, + 13859: 0x529B, + 13860: 0x66C6, + 13861: 0x6B77, + 13862: 0x701D, + 13863: 0x792B, + 13864: 0x8F62, + 13865: 0x9742, + 13866: 0x6190, + 13867: 0x6200, + 13868: 0x6523, + 13869: 0x6F23, + 13870: 0x7149, + 13871: 0x7489, + 13872: 0x7DF4, + 13873: 0x806F, + 13874: 0x84EE, + 13875: 0x8F26, + 13876: 0x9023, + 13877: 0x934A, + 13878: 0x51BD, + 13879: 0x5217, + 13880: 0x52A3, + 13881: 0x6D0C, + 13882: 0x70C8, + 13883: 0x88C2, + 13884: 0x5EC9, + 13885: 0x6582, + 13886: 0x6BAE, + 13887: 0x6FC2, + 13888: 0x7C3E, + 13889: 0x7375, + 13890: 0x4EE4, + 13891: 0x4F36, + 13892: 0x56F9, + 13893: 0xF95F, + 13894: 0x5CBA, + 13895: 0x5DBA, + 13896: 0x601C, + 13897: 0x73B2, + 13898: 0x7B2D, + 13899: 0x7F9A, + 13900: 0x7FCE, + 13901: 0x8046, + 13902: 0x901E, + 13903: 0x9234, + 13904: 0x96F6, + 13905: 0x9748, + 13906: 0x9818, + 13907: 0x9F61, + 13908: 0x4F8B, + 13909: 0x6FA7, + 13910: 0x79AE, + 13911: 0x91B4, + 13912: 0x96B7, + 13913: 0x52DE, + 13914: 0xF960, + 13915: 0x6488, + 13916: 0x64C4, + 13917: 0x6AD3, + 13918: 0x6F5E, + 13919: 0x7018, + 13920: 0x7210, + 13921: 0x76E7, + 13922: 0x8001, + 13923: 0x8606, + 13924: 0x865C, + 13925: 0x8DEF, + 13926: 0x8F05, + 13927: 0x9732, + 13928: 0x9B6F, + 13929: 0x9DFA, + 13930: 0x9E75, + 13931: 0x788C, + 13932: 0x797F, + 13933: 0x7DA0, + 13934: 0x83C9, + 13935: 0x9304, + 13936: 0x9E7F, + 13937: 0x9E93, + 13938: 0x8AD6, + 13939: 0x58DF, + 13940: 0x5F04, + 13941: 0x6727, + 13942: 0x7027, + 13943: 0x74CF, + 13944: 0x7C60, + 13945: 0x807E, + 13946: 0x5121, + 13947: 0x7028, + 13948: 0x7262, + 13949: 0x78CA, + 13950: 0x8CC2, + 13951: 0x8CDA, + 13952: 0x8CF4, + 13953: 0x96F7, + 13954: 0x4E86, + 13955: 0x50DA, + 13956: 0x5BEE, + 13957: 0x5ED6, + 13958: 0x6599, + 13959: 0x71CE, + 13960: 0x7642, + 13961: 0x77AD, + 13962: 0x804A, + 13963: 0x84FC, + 13964: 0x907C, + 13965: 0x9B27, + 13966: 0x9F8D, + 13967: 0x58D8, + 13968: 0x5A41, + 13969: 0x5C62, + 13970: 0x6A13, + 13971: 0x6DDA, + 13972: 0x6F0F, + 13973: 0x763B, + 13974: 0x7D2F, + 13975: 0x7E37, + 13976: 0x851E, + 13977: 0x8938, + 13978: 0x93E4, + 13979: 0x964B, + 13980: 0x5289, + 13981: 0x65D2, + 13982: 0x67F3, + 13983: 0x69B4, + 13984: 0x6D41, + 13985: 0x6E9C, + 13986: 0x700F, + 13987: 0x7409, + 13988: 0x7460, + 13989: 0x7559, + 13990: 0x7624, + 13991: 0x786B, + 13992: 0x8B2C, + 13993: 0x985E, + 13994: 0x516D, + 13995: 0x622E, + 13996: 0x9678, + 13997: 0x4F96, + 13998: 0x502B, + 13999: 0x5D19, + 14000: 0x6DEA, + 14001: 0x7DB8, + 14002: 0x8F2A, + 14003: 0x5F8B, + 14004: 0x6144, + 14005: 0x6817, + 14006: 0xF961, + 14007: 0x9686, + 14008: 0x52D2, + 14009: 0x808B, + 14010: 0x51DC, + 14011: 0x51CC, + 14012: 0x695E, + 14013: 0x7A1C, + 14014: 0x7DBE, + 14015: 0x83F1, + 14016: 0x9675, + 14017: 0x4FDA, + 14018: 0x5229, + 14019: 0x5398, + 14020: 0x540F, + 14021: 0x550E, + 14022: 0x5C65, + 14023: 0x60A7, + 14024: 0x674E, + 14025: 0x68A8, + 14026: 0x6D6C, + 14027: 0x7281, + 14028: 0x72F8, + 14029: 0x7406, + 14030: 0x7483, + 14031: 0xF962, + 14032: 0x75E2, + 14033: 0x7C6C, + 14034: 0x7F79, + 14035: 0x7FB8, + 14036: 0x8389, + 14037: 0x88CF, + 14038: 0x88E1, + 14039: 0x91CC, + 14040: 0x91D0, + 14041: 0x96E2, + 14042: 0x9BC9, + 14043: 0x541D, + 14044: 0x6F7E, + 14045: 0x71D0, + 14046: 0x7498, + 14047: 0x85FA, + 14048: 0x8EAA, + 14049: 0x96A3, + 14050: 0x9C57, + 14051: 0x9E9F, + 14052: 0x6797, + 14053: 0x6DCB, + 14054: 0x7433, + 14055: 0x81E8, + 14056: 0x9716, + 14057: 0x782C, + 14058: 0x7ACB, + 14059: 0x7B20, + 14060: 0x7C92, + 14061: 0x6469, + 14062: 0x746A, + 14063: 0x75F2, + 14064: 0x78BC, + 14065: 0x78E8, + 14066: 0x99AC, + 14067: 0x9B54, + 14068: 0x9EBB, + 14069: 0x5BDE, + 14070: 0x5E55, + 14071: 0x6F20, + 14072: 0x819C, + 14073: 0x83AB, + 14074: 0x9088, + 14075: 0x4E07, + 14076: 0x534D, + 14077: 0x5A29, + 14078: 0x5DD2, + 14079: 0x5F4E, + 14080: 0x6162, + 14081: 0x633D, + 14082: 0x6669, + 14083: 0x66FC, + 14084: 0x6EFF, + 14085: 0x6F2B, + 14086: 0x7063, + 14087: 0x779E, + 14088: 0x842C, + 14089: 0x8513, + 14090: 0x883B, + 14091: 0x8F13, + 14092: 0x9945, + 14093: 0x9C3B, + 14094: 0x551C, + 14095: 0x62B9, + 14096: 0x672B, + 14097: 0x6CAB, + 14098: 0x8309, + 14099: 0x896A, + 14100: 0x977A, + 14101: 0x4EA1, + 14102: 0x5984, + 14103: 0x5FD8, + 14104: 0x5FD9, + 14105: 0x671B, + 14106: 0x7DB2, + 14107: 0x7F54, + 14108: 0x8292, + 14109: 0x832B, + 14110: 0x83BD, + 14111: 0x8F1E, + 14112: 0x9099, + 14113: 0x57CB, + 14114: 0x59B9, + 14115: 0x5A92, + 14116: 0x5BD0, + 14117: 0x6627, + 14118: 0x679A, + 14119: 0x6885, + 14120: 0x6BCF, + 14121: 0x7164, + 14122: 0x7F75, + 14123: 0x8CB7, + 14124: 0x8CE3, + 14125: 0x9081, + 14126: 0x9B45, + 14127: 0x8108, + 14128: 0x8C8A, + 14129: 0x964C, + 14130: 0x9A40, + 14131: 0x9EA5, + 14132: 0x5B5F, + 14133: 0x6C13, + 14134: 0x731B, + 14135: 0x76F2, + 14136: 0x76DF, + 14137: 0x840C, + 14138: 0x51AA, + 14139: 0x8993, + 14140: 0x514D, + 14141: 0x5195, + 14142: 0x52C9, + 14143: 0x68C9, + 14144: 0x6C94, + 14145: 0x7704, + 14146: 0x7720, + 14147: 0x7DBF, + 14148: 0x7DEC, + 14149: 0x9762, + 14150: 0x9EB5, + 14151: 0x6EC5, + 14152: 0x8511, + 14153: 0x51A5, + 14154: 0x540D, + 14155: 0x547D, + 14156: 0x660E, + 14157: 0x669D, + 14158: 0x6927, + 14159: 0x6E9F, + 14160: 0x76BF, + 14161: 0x7791, + 14162: 0x8317, + 14163: 0x84C2, + 14164: 0x879F, + 14165: 0x9169, + 14166: 0x9298, + 14167: 0x9CF4, + 14168: 0x8882, + 14169: 0x4FAE, + 14170: 0x5192, + 14171: 0x52DF, + 14172: 0x59C6, + 14173: 0x5E3D, + 14174: 0x6155, + 14175: 0x6478, + 14176: 0x6479, + 14177: 0x66AE, + 14178: 0x67D0, + 14179: 0x6A21, + 14180: 0x6BCD, + 14181: 0x6BDB, + 14182: 0x725F, + 14183: 0x7261, + 14184: 0x7441, + 14185: 0x7738, + 14186: 0x77DB, + 14187: 0x8017, + 14188: 0x82BC, + 14189: 0x8305, + 14190: 0x8B00, + 14191: 0x8B28, + 14192: 0x8C8C, + 14193: 0x6728, + 14194: 0x6C90, + 14195: 0x7267, + 14196: 0x76EE, + 14197: 0x7766, + 14198: 0x7A46, + 14199: 0x9DA9, + 14200: 0x6B7F, + 14201: 0x6C92, + 14202: 0x5922, + 14203: 0x6726, + 14204: 0x8499, + 14205: 0x536F, + 14206: 0x5893, + 14207: 0x5999, + 14208: 0x5EDF, + 14209: 0x63CF, + 14210: 0x6634, + 14211: 0x6773, + 14212: 0x6E3A, + 14213: 0x732B, + 14214: 0x7AD7, + 14215: 0x82D7, + 14216: 0x9328, + 14217: 0x52D9, + 14218: 0x5DEB, + 14219: 0x61AE, + 14220: 0x61CB, + 14221: 0x620A, + 14222: 0x62C7, + 14223: 0x64AB, + 14224: 0x65E0, + 14225: 0x6959, + 14226: 0x6B66, + 14227: 0x6BCB, + 14228: 0x7121, + 14229: 0x73F7, + 14230: 0x755D, + 14231: 0x7E46, + 14232: 0x821E, + 14233: 0x8302, + 14234: 0x856A, + 14235: 0x8AA3, + 14236: 0x8CBF, + 14237: 0x9727, + 14238: 0x9D61, + 14239: 0x58A8, + 14240: 0x9ED8, + 14241: 0x5011, + 14242: 0x520E, + 14243: 0x543B, + 14244: 0x554F, + 14245: 0x6587, + 14246: 0x6C76, + 14247: 0x7D0A, + 14248: 0x7D0B, + 14249: 0x805E, + 14250: 0x868A, + 14251: 0x9580, + 14252: 0x96EF, + 14253: 0x52FF, + 14254: 0x6C95, + 14255: 0x7269, + 14256: 0x5473, + 14257: 0x5A9A, + 14258: 0x5C3E, + 14259: 0x5D4B, + 14260: 0x5F4C, + 14261: 0x5FAE, + 14262: 0x672A, + 14263: 0x68B6, + 14264: 0x6963, + 14265: 0x6E3C, + 14266: 0x6E44, + 14267: 0x7709, + 14268: 0x7C73, + 14269: 0x7F8E, + 14270: 0x8587, + 14271: 0x8B0E, + 14272: 0x8FF7, + 14273: 0x9761, + 14274: 0x9EF4, + 14275: 0x5CB7, + 14276: 0x60B6, + 14277: 0x610D, + 14278: 0x61AB, + 14279: 0x654F, + 14280: 0x65FB, + 14281: 0x65FC, + 14282: 0x6C11, + 14283: 0x6CEF, + 14284: 0x739F, + 14285: 0x73C9, + 14286: 0x7DE1, + 14287: 0x9594, + 14288: 0x5BC6, + 14289: 0x871C, + 14290: 0x8B10, + 14291: 0x525D, + 14292: 0x535A, + 14293: 0x62CD, + 14294: 0x640F, + 14295: 0x64B2, + 14296: 0x6734, + 14297: 0x6A38, + 14298: 0x6CCA, + 14299: 0x73C0, + 14300: 0x749E, + 14301: 0x7B94, + 14302: 0x7C95, + 14303: 0x7E1B, + 14304: 0x818A, + 14305: 0x8236, + 14306: 0x8584, + 14307: 0x8FEB, + 14308: 0x96F9, + 14309: 0x99C1, + 14310: 0x4F34, + 14311: 0x534A, + 14312: 0x53CD, + 14313: 0x53DB, + 14314: 0x62CC, + 14315: 0x642C, + 14316: 0x6500, + 14317: 0x6591, + 14318: 0x69C3, + 14319: 0x6CEE, + 14320: 0x6F58, + 14321: 0x73ED, + 14322: 0x7554, + 14323: 0x7622, + 14324: 0x76E4, + 14325: 0x76FC, + 14326: 0x78D0, + 14327: 0x78FB, + 14328: 0x792C, + 14329: 0x7D46, + 14330: 0x822C, + 14331: 0x87E0, + 14332: 0x8FD4, + 14333: 0x9812, + 14334: 0x98EF, + 14335: 0x52C3, + 14336: 0x62D4, + 14337: 0x64A5, + 14338: 0x6E24, + 14339: 0x6F51, + 14340: 0x767C, + 14341: 0x8DCB, + 14342: 0x91B1, + 14343: 0x9262, + 14344: 0x9AEE, + 14345: 0x9B43, + 14346: 0x5023, + 14347: 0x508D, + 14348: 0x574A, + 14349: 0x59A8, + 14350: 0x5C28, + 14351: 0x5E47, + 14352: 0x5F77, + 14353: 0x623F, + 14354: 0x653E, + 14355: 0x65B9, + 14356: 0x65C1, + 14357: 0x6609, + 14358: 0x678B, + 14359: 0x699C, + 14360: 0x6EC2, + 14361: 0x78C5, + 14362: 0x7D21, + 14363: 0x80AA, + 14364: 0x8180, + 14365: 0x822B, + 14366: 0x82B3, + 14367: 0x84A1, + 14368: 0x868C, + 14369: 0x8A2A, + 14370: 0x8B17, + 14371: 0x90A6, + 14372: 0x9632, + 14373: 0x9F90, + 14374: 0x500D, + 14375: 0x4FF3, + 14376: 0xF963, + 14377: 0x57F9, + 14378: 0x5F98, + 14379: 0x62DC, + 14380: 0x6392, + 14381: 0x676F, + 14382: 0x6E43, + 14383: 0x7119, + 14384: 0x76C3, + 14385: 0x80CC, + 14386: 0x80DA, + 14387: 0x88F4, + 14388: 0x88F5, + 14389: 0x8919, + 14390: 0x8CE0, + 14391: 0x8F29, + 14392: 0x914D, + 14393: 0x966A, + 14394: 0x4F2F, + 14395: 0x4F70, + 14396: 0x5E1B, + 14397: 0x67CF, + 14398: 0x6822, + 14399: 0x767D, + 14400: 0x767E, + 14401: 0x9B44, + 14402: 0x5E61, + 14403: 0x6A0A, + 14404: 0x7169, + 14405: 0x71D4, + 14406: 0x756A, + 14407: 0xF964, + 14408: 0x7E41, + 14409: 0x8543, + 14410: 0x85E9, + 14411: 0x98DC, + 14412: 0x4F10, + 14413: 0x7B4F, + 14414: 0x7F70, + 14415: 0x95A5, + 14416: 0x51E1, + 14417: 0x5E06, + 14418: 0x68B5, + 14419: 0x6C3E, + 14420: 0x6C4E, + 14421: 0x6CDB, + 14422: 0x72AF, + 14423: 0x7BC4, + 14424: 0x8303, + 14425: 0x6CD5, + 14426: 0x743A, + 14427: 0x50FB, + 14428: 0x5288, + 14429: 0x58C1, + 14430: 0x64D8, + 14431: 0x6A97, + 14432: 0x74A7, + 14433: 0x7656, + 14434: 0x78A7, + 14435: 0x8617, + 14436: 0x95E2, + 14437: 0x9739, + 14438: 0xF965, + 14439: 0x535E, + 14440: 0x5F01, + 14441: 0x8B8A, + 14442: 0x8FA8, + 14443: 0x8FAF, + 14444: 0x908A, + 14445: 0x5225, + 14446: 0x77A5, + 14447: 0x9C49, + 14448: 0x9F08, + 14449: 0x4E19, + 14450: 0x5002, + 14451: 0x5175, + 14452: 0x5C5B, + 14453: 0x5E77, + 14454: 0x661E, + 14455: 0x663A, + 14456: 0x67C4, + 14457: 0x68C5, + 14458: 0x70B3, + 14459: 0x7501, + 14460: 0x75C5, + 14461: 0x79C9, + 14462: 0x7ADD, + 14463: 0x8F27, + 14464: 0x9920, + 14465: 0x9A08, + 14466: 0x4FDD, + 14467: 0x5821, + 14468: 0x5831, + 14469: 0x5BF6, + 14470: 0x666E, + 14471: 0x6B65, + 14472: 0x6D11, + 14473: 0x6E7A, + 14474: 0x6F7D, + 14475: 0x73E4, + 14476: 0x752B, + 14477: 0x83E9, + 14478: 0x88DC, + 14479: 0x8913, + 14480: 0x8B5C, + 14481: 0x8F14, + 14482: 0x4F0F, + 14483: 0x50D5, + 14484: 0x5310, + 14485: 0x535C, + 14486: 0x5B93, + 14487: 0x5FA9, + 14488: 0x670D, + 14489: 0x798F, + 14490: 0x8179, + 14491: 0x832F, + 14492: 0x8514, + 14493: 0x8907, + 14494: 0x8986, + 14495: 0x8F39, + 14496: 0x8F3B, + 14497: 0x99A5, + 14498: 0x9C12, + 14499: 0x672C, + 14500: 0x4E76, + 14501: 0x4FF8, + 14502: 0x5949, + 14503: 0x5C01, + 14504: 0x5CEF, + 14505: 0x5CF0, + 14506: 0x6367, + 14507: 0x68D2, + 14508: 0x70FD, + 14509: 0x71A2, + 14510: 0x742B, + 14511: 0x7E2B, + 14512: 0x84EC, + 14513: 0x8702, + 14514: 0x9022, + 14515: 0x92D2, + 14516: 0x9CF3, + 14517: 0x4E0D, + 14518: 0x4ED8, + 14519: 0x4FEF, + 14520: 0x5085, + 14521: 0x5256, + 14522: 0x526F, + 14523: 0x5426, + 14524: 0x5490, + 14525: 0x57E0, + 14526: 0x592B, + 14527: 0x5A66, + 14528: 0x5B5A, + 14529: 0x5B75, + 14530: 0x5BCC, + 14531: 0x5E9C, + 14532: 0xF966, + 14533: 0x6276, + 14534: 0x6577, + 14535: 0x65A7, + 14536: 0x6D6E, + 14537: 0x6EA5, + 14538: 0x7236, + 14539: 0x7B26, + 14540: 0x7C3F, + 14541: 0x7F36, + 14542: 0x8150, + 14543: 0x8151, + 14544: 0x819A, + 14545: 0x8240, + 14546: 0x8299, + 14547: 0x83A9, + 14548: 0x8A03, + 14549: 0x8CA0, + 14550: 0x8CE6, + 14551: 0x8CFB, + 14552: 0x8D74, + 14553: 0x8DBA, + 14554: 0x90E8, + 14555: 0x91DC, + 14556: 0x961C, + 14557: 0x9644, + 14558: 0x99D9, + 14559: 0x9CE7, + 14560: 0x5317, + 14561: 0x5206, + 14562: 0x5429, + 14563: 0x5674, + 14564: 0x58B3, + 14565: 0x5954, + 14566: 0x596E, + 14567: 0x5FFF, + 14568: 0x61A4, + 14569: 0x626E, + 14570: 0x6610, + 14571: 0x6C7E, + 14572: 0x711A, + 14573: 0x76C6, + 14574: 0x7C89, + 14575: 0x7CDE, + 14576: 0x7D1B, + 14577: 0x82AC, + 14578: 0x8CC1, + 14579: 0x96F0, + 14580: 0xF967, + 14581: 0x4F5B, + 14582: 0x5F17, + 14583: 0x5F7F, + 14584: 0x62C2, + 14585: 0x5D29, + 14586: 0x670B, + 14587: 0x68DA, + 14588: 0x787C, + 14589: 0x7E43, + 14590: 0x9D6C, + 14591: 0x4E15, + 14592: 0x5099, + 14593: 0x5315, + 14594: 0x532A, + 14595: 0x5351, + 14596: 0x5983, + 14597: 0x5A62, + 14598: 0x5E87, + 14599: 0x60B2, + 14600: 0x618A, + 14601: 0x6249, + 14602: 0x6279, + 14603: 0x6590, + 14604: 0x6787, + 14605: 0x69A7, + 14606: 0x6BD4, + 14607: 0x6BD6, + 14608: 0x6BD7, + 14609: 0x6BD8, + 14610: 0x6CB8, + 14611: 0xF968, + 14612: 0x7435, + 14613: 0x75FA, + 14614: 0x7812, + 14615: 0x7891, + 14616: 0x79D5, + 14617: 0x79D8, + 14618: 0x7C83, + 14619: 0x7DCB, + 14620: 0x7FE1, + 14621: 0x80A5, + 14622: 0x813E, + 14623: 0x81C2, + 14624: 0x83F2, + 14625: 0x871A, + 14626: 0x88E8, + 14627: 0x8AB9, + 14628: 0x8B6C, + 14629: 0x8CBB, + 14630: 0x9119, + 14631: 0x975E, + 14632: 0x98DB, + 14633: 0x9F3B, + 14634: 0x56AC, + 14635: 0x5B2A, + 14636: 0x5F6C, + 14637: 0x658C, + 14638: 0x6AB3, + 14639: 0x6BAF, + 14640: 0x6D5C, + 14641: 0x6FF1, + 14642: 0x7015, + 14643: 0x725D, + 14644: 0x73AD, + 14645: 0x8CA7, + 14646: 0x8CD3, + 14647: 0x983B, + 14648: 0x6191, + 14649: 0x6C37, + 14650: 0x8058, + 14651: 0x9A01, + 14652: 0x4E4D, + 14653: 0x4E8B, + 14654: 0x4E9B, + 14655: 0x4ED5, + 14656: 0x4F3A, + 14657: 0x4F3C, + 14658: 0x4F7F, + 14659: 0x4FDF, + 14660: 0x50FF, + 14661: 0x53F2, + 14662: 0x53F8, + 14663: 0x5506, + 14664: 0x55E3, + 14665: 0x56DB, + 14666: 0x58EB, + 14667: 0x5962, + 14668: 0x5A11, + 14669: 0x5BEB, + 14670: 0x5BFA, + 14671: 0x5C04, + 14672: 0x5DF3, + 14673: 0x5E2B, + 14674: 0x5F99, + 14675: 0x601D, + 14676: 0x6368, + 14677: 0x659C, + 14678: 0x65AF, + 14679: 0x67F6, + 14680: 0x67FB, + 14681: 0x68AD, + 14682: 0x6B7B, + 14683: 0x6C99, + 14684: 0x6CD7, + 14685: 0x6E23, + 14686: 0x7009, + 14687: 0x7345, + 14688: 0x7802, + 14689: 0x793E, + 14690: 0x7940, + 14691: 0x7960, + 14692: 0x79C1, + 14693: 0x7BE9, + 14694: 0x7D17, + 14695: 0x7D72, + 14696: 0x8086, + 14697: 0x820D, + 14698: 0x838E, + 14699: 0x84D1, + 14700: 0x86C7, + 14701: 0x88DF, + 14702: 0x8A50, + 14703: 0x8A5E, + 14704: 0x8B1D, + 14705: 0x8CDC, + 14706: 0x8D66, + 14707: 0x8FAD, + 14708: 0x90AA, + 14709: 0x98FC, + 14710: 0x99DF, + 14711: 0x9E9D, + 14712: 0x524A, + 14713: 0xF969, + 14714: 0x6714, + 14715: 0xF96A, + 14716: 0x5098, + 14717: 0x522A, + 14718: 0x5C71, + 14719: 0x6563, + 14720: 0x6C55, + 14721: 0x73CA, + 14722: 0x7523, + 14723: 0x759D, + 14724: 0x7B97, + 14725: 0x849C, + 14726: 0x9178, + 14727: 0x9730, + 14728: 0x4E77, + 14729: 0x6492, + 14730: 0x6BBA, + 14731: 0x715E, + 14732: 0x85A9, + 14733: 0x4E09, + 14734: 0xF96B, + 14735: 0x6749, + 14736: 0x68EE, + 14737: 0x6E17, + 14738: 0x829F, + 14739: 0x8518, + 14740: 0x886B, + 14741: 0x63F7, + 14742: 0x6F81, + 14743: 0x9212, + 14744: 0x98AF, + 14745: 0x4E0A, + 14746: 0x50B7, + 14747: 0x50CF, + 14748: 0x511F, + 14749: 0x5546, + 14750: 0x55AA, + 14751: 0x5617, + 14752: 0x5B40, + 14753: 0x5C19, + 14754: 0x5CE0, + 14755: 0x5E38, + 14756: 0x5E8A, + 14757: 0x5EA0, + 14758: 0x5EC2, + 14759: 0x60F3, + 14760: 0x6851, + 14761: 0x6A61, + 14762: 0x6E58, + 14763: 0x723D, + 14764: 0x7240, + 14765: 0x72C0, + 14766: 0x76F8, + 14767: 0x7965, + 14768: 0x7BB1, + 14769: 0x7FD4, + 14770: 0x88F3, + 14771: 0x89F4, + 14772: 0x8A73, + 14773: 0x8C61, + 14774: 0x8CDE, + 14775: 0x971C, + 14776: 0x585E, + 14777: 0x74BD, + 14778: 0x8CFD, + 14779: 0x55C7, + 14780: 0xF96C, + 14781: 0x7A61, + 14782: 0x7D22, + 14783: 0x8272, + 14784: 0x7272, + 14785: 0x751F, + 14786: 0x7525, + 14787: 0xF96D, + 14788: 0x7B19, + 14789: 0x5885, + 14790: 0x58FB, + 14791: 0x5DBC, + 14792: 0x5E8F, + 14793: 0x5EB6, + 14794: 0x5F90, + 14795: 0x6055, + 14796: 0x6292, + 14797: 0x637F, + 14798: 0x654D, + 14799: 0x6691, + 14800: 0x66D9, + 14801: 0x66F8, + 14802: 0x6816, + 14803: 0x68F2, + 14804: 0x7280, + 14805: 0x745E, + 14806: 0x7B6E, + 14807: 0x7D6E, + 14808: 0x7DD6, + 14809: 0x7F72, + 14810: 0x80E5, + 14811: 0x8212, + 14812: 0x85AF, + 14813: 0x897F, + 14814: 0x8A93, + 14815: 0x901D, + 14816: 0x92E4, + 14817: 0x9ECD, + 14818: 0x9F20, + 14819: 0x5915, + 14820: 0x596D, + 14821: 0x5E2D, + 14822: 0x60DC, + 14823: 0x6614, + 14824: 0x6673, + 14825: 0x6790, + 14826: 0x6C50, + 14827: 0x6DC5, + 14828: 0x6F5F, + 14829: 0x77F3, + 14830: 0x78A9, + 14831: 0x84C6, + 14832: 0x91CB, + 14833: 0x932B, + 14834: 0x4ED9, + 14835: 0x50CA, + 14836: 0x5148, + 14837: 0x5584, + 14838: 0x5B0B, + 14839: 0x5BA3, + 14840: 0x6247, + 14841: 0x657E, + 14842: 0x65CB, + 14843: 0x6E32, + 14844: 0x717D, + 14845: 0x7401, + 14846: 0x7444, + 14847: 0x7487, + 14848: 0x74BF, + 14849: 0x766C, + 14850: 0x79AA, + 14851: 0x7DDA, + 14852: 0x7E55, + 14853: 0x7FA8, + 14854: 0x817A, + 14855: 0x81B3, + 14856: 0x8239, + 14857: 0x861A, + 14858: 0x87EC, + 14859: 0x8A75, + 14860: 0x8DE3, + 14861: 0x9078, + 14862: 0x9291, + 14863: 0x9425, + 14864: 0x994D, + 14865: 0x9BAE, + 14866: 0x5368, + 14867: 0x5C51, + 14868: 0x6954, + 14869: 0x6CC4, + 14870: 0x6D29, + 14871: 0x6E2B, + 14872: 0x820C, + 14873: 0x859B, + 14874: 0x893B, + 14875: 0x8A2D, + 14876: 0x8AAA, + 14877: 0x96EA, + 14878: 0x9F67, + 14879: 0x5261, + 14880: 0x66B9, + 14881: 0x6BB2, + 14882: 0x7E96, + 14883: 0x87FE, + 14884: 0x8D0D, + 14885: 0x9583, + 14886: 0x965D, + 14887: 0x651D, + 14888: 0x6D89, + 14889: 0x71EE, + 14890: 0xF96E, + 14891: 0x57CE, + 14892: 0x59D3, + 14893: 0x5BAC, + 14894: 0x6027, + 14895: 0x60FA, + 14896: 0x6210, + 14897: 0x661F, + 14898: 0x665F, + 14899: 0x7329, + 14900: 0x73F9, + 14901: 0x76DB, + 14902: 0x7701, + 14903: 0x7B6C, + 14904: 0x8056, + 14905: 0x8072, + 14906: 0x8165, + 14907: 0x8AA0, + 14908: 0x9192, + 14909: 0x4E16, + 14910: 0x52E2, + 14911: 0x6B72, + 14912: 0x6D17, + 14913: 0x7A05, + 14914: 0x7B39, + 14915: 0x7D30, + 14916: 0xF96F, + 14917: 0x8CB0, + 14918: 0x53EC, + 14919: 0x562F, + 14920: 0x5851, + 14921: 0x5BB5, + 14922: 0x5C0F, + 14923: 0x5C11, + 14924: 0x5DE2, + 14925: 0x6240, + 14926: 0x6383, + 14927: 0x6414, + 14928: 0x662D, + 14929: 0x68B3, + 14930: 0x6CBC, + 14931: 0x6D88, + 14932: 0x6EAF, + 14933: 0x701F, + 14934: 0x70A4, + 14935: 0x71D2, + 14936: 0x7526, + 14937: 0x758F, + 14938: 0x758E, + 14939: 0x7619, + 14940: 0x7B11, + 14941: 0x7BE0, + 14942: 0x7C2B, + 14943: 0x7D20, + 14944: 0x7D39, + 14945: 0x852C, + 14946: 0x856D, + 14947: 0x8607, + 14948: 0x8A34, + 14949: 0x900D, + 14950: 0x9061, + 14951: 0x90B5, + 14952: 0x92B7, + 14953: 0x97F6, + 14954: 0x9A37, + 14955: 0x4FD7, + 14956: 0x5C6C, + 14957: 0x675F, + 14958: 0x6D91, + 14959: 0x7C9F, + 14960: 0x7E8C, + 14961: 0x8B16, + 14962: 0x8D16, + 14963: 0x901F, + 14964: 0x5B6B, + 14965: 0x5DFD, + 14966: 0x640D, + 14967: 0x84C0, + 14968: 0x905C, + 14969: 0x98E1, + 14970: 0x7387, + 14971: 0x5B8B, + 14972: 0x609A, + 14973: 0x677E, + 14974: 0x6DDE, + 14975: 0x8A1F, + 14976: 0x8AA6, + 14977: 0x9001, + 14978: 0x980C, + 14979: 0x5237, + 14980: 0xF970, + 14981: 0x7051, + 14982: 0x788E, + 14983: 0x9396, + 14984: 0x8870, + 14985: 0x91D7, + 14986: 0x4FEE, + 14987: 0x53D7, + 14988: 0x55FD, + 14989: 0x56DA, + 14990: 0x5782, + 14991: 0x58FD, + 14992: 0x5AC2, + 14993: 0x5B88, + 14994: 0x5CAB, + 14995: 0x5CC0, + 14996: 0x5E25, + 14997: 0x6101, + 14998: 0x620D, + 14999: 0x624B, + 15000: 0x6388, + 15001: 0x641C, + 15002: 0x6536, + 15003: 0x6578, + 15004: 0x6A39, + 15005: 0x6B8A, + 15006: 0x6C34, + 15007: 0x6D19, + 15008: 0x6F31, + 15009: 0x71E7, + 15010: 0x72E9, + 15011: 0x7378, + 15012: 0x7407, + 15013: 0x74B2, + 15014: 0x7626, + 15015: 0x7761, + 15016: 0x79C0, + 15017: 0x7A57, + 15018: 0x7AEA, + 15019: 0x7CB9, + 15020: 0x7D8F, + 15021: 0x7DAC, + 15022: 0x7E61, + 15023: 0x7F9E, + 15024: 0x8129, + 15025: 0x8331, + 15026: 0x8490, + 15027: 0x84DA, + 15028: 0x85EA, + 15029: 0x8896, + 15030: 0x8AB0, + 15031: 0x8B90, + 15032: 0x8F38, + 15033: 0x9042, + 15034: 0x9083, + 15035: 0x916C, + 15036: 0x9296, + 15037: 0x92B9, + 15038: 0x968B, + 15039: 0x96A7, + 15040: 0x96A8, + 15041: 0x96D6, + 15042: 0x9700, + 15043: 0x9808, + 15044: 0x9996, + 15045: 0x9AD3, + 15046: 0x9B1A, + 15047: 0x53D4, + 15048: 0x587E, + 15049: 0x5919, + 15050: 0x5B70, + 15051: 0x5BBF, + 15052: 0x6DD1, + 15053: 0x6F5A, + 15054: 0x719F, + 15055: 0x7421, + 15056: 0x74B9, + 15057: 0x8085, + 15058: 0x83FD, + 15059: 0x5DE1, + 15060: 0x5F87, + 15061: 0x5FAA, + 15062: 0x6042, + 15063: 0x65EC, + 15064: 0x6812, + 15065: 0x696F, + 15066: 0x6A53, + 15067: 0x6B89, + 15068: 0x6D35, + 15069: 0x6DF3, + 15070: 0x73E3, + 15071: 0x76FE, + 15072: 0x77AC, + 15073: 0x7B4D, + 15074: 0x7D14, + 15075: 0x8123, + 15076: 0x821C, + 15077: 0x8340, + 15078: 0x84F4, + 15079: 0x8563, + 15080: 0x8A62, + 15081: 0x8AC4, + 15082: 0x9187, + 15083: 0x931E, + 15084: 0x9806, + 15085: 0x99B4, + 15086: 0x620C, + 15087: 0x8853, + 15088: 0x8FF0, + 15089: 0x9265, + 15090: 0x5D07, + 15091: 0x5D27, + 15092: 0x5D69, + 15093: 0x745F, + 15094: 0x819D, + 15095: 0x8768, + 15096: 0x6FD5, + 15097: 0x62FE, + 15098: 0x7FD2, + 15099: 0x8936, + 15100: 0x8972, + 15101: 0x4E1E, + 15102: 0x4E58, + 15103: 0x50E7, + 15104: 0x52DD, + 15105: 0x5347, + 15106: 0x627F, + 15107: 0x6607, + 15108: 0x7E69, + 15109: 0x8805, + 15110: 0x965E, + 15111: 0x4F8D, + 15112: 0x5319, + 15113: 0x5636, + 15114: 0x59CB, + 15115: 0x5AA4, + 15116: 0x5C38, + 15117: 0x5C4E, + 15118: 0x5C4D, + 15119: 0x5E02, + 15120: 0x5F11, + 15121: 0x6043, + 15122: 0x65BD, + 15123: 0x662F, + 15124: 0x6642, + 15125: 0x67BE, + 15126: 0x67F4, + 15127: 0x731C, + 15128: 0x77E2, + 15129: 0x793A, + 15130: 0x7FC5, + 15131: 0x8494, + 15132: 0x84CD, + 15133: 0x8996, + 15134: 0x8A66, + 15135: 0x8A69, + 15136: 0x8AE1, + 15137: 0x8C55, + 15138: 0x8C7A, + 15139: 0x57F4, + 15140: 0x5BD4, + 15141: 0x5F0F, + 15142: 0x606F, + 15143: 0x62ED, + 15144: 0x690D, + 15145: 0x6B96, + 15146: 0x6E5C, + 15147: 0x7184, + 15148: 0x7BD2, + 15149: 0x8755, + 15150: 0x8B58, + 15151: 0x8EFE, + 15152: 0x98DF, + 15153: 0x98FE, + 15154: 0x4F38, + 15155: 0x4F81, + 15156: 0x4FE1, + 15157: 0x547B, + 15158: 0x5A20, + 15159: 0x5BB8, + 15160: 0x613C, + 15161: 0x65B0, + 15162: 0x6668, + 15163: 0x71FC, + 15164: 0x7533, + 15165: 0x795E, + 15166: 0x7D33, + 15167: 0x814E, + 15168: 0x81E3, + 15169: 0x8398, + 15170: 0x85AA, + 15171: 0x85CE, + 15172: 0x8703, + 15173: 0x8A0A, + 15174: 0x8EAB, + 15175: 0x8F9B, + 15176: 0xF971, + 15177: 0x8FC5, + 15178: 0x5931, + 15179: 0x5BA4, + 15180: 0x5BE6, + 15181: 0x6089, + 15182: 0x5BE9, + 15183: 0x5C0B, + 15184: 0x5FC3, + 15185: 0x6C81, + 15186: 0xF972, + 15187: 0x6DF1, + 15188: 0x700B, + 15189: 0x751A, + 15190: 0x82AF, + 15191: 0x8AF6, + 15192: 0x4EC0, + 15193: 0x5341, + 15194: 0xF973, + 15195: 0x96D9, + 15196: 0x6C0F, + 15197: 0x4E9E, + 15198: 0x4FC4, + 15199: 0x5152, + 15200: 0x555E, + 15201: 0x5A25, + 15202: 0x5CE8, + 15203: 0x6211, + 15204: 0x7259, + 15205: 0x82BD, + 15206: 0x83AA, + 15207: 0x86FE, + 15208: 0x8859, + 15209: 0x8A1D, + 15210: 0x963F, + 15211: 0x96C5, + 15212: 0x9913, + 15213: 0x9D09, + 15214: 0x9D5D, + 15215: 0x580A, + 15216: 0x5CB3, + 15217: 0x5DBD, + 15218: 0x5E44, + 15219: 0x60E1, + 15220: 0x6115, + 15221: 0x63E1, + 15222: 0x6A02, + 15223: 0x6E25, + 15224: 0x9102, + 15225: 0x9354, + 15226: 0x984E, + 15227: 0x9C10, + 15228: 0x9F77, + 15229: 0x5B89, + 15230: 0x5CB8, + 15231: 0x6309, + 15232: 0x664F, + 15233: 0x6848, + 15234: 0x773C, + 15235: 0x96C1, + 15236: 0x978D, + 15237: 0x9854, + 15238: 0x9B9F, + 15239: 0x65A1, + 15240: 0x8B01, + 15241: 0x8ECB, + 15242: 0x95BC, + 15243: 0x5535, + 15244: 0x5CA9, + 15245: 0x5DD6, + 15246: 0x5EB5, + 15247: 0x6697, + 15248: 0x764C, + 15249: 0x83F4, + 15250: 0x95C7, + 15251: 0x58D3, + 15252: 0x62BC, + 15253: 0x72CE, + 15254: 0x9D28, + 15255: 0x4EF0, + 15256: 0x592E, + 15257: 0x600F, + 15258: 0x663B, + 15259: 0x6B83, + 15260: 0x79E7, + 15261: 0x9D26, + 15262: 0x5393, + 15263: 0x54C0, + 15264: 0x57C3, + 15265: 0x5D16, + 15266: 0x611B, + 15267: 0x66D6, + 15268: 0x6DAF, + 15269: 0x788D, + 15270: 0x827E, + 15271: 0x9698, + 15272: 0x9744, + 15273: 0x5384, + 15274: 0x627C, + 15275: 0x6396, + 15276: 0x6DB2, + 15277: 0x7E0A, + 15278: 0x814B, + 15279: 0x984D, + 15280: 0x6AFB, + 15281: 0x7F4C, + 15282: 0x9DAF, + 15283: 0x9E1A, + 15284: 0x4E5F, + 15285: 0x503B, + 15286: 0x51B6, + 15287: 0x591C, + 15288: 0x60F9, + 15289: 0x63F6, + 15290: 0x6930, + 15291: 0x723A, + 15292: 0x8036, + 15293: 0xF974, + 15294: 0x91CE, + 15295: 0x5F31, + 15296: 0xF975, + 15297: 0xF976, + 15298: 0x7D04, + 15299: 0x82E5, + 15300: 0x846F, + 15301: 0x84BB, + 15302: 0x85E5, + 15303: 0x8E8D, + 15304: 0xF977, + 15305: 0x4F6F, + 15306: 0xF978, + 15307: 0xF979, + 15308: 0x58E4, + 15309: 0x5B43, + 15310: 0x6059, + 15311: 0x63DA, + 15312: 0x6518, + 15313: 0x656D, + 15314: 0x6698, + 15315: 0xF97A, + 15316: 0x694A, + 15317: 0x6A23, + 15318: 0x6D0B, + 15319: 0x7001, + 15320: 0x716C, + 15321: 0x75D2, + 15322: 0x760D, + 15323: 0x79B3, + 15324: 0x7A70, + 15325: 0xF97B, + 15326: 0x7F8A, + 15327: 0xF97C, + 15328: 0x8944, + 15329: 0xF97D, + 15330: 0x8B93, + 15331: 0x91C0, + 15332: 0x967D, + 15333: 0xF97E, + 15334: 0x990A, + 15335: 0x5704, + 15336: 0x5FA1, + 15337: 0x65BC, + 15338: 0x6F01, + 15339: 0x7600, + 15340: 0x79A6, + 15341: 0x8A9E, + 15342: 0x99AD, + 15343: 0x9B5A, + 15344: 0x9F6C, + 15345: 0x5104, + 15346: 0x61B6, + 15347: 0x6291, + 15348: 0x6A8D, + 15349: 0x81C6, + 15350: 0x5043, + 15351: 0x5830, + 15352: 0x5F66, + 15353: 0x7109, + 15354: 0x8A00, + 15355: 0x8AFA, + 15356: 0x5B7C, + 15357: 0x8616, + 15358: 0x4FFA, + 15359: 0x513C, + 15360: 0x56B4, + 15361: 0x5944, + 15362: 0x63A9, + 15363: 0x6DF9, + 15364: 0x5DAA, + 15365: 0x696D, + 15366: 0x5186, + 15367: 0x4E88, + 15368: 0x4F59, + 15369: 0xF97F, + 15370: 0xF980, + 15371: 0xF981, + 15372: 0x5982, + 15373: 0xF982, + 15374: 0xF983, + 15375: 0x6B5F, + 15376: 0x6C5D, + 15377: 0xF984, + 15378: 0x74B5, + 15379: 0x7916, + 15380: 0xF985, + 15381: 0x8207, + 15382: 0x8245, + 15383: 0x8339, + 15384: 0x8F3F, + 15385: 0x8F5D, + 15386: 0xF986, + 15387: 0x9918, + 15388: 0xF987, + 15389: 0xF988, + 15390: 0xF989, + 15391: 0x4EA6, + 15392: 0xF98A, + 15393: 0x57DF, + 15394: 0x5F79, + 15395: 0x6613, + 15396: 0xF98B, + 15397: 0xF98C, + 15398: 0x75AB, + 15399: 0x7E79, + 15400: 0x8B6F, + 15401: 0xF98D, + 15402: 0x9006, + 15403: 0x9A5B, + 15404: 0x56A5, + 15405: 0x5827, + 15406: 0x59F8, + 15407: 0x5A1F, + 15408: 0x5BB4, + 15409: 0xF98E, + 15410: 0x5EF6, + 15411: 0xF98F, + 15412: 0xF990, + 15413: 0x6350, + 15414: 0x633B, + 15415: 0xF991, + 15416: 0x693D, + 15417: 0x6C87, + 15418: 0x6CBF, + 15419: 0x6D8E, + 15420: 0x6D93, + 15421: 0x6DF5, + 15422: 0x6F14, + 15423: 0xF992, + 15424: 0x70DF, + 15425: 0x7136, + 15426: 0x7159, + 15427: 0xF993, + 15428: 0x71C3, + 15429: 0x71D5, + 15430: 0xF994, + 15431: 0x784F, + 15432: 0x786F, + 15433: 0xF995, + 15434: 0x7B75, + 15435: 0x7DE3, + 15436: 0xF996, + 15437: 0x7E2F, + 15438: 0xF997, + 15439: 0x884D, + 15440: 0x8EDF, + 15441: 0xF998, + 15442: 0xF999, + 15443: 0xF99A, + 15444: 0x925B, + 15445: 0xF99B, + 15446: 0x9CF6, + 15447: 0xF99C, + 15448: 0xF99D, + 15449: 0xF99E, + 15450: 0x6085, + 15451: 0x6D85, + 15452: 0xF99F, + 15453: 0x71B1, + 15454: 0xF9A0, + 15455: 0xF9A1, + 15456: 0x95B1, + 15457: 0x53AD, + 15458: 0xF9A2, + 15459: 0xF9A3, + 15460: 0xF9A4, + 15461: 0x67D3, + 15462: 0xF9A5, + 15463: 0x708E, + 15464: 0x7130, + 15465: 0x7430, + 15466: 0x8276, + 15467: 0x82D2, + 15468: 0xF9A6, + 15469: 0x95BB, + 15470: 0x9AE5, + 15471: 0x9E7D, + 15472: 0x66C4, + 15473: 0xF9A7, + 15474: 0x71C1, + 15475: 0x8449, + 15476: 0xF9A8, + 15477: 0xF9A9, + 15478: 0x584B, + 15479: 0xF9AA, + 15480: 0xF9AB, + 15481: 0x5DB8, + 15482: 0x5F71, + 15483: 0xF9AC, + 15484: 0x6620, + 15485: 0x668E, + 15486: 0x6979, + 15487: 0x69AE, + 15488: 0x6C38, + 15489: 0x6CF3, + 15490: 0x6E36, + 15491: 0x6F41, + 15492: 0x6FDA, + 15493: 0x701B, + 15494: 0x702F, + 15495: 0x7150, + 15496: 0x71DF, + 15497: 0x7370, + 15498: 0xF9AD, + 15499: 0x745B, + 15500: 0xF9AE, + 15501: 0x74D4, + 15502: 0x76C8, + 15503: 0x7A4E, + 15504: 0x7E93, + 15505: 0xF9AF, + 15506: 0xF9B0, + 15507: 0x82F1, + 15508: 0x8A60, + 15509: 0x8FCE, + 15510: 0xF9B1, + 15511: 0x9348, + 15512: 0xF9B2, + 15513: 0x9719, + 15514: 0xF9B3, + 15515: 0xF9B4, + 15516: 0x4E42, + 15517: 0x502A, + 15518: 0xF9B5, + 15519: 0x5208, + 15520: 0x53E1, + 15521: 0x66F3, + 15522: 0x6C6D, + 15523: 0x6FCA, + 15524: 0x730A, + 15525: 0x777F, + 15526: 0x7A62, + 15527: 0x82AE, + 15528: 0x85DD, + 15529: 0x8602, + 15530: 0xF9B6, + 15531: 0x88D4, + 15532: 0x8A63, + 15533: 0x8B7D, + 15534: 0x8C6B, + 15535: 0xF9B7, + 15536: 0x92B3, + 15537: 0xF9B8, + 15538: 0x9713, + 15539: 0x9810, + 15540: 0x4E94, + 15541: 0x4F0D, + 15542: 0x4FC9, + 15543: 0x50B2, + 15544: 0x5348, + 15545: 0x543E, + 15546: 0x5433, + 15547: 0x55DA, + 15548: 0x5862, + 15549: 0x58BA, + 15550: 0x5967, + 15551: 0x5A1B, + 15552: 0x5BE4, + 15553: 0x609F, + 15554: 0xF9B9, + 15555: 0x61CA, + 15556: 0x6556, + 15557: 0x65FF, + 15558: 0x6664, + 15559: 0x68A7, + 15560: 0x6C5A, + 15561: 0x6FB3, + 15562: 0x70CF, + 15563: 0x71AC, + 15564: 0x7352, + 15565: 0x7B7D, + 15566: 0x8708, + 15567: 0x8AA4, + 15568: 0x9C32, + 15569: 0x9F07, + 15570: 0x5C4B, + 15571: 0x6C83, + 15572: 0x7344, + 15573: 0x7389, + 15574: 0x923A, + 15575: 0x6EAB, + 15576: 0x7465, + 15577: 0x761F, + 15578: 0x7A69, + 15579: 0x7E15, + 15580: 0x860A, + 15581: 0x5140, + 15582: 0x58C5, + 15583: 0x64C1, + 15584: 0x74EE, + 15585: 0x7515, + 15586: 0x7670, + 15587: 0x7FC1, + 15588: 0x9095, + 15589: 0x96CD, + 15590: 0x9954, + 15591: 0x6E26, + 15592: 0x74E6, + 15593: 0x7AA9, + 15594: 0x7AAA, + 15595: 0x81E5, + 15596: 0x86D9, + 15597: 0x8778, + 15598: 0x8A1B, + 15599: 0x5A49, + 15600: 0x5B8C, + 15601: 0x5B9B, + 15602: 0x68A1, + 15603: 0x6900, + 15604: 0x6D63, + 15605: 0x73A9, + 15606: 0x7413, + 15607: 0x742C, + 15608: 0x7897, + 15609: 0x7DE9, + 15610: 0x7FEB, + 15611: 0x8118, + 15612: 0x8155, + 15613: 0x839E, + 15614: 0x8C4C, + 15615: 0x962E, + 15616: 0x9811, + 15617: 0x66F0, + 15618: 0x5F80, + 15619: 0x65FA, + 15620: 0x6789, + 15621: 0x6C6A, + 15622: 0x738B, + 15623: 0x502D, + 15624: 0x5A03, + 15625: 0x6B6A, + 15626: 0x77EE, + 15627: 0x5916, + 15628: 0x5D6C, + 15629: 0x5DCD, + 15630: 0x7325, + 15631: 0x754F, + 15632: 0xF9BA, + 15633: 0xF9BB, + 15634: 0x50E5, + 15635: 0x51F9, + 15636: 0x582F, + 15637: 0x592D, + 15638: 0x5996, + 15639: 0x59DA, + 15640: 0x5BE5, + 15641: 0xF9BC, + 15642: 0xF9BD, + 15643: 0x5DA2, + 15644: 0x62D7, + 15645: 0x6416, + 15646: 0x6493, + 15647: 0x64FE, + 15648: 0xF9BE, + 15649: 0x66DC, + 15650: 0xF9BF, + 15651: 0x6A48, + 15652: 0xF9C0, + 15653: 0x71FF, + 15654: 0x7464, + 15655: 0xF9C1, + 15656: 0x7A88, + 15657: 0x7AAF, + 15658: 0x7E47, + 15659: 0x7E5E, + 15660: 0x8000, + 15661: 0x8170, + 15662: 0xF9C2, + 15663: 0x87EF, + 15664: 0x8981, + 15665: 0x8B20, + 15666: 0x9059, + 15667: 0xF9C3, + 15668: 0x9080, + 15669: 0x9952, + 15670: 0x617E, + 15671: 0x6B32, + 15672: 0x6D74, + 15673: 0x7E1F, + 15674: 0x8925, + 15675: 0x8FB1, + 15676: 0x4FD1, + 15677: 0x50AD, + 15678: 0x5197, + 15679: 0x52C7, + 15680: 0x57C7, + 15681: 0x5889, + 15682: 0x5BB9, + 15683: 0x5EB8, + 15684: 0x6142, + 15685: 0x6995, + 15686: 0x6D8C, + 15687: 0x6E67, + 15688: 0x6EB6, + 15689: 0x7194, + 15690: 0x7462, + 15691: 0x7528, + 15692: 0x752C, + 15693: 0x8073, + 15694: 0x8338, + 15695: 0x84C9, + 15696: 0x8E0A, + 15697: 0x9394, + 15698: 0x93DE, + 15699: 0xF9C4, + 15700: 0x4E8E, + 15701: 0x4F51, + 15702: 0x5076, + 15703: 0x512A, + 15704: 0x53C8, + 15705: 0x53CB, + 15706: 0x53F3, + 15707: 0x5B87, + 15708: 0x5BD3, + 15709: 0x5C24, + 15710: 0x611A, + 15711: 0x6182, + 15712: 0x65F4, + 15713: 0x725B, + 15714: 0x7397, + 15715: 0x7440, + 15716: 0x76C2, + 15717: 0x7950, + 15718: 0x7991, + 15719: 0x79B9, + 15720: 0x7D06, + 15721: 0x7FBD, + 15722: 0x828B, + 15723: 0x85D5, + 15724: 0x865E, + 15725: 0x8FC2, + 15726: 0x9047, + 15727: 0x90F5, + 15728: 0x91EA, + 15729: 0x9685, + 15730: 0x96E8, + 15731: 0x96E9, + 15732: 0x52D6, + 15733: 0x5F67, + 15734: 0x65ED, + 15735: 0x6631, + 15736: 0x682F, + 15737: 0x715C, + 15738: 0x7A36, + 15739: 0x90C1, + 15740: 0x980A, + 15741: 0x4E91, + 15742: 0xF9C5, + 15743: 0x6A52, + 15744: 0x6B9E, + 15745: 0x6F90, + 15746: 0x7189, + 15747: 0x8018, + 15748: 0x82B8, + 15749: 0x8553, + 15750: 0x904B, + 15751: 0x9695, + 15752: 0x96F2, + 15753: 0x97FB, + 15754: 0x851A, + 15755: 0x9B31, + 15756: 0x4E90, + 15757: 0x718A, + 15758: 0x96C4, + 15759: 0x5143, + 15760: 0x539F, + 15761: 0x54E1, + 15762: 0x5713, + 15763: 0x5712, + 15764: 0x57A3, + 15765: 0x5A9B, + 15766: 0x5AC4, + 15767: 0x5BC3, + 15768: 0x6028, + 15769: 0x613F, + 15770: 0x63F4, + 15771: 0x6C85, + 15772: 0x6D39, + 15773: 0x6E72, + 15774: 0x6E90, + 15775: 0x7230, + 15776: 0x733F, + 15777: 0x7457, + 15778: 0x82D1, + 15779: 0x8881, + 15780: 0x8F45, + 15781: 0x9060, + 15782: 0xF9C6, + 15783: 0x9662, + 15784: 0x9858, + 15785: 0x9D1B, + 15786: 0x6708, + 15787: 0x8D8A, + 15788: 0x925E, + 15789: 0x4F4D, + 15790: 0x5049, + 15791: 0x50DE, + 15792: 0x5371, + 15793: 0x570D, + 15794: 0x59D4, + 15795: 0x5A01, + 15796: 0x5C09, + 15797: 0x6170, + 15798: 0x6690, + 15799: 0x6E2D, + 15800: 0x7232, + 15801: 0x744B, + 15802: 0x7DEF, + 15803: 0x80C3, + 15804: 0x840E, + 15805: 0x8466, + 15806: 0x853F, + 15807: 0x875F, + 15808: 0x885B, + 15809: 0x8918, + 15810: 0x8B02, + 15811: 0x9055, + 15812: 0x97CB, + 15813: 0x9B4F, + 15814: 0x4E73, + 15815: 0x4F91, + 15816: 0x5112, + 15817: 0x516A, + 15818: 0xF9C7, + 15819: 0x552F, + 15820: 0x55A9, + 15821: 0x5B7A, + 15822: 0x5BA5, + 15823: 0x5E7C, + 15824: 0x5E7D, + 15825: 0x5EBE, + 15826: 0x60A0, + 15827: 0x60DF, + 15828: 0x6108, + 15829: 0x6109, + 15830: 0x63C4, + 15831: 0x6538, + 15832: 0x6709, + 15833: 0xF9C8, + 15834: 0x67D4, + 15835: 0x67DA, + 15836: 0xF9C9, + 15837: 0x6961, + 15838: 0x6962, + 15839: 0x6CB9, + 15840: 0x6D27, + 15841: 0xF9CA, + 15842: 0x6E38, + 15843: 0xF9CB, + 15844: 0x6FE1, + 15845: 0x7336, + 15846: 0x7337, + 15847: 0xF9CC, + 15848: 0x745C, + 15849: 0x7531, + 15850: 0xF9CD, + 15851: 0x7652, + 15852: 0xF9CE, + 15853: 0xF9CF, + 15854: 0x7DAD, + 15855: 0x81FE, + 15856: 0x8438, + 15857: 0x88D5, + 15858: 0x8A98, + 15859: 0x8ADB, + 15860: 0x8AED, + 15861: 0x8E30, + 15862: 0x8E42, + 15863: 0x904A, + 15864: 0x903E, + 15865: 0x907A, + 15866: 0x9149, + 15867: 0x91C9, + 15868: 0x936E, + 15869: 0xF9D0, + 15870: 0xF9D1, + 15871: 0x5809, + 15872: 0xF9D2, + 15873: 0x6BD3, + 15874: 0x8089, + 15875: 0x80B2, + 15876: 0xF9D3, + 15877: 0xF9D4, + 15878: 0x5141, + 15879: 0x596B, + 15880: 0x5C39, + 15881: 0xF9D5, + 15882: 0xF9D6, + 15883: 0x6F64, + 15884: 0x73A7, + 15885: 0x80E4, + 15886: 0x8D07, + 15887: 0xF9D7, + 15888: 0x9217, + 15889: 0x958F, + 15890: 0xF9D8, + 15891: 0xF9D9, + 15892: 0xF9DA, + 15893: 0xF9DB, + 15894: 0x807F, + 15895: 0x620E, + 15896: 0x701C, + 15897: 0x7D68, + 15898: 0x878D, + 15899: 0xF9DC, + 15900: 0x57A0, + 15901: 0x6069, + 15902: 0x6147, + 15903: 0x6BB7, + 15904: 0x8ABE, + 15905: 0x9280, + 15906: 0x96B1, + 15907: 0x4E59, + 15908: 0x541F, + 15909: 0x6DEB, + 15910: 0x852D, + 15911: 0x9670, + 15912: 0x97F3, + 15913: 0x98EE, + 15914: 0x63D6, + 15915: 0x6CE3, + 15916: 0x9091, + 15917: 0x51DD, + 15918: 0x61C9, + 15919: 0x81BA, + 15920: 0x9DF9, + 15921: 0x4F9D, + 15922: 0x501A, + 15923: 0x5100, + 15924: 0x5B9C, + 15925: 0x610F, + 15926: 0x61FF, + 15927: 0x64EC, + 15928: 0x6905, + 15929: 0x6BC5, + 15930: 0x7591, + 15931: 0x77E3, + 15932: 0x7FA9, + 15933: 0x8264, + 15934: 0x858F, + 15935: 0x87FB, + 15936: 0x8863, + 15937: 0x8ABC, + 15938: 0x8B70, + 15939: 0x91AB, + 15940: 0x4E8C, + 15941: 0x4EE5, + 15942: 0x4F0A, + 15943: 0xF9DD, + 15944: 0xF9DE, + 15945: 0x5937, + 15946: 0x59E8, + 15947: 0xF9DF, + 15948: 0x5DF2, + 15949: 0x5F1B, + 15950: 0x5F5B, + 15951: 0x6021, + 15952: 0xF9E0, + 15953: 0xF9E1, + 15954: 0xF9E2, + 15955: 0xF9E3, + 15956: 0x723E, + 15957: 0x73E5, + 15958: 0xF9E4, + 15959: 0x7570, + 15960: 0x75CD, + 15961: 0xF9E5, + 15962: 0x79FB, + 15963: 0xF9E6, + 15964: 0x800C, + 15965: 0x8033, + 15966: 0x8084, + 15967: 0x82E1, + 15968: 0x8351, + 15969: 0xF9E7, + 15970: 0xF9E8, + 15971: 0x8CBD, + 15972: 0x8CB3, + 15973: 0x9087, + 15974: 0xF9E9, + 15975: 0xF9EA, + 15976: 0x98F4, + 15977: 0x990C, + 15978: 0xF9EB, + 15979: 0xF9EC, + 15980: 0x7037, + 15981: 0x76CA, + 15982: 0x7FCA, + 15983: 0x7FCC, + 15984: 0x7FFC, + 15985: 0x8B1A, + 15986: 0x4EBA, + 15987: 0x4EC1, + 15988: 0x5203, + 15989: 0x5370, + 15990: 0xF9ED, + 15991: 0x54BD, + 15992: 0x56E0, + 15993: 0x59FB, + 15994: 0x5BC5, + 15995: 0x5F15, + 15996: 0x5FCD, + 15997: 0x6E6E, + 15998: 0xF9EE, + 15999: 0xF9EF, + 16000: 0x7D6A, + 16001: 0x8335, + 16002: 0xF9F0, + 16003: 0x8693, + 16004: 0x8A8D, + 16005: 0xF9F1, + 16006: 0x976D, + 16007: 0x9777, + 16008: 0xF9F2, + 16009: 0xF9F3, + 16010: 0x4E00, + 16011: 0x4F5A, + 16012: 0x4F7E, + 16013: 0x58F9, + 16014: 0x65E5, + 16015: 0x6EA2, + 16016: 0x9038, + 16017: 0x93B0, + 16018: 0x99B9, + 16019: 0x4EFB, + 16020: 0x58EC, + 16021: 0x598A, + 16022: 0x59D9, + 16023: 0x6041, + 16024: 0xF9F4, + 16025: 0xF9F5, + 16026: 0x7A14, + 16027: 0xF9F6, + 16028: 0x834F, + 16029: 0x8CC3, + 16030: 0x5165, + 16031: 0x5344, + 16032: 0xF9F7, + 16033: 0xF9F8, + 16034: 0xF9F9, + 16035: 0x4ECD, + 16036: 0x5269, + 16037: 0x5B55, + 16038: 0x82BF, + 16039: 0x4ED4, + 16040: 0x523A, + 16041: 0x54A8, + 16042: 0x59C9, + 16043: 0x59FF, + 16044: 0x5B50, + 16045: 0x5B57, + 16046: 0x5B5C, + 16047: 0x6063, + 16048: 0x6148, + 16049: 0x6ECB, + 16050: 0x7099, + 16051: 0x716E, + 16052: 0x7386, + 16053: 0x74F7, + 16054: 0x75B5, + 16055: 0x78C1, + 16056: 0x7D2B, + 16057: 0x8005, + 16058: 0x81EA, + 16059: 0x8328, + 16060: 0x8517, + 16061: 0x85C9, + 16062: 0x8AEE, + 16063: 0x8CC7, + 16064: 0x96CC, + 16065: 0x4F5C, + 16066: 0x52FA, + 16067: 0x56BC, + 16068: 0x65AB, + 16069: 0x6628, + 16070: 0x707C, + 16071: 0x70B8, + 16072: 0x7235, + 16073: 0x7DBD, + 16074: 0x828D, + 16075: 0x914C, + 16076: 0x96C0, + 16077: 0x9D72, + 16078: 0x5B71, + 16079: 0x68E7, + 16080: 0x6B98, + 16081: 0x6F7A, + 16082: 0x76DE, + 16083: 0x5C91, + 16084: 0x66AB, + 16085: 0x6F5B, + 16086: 0x7BB4, + 16087: 0x7C2A, + 16088: 0x8836, + 16089: 0x96DC, + 16090: 0x4E08, + 16091: 0x4ED7, + 16092: 0x5320, + 16093: 0x5834, + 16094: 0x58BB, + 16095: 0x58EF, + 16096: 0x596C, + 16097: 0x5C07, + 16098: 0x5E33, + 16099: 0x5E84, + 16100: 0x5F35, + 16101: 0x638C, + 16102: 0x66B2, + 16103: 0x6756, + 16104: 0x6A1F, + 16105: 0x6AA3, + 16106: 0x6B0C, + 16107: 0x6F3F, + 16108: 0x7246, + 16109: 0xF9FA, + 16110: 0x7350, + 16111: 0x748B, + 16112: 0x7AE0, + 16113: 0x7CA7, + 16114: 0x8178, + 16115: 0x81DF, + 16116: 0x81E7, + 16117: 0x838A, + 16118: 0x846C, + 16119: 0x8523, + 16120: 0x8594, + 16121: 0x85CF, + 16122: 0x88DD, + 16123: 0x8D13, + 16124: 0x91AC, + 16125: 0x9577, + 16126: 0x969C, + 16127: 0x518D, + 16128: 0x54C9, + 16129: 0x5728, + 16130: 0x5BB0, + 16131: 0x624D, + 16132: 0x6750, + 16133: 0x683D, + 16134: 0x6893, + 16135: 0x6E3D, + 16136: 0x6ED3, + 16137: 0x707D, + 16138: 0x7E21, + 16139: 0x88C1, + 16140: 0x8CA1, + 16141: 0x8F09, + 16142: 0x9F4B, + 16143: 0x9F4E, + 16144: 0x722D, + 16145: 0x7B8F, + 16146: 0x8ACD, + 16147: 0x931A, + 16148: 0x4F47, + 16149: 0x4F4E, + 16150: 0x5132, + 16151: 0x5480, + 16152: 0x59D0, + 16153: 0x5E95, + 16154: 0x62B5, + 16155: 0x6775, + 16156: 0x696E, + 16157: 0x6A17, + 16158: 0x6CAE, + 16159: 0x6E1A, + 16160: 0x72D9, + 16161: 0x732A, + 16162: 0x75BD, + 16163: 0x7BB8, + 16164: 0x7D35, + 16165: 0x82E7, + 16166: 0x83F9, + 16167: 0x8457, + 16168: 0x85F7, + 16169: 0x8A5B, + 16170: 0x8CAF, + 16171: 0x8E87, + 16172: 0x9019, + 16173: 0x90B8, + 16174: 0x96CE, + 16175: 0x9F5F, + 16176: 0x52E3, + 16177: 0x540A, + 16178: 0x5AE1, + 16179: 0x5BC2, + 16180: 0x6458, + 16181: 0x6575, + 16182: 0x6EF4, + 16183: 0x72C4, + 16184: 0xF9FB, + 16185: 0x7684, + 16186: 0x7A4D, + 16187: 0x7B1B, + 16188: 0x7C4D, + 16189: 0x7E3E, + 16190: 0x7FDF, + 16191: 0x837B, + 16192: 0x8B2B, + 16193: 0x8CCA, + 16194: 0x8D64, + 16195: 0x8DE1, + 16196: 0x8E5F, + 16197: 0x8FEA, + 16198: 0x8FF9, + 16199: 0x9069, + 16200: 0x93D1, + 16201: 0x4F43, + 16202: 0x4F7A, + 16203: 0x50B3, + 16204: 0x5168, + 16205: 0x5178, + 16206: 0x524D, + 16207: 0x526A, + 16208: 0x5861, + 16209: 0x587C, + 16210: 0x5960, + 16211: 0x5C08, + 16212: 0x5C55, + 16213: 0x5EDB, + 16214: 0x609B, + 16215: 0x6230, + 16216: 0x6813, + 16217: 0x6BBF, + 16218: 0x6C08, + 16219: 0x6FB1, + 16220: 0x714E, + 16221: 0x7420, + 16222: 0x7530, + 16223: 0x7538, + 16224: 0x7551, + 16225: 0x7672, + 16226: 0x7B4C, + 16227: 0x7B8B, + 16228: 0x7BAD, + 16229: 0x7BC6, + 16230: 0x7E8F, + 16231: 0x8A6E, + 16232: 0x8F3E, + 16233: 0x8F49, + 16234: 0x923F, + 16235: 0x9293, + 16236: 0x9322, + 16237: 0x942B, + 16238: 0x96FB, + 16239: 0x985A, + 16240: 0x986B, + 16241: 0x991E, + 16242: 0x5207, + 16243: 0x622A, + 16244: 0x6298, + 16245: 0x6D59, + 16246: 0x7664, + 16247: 0x7ACA, + 16248: 0x7BC0, + 16249: 0x7D76, + 16250: 0x5360, + 16251: 0x5CBE, + 16252: 0x5E97, + 16253: 0x6F38, + 16254: 0x70B9, + 16255: 0x7C98, + 16256: 0x9711, + 16257: 0x9B8E, + 16258: 0x9EDE, + 16259: 0x63A5, + 16260: 0x647A, + 16261: 0x8776, + 16262: 0x4E01, + 16263: 0x4E95, + 16264: 0x4EAD, + 16265: 0x505C, + 16266: 0x5075, + 16267: 0x5448, + 16268: 0x59C3, + 16269: 0x5B9A, + 16270: 0x5E40, + 16271: 0x5EAD, + 16272: 0x5EF7, + 16273: 0x5F81, + 16274: 0x60C5, + 16275: 0x633A, + 16276: 0x653F, + 16277: 0x6574, + 16278: 0x65CC, + 16279: 0x6676, + 16280: 0x6678, + 16281: 0x67FE, + 16282: 0x6968, + 16283: 0x6A89, + 16284: 0x6B63, + 16285: 0x6C40, + 16286: 0x6DC0, + 16287: 0x6DE8, + 16288: 0x6E1F, + 16289: 0x6E5E, + 16290: 0x701E, + 16291: 0x70A1, + 16292: 0x738E, + 16293: 0x73FD, + 16294: 0x753A, + 16295: 0x775B, + 16296: 0x7887, + 16297: 0x798E, + 16298: 0x7A0B, + 16299: 0x7A7D, + 16300: 0x7CBE, + 16301: 0x7D8E, + 16302: 0x8247, + 16303: 0x8A02, + 16304: 0x8AEA, + 16305: 0x8C9E, + 16306: 0x912D, + 16307: 0x914A, + 16308: 0x91D8, + 16309: 0x9266, + 16310: 0x92CC, + 16311: 0x9320, + 16312: 0x9706, + 16313: 0x9756, + 16314: 0x975C, + 16315: 0x9802, + 16316: 0x9F0E, + 16317: 0x5236, + 16318: 0x5291, + 16319: 0x557C, + 16320: 0x5824, + 16321: 0x5E1D, + 16322: 0x5F1F, + 16323: 0x608C, + 16324: 0x63D0, + 16325: 0x68AF, + 16326: 0x6FDF, + 16327: 0x796D, + 16328: 0x7B2C, + 16329: 0x81CD, + 16330: 0x85BA, + 16331: 0x88FD, + 16332: 0x8AF8, + 16333: 0x8E44, + 16334: 0x918D, + 16335: 0x9664, + 16336: 0x969B, + 16337: 0x973D, + 16338: 0x984C, + 16339: 0x9F4A, + 16340: 0x4FCE, + 16341: 0x5146, + 16342: 0x51CB, + 16343: 0x52A9, + 16344: 0x5632, + 16345: 0x5F14, + 16346: 0x5F6B, + 16347: 0x63AA, + 16348: 0x64CD, + 16349: 0x65E9, + 16350: 0x6641, + 16351: 0x66FA, + 16352: 0x66F9, + 16353: 0x671D, + 16354: 0x689D, + 16355: 0x68D7, + 16356: 0x69FD, + 16357: 0x6F15, + 16358: 0x6F6E, + 16359: 0x7167, + 16360: 0x71E5, + 16361: 0x722A, + 16362: 0x74AA, + 16363: 0x773A, + 16364: 0x7956, + 16365: 0x795A, + 16366: 0x79DF, + 16367: 0x7A20, + 16368: 0x7A95, + 16369: 0x7C97, + 16370: 0x7CDF, + 16371: 0x7D44, + 16372: 0x7E70, + 16373: 0x8087, + 16374: 0x85FB, + 16375: 0x86A4, + 16376: 0x8A54, + 16377: 0x8ABF, + 16378: 0x8D99, + 16379: 0x8E81, + 16380: 0x9020, + 16381: 0x906D, + 16382: 0x91E3, + 16383: 0x963B, + 16384: 0x96D5, + 16385: 0x9CE5, + 16386: 0x65CF, + 16387: 0x7C07, + 16388: 0x8DB3, + 16389: 0x93C3, + 16390: 0x5B58, + 16391: 0x5C0A, + 16392: 0x5352, + 16393: 0x62D9, + 16394: 0x731D, + 16395: 0x5027, + 16396: 0x5B97, + 16397: 0x5F9E, + 16398: 0x60B0, + 16399: 0x616B, + 16400: 0x68D5, + 16401: 0x6DD9, + 16402: 0x742E, + 16403: 0x7A2E, + 16404: 0x7D42, + 16405: 0x7D9C, + 16406: 0x7E31, + 16407: 0x816B, + 16408: 0x8E2A, + 16409: 0x8E35, + 16410: 0x937E, + 16411: 0x9418, + 16412: 0x4F50, + 16413: 0x5750, + 16414: 0x5DE6, + 16415: 0x5EA7, + 16416: 0x632B, + 16417: 0x7F6A, + 16418: 0x4E3B, + 16419: 0x4F4F, + 16420: 0x4F8F, + 16421: 0x505A, + 16422: 0x59DD, + 16423: 0x80C4, + 16424: 0x546A, + 16425: 0x5468, + 16426: 0x55FE, + 16427: 0x594F, + 16428: 0x5B99, + 16429: 0x5DDE, + 16430: 0x5EDA, + 16431: 0x665D, + 16432: 0x6731, + 16433: 0x67F1, + 16434: 0x682A, + 16435: 0x6CE8, + 16436: 0x6D32, + 16437: 0x6E4A, + 16438: 0x6F8D, + 16439: 0x70B7, + 16440: 0x73E0, + 16441: 0x7587, + 16442: 0x7C4C, + 16443: 0x7D02, + 16444: 0x7D2C, + 16445: 0x7DA2, + 16446: 0x821F, + 16447: 0x86DB, + 16448: 0x8A3B, + 16449: 0x8A85, + 16450: 0x8D70, + 16451: 0x8E8A, + 16452: 0x8F33, + 16453: 0x9031, + 16454: 0x914E, + 16455: 0x9152, + 16456: 0x9444, + 16457: 0x99D0, + 16458: 0x7AF9, + 16459: 0x7CA5, + 16460: 0x4FCA, + 16461: 0x5101, + 16462: 0x51C6, + 16463: 0x57C8, + 16464: 0x5BEF, + 16465: 0x5CFB, + 16466: 0x6659, + 16467: 0x6A3D, + 16468: 0x6D5A, + 16469: 0x6E96, + 16470: 0x6FEC, + 16471: 0x710C, + 16472: 0x756F, + 16473: 0x7AE3, + 16474: 0x8822, + 16475: 0x9021, + 16476: 0x9075, + 16477: 0x96CB, + 16478: 0x99FF, + 16479: 0x8301, + 16480: 0x4E2D, + 16481: 0x4EF2, + 16482: 0x8846, + 16483: 0x91CD, + 16484: 0x537D, + 16485: 0x6ADB, + 16486: 0x696B, + 16487: 0x6C41, + 16488: 0x847A, + 16489: 0x589E, + 16490: 0x618E, + 16491: 0x66FE, + 16492: 0x62EF, + 16493: 0x70DD, + 16494: 0x7511, + 16495: 0x75C7, + 16496: 0x7E52, + 16497: 0x84B8, + 16498: 0x8B49, + 16499: 0x8D08, + 16500: 0x4E4B, + 16501: 0x53EA, + 16502: 0x54AB, + 16503: 0x5730, + 16504: 0x5740, + 16505: 0x5FD7, + 16506: 0x6301, + 16507: 0x6307, + 16508: 0x646F, + 16509: 0x652F, + 16510: 0x65E8, + 16511: 0x667A, + 16512: 0x679D, + 16513: 0x67B3, + 16514: 0x6B62, + 16515: 0x6C60, + 16516: 0x6C9A, + 16517: 0x6F2C, + 16518: 0x77E5, + 16519: 0x7825, + 16520: 0x7949, + 16521: 0x7957, + 16522: 0x7D19, + 16523: 0x80A2, + 16524: 0x8102, + 16525: 0x81F3, + 16526: 0x829D, + 16527: 0x82B7, + 16528: 0x8718, + 16529: 0x8A8C, + 16530: 0xF9FC, + 16531: 0x8D04, + 16532: 0x8DBE, + 16533: 0x9072, + 16534: 0x76F4, + 16535: 0x7A19, + 16536: 0x7A37, + 16537: 0x7E54, + 16538: 0x8077, + 16539: 0x5507, + 16540: 0x55D4, + 16541: 0x5875, + 16542: 0x632F, + 16543: 0x6422, + 16544: 0x6649, + 16545: 0x664B, + 16546: 0x686D, + 16547: 0x699B, + 16548: 0x6B84, + 16549: 0x6D25, + 16550: 0x6EB1, + 16551: 0x73CD, + 16552: 0x7468, + 16553: 0x74A1, + 16554: 0x755B, + 16555: 0x75B9, + 16556: 0x76E1, + 16557: 0x771E, + 16558: 0x778B, + 16559: 0x79E6, + 16560: 0x7E09, + 16561: 0x7E1D, + 16562: 0x81FB, + 16563: 0x852F, + 16564: 0x8897, + 16565: 0x8A3A, + 16566: 0x8CD1, + 16567: 0x8EEB, + 16568: 0x8FB0, + 16569: 0x9032, + 16570: 0x93AD, + 16571: 0x9663, + 16572: 0x9673, + 16573: 0x9707, + 16574: 0x4F84, + 16575: 0x53F1, + 16576: 0x59EA, + 16577: 0x5AC9, + 16578: 0x5E19, + 16579: 0x684E, + 16580: 0x74C6, + 16581: 0x75BE, + 16582: 0x79E9, + 16583: 0x7A92, + 16584: 0x81A3, + 16585: 0x86ED, + 16586: 0x8CEA, + 16587: 0x8DCC, + 16588: 0x8FED, + 16589: 0x659F, + 16590: 0x6715, + 16591: 0xF9FD, + 16592: 0x57F7, + 16593: 0x6F57, + 16594: 0x7DDD, + 16595: 0x8F2F, + 16596: 0x93F6, + 16597: 0x96C6, + 16598: 0x5FB5, + 16599: 0x61F2, + 16600: 0x6F84, + 16601: 0x4E14, + 16602: 0x4F98, + 16603: 0x501F, + 16604: 0x53C9, + 16605: 0x55DF, + 16606: 0x5D6F, + 16607: 0x5DEE, + 16608: 0x6B21, + 16609: 0x6B64, + 16610: 0x78CB, + 16611: 0x7B9A, + 16612: 0xF9FE, + 16613: 0x8E49, + 16614: 0x8ECA, + 16615: 0x906E, + 16616: 0x6349, + 16617: 0x643E, + 16618: 0x7740, + 16619: 0x7A84, + 16620: 0x932F, + 16621: 0x947F, + 16622: 0x9F6A, + 16623: 0x64B0, + 16624: 0x6FAF, + 16625: 0x71E6, + 16626: 0x74A8, + 16627: 0x74DA, + 16628: 0x7AC4, + 16629: 0x7C12, + 16630: 0x7E82, + 16631: 0x7CB2, + 16632: 0x7E98, + 16633: 0x8B9A, + 16634: 0x8D0A, + 16635: 0x947D, + 16636: 0x9910, + 16637: 0x994C, + 16638: 0x5239, + 16639: 0x5BDF, + 16640: 0x64E6, + 16641: 0x672D, + 16642: 0x7D2E, + 16643: 0x50ED, + 16644: 0x53C3, + 16645: 0x5879, + 16646: 0x6158, + 16647: 0x6159, + 16648: 0x61FA, + 16649: 0x65AC, + 16650: 0x7AD9, + 16651: 0x8B92, + 16652: 0x8B96, + 16653: 0x5009, + 16654: 0x5021, + 16655: 0x5275, + 16656: 0x5531, + 16657: 0x5A3C, + 16658: 0x5EE0, + 16659: 0x5F70, + 16660: 0x6134, + 16661: 0x655E, + 16662: 0x660C, + 16663: 0x6636, + 16664: 0x66A2, + 16665: 0x69CD, + 16666: 0x6EC4, + 16667: 0x6F32, + 16668: 0x7316, + 16669: 0x7621, + 16670: 0x7A93, + 16671: 0x8139, + 16672: 0x8259, + 16673: 0x83D6, + 16674: 0x84BC, + 16675: 0x50B5, + 16676: 0x57F0, + 16677: 0x5BC0, + 16678: 0x5BE8, + 16679: 0x5F69, + 16680: 0x63A1, + 16681: 0x7826, + 16682: 0x7DB5, + 16683: 0x83DC, + 16684: 0x8521, + 16685: 0x91C7, + 16686: 0x91F5, + 16687: 0x518A, + 16688: 0x67F5, + 16689: 0x7B56, + 16690: 0x8CAC, + 16691: 0x51C4, + 16692: 0x59BB, + 16693: 0x60BD, + 16694: 0x8655, + 16695: 0x501C, + 16696: 0xF9FF, + 16697: 0x5254, + 16698: 0x5C3A, + 16699: 0x617D, + 16700: 0x621A, + 16701: 0x62D3, + 16702: 0x64F2, + 16703: 0x65A5, + 16704: 0x6ECC, + 16705: 0x7620, + 16706: 0x810A, + 16707: 0x8E60, + 16708: 0x965F, + 16709: 0x96BB, + 16710: 0x4EDF, + 16711: 0x5343, + 16712: 0x5598, + 16713: 0x5929, + 16714: 0x5DDD, + 16715: 0x64C5, + 16716: 0x6CC9, + 16717: 0x6DFA, + 16718: 0x7394, + 16719: 0x7A7F, + 16720: 0x821B, + 16721: 0x85A6, + 16722: 0x8CE4, + 16723: 0x8E10, + 16724: 0x9077, + 16725: 0x91E7, + 16726: 0x95E1, + 16727: 0x9621, + 16728: 0x97C6, + 16729: 0x51F8, + 16730: 0x54F2, + 16731: 0x5586, + 16732: 0x5FB9, + 16733: 0x64A4, + 16734: 0x6F88, + 16735: 0x7DB4, + 16736: 0x8F1F, + 16737: 0x8F4D, + 16738: 0x9435, + 16739: 0x50C9, + 16740: 0x5C16, + 16741: 0x6CBE, + 16742: 0x6DFB, + 16743: 0x751B, + 16744: 0x77BB, + 16745: 0x7C3D, + 16746: 0x7C64, + 16747: 0x8A79, + 16748: 0x8AC2, + 16749: 0x581E, + 16750: 0x59BE, + 16751: 0x5E16, + 16752: 0x6377, + 16753: 0x7252, + 16754: 0x758A, + 16755: 0x776B, + 16756: 0x8ADC, + 16757: 0x8CBC, + 16758: 0x8F12, + 16759: 0x5EF3, + 16760: 0x6674, + 16761: 0x6DF8, + 16762: 0x807D, + 16763: 0x83C1, + 16764: 0x8ACB, + 16765: 0x9751, + 16766: 0x9BD6, + 16767: 0xFA00, + 16768: 0x5243, + 16769: 0x66FF, + 16770: 0x6D95, + 16771: 0x6EEF, + 16772: 0x7DE0, + 16773: 0x8AE6, + 16774: 0x902E, + 16775: 0x905E, + 16776: 0x9AD4, + 16777: 0x521D, + 16778: 0x527F, + 16779: 0x54E8, + 16780: 0x6194, + 16781: 0x6284, + 16782: 0x62DB, + 16783: 0x68A2, + 16784: 0x6912, + 16785: 0x695A, + 16786: 0x6A35, + 16787: 0x7092, + 16788: 0x7126, + 16789: 0x785D, + 16790: 0x7901, + 16791: 0x790E, + 16792: 0x79D2, + 16793: 0x7A0D, + 16794: 0x8096, + 16795: 0x8278, + 16796: 0x82D5, + 16797: 0x8349, + 16798: 0x8549, + 16799: 0x8C82, + 16800: 0x8D85, + 16801: 0x9162, + 16802: 0x918B, + 16803: 0x91AE, + 16804: 0x4FC3, + 16805: 0x56D1, + 16806: 0x71ED, + 16807: 0x77D7, + 16808: 0x8700, + 16809: 0x89F8, + 16810: 0x5BF8, + 16811: 0x5FD6, + 16812: 0x6751, + 16813: 0x90A8, + 16814: 0x53E2, + 16815: 0x585A, + 16816: 0x5BF5, + 16817: 0x60A4, + 16818: 0x6181, + 16819: 0x6460, + 16820: 0x7E3D, + 16821: 0x8070, + 16822: 0x8525, + 16823: 0x9283, + 16824: 0x64AE, + 16825: 0x50AC, + 16826: 0x5D14, + 16827: 0x6700, + 16828: 0x589C, + 16829: 0x62BD, + 16830: 0x63A8, + 16831: 0x690E, + 16832: 0x6978, + 16833: 0x6A1E, + 16834: 0x6E6B, + 16835: 0x76BA, + 16836: 0x79CB, + 16837: 0x82BB, + 16838: 0x8429, + 16839: 0x8ACF, + 16840: 0x8DA8, + 16841: 0x8FFD, + 16842: 0x9112, + 16843: 0x914B, + 16844: 0x919C, + 16845: 0x9310, + 16846: 0x9318, + 16847: 0x939A, + 16848: 0x96DB, + 16849: 0x9A36, + 16850: 0x9C0D, + 16851: 0x4E11, + 16852: 0x755C, + 16853: 0x795D, + 16854: 0x7AFA, + 16855: 0x7B51, + 16856: 0x7BC9, + 16857: 0x7E2E, + 16858: 0x84C4, + 16859: 0x8E59, + 16860: 0x8E74, + 16861: 0x8EF8, + 16862: 0x9010, + 16863: 0x6625, + 16864: 0x693F, + 16865: 0x7443, + 16866: 0x51FA, + 16867: 0x672E, + 16868: 0x9EDC, + 16869: 0x5145, + 16870: 0x5FE0, + 16871: 0x6C96, + 16872: 0x87F2, + 16873: 0x885D, + 16874: 0x8877, + 16875: 0x60B4, + 16876: 0x81B5, + 16877: 0x8403, + 16878: 0x8D05, + 16879: 0x53D6, + 16880: 0x5439, + 16881: 0x5634, + 16882: 0x5A36, + 16883: 0x5C31, + 16884: 0x708A, + 16885: 0x7FE0, + 16886: 0x805A, + 16887: 0x8106, + 16888: 0x81ED, + 16889: 0x8DA3, + 16890: 0x9189, + 16891: 0x9A5F, + 16892: 0x9DF2, + 16893: 0x5074, + 16894: 0x4EC4, + 16895: 0x53A0, + 16896: 0x60FB, + 16897: 0x6E2C, + 16898: 0x5C64, + 16899: 0x4F88, + 16900: 0x5024, + 16901: 0x55E4, + 16902: 0x5CD9, + 16903: 0x5E5F, + 16904: 0x6065, + 16905: 0x6894, + 16906: 0x6CBB, + 16907: 0x6DC4, + 16908: 0x71BE, + 16909: 0x75D4, + 16910: 0x75F4, + 16911: 0x7661, + 16912: 0x7A1A, + 16913: 0x7A49, + 16914: 0x7DC7, + 16915: 0x7DFB, + 16916: 0x7F6E, + 16917: 0x81F4, + 16918: 0x86A9, + 16919: 0x8F1C, + 16920: 0x96C9, + 16921: 0x99B3, + 16922: 0x9F52, + 16923: 0x5247, + 16924: 0x52C5, + 16925: 0x98ED, + 16926: 0x89AA, + 16927: 0x4E03, + 16928: 0x67D2, + 16929: 0x6F06, + 16930: 0x4FB5, + 16931: 0x5BE2, + 16932: 0x6795, + 16933: 0x6C88, + 16934: 0x6D78, + 16935: 0x741B, + 16936: 0x7827, + 16937: 0x91DD, + 16938: 0x937C, + 16939: 0x87C4, + 16940: 0x79E4, + 16941: 0x7A31, + 16942: 0x5FEB, + 16943: 0x4ED6, + 16944: 0x54A4, + 16945: 0x553E, + 16946: 0x58AE, + 16947: 0x59A5, + 16948: 0x60F0, + 16949: 0x6253, + 16950: 0x62D6, + 16951: 0x6736, + 16952: 0x6955, + 16953: 0x8235, + 16954: 0x9640, + 16955: 0x99B1, + 16956: 0x99DD, + 16957: 0x502C, + 16958: 0x5353, + 16959: 0x5544, + 16960: 0x577C, + 16961: 0xFA01, + 16962: 0x6258, + 16963: 0xFA02, + 16964: 0x64E2, + 16965: 0x666B, + 16966: 0x67DD, + 16967: 0x6FC1, + 16968: 0x6FEF, + 16969: 0x7422, + 16970: 0x7438, + 16971: 0x8A17, + 16972: 0x9438, + 16973: 0x5451, + 16974: 0x5606, + 16975: 0x5766, + 16976: 0x5F48, + 16977: 0x619A, + 16978: 0x6B4E, + 16979: 0x7058, + 16980: 0x70AD, + 16981: 0x7DBB, + 16982: 0x8A95, + 16983: 0x596A, + 16984: 0x812B, + 16985: 0x63A2, + 16986: 0x7708, + 16987: 0x803D, + 16988: 0x8CAA, + 16989: 0x5854, + 16990: 0x642D, + 16991: 0x69BB, + 16992: 0x5B95, + 16993: 0x5E11, + 16994: 0x6E6F, + 16995: 0xFA03, + 16996: 0x8569, + 16997: 0x514C, + 16998: 0x53F0, + 16999: 0x592A, + 17000: 0x6020, + 17001: 0x614B, + 17002: 0x6B86, + 17003: 0x6C70, + 17004: 0x6CF0, + 17005: 0x7B1E, + 17006: 0x80CE, + 17007: 0x82D4, + 17008: 0x8DC6, + 17009: 0x90B0, + 17010: 0x98B1, + 17011: 0xFA04, + 17012: 0x64C7, + 17013: 0x6FA4, + 17014: 0x6491, + 17015: 0x6504, + 17016: 0x514E, + 17017: 0x5410, + 17018: 0x571F, + 17019: 0x8A0E, + 17020: 0x615F, + 17021: 0x6876, + 17022: 0xFA05, + 17023: 0x75DB, + 17024: 0x7B52, + 17025: 0x7D71, + 17026: 0x901A, + 17027: 0x5806, + 17028: 0x69CC, + 17029: 0x817F, + 17030: 0x892A, + 17031: 0x9000, + 17032: 0x9839, + 17033: 0x5078, + 17034: 0x5957, + 17035: 0x59AC, + 17036: 0x6295, + 17037: 0x900F, + 17038: 0x9B2A, + 17039: 0x615D, + 17040: 0x7279, + 17041: 0x95D6, + 17042: 0x5761, + 17043: 0x5A46, + 17044: 0x5DF4, + 17045: 0x628A, + 17046: 0x64AD, + 17047: 0x64FA, + 17048: 0x6777, + 17049: 0x6CE2, + 17050: 0x6D3E, + 17051: 0x722C, + 17052: 0x7436, + 17053: 0x7834, + 17054: 0x7F77, + 17055: 0x82AD, + 17056: 0x8DDB, + 17057: 0x9817, + 17058: 0x5224, + 17059: 0x5742, + 17060: 0x677F, + 17061: 0x7248, + 17062: 0x74E3, + 17063: 0x8CA9, + 17064: 0x8FA6, + 17065: 0x9211, + 17066: 0x962A, + 17067: 0x516B, + 17068: 0x53ED, + 17069: 0x634C, + 17070: 0x4F69, + 17071: 0x5504, + 17072: 0x6096, + 17073: 0x6557, + 17074: 0x6C9B, + 17075: 0x6D7F, + 17076: 0x724C, + 17077: 0x72FD, + 17078: 0x7A17, + 17079: 0x8987, + 17080: 0x8C9D, + 17081: 0x5F6D, + 17082: 0x6F8E, + 17083: 0x70F9, + 17084: 0x81A8, + 17085: 0x610E, + 17086: 0x4FBF, + 17087: 0x504F, + 17088: 0x6241, + 17089: 0x7247, + 17090: 0x7BC7, + 17091: 0x7DE8, + 17092: 0x7FE9, + 17093: 0x904D, + 17094: 0x97AD, + 17095: 0x9A19, + 17096: 0x8CB6, + 17097: 0x576A, + 17098: 0x5E73, + 17099: 0x67B0, + 17100: 0x840D, + 17101: 0x8A55, + 17102: 0x5420, + 17103: 0x5B16, + 17104: 0x5E63, + 17105: 0x5EE2, + 17106: 0x5F0A, + 17107: 0x6583, + 17108: 0x80BA, + 17109: 0x853D, + 17110: 0x9589, + 17111: 0x965B, + 17112: 0x4F48, + 17113: 0x5305, + 17114: 0x530D, + 17115: 0x530F, + 17116: 0x5486, + 17117: 0x54FA, + 17118: 0x5703, + 17119: 0x5E03, + 17120: 0x6016, + 17121: 0x629B, + 17122: 0x62B1, + 17123: 0x6355, + 17124: 0xFA06, + 17125: 0x6CE1, + 17126: 0x6D66, + 17127: 0x75B1, + 17128: 0x7832, + 17129: 0x80DE, + 17130: 0x812F, + 17131: 0x82DE, + 17132: 0x8461, + 17133: 0x84B2, + 17134: 0x888D, + 17135: 0x8912, + 17136: 0x900B, + 17137: 0x92EA, + 17138: 0x98FD, + 17139: 0x9B91, + 17140: 0x5E45, + 17141: 0x66B4, + 17142: 0x66DD, + 17143: 0x7011, + 17144: 0x7206, + 17145: 0xFA07, + 17146: 0x4FF5, + 17147: 0x527D, + 17148: 0x5F6A, + 17149: 0x6153, + 17150: 0x6753, + 17151: 0x6A19, + 17152: 0x6F02, + 17153: 0x74E2, + 17154: 0x7968, + 17155: 0x8868, + 17156: 0x8C79, + 17157: 0x98C7, + 17158: 0x98C4, + 17159: 0x9A43, + 17160: 0x54C1, + 17161: 0x7A1F, + 17162: 0x6953, + 17163: 0x8AF7, + 17164: 0x8C4A, + 17165: 0x98A8, + 17166: 0x99AE, + 17167: 0x5F7C, + 17168: 0x62AB, + 17169: 0x75B2, + 17170: 0x76AE, + 17171: 0x88AB, + 17172: 0x907F, + 17173: 0x9642, + 17174: 0x5339, + 17175: 0x5F3C, + 17176: 0x5FC5, + 17177: 0x6CCC, + 17178: 0x73CC, + 17179: 0x7562, + 17180: 0x758B, + 17181: 0x7B46, + 17182: 0x82FE, + 17183: 0x999D, + 17184: 0x4E4F, + 17185: 0x903C, + 17186: 0x4E0B, + 17187: 0x4F55, + 17188: 0x53A6, + 17189: 0x590F, + 17190: 0x5EC8, + 17191: 0x6630, + 17192: 0x6CB3, + 17193: 0x7455, + 17194: 0x8377, + 17195: 0x8766, + 17196: 0x8CC0, + 17197: 0x9050, + 17198: 0x971E, + 17199: 0x9C15, + 17200: 0x58D1, + 17201: 0x5B78, + 17202: 0x8650, + 17203: 0x8B14, + 17204: 0x9DB4, + 17205: 0x5BD2, + 17206: 0x6068, + 17207: 0x608D, + 17208: 0x65F1, + 17209: 0x6C57, + 17210: 0x6F22, + 17211: 0x6FA3, + 17212: 0x701A, + 17213: 0x7F55, + 17214: 0x7FF0, + 17215: 0x9591, + 17216: 0x9592, + 17217: 0x9650, + 17218: 0x97D3, + 17219: 0x5272, + 17220: 0x8F44, + 17221: 0x51FD, + 17222: 0x542B, + 17223: 0x54B8, + 17224: 0x5563, + 17225: 0x558A, + 17226: 0x6ABB, + 17227: 0x6DB5, + 17228: 0x7DD8, + 17229: 0x8266, + 17230: 0x929C, + 17231: 0x9677, + 17232: 0x9E79, + 17233: 0x5408, + 17234: 0x54C8, + 17235: 0x76D2, + 17236: 0x86E4, + 17237: 0x95A4, + 17238: 0x95D4, + 17239: 0x965C, + 17240: 0x4EA2, + 17241: 0x4F09, + 17242: 0x59EE, + 17243: 0x5AE6, + 17244: 0x5DF7, + 17245: 0x6052, + 17246: 0x6297, + 17247: 0x676D, + 17248: 0x6841, + 17249: 0x6C86, + 17250: 0x6E2F, + 17251: 0x7F38, + 17252: 0x809B, + 17253: 0x822A, + 17254: 0xFA08, + 17255: 0xFA09, + 17256: 0x9805, + 17257: 0x4EA5, + 17258: 0x5055, + 17259: 0x54B3, + 17260: 0x5793, + 17261: 0x595A, + 17262: 0x5B69, + 17263: 0x5BB3, + 17264: 0x61C8, + 17265: 0x6977, + 17266: 0x6D77, + 17267: 0x7023, + 17268: 0x87F9, + 17269: 0x89E3, + 17270: 0x8A72, + 17271: 0x8AE7, + 17272: 0x9082, + 17273: 0x99ED, + 17274: 0x9AB8, + 17275: 0x52BE, + 17276: 0x6838, + 17277: 0x5016, + 17278: 0x5E78, + 17279: 0x674F, + 17280: 0x8347, + 17281: 0x884C, + 17282: 0x4EAB, + 17283: 0x5411, + 17284: 0x56AE, + 17285: 0x73E6, + 17286: 0x9115, + 17287: 0x97FF, + 17288: 0x9909, + 17289: 0x9957, + 17290: 0x9999, + 17291: 0x5653, + 17292: 0x589F, + 17293: 0x865B, + 17294: 0x8A31, + 17295: 0x61B2, + 17296: 0x6AF6, + 17297: 0x737B, + 17298: 0x8ED2, + 17299: 0x6B47, + 17300: 0x96AA, + 17301: 0x9A57, + 17302: 0x5955, + 17303: 0x7200, + 17304: 0x8D6B, + 17305: 0x9769, + 17306: 0x4FD4, + 17307: 0x5CF4, + 17308: 0x5F26, + 17309: 0x61F8, + 17310: 0x665B, + 17311: 0x6CEB, + 17312: 0x70AB, + 17313: 0x7384, + 17314: 0x73B9, + 17315: 0x73FE, + 17316: 0x7729, + 17317: 0x774D, + 17318: 0x7D43, + 17319: 0x7D62, + 17320: 0x7E23, + 17321: 0x8237, + 17322: 0x8852, + 17323: 0xFA0A, + 17324: 0x8CE2, + 17325: 0x9249, + 17326: 0x986F, + 17327: 0x5B51, + 17328: 0x7A74, + 17329: 0x8840, + 17330: 0x9801, + 17331: 0x5ACC, + 17332: 0x4FE0, + 17333: 0x5354, + 17334: 0x593E, + 17335: 0x5CFD, + 17336: 0x633E, + 17337: 0x6D79, + 17338: 0x72F9, + 17339: 0x8105, + 17340: 0x8107, + 17341: 0x83A2, + 17342: 0x92CF, + 17343: 0x9830, + 17344: 0x4EA8, + 17345: 0x5144, + 17346: 0x5211, + 17347: 0x578B, + 17348: 0x5F62, + 17349: 0x6CC2, + 17350: 0x6ECE, + 17351: 0x7005, + 17352: 0x7050, + 17353: 0x70AF, + 17354: 0x7192, + 17355: 0x73E9, + 17356: 0x7469, + 17357: 0x834A, + 17358: 0x87A2, + 17359: 0x8861, + 17360: 0x9008, + 17361: 0x90A2, + 17362: 0x93A3, + 17363: 0x99A8, + 17364: 0x516E, + 17365: 0x5F57, + 17366: 0x60E0, + 17367: 0x6167, + 17368: 0x66B3, + 17369: 0x8559, + 17370: 0x8E4A, + 17371: 0x91AF, + 17372: 0x978B, + 17373: 0x4E4E, + 17374: 0x4E92, + 17375: 0x547C, + 17376: 0x58D5, + 17377: 0x58FA, + 17378: 0x597D, + 17379: 0x5CB5, + 17380: 0x5F27, + 17381: 0x6236, + 17382: 0x6248, + 17383: 0x660A, + 17384: 0x6667, + 17385: 0x6BEB, + 17386: 0x6D69, + 17387: 0x6DCF, + 17388: 0x6E56, + 17389: 0x6EF8, + 17390: 0x6F94, + 17391: 0x6FE0, + 17392: 0x6FE9, + 17393: 0x705D, + 17394: 0x72D0, + 17395: 0x7425, + 17396: 0x745A, + 17397: 0x74E0, + 17398: 0x7693, + 17399: 0x795C, + 17400: 0x7CCA, + 17401: 0x7E1E, + 17402: 0x80E1, + 17403: 0x82A6, + 17404: 0x846B, + 17405: 0x84BF, + 17406: 0x864E, + 17407: 0x865F, + 17408: 0x8774, + 17409: 0x8B77, + 17410: 0x8C6A, + 17411: 0x93AC, + 17412: 0x9800, + 17413: 0x9865, + 17414: 0x60D1, + 17415: 0x6216, + 17416: 0x9177, + 17417: 0x5A5A, + 17418: 0x660F, + 17419: 0x6DF7, + 17420: 0x6E3E, + 17421: 0x743F, + 17422: 0x9B42, + 17423: 0x5FFD, + 17424: 0x60DA, + 17425: 0x7B0F, + 17426: 0x54C4, + 17427: 0x5F18, + 17428: 0x6C5E, + 17429: 0x6CD3, + 17430: 0x6D2A, + 17431: 0x70D8, + 17432: 0x7D05, + 17433: 0x8679, + 17434: 0x8A0C, + 17435: 0x9D3B, + 17436: 0x5316, + 17437: 0x548C, + 17438: 0x5B05, + 17439: 0x6A3A, + 17440: 0x706B, + 17441: 0x7575, + 17442: 0x798D, + 17443: 0x79BE, + 17444: 0x82B1, + 17445: 0x83EF, + 17446: 0x8A71, + 17447: 0x8B41, + 17448: 0x8CA8, + 17449: 0x9774, + 17450: 0xFA0B, + 17451: 0x64F4, + 17452: 0x652B, + 17453: 0x78BA, + 17454: 0x78BB, + 17455: 0x7A6B, + 17456: 0x4E38, + 17457: 0x559A, + 17458: 0x5950, + 17459: 0x5BA6, + 17460: 0x5E7B, + 17461: 0x60A3, + 17462: 0x63DB, + 17463: 0x6B61, + 17464: 0x6665, + 17465: 0x6853, + 17466: 0x6E19, + 17467: 0x7165, + 17468: 0x74B0, + 17469: 0x7D08, + 17470: 0x9084, + 17471: 0x9A69, + 17472: 0x9C25, + 17473: 0x6D3B, + 17474: 0x6ED1, + 17475: 0x733E, + 17476: 0x8C41, + 17477: 0x95CA, + 17478: 0x51F0, + 17479: 0x5E4C, + 17480: 0x5FA8, + 17481: 0x604D, + 17482: 0x60F6, + 17483: 0x6130, + 17484: 0x614C, + 17485: 0x6643, + 17486: 0x6644, + 17487: 0x69A5, + 17488: 0x6CC1, + 17489: 0x6E5F, + 17490: 0x6EC9, + 17491: 0x6F62, + 17492: 0x714C, + 17493: 0x749C, + 17494: 0x7687, + 17495: 0x7BC1, + 17496: 0x7C27, + 17497: 0x8352, + 17498: 0x8757, + 17499: 0x9051, + 17500: 0x968D, + 17501: 0x9EC3, + 17502: 0x532F, + 17503: 0x56DE, + 17504: 0x5EFB, + 17505: 0x5F8A, + 17506: 0x6062, + 17507: 0x6094, + 17508: 0x61F7, + 17509: 0x6666, + 17510: 0x6703, + 17511: 0x6A9C, + 17512: 0x6DEE, + 17513: 0x6FAE, + 17514: 0x7070, + 17515: 0x736A, + 17516: 0x7E6A, + 17517: 0x81BE, + 17518: 0x8334, + 17519: 0x86D4, + 17520: 0x8AA8, + 17521: 0x8CC4, + 17522: 0x5283, + 17523: 0x7372, + 17524: 0x5B96, + 17525: 0x6A6B, + 17526: 0x9404, + 17527: 0x54EE, + 17528: 0x5686, + 17529: 0x5B5D, + 17530: 0x6548, + 17531: 0x6585, + 17532: 0x66C9, + 17533: 0x689F, + 17534: 0x6D8D, + 17535: 0x6DC6, + 17536: 0x723B, + 17537: 0x80B4, + 17538: 0x9175, + 17539: 0x9A4D, + 17540: 0x4FAF, + 17541: 0x5019, + 17542: 0x539A, + 17543: 0x540E, + 17544: 0x543C, + 17545: 0x5589, + 17546: 0x55C5, + 17547: 0x5E3F, + 17548: 0x5F8C, + 17549: 0x673D, + 17550: 0x7166, + 17551: 0x73DD, + 17552: 0x9005, + 17553: 0x52DB, + 17554: 0x52F3, + 17555: 0x5864, + 17556: 0x58CE, + 17557: 0x7104, + 17558: 0x718F, + 17559: 0x71FB, + 17560: 0x85B0, + 17561: 0x8A13, + 17562: 0x6688, + 17563: 0x85A8, + 17564: 0x55A7, + 17565: 0x6684, + 17566: 0x714A, + 17567: 0x8431, + 17568: 0x5349, + 17569: 0x5599, + 17570: 0x6BC1, + 17571: 0x5F59, + 17572: 0x5FBD, + 17573: 0x63EE, + 17574: 0x6689, + 17575: 0x7147, + 17576: 0x8AF1, + 17577: 0x8F1D, + 17578: 0x9EBE, + 17579: 0x4F11, + 17580: 0x643A, + 17581: 0x70CB, + 17582: 0x7566, + 17583: 0x8667, + 17584: 0x6064, + 17585: 0x8B4E, + 17586: 0x9DF8, + 17587: 0x5147, + 17588: 0x51F6, + 17589: 0x5308, + 17590: 0x6D36, + 17591: 0x80F8, + 17592: 0x9ED1, + 17593: 0x6615, + 17594: 0x6B23, + 17595: 0x7098, + 17596: 0x75D5, + 17597: 0x5403, + 17598: 0x5C79, + 17599: 0x7D07, + 17600: 0x8A16, + 17601: 0x6B20, + 17602: 0x6B3D, + 17603: 0x6B46, + 17604: 0x5438, + 17605: 0x6070, + 17606: 0x6D3D, + 17607: 0x7FD5, + 17608: 0x8208, + 17609: 0x50D6, + 17610: 0x51DE, + 17611: 0x559C, + 17612: 0x566B, + 17613: 0x56CD, + 17614: 0x59EC, + 17615: 0x5B09, + 17616: 0x5E0C, + 17617: 0x6199, + 17618: 0x6198, + 17619: 0x6231, + 17620: 0x665E, + 17621: 0x66E6, + 17622: 0x7199, + 17623: 0x71B9, + 17624: 0x71BA, + 17625: 0x72A7, + 17626: 0x79A7, + 17627: 0x7A00, + 17628: 0x7FB2, + 17629: 0x8A70, +} + +const numEncodeTables = 7 + +// encodeX are the encoding tables from Unicode to EUC-KR code, +// sorted by decreasing length. +// encode0: 20893 entries for runes in [19968, 40861). +// encode1: 11172 entries for runes in [44032, 55204). +// encode2: 1625 entries for runes in [ 8213, 9838). +// encode3: 990 entries for runes in [12288, 13278). +// encode4: 945 entries for runes in [ 161, 1106). +// encode5: 268 entries for runes in [63744, 64012). +// encode6: 230 entries for runes in [65281, 65511). + +const encode0Low, encode0High = 19968, 40861 + +var encode0 = [...]uint16{ + 19968 - 19968: 0xECE9, + 19969 - 19968: 0xEFCB, + 19971 - 19968: 0xF6D2, + 19975 - 19968: 0xD8B2, + 19976 - 19968: 0xEDDB, + 19977 - 19968: 0xDFB2, + 19978 - 19968: 0xDFBE, + 19979 - 19968: 0xF9BB, + 19981 - 19968: 0xDCF4, + 19985 - 19968: 0xF5E4, + 19988 - 19968: 0xF3A6, + 19989 - 19968: 0xDDE0, + 19990 - 19968: 0xE1A6, + 19992 - 19968: 0xCEF8, + 19993 - 19968: 0xDCB0, + 19998 - 19968: 0xE3AA, + 20013 - 19968: 0xF1E9, + 20018 - 19968: 0xCDFA, + 20024 - 19968: 0xFCAF, + 20025 - 19968: 0xD3A1, + 20027 - 19968: 0xF1AB, + 20034 - 19968: 0xE7D1, + 20035 - 19968: 0xD2AC, + 20037 - 19968: 0xCEF9, + 20043 - 19968: 0xF1FD, + 20045 - 19968: 0xDEBF, + 20046 - 19968: 0xFBBA, + 20047 - 19968: 0xF9B9, + 20054 - 19968: 0xCED2, + 20056 - 19968: 0xE3AB, + 20057 - 19968: 0xEBE0, + 20061 - 19968: 0xCEFA, + 20062 - 19968: 0xCBF7, + 20063 - 19968: 0xE5A5, + 20075 - 19968: 0xCAE1, + 20077 - 19968: 0xD4CC, + 20083 - 19968: 0xEAE1, + 20086 - 19968: 0xDCE3, + 20087 - 19968: 0xDFAD, + 20094 - 19968: 0xCBEB, + 20098 - 19968: 0xD5AF, + 20102 - 19968: 0xD6F5, + 20104 - 19968: 0xE5F8, + 20107 - 19968: 0xDEC0, + 20108 - 19968: 0xECA3, + 20110 - 19968: 0xE9CD, + 20112 - 19968: 0xEAA7, + 20113 - 19968: 0xE9F6, + 20114 - 19968: 0xFBBB, + 20116 - 19968: 0xE7E9, + 20117 - 19968: 0xEFCC, + 20120 - 19968: 0xD0E6, + 20123 - 19968: 0xDEC1, + 20126 - 19968: 0xE4AC, + 20129 - 19968: 0xD8CC, + 20130 - 19968: 0xF9F1, + 20132 - 19968: 0xCEDF, + 20133 - 19968: 0xFAA4, + 20134 - 19968: 0xE6B2, + 20136 - 19968: 0xFAFB, + 20139 - 19968: 0xFABD, + 20140 - 19968: 0xCCC8, + 20141 - 19968: 0xEFCD, + 20142 - 19968: 0xD5D5, + 20150 - 19968: 0xD3A2, + 20154 - 19968: 0xECD1, + 20160 - 19968: 0xE4A7, + 20161 - 19968: 0xECD2, + 20164 - 19968: 0xF6B1, + 20167 - 19968: 0xCEFB, + 20170 - 19968: 0xD0D1, + 20171 - 19968: 0xCBBF, + 20173 - 19968: 0xEDA4, + 20180 - 19968: 0xEDA8, + 20181 - 19968: 0xDEC2, + 20182 - 19968: 0xF6E2, + 20183 - 19968: 0xEDDC, + 20184 - 19968: 0xDCF5, + 20185 - 19968: 0xE0B9, + 20189 - 19968: 0xD4CE, + 20191 - 19968: 0xF4B5, + 20195 - 19968: 0xD3DB, + 20196 - 19968: 0xD6B5, + 20197 - 19968: 0xECA4, + 20208 - 19968: 0xE4E6, + 20210 - 19968: 0xF1EA, + 20214 - 19968: 0xCBEC, + 20215 - 19968: 0xCBC0, + 20219 - 19968: 0xECF2, + 20225 - 19968: 0xD0EA, + 20233 - 19968: 0xF9F2, + 20234 - 19968: 0xECA5, + 20235 - 19968: 0xD0DF, + 20237 - 19968: 0xE7EA, + 20238 - 19968: 0xD0EB, + 20239 - 19968: 0xDCD1, + 20240 - 19968: 0xDBE9, + 20241 - 19968: 0xFDCC, + 20271 - 19968: 0xDBD7, + 20276 - 19968: 0xDAE1, + 20278 - 19968: 0xD6B6, + 20280 - 19968: 0xE3DF, + 20282 - 19968: 0xDEC3, + 20284 - 19968: 0xDEC4, + 20285 - 19968: 0xCAA1, + 20291 - 19968: 0xEEEC, + 20294 - 19968: 0xD3A3, + 20295 - 19968: 0xEEB7, + 20296 - 19968: 0xF8CF, + 20301 - 19968: 0xEAC8, + 20302 - 19968: 0xEEB8, + 20303 - 19968: 0xF1AC, + 20304 - 19968: 0xF1A5, + 20305 - 19968: 0xE9CE, + 20309 - 19968: 0xF9BC, + 20313 - 19968: 0xE5F9, + 20314 - 19968: 0xECEA, + 20315 - 19968: 0xDDD6, + 20316 - 19968: 0xEDC2, + 20329 - 19968: 0xF8A5, + 20335 - 19968: 0xE5BA, + 20336 - 19968: 0xDBD8, + 20339 - 19968: 0xCAA2, + 20342 - 19968: 0xD1CD, + 20346 - 19968: 0xEEED, + 20350 - 19968: 0xECEB, + 20351 - 19968: 0xDEC5, + 20353 - 19968: 0xE3E0, + 20355 - 19968: 0xCAC9, + 20356 - 19968: 0xF2E9, + 20358 - 19968: 0xD5CE, + 20360 - 19968: 0xF6B6, + 20362 - 19968: 0xCEC2, + 20363 - 19968: 0xD6C7, + 20365 - 19968: 0xE3B4, + 20367 - 19968: 0xF1AD, + 20369 - 19968: 0xEAE2, + 20374 - 19968: 0xD7C2, + 20376 - 19968: 0xF3A7, + 20379 - 19968: 0xCDEA, + 20381 - 19968: 0xEBEE, + 20398 - 19968: 0xD9B2, + 20399 - 19968: 0xFDA5, + 20405 - 19968: 0xF6D5, + 20406 - 19968: 0xD5E2, + 20415 - 19968: 0xF8B5, + 20418 - 19968: 0xCCF5, + 20419 - 19968: 0xF5B5, + 20420 - 19968: 0xE4AD, + 20425 - 19968: 0xE7EB, + 20426 - 19968: 0xF1D5, + 20430 - 19968: 0xF0BB, + 20433 - 19968: 0xE9B5, + 20435 - 19968: 0xCCC9, + 20436 - 19968: 0xFAD5, + 20439 - 19968: 0xE1D4, + 20442 - 19968: 0xD7D6, + 20445 - 19968: 0xDCC1, + 20447 - 19968: 0xDEC6, + 20448 - 19968: 0xFAEF, + 20449 - 19968: 0xE3E1, + 20462 - 19968: 0xE1F3, + 20463 - 19968: 0xDCF6, + 20465 - 19968: 0xCEFC, + 20467 - 19968: 0xDBC4, + 20469 - 19968: 0xF8F1, + 20472 - 19968: 0xDCE4, + 20474 - 19968: 0xE5EF, + 20482 - 19968: 0xDCB1, + 20486 - 19968: 0xD5D6, + 20489 - 19968: 0xF3DA, + 20491 - 19968: 0xCBC1, + 20493 - 19968: 0xDBC3, + 20497 - 19968: 0xD9FA, + 20498 - 19968: 0xD3EE, + 20502 - 19968: 0xFAB8, + 20505 - 19968: 0xFDA6, + 20506 - 19968: 0xEBEF, + 20508 - 19968: 0xF4A6, + 20510 - 19968: 0xCCCA, + 20511 - 19968: 0xF3A8, + 20513 - 19968: 0xF3DB, + 20515 - 19968: 0xDBA7, + 20516 - 19968: 0xF6B7, + 20518 - 19968: 0xCFE6, + 20519 - 19968: 0xF0F2, + 20520 - 19968: 0xCBDA, + 20522 - 19968: 0xE7D2, + 20523 - 19968: 0xD7C3, + 20524 - 19968: 0xF6F0, + 20525 - 19968: 0xE8DE, + 20539 - 19968: 0xE5A6, + 20547 - 19968: 0xE5E7, + 20551 - 19968: 0xCAA3, + 20552 - 19968: 0xCCA7, + 20553 - 19968: 0xEAC9, + 20559 - 19968: 0xF8B6, + 20565 - 19968: 0xFAA5, + 20570 - 19968: 0xF1AE, + 20572 - 19968: 0xEFCE, + 20581 - 19968: 0xCBED, + 20596 - 19968: 0xF6B0, + 20597 - 19968: 0xEFCF, + 20598 - 19968: 0xE9CF, + 20600 - 19968: 0xF7DE, + 20608 - 19968: 0xCED3, + 20613 - 19968: 0xDCF7, + 20621 - 19968: 0xDBA8, + 20625 - 19968: 0xCBF8, + 20632 - 19968: 0xDFA1, + 20633 - 19968: 0xDDE1, + 20652 - 19968: 0xF5CA, + 20653 - 19968: 0xE9B6, + 20658 - 19968: 0xE7EC, + 20659 - 19968: 0xEEEE, + 20661 - 19968: 0xF3F0, + 20663 - 19968: 0xDFBF, + 20670 - 19968: 0xCCCB, + 20677 - 19968: 0xD0C1, + 20681 - 19968: 0xF4D2, + 20682 - 19968: 0xE0BA, + 20687 - 19968: 0xDFC0, + 20689 - 19968: 0xCEE0, + 20693 - 19968: 0xDCD2, + 20694 - 19968: 0xFDEA, + 20698 - 19968: 0xD6F6, + 20702 - 19968: 0xEACA, + 20709 - 19968: 0xE8E9, + 20711 - 19968: 0xE3AC, + 20717 - 19968: 0xF3D0, + 20729 - 19968: 0xCAA4, + 20731 - 19968: 0xDBF8, + 20735 - 19968: 0xDEC7, + 20736 - 19968: 0xEBF0, + 20737 - 19968: 0xF1D6, + 20740 - 19968: 0xE5E2, + 20742 - 19968: 0xCCCC, + 20745 - 19968: 0xCBFB, + 20754 - 19968: 0xEAE3, + 20767 - 19968: 0xDFC1, + 20769 - 19968: 0xD6ED, + 20778 - 19968: 0xE9D0, + 20786 - 19968: 0xEEB9, + 20791 - 19968: 0xD5E3, + 20794 - 19968: 0xD1D3, + 20796 - 19968: 0xE5F0, + 20800 - 19968: 0xE8B4, + 20801 - 19968: 0xEBC3, + 20803 - 19968: 0xEAAA, + 20804 - 19968: 0xFAFC, + 20805 - 19968: 0xF5F6, + 20806 - 19968: 0xF0BC, + 20807 - 19968: 0xFDD4, + 20808 - 19968: 0xE0BB, + 20809 - 19968: 0xCEC3, + 20811 - 19968: 0xD0BA, + 20812 - 19968: 0xF7BA, + 20813 - 19968: 0xD8F3, + 20814 - 19968: 0xF7CD, + 20818 - 19968: 0xE4AE, + 20828 - 19968: 0xD4DF, + 20834 - 19968: 0xD0E7, + 20837 - 19968: 0xECFD, + 20839 - 19968: 0xD2AE, + 20840 - 19968: 0xEEEF, + 20841 - 19968: 0xD5D7, + 20842 - 19968: 0xEAE4, + 20843 - 19968: 0xF8A2, + 20844 - 19968: 0xCDEB, + 20845 - 19968: 0xD7BF, + 20846 - 19968: 0xFBB1, + 20849 - 19968: 0xCDEC, + 20853 - 19968: 0xDCB2, + 20854 - 19968: 0xD0EC, + 20855 - 19968: 0xCEFD, + 20856 - 19968: 0xEEF0, + 20860 - 19968: 0xCCC2, + 20864 - 19968: 0xD0ED, + 20870 - 19968: 0xE5F7, + 20874 - 19968: 0xF3FC, + 20877 - 19968: 0xEEA2, + 20882 - 19968: 0xD9B3, + 20885 - 19968: 0xD8F4, + 20887 - 19968: 0xE9B7, + 20896 - 19968: 0xCEAE, + 20901 - 19968: 0xD9A2, + 20906 - 19968: 0xD8F1, + 20908 - 19968: 0xD4CF, + 20918 - 19968: 0xE5A7, + 20919 - 19968: 0xD5D2, + 20925 - 19968: 0xD6A9, + 20932 - 19968: 0xF4A2, + 20934 - 19968: 0xF1D7, + 20937 - 19968: 0xD5D8, + 20939 - 19968: 0xF0BD, + 20940 - 19968: 0xD7D0, + 20941 - 19968: 0xD4D0, + 20956 - 19968: 0xD7CF, + 20957 - 19968: 0xEBEA, + 20958 - 19968: 0xFDEB, + 20961 - 19968: 0xDBED, + 20976 - 19968: 0xFCC5, + 20977 - 19968: 0xCBC2, + 20982 - 19968: 0xFDD5, + 20984 - 19968: 0xF4C8, + 20985 - 19968: 0xE8EA, + 20986 - 19968: 0xF5F3, + 20989 - 19968: 0xF9DE, + 20992 - 19968: 0xD3EF, + 20995 - 19968: 0xECD3, + 20998 - 19968: 0xDDC2, + 20999 - 19968: 0xEFB7, + 21000 - 19968: 0xE7D4, + 21002 - 19968: 0xCACA, + 21006 - 19968: 0xD9FB, + 21009 - 19968: 0xFAFD, + 21015 - 19968: 0xD6AA, + 21021 - 19968: 0xF4F8, + 21028 - 19968: 0xF7F7, + 21029 - 19968: 0xDCAC, + 21033 - 19968: 0xD7D7, + 21034 - 19968: 0xDFA2, + 21038 - 19968: 0xCEBE, + 21040 - 19968: 0xD3F0, + 21046 - 19968: 0xF0A4, + 21047 - 19968: 0xE1EC, + 21048 - 19968: 0xCFE7, + 21049 - 19968: 0xF3CB, + 21050 - 19968: 0xEDA9, + 21051 - 19968: 0xCABE, + 21059 - 19968: 0xF4EF, + 21063 - 19968: 0xF6CE, + 21066 - 19968: 0xDEFB, + 21067 - 19968: 0xD0BB, + 21068 - 19968: 0xD5B7, + 21069 - 19968: 0xEEF1, + 21076 - 19968: 0xF4A8, + 21078 - 19968: 0xDCF8, + 21083 - 19968: 0xCBA7, + 21085 - 19968: 0xDACE, + 21089 - 19968: 0xE0E6, + 21097 - 19968: 0xEDA5, + 21098 - 19968: 0xEEF2, + 21103 - 19968: 0xDCF9, + 21106 - 19968: 0xF9DC, + 21109 - 19968: 0xF3DC, + 21117 - 19968: 0xF8F2, + 21119 - 19968: 0xF4F9, + 21123 - 19968: 0xFCF1, + 21127 - 19968: 0xD0BC, + 21128 - 19968: 0xDBF9, + 21129 - 19968: 0xD7B1, + 21133 - 19968: 0xCBFC, + 21137 - 19968: 0xF0A5, + 21138 - 19968: 0xCBFD, + 21147 - 19968: 0xD5F4, + 21151 - 19968: 0xCDED, + 21152 - 19968: 0xCAA5, + 21155 - 19968: 0xD6AB, + 21156 - 19968: 0xD0C2, + 21161 - 19968: 0xF0BE, + 21162 - 19968: 0xD2BD, + 21163 - 19968: 0xCCA4, + 21182 - 19968: 0xFAB6, + 21185 - 19968: 0xCCCD, + 21187 - 19968: 0xDAFA, + 21189 - 19968: 0xF6CF, + 21191 - 19968: 0xE9B8, + 21193 - 19968: 0xD8F5, + 21197 - 19968: 0xCCCE, + 21202 - 19968: 0xD7CD, + 21205 - 19968: 0xD4D1, + 21206 - 19968: 0xE9ED, + 21208 - 19968: 0xCAEB, + 21209 - 19968: 0xD9E2, + 21211 - 19968: 0xFDB2, + 21213 - 19968: 0xE3AD, + 21214 - 19968: 0xD6CC, + 21215 - 19968: 0xD9B4, + 21218 - 19968: 0xE1A7, + 21219 - 19968: 0xEED3, + 21220 - 19968: 0xD0C3, + 21235 - 19968: 0xFDB3, + 21237 - 19968: 0xD5E4, + 21240 - 19968: 0xCFE8, + 21242 - 19968: 0xEDC3, + 21243 - 19968: 0xD0B2, + 21246 - 19968: 0xCEFE, + 21247 - 19968: 0xDAA8, + 21253 - 19968: 0xF8D0, + 21256 - 19968: 0xFDD6, + 21261 - 19968: 0xF8D1, + 21263 - 19968: 0xF8D2, + 21264 - 19968: 0xDCD3, + 21269 - 19968: 0xDDE2, + 21270 - 19968: 0xFBF9, + 21271 - 19968: 0xDDC1, + 21273 - 19968: 0xE3B5, + 21280 - 19968: 0xEDDD, + 21281 - 19968: 0xCEC4, + 21283 - 19968: 0xCBA1, + 21290 - 19968: 0xDDE3, + 21295 - 19968: 0xFCDD, + 21305 - 19968: 0xF9AF, + 21311 - 19968: 0xD2FB, + 21312 - 19968: 0xCFA1, + 21313 - 19968: 0xE4A8, + 21315 - 19968: 0xF4B6, + 21316 - 19968: 0xECFE, + 21319 - 19968: 0xE3AE, + 21320 - 19968: 0xE7ED, + 21321 - 19968: 0xFDC1, + 21322 - 19968: 0xDAE2, + 21325 - 19968: 0xD8B3, + 21329 - 19968: 0xDDE4, + 21330 - 19968: 0xF0EF, + 21331 - 19968: 0xF6F1, + 21332 - 19968: 0xFAF0, + 21335 - 19968: 0xD1F5, + 21338 - 19968: 0xDACF, + 21340 - 19968: 0xDCD4, + 21342 - 19968: 0xDCA6, + 21344 - 19968: 0xEFBF, + 21350 - 19968: 0xCECF, + 21352 - 19968: 0xE0D9, + 21359 - 19968: 0xD9D6, + 21360 - 19968: 0xECD4, + 21361 - 19968: 0xEACB, + 21364 - 19968: 0xCABF, + 21365 - 19968: 0xD5B0, + 21367 - 19968: 0xCFE9, + 21373 - 19968: 0xF1ED, + 21375 - 19968: 0xCCCF, + 21380 - 19968: 0xE4F8, + 21395 - 19968: 0xE4ED, + 21400 - 19968: 0xD7D8, + 21402 - 19968: 0xFDA7, + 21407 - 19968: 0xEAAB, + 21408 - 19968: 0xF6B2, + 21413 - 19968: 0xCFF0, + 21414 - 19968: 0xF9BD, + 21421 - 19968: 0xE6F4, + 21435 - 19968: 0xCBDB, + 21443 - 19968: 0xF3D1, + 21448 - 19968: 0xE9D1, + 21449 - 19968: 0xF3A9, + 21450 - 19968: 0xD0E0, + 21451 - 19968: 0xE9D2, + 21453 - 19968: 0xDAE3, + 21460 - 19968: 0xE2D2, + 21462 - 19968: 0xF6A2, + 21463 - 19968: 0xE1F4, + 21467 - 19968: 0xDAE4, + 21473 - 19968: 0xE7D5, + 21474 - 19968: 0xF5BF, + 21475 - 19968: 0xCFA2, + 21476 - 19968: 0xCDAF, + 21477 - 19968: 0xCFA3, + 21481 - 19968: 0xCDB0, + 21482 - 19968: 0xF1FE, + 21483 - 19968: 0xD0A3, + 21484 - 19968: 0xE1AF, + 21485 - 19968: 0xF8A3, + 21487 - 19968: 0xCAA6, + 21488 - 19968: 0xF7BB, + 21489 - 19968: 0xF2EA, + 21490 - 19968: 0xDEC8, + 21491 - 19968: 0xE9D3, + 21496 - 19968: 0xDEC9, + 21507 - 19968: 0xFDDE, + 21508 - 19968: 0xCAC0, + 21512 - 19968: 0xF9EA, + 21513 - 19968: 0xD1CE, + 21514 - 19968: 0xEED4, + 21516 - 19968: 0xD4D2, + 21517 - 19968: 0xD9A3, + 21518 - 19968: 0xFDA8, + 21519 - 19968: 0xD7D9, + 21520 - 19968: 0xF7CE, + 21521 - 19968: 0xFABE, + 21531 - 19968: 0xCFD6, + 21533 - 19968: 0xD7F0, + 21535 - 19968: 0xEBE1, + 21536 - 19968: 0xF8C5, + 21542 - 19968: 0xDCFA, + 21545 - 19968: 0xDDC3, + 21547 - 19968: 0xF9DF, + 21555 - 19968: 0xE7EF, + 21560 - 19968: 0xFDE5, + 21561 - 19968: 0xF6A3, + 21563 - 19968: 0xD9FC, + 21564 - 19968: 0xFDA9, + 21566 - 19968: 0xE7EE, + 21570 - 19968: 0xD5E5, + 21576 - 19968: 0xEFD0, + 21578 - 19968: 0xCDB1, + 21585 - 19968: 0xF7A2, + 21608 - 19968: 0xF1B2, + 21610 - 19968: 0xF1B1, + 21617 - 19968: 0xCDB2, + 21619 - 19968: 0xDAAB, + 21621 - 19968: 0xCAA7, + 21627 - 19968: 0xE3E2, + 21628 - 19968: 0xFBBC, + 21629 - 19968: 0xD9A4, + 21632 - 19968: 0xEEBA, + 21638 - 19968: 0xF8D3, + 21644 - 19968: 0xFBFA, + 21646 - 19968: 0xCFA4, + 21648 - 19968: 0xDCFB, + 21668 - 19968: 0xF6E3, + 21672 - 19968: 0xEDAA, + 21675 - 19968: 0xF2A1, + 21676 - 19968: 0xCEE1, + 21683 - 19968: 0xFAA6, + 21688 - 19968: 0xF9E0, + 21693 - 19968: 0xECD6, + 21696 - 19968: 0xE4EE, + 21697 - 19968: 0xF9A1, + 21700 - 19968: 0xFBEF, + 21704 - 19968: 0xF9EB, + 21705 - 19968: 0xEEA3, + 21729 - 19968: 0xEAAC, + 21733 - 19968: 0xCAA8, + 21736 - 19968: 0xF4FA, + 21741 - 19968: 0xCDD6, + 21742 - 19968: 0xFCF6, + 21746 - 19968: 0xF4C9, + 21754 - 19968: 0xF8D4, + 21764 - 19968: 0xF8A6, + 21766 - 19968: 0xDECA, + 21767 - 19968: 0xF2C6, + 21774 - 19968: 0xD7DA, + 21776 - 19968: 0xD3D0, + 21788 - 19968: 0xD8C5, + 21807 - 19968: 0xEAE6, + 21809 - 19968: 0xF3DD, + 21813 - 19968: 0xE4DA, + 21822 - 19968: 0xF6E4, + 21828 - 19968: 0xF6F2, + 21830 - 19968: 0xDFC2, + 21839 - 19968: 0xD9FD, + 21843 - 19968: 0xCCF6, + 21846 - 19968: 0xD3BA, + 21854 - 19968: 0xE4AF, + 21859 - 19968: 0xF9E1, + 21884 - 19968: 0xF0A6, + 21888 - 19968: 0xCBD3, + 21892 - 19968: 0xE0BC, + 21894 - 19968: 0xF4CA, + 21895 - 19968: 0xD4FA, + 21897 - 19968: 0xFDAA, + 21898 - 19968: 0xF9E2, + 21912 - 19968: 0xF4B7, + 21913 - 19968: 0xFDC2, + 21914 - 19968: 0xFCB0, + 21916 - 19968: 0xFDEC, + 21917 - 19968: 0xCAE2, + 21927 - 19968: 0xFDBD, + 21929 - 19968: 0xEAE7, + 21930 - 19968: 0xDFC3, + 21931 - 19968: 0xD1D2, + 21932 - 19968: 0xCEE2, + 21934 - 19968: 0xD3A4, + 21957 - 19968: 0xFDAB, + 21959 - 19968: 0xDFE0, + 21972 - 19968: 0xF2C7, + 21978 - 19968: 0xE7F0, + 21980 - 19968: 0xD0EE, + 21983 - 19968: 0xF3AA, + 21987 - 19968: 0xDECB, + 21988 - 19968: 0xF6B8, + 22013 - 19968: 0xE1F5, + 22014 - 19968: 0xF1B3, + 22022 - 19968: 0xF7A3, + 22025 - 19968: 0xCAA9, + 22036 - 19968: 0xCFA5, + 22039 - 19968: 0xDFC4, + 22063 - 19968: 0xE1B0, + 22066 - 19968: 0xF0BF, + 22068 - 19968: 0xF6A4, + 22070 - 19968: 0xE3B6, + 22099 - 19968: 0xFAC6, + 22120 - 19968: 0xD0EF, + 22123 - 19968: 0xFDED, + 22132 - 19968: 0xDDC4, + 22150 - 19968: 0xFCF7, + 22181 - 19968: 0xE6BF, + 22188 - 19968: 0xDEAD, + 22190 - 19968: 0xFABF, + 22196 - 19968: 0xE5F1, + 22204 - 19968: 0xEDC4, + 22218 - 19968: 0xD2A5, + 22221 - 19968: 0xFDEE, + 22225 - 19968: 0xF5B6, + 22234 - 19968: 0xE1F6, + 22235 - 19968: 0xDECC, + 22238 - 19968: 0xFCDE, + 22240 - 19968: 0xECD7, + 22256 - 19968: 0xCDDD, + 22265 - 19968: 0xD6B7, + 22266 - 19968: 0xCDB3, + 22275 - 19968: 0xF8D5, + 22276 - 19968: 0xE5D8, + 22280 - 19968: 0xCFEA, + 22283 - 19968: 0xCFD0, + 22285 - 19968: 0xEACC, + 22290 - 19968: 0xEAAE, + 22291 - 19968: 0xEAAD, + 22294 - 19968: 0xD3F1, + 22296 - 19968: 0xD3A5, + 22303 - 19968: 0xF7CF, + 22312 - 19968: 0xEEA4, + 22317 - 19968: 0xD0A4, + 22320 - 19968: 0xF2A2, + 22331 - 19968: 0xD0F0, + 22336 - 19968: 0xF2A3, + 22338 - 19968: 0xF7F8, + 22343 - 19968: 0xD0B3, + 22346 - 19968: 0xDBA9, + 22349 - 19968: 0xD3BB, + 22350 - 19968: 0xCAEC, + 22352 - 19968: 0xF1A6, + 22353 - 19968: 0xCBD5, + 22369 - 19968: 0xF7E7, + 22372 - 19968: 0xCDDE, + 22374 - 19968: 0xF7A4, + 22378 - 19968: 0xF8C0, + 22382 - 19968: 0xD3DD, + 22384 - 19968: 0xCCD0, + 22389 - 19968: 0xCFA6, + 22396 - 19968: 0xF6F3, + 22402 - 19968: 0xE1F7, + 22408 - 19968: 0xD3DC, + 22411 - 19968: 0xFAFE, + 22419 - 19968: 0xFAA7, + 22432 - 19968: 0xEBD9, + 22434 - 19968: 0xCFA7, + 22435 - 19968: 0xEAAF, + 22467 - 19968: 0xE4EF, + 22471 - 19968: 0xE9B9, + 22472 - 19968: 0xF1D8, + 22475 - 19968: 0xD8D8, + 22478 - 19968: 0xE0F2, + 22495 - 19968: 0xE6B4, + 22496 - 19968: 0xDCFC, + 22512 - 19968: 0xF3F1, + 22516 - 19968: 0xE3D0, + 22519 - 19968: 0xF2FB, + 22521 - 19968: 0xDBC6, + 22522 - 19968: 0xD0F1, + 22524 - 19968: 0xD0F2, + 22528 - 19968: 0xCFDC, + 22530 - 19968: 0xD3D1, + 22533 - 19968: 0xCCB1, + 22534 - 19968: 0xF7D8, + 22536 - 19968: 0xCBA8, + 22537 - 19968: 0xEBBC, + 22538 - 19968: 0xE4BE, + 22558 - 19968: 0xF4DC, + 22561 - 19968: 0xDCC2, + 22564 - 19968: 0xF0A7, + 22567 - 19968: 0xE6C0, + 22570 - 19968: 0xCAED, + 22575 - 19968: 0xE8EB, + 22576 - 19968: 0xE5E8, + 22577 - 19968: 0xDCC3, + 22580 - 19968: 0xEDDE, + 22581 - 19968: 0xD3F2, + 22586 - 19968: 0xCCF7, + 22602 - 19968: 0xCED4, + 22603 - 19968: 0xE7AB, + 22607 - 19968: 0xCBC3, + 22609 - 19968: 0xE1B1, + 22612 - 19968: 0xF7B2, + 22615 - 19968: 0xD3F3, + 22616 - 19968: 0xD3D2, + 22618 - 19968: 0xF5C0, + 22622 - 19968: 0xDFDD, + 22625 - 19968: 0xEEF3, + 22626 - 19968: 0xE7F1, + 22628 - 19968: 0xFDB4, + 22645 - 19968: 0xF2C8, + 22649 - 19968: 0xF3D2, + 22652 - 19968: 0xEEF4, + 22654 - 19968: 0xE2D3, + 22659 - 19968: 0xCCD1, + 22661 - 19968: 0xDFEA, + 22665 - 19968: 0xE9BA, + 22675 - 19968: 0xD9D7, + 22684 - 19968: 0xF5CD, + 22686 - 19968: 0xF1F2, + 22687 - 19968: 0xFAC7, + 22696 - 19968: 0xD9F8, + 22697 - 19968: 0xD4C2, + 22702 - 19968: 0xF6E5, + 22707 - 19968: 0xDDC5, + 22714 - 19968: 0xE7F2, + 22715 - 19968: 0xEDDF, + 22718 - 19968: 0xCACB, + 22721 - 19968: 0xDBFA, + 22725 - 19968: 0xE8B5, + 22727 - 19968: 0xD3A6, + 22734 - 19968: 0xFDB5, + 22737 - 19968: 0xF9C9, + 22739 - 19968: 0xE4E2, + 22741 - 19968: 0xFBBD, + 22744 - 19968: 0xD7A4, + 22745 - 19968: 0xCEC5, + 22750 - 19968: 0xCED5, + 22751 - 19968: 0xD6E6, + 22756 - 19968: 0xE5BD, + 22763 - 19968: 0xDECD, + 22764 - 19968: 0xECF3, + 22767 - 19968: 0xEDE0, + 22777 - 19968: 0xECEC, + 22778 - 19968: 0xFBBE, + 22779 - 19968: 0xDFEB, + 22781 - 19968: 0xE1F8, + 22799 - 19968: 0xF9BE, + 22804 - 19968: 0xD0F3, + 22805 - 19968: 0xE0AA, + 22806 - 19968: 0xE8E2, + 22809 - 19968: 0xE2D4, + 22810 - 19968: 0xD2FD, + 22812 - 19968: 0xE5A8, + 22818 - 19968: 0xD9D3, + 22823 - 19968: 0xD3DE, + 22825 - 19968: 0xF4B8, + 22826 - 19968: 0xF7BC, + 22827 - 19968: 0xDCFD, + 22829 - 19968: 0xE8EC, + 22830 - 19968: 0xE4E7, + 22833 - 19968: 0xE3F7, + 22839 - 19968: 0xECA8, + 22846 - 19968: 0xFAF1, + 22852 - 19968: 0xE5F2, + 22855 - 19968: 0xD0F4, + 22856 - 19968: 0xD2AF, + 22857 - 19968: 0xDCE5, + 22862 - 19968: 0xD0A5, + 22863 - 19968: 0xF1B4, + 22864 - 19968: 0xFCB1, + 22865 - 19968: 0xCCF8, + 22868 - 19968: 0xDDC6, + 22869 - 19968: 0xFAD1, + 22871 - 19968: 0xF7DF, + 22874 - 19968: 0xFAA8, + 22880 - 19968: 0xEEF5, + 22882 - 19968: 0xDECE, + 22887 - 19968: 0xE7F3, + 22890 - 19968: 0xF7AC, + 22891 - 19968: 0xEBC4, + 22892 - 19968: 0xEDE1, + 22893 - 19968: 0xE0AB, + 22894 - 19968: 0xDDC7, + 22899 - 19968: 0xD2B3, + 22900 - 19968: 0xD2BF, + 22904 - 19968: 0xCACC, + 22909 - 19968: 0xFBBF, + 22914 - 19968: 0xE5FD, + 22915 - 19968: 0xDDE5, + 22916 - 19968: 0xD8CD, + 22922 - 19968: 0xECF4, + 22931 - 19968: 0xD0F5, + 22934 - 19968: 0xE8ED, + 22935 - 19968: 0xD0D2, + 22937 - 19968: 0xD9D8, + 22949 - 19968: 0xF6E6, + 22952 - 19968: 0xDBAA, + 22956 - 19968: 0xF7E0, + 22969 - 19968: 0xD8D9, + 22971 - 19968: 0xF4A3, + 22974 - 19968: 0xF4DD, + 22979 - 19968: 0xEFD1, + 22982 - 19968: 0xD9B5, + 22985 - 19968: 0xEDAB, + 22987 - 19968: 0xE3B7, + 22992 - 19968: 0xEEBB, + 22993 - 19968: 0xCDB4, + 22995 - 19968: 0xE0F3, + 22996 - 19968: 0xEACD, + 23001 - 19968: 0xECF5, + 23002 - 19968: 0xE8EE, + 23004 - 19968: 0xCBA9, + 23005 - 19968: 0xF1AF, + 23014 - 19968: 0xCACD, + 23016 - 19968: 0xECA9, + 23018 - 19968: 0xF2EB, + 23020 - 19968: 0xFDEF, + 23022 - 19968: 0xF9F3, + 23032 - 19968: 0xE6C1, + 23035 - 19968: 0xECD8, + 23039 - 19968: 0xEDAC, + 23041 - 19968: 0xEACE, + 23043 - 19968: 0xE8DF, + 23057 - 19968: 0xDECF, + 23064 - 19968: 0xD2A6, + 23067 - 19968: 0xE7F4, + 23068 - 19968: 0xD1D6, + 23071 - 19968: 0xE6C2, + 23072 - 19968: 0xE3E3, + 23077 - 19968: 0xE4B0, + 23081 - 19968: 0xD8B4, + 23094 - 19968: 0xF6A5, + 23100 - 19968: 0xF3DE, + 23105 - 19968: 0xD7A5, + 23110 - 19968: 0xF7E8, + 23113 - 19968: 0xE8C6, + 23130 - 19968: 0xFBE6, + 23138 - 19968: 0xDDE6, + 23142 - 19968: 0xDCFE, + 23186 - 19968: 0xD8DA, + 23194 - 19968: 0xDAAC, + 23195 - 19968: 0xEAB0, + 23204 - 19968: 0xE3B8, + 23233 - 19968: 0xCAAA, + 23234 - 19968: 0xE1F9, + 23236 - 19968: 0xEAB1, + 23241 - 19968: 0xF2EC, + 23244 - 19968: 0xFAEE, + 23265 - 19968: 0xEED5, + 23270 - 19968: 0xF9F4, + 23273 - 19968: 0xD2EC, + 23301 - 19968: 0xFBFB, + 23305 - 19968: 0xFDF0, + 23307 - 19968: 0xE0BD, + 23308 - 19968: 0xCEE3, + 23318 - 19968: 0xF8C6, + 23338 - 19968: 0xDEAE, + 23360 - 19968: 0xDFC5, + 23363 - 19968: 0xE5BE, + 23376 - 19968: 0xEDAD, + 23377 - 19968: 0xFAEA, + 23380 - 19968: 0xCDEE, + 23381 - 19968: 0xEDA6, + 23383 - 19968: 0xEDAE, + 23384 - 19968: 0xF0ED, + 23386 - 19968: 0xDDA1, + 23388 - 19968: 0xEDAF, + 23389 - 19968: 0xFCF8, + 23391 - 19968: 0xD8EB, + 23395 - 19968: 0xCCF9, + 23396 - 19968: 0xCDB5, + 23401 - 19968: 0xFAA9, + 23403 - 19968: 0xE1DD, + 23408 - 19968: 0xE2D5, + 23409 - 19968: 0xEDCF, + 23413 - 19968: 0xDDA2, + 23416 - 19968: 0xF9CA, + 23418 - 19968: 0xEAE8, + 23420 - 19968: 0xE5ED, + 23429 - 19968: 0xD3EB, + 23431 - 19968: 0xE9D4, + 23432 - 19968: 0xE1FA, + 23433 - 19968: 0xE4CC, + 23435 - 19968: 0xE1E4, + 23436 - 19968: 0xE8C7, + 23439 - 19968: 0xCEDB, + 23443 - 19968: 0xDCD5, + 23445 - 19968: 0xF7B5, + 23446 - 19968: 0xFCF3, + 23447 - 19968: 0xF0F3, + 23448 - 19968: 0xCEAF, + 23449 - 19968: 0xF1B5, + 23450 - 19968: 0xEFD2, + 23451 - 19968: 0xE8C8, + 23452 - 19968: 0xEBF1, + 23458 - 19968: 0xCBD4, + 23459 - 19968: 0xE0BE, + 23460 - 19968: 0xE3F8, + 23461 - 19968: 0xEAE9, + 23462 - 19968: 0xFCB2, + 23468 - 19968: 0xE0F4, + 23470 - 19968: 0xCFE0, + 23472 - 19968: 0xEEA5, + 23475 - 19968: 0xFAAA, + 23476 - 19968: 0xE6C3, + 23477 - 19968: 0xE1B2, + 23478 - 19968: 0xCAAB, + 23480 - 19968: 0xE3E4, + 23481 - 19968: 0xE9BB, + 23487 - 19968: 0xE2D6, + 23488 - 19968: 0xF3F2, + 23490 - 19968: 0xEED6, + 23491 - 19968: 0xEAB2, + 23492 - 19968: 0xD0F6, + 23493 - 19968: 0xECD9, + 23494 - 19968: 0xDACB, + 23495 - 19968: 0xCFA8, + 23500 - 19968: 0xDDA3, + 23504 - 19968: 0xD8DB, + 23506 - 19968: 0xF9CE, + 23507 - 19968: 0xE9D5, + 23508 - 19968: 0xE3D1, + 23511 - 19968: 0xD2BC, + 23518 - 19968: 0xD8AC, + 23519 - 19968: 0xF3CC, + 23521 - 19968: 0xCDFB, + 23522 - 19968: 0xF6D6, + 23524 - 19968: 0xE7F5, + 23525 - 19968: 0xE8EF, + 23526 - 19968: 0xE3F9, + 23527 - 19968: 0xD2BB, + 23528 - 19968: 0xF3F3, + 23529 - 19968: 0xE3FB, + 23531 - 19968: 0xDED0, + 23532 - 19968: 0xCEB0, + 23534 - 19968: 0xD6F7, + 23535 - 19968: 0xF1D9, + 23541 - 19968: 0xF5C1, + 23542 - 19968: 0xDCC4, + 23544 - 19968: 0xF5BB, + 23546 - 19968: 0xDED1, + 23553 - 19968: 0xDCE6, + 23556 - 19968: 0xDED2, + 23559 - 19968: 0xEDE2, + 23560 - 19968: 0xEEF6, + 23561 - 19968: 0xEACF, + 23562 - 19968: 0xF0EE, + 23563 - 19968: 0xE3FC, + 23565 - 19968: 0xD3DF, + 23566 - 19968: 0xD3F4, + 23567 - 19968: 0xE1B3, + 23569 - 19968: 0xE1B4, + 23574 - 19968: 0xF4D3, + 23577 - 19968: 0xDFC6, + 23588 - 19968: 0xE9D6, + 23592 - 19968: 0xDBAB, + 23601 - 19968: 0xF6A6, + 23608 - 19968: 0xE3B9, + 23609 - 19968: 0xEBC5, + 23610 - 19968: 0xF4A9, + 23611 - 19968: 0xCDB6, + 23612 - 19968: 0xD2F9, + 23614 - 19968: 0xDAAD, + 23615 - 19968: 0xD2E3, + 23616 - 19968: 0xCFD1, + 23621 - 19968: 0xCBDC, + 23622 - 19968: 0xCCFA, + 23624 - 19968: 0xCFDD, + 23627 - 19968: 0xE8A9, + 23629 - 19968: 0xE3BB, + 23630 - 19968: 0xE3BA, + 23633 - 19968: 0xE0DA, + 23637 - 19968: 0xEEF7, + 23643 - 19968: 0xDCB3, + 23648 - 19968: 0xD3F5, + 23650 - 19968: 0xD7A6, + 23652 - 19968: 0xF6B5, + 23653 - 19968: 0xD7DB, + 23660 - 19968: 0xE1D5, + 23663 - 19968: 0xD4EA, + 23665 - 19968: 0xDFA3, + 23673 - 19968: 0xFDDF, + 23696 - 19968: 0xD0F7, + 23697 - 19968: 0xEDD4, + 23713 - 19968: 0xCBAA, + 23721 - 19968: 0xE4DB, + 23723 - 19968: 0xE1FB, + 23724 - 19968: 0xCBA2, + 23729 - 19968: 0xD3E0, + 23731 - 19968: 0xE4BF, + 23733 - 19968: 0xFBC0, + 23735 - 19968: 0xDABE, + 23736 - 19968: 0xE4CD, + 23738 - 19968: 0xD6B9, + 23742 - 19968: 0xEFC0, + 23744 - 19968: 0xE1FC, + 23769 - 19968: 0xF6B9, + 23776 - 19968: 0xDFC7, + 23784 - 19968: 0xE4B1, + 23791 - 19968: 0xDCE7, + 23792 - 19968: 0xDCE8, + 23796 - 19968: 0xFAD6, + 23798 - 19968: 0xD3F6, + 23803 - 19968: 0xF1DA, + 23805 - 19968: 0xFAF2, + 23815 - 19968: 0xE2FD, + 23821 - 19968: 0xD5CF, + 23822 - 19968: 0xD0F8, + 23825 - 19968: 0xCDDF, + 23828 - 19968: 0xF5CB, + 23830 - 19968: 0xE4F0, + 23831 - 19968: 0xCBAB, + 23833 - 19968: 0xD7C4, + 23847 - 19968: 0xE2FE, + 23849 - 19968: 0xDDDA, + 23883 - 19968: 0xDAAE, + 23884 - 19968: 0xCAEE, + 23888 - 19968: 0xD5B9, + 23913 - 19968: 0xE3A1, + 23916 - 19968: 0xE8E3, + 23919 - 19968: 0xF3AB, + 23943 - 19968: 0xCFA9, + 23947 - 19968: 0xD3F7, + 23965 - 19968: 0xD4F1, + 23968 - 19968: 0xCEE4, + 23970 - 19968: 0xE8F2, + 23978 - 19968: 0xE5F5, + 23992 - 19968: 0xE7AE, + 23994 - 19968: 0xD6BA, + 23996 - 19968: 0xDFEC, + 23997 - 19968: 0xE4C0, + 24013 - 19968: 0xE8E4, + 24018 - 19968: 0xD8B5, + 24022 - 19968: 0xE4DC, + 24029 - 19968: 0xF4B9, + 24030 - 19968: 0xF1B6, + 24033 - 19968: 0xE2DE, + 24034 - 19968: 0xE1B5, + 24037 - 19968: 0xCDEF, + 24038 - 19968: 0xF1A7, + 24039 - 19968: 0xCEE5, + 24040 - 19968: 0xCBDD, + 24043 - 19968: 0xD9E3, + 24046 - 19968: 0xF3AC, + 24049 - 19968: 0xD0F9, + 24050 - 19968: 0xECAB, + 24051 - 19968: 0xDED3, + 24052 - 19968: 0xF7E9, + 24055 - 19968: 0xF9F5, + 24061 - 19968: 0xE1DE, + 24062 - 19968: 0xCBEE, + 24066 - 19968: 0xE3BC, + 24067 - 19968: 0xF8D6, + 24070 - 19968: 0xDBEE, + 24076 - 19968: 0xFDF1, + 24081 - 19968: 0xF7B6, + 24086 - 19968: 0xF4DE, + 24089 - 19968: 0xF2ED, + 24091 - 19968: 0xDBD9, + 24093 - 19968: 0xF0A8, + 24101 - 19968: 0xE1FD, + 24107 - 19968: 0xDED4, + 24109 - 19968: 0xE0AC, + 24115 - 19968: 0xEDE3, + 24118 - 19968: 0xD3E1, + 24120 - 19968: 0xDFC8, + 24125 - 19968: 0xD9B6, + 24127 - 19968: 0xFDAC, + 24128 - 19968: 0xEFD3, + 24132 - 19968: 0xE4C1, + 24133 - 19968: 0xF8EB, + 24135 - 19968: 0xDBAC, + 24140 - 19968: 0xFCC6, + 24149 - 19968: 0xD8AD, + 24159 - 19968: 0xF6BA, + 24161 - 19968: 0xDBDF, + 24162 - 19968: 0xD3D3, + 24163 - 19968: 0xF8C7, + 24178 - 19968: 0xCACE, + 24179 - 19968: 0xF8C1, + 24180 - 19968: 0xD2B4, + 24183 - 19968: 0xDCB4, + 24184 - 19968: 0xFAB9, + 24185 - 19968: 0xCACF, + 24187 - 19968: 0xFCB3, + 24188 - 19968: 0xEAEA, + 24189 - 19968: 0xEAEB, + 24190 - 19968: 0xD0FA, + 24196 - 19968: 0xEDE4, + 24199 - 19968: 0xDDE7, + 24202 - 19968: 0xDFC9, + 24207 - 19968: 0xDFED, + 24213 - 19968: 0xEEBC, + 24215 - 19968: 0xEFC1, + 24218 - 19968: 0xCCD2, + 24220 - 19968: 0xDDA4, + 24224 - 19968: 0xDFCA, + 24230 - 19968: 0xD3F8, + 24231 - 19968: 0xF1A8, + 24235 - 19968: 0xCDB7, + 24237 - 19968: 0xEFD4, + 24245 - 19968: 0xE4DD, + 24246 - 19968: 0xDFEE, + 24247 - 19968: 0xCBAC, + 24248 - 19968: 0xE9BC, + 24254 - 19968: 0xEAEC, + 24258 - 19968: 0xDFCB, + 24264 - 19968: 0xF9BF, + 24265 - 19968: 0xD6AF, + 24266 - 19968: 0xD5C6, + 24272 - 19968: 0xCFAA, + 24275 - 19968: 0xCEA9, + 24278 - 19968: 0xD6F8, + 24282 - 19968: 0xF1B7, + 24283 - 19968: 0xEEF8, + 24287 - 19968: 0xD9D9, + 24288 - 19968: 0xF3DF, + 24290 - 19968: 0xF8C8, + 24291 - 19968: 0xCEC6, + 24300 - 19968: 0xD5E6, + 24307 - 19968: 0xF4E6, + 24310 - 19968: 0xE6C5, + 24311 - 19968: 0xEFD5, + 24314 - 19968: 0xCBEF, + 24315 - 19968: 0xFCDF, + 24321 - 19968: 0xDCA7, + 24324 - 19968: 0xD6E7, + 24330 - 19968: 0xF8C9, + 24335 - 19968: 0xE3D2, + 24337 - 19968: 0xE3BD, + 24339 - 19968: 0xCFE1, + 24340 - 19968: 0xF0C0, + 24341 - 19968: 0xECDA, + 24343 - 19968: 0xDDD7, + 24344 - 19968: 0xFBF0, + 24347 - 19968: 0xECAC, + 24351 - 19968: 0xF0A9, + 24358 - 19968: 0xFAD7, + 24359 - 19968: 0xFBC1, + 24361 - 19968: 0xD2C0, + 24369 - 19968: 0xE5B0, + 24373 - 19968: 0xEDE5, + 24378 - 19968: 0xCBAD, + 24380 - 19968: 0xF9B0, + 24392 - 19968: 0xF7A5, + 24394 - 19968: 0xCBAE, + 24396 - 19968: 0xDAAF, + 24398 - 19968: 0xD8B6, + 24406 - 19968: 0xD3A7, + 24407 - 19968: 0xFBB2, + 24409 - 19968: 0xFDC4, + 24411 - 19968: 0xECAD, + 24418 - 19968: 0xFBA1, + 24422 - 19968: 0xE5E9, + 24423 - 19968: 0xE9EE, + 24425 - 19968: 0xF3F4, + 24426 - 19968: 0xF8F3, + 24427 - 19968: 0xF0C1, + 24428 - 19968: 0xDEAF, + 24429 - 19968: 0xF8B0, + 24432 - 19968: 0xF3E0, + 24433 - 19968: 0xE7AF, + 24439 - 19968: 0xDBAD, + 24441 - 19968: 0xE6B5, + 24444 - 19968: 0xF9A8, + 24447 - 19968: 0xDDD8, + 24448 - 19968: 0xE8D9, + 24449 - 19968: 0xEFD6, + 24453 - 19968: 0xD3E2, + 24455 - 19968: 0xE2DF, + 24458 - 19968: 0xFCE0, + 24459 - 19968: 0xD7C8, + 24460 - 19968: 0xFDAD, + 24464 - 19968: 0xDFEF, + 24465 - 19968: 0xCCD3, + 24466 - 19968: 0xD3F9, + 24471 - 19968: 0xD4F0, + 24472 - 19968: 0xDBC7, + 24473 - 19968: 0xDED5, + 24478 - 19968: 0xF0F4, + 24480 - 19968: 0xD5D0, + 24481 - 19968: 0xE5D9, + 24488 - 19968: 0xFCC7, + 24489 - 19968: 0xDCD6, + 24490 - 19968: 0xE2E0, + 24494 - 19968: 0xDAB0, + 24501 - 19968: 0xF3A3, + 24503 - 19968: 0xD3EC, + 24505 - 19968: 0xF4CB, + 24509 - 19968: 0xFDC5, + 24515 - 19968: 0xE3FD, + 24517 - 19968: 0xF9B1, + 24524 - 19968: 0xD0FB, + 24525 - 19968: 0xECDB, + 24534 - 19968: 0xF5BC, + 24535 - 19968: 0xF2A4, + 24536 - 19968: 0xD8CE, + 24537 - 19968: 0xD8CF, + 24544 - 19968: 0xF5F7, + 24555 - 19968: 0xF6E1, + 24565 - 19968: 0xD2B7, + 24573 - 19968: 0xFBEC, + 24575 - 19968: 0xDDC8, + 24591 - 19968: 0xE4E8, + 24594 - 19968: 0xD2C1, + 24598 - 19968: 0xF8D7, + 24604 - 19968: 0xD6BB, + 24605 - 19968: 0xDED6, + 24608 - 19968: 0xF7BD, + 24609 - 19968: 0xECAE, + 24613 - 19968: 0xD0E1, + 24615 - 19968: 0xE0F5, + 24616 - 19968: 0xEAB3, + 24618 - 19968: 0xCED6, + 24623 - 19968: 0xCCA5, + 24641 - 19968: 0xECF6, + 24642 - 19968: 0xE2E1, + 24643 - 19968: 0xE3BE, + 24653 - 19968: 0xFCC8, + 24656 - 19968: 0xCDF0, + 24658 - 19968: 0xF9F6, + 24661 - 19968: 0xDFF0, + 24665 - 19968: 0xE5BF, + 24669 - 19968: 0xCEBF, + 24674 - 19968: 0xFCE1, + 24675 - 19968: 0xEDB0, + 24676 - 19968: 0xFDD1, + 24677 - 19968: 0xF6BB, + 24680 - 19968: 0xF9CF, + 24681 - 19968: 0xEBDA, + 24682 - 19968: 0xCAC1, + 24684 - 19968: 0xD2B8, + 24685 - 19968: 0xCDF1, + 24687 - 19968: 0xE3D3, + 24688 - 19968: 0xFDE6, + 24709 - 19968: 0xE6ED, + 24713 - 19968: 0xE3FA, + 24716 - 19968: 0xF0AA, + 24717 - 19968: 0xF9D0, + 24724 - 19968: 0xFCE2, + 24726 - 19968: 0xF8A7, + 24730 - 19968: 0xE1E5, + 24731 - 19968: 0xEEF9, + 24735 - 19968: 0xE7F6, + 24736 - 19968: 0xEAED, + 24739 - 19968: 0xFCB4, + 24740 - 19968: 0xF5C2, + 24743 - 19968: 0xD7DC, + 24752 - 19968: 0xF0F5, + 24754 - 19968: 0xDDE8, + 24755 - 19968: 0xD3ED, + 24756 - 19968: 0xF5FC, + 24758 - 19968: 0xDABF, + 24760 - 19968: 0xCCFB, + 24764 - 19968: 0xD3FA, + 24765 - 19968: 0xF4A4, + 24773 - 19968: 0xEFD7, + 24775 - 19968: 0xD4C3, + 24785 - 19968: 0xFBE3, + 24794 - 19968: 0xFBED, + 24796 - 19968: 0xE0AD, + 24799 - 19968: 0xEAEE, + 24800 - 19968: 0xFBB3, + 24801 - 19968: 0xE4C2, + 24816 - 19968: 0xF6E7, + 24817 - 19968: 0xD2DD, + 24819 - 19968: 0xDFCC, + 24822 - 19968: 0xFCC9, + 24825 - 19968: 0xE5A9, + 24826 - 19968: 0xE0F6, + 24827 - 19968: 0xF6B3, + 24833 - 19968: 0xE1FE, + 24838 - 19968: 0xCBF0, + 24840 - 19968: 0xEAEF, + 24841 - 19968: 0xEAF0, + 24845 - 19968: 0xDAC0, + 24846 - 19968: 0xF8B4, + 24847 - 19968: 0xEBF2, + 24853 - 19968: 0xE4C3, + 24858 - 19968: 0xE9D7, + 24859 - 19968: 0xE4F1, + 24863 - 19968: 0xCAEF, + 24871 - 19968: 0xCED7, + 24880 - 19968: 0xFCCA, + 24884 - 19968: 0xF3E1, + 24887 - 19968: 0xCBC4, + 24892 - 19968: 0xE3E5, + 24894 - 19968: 0xCBC5, + 24895 - 19968: 0xEAB4, + 24898 - 19968: 0xE9BD, + 24900 - 19968: 0xD7C9, + 24903 - 19968: 0xEBDB, + 24904 - 19968: 0xEDB1, + 24906 - 19968: 0xCCC3, + 24907 - 19968: 0xF7BE, + 24908 - 19968: 0xFCCB, + 24915 - 19968: 0xF8F4, + 24917 - 19968: 0xD9B7, + 24920 - 19968: 0xF3D3, + 24921 - 19968: 0xF3D4, + 24925 - 19968: 0xF7E4, + 24927 - 19968: 0xF7D1, + 24930 - 19968: 0xD8B7, + 24931 - 19968: 0xCEB1, + 24932 - 19968: 0xCAC2, + 24935 - 19968: 0xFBB4, + 24936 - 19968: 0xCBC6, + 24939 - 19968: 0xF0F6, + 24942 - 19968: 0xD5E7, + 24944 - 19968: 0xEAD0, + 24950 - 19968: 0xCCD4, + 24951 - 19968: 0xCBAF, + 24957 - 19968: 0xF4AA, + 24958 - 19968: 0xE9AF, + 24961 - 19968: 0xF5C3, + 24962 - 19968: 0xE9D8, + 24970 - 19968: 0xDDE9, + 24974 - 19968: 0xF1F3, + 24976 - 19968: 0xD5FB, + 24977 - 19968: 0xDEBB, + 24980 - 19968: 0xF4FB, + 24984 - 19968: 0xFDF3, + 24985 - 19968: 0xFDF2, + 24986 - 19968: 0xF7A6, + 24996 - 19968: 0xDDC9, + 24999 - 19968: 0xD4D3, + 25001 - 19968: 0xCCA8, + 25003 - 19968: 0xDAC1, + 25004 - 19968: 0xCCD5, + 25006 - 19968: 0xD9E4, + 25010 - 19968: 0xFACA, + 25014 - 19968: 0xE5E3, + 25018 - 19968: 0xD3BC, + 25022 - 19968: 0xCAF0, + 25027 - 19968: 0xD0C4, + 25031 - 19968: 0xCAD0, + 25032 - 19968: 0xFAAB, + 25033 - 19968: 0xEBEB, + 25034 - 19968: 0xE7F8, + 25035 - 19968: 0xD9E5, + 25062 - 19968: 0xD1D7, + 25074 - 19968: 0xF3A4, + 25078 - 19968: 0xD4FB, + 25079 - 19968: 0xFCE3, + 25080 - 19968: 0xFAD8, + 25082 - 19968: 0xF3D5, + 25084 - 19968: 0xCFAB, + 25087 - 19968: 0xEBF3, + 25088 - 19968: 0xD5FC, + 25095 - 19968: 0xD3D4, + 25096 - 19968: 0xCDFC, + 25098 - 19968: 0xD9E6, + 25100 - 19968: 0xE2F9, + 25101 - 19968: 0xE2A1, + 25102 - 19968: 0xEBD4, + 25104 - 19968: 0xE0F7, + 25105 - 19968: 0xE4B2, + 25106 - 19968: 0xCCFC, + 25110 - 19968: 0xFBE4, + 25114 - 19968: 0xF4AB, + 25119 - 19968: 0xD0BD, + 25121 - 19968: 0xCAF1, + 25130 - 19968: 0xEFB8, + 25134 - 19968: 0xD7C0, + 25136 - 19968: 0xEEFA, + 25137 - 19968: 0xFDF4, + 25140 - 19968: 0xD3E3, + 25142 - 19968: 0xFBC2, + 25150 - 19968: 0xD5E8, + 25151 - 19968: 0xDBAE, + 25152 - 19968: 0xE1B6, + 25153 - 19968: 0xF8B7, + 25159 - 19968: 0xE0BF, + 25160 - 19968: 0xFBC3, + 25161 - 19968: 0xDDEA, + 25163 - 19968: 0xE2A2, + 25165 - 19968: 0xEEA6, + 25171 - 19968: 0xF6E8, + 25176 - 19968: 0xF6F5, + 25198 - 19968: 0xDDCA, + 25201 - 19968: 0xD0E2, + 25206 - 19968: 0xDDA6, + 25209 - 19968: 0xDDEB, + 25212 - 19968: 0xE4F9, + 25215 - 19968: 0xE3AF, + 25216 - 19968: 0xD0FC, + 25220 - 19968: 0xF4FC, + 25225 - 19968: 0xCCBC, + 25226 - 19968: 0xF7EA, + 25233 - 19968: 0xE5E4, + 25234 - 19968: 0xDFF1, + 25237 - 19968: 0xF7E1, + 25239 - 19968: 0xF9F7, + 25240 - 19968: 0xEFB9, + 25243 - 19968: 0xF8D8, + 25259 - 19968: 0xF9A9, + 25265 - 19968: 0xF8D9, + 25269 - 19968: 0xEEBD, + 25273 - 19968: 0xD8C6, + 25276 - 19968: 0xE4E3, + 25277 - 19968: 0xF5CE, + 25282 - 19968: 0xDDD9, + 25287 - 19968: 0xD9E7, + 25288 - 19968: 0xD2B9, + 25289 - 19968: 0xD5C3, + 25292 - 19968: 0xDAE5, + 25293 - 19968: 0xDAD0, + 25295 - 19968: 0xD1D9, + 25296 - 19968: 0xCED8, + 25298 - 19968: 0xCBDE, + 25299 - 19968: 0xF4AC, + 25300 - 19968: 0xDAFB, + 25302 - 19968: 0xF6E9, + 25303 - 19968: 0xE8F3, + 25304 - 19968: 0xCFAC, + 25305 - 19968: 0xF0F0, + 25307 - 19968: 0xF4FD, + 25308 - 19968: 0xDBC8, + 25324 - 19968: 0xCEC0, + 25325 - 19968: 0xE3D4, + 25326 - 19968: 0xD1CF, + 25327 - 19968: 0xF1F5, + 25329 - 19968: 0xCDF2, + 25331 - 19968: 0xCFEB, + 25335 - 19968: 0xCDB8, + 25342 - 19968: 0xE3A6, + 25343 - 19968: 0xD1DA, + 25345 - 19968: 0xF2A5, + 25351 - 19968: 0xF2A6, + 25353 - 19968: 0xE4CE, + 25361 - 19968: 0xD3FB, + 25387 - 19968: 0xF1A9, + 25391 - 19968: 0xF2C9, + 25402 - 19968: 0xEFD8, + 25403 - 19968: 0xE6C9, + 25405 - 19968: 0xD8B8, + 25406 - 19968: 0xFAF3, + 25417 - 19968: 0xF3B5, + 25420 - 19968: 0xF8A4, + 25423 - 19968: 0xD1F3, + 25424 - 19968: 0xE6C8, + 25429 - 19968: 0xF8DA, + 25447 - 19968: 0xDCE9, + 25448 - 19968: 0xDED7, + 25454 - 19968: 0xCBDF, + 25458 - 19968: 0xCFEC, + 25463 - 19968: 0xF4DF, + 25466 - 19968: 0xD1F4, + 25467 - 19968: 0xD2BA, + 25471 - 19968: 0xDFF2, + 25475 - 19968: 0xE1B7, + 25480 - 19968: 0xE2A3, + 25481 - 19968: 0xD3FC, + 25484 - 19968: 0xEDE6, + 25490 - 19968: 0xDBC9, + 25494 - 19968: 0xE4FA, + 25496 - 19968: 0xCFDE, + 25499 - 19968: 0xCED0, + 25504 - 19968: 0xD5D3, + 25505 - 19968: 0xF3F5, + 25506 - 19968: 0xF7AE, + 25509 - 19968: 0xEFC8, + 25511 - 19968: 0xCDF3, + 25512 - 19968: 0xF5CF, + 25513 - 19968: 0xE5F3, + 25514 - 19968: 0xF0C2, + 25536 - 19968: 0xCAD1, + 25540 - 19968: 0xEAF1, + 25542 - 19968: 0xD0A6, + 25551 - 19968: 0xD9DA, + 25552 - 19968: 0xF0AB, + 25558 - 19968: 0xEBE7, + 25562 - 19968: 0xE5C0, + 25563 - 19968: 0xFCB5, + 25569 - 19968: 0xE4C4, + 25581 - 19968: 0xCCA9, + 25582 - 19968: 0xFDC6, + 25588 - 19968: 0xEAB5, + 25590 - 19968: 0xE5AA, + 25591 - 19968: 0xDFBA, + 25613 - 19968: 0xE1DF, + 25615 - 19968: 0xDAD1, + 25620 - 19968: 0xE1B8, + 25622 - 19968: 0xE8F4, + 25623 - 19968: 0xD3FD, + 25628 - 19968: 0xE2A4, + 25634 - 19968: 0xF2CA, + 25644 - 19968: 0xDAE6, + 25645 - 19968: 0xF7B3, + 25658 - 19968: 0xFDCD, + 25662 - 19968: 0xF3B6, + 25688 - 19968: 0xEED7, + 25696 - 19968: 0xF5C4, + 25705 - 19968: 0xD8A4, + 25711 - 19968: 0xF2A7, + 25720 - 19968: 0xD9B8, + 25721 - 19968: 0xD9B9, + 25722 - 19968: 0xEFC9, + 25736 - 19968: 0xD6CE, + 25745 - 19968: 0xF7CB, + 25746 - 19968: 0xDFAE, + 25747 - 19968: 0xE8F5, + 25754 - 19968: 0xD2B5, + 25758 - 19968: 0xD3D5, + 25764 - 19968: 0xF4CC, + 25765 - 19968: 0xDAFC, + 25771 - 19968: 0xD9E8, + 25773 - 19968: 0xF7EB, + 25774 - 19968: 0xF5C9, + 25776 - 19968: 0xF3BC, + 25778 - 19968: 0xDAD2, + 25787 - 19968: 0xD3B5, + 25793 - 19968: 0xE8B6, + 25796 - 19968: 0xD6CF, + 25797 - 19968: 0xF4BA, + 25799 - 19968: 0xF7C9, + 25802 - 19968: 0xCCAA, + 25805 - 19968: 0xF0C3, + 25806 - 19968: 0xCCD6, + 25810 - 19968: 0xD0D3, + 25812 - 19968: 0xD3BD, + 25816 - 19968: 0xDBFB, + 25818 - 19968: 0xCBE0, + 25825 - 19968: 0xD3E4, + 25826 - 19968: 0xF6F7, + 25829 - 19968: 0xD5BA, + 25830 - 19968: 0xF3CD, + 25831 - 19968: 0xCBE1, + 25836 - 19968: 0xEBF4, + 25842 - 19968: 0xF4AD, + 25844 - 19968: 0xFCAA, + 25850 - 19968: 0xF7EC, + 25854 - 19968: 0xE8F6, + 25856 - 19968: 0xDAE7, + 25860 - 19968: 0xF7CC, + 25880 - 19968: 0xE5C1, + 25885 - 19968: 0xE0EE, + 25891 - 19968: 0xD5FD, + 25898 - 19968: 0xCEE6, + 25899 - 19968: 0xFCAB, + 25900 - 19968: 0xD5BB, + 25903 - 19968: 0xF2A8, + 25910 - 19968: 0xE2A5, + 25911 - 19968: 0xCDB9, + 25912 - 19968: 0xEAF2, + 25913 - 19968: 0xCBC7, + 25915 - 19968: 0xCDF4, + 25918 - 19968: 0xDBAF, + 25919 - 19968: 0xEFD9, + 25925 - 19968: 0xCDBA, + 25928 - 19968: 0xFCF9, + 25933 - 19968: 0xDFF3, + 25934 - 19968: 0xCEE7, + 25935 - 19968: 0xDAC2, + 25937 - 19968: 0xCFAD, + 25942 - 19968: 0xE7F9, + 25943 - 19968: 0xF8A8, + 25950 - 19968: 0xF3E2, + 25954 - 19968: 0xCAF2, + 25955 - 19968: 0xDFA4, + 25958 - 19968: 0xD4C4, + 25964 - 19968: 0xCCD7, + 25965 - 19968: 0xE5C2, + 25970 - 19968: 0xCDBB, + 25972 - 19968: 0xEFDA, + 25973 - 19968: 0xEED8, + 25975 - 19968: 0xDDA7, + 25976 - 19968: 0xE2A6, + 25982 - 19968: 0xE0C0, + 25986 - 19968: 0xD6B0, + 25987 - 19968: 0xF8CA, + 25989 - 19968: 0xFCFA, + 25991 - 19968: 0xD9FE, + 25996 - 19968: 0xDEB0, + 26000 - 19968: 0xDDEC, + 26001 - 19968: 0xDAE8, + 26007 - 19968: 0xD4E0, + 26009 - 19968: 0xD6F9, + 26011 - 19968: 0xCDD7, + 26012 - 19968: 0xDED8, + 26015 - 19968: 0xF2F8, + 26017 - 19968: 0xE4D6, + 26020 - 19968: 0xD0C5, + 26021 - 19968: 0xF4AE, + 26023 - 19968: 0xDDA8, + 26027 - 19968: 0xEDC5, + 26028 - 19968: 0xF3D6, + 26031 - 19968: 0xDED9, + 26032 - 19968: 0xE3E6, + 26039 - 19968: 0xD3A8, + 26041 - 19968: 0xDBB0, + 26044 - 19968: 0xE5DA, + 26045 - 19968: 0xE3BF, + 26049 - 19968: 0xDBB1, + 26053 - 19968: 0xD5E9, + 26059 - 19968: 0xE0C1, + 26060 - 19968: 0xEFDB, + 26063 - 19968: 0xF0E9, + 26066 - 19968: 0xD7B2, + 26071 - 19968: 0xD0FD, + 26080 - 19968: 0xD9E9, + 26083 - 19968: 0xD0FE, + 26085 - 19968: 0xECED, + 26086 - 19968: 0xD3A9, + 26088 - 19968: 0xF2A9, + 26089 - 19968: 0xF0C4, + 26092 - 19968: 0xE2E2, + 26093 - 19968: 0xE9EF, + 26097 - 19968: 0xF9D1, + 26100 - 19968: 0xE9D9, + 26106 - 19968: 0xE8DA, + 26107 - 19968: 0xDAC3, + 26108 - 19968: 0xDAC4, + 26109 - 19968: 0xD4C5, + 26111 - 19968: 0xE7FA, + 26118 - 19968: 0xCDE0, + 26119 - 19968: 0xE3B0, + 26121 - 19968: 0xDBB2, + 26122 - 19968: 0xFBC4, + 26124 - 19968: 0xF3E3, + 26126 - 19968: 0xD9A5, + 26127 - 19968: 0xFBE7, + 26128 - 19968: 0xDDCB, + 26129 - 19968: 0xD0D4, + 26131 - 19968: 0xE6B6, + 26132 - 19968: 0xE0AE, + 26133 - 19968: 0xFDDA, + 26142 - 19968: 0xDCB5, + 26143 - 19968: 0xE0F8, + 26144 - 19968: 0xE7B1, + 26149 - 19968: 0xF5F0, + 26151 - 19968: 0xD8DC, + 26152 - 19968: 0xEDC6, + 26157 - 19968: 0xE1B9, + 26159 - 19968: 0xE3C0, + 26160 - 19968: 0xF9C0, + 26161 - 19968: 0xE9F0, + 26164 - 19968: 0xD9DB, + 26166 - 19968: 0xF3E4, + 26170 - 19968: 0xDCB6, + 26171 - 19968: 0xE4E9, + 26177 - 19968: 0xF0C5, + 26178 - 19968: 0xE3C1, + 26179 - 19968: 0xFCCC, + 26180 - 19968: 0xFCCD, + 26185 - 19968: 0xF2CB, + 26187 - 19968: 0xF2CC, + 26191 - 19968: 0xE4CF, + 26201 - 19968: 0xF1DB, + 26203 - 19968: 0xFAD9, + 26205 - 19968: 0xF1B8, + 26206 - 19968: 0xFDF5, + 26207 - 19968: 0xE0F9, + 26212 - 19968: 0xE7FB, + 26213 - 19968: 0xFCB7, + 26214 - 19968: 0xFCE4, + 26215 - 19968: 0xFBC5, + 26216 - 19968: 0xE3E7, + 26217 - 19968: 0xD8B9, + 26219 - 19968: 0xF6F8, + 26222 - 19968: 0xDCC5, + 26223 - 19968: 0xCCD8, + 26227 - 19968: 0xE0AF, + 26228 - 19968: 0xF4E7, + 26230 - 19968: 0xEFDC, + 26231 - 19968: 0xCFFC, + 26232 - 19968: 0xEFDD, + 26234 - 19968: 0xF2AA, + 26244 - 19968: 0xFDBE, + 26247 - 19968: 0xCAAC, + 26248 - 19968: 0xFDBB, + 26249 - 19968: 0xFDC7, + 26254 - 19968: 0xE7B2, + 26256 - 19968: 0xEAD1, + 26257 - 19968: 0xDFF4, + 26262 - 19968: 0xD1EC, + 26263 - 19968: 0xE4DE, + 26264 - 19968: 0xE5C3, + 26269 - 19968: 0xD9A6, + 26272 - 19968: 0xCDBC, + 26274 - 19968: 0xF3E5, + 26283 - 19968: 0xEDD5, + 26286 - 19968: 0xD9BA, + 26290 - 19968: 0xEDE7, + 26291 - 19968: 0xFBB5, + 26292 - 19968: 0xF8EC, + 26297 - 19968: 0xE0E7, + 26299 - 19968: 0xCCD9, + 26302 - 19968: 0xD4C6, + 26308 - 19968: 0xE7A5, + 26310 - 19968: 0xD5F5, + 26311 - 19968: 0xD3BE, + 26313 - 19968: 0xFCFB, + 26326 - 19968: 0xE4F2, + 26329 - 19968: 0xDFF5, + 26332 - 19968: 0xE8F8, + 26333 - 19968: 0xF8ED, + 26336 - 19968: 0xCEC7, + 26342 - 19968: 0xFDF6, + 26352 - 19968: 0xE8D8, + 26354 - 19968: 0xCDD8, + 26355 - 19968: 0xE7D6, + 26356 - 19968: 0xCCDA, + 26359 - 19968: 0xCAE3, + 26360 - 19968: 0xDFF6, + 26361 - 19968: 0xF0C7, + 26362 - 19968: 0xF0C6, + 26364 - 19968: 0xD8BA, + 26366 - 19968: 0xF1F4, + 26367 - 19968: 0xF4F0, + 26368 - 19968: 0xF5CC, + 26371 - 19968: 0xFCE5, + 26376 - 19968: 0xEAC5, + 26377 - 19968: 0xEAF3, + 26379 - 19968: 0xDDDB, + 26381 - 19968: 0xDCD7, + 26388 - 19968: 0xDEFD, + 26389 - 19968: 0xF2F9, + 26391 - 19968: 0xD5C7, + 26395 - 19968: 0xD8D0, + 26397 - 19968: 0xF0C8, + 26398 - 19968: 0xD1A1, + 26399 - 19968: 0xD1A2, + 26406 - 19968: 0xD9D4, + 26407 - 19968: 0xD6E8, + 26408 - 19968: 0xD9CA, + 26410 - 19968: 0xDAB1, + 26411 - 19968: 0xD8C7, + 26412 - 19968: 0xDCE2, + 26413 - 19968: 0xF3CE, + 26414 - 19968: 0xF5F4, + 26417 - 19968: 0xF1B9, + 26420 - 19968: 0xDAD3, + 26422 - 19968: 0xF6EA, + 26426 - 19968: 0xCFF5, + 26429 - 19968: 0xFDAE, + 26438 - 19968: 0xCAD2, + 26441 - 19968: 0xDFB4, + 26446 - 19968: 0xD7DD, + 26447 - 19968: 0xFABA, + 26448 - 19968: 0xEEA7, + 26449 - 19968: 0xF5BD, + 26451 - 19968: 0xF8F5, + 26454 - 19968: 0xEDE8, + 26460 - 19968: 0xD4E1, + 26462 - 19968: 0xD1A3, + 26463 - 19968: 0xE1D6, + 26477 - 19968: 0xF9F8, + 26479 - 19968: 0xDBCA, + 26480 - 19968: 0xCBF9, + 26481 - 19968: 0xD4D4, + 26483 - 19968: 0xD9DC, + 26485 - 19968: 0xEEBE, + 26487 - 19968: 0xF7ED, + 26491 - 19968: 0xD2EE, + 26494 - 19968: 0xE1E6, + 26495 - 19968: 0xF7F9, + 26503 - 19968: 0xDDED, + 26505 - 19968: 0xE8DB, + 26507 - 19968: 0xDBB3, + 26511 - 19968: 0xD1F7, + 26512 - 19968: 0xE0B0, + 26515 - 19968: 0xD4E2, + 26517 - 19968: 0xF6D7, + 26519 - 19968: 0xD7F9, + 26522 - 19968: 0xD8DD, + 26524 - 19968: 0xCDFD, + 26525 - 19968: 0xF2AB, + 26543 - 19968: 0xCDBD, + 26544 - 19968: 0xF8C2, + 26547 - 19968: 0xF2AC, + 26550 - 19968: 0xCAAD, + 26551 - 19968: 0xCAAE, + 26552 - 19968: 0xCFAE, + 26558 - 19968: 0xE3C2, + 26564 - 19968: 0xDCB7, + 26575 - 19968: 0xDBDA, + 26576 - 19968: 0xD9BB, + 26577 - 19968: 0xCAF3, + 26578 - 19968: 0xF6D3, + 26579 - 19968: 0xE6F8, + 26580 - 19968: 0xEAF5, + 26586 - 19968: 0xEAF6, + 26589 - 19968: 0xF6F9, + 26601 - 19968: 0xCFAF, + 26604 - 19968: 0xCAD3, + 26607 - 19968: 0xCAAF, + 26608 - 19968: 0xD2B0, + 26609 - 19968: 0xF1BA, + 26611 - 19968: 0xD7B3, + 26612 - 19968: 0xE3C3, + 26613 - 19968: 0xF3FD, + 26614 - 19968: 0xDEDA, + 26619 - 19968: 0xDEDB, + 26622 - 19968: 0xEFDE, + 26642 - 19968: 0xE2E3, + 26643 - 19968: 0xEEFB, + 26646 - 19968: 0xDFF7, + 26647 - 19968: 0xD7CA, + 26657 - 19968: 0xCEE8, + 26658 - 19968: 0xDBDB, + 26666 - 19968: 0xF1BB, + 26671 - 19968: 0xE9F1, + 26680 - 19968: 0xFAB7, + 26681 - 19968: 0xD0C6, + 26684 - 19968: 0xCCAB, + 26685 - 19968: 0xEEA8, + 26688 - 19968: 0xCBFA, + 26689 - 19968: 0xF9F9, + 26690 - 19968: 0xCCFD, + 26691 - 19968: 0xD3FE, + 26696 - 19968: 0xE4D0, + 26702 - 19968: 0xF2EE, + 26704 - 19968: 0xD4D5, + 26705 - 19968: 0xDFCD, + 26707 - 19968: 0xFCB8, + 26708 - 19968: 0xD1D0, + 26733 - 19968: 0xF2CD, + 26742 - 19968: 0xF7D2, + 26751 - 19968: 0xCAD4, + 26753 - 19968: 0xD5D9, + 26757 - 19968: 0xD8DE, + 26767 - 19968: 0xCDD9, + 26771 - 19968: 0xEEA9, + 26772 - 19968: 0xF6BC, + 26775 - 19968: 0xCCDB, + 26781 - 19968: 0xF0C9, + 26783 - 19968: 0xFCFC, + 26785 - 19968: 0xE8C9, + 26786 - 19968: 0xF4FE, + 26791 - 19968: 0xE7FC, + 26792 - 19968: 0xD7DE, + 26797 - 19968: 0xDEDC, + 26799 - 19968: 0xF0AC, + 26800 - 19968: 0xCCFE, + 26801 - 19968: 0xCDE1, + 26803 - 19968: 0xE1BA, + 26805 - 19968: 0xDBEF, + 26806 - 19968: 0xDAB2, + 26820 - 19968: 0xD1A5, + 26821 - 19968: 0xDCB8, + 26825 - 19968: 0xD8F6, + 26827 - 19968: 0xD1A4, + 26829 - 19968: 0xCDE2, + 26834 - 19968: 0xDCEA, + 26837 - 19968: 0xF0F7, + 26839 - 19968: 0xF0CA, + 26840 - 19968: 0xD0BE, + 26842 - 19968: 0xDDDC, + 26847 - 19968: 0xD4D6, + 26848 - 19968: 0xD3D6, + 26855 - 19968: 0xEDD0, + 26856 - 19968: 0xCDA1, + 26862 - 19968: 0xDFB5, + 26866 - 19968: 0xDFF8, + 26873 - 19968: 0xD4A1, + 26874 - 19968: 0xCEB2, + 26880 - 19968: 0xE8CA, + 26885 - 19968: 0xEBF5, + 26893 - 19968: 0xE3D5, + 26894 - 19968: 0xF5D0, + 26898 - 19968: 0xF5A1, + 26919 - 19968: 0xD9A7, + 26928 - 19968: 0xE5AB, + 26941 - 19968: 0xE6CB, + 26943 - 19968: 0xF5F1, + 26954 - 19968: 0xE5C5, + 26963 - 19968: 0xF9A3, + 26964 - 19968: 0xE0DB, + 26965 - 19968: 0xF6EB, + 26967 - 19968: 0xCBF1, + 26969 - 19968: 0xD9EA, + 26970 - 19968: 0xF5A2, + 26974 - 19968: 0xD7D1, + 26976 - 19968: 0xD1F8, + 26977 - 19968: 0xEAF8, + 26978 - 19968: 0xEAF9, + 26979 - 19968: 0xDAB3, + 26984 - 19968: 0xEFDF, + 26987 - 19968: 0xF1EF, + 26989 - 19968: 0xE5F6, + 26990 - 19968: 0xEEBF, + 26991 - 19968: 0xE2E4, + 26997 - 19968: 0xD0BF, + 26999 - 19968: 0xFAAC, + 27000 - 19968: 0xF5D1, + 27001 - 19968: 0xE7B3, + 27029 - 19968: 0xE9BE, + 27035 - 19968: 0xF2CE, + 27036 - 19968: 0xDBB4, + 27045 - 19968: 0xFCCE, + 27047 - 19968: 0xDDEE, + 27054 - 19968: 0xE7B4, + 27060 - 19968: 0xD7B4, + 27067 - 19968: 0xF7B4, + 27073 - 19968: 0xCDBE, + 27075 - 19968: 0xDAE9, + 27083 - 19968: 0xCFB0, + 27084 - 19968: 0xF7D9, + 27085 - 19968: 0xF3E6, + 27088 - 19968: 0xCED9, + 27112 - 19968: 0xCEAA, + 27114 - 19968: 0xCBC8, + 27131 - 19968: 0xD0A7, + 27133 - 19968: 0xF0CB, + 27135 - 19968: 0xD0C7, + 27138 - 19968: 0xE4C5, + 27146 - 19968: 0xDBE0, + 27153 - 19968: 0xD5DA, + 27155 - 19968: 0xD7A7, + 27159 - 19968: 0xEEC0, + 27161 - 19968: 0xF8F6, + 27166 - 19968: 0xF5D2, + 27167 - 19968: 0xEDE9, + 27169 - 19968: 0xD9BC, + 27171 - 19968: 0xE5C6, + 27189 - 19968: 0xF5A3, + 27192 - 19968: 0xDAD4, + 27193 - 19968: 0xE2A7, + 27194 - 19968: 0xFBFC, + 27197 - 19968: 0xF1DC, + 27204 - 19968: 0xCAF4, + 27208 - 19968: 0xE8FA, + 27211 - 19968: 0xCEE9, + 27218 - 19968: 0xE9F8, + 27219 - 19968: 0xE2E5, + 27224 - 19968: 0xD0B9, + 27225 - 19968: 0xD4F2, + 27231 - 19968: 0xD1A6, + 27233 - 19968: 0xDFCE, + 27243 - 19968: 0xFCF4, + 27264 - 19968: 0xD3AA, + 27268 - 19968: 0xCCAC, + 27273 - 19968: 0xEFE0, + 27277 - 19968: 0xE5E5, + 27278 - 19968: 0xD0D5, + 27287 - 19968: 0xDBFC, + 27292 - 19968: 0xFCE6, + 27298 - 19968: 0xCBFE, + 27299 - 19968: 0xEDEA, + 27315 - 19968: 0xDEB1, + 27323 - 19968: 0xF9E3, + 27330 - 19968: 0xD4A2, + 27331 - 19968: 0xCFF6, + 27347 - 19968: 0xD6D0, + 27354 - 19968: 0xD5EA, + 27355 - 19968: 0xF1EE, + 27382 - 19968: 0xFACB, + 27387 - 19968: 0xE5A1, + 27396 - 19968: 0xD5B1, + 27402 - 19968: 0xCFED, + 27404 - 19968: 0xEDEB, + 27410 - 19968: 0xD5B2, + 27414 - 19968: 0xD5BC, + 27424 - 19968: 0xFDE2, + 27425 - 19968: 0xF3AD, + 27427 - 19968: 0xFDDB, + 27442 - 19968: 0xE9B0, + 27450 - 19968: 0xD1A7, + 27453 - 19968: 0xFDE3, + 27454 - 19968: 0xCEB3, + 27462 - 19968: 0xFDE4, + 27463 - 19968: 0xFACE, + 27468 - 19968: 0xCAB0, + 27470 - 19968: 0xF7A7, + 27472 - 19968: 0xCFB1, + 27487 - 19968: 0xE6A2, + 27489 - 19968: 0xFCB6, + 27490 - 19968: 0xF2AD, + 27491 - 19968: 0xEFE1, + 27492 - 19968: 0xF3AE, + 27493 - 19968: 0xDCC6, + 27494 - 19968: 0xD9EB, + 27498 - 19968: 0xE8E0, + 27506 - 19968: 0xE1A8, + 27511 - 19968: 0xD5F6, + 27512 - 19968: 0xCFFD, + 27515 - 19968: 0xDEDD, + 27519 - 19968: 0xD9D1, + 27523 - 19968: 0xE4EA, + 27524 - 19968: 0xF2CF, + 27526 - 19968: 0xF7BF, + 27529 - 19968: 0xE2E6, + 27530 - 19968: 0xE2A8, + 27542 - 19968: 0xE3D6, + 27544 - 19968: 0xEDD1, + 27550 - 19968: 0xE9F9, + 27566 - 19968: 0xD6B1, + 27567 - 19968: 0xDEB2, + 27570 - 19968: 0xE0E8, + 27573 - 19968: 0xD3AB, + 27575 - 19968: 0xEBDC, + 27578 - 19968: 0xDFAF, + 27580 - 19968: 0xCAC3, + 27583 - 19968: 0xEEFC, + 27585 - 19968: 0xFDC3, + 27589 - 19968: 0xEBF6, + 27590 - 19968: 0xCFB2, + 27595 - 19968: 0xD9EC, + 27597 - 19968: 0xD9BD, + 27599 - 19968: 0xD8DF, + 27602 - 19968: 0xD4B8, + 27603 - 19968: 0xEBBE, + 27604 - 19968: 0xDDEF, + 27606 - 19968: 0xDDF0, + 27607 - 19968: 0xDDF1, + 27608 - 19968: 0xDDF2, + 27611 - 19968: 0xD9BE, + 27627 - 19968: 0xFBC6, + 27628 - 19968: 0xCFB3, + 27656 - 19968: 0xEEFD, + 27663 - 19968: 0xE4AB, + 27665 - 19968: 0xDAC5, + 27667 - 19968: 0xD8EC, + 27683 - 19968: 0xD1A8, + 27700 - 19968: 0xE2A9, + 27703 - 19968: 0xDEBC, + 27704 - 19968: 0xE7B5, + 27710 - 19968: 0xDBF0, + 27712 - 19968: 0xEFE2, + 27713 - 19968: 0xF1F0, + 27714 - 19968: 0xCFB4, + 27726 - 19968: 0xDBF1, + 27728 - 19968: 0xE0B1, + 27733 - 19968: 0xDFA5, + 27735 - 19968: 0xF9D2, + 27738 - 19968: 0xE7FD, + 27741 - 19968: 0xE6A3, + 27742 - 19968: 0xFBF1, + 27743 - 19968: 0xCBB0, + 27744 - 19968: 0xF2AE, + 27752 - 19968: 0xCDE7, + 27754 - 19968: 0xE8DC, + 27757 - 19968: 0xE7D7, + 27760 - 19968: 0xF7C0, + 27762 - 19968: 0xD0E3, + 27766 - 19968: 0xDAA1, + 27770 - 19968: 0xCCBD, + 27773 - 19968: 0xD1A9, + 27774 - 19968: 0xDDCC, + 27777 - 19968: 0xE3FE, + 27778 - 19968: 0xD1AA, + 27779 - 19968: 0xE8AA, + 27781 - 19968: 0xEAB6, + 27782 - 19968: 0xF9FA, + 27783 - 19968: 0xE6CC, + 27784 - 19968: 0xF6D8, + 27788 - 19968: 0xD4C7, + 27792 - 19968: 0xD9CB, + 27794 - 19968: 0xD9D2, + 27795 - 19968: 0xD3CB, + 27796 - 19968: 0xD8F7, + 27797 - 19968: 0xDAA9, + 27798 - 19968: 0xF5F8, + 27801 - 19968: 0xDEDE, + 27802 - 19968: 0xF2AF, + 27803 - 19968: 0xF8A9, + 27819 - 19968: 0xD8C8, + 27822 - 19968: 0xEEC1, + 27827 - 19968: 0xF9C1, + 27832 - 19968: 0xDDF3, + 27833 - 19968: 0xEAFA, + 27835 - 19968: 0xF6BD, + 27836 - 19968: 0xE1BB, + 27837 - 19968: 0xCDBF, + 27838 - 19968: 0xF4D4, + 27839 - 19968: 0xE6CD, + 27841 - 19968: 0xFCCF, + 27842 - 19968: 0xFBA2, + 27844 - 19968: 0xE0DC, + 27849 - 19968: 0xF4BB, + 27850 - 19968: 0xDAD5, + 27852 - 19968: 0xF9B2, + 27859 - 19968: 0xFBF2, + 27861 - 19968: 0xDBF6, + 27863 - 19968: 0xDEDF, + 27867 - 19968: 0xDBF2, + 27873 - 19968: 0xF8DC, + 27874 - 19968: 0xF7EE, + 27875 - 19968: 0xEBE8, + 27877 - 19968: 0xD2FA, + 27880 - 19968: 0xF1BC, + 27883 - 19968: 0xFADA, + 27886 - 19968: 0xDAEA, + 27887 - 19968: 0xDAC6, + 27888 - 19968: 0xF7C1, + 27891 - 19968: 0xE7B6, + 27915 - 19968: 0xE5C7, + 27916 - 19968: 0xD6AC, + 27921 - 19968: 0xDCC7, + 27927 - 19968: 0xE1A9, + 27929 - 19968: 0xE2AA, + 27931 - 19968: 0xD5A6, + 27934 - 19968: 0xD4D7, + 27941 - 19968: 0xF2D0, + 27943 - 19968: 0xEAFB, + 27945 - 19968: 0xE0DD, + 27946 - 19968: 0xFBF3, + 27954 - 19968: 0xF1BD, + 27957 - 19968: 0xE2E7, + 27958 - 19968: 0xFDD7, + 27960 - 19968: 0xCEC8, + 27961 - 19968: 0xEAB7, + 27963 - 19968: 0xFCC0, + 27965 - 19968: 0xFDE7, + 27966 - 19968: 0xF7EF, + 27969 - 19968: 0xD7B5, + 27993 - 19968: 0xEFBA, + 27994 - 19968: 0xF1DD, + 27996 - 19968: 0xDEB3, + 28003 - 19968: 0xE8CB, + 28006 - 19968: 0xF8DD, + 28009 - 19968: 0xFBC7, + 28010 - 19968: 0xD5C8, + 28012 - 19968: 0xD7DF, + 28014 - 19968: 0xDDA9, + 28020 - 19968: 0xE9B1, + 28023 - 19968: 0xFAAD, + 28024 - 19968: 0xF6D9, + 28025 - 19968: 0xFAF4, + 28031 - 19968: 0xF8AA, + 28037 - 19968: 0xE6EE, + 28039 - 19968: 0xCCDC, + 28040 - 19968: 0xE1BC, + 28041 - 19968: 0xE0EF, + 28044 - 19968: 0xE9BF, + 28045 - 19968: 0xFCFD, + 28046 - 19968: 0xE6CE, + 28049 - 19968: 0xE1D7, + 28051 - 19968: 0xE6CF, + 28053 - 19968: 0xF4F1, + 28079 - 19968: 0xE4F3, + 28082 - 19968: 0xE4FB, + 28085 - 19968: 0xF9E4, + 28096 - 19968: 0xEFE3, + 28099 - 19968: 0xCFEE, + 28100 - 19968: 0xF6BE, + 28101 - 19968: 0xE0B2, + 28102 - 19968: 0xFCFE, + 28103 - 19968: 0xD1AB, + 28107 - 19968: 0xD7FA, + 28111 - 19968: 0xFBC8, + 28113 - 19968: 0xE2D7, + 28120 - 19968: 0xD4A3, + 28121 - 19968: 0xF0F8, + 28122 - 19968: 0xD7A8, + 28126 - 19968: 0xE1E7, + 28129 - 19968: 0xD3BF, + 28136 - 19968: 0xEFE4, + 28138 - 19968: 0xD7C5, + 28139 - 19968: 0xEBE2, + 28142 - 19968: 0xFCE7, + 28145 - 19968: 0xE4A2, + 28147 - 19968: 0xE2E8, + 28149 - 19968: 0xE6D0, + 28151 - 19968: 0xFBE8, + 28152 - 19968: 0xF4E8, + 28153 - 19968: 0xE5F4, + 28154 - 19968: 0xF4BC, + 28155 - 19968: 0xF4D5, + 28183 - 19968: 0xDFB6, + 28185 - 19968: 0xFCB9, + 28186 - 19968: 0xEEC2, + 28187 - 19968: 0xCAF5, + 28191 - 19968: 0xEFE5, + 28192 - 19968: 0xCBE2, + 28193 - 19968: 0xD4A4, + 28195 - 19968: 0xDEE0, + 28196 - 19968: 0xDAFD, + 28197 - 19968: 0xE4C6, + 28198 - 19968: 0xE8BE, + 28203 - 19968: 0xE0DE, + 28204 - 19968: 0xF6B4, + 28205 - 19968: 0xEAD2, + 28207 - 19968: 0xF9FB, + 28210 - 19968: 0xE0C2, + 28212 - 19968: 0xCAE4, + 28214 - 19968: 0xE7B7, + 28216 - 19968: 0xEAFD, + 28218 - 19968: 0xD9DD, + 28220 - 19968: 0xDAB4, + 28221 - 19968: 0xEEAA, + 28222 - 19968: 0xFBE9, + 28227 - 19968: 0xDBCB, + 28228 - 19968: 0xDAB5, + 28234 - 19968: 0xF1BE, + 28237 - 19968: 0xD3AC, + 28246 - 19968: 0xFBC9, + 28248 - 19968: 0xDFCF, + 28251 - 19968: 0xD3C0, + 28252 - 19968: 0xE3D7, + 28254 - 19968: 0xEFE6, + 28255 - 19968: 0xFCD0, + 28263 - 19968: 0xE9C0, + 28267 - 19968: 0xF5D3, + 28270 - 19968: 0xECDC, + 28271 - 19968: 0xF7B7, + 28274 - 19968: 0xEAB8, + 28275 - 19968: 0xD1F9, + 28282 - 19968: 0xDCC8, + 28304 - 19968: 0xEAB9, + 28310 - 19968: 0xF1DE, + 28316 - 19968: 0xD7B6, + 28317 - 19968: 0xCFB5, + 28319 - 19968: 0xD9A8, + 28322 - 19968: 0xECEE, + 28325 - 19968: 0xDDAA, + 28330 - 19968: 0xCDA2, + 28331 - 19968: 0xE8AE, + 28335 - 19968: 0xE1BD, + 28337 - 19968: 0xF2D1, + 28342 - 19968: 0xE9C1, + 28346 - 19968: 0xD2FC, + 28354 - 19968: 0xDBB5, + 28356 - 19968: 0xF3E7, + 28357 - 19968: 0xD8FE, + 28361 - 19968: 0xFCD1, + 28363 - 19968: 0xEDB2, + 28364 - 19968: 0xF4AF, + 28366 - 19968: 0xFBA3, + 28369 - 19968: 0xFCC1, + 28371 - 19968: 0xEEAB, + 28372 - 19968: 0xD4A5, + 28399 - 19968: 0xF4F2, + 28404 - 19968: 0xEED9, + 28408 - 19968: 0xFBCA, + 28414 - 19968: 0xCDE3, + 28415 - 19968: 0xD8BB, + 28417 - 19968: 0xE5DB, + 28418 - 19968: 0xF8F7, + 28422 - 19968: 0xF6D4, + 28431 - 19968: 0xD7A9, + 28433 - 19968: 0xCBC9, + 28436 - 19968: 0xE6D1, + 28437 - 19968: 0xF0CC, + 28448 - 19968: 0xD8AE, + 28450 - 19968: 0xF9D3, + 28451 - 19968: 0xD5FE, + 28459 - 19968: 0xD8BC, + 28460 - 19968: 0xF2B0, + 28465 - 19968: 0xE2AB, + 28466 - 19968: 0xF3E8, + 28472 - 19968: 0xEFC2, + 28479 - 19968: 0xEDEC, + 28481 - 19968: 0xE7B8, + 28497 - 19968: 0xDAFE, + 28500 - 19968: 0xCCBE, + 28503 - 19968: 0xF2FC, + 28504 - 19968: 0xDAEB, + 28506 - 19968: 0xE2D8, + 28507 - 19968: 0xEDD6, + 28510 - 19968: 0xD6D1, + 28511 - 19968: 0xE0B3, + 28514 - 19968: 0xFCD2, + 28516 - 19968: 0xEBC8, + 28525 - 19968: 0xD3C1, + 28526 - 19968: 0xF0CD, + 28528 - 19968: 0xCFF7, + 28538 - 19968: 0xEDD2, + 28540 - 19968: 0xD4D8, + 28541 - 19968: 0xDCC9, + 28542 - 19968: 0xD7F1, + 28545 - 19968: 0xDFBB, + 28548 - 19968: 0xF3A5, + 28552 - 19968: 0xF4CD, + 28557 - 19968: 0xF1BF, + 28558 - 19968: 0xF8B1, + 28560 - 19968: 0xE9FA, + 28564 - 19968: 0xFBCB, + 28567 - 19968: 0xCAD5, + 28579 - 19968: 0xF9D4, + 28580 - 19968: 0xF7CA, + 28583 - 19968: 0xD6C8, + 28590 - 19968: 0xFCE8, + 28591 - 19968: 0xF3BD, + 28593 - 19968: 0xEEFE, + 28595 - 19968: 0xE7FE, + 28601 - 19968: 0xD3C2, + 28606 - 19968: 0xD3B6, + 28608 - 19968: 0xCCAD, + 28609 - 19968: 0xF6FA, + 28610 - 19968: 0xD6B2, + 28611 - 19968: 0xD2D8, + 28618 - 19968: 0xE7D8, + 28629 - 19968: 0xE3A5, + 28634 - 19968: 0xE7B9, + 28639 - 19968: 0xF0AD, + 28640 - 19968: 0xFBCC, + 28641 - 19968: 0xEBA1, + 28644 - 19968: 0xD4A6, + 28649 - 19968: 0xFBCD, + 28651 - 19968: 0xD5BD, + 28652 - 19968: 0xF1DF, + 28655 - 19968: 0xF6FB, + 28657 - 19968: 0xDEB4, + 28670 - 19968: 0xD5EB, + 28673 - 19968: 0xE5C8, + 28677 - 19968: 0xFBA4, + 28678 - 19968: 0xD4B9, + 28681 - 19968: 0xDEE1, + 28683 - 19968: 0xE4A3, + 28687 - 19968: 0xD7B7, + 28689 - 19968: 0xF8EE, + 28693 - 19968: 0xDEB5, + 28696 - 19968: 0xD6D2, + 28698 - 19968: 0xF9D5, + 28699 - 19968: 0xE7BA, + 28700 - 19968: 0xEBD5, + 28701 - 19968: 0xD5F7, + 28702 - 19968: 0xEFE7, + 28703 - 19968: 0xE1BE, + 28707 - 19968: 0xFAAE, + 28711 - 19968: 0xD6E9, + 28712 - 19968: 0xD6EE, + 28719 - 19968: 0xE7BB, + 28727 - 19968: 0xECCB, + 28734 - 19968: 0xD5B3, + 28748 - 19968: 0xCEB4, + 28752 - 19968: 0xFBA5, + 28753 - 19968: 0xE1EE, + 28760 - 19968: 0xF7A8, + 28765 - 19968: 0xFBCE, + 28771 - 19968: 0xD8BD, + 28779 - 19968: 0xFBFD, + 28784 - 19968: 0xFCE9, + 28792 - 19968: 0xCFB6, + 28796 - 19968: 0xEDC7, + 28797 - 19968: 0xEEAC, + 28805 - 19968: 0xCCDD, + 28810 - 19968: 0xF6A7, + 28814 - 19968: 0xE6FA, + 28818 - 19968: 0xF5A4, + 28824 - 19968: 0xFDDC, + 28825 - 19968: 0xEDB3, + 28826 - 19968: 0xCEC9, + 28833 - 19968: 0xEFE8, + 28836 - 19968: 0xE1BF, + 28843 - 19968: 0xFADB, + 28844 - 19968: 0xCBE3, + 28845 - 19968: 0xF7A9, + 28847 - 19968: 0xFBA6, + 28851 - 19968: 0xDCB9, + 28855 - 19968: 0xF1C0, + 28856 - 19968: 0xEDC8, + 28857 - 19968: 0xEFC3, + 28872 - 19968: 0xD6AD, + 28875 - 19968: 0xFDCE, + 28879 - 19968: 0xE8A1, + 28888 - 19968: 0xFBF4, + 28889 - 19968: 0xD5A7, + 28893 - 19968: 0xF1F6, + 28895 - 19968: 0xE6D3, + 28913 - 19968: 0xCCDE, + 28921 - 19968: 0xF8B2, + 28925 - 19968: 0xDCEB, + 28932 - 19968: 0xFDB6, + 28937 - 19968: 0xE5EA, + 28940 - 19968: 0xF1E0, + 28953 - 19968: 0xDBCC, + 28954 - 19968: 0xDDCD, + 28958 - 19968: 0xD4C8, + 28961 - 19968: 0xD9ED, + 28966 - 19968: 0xF5A5, + 28976 - 19968: 0xE6FB, + 28982 - 19968: 0xE6D4, + 28999 - 19968: 0xFDC8, + 29001 - 19968: 0xD6A1, + 29002 - 19968: 0xFDBF, + 29004 - 19968: 0xFCD3, + 29006 - 19968: 0xEFA1, + 29008 - 19968: 0xE7BC, + 29014 - 19968: 0xD1EE, + 29017 - 19968: 0xE6D5, + 29020 - 19968: 0xE9F2, + 29022 - 19968: 0xDFB0, + 29028 - 19968: 0xD8E0, + 29029 - 19968: 0xFCBA, + 29030 - 19968: 0xFDAF, + 29031 - 19968: 0xF0CE, + 29033 - 19968: 0xDBE1, + 29036 - 19968: 0xE5C9, + 29038 - 19968: 0xEDB4, + 29053 - 19968: 0xE0C3, + 29060 - 19968: 0xE3D8, + 29065 - 19968: 0xE9FB, + 29066 - 19968: 0xEAA8, + 29071 - 19968: 0xFDB7, + 29074 - 19968: 0xFBA7, + 29076 - 19968: 0xE9C2, + 29081 - 19968: 0xFDF7, + 29087 - 19968: 0xE2D9, + 29090 - 19968: 0xDCEC, + 29100 - 19968: 0xE8A2, + 29105 - 19968: 0xE6F0, + 29113 - 19968: 0xFDF8, + 29114 - 19968: 0xFDF9, + 29118 - 19968: 0xF6BF, + 29121 - 19968: 0xE7A7, + 29123 - 19968: 0xE6D7, + 29128 - 19968: 0xD4F3, + 29129 - 19968: 0xD4C9, + 29134 - 19968: 0xD6FA, + 29136 - 19968: 0xD7F2, + 29138 - 19968: 0xE1C0, + 29140 - 19968: 0xDBE2, + 29141 - 19968: 0xE6D8, + 29151 - 19968: 0xE7BD, + 29157 - 19968: 0xF0CF, + 29158 - 19968: 0xF3BE, + 29159 - 19968: 0xE2AC, + 29165 - 19968: 0xF5B7, + 29166 - 19968: 0xE0F0, + 29179 - 19968: 0xFDB8, + 29180 - 19968: 0xE3E8, + 29182 - 19968: 0xD4A7, + 29183 - 19968: 0xE8FC, + 29184 - 19968: 0xFAD2, + 29190 - 19968: 0xF8EF, + 29200 - 19968: 0xD6D3, + 29211 - 19968: 0xD5B4, + 29226 - 19968: 0xF0D0, + 29228 - 19968: 0xF7F0, + 29229 - 19968: 0xEEB3, + 29232 - 19968: 0xEABA, + 29234 - 19968: 0xEAD3, + 29237 - 19968: 0xEDC9, + 29238 - 19968: 0xDDAB, + 29242 - 19968: 0xE5AC, + 29243 - 19968: 0xFDA1, + 29245 - 19968: 0xDFD0, + 29246 - 19968: 0xECB3, + 29248 - 19968: 0xDFD1, + 29254 - 19968: 0xEDED, + 29255 - 19968: 0xF8B8, + 29256 - 19968: 0xF7FA, + 29260 - 19968: 0xF8AB, + 29266 - 19968: 0xF4E0, + 29272 - 19968: 0xD4BA, + 29273 - 19968: 0xE4B3, + 29275 - 19968: 0xE9DA, + 29277 - 19968: 0xDEB6, + 29279 - 19968: 0xD9BF, + 29281 - 19968: 0xD9C0, + 29282 - 19968: 0xD6EF, + 29287 - 19968: 0xD9CC, + 29289 - 19968: 0xDAAA, + 29298 - 19968: 0xDFE5, + 29305 - 19968: 0xF7E5, + 29309 - 19968: 0xCCB2, + 29312 - 19968: 0xDFF9, + 29313 - 19968: 0xD7E0, + 29346 - 19968: 0xD4BB, + 29351 - 19968: 0xFDFA, + 29356 - 19968: 0xCCB3, + 29359 - 19968: 0xDBF3, + 29376 - 19968: 0xDFD2, + 29378 - 19968: 0xCECA, + 29380 - 19968: 0xEEDA, + 29390 - 19968: 0xE4E4, + 29392 - 19968: 0xFBCF, + 29399 - 19968: 0xCFB7, + 29401 - 19968: 0xEEC3, + 29409 - 19968: 0xCEEA, + 29417 - 19968: 0xE2AD, + 29432 - 19968: 0xD7E1, + 29433 - 19968: 0xFAF5, + 29436 - 19968: 0xD5C9, + 29437 - 19968: 0xF8AC, + 29450 - 19968: 0xE7D9, + 29462 - 19968: 0xF3E9, + 29467 - 19968: 0xD8ED, + 29468 - 19968: 0xE3C4, + 29469 - 19968: 0xF0F1, + 29477 - 19968: 0xE8E5, + 29481 - 19968: 0xE0FA, + 29482 - 19968: 0xEEC4, + 29483 - 19968: 0xD9DE, + 29494 - 19968: 0xEBA2, + 29495 - 19968: 0xEBA3, + 29502 - 19968: 0xFCC2, + 29503 - 19968: 0xEABB, + 29508 - 19968: 0xE8AB, + 29509 - 19968: 0xDEE2, + 29520 - 19968: 0xEDEF, + 29522 - 19968: 0xE8A3, + 29527 - 19968: 0xCFF1, + 29544 - 19968: 0xD4BC, + 29546 - 19968: 0xFCEA, + 29552 - 19968: 0xE7BE, + 29554 - 19968: 0xFCF2, + 29557 - 19968: 0xD6B4, + 29560 - 19968: 0xE2AE, + 29562 - 19968: 0xD3B7, + 29563 - 19968: 0xFACC, + 29572 - 19968: 0xFADC, + 29574 - 19968: 0xEDB5, + 29575 - 19968: 0xE1E3, + 29577 - 19968: 0xE8AC, + 29579 - 19968: 0xE8DD, + 29582 - 19968: 0xEFE9, + 29588 - 19968: 0xF4BD, + 29590 - 19968: 0xCFB8, + 29591 - 19968: 0xE9DB, + 29592 - 19968: 0xD1AC, + 29599 - 19968: 0xDAC7, + 29607 - 19968: 0xEBC9, + 29609 - 19968: 0xE8CC, + 29613 - 19968: 0xDEB7, + 29618 - 19968: 0xD6BC, + 29619 - 19968: 0xD3E5, + 29625 - 19968: 0xFADD, + 29632 - 19968: 0xDAD6, + 29634 - 19968: 0xCAB1, + 29641 - 19968: 0xDAC8, + 29642 - 19968: 0xDFA6, + 29644 - 19968: 0xF9B3, + 29645 - 19968: 0xF2D2, + 29647 - 19968: 0xCAC4, + 29654 - 19968: 0xCECB, + 29657 - 19968: 0xCDF5, + 29661 - 19968: 0xFDB0, + 29662 - 19968: 0xD5A8, + 29664 - 19968: 0xF1C1, + 29667 - 19968: 0xE2E9, + 29668 - 19968: 0xDCCA, + 29669 - 19968: 0xECB4, + 29670 - 19968: 0xFAC0, + 29673 - 19968: 0xFBA8, + 29674 - 19968: 0xD0A8, + 29677 - 19968: 0xDAEC, + 29687 - 19968: 0xD9EE, + 29689 - 19968: 0xE0FB, + 29693 - 19968: 0xEFEA, + 29694 - 19968: 0xFADE, + 29697 - 19968: 0xE0C4, + 29699 - 19968: 0xCFB9, + 29701 - 19968: 0xD5CA, + 29702 - 19968: 0xD7E2, + 29703 - 19968: 0xE2AF, + 29705 - 19968: 0xD7B8, + 29715 - 19968: 0xE8CD, + 29723 - 19968: 0xF6DA, + 29728 - 19968: 0xEFA2, + 29729 - 19968: 0xE2DA, + 29730 - 19968: 0xF6FC, + 29733 - 19968: 0xFBD0, + 29734 - 19968: 0xD1AD, + 29736 - 19968: 0xCDE4, + 29738 - 19968: 0xD1AE, + 29739 - 19968: 0xDCED, + 29740 - 19968: 0xE8CE, + 29742 - 19968: 0xF0F9, + 29743 - 19968: 0xCEB5, + 29744 - 19968: 0xE6FC, + 29747 - 19968: 0xD7FB, + 29748 - 19968: 0xD0D6, + 29749 - 19968: 0xDDF5, + 29750 - 19968: 0xF7F1, + 29752 - 19968: 0xF6FD, + 29754 - 19968: 0xDBF7, + 29759 - 19968: 0xFBEA, + 29760 - 19968: 0xE9DC, + 29761 - 19968: 0xD9C1, + 29763 - 19968: 0xF5F2, + 29764 - 19968: 0xE0C5, + 29771 - 19968: 0xEAD4, + 29781 - 19968: 0xF9C2, + 29783 - 19968: 0xEABC, + 29785 - 19968: 0xD2C5, + 29786 - 19968: 0xFBD1, + 29787 - 19968: 0xE7C0, + 29788 - 19968: 0xEBA5, + 29790 - 19968: 0xDFFA, + 29791 - 19968: 0xE3A2, + 29792 - 19968: 0xD7B9, + 29794 - 19968: 0xE9C3, + 29796 - 19968: 0xE8FD, + 29797 - 19968: 0xE8AF, + 29800 - 19968: 0xF2D3, + 29801 - 19968: 0xFBA9, + 29802 - 19968: 0xD8A5, + 29807 - 19968: 0xD5CB, + 29822 - 19968: 0xD0C8, + 29826 - 19968: 0xD1AF, + 29827 - 19968: 0xD7E3, + 29831 - 19968: 0xE0C6, + 29833 - 19968: 0xD6A2, + 29835 - 19968: 0xEDF0, + 29848 - 19968: 0xD7F3, + 29852 - 19968: 0xFCD4, + 29854 - 19968: 0xDAD7, + 29855 - 19968: 0xCCDF, + 29857 - 19968: 0xF2D4, + 29859 - 19968: 0xD1B0, + 29861 - 19968: 0xCCE0, + 29863 - 19968: 0xDBFD, + 29864 - 19968: 0xF3BF, + 29866 - 19968: 0xF0D1, + 29872 - 19968: 0xFCBB, + 29874 - 19968: 0xE2B0, + 29877 - 19968: 0xE6A5, + 29881 - 19968: 0xE2DB, + 29885 - 19968: 0xDFDE, + 29887 - 19968: 0xE0C7, + 29894 - 19968: 0xF2EF, + 29898 - 19968: 0xCCE1, + 29903 - 19968: 0xD6EA, + 29908 - 19968: 0xE7C2, + 29912 - 19968: 0xCEB6, + 29914 - 19968: 0xF3C0, + 29916 - 19968: 0xCDFE, + 29920 - 19968: 0xFBD2, + 29922 - 19968: 0xF8F8, + 29923 - 19968: 0xF7FB, + 29926 - 19968: 0xE8BF, + 29934 - 19968: 0xE8B7, + 29943 - 19968: 0xEDB6, + 29953 - 19968: 0xDCBA, + 29956 - 19968: 0xCCB4, + 29969 - 19968: 0xF1F7, + 29973 - 19968: 0xE8B8, + 29976 - 19968: 0xCAF6, + 29978 - 19968: 0xE4A4, + 29979 - 19968: 0xF4D6, + 29983 - 19968: 0xDFE6, + 29987 - 19968: 0xDFA7, + 29989 - 19968: 0xDFE7, + 29990 - 19968: 0xE1C1, + 29992 - 19968: 0xE9C4, + 29995 - 19968: 0xDCCB, + 29996 - 19968: 0xE9C5, + 30000 - 19968: 0xEFA3, + 30001 - 19968: 0xEBA6, + 30002 - 19968: 0xCBA3, + 30003 - 19968: 0xE3E9, + 30007 - 19968: 0xD1FB, + 30008 - 19968: 0xEFA4, + 30010 - 19968: 0xEFEB, + 30023 - 19968: 0xD0B4, + 30028 - 19968: 0xCDA3, + 30031 - 19968: 0xE8E6, + 30033 - 19968: 0xEFA5, + 30035 - 19968: 0xD3CC, + 30036 - 19968: 0xDAED, + 30041 - 19968: 0xD7BA, + 30043 - 19968: 0xF2D5, + 30044 - 19968: 0xF5E5, + 30045 - 19968: 0xD9EF, + 30050 - 19968: 0xF9B4, + 30053 - 19968: 0xD5D4, + 30054 - 19968: 0xFDCF, + 30058 - 19968: 0xDBE3, + 30063 - 19968: 0xF1E1, + 30064 - 19968: 0xECB6, + 30069 - 19968: 0xFBFE, + 30070 - 19968: 0xD3D7, + 30072 - 19968: 0xD1B1, + 30074 - 19968: 0xCBB1, + 30079 - 19968: 0xD1B2, + 30086 - 19968: 0xCBB2, + 30087 - 19968: 0xF1C2, + 30090 - 19968: 0xF4E1, + 30091 - 19968: 0xF9B5, + 30094 - 19968: 0xE1C3, + 30095 - 19968: 0xE1C2, + 30097 - 19968: 0xEBF7, + 30109 - 19968: 0xDFA8, + 30117 - 19968: 0xCBCA, + 30123 - 19968: 0xE6B9, + 30129 - 19968: 0xF8DE, + 30130 - 19968: 0xF9AA, + 30131 - 19968: 0xCAF7, + 30133 - 19968: 0xEDB7, + 30136 - 19968: 0xD3B8, + 30137 - 19968: 0xF2D6, + 30140 - 19968: 0xD4D9, + 30141 - 19968: 0xEEC5, + 30142 - 19968: 0xF2F0, + 30146 - 19968: 0xCAB2, + 30149 - 19968: 0xDCBB, + 30151 - 19968: 0xF1F8, + 30157 - 19968: 0xECB7, + 30162 - 19968: 0xE5CA, + 30164 - 19968: 0xF6C0, + 30165 - 19968: 0xFDDD, + 30168 - 19968: 0xD4E3, + 30169 - 19968: 0xCCE2, + 30171 - 19968: 0xF7D4, + 30178 - 19968: 0xD7E5, + 30192 - 19968: 0xD3C3, + 30194 - 19968: 0xD8A6, + 30196 - 19968: 0xF6C1, + 30202 - 19968: 0xDDF6, + 30204 - 19968: 0xCDC0, + 30208 - 19968: 0xE5DC, + 30221 - 19968: 0xE5CB, + 30233 - 19968: 0xE1C4, + 30239 - 19968: 0xE8B0, + 30240 - 19968: 0xF4B0, + 30241 - 19968: 0xF3EA, + 30242 - 19968: 0xDAEE, + 30244 - 19968: 0xD7BB, + 30246 - 19968: 0xE2B1, + 30267 - 19968: 0xD7AA, + 30274 - 19968: 0xD6FB, + 30284 - 19968: 0xE4DF, + 30286 - 19968: 0xCAD6, + 30290 - 19968: 0xEBA8, + 30294 - 19968: 0xDBFE, + 30305 - 19968: 0xF6C2, + 30308 - 19968: 0xEFBB, + 30313 - 19968: 0xD4FD, + 30316 - 19968: 0xE0C8, + 30320 - 19968: 0xE8B9, + 30322 - 19968: 0xEFA6, + 30328 - 19968: 0xCDA4, + 30331 - 19968: 0xD4F4, + 30332 - 19968: 0xDBA1, + 30333 - 19968: 0xDBDC, + 30334 - 19968: 0xDBDD, + 30340 - 19968: 0xEEDC, + 30342 - 19968: 0xCBCB, + 30343 - 19968: 0xFCD5, + 30350 - 19968: 0xCEEB, + 30352 - 19968: 0xCDC1, + 30355 - 19968: 0xFBD3, + 30382 - 19968: 0xF9AB, + 30394 - 19968: 0xF5D4, + 30399 - 19968: 0xD9A9, + 30402 - 19968: 0xE9DD, + 30403 - 19968: 0xDBCD, + 30406 - 19968: 0xDDCE, + 30408 - 19968: 0xE7C3, + 30410 - 19968: 0xECCC, + 30418 - 19968: 0xF9EC, + 30422 - 19968: 0xCBCC, + 30427 - 19968: 0xE0FC, + 30428 - 19968: 0xD4A8, + 30430 - 19968: 0xEDD3, + 30431 - 19968: 0xD8EF, + 30433 - 19968: 0xF2D7, + 30435 - 19968: 0xCAF8, + 30436 - 19968: 0xDAEF, + 30439 - 19968: 0xD6D4, + 30446 - 19968: 0xD9CD, + 30450 - 19968: 0xD8EE, + 30452 - 19968: 0xF2C1, + 30456 - 19968: 0xDFD3, + 30460 - 19968: 0xDAF0, + 30462 - 19968: 0xE2EA, + 30465 - 19968: 0xE0FD, + 30468 - 19968: 0xD8F8, + 30472 - 19968: 0xF7AF, + 30473 - 19968: 0xDAB6, + 30475 - 19968: 0xCAD7, + 30494 - 19968: 0xF2D8, + 30496 - 19968: 0xD8F9, + 30505 - 19968: 0xFADF, + 30519 - 19968: 0xCFEF, + 30520 - 19968: 0xD9C2, + 30522 - 19968: 0xF0D2, + 30524 - 19968: 0xE4D1, + 30528 - 19968: 0xF3B7, + 30541 - 19968: 0xFAE0, + 30555 - 19968: 0xEFEC, + 30561 - 19968: 0xE2B2, + 30563 - 19968: 0xD4BD, + 30566 - 19968: 0xD9CE, + 30571 - 19968: 0xF4E2, + 30585 - 19968: 0xD4A9, + 30590 - 19968: 0xCDC2, + 30591 - 19968: 0xE7DA, + 30603 - 19968: 0xF2D9, + 30609 - 19968: 0xD9AA, + 30622 - 19968: 0xD8BE, + 30629 - 19968: 0xDCAD, + 30636 - 19968: 0xE2EB, + 30637 - 19968: 0xD6FC, + 30640 - 19968: 0xCAF9, + 30643 - 19968: 0xD4DA, + 30651 - 19968: 0xF4D7, + 30652 - 19968: 0xCCA1, + 30655 - 19968: 0xCFBA, + 30679 - 19968: 0xF5B8, + 30683 - 19968: 0xD9C3, + 30684 - 19968: 0xD0E8, + 30690 - 19968: 0xE3C5, + 30691 - 19968: 0xEBF8, + 30693 - 19968: 0xF2B1, + 30697 - 19968: 0xCFBB, + 30701 - 19968: 0xD3AD, + 30702 - 19968: 0xE8E1, + 30703 - 19968: 0xCEEC, + 30707 - 19968: 0xE0B4, + 30722 - 19968: 0xDEE3, + 30738 - 19968: 0xDDF7, + 30757 - 19968: 0xF2B2, + 30758 - 19968: 0xF3F6, + 30759 - 19968: 0xF6DB, + 30764 - 19968: 0xD7FE, + 30770 - 19968: 0xF8DF, + 30772 - 19968: 0xF7F2, + 30789 - 19968: 0xD0A9, + 30799 - 19968: 0xE6DA, + 30813 - 19968: 0xF5A6, + 30827 - 19968: 0xD7BC, + 30828 - 19968: 0xCCE3, + 30831 - 19968: 0xE6DB, + 30844 - 19968: 0xDDDD, + 30849 - 19968: 0xD1B3, + 30855 - 19968: 0xEFED, + 30860 - 19968: 0xD6DE, + 30861 - 19968: 0xE4F4, + 30862 - 19968: 0xE1EF, + 30865 - 19968: 0xDDF8, + 30871 - 19968: 0xE8CF, + 30883 - 19968: 0xCAE5, + 30887 - 19968: 0xDCA1, + 30889 - 19968: 0xE0B5, + 30906 - 19968: 0xFCAC, + 30907 - 19968: 0xFCAD, + 30908 - 19968: 0xD8A7, + 30913 - 19968: 0xEDB8, + 30917 - 19968: 0xDBB6, + 30922 - 19968: 0xD6F0, + 30923 - 19968: 0xF3AF, + 30926 - 19968: 0xCDA5, + 30928 - 19968: 0xDAF1, + 30952 - 19968: 0xD8A8, + 30956 - 19968: 0xCCE4, + 30959 - 19968: 0xD1B4, + 30965 - 19968: 0xCAD8, + 30971 - 19968: 0xDAF2, + 30977 - 19968: 0xF5A7, + 30990 - 19968: 0xF5A8, + 30998 - 19968: 0xE6A6, + 31018 - 19968: 0xD5EC, + 31019 - 19968: 0xD5F8, + 31020 - 19968: 0xDAF3, + 31034 - 19968: 0xE3C6, + 31038 - 19968: 0xDEE4, + 31040 - 19968: 0xDEE5, + 31041 - 19968: 0xD1B5, + 31047 - 19968: 0xD1B6, + 31048 - 19968: 0xD1B7, + 31049 - 19968: 0xF2B3, + 31056 - 19968: 0xE9DE, + 31062 - 19968: 0xF0D3, + 31063 - 19968: 0xF2B4, + 31066 - 19968: 0xF0D4, + 31067 - 19968: 0xCBE4, + 31068 - 19968: 0xFBD4, + 31069 - 19968: 0xF5E6, + 31070 - 19968: 0xE3EA, + 31072 - 19968: 0xDEE6, + 31077 - 19968: 0xDFD4, + 31080 - 19968: 0xF8F9, + 31085 - 19968: 0xF0AE, + 31098 - 19968: 0xD1B8, + 31103 - 19968: 0xD6DF, + 31105 - 19968: 0xD0D7, + 31117 - 19968: 0xFCA1, + 31118 - 19968: 0xEFEE, + 31119 - 19968: 0xDCD8, + 31121 - 19968: 0xE9DF, + 31142 - 19968: 0xE5DD, + 31143 - 19968: 0xFDFB, + 31146 - 19968: 0xE0C9, + 31150 - 19968: 0xD6C9, + 31153 - 19968: 0xD4AA, + 31155 - 19968: 0xE5CC, + 31161 - 19968: 0xE9E0, + 31165 - 19968: 0xD0D8, + 31166 - 19968: 0xFCA2, + 31167 - 19968: 0xD4BE, + 31168 - 19968: 0xE2B3, + 31169 - 19968: 0xDEE7, + 31177 - 19968: 0xDCBC, + 31178 - 19968: 0xD2B6, + 31179 - 19968: 0xF5D5, + 31185 - 19968: 0xCEA1, + 31186 - 19968: 0xF5A9, + 31189 - 19968: 0xDDF9, + 31192 - 19968: 0xDDFA, + 31199 - 19968: 0xF0D5, + 31204 - 19968: 0xF6DF, + 31206 - 19968: 0xF2DA, + 31207 - 19968: 0xE4EB, + 31209 - 19968: 0xF2F1, + 31227 - 19968: 0xECB9, + 31232 - 19968: 0xFDFC, + 31237 - 19968: 0xE1AA, + 31240 - 19968: 0xCAD9, + 31243 - 19968: 0xEFEF, + 31245 - 19968: 0xF5AA, + 31252 - 19968: 0xECF9, + 31255 - 19968: 0xF8AD, + 31257 - 19968: 0xF2C2, + 31258 - 19968: 0xF6C3, + 31260 - 19968: 0xD7D2, + 31263 - 19968: 0xF9A2, + 31264 - 19968: 0xF0D6, + 31278 - 19968: 0xF0FA, + 31281 - 19968: 0xF6E0, + 31286 - 19968: 0xE9F3, + 31287 - 19968: 0xF2C3, + 31291 - 19968: 0xD4AB, + 31292 - 19968: 0xCAB3, + 31293 - 19968: 0xCDA6, + 31295 - 19968: 0xCDC3, + 31296 - 19968: 0xCDDA, + 31302 - 19968: 0xD9CF, + 31305 - 19968: 0xF6C4, + 31309 - 19968: 0xEEDD, + 31310 - 19968: 0xE7C4, + 31319 - 19968: 0xE2B4, + 31329 - 19968: 0xDFE2, + 31330 - 19968: 0xE7DB, + 31337 - 19968: 0xE8B1, + 31339 - 19968: 0xFCAE, + 31344 - 19968: 0xE5CD, + 31348 - 19968: 0xFAEB, + 31350 - 19968: 0xCFBC, + 31353 - 19968: 0xCFE2, + 31354 - 19968: 0xCDF6, + 31357 - 19968: 0xEFF0, + 31359 - 19968: 0xF4BE, + 31361 - 19968: 0xD4CD, + 31364 - 19968: 0xF3B8, + 31368 - 19968: 0xE9A1, + 31378 - 19968: 0xF2F2, + 31379 - 19968: 0xF3EB, + 31381 - 19968: 0xF0D7, + 31384 - 19968: 0xCFD7, + 31391 - 19968: 0xCFDF, + 31401 - 19968: 0xE8C0, + 31402 - 19968: 0xE8C1, + 31406 - 19968: 0xCFE3, + 31407 - 19968: 0xE9A2, + 31418 - 19968: 0xD0AA, + 31428 - 19968: 0xF3C1, + 31429 - 19968: 0xD0AB, + 31431 - 19968: 0xD4E4, + 31434 - 19968: 0xEFBC, + 31435 - 19968: 0xD8A1, + 31447 - 19968: 0xD9DF, + 31449 - 19968: 0xF3D7, + 31453 - 19968: 0xDCBD, + 31455 - 19968: 0xCCE5, + 31456 - 19968: 0xEDF1, + 31459 - 19968: 0xF1E2, + 31461 - 19968: 0xD4DB, + 31466 - 19968: 0xE2B5, + 31469 - 19968: 0xCAE6, + 31471 - 19968: 0xD3AE, + 31478 - 19968: 0xCCE6, + 31481 - 19968: 0xF1D3, + 31482 - 19968: 0xF5E7, + 31487 - 19968: 0xCADA, + 31503 - 19968: 0xFBEE, + 31505 - 19968: 0xE1C5, + 31513 - 19968: 0xDFE9, + 31515 - 19968: 0xEEDE, + 31518 - 19968: 0xF7C2, + 31520 - 19968: 0xD8A2, + 31526 - 19968: 0xDDAC, + 31532 - 19968: 0xF0AF, + 31533 - 19968: 0xD6BD, + 31545 - 19968: 0xE1AB, + 31558 - 19968: 0xF9B6, + 31561 - 19968: 0xD4F5, + 31563 - 19968: 0xD0C9, + 31564 - 19968: 0xEFA7, + 31565 - 19968: 0xE2EC, + 31567 - 19968: 0xDBEA, + 31568 - 19968: 0xCECC, + 31569 - 19968: 0xF5E8, + 31570 - 19968: 0xF7D5, + 31572 - 19968: 0xD3CD, + 31574 - 19968: 0xF3FE, + 31584 - 19968: 0xD0B5, + 31596 - 19968: 0xE0FE, + 31598 - 19968: 0xDFFB, + 31605 - 19968: 0xE6DD, + 31613 - 19968: 0xE8A4, + 31623 - 19968: 0xCBCD, + 31627 - 19968: 0xEFA8, + 31631 - 19968: 0xEEB4, + 31636 - 19968: 0xDAD8, + 31637 - 19968: 0xD1B9, + 31639 - 19968: 0xDFA9, + 31642 - 19968: 0xF3B0, + 31645 - 19968: 0xCCC4, + 31649 - 19968: 0xCEB7, + 31661 - 19968: 0xEFA9, + 31665 - 19968: 0xDFD5, + 31668 - 19968: 0xEDD7, + 31672 - 19968: 0xEEC6, + 31680 - 19968: 0xEFBD, + 31681 - 19968: 0xFCD6, + 31684 - 19968: 0xDBF4, + 31686 - 19968: 0xEFAA, + 31687 - 19968: 0xF8B9, + 31689 - 19968: 0xF5E9, + 31698 - 19968: 0xE3D9, + 31712 - 19968: 0xE1C6, + 31716 - 19968: 0xD4BF, + 31721 - 19968: 0xDEE8, + 31751 - 19968: 0xF0EA, + 31762 - 19968: 0xF3C2, + 31774 - 19968: 0xD3AF, + 31777 - 19968: 0xCADB, + 31783 - 19968: 0xFCD7, + 31786 - 19968: 0xEDD8, + 31787 - 19968: 0xE1C7, + 31805 - 19968: 0xF4D8, + 31806 - 19968: 0xD6B3, + 31807 - 19968: 0xDDAD, + 31811 - 19968: 0xD5BE, + 31820 - 19968: 0xF1C3, + 31821 - 19968: 0xEEDF, + 31840 - 19968: 0xD6EB, + 31844 - 19968: 0xF4D9, + 31852 - 19968: 0xD7E6, + 31859 - 19968: 0xDAB7, + 31875 - 19968: 0xDDFB, + 31881 - 19968: 0xDDCF, + 31890 - 19968: 0xD8A3, + 31893 - 19968: 0xDAD9, + 31895 - 19968: 0xF0D8, + 31896 - 19968: 0xEFC4, + 31903 - 19968: 0xE1D8, + 31909 - 19968: 0xF1D4, + 31911 - 19968: 0xEDF2, + 31918 - 19968: 0xD5DB, + 31921 - 19968: 0xD5DC, + 31922 - 19968: 0xF3C4, + 31923 - 19968: 0xCBD7, + 31929 - 19968: 0xE2B6, + 31934 - 19968: 0xEFF1, + 31946 - 19968: 0xFBD5, + 31958 - 19968: 0xD3D8, + 31966 - 19968: 0xDDD0, + 31967 - 19968: 0xF0D9, + 31968 - 19968: 0xCBB3, + 31975 - 19968: 0xD5DD, + 31995 - 19968: 0xCDA7, + 31998 - 19968: 0xD0AC, + 32000 - 19968: 0xD1BA, + 32002 - 19968: 0xF1C4, + 32004 - 19968: 0xE5B3, + 32005 - 19968: 0xFBF5, + 32006 - 19968: 0xE9E1, + 32007 - 19968: 0xFDE0, + 32008 - 19968: 0xFCBC, + 32010 - 19968: 0xDAA2, + 32011 - 19968: 0xDAA3, + 32013 - 19968: 0xD2A1, + 32016 - 19968: 0xD2EF, + 32020 - 19968: 0xE2ED, + 32023 - 19968: 0xDEE9, + 32024 - 19968: 0xCEDC, + 32025 - 19968: 0xF2B5, + 32026 - 19968: 0xD0E4, + 32027 - 19968: 0xDDD1, + 32032 - 19968: 0xE1C8, + 32033 - 19968: 0xDBB7, + 32034 - 19968: 0xDFE3, + 32043 - 19968: 0xEDB9, + 32044 - 19968: 0xF1C5, + 32046 - 19968: 0xF3CF, + 32047 - 19968: 0xD7AB, + 32048 - 19968: 0xE1AC, + 32051 - 19968: 0xE3EB, + 32053 - 19968: 0xEEC7, + 32057 - 19968: 0xE1C9, + 32058 - 19968: 0xCAFA, + 32066 - 19968: 0xF0FB, + 32067 - 19968: 0xFAE1, + 32068 - 19968: 0xF0DA, + 32069 - 19968: 0xCCE7, + 32070 - 19968: 0xDAF4, + 32080 - 19968: 0xCCBF, + 32094 - 19968: 0xCEED, + 32097 - 19968: 0xD5A9, + 32098 - 19968: 0xFAE2, + 32102 - 19968: 0xD0E5, + 32104 - 19968: 0xEBD6, + 32106 - 19968: 0xECDF, + 32110 - 19968: 0xDFFC, + 32113 - 19968: 0xF7D6, + 32114 - 19968: 0xDEEA, + 32115 - 19968: 0xCBB4, + 32118 - 19968: 0xEFBE, + 32121 - 19968: 0xCCB5, + 32127 - 19968: 0xCFBD, + 32142 - 19968: 0xEFF2, + 32143 - 19968: 0xE2B7, + 32147 - 19968: 0xCCE8, + 32156 - 19968: 0xF0FC, + 32160 - 19968: 0xD6E0, + 32162 - 19968: 0xF1C6, + 32172 - 19968: 0xE2B8, + 32173 - 19968: 0xEBAB, + 32177 - 19968: 0xCBB5, + 32178 - 19968: 0xD8D1, + 32180 - 19968: 0xF4CE, + 32181 - 19968: 0xF3F7, + 32184 - 19968: 0xD7C6, + 32186 - 19968: 0xD1BB, + 32187 - 19968: 0xF7AA, + 32189 - 19968: 0xEDCA, + 32190 - 19968: 0xD7D3, + 32191 - 19968: 0xD8FA, + 32199 - 19968: 0xF6C5, + 32202 - 19968: 0xD1CC, + 32203 - 19968: 0xDDFC, + 32214 - 19968: 0xDFFD, + 32216 - 19968: 0xF9E5, + 32218 - 19968: 0xE0CA, + 32221 - 19968: 0xF2FD, + 32222 - 19968: 0xD3B0, + 32224 - 19968: 0xF4F3, + 32225 - 19968: 0xDAC9, + 32227 - 19968: 0xE6DE, + 32232 - 19968: 0xF8BA, + 32233 - 19968: 0xE8D0, + 32236 - 19968: 0xD8FB, + 32239 - 19968: 0xEAD5, + 32244 - 19968: 0xD6A3, + 32251 - 19968: 0xF6C6, + 32265 - 19968: 0xF2DB, + 32266 - 19968: 0xE4FC, + 32277 - 19968: 0xE8B2, + 32283 - 19968: 0xDADA, + 32285 - 19968: 0xF2DC, + 32286 - 19968: 0xFBD6, + 32287 - 19968: 0xE9B2, + 32289 - 19968: 0xEEAD, + 32291 - 19968: 0xFAE3, + 32299 - 19968: 0xDCEE, + 32302 - 19968: 0xF5EA, + 32303 - 19968: 0xE6E0, + 32305 - 19968: 0xF0FD, + 32311 - 19968: 0xD7AC, + 32317 - 19968: 0xF5C5, + 32318 - 19968: 0xEEE0, + 32321 - 19968: 0xDBE5, + 32323 - 19968: 0xDDDE, + 32326 - 19968: 0xD9F0, + 32327 - 19968: 0xE9A3, + 32338 - 19968: 0xF1F9, + 32340 - 19968: 0xF2C4, + 32341 - 19968: 0xE0CB, + 32350 - 19968: 0xE9A4, + 32353 - 19968: 0xE2B9, + 32361 - 19968: 0xE3B1, + 32362 - 19968: 0xFCEB, + 32363 - 19968: 0xCDA8, + 32365 - 19968: 0xCCB6, + 32368 - 19968: 0xF0DB, + 32377 - 19968: 0xE6BA, + 32380 - 19968: 0xCDA9, + 32386 - 19968: 0xF3C3, + 32396 - 19968: 0xE1D9, + 32399 - 19968: 0xEFAB, + 32403 - 19968: 0xE7C5, + 32406 - 19968: 0xE0E9, + 32408 - 19968: 0xF3C5, + 32411 - 19968: 0xD4C0, + 32412 - 19968: 0xD5BF, + 32566 - 19968: 0xDDAE, + 32568 - 19968: 0xF9FC, + 32570 - 19968: 0xCCC0, + 32588 - 19968: 0xE5A2, + 32592 - 19968: 0xCEB8, + 32596 - 19968: 0xD8D2, + 32597 - 19968: 0xF9D6, + 32618 - 19968: 0xF1AA, + 32619 - 19968: 0xCED1, + 32622 - 19968: 0xF6C7, + 32624 - 19968: 0xDBEB, + 32626 - 19968: 0xDFFE, + 32629 - 19968: 0xD8E1, + 32631 - 19968: 0xF7F3, + 32633 - 19968: 0xD7E7, + 32645 - 19968: 0xD4FE, + 32648 - 19968: 0xD1BC, + 32650 - 19968: 0xE5CF, + 32652 - 19968: 0xCBB6, + 32654 - 19968: 0xDAB8, + 32660 - 19968: 0xCDC4, + 32666 - 19968: 0xD6BE, + 32670 - 19968: 0xE2BA, + 32676 - 19968: 0xCFD8, + 32680 - 19968: 0xE0CC, + 32681 - 19968: 0xEBF9, + 32690 - 19968: 0xFDFD, + 32696 - 19968: 0xD7E8, + 32697 - 19968: 0xCBD8, + 32701 - 19968: 0xE9E2, + 32705 - 19968: 0xE8BA, + 32709 - 19968: 0xE3C7, + 32714 - 19968: 0xECCD, + 32716 - 19968: 0xECCE, + 32718 - 19968: 0xD6BF, + 32722 - 19968: 0xE3A7, + 32724 - 19968: 0xDFD6, + 32725 - 19968: 0xFDE8, + 32735 - 19968: 0xEEE1, + 32736 - 19968: 0xF6A8, + 32737 - 19968: 0xDDFD, + 32745 - 19968: 0xF8BB, + 32747 - 19968: 0xE8D1, + 32752 - 19968: 0xF9D7, + 32761 - 19968: 0xCEEE, + 32764 - 19968: 0xECCF, + 32768 - 19968: 0xE9A5, + 32769 - 19968: 0xD6D5, + 32771 - 19968: 0xCDC5, + 32773 - 19968: 0xEDBA, + 32774 - 19968: 0xD1BD, + 32777 - 19968: 0xCFBE, + 32780 - 19968: 0xECBB, + 32784 - 19968: 0xD2B1, + 32789 - 19968: 0xCCE9, + 32791 - 19968: 0xD9C4, + 32792 - 19968: 0xE9FC, + 32813 - 19968: 0xD1BE, + 32819 - 19968: 0xECBC, + 32822 - 19968: 0xE5AD, + 32829 - 19968: 0xF7B0, + 32831 - 19968: 0xCCEA, + 32835 - 19968: 0xD3C4, + 32838 - 19968: 0xD6C0, + 32842 - 19968: 0xD6FD, + 32854 - 19968: 0xE1A1, + 32856 - 19968: 0xDEBD, + 32858 - 19968: 0xF6A9, + 32862 - 19968: 0xDAA4, + 32879 - 19968: 0xD6A4, + 32880 - 19968: 0xF5C6, + 32882 - 19968: 0xE1A2, + 32883 - 19968: 0xE9C6, + 32887 - 19968: 0xF2C5, + 32893 - 19968: 0xF4E9, + 32894 - 19968: 0xD6EC, + 32895 - 19968: 0xEBD3, + 32900 - 19968: 0xECBD, + 32901 - 19968: 0xE2DC, + 32902 - 19968: 0xDEEB, + 32903 - 19968: 0xF0DC, + 32905 - 19968: 0xEBBF, + 32907 - 19968: 0xD7CE, + 32908 - 19968: 0xD1BF, + 32918 - 19968: 0xF5AB, + 32923 - 19968: 0xF9FD, + 32925 - 19968: 0xCADC, + 32929 - 19968: 0xCDC6, + 32930 - 19968: 0xF2B6, + 32933 - 19968: 0xDDFE, + 32937 - 19968: 0xCCB7, + 32938 - 19968: 0xDBB8, + 32943 - 19968: 0xD0E9, + 32945 - 19968: 0xCEDD, + 32946 - 19968: 0xEBC0, + 32948 - 19968: 0xFDA2, + 32954 - 19968: 0xF8CB, + 32963 - 19968: 0xEAD6, + 32964 - 19968: 0xF1B0, + 32972 - 19968: 0xDBCE, + 32974 - 19968: 0xF7C3, + 32986 - 19968: 0xDBCF, + 32987 - 19968: 0xCBA4, + 32990 - 19968: 0xF8E0, + 32993 - 19968: 0xFBD7, + 32996 - 19968: 0xEBCA, + 32997 - 19968: 0xE0A1, + 33009 - 19968: 0xCECD, + 33012 - 19968: 0xD4DC, + 33016 - 19968: 0xFDD8, + 33021 - 19968: 0xD2F6, + 33026 - 19968: 0xF2B7, + 33029 - 19968: 0xFAF6, + 33030 - 19968: 0xF6AA, + 33031 - 19968: 0xFAF7, + 33032 - 19968: 0xD8E6, + 33034 - 19968: 0xF4B1, + 33048 - 19968: 0xE8D2, + 33050 - 19968: 0xCAC5, + 33051 - 19968: 0xCCEB, + 33059 - 19968: 0xE2EE, + 33065 - 19968: 0xE2BB, + 33067 - 19968: 0xF7AD, + 33071 - 19968: 0xF8E1, + 33081 - 19968: 0xF3EC, + 33086 - 19968: 0xDEA1, + 33099 - 19968: 0xE4FD, + 33102 - 19968: 0xE3EC, + 33104 - 19968: 0xDDAF, + 33105 - 19968: 0xDDB0, + 33108 - 19968: 0xCBB7, + 33109 - 19968: 0xE8D3, + 33125 - 19968: 0xE1A3, + 33126 - 19968: 0xD2E0, + 33131 - 19968: 0xF0FE, + 33136 - 19968: 0xE9A6, + 33137 - 19968: 0xCBF2, + 33144 - 19968: 0xEDF3, + 33145 - 19968: 0xDCD9, + 33146 - 19968: 0xE0CD, + 33151 - 19968: 0xF7DA, + 33152 - 19968: 0xDBB9, + 33160 - 19968: 0xCCAE, + 33162 - 19968: 0xDADB, + 33167 - 19968: 0xCDC7, + 33178 - 19968: 0xDDB1, + 33180 - 19968: 0xD8AF, + 33181 - 19968: 0xE3A3, + 33184 - 19968: 0xCEEF, + 33187 - 19968: 0xF2F3, + 33192 - 19968: 0xF8B3, + 33203 - 19968: 0xE0CE, + 33205 - 19968: 0xF5FD, + 33210 - 19968: 0xEBEC, + 33213 - 19968: 0xD3C5, + 33214 - 19968: 0xFCEC, + 33215 - 19968: 0xD2DB, + 33216 - 19968: 0xD4EB, + 33218 - 19968: 0xDEA2, + 33222 - 19968: 0xE5E6, + 33229 - 19968: 0xF0B0, + 33240 - 19968: 0xD5C4, + 33247 - 19968: 0xEDF4, + 33251 - 19968: 0xE3ED, + 33253 - 19968: 0xE8C2, + 33255 - 19968: 0xEDF5, + 33256 - 19968: 0xD7FC, + 33258 - 19968: 0xEDBB, + 33261 - 19968: 0xF6AB, + 33267 - 19968: 0xF2B8, + 33268 - 19968: 0xF6C8, + 33274 - 19968: 0xD3E6, + 33275 - 19968: 0xF2DD, + 33276 - 19968: 0xCFBF, + 33278 - 19968: 0xEBAC, + 33285 - 19968: 0xCFC0, + 33287 - 19968: 0xE6A8, + 33288 - 19968: 0xFDE9, + 33290 - 19968: 0xCFC1, + 33292 - 19968: 0xE0DF, + 33293 - 19968: 0xDEEC, + 33298 - 19968: 0xE0A2, + 33307 - 19968: 0xF4BF, + 33308 - 19968: 0xE2EF, + 33310 - 19968: 0xD9F1, + 33311 - 19968: 0xF1C7, + 33313 - 19968: 0xCBB8, + 33322 - 19968: 0xF9FE, + 33323 - 19968: 0xDBBA, + 33324 - 19968: 0xDAF5, + 33333 - 19968: 0xF6EC, + 33334 - 19968: 0xDADC, + 33335 - 19968: 0xFAE4, + 33337 - 19968: 0xE0CF, + 33344 - 19968: 0xDDB2, + 33349 - 19968: 0xE6A9, + 33351 - 19968: 0xEFF3, + 33369 - 19968: 0xF3ED, + 33380 - 19968: 0xEBFA, + 33382 - 19968: 0xF9E6, + 33390 - 19968: 0xCADD, + 33391 - 19968: 0xD5DE, + 33393 - 19968: 0xCADE, + 33394 - 19968: 0xDFE4, + 33398 - 19968: 0xE6FD, + 33400 - 19968: 0xF5AC, + 33406 - 19968: 0xE4F5, + 33419 - 19968: 0xE9E3, + 33421 - 19968: 0xEDCB, + 33422 - 19968: 0xCFE4, + 33426 - 19968: 0xD8D3, + 33433 - 19968: 0xDDB3, + 33434 - 19968: 0xD4EC, + 33437 - 19968: 0xF2B9, + 33439 - 19968: 0xDFB7, + 33445 - 19968: 0xCBCE, + 33446 - 19968: 0xFBD8, + 33449 - 19968: 0xD0D9, + 33452 - 19968: 0xDDD2, + 33453 - 19968: 0xF7F4, + 33454 - 19968: 0xE7DC, + 33455 - 19968: 0xE4A5, + 33457 - 19968: 0xFCA3, + 33459 - 19968: 0xDBBB, + 33463 - 19968: 0xF2BA, + 33464 - 19968: 0xE9FD, + 33465 - 19968: 0xD0CA, + 33467 - 19968: 0xF5D6, + 33468 - 19968: 0xD9C5, + 33469 - 19968: 0xE4B4, + 33471 - 19968: 0xEDA7, + 33489 - 19968: 0xEABD, + 33490 - 19968: 0xE6FE, + 33492 - 19968: 0xF7C4, + 33493 - 19968: 0xF5AD, + 33495 - 19968: 0xD9E0, + 33499 - 19968: 0xCAB4, + 33502 - 19968: 0xF8E2, + 33503 - 19968: 0xCFC2, + 33505 - 19968: 0xECBE, + 33509 - 19968: 0xE5B4, + 33510 - 19968: 0xCDC8, + 33511 - 19968: 0xEEC8, + 33521 - 19968: 0xE7C8, + 33533 - 19968: 0xCDC9, + 33534 - 19968: 0xF9B7, + 33537 - 19968: 0xF1E8, + 33538 - 19968: 0xD9F2, + 33539 - 19968: 0xDBF5, + 33540 - 19968: 0xCAB5, + 33541 - 19968: 0xD9C6, + 33545 - 19968: 0xD8C9, + 33559 - 19968: 0xD9AB, + 33576 - 19968: 0xEDBC, + 33579 - 19968: 0xD8D4, + 33583 - 19968: 0xDCDA, + 33585 - 19968: 0xE2BC, + 33588 - 19968: 0xFCED, + 33589 - 19968: 0xECE0, + 33590 - 19968: 0xD2FE, + 33592 - 19968: 0xE9C7, + 33593 - 19968: 0xE6AA, + 33600 - 19968: 0xE2F0, + 33607 - 19968: 0xFABB, + 33609 - 19968: 0xF5AE, + 33610 - 19968: 0xFBAA, + 33615 - 19968: 0xECFB, + 33617 - 19968: 0xECBF, + 33618 - 19968: 0xFCD8, + 33651 - 19968: 0xD4E5, + 33655 - 19968: 0xF9C3, + 33659 - 19968: 0xEEE2, + 33673 - 19968: 0xD7E9, + 33674 - 19968: 0xEDF6, + 33678 - 19968: 0xDEED, + 33686 - 19968: 0xCCEC, + 33688 - 19968: 0xE3EE, + 33694 - 19968: 0xE8D4, + 33698 - 19968: 0xFAF8, + 33705 - 19968: 0xDDB4, + 33706 - 19968: 0xE4B5, + 33707 - 19968: 0xD8B0, + 33725 - 19968: 0xD8D5, + 33729 - 19968: 0xF4EA, + 33733 - 19968: 0xCEB9, + 33737 - 19968: 0xD6E1, + 33738 - 19968: 0xCFD2, + 33740 - 19968: 0xD0B6, + 33747 - 19968: 0xCEA2, + 33750 - 19968: 0xF3EE, + 33756 - 19968: 0xF3F8, + 33769 - 19968: 0xDCCC, + 33771 - 19968: 0xD0CB, + 33775 - 19968: 0xFCA4, + 33776 - 19968: 0xCDCA, + 33777 - 19968: 0xD7D4, + 33778 - 19968: 0xDEA3, + 33780 - 19968: 0xE4E0, + 33785 - 19968: 0xEEC9, + 33789 - 19968: 0xE2DD, + 33795 - 19968: 0xF5FE, + 33796 - 19968: 0xD4AC, + 33802 - 19968: 0xD5D1, + 33804 - 19968: 0xD8F0, + 33805 - 19968: 0xF8C3, + 33806 - 19968: 0xEAD7, + 33833 - 19968: 0xF5D7, + 33836 - 19968: 0xD8BF, + 33841 - 19968: 0xFDC0, + 33848 - 19968: 0xEBAD, + 33853 - 19968: 0xD5AA, + 33865 - 19968: 0xE7A8, + 33879 - 19968: 0xEECA, + 33883 - 19968: 0xCAE7, + 33889 - 19968: 0xF8E3, + 33891 - 19968: 0xD4DD, + 33894 - 19968: 0xEAD8, + 33899 - 19968: 0xFBD9, + 33900 - 19968: 0xEDF7, + 33903 - 19968: 0xE5B5, + 33909 - 19968: 0xD0AD, + 33914 - 19968: 0xF1F1, + 33936 - 19968: 0xE2BD, + 33940 - 19968: 0xE3C8, + 33945 - 19968: 0xD9D5, + 33948 - 19968: 0xDFAA, + 33953 - 19968: 0xDBBC, + 33970 - 19968: 0xF8E4, + 33976 - 19968: 0xF1FA, + 33979 - 19968: 0xE5B6, + 33980 - 19968: 0xF3EF, + 33983 - 19968: 0xFBDA, + 33984 - 19968: 0xE1E0, + 33986 - 19968: 0xD9AC, + 33988 - 19968: 0xF5EB, + 33990 - 19968: 0xE0B6, + 33993 - 19968: 0xE9C8, + 33995 - 19968: 0xCBCF, + 33997 - 19968: 0xE3C9, + 34001 - 19968: 0xDEEE, + 34010 - 19968: 0xE2BE, + 34028 - 19968: 0xDCEF, + 34030 - 19968: 0xD6A5, + 34036 - 19968: 0xE2F1, + 34044 - 19968: 0xD6FE, + 34065 - 19968: 0xD9A1, + 34067 - 19968: 0xD8C0, + 34068 - 19968: 0xDCDB, + 34071 - 19968: 0xEDBD, + 34072 - 19968: 0xDFB8, + 34074 - 19968: 0xEAA5, + 34078 - 19968: 0xD7AD, + 34081 - 19968: 0xF3F9, + 34083 - 19968: 0xEDF8, + 34085 - 19968: 0xF5C7, + 34092 - 19968: 0xE1CA, + 34093 - 19968: 0xEBE3, + 34095 - 19968: 0xF2DE, + 34109 - 19968: 0xF8CC, + 34111 - 19968: 0xEAD9, + 34113 - 19968: 0xD3C6, + 34115 - 19968: 0xDBE6, + 34121 - 19968: 0xF5AF, + 34126 - 19968: 0xCEF0, + 34131 - 19968: 0xE9FE, + 34137 - 19968: 0xFBB6, + 34147 - 19968: 0xE2F2, + 34152 - 19968: 0xCFF2, + 34153 - 19968: 0xF7B9, + 34154 - 19968: 0xD9F3, + 34157 - 19968: 0xE1CB, + 34180 - 19968: 0xDADD, + 34183 - 19968: 0xDAB9, + 34191 - 19968: 0xEBFB, + 34193 - 19968: 0xCBB9, + 34196 - 19968: 0xEDF9, + 34203 - 19968: 0xE0E0, + 34214 - 19968: 0xF4C0, + 34216 - 19968: 0xFDBC, + 34217 - 19968: 0xDFB1, + 34218 - 19968: 0xE3EF, + 34223 - 19968: 0xE0A3, + 34224 - 19968: 0xFDB9, + 34234 - 19968: 0xF0B1, + 34241 - 19968: 0xCDCB, + 34249 - 19968: 0xEDBE, + 34253 - 19968: 0xD5C0, + 34254 - 19968: 0xE3F0, + 34255 - 19968: 0xEDFA, + 34261 - 19968: 0xE9E4, + 34268 - 19968: 0xD5ED, + 34269 - 19968: 0xE7DD, + 34276 - 19968: 0xD4F6, + 34277 - 19968: 0xE5B7, + 34281 - 19968: 0xDBE7, + 34282 - 19968: 0xE2BF, + 34295 - 19968: 0xEECB, + 34298 - 19968: 0xD7F4, + 34299 - 19968: 0xF0DD, + 34303 - 19968: 0xCEAB, + 34306 - 19968: 0xE7DE, + 34310 - 19968: 0xD6D6, + 34311 - 19968: 0xE1CC, + 34314 - 19968: 0xE8B3, + 34326 - 19968: 0xE5EE, + 34327 - 19968: 0xDCA2, + 34330 - 19968: 0xE0D0, + 34349 - 19968: 0xD5B5, + 34367 - 19968: 0xD5A1, + 34382 - 19968: 0xFBDB, + 34384 - 19968: 0xF9CB, + 34388 - 19968: 0xCBF3, + 34389 - 19968: 0xF4A5, + 34395 - 19968: 0xFAC8, + 34396 - 19968: 0xD6D7, + 34398 - 19968: 0xE9E5, + 34399 - 19968: 0xFBDC, + 34407 - 19968: 0xFDD0, + 34425 - 19968: 0xFBF6, + 34442 - 19968: 0xDAA5, + 34444 - 19968: 0xDBBD, + 34451 - 19968: 0xECE2, + 34467 - 19968: 0xCDF7, + 34468 - 19968: 0xF0DE, + 34473 - 19968: 0xF6C9, + 34503 - 19968: 0xDEEF, + 34507 - 19968: 0xD3B1, + 34516 - 19968: 0xFCEE, + 34521 - 19968: 0xE8C3, + 34523 - 19968: 0xF1C8, + 34527 - 19968: 0xCEF1, + 34532 - 19968: 0xF9ED, + 34541 - 19968: 0xF2F4, + 34558 - 19968: 0xE4B6, + 34560 - 19968: 0xF5B9, + 34562 - 19968: 0xDCF0, + 34563 - 19968: 0xE3F1, + 34568 - 19968: 0xE8A5, + 34584 - 19968: 0xF2BB, + 34586 - 19968: 0xDEA4, + 34588 - 19968: 0xDACC, + 34638 - 19968: 0xCAE9, + 34645 - 19968: 0xE3DA, + 34647 - 19968: 0xFCD9, + 34655 - 19968: 0xEADA, + 34662 - 19968: 0xF9C4, + 34664 - 19968: 0xE3A4, + 34676 - 19968: 0xFBDD, + 34678 - 19968: 0xEFCA, + 34680 - 19968: 0xE8C4, + 34690 - 19968: 0xD5CC, + 34701 - 19968: 0xEBD7, + 34719 - 19968: 0xD9AD, + 34722 - 19968: 0xFBAB, + 34739 - 19968: 0xD3D9, + 34746 - 19968: 0xD5A2, + 34756 - 19968: 0xF6DE, + 34784 - 19968: 0xDAF6, + 34796 - 19968: 0xE0D1, + 34799 - 19968: 0xE9A8, + 34802 - 19968: 0xF5F9, + 34809 - 19968: 0xFAAF, + 34811 - 19968: 0xEBFC, + 34814 - 19968: 0xE0EA, + 34821 - 19968: 0xE3B2, + 34847 - 19968: 0xD5C5, + 34850 - 19968: 0xF1E3, + 34851 - 19968: 0xD5EE, + 34865 - 19968: 0xCDCC, + 34870 - 19968: 0xEDD9, + 34875 - 19968: 0xD8C1, + 34880 - 19968: 0xFAEC, + 34886 - 19968: 0xF1EB, + 34892 - 19968: 0xFABC, + 34893 - 19968: 0xE6E2, + 34898 - 19968: 0xFAE5, + 34899 - 19968: 0xE2FA, + 34903 - 19968: 0xCAB6, + 34905 - 19968: 0xE4B7, + 34907 - 19968: 0xEADB, + 34909 - 19968: 0xF5FA, + 34913 - 19968: 0xFBAC, + 34914 - 19968: 0xCFC3, + 34915 - 19968: 0xEBFD, + 34920 - 19968: 0xF8FA, + 34923 - 19968: 0xDFB9, + 34928 - 19968: 0xE1F1, + 34930 - 19968: 0xD2A4, + 34935 - 19968: 0xF5FB, + 34942 - 19968: 0xD0DA, + 34943 - 19968: 0xD0DB, + 34945 - 19968: 0xEABE, + 34946 - 19968: 0xD9B1, + 34952 - 19968: 0xCAB7, + 34955 - 19968: 0xD3E7, + 34957 - 19968: 0xF8E5, + 34962 - 19968: 0xD3B2, + 34966 - 19968: 0xE2C0, + 34967 - 19968: 0xF2DF, + 34974 - 19968: 0xCDE5, + 34987 - 19968: 0xF9AC, + 34996 - 19968: 0xCDCD, + 35009 - 19968: 0xEEAE, + 35010 - 19968: 0xD6AE, + 35023 - 19968: 0xD7EA, + 35028 - 19968: 0xE7E0, + 35029 - 19968: 0xEBAE, + 35033 - 19968: 0xCFD9, + 35036 - 19968: 0xDCCD, + 35037 - 19968: 0xEDFB, + 35039 - 19968: 0xDEF0, + 35041 - 19968: 0xD7EB, + 35048 - 19968: 0xDEA5, + 35059 - 19968: 0xDFD7, + 35060 - 19968: 0xDBD0, + 35061 - 19968: 0xDBD1, + 35064 - 19968: 0xD5A3, + 35069 - 19968: 0xF0B2, + 35079 - 19968: 0xDCDC, + 35088 - 19968: 0xCAE8, + 35090 - 19968: 0xF8E6, + 35091 - 19968: 0xDCCE, + 35096 - 19968: 0xEADC, + 35097 - 19968: 0xDBD2, + 35109 - 19968: 0xE9B3, + 35114 - 19968: 0xF7DB, + 35126 - 19968: 0xE3A8, + 35128 - 19968: 0xD7AE, + 35131 - 19968: 0xE0E1, + 35137 - 19968: 0xCBBA, + 35140 - 19968: 0xE5D1, + 35167 - 19968: 0xD0DC, + 35172 - 19968: 0xD5C1, + 35178 - 19968: 0xD8CA, + 35186 - 19968: 0xE3A9, + 35199 - 19968: 0xE0A4, + 35201 - 19968: 0xE9A9, + 35203 - 19968: 0xD3C7, + 35206 - 19968: 0xDCDD, + 35207 - 19968: 0xF8AE, + 35211 - 19968: 0xCCB8, + 35215 - 19968: 0xD0AE, + 35219 - 19968: 0xD8F2, + 35222 - 19968: 0xE3CA, + 35233 - 19968: 0xCCAF, + 35241 - 19968: 0xD4AD, + 35242 - 19968: 0xF6D1, + 35250 - 19968: 0xD0CC, + 35258 - 19968: 0xCAC6, + 35261 - 19968: 0xD5C2, + 35264 - 19968: 0xCEBA, + 35282 - 19968: 0xCAC7, + 35299 - 19968: 0xFAB0, + 35316 - 19968: 0xDFD8, + 35320 - 19968: 0xF5BA, + 35328 - 19968: 0xE5EB, + 35330 - 19968: 0xEFF4, + 35331 - 19968: 0xDDB5, + 35336 - 19968: 0xCDAA, + 35338 - 19968: 0xE3F2, + 35340 - 19968: 0xFBF7, + 35342 - 19968: 0xF7D0, + 35347 - 19968: 0xFDBA, + 35350 - 19968: 0xFDE1, + 35351 - 19968: 0xF6FE, + 35352 - 19968: 0xD1C0, + 35355 - 19968: 0xE8C5, + 35357 - 19968: 0xE4B8, + 35359 - 19968: 0xE1E8, + 35363 - 19968: 0xCCC1, + 35365 - 19968: 0xD2ED, + 35370 - 19968: 0xDBBE, + 35373 - 19968: 0xE0E2, + 35377 - 19968: 0xFAC9, + 35380 - 19968: 0xE1CD, + 35382 - 19968: 0xCAB8, + 35386 - 19968: 0xF2E0, + 35387 - 19968: 0xF1C9, + 35408 - 19968: 0xDEF1, + 35412 - 19968: 0xF0DF, + 35413 - 19968: 0xF8C4, + 35419 - 19968: 0xEECC, + 35422 - 19968: 0xDEF2, + 35424 - 19968: 0xE7C9, + 35426 - 19968: 0xE2F3, + 35427 - 19968: 0xE7E1, + 35430 - 19968: 0xE3CB, + 35433 - 19968: 0xE3CC, + 35437 - 19968: 0xCFF8, + 35438 - 19968: 0xEFAC, + 35440 - 19968: 0xFDFE, + 35441 - 19968: 0xFCA5, + 35442 - 19968: 0xFAB1, + 35443 - 19968: 0xDFD9, + 35445 - 19968: 0xE0D2, + 35449 - 19968: 0xF4DA, + 35461 - 19968: 0xF1CA, + 35463 - 19968: 0xCEA3, + 35468 - 19968: 0xF2BC, + 35469 - 19968: 0xECE3, + 35475 - 19968: 0xE0A5, + 35477 - 19968: 0xF7AB, + 35480 - 19968: 0xEBAF, + 35486 - 19968: 0xE5DE, + 35488 - 19968: 0xE1A4, + 35489 - 19968: 0xCDAB, + 35491 - 19968: 0xD9F4, + 35492 - 19968: 0xE8A6, + 35493 - 19968: 0xCDCE, + 35494 - 19968: 0xE1E9, + 35496 - 19968: 0xFCEF, + 35498 - 19968: 0xE0E3, + 35504 - 19968: 0xE2C1, + 35506 - 19968: 0xCEA4, + 35513 - 19968: 0xDEA6, + 35516 - 19968: 0xEBFE, + 35518 - 19968: 0xEBDD, + 35519 - 19968: 0xF0E0, + 35522 - 19968: 0xF4DB, + 35524 - 19968: 0xE2F4, + 35527 - 19968: 0xD3C8, + 35531 - 19968: 0xF4EB, + 35533 - 19968: 0xEEB5, + 35535 - 19968: 0xF5D8, + 35538 - 19968: 0xD5DF, + 35542 - 19968: 0xD6E5, + 35547 - 19968: 0xEBB0, + 35548 - 19968: 0xF4E3, + 35553 - 19968: 0xE3CD, + 35558 - 19968: 0xF4F4, + 35559 - 19968: 0xFAB2, + 35562 - 19968: 0xEFF5, + 35563 - 19968: 0xCADF, + 35565 - 19968: 0xEBB1, + 35566 - 19968: 0xEDBF, + 35569 - 19968: 0xFDC9, + 35574 - 19968: 0xE4A6, + 35575 - 19968: 0xF9A4, + 35576 - 19968: 0xF0B3, + 35578 - 19968: 0xE5EC, + 35582 - 19968: 0xD1E7, + 35584 - 19968: 0xD9C7, + 35585 - 19968: 0xE4D7, + 35586 - 19968: 0xEADD, + 35588 - 19968: 0xD4F7, + 35598 - 19968: 0xDABA, + 35600 - 19968: 0xDACD, + 35604 - 19968: 0xF9CC, + 35606 - 19968: 0xE1DA, + 35607 - 19968: 0xDBBF, + 35609 - 19968: 0xCCC5, + 35610 - 19968: 0xECD0, + 35611 - 19968: 0xCBBB, + 35613 - 19968: 0xDEF3, + 35616 - 19968: 0xE9AA, + 35624 - 19968: 0xD9C8, + 35627 - 19968: 0xEEE3, + 35628 - 19968: 0xD7BD, + 35635 - 19968: 0xCFC4, + 35641 - 19968: 0xD0CD, + 35649 - 19968: 0xFCA6, + 35657 - 19968: 0xF1FB, + 35662 - 19968: 0xFDD2, + 35663 - 19968: 0xD1C1, + 35672 - 19968: 0xE3DB, + 35674 - 19968: 0xD3C9, + 35676 - 19968: 0xDCCF, + 35686 - 19968: 0xCCED, + 35692 - 19968: 0xDEA7, + 35695 - 19968: 0xE6BB, + 35696 - 19968: 0xECA1, + 35700 - 19968: 0xCCB9, + 35703 - 19968: 0xFBDE, + 35709 - 19968: 0xE7E2, + 35712 - 19968: 0xD4C1, + 35722 - 19968: 0xDCA8, + 35728 - 19968: 0xE2C2, + 35730 - 19968: 0xF3D8, + 35731 - 19968: 0xE5D3, + 35734 - 19968: 0xF3D9, + 35738 - 19968: 0xF3C6, + 35895 - 19968: 0xCDDB, + 35903 - 19968: 0xCDAC, + 35905 - 19968: 0xFCC3, + 35910 - 19968: 0xD4E7, + 35912 - 19968: 0xD1C2, + 35914 - 19968: 0xF9A5, + 35916 - 19968: 0xE8D5, + 35925 - 19968: 0xE3CE, + 35930 - 19968: 0xD4CA, + 35937 - 19968: 0xDFDA, + 35946 - 19968: 0xFBDF, + 35947 - 19968: 0xE7E3, + 35961 - 19968: 0xF8FB, + 35962 - 19968: 0xE3CF, + 35970 - 19968: 0xF5B0, + 35978 - 19968: 0xD8E7, + 35980 - 19968: 0xD9C9, + 35997 - 19968: 0xF8AF, + 35998 - 19968: 0xEFF6, + 36000 - 19968: 0xDDB6, + 36001 - 19968: 0xEEAF, + 36002 - 19968: 0xCDF8, + 36007 - 19968: 0xDEB8, + 36008 - 19968: 0xFCA7, + 36009 - 19968: 0xF7FC, + 36010 - 19968: 0xF7B1, + 36011 - 19968: 0xCEBB, + 36012 - 19968: 0xF4A1, + 36015 - 19968: 0xEECD, + 36016 - 19968: 0xE1AE, + 36019 - 19968: 0xECC3, + 36020 - 19968: 0xCFFE, + 36022 - 19968: 0xF8BF, + 36023 - 19968: 0xD8E2, + 36024 - 19968: 0xD3E8, + 36027 - 19968: 0xDEA8, + 36028 - 19968: 0xF4E4, + 36029 - 19968: 0xECC2, + 36031 - 19968: 0xD9F5, + 36032 - 19968: 0xF9C5, + 36033 - 19968: 0xDDD3, + 36034 - 19968: 0xD6F1, + 36035 - 19968: 0xECFC, + 36036 - 19968: 0xFCF0, + 36039 - 19968: 0xEDC0, + 36040 - 19968: 0xCAB9, + 36042 - 19968: 0xEEE4, + 36049 - 19968: 0xF2E1, + 36051 - 19968: 0xDEB9, + 36058 - 19968: 0xD6F2, + 36060 - 19968: 0xDEF4, + 36062 - 19968: 0xDFDB, + 36064 - 19968: 0xDBD3, + 36066 - 19968: 0xFAE7, + 36067 - 19968: 0xD8E3, + 36068 - 19968: 0xF4C1, + 36070 - 19968: 0xDDB7, + 36074 - 19968: 0xF2F5, + 36077 - 19968: 0xD4AE, + 36084 - 19968: 0xD6F3, + 36091 - 19968: 0xDDB8, + 36092 - 19968: 0xCFC5, + 36093 - 19968: 0xDFDF, + 36100 - 19968: 0xF2BE, + 36101 - 19968: 0xF6A1, + 36103 - 19968: 0xEBCB, + 36104 - 19968: 0xF1FC, + 36106 - 19968: 0xF3C7, + 36109 - 19968: 0xE0EB, + 36115 - 19968: 0xEDFC, + 36118 - 19968: 0xE1DB, + 36196 - 19968: 0xEEE5, + 36198 - 19968: 0xDEF5, + 36203 - 19968: 0xFAD3, + 36208 - 19968: 0xF1CB, + 36211 - 19968: 0xD0AF, + 36212 - 19968: 0xDDB9, + 36215 - 19968: 0xD1C3, + 36229 - 19968: 0xF5B1, + 36234 - 19968: 0xEAC6, + 36249 - 19968: 0xF0E1, + 36259 - 19968: 0xF6AC, + 36264 - 19968: 0xF5D9, + 36275 - 19968: 0xF0EB, + 36282 - 19968: 0xDDBA, + 36286 - 19968: 0xF2BF, + 36294 - 19968: 0xF7C5, + 36299 - 19968: 0xDBA2, + 36300 - 19968: 0xF2F6, + 36303 - 19968: 0xCABA, + 36315 - 19968: 0xF7F5, + 36317 - 19968: 0xCBE5, + 36321 - 19968: 0xEEE6, + 36323 - 19968: 0xE0D3, + 36328 - 19968: 0xCEA5, + 36335 - 19968: 0xD6D8, + 36339 - 19968: 0xD4AF, + 36362 - 19968: 0xE9C9, + 36367 - 19968: 0xD3CE, + 36368 - 19968: 0xF4C2, + 36382 - 19968: 0xCBE6, + 36394 - 19968: 0xF1A1, + 36400 - 19968: 0xEBB2, + 36405 - 19968: 0xF1A2, + 36418 - 19968: 0xEBB3, + 36420 - 19968: 0xF0B4, + 36423 - 19968: 0xCBF4, + 36424 - 19968: 0xD4B0, + 36425 - 19968: 0xF3B2, + 36426 - 19968: 0xFBB7, + 36441 - 19968: 0xF5EC, + 36447 - 19968: 0xEEE7, + 36448 - 19968: 0xF4B2, + 36468 - 19968: 0xF5ED, + 36470 - 19968: 0xCFF3, + 36481 - 19968: 0xF0E2, + 36487 - 19968: 0xEECE, + 36490 - 19968: 0xF1CC, + 36493 - 19968: 0xE5B8, + 36522 - 19968: 0xD7F5, + 36523 - 19968: 0xE3F3, + 36524 - 19968: 0xCFE5, + 36544 - 19968: 0xCFC6, + 36554 - 19968: 0xF3B3, + 36555 - 19968: 0xE4D8, + 36556 - 19968: 0xCFF9, + 36557 - 19968: 0xCFDA, + 36562 - 19968: 0xFACD, + 36575 - 19968: 0xE6E3, + 36587 - 19968: 0xF2E2, + 36600 - 19968: 0xF5EE, + 36603 - 19968: 0xCABB, + 36606 - 19968: 0xE3DC, + 36611 - 19968: 0xCEF2, + 36613 - 19968: 0xD6D9, + 36617 - 19968: 0xEEB0, + 36626 - 19968: 0xF4E5, + 36627 - 19968: 0xD8C2, + 36628 - 19968: 0xDCD0, + 36629 - 19968: 0xCCEE, + 36635 - 19968: 0xD5E0, + 36636 - 19968: 0xF6CA, + 36637 - 19968: 0xFDCA, + 36638 - 19968: 0xD8D6, + 36639 - 19968: 0xF4CF, + 36646 - 19968: 0xD6A6, + 36647 - 19968: 0xDCBE, + 36649 - 19968: 0xDBD4, + 36650 - 19968: 0xD7C7, + 36655 - 19968: 0xF2FE, + 36659 - 19968: 0xF1CD, + 36664 - 19968: 0xE2C3, + 36665 - 19968: 0xDCDE, + 36667 - 19968: 0xDCDF, + 36670 - 19968: 0xEFAD, + 36671 - 19968: 0xE6AB, + 36676 - 19968: 0xF9DD, + 36677 - 19968: 0xEABF, + 36681 - 19968: 0xEFAE, + 36685 - 19968: 0xF4D0, + 36686 - 19968: 0xCEF3, + 36701 - 19968: 0xE6AC, + 36703 - 19968: 0xCEDE, + 36706 - 19968: 0xD5F9, + 36763 - 19968: 0xE3F4, + 36764 - 19968: 0xCDD0, + 36771 - 19968: 0xD5B8, + 36774 - 19968: 0xF7FD, + 36776 - 19968: 0xDCA9, + 36781 - 19968: 0xDEF6, + 36783 - 19968: 0xDCAA, + 36784 - 19968: 0xF2E3, + 36785 - 19968: 0xE9B4, + 36786 - 19968: 0xD2DC, + 36802 - 19968: 0xE9E6, + 36805 - 19968: 0xE3F6, + 36814 - 19968: 0xE7CA, + 36817 - 19968: 0xD0CE, + 36820 - 19968: 0xDAF7, + 36838 - 19968: 0xCABC, + 36842 - 19968: 0xEEE8, + 36843 - 19968: 0xDADE, + 36845 - 19968: 0xF2F7, + 36848 - 19968: 0xE2FB, + 36850 - 19968: 0xCCA6, + 36855 - 19968: 0xDABB, + 36857 - 19968: 0xEEE9, + 36861 - 19968: 0xF5DA, + 36864 - 19968: 0xF7DC, + 36865 - 19968: 0xE1EA, + 36866 - 19968: 0xCEC1, + 36867 - 19968: 0xD4B1, + 36869 - 19968: 0xFDB1, + 36870 - 19968: 0xE6BD, + 36872 - 19968: 0xFBAD, + 36875 - 19968: 0xF8E7, + 36877 - 19968: 0xE1CE, + 36879 - 19968: 0xF7E2, + 36880 - 19968: 0xF5EF, + 36881 - 19968: 0xCFC7, + 36884 - 19968: 0xD4B2, + 36885 - 19968: 0xCCEF, + 36887 - 19968: 0xD4E8, + 36889 - 19968: 0xEECF, + 36890 - 19968: 0xF7D7, + 36893 - 19968: 0xE0A6, + 36894 - 19968: 0xD6C1, + 36895 - 19968: 0xE1DC, + 36896 - 19968: 0xF0E3, + 36897 - 19968: 0xF1E4, + 36898 - 19968: 0xDCF1, + 36899 - 19968: 0xD6A7, + 36910 - 19968: 0xF4F5, + 36913 - 19968: 0xF1CE, + 36914 - 19968: 0xF2E4, + 36917 - 19968: 0xD0B0, + 36920 - 19968: 0xECEF, + 36924 - 19968: 0xF9BA, + 36926 - 19968: 0xEBB5, + 36929 - 19968: 0xD4ED, + 36930 - 19968: 0xE2C4, + 36935 - 19968: 0xE9E7, + 36938 - 19968: 0xEBB4, + 36939 - 19968: 0xEAA1, + 36941 - 19968: 0xF8BC, + 36942 - 19968: 0xCEA6, + 36944 - 19968: 0xF9C6, + 36945 - 19968: 0xFCDA, + 36947 - 19968: 0xD4B3, + 36948 - 19968: 0xD3B9, + 36949 - 19968: 0xEADE, + 36953 - 19968: 0xE9AB, + 36956 - 19968: 0xE1E1, + 36957 - 19968: 0xD3CF, + 36958 - 19968: 0xF4F6, + 36960 - 19968: 0xEAC0, + 36961 - 19968: 0xE1CF, + 36963 - 19968: 0xCCBA, + 36969 - 19968: 0xEEEA, + 36973 - 19968: 0xF0E4, + 36974 - 19968: 0xF3B4, + 36975 - 19968: 0xD4EE, + 36978 - 19968: 0xF2C0, + 36981 - 19968: 0xF1E5, + 36983 - 19968: 0xF4C3, + 36984 - 19968: 0xE0D4, + 36986 - 19968: 0xEBB6, + 36988 - 19968: 0xD7A1, + 36989 - 19968: 0xCBE8, + 36991 - 19968: 0xF9AD, + 36992 - 19968: 0xE9AD, + 36993 - 19968: 0xD8E4, + 36994 - 19968: 0xFAB3, + 36995 - 19968: 0xE2C5, + 36996 - 19968: 0xFCBD, + 36999 - 19968: 0xECC4, + 37000 - 19968: 0xD8B1, + 37002 - 19968: 0xDCAB, + 37007 - 19968: 0xD5A4, + 37009 - 19968: 0xEBE9, + 37013 - 19968: 0xE8BB, + 37017 - 19968: 0xD8D7, + 37026 - 19968: 0xFBAE, + 37027 - 19968: 0xD1E1, + 37030 - 19968: 0xDBC0, + 37032 - 19968: 0xF5BE, + 37034 - 19968: 0xDEF7, + 37039 - 19968: 0xCAFB, + 37040 - 19968: 0xF7C6, + 37041 - 19968: 0xCFC8, + 37045 - 19968: 0xE1D0, + 37048 - 19968: 0xEED0, + 37057 - 19968: 0xE9F4, + 37066 - 19968: 0xCEF4, + 37086 - 19968: 0xD5CD, + 37089 - 19968: 0xCFDB, + 37096 - 19968: 0xDDBB, + 37101 - 19968: 0xCEAC, + 37109 - 19968: 0xE9E8, + 37117 - 19968: 0xD4B4, + 37122 - 19968: 0xE4C7, + 37138 - 19968: 0xF5DB, + 37141 - 19968: 0xFAC1, + 37145 - 19968: 0xDEA9, + 37159 - 19968: 0xD4F8, + 37165 - 19968: 0xEFF7, + 37170 - 19968: 0xD3B3, + 37193 - 19968: 0xEBB7, + 37194 - 19968: 0xEFF8, + 37195 - 19968: 0xF5DC, + 37196 - 19968: 0xEDCC, + 37197 - 19968: 0xDBD5, + 37198 - 19968: 0xF1CF, + 37202 - 19968: 0xF1D0, + 37218 - 19968: 0xF5B2, + 37225 - 19968: 0xD9AE, + 37226 - 19968: 0xD5AC, + 37228 - 19968: 0xE2C6, + 37237 - 19968: 0xFDA3, + 37239 - 19968: 0xFBE5, + 37240 - 19968: 0xDFAB, + 37255 - 19968: 0xE2F5, + 37257 - 19968: 0xF6AD, + 37259 - 19968: 0xF5B3, + 37261 - 19968: 0xF0B5, + 37266 - 19968: 0xE1A5, + 37276 - 19968: 0xF5DD, + 37291 - 19968: 0xECA2, + 37292 - 19968: 0xEDFD, + 37294 - 19968: 0xF5B4, + 37295 - 19968: 0xFBB8, + 37297 - 19968: 0xDBA3, + 37300 - 19968: 0xD6CA, + 37301 - 19968: 0xCBD9, + 37312 - 19968: 0xE5D4, + 37319 - 19968: 0xF3FA, + 37321 - 19968: 0xEBB8, + 37323 - 19968: 0xE0B7, + 37324 - 19968: 0xD7EC, + 37325 - 19968: 0xF1EC, + 37326 - 19968: 0xE5AF, + 37327 - 19968: 0xD5E1, + 37328 - 19968: 0xD7ED, + 37329 - 19968: 0xD1D1, + 37335 - 19968: 0xE1F2, + 37336 - 19968: 0xEFF9, + 37340 - 19968: 0xDDBC, + 37341 - 19968: 0xF6DC, + 37347 - 19968: 0xF0E5, + 37351 - 19968: 0xF4C4, + 37354 - 19968: 0xE9E9, + 37365 - 19968: 0xF3FB, + 37389 - 19968: 0xD4EF, + 37392 - 19968: 0xCCA2, + 37393 - 19968: 0xF7FE, + 37394 - 19968: 0xDFBC, + 37399 - 19968: 0xEBCD, + 37406 - 19968: 0xD0B7, + 37428 - 19968: 0xD6C2, + 37434 - 19968: 0xE8AD, + 37439 - 19968: 0xEFAF, + 37440 - 19968: 0xCBA5, + 37445 - 19968: 0xCBE9, + 37449 - 19968: 0xFAE8, + 37463 - 19968: 0xCCC6, + 37467 - 19968: 0xE6E7, + 37470 - 19968: 0xEAC7, + 37474 - 19968: 0xDBA4, + 37476 - 19968: 0xCFC9, + 37477 - 19968: 0xE2FC, + 37478 - 19968: 0xEFFA, + 37504 - 19968: 0xEBDE, + 37507 - 19968: 0xF5C8, + 37509 - 19968: 0xD4DE, + 37521 - 19968: 0xE0D5, + 37523 - 19968: 0xEFB0, + 37526 - 19968: 0xE2C7, + 37528 - 19968: 0xD9AF, + 37532 - 19968: 0xF9E7, + 37555 - 19968: 0xE7E5, + 37558 - 19968: 0xCFCA, + 37559 - 19968: 0xE1D1, + 37561 - 19968: 0xE2C8, + 37580 - 19968: 0xEFFB, + 37583 - 19968: 0xFAF9, + 37586 - 19968: 0xDCF2, + 37604 - 19968: 0xE0A7, + 37610 - 19968: 0xF8E8, + 37624 - 19968: 0xCBEA, + 37628 - 19968: 0xCBBC, + 37636 - 19968: 0xD6E2, + 37648 - 19968: 0xF5DE, + 37656 - 19968: 0xF5DF, + 37658 - 19968: 0xEEB6, + 37662 - 19968: 0xE2F6, + 37663 - 19968: 0xD3CA, + 37664 - 19968: 0xEFFC, + 37665 - 19968: 0xD1C4, + 37666 - 19968: 0xEFB1, + 37668 - 19968: 0xD1C5, + 37670 - 19968: 0xD0DE, + 37672 - 19968: 0xD9E1, + 37675 - 19968: 0xE0B8, + 37678 - 19968: 0xCDD1, + 37679 - 19968: 0xF3B9, + 37704 - 19968: 0xE7CC, + 37706 - 19968: 0xD6A8, + 37707 - 19968: 0xCEA7, + 37709 - 19968: 0xD4B5, + 37716 - 19968: 0xE4C8, + 37723 - 19968: 0xD3B4, + 37742 - 19968: 0xEBB9, + 37749 - 19968: 0xCBF5, + 37756 - 19968: 0xF6DD, + 37758 - 19968: 0xF1A3, + 37772 - 19968: 0xCCC7, + 37780 - 19968: 0xE9CA, + 37782 - 19968: 0xE1F0, + 37786 - 19968: 0xF5E0, + 37795 - 19968: 0xFBAF, + 37799 - 19968: 0xCBD1, + 37804 - 19968: 0xFBE0, + 37805 - 19968: 0xF2E5, + 37808 - 19968: 0xECF0, + 37827 - 19968: 0xF0EC, + 37841 - 19968: 0xEEEB, + 37854 - 19968: 0xE9CB, + 37857 - 19968: 0xCCF0, + 37860 - 19968: 0xD7AF, + 37878 - 19968: 0xF3A1, + 37892 - 19968: 0xFCF5, + 37912 - 19968: 0xF1A4, + 37925 - 19968: 0xE0D6, + 37931 - 19968: 0xEFB2, + 37941 - 19968: 0xF4D1, + 37944 - 19968: 0xF7A1, + 37956 - 19968: 0xF1D1, + 37969 - 19968: 0xCAFC, + 37970 - 19968: 0xCAFD, + 37979 - 19968: 0xCECE, + 38013 - 19968: 0xF3C8, + 38015 - 19968: 0xF3BA, + 38263 - 19968: 0xEDFE, + 38272 - 19968: 0xDAA6, + 38275 - 19968: 0xE0EC, + 38281 - 19968: 0xF8CD, + 38283 - 19968: 0xCBD2, + 38287 - 19968: 0xEBCE, + 38289 - 19968: 0xF9D8, + 38290 - 19968: 0xF9D9, + 38291 - 19968: 0xCAE0, + 38292 - 19968: 0xDACA, + 38296 - 19968: 0xCBA6, + 38307 - 19968: 0xCAC8, + 38308 - 19968: 0xF9EE, + 38309 - 19968: 0xDBEC, + 38312 - 19968: 0xD0B1, + 38317 - 19968: 0xD5EF, + 38321 - 19968: 0xE6F3, + 38331 - 19968: 0xE7A2, + 38332 - 19968: 0xE4D9, + 38343 - 19968: 0xE4E1, + 38346 - 19968: 0xFCC4, + 38356 - 19968: 0xF9EF, + 38357 - 19968: 0xCFF4, + 38358 - 19968: 0xF7E6, + 38364 - 19968: 0xCEBC, + 38369 - 19968: 0xF4C5, + 38370 - 19968: 0xDCA3, + 38428 - 19968: 0xDDBD, + 38433 - 19968: 0xF4C6, + 38442 - 19968: 0xF8A1, + 38446 - 19968: 0xE8D6, + 38450 - 19968: 0xDBC1, + 38459 - 19968: 0xF0E6, + 38463 - 19968: 0xE4B9, + 38464 - 19968: 0xF6ED, + 38466 - 19968: 0xF9AE, + 38468 - 19968: 0xDDBE, + 38475 - 19968: 0xD7B0, + 38476 - 19968: 0xD8E8, + 38477 - 19968: 0xCBBD, + 38480 - 19968: 0xF9DA, + 38491 - 19968: 0xF8CE, + 38492 - 19968: 0xF9F0, + 38493 - 19968: 0xE0ED, + 38494 - 19968: 0xE3B3, + 38495 - 19968: 0xF4B3, + 38498 - 19968: 0xEAC2, + 38499 - 19968: 0xF2E6, + 38500 - 19968: 0xF0B6, + 38506 - 19968: 0xDBD6, + 38512 - 19968: 0xEBE4, + 38515 - 19968: 0xF2E7, + 38517 - 19968: 0xD7D5, + 38518 - 19968: 0xD4B6, + 38519 - 19968: 0xF9E8, + 38520 - 19968: 0xD7C1, + 38525 - 19968: 0xE5D5, + 38533 - 19968: 0xE9EA, + 38534 - 19968: 0xD7CC, + 38538 - 19968: 0xD3E9, + 38539 - 19968: 0xE2C9, + 38541 - 19968: 0xFCDB, + 38542 - 19968: 0xCDAD, + 38548 - 19968: 0xCCB0, + 38549 - 19968: 0xEAA2, + 38552 - 19968: 0xE4F6, + 38553 - 19968: 0xD0C0, + 38555 - 19968: 0xF0B7, + 38556 - 19968: 0xEEA1, + 38563 - 19968: 0xD7F6, + 38567 - 19968: 0xE2CA, + 38568 - 19968: 0xE2CB, + 38570 - 19968: 0xFACF, + 38577 - 19968: 0xEBDF, + 38583 - 19968: 0xD6CB, + 38587 - 19968: 0xF4B4, + 38592 - 19968: 0xEDCD, + 38593 - 19968: 0xE4D2, + 38596 - 19968: 0xEAA9, + 38597 - 19968: 0xE4BA, + 38598 - 19968: 0xF3A2, + 38599 - 19968: 0xCDD2, + 38601 - 19968: 0xF6CB, + 38603 - 19968: 0xF1E6, + 38604 - 19968: 0xEDC1, + 38605 - 19968: 0xE8BC, + 38606 - 19968: 0xEED1, + 38613 - 19968: 0xF0E7, + 38614 - 19968: 0xE2CC, + 38617 - 19968: 0xE4AA, + 38619 - 19968: 0xF5E1, + 38620 - 19968: 0xEDDA, + 38626 - 19968: 0xD7EE, + 38627 - 19968: 0xD1F1, + 38632 - 19968: 0xE9EB, + 38633 - 19968: 0xE9EC, + 38634 - 19968: 0xE0E4, + 38639 - 19968: 0xDAA7, + 38640 - 19968: 0xDDD4, + 38642 - 19968: 0xEAA3, + 38646 - 19968: 0xD6C3, + 38647 - 19968: 0xD6F4, + 38649 - 19968: 0xDADF, + 38651 - 19968: 0xEFB3, + 38656 - 19968: 0xE2CD, + 38662 - 19968: 0xEFFD, + 38663 - 19968: 0xF2E8, + 38673 - 19968: 0xEFC5, + 38675 - 19968: 0xE7E7, + 38678 - 19968: 0xD7FD, + 38681 - 19968: 0xE7CE, + 38684 - 19968: 0xDFDC, + 38686 - 19968: 0xF9C7, + 38695 - 19968: 0xD9F6, + 38704 - 19968: 0xDFAC, + 38706 - 19968: 0xD6DA, + 38713 - 19968: 0xDCA4, + 38717 - 19968: 0xF0B8, + 38722 - 19968: 0xD5FA, + 38724 - 19968: 0xE4F7, + 38728 - 19968: 0xD6C4, + 38737 - 19968: 0xF4EC, + 38742 - 19968: 0xEFFE, + 38748 - 19968: 0xF0A1, + 38750 - 19968: 0xDEAA, + 38753 - 19968: 0xDABC, + 38754 - 19968: 0xD8FC, + 38761 - 19968: 0xFAD4, + 38765 - 19968: 0xECE5, + 38772 - 19968: 0xFCA8, + 38775 - 19968: 0xECE6, + 38778 - 19968: 0xD8CB, + 38795 - 19968: 0xFBB9, + 38797 - 19968: 0xE4D3, + 38799 - 19968: 0xCDF9, + 38816 - 19968: 0xCFD3, + 38824 - 19968: 0xCAEA, + 38827 - 19968: 0xCFD4, + 38829 - 19968: 0xF8BD, + 38854 - 19968: 0xF4C7, + 38859 - 19968: 0xEADF, + 38867 - 19968: 0xF9DB, + 38876 - 19968: 0xD4B7, + 38899 - 19968: 0xEBE5, + 38902 - 19968: 0xE1D2, + 38907 - 19968: 0xEAA4, + 38911 - 19968: 0xFAC2, + 38912 - 19968: 0xFBE1, + 38913 - 19968: 0xFAED, + 38914 - 19968: 0xF0A2, + 38915 - 19968: 0xCCF1, + 38917 - 19968: 0xFAA3, + 38918 - 19968: 0xE2F7, + 38920 - 19968: 0xE2CE, + 38922 - 19968: 0xE9F5, + 38924 - 19968: 0xE1EB, + 38928 - 19968: 0xE7E8, + 38929 - 19968: 0xE8D7, + 38930 - 19968: 0xDAF8, + 38931 - 19968: 0xD4CB, + 38935 - 19968: 0xF7F6, + 38936 - 19968: 0xD6C5, + 38957 - 19968: 0xD4E9, + 38960 - 19968: 0xFAFA, + 38968 - 19968: 0xCCF2, + 38969 - 19968: 0xF7DD, + 38971 - 19968: 0xDEBA, + 38982 - 19968: 0xCEA8, + 38988 - 19968: 0xF0B9, + 38989 - 19968: 0xE4FE, + 38990 - 19968: 0xE4C9, + 38996 - 19968: 0xE4D4, + 39000 - 19968: 0xEAC3, + 39002 - 19968: 0xEFB4, + 39006 - 19968: 0xD7BE, + 39013 - 19968: 0xFBE2, + 39015 - 19968: 0xCDD3, + 39019 - 19968: 0xEFB5, + 39023 - 19968: 0xFAE9, + 39080 - 19968: 0xF9A6, + 39087 - 19968: 0xDFBD, + 39089 - 19968: 0xF7C7, + 39108 - 19968: 0xF8FD, + 39111 - 19968: 0xF8FC, + 39131 - 19968: 0xDEAB, + 39132 - 19968: 0xDBE8, + 39135 - 19968: 0xE3DD, + 39137 - 19968: 0xE1E2, + 39138 - 19968: 0xD1C6, + 39149 - 19968: 0xF6D0, + 39150 - 19968: 0xEBE6, + 39151 - 19968: 0xDAF9, + 39156 - 19968: 0xECC7, + 39164 - 19968: 0xDEF8, + 39165 - 19968: 0xF8E9, + 39166 - 19968: 0xE3DE, + 39171 - 19968: 0xCEF5, + 39177 - 19968: 0xFAC3, + 39178 - 19968: 0xE5D7, + 39180 - 19968: 0xECC8, + 39184 - 19968: 0xF3C9, + 39187 - 19968: 0xE4BB, + 39192 - 19968: 0xE6AE, + 39198 - 19968: 0xEFB6, + 39200 - 19968: 0xDCBF, + 39208 - 19968: 0xCEBD, + 39237 - 19968: 0xD8C3, + 39241 - 19968: 0xD0CF, + 39243 - 19968: 0xCFFA, + 39244 - 19968: 0xF3CA, + 39245 - 19968: 0xE0D7, + 39249 - 19968: 0xD1C7, + 39250 - 19968: 0xE9AE, + 39252 - 19968: 0xE8BD, + 39255 - 19968: 0xFAC4, + 39318 - 19968: 0xE2CF, + 39321 - 19968: 0xFAC5, + 39325 - 19968: 0xF9B8, + 39333 - 19968: 0xDCE0, + 39336 - 19968: 0xFBB0, + 39340 - 19968: 0xD8A9, + 39341 - 19968: 0xE5DF, + 39342 - 19968: 0xF9A7, + 39345 - 19968: 0xF6EE, + 39347 - 19968: 0xF6CC, + 39348 - 19968: 0xE2F8, + 39353 - 19968: 0xECF1, + 39361 - 19968: 0xDAE0, + 39376 - 19968: 0xF1D2, + 39377 - 19968: 0xD2CC, + 39378 - 19968: 0xCFCB, + 39381 - 19968: 0xCABD, + 39385 - 19968: 0xDDBF, + 39389 - 19968: 0xF6EF, + 39391 - 19968: 0xDEF9, + 39405 - 19968: 0xFAB4, + 39409 - 19968: 0xD5AD, + 39423 - 19968: 0xF1E7, + 39425 - 19968: 0xDEBE, + 39432 - 19968: 0xDCC0, + 39438 - 19968: 0xD1C8, + 39439 - 19968: 0xD1C9, + 39449 - 19968: 0xF8BE, + 39467 - 19968: 0xCBF6, + 39472 - 19968: 0xD4F9, + 39478 - 19968: 0xF5E2, + 39479 - 19968: 0xE1D3, + 39488 - 19968: 0xD8E9, + 39491 - 19968: 0xF8FE, + 39493 - 19968: 0xCFCC, + 39501 - 19968: 0xFDA4, + 39509 - 19968: 0xCEF6, + 39511 - 19968: 0xFAD0, + 39514 - 19968: 0xCCF3, + 39515 - 19968: 0xE6BE, + 39519 - 19968: 0xF6AE, + 39522 - 19968: 0xD5F0, + 39525 - 19968: 0xD1CA, + 39529 - 19968: 0xFCBE, + 39530 - 19968: 0xD5F1, + 39592 - 19968: 0xCDE9, + 39608 - 19968: 0xFAB5, + 39635 - 19968: 0xE2D0, + 39636 - 19968: 0xF4F7, + 39640 - 19968: 0xCDD4, + 39653 - 19968: 0xE7A3, + 39662 - 19968: 0xDBA5, + 39706 - 19968: 0xE2D1, + 39719 - 19968: 0xD7A2, + 39722 - 19968: 0xF7E3, + 39729 - 19968: 0xEAA6, + 39740 - 19968: 0xD0A1, + 39745 - 19968: 0xCEDA, + 39746 - 19968: 0xFBEB, + 39747 - 19968: 0xDBA6, + 39748 - 19968: 0xDBDE, + 39749 - 19968: 0xD8E5, + 39759 - 19968: 0xEAE0, + 39764 - 19968: 0xD8AA, + 39770 - 19968: 0xE5E0, + 39791 - 19968: 0xD6DB, + 39822 - 19968: 0xEFC6, + 39825 - 19968: 0xF8EA, + 39839 - 19968: 0xE4D5, + 39851 - 19968: 0xCEF7, + 39854 - 19968: 0xE0D8, + 39881 - 19968: 0xD7EF, + 39894 - 19968: 0xF4ED, + 39908 - 19968: 0xCDE6, + 39912 - 19968: 0xCCF4, + 39949 - 19968: 0xF5E3, + 39952 - 19968: 0xE4CA, + 39954 - 19968: 0xDCE1, + 39957 - 19968: 0xF9C8, + 39973 - 19968: 0xFCBF, + 39986 - 19968: 0xE8A7, + 39995 - 19968: 0xD8C4, + 40007 - 19968: 0xCBBE, + 40009 - 19968: 0xDCAE, + 40023 - 19968: 0xD7F7, + 40165 - 19968: 0xF0E8, + 40167 - 19968: 0xDDC0, + 40169 - 19968: 0xCFCD, + 40179 - 19968: 0xDCF3, + 40180 - 19968: 0xD9B0, + 40182 - 19968: 0xE6E9, + 40201 - 19968: 0xE4BC, + 40219 - 19968: 0xEAC4, + 40230 - 19968: 0xE4EC, + 40232 - 19968: 0xE4E5, + 40251 - 19968: 0xFBF8, + 40273 - 19968: 0xCCBB, + 40285 - 19968: 0xE4BD, + 40288 - 19968: 0xCDDC, + 40289 - 19968: 0xD9F7, + 40300 - 19968: 0xDDDF, + 40306 - 19968: 0xEDCE, + 40361 - 19968: 0xD9D0, + 40367 - 19968: 0xE5A3, + 40372 - 19968: 0xF9CD, + 40388 - 19968: 0xCDAE, + 40407 - 19968: 0xCFCE, + 40434 - 19968: 0xF6AF, + 40440 - 19968: 0xFDD3, + 40441 - 19968: 0xEBED, + 40442 - 19968: 0xD6DC, + 40474 - 19968: 0xE5A4, + 40478 - 19968: 0xD5B6, + 40565 - 19968: 0xD6DD, + 40569 - 19968: 0xF9E9, + 40573 - 19968: 0xE7A4, + 40575 - 19968: 0xD6E3, + 40594 - 19968: 0xD1CB, + 40595 - 19968: 0xD6E4, + 40599 - 19968: 0xD5F2, + 40605 - 19968: 0xDEFA, + 40607 - 19968: 0xD7F8, + 40613 - 19968: 0xD8EA, + 40628 - 19968: 0xCFD5, + 40629 - 19968: 0xD8FD, + 40635 - 19968: 0xD8AB, + 40638 - 19968: 0xFDCB, + 40643 - 19968: 0xFCDC, + 40653 - 19968: 0xE0A8, + 40654 - 19968: 0xD5F3, + 40657 - 19968: 0xFDD9, + 40660 - 19968: 0xCCA3, + 40664 - 19968: 0xD9F9, + 40667 - 19968: 0xD3EA, + 40668 - 19968: 0xF5F5, + 40670 - 19968: 0xEFC7, + 40680 - 19968: 0xD3DA, + 40692 - 19968: 0xDABD, + 40711 - 19968: 0xE8A8, + 40712 - 19968: 0xDCAF, + 40718 - 19968: 0xF0A3, + 40723 - 19968: 0xCDD5, + 40736 - 19968: 0xE0A9, + 40763 - 19968: 0xDEAC, + 40778 - 19968: 0xF0BA, + 40779 - 19968: 0xEEB1, + 40782 - 19968: 0xEEB2, + 40786 - 19968: 0xF6CD, + 40799 - 19968: 0xEED2, + 40801 - 19968: 0xD6C6, + 40807 - 19968: 0xE0E5, + 40810 - 19968: 0xF3BB, + 40812 - 19968: 0xE5E1, + 40823 - 19968: 0xE4CB, + 40845 - 19968: 0xD7A3, + 40848 - 19968: 0xDBC2, + 40853 - 19968: 0xCAFE, + 40860 - 19968: 0xCFCF, +} + +const encode1Low, encode1High = 44032, 55204 + +var encode1 = [...]uint16{ + 44032 - 44032: 0xB0A1, + 44033 - 44032: 0xB0A2, + 44034 - 44032: 0x8141, + 44035 - 44032: 0x8142, + 44036 - 44032: 0xB0A3, + 44037 - 44032: 0x8143, + 44038 - 44032: 0x8144, + 44039 - 44032: 0xB0A4, + 44040 - 44032: 0xB0A5, + 44041 - 44032: 0xB0A6, + 44042 - 44032: 0xB0A7, + 44043 - 44032: 0x8145, + 44044 - 44032: 0x8146, + 44045 - 44032: 0x8147, + 44046 - 44032: 0x8148, + 44047 - 44032: 0x8149, + 44048 - 44032: 0xB0A8, + 44049 - 44032: 0xB0A9, + 44050 - 44032: 0xB0AA, + 44051 - 44032: 0xB0AB, + 44052 - 44032: 0xB0AC, + 44053 - 44032: 0xB0AD, + 44054 - 44032: 0xB0AE, + 44055 - 44032: 0xB0AF, + 44056 - 44032: 0x814A, + 44057 - 44032: 0xB0B0, + 44058 - 44032: 0xB0B1, + 44059 - 44032: 0xB0B2, + 44060 - 44032: 0xB0B3, + 44061 - 44032: 0xB0B4, + 44062 - 44032: 0x814B, + 44063 - 44032: 0x814C, + 44064 - 44032: 0xB0B5, + 44065 - 44032: 0x814D, + 44066 - 44032: 0x814E, + 44067 - 44032: 0x814F, + 44068 - 44032: 0xB0B6, + 44069 - 44032: 0x8150, + 44070 - 44032: 0x8151, + 44071 - 44032: 0x8152, + 44072 - 44032: 0x8153, + 44073 - 44032: 0x8154, + 44074 - 44032: 0x8155, + 44075 - 44032: 0x8156, + 44076 - 44032: 0xB0B7, + 44077 - 44032: 0xB0B8, + 44078 - 44032: 0x8157, + 44079 - 44032: 0xB0B9, + 44080 - 44032: 0xB0BA, + 44081 - 44032: 0xB0BB, + 44082 - 44032: 0x8158, + 44083 - 44032: 0x8159, + 44084 - 44032: 0x815A, + 44085 - 44032: 0x8161, + 44086 - 44032: 0x8162, + 44087 - 44032: 0x8163, + 44088 - 44032: 0xB0BC, + 44089 - 44032: 0xB0BD, + 44090 - 44032: 0x8164, + 44091 - 44032: 0x8165, + 44092 - 44032: 0xB0BE, + 44093 - 44032: 0x8166, + 44094 - 44032: 0x8167, + 44095 - 44032: 0x8168, + 44096 - 44032: 0xB0BF, + 44097 - 44032: 0x8169, + 44098 - 44032: 0x816A, + 44099 - 44032: 0x816B, + 44100 - 44032: 0x816C, + 44101 - 44032: 0x816D, + 44102 - 44032: 0x816E, + 44103 - 44032: 0x816F, + 44104 - 44032: 0x8170, + 44105 - 44032: 0x8171, + 44106 - 44032: 0x8172, + 44107 - 44032: 0xB0C0, + 44108 - 44032: 0x8173, + 44109 - 44032: 0xB0C1, + 44110 - 44032: 0x8174, + 44111 - 44032: 0x8175, + 44112 - 44032: 0x8176, + 44113 - 44032: 0x8177, + 44114 - 44032: 0x8178, + 44115 - 44032: 0x8179, + 44116 - 44032: 0xB0C2, + 44117 - 44032: 0x817A, + 44118 - 44032: 0x8181, + 44119 - 44032: 0x8182, + 44120 - 44032: 0xB0C3, + 44121 - 44032: 0x8183, + 44122 - 44032: 0x8184, + 44123 - 44032: 0x8185, + 44124 - 44032: 0xB0C4, + 44125 - 44032: 0x8186, + 44126 - 44032: 0x8187, + 44127 - 44032: 0x8188, + 44128 - 44032: 0x8189, + 44129 - 44032: 0x818A, + 44130 - 44032: 0x818B, + 44131 - 44032: 0x818C, + 44132 - 44032: 0x818D, + 44133 - 44032: 0x818E, + 44134 - 44032: 0x818F, + 44135 - 44032: 0x8190, + 44136 - 44032: 0x8191, + 44137 - 44032: 0x8192, + 44138 - 44032: 0x8193, + 44139 - 44032: 0x8194, + 44140 - 44032: 0x8195, + 44141 - 44032: 0x8196, + 44142 - 44032: 0x8197, + 44143 - 44032: 0x8198, + 44144 - 44032: 0xB0C5, + 44145 - 44032: 0xB0C6, + 44146 - 44032: 0x8199, + 44147 - 44032: 0x819A, + 44148 - 44032: 0xB0C7, + 44149 - 44032: 0x819B, + 44150 - 44032: 0x819C, + 44151 - 44032: 0xB0C8, + 44152 - 44032: 0xB0C9, + 44153 - 44032: 0x819D, + 44154 - 44032: 0xB0CA, + 44155 - 44032: 0x819E, + 44156 - 44032: 0x819F, + 44157 - 44032: 0x81A0, + 44158 - 44032: 0x81A1, + 44159 - 44032: 0x81A2, + 44160 - 44032: 0xB0CB, + 44161 - 44032: 0xB0CC, + 44162 - 44032: 0x81A3, + 44163 - 44032: 0xB0CD, + 44164 - 44032: 0xB0CE, + 44165 - 44032: 0xB0CF, + 44166 - 44032: 0xB0D0, + 44167 - 44032: 0x81A4, + 44168 - 44032: 0x81A5, + 44169 - 44032: 0xB0D1, + 44170 - 44032: 0xB0D2, + 44171 - 44032: 0xB0D3, + 44172 - 44032: 0xB0D4, + 44173 - 44032: 0x81A6, + 44174 - 44032: 0x81A7, + 44175 - 44032: 0x81A8, + 44176 - 44032: 0xB0D5, + 44177 - 44032: 0x81A9, + 44178 - 44032: 0x81AA, + 44179 - 44032: 0x81AB, + 44180 - 44032: 0xB0D6, + 44181 - 44032: 0x81AC, + 44182 - 44032: 0x81AD, + 44183 - 44032: 0x81AE, + 44184 - 44032: 0x81AF, + 44185 - 44032: 0x81B0, + 44186 - 44032: 0x81B1, + 44187 - 44032: 0x81B2, + 44188 - 44032: 0xB0D7, + 44189 - 44032: 0xB0D8, + 44190 - 44032: 0x81B3, + 44191 - 44032: 0xB0D9, + 44192 - 44032: 0xB0DA, + 44193 - 44032: 0xB0DB, + 44194 - 44032: 0x81B4, + 44195 - 44032: 0x81B5, + 44196 - 44032: 0x81B6, + 44197 - 44032: 0x81B7, + 44198 - 44032: 0x81B8, + 44199 - 44032: 0x81B9, + 44200 - 44032: 0xB0DC, + 44201 - 44032: 0xB0DD, + 44202 - 44032: 0xB0DE, + 44203 - 44032: 0x81BA, + 44204 - 44032: 0xB0DF, + 44205 - 44032: 0x81BB, + 44206 - 44032: 0x81BC, + 44207 - 44032: 0xB0E0, + 44208 - 44032: 0xB0E1, + 44209 - 44032: 0x81BD, + 44210 - 44032: 0x81BE, + 44211 - 44032: 0x81BF, + 44212 - 44032: 0x81C0, + 44213 - 44032: 0x81C1, + 44214 - 44032: 0x81C2, + 44215 - 44032: 0x81C3, + 44216 - 44032: 0xB0E2, + 44217 - 44032: 0xB0E3, + 44218 - 44032: 0x81C4, + 44219 - 44032: 0xB0E4, + 44220 - 44032: 0xB0E5, + 44221 - 44032: 0xB0E6, + 44222 - 44032: 0x81C5, + 44223 - 44032: 0x81C6, + 44224 - 44032: 0x81C7, + 44225 - 44032: 0xB0E7, + 44226 - 44032: 0x81C8, + 44227 - 44032: 0x81C9, + 44228 - 44032: 0xB0E8, + 44229 - 44032: 0x81CA, + 44230 - 44032: 0x81CB, + 44231 - 44032: 0x81CC, + 44232 - 44032: 0xB0E9, + 44233 - 44032: 0x81CD, + 44234 - 44032: 0x81CE, + 44235 - 44032: 0x81CF, + 44236 - 44032: 0xB0EA, + 44237 - 44032: 0x81D0, + 44238 - 44032: 0x81D1, + 44239 - 44032: 0x81D2, + 44240 - 44032: 0x81D3, + 44241 - 44032: 0x81D4, + 44242 - 44032: 0x81D5, + 44243 - 44032: 0x81D6, + 44244 - 44032: 0x81D7, + 44245 - 44032: 0xB0EB, + 44246 - 44032: 0x81D8, + 44247 - 44032: 0xB0EC, + 44248 - 44032: 0x81D9, + 44249 - 44032: 0x81DA, + 44250 - 44032: 0x81DB, + 44251 - 44032: 0x81DC, + 44252 - 44032: 0x81DD, + 44253 - 44032: 0x81DE, + 44254 - 44032: 0x81DF, + 44255 - 44032: 0x81E0, + 44256 - 44032: 0xB0ED, + 44257 - 44032: 0xB0EE, + 44258 - 44032: 0x81E1, + 44259 - 44032: 0x81E2, + 44260 - 44032: 0xB0EF, + 44261 - 44032: 0x81E3, + 44262 - 44032: 0x81E4, + 44263 - 44032: 0xB0F0, + 44264 - 44032: 0xB0F1, + 44265 - 44032: 0x81E5, + 44266 - 44032: 0xB0F2, + 44267 - 44032: 0x81E6, + 44268 - 44032: 0xB0F3, + 44269 - 44032: 0x81E7, + 44270 - 44032: 0x81E8, + 44271 - 44032: 0xB0F4, + 44272 - 44032: 0xB0F5, + 44273 - 44032: 0xB0F6, + 44274 - 44032: 0x81E9, + 44275 - 44032: 0xB0F7, + 44276 - 44032: 0x81EA, + 44277 - 44032: 0xB0F8, + 44278 - 44032: 0xB0F9, + 44279 - 44032: 0x81EB, + 44280 - 44032: 0x81EC, + 44281 - 44032: 0x81ED, + 44282 - 44032: 0x81EE, + 44283 - 44032: 0x81EF, + 44284 - 44032: 0xB0FA, + 44285 - 44032: 0xB0FB, + 44286 - 44032: 0x81F0, + 44287 - 44032: 0x81F1, + 44288 - 44032: 0xB0FC, + 44289 - 44032: 0x81F2, + 44290 - 44032: 0x81F3, + 44291 - 44032: 0x81F4, + 44292 - 44032: 0xB0FD, + 44293 - 44032: 0x81F5, + 44294 - 44032: 0xB0FE, + 44295 - 44032: 0x81F6, + 44296 - 44032: 0x81F7, + 44297 - 44032: 0x81F8, + 44298 - 44032: 0x81F9, + 44299 - 44032: 0x81FA, + 44300 - 44032: 0xB1A1, + 44301 - 44032: 0xB1A2, + 44302 - 44032: 0x81FB, + 44303 - 44032: 0xB1A3, + 44304 - 44032: 0x81FC, + 44305 - 44032: 0xB1A4, + 44306 - 44032: 0x81FD, + 44307 - 44032: 0x81FE, + 44308 - 44032: 0x8241, + 44309 - 44032: 0x8242, + 44310 - 44032: 0x8243, + 44311 - 44032: 0x8244, + 44312 - 44032: 0xB1A5, + 44313 - 44032: 0x8245, + 44314 - 44032: 0x8246, + 44315 - 44032: 0x8247, + 44316 - 44032: 0xB1A6, + 44317 - 44032: 0x8248, + 44318 - 44032: 0x8249, + 44319 - 44032: 0x824A, + 44320 - 44032: 0xB1A7, + 44321 - 44032: 0x824B, + 44322 - 44032: 0x824C, + 44323 - 44032: 0x824D, + 44324 - 44032: 0x824E, + 44325 - 44032: 0x824F, + 44326 - 44032: 0x8250, + 44327 - 44032: 0x8251, + 44328 - 44032: 0x8252, + 44329 - 44032: 0xB1A8, + 44330 - 44032: 0x8253, + 44331 - 44032: 0x8254, + 44332 - 44032: 0xB1A9, + 44333 - 44032: 0xB1AA, + 44334 - 44032: 0x8255, + 44335 - 44032: 0x8256, + 44336 - 44032: 0x8257, + 44337 - 44032: 0x8258, + 44338 - 44032: 0x8259, + 44339 - 44032: 0x825A, + 44340 - 44032: 0xB1AB, + 44341 - 44032: 0xB1AC, + 44342 - 44032: 0x8261, + 44343 - 44032: 0x8262, + 44344 - 44032: 0xB1AD, + 44345 - 44032: 0x8263, + 44346 - 44032: 0x8264, + 44347 - 44032: 0x8265, + 44348 - 44032: 0xB1AE, + 44349 - 44032: 0x8266, + 44350 - 44032: 0x8267, + 44351 - 44032: 0x8268, + 44352 - 44032: 0x8269, + 44353 - 44032: 0x826A, + 44354 - 44032: 0x826B, + 44355 - 44032: 0x826C, + 44356 - 44032: 0xB1AF, + 44357 - 44032: 0xB1B0, + 44358 - 44032: 0x826D, + 44359 - 44032: 0xB1B1, + 44360 - 44032: 0x826E, + 44361 - 44032: 0xB1B2, + 44362 - 44032: 0x826F, + 44363 - 44032: 0x8270, + 44364 - 44032: 0x8271, + 44365 - 44032: 0x8272, + 44366 - 44032: 0x8273, + 44367 - 44032: 0x8274, + 44368 - 44032: 0xB1B3, + 44369 - 44032: 0x8275, + 44370 - 44032: 0x8276, + 44371 - 44032: 0x8277, + 44372 - 44032: 0xB1B4, + 44373 - 44032: 0x8278, + 44374 - 44032: 0x8279, + 44375 - 44032: 0x827A, + 44376 - 44032: 0xB1B5, + 44377 - 44032: 0x8281, + 44378 - 44032: 0x8282, + 44379 - 44032: 0x8283, + 44380 - 44032: 0x8284, + 44381 - 44032: 0x8285, + 44382 - 44032: 0x8286, + 44383 - 44032: 0x8287, + 44384 - 44032: 0x8288, + 44385 - 44032: 0xB1B6, + 44386 - 44032: 0x8289, + 44387 - 44032: 0xB1B7, + 44388 - 44032: 0x828A, + 44389 - 44032: 0x828B, + 44390 - 44032: 0x828C, + 44391 - 44032: 0x828D, + 44392 - 44032: 0x828E, + 44393 - 44032: 0x828F, + 44394 - 44032: 0x8290, + 44395 - 44032: 0x8291, + 44396 - 44032: 0xB1B8, + 44397 - 44032: 0xB1B9, + 44398 - 44032: 0x8292, + 44399 - 44032: 0x8293, + 44400 - 44032: 0xB1BA, + 44401 - 44032: 0x8294, + 44402 - 44032: 0x8295, + 44403 - 44032: 0xB1BB, + 44404 - 44032: 0xB1BC, + 44405 - 44032: 0xB1BD, + 44406 - 44032: 0xB1BE, + 44407 - 44032: 0x8296, + 44408 - 44032: 0x8297, + 44409 - 44032: 0x8298, + 44410 - 44032: 0x8299, + 44411 - 44032: 0xB1BF, + 44412 - 44032: 0xB1C0, + 44413 - 44032: 0xB1C1, + 44414 - 44032: 0x829A, + 44415 - 44032: 0xB1C2, + 44416 - 44032: 0x829B, + 44417 - 44032: 0xB1C3, + 44418 - 44032: 0xB1C4, + 44419 - 44032: 0x829C, + 44420 - 44032: 0x829D, + 44421 - 44032: 0x829E, + 44422 - 44032: 0x829F, + 44423 - 44032: 0x82A0, + 44424 - 44032: 0xB1C5, + 44425 - 44032: 0xB1C6, + 44426 - 44032: 0x82A1, + 44427 - 44032: 0x82A2, + 44428 - 44032: 0xB1C7, + 44429 - 44032: 0x82A3, + 44430 - 44032: 0x82A4, + 44431 - 44032: 0x82A5, + 44432 - 44032: 0xB1C8, + 44433 - 44032: 0x82A6, + 44434 - 44032: 0x82A7, + 44435 - 44032: 0x82A8, + 44436 - 44032: 0x82A9, + 44437 - 44032: 0x82AA, + 44438 - 44032: 0x82AB, + 44439 - 44032: 0x82AC, + 44440 - 44032: 0x82AD, + 44441 - 44032: 0x82AE, + 44442 - 44032: 0x82AF, + 44443 - 44032: 0x82B0, + 44444 - 44032: 0xB1C9, + 44445 - 44032: 0xB1CA, + 44446 - 44032: 0x82B1, + 44447 - 44032: 0x82B2, + 44448 - 44032: 0x82B3, + 44449 - 44032: 0x82B4, + 44450 - 44032: 0x82B5, + 44451 - 44032: 0x82B6, + 44452 - 44032: 0xB1CB, + 44453 - 44032: 0x82B7, + 44454 - 44032: 0x82B8, + 44455 - 44032: 0x82B9, + 44456 - 44032: 0x82BA, + 44457 - 44032: 0x82BB, + 44458 - 44032: 0x82BC, + 44459 - 44032: 0x82BD, + 44460 - 44032: 0x82BE, + 44461 - 44032: 0x82BF, + 44462 - 44032: 0x82C0, + 44463 - 44032: 0x82C1, + 44464 - 44032: 0x82C2, + 44465 - 44032: 0x82C3, + 44466 - 44032: 0x82C4, + 44467 - 44032: 0x82C5, + 44468 - 44032: 0x82C6, + 44469 - 44032: 0x82C7, + 44470 - 44032: 0x82C8, + 44471 - 44032: 0xB1CC, + 44472 - 44032: 0x82C9, + 44473 - 44032: 0x82CA, + 44474 - 44032: 0x82CB, + 44475 - 44032: 0x82CC, + 44476 - 44032: 0x82CD, + 44477 - 44032: 0x82CE, + 44478 - 44032: 0x82CF, + 44479 - 44032: 0x82D0, + 44480 - 44032: 0xB1CD, + 44481 - 44032: 0xB1CE, + 44482 - 44032: 0x82D1, + 44483 - 44032: 0x82D2, + 44484 - 44032: 0xB1CF, + 44485 - 44032: 0x82D3, + 44486 - 44032: 0x82D4, + 44487 - 44032: 0x82D5, + 44488 - 44032: 0xB1D0, + 44489 - 44032: 0x82D6, + 44490 - 44032: 0x82D7, + 44491 - 44032: 0x82D8, + 44492 - 44032: 0x82D9, + 44493 - 44032: 0x82DA, + 44494 - 44032: 0x82DB, + 44495 - 44032: 0x82DC, + 44496 - 44032: 0xB1D1, + 44497 - 44032: 0xB1D2, + 44498 - 44032: 0x82DD, + 44499 - 44032: 0xB1D3, + 44500 - 44032: 0x82DE, + 44501 - 44032: 0x82DF, + 44502 - 44032: 0x82E0, + 44503 - 44032: 0x82E1, + 44504 - 44032: 0x82E2, + 44505 - 44032: 0x82E3, + 44506 - 44032: 0x82E4, + 44507 - 44032: 0x82E5, + 44508 - 44032: 0xB1D4, + 44509 - 44032: 0x82E6, + 44510 - 44032: 0x82E7, + 44511 - 44032: 0x82E8, + 44512 - 44032: 0xB1D5, + 44513 - 44032: 0x82E9, + 44514 - 44032: 0x82EA, + 44515 - 44032: 0x82EB, + 44516 - 44032: 0xB1D6, + 44517 - 44032: 0x82EC, + 44518 - 44032: 0x82ED, + 44519 - 44032: 0x82EE, + 44520 - 44032: 0x82EF, + 44521 - 44032: 0x82F0, + 44522 - 44032: 0x82F1, + 44523 - 44032: 0x82F2, + 44524 - 44032: 0x82F3, + 44525 - 44032: 0x82F4, + 44526 - 44032: 0x82F5, + 44527 - 44032: 0x82F6, + 44528 - 44032: 0x82F7, + 44529 - 44032: 0x82F8, + 44530 - 44032: 0x82F9, + 44531 - 44032: 0x82FA, + 44532 - 44032: 0x82FB, + 44533 - 44032: 0x82FC, + 44534 - 44032: 0x82FD, + 44535 - 44032: 0x82FE, + 44536 - 44032: 0xB1D7, + 44537 - 44032: 0xB1D8, + 44538 - 44032: 0x8341, + 44539 - 44032: 0x8342, + 44540 - 44032: 0xB1D9, + 44541 - 44032: 0x8343, + 44542 - 44032: 0x8344, + 44543 - 44032: 0xB1DA, + 44544 - 44032: 0xB1DB, + 44545 - 44032: 0xB1DC, + 44546 - 44032: 0x8345, + 44547 - 44032: 0x8346, + 44548 - 44032: 0x8347, + 44549 - 44032: 0x8348, + 44550 - 44032: 0x8349, + 44551 - 44032: 0x834A, + 44552 - 44032: 0xB1DD, + 44553 - 44032: 0xB1DE, + 44554 - 44032: 0x834B, + 44555 - 44032: 0xB1DF, + 44556 - 44032: 0x834C, + 44557 - 44032: 0xB1E0, + 44558 - 44032: 0x834D, + 44559 - 44032: 0x834E, + 44560 - 44032: 0x834F, + 44561 - 44032: 0x8350, + 44562 - 44032: 0x8351, + 44563 - 44032: 0x8352, + 44564 - 44032: 0xB1E1, + 44565 - 44032: 0x8353, + 44566 - 44032: 0x8354, + 44567 - 44032: 0x8355, + 44568 - 44032: 0x8356, + 44569 - 44032: 0x8357, + 44570 - 44032: 0x8358, + 44571 - 44032: 0x8359, + 44572 - 44032: 0x835A, + 44573 - 44032: 0x8361, + 44574 - 44032: 0x8362, + 44575 - 44032: 0x8363, + 44576 - 44032: 0x8364, + 44577 - 44032: 0x8365, + 44578 - 44032: 0x8366, + 44579 - 44032: 0x8367, + 44580 - 44032: 0x8368, + 44581 - 44032: 0x8369, + 44582 - 44032: 0x836A, + 44583 - 44032: 0x836B, + 44584 - 44032: 0x836C, + 44585 - 44032: 0x836D, + 44586 - 44032: 0x836E, + 44587 - 44032: 0x836F, + 44588 - 44032: 0x8370, + 44589 - 44032: 0x8371, + 44590 - 44032: 0x8372, + 44591 - 44032: 0x8373, + 44592 - 44032: 0xB1E2, + 44593 - 44032: 0xB1E3, + 44594 - 44032: 0x8374, + 44595 - 44032: 0x8375, + 44596 - 44032: 0xB1E4, + 44597 - 44032: 0x8376, + 44598 - 44032: 0x8377, + 44599 - 44032: 0xB1E5, + 44600 - 44032: 0xB1E6, + 44601 - 44032: 0x8378, + 44602 - 44032: 0xB1E7, + 44603 - 44032: 0x8379, + 44604 - 44032: 0x837A, + 44605 - 44032: 0x8381, + 44606 - 44032: 0x8382, + 44607 - 44032: 0x8383, + 44608 - 44032: 0xB1E8, + 44609 - 44032: 0xB1E9, + 44610 - 44032: 0x8384, + 44611 - 44032: 0xB1EA, + 44612 - 44032: 0x8385, + 44613 - 44032: 0xB1EB, + 44614 - 44032: 0xB1EC, + 44615 - 44032: 0x8386, + 44616 - 44032: 0x8387, + 44617 - 44032: 0x8388, + 44618 - 44032: 0xB1ED, + 44619 - 44032: 0x8389, + 44620 - 44032: 0xB1EE, + 44621 - 44032: 0xB1EF, + 44622 - 44032: 0xB1F0, + 44623 - 44032: 0x838A, + 44624 - 44032: 0xB1F1, + 44625 - 44032: 0x838B, + 44626 - 44032: 0x838C, + 44627 - 44032: 0x838D, + 44628 - 44032: 0xB1F2, + 44629 - 44032: 0x838E, + 44630 - 44032: 0xB1F3, + 44631 - 44032: 0x838F, + 44632 - 44032: 0x8390, + 44633 - 44032: 0x8391, + 44634 - 44032: 0x8392, + 44635 - 44032: 0x8393, + 44636 - 44032: 0xB1F4, + 44637 - 44032: 0xB1F5, + 44638 - 44032: 0x8394, + 44639 - 44032: 0xB1F6, + 44640 - 44032: 0xB1F7, + 44641 - 44032: 0xB1F8, + 44642 - 44032: 0x8395, + 44643 - 44032: 0x8396, + 44644 - 44032: 0x8397, + 44645 - 44032: 0xB1F9, + 44646 - 44032: 0x8398, + 44647 - 44032: 0x8399, + 44648 - 44032: 0xB1FA, + 44649 - 44032: 0xB1FB, + 44650 - 44032: 0x839A, + 44651 - 44032: 0x839B, + 44652 - 44032: 0xB1FC, + 44653 - 44032: 0x839C, + 44654 - 44032: 0x839D, + 44655 - 44032: 0x839E, + 44656 - 44032: 0xB1FD, + 44657 - 44032: 0x839F, + 44658 - 44032: 0x83A0, + 44659 - 44032: 0x83A1, + 44660 - 44032: 0x83A2, + 44661 - 44032: 0x83A3, + 44662 - 44032: 0x83A4, + 44663 - 44032: 0x83A5, + 44664 - 44032: 0xB1FE, + 44665 - 44032: 0xB2A1, + 44666 - 44032: 0x83A6, + 44667 - 44032: 0xB2A2, + 44668 - 44032: 0xB2A3, + 44669 - 44032: 0xB2A4, + 44670 - 44032: 0x83A7, + 44671 - 44032: 0x83A8, + 44672 - 44032: 0x83A9, + 44673 - 44032: 0x83AA, + 44674 - 44032: 0x83AB, + 44675 - 44032: 0x83AC, + 44676 - 44032: 0xB2A5, + 44677 - 44032: 0xB2A6, + 44678 - 44032: 0x83AD, + 44679 - 44032: 0x83AE, + 44680 - 44032: 0x83AF, + 44681 - 44032: 0x83B0, + 44682 - 44032: 0x83B1, + 44683 - 44032: 0x83B2, + 44684 - 44032: 0xB2A7, + 44685 - 44032: 0x83B3, + 44686 - 44032: 0x83B4, + 44687 - 44032: 0x83B5, + 44688 - 44032: 0x83B6, + 44689 - 44032: 0x83B7, + 44690 - 44032: 0x83B8, + 44691 - 44032: 0x83B9, + 44692 - 44032: 0x83BA, + 44693 - 44032: 0x83BB, + 44694 - 44032: 0x83BC, + 44695 - 44032: 0x83BD, + 44696 - 44032: 0x83BE, + 44697 - 44032: 0x83BF, + 44698 - 44032: 0x83C0, + 44699 - 44032: 0x83C1, + 44700 - 44032: 0x83C2, + 44701 - 44032: 0x83C3, + 44702 - 44032: 0x83C4, + 44703 - 44032: 0x83C5, + 44704 - 44032: 0x83C6, + 44705 - 44032: 0x83C7, + 44706 - 44032: 0x83C8, + 44707 - 44032: 0x83C9, + 44708 - 44032: 0x83CA, + 44709 - 44032: 0x83CB, + 44710 - 44032: 0x83CC, + 44711 - 44032: 0x83CD, + 44712 - 44032: 0x83CE, + 44713 - 44032: 0x83CF, + 44714 - 44032: 0x83D0, + 44715 - 44032: 0x83D1, + 44716 - 44032: 0x83D2, + 44717 - 44032: 0x83D3, + 44718 - 44032: 0x83D4, + 44719 - 44032: 0x83D5, + 44720 - 44032: 0x83D6, + 44721 - 44032: 0x83D7, + 44722 - 44032: 0x83D8, + 44723 - 44032: 0x83D9, + 44724 - 44032: 0x83DA, + 44725 - 44032: 0x83DB, + 44726 - 44032: 0x83DC, + 44727 - 44032: 0x83DD, + 44728 - 44032: 0x83DE, + 44729 - 44032: 0x83DF, + 44730 - 44032: 0x83E0, + 44731 - 44032: 0x83E1, + 44732 - 44032: 0xB2A8, + 44733 - 44032: 0xB2A9, + 44734 - 44032: 0xB2AA, + 44735 - 44032: 0x83E2, + 44736 - 44032: 0xB2AB, + 44737 - 44032: 0x83E3, + 44738 - 44032: 0x83E4, + 44739 - 44032: 0x83E5, + 44740 - 44032: 0xB2AC, + 44741 - 44032: 0x83E6, + 44742 - 44032: 0x83E7, + 44743 - 44032: 0x83E8, + 44744 - 44032: 0x83E9, + 44745 - 44032: 0x83EA, + 44746 - 44032: 0x83EB, + 44747 - 44032: 0x83EC, + 44748 - 44032: 0xB2AD, + 44749 - 44032: 0xB2AE, + 44750 - 44032: 0x83ED, + 44751 - 44032: 0xB2AF, + 44752 - 44032: 0xB2B0, + 44753 - 44032: 0xB2B1, + 44754 - 44032: 0x83EE, + 44755 - 44032: 0x83EF, + 44756 - 44032: 0x83F0, + 44757 - 44032: 0x83F1, + 44758 - 44032: 0x83F2, + 44759 - 44032: 0x83F3, + 44760 - 44032: 0xB2B2, + 44761 - 44032: 0xB2B3, + 44762 - 44032: 0x83F4, + 44763 - 44032: 0x83F5, + 44764 - 44032: 0xB2B4, + 44765 - 44032: 0x83F6, + 44766 - 44032: 0x83F7, + 44767 - 44032: 0x83F8, + 44768 - 44032: 0x83F9, + 44769 - 44032: 0x83FA, + 44770 - 44032: 0x83FB, + 44771 - 44032: 0x83FC, + 44772 - 44032: 0x83FD, + 44773 - 44032: 0x83FE, + 44774 - 44032: 0x8441, + 44775 - 44032: 0x8442, + 44776 - 44032: 0xB2B5, + 44777 - 44032: 0x8443, + 44778 - 44032: 0x8444, + 44779 - 44032: 0xB2B6, + 44780 - 44032: 0x8445, + 44781 - 44032: 0xB2B7, + 44782 - 44032: 0x8446, + 44783 - 44032: 0x8447, + 44784 - 44032: 0x8448, + 44785 - 44032: 0x8449, + 44786 - 44032: 0x844A, + 44787 - 44032: 0x844B, + 44788 - 44032: 0xB2B8, + 44789 - 44032: 0x844C, + 44790 - 44032: 0x844D, + 44791 - 44032: 0x844E, + 44792 - 44032: 0xB2B9, + 44793 - 44032: 0x844F, + 44794 - 44032: 0x8450, + 44795 - 44032: 0x8451, + 44796 - 44032: 0xB2BA, + 44797 - 44032: 0x8452, + 44798 - 44032: 0x8453, + 44799 - 44032: 0x8454, + 44800 - 44032: 0x8455, + 44801 - 44032: 0x8456, + 44802 - 44032: 0x8457, + 44803 - 44032: 0x8458, + 44804 - 44032: 0x8459, + 44805 - 44032: 0x845A, + 44806 - 44032: 0x8461, + 44807 - 44032: 0xB2BB, + 44808 - 44032: 0xB2BC, + 44809 - 44032: 0x8462, + 44810 - 44032: 0x8463, + 44811 - 44032: 0x8464, + 44812 - 44032: 0x8465, + 44813 - 44032: 0xB2BD, + 44814 - 44032: 0x8466, + 44815 - 44032: 0x8467, + 44816 - 44032: 0xB2BE, + 44817 - 44032: 0x8468, + 44818 - 44032: 0x8469, + 44819 - 44032: 0x846A, + 44820 - 44032: 0x846B, + 44821 - 44032: 0x846C, + 44822 - 44032: 0x846D, + 44823 - 44032: 0x846E, + 44824 - 44032: 0x846F, + 44825 - 44032: 0x8470, + 44826 - 44032: 0x8471, + 44827 - 44032: 0x8472, + 44828 - 44032: 0x8473, + 44829 - 44032: 0x8474, + 44830 - 44032: 0x8475, + 44831 - 44032: 0x8476, + 44832 - 44032: 0x8477, + 44833 - 44032: 0x8478, + 44834 - 44032: 0x8479, + 44835 - 44032: 0x847A, + 44836 - 44032: 0x8481, + 44837 - 44032: 0x8482, + 44838 - 44032: 0x8483, + 44839 - 44032: 0x8484, + 44840 - 44032: 0x8485, + 44841 - 44032: 0x8486, + 44842 - 44032: 0x8487, + 44843 - 44032: 0x8488, + 44844 - 44032: 0xB2BF, + 44845 - 44032: 0xB2C0, + 44846 - 44032: 0x8489, + 44847 - 44032: 0x848A, + 44848 - 44032: 0xB2C1, + 44849 - 44032: 0x848B, + 44850 - 44032: 0xB2C2, + 44851 - 44032: 0x848C, + 44852 - 44032: 0xB2C3, + 44853 - 44032: 0x848D, + 44854 - 44032: 0x848E, + 44855 - 44032: 0x848F, + 44856 - 44032: 0x8490, + 44857 - 44032: 0x8491, + 44858 - 44032: 0x8492, + 44859 - 44032: 0x8493, + 44860 - 44032: 0xB2C4, + 44861 - 44032: 0xB2C5, + 44862 - 44032: 0x8494, + 44863 - 44032: 0xB2C6, + 44864 - 44032: 0x8495, + 44865 - 44032: 0xB2C7, + 44866 - 44032: 0xB2C8, + 44867 - 44032: 0xB2C9, + 44868 - 44032: 0x8496, + 44869 - 44032: 0x8497, + 44870 - 44032: 0x8498, + 44871 - 44032: 0x8499, + 44872 - 44032: 0xB2CA, + 44873 - 44032: 0xB2CB, + 44874 - 44032: 0x849A, + 44875 - 44032: 0x849B, + 44876 - 44032: 0x849C, + 44877 - 44032: 0x849D, + 44878 - 44032: 0x849E, + 44879 - 44032: 0x849F, + 44880 - 44032: 0xB2CC, + 44881 - 44032: 0x84A0, + 44882 - 44032: 0x84A1, + 44883 - 44032: 0x84A2, + 44884 - 44032: 0x84A3, + 44885 - 44032: 0x84A4, + 44886 - 44032: 0x84A5, + 44887 - 44032: 0x84A6, + 44888 - 44032: 0x84A7, + 44889 - 44032: 0x84A8, + 44890 - 44032: 0x84A9, + 44891 - 44032: 0x84AA, + 44892 - 44032: 0xB2CD, + 44893 - 44032: 0xB2CE, + 44894 - 44032: 0x84AB, + 44895 - 44032: 0x84AC, + 44896 - 44032: 0x84AD, + 44897 - 44032: 0x84AE, + 44898 - 44032: 0x84AF, + 44899 - 44032: 0x84B0, + 44900 - 44032: 0xB2CF, + 44901 - 44032: 0xB2D0, + 44902 - 44032: 0x84B1, + 44903 - 44032: 0x84B2, + 44904 - 44032: 0x84B3, + 44905 - 44032: 0x84B4, + 44906 - 44032: 0x84B5, + 44907 - 44032: 0x84B6, + 44908 - 44032: 0x84B7, + 44909 - 44032: 0x84B8, + 44910 - 44032: 0x84B9, + 44911 - 44032: 0x84BA, + 44912 - 44032: 0x84BB, + 44913 - 44032: 0x84BC, + 44914 - 44032: 0x84BD, + 44915 - 44032: 0x84BE, + 44916 - 44032: 0x84BF, + 44917 - 44032: 0x84C0, + 44918 - 44032: 0x84C1, + 44919 - 44032: 0x84C2, + 44920 - 44032: 0x84C3, + 44921 - 44032: 0xB2D1, + 44922 - 44032: 0x84C4, + 44923 - 44032: 0x84C5, + 44924 - 44032: 0x84C6, + 44925 - 44032: 0x84C7, + 44926 - 44032: 0x84C8, + 44927 - 44032: 0x84C9, + 44928 - 44032: 0xB2D2, + 44929 - 44032: 0x84CA, + 44930 - 44032: 0x84CB, + 44931 - 44032: 0x84CC, + 44932 - 44032: 0xB2D3, + 44933 - 44032: 0x84CD, + 44934 - 44032: 0x84CE, + 44935 - 44032: 0x84CF, + 44936 - 44032: 0xB2D4, + 44937 - 44032: 0x84D0, + 44938 - 44032: 0x84D1, + 44939 - 44032: 0x84D2, + 44940 - 44032: 0x84D3, + 44941 - 44032: 0x84D4, + 44942 - 44032: 0x84D5, + 44943 - 44032: 0x84D6, + 44944 - 44032: 0xB2D5, + 44945 - 44032: 0xB2D6, + 44946 - 44032: 0x84D7, + 44947 - 44032: 0x84D8, + 44948 - 44032: 0x84D9, + 44949 - 44032: 0xB2D7, + 44950 - 44032: 0x84DA, + 44951 - 44032: 0x84DB, + 44952 - 44032: 0x84DC, + 44953 - 44032: 0x84DD, + 44954 - 44032: 0x84DE, + 44955 - 44032: 0x84DF, + 44956 - 44032: 0xB2D8, + 44957 - 44032: 0x84E0, + 44958 - 44032: 0x84E1, + 44959 - 44032: 0x84E2, + 44960 - 44032: 0x84E3, + 44961 - 44032: 0x84E4, + 44962 - 44032: 0x84E5, + 44963 - 44032: 0x84E6, + 44964 - 44032: 0x84E7, + 44965 - 44032: 0x84E8, + 44966 - 44032: 0x84E9, + 44967 - 44032: 0x84EA, + 44968 - 44032: 0x84EB, + 44969 - 44032: 0x84EC, + 44970 - 44032: 0x84ED, + 44971 - 44032: 0x84EE, + 44972 - 44032: 0x84EF, + 44973 - 44032: 0x84F0, + 44974 - 44032: 0x84F1, + 44975 - 44032: 0x84F2, + 44976 - 44032: 0x84F3, + 44977 - 44032: 0x84F4, + 44978 - 44032: 0x84F5, + 44979 - 44032: 0x84F6, + 44980 - 44032: 0x84F7, + 44981 - 44032: 0x84F8, + 44982 - 44032: 0x84F9, + 44983 - 44032: 0x84FA, + 44984 - 44032: 0xB2D9, + 44985 - 44032: 0xB2DA, + 44986 - 44032: 0x84FB, + 44987 - 44032: 0x84FC, + 44988 - 44032: 0xB2DB, + 44989 - 44032: 0x84FD, + 44990 - 44032: 0x84FE, + 44991 - 44032: 0x8541, + 44992 - 44032: 0xB2DC, + 44993 - 44032: 0x8542, + 44994 - 44032: 0x8543, + 44995 - 44032: 0x8544, + 44996 - 44032: 0x8545, + 44997 - 44032: 0x8546, + 44998 - 44032: 0x8547, + 44999 - 44032: 0xB2DD, + 45000 - 44032: 0xB2DE, + 45001 - 44032: 0xB2DF, + 45002 - 44032: 0x8548, + 45003 - 44032: 0xB2E0, + 45004 - 44032: 0x8549, + 45005 - 44032: 0xB2E1, + 45006 - 44032: 0xB2E2, + 45007 - 44032: 0x854A, + 45008 - 44032: 0x854B, + 45009 - 44032: 0x854C, + 45010 - 44032: 0x854D, + 45011 - 44032: 0x854E, + 45012 - 44032: 0xB2E3, + 45013 - 44032: 0x854F, + 45014 - 44032: 0x8550, + 45015 - 44032: 0x8551, + 45016 - 44032: 0x8552, + 45017 - 44032: 0x8553, + 45018 - 44032: 0x8554, + 45019 - 44032: 0x8555, + 45020 - 44032: 0xB2E4, + 45021 - 44032: 0x8556, + 45022 - 44032: 0x8557, + 45023 - 44032: 0x8558, + 45024 - 44032: 0x8559, + 45025 - 44032: 0x855A, + 45026 - 44032: 0x8561, + 45027 - 44032: 0x8562, + 45028 - 44032: 0x8563, + 45029 - 44032: 0x8564, + 45030 - 44032: 0x8565, + 45031 - 44032: 0x8566, + 45032 - 44032: 0xB2E5, + 45033 - 44032: 0xB2E6, + 45034 - 44032: 0x8567, + 45035 - 44032: 0x8568, + 45036 - 44032: 0x8569, + 45037 - 44032: 0x856A, + 45038 - 44032: 0x856B, + 45039 - 44032: 0x856C, + 45040 - 44032: 0xB2E7, + 45041 - 44032: 0xB2E8, + 45042 - 44032: 0x856D, + 45043 - 44032: 0x856E, + 45044 - 44032: 0xB2E9, + 45045 - 44032: 0x856F, + 45046 - 44032: 0x8570, + 45047 - 44032: 0x8571, + 45048 - 44032: 0xB2EA, + 45049 - 44032: 0x8572, + 45050 - 44032: 0x8573, + 45051 - 44032: 0x8574, + 45052 - 44032: 0x8575, + 45053 - 44032: 0x8576, + 45054 - 44032: 0x8577, + 45055 - 44032: 0x8578, + 45056 - 44032: 0xB2EB, + 45057 - 44032: 0xB2EC, + 45058 - 44032: 0x8579, + 45059 - 44032: 0x857A, + 45060 - 44032: 0xB2ED, + 45061 - 44032: 0x8581, + 45062 - 44032: 0x8582, + 45063 - 44032: 0x8583, + 45064 - 44032: 0x8584, + 45065 - 44032: 0x8585, + 45066 - 44032: 0x8586, + 45067 - 44032: 0x8587, + 45068 - 44032: 0xB2EE, + 45069 - 44032: 0x8588, + 45070 - 44032: 0x8589, + 45071 - 44032: 0x858A, + 45072 - 44032: 0xB2EF, + 45073 - 44032: 0x858B, + 45074 - 44032: 0x858C, + 45075 - 44032: 0x858D, + 45076 - 44032: 0xB2F0, + 45077 - 44032: 0x858E, + 45078 - 44032: 0x858F, + 45079 - 44032: 0x8590, + 45080 - 44032: 0x8591, + 45081 - 44032: 0x8592, + 45082 - 44032: 0x8593, + 45083 - 44032: 0x8594, + 45084 - 44032: 0xB2F1, + 45085 - 44032: 0xB2F2, + 45086 - 44032: 0x8595, + 45087 - 44032: 0x8596, + 45088 - 44032: 0x8597, + 45089 - 44032: 0x8598, + 45090 - 44032: 0x8599, + 45091 - 44032: 0x859A, + 45092 - 44032: 0x859B, + 45093 - 44032: 0x859C, + 45094 - 44032: 0x859D, + 45095 - 44032: 0x859E, + 45096 - 44032: 0xB2F3, + 45097 - 44032: 0x859F, + 45098 - 44032: 0x85A0, + 45099 - 44032: 0x85A1, + 45100 - 44032: 0x85A2, + 45101 - 44032: 0x85A3, + 45102 - 44032: 0x85A4, + 45103 - 44032: 0x85A5, + 45104 - 44032: 0x85A6, + 45105 - 44032: 0x85A7, + 45106 - 44032: 0x85A8, + 45107 - 44032: 0x85A9, + 45108 - 44032: 0x85AA, + 45109 - 44032: 0x85AB, + 45110 - 44032: 0x85AC, + 45111 - 44032: 0x85AD, + 45112 - 44032: 0x85AE, + 45113 - 44032: 0x85AF, + 45114 - 44032: 0x85B0, + 45115 - 44032: 0x85B1, + 45116 - 44032: 0x85B2, + 45117 - 44032: 0x85B3, + 45118 - 44032: 0x85B4, + 45119 - 44032: 0x85B5, + 45120 - 44032: 0x85B6, + 45121 - 44032: 0x85B7, + 45122 - 44032: 0x85B8, + 45123 - 44032: 0x85B9, + 45124 - 44032: 0xB2F4, + 45125 - 44032: 0xB2F5, + 45126 - 44032: 0x85BA, + 45127 - 44032: 0x85BB, + 45128 - 44032: 0xB2F6, + 45129 - 44032: 0x85BC, + 45130 - 44032: 0xB2F7, + 45131 - 44032: 0x85BD, + 45132 - 44032: 0xB2F8, + 45133 - 44032: 0x85BE, + 45134 - 44032: 0xB2F9, + 45135 - 44032: 0x85BF, + 45136 - 44032: 0x85C0, + 45137 - 44032: 0x85C1, + 45138 - 44032: 0x85C2, + 45139 - 44032: 0xB2FA, + 45140 - 44032: 0xB2FB, + 45141 - 44032: 0xB2FC, + 45142 - 44032: 0x85C3, + 45143 - 44032: 0xB2FD, + 45144 - 44032: 0x85C4, + 45145 - 44032: 0xB2FE, + 45146 - 44032: 0x85C5, + 45147 - 44032: 0x85C6, + 45148 - 44032: 0x85C7, + 45149 - 44032: 0xB3A1, + 45150 - 44032: 0x85C8, + 45151 - 44032: 0x85C9, + 45152 - 44032: 0x85CA, + 45153 - 44032: 0x85CB, + 45154 - 44032: 0x85CC, + 45155 - 44032: 0x85CD, + 45156 - 44032: 0x85CE, + 45157 - 44032: 0x85CF, + 45158 - 44032: 0x85D0, + 45159 - 44032: 0x85D1, + 45160 - 44032: 0x85D2, + 45161 - 44032: 0x85D3, + 45162 - 44032: 0x85D4, + 45163 - 44032: 0x85D5, + 45164 - 44032: 0x85D6, + 45165 - 44032: 0x85D7, + 45166 - 44032: 0x85D8, + 45167 - 44032: 0x85D9, + 45168 - 44032: 0x85DA, + 45169 - 44032: 0x85DB, + 45170 - 44032: 0x85DC, + 45171 - 44032: 0x85DD, + 45172 - 44032: 0x85DE, + 45173 - 44032: 0x85DF, + 45174 - 44032: 0x85E0, + 45175 - 44032: 0x85E1, + 45176 - 44032: 0x85E2, + 45177 - 44032: 0x85E3, + 45178 - 44032: 0x85E4, + 45179 - 44032: 0x85E5, + 45180 - 44032: 0xB3A2, + 45181 - 44032: 0xB3A3, + 45182 - 44032: 0x85E6, + 45183 - 44032: 0x85E7, + 45184 - 44032: 0xB3A4, + 45185 - 44032: 0x85E8, + 45186 - 44032: 0x85E9, + 45187 - 44032: 0x85EA, + 45188 - 44032: 0xB3A5, + 45189 - 44032: 0x85EB, + 45190 - 44032: 0x85EC, + 45191 - 44032: 0x85ED, + 45192 - 44032: 0x85EE, + 45193 - 44032: 0x85EF, + 45194 - 44032: 0x85F0, + 45195 - 44032: 0x85F1, + 45196 - 44032: 0xB3A6, + 45197 - 44032: 0xB3A7, + 45198 - 44032: 0x85F2, + 45199 - 44032: 0xB3A8, + 45200 - 44032: 0x85F3, + 45201 - 44032: 0xB3A9, + 45202 - 44032: 0x85F4, + 45203 - 44032: 0x85F5, + 45204 - 44032: 0x85F6, + 45205 - 44032: 0x85F7, + 45206 - 44032: 0x85F8, + 45207 - 44032: 0x85F9, + 45208 - 44032: 0xB3AA, + 45209 - 44032: 0xB3AB, + 45210 - 44032: 0xB3AC, + 45211 - 44032: 0x85FA, + 45212 - 44032: 0xB3AD, + 45213 - 44032: 0x85FB, + 45214 - 44032: 0x85FC, + 45215 - 44032: 0xB3AE, + 45216 - 44032: 0xB3AF, + 45217 - 44032: 0xB3B0, + 45218 - 44032: 0xB3B1, + 45219 - 44032: 0x85FD, + 45220 - 44032: 0x85FE, + 45221 - 44032: 0x8641, + 45222 - 44032: 0x8642, + 45223 - 44032: 0x8643, + 45224 - 44032: 0xB3B2, + 45225 - 44032: 0xB3B3, + 45226 - 44032: 0x8644, + 45227 - 44032: 0xB3B4, + 45228 - 44032: 0xB3B5, + 45229 - 44032: 0xB3B6, + 45230 - 44032: 0xB3B7, + 45231 - 44032: 0xB3B8, + 45232 - 44032: 0x8645, + 45233 - 44032: 0xB3B9, + 45234 - 44032: 0x8646, + 45235 - 44032: 0xB3BA, + 45236 - 44032: 0xB3BB, + 45237 - 44032: 0xB3BC, + 45238 - 44032: 0x8647, + 45239 - 44032: 0x8648, + 45240 - 44032: 0xB3BD, + 45241 - 44032: 0x8649, + 45242 - 44032: 0x864A, + 45243 - 44032: 0x864B, + 45244 - 44032: 0xB3BE, + 45245 - 44032: 0x864C, + 45246 - 44032: 0x864D, + 45247 - 44032: 0x864E, + 45248 - 44032: 0x864F, + 45249 - 44032: 0x8650, + 45250 - 44032: 0x8651, + 45251 - 44032: 0x8652, + 45252 - 44032: 0xB3BF, + 45253 - 44032: 0xB3C0, + 45254 - 44032: 0x8653, + 45255 - 44032: 0xB3C1, + 45256 - 44032: 0xB3C2, + 45257 - 44032: 0xB3C3, + 45258 - 44032: 0x8654, + 45259 - 44032: 0x8655, + 45260 - 44032: 0x8656, + 45261 - 44032: 0x8657, + 45262 - 44032: 0x8658, + 45263 - 44032: 0x8659, + 45264 - 44032: 0xB3C4, + 45265 - 44032: 0xB3C5, + 45266 - 44032: 0x865A, + 45267 - 44032: 0x8661, + 45268 - 44032: 0xB3C6, + 45269 - 44032: 0x8662, + 45270 - 44032: 0x8663, + 45271 - 44032: 0x8664, + 45272 - 44032: 0xB3C7, + 45273 - 44032: 0x8665, + 45274 - 44032: 0x8666, + 45275 - 44032: 0x8667, + 45276 - 44032: 0x8668, + 45277 - 44032: 0x8669, + 45278 - 44032: 0x866A, + 45279 - 44032: 0x866B, + 45280 - 44032: 0xB3C8, + 45281 - 44032: 0x866C, + 45282 - 44032: 0x866D, + 45283 - 44032: 0x866E, + 45284 - 44032: 0x866F, + 45285 - 44032: 0xB3C9, + 45286 - 44032: 0x8670, + 45287 - 44032: 0x8671, + 45288 - 44032: 0x8672, + 45289 - 44032: 0x8673, + 45290 - 44032: 0x8674, + 45291 - 44032: 0x8675, + 45292 - 44032: 0x8676, + 45293 - 44032: 0x8677, + 45294 - 44032: 0x8678, + 45295 - 44032: 0x8679, + 45296 - 44032: 0x867A, + 45297 - 44032: 0x8681, + 45298 - 44032: 0x8682, + 45299 - 44032: 0x8683, + 45300 - 44032: 0x8684, + 45301 - 44032: 0x8685, + 45302 - 44032: 0x8686, + 45303 - 44032: 0x8687, + 45304 - 44032: 0x8688, + 45305 - 44032: 0x8689, + 45306 - 44032: 0x868A, + 45307 - 44032: 0x868B, + 45308 - 44032: 0x868C, + 45309 - 44032: 0x868D, + 45310 - 44032: 0x868E, + 45311 - 44032: 0x868F, + 45312 - 44032: 0x8690, + 45313 - 44032: 0x8691, + 45314 - 44032: 0x8692, + 45315 - 44032: 0x8693, + 45316 - 44032: 0x8694, + 45317 - 44032: 0x8695, + 45318 - 44032: 0x8696, + 45319 - 44032: 0x8697, + 45320 - 44032: 0xB3CA, + 45321 - 44032: 0xB3CB, + 45322 - 44032: 0x8698, + 45323 - 44032: 0xB3CC, + 45324 - 44032: 0xB3CD, + 45325 - 44032: 0x8699, + 45326 - 44032: 0x869A, + 45327 - 44032: 0x869B, + 45328 - 44032: 0xB3CE, + 45329 - 44032: 0x869C, + 45330 - 44032: 0xB3CF, + 45331 - 44032: 0xB3D0, + 45332 - 44032: 0x869D, + 45333 - 44032: 0x869E, + 45334 - 44032: 0x869F, + 45335 - 44032: 0x86A0, + 45336 - 44032: 0xB3D1, + 45337 - 44032: 0xB3D2, + 45338 - 44032: 0x86A1, + 45339 - 44032: 0xB3D3, + 45340 - 44032: 0xB3D4, + 45341 - 44032: 0xB3D5, + 45342 - 44032: 0x86A2, + 45343 - 44032: 0x86A3, + 45344 - 44032: 0x86A4, + 45345 - 44032: 0x86A5, + 45346 - 44032: 0x86A6, + 45347 - 44032: 0xB3D6, + 45348 - 44032: 0xB3D7, + 45349 - 44032: 0xB3D8, + 45350 - 44032: 0x86A7, + 45351 - 44032: 0x86A8, + 45352 - 44032: 0xB3D9, + 45353 - 44032: 0x86A9, + 45354 - 44032: 0x86AA, + 45355 - 44032: 0x86AB, + 45356 - 44032: 0xB3DA, + 45357 - 44032: 0x86AC, + 45358 - 44032: 0x86AD, + 45359 - 44032: 0x86AE, + 45360 - 44032: 0x86AF, + 45361 - 44032: 0x86B0, + 45362 - 44032: 0x86B1, + 45363 - 44032: 0x86B2, + 45364 - 44032: 0xB3DB, + 45365 - 44032: 0xB3DC, + 45366 - 44032: 0x86B3, + 45367 - 44032: 0xB3DD, + 45368 - 44032: 0xB3DE, + 45369 - 44032: 0xB3DF, + 45370 - 44032: 0x86B4, + 45371 - 44032: 0x86B5, + 45372 - 44032: 0x86B6, + 45373 - 44032: 0x86B7, + 45374 - 44032: 0x86B8, + 45375 - 44032: 0x86B9, + 45376 - 44032: 0xB3E0, + 45377 - 44032: 0xB3E1, + 45378 - 44032: 0x86BA, + 45379 - 44032: 0x86BB, + 45380 - 44032: 0xB3E2, + 45381 - 44032: 0x86BC, + 45382 - 44032: 0x86BD, + 45383 - 44032: 0x86BE, + 45384 - 44032: 0xB3E3, + 45385 - 44032: 0x86BF, + 45386 - 44032: 0x86C0, + 45387 - 44032: 0x86C1, + 45388 - 44032: 0x86C2, + 45389 - 44032: 0x86C3, + 45390 - 44032: 0x86C4, + 45391 - 44032: 0x86C5, + 45392 - 44032: 0xB3E4, + 45393 - 44032: 0xB3E5, + 45394 - 44032: 0x86C6, + 45395 - 44032: 0x86C7, + 45396 - 44032: 0xB3E6, + 45397 - 44032: 0xB3E7, + 45398 - 44032: 0x86C8, + 45399 - 44032: 0x86C9, + 45400 - 44032: 0xB3E8, + 45401 - 44032: 0x86CA, + 45402 - 44032: 0x86CB, + 45403 - 44032: 0x86CC, + 45404 - 44032: 0xB3E9, + 45405 - 44032: 0x86CD, + 45406 - 44032: 0x86CE, + 45407 - 44032: 0x86CF, + 45408 - 44032: 0xB3EA, + 45409 - 44032: 0x86D0, + 45410 - 44032: 0x86D1, + 45411 - 44032: 0x86D2, + 45412 - 44032: 0x86D3, + 45413 - 44032: 0x86D4, + 45414 - 44032: 0x86D5, + 45415 - 44032: 0x86D6, + 45416 - 44032: 0x86D7, + 45417 - 44032: 0x86D8, + 45418 - 44032: 0x86D9, + 45419 - 44032: 0x86DA, + 45420 - 44032: 0x86DB, + 45421 - 44032: 0x86DC, + 45422 - 44032: 0x86DD, + 45423 - 44032: 0x86DE, + 45424 - 44032: 0x86DF, + 45425 - 44032: 0x86E0, + 45426 - 44032: 0x86E1, + 45427 - 44032: 0x86E2, + 45428 - 44032: 0x86E3, + 45429 - 44032: 0x86E4, + 45430 - 44032: 0x86E5, + 45431 - 44032: 0x86E6, + 45432 - 44032: 0xB3EB, + 45433 - 44032: 0xB3EC, + 45434 - 44032: 0x86E7, + 45435 - 44032: 0x86E8, + 45436 - 44032: 0xB3ED, + 45437 - 44032: 0x86E9, + 45438 - 44032: 0x86EA, + 45439 - 44032: 0x86EB, + 45440 - 44032: 0xB3EE, + 45441 - 44032: 0x86EC, + 45442 - 44032: 0xB3EF, + 45443 - 44032: 0x86ED, + 45444 - 44032: 0x86EE, + 45445 - 44032: 0x86EF, + 45446 - 44032: 0x86F0, + 45447 - 44032: 0x86F1, + 45448 - 44032: 0xB3F0, + 45449 - 44032: 0xB3F1, + 45450 - 44032: 0x86F2, + 45451 - 44032: 0xB3F2, + 45452 - 44032: 0x86F3, + 45453 - 44032: 0xB3F3, + 45454 - 44032: 0x86F4, + 45455 - 44032: 0x86F5, + 45456 - 44032: 0x86F6, + 45457 - 44032: 0x86F7, + 45458 - 44032: 0xB3F4, + 45459 - 44032: 0xB3F5, + 45460 - 44032: 0xB3F6, + 45461 - 44032: 0x86F8, + 45462 - 44032: 0x86F9, + 45463 - 44032: 0x86FA, + 45464 - 44032: 0xB3F7, + 45465 - 44032: 0x86FB, + 45466 - 44032: 0x86FC, + 45467 - 44032: 0x86FD, + 45468 - 44032: 0xB3F8, + 45469 - 44032: 0x86FE, + 45470 - 44032: 0x8741, + 45471 - 44032: 0x8742, + 45472 - 44032: 0x8743, + 45473 - 44032: 0x8744, + 45474 - 44032: 0x8745, + 45475 - 44032: 0x8746, + 45476 - 44032: 0x8747, + 45477 - 44032: 0x8748, + 45478 - 44032: 0x8749, + 45479 - 44032: 0x874A, + 45480 - 44032: 0xB3F9, + 45481 - 44032: 0x874B, + 45482 - 44032: 0x874C, + 45483 - 44032: 0x874D, + 45484 - 44032: 0x874E, + 45485 - 44032: 0x874F, + 45486 - 44032: 0x8750, + 45487 - 44032: 0x8751, + 45488 - 44032: 0x8752, + 45489 - 44032: 0x8753, + 45490 - 44032: 0x8754, + 45491 - 44032: 0x8755, + 45492 - 44032: 0x8756, + 45493 - 44032: 0x8757, + 45494 - 44032: 0x8758, + 45495 - 44032: 0x8759, + 45496 - 44032: 0x875A, + 45497 - 44032: 0x8761, + 45498 - 44032: 0x8762, + 45499 - 44032: 0x8763, + 45500 - 44032: 0x8764, + 45501 - 44032: 0x8765, + 45502 - 44032: 0x8766, + 45503 - 44032: 0x8767, + 45504 - 44032: 0x8768, + 45505 - 44032: 0x8769, + 45506 - 44032: 0x876A, + 45507 - 44032: 0x876B, + 45508 - 44032: 0x876C, + 45509 - 44032: 0x876D, + 45510 - 44032: 0x876E, + 45511 - 44032: 0x876F, + 45512 - 44032: 0x8770, + 45513 - 44032: 0x8771, + 45514 - 44032: 0x8772, + 45515 - 44032: 0x8773, + 45516 - 44032: 0xB3FA, + 45517 - 44032: 0x8774, + 45518 - 44032: 0x8775, + 45519 - 44032: 0x8776, + 45520 - 44032: 0xB3FB, + 45521 - 44032: 0x8777, + 45522 - 44032: 0x8778, + 45523 - 44032: 0x8779, + 45524 - 44032: 0xB3FC, + 45525 - 44032: 0x877A, + 45526 - 44032: 0x8781, + 45527 - 44032: 0x8782, + 45528 - 44032: 0x8783, + 45529 - 44032: 0x8784, + 45530 - 44032: 0x8785, + 45531 - 44032: 0x8786, + 45532 - 44032: 0xB3FD, + 45533 - 44032: 0xB3FE, + 45534 - 44032: 0x8787, + 45535 - 44032: 0xB4A1, + 45536 - 44032: 0x8788, + 45537 - 44032: 0x8789, + 45538 - 44032: 0x878A, + 45539 - 44032: 0x878B, + 45540 - 44032: 0x878C, + 45541 - 44032: 0x878D, + 45542 - 44032: 0x878E, + 45543 - 44032: 0x878F, + 45544 - 44032: 0xB4A2, + 45545 - 44032: 0xB4A3, + 45546 - 44032: 0x8790, + 45547 - 44032: 0x8791, + 45548 - 44032: 0xB4A4, + 45549 - 44032: 0x8792, + 45550 - 44032: 0x8793, + 45551 - 44032: 0x8794, + 45552 - 44032: 0xB4A5, + 45553 - 44032: 0x8795, + 45554 - 44032: 0x8796, + 45555 - 44032: 0x8797, + 45556 - 44032: 0x8798, + 45557 - 44032: 0x8799, + 45558 - 44032: 0x879A, + 45559 - 44032: 0x879B, + 45560 - 44032: 0x879C, + 45561 - 44032: 0xB4A6, + 45562 - 44032: 0x879D, + 45563 - 44032: 0xB4A7, + 45564 - 44032: 0x879E, + 45565 - 44032: 0xB4A8, + 45566 - 44032: 0x879F, + 45567 - 44032: 0x87A0, + 45568 - 44032: 0x87A1, + 45569 - 44032: 0x87A2, + 45570 - 44032: 0x87A3, + 45571 - 44032: 0x87A4, + 45572 - 44032: 0xB4A9, + 45573 - 44032: 0xB4AA, + 45574 - 44032: 0x87A5, + 45575 - 44032: 0x87A6, + 45576 - 44032: 0xB4AB, + 45577 - 44032: 0x87A7, + 45578 - 44032: 0x87A8, + 45579 - 44032: 0xB4AC, + 45580 - 44032: 0xB4AD, + 45581 - 44032: 0x87A9, + 45582 - 44032: 0x87AA, + 45583 - 44032: 0x87AB, + 45584 - 44032: 0x87AC, + 45585 - 44032: 0x87AD, + 45586 - 44032: 0x87AE, + 45587 - 44032: 0x87AF, + 45588 - 44032: 0xB4AE, + 45589 - 44032: 0xB4AF, + 45590 - 44032: 0x87B0, + 45591 - 44032: 0xB4B0, + 45592 - 44032: 0x87B1, + 45593 - 44032: 0xB4B1, + 45594 - 44032: 0x87B2, + 45595 - 44032: 0x87B3, + 45596 - 44032: 0x87B4, + 45597 - 44032: 0x87B5, + 45598 - 44032: 0x87B6, + 45599 - 44032: 0x87B7, + 45600 - 44032: 0xB4B2, + 45601 - 44032: 0x87B8, + 45602 - 44032: 0x87B9, + 45603 - 44032: 0x87BA, + 45604 - 44032: 0x87BB, + 45605 - 44032: 0x87BC, + 45606 - 44032: 0x87BD, + 45607 - 44032: 0x87BE, + 45608 - 44032: 0x87BF, + 45609 - 44032: 0x87C0, + 45610 - 44032: 0x87C1, + 45611 - 44032: 0x87C2, + 45612 - 44032: 0x87C3, + 45613 - 44032: 0x87C4, + 45614 - 44032: 0x87C5, + 45615 - 44032: 0x87C6, + 45616 - 44032: 0x87C7, + 45617 - 44032: 0x87C8, + 45618 - 44032: 0x87C9, + 45619 - 44032: 0x87CA, + 45620 - 44032: 0xB4B3, + 45621 - 44032: 0x87CB, + 45622 - 44032: 0x87CC, + 45623 - 44032: 0x87CD, + 45624 - 44032: 0x87CE, + 45625 - 44032: 0x87CF, + 45626 - 44032: 0x87D0, + 45627 - 44032: 0x87D1, + 45628 - 44032: 0xB4B4, + 45629 - 44032: 0x87D2, + 45630 - 44032: 0x87D3, + 45631 - 44032: 0x87D4, + 45632 - 44032: 0x87D5, + 45633 - 44032: 0x87D6, + 45634 - 44032: 0x87D7, + 45635 - 44032: 0x87D8, + 45636 - 44032: 0x87D9, + 45637 - 44032: 0x87DA, + 45638 - 44032: 0x87DB, + 45639 - 44032: 0x87DC, + 45640 - 44032: 0x87DD, + 45641 - 44032: 0x87DE, + 45642 - 44032: 0x87DF, + 45643 - 44032: 0x87E0, + 45644 - 44032: 0x87E1, + 45645 - 44032: 0x87E2, + 45646 - 44032: 0x87E3, + 45647 - 44032: 0x87E4, + 45648 - 44032: 0x87E5, + 45649 - 44032: 0x87E6, + 45650 - 44032: 0x87E7, + 45651 - 44032: 0x87E8, + 45652 - 44032: 0x87E9, + 45653 - 44032: 0x87EA, + 45654 - 44032: 0x87EB, + 45655 - 44032: 0x87EC, + 45656 - 44032: 0xB4B5, + 45657 - 44032: 0x87ED, + 45658 - 44032: 0x87EE, + 45659 - 44032: 0x87EF, + 45660 - 44032: 0xB4B6, + 45661 - 44032: 0x87F0, + 45662 - 44032: 0x87F1, + 45663 - 44032: 0x87F2, + 45664 - 44032: 0xB4B7, + 45665 - 44032: 0x87F3, + 45666 - 44032: 0x87F4, + 45667 - 44032: 0x87F5, + 45668 - 44032: 0x87F6, + 45669 - 44032: 0x87F7, + 45670 - 44032: 0x87F8, + 45671 - 44032: 0x87F9, + 45672 - 44032: 0xB4B8, + 45673 - 44032: 0xB4B9, + 45674 - 44032: 0x87FA, + 45675 - 44032: 0x87FB, + 45676 - 44032: 0x87FC, + 45677 - 44032: 0x87FD, + 45678 - 44032: 0x87FE, + 45679 - 44032: 0x8841, + 45680 - 44032: 0x8842, + 45681 - 44032: 0x8843, + 45682 - 44032: 0x8844, + 45683 - 44032: 0x8845, + 45684 - 44032: 0xB4BA, + 45685 - 44032: 0xB4BB, + 45686 - 44032: 0x8846, + 45687 - 44032: 0x8847, + 45688 - 44032: 0x8848, + 45689 - 44032: 0x8849, + 45690 - 44032: 0x884A, + 45691 - 44032: 0x884B, + 45692 - 44032: 0xB4BC, + 45693 - 44032: 0x884C, + 45694 - 44032: 0x884D, + 45695 - 44032: 0x884E, + 45696 - 44032: 0x884F, + 45697 - 44032: 0x8850, + 45698 - 44032: 0x8851, + 45699 - 44032: 0x8852, + 45700 - 44032: 0xB4BD, + 45701 - 44032: 0xB4BE, + 45702 - 44032: 0x8853, + 45703 - 44032: 0x8854, + 45704 - 44032: 0x8855, + 45705 - 44032: 0xB4BF, + 45706 - 44032: 0x8856, + 45707 - 44032: 0x8857, + 45708 - 44032: 0x8858, + 45709 - 44032: 0x8859, + 45710 - 44032: 0x885A, + 45711 - 44032: 0x8861, + 45712 - 44032: 0xB4C0, + 45713 - 44032: 0xB4C1, + 45714 - 44032: 0x8862, + 45715 - 44032: 0x8863, + 45716 - 44032: 0xB4C2, + 45717 - 44032: 0x8864, + 45718 - 44032: 0x8865, + 45719 - 44032: 0x8866, + 45720 - 44032: 0xB4C3, + 45721 - 44032: 0xB4C4, + 45722 - 44032: 0xB4C5, + 45723 - 44032: 0x8867, + 45724 - 44032: 0x8868, + 45725 - 44032: 0x8869, + 45726 - 44032: 0x886A, + 45727 - 44032: 0x886B, + 45728 - 44032: 0xB4C6, + 45729 - 44032: 0xB4C7, + 45730 - 44032: 0x886C, + 45731 - 44032: 0xB4C8, + 45732 - 44032: 0x886D, + 45733 - 44032: 0xB4C9, + 45734 - 44032: 0xB4CA, + 45735 - 44032: 0x886E, + 45736 - 44032: 0x886F, + 45737 - 44032: 0x8870, + 45738 - 44032: 0xB4CB, + 45739 - 44032: 0x8871, + 45740 - 44032: 0xB4CC, + 45741 - 44032: 0x8872, + 45742 - 44032: 0x8873, + 45743 - 44032: 0x8874, + 45744 - 44032: 0xB4CD, + 45745 - 44032: 0x8875, + 45746 - 44032: 0x8876, + 45747 - 44032: 0x8877, + 45748 - 44032: 0xB4CE, + 45749 - 44032: 0x8878, + 45750 - 44032: 0x8879, + 45751 - 44032: 0x887A, + 45752 - 44032: 0x8881, + 45753 - 44032: 0x8882, + 45754 - 44032: 0x8883, + 45755 - 44032: 0x8884, + 45756 - 44032: 0x8885, + 45757 - 44032: 0x8886, + 45758 - 44032: 0x8887, + 45759 - 44032: 0x8888, + 45760 - 44032: 0x8889, + 45761 - 44032: 0x888A, + 45762 - 44032: 0x888B, + 45763 - 44032: 0x888C, + 45764 - 44032: 0x888D, + 45765 - 44032: 0x888E, + 45766 - 44032: 0x888F, + 45767 - 44032: 0x8890, + 45768 - 44032: 0xB4CF, + 45769 - 44032: 0xB4D0, + 45770 - 44032: 0x8891, + 45771 - 44032: 0x8892, + 45772 - 44032: 0xB4D1, + 45773 - 44032: 0x8893, + 45774 - 44032: 0x8894, + 45775 - 44032: 0x8895, + 45776 - 44032: 0xB4D2, + 45777 - 44032: 0x8896, + 45778 - 44032: 0xB4D3, + 45779 - 44032: 0x8897, + 45780 - 44032: 0x8898, + 45781 - 44032: 0x8899, + 45782 - 44032: 0x889A, + 45783 - 44032: 0x889B, + 45784 - 44032: 0xB4D4, + 45785 - 44032: 0xB4D5, + 45786 - 44032: 0x889C, + 45787 - 44032: 0xB4D6, + 45788 - 44032: 0x889D, + 45789 - 44032: 0xB4D7, + 45790 - 44032: 0x889E, + 45791 - 44032: 0x889F, + 45792 - 44032: 0x88A0, + 45793 - 44032: 0x88A1, + 45794 - 44032: 0xB4D8, + 45795 - 44032: 0x88A2, + 45796 - 44032: 0xB4D9, + 45797 - 44032: 0xB4DA, + 45798 - 44032: 0xB4DB, + 45799 - 44032: 0x88A3, + 45800 - 44032: 0xB4DC, + 45801 - 44032: 0x88A4, + 45802 - 44032: 0x88A5, + 45803 - 44032: 0xB4DD, + 45804 - 44032: 0xB4DE, + 45805 - 44032: 0xB4DF, + 45806 - 44032: 0xB4E0, + 45807 - 44032: 0xB4E1, + 45808 - 44032: 0x88A6, + 45809 - 44032: 0x88A7, + 45810 - 44032: 0x88A8, + 45811 - 44032: 0xB4E2, + 45812 - 44032: 0xB4E3, + 45813 - 44032: 0xB4E4, + 45814 - 44032: 0x88A9, + 45815 - 44032: 0xB4E5, + 45816 - 44032: 0xB4E6, + 45817 - 44032: 0xB4E7, + 45818 - 44032: 0xB4E8, + 45819 - 44032: 0xB4E9, + 45820 - 44032: 0x88AA, + 45821 - 44032: 0x88AB, + 45822 - 44032: 0x88AC, + 45823 - 44032: 0xB4EA, + 45824 - 44032: 0xB4EB, + 45825 - 44032: 0xB4EC, + 45826 - 44032: 0x88AD, + 45827 - 44032: 0x88AE, + 45828 - 44032: 0xB4ED, + 45829 - 44032: 0x88AF, + 45830 - 44032: 0x88B0, + 45831 - 44032: 0x88B1, + 45832 - 44032: 0xB4EE, + 45833 - 44032: 0x88B2, + 45834 - 44032: 0x88B3, + 45835 - 44032: 0x88B4, + 45836 - 44032: 0x88B5, + 45837 - 44032: 0x88B6, + 45838 - 44032: 0x88B7, + 45839 - 44032: 0x88B8, + 45840 - 44032: 0xB4EF, + 45841 - 44032: 0xB4F0, + 45842 - 44032: 0x88B9, + 45843 - 44032: 0xB4F1, + 45844 - 44032: 0xB4F2, + 45845 - 44032: 0xB4F3, + 45846 - 44032: 0x88BA, + 45847 - 44032: 0x88BB, + 45848 - 44032: 0x88BC, + 45849 - 44032: 0x88BD, + 45850 - 44032: 0x88BE, + 45851 - 44032: 0x88BF, + 45852 - 44032: 0xB4F4, + 45853 - 44032: 0x88C0, + 45854 - 44032: 0x88C1, + 45855 - 44032: 0x88C2, + 45856 - 44032: 0x88C3, + 45857 - 44032: 0x88C4, + 45858 - 44032: 0x88C5, + 45859 - 44032: 0x88C6, + 45860 - 44032: 0x88C7, + 45861 - 44032: 0x88C8, + 45862 - 44032: 0x88C9, + 45863 - 44032: 0x88CA, + 45864 - 44032: 0x88CB, + 45865 - 44032: 0x88CC, + 45866 - 44032: 0x88CD, + 45867 - 44032: 0x88CE, + 45868 - 44032: 0x88CF, + 45869 - 44032: 0x88D0, + 45870 - 44032: 0x88D1, + 45871 - 44032: 0x88D2, + 45872 - 44032: 0x88D3, + 45873 - 44032: 0x88D4, + 45874 - 44032: 0x88D5, + 45875 - 44032: 0x88D6, + 45876 - 44032: 0x88D7, + 45877 - 44032: 0x88D8, + 45878 - 44032: 0x88D9, + 45879 - 44032: 0x88DA, + 45880 - 44032: 0x88DB, + 45881 - 44032: 0x88DC, + 45882 - 44032: 0x88DD, + 45883 - 44032: 0x88DE, + 45884 - 44032: 0x88DF, + 45885 - 44032: 0x88E0, + 45886 - 44032: 0x88E1, + 45887 - 44032: 0x88E2, + 45888 - 44032: 0x88E3, + 45889 - 44032: 0x88E4, + 45890 - 44032: 0x88E5, + 45891 - 44032: 0x88E6, + 45892 - 44032: 0x88E7, + 45893 - 44032: 0x88E8, + 45894 - 44032: 0x88E9, + 45895 - 44032: 0x88EA, + 45896 - 44032: 0x88EB, + 45897 - 44032: 0x88EC, + 45898 - 44032: 0x88ED, + 45899 - 44032: 0x88EE, + 45900 - 44032: 0x88EF, + 45901 - 44032: 0x88F0, + 45902 - 44032: 0x88F1, + 45903 - 44032: 0x88F2, + 45904 - 44032: 0x88F3, + 45905 - 44032: 0x88F4, + 45906 - 44032: 0x88F5, + 45907 - 44032: 0x88F6, + 45908 - 44032: 0xB4F5, + 45909 - 44032: 0xB4F6, + 45910 - 44032: 0xB4F7, + 45911 - 44032: 0x88F7, + 45912 - 44032: 0xB4F8, + 45913 - 44032: 0x88F8, + 45914 - 44032: 0x88F9, + 45915 - 44032: 0xB4F9, + 45916 - 44032: 0xB4FA, + 45917 - 44032: 0x88FA, + 45918 - 44032: 0xB4FB, + 45919 - 44032: 0xB4FC, + 45920 - 44032: 0x88FB, + 45921 - 44032: 0x88FC, + 45922 - 44032: 0x88FD, + 45923 - 44032: 0x88FE, + 45924 - 44032: 0xB4FD, + 45925 - 44032: 0xB4FE, + 45926 - 44032: 0x8941, + 45927 - 44032: 0xB5A1, + 45928 - 44032: 0x8942, + 45929 - 44032: 0xB5A2, + 45930 - 44032: 0x8943, + 45931 - 44032: 0xB5A3, + 45932 - 44032: 0x8944, + 45933 - 44032: 0x8945, + 45934 - 44032: 0xB5A4, + 45935 - 44032: 0x8946, + 45936 - 44032: 0xB5A5, + 45937 - 44032: 0xB5A6, + 45938 - 44032: 0x8947, + 45939 - 44032: 0x8948, + 45940 - 44032: 0xB5A7, + 45941 - 44032: 0x8949, + 45942 - 44032: 0x894A, + 45943 - 44032: 0x894B, + 45944 - 44032: 0xB5A8, + 45945 - 44032: 0x894C, + 45946 - 44032: 0x894D, + 45947 - 44032: 0x894E, + 45948 - 44032: 0x894F, + 45949 - 44032: 0x8950, + 45950 - 44032: 0x8951, + 45951 - 44032: 0x8952, + 45952 - 44032: 0xB5A9, + 45953 - 44032: 0xB5AA, + 45954 - 44032: 0x8953, + 45955 - 44032: 0xB5AB, + 45956 - 44032: 0xB5AC, + 45957 - 44032: 0xB5AD, + 45958 - 44032: 0x8954, + 45959 - 44032: 0x8955, + 45960 - 44032: 0x8956, + 45961 - 44032: 0x8957, + 45962 - 44032: 0x8958, + 45963 - 44032: 0x8959, + 45964 - 44032: 0xB5AE, + 45965 - 44032: 0x895A, + 45966 - 44032: 0x8961, + 45967 - 44032: 0x8962, + 45968 - 44032: 0xB5AF, + 45969 - 44032: 0x8963, + 45970 - 44032: 0x8964, + 45971 - 44032: 0x8965, + 45972 - 44032: 0xB5B0, + 45973 - 44032: 0x8966, + 45974 - 44032: 0x8967, + 45975 - 44032: 0x8968, + 45976 - 44032: 0x8969, + 45977 - 44032: 0x896A, + 45978 - 44032: 0x896B, + 45979 - 44032: 0x896C, + 45980 - 44032: 0x896D, + 45981 - 44032: 0x896E, + 45982 - 44032: 0x896F, + 45983 - 44032: 0x8970, + 45984 - 44032: 0xB5B1, + 45985 - 44032: 0xB5B2, + 45986 - 44032: 0x8971, + 45987 - 44032: 0x8972, + 45988 - 44032: 0x8973, + 45989 - 44032: 0x8974, + 45990 - 44032: 0x8975, + 45991 - 44032: 0x8976, + 45992 - 44032: 0xB5B3, + 45993 - 44032: 0x8977, + 45994 - 44032: 0x8978, + 45995 - 44032: 0x8979, + 45996 - 44032: 0xB5B4, + 45997 - 44032: 0x897A, + 45998 - 44032: 0x8981, + 45999 - 44032: 0x8982, + 46000 - 44032: 0x8983, + 46001 - 44032: 0x8984, + 46002 - 44032: 0x8985, + 46003 - 44032: 0x8986, + 46004 - 44032: 0x8987, + 46005 - 44032: 0x8988, + 46006 - 44032: 0x8989, + 46007 - 44032: 0x898A, + 46008 - 44032: 0x898B, + 46009 - 44032: 0x898C, + 46010 - 44032: 0x898D, + 46011 - 44032: 0x898E, + 46012 - 44032: 0x898F, + 46013 - 44032: 0x8990, + 46014 - 44032: 0x8991, + 46015 - 44032: 0x8992, + 46016 - 44032: 0x8993, + 46017 - 44032: 0x8994, + 46018 - 44032: 0x8995, + 46019 - 44032: 0x8996, + 46020 - 44032: 0xB5B5, + 46021 - 44032: 0xB5B6, + 46022 - 44032: 0x8997, + 46023 - 44032: 0x8998, + 46024 - 44032: 0xB5B7, + 46025 - 44032: 0x8999, + 46026 - 44032: 0x899A, + 46027 - 44032: 0xB5B8, + 46028 - 44032: 0xB5B9, + 46029 - 44032: 0x899B, + 46030 - 44032: 0xB5BA, + 46031 - 44032: 0x899C, + 46032 - 44032: 0xB5BB, + 46033 - 44032: 0x899D, + 46034 - 44032: 0x899E, + 46035 - 44032: 0x899F, + 46036 - 44032: 0xB5BC, + 46037 - 44032: 0xB5BD, + 46038 - 44032: 0x89A0, + 46039 - 44032: 0xB5BE, + 46040 - 44032: 0x89A1, + 46041 - 44032: 0xB5BF, + 46042 - 44032: 0x89A2, + 46043 - 44032: 0xB5C0, + 46044 - 44032: 0x89A3, + 46045 - 44032: 0xB5C1, + 46046 - 44032: 0x89A4, + 46047 - 44032: 0x89A5, + 46048 - 44032: 0xB5C2, + 46049 - 44032: 0x89A6, + 46050 - 44032: 0x89A7, + 46051 - 44032: 0x89A8, + 46052 - 44032: 0xB5C3, + 46053 - 44032: 0x89A9, + 46054 - 44032: 0x89AA, + 46055 - 44032: 0x89AB, + 46056 - 44032: 0xB5C4, + 46057 - 44032: 0x89AC, + 46058 - 44032: 0x89AD, + 46059 - 44032: 0x89AE, + 46060 - 44032: 0x89AF, + 46061 - 44032: 0x89B0, + 46062 - 44032: 0x89B1, + 46063 - 44032: 0x89B2, + 46064 - 44032: 0x89B3, + 46065 - 44032: 0x89B4, + 46066 - 44032: 0x89B5, + 46067 - 44032: 0x89B6, + 46068 - 44032: 0x89B7, + 46069 - 44032: 0x89B8, + 46070 - 44032: 0x89B9, + 46071 - 44032: 0x89BA, + 46072 - 44032: 0x89BB, + 46073 - 44032: 0x89BC, + 46074 - 44032: 0x89BD, + 46075 - 44032: 0x89BE, + 46076 - 44032: 0xB5C5, + 46077 - 44032: 0x89BF, + 46078 - 44032: 0x89C0, + 46079 - 44032: 0x89C1, + 46080 - 44032: 0x89C2, + 46081 - 44032: 0x89C3, + 46082 - 44032: 0x89C4, + 46083 - 44032: 0x89C5, + 46084 - 44032: 0x89C6, + 46085 - 44032: 0x89C7, + 46086 - 44032: 0x89C8, + 46087 - 44032: 0x89C9, + 46088 - 44032: 0x89CA, + 46089 - 44032: 0x89CB, + 46090 - 44032: 0x89CC, + 46091 - 44032: 0x89CD, + 46092 - 44032: 0x89CE, + 46093 - 44032: 0x89CF, + 46094 - 44032: 0x89D0, + 46095 - 44032: 0x89D1, + 46096 - 44032: 0xB5C6, + 46097 - 44032: 0x89D2, + 46098 - 44032: 0x89D3, + 46099 - 44032: 0x89D4, + 46100 - 44032: 0x89D5, + 46101 - 44032: 0x89D6, + 46102 - 44032: 0x89D7, + 46103 - 44032: 0x89D8, + 46104 - 44032: 0xB5C7, + 46105 - 44032: 0x89D9, + 46106 - 44032: 0x89DA, + 46107 - 44032: 0x89DB, + 46108 - 44032: 0xB5C8, + 46109 - 44032: 0x89DC, + 46110 - 44032: 0x89DD, + 46111 - 44032: 0x89DE, + 46112 - 44032: 0xB5C9, + 46113 - 44032: 0x89DF, + 46114 - 44032: 0x89E0, + 46115 - 44032: 0x89E1, + 46116 - 44032: 0x89E2, + 46117 - 44032: 0x89E3, + 46118 - 44032: 0x89E4, + 46119 - 44032: 0x89E5, + 46120 - 44032: 0xB5CA, + 46121 - 44032: 0xB5CB, + 46122 - 44032: 0x89E6, + 46123 - 44032: 0xB5CC, + 46124 - 44032: 0x89E7, + 46125 - 44032: 0x89E8, + 46126 - 44032: 0x89E9, + 46127 - 44032: 0x89EA, + 46128 - 44032: 0x89EB, + 46129 - 44032: 0x89EC, + 46130 - 44032: 0x89ED, + 46131 - 44032: 0x89EE, + 46132 - 44032: 0xB5CD, + 46133 - 44032: 0x89EF, + 46134 - 44032: 0x89F0, + 46135 - 44032: 0x89F1, + 46136 - 44032: 0x89F2, + 46137 - 44032: 0x89F3, + 46138 - 44032: 0x89F4, + 46139 - 44032: 0x89F5, + 46140 - 44032: 0x89F6, + 46141 - 44032: 0x89F7, + 46142 - 44032: 0x89F8, + 46143 - 44032: 0x89F9, + 46144 - 44032: 0x89FA, + 46145 - 44032: 0x89FB, + 46146 - 44032: 0x89FC, + 46147 - 44032: 0x89FD, + 46148 - 44032: 0x89FE, + 46149 - 44032: 0x8A41, + 46150 - 44032: 0x8A42, + 46151 - 44032: 0x8A43, + 46152 - 44032: 0x8A44, + 46153 - 44032: 0x8A45, + 46154 - 44032: 0x8A46, + 46155 - 44032: 0x8A47, + 46156 - 44032: 0x8A48, + 46157 - 44032: 0x8A49, + 46158 - 44032: 0x8A4A, + 46159 - 44032: 0x8A4B, + 46160 - 44032: 0xB5CE, + 46161 - 44032: 0xB5CF, + 46162 - 44032: 0x8A4C, + 46163 - 44032: 0x8A4D, + 46164 - 44032: 0xB5D0, + 46165 - 44032: 0x8A4E, + 46166 - 44032: 0x8A4F, + 46167 - 44032: 0x8A50, + 46168 - 44032: 0xB5D1, + 46169 - 44032: 0x8A51, + 46170 - 44032: 0x8A52, + 46171 - 44032: 0x8A53, + 46172 - 44032: 0x8A54, + 46173 - 44032: 0x8A55, + 46174 - 44032: 0x8A56, + 46175 - 44032: 0x8A57, + 46176 - 44032: 0xB5D2, + 46177 - 44032: 0xB5D3, + 46178 - 44032: 0x8A58, + 46179 - 44032: 0xB5D4, + 46180 - 44032: 0x8A59, + 46181 - 44032: 0xB5D5, + 46182 - 44032: 0x8A5A, + 46183 - 44032: 0x8A61, + 46184 - 44032: 0x8A62, + 46185 - 44032: 0x8A63, + 46186 - 44032: 0x8A64, + 46187 - 44032: 0x8A65, + 46188 - 44032: 0xB5D6, + 46189 - 44032: 0x8A66, + 46190 - 44032: 0x8A67, + 46191 - 44032: 0x8A68, + 46192 - 44032: 0x8A69, + 46193 - 44032: 0x8A6A, + 46194 - 44032: 0x8A6B, + 46195 - 44032: 0x8A6C, + 46196 - 44032: 0x8A6D, + 46197 - 44032: 0x8A6E, + 46198 - 44032: 0x8A6F, + 46199 - 44032: 0x8A70, + 46200 - 44032: 0x8A71, + 46201 - 44032: 0x8A72, + 46202 - 44032: 0x8A73, + 46203 - 44032: 0x8A74, + 46204 - 44032: 0x8A75, + 46205 - 44032: 0x8A76, + 46206 - 44032: 0x8A77, + 46207 - 44032: 0x8A78, + 46208 - 44032: 0xB5D7, + 46209 - 44032: 0x8A79, + 46210 - 44032: 0x8A7A, + 46211 - 44032: 0x8A81, + 46212 - 44032: 0x8A82, + 46213 - 44032: 0x8A83, + 46214 - 44032: 0x8A84, + 46215 - 44032: 0x8A85, + 46216 - 44032: 0xB5D8, + 46217 - 44032: 0x8A86, + 46218 - 44032: 0x8A87, + 46219 - 44032: 0x8A88, + 46220 - 44032: 0x8A89, + 46221 - 44032: 0x8A8A, + 46222 - 44032: 0x8A8B, + 46223 - 44032: 0x8A8C, + 46224 - 44032: 0x8A8D, + 46225 - 44032: 0x8A8E, + 46226 - 44032: 0x8A8F, + 46227 - 44032: 0x8A90, + 46228 - 44032: 0x8A91, + 46229 - 44032: 0x8A92, + 46230 - 44032: 0x8A93, + 46231 - 44032: 0x8A94, + 46232 - 44032: 0x8A95, + 46233 - 44032: 0x8A96, + 46234 - 44032: 0x8A97, + 46235 - 44032: 0x8A98, + 46236 - 44032: 0x8A99, + 46237 - 44032: 0xB5D9, + 46238 - 44032: 0x8A9A, + 46239 - 44032: 0x8A9B, + 46240 - 44032: 0x8A9C, + 46241 - 44032: 0x8A9D, + 46242 - 44032: 0x8A9E, + 46243 - 44032: 0x8A9F, + 46244 - 44032: 0xB5DA, + 46245 - 44032: 0x8AA0, + 46246 - 44032: 0x8AA1, + 46247 - 44032: 0x8AA2, + 46248 - 44032: 0xB5DB, + 46249 - 44032: 0x8AA3, + 46250 - 44032: 0x8AA4, + 46251 - 44032: 0x8AA5, + 46252 - 44032: 0xB5DC, + 46253 - 44032: 0x8AA6, + 46254 - 44032: 0x8AA7, + 46255 - 44032: 0x8AA8, + 46256 - 44032: 0x8AA9, + 46257 - 44032: 0x8AAA, + 46258 - 44032: 0x8AAB, + 46259 - 44032: 0x8AAC, + 46260 - 44032: 0x8AAD, + 46261 - 44032: 0xB5DD, + 46262 - 44032: 0x8AAE, + 46263 - 44032: 0xB5DE, + 46264 - 44032: 0x8AAF, + 46265 - 44032: 0xB5DF, + 46266 - 44032: 0x8AB0, + 46267 - 44032: 0x8AB1, + 46268 - 44032: 0x8AB2, + 46269 - 44032: 0x8AB3, + 46270 - 44032: 0x8AB4, + 46271 - 44032: 0x8AB5, + 46272 - 44032: 0xB5E0, + 46273 - 44032: 0x8AB6, + 46274 - 44032: 0x8AB7, + 46275 - 44032: 0x8AB8, + 46276 - 44032: 0xB5E1, + 46277 - 44032: 0x8AB9, + 46278 - 44032: 0x8ABA, + 46279 - 44032: 0x8ABB, + 46280 - 44032: 0xB5E2, + 46281 - 44032: 0x8ABC, + 46282 - 44032: 0x8ABD, + 46283 - 44032: 0x8ABE, + 46284 - 44032: 0x8ABF, + 46285 - 44032: 0x8AC0, + 46286 - 44032: 0x8AC1, + 46287 - 44032: 0x8AC2, + 46288 - 44032: 0xB5E3, + 46289 - 44032: 0x8AC3, + 46290 - 44032: 0x8AC4, + 46291 - 44032: 0x8AC5, + 46292 - 44032: 0x8AC6, + 46293 - 44032: 0xB5E4, + 46294 - 44032: 0x8AC7, + 46295 - 44032: 0x8AC8, + 46296 - 44032: 0x8AC9, + 46297 - 44032: 0x8ACA, + 46298 - 44032: 0x8ACB, + 46299 - 44032: 0x8ACC, + 46300 - 44032: 0xB5E5, + 46301 - 44032: 0xB5E6, + 46302 - 44032: 0x8ACD, + 46303 - 44032: 0x8ACE, + 46304 - 44032: 0xB5E7, + 46305 - 44032: 0x8ACF, + 46306 - 44032: 0x8AD0, + 46307 - 44032: 0xB5E8, + 46308 - 44032: 0xB5E9, + 46309 - 44032: 0x8AD1, + 46310 - 44032: 0xB5EA, + 46311 - 44032: 0x8AD2, + 46312 - 44032: 0x8AD3, + 46313 - 44032: 0x8AD4, + 46314 - 44032: 0x8AD5, + 46315 - 44032: 0x8AD6, + 46316 - 44032: 0xB5EB, + 46317 - 44032: 0xB5EC, + 46318 - 44032: 0x8AD7, + 46319 - 44032: 0xB5ED, + 46320 - 44032: 0x8AD8, + 46321 - 44032: 0xB5EE, + 46322 - 44032: 0x8AD9, + 46323 - 44032: 0x8ADA, + 46324 - 44032: 0x8ADB, + 46325 - 44032: 0x8ADC, + 46326 - 44032: 0x8ADD, + 46327 - 44032: 0x8ADE, + 46328 - 44032: 0xB5EF, + 46329 - 44032: 0x8ADF, + 46330 - 44032: 0x8AE0, + 46331 - 44032: 0x8AE1, + 46332 - 44032: 0x8AE2, + 46333 - 44032: 0x8AE3, + 46334 - 44032: 0x8AE4, + 46335 - 44032: 0x8AE5, + 46336 - 44032: 0x8AE6, + 46337 - 44032: 0x8AE7, + 46338 - 44032: 0x8AE8, + 46339 - 44032: 0x8AE9, + 46340 - 44032: 0x8AEA, + 46341 - 44032: 0x8AEB, + 46342 - 44032: 0x8AEC, + 46343 - 44032: 0x8AED, + 46344 - 44032: 0x8AEE, + 46345 - 44032: 0x8AEF, + 46346 - 44032: 0x8AF0, + 46347 - 44032: 0x8AF1, + 46348 - 44032: 0x8AF2, + 46349 - 44032: 0x8AF3, + 46350 - 44032: 0x8AF4, + 46351 - 44032: 0x8AF5, + 46352 - 44032: 0x8AF6, + 46353 - 44032: 0x8AF7, + 46354 - 44032: 0x8AF8, + 46355 - 44032: 0x8AF9, + 46356 - 44032: 0xB5F0, + 46357 - 44032: 0xB5F1, + 46358 - 44032: 0x8AFA, + 46359 - 44032: 0x8AFB, + 46360 - 44032: 0xB5F2, + 46361 - 44032: 0x8AFC, + 46362 - 44032: 0x8AFD, + 46363 - 44032: 0xB5F3, + 46364 - 44032: 0xB5F4, + 46365 - 44032: 0x8AFE, + 46366 - 44032: 0x8B41, + 46367 - 44032: 0x8B42, + 46368 - 44032: 0x8B43, + 46369 - 44032: 0x8B44, + 46370 - 44032: 0x8B45, + 46371 - 44032: 0x8B46, + 46372 - 44032: 0xB5F5, + 46373 - 44032: 0xB5F6, + 46374 - 44032: 0x8B47, + 46375 - 44032: 0xB5F7, + 46376 - 44032: 0xB5F8, + 46377 - 44032: 0xB5F9, + 46378 - 44032: 0xB5FA, + 46379 - 44032: 0x8B48, + 46380 - 44032: 0x8B49, + 46381 - 44032: 0x8B4A, + 46382 - 44032: 0x8B4B, + 46383 - 44032: 0x8B4C, + 46384 - 44032: 0xB5FB, + 46385 - 44032: 0xB5FC, + 46386 - 44032: 0x8B4D, + 46387 - 44032: 0x8B4E, + 46388 - 44032: 0xB5FD, + 46389 - 44032: 0x8B4F, + 46390 - 44032: 0x8B50, + 46391 - 44032: 0x8B51, + 46392 - 44032: 0xB5FE, + 46393 - 44032: 0x8B52, + 46394 - 44032: 0x8B53, + 46395 - 44032: 0x8B54, + 46396 - 44032: 0x8B55, + 46397 - 44032: 0x8B56, + 46398 - 44032: 0x8B57, + 46399 - 44032: 0x8B58, + 46400 - 44032: 0xB6A1, + 46401 - 44032: 0xB6A2, + 46402 - 44032: 0x8B59, + 46403 - 44032: 0xB6A3, + 46404 - 44032: 0xB6A4, + 46405 - 44032: 0xB6A5, + 46406 - 44032: 0x8B5A, + 46407 - 44032: 0x8B61, + 46408 - 44032: 0x8B62, + 46409 - 44032: 0x8B63, + 46410 - 44032: 0x8B64, + 46411 - 44032: 0xB6A6, + 46412 - 44032: 0xB6A7, + 46413 - 44032: 0xB6A8, + 46414 - 44032: 0x8B65, + 46415 - 44032: 0x8B66, + 46416 - 44032: 0xB6A9, + 46417 - 44032: 0x8B67, + 46418 - 44032: 0x8B68, + 46419 - 44032: 0x8B69, + 46420 - 44032: 0xB6AA, + 46421 - 44032: 0x8B6A, + 46422 - 44032: 0x8B6B, + 46423 - 44032: 0x8B6C, + 46424 - 44032: 0x8B6D, + 46425 - 44032: 0x8B6E, + 46426 - 44032: 0x8B6F, + 46427 - 44032: 0x8B70, + 46428 - 44032: 0xB6AB, + 46429 - 44032: 0xB6AC, + 46430 - 44032: 0x8B71, + 46431 - 44032: 0xB6AD, + 46432 - 44032: 0xB6AE, + 46433 - 44032: 0xB6AF, + 46434 - 44032: 0x8B72, + 46435 - 44032: 0x8B73, + 46436 - 44032: 0x8B74, + 46437 - 44032: 0x8B75, + 46438 - 44032: 0x8B76, + 46439 - 44032: 0x8B77, + 46440 - 44032: 0x8B78, + 46441 - 44032: 0x8B79, + 46442 - 44032: 0x8B7A, + 46443 - 44032: 0x8B81, + 46444 - 44032: 0x8B82, + 46445 - 44032: 0x8B83, + 46446 - 44032: 0x8B84, + 46447 - 44032: 0x8B85, + 46448 - 44032: 0x8B86, + 46449 - 44032: 0x8B87, + 46450 - 44032: 0x8B88, + 46451 - 44032: 0x8B89, + 46452 - 44032: 0x8B8A, + 46453 - 44032: 0x8B8B, + 46454 - 44032: 0x8B8C, + 46455 - 44032: 0x8B8D, + 46456 - 44032: 0x8B8E, + 46457 - 44032: 0x8B8F, + 46458 - 44032: 0x8B90, + 46459 - 44032: 0x8B91, + 46460 - 44032: 0x8B92, + 46461 - 44032: 0x8B93, + 46462 - 44032: 0x8B94, + 46463 - 44032: 0x8B95, + 46464 - 44032: 0x8B96, + 46465 - 44032: 0x8B97, + 46466 - 44032: 0x8B98, + 46467 - 44032: 0x8B99, + 46468 - 44032: 0x8B9A, + 46469 - 44032: 0x8B9B, + 46470 - 44032: 0x8B9C, + 46471 - 44032: 0x8B9D, + 46472 - 44032: 0x8B9E, + 46473 - 44032: 0x8B9F, + 46474 - 44032: 0x8BA0, + 46475 - 44032: 0x8BA1, + 46476 - 44032: 0x8BA2, + 46477 - 44032: 0x8BA3, + 46478 - 44032: 0x8BA4, + 46479 - 44032: 0x8BA5, + 46480 - 44032: 0x8BA6, + 46481 - 44032: 0x8BA7, + 46482 - 44032: 0x8BA8, + 46483 - 44032: 0x8BA9, + 46484 - 44032: 0x8BAA, + 46485 - 44032: 0x8BAB, + 46486 - 44032: 0x8BAC, + 46487 - 44032: 0x8BAD, + 46488 - 44032: 0x8BAE, + 46489 - 44032: 0x8BAF, + 46490 - 44032: 0x8BB0, + 46491 - 44032: 0x8BB1, + 46492 - 44032: 0x8BB2, + 46493 - 44032: 0x8BB3, + 46494 - 44032: 0x8BB4, + 46495 - 44032: 0x8BB5, + 46496 - 44032: 0xB6B0, + 46497 - 44032: 0xB6B1, + 46498 - 44032: 0x8BB6, + 46499 - 44032: 0x8BB7, + 46500 - 44032: 0xB6B2, + 46501 - 44032: 0x8BB8, + 46502 - 44032: 0x8BB9, + 46503 - 44032: 0x8BBA, + 46504 - 44032: 0xB6B3, + 46505 - 44032: 0x8BBB, + 46506 - 44032: 0xB6B4, + 46507 - 44032: 0xB6B5, + 46508 - 44032: 0x8BBC, + 46509 - 44032: 0x8BBD, + 46510 - 44032: 0x8BBE, + 46511 - 44032: 0x8BBF, + 46512 - 44032: 0xB6B6, + 46513 - 44032: 0xB6B7, + 46514 - 44032: 0x8BC0, + 46515 - 44032: 0xB6B8, + 46516 - 44032: 0xB6B9, + 46517 - 44032: 0xB6BA, + 46518 - 44032: 0x8BC1, + 46519 - 44032: 0x8BC2, + 46520 - 44032: 0x8BC3, + 46521 - 44032: 0x8BC4, + 46522 - 44032: 0x8BC5, + 46523 - 44032: 0xB6BB, + 46524 - 44032: 0xB6BC, + 46525 - 44032: 0xB6BD, + 46526 - 44032: 0x8BC6, + 46527 - 44032: 0x8BC7, + 46528 - 44032: 0xB6BE, + 46529 - 44032: 0x8BC8, + 46530 - 44032: 0x8BC9, + 46531 - 44032: 0x8BCA, + 46532 - 44032: 0xB6BF, + 46533 - 44032: 0x8BCB, + 46534 - 44032: 0x8BCC, + 46535 - 44032: 0x8BCD, + 46536 - 44032: 0x8BCE, + 46537 - 44032: 0x8BCF, + 46538 - 44032: 0x8BD0, + 46539 - 44032: 0x8BD1, + 46540 - 44032: 0xB6C0, + 46541 - 44032: 0xB6C1, + 46542 - 44032: 0x8BD2, + 46543 - 44032: 0xB6C2, + 46544 - 44032: 0xB6C3, + 46545 - 44032: 0xB6C4, + 46546 - 44032: 0x8BD3, + 46547 - 44032: 0x8BD4, + 46548 - 44032: 0x8BD5, + 46549 - 44032: 0x8BD6, + 46550 - 44032: 0x8BD7, + 46551 - 44032: 0x8BD8, + 46552 - 44032: 0xB6C5, + 46553 - 44032: 0x8BD9, + 46554 - 44032: 0x8BDA, + 46555 - 44032: 0x8BDB, + 46556 - 44032: 0x8BDC, + 46557 - 44032: 0x8BDD, + 46558 - 44032: 0x8BDE, + 46559 - 44032: 0x8BDF, + 46560 - 44032: 0x8BE0, + 46561 - 44032: 0x8BE1, + 46562 - 44032: 0x8BE2, + 46563 - 44032: 0x8BE3, + 46564 - 44032: 0x8BE4, + 46565 - 44032: 0x8BE5, + 46566 - 44032: 0x8BE6, + 46567 - 44032: 0x8BE7, + 46568 - 44032: 0x8BE8, + 46569 - 44032: 0x8BE9, + 46570 - 44032: 0x8BEA, + 46571 - 44032: 0x8BEB, + 46572 - 44032: 0xB6C6, + 46573 - 44032: 0x8BEC, + 46574 - 44032: 0x8BED, + 46575 - 44032: 0x8BEE, + 46576 - 44032: 0x8BEF, + 46577 - 44032: 0x8BF0, + 46578 - 44032: 0x8BF1, + 46579 - 44032: 0x8BF2, + 46580 - 44032: 0x8BF3, + 46581 - 44032: 0x8BF4, + 46582 - 44032: 0x8BF5, + 46583 - 44032: 0x8BF6, + 46584 - 44032: 0x8BF7, + 46585 - 44032: 0x8BF8, + 46586 - 44032: 0x8BF9, + 46587 - 44032: 0x8BFA, + 46588 - 44032: 0x8BFB, + 46589 - 44032: 0x8BFC, + 46590 - 44032: 0x8BFD, + 46591 - 44032: 0x8BFE, + 46592 - 44032: 0x8C41, + 46593 - 44032: 0x8C42, + 46594 - 44032: 0x8C43, + 46595 - 44032: 0x8C44, + 46596 - 44032: 0x8C45, + 46597 - 44032: 0x8C46, + 46598 - 44032: 0x8C47, + 46599 - 44032: 0x8C48, + 46600 - 44032: 0x8C49, + 46601 - 44032: 0x8C4A, + 46602 - 44032: 0x8C4B, + 46603 - 44032: 0x8C4C, + 46604 - 44032: 0x8C4D, + 46605 - 44032: 0x8C4E, + 46606 - 44032: 0x8C4F, + 46607 - 44032: 0x8C50, + 46608 - 44032: 0xB6C7, + 46609 - 44032: 0xB6C8, + 46610 - 44032: 0x8C51, + 46611 - 44032: 0x8C52, + 46612 - 44032: 0xB6C9, + 46613 - 44032: 0x8C53, + 46614 - 44032: 0x8C54, + 46615 - 44032: 0x8C55, + 46616 - 44032: 0xB6CA, + 46617 - 44032: 0x8C56, + 46618 - 44032: 0x8C57, + 46619 - 44032: 0x8C58, + 46620 - 44032: 0x8C59, + 46621 - 44032: 0x8C5A, + 46622 - 44032: 0x8C61, + 46623 - 44032: 0x8C62, + 46624 - 44032: 0x8C63, + 46625 - 44032: 0x8C64, + 46626 - 44032: 0x8C65, + 46627 - 44032: 0x8C66, + 46628 - 44032: 0x8C67, + 46629 - 44032: 0xB6CB, + 46630 - 44032: 0x8C68, + 46631 - 44032: 0x8C69, + 46632 - 44032: 0x8C6A, + 46633 - 44032: 0x8C6B, + 46634 - 44032: 0x8C6C, + 46635 - 44032: 0x8C6D, + 46636 - 44032: 0xB6CC, + 46637 - 44032: 0x8C6E, + 46638 - 44032: 0x8C6F, + 46639 - 44032: 0x8C70, + 46640 - 44032: 0x8C71, + 46641 - 44032: 0x8C72, + 46642 - 44032: 0x8C73, + 46643 - 44032: 0x8C74, + 46644 - 44032: 0xB6CD, + 46645 - 44032: 0x8C75, + 46646 - 44032: 0x8C76, + 46647 - 44032: 0x8C77, + 46648 - 44032: 0x8C78, + 46649 - 44032: 0x8C79, + 46650 - 44032: 0x8C7A, + 46651 - 44032: 0x8C81, + 46652 - 44032: 0x8C82, + 46653 - 44032: 0x8C83, + 46654 - 44032: 0x8C84, + 46655 - 44032: 0x8C85, + 46656 - 44032: 0x8C86, + 46657 - 44032: 0x8C87, + 46658 - 44032: 0x8C88, + 46659 - 44032: 0x8C89, + 46660 - 44032: 0x8C8A, + 46661 - 44032: 0x8C8B, + 46662 - 44032: 0x8C8C, + 46663 - 44032: 0x8C8D, + 46664 - 44032: 0xB6CE, + 46665 - 44032: 0x8C8E, + 46666 - 44032: 0x8C8F, + 46667 - 44032: 0x8C90, + 46668 - 44032: 0x8C91, + 46669 - 44032: 0x8C92, + 46670 - 44032: 0x8C93, + 46671 - 44032: 0x8C94, + 46672 - 44032: 0x8C95, + 46673 - 44032: 0x8C96, + 46674 - 44032: 0x8C97, + 46675 - 44032: 0x8C98, + 46676 - 44032: 0x8C99, + 46677 - 44032: 0x8C9A, + 46678 - 44032: 0x8C9B, + 46679 - 44032: 0x8C9C, + 46680 - 44032: 0x8C9D, + 46681 - 44032: 0x8C9E, + 46682 - 44032: 0x8C9F, + 46683 - 44032: 0x8CA0, + 46684 - 44032: 0x8CA1, + 46685 - 44032: 0x8CA2, + 46686 - 44032: 0x8CA3, + 46687 - 44032: 0x8CA4, + 46688 - 44032: 0x8CA5, + 46689 - 44032: 0x8CA6, + 46690 - 44032: 0x8CA7, + 46691 - 44032: 0x8CA8, + 46692 - 44032: 0xB6CF, + 46693 - 44032: 0x8CA9, + 46694 - 44032: 0x8CAA, + 46695 - 44032: 0x8CAB, + 46696 - 44032: 0xB6D0, + 46697 - 44032: 0x8CAC, + 46698 - 44032: 0x8CAD, + 46699 - 44032: 0x8CAE, + 46700 - 44032: 0x8CAF, + 46701 - 44032: 0x8CB0, + 46702 - 44032: 0x8CB1, + 46703 - 44032: 0x8CB2, + 46704 - 44032: 0x8CB3, + 46705 - 44032: 0x8CB4, + 46706 - 44032: 0x8CB5, + 46707 - 44032: 0x8CB6, + 46708 - 44032: 0x8CB7, + 46709 - 44032: 0x8CB8, + 46710 - 44032: 0x8CB9, + 46711 - 44032: 0x8CBA, + 46712 - 44032: 0x8CBB, + 46713 - 44032: 0x8CBC, + 46714 - 44032: 0x8CBD, + 46715 - 44032: 0x8CBE, + 46716 - 44032: 0x8CBF, + 46717 - 44032: 0x8CC0, + 46718 - 44032: 0x8CC1, + 46719 - 44032: 0x8CC2, + 46720 - 44032: 0x8CC3, + 46721 - 44032: 0x8CC4, + 46722 - 44032: 0x8CC5, + 46723 - 44032: 0x8CC6, + 46724 - 44032: 0x8CC7, + 46725 - 44032: 0x8CC8, + 46726 - 44032: 0x8CC9, + 46727 - 44032: 0x8CCA, + 46728 - 44032: 0x8CCB, + 46729 - 44032: 0x8CCC, + 46730 - 44032: 0x8CCD, + 46731 - 44032: 0x8CCE, + 46732 - 44032: 0x8CCF, + 46733 - 44032: 0x8CD0, + 46734 - 44032: 0x8CD1, + 46735 - 44032: 0x8CD2, + 46736 - 44032: 0x8CD3, + 46737 - 44032: 0x8CD4, + 46738 - 44032: 0x8CD5, + 46739 - 44032: 0x8CD6, + 46740 - 44032: 0x8CD7, + 46741 - 44032: 0x8CD8, + 46742 - 44032: 0x8CD9, + 46743 - 44032: 0x8CDA, + 46744 - 44032: 0x8CDB, + 46745 - 44032: 0x8CDC, + 46746 - 44032: 0x8CDD, + 46747 - 44032: 0x8CDE, + 46748 - 44032: 0xB6D1, + 46749 - 44032: 0xB6D2, + 46750 - 44032: 0x8CDF, + 46751 - 44032: 0x8CE0, + 46752 - 44032: 0xB6D3, + 46753 - 44032: 0x8CE1, + 46754 - 44032: 0x8CE2, + 46755 - 44032: 0x8CE3, + 46756 - 44032: 0xB6D4, + 46757 - 44032: 0x8CE4, + 46758 - 44032: 0x8CE5, + 46759 - 44032: 0x8CE6, + 46760 - 44032: 0x8CE7, + 46761 - 44032: 0x8CE8, + 46762 - 44032: 0x8CE9, + 46763 - 44032: 0xB6D5, + 46764 - 44032: 0xB6D6, + 46765 - 44032: 0x8CEA, + 46766 - 44032: 0x8CEB, + 46767 - 44032: 0x8CEC, + 46768 - 44032: 0x8CED, + 46769 - 44032: 0xB6D7, + 46770 - 44032: 0x8CEE, + 46771 - 44032: 0x8CEF, + 46772 - 44032: 0x8CF0, + 46773 - 44032: 0x8CF1, + 46774 - 44032: 0x8CF2, + 46775 - 44032: 0x8CF3, + 46776 - 44032: 0x8CF4, + 46777 - 44032: 0x8CF5, + 46778 - 44032: 0x8CF6, + 46779 - 44032: 0x8CF7, + 46780 - 44032: 0x8CF8, + 46781 - 44032: 0x8CF9, + 46782 - 44032: 0x8CFA, + 46783 - 44032: 0x8CFB, + 46784 - 44032: 0x8CFC, + 46785 - 44032: 0x8CFD, + 46786 - 44032: 0x8CFE, + 46787 - 44032: 0x8D41, + 46788 - 44032: 0x8D42, + 46789 - 44032: 0x8D43, + 46790 - 44032: 0x8D44, + 46791 - 44032: 0x8D45, + 46792 - 44032: 0x8D46, + 46793 - 44032: 0x8D47, + 46794 - 44032: 0x8D48, + 46795 - 44032: 0x8D49, + 46796 - 44032: 0x8D4A, + 46797 - 44032: 0x8D4B, + 46798 - 44032: 0x8D4C, + 46799 - 44032: 0x8D4D, + 46800 - 44032: 0x8D4E, + 46801 - 44032: 0x8D4F, + 46802 - 44032: 0x8D50, + 46803 - 44032: 0x8D51, + 46804 - 44032: 0xB6D8, + 46805 - 44032: 0x8D52, + 46806 - 44032: 0x8D53, + 46807 - 44032: 0x8D54, + 46808 - 44032: 0x8D55, + 46809 - 44032: 0x8D56, + 46810 - 44032: 0x8D57, + 46811 - 44032: 0x8D58, + 46812 - 44032: 0x8D59, + 46813 - 44032: 0x8D5A, + 46814 - 44032: 0x8D61, + 46815 - 44032: 0x8D62, + 46816 - 44032: 0x8D63, + 46817 - 44032: 0x8D64, + 46818 - 44032: 0x8D65, + 46819 - 44032: 0x8D66, + 46820 - 44032: 0x8D67, + 46821 - 44032: 0x8D68, + 46822 - 44032: 0x8D69, + 46823 - 44032: 0x8D6A, + 46824 - 44032: 0x8D6B, + 46825 - 44032: 0x8D6C, + 46826 - 44032: 0x8D6D, + 46827 - 44032: 0x8D6E, + 46828 - 44032: 0x8D6F, + 46829 - 44032: 0x8D70, + 46830 - 44032: 0x8D71, + 46831 - 44032: 0x8D72, + 46832 - 44032: 0xB6D9, + 46833 - 44032: 0x8D73, + 46834 - 44032: 0x8D74, + 46835 - 44032: 0x8D75, + 46836 - 44032: 0xB6DA, + 46837 - 44032: 0x8D76, + 46838 - 44032: 0x8D77, + 46839 - 44032: 0x8D78, + 46840 - 44032: 0xB6DB, + 46841 - 44032: 0x8D79, + 46842 - 44032: 0x8D7A, + 46843 - 44032: 0x8D81, + 46844 - 44032: 0x8D82, + 46845 - 44032: 0x8D83, + 46846 - 44032: 0x8D84, + 46847 - 44032: 0x8D85, + 46848 - 44032: 0xB6DC, + 46849 - 44032: 0xB6DD, + 46850 - 44032: 0x8D86, + 46851 - 44032: 0x8D87, + 46852 - 44032: 0x8D88, + 46853 - 44032: 0xB6DE, + 46854 - 44032: 0x8D89, + 46855 - 44032: 0x8D8A, + 46856 - 44032: 0x8D8B, + 46857 - 44032: 0x8D8C, + 46858 - 44032: 0x8D8D, + 46859 - 44032: 0x8D8E, + 46860 - 44032: 0x8D8F, + 46861 - 44032: 0x8D90, + 46862 - 44032: 0x8D91, + 46863 - 44032: 0x8D92, + 46864 - 44032: 0x8D93, + 46865 - 44032: 0x8D94, + 46866 - 44032: 0x8D95, + 46867 - 44032: 0x8D96, + 46868 - 44032: 0x8D97, + 46869 - 44032: 0x8D98, + 46870 - 44032: 0x8D99, + 46871 - 44032: 0x8D9A, + 46872 - 44032: 0x8D9B, + 46873 - 44032: 0x8D9C, + 46874 - 44032: 0x8D9D, + 46875 - 44032: 0x8D9E, + 46876 - 44032: 0x8D9F, + 46877 - 44032: 0x8DA0, + 46878 - 44032: 0x8DA1, + 46879 - 44032: 0x8DA2, + 46880 - 44032: 0x8DA3, + 46881 - 44032: 0x8DA4, + 46882 - 44032: 0x8DA5, + 46883 - 44032: 0x8DA6, + 46884 - 44032: 0x8DA7, + 46885 - 44032: 0x8DA8, + 46886 - 44032: 0x8DA9, + 46887 - 44032: 0x8DAA, + 46888 - 44032: 0xB6DF, + 46889 - 44032: 0xB6E0, + 46890 - 44032: 0x8DAB, + 46891 - 44032: 0x8DAC, + 46892 - 44032: 0xB6E1, + 46893 - 44032: 0x8DAD, + 46894 - 44032: 0x8DAE, + 46895 - 44032: 0xB6E2, + 46896 - 44032: 0xB6E3, + 46897 - 44032: 0x8DAF, + 46898 - 44032: 0x8DB0, + 46899 - 44032: 0x8DB1, + 46900 - 44032: 0x8DB2, + 46901 - 44032: 0x8DB3, + 46902 - 44032: 0x8DB4, + 46903 - 44032: 0x8DB5, + 46904 - 44032: 0xB6E4, + 46905 - 44032: 0xB6E5, + 46906 - 44032: 0x8DB6, + 46907 - 44032: 0xB6E6, + 46908 - 44032: 0x8DB7, + 46909 - 44032: 0x8DB8, + 46910 - 44032: 0x8DB9, + 46911 - 44032: 0x8DBA, + 46912 - 44032: 0x8DBB, + 46913 - 44032: 0x8DBC, + 46914 - 44032: 0x8DBD, + 46915 - 44032: 0x8DBE, + 46916 - 44032: 0xB6E7, + 46917 - 44032: 0x8DBF, + 46918 - 44032: 0x8DC0, + 46919 - 44032: 0x8DC1, + 46920 - 44032: 0xB6E8, + 46921 - 44032: 0x8DC2, + 46922 - 44032: 0x8DC3, + 46923 - 44032: 0x8DC4, + 46924 - 44032: 0xB6E9, + 46925 - 44032: 0x8DC5, + 46926 - 44032: 0x8DC6, + 46927 - 44032: 0x8DC7, + 46928 - 44032: 0x8DC8, + 46929 - 44032: 0x8DC9, + 46930 - 44032: 0x8DCA, + 46931 - 44032: 0x8DCB, + 46932 - 44032: 0xB6EA, + 46933 - 44032: 0xB6EB, + 46934 - 44032: 0x8DCC, + 46935 - 44032: 0x8DCD, + 46936 - 44032: 0x8DCE, + 46937 - 44032: 0x8DCF, + 46938 - 44032: 0x8DD0, + 46939 - 44032: 0x8DD1, + 46940 - 44032: 0x8DD2, + 46941 - 44032: 0x8DD3, + 46942 - 44032: 0x8DD4, + 46943 - 44032: 0x8DD5, + 46944 - 44032: 0xB6EC, + 46945 - 44032: 0x8DD6, + 46946 - 44032: 0x8DD7, + 46947 - 44032: 0x8DD8, + 46948 - 44032: 0xB6ED, + 46949 - 44032: 0x8DD9, + 46950 - 44032: 0x8DDA, + 46951 - 44032: 0x8DDB, + 46952 - 44032: 0xB6EE, + 46953 - 44032: 0x8DDC, + 46954 - 44032: 0x8DDD, + 46955 - 44032: 0x8DDE, + 46956 - 44032: 0x8DDF, + 46957 - 44032: 0x8DE0, + 46958 - 44032: 0x8DE1, + 46959 - 44032: 0x8DE2, + 46960 - 44032: 0xB6EF, + 46961 - 44032: 0xB6F0, + 46962 - 44032: 0x8DE3, + 46963 - 44032: 0xB6F1, + 46964 - 44032: 0x8DE4, + 46965 - 44032: 0xB6F2, + 46966 - 44032: 0x8DE5, + 46967 - 44032: 0x8DE6, + 46968 - 44032: 0x8DE7, + 46969 - 44032: 0x8DE8, + 46970 - 44032: 0x8DE9, + 46971 - 44032: 0x8DEA, + 46972 - 44032: 0xB6F3, + 46973 - 44032: 0xB6F4, + 46974 - 44032: 0x8DEB, + 46975 - 44032: 0x8DEC, + 46976 - 44032: 0xB6F5, + 46977 - 44032: 0x8DED, + 46978 - 44032: 0x8DEE, + 46979 - 44032: 0x8DEF, + 46980 - 44032: 0xB6F6, + 46981 - 44032: 0x8DF0, + 46982 - 44032: 0x8DF1, + 46983 - 44032: 0x8DF2, + 46984 - 44032: 0x8DF3, + 46985 - 44032: 0x8DF4, + 46986 - 44032: 0x8DF5, + 46987 - 44032: 0x8DF6, + 46988 - 44032: 0xB6F7, + 46989 - 44032: 0xB6F8, + 46990 - 44032: 0x8DF7, + 46991 - 44032: 0xB6F9, + 46992 - 44032: 0xB6FA, + 46993 - 44032: 0xB6FB, + 46994 - 44032: 0xB6FC, + 46995 - 44032: 0x8DF8, + 46996 - 44032: 0x8DF9, + 46997 - 44032: 0x8DFA, + 46998 - 44032: 0xB6FD, + 46999 - 44032: 0xB6FE, + 47000 - 44032: 0xB7A1, + 47001 - 44032: 0xB7A2, + 47002 - 44032: 0x8DFB, + 47003 - 44032: 0x8DFC, + 47004 - 44032: 0xB7A3, + 47005 - 44032: 0x8DFD, + 47006 - 44032: 0x8DFE, + 47007 - 44032: 0x8E41, + 47008 - 44032: 0xB7A4, + 47009 - 44032: 0x8E42, + 47010 - 44032: 0x8E43, + 47011 - 44032: 0x8E44, + 47012 - 44032: 0x8E45, + 47013 - 44032: 0x8E46, + 47014 - 44032: 0x8E47, + 47015 - 44032: 0x8E48, + 47016 - 44032: 0xB7A5, + 47017 - 44032: 0xB7A6, + 47018 - 44032: 0x8E49, + 47019 - 44032: 0xB7A7, + 47020 - 44032: 0xB7A8, + 47021 - 44032: 0xB7A9, + 47022 - 44032: 0x8E4A, + 47023 - 44032: 0x8E4B, + 47024 - 44032: 0x8E4C, + 47025 - 44032: 0x8E4D, + 47026 - 44032: 0x8E4E, + 47027 - 44032: 0x8E4F, + 47028 - 44032: 0xB7AA, + 47029 - 44032: 0xB7AB, + 47030 - 44032: 0x8E50, + 47031 - 44032: 0x8E51, + 47032 - 44032: 0xB7AC, + 47033 - 44032: 0x8E52, + 47034 - 44032: 0x8E53, + 47035 - 44032: 0x8E54, + 47036 - 44032: 0x8E55, + 47037 - 44032: 0x8E56, + 47038 - 44032: 0x8E57, + 47039 - 44032: 0x8E58, + 47040 - 44032: 0x8E59, + 47041 - 44032: 0x8E5A, + 47042 - 44032: 0x8E61, + 47043 - 44032: 0x8E62, + 47044 - 44032: 0x8E63, + 47045 - 44032: 0x8E64, + 47046 - 44032: 0x8E65, + 47047 - 44032: 0xB7AD, + 47048 - 44032: 0x8E66, + 47049 - 44032: 0xB7AE, + 47050 - 44032: 0x8E67, + 47051 - 44032: 0x8E68, + 47052 - 44032: 0x8E69, + 47053 - 44032: 0x8E6A, + 47054 - 44032: 0x8E6B, + 47055 - 44032: 0x8E6C, + 47056 - 44032: 0x8E6D, + 47057 - 44032: 0x8E6E, + 47058 - 44032: 0x8E6F, + 47059 - 44032: 0x8E70, + 47060 - 44032: 0x8E71, + 47061 - 44032: 0x8E72, + 47062 - 44032: 0x8E73, + 47063 - 44032: 0x8E74, + 47064 - 44032: 0x8E75, + 47065 - 44032: 0x8E76, + 47066 - 44032: 0x8E77, + 47067 - 44032: 0x8E78, + 47068 - 44032: 0x8E79, + 47069 - 44032: 0x8E7A, + 47070 - 44032: 0x8E81, + 47071 - 44032: 0x8E82, + 47072 - 44032: 0x8E83, + 47073 - 44032: 0x8E84, + 47074 - 44032: 0x8E85, + 47075 - 44032: 0x8E86, + 47076 - 44032: 0x8E87, + 47077 - 44032: 0x8E88, + 47078 - 44032: 0x8E89, + 47079 - 44032: 0x8E8A, + 47080 - 44032: 0x8E8B, + 47081 - 44032: 0x8E8C, + 47082 - 44032: 0x8E8D, + 47083 - 44032: 0x8E8E, + 47084 - 44032: 0xB7AF, + 47085 - 44032: 0xB7B0, + 47086 - 44032: 0x8E8F, + 47087 - 44032: 0x8E90, + 47088 - 44032: 0xB7B1, + 47089 - 44032: 0x8E91, + 47090 - 44032: 0x8E92, + 47091 - 44032: 0x8E93, + 47092 - 44032: 0xB7B2, + 47093 - 44032: 0x8E94, + 47094 - 44032: 0x8E95, + 47095 - 44032: 0x8E96, + 47096 - 44032: 0x8E97, + 47097 - 44032: 0x8E98, + 47098 - 44032: 0x8E99, + 47099 - 44032: 0x8E9A, + 47100 - 44032: 0xB7B3, + 47101 - 44032: 0xB7B4, + 47102 - 44032: 0x8E9B, + 47103 - 44032: 0xB7B5, + 47104 - 44032: 0xB7B6, + 47105 - 44032: 0xB7B7, + 47106 - 44032: 0x8E9C, + 47107 - 44032: 0x8E9D, + 47108 - 44032: 0x8E9E, + 47109 - 44032: 0x8E9F, + 47110 - 44032: 0x8EA0, + 47111 - 44032: 0xB7B8, + 47112 - 44032: 0xB7B9, + 47113 - 44032: 0xB7BA, + 47114 - 44032: 0x8EA1, + 47115 - 44032: 0x8EA2, + 47116 - 44032: 0xB7BB, + 47117 - 44032: 0x8EA3, + 47118 - 44032: 0x8EA4, + 47119 - 44032: 0x8EA5, + 47120 - 44032: 0xB7BC, + 47121 - 44032: 0x8EA6, + 47122 - 44032: 0x8EA7, + 47123 - 44032: 0x8EA8, + 47124 - 44032: 0x8EA9, + 47125 - 44032: 0x8EAA, + 47126 - 44032: 0x8EAB, + 47127 - 44032: 0x8EAC, + 47128 - 44032: 0xB7BD, + 47129 - 44032: 0xB7BE, + 47130 - 44032: 0x8EAD, + 47131 - 44032: 0xB7BF, + 47132 - 44032: 0x8EAE, + 47133 - 44032: 0xB7C0, + 47134 - 44032: 0x8EAF, + 47135 - 44032: 0x8EB0, + 47136 - 44032: 0x8EB1, + 47137 - 44032: 0x8EB2, + 47138 - 44032: 0x8EB3, + 47139 - 44032: 0x8EB4, + 47140 - 44032: 0xB7C1, + 47141 - 44032: 0xB7C2, + 47142 - 44032: 0x8EB5, + 47143 - 44032: 0x8EB6, + 47144 - 44032: 0xB7C3, + 47145 - 44032: 0x8EB7, + 47146 - 44032: 0x8EB8, + 47147 - 44032: 0x8EB9, + 47148 - 44032: 0xB7C4, + 47149 - 44032: 0x8EBA, + 47150 - 44032: 0x8EBB, + 47151 - 44032: 0x8EBC, + 47152 - 44032: 0x8EBD, + 47153 - 44032: 0x8EBE, + 47154 - 44032: 0x8EBF, + 47155 - 44032: 0x8EC0, + 47156 - 44032: 0xB7C5, + 47157 - 44032: 0xB7C6, + 47158 - 44032: 0x8EC1, + 47159 - 44032: 0xB7C7, + 47160 - 44032: 0xB7C8, + 47161 - 44032: 0xB7C9, + 47162 - 44032: 0x8EC2, + 47163 - 44032: 0x8EC3, + 47164 - 44032: 0x8EC4, + 47165 - 44032: 0x8EC5, + 47166 - 44032: 0x8EC6, + 47167 - 44032: 0x8EC7, + 47168 - 44032: 0xB7CA, + 47169 - 44032: 0x8EC8, + 47170 - 44032: 0x8EC9, + 47171 - 44032: 0x8ECA, + 47172 - 44032: 0xB7CB, + 47173 - 44032: 0x8ECB, + 47174 - 44032: 0x8ECC, + 47175 - 44032: 0x8ECD, + 47176 - 44032: 0x8ECE, + 47177 - 44032: 0x8ECF, + 47178 - 44032: 0x8ED0, + 47179 - 44032: 0x8ED1, + 47180 - 44032: 0x8ED2, + 47181 - 44032: 0x8ED3, + 47182 - 44032: 0x8ED4, + 47183 - 44032: 0x8ED5, + 47184 - 44032: 0x8ED6, + 47185 - 44032: 0xB7CC, + 47186 - 44032: 0x8ED7, + 47187 - 44032: 0xB7CD, + 47188 - 44032: 0x8ED8, + 47189 - 44032: 0x8ED9, + 47190 - 44032: 0x8EDA, + 47191 - 44032: 0x8EDB, + 47192 - 44032: 0x8EDC, + 47193 - 44032: 0x8EDD, + 47194 - 44032: 0x8EDE, + 47195 - 44032: 0x8EDF, + 47196 - 44032: 0xB7CE, + 47197 - 44032: 0xB7CF, + 47198 - 44032: 0x8EE0, + 47199 - 44032: 0x8EE1, + 47200 - 44032: 0xB7D0, + 47201 - 44032: 0x8EE2, + 47202 - 44032: 0x8EE3, + 47203 - 44032: 0x8EE4, + 47204 - 44032: 0xB7D1, + 47205 - 44032: 0x8EE5, + 47206 - 44032: 0x8EE6, + 47207 - 44032: 0x8EE7, + 47208 - 44032: 0x8EE8, + 47209 - 44032: 0x8EE9, + 47210 - 44032: 0x8EEA, + 47211 - 44032: 0x8EEB, + 47212 - 44032: 0xB7D2, + 47213 - 44032: 0xB7D3, + 47214 - 44032: 0x8EEC, + 47215 - 44032: 0xB7D4, + 47216 - 44032: 0x8EED, + 47217 - 44032: 0xB7D5, + 47218 - 44032: 0x8EEE, + 47219 - 44032: 0x8EEF, + 47220 - 44032: 0x8EF0, + 47221 - 44032: 0x8EF1, + 47222 - 44032: 0x8EF2, + 47223 - 44032: 0x8EF3, + 47224 - 44032: 0xB7D6, + 47225 - 44032: 0x8EF4, + 47226 - 44032: 0x8EF5, + 47227 - 44032: 0x8EF6, + 47228 - 44032: 0xB7D7, + 47229 - 44032: 0x8EF7, + 47230 - 44032: 0x8EF8, + 47231 - 44032: 0x8EF9, + 47232 - 44032: 0x8EFA, + 47233 - 44032: 0x8EFB, + 47234 - 44032: 0x8EFC, + 47235 - 44032: 0x8EFD, + 47236 - 44032: 0x8EFE, + 47237 - 44032: 0x8F41, + 47238 - 44032: 0x8F42, + 47239 - 44032: 0x8F43, + 47240 - 44032: 0x8F44, + 47241 - 44032: 0x8F45, + 47242 - 44032: 0x8F46, + 47243 - 44032: 0x8F47, + 47244 - 44032: 0x8F48, + 47245 - 44032: 0xB7D8, + 47246 - 44032: 0x8F49, + 47247 - 44032: 0x8F4A, + 47248 - 44032: 0x8F4B, + 47249 - 44032: 0x8F4C, + 47250 - 44032: 0x8F4D, + 47251 - 44032: 0x8F4E, + 47252 - 44032: 0x8F4F, + 47253 - 44032: 0x8F50, + 47254 - 44032: 0x8F51, + 47255 - 44032: 0x8F52, + 47256 - 44032: 0x8F53, + 47257 - 44032: 0x8F54, + 47258 - 44032: 0x8F55, + 47259 - 44032: 0x8F56, + 47260 - 44032: 0x8F57, + 47261 - 44032: 0x8F58, + 47262 - 44032: 0x8F59, + 47263 - 44032: 0x8F5A, + 47264 - 44032: 0x8F61, + 47265 - 44032: 0x8F62, + 47266 - 44032: 0x8F63, + 47267 - 44032: 0x8F64, + 47268 - 44032: 0x8F65, + 47269 - 44032: 0x8F66, + 47270 - 44032: 0x8F67, + 47271 - 44032: 0x8F68, + 47272 - 44032: 0xB7D9, + 47273 - 44032: 0x8F69, + 47274 - 44032: 0x8F6A, + 47275 - 44032: 0x8F6B, + 47276 - 44032: 0x8F6C, + 47277 - 44032: 0x8F6D, + 47278 - 44032: 0x8F6E, + 47279 - 44032: 0x8F6F, + 47280 - 44032: 0xB7DA, + 47281 - 44032: 0x8F70, + 47282 - 44032: 0x8F71, + 47283 - 44032: 0x8F72, + 47284 - 44032: 0xB7DB, + 47285 - 44032: 0x8F73, + 47286 - 44032: 0x8F74, + 47287 - 44032: 0x8F75, + 47288 - 44032: 0xB7DC, + 47289 - 44032: 0x8F76, + 47290 - 44032: 0x8F77, + 47291 - 44032: 0x8F78, + 47292 - 44032: 0x8F79, + 47293 - 44032: 0x8F7A, + 47294 - 44032: 0x8F81, + 47295 - 44032: 0x8F82, + 47296 - 44032: 0xB7DD, + 47297 - 44032: 0xB7DE, + 47298 - 44032: 0x8F83, + 47299 - 44032: 0xB7DF, + 47300 - 44032: 0x8F84, + 47301 - 44032: 0xB7E0, + 47302 - 44032: 0x8F85, + 47303 - 44032: 0x8F86, + 47304 - 44032: 0x8F87, + 47305 - 44032: 0x8F88, + 47306 - 44032: 0x8F89, + 47307 - 44032: 0x8F8A, + 47308 - 44032: 0xB7E1, + 47309 - 44032: 0x8F8B, + 47310 - 44032: 0x8F8C, + 47311 - 44032: 0x8F8D, + 47312 - 44032: 0xB7E2, + 47313 - 44032: 0x8F8E, + 47314 - 44032: 0x8F8F, + 47315 - 44032: 0x8F90, + 47316 - 44032: 0xB7E3, + 47317 - 44032: 0x8F91, + 47318 - 44032: 0x8F92, + 47319 - 44032: 0x8F93, + 47320 - 44032: 0x8F94, + 47321 - 44032: 0x8F95, + 47322 - 44032: 0x8F96, + 47323 - 44032: 0x8F97, + 47324 - 44032: 0x8F98, + 47325 - 44032: 0xB7E4, + 47326 - 44032: 0x8F99, + 47327 - 44032: 0xB7E5, + 47328 - 44032: 0x8F9A, + 47329 - 44032: 0xB7E6, + 47330 - 44032: 0x8F9B, + 47331 - 44032: 0x8F9C, + 47332 - 44032: 0x8F9D, + 47333 - 44032: 0x8F9E, + 47334 - 44032: 0x8F9F, + 47335 - 44032: 0x8FA0, + 47336 - 44032: 0xB7E7, + 47337 - 44032: 0xB7E8, + 47338 - 44032: 0x8FA1, + 47339 - 44032: 0x8FA2, + 47340 - 44032: 0xB7E9, + 47341 - 44032: 0x8FA3, + 47342 - 44032: 0x8FA4, + 47343 - 44032: 0x8FA5, + 47344 - 44032: 0xB7EA, + 47345 - 44032: 0x8FA6, + 47346 - 44032: 0x8FA7, + 47347 - 44032: 0x8FA8, + 47348 - 44032: 0x8FA9, + 47349 - 44032: 0x8FAA, + 47350 - 44032: 0x8FAB, + 47351 - 44032: 0x8FAC, + 47352 - 44032: 0xB7EB, + 47353 - 44032: 0xB7EC, + 47354 - 44032: 0x8FAD, + 47355 - 44032: 0xB7ED, + 47356 - 44032: 0x8FAE, + 47357 - 44032: 0xB7EE, + 47358 - 44032: 0x8FAF, + 47359 - 44032: 0x8FB0, + 47360 - 44032: 0x8FB1, + 47361 - 44032: 0x8FB2, + 47362 - 44032: 0x8FB3, + 47363 - 44032: 0x8FB4, + 47364 - 44032: 0xB7EF, + 47365 - 44032: 0x8FB5, + 47366 - 44032: 0x8FB6, + 47367 - 44032: 0x8FB7, + 47368 - 44032: 0x8FB8, + 47369 - 44032: 0x8FB9, + 47370 - 44032: 0x8FBA, + 47371 - 44032: 0x8FBB, + 47372 - 44032: 0x8FBC, + 47373 - 44032: 0x8FBD, + 47374 - 44032: 0x8FBE, + 47375 - 44032: 0x8FBF, + 47376 - 44032: 0x8FC0, + 47377 - 44032: 0x8FC1, + 47378 - 44032: 0x8FC2, + 47379 - 44032: 0x8FC3, + 47380 - 44032: 0x8FC4, + 47381 - 44032: 0x8FC5, + 47382 - 44032: 0x8FC6, + 47383 - 44032: 0x8FC7, + 47384 - 44032: 0xB7F0, + 47385 - 44032: 0x8FC8, + 47386 - 44032: 0x8FC9, + 47387 - 44032: 0x8FCA, + 47388 - 44032: 0x8FCB, + 47389 - 44032: 0x8FCC, + 47390 - 44032: 0x8FCD, + 47391 - 44032: 0x8FCE, + 47392 - 44032: 0xB7F1, + 47393 - 44032: 0x8FCF, + 47394 - 44032: 0x8FD0, + 47395 - 44032: 0x8FD1, + 47396 - 44032: 0x8FD2, + 47397 - 44032: 0x8FD3, + 47398 - 44032: 0x8FD4, + 47399 - 44032: 0x8FD5, + 47400 - 44032: 0x8FD6, + 47401 - 44032: 0x8FD7, + 47402 - 44032: 0x8FD8, + 47403 - 44032: 0x8FD9, + 47404 - 44032: 0x8FDA, + 47405 - 44032: 0x8FDB, + 47406 - 44032: 0x8FDC, + 47407 - 44032: 0x8FDD, + 47408 - 44032: 0x8FDE, + 47409 - 44032: 0x8FDF, + 47410 - 44032: 0x8FE0, + 47411 - 44032: 0x8FE1, + 47412 - 44032: 0x8FE2, + 47413 - 44032: 0x8FE3, + 47414 - 44032: 0x8FE4, + 47415 - 44032: 0x8FE5, + 47416 - 44032: 0x8FE6, + 47417 - 44032: 0x8FE7, + 47418 - 44032: 0x8FE8, + 47419 - 44032: 0x8FE9, + 47420 - 44032: 0xB7F2, + 47421 - 44032: 0xB7F3, + 47422 - 44032: 0x8FEA, + 47423 - 44032: 0x8FEB, + 47424 - 44032: 0xB7F4, + 47425 - 44032: 0x8FEC, + 47426 - 44032: 0x8FED, + 47427 - 44032: 0x8FEE, + 47428 - 44032: 0xB7F5, + 47429 - 44032: 0x8FEF, + 47430 - 44032: 0x8FF0, + 47431 - 44032: 0x8FF1, + 47432 - 44032: 0x8FF2, + 47433 - 44032: 0x8FF3, + 47434 - 44032: 0x8FF4, + 47435 - 44032: 0x8FF5, + 47436 - 44032: 0xB7F6, + 47437 - 44032: 0x8FF6, + 47438 - 44032: 0x8FF7, + 47439 - 44032: 0xB7F7, + 47440 - 44032: 0x8FF8, + 47441 - 44032: 0xB7F8, + 47442 - 44032: 0x8FF9, + 47443 - 44032: 0x8FFA, + 47444 - 44032: 0x8FFB, + 47445 - 44032: 0x8FFC, + 47446 - 44032: 0x8FFD, + 47447 - 44032: 0x8FFE, + 47448 - 44032: 0xB7F9, + 47449 - 44032: 0xB7FA, + 47450 - 44032: 0x9041, + 47451 - 44032: 0x9042, + 47452 - 44032: 0xB7FB, + 47453 - 44032: 0x9043, + 47454 - 44032: 0x9044, + 47455 - 44032: 0x9045, + 47456 - 44032: 0xB7FC, + 47457 - 44032: 0x9046, + 47458 - 44032: 0x9047, + 47459 - 44032: 0x9048, + 47460 - 44032: 0x9049, + 47461 - 44032: 0x904A, + 47462 - 44032: 0x904B, + 47463 - 44032: 0x904C, + 47464 - 44032: 0xB7FD, + 47465 - 44032: 0xB7FE, + 47466 - 44032: 0x904D, + 47467 - 44032: 0xB8A1, + 47468 - 44032: 0x904E, + 47469 - 44032: 0xB8A2, + 47470 - 44032: 0x904F, + 47471 - 44032: 0x9050, + 47472 - 44032: 0x9051, + 47473 - 44032: 0x9052, + 47474 - 44032: 0x9053, + 47475 - 44032: 0x9054, + 47476 - 44032: 0xB8A3, + 47477 - 44032: 0xB8A4, + 47478 - 44032: 0x9055, + 47479 - 44032: 0x9056, + 47480 - 44032: 0xB8A5, + 47481 - 44032: 0x9057, + 47482 - 44032: 0x9058, + 47483 - 44032: 0x9059, + 47484 - 44032: 0xB8A6, + 47485 - 44032: 0x905A, + 47486 - 44032: 0x9061, + 47487 - 44032: 0x9062, + 47488 - 44032: 0x9063, + 47489 - 44032: 0x9064, + 47490 - 44032: 0x9065, + 47491 - 44032: 0x9066, + 47492 - 44032: 0xB8A7, + 47493 - 44032: 0xB8A8, + 47494 - 44032: 0x9067, + 47495 - 44032: 0xB8A9, + 47496 - 44032: 0x9068, + 47497 - 44032: 0xB8AA, + 47498 - 44032: 0xB8AB, + 47499 - 44032: 0x9069, + 47500 - 44032: 0x906A, + 47501 - 44032: 0xB8AC, + 47502 - 44032: 0xB8AD, + 47503 - 44032: 0x906B, + 47504 - 44032: 0x906C, + 47505 - 44032: 0x906D, + 47506 - 44032: 0x906E, + 47507 - 44032: 0x906F, + 47508 - 44032: 0x9070, + 47509 - 44032: 0x9071, + 47510 - 44032: 0x9072, + 47511 - 44032: 0x9073, + 47512 - 44032: 0x9074, + 47513 - 44032: 0x9075, + 47514 - 44032: 0x9076, + 47515 - 44032: 0x9077, + 47516 - 44032: 0x9078, + 47517 - 44032: 0x9079, + 47518 - 44032: 0x907A, + 47519 - 44032: 0x9081, + 47520 - 44032: 0x9082, + 47521 - 44032: 0x9083, + 47522 - 44032: 0x9084, + 47523 - 44032: 0x9085, + 47524 - 44032: 0x9086, + 47525 - 44032: 0x9087, + 47526 - 44032: 0x9088, + 47527 - 44032: 0x9089, + 47528 - 44032: 0x908A, + 47529 - 44032: 0x908B, + 47530 - 44032: 0x908C, + 47531 - 44032: 0x908D, + 47532 - 44032: 0xB8AE, + 47533 - 44032: 0xB8AF, + 47534 - 44032: 0x908E, + 47535 - 44032: 0x908F, + 47536 - 44032: 0xB8B0, + 47537 - 44032: 0x9090, + 47538 - 44032: 0x9091, + 47539 - 44032: 0x9092, + 47540 - 44032: 0xB8B1, + 47541 - 44032: 0x9093, + 47542 - 44032: 0x9094, + 47543 - 44032: 0x9095, + 47544 - 44032: 0x9096, + 47545 - 44032: 0x9097, + 47546 - 44032: 0x9098, + 47547 - 44032: 0x9099, + 47548 - 44032: 0xB8B2, + 47549 - 44032: 0xB8B3, + 47550 - 44032: 0x909A, + 47551 - 44032: 0xB8B4, + 47552 - 44032: 0x909B, + 47553 - 44032: 0xB8B5, + 47554 - 44032: 0x909C, + 47555 - 44032: 0x909D, + 47556 - 44032: 0x909E, + 47557 - 44032: 0x909F, + 47558 - 44032: 0x90A0, + 47559 - 44032: 0x90A1, + 47560 - 44032: 0xB8B6, + 47561 - 44032: 0xB8B7, + 47562 - 44032: 0x90A2, + 47563 - 44032: 0x90A3, + 47564 - 44032: 0xB8B8, + 47565 - 44032: 0x90A4, + 47566 - 44032: 0xB8B9, + 47567 - 44032: 0xB8BA, + 47568 - 44032: 0xB8BB, + 47569 - 44032: 0xB8BC, + 47570 - 44032: 0xB8BD, + 47571 - 44032: 0x90A5, + 47572 - 44032: 0x90A6, + 47573 - 44032: 0x90A7, + 47574 - 44032: 0x90A8, + 47575 - 44032: 0x90A9, + 47576 - 44032: 0xB8BE, + 47577 - 44032: 0xB8BF, + 47578 - 44032: 0x90AA, + 47579 - 44032: 0xB8C0, + 47580 - 44032: 0x90AB, + 47581 - 44032: 0xB8C1, + 47582 - 44032: 0xB8C2, + 47583 - 44032: 0x90AC, + 47584 - 44032: 0x90AD, + 47585 - 44032: 0xB8C3, + 47586 - 44032: 0x90AE, + 47587 - 44032: 0xB8C4, + 47588 - 44032: 0xB8C5, + 47589 - 44032: 0xB8C6, + 47590 - 44032: 0x90AF, + 47591 - 44032: 0x90B0, + 47592 - 44032: 0xB8C7, + 47593 - 44032: 0x90B1, + 47594 - 44032: 0x90B2, + 47595 - 44032: 0x90B3, + 47596 - 44032: 0xB8C8, + 47597 - 44032: 0x90B4, + 47598 - 44032: 0x90B5, + 47599 - 44032: 0x90B6, + 47600 - 44032: 0x90B7, + 47601 - 44032: 0x90B8, + 47602 - 44032: 0x90B9, + 47603 - 44032: 0x90BA, + 47604 - 44032: 0xB8C9, + 47605 - 44032: 0xB8CA, + 47606 - 44032: 0x90BB, + 47607 - 44032: 0xB8CB, + 47608 - 44032: 0xB8CC, + 47609 - 44032: 0xB8CD, + 47610 - 44032: 0xB8CE, + 47611 - 44032: 0x90BC, + 47612 - 44032: 0x90BD, + 47613 - 44032: 0x90BE, + 47614 - 44032: 0x90BF, + 47615 - 44032: 0x90C0, + 47616 - 44032: 0xB8CF, + 47617 - 44032: 0xB8D0, + 47618 - 44032: 0x90C1, + 47619 - 44032: 0x90C2, + 47620 - 44032: 0x90C3, + 47621 - 44032: 0x90C4, + 47622 - 44032: 0x90C5, + 47623 - 44032: 0x90C6, + 47624 - 44032: 0xB8D1, + 47625 - 44032: 0x90C7, + 47626 - 44032: 0x90C8, + 47627 - 44032: 0x90C9, + 47628 - 44032: 0x90CA, + 47629 - 44032: 0x90CB, + 47630 - 44032: 0x90CC, + 47631 - 44032: 0x90CD, + 47632 - 44032: 0x90CE, + 47633 - 44032: 0x90CF, + 47634 - 44032: 0x90D0, + 47635 - 44032: 0x90D1, + 47636 - 44032: 0x90D2, + 47637 - 44032: 0xB8D2, + 47638 - 44032: 0x90D3, + 47639 - 44032: 0x90D4, + 47640 - 44032: 0x90D5, + 47641 - 44032: 0x90D6, + 47642 - 44032: 0x90D7, + 47643 - 44032: 0x90D8, + 47644 - 44032: 0x90D9, + 47645 - 44032: 0x90DA, + 47646 - 44032: 0x90DB, + 47647 - 44032: 0x90DC, + 47648 - 44032: 0x90DD, + 47649 - 44032: 0x90DE, + 47650 - 44032: 0x90DF, + 47651 - 44032: 0x90E0, + 47652 - 44032: 0x90E1, + 47653 - 44032: 0x90E2, + 47654 - 44032: 0x90E3, + 47655 - 44032: 0x90E4, + 47656 - 44032: 0x90E5, + 47657 - 44032: 0x90E6, + 47658 - 44032: 0x90E7, + 47659 - 44032: 0x90E8, + 47660 - 44032: 0x90E9, + 47661 - 44032: 0x90EA, + 47662 - 44032: 0x90EB, + 47663 - 44032: 0x90EC, + 47664 - 44032: 0x90ED, + 47665 - 44032: 0x90EE, + 47666 - 44032: 0x90EF, + 47667 - 44032: 0x90F0, + 47668 - 44032: 0x90F1, + 47669 - 44032: 0x90F2, + 47670 - 44032: 0x90F3, + 47671 - 44032: 0x90F4, + 47672 - 44032: 0xB8D3, + 47673 - 44032: 0xB8D4, + 47674 - 44032: 0x90F5, + 47675 - 44032: 0x90F6, + 47676 - 44032: 0xB8D5, + 47677 - 44032: 0x90F7, + 47678 - 44032: 0x90F8, + 47679 - 44032: 0x90F9, + 47680 - 44032: 0xB8D6, + 47681 - 44032: 0x90FA, + 47682 - 44032: 0xB8D7, + 47683 - 44032: 0x90FB, + 47684 - 44032: 0x90FC, + 47685 - 44032: 0x90FD, + 47686 - 44032: 0x90FE, + 47687 - 44032: 0x9141, + 47688 - 44032: 0xB8D8, + 47689 - 44032: 0xB8D9, + 47690 - 44032: 0x9142, + 47691 - 44032: 0xB8DA, + 47692 - 44032: 0x9143, + 47693 - 44032: 0xB8DB, + 47694 - 44032: 0xB8DC, + 47695 - 44032: 0x9144, + 47696 - 44032: 0x9145, + 47697 - 44032: 0x9146, + 47698 - 44032: 0x9147, + 47699 - 44032: 0xB8DD, + 47700 - 44032: 0xB8DE, + 47701 - 44032: 0xB8DF, + 47702 - 44032: 0x9148, + 47703 - 44032: 0x9149, + 47704 - 44032: 0xB8E0, + 47705 - 44032: 0x914A, + 47706 - 44032: 0x914B, + 47707 - 44032: 0x914C, + 47708 - 44032: 0xB8E1, + 47709 - 44032: 0x914D, + 47710 - 44032: 0x914E, + 47711 - 44032: 0x914F, + 47712 - 44032: 0x9150, + 47713 - 44032: 0x9151, + 47714 - 44032: 0x9152, + 47715 - 44032: 0x9153, + 47716 - 44032: 0xB8E2, + 47717 - 44032: 0xB8E3, + 47718 - 44032: 0x9154, + 47719 - 44032: 0xB8E4, + 47720 - 44032: 0xB8E5, + 47721 - 44032: 0xB8E6, + 47722 - 44032: 0x9155, + 47723 - 44032: 0x9156, + 47724 - 44032: 0x9157, + 47725 - 44032: 0x9158, + 47726 - 44032: 0x9159, + 47727 - 44032: 0x915A, + 47728 - 44032: 0xB8E7, + 47729 - 44032: 0xB8E8, + 47730 - 44032: 0x9161, + 47731 - 44032: 0x9162, + 47732 - 44032: 0xB8E9, + 47733 - 44032: 0x9163, + 47734 - 44032: 0x9164, + 47735 - 44032: 0x9165, + 47736 - 44032: 0xB8EA, + 47737 - 44032: 0x9166, + 47738 - 44032: 0x9167, + 47739 - 44032: 0x9168, + 47740 - 44032: 0x9169, + 47741 - 44032: 0x916A, + 47742 - 44032: 0x916B, + 47743 - 44032: 0x916C, + 47744 - 44032: 0x916D, + 47745 - 44032: 0x916E, + 47746 - 44032: 0x916F, + 47747 - 44032: 0xB8EB, + 47748 - 44032: 0xB8EC, + 47749 - 44032: 0xB8ED, + 47750 - 44032: 0x9170, + 47751 - 44032: 0xB8EE, + 47752 - 44032: 0x9171, + 47753 - 44032: 0x9172, + 47754 - 44032: 0x9173, + 47755 - 44032: 0x9174, + 47756 - 44032: 0xB8EF, + 47757 - 44032: 0x9175, + 47758 - 44032: 0x9176, + 47759 - 44032: 0x9177, + 47760 - 44032: 0x9178, + 47761 - 44032: 0x9179, + 47762 - 44032: 0x917A, + 47763 - 44032: 0x9181, + 47764 - 44032: 0x9182, + 47765 - 44032: 0x9183, + 47766 - 44032: 0x9184, + 47767 - 44032: 0x9185, + 47768 - 44032: 0x9186, + 47769 - 44032: 0x9187, + 47770 - 44032: 0x9188, + 47771 - 44032: 0x9189, + 47772 - 44032: 0x918A, + 47773 - 44032: 0x918B, + 47774 - 44032: 0x918C, + 47775 - 44032: 0x918D, + 47776 - 44032: 0x918E, + 47777 - 44032: 0x918F, + 47778 - 44032: 0x9190, + 47779 - 44032: 0x9191, + 47780 - 44032: 0x9192, + 47781 - 44032: 0x9193, + 47782 - 44032: 0x9194, + 47783 - 44032: 0x9195, + 47784 - 44032: 0xB8F0, + 47785 - 44032: 0xB8F1, + 47786 - 44032: 0x9196, + 47787 - 44032: 0xB8F2, + 47788 - 44032: 0xB8F3, + 47789 - 44032: 0x9197, + 47790 - 44032: 0x9198, + 47791 - 44032: 0x9199, + 47792 - 44032: 0xB8F4, + 47793 - 44032: 0x919A, + 47794 - 44032: 0xB8F5, + 47795 - 44032: 0x919B, + 47796 - 44032: 0x919C, + 47797 - 44032: 0x919D, + 47798 - 44032: 0x919E, + 47799 - 44032: 0x919F, + 47800 - 44032: 0xB8F6, + 47801 - 44032: 0xB8F7, + 47802 - 44032: 0x91A0, + 47803 - 44032: 0xB8F8, + 47804 - 44032: 0x91A1, + 47805 - 44032: 0xB8F9, + 47806 - 44032: 0x91A2, + 47807 - 44032: 0x91A3, + 47808 - 44032: 0x91A4, + 47809 - 44032: 0x91A5, + 47810 - 44032: 0x91A6, + 47811 - 44032: 0x91A7, + 47812 - 44032: 0xB8FA, + 47813 - 44032: 0x91A8, + 47814 - 44032: 0x91A9, + 47815 - 44032: 0x91AA, + 47816 - 44032: 0xB8FB, + 47817 - 44032: 0x91AB, + 47818 - 44032: 0x91AC, + 47819 - 44032: 0x91AD, + 47820 - 44032: 0x91AE, + 47821 - 44032: 0x91AF, + 47822 - 44032: 0x91B0, + 47823 - 44032: 0x91B1, + 47824 - 44032: 0x91B2, + 47825 - 44032: 0x91B3, + 47826 - 44032: 0x91B4, + 47827 - 44032: 0x91B5, + 47828 - 44032: 0x91B6, + 47829 - 44032: 0x91B7, + 47830 - 44032: 0x91B8, + 47831 - 44032: 0x91B9, + 47832 - 44032: 0xB8FC, + 47833 - 44032: 0xB8FD, + 47834 - 44032: 0x91BA, + 47835 - 44032: 0x91BB, + 47836 - 44032: 0x91BC, + 47837 - 44032: 0x91BD, + 47838 - 44032: 0x91BE, + 47839 - 44032: 0x91BF, + 47840 - 44032: 0x91C0, + 47841 - 44032: 0x91C1, + 47842 - 44032: 0x91C2, + 47843 - 44032: 0x91C3, + 47844 - 44032: 0x91C4, + 47845 - 44032: 0x91C5, + 47846 - 44032: 0x91C6, + 47847 - 44032: 0x91C7, + 47848 - 44032: 0x91C8, + 47849 - 44032: 0x91C9, + 47850 - 44032: 0x91CA, + 47851 - 44032: 0x91CB, + 47852 - 44032: 0x91CC, + 47853 - 44032: 0x91CD, + 47854 - 44032: 0x91CE, + 47855 - 44032: 0x91CF, + 47856 - 44032: 0x91D0, + 47857 - 44032: 0x91D1, + 47858 - 44032: 0x91D2, + 47859 - 44032: 0x91D3, + 47860 - 44032: 0x91D4, + 47861 - 44032: 0x91D5, + 47862 - 44032: 0x91D6, + 47863 - 44032: 0x91D7, + 47864 - 44032: 0x91D8, + 47865 - 44032: 0x91D9, + 47866 - 44032: 0x91DA, + 47867 - 44032: 0x91DB, + 47868 - 44032: 0xB8FE, + 47869 - 44032: 0x91DC, + 47870 - 44032: 0x91DD, + 47871 - 44032: 0x91DE, + 47872 - 44032: 0xB9A1, + 47873 - 44032: 0x91DF, + 47874 - 44032: 0x91E0, + 47875 - 44032: 0x91E1, + 47876 - 44032: 0xB9A2, + 47877 - 44032: 0x91E2, + 47878 - 44032: 0x91E3, + 47879 - 44032: 0x91E4, + 47880 - 44032: 0x91E5, + 47881 - 44032: 0x91E6, + 47882 - 44032: 0x91E7, + 47883 - 44032: 0x91E8, + 47884 - 44032: 0x91E9, + 47885 - 44032: 0xB9A3, + 47886 - 44032: 0x91EA, + 47887 - 44032: 0xB9A4, + 47888 - 44032: 0x91EB, + 47889 - 44032: 0xB9A5, + 47890 - 44032: 0x91EC, + 47891 - 44032: 0x91ED, + 47892 - 44032: 0x91EE, + 47893 - 44032: 0x91EF, + 47894 - 44032: 0x91F0, + 47895 - 44032: 0x91F1, + 47896 - 44032: 0xB9A6, + 47897 - 44032: 0x91F2, + 47898 - 44032: 0x91F3, + 47899 - 44032: 0x91F4, + 47900 - 44032: 0xB9A7, + 47901 - 44032: 0x91F5, + 47902 - 44032: 0x91F6, + 47903 - 44032: 0x91F7, + 47904 - 44032: 0xB9A8, + 47905 - 44032: 0x91F8, + 47906 - 44032: 0x91F9, + 47907 - 44032: 0x91FA, + 47908 - 44032: 0x91FB, + 47909 - 44032: 0x91FC, + 47910 - 44032: 0x91FD, + 47911 - 44032: 0x91FE, + 47912 - 44032: 0x9241, + 47913 - 44032: 0xB9A9, + 47914 - 44032: 0x9242, + 47915 - 44032: 0xB9AA, + 47916 - 44032: 0x9243, + 47917 - 44032: 0x9244, + 47918 - 44032: 0x9245, + 47919 - 44032: 0x9246, + 47920 - 44032: 0x9247, + 47921 - 44032: 0x9248, + 47922 - 44032: 0x9249, + 47923 - 44032: 0x924A, + 47924 - 44032: 0xB9AB, + 47925 - 44032: 0xB9AC, + 47926 - 44032: 0xB9AD, + 47927 - 44032: 0x924B, + 47928 - 44032: 0xB9AE, + 47929 - 44032: 0x924C, + 47930 - 44032: 0x924D, + 47931 - 44032: 0xB9AF, + 47932 - 44032: 0xB9B0, + 47933 - 44032: 0xB9B1, + 47934 - 44032: 0xB9B2, + 47935 - 44032: 0x924E, + 47936 - 44032: 0x924F, + 47937 - 44032: 0x9250, + 47938 - 44032: 0x9251, + 47939 - 44032: 0x9252, + 47940 - 44032: 0xB9B3, + 47941 - 44032: 0xB9B4, + 47942 - 44032: 0x9253, + 47943 - 44032: 0xB9B5, + 47944 - 44032: 0x9254, + 47945 - 44032: 0xB9B6, + 47946 - 44032: 0x9255, + 47947 - 44032: 0x9256, + 47948 - 44032: 0x9257, + 47949 - 44032: 0xB9B7, + 47950 - 44032: 0x9258, + 47951 - 44032: 0xB9B8, + 47952 - 44032: 0xB9B9, + 47953 - 44032: 0x9259, + 47954 - 44032: 0x925A, + 47955 - 44032: 0x9261, + 47956 - 44032: 0xB9BA, + 47957 - 44032: 0x9262, + 47958 - 44032: 0x9263, + 47959 - 44032: 0x9264, + 47960 - 44032: 0xB9BB, + 47961 - 44032: 0x9265, + 47962 - 44032: 0x9266, + 47963 - 44032: 0x9267, + 47964 - 44032: 0x9268, + 47965 - 44032: 0x9269, + 47966 - 44032: 0x926A, + 47967 - 44032: 0x926B, + 47968 - 44032: 0x926C, + 47969 - 44032: 0xB9BC, + 47970 - 44032: 0x926D, + 47971 - 44032: 0xB9BD, + 47972 - 44032: 0x926E, + 47973 - 44032: 0x926F, + 47974 - 44032: 0x9270, + 47975 - 44032: 0x9271, + 47976 - 44032: 0x9272, + 47977 - 44032: 0x9273, + 47978 - 44032: 0x9274, + 47979 - 44032: 0x9275, + 47980 - 44032: 0xB9BE, + 47981 - 44032: 0x9276, + 47982 - 44032: 0x9277, + 47983 - 44032: 0x9278, + 47984 - 44032: 0x9279, + 47985 - 44032: 0x927A, + 47986 - 44032: 0x9281, + 47987 - 44032: 0x9282, + 47988 - 44032: 0x9283, + 47989 - 44032: 0x9284, + 47990 - 44032: 0x9285, + 47991 - 44032: 0x9286, + 47992 - 44032: 0x9287, + 47993 - 44032: 0x9288, + 47994 - 44032: 0x9289, + 47995 - 44032: 0x928A, + 47996 - 44032: 0x928B, + 47997 - 44032: 0x928C, + 47998 - 44032: 0x928D, + 47999 - 44032: 0x928E, + 48000 - 44032: 0x928F, + 48001 - 44032: 0x9290, + 48002 - 44032: 0x9291, + 48003 - 44032: 0x9292, + 48004 - 44032: 0x9293, + 48005 - 44032: 0x9294, + 48006 - 44032: 0x9295, + 48007 - 44032: 0x9296, + 48008 - 44032: 0xB9BF, + 48009 - 44032: 0x9297, + 48010 - 44032: 0x9298, + 48011 - 44032: 0x9299, + 48012 - 44032: 0xB9C0, + 48013 - 44032: 0x929A, + 48014 - 44032: 0x929B, + 48015 - 44032: 0x929C, + 48016 - 44032: 0xB9C1, + 48017 - 44032: 0x929D, + 48018 - 44032: 0x929E, + 48019 - 44032: 0x929F, + 48020 - 44032: 0x92A0, + 48021 - 44032: 0x92A1, + 48022 - 44032: 0x92A2, + 48023 - 44032: 0x92A3, + 48024 - 44032: 0x92A4, + 48025 - 44032: 0x92A5, + 48026 - 44032: 0x92A6, + 48027 - 44032: 0x92A7, + 48028 - 44032: 0x92A8, + 48029 - 44032: 0x92A9, + 48030 - 44032: 0x92AA, + 48031 - 44032: 0x92AB, + 48032 - 44032: 0x92AC, + 48033 - 44032: 0x92AD, + 48034 - 44032: 0x92AE, + 48035 - 44032: 0x92AF, + 48036 - 44032: 0xB9C2, + 48037 - 44032: 0x92B0, + 48038 - 44032: 0x92B1, + 48039 - 44032: 0x92B2, + 48040 - 44032: 0xB9C3, + 48041 - 44032: 0x92B3, + 48042 - 44032: 0x92B4, + 48043 - 44032: 0x92B5, + 48044 - 44032: 0xB9C4, + 48045 - 44032: 0x92B6, + 48046 - 44032: 0x92B7, + 48047 - 44032: 0x92B8, + 48048 - 44032: 0x92B9, + 48049 - 44032: 0x92BA, + 48050 - 44032: 0x92BB, + 48051 - 44032: 0x92BC, + 48052 - 44032: 0xB9C5, + 48053 - 44032: 0x92BD, + 48054 - 44032: 0x92BE, + 48055 - 44032: 0xB9C6, + 48056 - 44032: 0x92BF, + 48057 - 44032: 0x92C0, + 48058 - 44032: 0x92C1, + 48059 - 44032: 0x92C2, + 48060 - 44032: 0x92C3, + 48061 - 44032: 0x92C4, + 48062 - 44032: 0x92C5, + 48063 - 44032: 0x92C6, + 48064 - 44032: 0xB9C7, + 48065 - 44032: 0x92C7, + 48066 - 44032: 0x92C8, + 48067 - 44032: 0x92C9, + 48068 - 44032: 0xB9C8, + 48069 - 44032: 0x92CA, + 48070 - 44032: 0x92CB, + 48071 - 44032: 0x92CC, + 48072 - 44032: 0xB9C9, + 48073 - 44032: 0x92CD, + 48074 - 44032: 0x92CE, + 48075 - 44032: 0x92CF, + 48076 - 44032: 0x92D0, + 48077 - 44032: 0x92D1, + 48078 - 44032: 0x92D2, + 48079 - 44032: 0x92D3, + 48080 - 44032: 0xB9CA, + 48081 - 44032: 0x92D4, + 48082 - 44032: 0x92D5, + 48083 - 44032: 0xB9CB, + 48084 - 44032: 0x92D6, + 48085 - 44032: 0x92D7, + 48086 - 44032: 0x92D8, + 48087 - 44032: 0x92D9, + 48088 - 44032: 0x92DA, + 48089 - 44032: 0x92DB, + 48090 - 44032: 0x92DC, + 48091 - 44032: 0x92DD, + 48092 - 44032: 0x92DE, + 48093 - 44032: 0x92DF, + 48094 - 44032: 0x92E0, + 48095 - 44032: 0x92E1, + 48096 - 44032: 0x92E2, + 48097 - 44032: 0x92E3, + 48098 - 44032: 0x92E4, + 48099 - 44032: 0x92E5, + 48100 - 44032: 0x92E6, + 48101 - 44032: 0x92E7, + 48102 - 44032: 0x92E8, + 48103 - 44032: 0x92E9, + 48104 - 44032: 0x92EA, + 48105 - 44032: 0x92EB, + 48106 - 44032: 0x92EC, + 48107 - 44032: 0x92ED, + 48108 - 44032: 0x92EE, + 48109 - 44032: 0x92EF, + 48110 - 44032: 0x92F0, + 48111 - 44032: 0x92F1, + 48112 - 44032: 0x92F2, + 48113 - 44032: 0x92F3, + 48114 - 44032: 0x92F4, + 48115 - 44032: 0x92F5, + 48116 - 44032: 0x92F6, + 48117 - 44032: 0x92F7, + 48118 - 44032: 0x92F8, + 48119 - 44032: 0x92F9, + 48120 - 44032: 0xB9CC, + 48121 - 44032: 0xB9CD, + 48122 - 44032: 0x92FA, + 48123 - 44032: 0x92FB, + 48124 - 44032: 0xB9CE, + 48125 - 44032: 0x92FC, + 48126 - 44032: 0x92FD, + 48127 - 44032: 0xB9CF, + 48128 - 44032: 0xB9D0, + 48129 - 44032: 0x92FE, + 48130 - 44032: 0xB9D1, + 48131 - 44032: 0x9341, + 48132 - 44032: 0x9342, + 48133 - 44032: 0x9343, + 48134 - 44032: 0x9344, + 48135 - 44032: 0x9345, + 48136 - 44032: 0xB9D2, + 48137 - 44032: 0xB9D3, + 48138 - 44032: 0x9346, + 48139 - 44032: 0xB9D4, + 48140 - 44032: 0xB9D5, + 48141 - 44032: 0xB9D6, + 48142 - 44032: 0x9347, + 48143 - 44032: 0xB9D7, + 48144 - 44032: 0x9348, + 48145 - 44032: 0xB9D8, + 48146 - 44032: 0x9349, + 48147 - 44032: 0x934A, + 48148 - 44032: 0xB9D9, + 48149 - 44032: 0xB9DA, + 48150 - 44032: 0xB9DB, + 48151 - 44032: 0xB9DC, + 48152 - 44032: 0xB9DD, + 48153 - 44032: 0x934B, + 48154 - 44032: 0x934C, + 48155 - 44032: 0xB9DE, + 48156 - 44032: 0xB9DF, + 48157 - 44032: 0xB9E0, + 48158 - 44032: 0xB9E1, + 48159 - 44032: 0xB9E2, + 48160 - 44032: 0x934D, + 48161 - 44032: 0x934E, + 48162 - 44032: 0x934F, + 48163 - 44032: 0x9350, + 48164 - 44032: 0xB9E3, + 48165 - 44032: 0xB9E4, + 48166 - 44032: 0x9351, + 48167 - 44032: 0xB9E5, + 48168 - 44032: 0x9352, + 48169 - 44032: 0xB9E6, + 48170 - 44032: 0x9353, + 48171 - 44032: 0x9354, + 48172 - 44032: 0x9355, + 48173 - 44032: 0xB9E7, + 48174 - 44032: 0x9356, + 48175 - 44032: 0x9357, + 48176 - 44032: 0xB9E8, + 48177 - 44032: 0xB9E9, + 48178 - 44032: 0x9358, + 48179 - 44032: 0x9359, + 48180 - 44032: 0xB9EA, + 48181 - 44032: 0x935A, + 48182 - 44032: 0x9361, + 48183 - 44032: 0x9362, + 48184 - 44032: 0xB9EB, + 48185 - 44032: 0x9363, + 48186 - 44032: 0x9364, + 48187 - 44032: 0x9365, + 48188 - 44032: 0x9366, + 48189 - 44032: 0x9367, + 48190 - 44032: 0x9368, + 48191 - 44032: 0x9369, + 48192 - 44032: 0xB9EC, + 48193 - 44032: 0xB9ED, + 48194 - 44032: 0x936A, + 48195 - 44032: 0xB9EE, + 48196 - 44032: 0xB9EF, + 48197 - 44032: 0xB9F0, + 48198 - 44032: 0x936B, + 48199 - 44032: 0x936C, + 48200 - 44032: 0x936D, + 48201 - 44032: 0xB9F1, + 48202 - 44032: 0x936E, + 48203 - 44032: 0x936F, + 48204 - 44032: 0xB9F2, + 48205 - 44032: 0xB9F3, + 48206 - 44032: 0x9370, + 48207 - 44032: 0x9371, + 48208 - 44032: 0xB9F4, + 48209 - 44032: 0x9372, + 48210 - 44032: 0x9373, + 48211 - 44032: 0x9374, + 48212 - 44032: 0x9375, + 48213 - 44032: 0x9376, + 48214 - 44032: 0x9377, + 48215 - 44032: 0x9378, + 48216 - 44032: 0x9379, + 48217 - 44032: 0x937A, + 48218 - 44032: 0x9381, + 48219 - 44032: 0x9382, + 48220 - 44032: 0x9383, + 48221 - 44032: 0xB9F5, + 48222 - 44032: 0x9384, + 48223 - 44032: 0x9385, + 48224 - 44032: 0x9386, + 48225 - 44032: 0x9387, + 48226 - 44032: 0x9388, + 48227 - 44032: 0x9389, + 48228 - 44032: 0x938A, + 48229 - 44032: 0x938B, + 48230 - 44032: 0x938C, + 48231 - 44032: 0x938D, + 48232 - 44032: 0x938E, + 48233 - 44032: 0x938F, + 48234 - 44032: 0x9390, + 48235 - 44032: 0x9391, + 48236 - 44032: 0x9392, + 48237 - 44032: 0x9393, + 48238 - 44032: 0x9394, + 48239 - 44032: 0x9395, + 48240 - 44032: 0x9396, + 48241 - 44032: 0x9397, + 48242 - 44032: 0x9398, + 48243 - 44032: 0x9399, + 48244 - 44032: 0x939A, + 48245 - 44032: 0x939B, + 48246 - 44032: 0x939C, + 48247 - 44032: 0x939D, + 48248 - 44032: 0x939E, + 48249 - 44032: 0x939F, + 48250 - 44032: 0x93A0, + 48251 - 44032: 0x93A1, + 48252 - 44032: 0x93A2, + 48253 - 44032: 0x93A3, + 48254 - 44032: 0x93A4, + 48255 - 44032: 0x93A5, + 48256 - 44032: 0x93A6, + 48257 - 44032: 0x93A7, + 48258 - 44032: 0x93A8, + 48259 - 44032: 0x93A9, + 48260 - 44032: 0xB9F6, + 48261 - 44032: 0xB9F7, + 48262 - 44032: 0x93AA, + 48263 - 44032: 0x93AB, + 48264 - 44032: 0xB9F8, + 48265 - 44032: 0x93AC, + 48266 - 44032: 0x93AD, + 48267 - 44032: 0xB9F9, + 48268 - 44032: 0xB9FA, + 48269 - 44032: 0x93AE, + 48270 - 44032: 0xB9FB, + 48271 - 44032: 0x93AF, + 48272 - 44032: 0x93B0, + 48273 - 44032: 0x93B1, + 48274 - 44032: 0x93B2, + 48275 - 44032: 0x93B3, + 48276 - 44032: 0xB9FC, + 48277 - 44032: 0xB9FD, + 48278 - 44032: 0x93B4, + 48279 - 44032: 0xB9FE, + 48280 - 44032: 0x93B5, + 48281 - 44032: 0xBAA1, + 48282 - 44032: 0xBAA2, + 48283 - 44032: 0x93B6, + 48284 - 44032: 0x93B7, + 48285 - 44032: 0x93B8, + 48286 - 44032: 0x93B9, + 48287 - 44032: 0x93BA, + 48288 - 44032: 0xBAA3, + 48289 - 44032: 0xBAA4, + 48290 - 44032: 0x93BB, + 48291 - 44032: 0x93BC, + 48292 - 44032: 0xBAA5, + 48293 - 44032: 0x93BD, + 48294 - 44032: 0x93BE, + 48295 - 44032: 0xBAA6, + 48296 - 44032: 0xBAA7, + 48297 - 44032: 0x93BF, + 48298 - 44032: 0x93C0, + 48299 - 44032: 0x93C1, + 48300 - 44032: 0x93C2, + 48301 - 44032: 0x93C3, + 48302 - 44032: 0x93C4, + 48303 - 44032: 0x93C5, + 48304 - 44032: 0xBAA8, + 48305 - 44032: 0xBAA9, + 48306 - 44032: 0x93C6, + 48307 - 44032: 0xBAAA, + 48308 - 44032: 0xBAAB, + 48309 - 44032: 0xBAAC, + 48310 - 44032: 0x93C7, + 48311 - 44032: 0x93C8, + 48312 - 44032: 0x93C9, + 48313 - 44032: 0x93CA, + 48314 - 44032: 0x93CB, + 48315 - 44032: 0x93CC, + 48316 - 44032: 0xBAAD, + 48317 - 44032: 0xBAAE, + 48318 - 44032: 0x93CD, + 48319 - 44032: 0x93CE, + 48320 - 44032: 0xBAAF, + 48321 - 44032: 0x93CF, + 48322 - 44032: 0x93D0, + 48323 - 44032: 0x93D1, + 48324 - 44032: 0xBAB0, + 48325 - 44032: 0x93D2, + 48326 - 44032: 0x93D3, + 48327 - 44032: 0x93D4, + 48328 - 44032: 0x93D5, + 48329 - 44032: 0x93D6, + 48330 - 44032: 0x93D7, + 48331 - 44032: 0x93D8, + 48332 - 44032: 0x93D9, + 48333 - 44032: 0xBAB1, + 48334 - 44032: 0x93DA, + 48335 - 44032: 0xBAB2, + 48336 - 44032: 0xBAB3, + 48337 - 44032: 0xBAB4, + 48338 - 44032: 0x93DB, + 48339 - 44032: 0x93DC, + 48340 - 44032: 0x93DD, + 48341 - 44032: 0xBAB5, + 48342 - 44032: 0x93DE, + 48343 - 44032: 0x93DF, + 48344 - 44032: 0xBAB6, + 48345 - 44032: 0x93E0, + 48346 - 44032: 0x93E1, + 48347 - 44032: 0x93E2, + 48348 - 44032: 0xBAB7, + 48349 - 44032: 0x93E3, + 48350 - 44032: 0x93E4, + 48351 - 44032: 0x93E5, + 48352 - 44032: 0x93E6, + 48353 - 44032: 0x93E7, + 48354 - 44032: 0x93E8, + 48355 - 44032: 0x93E9, + 48356 - 44032: 0x93EA, + 48357 - 44032: 0x93EB, + 48358 - 44032: 0x93EC, + 48359 - 44032: 0x93ED, + 48360 - 44032: 0x93EE, + 48361 - 44032: 0x93EF, + 48362 - 44032: 0x93F0, + 48363 - 44032: 0x93F1, + 48364 - 44032: 0x93F2, + 48365 - 44032: 0x93F3, + 48366 - 44032: 0x93F4, + 48367 - 44032: 0x93F5, + 48368 - 44032: 0x93F6, + 48369 - 44032: 0x93F7, + 48370 - 44032: 0x93F8, + 48371 - 44032: 0x93F9, + 48372 - 44032: 0xBAB8, + 48373 - 44032: 0xBAB9, + 48374 - 44032: 0xBABA, + 48375 - 44032: 0x93FA, + 48376 - 44032: 0xBABB, + 48377 - 44032: 0x93FB, + 48378 - 44032: 0x93FC, + 48379 - 44032: 0x93FD, + 48380 - 44032: 0xBABC, + 48381 - 44032: 0x93FE, + 48382 - 44032: 0x9441, + 48383 - 44032: 0x9442, + 48384 - 44032: 0x9443, + 48385 - 44032: 0x9444, + 48386 - 44032: 0x9445, + 48387 - 44032: 0x9446, + 48388 - 44032: 0xBABD, + 48389 - 44032: 0xBABE, + 48390 - 44032: 0x9447, + 48391 - 44032: 0xBABF, + 48392 - 44032: 0x9448, + 48393 - 44032: 0xBAC0, + 48394 - 44032: 0x9449, + 48395 - 44032: 0x944A, + 48396 - 44032: 0x944B, + 48397 - 44032: 0x944C, + 48398 - 44032: 0x944D, + 48399 - 44032: 0x944E, + 48400 - 44032: 0xBAC1, + 48401 - 44032: 0x944F, + 48402 - 44032: 0x9450, + 48403 - 44032: 0x9451, + 48404 - 44032: 0xBAC2, + 48405 - 44032: 0x9452, + 48406 - 44032: 0x9453, + 48407 - 44032: 0x9454, + 48408 - 44032: 0x9455, + 48409 - 44032: 0x9456, + 48410 - 44032: 0x9457, + 48411 - 44032: 0x9458, + 48412 - 44032: 0x9459, + 48413 - 44032: 0x945A, + 48414 - 44032: 0x9461, + 48415 - 44032: 0x9462, + 48416 - 44032: 0x9463, + 48417 - 44032: 0x9464, + 48418 - 44032: 0x9465, + 48419 - 44032: 0x9466, + 48420 - 44032: 0xBAC3, + 48421 - 44032: 0x9467, + 48422 - 44032: 0x9468, + 48423 - 44032: 0x9469, + 48424 - 44032: 0x946A, + 48425 - 44032: 0x946B, + 48426 - 44032: 0x946C, + 48427 - 44032: 0x946D, + 48428 - 44032: 0xBAC4, + 48429 - 44032: 0x946E, + 48430 - 44032: 0x946F, + 48431 - 44032: 0x9470, + 48432 - 44032: 0x9471, + 48433 - 44032: 0x9472, + 48434 - 44032: 0x9473, + 48435 - 44032: 0x9474, + 48436 - 44032: 0x9475, + 48437 - 44032: 0x9476, + 48438 - 44032: 0x9477, + 48439 - 44032: 0x9478, + 48440 - 44032: 0x9479, + 48441 - 44032: 0x947A, + 48442 - 44032: 0x9481, + 48443 - 44032: 0x9482, + 48444 - 44032: 0x9483, + 48445 - 44032: 0x9484, + 48446 - 44032: 0x9485, + 48447 - 44032: 0x9486, + 48448 - 44032: 0xBAC5, + 48449 - 44032: 0x9487, + 48450 - 44032: 0x9488, + 48451 - 44032: 0x9489, + 48452 - 44032: 0x948A, + 48453 - 44032: 0x948B, + 48454 - 44032: 0x948C, + 48455 - 44032: 0x948D, + 48456 - 44032: 0xBAC6, + 48457 - 44032: 0xBAC7, + 48458 - 44032: 0x948E, + 48459 - 44032: 0x948F, + 48460 - 44032: 0xBAC8, + 48461 - 44032: 0x9490, + 48462 - 44032: 0x9491, + 48463 - 44032: 0x9492, + 48464 - 44032: 0xBAC9, + 48465 - 44032: 0x9493, + 48466 - 44032: 0x9494, + 48467 - 44032: 0x9495, + 48468 - 44032: 0x9496, + 48469 - 44032: 0x9497, + 48470 - 44032: 0x9498, + 48471 - 44032: 0x9499, + 48472 - 44032: 0xBACA, + 48473 - 44032: 0xBACB, + 48474 - 44032: 0x949A, + 48475 - 44032: 0x949B, + 48476 - 44032: 0x949C, + 48477 - 44032: 0x949D, + 48478 - 44032: 0x949E, + 48479 - 44032: 0x949F, + 48480 - 44032: 0x94A0, + 48481 - 44032: 0x94A1, + 48482 - 44032: 0x94A2, + 48483 - 44032: 0x94A3, + 48484 - 44032: 0xBACC, + 48485 - 44032: 0x94A4, + 48486 - 44032: 0x94A5, + 48487 - 44032: 0x94A6, + 48488 - 44032: 0xBACD, + 48489 - 44032: 0x94A7, + 48490 - 44032: 0x94A8, + 48491 - 44032: 0x94A9, + 48492 - 44032: 0x94AA, + 48493 - 44032: 0x94AB, + 48494 - 44032: 0x94AC, + 48495 - 44032: 0x94AD, + 48496 - 44032: 0x94AE, + 48497 - 44032: 0x94AF, + 48498 - 44032: 0x94B0, + 48499 - 44032: 0x94B1, + 48500 - 44032: 0x94B2, + 48501 - 44032: 0x94B3, + 48502 - 44032: 0x94B4, + 48503 - 44032: 0x94B5, + 48504 - 44032: 0x94B6, + 48505 - 44032: 0x94B7, + 48506 - 44032: 0x94B8, + 48507 - 44032: 0x94B9, + 48508 - 44032: 0x94BA, + 48509 - 44032: 0x94BB, + 48510 - 44032: 0x94BC, + 48511 - 44032: 0x94BD, + 48512 - 44032: 0xBACE, + 48513 - 44032: 0xBACF, + 48514 - 44032: 0x94BE, + 48515 - 44032: 0x94BF, + 48516 - 44032: 0xBAD0, + 48517 - 44032: 0x94C0, + 48518 - 44032: 0x94C1, + 48519 - 44032: 0xBAD1, + 48520 - 44032: 0xBAD2, + 48521 - 44032: 0xBAD3, + 48522 - 44032: 0xBAD4, + 48523 - 44032: 0x94C2, + 48524 - 44032: 0x94C3, + 48525 - 44032: 0x94C4, + 48526 - 44032: 0x94C5, + 48527 - 44032: 0x94C6, + 48528 - 44032: 0xBAD5, + 48529 - 44032: 0xBAD6, + 48530 - 44032: 0x94C7, + 48531 - 44032: 0xBAD7, + 48532 - 44032: 0x94C8, + 48533 - 44032: 0xBAD8, + 48534 - 44032: 0x94C9, + 48535 - 44032: 0x94CA, + 48536 - 44032: 0x94CB, + 48537 - 44032: 0xBAD9, + 48538 - 44032: 0xBADA, + 48539 - 44032: 0x94CC, + 48540 - 44032: 0xBADB, + 48541 - 44032: 0x94CD, + 48542 - 44032: 0x94CE, + 48543 - 44032: 0x94CF, + 48544 - 44032: 0x94D0, + 48545 - 44032: 0x94D1, + 48546 - 44032: 0x94D2, + 48547 - 44032: 0x94D3, + 48548 - 44032: 0xBADC, + 48549 - 44032: 0x94D4, + 48550 - 44032: 0x94D5, + 48551 - 44032: 0x94D6, + 48552 - 44032: 0x94D7, + 48553 - 44032: 0x94D8, + 48554 - 44032: 0x94D9, + 48555 - 44032: 0x94DA, + 48556 - 44032: 0x94DB, + 48557 - 44032: 0x94DC, + 48558 - 44032: 0x94DD, + 48559 - 44032: 0x94DE, + 48560 - 44032: 0xBADD, + 48561 - 44032: 0x94DF, + 48562 - 44032: 0x94E0, + 48563 - 44032: 0x94E1, + 48564 - 44032: 0x94E2, + 48565 - 44032: 0x94E3, + 48566 - 44032: 0x94E4, + 48567 - 44032: 0x94E5, + 48568 - 44032: 0xBADE, + 48569 - 44032: 0x94E6, + 48570 - 44032: 0x94E7, + 48571 - 44032: 0x94E8, + 48572 - 44032: 0x94E9, + 48573 - 44032: 0x94EA, + 48574 - 44032: 0x94EB, + 48575 - 44032: 0x94EC, + 48576 - 44032: 0x94ED, + 48577 - 44032: 0x94EE, + 48578 - 44032: 0x94EF, + 48579 - 44032: 0x94F0, + 48580 - 44032: 0x94F1, + 48581 - 44032: 0x94F2, + 48582 - 44032: 0x94F3, + 48583 - 44032: 0x94F4, + 48584 - 44032: 0x94F5, + 48585 - 44032: 0x94F6, + 48586 - 44032: 0x94F7, + 48587 - 44032: 0x94F8, + 48588 - 44032: 0x94F9, + 48589 - 44032: 0x94FA, + 48590 - 44032: 0x94FB, + 48591 - 44032: 0x94FC, + 48592 - 44032: 0x94FD, + 48593 - 44032: 0x94FE, + 48594 - 44032: 0x9541, + 48595 - 44032: 0x9542, + 48596 - 44032: 0xBADF, + 48597 - 44032: 0xBAE0, + 48598 - 44032: 0x9543, + 48599 - 44032: 0x9544, + 48600 - 44032: 0xBAE1, + 48601 - 44032: 0x9545, + 48602 - 44032: 0x9546, + 48603 - 44032: 0x9547, + 48604 - 44032: 0xBAE2, + 48605 - 44032: 0x9548, + 48606 - 44032: 0x9549, + 48607 - 44032: 0x954A, + 48608 - 44032: 0x954B, + 48609 - 44032: 0x954C, + 48610 - 44032: 0x954D, + 48611 - 44032: 0x954E, + 48612 - 44032: 0x954F, + 48613 - 44032: 0x9550, + 48614 - 44032: 0x9551, + 48615 - 44032: 0x9552, + 48616 - 44032: 0x9553, + 48617 - 44032: 0xBAE3, + 48618 - 44032: 0x9554, + 48619 - 44032: 0x9555, + 48620 - 44032: 0x9556, + 48621 - 44032: 0x9557, + 48622 - 44032: 0x9558, + 48623 - 44032: 0x9559, + 48624 - 44032: 0xBAE4, + 48625 - 44032: 0x955A, + 48626 - 44032: 0x9561, + 48627 - 44032: 0x9562, + 48628 - 44032: 0xBAE5, + 48629 - 44032: 0x9563, + 48630 - 44032: 0x9564, + 48631 - 44032: 0x9565, + 48632 - 44032: 0xBAE6, + 48633 - 44032: 0x9566, + 48634 - 44032: 0x9567, + 48635 - 44032: 0x9568, + 48636 - 44032: 0x9569, + 48637 - 44032: 0x956A, + 48638 - 44032: 0x956B, + 48639 - 44032: 0x956C, + 48640 - 44032: 0xBAE7, + 48641 - 44032: 0x956D, + 48642 - 44032: 0x956E, + 48643 - 44032: 0xBAE8, + 48644 - 44032: 0x956F, + 48645 - 44032: 0xBAE9, + 48646 - 44032: 0x9570, + 48647 - 44032: 0x9571, + 48648 - 44032: 0x9572, + 48649 - 44032: 0x9573, + 48650 - 44032: 0x9574, + 48651 - 44032: 0x9575, + 48652 - 44032: 0xBAEA, + 48653 - 44032: 0xBAEB, + 48654 - 44032: 0x9576, + 48655 - 44032: 0x9577, + 48656 - 44032: 0xBAEC, + 48657 - 44032: 0x9578, + 48658 - 44032: 0x9579, + 48659 - 44032: 0x957A, + 48660 - 44032: 0xBAED, + 48661 - 44032: 0x9581, + 48662 - 44032: 0x9582, + 48663 - 44032: 0x9583, + 48664 - 44032: 0x9584, + 48665 - 44032: 0x9585, + 48666 - 44032: 0x9586, + 48667 - 44032: 0x9587, + 48668 - 44032: 0xBAEE, + 48669 - 44032: 0xBAEF, + 48670 - 44032: 0x9588, + 48671 - 44032: 0xBAF0, + 48672 - 44032: 0x9589, + 48673 - 44032: 0x958A, + 48674 - 44032: 0x958B, + 48675 - 44032: 0x958C, + 48676 - 44032: 0x958D, + 48677 - 44032: 0x958E, + 48678 - 44032: 0x958F, + 48679 - 44032: 0x9590, + 48680 - 44032: 0x9591, + 48681 - 44032: 0x9592, + 48682 - 44032: 0x9593, + 48683 - 44032: 0x9594, + 48684 - 44032: 0x9595, + 48685 - 44032: 0x9596, + 48686 - 44032: 0x9597, + 48687 - 44032: 0x9598, + 48688 - 44032: 0x9599, + 48689 - 44032: 0x959A, + 48690 - 44032: 0x959B, + 48691 - 44032: 0x959C, + 48692 - 44032: 0x959D, + 48693 - 44032: 0x959E, + 48694 - 44032: 0x959F, + 48695 - 44032: 0x95A0, + 48696 - 44032: 0x95A1, + 48697 - 44032: 0x95A2, + 48698 - 44032: 0x95A3, + 48699 - 44032: 0x95A4, + 48700 - 44032: 0x95A5, + 48701 - 44032: 0x95A6, + 48702 - 44032: 0x95A7, + 48703 - 44032: 0x95A8, + 48704 - 44032: 0x95A9, + 48705 - 44032: 0x95AA, + 48706 - 44032: 0x95AB, + 48707 - 44032: 0x95AC, + 48708 - 44032: 0xBAF1, + 48709 - 44032: 0xBAF2, + 48710 - 44032: 0x95AD, + 48711 - 44032: 0x95AE, + 48712 - 44032: 0xBAF3, + 48713 - 44032: 0x95AF, + 48714 - 44032: 0x95B0, + 48715 - 44032: 0x95B1, + 48716 - 44032: 0xBAF4, + 48717 - 44032: 0x95B2, + 48718 - 44032: 0xBAF5, + 48719 - 44032: 0x95B3, + 48720 - 44032: 0x95B4, + 48721 - 44032: 0x95B5, + 48722 - 44032: 0x95B6, + 48723 - 44032: 0x95B7, + 48724 - 44032: 0xBAF6, + 48725 - 44032: 0xBAF7, + 48726 - 44032: 0x95B8, + 48727 - 44032: 0xBAF8, + 48728 - 44032: 0x95B9, + 48729 - 44032: 0xBAF9, + 48730 - 44032: 0xBAFA, + 48731 - 44032: 0xBAFB, + 48732 - 44032: 0x95BA, + 48733 - 44032: 0x95BB, + 48734 - 44032: 0x95BC, + 48735 - 44032: 0x95BD, + 48736 - 44032: 0xBAFC, + 48737 - 44032: 0xBAFD, + 48738 - 44032: 0x95BE, + 48739 - 44032: 0x95BF, + 48740 - 44032: 0xBAFE, + 48741 - 44032: 0x95C0, + 48742 - 44032: 0x95C1, + 48743 - 44032: 0x95C2, + 48744 - 44032: 0xBBA1, + 48745 - 44032: 0x95C3, + 48746 - 44032: 0xBBA2, + 48747 - 44032: 0x95C4, + 48748 - 44032: 0x95C5, + 48749 - 44032: 0x95C6, + 48750 - 44032: 0x95C7, + 48751 - 44032: 0x95C8, + 48752 - 44032: 0xBBA3, + 48753 - 44032: 0xBBA4, + 48754 - 44032: 0x95C9, + 48755 - 44032: 0xBBA5, + 48756 - 44032: 0xBBA6, + 48757 - 44032: 0xBBA7, + 48758 - 44032: 0x95CA, + 48759 - 44032: 0x95CB, + 48760 - 44032: 0x95CC, + 48761 - 44032: 0x95CD, + 48762 - 44032: 0x95CE, + 48763 - 44032: 0xBBA8, + 48764 - 44032: 0xBBA9, + 48765 - 44032: 0xBBAA, + 48766 - 44032: 0x95CF, + 48767 - 44032: 0x95D0, + 48768 - 44032: 0xBBAB, + 48769 - 44032: 0x95D1, + 48770 - 44032: 0x95D2, + 48771 - 44032: 0x95D3, + 48772 - 44032: 0xBBAC, + 48773 - 44032: 0x95D4, + 48774 - 44032: 0x95D5, + 48775 - 44032: 0x95D6, + 48776 - 44032: 0x95D7, + 48777 - 44032: 0x95D8, + 48778 - 44032: 0x95D9, + 48779 - 44032: 0x95DA, + 48780 - 44032: 0xBBAD, + 48781 - 44032: 0xBBAE, + 48782 - 44032: 0x95DB, + 48783 - 44032: 0xBBAF, + 48784 - 44032: 0xBBB0, + 48785 - 44032: 0xBBB1, + 48786 - 44032: 0x95DC, + 48787 - 44032: 0x95DD, + 48788 - 44032: 0x95DE, + 48789 - 44032: 0x95DF, + 48790 - 44032: 0x95E0, + 48791 - 44032: 0x95E1, + 48792 - 44032: 0xBBB2, + 48793 - 44032: 0xBBB3, + 48794 - 44032: 0x95E2, + 48795 - 44032: 0x95E3, + 48796 - 44032: 0x95E4, + 48797 - 44032: 0x95E5, + 48798 - 44032: 0x95E6, + 48799 - 44032: 0x95E7, + 48800 - 44032: 0x95E8, + 48801 - 44032: 0x95E9, + 48802 - 44032: 0x95EA, + 48803 - 44032: 0x95EB, + 48804 - 44032: 0x95EC, + 48805 - 44032: 0x95ED, + 48806 - 44032: 0x95EE, + 48807 - 44032: 0x95EF, + 48808 - 44032: 0xBBB4, + 48809 - 44032: 0x95F0, + 48810 - 44032: 0x95F1, + 48811 - 44032: 0x95F2, + 48812 - 44032: 0x95F3, + 48813 - 44032: 0x95F4, + 48814 - 44032: 0x95F5, + 48815 - 44032: 0x95F6, + 48816 - 44032: 0x95F7, + 48817 - 44032: 0x95F8, + 48818 - 44032: 0x95F9, + 48819 - 44032: 0x95FA, + 48820 - 44032: 0x95FB, + 48821 - 44032: 0x95FC, + 48822 - 44032: 0x95FD, + 48823 - 44032: 0x95FE, + 48824 - 44032: 0x9641, + 48825 - 44032: 0x9642, + 48826 - 44032: 0x9643, + 48827 - 44032: 0x9644, + 48828 - 44032: 0x9645, + 48829 - 44032: 0x9646, + 48830 - 44032: 0x9647, + 48831 - 44032: 0x9648, + 48832 - 44032: 0x9649, + 48833 - 44032: 0x964A, + 48834 - 44032: 0x964B, + 48835 - 44032: 0x964C, + 48836 - 44032: 0x964D, + 48837 - 44032: 0x964E, + 48838 - 44032: 0x964F, + 48839 - 44032: 0x9650, + 48840 - 44032: 0x9651, + 48841 - 44032: 0x9652, + 48842 - 44032: 0x9653, + 48843 - 44032: 0x9654, + 48844 - 44032: 0x9655, + 48845 - 44032: 0x9656, + 48846 - 44032: 0x9657, + 48847 - 44032: 0x9658, + 48848 - 44032: 0xBBB5, + 48849 - 44032: 0xBBB6, + 48850 - 44032: 0x9659, + 48851 - 44032: 0x965A, + 48852 - 44032: 0xBBB7, + 48853 - 44032: 0x9661, + 48854 - 44032: 0x9662, + 48855 - 44032: 0xBBB8, + 48856 - 44032: 0xBBB9, + 48857 - 44032: 0x9663, + 48858 - 44032: 0x9664, + 48859 - 44032: 0x9665, + 48860 - 44032: 0x9666, + 48861 - 44032: 0x9667, + 48862 - 44032: 0x9668, + 48863 - 44032: 0x9669, + 48864 - 44032: 0xBBBA, + 48865 - 44032: 0x966A, + 48866 - 44032: 0x966B, + 48867 - 44032: 0xBBBB, + 48868 - 44032: 0xBBBC, + 48869 - 44032: 0xBBBD, + 48870 - 44032: 0x966C, + 48871 - 44032: 0x966D, + 48872 - 44032: 0x966E, + 48873 - 44032: 0x966F, + 48874 - 44032: 0x9670, + 48875 - 44032: 0x9671, + 48876 - 44032: 0xBBBE, + 48877 - 44032: 0x9672, + 48878 - 44032: 0x9673, + 48879 - 44032: 0x9674, + 48880 - 44032: 0x9675, + 48881 - 44032: 0x9676, + 48882 - 44032: 0x9677, + 48883 - 44032: 0x9678, + 48884 - 44032: 0x9679, + 48885 - 44032: 0x967A, + 48886 - 44032: 0x9681, + 48887 - 44032: 0x9682, + 48888 - 44032: 0x9683, + 48889 - 44032: 0x9684, + 48890 - 44032: 0x9685, + 48891 - 44032: 0x9686, + 48892 - 44032: 0x9687, + 48893 - 44032: 0x9688, + 48894 - 44032: 0x9689, + 48895 - 44032: 0x968A, + 48896 - 44032: 0x968B, + 48897 - 44032: 0xBBBF, + 48898 - 44032: 0x968C, + 48899 - 44032: 0x968D, + 48900 - 44032: 0x968E, + 48901 - 44032: 0x968F, + 48902 - 44032: 0x9690, + 48903 - 44032: 0x9691, + 48904 - 44032: 0xBBC0, + 48905 - 44032: 0xBBC1, + 48906 - 44032: 0x9692, + 48907 - 44032: 0x9693, + 48908 - 44032: 0x9694, + 48909 - 44032: 0x9695, + 48910 - 44032: 0x9696, + 48911 - 44032: 0x9697, + 48912 - 44032: 0x9698, + 48913 - 44032: 0x9699, + 48914 - 44032: 0x969A, + 48915 - 44032: 0x969B, + 48916 - 44032: 0x969C, + 48917 - 44032: 0x969D, + 48918 - 44032: 0x969E, + 48919 - 44032: 0x969F, + 48920 - 44032: 0xBBC2, + 48921 - 44032: 0xBBC3, + 48922 - 44032: 0x96A0, + 48923 - 44032: 0xBBC4, + 48924 - 44032: 0xBBC5, + 48925 - 44032: 0xBBC6, + 48926 - 44032: 0x96A1, + 48927 - 44032: 0x96A2, + 48928 - 44032: 0x96A3, + 48929 - 44032: 0x96A4, + 48930 - 44032: 0x96A5, + 48931 - 44032: 0x96A6, + 48932 - 44032: 0x96A7, + 48933 - 44032: 0x96A8, + 48934 - 44032: 0x96A9, + 48935 - 44032: 0x96AA, + 48936 - 44032: 0x96AB, + 48937 - 44032: 0x96AC, + 48938 - 44032: 0x96AD, + 48939 - 44032: 0x96AE, + 48940 - 44032: 0x96AF, + 48941 - 44032: 0x96B0, + 48942 - 44032: 0x96B1, + 48943 - 44032: 0x96B2, + 48944 - 44032: 0x96B3, + 48945 - 44032: 0x96B4, + 48946 - 44032: 0x96B5, + 48947 - 44032: 0x96B6, + 48948 - 44032: 0x96B7, + 48949 - 44032: 0x96B8, + 48950 - 44032: 0x96B9, + 48951 - 44032: 0x96BA, + 48952 - 44032: 0x96BB, + 48953 - 44032: 0x96BC, + 48954 - 44032: 0x96BD, + 48955 - 44032: 0x96BE, + 48956 - 44032: 0x96BF, + 48957 - 44032: 0x96C0, + 48958 - 44032: 0x96C1, + 48959 - 44032: 0x96C2, + 48960 - 44032: 0xBBC7, + 48961 - 44032: 0xBBC8, + 48962 - 44032: 0x96C3, + 48963 - 44032: 0x96C4, + 48964 - 44032: 0xBBC9, + 48965 - 44032: 0x96C5, + 48966 - 44032: 0x96C6, + 48967 - 44032: 0x96C7, + 48968 - 44032: 0xBBCA, + 48969 - 44032: 0x96C8, + 48970 - 44032: 0x96C9, + 48971 - 44032: 0x96CA, + 48972 - 44032: 0x96CB, + 48973 - 44032: 0x96CC, + 48974 - 44032: 0x96CD, + 48975 - 44032: 0x96CE, + 48976 - 44032: 0xBBCB, + 48977 - 44032: 0xBBCC, + 48978 - 44032: 0x96CF, + 48979 - 44032: 0x96D0, + 48980 - 44032: 0x96D1, + 48981 - 44032: 0xBBCD, + 48982 - 44032: 0x96D2, + 48983 - 44032: 0x96D3, + 48984 - 44032: 0x96D4, + 48985 - 44032: 0x96D5, + 48986 - 44032: 0x96D6, + 48987 - 44032: 0x96D7, + 48988 - 44032: 0x96D8, + 48989 - 44032: 0x96D9, + 48990 - 44032: 0x96DA, + 48991 - 44032: 0x96DB, + 48992 - 44032: 0x96DC, + 48993 - 44032: 0x96DD, + 48994 - 44032: 0x96DE, + 48995 - 44032: 0x96DF, + 48996 - 44032: 0x96E0, + 48997 - 44032: 0x96E1, + 48998 - 44032: 0x96E2, + 48999 - 44032: 0x96E3, + 49000 - 44032: 0x96E4, + 49001 - 44032: 0x96E5, + 49002 - 44032: 0x96E6, + 49003 - 44032: 0x96E7, + 49004 - 44032: 0x96E8, + 49005 - 44032: 0x96E9, + 49006 - 44032: 0x96EA, + 49007 - 44032: 0x96EB, + 49008 - 44032: 0x96EC, + 49009 - 44032: 0x96ED, + 49010 - 44032: 0x96EE, + 49011 - 44032: 0x96EF, + 49012 - 44032: 0x96F0, + 49013 - 44032: 0x96F1, + 49014 - 44032: 0x96F2, + 49015 - 44032: 0x96F3, + 49016 - 44032: 0x96F4, + 49017 - 44032: 0x96F5, + 49018 - 44032: 0x96F6, + 49019 - 44032: 0x96F7, + 49020 - 44032: 0x96F8, + 49021 - 44032: 0x96F9, + 49022 - 44032: 0x96FA, + 49023 - 44032: 0x96FB, + 49024 - 44032: 0x96FC, + 49025 - 44032: 0x96FD, + 49026 - 44032: 0x96FE, + 49027 - 44032: 0x9741, + 49028 - 44032: 0x9742, + 49029 - 44032: 0x9743, + 49030 - 44032: 0x9744, + 49031 - 44032: 0x9745, + 49032 - 44032: 0x9746, + 49033 - 44032: 0x9747, + 49034 - 44032: 0x9748, + 49035 - 44032: 0x9749, + 49036 - 44032: 0x974A, + 49037 - 44032: 0x974B, + 49038 - 44032: 0x974C, + 49039 - 44032: 0x974D, + 49040 - 44032: 0x974E, + 49041 - 44032: 0x974F, + 49042 - 44032: 0x9750, + 49043 - 44032: 0x9751, + 49044 - 44032: 0xBBCE, + 49045 - 44032: 0x9752, + 49046 - 44032: 0x9753, + 49047 - 44032: 0x9754, + 49048 - 44032: 0x9755, + 49049 - 44032: 0x9756, + 49050 - 44032: 0x9757, + 49051 - 44032: 0x9758, + 49052 - 44032: 0x9759, + 49053 - 44032: 0x975A, + 49054 - 44032: 0x9761, + 49055 - 44032: 0x9762, + 49056 - 44032: 0x9763, + 49057 - 44032: 0x9764, + 49058 - 44032: 0x9765, + 49059 - 44032: 0x9766, + 49060 - 44032: 0x9767, + 49061 - 44032: 0x9768, + 49062 - 44032: 0x9769, + 49063 - 44032: 0x976A, + 49064 - 44032: 0x976B, + 49065 - 44032: 0x976C, + 49066 - 44032: 0x976D, + 49067 - 44032: 0x976E, + 49068 - 44032: 0x976F, + 49069 - 44032: 0x9770, + 49070 - 44032: 0x9771, + 49071 - 44032: 0x9772, + 49072 - 44032: 0xBBCF, + 49073 - 44032: 0x9773, + 49074 - 44032: 0x9774, + 49075 - 44032: 0x9775, + 49076 - 44032: 0x9776, + 49077 - 44032: 0x9777, + 49078 - 44032: 0x9778, + 49079 - 44032: 0x9779, + 49080 - 44032: 0x977A, + 49081 - 44032: 0x9781, + 49082 - 44032: 0x9782, + 49083 - 44032: 0x9783, + 49084 - 44032: 0x9784, + 49085 - 44032: 0x9785, + 49086 - 44032: 0x9786, + 49087 - 44032: 0x9787, + 49088 - 44032: 0x9788, + 49089 - 44032: 0x9789, + 49090 - 44032: 0x978A, + 49091 - 44032: 0x978B, + 49092 - 44032: 0x978C, + 49093 - 44032: 0xBBD0, + 49094 - 44032: 0x978D, + 49095 - 44032: 0x978E, + 49096 - 44032: 0x978F, + 49097 - 44032: 0x9790, + 49098 - 44032: 0x9791, + 49099 - 44032: 0x9792, + 49100 - 44032: 0xBBD1, + 49101 - 44032: 0xBBD2, + 49102 - 44032: 0x9793, + 49103 - 44032: 0x9794, + 49104 - 44032: 0xBBD3, + 49105 - 44032: 0x9795, + 49106 - 44032: 0x9796, + 49107 - 44032: 0x9797, + 49108 - 44032: 0xBBD4, + 49109 - 44032: 0x9798, + 49110 - 44032: 0x9799, + 49111 - 44032: 0x979A, + 49112 - 44032: 0x979B, + 49113 - 44032: 0x979C, + 49114 - 44032: 0x979D, + 49115 - 44032: 0x979E, + 49116 - 44032: 0xBBD5, + 49117 - 44032: 0x979F, + 49118 - 44032: 0x97A0, + 49119 - 44032: 0xBBD6, + 49120 - 44032: 0x97A1, + 49121 - 44032: 0xBBD7, + 49122 - 44032: 0x97A2, + 49123 - 44032: 0x97A3, + 49124 - 44032: 0x97A4, + 49125 - 44032: 0x97A5, + 49126 - 44032: 0x97A6, + 49127 - 44032: 0x97A7, + 49128 - 44032: 0x97A8, + 49129 - 44032: 0x97A9, + 49130 - 44032: 0x97AA, + 49131 - 44032: 0x97AB, + 49132 - 44032: 0x97AC, + 49133 - 44032: 0x97AD, + 49134 - 44032: 0x97AE, + 49135 - 44032: 0x97AF, + 49136 - 44032: 0x97B0, + 49137 - 44032: 0x97B1, + 49138 - 44032: 0x97B2, + 49139 - 44032: 0x97B3, + 49140 - 44032: 0x97B4, + 49141 - 44032: 0x97B5, + 49142 - 44032: 0x97B6, + 49143 - 44032: 0x97B7, + 49144 - 44032: 0x97B8, + 49145 - 44032: 0x97B9, + 49146 - 44032: 0x97BA, + 49147 - 44032: 0x97BB, + 49148 - 44032: 0x97BC, + 49149 - 44032: 0x97BD, + 49150 - 44032: 0x97BE, + 49151 - 44032: 0x97BF, + 49152 - 44032: 0x97C0, + 49153 - 44032: 0x97C1, + 49154 - 44032: 0x97C2, + 49155 - 44032: 0x97C3, + 49156 - 44032: 0x97C4, + 49157 - 44032: 0x97C5, + 49158 - 44032: 0x97C6, + 49159 - 44032: 0x97C7, + 49160 - 44032: 0x97C8, + 49161 - 44032: 0x97C9, + 49162 - 44032: 0x97CA, + 49163 - 44032: 0x97CB, + 49164 - 44032: 0x97CC, + 49165 - 44032: 0x97CD, + 49166 - 44032: 0x97CE, + 49167 - 44032: 0x97CF, + 49168 - 44032: 0x97D0, + 49169 - 44032: 0x97D1, + 49170 - 44032: 0x97D2, + 49171 - 44032: 0x97D3, + 49172 - 44032: 0x97D4, + 49173 - 44032: 0x97D5, + 49174 - 44032: 0x97D6, + 49175 - 44032: 0x97D7, + 49176 - 44032: 0x97D8, + 49177 - 44032: 0x97D9, + 49178 - 44032: 0x97DA, + 49179 - 44032: 0x97DB, + 49180 - 44032: 0x97DC, + 49181 - 44032: 0x97DD, + 49182 - 44032: 0x97DE, + 49183 - 44032: 0x97DF, + 49184 - 44032: 0x97E0, + 49185 - 44032: 0x97E1, + 49186 - 44032: 0x97E2, + 49187 - 44032: 0x97E3, + 49188 - 44032: 0x97E4, + 49189 - 44032: 0x97E5, + 49190 - 44032: 0x97E6, + 49191 - 44032: 0x97E7, + 49192 - 44032: 0x97E8, + 49193 - 44032: 0x97E9, + 49194 - 44032: 0x97EA, + 49195 - 44032: 0x97EB, + 49196 - 44032: 0x97EC, + 49197 - 44032: 0x97ED, + 49198 - 44032: 0x97EE, + 49199 - 44032: 0x97EF, + 49200 - 44032: 0x97F0, + 49201 - 44032: 0x97F1, + 49202 - 44032: 0x97F2, + 49203 - 44032: 0x97F3, + 49204 - 44032: 0x97F4, + 49205 - 44032: 0x97F5, + 49206 - 44032: 0x97F6, + 49207 - 44032: 0x97F7, + 49208 - 44032: 0x97F8, + 49209 - 44032: 0x97F9, + 49210 - 44032: 0x97FA, + 49211 - 44032: 0x97FB, + 49212 - 44032: 0xBBD8, + 49213 - 44032: 0x97FC, + 49214 - 44032: 0x97FD, + 49215 - 44032: 0x97FE, + 49216 - 44032: 0x9841, + 49217 - 44032: 0x9842, + 49218 - 44032: 0x9843, + 49219 - 44032: 0x9844, + 49220 - 44032: 0x9845, + 49221 - 44032: 0x9846, + 49222 - 44032: 0x9847, + 49223 - 44032: 0x9848, + 49224 - 44032: 0x9849, + 49225 - 44032: 0x984A, + 49226 - 44032: 0x984B, + 49227 - 44032: 0x984C, + 49228 - 44032: 0x984D, + 49229 - 44032: 0x984E, + 49230 - 44032: 0x984F, + 49231 - 44032: 0x9850, + 49232 - 44032: 0x9851, + 49233 - 44032: 0xBBD9, + 49234 - 44032: 0x9852, + 49235 - 44032: 0x9853, + 49236 - 44032: 0x9854, + 49237 - 44032: 0x9855, + 49238 - 44032: 0x9856, + 49239 - 44032: 0x9857, + 49240 - 44032: 0xBBDA, + 49241 - 44032: 0x9858, + 49242 - 44032: 0x9859, + 49243 - 44032: 0x985A, + 49244 - 44032: 0xBBDB, + 49245 - 44032: 0x9861, + 49246 - 44032: 0x9862, + 49247 - 44032: 0x9863, + 49248 - 44032: 0xBBDC, + 49249 - 44032: 0x9864, + 49250 - 44032: 0x9865, + 49251 - 44032: 0x9866, + 49252 - 44032: 0x9867, + 49253 - 44032: 0x9868, + 49254 - 44032: 0x9869, + 49255 - 44032: 0x986A, + 49256 - 44032: 0xBBDD, + 49257 - 44032: 0xBBDE, + 49258 - 44032: 0x986B, + 49259 - 44032: 0x986C, + 49260 - 44032: 0x986D, + 49261 - 44032: 0x986E, + 49262 - 44032: 0x986F, + 49263 - 44032: 0x9870, + 49264 - 44032: 0x9871, + 49265 - 44032: 0x9872, + 49266 - 44032: 0x9873, + 49267 - 44032: 0x9874, + 49268 - 44032: 0x9875, + 49269 - 44032: 0x9876, + 49270 - 44032: 0x9877, + 49271 - 44032: 0x9878, + 49272 - 44032: 0x9879, + 49273 - 44032: 0x987A, + 49274 - 44032: 0x9881, + 49275 - 44032: 0x9882, + 49276 - 44032: 0x9883, + 49277 - 44032: 0x9884, + 49278 - 44032: 0x9885, + 49279 - 44032: 0x9886, + 49280 - 44032: 0x9887, + 49281 - 44032: 0x9888, + 49282 - 44032: 0x9889, + 49283 - 44032: 0x988A, + 49284 - 44032: 0x988B, + 49285 - 44032: 0x988C, + 49286 - 44032: 0x988D, + 49287 - 44032: 0x988E, + 49288 - 44032: 0x988F, + 49289 - 44032: 0x9890, + 49290 - 44032: 0x9891, + 49291 - 44032: 0x9892, + 49292 - 44032: 0x9893, + 49293 - 44032: 0x9894, + 49294 - 44032: 0x9895, + 49295 - 44032: 0x9896, + 49296 - 44032: 0xBBDF, + 49297 - 44032: 0xBBE0, + 49298 - 44032: 0x9897, + 49299 - 44032: 0x9898, + 49300 - 44032: 0xBBE1, + 49301 - 44032: 0x9899, + 49302 - 44032: 0x989A, + 49303 - 44032: 0x989B, + 49304 - 44032: 0xBBE2, + 49305 - 44032: 0x989C, + 49306 - 44032: 0x989D, + 49307 - 44032: 0x989E, + 49308 - 44032: 0x989F, + 49309 - 44032: 0x98A0, + 49310 - 44032: 0x98A1, + 49311 - 44032: 0x98A2, + 49312 - 44032: 0xBBE3, + 49313 - 44032: 0xBBE4, + 49314 - 44032: 0x98A3, + 49315 - 44032: 0xBBE5, + 49316 - 44032: 0x98A4, + 49317 - 44032: 0xBBE6, + 49318 - 44032: 0x98A5, + 49319 - 44032: 0x98A6, + 49320 - 44032: 0x98A7, + 49321 - 44032: 0x98A8, + 49322 - 44032: 0x98A9, + 49323 - 44032: 0x98AA, + 49324 - 44032: 0xBBE7, + 49325 - 44032: 0xBBE8, + 49326 - 44032: 0x98AB, + 49327 - 44032: 0xBBE9, + 49328 - 44032: 0xBBEA, + 49329 - 44032: 0x98AC, + 49330 - 44032: 0x98AD, + 49331 - 44032: 0xBBEB, + 49332 - 44032: 0xBBEC, + 49333 - 44032: 0xBBED, + 49334 - 44032: 0xBBEE, + 49335 - 44032: 0x98AE, + 49336 - 44032: 0x98AF, + 49337 - 44032: 0x98B0, + 49338 - 44032: 0x98B1, + 49339 - 44032: 0x98B2, + 49340 - 44032: 0xBBEF, + 49341 - 44032: 0xBBF0, + 49342 - 44032: 0x98B3, + 49343 - 44032: 0xBBF1, + 49344 - 44032: 0xBBF2, + 49345 - 44032: 0xBBF3, + 49346 - 44032: 0x98B4, + 49347 - 44032: 0x98B5, + 49348 - 44032: 0x98B6, + 49349 - 44032: 0xBBF4, + 49350 - 44032: 0x98B7, + 49351 - 44032: 0x98B8, + 49352 - 44032: 0xBBF5, + 49353 - 44032: 0xBBF6, + 49354 - 44032: 0x98B9, + 49355 - 44032: 0x98BA, + 49356 - 44032: 0xBBF7, + 49357 - 44032: 0x98BB, + 49358 - 44032: 0x98BC, + 49359 - 44032: 0x98BD, + 49360 - 44032: 0xBBF8, + 49361 - 44032: 0x98BE, + 49362 - 44032: 0x98BF, + 49363 - 44032: 0x98C0, + 49364 - 44032: 0x98C1, + 49365 - 44032: 0x98C2, + 49366 - 44032: 0x98C3, + 49367 - 44032: 0x98C4, + 49368 - 44032: 0xBBF9, + 49369 - 44032: 0xBBFA, + 49370 - 44032: 0x98C5, + 49371 - 44032: 0xBBFB, + 49372 - 44032: 0xBBFC, + 49373 - 44032: 0xBBFD, + 49374 - 44032: 0x98C6, + 49375 - 44032: 0x98C7, + 49376 - 44032: 0x98C8, + 49377 - 44032: 0x98C9, + 49378 - 44032: 0x98CA, + 49379 - 44032: 0x98CB, + 49380 - 44032: 0xBBFE, + 49381 - 44032: 0xBCA1, + 49382 - 44032: 0x98CC, + 49383 - 44032: 0x98CD, + 49384 - 44032: 0xBCA2, + 49385 - 44032: 0x98CE, + 49386 - 44032: 0x98CF, + 49387 - 44032: 0x98D0, + 49388 - 44032: 0xBCA3, + 49389 - 44032: 0x98D1, + 49390 - 44032: 0x98D2, + 49391 - 44032: 0x98D3, + 49392 - 44032: 0x98D4, + 49393 - 44032: 0x98D5, + 49394 - 44032: 0x98D6, + 49395 - 44032: 0x98D7, + 49396 - 44032: 0xBCA4, + 49397 - 44032: 0xBCA5, + 49398 - 44032: 0x98D8, + 49399 - 44032: 0xBCA6, + 49400 - 44032: 0x98D9, + 49401 - 44032: 0xBCA7, + 49402 - 44032: 0x98DA, + 49403 - 44032: 0x98DB, + 49404 - 44032: 0x98DC, + 49405 - 44032: 0x98DD, + 49406 - 44032: 0x98DE, + 49407 - 44032: 0x98DF, + 49408 - 44032: 0xBCA8, + 49409 - 44032: 0x98E0, + 49410 - 44032: 0x98E1, + 49411 - 44032: 0x98E2, + 49412 - 44032: 0xBCA9, + 49413 - 44032: 0x98E3, + 49414 - 44032: 0x98E4, + 49415 - 44032: 0x98E5, + 49416 - 44032: 0xBCAA, + 49417 - 44032: 0x98E6, + 49418 - 44032: 0x98E7, + 49419 - 44032: 0x98E8, + 49420 - 44032: 0x98E9, + 49421 - 44032: 0x98EA, + 49422 - 44032: 0x98EB, + 49423 - 44032: 0x98EC, + 49424 - 44032: 0xBCAB, + 49425 - 44032: 0x98ED, + 49426 - 44032: 0x98EE, + 49427 - 44032: 0x98EF, + 49428 - 44032: 0x98F0, + 49429 - 44032: 0xBCAC, + 49430 - 44032: 0x98F1, + 49431 - 44032: 0x98F2, + 49432 - 44032: 0x98F3, + 49433 - 44032: 0x98F4, + 49434 - 44032: 0x98F5, + 49435 - 44032: 0x98F6, + 49436 - 44032: 0xBCAD, + 49437 - 44032: 0xBCAE, + 49438 - 44032: 0xBCAF, + 49439 - 44032: 0xBCB0, + 49440 - 44032: 0xBCB1, + 49441 - 44032: 0x98F7, + 49442 - 44032: 0x98F8, + 49443 - 44032: 0xBCB2, + 49444 - 44032: 0xBCB3, + 49445 - 44032: 0x98F9, + 49446 - 44032: 0xBCB4, + 49447 - 44032: 0xBCB5, + 49448 - 44032: 0x98FA, + 49449 - 44032: 0x98FB, + 49450 - 44032: 0x98FC, + 49451 - 44032: 0x98FD, + 49452 - 44032: 0xBCB6, + 49453 - 44032: 0xBCB7, + 49454 - 44032: 0x98FE, + 49455 - 44032: 0xBCB8, + 49456 - 44032: 0xBCB9, + 49457 - 44032: 0xBCBA, + 49458 - 44032: 0x9941, + 49459 - 44032: 0x9942, + 49460 - 44032: 0x9943, + 49461 - 44032: 0x9944, + 49462 - 44032: 0xBCBB, + 49463 - 44032: 0x9945, + 49464 - 44032: 0xBCBC, + 49465 - 44032: 0xBCBD, + 49466 - 44032: 0x9946, + 49467 - 44032: 0x9947, + 49468 - 44032: 0xBCBE, + 49469 - 44032: 0x9948, + 49470 - 44032: 0x9949, + 49471 - 44032: 0x994A, + 49472 - 44032: 0xBCBF, + 49473 - 44032: 0x994B, + 49474 - 44032: 0x994C, + 49475 - 44032: 0x994D, + 49476 - 44032: 0x994E, + 49477 - 44032: 0x994F, + 49478 - 44032: 0x9950, + 49479 - 44032: 0x9951, + 49480 - 44032: 0xBCC0, + 49481 - 44032: 0xBCC1, + 49482 - 44032: 0x9952, + 49483 - 44032: 0xBCC2, + 49484 - 44032: 0xBCC3, + 49485 - 44032: 0xBCC4, + 49486 - 44032: 0x9953, + 49487 - 44032: 0x9954, + 49488 - 44032: 0x9955, + 49489 - 44032: 0x9956, + 49490 - 44032: 0x9957, + 49491 - 44032: 0x9958, + 49492 - 44032: 0xBCC5, + 49493 - 44032: 0xBCC6, + 49494 - 44032: 0x9959, + 49495 - 44032: 0x995A, + 49496 - 44032: 0xBCC7, + 49497 - 44032: 0x9961, + 49498 - 44032: 0x9962, + 49499 - 44032: 0x9963, + 49500 - 44032: 0xBCC8, + 49501 - 44032: 0x9964, + 49502 - 44032: 0x9965, + 49503 - 44032: 0x9966, + 49504 - 44032: 0x9967, + 49505 - 44032: 0x9968, + 49506 - 44032: 0x9969, + 49507 - 44032: 0x996A, + 49508 - 44032: 0xBCC9, + 49509 - 44032: 0xBCCA, + 49510 - 44032: 0x996B, + 49511 - 44032: 0xBCCB, + 49512 - 44032: 0xBCCC, + 49513 - 44032: 0xBCCD, + 49514 - 44032: 0x996C, + 49515 - 44032: 0x996D, + 49516 - 44032: 0x996E, + 49517 - 44032: 0x996F, + 49518 - 44032: 0x9970, + 49519 - 44032: 0x9971, + 49520 - 44032: 0xBCCE, + 49521 - 44032: 0x9972, + 49522 - 44032: 0x9973, + 49523 - 44032: 0x9974, + 49524 - 44032: 0xBCCF, + 49525 - 44032: 0x9975, + 49526 - 44032: 0x9976, + 49527 - 44032: 0x9977, + 49528 - 44032: 0xBCD0, + 49529 - 44032: 0x9978, + 49530 - 44032: 0x9979, + 49531 - 44032: 0x997A, + 49532 - 44032: 0x9981, + 49533 - 44032: 0x9982, + 49534 - 44032: 0x9983, + 49535 - 44032: 0x9984, + 49536 - 44032: 0x9985, + 49537 - 44032: 0x9986, + 49538 - 44032: 0x9987, + 49539 - 44032: 0x9988, + 49540 - 44032: 0x9989, + 49541 - 44032: 0xBCD1, + 49542 - 44032: 0x998A, + 49543 - 44032: 0x998B, + 49544 - 44032: 0x998C, + 49545 - 44032: 0x998D, + 49546 - 44032: 0x998E, + 49547 - 44032: 0x998F, + 49548 - 44032: 0xBCD2, + 49549 - 44032: 0xBCD3, + 49550 - 44032: 0xBCD4, + 49551 - 44032: 0x9990, + 49552 - 44032: 0xBCD5, + 49553 - 44032: 0x9991, + 49554 - 44032: 0x9992, + 49555 - 44032: 0x9993, + 49556 - 44032: 0xBCD6, + 49557 - 44032: 0x9994, + 49558 - 44032: 0xBCD7, + 49559 - 44032: 0x9995, + 49560 - 44032: 0x9996, + 49561 - 44032: 0x9997, + 49562 - 44032: 0x9998, + 49563 - 44032: 0x9999, + 49564 - 44032: 0xBCD8, + 49565 - 44032: 0xBCD9, + 49566 - 44032: 0x999A, + 49567 - 44032: 0xBCDA, + 49568 - 44032: 0x999B, + 49569 - 44032: 0xBCDB, + 49570 - 44032: 0x999C, + 49571 - 44032: 0x999D, + 49572 - 44032: 0x999E, + 49573 - 44032: 0xBCDC, + 49574 - 44032: 0x999F, + 49575 - 44032: 0x99A0, + 49576 - 44032: 0xBCDD, + 49577 - 44032: 0xBCDE, + 49578 - 44032: 0x99A1, + 49579 - 44032: 0x99A2, + 49580 - 44032: 0xBCDF, + 49581 - 44032: 0x99A3, + 49582 - 44032: 0x99A4, + 49583 - 44032: 0x99A5, + 49584 - 44032: 0xBCE0, + 49585 - 44032: 0x99A6, + 49586 - 44032: 0x99A7, + 49587 - 44032: 0x99A8, + 49588 - 44032: 0x99A9, + 49589 - 44032: 0x99AA, + 49590 - 44032: 0x99AB, + 49591 - 44032: 0x99AC, + 49592 - 44032: 0x99AD, + 49593 - 44032: 0x99AE, + 49594 - 44032: 0x99AF, + 49595 - 44032: 0x99B0, + 49596 - 44032: 0x99B1, + 49597 - 44032: 0xBCE1, + 49598 - 44032: 0x99B2, + 49599 - 44032: 0x99B3, + 49600 - 44032: 0x99B4, + 49601 - 44032: 0x99B5, + 49602 - 44032: 0x99B6, + 49603 - 44032: 0x99B7, + 49604 - 44032: 0xBCE2, + 49605 - 44032: 0x99B8, + 49606 - 44032: 0x99B9, + 49607 - 44032: 0x99BA, + 49608 - 44032: 0xBCE3, + 49609 - 44032: 0x99BB, + 49610 - 44032: 0x99BC, + 49611 - 44032: 0x99BD, + 49612 - 44032: 0xBCE4, + 49613 - 44032: 0x99BE, + 49614 - 44032: 0x99BF, + 49615 - 44032: 0x99C0, + 49616 - 44032: 0x99C1, + 49617 - 44032: 0x99C2, + 49618 - 44032: 0x99C3, + 49619 - 44032: 0x99C4, + 49620 - 44032: 0xBCE5, + 49621 - 44032: 0x99C5, + 49622 - 44032: 0x99C6, + 49623 - 44032: 0xBCE6, + 49624 - 44032: 0xBCE7, + 49625 - 44032: 0x99C7, + 49626 - 44032: 0x99C8, + 49627 - 44032: 0x99C9, + 49628 - 44032: 0x99CA, + 49629 - 44032: 0x99CB, + 49630 - 44032: 0x99CC, + 49631 - 44032: 0x99CD, + 49632 - 44032: 0xBCE8, + 49633 - 44032: 0x99CE, + 49634 - 44032: 0x99CF, + 49635 - 44032: 0x99D0, + 49636 - 44032: 0xBCE9, + 49637 - 44032: 0x99D1, + 49638 - 44032: 0x99D2, + 49639 - 44032: 0x99D3, + 49640 - 44032: 0xBCEA, + 49641 - 44032: 0x99D4, + 49642 - 44032: 0x99D5, + 49643 - 44032: 0x99D6, + 49644 - 44032: 0x99D7, + 49645 - 44032: 0x99D8, + 49646 - 44032: 0x99D9, + 49647 - 44032: 0x99DA, + 49648 - 44032: 0xBCEB, + 49649 - 44032: 0xBCEC, + 49650 - 44032: 0x99DB, + 49651 - 44032: 0xBCED, + 49652 - 44032: 0x99DC, + 49653 - 44032: 0x99DD, + 49654 - 44032: 0x99DE, + 49655 - 44032: 0x99DF, + 49656 - 44032: 0x99E0, + 49657 - 44032: 0x99E1, + 49658 - 44032: 0x99E2, + 49659 - 44032: 0x99E3, + 49660 - 44032: 0xBCEE, + 49661 - 44032: 0xBCEF, + 49662 - 44032: 0x99E4, + 49663 - 44032: 0x99E5, + 49664 - 44032: 0xBCF0, + 49665 - 44032: 0x99E6, + 49666 - 44032: 0x99E7, + 49667 - 44032: 0x99E8, + 49668 - 44032: 0xBCF1, + 49669 - 44032: 0x99E9, + 49670 - 44032: 0x99EA, + 49671 - 44032: 0x99EB, + 49672 - 44032: 0x99EC, + 49673 - 44032: 0x99ED, + 49674 - 44032: 0x99EE, + 49675 - 44032: 0x99EF, + 49676 - 44032: 0xBCF2, + 49677 - 44032: 0xBCF3, + 49678 - 44032: 0x99F0, + 49679 - 44032: 0xBCF4, + 49680 - 44032: 0x99F1, + 49681 - 44032: 0xBCF5, + 49682 - 44032: 0x99F2, + 49683 - 44032: 0x99F3, + 49684 - 44032: 0x99F4, + 49685 - 44032: 0x99F5, + 49686 - 44032: 0x99F6, + 49687 - 44032: 0x99F7, + 49688 - 44032: 0xBCF6, + 49689 - 44032: 0xBCF7, + 49690 - 44032: 0x99F8, + 49691 - 44032: 0x99F9, + 49692 - 44032: 0xBCF8, + 49693 - 44032: 0x99FA, + 49694 - 44032: 0x99FB, + 49695 - 44032: 0xBCF9, + 49696 - 44032: 0xBCFA, + 49697 - 44032: 0x99FC, + 49698 - 44032: 0x99FD, + 49699 - 44032: 0x99FE, + 49700 - 44032: 0x9A41, + 49701 - 44032: 0x9A42, + 49702 - 44032: 0x9A43, + 49703 - 44032: 0x9A44, + 49704 - 44032: 0xBCFB, + 49705 - 44032: 0xBCFC, + 49706 - 44032: 0x9A45, + 49707 - 44032: 0xBCFD, + 49708 - 44032: 0x9A46, + 49709 - 44032: 0xBCFE, + 49710 - 44032: 0x9A47, + 49711 - 44032: 0xBDA1, + 49712 - 44032: 0x9A48, + 49713 - 44032: 0xBDA2, + 49714 - 44032: 0xBDA3, + 49715 - 44032: 0x9A49, + 49716 - 44032: 0xBDA4, + 49717 - 44032: 0x9A4A, + 49718 - 44032: 0x9A4B, + 49719 - 44032: 0x9A4C, + 49720 - 44032: 0x9A4D, + 49721 - 44032: 0x9A4E, + 49722 - 44032: 0x9A4F, + 49723 - 44032: 0x9A50, + 49724 - 44032: 0x9A51, + 49725 - 44032: 0x9A52, + 49726 - 44032: 0x9A53, + 49727 - 44032: 0x9A54, + 49728 - 44032: 0x9A55, + 49729 - 44032: 0x9A56, + 49730 - 44032: 0x9A57, + 49731 - 44032: 0x9A58, + 49732 - 44032: 0x9A59, + 49733 - 44032: 0x9A5A, + 49734 - 44032: 0x9A61, + 49735 - 44032: 0x9A62, + 49736 - 44032: 0xBDA5, + 49737 - 44032: 0x9A63, + 49738 - 44032: 0x9A64, + 49739 - 44032: 0x9A65, + 49740 - 44032: 0x9A66, + 49741 - 44032: 0x9A67, + 49742 - 44032: 0x9A68, + 49743 - 44032: 0x9A69, + 49744 - 44032: 0xBDA6, + 49745 - 44032: 0xBDA7, + 49746 - 44032: 0x9A6A, + 49747 - 44032: 0x9A6B, + 49748 - 44032: 0xBDA8, + 49749 - 44032: 0x9A6C, + 49750 - 44032: 0x9A6D, + 49751 - 44032: 0x9A6E, + 49752 - 44032: 0xBDA9, + 49753 - 44032: 0x9A6F, + 49754 - 44032: 0x9A70, + 49755 - 44032: 0x9A71, + 49756 - 44032: 0x9A72, + 49757 - 44032: 0x9A73, + 49758 - 44032: 0x9A74, + 49759 - 44032: 0x9A75, + 49760 - 44032: 0xBDAA, + 49761 - 44032: 0x9A76, + 49762 - 44032: 0x9A77, + 49763 - 44032: 0x9A78, + 49764 - 44032: 0x9A79, + 49765 - 44032: 0xBDAB, + 49766 - 44032: 0x9A7A, + 49767 - 44032: 0x9A81, + 49768 - 44032: 0x9A82, + 49769 - 44032: 0x9A83, + 49770 - 44032: 0x9A84, + 49771 - 44032: 0x9A85, + 49772 - 44032: 0xBDAC, + 49773 - 44032: 0xBDAD, + 49774 - 44032: 0x9A86, + 49775 - 44032: 0x9A87, + 49776 - 44032: 0xBDAE, + 49777 - 44032: 0x9A88, + 49778 - 44032: 0x9A89, + 49779 - 44032: 0x9A8A, + 49780 - 44032: 0xBDAF, + 49781 - 44032: 0x9A8B, + 49782 - 44032: 0x9A8C, + 49783 - 44032: 0x9A8D, + 49784 - 44032: 0x9A8E, + 49785 - 44032: 0x9A8F, + 49786 - 44032: 0x9A90, + 49787 - 44032: 0x9A91, + 49788 - 44032: 0xBDB0, + 49789 - 44032: 0xBDB1, + 49790 - 44032: 0x9A92, + 49791 - 44032: 0xBDB2, + 49792 - 44032: 0x9A93, + 49793 - 44032: 0xBDB3, + 49794 - 44032: 0x9A94, + 49795 - 44032: 0x9A95, + 49796 - 44032: 0x9A96, + 49797 - 44032: 0x9A97, + 49798 - 44032: 0x9A98, + 49799 - 44032: 0x9A99, + 49800 - 44032: 0xBDB4, + 49801 - 44032: 0xBDB5, + 49802 - 44032: 0x9A9A, + 49803 - 44032: 0x9A9B, + 49804 - 44032: 0x9A9C, + 49805 - 44032: 0x9A9D, + 49806 - 44032: 0x9A9E, + 49807 - 44032: 0x9A9F, + 49808 - 44032: 0xBDB6, + 49809 - 44032: 0x9AA0, + 49810 - 44032: 0x9AA1, + 49811 - 44032: 0x9AA2, + 49812 - 44032: 0x9AA3, + 49813 - 44032: 0x9AA4, + 49814 - 44032: 0x9AA5, + 49815 - 44032: 0x9AA6, + 49816 - 44032: 0xBDB7, + 49817 - 44032: 0x9AA7, + 49818 - 44032: 0x9AA8, + 49819 - 44032: 0xBDB8, + 49820 - 44032: 0x9AA9, + 49821 - 44032: 0xBDB9, + 49822 - 44032: 0x9AAA, + 49823 - 44032: 0x9AAB, + 49824 - 44032: 0x9AAC, + 49825 - 44032: 0x9AAD, + 49826 - 44032: 0x9AAE, + 49827 - 44032: 0x9AAF, + 49828 - 44032: 0xBDBA, + 49829 - 44032: 0xBDBB, + 49830 - 44032: 0x9AB0, + 49831 - 44032: 0x9AB1, + 49832 - 44032: 0xBDBC, + 49833 - 44032: 0x9AB2, + 49834 - 44032: 0x9AB3, + 49835 - 44032: 0x9AB4, + 49836 - 44032: 0xBDBD, + 49837 - 44032: 0xBDBE, + 49838 - 44032: 0x9AB5, + 49839 - 44032: 0x9AB6, + 49840 - 44032: 0x9AB7, + 49841 - 44032: 0x9AB8, + 49842 - 44032: 0x9AB9, + 49843 - 44032: 0x9ABA, + 49844 - 44032: 0xBDBF, + 49845 - 44032: 0xBDC0, + 49846 - 44032: 0x9ABB, + 49847 - 44032: 0xBDC1, + 49848 - 44032: 0x9ABC, + 49849 - 44032: 0xBDC2, + 49850 - 44032: 0x9ABD, + 49851 - 44032: 0x9ABE, + 49852 - 44032: 0x9ABF, + 49853 - 44032: 0x9AC0, + 49854 - 44032: 0x9AC1, + 49855 - 44032: 0x9AC2, + 49856 - 44032: 0x9AC3, + 49857 - 44032: 0x9AC4, + 49858 - 44032: 0x9AC5, + 49859 - 44032: 0x9AC6, + 49860 - 44032: 0x9AC7, + 49861 - 44032: 0x9AC8, + 49862 - 44032: 0x9AC9, + 49863 - 44032: 0x9ACA, + 49864 - 44032: 0x9ACB, + 49865 - 44032: 0x9ACC, + 49866 - 44032: 0x9ACD, + 49867 - 44032: 0x9ACE, + 49868 - 44032: 0x9ACF, + 49869 - 44032: 0x9AD0, + 49870 - 44032: 0x9AD1, + 49871 - 44032: 0x9AD2, + 49872 - 44032: 0x9AD3, + 49873 - 44032: 0x9AD4, + 49874 - 44032: 0x9AD5, + 49875 - 44032: 0x9AD6, + 49876 - 44032: 0x9AD7, + 49877 - 44032: 0x9AD8, + 49878 - 44032: 0x9AD9, + 49879 - 44032: 0x9ADA, + 49880 - 44032: 0x9ADB, + 49881 - 44032: 0x9ADC, + 49882 - 44032: 0x9ADD, + 49883 - 44032: 0x9ADE, + 49884 - 44032: 0xBDC3, + 49885 - 44032: 0xBDC4, + 49886 - 44032: 0x9ADF, + 49887 - 44032: 0x9AE0, + 49888 - 44032: 0xBDC5, + 49889 - 44032: 0x9AE1, + 49890 - 44032: 0x9AE2, + 49891 - 44032: 0xBDC6, + 49892 - 44032: 0xBDC7, + 49893 - 44032: 0x9AE3, + 49894 - 44032: 0x9AE4, + 49895 - 44032: 0x9AE5, + 49896 - 44032: 0x9AE6, + 49897 - 44032: 0x9AE7, + 49898 - 44032: 0x9AE8, + 49899 - 44032: 0xBDC8, + 49900 - 44032: 0xBDC9, + 49901 - 44032: 0xBDCA, + 49902 - 44032: 0x9AE9, + 49903 - 44032: 0xBDCB, + 49904 - 44032: 0x9AEA, + 49905 - 44032: 0xBDCC, + 49906 - 44032: 0x9AEB, + 49907 - 44032: 0x9AEC, + 49908 - 44032: 0x9AED, + 49909 - 44032: 0x9AEE, + 49910 - 44032: 0xBDCD, + 49911 - 44032: 0x9AEF, + 49912 - 44032: 0xBDCE, + 49913 - 44032: 0xBDCF, + 49914 - 44032: 0x9AF0, + 49915 - 44032: 0xBDD0, + 49916 - 44032: 0xBDD1, + 49917 - 44032: 0x9AF1, + 49918 - 44032: 0x9AF2, + 49919 - 44032: 0x9AF3, + 49920 - 44032: 0xBDD2, + 49921 - 44032: 0x9AF4, + 49922 - 44032: 0x9AF5, + 49923 - 44032: 0x9AF6, + 49924 - 44032: 0x9AF7, + 49925 - 44032: 0x9AF8, + 49926 - 44032: 0x9AF9, + 49927 - 44032: 0x9AFA, + 49928 - 44032: 0xBDD3, + 49929 - 44032: 0xBDD4, + 49930 - 44032: 0x9AFB, + 49931 - 44032: 0x9AFC, + 49932 - 44032: 0xBDD5, + 49933 - 44032: 0xBDD6, + 49934 - 44032: 0x9AFD, + 49935 - 44032: 0x9AFE, + 49936 - 44032: 0x9B41, + 49937 - 44032: 0x9B42, + 49938 - 44032: 0x9B43, + 49939 - 44032: 0xBDD7, + 49940 - 44032: 0xBDD8, + 49941 - 44032: 0xBDD9, + 49942 - 44032: 0x9B44, + 49943 - 44032: 0x9B45, + 49944 - 44032: 0xBDDA, + 49945 - 44032: 0x9B46, + 49946 - 44032: 0x9B47, + 49947 - 44032: 0x9B48, + 49948 - 44032: 0xBDDB, + 49949 - 44032: 0x9B49, + 49950 - 44032: 0x9B4A, + 49951 - 44032: 0x9B4B, + 49952 - 44032: 0x9B4C, + 49953 - 44032: 0x9B4D, + 49954 - 44032: 0x9B4E, + 49955 - 44032: 0x9B4F, + 49956 - 44032: 0xBDDC, + 49957 - 44032: 0xBDDD, + 49958 - 44032: 0x9B50, + 49959 - 44032: 0x9B51, + 49960 - 44032: 0xBDDE, + 49961 - 44032: 0xBDDF, + 49962 - 44032: 0x9B52, + 49963 - 44032: 0x9B53, + 49964 - 44032: 0x9B54, + 49965 - 44032: 0x9B55, + 49966 - 44032: 0x9B56, + 49967 - 44032: 0x9B57, + 49968 - 44032: 0x9B58, + 49969 - 44032: 0x9B59, + 49970 - 44032: 0x9B5A, + 49971 - 44032: 0x9B61, + 49972 - 44032: 0x9B62, + 49973 - 44032: 0x9B63, + 49974 - 44032: 0x9B64, + 49975 - 44032: 0x9B65, + 49976 - 44032: 0x9B66, + 49977 - 44032: 0x9B67, + 49978 - 44032: 0x9B68, + 49979 - 44032: 0x9B69, + 49980 - 44032: 0x9B6A, + 49981 - 44032: 0x9B6B, + 49982 - 44032: 0x9B6C, + 49983 - 44032: 0x9B6D, + 49984 - 44032: 0x9B6E, + 49985 - 44032: 0x9B6F, + 49986 - 44032: 0x9B70, + 49987 - 44032: 0x9B71, + 49988 - 44032: 0x9B72, + 49989 - 44032: 0xBDE0, + 49990 - 44032: 0x9B73, + 49991 - 44032: 0x9B74, + 49992 - 44032: 0x9B75, + 49993 - 44032: 0x9B76, + 49994 - 44032: 0x9B77, + 49995 - 44032: 0x9B78, + 49996 - 44032: 0x9B79, + 49997 - 44032: 0x9B7A, + 49998 - 44032: 0x9B81, + 49999 - 44032: 0x9B82, + 50000 - 44032: 0x9B83, + 50001 - 44032: 0x9B84, + 50002 - 44032: 0x9B85, + 50003 - 44032: 0x9B86, + 50004 - 44032: 0x9B87, + 50005 - 44032: 0x9B88, + 50006 - 44032: 0x9B89, + 50007 - 44032: 0x9B8A, + 50008 - 44032: 0x9B8B, + 50009 - 44032: 0x9B8C, + 50010 - 44032: 0x9B8D, + 50011 - 44032: 0x9B8E, + 50012 - 44032: 0x9B8F, + 50013 - 44032: 0x9B90, + 50014 - 44032: 0x9B91, + 50015 - 44032: 0x9B92, + 50016 - 44032: 0x9B93, + 50017 - 44032: 0x9B94, + 50018 - 44032: 0x9B95, + 50019 - 44032: 0x9B96, + 50020 - 44032: 0x9B97, + 50021 - 44032: 0x9B98, + 50022 - 44032: 0x9B99, + 50023 - 44032: 0x9B9A, + 50024 - 44032: 0xBDE1, + 50025 - 44032: 0xBDE2, + 50026 - 44032: 0x9B9B, + 50027 - 44032: 0x9B9C, + 50028 - 44032: 0xBDE3, + 50029 - 44032: 0x9B9D, + 50030 - 44032: 0x9B9E, + 50031 - 44032: 0x9B9F, + 50032 - 44032: 0xBDE4, + 50033 - 44032: 0x9BA0, + 50034 - 44032: 0xBDE5, + 50035 - 44032: 0x9BA1, + 50036 - 44032: 0x9BA2, + 50037 - 44032: 0x9BA3, + 50038 - 44032: 0x9BA4, + 50039 - 44032: 0x9BA5, + 50040 - 44032: 0xBDE6, + 50041 - 44032: 0xBDE7, + 50042 - 44032: 0x9BA6, + 50043 - 44032: 0x9BA7, + 50044 - 44032: 0xBDE8, + 50045 - 44032: 0xBDE9, + 50046 - 44032: 0x9BA8, + 50047 - 44032: 0x9BA9, + 50048 - 44032: 0x9BAA, + 50049 - 44032: 0x9BAB, + 50050 - 44032: 0x9BAC, + 50051 - 44032: 0x9BAD, + 50052 - 44032: 0xBDEA, + 50053 - 44032: 0x9BAE, + 50054 - 44032: 0x9BAF, + 50055 - 44032: 0x9BB0, + 50056 - 44032: 0xBDEB, + 50057 - 44032: 0x9BB1, + 50058 - 44032: 0x9BB2, + 50059 - 44032: 0x9BB3, + 50060 - 44032: 0xBDEC, + 50061 - 44032: 0x9BB4, + 50062 - 44032: 0x9BB5, + 50063 - 44032: 0x9BB6, + 50064 - 44032: 0x9BB7, + 50065 - 44032: 0x9BB8, + 50066 - 44032: 0x9BB9, + 50067 - 44032: 0x9BBA, + 50068 - 44032: 0x9BBB, + 50069 - 44032: 0x9BBC, + 50070 - 44032: 0x9BBD, + 50071 - 44032: 0x9BBE, + 50072 - 44032: 0x9BBF, + 50073 - 44032: 0x9BC0, + 50074 - 44032: 0x9BC1, + 50075 - 44032: 0x9BC2, + 50076 - 44032: 0x9BC3, + 50077 - 44032: 0x9BC4, + 50078 - 44032: 0x9BC5, + 50079 - 44032: 0x9BC6, + 50080 - 44032: 0x9BC7, + 50081 - 44032: 0x9BC8, + 50082 - 44032: 0x9BC9, + 50083 - 44032: 0x9BCA, + 50084 - 44032: 0x9BCB, + 50085 - 44032: 0x9BCC, + 50086 - 44032: 0x9BCD, + 50087 - 44032: 0x9BCE, + 50088 - 44032: 0x9BCF, + 50089 - 44032: 0x9BD0, + 50090 - 44032: 0x9BD1, + 50091 - 44032: 0x9BD2, + 50092 - 44032: 0x9BD3, + 50093 - 44032: 0x9BD4, + 50094 - 44032: 0x9BD5, + 50095 - 44032: 0x9BD6, + 50096 - 44032: 0x9BD7, + 50097 - 44032: 0x9BD8, + 50098 - 44032: 0x9BD9, + 50099 - 44032: 0x9BDA, + 50100 - 44032: 0x9BDB, + 50101 - 44032: 0x9BDC, + 50102 - 44032: 0x9BDD, + 50103 - 44032: 0x9BDE, + 50104 - 44032: 0x9BDF, + 50105 - 44032: 0x9BE0, + 50106 - 44032: 0x9BE1, + 50107 - 44032: 0x9BE2, + 50108 - 44032: 0x9BE3, + 50109 - 44032: 0x9BE4, + 50110 - 44032: 0x9BE5, + 50111 - 44032: 0x9BE6, + 50112 - 44032: 0xBDED, + 50113 - 44032: 0x9BE7, + 50114 - 44032: 0x9BE8, + 50115 - 44032: 0x9BE9, + 50116 - 44032: 0x9BEA, + 50117 - 44032: 0x9BEB, + 50118 - 44032: 0x9BEC, + 50119 - 44032: 0x9BED, + 50120 - 44032: 0x9BEE, + 50121 - 44032: 0x9BEF, + 50122 - 44032: 0x9BF0, + 50123 - 44032: 0x9BF1, + 50124 - 44032: 0x9BF2, + 50125 - 44032: 0x9BF3, + 50126 - 44032: 0x9BF4, + 50127 - 44032: 0x9BF5, + 50128 - 44032: 0x9BF6, + 50129 - 44032: 0x9BF7, + 50130 - 44032: 0x9BF8, + 50131 - 44032: 0x9BF9, + 50132 - 44032: 0x9BFA, + 50133 - 44032: 0x9BFB, + 50134 - 44032: 0x9BFC, + 50135 - 44032: 0x9BFD, + 50136 - 44032: 0xBDEE, + 50137 - 44032: 0xBDEF, + 50138 - 44032: 0x9BFE, + 50139 - 44032: 0x9C41, + 50140 - 44032: 0xBDF0, + 50141 - 44032: 0x9C42, + 50142 - 44032: 0x9C43, + 50143 - 44032: 0xBDF1, + 50144 - 44032: 0xBDF2, + 50145 - 44032: 0x9C44, + 50146 - 44032: 0xBDF3, + 50147 - 44032: 0x9C45, + 50148 - 44032: 0x9C46, + 50149 - 44032: 0x9C47, + 50150 - 44032: 0x9C48, + 50151 - 44032: 0x9C49, + 50152 - 44032: 0xBDF4, + 50153 - 44032: 0xBDF5, + 50154 - 44032: 0x9C4A, + 50155 - 44032: 0x9C4B, + 50156 - 44032: 0x9C4C, + 50157 - 44032: 0xBDF6, + 50158 - 44032: 0x9C4D, + 50159 - 44032: 0x9C4E, + 50160 - 44032: 0x9C4F, + 50161 - 44032: 0x9C50, + 50162 - 44032: 0x9C51, + 50163 - 44032: 0x9C52, + 50164 - 44032: 0xBDF7, + 50165 - 44032: 0xBDF8, + 50166 - 44032: 0x9C53, + 50167 - 44032: 0x9C54, + 50168 - 44032: 0xBDF9, + 50169 - 44032: 0x9C55, + 50170 - 44032: 0x9C56, + 50171 - 44032: 0x9C57, + 50172 - 44032: 0x9C58, + 50173 - 44032: 0x9C59, + 50174 - 44032: 0x9C5A, + 50175 - 44032: 0x9C61, + 50176 - 44032: 0x9C62, + 50177 - 44032: 0x9C63, + 50178 - 44032: 0x9C64, + 50179 - 44032: 0x9C65, + 50180 - 44032: 0x9C66, + 50181 - 44032: 0x9C67, + 50182 - 44032: 0x9C68, + 50183 - 44032: 0x9C69, + 50184 - 44032: 0xBDFA, + 50185 - 44032: 0x9C6A, + 50186 - 44032: 0x9C6B, + 50187 - 44032: 0x9C6C, + 50188 - 44032: 0x9C6D, + 50189 - 44032: 0x9C6E, + 50190 - 44032: 0x9C6F, + 50191 - 44032: 0x9C70, + 50192 - 44032: 0xBDFB, + 50193 - 44032: 0x9C71, + 50194 - 44032: 0x9C72, + 50195 - 44032: 0x9C73, + 50196 - 44032: 0x9C74, + 50197 - 44032: 0x9C75, + 50198 - 44032: 0x9C76, + 50199 - 44032: 0x9C77, + 50200 - 44032: 0x9C78, + 50201 - 44032: 0x9C79, + 50202 - 44032: 0x9C7A, + 50203 - 44032: 0x9C81, + 50204 - 44032: 0x9C82, + 50205 - 44032: 0x9C83, + 50206 - 44032: 0x9C84, + 50207 - 44032: 0x9C85, + 50208 - 44032: 0x9C86, + 50209 - 44032: 0x9C87, + 50210 - 44032: 0x9C88, + 50211 - 44032: 0x9C89, + 50212 - 44032: 0xBDFC, + 50213 - 44032: 0x9C8A, + 50214 - 44032: 0x9C8B, + 50215 - 44032: 0x9C8C, + 50216 - 44032: 0x9C8D, + 50217 - 44032: 0x9C8E, + 50218 - 44032: 0x9C8F, + 50219 - 44032: 0x9C90, + 50220 - 44032: 0xBDFD, + 50221 - 44032: 0x9C91, + 50222 - 44032: 0x9C92, + 50223 - 44032: 0x9C93, + 50224 - 44032: 0xBDFE, + 50225 - 44032: 0x9C94, + 50226 - 44032: 0x9C95, + 50227 - 44032: 0x9C96, + 50228 - 44032: 0xBEA1, + 50229 - 44032: 0x9C97, + 50230 - 44032: 0x9C98, + 50231 - 44032: 0x9C99, + 50232 - 44032: 0x9C9A, + 50233 - 44032: 0x9C9B, + 50234 - 44032: 0x9C9C, + 50235 - 44032: 0x9C9D, + 50236 - 44032: 0xBEA2, + 50237 - 44032: 0xBEA3, + 50238 - 44032: 0x9C9E, + 50239 - 44032: 0x9C9F, + 50240 - 44032: 0x9CA0, + 50241 - 44032: 0x9CA1, + 50242 - 44032: 0x9CA2, + 50243 - 44032: 0x9CA3, + 50244 - 44032: 0x9CA4, + 50245 - 44032: 0x9CA5, + 50246 - 44032: 0x9CA6, + 50247 - 44032: 0x9CA7, + 50248 - 44032: 0xBEA4, + 50249 - 44032: 0x9CA8, + 50250 - 44032: 0x9CA9, + 50251 - 44032: 0x9CAA, + 50252 - 44032: 0x9CAB, + 50253 - 44032: 0x9CAC, + 50254 - 44032: 0x9CAD, + 50255 - 44032: 0x9CAE, + 50256 - 44032: 0x9CAF, + 50257 - 44032: 0x9CB0, + 50258 - 44032: 0x9CB1, + 50259 - 44032: 0x9CB2, + 50260 - 44032: 0x9CB3, + 50261 - 44032: 0x9CB4, + 50262 - 44032: 0x9CB5, + 50263 - 44032: 0x9CB6, + 50264 - 44032: 0x9CB7, + 50265 - 44032: 0x9CB8, + 50266 - 44032: 0x9CB9, + 50267 - 44032: 0x9CBA, + 50268 - 44032: 0x9CBB, + 50269 - 44032: 0x9CBC, + 50270 - 44032: 0x9CBD, + 50271 - 44032: 0x9CBE, + 50272 - 44032: 0x9CBF, + 50273 - 44032: 0x9CC0, + 50274 - 44032: 0x9CC1, + 50275 - 44032: 0x9CC2, + 50276 - 44032: 0xBEA5, + 50277 - 44032: 0xBEA6, + 50278 - 44032: 0x9CC3, + 50279 - 44032: 0x9CC4, + 50280 - 44032: 0xBEA7, + 50281 - 44032: 0x9CC5, + 50282 - 44032: 0x9CC6, + 50283 - 44032: 0x9CC7, + 50284 - 44032: 0xBEA8, + 50285 - 44032: 0x9CC8, + 50286 - 44032: 0x9CC9, + 50287 - 44032: 0x9CCA, + 50288 - 44032: 0x9CCB, + 50289 - 44032: 0x9CCC, + 50290 - 44032: 0x9CCD, + 50291 - 44032: 0x9CCE, + 50292 - 44032: 0xBEA9, + 50293 - 44032: 0xBEAA, + 50294 - 44032: 0x9CCF, + 50295 - 44032: 0x9CD0, + 50296 - 44032: 0x9CD1, + 50297 - 44032: 0xBEAB, + 50298 - 44032: 0x9CD2, + 50299 - 44032: 0x9CD3, + 50300 - 44032: 0x9CD4, + 50301 - 44032: 0x9CD5, + 50302 - 44032: 0x9CD6, + 50303 - 44032: 0x9CD7, + 50304 - 44032: 0xBEAC, + 50305 - 44032: 0x9CD8, + 50306 - 44032: 0x9CD9, + 50307 - 44032: 0x9CDA, + 50308 - 44032: 0x9CDB, + 50309 - 44032: 0x9CDC, + 50310 - 44032: 0x9CDD, + 50311 - 44032: 0x9CDE, + 50312 - 44032: 0x9CDF, + 50313 - 44032: 0x9CE0, + 50314 - 44032: 0x9CE1, + 50315 - 44032: 0x9CE2, + 50316 - 44032: 0x9CE3, + 50317 - 44032: 0x9CE4, + 50318 - 44032: 0x9CE5, + 50319 - 44032: 0x9CE6, + 50320 - 44032: 0x9CE7, + 50321 - 44032: 0x9CE8, + 50322 - 44032: 0x9CE9, + 50323 - 44032: 0x9CEA, + 50324 - 44032: 0xBEAD, + 50325 - 44032: 0x9CEB, + 50326 - 44032: 0x9CEC, + 50327 - 44032: 0x9CED, + 50328 - 44032: 0x9CEE, + 50329 - 44032: 0x9CEF, + 50330 - 44032: 0x9CF0, + 50331 - 44032: 0x9CF1, + 50332 - 44032: 0xBEAE, + 50333 - 44032: 0x9CF2, + 50334 - 44032: 0x9CF3, + 50335 - 44032: 0x9CF4, + 50336 - 44032: 0x9CF5, + 50337 - 44032: 0x9CF6, + 50338 - 44032: 0x9CF7, + 50339 - 44032: 0x9CF8, + 50340 - 44032: 0x9CF9, + 50341 - 44032: 0x9CFA, + 50342 - 44032: 0x9CFB, + 50343 - 44032: 0x9CFC, + 50344 - 44032: 0x9CFD, + 50345 - 44032: 0x9CFE, + 50346 - 44032: 0x9D41, + 50347 - 44032: 0x9D42, + 50348 - 44032: 0x9D43, + 50349 - 44032: 0x9D44, + 50350 - 44032: 0x9D45, + 50351 - 44032: 0x9D46, + 50352 - 44032: 0x9D47, + 50353 - 44032: 0x9D48, + 50354 - 44032: 0x9D49, + 50355 - 44032: 0x9D4A, + 50356 - 44032: 0x9D4B, + 50357 - 44032: 0x9D4C, + 50358 - 44032: 0x9D4D, + 50359 - 44032: 0x9D4E, + 50360 - 44032: 0xBEAF, + 50361 - 44032: 0x9D4F, + 50362 - 44032: 0x9D50, + 50363 - 44032: 0x9D51, + 50364 - 44032: 0xBEB0, + 50365 - 44032: 0x9D52, + 50366 - 44032: 0x9D53, + 50367 - 44032: 0x9D54, + 50368 - 44032: 0x9D55, + 50369 - 44032: 0x9D56, + 50370 - 44032: 0x9D57, + 50371 - 44032: 0x9D58, + 50372 - 44032: 0x9D59, + 50373 - 44032: 0x9D5A, + 50374 - 44032: 0x9D61, + 50375 - 44032: 0x9D62, + 50376 - 44032: 0x9D63, + 50377 - 44032: 0x9D64, + 50378 - 44032: 0x9D65, + 50379 - 44032: 0x9D66, + 50380 - 44032: 0x9D67, + 50381 - 44032: 0x9D68, + 50382 - 44032: 0x9D69, + 50383 - 44032: 0x9D6A, + 50384 - 44032: 0x9D6B, + 50385 - 44032: 0x9D6C, + 50386 - 44032: 0x9D6D, + 50387 - 44032: 0x9D6E, + 50388 - 44032: 0x9D6F, + 50389 - 44032: 0x9D70, + 50390 - 44032: 0x9D71, + 50391 - 44032: 0x9D72, + 50392 - 44032: 0x9D73, + 50393 - 44032: 0x9D74, + 50394 - 44032: 0x9D75, + 50395 - 44032: 0x9D76, + 50396 - 44032: 0x9D77, + 50397 - 44032: 0x9D78, + 50398 - 44032: 0x9D79, + 50399 - 44032: 0x9D7A, + 50400 - 44032: 0x9D81, + 50401 - 44032: 0x9D82, + 50402 - 44032: 0x9D83, + 50403 - 44032: 0x9D84, + 50404 - 44032: 0x9D85, + 50405 - 44032: 0x9D86, + 50406 - 44032: 0x9D87, + 50407 - 44032: 0x9D88, + 50408 - 44032: 0x9D89, + 50409 - 44032: 0xBEB1, + 50410 - 44032: 0x9D8A, + 50411 - 44032: 0x9D8B, + 50412 - 44032: 0x9D8C, + 50413 - 44032: 0x9D8D, + 50414 - 44032: 0x9D8E, + 50415 - 44032: 0x9D8F, + 50416 - 44032: 0xBEB2, + 50417 - 44032: 0xBEB3, + 50418 - 44032: 0x9D90, + 50419 - 44032: 0x9D91, + 50420 - 44032: 0xBEB4, + 50421 - 44032: 0x9D92, + 50422 - 44032: 0x9D93, + 50423 - 44032: 0x9D94, + 50424 - 44032: 0xBEB5, + 50425 - 44032: 0x9D95, + 50426 - 44032: 0xBEB6, + 50427 - 44032: 0x9D96, + 50428 - 44032: 0x9D97, + 50429 - 44032: 0x9D98, + 50430 - 44032: 0x9D99, + 50431 - 44032: 0xBEB7, + 50432 - 44032: 0xBEB8, + 50433 - 44032: 0xBEB9, + 50434 - 44032: 0x9D9A, + 50435 - 44032: 0x9D9B, + 50436 - 44032: 0x9D9C, + 50437 - 44032: 0x9D9D, + 50438 - 44032: 0x9D9E, + 50439 - 44032: 0x9D9F, + 50440 - 44032: 0x9DA0, + 50441 - 44032: 0x9DA1, + 50442 - 44032: 0x9DA2, + 50443 - 44032: 0x9DA3, + 50444 - 44032: 0xBEBA, + 50445 - 44032: 0x9DA4, + 50446 - 44032: 0x9DA5, + 50447 - 44032: 0x9DA6, + 50448 - 44032: 0xBEBB, + 50449 - 44032: 0x9DA7, + 50450 - 44032: 0x9DA8, + 50451 - 44032: 0x9DA9, + 50452 - 44032: 0xBEBC, + 50453 - 44032: 0x9DAA, + 50454 - 44032: 0x9DAB, + 50455 - 44032: 0x9DAC, + 50456 - 44032: 0x9DAD, + 50457 - 44032: 0x9DAE, + 50458 - 44032: 0x9DAF, + 50459 - 44032: 0x9DB0, + 50460 - 44032: 0xBEBD, + 50461 - 44032: 0x9DB1, + 50462 - 44032: 0x9DB2, + 50463 - 44032: 0x9DB3, + 50464 - 44032: 0x9DB4, + 50465 - 44032: 0x9DB5, + 50466 - 44032: 0x9DB6, + 50467 - 44032: 0x9DB7, + 50468 - 44032: 0x9DB8, + 50469 - 44032: 0x9DB9, + 50470 - 44032: 0x9DBA, + 50471 - 44032: 0x9DBB, + 50472 - 44032: 0xBEBE, + 50473 - 44032: 0xBEBF, + 50474 - 44032: 0x9DBC, + 50475 - 44032: 0x9DBD, + 50476 - 44032: 0xBEC0, + 50477 - 44032: 0x9DBE, + 50478 - 44032: 0x9DBF, + 50479 - 44032: 0x9DC0, + 50480 - 44032: 0xBEC1, + 50481 - 44032: 0x9DC1, + 50482 - 44032: 0x9DC2, + 50483 - 44032: 0x9DC3, + 50484 - 44032: 0x9DC4, + 50485 - 44032: 0x9DC5, + 50486 - 44032: 0x9DC6, + 50487 - 44032: 0x9DC7, + 50488 - 44032: 0xBEC2, + 50489 - 44032: 0xBEC3, + 50490 - 44032: 0x9DC8, + 50491 - 44032: 0xBEC4, + 50492 - 44032: 0x9DC9, + 50493 - 44032: 0xBEC5, + 50494 - 44032: 0x9DCA, + 50495 - 44032: 0x9DCB, + 50496 - 44032: 0x9DCC, + 50497 - 44032: 0x9DCD, + 50498 - 44032: 0x9DCE, + 50499 - 44032: 0x9DCF, + 50500 - 44032: 0xBEC6, + 50501 - 44032: 0xBEC7, + 50502 - 44032: 0x9DD0, + 50503 - 44032: 0x9DD1, + 50504 - 44032: 0xBEC8, + 50505 - 44032: 0xBEC9, + 50506 - 44032: 0xBECA, + 50507 - 44032: 0x9DD2, + 50508 - 44032: 0xBECB, + 50509 - 44032: 0xBECC, + 50510 - 44032: 0xBECD, + 50511 - 44032: 0x9DD3, + 50512 - 44032: 0x9DD4, + 50513 - 44032: 0x9DD5, + 50514 - 44032: 0x9DD6, + 50515 - 44032: 0xBECE, + 50516 - 44032: 0xBECF, + 50517 - 44032: 0xBED0, + 50518 - 44032: 0x9DD7, + 50519 - 44032: 0xBED1, + 50520 - 44032: 0xBED2, + 50521 - 44032: 0xBED3, + 50522 - 44032: 0x9DD8, + 50523 - 44032: 0x9DD9, + 50524 - 44032: 0x9DDA, + 50525 - 44032: 0xBED4, + 50526 - 44032: 0xBED5, + 50527 - 44032: 0x9DDB, + 50528 - 44032: 0xBED6, + 50529 - 44032: 0xBED7, + 50530 - 44032: 0x9DDC, + 50531 - 44032: 0x9DDD, + 50532 - 44032: 0xBED8, + 50533 - 44032: 0x9DDE, + 50534 - 44032: 0x9DDF, + 50535 - 44032: 0x9DE0, + 50536 - 44032: 0xBED9, + 50537 - 44032: 0x9DE1, + 50538 - 44032: 0x9DE2, + 50539 - 44032: 0x9DE3, + 50540 - 44032: 0x9DE4, + 50541 - 44032: 0x9DE5, + 50542 - 44032: 0x9DE6, + 50543 - 44032: 0x9DE7, + 50544 - 44032: 0xBEDA, + 50545 - 44032: 0xBEDB, + 50546 - 44032: 0x9DE8, + 50547 - 44032: 0xBEDC, + 50548 - 44032: 0xBEDD, + 50549 - 44032: 0xBEDE, + 50550 - 44032: 0x9DE9, + 50551 - 44032: 0x9DEA, + 50552 - 44032: 0x9DEB, + 50553 - 44032: 0x9DEC, + 50554 - 44032: 0x9DED, + 50555 - 44032: 0x9DEE, + 50556 - 44032: 0xBEDF, + 50557 - 44032: 0xBEE0, + 50558 - 44032: 0x9DEF, + 50559 - 44032: 0x9DF0, + 50560 - 44032: 0xBEE1, + 50561 - 44032: 0x9DF1, + 50562 - 44032: 0x9DF2, + 50563 - 44032: 0x9DF3, + 50564 - 44032: 0xBEE2, + 50565 - 44032: 0x9DF4, + 50566 - 44032: 0x9DF5, + 50567 - 44032: 0xBEE3, + 50568 - 44032: 0x9DF6, + 50569 - 44032: 0x9DF7, + 50570 - 44032: 0x9DF8, + 50571 - 44032: 0x9DF9, + 50572 - 44032: 0xBEE4, + 50573 - 44032: 0xBEE5, + 50574 - 44032: 0x9DFA, + 50575 - 44032: 0xBEE6, + 50576 - 44032: 0x9DFB, + 50577 - 44032: 0xBEE7, + 50578 - 44032: 0x9DFC, + 50579 - 44032: 0x9DFD, + 50580 - 44032: 0x9DFE, + 50581 - 44032: 0xBEE8, + 50582 - 44032: 0x9E41, + 50583 - 44032: 0xBEE9, + 50584 - 44032: 0xBEEA, + 50585 - 44032: 0x9E42, + 50586 - 44032: 0x9E43, + 50587 - 44032: 0x9E44, + 50588 - 44032: 0xBEEB, + 50589 - 44032: 0x9E45, + 50590 - 44032: 0x9E46, + 50591 - 44032: 0x9E47, + 50592 - 44032: 0xBEEC, + 50593 - 44032: 0x9E48, + 50594 - 44032: 0x9E49, + 50595 - 44032: 0x9E4A, + 50596 - 44032: 0x9E4B, + 50597 - 44032: 0x9E4C, + 50598 - 44032: 0x9E4D, + 50599 - 44032: 0x9E4E, + 50600 - 44032: 0x9E4F, + 50601 - 44032: 0xBEED, + 50602 - 44032: 0x9E50, + 50603 - 44032: 0x9E51, + 50604 - 44032: 0x9E52, + 50605 - 44032: 0x9E53, + 50606 - 44032: 0x9E54, + 50607 - 44032: 0x9E55, + 50608 - 44032: 0x9E56, + 50609 - 44032: 0x9E57, + 50610 - 44032: 0x9E58, + 50611 - 44032: 0x9E59, + 50612 - 44032: 0xBEEE, + 50613 - 44032: 0xBEEF, + 50614 - 44032: 0x9E5A, + 50615 - 44032: 0x9E61, + 50616 - 44032: 0xBEF0, + 50617 - 44032: 0xBEF1, + 50618 - 44032: 0x9E62, + 50619 - 44032: 0xBEF2, + 50620 - 44032: 0xBEF3, + 50621 - 44032: 0xBEF4, + 50622 - 44032: 0xBEF5, + 50623 - 44032: 0x9E63, + 50624 - 44032: 0x9E64, + 50625 - 44032: 0x9E65, + 50626 - 44032: 0x9E66, + 50627 - 44032: 0x9E67, + 50628 - 44032: 0xBEF6, + 50629 - 44032: 0xBEF7, + 50630 - 44032: 0xBEF8, + 50631 - 44032: 0xBEF9, + 50632 - 44032: 0xBEFA, + 50633 - 44032: 0xBEFB, + 50634 - 44032: 0xBEFC, + 50635 - 44032: 0x9E68, + 50636 - 44032: 0xBEFD, + 50637 - 44032: 0x9E69, + 50638 - 44032: 0xBEFE, + 50639 - 44032: 0x9E6A, + 50640 - 44032: 0xBFA1, + 50641 - 44032: 0xBFA2, + 50642 - 44032: 0x9E6B, + 50643 - 44032: 0x9E6C, + 50644 - 44032: 0xBFA3, + 50645 - 44032: 0x9E6D, + 50646 - 44032: 0x9E6E, + 50647 - 44032: 0x9E6F, + 50648 - 44032: 0xBFA4, + 50649 - 44032: 0x9E70, + 50650 - 44032: 0x9E71, + 50651 - 44032: 0x9E72, + 50652 - 44032: 0x9E73, + 50653 - 44032: 0x9E74, + 50654 - 44032: 0x9E75, + 50655 - 44032: 0x9E76, + 50656 - 44032: 0xBFA5, + 50657 - 44032: 0xBFA6, + 50658 - 44032: 0x9E77, + 50659 - 44032: 0xBFA7, + 50660 - 44032: 0x9E78, + 50661 - 44032: 0xBFA8, + 50662 - 44032: 0x9E79, + 50663 - 44032: 0x9E7A, + 50664 - 44032: 0x9E81, + 50665 - 44032: 0x9E82, + 50666 - 44032: 0x9E83, + 50667 - 44032: 0x9E84, + 50668 - 44032: 0xBFA9, + 50669 - 44032: 0xBFAA, + 50670 - 44032: 0xBFAB, + 50671 - 44032: 0x9E85, + 50672 - 44032: 0xBFAC, + 50673 - 44032: 0x9E86, + 50674 - 44032: 0x9E87, + 50675 - 44032: 0x9E88, + 50676 - 44032: 0xBFAD, + 50677 - 44032: 0x9E89, + 50678 - 44032: 0xBFAE, + 50679 - 44032: 0xBFAF, + 50680 - 44032: 0x9E8A, + 50681 - 44032: 0x9E8B, + 50682 - 44032: 0x9E8C, + 50683 - 44032: 0x9E8D, + 50684 - 44032: 0xBFB0, + 50685 - 44032: 0xBFB1, + 50686 - 44032: 0xBFB2, + 50687 - 44032: 0xBFB3, + 50688 - 44032: 0xBFB4, + 50689 - 44032: 0xBFB5, + 50690 - 44032: 0x9E8E, + 50691 - 44032: 0x9E8F, + 50692 - 44032: 0x9E90, + 50693 - 44032: 0xBFB6, + 50694 - 44032: 0xBFB7, + 50695 - 44032: 0xBFB8, + 50696 - 44032: 0xBFB9, + 50697 - 44032: 0x9E91, + 50698 - 44032: 0x9E92, + 50699 - 44032: 0x9E93, + 50700 - 44032: 0xBFBA, + 50701 - 44032: 0x9E94, + 50702 - 44032: 0x9E95, + 50703 - 44032: 0x9E96, + 50704 - 44032: 0xBFBB, + 50705 - 44032: 0x9E97, + 50706 - 44032: 0x9E98, + 50707 - 44032: 0x9E99, + 50708 - 44032: 0x9E9A, + 50709 - 44032: 0x9E9B, + 50710 - 44032: 0x9E9C, + 50711 - 44032: 0x9E9D, + 50712 - 44032: 0xBFBC, + 50713 - 44032: 0xBFBD, + 50714 - 44032: 0x9E9E, + 50715 - 44032: 0xBFBE, + 50716 - 44032: 0xBFBF, + 50717 - 44032: 0x9E9F, + 50718 - 44032: 0x9EA0, + 50719 - 44032: 0x9EA1, + 50720 - 44032: 0x9EA2, + 50721 - 44032: 0x9EA3, + 50722 - 44032: 0x9EA4, + 50723 - 44032: 0x9EA5, + 50724 - 44032: 0xBFC0, + 50725 - 44032: 0xBFC1, + 50726 - 44032: 0x9EA6, + 50727 - 44032: 0x9EA7, + 50728 - 44032: 0xBFC2, + 50729 - 44032: 0x9EA8, + 50730 - 44032: 0x9EA9, + 50731 - 44032: 0x9EAA, + 50732 - 44032: 0xBFC3, + 50733 - 44032: 0xBFC4, + 50734 - 44032: 0xBFC5, + 50735 - 44032: 0x9EAB, + 50736 - 44032: 0xBFC6, + 50737 - 44032: 0x9EAC, + 50738 - 44032: 0x9EAD, + 50739 - 44032: 0xBFC7, + 50740 - 44032: 0xBFC8, + 50741 - 44032: 0xBFC9, + 50742 - 44032: 0x9EAE, + 50743 - 44032: 0xBFCA, + 50744 - 44032: 0x9EAF, + 50745 - 44032: 0xBFCB, + 50746 - 44032: 0x9EB0, + 50747 - 44032: 0xBFCC, + 50748 - 44032: 0x9EB1, + 50749 - 44032: 0x9EB2, + 50750 - 44032: 0x9EB3, + 50751 - 44032: 0x9EB4, + 50752 - 44032: 0xBFCD, + 50753 - 44032: 0xBFCE, + 50754 - 44032: 0x9EB5, + 50755 - 44032: 0x9EB6, + 50756 - 44032: 0xBFCF, + 50757 - 44032: 0x9EB7, + 50758 - 44032: 0x9EB8, + 50759 - 44032: 0x9EB9, + 50760 - 44032: 0xBFD0, + 50761 - 44032: 0x9EBA, + 50762 - 44032: 0x9EBB, + 50763 - 44032: 0x9EBC, + 50764 - 44032: 0x9EBD, + 50765 - 44032: 0x9EBE, + 50766 - 44032: 0x9EBF, + 50767 - 44032: 0x9EC0, + 50768 - 44032: 0xBFD1, + 50769 - 44032: 0xBFD2, + 50770 - 44032: 0x9EC1, + 50771 - 44032: 0xBFD3, + 50772 - 44032: 0xBFD4, + 50773 - 44032: 0xBFD5, + 50774 - 44032: 0x9EC2, + 50775 - 44032: 0x9EC3, + 50776 - 44032: 0x9EC4, + 50777 - 44032: 0x9EC5, + 50778 - 44032: 0x9EC6, + 50779 - 44032: 0x9EC7, + 50780 - 44032: 0xBFD6, + 50781 - 44032: 0xBFD7, + 50782 - 44032: 0x9EC8, + 50783 - 44032: 0x9EC9, + 50784 - 44032: 0xBFD8, + 50785 - 44032: 0x9ECA, + 50786 - 44032: 0x9ECB, + 50787 - 44032: 0x9ECC, + 50788 - 44032: 0x9ECD, + 50789 - 44032: 0x9ECE, + 50790 - 44032: 0x9ECF, + 50791 - 44032: 0x9ED0, + 50792 - 44032: 0x9ED1, + 50793 - 44032: 0x9ED2, + 50794 - 44032: 0x9ED3, + 50795 - 44032: 0x9ED4, + 50796 - 44032: 0xBFD9, + 50797 - 44032: 0x9ED5, + 50798 - 44032: 0x9ED6, + 50799 - 44032: 0xBFDA, + 50800 - 44032: 0x9ED7, + 50801 - 44032: 0xBFDB, + 50802 - 44032: 0x9ED8, + 50803 - 44032: 0x9ED9, + 50804 - 44032: 0x9EDA, + 50805 - 44032: 0x9EDB, + 50806 - 44032: 0x9EDC, + 50807 - 44032: 0x9EDD, + 50808 - 44032: 0xBFDC, + 50809 - 44032: 0xBFDD, + 50810 - 44032: 0x9EDE, + 50811 - 44032: 0x9EDF, + 50812 - 44032: 0xBFDE, + 50813 - 44032: 0x9EE0, + 50814 - 44032: 0x9EE1, + 50815 - 44032: 0x9EE2, + 50816 - 44032: 0xBFDF, + 50817 - 44032: 0x9EE3, + 50818 - 44032: 0x9EE4, + 50819 - 44032: 0x9EE5, + 50820 - 44032: 0x9EE6, + 50821 - 44032: 0x9EE7, + 50822 - 44032: 0x9EE8, + 50823 - 44032: 0x9EE9, + 50824 - 44032: 0xBFE0, + 50825 - 44032: 0xBFE1, + 50826 - 44032: 0x9EEA, + 50827 - 44032: 0xBFE2, + 50828 - 44032: 0x9EEB, + 50829 - 44032: 0xBFE3, + 50830 - 44032: 0x9EEC, + 50831 - 44032: 0x9EED, + 50832 - 44032: 0x9EEE, + 50833 - 44032: 0x9EEF, + 50834 - 44032: 0x9EF0, + 50835 - 44032: 0x9EF1, + 50836 - 44032: 0xBFE4, + 50837 - 44032: 0xBFE5, + 50838 - 44032: 0x9EF2, + 50839 - 44032: 0x9EF3, + 50840 - 44032: 0xBFE6, + 50841 - 44032: 0x9EF4, + 50842 - 44032: 0x9EF5, + 50843 - 44032: 0x9EF6, + 50844 - 44032: 0xBFE7, + 50845 - 44032: 0x9EF7, + 50846 - 44032: 0x9EF8, + 50847 - 44032: 0x9EF9, + 50848 - 44032: 0x9EFA, + 50849 - 44032: 0x9EFB, + 50850 - 44032: 0x9EFC, + 50851 - 44032: 0x9EFD, + 50852 - 44032: 0xBFE8, + 50853 - 44032: 0xBFE9, + 50854 - 44032: 0x9EFE, + 50855 - 44032: 0xBFEA, + 50856 - 44032: 0x9F41, + 50857 - 44032: 0xBFEB, + 50858 - 44032: 0x9F42, + 50859 - 44032: 0x9F43, + 50860 - 44032: 0x9F44, + 50861 - 44032: 0x9F45, + 50862 - 44032: 0x9F46, + 50863 - 44032: 0x9F47, + 50864 - 44032: 0xBFEC, + 50865 - 44032: 0xBFED, + 50866 - 44032: 0x9F48, + 50867 - 44032: 0x9F49, + 50868 - 44032: 0xBFEE, + 50869 - 44032: 0x9F4A, + 50870 - 44032: 0x9F4B, + 50871 - 44032: 0x9F4C, + 50872 - 44032: 0xBFEF, + 50873 - 44032: 0xBFF0, + 50874 - 44032: 0xBFF1, + 50875 - 44032: 0x9F4D, + 50876 - 44032: 0x9F4E, + 50877 - 44032: 0x9F4F, + 50878 - 44032: 0x9F50, + 50879 - 44032: 0x9F51, + 50880 - 44032: 0xBFF2, + 50881 - 44032: 0xBFF3, + 50882 - 44032: 0x9F52, + 50883 - 44032: 0xBFF4, + 50884 - 44032: 0x9F53, + 50885 - 44032: 0xBFF5, + 50886 - 44032: 0x9F54, + 50887 - 44032: 0x9F55, + 50888 - 44032: 0x9F56, + 50889 - 44032: 0x9F57, + 50890 - 44032: 0x9F58, + 50891 - 44032: 0x9F59, + 50892 - 44032: 0xBFF6, + 50893 - 44032: 0xBFF7, + 50894 - 44032: 0x9F5A, + 50895 - 44032: 0x9F61, + 50896 - 44032: 0xBFF8, + 50897 - 44032: 0x9F62, + 50898 - 44032: 0x9F63, + 50899 - 44032: 0x9F64, + 50900 - 44032: 0xBFF9, + 50901 - 44032: 0x9F65, + 50902 - 44032: 0x9F66, + 50903 - 44032: 0x9F67, + 50904 - 44032: 0x9F68, + 50905 - 44032: 0x9F69, + 50906 - 44032: 0x9F6A, + 50907 - 44032: 0x9F6B, + 50908 - 44032: 0xBFFA, + 50909 - 44032: 0xBFFB, + 50910 - 44032: 0x9F6C, + 50911 - 44032: 0x9F6D, + 50912 - 44032: 0xBFFC, + 50913 - 44032: 0xBFFD, + 50914 - 44032: 0x9F6E, + 50915 - 44032: 0x9F6F, + 50916 - 44032: 0x9F70, + 50917 - 44032: 0x9F71, + 50918 - 44032: 0x9F72, + 50919 - 44032: 0x9F73, + 50920 - 44032: 0xBFFE, + 50921 - 44032: 0xC0A1, + 50922 - 44032: 0x9F74, + 50923 - 44032: 0x9F75, + 50924 - 44032: 0xC0A2, + 50925 - 44032: 0x9F76, + 50926 - 44032: 0x9F77, + 50927 - 44032: 0x9F78, + 50928 - 44032: 0xC0A3, + 50929 - 44032: 0x9F79, + 50930 - 44032: 0x9F7A, + 50931 - 44032: 0x9F81, + 50932 - 44032: 0x9F82, + 50933 - 44032: 0x9F83, + 50934 - 44032: 0x9F84, + 50935 - 44032: 0x9F85, + 50936 - 44032: 0xC0A4, + 50937 - 44032: 0xC0A5, + 50938 - 44032: 0x9F86, + 50939 - 44032: 0x9F87, + 50940 - 44032: 0x9F88, + 50941 - 44032: 0xC0A6, + 50942 - 44032: 0x9F89, + 50943 - 44032: 0x9F8A, + 50944 - 44032: 0x9F8B, + 50945 - 44032: 0x9F8C, + 50946 - 44032: 0x9F8D, + 50947 - 44032: 0x9F8E, + 50948 - 44032: 0xC0A7, + 50949 - 44032: 0xC0A8, + 50950 - 44032: 0x9F8F, + 50951 - 44032: 0x9F90, + 50952 - 44032: 0xC0A9, + 50953 - 44032: 0x9F91, + 50954 - 44032: 0x9F92, + 50955 - 44032: 0x9F93, + 50956 - 44032: 0xC0AA, + 50957 - 44032: 0x9F94, + 50958 - 44032: 0x9F95, + 50959 - 44032: 0x9F96, + 50960 - 44032: 0x9F97, + 50961 - 44032: 0x9F98, + 50962 - 44032: 0x9F99, + 50963 - 44032: 0x9F9A, + 50964 - 44032: 0xC0AB, + 50965 - 44032: 0xC0AC, + 50966 - 44032: 0x9F9B, + 50967 - 44032: 0xC0AD, + 50968 - 44032: 0x9F9C, + 50969 - 44032: 0xC0AE, + 50970 - 44032: 0x9F9D, + 50971 - 44032: 0x9F9E, + 50972 - 44032: 0x9F9F, + 50973 - 44032: 0x9FA0, + 50974 - 44032: 0x9FA1, + 50975 - 44032: 0x9FA2, + 50976 - 44032: 0xC0AF, + 50977 - 44032: 0xC0B0, + 50978 - 44032: 0x9FA3, + 50979 - 44032: 0x9FA4, + 50980 - 44032: 0xC0B1, + 50981 - 44032: 0x9FA5, + 50982 - 44032: 0x9FA6, + 50983 - 44032: 0x9FA7, + 50984 - 44032: 0xC0B2, + 50985 - 44032: 0x9FA8, + 50986 - 44032: 0x9FA9, + 50987 - 44032: 0x9FAA, + 50988 - 44032: 0x9FAB, + 50989 - 44032: 0x9FAC, + 50990 - 44032: 0x9FAD, + 50991 - 44032: 0x9FAE, + 50992 - 44032: 0xC0B3, + 50993 - 44032: 0xC0B4, + 50994 - 44032: 0x9FAF, + 50995 - 44032: 0xC0B5, + 50996 - 44032: 0x9FB0, + 50997 - 44032: 0xC0B6, + 50998 - 44032: 0x9FB1, + 50999 - 44032: 0xC0B7, + 51000 - 44032: 0x9FB2, + 51001 - 44032: 0x9FB3, + 51002 - 44032: 0x9FB4, + 51003 - 44032: 0x9FB5, + 51004 - 44032: 0xC0B8, + 51005 - 44032: 0xC0B9, + 51006 - 44032: 0x9FB6, + 51007 - 44032: 0x9FB7, + 51008 - 44032: 0xC0BA, + 51009 - 44032: 0x9FB8, + 51010 - 44032: 0x9FB9, + 51011 - 44032: 0x9FBA, + 51012 - 44032: 0xC0BB, + 51013 - 44032: 0x9FBB, + 51014 - 44032: 0x9FBC, + 51015 - 44032: 0x9FBD, + 51016 - 44032: 0x9FBE, + 51017 - 44032: 0x9FBF, + 51018 - 44032: 0xC0BC, + 51019 - 44032: 0x9FC0, + 51020 - 44032: 0xC0BD, + 51021 - 44032: 0xC0BE, + 51022 - 44032: 0x9FC1, + 51023 - 44032: 0xC0BF, + 51024 - 44032: 0x9FC2, + 51025 - 44032: 0xC0C0, + 51026 - 44032: 0xC0C1, + 51027 - 44032: 0xC0C2, + 51028 - 44032: 0xC0C3, + 51029 - 44032: 0xC0C4, + 51030 - 44032: 0xC0C5, + 51031 - 44032: 0xC0C6, + 51032 - 44032: 0xC0C7, + 51033 - 44032: 0x9FC3, + 51034 - 44032: 0x9FC4, + 51035 - 44032: 0x9FC5, + 51036 - 44032: 0xC0C8, + 51037 - 44032: 0x9FC6, + 51038 - 44032: 0x9FC7, + 51039 - 44032: 0x9FC8, + 51040 - 44032: 0xC0C9, + 51041 - 44032: 0x9FC9, + 51042 - 44032: 0x9FCA, + 51043 - 44032: 0x9FCB, + 51044 - 44032: 0x9FCC, + 51045 - 44032: 0x9FCD, + 51046 - 44032: 0x9FCE, + 51047 - 44032: 0x9FCF, + 51048 - 44032: 0xC0CA, + 51049 - 44032: 0x9FD0, + 51050 - 44032: 0x9FD1, + 51051 - 44032: 0xC0CB, + 51052 - 44032: 0x9FD2, + 51053 - 44032: 0x9FD3, + 51054 - 44032: 0x9FD4, + 51055 - 44032: 0x9FD5, + 51056 - 44032: 0x9FD6, + 51057 - 44032: 0x9FD7, + 51058 - 44032: 0x9FD8, + 51059 - 44032: 0x9FD9, + 51060 - 44032: 0xC0CC, + 51061 - 44032: 0xC0CD, + 51062 - 44032: 0x9FDA, + 51063 - 44032: 0x9FDB, + 51064 - 44032: 0xC0CE, + 51065 - 44032: 0x9FDC, + 51066 - 44032: 0x9FDD, + 51067 - 44032: 0x9FDE, + 51068 - 44032: 0xC0CF, + 51069 - 44032: 0xC0D0, + 51070 - 44032: 0xC0D1, + 51071 - 44032: 0x9FDF, + 51072 - 44032: 0x9FE0, + 51073 - 44032: 0x9FE1, + 51074 - 44032: 0x9FE2, + 51075 - 44032: 0xC0D2, + 51076 - 44032: 0xC0D3, + 51077 - 44032: 0xC0D4, + 51078 - 44032: 0x9FE3, + 51079 - 44032: 0xC0D5, + 51080 - 44032: 0xC0D6, + 51081 - 44032: 0xC0D7, + 51082 - 44032: 0xC0D8, + 51083 - 44032: 0x9FE4, + 51084 - 44032: 0x9FE5, + 51085 - 44032: 0x9FE6, + 51086 - 44032: 0xC0D9, + 51087 - 44032: 0x9FE7, + 51088 - 44032: 0xC0DA, + 51089 - 44032: 0xC0DB, + 51090 - 44032: 0x9FE8, + 51091 - 44032: 0x9FE9, + 51092 - 44032: 0xC0DC, + 51093 - 44032: 0x9FEA, + 51094 - 44032: 0xC0DD, + 51095 - 44032: 0xC0DE, + 51096 - 44032: 0xC0DF, + 51097 - 44032: 0x9FEB, + 51098 - 44032: 0xC0E0, + 51099 - 44032: 0x9FEC, + 51100 - 44032: 0x9FED, + 51101 - 44032: 0x9FEE, + 51102 - 44032: 0x9FEF, + 51103 - 44032: 0x9FF0, + 51104 - 44032: 0xC0E1, + 51105 - 44032: 0xC0E2, + 51106 - 44032: 0x9FF1, + 51107 - 44032: 0xC0E3, + 51108 - 44032: 0xC0E4, + 51109 - 44032: 0xC0E5, + 51110 - 44032: 0xC0E6, + 51111 - 44032: 0x9FF2, + 51112 - 44032: 0x9FF3, + 51113 - 44032: 0x9FF4, + 51114 - 44032: 0x9FF5, + 51115 - 44032: 0x9FF6, + 51116 - 44032: 0xC0E7, + 51117 - 44032: 0xC0E8, + 51118 - 44032: 0x9FF7, + 51119 - 44032: 0x9FF8, + 51120 - 44032: 0xC0E9, + 51121 - 44032: 0x9FF9, + 51122 - 44032: 0x9FFA, + 51123 - 44032: 0x9FFB, + 51124 - 44032: 0xC0EA, + 51125 - 44032: 0x9FFC, + 51126 - 44032: 0x9FFD, + 51127 - 44032: 0x9FFE, + 51128 - 44032: 0xA041, + 51129 - 44032: 0xA042, + 51130 - 44032: 0xA043, + 51131 - 44032: 0xA044, + 51132 - 44032: 0xC0EB, + 51133 - 44032: 0xC0EC, + 51134 - 44032: 0xA045, + 51135 - 44032: 0xC0ED, + 51136 - 44032: 0xC0EE, + 51137 - 44032: 0xC0EF, + 51138 - 44032: 0xA046, + 51139 - 44032: 0xA047, + 51140 - 44032: 0xA048, + 51141 - 44032: 0xA049, + 51142 - 44032: 0xA04A, + 51143 - 44032: 0xA04B, + 51144 - 44032: 0xC0F0, + 51145 - 44032: 0xC0F1, + 51146 - 44032: 0xA04C, + 51147 - 44032: 0xA04D, + 51148 - 44032: 0xC0F2, + 51149 - 44032: 0xA04E, + 51150 - 44032: 0xC0F3, + 51151 - 44032: 0xA04F, + 51152 - 44032: 0xC0F4, + 51153 - 44032: 0xA050, + 51154 - 44032: 0xA051, + 51155 - 44032: 0xA052, + 51156 - 44032: 0xA053, + 51157 - 44032: 0xA054, + 51158 - 44032: 0xA055, + 51159 - 44032: 0xA056, + 51160 - 44032: 0xC0F5, + 51161 - 44032: 0xA057, + 51162 - 44032: 0xA058, + 51163 - 44032: 0xA059, + 51164 - 44032: 0xA05A, + 51165 - 44032: 0xC0F6, + 51166 - 44032: 0xA061, + 51167 - 44032: 0xA062, + 51168 - 44032: 0xA063, + 51169 - 44032: 0xA064, + 51170 - 44032: 0xA065, + 51171 - 44032: 0xA066, + 51172 - 44032: 0xC0F7, + 51173 - 44032: 0xA067, + 51174 - 44032: 0xA068, + 51175 - 44032: 0xA069, + 51176 - 44032: 0xC0F8, + 51177 - 44032: 0xA06A, + 51178 - 44032: 0xA06B, + 51179 - 44032: 0xA06C, + 51180 - 44032: 0xC0F9, + 51181 - 44032: 0xA06D, + 51182 - 44032: 0xA06E, + 51183 - 44032: 0xA06F, + 51184 - 44032: 0xA070, + 51185 - 44032: 0xA071, + 51186 - 44032: 0xA072, + 51187 - 44032: 0xA073, + 51188 - 44032: 0xA074, + 51189 - 44032: 0xA075, + 51190 - 44032: 0xA076, + 51191 - 44032: 0xA077, + 51192 - 44032: 0xA078, + 51193 - 44032: 0xA079, + 51194 - 44032: 0xA07A, + 51195 - 44032: 0xA081, + 51196 - 44032: 0xA082, + 51197 - 44032: 0xA083, + 51198 - 44032: 0xA084, + 51199 - 44032: 0xA085, + 51200 - 44032: 0xC0FA, + 51201 - 44032: 0xC0FB, + 51202 - 44032: 0xA086, + 51203 - 44032: 0xA087, + 51204 - 44032: 0xC0FC, + 51205 - 44032: 0xA088, + 51206 - 44032: 0xA089, + 51207 - 44032: 0xA08A, + 51208 - 44032: 0xC0FD, + 51209 - 44032: 0xA08B, + 51210 - 44032: 0xC0FE, + 51211 - 44032: 0xA08C, + 51212 - 44032: 0xA08D, + 51213 - 44032: 0xA08E, + 51214 - 44032: 0xA08F, + 51215 - 44032: 0xA090, + 51216 - 44032: 0xC1A1, + 51217 - 44032: 0xC1A2, + 51218 - 44032: 0xA091, + 51219 - 44032: 0xC1A3, + 51220 - 44032: 0xA092, + 51221 - 44032: 0xC1A4, + 51222 - 44032: 0xC1A5, + 51223 - 44032: 0xA093, + 51224 - 44032: 0xA094, + 51225 - 44032: 0xA095, + 51226 - 44032: 0xA096, + 51227 - 44032: 0xA097, + 51228 - 44032: 0xC1A6, + 51229 - 44032: 0xC1A7, + 51230 - 44032: 0xA098, + 51231 - 44032: 0xA099, + 51232 - 44032: 0xC1A8, + 51233 - 44032: 0xA09A, + 51234 - 44032: 0xA09B, + 51235 - 44032: 0xA09C, + 51236 - 44032: 0xC1A9, + 51237 - 44032: 0xA09D, + 51238 - 44032: 0xA09E, + 51239 - 44032: 0xA09F, + 51240 - 44032: 0xA0A0, + 51241 - 44032: 0xA0A1, + 51242 - 44032: 0xA0A2, + 51243 - 44032: 0xA0A3, + 51244 - 44032: 0xC1AA, + 51245 - 44032: 0xC1AB, + 51246 - 44032: 0xA0A4, + 51247 - 44032: 0xC1AC, + 51248 - 44032: 0xA0A5, + 51249 - 44032: 0xC1AD, + 51250 - 44032: 0xA0A6, + 51251 - 44032: 0xA0A7, + 51252 - 44032: 0xA0A8, + 51253 - 44032: 0xA0A9, + 51254 - 44032: 0xA0AA, + 51255 - 44032: 0xA0AB, + 51256 - 44032: 0xC1AE, + 51257 - 44032: 0xA0AC, + 51258 - 44032: 0xA0AD, + 51259 - 44032: 0xA0AE, + 51260 - 44032: 0xC1AF, + 51261 - 44032: 0xA0AF, + 51262 - 44032: 0xA0B0, + 51263 - 44032: 0xA0B1, + 51264 - 44032: 0xC1B0, + 51265 - 44032: 0xA0B2, + 51266 - 44032: 0xA0B3, + 51267 - 44032: 0xA0B4, + 51268 - 44032: 0xA0B5, + 51269 - 44032: 0xA0B6, + 51270 - 44032: 0xA0B7, + 51271 - 44032: 0xA0B8, + 51272 - 44032: 0xC1B1, + 51273 - 44032: 0xC1B2, + 51274 - 44032: 0xA0B9, + 51275 - 44032: 0xA0BA, + 51276 - 44032: 0xC1B3, + 51277 - 44032: 0xC1B4, + 51278 - 44032: 0xA0BB, + 51279 - 44032: 0xA0BC, + 51280 - 44032: 0xA0BD, + 51281 - 44032: 0xA0BE, + 51282 - 44032: 0xA0BF, + 51283 - 44032: 0xA0C0, + 51284 - 44032: 0xC1B5, + 51285 - 44032: 0xA0C1, + 51286 - 44032: 0xA0C2, + 51287 - 44032: 0xA0C3, + 51288 - 44032: 0xA0C4, + 51289 - 44032: 0xA0C5, + 51290 - 44032: 0xA0C6, + 51291 - 44032: 0xA0C7, + 51292 - 44032: 0xA0C8, + 51293 - 44032: 0xA0C9, + 51294 - 44032: 0xA0CA, + 51295 - 44032: 0xA0CB, + 51296 - 44032: 0xA0CC, + 51297 - 44032: 0xA0CD, + 51298 - 44032: 0xA0CE, + 51299 - 44032: 0xA0CF, + 51300 - 44032: 0xA0D0, + 51301 - 44032: 0xA0D1, + 51302 - 44032: 0xA0D2, + 51303 - 44032: 0xA0D3, + 51304 - 44032: 0xA0D4, + 51305 - 44032: 0xA0D5, + 51306 - 44032: 0xA0D6, + 51307 - 44032: 0xA0D7, + 51308 - 44032: 0xA0D8, + 51309 - 44032: 0xA0D9, + 51310 - 44032: 0xA0DA, + 51311 - 44032: 0xA0DB, + 51312 - 44032: 0xC1B6, + 51313 - 44032: 0xC1B7, + 51314 - 44032: 0xA0DC, + 51315 - 44032: 0xA0DD, + 51316 - 44032: 0xC1B8, + 51317 - 44032: 0xA0DE, + 51318 - 44032: 0xA0DF, + 51319 - 44032: 0xA0E0, + 51320 - 44032: 0xC1B9, + 51321 - 44032: 0xA0E1, + 51322 - 44032: 0xC1BA, + 51323 - 44032: 0xA0E2, + 51324 - 44032: 0xA0E3, + 51325 - 44032: 0xA0E4, + 51326 - 44032: 0xA0E5, + 51327 - 44032: 0xA0E6, + 51328 - 44032: 0xC1BB, + 51329 - 44032: 0xC1BC, + 51330 - 44032: 0xA0E7, + 51331 - 44032: 0xC1BD, + 51332 - 44032: 0xA0E8, + 51333 - 44032: 0xC1BE, + 51334 - 44032: 0xC1BF, + 51335 - 44032: 0xC1C0, + 51336 - 44032: 0xA0E9, + 51337 - 44032: 0xA0EA, + 51338 - 44032: 0xA0EB, + 51339 - 44032: 0xC1C1, + 51340 - 44032: 0xC1C2, + 51341 - 44032: 0xC1C3, + 51342 - 44032: 0xA0EC, + 51343 - 44032: 0xA0ED, + 51344 - 44032: 0xA0EE, + 51345 - 44032: 0xA0EF, + 51346 - 44032: 0xA0F0, + 51347 - 44032: 0xA0F1, + 51348 - 44032: 0xC1C4, + 51349 - 44032: 0xA0F2, + 51350 - 44032: 0xA0F3, + 51351 - 44032: 0xA0F4, + 51352 - 44032: 0xA0F5, + 51353 - 44032: 0xA0F6, + 51354 - 44032: 0xA0F7, + 51355 - 44032: 0xA0F8, + 51356 - 44032: 0xA0F9, + 51357 - 44032: 0xC1C5, + 51358 - 44032: 0xA0FA, + 51359 - 44032: 0xC1C6, + 51360 - 44032: 0xA0FB, + 51361 - 44032: 0xC1C7, + 51362 - 44032: 0xA0FC, + 51363 - 44032: 0xA0FD, + 51364 - 44032: 0xA0FE, + 51365 - 44032: 0xA141, + 51366 - 44032: 0xA142, + 51367 - 44032: 0xA143, + 51368 - 44032: 0xC1C8, + 51369 - 44032: 0xA144, + 51370 - 44032: 0xA145, + 51371 - 44032: 0xA146, + 51372 - 44032: 0xA147, + 51373 - 44032: 0xA148, + 51374 - 44032: 0xA149, + 51375 - 44032: 0xA14A, + 51376 - 44032: 0xA14B, + 51377 - 44032: 0xA14C, + 51378 - 44032: 0xA14D, + 51379 - 44032: 0xA14E, + 51380 - 44032: 0xA14F, + 51381 - 44032: 0xA150, + 51382 - 44032: 0xA151, + 51383 - 44032: 0xA152, + 51384 - 44032: 0xA153, + 51385 - 44032: 0xA154, + 51386 - 44032: 0xA155, + 51387 - 44032: 0xA156, + 51388 - 44032: 0xC1C9, + 51389 - 44032: 0xC1CA, + 51390 - 44032: 0xA157, + 51391 - 44032: 0xA158, + 51392 - 44032: 0xA159, + 51393 - 44032: 0xA15A, + 51394 - 44032: 0xA161, + 51395 - 44032: 0xA162, + 51396 - 44032: 0xC1CB, + 51397 - 44032: 0xA163, + 51398 - 44032: 0xA164, + 51399 - 44032: 0xA165, + 51400 - 44032: 0xC1CC, + 51401 - 44032: 0xA166, + 51402 - 44032: 0xA167, + 51403 - 44032: 0xA168, + 51404 - 44032: 0xC1CD, + 51405 - 44032: 0xA169, + 51406 - 44032: 0xA16A, + 51407 - 44032: 0xA16B, + 51408 - 44032: 0xA16C, + 51409 - 44032: 0xA16D, + 51410 - 44032: 0xA16E, + 51411 - 44032: 0xA16F, + 51412 - 44032: 0xC1CE, + 51413 - 44032: 0xC1CF, + 51414 - 44032: 0xA170, + 51415 - 44032: 0xC1D0, + 51416 - 44032: 0xA171, + 51417 - 44032: 0xC1D1, + 51418 - 44032: 0xA172, + 51419 - 44032: 0xA173, + 51420 - 44032: 0xA174, + 51421 - 44032: 0xA175, + 51422 - 44032: 0xA176, + 51423 - 44032: 0xA177, + 51424 - 44032: 0xC1D2, + 51425 - 44032: 0xC1D3, + 51426 - 44032: 0xA178, + 51427 - 44032: 0xA179, + 51428 - 44032: 0xC1D4, + 51429 - 44032: 0xA17A, + 51430 - 44032: 0xA181, + 51431 - 44032: 0xA182, + 51432 - 44032: 0xA183, + 51433 - 44032: 0xA184, + 51434 - 44032: 0xA185, + 51435 - 44032: 0xA186, + 51436 - 44032: 0xA187, + 51437 - 44032: 0xA188, + 51438 - 44032: 0xA189, + 51439 - 44032: 0xA18A, + 51440 - 44032: 0xA18B, + 51441 - 44032: 0xA18C, + 51442 - 44032: 0xA18D, + 51443 - 44032: 0xA18E, + 51444 - 44032: 0xA18F, + 51445 - 44032: 0xC1D5, + 51446 - 44032: 0xA190, + 51447 - 44032: 0xA191, + 51448 - 44032: 0xA192, + 51449 - 44032: 0xA193, + 51450 - 44032: 0xA194, + 51451 - 44032: 0xA195, + 51452 - 44032: 0xC1D6, + 51453 - 44032: 0xC1D7, + 51454 - 44032: 0xA196, + 51455 - 44032: 0xA197, + 51456 - 44032: 0xC1D8, + 51457 - 44032: 0xA198, + 51458 - 44032: 0xA199, + 51459 - 44032: 0xA19A, + 51460 - 44032: 0xC1D9, + 51461 - 44032: 0xC1DA, + 51462 - 44032: 0xC1DB, + 51463 - 44032: 0xA19B, + 51464 - 44032: 0xA19C, + 51465 - 44032: 0xA19D, + 51466 - 44032: 0xA19E, + 51467 - 44032: 0xA19F, + 51468 - 44032: 0xC1DC, + 51469 - 44032: 0xC1DD, + 51470 - 44032: 0xA1A0, + 51471 - 44032: 0xC1DE, + 51472 - 44032: 0xA241, + 51473 - 44032: 0xC1DF, + 51474 - 44032: 0xA242, + 51475 - 44032: 0xA243, + 51476 - 44032: 0xA244, + 51477 - 44032: 0xA245, + 51478 - 44032: 0xA246, + 51479 - 44032: 0xA247, + 51480 - 44032: 0xC1E0, + 51481 - 44032: 0xA248, + 51482 - 44032: 0xA249, + 51483 - 44032: 0xA24A, + 51484 - 44032: 0xA24B, + 51485 - 44032: 0xA24C, + 51486 - 44032: 0xA24D, + 51487 - 44032: 0xA24E, + 51488 - 44032: 0xA24F, + 51489 - 44032: 0xA250, + 51490 - 44032: 0xA251, + 51491 - 44032: 0xA252, + 51492 - 44032: 0xA253, + 51493 - 44032: 0xA254, + 51494 - 44032: 0xA255, + 51495 - 44032: 0xA256, + 51496 - 44032: 0xA257, + 51497 - 44032: 0xA258, + 51498 - 44032: 0xA259, + 51499 - 44032: 0xA25A, + 51500 - 44032: 0xC1E1, + 51501 - 44032: 0xA261, + 51502 - 44032: 0xA262, + 51503 - 44032: 0xA263, + 51504 - 44032: 0xA264, + 51505 - 44032: 0xA265, + 51506 - 44032: 0xA266, + 51507 - 44032: 0xA267, + 51508 - 44032: 0xC1E2, + 51509 - 44032: 0xA268, + 51510 - 44032: 0xA269, + 51511 - 44032: 0xA26A, + 51512 - 44032: 0xA26B, + 51513 - 44032: 0xA26C, + 51514 - 44032: 0xA26D, + 51515 - 44032: 0xA26E, + 51516 - 44032: 0xA26F, + 51517 - 44032: 0xA270, + 51518 - 44032: 0xA271, + 51519 - 44032: 0xA272, + 51520 - 44032: 0xA273, + 51521 - 44032: 0xA274, + 51522 - 44032: 0xA275, + 51523 - 44032: 0xA276, + 51524 - 44032: 0xA277, + 51525 - 44032: 0xA278, + 51526 - 44032: 0xA279, + 51527 - 44032: 0xA27A, + 51528 - 44032: 0xA281, + 51529 - 44032: 0xA282, + 51530 - 44032: 0xA283, + 51531 - 44032: 0xA284, + 51532 - 44032: 0xA285, + 51533 - 44032: 0xA286, + 51534 - 44032: 0xA287, + 51535 - 44032: 0xA288, + 51536 - 44032: 0xC1E3, + 51537 - 44032: 0xC1E4, + 51538 - 44032: 0xA289, + 51539 - 44032: 0xA28A, + 51540 - 44032: 0xC1E5, + 51541 - 44032: 0xA28B, + 51542 - 44032: 0xA28C, + 51543 - 44032: 0xA28D, + 51544 - 44032: 0xC1E6, + 51545 - 44032: 0xA28E, + 51546 - 44032: 0xA28F, + 51547 - 44032: 0xA290, + 51548 - 44032: 0xA291, + 51549 - 44032: 0xA292, + 51550 - 44032: 0xA293, + 51551 - 44032: 0xA294, + 51552 - 44032: 0xC1E7, + 51553 - 44032: 0xC1E8, + 51554 - 44032: 0xA295, + 51555 - 44032: 0xC1E9, + 51556 - 44032: 0xA296, + 51557 - 44032: 0xA297, + 51558 - 44032: 0xA298, + 51559 - 44032: 0xA299, + 51560 - 44032: 0xA29A, + 51561 - 44032: 0xA29B, + 51562 - 44032: 0xA29C, + 51563 - 44032: 0xA29D, + 51564 - 44032: 0xC1EA, + 51565 - 44032: 0xA29E, + 51566 - 44032: 0xA29F, + 51567 - 44032: 0xA2A0, + 51568 - 44032: 0xC1EB, + 51569 - 44032: 0xA341, + 51570 - 44032: 0xA342, + 51571 - 44032: 0xA343, + 51572 - 44032: 0xC1EC, + 51573 - 44032: 0xA344, + 51574 - 44032: 0xA345, + 51575 - 44032: 0xA346, + 51576 - 44032: 0xA347, + 51577 - 44032: 0xA348, + 51578 - 44032: 0xA349, + 51579 - 44032: 0xA34A, + 51580 - 44032: 0xC1ED, + 51581 - 44032: 0xA34B, + 51582 - 44032: 0xA34C, + 51583 - 44032: 0xA34D, + 51584 - 44032: 0xA34E, + 51585 - 44032: 0xA34F, + 51586 - 44032: 0xA350, + 51587 - 44032: 0xA351, + 51588 - 44032: 0xA352, + 51589 - 44032: 0xA353, + 51590 - 44032: 0xA354, + 51591 - 44032: 0xA355, + 51592 - 44032: 0xC1EE, + 51593 - 44032: 0xC1EF, + 51594 - 44032: 0xA356, + 51595 - 44032: 0xA357, + 51596 - 44032: 0xC1F0, + 51597 - 44032: 0xA358, + 51598 - 44032: 0xA359, + 51599 - 44032: 0xA35A, + 51600 - 44032: 0xC1F1, + 51601 - 44032: 0xA361, + 51602 - 44032: 0xA362, + 51603 - 44032: 0xA363, + 51604 - 44032: 0xA364, + 51605 - 44032: 0xA365, + 51606 - 44032: 0xA366, + 51607 - 44032: 0xA367, + 51608 - 44032: 0xC1F2, + 51609 - 44032: 0xC1F3, + 51610 - 44032: 0xA368, + 51611 - 44032: 0xC1F4, + 51612 - 44032: 0xA369, + 51613 - 44032: 0xC1F5, + 51614 - 44032: 0xA36A, + 51615 - 44032: 0xA36B, + 51616 - 44032: 0xA36C, + 51617 - 44032: 0xA36D, + 51618 - 44032: 0xA36E, + 51619 - 44032: 0xA36F, + 51620 - 44032: 0xA370, + 51621 - 44032: 0xA371, + 51622 - 44032: 0xA372, + 51623 - 44032: 0xA373, + 51624 - 44032: 0xA374, + 51625 - 44032: 0xA375, + 51626 - 44032: 0xA376, + 51627 - 44032: 0xA377, + 51628 - 44032: 0xA378, + 51629 - 44032: 0xA379, + 51630 - 44032: 0xA37A, + 51631 - 44032: 0xA381, + 51632 - 44032: 0xA382, + 51633 - 44032: 0xA383, + 51634 - 44032: 0xA384, + 51635 - 44032: 0xA385, + 51636 - 44032: 0xA386, + 51637 - 44032: 0xA387, + 51638 - 44032: 0xA388, + 51639 - 44032: 0xA389, + 51640 - 44032: 0xA38A, + 51641 - 44032: 0xA38B, + 51642 - 44032: 0xA38C, + 51643 - 44032: 0xA38D, + 51644 - 44032: 0xA38E, + 51645 - 44032: 0xA38F, + 51646 - 44032: 0xA390, + 51647 - 44032: 0xA391, + 51648 - 44032: 0xC1F6, + 51649 - 44032: 0xC1F7, + 51650 - 44032: 0xA392, + 51651 - 44032: 0xA393, + 51652 - 44032: 0xC1F8, + 51653 - 44032: 0xA394, + 51654 - 44032: 0xA395, + 51655 - 44032: 0xC1F9, + 51656 - 44032: 0xC1FA, + 51657 - 44032: 0xA396, + 51658 - 44032: 0xC1FB, + 51659 - 44032: 0xA397, + 51660 - 44032: 0xA398, + 51661 - 44032: 0xA399, + 51662 - 44032: 0xA39A, + 51663 - 44032: 0xA39B, + 51664 - 44032: 0xC1FC, + 51665 - 44032: 0xC1FD, + 51666 - 44032: 0xA39C, + 51667 - 44032: 0xC1FE, + 51668 - 44032: 0xA39D, + 51669 - 44032: 0xC2A1, + 51670 - 44032: 0xC2A2, + 51671 - 44032: 0xA39E, + 51672 - 44032: 0xA39F, + 51673 - 44032: 0xC2A3, + 51674 - 44032: 0xC2A4, + 51675 - 44032: 0xA3A0, + 51676 - 44032: 0xC2A5, + 51677 - 44032: 0xC2A6, + 51678 - 44032: 0xA441, + 51679 - 44032: 0xA442, + 51680 - 44032: 0xC2A7, + 51681 - 44032: 0xA443, + 51682 - 44032: 0xC2A8, + 51683 - 44032: 0xA444, + 51684 - 44032: 0xC2A9, + 51685 - 44032: 0xA445, + 51686 - 44032: 0xA446, + 51687 - 44032: 0xC2AA, + 51688 - 44032: 0xA447, + 51689 - 44032: 0xA448, + 51690 - 44032: 0xA449, + 51691 - 44032: 0xA44A, + 51692 - 44032: 0xC2AB, + 51693 - 44032: 0xC2AC, + 51694 - 44032: 0xA44B, + 51695 - 44032: 0xC2AD, + 51696 - 44032: 0xC2AE, + 51697 - 44032: 0xC2AF, + 51698 - 44032: 0xA44C, + 51699 - 44032: 0xA44D, + 51700 - 44032: 0xA44E, + 51701 - 44032: 0xA44F, + 51702 - 44032: 0xA450, + 51703 - 44032: 0xA451, + 51704 - 44032: 0xC2B0, + 51705 - 44032: 0xC2B1, + 51706 - 44032: 0xA452, + 51707 - 44032: 0xA453, + 51708 - 44032: 0xC2B2, + 51709 - 44032: 0xA454, + 51710 - 44032: 0xA455, + 51711 - 44032: 0xA456, + 51712 - 44032: 0xC2B3, + 51713 - 44032: 0xA457, + 51714 - 44032: 0xA458, + 51715 - 44032: 0xA459, + 51716 - 44032: 0xA45A, + 51717 - 44032: 0xA461, + 51718 - 44032: 0xA462, + 51719 - 44032: 0xA463, + 51720 - 44032: 0xC2B4, + 51721 - 44032: 0xC2B5, + 51722 - 44032: 0xA464, + 51723 - 44032: 0xC2B6, + 51724 - 44032: 0xC2B7, + 51725 - 44032: 0xC2B8, + 51726 - 44032: 0xA465, + 51727 - 44032: 0xA466, + 51728 - 44032: 0xA467, + 51729 - 44032: 0xA468, + 51730 - 44032: 0xA469, + 51731 - 44032: 0xA46A, + 51732 - 44032: 0xC2B9, + 51733 - 44032: 0xA46B, + 51734 - 44032: 0xA46C, + 51735 - 44032: 0xA46D, + 51736 - 44032: 0xC2BA, + 51737 - 44032: 0xA46E, + 51738 - 44032: 0xA46F, + 51739 - 44032: 0xA470, + 51740 - 44032: 0xA471, + 51741 - 44032: 0xA472, + 51742 - 44032: 0xA473, + 51743 - 44032: 0xA474, + 51744 - 44032: 0xA475, + 51745 - 44032: 0xA476, + 51746 - 44032: 0xA477, + 51747 - 44032: 0xA478, + 51748 - 44032: 0xA479, + 51749 - 44032: 0xA47A, + 51750 - 44032: 0xA481, + 51751 - 44032: 0xA482, + 51752 - 44032: 0xA483, + 51753 - 44032: 0xC2BB, + 51754 - 44032: 0xA484, + 51755 - 44032: 0xA485, + 51756 - 44032: 0xA486, + 51757 - 44032: 0xA487, + 51758 - 44032: 0xA488, + 51759 - 44032: 0xA489, + 51760 - 44032: 0xA48A, + 51761 - 44032: 0xA48B, + 51762 - 44032: 0xA48C, + 51763 - 44032: 0xA48D, + 51764 - 44032: 0xA48E, + 51765 - 44032: 0xA48F, + 51766 - 44032: 0xA490, + 51767 - 44032: 0xA491, + 51768 - 44032: 0xA492, + 51769 - 44032: 0xA493, + 51770 - 44032: 0xA494, + 51771 - 44032: 0xA495, + 51772 - 44032: 0xA496, + 51773 - 44032: 0xA497, + 51774 - 44032: 0xA498, + 51775 - 44032: 0xA499, + 51776 - 44032: 0xA49A, + 51777 - 44032: 0xA49B, + 51778 - 44032: 0xA49C, + 51779 - 44032: 0xA49D, + 51780 - 44032: 0xA49E, + 51781 - 44032: 0xA49F, + 51782 - 44032: 0xA4A0, + 51783 - 44032: 0xA541, + 51784 - 44032: 0xA542, + 51785 - 44032: 0xA543, + 51786 - 44032: 0xA544, + 51787 - 44032: 0xA545, + 51788 - 44032: 0xC2BC, + 51789 - 44032: 0xC2BD, + 51790 - 44032: 0xA546, + 51791 - 44032: 0xA547, + 51792 - 44032: 0xC2BE, + 51793 - 44032: 0xA548, + 51794 - 44032: 0xA549, + 51795 - 44032: 0xA54A, + 51796 - 44032: 0xC2BF, + 51797 - 44032: 0xA54B, + 51798 - 44032: 0xA54C, + 51799 - 44032: 0xA54D, + 51800 - 44032: 0xA54E, + 51801 - 44032: 0xA54F, + 51802 - 44032: 0xA550, + 51803 - 44032: 0xA551, + 51804 - 44032: 0xC2C0, + 51805 - 44032: 0xC2C1, + 51806 - 44032: 0xA552, + 51807 - 44032: 0xC2C2, + 51808 - 44032: 0xC2C3, + 51809 - 44032: 0xC2C4, + 51810 - 44032: 0xA553, + 51811 - 44032: 0xA554, + 51812 - 44032: 0xA555, + 51813 - 44032: 0xA556, + 51814 - 44032: 0xA557, + 51815 - 44032: 0xA558, + 51816 - 44032: 0xC2C5, + 51817 - 44032: 0xA559, + 51818 - 44032: 0xA55A, + 51819 - 44032: 0xA561, + 51820 - 44032: 0xA562, + 51821 - 44032: 0xA563, + 51822 - 44032: 0xA564, + 51823 - 44032: 0xA565, + 51824 - 44032: 0xA566, + 51825 - 44032: 0xA567, + 51826 - 44032: 0xA568, + 51827 - 44032: 0xA569, + 51828 - 44032: 0xA56A, + 51829 - 44032: 0xA56B, + 51830 - 44032: 0xA56C, + 51831 - 44032: 0xA56D, + 51832 - 44032: 0xA56E, + 51833 - 44032: 0xA56F, + 51834 - 44032: 0xA570, + 51835 - 44032: 0xA571, + 51836 - 44032: 0xA572, + 51837 - 44032: 0xC2C6, + 51838 - 44032: 0xA573, + 51839 - 44032: 0xA574, + 51840 - 44032: 0xA575, + 51841 - 44032: 0xA576, + 51842 - 44032: 0xA577, + 51843 - 44032: 0xA578, + 51844 - 44032: 0xC2C7, + 51845 - 44032: 0xA579, + 51846 - 44032: 0xA57A, + 51847 - 44032: 0xA581, + 51848 - 44032: 0xA582, + 51849 - 44032: 0xA583, + 51850 - 44032: 0xA584, + 51851 - 44032: 0xA585, + 51852 - 44032: 0xA586, + 51853 - 44032: 0xA587, + 51854 - 44032: 0xA588, + 51855 - 44032: 0xA589, + 51856 - 44032: 0xA58A, + 51857 - 44032: 0xA58B, + 51858 - 44032: 0xA58C, + 51859 - 44032: 0xA58D, + 51860 - 44032: 0xA58E, + 51861 - 44032: 0xA58F, + 51862 - 44032: 0xA590, + 51863 - 44032: 0xA591, + 51864 - 44032: 0xC2C8, + 51865 - 44032: 0xA592, + 51866 - 44032: 0xA593, + 51867 - 44032: 0xA594, + 51868 - 44032: 0xA595, + 51869 - 44032: 0xA596, + 51870 - 44032: 0xA597, + 51871 - 44032: 0xA598, + 51872 - 44032: 0xA599, + 51873 - 44032: 0xA59A, + 51874 - 44032: 0xA59B, + 51875 - 44032: 0xA59C, + 51876 - 44032: 0xA59D, + 51877 - 44032: 0xA59E, + 51878 - 44032: 0xA59F, + 51879 - 44032: 0xA5A0, + 51880 - 44032: 0xA641, + 51881 - 44032: 0xA642, + 51882 - 44032: 0xA643, + 51883 - 44032: 0xA644, + 51884 - 44032: 0xA645, + 51885 - 44032: 0xA646, + 51886 - 44032: 0xA647, + 51887 - 44032: 0xA648, + 51888 - 44032: 0xA649, + 51889 - 44032: 0xA64A, + 51890 - 44032: 0xA64B, + 51891 - 44032: 0xA64C, + 51892 - 44032: 0xA64D, + 51893 - 44032: 0xA64E, + 51894 - 44032: 0xA64F, + 51895 - 44032: 0xA650, + 51896 - 44032: 0xA651, + 51897 - 44032: 0xA652, + 51898 - 44032: 0xA653, + 51899 - 44032: 0xA654, + 51900 - 44032: 0xC2C9, + 51901 - 44032: 0xC2CA, + 51902 - 44032: 0xA655, + 51903 - 44032: 0xA656, + 51904 - 44032: 0xC2CB, + 51905 - 44032: 0xA657, + 51906 - 44032: 0xA658, + 51907 - 44032: 0xA659, + 51908 - 44032: 0xC2CC, + 51909 - 44032: 0xA65A, + 51910 - 44032: 0xA661, + 51911 - 44032: 0xA662, + 51912 - 44032: 0xA663, + 51913 - 44032: 0xA664, + 51914 - 44032: 0xA665, + 51915 - 44032: 0xA666, + 51916 - 44032: 0xC2CD, + 51917 - 44032: 0xC2CE, + 51918 - 44032: 0xA667, + 51919 - 44032: 0xC2CF, + 51920 - 44032: 0xA668, + 51921 - 44032: 0xC2D0, + 51922 - 44032: 0xA669, + 51923 - 44032: 0xC2D1, + 51924 - 44032: 0xA66A, + 51925 - 44032: 0xA66B, + 51926 - 44032: 0xA66C, + 51927 - 44032: 0xA66D, + 51928 - 44032: 0xC2D2, + 51929 - 44032: 0xC2D3, + 51930 - 44032: 0xA66E, + 51931 - 44032: 0xA66F, + 51932 - 44032: 0xA670, + 51933 - 44032: 0xA671, + 51934 - 44032: 0xA672, + 51935 - 44032: 0xA673, + 51936 - 44032: 0xC2D4, + 51937 - 44032: 0xA674, + 51938 - 44032: 0xA675, + 51939 - 44032: 0xA676, + 51940 - 44032: 0xA677, + 51941 - 44032: 0xA678, + 51942 - 44032: 0xA679, + 51943 - 44032: 0xA67A, + 51944 - 44032: 0xA681, + 51945 - 44032: 0xA682, + 51946 - 44032: 0xA683, + 51947 - 44032: 0xA684, + 51948 - 44032: 0xC2D5, + 51949 - 44032: 0xA685, + 51950 - 44032: 0xA686, + 51951 - 44032: 0xA687, + 51952 - 44032: 0xA688, + 51953 - 44032: 0xA689, + 51954 - 44032: 0xA68A, + 51955 - 44032: 0xA68B, + 51956 - 44032: 0xC2D6, + 51957 - 44032: 0xA68C, + 51958 - 44032: 0xA68D, + 51959 - 44032: 0xA68E, + 51960 - 44032: 0xA68F, + 51961 - 44032: 0xA690, + 51962 - 44032: 0xA691, + 51963 - 44032: 0xA692, + 51964 - 44032: 0xA693, + 51965 - 44032: 0xA694, + 51966 - 44032: 0xA695, + 51967 - 44032: 0xA696, + 51968 - 44032: 0xA697, + 51969 - 44032: 0xA698, + 51970 - 44032: 0xA699, + 51971 - 44032: 0xA69A, + 51972 - 44032: 0xA69B, + 51973 - 44032: 0xA69C, + 51974 - 44032: 0xA69D, + 51975 - 44032: 0xA69E, + 51976 - 44032: 0xC2D7, + 51977 - 44032: 0xA69F, + 51978 - 44032: 0xA6A0, + 51979 - 44032: 0xA741, + 51980 - 44032: 0xA742, + 51981 - 44032: 0xA743, + 51982 - 44032: 0xA744, + 51983 - 44032: 0xA745, + 51984 - 44032: 0xC2D8, + 51985 - 44032: 0xA746, + 51986 - 44032: 0xA747, + 51987 - 44032: 0xA748, + 51988 - 44032: 0xC2D9, + 51989 - 44032: 0xA749, + 51990 - 44032: 0xA74A, + 51991 - 44032: 0xA74B, + 51992 - 44032: 0xC2DA, + 51993 - 44032: 0xA74C, + 51994 - 44032: 0xA74D, + 51995 - 44032: 0xA74E, + 51996 - 44032: 0xA74F, + 51997 - 44032: 0xA750, + 51998 - 44032: 0xA751, + 51999 - 44032: 0xA752, + 52000 - 44032: 0xC2DB, + 52001 - 44032: 0xC2DC, + 52002 - 44032: 0xA753, + 52003 - 44032: 0xA754, + 52004 - 44032: 0xA755, + 52005 - 44032: 0xA756, + 52006 - 44032: 0xA757, + 52007 - 44032: 0xA758, + 52008 - 44032: 0xA759, + 52009 - 44032: 0xA75A, + 52010 - 44032: 0xA761, + 52011 - 44032: 0xA762, + 52012 - 44032: 0xA763, + 52013 - 44032: 0xA764, + 52014 - 44032: 0xA765, + 52015 - 44032: 0xA766, + 52016 - 44032: 0xA767, + 52017 - 44032: 0xA768, + 52018 - 44032: 0xA769, + 52019 - 44032: 0xA76A, + 52020 - 44032: 0xA76B, + 52021 - 44032: 0xA76C, + 52022 - 44032: 0xA76D, + 52023 - 44032: 0xA76E, + 52024 - 44032: 0xA76F, + 52025 - 44032: 0xA770, + 52026 - 44032: 0xA771, + 52027 - 44032: 0xA772, + 52028 - 44032: 0xA773, + 52029 - 44032: 0xA774, + 52030 - 44032: 0xA775, + 52031 - 44032: 0xA776, + 52032 - 44032: 0xA777, + 52033 - 44032: 0xC2DD, + 52034 - 44032: 0xA778, + 52035 - 44032: 0xA779, + 52036 - 44032: 0xA77A, + 52037 - 44032: 0xA781, + 52038 - 44032: 0xA782, + 52039 - 44032: 0xA783, + 52040 - 44032: 0xC2DE, + 52041 - 44032: 0xC2DF, + 52042 - 44032: 0xA784, + 52043 - 44032: 0xA785, + 52044 - 44032: 0xC2E0, + 52045 - 44032: 0xA786, + 52046 - 44032: 0xA787, + 52047 - 44032: 0xA788, + 52048 - 44032: 0xC2E1, + 52049 - 44032: 0xA789, + 52050 - 44032: 0xA78A, + 52051 - 44032: 0xA78B, + 52052 - 44032: 0xA78C, + 52053 - 44032: 0xA78D, + 52054 - 44032: 0xA78E, + 52055 - 44032: 0xA78F, + 52056 - 44032: 0xC2E2, + 52057 - 44032: 0xC2E3, + 52058 - 44032: 0xA790, + 52059 - 44032: 0xA791, + 52060 - 44032: 0xA792, + 52061 - 44032: 0xC2E4, + 52062 - 44032: 0xA793, + 52063 - 44032: 0xA794, + 52064 - 44032: 0xA795, + 52065 - 44032: 0xA796, + 52066 - 44032: 0xA797, + 52067 - 44032: 0xA798, + 52068 - 44032: 0xC2E5, + 52069 - 44032: 0xA799, + 52070 - 44032: 0xA79A, + 52071 - 44032: 0xA79B, + 52072 - 44032: 0xA79C, + 52073 - 44032: 0xA79D, + 52074 - 44032: 0xA79E, + 52075 - 44032: 0xA79F, + 52076 - 44032: 0xA7A0, + 52077 - 44032: 0xA841, + 52078 - 44032: 0xA842, + 52079 - 44032: 0xA843, + 52080 - 44032: 0xA844, + 52081 - 44032: 0xA845, + 52082 - 44032: 0xA846, + 52083 - 44032: 0xA847, + 52084 - 44032: 0xA848, + 52085 - 44032: 0xA849, + 52086 - 44032: 0xA84A, + 52087 - 44032: 0xA84B, + 52088 - 44032: 0xC2E6, + 52089 - 44032: 0xC2E7, + 52090 - 44032: 0xA84C, + 52091 - 44032: 0xA84D, + 52092 - 44032: 0xA84E, + 52093 - 44032: 0xA84F, + 52094 - 44032: 0xA850, + 52095 - 44032: 0xA851, + 52096 - 44032: 0xA852, + 52097 - 44032: 0xA853, + 52098 - 44032: 0xA854, + 52099 - 44032: 0xA855, + 52100 - 44032: 0xA856, + 52101 - 44032: 0xA857, + 52102 - 44032: 0xA858, + 52103 - 44032: 0xA859, + 52104 - 44032: 0xA85A, + 52105 - 44032: 0xA861, + 52106 - 44032: 0xA862, + 52107 - 44032: 0xA863, + 52108 - 44032: 0xA864, + 52109 - 44032: 0xA865, + 52110 - 44032: 0xA866, + 52111 - 44032: 0xA867, + 52112 - 44032: 0xA868, + 52113 - 44032: 0xA869, + 52114 - 44032: 0xA86A, + 52115 - 44032: 0xA86B, + 52116 - 44032: 0xA86C, + 52117 - 44032: 0xA86D, + 52118 - 44032: 0xA86E, + 52119 - 44032: 0xA86F, + 52120 - 44032: 0xA870, + 52121 - 44032: 0xA871, + 52122 - 44032: 0xA872, + 52123 - 44032: 0xA873, + 52124 - 44032: 0xC2E8, + 52125 - 44032: 0xA874, + 52126 - 44032: 0xA875, + 52127 - 44032: 0xA876, + 52128 - 44032: 0xA877, + 52129 - 44032: 0xA878, + 52130 - 44032: 0xA879, + 52131 - 44032: 0xA87A, + 52132 - 44032: 0xA881, + 52133 - 44032: 0xA882, + 52134 - 44032: 0xA883, + 52135 - 44032: 0xA884, + 52136 - 44032: 0xA885, + 52137 - 44032: 0xA886, + 52138 - 44032: 0xA887, + 52139 - 44032: 0xA888, + 52140 - 44032: 0xA889, + 52141 - 44032: 0xA88A, + 52142 - 44032: 0xA88B, + 52143 - 44032: 0xA88C, + 52144 - 44032: 0xA88D, + 52145 - 44032: 0xA88E, + 52146 - 44032: 0xA88F, + 52147 - 44032: 0xA890, + 52148 - 44032: 0xA891, + 52149 - 44032: 0xA892, + 52150 - 44032: 0xA893, + 52151 - 44032: 0xA894, + 52152 - 44032: 0xC2E9, + 52153 - 44032: 0xA895, + 52154 - 44032: 0xA896, + 52155 - 44032: 0xA897, + 52156 - 44032: 0xA898, + 52157 - 44032: 0xA899, + 52158 - 44032: 0xA89A, + 52159 - 44032: 0xA89B, + 52160 - 44032: 0xA89C, + 52161 - 44032: 0xA89D, + 52162 - 44032: 0xA89E, + 52163 - 44032: 0xA89F, + 52164 - 44032: 0xA8A0, + 52165 - 44032: 0xA941, + 52166 - 44032: 0xA942, + 52167 - 44032: 0xA943, + 52168 - 44032: 0xA944, + 52169 - 44032: 0xA945, + 52170 - 44032: 0xA946, + 52171 - 44032: 0xA947, + 52172 - 44032: 0xA948, + 52173 - 44032: 0xA949, + 52174 - 44032: 0xA94A, + 52175 - 44032: 0xA94B, + 52176 - 44032: 0xA94C, + 52177 - 44032: 0xA94D, + 52178 - 44032: 0xA94E, + 52179 - 44032: 0xA94F, + 52180 - 44032: 0xC2EA, + 52181 - 44032: 0xA950, + 52182 - 44032: 0xA951, + 52183 - 44032: 0xA952, + 52184 - 44032: 0xA953, + 52185 - 44032: 0xA954, + 52186 - 44032: 0xA955, + 52187 - 44032: 0xA956, + 52188 - 44032: 0xA957, + 52189 - 44032: 0xA958, + 52190 - 44032: 0xA959, + 52191 - 44032: 0xA95A, + 52192 - 44032: 0xA961, + 52193 - 44032: 0xA962, + 52194 - 44032: 0xA963, + 52195 - 44032: 0xA964, + 52196 - 44032: 0xC2EB, + 52197 - 44032: 0xA965, + 52198 - 44032: 0xA966, + 52199 - 44032: 0xC2EC, + 52200 - 44032: 0xA967, + 52201 - 44032: 0xC2ED, + 52202 - 44032: 0xA968, + 52203 - 44032: 0xA969, + 52204 - 44032: 0xA96A, + 52205 - 44032: 0xA96B, + 52206 - 44032: 0xA96C, + 52207 - 44032: 0xA96D, + 52208 - 44032: 0xA96E, + 52209 - 44032: 0xA96F, + 52210 - 44032: 0xA970, + 52211 - 44032: 0xA971, + 52212 - 44032: 0xA972, + 52213 - 44032: 0xA973, + 52214 - 44032: 0xA974, + 52215 - 44032: 0xA975, + 52216 - 44032: 0xA976, + 52217 - 44032: 0xA977, + 52218 - 44032: 0xA978, + 52219 - 44032: 0xA979, + 52220 - 44032: 0xA97A, + 52221 - 44032: 0xA981, + 52222 - 44032: 0xA982, + 52223 - 44032: 0xA983, + 52224 - 44032: 0xA984, + 52225 - 44032: 0xA985, + 52226 - 44032: 0xA986, + 52227 - 44032: 0xA987, + 52228 - 44032: 0xA988, + 52229 - 44032: 0xA989, + 52230 - 44032: 0xA98A, + 52231 - 44032: 0xA98B, + 52232 - 44032: 0xA98C, + 52233 - 44032: 0xA98D, + 52234 - 44032: 0xA98E, + 52235 - 44032: 0xA98F, + 52236 - 44032: 0xC2EE, + 52237 - 44032: 0xC2EF, + 52238 - 44032: 0xA990, + 52239 - 44032: 0xA991, + 52240 - 44032: 0xC2F0, + 52241 - 44032: 0xA992, + 52242 - 44032: 0xA993, + 52243 - 44032: 0xA994, + 52244 - 44032: 0xC2F1, + 52245 - 44032: 0xA995, + 52246 - 44032: 0xA996, + 52247 - 44032: 0xA997, + 52248 - 44032: 0xA998, + 52249 - 44032: 0xA999, + 52250 - 44032: 0xA99A, + 52251 - 44032: 0xA99B, + 52252 - 44032: 0xC2F2, + 52253 - 44032: 0xC2F3, + 52254 - 44032: 0xA99C, + 52255 - 44032: 0xA99D, + 52256 - 44032: 0xA99E, + 52257 - 44032: 0xC2F4, + 52258 - 44032: 0xC2F5, + 52259 - 44032: 0xA99F, + 52260 - 44032: 0xA9A0, + 52261 - 44032: 0xAA41, + 52262 - 44032: 0xAA42, + 52263 - 44032: 0xC2F6, + 52264 - 44032: 0xC2F7, + 52265 - 44032: 0xC2F8, + 52266 - 44032: 0xAA43, + 52267 - 44032: 0xAA44, + 52268 - 44032: 0xC2F9, + 52269 - 44032: 0xAA45, + 52270 - 44032: 0xC2FA, + 52271 - 44032: 0xAA46, + 52272 - 44032: 0xC2FB, + 52273 - 44032: 0xAA47, + 52274 - 44032: 0xAA48, + 52275 - 44032: 0xAA49, + 52276 - 44032: 0xAA4A, + 52277 - 44032: 0xAA4B, + 52278 - 44032: 0xAA4C, + 52279 - 44032: 0xAA4D, + 52280 - 44032: 0xC2FC, + 52281 - 44032: 0xC2FD, + 52282 - 44032: 0xAA4E, + 52283 - 44032: 0xC2FE, + 52284 - 44032: 0xC3A1, + 52285 - 44032: 0xC3A2, + 52286 - 44032: 0xC3A3, + 52287 - 44032: 0xAA4F, + 52288 - 44032: 0xAA50, + 52289 - 44032: 0xAA51, + 52290 - 44032: 0xAA52, + 52291 - 44032: 0xAA53, + 52292 - 44032: 0xC3A4, + 52293 - 44032: 0xC3A5, + 52294 - 44032: 0xAA54, + 52295 - 44032: 0xAA55, + 52296 - 44032: 0xC3A6, + 52297 - 44032: 0xAA56, + 52298 - 44032: 0xAA57, + 52299 - 44032: 0xAA58, + 52300 - 44032: 0xC3A7, + 52301 - 44032: 0xAA59, + 52302 - 44032: 0xAA5A, + 52303 - 44032: 0xAA61, + 52304 - 44032: 0xAA62, + 52305 - 44032: 0xAA63, + 52306 - 44032: 0xAA64, + 52307 - 44032: 0xAA65, + 52308 - 44032: 0xC3A8, + 52309 - 44032: 0xC3A9, + 52310 - 44032: 0xAA66, + 52311 - 44032: 0xC3AA, + 52312 - 44032: 0xC3AB, + 52313 - 44032: 0xC3AC, + 52314 - 44032: 0xAA67, + 52315 - 44032: 0xAA68, + 52316 - 44032: 0xAA69, + 52317 - 44032: 0xAA6A, + 52318 - 44032: 0xAA6B, + 52319 - 44032: 0xAA6C, + 52320 - 44032: 0xC3AD, + 52321 - 44032: 0xAA6D, + 52322 - 44032: 0xAA6E, + 52323 - 44032: 0xAA6F, + 52324 - 44032: 0xC3AE, + 52325 - 44032: 0xAA70, + 52326 - 44032: 0xC3AF, + 52327 - 44032: 0xAA71, + 52328 - 44032: 0xC3B0, + 52329 - 44032: 0xAA72, + 52330 - 44032: 0xAA73, + 52331 - 44032: 0xAA74, + 52332 - 44032: 0xAA75, + 52333 - 44032: 0xAA76, + 52334 - 44032: 0xAA77, + 52335 - 44032: 0xAA78, + 52336 - 44032: 0xC3B1, + 52337 - 44032: 0xAA79, + 52338 - 44032: 0xAA7A, + 52339 - 44032: 0xAA81, + 52340 - 44032: 0xAA82, + 52341 - 44032: 0xC3B2, + 52342 - 44032: 0xAA83, + 52343 - 44032: 0xAA84, + 52344 - 44032: 0xAA85, + 52345 - 44032: 0xAA86, + 52346 - 44032: 0xAA87, + 52347 - 44032: 0xAA88, + 52348 - 44032: 0xAA89, + 52349 - 44032: 0xAA8A, + 52350 - 44032: 0xAA8B, + 52351 - 44032: 0xAA8C, + 52352 - 44032: 0xAA8D, + 52353 - 44032: 0xAA8E, + 52354 - 44032: 0xAA8F, + 52355 - 44032: 0xAA90, + 52356 - 44032: 0xAA91, + 52357 - 44032: 0xAA92, + 52358 - 44032: 0xAA93, + 52359 - 44032: 0xAA94, + 52360 - 44032: 0xAA95, + 52361 - 44032: 0xAA96, + 52362 - 44032: 0xAA97, + 52363 - 44032: 0xAA98, + 52364 - 44032: 0xAA99, + 52365 - 44032: 0xAA9A, + 52366 - 44032: 0xAA9B, + 52367 - 44032: 0xAA9C, + 52368 - 44032: 0xAA9D, + 52369 - 44032: 0xAA9E, + 52370 - 44032: 0xAA9F, + 52371 - 44032: 0xAAA0, + 52372 - 44032: 0xAB41, + 52373 - 44032: 0xAB42, + 52374 - 44032: 0xAB43, + 52375 - 44032: 0xAB44, + 52376 - 44032: 0xC3B3, + 52377 - 44032: 0xC3B4, + 52378 - 44032: 0xAB45, + 52379 - 44032: 0xAB46, + 52380 - 44032: 0xC3B5, + 52381 - 44032: 0xAB47, + 52382 - 44032: 0xAB48, + 52383 - 44032: 0xAB49, + 52384 - 44032: 0xC3B6, + 52385 - 44032: 0xAB4A, + 52386 - 44032: 0xAB4B, + 52387 - 44032: 0xAB4C, + 52388 - 44032: 0xAB4D, + 52389 - 44032: 0xAB4E, + 52390 - 44032: 0xAB4F, + 52391 - 44032: 0xAB50, + 52392 - 44032: 0xC3B7, + 52393 - 44032: 0xC3B8, + 52394 - 44032: 0xAB51, + 52395 - 44032: 0xC3B9, + 52396 - 44032: 0xC3BA, + 52397 - 44032: 0xC3BB, + 52398 - 44032: 0xAB52, + 52399 - 44032: 0xAB53, + 52400 - 44032: 0xAB54, + 52401 - 44032: 0xAB55, + 52402 - 44032: 0xAB56, + 52403 - 44032: 0xAB57, + 52404 - 44032: 0xC3BC, + 52405 - 44032: 0xC3BD, + 52406 - 44032: 0xAB58, + 52407 - 44032: 0xAB59, + 52408 - 44032: 0xC3BE, + 52409 - 44032: 0xAB5A, + 52410 - 44032: 0xAB61, + 52411 - 44032: 0xAB62, + 52412 - 44032: 0xC3BF, + 52413 - 44032: 0xAB63, + 52414 - 44032: 0xAB64, + 52415 - 44032: 0xAB65, + 52416 - 44032: 0xAB66, + 52417 - 44032: 0xAB67, + 52418 - 44032: 0xAB68, + 52419 - 44032: 0xAB69, + 52420 - 44032: 0xC3C0, + 52421 - 44032: 0xC3C1, + 52422 - 44032: 0xAB6A, + 52423 - 44032: 0xC3C2, + 52424 - 44032: 0xAB6B, + 52425 - 44032: 0xC3C3, + 52426 - 44032: 0xAB6C, + 52427 - 44032: 0xAB6D, + 52428 - 44032: 0xAB6E, + 52429 - 44032: 0xAB6F, + 52430 - 44032: 0xAB70, + 52431 - 44032: 0xAB71, + 52432 - 44032: 0xC3C4, + 52433 - 44032: 0xAB72, + 52434 - 44032: 0xAB73, + 52435 - 44032: 0xAB74, + 52436 - 44032: 0xC3C5, + 52437 - 44032: 0xAB75, + 52438 - 44032: 0xAB76, + 52439 - 44032: 0xAB77, + 52440 - 44032: 0xAB78, + 52441 - 44032: 0xAB79, + 52442 - 44032: 0xAB7A, + 52443 - 44032: 0xAB81, + 52444 - 44032: 0xAB82, + 52445 - 44032: 0xAB83, + 52446 - 44032: 0xAB84, + 52447 - 44032: 0xAB85, + 52448 - 44032: 0xAB86, + 52449 - 44032: 0xAB87, + 52450 - 44032: 0xAB88, + 52451 - 44032: 0xAB89, + 52452 - 44032: 0xC3C6, + 52453 - 44032: 0xAB8A, + 52454 - 44032: 0xAB8B, + 52455 - 44032: 0xAB8C, + 52456 - 44032: 0xAB8D, + 52457 - 44032: 0xAB8E, + 52458 - 44032: 0xAB8F, + 52459 - 44032: 0xAB90, + 52460 - 44032: 0xC3C7, + 52461 - 44032: 0xAB91, + 52462 - 44032: 0xAB92, + 52463 - 44032: 0xAB93, + 52464 - 44032: 0xC3C8, + 52465 - 44032: 0xAB94, + 52466 - 44032: 0xAB95, + 52467 - 44032: 0xAB96, + 52468 - 44032: 0xAB97, + 52469 - 44032: 0xAB98, + 52470 - 44032: 0xAB99, + 52471 - 44032: 0xAB9A, + 52472 - 44032: 0xAB9B, + 52473 - 44032: 0xAB9C, + 52474 - 44032: 0xAB9D, + 52475 - 44032: 0xAB9E, + 52476 - 44032: 0xAB9F, + 52477 - 44032: 0xABA0, + 52478 - 44032: 0xAC41, + 52479 - 44032: 0xAC42, + 52480 - 44032: 0xAC43, + 52481 - 44032: 0xC3C9, + 52482 - 44032: 0xAC44, + 52483 - 44032: 0xAC45, + 52484 - 44032: 0xAC46, + 52485 - 44032: 0xAC47, + 52486 - 44032: 0xAC48, + 52487 - 44032: 0xAC49, + 52488 - 44032: 0xC3CA, + 52489 - 44032: 0xC3CB, + 52490 - 44032: 0xAC4A, + 52491 - 44032: 0xAC4B, + 52492 - 44032: 0xC3CC, + 52493 - 44032: 0xAC4C, + 52494 - 44032: 0xAC4D, + 52495 - 44032: 0xAC4E, + 52496 - 44032: 0xC3CD, + 52497 - 44032: 0xAC4F, + 52498 - 44032: 0xAC50, + 52499 - 44032: 0xAC51, + 52500 - 44032: 0xAC52, + 52501 - 44032: 0xAC53, + 52502 - 44032: 0xAC54, + 52503 - 44032: 0xAC55, + 52504 - 44032: 0xC3CE, + 52505 - 44032: 0xC3CF, + 52506 - 44032: 0xAC56, + 52507 - 44032: 0xC3D0, + 52508 - 44032: 0xAC57, + 52509 - 44032: 0xC3D1, + 52510 - 44032: 0xAC58, + 52511 - 44032: 0xAC59, + 52512 - 44032: 0xAC5A, + 52513 - 44032: 0xAC61, + 52514 - 44032: 0xAC62, + 52515 - 44032: 0xAC63, + 52516 - 44032: 0xC3D2, + 52517 - 44032: 0xAC64, + 52518 - 44032: 0xAC65, + 52519 - 44032: 0xAC66, + 52520 - 44032: 0xC3D3, + 52521 - 44032: 0xAC67, + 52522 - 44032: 0xAC68, + 52523 - 44032: 0xAC69, + 52524 - 44032: 0xC3D4, + 52525 - 44032: 0xAC6A, + 52526 - 44032: 0xAC6B, + 52527 - 44032: 0xAC6C, + 52528 - 44032: 0xAC6D, + 52529 - 44032: 0xAC6E, + 52530 - 44032: 0xAC6F, + 52531 - 44032: 0xAC70, + 52532 - 44032: 0xAC71, + 52533 - 44032: 0xAC72, + 52534 - 44032: 0xAC73, + 52535 - 44032: 0xAC74, + 52536 - 44032: 0xAC75, + 52537 - 44032: 0xC3D5, + 52538 - 44032: 0xAC76, + 52539 - 44032: 0xAC77, + 52540 - 44032: 0xAC78, + 52541 - 44032: 0xAC79, + 52542 - 44032: 0xAC7A, + 52543 - 44032: 0xAC81, + 52544 - 44032: 0xAC82, + 52545 - 44032: 0xAC83, + 52546 - 44032: 0xAC84, + 52547 - 44032: 0xAC85, + 52548 - 44032: 0xAC86, + 52549 - 44032: 0xAC87, + 52550 - 44032: 0xAC88, + 52551 - 44032: 0xAC89, + 52552 - 44032: 0xAC8A, + 52553 - 44032: 0xAC8B, + 52554 - 44032: 0xAC8C, + 52555 - 44032: 0xAC8D, + 52556 - 44032: 0xAC8E, + 52557 - 44032: 0xAC8F, + 52558 - 44032: 0xAC90, + 52559 - 44032: 0xAC91, + 52560 - 44032: 0xAC92, + 52561 - 44032: 0xAC93, + 52562 - 44032: 0xAC94, + 52563 - 44032: 0xAC95, + 52564 - 44032: 0xAC96, + 52565 - 44032: 0xAC97, + 52566 - 44032: 0xAC98, + 52567 - 44032: 0xAC99, + 52568 - 44032: 0xAC9A, + 52569 - 44032: 0xAC9B, + 52570 - 44032: 0xAC9C, + 52571 - 44032: 0xAC9D, + 52572 - 44032: 0xC3D6, + 52573 - 44032: 0xAC9E, + 52574 - 44032: 0xAC9F, + 52575 - 44032: 0xACA0, + 52576 - 44032: 0xC3D7, + 52577 - 44032: 0xAD41, + 52578 - 44032: 0xAD42, + 52579 - 44032: 0xAD43, + 52580 - 44032: 0xC3D8, + 52581 - 44032: 0xAD44, + 52582 - 44032: 0xAD45, + 52583 - 44032: 0xAD46, + 52584 - 44032: 0xAD47, + 52585 - 44032: 0xAD48, + 52586 - 44032: 0xAD49, + 52587 - 44032: 0xAD4A, + 52588 - 44032: 0xC3D9, + 52589 - 44032: 0xC3DA, + 52590 - 44032: 0xAD4B, + 52591 - 44032: 0xC3DB, + 52592 - 44032: 0xAD4C, + 52593 - 44032: 0xC3DC, + 52594 - 44032: 0xAD4D, + 52595 - 44032: 0xAD4E, + 52596 - 44032: 0xAD4F, + 52597 - 44032: 0xAD50, + 52598 - 44032: 0xAD51, + 52599 - 44032: 0xAD52, + 52600 - 44032: 0xC3DD, + 52601 - 44032: 0xAD53, + 52602 - 44032: 0xAD54, + 52603 - 44032: 0xAD55, + 52604 - 44032: 0xAD56, + 52605 - 44032: 0xAD57, + 52606 - 44032: 0xAD58, + 52607 - 44032: 0xAD59, + 52608 - 44032: 0xAD5A, + 52609 - 44032: 0xAD61, + 52610 - 44032: 0xAD62, + 52611 - 44032: 0xAD63, + 52612 - 44032: 0xAD64, + 52613 - 44032: 0xAD65, + 52614 - 44032: 0xAD66, + 52615 - 44032: 0xAD67, + 52616 - 44032: 0xC3DE, + 52617 - 44032: 0xAD68, + 52618 - 44032: 0xAD69, + 52619 - 44032: 0xAD6A, + 52620 - 44032: 0xAD6B, + 52621 - 44032: 0xAD6C, + 52622 - 44032: 0xAD6D, + 52623 - 44032: 0xAD6E, + 52624 - 44032: 0xAD6F, + 52625 - 44032: 0xAD70, + 52626 - 44032: 0xAD71, + 52627 - 44032: 0xAD72, + 52628 - 44032: 0xC3DF, + 52629 - 44032: 0xC3E0, + 52630 - 44032: 0xAD73, + 52631 - 44032: 0xAD74, + 52632 - 44032: 0xC3E1, + 52633 - 44032: 0xAD75, + 52634 - 44032: 0xAD76, + 52635 - 44032: 0xAD77, + 52636 - 44032: 0xC3E2, + 52637 - 44032: 0xAD78, + 52638 - 44032: 0xAD79, + 52639 - 44032: 0xAD7A, + 52640 - 44032: 0xAD81, + 52641 - 44032: 0xAD82, + 52642 - 44032: 0xAD83, + 52643 - 44032: 0xAD84, + 52644 - 44032: 0xC3E3, + 52645 - 44032: 0xC3E4, + 52646 - 44032: 0xAD85, + 52647 - 44032: 0xC3E5, + 52648 - 44032: 0xAD86, + 52649 - 44032: 0xC3E6, + 52650 - 44032: 0xAD87, + 52651 - 44032: 0xAD88, + 52652 - 44032: 0xAD89, + 52653 - 44032: 0xAD8A, + 52654 - 44032: 0xAD8B, + 52655 - 44032: 0xAD8C, + 52656 - 44032: 0xC3E7, + 52657 - 44032: 0xAD8D, + 52658 - 44032: 0xAD8E, + 52659 - 44032: 0xAD8F, + 52660 - 44032: 0xAD90, + 52661 - 44032: 0xAD91, + 52662 - 44032: 0xAD92, + 52663 - 44032: 0xAD93, + 52664 - 44032: 0xAD94, + 52665 - 44032: 0xAD95, + 52666 - 44032: 0xAD96, + 52667 - 44032: 0xAD97, + 52668 - 44032: 0xAD98, + 52669 - 44032: 0xAD99, + 52670 - 44032: 0xAD9A, + 52671 - 44032: 0xAD9B, + 52672 - 44032: 0xAD9C, + 52673 - 44032: 0xAD9D, + 52674 - 44032: 0xAD9E, + 52675 - 44032: 0xAD9F, + 52676 - 44032: 0xC3E8, + 52677 - 44032: 0xADA0, + 52678 - 44032: 0xAE41, + 52679 - 44032: 0xAE42, + 52680 - 44032: 0xAE43, + 52681 - 44032: 0xAE44, + 52682 - 44032: 0xAE45, + 52683 - 44032: 0xAE46, + 52684 - 44032: 0xC3E9, + 52685 - 44032: 0xAE47, + 52686 - 44032: 0xAE48, + 52687 - 44032: 0xAE49, + 52688 - 44032: 0xC3EA, + 52689 - 44032: 0xAE4A, + 52690 - 44032: 0xAE4B, + 52691 - 44032: 0xAE4C, + 52692 - 44032: 0xAE4D, + 52693 - 44032: 0xAE4E, + 52694 - 44032: 0xAE4F, + 52695 - 44032: 0xAE50, + 52696 - 44032: 0xAE51, + 52697 - 44032: 0xAE52, + 52698 - 44032: 0xAE53, + 52699 - 44032: 0xAE54, + 52700 - 44032: 0xAE55, + 52701 - 44032: 0xAE56, + 52702 - 44032: 0xAE57, + 52703 - 44032: 0xAE58, + 52704 - 44032: 0xAE59, + 52705 - 44032: 0xAE5A, + 52706 - 44032: 0xAE61, + 52707 - 44032: 0xAE62, + 52708 - 44032: 0xAE63, + 52709 - 44032: 0xAE64, + 52710 - 44032: 0xAE65, + 52711 - 44032: 0xAE66, + 52712 - 44032: 0xC3EB, + 52713 - 44032: 0xAE67, + 52714 - 44032: 0xAE68, + 52715 - 44032: 0xAE69, + 52716 - 44032: 0xC3EC, + 52717 - 44032: 0xAE6A, + 52718 - 44032: 0xAE6B, + 52719 - 44032: 0xAE6C, + 52720 - 44032: 0xC3ED, + 52721 - 44032: 0xAE6D, + 52722 - 44032: 0xAE6E, + 52723 - 44032: 0xAE6F, + 52724 - 44032: 0xAE70, + 52725 - 44032: 0xAE71, + 52726 - 44032: 0xAE72, + 52727 - 44032: 0xAE73, + 52728 - 44032: 0xC3EE, + 52729 - 44032: 0xC3EF, + 52730 - 44032: 0xAE74, + 52731 - 44032: 0xC3F0, + 52732 - 44032: 0xAE75, + 52733 - 44032: 0xC3F1, + 52734 - 44032: 0xAE76, + 52735 - 44032: 0xAE77, + 52736 - 44032: 0xAE78, + 52737 - 44032: 0xAE79, + 52738 - 44032: 0xAE7A, + 52739 - 44032: 0xAE81, + 52740 - 44032: 0xC3F2, + 52741 - 44032: 0xAE82, + 52742 - 44032: 0xAE83, + 52743 - 44032: 0xAE84, + 52744 - 44032: 0xC3F3, + 52745 - 44032: 0xAE85, + 52746 - 44032: 0xAE86, + 52747 - 44032: 0xAE87, + 52748 - 44032: 0xC3F4, + 52749 - 44032: 0xAE88, + 52750 - 44032: 0xAE89, + 52751 - 44032: 0xAE8A, + 52752 - 44032: 0xAE8B, + 52753 - 44032: 0xAE8C, + 52754 - 44032: 0xAE8D, + 52755 - 44032: 0xAE8E, + 52756 - 44032: 0xC3F5, + 52757 - 44032: 0xAE8F, + 52758 - 44032: 0xAE90, + 52759 - 44032: 0xAE91, + 52760 - 44032: 0xAE92, + 52761 - 44032: 0xC3F6, + 52762 - 44032: 0xAE93, + 52763 - 44032: 0xAE94, + 52764 - 44032: 0xAE95, + 52765 - 44032: 0xAE96, + 52766 - 44032: 0xAE97, + 52767 - 44032: 0xAE98, + 52768 - 44032: 0xC3F7, + 52769 - 44032: 0xC3F8, + 52770 - 44032: 0xAE99, + 52771 - 44032: 0xAE9A, + 52772 - 44032: 0xC3F9, + 52773 - 44032: 0xAE9B, + 52774 - 44032: 0xAE9C, + 52775 - 44032: 0xAE9D, + 52776 - 44032: 0xC3FA, + 52777 - 44032: 0xAE9E, + 52778 - 44032: 0xAE9F, + 52779 - 44032: 0xAEA0, + 52780 - 44032: 0xAF41, + 52781 - 44032: 0xAF42, + 52782 - 44032: 0xAF43, + 52783 - 44032: 0xAF44, + 52784 - 44032: 0xC3FB, + 52785 - 44032: 0xC3FC, + 52786 - 44032: 0xAF45, + 52787 - 44032: 0xC3FD, + 52788 - 44032: 0xAF46, + 52789 - 44032: 0xC3FE, + 52790 - 44032: 0xAF47, + 52791 - 44032: 0xAF48, + 52792 - 44032: 0xAF49, + 52793 - 44032: 0xAF4A, + 52794 - 44032: 0xAF4B, + 52795 - 44032: 0xAF4C, + 52796 - 44032: 0xAF4D, + 52797 - 44032: 0xAF4E, + 52798 - 44032: 0xAF4F, + 52799 - 44032: 0xAF50, + 52800 - 44032: 0xAF51, + 52801 - 44032: 0xAF52, + 52802 - 44032: 0xAF53, + 52803 - 44032: 0xAF54, + 52804 - 44032: 0xAF55, + 52805 - 44032: 0xAF56, + 52806 - 44032: 0xAF57, + 52807 - 44032: 0xAF58, + 52808 - 44032: 0xAF59, + 52809 - 44032: 0xAF5A, + 52810 - 44032: 0xAF61, + 52811 - 44032: 0xAF62, + 52812 - 44032: 0xAF63, + 52813 - 44032: 0xAF64, + 52814 - 44032: 0xAF65, + 52815 - 44032: 0xAF66, + 52816 - 44032: 0xAF67, + 52817 - 44032: 0xAF68, + 52818 - 44032: 0xAF69, + 52819 - 44032: 0xAF6A, + 52820 - 44032: 0xAF6B, + 52821 - 44032: 0xAF6C, + 52822 - 44032: 0xAF6D, + 52823 - 44032: 0xAF6E, + 52824 - 44032: 0xC4A1, + 52825 - 44032: 0xC4A2, + 52826 - 44032: 0xAF6F, + 52827 - 44032: 0xAF70, + 52828 - 44032: 0xC4A3, + 52829 - 44032: 0xAF71, + 52830 - 44032: 0xAF72, + 52831 - 44032: 0xC4A4, + 52832 - 44032: 0xC4A5, + 52833 - 44032: 0xC4A6, + 52834 - 44032: 0xAF73, + 52835 - 44032: 0xAF74, + 52836 - 44032: 0xAF75, + 52837 - 44032: 0xAF76, + 52838 - 44032: 0xAF77, + 52839 - 44032: 0xAF78, + 52840 - 44032: 0xC4A7, + 52841 - 44032: 0xC4A8, + 52842 - 44032: 0xAF79, + 52843 - 44032: 0xC4A9, + 52844 - 44032: 0xAF7A, + 52845 - 44032: 0xC4AA, + 52846 - 44032: 0xAF81, + 52847 - 44032: 0xAF82, + 52848 - 44032: 0xAF83, + 52849 - 44032: 0xAF84, + 52850 - 44032: 0xAF85, + 52851 - 44032: 0xAF86, + 52852 - 44032: 0xC4AB, + 52853 - 44032: 0xC4AC, + 52854 - 44032: 0xAF87, + 52855 - 44032: 0xAF88, + 52856 - 44032: 0xC4AD, + 52857 - 44032: 0xAF89, + 52858 - 44032: 0xAF8A, + 52859 - 44032: 0xAF8B, + 52860 - 44032: 0xC4AE, + 52861 - 44032: 0xAF8C, + 52862 - 44032: 0xAF8D, + 52863 - 44032: 0xAF8E, + 52864 - 44032: 0xAF8F, + 52865 - 44032: 0xAF90, + 52866 - 44032: 0xAF91, + 52867 - 44032: 0xAF92, + 52868 - 44032: 0xC4AF, + 52869 - 44032: 0xC4B0, + 52870 - 44032: 0xAF93, + 52871 - 44032: 0xC4B1, + 52872 - 44032: 0xAF94, + 52873 - 44032: 0xC4B2, + 52874 - 44032: 0xAF95, + 52875 - 44032: 0xAF96, + 52876 - 44032: 0xAF97, + 52877 - 44032: 0xAF98, + 52878 - 44032: 0xAF99, + 52879 - 44032: 0xAF9A, + 52880 - 44032: 0xC4B3, + 52881 - 44032: 0xC4B4, + 52882 - 44032: 0xAF9B, + 52883 - 44032: 0xAF9C, + 52884 - 44032: 0xC4B5, + 52885 - 44032: 0xAF9D, + 52886 - 44032: 0xAF9E, + 52887 - 44032: 0xAF9F, + 52888 - 44032: 0xC4B6, + 52889 - 44032: 0xAFA0, + 52890 - 44032: 0xB041, + 52891 - 44032: 0xB042, + 52892 - 44032: 0xB043, + 52893 - 44032: 0xB044, + 52894 - 44032: 0xB045, + 52895 - 44032: 0xB046, + 52896 - 44032: 0xC4B7, + 52897 - 44032: 0xC4B8, + 52898 - 44032: 0xB047, + 52899 - 44032: 0xC4B9, + 52900 - 44032: 0xC4BA, + 52901 - 44032: 0xC4BB, + 52902 - 44032: 0xB048, + 52903 - 44032: 0xB049, + 52904 - 44032: 0xB04A, + 52905 - 44032: 0xB04B, + 52906 - 44032: 0xB04C, + 52907 - 44032: 0xB04D, + 52908 - 44032: 0xC4BC, + 52909 - 44032: 0xC4BD, + 52910 - 44032: 0xB04E, + 52911 - 44032: 0xB04F, + 52912 - 44032: 0xB050, + 52913 - 44032: 0xB051, + 52914 - 44032: 0xB052, + 52915 - 44032: 0xB053, + 52916 - 44032: 0xB054, + 52917 - 44032: 0xB055, + 52918 - 44032: 0xB056, + 52919 - 44032: 0xB057, + 52920 - 44032: 0xB058, + 52921 - 44032: 0xB059, + 52922 - 44032: 0xB05A, + 52923 - 44032: 0xB061, + 52924 - 44032: 0xB062, + 52925 - 44032: 0xB063, + 52926 - 44032: 0xB064, + 52927 - 44032: 0xB065, + 52928 - 44032: 0xB066, + 52929 - 44032: 0xC4BE, + 52930 - 44032: 0xB067, + 52931 - 44032: 0xB068, + 52932 - 44032: 0xB069, + 52933 - 44032: 0xB06A, + 52934 - 44032: 0xB06B, + 52935 - 44032: 0xB06C, + 52936 - 44032: 0xB06D, + 52937 - 44032: 0xB06E, + 52938 - 44032: 0xB06F, + 52939 - 44032: 0xB070, + 52940 - 44032: 0xB071, + 52941 - 44032: 0xB072, + 52942 - 44032: 0xB073, + 52943 - 44032: 0xB074, + 52944 - 44032: 0xB075, + 52945 - 44032: 0xB076, + 52946 - 44032: 0xB077, + 52947 - 44032: 0xB078, + 52948 - 44032: 0xB079, + 52949 - 44032: 0xB07A, + 52950 - 44032: 0xB081, + 52951 - 44032: 0xB082, + 52952 - 44032: 0xB083, + 52953 - 44032: 0xB084, + 52954 - 44032: 0xB085, + 52955 - 44032: 0xB086, + 52956 - 44032: 0xB087, + 52957 - 44032: 0xB088, + 52958 - 44032: 0xB089, + 52959 - 44032: 0xB08A, + 52960 - 44032: 0xB08B, + 52961 - 44032: 0xB08C, + 52962 - 44032: 0xB08D, + 52963 - 44032: 0xB08E, + 52964 - 44032: 0xC4BF, + 52965 - 44032: 0xC4C0, + 52966 - 44032: 0xB08F, + 52967 - 44032: 0xB090, + 52968 - 44032: 0xC4C1, + 52969 - 44032: 0xB091, + 52970 - 44032: 0xB092, + 52971 - 44032: 0xC4C2, + 52972 - 44032: 0xC4C3, + 52973 - 44032: 0xB093, + 52974 - 44032: 0xB094, + 52975 - 44032: 0xB095, + 52976 - 44032: 0xB096, + 52977 - 44032: 0xB097, + 52978 - 44032: 0xB098, + 52979 - 44032: 0xB099, + 52980 - 44032: 0xC4C4, + 52981 - 44032: 0xC4C5, + 52982 - 44032: 0xB09A, + 52983 - 44032: 0xC4C6, + 52984 - 44032: 0xC4C7, + 52985 - 44032: 0xC4C8, + 52986 - 44032: 0xB09B, + 52987 - 44032: 0xB09C, + 52988 - 44032: 0xB09D, + 52989 - 44032: 0xB09E, + 52990 - 44032: 0xB09F, + 52991 - 44032: 0xB0A0, + 52992 - 44032: 0xC4C9, + 52993 - 44032: 0xC4CA, + 52994 - 44032: 0xB141, + 52995 - 44032: 0xB142, + 52996 - 44032: 0xC4CB, + 52997 - 44032: 0xB143, + 52998 - 44032: 0xB144, + 52999 - 44032: 0xB145, + 53000 - 44032: 0xC4CC, + 53001 - 44032: 0xB146, + 53002 - 44032: 0xB147, + 53003 - 44032: 0xB148, + 53004 - 44032: 0xB149, + 53005 - 44032: 0xB14A, + 53006 - 44032: 0xB14B, + 53007 - 44032: 0xB14C, + 53008 - 44032: 0xC4CD, + 53009 - 44032: 0xC4CE, + 53010 - 44032: 0xB14D, + 53011 - 44032: 0xC4CF, + 53012 - 44032: 0xB14E, + 53013 - 44032: 0xC4D0, + 53014 - 44032: 0xB14F, + 53015 - 44032: 0xB150, + 53016 - 44032: 0xB151, + 53017 - 44032: 0xB152, + 53018 - 44032: 0xB153, + 53019 - 44032: 0xB154, + 53020 - 44032: 0xC4D1, + 53021 - 44032: 0xB155, + 53022 - 44032: 0xB156, + 53023 - 44032: 0xB157, + 53024 - 44032: 0xC4D2, + 53025 - 44032: 0xB158, + 53026 - 44032: 0xB159, + 53027 - 44032: 0xB15A, + 53028 - 44032: 0xC4D3, + 53029 - 44032: 0xB161, + 53030 - 44032: 0xB162, + 53031 - 44032: 0xB163, + 53032 - 44032: 0xB164, + 53033 - 44032: 0xB165, + 53034 - 44032: 0xB166, + 53035 - 44032: 0xB167, + 53036 - 44032: 0xC4D4, + 53037 - 44032: 0xC4D5, + 53038 - 44032: 0xB168, + 53039 - 44032: 0xC4D6, + 53040 - 44032: 0xC4D7, + 53041 - 44032: 0xC4D8, + 53042 - 44032: 0xB169, + 53043 - 44032: 0xB16A, + 53044 - 44032: 0xB16B, + 53045 - 44032: 0xB16C, + 53046 - 44032: 0xB16D, + 53047 - 44032: 0xB16E, + 53048 - 44032: 0xC4D9, + 53049 - 44032: 0xB16F, + 53050 - 44032: 0xB170, + 53051 - 44032: 0xB171, + 53052 - 44032: 0xB172, + 53053 - 44032: 0xB173, + 53054 - 44032: 0xB174, + 53055 - 44032: 0xB175, + 53056 - 44032: 0xB176, + 53057 - 44032: 0xB177, + 53058 - 44032: 0xB178, + 53059 - 44032: 0xB179, + 53060 - 44032: 0xB17A, + 53061 - 44032: 0xB181, + 53062 - 44032: 0xB182, + 53063 - 44032: 0xB183, + 53064 - 44032: 0xB184, + 53065 - 44032: 0xB185, + 53066 - 44032: 0xB186, + 53067 - 44032: 0xB187, + 53068 - 44032: 0xB188, + 53069 - 44032: 0xB189, + 53070 - 44032: 0xB18A, + 53071 - 44032: 0xB18B, + 53072 - 44032: 0xB18C, + 53073 - 44032: 0xB18D, + 53074 - 44032: 0xB18E, + 53075 - 44032: 0xB18F, + 53076 - 44032: 0xC4DA, + 53077 - 44032: 0xC4DB, + 53078 - 44032: 0xB190, + 53079 - 44032: 0xB191, + 53080 - 44032: 0xC4DC, + 53081 - 44032: 0xB192, + 53082 - 44032: 0xB193, + 53083 - 44032: 0xB194, + 53084 - 44032: 0xC4DD, + 53085 - 44032: 0xB195, + 53086 - 44032: 0xB196, + 53087 - 44032: 0xB197, + 53088 - 44032: 0xB198, + 53089 - 44032: 0xB199, + 53090 - 44032: 0xB19A, + 53091 - 44032: 0xB19B, + 53092 - 44032: 0xC4DE, + 53093 - 44032: 0xC4DF, + 53094 - 44032: 0xB19C, + 53095 - 44032: 0xC4E0, + 53096 - 44032: 0xB19D, + 53097 - 44032: 0xC4E1, + 53098 - 44032: 0xB19E, + 53099 - 44032: 0xB19F, + 53100 - 44032: 0xB1A0, + 53101 - 44032: 0xB241, + 53102 - 44032: 0xB242, + 53103 - 44032: 0xB243, + 53104 - 44032: 0xC4E2, + 53105 - 44032: 0xC4E3, + 53106 - 44032: 0xB244, + 53107 - 44032: 0xB245, + 53108 - 44032: 0xC4E4, + 53109 - 44032: 0xB246, + 53110 - 44032: 0xB247, + 53111 - 44032: 0xB248, + 53112 - 44032: 0xC4E5, + 53113 - 44032: 0xB249, + 53114 - 44032: 0xB24A, + 53115 - 44032: 0xB24B, + 53116 - 44032: 0xB24C, + 53117 - 44032: 0xB24D, + 53118 - 44032: 0xB24E, + 53119 - 44032: 0xB24F, + 53120 - 44032: 0xC4E6, + 53121 - 44032: 0xB250, + 53122 - 44032: 0xB251, + 53123 - 44032: 0xB252, + 53124 - 44032: 0xB253, + 53125 - 44032: 0xC4E7, + 53126 - 44032: 0xB254, + 53127 - 44032: 0xB255, + 53128 - 44032: 0xB256, + 53129 - 44032: 0xB257, + 53130 - 44032: 0xB258, + 53131 - 44032: 0xB259, + 53132 - 44032: 0xC4E8, + 53133 - 44032: 0xB25A, + 53134 - 44032: 0xB261, + 53135 - 44032: 0xB262, + 53136 - 44032: 0xB263, + 53137 - 44032: 0xB264, + 53138 - 44032: 0xB265, + 53139 - 44032: 0xB266, + 53140 - 44032: 0xB267, + 53141 - 44032: 0xB268, + 53142 - 44032: 0xB269, + 53143 - 44032: 0xB26A, + 53144 - 44032: 0xB26B, + 53145 - 44032: 0xB26C, + 53146 - 44032: 0xB26D, + 53147 - 44032: 0xB26E, + 53148 - 44032: 0xB26F, + 53149 - 44032: 0xB270, + 53150 - 44032: 0xB271, + 53151 - 44032: 0xB272, + 53152 - 44032: 0xB273, + 53153 - 44032: 0xC4E9, + 53154 - 44032: 0xB274, + 53155 - 44032: 0xB275, + 53156 - 44032: 0xB276, + 53157 - 44032: 0xB277, + 53158 - 44032: 0xB278, + 53159 - 44032: 0xB279, + 53160 - 44032: 0xC4EA, + 53161 - 44032: 0xB27A, + 53162 - 44032: 0xB281, + 53163 - 44032: 0xB282, + 53164 - 44032: 0xB283, + 53165 - 44032: 0xB284, + 53166 - 44032: 0xB285, + 53167 - 44032: 0xB286, + 53168 - 44032: 0xC4EB, + 53169 - 44032: 0xB287, + 53170 - 44032: 0xB288, + 53171 - 44032: 0xB289, + 53172 - 44032: 0xB28A, + 53173 - 44032: 0xB28B, + 53174 - 44032: 0xB28C, + 53175 - 44032: 0xB28D, + 53176 - 44032: 0xB28E, + 53177 - 44032: 0xB28F, + 53178 - 44032: 0xB290, + 53179 - 44032: 0xB291, + 53180 - 44032: 0xB292, + 53181 - 44032: 0xB293, + 53182 - 44032: 0xB294, + 53183 - 44032: 0xB295, + 53184 - 44032: 0xB296, + 53185 - 44032: 0xB297, + 53186 - 44032: 0xB298, + 53187 - 44032: 0xB299, + 53188 - 44032: 0xC4EC, + 53189 - 44032: 0xB29A, + 53190 - 44032: 0xB29B, + 53191 - 44032: 0xB29C, + 53192 - 44032: 0xB29D, + 53193 - 44032: 0xB29E, + 53194 - 44032: 0xB29F, + 53195 - 44032: 0xB2A0, + 53196 - 44032: 0xB341, + 53197 - 44032: 0xB342, + 53198 - 44032: 0xB343, + 53199 - 44032: 0xB344, + 53200 - 44032: 0xB345, + 53201 - 44032: 0xB346, + 53202 - 44032: 0xB347, + 53203 - 44032: 0xB348, + 53204 - 44032: 0xB349, + 53205 - 44032: 0xB34A, + 53206 - 44032: 0xB34B, + 53207 - 44032: 0xB34C, + 53208 - 44032: 0xB34D, + 53209 - 44032: 0xB34E, + 53210 - 44032: 0xB34F, + 53211 - 44032: 0xB350, + 53212 - 44032: 0xB351, + 53213 - 44032: 0xB352, + 53214 - 44032: 0xB353, + 53215 - 44032: 0xB354, + 53216 - 44032: 0xC4ED, + 53217 - 44032: 0xC4EE, + 53218 - 44032: 0xB355, + 53219 - 44032: 0xB356, + 53220 - 44032: 0xC4EF, + 53221 - 44032: 0xB357, + 53222 - 44032: 0xB358, + 53223 - 44032: 0xB359, + 53224 - 44032: 0xC4F0, + 53225 - 44032: 0xB35A, + 53226 - 44032: 0xB361, + 53227 - 44032: 0xB362, + 53228 - 44032: 0xB363, + 53229 - 44032: 0xB364, + 53230 - 44032: 0xB365, + 53231 - 44032: 0xB366, + 53232 - 44032: 0xC4F1, + 53233 - 44032: 0xC4F2, + 53234 - 44032: 0xB367, + 53235 - 44032: 0xC4F3, + 53236 - 44032: 0xB368, + 53237 - 44032: 0xC4F4, + 53238 - 44032: 0xB369, + 53239 - 44032: 0xB36A, + 53240 - 44032: 0xB36B, + 53241 - 44032: 0xB36C, + 53242 - 44032: 0xB36D, + 53243 - 44032: 0xB36E, + 53244 - 44032: 0xC4F5, + 53245 - 44032: 0xB36F, + 53246 - 44032: 0xB370, + 53247 - 44032: 0xB371, + 53248 - 44032: 0xC4F6, + 53249 - 44032: 0xB372, + 53250 - 44032: 0xB373, + 53251 - 44032: 0xB374, + 53252 - 44032: 0xC4F7, + 53253 - 44032: 0xB375, + 53254 - 44032: 0xB376, + 53255 - 44032: 0xB377, + 53256 - 44032: 0xB378, + 53257 - 44032: 0xB379, + 53258 - 44032: 0xB37A, + 53259 - 44032: 0xB381, + 53260 - 44032: 0xB382, + 53261 - 44032: 0xB383, + 53262 - 44032: 0xB384, + 53263 - 44032: 0xB385, + 53264 - 44032: 0xB386, + 53265 - 44032: 0xC4F8, + 53266 - 44032: 0xB387, + 53267 - 44032: 0xB388, + 53268 - 44032: 0xB389, + 53269 - 44032: 0xB38A, + 53270 - 44032: 0xB38B, + 53271 - 44032: 0xB38C, + 53272 - 44032: 0xC4F9, + 53273 - 44032: 0xB38D, + 53274 - 44032: 0xB38E, + 53275 - 44032: 0xB38F, + 53276 - 44032: 0xB390, + 53277 - 44032: 0xB391, + 53278 - 44032: 0xB392, + 53279 - 44032: 0xB393, + 53280 - 44032: 0xB394, + 53281 - 44032: 0xB395, + 53282 - 44032: 0xB396, + 53283 - 44032: 0xB397, + 53284 - 44032: 0xB398, + 53285 - 44032: 0xB399, + 53286 - 44032: 0xB39A, + 53287 - 44032: 0xB39B, + 53288 - 44032: 0xB39C, + 53289 - 44032: 0xB39D, + 53290 - 44032: 0xB39E, + 53291 - 44032: 0xB39F, + 53292 - 44032: 0xB3A0, + 53293 - 44032: 0xC4FA, + 53294 - 44032: 0xB441, + 53295 - 44032: 0xB442, + 53296 - 44032: 0xB443, + 53297 - 44032: 0xB444, + 53298 - 44032: 0xB445, + 53299 - 44032: 0xB446, + 53300 - 44032: 0xC4FB, + 53301 - 44032: 0xC4FC, + 53302 - 44032: 0xB447, + 53303 - 44032: 0xB448, + 53304 - 44032: 0xC4FD, + 53305 - 44032: 0xB449, + 53306 - 44032: 0xB44A, + 53307 - 44032: 0xB44B, + 53308 - 44032: 0xC4FE, + 53309 - 44032: 0xB44C, + 53310 - 44032: 0xB44D, + 53311 - 44032: 0xB44E, + 53312 - 44032: 0xB44F, + 53313 - 44032: 0xB450, + 53314 - 44032: 0xB451, + 53315 - 44032: 0xB452, + 53316 - 44032: 0xC5A1, + 53317 - 44032: 0xC5A2, + 53318 - 44032: 0xB453, + 53319 - 44032: 0xC5A3, + 53320 - 44032: 0xB454, + 53321 - 44032: 0xC5A4, + 53322 - 44032: 0xB455, + 53323 - 44032: 0xB456, + 53324 - 44032: 0xB457, + 53325 - 44032: 0xB458, + 53326 - 44032: 0xB459, + 53327 - 44032: 0xB45A, + 53328 - 44032: 0xC5A5, + 53329 - 44032: 0xB461, + 53330 - 44032: 0xB462, + 53331 - 44032: 0xB463, + 53332 - 44032: 0xC5A6, + 53333 - 44032: 0xB464, + 53334 - 44032: 0xB465, + 53335 - 44032: 0xB466, + 53336 - 44032: 0xC5A7, + 53337 - 44032: 0xB467, + 53338 - 44032: 0xB468, + 53339 - 44032: 0xB469, + 53340 - 44032: 0xB46A, + 53341 - 44032: 0xB46B, + 53342 - 44032: 0xB46C, + 53343 - 44032: 0xB46D, + 53344 - 44032: 0xC5A8, + 53345 - 44032: 0xB46E, + 53346 - 44032: 0xB46F, + 53347 - 44032: 0xB470, + 53348 - 44032: 0xB471, + 53349 - 44032: 0xB472, + 53350 - 44032: 0xB473, + 53351 - 44032: 0xB474, + 53352 - 44032: 0xB475, + 53353 - 44032: 0xB476, + 53354 - 44032: 0xB477, + 53355 - 44032: 0xB478, + 53356 - 44032: 0xC5A9, + 53357 - 44032: 0xC5AA, + 53358 - 44032: 0xB479, + 53359 - 44032: 0xB47A, + 53360 - 44032: 0xC5AB, + 53361 - 44032: 0xB481, + 53362 - 44032: 0xB482, + 53363 - 44032: 0xB483, + 53364 - 44032: 0xC5AC, + 53365 - 44032: 0xB484, + 53366 - 44032: 0xB485, + 53367 - 44032: 0xB486, + 53368 - 44032: 0xB487, + 53369 - 44032: 0xB488, + 53370 - 44032: 0xB489, + 53371 - 44032: 0xB48A, + 53372 - 44032: 0xC5AD, + 53373 - 44032: 0xC5AE, + 53374 - 44032: 0xB48B, + 53375 - 44032: 0xB48C, + 53376 - 44032: 0xB48D, + 53377 - 44032: 0xC5AF, + 53378 - 44032: 0xB48E, + 53379 - 44032: 0xB48F, + 53380 - 44032: 0xB490, + 53381 - 44032: 0xB491, + 53382 - 44032: 0xB492, + 53383 - 44032: 0xB493, + 53384 - 44032: 0xB494, + 53385 - 44032: 0xB495, + 53386 - 44032: 0xB496, + 53387 - 44032: 0xB497, + 53388 - 44032: 0xB498, + 53389 - 44032: 0xB499, + 53390 - 44032: 0xB49A, + 53391 - 44032: 0xB49B, + 53392 - 44032: 0xB49C, + 53393 - 44032: 0xB49D, + 53394 - 44032: 0xB49E, + 53395 - 44032: 0xB49F, + 53396 - 44032: 0xB4A0, + 53397 - 44032: 0xB541, + 53398 - 44032: 0xB542, + 53399 - 44032: 0xB543, + 53400 - 44032: 0xB544, + 53401 - 44032: 0xB545, + 53402 - 44032: 0xB546, + 53403 - 44032: 0xB547, + 53404 - 44032: 0xB548, + 53405 - 44032: 0xB549, + 53406 - 44032: 0xB54A, + 53407 - 44032: 0xB54B, + 53408 - 44032: 0xB54C, + 53409 - 44032: 0xB54D, + 53410 - 44032: 0xB54E, + 53411 - 44032: 0xB54F, + 53412 - 44032: 0xC5B0, + 53413 - 44032: 0xC5B1, + 53414 - 44032: 0xB550, + 53415 - 44032: 0xB551, + 53416 - 44032: 0xC5B2, + 53417 - 44032: 0xB552, + 53418 - 44032: 0xB553, + 53419 - 44032: 0xB554, + 53420 - 44032: 0xC5B3, + 53421 - 44032: 0xB555, + 53422 - 44032: 0xB556, + 53423 - 44032: 0xB557, + 53424 - 44032: 0xB558, + 53425 - 44032: 0xB559, + 53426 - 44032: 0xB55A, + 53427 - 44032: 0xB561, + 53428 - 44032: 0xC5B4, + 53429 - 44032: 0xC5B5, + 53430 - 44032: 0xB562, + 53431 - 44032: 0xC5B6, + 53432 - 44032: 0xB563, + 53433 - 44032: 0xC5B7, + 53434 - 44032: 0xB564, + 53435 - 44032: 0xB565, + 53436 - 44032: 0xB566, + 53437 - 44032: 0xB567, + 53438 - 44032: 0xB568, + 53439 - 44032: 0xB569, + 53440 - 44032: 0xC5B8, + 53441 - 44032: 0xC5B9, + 53442 - 44032: 0xB56A, + 53443 - 44032: 0xB56B, + 53444 - 44032: 0xC5BA, + 53445 - 44032: 0xB56C, + 53446 - 44032: 0xB56D, + 53447 - 44032: 0xB56E, + 53448 - 44032: 0xC5BB, + 53449 - 44032: 0xC5BC, + 53450 - 44032: 0xB56F, + 53451 - 44032: 0xB570, + 53452 - 44032: 0xB571, + 53453 - 44032: 0xB572, + 53454 - 44032: 0xB573, + 53455 - 44032: 0xB574, + 53456 - 44032: 0xC5BD, + 53457 - 44032: 0xC5BE, + 53458 - 44032: 0xB575, + 53459 - 44032: 0xC5BF, + 53460 - 44032: 0xC5C0, + 53461 - 44032: 0xC5C1, + 53462 - 44032: 0xB576, + 53463 - 44032: 0xB577, + 53464 - 44032: 0xB578, + 53465 - 44032: 0xB579, + 53466 - 44032: 0xB57A, + 53467 - 44032: 0xB581, + 53468 - 44032: 0xC5C2, + 53469 - 44032: 0xC5C3, + 53470 - 44032: 0xB582, + 53471 - 44032: 0xB583, + 53472 - 44032: 0xC5C4, + 53473 - 44032: 0xB584, + 53474 - 44032: 0xB585, + 53475 - 44032: 0xB586, + 53476 - 44032: 0xC5C5, + 53477 - 44032: 0xB587, + 53478 - 44032: 0xB588, + 53479 - 44032: 0xB589, + 53480 - 44032: 0xB58A, + 53481 - 44032: 0xB58B, + 53482 - 44032: 0xB58C, + 53483 - 44032: 0xB58D, + 53484 - 44032: 0xC5C6, + 53485 - 44032: 0xC5C7, + 53486 - 44032: 0xB58E, + 53487 - 44032: 0xC5C8, + 53488 - 44032: 0xC5C9, + 53489 - 44032: 0xC5CA, + 53490 - 44032: 0xB58F, + 53491 - 44032: 0xB590, + 53492 - 44032: 0xB591, + 53493 - 44032: 0xB592, + 53494 - 44032: 0xB593, + 53495 - 44032: 0xB594, + 53496 - 44032: 0xC5CB, + 53497 - 44032: 0xB595, + 53498 - 44032: 0xB596, + 53499 - 44032: 0xB597, + 53500 - 44032: 0xB598, + 53501 - 44032: 0xB599, + 53502 - 44032: 0xB59A, + 53503 - 44032: 0xB59B, + 53504 - 44032: 0xB59C, + 53505 - 44032: 0xB59D, + 53506 - 44032: 0xB59E, + 53507 - 44032: 0xB59F, + 53508 - 44032: 0xB5A0, + 53509 - 44032: 0xB641, + 53510 - 44032: 0xB642, + 53511 - 44032: 0xB643, + 53512 - 44032: 0xB644, + 53513 - 44032: 0xB645, + 53514 - 44032: 0xB646, + 53515 - 44032: 0xB647, + 53516 - 44032: 0xB648, + 53517 - 44032: 0xC5CC, + 53518 - 44032: 0xB649, + 53519 - 44032: 0xB64A, + 53520 - 44032: 0xB64B, + 53521 - 44032: 0xB64C, + 53522 - 44032: 0xB64D, + 53523 - 44032: 0xB64E, + 53524 - 44032: 0xB64F, + 53525 - 44032: 0xB650, + 53526 - 44032: 0xB651, + 53527 - 44032: 0xB652, + 53528 - 44032: 0xB653, + 53529 - 44032: 0xB654, + 53530 - 44032: 0xB655, + 53531 - 44032: 0xB656, + 53532 - 44032: 0xB657, + 53533 - 44032: 0xB658, + 53534 - 44032: 0xB659, + 53535 - 44032: 0xB65A, + 53536 - 44032: 0xB661, + 53537 - 44032: 0xB662, + 53538 - 44032: 0xB663, + 53539 - 44032: 0xB664, + 53540 - 44032: 0xB665, + 53541 - 44032: 0xB666, + 53542 - 44032: 0xB667, + 53543 - 44032: 0xB668, + 53544 - 44032: 0xB669, + 53545 - 44032: 0xB66A, + 53546 - 44032: 0xB66B, + 53547 - 44032: 0xB66C, + 53548 - 44032: 0xB66D, + 53549 - 44032: 0xB66E, + 53550 - 44032: 0xB66F, + 53551 - 44032: 0xB670, + 53552 - 44032: 0xC5CD, + 53553 - 44032: 0xC5CE, + 53554 - 44032: 0xB671, + 53555 - 44032: 0xB672, + 53556 - 44032: 0xC5CF, + 53557 - 44032: 0xB673, + 53558 - 44032: 0xB674, + 53559 - 44032: 0xB675, + 53560 - 44032: 0xC5D0, + 53561 - 44032: 0xB676, + 53562 - 44032: 0xC5D1, + 53563 - 44032: 0xB677, + 53564 - 44032: 0xB678, + 53565 - 44032: 0xB679, + 53566 - 44032: 0xB67A, + 53567 - 44032: 0xB681, + 53568 - 44032: 0xC5D2, + 53569 - 44032: 0xC5D3, + 53570 - 44032: 0xB682, + 53571 - 44032: 0xC5D4, + 53572 - 44032: 0xC5D5, + 53573 - 44032: 0xC5D6, + 53574 - 44032: 0xB683, + 53575 - 44032: 0xB684, + 53576 - 44032: 0xB685, + 53577 - 44032: 0xB686, + 53578 - 44032: 0xB687, + 53579 - 44032: 0xB688, + 53580 - 44032: 0xC5D7, + 53581 - 44032: 0xC5D8, + 53582 - 44032: 0xB689, + 53583 - 44032: 0xB68A, + 53584 - 44032: 0xC5D9, + 53585 - 44032: 0xB68B, + 53586 - 44032: 0xB68C, + 53587 - 44032: 0xB68D, + 53588 - 44032: 0xC5DA, + 53589 - 44032: 0xB68E, + 53590 - 44032: 0xB68F, + 53591 - 44032: 0xB690, + 53592 - 44032: 0xB691, + 53593 - 44032: 0xB692, + 53594 - 44032: 0xB693, + 53595 - 44032: 0xB694, + 53596 - 44032: 0xC5DB, + 53597 - 44032: 0xC5DC, + 53598 - 44032: 0xB695, + 53599 - 44032: 0xC5DD, + 53600 - 44032: 0xB696, + 53601 - 44032: 0xC5DE, + 53602 - 44032: 0xB697, + 53603 - 44032: 0xB698, + 53604 - 44032: 0xB699, + 53605 - 44032: 0xB69A, + 53606 - 44032: 0xB69B, + 53607 - 44032: 0xB69C, + 53608 - 44032: 0xC5DF, + 53609 - 44032: 0xB69D, + 53610 - 44032: 0xB69E, + 53611 - 44032: 0xB69F, + 53612 - 44032: 0xC5E0, + 53613 - 44032: 0xB6A0, + 53614 - 44032: 0xB741, + 53615 - 44032: 0xB742, + 53616 - 44032: 0xB743, + 53617 - 44032: 0xB744, + 53618 - 44032: 0xB745, + 53619 - 44032: 0xB746, + 53620 - 44032: 0xB747, + 53621 - 44032: 0xB748, + 53622 - 44032: 0xB749, + 53623 - 44032: 0xB74A, + 53624 - 44032: 0xB74B, + 53625 - 44032: 0xB74C, + 53626 - 44032: 0xB74D, + 53627 - 44032: 0xB74E, + 53628 - 44032: 0xC5E1, + 53629 - 44032: 0xB74F, + 53630 - 44032: 0xB750, + 53631 - 44032: 0xB751, + 53632 - 44032: 0xB752, + 53633 - 44032: 0xB753, + 53634 - 44032: 0xB754, + 53635 - 44032: 0xB755, + 53636 - 44032: 0xC5E2, + 53637 - 44032: 0xB756, + 53638 - 44032: 0xB757, + 53639 - 44032: 0xB758, + 53640 - 44032: 0xC5E3, + 53641 - 44032: 0xB759, + 53642 - 44032: 0xB75A, + 53643 - 44032: 0xB761, + 53644 - 44032: 0xB762, + 53645 - 44032: 0xB763, + 53646 - 44032: 0xB764, + 53647 - 44032: 0xB765, + 53648 - 44032: 0xB766, + 53649 - 44032: 0xB767, + 53650 - 44032: 0xB768, + 53651 - 44032: 0xB769, + 53652 - 44032: 0xB76A, + 53653 - 44032: 0xB76B, + 53654 - 44032: 0xB76C, + 53655 - 44032: 0xB76D, + 53656 - 44032: 0xB76E, + 53657 - 44032: 0xB76F, + 53658 - 44032: 0xB770, + 53659 - 44032: 0xB771, + 53660 - 44032: 0xB772, + 53661 - 44032: 0xB773, + 53662 - 44032: 0xB774, + 53663 - 44032: 0xB775, + 53664 - 44032: 0xC5E4, + 53665 - 44032: 0xC5E5, + 53666 - 44032: 0xB776, + 53667 - 44032: 0xB777, + 53668 - 44032: 0xC5E6, + 53669 - 44032: 0xB778, + 53670 - 44032: 0xB779, + 53671 - 44032: 0xB77A, + 53672 - 44032: 0xC5E7, + 53673 - 44032: 0xB781, + 53674 - 44032: 0xB782, + 53675 - 44032: 0xB783, + 53676 - 44032: 0xB784, + 53677 - 44032: 0xB785, + 53678 - 44032: 0xB786, + 53679 - 44032: 0xB787, + 53680 - 44032: 0xC5E8, + 53681 - 44032: 0xC5E9, + 53682 - 44032: 0xB788, + 53683 - 44032: 0xC5EA, + 53684 - 44032: 0xB789, + 53685 - 44032: 0xC5EB, + 53686 - 44032: 0xB78A, + 53687 - 44032: 0xB78B, + 53688 - 44032: 0xB78C, + 53689 - 44032: 0xB78D, + 53690 - 44032: 0xC5EC, + 53691 - 44032: 0xB78E, + 53692 - 44032: 0xC5ED, + 53693 - 44032: 0xB78F, + 53694 - 44032: 0xB790, + 53695 - 44032: 0xB791, + 53696 - 44032: 0xC5EE, + 53697 - 44032: 0xB792, + 53698 - 44032: 0xB793, + 53699 - 44032: 0xB794, + 53700 - 44032: 0xB795, + 53701 - 44032: 0xB796, + 53702 - 44032: 0xB797, + 53703 - 44032: 0xB798, + 53704 - 44032: 0xB799, + 53705 - 44032: 0xB79A, + 53706 - 44032: 0xB79B, + 53707 - 44032: 0xB79C, + 53708 - 44032: 0xB79D, + 53709 - 44032: 0xB79E, + 53710 - 44032: 0xB79F, + 53711 - 44032: 0xB7A0, + 53712 - 44032: 0xB841, + 53713 - 44032: 0xB842, + 53714 - 44032: 0xB843, + 53715 - 44032: 0xB844, + 53716 - 44032: 0xB845, + 53717 - 44032: 0xB846, + 53718 - 44032: 0xB847, + 53719 - 44032: 0xB848, + 53720 - 44032: 0xC5EF, + 53721 - 44032: 0xB849, + 53722 - 44032: 0xB84A, + 53723 - 44032: 0xB84B, + 53724 - 44032: 0xB84C, + 53725 - 44032: 0xB84D, + 53726 - 44032: 0xB84E, + 53727 - 44032: 0xB84F, + 53728 - 44032: 0xB850, + 53729 - 44032: 0xB851, + 53730 - 44032: 0xB852, + 53731 - 44032: 0xB853, + 53732 - 44032: 0xB854, + 53733 - 44032: 0xB855, + 53734 - 44032: 0xB856, + 53735 - 44032: 0xB857, + 53736 - 44032: 0xB858, + 53737 - 44032: 0xB859, + 53738 - 44032: 0xB85A, + 53739 - 44032: 0xB861, + 53740 - 44032: 0xB862, + 53741 - 44032: 0xB863, + 53742 - 44032: 0xB864, + 53743 - 44032: 0xB865, + 53744 - 44032: 0xB866, + 53745 - 44032: 0xB867, + 53746 - 44032: 0xB868, + 53747 - 44032: 0xB869, + 53748 - 44032: 0xC5F0, + 53749 - 44032: 0xB86A, + 53750 - 44032: 0xB86B, + 53751 - 44032: 0xB86C, + 53752 - 44032: 0xC5F1, + 53753 - 44032: 0xB86D, + 53754 - 44032: 0xB86E, + 53755 - 44032: 0xB86F, + 53756 - 44032: 0xB870, + 53757 - 44032: 0xB871, + 53758 - 44032: 0xB872, + 53759 - 44032: 0xB873, + 53760 - 44032: 0xB874, + 53761 - 44032: 0xB875, + 53762 - 44032: 0xB876, + 53763 - 44032: 0xB877, + 53764 - 44032: 0xB878, + 53765 - 44032: 0xB879, + 53766 - 44032: 0xB87A, + 53767 - 44032: 0xC5F2, + 53768 - 44032: 0xB881, + 53769 - 44032: 0xC5F3, + 53770 - 44032: 0xB882, + 53771 - 44032: 0xB883, + 53772 - 44032: 0xB884, + 53773 - 44032: 0xB885, + 53774 - 44032: 0xB886, + 53775 - 44032: 0xB887, + 53776 - 44032: 0xC5F4, + 53777 - 44032: 0xB888, + 53778 - 44032: 0xB889, + 53779 - 44032: 0xB88A, + 53780 - 44032: 0xB88B, + 53781 - 44032: 0xB88C, + 53782 - 44032: 0xB88D, + 53783 - 44032: 0xB88E, + 53784 - 44032: 0xB88F, + 53785 - 44032: 0xB890, + 53786 - 44032: 0xB891, + 53787 - 44032: 0xB892, + 53788 - 44032: 0xB893, + 53789 - 44032: 0xB894, + 53790 - 44032: 0xB895, + 53791 - 44032: 0xB896, + 53792 - 44032: 0xB897, + 53793 - 44032: 0xB898, + 53794 - 44032: 0xB899, + 53795 - 44032: 0xB89A, + 53796 - 44032: 0xB89B, + 53797 - 44032: 0xB89C, + 53798 - 44032: 0xB89D, + 53799 - 44032: 0xB89E, + 53800 - 44032: 0xB89F, + 53801 - 44032: 0xB8A0, + 53802 - 44032: 0xB941, + 53803 - 44032: 0xB942, + 53804 - 44032: 0xC5F5, + 53805 - 44032: 0xC5F6, + 53806 - 44032: 0xB943, + 53807 - 44032: 0xB944, + 53808 - 44032: 0xC5F7, + 53809 - 44032: 0xB945, + 53810 - 44032: 0xB946, + 53811 - 44032: 0xB947, + 53812 - 44032: 0xC5F8, + 53813 - 44032: 0xB948, + 53814 - 44032: 0xB949, + 53815 - 44032: 0xB94A, + 53816 - 44032: 0xB94B, + 53817 - 44032: 0xB94C, + 53818 - 44032: 0xB94D, + 53819 - 44032: 0xB94E, + 53820 - 44032: 0xC5F9, + 53821 - 44032: 0xC5FA, + 53822 - 44032: 0xB94F, + 53823 - 44032: 0xC5FB, + 53824 - 44032: 0xB950, + 53825 - 44032: 0xC5FC, + 53826 - 44032: 0xB951, + 53827 - 44032: 0xB952, + 53828 - 44032: 0xB953, + 53829 - 44032: 0xB954, + 53830 - 44032: 0xB955, + 53831 - 44032: 0xB956, + 53832 - 44032: 0xC5FD, + 53833 - 44032: 0xB957, + 53834 - 44032: 0xB958, + 53835 - 44032: 0xB959, + 53836 - 44032: 0xB95A, + 53837 - 44032: 0xB961, + 53838 - 44032: 0xB962, + 53839 - 44032: 0xB963, + 53840 - 44032: 0xB964, + 53841 - 44032: 0xB965, + 53842 - 44032: 0xB966, + 53843 - 44032: 0xB967, + 53844 - 44032: 0xB968, + 53845 - 44032: 0xB969, + 53846 - 44032: 0xB96A, + 53847 - 44032: 0xB96B, + 53848 - 44032: 0xB96C, + 53849 - 44032: 0xB96D, + 53850 - 44032: 0xB96E, + 53851 - 44032: 0xB96F, + 53852 - 44032: 0xC5FE, + 53853 - 44032: 0xB970, + 53854 - 44032: 0xB971, + 53855 - 44032: 0xB972, + 53856 - 44032: 0xB973, + 53857 - 44032: 0xB974, + 53858 - 44032: 0xB975, + 53859 - 44032: 0xB976, + 53860 - 44032: 0xC6A1, + 53861 - 44032: 0xB977, + 53862 - 44032: 0xB978, + 53863 - 44032: 0xB979, + 53864 - 44032: 0xB97A, + 53865 - 44032: 0xB981, + 53866 - 44032: 0xB982, + 53867 - 44032: 0xB983, + 53868 - 44032: 0xB984, + 53869 - 44032: 0xB985, + 53870 - 44032: 0xB986, + 53871 - 44032: 0xB987, + 53872 - 44032: 0xB988, + 53873 - 44032: 0xB989, + 53874 - 44032: 0xB98A, + 53875 - 44032: 0xB98B, + 53876 - 44032: 0xB98C, + 53877 - 44032: 0xB98D, + 53878 - 44032: 0xB98E, + 53879 - 44032: 0xB98F, + 53880 - 44032: 0xB990, + 53881 - 44032: 0xB991, + 53882 - 44032: 0xB992, + 53883 - 44032: 0xB993, + 53884 - 44032: 0xB994, + 53885 - 44032: 0xB995, + 53886 - 44032: 0xB996, + 53887 - 44032: 0xB997, + 53888 - 44032: 0xC6A2, + 53889 - 44032: 0xC6A3, + 53890 - 44032: 0xB998, + 53891 - 44032: 0xB999, + 53892 - 44032: 0xC6A4, + 53893 - 44032: 0xB99A, + 53894 - 44032: 0xB99B, + 53895 - 44032: 0xB99C, + 53896 - 44032: 0xC6A5, + 53897 - 44032: 0xB99D, + 53898 - 44032: 0xB99E, + 53899 - 44032: 0xB99F, + 53900 - 44032: 0xB9A0, + 53901 - 44032: 0xBA41, + 53902 - 44032: 0xBA42, + 53903 - 44032: 0xBA43, + 53904 - 44032: 0xC6A6, + 53905 - 44032: 0xC6A7, + 53906 - 44032: 0xBA44, + 53907 - 44032: 0xBA45, + 53908 - 44032: 0xBA46, + 53909 - 44032: 0xC6A8, + 53910 - 44032: 0xBA47, + 53911 - 44032: 0xBA48, + 53912 - 44032: 0xBA49, + 53913 - 44032: 0xBA4A, + 53914 - 44032: 0xBA4B, + 53915 - 44032: 0xBA4C, + 53916 - 44032: 0xC6A9, + 53917 - 44032: 0xBA4D, + 53918 - 44032: 0xBA4E, + 53919 - 44032: 0xBA4F, + 53920 - 44032: 0xC6AA, + 53921 - 44032: 0xBA50, + 53922 - 44032: 0xBA51, + 53923 - 44032: 0xBA52, + 53924 - 44032: 0xC6AB, + 53925 - 44032: 0xBA53, + 53926 - 44032: 0xBA54, + 53927 - 44032: 0xBA55, + 53928 - 44032: 0xBA56, + 53929 - 44032: 0xBA57, + 53930 - 44032: 0xBA58, + 53931 - 44032: 0xBA59, + 53932 - 44032: 0xC6AC, + 53933 - 44032: 0xBA5A, + 53934 - 44032: 0xBA61, + 53935 - 44032: 0xBA62, + 53936 - 44032: 0xBA63, + 53937 - 44032: 0xC6AD, + 53938 - 44032: 0xBA64, + 53939 - 44032: 0xBA65, + 53940 - 44032: 0xBA66, + 53941 - 44032: 0xBA67, + 53942 - 44032: 0xBA68, + 53943 - 44032: 0xBA69, + 53944 - 44032: 0xC6AE, + 53945 - 44032: 0xC6AF, + 53946 - 44032: 0xBA6A, + 53947 - 44032: 0xBA6B, + 53948 - 44032: 0xC6B0, + 53949 - 44032: 0xBA6C, + 53950 - 44032: 0xBA6D, + 53951 - 44032: 0xC6B1, + 53952 - 44032: 0xC6B2, + 53953 - 44032: 0xBA6E, + 53954 - 44032: 0xC6B3, + 53955 - 44032: 0xBA6F, + 53956 - 44032: 0xBA70, + 53957 - 44032: 0xBA71, + 53958 - 44032: 0xBA72, + 53959 - 44032: 0xBA73, + 53960 - 44032: 0xC6B4, + 53961 - 44032: 0xC6B5, + 53962 - 44032: 0xBA74, + 53963 - 44032: 0xC6B6, + 53964 - 44032: 0xBA75, + 53965 - 44032: 0xBA76, + 53966 - 44032: 0xBA77, + 53967 - 44032: 0xBA78, + 53968 - 44032: 0xBA79, + 53969 - 44032: 0xBA7A, + 53970 - 44032: 0xBA81, + 53971 - 44032: 0xBA82, + 53972 - 44032: 0xC6B7, + 53973 - 44032: 0xBA83, + 53974 - 44032: 0xBA84, + 53975 - 44032: 0xBA85, + 53976 - 44032: 0xC6B8, + 53977 - 44032: 0xBA86, + 53978 - 44032: 0xBA87, + 53979 - 44032: 0xBA88, + 53980 - 44032: 0xC6B9, + 53981 - 44032: 0xBA89, + 53982 - 44032: 0xBA8A, + 53983 - 44032: 0xBA8B, + 53984 - 44032: 0xBA8C, + 53985 - 44032: 0xBA8D, + 53986 - 44032: 0xBA8E, + 53987 - 44032: 0xBA8F, + 53988 - 44032: 0xC6BA, + 53989 - 44032: 0xC6BB, + 53990 - 44032: 0xBA90, + 53991 - 44032: 0xBA91, + 53992 - 44032: 0xBA92, + 53993 - 44032: 0xBA93, + 53994 - 44032: 0xBA94, + 53995 - 44032: 0xBA95, + 53996 - 44032: 0xBA96, + 53997 - 44032: 0xBA97, + 53998 - 44032: 0xBA98, + 53999 - 44032: 0xBA99, + 54000 - 44032: 0xC6BC, + 54001 - 44032: 0xC6BD, + 54002 - 44032: 0xBA9A, + 54003 - 44032: 0xBA9B, + 54004 - 44032: 0xC6BE, + 54005 - 44032: 0xBA9C, + 54006 - 44032: 0xBA9D, + 54007 - 44032: 0xBA9E, + 54008 - 44032: 0xC6BF, + 54009 - 44032: 0xBA9F, + 54010 - 44032: 0xBAA0, + 54011 - 44032: 0xBB41, + 54012 - 44032: 0xBB42, + 54013 - 44032: 0xBB43, + 54014 - 44032: 0xBB44, + 54015 - 44032: 0xBB45, + 54016 - 44032: 0xC6C0, + 54017 - 44032: 0xC6C1, + 54018 - 44032: 0xBB46, + 54019 - 44032: 0xC6C2, + 54020 - 44032: 0xBB47, + 54021 - 44032: 0xC6C3, + 54022 - 44032: 0xBB48, + 54023 - 44032: 0xBB49, + 54024 - 44032: 0xBB4A, + 54025 - 44032: 0xBB4B, + 54026 - 44032: 0xBB4C, + 54027 - 44032: 0xBB4D, + 54028 - 44032: 0xC6C4, + 54029 - 44032: 0xC6C5, + 54030 - 44032: 0xC6C6, + 54031 - 44032: 0xBB4E, + 54032 - 44032: 0xC6C7, + 54033 - 44032: 0xBB4F, + 54034 - 44032: 0xBB50, + 54035 - 44032: 0xBB51, + 54036 - 44032: 0xC6C8, + 54037 - 44032: 0xBB52, + 54038 - 44032: 0xC6C9, + 54039 - 44032: 0xBB53, + 54040 - 44032: 0xBB54, + 54041 - 44032: 0xBB55, + 54042 - 44032: 0xBB56, + 54043 - 44032: 0xBB57, + 54044 - 44032: 0xC6CA, + 54045 - 44032: 0xC6CB, + 54046 - 44032: 0xBB58, + 54047 - 44032: 0xC6CC, + 54048 - 44032: 0xC6CD, + 54049 - 44032: 0xC6CE, + 54050 - 44032: 0xBB59, + 54051 - 44032: 0xBB5A, + 54052 - 44032: 0xBB61, + 54053 - 44032: 0xC6CF, + 54054 - 44032: 0xBB62, + 54055 - 44032: 0xBB63, + 54056 - 44032: 0xC6D0, + 54057 - 44032: 0xC6D1, + 54058 - 44032: 0xBB64, + 54059 - 44032: 0xBB65, + 54060 - 44032: 0xC6D2, + 54061 - 44032: 0xBB66, + 54062 - 44032: 0xBB67, + 54063 - 44032: 0xBB68, + 54064 - 44032: 0xC6D3, + 54065 - 44032: 0xBB69, + 54066 - 44032: 0xBB6A, + 54067 - 44032: 0xBB6B, + 54068 - 44032: 0xBB6C, + 54069 - 44032: 0xBB6D, + 54070 - 44032: 0xBB6E, + 54071 - 44032: 0xBB6F, + 54072 - 44032: 0xC6D4, + 54073 - 44032: 0xC6D5, + 54074 - 44032: 0xBB70, + 54075 - 44032: 0xC6D6, + 54076 - 44032: 0xC6D7, + 54077 - 44032: 0xC6D8, + 54078 - 44032: 0xBB71, + 54079 - 44032: 0xBB72, + 54080 - 44032: 0xBB73, + 54081 - 44032: 0xBB74, + 54082 - 44032: 0xBB75, + 54083 - 44032: 0xBB76, + 54084 - 44032: 0xC6D9, + 54085 - 44032: 0xC6DA, + 54086 - 44032: 0xBB77, + 54087 - 44032: 0xBB78, + 54088 - 44032: 0xBB79, + 54089 - 44032: 0xBB7A, + 54090 - 44032: 0xBB81, + 54091 - 44032: 0xBB82, + 54092 - 44032: 0xBB83, + 54093 - 44032: 0xBB84, + 54094 - 44032: 0xBB85, + 54095 - 44032: 0xBB86, + 54096 - 44032: 0xBB87, + 54097 - 44032: 0xBB88, + 54098 - 44032: 0xBB89, + 54099 - 44032: 0xBB8A, + 54100 - 44032: 0xBB8B, + 54101 - 44032: 0xBB8C, + 54102 - 44032: 0xBB8D, + 54103 - 44032: 0xBB8E, + 54104 - 44032: 0xBB8F, + 54105 - 44032: 0xBB90, + 54106 - 44032: 0xBB91, + 54107 - 44032: 0xBB92, + 54108 - 44032: 0xBB93, + 54109 - 44032: 0xBB94, + 54110 - 44032: 0xBB95, + 54111 - 44032: 0xBB96, + 54112 - 44032: 0xBB97, + 54113 - 44032: 0xBB98, + 54114 - 44032: 0xBB99, + 54115 - 44032: 0xBB9A, + 54116 - 44032: 0xBB9B, + 54117 - 44032: 0xBB9C, + 54118 - 44032: 0xBB9D, + 54119 - 44032: 0xBB9E, + 54120 - 44032: 0xBB9F, + 54121 - 44032: 0xBBA0, + 54122 - 44032: 0xBC41, + 54123 - 44032: 0xBC42, + 54124 - 44032: 0xBC43, + 54125 - 44032: 0xBC44, + 54126 - 44032: 0xBC45, + 54127 - 44032: 0xBC46, + 54128 - 44032: 0xBC47, + 54129 - 44032: 0xBC48, + 54130 - 44032: 0xBC49, + 54131 - 44032: 0xBC4A, + 54132 - 44032: 0xBC4B, + 54133 - 44032: 0xBC4C, + 54134 - 44032: 0xBC4D, + 54135 - 44032: 0xBC4E, + 54136 - 44032: 0xBC4F, + 54137 - 44032: 0xBC50, + 54138 - 44032: 0xBC51, + 54139 - 44032: 0xBC52, + 54140 - 44032: 0xC6DB, + 54141 - 44032: 0xC6DC, + 54142 - 44032: 0xBC53, + 54143 - 44032: 0xBC54, + 54144 - 44032: 0xC6DD, + 54145 - 44032: 0xBC55, + 54146 - 44032: 0xBC56, + 54147 - 44032: 0xBC57, + 54148 - 44032: 0xC6DE, + 54149 - 44032: 0xBC58, + 54150 - 44032: 0xBC59, + 54151 - 44032: 0xBC5A, + 54152 - 44032: 0xBC61, + 54153 - 44032: 0xBC62, + 54154 - 44032: 0xBC63, + 54155 - 44032: 0xBC64, + 54156 - 44032: 0xC6DF, + 54157 - 44032: 0xC6E0, + 54158 - 44032: 0xBC65, + 54159 - 44032: 0xC6E1, + 54160 - 44032: 0xC6E2, + 54161 - 44032: 0xC6E3, + 54162 - 44032: 0xBC66, + 54163 - 44032: 0xBC67, + 54164 - 44032: 0xBC68, + 54165 - 44032: 0xBC69, + 54166 - 44032: 0xBC6A, + 54167 - 44032: 0xBC6B, + 54168 - 44032: 0xC6E4, + 54169 - 44032: 0xC6E5, + 54170 - 44032: 0xBC6C, + 54171 - 44032: 0xBC6D, + 54172 - 44032: 0xC6E6, + 54173 - 44032: 0xBC6E, + 54174 - 44032: 0xBC6F, + 54175 - 44032: 0xBC70, + 54176 - 44032: 0xC6E7, + 54177 - 44032: 0xBC71, + 54178 - 44032: 0xBC72, + 54179 - 44032: 0xBC73, + 54180 - 44032: 0xBC74, + 54181 - 44032: 0xBC75, + 54182 - 44032: 0xBC76, + 54183 - 44032: 0xBC77, + 54184 - 44032: 0xC6E8, + 54185 - 44032: 0xC6E9, + 54186 - 44032: 0xBC78, + 54187 - 44032: 0xC6EA, + 54188 - 44032: 0xBC79, + 54189 - 44032: 0xC6EB, + 54190 - 44032: 0xBC7A, + 54191 - 44032: 0xBC81, + 54192 - 44032: 0xBC82, + 54193 - 44032: 0xBC83, + 54194 - 44032: 0xBC84, + 54195 - 44032: 0xBC85, + 54196 - 44032: 0xC6EC, + 54197 - 44032: 0xBC86, + 54198 - 44032: 0xBC87, + 54199 - 44032: 0xBC88, + 54200 - 44032: 0xC6ED, + 54201 - 44032: 0xBC89, + 54202 - 44032: 0xBC8A, + 54203 - 44032: 0xBC8B, + 54204 - 44032: 0xC6EE, + 54205 - 44032: 0xBC8C, + 54206 - 44032: 0xBC8D, + 54207 - 44032: 0xBC8E, + 54208 - 44032: 0xBC8F, + 54209 - 44032: 0xBC90, + 54210 - 44032: 0xBC91, + 54211 - 44032: 0xBC92, + 54212 - 44032: 0xC6EF, + 54213 - 44032: 0xC6F0, + 54214 - 44032: 0xBC93, + 54215 - 44032: 0xBC94, + 54216 - 44032: 0xC6F1, + 54217 - 44032: 0xC6F2, + 54218 - 44032: 0xBC95, + 54219 - 44032: 0xBC96, + 54220 - 44032: 0xBC97, + 54221 - 44032: 0xBC98, + 54222 - 44032: 0xBC99, + 54223 - 44032: 0xBC9A, + 54224 - 44032: 0xC6F3, + 54225 - 44032: 0xBC9B, + 54226 - 44032: 0xBC9C, + 54227 - 44032: 0xBC9D, + 54228 - 44032: 0xBC9E, + 54229 - 44032: 0xBC9F, + 54230 - 44032: 0xBCA0, + 54231 - 44032: 0xBD41, + 54232 - 44032: 0xC6F4, + 54233 - 44032: 0xBD42, + 54234 - 44032: 0xBD43, + 54235 - 44032: 0xBD44, + 54236 - 44032: 0xBD45, + 54237 - 44032: 0xBD46, + 54238 - 44032: 0xBD47, + 54239 - 44032: 0xBD48, + 54240 - 44032: 0xBD49, + 54241 - 44032: 0xC6F5, + 54242 - 44032: 0xBD4A, + 54243 - 44032: 0xC6F6, + 54244 - 44032: 0xBD4B, + 54245 - 44032: 0xBD4C, + 54246 - 44032: 0xBD4D, + 54247 - 44032: 0xBD4E, + 54248 - 44032: 0xBD4F, + 54249 - 44032: 0xBD50, + 54250 - 44032: 0xBD51, + 54251 - 44032: 0xBD52, + 54252 - 44032: 0xC6F7, + 54253 - 44032: 0xC6F8, + 54254 - 44032: 0xBD53, + 54255 - 44032: 0xBD54, + 54256 - 44032: 0xC6F9, + 54257 - 44032: 0xBD55, + 54258 - 44032: 0xBD56, + 54259 - 44032: 0xBD57, + 54260 - 44032: 0xC6FA, + 54261 - 44032: 0xBD58, + 54262 - 44032: 0xBD59, + 54263 - 44032: 0xBD5A, + 54264 - 44032: 0xBD61, + 54265 - 44032: 0xBD62, + 54266 - 44032: 0xBD63, + 54267 - 44032: 0xBD64, + 54268 - 44032: 0xC6FB, + 54269 - 44032: 0xC6FC, + 54270 - 44032: 0xBD65, + 54271 - 44032: 0xC6FD, + 54272 - 44032: 0xBD66, + 54273 - 44032: 0xC6FE, + 54274 - 44032: 0xBD67, + 54275 - 44032: 0xBD68, + 54276 - 44032: 0xBD69, + 54277 - 44032: 0xBD6A, + 54278 - 44032: 0xBD6B, + 54279 - 44032: 0xBD6C, + 54280 - 44032: 0xC7A1, + 54281 - 44032: 0xBD6D, + 54282 - 44032: 0xBD6E, + 54283 - 44032: 0xBD6F, + 54284 - 44032: 0xBD70, + 54285 - 44032: 0xBD71, + 54286 - 44032: 0xBD72, + 54287 - 44032: 0xBD73, + 54288 - 44032: 0xBD74, + 54289 - 44032: 0xBD75, + 54290 - 44032: 0xBD76, + 54291 - 44032: 0xBD77, + 54292 - 44032: 0xBD78, + 54293 - 44032: 0xBD79, + 54294 - 44032: 0xBD7A, + 54295 - 44032: 0xBD81, + 54296 - 44032: 0xBD82, + 54297 - 44032: 0xBD83, + 54298 - 44032: 0xBD84, + 54299 - 44032: 0xBD85, + 54300 - 44032: 0xBD86, + 54301 - 44032: 0xC7A2, + 54302 - 44032: 0xBD87, + 54303 - 44032: 0xBD88, + 54304 - 44032: 0xBD89, + 54305 - 44032: 0xBD8A, + 54306 - 44032: 0xBD8B, + 54307 - 44032: 0xBD8C, + 54308 - 44032: 0xBD8D, + 54309 - 44032: 0xBD8E, + 54310 - 44032: 0xBD8F, + 54311 - 44032: 0xBD90, + 54312 - 44032: 0xBD91, + 54313 - 44032: 0xBD92, + 54314 - 44032: 0xBD93, + 54315 - 44032: 0xBD94, + 54316 - 44032: 0xBD95, + 54317 - 44032: 0xBD96, + 54318 - 44032: 0xBD97, + 54319 - 44032: 0xBD98, + 54320 - 44032: 0xBD99, + 54321 - 44032: 0xBD9A, + 54322 - 44032: 0xBD9B, + 54323 - 44032: 0xBD9C, + 54324 - 44032: 0xBD9D, + 54325 - 44032: 0xBD9E, + 54326 - 44032: 0xBD9F, + 54327 - 44032: 0xBDA0, + 54328 - 44032: 0xBE41, + 54329 - 44032: 0xBE42, + 54330 - 44032: 0xBE43, + 54331 - 44032: 0xBE44, + 54332 - 44032: 0xBE45, + 54333 - 44032: 0xBE46, + 54334 - 44032: 0xBE47, + 54335 - 44032: 0xBE48, + 54336 - 44032: 0xC7A3, + 54337 - 44032: 0xBE49, + 54338 - 44032: 0xBE4A, + 54339 - 44032: 0xBE4B, + 54340 - 44032: 0xC7A4, + 54341 - 44032: 0xBE4C, + 54342 - 44032: 0xBE4D, + 54343 - 44032: 0xBE4E, + 54344 - 44032: 0xBE4F, + 54345 - 44032: 0xBE50, + 54346 - 44032: 0xBE51, + 54347 - 44032: 0xBE52, + 54348 - 44032: 0xBE53, + 54349 - 44032: 0xBE54, + 54350 - 44032: 0xBE55, + 54351 - 44032: 0xBE56, + 54352 - 44032: 0xBE57, + 54353 - 44032: 0xBE58, + 54354 - 44032: 0xBE59, + 54355 - 44032: 0xBE5A, + 54356 - 44032: 0xBE61, + 54357 - 44032: 0xBE62, + 54358 - 44032: 0xBE63, + 54359 - 44032: 0xBE64, + 54360 - 44032: 0xBE65, + 54361 - 44032: 0xBE66, + 54362 - 44032: 0xBE67, + 54363 - 44032: 0xBE68, + 54364 - 44032: 0xC7A5, + 54365 - 44032: 0xBE69, + 54366 - 44032: 0xBE6A, + 54367 - 44032: 0xBE6B, + 54368 - 44032: 0xC7A6, + 54369 - 44032: 0xBE6C, + 54370 - 44032: 0xBE6D, + 54371 - 44032: 0xBE6E, + 54372 - 44032: 0xC7A7, + 54373 - 44032: 0xBE6F, + 54374 - 44032: 0xBE70, + 54375 - 44032: 0xBE71, + 54376 - 44032: 0xBE72, + 54377 - 44032: 0xBE73, + 54378 - 44032: 0xBE74, + 54379 - 44032: 0xBE75, + 54380 - 44032: 0xBE76, + 54381 - 44032: 0xC7A8, + 54382 - 44032: 0xBE77, + 54383 - 44032: 0xC7A9, + 54384 - 44032: 0xBE78, + 54385 - 44032: 0xBE79, + 54386 - 44032: 0xBE7A, + 54387 - 44032: 0xBE81, + 54388 - 44032: 0xBE82, + 54389 - 44032: 0xBE83, + 54390 - 44032: 0xBE84, + 54391 - 44032: 0xBE85, + 54392 - 44032: 0xC7AA, + 54393 - 44032: 0xC7AB, + 54394 - 44032: 0xBE86, + 54395 - 44032: 0xBE87, + 54396 - 44032: 0xC7AC, + 54397 - 44032: 0xBE88, + 54398 - 44032: 0xBE89, + 54399 - 44032: 0xC7AD, + 54400 - 44032: 0xC7AE, + 54401 - 44032: 0xBE8A, + 54402 - 44032: 0xC7AF, + 54403 - 44032: 0xBE8B, + 54404 - 44032: 0xBE8C, + 54405 - 44032: 0xBE8D, + 54406 - 44032: 0xBE8E, + 54407 - 44032: 0xBE8F, + 54408 - 44032: 0xC7B0, + 54409 - 44032: 0xC7B1, + 54410 - 44032: 0xBE90, + 54411 - 44032: 0xC7B2, + 54412 - 44032: 0xBE91, + 54413 - 44032: 0xC7B3, + 54414 - 44032: 0xBE92, + 54415 - 44032: 0xBE93, + 54416 - 44032: 0xBE94, + 54417 - 44032: 0xBE95, + 54418 - 44032: 0xBE96, + 54419 - 44032: 0xBE97, + 54420 - 44032: 0xC7B4, + 54421 - 44032: 0xBE98, + 54422 - 44032: 0xBE99, + 54423 - 44032: 0xBE9A, + 54424 - 44032: 0xBE9B, + 54425 - 44032: 0xBE9C, + 54426 - 44032: 0xBE9D, + 54427 - 44032: 0xBE9E, + 54428 - 44032: 0xBE9F, + 54429 - 44032: 0xBEA0, + 54430 - 44032: 0xBF41, + 54431 - 44032: 0xBF42, + 54432 - 44032: 0xBF43, + 54433 - 44032: 0xBF44, + 54434 - 44032: 0xBF45, + 54435 - 44032: 0xBF46, + 54436 - 44032: 0xBF47, + 54437 - 44032: 0xBF48, + 54438 - 44032: 0xBF49, + 54439 - 44032: 0xBF4A, + 54440 - 44032: 0xBF4B, + 54441 - 44032: 0xC7B5, + 54442 - 44032: 0xBF4C, + 54443 - 44032: 0xBF4D, + 54444 - 44032: 0xBF4E, + 54445 - 44032: 0xBF4F, + 54446 - 44032: 0xBF50, + 54447 - 44032: 0xBF51, + 54448 - 44032: 0xBF52, + 54449 - 44032: 0xBF53, + 54450 - 44032: 0xBF54, + 54451 - 44032: 0xBF55, + 54452 - 44032: 0xBF56, + 54453 - 44032: 0xBF57, + 54454 - 44032: 0xBF58, + 54455 - 44032: 0xBF59, + 54456 - 44032: 0xBF5A, + 54457 - 44032: 0xBF61, + 54458 - 44032: 0xBF62, + 54459 - 44032: 0xBF63, + 54460 - 44032: 0xBF64, + 54461 - 44032: 0xBF65, + 54462 - 44032: 0xBF66, + 54463 - 44032: 0xBF67, + 54464 - 44032: 0xBF68, + 54465 - 44032: 0xBF69, + 54466 - 44032: 0xBF6A, + 54467 - 44032: 0xBF6B, + 54468 - 44032: 0xBF6C, + 54469 - 44032: 0xBF6D, + 54470 - 44032: 0xBF6E, + 54471 - 44032: 0xBF6F, + 54472 - 44032: 0xBF70, + 54473 - 44032: 0xBF71, + 54474 - 44032: 0xBF72, + 54475 - 44032: 0xBF73, + 54476 - 44032: 0xC7B6, + 54477 - 44032: 0xBF74, + 54478 - 44032: 0xBF75, + 54479 - 44032: 0xBF76, + 54480 - 44032: 0xC7B7, + 54481 - 44032: 0xBF77, + 54482 - 44032: 0xBF78, + 54483 - 44032: 0xBF79, + 54484 - 44032: 0xC7B8, + 54485 - 44032: 0xBF7A, + 54486 - 44032: 0xBF81, + 54487 - 44032: 0xBF82, + 54488 - 44032: 0xBF83, + 54489 - 44032: 0xBF84, + 54490 - 44032: 0xBF85, + 54491 - 44032: 0xBF86, + 54492 - 44032: 0xC7B9, + 54493 - 44032: 0xBF87, + 54494 - 44032: 0xBF88, + 54495 - 44032: 0xC7BA, + 54496 - 44032: 0xBF89, + 54497 - 44032: 0xBF8A, + 54498 - 44032: 0xBF8B, + 54499 - 44032: 0xBF8C, + 54500 - 44032: 0xBF8D, + 54501 - 44032: 0xBF8E, + 54502 - 44032: 0xBF8F, + 54503 - 44032: 0xBF90, + 54504 - 44032: 0xC7BB, + 54505 - 44032: 0xBF91, + 54506 - 44032: 0xBF92, + 54507 - 44032: 0xBF93, + 54508 - 44032: 0xC7BC, + 54509 - 44032: 0xBF94, + 54510 - 44032: 0xBF95, + 54511 - 44032: 0xBF96, + 54512 - 44032: 0xC7BD, + 54513 - 44032: 0xBF97, + 54514 - 44032: 0xBF98, + 54515 - 44032: 0xBF99, + 54516 - 44032: 0xBF9A, + 54517 - 44032: 0xBF9B, + 54518 - 44032: 0xBF9C, + 54519 - 44032: 0xBF9D, + 54520 - 44032: 0xC7BE, + 54521 - 44032: 0xBF9E, + 54522 - 44032: 0xBF9F, + 54523 - 44032: 0xC7BF, + 54524 - 44032: 0xBFA0, + 54525 - 44032: 0xC7C0, + 54526 - 44032: 0xC041, + 54527 - 44032: 0xC042, + 54528 - 44032: 0xC043, + 54529 - 44032: 0xC044, + 54530 - 44032: 0xC045, + 54531 - 44032: 0xC046, + 54532 - 44032: 0xC7C1, + 54533 - 44032: 0xC047, + 54534 - 44032: 0xC048, + 54535 - 44032: 0xC049, + 54536 - 44032: 0xC7C2, + 54537 - 44032: 0xC04A, + 54538 - 44032: 0xC04B, + 54539 - 44032: 0xC04C, + 54540 - 44032: 0xC7C3, + 54541 - 44032: 0xC04D, + 54542 - 44032: 0xC04E, + 54543 - 44032: 0xC04F, + 54544 - 44032: 0xC050, + 54545 - 44032: 0xC051, + 54546 - 44032: 0xC052, + 54547 - 44032: 0xC053, + 54548 - 44032: 0xC7C4, + 54549 - 44032: 0xC7C5, + 54550 - 44032: 0xC054, + 54551 - 44032: 0xC7C6, + 54552 - 44032: 0xC055, + 54553 - 44032: 0xC056, + 54554 - 44032: 0xC057, + 54555 - 44032: 0xC058, + 54556 - 44032: 0xC059, + 54557 - 44032: 0xC05A, + 54558 - 44032: 0xC061, + 54559 - 44032: 0xC062, + 54560 - 44032: 0xC063, + 54561 - 44032: 0xC064, + 54562 - 44032: 0xC065, + 54563 - 44032: 0xC066, + 54564 - 44032: 0xC067, + 54565 - 44032: 0xC068, + 54566 - 44032: 0xC069, + 54567 - 44032: 0xC06A, + 54568 - 44032: 0xC06B, + 54569 - 44032: 0xC06C, + 54570 - 44032: 0xC06D, + 54571 - 44032: 0xC06E, + 54572 - 44032: 0xC06F, + 54573 - 44032: 0xC070, + 54574 - 44032: 0xC071, + 54575 - 44032: 0xC072, + 54576 - 44032: 0xC073, + 54577 - 44032: 0xC074, + 54578 - 44032: 0xC075, + 54579 - 44032: 0xC076, + 54580 - 44032: 0xC077, + 54581 - 44032: 0xC078, + 54582 - 44032: 0xC079, + 54583 - 44032: 0xC07A, + 54584 - 44032: 0xC081, + 54585 - 44032: 0xC082, + 54586 - 44032: 0xC083, + 54587 - 44032: 0xC084, + 54588 - 44032: 0xC7C7, + 54589 - 44032: 0xC7C8, + 54590 - 44032: 0xC085, + 54591 - 44032: 0xC086, + 54592 - 44032: 0xC7C9, + 54593 - 44032: 0xC087, + 54594 - 44032: 0xC088, + 54595 - 44032: 0xC089, + 54596 - 44032: 0xC7CA, + 54597 - 44032: 0xC08A, + 54598 - 44032: 0xC08B, + 54599 - 44032: 0xC08C, + 54600 - 44032: 0xC08D, + 54601 - 44032: 0xC08E, + 54602 - 44032: 0xC08F, + 54603 - 44032: 0xC090, + 54604 - 44032: 0xC7CB, + 54605 - 44032: 0xC7CC, + 54606 - 44032: 0xC091, + 54607 - 44032: 0xC7CD, + 54608 - 44032: 0xC092, + 54609 - 44032: 0xC7CE, + 54610 - 44032: 0xC093, + 54611 - 44032: 0xC094, + 54612 - 44032: 0xC095, + 54613 - 44032: 0xC096, + 54614 - 44032: 0xC097, + 54615 - 44032: 0xC098, + 54616 - 44032: 0xC7CF, + 54617 - 44032: 0xC7D0, + 54618 - 44032: 0xC099, + 54619 - 44032: 0xC09A, + 54620 - 44032: 0xC7D1, + 54621 - 44032: 0xC09B, + 54622 - 44032: 0xC09C, + 54623 - 44032: 0xC09D, + 54624 - 44032: 0xC7D2, + 54625 - 44032: 0xC09E, + 54626 - 44032: 0xC09F, + 54627 - 44032: 0xC0A0, + 54628 - 44032: 0xC141, + 54629 - 44032: 0xC7D3, + 54630 - 44032: 0xC142, + 54631 - 44032: 0xC143, + 54632 - 44032: 0xC7D4, + 54633 - 44032: 0xC7D5, + 54634 - 44032: 0xC144, + 54635 - 44032: 0xC7D6, + 54636 - 44032: 0xC145, + 54637 - 44032: 0xC7D7, + 54638 - 44032: 0xC146, + 54639 - 44032: 0xC147, + 54640 - 44032: 0xC148, + 54641 - 44032: 0xC149, + 54642 - 44032: 0xC14A, + 54643 - 44032: 0xC14B, + 54644 - 44032: 0xC7D8, + 54645 - 44032: 0xC7D9, + 54646 - 44032: 0xC14C, + 54647 - 44032: 0xC14D, + 54648 - 44032: 0xC7DA, + 54649 - 44032: 0xC14E, + 54650 - 44032: 0xC14F, + 54651 - 44032: 0xC150, + 54652 - 44032: 0xC7DB, + 54653 - 44032: 0xC151, + 54654 - 44032: 0xC152, + 54655 - 44032: 0xC153, + 54656 - 44032: 0xC154, + 54657 - 44032: 0xC155, + 54658 - 44032: 0xC156, + 54659 - 44032: 0xC157, + 54660 - 44032: 0xC7DC, + 54661 - 44032: 0xC7DD, + 54662 - 44032: 0xC158, + 54663 - 44032: 0xC7DE, + 54664 - 44032: 0xC7DF, + 54665 - 44032: 0xC7E0, + 54666 - 44032: 0xC159, + 54667 - 44032: 0xC15A, + 54668 - 44032: 0xC161, + 54669 - 44032: 0xC162, + 54670 - 44032: 0xC163, + 54671 - 44032: 0xC164, + 54672 - 44032: 0xC7E1, + 54673 - 44032: 0xC165, + 54674 - 44032: 0xC166, + 54675 - 44032: 0xC167, + 54676 - 44032: 0xC168, + 54677 - 44032: 0xC169, + 54678 - 44032: 0xC16A, + 54679 - 44032: 0xC16B, + 54680 - 44032: 0xC16C, + 54681 - 44032: 0xC16D, + 54682 - 44032: 0xC16E, + 54683 - 44032: 0xC16F, + 54684 - 44032: 0xC170, + 54685 - 44032: 0xC171, + 54686 - 44032: 0xC172, + 54687 - 44032: 0xC173, + 54688 - 44032: 0xC174, + 54689 - 44032: 0xC175, + 54690 - 44032: 0xC176, + 54691 - 44032: 0xC177, + 54692 - 44032: 0xC178, + 54693 - 44032: 0xC7E2, + 54694 - 44032: 0xC179, + 54695 - 44032: 0xC17A, + 54696 - 44032: 0xC181, + 54697 - 44032: 0xC182, + 54698 - 44032: 0xC183, + 54699 - 44032: 0xC184, + 54700 - 44032: 0xC185, + 54701 - 44032: 0xC186, + 54702 - 44032: 0xC187, + 54703 - 44032: 0xC188, + 54704 - 44032: 0xC189, + 54705 - 44032: 0xC18A, + 54706 - 44032: 0xC18B, + 54707 - 44032: 0xC18C, + 54708 - 44032: 0xC18D, + 54709 - 44032: 0xC18E, + 54710 - 44032: 0xC18F, + 54711 - 44032: 0xC190, + 54712 - 44032: 0xC191, + 54713 - 44032: 0xC192, + 54714 - 44032: 0xC193, + 54715 - 44032: 0xC194, + 54716 - 44032: 0xC195, + 54717 - 44032: 0xC196, + 54718 - 44032: 0xC197, + 54719 - 44032: 0xC198, + 54720 - 44032: 0xC199, + 54721 - 44032: 0xC19A, + 54722 - 44032: 0xC19B, + 54723 - 44032: 0xC19C, + 54724 - 44032: 0xC19D, + 54725 - 44032: 0xC19E, + 54726 - 44032: 0xC19F, + 54727 - 44032: 0xC1A0, + 54728 - 44032: 0xC7E3, + 54729 - 44032: 0xC7E4, + 54730 - 44032: 0xC241, + 54731 - 44032: 0xC242, + 54732 - 44032: 0xC7E5, + 54733 - 44032: 0xC243, + 54734 - 44032: 0xC244, + 54735 - 44032: 0xC245, + 54736 - 44032: 0xC7E6, + 54737 - 44032: 0xC246, + 54738 - 44032: 0xC7E7, + 54739 - 44032: 0xC247, + 54740 - 44032: 0xC248, + 54741 - 44032: 0xC249, + 54742 - 44032: 0xC24A, + 54743 - 44032: 0xC24B, + 54744 - 44032: 0xC7E8, + 54745 - 44032: 0xC7E9, + 54746 - 44032: 0xC24C, + 54747 - 44032: 0xC7EA, + 54748 - 44032: 0xC24D, + 54749 - 44032: 0xC7EB, + 54750 - 44032: 0xC24E, + 54751 - 44032: 0xC24F, + 54752 - 44032: 0xC250, + 54753 - 44032: 0xC251, + 54754 - 44032: 0xC252, + 54755 - 44032: 0xC253, + 54756 - 44032: 0xC7EC, + 54757 - 44032: 0xC7ED, + 54758 - 44032: 0xC254, + 54759 - 44032: 0xC255, + 54760 - 44032: 0xC7EE, + 54761 - 44032: 0xC256, + 54762 - 44032: 0xC257, + 54763 - 44032: 0xC258, + 54764 - 44032: 0xC7EF, + 54765 - 44032: 0xC259, + 54766 - 44032: 0xC25A, + 54767 - 44032: 0xC261, + 54768 - 44032: 0xC262, + 54769 - 44032: 0xC263, + 54770 - 44032: 0xC264, + 54771 - 44032: 0xC265, + 54772 - 44032: 0xC7F0, + 54773 - 44032: 0xC7F1, + 54774 - 44032: 0xC266, + 54775 - 44032: 0xC7F2, + 54776 - 44032: 0xC267, + 54777 - 44032: 0xC7F3, + 54778 - 44032: 0xC268, + 54779 - 44032: 0xC269, + 54780 - 44032: 0xC26A, + 54781 - 44032: 0xC26B, + 54782 - 44032: 0xC26C, + 54783 - 44032: 0xC26D, + 54784 - 44032: 0xC7F4, + 54785 - 44032: 0xC7F5, + 54786 - 44032: 0xC26E, + 54787 - 44032: 0xC26F, + 54788 - 44032: 0xC7F6, + 54789 - 44032: 0xC270, + 54790 - 44032: 0xC271, + 54791 - 44032: 0xC272, + 54792 - 44032: 0xC7F7, + 54793 - 44032: 0xC273, + 54794 - 44032: 0xC274, + 54795 - 44032: 0xC275, + 54796 - 44032: 0xC276, + 54797 - 44032: 0xC277, + 54798 - 44032: 0xC278, + 54799 - 44032: 0xC279, + 54800 - 44032: 0xC7F8, + 54801 - 44032: 0xC7F9, + 54802 - 44032: 0xC27A, + 54803 - 44032: 0xC7FA, + 54804 - 44032: 0xC7FB, + 54805 - 44032: 0xC7FC, + 54806 - 44032: 0xC281, + 54807 - 44032: 0xC282, + 54808 - 44032: 0xC283, + 54809 - 44032: 0xC284, + 54810 - 44032: 0xC285, + 54811 - 44032: 0xC286, + 54812 - 44032: 0xC7FD, + 54813 - 44032: 0xC287, + 54814 - 44032: 0xC288, + 54815 - 44032: 0xC289, + 54816 - 44032: 0xC7FE, + 54817 - 44032: 0xC28A, + 54818 - 44032: 0xC28B, + 54819 - 44032: 0xC28C, + 54820 - 44032: 0xC8A1, + 54821 - 44032: 0xC28D, + 54822 - 44032: 0xC28E, + 54823 - 44032: 0xC28F, + 54824 - 44032: 0xC290, + 54825 - 44032: 0xC291, + 54826 - 44032: 0xC292, + 54827 - 44032: 0xC293, + 54828 - 44032: 0xC294, + 54829 - 44032: 0xC8A2, + 54830 - 44032: 0xC295, + 54831 - 44032: 0xC296, + 54832 - 44032: 0xC297, + 54833 - 44032: 0xC298, + 54834 - 44032: 0xC299, + 54835 - 44032: 0xC29A, + 54836 - 44032: 0xC29B, + 54837 - 44032: 0xC29C, + 54838 - 44032: 0xC29D, + 54839 - 44032: 0xC29E, + 54840 - 44032: 0xC8A3, + 54841 - 44032: 0xC8A4, + 54842 - 44032: 0xC29F, + 54843 - 44032: 0xC2A0, + 54844 - 44032: 0xC8A5, + 54845 - 44032: 0xC341, + 54846 - 44032: 0xC342, + 54847 - 44032: 0xC343, + 54848 - 44032: 0xC8A6, + 54849 - 44032: 0xC344, + 54850 - 44032: 0xC345, + 54851 - 44032: 0xC346, + 54852 - 44032: 0xC347, + 54853 - 44032: 0xC8A7, + 54854 - 44032: 0xC348, + 54855 - 44032: 0xC349, + 54856 - 44032: 0xC8A8, + 54857 - 44032: 0xC8A9, + 54858 - 44032: 0xC34A, + 54859 - 44032: 0xC8AA, + 54860 - 44032: 0xC34B, + 54861 - 44032: 0xC8AB, + 54862 - 44032: 0xC34C, + 54863 - 44032: 0xC34D, + 54864 - 44032: 0xC34E, + 54865 - 44032: 0xC8AC, + 54866 - 44032: 0xC34F, + 54867 - 44032: 0xC350, + 54868 - 44032: 0xC8AD, + 54869 - 44032: 0xC8AE, + 54870 - 44032: 0xC351, + 54871 - 44032: 0xC352, + 54872 - 44032: 0xC8AF, + 54873 - 44032: 0xC353, + 54874 - 44032: 0xC354, + 54875 - 44032: 0xC355, + 54876 - 44032: 0xC8B0, + 54877 - 44032: 0xC356, + 54878 - 44032: 0xC357, + 54879 - 44032: 0xC358, + 54880 - 44032: 0xC359, + 54881 - 44032: 0xC35A, + 54882 - 44032: 0xC361, + 54883 - 44032: 0xC362, + 54884 - 44032: 0xC363, + 54885 - 44032: 0xC364, + 54886 - 44032: 0xC365, + 54887 - 44032: 0xC8B1, + 54888 - 44032: 0xC366, + 54889 - 44032: 0xC8B2, + 54890 - 44032: 0xC367, + 54891 - 44032: 0xC368, + 54892 - 44032: 0xC369, + 54893 - 44032: 0xC36A, + 54894 - 44032: 0xC36B, + 54895 - 44032: 0xC36C, + 54896 - 44032: 0xC8B3, + 54897 - 44032: 0xC8B4, + 54898 - 44032: 0xC36D, + 54899 - 44032: 0xC36E, + 54900 - 44032: 0xC8B5, + 54901 - 44032: 0xC36F, + 54902 - 44032: 0xC370, + 54903 - 44032: 0xC371, + 54904 - 44032: 0xC372, + 54905 - 44032: 0xC373, + 54906 - 44032: 0xC374, + 54907 - 44032: 0xC375, + 54908 - 44032: 0xC376, + 54909 - 44032: 0xC377, + 54910 - 44032: 0xC378, + 54911 - 44032: 0xC379, + 54912 - 44032: 0xC37A, + 54913 - 44032: 0xC381, + 54914 - 44032: 0xC382, + 54915 - 44032: 0xC8B6, + 54916 - 44032: 0xC383, + 54917 - 44032: 0xC8B7, + 54918 - 44032: 0xC384, + 54919 - 44032: 0xC385, + 54920 - 44032: 0xC386, + 54921 - 44032: 0xC387, + 54922 - 44032: 0xC388, + 54923 - 44032: 0xC389, + 54924 - 44032: 0xC8B8, + 54925 - 44032: 0xC8B9, + 54926 - 44032: 0xC38A, + 54927 - 44032: 0xC38B, + 54928 - 44032: 0xC8BA, + 54929 - 44032: 0xC38C, + 54930 - 44032: 0xC38D, + 54931 - 44032: 0xC38E, + 54932 - 44032: 0xC8BB, + 54933 - 44032: 0xC38F, + 54934 - 44032: 0xC390, + 54935 - 44032: 0xC391, + 54936 - 44032: 0xC392, + 54937 - 44032: 0xC393, + 54938 - 44032: 0xC394, + 54939 - 44032: 0xC395, + 54940 - 44032: 0xC396, + 54941 - 44032: 0xC8BC, + 54942 - 44032: 0xC397, + 54943 - 44032: 0xC8BD, + 54944 - 44032: 0xC398, + 54945 - 44032: 0xC8BE, + 54946 - 44032: 0xC399, + 54947 - 44032: 0xC39A, + 54948 - 44032: 0xC39B, + 54949 - 44032: 0xC39C, + 54950 - 44032: 0xC39D, + 54951 - 44032: 0xC39E, + 54952 - 44032: 0xC8BF, + 54953 - 44032: 0xC39F, + 54954 - 44032: 0xC3A0, + 54955 - 44032: 0xC441, + 54956 - 44032: 0xC8C0, + 54957 - 44032: 0xC442, + 54958 - 44032: 0xC443, + 54959 - 44032: 0xC444, + 54960 - 44032: 0xC8C1, + 54961 - 44032: 0xC445, + 54962 - 44032: 0xC446, + 54963 - 44032: 0xC447, + 54964 - 44032: 0xC448, + 54965 - 44032: 0xC449, + 54966 - 44032: 0xC44A, + 54967 - 44032: 0xC44B, + 54968 - 44032: 0xC44C, + 54969 - 44032: 0xC8C2, + 54970 - 44032: 0xC44D, + 54971 - 44032: 0xC8C3, + 54972 - 44032: 0xC44E, + 54973 - 44032: 0xC44F, + 54974 - 44032: 0xC450, + 54975 - 44032: 0xC451, + 54976 - 44032: 0xC452, + 54977 - 44032: 0xC453, + 54978 - 44032: 0xC454, + 54979 - 44032: 0xC455, + 54980 - 44032: 0xC8C4, + 54981 - 44032: 0xC8C5, + 54982 - 44032: 0xC456, + 54983 - 44032: 0xC457, + 54984 - 44032: 0xC8C6, + 54985 - 44032: 0xC458, + 54986 - 44032: 0xC459, + 54987 - 44032: 0xC45A, + 54988 - 44032: 0xC8C7, + 54989 - 44032: 0xC461, + 54990 - 44032: 0xC462, + 54991 - 44032: 0xC463, + 54992 - 44032: 0xC464, + 54993 - 44032: 0xC8C8, + 54994 - 44032: 0xC465, + 54995 - 44032: 0xC466, + 54996 - 44032: 0xC8C9, + 54997 - 44032: 0xC467, + 54998 - 44032: 0xC468, + 54999 - 44032: 0xC8CA, + 55000 - 44032: 0xC469, + 55001 - 44032: 0xC8CB, + 55002 - 44032: 0xC46A, + 55003 - 44032: 0xC46B, + 55004 - 44032: 0xC46C, + 55005 - 44032: 0xC46D, + 55006 - 44032: 0xC46E, + 55007 - 44032: 0xC46F, + 55008 - 44032: 0xC8CC, + 55009 - 44032: 0xC470, + 55010 - 44032: 0xC471, + 55011 - 44032: 0xC472, + 55012 - 44032: 0xC8CD, + 55013 - 44032: 0xC473, + 55014 - 44032: 0xC474, + 55015 - 44032: 0xC475, + 55016 - 44032: 0xC8CE, + 55017 - 44032: 0xC476, + 55018 - 44032: 0xC477, + 55019 - 44032: 0xC478, + 55020 - 44032: 0xC479, + 55021 - 44032: 0xC47A, + 55022 - 44032: 0xC481, + 55023 - 44032: 0xC482, + 55024 - 44032: 0xC8CF, + 55025 - 44032: 0xC483, + 55026 - 44032: 0xC484, + 55027 - 44032: 0xC485, + 55028 - 44032: 0xC486, + 55029 - 44032: 0xC8D0, + 55030 - 44032: 0xC487, + 55031 - 44032: 0xC488, + 55032 - 44032: 0xC489, + 55033 - 44032: 0xC48A, + 55034 - 44032: 0xC48B, + 55035 - 44032: 0xC48C, + 55036 - 44032: 0xC8D1, + 55037 - 44032: 0xC8D2, + 55038 - 44032: 0xC48D, + 55039 - 44032: 0xC48E, + 55040 - 44032: 0xC8D3, + 55041 - 44032: 0xC48F, + 55042 - 44032: 0xC490, + 55043 - 44032: 0xC491, + 55044 - 44032: 0xC8D4, + 55045 - 44032: 0xC492, + 55046 - 44032: 0xC493, + 55047 - 44032: 0xC494, + 55048 - 44032: 0xC495, + 55049 - 44032: 0xC496, + 55050 - 44032: 0xC497, + 55051 - 44032: 0xC498, + 55052 - 44032: 0xC499, + 55053 - 44032: 0xC49A, + 55054 - 44032: 0xC49B, + 55055 - 44032: 0xC49C, + 55056 - 44032: 0xC49D, + 55057 - 44032: 0xC8D5, + 55058 - 44032: 0xC49E, + 55059 - 44032: 0xC49F, + 55060 - 44032: 0xC4A0, + 55061 - 44032: 0xC541, + 55062 - 44032: 0xC542, + 55063 - 44032: 0xC543, + 55064 - 44032: 0xC8D6, + 55065 - 44032: 0xC8D7, + 55066 - 44032: 0xC544, + 55067 - 44032: 0xC545, + 55068 - 44032: 0xC8D8, + 55069 - 44032: 0xC546, + 55070 - 44032: 0xC547, + 55071 - 44032: 0xC548, + 55072 - 44032: 0xC8D9, + 55073 - 44032: 0xC549, + 55074 - 44032: 0xC54A, + 55075 - 44032: 0xC54B, + 55076 - 44032: 0xC54C, + 55077 - 44032: 0xC54D, + 55078 - 44032: 0xC54E, + 55079 - 44032: 0xC54F, + 55080 - 44032: 0xC8DA, + 55081 - 44032: 0xC8DB, + 55082 - 44032: 0xC550, + 55083 - 44032: 0xC8DC, + 55084 - 44032: 0xC551, + 55085 - 44032: 0xC8DD, + 55086 - 44032: 0xC552, + 55087 - 44032: 0xC553, + 55088 - 44032: 0xC554, + 55089 - 44032: 0xC555, + 55090 - 44032: 0xC556, + 55091 - 44032: 0xC557, + 55092 - 44032: 0xC8DE, + 55093 - 44032: 0xC8DF, + 55094 - 44032: 0xC558, + 55095 - 44032: 0xC559, + 55096 - 44032: 0xC8E0, + 55097 - 44032: 0xC55A, + 55098 - 44032: 0xC561, + 55099 - 44032: 0xC562, + 55100 - 44032: 0xC8E1, + 55101 - 44032: 0xC563, + 55102 - 44032: 0xC564, + 55103 - 44032: 0xC565, + 55104 - 44032: 0xC566, + 55105 - 44032: 0xC567, + 55106 - 44032: 0xC568, + 55107 - 44032: 0xC569, + 55108 - 44032: 0xC8E2, + 55109 - 44032: 0xC56A, + 55110 - 44032: 0xC56B, + 55111 - 44032: 0xC8E3, + 55112 - 44032: 0xC56C, + 55113 - 44032: 0xC8E4, + 55114 - 44032: 0xC56D, + 55115 - 44032: 0xC56E, + 55116 - 44032: 0xC56F, + 55117 - 44032: 0xC570, + 55118 - 44032: 0xC571, + 55119 - 44032: 0xC572, + 55120 - 44032: 0xC8E5, + 55121 - 44032: 0xC8E6, + 55122 - 44032: 0xC573, + 55123 - 44032: 0xC574, + 55124 - 44032: 0xC8E7, + 55125 - 44032: 0xC575, + 55126 - 44032: 0xC8E8, + 55127 - 44032: 0xC8E9, + 55128 - 44032: 0xC8EA, + 55129 - 44032: 0xC8EB, + 55130 - 44032: 0xC576, + 55131 - 44032: 0xC577, + 55132 - 44032: 0xC578, + 55133 - 44032: 0xC579, + 55134 - 44032: 0xC57A, + 55135 - 44032: 0xC581, + 55136 - 44032: 0xC8EC, + 55137 - 44032: 0xC8ED, + 55138 - 44032: 0xC582, + 55139 - 44032: 0xC8EE, + 55140 - 44032: 0xC583, + 55141 - 44032: 0xC8EF, + 55142 - 44032: 0xC584, + 55143 - 44032: 0xC585, + 55144 - 44032: 0xC586, + 55145 - 44032: 0xC8F0, + 55146 - 44032: 0xC587, + 55147 - 44032: 0xC588, + 55148 - 44032: 0xC8F1, + 55149 - 44032: 0xC589, + 55150 - 44032: 0xC58A, + 55151 - 44032: 0xC58B, + 55152 - 44032: 0xC8F2, + 55153 - 44032: 0xC58C, + 55154 - 44032: 0xC58D, + 55155 - 44032: 0xC58E, + 55156 - 44032: 0xC8F3, + 55157 - 44032: 0xC58F, + 55158 - 44032: 0xC590, + 55159 - 44032: 0xC591, + 55160 - 44032: 0xC592, + 55161 - 44032: 0xC593, + 55162 - 44032: 0xC594, + 55163 - 44032: 0xC595, + 55164 - 44032: 0xC8F4, + 55165 - 44032: 0xC8F5, + 55166 - 44032: 0xC596, + 55167 - 44032: 0xC597, + 55168 - 44032: 0xC598, + 55169 - 44032: 0xC8F6, + 55170 - 44032: 0xC599, + 55171 - 44032: 0xC59A, + 55172 - 44032: 0xC59B, + 55173 - 44032: 0xC59C, + 55174 - 44032: 0xC59D, + 55175 - 44032: 0xC59E, + 55176 - 44032: 0xC8F7, + 55177 - 44032: 0xC8F8, + 55178 - 44032: 0xC59F, + 55179 - 44032: 0xC5A0, + 55180 - 44032: 0xC8F9, + 55181 - 44032: 0xC641, + 55182 - 44032: 0xC642, + 55183 - 44032: 0xC643, + 55184 - 44032: 0xC8FA, + 55185 - 44032: 0xC644, + 55186 - 44032: 0xC645, + 55187 - 44032: 0xC646, + 55188 - 44032: 0xC647, + 55189 - 44032: 0xC648, + 55190 - 44032: 0xC649, + 55191 - 44032: 0xC64A, + 55192 - 44032: 0xC8FB, + 55193 - 44032: 0xC8FC, + 55194 - 44032: 0xC64B, + 55195 - 44032: 0xC8FD, + 55196 - 44032: 0xC64C, + 55197 - 44032: 0xC8FE, + 55198 - 44032: 0xC64D, + 55199 - 44032: 0xC64E, + 55200 - 44032: 0xC64F, + 55201 - 44032: 0xC650, + 55202 - 44032: 0xC651, + 55203 - 44032: 0xC652, +} + +const encode2Low, encode2High = 8213, 9838 + +var encode2 = [...]uint16{ + 8213 - 8213: 0xA1AA, + 8216 - 8213: 0xA1AE, + 8217 - 8213: 0xA1AF, + 8220 - 8213: 0xA1B0, + 8221 - 8213: 0xA1B1, + 8224 - 8213: 0xA2D3, + 8225 - 8213: 0xA2D4, + 8229 - 8213: 0xA1A5, + 8230 - 8213: 0xA1A6, + 8240 - 8213: 0xA2B6, + 8242 - 8213: 0xA1C7, + 8243 - 8213: 0xA1C8, + 8251 - 8213: 0xA1D8, + 8308 - 8213: 0xA9F9, + 8319 - 8213: 0xA9FA, + 8321 - 8213: 0xA9FB, + 8322 - 8213: 0xA9FC, + 8323 - 8213: 0xA9FD, + 8324 - 8213: 0xA9FE, + 8364 - 8213: 0xA2E6, + 8451 - 8213: 0xA1C9, + 8457 - 8213: 0xA2B5, + 8467 - 8213: 0xA7A4, + 8470 - 8213: 0xA2E0, + 8481 - 8213: 0xA2E5, + 8482 - 8213: 0xA2E2, + 8486 - 8213: 0xA7D9, + 8491 - 8213: 0xA1CA, + 8531 - 8213: 0xA8F7, + 8532 - 8213: 0xA8F8, + 8539 - 8213: 0xA8FB, + 8540 - 8213: 0xA8FC, + 8541 - 8213: 0xA8FD, + 8542 - 8213: 0xA8FE, + 8544 - 8213: 0xA5B0, + 8545 - 8213: 0xA5B1, + 8546 - 8213: 0xA5B2, + 8547 - 8213: 0xA5B3, + 8548 - 8213: 0xA5B4, + 8549 - 8213: 0xA5B5, + 8550 - 8213: 0xA5B6, + 8551 - 8213: 0xA5B7, + 8552 - 8213: 0xA5B8, + 8553 - 8213: 0xA5B9, + 8560 - 8213: 0xA5A1, + 8561 - 8213: 0xA5A2, + 8562 - 8213: 0xA5A3, + 8563 - 8213: 0xA5A4, + 8564 - 8213: 0xA5A5, + 8565 - 8213: 0xA5A6, + 8566 - 8213: 0xA5A7, + 8567 - 8213: 0xA5A8, + 8568 - 8213: 0xA5A9, + 8569 - 8213: 0xA5AA, + 8592 - 8213: 0xA1E7, + 8593 - 8213: 0xA1E8, + 8594 - 8213: 0xA1E6, + 8595 - 8213: 0xA1E9, + 8596 - 8213: 0xA1EA, + 8597 - 8213: 0xA2D5, + 8598 - 8213: 0xA2D8, + 8599 - 8213: 0xA2D6, + 8600 - 8213: 0xA2D9, + 8601 - 8213: 0xA2D7, + 8658 - 8213: 0xA2A1, + 8660 - 8213: 0xA2A2, + 8704 - 8213: 0xA2A3, + 8706 - 8213: 0xA1D3, + 8707 - 8213: 0xA2A4, + 8711 - 8213: 0xA1D4, + 8712 - 8213: 0xA1F4, + 8715 - 8213: 0xA1F5, + 8719 - 8213: 0xA2B3, + 8721 - 8213: 0xA2B2, + 8730 - 8213: 0xA1EE, + 8733 - 8213: 0xA1F0, + 8734 - 8213: 0xA1C4, + 8736 - 8213: 0xA1D0, + 8741 - 8213: 0xA1AB, + 8743 - 8213: 0xA1FC, + 8744 - 8213: 0xA1FD, + 8745 - 8213: 0xA1FB, + 8746 - 8213: 0xA1FA, + 8747 - 8213: 0xA1F2, + 8748 - 8213: 0xA1F3, + 8750 - 8213: 0xA2B1, + 8756 - 8213: 0xA1C5, + 8757 - 8213: 0xA1F1, + 8764 - 8213: 0xA1AD, + 8765 - 8213: 0xA1EF, + 8786 - 8213: 0xA1D6, + 8800 - 8213: 0xA1C1, + 8801 - 8213: 0xA1D5, + 8804 - 8213: 0xA1C2, + 8805 - 8213: 0xA1C3, + 8810 - 8213: 0xA1EC, + 8811 - 8213: 0xA1ED, + 8834 - 8213: 0xA1F8, + 8835 - 8213: 0xA1F9, + 8838 - 8213: 0xA1F6, + 8839 - 8213: 0xA1F7, + 8857 - 8213: 0xA2C1, + 8869 - 8213: 0xA1D1, + 8978 - 8213: 0xA1D2, + 9312 - 8213: 0xA8E7, + 9313 - 8213: 0xA8E8, + 9314 - 8213: 0xA8E9, + 9315 - 8213: 0xA8EA, + 9316 - 8213: 0xA8EB, + 9317 - 8213: 0xA8EC, + 9318 - 8213: 0xA8ED, + 9319 - 8213: 0xA8EE, + 9320 - 8213: 0xA8EF, + 9321 - 8213: 0xA8F0, + 9322 - 8213: 0xA8F1, + 9323 - 8213: 0xA8F2, + 9324 - 8213: 0xA8F3, + 9325 - 8213: 0xA8F4, + 9326 - 8213: 0xA8F5, + 9332 - 8213: 0xA9E7, + 9333 - 8213: 0xA9E8, + 9334 - 8213: 0xA9E9, + 9335 - 8213: 0xA9EA, + 9336 - 8213: 0xA9EB, + 9337 - 8213: 0xA9EC, + 9338 - 8213: 0xA9ED, + 9339 - 8213: 0xA9EE, + 9340 - 8213: 0xA9EF, + 9341 - 8213: 0xA9F0, + 9342 - 8213: 0xA9F1, + 9343 - 8213: 0xA9F2, + 9344 - 8213: 0xA9F3, + 9345 - 8213: 0xA9F4, + 9346 - 8213: 0xA9F5, + 9372 - 8213: 0xA9CD, + 9373 - 8213: 0xA9CE, + 9374 - 8213: 0xA9CF, + 9375 - 8213: 0xA9D0, + 9376 - 8213: 0xA9D1, + 9377 - 8213: 0xA9D2, + 9378 - 8213: 0xA9D3, + 9379 - 8213: 0xA9D4, + 9380 - 8213: 0xA9D5, + 9381 - 8213: 0xA9D6, + 9382 - 8213: 0xA9D7, + 9383 - 8213: 0xA9D8, + 9384 - 8213: 0xA9D9, + 9385 - 8213: 0xA9DA, + 9386 - 8213: 0xA9DB, + 9387 - 8213: 0xA9DC, + 9388 - 8213: 0xA9DD, + 9389 - 8213: 0xA9DE, + 9390 - 8213: 0xA9DF, + 9391 - 8213: 0xA9E0, + 9392 - 8213: 0xA9E1, + 9393 - 8213: 0xA9E2, + 9394 - 8213: 0xA9E3, + 9395 - 8213: 0xA9E4, + 9396 - 8213: 0xA9E5, + 9397 - 8213: 0xA9E6, + 9424 - 8213: 0xA8CD, + 9425 - 8213: 0xA8CE, + 9426 - 8213: 0xA8CF, + 9427 - 8213: 0xA8D0, + 9428 - 8213: 0xA8D1, + 9429 - 8213: 0xA8D2, + 9430 - 8213: 0xA8D3, + 9431 - 8213: 0xA8D4, + 9432 - 8213: 0xA8D5, + 9433 - 8213: 0xA8D6, + 9434 - 8213: 0xA8D7, + 9435 - 8213: 0xA8D8, + 9436 - 8213: 0xA8D9, + 9437 - 8213: 0xA8DA, + 9438 - 8213: 0xA8DB, + 9439 - 8213: 0xA8DC, + 9440 - 8213: 0xA8DD, + 9441 - 8213: 0xA8DE, + 9442 - 8213: 0xA8DF, + 9443 - 8213: 0xA8E0, + 9444 - 8213: 0xA8E1, + 9445 - 8213: 0xA8E2, + 9446 - 8213: 0xA8E3, + 9447 - 8213: 0xA8E4, + 9448 - 8213: 0xA8E5, + 9449 - 8213: 0xA8E6, + 9472 - 8213: 0xA6A1, + 9473 - 8213: 0xA6AC, + 9474 - 8213: 0xA6A2, + 9475 - 8213: 0xA6AD, + 9484 - 8213: 0xA6A3, + 9485 - 8213: 0xA6C8, + 9486 - 8213: 0xA6C7, + 9487 - 8213: 0xA6AE, + 9488 - 8213: 0xA6A4, + 9489 - 8213: 0xA6C2, + 9490 - 8213: 0xA6C1, + 9491 - 8213: 0xA6AF, + 9492 - 8213: 0xA6A6, + 9493 - 8213: 0xA6C6, + 9494 - 8213: 0xA6C5, + 9495 - 8213: 0xA6B1, + 9496 - 8213: 0xA6A5, + 9497 - 8213: 0xA6C4, + 9498 - 8213: 0xA6C3, + 9499 - 8213: 0xA6B0, + 9500 - 8213: 0xA6A7, + 9501 - 8213: 0xA6BC, + 9502 - 8213: 0xA6C9, + 9503 - 8213: 0xA6CA, + 9504 - 8213: 0xA6B7, + 9505 - 8213: 0xA6CB, + 9506 - 8213: 0xA6CC, + 9507 - 8213: 0xA6B2, + 9508 - 8213: 0xA6A9, + 9509 - 8213: 0xA6BE, + 9510 - 8213: 0xA6CD, + 9511 - 8213: 0xA6CE, + 9512 - 8213: 0xA6B9, + 9513 - 8213: 0xA6CF, + 9514 - 8213: 0xA6D0, + 9515 - 8213: 0xA6B4, + 9516 - 8213: 0xA6A8, + 9517 - 8213: 0xA6D1, + 9518 - 8213: 0xA6D2, + 9519 - 8213: 0xA6B8, + 9520 - 8213: 0xA6BD, + 9521 - 8213: 0xA6D3, + 9522 - 8213: 0xA6D4, + 9523 - 8213: 0xA6B3, + 9524 - 8213: 0xA6AA, + 9525 - 8213: 0xA6D5, + 9526 - 8213: 0xA6D6, + 9527 - 8213: 0xA6BA, + 9528 - 8213: 0xA6BF, + 9529 - 8213: 0xA6D7, + 9530 - 8213: 0xA6D8, + 9531 - 8213: 0xA6B5, + 9532 - 8213: 0xA6AB, + 9533 - 8213: 0xA6D9, + 9534 - 8213: 0xA6DA, + 9535 - 8213: 0xA6BB, + 9536 - 8213: 0xA6DB, + 9537 - 8213: 0xA6DC, + 9538 - 8213: 0xA6C0, + 9539 - 8213: 0xA6DD, + 9540 - 8213: 0xA6DE, + 9541 - 8213: 0xA6DF, + 9542 - 8213: 0xA6E0, + 9543 - 8213: 0xA6E1, + 9544 - 8213: 0xA6E2, + 9545 - 8213: 0xA6E3, + 9546 - 8213: 0xA6E4, + 9547 - 8213: 0xA6B6, + 9618 - 8213: 0xA2C6, + 9632 - 8213: 0xA1E1, + 9633 - 8213: 0xA1E0, + 9635 - 8213: 0xA2C3, + 9636 - 8213: 0xA2C7, + 9637 - 8213: 0xA2C8, + 9638 - 8213: 0xA2CB, + 9639 - 8213: 0xA2CA, + 9640 - 8213: 0xA2C9, + 9641 - 8213: 0xA2CC, + 9650 - 8213: 0xA1E3, + 9651 - 8213: 0xA1E2, + 9654 - 8213: 0xA2BA, + 9655 - 8213: 0xA2B9, + 9660 - 8213: 0xA1E5, + 9661 - 8213: 0xA1E4, + 9664 - 8213: 0xA2B8, + 9665 - 8213: 0xA2B7, + 9670 - 8213: 0xA1DF, + 9671 - 8213: 0xA1DE, + 9672 - 8213: 0xA2C2, + 9675 - 8213: 0xA1DB, + 9678 - 8213: 0xA1DD, + 9679 - 8213: 0xA1DC, + 9680 - 8213: 0xA2C4, + 9681 - 8213: 0xA2C5, + 9733 - 8213: 0xA1DA, + 9734 - 8213: 0xA1D9, + 9742 - 8213: 0xA2CF, + 9743 - 8213: 0xA2CE, + 9756 - 8213: 0xA2D0, + 9758 - 8213: 0xA2D1, + 9792 - 8213: 0xA1CF, + 9794 - 8213: 0xA1CE, + 9824 - 8213: 0xA2BC, + 9825 - 8213: 0xA2BD, + 9827 - 8213: 0xA2C0, + 9828 - 8213: 0xA2BB, + 9829 - 8213: 0xA2BE, + 9831 - 8213: 0xA2BF, + 9832 - 8213: 0xA2CD, + 9833 - 8213: 0xA2DB, + 9834 - 8213: 0xA2DC, + 9836 - 8213: 0xA2DD, + 9837 - 8213: 0xA2DA, +} + +const encode3Low, encode3High = 12288, 13278 + +var encode3 = [...]uint16{ + 12288 - 12288: 0xA1A1, + 12289 - 12288: 0xA1A2, + 12290 - 12288: 0xA1A3, + 12291 - 12288: 0xA1A8, + 12296 - 12288: 0xA1B4, + 12297 - 12288: 0xA1B5, + 12298 - 12288: 0xA1B6, + 12299 - 12288: 0xA1B7, + 12300 - 12288: 0xA1B8, + 12301 - 12288: 0xA1B9, + 12302 - 12288: 0xA1BA, + 12303 - 12288: 0xA1BB, + 12304 - 12288: 0xA1BC, + 12305 - 12288: 0xA1BD, + 12307 - 12288: 0xA1EB, + 12308 - 12288: 0xA1B2, + 12309 - 12288: 0xA1B3, + 12353 - 12288: 0xAAA1, + 12354 - 12288: 0xAAA2, + 12355 - 12288: 0xAAA3, + 12356 - 12288: 0xAAA4, + 12357 - 12288: 0xAAA5, + 12358 - 12288: 0xAAA6, + 12359 - 12288: 0xAAA7, + 12360 - 12288: 0xAAA8, + 12361 - 12288: 0xAAA9, + 12362 - 12288: 0xAAAA, + 12363 - 12288: 0xAAAB, + 12364 - 12288: 0xAAAC, + 12365 - 12288: 0xAAAD, + 12366 - 12288: 0xAAAE, + 12367 - 12288: 0xAAAF, + 12368 - 12288: 0xAAB0, + 12369 - 12288: 0xAAB1, + 12370 - 12288: 0xAAB2, + 12371 - 12288: 0xAAB3, + 12372 - 12288: 0xAAB4, + 12373 - 12288: 0xAAB5, + 12374 - 12288: 0xAAB6, + 12375 - 12288: 0xAAB7, + 12376 - 12288: 0xAAB8, + 12377 - 12288: 0xAAB9, + 12378 - 12288: 0xAABA, + 12379 - 12288: 0xAABB, + 12380 - 12288: 0xAABC, + 12381 - 12288: 0xAABD, + 12382 - 12288: 0xAABE, + 12383 - 12288: 0xAABF, + 12384 - 12288: 0xAAC0, + 12385 - 12288: 0xAAC1, + 12386 - 12288: 0xAAC2, + 12387 - 12288: 0xAAC3, + 12388 - 12288: 0xAAC4, + 12389 - 12288: 0xAAC5, + 12390 - 12288: 0xAAC6, + 12391 - 12288: 0xAAC7, + 12392 - 12288: 0xAAC8, + 12393 - 12288: 0xAAC9, + 12394 - 12288: 0xAACA, + 12395 - 12288: 0xAACB, + 12396 - 12288: 0xAACC, + 12397 - 12288: 0xAACD, + 12398 - 12288: 0xAACE, + 12399 - 12288: 0xAACF, + 12400 - 12288: 0xAAD0, + 12401 - 12288: 0xAAD1, + 12402 - 12288: 0xAAD2, + 12403 - 12288: 0xAAD3, + 12404 - 12288: 0xAAD4, + 12405 - 12288: 0xAAD5, + 12406 - 12288: 0xAAD6, + 12407 - 12288: 0xAAD7, + 12408 - 12288: 0xAAD8, + 12409 - 12288: 0xAAD9, + 12410 - 12288: 0xAADA, + 12411 - 12288: 0xAADB, + 12412 - 12288: 0xAADC, + 12413 - 12288: 0xAADD, + 12414 - 12288: 0xAADE, + 12415 - 12288: 0xAADF, + 12416 - 12288: 0xAAE0, + 12417 - 12288: 0xAAE1, + 12418 - 12288: 0xAAE2, + 12419 - 12288: 0xAAE3, + 12420 - 12288: 0xAAE4, + 12421 - 12288: 0xAAE5, + 12422 - 12288: 0xAAE6, + 12423 - 12288: 0xAAE7, + 12424 - 12288: 0xAAE8, + 12425 - 12288: 0xAAE9, + 12426 - 12288: 0xAAEA, + 12427 - 12288: 0xAAEB, + 12428 - 12288: 0xAAEC, + 12429 - 12288: 0xAAED, + 12430 - 12288: 0xAAEE, + 12431 - 12288: 0xAAEF, + 12432 - 12288: 0xAAF0, + 12433 - 12288: 0xAAF1, + 12434 - 12288: 0xAAF2, + 12435 - 12288: 0xAAF3, + 12449 - 12288: 0xABA1, + 12450 - 12288: 0xABA2, + 12451 - 12288: 0xABA3, + 12452 - 12288: 0xABA4, + 12453 - 12288: 0xABA5, + 12454 - 12288: 0xABA6, + 12455 - 12288: 0xABA7, + 12456 - 12288: 0xABA8, + 12457 - 12288: 0xABA9, + 12458 - 12288: 0xABAA, + 12459 - 12288: 0xABAB, + 12460 - 12288: 0xABAC, + 12461 - 12288: 0xABAD, + 12462 - 12288: 0xABAE, + 12463 - 12288: 0xABAF, + 12464 - 12288: 0xABB0, + 12465 - 12288: 0xABB1, + 12466 - 12288: 0xABB2, + 12467 - 12288: 0xABB3, + 12468 - 12288: 0xABB4, + 12469 - 12288: 0xABB5, + 12470 - 12288: 0xABB6, + 12471 - 12288: 0xABB7, + 12472 - 12288: 0xABB8, + 12473 - 12288: 0xABB9, + 12474 - 12288: 0xABBA, + 12475 - 12288: 0xABBB, + 12476 - 12288: 0xABBC, + 12477 - 12288: 0xABBD, + 12478 - 12288: 0xABBE, + 12479 - 12288: 0xABBF, + 12480 - 12288: 0xABC0, + 12481 - 12288: 0xABC1, + 12482 - 12288: 0xABC2, + 12483 - 12288: 0xABC3, + 12484 - 12288: 0xABC4, + 12485 - 12288: 0xABC5, + 12486 - 12288: 0xABC6, + 12487 - 12288: 0xABC7, + 12488 - 12288: 0xABC8, + 12489 - 12288: 0xABC9, + 12490 - 12288: 0xABCA, + 12491 - 12288: 0xABCB, + 12492 - 12288: 0xABCC, + 12493 - 12288: 0xABCD, + 12494 - 12288: 0xABCE, + 12495 - 12288: 0xABCF, + 12496 - 12288: 0xABD0, + 12497 - 12288: 0xABD1, + 12498 - 12288: 0xABD2, + 12499 - 12288: 0xABD3, + 12500 - 12288: 0xABD4, + 12501 - 12288: 0xABD5, + 12502 - 12288: 0xABD6, + 12503 - 12288: 0xABD7, + 12504 - 12288: 0xABD8, + 12505 - 12288: 0xABD9, + 12506 - 12288: 0xABDA, + 12507 - 12288: 0xABDB, + 12508 - 12288: 0xABDC, + 12509 - 12288: 0xABDD, + 12510 - 12288: 0xABDE, + 12511 - 12288: 0xABDF, + 12512 - 12288: 0xABE0, + 12513 - 12288: 0xABE1, + 12514 - 12288: 0xABE2, + 12515 - 12288: 0xABE3, + 12516 - 12288: 0xABE4, + 12517 - 12288: 0xABE5, + 12518 - 12288: 0xABE6, + 12519 - 12288: 0xABE7, + 12520 - 12288: 0xABE8, + 12521 - 12288: 0xABE9, + 12522 - 12288: 0xABEA, + 12523 - 12288: 0xABEB, + 12524 - 12288: 0xABEC, + 12525 - 12288: 0xABED, + 12526 - 12288: 0xABEE, + 12527 - 12288: 0xABEF, + 12528 - 12288: 0xABF0, + 12529 - 12288: 0xABF1, + 12530 - 12288: 0xABF2, + 12531 - 12288: 0xABF3, + 12532 - 12288: 0xABF4, + 12533 - 12288: 0xABF5, + 12534 - 12288: 0xABF6, + 12593 - 12288: 0xA4A1, + 12594 - 12288: 0xA4A2, + 12595 - 12288: 0xA4A3, + 12596 - 12288: 0xA4A4, + 12597 - 12288: 0xA4A5, + 12598 - 12288: 0xA4A6, + 12599 - 12288: 0xA4A7, + 12600 - 12288: 0xA4A8, + 12601 - 12288: 0xA4A9, + 12602 - 12288: 0xA4AA, + 12603 - 12288: 0xA4AB, + 12604 - 12288: 0xA4AC, + 12605 - 12288: 0xA4AD, + 12606 - 12288: 0xA4AE, + 12607 - 12288: 0xA4AF, + 12608 - 12288: 0xA4B0, + 12609 - 12288: 0xA4B1, + 12610 - 12288: 0xA4B2, + 12611 - 12288: 0xA4B3, + 12612 - 12288: 0xA4B4, + 12613 - 12288: 0xA4B5, + 12614 - 12288: 0xA4B6, + 12615 - 12288: 0xA4B7, + 12616 - 12288: 0xA4B8, + 12617 - 12288: 0xA4B9, + 12618 - 12288: 0xA4BA, + 12619 - 12288: 0xA4BB, + 12620 - 12288: 0xA4BC, + 12621 - 12288: 0xA4BD, + 12622 - 12288: 0xA4BE, + 12623 - 12288: 0xA4BF, + 12624 - 12288: 0xA4C0, + 12625 - 12288: 0xA4C1, + 12626 - 12288: 0xA4C2, + 12627 - 12288: 0xA4C3, + 12628 - 12288: 0xA4C4, + 12629 - 12288: 0xA4C5, + 12630 - 12288: 0xA4C6, + 12631 - 12288: 0xA4C7, + 12632 - 12288: 0xA4C8, + 12633 - 12288: 0xA4C9, + 12634 - 12288: 0xA4CA, + 12635 - 12288: 0xA4CB, + 12636 - 12288: 0xA4CC, + 12637 - 12288: 0xA4CD, + 12638 - 12288: 0xA4CE, + 12639 - 12288: 0xA4CF, + 12640 - 12288: 0xA4D0, + 12641 - 12288: 0xA4D1, + 12642 - 12288: 0xA4D2, + 12643 - 12288: 0xA4D3, + 12644 - 12288: 0xA4D4, + 12645 - 12288: 0xA4D5, + 12646 - 12288: 0xA4D6, + 12647 - 12288: 0xA4D7, + 12648 - 12288: 0xA4D8, + 12649 - 12288: 0xA4D9, + 12650 - 12288: 0xA4DA, + 12651 - 12288: 0xA4DB, + 12652 - 12288: 0xA4DC, + 12653 - 12288: 0xA4DD, + 12654 - 12288: 0xA4DE, + 12655 - 12288: 0xA4DF, + 12656 - 12288: 0xA4E0, + 12657 - 12288: 0xA4E1, + 12658 - 12288: 0xA4E2, + 12659 - 12288: 0xA4E3, + 12660 - 12288: 0xA4E4, + 12661 - 12288: 0xA4E5, + 12662 - 12288: 0xA4E6, + 12663 - 12288: 0xA4E7, + 12664 - 12288: 0xA4E8, + 12665 - 12288: 0xA4E9, + 12666 - 12288: 0xA4EA, + 12667 - 12288: 0xA4EB, + 12668 - 12288: 0xA4EC, + 12669 - 12288: 0xA4ED, + 12670 - 12288: 0xA4EE, + 12671 - 12288: 0xA4EF, + 12672 - 12288: 0xA4F0, + 12673 - 12288: 0xA4F1, + 12674 - 12288: 0xA4F2, + 12675 - 12288: 0xA4F3, + 12676 - 12288: 0xA4F4, + 12677 - 12288: 0xA4F5, + 12678 - 12288: 0xA4F6, + 12679 - 12288: 0xA4F7, + 12680 - 12288: 0xA4F8, + 12681 - 12288: 0xA4F9, + 12682 - 12288: 0xA4FA, + 12683 - 12288: 0xA4FB, + 12684 - 12288: 0xA4FC, + 12685 - 12288: 0xA4FD, + 12686 - 12288: 0xA4FE, + 12800 - 12288: 0xA9B1, + 12801 - 12288: 0xA9B2, + 12802 - 12288: 0xA9B3, + 12803 - 12288: 0xA9B4, + 12804 - 12288: 0xA9B5, + 12805 - 12288: 0xA9B6, + 12806 - 12288: 0xA9B7, + 12807 - 12288: 0xA9B8, + 12808 - 12288: 0xA9B9, + 12809 - 12288: 0xA9BA, + 12810 - 12288: 0xA9BB, + 12811 - 12288: 0xA9BC, + 12812 - 12288: 0xA9BD, + 12813 - 12288: 0xA9BE, + 12814 - 12288: 0xA9BF, + 12815 - 12288: 0xA9C0, + 12816 - 12288: 0xA9C1, + 12817 - 12288: 0xA9C2, + 12818 - 12288: 0xA9C3, + 12819 - 12288: 0xA9C4, + 12820 - 12288: 0xA9C5, + 12821 - 12288: 0xA9C6, + 12822 - 12288: 0xA9C7, + 12823 - 12288: 0xA9C8, + 12824 - 12288: 0xA9C9, + 12825 - 12288: 0xA9CA, + 12826 - 12288: 0xA9CB, + 12827 - 12288: 0xA9CC, + 12828 - 12288: 0xA2DF, + 12896 - 12288: 0xA8B1, + 12897 - 12288: 0xA8B2, + 12898 - 12288: 0xA8B3, + 12899 - 12288: 0xA8B4, + 12900 - 12288: 0xA8B5, + 12901 - 12288: 0xA8B6, + 12902 - 12288: 0xA8B7, + 12903 - 12288: 0xA8B8, + 12904 - 12288: 0xA8B9, + 12905 - 12288: 0xA8BA, + 12906 - 12288: 0xA8BB, + 12907 - 12288: 0xA8BC, + 12908 - 12288: 0xA8BD, + 12909 - 12288: 0xA8BE, + 12910 - 12288: 0xA8BF, + 12911 - 12288: 0xA8C0, + 12912 - 12288: 0xA8C1, + 12913 - 12288: 0xA8C2, + 12914 - 12288: 0xA8C3, + 12915 - 12288: 0xA8C4, + 12916 - 12288: 0xA8C5, + 12917 - 12288: 0xA8C6, + 12918 - 12288: 0xA8C7, + 12919 - 12288: 0xA8C8, + 12920 - 12288: 0xA8C9, + 12921 - 12288: 0xA8CA, + 12922 - 12288: 0xA8CB, + 12923 - 12288: 0xA8CC, + 12927 - 12288: 0xA2DE, + 13184 - 12288: 0xA7C9, + 13185 - 12288: 0xA7CA, + 13186 - 12288: 0xA7CB, + 13187 - 12288: 0xA7CC, + 13188 - 12288: 0xA7CD, + 13192 - 12288: 0xA7BA, + 13193 - 12288: 0xA7BB, + 13194 - 12288: 0xA7DC, + 13195 - 12288: 0xA7DD, + 13196 - 12288: 0xA7DE, + 13197 - 12288: 0xA7B6, + 13198 - 12288: 0xA7B7, + 13199 - 12288: 0xA7B8, + 13200 - 12288: 0xA7D4, + 13201 - 12288: 0xA7D5, + 13202 - 12288: 0xA7D6, + 13203 - 12288: 0xA7D7, + 13204 - 12288: 0xA7D8, + 13205 - 12288: 0xA7A1, + 13206 - 12288: 0xA7A2, + 13207 - 12288: 0xA7A3, + 13208 - 12288: 0xA7A5, + 13209 - 12288: 0xA7AB, + 13210 - 12288: 0xA7AC, + 13211 - 12288: 0xA7AD, + 13212 - 12288: 0xA7AE, + 13213 - 12288: 0xA7AF, + 13214 - 12288: 0xA7B0, + 13215 - 12288: 0xA7B1, + 13216 - 12288: 0xA7B2, + 13217 - 12288: 0xA7B3, + 13218 - 12288: 0xA7B4, + 13219 - 12288: 0xA7A7, + 13220 - 12288: 0xA7A8, + 13221 - 12288: 0xA7A9, + 13222 - 12288: 0xA7AA, + 13223 - 12288: 0xA7BD, + 13224 - 12288: 0xA7BE, + 13225 - 12288: 0xA7E5, + 13226 - 12288: 0xA7E6, + 13227 - 12288: 0xA7E7, + 13228 - 12288: 0xA7E8, + 13229 - 12288: 0xA7E1, + 13230 - 12288: 0xA7E2, + 13231 - 12288: 0xA7E3, + 13232 - 12288: 0xA7BF, + 13233 - 12288: 0xA7C0, + 13234 - 12288: 0xA7C1, + 13235 - 12288: 0xA7C2, + 13236 - 12288: 0xA7C3, + 13237 - 12288: 0xA7C4, + 13238 - 12288: 0xA7C5, + 13239 - 12288: 0xA7C6, + 13240 - 12288: 0xA7C7, + 13241 - 12288: 0xA7C8, + 13242 - 12288: 0xA7CE, + 13243 - 12288: 0xA7CF, + 13244 - 12288: 0xA7D0, + 13245 - 12288: 0xA7D1, + 13246 - 12288: 0xA7D2, + 13247 - 12288: 0xA7D3, + 13248 - 12288: 0xA7DA, + 13249 - 12288: 0xA7DB, + 13250 - 12288: 0xA2E3, + 13251 - 12288: 0xA7EC, + 13252 - 12288: 0xA7A6, + 13253 - 12288: 0xA7E0, + 13254 - 12288: 0xA7EF, + 13255 - 12288: 0xA2E1, + 13256 - 12288: 0xA7BC, + 13257 - 12288: 0xA7ED, + 13258 - 12288: 0xA7B5, + 13263 - 12288: 0xA7B9, + 13264 - 12288: 0xA7EA, + 13267 - 12288: 0xA7EB, + 13270 - 12288: 0xA7DF, + 13272 - 12288: 0xA2E4, + 13275 - 12288: 0xA7E4, + 13276 - 12288: 0xA7EE, + 13277 - 12288: 0xA7E9, +} + +const encode4Low, encode4High = 161, 1106 + +var encode4 = [...]uint16{ + 161 - 161: 0xA2AE, + 164 - 161: 0xA2B4, + 167 - 161: 0xA1D7, + 168 - 161: 0xA1A7, + 170 - 161: 0xA8A3, + 173 - 161: 0xA1A9, + 174 - 161: 0xA2E7, + 176 - 161: 0xA1C6, + 177 - 161: 0xA1BE, + 178 - 161: 0xA9F7, + 179 - 161: 0xA9F8, + 180 - 161: 0xA2A5, + 182 - 161: 0xA2D2, + 183 - 161: 0xA1A4, + 184 - 161: 0xA2AC, + 185 - 161: 0xA9F6, + 186 - 161: 0xA8AC, + 188 - 161: 0xA8F9, + 189 - 161: 0xA8F6, + 190 - 161: 0xA8FA, + 191 - 161: 0xA2AF, + 198 - 161: 0xA8A1, + 208 - 161: 0xA8A2, + 215 - 161: 0xA1BF, + 216 - 161: 0xA8AA, + 222 - 161: 0xA8AD, + 223 - 161: 0xA9AC, + 230 - 161: 0xA9A1, + 240 - 161: 0xA9A3, + 247 - 161: 0xA1C0, + 248 - 161: 0xA9AA, + 254 - 161: 0xA9AD, + 273 - 161: 0xA9A2, + 294 - 161: 0xA8A4, + 295 - 161: 0xA9A4, + 305 - 161: 0xA9A5, + 306 - 161: 0xA8A6, + 307 - 161: 0xA9A6, + 312 - 161: 0xA9A7, + 319 - 161: 0xA8A8, + 320 - 161: 0xA9A8, + 321 - 161: 0xA8A9, + 322 - 161: 0xA9A9, + 329 - 161: 0xA9B0, + 330 - 161: 0xA8AF, + 331 - 161: 0xA9AF, + 338 - 161: 0xA8AB, + 339 - 161: 0xA9AB, + 358 - 161: 0xA8AE, + 359 - 161: 0xA9AE, + 711 - 161: 0xA2A7, + 720 - 161: 0xA2B0, + 728 - 161: 0xA2A8, + 729 - 161: 0xA2AB, + 730 - 161: 0xA2AA, + 731 - 161: 0xA2AD, + 733 - 161: 0xA2A9, + 913 - 161: 0xA5C1, + 914 - 161: 0xA5C2, + 915 - 161: 0xA5C3, + 916 - 161: 0xA5C4, + 917 - 161: 0xA5C5, + 918 - 161: 0xA5C6, + 919 - 161: 0xA5C7, + 920 - 161: 0xA5C8, + 921 - 161: 0xA5C9, + 922 - 161: 0xA5CA, + 923 - 161: 0xA5CB, + 924 - 161: 0xA5CC, + 925 - 161: 0xA5CD, + 926 - 161: 0xA5CE, + 927 - 161: 0xA5CF, + 928 - 161: 0xA5D0, + 929 - 161: 0xA5D1, + 931 - 161: 0xA5D2, + 932 - 161: 0xA5D3, + 933 - 161: 0xA5D4, + 934 - 161: 0xA5D5, + 935 - 161: 0xA5D6, + 936 - 161: 0xA5D7, + 937 - 161: 0xA5D8, + 945 - 161: 0xA5E1, + 946 - 161: 0xA5E2, + 947 - 161: 0xA5E3, + 948 - 161: 0xA5E4, + 949 - 161: 0xA5E5, + 950 - 161: 0xA5E6, + 951 - 161: 0xA5E7, + 952 - 161: 0xA5E8, + 953 - 161: 0xA5E9, + 954 - 161: 0xA5EA, + 955 - 161: 0xA5EB, + 956 - 161: 0xA5EC, + 957 - 161: 0xA5ED, + 958 - 161: 0xA5EE, + 959 - 161: 0xA5EF, + 960 - 161: 0xA5F0, + 961 - 161: 0xA5F1, + 963 - 161: 0xA5F2, + 964 - 161: 0xA5F3, + 965 - 161: 0xA5F4, + 966 - 161: 0xA5F5, + 967 - 161: 0xA5F6, + 968 - 161: 0xA5F7, + 969 - 161: 0xA5F8, + 1025 - 161: 0xACA7, + 1040 - 161: 0xACA1, + 1041 - 161: 0xACA2, + 1042 - 161: 0xACA3, + 1043 - 161: 0xACA4, + 1044 - 161: 0xACA5, + 1045 - 161: 0xACA6, + 1046 - 161: 0xACA8, + 1047 - 161: 0xACA9, + 1048 - 161: 0xACAA, + 1049 - 161: 0xACAB, + 1050 - 161: 0xACAC, + 1051 - 161: 0xACAD, + 1052 - 161: 0xACAE, + 1053 - 161: 0xACAF, + 1054 - 161: 0xACB0, + 1055 - 161: 0xACB1, + 1056 - 161: 0xACB2, + 1057 - 161: 0xACB3, + 1058 - 161: 0xACB4, + 1059 - 161: 0xACB5, + 1060 - 161: 0xACB6, + 1061 - 161: 0xACB7, + 1062 - 161: 0xACB8, + 1063 - 161: 0xACB9, + 1064 - 161: 0xACBA, + 1065 - 161: 0xACBB, + 1066 - 161: 0xACBC, + 1067 - 161: 0xACBD, + 1068 - 161: 0xACBE, + 1069 - 161: 0xACBF, + 1070 - 161: 0xACC0, + 1071 - 161: 0xACC1, + 1072 - 161: 0xACD1, + 1073 - 161: 0xACD2, + 1074 - 161: 0xACD3, + 1075 - 161: 0xACD4, + 1076 - 161: 0xACD5, + 1077 - 161: 0xACD6, + 1078 - 161: 0xACD8, + 1079 - 161: 0xACD9, + 1080 - 161: 0xACDA, + 1081 - 161: 0xACDB, + 1082 - 161: 0xACDC, + 1083 - 161: 0xACDD, + 1084 - 161: 0xACDE, + 1085 - 161: 0xACDF, + 1086 - 161: 0xACE0, + 1087 - 161: 0xACE1, + 1088 - 161: 0xACE2, + 1089 - 161: 0xACE3, + 1090 - 161: 0xACE4, + 1091 - 161: 0xACE5, + 1092 - 161: 0xACE6, + 1093 - 161: 0xACE7, + 1094 - 161: 0xACE8, + 1095 - 161: 0xACE9, + 1096 - 161: 0xACEA, + 1097 - 161: 0xACEB, + 1098 - 161: 0xACEC, + 1099 - 161: 0xACED, + 1100 - 161: 0xACEE, + 1101 - 161: 0xACEF, + 1102 - 161: 0xACF0, + 1103 - 161: 0xACF1, + 1105 - 161: 0xACD7, +} + +const encode5Low, encode5High = 63744, 64012 + +var encode5 = [...]uint16{ + 63744 - 63744: 0xCBD0, + 63745 - 63744: 0xCBD6, + 63746 - 63744: 0xCBE7, + 63747 - 63744: 0xCDCF, + 63748 - 63744: 0xCDE8, + 63749 - 63744: 0xCEAD, + 63750 - 63744: 0xCFFB, + 63751 - 63744: 0xD0A2, + 63752 - 63744: 0xD0B8, + 63753 - 63744: 0xD0D0, + 63754 - 63744: 0xD0DD, + 63755 - 63744: 0xD1D4, + 63756 - 63744: 0xD1D5, + 63757 - 63744: 0xD1D8, + 63758 - 63744: 0xD1DB, + 63759 - 63744: 0xD1DC, + 63760 - 63744: 0xD1DD, + 63761 - 63744: 0xD1DE, + 63762 - 63744: 0xD1DF, + 63763 - 63744: 0xD1E0, + 63764 - 63744: 0xD1E2, + 63765 - 63744: 0xD1E3, + 63766 - 63744: 0xD1E4, + 63767 - 63744: 0xD1E5, + 63768 - 63744: 0xD1E6, + 63769 - 63744: 0xD1E8, + 63770 - 63744: 0xD1E9, + 63771 - 63744: 0xD1EA, + 63772 - 63744: 0xD1EB, + 63773 - 63744: 0xD1ED, + 63774 - 63744: 0xD1EF, + 63775 - 63744: 0xD1F0, + 63776 - 63744: 0xD1F2, + 63777 - 63744: 0xD1F6, + 63778 - 63744: 0xD1FA, + 63779 - 63744: 0xD1FC, + 63780 - 63744: 0xD1FD, + 63781 - 63744: 0xD1FE, + 63782 - 63744: 0xD2A2, + 63783 - 63744: 0xD2A3, + 63784 - 63744: 0xD2A7, + 63785 - 63744: 0xD2A8, + 63786 - 63744: 0xD2A9, + 63787 - 63744: 0xD2AA, + 63788 - 63744: 0xD2AB, + 63789 - 63744: 0xD2AD, + 63790 - 63744: 0xD2B2, + 63791 - 63744: 0xD2BE, + 63792 - 63744: 0xD2C2, + 63793 - 63744: 0xD2C3, + 63794 - 63744: 0xD2C4, + 63795 - 63744: 0xD2C6, + 63796 - 63744: 0xD2C7, + 63797 - 63744: 0xD2C8, + 63798 - 63744: 0xD2C9, + 63799 - 63744: 0xD2CA, + 63800 - 63744: 0xD2CB, + 63801 - 63744: 0xD2CD, + 63802 - 63744: 0xD2CE, + 63803 - 63744: 0xD2CF, + 63804 - 63744: 0xD2D0, + 63805 - 63744: 0xD2D1, + 63806 - 63744: 0xD2D2, + 63807 - 63744: 0xD2D3, + 63808 - 63744: 0xD2D4, + 63809 - 63744: 0xD2D5, + 63810 - 63744: 0xD2D6, + 63811 - 63744: 0xD2D7, + 63812 - 63744: 0xD2D9, + 63813 - 63744: 0xD2DA, + 63814 - 63744: 0xD2DE, + 63815 - 63744: 0xD2DF, + 63816 - 63744: 0xD2E1, + 63817 - 63744: 0xD2E2, + 63818 - 63744: 0xD2E4, + 63819 - 63744: 0xD2E5, + 63820 - 63744: 0xD2E6, + 63821 - 63744: 0xD2E7, + 63822 - 63744: 0xD2E8, + 63823 - 63744: 0xD2E9, + 63824 - 63744: 0xD2EA, + 63825 - 63744: 0xD2EB, + 63826 - 63744: 0xD2F0, + 63827 - 63744: 0xD2F1, + 63828 - 63744: 0xD2F2, + 63829 - 63744: 0xD2F3, + 63830 - 63744: 0xD2F4, + 63831 - 63744: 0xD2F5, + 63832 - 63744: 0xD2F7, + 63833 - 63744: 0xD2F8, + 63834 - 63744: 0xD4E6, + 63835 - 63744: 0xD4FC, + 63836 - 63744: 0xD5A5, + 63837 - 63744: 0xD5AB, + 63838 - 63744: 0xD5AE, + 63839 - 63744: 0xD6B8, + 63840 - 63744: 0xD6CD, + 63841 - 63744: 0xD7CB, + 63842 - 63744: 0xD7E4, + 63843 - 63744: 0xDBC5, + 63844 - 63744: 0xDBE4, + 63845 - 63744: 0xDCA5, + 63846 - 63744: 0xDDA5, + 63847 - 63744: 0xDDD5, + 63848 - 63744: 0xDDF4, + 63849 - 63744: 0xDEFC, + 63850 - 63744: 0xDEFE, + 63851 - 63744: 0xDFB3, + 63852 - 63744: 0xDFE1, + 63853 - 63744: 0xDFE8, + 63854 - 63744: 0xE0F1, + 63855 - 63744: 0xE1AD, + 63856 - 63744: 0xE1ED, + 63857 - 63744: 0xE3F5, + 63858 - 63744: 0xE4A1, + 63859 - 63744: 0xE4A9, + 63860 - 63744: 0xE5AE, + 63861 - 63744: 0xE5B1, + 63862 - 63744: 0xE5B2, + 63863 - 63744: 0xE5B9, + 63864 - 63744: 0xE5BB, + 63865 - 63744: 0xE5BC, + 63866 - 63744: 0xE5C4, + 63867 - 63744: 0xE5CE, + 63868 - 63744: 0xE5D0, + 63869 - 63744: 0xE5D2, + 63870 - 63744: 0xE5D6, + 63871 - 63744: 0xE5FA, + 63872 - 63744: 0xE5FB, + 63873 - 63744: 0xE5FC, + 63874 - 63744: 0xE5FE, + 63875 - 63744: 0xE6A1, + 63876 - 63744: 0xE6A4, + 63877 - 63744: 0xE6A7, + 63878 - 63744: 0xE6AD, + 63879 - 63744: 0xE6AF, + 63880 - 63744: 0xE6B0, + 63881 - 63744: 0xE6B1, + 63882 - 63744: 0xE6B3, + 63883 - 63744: 0xE6B7, + 63884 - 63744: 0xE6B8, + 63885 - 63744: 0xE6BC, + 63886 - 63744: 0xE6C4, + 63887 - 63744: 0xE6C6, + 63888 - 63744: 0xE6C7, + 63889 - 63744: 0xE6CA, + 63890 - 63744: 0xE6D2, + 63891 - 63744: 0xE6D6, + 63892 - 63744: 0xE6D9, + 63893 - 63744: 0xE6DC, + 63894 - 63744: 0xE6DF, + 63895 - 63744: 0xE6E1, + 63896 - 63744: 0xE6E4, + 63897 - 63744: 0xE6E5, + 63898 - 63744: 0xE6E6, + 63899 - 63744: 0xE6E8, + 63900 - 63744: 0xE6EA, + 63901 - 63744: 0xE6EB, + 63902 - 63744: 0xE6EC, + 63903 - 63744: 0xE6EF, + 63904 - 63744: 0xE6F1, + 63905 - 63744: 0xE6F2, + 63906 - 63744: 0xE6F5, + 63907 - 63744: 0xE6F6, + 63908 - 63744: 0xE6F7, + 63909 - 63744: 0xE6F9, + 63910 - 63744: 0xE7A1, + 63911 - 63744: 0xE7A6, + 63912 - 63744: 0xE7A9, + 63913 - 63744: 0xE7AA, + 63914 - 63744: 0xE7AC, + 63915 - 63744: 0xE7AD, + 63916 - 63744: 0xE7B0, + 63917 - 63744: 0xE7BF, + 63918 - 63744: 0xE7C1, + 63919 - 63744: 0xE7C6, + 63920 - 63744: 0xE7C7, + 63921 - 63744: 0xE7CB, + 63922 - 63744: 0xE7CD, + 63923 - 63744: 0xE7CF, + 63924 - 63744: 0xE7D0, + 63925 - 63744: 0xE7D3, + 63926 - 63744: 0xE7DF, + 63927 - 63744: 0xE7E4, + 63928 - 63744: 0xE7E6, + 63929 - 63744: 0xE7F7, + 63930 - 63744: 0xE8E7, + 63931 - 63744: 0xE8E8, + 63932 - 63744: 0xE8F0, + 63933 - 63744: 0xE8F1, + 63934 - 63744: 0xE8F7, + 63935 - 63744: 0xE8F9, + 63936 - 63744: 0xE8FB, + 63937 - 63744: 0xE8FE, + 63938 - 63744: 0xE9A7, + 63939 - 63744: 0xE9AC, + 63940 - 63744: 0xE9CC, + 63941 - 63744: 0xE9F7, + 63942 - 63744: 0xEAC1, + 63943 - 63744: 0xEAE5, + 63944 - 63744: 0xEAF4, + 63945 - 63744: 0xEAF7, + 63946 - 63744: 0xEAFC, + 63947 - 63744: 0xEAFE, + 63948 - 63744: 0xEBA4, + 63949 - 63744: 0xEBA7, + 63950 - 63744: 0xEBA9, + 63951 - 63744: 0xEBAA, + 63952 - 63744: 0xEBBA, + 63953 - 63744: 0xEBBB, + 63954 - 63744: 0xEBBD, + 63955 - 63744: 0xEBC1, + 63956 - 63744: 0xEBC2, + 63957 - 63744: 0xEBC6, + 63958 - 63744: 0xEBC7, + 63959 - 63744: 0xEBCC, + 63960 - 63744: 0xEBCF, + 63961 - 63744: 0xEBD0, + 63962 - 63744: 0xEBD1, + 63963 - 63744: 0xEBD2, + 63964 - 63744: 0xEBD8, + 63965 - 63744: 0xECA6, + 63966 - 63744: 0xECA7, + 63967 - 63744: 0xECAA, + 63968 - 63744: 0xECAF, + 63969 - 63744: 0xECB0, + 63970 - 63744: 0xECB1, + 63971 - 63744: 0xECB2, + 63972 - 63744: 0xECB5, + 63973 - 63744: 0xECB8, + 63974 - 63744: 0xECBA, + 63975 - 63744: 0xECC0, + 63976 - 63744: 0xECC1, + 63977 - 63744: 0xECC5, + 63978 - 63744: 0xECC6, + 63979 - 63744: 0xECC9, + 63980 - 63744: 0xECCA, + 63981 - 63744: 0xECD5, + 63982 - 63744: 0xECDD, + 63983 - 63744: 0xECDE, + 63984 - 63744: 0xECE1, + 63985 - 63744: 0xECE4, + 63986 - 63744: 0xECE7, + 63987 - 63744: 0xECE8, + 63988 - 63744: 0xECF7, + 63989 - 63744: 0xECF8, + 63990 - 63744: 0xECFA, + 63991 - 63744: 0xEDA1, + 63992 - 63744: 0xEDA2, + 63993 - 63744: 0xEDA3, + 63994 - 63744: 0xEDEE, + 63995 - 63744: 0xEEDB, + 63996 - 63744: 0xF2BD, + 63997 - 63744: 0xF2FA, + 63998 - 63744: 0xF3B1, + 63999 - 63744: 0xF4A7, + 64000 - 63744: 0xF4EE, + 64001 - 63744: 0xF6F4, + 64002 - 63744: 0xF6F6, + 64003 - 63744: 0xF7B8, + 64004 - 63744: 0xF7C8, + 64005 - 63744: 0xF7D3, + 64006 - 63744: 0xF8DB, + 64007 - 63744: 0xF8F0, + 64008 - 63744: 0xFAA1, + 64009 - 63744: 0xFAA2, + 64010 - 63744: 0xFAE6, + 64011 - 63744: 0xFCA9, +} + +const encode6Low, encode6High = 65281, 65511 + +var encode6 = [...]uint16{ + 65281 - 65281: 0xA3A1, + 65282 - 65281: 0xA3A2, + 65283 - 65281: 0xA3A3, + 65284 - 65281: 0xA3A4, + 65285 - 65281: 0xA3A5, + 65286 - 65281: 0xA3A6, + 65287 - 65281: 0xA3A7, + 65288 - 65281: 0xA3A8, + 65289 - 65281: 0xA3A9, + 65290 - 65281: 0xA3AA, + 65291 - 65281: 0xA3AB, + 65292 - 65281: 0xA3AC, + 65293 - 65281: 0xA3AD, + 65294 - 65281: 0xA3AE, + 65295 - 65281: 0xA3AF, + 65296 - 65281: 0xA3B0, + 65297 - 65281: 0xA3B1, + 65298 - 65281: 0xA3B2, + 65299 - 65281: 0xA3B3, + 65300 - 65281: 0xA3B4, + 65301 - 65281: 0xA3B5, + 65302 - 65281: 0xA3B6, + 65303 - 65281: 0xA3B7, + 65304 - 65281: 0xA3B8, + 65305 - 65281: 0xA3B9, + 65306 - 65281: 0xA3BA, + 65307 - 65281: 0xA3BB, + 65308 - 65281: 0xA3BC, + 65309 - 65281: 0xA3BD, + 65310 - 65281: 0xA3BE, + 65311 - 65281: 0xA3BF, + 65312 - 65281: 0xA3C0, + 65313 - 65281: 0xA3C1, + 65314 - 65281: 0xA3C2, + 65315 - 65281: 0xA3C3, + 65316 - 65281: 0xA3C4, + 65317 - 65281: 0xA3C5, + 65318 - 65281: 0xA3C6, + 65319 - 65281: 0xA3C7, + 65320 - 65281: 0xA3C8, + 65321 - 65281: 0xA3C9, + 65322 - 65281: 0xA3CA, + 65323 - 65281: 0xA3CB, + 65324 - 65281: 0xA3CC, + 65325 - 65281: 0xA3CD, + 65326 - 65281: 0xA3CE, + 65327 - 65281: 0xA3CF, + 65328 - 65281: 0xA3D0, + 65329 - 65281: 0xA3D1, + 65330 - 65281: 0xA3D2, + 65331 - 65281: 0xA3D3, + 65332 - 65281: 0xA3D4, + 65333 - 65281: 0xA3D5, + 65334 - 65281: 0xA3D6, + 65335 - 65281: 0xA3D7, + 65336 - 65281: 0xA3D8, + 65337 - 65281: 0xA3D9, + 65338 - 65281: 0xA3DA, + 65339 - 65281: 0xA3DB, + 65340 - 65281: 0xA1AC, + 65341 - 65281: 0xA3DD, + 65342 - 65281: 0xA3DE, + 65343 - 65281: 0xA3DF, + 65344 - 65281: 0xA3E0, + 65345 - 65281: 0xA3E1, + 65346 - 65281: 0xA3E2, + 65347 - 65281: 0xA3E3, + 65348 - 65281: 0xA3E4, + 65349 - 65281: 0xA3E5, + 65350 - 65281: 0xA3E6, + 65351 - 65281: 0xA3E7, + 65352 - 65281: 0xA3E8, + 65353 - 65281: 0xA3E9, + 65354 - 65281: 0xA3EA, + 65355 - 65281: 0xA3EB, + 65356 - 65281: 0xA3EC, + 65357 - 65281: 0xA3ED, + 65358 - 65281: 0xA3EE, + 65359 - 65281: 0xA3EF, + 65360 - 65281: 0xA3F0, + 65361 - 65281: 0xA3F1, + 65362 - 65281: 0xA3F2, + 65363 - 65281: 0xA3F3, + 65364 - 65281: 0xA3F4, + 65365 - 65281: 0xA3F5, + 65366 - 65281: 0xA3F6, + 65367 - 65281: 0xA3F7, + 65368 - 65281: 0xA3F8, + 65369 - 65281: 0xA3F9, + 65370 - 65281: 0xA3FA, + 65371 - 65281: 0xA3FB, + 65372 - 65281: 0xA3FC, + 65373 - 65281: 0xA3FD, + 65374 - 65281: 0xA2A6, + 65504 - 65281: 0xA1CB, + 65505 - 65281: 0xA1CC, + 65506 - 65281: 0xA1FE, + 65507 - 65281: 0xA3FE, + 65509 - 65281: 0xA1CD, + 65510 - 65281: 0xA3DC, +} diff --git a/tests/vendor/golang.org/x/text/encoding/simplifiedchinese/all.go b/tests/vendor/golang.org/x/text/encoding/simplifiedchinese/all.go new file mode 100644 index 000000000..5ecc526cf --- /dev/null +++ b/tests/vendor/golang.org/x/text/encoding/simplifiedchinese/all.go @@ -0,0 +1,12 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package simplifiedchinese + +import ( + "golang.org/x/text/encoding" +) + +// All is a list of all defined encodings in this package. +var All = []encoding.Encoding{GB18030, GBK, HZGB2312} diff --git a/tests/vendor/golang.org/x/text/encoding/simplifiedchinese/gbk.go b/tests/vendor/golang.org/x/text/encoding/simplifiedchinese/gbk.go new file mode 100644 index 000000000..0e0fabfd6 --- /dev/null +++ b/tests/vendor/golang.org/x/text/encoding/simplifiedchinese/gbk.go @@ -0,0 +1,273 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package simplifiedchinese + +import ( + "unicode/utf8" + + "golang.org/x/text/encoding" + "golang.org/x/text/encoding/internal" + "golang.org/x/text/encoding/internal/identifier" + "golang.org/x/text/transform" +) + +var ( + // GB18030 is the GB18030 encoding. + GB18030 encoding.Encoding = &gbk18030 + // GBK is the GBK encoding. It encodes an extension of the GB2312 character set + // and is also known as Code Page 936. + GBK encoding.Encoding = &gbk +) + +var gbk = internal.Encoding{ + &internal.SimpleEncoding{ + gbkDecoder{gb18030: false}, + gbkEncoder{gb18030: false}, + }, + "GBK", + identifier.GBK, +} + +var gbk18030 = internal.Encoding{ + &internal.SimpleEncoding{ + gbkDecoder{gb18030: true}, + gbkEncoder{gb18030: true}, + }, + "GB18030", + identifier.GB18030, +} + +type gbkDecoder struct { + transform.NopResetter + gb18030 bool +} + +func (d gbkDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + r, size := rune(0), 0 +loop: + for ; nSrc < len(src); nSrc += size { + switch c0 := src[nSrc]; { + case c0 < utf8.RuneSelf: + r, size = rune(c0), 1 + + // Microsoft's Code Page 936 extends GBK 1.0 to encode the euro sign U+20AC + // as 0x80. The HTML5 specification at http://encoding.spec.whatwg.org/#gbk + // says to treat "gbk" as Code Page 936. + // GBK’s decoder is gb18030’s decoder. https://encoding.spec.whatwg.org/#gbk-decoder + // If byte is 0x80, return code point U+20AC. https://encoding.spec.whatwg.org/#gb18030-decoder + case c0 == 0x80: + r, size = '€', 1 + + case c0 < 0xff: + if nSrc+1 >= len(src) { + if !atEOF { + err = transform.ErrShortSrc + break loop + } + r, size = utf8.RuneError, 1 + goto write + } + c1 := src[nSrc+1] + switch { + case 0x40 <= c1 && c1 < 0x7f: + c1 -= 0x40 + case 0x80 <= c1 && c1 < 0xff: + c1 -= 0x41 + case d.gb18030 && 0x30 <= c1 && c1 < 0x40: + if nSrc+3 >= len(src) { + if !atEOF { + err = transform.ErrShortSrc + break loop + } + // The second byte here is always ASCII, so we can set size + // to 1 in all cases. + r, size = utf8.RuneError, 1 + goto write + } + c2 := src[nSrc+2] + if c2 < 0x81 || 0xff <= c2 { + r, size = utf8.RuneError, 1 + goto write + } + c3 := src[nSrc+3] + if c3 < 0x30 || 0x3a <= c3 { + r, size = utf8.RuneError, 1 + goto write + } + size = 4 + r = ((rune(c0-0x81)*10+rune(c1-0x30))*126+rune(c2-0x81))*10 + rune(c3-0x30) + if r < 39420 { + i, j := 0, len(gb18030) + for i < j { + h := i + (j-i)/2 + if r >= rune(gb18030[h][0]) { + i = h + 1 + } else { + j = h + } + } + dec := &gb18030[i-1] + r += rune(dec[1]) - rune(dec[0]) + goto write + } + r -= 189000 + if 0 <= r && r < 0x100000 { + r += 0x10000 + } else { + r, size = utf8.RuneError, 1 + } + goto write + default: + r, size = utf8.RuneError, 1 + goto write + } + r, size = '\ufffd', 2 + if i := int(c0-0x81)*190 + int(c1); i < len(decode) { + r = rune(decode[i]) + if r == 0 { + r = '\ufffd' + } + } + + default: + r, size = utf8.RuneError, 1 + } + + write: + if nDst+utf8.RuneLen(r) > len(dst) { + err = transform.ErrShortDst + break loop + } + nDst += utf8.EncodeRune(dst[nDst:], r) + } + return nDst, nSrc, err +} + +type gbkEncoder struct { + transform.NopResetter + gb18030 bool +} + +func (e gbkEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + r, r2, size := rune(0), rune(0), 0 + for ; nSrc < len(src); nSrc += size { + r = rune(src[nSrc]) + + // Decode a 1-byte rune. + if r < utf8.RuneSelf { + size = 1 + + } else { + // Decode a multi-byte rune. + r, size = utf8.DecodeRune(src[nSrc:]) + if size == 1 { + // All valid runes of size 1 (those below utf8.RuneSelf) were + // handled above. We have invalid UTF-8 or we haven't seen the + // full character yet. + if !atEOF && !utf8.FullRune(src[nSrc:]) { + err = transform.ErrShortSrc + break + } + } + + // func init checks that the switch covers all tables. + switch { + case encode0Low <= r && r < encode0High: + if r2 = rune(encode0[r-encode0Low]); r2 != 0 { + goto write2 + } + case encode1Low <= r && r < encode1High: + // Microsoft's Code Page 936 extends GBK 1.0 to encode the euro sign U+20AC + // as 0x80. The HTML5 specification at http://encoding.spec.whatwg.org/#gbk + // says to treat "gbk" as Code Page 936. + // GBK’s encoder is gb18030’s encoder with its _is GBK_ set to true. https://encoding.spec.whatwg.org/#gbk-encoder + // If _is GBK_ is true and code point is U+20AC, return byte 0x80. https://encoding.spec.whatwg.org/#gb18030-encoder + if !e.gb18030 && r == '€' { + r = 0x80 + goto write1 + } + if r2 = rune(encode1[r-encode1Low]); r2 != 0 { + goto write2 + } + case encode2Low <= r && r < encode2High: + if r2 = rune(encode2[r-encode2Low]); r2 != 0 { + goto write2 + } + case encode3Low <= r && r < encode3High: + if r2 = rune(encode3[r-encode3Low]); r2 != 0 { + goto write2 + } + case encode4Low <= r && r < encode4High: + if r2 = rune(encode4[r-encode4Low]); r2 != 0 { + goto write2 + } + } + + if e.gb18030 { + if r < 0x10000 { + i, j := 0, len(gb18030) + for i < j { + h := i + (j-i)/2 + if r >= rune(gb18030[h][1]) { + i = h + 1 + } else { + j = h + } + } + dec := &gb18030[i-1] + r += rune(dec[0]) - rune(dec[1]) + goto write4 + } else if r < 0x110000 { + r += 189000 - 0x10000 + goto write4 + } + } + err = internal.ErrASCIIReplacement + break + } + + write1: + if nDst >= len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst] = uint8(r) + nDst++ + continue + + write2: + if nDst+2 > len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst+0] = uint8(r2 >> 8) + dst[nDst+1] = uint8(r2) + nDst += 2 + continue + + write4: + if nDst+4 > len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst+3] = uint8(r%10 + 0x30) + r /= 10 + dst[nDst+2] = uint8(r%126 + 0x81) + r /= 126 + dst[nDst+1] = uint8(r%10 + 0x30) + r /= 10 + dst[nDst+0] = uint8(r + 0x81) + nDst += 4 + continue + } + return nDst, nSrc, err +} + +func init() { + // Check that the hard-coded encode switch covers all tables. + if numEncodeTables != 5 { + panic("bad numEncodeTables") + } +} diff --git a/tests/vendor/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go b/tests/vendor/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go new file mode 100644 index 000000000..e15b7bf6a --- /dev/null +++ b/tests/vendor/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go @@ -0,0 +1,245 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package simplifiedchinese + +import ( + "unicode/utf8" + + "golang.org/x/text/encoding" + "golang.org/x/text/encoding/internal" + "golang.org/x/text/encoding/internal/identifier" + "golang.org/x/text/transform" +) + +// HZGB2312 is the HZ-GB2312 encoding. +var HZGB2312 encoding.Encoding = &hzGB2312 + +var hzGB2312 = internal.Encoding{ + internal.FuncEncoding{hzGB2312NewDecoder, hzGB2312NewEncoder}, + "HZ-GB2312", + identifier.HZGB2312, +} + +func hzGB2312NewDecoder() transform.Transformer { + return new(hzGB2312Decoder) +} + +func hzGB2312NewEncoder() transform.Transformer { + return new(hzGB2312Encoder) +} + +const ( + asciiState = iota + gbState +) + +type hzGB2312Decoder int + +func (d *hzGB2312Decoder) Reset() { + *d = asciiState +} + +func (d *hzGB2312Decoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + r, size := rune(0), 0 +loop: + for ; nSrc < len(src); nSrc += size { + c0 := src[nSrc] + if c0 >= utf8.RuneSelf { + r, size = utf8.RuneError, 1 + goto write + } + + if c0 == '~' { + if nSrc+1 >= len(src) { + if !atEOF { + err = transform.ErrShortSrc + break loop + } + r, size = utf8.RuneError, 1 + goto write + } + size = 2 + switch src[nSrc+1] { + case '{': + *d = gbState + continue + case '}': + *d = asciiState + continue + case '~': + if nDst >= len(dst) { + err = transform.ErrShortDst + break loop + } + dst[nDst] = '~' + nDst++ + continue + case '\n': + continue + default: + r = utf8.RuneError + goto write + } + } + + if *d == asciiState { + r, size = rune(c0), 1 + } else { + if nSrc+1 >= len(src) { + if !atEOF { + err = transform.ErrShortSrc + break loop + } + r, size = utf8.RuneError, 1 + goto write + } + size = 2 + c1 := src[nSrc+1] + if c0 < 0x21 || 0x7e <= c0 || c1 < 0x21 || 0x7f <= c1 { + // error + } else if i := int(c0-0x01)*190 + int(c1+0x3f); i < len(decode) { + r = rune(decode[i]) + if r != 0 { + goto write + } + } + if c1 > utf8.RuneSelf { + // Be consistent and always treat non-ASCII as a single error. + size = 1 + } + r = utf8.RuneError + } + + write: + if nDst+utf8.RuneLen(r) > len(dst) { + err = transform.ErrShortDst + break loop + } + nDst += utf8.EncodeRune(dst[nDst:], r) + } + return nDst, nSrc, err +} + +type hzGB2312Encoder int + +func (d *hzGB2312Encoder) Reset() { + *d = asciiState +} + +func (e *hzGB2312Encoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + r, size := rune(0), 0 + for ; nSrc < len(src); nSrc += size { + r = rune(src[nSrc]) + + // Decode a 1-byte rune. + if r < utf8.RuneSelf { + size = 1 + if r == '~' { + if nDst+2 > len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst+0] = '~' + dst[nDst+1] = '~' + nDst += 2 + continue + } else if *e != asciiState { + if nDst+3 > len(dst) { + err = transform.ErrShortDst + break + } + *e = asciiState + dst[nDst+0] = '~' + dst[nDst+1] = '}' + nDst += 2 + } else if nDst >= len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst] = uint8(r) + nDst += 1 + continue + + } + + // Decode a multi-byte rune. + r, size = utf8.DecodeRune(src[nSrc:]) + if size == 1 { + // All valid runes of size 1 (those below utf8.RuneSelf) were + // handled above. We have invalid UTF-8 or we haven't seen the + // full character yet. + if !atEOF && !utf8.FullRune(src[nSrc:]) { + err = transform.ErrShortSrc + break + } + } + + // func init checks that the switch covers all tables. + switch { + case encode0Low <= r && r < encode0High: + if r = rune(encode0[r-encode0Low]); r != 0 { + goto writeGB + } + case encode1Low <= r && r < encode1High: + if r = rune(encode1[r-encode1Low]); r != 0 { + goto writeGB + } + case encode2Low <= r && r < encode2High: + if r = rune(encode2[r-encode2Low]); r != 0 { + goto writeGB + } + case encode3Low <= r && r < encode3High: + if r = rune(encode3[r-encode3Low]); r != 0 { + goto writeGB + } + case encode4Low <= r && r < encode4High: + if r = rune(encode4[r-encode4Low]); r != 0 { + goto writeGB + } + } + + terminateInASCIIState: + // Switch back to ASCII state in case of error so that an ASCII + // replacement character can be written in the correct state. + if *e != asciiState { + if nDst+2 > len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst+0] = '~' + dst[nDst+1] = '}' + nDst += 2 + } + err = internal.ErrASCIIReplacement + break + + writeGB: + c0 := uint8(r>>8) - 0x80 + c1 := uint8(r) - 0x80 + if c0 < 0x21 || 0x7e <= c0 || c1 < 0x21 || 0x7f <= c1 { + goto terminateInASCIIState + } + if *e == asciiState { + if nDst+4 > len(dst) { + err = transform.ErrShortDst + break + } + *e = gbState + dst[nDst+0] = '~' + dst[nDst+1] = '{' + nDst += 2 + } else if nDst+2 > len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst+0] = c0 + dst[nDst+1] = c1 + nDst += 2 + continue + } + // TODO: should one always terminate in ASCII state to make it safe to + // concatenate two HZ-GB2312-encoded strings? + return nDst, nSrc, err +} diff --git a/tests/vendor/golang.org/x/text/encoding/simplifiedchinese/tables.go b/tests/vendor/golang.org/x/text/encoding/simplifiedchinese/tables.go new file mode 100644 index 000000000..415f52a11 --- /dev/null +++ b/tests/vendor/golang.org/x/text/encoding/simplifiedchinese/tables.go @@ -0,0 +1,43999 @@ +// generated by go run maketables.go; DO NOT EDIT + +// Package simplifiedchinese provides Simplified Chinese encodings such as GBK. +package simplifiedchinese // import "golang.org/x/text/encoding/simplifiedchinese" + +// gb18030 is the table from http://encoding.spec.whatwg.org/index-gb18030.txt +var gb18030 = [...][2]uint16{ + {0x0000, 0x0080}, + {0x0024, 0x00a5}, + {0x0026, 0x00a9}, + {0x002d, 0x00b2}, + {0x0032, 0x00b8}, + {0x0051, 0x00d8}, + {0x0059, 0x00e2}, + {0x005f, 0x00eb}, + {0x0060, 0x00ee}, + {0x0064, 0x00f4}, + {0x0067, 0x00f8}, + {0x0068, 0x00fb}, + {0x0069, 0x00fd}, + {0x006d, 0x0102}, + {0x007e, 0x0114}, + {0x0085, 0x011c}, + {0x0094, 0x012c}, + {0x00ac, 0x0145}, + {0x00af, 0x0149}, + {0x00b3, 0x014e}, + {0x00d0, 0x016c}, + {0x0132, 0x01cf}, + {0x0133, 0x01d1}, + {0x0134, 0x01d3}, + {0x0135, 0x01d5}, + {0x0136, 0x01d7}, + {0x0137, 0x01d9}, + {0x0138, 0x01db}, + {0x0139, 0x01dd}, + {0x0155, 0x01fa}, + {0x01ac, 0x0252}, + {0x01bb, 0x0262}, + {0x0220, 0x02c8}, + {0x0221, 0x02cc}, + {0x022e, 0x02da}, + {0x02e5, 0x03a2}, + {0x02e6, 0x03aa}, + {0x02ed, 0x03c2}, + {0x02ee, 0x03ca}, + {0x0325, 0x0402}, + {0x0333, 0x0450}, + {0x0334, 0x0452}, + {0x1ef2, 0x2011}, + {0x1ef4, 0x2017}, + {0x1ef5, 0x201a}, + {0x1ef7, 0x201e}, + {0x1efe, 0x2027}, + {0x1f07, 0x2031}, + {0x1f08, 0x2034}, + {0x1f09, 0x2036}, + {0x1f0e, 0x203c}, + {0x1f7e, 0x20ad}, + {0x1fd4, 0x2104}, + {0x1fd5, 0x2106}, + {0x1fd8, 0x210a}, + {0x1fe4, 0x2117}, + {0x1fee, 0x2122}, + {0x202c, 0x216c}, + {0x2030, 0x217a}, + {0x2046, 0x2194}, + {0x2048, 0x219a}, + {0x20b6, 0x2209}, + {0x20bc, 0x2210}, + {0x20bd, 0x2212}, + {0x20c0, 0x2216}, + {0x20c4, 0x221b}, + {0x20c6, 0x2221}, + {0x20c8, 0x2224}, + {0x20c9, 0x2226}, + {0x20ca, 0x222c}, + {0x20cc, 0x222f}, + {0x20d1, 0x2238}, + {0x20d6, 0x223e}, + {0x20e0, 0x2249}, + {0x20e3, 0x224d}, + {0x20e8, 0x2253}, + {0x20f5, 0x2262}, + {0x20f7, 0x2268}, + {0x20fd, 0x2270}, + {0x2122, 0x2296}, + {0x2125, 0x229a}, + {0x2130, 0x22a6}, + {0x2149, 0x22c0}, + {0x219b, 0x2313}, + {0x22e8, 0x246a}, + {0x22f2, 0x249c}, + {0x2356, 0x254c}, + {0x235a, 0x2574}, + {0x2367, 0x2590}, + {0x236a, 0x2596}, + {0x2374, 0x25a2}, + {0x2384, 0x25b4}, + {0x238c, 0x25be}, + {0x2394, 0x25c8}, + {0x2397, 0x25cc}, + {0x2399, 0x25d0}, + {0x23ab, 0x25e6}, + {0x23ca, 0x2607}, + {0x23cc, 0x260a}, + {0x2402, 0x2641}, + {0x2403, 0x2643}, + {0x2c41, 0x2e82}, + {0x2c43, 0x2e85}, + {0x2c46, 0x2e89}, + {0x2c48, 0x2e8d}, + {0x2c52, 0x2e98}, + {0x2c61, 0x2ea8}, + {0x2c63, 0x2eab}, + {0x2c66, 0x2eaf}, + {0x2c6a, 0x2eb4}, + {0x2c6c, 0x2eb8}, + {0x2c6f, 0x2ebc}, + {0x2c7d, 0x2ecb}, + {0x2da2, 0x2ffc}, + {0x2da6, 0x3004}, + {0x2da7, 0x3018}, + {0x2dac, 0x301f}, + {0x2dae, 0x302a}, + {0x2dc2, 0x303f}, + {0x2dc4, 0x3094}, + {0x2dcb, 0x309f}, + {0x2dcd, 0x30f7}, + {0x2dd2, 0x30ff}, + {0x2dd8, 0x312a}, + {0x2ece, 0x322a}, + {0x2ed5, 0x3232}, + {0x2f46, 0x32a4}, + {0x3030, 0x3390}, + {0x303c, 0x339f}, + {0x303e, 0x33a2}, + {0x3060, 0x33c5}, + {0x3069, 0x33cf}, + {0x306b, 0x33d3}, + {0x306d, 0x33d6}, + {0x30de, 0x3448}, + {0x3109, 0x3474}, + {0x3233, 0x359f}, + {0x32a2, 0x360f}, + {0x32ad, 0x361b}, + {0x35aa, 0x3919}, + {0x35ff, 0x396f}, + {0x365f, 0x39d1}, + {0x366d, 0x39e0}, + {0x3700, 0x3a74}, + {0x37da, 0x3b4f}, + {0x38f9, 0x3c6f}, + {0x396a, 0x3ce1}, + {0x3cdf, 0x4057}, + {0x3de7, 0x4160}, + {0x3fbe, 0x4338}, + {0x4032, 0x43ad}, + {0x4036, 0x43b2}, + {0x4061, 0x43de}, + {0x4159, 0x44d7}, + {0x42ce, 0x464d}, + {0x42e2, 0x4662}, + {0x43a3, 0x4724}, + {0x43a8, 0x472a}, + {0x43fa, 0x477d}, + {0x440a, 0x478e}, + {0x45c3, 0x4948}, + {0x45f5, 0x497b}, + {0x45f7, 0x497e}, + {0x45fb, 0x4984}, + {0x45fc, 0x4987}, + {0x4610, 0x499c}, + {0x4613, 0x49a0}, + {0x4629, 0x49b8}, + {0x48e8, 0x4c78}, + {0x490f, 0x4ca4}, + {0x497e, 0x4d1a}, + {0x4a12, 0x4daf}, + {0x4a63, 0x9fa6}, + {0x82bd, 0xe76c}, + {0x82be, 0xe7c8}, + {0x82bf, 0xe7e7}, + {0x82cc, 0xe815}, + {0x82cd, 0xe819}, + {0x82d2, 0xe81f}, + {0x82d9, 0xe827}, + {0x82dd, 0xe82d}, + {0x82e1, 0xe833}, + {0x82e9, 0xe83c}, + {0x82f0, 0xe844}, + {0x8300, 0xe856}, + {0x830e, 0xe865}, + {0x93d5, 0xf92d}, + {0x9421, 0xf97a}, + {0x943c, 0xf996}, + {0x948d, 0xf9e8}, + {0x9496, 0xf9f2}, + {0x94b0, 0xfa10}, + {0x94b1, 0xfa12}, + {0x94b2, 0xfa15}, + {0x94b5, 0xfa19}, + {0x94bb, 0xfa22}, + {0x94bc, 0xfa25}, + {0x94be, 0xfa2a}, + {0x98c4, 0xfe32}, + {0x98c5, 0xfe45}, + {0x98c9, 0xfe53}, + {0x98ca, 0xfe58}, + {0x98cb, 0xfe67}, + {0x98cc, 0xfe6c}, + {0x9961, 0xff5f}, + {0x99e2, 0xffe6}, +} + +// decode is the decoding table from GBK code to Unicode. +// It is defined at http://encoding.spec.whatwg.org/index-gbk.txt +var decode = [...]uint16{ + 0: 0x4E02, + 1: 0x4E04, + 2: 0x4E05, + 3: 0x4E06, + 4: 0x4E0F, + 5: 0x4E12, + 6: 0x4E17, + 7: 0x4E1F, + 8: 0x4E20, + 9: 0x4E21, + 10: 0x4E23, + 11: 0x4E26, + 12: 0x4E29, + 13: 0x4E2E, + 14: 0x4E2F, + 15: 0x4E31, + 16: 0x4E33, + 17: 0x4E35, + 18: 0x4E37, + 19: 0x4E3C, + 20: 0x4E40, + 21: 0x4E41, + 22: 0x4E42, + 23: 0x4E44, + 24: 0x4E46, + 25: 0x4E4A, + 26: 0x4E51, + 27: 0x4E55, + 28: 0x4E57, + 29: 0x4E5A, + 30: 0x4E5B, + 31: 0x4E62, + 32: 0x4E63, + 33: 0x4E64, + 34: 0x4E65, + 35: 0x4E67, + 36: 0x4E68, + 37: 0x4E6A, + 38: 0x4E6B, + 39: 0x4E6C, + 40: 0x4E6D, + 41: 0x4E6E, + 42: 0x4E6F, + 43: 0x4E72, + 44: 0x4E74, + 45: 0x4E75, + 46: 0x4E76, + 47: 0x4E77, + 48: 0x4E78, + 49: 0x4E79, + 50: 0x4E7A, + 51: 0x4E7B, + 52: 0x4E7C, + 53: 0x4E7D, + 54: 0x4E7F, + 55: 0x4E80, + 56: 0x4E81, + 57: 0x4E82, + 58: 0x4E83, + 59: 0x4E84, + 60: 0x4E85, + 61: 0x4E87, + 62: 0x4E8A, + 63: 0x4E90, + 64: 0x4E96, + 65: 0x4E97, + 66: 0x4E99, + 67: 0x4E9C, + 68: 0x4E9D, + 69: 0x4E9E, + 70: 0x4EA3, + 71: 0x4EAA, + 72: 0x4EAF, + 73: 0x4EB0, + 74: 0x4EB1, + 75: 0x4EB4, + 76: 0x4EB6, + 77: 0x4EB7, + 78: 0x4EB8, + 79: 0x4EB9, + 80: 0x4EBC, + 81: 0x4EBD, + 82: 0x4EBE, + 83: 0x4EC8, + 84: 0x4ECC, + 85: 0x4ECF, + 86: 0x4ED0, + 87: 0x4ED2, + 88: 0x4EDA, + 89: 0x4EDB, + 90: 0x4EDC, + 91: 0x4EE0, + 92: 0x4EE2, + 93: 0x4EE6, + 94: 0x4EE7, + 95: 0x4EE9, + 96: 0x4EED, + 97: 0x4EEE, + 98: 0x4EEF, + 99: 0x4EF1, + 100: 0x4EF4, + 101: 0x4EF8, + 102: 0x4EF9, + 103: 0x4EFA, + 104: 0x4EFC, + 105: 0x4EFE, + 106: 0x4F00, + 107: 0x4F02, + 108: 0x4F03, + 109: 0x4F04, + 110: 0x4F05, + 111: 0x4F06, + 112: 0x4F07, + 113: 0x4F08, + 114: 0x4F0B, + 115: 0x4F0C, + 116: 0x4F12, + 117: 0x4F13, + 118: 0x4F14, + 119: 0x4F15, + 120: 0x4F16, + 121: 0x4F1C, + 122: 0x4F1D, + 123: 0x4F21, + 124: 0x4F23, + 125: 0x4F28, + 126: 0x4F29, + 127: 0x4F2C, + 128: 0x4F2D, + 129: 0x4F2E, + 130: 0x4F31, + 131: 0x4F33, + 132: 0x4F35, + 133: 0x4F37, + 134: 0x4F39, + 135: 0x4F3B, + 136: 0x4F3E, + 137: 0x4F3F, + 138: 0x4F40, + 139: 0x4F41, + 140: 0x4F42, + 141: 0x4F44, + 142: 0x4F45, + 143: 0x4F47, + 144: 0x4F48, + 145: 0x4F49, + 146: 0x4F4A, + 147: 0x4F4B, + 148: 0x4F4C, + 149: 0x4F52, + 150: 0x4F54, + 151: 0x4F56, + 152: 0x4F61, + 153: 0x4F62, + 154: 0x4F66, + 155: 0x4F68, + 156: 0x4F6A, + 157: 0x4F6B, + 158: 0x4F6D, + 159: 0x4F6E, + 160: 0x4F71, + 161: 0x4F72, + 162: 0x4F75, + 163: 0x4F77, + 164: 0x4F78, + 165: 0x4F79, + 166: 0x4F7A, + 167: 0x4F7D, + 168: 0x4F80, + 169: 0x4F81, + 170: 0x4F82, + 171: 0x4F85, + 172: 0x4F86, + 173: 0x4F87, + 174: 0x4F8A, + 175: 0x4F8C, + 176: 0x4F8E, + 177: 0x4F90, + 178: 0x4F92, + 179: 0x4F93, + 180: 0x4F95, + 181: 0x4F96, + 182: 0x4F98, + 183: 0x4F99, + 184: 0x4F9A, + 185: 0x4F9C, + 186: 0x4F9E, + 187: 0x4F9F, + 188: 0x4FA1, + 189: 0x4FA2, + 190: 0x4FA4, + 191: 0x4FAB, + 192: 0x4FAD, + 193: 0x4FB0, + 194: 0x4FB1, + 195: 0x4FB2, + 196: 0x4FB3, + 197: 0x4FB4, + 198: 0x4FB6, + 199: 0x4FB7, + 200: 0x4FB8, + 201: 0x4FB9, + 202: 0x4FBA, + 203: 0x4FBB, + 204: 0x4FBC, + 205: 0x4FBD, + 206: 0x4FBE, + 207: 0x4FC0, + 208: 0x4FC1, + 209: 0x4FC2, + 210: 0x4FC6, + 211: 0x4FC7, + 212: 0x4FC8, + 213: 0x4FC9, + 214: 0x4FCB, + 215: 0x4FCC, + 216: 0x4FCD, + 217: 0x4FD2, + 218: 0x4FD3, + 219: 0x4FD4, + 220: 0x4FD5, + 221: 0x4FD6, + 222: 0x4FD9, + 223: 0x4FDB, + 224: 0x4FE0, + 225: 0x4FE2, + 226: 0x4FE4, + 227: 0x4FE5, + 228: 0x4FE7, + 229: 0x4FEB, + 230: 0x4FEC, + 231: 0x4FF0, + 232: 0x4FF2, + 233: 0x4FF4, + 234: 0x4FF5, + 235: 0x4FF6, + 236: 0x4FF7, + 237: 0x4FF9, + 238: 0x4FFB, + 239: 0x4FFC, + 240: 0x4FFD, + 241: 0x4FFF, + 242: 0x5000, + 243: 0x5001, + 244: 0x5002, + 245: 0x5003, + 246: 0x5004, + 247: 0x5005, + 248: 0x5006, + 249: 0x5007, + 250: 0x5008, + 251: 0x5009, + 252: 0x500A, + 253: 0x500B, + 254: 0x500E, + 255: 0x5010, + 256: 0x5011, + 257: 0x5013, + 258: 0x5015, + 259: 0x5016, + 260: 0x5017, + 261: 0x501B, + 262: 0x501D, + 263: 0x501E, + 264: 0x5020, + 265: 0x5022, + 266: 0x5023, + 267: 0x5024, + 268: 0x5027, + 269: 0x502B, + 270: 0x502F, + 271: 0x5030, + 272: 0x5031, + 273: 0x5032, + 274: 0x5033, + 275: 0x5034, + 276: 0x5035, + 277: 0x5036, + 278: 0x5037, + 279: 0x5038, + 280: 0x5039, + 281: 0x503B, + 282: 0x503D, + 283: 0x503F, + 284: 0x5040, + 285: 0x5041, + 286: 0x5042, + 287: 0x5044, + 288: 0x5045, + 289: 0x5046, + 290: 0x5049, + 291: 0x504A, + 292: 0x504B, + 293: 0x504D, + 294: 0x5050, + 295: 0x5051, + 296: 0x5052, + 297: 0x5053, + 298: 0x5054, + 299: 0x5056, + 300: 0x5057, + 301: 0x5058, + 302: 0x5059, + 303: 0x505B, + 304: 0x505D, + 305: 0x505E, + 306: 0x505F, + 307: 0x5060, + 308: 0x5061, + 309: 0x5062, + 310: 0x5063, + 311: 0x5064, + 312: 0x5066, + 313: 0x5067, + 314: 0x5068, + 315: 0x5069, + 316: 0x506A, + 317: 0x506B, + 318: 0x506D, + 319: 0x506E, + 320: 0x506F, + 321: 0x5070, + 322: 0x5071, + 323: 0x5072, + 324: 0x5073, + 325: 0x5074, + 326: 0x5075, + 327: 0x5078, + 328: 0x5079, + 329: 0x507A, + 330: 0x507C, + 331: 0x507D, + 332: 0x5081, + 333: 0x5082, + 334: 0x5083, + 335: 0x5084, + 336: 0x5086, + 337: 0x5087, + 338: 0x5089, + 339: 0x508A, + 340: 0x508B, + 341: 0x508C, + 342: 0x508E, + 343: 0x508F, + 344: 0x5090, + 345: 0x5091, + 346: 0x5092, + 347: 0x5093, + 348: 0x5094, + 349: 0x5095, + 350: 0x5096, + 351: 0x5097, + 352: 0x5098, + 353: 0x5099, + 354: 0x509A, + 355: 0x509B, + 356: 0x509C, + 357: 0x509D, + 358: 0x509E, + 359: 0x509F, + 360: 0x50A0, + 361: 0x50A1, + 362: 0x50A2, + 363: 0x50A4, + 364: 0x50A6, + 365: 0x50AA, + 366: 0x50AB, + 367: 0x50AD, + 368: 0x50AE, + 369: 0x50AF, + 370: 0x50B0, + 371: 0x50B1, + 372: 0x50B3, + 373: 0x50B4, + 374: 0x50B5, + 375: 0x50B6, + 376: 0x50B7, + 377: 0x50B8, + 378: 0x50B9, + 379: 0x50BC, + 380: 0x50BD, + 381: 0x50BE, + 382: 0x50BF, + 383: 0x50C0, + 384: 0x50C1, + 385: 0x50C2, + 386: 0x50C3, + 387: 0x50C4, + 388: 0x50C5, + 389: 0x50C6, + 390: 0x50C7, + 391: 0x50C8, + 392: 0x50C9, + 393: 0x50CA, + 394: 0x50CB, + 395: 0x50CC, + 396: 0x50CD, + 397: 0x50CE, + 398: 0x50D0, + 399: 0x50D1, + 400: 0x50D2, + 401: 0x50D3, + 402: 0x50D4, + 403: 0x50D5, + 404: 0x50D7, + 405: 0x50D8, + 406: 0x50D9, + 407: 0x50DB, + 408: 0x50DC, + 409: 0x50DD, + 410: 0x50DE, + 411: 0x50DF, + 412: 0x50E0, + 413: 0x50E1, + 414: 0x50E2, + 415: 0x50E3, + 416: 0x50E4, + 417: 0x50E5, + 418: 0x50E8, + 419: 0x50E9, + 420: 0x50EA, + 421: 0x50EB, + 422: 0x50EF, + 423: 0x50F0, + 424: 0x50F1, + 425: 0x50F2, + 426: 0x50F4, + 427: 0x50F6, + 428: 0x50F7, + 429: 0x50F8, + 430: 0x50F9, + 431: 0x50FA, + 432: 0x50FC, + 433: 0x50FD, + 434: 0x50FE, + 435: 0x50FF, + 436: 0x5100, + 437: 0x5101, + 438: 0x5102, + 439: 0x5103, + 440: 0x5104, + 441: 0x5105, + 442: 0x5108, + 443: 0x5109, + 444: 0x510A, + 445: 0x510C, + 446: 0x510D, + 447: 0x510E, + 448: 0x510F, + 449: 0x5110, + 450: 0x5111, + 451: 0x5113, + 452: 0x5114, + 453: 0x5115, + 454: 0x5116, + 455: 0x5117, + 456: 0x5118, + 457: 0x5119, + 458: 0x511A, + 459: 0x511B, + 460: 0x511C, + 461: 0x511D, + 462: 0x511E, + 463: 0x511F, + 464: 0x5120, + 465: 0x5122, + 466: 0x5123, + 467: 0x5124, + 468: 0x5125, + 469: 0x5126, + 470: 0x5127, + 471: 0x5128, + 472: 0x5129, + 473: 0x512A, + 474: 0x512B, + 475: 0x512C, + 476: 0x512D, + 477: 0x512E, + 478: 0x512F, + 479: 0x5130, + 480: 0x5131, + 481: 0x5132, + 482: 0x5133, + 483: 0x5134, + 484: 0x5135, + 485: 0x5136, + 486: 0x5137, + 487: 0x5138, + 488: 0x5139, + 489: 0x513A, + 490: 0x513B, + 491: 0x513C, + 492: 0x513D, + 493: 0x513E, + 494: 0x5142, + 495: 0x5147, + 496: 0x514A, + 497: 0x514C, + 498: 0x514E, + 499: 0x514F, + 500: 0x5150, + 501: 0x5152, + 502: 0x5153, + 503: 0x5157, + 504: 0x5158, + 505: 0x5159, + 506: 0x515B, + 507: 0x515D, + 508: 0x515E, + 509: 0x515F, + 510: 0x5160, + 511: 0x5161, + 512: 0x5163, + 513: 0x5164, + 514: 0x5166, + 515: 0x5167, + 516: 0x5169, + 517: 0x516A, + 518: 0x516F, + 519: 0x5172, + 520: 0x517A, + 521: 0x517E, + 522: 0x517F, + 523: 0x5183, + 524: 0x5184, + 525: 0x5186, + 526: 0x5187, + 527: 0x518A, + 528: 0x518B, + 529: 0x518E, + 530: 0x518F, + 531: 0x5190, + 532: 0x5191, + 533: 0x5193, + 534: 0x5194, + 535: 0x5198, + 536: 0x519A, + 537: 0x519D, + 538: 0x519E, + 539: 0x519F, + 540: 0x51A1, + 541: 0x51A3, + 542: 0x51A6, + 543: 0x51A7, + 544: 0x51A8, + 545: 0x51A9, + 546: 0x51AA, + 547: 0x51AD, + 548: 0x51AE, + 549: 0x51B4, + 550: 0x51B8, + 551: 0x51B9, + 552: 0x51BA, + 553: 0x51BE, + 554: 0x51BF, + 555: 0x51C1, + 556: 0x51C2, + 557: 0x51C3, + 558: 0x51C5, + 559: 0x51C8, + 560: 0x51CA, + 561: 0x51CD, + 562: 0x51CE, + 563: 0x51D0, + 564: 0x51D2, + 565: 0x51D3, + 566: 0x51D4, + 567: 0x51D5, + 568: 0x51D6, + 569: 0x51D7, + 570: 0x51D8, + 571: 0x51D9, + 572: 0x51DA, + 573: 0x51DC, + 574: 0x51DE, + 575: 0x51DF, + 576: 0x51E2, + 577: 0x51E3, + 578: 0x51E5, + 579: 0x51E6, + 580: 0x51E7, + 581: 0x51E8, + 582: 0x51E9, + 583: 0x51EA, + 584: 0x51EC, + 585: 0x51EE, + 586: 0x51F1, + 587: 0x51F2, + 588: 0x51F4, + 589: 0x51F7, + 590: 0x51FE, + 591: 0x5204, + 592: 0x5205, + 593: 0x5209, + 594: 0x520B, + 595: 0x520C, + 596: 0x520F, + 597: 0x5210, + 598: 0x5213, + 599: 0x5214, + 600: 0x5215, + 601: 0x521C, + 602: 0x521E, + 603: 0x521F, + 604: 0x5221, + 605: 0x5222, + 606: 0x5223, + 607: 0x5225, + 608: 0x5226, + 609: 0x5227, + 610: 0x522A, + 611: 0x522C, + 612: 0x522F, + 613: 0x5231, + 614: 0x5232, + 615: 0x5234, + 616: 0x5235, + 617: 0x523C, + 618: 0x523E, + 619: 0x5244, + 620: 0x5245, + 621: 0x5246, + 622: 0x5247, + 623: 0x5248, + 624: 0x5249, + 625: 0x524B, + 626: 0x524E, + 627: 0x524F, + 628: 0x5252, + 629: 0x5253, + 630: 0x5255, + 631: 0x5257, + 632: 0x5258, + 633: 0x5259, + 634: 0x525A, + 635: 0x525B, + 636: 0x525D, + 637: 0x525F, + 638: 0x5260, + 639: 0x5262, + 640: 0x5263, + 641: 0x5264, + 642: 0x5266, + 643: 0x5268, + 644: 0x526B, + 645: 0x526C, + 646: 0x526D, + 647: 0x526E, + 648: 0x5270, + 649: 0x5271, + 650: 0x5273, + 651: 0x5274, + 652: 0x5275, + 653: 0x5276, + 654: 0x5277, + 655: 0x5278, + 656: 0x5279, + 657: 0x527A, + 658: 0x527B, + 659: 0x527C, + 660: 0x527E, + 661: 0x5280, + 662: 0x5283, + 663: 0x5284, + 664: 0x5285, + 665: 0x5286, + 666: 0x5287, + 667: 0x5289, + 668: 0x528A, + 669: 0x528B, + 670: 0x528C, + 671: 0x528D, + 672: 0x528E, + 673: 0x528F, + 674: 0x5291, + 675: 0x5292, + 676: 0x5294, + 677: 0x5295, + 678: 0x5296, + 679: 0x5297, + 680: 0x5298, + 681: 0x5299, + 682: 0x529A, + 683: 0x529C, + 684: 0x52A4, + 685: 0x52A5, + 686: 0x52A6, + 687: 0x52A7, + 688: 0x52AE, + 689: 0x52AF, + 690: 0x52B0, + 691: 0x52B4, + 692: 0x52B5, + 693: 0x52B6, + 694: 0x52B7, + 695: 0x52B8, + 696: 0x52B9, + 697: 0x52BA, + 698: 0x52BB, + 699: 0x52BC, + 700: 0x52BD, + 701: 0x52C0, + 702: 0x52C1, + 703: 0x52C2, + 704: 0x52C4, + 705: 0x52C5, + 706: 0x52C6, + 707: 0x52C8, + 708: 0x52CA, + 709: 0x52CC, + 710: 0x52CD, + 711: 0x52CE, + 712: 0x52CF, + 713: 0x52D1, + 714: 0x52D3, + 715: 0x52D4, + 716: 0x52D5, + 717: 0x52D7, + 718: 0x52D9, + 719: 0x52DA, + 720: 0x52DB, + 721: 0x52DC, + 722: 0x52DD, + 723: 0x52DE, + 724: 0x52E0, + 725: 0x52E1, + 726: 0x52E2, + 727: 0x52E3, + 728: 0x52E5, + 729: 0x52E6, + 730: 0x52E7, + 731: 0x52E8, + 732: 0x52E9, + 733: 0x52EA, + 734: 0x52EB, + 735: 0x52EC, + 736: 0x52ED, + 737: 0x52EE, + 738: 0x52EF, + 739: 0x52F1, + 740: 0x52F2, + 741: 0x52F3, + 742: 0x52F4, + 743: 0x52F5, + 744: 0x52F6, + 745: 0x52F7, + 746: 0x52F8, + 747: 0x52FB, + 748: 0x52FC, + 749: 0x52FD, + 750: 0x5301, + 751: 0x5302, + 752: 0x5303, + 753: 0x5304, + 754: 0x5307, + 755: 0x5309, + 756: 0x530A, + 757: 0x530B, + 758: 0x530C, + 759: 0x530E, + 760: 0x5311, + 761: 0x5312, + 762: 0x5313, + 763: 0x5314, + 764: 0x5318, + 765: 0x531B, + 766: 0x531C, + 767: 0x531E, + 768: 0x531F, + 769: 0x5322, + 770: 0x5324, + 771: 0x5325, + 772: 0x5327, + 773: 0x5328, + 774: 0x5329, + 775: 0x532B, + 776: 0x532C, + 777: 0x532D, + 778: 0x532F, + 779: 0x5330, + 780: 0x5331, + 781: 0x5332, + 782: 0x5333, + 783: 0x5334, + 784: 0x5335, + 785: 0x5336, + 786: 0x5337, + 787: 0x5338, + 788: 0x533C, + 789: 0x533D, + 790: 0x5340, + 791: 0x5342, + 792: 0x5344, + 793: 0x5346, + 794: 0x534B, + 795: 0x534C, + 796: 0x534D, + 797: 0x5350, + 798: 0x5354, + 799: 0x5358, + 800: 0x5359, + 801: 0x535B, + 802: 0x535D, + 803: 0x5365, + 804: 0x5368, + 805: 0x536A, + 806: 0x536C, + 807: 0x536D, + 808: 0x5372, + 809: 0x5376, + 810: 0x5379, + 811: 0x537B, + 812: 0x537C, + 813: 0x537D, + 814: 0x537E, + 815: 0x5380, + 816: 0x5381, + 817: 0x5383, + 818: 0x5387, + 819: 0x5388, + 820: 0x538A, + 821: 0x538E, + 822: 0x538F, + 823: 0x5390, + 824: 0x5391, + 825: 0x5392, + 826: 0x5393, + 827: 0x5394, + 828: 0x5396, + 829: 0x5397, + 830: 0x5399, + 831: 0x539B, + 832: 0x539C, + 833: 0x539E, + 834: 0x53A0, + 835: 0x53A1, + 836: 0x53A4, + 837: 0x53A7, + 838: 0x53AA, + 839: 0x53AB, + 840: 0x53AC, + 841: 0x53AD, + 842: 0x53AF, + 843: 0x53B0, + 844: 0x53B1, + 845: 0x53B2, + 846: 0x53B3, + 847: 0x53B4, + 848: 0x53B5, + 849: 0x53B7, + 850: 0x53B8, + 851: 0x53B9, + 852: 0x53BA, + 853: 0x53BC, + 854: 0x53BD, + 855: 0x53BE, + 856: 0x53C0, + 857: 0x53C3, + 858: 0x53C4, + 859: 0x53C5, + 860: 0x53C6, + 861: 0x53C7, + 862: 0x53CE, + 863: 0x53CF, + 864: 0x53D0, + 865: 0x53D2, + 866: 0x53D3, + 867: 0x53D5, + 868: 0x53DA, + 869: 0x53DC, + 870: 0x53DD, + 871: 0x53DE, + 872: 0x53E1, + 873: 0x53E2, + 874: 0x53E7, + 875: 0x53F4, + 876: 0x53FA, + 877: 0x53FE, + 878: 0x53FF, + 879: 0x5400, + 880: 0x5402, + 881: 0x5405, + 882: 0x5407, + 883: 0x540B, + 884: 0x5414, + 885: 0x5418, + 886: 0x5419, + 887: 0x541A, + 888: 0x541C, + 889: 0x5422, + 890: 0x5424, + 891: 0x5425, + 892: 0x542A, + 893: 0x5430, + 894: 0x5433, + 895: 0x5436, + 896: 0x5437, + 897: 0x543A, + 898: 0x543D, + 899: 0x543F, + 900: 0x5441, + 901: 0x5442, + 902: 0x5444, + 903: 0x5445, + 904: 0x5447, + 905: 0x5449, + 906: 0x544C, + 907: 0x544D, + 908: 0x544E, + 909: 0x544F, + 910: 0x5451, + 911: 0x545A, + 912: 0x545D, + 913: 0x545E, + 914: 0x545F, + 915: 0x5460, + 916: 0x5461, + 917: 0x5463, + 918: 0x5465, + 919: 0x5467, + 920: 0x5469, + 921: 0x546A, + 922: 0x546B, + 923: 0x546C, + 924: 0x546D, + 925: 0x546E, + 926: 0x546F, + 927: 0x5470, + 928: 0x5474, + 929: 0x5479, + 930: 0x547A, + 931: 0x547E, + 932: 0x547F, + 933: 0x5481, + 934: 0x5483, + 935: 0x5485, + 936: 0x5487, + 937: 0x5488, + 938: 0x5489, + 939: 0x548A, + 940: 0x548D, + 941: 0x5491, + 942: 0x5493, + 943: 0x5497, + 944: 0x5498, + 945: 0x549C, + 946: 0x549E, + 947: 0x549F, + 948: 0x54A0, + 949: 0x54A1, + 950: 0x54A2, + 951: 0x54A5, + 952: 0x54AE, + 953: 0x54B0, + 954: 0x54B2, + 955: 0x54B5, + 956: 0x54B6, + 957: 0x54B7, + 958: 0x54B9, + 959: 0x54BA, + 960: 0x54BC, + 961: 0x54BE, + 962: 0x54C3, + 963: 0x54C5, + 964: 0x54CA, + 965: 0x54CB, + 966: 0x54D6, + 967: 0x54D8, + 968: 0x54DB, + 969: 0x54E0, + 970: 0x54E1, + 971: 0x54E2, + 972: 0x54E3, + 973: 0x54E4, + 974: 0x54EB, + 975: 0x54EC, + 976: 0x54EF, + 977: 0x54F0, + 978: 0x54F1, + 979: 0x54F4, + 980: 0x54F5, + 981: 0x54F6, + 982: 0x54F7, + 983: 0x54F8, + 984: 0x54F9, + 985: 0x54FB, + 986: 0x54FE, + 987: 0x5500, + 988: 0x5502, + 989: 0x5503, + 990: 0x5504, + 991: 0x5505, + 992: 0x5508, + 993: 0x550A, + 994: 0x550B, + 995: 0x550C, + 996: 0x550D, + 997: 0x550E, + 998: 0x5512, + 999: 0x5513, + 1000: 0x5515, + 1001: 0x5516, + 1002: 0x5517, + 1003: 0x5518, + 1004: 0x5519, + 1005: 0x551A, + 1006: 0x551C, + 1007: 0x551D, + 1008: 0x551E, + 1009: 0x551F, + 1010: 0x5521, + 1011: 0x5525, + 1012: 0x5526, + 1013: 0x5528, + 1014: 0x5529, + 1015: 0x552B, + 1016: 0x552D, + 1017: 0x5532, + 1018: 0x5534, + 1019: 0x5535, + 1020: 0x5536, + 1021: 0x5538, + 1022: 0x5539, + 1023: 0x553A, + 1024: 0x553B, + 1025: 0x553D, + 1026: 0x5540, + 1027: 0x5542, + 1028: 0x5545, + 1029: 0x5547, + 1030: 0x5548, + 1031: 0x554B, + 1032: 0x554C, + 1033: 0x554D, + 1034: 0x554E, + 1035: 0x554F, + 1036: 0x5551, + 1037: 0x5552, + 1038: 0x5553, + 1039: 0x5554, + 1040: 0x5557, + 1041: 0x5558, + 1042: 0x5559, + 1043: 0x555A, + 1044: 0x555B, + 1045: 0x555D, + 1046: 0x555E, + 1047: 0x555F, + 1048: 0x5560, + 1049: 0x5562, + 1050: 0x5563, + 1051: 0x5568, + 1052: 0x5569, + 1053: 0x556B, + 1054: 0x556F, + 1055: 0x5570, + 1056: 0x5571, + 1057: 0x5572, + 1058: 0x5573, + 1059: 0x5574, + 1060: 0x5579, + 1061: 0x557A, + 1062: 0x557D, + 1063: 0x557F, + 1064: 0x5585, + 1065: 0x5586, + 1066: 0x558C, + 1067: 0x558D, + 1068: 0x558E, + 1069: 0x5590, + 1070: 0x5592, + 1071: 0x5593, + 1072: 0x5595, + 1073: 0x5596, + 1074: 0x5597, + 1075: 0x559A, + 1076: 0x559B, + 1077: 0x559E, + 1078: 0x55A0, + 1079: 0x55A1, + 1080: 0x55A2, + 1081: 0x55A3, + 1082: 0x55A4, + 1083: 0x55A5, + 1084: 0x55A6, + 1085: 0x55A8, + 1086: 0x55A9, + 1087: 0x55AA, + 1088: 0x55AB, + 1089: 0x55AC, + 1090: 0x55AD, + 1091: 0x55AE, + 1092: 0x55AF, + 1093: 0x55B0, + 1094: 0x55B2, + 1095: 0x55B4, + 1096: 0x55B6, + 1097: 0x55B8, + 1098: 0x55BA, + 1099: 0x55BC, + 1100: 0x55BF, + 1101: 0x55C0, + 1102: 0x55C1, + 1103: 0x55C2, + 1104: 0x55C3, + 1105: 0x55C6, + 1106: 0x55C7, + 1107: 0x55C8, + 1108: 0x55CA, + 1109: 0x55CB, + 1110: 0x55CE, + 1111: 0x55CF, + 1112: 0x55D0, + 1113: 0x55D5, + 1114: 0x55D7, + 1115: 0x55D8, + 1116: 0x55D9, + 1117: 0x55DA, + 1118: 0x55DB, + 1119: 0x55DE, + 1120: 0x55E0, + 1121: 0x55E2, + 1122: 0x55E7, + 1123: 0x55E9, + 1124: 0x55ED, + 1125: 0x55EE, + 1126: 0x55F0, + 1127: 0x55F1, + 1128: 0x55F4, + 1129: 0x55F6, + 1130: 0x55F8, + 1131: 0x55F9, + 1132: 0x55FA, + 1133: 0x55FB, + 1134: 0x55FC, + 1135: 0x55FF, + 1136: 0x5602, + 1137: 0x5603, + 1138: 0x5604, + 1139: 0x5605, + 1140: 0x5606, + 1141: 0x5607, + 1142: 0x560A, + 1143: 0x560B, + 1144: 0x560D, + 1145: 0x5610, + 1146: 0x5611, + 1147: 0x5612, + 1148: 0x5613, + 1149: 0x5614, + 1150: 0x5615, + 1151: 0x5616, + 1152: 0x5617, + 1153: 0x5619, + 1154: 0x561A, + 1155: 0x561C, + 1156: 0x561D, + 1157: 0x5620, + 1158: 0x5621, + 1159: 0x5622, + 1160: 0x5625, + 1161: 0x5626, + 1162: 0x5628, + 1163: 0x5629, + 1164: 0x562A, + 1165: 0x562B, + 1166: 0x562E, + 1167: 0x562F, + 1168: 0x5630, + 1169: 0x5633, + 1170: 0x5635, + 1171: 0x5637, + 1172: 0x5638, + 1173: 0x563A, + 1174: 0x563C, + 1175: 0x563D, + 1176: 0x563E, + 1177: 0x5640, + 1178: 0x5641, + 1179: 0x5642, + 1180: 0x5643, + 1181: 0x5644, + 1182: 0x5645, + 1183: 0x5646, + 1184: 0x5647, + 1185: 0x5648, + 1186: 0x5649, + 1187: 0x564A, + 1188: 0x564B, + 1189: 0x564F, + 1190: 0x5650, + 1191: 0x5651, + 1192: 0x5652, + 1193: 0x5653, + 1194: 0x5655, + 1195: 0x5656, + 1196: 0x565A, + 1197: 0x565B, + 1198: 0x565D, + 1199: 0x565E, + 1200: 0x565F, + 1201: 0x5660, + 1202: 0x5661, + 1203: 0x5663, + 1204: 0x5665, + 1205: 0x5666, + 1206: 0x5667, + 1207: 0x566D, + 1208: 0x566E, + 1209: 0x566F, + 1210: 0x5670, + 1211: 0x5672, + 1212: 0x5673, + 1213: 0x5674, + 1214: 0x5675, + 1215: 0x5677, + 1216: 0x5678, + 1217: 0x5679, + 1218: 0x567A, + 1219: 0x567D, + 1220: 0x567E, + 1221: 0x567F, + 1222: 0x5680, + 1223: 0x5681, + 1224: 0x5682, + 1225: 0x5683, + 1226: 0x5684, + 1227: 0x5687, + 1228: 0x5688, + 1229: 0x5689, + 1230: 0x568A, + 1231: 0x568B, + 1232: 0x568C, + 1233: 0x568D, + 1234: 0x5690, + 1235: 0x5691, + 1236: 0x5692, + 1237: 0x5694, + 1238: 0x5695, + 1239: 0x5696, + 1240: 0x5697, + 1241: 0x5698, + 1242: 0x5699, + 1243: 0x569A, + 1244: 0x569B, + 1245: 0x569C, + 1246: 0x569D, + 1247: 0x569E, + 1248: 0x569F, + 1249: 0x56A0, + 1250: 0x56A1, + 1251: 0x56A2, + 1252: 0x56A4, + 1253: 0x56A5, + 1254: 0x56A6, + 1255: 0x56A7, + 1256: 0x56A8, + 1257: 0x56A9, + 1258: 0x56AA, + 1259: 0x56AB, + 1260: 0x56AC, + 1261: 0x56AD, + 1262: 0x56AE, + 1263: 0x56B0, + 1264: 0x56B1, + 1265: 0x56B2, + 1266: 0x56B3, + 1267: 0x56B4, + 1268: 0x56B5, + 1269: 0x56B6, + 1270: 0x56B8, + 1271: 0x56B9, + 1272: 0x56BA, + 1273: 0x56BB, + 1274: 0x56BD, + 1275: 0x56BE, + 1276: 0x56BF, + 1277: 0x56C0, + 1278: 0x56C1, + 1279: 0x56C2, + 1280: 0x56C3, + 1281: 0x56C4, + 1282: 0x56C5, + 1283: 0x56C6, + 1284: 0x56C7, + 1285: 0x56C8, + 1286: 0x56C9, + 1287: 0x56CB, + 1288: 0x56CC, + 1289: 0x56CD, + 1290: 0x56CE, + 1291: 0x56CF, + 1292: 0x56D0, + 1293: 0x56D1, + 1294: 0x56D2, + 1295: 0x56D3, + 1296: 0x56D5, + 1297: 0x56D6, + 1298: 0x56D8, + 1299: 0x56D9, + 1300: 0x56DC, + 1301: 0x56E3, + 1302: 0x56E5, + 1303: 0x56E6, + 1304: 0x56E7, + 1305: 0x56E8, + 1306: 0x56E9, + 1307: 0x56EA, + 1308: 0x56EC, + 1309: 0x56EE, + 1310: 0x56EF, + 1311: 0x56F2, + 1312: 0x56F3, + 1313: 0x56F6, + 1314: 0x56F7, + 1315: 0x56F8, + 1316: 0x56FB, + 1317: 0x56FC, + 1318: 0x5700, + 1319: 0x5701, + 1320: 0x5702, + 1321: 0x5705, + 1322: 0x5707, + 1323: 0x570B, + 1324: 0x570C, + 1325: 0x570D, + 1326: 0x570E, + 1327: 0x570F, + 1328: 0x5710, + 1329: 0x5711, + 1330: 0x5712, + 1331: 0x5713, + 1332: 0x5714, + 1333: 0x5715, + 1334: 0x5716, + 1335: 0x5717, + 1336: 0x5718, + 1337: 0x5719, + 1338: 0x571A, + 1339: 0x571B, + 1340: 0x571D, + 1341: 0x571E, + 1342: 0x5720, + 1343: 0x5721, + 1344: 0x5722, + 1345: 0x5724, + 1346: 0x5725, + 1347: 0x5726, + 1348: 0x5727, + 1349: 0x572B, + 1350: 0x5731, + 1351: 0x5732, + 1352: 0x5734, + 1353: 0x5735, + 1354: 0x5736, + 1355: 0x5737, + 1356: 0x5738, + 1357: 0x573C, + 1358: 0x573D, + 1359: 0x573F, + 1360: 0x5741, + 1361: 0x5743, + 1362: 0x5744, + 1363: 0x5745, + 1364: 0x5746, + 1365: 0x5748, + 1366: 0x5749, + 1367: 0x574B, + 1368: 0x5752, + 1369: 0x5753, + 1370: 0x5754, + 1371: 0x5755, + 1372: 0x5756, + 1373: 0x5758, + 1374: 0x5759, + 1375: 0x5762, + 1376: 0x5763, + 1377: 0x5765, + 1378: 0x5767, + 1379: 0x576C, + 1380: 0x576E, + 1381: 0x5770, + 1382: 0x5771, + 1383: 0x5772, + 1384: 0x5774, + 1385: 0x5775, + 1386: 0x5778, + 1387: 0x5779, + 1388: 0x577A, + 1389: 0x577D, + 1390: 0x577E, + 1391: 0x577F, + 1392: 0x5780, + 1393: 0x5781, + 1394: 0x5787, + 1395: 0x5788, + 1396: 0x5789, + 1397: 0x578A, + 1398: 0x578D, + 1399: 0x578E, + 1400: 0x578F, + 1401: 0x5790, + 1402: 0x5791, + 1403: 0x5794, + 1404: 0x5795, + 1405: 0x5796, + 1406: 0x5797, + 1407: 0x5798, + 1408: 0x5799, + 1409: 0x579A, + 1410: 0x579C, + 1411: 0x579D, + 1412: 0x579E, + 1413: 0x579F, + 1414: 0x57A5, + 1415: 0x57A8, + 1416: 0x57AA, + 1417: 0x57AC, + 1418: 0x57AF, + 1419: 0x57B0, + 1420: 0x57B1, + 1421: 0x57B3, + 1422: 0x57B5, + 1423: 0x57B6, + 1424: 0x57B7, + 1425: 0x57B9, + 1426: 0x57BA, + 1427: 0x57BB, + 1428: 0x57BC, + 1429: 0x57BD, + 1430: 0x57BE, + 1431: 0x57BF, + 1432: 0x57C0, + 1433: 0x57C1, + 1434: 0x57C4, + 1435: 0x57C5, + 1436: 0x57C6, + 1437: 0x57C7, + 1438: 0x57C8, + 1439: 0x57C9, + 1440: 0x57CA, + 1441: 0x57CC, + 1442: 0x57CD, + 1443: 0x57D0, + 1444: 0x57D1, + 1445: 0x57D3, + 1446: 0x57D6, + 1447: 0x57D7, + 1448: 0x57DB, + 1449: 0x57DC, + 1450: 0x57DE, + 1451: 0x57E1, + 1452: 0x57E2, + 1453: 0x57E3, + 1454: 0x57E5, + 1455: 0x57E6, + 1456: 0x57E7, + 1457: 0x57E8, + 1458: 0x57E9, + 1459: 0x57EA, + 1460: 0x57EB, + 1461: 0x57EC, + 1462: 0x57EE, + 1463: 0x57F0, + 1464: 0x57F1, + 1465: 0x57F2, + 1466: 0x57F3, + 1467: 0x57F5, + 1468: 0x57F6, + 1469: 0x57F7, + 1470: 0x57FB, + 1471: 0x57FC, + 1472: 0x57FE, + 1473: 0x57FF, + 1474: 0x5801, + 1475: 0x5803, + 1476: 0x5804, + 1477: 0x5805, + 1478: 0x5808, + 1479: 0x5809, + 1480: 0x580A, + 1481: 0x580C, + 1482: 0x580E, + 1483: 0x580F, + 1484: 0x5810, + 1485: 0x5812, + 1486: 0x5813, + 1487: 0x5814, + 1488: 0x5816, + 1489: 0x5817, + 1490: 0x5818, + 1491: 0x581A, + 1492: 0x581B, + 1493: 0x581C, + 1494: 0x581D, + 1495: 0x581F, + 1496: 0x5822, + 1497: 0x5823, + 1498: 0x5825, + 1499: 0x5826, + 1500: 0x5827, + 1501: 0x5828, + 1502: 0x5829, + 1503: 0x582B, + 1504: 0x582C, + 1505: 0x582D, + 1506: 0x582E, + 1507: 0x582F, + 1508: 0x5831, + 1509: 0x5832, + 1510: 0x5833, + 1511: 0x5834, + 1512: 0x5836, + 1513: 0x5837, + 1514: 0x5838, + 1515: 0x5839, + 1516: 0x583A, + 1517: 0x583B, + 1518: 0x583C, + 1519: 0x583D, + 1520: 0x583E, + 1521: 0x583F, + 1522: 0x5840, + 1523: 0x5841, + 1524: 0x5842, + 1525: 0x5843, + 1526: 0x5845, + 1527: 0x5846, + 1528: 0x5847, + 1529: 0x5848, + 1530: 0x5849, + 1531: 0x584A, + 1532: 0x584B, + 1533: 0x584E, + 1534: 0x584F, + 1535: 0x5850, + 1536: 0x5852, + 1537: 0x5853, + 1538: 0x5855, + 1539: 0x5856, + 1540: 0x5857, + 1541: 0x5859, + 1542: 0x585A, + 1543: 0x585B, + 1544: 0x585C, + 1545: 0x585D, + 1546: 0x585F, + 1547: 0x5860, + 1548: 0x5861, + 1549: 0x5862, + 1550: 0x5863, + 1551: 0x5864, + 1552: 0x5866, + 1553: 0x5867, + 1554: 0x5868, + 1555: 0x5869, + 1556: 0x586A, + 1557: 0x586D, + 1558: 0x586E, + 1559: 0x586F, + 1560: 0x5870, + 1561: 0x5871, + 1562: 0x5872, + 1563: 0x5873, + 1564: 0x5874, + 1565: 0x5875, + 1566: 0x5876, + 1567: 0x5877, + 1568: 0x5878, + 1569: 0x5879, + 1570: 0x587A, + 1571: 0x587B, + 1572: 0x587C, + 1573: 0x587D, + 1574: 0x587F, + 1575: 0x5882, + 1576: 0x5884, + 1577: 0x5886, + 1578: 0x5887, + 1579: 0x5888, + 1580: 0x588A, + 1581: 0x588B, + 1582: 0x588C, + 1583: 0x588D, + 1584: 0x588E, + 1585: 0x588F, + 1586: 0x5890, + 1587: 0x5891, + 1588: 0x5894, + 1589: 0x5895, + 1590: 0x5896, + 1591: 0x5897, + 1592: 0x5898, + 1593: 0x589B, + 1594: 0x589C, + 1595: 0x589D, + 1596: 0x58A0, + 1597: 0x58A1, + 1598: 0x58A2, + 1599: 0x58A3, + 1600: 0x58A4, + 1601: 0x58A5, + 1602: 0x58A6, + 1603: 0x58A7, + 1604: 0x58AA, + 1605: 0x58AB, + 1606: 0x58AC, + 1607: 0x58AD, + 1608: 0x58AE, + 1609: 0x58AF, + 1610: 0x58B0, + 1611: 0x58B1, + 1612: 0x58B2, + 1613: 0x58B3, + 1614: 0x58B4, + 1615: 0x58B5, + 1616: 0x58B6, + 1617: 0x58B7, + 1618: 0x58B8, + 1619: 0x58B9, + 1620: 0x58BA, + 1621: 0x58BB, + 1622: 0x58BD, + 1623: 0x58BE, + 1624: 0x58BF, + 1625: 0x58C0, + 1626: 0x58C2, + 1627: 0x58C3, + 1628: 0x58C4, + 1629: 0x58C6, + 1630: 0x58C7, + 1631: 0x58C8, + 1632: 0x58C9, + 1633: 0x58CA, + 1634: 0x58CB, + 1635: 0x58CC, + 1636: 0x58CD, + 1637: 0x58CE, + 1638: 0x58CF, + 1639: 0x58D0, + 1640: 0x58D2, + 1641: 0x58D3, + 1642: 0x58D4, + 1643: 0x58D6, + 1644: 0x58D7, + 1645: 0x58D8, + 1646: 0x58D9, + 1647: 0x58DA, + 1648: 0x58DB, + 1649: 0x58DC, + 1650: 0x58DD, + 1651: 0x58DE, + 1652: 0x58DF, + 1653: 0x58E0, + 1654: 0x58E1, + 1655: 0x58E2, + 1656: 0x58E3, + 1657: 0x58E5, + 1658: 0x58E6, + 1659: 0x58E7, + 1660: 0x58E8, + 1661: 0x58E9, + 1662: 0x58EA, + 1663: 0x58ED, + 1664: 0x58EF, + 1665: 0x58F1, + 1666: 0x58F2, + 1667: 0x58F4, + 1668: 0x58F5, + 1669: 0x58F7, + 1670: 0x58F8, + 1671: 0x58FA, + 1672: 0x58FB, + 1673: 0x58FC, + 1674: 0x58FD, + 1675: 0x58FE, + 1676: 0x58FF, + 1677: 0x5900, + 1678: 0x5901, + 1679: 0x5903, + 1680: 0x5905, + 1681: 0x5906, + 1682: 0x5908, + 1683: 0x5909, + 1684: 0x590A, + 1685: 0x590B, + 1686: 0x590C, + 1687: 0x590E, + 1688: 0x5910, + 1689: 0x5911, + 1690: 0x5912, + 1691: 0x5913, + 1692: 0x5917, + 1693: 0x5918, + 1694: 0x591B, + 1695: 0x591D, + 1696: 0x591E, + 1697: 0x5920, + 1698: 0x5921, + 1699: 0x5922, + 1700: 0x5923, + 1701: 0x5926, + 1702: 0x5928, + 1703: 0x592C, + 1704: 0x5930, + 1705: 0x5932, + 1706: 0x5933, + 1707: 0x5935, + 1708: 0x5936, + 1709: 0x593B, + 1710: 0x593D, + 1711: 0x593E, + 1712: 0x593F, + 1713: 0x5940, + 1714: 0x5943, + 1715: 0x5945, + 1716: 0x5946, + 1717: 0x594A, + 1718: 0x594C, + 1719: 0x594D, + 1720: 0x5950, + 1721: 0x5952, + 1722: 0x5953, + 1723: 0x5959, + 1724: 0x595B, + 1725: 0x595C, + 1726: 0x595D, + 1727: 0x595E, + 1728: 0x595F, + 1729: 0x5961, + 1730: 0x5963, + 1731: 0x5964, + 1732: 0x5966, + 1733: 0x5967, + 1734: 0x5968, + 1735: 0x5969, + 1736: 0x596A, + 1737: 0x596B, + 1738: 0x596C, + 1739: 0x596D, + 1740: 0x596E, + 1741: 0x596F, + 1742: 0x5970, + 1743: 0x5971, + 1744: 0x5972, + 1745: 0x5975, + 1746: 0x5977, + 1747: 0x597A, + 1748: 0x597B, + 1749: 0x597C, + 1750: 0x597E, + 1751: 0x597F, + 1752: 0x5980, + 1753: 0x5985, + 1754: 0x5989, + 1755: 0x598B, + 1756: 0x598C, + 1757: 0x598E, + 1758: 0x598F, + 1759: 0x5990, + 1760: 0x5991, + 1761: 0x5994, + 1762: 0x5995, + 1763: 0x5998, + 1764: 0x599A, + 1765: 0x599B, + 1766: 0x599C, + 1767: 0x599D, + 1768: 0x599F, + 1769: 0x59A0, + 1770: 0x59A1, + 1771: 0x59A2, + 1772: 0x59A6, + 1773: 0x59A7, + 1774: 0x59AC, + 1775: 0x59AD, + 1776: 0x59B0, + 1777: 0x59B1, + 1778: 0x59B3, + 1779: 0x59B4, + 1780: 0x59B5, + 1781: 0x59B6, + 1782: 0x59B7, + 1783: 0x59B8, + 1784: 0x59BA, + 1785: 0x59BC, + 1786: 0x59BD, + 1787: 0x59BF, + 1788: 0x59C0, + 1789: 0x59C1, + 1790: 0x59C2, + 1791: 0x59C3, + 1792: 0x59C4, + 1793: 0x59C5, + 1794: 0x59C7, + 1795: 0x59C8, + 1796: 0x59C9, + 1797: 0x59CC, + 1798: 0x59CD, + 1799: 0x59CE, + 1800: 0x59CF, + 1801: 0x59D5, + 1802: 0x59D6, + 1803: 0x59D9, + 1804: 0x59DB, + 1805: 0x59DE, + 1806: 0x59DF, + 1807: 0x59E0, + 1808: 0x59E1, + 1809: 0x59E2, + 1810: 0x59E4, + 1811: 0x59E6, + 1812: 0x59E7, + 1813: 0x59E9, + 1814: 0x59EA, + 1815: 0x59EB, + 1816: 0x59ED, + 1817: 0x59EE, + 1818: 0x59EF, + 1819: 0x59F0, + 1820: 0x59F1, + 1821: 0x59F2, + 1822: 0x59F3, + 1823: 0x59F4, + 1824: 0x59F5, + 1825: 0x59F6, + 1826: 0x59F7, + 1827: 0x59F8, + 1828: 0x59FA, + 1829: 0x59FC, + 1830: 0x59FD, + 1831: 0x59FE, + 1832: 0x5A00, + 1833: 0x5A02, + 1834: 0x5A0A, + 1835: 0x5A0B, + 1836: 0x5A0D, + 1837: 0x5A0E, + 1838: 0x5A0F, + 1839: 0x5A10, + 1840: 0x5A12, + 1841: 0x5A14, + 1842: 0x5A15, + 1843: 0x5A16, + 1844: 0x5A17, + 1845: 0x5A19, + 1846: 0x5A1A, + 1847: 0x5A1B, + 1848: 0x5A1D, + 1849: 0x5A1E, + 1850: 0x5A21, + 1851: 0x5A22, + 1852: 0x5A24, + 1853: 0x5A26, + 1854: 0x5A27, + 1855: 0x5A28, + 1856: 0x5A2A, + 1857: 0x5A2B, + 1858: 0x5A2C, + 1859: 0x5A2D, + 1860: 0x5A2E, + 1861: 0x5A2F, + 1862: 0x5A30, + 1863: 0x5A33, + 1864: 0x5A35, + 1865: 0x5A37, + 1866: 0x5A38, + 1867: 0x5A39, + 1868: 0x5A3A, + 1869: 0x5A3B, + 1870: 0x5A3D, + 1871: 0x5A3E, + 1872: 0x5A3F, + 1873: 0x5A41, + 1874: 0x5A42, + 1875: 0x5A43, + 1876: 0x5A44, + 1877: 0x5A45, + 1878: 0x5A47, + 1879: 0x5A48, + 1880: 0x5A4B, + 1881: 0x5A4C, + 1882: 0x5A4D, + 1883: 0x5A4E, + 1884: 0x5A4F, + 1885: 0x5A50, + 1886: 0x5A51, + 1887: 0x5A52, + 1888: 0x5A53, + 1889: 0x5A54, + 1890: 0x5A56, + 1891: 0x5A57, + 1892: 0x5A58, + 1893: 0x5A59, + 1894: 0x5A5B, + 1895: 0x5A5C, + 1896: 0x5A5D, + 1897: 0x5A5E, + 1898: 0x5A5F, + 1899: 0x5A60, + 1900: 0x5A61, + 1901: 0x5A63, + 1902: 0x5A64, + 1903: 0x5A65, + 1904: 0x5A66, + 1905: 0x5A68, + 1906: 0x5A69, + 1907: 0x5A6B, + 1908: 0x5A6C, + 1909: 0x5A6D, + 1910: 0x5A6E, + 1911: 0x5A6F, + 1912: 0x5A70, + 1913: 0x5A71, + 1914: 0x5A72, + 1915: 0x5A73, + 1916: 0x5A78, + 1917: 0x5A79, + 1918: 0x5A7B, + 1919: 0x5A7C, + 1920: 0x5A7D, + 1921: 0x5A7E, + 1922: 0x5A80, + 1923: 0x5A81, + 1924: 0x5A82, + 1925: 0x5A83, + 1926: 0x5A84, + 1927: 0x5A85, + 1928: 0x5A86, + 1929: 0x5A87, + 1930: 0x5A88, + 1931: 0x5A89, + 1932: 0x5A8A, + 1933: 0x5A8B, + 1934: 0x5A8C, + 1935: 0x5A8D, + 1936: 0x5A8E, + 1937: 0x5A8F, + 1938: 0x5A90, + 1939: 0x5A91, + 1940: 0x5A93, + 1941: 0x5A94, + 1942: 0x5A95, + 1943: 0x5A96, + 1944: 0x5A97, + 1945: 0x5A98, + 1946: 0x5A99, + 1947: 0x5A9C, + 1948: 0x5A9D, + 1949: 0x5A9E, + 1950: 0x5A9F, + 1951: 0x5AA0, + 1952: 0x5AA1, + 1953: 0x5AA2, + 1954: 0x5AA3, + 1955: 0x5AA4, + 1956: 0x5AA5, + 1957: 0x5AA6, + 1958: 0x5AA7, + 1959: 0x5AA8, + 1960: 0x5AA9, + 1961: 0x5AAB, + 1962: 0x5AAC, + 1963: 0x5AAD, + 1964: 0x5AAE, + 1965: 0x5AAF, + 1966: 0x5AB0, + 1967: 0x5AB1, + 1968: 0x5AB4, + 1969: 0x5AB6, + 1970: 0x5AB7, + 1971: 0x5AB9, + 1972: 0x5ABA, + 1973: 0x5ABB, + 1974: 0x5ABC, + 1975: 0x5ABD, + 1976: 0x5ABF, + 1977: 0x5AC0, + 1978: 0x5AC3, + 1979: 0x5AC4, + 1980: 0x5AC5, + 1981: 0x5AC6, + 1982: 0x5AC7, + 1983: 0x5AC8, + 1984: 0x5ACA, + 1985: 0x5ACB, + 1986: 0x5ACD, + 1987: 0x5ACE, + 1988: 0x5ACF, + 1989: 0x5AD0, + 1990: 0x5AD1, + 1991: 0x5AD3, + 1992: 0x5AD5, + 1993: 0x5AD7, + 1994: 0x5AD9, + 1995: 0x5ADA, + 1996: 0x5ADB, + 1997: 0x5ADD, + 1998: 0x5ADE, + 1999: 0x5ADF, + 2000: 0x5AE2, + 2001: 0x5AE4, + 2002: 0x5AE5, + 2003: 0x5AE7, + 2004: 0x5AE8, + 2005: 0x5AEA, + 2006: 0x5AEC, + 2007: 0x5AED, + 2008: 0x5AEE, + 2009: 0x5AEF, + 2010: 0x5AF0, + 2011: 0x5AF2, + 2012: 0x5AF3, + 2013: 0x5AF4, + 2014: 0x5AF5, + 2015: 0x5AF6, + 2016: 0x5AF7, + 2017: 0x5AF8, + 2018: 0x5AF9, + 2019: 0x5AFA, + 2020: 0x5AFB, + 2021: 0x5AFC, + 2022: 0x5AFD, + 2023: 0x5AFE, + 2024: 0x5AFF, + 2025: 0x5B00, + 2026: 0x5B01, + 2027: 0x5B02, + 2028: 0x5B03, + 2029: 0x5B04, + 2030: 0x5B05, + 2031: 0x5B06, + 2032: 0x5B07, + 2033: 0x5B08, + 2034: 0x5B0A, + 2035: 0x5B0B, + 2036: 0x5B0C, + 2037: 0x5B0D, + 2038: 0x5B0E, + 2039: 0x5B0F, + 2040: 0x5B10, + 2041: 0x5B11, + 2042: 0x5B12, + 2043: 0x5B13, + 2044: 0x5B14, + 2045: 0x5B15, + 2046: 0x5B18, + 2047: 0x5B19, + 2048: 0x5B1A, + 2049: 0x5B1B, + 2050: 0x5B1C, + 2051: 0x5B1D, + 2052: 0x5B1E, + 2053: 0x5B1F, + 2054: 0x5B20, + 2055: 0x5B21, + 2056: 0x5B22, + 2057: 0x5B23, + 2058: 0x5B24, + 2059: 0x5B25, + 2060: 0x5B26, + 2061: 0x5B27, + 2062: 0x5B28, + 2063: 0x5B29, + 2064: 0x5B2A, + 2065: 0x5B2B, + 2066: 0x5B2C, + 2067: 0x5B2D, + 2068: 0x5B2E, + 2069: 0x5B2F, + 2070: 0x5B30, + 2071: 0x5B31, + 2072: 0x5B33, + 2073: 0x5B35, + 2074: 0x5B36, + 2075: 0x5B38, + 2076: 0x5B39, + 2077: 0x5B3A, + 2078: 0x5B3B, + 2079: 0x5B3C, + 2080: 0x5B3D, + 2081: 0x5B3E, + 2082: 0x5B3F, + 2083: 0x5B41, + 2084: 0x5B42, + 2085: 0x5B43, + 2086: 0x5B44, + 2087: 0x5B45, + 2088: 0x5B46, + 2089: 0x5B47, + 2090: 0x5B48, + 2091: 0x5B49, + 2092: 0x5B4A, + 2093: 0x5B4B, + 2094: 0x5B4C, + 2095: 0x5B4D, + 2096: 0x5B4E, + 2097: 0x5B4F, + 2098: 0x5B52, + 2099: 0x5B56, + 2100: 0x5B5E, + 2101: 0x5B60, + 2102: 0x5B61, + 2103: 0x5B67, + 2104: 0x5B68, + 2105: 0x5B6B, + 2106: 0x5B6D, + 2107: 0x5B6E, + 2108: 0x5B6F, + 2109: 0x5B72, + 2110: 0x5B74, + 2111: 0x5B76, + 2112: 0x5B77, + 2113: 0x5B78, + 2114: 0x5B79, + 2115: 0x5B7B, + 2116: 0x5B7C, + 2117: 0x5B7E, + 2118: 0x5B7F, + 2119: 0x5B82, + 2120: 0x5B86, + 2121: 0x5B8A, + 2122: 0x5B8D, + 2123: 0x5B8E, + 2124: 0x5B90, + 2125: 0x5B91, + 2126: 0x5B92, + 2127: 0x5B94, + 2128: 0x5B96, + 2129: 0x5B9F, + 2130: 0x5BA7, + 2131: 0x5BA8, + 2132: 0x5BA9, + 2133: 0x5BAC, + 2134: 0x5BAD, + 2135: 0x5BAE, + 2136: 0x5BAF, + 2137: 0x5BB1, + 2138: 0x5BB2, + 2139: 0x5BB7, + 2140: 0x5BBA, + 2141: 0x5BBB, + 2142: 0x5BBC, + 2143: 0x5BC0, + 2144: 0x5BC1, + 2145: 0x5BC3, + 2146: 0x5BC8, + 2147: 0x5BC9, + 2148: 0x5BCA, + 2149: 0x5BCB, + 2150: 0x5BCD, + 2151: 0x5BCE, + 2152: 0x5BCF, + 2153: 0x5BD1, + 2154: 0x5BD4, + 2155: 0x5BD5, + 2156: 0x5BD6, + 2157: 0x5BD7, + 2158: 0x5BD8, + 2159: 0x5BD9, + 2160: 0x5BDA, + 2161: 0x5BDB, + 2162: 0x5BDC, + 2163: 0x5BE0, + 2164: 0x5BE2, + 2165: 0x5BE3, + 2166: 0x5BE6, + 2167: 0x5BE7, + 2168: 0x5BE9, + 2169: 0x5BEA, + 2170: 0x5BEB, + 2171: 0x5BEC, + 2172: 0x5BED, + 2173: 0x5BEF, + 2174: 0x5BF1, + 2175: 0x5BF2, + 2176: 0x5BF3, + 2177: 0x5BF4, + 2178: 0x5BF5, + 2179: 0x5BF6, + 2180: 0x5BF7, + 2181: 0x5BFD, + 2182: 0x5BFE, + 2183: 0x5C00, + 2184: 0x5C02, + 2185: 0x5C03, + 2186: 0x5C05, + 2187: 0x5C07, + 2188: 0x5C08, + 2189: 0x5C0B, + 2190: 0x5C0C, + 2191: 0x5C0D, + 2192: 0x5C0E, + 2193: 0x5C10, + 2194: 0x5C12, + 2195: 0x5C13, + 2196: 0x5C17, + 2197: 0x5C19, + 2198: 0x5C1B, + 2199: 0x5C1E, + 2200: 0x5C1F, + 2201: 0x5C20, + 2202: 0x5C21, + 2203: 0x5C23, + 2204: 0x5C26, + 2205: 0x5C28, + 2206: 0x5C29, + 2207: 0x5C2A, + 2208: 0x5C2B, + 2209: 0x5C2D, + 2210: 0x5C2E, + 2211: 0x5C2F, + 2212: 0x5C30, + 2213: 0x5C32, + 2214: 0x5C33, + 2215: 0x5C35, + 2216: 0x5C36, + 2217: 0x5C37, + 2218: 0x5C43, + 2219: 0x5C44, + 2220: 0x5C46, + 2221: 0x5C47, + 2222: 0x5C4C, + 2223: 0x5C4D, + 2224: 0x5C52, + 2225: 0x5C53, + 2226: 0x5C54, + 2227: 0x5C56, + 2228: 0x5C57, + 2229: 0x5C58, + 2230: 0x5C5A, + 2231: 0x5C5B, + 2232: 0x5C5C, + 2233: 0x5C5D, + 2234: 0x5C5F, + 2235: 0x5C62, + 2236: 0x5C64, + 2237: 0x5C67, + 2238: 0x5C68, + 2239: 0x5C69, + 2240: 0x5C6A, + 2241: 0x5C6B, + 2242: 0x5C6C, + 2243: 0x5C6D, + 2244: 0x5C70, + 2245: 0x5C72, + 2246: 0x5C73, + 2247: 0x5C74, + 2248: 0x5C75, + 2249: 0x5C76, + 2250: 0x5C77, + 2251: 0x5C78, + 2252: 0x5C7B, + 2253: 0x5C7C, + 2254: 0x5C7D, + 2255: 0x5C7E, + 2256: 0x5C80, + 2257: 0x5C83, + 2258: 0x5C84, + 2259: 0x5C85, + 2260: 0x5C86, + 2261: 0x5C87, + 2262: 0x5C89, + 2263: 0x5C8A, + 2264: 0x5C8B, + 2265: 0x5C8E, + 2266: 0x5C8F, + 2267: 0x5C92, + 2268: 0x5C93, + 2269: 0x5C95, + 2270: 0x5C9D, + 2271: 0x5C9E, + 2272: 0x5C9F, + 2273: 0x5CA0, + 2274: 0x5CA1, + 2275: 0x5CA4, + 2276: 0x5CA5, + 2277: 0x5CA6, + 2278: 0x5CA7, + 2279: 0x5CA8, + 2280: 0x5CAA, + 2281: 0x5CAE, + 2282: 0x5CAF, + 2283: 0x5CB0, + 2284: 0x5CB2, + 2285: 0x5CB4, + 2286: 0x5CB6, + 2287: 0x5CB9, + 2288: 0x5CBA, + 2289: 0x5CBB, + 2290: 0x5CBC, + 2291: 0x5CBE, + 2292: 0x5CC0, + 2293: 0x5CC2, + 2294: 0x5CC3, + 2295: 0x5CC5, + 2296: 0x5CC6, + 2297: 0x5CC7, + 2298: 0x5CC8, + 2299: 0x5CC9, + 2300: 0x5CCA, + 2301: 0x5CCC, + 2302: 0x5CCD, + 2303: 0x5CCE, + 2304: 0x5CCF, + 2305: 0x5CD0, + 2306: 0x5CD1, + 2307: 0x5CD3, + 2308: 0x5CD4, + 2309: 0x5CD5, + 2310: 0x5CD6, + 2311: 0x5CD7, + 2312: 0x5CD8, + 2313: 0x5CDA, + 2314: 0x5CDB, + 2315: 0x5CDC, + 2316: 0x5CDD, + 2317: 0x5CDE, + 2318: 0x5CDF, + 2319: 0x5CE0, + 2320: 0x5CE2, + 2321: 0x5CE3, + 2322: 0x5CE7, + 2323: 0x5CE9, + 2324: 0x5CEB, + 2325: 0x5CEC, + 2326: 0x5CEE, + 2327: 0x5CEF, + 2328: 0x5CF1, + 2329: 0x5CF2, + 2330: 0x5CF3, + 2331: 0x5CF4, + 2332: 0x5CF5, + 2333: 0x5CF6, + 2334: 0x5CF7, + 2335: 0x5CF8, + 2336: 0x5CF9, + 2337: 0x5CFA, + 2338: 0x5CFC, + 2339: 0x5CFD, + 2340: 0x5CFE, + 2341: 0x5CFF, + 2342: 0x5D00, + 2343: 0x5D01, + 2344: 0x5D04, + 2345: 0x5D05, + 2346: 0x5D08, + 2347: 0x5D09, + 2348: 0x5D0A, + 2349: 0x5D0B, + 2350: 0x5D0C, + 2351: 0x5D0D, + 2352: 0x5D0F, + 2353: 0x5D10, + 2354: 0x5D11, + 2355: 0x5D12, + 2356: 0x5D13, + 2357: 0x5D15, + 2358: 0x5D17, + 2359: 0x5D18, + 2360: 0x5D19, + 2361: 0x5D1A, + 2362: 0x5D1C, + 2363: 0x5D1D, + 2364: 0x5D1F, + 2365: 0x5D20, + 2366: 0x5D21, + 2367: 0x5D22, + 2368: 0x5D23, + 2369: 0x5D25, + 2370: 0x5D28, + 2371: 0x5D2A, + 2372: 0x5D2B, + 2373: 0x5D2C, + 2374: 0x5D2F, + 2375: 0x5D30, + 2376: 0x5D31, + 2377: 0x5D32, + 2378: 0x5D33, + 2379: 0x5D35, + 2380: 0x5D36, + 2381: 0x5D37, + 2382: 0x5D38, + 2383: 0x5D39, + 2384: 0x5D3A, + 2385: 0x5D3B, + 2386: 0x5D3C, + 2387: 0x5D3F, + 2388: 0x5D40, + 2389: 0x5D41, + 2390: 0x5D42, + 2391: 0x5D43, + 2392: 0x5D44, + 2393: 0x5D45, + 2394: 0x5D46, + 2395: 0x5D48, + 2396: 0x5D49, + 2397: 0x5D4D, + 2398: 0x5D4E, + 2399: 0x5D4F, + 2400: 0x5D50, + 2401: 0x5D51, + 2402: 0x5D52, + 2403: 0x5D53, + 2404: 0x5D54, + 2405: 0x5D55, + 2406: 0x5D56, + 2407: 0x5D57, + 2408: 0x5D59, + 2409: 0x5D5A, + 2410: 0x5D5C, + 2411: 0x5D5E, + 2412: 0x5D5F, + 2413: 0x5D60, + 2414: 0x5D61, + 2415: 0x5D62, + 2416: 0x5D63, + 2417: 0x5D64, + 2418: 0x5D65, + 2419: 0x5D66, + 2420: 0x5D67, + 2421: 0x5D68, + 2422: 0x5D6A, + 2423: 0x5D6D, + 2424: 0x5D6E, + 2425: 0x5D70, + 2426: 0x5D71, + 2427: 0x5D72, + 2428: 0x5D73, + 2429: 0x5D75, + 2430: 0x5D76, + 2431: 0x5D77, + 2432: 0x5D78, + 2433: 0x5D79, + 2434: 0x5D7A, + 2435: 0x5D7B, + 2436: 0x5D7C, + 2437: 0x5D7D, + 2438: 0x5D7E, + 2439: 0x5D7F, + 2440: 0x5D80, + 2441: 0x5D81, + 2442: 0x5D83, + 2443: 0x5D84, + 2444: 0x5D85, + 2445: 0x5D86, + 2446: 0x5D87, + 2447: 0x5D88, + 2448: 0x5D89, + 2449: 0x5D8A, + 2450: 0x5D8B, + 2451: 0x5D8C, + 2452: 0x5D8D, + 2453: 0x5D8E, + 2454: 0x5D8F, + 2455: 0x5D90, + 2456: 0x5D91, + 2457: 0x5D92, + 2458: 0x5D93, + 2459: 0x5D94, + 2460: 0x5D95, + 2461: 0x5D96, + 2462: 0x5D97, + 2463: 0x5D98, + 2464: 0x5D9A, + 2465: 0x5D9B, + 2466: 0x5D9C, + 2467: 0x5D9E, + 2468: 0x5D9F, + 2469: 0x5DA0, + 2470: 0x5DA1, + 2471: 0x5DA2, + 2472: 0x5DA3, + 2473: 0x5DA4, + 2474: 0x5DA5, + 2475: 0x5DA6, + 2476: 0x5DA7, + 2477: 0x5DA8, + 2478: 0x5DA9, + 2479: 0x5DAA, + 2480: 0x5DAB, + 2481: 0x5DAC, + 2482: 0x5DAD, + 2483: 0x5DAE, + 2484: 0x5DAF, + 2485: 0x5DB0, + 2486: 0x5DB1, + 2487: 0x5DB2, + 2488: 0x5DB3, + 2489: 0x5DB4, + 2490: 0x5DB5, + 2491: 0x5DB6, + 2492: 0x5DB8, + 2493: 0x5DB9, + 2494: 0x5DBA, + 2495: 0x5DBB, + 2496: 0x5DBC, + 2497: 0x5DBD, + 2498: 0x5DBE, + 2499: 0x5DBF, + 2500: 0x5DC0, + 2501: 0x5DC1, + 2502: 0x5DC2, + 2503: 0x5DC3, + 2504: 0x5DC4, + 2505: 0x5DC6, + 2506: 0x5DC7, + 2507: 0x5DC8, + 2508: 0x5DC9, + 2509: 0x5DCA, + 2510: 0x5DCB, + 2511: 0x5DCC, + 2512: 0x5DCE, + 2513: 0x5DCF, + 2514: 0x5DD0, + 2515: 0x5DD1, + 2516: 0x5DD2, + 2517: 0x5DD3, + 2518: 0x5DD4, + 2519: 0x5DD5, + 2520: 0x5DD6, + 2521: 0x5DD7, + 2522: 0x5DD8, + 2523: 0x5DD9, + 2524: 0x5DDA, + 2525: 0x5DDC, + 2526: 0x5DDF, + 2527: 0x5DE0, + 2528: 0x5DE3, + 2529: 0x5DE4, + 2530: 0x5DEA, + 2531: 0x5DEC, + 2532: 0x5DED, + 2533: 0x5DF0, + 2534: 0x5DF5, + 2535: 0x5DF6, + 2536: 0x5DF8, + 2537: 0x5DF9, + 2538: 0x5DFA, + 2539: 0x5DFB, + 2540: 0x5DFC, + 2541: 0x5DFF, + 2542: 0x5E00, + 2543: 0x5E04, + 2544: 0x5E07, + 2545: 0x5E09, + 2546: 0x5E0A, + 2547: 0x5E0B, + 2548: 0x5E0D, + 2549: 0x5E0E, + 2550: 0x5E12, + 2551: 0x5E13, + 2552: 0x5E17, + 2553: 0x5E1E, + 2554: 0x5E1F, + 2555: 0x5E20, + 2556: 0x5E21, + 2557: 0x5E22, + 2558: 0x5E23, + 2559: 0x5E24, + 2560: 0x5E25, + 2561: 0x5E28, + 2562: 0x5E29, + 2563: 0x5E2A, + 2564: 0x5E2B, + 2565: 0x5E2C, + 2566: 0x5E2F, + 2567: 0x5E30, + 2568: 0x5E32, + 2569: 0x5E33, + 2570: 0x5E34, + 2571: 0x5E35, + 2572: 0x5E36, + 2573: 0x5E39, + 2574: 0x5E3A, + 2575: 0x5E3E, + 2576: 0x5E3F, + 2577: 0x5E40, + 2578: 0x5E41, + 2579: 0x5E43, + 2580: 0x5E46, + 2581: 0x5E47, + 2582: 0x5E48, + 2583: 0x5E49, + 2584: 0x5E4A, + 2585: 0x5E4B, + 2586: 0x5E4D, + 2587: 0x5E4E, + 2588: 0x5E4F, + 2589: 0x5E50, + 2590: 0x5E51, + 2591: 0x5E52, + 2592: 0x5E53, + 2593: 0x5E56, + 2594: 0x5E57, + 2595: 0x5E58, + 2596: 0x5E59, + 2597: 0x5E5A, + 2598: 0x5E5C, + 2599: 0x5E5D, + 2600: 0x5E5F, + 2601: 0x5E60, + 2602: 0x5E63, + 2603: 0x5E64, + 2604: 0x5E65, + 2605: 0x5E66, + 2606: 0x5E67, + 2607: 0x5E68, + 2608: 0x5E69, + 2609: 0x5E6A, + 2610: 0x5E6B, + 2611: 0x5E6C, + 2612: 0x5E6D, + 2613: 0x5E6E, + 2614: 0x5E6F, + 2615: 0x5E70, + 2616: 0x5E71, + 2617: 0x5E75, + 2618: 0x5E77, + 2619: 0x5E79, + 2620: 0x5E7E, + 2621: 0x5E81, + 2622: 0x5E82, + 2623: 0x5E83, + 2624: 0x5E85, + 2625: 0x5E88, + 2626: 0x5E89, + 2627: 0x5E8C, + 2628: 0x5E8D, + 2629: 0x5E8E, + 2630: 0x5E92, + 2631: 0x5E98, + 2632: 0x5E9B, + 2633: 0x5E9D, + 2634: 0x5EA1, + 2635: 0x5EA2, + 2636: 0x5EA3, + 2637: 0x5EA4, + 2638: 0x5EA8, + 2639: 0x5EA9, + 2640: 0x5EAA, + 2641: 0x5EAB, + 2642: 0x5EAC, + 2643: 0x5EAE, + 2644: 0x5EAF, + 2645: 0x5EB0, + 2646: 0x5EB1, + 2647: 0x5EB2, + 2648: 0x5EB4, + 2649: 0x5EBA, + 2650: 0x5EBB, + 2651: 0x5EBC, + 2652: 0x5EBD, + 2653: 0x5EBF, + 2654: 0x5EC0, + 2655: 0x5EC1, + 2656: 0x5EC2, + 2657: 0x5EC3, + 2658: 0x5EC4, + 2659: 0x5EC5, + 2660: 0x5EC6, + 2661: 0x5EC7, + 2662: 0x5EC8, + 2663: 0x5ECB, + 2664: 0x5ECC, + 2665: 0x5ECD, + 2666: 0x5ECE, + 2667: 0x5ECF, + 2668: 0x5ED0, + 2669: 0x5ED4, + 2670: 0x5ED5, + 2671: 0x5ED7, + 2672: 0x5ED8, + 2673: 0x5ED9, + 2674: 0x5EDA, + 2675: 0x5EDC, + 2676: 0x5EDD, + 2677: 0x5EDE, + 2678: 0x5EDF, + 2679: 0x5EE0, + 2680: 0x5EE1, + 2681: 0x5EE2, + 2682: 0x5EE3, + 2683: 0x5EE4, + 2684: 0x5EE5, + 2685: 0x5EE6, + 2686: 0x5EE7, + 2687: 0x5EE9, + 2688: 0x5EEB, + 2689: 0x5EEC, + 2690: 0x5EED, + 2691: 0x5EEE, + 2692: 0x5EEF, + 2693: 0x5EF0, + 2694: 0x5EF1, + 2695: 0x5EF2, + 2696: 0x5EF3, + 2697: 0x5EF5, + 2698: 0x5EF8, + 2699: 0x5EF9, + 2700: 0x5EFB, + 2701: 0x5EFC, + 2702: 0x5EFD, + 2703: 0x5F05, + 2704: 0x5F06, + 2705: 0x5F07, + 2706: 0x5F09, + 2707: 0x5F0C, + 2708: 0x5F0D, + 2709: 0x5F0E, + 2710: 0x5F10, + 2711: 0x5F12, + 2712: 0x5F14, + 2713: 0x5F16, + 2714: 0x5F19, + 2715: 0x5F1A, + 2716: 0x5F1C, + 2717: 0x5F1D, + 2718: 0x5F1E, + 2719: 0x5F21, + 2720: 0x5F22, + 2721: 0x5F23, + 2722: 0x5F24, + 2723: 0x5F28, + 2724: 0x5F2B, + 2725: 0x5F2C, + 2726: 0x5F2E, + 2727: 0x5F30, + 2728: 0x5F32, + 2729: 0x5F33, + 2730: 0x5F34, + 2731: 0x5F35, + 2732: 0x5F36, + 2733: 0x5F37, + 2734: 0x5F38, + 2735: 0x5F3B, + 2736: 0x5F3D, + 2737: 0x5F3E, + 2738: 0x5F3F, + 2739: 0x5F41, + 2740: 0x5F42, + 2741: 0x5F43, + 2742: 0x5F44, + 2743: 0x5F45, + 2744: 0x5F46, + 2745: 0x5F47, + 2746: 0x5F48, + 2747: 0x5F49, + 2748: 0x5F4A, + 2749: 0x5F4B, + 2750: 0x5F4C, + 2751: 0x5F4D, + 2752: 0x5F4E, + 2753: 0x5F4F, + 2754: 0x5F51, + 2755: 0x5F54, + 2756: 0x5F59, + 2757: 0x5F5A, + 2758: 0x5F5B, + 2759: 0x5F5C, + 2760: 0x5F5E, + 2761: 0x5F5F, + 2762: 0x5F60, + 2763: 0x5F63, + 2764: 0x5F65, + 2765: 0x5F67, + 2766: 0x5F68, + 2767: 0x5F6B, + 2768: 0x5F6E, + 2769: 0x5F6F, + 2770: 0x5F72, + 2771: 0x5F74, + 2772: 0x5F75, + 2773: 0x5F76, + 2774: 0x5F78, + 2775: 0x5F7A, + 2776: 0x5F7D, + 2777: 0x5F7E, + 2778: 0x5F7F, + 2779: 0x5F83, + 2780: 0x5F86, + 2781: 0x5F8D, + 2782: 0x5F8E, + 2783: 0x5F8F, + 2784: 0x5F91, + 2785: 0x5F93, + 2786: 0x5F94, + 2787: 0x5F96, + 2788: 0x5F9A, + 2789: 0x5F9B, + 2790: 0x5F9D, + 2791: 0x5F9E, + 2792: 0x5F9F, + 2793: 0x5FA0, + 2794: 0x5FA2, + 2795: 0x5FA3, + 2796: 0x5FA4, + 2797: 0x5FA5, + 2798: 0x5FA6, + 2799: 0x5FA7, + 2800: 0x5FA9, + 2801: 0x5FAB, + 2802: 0x5FAC, + 2803: 0x5FAF, + 2804: 0x5FB0, + 2805: 0x5FB1, + 2806: 0x5FB2, + 2807: 0x5FB3, + 2808: 0x5FB4, + 2809: 0x5FB6, + 2810: 0x5FB8, + 2811: 0x5FB9, + 2812: 0x5FBA, + 2813: 0x5FBB, + 2814: 0x5FBE, + 2815: 0x5FBF, + 2816: 0x5FC0, + 2817: 0x5FC1, + 2818: 0x5FC2, + 2819: 0x5FC7, + 2820: 0x5FC8, + 2821: 0x5FCA, + 2822: 0x5FCB, + 2823: 0x5FCE, + 2824: 0x5FD3, + 2825: 0x5FD4, + 2826: 0x5FD5, + 2827: 0x5FDA, + 2828: 0x5FDB, + 2829: 0x5FDC, + 2830: 0x5FDE, + 2831: 0x5FDF, + 2832: 0x5FE2, + 2833: 0x5FE3, + 2834: 0x5FE5, + 2835: 0x5FE6, + 2836: 0x5FE8, + 2837: 0x5FE9, + 2838: 0x5FEC, + 2839: 0x5FEF, + 2840: 0x5FF0, + 2841: 0x5FF2, + 2842: 0x5FF3, + 2843: 0x5FF4, + 2844: 0x5FF6, + 2845: 0x5FF7, + 2846: 0x5FF9, + 2847: 0x5FFA, + 2848: 0x5FFC, + 2849: 0x6007, + 2850: 0x6008, + 2851: 0x6009, + 2852: 0x600B, + 2853: 0x600C, + 2854: 0x6010, + 2855: 0x6011, + 2856: 0x6013, + 2857: 0x6017, + 2858: 0x6018, + 2859: 0x601A, + 2860: 0x601E, + 2861: 0x601F, + 2862: 0x6022, + 2863: 0x6023, + 2864: 0x6024, + 2865: 0x602C, + 2866: 0x602D, + 2867: 0x602E, + 2868: 0x6030, + 2869: 0x6031, + 2870: 0x6032, + 2871: 0x6033, + 2872: 0x6034, + 2873: 0x6036, + 2874: 0x6037, + 2875: 0x6038, + 2876: 0x6039, + 2877: 0x603A, + 2878: 0x603D, + 2879: 0x603E, + 2880: 0x6040, + 2881: 0x6044, + 2882: 0x6045, + 2883: 0x6046, + 2884: 0x6047, + 2885: 0x6048, + 2886: 0x6049, + 2887: 0x604A, + 2888: 0x604C, + 2889: 0x604E, + 2890: 0x604F, + 2891: 0x6051, + 2892: 0x6053, + 2893: 0x6054, + 2894: 0x6056, + 2895: 0x6057, + 2896: 0x6058, + 2897: 0x605B, + 2898: 0x605C, + 2899: 0x605E, + 2900: 0x605F, + 2901: 0x6060, + 2902: 0x6061, + 2903: 0x6065, + 2904: 0x6066, + 2905: 0x606E, + 2906: 0x6071, + 2907: 0x6072, + 2908: 0x6074, + 2909: 0x6075, + 2910: 0x6077, + 2911: 0x607E, + 2912: 0x6080, + 2913: 0x6081, + 2914: 0x6082, + 2915: 0x6085, + 2916: 0x6086, + 2917: 0x6087, + 2918: 0x6088, + 2919: 0x608A, + 2920: 0x608B, + 2921: 0x608E, + 2922: 0x608F, + 2923: 0x6090, + 2924: 0x6091, + 2925: 0x6093, + 2926: 0x6095, + 2927: 0x6097, + 2928: 0x6098, + 2929: 0x6099, + 2930: 0x609C, + 2931: 0x609E, + 2932: 0x60A1, + 2933: 0x60A2, + 2934: 0x60A4, + 2935: 0x60A5, + 2936: 0x60A7, + 2937: 0x60A9, + 2938: 0x60AA, + 2939: 0x60AE, + 2940: 0x60B0, + 2941: 0x60B3, + 2942: 0x60B5, + 2943: 0x60B6, + 2944: 0x60B7, + 2945: 0x60B9, + 2946: 0x60BA, + 2947: 0x60BD, + 2948: 0x60BE, + 2949: 0x60BF, + 2950: 0x60C0, + 2951: 0x60C1, + 2952: 0x60C2, + 2953: 0x60C3, + 2954: 0x60C4, + 2955: 0x60C7, + 2956: 0x60C8, + 2957: 0x60C9, + 2958: 0x60CC, + 2959: 0x60CD, + 2960: 0x60CE, + 2961: 0x60CF, + 2962: 0x60D0, + 2963: 0x60D2, + 2964: 0x60D3, + 2965: 0x60D4, + 2966: 0x60D6, + 2967: 0x60D7, + 2968: 0x60D9, + 2969: 0x60DB, + 2970: 0x60DE, + 2971: 0x60E1, + 2972: 0x60E2, + 2973: 0x60E3, + 2974: 0x60E4, + 2975: 0x60E5, + 2976: 0x60EA, + 2977: 0x60F1, + 2978: 0x60F2, + 2979: 0x60F5, + 2980: 0x60F7, + 2981: 0x60F8, + 2982: 0x60FB, + 2983: 0x60FC, + 2984: 0x60FD, + 2985: 0x60FE, + 2986: 0x60FF, + 2987: 0x6102, + 2988: 0x6103, + 2989: 0x6104, + 2990: 0x6105, + 2991: 0x6107, + 2992: 0x610A, + 2993: 0x610B, + 2994: 0x610C, + 2995: 0x6110, + 2996: 0x6111, + 2997: 0x6112, + 2998: 0x6113, + 2999: 0x6114, + 3000: 0x6116, + 3001: 0x6117, + 3002: 0x6118, + 3003: 0x6119, + 3004: 0x611B, + 3005: 0x611C, + 3006: 0x611D, + 3007: 0x611E, + 3008: 0x6121, + 3009: 0x6122, + 3010: 0x6125, + 3011: 0x6128, + 3012: 0x6129, + 3013: 0x612A, + 3014: 0x612C, + 3015: 0x612D, + 3016: 0x612E, + 3017: 0x612F, + 3018: 0x6130, + 3019: 0x6131, + 3020: 0x6132, + 3021: 0x6133, + 3022: 0x6134, + 3023: 0x6135, + 3024: 0x6136, + 3025: 0x6137, + 3026: 0x6138, + 3027: 0x6139, + 3028: 0x613A, + 3029: 0x613B, + 3030: 0x613C, + 3031: 0x613D, + 3032: 0x613E, + 3033: 0x6140, + 3034: 0x6141, + 3035: 0x6142, + 3036: 0x6143, + 3037: 0x6144, + 3038: 0x6145, + 3039: 0x6146, + 3040: 0x6147, + 3041: 0x6149, + 3042: 0x614B, + 3043: 0x614D, + 3044: 0x614F, + 3045: 0x6150, + 3046: 0x6152, + 3047: 0x6153, + 3048: 0x6154, + 3049: 0x6156, + 3050: 0x6157, + 3051: 0x6158, + 3052: 0x6159, + 3053: 0x615A, + 3054: 0x615B, + 3055: 0x615C, + 3056: 0x615E, + 3057: 0x615F, + 3058: 0x6160, + 3059: 0x6161, + 3060: 0x6163, + 3061: 0x6164, + 3062: 0x6165, + 3063: 0x6166, + 3064: 0x6169, + 3065: 0x616A, + 3066: 0x616B, + 3067: 0x616C, + 3068: 0x616D, + 3069: 0x616E, + 3070: 0x616F, + 3071: 0x6171, + 3072: 0x6172, + 3073: 0x6173, + 3074: 0x6174, + 3075: 0x6176, + 3076: 0x6178, + 3077: 0x6179, + 3078: 0x617A, + 3079: 0x617B, + 3080: 0x617C, + 3081: 0x617D, + 3082: 0x617E, + 3083: 0x617F, + 3084: 0x6180, + 3085: 0x6181, + 3086: 0x6182, + 3087: 0x6183, + 3088: 0x6184, + 3089: 0x6185, + 3090: 0x6186, + 3091: 0x6187, + 3092: 0x6188, + 3093: 0x6189, + 3094: 0x618A, + 3095: 0x618C, + 3096: 0x618D, + 3097: 0x618F, + 3098: 0x6190, + 3099: 0x6191, + 3100: 0x6192, + 3101: 0x6193, + 3102: 0x6195, + 3103: 0x6196, + 3104: 0x6197, + 3105: 0x6198, + 3106: 0x6199, + 3107: 0x619A, + 3108: 0x619B, + 3109: 0x619C, + 3110: 0x619E, + 3111: 0x619F, + 3112: 0x61A0, + 3113: 0x61A1, + 3114: 0x61A2, + 3115: 0x61A3, + 3116: 0x61A4, + 3117: 0x61A5, + 3118: 0x61A6, + 3119: 0x61AA, + 3120: 0x61AB, + 3121: 0x61AD, + 3122: 0x61AE, + 3123: 0x61AF, + 3124: 0x61B0, + 3125: 0x61B1, + 3126: 0x61B2, + 3127: 0x61B3, + 3128: 0x61B4, + 3129: 0x61B5, + 3130: 0x61B6, + 3131: 0x61B8, + 3132: 0x61B9, + 3133: 0x61BA, + 3134: 0x61BB, + 3135: 0x61BC, + 3136: 0x61BD, + 3137: 0x61BF, + 3138: 0x61C0, + 3139: 0x61C1, + 3140: 0x61C3, + 3141: 0x61C4, + 3142: 0x61C5, + 3143: 0x61C6, + 3144: 0x61C7, + 3145: 0x61C9, + 3146: 0x61CC, + 3147: 0x61CD, + 3148: 0x61CE, + 3149: 0x61CF, + 3150: 0x61D0, + 3151: 0x61D3, + 3152: 0x61D5, + 3153: 0x61D6, + 3154: 0x61D7, + 3155: 0x61D8, + 3156: 0x61D9, + 3157: 0x61DA, + 3158: 0x61DB, + 3159: 0x61DC, + 3160: 0x61DD, + 3161: 0x61DE, + 3162: 0x61DF, + 3163: 0x61E0, + 3164: 0x61E1, + 3165: 0x61E2, + 3166: 0x61E3, + 3167: 0x61E4, + 3168: 0x61E5, + 3169: 0x61E7, + 3170: 0x61E8, + 3171: 0x61E9, + 3172: 0x61EA, + 3173: 0x61EB, + 3174: 0x61EC, + 3175: 0x61ED, + 3176: 0x61EE, + 3177: 0x61EF, + 3178: 0x61F0, + 3179: 0x61F1, + 3180: 0x61F2, + 3181: 0x61F3, + 3182: 0x61F4, + 3183: 0x61F6, + 3184: 0x61F7, + 3185: 0x61F8, + 3186: 0x61F9, + 3187: 0x61FA, + 3188: 0x61FB, + 3189: 0x61FC, + 3190: 0x61FD, + 3191: 0x61FE, + 3192: 0x6200, + 3193: 0x6201, + 3194: 0x6202, + 3195: 0x6203, + 3196: 0x6204, + 3197: 0x6205, + 3198: 0x6207, + 3199: 0x6209, + 3200: 0x6213, + 3201: 0x6214, + 3202: 0x6219, + 3203: 0x621C, + 3204: 0x621D, + 3205: 0x621E, + 3206: 0x6220, + 3207: 0x6223, + 3208: 0x6226, + 3209: 0x6227, + 3210: 0x6228, + 3211: 0x6229, + 3212: 0x622B, + 3213: 0x622D, + 3214: 0x622F, + 3215: 0x6230, + 3216: 0x6231, + 3217: 0x6232, + 3218: 0x6235, + 3219: 0x6236, + 3220: 0x6238, + 3221: 0x6239, + 3222: 0x623A, + 3223: 0x623B, + 3224: 0x623C, + 3225: 0x6242, + 3226: 0x6244, + 3227: 0x6245, + 3228: 0x6246, + 3229: 0x624A, + 3230: 0x624F, + 3231: 0x6250, + 3232: 0x6255, + 3233: 0x6256, + 3234: 0x6257, + 3235: 0x6259, + 3236: 0x625A, + 3237: 0x625C, + 3238: 0x625D, + 3239: 0x625E, + 3240: 0x625F, + 3241: 0x6260, + 3242: 0x6261, + 3243: 0x6262, + 3244: 0x6264, + 3245: 0x6265, + 3246: 0x6268, + 3247: 0x6271, + 3248: 0x6272, + 3249: 0x6274, + 3250: 0x6275, + 3251: 0x6277, + 3252: 0x6278, + 3253: 0x627A, + 3254: 0x627B, + 3255: 0x627D, + 3256: 0x6281, + 3257: 0x6282, + 3258: 0x6283, + 3259: 0x6285, + 3260: 0x6286, + 3261: 0x6287, + 3262: 0x6288, + 3263: 0x628B, + 3264: 0x628C, + 3265: 0x628D, + 3266: 0x628E, + 3267: 0x628F, + 3268: 0x6290, + 3269: 0x6294, + 3270: 0x6299, + 3271: 0x629C, + 3272: 0x629D, + 3273: 0x629E, + 3274: 0x62A3, + 3275: 0x62A6, + 3276: 0x62A7, + 3277: 0x62A9, + 3278: 0x62AA, + 3279: 0x62AD, + 3280: 0x62AE, + 3281: 0x62AF, + 3282: 0x62B0, + 3283: 0x62B2, + 3284: 0x62B3, + 3285: 0x62B4, + 3286: 0x62B6, + 3287: 0x62B7, + 3288: 0x62B8, + 3289: 0x62BA, + 3290: 0x62BE, + 3291: 0x62C0, + 3292: 0x62C1, + 3293: 0x62C3, + 3294: 0x62CB, + 3295: 0x62CF, + 3296: 0x62D1, + 3297: 0x62D5, + 3298: 0x62DD, + 3299: 0x62DE, + 3300: 0x62E0, + 3301: 0x62E1, + 3302: 0x62E4, + 3303: 0x62EA, + 3304: 0x62EB, + 3305: 0x62F0, + 3306: 0x62F2, + 3307: 0x62F5, + 3308: 0x62F8, + 3309: 0x62F9, + 3310: 0x62FA, + 3311: 0x62FB, + 3312: 0x6300, + 3313: 0x6303, + 3314: 0x6304, + 3315: 0x6305, + 3316: 0x6306, + 3317: 0x630A, + 3318: 0x630B, + 3319: 0x630C, + 3320: 0x630D, + 3321: 0x630F, + 3322: 0x6310, + 3323: 0x6312, + 3324: 0x6313, + 3325: 0x6314, + 3326: 0x6315, + 3327: 0x6317, + 3328: 0x6318, + 3329: 0x6319, + 3330: 0x631C, + 3331: 0x6326, + 3332: 0x6327, + 3333: 0x6329, + 3334: 0x632C, + 3335: 0x632D, + 3336: 0x632E, + 3337: 0x6330, + 3338: 0x6331, + 3339: 0x6333, + 3340: 0x6334, + 3341: 0x6335, + 3342: 0x6336, + 3343: 0x6337, + 3344: 0x6338, + 3345: 0x633B, + 3346: 0x633C, + 3347: 0x633E, + 3348: 0x633F, + 3349: 0x6340, + 3350: 0x6341, + 3351: 0x6344, + 3352: 0x6347, + 3353: 0x6348, + 3354: 0x634A, + 3355: 0x6351, + 3356: 0x6352, + 3357: 0x6353, + 3358: 0x6354, + 3359: 0x6356, + 3360: 0x6357, + 3361: 0x6358, + 3362: 0x6359, + 3363: 0x635A, + 3364: 0x635B, + 3365: 0x635C, + 3366: 0x635D, + 3367: 0x6360, + 3368: 0x6364, + 3369: 0x6365, + 3370: 0x6366, + 3371: 0x6368, + 3372: 0x636A, + 3373: 0x636B, + 3374: 0x636C, + 3375: 0x636F, + 3376: 0x6370, + 3377: 0x6372, + 3378: 0x6373, + 3379: 0x6374, + 3380: 0x6375, + 3381: 0x6378, + 3382: 0x6379, + 3383: 0x637C, + 3384: 0x637D, + 3385: 0x637E, + 3386: 0x637F, + 3387: 0x6381, + 3388: 0x6383, + 3389: 0x6384, + 3390: 0x6385, + 3391: 0x6386, + 3392: 0x638B, + 3393: 0x638D, + 3394: 0x6391, + 3395: 0x6393, + 3396: 0x6394, + 3397: 0x6395, + 3398: 0x6397, + 3399: 0x6399, + 3400: 0x639A, + 3401: 0x639B, + 3402: 0x639C, + 3403: 0x639D, + 3404: 0x639E, + 3405: 0x639F, + 3406: 0x63A1, + 3407: 0x63A4, + 3408: 0x63A6, + 3409: 0x63AB, + 3410: 0x63AF, + 3411: 0x63B1, + 3412: 0x63B2, + 3413: 0x63B5, + 3414: 0x63B6, + 3415: 0x63B9, + 3416: 0x63BB, + 3417: 0x63BD, + 3418: 0x63BF, + 3419: 0x63C0, + 3420: 0x63C1, + 3421: 0x63C2, + 3422: 0x63C3, + 3423: 0x63C5, + 3424: 0x63C7, + 3425: 0x63C8, + 3426: 0x63CA, + 3427: 0x63CB, + 3428: 0x63CC, + 3429: 0x63D1, + 3430: 0x63D3, + 3431: 0x63D4, + 3432: 0x63D5, + 3433: 0x63D7, + 3434: 0x63D8, + 3435: 0x63D9, + 3436: 0x63DA, + 3437: 0x63DB, + 3438: 0x63DC, + 3439: 0x63DD, + 3440: 0x63DF, + 3441: 0x63E2, + 3442: 0x63E4, + 3443: 0x63E5, + 3444: 0x63E6, + 3445: 0x63E7, + 3446: 0x63E8, + 3447: 0x63EB, + 3448: 0x63EC, + 3449: 0x63EE, + 3450: 0x63EF, + 3451: 0x63F0, + 3452: 0x63F1, + 3453: 0x63F3, + 3454: 0x63F5, + 3455: 0x63F7, + 3456: 0x63F9, + 3457: 0x63FA, + 3458: 0x63FB, + 3459: 0x63FC, + 3460: 0x63FE, + 3461: 0x6403, + 3462: 0x6404, + 3463: 0x6406, + 3464: 0x6407, + 3465: 0x6408, + 3466: 0x6409, + 3467: 0x640A, + 3468: 0x640D, + 3469: 0x640E, + 3470: 0x6411, + 3471: 0x6412, + 3472: 0x6415, + 3473: 0x6416, + 3474: 0x6417, + 3475: 0x6418, + 3476: 0x6419, + 3477: 0x641A, + 3478: 0x641D, + 3479: 0x641F, + 3480: 0x6422, + 3481: 0x6423, + 3482: 0x6424, + 3483: 0x6425, + 3484: 0x6427, + 3485: 0x6428, + 3486: 0x6429, + 3487: 0x642B, + 3488: 0x642E, + 3489: 0x642F, + 3490: 0x6430, + 3491: 0x6431, + 3492: 0x6432, + 3493: 0x6433, + 3494: 0x6435, + 3495: 0x6436, + 3496: 0x6437, + 3497: 0x6438, + 3498: 0x6439, + 3499: 0x643B, + 3500: 0x643C, + 3501: 0x643E, + 3502: 0x6440, + 3503: 0x6442, + 3504: 0x6443, + 3505: 0x6449, + 3506: 0x644B, + 3507: 0x644C, + 3508: 0x644D, + 3509: 0x644E, + 3510: 0x644F, + 3511: 0x6450, + 3512: 0x6451, + 3513: 0x6453, + 3514: 0x6455, + 3515: 0x6456, + 3516: 0x6457, + 3517: 0x6459, + 3518: 0x645A, + 3519: 0x645B, + 3520: 0x645C, + 3521: 0x645D, + 3522: 0x645F, + 3523: 0x6460, + 3524: 0x6461, + 3525: 0x6462, + 3526: 0x6463, + 3527: 0x6464, + 3528: 0x6465, + 3529: 0x6466, + 3530: 0x6468, + 3531: 0x646A, + 3532: 0x646B, + 3533: 0x646C, + 3534: 0x646E, + 3535: 0x646F, + 3536: 0x6470, + 3537: 0x6471, + 3538: 0x6472, + 3539: 0x6473, + 3540: 0x6474, + 3541: 0x6475, + 3542: 0x6476, + 3543: 0x6477, + 3544: 0x647B, + 3545: 0x647C, + 3546: 0x647D, + 3547: 0x647E, + 3548: 0x647F, + 3549: 0x6480, + 3550: 0x6481, + 3551: 0x6483, + 3552: 0x6486, + 3553: 0x6488, + 3554: 0x6489, + 3555: 0x648A, + 3556: 0x648B, + 3557: 0x648C, + 3558: 0x648D, + 3559: 0x648E, + 3560: 0x648F, + 3561: 0x6490, + 3562: 0x6493, + 3563: 0x6494, + 3564: 0x6497, + 3565: 0x6498, + 3566: 0x649A, + 3567: 0x649B, + 3568: 0x649C, + 3569: 0x649D, + 3570: 0x649F, + 3571: 0x64A0, + 3572: 0x64A1, + 3573: 0x64A2, + 3574: 0x64A3, + 3575: 0x64A5, + 3576: 0x64A6, + 3577: 0x64A7, + 3578: 0x64A8, + 3579: 0x64AA, + 3580: 0x64AB, + 3581: 0x64AF, + 3582: 0x64B1, + 3583: 0x64B2, + 3584: 0x64B3, + 3585: 0x64B4, + 3586: 0x64B6, + 3587: 0x64B9, + 3588: 0x64BB, + 3589: 0x64BD, + 3590: 0x64BE, + 3591: 0x64BF, + 3592: 0x64C1, + 3593: 0x64C3, + 3594: 0x64C4, + 3595: 0x64C6, + 3596: 0x64C7, + 3597: 0x64C8, + 3598: 0x64C9, + 3599: 0x64CA, + 3600: 0x64CB, + 3601: 0x64CC, + 3602: 0x64CF, + 3603: 0x64D1, + 3604: 0x64D3, + 3605: 0x64D4, + 3606: 0x64D5, + 3607: 0x64D6, + 3608: 0x64D9, + 3609: 0x64DA, + 3610: 0x64DB, + 3611: 0x64DC, + 3612: 0x64DD, + 3613: 0x64DF, + 3614: 0x64E0, + 3615: 0x64E1, + 3616: 0x64E3, + 3617: 0x64E5, + 3618: 0x64E7, + 3619: 0x64E8, + 3620: 0x64E9, + 3621: 0x64EA, + 3622: 0x64EB, + 3623: 0x64EC, + 3624: 0x64ED, + 3625: 0x64EE, + 3626: 0x64EF, + 3627: 0x64F0, + 3628: 0x64F1, + 3629: 0x64F2, + 3630: 0x64F3, + 3631: 0x64F4, + 3632: 0x64F5, + 3633: 0x64F6, + 3634: 0x64F7, + 3635: 0x64F8, + 3636: 0x64F9, + 3637: 0x64FA, + 3638: 0x64FB, + 3639: 0x64FC, + 3640: 0x64FD, + 3641: 0x64FE, + 3642: 0x64FF, + 3643: 0x6501, + 3644: 0x6502, + 3645: 0x6503, + 3646: 0x6504, + 3647: 0x6505, + 3648: 0x6506, + 3649: 0x6507, + 3650: 0x6508, + 3651: 0x650A, + 3652: 0x650B, + 3653: 0x650C, + 3654: 0x650D, + 3655: 0x650E, + 3656: 0x650F, + 3657: 0x6510, + 3658: 0x6511, + 3659: 0x6513, + 3660: 0x6514, + 3661: 0x6515, + 3662: 0x6516, + 3663: 0x6517, + 3664: 0x6519, + 3665: 0x651A, + 3666: 0x651B, + 3667: 0x651C, + 3668: 0x651D, + 3669: 0x651E, + 3670: 0x651F, + 3671: 0x6520, + 3672: 0x6521, + 3673: 0x6522, + 3674: 0x6523, + 3675: 0x6524, + 3676: 0x6526, + 3677: 0x6527, + 3678: 0x6528, + 3679: 0x6529, + 3680: 0x652A, + 3681: 0x652C, + 3682: 0x652D, + 3683: 0x6530, + 3684: 0x6531, + 3685: 0x6532, + 3686: 0x6533, + 3687: 0x6537, + 3688: 0x653A, + 3689: 0x653C, + 3690: 0x653D, + 3691: 0x6540, + 3692: 0x6541, + 3693: 0x6542, + 3694: 0x6543, + 3695: 0x6544, + 3696: 0x6546, + 3697: 0x6547, + 3698: 0x654A, + 3699: 0x654B, + 3700: 0x654D, + 3701: 0x654E, + 3702: 0x6550, + 3703: 0x6552, + 3704: 0x6553, + 3705: 0x6554, + 3706: 0x6557, + 3707: 0x6558, + 3708: 0x655A, + 3709: 0x655C, + 3710: 0x655F, + 3711: 0x6560, + 3712: 0x6561, + 3713: 0x6564, + 3714: 0x6565, + 3715: 0x6567, + 3716: 0x6568, + 3717: 0x6569, + 3718: 0x656A, + 3719: 0x656D, + 3720: 0x656E, + 3721: 0x656F, + 3722: 0x6571, + 3723: 0x6573, + 3724: 0x6575, + 3725: 0x6576, + 3726: 0x6578, + 3727: 0x6579, + 3728: 0x657A, + 3729: 0x657B, + 3730: 0x657C, + 3731: 0x657D, + 3732: 0x657E, + 3733: 0x657F, + 3734: 0x6580, + 3735: 0x6581, + 3736: 0x6582, + 3737: 0x6583, + 3738: 0x6584, + 3739: 0x6585, + 3740: 0x6586, + 3741: 0x6588, + 3742: 0x6589, + 3743: 0x658A, + 3744: 0x658D, + 3745: 0x658E, + 3746: 0x658F, + 3747: 0x6592, + 3748: 0x6594, + 3749: 0x6595, + 3750: 0x6596, + 3751: 0x6598, + 3752: 0x659A, + 3753: 0x659D, + 3754: 0x659E, + 3755: 0x65A0, + 3756: 0x65A2, + 3757: 0x65A3, + 3758: 0x65A6, + 3759: 0x65A8, + 3760: 0x65AA, + 3761: 0x65AC, + 3762: 0x65AE, + 3763: 0x65B1, + 3764: 0x65B2, + 3765: 0x65B3, + 3766: 0x65B4, + 3767: 0x65B5, + 3768: 0x65B6, + 3769: 0x65B7, + 3770: 0x65B8, + 3771: 0x65BA, + 3772: 0x65BB, + 3773: 0x65BE, + 3774: 0x65BF, + 3775: 0x65C0, + 3776: 0x65C2, + 3777: 0x65C7, + 3778: 0x65C8, + 3779: 0x65C9, + 3780: 0x65CA, + 3781: 0x65CD, + 3782: 0x65D0, + 3783: 0x65D1, + 3784: 0x65D3, + 3785: 0x65D4, + 3786: 0x65D5, + 3787: 0x65D8, + 3788: 0x65D9, + 3789: 0x65DA, + 3790: 0x65DB, + 3791: 0x65DC, + 3792: 0x65DD, + 3793: 0x65DE, + 3794: 0x65DF, + 3795: 0x65E1, + 3796: 0x65E3, + 3797: 0x65E4, + 3798: 0x65EA, + 3799: 0x65EB, + 3800: 0x65F2, + 3801: 0x65F3, + 3802: 0x65F4, + 3803: 0x65F5, + 3804: 0x65F8, + 3805: 0x65F9, + 3806: 0x65FB, + 3807: 0x65FC, + 3808: 0x65FD, + 3809: 0x65FE, + 3810: 0x65FF, + 3811: 0x6601, + 3812: 0x6604, + 3813: 0x6605, + 3814: 0x6607, + 3815: 0x6608, + 3816: 0x6609, + 3817: 0x660B, + 3818: 0x660D, + 3819: 0x6610, + 3820: 0x6611, + 3821: 0x6612, + 3822: 0x6616, + 3823: 0x6617, + 3824: 0x6618, + 3825: 0x661A, + 3826: 0x661B, + 3827: 0x661C, + 3828: 0x661E, + 3829: 0x6621, + 3830: 0x6622, + 3831: 0x6623, + 3832: 0x6624, + 3833: 0x6626, + 3834: 0x6629, + 3835: 0x662A, + 3836: 0x662B, + 3837: 0x662C, + 3838: 0x662E, + 3839: 0x6630, + 3840: 0x6632, + 3841: 0x6633, + 3842: 0x6637, + 3843: 0x6638, + 3844: 0x6639, + 3845: 0x663A, + 3846: 0x663B, + 3847: 0x663D, + 3848: 0x663F, + 3849: 0x6640, + 3850: 0x6642, + 3851: 0x6644, + 3852: 0x6645, + 3853: 0x6646, + 3854: 0x6647, + 3855: 0x6648, + 3856: 0x6649, + 3857: 0x664A, + 3858: 0x664D, + 3859: 0x664E, + 3860: 0x6650, + 3861: 0x6651, + 3862: 0x6658, + 3863: 0x6659, + 3864: 0x665B, + 3865: 0x665C, + 3866: 0x665D, + 3867: 0x665E, + 3868: 0x6660, + 3869: 0x6662, + 3870: 0x6663, + 3871: 0x6665, + 3872: 0x6667, + 3873: 0x6669, + 3874: 0x666A, + 3875: 0x666B, + 3876: 0x666C, + 3877: 0x666D, + 3878: 0x6671, + 3879: 0x6672, + 3880: 0x6673, + 3881: 0x6675, + 3882: 0x6678, + 3883: 0x6679, + 3884: 0x667B, + 3885: 0x667C, + 3886: 0x667D, + 3887: 0x667F, + 3888: 0x6680, + 3889: 0x6681, + 3890: 0x6683, + 3891: 0x6685, + 3892: 0x6686, + 3893: 0x6688, + 3894: 0x6689, + 3895: 0x668A, + 3896: 0x668B, + 3897: 0x668D, + 3898: 0x668E, + 3899: 0x668F, + 3900: 0x6690, + 3901: 0x6692, + 3902: 0x6693, + 3903: 0x6694, + 3904: 0x6695, + 3905: 0x6698, + 3906: 0x6699, + 3907: 0x669A, + 3908: 0x669B, + 3909: 0x669C, + 3910: 0x669E, + 3911: 0x669F, + 3912: 0x66A0, + 3913: 0x66A1, + 3914: 0x66A2, + 3915: 0x66A3, + 3916: 0x66A4, + 3917: 0x66A5, + 3918: 0x66A6, + 3919: 0x66A9, + 3920: 0x66AA, + 3921: 0x66AB, + 3922: 0x66AC, + 3923: 0x66AD, + 3924: 0x66AF, + 3925: 0x66B0, + 3926: 0x66B1, + 3927: 0x66B2, + 3928: 0x66B3, + 3929: 0x66B5, + 3930: 0x66B6, + 3931: 0x66B7, + 3932: 0x66B8, + 3933: 0x66BA, + 3934: 0x66BB, + 3935: 0x66BC, + 3936: 0x66BD, + 3937: 0x66BF, + 3938: 0x66C0, + 3939: 0x66C1, + 3940: 0x66C2, + 3941: 0x66C3, + 3942: 0x66C4, + 3943: 0x66C5, + 3944: 0x66C6, + 3945: 0x66C7, + 3946: 0x66C8, + 3947: 0x66C9, + 3948: 0x66CA, + 3949: 0x66CB, + 3950: 0x66CC, + 3951: 0x66CD, + 3952: 0x66CE, + 3953: 0x66CF, + 3954: 0x66D0, + 3955: 0x66D1, + 3956: 0x66D2, + 3957: 0x66D3, + 3958: 0x66D4, + 3959: 0x66D5, + 3960: 0x66D6, + 3961: 0x66D7, + 3962: 0x66D8, + 3963: 0x66DA, + 3964: 0x66DE, + 3965: 0x66DF, + 3966: 0x66E0, + 3967: 0x66E1, + 3968: 0x66E2, + 3969: 0x66E3, + 3970: 0x66E4, + 3971: 0x66E5, + 3972: 0x66E7, + 3973: 0x66E8, + 3974: 0x66EA, + 3975: 0x66EB, + 3976: 0x66EC, + 3977: 0x66ED, + 3978: 0x66EE, + 3979: 0x66EF, + 3980: 0x66F1, + 3981: 0x66F5, + 3982: 0x66F6, + 3983: 0x66F8, + 3984: 0x66FA, + 3985: 0x66FB, + 3986: 0x66FD, + 3987: 0x6701, + 3988: 0x6702, + 3989: 0x6703, + 3990: 0x6704, + 3991: 0x6705, + 3992: 0x6706, + 3993: 0x6707, + 3994: 0x670C, + 3995: 0x670E, + 3996: 0x670F, + 3997: 0x6711, + 3998: 0x6712, + 3999: 0x6713, + 4000: 0x6716, + 4001: 0x6718, + 4002: 0x6719, + 4003: 0x671A, + 4004: 0x671C, + 4005: 0x671E, + 4006: 0x6720, + 4007: 0x6721, + 4008: 0x6722, + 4009: 0x6723, + 4010: 0x6724, + 4011: 0x6725, + 4012: 0x6727, + 4013: 0x6729, + 4014: 0x672E, + 4015: 0x6730, + 4016: 0x6732, + 4017: 0x6733, + 4018: 0x6736, + 4019: 0x6737, + 4020: 0x6738, + 4021: 0x6739, + 4022: 0x673B, + 4023: 0x673C, + 4024: 0x673E, + 4025: 0x673F, + 4026: 0x6741, + 4027: 0x6744, + 4028: 0x6745, + 4029: 0x6747, + 4030: 0x674A, + 4031: 0x674B, + 4032: 0x674D, + 4033: 0x6752, + 4034: 0x6754, + 4035: 0x6755, + 4036: 0x6757, + 4037: 0x6758, + 4038: 0x6759, + 4039: 0x675A, + 4040: 0x675B, + 4041: 0x675D, + 4042: 0x6762, + 4043: 0x6763, + 4044: 0x6764, + 4045: 0x6766, + 4046: 0x6767, + 4047: 0x676B, + 4048: 0x676C, + 4049: 0x676E, + 4050: 0x6771, + 4051: 0x6774, + 4052: 0x6776, + 4053: 0x6778, + 4054: 0x6779, + 4055: 0x677A, + 4056: 0x677B, + 4057: 0x677D, + 4058: 0x6780, + 4059: 0x6782, + 4060: 0x6783, + 4061: 0x6785, + 4062: 0x6786, + 4063: 0x6788, + 4064: 0x678A, + 4065: 0x678C, + 4066: 0x678D, + 4067: 0x678E, + 4068: 0x678F, + 4069: 0x6791, + 4070: 0x6792, + 4071: 0x6793, + 4072: 0x6794, + 4073: 0x6796, + 4074: 0x6799, + 4075: 0x679B, + 4076: 0x679F, + 4077: 0x67A0, + 4078: 0x67A1, + 4079: 0x67A4, + 4080: 0x67A6, + 4081: 0x67A9, + 4082: 0x67AC, + 4083: 0x67AE, + 4084: 0x67B1, + 4085: 0x67B2, + 4086: 0x67B4, + 4087: 0x67B9, + 4088: 0x67BA, + 4089: 0x67BB, + 4090: 0x67BC, + 4091: 0x67BD, + 4092: 0x67BE, + 4093: 0x67BF, + 4094: 0x67C0, + 4095: 0x67C2, + 4096: 0x67C5, + 4097: 0x67C6, + 4098: 0x67C7, + 4099: 0x67C8, + 4100: 0x67C9, + 4101: 0x67CA, + 4102: 0x67CB, + 4103: 0x67CC, + 4104: 0x67CD, + 4105: 0x67CE, + 4106: 0x67D5, + 4107: 0x67D6, + 4108: 0x67D7, + 4109: 0x67DB, + 4110: 0x67DF, + 4111: 0x67E1, + 4112: 0x67E3, + 4113: 0x67E4, + 4114: 0x67E6, + 4115: 0x67E7, + 4116: 0x67E8, + 4117: 0x67EA, + 4118: 0x67EB, + 4119: 0x67ED, + 4120: 0x67EE, + 4121: 0x67F2, + 4122: 0x67F5, + 4123: 0x67F6, + 4124: 0x67F7, + 4125: 0x67F8, + 4126: 0x67F9, + 4127: 0x67FA, + 4128: 0x67FB, + 4129: 0x67FC, + 4130: 0x67FE, + 4131: 0x6801, + 4132: 0x6802, + 4133: 0x6803, + 4134: 0x6804, + 4135: 0x6806, + 4136: 0x680D, + 4137: 0x6810, + 4138: 0x6812, + 4139: 0x6814, + 4140: 0x6815, + 4141: 0x6818, + 4142: 0x6819, + 4143: 0x681A, + 4144: 0x681B, + 4145: 0x681C, + 4146: 0x681E, + 4147: 0x681F, + 4148: 0x6820, + 4149: 0x6822, + 4150: 0x6823, + 4151: 0x6824, + 4152: 0x6825, + 4153: 0x6826, + 4154: 0x6827, + 4155: 0x6828, + 4156: 0x682B, + 4157: 0x682C, + 4158: 0x682D, + 4159: 0x682E, + 4160: 0x682F, + 4161: 0x6830, + 4162: 0x6831, + 4163: 0x6834, + 4164: 0x6835, + 4165: 0x6836, + 4166: 0x683A, + 4167: 0x683B, + 4168: 0x683F, + 4169: 0x6847, + 4170: 0x684B, + 4171: 0x684D, + 4172: 0x684F, + 4173: 0x6852, + 4174: 0x6856, + 4175: 0x6857, + 4176: 0x6858, + 4177: 0x6859, + 4178: 0x685A, + 4179: 0x685B, + 4180: 0x685C, + 4181: 0x685D, + 4182: 0x685E, + 4183: 0x685F, + 4184: 0x686A, + 4185: 0x686C, + 4186: 0x686D, + 4187: 0x686E, + 4188: 0x686F, + 4189: 0x6870, + 4190: 0x6871, + 4191: 0x6872, + 4192: 0x6873, + 4193: 0x6875, + 4194: 0x6878, + 4195: 0x6879, + 4196: 0x687A, + 4197: 0x687B, + 4198: 0x687C, + 4199: 0x687D, + 4200: 0x687E, + 4201: 0x687F, + 4202: 0x6880, + 4203: 0x6882, + 4204: 0x6884, + 4205: 0x6887, + 4206: 0x6888, + 4207: 0x6889, + 4208: 0x688A, + 4209: 0x688B, + 4210: 0x688C, + 4211: 0x688D, + 4212: 0x688E, + 4213: 0x6890, + 4214: 0x6891, + 4215: 0x6892, + 4216: 0x6894, + 4217: 0x6895, + 4218: 0x6896, + 4219: 0x6898, + 4220: 0x6899, + 4221: 0x689A, + 4222: 0x689B, + 4223: 0x689C, + 4224: 0x689D, + 4225: 0x689E, + 4226: 0x689F, + 4227: 0x68A0, + 4228: 0x68A1, + 4229: 0x68A3, + 4230: 0x68A4, + 4231: 0x68A5, + 4232: 0x68A9, + 4233: 0x68AA, + 4234: 0x68AB, + 4235: 0x68AC, + 4236: 0x68AE, + 4237: 0x68B1, + 4238: 0x68B2, + 4239: 0x68B4, + 4240: 0x68B6, + 4241: 0x68B7, + 4242: 0x68B8, + 4243: 0x68B9, + 4244: 0x68BA, + 4245: 0x68BB, + 4246: 0x68BC, + 4247: 0x68BD, + 4248: 0x68BE, + 4249: 0x68BF, + 4250: 0x68C1, + 4251: 0x68C3, + 4252: 0x68C4, + 4253: 0x68C5, + 4254: 0x68C6, + 4255: 0x68C7, + 4256: 0x68C8, + 4257: 0x68CA, + 4258: 0x68CC, + 4259: 0x68CE, + 4260: 0x68CF, + 4261: 0x68D0, + 4262: 0x68D1, + 4263: 0x68D3, + 4264: 0x68D4, + 4265: 0x68D6, + 4266: 0x68D7, + 4267: 0x68D9, + 4268: 0x68DB, + 4269: 0x68DC, + 4270: 0x68DD, + 4271: 0x68DE, + 4272: 0x68DF, + 4273: 0x68E1, + 4274: 0x68E2, + 4275: 0x68E4, + 4276: 0x68E5, + 4277: 0x68E6, + 4278: 0x68E7, + 4279: 0x68E8, + 4280: 0x68E9, + 4281: 0x68EA, + 4282: 0x68EB, + 4283: 0x68EC, + 4284: 0x68ED, + 4285: 0x68EF, + 4286: 0x68F2, + 4287: 0x68F3, + 4288: 0x68F4, + 4289: 0x68F6, + 4290: 0x68F7, + 4291: 0x68F8, + 4292: 0x68FB, + 4293: 0x68FD, + 4294: 0x68FE, + 4295: 0x68FF, + 4296: 0x6900, + 4297: 0x6902, + 4298: 0x6903, + 4299: 0x6904, + 4300: 0x6906, + 4301: 0x6907, + 4302: 0x6908, + 4303: 0x6909, + 4304: 0x690A, + 4305: 0x690C, + 4306: 0x690F, + 4307: 0x6911, + 4308: 0x6913, + 4309: 0x6914, + 4310: 0x6915, + 4311: 0x6916, + 4312: 0x6917, + 4313: 0x6918, + 4314: 0x6919, + 4315: 0x691A, + 4316: 0x691B, + 4317: 0x691C, + 4318: 0x691D, + 4319: 0x691E, + 4320: 0x6921, + 4321: 0x6922, + 4322: 0x6923, + 4323: 0x6925, + 4324: 0x6926, + 4325: 0x6927, + 4326: 0x6928, + 4327: 0x6929, + 4328: 0x692A, + 4329: 0x692B, + 4330: 0x692C, + 4331: 0x692E, + 4332: 0x692F, + 4333: 0x6931, + 4334: 0x6932, + 4335: 0x6933, + 4336: 0x6935, + 4337: 0x6936, + 4338: 0x6937, + 4339: 0x6938, + 4340: 0x693A, + 4341: 0x693B, + 4342: 0x693C, + 4343: 0x693E, + 4344: 0x6940, + 4345: 0x6941, + 4346: 0x6943, + 4347: 0x6944, + 4348: 0x6945, + 4349: 0x6946, + 4350: 0x6947, + 4351: 0x6948, + 4352: 0x6949, + 4353: 0x694A, + 4354: 0x694B, + 4355: 0x694C, + 4356: 0x694D, + 4357: 0x694E, + 4358: 0x694F, + 4359: 0x6950, + 4360: 0x6951, + 4361: 0x6952, + 4362: 0x6953, + 4363: 0x6955, + 4364: 0x6956, + 4365: 0x6958, + 4366: 0x6959, + 4367: 0x695B, + 4368: 0x695C, + 4369: 0x695F, + 4370: 0x6961, + 4371: 0x6962, + 4372: 0x6964, + 4373: 0x6965, + 4374: 0x6967, + 4375: 0x6968, + 4376: 0x6969, + 4377: 0x696A, + 4378: 0x696C, + 4379: 0x696D, + 4380: 0x696F, + 4381: 0x6970, + 4382: 0x6972, + 4383: 0x6973, + 4384: 0x6974, + 4385: 0x6975, + 4386: 0x6976, + 4387: 0x697A, + 4388: 0x697B, + 4389: 0x697D, + 4390: 0x697E, + 4391: 0x697F, + 4392: 0x6981, + 4393: 0x6983, + 4394: 0x6985, + 4395: 0x698A, + 4396: 0x698B, + 4397: 0x698C, + 4398: 0x698E, + 4399: 0x698F, + 4400: 0x6990, + 4401: 0x6991, + 4402: 0x6992, + 4403: 0x6993, + 4404: 0x6996, + 4405: 0x6997, + 4406: 0x6999, + 4407: 0x699A, + 4408: 0x699D, + 4409: 0x699E, + 4410: 0x699F, + 4411: 0x69A0, + 4412: 0x69A1, + 4413: 0x69A2, + 4414: 0x69A3, + 4415: 0x69A4, + 4416: 0x69A5, + 4417: 0x69A6, + 4418: 0x69A9, + 4419: 0x69AA, + 4420: 0x69AC, + 4421: 0x69AE, + 4422: 0x69AF, + 4423: 0x69B0, + 4424: 0x69B2, + 4425: 0x69B3, + 4426: 0x69B5, + 4427: 0x69B6, + 4428: 0x69B8, + 4429: 0x69B9, + 4430: 0x69BA, + 4431: 0x69BC, + 4432: 0x69BD, + 4433: 0x69BE, + 4434: 0x69BF, + 4435: 0x69C0, + 4436: 0x69C2, + 4437: 0x69C3, + 4438: 0x69C4, + 4439: 0x69C5, + 4440: 0x69C6, + 4441: 0x69C7, + 4442: 0x69C8, + 4443: 0x69C9, + 4444: 0x69CB, + 4445: 0x69CD, + 4446: 0x69CF, + 4447: 0x69D1, + 4448: 0x69D2, + 4449: 0x69D3, + 4450: 0x69D5, + 4451: 0x69D6, + 4452: 0x69D7, + 4453: 0x69D8, + 4454: 0x69D9, + 4455: 0x69DA, + 4456: 0x69DC, + 4457: 0x69DD, + 4458: 0x69DE, + 4459: 0x69E1, + 4460: 0x69E2, + 4461: 0x69E3, + 4462: 0x69E4, + 4463: 0x69E5, + 4464: 0x69E6, + 4465: 0x69E7, + 4466: 0x69E8, + 4467: 0x69E9, + 4468: 0x69EA, + 4469: 0x69EB, + 4470: 0x69EC, + 4471: 0x69EE, + 4472: 0x69EF, + 4473: 0x69F0, + 4474: 0x69F1, + 4475: 0x69F3, + 4476: 0x69F4, + 4477: 0x69F5, + 4478: 0x69F6, + 4479: 0x69F7, + 4480: 0x69F8, + 4481: 0x69F9, + 4482: 0x69FA, + 4483: 0x69FB, + 4484: 0x69FC, + 4485: 0x69FE, + 4486: 0x6A00, + 4487: 0x6A01, + 4488: 0x6A02, + 4489: 0x6A03, + 4490: 0x6A04, + 4491: 0x6A05, + 4492: 0x6A06, + 4493: 0x6A07, + 4494: 0x6A08, + 4495: 0x6A09, + 4496: 0x6A0B, + 4497: 0x6A0C, + 4498: 0x6A0D, + 4499: 0x6A0E, + 4500: 0x6A0F, + 4501: 0x6A10, + 4502: 0x6A11, + 4503: 0x6A12, + 4504: 0x6A13, + 4505: 0x6A14, + 4506: 0x6A15, + 4507: 0x6A16, + 4508: 0x6A19, + 4509: 0x6A1A, + 4510: 0x6A1B, + 4511: 0x6A1C, + 4512: 0x6A1D, + 4513: 0x6A1E, + 4514: 0x6A20, + 4515: 0x6A22, + 4516: 0x6A23, + 4517: 0x6A24, + 4518: 0x6A25, + 4519: 0x6A26, + 4520: 0x6A27, + 4521: 0x6A29, + 4522: 0x6A2B, + 4523: 0x6A2C, + 4524: 0x6A2D, + 4525: 0x6A2E, + 4526: 0x6A30, + 4527: 0x6A32, + 4528: 0x6A33, + 4529: 0x6A34, + 4530: 0x6A36, + 4531: 0x6A37, + 4532: 0x6A38, + 4533: 0x6A39, + 4534: 0x6A3A, + 4535: 0x6A3B, + 4536: 0x6A3C, + 4537: 0x6A3F, + 4538: 0x6A40, + 4539: 0x6A41, + 4540: 0x6A42, + 4541: 0x6A43, + 4542: 0x6A45, + 4543: 0x6A46, + 4544: 0x6A48, + 4545: 0x6A49, + 4546: 0x6A4A, + 4547: 0x6A4B, + 4548: 0x6A4C, + 4549: 0x6A4D, + 4550: 0x6A4E, + 4551: 0x6A4F, + 4552: 0x6A51, + 4553: 0x6A52, + 4554: 0x6A53, + 4555: 0x6A54, + 4556: 0x6A55, + 4557: 0x6A56, + 4558: 0x6A57, + 4559: 0x6A5A, + 4560: 0x6A5C, + 4561: 0x6A5D, + 4562: 0x6A5E, + 4563: 0x6A5F, + 4564: 0x6A60, + 4565: 0x6A62, + 4566: 0x6A63, + 4567: 0x6A64, + 4568: 0x6A66, + 4569: 0x6A67, + 4570: 0x6A68, + 4571: 0x6A69, + 4572: 0x6A6A, + 4573: 0x6A6B, + 4574: 0x6A6C, + 4575: 0x6A6D, + 4576: 0x6A6E, + 4577: 0x6A6F, + 4578: 0x6A70, + 4579: 0x6A72, + 4580: 0x6A73, + 4581: 0x6A74, + 4582: 0x6A75, + 4583: 0x6A76, + 4584: 0x6A77, + 4585: 0x6A78, + 4586: 0x6A7A, + 4587: 0x6A7B, + 4588: 0x6A7D, + 4589: 0x6A7E, + 4590: 0x6A7F, + 4591: 0x6A81, + 4592: 0x6A82, + 4593: 0x6A83, + 4594: 0x6A85, + 4595: 0x6A86, + 4596: 0x6A87, + 4597: 0x6A88, + 4598: 0x6A89, + 4599: 0x6A8A, + 4600: 0x6A8B, + 4601: 0x6A8C, + 4602: 0x6A8D, + 4603: 0x6A8F, + 4604: 0x6A92, + 4605: 0x6A93, + 4606: 0x6A94, + 4607: 0x6A95, + 4608: 0x6A96, + 4609: 0x6A98, + 4610: 0x6A99, + 4611: 0x6A9A, + 4612: 0x6A9B, + 4613: 0x6A9C, + 4614: 0x6A9D, + 4615: 0x6A9E, + 4616: 0x6A9F, + 4617: 0x6AA1, + 4618: 0x6AA2, + 4619: 0x6AA3, + 4620: 0x6AA4, + 4621: 0x6AA5, + 4622: 0x6AA6, + 4623: 0x6AA7, + 4624: 0x6AA8, + 4625: 0x6AAA, + 4626: 0x6AAD, + 4627: 0x6AAE, + 4628: 0x6AAF, + 4629: 0x6AB0, + 4630: 0x6AB1, + 4631: 0x6AB2, + 4632: 0x6AB3, + 4633: 0x6AB4, + 4634: 0x6AB5, + 4635: 0x6AB6, + 4636: 0x6AB7, + 4637: 0x6AB8, + 4638: 0x6AB9, + 4639: 0x6ABA, + 4640: 0x6ABB, + 4641: 0x6ABC, + 4642: 0x6ABD, + 4643: 0x6ABE, + 4644: 0x6ABF, + 4645: 0x6AC0, + 4646: 0x6AC1, + 4647: 0x6AC2, + 4648: 0x6AC3, + 4649: 0x6AC4, + 4650: 0x6AC5, + 4651: 0x6AC6, + 4652: 0x6AC7, + 4653: 0x6AC8, + 4654: 0x6AC9, + 4655: 0x6ACA, + 4656: 0x6ACB, + 4657: 0x6ACC, + 4658: 0x6ACD, + 4659: 0x6ACE, + 4660: 0x6ACF, + 4661: 0x6AD0, + 4662: 0x6AD1, + 4663: 0x6AD2, + 4664: 0x6AD3, + 4665: 0x6AD4, + 4666: 0x6AD5, + 4667: 0x6AD6, + 4668: 0x6AD7, + 4669: 0x6AD8, + 4670: 0x6AD9, + 4671: 0x6ADA, + 4672: 0x6ADB, + 4673: 0x6ADC, + 4674: 0x6ADD, + 4675: 0x6ADE, + 4676: 0x6ADF, + 4677: 0x6AE0, + 4678: 0x6AE1, + 4679: 0x6AE2, + 4680: 0x6AE3, + 4681: 0x6AE4, + 4682: 0x6AE5, + 4683: 0x6AE6, + 4684: 0x6AE7, + 4685: 0x6AE8, + 4686: 0x6AE9, + 4687: 0x6AEA, + 4688: 0x6AEB, + 4689: 0x6AEC, + 4690: 0x6AED, + 4691: 0x6AEE, + 4692: 0x6AEF, + 4693: 0x6AF0, + 4694: 0x6AF1, + 4695: 0x6AF2, + 4696: 0x6AF3, + 4697: 0x6AF4, + 4698: 0x6AF5, + 4699: 0x6AF6, + 4700: 0x6AF7, + 4701: 0x6AF8, + 4702: 0x6AF9, + 4703: 0x6AFA, + 4704: 0x6AFB, + 4705: 0x6AFC, + 4706: 0x6AFD, + 4707: 0x6AFE, + 4708: 0x6AFF, + 4709: 0x6B00, + 4710: 0x6B01, + 4711: 0x6B02, + 4712: 0x6B03, + 4713: 0x6B04, + 4714: 0x6B05, + 4715: 0x6B06, + 4716: 0x6B07, + 4717: 0x6B08, + 4718: 0x6B09, + 4719: 0x6B0A, + 4720: 0x6B0B, + 4721: 0x6B0C, + 4722: 0x6B0D, + 4723: 0x6B0E, + 4724: 0x6B0F, + 4725: 0x6B10, + 4726: 0x6B11, + 4727: 0x6B12, + 4728: 0x6B13, + 4729: 0x6B14, + 4730: 0x6B15, + 4731: 0x6B16, + 4732: 0x6B17, + 4733: 0x6B18, + 4734: 0x6B19, + 4735: 0x6B1A, + 4736: 0x6B1B, + 4737: 0x6B1C, + 4738: 0x6B1D, + 4739: 0x6B1E, + 4740: 0x6B1F, + 4741: 0x6B25, + 4742: 0x6B26, + 4743: 0x6B28, + 4744: 0x6B29, + 4745: 0x6B2A, + 4746: 0x6B2B, + 4747: 0x6B2C, + 4748: 0x6B2D, + 4749: 0x6B2E, + 4750: 0x6B2F, + 4751: 0x6B30, + 4752: 0x6B31, + 4753: 0x6B33, + 4754: 0x6B34, + 4755: 0x6B35, + 4756: 0x6B36, + 4757: 0x6B38, + 4758: 0x6B3B, + 4759: 0x6B3C, + 4760: 0x6B3D, + 4761: 0x6B3F, + 4762: 0x6B40, + 4763: 0x6B41, + 4764: 0x6B42, + 4765: 0x6B44, + 4766: 0x6B45, + 4767: 0x6B48, + 4768: 0x6B4A, + 4769: 0x6B4B, + 4770: 0x6B4D, + 4771: 0x6B4E, + 4772: 0x6B4F, + 4773: 0x6B50, + 4774: 0x6B51, + 4775: 0x6B52, + 4776: 0x6B53, + 4777: 0x6B54, + 4778: 0x6B55, + 4779: 0x6B56, + 4780: 0x6B57, + 4781: 0x6B58, + 4782: 0x6B5A, + 4783: 0x6B5B, + 4784: 0x6B5C, + 4785: 0x6B5D, + 4786: 0x6B5E, + 4787: 0x6B5F, + 4788: 0x6B60, + 4789: 0x6B61, + 4790: 0x6B68, + 4791: 0x6B69, + 4792: 0x6B6B, + 4793: 0x6B6C, + 4794: 0x6B6D, + 4795: 0x6B6E, + 4796: 0x6B6F, + 4797: 0x6B70, + 4798: 0x6B71, + 4799: 0x6B72, + 4800: 0x6B73, + 4801: 0x6B74, + 4802: 0x6B75, + 4803: 0x6B76, + 4804: 0x6B77, + 4805: 0x6B78, + 4806: 0x6B7A, + 4807: 0x6B7D, + 4808: 0x6B7E, + 4809: 0x6B7F, + 4810: 0x6B80, + 4811: 0x6B85, + 4812: 0x6B88, + 4813: 0x6B8C, + 4814: 0x6B8E, + 4815: 0x6B8F, + 4816: 0x6B90, + 4817: 0x6B91, + 4818: 0x6B94, + 4819: 0x6B95, + 4820: 0x6B97, + 4821: 0x6B98, + 4822: 0x6B99, + 4823: 0x6B9C, + 4824: 0x6B9D, + 4825: 0x6B9E, + 4826: 0x6B9F, + 4827: 0x6BA0, + 4828: 0x6BA2, + 4829: 0x6BA3, + 4830: 0x6BA4, + 4831: 0x6BA5, + 4832: 0x6BA6, + 4833: 0x6BA7, + 4834: 0x6BA8, + 4835: 0x6BA9, + 4836: 0x6BAB, + 4837: 0x6BAC, + 4838: 0x6BAD, + 4839: 0x6BAE, + 4840: 0x6BAF, + 4841: 0x6BB0, + 4842: 0x6BB1, + 4843: 0x6BB2, + 4844: 0x6BB6, + 4845: 0x6BB8, + 4846: 0x6BB9, + 4847: 0x6BBA, + 4848: 0x6BBB, + 4849: 0x6BBC, + 4850: 0x6BBD, + 4851: 0x6BBE, + 4852: 0x6BC0, + 4853: 0x6BC3, + 4854: 0x6BC4, + 4855: 0x6BC6, + 4856: 0x6BC7, + 4857: 0x6BC8, + 4858: 0x6BC9, + 4859: 0x6BCA, + 4860: 0x6BCC, + 4861: 0x6BCE, + 4862: 0x6BD0, + 4863: 0x6BD1, + 4864: 0x6BD8, + 4865: 0x6BDA, + 4866: 0x6BDC, + 4867: 0x6BDD, + 4868: 0x6BDE, + 4869: 0x6BDF, + 4870: 0x6BE0, + 4871: 0x6BE2, + 4872: 0x6BE3, + 4873: 0x6BE4, + 4874: 0x6BE5, + 4875: 0x6BE6, + 4876: 0x6BE7, + 4877: 0x6BE8, + 4878: 0x6BE9, + 4879: 0x6BEC, + 4880: 0x6BED, + 4881: 0x6BEE, + 4882: 0x6BF0, + 4883: 0x6BF1, + 4884: 0x6BF2, + 4885: 0x6BF4, + 4886: 0x6BF6, + 4887: 0x6BF7, + 4888: 0x6BF8, + 4889: 0x6BFA, + 4890: 0x6BFB, + 4891: 0x6BFC, + 4892: 0x6BFE, + 4893: 0x6BFF, + 4894: 0x6C00, + 4895: 0x6C01, + 4896: 0x6C02, + 4897: 0x6C03, + 4898: 0x6C04, + 4899: 0x6C08, + 4900: 0x6C09, + 4901: 0x6C0A, + 4902: 0x6C0B, + 4903: 0x6C0C, + 4904: 0x6C0E, + 4905: 0x6C12, + 4906: 0x6C17, + 4907: 0x6C1C, + 4908: 0x6C1D, + 4909: 0x6C1E, + 4910: 0x6C20, + 4911: 0x6C23, + 4912: 0x6C25, + 4913: 0x6C2B, + 4914: 0x6C2C, + 4915: 0x6C2D, + 4916: 0x6C31, + 4917: 0x6C33, + 4918: 0x6C36, + 4919: 0x6C37, + 4920: 0x6C39, + 4921: 0x6C3A, + 4922: 0x6C3B, + 4923: 0x6C3C, + 4924: 0x6C3E, + 4925: 0x6C3F, + 4926: 0x6C43, + 4927: 0x6C44, + 4928: 0x6C45, + 4929: 0x6C48, + 4930: 0x6C4B, + 4931: 0x6C4C, + 4932: 0x6C4D, + 4933: 0x6C4E, + 4934: 0x6C4F, + 4935: 0x6C51, + 4936: 0x6C52, + 4937: 0x6C53, + 4938: 0x6C56, + 4939: 0x6C58, + 4940: 0x6C59, + 4941: 0x6C5A, + 4942: 0x6C62, + 4943: 0x6C63, + 4944: 0x6C65, + 4945: 0x6C66, + 4946: 0x6C67, + 4947: 0x6C6B, + 4948: 0x6C6C, + 4949: 0x6C6D, + 4950: 0x6C6E, + 4951: 0x6C6F, + 4952: 0x6C71, + 4953: 0x6C73, + 4954: 0x6C75, + 4955: 0x6C77, + 4956: 0x6C78, + 4957: 0x6C7A, + 4958: 0x6C7B, + 4959: 0x6C7C, + 4960: 0x6C7F, + 4961: 0x6C80, + 4962: 0x6C84, + 4963: 0x6C87, + 4964: 0x6C8A, + 4965: 0x6C8B, + 4966: 0x6C8D, + 4967: 0x6C8E, + 4968: 0x6C91, + 4969: 0x6C92, + 4970: 0x6C95, + 4971: 0x6C96, + 4972: 0x6C97, + 4973: 0x6C98, + 4974: 0x6C9A, + 4975: 0x6C9C, + 4976: 0x6C9D, + 4977: 0x6C9E, + 4978: 0x6CA0, + 4979: 0x6CA2, + 4980: 0x6CA8, + 4981: 0x6CAC, + 4982: 0x6CAF, + 4983: 0x6CB0, + 4984: 0x6CB4, + 4985: 0x6CB5, + 4986: 0x6CB6, + 4987: 0x6CB7, + 4988: 0x6CBA, + 4989: 0x6CC0, + 4990: 0x6CC1, + 4991: 0x6CC2, + 4992: 0x6CC3, + 4993: 0x6CC6, + 4994: 0x6CC7, + 4995: 0x6CC8, + 4996: 0x6CCB, + 4997: 0x6CCD, + 4998: 0x6CCE, + 4999: 0x6CCF, + 5000: 0x6CD1, + 5001: 0x6CD2, + 5002: 0x6CD8, + 5003: 0x6CD9, + 5004: 0x6CDA, + 5005: 0x6CDC, + 5006: 0x6CDD, + 5007: 0x6CDF, + 5008: 0x6CE4, + 5009: 0x6CE6, + 5010: 0x6CE7, + 5011: 0x6CE9, + 5012: 0x6CEC, + 5013: 0x6CED, + 5014: 0x6CF2, + 5015: 0x6CF4, + 5016: 0x6CF9, + 5017: 0x6CFF, + 5018: 0x6D00, + 5019: 0x6D02, + 5020: 0x6D03, + 5021: 0x6D05, + 5022: 0x6D06, + 5023: 0x6D08, + 5024: 0x6D09, + 5025: 0x6D0A, + 5026: 0x6D0D, + 5027: 0x6D0F, + 5028: 0x6D10, + 5029: 0x6D11, + 5030: 0x6D13, + 5031: 0x6D14, + 5032: 0x6D15, + 5033: 0x6D16, + 5034: 0x6D18, + 5035: 0x6D1C, + 5036: 0x6D1D, + 5037: 0x6D1F, + 5038: 0x6D20, + 5039: 0x6D21, + 5040: 0x6D22, + 5041: 0x6D23, + 5042: 0x6D24, + 5043: 0x6D26, + 5044: 0x6D28, + 5045: 0x6D29, + 5046: 0x6D2C, + 5047: 0x6D2D, + 5048: 0x6D2F, + 5049: 0x6D30, + 5050: 0x6D34, + 5051: 0x6D36, + 5052: 0x6D37, + 5053: 0x6D38, + 5054: 0x6D3A, + 5055: 0x6D3F, + 5056: 0x6D40, + 5057: 0x6D42, + 5058: 0x6D44, + 5059: 0x6D49, + 5060: 0x6D4C, + 5061: 0x6D50, + 5062: 0x6D55, + 5063: 0x6D56, + 5064: 0x6D57, + 5065: 0x6D58, + 5066: 0x6D5B, + 5067: 0x6D5D, + 5068: 0x6D5F, + 5069: 0x6D61, + 5070: 0x6D62, + 5071: 0x6D64, + 5072: 0x6D65, + 5073: 0x6D67, + 5074: 0x6D68, + 5075: 0x6D6B, + 5076: 0x6D6C, + 5077: 0x6D6D, + 5078: 0x6D70, + 5079: 0x6D71, + 5080: 0x6D72, + 5081: 0x6D73, + 5082: 0x6D75, + 5083: 0x6D76, + 5084: 0x6D79, + 5085: 0x6D7A, + 5086: 0x6D7B, + 5087: 0x6D7D, + 5088: 0x6D7E, + 5089: 0x6D7F, + 5090: 0x6D80, + 5091: 0x6D81, + 5092: 0x6D83, + 5093: 0x6D84, + 5094: 0x6D86, + 5095: 0x6D87, + 5096: 0x6D8A, + 5097: 0x6D8B, + 5098: 0x6D8D, + 5099: 0x6D8F, + 5100: 0x6D90, + 5101: 0x6D92, + 5102: 0x6D96, + 5103: 0x6D97, + 5104: 0x6D98, + 5105: 0x6D99, + 5106: 0x6D9A, + 5107: 0x6D9C, + 5108: 0x6DA2, + 5109: 0x6DA5, + 5110: 0x6DAC, + 5111: 0x6DAD, + 5112: 0x6DB0, + 5113: 0x6DB1, + 5114: 0x6DB3, + 5115: 0x6DB4, + 5116: 0x6DB6, + 5117: 0x6DB7, + 5118: 0x6DB9, + 5119: 0x6DBA, + 5120: 0x6DBB, + 5121: 0x6DBC, + 5122: 0x6DBD, + 5123: 0x6DBE, + 5124: 0x6DC1, + 5125: 0x6DC2, + 5126: 0x6DC3, + 5127: 0x6DC8, + 5128: 0x6DC9, + 5129: 0x6DCA, + 5130: 0x6DCD, + 5131: 0x6DCE, + 5132: 0x6DCF, + 5133: 0x6DD0, + 5134: 0x6DD2, + 5135: 0x6DD3, + 5136: 0x6DD4, + 5137: 0x6DD5, + 5138: 0x6DD7, + 5139: 0x6DDA, + 5140: 0x6DDB, + 5141: 0x6DDC, + 5142: 0x6DDF, + 5143: 0x6DE2, + 5144: 0x6DE3, + 5145: 0x6DE5, + 5146: 0x6DE7, + 5147: 0x6DE8, + 5148: 0x6DE9, + 5149: 0x6DEA, + 5150: 0x6DED, + 5151: 0x6DEF, + 5152: 0x6DF0, + 5153: 0x6DF2, + 5154: 0x6DF4, + 5155: 0x6DF5, + 5156: 0x6DF6, + 5157: 0x6DF8, + 5158: 0x6DFA, + 5159: 0x6DFD, + 5160: 0x6DFE, + 5161: 0x6DFF, + 5162: 0x6E00, + 5163: 0x6E01, + 5164: 0x6E02, + 5165: 0x6E03, + 5166: 0x6E04, + 5167: 0x6E06, + 5168: 0x6E07, + 5169: 0x6E08, + 5170: 0x6E09, + 5171: 0x6E0B, + 5172: 0x6E0F, + 5173: 0x6E12, + 5174: 0x6E13, + 5175: 0x6E15, + 5176: 0x6E18, + 5177: 0x6E19, + 5178: 0x6E1B, + 5179: 0x6E1C, + 5180: 0x6E1E, + 5181: 0x6E1F, + 5182: 0x6E22, + 5183: 0x6E26, + 5184: 0x6E27, + 5185: 0x6E28, + 5186: 0x6E2A, + 5187: 0x6E2C, + 5188: 0x6E2E, + 5189: 0x6E30, + 5190: 0x6E31, + 5191: 0x6E33, + 5192: 0x6E35, + 5193: 0x6E36, + 5194: 0x6E37, + 5195: 0x6E39, + 5196: 0x6E3B, + 5197: 0x6E3C, + 5198: 0x6E3D, + 5199: 0x6E3E, + 5200: 0x6E3F, + 5201: 0x6E40, + 5202: 0x6E41, + 5203: 0x6E42, + 5204: 0x6E45, + 5205: 0x6E46, + 5206: 0x6E47, + 5207: 0x6E48, + 5208: 0x6E49, + 5209: 0x6E4A, + 5210: 0x6E4B, + 5211: 0x6E4C, + 5212: 0x6E4F, + 5213: 0x6E50, + 5214: 0x6E51, + 5215: 0x6E52, + 5216: 0x6E55, + 5217: 0x6E57, + 5218: 0x6E59, + 5219: 0x6E5A, + 5220: 0x6E5C, + 5221: 0x6E5D, + 5222: 0x6E5E, + 5223: 0x6E60, + 5224: 0x6E61, + 5225: 0x6E62, + 5226: 0x6E63, + 5227: 0x6E64, + 5228: 0x6E65, + 5229: 0x6E66, + 5230: 0x6E67, + 5231: 0x6E68, + 5232: 0x6E69, + 5233: 0x6E6A, + 5234: 0x6E6C, + 5235: 0x6E6D, + 5236: 0x6E6F, + 5237: 0x6E70, + 5238: 0x6E71, + 5239: 0x6E72, + 5240: 0x6E73, + 5241: 0x6E74, + 5242: 0x6E75, + 5243: 0x6E76, + 5244: 0x6E77, + 5245: 0x6E78, + 5246: 0x6E79, + 5247: 0x6E7A, + 5248: 0x6E7B, + 5249: 0x6E7C, + 5250: 0x6E7D, + 5251: 0x6E80, + 5252: 0x6E81, + 5253: 0x6E82, + 5254: 0x6E84, + 5255: 0x6E87, + 5256: 0x6E88, + 5257: 0x6E8A, + 5258: 0x6E8B, + 5259: 0x6E8C, + 5260: 0x6E8D, + 5261: 0x6E8E, + 5262: 0x6E91, + 5263: 0x6E92, + 5264: 0x6E93, + 5265: 0x6E94, + 5266: 0x6E95, + 5267: 0x6E96, + 5268: 0x6E97, + 5269: 0x6E99, + 5270: 0x6E9A, + 5271: 0x6E9B, + 5272: 0x6E9D, + 5273: 0x6E9E, + 5274: 0x6EA0, + 5275: 0x6EA1, + 5276: 0x6EA3, + 5277: 0x6EA4, + 5278: 0x6EA6, + 5279: 0x6EA8, + 5280: 0x6EA9, + 5281: 0x6EAB, + 5282: 0x6EAC, + 5283: 0x6EAD, + 5284: 0x6EAE, + 5285: 0x6EB0, + 5286: 0x6EB3, + 5287: 0x6EB5, + 5288: 0x6EB8, + 5289: 0x6EB9, + 5290: 0x6EBC, + 5291: 0x6EBE, + 5292: 0x6EBF, + 5293: 0x6EC0, + 5294: 0x6EC3, + 5295: 0x6EC4, + 5296: 0x6EC5, + 5297: 0x6EC6, + 5298: 0x6EC8, + 5299: 0x6EC9, + 5300: 0x6ECA, + 5301: 0x6ECC, + 5302: 0x6ECD, + 5303: 0x6ECE, + 5304: 0x6ED0, + 5305: 0x6ED2, + 5306: 0x6ED6, + 5307: 0x6ED8, + 5308: 0x6ED9, + 5309: 0x6EDB, + 5310: 0x6EDC, + 5311: 0x6EDD, + 5312: 0x6EE3, + 5313: 0x6EE7, + 5314: 0x6EEA, + 5315: 0x6EEB, + 5316: 0x6EEC, + 5317: 0x6EED, + 5318: 0x6EEE, + 5319: 0x6EEF, + 5320: 0x6EF0, + 5321: 0x6EF1, + 5322: 0x6EF2, + 5323: 0x6EF3, + 5324: 0x6EF5, + 5325: 0x6EF6, + 5326: 0x6EF7, + 5327: 0x6EF8, + 5328: 0x6EFA, + 5329: 0x6EFB, + 5330: 0x6EFC, + 5331: 0x6EFD, + 5332: 0x6EFE, + 5333: 0x6EFF, + 5334: 0x6F00, + 5335: 0x6F01, + 5336: 0x6F03, + 5337: 0x6F04, + 5338: 0x6F05, + 5339: 0x6F07, + 5340: 0x6F08, + 5341: 0x6F0A, + 5342: 0x6F0B, + 5343: 0x6F0C, + 5344: 0x6F0D, + 5345: 0x6F0E, + 5346: 0x6F10, + 5347: 0x6F11, + 5348: 0x6F12, + 5349: 0x6F16, + 5350: 0x6F17, + 5351: 0x6F18, + 5352: 0x6F19, + 5353: 0x6F1A, + 5354: 0x6F1B, + 5355: 0x6F1C, + 5356: 0x6F1D, + 5357: 0x6F1E, + 5358: 0x6F1F, + 5359: 0x6F21, + 5360: 0x6F22, + 5361: 0x6F23, + 5362: 0x6F25, + 5363: 0x6F26, + 5364: 0x6F27, + 5365: 0x6F28, + 5366: 0x6F2C, + 5367: 0x6F2E, + 5368: 0x6F30, + 5369: 0x6F32, + 5370: 0x6F34, + 5371: 0x6F35, + 5372: 0x6F37, + 5373: 0x6F38, + 5374: 0x6F39, + 5375: 0x6F3A, + 5376: 0x6F3B, + 5377: 0x6F3C, + 5378: 0x6F3D, + 5379: 0x6F3F, + 5380: 0x6F40, + 5381: 0x6F41, + 5382: 0x6F42, + 5383: 0x6F43, + 5384: 0x6F44, + 5385: 0x6F45, + 5386: 0x6F48, + 5387: 0x6F49, + 5388: 0x6F4A, + 5389: 0x6F4C, + 5390: 0x6F4E, + 5391: 0x6F4F, + 5392: 0x6F50, + 5393: 0x6F51, + 5394: 0x6F52, + 5395: 0x6F53, + 5396: 0x6F54, + 5397: 0x6F55, + 5398: 0x6F56, + 5399: 0x6F57, + 5400: 0x6F59, + 5401: 0x6F5A, + 5402: 0x6F5B, + 5403: 0x6F5D, + 5404: 0x6F5F, + 5405: 0x6F60, + 5406: 0x6F61, + 5407: 0x6F63, + 5408: 0x6F64, + 5409: 0x6F65, + 5410: 0x6F67, + 5411: 0x6F68, + 5412: 0x6F69, + 5413: 0x6F6A, + 5414: 0x6F6B, + 5415: 0x6F6C, + 5416: 0x6F6F, + 5417: 0x6F70, + 5418: 0x6F71, + 5419: 0x6F73, + 5420: 0x6F75, + 5421: 0x6F76, + 5422: 0x6F77, + 5423: 0x6F79, + 5424: 0x6F7B, + 5425: 0x6F7D, + 5426: 0x6F7E, + 5427: 0x6F7F, + 5428: 0x6F80, + 5429: 0x6F81, + 5430: 0x6F82, + 5431: 0x6F83, + 5432: 0x6F85, + 5433: 0x6F86, + 5434: 0x6F87, + 5435: 0x6F8A, + 5436: 0x6F8B, + 5437: 0x6F8F, + 5438: 0x6F90, + 5439: 0x6F91, + 5440: 0x6F92, + 5441: 0x6F93, + 5442: 0x6F94, + 5443: 0x6F95, + 5444: 0x6F96, + 5445: 0x6F97, + 5446: 0x6F98, + 5447: 0x6F99, + 5448: 0x6F9A, + 5449: 0x6F9B, + 5450: 0x6F9D, + 5451: 0x6F9E, + 5452: 0x6F9F, + 5453: 0x6FA0, + 5454: 0x6FA2, + 5455: 0x6FA3, + 5456: 0x6FA4, + 5457: 0x6FA5, + 5458: 0x6FA6, + 5459: 0x6FA8, + 5460: 0x6FA9, + 5461: 0x6FAA, + 5462: 0x6FAB, + 5463: 0x6FAC, + 5464: 0x6FAD, + 5465: 0x6FAE, + 5466: 0x6FAF, + 5467: 0x6FB0, + 5468: 0x6FB1, + 5469: 0x6FB2, + 5470: 0x6FB4, + 5471: 0x6FB5, + 5472: 0x6FB7, + 5473: 0x6FB8, + 5474: 0x6FBA, + 5475: 0x6FBB, + 5476: 0x6FBC, + 5477: 0x6FBD, + 5478: 0x6FBE, + 5479: 0x6FBF, + 5480: 0x6FC1, + 5481: 0x6FC3, + 5482: 0x6FC4, + 5483: 0x6FC5, + 5484: 0x6FC6, + 5485: 0x6FC7, + 5486: 0x6FC8, + 5487: 0x6FCA, + 5488: 0x6FCB, + 5489: 0x6FCC, + 5490: 0x6FCD, + 5491: 0x6FCE, + 5492: 0x6FCF, + 5493: 0x6FD0, + 5494: 0x6FD3, + 5495: 0x6FD4, + 5496: 0x6FD5, + 5497: 0x6FD6, + 5498: 0x6FD7, + 5499: 0x6FD8, + 5500: 0x6FD9, + 5501: 0x6FDA, + 5502: 0x6FDB, + 5503: 0x6FDC, + 5504: 0x6FDD, + 5505: 0x6FDF, + 5506: 0x6FE2, + 5507: 0x6FE3, + 5508: 0x6FE4, + 5509: 0x6FE5, + 5510: 0x6FE6, + 5511: 0x6FE7, + 5512: 0x6FE8, + 5513: 0x6FE9, + 5514: 0x6FEA, + 5515: 0x6FEB, + 5516: 0x6FEC, + 5517: 0x6FED, + 5518: 0x6FF0, + 5519: 0x6FF1, + 5520: 0x6FF2, + 5521: 0x6FF3, + 5522: 0x6FF4, + 5523: 0x6FF5, + 5524: 0x6FF6, + 5525: 0x6FF7, + 5526: 0x6FF8, + 5527: 0x6FF9, + 5528: 0x6FFA, + 5529: 0x6FFB, + 5530: 0x6FFC, + 5531: 0x6FFD, + 5532: 0x6FFE, + 5533: 0x6FFF, + 5534: 0x7000, + 5535: 0x7001, + 5536: 0x7002, + 5537: 0x7003, + 5538: 0x7004, + 5539: 0x7005, + 5540: 0x7006, + 5541: 0x7007, + 5542: 0x7008, + 5543: 0x7009, + 5544: 0x700A, + 5545: 0x700B, + 5546: 0x700C, + 5547: 0x700D, + 5548: 0x700E, + 5549: 0x700F, + 5550: 0x7010, + 5551: 0x7012, + 5552: 0x7013, + 5553: 0x7014, + 5554: 0x7015, + 5555: 0x7016, + 5556: 0x7017, + 5557: 0x7018, + 5558: 0x7019, + 5559: 0x701C, + 5560: 0x701D, + 5561: 0x701E, + 5562: 0x701F, + 5563: 0x7020, + 5564: 0x7021, + 5565: 0x7022, + 5566: 0x7024, + 5567: 0x7025, + 5568: 0x7026, + 5569: 0x7027, + 5570: 0x7028, + 5571: 0x7029, + 5572: 0x702A, + 5573: 0x702B, + 5574: 0x702C, + 5575: 0x702D, + 5576: 0x702E, + 5577: 0x702F, + 5578: 0x7030, + 5579: 0x7031, + 5580: 0x7032, + 5581: 0x7033, + 5582: 0x7034, + 5583: 0x7036, + 5584: 0x7037, + 5585: 0x7038, + 5586: 0x703A, + 5587: 0x703B, + 5588: 0x703C, + 5589: 0x703D, + 5590: 0x703E, + 5591: 0x703F, + 5592: 0x7040, + 5593: 0x7041, + 5594: 0x7042, + 5595: 0x7043, + 5596: 0x7044, + 5597: 0x7045, + 5598: 0x7046, + 5599: 0x7047, + 5600: 0x7048, + 5601: 0x7049, + 5602: 0x704A, + 5603: 0x704B, + 5604: 0x704D, + 5605: 0x704E, + 5606: 0x7050, + 5607: 0x7051, + 5608: 0x7052, + 5609: 0x7053, + 5610: 0x7054, + 5611: 0x7055, + 5612: 0x7056, + 5613: 0x7057, + 5614: 0x7058, + 5615: 0x7059, + 5616: 0x705A, + 5617: 0x705B, + 5618: 0x705C, + 5619: 0x705D, + 5620: 0x705F, + 5621: 0x7060, + 5622: 0x7061, + 5623: 0x7062, + 5624: 0x7063, + 5625: 0x7064, + 5626: 0x7065, + 5627: 0x7066, + 5628: 0x7067, + 5629: 0x7068, + 5630: 0x7069, + 5631: 0x706A, + 5632: 0x706E, + 5633: 0x7071, + 5634: 0x7072, + 5635: 0x7073, + 5636: 0x7074, + 5637: 0x7077, + 5638: 0x7079, + 5639: 0x707A, + 5640: 0x707B, + 5641: 0x707D, + 5642: 0x7081, + 5643: 0x7082, + 5644: 0x7083, + 5645: 0x7084, + 5646: 0x7086, + 5647: 0x7087, + 5648: 0x7088, + 5649: 0x708B, + 5650: 0x708C, + 5651: 0x708D, + 5652: 0x708F, + 5653: 0x7090, + 5654: 0x7091, + 5655: 0x7093, + 5656: 0x7097, + 5657: 0x7098, + 5658: 0x709A, + 5659: 0x709B, + 5660: 0x709E, + 5661: 0x709F, + 5662: 0x70A0, + 5663: 0x70A1, + 5664: 0x70A2, + 5665: 0x70A3, + 5666: 0x70A4, + 5667: 0x70A5, + 5668: 0x70A6, + 5669: 0x70A7, + 5670: 0x70A8, + 5671: 0x70A9, + 5672: 0x70AA, + 5673: 0x70B0, + 5674: 0x70B2, + 5675: 0x70B4, + 5676: 0x70B5, + 5677: 0x70B6, + 5678: 0x70BA, + 5679: 0x70BE, + 5680: 0x70BF, + 5681: 0x70C4, + 5682: 0x70C5, + 5683: 0x70C6, + 5684: 0x70C7, + 5685: 0x70C9, + 5686: 0x70CB, + 5687: 0x70CC, + 5688: 0x70CD, + 5689: 0x70CE, + 5690: 0x70CF, + 5691: 0x70D0, + 5692: 0x70D1, + 5693: 0x70D2, + 5694: 0x70D3, + 5695: 0x70D4, + 5696: 0x70D5, + 5697: 0x70D6, + 5698: 0x70D7, + 5699: 0x70DA, + 5700: 0x70DC, + 5701: 0x70DD, + 5702: 0x70DE, + 5703: 0x70E0, + 5704: 0x70E1, + 5705: 0x70E2, + 5706: 0x70E3, + 5707: 0x70E5, + 5708: 0x70EA, + 5709: 0x70EE, + 5710: 0x70F0, + 5711: 0x70F1, + 5712: 0x70F2, + 5713: 0x70F3, + 5714: 0x70F4, + 5715: 0x70F5, + 5716: 0x70F6, + 5717: 0x70F8, + 5718: 0x70FA, + 5719: 0x70FB, + 5720: 0x70FC, + 5721: 0x70FE, + 5722: 0x70FF, + 5723: 0x7100, + 5724: 0x7101, + 5725: 0x7102, + 5726: 0x7103, + 5727: 0x7104, + 5728: 0x7105, + 5729: 0x7106, + 5730: 0x7107, + 5731: 0x7108, + 5732: 0x710B, + 5733: 0x710C, + 5734: 0x710D, + 5735: 0x710E, + 5736: 0x710F, + 5737: 0x7111, + 5738: 0x7112, + 5739: 0x7114, + 5740: 0x7117, + 5741: 0x711B, + 5742: 0x711C, + 5743: 0x711D, + 5744: 0x711E, + 5745: 0x711F, + 5746: 0x7120, + 5747: 0x7121, + 5748: 0x7122, + 5749: 0x7123, + 5750: 0x7124, + 5751: 0x7125, + 5752: 0x7127, + 5753: 0x7128, + 5754: 0x7129, + 5755: 0x712A, + 5756: 0x712B, + 5757: 0x712C, + 5758: 0x712D, + 5759: 0x712E, + 5760: 0x7132, + 5761: 0x7133, + 5762: 0x7134, + 5763: 0x7135, + 5764: 0x7137, + 5765: 0x7138, + 5766: 0x7139, + 5767: 0x713A, + 5768: 0x713B, + 5769: 0x713C, + 5770: 0x713D, + 5771: 0x713E, + 5772: 0x713F, + 5773: 0x7140, + 5774: 0x7141, + 5775: 0x7142, + 5776: 0x7143, + 5777: 0x7144, + 5778: 0x7146, + 5779: 0x7147, + 5780: 0x7148, + 5781: 0x7149, + 5782: 0x714B, + 5783: 0x714D, + 5784: 0x714F, + 5785: 0x7150, + 5786: 0x7151, + 5787: 0x7152, + 5788: 0x7153, + 5789: 0x7154, + 5790: 0x7155, + 5791: 0x7156, + 5792: 0x7157, + 5793: 0x7158, + 5794: 0x7159, + 5795: 0x715A, + 5796: 0x715B, + 5797: 0x715D, + 5798: 0x715F, + 5799: 0x7160, + 5800: 0x7161, + 5801: 0x7162, + 5802: 0x7163, + 5803: 0x7165, + 5804: 0x7169, + 5805: 0x716A, + 5806: 0x716B, + 5807: 0x716C, + 5808: 0x716D, + 5809: 0x716F, + 5810: 0x7170, + 5811: 0x7171, + 5812: 0x7174, + 5813: 0x7175, + 5814: 0x7176, + 5815: 0x7177, + 5816: 0x7179, + 5817: 0x717B, + 5818: 0x717C, + 5819: 0x717E, + 5820: 0x717F, + 5821: 0x7180, + 5822: 0x7181, + 5823: 0x7182, + 5824: 0x7183, + 5825: 0x7185, + 5826: 0x7186, + 5827: 0x7187, + 5828: 0x7188, + 5829: 0x7189, + 5830: 0x718B, + 5831: 0x718C, + 5832: 0x718D, + 5833: 0x718E, + 5834: 0x7190, + 5835: 0x7191, + 5836: 0x7192, + 5837: 0x7193, + 5838: 0x7195, + 5839: 0x7196, + 5840: 0x7197, + 5841: 0x719A, + 5842: 0x719B, + 5843: 0x719C, + 5844: 0x719D, + 5845: 0x719E, + 5846: 0x71A1, + 5847: 0x71A2, + 5848: 0x71A3, + 5849: 0x71A4, + 5850: 0x71A5, + 5851: 0x71A6, + 5852: 0x71A7, + 5853: 0x71A9, + 5854: 0x71AA, + 5855: 0x71AB, + 5856: 0x71AD, + 5857: 0x71AE, + 5858: 0x71AF, + 5859: 0x71B0, + 5860: 0x71B1, + 5861: 0x71B2, + 5862: 0x71B4, + 5863: 0x71B6, + 5864: 0x71B7, + 5865: 0x71B8, + 5866: 0x71BA, + 5867: 0x71BB, + 5868: 0x71BC, + 5869: 0x71BD, + 5870: 0x71BE, + 5871: 0x71BF, + 5872: 0x71C0, + 5873: 0x71C1, + 5874: 0x71C2, + 5875: 0x71C4, + 5876: 0x71C5, + 5877: 0x71C6, + 5878: 0x71C7, + 5879: 0x71C8, + 5880: 0x71C9, + 5881: 0x71CA, + 5882: 0x71CB, + 5883: 0x71CC, + 5884: 0x71CD, + 5885: 0x71CF, + 5886: 0x71D0, + 5887: 0x71D1, + 5888: 0x71D2, + 5889: 0x71D3, + 5890: 0x71D6, + 5891: 0x71D7, + 5892: 0x71D8, + 5893: 0x71D9, + 5894: 0x71DA, + 5895: 0x71DB, + 5896: 0x71DC, + 5897: 0x71DD, + 5898: 0x71DE, + 5899: 0x71DF, + 5900: 0x71E1, + 5901: 0x71E2, + 5902: 0x71E3, + 5903: 0x71E4, + 5904: 0x71E6, + 5905: 0x71E8, + 5906: 0x71E9, + 5907: 0x71EA, + 5908: 0x71EB, + 5909: 0x71EC, + 5910: 0x71ED, + 5911: 0x71EF, + 5912: 0x71F0, + 5913: 0x71F1, + 5914: 0x71F2, + 5915: 0x71F3, + 5916: 0x71F4, + 5917: 0x71F5, + 5918: 0x71F6, + 5919: 0x71F7, + 5920: 0x71F8, + 5921: 0x71FA, + 5922: 0x71FB, + 5923: 0x71FC, + 5924: 0x71FD, + 5925: 0x71FE, + 5926: 0x71FF, + 5927: 0x7200, + 5928: 0x7201, + 5929: 0x7202, + 5930: 0x7203, + 5931: 0x7204, + 5932: 0x7205, + 5933: 0x7207, + 5934: 0x7208, + 5935: 0x7209, + 5936: 0x720A, + 5937: 0x720B, + 5938: 0x720C, + 5939: 0x720D, + 5940: 0x720E, + 5941: 0x720F, + 5942: 0x7210, + 5943: 0x7211, + 5944: 0x7212, + 5945: 0x7213, + 5946: 0x7214, + 5947: 0x7215, + 5948: 0x7216, + 5949: 0x7217, + 5950: 0x7218, + 5951: 0x7219, + 5952: 0x721A, + 5953: 0x721B, + 5954: 0x721C, + 5955: 0x721E, + 5956: 0x721F, + 5957: 0x7220, + 5958: 0x7221, + 5959: 0x7222, + 5960: 0x7223, + 5961: 0x7224, + 5962: 0x7225, + 5963: 0x7226, + 5964: 0x7227, + 5965: 0x7229, + 5966: 0x722B, + 5967: 0x722D, + 5968: 0x722E, + 5969: 0x722F, + 5970: 0x7232, + 5971: 0x7233, + 5972: 0x7234, + 5973: 0x723A, + 5974: 0x723C, + 5975: 0x723E, + 5976: 0x7240, + 5977: 0x7241, + 5978: 0x7242, + 5979: 0x7243, + 5980: 0x7244, + 5981: 0x7245, + 5982: 0x7246, + 5983: 0x7249, + 5984: 0x724A, + 5985: 0x724B, + 5986: 0x724E, + 5987: 0x724F, + 5988: 0x7250, + 5989: 0x7251, + 5990: 0x7253, + 5991: 0x7254, + 5992: 0x7255, + 5993: 0x7257, + 5994: 0x7258, + 5995: 0x725A, + 5996: 0x725C, + 5997: 0x725E, + 5998: 0x7260, + 5999: 0x7263, + 6000: 0x7264, + 6001: 0x7265, + 6002: 0x7268, + 6003: 0x726A, + 6004: 0x726B, + 6005: 0x726C, + 6006: 0x726D, + 6007: 0x7270, + 6008: 0x7271, + 6009: 0x7273, + 6010: 0x7274, + 6011: 0x7276, + 6012: 0x7277, + 6013: 0x7278, + 6014: 0x727B, + 6015: 0x727C, + 6016: 0x727D, + 6017: 0x7282, + 6018: 0x7283, + 6019: 0x7285, + 6020: 0x7286, + 6021: 0x7287, + 6022: 0x7288, + 6023: 0x7289, + 6024: 0x728C, + 6025: 0x728E, + 6026: 0x7290, + 6027: 0x7291, + 6028: 0x7293, + 6029: 0x7294, + 6030: 0x7295, + 6031: 0x7296, + 6032: 0x7297, + 6033: 0x7298, + 6034: 0x7299, + 6035: 0x729A, + 6036: 0x729B, + 6037: 0x729C, + 6038: 0x729D, + 6039: 0x729E, + 6040: 0x72A0, + 6041: 0x72A1, + 6042: 0x72A2, + 6043: 0x72A3, + 6044: 0x72A4, + 6045: 0x72A5, + 6046: 0x72A6, + 6047: 0x72A7, + 6048: 0x72A8, + 6049: 0x72A9, + 6050: 0x72AA, + 6051: 0x72AB, + 6052: 0x72AE, + 6053: 0x72B1, + 6054: 0x72B2, + 6055: 0x72B3, + 6056: 0x72B5, + 6057: 0x72BA, + 6058: 0x72BB, + 6059: 0x72BC, + 6060: 0x72BD, + 6061: 0x72BE, + 6062: 0x72BF, + 6063: 0x72C0, + 6064: 0x72C5, + 6065: 0x72C6, + 6066: 0x72C7, + 6067: 0x72C9, + 6068: 0x72CA, + 6069: 0x72CB, + 6070: 0x72CC, + 6071: 0x72CF, + 6072: 0x72D1, + 6073: 0x72D3, + 6074: 0x72D4, + 6075: 0x72D5, + 6076: 0x72D6, + 6077: 0x72D8, + 6078: 0x72DA, + 6079: 0x72DB, + 6176: 0x3000, + 6177: 0x3001, + 6178: 0x3002, + 6179: 0x00B7, + 6180: 0x02C9, + 6181: 0x02C7, + 6182: 0x00A8, + 6183: 0x3003, + 6184: 0x3005, + 6185: 0x2014, + 6186: 0xFF5E, + 6187: 0x2016, + 6188: 0x2026, + 6189: 0x2018, + 6190: 0x2019, + 6191: 0x201C, + 6192: 0x201D, + 6193: 0x3014, + 6194: 0x3015, + 6195: 0x3008, + 6196: 0x3009, + 6197: 0x300A, + 6198: 0x300B, + 6199: 0x300C, + 6200: 0x300D, + 6201: 0x300E, + 6202: 0x300F, + 6203: 0x3016, + 6204: 0x3017, + 6205: 0x3010, + 6206: 0x3011, + 6207: 0x00B1, + 6208: 0x00D7, + 6209: 0x00F7, + 6210: 0x2236, + 6211: 0x2227, + 6212: 0x2228, + 6213: 0x2211, + 6214: 0x220F, + 6215: 0x222A, + 6216: 0x2229, + 6217: 0x2208, + 6218: 0x2237, + 6219: 0x221A, + 6220: 0x22A5, + 6221: 0x2225, + 6222: 0x2220, + 6223: 0x2312, + 6224: 0x2299, + 6225: 0x222B, + 6226: 0x222E, + 6227: 0x2261, + 6228: 0x224C, + 6229: 0x2248, + 6230: 0x223D, + 6231: 0x221D, + 6232: 0x2260, + 6233: 0x226E, + 6234: 0x226F, + 6235: 0x2264, + 6236: 0x2265, + 6237: 0x221E, + 6238: 0x2235, + 6239: 0x2234, + 6240: 0x2642, + 6241: 0x2640, + 6242: 0x00B0, + 6243: 0x2032, + 6244: 0x2033, + 6245: 0x2103, + 6246: 0xFF04, + 6247: 0x00A4, + 6248: 0xFFE0, + 6249: 0xFFE1, + 6250: 0x2030, + 6251: 0x00A7, + 6252: 0x2116, + 6253: 0x2606, + 6254: 0x2605, + 6255: 0x25CB, + 6256: 0x25CF, + 6257: 0x25CE, + 6258: 0x25C7, + 6259: 0x25C6, + 6260: 0x25A1, + 6261: 0x25A0, + 6262: 0x25B3, + 6263: 0x25B2, + 6264: 0x203B, + 6265: 0x2192, + 6266: 0x2190, + 6267: 0x2191, + 6268: 0x2193, + 6269: 0x3013, + 6366: 0x2170, + 6367: 0x2171, + 6368: 0x2172, + 6369: 0x2173, + 6370: 0x2174, + 6371: 0x2175, + 6372: 0x2176, + 6373: 0x2177, + 6374: 0x2178, + 6375: 0x2179, + 6382: 0x2488, + 6383: 0x2489, + 6384: 0x248A, + 6385: 0x248B, + 6386: 0x248C, + 6387: 0x248D, + 6388: 0x248E, + 6389: 0x248F, + 6390: 0x2490, + 6391: 0x2491, + 6392: 0x2492, + 6393: 0x2493, + 6394: 0x2494, + 6395: 0x2495, + 6396: 0x2496, + 6397: 0x2497, + 6398: 0x2498, + 6399: 0x2499, + 6400: 0x249A, + 6401: 0x249B, + 6402: 0x2474, + 6403: 0x2475, + 6404: 0x2476, + 6405: 0x2477, + 6406: 0x2478, + 6407: 0x2479, + 6408: 0x247A, + 6409: 0x247B, + 6410: 0x247C, + 6411: 0x247D, + 6412: 0x247E, + 6413: 0x247F, + 6414: 0x2480, + 6415: 0x2481, + 6416: 0x2482, + 6417: 0x2483, + 6418: 0x2484, + 6419: 0x2485, + 6420: 0x2486, + 6421: 0x2487, + 6422: 0x2460, + 6423: 0x2461, + 6424: 0x2462, + 6425: 0x2463, + 6426: 0x2464, + 6427: 0x2465, + 6428: 0x2466, + 6429: 0x2467, + 6430: 0x2468, + 6431: 0x2469, + 6432: 0x20AC, + 6434: 0x3220, + 6435: 0x3221, + 6436: 0x3222, + 6437: 0x3223, + 6438: 0x3224, + 6439: 0x3225, + 6440: 0x3226, + 6441: 0x3227, + 6442: 0x3228, + 6443: 0x3229, + 6446: 0x2160, + 6447: 0x2161, + 6448: 0x2162, + 6449: 0x2163, + 6450: 0x2164, + 6451: 0x2165, + 6452: 0x2166, + 6453: 0x2167, + 6454: 0x2168, + 6455: 0x2169, + 6456: 0x216A, + 6457: 0x216B, + 6555: 0x3000, + 6556: 0xFF01, + 6557: 0xFF02, + 6558: 0xFF03, + 6559: 0xFFE5, + 6560: 0xFF05, + 6561: 0xFF06, + 6562: 0xFF07, + 6563: 0xFF08, + 6564: 0xFF09, + 6565: 0xFF0A, + 6566: 0xFF0B, + 6567: 0xFF0C, + 6568: 0xFF0D, + 6569: 0xFF0E, + 6570: 0xFF0F, + 6571: 0xFF10, + 6572: 0xFF11, + 6573: 0xFF12, + 6574: 0xFF13, + 6575: 0xFF14, + 6576: 0xFF15, + 6577: 0xFF16, + 6578: 0xFF17, + 6579: 0xFF18, + 6580: 0xFF19, + 6581: 0xFF1A, + 6582: 0xFF1B, + 6583: 0xFF1C, + 6584: 0xFF1D, + 6585: 0xFF1E, + 6586: 0xFF1F, + 6587: 0xFF20, + 6588: 0xFF21, + 6589: 0xFF22, + 6590: 0xFF23, + 6591: 0xFF24, + 6592: 0xFF25, + 6593: 0xFF26, + 6594: 0xFF27, + 6595: 0xFF28, + 6596: 0xFF29, + 6597: 0xFF2A, + 6598: 0xFF2B, + 6599: 0xFF2C, + 6600: 0xFF2D, + 6601: 0xFF2E, + 6602: 0xFF2F, + 6603: 0xFF30, + 6604: 0xFF31, + 6605: 0xFF32, + 6606: 0xFF33, + 6607: 0xFF34, + 6608: 0xFF35, + 6609: 0xFF36, + 6610: 0xFF37, + 6611: 0xFF38, + 6612: 0xFF39, + 6613: 0xFF3A, + 6614: 0xFF3B, + 6615: 0xFF3C, + 6616: 0xFF3D, + 6617: 0xFF3E, + 6618: 0xFF3F, + 6619: 0xFF40, + 6620: 0xFF41, + 6621: 0xFF42, + 6622: 0xFF43, + 6623: 0xFF44, + 6624: 0xFF45, + 6625: 0xFF46, + 6626: 0xFF47, + 6627: 0xFF48, + 6628: 0xFF49, + 6629: 0xFF4A, + 6630: 0xFF4B, + 6631: 0xFF4C, + 6632: 0xFF4D, + 6633: 0xFF4E, + 6634: 0xFF4F, + 6635: 0xFF50, + 6636: 0xFF51, + 6637: 0xFF52, + 6638: 0xFF53, + 6639: 0xFF54, + 6640: 0xFF55, + 6641: 0xFF56, + 6642: 0xFF57, + 6643: 0xFF58, + 6644: 0xFF59, + 6645: 0xFF5A, + 6646: 0xFF5B, + 6647: 0xFF5C, + 6648: 0xFF5D, + 6649: 0xFFE3, + 6746: 0x3041, + 6747: 0x3042, + 6748: 0x3043, + 6749: 0x3044, + 6750: 0x3045, + 6751: 0x3046, + 6752: 0x3047, + 6753: 0x3048, + 6754: 0x3049, + 6755: 0x304A, + 6756: 0x304B, + 6757: 0x304C, + 6758: 0x304D, + 6759: 0x304E, + 6760: 0x304F, + 6761: 0x3050, + 6762: 0x3051, + 6763: 0x3052, + 6764: 0x3053, + 6765: 0x3054, + 6766: 0x3055, + 6767: 0x3056, + 6768: 0x3057, + 6769: 0x3058, + 6770: 0x3059, + 6771: 0x305A, + 6772: 0x305B, + 6773: 0x305C, + 6774: 0x305D, + 6775: 0x305E, + 6776: 0x305F, + 6777: 0x3060, + 6778: 0x3061, + 6779: 0x3062, + 6780: 0x3063, + 6781: 0x3064, + 6782: 0x3065, + 6783: 0x3066, + 6784: 0x3067, + 6785: 0x3068, + 6786: 0x3069, + 6787: 0x306A, + 6788: 0x306B, + 6789: 0x306C, + 6790: 0x306D, + 6791: 0x306E, + 6792: 0x306F, + 6793: 0x3070, + 6794: 0x3071, + 6795: 0x3072, + 6796: 0x3073, + 6797: 0x3074, + 6798: 0x3075, + 6799: 0x3076, + 6800: 0x3077, + 6801: 0x3078, + 6802: 0x3079, + 6803: 0x307A, + 6804: 0x307B, + 6805: 0x307C, + 6806: 0x307D, + 6807: 0x307E, + 6808: 0x307F, + 6809: 0x3080, + 6810: 0x3081, + 6811: 0x3082, + 6812: 0x3083, + 6813: 0x3084, + 6814: 0x3085, + 6815: 0x3086, + 6816: 0x3087, + 6817: 0x3088, + 6818: 0x3089, + 6819: 0x308A, + 6820: 0x308B, + 6821: 0x308C, + 6822: 0x308D, + 6823: 0x308E, + 6824: 0x308F, + 6825: 0x3090, + 6826: 0x3091, + 6827: 0x3092, + 6828: 0x3093, + 6936: 0x30A1, + 6937: 0x30A2, + 6938: 0x30A3, + 6939: 0x30A4, + 6940: 0x30A5, + 6941: 0x30A6, + 6942: 0x30A7, + 6943: 0x30A8, + 6944: 0x30A9, + 6945: 0x30AA, + 6946: 0x30AB, + 6947: 0x30AC, + 6948: 0x30AD, + 6949: 0x30AE, + 6950: 0x30AF, + 6951: 0x30B0, + 6952: 0x30B1, + 6953: 0x30B2, + 6954: 0x30B3, + 6955: 0x30B4, + 6956: 0x30B5, + 6957: 0x30B6, + 6958: 0x30B7, + 6959: 0x30B8, + 6960: 0x30B9, + 6961: 0x30BA, + 6962: 0x30BB, + 6963: 0x30BC, + 6964: 0x30BD, + 6965: 0x30BE, + 6966: 0x30BF, + 6967: 0x30C0, + 6968: 0x30C1, + 6969: 0x30C2, + 6970: 0x30C3, + 6971: 0x30C4, + 6972: 0x30C5, + 6973: 0x30C6, + 6974: 0x30C7, + 6975: 0x30C8, + 6976: 0x30C9, + 6977: 0x30CA, + 6978: 0x30CB, + 6979: 0x30CC, + 6980: 0x30CD, + 6981: 0x30CE, + 6982: 0x30CF, + 6983: 0x30D0, + 6984: 0x30D1, + 6985: 0x30D2, + 6986: 0x30D3, + 6987: 0x30D4, + 6988: 0x30D5, + 6989: 0x30D6, + 6990: 0x30D7, + 6991: 0x30D8, + 6992: 0x30D9, + 6993: 0x30DA, + 6994: 0x30DB, + 6995: 0x30DC, + 6996: 0x30DD, + 6997: 0x30DE, + 6998: 0x30DF, + 6999: 0x30E0, + 7000: 0x30E1, + 7001: 0x30E2, + 7002: 0x30E3, + 7003: 0x30E4, + 7004: 0x30E5, + 7005: 0x30E6, + 7006: 0x30E7, + 7007: 0x30E8, + 7008: 0x30E9, + 7009: 0x30EA, + 7010: 0x30EB, + 7011: 0x30EC, + 7012: 0x30ED, + 7013: 0x30EE, + 7014: 0x30EF, + 7015: 0x30F0, + 7016: 0x30F1, + 7017: 0x30F2, + 7018: 0x30F3, + 7019: 0x30F4, + 7020: 0x30F5, + 7021: 0x30F6, + 7126: 0x0391, + 7127: 0x0392, + 7128: 0x0393, + 7129: 0x0394, + 7130: 0x0395, + 7131: 0x0396, + 7132: 0x0397, + 7133: 0x0398, + 7134: 0x0399, + 7135: 0x039A, + 7136: 0x039B, + 7137: 0x039C, + 7138: 0x039D, + 7139: 0x039E, + 7140: 0x039F, + 7141: 0x03A0, + 7142: 0x03A1, + 7143: 0x03A3, + 7144: 0x03A4, + 7145: 0x03A5, + 7146: 0x03A6, + 7147: 0x03A7, + 7148: 0x03A8, + 7149: 0x03A9, + 7158: 0x03B1, + 7159: 0x03B2, + 7160: 0x03B3, + 7161: 0x03B4, + 7162: 0x03B5, + 7163: 0x03B6, + 7164: 0x03B7, + 7165: 0x03B8, + 7166: 0x03B9, + 7167: 0x03BA, + 7168: 0x03BB, + 7169: 0x03BC, + 7170: 0x03BD, + 7171: 0x03BE, + 7172: 0x03BF, + 7173: 0x03C0, + 7174: 0x03C1, + 7175: 0x03C3, + 7176: 0x03C4, + 7177: 0x03C5, + 7178: 0x03C6, + 7179: 0x03C7, + 7180: 0x03C8, + 7181: 0x03C9, + 7189: 0xFE35, + 7190: 0xFE36, + 7191: 0xFE39, + 7192: 0xFE3A, + 7193: 0xFE3F, + 7194: 0xFE40, + 7195: 0xFE3D, + 7196: 0xFE3E, + 7197: 0xFE41, + 7198: 0xFE42, + 7199: 0xFE43, + 7200: 0xFE44, + 7203: 0xFE3B, + 7204: 0xFE3C, + 7205: 0xFE37, + 7206: 0xFE38, + 7207: 0xFE31, + 7209: 0xFE33, + 7210: 0xFE34, + 7316: 0x0410, + 7317: 0x0411, + 7318: 0x0412, + 7319: 0x0413, + 7320: 0x0414, + 7321: 0x0415, + 7322: 0x0401, + 7323: 0x0416, + 7324: 0x0417, + 7325: 0x0418, + 7326: 0x0419, + 7327: 0x041A, + 7328: 0x041B, + 7329: 0x041C, + 7330: 0x041D, + 7331: 0x041E, + 7332: 0x041F, + 7333: 0x0420, + 7334: 0x0421, + 7335: 0x0422, + 7336: 0x0423, + 7337: 0x0424, + 7338: 0x0425, + 7339: 0x0426, + 7340: 0x0427, + 7341: 0x0428, + 7342: 0x0429, + 7343: 0x042A, + 7344: 0x042B, + 7345: 0x042C, + 7346: 0x042D, + 7347: 0x042E, + 7348: 0x042F, + 7364: 0x0430, + 7365: 0x0431, + 7366: 0x0432, + 7367: 0x0433, + 7368: 0x0434, + 7369: 0x0435, + 7370: 0x0451, + 7371: 0x0436, + 7372: 0x0437, + 7373: 0x0438, + 7374: 0x0439, + 7375: 0x043A, + 7376: 0x043B, + 7377: 0x043C, + 7378: 0x043D, + 7379: 0x043E, + 7380: 0x043F, + 7381: 0x0440, + 7382: 0x0441, + 7383: 0x0442, + 7384: 0x0443, + 7385: 0x0444, + 7386: 0x0445, + 7387: 0x0446, + 7388: 0x0447, + 7389: 0x0448, + 7390: 0x0449, + 7391: 0x044A, + 7392: 0x044B, + 7393: 0x044C, + 7394: 0x044D, + 7395: 0x044E, + 7396: 0x044F, + 7410: 0x02CA, + 7411: 0x02CB, + 7412: 0x02D9, + 7413: 0x2013, + 7414: 0x2015, + 7415: 0x2025, + 7416: 0x2035, + 7417: 0x2105, + 7418: 0x2109, + 7419: 0x2196, + 7420: 0x2197, + 7421: 0x2198, + 7422: 0x2199, + 7423: 0x2215, + 7424: 0x221F, + 7425: 0x2223, + 7426: 0x2252, + 7427: 0x2266, + 7428: 0x2267, + 7429: 0x22BF, + 7430: 0x2550, + 7431: 0x2551, + 7432: 0x2552, + 7433: 0x2553, + 7434: 0x2554, + 7435: 0x2555, + 7436: 0x2556, + 7437: 0x2557, + 7438: 0x2558, + 7439: 0x2559, + 7440: 0x255A, + 7441: 0x255B, + 7442: 0x255C, + 7443: 0x255D, + 7444: 0x255E, + 7445: 0x255F, + 7446: 0x2560, + 7447: 0x2561, + 7448: 0x2562, + 7449: 0x2563, + 7450: 0x2564, + 7451: 0x2565, + 7452: 0x2566, + 7453: 0x2567, + 7454: 0x2568, + 7455: 0x2569, + 7456: 0x256A, + 7457: 0x256B, + 7458: 0x256C, + 7459: 0x256D, + 7460: 0x256E, + 7461: 0x256F, + 7462: 0x2570, + 7463: 0x2571, + 7464: 0x2572, + 7465: 0x2573, + 7466: 0x2581, + 7467: 0x2582, + 7468: 0x2583, + 7469: 0x2584, + 7470: 0x2585, + 7471: 0x2586, + 7472: 0x2587, + 7473: 0x2588, + 7474: 0x2589, + 7475: 0x258A, + 7476: 0x258B, + 7477: 0x258C, + 7478: 0x258D, + 7479: 0x258E, + 7480: 0x258F, + 7481: 0x2593, + 7482: 0x2594, + 7483: 0x2595, + 7484: 0x25BC, + 7485: 0x25BD, + 7486: 0x25E2, + 7487: 0x25E3, + 7488: 0x25E4, + 7489: 0x25E5, + 7490: 0x2609, + 7491: 0x2295, + 7492: 0x3012, + 7493: 0x301D, + 7494: 0x301E, + 7506: 0x0101, + 7507: 0x00E1, + 7508: 0x01CE, + 7509: 0x00E0, + 7510: 0x0113, + 7511: 0x00E9, + 7512: 0x011B, + 7513: 0x00E8, + 7514: 0x012B, + 7515: 0x00ED, + 7516: 0x01D0, + 7517: 0x00EC, + 7518: 0x014D, + 7519: 0x00F3, + 7520: 0x01D2, + 7521: 0x00F2, + 7522: 0x016B, + 7523: 0x00FA, + 7524: 0x01D4, + 7525: 0x00F9, + 7526: 0x01D6, + 7527: 0x01D8, + 7528: 0x01DA, + 7529: 0x01DC, + 7530: 0x00FC, + 7531: 0x00EA, + 7532: 0x0251, + 7534: 0x0144, + 7535: 0x0148, + 7536: 0x01F9, + 7537: 0x0261, + 7542: 0x3105, + 7543: 0x3106, + 7544: 0x3107, + 7545: 0x3108, + 7546: 0x3109, + 7547: 0x310A, + 7548: 0x310B, + 7549: 0x310C, + 7550: 0x310D, + 7551: 0x310E, + 7552: 0x310F, + 7553: 0x3110, + 7554: 0x3111, + 7555: 0x3112, + 7556: 0x3113, + 7557: 0x3114, + 7558: 0x3115, + 7559: 0x3116, + 7560: 0x3117, + 7561: 0x3118, + 7562: 0x3119, + 7563: 0x311A, + 7564: 0x311B, + 7565: 0x311C, + 7566: 0x311D, + 7567: 0x311E, + 7568: 0x311F, + 7569: 0x3120, + 7570: 0x3121, + 7571: 0x3122, + 7572: 0x3123, + 7573: 0x3124, + 7574: 0x3125, + 7575: 0x3126, + 7576: 0x3127, + 7577: 0x3128, + 7578: 0x3129, + 7600: 0x3021, + 7601: 0x3022, + 7602: 0x3023, + 7603: 0x3024, + 7604: 0x3025, + 7605: 0x3026, + 7606: 0x3027, + 7607: 0x3028, + 7608: 0x3029, + 7609: 0x32A3, + 7610: 0x338E, + 7611: 0x338F, + 7612: 0x339C, + 7613: 0x339D, + 7614: 0x339E, + 7615: 0x33A1, + 7616: 0x33C4, + 7617: 0x33CE, + 7618: 0x33D1, + 7619: 0x33D2, + 7620: 0x33D5, + 7621: 0xFE30, + 7622: 0xFFE2, + 7623: 0xFFE4, + 7625: 0x2121, + 7626: 0x3231, + 7628: 0x2010, + 7632: 0x30FC, + 7633: 0x309B, + 7634: 0x309C, + 7635: 0x30FD, + 7636: 0x30FE, + 7637: 0x3006, + 7638: 0x309D, + 7639: 0x309E, + 7640: 0xFE49, + 7641: 0xFE4A, + 7642: 0xFE4B, + 7643: 0xFE4C, + 7644: 0xFE4D, + 7645: 0xFE4E, + 7646: 0xFE4F, + 7647: 0xFE50, + 7648: 0xFE51, + 7649: 0xFE52, + 7650: 0xFE54, + 7651: 0xFE55, + 7652: 0xFE56, + 7653: 0xFE57, + 7654: 0xFE59, + 7655: 0xFE5A, + 7656: 0xFE5B, + 7657: 0xFE5C, + 7658: 0xFE5D, + 7659: 0xFE5E, + 7660: 0xFE5F, + 7661: 0xFE60, + 7662: 0xFE61, + 7663: 0xFE62, + 7664: 0xFE63, + 7665: 0xFE64, + 7666: 0xFE65, + 7667: 0xFE66, + 7668: 0xFE68, + 7669: 0xFE69, + 7670: 0xFE6A, + 7671: 0xFE6B, + 7672: 0x303E, + 7673: 0x2FF0, + 7674: 0x2FF1, + 7675: 0x2FF2, + 7676: 0x2FF3, + 7677: 0x2FF4, + 7678: 0x2FF5, + 7679: 0x2FF6, + 7680: 0x2FF7, + 7681: 0x2FF8, + 7682: 0x2FF9, + 7683: 0x2FFA, + 7684: 0x2FFB, + 7685: 0x3007, + 7699: 0x2500, + 7700: 0x2501, + 7701: 0x2502, + 7702: 0x2503, + 7703: 0x2504, + 7704: 0x2505, + 7705: 0x2506, + 7706: 0x2507, + 7707: 0x2508, + 7708: 0x2509, + 7709: 0x250A, + 7710: 0x250B, + 7711: 0x250C, + 7712: 0x250D, + 7713: 0x250E, + 7714: 0x250F, + 7715: 0x2510, + 7716: 0x2511, + 7717: 0x2512, + 7718: 0x2513, + 7719: 0x2514, + 7720: 0x2515, + 7721: 0x2516, + 7722: 0x2517, + 7723: 0x2518, + 7724: 0x2519, + 7725: 0x251A, + 7726: 0x251B, + 7727: 0x251C, + 7728: 0x251D, + 7729: 0x251E, + 7730: 0x251F, + 7731: 0x2520, + 7732: 0x2521, + 7733: 0x2522, + 7734: 0x2523, + 7735: 0x2524, + 7736: 0x2525, + 7737: 0x2526, + 7738: 0x2527, + 7739: 0x2528, + 7740: 0x2529, + 7741: 0x252A, + 7742: 0x252B, + 7743: 0x252C, + 7744: 0x252D, + 7745: 0x252E, + 7746: 0x252F, + 7747: 0x2530, + 7748: 0x2531, + 7749: 0x2532, + 7750: 0x2533, + 7751: 0x2534, + 7752: 0x2535, + 7753: 0x2536, + 7754: 0x2537, + 7755: 0x2538, + 7756: 0x2539, + 7757: 0x253A, + 7758: 0x253B, + 7759: 0x253C, + 7760: 0x253D, + 7761: 0x253E, + 7762: 0x253F, + 7763: 0x2540, + 7764: 0x2541, + 7765: 0x2542, + 7766: 0x2543, + 7767: 0x2544, + 7768: 0x2545, + 7769: 0x2546, + 7770: 0x2547, + 7771: 0x2548, + 7772: 0x2549, + 7773: 0x254A, + 7774: 0x254B, + 7790: 0x72DC, + 7791: 0x72DD, + 7792: 0x72DF, + 7793: 0x72E2, + 7794: 0x72E3, + 7795: 0x72E4, + 7796: 0x72E5, + 7797: 0x72E6, + 7798: 0x72E7, + 7799: 0x72EA, + 7800: 0x72EB, + 7801: 0x72F5, + 7802: 0x72F6, + 7803: 0x72F9, + 7804: 0x72FD, + 7805: 0x72FE, + 7806: 0x72FF, + 7807: 0x7300, + 7808: 0x7302, + 7809: 0x7304, + 7810: 0x7305, + 7811: 0x7306, + 7812: 0x7307, + 7813: 0x7308, + 7814: 0x7309, + 7815: 0x730B, + 7816: 0x730C, + 7817: 0x730D, + 7818: 0x730F, + 7819: 0x7310, + 7820: 0x7311, + 7821: 0x7312, + 7822: 0x7314, + 7823: 0x7318, + 7824: 0x7319, + 7825: 0x731A, + 7826: 0x731F, + 7827: 0x7320, + 7828: 0x7323, + 7829: 0x7324, + 7830: 0x7326, + 7831: 0x7327, + 7832: 0x7328, + 7833: 0x732D, + 7834: 0x732F, + 7835: 0x7330, + 7836: 0x7332, + 7837: 0x7333, + 7838: 0x7335, + 7839: 0x7336, + 7840: 0x733A, + 7841: 0x733B, + 7842: 0x733C, + 7843: 0x733D, + 7844: 0x7340, + 7845: 0x7341, + 7846: 0x7342, + 7847: 0x7343, + 7848: 0x7344, + 7849: 0x7345, + 7850: 0x7346, + 7851: 0x7347, + 7852: 0x7348, + 7853: 0x7349, + 7854: 0x734A, + 7855: 0x734B, + 7856: 0x734C, + 7857: 0x734E, + 7858: 0x734F, + 7859: 0x7351, + 7860: 0x7353, + 7861: 0x7354, + 7862: 0x7355, + 7863: 0x7356, + 7864: 0x7358, + 7865: 0x7359, + 7866: 0x735A, + 7867: 0x735B, + 7868: 0x735C, + 7869: 0x735D, + 7870: 0x735E, + 7871: 0x735F, + 7872: 0x7361, + 7873: 0x7362, + 7874: 0x7363, + 7875: 0x7364, + 7876: 0x7365, + 7877: 0x7366, + 7878: 0x7367, + 7879: 0x7368, + 7880: 0x7369, + 7881: 0x736A, + 7882: 0x736B, + 7883: 0x736E, + 7884: 0x7370, + 7885: 0x7371, + 7980: 0x7372, + 7981: 0x7373, + 7982: 0x7374, + 7983: 0x7375, + 7984: 0x7376, + 7985: 0x7377, + 7986: 0x7378, + 7987: 0x7379, + 7988: 0x737A, + 7989: 0x737B, + 7990: 0x737C, + 7991: 0x737D, + 7992: 0x737F, + 7993: 0x7380, + 7994: 0x7381, + 7995: 0x7382, + 7996: 0x7383, + 7997: 0x7385, + 7998: 0x7386, + 7999: 0x7388, + 8000: 0x738A, + 8001: 0x738C, + 8002: 0x738D, + 8003: 0x738F, + 8004: 0x7390, + 8005: 0x7392, + 8006: 0x7393, + 8007: 0x7394, + 8008: 0x7395, + 8009: 0x7397, + 8010: 0x7398, + 8011: 0x7399, + 8012: 0x739A, + 8013: 0x739C, + 8014: 0x739D, + 8015: 0x739E, + 8016: 0x73A0, + 8017: 0x73A1, + 8018: 0x73A3, + 8019: 0x73A4, + 8020: 0x73A5, + 8021: 0x73A6, + 8022: 0x73A7, + 8023: 0x73A8, + 8024: 0x73AA, + 8025: 0x73AC, + 8026: 0x73AD, + 8027: 0x73B1, + 8028: 0x73B4, + 8029: 0x73B5, + 8030: 0x73B6, + 8031: 0x73B8, + 8032: 0x73B9, + 8033: 0x73BC, + 8034: 0x73BD, + 8035: 0x73BE, + 8036: 0x73BF, + 8037: 0x73C1, + 8038: 0x73C3, + 8039: 0x73C4, + 8040: 0x73C5, + 8041: 0x73C6, + 8042: 0x73C7, + 8043: 0x73CB, + 8044: 0x73CC, + 8045: 0x73CE, + 8046: 0x73D2, + 8047: 0x73D3, + 8048: 0x73D4, + 8049: 0x73D5, + 8050: 0x73D6, + 8051: 0x73D7, + 8052: 0x73D8, + 8053: 0x73DA, + 8054: 0x73DB, + 8055: 0x73DC, + 8056: 0x73DD, + 8057: 0x73DF, + 8058: 0x73E1, + 8059: 0x73E2, + 8060: 0x73E3, + 8061: 0x73E4, + 8062: 0x73E6, + 8063: 0x73E8, + 8064: 0x73EA, + 8065: 0x73EB, + 8066: 0x73EC, + 8067: 0x73EE, + 8068: 0x73EF, + 8069: 0x73F0, + 8070: 0x73F1, + 8071: 0x73F3, + 8072: 0x73F4, + 8073: 0x73F5, + 8074: 0x73F6, + 8075: 0x73F7, + 8170: 0x73F8, + 8171: 0x73F9, + 8172: 0x73FA, + 8173: 0x73FB, + 8174: 0x73FC, + 8175: 0x73FD, + 8176: 0x73FE, + 8177: 0x73FF, + 8178: 0x7400, + 8179: 0x7401, + 8180: 0x7402, + 8181: 0x7404, + 8182: 0x7407, + 8183: 0x7408, + 8184: 0x740B, + 8185: 0x740C, + 8186: 0x740D, + 8187: 0x740E, + 8188: 0x7411, + 8189: 0x7412, + 8190: 0x7413, + 8191: 0x7414, + 8192: 0x7415, + 8193: 0x7416, + 8194: 0x7417, + 8195: 0x7418, + 8196: 0x7419, + 8197: 0x741C, + 8198: 0x741D, + 8199: 0x741E, + 8200: 0x741F, + 8201: 0x7420, + 8202: 0x7421, + 8203: 0x7423, + 8204: 0x7424, + 8205: 0x7427, + 8206: 0x7429, + 8207: 0x742B, + 8208: 0x742D, + 8209: 0x742F, + 8210: 0x7431, + 8211: 0x7432, + 8212: 0x7437, + 8213: 0x7438, + 8214: 0x7439, + 8215: 0x743A, + 8216: 0x743B, + 8217: 0x743D, + 8218: 0x743E, + 8219: 0x743F, + 8220: 0x7440, + 8221: 0x7442, + 8222: 0x7443, + 8223: 0x7444, + 8224: 0x7445, + 8225: 0x7446, + 8226: 0x7447, + 8227: 0x7448, + 8228: 0x7449, + 8229: 0x744A, + 8230: 0x744B, + 8231: 0x744C, + 8232: 0x744D, + 8233: 0x744E, + 8234: 0x744F, + 8235: 0x7450, + 8236: 0x7451, + 8237: 0x7452, + 8238: 0x7453, + 8239: 0x7454, + 8240: 0x7456, + 8241: 0x7458, + 8242: 0x745D, + 8243: 0x7460, + 8244: 0x7461, + 8245: 0x7462, + 8246: 0x7463, + 8247: 0x7464, + 8248: 0x7465, + 8249: 0x7466, + 8250: 0x7467, + 8251: 0x7468, + 8252: 0x7469, + 8253: 0x746A, + 8254: 0x746B, + 8255: 0x746C, + 8256: 0x746E, + 8257: 0x746F, + 8258: 0x7471, + 8259: 0x7472, + 8260: 0x7473, + 8261: 0x7474, + 8262: 0x7475, + 8263: 0x7478, + 8264: 0x7479, + 8265: 0x747A, + 8360: 0x747B, + 8361: 0x747C, + 8362: 0x747D, + 8363: 0x747F, + 8364: 0x7482, + 8365: 0x7484, + 8366: 0x7485, + 8367: 0x7486, + 8368: 0x7488, + 8369: 0x7489, + 8370: 0x748A, + 8371: 0x748C, + 8372: 0x748D, + 8373: 0x748F, + 8374: 0x7491, + 8375: 0x7492, + 8376: 0x7493, + 8377: 0x7494, + 8378: 0x7495, + 8379: 0x7496, + 8380: 0x7497, + 8381: 0x7498, + 8382: 0x7499, + 8383: 0x749A, + 8384: 0x749B, + 8385: 0x749D, + 8386: 0x749F, + 8387: 0x74A0, + 8388: 0x74A1, + 8389: 0x74A2, + 8390: 0x74A3, + 8391: 0x74A4, + 8392: 0x74A5, + 8393: 0x74A6, + 8394: 0x74AA, + 8395: 0x74AB, + 8396: 0x74AC, + 8397: 0x74AD, + 8398: 0x74AE, + 8399: 0x74AF, + 8400: 0x74B0, + 8401: 0x74B1, + 8402: 0x74B2, + 8403: 0x74B3, + 8404: 0x74B4, + 8405: 0x74B5, + 8406: 0x74B6, + 8407: 0x74B7, + 8408: 0x74B8, + 8409: 0x74B9, + 8410: 0x74BB, + 8411: 0x74BC, + 8412: 0x74BD, + 8413: 0x74BE, + 8414: 0x74BF, + 8415: 0x74C0, + 8416: 0x74C1, + 8417: 0x74C2, + 8418: 0x74C3, + 8419: 0x74C4, + 8420: 0x74C5, + 8421: 0x74C6, + 8422: 0x74C7, + 8423: 0x74C8, + 8424: 0x74C9, + 8425: 0x74CA, + 8426: 0x74CB, + 8427: 0x74CC, + 8428: 0x74CD, + 8429: 0x74CE, + 8430: 0x74CF, + 8431: 0x74D0, + 8432: 0x74D1, + 8433: 0x74D3, + 8434: 0x74D4, + 8435: 0x74D5, + 8436: 0x74D6, + 8437: 0x74D7, + 8438: 0x74D8, + 8439: 0x74D9, + 8440: 0x74DA, + 8441: 0x74DB, + 8442: 0x74DD, + 8443: 0x74DF, + 8444: 0x74E1, + 8445: 0x74E5, + 8446: 0x74E7, + 8447: 0x74E8, + 8448: 0x74E9, + 8449: 0x74EA, + 8450: 0x74EB, + 8451: 0x74EC, + 8452: 0x74ED, + 8453: 0x74F0, + 8454: 0x74F1, + 8455: 0x74F2, + 8550: 0x74F3, + 8551: 0x74F5, + 8552: 0x74F8, + 8553: 0x74F9, + 8554: 0x74FA, + 8555: 0x74FB, + 8556: 0x74FC, + 8557: 0x74FD, + 8558: 0x74FE, + 8559: 0x7500, + 8560: 0x7501, + 8561: 0x7502, + 8562: 0x7503, + 8563: 0x7505, + 8564: 0x7506, + 8565: 0x7507, + 8566: 0x7508, + 8567: 0x7509, + 8568: 0x750A, + 8569: 0x750B, + 8570: 0x750C, + 8571: 0x750E, + 8572: 0x7510, + 8573: 0x7512, + 8574: 0x7514, + 8575: 0x7515, + 8576: 0x7516, + 8577: 0x7517, + 8578: 0x751B, + 8579: 0x751D, + 8580: 0x751E, + 8581: 0x7520, + 8582: 0x7521, + 8583: 0x7522, + 8584: 0x7523, + 8585: 0x7524, + 8586: 0x7526, + 8587: 0x7527, + 8588: 0x752A, + 8589: 0x752E, + 8590: 0x7534, + 8591: 0x7536, + 8592: 0x7539, + 8593: 0x753C, + 8594: 0x753D, + 8595: 0x753F, + 8596: 0x7541, + 8597: 0x7542, + 8598: 0x7543, + 8599: 0x7544, + 8600: 0x7546, + 8601: 0x7547, + 8602: 0x7549, + 8603: 0x754A, + 8604: 0x754D, + 8605: 0x7550, + 8606: 0x7551, + 8607: 0x7552, + 8608: 0x7553, + 8609: 0x7555, + 8610: 0x7556, + 8611: 0x7557, + 8612: 0x7558, + 8613: 0x755D, + 8614: 0x755E, + 8615: 0x755F, + 8616: 0x7560, + 8617: 0x7561, + 8618: 0x7562, + 8619: 0x7563, + 8620: 0x7564, + 8621: 0x7567, + 8622: 0x7568, + 8623: 0x7569, + 8624: 0x756B, + 8625: 0x756C, + 8626: 0x756D, + 8627: 0x756E, + 8628: 0x756F, + 8629: 0x7570, + 8630: 0x7571, + 8631: 0x7573, + 8632: 0x7575, + 8633: 0x7576, + 8634: 0x7577, + 8635: 0x757A, + 8636: 0x757B, + 8637: 0x757C, + 8638: 0x757D, + 8639: 0x757E, + 8640: 0x7580, + 8641: 0x7581, + 8642: 0x7582, + 8643: 0x7584, + 8644: 0x7585, + 8645: 0x7587, + 8740: 0x7588, + 8741: 0x7589, + 8742: 0x758A, + 8743: 0x758C, + 8744: 0x758D, + 8745: 0x758E, + 8746: 0x7590, + 8747: 0x7593, + 8748: 0x7595, + 8749: 0x7598, + 8750: 0x759B, + 8751: 0x759C, + 8752: 0x759E, + 8753: 0x75A2, + 8754: 0x75A6, + 8755: 0x75A7, + 8756: 0x75A8, + 8757: 0x75A9, + 8758: 0x75AA, + 8759: 0x75AD, + 8760: 0x75B6, + 8761: 0x75B7, + 8762: 0x75BA, + 8763: 0x75BB, + 8764: 0x75BF, + 8765: 0x75C0, + 8766: 0x75C1, + 8767: 0x75C6, + 8768: 0x75CB, + 8769: 0x75CC, + 8770: 0x75CE, + 8771: 0x75CF, + 8772: 0x75D0, + 8773: 0x75D1, + 8774: 0x75D3, + 8775: 0x75D7, + 8776: 0x75D9, + 8777: 0x75DA, + 8778: 0x75DC, + 8779: 0x75DD, + 8780: 0x75DF, + 8781: 0x75E0, + 8782: 0x75E1, + 8783: 0x75E5, + 8784: 0x75E9, + 8785: 0x75EC, + 8786: 0x75ED, + 8787: 0x75EE, + 8788: 0x75EF, + 8789: 0x75F2, + 8790: 0x75F3, + 8791: 0x75F5, + 8792: 0x75F6, + 8793: 0x75F7, + 8794: 0x75F8, + 8795: 0x75FA, + 8796: 0x75FB, + 8797: 0x75FD, + 8798: 0x75FE, + 8799: 0x7602, + 8800: 0x7604, + 8801: 0x7606, + 8802: 0x7607, + 8803: 0x7608, + 8804: 0x7609, + 8805: 0x760B, + 8806: 0x760D, + 8807: 0x760E, + 8808: 0x760F, + 8809: 0x7611, + 8810: 0x7612, + 8811: 0x7613, + 8812: 0x7614, + 8813: 0x7616, + 8814: 0x761A, + 8815: 0x761C, + 8816: 0x761D, + 8817: 0x761E, + 8818: 0x7621, + 8819: 0x7623, + 8820: 0x7627, + 8821: 0x7628, + 8822: 0x762C, + 8823: 0x762E, + 8824: 0x762F, + 8825: 0x7631, + 8826: 0x7632, + 8827: 0x7636, + 8828: 0x7637, + 8829: 0x7639, + 8830: 0x763A, + 8831: 0x763B, + 8832: 0x763D, + 8833: 0x7641, + 8834: 0x7642, + 8835: 0x7644, + 8930: 0x7645, + 8931: 0x7646, + 8932: 0x7647, + 8933: 0x7648, + 8934: 0x7649, + 8935: 0x764A, + 8936: 0x764B, + 8937: 0x764E, + 8938: 0x764F, + 8939: 0x7650, + 8940: 0x7651, + 8941: 0x7652, + 8942: 0x7653, + 8943: 0x7655, + 8944: 0x7657, + 8945: 0x7658, + 8946: 0x7659, + 8947: 0x765A, + 8948: 0x765B, + 8949: 0x765D, + 8950: 0x765F, + 8951: 0x7660, + 8952: 0x7661, + 8953: 0x7662, + 8954: 0x7664, + 8955: 0x7665, + 8956: 0x7666, + 8957: 0x7667, + 8958: 0x7668, + 8959: 0x7669, + 8960: 0x766A, + 8961: 0x766C, + 8962: 0x766D, + 8963: 0x766E, + 8964: 0x7670, + 8965: 0x7671, + 8966: 0x7672, + 8967: 0x7673, + 8968: 0x7674, + 8969: 0x7675, + 8970: 0x7676, + 8971: 0x7677, + 8972: 0x7679, + 8973: 0x767A, + 8974: 0x767C, + 8975: 0x767F, + 8976: 0x7680, + 8977: 0x7681, + 8978: 0x7683, + 8979: 0x7685, + 8980: 0x7689, + 8981: 0x768A, + 8982: 0x768C, + 8983: 0x768D, + 8984: 0x768F, + 8985: 0x7690, + 8986: 0x7692, + 8987: 0x7694, + 8988: 0x7695, + 8989: 0x7697, + 8990: 0x7698, + 8991: 0x769A, + 8992: 0x769B, + 8993: 0x769C, + 8994: 0x769D, + 8995: 0x769E, + 8996: 0x769F, + 8997: 0x76A0, + 8998: 0x76A1, + 8999: 0x76A2, + 9000: 0x76A3, + 9001: 0x76A5, + 9002: 0x76A6, + 9003: 0x76A7, + 9004: 0x76A8, + 9005: 0x76A9, + 9006: 0x76AA, + 9007: 0x76AB, + 9008: 0x76AC, + 9009: 0x76AD, + 9010: 0x76AF, + 9011: 0x76B0, + 9012: 0x76B3, + 9013: 0x76B5, + 9014: 0x76B6, + 9015: 0x76B7, + 9016: 0x76B8, + 9017: 0x76B9, + 9018: 0x76BA, + 9019: 0x76BB, + 9020: 0x76BC, + 9021: 0x76BD, + 9022: 0x76BE, + 9023: 0x76C0, + 9024: 0x76C1, + 9025: 0x76C3, + 9026: 0x554A, + 9027: 0x963F, + 9028: 0x57C3, + 9029: 0x6328, + 9030: 0x54CE, + 9031: 0x5509, + 9032: 0x54C0, + 9033: 0x7691, + 9034: 0x764C, + 9035: 0x853C, + 9036: 0x77EE, + 9037: 0x827E, + 9038: 0x788D, + 9039: 0x7231, + 9040: 0x9698, + 9041: 0x978D, + 9042: 0x6C28, + 9043: 0x5B89, + 9044: 0x4FFA, + 9045: 0x6309, + 9046: 0x6697, + 9047: 0x5CB8, + 9048: 0x80FA, + 9049: 0x6848, + 9050: 0x80AE, + 9051: 0x6602, + 9052: 0x76CE, + 9053: 0x51F9, + 9054: 0x6556, + 9055: 0x71AC, + 9056: 0x7FF1, + 9057: 0x8884, + 9058: 0x50B2, + 9059: 0x5965, + 9060: 0x61CA, + 9061: 0x6FB3, + 9062: 0x82AD, + 9063: 0x634C, + 9064: 0x6252, + 9065: 0x53ED, + 9066: 0x5427, + 9067: 0x7B06, + 9068: 0x516B, + 9069: 0x75A4, + 9070: 0x5DF4, + 9071: 0x62D4, + 9072: 0x8DCB, + 9073: 0x9776, + 9074: 0x628A, + 9075: 0x8019, + 9076: 0x575D, + 9077: 0x9738, + 9078: 0x7F62, + 9079: 0x7238, + 9080: 0x767D, + 9081: 0x67CF, + 9082: 0x767E, + 9083: 0x6446, + 9084: 0x4F70, + 9085: 0x8D25, + 9086: 0x62DC, + 9087: 0x7A17, + 9088: 0x6591, + 9089: 0x73ED, + 9090: 0x642C, + 9091: 0x6273, + 9092: 0x822C, + 9093: 0x9881, + 9094: 0x677F, + 9095: 0x7248, + 9096: 0x626E, + 9097: 0x62CC, + 9098: 0x4F34, + 9099: 0x74E3, + 9100: 0x534A, + 9101: 0x529E, + 9102: 0x7ECA, + 9103: 0x90A6, + 9104: 0x5E2E, + 9105: 0x6886, + 9106: 0x699C, + 9107: 0x8180, + 9108: 0x7ED1, + 9109: 0x68D2, + 9110: 0x78C5, + 9111: 0x868C, + 9112: 0x9551, + 9113: 0x508D, + 9114: 0x8C24, + 9115: 0x82DE, + 9116: 0x80DE, + 9117: 0x5305, + 9118: 0x8912, + 9119: 0x5265, + 9120: 0x76C4, + 9121: 0x76C7, + 9122: 0x76C9, + 9123: 0x76CB, + 9124: 0x76CC, + 9125: 0x76D3, + 9126: 0x76D5, + 9127: 0x76D9, + 9128: 0x76DA, + 9129: 0x76DC, + 9130: 0x76DD, + 9131: 0x76DE, + 9132: 0x76E0, + 9133: 0x76E1, + 9134: 0x76E2, + 9135: 0x76E3, + 9136: 0x76E4, + 9137: 0x76E6, + 9138: 0x76E7, + 9139: 0x76E8, + 9140: 0x76E9, + 9141: 0x76EA, + 9142: 0x76EB, + 9143: 0x76EC, + 9144: 0x76ED, + 9145: 0x76F0, + 9146: 0x76F3, + 9147: 0x76F5, + 9148: 0x76F6, + 9149: 0x76F7, + 9150: 0x76FA, + 9151: 0x76FB, + 9152: 0x76FD, + 9153: 0x76FF, + 9154: 0x7700, + 9155: 0x7702, + 9156: 0x7703, + 9157: 0x7705, + 9158: 0x7706, + 9159: 0x770A, + 9160: 0x770C, + 9161: 0x770E, + 9162: 0x770F, + 9163: 0x7710, + 9164: 0x7711, + 9165: 0x7712, + 9166: 0x7713, + 9167: 0x7714, + 9168: 0x7715, + 9169: 0x7716, + 9170: 0x7717, + 9171: 0x7718, + 9172: 0x771B, + 9173: 0x771C, + 9174: 0x771D, + 9175: 0x771E, + 9176: 0x7721, + 9177: 0x7723, + 9178: 0x7724, + 9179: 0x7725, + 9180: 0x7727, + 9181: 0x772A, + 9182: 0x772B, + 9183: 0x772C, + 9184: 0x772E, + 9185: 0x7730, + 9186: 0x7731, + 9187: 0x7732, + 9188: 0x7733, + 9189: 0x7734, + 9190: 0x7739, + 9191: 0x773B, + 9192: 0x773D, + 9193: 0x773E, + 9194: 0x773F, + 9195: 0x7742, + 9196: 0x7744, + 9197: 0x7745, + 9198: 0x7746, + 9199: 0x7748, + 9200: 0x7749, + 9201: 0x774A, + 9202: 0x774B, + 9203: 0x774C, + 9204: 0x774D, + 9205: 0x774E, + 9206: 0x774F, + 9207: 0x7752, + 9208: 0x7753, + 9209: 0x7754, + 9210: 0x7755, + 9211: 0x7756, + 9212: 0x7757, + 9213: 0x7758, + 9214: 0x7759, + 9215: 0x775C, + 9216: 0x8584, + 9217: 0x96F9, + 9218: 0x4FDD, + 9219: 0x5821, + 9220: 0x9971, + 9221: 0x5B9D, + 9222: 0x62B1, + 9223: 0x62A5, + 9224: 0x66B4, + 9225: 0x8C79, + 9226: 0x9C8D, + 9227: 0x7206, + 9228: 0x676F, + 9229: 0x7891, + 9230: 0x60B2, + 9231: 0x5351, + 9232: 0x5317, + 9233: 0x8F88, + 9234: 0x80CC, + 9235: 0x8D1D, + 9236: 0x94A1, + 9237: 0x500D, + 9238: 0x72C8, + 9239: 0x5907, + 9240: 0x60EB, + 9241: 0x7119, + 9242: 0x88AB, + 9243: 0x5954, + 9244: 0x82EF, + 9245: 0x672C, + 9246: 0x7B28, + 9247: 0x5D29, + 9248: 0x7EF7, + 9249: 0x752D, + 9250: 0x6CF5, + 9251: 0x8E66, + 9252: 0x8FF8, + 9253: 0x903C, + 9254: 0x9F3B, + 9255: 0x6BD4, + 9256: 0x9119, + 9257: 0x7B14, + 9258: 0x5F7C, + 9259: 0x78A7, + 9260: 0x84D6, + 9261: 0x853D, + 9262: 0x6BD5, + 9263: 0x6BD9, + 9264: 0x6BD6, + 9265: 0x5E01, + 9266: 0x5E87, + 9267: 0x75F9, + 9268: 0x95ED, + 9269: 0x655D, + 9270: 0x5F0A, + 9271: 0x5FC5, + 9272: 0x8F9F, + 9273: 0x58C1, + 9274: 0x81C2, + 9275: 0x907F, + 9276: 0x965B, + 9277: 0x97AD, + 9278: 0x8FB9, + 9279: 0x7F16, + 9280: 0x8D2C, + 9281: 0x6241, + 9282: 0x4FBF, + 9283: 0x53D8, + 9284: 0x535E, + 9285: 0x8FA8, + 9286: 0x8FA9, + 9287: 0x8FAB, + 9288: 0x904D, + 9289: 0x6807, + 9290: 0x5F6A, + 9291: 0x8198, + 9292: 0x8868, + 9293: 0x9CD6, + 9294: 0x618B, + 9295: 0x522B, + 9296: 0x762A, + 9297: 0x5F6C, + 9298: 0x658C, + 9299: 0x6FD2, + 9300: 0x6EE8, + 9301: 0x5BBE, + 9302: 0x6448, + 9303: 0x5175, + 9304: 0x51B0, + 9305: 0x67C4, + 9306: 0x4E19, + 9307: 0x79C9, + 9308: 0x997C, + 9309: 0x70B3, + 9310: 0x775D, + 9311: 0x775E, + 9312: 0x775F, + 9313: 0x7760, + 9314: 0x7764, + 9315: 0x7767, + 9316: 0x7769, + 9317: 0x776A, + 9318: 0x776D, + 9319: 0x776E, + 9320: 0x776F, + 9321: 0x7770, + 9322: 0x7771, + 9323: 0x7772, + 9324: 0x7773, + 9325: 0x7774, + 9326: 0x7775, + 9327: 0x7776, + 9328: 0x7777, + 9329: 0x7778, + 9330: 0x777A, + 9331: 0x777B, + 9332: 0x777C, + 9333: 0x7781, + 9334: 0x7782, + 9335: 0x7783, + 9336: 0x7786, + 9337: 0x7787, + 9338: 0x7788, + 9339: 0x7789, + 9340: 0x778A, + 9341: 0x778B, + 9342: 0x778F, + 9343: 0x7790, + 9344: 0x7793, + 9345: 0x7794, + 9346: 0x7795, + 9347: 0x7796, + 9348: 0x7797, + 9349: 0x7798, + 9350: 0x7799, + 9351: 0x779A, + 9352: 0x779B, + 9353: 0x779C, + 9354: 0x779D, + 9355: 0x779E, + 9356: 0x77A1, + 9357: 0x77A3, + 9358: 0x77A4, + 9359: 0x77A6, + 9360: 0x77A8, + 9361: 0x77AB, + 9362: 0x77AD, + 9363: 0x77AE, + 9364: 0x77AF, + 9365: 0x77B1, + 9366: 0x77B2, + 9367: 0x77B4, + 9368: 0x77B6, + 9369: 0x77B7, + 9370: 0x77B8, + 9371: 0x77B9, + 9372: 0x77BA, + 9373: 0x77BC, + 9374: 0x77BE, + 9375: 0x77C0, + 9376: 0x77C1, + 9377: 0x77C2, + 9378: 0x77C3, + 9379: 0x77C4, + 9380: 0x77C5, + 9381: 0x77C6, + 9382: 0x77C7, + 9383: 0x77C8, + 9384: 0x77C9, + 9385: 0x77CA, + 9386: 0x77CB, + 9387: 0x77CC, + 9388: 0x77CE, + 9389: 0x77CF, + 9390: 0x77D0, + 9391: 0x77D1, + 9392: 0x77D2, + 9393: 0x77D3, + 9394: 0x77D4, + 9395: 0x77D5, + 9396: 0x77D6, + 9397: 0x77D8, + 9398: 0x77D9, + 9399: 0x77DA, + 9400: 0x77DD, + 9401: 0x77DE, + 9402: 0x77DF, + 9403: 0x77E0, + 9404: 0x77E1, + 9405: 0x77E4, + 9406: 0x75C5, + 9407: 0x5E76, + 9408: 0x73BB, + 9409: 0x83E0, + 9410: 0x64AD, + 9411: 0x62E8, + 9412: 0x94B5, + 9413: 0x6CE2, + 9414: 0x535A, + 9415: 0x52C3, + 9416: 0x640F, + 9417: 0x94C2, + 9418: 0x7B94, + 9419: 0x4F2F, + 9420: 0x5E1B, + 9421: 0x8236, + 9422: 0x8116, + 9423: 0x818A, + 9424: 0x6E24, + 9425: 0x6CCA, + 9426: 0x9A73, + 9427: 0x6355, + 9428: 0x535C, + 9429: 0x54FA, + 9430: 0x8865, + 9431: 0x57E0, + 9432: 0x4E0D, + 9433: 0x5E03, + 9434: 0x6B65, + 9435: 0x7C3F, + 9436: 0x90E8, + 9437: 0x6016, + 9438: 0x64E6, + 9439: 0x731C, + 9440: 0x88C1, + 9441: 0x6750, + 9442: 0x624D, + 9443: 0x8D22, + 9444: 0x776C, + 9445: 0x8E29, + 9446: 0x91C7, + 9447: 0x5F69, + 9448: 0x83DC, + 9449: 0x8521, + 9450: 0x9910, + 9451: 0x53C2, + 9452: 0x8695, + 9453: 0x6B8B, + 9454: 0x60ED, + 9455: 0x60E8, + 9456: 0x707F, + 9457: 0x82CD, + 9458: 0x8231, + 9459: 0x4ED3, + 9460: 0x6CA7, + 9461: 0x85CF, + 9462: 0x64CD, + 9463: 0x7CD9, + 9464: 0x69FD, + 9465: 0x66F9, + 9466: 0x8349, + 9467: 0x5395, + 9468: 0x7B56, + 9469: 0x4FA7, + 9470: 0x518C, + 9471: 0x6D4B, + 9472: 0x5C42, + 9473: 0x8E6D, + 9474: 0x63D2, + 9475: 0x53C9, + 9476: 0x832C, + 9477: 0x8336, + 9478: 0x67E5, + 9479: 0x78B4, + 9480: 0x643D, + 9481: 0x5BDF, + 9482: 0x5C94, + 9483: 0x5DEE, + 9484: 0x8BE7, + 9485: 0x62C6, + 9486: 0x67F4, + 9487: 0x8C7A, + 9488: 0x6400, + 9489: 0x63BA, + 9490: 0x8749, + 9491: 0x998B, + 9492: 0x8C17, + 9493: 0x7F20, + 9494: 0x94F2, + 9495: 0x4EA7, + 9496: 0x9610, + 9497: 0x98A4, + 9498: 0x660C, + 9499: 0x7316, + 9500: 0x77E6, + 9501: 0x77E8, + 9502: 0x77EA, + 9503: 0x77EF, + 9504: 0x77F0, + 9505: 0x77F1, + 9506: 0x77F2, + 9507: 0x77F4, + 9508: 0x77F5, + 9509: 0x77F7, + 9510: 0x77F9, + 9511: 0x77FA, + 9512: 0x77FB, + 9513: 0x77FC, + 9514: 0x7803, + 9515: 0x7804, + 9516: 0x7805, + 9517: 0x7806, + 9518: 0x7807, + 9519: 0x7808, + 9520: 0x780A, + 9521: 0x780B, + 9522: 0x780E, + 9523: 0x780F, + 9524: 0x7810, + 9525: 0x7813, + 9526: 0x7815, + 9527: 0x7819, + 9528: 0x781B, + 9529: 0x781E, + 9530: 0x7820, + 9531: 0x7821, + 9532: 0x7822, + 9533: 0x7824, + 9534: 0x7828, + 9535: 0x782A, + 9536: 0x782B, + 9537: 0x782E, + 9538: 0x782F, + 9539: 0x7831, + 9540: 0x7832, + 9541: 0x7833, + 9542: 0x7835, + 9543: 0x7836, + 9544: 0x783D, + 9545: 0x783F, + 9546: 0x7841, + 9547: 0x7842, + 9548: 0x7843, + 9549: 0x7844, + 9550: 0x7846, + 9551: 0x7848, + 9552: 0x7849, + 9553: 0x784A, + 9554: 0x784B, + 9555: 0x784D, + 9556: 0x784F, + 9557: 0x7851, + 9558: 0x7853, + 9559: 0x7854, + 9560: 0x7858, + 9561: 0x7859, + 9562: 0x785A, + 9563: 0x785B, + 9564: 0x785C, + 9565: 0x785E, + 9566: 0x785F, + 9567: 0x7860, + 9568: 0x7861, + 9569: 0x7862, + 9570: 0x7863, + 9571: 0x7864, + 9572: 0x7865, + 9573: 0x7866, + 9574: 0x7867, + 9575: 0x7868, + 9576: 0x7869, + 9577: 0x786F, + 9578: 0x7870, + 9579: 0x7871, + 9580: 0x7872, + 9581: 0x7873, + 9582: 0x7874, + 9583: 0x7875, + 9584: 0x7876, + 9585: 0x7878, + 9586: 0x7879, + 9587: 0x787A, + 9588: 0x787B, + 9589: 0x787D, + 9590: 0x787E, + 9591: 0x787F, + 9592: 0x7880, + 9593: 0x7881, + 9594: 0x7882, + 9595: 0x7883, + 9596: 0x573A, + 9597: 0x5C1D, + 9598: 0x5E38, + 9599: 0x957F, + 9600: 0x507F, + 9601: 0x80A0, + 9602: 0x5382, + 9603: 0x655E, + 9604: 0x7545, + 9605: 0x5531, + 9606: 0x5021, + 9607: 0x8D85, + 9608: 0x6284, + 9609: 0x949E, + 9610: 0x671D, + 9611: 0x5632, + 9612: 0x6F6E, + 9613: 0x5DE2, + 9614: 0x5435, + 9615: 0x7092, + 9616: 0x8F66, + 9617: 0x626F, + 9618: 0x64A4, + 9619: 0x63A3, + 9620: 0x5F7B, + 9621: 0x6F88, + 9622: 0x90F4, + 9623: 0x81E3, + 9624: 0x8FB0, + 9625: 0x5C18, + 9626: 0x6668, + 9627: 0x5FF1, + 9628: 0x6C89, + 9629: 0x9648, + 9630: 0x8D81, + 9631: 0x886C, + 9632: 0x6491, + 9633: 0x79F0, + 9634: 0x57CE, + 9635: 0x6A59, + 9636: 0x6210, + 9637: 0x5448, + 9638: 0x4E58, + 9639: 0x7A0B, + 9640: 0x60E9, + 9641: 0x6F84, + 9642: 0x8BDA, + 9643: 0x627F, + 9644: 0x901E, + 9645: 0x9A8B, + 9646: 0x79E4, + 9647: 0x5403, + 9648: 0x75F4, + 9649: 0x6301, + 9650: 0x5319, + 9651: 0x6C60, + 9652: 0x8FDF, + 9653: 0x5F1B, + 9654: 0x9A70, + 9655: 0x803B, + 9656: 0x9F7F, + 9657: 0x4F88, + 9658: 0x5C3A, + 9659: 0x8D64, + 9660: 0x7FC5, + 9661: 0x65A5, + 9662: 0x70BD, + 9663: 0x5145, + 9664: 0x51B2, + 9665: 0x866B, + 9666: 0x5D07, + 9667: 0x5BA0, + 9668: 0x62BD, + 9669: 0x916C, + 9670: 0x7574, + 9671: 0x8E0C, + 9672: 0x7A20, + 9673: 0x6101, + 9674: 0x7B79, + 9675: 0x4EC7, + 9676: 0x7EF8, + 9677: 0x7785, + 9678: 0x4E11, + 9679: 0x81ED, + 9680: 0x521D, + 9681: 0x51FA, + 9682: 0x6A71, + 9683: 0x53A8, + 9684: 0x8E87, + 9685: 0x9504, + 9686: 0x96CF, + 9687: 0x6EC1, + 9688: 0x9664, + 9689: 0x695A, + 9690: 0x7884, + 9691: 0x7885, + 9692: 0x7886, + 9693: 0x7888, + 9694: 0x788A, + 9695: 0x788B, + 9696: 0x788F, + 9697: 0x7890, + 9698: 0x7892, + 9699: 0x7894, + 9700: 0x7895, + 9701: 0x7896, + 9702: 0x7899, + 9703: 0x789D, + 9704: 0x789E, + 9705: 0x78A0, + 9706: 0x78A2, + 9707: 0x78A4, + 9708: 0x78A6, + 9709: 0x78A8, + 9710: 0x78A9, + 9711: 0x78AA, + 9712: 0x78AB, + 9713: 0x78AC, + 9714: 0x78AD, + 9715: 0x78AE, + 9716: 0x78AF, + 9717: 0x78B5, + 9718: 0x78B6, + 9719: 0x78B7, + 9720: 0x78B8, + 9721: 0x78BA, + 9722: 0x78BB, + 9723: 0x78BC, + 9724: 0x78BD, + 9725: 0x78BF, + 9726: 0x78C0, + 9727: 0x78C2, + 9728: 0x78C3, + 9729: 0x78C4, + 9730: 0x78C6, + 9731: 0x78C7, + 9732: 0x78C8, + 9733: 0x78CC, + 9734: 0x78CD, + 9735: 0x78CE, + 9736: 0x78CF, + 9737: 0x78D1, + 9738: 0x78D2, + 9739: 0x78D3, + 9740: 0x78D6, + 9741: 0x78D7, + 9742: 0x78D8, + 9743: 0x78DA, + 9744: 0x78DB, + 9745: 0x78DC, + 9746: 0x78DD, + 9747: 0x78DE, + 9748: 0x78DF, + 9749: 0x78E0, + 9750: 0x78E1, + 9751: 0x78E2, + 9752: 0x78E3, + 9753: 0x78E4, + 9754: 0x78E5, + 9755: 0x78E6, + 9756: 0x78E7, + 9757: 0x78E9, + 9758: 0x78EA, + 9759: 0x78EB, + 9760: 0x78ED, + 9761: 0x78EE, + 9762: 0x78EF, + 9763: 0x78F0, + 9764: 0x78F1, + 9765: 0x78F3, + 9766: 0x78F5, + 9767: 0x78F6, + 9768: 0x78F8, + 9769: 0x78F9, + 9770: 0x78FB, + 9771: 0x78FC, + 9772: 0x78FD, + 9773: 0x78FE, + 9774: 0x78FF, + 9775: 0x7900, + 9776: 0x7902, + 9777: 0x7903, + 9778: 0x7904, + 9779: 0x7906, + 9780: 0x7907, + 9781: 0x7908, + 9782: 0x7909, + 9783: 0x790A, + 9784: 0x790B, + 9785: 0x790C, + 9786: 0x7840, + 9787: 0x50A8, + 9788: 0x77D7, + 9789: 0x6410, + 9790: 0x89E6, + 9791: 0x5904, + 9792: 0x63E3, + 9793: 0x5DDD, + 9794: 0x7A7F, + 9795: 0x693D, + 9796: 0x4F20, + 9797: 0x8239, + 9798: 0x5598, + 9799: 0x4E32, + 9800: 0x75AE, + 9801: 0x7A97, + 9802: 0x5E62, + 9803: 0x5E8A, + 9804: 0x95EF, + 9805: 0x521B, + 9806: 0x5439, + 9807: 0x708A, + 9808: 0x6376, + 9809: 0x9524, + 9810: 0x5782, + 9811: 0x6625, + 9812: 0x693F, + 9813: 0x9187, + 9814: 0x5507, + 9815: 0x6DF3, + 9816: 0x7EAF, + 9817: 0x8822, + 9818: 0x6233, + 9819: 0x7EF0, + 9820: 0x75B5, + 9821: 0x8328, + 9822: 0x78C1, + 9823: 0x96CC, + 9824: 0x8F9E, + 9825: 0x6148, + 9826: 0x74F7, + 9827: 0x8BCD, + 9828: 0x6B64, + 9829: 0x523A, + 9830: 0x8D50, + 9831: 0x6B21, + 9832: 0x806A, + 9833: 0x8471, + 9834: 0x56F1, + 9835: 0x5306, + 9836: 0x4ECE, + 9837: 0x4E1B, + 9838: 0x51D1, + 9839: 0x7C97, + 9840: 0x918B, + 9841: 0x7C07, + 9842: 0x4FC3, + 9843: 0x8E7F, + 9844: 0x7BE1, + 9845: 0x7A9C, + 9846: 0x6467, + 9847: 0x5D14, + 9848: 0x50AC, + 9849: 0x8106, + 9850: 0x7601, + 9851: 0x7CB9, + 9852: 0x6DEC, + 9853: 0x7FE0, + 9854: 0x6751, + 9855: 0x5B58, + 9856: 0x5BF8, + 9857: 0x78CB, + 9858: 0x64AE, + 9859: 0x6413, + 9860: 0x63AA, + 9861: 0x632B, + 9862: 0x9519, + 9863: 0x642D, + 9864: 0x8FBE, + 9865: 0x7B54, + 9866: 0x7629, + 9867: 0x6253, + 9868: 0x5927, + 9869: 0x5446, + 9870: 0x6B79, + 9871: 0x50A3, + 9872: 0x6234, + 9873: 0x5E26, + 9874: 0x6B86, + 9875: 0x4EE3, + 9876: 0x8D37, + 9877: 0x888B, + 9878: 0x5F85, + 9879: 0x902E, + 9880: 0x790D, + 9881: 0x790E, + 9882: 0x790F, + 9883: 0x7910, + 9884: 0x7911, + 9885: 0x7912, + 9886: 0x7914, + 9887: 0x7915, + 9888: 0x7916, + 9889: 0x7917, + 9890: 0x7918, + 9891: 0x7919, + 9892: 0x791A, + 9893: 0x791B, + 9894: 0x791C, + 9895: 0x791D, + 9896: 0x791F, + 9897: 0x7920, + 9898: 0x7921, + 9899: 0x7922, + 9900: 0x7923, + 9901: 0x7925, + 9902: 0x7926, + 9903: 0x7927, + 9904: 0x7928, + 9905: 0x7929, + 9906: 0x792A, + 9907: 0x792B, + 9908: 0x792C, + 9909: 0x792D, + 9910: 0x792E, + 9911: 0x792F, + 9912: 0x7930, + 9913: 0x7931, + 9914: 0x7932, + 9915: 0x7933, + 9916: 0x7935, + 9917: 0x7936, + 9918: 0x7937, + 9919: 0x7938, + 9920: 0x7939, + 9921: 0x793D, + 9922: 0x793F, + 9923: 0x7942, + 9924: 0x7943, + 9925: 0x7944, + 9926: 0x7945, + 9927: 0x7947, + 9928: 0x794A, + 9929: 0x794B, + 9930: 0x794C, + 9931: 0x794D, + 9932: 0x794E, + 9933: 0x794F, + 9934: 0x7950, + 9935: 0x7951, + 9936: 0x7952, + 9937: 0x7954, + 9938: 0x7955, + 9939: 0x7958, + 9940: 0x7959, + 9941: 0x7961, + 9942: 0x7963, + 9943: 0x7964, + 9944: 0x7966, + 9945: 0x7969, + 9946: 0x796A, + 9947: 0x796B, + 9948: 0x796C, + 9949: 0x796E, + 9950: 0x7970, + 9951: 0x7971, + 9952: 0x7972, + 9953: 0x7973, + 9954: 0x7974, + 9955: 0x7975, + 9956: 0x7976, + 9957: 0x7979, + 9958: 0x797B, + 9959: 0x797C, + 9960: 0x797D, + 9961: 0x797E, + 9962: 0x797F, + 9963: 0x7982, + 9964: 0x7983, + 9965: 0x7986, + 9966: 0x7987, + 9967: 0x7988, + 9968: 0x7989, + 9969: 0x798B, + 9970: 0x798C, + 9971: 0x798D, + 9972: 0x798E, + 9973: 0x7990, + 9974: 0x7991, + 9975: 0x7992, + 9976: 0x6020, + 9977: 0x803D, + 9978: 0x62C5, + 9979: 0x4E39, + 9980: 0x5355, + 9981: 0x90F8, + 9982: 0x63B8, + 9983: 0x80C6, + 9984: 0x65E6, + 9985: 0x6C2E, + 9986: 0x4F46, + 9987: 0x60EE, + 9988: 0x6DE1, + 9989: 0x8BDE, + 9990: 0x5F39, + 9991: 0x86CB, + 9992: 0x5F53, + 9993: 0x6321, + 9994: 0x515A, + 9995: 0x8361, + 9996: 0x6863, + 9997: 0x5200, + 9998: 0x6363, + 9999: 0x8E48, + 10000: 0x5012, + 10001: 0x5C9B, + 10002: 0x7977, + 10003: 0x5BFC, + 10004: 0x5230, + 10005: 0x7A3B, + 10006: 0x60BC, + 10007: 0x9053, + 10008: 0x76D7, + 10009: 0x5FB7, + 10010: 0x5F97, + 10011: 0x7684, + 10012: 0x8E6C, + 10013: 0x706F, + 10014: 0x767B, + 10015: 0x7B49, + 10016: 0x77AA, + 10017: 0x51F3, + 10018: 0x9093, + 10019: 0x5824, + 10020: 0x4F4E, + 10021: 0x6EF4, + 10022: 0x8FEA, + 10023: 0x654C, + 10024: 0x7B1B, + 10025: 0x72C4, + 10026: 0x6DA4, + 10027: 0x7FDF, + 10028: 0x5AE1, + 10029: 0x62B5, + 10030: 0x5E95, + 10031: 0x5730, + 10032: 0x8482, + 10033: 0x7B2C, + 10034: 0x5E1D, + 10035: 0x5F1F, + 10036: 0x9012, + 10037: 0x7F14, + 10038: 0x98A0, + 10039: 0x6382, + 10040: 0x6EC7, + 10041: 0x7898, + 10042: 0x70B9, + 10043: 0x5178, + 10044: 0x975B, + 10045: 0x57AB, + 10046: 0x7535, + 10047: 0x4F43, + 10048: 0x7538, + 10049: 0x5E97, + 10050: 0x60E6, + 10051: 0x5960, + 10052: 0x6DC0, + 10053: 0x6BBF, + 10054: 0x7889, + 10055: 0x53FC, + 10056: 0x96D5, + 10057: 0x51CB, + 10058: 0x5201, + 10059: 0x6389, + 10060: 0x540A, + 10061: 0x9493, + 10062: 0x8C03, + 10063: 0x8DCC, + 10064: 0x7239, + 10065: 0x789F, + 10066: 0x8776, + 10067: 0x8FED, + 10068: 0x8C0D, + 10069: 0x53E0, + 10070: 0x7993, + 10071: 0x7994, + 10072: 0x7995, + 10073: 0x7996, + 10074: 0x7997, + 10075: 0x7998, + 10076: 0x7999, + 10077: 0x799B, + 10078: 0x799C, + 10079: 0x799D, + 10080: 0x799E, + 10081: 0x799F, + 10082: 0x79A0, + 10083: 0x79A1, + 10084: 0x79A2, + 10085: 0x79A3, + 10086: 0x79A4, + 10087: 0x79A5, + 10088: 0x79A6, + 10089: 0x79A8, + 10090: 0x79A9, + 10091: 0x79AA, + 10092: 0x79AB, + 10093: 0x79AC, + 10094: 0x79AD, + 10095: 0x79AE, + 10096: 0x79AF, + 10097: 0x79B0, + 10098: 0x79B1, + 10099: 0x79B2, + 10100: 0x79B4, + 10101: 0x79B5, + 10102: 0x79B6, + 10103: 0x79B7, + 10104: 0x79B8, + 10105: 0x79BC, + 10106: 0x79BF, + 10107: 0x79C2, + 10108: 0x79C4, + 10109: 0x79C5, + 10110: 0x79C7, + 10111: 0x79C8, + 10112: 0x79CA, + 10113: 0x79CC, + 10114: 0x79CE, + 10115: 0x79CF, + 10116: 0x79D0, + 10117: 0x79D3, + 10118: 0x79D4, + 10119: 0x79D6, + 10120: 0x79D7, + 10121: 0x79D9, + 10122: 0x79DA, + 10123: 0x79DB, + 10124: 0x79DC, + 10125: 0x79DD, + 10126: 0x79DE, + 10127: 0x79E0, + 10128: 0x79E1, + 10129: 0x79E2, + 10130: 0x79E5, + 10131: 0x79E8, + 10132: 0x79EA, + 10133: 0x79EC, + 10134: 0x79EE, + 10135: 0x79F1, + 10136: 0x79F2, + 10137: 0x79F3, + 10138: 0x79F4, + 10139: 0x79F5, + 10140: 0x79F6, + 10141: 0x79F7, + 10142: 0x79F9, + 10143: 0x79FA, + 10144: 0x79FC, + 10145: 0x79FE, + 10146: 0x79FF, + 10147: 0x7A01, + 10148: 0x7A04, + 10149: 0x7A05, + 10150: 0x7A07, + 10151: 0x7A08, + 10152: 0x7A09, + 10153: 0x7A0A, + 10154: 0x7A0C, + 10155: 0x7A0F, + 10156: 0x7A10, + 10157: 0x7A11, + 10158: 0x7A12, + 10159: 0x7A13, + 10160: 0x7A15, + 10161: 0x7A16, + 10162: 0x7A18, + 10163: 0x7A19, + 10164: 0x7A1B, + 10165: 0x7A1C, + 10166: 0x4E01, + 10167: 0x76EF, + 10168: 0x53EE, + 10169: 0x9489, + 10170: 0x9876, + 10171: 0x9F0E, + 10172: 0x952D, + 10173: 0x5B9A, + 10174: 0x8BA2, + 10175: 0x4E22, + 10176: 0x4E1C, + 10177: 0x51AC, + 10178: 0x8463, + 10179: 0x61C2, + 10180: 0x52A8, + 10181: 0x680B, + 10182: 0x4F97, + 10183: 0x606B, + 10184: 0x51BB, + 10185: 0x6D1E, + 10186: 0x515C, + 10187: 0x6296, + 10188: 0x6597, + 10189: 0x9661, + 10190: 0x8C46, + 10191: 0x9017, + 10192: 0x75D8, + 10193: 0x90FD, + 10194: 0x7763, + 10195: 0x6BD2, + 10196: 0x728A, + 10197: 0x72EC, + 10198: 0x8BFB, + 10199: 0x5835, + 10200: 0x7779, + 10201: 0x8D4C, + 10202: 0x675C, + 10203: 0x9540, + 10204: 0x809A, + 10205: 0x5EA6, + 10206: 0x6E21, + 10207: 0x5992, + 10208: 0x7AEF, + 10209: 0x77ED, + 10210: 0x953B, + 10211: 0x6BB5, + 10212: 0x65AD, + 10213: 0x7F0E, + 10214: 0x5806, + 10215: 0x5151, + 10216: 0x961F, + 10217: 0x5BF9, + 10218: 0x58A9, + 10219: 0x5428, + 10220: 0x8E72, + 10221: 0x6566, + 10222: 0x987F, + 10223: 0x56E4, + 10224: 0x949D, + 10225: 0x76FE, + 10226: 0x9041, + 10227: 0x6387, + 10228: 0x54C6, + 10229: 0x591A, + 10230: 0x593A, + 10231: 0x579B, + 10232: 0x8EB2, + 10233: 0x6735, + 10234: 0x8DFA, + 10235: 0x8235, + 10236: 0x5241, + 10237: 0x60F0, + 10238: 0x5815, + 10239: 0x86FE, + 10240: 0x5CE8, + 10241: 0x9E45, + 10242: 0x4FC4, + 10243: 0x989D, + 10244: 0x8BB9, + 10245: 0x5A25, + 10246: 0x6076, + 10247: 0x5384, + 10248: 0x627C, + 10249: 0x904F, + 10250: 0x9102, + 10251: 0x997F, + 10252: 0x6069, + 10253: 0x800C, + 10254: 0x513F, + 10255: 0x8033, + 10256: 0x5C14, + 10257: 0x9975, + 10258: 0x6D31, + 10259: 0x4E8C, + 10260: 0x7A1D, + 10261: 0x7A1F, + 10262: 0x7A21, + 10263: 0x7A22, + 10264: 0x7A24, + 10265: 0x7A25, + 10266: 0x7A26, + 10267: 0x7A27, + 10268: 0x7A28, + 10269: 0x7A29, + 10270: 0x7A2A, + 10271: 0x7A2B, + 10272: 0x7A2C, + 10273: 0x7A2D, + 10274: 0x7A2E, + 10275: 0x7A2F, + 10276: 0x7A30, + 10277: 0x7A31, + 10278: 0x7A32, + 10279: 0x7A34, + 10280: 0x7A35, + 10281: 0x7A36, + 10282: 0x7A38, + 10283: 0x7A3A, + 10284: 0x7A3E, + 10285: 0x7A40, + 10286: 0x7A41, + 10287: 0x7A42, + 10288: 0x7A43, + 10289: 0x7A44, + 10290: 0x7A45, + 10291: 0x7A47, + 10292: 0x7A48, + 10293: 0x7A49, + 10294: 0x7A4A, + 10295: 0x7A4B, + 10296: 0x7A4C, + 10297: 0x7A4D, + 10298: 0x7A4E, + 10299: 0x7A4F, + 10300: 0x7A50, + 10301: 0x7A52, + 10302: 0x7A53, + 10303: 0x7A54, + 10304: 0x7A55, + 10305: 0x7A56, + 10306: 0x7A58, + 10307: 0x7A59, + 10308: 0x7A5A, + 10309: 0x7A5B, + 10310: 0x7A5C, + 10311: 0x7A5D, + 10312: 0x7A5E, + 10313: 0x7A5F, + 10314: 0x7A60, + 10315: 0x7A61, + 10316: 0x7A62, + 10317: 0x7A63, + 10318: 0x7A64, + 10319: 0x7A65, + 10320: 0x7A66, + 10321: 0x7A67, + 10322: 0x7A68, + 10323: 0x7A69, + 10324: 0x7A6A, + 10325: 0x7A6B, + 10326: 0x7A6C, + 10327: 0x7A6D, + 10328: 0x7A6E, + 10329: 0x7A6F, + 10330: 0x7A71, + 10331: 0x7A72, + 10332: 0x7A73, + 10333: 0x7A75, + 10334: 0x7A7B, + 10335: 0x7A7C, + 10336: 0x7A7D, + 10337: 0x7A7E, + 10338: 0x7A82, + 10339: 0x7A85, + 10340: 0x7A87, + 10341: 0x7A89, + 10342: 0x7A8A, + 10343: 0x7A8B, + 10344: 0x7A8C, + 10345: 0x7A8E, + 10346: 0x7A8F, + 10347: 0x7A90, + 10348: 0x7A93, + 10349: 0x7A94, + 10350: 0x7A99, + 10351: 0x7A9A, + 10352: 0x7A9B, + 10353: 0x7A9E, + 10354: 0x7AA1, + 10355: 0x7AA2, + 10356: 0x8D30, + 10357: 0x53D1, + 10358: 0x7F5A, + 10359: 0x7B4F, + 10360: 0x4F10, + 10361: 0x4E4F, + 10362: 0x9600, + 10363: 0x6CD5, + 10364: 0x73D0, + 10365: 0x85E9, + 10366: 0x5E06, + 10367: 0x756A, + 10368: 0x7FFB, + 10369: 0x6A0A, + 10370: 0x77FE, + 10371: 0x9492, + 10372: 0x7E41, + 10373: 0x51E1, + 10374: 0x70E6, + 10375: 0x53CD, + 10376: 0x8FD4, + 10377: 0x8303, + 10378: 0x8D29, + 10379: 0x72AF, + 10380: 0x996D, + 10381: 0x6CDB, + 10382: 0x574A, + 10383: 0x82B3, + 10384: 0x65B9, + 10385: 0x80AA, + 10386: 0x623F, + 10387: 0x9632, + 10388: 0x59A8, + 10389: 0x4EFF, + 10390: 0x8BBF, + 10391: 0x7EBA, + 10392: 0x653E, + 10393: 0x83F2, + 10394: 0x975E, + 10395: 0x5561, + 10396: 0x98DE, + 10397: 0x80A5, + 10398: 0x532A, + 10399: 0x8BFD, + 10400: 0x5420, + 10401: 0x80BA, + 10402: 0x5E9F, + 10403: 0x6CB8, + 10404: 0x8D39, + 10405: 0x82AC, + 10406: 0x915A, + 10407: 0x5429, + 10408: 0x6C1B, + 10409: 0x5206, + 10410: 0x7EB7, + 10411: 0x575F, + 10412: 0x711A, + 10413: 0x6C7E, + 10414: 0x7C89, + 10415: 0x594B, + 10416: 0x4EFD, + 10417: 0x5FFF, + 10418: 0x6124, + 10419: 0x7CAA, + 10420: 0x4E30, + 10421: 0x5C01, + 10422: 0x67AB, + 10423: 0x8702, + 10424: 0x5CF0, + 10425: 0x950B, + 10426: 0x98CE, + 10427: 0x75AF, + 10428: 0x70FD, + 10429: 0x9022, + 10430: 0x51AF, + 10431: 0x7F1D, + 10432: 0x8BBD, + 10433: 0x5949, + 10434: 0x51E4, + 10435: 0x4F5B, + 10436: 0x5426, + 10437: 0x592B, + 10438: 0x6577, + 10439: 0x80A4, + 10440: 0x5B75, + 10441: 0x6276, + 10442: 0x62C2, + 10443: 0x8F90, + 10444: 0x5E45, + 10445: 0x6C1F, + 10446: 0x7B26, + 10447: 0x4F0F, + 10448: 0x4FD8, + 10449: 0x670D, + 10450: 0x7AA3, + 10451: 0x7AA4, + 10452: 0x7AA7, + 10453: 0x7AA9, + 10454: 0x7AAA, + 10455: 0x7AAB, + 10456: 0x7AAE, + 10457: 0x7AAF, + 10458: 0x7AB0, + 10459: 0x7AB1, + 10460: 0x7AB2, + 10461: 0x7AB4, + 10462: 0x7AB5, + 10463: 0x7AB6, + 10464: 0x7AB7, + 10465: 0x7AB8, + 10466: 0x7AB9, + 10467: 0x7ABA, + 10468: 0x7ABB, + 10469: 0x7ABC, + 10470: 0x7ABD, + 10471: 0x7ABE, + 10472: 0x7AC0, + 10473: 0x7AC1, + 10474: 0x7AC2, + 10475: 0x7AC3, + 10476: 0x7AC4, + 10477: 0x7AC5, + 10478: 0x7AC6, + 10479: 0x7AC7, + 10480: 0x7AC8, + 10481: 0x7AC9, + 10482: 0x7ACA, + 10483: 0x7ACC, + 10484: 0x7ACD, + 10485: 0x7ACE, + 10486: 0x7ACF, + 10487: 0x7AD0, + 10488: 0x7AD1, + 10489: 0x7AD2, + 10490: 0x7AD3, + 10491: 0x7AD4, + 10492: 0x7AD5, + 10493: 0x7AD7, + 10494: 0x7AD8, + 10495: 0x7ADA, + 10496: 0x7ADB, + 10497: 0x7ADC, + 10498: 0x7ADD, + 10499: 0x7AE1, + 10500: 0x7AE2, + 10501: 0x7AE4, + 10502: 0x7AE7, + 10503: 0x7AE8, + 10504: 0x7AE9, + 10505: 0x7AEA, + 10506: 0x7AEB, + 10507: 0x7AEC, + 10508: 0x7AEE, + 10509: 0x7AF0, + 10510: 0x7AF1, + 10511: 0x7AF2, + 10512: 0x7AF3, + 10513: 0x7AF4, + 10514: 0x7AF5, + 10515: 0x7AF6, + 10516: 0x7AF7, + 10517: 0x7AF8, + 10518: 0x7AFB, + 10519: 0x7AFC, + 10520: 0x7AFE, + 10521: 0x7B00, + 10522: 0x7B01, + 10523: 0x7B02, + 10524: 0x7B05, + 10525: 0x7B07, + 10526: 0x7B09, + 10527: 0x7B0C, + 10528: 0x7B0D, + 10529: 0x7B0E, + 10530: 0x7B10, + 10531: 0x7B12, + 10532: 0x7B13, + 10533: 0x7B16, + 10534: 0x7B17, + 10535: 0x7B18, + 10536: 0x7B1A, + 10537: 0x7B1C, + 10538: 0x7B1D, + 10539: 0x7B1F, + 10540: 0x7B21, + 10541: 0x7B22, + 10542: 0x7B23, + 10543: 0x7B27, + 10544: 0x7B29, + 10545: 0x7B2D, + 10546: 0x6D6E, + 10547: 0x6DAA, + 10548: 0x798F, + 10549: 0x88B1, + 10550: 0x5F17, + 10551: 0x752B, + 10552: 0x629A, + 10553: 0x8F85, + 10554: 0x4FEF, + 10555: 0x91DC, + 10556: 0x65A7, + 10557: 0x812F, + 10558: 0x8151, + 10559: 0x5E9C, + 10560: 0x8150, + 10561: 0x8D74, + 10562: 0x526F, + 10563: 0x8986, + 10564: 0x8D4B, + 10565: 0x590D, + 10566: 0x5085, + 10567: 0x4ED8, + 10568: 0x961C, + 10569: 0x7236, + 10570: 0x8179, + 10571: 0x8D1F, + 10572: 0x5BCC, + 10573: 0x8BA3, + 10574: 0x9644, + 10575: 0x5987, + 10576: 0x7F1A, + 10577: 0x5490, + 10578: 0x5676, + 10579: 0x560E, + 10580: 0x8BE5, + 10581: 0x6539, + 10582: 0x6982, + 10583: 0x9499, + 10584: 0x76D6, + 10585: 0x6E89, + 10586: 0x5E72, + 10587: 0x7518, + 10588: 0x6746, + 10589: 0x67D1, + 10590: 0x7AFF, + 10591: 0x809D, + 10592: 0x8D76, + 10593: 0x611F, + 10594: 0x79C6, + 10595: 0x6562, + 10596: 0x8D63, + 10597: 0x5188, + 10598: 0x521A, + 10599: 0x94A2, + 10600: 0x7F38, + 10601: 0x809B, + 10602: 0x7EB2, + 10603: 0x5C97, + 10604: 0x6E2F, + 10605: 0x6760, + 10606: 0x7BD9, + 10607: 0x768B, + 10608: 0x9AD8, + 10609: 0x818F, + 10610: 0x7F94, + 10611: 0x7CD5, + 10612: 0x641E, + 10613: 0x9550, + 10614: 0x7A3F, + 10615: 0x544A, + 10616: 0x54E5, + 10617: 0x6B4C, + 10618: 0x6401, + 10619: 0x6208, + 10620: 0x9E3D, + 10621: 0x80F3, + 10622: 0x7599, + 10623: 0x5272, + 10624: 0x9769, + 10625: 0x845B, + 10626: 0x683C, + 10627: 0x86E4, + 10628: 0x9601, + 10629: 0x9694, + 10630: 0x94EC, + 10631: 0x4E2A, + 10632: 0x5404, + 10633: 0x7ED9, + 10634: 0x6839, + 10635: 0x8DDF, + 10636: 0x8015, + 10637: 0x66F4, + 10638: 0x5E9A, + 10639: 0x7FB9, + 10640: 0x7B2F, + 10641: 0x7B30, + 10642: 0x7B32, + 10643: 0x7B34, + 10644: 0x7B35, + 10645: 0x7B36, + 10646: 0x7B37, + 10647: 0x7B39, + 10648: 0x7B3B, + 10649: 0x7B3D, + 10650: 0x7B3F, + 10651: 0x7B40, + 10652: 0x7B41, + 10653: 0x7B42, + 10654: 0x7B43, + 10655: 0x7B44, + 10656: 0x7B46, + 10657: 0x7B48, + 10658: 0x7B4A, + 10659: 0x7B4D, + 10660: 0x7B4E, + 10661: 0x7B53, + 10662: 0x7B55, + 10663: 0x7B57, + 10664: 0x7B59, + 10665: 0x7B5C, + 10666: 0x7B5E, + 10667: 0x7B5F, + 10668: 0x7B61, + 10669: 0x7B63, + 10670: 0x7B64, + 10671: 0x7B65, + 10672: 0x7B66, + 10673: 0x7B67, + 10674: 0x7B68, + 10675: 0x7B69, + 10676: 0x7B6A, + 10677: 0x7B6B, + 10678: 0x7B6C, + 10679: 0x7B6D, + 10680: 0x7B6F, + 10681: 0x7B70, + 10682: 0x7B73, + 10683: 0x7B74, + 10684: 0x7B76, + 10685: 0x7B78, + 10686: 0x7B7A, + 10687: 0x7B7C, + 10688: 0x7B7D, + 10689: 0x7B7F, + 10690: 0x7B81, + 10691: 0x7B82, + 10692: 0x7B83, + 10693: 0x7B84, + 10694: 0x7B86, + 10695: 0x7B87, + 10696: 0x7B88, + 10697: 0x7B89, + 10698: 0x7B8A, + 10699: 0x7B8B, + 10700: 0x7B8C, + 10701: 0x7B8E, + 10702: 0x7B8F, + 10703: 0x7B91, + 10704: 0x7B92, + 10705: 0x7B93, + 10706: 0x7B96, + 10707: 0x7B98, + 10708: 0x7B99, + 10709: 0x7B9A, + 10710: 0x7B9B, + 10711: 0x7B9E, + 10712: 0x7B9F, + 10713: 0x7BA0, + 10714: 0x7BA3, + 10715: 0x7BA4, + 10716: 0x7BA5, + 10717: 0x7BAE, + 10718: 0x7BAF, + 10719: 0x7BB0, + 10720: 0x7BB2, + 10721: 0x7BB3, + 10722: 0x7BB5, + 10723: 0x7BB6, + 10724: 0x7BB7, + 10725: 0x7BB9, + 10726: 0x7BBA, + 10727: 0x7BBB, + 10728: 0x7BBC, + 10729: 0x7BBD, + 10730: 0x7BBE, + 10731: 0x7BBF, + 10732: 0x7BC0, + 10733: 0x7BC2, + 10734: 0x7BC3, + 10735: 0x7BC4, + 10736: 0x57C2, + 10737: 0x803F, + 10738: 0x6897, + 10739: 0x5DE5, + 10740: 0x653B, + 10741: 0x529F, + 10742: 0x606D, + 10743: 0x9F9A, + 10744: 0x4F9B, + 10745: 0x8EAC, + 10746: 0x516C, + 10747: 0x5BAB, + 10748: 0x5F13, + 10749: 0x5DE9, + 10750: 0x6C5E, + 10751: 0x62F1, + 10752: 0x8D21, + 10753: 0x5171, + 10754: 0x94A9, + 10755: 0x52FE, + 10756: 0x6C9F, + 10757: 0x82DF, + 10758: 0x72D7, + 10759: 0x57A2, + 10760: 0x6784, + 10761: 0x8D2D, + 10762: 0x591F, + 10763: 0x8F9C, + 10764: 0x83C7, + 10765: 0x5495, + 10766: 0x7B8D, + 10767: 0x4F30, + 10768: 0x6CBD, + 10769: 0x5B64, + 10770: 0x59D1, + 10771: 0x9F13, + 10772: 0x53E4, + 10773: 0x86CA, + 10774: 0x9AA8, + 10775: 0x8C37, + 10776: 0x80A1, + 10777: 0x6545, + 10778: 0x987E, + 10779: 0x56FA, + 10780: 0x96C7, + 10781: 0x522E, + 10782: 0x74DC, + 10783: 0x5250, + 10784: 0x5BE1, + 10785: 0x6302, + 10786: 0x8902, + 10787: 0x4E56, + 10788: 0x62D0, + 10789: 0x602A, + 10790: 0x68FA, + 10791: 0x5173, + 10792: 0x5B98, + 10793: 0x51A0, + 10794: 0x89C2, + 10795: 0x7BA1, + 10796: 0x9986, + 10797: 0x7F50, + 10798: 0x60EF, + 10799: 0x704C, + 10800: 0x8D2F, + 10801: 0x5149, + 10802: 0x5E7F, + 10803: 0x901B, + 10804: 0x7470, + 10805: 0x89C4, + 10806: 0x572D, + 10807: 0x7845, + 10808: 0x5F52, + 10809: 0x9F9F, + 10810: 0x95FA, + 10811: 0x8F68, + 10812: 0x9B3C, + 10813: 0x8BE1, + 10814: 0x7678, + 10815: 0x6842, + 10816: 0x67DC, + 10817: 0x8DEA, + 10818: 0x8D35, + 10819: 0x523D, + 10820: 0x8F8A, + 10821: 0x6EDA, + 10822: 0x68CD, + 10823: 0x9505, + 10824: 0x90ED, + 10825: 0x56FD, + 10826: 0x679C, + 10827: 0x88F9, + 10828: 0x8FC7, + 10829: 0x54C8, + 10830: 0x7BC5, + 10831: 0x7BC8, + 10832: 0x7BC9, + 10833: 0x7BCA, + 10834: 0x7BCB, + 10835: 0x7BCD, + 10836: 0x7BCE, + 10837: 0x7BCF, + 10838: 0x7BD0, + 10839: 0x7BD2, + 10840: 0x7BD4, + 10841: 0x7BD5, + 10842: 0x7BD6, + 10843: 0x7BD7, + 10844: 0x7BD8, + 10845: 0x7BDB, + 10846: 0x7BDC, + 10847: 0x7BDE, + 10848: 0x7BDF, + 10849: 0x7BE0, + 10850: 0x7BE2, + 10851: 0x7BE3, + 10852: 0x7BE4, + 10853: 0x7BE7, + 10854: 0x7BE8, + 10855: 0x7BE9, + 10856: 0x7BEB, + 10857: 0x7BEC, + 10858: 0x7BED, + 10859: 0x7BEF, + 10860: 0x7BF0, + 10861: 0x7BF2, + 10862: 0x7BF3, + 10863: 0x7BF4, + 10864: 0x7BF5, + 10865: 0x7BF6, + 10866: 0x7BF8, + 10867: 0x7BF9, + 10868: 0x7BFA, + 10869: 0x7BFB, + 10870: 0x7BFD, + 10871: 0x7BFF, + 10872: 0x7C00, + 10873: 0x7C01, + 10874: 0x7C02, + 10875: 0x7C03, + 10876: 0x7C04, + 10877: 0x7C05, + 10878: 0x7C06, + 10879: 0x7C08, + 10880: 0x7C09, + 10881: 0x7C0A, + 10882: 0x7C0D, + 10883: 0x7C0E, + 10884: 0x7C10, + 10885: 0x7C11, + 10886: 0x7C12, + 10887: 0x7C13, + 10888: 0x7C14, + 10889: 0x7C15, + 10890: 0x7C17, + 10891: 0x7C18, + 10892: 0x7C19, + 10893: 0x7C1A, + 10894: 0x7C1B, + 10895: 0x7C1C, + 10896: 0x7C1D, + 10897: 0x7C1E, + 10898: 0x7C20, + 10899: 0x7C21, + 10900: 0x7C22, + 10901: 0x7C23, + 10902: 0x7C24, + 10903: 0x7C25, + 10904: 0x7C28, + 10905: 0x7C29, + 10906: 0x7C2B, + 10907: 0x7C2C, + 10908: 0x7C2D, + 10909: 0x7C2E, + 10910: 0x7C2F, + 10911: 0x7C30, + 10912: 0x7C31, + 10913: 0x7C32, + 10914: 0x7C33, + 10915: 0x7C34, + 10916: 0x7C35, + 10917: 0x7C36, + 10918: 0x7C37, + 10919: 0x7C39, + 10920: 0x7C3A, + 10921: 0x7C3B, + 10922: 0x7C3C, + 10923: 0x7C3D, + 10924: 0x7C3E, + 10925: 0x7C42, + 10926: 0x9AB8, + 10927: 0x5B69, + 10928: 0x6D77, + 10929: 0x6C26, + 10930: 0x4EA5, + 10931: 0x5BB3, + 10932: 0x9A87, + 10933: 0x9163, + 10934: 0x61A8, + 10935: 0x90AF, + 10936: 0x97E9, + 10937: 0x542B, + 10938: 0x6DB5, + 10939: 0x5BD2, + 10940: 0x51FD, + 10941: 0x558A, + 10942: 0x7F55, + 10943: 0x7FF0, + 10944: 0x64BC, + 10945: 0x634D, + 10946: 0x65F1, + 10947: 0x61BE, + 10948: 0x608D, + 10949: 0x710A, + 10950: 0x6C57, + 10951: 0x6C49, + 10952: 0x592F, + 10953: 0x676D, + 10954: 0x822A, + 10955: 0x58D5, + 10956: 0x568E, + 10957: 0x8C6A, + 10958: 0x6BEB, + 10959: 0x90DD, + 10960: 0x597D, + 10961: 0x8017, + 10962: 0x53F7, + 10963: 0x6D69, + 10964: 0x5475, + 10965: 0x559D, + 10966: 0x8377, + 10967: 0x83CF, + 10968: 0x6838, + 10969: 0x79BE, + 10970: 0x548C, + 10971: 0x4F55, + 10972: 0x5408, + 10973: 0x76D2, + 10974: 0x8C89, + 10975: 0x9602, + 10976: 0x6CB3, + 10977: 0x6DB8, + 10978: 0x8D6B, + 10979: 0x8910, + 10980: 0x9E64, + 10981: 0x8D3A, + 10982: 0x563F, + 10983: 0x9ED1, + 10984: 0x75D5, + 10985: 0x5F88, + 10986: 0x72E0, + 10987: 0x6068, + 10988: 0x54FC, + 10989: 0x4EA8, + 10990: 0x6A2A, + 10991: 0x8861, + 10992: 0x6052, + 10993: 0x8F70, + 10994: 0x54C4, + 10995: 0x70D8, + 10996: 0x8679, + 10997: 0x9E3F, + 10998: 0x6D2A, + 10999: 0x5B8F, + 11000: 0x5F18, + 11001: 0x7EA2, + 11002: 0x5589, + 11003: 0x4FAF, + 11004: 0x7334, + 11005: 0x543C, + 11006: 0x539A, + 11007: 0x5019, + 11008: 0x540E, + 11009: 0x547C, + 11010: 0x4E4E, + 11011: 0x5FFD, + 11012: 0x745A, + 11013: 0x58F6, + 11014: 0x846B, + 11015: 0x80E1, + 11016: 0x8774, + 11017: 0x72D0, + 11018: 0x7CCA, + 11019: 0x6E56, + 11020: 0x7C43, + 11021: 0x7C44, + 11022: 0x7C45, + 11023: 0x7C46, + 11024: 0x7C47, + 11025: 0x7C48, + 11026: 0x7C49, + 11027: 0x7C4A, + 11028: 0x7C4B, + 11029: 0x7C4C, + 11030: 0x7C4E, + 11031: 0x7C4F, + 11032: 0x7C50, + 11033: 0x7C51, + 11034: 0x7C52, + 11035: 0x7C53, + 11036: 0x7C54, + 11037: 0x7C55, + 11038: 0x7C56, + 11039: 0x7C57, + 11040: 0x7C58, + 11041: 0x7C59, + 11042: 0x7C5A, + 11043: 0x7C5B, + 11044: 0x7C5C, + 11045: 0x7C5D, + 11046: 0x7C5E, + 11047: 0x7C5F, + 11048: 0x7C60, + 11049: 0x7C61, + 11050: 0x7C62, + 11051: 0x7C63, + 11052: 0x7C64, + 11053: 0x7C65, + 11054: 0x7C66, + 11055: 0x7C67, + 11056: 0x7C68, + 11057: 0x7C69, + 11058: 0x7C6A, + 11059: 0x7C6B, + 11060: 0x7C6C, + 11061: 0x7C6D, + 11062: 0x7C6E, + 11063: 0x7C6F, + 11064: 0x7C70, + 11065: 0x7C71, + 11066: 0x7C72, + 11067: 0x7C75, + 11068: 0x7C76, + 11069: 0x7C77, + 11070: 0x7C78, + 11071: 0x7C79, + 11072: 0x7C7A, + 11073: 0x7C7E, + 11074: 0x7C7F, + 11075: 0x7C80, + 11076: 0x7C81, + 11077: 0x7C82, + 11078: 0x7C83, + 11079: 0x7C84, + 11080: 0x7C85, + 11081: 0x7C86, + 11082: 0x7C87, + 11083: 0x7C88, + 11084: 0x7C8A, + 11085: 0x7C8B, + 11086: 0x7C8C, + 11087: 0x7C8D, + 11088: 0x7C8E, + 11089: 0x7C8F, + 11090: 0x7C90, + 11091: 0x7C93, + 11092: 0x7C94, + 11093: 0x7C96, + 11094: 0x7C99, + 11095: 0x7C9A, + 11096: 0x7C9B, + 11097: 0x7CA0, + 11098: 0x7CA1, + 11099: 0x7CA3, + 11100: 0x7CA6, + 11101: 0x7CA7, + 11102: 0x7CA8, + 11103: 0x7CA9, + 11104: 0x7CAB, + 11105: 0x7CAC, + 11106: 0x7CAD, + 11107: 0x7CAF, + 11108: 0x7CB0, + 11109: 0x7CB4, + 11110: 0x7CB5, + 11111: 0x7CB6, + 11112: 0x7CB7, + 11113: 0x7CB8, + 11114: 0x7CBA, + 11115: 0x7CBB, + 11116: 0x5F27, + 11117: 0x864E, + 11118: 0x552C, + 11119: 0x62A4, + 11120: 0x4E92, + 11121: 0x6CAA, + 11122: 0x6237, + 11123: 0x82B1, + 11124: 0x54D7, + 11125: 0x534E, + 11126: 0x733E, + 11127: 0x6ED1, + 11128: 0x753B, + 11129: 0x5212, + 11130: 0x5316, + 11131: 0x8BDD, + 11132: 0x69D0, + 11133: 0x5F8A, + 11134: 0x6000, + 11135: 0x6DEE, + 11136: 0x574F, + 11137: 0x6B22, + 11138: 0x73AF, + 11139: 0x6853, + 11140: 0x8FD8, + 11141: 0x7F13, + 11142: 0x6362, + 11143: 0x60A3, + 11144: 0x5524, + 11145: 0x75EA, + 11146: 0x8C62, + 11147: 0x7115, + 11148: 0x6DA3, + 11149: 0x5BA6, + 11150: 0x5E7B, + 11151: 0x8352, + 11152: 0x614C, + 11153: 0x9EC4, + 11154: 0x78FA, + 11155: 0x8757, + 11156: 0x7C27, + 11157: 0x7687, + 11158: 0x51F0, + 11159: 0x60F6, + 11160: 0x714C, + 11161: 0x6643, + 11162: 0x5E4C, + 11163: 0x604D, + 11164: 0x8C0E, + 11165: 0x7070, + 11166: 0x6325, + 11167: 0x8F89, + 11168: 0x5FBD, + 11169: 0x6062, + 11170: 0x86D4, + 11171: 0x56DE, + 11172: 0x6BC1, + 11173: 0x6094, + 11174: 0x6167, + 11175: 0x5349, + 11176: 0x60E0, + 11177: 0x6666, + 11178: 0x8D3F, + 11179: 0x79FD, + 11180: 0x4F1A, + 11181: 0x70E9, + 11182: 0x6C47, + 11183: 0x8BB3, + 11184: 0x8BF2, + 11185: 0x7ED8, + 11186: 0x8364, + 11187: 0x660F, + 11188: 0x5A5A, + 11189: 0x9B42, + 11190: 0x6D51, + 11191: 0x6DF7, + 11192: 0x8C41, + 11193: 0x6D3B, + 11194: 0x4F19, + 11195: 0x706B, + 11196: 0x83B7, + 11197: 0x6216, + 11198: 0x60D1, + 11199: 0x970D, + 11200: 0x8D27, + 11201: 0x7978, + 11202: 0x51FB, + 11203: 0x573E, + 11204: 0x57FA, + 11205: 0x673A, + 11206: 0x7578, + 11207: 0x7A3D, + 11208: 0x79EF, + 11209: 0x7B95, + 11210: 0x7CBF, + 11211: 0x7CC0, + 11212: 0x7CC2, + 11213: 0x7CC3, + 11214: 0x7CC4, + 11215: 0x7CC6, + 11216: 0x7CC9, + 11217: 0x7CCB, + 11218: 0x7CCE, + 11219: 0x7CCF, + 11220: 0x7CD0, + 11221: 0x7CD1, + 11222: 0x7CD2, + 11223: 0x7CD3, + 11224: 0x7CD4, + 11225: 0x7CD8, + 11226: 0x7CDA, + 11227: 0x7CDB, + 11228: 0x7CDD, + 11229: 0x7CDE, + 11230: 0x7CE1, + 11231: 0x7CE2, + 11232: 0x7CE3, + 11233: 0x7CE4, + 11234: 0x7CE5, + 11235: 0x7CE6, + 11236: 0x7CE7, + 11237: 0x7CE9, + 11238: 0x7CEA, + 11239: 0x7CEB, + 11240: 0x7CEC, + 11241: 0x7CED, + 11242: 0x7CEE, + 11243: 0x7CF0, + 11244: 0x7CF1, + 11245: 0x7CF2, + 11246: 0x7CF3, + 11247: 0x7CF4, + 11248: 0x7CF5, + 11249: 0x7CF6, + 11250: 0x7CF7, + 11251: 0x7CF9, + 11252: 0x7CFA, + 11253: 0x7CFC, + 11254: 0x7CFD, + 11255: 0x7CFE, + 11256: 0x7CFF, + 11257: 0x7D00, + 11258: 0x7D01, + 11259: 0x7D02, + 11260: 0x7D03, + 11261: 0x7D04, + 11262: 0x7D05, + 11263: 0x7D06, + 11264: 0x7D07, + 11265: 0x7D08, + 11266: 0x7D09, + 11267: 0x7D0B, + 11268: 0x7D0C, + 11269: 0x7D0D, + 11270: 0x7D0E, + 11271: 0x7D0F, + 11272: 0x7D10, + 11273: 0x7D11, + 11274: 0x7D12, + 11275: 0x7D13, + 11276: 0x7D14, + 11277: 0x7D15, + 11278: 0x7D16, + 11279: 0x7D17, + 11280: 0x7D18, + 11281: 0x7D19, + 11282: 0x7D1A, + 11283: 0x7D1B, + 11284: 0x7D1C, + 11285: 0x7D1D, + 11286: 0x7D1E, + 11287: 0x7D1F, + 11288: 0x7D21, + 11289: 0x7D23, + 11290: 0x7D24, + 11291: 0x7D25, + 11292: 0x7D26, + 11293: 0x7D28, + 11294: 0x7D29, + 11295: 0x7D2A, + 11296: 0x7D2C, + 11297: 0x7D2D, + 11298: 0x7D2E, + 11299: 0x7D30, + 11300: 0x7D31, + 11301: 0x7D32, + 11302: 0x7D33, + 11303: 0x7D34, + 11304: 0x7D35, + 11305: 0x7D36, + 11306: 0x808C, + 11307: 0x9965, + 11308: 0x8FF9, + 11309: 0x6FC0, + 11310: 0x8BA5, + 11311: 0x9E21, + 11312: 0x59EC, + 11313: 0x7EE9, + 11314: 0x7F09, + 11315: 0x5409, + 11316: 0x6781, + 11317: 0x68D8, + 11318: 0x8F91, + 11319: 0x7C4D, + 11320: 0x96C6, + 11321: 0x53CA, + 11322: 0x6025, + 11323: 0x75BE, + 11324: 0x6C72, + 11325: 0x5373, + 11326: 0x5AC9, + 11327: 0x7EA7, + 11328: 0x6324, + 11329: 0x51E0, + 11330: 0x810A, + 11331: 0x5DF1, + 11332: 0x84DF, + 11333: 0x6280, + 11334: 0x5180, + 11335: 0x5B63, + 11336: 0x4F0E, + 11337: 0x796D, + 11338: 0x5242, + 11339: 0x60B8, + 11340: 0x6D4E, + 11341: 0x5BC4, + 11342: 0x5BC2, + 11343: 0x8BA1, + 11344: 0x8BB0, + 11345: 0x65E2, + 11346: 0x5FCC, + 11347: 0x9645, + 11348: 0x5993, + 11349: 0x7EE7, + 11350: 0x7EAA, + 11351: 0x5609, + 11352: 0x67B7, + 11353: 0x5939, + 11354: 0x4F73, + 11355: 0x5BB6, + 11356: 0x52A0, + 11357: 0x835A, + 11358: 0x988A, + 11359: 0x8D3E, + 11360: 0x7532, + 11361: 0x94BE, + 11362: 0x5047, + 11363: 0x7A3C, + 11364: 0x4EF7, + 11365: 0x67B6, + 11366: 0x9A7E, + 11367: 0x5AC1, + 11368: 0x6B7C, + 11369: 0x76D1, + 11370: 0x575A, + 11371: 0x5C16, + 11372: 0x7B3A, + 11373: 0x95F4, + 11374: 0x714E, + 11375: 0x517C, + 11376: 0x80A9, + 11377: 0x8270, + 11378: 0x5978, + 11379: 0x7F04, + 11380: 0x8327, + 11381: 0x68C0, + 11382: 0x67EC, + 11383: 0x78B1, + 11384: 0x7877, + 11385: 0x62E3, + 11386: 0x6361, + 11387: 0x7B80, + 11388: 0x4FED, + 11389: 0x526A, + 11390: 0x51CF, + 11391: 0x8350, + 11392: 0x69DB, + 11393: 0x9274, + 11394: 0x8DF5, + 11395: 0x8D31, + 11396: 0x89C1, + 11397: 0x952E, + 11398: 0x7BAD, + 11399: 0x4EF6, + 11400: 0x7D37, + 11401: 0x7D38, + 11402: 0x7D39, + 11403: 0x7D3A, + 11404: 0x7D3B, + 11405: 0x7D3C, + 11406: 0x7D3D, + 11407: 0x7D3E, + 11408: 0x7D3F, + 11409: 0x7D40, + 11410: 0x7D41, + 11411: 0x7D42, + 11412: 0x7D43, + 11413: 0x7D44, + 11414: 0x7D45, + 11415: 0x7D46, + 11416: 0x7D47, + 11417: 0x7D48, + 11418: 0x7D49, + 11419: 0x7D4A, + 11420: 0x7D4B, + 11421: 0x7D4C, + 11422: 0x7D4D, + 11423: 0x7D4E, + 11424: 0x7D4F, + 11425: 0x7D50, + 11426: 0x7D51, + 11427: 0x7D52, + 11428: 0x7D53, + 11429: 0x7D54, + 11430: 0x7D55, + 11431: 0x7D56, + 11432: 0x7D57, + 11433: 0x7D58, + 11434: 0x7D59, + 11435: 0x7D5A, + 11436: 0x7D5B, + 11437: 0x7D5C, + 11438: 0x7D5D, + 11439: 0x7D5E, + 11440: 0x7D5F, + 11441: 0x7D60, + 11442: 0x7D61, + 11443: 0x7D62, + 11444: 0x7D63, + 11445: 0x7D64, + 11446: 0x7D65, + 11447: 0x7D66, + 11448: 0x7D67, + 11449: 0x7D68, + 11450: 0x7D69, + 11451: 0x7D6A, + 11452: 0x7D6B, + 11453: 0x7D6C, + 11454: 0x7D6D, + 11455: 0x7D6F, + 11456: 0x7D70, + 11457: 0x7D71, + 11458: 0x7D72, + 11459: 0x7D73, + 11460: 0x7D74, + 11461: 0x7D75, + 11462: 0x7D76, + 11463: 0x7D78, + 11464: 0x7D79, + 11465: 0x7D7A, + 11466: 0x7D7B, + 11467: 0x7D7C, + 11468: 0x7D7D, + 11469: 0x7D7E, + 11470: 0x7D7F, + 11471: 0x7D80, + 11472: 0x7D81, + 11473: 0x7D82, + 11474: 0x7D83, + 11475: 0x7D84, + 11476: 0x7D85, + 11477: 0x7D86, + 11478: 0x7D87, + 11479: 0x7D88, + 11480: 0x7D89, + 11481: 0x7D8A, + 11482: 0x7D8B, + 11483: 0x7D8C, + 11484: 0x7D8D, + 11485: 0x7D8E, + 11486: 0x7D8F, + 11487: 0x7D90, + 11488: 0x7D91, + 11489: 0x7D92, + 11490: 0x7D93, + 11491: 0x7D94, + 11492: 0x7D95, + 11493: 0x7D96, + 11494: 0x7D97, + 11495: 0x7D98, + 11496: 0x5065, + 11497: 0x8230, + 11498: 0x5251, + 11499: 0x996F, + 11500: 0x6E10, + 11501: 0x6E85, + 11502: 0x6DA7, + 11503: 0x5EFA, + 11504: 0x50F5, + 11505: 0x59DC, + 11506: 0x5C06, + 11507: 0x6D46, + 11508: 0x6C5F, + 11509: 0x7586, + 11510: 0x848B, + 11511: 0x6868, + 11512: 0x5956, + 11513: 0x8BB2, + 11514: 0x5320, + 11515: 0x9171, + 11516: 0x964D, + 11517: 0x8549, + 11518: 0x6912, + 11519: 0x7901, + 11520: 0x7126, + 11521: 0x80F6, + 11522: 0x4EA4, + 11523: 0x90CA, + 11524: 0x6D47, + 11525: 0x9A84, + 11526: 0x5A07, + 11527: 0x56BC, + 11528: 0x6405, + 11529: 0x94F0, + 11530: 0x77EB, + 11531: 0x4FA5, + 11532: 0x811A, + 11533: 0x72E1, + 11534: 0x89D2, + 11535: 0x997A, + 11536: 0x7F34, + 11537: 0x7EDE, + 11538: 0x527F, + 11539: 0x6559, + 11540: 0x9175, + 11541: 0x8F7F, + 11542: 0x8F83, + 11543: 0x53EB, + 11544: 0x7A96, + 11545: 0x63ED, + 11546: 0x63A5, + 11547: 0x7686, + 11548: 0x79F8, + 11549: 0x8857, + 11550: 0x9636, + 11551: 0x622A, + 11552: 0x52AB, + 11553: 0x8282, + 11554: 0x6854, + 11555: 0x6770, + 11556: 0x6377, + 11557: 0x776B, + 11558: 0x7AED, + 11559: 0x6D01, + 11560: 0x7ED3, + 11561: 0x89E3, + 11562: 0x59D0, + 11563: 0x6212, + 11564: 0x85C9, + 11565: 0x82A5, + 11566: 0x754C, + 11567: 0x501F, + 11568: 0x4ECB, + 11569: 0x75A5, + 11570: 0x8BEB, + 11571: 0x5C4A, + 11572: 0x5DFE, + 11573: 0x7B4B, + 11574: 0x65A4, + 11575: 0x91D1, + 11576: 0x4ECA, + 11577: 0x6D25, + 11578: 0x895F, + 11579: 0x7D27, + 11580: 0x9526, + 11581: 0x4EC5, + 11582: 0x8C28, + 11583: 0x8FDB, + 11584: 0x9773, + 11585: 0x664B, + 11586: 0x7981, + 11587: 0x8FD1, + 11588: 0x70EC, + 11589: 0x6D78, + 11590: 0x7D99, + 11591: 0x7D9A, + 11592: 0x7D9B, + 11593: 0x7D9C, + 11594: 0x7D9D, + 11595: 0x7D9E, + 11596: 0x7D9F, + 11597: 0x7DA0, + 11598: 0x7DA1, + 11599: 0x7DA2, + 11600: 0x7DA3, + 11601: 0x7DA4, + 11602: 0x7DA5, + 11603: 0x7DA7, + 11604: 0x7DA8, + 11605: 0x7DA9, + 11606: 0x7DAA, + 11607: 0x7DAB, + 11608: 0x7DAC, + 11609: 0x7DAD, + 11610: 0x7DAF, + 11611: 0x7DB0, + 11612: 0x7DB1, + 11613: 0x7DB2, + 11614: 0x7DB3, + 11615: 0x7DB4, + 11616: 0x7DB5, + 11617: 0x7DB6, + 11618: 0x7DB7, + 11619: 0x7DB8, + 11620: 0x7DB9, + 11621: 0x7DBA, + 11622: 0x7DBB, + 11623: 0x7DBC, + 11624: 0x7DBD, + 11625: 0x7DBE, + 11626: 0x7DBF, + 11627: 0x7DC0, + 11628: 0x7DC1, + 11629: 0x7DC2, + 11630: 0x7DC3, + 11631: 0x7DC4, + 11632: 0x7DC5, + 11633: 0x7DC6, + 11634: 0x7DC7, + 11635: 0x7DC8, + 11636: 0x7DC9, + 11637: 0x7DCA, + 11638: 0x7DCB, + 11639: 0x7DCC, + 11640: 0x7DCD, + 11641: 0x7DCE, + 11642: 0x7DCF, + 11643: 0x7DD0, + 11644: 0x7DD1, + 11645: 0x7DD2, + 11646: 0x7DD3, + 11647: 0x7DD4, + 11648: 0x7DD5, + 11649: 0x7DD6, + 11650: 0x7DD7, + 11651: 0x7DD8, + 11652: 0x7DD9, + 11653: 0x7DDA, + 11654: 0x7DDB, + 11655: 0x7DDC, + 11656: 0x7DDD, + 11657: 0x7DDE, + 11658: 0x7DDF, + 11659: 0x7DE0, + 11660: 0x7DE1, + 11661: 0x7DE2, + 11662: 0x7DE3, + 11663: 0x7DE4, + 11664: 0x7DE5, + 11665: 0x7DE6, + 11666: 0x7DE7, + 11667: 0x7DE8, + 11668: 0x7DE9, + 11669: 0x7DEA, + 11670: 0x7DEB, + 11671: 0x7DEC, + 11672: 0x7DED, + 11673: 0x7DEE, + 11674: 0x7DEF, + 11675: 0x7DF0, + 11676: 0x7DF1, + 11677: 0x7DF2, + 11678: 0x7DF3, + 11679: 0x7DF4, + 11680: 0x7DF5, + 11681: 0x7DF6, + 11682: 0x7DF7, + 11683: 0x7DF8, + 11684: 0x7DF9, + 11685: 0x7DFA, + 11686: 0x5C3D, + 11687: 0x52B2, + 11688: 0x8346, + 11689: 0x5162, + 11690: 0x830E, + 11691: 0x775B, + 11692: 0x6676, + 11693: 0x9CB8, + 11694: 0x4EAC, + 11695: 0x60CA, + 11696: 0x7CBE, + 11697: 0x7CB3, + 11698: 0x7ECF, + 11699: 0x4E95, + 11700: 0x8B66, + 11701: 0x666F, + 11702: 0x9888, + 11703: 0x9759, + 11704: 0x5883, + 11705: 0x656C, + 11706: 0x955C, + 11707: 0x5F84, + 11708: 0x75C9, + 11709: 0x9756, + 11710: 0x7ADF, + 11711: 0x7ADE, + 11712: 0x51C0, + 11713: 0x70AF, + 11714: 0x7A98, + 11715: 0x63EA, + 11716: 0x7A76, + 11717: 0x7EA0, + 11718: 0x7396, + 11719: 0x97ED, + 11720: 0x4E45, + 11721: 0x7078, + 11722: 0x4E5D, + 11723: 0x9152, + 11724: 0x53A9, + 11725: 0x6551, + 11726: 0x65E7, + 11727: 0x81FC, + 11728: 0x8205, + 11729: 0x548E, + 11730: 0x5C31, + 11731: 0x759A, + 11732: 0x97A0, + 11733: 0x62D8, + 11734: 0x72D9, + 11735: 0x75BD, + 11736: 0x5C45, + 11737: 0x9A79, + 11738: 0x83CA, + 11739: 0x5C40, + 11740: 0x5480, + 11741: 0x77E9, + 11742: 0x4E3E, + 11743: 0x6CAE, + 11744: 0x805A, + 11745: 0x62D2, + 11746: 0x636E, + 11747: 0x5DE8, + 11748: 0x5177, + 11749: 0x8DDD, + 11750: 0x8E1E, + 11751: 0x952F, + 11752: 0x4FF1, + 11753: 0x53E5, + 11754: 0x60E7, + 11755: 0x70AC, + 11756: 0x5267, + 11757: 0x6350, + 11758: 0x9E43, + 11759: 0x5A1F, + 11760: 0x5026, + 11761: 0x7737, + 11762: 0x5377, + 11763: 0x7EE2, + 11764: 0x6485, + 11765: 0x652B, + 11766: 0x6289, + 11767: 0x6398, + 11768: 0x5014, + 11769: 0x7235, + 11770: 0x89C9, + 11771: 0x51B3, + 11772: 0x8BC0, + 11773: 0x7EDD, + 11774: 0x5747, + 11775: 0x83CC, + 11776: 0x94A7, + 11777: 0x519B, + 11778: 0x541B, + 11779: 0x5CFB, + 11780: 0x7DFB, + 11781: 0x7DFC, + 11782: 0x7DFD, + 11783: 0x7DFE, + 11784: 0x7DFF, + 11785: 0x7E00, + 11786: 0x7E01, + 11787: 0x7E02, + 11788: 0x7E03, + 11789: 0x7E04, + 11790: 0x7E05, + 11791: 0x7E06, + 11792: 0x7E07, + 11793: 0x7E08, + 11794: 0x7E09, + 11795: 0x7E0A, + 11796: 0x7E0B, + 11797: 0x7E0C, + 11798: 0x7E0D, + 11799: 0x7E0E, + 11800: 0x7E0F, + 11801: 0x7E10, + 11802: 0x7E11, + 11803: 0x7E12, + 11804: 0x7E13, + 11805: 0x7E14, + 11806: 0x7E15, + 11807: 0x7E16, + 11808: 0x7E17, + 11809: 0x7E18, + 11810: 0x7E19, + 11811: 0x7E1A, + 11812: 0x7E1B, + 11813: 0x7E1C, + 11814: 0x7E1D, + 11815: 0x7E1E, + 11816: 0x7E1F, + 11817: 0x7E20, + 11818: 0x7E21, + 11819: 0x7E22, + 11820: 0x7E23, + 11821: 0x7E24, + 11822: 0x7E25, + 11823: 0x7E26, + 11824: 0x7E27, + 11825: 0x7E28, + 11826: 0x7E29, + 11827: 0x7E2A, + 11828: 0x7E2B, + 11829: 0x7E2C, + 11830: 0x7E2D, + 11831: 0x7E2E, + 11832: 0x7E2F, + 11833: 0x7E30, + 11834: 0x7E31, + 11835: 0x7E32, + 11836: 0x7E33, + 11837: 0x7E34, + 11838: 0x7E35, + 11839: 0x7E36, + 11840: 0x7E37, + 11841: 0x7E38, + 11842: 0x7E39, + 11843: 0x7E3A, + 11844: 0x7E3C, + 11845: 0x7E3D, + 11846: 0x7E3E, + 11847: 0x7E3F, + 11848: 0x7E40, + 11849: 0x7E42, + 11850: 0x7E43, + 11851: 0x7E44, + 11852: 0x7E45, + 11853: 0x7E46, + 11854: 0x7E48, + 11855: 0x7E49, + 11856: 0x7E4A, + 11857: 0x7E4B, + 11858: 0x7E4C, + 11859: 0x7E4D, + 11860: 0x7E4E, + 11861: 0x7E4F, + 11862: 0x7E50, + 11863: 0x7E51, + 11864: 0x7E52, + 11865: 0x7E53, + 11866: 0x7E54, + 11867: 0x7E55, + 11868: 0x7E56, + 11869: 0x7E57, + 11870: 0x7E58, + 11871: 0x7E59, + 11872: 0x7E5A, + 11873: 0x7E5B, + 11874: 0x7E5C, + 11875: 0x7E5D, + 11876: 0x4FCA, + 11877: 0x7AE3, + 11878: 0x6D5A, + 11879: 0x90E1, + 11880: 0x9A8F, + 11881: 0x5580, + 11882: 0x5496, + 11883: 0x5361, + 11884: 0x54AF, + 11885: 0x5F00, + 11886: 0x63E9, + 11887: 0x6977, + 11888: 0x51EF, + 11889: 0x6168, + 11890: 0x520A, + 11891: 0x582A, + 11892: 0x52D8, + 11893: 0x574E, + 11894: 0x780D, + 11895: 0x770B, + 11896: 0x5EB7, + 11897: 0x6177, + 11898: 0x7CE0, + 11899: 0x625B, + 11900: 0x6297, + 11901: 0x4EA2, + 11902: 0x7095, + 11903: 0x8003, + 11904: 0x62F7, + 11905: 0x70E4, + 11906: 0x9760, + 11907: 0x5777, + 11908: 0x82DB, + 11909: 0x67EF, + 11910: 0x68F5, + 11911: 0x78D5, + 11912: 0x9897, + 11913: 0x79D1, + 11914: 0x58F3, + 11915: 0x54B3, + 11916: 0x53EF, + 11917: 0x6E34, + 11918: 0x514B, + 11919: 0x523B, + 11920: 0x5BA2, + 11921: 0x8BFE, + 11922: 0x80AF, + 11923: 0x5543, + 11924: 0x57A6, + 11925: 0x6073, + 11926: 0x5751, + 11927: 0x542D, + 11928: 0x7A7A, + 11929: 0x6050, + 11930: 0x5B54, + 11931: 0x63A7, + 11932: 0x62A0, + 11933: 0x53E3, + 11934: 0x6263, + 11935: 0x5BC7, + 11936: 0x67AF, + 11937: 0x54ED, + 11938: 0x7A9F, + 11939: 0x82E6, + 11940: 0x9177, + 11941: 0x5E93, + 11942: 0x88E4, + 11943: 0x5938, + 11944: 0x57AE, + 11945: 0x630E, + 11946: 0x8DE8, + 11947: 0x80EF, + 11948: 0x5757, + 11949: 0x7B77, + 11950: 0x4FA9, + 11951: 0x5FEB, + 11952: 0x5BBD, + 11953: 0x6B3E, + 11954: 0x5321, + 11955: 0x7B50, + 11956: 0x72C2, + 11957: 0x6846, + 11958: 0x77FF, + 11959: 0x7736, + 11960: 0x65F7, + 11961: 0x51B5, + 11962: 0x4E8F, + 11963: 0x76D4, + 11964: 0x5CBF, + 11965: 0x7AA5, + 11966: 0x8475, + 11967: 0x594E, + 11968: 0x9B41, + 11969: 0x5080, + 11970: 0x7E5E, + 11971: 0x7E5F, + 11972: 0x7E60, + 11973: 0x7E61, + 11974: 0x7E62, + 11975: 0x7E63, + 11976: 0x7E64, + 11977: 0x7E65, + 11978: 0x7E66, + 11979: 0x7E67, + 11980: 0x7E68, + 11981: 0x7E69, + 11982: 0x7E6A, + 11983: 0x7E6B, + 11984: 0x7E6C, + 11985: 0x7E6D, + 11986: 0x7E6E, + 11987: 0x7E6F, + 11988: 0x7E70, + 11989: 0x7E71, + 11990: 0x7E72, + 11991: 0x7E73, + 11992: 0x7E74, + 11993: 0x7E75, + 11994: 0x7E76, + 11995: 0x7E77, + 11996: 0x7E78, + 11997: 0x7E79, + 11998: 0x7E7A, + 11999: 0x7E7B, + 12000: 0x7E7C, + 12001: 0x7E7D, + 12002: 0x7E7E, + 12003: 0x7E7F, + 12004: 0x7E80, + 12005: 0x7E81, + 12006: 0x7E83, + 12007: 0x7E84, + 12008: 0x7E85, + 12009: 0x7E86, + 12010: 0x7E87, + 12011: 0x7E88, + 12012: 0x7E89, + 12013: 0x7E8A, + 12014: 0x7E8B, + 12015: 0x7E8C, + 12016: 0x7E8D, + 12017: 0x7E8E, + 12018: 0x7E8F, + 12019: 0x7E90, + 12020: 0x7E91, + 12021: 0x7E92, + 12022: 0x7E93, + 12023: 0x7E94, + 12024: 0x7E95, + 12025: 0x7E96, + 12026: 0x7E97, + 12027: 0x7E98, + 12028: 0x7E99, + 12029: 0x7E9A, + 12030: 0x7E9C, + 12031: 0x7E9D, + 12032: 0x7E9E, + 12033: 0x7EAE, + 12034: 0x7EB4, + 12035: 0x7EBB, + 12036: 0x7EBC, + 12037: 0x7ED6, + 12038: 0x7EE4, + 12039: 0x7EEC, + 12040: 0x7EF9, + 12041: 0x7F0A, + 12042: 0x7F10, + 12043: 0x7F1E, + 12044: 0x7F37, + 12045: 0x7F39, + 12046: 0x7F3B, + 12047: 0x7F3C, + 12048: 0x7F3D, + 12049: 0x7F3E, + 12050: 0x7F3F, + 12051: 0x7F40, + 12052: 0x7F41, + 12053: 0x7F43, + 12054: 0x7F46, + 12055: 0x7F47, + 12056: 0x7F48, + 12057: 0x7F49, + 12058: 0x7F4A, + 12059: 0x7F4B, + 12060: 0x7F4C, + 12061: 0x7F4D, + 12062: 0x7F4E, + 12063: 0x7F4F, + 12064: 0x7F52, + 12065: 0x7F53, + 12066: 0x9988, + 12067: 0x6127, + 12068: 0x6E83, + 12069: 0x5764, + 12070: 0x6606, + 12071: 0x6346, + 12072: 0x56F0, + 12073: 0x62EC, + 12074: 0x6269, + 12075: 0x5ED3, + 12076: 0x9614, + 12077: 0x5783, + 12078: 0x62C9, + 12079: 0x5587, + 12080: 0x8721, + 12081: 0x814A, + 12082: 0x8FA3, + 12083: 0x5566, + 12084: 0x83B1, + 12085: 0x6765, + 12086: 0x8D56, + 12087: 0x84DD, + 12088: 0x5A6A, + 12089: 0x680F, + 12090: 0x62E6, + 12091: 0x7BEE, + 12092: 0x9611, + 12093: 0x5170, + 12094: 0x6F9C, + 12095: 0x8C30, + 12096: 0x63FD, + 12097: 0x89C8, + 12098: 0x61D2, + 12099: 0x7F06, + 12100: 0x70C2, + 12101: 0x6EE5, + 12102: 0x7405, + 12103: 0x6994, + 12104: 0x72FC, + 12105: 0x5ECA, + 12106: 0x90CE, + 12107: 0x6717, + 12108: 0x6D6A, + 12109: 0x635E, + 12110: 0x52B3, + 12111: 0x7262, + 12112: 0x8001, + 12113: 0x4F6C, + 12114: 0x59E5, + 12115: 0x916A, + 12116: 0x70D9, + 12117: 0x6D9D, + 12118: 0x52D2, + 12119: 0x4E50, + 12120: 0x96F7, + 12121: 0x956D, + 12122: 0x857E, + 12123: 0x78CA, + 12124: 0x7D2F, + 12125: 0x5121, + 12126: 0x5792, + 12127: 0x64C2, + 12128: 0x808B, + 12129: 0x7C7B, + 12130: 0x6CEA, + 12131: 0x68F1, + 12132: 0x695E, + 12133: 0x51B7, + 12134: 0x5398, + 12135: 0x68A8, + 12136: 0x7281, + 12137: 0x9ECE, + 12138: 0x7BF1, + 12139: 0x72F8, + 12140: 0x79BB, + 12141: 0x6F13, + 12142: 0x7406, + 12143: 0x674E, + 12144: 0x91CC, + 12145: 0x9CA4, + 12146: 0x793C, + 12147: 0x8389, + 12148: 0x8354, + 12149: 0x540F, + 12150: 0x6817, + 12151: 0x4E3D, + 12152: 0x5389, + 12153: 0x52B1, + 12154: 0x783E, + 12155: 0x5386, + 12156: 0x5229, + 12157: 0x5088, + 12158: 0x4F8B, + 12159: 0x4FD0, + 12160: 0x7F56, + 12161: 0x7F59, + 12162: 0x7F5B, + 12163: 0x7F5C, + 12164: 0x7F5D, + 12165: 0x7F5E, + 12166: 0x7F60, + 12167: 0x7F63, + 12168: 0x7F64, + 12169: 0x7F65, + 12170: 0x7F66, + 12171: 0x7F67, + 12172: 0x7F6B, + 12173: 0x7F6C, + 12174: 0x7F6D, + 12175: 0x7F6F, + 12176: 0x7F70, + 12177: 0x7F73, + 12178: 0x7F75, + 12179: 0x7F76, + 12180: 0x7F77, + 12181: 0x7F78, + 12182: 0x7F7A, + 12183: 0x7F7B, + 12184: 0x7F7C, + 12185: 0x7F7D, + 12186: 0x7F7F, + 12187: 0x7F80, + 12188: 0x7F82, + 12189: 0x7F83, + 12190: 0x7F84, + 12191: 0x7F85, + 12192: 0x7F86, + 12193: 0x7F87, + 12194: 0x7F88, + 12195: 0x7F89, + 12196: 0x7F8B, + 12197: 0x7F8D, + 12198: 0x7F8F, + 12199: 0x7F90, + 12200: 0x7F91, + 12201: 0x7F92, + 12202: 0x7F93, + 12203: 0x7F95, + 12204: 0x7F96, + 12205: 0x7F97, + 12206: 0x7F98, + 12207: 0x7F99, + 12208: 0x7F9B, + 12209: 0x7F9C, + 12210: 0x7FA0, + 12211: 0x7FA2, + 12212: 0x7FA3, + 12213: 0x7FA5, + 12214: 0x7FA6, + 12215: 0x7FA8, + 12216: 0x7FA9, + 12217: 0x7FAA, + 12218: 0x7FAB, + 12219: 0x7FAC, + 12220: 0x7FAD, + 12221: 0x7FAE, + 12222: 0x7FB1, + 12223: 0x7FB3, + 12224: 0x7FB4, + 12225: 0x7FB5, + 12226: 0x7FB6, + 12227: 0x7FB7, + 12228: 0x7FBA, + 12229: 0x7FBB, + 12230: 0x7FBE, + 12231: 0x7FC0, + 12232: 0x7FC2, + 12233: 0x7FC3, + 12234: 0x7FC4, + 12235: 0x7FC6, + 12236: 0x7FC7, + 12237: 0x7FC8, + 12238: 0x7FC9, + 12239: 0x7FCB, + 12240: 0x7FCD, + 12241: 0x7FCF, + 12242: 0x7FD0, + 12243: 0x7FD1, + 12244: 0x7FD2, + 12245: 0x7FD3, + 12246: 0x7FD6, + 12247: 0x7FD7, + 12248: 0x7FD9, + 12249: 0x7FDA, + 12250: 0x7FDB, + 12251: 0x7FDC, + 12252: 0x7FDD, + 12253: 0x7FDE, + 12254: 0x7FE2, + 12255: 0x7FE3, + 12256: 0x75E2, + 12257: 0x7ACB, + 12258: 0x7C92, + 12259: 0x6CA5, + 12260: 0x96B6, + 12261: 0x529B, + 12262: 0x7483, + 12263: 0x54E9, + 12264: 0x4FE9, + 12265: 0x8054, + 12266: 0x83B2, + 12267: 0x8FDE, + 12268: 0x9570, + 12269: 0x5EC9, + 12270: 0x601C, + 12271: 0x6D9F, + 12272: 0x5E18, + 12273: 0x655B, + 12274: 0x8138, + 12275: 0x94FE, + 12276: 0x604B, + 12277: 0x70BC, + 12278: 0x7EC3, + 12279: 0x7CAE, + 12280: 0x51C9, + 12281: 0x6881, + 12282: 0x7CB1, + 12283: 0x826F, + 12284: 0x4E24, + 12285: 0x8F86, + 12286: 0x91CF, + 12287: 0x667E, + 12288: 0x4EAE, + 12289: 0x8C05, + 12290: 0x64A9, + 12291: 0x804A, + 12292: 0x50DA, + 12293: 0x7597, + 12294: 0x71CE, + 12295: 0x5BE5, + 12296: 0x8FBD, + 12297: 0x6F66, + 12298: 0x4E86, + 12299: 0x6482, + 12300: 0x9563, + 12301: 0x5ED6, + 12302: 0x6599, + 12303: 0x5217, + 12304: 0x88C2, + 12305: 0x70C8, + 12306: 0x52A3, + 12307: 0x730E, + 12308: 0x7433, + 12309: 0x6797, + 12310: 0x78F7, + 12311: 0x9716, + 12312: 0x4E34, + 12313: 0x90BB, + 12314: 0x9CDE, + 12315: 0x6DCB, + 12316: 0x51DB, + 12317: 0x8D41, + 12318: 0x541D, + 12319: 0x62CE, + 12320: 0x73B2, + 12321: 0x83F1, + 12322: 0x96F6, + 12323: 0x9F84, + 12324: 0x94C3, + 12325: 0x4F36, + 12326: 0x7F9A, + 12327: 0x51CC, + 12328: 0x7075, + 12329: 0x9675, + 12330: 0x5CAD, + 12331: 0x9886, + 12332: 0x53E6, + 12333: 0x4EE4, + 12334: 0x6E9C, + 12335: 0x7409, + 12336: 0x69B4, + 12337: 0x786B, + 12338: 0x998F, + 12339: 0x7559, + 12340: 0x5218, + 12341: 0x7624, + 12342: 0x6D41, + 12343: 0x67F3, + 12344: 0x516D, + 12345: 0x9F99, + 12346: 0x804B, + 12347: 0x5499, + 12348: 0x7B3C, + 12349: 0x7ABF, + 12350: 0x7FE4, + 12351: 0x7FE7, + 12352: 0x7FE8, + 12353: 0x7FEA, + 12354: 0x7FEB, + 12355: 0x7FEC, + 12356: 0x7FED, + 12357: 0x7FEF, + 12358: 0x7FF2, + 12359: 0x7FF4, + 12360: 0x7FF5, + 12361: 0x7FF6, + 12362: 0x7FF7, + 12363: 0x7FF8, + 12364: 0x7FF9, + 12365: 0x7FFA, + 12366: 0x7FFD, + 12367: 0x7FFE, + 12368: 0x7FFF, + 12369: 0x8002, + 12370: 0x8007, + 12371: 0x8008, + 12372: 0x8009, + 12373: 0x800A, + 12374: 0x800E, + 12375: 0x800F, + 12376: 0x8011, + 12377: 0x8013, + 12378: 0x801A, + 12379: 0x801B, + 12380: 0x801D, + 12381: 0x801E, + 12382: 0x801F, + 12383: 0x8021, + 12384: 0x8023, + 12385: 0x8024, + 12386: 0x802B, + 12387: 0x802C, + 12388: 0x802D, + 12389: 0x802E, + 12390: 0x802F, + 12391: 0x8030, + 12392: 0x8032, + 12393: 0x8034, + 12394: 0x8039, + 12395: 0x803A, + 12396: 0x803C, + 12397: 0x803E, + 12398: 0x8040, + 12399: 0x8041, + 12400: 0x8044, + 12401: 0x8045, + 12402: 0x8047, + 12403: 0x8048, + 12404: 0x8049, + 12405: 0x804E, + 12406: 0x804F, + 12407: 0x8050, + 12408: 0x8051, + 12409: 0x8053, + 12410: 0x8055, + 12411: 0x8056, + 12412: 0x8057, + 12413: 0x8059, + 12414: 0x805B, + 12415: 0x805C, + 12416: 0x805D, + 12417: 0x805E, + 12418: 0x805F, + 12419: 0x8060, + 12420: 0x8061, + 12421: 0x8062, + 12422: 0x8063, + 12423: 0x8064, + 12424: 0x8065, + 12425: 0x8066, + 12426: 0x8067, + 12427: 0x8068, + 12428: 0x806B, + 12429: 0x806C, + 12430: 0x806D, + 12431: 0x806E, + 12432: 0x806F, + 12433: 0x8070, + 12434: 0x8072, + 12435: 0x8073, + 12436: 0x8074, + 12437: 0x8075, + 12438: 0x8076, + 12439: 0x8077, + 12440: 0x8078, + 12441: 0x8079, + 12442: 0x807A, + 12443: 0x807B, + 12444: 0x807C, + 12445: 0x807D, + 12446: 0x9686, + 12447: 0x5784, + 12448: 0x62E2, + 12449: 0x9647, + 12450: 0x697C, + 12451: 0x5A04, + 12452: 0x6402, + 12453: 0x7BD3, + 12454: 0x6F0F, + 12455: 0x964B, + 12456: 0x82A6, + 12457: 0x5362, + 12458: 0x9885, + 12459: 0x5E90, + 12460: 0x7089, + 12461: 0x63B3, + 12462: 0x5364, + 12463: 0x864F, + 12464: 0x9C81, + 12465: 0x9E93, + 12466: 0x788C, + 12467: 0x9732, + 12468: 0x8DEF, + 12469: 0x8D42, + 12470: 0x9E7F, + 12471: 0x6F5E, + 12472: 0x7984, + 12473: 0x5F55, + 12474: 0x9646, + 12475: 0x622E, + 12476: 0x9A74, + 12477: 0x5415, + 12478: 0x94DD, + 12479: 0x4FA3, + 12480: 0x65C5, + 12481: 0x5C65, + 12482: 0x5C61, + 12483: 0x7F15, + 12484: 0x8651, + 12485: 0x6C2F, + 12486: 0x5F8B, + 12487: 0x7387, + 12488: 0x6EE4, + 12489: 0x7EFF, + 12490: 0x5CE6, + 12491: 0x631B, + 12492: 0x5B6A, + 12493: 0x6EE6, + 12494: 0x5375, + 12495: 0x4E71, + 12496: 0x63A0, + 12497: 0x7565, + 12498: 0x62A1, + 12499: 0x8F6E, + 12500: 0x4F26, + 12501: 0x4ED1, + 12502: 0x6CA6, + 12503: 0x7EB6, + 12504: 0x8BBA, + 12505: 0x841D, + 12506: 0x87BA, + 12507: 0x7F57, + 12508: 0x903B, + 12509: 0x9523, + 12510: 0x7BA9, + 12511: 0x9AA1, + 12512: 0x88F8, + 12513: 0x843D, + 12514: 0x6D1B, + 12515: 0x9A86, + 12516: 0x7EDC, + 12517: 0x5988, + 12518: 0x9EBB, + 12519: 0x739B, + 12520: 0x7801, + 12521: 0x8682, + 12522: 0x9A6C, + 12523: 0x9A82, + 12524: 0x561B, + 12525: 0x5417, + 12526: 0x57CB, + 12527: 0x4E70, + 12528: 0x9EA6, + 12529: 0x5356, + 12530: 0x8FC8, + 12531: 0x8109, + 12532: 0x7792, + 12533: 0x9992, + 12534: 0x86EE, + 12535: 0x6EE1, + 12536: 0x8513, + 12537: 0x66FC, + 12538: 0x6162, + 12539: 0x6F2B, + 12540: 0x807E, + 12541: 0x8081, + 12542: 0x8082, + 12543: 0x8085, + 12544: 0x8088, + 12545: 0x808A, + 12546: 0x808D, + 12547: 0x808E, + 12548: 0x808F, + 12549: 0x8090, + 12550: 0x8091, + 12551: 0x8092, + 12552: 0x8094, + 12553: 0x8095, + 12554: 0x8097, + 12555: 0x8099, + 12556: 0x809E, + 12557: 0x80A3, + 12558: 0x80A6, + 12559: 0x80A7, + 12560: 0x80A8, + 12561: 0x80AC, + 12562: 0x80B0, + 12563: 0x80B3, + 12564: 0x80B5, + 12565: 0x80B6, + 12566: 0x80B8, + 12567: 0x80B9, + 12568: 0x80BB, + 12569: 0x80C5, + 12570: 0x80C7, + 12571: 0x80C8, + 12572: 0x80C9, + 12573: 0x80CA, + 12574: 0x80CB, + 12575: 0x80CF, + 12576: 0x80D0, + 12577: 0x80D1, + 12578: 0x80D2, + 12579: 0x80D3, + 12580: 0x80D4, + 12581: 0x80D5, + 12582: 0x80D8, + 12583: 0x80DF, + 12584: 0x80E0, + 12585: 0x80E2, + 12586: 0x80E3, + 12587: 0x80E6, + 12588: 0x80EE, + 12589: 0x80F5, + 12590: 0x80F7, + 12591: 0x80F9, + 12592: 0x80FB, + 12593: 0x80FE, + 12594: 0x80FF, + 12595: 0x8100, + 12596: 0x8101, + 12597: 0x8103, + 12598: 0x8104, + 12599: 0x8105, + 12600: 0x8107, + 12601: 0x8108, + 12602: 0x810B, + 12603: 0x810C, + 12604: 0x8115, + 12605: 0x8117, + 12606: 0x8119, + 12607: 0x811B, + 12608: 0x811C, + 12609: 0x811D, + 12610: 0x811F, + 12611: 0x8120, + 12612: 0x8121, + 12613: 0x8122, + 12614: 0x8123, + 12615: 0x8124, + 12616: 0x8125, + 12617: 0x8126, + 12618: 0x8127, + 12619: 0x8128, + 12620: 0x8129, + 12621: 0x812A, + 12622: 0x812B, + 12623: 0x812D, + 12624: 0x812E, + 12625: 0x8130, + 12626: 0x8133, + 12627: 0x8134, + 12628: 0x8135, + 12629: 0x8137, + 12630: 0x8139, + 12631: 0x813A, + 12632: 0x813B, + 12633: 0x813C, + 12634: 0x813D, + 12635: 0x813F, + 12636: 0x8C29, + 12637: 0x8292, + 12638: 0x832B, + 12639: 0x76F2, + 12640: 0x6C13, + 12641: 0x5FD9, + 12642: 0x83BD, + 12643: 0x732B, + 12644: 0x8305, + 12645: 0x951A, + 12646: 0x6BDB, + 12647: 0x77DB, + 12648: 0x94C6, + 12649: 0x536F, + 12650: 0x8302, + 12651: 0x5192, + 12652: 0x5E3D, + 12653: 0x8C8C, + 12654: 0x8D38, + 12655: 0x4E48, + 12656: 0x73AB, + 12657: 0x679A, + 12658: 0x6885, + 12659: 0x9176, + 12660: 0x9709, + 12661: 0x7164, + 12662: 0x6CA1, + 12663: 0x7709, + 12664: 0x5A92, + 12665: 0x9541, + 12666: 0x6BCF, + 12667: 0x7F8E, + 12668: 0x6627, + 12669: 0x5BD0, + 12670: 0x59B9, + 12671: 0x5A9A, + 12672: 0x95E8, + 12673: 0x95F7, + 12674: 0x4EEC, + 12675: 0x840C, + 12676: 0x8499, + 12677: 0x6AAC, + 12678: 0x76DF, + 12679: 0x9530, + 12680: 0x731B, + 12681: 0x68A6, + 12682: 0x5B5F, + 12683: 0x772F, + 12684: 0x919A, + 12685: 0x9761, + 12686: 0x7CDC, + 12687: 0x8FF7, + 12688: 0x8C1C, + 12689: 0x5F25, + 12690: 0x7C73, + 12691: 0x79D8, + 12692: 0x89C5, + 12693: 0x6CCC, + 12694: 0x871C, + 12695: 0x5BC6, + 12696: 0x5E42, + 12697: 0x68C9, + 12698: 0x7720, + 12699: 0x7EF5, + 12700: 0x5195, + 12701: 0x514D, + 12702: 0x52C9, + 12703: 0x5A29, + 12704: 0x7F05, + 12705: 0x9762, + 12706: 0x82D7, + 12707: 0x63CF, + 12708: 0x7784, + 12709: 0x85D0, + 12710: 0x79D2, + 12711: 0x6E3A, + 12712: 0x5E99, + 12713: 0x5999, + 12714: 0x8511, + 12715: 0x706D, + 12716: 0x6C11, + 12717: 0x62BF, + 12718: 0x76BF, + 12719: 0x654F, + 12720: 0x60AF, + 12721: 0x95FD, + 12722: 0x660E, + 12723: 0x879F, + 12724: 0x9E23, + 12725: 0x94ED, + 12726: 0x540D, + 12727: 0x547D, + 12728: 0x8C2C, + 12729: 0x6478, + 12730: 0x8140, + 12731: 0x8141, + 12732: 0x8142, + 12733: 0x8143, + 12734: 0x8144, + 12735: 0x8145, + 12736: 0x8147, + 12737: 0x8149, + 12738: 0x814D, + 12739: 0x814E, + 12740: 0x814F, + 12741: 0x8152, + 12742: 0x8156, + 12743: 0x8157, + 12744: 0x8158, + 12745: 0x815B, + 12746: 0x815C, + 12747: 0x815D, + 12748: 0x815E, + 12749: 0x815F, + 12750: 0x8161, + 12751: 0x8162, + 12752: 0x8163, + 12753: 0x8164, + 12754: 0x8166, + 12755: 0x8168, + 12756: 0x816A, + 12757: 0x816B, + 12758: 0x816C, + 12759: 0x816F, + 12760: 0x8172, + 12761: 0x8173, + 12762: 0x8175, + 12763: 0x8176, + 12764: 0x8177, + 12765: 0x8178, + 12766: 0x8181, + 12767: 0x8183, + 12768: 0x8184, + 12769: 0x8185, + 12770: 0x8186, + 12771: 0x8187, + 12772: 0x8189, + 12773: 0x818B, + 12774: 0x818C, + 12775: 0x818D, + 12776: 0x818E, + 12777: 0x8190, + 12778: 0x8192, + 12779: 0x8193, + 12780: 0x8194, + 12781: 0x8195, + 12782: 0x8196, + 12783: 0x8197, + 12784: 0x8199, + 12785: 0x819A, + 12786: 0x819E, + 12787: 0x819F, + 12788: 0x81A0, + 12789: 0x81A1, + 12790: 0x81A2, + 12791: 0x81A4, + 12792: 0x81A5, + 12793: 0x81A7, + 12794: 0x81A9, + 12795: 0x81AB, + 12796: 0x81AC, + 12797: 0x81AD, + 12798: 0x81AE, + 12799: 0x81AF, + 12800: 0x81B0, + 12801: 0x81B1, + 12802: 0x81B2, + 12803: 0x81B4, + 12804: 0x81B5, + 12805: 0x81B6, + 12806: 0x81B7, + 12807: 0x81B8, + 12808: 0x81B9, + 12809: 0x81BC, + 12810: 0x81BD, + 12811: 0x81BE, + 12812: 0x81BF, + 12813: 0x81C4, + 12814: 0x81C5, + 12815: 0x81C7, + 12816: 0x81C8, + 12817: 0x81C9, + 12818: 0x81CB, + 12819: 0x81CD, + 12820: 0x81CE, + 12821: 0x81CF, + 12822: 0x81D0, + 12823: 0x81D1, + 12824: 0x81D2, + 12825: 0x81D3, + 12826: 0x6479, + 12827: 0x8611, + 12828: 0x6A21, + 12829: 0x819C, + 12830: 0x78E8, + 12831: 0x6469, + 12832: 0x9B54, + 12833: 0x62B9, + 12834: 0x672B, + 12835: 0x83AB, + 12836: 0x58A8, + 12837: 0x9ED8, + 12838: 0x6CAB, + 12839: 0x6F20, + 12840: 0x5BDE, + 12841: 0x964C, + 12842: 0x8C0B, + 12843: 0x725F, + 12844: 0x67D0, + 12845: 0x62C7, + 12846: 0x7261, + 12847: 0x4EA9, + 12848: 0x59C6, + 12849: 0x6BCD, + 12850: 0x5893, + 12851: 0x66AE, + 12852: 0x5E55, + 12853: 0x52DF, + 12854: 0x6155, + 12855: 0x6728, + 12856: 0x76EE, + 12857: 0x7766, + 12858: 0x7267, + 12859: 0x7A46, + 12860: 0x62FF, + 12861: 0x54EA, + 12862: 0x5450, + 12863: 0x94A0, + 12864: 0x90A3, + 12865: 0x5A1C, + 12866: 0x7EB3, + 12867: 0x6C16, + 12868: 0x4E43, + 12869: 0x5976, + 12870: 0x8010, + 12871: 0x5948, + 12872: 0x5357, + 12873: 0x7537, + 12874: 0x96BE, + 12875: 0x56CA, + 12876: 0x6320, + 12877: 0x8111, + 12878: 0x607C, + 12879: 0x95F9, + 12880: 0x6DD6, + 12881: 0x5462, + 12882: 0x9981, + 12883: 0x5185, + 12884: 0x5AE9, + 12885: 0x80FD, + 12886: 0x59AE, + 12887: 0x9713, + 12888: 0x502A, + 12889: 0x6CE5, + 12890: 0x5C3C, + 12891: 0x62DF, + 12892: 0x4F60, + 12893: 0x533F, + 12894: 0x817B, + 12895: 0x9006, + 12896: 0x6EBA, + 12897: 0x852B, + 12898: 0x62C8, + 12899: 0x5E74, + 12900: 0x78BE, + 12901: 0x64B5, + 12902: 0x637B, + 12903: 0x5FF5, + 12904: 0x5A18, + 12905: 0x917F, + 12906: 0x9E1F, + 12907: 0x5C3F, + 12908: 0x634F, + 12909: 0x8042, + 12910: 0x5B7D, + 12911: 0x556E, + 12912: 0x954A, + 12913: 0x954D, + 12914: 0x6D85, + 12915: 0x60A8, + 12916: 0x67E0, + 12917: 0x72DE, + 12918: 0x51DD, + 12919: 0x5B81, + 12920: 0x81D4, + 12921: 0x81D5, + 12922: 0x81D6, + 12923: 0x81D7, + 12924: 0x81D8, + 12925: 0x81D9, + 12926: 0x81DA, + 12927: 0x81DB, + 12928: 0x81DC, + 12929: 0x81DD, + 12930: 0x81DE, + 12931: 0x81DF, + 12932: 0x81E0, + 12933: 0x81E1, + 12934: 0x81E2, + 12935: 0x81E4, + 12936: 0x81E5, + 12937: 0x81E6, + 12938: 0x81E8, + 12939: 0x81E9, + 12940: 0x81EB, + 12941: 0x81EE, + 12942: 0x81EF, + 12943: 0x81F0, + 12944: 0x81F1, + 12945: 0x81F2, + 12946: 0x81F5, + 12947: 0x81F6, + 12948: 0x81F7, + 12949: 0x81F8, + 12950: 0x81F9, + 12951: 0x81FA, + 12952: 0x81FD, + 12953: 0x81FF, + 12954: 0x8203, + 12955: 0x8207, + 12956: 0x8208, + 12957: 0x8209, + 12958: 0x820A, + 12959: 0x820B, + 12960: 0x820E, + 12961: 0x820F, + 12962: 0x8211, + 12963: 0x8213, + 12964: 0x8215, + 12965: 0x8216, + 12966: 0x8217, + 12967: 0x8218, + 12968: 0x8219, + 12969: 0x821A, + 12970: 0x821D, + 12971: 0x8220, + 12972: 0x8224, + 12973: 0x8225, + 12974: 0x8226, + 12975: 0x8227, + 12976: 0x8229, + 12977: 0x822E, + 12978: 0x8232, + 12979: 0x823A, + 12980: 0x823C, + 12981: 0x823D, + 12982: 0x823F, + 12983: 0x8240, + 12984: 0x8241, + 12985: 0x8242, + 12986: 0x8243, + 12987: 0x8245, + 12988: 0x8246, + 12989: 0x8248, + 12990: 0x824A, + 12991: 0x824C, + 12992: 0x824D, + 12993: 0x824E, + 12994: 0x8250, + 12995: 0x8251, + 12996: 0x8252, + 12997: 0x8253, + 12998: 0x8254, + 12999: 0x8255, + 13000: 0x8256, + 13001: 0x8257, + 13002: 0x8259, + 13003: 0x825B, + 13004: 0x825C, + 13005: 0x825D, + 13006: 0x825E, + 13007: 0x8260, + 13008: 0x8261, + 13009: 0x8262, + 13010: 0x8263, + 13011: 0x8264, + 13012: 0x8265, + 13013: 0x8266, + 13014: 0x8267, + 13015: 0x8269, + 13016: 0x62E7, + 13017: 0x6CDE, + 13018: 0x725B, + 13019: 0x626D, + 13020: 0x94AE, + 13021: 0x7EBD, + 13022: 0x8113, + 13023: 0x6D53, + 13024: 0x519C, + 13025: 0x5F04, + 13026: 0x5974, + 13027: 0x52AA, + 13028: 0x6012, + 13029: 0x5973, + 13030: 0x6696, + 13031: 0x8650, + 13032: 0x759F, + 13033: 0x632A, + 13034: 0x61E6, + 13035: 0x7CEF, + 13036: 0x8BFA, + 13037: 0x54E6, + 13038: 0x6B27, + 13039: 0x9E25, + 13040: 0x6BB4, + 13041: 0x85D5, + 13042: 0x5455, + 13043: 0x5076, + 13044: 0x6CA4, + 13045: 0x556A, + 13046: 0x8DB4, + 13047: 0x722C, + 13048: 0x5E15, + 13049: 0x6015, + 13050: 0x7436, + 13051: 0x62CD, + 13052: 0x6392, + 13053: 0x724C, + 13054: 0x5F98, + 13055: 0x6E43, + 13056: 0x6D3E, + 13057: 0x6500, + 13058: 0x6F58, + 13059: 0x76D8, + 13060: 0x78D0, + 13061: 0x76FC, + 13062: 0x7554, + 13063: 0x5224, + 13064: 0x53DB, + 13065: 0x4E53, + 13066: 0x5E9E, + 13067: 0x65C1, + 13068: 0x802A, + 13069: 0x80D6, + 13070: 0x629B, + 13071: 0x5486, + 13072: 0x5228, + 13073: 0x70AE, + 13074: 0x888D, + 13075: 0x8DD1, + 13076: 0x6CE1, + 13077: 0x5478, + 13078: 0x80DA, + 13079: 0x57F9, + 13080: 0x88F4, + 13081: 0x8D54, + 13082: 0x966A, + 13083: 0x914D, + 13084: 0x4F69, + 13085: 0x6C9B, + 13086: 0x55B7, + 13087: 0x76C6, + 13088: 0x7830, + 13089: 0x62A8, + 13090: 0x70F9, + 13091: 0x6F8E, + 13092: 0x5F6D, + 13093: 0x84EC, + 13094: 0x68DA, + 13095: 0x787C, + 13096: 0x7BF7, + 13097: 0x81A8, + 13098: 0x670B, + 13099: 0x9E4F, + 13100: 0x6367, + 13101: 0x78B0, + 13102: 0x576F, + 13103: 0x7812, + 13104: 0x9739, + 13105: 0x6279, + 13106: 0x62AB, + 13107: 0x5288, + 13108: 0x7435, + 13109: 0x6BD7, + 13110: 0x826A, + 13111: 0x826B, + 13112: 0x826C, + 13113: 0x826D, + 13114: 0x8271, + 13115: 0x8275, + 13116: 0x8276, + 13117: 0x8277, + 13118: 0x8278, + 13119: 0x827B, + 13120: 0x827C, + 13121: 0x8280, + 13122: 0x8281, + 13123: 0x8283, + 13124: 0x8285, + 13125: 0x8286, + 13126: 0x8287, + 13127: 0x8289, + 13128: 0x828C, + 13129: 0x8290, + 13130: 0x8293, + 13131: 0x8294, + 13132: 0x8295, + 13133: 0x8296, + 13134: 0x829A, + 13135: 0x829B, + 13136: 0x829E, + 13137: 0x82A0, + 13138: 0x82A2, + 13139: 0x82A3, + 13140: 0x82A7, + 13141: 0x82B2, + 13142: 0x82B5, + 13143: 0x82B6, + 13144: 0x82BA, + 13145: 0x82BB, + 13146: 0x82BC, + 13147: 0x82BF, + 13148: 0x82C0, + 13149: 0x82C2, + 13150: 0x82C3, + 13151: 0x82C5, + 13152: 0x82C6, + 13153: 0x82C9, + 13154: 0x82D0, + 13155: 0x82D6, + 13156: 0x82D9, + 13157: 0x82DA, + 13158: 0x82DD, + 13159: 0x82E2, + 13160: 0x82E7, + 13161: 0x82E8, + 13162: 0x82E9, + 13163: 0x82EA, + 13164: 0x82EC, + 13165: 0x82ED, + 13166: 0x82EE, + 13167: 0x82F0, + 13168: 0x82F2, + 13169: 0x82F3, + 13170: 0x82F5, + 13171: 0x82F6, + 13172: 0x82F8, + 13173: 0x82FA, + 13174: 0x82FC, + 13175: 0x82FD, + 13176: 0x82FE, + 13177: 0x82FF, + 13178: 0x8300, + 13179: 0x830A, + 13180: 0x830B, + 13181: 0x830D, + 13182: 0x8310, + 13183: 0x8312, + 13184: 0x8313, + 13185: 0x8316, + 13186: 0x8318, + 13187: 0x8319, + 13188: 0x831D, + 13189: 0x831E, + 13190: 0x831F, + 13191: 0x8320, + 13192: 0x8321, + 13193: 0x8322, + 13194: 0x8323, + 13195: 0x8324, + 13196: 0x8325, + 13197: 0x8326, + 13198: 0x8329, + 13199: 0x832A, + 13200: 0x832E, + 13201: 0x8330, + 13202: 0x8332, + 13203: 0x8337, + 13204: 0x833B, + 13205: 0x833D, + 13206: 0x5564, + 13207: 0x813E, + 13208: 0x75B2, + 13209: 0x76AE, + 13210: 0x5339, + 13211: 0x75DE, + 13212: 0x50FB, + 13213: 0x5C41, + 13214: 0x8B6C, + 13215: 0x7BC7, + 13216: 0x504F, + 13217: 0x7247, + 13218: 0x9A97, + 13219: 0x98D8, + 13220: 0x6F02, + 13221: 0x74E2, + 13222: 0x7968, + 13223: 0x6487, + 13224: 0x77A5, + 13225: 0x62FC, + 13226: 0x9891, + 13227: 0x8D2B, + 13228: 0x54C1, + 13229: 0x8058, + 13230: 0x4E52, + 13231: 0x576A, + 13232: 0x82F9, + 13233: 0x840D, + 13234: 0x5E73, + 13235: 0x51ED, + 13236: 0x74F6, + 13237: 0x8BC4, + 13238: 0x5C4F, + 13239: 0x5761, + 13240: 0x6CFC, + 13241: 0x9887, + 13242: 0x5A46, + 13243: 0x7834, + 13244: 0x9B44, + 13245: 0x8FEB, + 13246: 0x7C95, + 13247: 0x5256, + 13248: 0x6251, + 13249: 0x94FA, + 13250: 0x4EC6, + 13251: 0x8386, + 13252: 0x8461, + 13253: 0x83E9, + 13254: 0x84B2, + 13255: 0x57D4, + 13256: 0x6734, + 13257: 0x5703, + 13258: 0x666E, + 13259: 0x6D66, + 13260: 0x8C31, + 13261: 0x66DD, + 13262: 0x7011, + 13263: 0x671F, + 13264: 0x6B3A, + 13265: 0x6816, + 13266: 0x621A, + 13267: 0x59BB, + 13268: 0x4E03, + 13269: 0x51C4, + 13270: 0x6F06, + 13271: 0x67D2, + 13272: 0x6C8F, + 13273: 0x5176, + 13274: 0x68CB, + 13275: 0x5947, + 13276: 0x6B67, + 13277: 0x7566, + 13278: 0x5D0E, + 13279: 0x8110, + 13280: 0x9F50, + 13281: 0x65D7, + 13282: 0x7948, + 13283: 0x7941, + 13284: 0x9A91, + 13285: 0x8D77, + 13286: 0x5C82, + 13287: 0x4E5E, + 13288: 0x4F01, + 13289: 0x542F, + 13290: 0x5951, + 13291: 0x780C, + 13292: 0x5668, + 13293: 0x6C14, + 13294: 0x8FC4, + 13295: 0x5F03, + 13296: 0x6C7D, + 13297: 0x6CE3, + 13298: 0x8BAB, + 13299: 0x6390, + 13300: 0x833E, + 13301: 0x833F, + 13302: 0x8341, + 13303: 0x8342, + 13304: 0x8344, + 13305: 0x8345, + 13306: 0x8348, + 13307: 0x834A, + 13308: 0x834B, + 13309: 0x834C, + 13310: 0x834D, + 13311: 0x834E, + 13312: 0x8353, + 13313: 0x8355, + 13314: 0x8356, + 13315: 0x8357, + 13316: 0x8358, + 13317: 0x8359, + 13318: 0x835D, + 13319: 0x8362, + 13320: 0x8370, + 13321: 0x8371, + 13322: 0x8372, + 13323: 0x8373, + 13324: 0x8374, + 13325: 0x8375, + 13326: 0x8376, + 13327: 0x8379, + 13328: 0x837A, + 13329: 0x837E, + 13330: 0x837F, + 13331: 0x8380, + 13332: 0x8381, + 13333: 0x8382, + 13334: 0x8383, + 13335: 0x8384, + 13336: 0x8387, + 13337: 0x8388, + 13338: 0x838A, + 13339: 0x838B, + 13340: 0x838C, + 13341: 0x838D, + 13342: 0x838F, + 13343: 0x8390, + 13344: 0x8391, + 13345: 0x8394, + 13346: 0x8395, + 13347: 0x8396, + 13348: 0x8397, + 13349: 0x8399, + 13350: 0x839A, + 13351: 0x839D, + 13352: 0x839F, + 13353: 0x83A1, + 13354: 0x83A2, + 13355: 0x83A3, + 13356: 0x83A4, + 13357: 0x83A5, + 13358: 0x83A6, + 13359: 0x83A7, + 13360: 0x83AC, + 13361: 0x83AD, + 13362: 0x83AE, + 13363: 0x83AF, + 13364: 0x83B5, + 13365: 0x83BB, + 13366: 0x83BE, + 13367: 0x83BF, + 13368: 0x83C2, + 13369: 0x83C3, + 13370: 0x83C4, + 13371: 0x83C6, + 13372: 0x83C8, + 13373: 0x83C9, + 13374: 0x83CB, + 13375: 0x83CD, + 13376: 0x83CE, + 13377: 0x83D0, + 13378: 0x83D1, + 13379: 0x83D2, + 13380: 0x83D3, + 13381: 0x83D5, + 13382: 0x83D7, + 13383: 0x83D9, + 13384: 0x83DA, + 13385: 0x83DB, + 13386: 0x83DE, + 13387: 0x83E2, + 13388: 0x83E3, + 13389: 0x83E4, + 13390: 0x83E6, + 13391: 0x83E7, + 13392: 0x83E8, + 13393: 0x83EB, + 13394: 0x83EC, + 13395: 0x83ED, + 13396: 0x6070, + 13397: 0x6D3D, + 13398: 0x7275, + 13399: 0x6266, + 13400: 0x948E, + 13401: 0x94C5, + 13402: 0x5343, + 13403: 0x8FC1, + 13404: 0x7B7E, + 13405: 0x4EDF, + 13406: 0x8C26, + 13407: 0x4E7E, + 13408: 0x9ED4, + 13409: 0x94B1, + 13410: 0x94B3, + 13411: 0x524D, + 13412: 0x6F5C, + 13413: 0x9063, + 13414: 0x6D45, + 13415: 0x8C34, + 13416: 0x5811, + 13417: 0x5D4C, + 13418: 0x6B20, + 13419: 0x6B49, + 13420: 0x67AA, + 13421: 0x545B, + 13422: 0x8154, + 13423: 0x7F8C, + 13424: 0x5899, + 13425: 0x8537, + 13426: 0x5F3A, + 13427: 0x62A2, + 13428: 0x6A47, + 13429: 0x9539, + 13430: 0x6572, + 13431: 0x6084, + 13432: 0x6865, + 13433: 0x77A7, + 13434: 0x4E54, + 13435: 0x4FA8, + 13436: 0x5DE7, + 13437: 0x9798, + 13438: 0x64AC, + 13439: 0x7FD8, + 13440: 0x5CED, + 13441: 0x4FCF, + 13442: 0x7A8D, + 13443: 0x5207, + 13444: 0x8304, + 13445: 0x4E14, + 13446: 0x602F, + 13447: 0x7A83, + 13448: 0x94A6, + 13449: 0x4FB5, + 13450: 0x4EB2, + 13451: 0x79E6, + 13452: 0x7434, + 13453: 0x52E4, + 13454: 0x82B9, + 13455: 0x64D2, + 13456: 0x79BD, + 13457: 0x5BDD, + 13458: 0x6C81, + 13459: 0x9752, + 13460: 0x8F7B, + 13461: 0x6C22, + 13462: 0x503E, + 13463: 0x537F, + 13464: 0x6E05, + 13465: 0x64CE, + 13466: 0x6674, + 13467: 0x6C30, + 13468: 0x60C5, + 13469: 0x9877, + 13470: 0x8BF7, + 13471: 0x5E86, + 13472: 0x743C, + 13473: 0x7A77, + 13474: 0x79CB, + 13475: 0x4E18, + 13476: 0x90B1, + 13477: 0x7403, + 13478: 0x6C42, + 13479: 0x56DA, + 13480: 0x914B, + 13481: 0x6CC5, + 13482: 0x8D8B, + 13483: 0x533A, + 13484: 0x86C6, + 13485: 0x66F2, + 13486: 0x8EAF, + 13487: 0x5C48, + 13488: 0x9A71, + 13489: 0x6E20, + 13490: 0x83EE, + 13491: 0x83EF, + 13492: 0x83F3, + 13493: 0x83F4, + 13494: 0x83F5, + 13495: 0x83F6, + 13496: 0x83F7, + 13497: 0x83FA, + 13498: 0x83FB, + 13499: 0x83FC, + 13500: 0x83FE, + 13501: 0x83FF, + 13502: 0x8400, + 13503: 0x8402, + 13504: 0x8405, + 13505: 0x8407, + 13506: 0x8408, + 13507: 0x8409, + 13508: 0x840A, + 13509: 0x8410, + 13510: 0x8412, + 13511: 0x8413, + 13512: 0x8414, + 13513: 0x8415, + 13514: 0x8416, + 13515: 0x8417, + 13516: 0x8419, + 13517: 0x841A, + 13518: 0x841B, + 13519: 0x841E, + 13520: 0x841F, + 13521: 0x8420, + 13522: 0x8421, + 13523: 0x8422, + 13524: 0x8423, + 13525: 0x8429, + 13526: 0x842A, + 13527: 0x842B, + 13528: 0x842C, + 13529: 0x842D, + 13530: 0x842E, + 13531: 0x842F, + 13532: 0x8430, + 13533: 0x8432, + 13534: 0x8433, + 13535: 0x8434, + 13536: 0x8435, + 13537: 0x8436, + 13538: 0x8437, + 13539: 0x8439, + 13540: 0x843A, + 13541: 0x843B, + 13542: 0x843E, + 13543: 0x843F, + 13544: 0x8440, + 13545: 0x8441, + 13546: 0x8442, + 13547: 0x8443, + 13548: 0x8444, + 13549: 0x8445, + 13550: 0x8447, + 13551: 0x8448, + 13552: 0x8449, + 13553: 0x844A, + 13554: 0x844B, + 13555: 0x844C, + 13556: 0x844D, + 13557: 0x844E, + 13558: 0x844F, + 13559: 0x8450, + 13560: 0x8452, + 13561: 0x8453, + 13562: 0x8454, + 13563: 0x8455, + 13564: 0x8456, + 13565: 0x8458, + 13566: 0x845D, + 13567: 0x845E, + 13568: 0x845F, + 13569: 0x8460, + 13570: 0x8462, + 13571: 0x8464, + 13572: 0x8465, + 13573: 0x8466, + 13574: 0x8467, + 13575: 0x8468, + 13576: 0x846A, + 13577: 0x846E, + 13578: 0x846F, + 13579: 0x8470, + 13580: 0x8472, + 13581: 0x8474, + 13582: 0x8477, + 13583: 0x8479, + 13584: 0x847B, + 13585: 0x847C, + 13586: 0x53D6, + 13587: 0x5A36, + 13588: 0x9F8B, + 13589: 0x8DA3, + 13590: 0x53BB, + 13591: 0x5708, + 13592: 0x98A7, + 13593: 0x6743, + 13594: 0x919B, + 13595: 0x6CC9, + 13596: 0x5168, + 13597: 0x75CA, + 13598: 0x62F3, + 13599: 0x72AC, + 13600: 0x5238, + 13601: 0x529D, + 13602: 0x7F3A, + 13603: 0x7094, + 13604: 0x7638, + 13605: 0x5374, + 13606: 0x9E4A, + 13607: 0x69B7, + 13608: 0x786E, + 13609: 0x96C0, + 13610: 0x88D9, + 13611: 0x7FA4, + 13612: 0x7136, + 13613: 0x71C3, + 13614: 0x5189, + 13615: 0x67D3, + 13616: 0x74E4, + 13617: 0x58E4, + 13618: 0x6518, + 13619: 0x56B7, + 13620: 0x8BA9, + 13621: 0x9976, + 13622: 0x6270, + 13623: 0x7ED5, + 13624: 0x60F9, + 13625: 0x70ED, + 13626: 0x58EC, + 13627: 0x4EC1, + 13628: 0x4EBA, + 13629: 0x5FCD, + 13630: 0x97E7, + 13631: 0x4EFB, + 13632: 0x8BA4, + 13633: 0x5203, + 13634: 0x598A, + 13635: 0x7EAB, + 13636: 0x6254, + 13637: 0x4ECD, + 13638: 0x65E5, + 13639: 0x620E, + 13640: 0x8338, + 13641: 0x84C9, + 13642: 0x8363, + 13643: 0x878D, + 13644: 0x7194, + 13645: 0x6EB6, + 13646: 0x5BB9, + 13647: 0x7ED2, + 13648: 0x5197, + 13649: 0x63C9, + 13650: 0x67D4, + 13651: 0x8089, + 13652: 0x8339, + 13653: 0x8815, + 13654: 0x5112, + 13655: 0x5B7A, + 13656: 0x5982, + 13657: 0x8FB1, + 13658: 0x4E73, + 13659: 0x6C5D, + 13660: 0x5165, + 13661: 0x8925, + 13662: 0x8F6F, + 13663: 0x962E, + 13664: 0x854A, + 13665: 0x745E, + 13666: 0x9510, + 13667: 0x95F0, + 13668: 0x6DA6, + 13669: 0x82E5, + 13670: 0x5F31, + 13671: 0x6492, + 13672: 0x6D12, + 13673: 0x8428, + 13674: 0x816E, + 13675: 0x9CC3, + 13676: 0x585E, + 13677: 0x8D5B, + 13678: 0x4E09, + 13679: 0x53C1, + 13680: 0x847D, + 13681: 0x847E, + 13682: 0x847F, + 13683: 0x8480, + 13684: 0x8481, + 13685: 0x8483, + 13686: 0x8484, + 13687: 0x8485, + 13688: 0x8486, + 13689: 0x848A, + 13690: 0x848D, + 13691: 0x848F, + 13692: 0x8490, + 13693: 0x8491, + 13694: 0x8492, + 13695: 0x8493, + 13696: 0x8494, + 13697: 0x8495, + 13698: 0x8496, + 13699: 0x8498, + 13700: 0x849A, + 13701: 0x849B, + 13702: 0x849D, + 13703: 0x849E, + 13704: 0x849F, + 13705: 0x84A0, + 13706: 0x84A2, + 13707: 0x84A3, + 13708: 0x84A4, + 13709: 0x84A5, + 13710: 0x84A6, + 13711: 0x84A7, + 13712: 0x84A8, + 13713: 0x84A9, + 13714: 0x84AA, + 13715: 0x84AB, + 13716: 0x84AC, + 13717: 0x84AD, + 13718: 0x84AE, + 13719: 0x84B0, + 13720: 0x84B1, + 13721: 0x84B3, + 13722: 0x84B5, + 13723: 0x84B6, + 13724: 0x84B7, + 13725: 0x84BB, + 13726: 0x84BC, + 13727: 0x84BE, + 13728: 0x84C0, + 13729: 0x84C2, + 13730: 0x84C3, + 13731: 0x84C5, + 13732: 0x84C6, + 13733: 0x84C7, + 13734: 0x84C8, + 13735: 0x84CB, + 13736: 0x84CC, + 13737: 0x84CE, + 13738: 0x84CF, + 13739: 0x84D2, + 13740: 0x84D4, + 13741: 0x84D5, + 13742: 0x84D7, + 13743: 0x84D8, + 13744: 0x84D9, + 13745: 0x84DA, + 13746: 0x84DB, + 13747: 0x84DC, + 13748: 0x84DE, + 13749: 0x84E1, + 13750: 0x84E2, + 13751: 0x84E4, + 13752: 0x84E7, + 13753: 0x84E8, + 13754: 0x84E9, + 13755: 0x84EA, + 13756: 0x84EB, + 13757: 0x84ED, + 13758: 0x84EE, + 13759: 0x84EF, + 13760: 0x84F1, + 13761: 0x84F2, + 13762: 0x84F3, + 13763: 0x84F4, + 13764: 0x84F5, + 13765: 0x84F6, + 13766: 0x84F7, + 13767: 0x84F8, + 13768: 0x84F9, + 13769: 0x84FA, + 13770: 0x84FB, + 13771: 0x84FD, + 13772: 0x84FE, + 13773: 0x8500, + 13774: 0x8501, + 13775: 0x8502, + 13776: 0x4F1E, + 13777: 0x6563, + 13778: 0x6851, + 13779: 0x55D3, + 13780: 0x4E27, + 13781: 0x6414, + 13782: 0x9A9A, + 13783: 0x626B, + 13784: 0x5AC2, + 13785: 0x745F, + 13786: 0x8272, + 13787: 0x6DA9, + 13788: 0x68EE, + 13789: 0x50E7, + 13790: 0x838E, + 13791: 0x7802, + 13792: 0x6740, + 13793: 0x5239, + 13794: 0x6C99, + 13795: 0x7EB1, + 13796: 0x50BB, + 13797: 0x5565, + 13798: 0x715E, + 13799: 0x7B5B, + 13800: 0x6652, + 13801: 0x73CA, + 13802: 0x82EB, + 13803: 0x6749, + 13804: 0x5C71, + 13805: 0x5220, + 13806: 0x717D, + 13807: 0x886B, + 13808: 0x95EA, + 13809: 0x9655, + 13810: 0x64C5, + 13811: 0x8D61, + 13812: 0x81B3, + 13813: 0x5584, + 13814: 0x6C55, + 13815: 0x6247, + 13816: 0x7F2E, + 13817: 0x5892, + 13818: 0x4F24, + 13819: 0x5546, + 13820: 0x8D4F, + 13821: 0x664C, + 13822: 0x4E0A, + 13823: 0x5C1A, + 13824: 0x88F3, + 13825: 0x68A2, + 13826: 0x634E, + 13827: 0x7A0D, + 13828: 0x70E7, + 13829: 0x828D, + 13830: 0x52FA, + 13831: 0x97F6, + 13832: 0x5C11, + 13833: 0x54E8, + 13834: 0x90B5, + 13835: 0x7ECD, + 13836: 0x5962, + 13837: 0x8D4A, + 13838: 0x86C7, + 13839: 0x820C, + 13840: 0x820D, + 13841: 0x8D66, + 13842: 0x6444, + 13843: 0x5C04, + 13844: 0x6151, + 13845: 0x6D89, + 13846: 0x793E, + 13847: 0x8BBE, + 13848: 0x7837, + 13849: 0x7533, + 13850: 0x547B, + 13851: 0x4F38, + 13852: 0x8EAB, + 13853: 0x6DF1, + 13854: 0x5A20, + 13855: 0x7EC5, + 13856: 0x795E, + 13857: 0x6C88, + 13858: 0x5BA1, + 13859: 0x5A76, + 13860: 0x751A, + 13861: 0x80BE, + 13862: 0x614E, + 13863: 0x6E17, + 13864: 0x58F0, + 13865: 0x751F, + 13866: 0x7525, + 13867: 0x7272, + 13868: 0x5347, + 13869: 0x7EF3, + 13870: 0x8503, + 13871: 0x8504, + 13872: 0x8505, + 13873: 0x8506, + 13874: 0x8507, + 13875: 0x8508, + 13876: 0x8509, + 13877: 0x850A, + 13878: 0x850B, + 13879: 0x850D, + 13880: 0x850E, + 13881: 0x850F, + 13882: 0x8510, + 13883: 0x8512, + 13884: 0x8514, + 13885: 0x8515, + 13886: 0x8516, + 13887: 0x8518, + 13888: 0x8519, + 13889: 0x851B, + 13890: 0x851C, + 13891: 0x851D, + 13892: 0x851E, + 13893: 0x8520, + 13894: 0x8522, + 13895: 0x8523, + 13896: 0x8524, + 13897: 0x8525, + 13898: 0x8526, + 13899: 0x8527, + 13900: 0x8528, + 13901: 0x8529, + 13902: 0x852A, + 13903: 0x852D, + 13904: 0x852E, + 13905: 0x852F, + 13906: 0x8530, + 13907: 0x8531, + 13908: 0x8532, + 13909: 0x8533, + 13910: 0x8534, + 13911: 0x8535, + 13912: 0x8536, + 13913: 0x853E, + 13914: 0x853F, + 13915: 0x8540, + 13916: 0x8541, + 13917: 0x8542, + 13918: 0x8544, + 13919: 0x8545, + 13920: 0x8546, + 13921: 0x8547, + 13922: 0x854B, + 13923: 0x854C, + 13924: 0x854D, + 13925: 0x854E, + 13926: 0x854F, + 13927: 0x8550, + 13928: 0x8551, + 13929: 0x8552, + 13930: 0x8553, + 13931: 0x8554, + 13932: 0x8555, + 13933: 0x8557, + 13934: 0x8558, + 13935: 0x855A, + 13936: 0x855B, + 13937: 0x855C, + 13938: 0x855D, + 13939: 0x855F, + 13940: 0x8560, + 13941: 0x8561, + 13942: 0x8562, + 13943: 0x8563, + 13944: 0x8565, + 13945: 0x8566, + 13946: 0x8567, + 13947: 0x8569, + 13948: 0x856A, + 13949: 0x856B, + 13950: 0x856C, + 13951: 0x856D, + 13952: 0x856E, + 13953: 0x856F, + 13954: 0x8570, + 13955: 0x8571, + 13956: 0x8573, + 13957: 0x8575, + 13958: 0x8576, + 13959: 0x8577, + 13960: 0x8578, + 13961: 0x857C, + 13962: 0x857D, + 13963: 0x857F, + 13964: 0x8580, + 13965: 0x8581, + 13966: 0x7701, + 13967: 0x76DB, + 13968: 0x5269, + 13969: 0x80DC, + 13970: 0x5723, + 13971: 0x5E08, + 13972: 0x5931, + 13973: 0x72EE, + 13974: 0x65BD, + 13975: 0x6E7F, + 13976: 0x8BD7, + 13977: 0x5C38, + 13978: 0x8671, + 13979: 0x5341, + 13980: 0x77F3, + 13981: 0x62FE, + 13982: 0x65F6, + 13983: 0x4EC0, + 13984: 0x98DF, + 13985: 0x8680, + 13986: 0x5B9E, + 13987: 0x8BC6, + 13988: 0x53F2, + 13989: 0x77E2, + 13990: 0x4F7F, + 13991: 0x5C4E, + 13992: 0x9A76, + 13993: 0x59CB, + 13994: 0x5F0F, + 13995: 0x793A, + 13996: 0x58EB, + 13997: 0x4E16, + 13998: 0x67FF, + 13999: 0x4E8B, + 14000: 0x62ED, + 14001: 0x8A93, + 14002: 0x901D, + 14003: 0x52BF, + 14004: 0x662F, + 14005: 0x55DC, + 14006: 0x566C, + 14007: 0x9002, + 14008: 0x4ED5, + 14009: 0x4F8D, + 14010: 0x91CA, + 14011: 0x9970, + 14012: 0x6C0F, + 14013: 0x5E02, + 14014: 0x6043, + 14015: 0x5BA4, + 14016: 0x89C6, + 14017: 0x8BD5, + 14018: 0x6536, + 14019: 0x624B, + 14020: 0x9996, + 14021: 0x5B88, + 14022: 0x5BFF, + 14023: 0x6388, + 14024: 0x552E, + 14025: 0x53D7, + 14026: 0x7626, + 14027: 0x517D, + 14028: 0x852C, + 14029: 0x67A2, + 14030: 0x68B3, + 14031: 0x6B8A, + 14032: 0x6292, + 14033: 0x8F93, + 14034: 0x53D4, + 14035: 0x8212, + 14036: 0x6DD1, + 14037: 0x758F, + 14038: 0x4E66, + 14039: 0x8D4E, + 14040: 0x5B70, + 14041: 0x719F, + 14042: 0x85AF, + 14043: 0x6691, + 14044: 0x66D9, + 14045: 0x7F72, + 14046: 0x8700, + 14047: 0x9ECD, + 14048: 0x9F20, + 14049: 0x5C5E, + 14050: 0x672F, + 14051: 0x8FF0, + 14052: 0x6811, + 14053: 0x675F, + 14054: 0x620D, + 14055: 0x7AD6, + 14056: 0x5885, + 14057: 0x5EB6, + 14058: 0x6570, + 14059: 0x6F31, + 14060: 0x8582, + 14061: 0x8583, + 14062: 0x8586, + 14063: 0x8588, + 14064: 0x8589, + 14065: 0x858A, + 14066: 0x858B, + 14067: 0x858C, + 14068: 0x858D, + 14069: 0x858E, + 14070: 0x8590, + 14071: 0x8591, + 14072: 0x8592, + 14073: 0x8593, + 14074: 0x8594, + 14075: 0x8595, + 14076: 0x8596, + 14077: 0x8597, + 14078: 0x8598, + 14079: 0x8599, + 14080: 0x859A, + 14081: 0x859D, + 14082: 0x859E, + 14083: 0x859F, + 14084: 0x85A0, + 14085: 0x85A1, + 14086: 0x85A2, + 14087: 0x85A3, + 14088: 0x85A5, + 14089: 0x85A6, + 14090: 0x85A7, + 14091: 0x85A9, + 14092: 0x85AB, + 14093: 0x85AC, + 14094: 0x85AD, + 14095: 0x85B1, + 14096: 0x85B2, + 14097: 0x85B3, + 14098: 0x85B4, + 14099: 0x85B5, + 14100: 0x85B6, + 14101: 0x85B8, + 14102: 0x85BA, + 14103: 0x85BB, + 14104: 0x85BC, + 14105: 0x85BD, + 14106: 0x85BE, + 14107: 0x85BF, + 14108: 0x85C0, + 14109: 0x85C2, + 14110: 0x85C3, + 14111: 0x85C4, + 14112: 0x85C5, + 14113: 0x85C6, + 14114: 0x85C7, + 14115: 0x85C8, + 14116: 0x85CA, + 14117: 0x85CB, + 14118: 0x85CC, + 14119: 0x85CD, + 14120: 0x85CE, + 14121: 0x85D1, + 14122: 0x85D2, + 14123: 0x85D4, + 14124: 0x85D6, + 14125: 0x85D7, + 14126: 0x85D8, + 14127: 0x85D9, + 14128: 0x85DA, + 14129: 0x85DB, + 14130: 0x85DD, + 14131: 0x85DE, + 14132: 0x85DF, + 14133: 0x85E0, + 14134: 0x85E1, + 14135: 0x85E2, + 14136: 0x85E3, + 14137: 0x85E5, + 14138: 0x85E6, + 14139: 0x85E7, + 14140: 0x85E8, + 14141: 0x85EA, + 14142: 0x85EB, + 14143: 0x85EC, + 14144: 0x85ED, + 14145: 0x85EE, + 14146: 0x85EF, + 14147: 0x85F0, + 14148: 0x85F1, + 14149: 0x85F2, + 14150: 0x85F3, + 14151: 0x85F4, + 14152: 0x85F5, + 14153: 0x85F6, + 14154: 0x85F7, + 14155: 0x85F8, + 14156: 0x6055, + 14157: 0x5237, + 14158: 0x800D, + 14159: 0x6454, + 14160: 0x8870, + 14161: 0x7529, + 14162: 0x5E05, + 14163: 0x6813, + 14164: 0x62F4, + 14165: 0x971C, + 14166: 0x53CC, + 14167: 0x723D, + 14168: 0x8C01, + 14169: 0x6C34, + 14170: 0x7761, + 14171: 0x7A0E, + 14172: 0x542E, + 14173: 0x77AC, + 14174: 0x987A, + 14175: 0x821C, + 14176: 0x8BF4, + 14177: 0x7855, + 14178: 0x6714, + 14179: 0x70C1, + 14180: 0x65AF, + 14181: 0x6495, + 14182: 0x5636, + 14183: 0x601D, + 14184: 0x79C1, + 14185: 0x53F8, + 14186: 0x4E1D, + 14187: 0x6B7B, + 14188: 0x8086, + 14189: 0x5BFA, + 14190: 0x55E3, + 14191: 0x56DB, + 14192: 0x4F3A, + 14193: 0x4F3C, + 14194: 0x9972, + 14195: 0x5DF3, + 14196: 0x677E, + 14197: 0x8038, + 14198: 0x6002, + 14199: 0x9882, + 14200: 0x9001, + 14201: 0x5B8B, + 14202: 0x8BBC, + 14203: 0x8BF5, + 14204: 0x641C, + 14205: 0x8258, + 14206: 0x64DE, + 14207: 0x55FD, + 14208: 0x82CF, + 14209: 0x9165, + 14210: 0x4FD7, + 14211: 0x7D20, + 14212: 0x901F, + 14213: 0x7C9F, + 14214: 0x50F3, + 14215: 0x5851, + 14216: 0x6EAF, + 14217: 0x5BBF, + 14218: 0x8BC9, + 14219: 0x8083, + 14220: 0x9178, + 14221: 0x849C, + 14222: 0x7B97, + 14223: 0x867D, + 14224: 0x968B, + 14225: 0x968F, + 14226: 0x7EE5, + 14227: 0x9AD3, + 14228: 0x788E, + 14229: 0x5C81, + 14230: 0x7A57, + 14231: 0x9042, + 14232: 0x96A7, + 14233: 0x795F, + 14234: 0x5B59, + 14235: 0x635F, + 14236: 0x7B0B, + 14237: 0x84D1, + 14238: 0x68AD, + 14239: 0x5506, + 14240: 0x7F29, + 14241: 0x7410, + 14242: 0x7D22, + 14243: 0x9501, + 14244: 0x6240, + 14245: 0x584C, + 14246: 0x4ED6, + 14247: 0x5B83, + 14248: 0x5979, + 14249: 0x5854, + 14250: 0x85F9, + 14251: 0x85FA, + 14252: 0x85FC, + 14253: 0x85FD, + 14254: 0x85FE, + 14255: 0x8600, + 14256: 0x8601, + 14257: 0x8602, + 14258: 0x8603, + 14259: 0x8604, + 14260: 0x8606, + 14261: 0x8607, + 14262: 0x8608, + 14263: 0x8609, + 14264: 0x860A, + 14265: 0x860B, + 14266: 0x860C, + 14267: 0x860D, + 14268: 0x860E, + 14269: 0x860F, + 14270: 0x8610, + 14271: 0x8612, + 14272: 0x8613, + 14273: 0x8614, + 14274: 0x8615, + 14275: 0x8617, + 14276: 0x8618, + 14277: 0x8619, + 14278: 0x861A, + 14279: 0x861B, + 14280: 0x861C, + 14281: 0x861D, + 14282: 0x861E, + 14283: 0x861F, + 14284: 0x8620, + 14285: 0x8621, + 14286: 0x8622, + 14287: 0x8623, + 14288: 0x8624, + 14289: 0x8625, + 14290: 0x8626, + 14291: 0x8628, + 14292: 0x862A, + 14293: 0x862B, + 14294: 0x862C, + 14295: 0x862D, + 14296: 0x862E, + 14297: 0x862F, + 14298: 0x8630, + 14299: 0x8631, + 14300: 0x8632, + 14301: 0x8633, + 14302: 0x8634, + 14303: 0x8635, + 14304: 0x8636, + 14305: 0x8637, + 14306: 0x8639, + 14307: 0x863A, + 14308: 0x863B, + 14309: 0x863D, + 14310: 0x863E, + 14311: 0x863F, + 14312: 0x8640, + 14313: 0x8641, + 14314: 0x8642, + 14315: 0x8643, + 14316: 0x8644, + 14317: 0x8645, + 14318: 0x8646, + 14319: 0x8647, + 14320: 0x8648, + 14321: 0x8649, + 14322: 0x864A, + 14323: 0x864B, + 14324: 0x864C, + 14325: 0x8652, + 14326: 0x8653, + 14327: 0x8655, + 14328: 0x8656, + 14329: 0x8657, + 14330: 0x8658, + 14331: 0x8659, + 14332: 0x865B, + 14333: 0x865C, + 14334: 0x865D, + 14335: 0x865F, + 14336: 0x8660, + 14337: 0x8661, + 14338: 0x8663, + 14339: 0x8664, + 14340: 0x8665, + 14341: 0x8666, + 14342: 0x8667, + 14343: 0x8668, + 14344: 0x8669, + 14345: 0x866A, + 14346: 0x736D, + 14347: 0x631E, + 14348: 0x8E4B, + 14349: 0x8E0F, + 14350: 0x80CE, + 14351: 0x82D4, + 14352: 0x62AC, + 14353: 0x53F0, + 14354: 0x6CF0, + 14355: 0x915E, + 14356: 0x592A, + 14357: 0x6001, + 14358: 0x6C70, + 14359: 0x574D, + 14360: 0x644A, + 14361: 0x8D2A, + 14362: 0x762B, + 14363: 0x6EE9, + 14364: 0x575B, + 14365: 0x6A80, + 14366: 0x75F0, + 14367: 0x6F6D, + 14368: 0x8C2D, + 14369: 0x8C08, + 14370: 0x5766, + 14371: 0x6BEF, + 14372: 0x8892, + 14373: 0x78B3, + 14374: 0x63A2, + 14375: 0x53F9, + 14376: 0x70AD, + 14377: 0x6C64, + 14378: 0x5858, + 14379: 0x642A, + 14380: 0x5802, + 14381: 0x68E0, + 14382: 0x819B, + 14383: 0x5510, + 14384: 0x7CD6, + 14385: 0x5018, + 14386: 0x8EBA, + 14387: 0x6DCC, + 14388: 0x8D9F, + 14389: 0x70EB, + 14390: 0x638F, + 14391: 0x6D9B, + 14392: 0x6ED4, + 14393: 0x7EE6, + 14394: 0x8404, + 14395: 0x6843, + 14396: 0x9003, + 14397: 0x6DD8, + 14398: 0x9676, + 14399: 0x8BA8, + 14400: 0x5957, + 14401: 0x7279, + 14402: 0x85E4, + 14403: 0x817E, + 14404: 0x75BC, + 14405: 0x8A8A, + 14406: 0x68AF, + 14407: 0x5254, + 14408: 0x8E22, + 14409: 0x9511, + 14410: 0x63D0, + 14411: 0x9898, + 14412: 0x8E44, + 14413: 0x557C, + 14414: 0x4F53, + 14415: 0x66FF, + 14416: 0x568F, + 14417: 0x60D5, + 14418: 0x6D95, + 14419: 0x5243, + 14420: 0x5C49, + 14421: 0x5929, + 14422: 0x6DFB, + 14423: 0x586B, + 14424: 0x7530, + 14425: 0x751C, + 14426: 0x606C, + 14427: 0x8214, + 14428: 0x8146, + 14429: 0x6311, + 14430: 0x6761, + 14431: 0x8FE2, + 14432: 0x773A, + 14433: 0x8DF3, + 14434: 0x8D34, + 14435: 0x94C1, + 14436: 0x5E16, + 14437: 0x5385, + 14438: 0x542C, + 14439: 0x70C3, + 14440: 0x866D, + 14441: 0x866F, + 14442: 0x8670, + 14443: 0x8672, + 14444: 0x8673, + 14445: 0x8674, + 14446: 0x8675, + 14447: 0x8676, + 14448: 0x8677, + 14449: 0x8678, + 14450: 0x8683, + 14451: 0x8684, + 14452: 0x8685, + 14453: 0x8686, + 14454: 0x8687, + 14455: 0x8688, + 14456: 0x8689, + 14457: 0x868E, + 14458: 0x868F, + 14459: 0x8690, + 14460: 0x8691, + 14461: 0x8692, + 14462: 0x8694, + 14463: 0x8696, + 14464: 0x8697, + 14465: 0x8698, + 14466: 0x8699, + 14467: 0x869A, + 14468: 0x869B, + 14469: 0x869E, + 14470: 0x869F, + 14471: 0x86A0, + 14472: 0x86A1, + 14473: 0x86A2, + 14474: 0x86A5, + 14475: 0x86A6, + 14476: 0x86AB, + 14477: 0x86AD, + 14478: 0x86AE, + 14479: 0x86B2, + 14480: 0x86B3, + 14481: 0x86B7, + 14482: 0x86B8, + 14483: 0x86B9, + 14484: 0x86BB, + 14485: 0x86BC, + 14486: 0x86BD, + 14487: 0x86BE, + 14488: 0x86BF, + 14489: 0x86C1, + 14490: 0x86C2, + 14491: 0x86C3, + 14492: 0x86C5, + 14493: 0x86C8, + 14494: 0x86CC, + 14495: 0x86CD, + 14496: 0x86D2, + 14497: 0x86D3, + 14498: 0x86D5, + 14499: 0x86D6, + 14500: 0x86D7, + 14501: 0x86DA, + 14502: 0x86DC, + 14503: 0x86DD, + 14504: 0x86E0, + 14505: 0x86E1, + 14506: 0x86E2, + 14507: 0x86E3, + 14508: 0x86E5, + 14509: 0x86E6, + 14510: 0x86E7, + 14511: 0x86E8, + 14512: 0x86EA, + 14513: 0x86EB, + 14514: 0x86EC, + 14515: 0x86EF, + 14516: 0x86F5, + 14517: 0x86F6, + 14518: 0x86F7, + 14519: 0x86FA, + 14520: 0x86FB, + 14521: 0x86FC, + 14522: 0x86FD, + 14523: 0x86FF, + 14524: 0x8701, + 14525: 0x8704, + 14526: 0x8705, + 14527: 0x8706, + 14528: 0x870B, + 14529: 0x870C, + 14530: 0x870E, + 14531: 0x870F, + 14532: 0x8710, + 14533: 0x8711, + 14534: 0x8714, + 14535: 0x8716, + 14536: 0x6C40, + 14537: 0x5EF7, + 14538: 0x505C, + 14539: 0x4EAD, + 14540: 0x5EAD, + 14541: 0x633A, + 14542: 0x8247, + 14543: 0x901A, + 14544: 0x6850, + 14545: 0x916E, + 14546: 0x77B3, + 14547: 0x540C, + 14548: 0x94DC, + 14549: 0x5F64, + 14550: 0x7AE5, + 14551: 0x6876, + 14552: 0x6345, + 14553: 0x7B52, + 14554: 0x7EDF, + 14555: 0x75DB, + 14556: 0x5077, + 14557: 0x6295, + 14558: 0x5934, + 14559: 0x900F, + 14560: 0x51F8, + 14561: 0x79C3, + 14562: 0x7A81, + 14563: 0x56FE, + 14564: 0x5F92, + 14565: 0x9014, + 14566: 0x6D82, + 14567: 0x5C60, + 14568: 0x571F, + 14569: 0x5410, + 14570: 0x5154, + 14571: 0x6E4D, + 14572: 0x56E2, + 14573: 0x63A8, + 14574: 0x9893, + 14575: 0x817F, + 14576: 0x8715, + 14577: 0x892A, + 14578: 0x9000, + 14579: 0x541E, + 14580: 0x5C6F, + 14581: 0x81C0, + 14582: 0x62D6, + 14583: 0x6258, + 14584: 0x8131, + 14585: 0x9E35, + 14586: 0x9640, + 14587: 0x9A6E, + 14588: 0x9A7C, + 14589: 0x692D, + 14590: 0x59A5, + 14591: 0x62D3, + 14592: 0x553E, + 14593: 0x6316, + 14594: 0x54C7, + 14595: 0x86D9, + 14596: 0x6D3C, + 14597: 0x5A03, + 14598: 0x74E6, + 14599: 0x889C, + 14600: 0x6B6A, + 14601: 0x5916, + 14602: 0x8C4C, + 14603: 0x5F2F, + 14604: 0x6E7E, + 14605: 0x73A9, + 14606: 0x987D, + 14607: 0x4E38, + 14608: 0x70F7, + 14609: 0x5B8C, + 14610: 0x7897, + 14611: 0x633D, + 14612: 0x665A, + 14613: 0x7696, + 14614: 0x60CB, + 14615: 0x5B9B, + 14616: 0x5A49, + 14617: 0x4E07, + 14618: 0x8155, + 14619: 0x6C6A, + 14620: 0x738B, + 14621: 0x4EA1, + 14622: 0x6789, + 14623: 0x7F51, + 14624: 0x5F80, + 14625: 0x65FA, + 14626: 0x671B, + 14627: 0x5FD8, + 14628: 0x5984, + 14629: 0x5A01, + 14630: 0x8719, + 14631: 0x871B, + 14632: 0x871D, + 14633: 0x871F, + 14634: 0x8720, + 14635: 0x8724, + 14636: 0x8726, + 14637: 0x8727, + 14638: 0x8728, + 14639: 0x872A, + 14640: 0x872B, + 14641: 0x872C, + 14642: 0x872D, + 14643: 0x872F, + 14644: 0x8730, + 14645: 0x8732, + 14646: 0x8733, + 14647: 0x8735, + 14648: 0x8736, + 14649: 0x8738, + 14650: 0x8739, + 14651: 0x873A, + 14652: 0x873C, + 14653: 0x873D, + 14654: 0x8740, + 14655: 0x8741, + 14656: 0x8742, + 14657: 0x8743, + 14658: 0x8744, + 14659: 0x8745, + 14660: 0x8746, + 14661: 0x874A, + 14662: 0x874B, + 14663: 0x874D, + 14664: 0x874F, + 14665: 0x8750, + 14666: 0x8751, + 14667: 0x8752, + 14668: 0x8754, + 14669: 0x8755, + 14670: 0x8756, + 14671: 0x8758, + 14672: 0x875A, + 14673: 0x875B, + 14674: 0x875C, + 14675: 0x875D, + 14676: 0x875E, + 14677: 0x875F, + 14678: 0x8761, + 14679: 0x8762, + 14680: 0x8766, + 14681: 0x8767, + 14682: 0x8768, + 14683: 0x8769, + 14684: 0x876A, + 14685: 0x876B, + 14686: 0x876C, + 14687: 0x876D, + 14688: 0x876F, + 14689: 0x8771, + 14690: 0x8772, + 14691: 0x8773, + 14692: 0x8775, + 14693: 0x8777, + 14694: 0x8778, + 14695: 0x8779, + 14696: 0x877A, + 14697: 0x877F, + 14698: 0x8780, + 14699: 0x8781, + 14700: 0x8784, + 14701: 0x8786, + 14702: 0x8787, + 14703: 0x8789, + 14704: 0x878A, + 14705: 0x878C, + 14706: 0x878E, + 14707: 0x878F, + 14708: 0x8790, + 14709: 0x8791, + 14710: 0x8792, + 14711: 0x8794, + 14712: 0x8795, + 14713: 0x8796, + 14714: 0x8798, + 14715: 0x8799, + 14716: 0x879A, + 14717: 0x879B, + 14718: 0x879C, + 14719: 0x879D, + 14720: 0x879E, + 14721: 0x87A0, + 14722: 0x87A1, + 14723: 0x87A2, + 14724: 0x87A3, + 14725: 0x87A4, + 14726: 0x5DCD, + 14727: 0x5FAE, + 14728: 0x5371, + 14729: 0x97E6, + 14730: 0x8FDD, + 14731: 0x6845, + 14732: 0x56F4, + 14733: 0x552F, + 14734: 0x60DF, + 14735: 0x4E3A, + 14736: 0x6F4D, + 14737: 0x7EF4, + 14738: 0x82C7, + 14739: 0x840E, + 14740: 0x59D4, + 14741: 0x4F1F, + 14742: 0x4F2A, + 14743: 0x5C3E, + 14744: 0x7EAC, + 14745: 0x672A, + 14746: 0x851A, + 14747: 0x5473, + 14748: 0x754F, + 14749: 0x80C3, + 14750: 0x5582, + 14751: 0x9B4F, + 14752: 0x4F4D, + 14753: 0x6E2D, + 14754: 0x8C13, + 14755: 0x5C09, + 14756: 0x6170, + 14757: 0x536B, + 14758: 0x761F, + 14759: 0x6E29, + 14760: 0x868A, + 14761: 0x6587, + 14762: 0x95FB, + 14763: 0x7EB9, + 14764: 0x543B, + 14765: 0x7A33, + 14766: 0x7D0A, + 14767: 0x95EE, + 14768: 0x55E1, + 14769: 0x7FC1, + 14770: 0x74EE, + 14771: 0x631D, + 14772: 0x8717, + 14773: 0x6DA1, + 14774: 0x7A9D, + 14775: 0x6211, + 14776: 0x65A1, + 14777: 0x5367, + 14778: 0x63E1, + 14779: 0x6C83, + 14780: 0x5DEB, + 14781: 0x545C, + 14782: 0x94A8, + 14783: 0x4E4C, + 14784: 0x6C61, + 14785: 0x8BEC, + 14786: 0x5C4B, + 14787: 0x65E0, + 14788: 0x829C, + 14789: 0x68A7, + 14790: 0x543E, + 14791: 0x5434, + 14792: 0x6BCB, + 14793: 0x6B66, + 14794: 0x4E94, + 14795: 0x6342, + 14796: 0x5348, + 14797: 0x821E, + 14798: 0x4F0D, + 14799: 0x4FAE, + 14800: 0x575E, + 14801: 0x620A, + 14802: 0x96FE, + 14803: 0x6664, + 14804: 0x7269, + 14805: 0x52FF, + 14806: 0x52A1, + 14807: 0x609F, + 14808: 0x8BEF, + 14809: 0x6614, + 14810: 0x7199, + 14811: 0x6790, + 14812: 0x897F, + 14813: 0x7852, + 14814: 0x77FD, + 14815: 0x6670, + 14816: 0x563B, + 14817: 0x5438, + 14818: 0x9521, + 14819: 0x727A, + 14820: 0x87A5, + 14821: 0x87A6, + 14822: 0x87A7, + 14823: 0x87A9, + 14824: 0x87AA, + 14825: 0x87AE, + 14826: 0x87B0, + 14827: 0x87B1, + 14828: 0x87B2, + 14829: 0x87B4, + 14830: 0x87B6, + 14831: 0x87B7, + 14832: 0x87B8, + 14833: 0x87B9, + 14834: 0x87BB, + 14835: 0x87BC, + 14836: 0x87BE, + 14837: 0x87BF, + 14838: 0x87C1, + 14839: 0x87C2, + 14840: 0x87C3, + 14841: 0x87C4, + 14842: 0x87C5, + 14843: 0x87C7, + 14844: 0x87C8, + 14845: 0x87C9, + 14846: 0x87CC, + 14847: 0x87CD, + 14848: 0x87CE, + 14849: 0x87CF, + 14850: 0x87D0, + 14851: 0x87D4, + 14852: 0x87D5, + 14853: 0x87D6, + 14854: 0x87D7, + 14855: 0x87D8, + 14856: 0x87D9, + 14857: 0x87DA, + 14858: 0x87DC, + 14859: 0x87DD, + 14860: 0x87DE, + 14861: 0x87DF, + 14862: 0x87E1, + 14863: 0x87E2, + 14864: 0x87E3, + 14865: 0x87E4, + 14866: 0x87E6, + 14867: 0x87E7, + 14868: 0x87E8, + 14869: 0x87E9, + 14870: 0x87EB, + 14871: 0x87EC, + 14872: 0x87ED, + 14873: 0x87EF, + 14874: 0x87F0, + 14875: 0x87F1, + 14876: 0x87F2, + 14877: 0x87F3, + 14878: 0x87F4, + 14879: 0x87F5, + 14880: 0x87F6, + 14881: 0x87F7, + 14882: 0x87F8, + 14883: 0x87FA, + 14884: 0x87FB, + 14885: 0x87FC, + 14886: 0x87FD, + 14887: 0x87FF, + 14888: 0x8800, + 14889: 0x8801, + 14890: 0x8802, + 14891: 0x8804, + 14892: 0x8805, + 14893: 0x8806, + 14894: 0x8807, + 14895: 0x8808, + 14896: 0x8809, + 14897: 0x880B, + 14898: 0x880C, + 14899: 0x880D, + 14900: 0x880E, + 14901: 0x880F, + 14902: 0x8810, + 14903: 0x8811, + 14904: 0x8812, + 14905: 0x8814, + 14906: 0x8817, + 14907: 0x8818, + 14908: 0x8819, + 14909: 0x881A, + 14910: 0x881C, + 14911: 0x881D, + 14912: 0x881E, + 14913: 0x881F, + 14914: 0x8820, + 14915: 0x8823, + 14916: 0x7A00, + 14917: 0x606F, + 14918: 0x5E0C, + 14919: 0x6089, + 14920: 0x819D, + 14921: 0x5915, + 14922: 0x60DC, + 14923: 0x7184, + 14924: 0x70EF, + 14925: 0x6EAA, + 14926: 0x6C50, + 14927: 0x7280, + 14928: 0x6A84, + 14929: 0x88AD, + 14930: 0x5E2D, + 14931: 0x4E60, + 14932: 0x5AB3, + 14933: 0x559C, + 14934: 0x94E3, + 14935: 0x6D17, + 14936: 0x7CFB, + 14937: 0x9699, + 14938: 0x620F, + 14939: 0x7EC6, + 14940: 0x778E, + 14941: 0x867E, + 14942: 0x5323, + 14943: 0x971E, + 14944: 0x8F96, + 14945: 0x6687, + 14946: 0x5CE1, + 14947: 0x4FA0, + 14948: 0x72ED, + 14949: 0x4E0B, + 14950: 0x53A6, + 14951: 0x590F, + 14952: 0x5413, + 14953: 0x6380, + 14954: 0x9528, + 14955: 0x5148, + 14956: 0x4ED9, + 14957: 0x9C9C, + 14958: 0x7EA4, + 14959: 0x54B8, + 14960: 0x8D24, + 14961: 0x8854, + 14962: 0x8237, + 14963: 0x95F2, + 14964: 0x6D8E, + 14965: 0x5F26, + 14966: 0x5ACC, + 14967: 0x663E, + 14968: 0x9669, + 14969: 0x73B0, + 14970: 0x732E, + 14971: 0x53BF, + 14972: 0x817A, + 14973: 0x9985, + 14974: 0x7FA1, + 14975: 0x5BAA, + 14976: 0x9677, + 14977: 0x9650, + 14978: 0x7EBF, + 14979: 0x76F8, + 14980: 0x53A2, + 14981: 0x9576, + 14982: 0x9999, + 14983: 0x7BB1, + 14984: 0x8944, + 14985: 0x6E58, + 14986: 0x4E61, + 14987: 0x7FD4, + 14988: 0x7965, + 14989: 0x8BE6, + 14990: 0x60F3, + 14991: 0x54CD, + 14992: 0x4EAB, + 14993: 0x9879, + 14994: 0x5DF7, + 14995: 0x6A61, + 14996: 0x50CF, + 14997: 0x5411, + 14998: 0x8C61, + 14999: 0x8427, + 15000: 0x785D, + 15001: 0x9704, + 15002: 0x524A, + 15003: 0x54EE, + 15004: 0x56A3, + 15005: 0x9500, + 15006: 0x6D88, + 15007: 0x5BB5, + 15008: 0x6DC6, + 15009: 0x6653, + 15010: 0x8824, + 15011: 0x8825, + 15012: 0x8826, + 15013: 0x8827, + 15014: 0x8828, + 15015: 0x8829, + 15016: 0x882A, + 15017: 0x882B, + 15018: 0x882C, + 15019: 0x882D, + 15020: 0x882E, + 15021: 0x882F, + 15022: 0x8830, + 15023: 0x8831, + 15024: 0x8833, + 15025: 0x8834, + 15026: 0x8835, + 15027: 0x8836, + 15028: 0x8837, + 15029: 0x8838, + 15030: 0x883A, + 15031: 0x883B, + 15032: 0x883D, + 15033: 0x883E, + 15034: 0x883F, + 15035: 0x8841, + 15036: 0x8842, + 15037: 0x8843, + 15038: 0x8846, + 15039: 0x8847, + 15040: 0x8848, + 15041: 0x8849, + 15042: 0x884A, + 15043: 0x884B, + 15044: 0x884E, + 15045: 0x884F, + 15046: 0x8850, + 15047: 0x8851, + 15048: 0x8852, + 15049: 0x8853, + 15050: 0x8855, + 15051: 0x8856, + 15052: 0x8858, + 15053: 0x885A, + 15054: 0x885B, + 15055: 0x885C, + 15056: 0x885D, + 15057: 0x885E, + 15058: 0x885F, + 15059: 0x8860, + 15060: 0x8866, + 15061: 0x8867, + 15062: 0x886A, + 15063: 0x886D, + 15064: 0x886F, + 15065: 0x8871, + 15066: 0x8873, + 15067: 0x8874, + 15068: 0x8875, + 15069: 0x8876, + 15070: 0x8878, + 15071: 0x8879, + 15072: 0x887A, + 15073: 0x887B, + 15074: 0x887C, + 15075: 0x8880, + 15076: 0x8883, + 15077: 0x8886, + 15078: 0x8887, + 15079: 0x8889, + 15080: 0x888A, + 15081: 0x888C, + 15082: 0x888E, + 15083: 0x888F, + 15084: 0x8890, + 15085: 0x8891, + 15086: 0x8893, + 15087: 0x8894, + 15088: 0x8895, + 15089: 0x8897, + 15090: 0x8898, + 15091: 0x8899, + 15092: 0x889A, + 15093: 0x889B, + 15094: 0x889D, + 15095: 0x889E, + 15096: 0x889F, + 15097: 0x88A0, + 15098: 0x88A1, + 15099: 0x88A3, + 15100: 0x88A5, + 15101: 0x88A6, + 15102: 0x88A7, + 15103: 0x88A8, + 15104: 0x88A9, + 15105: 0x88AA, + 15106: 0x5C0F, + 15107: 0x5B5D, + 15108: 0x6821, + 15109: 0x8096, + 15110: 0x5578, + 15111: 0x7B11, + 15112: 0x6548, + 15113: 0x6954, + 15114: 0x4E9B, + 15115: 0x6B47, + 15116: 0x874E, + 15117: 0x978B, + 15118: 0x534F, + 15119: 0x631F, + 15120: 0x643A, + 15121: 0x90AA, + 15122: 0x659C, + 15123: 0x80C1, + 15124: 0x8C10, + 15125: 0x5199, + 15126: 0x68B0, + 15127: 0x5378, + 15128: 0x87F9, + 15129: 0x61C8, + 15130: 0x6CC4, + 15131: 0x6CFB, + 15132: 0x8C22, + 15133: 0x5C51, + 15134: 0x85AA, + 15135: 0x82AF, + 15136: 0x950C, + 15137: 0x6B23, + 15138: 0x8F9B, + 15139: 0x65B0, + 15140: 0x5FFB, + 15141: 0x5FC3, + 15142: 0x4FE1, + 15143: 0x8845, + 15144: 0x661F, + 15145: 0x8165, + 15146: 0x7329, + 15147: 0x60FA, + 15148: 0x5174, + 15149: 0x5211, + 15150: 0x578B, + 15151: 0x5F62, + 15152: 0x90A2, + 15153: 0x884C, + 15154: 0x9192, + 15155: 0x5E78, + 15156: 0x674F, + 15157: 0x6027, + 15158: 0x59D3, + 15159: 0x5144, + 15160: 0x51F6, + 15161: 0x80F8, + 15162: 0x5308, + 15163: 0x6C79, + 15164: 0x96C4, + 15165: 0x718A, + 15166: 0x4F11, + 15167: 0x4FEE, + 15168: 0x7F9E, + 15169: 0x673D, + 15170: 0x55C5, + 15171: 0x9508, + 15172: 0x79C0, + 15173: 0x8896, + 15174: 0x7EE3, + 15175: 0x589F, + 15176: 0x620C, + 15177: 0x9700, + 15178: 0x865A, + 15179: 0x5618, + 15180: 0x987B, + 15181: 0x5F90, + 15182: 0x8BB8, + 15183: 0x84C4, + 15184: 0x9157, + 15185: 0x53D9, + 15186: 0x65ED, + 15187: 0x5E8F, + 15188: 0x755C, + 15189: 0x6064, + 15190: 0x7D6E, + 15191: 0x5A7F, + 15192: 0x7EEA, + 15193: 0x7EED, + 15194: 0x8F69, + 15195: 0x55A7, + 15196: 0x5BA3, + 15197: 0x60AC, + 15198: 0x65CB, + 15199: 0x7384, + 15200: 0x88AC, + 15201: 0x88AE, + 15202: 0x88AF, + 15203: 0x88B0, + 15204: 0x88B2, + 15205: 0x88B3, + 15206: 0x88B4, + 15207: 0x88B5, + 15208: 0x88B6, + 15209: 0x88B8, + 15210: 0x88B9, + 15211: 0x88BA, + 15212: 0x88BB, + 15213: 0x88BD, + 15214: 0x88BE, + 15215: 0x88BF, + 15216: 0x88C0, + 15217: 0x88C3, + 15218: 0x88C4, + 15219: 0x88C7, + 15220: 0x88C8, + 15221: 0x88CA, + 15222: 0x88CB, + 15223: 0x88CC, + 15224: 0x88CD, + 15225: 0x88CF, + 15226: 0x88D0, + 15227: 0x88D1, + 15228: 0x88D3, + 15229: 0x88D6, + 15230: 0x88D7, + 15231: 0x88DA, + 15232: 0x88DB, + 15233: 0x88DC, + 15234: 0x88DD, + 15235: 0x88DE, + 15236: 0x88E0, + 15237: 0x88E1, + 15238: 0x88E6, + 15239: 0x88E7, + 15240: 0x88E9, + 15241: 0x88EA, + 15242: 0x88EB, + 15243: 0x88EC, + 15244: 0x88ED, + 15245: 0x88EE, + 15246: 0x88EF, + 15247: 0x88F2, + 15248: 0x88F5, + 15249: 0x88F6, + 15250: 0x88F7, + 15251: 0x88FA, + 15252: 0x88FB, + 15253: 0x88FD, + 15254: 0x88FF, + 15255: 0x8900, + 15256: 0x8901, + 15257: 0x8903, + 15258: 0x8904, + 15259: 0x8905, + 15260: 0x8906, + 15261: 0x8907, + 15262: 0x8908, + 15263: 0x8909, + 15264: 0x890B, + 15265: 0x890C, + 15266: 0x890D, + 15267: 0x890E, + 15268: 0x890F, + 15269: 0x8911, + 15270: 0x8914, + 15271: 0x8915, + 15272: 0x8916, + 15273: 0x8917, + 15274: 0x8918, + 15275: 0x891C, + 15276: 0x891D, + 15277: 0x891E, + 15278: 0x891F, + 15279: 0x8920, + 15280: 0x8922, + 15281: 0x8923, + 15282: 0x8924, + 15283: 0x8926, + 15284: 0x8927, + 15285: 0x8928, + 15286: 0x8929, + 15287: 0x892C, + 15288: 0x892D, + 15289: 0x892E, + 15290: 0x892F, + 15291: 0x8931, + 15292: 0x8932, + 15293: 0x8933, + 15294: 0x8935, + 15295: 0x8937, + 15296: 0x9009, + 15297: 0x7663, + 15298: 0x7729, + 15299: 0x7EDA, + 15300: 0x9774, + 15301: 0x859B, + 15302: 0x5B66, + 15303: 0x7A74, + 15304: 0x96EA, + 15305: 0x8840, + 15306: 0x52CB, + 15307: 0x718F, + 15308: 0x5FAA, + 15309: 0x65EC, + 15310: 0x8BE2, + 15311: 0x5BFB, + 15312: 0x9A6F, + 15313: 0x5DE1, + 15314: 0x6B89, + 15315: 0x6C5B, + 15316: 0x8BAD, + 15317: 0x8BAF, + 15318: 0x900A, + 15319: 0x8FC5, + 15320: 0x538B, + 15321: 0x62BC, + 15322: 0x9E26, + 15323: 0x9E2D, + 15324: 0x5440, + 15325: 0x4E2B, + 15326: 0x82BD, + 15327: 0x7259, + 15328: 0x869C, + 15329: 0x5D16, + 15330: 0x8859, + 15331: 0x6DAF, + 15332: 0x96C5, + 15333: 0x54D1, + 15334: 0x4E9A, + 15335: 0x8BB6, + 15336: 0x7109, + 15337: 0x54BD, + 15338: 0x9609, + 15339: 0x70DF, + 15340: 0x6DF9, + 15341: 0x76D0, + 15342: 0x4E25, + 15343: 0x7814, + 15344: 0x8712, + 15345: 0x5CA9, + 15346: 0x5EF6, + 15347: 0x8A00, + 15348: 0x989C, + 15349: 0x960E, + 15350: 0x708E, + 15351: 0x6CBF, + 15352: 0x5944, + 15353: 0x63A9, + 15354: 0x773C, + 15355: 0x884D, + 15356: 0x6F14, + 15357: 0x8273, + 15358: 0x5830, + 15359: 0x71D5, + 15360: 0x538C, + 15361: 0x781A, + 15362: 0x96C1, + 15363: 0x5501, + 15364: 0x5F66, + 15365: 0x7130, + 15366: 0x5BB4, + 15367: 0x8C1A, + 15368: 0x9A8C, + 15369: 0x6B83, + 15370: 0x592E, + 15371: 0x9E2F, + 15372: 0x79E7, + 15373: 0x6768, + 15374: 0x626C, + 15375: 0x4F6F, + 15376: 0x75A1, + 15377: 0x7F8A, + 15378: 0x6D0B, + 15379: 0x9633, + 15380: 0x6C27, + 15381: 0x4EF0, + 15382: 0x75D2, + 15383: 0x517B, + 15384: 0x6837, + 15385: 0x6F3E, + 15386: 0x9080, + 15387: 0x8170, + 15388: 0x5996, + 15389: 0x7476, + 15390: 0x8938, + 15391: 0x8939, + 15392: 0x893A, + 15393: 0x893B, + 15394: 0x893C, + 15395: 0x893D, + 15396: 0x893E, + 15397: 0x893F, + 15398: 0x8940, + 15399: 0x8942, + 15400: 0x8943, + 15401: 0x8945, + 15402: 0x8946, + 15403: 0x8947, + 15404: 0x8948, + 15405: 0x8949, + 15406: 0x894A, + 15407: 0x894B, + 15408: 0x894C, + 15409: 0x894D, + 15410: 0x894E, + 15411: 0x894F, + 15412: 0x8950, + 15413: 0x8951, + 15414: 0x8952, + 15415: 0x8953, + 15416: 0x8954, + 15417: 0x8955, + 15418: 0x8956, + 15419: 0x8957, + 15420: 0x8958, + 15421: 0x8959, + 15422: 0x895A, + 15423: 0x895B, + 15424: 0x895C, + 15425: 0x895D, + 15426: 0x8960, + 15427: 0x8961, + 15428: 0x8962, + 15429: 0x8963, + 15430: 0x8964, + 15431: 0x8965, + 15432: 0x8967, + 15433: 0x8968, + 15434: 0x8969, + 15435: 0x896A, + 15436: 0x896B, + 15437: 0x896C, + 15438: 0x896D, + 15439: 0x896E, + 15440: 0x896F, + 15441: 0x8970, + 15442: 0x8971, + 15443: 0x8972, + 15444: 0x8973, + 15445: 0x8974, + 15446: 0x8975, + 15447: 0x8976, + 15448: 0x8977, + 15449: 0x8978, + 15450: 0x8979, + 15451: 0x897A, + 15452: 0x897C, + 15453: 0x897D, + 15454: 0x897E, + 15455: 0x8980, + 15456: 0x8982, + 15457: 0x8984, + 15458: 0x8985, + 15459: 0x8987, + 15460: 0x8988, + 15461: 0x8989, + 15462: 0x898A, + 15463: 0x898B, + 15464: 0x898C, + 15465: 0x898D, + 15466: 0x898E, + 15467: 0x898F, + 15468: 0x8990, + 15469: 0x8991, + 15470: 0x8992, + 15471: 0x8993, + 15472: 0x8994, + 15473: 0x8995, + 15474: 0x8996, + 15475: 0x8997, + 15476: 0x8998, + 15477: 0x8999, + 15478: 0x899A, + 15479: 0x899B, + 15480: 0x899C, + 15481: 0x899D, + 15482: 0x899E, + 15483: 0x899F, + 15484: 0x89A0, + 15485: 0x89A1, + 15486: 0x6447, + 15487: 0x5C27, + 15488: 0x9065, + 15489: 0x7A91, + 15490: 0x8C23, + 15491: 0x59DA, + 15492: 0x54AC, + 15493: 0x8200, + 15494: 0x836F, + 15495: 0x8981, + 15496: 0x8000, + 15497: 0x6930, + 15498: 0x564E, + 15499: 0x8036, + 15500: 0x7237, + 15501: 0x91CE, + 15502: 0x51B6, + 15503: 0x4E5F, + 15504: 0x9875, + 15505: 0x6396, + 15506: 0x4E1A, + 15507: 0x53F6, + 15508: 0x66F3, + 15509: 0x814B, + 15510: 0x591C, + 15511: 0x6DB2, + 15512: 0x4E00, + 15513: 0x58F9, + 15514: 0x533B, + 15515: 0x63D6, + 15516: 0x94F1, + 15517: 0x4F9D, + 15518: 0x4F0A, + 15519: 0x8863, + 15520: 0x9890, + 15521: 0x5937, + 15522: 0x9057, + 15523: 0x79FB, + 15524: 0x4EEA, + 15525: 0x80F0, + 15526: 0x7591, + 15527: 0x6C82, + 15528: 0x5B9C, + 15529: 0x59E8, + 15530: 0x5F5D, + 15531: 0x6905, + 15532: 0x8681, + 15533: 0x501A, + 15534: 0x5DF2, + 15535: 0x4E59, + 15536: 0x77E3, + 15537: 0x4EE5, + 15538: 0x827A, + 15539: 0x6291, + 15540: 0x6613, + 15541: 0x9091, + 15542: 0x5C79, + 15543: 0x4EBF, + 15544: 0x5F79, + 15545: 0x81C6, + 15546: 0x9038, + 15547: 0x8084, + 15548: 0x75AB, + 15549: 0x4EA6, + 15550: 0x88D4, + 15551: 0x610F, + 15552: 0x6BC5, + 15553: 0x5FC6, + 15554: 0x4E49, + 15555: 0x76CA, + 15556: 0x6EA2, + 15557: 0x8BE3, + 15558: 0x8BAE, + 15559: 0x8C0A, + 15560: 0x8BD1, + 15561: 0x5F02, + 15562: 0x7FFC, + 15563: 0x7FCC, + 15564: 0x7ECE, + 15565: 0x8335, + 15566: 0x836B, + 15567: 0x56E0, + 15568: 0x6BB7, + 15569: 0x97F3, + 15570: 0x9634, + 15571: 0x59FB, + 15572: 0x541F, + 15573: 0x94F6, + 15574: 0x6DEB, + 15575: 0x5BC5, + 15576: 0x996E, + 15577: 0x5C39, + 15578: 0x5F15, + 15579: 0x9690, + 15580: 0x89A2, + 15581: 0x89A3, + 15582: 0x89A4, + 15583: 0x89A5, + 15584: 0x89A6, + 15585: 0x89A7, + 15586: 0x89A8, + 15587: 0x89A9, + 15588: 0x89AA, + 15589: 0x89AB, + 15590: 0x89AC, + 15591: 0x89AD, + 15592: 0x89AE, + 15593: 0x89AF, + 15594: 0x89B0, + 15595: 0x89B1, + 15596: 0x89B2, + 15597: 0x89B3, + 15598: 0x89B4, + 15599: 0x89B5, + 15600: 0x89B6, + 15601: 0x89B7, + 15602: 0x89B8, + 15603: 0x89B9, + 15604: 0x89BA, + 15605: 0x89BB, + 15606: 0x89BC, + 15607: 0x89BD, + 15608: 0x89BE, + 15609: 0x89BF, + 15610: 0x89C0, + 15611: 0x89C3, + 15612: 0x89CD, + 15613: 0x89D3, + 15614: 0x89D4, + 15615: 0x89D5, + 15616: 0x89D7, + 15617: 0x89D8, + 15618: 0x89D9, + 15619: 0x89DB, + 15620: 0x89DD, + 15621: 0x89DF, + 15622: 0x89E0, + 15623: 0x89E1, + 15624: 0x89E2, + 15625: 0x89E4, + 15626: 0x89E7, + 15627: 0x89E8, + 15628: 0x89E9, + 15629: 0x89EA, + 15630: 0x89EC, + 15631: 0x89ED, + 15632: 0x89EE, + 15633: 0x89F0, + 15634: 0x89F1, + 15635: 0x89F2, + 15636: 0x89F4, + 15637: 0x89F5, + 15638: 0x89F6, + 15639: 0x89F7, + 15640: 0x89F8, + 15641: 0x89F9, + 15642: 0x89FA, + 15643: 0x89FB, + 15644: 0x89FC, + 15645: 0x89FD, + 15646: 0x89FE, + 15647: 0x89FF, + 15648: 0x8A01, + 15649: 0x8A02, + 15650: 0x8A03, + 15651: 0x8A04, + 15652: 0x8A05, + 15653: 0x8A06, + 15654: 0x8A08, + 15655: 0x8A09, + 15656: 0x8A0A, + 15657: 0x8A0B, + 15658: 0x8A0C, + 15659: 0x8A0D, + 15660: 0x8A0E, + 15661: 0x8A0F, + 15662: 0x8A10, + 15663: 0x8A11, + 15664: 0x8A12, + 15665: 0x8A13, + 15666: 0x8A14, + 15667: 0x8A15, + 15668: 0x8A16, + 15669: 0x8A17, + 15670: 0x8A18, + 15671: 0x8A19, + 15672: 0x8A1A, + 15673: 0x8A1B, + 15674: 0x8A1C, + 15675: 0x8A1D, + 15676: 0x5370, + 15677: 0x82F1, + 15678: 0x6A31, + 15679: 0x5A74, + 15680: 0x9E70, + 15681: 0x5E94, + 15682: 0x7F28, + 15683: 0x83B9, + 15684: 0x8424, + 15685: 0x8425, + 15686: 0x8367, + 15687: 0x8747, + 15688: 0x8FCE, + 15689: 0x8D62, + 15690: 0x76C8, + 15691: 0x5F71, + 15692: 0x9896, + 15693: 0x786C, + 15694: 0x6620, + 15695: 0x54DF, + 15696: 0x62E5, + 15697: 0x4F63, + 15698: 0x81C3, + 15699: 0x75C8, + 15700: 0x5EB8, + 15701: 0x96CD, + 15702: 0x8E0A, + 15703: 0x86F9, + 15704: 0x548F, + 15705: 0x6CF3, + 15706: 0x6D8C, + 15707: 0x6C38, + 15708: 0x607F, + 15709: 0x52C7, + 15710: 0x7528, + 15711: 0x5E7D, + 15712: 0x4F18, + 15713: 0x60A0, + 15714: 0x5FE7, + 15715: 0x5C24, + 15716: 0x7531, + 15717: 0x90AE, + 15718: 0x94C0, + 15719: 0x72B9, + 15720: 0x6CB9, + 15721: 0x6E38, + 15722: 0x9149, + 15723: 0x6709, + 15724: 0x53CB, + 15725: 0x53F3, + 15726: 0x4F51, + 15727: 0x91C9, + 15728: 0x8BF1, + 15729: 0x53C8, + 15730: 0x5E7C, + 15731: 0x8FC2, + 15732: 0x6DE4, + 15733: 0x4E8E, + 15734: 0x76C2, + 15735: 0x6986, + 15736: 0x865E, + 15737: 0x611A, + 15738: 0x8206, + 15739: 0x4F59, + 15740: 0x4FDE, + 15741: 0x903E, + 15742: 0x9C7C, + 15743: 0x6109, + 15744: 0x6E1D, + 15745: 0x6E14, + 15746: 0x9685, + 15747: 0x4E88, + 15748: 0x5A31, + 15749: 0x96E8, + 15750: 0x4E0E, + 15751: 0x5C7F, + 15752: 0x79B9, + 15753: 0x5B87, + 15754: 0x8BED, + 15755: 0x7FBD, + 15756: 0x7389, + 15757: 0x57DF, + 15758: 0x828B, + 15759: 0x90C1, + 15760: 0x5401, + 15761: 0x9047, + 15762: 0x55BB, + 15763: 0x5CEA, + 15764: 0x5FA1, + 15765: 0x6108, + 15766: 0x6B32, + 15767: 0x72F1, + 15768: 0x80B2, + 15769: 0x8A89, + 15770: 0x8A1E, + 15771: 0x8A1F, + 15772: 0x8A20, + 15773: 0x8A21, + 15774: 0x8A22, + 15775: 0x8A23, + 15776: 0x8A24, + 15777: 0x8A25, + 15778: 0x8A26, + 15779: 0x8A27, + 15780: 0x8A28, + 15781: 0x8A29, + 15782: 0x8A2A, + 15783: 0x8A2B, + 15784: 0x8A2C, + 15785: 0x8A2D, + 15786: 0x8A2E, + 15787: 0x8A2F, + 15788: 0x8A30, + 15789: 0x8A31, + 15790: 0x8A32, + 15791: 0x8A33, + 15792: 0x8A34, + 15793: 0x8A35, + 15794: 0x8A36, + 15795: 0x8A37, + 15796: 0x8A38, + 15797: 0x8A39, + 15798: 0x8A3A, + 15799: 0x8A3B, + 15800: 0x8A3C, + 15801: 0x8A3D, + 15802: 0x8A3F, + 15803: 0x8A40, + 15804: 0x8A41, + 15805: 0x8A42, + 15806: 0x8A43, + 15807: 0x8A44, + 15808: 0x8A45, + 15809: 0x8A46, + 15810: 0x8A47, + 15811: 0x8A49, + 15812: 0x8A4A, + 15813: 0x8A4B, + 15814: 0x8A4C, + 15815: 0x8A4D, + 15816: 0x8A4E, + 15817: 0x8A4F, + 15818: 0x8A50, + 15819: 0x8A51, + 15820: 0x8A52, + 15821: 0x8A53, + 15822: 0x8A54, + 15823: 0x8A55, + 15824: 0x8A56, + 15825: 0x8A57, + 15826: 0x8A58, + 15827: 0x8A59, + 15828: 0x8A5A, + 15829: 0x8A5B, + 15830: 0x8A5C, + 15831: 0x8A5D, + 15832: 0x8A5E, + 15833: 0x8A5F, + 15834: 0x8A60, + 15835: 0x8A61, + 15836: 0x8A62, + 15837: 0x8A63, + 15838: 0x8A64, + 15839: 0x8A65, + 15840: 0x8A66, + 15841: 0x8A67, + 15842: 0x8A68, + 15843: 0x8A69, + 15844: 0x8A6A, + 15845: 0x8A6B, + 15846: 0x8A6C, + 15847: 0x8A6D, + 15848: 0x8A6E, + 15849: 0x8A6F, + 15850: 0x8A70, + 15851: 0x8A71, + 15852: 0x8A72, + 15853: 0x8A73, + 15854: 0x8A74, + 15855: 0x8A75, + 15856: 0x8A76, + 15857: 0x8A77, + 15858: 0x8A78, + 15859: 0x8A7A, + 15860: 0x8A7B, + 15861: 0x8A7C, + 15862: 0x8A7D, + 15863: 0x8A7E, + 15864: 0x8A7F, + 15865: 0x8A80, + 15866: 0x6D74, + 15867: 0x5BD3, + 15868: 0x88D5, + 15869: 0x9884, + 15870: 0x8C6B, + 15871: 0x9A6D, + 15872: 0x9E33, + 15873: 0x6E0A, + 15874: 0x51A4, + 15875: 0x5143, + 15876: 0x57A3, + 15877: 0x8881, + 15878: 0x539F, + 15879: 0x63F4, + 15880: 0x8F95, + 15881: 0x56ED, + 15882: 0x5458, + 15883: 0x5706, + 15884: 0x733F, + 15885: 0x6E90, + 15886: 0x7F18, + 15887: 0x8FDC, + 15888: 0x82D1, + 15889: 0x613F, + 15890: 0x6028, + 15891: 0x9662, + 15892: 0x66F0, + 15893: 0x7EA6, + 15894: 0x8D8A, + 15895: 0x8DC3, + 15896: 0x94A5, + 15897: 0x5CB3, + 15898: 0x7CA4, + 15899: 0x6708, + 15900: 0x60A6, + 15901: 0x9605, + 15902: 0x8018, + 15903: 0x4E91, + 15904: 0x90E7, + 15905: 0x5300, + 15906: 0x9668, + 15907: 0x5141, + 15908: 0x8FD0, + 15909: 0x8574, + 15910: 0x915D, + 15911: 0x6655, + 15912: 0x97F5, + 15913: 0x5B55, + 15914: 0x531D, + 15915: 0x7838, + 15916: 0x6742, + 15917: 0x683D, + 15918: 0x54C9, + 15919: 0x707E, + 15920: 0x5BB0, + 15921: 0x8F7D, + 15922: 0x518D, + 15923: 0x5728, + 15924: 0x54B1, + 15925: 0x6512, + 15926: 0x6682, + 15927: 0x8D5E, + 15928: 0x8D43, + 15929: 0x810F, + 15930: 0x846C, + 15931: 0x906D, + 15932: 0x7CDF, + 15933: 0x51FF, + 15934: 0x85FB, + 15935: 0x67A3, + 15936: 0x65E9, + 15937: 0x6FA1, + 15938: 0x86A4, + 15939: 0x8E81, + 15940: 0x566A, + 15941: 0x9020, + 15942: 0x7682, + 15943: 0x7076, + 15944: 0x71E5, + 15945: 0x8D23, + 15946: 0x62E9, + 15947: 0x5219, + 15948: 0x6CFD, + 15949: 0x8D3C, + 15950: 0x600E, + 15951: 0x589E, + 15952: 0x618E, + 15953: 0x66FE, + 15954: 0x8D60, + 15955: 0x624E, + 15956: 0x55B3, + 15957: 0x6E23, + 15958: 0x672D, + 15959: 0x8F67, + 15960: 0x8A81, + 15961: 0x8A82, + 15962: 0x8A83, + 15963: 0x8A84, + 15964: 0x8A85, + 15965: 0x8A86, + 15966: 0x8A87, + 15967: 0x8A88, + 15968: 0x8A8B, + 15969: 0x8A8C, + 15970: 0x8A8D, + 15971: 0x8A8E, + 15972: 0x8A8F, + 15973: 0x8A90, + 15974: 0x8A91, + 15975: 0x8A92, + 15976: 0x8A94, + 15977: 0x8A95, + 15978: 0x8A96, + 15979: 0x8A97, + 15980: 0x8A98, + 15981: 0x8A99, + 15982: 0x8A9A, + 15983: 0x8A9B, + 15984: 0x8A9C, + 15985: 0x8A9D, + 15986: 0x8A9E, + 15987: 0x8A9F, + 15988: 0x8AA0, + 15989: 0x8AA1, + 15990: 0x8AA2, + 15991: 0x8AA3, + 15992: 0x8AA4, + 15993: 0x8AA5, + 15994: 0x8AA6, + 15995: 0x8AA7, + 15996: 0x8AA8, + 15997: 0x8AA9, + 15998: 0x8AAA, + 15999: 0x8AAB, + 16000: 0x8AAC, + 16001: 0x8AAD, + 16002: 0x8AAE, + 16003: 0x8AAF, + 16004: 0x8AB0, + 16005: 0x8AB1, + 16006: 0x8AB2, + 16007: 0x8AB3, + 16008: 0x8AB4, + 16009: 0x8AB5, + 16010: 0x8AB6, + 16011: 0x8AB7, + 16012: 0x8AB8, + 16013: 0x8AB9, + 16014: 0x8ABA, + 16015: 0x8ABB, + 16016: 0x8ABC, + 16017: 0x8ABD, + 16018: 0x8ABE, + 16019: 0x8ABF, + 16020: 0x8AC0, + 16021: 0x8AC1, + 16022: 0x8AC2, + 16023: 0x8AC3, + 16024: 0x8AC4, + 16025: 0x8AC5, + 16026: 0x8AC6, + 16027: 0x8AC7, + 16028: 0x8AC8, + 16029: 0x8AC9, + 16030: 0x8ACA, + 16031: 0x8ACB, + 16032: 0x8ACC, + 16033: 0x8ACD, + 16034: 0x8ACE, + 16035: 0x8ACF, + 16036: 0x8AD0, + 16037: 0x8AD1, + 16038: 0x8AD2, + 16039: 0x8AD3, + 16040: 0x8AD4, + 16041: 0x8AD5, + 16042: 0x8AD6, + 16043: 0x8AD7, + 16044: 0x8AD8, + 16045: 0x8AD9, + 16046: 0x8ADA, + 16047: 0x8ADB, + 16048: 0x8ADC, + 16049: 0x8ADD, + 16050: 0x8ADE, + 16051: 0x8ADF, + 16052: 0x8AE0, + 16053: 0x8AE1, + 16054: 0x8AE2, + 16055: 0x8AE3, + 16056: 0x94E1, + 16057: 0x95F8, + 16058: 0x7728, + 16059: 0x6805, + 16060: 0x69A8, + 16061: 0x548B, + 16062: 0x4E4D, + 16063: 0x70B8, + 16064: 0x8BC8, + 16065: 0x6458, + 16066: 0x658B, + 16067: 0x5B85, + 16068: 0x7A84, + 16069: 0x503A, + 16070: 0x5BE8, + 16071: 0x77BB, + 16072: 0x6BE1, + 16073: 0x8A79, + 16074: 0x7C98, + 16075: 0x6CBE, + 16076: 0x76CF, + 16077: 0x65A9, + 16078: 0x8F97, + 16079: 0x5D2D, + 16080: 0x5C55, + 16081: 0x8638, + 16082: 0x6808, + 16083: 0x5360, + 16084: 0x6218, + 16085: 0x7AD9, + 16086: 0x6E5B, + 16087: 0x7EFD, + 16088: 0x6A1F, + 16089: 0x7AE0, + 16090: 0x5F70, + 16091: 0x6F33, + 16092: 0x5F20, + 16093: 0x638C, + 16094: 0x6DA8, + 16095: 0x6756, + 16096: 0x4E08, + 16097: 0x5E10, + 16098: 0x8D26, + 16099: 0x4ED7, + 16100: 0x80C0, + 16101: 0x7634, + 16102: 0x969C, + 16103: 0x62DB, + 16104: 0x662D, + 16105: 0x627E, + 16106: 0x6CBC, + 16107: 0x8D75, + 16108: 0x7167, + 16109: 0x7F69, + 16110: 0x5146, + 16111: 0x8087, + 16112: 0x53EC, + 16113: 0x906E, + 16114: 0x6298, + 16115: 0x54F2, + 16116: 0x86F0, + 16117: 0x8F99, + 16118: 0x8005, + 16119: 0x9517, + 16120: 0x8517, + 16121: 0x8FD9, + 16122: 0x6D59, + 16123: 0x73CD, + 16124: 0x659F, + 16125: 0x771F, + 16126: 0x7504, + 16127: 0x7827, + 16128: 0x81FB, + 16129: 0x8D1E, + 16130: 0x9488, + 16131: 0x4FA6, + 16132: 0x6795, + 16133: 0x75B9, + 16134: 0x8BCA, + 16135: 0x9707, + 16136: 0x632F, + 16137: 0x9547, + 16138: 0x9635, + 16139: 0x84B8, + 16140: 0x6323, + 16141: 0x7741, + 16142: 0x5F81, + 16143: 0x72F0, + 16144: 0x4E89, + 16145: 0x6014, + 16146: 0x6574, + 16147: 0x62EF, + 16148: 0x6B63, + 16149: 0x653F, + 16150: 0x8AE4, + 16151: 0x8AE5, + 16152: 0x8AE6, + 16153: 0x8AE7, + 16154: 0x8AE8, + 16155: 0x8AE9, + 16156: 0x8AEA, + 16157: 0x8AEB, + 16158: 0x8AEC, + 16159: 0x8AED, + 16160: 0x8AEE, + 16161: 0x8AEF, + 16162: 0x8AF0, + 16163: 0x8AF1, + 16164: 0x8AF2, + 16165: 0x8AF3, + 16166: 0x8AF4, + 16167: 0x8AF5, + 16168: 0x8AF6, + 16169: 0x8AF7, + 16170: 0x8AF8, + 16171: 0x8AF9, + 16172: 0x8AFA, + 16173: 0x8AFB, + 16174: 0x8AFC, + 16175: 0x8AFD, + 16176: 0x8AFE, + 16177: 0x8AFF, + 16178: 0x8B00, + 16179: 0x8B01, + 16180: 0x8B02, + 16181: 0x8B03, + 16182: 0x8B04, + 16183: 0x8B05, + 16184: 0x8B06, + 16185: 0x8B08, + 16186: 0x8B09, + 16187: 0x8B0A, + 16188: 0x8B0B, + 16189: 0x8B0C, + 16190: 0x8B0D, + 16191: 0x8B0E, + 16192: 0x8B0F, + 16193: 0x8B10, + 16194: 0x8B11, + 16195: 0x8B12, + 16196: 0x8B13, + 16197: 0x8B14, + 16198: 0x8B15, + 16199: 0x8B16, + 16200: 0x8B17, + 16201: 0x8B18, + 16202: 0x8B19, + 16203: 0x8B1A, + 16204: 0x8B1B, + 16205: 0x8B1C, + 16206: 0x8B1D, + 16207: 0x8B1E, + 16208: 0x8B1F, + 16209: 0x8B20, + 16210: 0x8B21, + 16211: 0x8B22, + 16212: 0x8B23, + 16213: 0x8B24, + 16214: 0x8B25, + 16215: 0x8B27, + 16216: 0x8B28, + 16217: 0x8B29, + 16218: 0x8B2A, + 16219: 0x8B2B, + 16220: 0x8B2C, + 16221: 0x8B2D, + 16222: 0x8B2E, + 16223: 0x8B2F, + 16224: 0x8B30, + 16225: 0x8B31, + 16226: 0x8B32, + 16227: 0x8B33, + 16228: 0x8B34, + 16229: 0x8B35, + 16230: 0x8B36, + 16231: 0x8B37, + 16232: 0x8B38, + 16233: 0x8B39, + 16234: 0x8B3A, + 16235: 0x8B3B, + 16236: 0x8B3C, + 16237: 0x8B3D, + 16238: 0x8B3E, + 16239: 0x8B3F, + 16240: 0x8B40, + 16241: 0x8B41, + 16242: 0x8B42, + 16243: 0x8B43, + 16244: 0x8B44, + 16245: 0x8B45, + 16246: 0x5E27, + 16247: 0x75C7, + 16248: 0x90D1, + 16249: 0x8BC1, + 16250: 0x829D, + 16251: 0x679D, + 16252: 0x652F, + 16253: 0x5431, + 16254: 0x8718, + 16255: 0x77E5, + 16256: 0x80A2, + 16257: 0x8102, + 16258: 0x6C41, + 16259: 0x4E4B, + 16260: 0x7EC7, + 16261: 0x804C, + 16262: 0x76F4, + 16263: 0x690D, + 16264: 0x6B96, + 16265: 0x6267, + 16266: 0x503C, + 16267: 0x4F84, + 16268: 0x5740, + 16269: 0x6307, + 16270: 0x6B62, + 16271: 0x8DBE, + 16272: 0x53EA, + 16273: 0x65E8, + 16274: 0x7EB8, + 16275: 0x5FD7, + 16276: 0x631A, + 16277: 0x63B7, + 16278: 0x81F3, + 16279: 0x81F4, + 16280: 0x7F6E, + 16281: 0x5E1C, + 16282: 0x5CD9, + 16283: 0x5236, + 16284: 0x667A, + 16285: 0x79E9, + 16286: 0x7A1A, + 16287: 0x8D28, + 16288: 0x7099, + 16289: 0x75D4, + 16290: 0x6EDE, + 16291: 0x6CBB, + 16292: 0x7A92, + 16293: 0x4E2D, + 16294: 0x76C5, + 16295: 0x5FE0, + 16296: 0x949F, + 16297: 0x8877, + 16298: 0x7EC8, + 16299: 0x79CD, + 16300: 0x80BF, + 16301: 0x91CD, + 16302: 0x4EF2, + 16303: 0x4F17, + 16304: 0x821F, + 16305: 0x5468, + 16306: 0x5DDE, + 16307: 0x6D32, + 16308: 0x8BCC, + 16309: 0x7CA5, + 16310: 0x8F74, + 16311: 0x8098, + 16312: 0x5E1A, + 16313: 0x5492, + 16314: 0x76B1, + 16315: 0x5B99, + 16316: 0x663C, + 16317: 0x9AA4, + 16318: 0x73E0, + 16319: 0x682A, + 16320: 0x86DB, + 16321: 0x6731, + 16322: 0x732A, + 16323: 0x8BF8, + 16324: 0x8BDB, + 16325: 0x9010, + 16326: 0x7AF9, + 16327: 0x70DB, + 16328: 0x716E, + 16329: 0x62C4, + 16330: 0x77A9, + 16331: 0x5631, + 16332: 0x4E3B, + 16333: 0x8457, + 16334: 0x67F1, + 16335: 0x52A9, + 16336: 0x86C0, + 16337: 0x8D2E, + 16338: 0x94F8, + 16339: 0x7B51, + 16340: 0x8B46, + 16341: 0x8B47, + 16342: 0x8B48, + 16343: 0x8B49, + 16344: 0x8B4A, + 16345: 0x8B4B, + 16346: 0x8B4C, + 16347: 0x8B4D, + 16348: 0x8B4E, + 16349: 0x8B4F, + 16350: 0x8B50, + 16351: 0x8B51, + 16352: 0x8B52, + 16353: 0x8B53, + 16354: 0x8B54, + 16355: 0x8B55, + 16356: 0x8B56, + 16357: 0x8B57, + 16358: 0x8B58, + 16359: 0x8B59, + 16360: 0x8B5A, + 16361: 0x8B5B, + 16362: 0x8B5C, + 16363: 0x8B5D, + 16364: 0x8B5E, + 16365: 0x8B5F, + 16366: 0x8B60, + 16367: 0x8B61, + 16368: 0x8B62, + 16369: 0x8B63, + 16370: 0x8B64, + 16371: 0x8B65, + 16372: 0x8B67, + 16373: 0x8B68, + 16374: 0x8B69, + 16375: 0x8B6A, + 16376: 0x8B6B, + 16377: 0x8B6D, + 16378: 0x8B6E, + 16379: 0x8B6F, + 16380: 0x8B70, + 16381: 0x8B71, + 16382: 0x8B72, + 16383: 0x8B73, + 16384: 0x8B74, + 16385: 0x8B75, + 16386: 0x8B76, + 16387: 0x8B77, + 16388: 0x8B78, + 16389: 0x8B79, + 16390: 0x8B7A, + 16391: 0x8B7B, + 16392: 0x8B7C, + 16393: 0x8B7D, + 16394: 0x8B7E, + 16395: 0x8B7F, + 16396: 0x8B80, + 16397: 0x8B81, + 16398: 0x8B82, + 16399: 0x8B83, + 16400: 0x8B84, + 16401: 0x8B85, + 16402: 0x8B86, + 16403: 0x8B87, + 16404: 0x8B88, + 16405: 0x8B89, + 16406: 0x8B8A, + 16407: 0x8B8B, + 16408: 0x8B8C, + 16409: 0x8B8D, + 16410: 0x8B8E, + 16411: 0x8B8F, + 16412: 0x8B90, + 16413: 0x8B91, + 16414: 0x8B92, + 16415: 0x8B93, + 16416: 0x8B94, + 16417: 0x8B95, + 16418: 0x8B96, + 16419: 0x8B97, + 16420: 0x8B98, + 16421: 0x8B99, + 16422: 0x8B9A, + 16423: 0x8B9B, + 16424: 0x8B9C, + 16425: 0x8B9D, + 16426: 0x8B9E, + 16427: 0x8B9F, + 16428: 0x8BAC, + 16429: 0x8BB1, + 16430: 0x8BBB, + 16431: 0x8BC7, + 16432: 0x8BD0, + 16433: 0x8BEA, + 16434: 0x8C09, + 16435: 0x8C1E, + 16436: 0x4F4F, + 16437: 0x6CE8, + 16438: 0x795D, + 16439: 0x9A7B, + 16440: 0x6293, + 16441: 0x722A, + 16442: 0x62FD, + 16443: 0x4E13, + 16444: 0x7816, + 16445: 0x8F6C, + 16446: 0x64B0, + 16447: 0x8D5A, + 16448: 0x7BC6, + 16449: 0x6869, + 16450: 0x5E84, + 16451: 0x88C5, + 16452: 0x5986, + 16453: 0x649E, + 16454: 0x58EE, + 16455: 0x72B6, + 16456: 0x690E, + 16457: 0x9525, + 16458: 0x8FFD, + 16459: 0x8D58, + 16460: 0x5760, + 16461: 0x7F00, + 16462: 0x8C06, + 16463: 0x51C6, + 16464: 0x6349, + 16465: 0x62D9, + 16466: 0x5353, + 16467: 0x684C, + 16468: 0x7422, + 16469: 0x8301, + 16470: 0x914C, + 16471: 0x5544, + 16472: 0x7740, + 16473: 0x707C, + 16474: 0x6D4A, + 16475: 0x5179, + 16476: 0x54A8, + 16477: 0x8D44, + 16478: 0x59FF, + 16479: 0x6ECB, + 16480: 0x6DC4, + 16481: 0x5B5C, + 16482: 0x7D2B, + 16483: 0x4ED4, + 16484: 0x7C7D, + 16485: 0x6ED3, + 16486: 0x5B50, + 16487: 0x81EA, + 16488: 0x6E0D, + 16489: 0x5B57, + 16490: 0x9B03, + 16491: 0x68D5, + 16492: 0x8E2A, + 16493: 0x5B97, + 16494: 0x7EFC, + 16495: 0x603B, + 16496: 0x7EB5, + 16497: 0x90B9, + 16498: 0x8D70, + 16499: 0x594F, + 16500: 0x63CD, + 16501: 0x79DF, + 16502: 0x8DB3, + 16503: 0x5352, + 16504: 0x65CF, + 16505: 0x7956, + 16506: 0x8BC5, + 16507: 0x963B, + 16508: 0x7EC4, + 16509: 0x94BB, + 16510: 0x7E82, + 16511: 0x5634, + 16512: 0x9189, + 16513: 0x6700, + 16514: 0x7F6A, + 16515: 0x5C0A, + 16516: 0x9075, + 16517: 0x6628, + 16518: 0x5DE6, + 16519: 0x4F50, + 16520: 0x67DE, + 16521: 0x505A, + 16522: 0x4F5C, + 16523: 0x5750, + 16524: 0x5EA7, + 16530: 0x8C38, + 16531: 0x8C39, + 16532: 0x8C3A, + 16533: 0x8C3B, + 16534: 0x8C3C, + 16535: 0x8C3D, + 16536: 0x8C3E, + 16537: 0x8C3F, + 16538: 0x8C40, + 16539: 0x8C42, + 16540: 0x8C43, + 16541: 0x8C44, + 16542: 0x8C45, + 16543: 0x8C48, + 16544: 0x8C4A, + 16545: 0x8C4B, + 16546: 0x8C4D, + 16547: 0x8C4E, + 16548: 0x8C4F, + 16549: 0x8C50, + 16550: 0x8C51, + 16551: 0x8C52, + 16552: 0x8C53, + 16553: 0x8C54, + 16554: 0x8C56, + 16555: 0x8C57, + 16556: 0x8C58, + 16557: 0x8C59, + 16558: 0x8C5B, + 16559: 0x8C5C, + 16560: 0x8C5D, + 16561: 0x8C5E, + 16562: 0x8C5F, + 16563: 0x8C60, + 16564: 0x8C63, + 16565: 0x8C64, + 16566: 0x8C65, + 16567: 0x8C66, + 16568: 0x8C67, + 16569: 0x8C68, + 16570: 0x8C69, + 16571: 0x8C6C, + 16572: 0x8C6D, + 16573: 0x8C6E, + 16574: 0x8C6F, + 16575: 0x8C70, + 16576: 0x8C71, + 16577: 0x8C72, + 16578: 0x8C74, + 16579: 0x8C75, + 16580: 0x8C76, + 16581: 0x8C77, + 16582: 0x8C7B, + 16583: 0x8C7C, + 16584: 0x8C7D, + 16585: 0x8C7E, + 16586: 0x8C7F, + 16587: 0x8C80, + 16588: 0x8C81, + 16589: 0x8C83, + 16590: 0x8C84, + 16591: 0x8C86, + 16592: 0x8C87, + 16593: 0x8C88, + 16594: 0x8C8B, + 16595: 0x8C8D, + 16596: 0x8C8E, + 16597: 0x8C8F, + 16598: 0x8C90, + 16599: 0x8C91, + 16600: 0x8C92, + 16601: 0x8C93, + 16602: 0x8C95, + 16603: 0x8C96, + 16604: 0x8C97, + 16605: 0x8C99, + 16606: 0x8C9A, + 16607: 0x8C9B, + 16608: 0x8C9C, + 16609: 0x8C9D, + 16610: 0x8C9E, + 16611: 0x8C9F, + 16612: 0x8CA0, + 16613: 0x8CA1, + 16614: 0x8CA2, + 16615: 0x8CA3, + 16616: 0x8CA4, + 16617: 0x8CA5, + 16618: 0x8CA6, + 16619: 0x8CA7, + 16620: 0x8CA8, + 16621: 0x8CA9, + 16622: 0x8CAA, + 16623: 0x8CAB, + 16624: 0x8CAC, + 16625: 0x8CAD, + 16626: 0x4E8D, + 16627: 0x4E0C, + 16628: 0x5140, + 16629: 0x4E10, + 16630: 0x5EFF, + 16631: 0x5345, + 16632: 0x4E15, + 16633: 0x4E98, + 16634: 0x4E1E, + 16635: 0x9B32, + 16636: 0x5B6C, + 16637: 0x5669, + 16638: 0x4E28, + 16639: 0x79BA, + 16640: 0x4E3F, + 16641: 0x5315, + 16642: 0x4E47, + 16643: 0x592D, + 16644: 0x723B, + 16645: 0x536E, + 16646: 0x6C10, + 16647: 0x56DF, + 16648: 0x80E4, + 16649: 0x9997, + 16650: 0x6BD3, + 16651: 0x777E, + 16652: 0x9F17, + 16653: 0x4E36, + 16654: 0x4E9F, + 16655: 0x9F10, + 16656: 0x4E5C, + 16657: 0x4E69, + 16658: 0x4E93, + 16659: 0x8288, + 16660: 0x5B5B, + 16661: 0x556C, + 16662: 0x560F, + 16663: 0x4EC4, + 16664: 0x538D, + 16665: 0x539D, + 16666: 0x53A3, + 16667: 0x53A5, + 16668: 0x53AE, + 16669: 0x9765, + 16670: 0x8D5D, + 16671: 0x531A, + 16672: 0x53F5, + 16673: 0x5326, + 16674: 0x532E, + 16675: 0x533E, + 16676: 0x8D5C, + 16677: 0x5366, + 16678: 0x5363, + 16679: 0x5202, + 16680: 0x5208, + 16681: 0x520E, + 16682: 0x522D, + 16683: 0x5233, + 16684: 0x523F, + 16685: 0x5240, + 16686: 0x524C, + 16687: 0x525E, + 16688: 0x5261, + 16689: 0x525C, + 16690: 0x84AF, + 16691: 0x527D, + 16692: 0x5282, + 16693: 0x5281, + 16694: 0x5290, + 16695: 0x5293, + 16696: 0x5182, + 16697: 0x7F54, + 16698: 0x4EBB, + 16699: 0x4EC3, + 16700: 0x4EC9, + 16701: 0x4EC2, + 16702: 0x4EE8, + 16703: 0x4EE1, + 16704: 0x4EEB, + 16705: 0x4EDE, + 16706: 0x4F1B, + 16707: 0x4EF3, + 16708: 0x4F22, + 16709: 0x4F64, + 16710: 0x4EF5, + 16711: 0x4F25, + 16712: 0x4F27, + 16713: 0x4F09, + 16714: 0x4F2B, + 16715: 0x4F5E, + 16716: 0x4F67, + 16717: 0x6538, + 16718: 0x4F5A, + 16719: 0x4F5D, + 16720: 0x8CAE, + 16721: 0x8CAF, + 16722: 0x8CB0, + 16723: 0x8CB1, + 16724: 0x8CB2, + 16725: 0x8CB3, + 16726: 0x8CB4, + 16727: 0x8CB5, + 16728: 0x8CB6, + 16729: 0x8CB7, + 16730: 0x8CB8, + 16731: 0x8CB9, + 16732: 0x8CBA, + 16733: 0x8CBB, + 16734: 0x8CBC, + 16735: 0x8CBD, + 16736: 0x8CBE, + 16737: 0x8CBF, + 16738: 0x8CC0, + 16739: 0x8CC1, + 16740: 0x8CC2, + 16741: 0x8CC3, + 16742: 0x8CC4, + 16743: 0x8CC5, + 16744: 0x8CC6, + 16745: 0x8CC7, + 16746: 0x8CC8, + 16747: 0x8CC9, + 16748: 0x8CCA, + 16749: 0x8CCB, + 16750: 0x8CCC, + 16751: 0x8CCD, + 16752: 0x8CCE, + 16753: 0x8CCF, + 16754: 0x8CD0, + 16755: 0x8CD1, + 16756: 0x8CD2, + 16757: 0x8CD3, + 16758: 0x8CD4, + 16759: 0x8CD5, + 16760: 0x8CD6, + 16761: 0x8CD7, + 16762: 0x8CD8, + 16763: 0x8CD9, + 16764: 0x8CDA, + 16765: 0x8CDB, + 16766: 0x8CDC, + 16767: 0x8CDD, + 16768: 0x8CDE, + 16769: 0x8CDF, + 16770: 0x8CE0, + 16771: 0x8CE1, + 16772: 0x8CE2, + 16773: 0x8CE3, + 16774: 0x8CE4, + 16775: 0x8CE5, + 16776: 0x8CE6, + 16777: 0x8CE7, + 16778: 0x8CE8, + 16779: 0x8CE9, + 16780: 0x8CEA, + 16781: 0x8CEB, + 16782: 0x8CEC, + 16783: 0x8CED, + 16784: 0x8CEE, + 16785: 0x8CEF, + 16786: 0x8CF0, + 16787: 0x8CF1, + 16788: 0x8CF2, + 16789: 0x8CF3, + 16790: 0x8CF4, + 16791: 0x8CF5, + 16792: 0x8CF6, + 16793: 0x8CF7, + 16794: 0x8CF8, + 16795: 0x8CF9, + 16796: 0x8CFA, + 16797: 0x8CFB, + 16798: 0x8CFC, + 16799: 0x8CFD, + 16800: 0x8CFE, + 16801: 0x8CFF, + 16802: 0x8D00, + 16803: 0x8D01, + 16804: 0x8D02, + 16805: 0x8D03, + 16806: 0x8D04, + 16807: 0x8D05, + 16808: 0x8D06, + 16809: 0x8D07, + 16810: 0x8D08, + 16811: 0x8D09, + 16812: 0x8D0A, + 16813: 0x8D0B, + 16814: 0x8D0C, + 16815: 0x8D0D, + 16816: 0x4F5F, + 16817: 0x4F57, + 16818: 0x4F32, + 16819: 0x4F3D, + 16820: 0x4F76, + 16821: 0x4F74, + 16822: 0x4F91, + 16823: 0x4F89, + 16824: 0x4F83, + 16825: 0x4F8F, + 16826: 0x4F7E, + 16827: 0x4F7B, + 16828: 0x4FAA, + 16829: 0x4F7C, + 16830: 0x4FAC, + 16831: 0x4F94, + 16832: 0x4FE6, + 16833: 0x4FE8, + 16834: 0x4FEA, + 16835: 0x4FC5, + 16836: 0x4FDA, + 16837: 0x4FE3, + 16838: 0x4FDC, + 16839: 0x4FD1, + 16840: 0x4FDF, + 16841: 0x4FF8, + 16842: 0x5029, + 16843: 0x504C, + 16844: 0x4FF3, + 16845: 0x502C, + 16846: 0x500F, + 16847: 0x502E, + 16848: 0x502D, + 16849: 0x4FFE, + 16850: 0x501C, + 16851: 0x500C, + 16852: 0x5025, + 16853: 0x5028, + 16854: 0x507E, + 16855: 0x5043, + 16856: 0x5055, + 16857: 0x5048, + 16858: 0x504E, + 16859: 0x506C, + 16860: 0x507B, + 16861: 0x50A5, + 16862: 0x50A7, + 16863: 0x50A9, + 16864: 0x50BA, + 16865: 0x50D6, + 16866: 0x5106, + 16867: 0x50ED, + 16868: 0x50EC, + 16869: 0x50E6, + 16870: 0x50EE, + 16871: 0x5107, + 16872: 0x510B, + 16873: 0x4EDD, + 16874: 0x6C3D, + 16875: 0x4F58, + 16876: 0x4F65, + 16877: 0x4FCE, + 16878: 0x9FA0, + 16879: 0x6C46, + 16880: 0x7C74, + 16881: 0x516E, + 16882: 0x5DFD, + 16883: 0x9EC9, + 16884: 0x9998, + 16885: 0x5181, + 16886: 0x5914, + 16887: 0x52F9, + 16888: 0x530D, + 16889: 0x8A07, + 16890: 0x5310, + 16891: 0x51EB, + 16892: 0x5919, + 16893: 0x5155, + 16894: 0x4EA0, + 16895: 0x5156, + 16896: 0x4EB3, + 16897: 0x886E, + 16898: 0x88A4, + 16899: 0x4EB5, + 16900: 0x8114, + 16901: 0x88D2, + 16902: 0x7980, + 16903: 0x5B34, + 16904: 0x8803, + 16905: 0x7FB8, + 16906: 0x51AB, + 16907: 0x51B1, + 16908: 0x51BD, + 16909: 0x51BC, + 16910: 0x8D0E, + 16911: 0x8D0F, + 16912: 0x8D10, + 16913: 0x8D11, + 16914: 0x8D12, + 16915: 0x8D13, + 16916: 0x8D14, + 16917: 0x8D15, + 16918: 0x8D16, + 16919: 0x8D17, + 16920: 0x8D18, + 16921: 0x8D19, + 16922: 0x8D1A, + 16923: 0x8D1B, + 16924: 0x8D1C, + 16925: 0x8D20, + 16926: 0x8D51, + 16927: 0x8D52, + 16928: 0x8D57, + 16929: 0x8D5F, + 16930: 0x8D65, + 16931: 0x8D68, + 16932: 0x8D69, + 16933: 0x8D6A, + 16934: 0x8D6C, + 16935: 0x8D6E, + 16936: 0x8D6F, + 16937: 0x8D71, + 16938: 0x8D72, + 16939: 0x8D78, + 16940: 0x8D79, + 16941: 0x8D7A, + 16942: 0x8D7B, + 16943: 0x8D7C, + 16944: 0x8D7D, + 16945: 0x8D7E, + 16946: 0x8D7F, + 16947: 0x8D80, + 16948: 0x8D82, + 16949: 0x8D83, + 16950: 0x8D86, + 16951: 0x8D87, + 16952: 0x8D88, + 16953: 0x8D89, + 16954: 0x8D8C, + 16955: 0x8D8D, + 16956: 0x8D8E, + 16957: 0x8D8F, + 16958: 0x8D90, + 16959: 0x8D92, + 16960: 0x8D93, + 16961: 0x8D95, + 16962: 0x8D96, + 16963: 0x8D97, + 16964: 0x8D98, + 16965: 0x8D99, + 16966: 0x8D9A, + 16967: 0x8D9B, + 16968: 0x8D9C, + 16969: 0x8D9D, + 16970: 0x8D9E, + 16971: 0x8DA0, + 16972: 0x8DA1, + 16973: 0x8DA2, + 16974: 0x8DA4, + 16975: 0x8DA5, + 16976: 0x8DA6, + 16977: 0x8DA7, + 16978: 0x8DA8, + 16979: 0x8DA9, + 16980: 0x8DAA, + 16981: 0x8DAB, + 16982: 0x8DAC, + 16983: 0x8DAD, + 16984: 0x8DAE, + 16985: 0x8DAF, + 16986: 0x8DB0, + 16987: 0x8DB2, + 16988: 0x8DB6, + 16989: 0x8DB7, + 16990: 0x8DB9, + 16991: 0x8DBB, + 16992: 0x8DBD, + 16993: 0x8DC0, + 16994: 0x8DC1, + 16995: 0x8DC2, + 16996: 0x8DC5, + 16997: 0x8DC7, + 16998: 0x8DC8, + 16999: 0x8DC9, + 17000: 0x8DCA, + 17001: 0x8DCD, + 17002: 0x8DD0, + 17003: 0x8DD2, + 17004: 0x8DD3, + 17005: 0x8DD4, + 17006: 0x51C7, + 17007: 0x5196, + 17008: 0x51A2, + 17009: 0x51A5, + 17010: 0x8BA0, + 17011: 0x8BA6, + 17012: 0x8BA7, + 17013: 0x8BAA, + 17014: 0x8BB4, + 17015: 0x8BB5, + 17016: 0x8BB7, + 17017: 0x8BC2, + 17018: 0x8BC3, + 17019: 0x8BCB, + 17020: 0x8BCF, + 17021: 0x8BCE, + 17022: 0x8BD2, + 17023: 0x8BD3, + 17024: 0x8BD4, + 17025: 0x8BD6, + 17026: 0x8BD8, + 17027: 0x8BD9, + 17028: 0x8BDC, + 17029: 0x8BDF, + 17030: 0x8BE0, + 17031: 0x8BE4, + 17032: 0x8BE8, + 17033: 0x8BE9, + 17034: 0x8BEE, + 17035: 0x8BF0, + 17036: 0x8BF3, + 17037: 0x8BF6, + 17038: 0x8BF9, + 17039: 0x8BFC, + 17040: 0x8BFF, + 17041: 0x8C00, + 17042: 0x8C02, + 17043: 0x8C04, + 17044: 0x8C07, + 17045: 0x8C0C, + 17046: 0x8C0F, + 17047: 0x8C11, + 17048: 0x8C12, + 17049: 0x8C14, + 17050: 0x8C15, + 17051: 0x8C16, + 17052: 0x8C19, + 17053: 0x8C1B, + 17054: 0x8C18, + 17055: 0x8C1D, + 17056: 0x8C1F, + 17057: 0x8C20, + 17058: 0x8C21, + 17059: 0x8C25, + 17060: 0x8C27, + 17061: 0x8C2A, + 17062: 0x8C2B, + 17063: 0x8C2E, + 17064: 0x8C2F, + 17065: 0x8C32, + 17066: 0x8C33, + 17067: 0x8C35, + 17068: 0x8C36, + 17069: 0x5369, + 17070: 0x537A, + 17071: 0x961D, + 17072: 0x9622, + 17073: 0x9621, + 17074: 0x9631, + 17075: 0x962A, + 17076: 0x963D, + 17077: 0x963C, + 17078: 0x9642, + 17079: 0x9649, + 17080: 0x9654, + 17081: 0x965F, + 17082: 0x9667, + 17083: 0x966C, + 17084: 0x9672, + 17085: 0x9674, + 17086: 0x9688, + 17087: 0x968D, + 17088: 0x9697, + 17089: 0x96B0, + 17090: 0x9097, + 17091: 0x909B, + 17092: 0x909D, + 17093: 0x9099, + 17094: 0x90AC, + 17095: 0x90A1, + 17096: 0x90B4, + 17097: 0x90B3, + 17098: 0x90B6, + 17099: 0x90BA, + 17100: 0x8DD5, + 17101: 0x8DD8, + 17102: 0x8DD9, + 17103: 0x8DDC, + 17104: 0x8DE0, + 17105: 0x8DE1, + 17106: 0x8DE2, + 17107: 0x8DE5, + 17108: 0x8DE6, + 17109: 0x8DE7, + 17110: 0x8DE9, + 17111: 0x8DED, + 17112: 0x8DEE, + 17113: 0x8DF0, + 17114: 0x8DF1, + 17115: 0x8DF2, + 17116: 0x8DF4, + 17117: 0x8DF6, + 17118: 0x8DFC, + 17119: 0x8DFE, + 17120: 0x8DFF, + 17121: 0x8E00, + 17122: 0x8E01, + 17123: 0x8E02, + 17124: 0x8E03, + 17125: 0x8E04, + 17126: 0x8E06, + 17127: 0x8E07, + 17128: 0x8E08, + 17129: 0x8E0B, + 17130: 0x8E0D, + 17131: 0x8E0E, + 17132: 0x8E10, + 17133: 0x8E11, + 17134: 0x8E12, + 17135: 0x8E13, + 17136: 0x8E15, + 17137: 0x8E16, + 17138: 0x8E17, + 17139: 0x8E18, + 17140: 0x8E19, + 17141: 0x8E1A, + 17142: 0x8E1B, + 17143: 0x8E1C, + 17144: 0x8E20, + 17145: 0x8E21, + 17146: 0x8E24, + 17147: 0x8E25, + 17148: 0x8E26, + 17149: 0x8E27, + 17150: 0x8E28, + 17151: 0x8E2B, + 17152: 0x8E2D, + 17153: 0x8E30, + 17154: 0x8E32, + 17155: 0x8E33, + 17156: 0x8E34, + 17157: 0x8E36, + 17158: 0x8E37, + 17159: 0x8E38, + 17160: 0x8E3B, + 17161: 0x8E3C, + 17162: 0x8E3E, + 17163: 0x8E3F, + 17164: 0x8E43, + 17165: 0x8E45, + 17166: 0x8E46, + 17167: 0x8E4C, + 17168: 0x8E4D, + 17169: 0x8E4E, + 17170: 0x8E4F, + 17171: 0x8E50, + 17172: 0x8E53, + 17173: 0x8E54, + 17174: 0x8E55, + 17175: 0x8E56, + 17176: 0x8E57, + 17177: 0x8E58, + 17178: 0x8E5A, + 17179: 0x8E5B, + 17180: 0x8E5C, + 17181: 0x8E5D, + 17182: 0x8E5E, + 17183: 0x8E5F, + 17184: 0x8E60, + 17185: 0x8E61, + 17186: 0x8E62, + 17187: 0x8E63, + 17188: 0x8E64, + 17189: 0x8E65, + 17190: 0x8E67, + 17191: 0x8E68, + 17192: 0x8E6A, + 17193: 0x8E6B, + 17194: 0x8E6E, + 17195: 0x8E71, + 17196: 0x90B8, + 17197: 0x90B0, + 17198: 0x90CF, + 17199: 0x90C5, + 17200: 0x90BE, + 17201: 0x90D0, + 17202: 0x90C4, + 17203: 0x90C7, + 17204: 0x90D3, + 17205: 0x90E6, + 17206: 0x90E2, + 17207: 0x90DC, + 17208: 0x90D7, + 17209: 0x90DB, + 17210: 0x90EB, + 17211: 0x90EF, + 17212: 0x90FE, + 17213: 0x9104, + 17214: 0x9122, + 17215: 0x911E, + 17216: 0x9123, + 17217: 0x9131, + 17218: 0x912F, + 17219: 0x9139, + 17220: 0x9143, + 17221: 0x9146, + 17222: 0x520D, + 17223: 0x5942, + 17224: 0x52A2, + 17225: 0x52AC, + 17226: 0x52AD, + 17227: 0x52BE, + 17228: 0x54FF, + 17229: 0x52D0, + 17230: 0x52D6, + 17231: 0x52F0, + 17232: 0x53DF, + 17233: 0x71EE, + 17234: 0x77CD, + 17235: 0x5EF4, + 17236: 0x51F5, + 17237: 0x51FC, + 17238: 0x9B2F, + 17239: 0x53B6, + 17240: 0x5F01, + 17241: 0x755A, + 17242: 0x5DEF, + 17243: 0x574C, + 17244: 0x57A9, + 17245: 0x57A1, + 17246: 0x587E, + 17247: 0x58BC, + 17248: 0x58C5, + 17249: 0x58D1, + 17250: 0x5729, + 17251: 0x572C, + 17252: 0x572A, + 17253: 0x5733, + 17254: 0x5739, + 17255: 0x572E, + 17256: 0x572F, + 17257: 0x575C, + 17258: 0x573B, + 17259: 0x5742, + 17260: 0x5769, + 17261: 0x5785, + 17262: 0x576B, + 17263: 0x5786, + 17264: 0x577C, + 17265: 0x577B, + 17266: 0x5768, + 17267: 0x576D, + 17268: 0x5776, + 17269: 0x5773, + 17270: 0x57AD, + 17271: 0x57A4, + 17272: 0x578C, + 17273: 0x57B2, + 17274: 0x57CF, + 17275: 0x57A7, + 17276: 0x57B4, + 17277: 0x5793, + 17278: 0x57A0, + 17279: 0x57D5, + 17280: 0x57D8, + 17281: 0x57DA, + 17282: 0x57D9, + 17283: 0x57D2, + 17284: 0x57B8, + 17285: 0x57F4, + 17286: 0x57EF, + 17287: 0x57F8, + 17288: 0x57E4, + 17289: 0x57DD, + 17290: 0x8E73, + 17291: 0x8E75, + 17292: 0x8E77, + 17293: 0x8E78, + 17294: 0x8E79, + 17295: 0x8E7A, + 17296: 0x8E7B, + 17297: 0x8E7D, + 17298: 0x8E7E, + 17299: 0x8E80, + 17300: 0x8E82, + 17301: 0x8E83, + 17302: 0x8E84, + 17303: 0x8E86, + 17304: 0x8E88, + 17305: 0x8E89, + 17306: 0x8E8A, + 17307: 0x8E8B, + 17308: 0x8E8C, + 17309: 0x8E8D, + 17310: 0x8E8E, + 17311: 0x8E91, + 17312: 0x8E92, + 17313: 0x8E93, + 17314: 0x8E95, + 17315: 0x8E96, + 17316: 0x8E97, + 17317: 0x8E98, + 17318: 0x8E99, + 17319: 0x8E9A, + 17320: 0x8E9B, + 17321: 0x8E9D, + 17322: 0x8E9F, + 17323: 0x8EA0, + 17324: 0x8EA1, + 17325: 0x8EA2, + 17326: 0x8EA3, + 17327: 0x8EA4, + 17328: 0x8EA5, + 17329: 0x8EA6, + 17330: 0x8EA7, + 17331: 0x8EA8, + 17332: 0x8EA9, + 17333: 0x8EAA, + 17334: 0x8EAD, + 17335: 0x8EAE, + 17336: 0x8EB0, + 17337: 0x8EB1, + 17338: 0x8EB3, + 17339: 0x8EB4, + 17340: 0x8EB5, + 17341: 0x8EB6, + 17342: 0x8EB7, + 17343: 0x8EB8, + 17344: 0x8EB9, + 17345: 0x8EBB, + 17346: 0x8EBC, + 17347: 0x8EBD, + 17348: 0x8EBE, + 17349: 0x8EBF, + 17350: 0x8EC0, + 17351: 0x8EC1, + 17352: 0x8EC2, + 17353: 0x8EC3, + 17354: 0x8EC4, + 17355: 0x8EC5, + 17356: 0x8EC6, + 17357: 0x8EC7, + 17358: 0x8EC8, + 17359: 0x8EC9, + 17360: 0x8ECA, + 17361: 0x8ECB, + 17362: 0x8ECC, + 17363: 0x8ECD, + 17364: 0x8ECF, + 17365: 0x8ED0, + 17366: 0x8ED1, + 17367: 0x8ED2, + 17368: 0x8ED3, + 17369: 0x8ED4, + 17370: 0x8ED5, + 17371: 0x8ED6, + 17372: 0x8ED7, + 17373: 0x8ED8, + 17374: 0x8ED9, + 17375: 0x8EDA, + 17376: 0x8EDB, + 17377: 0x8EDC, + 17378: 0x8EDD, + 17379: 0x8EDE, + 17380: 0x8EDF, + 17381: 0x8EE0, + 17382: 0x8EE1, + 17383: 0x8EE2, + 17384: 0x8EE3, + 17385: 0x8EE4, + 17386: 0x580B, + 17387: 0x580D, + 17388: 0x57FD, + 17389: 0x57ED, + 17390: 0x5800, + 17391: 0x581E, + 17392: 0x5819, + 17393: 0x5844, + 17394: 0x5820, + 17395: 0x5865, + 17396: 0x586C, + 17397: 0x5881, + 17398: 0x5889, + 17399: 0x589A, + 17400: 0x5880, + 17401: 0x99A8, + 17402: 0x9F19, + 17403: 0x61FF, + 17404: 0x8279, + 17405: 0x827D, + 17406: 0x827F, + 17407: 0x828F, + 17408: 0x828A, + 17409: 0x82A8, + 17410: 0x8284, + 17411: 0x828E, + 17412: 0x8291, + 17413: 0x8297, + 17414: 0x8299, + 17415: 0x82AB, + 17416: 0x82B8, + 17417: 0x82BE, + 17418: 0x82B0, + 17419: 0x82C8, + 17420: 0x82CA, + 17421: 0x82E3, + 17422: 0x8298, + 17423: 0x82B7, + 17424: 0x82AE, + 17425: 0x82CB, + 17426: 0x82CC, + 17427: 0x82C1, + 17428: 0x82A9, + 17429: 0x82B4, + 17430: 0x82A1, + 17431: 0x82AA, + 17432: 0x829F, + 17433: 0x82C4, + 17434: 0x82CE, + 17435: 0x82A4, + 17436: 0x82E1, + 17437: 0x8309, + 17438: 0x82F7, + 17439: 0x82E4, + 17440: 0x830F, + 17441: 0x8307, + 17442: 0x82DC, + 17443: 0x82F4, + 17444: 0x82D2, + 17445: 0x82D8, + 17446: 0x830C, + 17447: 0x82FB, + 17448: 0x82D3, + 17449: 0x8311, + 17450: 0x831A, + 17451: 0x8306, + 17452: 0x8314, + 17453: 0x8315, + 17454: 0x82E0, + 17455: 0x82D5, + 17456: 0x831C, + 17457: 0x8351, + 17458: 0x835B, + 17459: 0x835C, + 17460: 0x8308, + 17461: 0x8392, + 17462: 0x833C, + 17463: 0x8334, + 17464: 0x8331, + 17465: 0x839B, + 17466: 0x835E, + 17467: 0x832F, + 17468: 0x834F, + 17469: 0x8347, + 17470: 0x8343, + 17471: 0x835F, + 17472: 0x8340, + 17473: 0x8317, + 17474: 0x8360, + 17475: 0x832D, + 17476: 0x833A, + 17477: 0x8333, + 17478: 0x8366, + 17479: 0x8365, + 17480: 0x8EE5, + 17481: 0x8EE6, + 17482: 0x8EE7, + 17483: 0x8EE8, + 17484: 0x8EE9, + 17485: 0x8EEA, + 17486: 0x8EEB, + 17487: 0x8EEC, + 17488: 0x8EED, + 17489: 0x8EEE, + 17490: 0x8EEF, + 17491: 0x8EF0, + 17492: 0x8EF1, + 17493: 0x8EF2, + 17494: 0x8EF3, + 17495: 0x8EF4, + 17496: 0x8EF5, + 17497: 0x8EF6, + 17498: 0x8EF7, + 17499: 0x8EF8, + 17500: 0x8EF9, + 17501: 0x8EFA, + 17502: 0x8EFB, + 17503: 0x8EFC, + 17504: 0x8EFD, + 17505: 0x8EFE, + 17506: 0x8EFF, + 17507: 0x8F00, + 17508: 0x8F01, + 17509: 0x8F02, + 17510: 0x8F03, + 17511: 0x8F04, + 17512: 0x8F05, + 17513: 0x8F06, + 17514: 0x8F07, + 17515: 0x8F08, + 17516: 0x8F09, + 17517: 0x8F0A, + 17518: 0x8F0B, + 17519: 0x8F0C, + 17520: 0x8F0D, + 17521: 0x8F0E, + 17522: 0x8F0F, + 17523: 0x8F10, + 17524: 0x8F11, + 17525: 0x8F12, + 17526: 0x8F13, + 17527: 0x8F14, + 17528: 0x8F15, + 17529: 0x8F16, + 17530: 0x8F17, + 17531: 0x8F18, + 17532: 0x8F19, + 17533: 0x8F1A, + 17534: 0x8F1B, + 17535: 0x8F1C, + 17536: 0x8F1D, + 17537: 0x8F1E, + 17538: 0x8F1F, + 17539: 0x8F20, + 17540: 0x8F21, + 17541: 0x8F22, + 17542: 0x8F23, + 17543: 0x8F24, + 17544: 0x8F25, + 17545: 0x8F26, + 17546: 0x8F27, + 17547: 0x8F28, + 17548: 0x8F29, + 17549: 0x8F2A, + 17550: 0x8F2B, + 17551: 0x8F2C, + 17552: 0x8F2D, + 17553: 0x8F2E, + 17554: 0x8F2F, + 17555: 0x8F30, + 17556: 0x8F31, + 17557: 0x8F32, + 17558: 0x8F33, + 17559: 0x8F34, + 17560: 0x8F35, + 17561: 0x8F36, + 17562: 0x8F37, + 17563: 0x8F38, + 17564: 0x8F39, + 17565: 0x8F3A, + 17566: 0x8F3B, + 17567: 0x8F3C, + 17568: 0x8F3D, + 17569: 0x8F3E, + 17570: 0x8F3F, + 17571: 0x8F40, + 17572: 0x8F41, + 17573: 0x8F42, + 17574: 0x8F43, + 17575: 0x8F44, + 17576: 0x8368, + 17577: 0x831B, + 17578: 0x8369, + 17579: 0x836C, + 17580: 0x836A, + 17581: 0x836D, + 17582: 0x836E, + 17583: 0x83B0, + 17584: 0x8378, + 17585: 0x83B3, + 17586: 0x83B4, + 17587: 0x83A0, + 17588: 0x83AA, + 17589: 0x8393, + 17590: 0x839C, + 17591: 0x8385, + 17592: 0x837C, + 17593: 0x83B6, + 17594: 0x83A9, + 17595: 0x837D, + 17596: 0x83B8, + 17597: 0x837B, + 17598: 0x8398, + 17599: 0x839E, + 17600: 0x83A8, + 17601: 0x83BA, + 17602: 0x83BC, + 17603: 0x83C1, + 17604: 0x8401, + 17605: 0x83E5, + 17606: 0x83D8, + 17607: 0x5807, + 17608: 0x8418, + 17609: 0x840B, + 17610: 0x83DD, + 17611: 0x83FD, + 17612: 0x83D6, + 17613: 0x841C, + 17614: 0x8438, + 17615: 0x8411, + 17616: 0x8406, + 17617: 0x83D4, + 17618: 0x83DF, + 17619: 0x840F, + 17620: 0x8403, + 17621: 0x83F8, + 17622: 0x83F9, + 17623: 0x83EA, + 17624: 0x83C5, + 17625: 0x83C0, + 17626: 0x8426, + 17627: 0x83F0, + 17628: 0x83E1, + 17629: 0x845C, + 17630: 0x8451, + 17631: 0x845A, + 17632: 0x8459, + 17633: 0x8473, + 17634: 0x8487, + 17635: 0x8488, + 17636: 0x847A, + 17637: 0x8489, + 17638: 0x8478, + 17639: 0x843C, + 17640: 0x8446, + 17641: 0x8469, + 17642: 0x8476, + 17643: 0x848C, + 17644: 0x848E, + 17645: 0x8431, + 17646: 0x846D, + 17647: 0x84C1, + 17648: 0x84CD, + 17649: 0x84D0, + 17650: 0x84E6, + 17651: 0x84BD, + 17652: 0x84D3, + 17653: 0x84CA, + 17654: 0x84BF, + 17655: 0x84BA, + 17656: 0x84E0, + 17657: 0x84A1, + 17658: 0x84B9, + 17659: 0x84B4, + 17660: 0x8497, + 17661: 0x84E5, + 17662: 0x84E3, + 17663: 0x850C, + 17664: 0x750D, + 17665: 0x8538, + 17666: 0x84F0, + 17667: 0x8539, + 17668: 0x851F, + 17669: 0x853A, + 17670: 0x8F45, + 17671: 0x8F46, + 17672: 0x8F47, + 17673: 0x8F48, + 17674: 0x8F49, + 17675: 0x8F4A, + 17676: 0x8F4B, + 17677: 0x8F4C, + 17678: 0x8F4D, + 17679: 0x8F4E, + 17680: 0x8F4F, + 17681: 0x8F50, + 17682: 0x8F51, + 17683: 0x8F52, + 17684: 0x8F53, + 17685: 0x8F54, + 17686: 0x8F55, + 17687: 0x8F56, + 17688: 0x8F57, + 17689: 0x8F58, + 17690: 0x8F59, + 17691: 0x8F5A, + 17692: 0x8F5B, + 17693: 0x8F5C, + 17694: 0x8F5D, + 17695: 0x8F5E, + 17696: 0x8F5F, + 17697: 0x8F60, + 17698: 0x8F61, + 17699: 0x8F62, + 17700: 0x8F63, + 17701: 0x8F64, + 17702: 0x8F65, + 17703: 0x8F6A, + 17704: 0x8F80, + 17705: 0x8F8C, + 17706: 0x8F92, + 17707: 0x8F9D, + 17708: 0x8FA0, + 17709: 0x8FA1, + 17710: 0x8FA2, + 17711: 0x8FA4, + 17712: 0x8FA5, + 17713: 0x8FA6, + 17714: 0x8FA7, + 17715: 0x8FAA, + 17716: 0x8FAC, + 17717: 0x8FAD, + 17718: 0x8FAE, + 17719: 0x8FAF, + 17720: 0x8FB2, + 17721: 0x8FB3, + 17722: 0x8FB4, + 17723: 0x8FB5, + 17724: 0x8FB7, + 17725: 0x8FB8, + 17726: 0x8FBA, + 17727: 0x8FBB, + 17728: 0x8FBC, + 17729: 0x8FBF, + 17730: 0x8FC0, + 17731: 0x8FC3, + 17732: 0x8FC6, + 17733: 0x8FC9, + 17734: 0x8FCA, + 17735: 0x8FCB, + 17736: 0x8FCC, + 17737: 0x8FCD, + 17738: 0x8FCF, + 17739: 0x8FD2, + 17740: 0x8FD6, + 17741: 0x8FD7, + 17742: 0x8FDA, + 17743: 0x8FE0, + 17744: 0x8FE1, + 17745: 0x8FE3, + 17746: 0x8FE7, + 17747: 0x8FEC, + 17748: 0x8FEF, + 17749: 0x8FF1, + 17750: 0x8FF2, + 17751: 0x8FF4, + 17752: 0x8FF5, + 17753: 0x8FF6, + 17754: 0x8FFA, + 17755: 0x8FFB, + 17756: 0x8FFC, + 17757: 0x8FFE, + 17758: 0x8FFF, + 17759: 0x9007, + 17760: 0x9008, + 17761: 0x900C, + 17762: 0x900E, + 17763: 0x9013, + 17764: 0x9015, + 17765: 0x9018, + 17766: 0x8556, + 17767: 0x853B, + 17768: 0x84FF, + 17769: 0x84FC, + 17770: 0x8559, + 17771: 0x8548, + 17772: 0x8568, + 17773: 0x8564, + 17774: 0x855E, + 17775: 0x857A, + 17776: 0x77A2, + 17777: 0x8543, + 17778: 0x8572, + 17779: 0x857B, + 17780: 0x85A4, + 17781: 0x85A8, + 17782: 0x8587, + 17783: 0x858F, + 17784: 0x8579, + 17785: 0x85AE, + 17786: 0x859C, + 17787: 0x8585, + 17788: 0x85B9, + 17789: 0x85B7, + 17790: 0x85B0, + 17791: 0x85D3, + 17792: 0x85C1, + 17793: 0x85DC, + 17794: 0x85FF, + 17795: 0x8627, + 17796: 0x8605, + 17797: 0x8629, + 17798: 0x8616, + 17799: 0x863C, + 17800: 0x5EFE, + 17801: 0x5F08, + 17802: 0x593C, + 17803: 0x5941, + 17804: 0x8037, + 17805: 0x5955, + 17806: 0x595A, + 17807: 0x5958, + 17808: 0x530F, + 17809: 0x5C22, + 17810: 0x5C25, + 17811: 0x5C2C, + 17812: 0x5C34, + 17813: 0x624C, + 17814: 0x626A, + 17815: 0x629F, + 17816: 0x62BB, + 17817: 0x62CA, + 17818: 0x62DA, + 17819: 0x62D7, + 17820: 0x62EE, + 17821: 0x6322, + 17822: 0x62F6, + 17823: 0x6339, + 17824: 0x634B, + 17825: 0x6343, + 17826: 0x63AD, + 17827: 0x63F6, + 17828: 0x6371, + 17829: 0x637A, + 17830: 0x638E, + 17831: 0x63B4, + 17832: 0x636D, + 17833: 0x63AC, + 17834: 0x638A, + 17835: 0x6369, + 17836: 0x63AE, + 17837: 0x63BC, + 17838: 0x63F2, + 17839: 0x63F8, + 17840: 0x63E0, + 17841: 0x63FF, + 17842: 0x63C4, + 17843: 0x63DE, + 17844: 0x63CE, + 17845: 0x6452, + 17846: 0x63C6, + 17847: 0x63BE, + 17848: 0x6445, + 17849: 0x6441, + 17850: 0x640B, + 17851: 0x641B, + 17852: 0x6420, + 17853: 0x640C, + 17854: 0x6426, + 17855: 0x6421, + 17856: 0x645E, + 17857: 0x6484, + 17858: 0x646D, + 17859: 0x6496, + 17860: 0x9019, + 17861: 0x901C, + 17862: 0x9023, + 17863: 0x9024, + 17864: 0x9025, + 17865: 0x9027, + 17866: 0x9028, + 17867: 0x9029, + 17868: 0x902A, + 17869: 0x902B, + 17870: 0x902C, + 17871: 0x9030, + 17872: 0x9031, + 17873: 0x9032, + 17874: 0x9033, + 17875: 0x9034, + 17876: 0x9037, + 17877: 0x9039, + 17878: 0x903A, + 17879: 0x903D, + 17880: 0x903F, + 17881: 0x9040, + 17882: 0x9043, + 17883: 0x9045, + 17884: 0x9046, + 17885: 0x9048, + 17886: 0x9049, + 17887: 0x904A, + 17888: 0x904B, + 17889: 0x904C, + 17890: 0x904E, + 17891: 0x9054, + 17892: 0x9055, + 17893: 0x9056, + 17894: 0x9059, + 17895: 0x905A, + 17896: 0x905C, + 17897: 0x905D, + 17898: 0x905E, + 17899: 0x905F, + 17900: 0x9060, + 17901: 0x9061, + 17902: 0x9064, + 17903: 0x9066, + 17904: 0x9067, + 17905: 0x9069, + 17906: 0x906A, + 17907: 0x906B, + 17908: 0x906C, + 17909: 0x906F, + 17910: 0x9070, + 17911: 0x9071, + 17912: 0x9072, + 17913: 0x9073, + 17914: 0x9076, + 17915: 0x9077, + 17916: 0x9078, + 17917: 0x9079, + 17918: 0x907A, + 17919: 0x907B, + 17920: 0x907C, + 17921: 0x907E, + 17922: 0x9081, + 17923: 0x9084, + 17924: 0x9085, + 17925: 0x9086, + 17926: 0x9087, + 17927: 0x9089, + 17928: 0x908A, + 17929: 0x908C, + 17930: 0x908D, + 17931: 0x908E, + 17932: 0x908F, + 17933: 0x9090, + 17934: 0x9092, + 17935: 0x9094, + 17936: 0x9096, + 17937: 0x9098, + 17938: 0x909A, + 17939: 0x909C, + 17940: 0x909E, + 17941: 0x909F, + 17942: 0x90A0, + 17943: 0x90A4, + 17944: 0x90A5, + 17945: 0x90A7, + 17946: 0x90A8, + 17947: 0x90A9, + 17948: 0x90AB, + 17949: 0x90AD, + 17950: 0x90B2, + 17951: 0x90B7, + 17952: 0x90BC, + 17953: 0x90BD, + 17954: 0x90BF, + 17955: 0x90C0, + 17956: 0x647A, + 17957: 0x64B7, + 17958: 0x64B8, + 17959: 0x6499, + 17960: 0x64BA, + 17961: 0x64C0, + 17962: 0x64D0, + 17963: 0x64D7, + 17964: 0x64E4, + 17965: 0x64E2, + 17966: 0x6509, + 17967: 0x6525, + 17968: 0x652E, + 17969: 0x5F0B, + 17970: 0x5FD2, + 17971: 0x7519, + 17972: 0x5F11, + 17973: 0x535F, + 17974: 0x53F1, + 17975: 0x53FD, + 17976: 0x53E9, + 17977: 0x53E8, + 17978: 0x53FB, + 17979: 0x5412, + 17980: 0x5416, + 17981: 0x5406, + 17982: 0x544B, + 17983: 0x5452, + 17984: 0x5453, + 17985: 0x5454, + 17986: 0x5456, + 17987: 0x5443, + 17988: 0x5421, + 17989: 0x5457, + 17990: 0x5459, + 17991: 0x5423, + 17992: 0x5432, + 17993: 0x5482, + 17994: 0x5494, + 17995: 0x5477, + 17996: 0x5471, + 17997: 0x5464, + 17998: 0x549A, + 17999: 0x549B, + 18000: 0x5484, + 18001: 0x5476, + 18002: 0x5466, + 18003: 0x549D, + 18004: 0x54D0, + 18005: 0x54AD, + 18006: 0x54C2, + 18007: 0x54B4, + 18008: 0x54D2, + 18009: 0x54A7, + 18010: 0x54A6, + 18011: 0x54D3, + 18012: 0x54D4, + 18013: 0x5472, + 18014: 0x54A3, + 18015: 0x54D5, + 18016: 0x54BB, + 18017: 0x54BF, + 18018: 0x54CC, + 18019: 0x54D9, + 18020: 0x54DA, + 18021: 0x54DC, + 18022: 0x54A9, + 18023: 0x54AA, + 18024: 0x54A4, + 18025: 0x54DD, + 18026: 0x54CF, + 18027: 0x54DE, + 18028: 0x551B, + 18029: 0x54E7, + 18030: 0x5520, + 18031: 0x54FD, + 18032: 0x5514, + 18033: 0x54F3, + 18034: 0x5522, + 18035: 0x5523, + 18036: 0x550F, + 18037: 0x5511, + 18038: 0x5527, + 18039: 0x552A, + 18040: 0x5567, + 18041: 0x558F, + 18042: 0x55B5, + 18043: 0x5549, + 18044: 0x556D, + 18045: 0x5541, + 18046: 0x5555, + 18047: 0x553F, + 18048: 0x5550, + 18049: 0x553C, + 18050: 0x90C2, + 18051: 0x90C3, + 18052: 0x90C6, + 18053: 0x90C8, + 18054: 0x90C9, + 18055: 0x90CB, + 18056: 0x90CC, + 18057: 0x90CD, + 18058: 0x90D2, + 18059: 0x90D4, + 18060: 0x90D5, + 18061: 0x90D6, + 18062: 0x90D8, + 18063: 0x90D9, + 18064: 0x90DA, + 18065: 0x90DE, + 18066: 0x90DF, + 18067: 0x90E0, + 18068: 0x90E3, + 18069: 0x90E4, + 18070: 0x90E5, + 18071: 0x90E9, + 18072: 0x90EA, + 18073: 0x90EC, + 18074: 0x90EE, + 18075: 0x90F0, + 18076: 0x90F1, + 18077: 0x90F2, + 18078: 0x90F3, + 18079: 0x90F5, + 18080: 0x90F6, + 18081: 0x90F7, + 18082: 0x90F9, + 18083: 0x90FA, + 18084: 0x90FB, + 18085: 0x90FC, + 18086: 0x90FF, + 18087: 0x9100, + 18088: 0x9101, + 18089: 0x9103, + 18090: 0x9105, + 18091: 0x9106, + 18092: 0x9107, + 18093: 0x9108, + 18094: 0x9109, + 18095: 0x910A, + 18096: 0x910B, + 18097: 0x910C, + 18098: 0x910D, + 18099: 0x910E, + 18100: 0x910F, + 18101: 0x9110, + 18102: 0x9111, + 18103: 0x9112, + 18104: 0x9113, + 18105: 0x9114, + 18106: 0x9115, + 18107: 0x9116, + 18108: 0x9117, + 18109: 0x9118, + 18110: 0x911A, + 18111: 0x911B, + 18112: 0x911C, + 18113: 0x911D, + 18114: 0x911F, + 18115: 0x9120, + 18116: 0x9121, + 18117: 0x9124, + 18118: 0x9125, + 18119: 0x9126, + 18120: 0x9127, + 18121: 0x9128, + 18122: 0x9129, + 18123: 0x912A, + 18124: 0x912B, + 18125: 0x912C, + 18126: 0x912D, + 18127: 0x912E, + 18128: 0x9130, + 18129: 0x9132, + 18130: 0x9133, + 18131: 0x9134, + 18132: 0x9135, + 18133: 0x9136, + 18134: 0x9137, + 18135: 0x9138, + 18136: 0x913A, + 18137: 0x913B, + 18138: 0x913C, + 18139: 0x913D, + 18140: 0x913E, + 18141: 0x913F, + 18142: 0x9140, + 18143: 0x9141, + 18144: 0x9142, + 18145: 0x9144, + 18146: 0x5537, + 18147: 0x5556, + 18148: 0x5575, + 18149: 0x5576, + 18150: 0x5577, + 18151: 0x5533, + 18152: 0x5530, + 18153: 0x555C, + 18154: 0x558B, + 18155: 0x55D2, + 18156: 0x5583, + 18157: 0x55B1, + 18158: 0x55B9, + 18159: 0x5588, + 18160: 0x5581, + 18161: 0x559F, + 18162: 0x557E, + 18163: 0x55D6, + 18164: 0x5591, + 18165: 0x557B, + 18166: 0x55DF, + 18167: 0x55BD, + 18168: 0x55BE, + 18169: 0x5594, + 18170: 0x5599, + 18171: 0x55EA, + 18172: 0x55F7, + 18173: 0x55C9, + 18174: 0x561F, + 18175: 0x55D1, + 18176: 0x55EB, + 18177: 0x55EC, + 18178: 0x55D4, + 18179: 0x55E6, + 18180: 0x55DD, + 18181: 0x55C4, + 18182: 0x55EF, + 18183: 0x55E5, + 18184: 0x55F2, + 18185: 0x55F3, + 18186: 0x55CC, + 18187: 0x55CD, + 18188: 0x55E8, + 18189: 0x55F5, + 18190: 0x55E4, + 18191: 0x8F94, + 18192: 0x561E, + 18193: 0x5608, + 18194: 0x560C, + 18195: 0x5601, + 18196: 0x5624, + 18197: 0x5623, + 18198: 0x55FE, + 18199: 0x5600, + 18200: 0x5627, + 18201: 0x562D, + 18202: 0x5658, + 18203: 0x5639, + 18204: 0x5657, + 18205: 0x562C, + 18206: 0x564D, + 18207: 0x5662, + 18208: 0x5659, + 18209: 0x565C, + 18210: 0x564C, + 18211: 0x5654, + 18212: 0x5686, + 18213: 0x5664, + 18214: 0x5671, + 18215: 0x566B, + 18216: 0x567B, + 18217: 0x567C, + 18218: 0x5685, + 18219: 0x5693, + 18220: 0x56AF, + 18221: 0x56D4, + 18222: 0x56D7, + 18223: 0x56DD, + 18224: 0x56E1, + 18225: 0x56F5, + 18226: 0x56EB, + 18227: 0x56F9, + 18228: 0x56FF, + 18229: 0x5704, + 18230: 0x570A, + 18231: 0x5709, + 18232: 0x571C, + 18233: 0x5E0F, + 18234: 0x5E19, + 18235: 0x5E14, + 18236: 0x5E11, + 18237: 0x5E31, + 18238: 0x5E3B, + 18239: 0x5E3C, + 18240: 0x9145, + 18241: 0x9147, + 18242: 0x9148, + 18243: 0x9151, + 18244: 0x9153, + 18245: 0x9154, + 18246: 0x9155, + 18247: 0x9156, + 18248: 0x9158, + 18249: 0x9159, + 18250: 0x915B, + 18251: 0x915C, + 18252: 0x915F, + 18253: 0x9160, + 18254: 0x9166, + 18255: 0x9167, + 18256: 0x9168, + 18257: 0x916B, + 18258: 0x916D, + 18259: 0x9173, + 18260: 0x917A, + 18261: 0x917B, + 18262: 0x917C, + 18263: 0x9180, + 18264: 0x9181, + 18265: 0x9182, + 18266: 0x9183, + 18267: 0x9184, + 18268: 0x9186, + 18269: 0x9188, + 18270: 0x918A, + 18271: 0x918E, + 18272: 0x918F, + 18273: 0x9193, + 18274: 0x9194, + 18275: 0x9195, + 18276: 0x9196, + 18277: 0x9197, + 18278: 0x9198, + 18279: 0x9199, + 18280: 0x919C, + 18281: 0x919D, + 18282: 0x919E, + 18283: 0x919F, + 18284: 0x91A0, + 18285: 0x91A1, + 18286: 0x91A4, + 18287: 0x91A5, + 18288: 0x91A6, + 18289: 0x91A7, + 18290: 0x91A8, + 18291: 0x91A9, + 18292: 0x91AB, + 18293: 0x91AC, + 18294: 0x91B0, + 18295: 0x91B1, + 18296: 0x91B2, + 18297: 0x91B3, + 18298: 0x91B6, + 18299: 0x91B7, + 18300: 0x91B8, + 18301: 0x91B9, + 18302: 0x91BB, + 18303: 0x91BC, + 18304: 0x91BD, + 18305: 0x91BE, + 18306: 0x91BF, + 18307: 0x91C0, + 18308: 0x91C1, + 18309: 0x91C2, + 18310: 0x91C3, + 18311: 0x91C4, + 18312: 0x91C5, + 18313: 0x91C6, + 18314: 0x91C8, + 18315: 0x91CB, + 18316: 0x91D0, + 18317: 0x91D2, + 18318: 0x91D3, + 18319: 0x91D4, + 18320: 0x91D5, + 18321: 0x91D6, + 18322: 0x91D7, + 18323: 0x91D8, + 18324: 0x91D9, + 18325: 0x91DA, + 18326: 0x91DB, + 18327: 0x91DD, + 18328: 0x91DE, + 18329: 0x91DF, + 18330: 0x91E0, + 18331: 0x91E1, + 18332: 0x91E2, + 18333: 0x91E3, + 18334: 0x91E4, + 18335: 0x91E5, + 18336: 0x5E37, + 18337: 0x5E44, + 18338: 0x5E54, + 18339: 0x5E5B, + 18340: 0x5E5E, + 18341: 0x5E61, + 18342: 0x5C8C, + 18343: 0x5C7A, + 18344: 0x5C8D, + 18345: 0x5C90, + 18346: 0x5C96, + 18347: 0x5C88, + 18348: 0x5C98, + 18349: 0x5C99, + 18350: 0x5C91, + 18351: 0x5C9A, + 18352: 0x5C9C, + 18353: 0x5CB5, + 18354: 0x5CA2, + 18355: 0x5CBD, + 18356: 0x5CAC, + 18357: 0x5CAB, + 18358: 0x5CB1, + 18359: 0x5CA3, + 18360: 0x5CC1, + 18361: 0x5CB7, + 18362: 0x5CC4, + 18363: 0x5CD2, + 18364: 0x5CE4, + 18365: 0x5CCB, + 18366: 0x5CE5, + 18367: 0x5D02, + 18368: 0x5D03, + 18369: 0x5D27, + 18370: 0x5D26, + 18371: 0x5D2E, + 18372: 0x5D24, + 18373: 0x5D1E, + 18374: 0x5D06, + 18375: 0x5D1B, + 18376: 0x5D58, + 18377: 0x5D3E, + 18378: 0x5D34, + 18379: 0x5D3D, + 18380: 0x5D6C, + 18381: 0x5D5B, + 18382: 0x5D6F, + 18383: 0x5D5D, + 18384: 0x5D6B, + 18385: 0x5D4B, + 18386: 0x5D4A, + 18387: 0x5D69, + 18388: 0x5D74, + 18389: 0x5D82, + 18390: 0x5D99, + 18391: 0x5D9D, + 18392: 0x8C73, + 18393: 0x5DB7, + 18394: 0x5DC5, + 18395: 0x5F73, + 18396: 0x5F77, + 18397: 0x5F82, + 18398: 0x5F87, + 18399: 0x5F89, + 18400: 0x5F8C, + 18401: 0x5F95, + 18402: 0x5F99, + 18403: 0x5F9C, + 18404: 0x5FA8, + 18405: 0x5FAD, + 18406: 0x5FB5, + 18407: 0x5FBC, + 18408: 0x8862, + 18409: 0x5F61, + 18410: 0x72AD, + 18411: 0x72B0, + 18412: 0x72B4, + 18413: 0x72B7, + 18414: 0x72B8, + 18415: 0x72C3, + 18416: 0x72C1, + 18417: 0x72CE, + 18418: 0x72CD, + 18419: 0x72D2, + 18420: 0x72E8, + 18421: 0x72EF, + 18422: 0x72E9, + 18423: 0x72F2, + 18424: 0x72F4, + 18425: 0x72F7, + 18426: 0x7301, + 18427: 0x72F3, + 18428: 0x7303, + 18429: 0x72FA, + 18430: 0x91E6, + 18431: 0x91E7, + 18432: 0x91E8, + 18433: 0x91E9, + 18434: 0x91EA, + 18435: 0x91EB, + 18436: 0x91EC, + 18437: 0x91ED, + 18438: 0x91EE, + 18439: 0x91EF, + 18440: 0x91F0, + 18441: 0x91F1, + 18442: 0x91F2, + 18443: 0x91F3, + 18444: 0x91F4, + 18445: 0x91F5, + 18446: 0x91F6, + 18447: 0x91F7, + 18448: 0x91F8, + 18449: 0x91F9, + 18450: 0x91FA, + 18451: 0x91FB, + 18452: 0x91FC, + 18453: 0x91FD, + 18454: 0x91FE, + 18455: 0x91FF, + 18456: 0x9200, + 18457: 0x9201, + 18458: 0x9202, + 18459: 0x9203, + 18460: 0x9204, + 18461: 0x9205, + 18462: 0x9206, + 18463: 0x9207, + 18464: 0x9208, + 18465: 0x9209, + 18466: 0x920A, + 18467: 0x920B, + 18468: 0x920C, + 18469: 0x920D, + 18470: 0x920E, + 18471: 0x920F, + 18472: 0x9210, + 18473: 0x9211, + 18474: 0x9212, + 18475: 0x9213, + 18476: 0x9214, + 18477: 0x9215, + 18478: 0x9216, + 18479: 0x9217, + 18480: 0x9218, + 18481: 0x9219, + 18482: 0x921A, + 18483: 0x921B, + 18484: 0x921C, + 18485: 0x921D, + 18486: 0x921E, + 18487: 0x921F, + 18488: 0x9220, + 18489: 0x9221, + 18490: 0x9222, + 18491: 0x9223, + 18492: 0x9224, + 18493: 0x9225, + 18494: 0x9226, + 18495: 0x9227, + 18496: 0x9228, + 18497: 0x9229, + 18498: 0x922A, + 18499: 0x922B, + 18500: 0x922C, + 18501: 0x922D, + 18502: 0x922E, + 18503: 0x922F, + 18504: 0x9230, + 18505: 0x9231, + 18506: 0x9232, + 18507: 0x9233, + 18508: 0x9234, + 18509: 0x9235, + 18510: 0x9236, + 18511: 0x9237, + 18512: 0x9238, + 18513: 0x9239, + 18514: 0x923A, + 18515: 0x923B, + 18516: 0x923C, + 18517: 0x923D, + 18518: 0x923E, + 18519: 0x923F, + 18520: 0x9240, + 18521: 0x9241, + 18522: 0x9242, + 18523: 0x9243, + 18524: 0x9244, + 18525: 0x9245, + 18526: 0x72FB, + 18527: 0x7317, + 18528: 0x7313, + 18529: 0x7321, + 18530: 0x730A, + 18531: 0x731E, + 18532: 0x731D, + 18533: 0x7315, + 18534: 0x7322, + 18535: 0x7339, + 18536: 0x7325, + 18537: 0x732C, + 18538: 0x7338, + 18539: 0x7331, + 18540: 0x7350, + 18541: 0x734D, + 18542: 0x7357, + 18543: 0x7360, + 18544: 0x736C, + 18545: 0x736F, + 18546: 0x737E, + 18547: 0x821B, + 18548: 0x5925, + 18549: 0x98E7, + 18550: 0x5924, + 18551: 0x5902, + 18552: 0x9963, + 18553: 0x9967, + 18554: 0x9968, + 18555: 0x9969, + 18556: 0x996A, + 18557: 0x996B, + 18558: 0x996C, + 18559: 0x9974, + 18560: 0x9977, + 18561: 0x997D, + 18562: 0x9980, + 18563: 0x9984, + 18564: 0x9987, + 18565: 0x998A, + 18566: 0x998D, + 18567: 0x9990, + 18568: 0x9991, + 18569: 0x9993, + 18570: 0x9994, + 18571: 0x9995, + 18572: 0x5E80, + 18573: 0x5E91, + 18574: 0x5E8B, + 18575: 0x5E96, + 18576: 0x5EA5, + 18577: 0x5EA0, + 18578: 0x5EB9, + 18579: 0x5EB5, + 18580: 0x5EBE, + 18581: 0x5EB3, + 18582: 0x8D53, + 18583: 0x5ED2, + 18584: 0x5ED1, + 18585: 0x5EDB, + 18586: 0x5EE8, + 18587: 0x5EEA, + 18588: 0x81BA, + 18589: 0x5FC4, + 18590: 0x5FC9, + 18591: 0x5FD6, + 18592: 0x5FCF, + 18593: 0x6003, + 18594: 0x5FEE, + 18595: 0x6004, + 18596: 0x5FE1, + 18597: 0x5FE4, + 18598: 0x5FFE, + 18599: 0x6005, + 18600: 0x6006, + 18601: 0x5FEA, + 18602: 0x5FED, + 18603: 0x5FF8, + 18604: 0x6019, + 18605: 0x6035, + 18606: 0x6026, + 18607: 0x601B, + 18608: 0x600F, + 18609: 0x600D, + 18610: 0x6029, + 18611: 0x602B, + 18612: 0x600A, + 18613: 0x603F, + 18614: 0x6021, + 18615: 0x6078, + 18616: 0x6079, + 18617: 0x607B, + 18618: 0x607A, + 18619: 0x6042, + 18620: 0x9246, + 18621: 0x9247, + 18622: 0x9248, + 18623: 0x9249, + 18624: 0x924A, + 18625: 0x924B, + 18626: 0x924C, + 18627: 0x924D, + 18628: 0x924E, + 18629: 0x924F, + 18630: 0x9250, + 18631: 0x9251, + 18632: 0x9252, + 18633: 0x9253, + 18634: 0x9254, + 18635: 0x9255, + 18636: 0x9256, + 18637: 0x9257, + 18638: 0x9258, + 18639: 0x9259, + 18640: 0x925A, + 18641: 0x925B, + 18642: 0x925C, + 18643: 0x925D, + 18644: 0x925E, + 18645: 0x925F, + 18646: 0x9260, + 18647: 0x9261, + 18648: 0x9262, + 18649: 0x9263, + 18650: 0x9264, + 18651: 0x9265, + 18652: 0x9266, + 18653: 0x9267, + 18654: 0x9268, + 18655: 0x9269, + 18656: 0x926A, + 18657: 0x926B, + 18658: 0x926C, + 18659: 0x926D, + 18660: 0x926E, + 18661: 0x926F, + 18662: 0x9270, + 18663: 0x9271, + 18664: 0x9272, + 18665: 0x9273, + 18666: 0x9275, + 18667: 0x9276, + 18668: 0x9277, + 18669: 0x9278, + 18670: 0x9279, + 18671: 0x927A, + 18672: 0x927B, + 18673: 0x927C, + 18674: 0x927D, + 18675: 0x927E, + 18676: 0x927F, + 18677: 0x9280, + 18678: 0x9281, + 18679: 0x9282, + 18680: 0x9283, + 18681: 0x9284, + 18682: 0x9285, + 18683: 0x9286, + 18684: 0x9287, + 18685: 0x9288, + 18686: 0x9289, + 18687: 0x928A, + 18688: 0x928B, + 18689: 0x928C, + 18690: 0x928D, + 18691: 0x928F, + 18692: 0x9290, + 18693: 0x9291, + 18694: 0x9292, + 18695: 0x9293, + 18696: 0x9294, + 18697: 0x9295, + 18698: 0x9296, + 18699: 0x9297, + 18700: 0x9298, + 18701: 0x9299, + 18702: 0x929A, + 18703: 0x929B, + 18704: 0x929C, + 18705: 0x929D, + 18706: 0x929E, + 18707: 0x929F, + 18708: 0x92A0, + 18709: 0x92A1, + 18710: 0x92A2, + 18711: 0x92A3, + 18712: 0x92A4, + 18713: 0x92A5, + 18714: 0x92A6, + 18715: 0x92A7, + 18716: 0x606A, + 18717: 0x607D, + 18718: 0x6096, + 18719: 0x609A, + 18720: 0x60AD, + 18721: 0x609D, + 18722: 0x6083, + 18723: 0x6092, + 18724: 0x608C, + 18725: 0x609B, + 18726: 0x60EC, + 18727: 0x60BB, + 18728: 0x60B1, + 18729: 0x60DD, + 18730: 0x60D8, + 18731: 0x60C6, + 18732: 0x60DA, + 18733: 0x60B4, + 18734: 0x6120, + 18735: 0x6126, + 18736: 0x6115, + 18737: 0x6123, + 18738: 0x60F4, + 18739: 0x6100, + 18740: 0x610E, + 18741: 0x612B, + 18742: 0x614A, + 18743: 0x6175, + 18744: 0x61AC, + 18745: 0x6194, + 18746: 0x61A7, + 18747: 0x61B7, + 18748: 0x61D4, + 18749: 0x61F5, + 18750: 0x5FDD, + 18751: 0x96B3, + 18752: 0x95E9, + 18753: 0x95EB, + 18754: 0x95F1, + 18755: 0x95F3, + 18756: 0x95F5, + 18757: 0x95F6, + 18758: 0x95FC, + 18759: 0x95FE, + 18760: 0x9603, + 18761: 0x9604, + 18762: 0x9606, + 18763: 0x9608, + 18764: 0x960A, + 18765: 0x960B, + 18766: 0x960C, + 18767: 0x960D, + 18768: 0x960F, + 18769: 0x9612, + 18770: 0x9615, + 18771: 0x9616, + 18772: 0x9617, + 18773: 0x9619, + 18774: 0x961A, + 18775: 0x4E2C, + 18776: 0x723F, + 18777: 0x6215, + 18778: 0x6C35, + 18779: 0x6C54, + 18780: 0x6C5C, + 18781: 0x6C4A, + 18782: 0x6CA3, + 18783: 0x6C85, + 18784: 0x6C90, + 18785: 0x6C94, + 18786: 0x6C8C, + 18787: 0x6C68, + 18788: 0x6C69, + 18789: 0x6C74, + 18790: 0x6C76, + 18791: 0x6C86, + 18792: 0x6CA9, + 18793: 0x6CD0, + 18794: 0x6CD4, + 18795: 0x6CAD, + 18796: 0x6CF7, + 18797: 0x6CF8, + 18798: 0x6CF1, + 18799: 0x6CD7, + 18800: 0x6CB2, + 18801: 0x6CE0, + 18802: 0x6CD6, + 18803: 0x6CFA, + 18804: 0x6CEB, + 18805: 0x6CEE, + 18806: 0x6CB1, + 18807: 0x6CD3, + 18808: 0x6CEF, + 18809: 0x6CFE, + 18810: 0x92A8, + 18811: 0x92A9, + 18812: 0x92AA, + 18813: 0x92AB, + 18814: 0x92AC, + 18815: 0x92AD, + 18816: 0x92AF, + 18817: 0x92B0, + 18818: 0x92B1, + 18819: 0x92B2, + 18820: 0x92B3, + 18821: 0x92B4, + 18822: 0x92B5, + 18823: 0x92B6, + 18824: 0x92B7, + 18825: 0x92B8, + 18826: 0x92B9, + 18827: 0x92BA, + 18828: 0x92BB, + 18829: 0x92BC, + 18830: 0x92BD, + 18831: 0x92BE, + 18832: 0x92BF, + 18833: 0x92C0, + 18834: 0x92C1, + 18835: 0x92C2, + 18836: 0x92C3, + 18837: 0x92C4, + 18838: 0x92C5, + 18839: 0x92C6, + 18840: 0x92C7, + 18841: 0x92C9, + 18842: 0x92CA, + 18843: 0x92CB, + 18844: 0x92CC, + 18845: 0x92CD, + 18846: 0x92CE, + 18847: 0x92CF, + 18848: 0x92D0, + 18849: 0x92D1, + 18850: 0x92D2, + 18851: 0x92D3, + 18852: 0x92D4, + 18853: 0x92D5, + 18854: 0x92D6, + 18855: 0x92D7, + 18856: 0x92D8, + 18857: 0x92D9, + 18858: 0x92DA, + 18859: 0x92DB, + 18860: 0x92DC, + 18861: 0x92DD, + 18862: 0x92DE, + 18863: 0x92DF, + 18864: 0x92E0, + 18865: 0x92E1, + 18866: 0x92E2, + 18867: 0x92E3, + 18868: 0x92E4, + 18869: 0x92E5, + 18870: 0x92E6, + 18871: 0x92E7, + 18872: 0x92E8, + 18873: 0x92E9, + 18874: 0x92EA, + 18875: 0x92EB, + 18876: 0x92EC, + 18877: 0x92ED, + 18878: 0x92EE, + 18879: 0x92EF, + 18880: 0x92F0, + 18881: 0x92F1, + 18882: 0x92F2, + 18883: 0x92F3, + 18884: 0x92F4, + 18885: 0x92F5, + 18886: 0x92F6, + 18887: 0x92F7, + 18888: 0x92F8, + 18889: 0x92F9, + 18890: 0x92FA, + 18891: 0x92FB, + 18892: 0x92FC, + 18893: 0x92FD, + 18894: 0x92FE, + 18895: 0x92FF, + 18896: 0x9300, + 18897: 0x9301, + 18898: 0x9302, + 18899: 0x9303, + 18900: 0x9304, + 18901: 0x9305, + 18902: 0x9306, + 18903: 0x9307, + 18904: 0x9308, + 18905: 0x9309, + 18906: 0x6D39, + 18907: 0x6D27, + 18908: 0x6D0C, + 18909: 0x6D43, + 18910: 0x6D48, + 18911: 0x6D07, + 18912: 0x6D04, + 18913: 0x6D19, + 18914: 0x6D0E, + 18915: 0x6D2B, + 18916: 0x6D4D, + 18917: 0x6D2E, + 18918: 0x6D35, + 18919: 0x6D1A, + 18920: 0x6D4F, + 18921: 0x6D52, + 18922: 0x6D54, + 18923: 0x6D33, + 18924: 0x6D91, + 18925: 0x6D6F, + 18926: 0x6D9E, + 18927: 0x6DA0, + 18928: 0x6D5E, + 18929: 0x6D93, + 18930: 0x6D94, + 18931: 0x6D5C, + 18932: 0x6D60, + 18933: 0x6D7C, + 18934: 0x6D63, + 18935: 0x6E1A, + 18936: 0x6DC7, + 18937: 0x6DC5, + 18938: 0x6DDE, + 18939: 0x6E0E, + 18940: 0x6DBF, + 18941: 0x6DE0, + 18942: 0x6E11, + 18943: 0x6DE6, + 18944: 0x6DDD, + 18945: 0x6DD9, + 18946: 0x6E16, + 18947: 0x6DAB, + 18948: 0x6E0C, + 18949: 0x6DAE, + 18950: 0x6E2B, + 18951: 0x6E6E, + 18952: 0x6E4E, + 18953: 0x6E6B, + 18954: 0x6EB2, + 18955: 0x6E5F, + 18956: 0x6E86, + 18957: 0x6E53, + 18958: 0x6E54, + 18959: 0x6E32, + 18960: 0x6E25, + 18961: 0x6E44, + 18962: 0x6EDF, + 18963: 0x6EB1, + 18964: 0x6E98, + 18965: 0x6EE0, + 18966: 0x6F2D, + 18967: 0x6EE2, + 18968: 0x6EA5, + 18969: 0x6EA7, + 18970: 0x6EBD, + 18971: 0x6EBB, + 18972: 0x6EB7, + 18973: 0x6ED7, + 18974: 0x6EB4, + 18975: 0x6ECF, + 18976: 0x6E8F, + 18977: 0x6EC2, + 18978: 0x6E9F, + 18979: 0x6F62, + 18980: 0x6F46, + 18981: 0x6F47, + 18982: 0x6F24, + 18983: 0x6F15, + 18984: 0x6EF9, + 18985: 0x6F2F, + 18986: 0x6F36, + 18987: 0x6F4B, + 18988: 0x6F74, + 18989: 0x6F2A, + 18990: 0x6F09, + 18991: 0x6F29, + 18992: 0x6F89, + 18993: 0x6F8D, + 18994: 0x6F8C, + 18995: 0x6F78, + 18996: 0x6F72, + 18997: 0x6F7C, + 18998: 0x6F7A, + 18999: 0x6FD1, + 19000: 0x930A, + 19001: 0x930B, + 19002: 0x930C, + 19003: 0x930D, + 19004: 0x930E, + 19005: 0x930F, + 19006: 0x9310, + 19007: 0x9311, + 19008: 0x9312, + 19009: 0x9313, + 19010: 0x9314, + 19011: 0x9315, + 19012: 0x9316, + 19013: 0x9317, + 19014: 0x9318, + 19015: 0x9319, + 19016: 0x931A, + 19017: 0x931B, + 19018: 0x931C, + 19019: 0x931D, + 19020: 0x931E, + 19021: 0x931F, + 19022: 0x9320, + 19023: 0x9321, + 19024: 0x9322, + 19025: 0x9323, + 19026: 0x9324, + 19027: 0x9325, + 19028: 0x9326, + 19029: 0x9327, + 19030: 0x9328, + 19031: 0x9329, + 19032: 0x932A, + 19033: 0x932B, + 19034: 0x932C, + 19035: 0x932D, + 19036: 0x932E, + 19037: 0x932F, + 19038: 0x9330, + 19039: 0x9331, + 19040: 0x9332, + 19041: 0x9333, + 19042: 0x9334, + 19043: 0x9335, + 19044: 0x9336, + 19045: 0x9337, + 19046: 0x9338, + 19047: 0x9339, + 19048: 0x933A, + 19049: 0x933B, + 19050: 0x933C, + 19051: 0x933D, + 19052: 0x933F, + 19053: 0x9340, + 19054: 0x9341, + 19055: 0x9342, + 19056: 0x9343, + 19057: 0x9344, + 19058: 0x9345, + 19059: 0x9346, + 19060: 0x9347, + 19061: 0x9348, + 19062: 0x9349, + 19063: 0x934A, + 19064: 0x934B, + 19065: 0x934C, + 19066: 0x934D, + 19067: 0x934E, + 19068: 0x934F, + 19069: 0x9350, + 19070: 0x9351, + 19071: 0x9352, + 19072: 0x9353, + 19073: 0x9354, + 19074: 0x9355, + 19075: 0x9356, + 19076: 0x9357, + 19077: 0x9358, + 19078: 0x9359, + 19079: 0x935A, + 19080: 0x935B, + 19081: 0x935C, + 19082: 0x935D, + 19083: 0x935E, + 19084: 0x935F, + 19085: 0x9360, + 19086: 0x9361, + 19087: 0x9362, + 19088: 0x9363, + 19089: 0x9364, + 19090: 0x9365, + 19091: 0x9366, + 19092: 0x9367, + 19093: 0x9368, + 19094: 0x9369, + 19095: 0x936B, + 19096: 0x6FC9, + 19097: 0x6FA7, + 19098: 0x6FB9, + 19099: 0x6FB6, + 19100: 0x6FC2, + 19101: 0x6FE1, + 19102: 0x6FEE, + 19103: 0x6FDE, + 19104: 0x6FE0, + 19105: 0x6FEF, + 19106: 0x701A, + 19107: 0x7023, + 19108: 0x701B, + 19109: 0x7039, + 19110: 0x7035, + 19111: 0x704F, + 19112: 0x705E, + 19113: 0x5B80, + 19114: 0x5B84, + 19115: 0x5B95, + 19116: 0x5B93, + 19117: 0x5BA5, + 19118: 0x5BB8, + 19119: 0x752F, + 19120: 0x9A9E, + 19121: 0x6434, + 19122: 0x5BE4, + 19123: 0x5BEE, + 19124: 0x8930, + 19125: 0x5BF0, + 19126: 0x8E47, + 19127: 0x8B07, + 19128: 0x8FB6, + 19129: 0x8FD3, + 19130: 0x8FD5, + 19131: 0x8FE5, + 19132: 0x8FEE, + 19133: 0x8FE4, + 19134: 0x8FE9, + 19135: 0x8FE6, + 19136: 0x8FF3, + 19137: 0x8FE8, + 19138: 0x9005, + 19139: 0x9004, + 19140: 0x900B, + 19141: 0x9026, + 19142: 0x9011, + 19143: 0x900D, + 19144: 0x9016, + 19145: 0x9021, + 19146: 0x9035, + 19147: 0x9036, + 19148: 0x902D, + 19149: 0x902F, + 19150: 0x9044, + 19151: 0x9051, + 19152: 0x9052, + 19153: 0x9050, + 19154: 0x9068, + 19155: 0x9058, + 19156: 0x9062, + 19157: 0x905B, + 19158: 0x66B9, + 19159: 0x9074, + 19160: 0x907D, + 19161: 0x9082, + 19162: 0x9088, + 19163: 0x9083, + 19164: 0x908B, + 19165: 0x5F50, + 19166: 0x5F57, + 19167: 0x5F56, + 19168: 0x5F58, + 19169: 0x5C3B, + 19170: 0x54AB, + 19171: 0x5C50, + 19172: 0x5C59, + 19173: 0x5B71, + 19174: 0x5C63, + 19175: 0x5C66, + 19176: 0x7FBC, + 19177: 0x5F2A, + 19178: 0x5F29, + 19179: 0x5F2D, + 19180: 0x8274, + 19181: 0x5F3C, + 19182: 0x9B3B, + 19183: 0x5C6E, + 19184: 0x5981, + 19185: 0x5983, + 19186: 0x598D, + 19187: 0x59A9, + 19188: 0x59AA, + 19189: 0x59A3, + 19190: 0x936C, + 19191: 0x936D, + 19192: 0x936E, + 19193: 0x936F, + 19194: 0x9370, + 19195: 0x9371, + 19196: 0x9372, + 19197: 0x9373, + 19198: 0x9374, + 19199: 0x9375, + 19200: 0x9376, + 19201: 0x9377, + 19202: 0x9378, + 19203: 0x9379, + 19204: 0x937A, + 19205: 0x937B, + 19206: 0x937C, + 19207: 0x937D, + 19208: 0x937E, + 19209: 0x937F, + 19210: 0x9380, + 19211: 0x9381, + 19212: 0x9382, + 19213: 0x9383, + 19214: 0x9384, + 19215: 0x9385, + 19216: 0x9386, + 19217: 0x9387, + 19218: 0x9388, + 19219: 0x9389, + 19220: 0x938A, + 19221: 0x938B, + 19222: 0x938C, + 19223: 0x938D, + 19224: 0x938E, + 19225: 0x9390, + 19226: 0x9391, + 19227: 0x9392, + 19228: 0x9393, + 19229: 0x9394, + 19230: 0x9395, + 19231: 0x9396, + 19232: 0x9397, + 19233: 0x9398, + 19234: 0x9399, + 19235: 0x939A, + 19236: 0x939B, + 19237: 0x939C, + 19238: 0x939D, + 19239: 0x939E, + 19240: 0x939F, + 19241: 0x93A0, + 19242: 0x93A1, + 19243: 0x93A2, + 19244: 0x93A3, + 19245: 0x93A4, + 19246: 0x93A5, + 19247: 0x93A6, + 19248: 0x93A7, + 19249: 0x93A8, + 19250: 0x93A9, + 19251: 0x93AA, + 19252: 0x93AB, + 19253: 0x93AC, + 19254: 0x93AD, + 19255: 0x93AE, + 19256: 0x93AF, + 19257: 0x93B0, + 19258: 0x93B1, + 19259: 0x93B2, + 19260: 0x93B3, + 19261: 0x93B4, + 19262: 0x93B5, + 19263: 0x93B6, + 19264: 0x93B7, + 19265: 0x93B8, + 19266: 0x93B9, + 19267: 0x93BA, + 19268: 0x93BB, + 19269: 0x93BC, + 19270: 0x93BD, + 19271: 0x93BE, + 19272: 0x93BF, + 19273: 0x93C0, + 19274: 0x93C1, + 19275: 0x93C2, + 19276: 0x93C3, + 19277: 0x93C4, + 19278: 0x93C5, + 19279: 0x93C6, + 19280: 0x93C7, + 19281: 0x93C8, + 19282: 0x93C9, + 19283: 0x93CB, + 19284: 0x93CC, + 19285: 0x93CD, + 19286: 0x5997, + 19287: 0x59CA, + 19288: 0x59AB, + 19289: 0x599E, + 19290: 0x59A4, + 19291: 0x59D2, + 19292: 0x59B2, + 19293: 0x59AF, + 19294: 0x59D7, + 19295: 0x59BE, + 19296: 0x5A05, + 19297: 0x5A06, + 19298: 0x59DD, + 19299: 0x5A08, + 19300: 0x59E3, + 19301: 0x59D8, + 19302: 0x59F9, + 19303: 0x5A0C, + 19304: 0x5A09, + 19305: 0x5A32, + 19306: 0x5A34, + 19307: 0x5A11, + 19308: 0x5A23, + 19309: 0x5A13, + 19310: 0x5A40, + 19311: 0x5A67, + 19312: 0x5A4A, + 19313: 0x5A55, + 19314: 0x5A3C, + 19315: 0x5A62, + 19316: 0x5A75, + 19317: 0x80EC, + 19318: 0x5AAA, + 19319: 0x5A9B, + 19320: 0x5A77, + 19321: 0x5A7A, + 19322: 0x5ABE, + 19323: 0x5AEB, + 19324: 0x5AB2, + 19325: 0x5AD2, + 19326: 0x5AD4, + 19327: 0x5AB8, + 19328: 0x5AE0, + 19329: 0x5AE3, + 19330: 0x5AF1, + 19331: 0x5AD6, + 19332: 0x5AE6, + 19333: 0x5AD8, + 19334: 0x5ADC, + 19335: 0x5B09, + 19336: 0x5B17, + 19337: 0x5B16, + 19338: 0x5B32, + 19339: 0x5B37, + 19340: 0x5B40, + 19341: 0x5C15, + 19342: 0x5C1C, + 19343: 0x5B5A, + 19344: 0x5B65, + 19345: 0x5B73, + 19346: 0x5B51, + 19347: 0x5B53, + 19348: 0x5B62, + 19349: 0x9A75, + 19350: 0x9A77, + 19351: 0x9A78, + 19352: 0x9A7A, + 19353: 0x9A7F, + 19354: 0x9A7D, + 19355: 0x9A80, + 19356: 0x9A81, + 19357: 0x9A85, + 19358: 0x9A88, + 19359: 0x9A8A, + 19360: 0x9A90, + 19361: 0x9A92, + 19362: 0x9A93, + 19363: 0x9A96, + 19364: 0x9A98, + 19365: 0x9A9B, + 19366: 0x9A9C, + 19367: 0x9A9D, + 19368: 0x9A9F, + 19369: 0x9AA0, + 19370: 0x9AA2, + 19371: 0x9AA3, + 19372: 0x9AA5, + 19373: 0x9AA7, + 19374: 0x7E9F, + 19375: 0x7EA1, + 19376: 0x7EA3, + 19377: 0x7EA5, + 19378: 0x7EA8, + 19379: 0x7EA9, + 19380: 0x93CE, + 19381: 0x93CF, + 19382: 0x93D0, + 19383: 0x93D1, + 19384: 0x93D2, + 19385: 0x93D3, + 19386: 0x93D4, + 19387: 0x93D5, + 19388: 0x93D7, + 19389: 0x93D8, + 19390: 0x93D9, + 19391: 0x93DA, + 19392: 0x93DB, + 19393: 0x93DC, + 19394: 0x93DD, + 19395: 0x93DE, + 19396: 0x93DF, + 19397: 0x93E0, + 19398: 0x93E1, + 19399: 0x93E2, + 19400: 0x93E3, + 19401: 0x93E4, + 19402: 0x93E5, + 19403: 0x93E6, + 19404: 0x93E7, + 19405: 0x93E8, + 19406: 0x93E9, + 19407: 0x93EA, + 19408: 0x93EB, + 19409: 0x93EC, + 19410: 0x93ED, + 19411: 0x93EE, + 19412: 0x93EF, + 19413: 0x93F0, + 19414: 0x93F1, + 19415: 0x93F2, + 19416: 0x93F3, + 19417: 0x93F4, + 19418: 0x93F5, + 19419: 0x93F6, + 19420: 0x93F7, + 19421: 0x93F8, + 19422: 0x93F9, + 19423: 0x93FA, + 19424: 0x93FB, + 19425: 0x93FC, + 19426: 0x93FD, + 19427: 0x93FE, + 19428: 0x93FF, + 19429: 0x9400, + 19430: 0x9401, + 19431: 0x9402, + 19432: 0x9403, + 19433: 0x9404, + 19434: 0x9405, + 19435: 0x9406, + 19436: 0x9407, + 19437: 0x9408, + 19438: 0x9409, + 19439: 0x940A, + 19440: 0x940B, + 19441: 0x940C, + 19442: 0x940D, + 19443: 0x940E, + 19444: 0x940F, + 19445: 0x9410, + 19446: 0x9411, + 19447: 0x9412, + 19448: 0x9413, + 19449: 0x9414, + 19450: 0x9415, + 19451: 0x9416, + 19452: 0x9417, + 19453: 0x9418, + 19454: 0x9419, + 19455: 0x941A, + 19456: 0x941B, + 19457: 0x941C, + 19458: 0x941D, + 19459: 0x941E, + 19460: 0x941F, + 19461: 0x9420, + 19462: 0x9421, + 19463: 0x9422, + 19464: 0x9423, + 19465: 0x9424, + 19466: 0x9425, + 19467: 0x9426, + 19468: 0x9427, + 19469: 0x9428, + 19470: 0x9429, + 19471: 0x942A, + 19472: 0x942B, + 19473: 0x942C, + 19474: 0x942D, + 19475: 0x942E, + 19476: 0x7EAD, + 19477: 0x7EB0, + 19478: 0x7EBE, + 19479: 0x7EC0, + 19480: 0x7EC1, + 19481: 0x7EC2, + 19482: 0x7EC9, + 19483: 0x7ECB, + 19484: 0x7ECC, + 19485: 0x7ED0, + 19486: 0x7ED4, + 19487: 0x7ED7, + 19488: 0x7EDB, + 19489: 0x7EE0, + 19490: 0x7EE1, + 19491: 0x7EE8, + 19492: 0x7EEB, + 19493: 0x7EEE, + 19494: 0x7EEF, + 19495: 0x7EF1, + 19496: 0x7EF2, + 19497: 0x7F0D, + 19498: 0x7EF6, + 19499: 0x7EFA, + 19500: 0x7EFB, + 19501: 0x7EFE, + 19502: 0x7F01, + 19503: 0x7F02, + 19504: 0x7F03, + 19505: 0x7F07, + 19506: 0x7F08, + 19507: 0x7F0B, + 19508: 0x7F0C, + 19509: 0x7F0F, + 19510: 0x7F11, + 19511: 0x7F12, + 19512: 0x7F17, + 19513: 0x7F19, + 19514: 0x7F1C, + 19515: 0x7F1B, + 19516: 0x7F1F, + 19517: 0x7F21, + 19518: 0x7F22, + 19519: 0x7F23, + 19520: 0x7F24, + 19521: 0x7F25, + 19522: 0x7F26, + 19523: 0x7F27, + 19524: 0x7F2A, + 19525: 0x7F2B, + 19526: 0x7F2C, + 19527: 0x7F2D, + 19528: 0x7F2F, + 19529: 0x7F30, + 19530: 0x7F31, + 19531: 0x7F32, + 19532: 0x7F33, + 19533: 0x7F35, + 19534: 0x5E7A, + 19535: 0x757F, + 19536: 0x5DDB, + 19537: 0x753E, + 19538: 0x9095, + 19539: 0x738E, + 19540: 0x7391, + 19541: 0x73AE, + 19542: 0x73A2, + 19543: 0x739F, + 19544: 0x73CF, + 19545: 0x73C2, + 19546: 0x73D1, + 19547: 0x73B7, + 19548: 0x73B3, + 19549: 0x73C0, + 19550: 0x73C9, + 19551: 0x73C8, + 19552: 0x73E5, + 19553: 0x73D9, + 19554: 0x987C, + 19555: 0x740A, + 19556: 0x73E9, + 19557: 0x73E7, + 19558: 0x73DE, + 19559: 0x73BA, + 19560: 0x73F2, + 19561: 0x740F, + 19562: 0x742A, + 19563: 0x745B, + 19564: 0x7426, + 19565: 0x7425, + 19566: 0x7428, + 19567: 0x7430, + 19568: 0x742E, + 19569: 0x742C, + 19570: 0x942F, + 19571: 0x9430, + 19572: 0x9431, + 19573: 0x9432, + 19574: 0x9433, + 19575: 0x9434, + 19576: 0x9435, + 19577: 0x9436, + 19578: 0x9437, + 19579: 0x9438, + 19580: 0x9439, + 19581: 0x943A, + 19582: 0x943B, + 19583: 0x943C, + 19584: 0x943D, + 19585: 0x943F, + 19586: 0x9440, + 19587: 0x9441, + 19588: 0x9442, + 19589: 0x9443, + 19590: 0x9444, + 19591: 0x9445, + 19592: 0x9446, + 19593: 0x9447, + 19594: 0x9448, + 19595: 0x9449, + 19596: 0x944A, + 19597: 0x944B, + 19598: 0x944C, + 19599: 0x944D, + 19600: 0x944E, + 19601: 0x944F, + 19602: 0x9450, + 19603: 0x9451, + 19604: 0x9452, + 19605: 0x9453, + 19606: 0x9454, + 19607: 0x9455, + 19608: 0x9456, + 19609: 0x9457, + 19610: 0x9458, + 19611: 0x9459, + 19612: 0x945A, + 19613: 0x945B, + 19614: 0x945C, + 19615: 0x945D, + 19616: 0x945E, + 19617: 0x945F, + 19618: 0x9460, + 19619: 0x9461, + 19620: 0x9462, + 19621: 0x9463, + 19622: 0x9464, + 19623: 0x9465, + 19624: 0x9466, + 19625: 0x9467, + 19626: 0x9468, + 19627: 0x9469, + 19628: 0x946A, + 19629: 0x946C, + 19630: 0x946D, + 19631: 0x946E, + 19632: 0x946F, + 19633: 0x9470, + 19634: 0x9471, + 19635: 0x9472, + 19636: 0x9473, + 19637: 0x9474, + 19638: 0x9475, + 19639: 0x9476, + 19640: 0x9477, + 19641: 0x9478, + 19642: 0x9479, + 19643: 0x947A, + 19644: 0x947B, + 19645: 0x947C, + 19646: 0x947D, + 19647: 0x947E, + 19648: 0x947F, + 19649: 0x9480, + 19650: 0x9481, + 19651: 0x9482, + 19652: 0x9483, + 19653: 0x9484, + 19654: 0x9491, + 19655: 0x9496, + 19656: 0x9498, + 19657: 0x94C7, + 19658: 0x94CF, + 19659: 0x94D3, + 19660: 0x94D4, + 19661: 0x94DA, + 19662: 0x94E6, + 19663: 0x94FB, + 19664: 0x951C, + 19665: 0x9520, + 19666: 0x741B, + 19667: 0x741A, + 19668: 0x7441, + 19669: 0x745C, + 19670: 0x7457, + 19671: 0x7455, + 19672: 0x7459, + 19673: 0x7477, + 19674: 0x746D, + 19675: 0x747E, + 19676: 0x749C, + 19677: 0x748E, + 19678: 0x7480, + 19679: 0x7481, + 19680: 0x7487, + 19681: 0x748B, + 19682: 0x749E, + 19683: 0x74A8, + 19684: 0x74A9, + 19685: 0x7490, + 19686: 0x74A7, + 19687: 0x74D2, + 19688: 0x74BA, + 19689: 0x97EA, + 19690: 0x97EB, + 19691: 0x97EC, + 19692: 0x674C, + 19693: 0x6753, + 19694: 0x675E, + 19695: 0x6748, + 19696: 0x6769, + 19697: 0x67A5, + 19698: 0x6787, + 19699: 0x676A, + 19700: 0x6773, + 19701: 0x6798, + 19702: 0x67A7, + 19703: 0x6775, + 19704: 0x67A8, + 19705: 0x679E, + 19706: 0x67AD, + 19707: 0x678B, + 19708: 0x6777, + 19709: 0x677C, + 19710: 0x67F0, + 19711: 0x6809, + 19712: 0x67D8, + 19713: 0x680A, + 19714: 0x67E9, + 19715: 0x67B0, + 19716: 0x680C, + 19717: 0x67D9, + 19718: 0x67B5, + 19719: 0x67DA, + 19720: 0x67B3, + 19721: 0x67DD, + 19722: 0x6800, + 19723: 0x67C3, + 19724: 0x67B8, + 19725: 0x67E2, + 19726: 0x680E, + 19727: 0x67C1, + 19728: 0x67FD, + 19729: 0x6832, + 19730: 0x6833, + 19731: 0x6860, + 19732: 0x6861, + 19733: 0x684E, + 19734: 0x6862, + 19735: 0x6844, + 19736: 0x6864, + 19737: 0x6883, + 19738: 0x681D, + 19739: 0x6855, + 19740: 0x6866, + 19741: 0x6841, + 19742: 0x6867, + 19743: 0x6840, + 19744: 0x683E, + 19745: 0x684A, + 19746: 0x6849, + 19747: 0x6829, + 19748: 0x68B5, + 19749: 0x688F, + 19750: 0x6874, + 19751: 0x6877, + 19752: 0x6893, + 19753: 0x686B, + 19754: 0x68C2, + 19755: 0x696E, + 19756: 0x68FC, + 19757: 0x691F, + 19758: 0x6920, + 19759: 0x68F9, + 19760: 0x9527, + 19761: 0x9533, + 19762: 0x953D, + 19763: 0x9543, + 19764: 0x9548, + 19765: 0x954B, + 19766: 0x9555, + 19767: 0x955A, + 19768: 0x9560, + 19769: 0x956E, + 19770: 0x9574, + 19771: 0x9575, + 19772: 0x9577, + 19773: 0x9578, + 19774: 0x9579, + 19775: 0x957A, + 19776: 0x957B, + 19777: 0x957C, + 19778: 0x957D, + 19779: 0x957E, + 19780: 0x9580, + 19781: 0x9581, + 19782: 0x9582, + 19783: 0x9583, + 19784: 0x9584, + 19785: 0x9585, + 19786: 0x9586, + 19787: 0x9587, + 19788: 0x9588, + 19789: 0x9589, + 19790: 0x958A, + 19791: 0x958B, + 19792: 0x958C, + 19793: 0x958D, + 19794: 0x958E, + 19795: 0x958F, + 19796: 0x9590, + 19797: 0x9591, + 19798: 0x9592, + 19799: 0x9593, + 19800: 0x9594, + 19801: 0x9595, + 19802: 0x9596, + 19803: 0x9597, + 19804: 0x9598, + 19805: 0x9599, + 19806: 0x959A, + 19807: 0x959B, + 19808: 0x959C, + 19809: 0x959D, + 19810: 0x959E, + 19811: 0x959F, + 19812: 0x95A0, + 19813: 0x95A1, + 19814: 0x95A2, + 19815: 0x95A3, + 19816: 0x95A4, + 19817: 0x95A5, + 19818: 0x95A6, + 19819: 0x95A7, + 19820: 0x95A8, + 19821: 0x95A9, + 19822: 0x95AA, + 19823: 0x95AB, + 19824: 0x95AC, + 19825: 0x95AD, + 19826: 0x95AE, + 19827: 0x95AF, + 19828: 0x95B0, + 19829: 0x95B1, + 19830: 0x95B2, + 19831: 0x95B3, + 19832: 0x95B4, + 19833: 0x95B5, + 19834: 0x95B6, + 19835: 0x95B7, + 19836: 0x95B8, + 19837: 0x95B9, + 19838: 0x95BA, + 19839: 0x95BB, + 19840: 0x95BC, + 19841: 0x95BD, + 19842: 0x95BE, + 19843: 0x95BF, + 19844: 0x95C0, + 19845: 0x95C1, + 19846: 0x95C2, + 19847: 0x95C3, + 19848: 0x95C4, + 19849: 0x95C5, + 19850: 0x95C6, + 19851: 0x95C7, + 19852: 0x95C8, + 19853: 0x95C9, + 19854: 0x95CA, + 19855: 0x95CB, + 19856: 0x6924, + 19857: 0x68F0, + 19858: 0x690B, + 19859: 0x6901, + 19860: 0x6957, + 19861: 0x68E3, + 19862: 0x6910, + 19863: 0x6971, + 19864: 0x6939, + 19865: 0x6960, + 19866: 0x6942, + 19867: 0x695D, + 19868: 0x6984, + 19869: 0x696B, + 19870: 0x6980, + 19871: 0x6998, + 19872: 0x6978, + 19873: 0x6934, + 19874: 0x69CC, + 19875: 0x6987, + 19876: 0x6988, + 19877: 0x69CE, + 19878: 0x6989, + 19879: 0x6966, + 19880: 0x6963, + 19881: 0x6979, + 19882: 0x699B, + 19883: 0x69A7, + 19884: 0x69BB, + 19885: 0x69AB, + 19886: 0x69AD, + 19887: 0x69D4, + 19888: 0x69B1, + 19889: 0x69C1, + 19890: 0x69CA, + 19891: 0x69DF, + 19892: 0x6995, + 19893: 0x69E0, + 19894: 0x698D, + 19895: 0x69FF, + 19896: 0x6A2F, + 19897: 0x69ED, + 19898: 0x6A17, + 19899: 0x6A18, + 19900: 0x6A65, + 19901: 0x69F2, + 19902: 0x6A44, + 19903: 0x6A3E, + 19904: 0x6AA0, + 19905: 0x6A50, + 19906: 0x6A5B, + 19907: 0x6A35, + 19908: 0x6A8E, + 19909: 0x6A79, + 19910: 0x6A3D, + 19911: 0x6A28, + 19912: 0x6A58, + 19913: 0x6A7C, + 19914: 0x6A91, + 19915: 0x6A90, + 19916: 0x6AA9, + 19917: 0x6A97, + 19918: 0x6AAB, + 19919: 0x7337, + 19920: 0x7352, + 19921: 0x6B81, + 19922: 0x6B82, + 19923: 0x6B87, + 19924: 0x6B84, + 19925: 0x6B92, + 19926: 0x6B93, + 19927: 0x6B8D, + 19928: 0x6B9A, + 19929: 0x6B9B, + 19930: 0x6BA1, + 19931: 0x6BAA, + 19932: 0x8F6B, + 19933: 0x8F6D, + 19934: 0x8F71, + 19935: 0x8F72, + 19936: 0x8F73, + 19937: 0x8F75, + 19938: 0x8F76, + 19939: 0x8F78, + 19940: 0x8F77, + 19941: 0x8F79, + 19942: 0x8F7A, + 19943: 0x8F7C, + 19944: 0x8F7E, + 19945: 0x8F81, + 19946: 0x8F82, + 19947: 0x8F84, + 19948: 0x8F87, + 19949: 0x8F8B, + 19950: 0x95CC, + 19951: 0x95CD, + 19952: 0x95CE, + 19953: 0x95CF, + 19954: 0x95D0, + 19955: 0x95D1, + 19956: 0x95D2, + 19957: 0x95D3, + 19958: 0x95D4, + 19959: 0x95D5, + 19960: 0x95D6, + 19961: 0x95D7, + 19962: 0x95D8, + 19963: 0x95D9, + 19964: 0x95DA, + 19965: 0x95DB, + 19966: 0x95DC, + 19967: 0x95DD, + 19968: 0x95DE, + 19969: 0x95DF, + 19970: 0x95E0, + 19971: 0x95E1, + 19972: 0x95E2, + 19973: 0x95E3, + 19974: 0x95E4, + 19975: 0x95E5, + 19976: 0x95E6, + 19977: 0x95E7, + 19978: 0x95EC, + 19979: 0x95FF, + 19980: 0x9607, + 19981: 0x9613, + 19982: 0x9618, + 19983: 0x961B, + 19984: 0x961E, + 19985: 0x9620, + 19986: 0x9623, + 19987: 0x9624, + 19988: 0x9625, + 19989: 0x9626, + 19990: 0x9627, + 19991: 0x9628, + 19992: 0x9629, + 19993: 0x962B, + 19994: 0x962C, + 19995: 0x962D, + 19996: 0x962F, + 19997: 0x9630, + 19998: 0x9637, + 19999: 0x9638, + 20000: 0x9639, + 20001: 0x963A, + 20002: 0x963E, + 20003: 0x9641, + 20004: 0x9643, + 20005: 0x964A, + 20006: 0x964E, + 20007: 0x964F, + 20008: 0x9651, + 20009: 0x9652, + 20010: 0x9653, + 20011: 0x9656, + 20012: 0x9657, + 20013: 0x9658, + 20014: 0x9659, + 20015: 0x965A, + 20016: 0x965C, + 20017: 0x965D, + 20018: 0x965E, + 20019: 0x9660, + 20020: 0x9663, + 20021: 0x9665, + 20022: 0x9666, + 20023: 0x966B, + 20024: 0x966D, + 20025: 0x966E, + 20026: 0x966F, + 20027: 0x9670, + 20028: 0x9671, + 20029: 0x9673, + 20030: 0x9678, + 20031: 0x9679, + 20032: 0x967A, + 20033: 0x967B, + 20034: 0x967C, + 20035: 0x967D, + 20036: 0x967E, + 20037: 0x967F, + 20038: 0x9680, + 20039: 0x9681, + 20040: 0x9682, + 20041: 0x9683, + 20042: 0x9684, + 20043: 0x9687, + 20044: 0x9689, + 20045: 0x968A, + 20046: 0x8F8D, + 20047: 0x8F8E, + 20048: 0x8F8F, + 20049: 0x8F98, + 20050: 0x8F9A, + 20051: 0x8ECE, + 20052: 0x620B, + 20053: 0x6217, + 20054: 0x621B, + 20055: 0x621F, + 20056: 0x6222, + 20057: 0x6221, + 20058: 0x6225, + 20059: 0x6224, + 20060: 0x622C, + 20061: 0x81E7, + 20062: 0x74EF, + 20063: 0x74F4, + 20064: 0x74FF, + 20065: 0x750F, + 20066: 0x7511, + 20067: 0x7513, + 20068: 0x6534, + 20069: 0x65EE, + 20070: 0x65EF, + 20071: 0x65F0, + 20072: 0x660A, + 20073: 0x6619, + 20074: 0x6772, + 20075: 0x6603, + 20076: 0x6615, + 20077: 0x6600, + 20078: 0x7085, + 20079: 0x66F7, + 20080: 0x661D, + 20081: 0x6634, + 20082: 0x6631, + 20083: 0x6636, + 20084: 0x6635, + 20085: 0x8006, + 20086: 0x665F, + 20087: 0x6654, + 20088: 0x6641, + 20089: 0x664F, + 20090: 0x6656, + 20091: 0x6661, + 20092: 0x6657, + 20093: 0x6677, + 20094: 0x6684, + 20095: 0x668C, + 20096: 0x66A7, + 20097: 0x669D, + 20098: 0x66BE, + 20099: 0x66DB, + 20100: 0x66DC, + 20101: 0x66E6, + 20102: 0x66E9, + 20103: 0x8D32, + 20104: 0x8D33, + 20105: 0x8D36, + 20106: 0x8D3B, + 20107: 0x8D3D, + 20108: 0x8D40, + 20109: 0x8D45, + 20110: 0x8D46, + 20111: 0x8D48, + 20112: 0x8D49, + 20113: 0x8D47, + 20114: 0x8D4D, + 20115: 0x8D55, + 20116: 0x8D59, + 20117: 0x89C7, + 20118: 0x89CA, + 20119: 0x89CB, + 20120: 0x89CC, + 20121: 0x89CE, + 20122: 0x89CF, + 20123: 0x89D0, + 20124: 0x89D1, + 20125: 0x726E, + 20126: 0x729F, + 20127: 0x725D, + 20128: 0x7266, + 20129: 0x726F, + 20130: 0x727E, + 20131: 0x727F, + 20132: 0x7284, + 20133: 0x728B, + 20134: 0x728D, + 20135: 0x728F, + 20136: 0x7292, + 20137: 0x6308, + 20138: 0x6332, + 20139: 0x63B0, + 20140: 0x968C, + 20141: 0x968E, + 20142: 0x9691, + 20143: 0x9692, + 20144: 0x9693, + 20145: 0x9695, + 20146: 0x9696, + 20147: 0x969A, + 20148: 0x969B, + 20149: 0x969D, + 20150: 0x969E, + 20151: 0x969F, + 20152: 0x96A0, + 20153: 0x96A1, + 20154: 0x96A2, + 20155: 0x96A3, + 20156: 0x96A4, + 20157: 0x96A5, + 20158: 0x96A6, + 20159: 0x96A8, + 20160: 0x96A9, + 20161: 0x96AA, + 20162: 0x96AB, + 20163: 0x96AC, + 20164: 0x96AD, + 20165: 0x96AE, + 20166: 0x96AF, + 20167: 0x96B1, + 20168: 0x96B2, + 20169: 0x96B4, + 20170: 0x96B5, + 20171: 0x96B7, + 20172: 0x96B8, + 20173: 0x96BA, + 20174: 0x96BB, + 20175: 0x96BF, + 20176: 0x96C2, + 20177: 0x96C3, + 20178: 0x96C8, + 20179: 0x96CA, + 20180: 0x96CB, + 20181: 0x96D0, + 20182: 0x96D1, + 20183: 0x96D3, + 20184: 0x96D4, + 20185: 0x96D6, + 20186: 0x96D7, + 20187: 0x96D8, + 20188: 0x96D9, + 20189: 0x96DA, + 20190: 0x96DB, + 20191: 0x96DC, + 20192: 0x96DD, + 20193: 0x96DE, + 20194: 0x96DF, + 20195: 0x96E1, + 20196: 0x96E2, + 20197: 0x96E3, + 20198: 0x96E4, + 20199: 0x96E5, + 20200: 0x96E6, + 20201: 0x96E7, + 20202: 0x96EB, + 20203: 0x96EC, + 20204: 0x96ED, + 20205: 0x96EE, + 20206: 0x96F0, + 20207: 0x96F1, + 20208: 0x96F2, + 20209: 0x96F4, + 20210: 0x96F5, + 20211: 0x96F8, + 20212: 0x96FA, + 20213: 0x96FB, + 20214: 0x96FC, + 20215: 0x96FD, + 20216: 0x96FF, + 20217: 0x9702, + 20218: 0x9703, + 20219: 0x9705, + 20220: 0x970A, + 20221: 0x970B, + 20222: 0x970C, + 20223: 0x9710, + 20224: 0x9711, + 20225: 0x9712, + 20226: 0x9714, + 20227: 0x9715, + 20228: 0x9717, + 20229: 0x9718, + 20230: 0x9719, + 20231: 0x971A, + 20232: 0x971B, + 20233: 0x971D, + 20234: 0x971F, + 20235: 0x9720, + 20236: 0x643F, + 20237: 0x64D8, + 20238: 0x8004, + 20239: 0x6BEA, + 20240: 0x6BF3, + 20241: 0x6BFD, + 20242: 0x6BF5, + 20243: 0x6BF9, + 20244: 0x6C05, + 20245: 0x6C07, + 20246: 0x6C06, + 20247: 0x6C0D, + 20248: 0x6C15, + 20249: 0x6C18, + 20250: 0x6C19, + 20251: 0x6C1A, + 20252: 0x6C21, + 20253: 0x6C29, + 20254: 0x6C24, + 20255: 0x6C2A, + 20256: 0x6C32, + 20257: 0x6535, + 20258: 0x6555, + 20259: 0x656B, + 20260: 0x724D, + 20261: 0x7252, + 20262: 0x7256, + 20263: 0x7230, + 20264: 0x8662, + 20265: 0x5216, + 20266: 0x809F, + 20267: 0x809C, + 20268: 0x8093, + 20269: 0x80BC, + 20270: 0x670A, + 20271: 0x80BD, + 20272: 0x80B1, + 20273: 0x80AB, + 20274: 0x80AD, + 20275: 0x80B4, + 20276: 0x80B7, + 20277: 0x80E7, + 20278: 0x80E8, + 20279: 0x80E9, + 20280: 0x80EA, + 20281: 0x80DB, + 20282: 0x80C2, + 20283: 0x80C4, + 20284: 0x80D9, + 20285: 0x80CD, + 20286: 0x80D7, + 20287: 0x6710, + 20288: 0x80DD, + 20289: 0x80EB, + 20290: 0x80F1, + 20291: 0x80F4, + 20292: 0x80ED, + 20293: 0x810D, + 20294: 0x810E, + 20295: 0x80F2, + 20296: 0x80FC, + 20297: 0x6715, + 20298: 0x8112, + 20299: 0x8C5A, + 20300: 0x8136, + 20301: 0x811E, + 20302: 0x812C, + 20303: 0x8118, + 20304: 0x8132, + 20305: 0x8148, + 20306: 0x814C, + 20307: 0x8153, + 20308: 0x8174, + 20309: 0x8159, + 20310: 0x815A, + 20311: 0x8171, + 20312: 0x8160, + 20313: 0x8169, + 20314: 0x817C, + 20315: 0x817D, + 20316: 0x816D, + 20317: 0x8167, + 20318: 0x584D, + 20319: 0x5AB5, + 20320: 0x8188, + 20321: 0x8182, + 20322: 0x8191, + 20323: 0x6ED5, + 20324: 0x81A3, + 20325: 0x81AA, + 20326: 0x81CC, + 20327: 0x6726, + 20328: 0x81CA, + 20329: 0x81BB, + 20330: 0x9721, + 20331: 0x9722, + 20332: 0x9723, + 20333: 0x9724, + 20334: 0x9725, + 20335: 0x9726, + 20336: 0x9727, + 20337: 0x9728, + 20338: 0x9729, + 20339: 0x972B, + 20340: 0x972C, + 20341: 0x972E, + 20342: 0x972F, + 20343: 0x9731, + 20344: 0x9733, + 20345: 0x9734, + 20346: 0x9735, + 20347: 0x9736, + 20348: 0x9737, + 20349: 0x973A, + 20350: 0x973B, + 20351: 0x973C, + 20352: 0x973D, + 20353: 0x973F, + 20354: 0x9740, + 20355: 0x9741, + 20356: 0x9742, + 20357: 0x9743, + 20358: 0x9744, + 20359: 0x9745, + 20360: 0x9746, + 20361: 0x9747, + 20362: 0x9748, + 20363: 0x9749, + 20364: 0x974A, + 20365: 0x974B, + 20366: 0x974C, + 20367: 0x974D, + 20368: 0x974E, + 20369: 0x974F, + 20370: 0x9750, + 20371: 0x9751, + 20372: 0x9754, + 20373: 0x9755, + 20374: 0x9757, + 20375: 0x9758, + 20376: 0x975A, + 20377: 0x975C, + 20378: 0x975D, + 20379: 0x975F, + 20380: 0x9763, + 20381: 0x9764, + 20382: 0x9766, + 20383: 0x9767, + 20384: 0x9768, + 20385: 0x976A, + 20386: 0x976B, + 20387: 0x976C, + 20388: 0x976D, + 20389: 0x976E, + 20390: 0x976F, + 20391: 0x9770, + 20392: 0x9771, + 20393: 0x9772, + 20394: 0x9775, + 20395: 0x9777, + 20396: 0x9778, + 20397: 0x9779, + 20398: 0x977A, + 20399: 0x977B, + 20400: 0x977D, + 20401: 0x977E, + 20402: 0x977F, + 20403: 0x9780, + 20404: 0x9781, + 20405: 0x9782, + 20406: 0x9783, + 20407: 0x9784, + 20408: 0x9786, + 20409: 0x9787, + 20410: 0x9788, + 20411: 0x9789, + 20412: 0x978A, + 20413: 0x978C, + 20414: 0x978E, + 20415: 0x978F, + 20416: 0x9790, + 20417: 0x9793, + 20418: 0x9795, + 20419: 0x9796, + 20420: 0x9797, + 20421: 0x9799, + 20422: 0x979A, + 20423: 0x979B, + 20424: 0x979C, + 20425: 0x979D, + 20426: 0x81C1, + 20427: 0x81A6, + 20428: 0x6B24, + 20429: 0x6B37, + 20430: 0x6B39, + 20431: 0x6B43, + 20432: 0x6B46, + 20433: 0x6B59, + 20434: 0x98D1, + 20435: 0x98D2, + 20436: 0x98D3, + 20437: 0x98D5, + 20438: 0x98D9, + 20439: 0x98DA, + 20440: 0x6BB3, + 20441: 0x5F40, + 20442: 0x6BC2, + 20443: 0x89F3, + 20444: 0x6590, + 20445: 0x9F51, + 20446: 0x6593, + 20447: 0x65BC, + 20448: 0x65C6, + 20449: 0x65C4, + 20450: 0x65C3, + 20451: 0x65CC, + 20452: 0x65CE, + 20453: 0x65D2, + 20454: 0x65D6, + 20455: 0x7080, + 20456: 0x709C, + 20457: 0x7096, + 20458: 0x709D, + 20459: 0x70BB, + 20460: 0x70C0, + 20461: 0x70B7, + 20462: 0x70AB, + 20463: 0x70B1, + 20464: 0x70E8, + 20465: 0x70CA, + 20466: 0x7110, + 20467: 0x7113, + 20468: 0x7116, + 20469: 0x712F, + 20470: 0x7131, + 20471: 0x7173, + 20472: 0x715C, + 20473: 0x7168, + 20474: 0x7145, + 20475: 0x7172, + 20476: 0x714A, + 20477: 0x7178, + 20478: 0x717A, + 20479: 0x7198, + 20480: 0x71B3, + 20481: 0x71B5, + 20482: 0x71A8, + 20483: 0x71A0, + 20484: 0x71E0, + 20485: 0x71D4, + 20486: 0x71E7, + 20487: 0x71F9, + 20488: 0x721D, + 20489: 0x7228, + 20490: 0x706C, + 20491: 0x7118, + 20492: 0x7166, + 20493: 0x71B9, + 20494: 0x623E, + 20495: 0x623D, + 20496: 0x6243, + 20497: 0x6248, + 20498: 0x6249, + 20499: 0x793B, + 20500: 0x7940, + 20501: 0x7946, + 20502: 0x7949, + 20503: 0x795B, + 20504: 0x795C, + 20505: 0x7953, + 20506: 0x795A, + 20507: 0x7962, + 20508: 0x7957, + 20509: 0x7960, + 20510: 0x796F, + 20511: 0x7967, + 20512: 0x797A, + 20513: 0x7985, + 20514: 0x798A, + 20515: 0x799A, + 20516: 0x79A7, + 20517: 0x79B3, + 20518: 0x5FD1, + 20519: 0x5FD0, + 20520: 0x979E, + 20521: 0x979F, + 20522: 0x97A1, + 20523: 0x97A2, + 20524: 0x97A4, + 20525: 0x97A5, + 20526: 0x97A6, + 20527: 0x97A7, + 20528: 0x97A8, + 20529: 0x97A9, + 20530: 0x97AA, + 20531: 0x97AC, + 20532: 0x97AE, + 20533: 0x97B0, + 20534: 0x97B1, + 20535: 0x97B3, + 20536: 0x97B5, + 20537: 0x97B6, + 20538: 0x97B7, + 20539: 0x97B8, + 20540: 0x97B9, + 20541: 0x97BA, + 20542: 0x97BB, + 20543: 0x97BC, + 20544: 0x97BD, + 20545: 0x97BE, + 20546: 0x97BF, + 20547: 0x97C0, + 20548: 0x97C1, + 20549: 0x97C2, + 20550: 0x97C3, + 20551: 0x97C4, + 20552: 0x97C5, + 20553: 0x97C6, + 20554: 0x97C7, + 20555: 0x97C8, + 20556: 0x97C9, + 20557: 0x97CA, + 20558: 0x97CB, + 20559: 0x97CC, + 20560: 0x97CD, + 20561: 0x97CE, + 20562: 0x97CF, + 20563: 0x97D0, + 20564: 0x97D1, + 20565: 0x97D2, + 20566: 0x97D3, + 20567: 0x97D4, + 20568: 0x97D5, + 20569: 0x97D6, + 20570: 0x97D7, + 20571: 0x97D8, + 20572: 0x97D9, + 20573: 0x97DA, + 20574: 0x97DB, + 20575: 0x97DC, + 20576: 0x97DD, + 20577: 0x97DE, + 20578: 0x97DF, + 20579: 0x97E0, + 20580: 0x97E1, + 20581: 0x97E2, + 20582: 0x97E3, + 20583: 0x97E4, + 20584: 0x97E5, + 20585: 0x97E8, + 20586: 0x97EE, + 20587: 0x97EF, + 20588: 0x97F0, + 20589: 0x97F1, + 20590: 0x97F2, + 20591: 0x97F4, + 20592: 0x97F7, + 20593: 0x97F8, + 20594: 0x97F9, + 20595: 0x97FA, + 20596: 0x97FB, + 20597: 0x97FC, + 20598: 0x97FD, + 20599: 0x97FE, + 20600: 0x97FF, + 20601: 0x9800, + 20602: 0x9801, + 20603: 0x9802, + 20604: 0x9803, + 20605: 0x9804, + 20606: 0x9805, + 20607: 0x9806, + 20608: 0x9807, + 20609: 0x9808, + 20610: 0x9809, + 20611: 0x980A, + 20612: 0x980B, + 20613: 0x980C, + 20614: 0x980D, + 20615: 0x980E, + 20616: 0x603C, + 20617: 0x605D, + 20618: 0x605A, + 20619: 0x6067, + 20620: 0x6041, + 20621: 0x6059, + 20622: 0x6063, + 20623: 0x60AB, + 20624: 0x6106, + 20625: 0x610D, + 20626: 0x615D, + 20627: 0x61A9, + 20628: 0x619D, + 20629: 0x61CB, + 20630: 0x61D1, + 20631: 0x6206, + 20632: 0x8080, + 20633: 0x807F, + 20634: 0x6C93, + 20635: 0x6CF6, + 20636: 0x6DFC, + 20637: 0x77F6, + 20638: 0x77F8, + 20639: 0x7800, + 20640: 0x7809, + 20641: 0x7817, + 20642: 0x7818, + 20643: 0x7811, + 20644: 0x65AB, + 20645: 0x782D, + 20646: 0x781C, + 20647: 0x781D, + 20648: 0x7839, + 20649: 0x783A, + 20650: 0x783B, + 20651: 0x781F, + 20652: 0x783C, + 20653: 0x7825, + 20654: 0x782C, + 20655: 0x7823, + 20656: 0x7829, + 20657: 0x784E, + 20658: 0x786D, + 20659: 0x7856, + 20660: 0x7857, + 20661: 0x7826, + 20662: 0x7850, + 20663: 0x7847, + 20664: 0x784C, + 20665: 0x786A, + 20666: 0x789B, + 20667: 0x7893, + 20668: 0x789A, + 20669: 0x7887, + 20670: 0x789C, + 20671: 0x78A1, + 20672: 0x78A3, + 20673: 0x78B2, + 20674: 0x78B9, + 20675: 0x78A5, + 20676: 0x78D4, + 20677: 0x78D9, + 20678: 0x78C9, + 20679: 0x78EC, + 20680: 0x78F2, + 20681: 0x7905, + 20682: 0x78F4, + 20683: 0x7913, + 20684: 0x7924, + 20685: 0x791E, + 20686: 0x7934, + 20687: 0x9F9B, + 20688: 0x9EF9, + 20689: 0x9EFB, + 20690: 0x9EFC, + 20691: 0x76F1, + 20692: 0x7704, + 20693: 0x770D, + 20694: 0x76F9, + 20695: 0x7707, + 20696: 0x7708, + 20697: 0x771A, + 20698: 0x7722, + 20699: 0x7719, + 20700: 0x772D, + 20701: 0x7726, + 20702: 0x7735, + 20703: 0x7738, + 20704: 0x7750, + 20705: 0x7751, + 20706: 0x7747, + 20707: 0x7743, + 20708: 0x775A, + 20709: 0x7768, + 20710: 0x980F, + 20711: 0x9810, + 20712: 0x9811, + 20713: 0x9812, + 20714: 0x9813, + 20715: 0x9814, + 20716: 0x9815, + 20717: 0x9816, + 20718: 0x9817, + 20719: 0x9818, + 20720: 0x9819, + 20721: 0x981A, + 20722: 0x981B, + 20723: 0x981C, + 20724: 0x981D, + 20725: 0x981E, + 20726: 0x981F, + 20727: 0x9820, + 20728: 0x9821, + 20729: 0x9822, + 20730: 0x9823, + 20731: 0x9824, + 20732: 0x9825, + 20733: 0x9826, + 20734: 0x9827, + 20735: 0x9828, + 20736: 0x9829, + 20737: 0x982A, + 20738: 0x982B, + 20739: 0x982C, + 20740: 0x982D, + 20741: 0x982E, + 20742: 0x982F, + 20743: 0x9830, + 20744: 0x9831, + 20745: 0x9832, + 20746: 0x9833, + 20747: 0x9834, + 20748: 0x9835, + 20749: 0x9836, + 20750: 0x9837, + 20751: 0x9838, + 20752: 0x9839, + 20753: 0x983A, + 20754: 0x983B, + 20755: 0x983C, + 20756: 0x983D, + 20757: 0x983E, + 20758: 0x983F, + 20759: 0x9840, + 20760: 0x9841, + 20761: 0x9842, + 20762: 0x9843, + 20763: 0x9844, + 20764: 0x9845, + 20765: 0x9846, + 20766: 0x9847, + 20767: 0x9848, + 20768: 0x9849, + 20769: 0x984A, + 20770: 0x984B, + 20771: 0x984C, + 20772: 0x984D, + 20773: 0x984E, + 20774: 0x984F, + 20775: 0x9850, + 20776: 0x9851, + 20777: 0x9852, + 20778: 0x9853, + 20779: 0x9854, + 20780: 0x9855, + 20781: 0x9856, + 20782: 0x9857, + 20783: 0x9858, + 20784: 0x9859, + 20785: 0x985A, + 20786: 0x985B, + 20787: 0x985C, + 20788: 0x985D, + 20789: 0x985E, + 20790: 0x985F, + 20791: 0x9860, + 20792: 0x9861, + 20793: 0x9862, + 20794: 0x9863, + 20795: 0x9864, + 20796: 0x9865, + 20797: 0x9866, + 20798: 0x9867, + 20799: 0x9868, + 20800: 0x9869, + 20801: 0x986A, + 20802: 0x986B, + 20803: 0x986C, + 20804: 0x986D, + 20805: 0x986E, + 20806: 0x7762, + 20807: 0x7765, + 20808: 0x777F, + 20809: 0x778D, + 20810: 0x777D, + 20811: 0x7780, + 20812: 0x778C, + 20813: 0x7791, + 20814: 0x779F, + 20815: 0x77A0, + 20816: 0x77B0, + 20817: 0x77B5, + 20818: 0x77BD, + 20819: 0x753A, + 20820: 0x7540, + 20821: 0x754E, + 20822: 0x754B, + 20823: 0x7548, + 20824: 0x755B, + 20825: 0x7572, + 20826: 0x7579, + 20827: 0x7583, + 20828: 0x7F58, + 20829: 0x7F61, + 20830: 0x7F5F, + 20831: 0x8A48, + 20832: 0x7F68, + 20833: 0x7F74, + 20834: 0x7F71, + 20835: 0x7F79, + 20836: 0x7F81, + 20837: 0x7F7E, + 20838: 0x76CD, + 20839: 0x76E5, + 20840: 0x8832, + 20841: 0x9485, + 20842: 0x9486, + 20843: 0x9487, + 20844: 0x948B, + 20845: 0x948A, + 20846: 0x948C, + 20847: 0x948D, + 20848: 0x948F, + 20849: 0x9490, + 20850: 0x9494, + 20851: 0x9497, + 20852: 0x9495, + 20853: 0x949A, + 20854: 0x949B, + 20855: 0x949C, + 20856: 0x94A3, + 20857: 0x94A4, + 20858: 0x94AB, + 20859: 0x94AA, + 20860: 0x94AD, + 20861: 0x94AC, + 20862: 0x94AF, + 20863: 0x94B0, + 20864: 0x94B2, + 20865: 0x94B4, + 20866: 0x94B6, + 20867: 0x94B7, + 20868: 0x94B8, + 20869: 0x94B9, + 20870: 0x94BA, + 20871: 0x94BC, + 20872: 0x94BD, + 20873: 0x94BF, + 20874: 0x94C4, + 20875: 0x94C8, + 20876: 0x94C9, + 20877: 0x94CA, + 20878: 0x94CB, + 20879: 0x94CC, + 20880: 0x94CD, + 20881: 0x94CE, + 20882: 0x94D0, + 20883: 0x94D1, + 20884: 0x94D2, + 20885: 0x94D5, + 20886: 0x94D6, + 20887: 0x94D7, + 20888: 0x94D9, + 20889: 0x94D8, + 20890: 0x94DB, + 20891: 0x94DE, + 20892: 0x94DF, + 20893: 0x94E0, + 20894: 0x94E2, + 20895: 0x94E4, + 20896: 0x94E5, + 20897: 0x94E7, + 20898: 0x94E8, + 20899: 0x94EA, + 20900: 0x986F, + 20901: 0x9870, + 20902: 0x9871, + 20903: 0x9872, + 20904: 0x9873, + 20905: 0x9874, + 20906: 0x988B, + 20907: 0x988E, + 20908: 0x9892, + 20909: 0x9895, + 20910: 0x9899, + 20911: 0x98A3, + 20912: 0x98A8, + 20913: 0x98A9, + 20914: 0x98AA, + 20915: 0x98AB, + 20916: 0x98AC, + 20917: 0x98AD, + 20918: 0x98AE, + 20919: 0x98AF, + 20920: 0x98B0, + 20921: 0x98B1, + 20922: 0x98B2, + 20923: 0x98B3, + 20924: 0x98B4, + 20925: 0x98B5, + 20926: 0x98B6, + 20927: 0x98B7, + 20928: 0x98B8, + 20929: 0x98B9, + 20930: 0x98BA, + 20931: 0x98BB, + 20932: 0x98BC, + 20933: 0x98BD, + 20934: 0x98BE, + 20935: 0x98BF, + 20936: 0x98C0, + 20937: 0x98C1, + 20938: 0x98C2, + 20939: 0x98C3, + 20940: 0x98C4, + 20941: 0x98C5, + 20942: 0x98C6, + 20943: 0x98C7, + 20944: 0x98C8, + 20945: 0x98C9, + 20946: 0x98CA, + 20947: 0x98CB, + 20948: 0x98CC, + 20949: 0x98CD, + 20950: 0x98CF, + 20951: 0x98D0, + 20952: 0x98D4, + 20953: 0x98D6, + 20954: 0x98D7, + 20955: 0x98DB, + 20956: 0x98DC, + 20957: 0x98DD, + 20958: 0x98E0, + 20959: 0x98E1, + 20960: 0x98E2, + 20961: 0x98E3, + 20962: 0x98E4, + 20963: 0x98E5, + 20964: 0x98E6, + 20965: 0x98E9, + 20966: 0x98EA, + 20967: 0x98EB, + 20968: 0x98EC, + 20969: 0x98ED, + 20970: 0x98EE, + 20971: 0x98EF, + 20972: 0x98F0, + 20973: 0x98F1, + 20974: 0x98F2, + 20975: 0x98F3, + 20976: 0x98F4, + 20977: 0x98F5, + 20978: 0x98F6, + 20979: 0x98F7, + 20980: 0x98F8, + 20981: 0x98F9, + 20982: 0x98FA, + 20983: 0x98FB, + 20984: 0x98FC, + 20985: 0x98FD, + 20986: 0x98FE, + 20987: 0x98FF, + 20988: 0x9900, + 20989: 0x9901, + 20990: 0x9902, + 20991: 0x9903, + 20992: 0x9904, + 20993: 0x9905, + 20994: 0x9906, + 20995: 0x9907, + 20996: 0x94E9, + 20997: 0x94EB, + 20998: 0x94EE, + 20999: 0x94EF, + 21000: 0x94F3, + 21001: 0x94F4, + 21002: 0x94F5, + 21003: 0x94F7, + 21004: 0x94F9, + 21005: 0x94FC, + 21006: 0x94FD, + 21007: 0x94FF, + 21008: 0x9503, + 21009: 0x9502, + 21010: 0x9506, + 21011: 0x9507, + 21012: 0x9509, + 21013: 0x950A, + 21014: 0x950D, + 21015: 0x950E, + 21016: 0x950F, + 21017: 0x9512, + 21018: 0x9513, + 21019: 0x9514, + 21020: 0x9515, + 21021: 0x9516, + 21022: 0x9518, + 21023: 0x951B, + 21024: 0x951D, + 21025: 0x951E, + 21026: 0x951F, + 21027: 0x9522, + 21028: 0x952A, + 21029: 0x952B, + 21030: 0x9529, + 21031: 0x952C, + 21032: 0x9531, + 21033: 0x9532, + 21034: 0x9534, + 21035: 0x9536, + 21036: 0x9537, + 21037: 0x9538, + 21038: 0x953C, + 21039: 0x953E, + 21040: 0x953F, + 21041: 0x9542, + 21042: 0x9535, + 21043: 0x9544, + 21044: 0x9545, + 21045: 0x9546, + 21046: 0x9549, + 21047: 0x954C, + 21048: 0x954E, + 21049: 0x954F, + 21050: 0x9552, + 21051: 0x9553, + 21052: 0x9554, + 21053: 0x9556, + 21054: 0x9557, + 21055: 0x9558, + 21056: 0x9559, + 21057: 0x955B, + 21058: 0x955E, + 21059: 0x955F, + 21060: 0x955D, + 21061: 0x9561, + 21062: 0x9562, + 21063: 0x9564, + 21064: 0x9565, + 21065: 0x9566, + 21066: 0x9567, + 21067: 0x9568, + 21068: 0x9569, + 21069: 0x956A, + 21070: 0x956B, + 21071: 0x956C, + 21072: 0x956F, + 21073: 0x9571, + 21074: 0x9572, + 21075: 0x9573, + 21076: 0x953A, + 21077: 0x77E7, + 21078: 0x77EC, + 21079: 0x96C9, + 21080: 0x79D5, + 21081: 0x79ED, + 21082: 0x79E3, + 21083: 0x79EB, + 21084: 0x7A06, + 21085: 0x5D47, + 21086: 0x7A03, + 21087: 0x7A02, + 21088: 0x7A1E, + 21089: 0x7A14, + 21090: 0x9908, + 21091: 0x9909, + 21092: 0x990A, + 21093: 0x990B, + 21094: 0x990C, + 21095: 0x990E, + 21096: 0x990F, + 21097: 0x9911, + 21098: 0x9912, + 21099: 0x9913, + 21100: 0x9914, + 21101: 0x9915, + 21102: 0x9916, + 21103: 0x9917, + 21104: 0x9918, + 21105: 0x9919, + 21106: 0x991A, + 21107: 0x991B, + 21108: 0x991C, + 21109: 0x991D, + 21110: 0x991E, + 21111: 0x991F, + 21112: 0x9920, + 21113: 0x9921, + 21114: 0x9922, + 21115: 0x9923, + 21116: 0x9924, + 21117: 0x9925, + 21118: 0x9926, + 21119: 0x9927, + 21120: 0x9928, + 21121: 0x9929, + 21122: 0x992A, + 21123: 0x992B, + 21124: 0x992C, + 21125: 0x992D, + 21126: 0x992F, + 21127: 0x9930, + 21128: 0x9931, + 21129: 0x9932, + 21130: 0x9933, + 21131: 0x9934, + 21132: 0x9935, + 21133: 0x9936, + 21134: 0x9937, + 21135: 0x9938, + 21136: 0x9939, + 21137: 0x993A, + 21138: 0x993B, + 21139: 0x993C, + 21140: 0x993D, + 21141: 0x993E, + 21142: 0x993F, + 21143: 0x9940, + 21144: 0x9941, + 21145: 0x9942, + 21146: 0x9943, + 21147: 0x9944, + 21148: 0x9945, + 21149: 0x9946, + 21150: 0x9947, + 21151: 0x9948, + 21152: 0x9949, + 21153: 0x994A, + 21154: 0x994B, + 21155: 0x994C, + 21156: 0x994D, + 21157: 0x994E, + 21158: 0x994F, + 21159: 0x9950, + 21160: 0x9951, + 21161: 0x9952, + 21162: 0x9953, + 21163: 0x9956, + 21164: 0x9957, + 21165: 0x9958, + 21166: 0x9959, + 21167: 0x995A, + 21168: 0x995B, + 21169: 0x995C, + 21170: 0x995D, + 21171: 0x995E, + 21172: 0x995F, + 21173: 0x9960, + 21174: 0x9961, + 21175: 0x9962, + 21176: 0x9964, + 21177: 0x9966, + 21178: 0x9973, + 21179: 0x9978, + 21180: 0x9979, + 21181: 0x997B, + 21182: 0x997E, + 21183: 0x9982, + 21184: 0x9983, + 21185: 0x9989, + 21186: 0x7A39, + 21187: 0x7A37, + 21188: 0x7A51, + 21189: 0x9ECF, + 21190: 0x99A5, + 21191: 0x7A70, + 21192: 0x7688, + 21193: 0x768E, + 21194: 0x7693, + 21195: 0x7699, + 21196: 0x76A4, + 21197: 0x74DE, + 21198: 0x74E0, + 21199: 0x752C, + 21200: 0x9E20, + 21201: 0x9E22, + 21202: 0x9E28, + 21203: 0x9E29, + 21204: 0x9E2A, + 21205: 0x9E2B, + 21206: 0x9E2C, + 21207: 0x9E32, + 21208: 0x9E31, + 21209: 0x9E36, + 21210: 0x9E38, + 21211: 0x9E37, + 21212: 0x9E39, + 21213: 0x9E3A, + 21214: 0x9E3E, + 21215: 0x9E41, + 21216: 0x9E42, + 21217: 0x9E44, + 21218: 0x9E46, + 21219: 0x9E47, + 21220: 0x9E48, + 21221: 0x9E49, + 21222: 0x9E4B, + 21223: 0x9E4C, + 21224: 0x9E4E, + 21225: 0x9E51, + 21226: 0x9E55, + 21227: 0x9E57, + 21228: 0x9E5A, + 21229: 0x9E5B, + 21230: 0x9E5C, + 21231: 0x9E5E, + 21232: 0x9E63, + 21233: 0x9E66, + 21234: 0x9E67, + 21235: 0x9E68, + 21236: 0x9E69, + 21237: 0x9E6A, + 21238: 0x9E6B, + 21239: 0x9E6C, + 21240: 0x9E71, + 21241: 0x9E6D, + 21242: 0x9E73, + 21243: 0x7592, + 21244: 0x7594, + 21245: 0x7596, + 21246: 0x75A0, + 21247: 0x759D, + 21248: 0x75AC, + 21249: 0x75A3, + 21250: 0x75B3, + 21251: 0x75B4, + 21252: 0x75B8, + 21253: 0x75C4, + 21254: 0x75B1, + 21255: 0x75B0, + 21256: 0x75C3, + 21257: 0x75C2, + 21258: 0x75D6, + 21259: 0x75CD, + 21260: 0x75E3, + 21261: 0x75E8, + 21262: 0x75E6, + 21263: 0x75E4, + 21264: 0x75EB, + 21265: 0x75E7, + 21266: 0x7603, + 21267: 0x75F1, + 21268: 0x75FC, + 21269: 0x75FF, + 21270: 0x7610, + 21271: 0x7600, + 21272: 0x7605, + 21273: 0x760C, + 21274: 0x7617, + 21275: 0x760A, + 21276: 0x7625, + 21277: 0x7618, + 21278: 0x7615, + 21279: 0x7619, + 21280: 0x998C, + 21281: 0x998E, + 21282: 0x999A, + 21283: 0x999B, + 21284: 0x999C, + 21285: 0x999D, + 21286: 0x999E, + 21287: 0x999F, + 21288: 0x99A0, + 21289: 0x99A1, + 21290: 0x99A2, + 21291: 0x99A3, + 21292: 0x99A4, + 21293: 0x99A6, + 21294: 0x99A7, + 21295: 0x99A9, + 21296: 0x99AA, + 21297: 0x99AB, + 21298: 0x99AC, + 21299: 0x99AD, + 21300: 0x99AE, + 21301: 0x99AF, + 21302: 0x99B0, + 21303: 0x99B1, + 21304: 0x99B2, + 21305: 0x99B3, + 21306: 0x99B4, + 21307: 0x99B5, + 21308: 0x99B6, + 21309: 0x99B7, + 21310: 0x99B8, + 21311: 0x99B9, + 21312: 0x99BA, + 21313: 0x99BB, + 21314: 0x99BC, + 21315: 0x99BD, + 21316: 0x99BE, + 21317: 0x99BF, + 21318: 0x99C0, + 21319: 0x99C1, + 21320: 0x99C2, + 21321: 0x99C3, + 21322: 0x99C4, + 21323: 0x99C5, + 21324: 0x99C6, + 21325: 0x99C7, + 21326: 0x99C8, + 21327: 0x99C9, + 21328: 0x99CA, + 21329: 0x99CB, + 21330: 0x99CC, + 21331: 0x99CD, + 21332: 0x99CE, + 21333: 0x99CF, + 21334: 0x99D0, + 21335: 0x99D1, + 21336: 0x99D2, + 21337: 0x99D3, + 21338: 0x99D4, + 21339: 0x99D5, + 21340: 0x99D6, + 21341: 0x99D7, + 21342: 0x99D8, + 21343: 0x99D9, + 21344: 0x99DA, + 21345: 0x99DB, + 21346: 0x99DC, + 21347: 0x99DD, + 21348: 0x99DE, + 21349: 0x99DF, + 21350: 0x99E0, + 21351: 0x99E1, + 21352: 0x99E2, + 21353: 0x99E3, + 21354: 0x99E4, + 21355: 0x99E5, + 21356: 0x99E6, + 21357: 0x99E7, + 21358: 0x99E8, + 21359: 0x99E9, + 21360: 0x99EA, + 21361: 0x99EB, + 21362: 0x99EC, + 21363: 0x99ED, + 21364: 0x99EE, + 21365: 0x99EF, + 21366: 0x99F0, + 21367: 0x99F1, + 21368: 0x99F2, + 21369: 0x99F3, + 21370: 0x99F4, + 21371: 0x99F5, + 21372: 0x99F6, + 21373: 0x99F7, + 21374: 0x99F8, + 21375: 0x99F9, + 21376: 0x761B, + 21377: 0x763C, + 21378: 0x7622, + 21379: 0x7620, + 21380: 0x7640, + 21381: 0x762D, + 21382: 0x7630, + 21383: 0x763F, + 21384: 0x7635, + 21385: 0x7643, + 21386: 0x763E, + 21387: 0x7633, + 21388: 0x764D, + 21389: 0x765E, + 21390: 0x7654, + 21391: 0x765C, + 21392: 0x7656, + 21393: 0x766B, + 21394: 0x766F, + 21395: 0x7FCA, + 21396: 0x7AE6, + 21397: 0x7A78, + 21398: 0x7A79, + 21399: 0x7A80, + 21400: 0x7A86, + 21401: 0x7A88, + 21402: 0x7A95, + 21403: 0x7AA6, + 21404: 0x7AA0, + 21405: 0x7AAC, + 21406: 0x7AA8, + 21407: 0x7AAD, + 21408: 0x7AB3, + 21409: 0x8864, + 21410: 0x8869, + 21411: 0x8872, + 21412: 0x887D, + 21413: 0x887F, + 21414: 0x8882, + 21415: 0x88A2, + 21416: 0x88C6, + 21417: 0x88B7, + 21418: 0x88BC, + 21419: 0x88C9, + 21420: 0x88E2, + 21421: 0x88CE, + 21422: 0x88E3, + 21423: 0x88E5, + 21424: 0x88F1, + 21425: 0x891A, + 21426: 0x88FC, + 21427: 0x88E8, + 21428: 0x88FE, + 21429: 0x88F0, + 21430: 0x8921, + 21431: 0x8919, + 21432: 0x8913, + 21433: 0x891B, + 21434: 0x890A, + 21435: 0x8934, + 21436: 0x892B, + 21437: 0x8936, + 21438: 0x8941, + 21439: 0x8966, + 21440: 0x897B, + 21441: 0x758B, + 21442: 0x80E5, + 21443: 0x76B2, + 21444: 0x76B4, + 21445: 0x77DC, + 21446: 0x8012, + 21447: 0x8014, + 21448: 0x8016, + 21449: 0x801C, + 21450: 0x8020, + 21451: 0x8022, + 21452: 0x8025, + 21453: 0x8026, + 21454: 0x8027, + 21455: 0x8029, + 21456: 0x8028, + 21457: 0x8031, + 21458: 0x800B, + 21459: 0x8035, + 21460: 0x8043, + 21461: 0x8046, + 21462: 0x804D, + 21463: 0x8052, + 21464: 0x8069, + 21465: 0x8071, + 21466: 0x8983, + 21467: 0x9878, + 21468: 0x9880, + 21469: 0x9883, + 21470: 0x99FA, + 21471: 0x99FB, + 21472: 0x99FC, + 21473: 0x99FD, + 21474: 0x99FE, + 21475: 0x99FF, + 21476: 0x9A00, + 21477: 0x9A01, + 21478: 0x9A02, + 21479: 0x9A03, + 21480: 0x9A04, + 21481: 0x9A05, + 21482: 0x9A06, + 21483: 0x9A07, + 21484: 0x9A08, + 21485: 0x9A09, + 21486: 0x9A0A, + 21487: 0x9A0B, + 21488: 0x9A0C, + 21489: 0x9A0D, + 21490: 0x9A0E, + 21491: 0x9A0F, + 21492: 0x9A10, + 21493: 0x9A11, + 21494: 0x9A12, + 21495: 0x9A13, + 21496: 0x9A14, + 21497: 0x9A15, + 21498: 0x9A16, + 21499: 0x9A17, + 21500: 0x9A18, + 21501: 0x9A19, + 21502: 0x9A1A, + 21503: 0x9A1B, + 21504: 0x9A1C, + 21505: 0x9A1D, + 21506: 0x9A1E, + 21507: 0x9A1F, + 21508: 0x9A20, + 21509: 0x9A21, + 21510: 0x9A22, + 21511: 0x9A23, + 21512: 0x9A24, + 21513: 0x9A25, + 21514: 0x9A26, + 21515: 0x9A27, + 21516: 0x9A28, + 21517: 0x9A29, + 21518: 0x9A2A, + 21519: 0x9A2B, + 21520: 0x9A2C, + 21521: 0x9A2D, + 21522: 0x9A2E, + 21523: 0x9A2F, + 21524: 0x9A30, + 21525: 0x9A31, + 21526: 0x9A32, + 21527: 0x9A33, + 21528: 0x9A34, + 21529: 0x9A35, + 21530: 0x9A36, + 21531: 0x9A37, + 21532: 0x9A38, + 21533: 0x9A39, + 21534: 0x9A3A, + 21535: 0x9A3B, + 21536: 0x9A3C, + 21537: 0x9A3D, + 21538: 0x9A3E, + 21539: 0x9A3F, + 21540: 0x9A40, + 21541: 0x9A41, + 21542: 0x9A42, + 21543: 0x9A43, + 21544: 0x9A44, + 21545: 0x9A45, + 21546: 0x9A46, + 21547: 0x9A47, + 21548: 0x9A48, + 21549: 0x9A49, + 21550: 0x9A4A, + 21551: 0x9A4B, + 21552: 0x9A4C, + 21553: 0x9A4D, + 21554: 0x9A4E, + 21555: 0x9A4F, + 21556: 0x9A50, + 21557: 0x9A51, + 21558: 0x9A52, + 21559: 0x9A53, + 21560: 0x9A54, + 21561: 0x9A55, + 21562: 0x9A56, + 21563: 0x9A57, + 21564: 0x9A58, + 21565: 0x9A59, + 21566: 0x9889, + 21567: 0x988C, + 21568: 0x988D, + 21569: 0x988F, + 21570: 0x9894, + 21571: 0x989A, + 21572: 0x989B, + 21573: 0x989E, + 21574: 0x989F, + 21575: 0x98A1, + 21576: 0x98A2, + 21577: 0x98A5, + 21578: 0x98A6, + 21579: 0x864D, + 21580: 0x8654, + 21581: 0x866C, + 21582: 0x866E, + 21583: 0x867F, + 21584: 0x867A, + 21585: 0x867C, + 21586: 0x867B, + 21587: 0x86A8, + 21588: 0x868D, + 21589: 0x868B, + 21590: 0x86AC, + 21591: 0x869D, + 21592: 0x86A7, + 21593: 0x86A3, + 21594: 0x86AA, + 21595: 0x8693, + 21596: 0x86A9, + 21597: 0x86B6, + 21598: 0x86C4, + 21599: 0x86B5, + 21600: 0x86CE, + 21601: 0x86B0, + 21602: 0x86BA, + 21603: 0x86B1, + 21604: 0x86AF, + 21605: 0x86C9, + 21606: 0x86CF, + 21607: 0x86B4, + 21608: 0x86E9, + 21609: 0x86F1, + 21610: 0x86F2, + 21611: 0x86ED, + 21612: 0x86F3, + 21613: 0x86D0, + 21614: 0x8713, + 21615: 0x86DE, + 21616: 0x86F4, + 21617: 0x86DF, + 21618: 0x86D8, + 21619: 0x86D1, + 21620: 0x8703, + 21621: 0x8707, + 21622: 0x86F8, + 21623: 0x8708, + 21624: 0x870A, + 21625: 0x870D, + 21626: 0x8709, + 21627: 0x8723, + 21628: 0x873B, + 21629: 0x871E, + 21630: 0x8725, + 21631: 0x872E, + 21632: 0x871A, + 21633: 0x873E, + 21634: 0x8748, + 21635: 0x8734, + 21636: 0x8731, + 21637: 0x8729, + 21638: 0x8737, + 21639: 0x873F, + 21640: 0x8782, + 21641: 0x8722, + 21642: 0x877D, + 21643: 0x877E, + 21644: 0x877B, + 21645: 0x8760, + 21646: 0x8770, + 21647: 0x874C, + 21648: 0x876E, + 21649: 0x878B, + 21650: 0x8753, + 21651: 0x8763, + 21652: 0x877C, + 21653: 0x8764, + 21654: 0x8759, + 21655: 0x8765, + 21656: 0x8793, + 21657: 0x87AF, + 21658: 0x87A8, + 21659: 0x87D2, + 21660: 0x9A5A, + 21661: 0x9A5B, + 21662: 0x9A5C, + 21663: 0x9A5D, + 21664: 0x9A5E, + 21665: 0x9A5F, + 21666: 0x9A60, + 21667: 0x9A61, + 21668: 0x9A62, + 21669: 0x9A63, + 21670: 0x9A64, + 21671: 0x9A65, + 21672: 0x9A66, + 21673: 0x9A67, + 21674: 0x9A68, + 21675: 0x9A69, + 21676: 0x9A6A, + 21677: 0x9A6B, + 21678: 0x9A72, + 21679: 0x9A83, + 21680: 0x9A89, + 21681: 0x9A8D, + 21682: 0x9A8E, + 21683: 0x9A94, + 21684: 0x9A95, + 21685: 0x9A99, + 21686: 0x9AA6, + 21687: 0x9AA9, + 21688: 0x9AAA, + 21689: 0x9AAB, + 21690: 0x9AAC, + 21691: 0x9AAD, + 21692: 0x9AAE, + 21693: 0x9AAF, + 21694: 0x9AB2, + 21695: 0x9AB3, + 21696: 0x9AB4, + 21697: 0x9AB5, + 21698: 0x9AB9, + 21699: 0x9ABB, + 21700: 0x9ABD, + 21701: 0x9ABE, + 21702: 0x9ABF, + 21703: 0x9AC3, + 21704: 0x9AC4, + 21705: 0x9AC6, + 21706: 0x9AC7, + 21707: 0x9AC8, + 21708: 0x9AC9, + 21709: 0x9ACA, + 21710: 0x9ACD, + 21711: 0x9ACE, + 21712: 0x9ACF, + 21713: 0x9AD0, + 21714: 0x9AD2, + 21715: 0x9AD4, + 21716: 0x9AD5, + 21717: 0x9AD6, + 21718: 0x9AD7, + 21719: 0x9AD9, + 21720: 0x9ADA, + 21721: 0x9ADB, + 21722: 0x9ADC, + 21723: 0x9ADD, + 21724: 0x9ADE, + 21725: 0x9AE0, + 21726: 0x9AE2, + 21727: 0x9AE3, + 21728: 0x9AE4, + 21729: 0x9AE5, + 21730: 0x9AE7, + 21731: 0x9AE8, + 21732: 0x9AE9, + 21733: 0x9AEA, + 21734: 0x9AEC, + 21735: 0x9AEE, + 21736: 0x9AF0, + 21737: 0x9AF1, + 21738: 0x9AF2, + 21739: 0x9AF3, + 21740: 0x9AF4, + 21741: 0x9AF5, + 21742: 0x9AF6, + 21743: 0x9AF7, + 21744: 0x9AF8, + 21745: 0x9AFA, + 21746: 0x9AFC, + 21747: 0x9AFD, + 21748: 0x9AFE, + 21749: 0x9AFF, + 21750: 0x9B00, + 21751: 0x9B01, + 21752: 0x9B02, + 21753: 0x9B04, + 21754: 0x9B05, + 21755: 0x9B06, + 21756: 0x87C6, + 21757: 0x8788, + 21758: 0x8785, + 21759: 0x87AD, + 21760: 0x8797, + 21761: 0x8783, + 21762: 0x87AB, + 21763: 0x87E5, + 21764: 0x87AC, + 21765: 0x87B5, + 21766: 0x87B3, + 21767: 0x87CB, + 21768: 0x87D3, + 21769: 0x87BD, + 21770: 0x87D1, + 21771: 0x87C0, + 21772: 0x87CA, + 21773: 0x87DB, + 21774: 0x87EA, + 21775: 0x87E0, + 21776: 0x87EE, + 21777: 0x8816, + 21778: 0x8813, + 21779: 0x87FE, + 21780: 0x880A, + 21781: 0x881B, + 21782: 0x8821, + 21783: 0x8839, + 21784: 0x883C, + 21785: 0x7F36, + 21786: 0x7F42, + 21787: 0x7F44, + 21788: 0x7F45, + 21789: 0x8210, + 21790: 0x7AFA, + 21791: 0x7AFD, + 21792: 0x7B08, + 21793: 0x7B03, + 21794: 0x7B04, + 21795: 0x7B15, + 21796: 0x7B0A, + 21797: 0x7B2B, + 21798: 0x7B0F, + 21799: 0x7B47, + 21800: 0x7B38, + 21801: 0x7B2A, + 21802: 0x7B19, + 21803: 0x7B2E, + 21804: 0x7B31, + 21805: 0x7B20, + 21806: 0x7B25, + 21807: 0x7B24, + 21808: 0x7B33, + 21809: 0x7B3E, + 21810: 0x7B1E, + 21811: 0x7B58, + 21812: 0x7B5A, + 21813: 0x7B45, + 21814: 0x7B75, + 21815: 0x7B4C, + 21816: 0x7B5D, + 21817: 0x7B60, + 21818: 0x7B6E, + 21819: 0x7B7B, + 21820: 0x7B62, + 21821: 0x7B72, + 21822: 0x7B71, + 21823: 0x7B90, + 21824: 0x7BA6, + 21825: 0x7BA7, + 21826: 0x7BB8, + 21827: 0x7BAC, + 21828: 0x7B9D, + 21829: 0x7BA8, + 21830: 0x7B85, + 21831: 0x7BAA, + 21832: 0x7B9C, + 21833: 0x7BA2, + 21834: 0x7BAB, + 21835: 0x7BB4, + 21836: 0x7BD1, + 21837: 0x7BC1, + 21838: 0x7BCC, + 21839: 0x7BDD, + 21840: 0x7BDA, + 21841: 0x7BE5, + 21842: 0x7BE6, + 21843: 0x7BEA, + 21844: 0x7C0C, + 21845: 0x7BFE, + 21846: 0x7BFC, + 21847: 0x7C0F, + 21848: 0x7C16, + 21849: 0x7C0B, + 21850: 0x9B07, + 21851: 0x9B09, + 21852: 0x9B0A, + 21853: 0x9B0B, + 21854: 0x9B0C, + 21855: 0x9B0D, + 21856: 0x9B0E, + 21857: 0x9B10, + 21858: 0x9B11, + 21859: 0x9B12, + 21860: 0x9B14, + 21861: 0x9B15, + 21862: 0x9B16, + 21863: 0x9B17, + 21864: 0x9B18, + 21865: 0x9B19, + 21866: 0x9B1A, + 21867: 0x9B1B, + 21868: 0x9B1C, + 21869: 0x9B1D, + 21870: 0x9B1E, + 21871: 0x9B20, + 21872: 0x9B21, + 21873: 0x9B22, + 21874: 0x9B24, + 21875: 0x9B25, + 21876: 0x9B26, + 21877: 0x9B27, + 21878: 0x9B28, + 21879: 0x9B29, + 21880: 0x9B2A, + 21881: 0x9B2B, + 21882: 0x9B2C, + 21883: 0x9B2D, + 21884: 0x9B2E, + 21885: 0x9B30, + 21886: 0x9B31, + 21887: 0x9B33, + 21888: 0x9B34, + 21889: 0x9B35, + 21890: 0x9B36, + 21891: 0x9B37, + 21892: 0x9B38, + 21893: 0x9B39, + 21894: 0x9B3A, + 21895: 0x9B3D, + 21896: 0x9B3E, + 21897: 0x9B3F, + 21898: 0x9B40, + 21899: 0x9B46, + 21900: 0x9B4A, + 21901: 0x9B4B, + 21902: 0x9B4C, + 21903: 0x9B4E, + 21904: 0x9B50, + 21905: 0x9B52, + 21906: 0x9B53, + 21907: 0x9B55, + 21908: 0x9B56, + 21909: 0x9B57, + 21910: 0x9B58, + 21911: 0x9B59, + 21912: 0x9B5A, + 21913: 0x9B5B, + 21914: 0x9B5C, + 21915: 0x9B5D, + 21916: 0x9B5E, + 21917: 0x9B5F, + 21918: 0x9B60, + 21919: 0x9B61, + 21920: 0x9B62, + 21921: 0x9B63, + 21922: 0x9B64, + 21923: 0x9B65, + 21924: 0x9B66, + 21925: 0x9B67, + 21926: 0x9B68, + 21927: 0x9B69, + 21928: 0x9B6A, + 21929: 0x9B6B, + 21930: 0x9B6C, + 21931: 0x9B6D, + 21932: 0x9B6E, + 21933: 0x9B6F, + 21934: 0x9B70, + 21935: 0x9B71, + 21936: 0x9B72, + 21937: 0x9B73, + 21938: 0x9B74, + 21939: 0x9B75, + 21940: 0x9B76, + 21941: 0x9B77, + 21942: 0x9B78, + 21943: 0x9B79, + 21944: 0x9B7A, + 21945: 0x9B7B, + 21946: 0x7C1F, + 21947: 0x7C2A, + 21948: 0x7C26, + 21949: 0x7C38, + 21950: 0x7C41, + 21951: 0x7C40, + 21952: 0x81FE, + 21953: 0x8201, + 21954: 0x8202, + 21955: 0x8204, + 21956: 0x81EC, + 21957: 0x8844, + 21958: 0x8221, + 21959: 0x8222, + 21960: 0x8223, + 21961: 0x822D, + 21962: 0x822F, + 21963: 0x8228, + 21964: 0x822B, + 21965: 0x8238, + 21966: 0x823B, + 21967: 0x8233, + 21968: 0x8234, + 21969: 0x823E, + 21970: 0x8244, + 21971: 0x8249, + 21972: 0x824B, + 21973: 0x824F, + 21974: 0x825A, + 21975: 0x825F, + 21976: 0x8268, + 21977: 0x887E, + 21978: 0x8885, + 21979: 0x8888, + 21980: 0x88D8, + 21981: 0x88DF, + 21982: 0x895E, + 21983: 0x7F9D, + 21984: 0x7F9F, + 21985: 0x7FA7, + 21986: 0x7FAF, + 21987: 0x7FB0, + 21988: 0x7FB2, + 21989: 0x7C7C, + 21990: 0x6549, + 21991: 0x7C91, + 21992: 0x7C9D, + 21993: 0x7C9C, + 21994: 0x7C9E, + 21995: 0x7CA2, + 21996: 0x7CB2, + 21997: 0x7CBC, + 21998: 0x7CBD, + 21999: 0x7CC1, + 22000: 0x7CC7, + 22001: 0x7CCC, + 22002: 0x7CCD, + 22003: 0x7CC8, + 22004: 0x7CC5, + 22005: 0x7CD7, + 22006: 0x7CE8, + 22007: 0x826E, + 22008: 0x66A8, + 22009: 0x7FBF, + 22010: 0x7FCE, + 22011: 0x7FD5, + 22012: 0x7FE5, + 22013: 0x7FE1, + 22014: 0x7FE6, + 22015: 0x7FE9, + 22016: 0x7FEE, + 22017: 0x7FF3, + 22018: 0x7CF8, + 22019: 0x7D77, + 22020: 0x7DA6, + 22021: 0x7DAE, + 22022: 0x7E47, + 22023: 0x7E9B, + 22024: 0x9EB8, + 22025: 0x9EB4, + 22026: 0x8D73, + 22027: 0x8D84, + 22028: 0x8D94, + 22029: 0x8D91, + 22030: 0x8DB1, + 22031: 0x8D67, + 22032: 0x8D6D, + 22033: 0x8C47, + 22034: 0x8C49, + 22035: 0x914A, + 22036: 0x9150, + 22037: 0x914E, + 22038: 0x914F, + 22039: 0x9164, + 22040: 0x9B7C, + 22041: 0x9B7D, + 22042: 0x9B7E, + 22043: 0x9B7F, + 22044: 0x9B80, + 22045: 0x9B81, + 22046: 0x9B82, + 22047: 0x9B83, + 22048: 0x9B84, + 22049: 0x9B85, + 22050: 0x9B86, + 22051: 0x9B87, + 22052: 0x9B88, + 22053: 0x9B89, + 22054: 0x9B8A, + 22055: 0x9B8B, + 22056: 0x9B8C, + 22057: 0x9B8D, + 22058: 0x9B8E, + 22059: 0x9B8F, + 22060: 0x9B90, + 22061: 0x9B91, + 22062: 0x9B92, + 22063: 0x9B93, + 22064: 0x9B94, + 22065: 0x9B95, + 22066: 0x9B96, + 22067: 0x9B97, + 22068: 0x9B98, + 22069: 0x9B99, + 22070: 0x9B9A, + 22071: 0x9B9B, + 22072: 0x9B9C, + 22073: 0x9B9D, + 22074: 0x9B9E, + 22075: 0x9B9F, + 22076: 0x9BA0, + 22077: 0x9BA1, + 22078: 0x9BA2, + 22079: 0x9BA3, + 22080: 0x9BA4, + 22081: 0x9BA5, + 22082: 0x9BA6, + 22083: 0x9BA7, + 22084: 0x9BA8, + 22085: 0x9BA9, + 22086: 0x9BAA, + 22087: 0x9BAB, + 22088: 0x9BAC, + 22089: 0x9BAD, + 22090: 0x9BAE, + 22091: 0x9BAF, + 22092: 0x9BB0, + 22093: 0x9BB1, + 22094: 0x9BB2, + 22095: 0x9BB3, + 22096: 0x9BB4, + 22097: 0x9BB5, + 22098: 0x9BB6, + 22099: 0x9BB7, + 22100: 0x9BB8, + 22101: 0x9BB9, + 22102: 0x9BBA, + 22103: 0x9BBB, + 22104: 0x9BBC, + 22105: 0x9BBD, + 22106: 0x9BBE, + 22107: 0x9BBF, + 22108: 0x9BC0, + 22109: 0x9BC1, + 22110: 0x9BC2, + 22111: 0x9BC3, + 22112: 0x9BC4, + 22113: 0x9BC5, + 22114: 0x9BC6, + 22115: 0x9BC7, + 22116: 0x9BC8, + 22117: 0x9BC9, + 22118: 0x9BCA, + 22119: 0x9BCB, + 22120: 0x9BCC, + 22121: 0x9BCD, + 22122: 0x9BCE, + 22123: 0x9BCF, + 22124: 0x9BD0, + 22125: 0x9BD1, + 22126: 0x9BD2, + 22127: 0x9BD3, + 22128: 0x9BD4, + 22129: 0x9BD5, + 22130: 0x9BD6, + 22131: 0x9BD7, + 22132: 0x9BD8, + 22133: 0x9BD9, + 22134: 0x9BDA, + 22135: 0x9BDB, + 22136: 0x9162, + 22137: 0x9161, + 22138: 0x9170, + 22139: 0x9169, + 22140: 0x916F, + 22141: 0x917D, + 22142: 0x917E, + 22143: 0x9172, + 22144: 0x9174, + 22145: 0x9179, + 22146: 0x918C, + 22147: 0x9185, + 22148: 0x9190, + 22149: 0x918D, + 22150: 0x9191, + 22151: 0x91A2, + 22152: 0x91A3, + 22153: 0x91AA, + 22154: 0x91AD, + 22155: 0x91AE, + 22156: 0x91AF, + 22157: 0x91B5, + 22158: 0x91B4, + 22159: 0x91BA, + 22160: 0x8C55, + 22161: 0x9E7E, + 22162: 0x8DB8, + 22163: 0x8DEB, + 22164: 0x8E05, + 22165: 0x8E59, + 22166: 0x8E69, + 22167: 0x8DB5, + 22168: 0x8DBF, + 22169: 0x8DBC, + 22170: 0x8DBA, + 22171: 0x8DC4, + 22172: 0x8DD6, + 22173: 0x8DD7, + 22174: 0x8DDA, + 22175: 0x8DDE, + 22176: 0x8DCE, + 22177: 0x8DCF, + 22178: 0x8DDB, + 22179: 0x8DC6, + 22180: 0x8DEC, + 22181: 0x8DF7, + 22182: 0x8DF8, + 22183: 0x8DE3, + 22184: 0x8DF9, + 22185: 0x8DFB, + 22186: 0x8DE4, + 22187: 0x8E09, + 22188: 0x8DFD, + 22189: 0x8E14, + 22190: 0x8E1D, + 22191: 0x8E1F, + 22192: 0x8E2C, + 22193: 0x8E2E, + 22194: 0x8E23, + 22195: 0x8E2F, + 22196: 0x8E3A, + 22197: 0x8E40, + 22198: 0x8E39, + 22199: 0x8E35, + 22200: 0x8E3D, + 22201: 0x8E31, + 22202: 0x8E49, + 22203: 0x8E41, + 22204: 0x8E42, + 22205: 0x8E51, + 22206: 0x8E52, + 22207: 0x8E4A, + 22208: 0x8E70, + 22209: 0x8E76, + 22210: 0x8E7C, + 22211: 0x8E6F, + 22212: 0x8E74, + 22213: 0x8E85, + 22214: 0x8E8F, + 22215: 0x8E94, + 22216: 0x8E90, + 22217: 0x8E9C, + 22218: 0x8E9E, + 22219: 0x8C78, + 22220: 0x8C82, + 22221: 0x8C8A, + 22222: 0x8C85, + 22223: 0x8C98, + 22224: 0x8C94, + 22225: 0x659B, + 22226: 0x89D6, + 22227: 0x89DE, + 22228: 0x89DA, + 22229: 0x89DC, + 22230: 0x9BDC, + 22231: 0x9BDD, + 22232: 0x9BDE, + 22233: 0x9BDF, + 22234: 0x9BE0, + 22235: 0x9BE1, + 22236: 0x9BE2, + 22237: 0x9BE3, + 22238: 0x9BE4, + 22239: 0x9BE5, + 22240: 0x9BE6, + 22241: 0x9BE7, + 22242: 0x9BE8, + 22243: 0x9BE9, + 22244: 0x9BEA, + 22245: 0x9BEB, + 22246: 0x9BEC, + 22247: 0x9BED, + 22248: 0x9BEE, + 22249: 0x9BEF, + 22250: 0x9BF0, + 22251: 0x9BF1, + 22252: 0x9BF2, + 22253: 0x9BF3, + 22254: 0x9BF4, + 22255: 0x9BF5, + 22256: 0x9BF6, + 22257: 0x9BF7, + 22258: 0x9BF8, + 22259: 0x9BF9, + 22260: 0x9BFA, + 22261: 0x9BFB, + 22262: 0x9BFC, + 22263: 0x9BFD, + 22264: 0x9BFE, + 22265: 0x9BFF, + 22266: 0x9C00, + 22267: 0x9C01, + 22268: 0x9C02, + 22269: 0x9C03, + 22270: 0x9C04, + 22271: 0x9C05, + 22272: 0x9C06, + 22273: 0x9C07, + 22274: 0x9C08, + 22275: 0x9C09, + 22276: 0x9C0A, + 22277: 0x9C0B, + 22278: 0x9C0C, + 22279: 0x9C0D, + 22280: 0x9C0E, + 22281: 0x9C0F, + 22282: 0x9C10, + 22283: 0x9C11, + 22284: 0x9C12, + 22285: 0x9C13, + 22286: 0x9C14, + 22287: 0x9C15, + 22288: 0x9C16, + 22289: 0x9C17, + 22290: 0x9C18, + 22291: 0x9C19, + 22292: 0x9C1A, + 22293: 0x9C1B, + 22294: 0x9C1C, + 22295: 0x9C1D, + 22296: 0x9C1E, + 22297: 0x9C1F, + 22298: 0x9C20, + 22299: 0x9C21, + 22300: 0x9C22, + 22301: 0x9C23, + 22302: 0x9C24, + 22303: 0x9C25, + 22304: 0x9C26, + 22305: 0x9C27, + 22306: 0x9C28, + 22307: 0x9C29, + 22308: 0x9C2A, + 22309: 0x9C2B, + 22310: 0x9C2C, + 22311: 0x9C2D, + 22312: 0x9C2E, + 22313: 0x9C2F, + 22314: 0x9C30, + 22315: 0x9C31, + 22316: 0x9C32, + 22317: 0x9C33, + 22318: 0x9C34, + 22319: 0x9C35, + 22320: 0x9C36, + 22321: 0x9C37, + 22322: 0x9C38, + 22323: 0x9C39, + 22324: 0x9C3A, + 22325: 0x9C3B, + 22326: 0x89E5, + 22327: 0x89EB, + 22328: 0x89EF, + 22329: 0x8A3E, + 22330: 0x8B26, + 22331: 0x9753, + 22332: 0x96E9, + 22333: 0x96F3, + 22334: 0x96EF, + 22335: 0x9706, + 22336: 0x9701, + 22337: 0x9708, + 22338: 0x970F, + 22339: 0x970E, + 22340: 0x972A, + 22341: 0x972D, + 22342: 0x9730, + 22343: 0x973E, + 22344: 0x9F80, + 22345: 0x9F83, + 22346: 0x9F85, + 22347: 0x9F86, + 22348: 0x9F87, + 22349: 0x9F88, + 22350: 0x9F89, + 22351: 0x9F8A, + 22352: 0x9F8C, + 22353: 0x9EFE, + 22354: 0x9F0B, + 22355: 0x9F0D, + 22356: 0x96B9, + 22357: 0x96BC, + 22358: 0x96BD, + 22359: 0x96CE, + 22360: 0x96D2, + 22361: 0x77BF, + 22362: 0x96E0, + 22363: 0x928E, + 22364: 0x92AE, + 22365: 0x92C8, + 22366: 0x933E, + 22367: 0x936A, + 22368: 0x93CA, + 22369: 0x938F, + 22370: 0x943E, + 22371: 0x946B, + 22372: 0x9C7F, + 22373: 0x9C82, + 22374: 0x9C85, + 22375: 0x9C86, + 22376: 0x9C87, + 22377: 0x9C88, + 22378: 0x7A23, + 22379: 0x9C8B, + 22380: 0x9C8E, + 22381: 0x9C90, + 22382: 0x9C91, + 22383: 0x9C92, + 22384: 0x9C94, + 22385: 0x9C95, + 22386: 0x9C9A, + 22387: 0x9C9B, + 22388: 0x9C9E, + 22389: 0x9C9F, + 22390: 0x9CA0, + 22391: 0x9CA1, + 22392: 0x9CA2, + 22393: 0x9CA3, + 22394: 0x9CA5, + 22395: 0x9CA6, + 22396: 0x9CA7, + 22397: 0x9CA8, + 22398: 0x9CA9, + 22399: 0x9CAB, + 22400: 0x9CAD, + 22401: 0x9CAE, + 22402: 0x9CB0, + 22403: 0x9CB1, + 22404: 0x9CB2, + 22405: 0x9CB3, + 22406: 0x9CB4, + 22407: 0x9CB5, + 22408: 0x9CB6, + 22409: 0x9CB7, + 22410: 0x9CBA, + 22411: 0x9CBB, + 22412: 0x9CBC, + 22413: 0x9CBD, + 22414: 0x9CC4, + 22415: 0x9CC5, + 22416: 0x9CC6, + 22417: 0x9CC7, + 22418: 0x9CCA, + 22419: 0x9CCB, + 22420: 0x9C3C, + 22421: 0x9C3D, + 22422: 0x9C3E, + 22423: 0x9C3F, + 22424: 0x9C40, + 22425: 0x9C41, + 22426: 0x9C42, + 22427: 0x9C43, + 22428: 0x9C44, + 22429: 0x9C45, + 22430: 0x9C46, + 22431: 0x9C47, + 22432: 0x9C48, + 22433: 0x9C49, + 22434: 0x9C4A, + 22435: 0x9C4B, + 22436: 0x9C4C, + 22437: 0x9C4D, + 22438: 0x9C4E, + 22439: 0x9C4F, + 22440: 0x9C50, + 22441: 0x9C51, + 22442: 0x9C52, + 22443: 0x9C53, + 22444: 0x9C54, + 22445: 0x9C55, + 22446: 0x9C56, + 22447: 0x9C57, + 22448: 0x9C58, + 22449: 0x9C59, + 22450: 0x9C5A, + 22451: 0x9C5B, + 22452: 0x9C5C, + 22453: 0x9C5D, + 22454: 0x9C5E, + 22455: 0x9C5F, + 22456: 0x9C60, + 22457: 0x9C61, + 22458: 0x9C62, + 22459: 0x9C63, + 22460: 0x9C64, + 22461: 0x9C65, + 22462: 0x9C66, + 22463: 0x9C67, + 22464: 0x9C68, + 22465: 0x9C69, + 22466: 0x9C6A, + 22467: 0x9C6B, + 22468: 0x9C6C, + 22469: 0x9C6D, + 22470: 0x9C6E, + 22471: 0x9C6F, + 22472: 0x9C70, + 22473: 0x9C71, + 22474: 0x9C72, + 22475: 0x9C73, + 22476: 0x9C74, + 22477: 0x9C75, + 22478: 0x9C76, + 22479: 0x9C77, + 22480: 0x9C78, + 22481: 0x9C79, + 22482: 0x9C7A, + 22483: 0x9C7B, + 22484: 0x9C7D, + 22485: 0x9C7E, + 22486: 0x9C80, + 22487: 0x9C83, + 22488: 0x9C84, + 22489: 0x9C89, + 22490: 0x9C8A, + 22491: 0x9C8C, + 22492: 0x9C8F, + 22493: 0x9C93, + 22494: 0x9C96, + 22495: 0x9C97, + 22496: 0x9C98, + 22497: 0x9C99, + 22498: 0x9C9D, + 22499: 0x9CAA, + 22500: 0x9CAC, + 22501: 0x9CAF, + 22502: 0x9CB9, + 22503: 0x9CBE, + 22504: 0x9CBF, + 22505: 0x9CC0, + 22506: 0x9CC1, + 22507: 0x9CC2, + 22508: 0x9CC8, + 22509: 0x9CC9, + 22510: 0x9CD1, + 22511: 0x9CD2, + 22512: 0x9CDA, + 22513: 0x9CDB, + 22514: 0x9CE0, + 22515: 0x9CE1, + 22516: 0x9CCC, + 22517: 0x9CCD, + 22518: 0x9CCE, + 22519: 0x9CCF, + 22520: 0x9CD0, + 22521: 0x9CD3, + 22522: 0x9CD4, + 22523: 0x9CD5, + 22524: 0x9CD7, + 22525: 0x9CD8, + 22526: 0x9CD9, + 22527: 0x9CDC, + 22528: 0x9CDD, + 22529: 0x9CDF, + 22530: 0x9CE2, + 22531: 0x977C, + 22532: 0x9785, + 22533: 0x9791, + 22534: 0x9792, + 22535: 0x9794, + 22536: 0x97AF, + 22537: 0x97AB, + 22538: 0x97A3, + 22539: 0x97B2, + 22540: 0x97B4, + 22541: 0x9AB1, + 22542: 0x9AB0, + 22543: 0x9AB7, + 22544: 0x9E58, + 22545: 0x9AB6, + 22546: 0x9ABA, + 22547: 0x9ABC, + 22548: 0x9AC1, + 22549: 0x9AC0, + 22550: 0x9AC5, + 22551: 0x9AC2, + 22552: 0x9ACB, + 22553: 0x9ACC, + 22554: 0x9AD1, + 22555: 0x9B45, + 22556: 0x9B43, + 22557: 0x9B47, + 22558: 0x9B49, + 22559: 0x9B48, + 22560: 0x9B4D, + 22561: 0x9B51, + 22562: 0x98E8, + 22563: 0x990D, + 22564: 0x992E, + 22565: 0x9955, + 22566: 0x9954, + 22567: 0x9ADF, + 22568: 0x9AE1, + 22569: 0x9AE6, + 22570: 0x9AEF, + 22571: 0x9AEB, + 22572: 0x9AFB, + 22573: 0x9AED, + 22574: 0x9AF9, + 22575: 0x9B08, + 22576: 0x9B0F, + 22577: 0x9B13, + 22578: 0x9B1F, + 22579: 0x9B23, + 22580: 0x9EBD, + 22581: 0x9EBE, + 22582: 0x7E3B, + 22583: 0x9E82, + 22584: 0x9E87, + 22585: 0x9E88, + 22586: 0x9E8B, + 22587: 0x9E92, + 22588: 0x93D6, + 22589: 0x9E9D, + 22590: 0x9E9F, + 22591: 0x9EDB, + 22592: 0x9EDC, + 22593: 0x9EDD, + 22594: 0x9EE0, + 22595: 0x9EDF, + 22596: 0x9EE2, + 22597: 0x9EE9, + 22598: 0x9EE7, + 22599: 0x9EE5, + 22600: 0x9EEA, + 22601: 0x9EEF, + 22602: 0x9F22, + 22603: 0x9F2C, + 22604: 0x9F2F, + 22605: 0x9F39, + 22606: 0x9F37, + 22607: 0x9F3D, + 22608: 0x9F3E, + 22609: 0x9F44, + 22610: 0x9CE3, + 22611: 0x9CE4, + 22612: 0x9CE5, + 22613: 0x9CE6, + 22614: 0x9CE7, + 22615: 0x9CE8, + 22616: 0x9CE9, + 22617: 0x9CEA, + 22618: 0x9CEB, + 22619: 0x9CEC, + 22620: 0x9CED, + 22621: 0x9CEE, + 22622: 0x9CEF, + 22623: 0x9CF0, + 22624: 0x9CF1, + 22625: 0x9CF2, + 22626: 0x9CF3, + 22627: 0x9CF4, + 22628: 0x9CF5, + 22629: 0x9CF6, + 22630: 0x9CF7, + 22631: 0x9CF8, + 22632: 0x9CF9, + 22633: 0x9CFA, + 22634: 0x9CFB, + 22635: 0x9CFC, + 22636: 0x9CFD, + 22637: 0x9CFE, + 22638: 0x9CFF, + 22639: 0x9D00, + 22640: 0x9D01, + 22641: 0x9D02, + 22642: 0x9D03, + 22643: 0x9D04, + 22644: 0x9D05, + 22645: 0x9D06, + 22646: 0x9D07, + 22647: 0x9D08, + 22648: 0x9D09, + 22649: 0x9D0A, + 22650: 0x9D0B, + 22651: 0x9D0C, + 22652: 0x9D0D, + 22653: 0x9D0E, + 22654: 0x9D0F, + 22655: 0x9D10, + 22656: 0x9D11, + 22657: 0x9D12, + 22658: 0x9D13, + 22659: 0x9D14, + 22660: 0x9D15, + 22661: 0x9D16, + 22662: 0x9D17, + 22663: 0x9D18, + 22664: 0x9D19, + 22665: 0x9D1A, + 22666: 0x9D1B, + 22667: 0x9D1C, + 22668: 0x9D1D, + 22669: 0x9D1E, + 22670: 0x9D1F, + 22671: 0x9D20, + 22672: 0x9D21, + 22673: 0x9D22, + 22674: 0x9D23, + 22675: 0x9D24, + 22676: 0x9D25, + 22677: 0x9D26, + 22678: 0x9D27, + 22679: 0x9D28, + 22680: 0x9D29, + 22681: 0x9D2A, + 22682: 0x9D2B, + 22683: 0x9D2C, + 22684: 0x9D2D, + 22685: 0x9D2E, + 22686: 0x9D2F, + 22687: 0x9D30, + 22688: 0x9D31, + 22689: 0x9D32, + 22690: 0x9D33, + 22691: 0x9D34, + 22692: 0x9D35, + 22693: 0x9D36, + 22694: 0x9D37, + 22695: 0x9D38, + 22696: 0x9D39, + 22697: 0x9D3A, + 22698: 0x9D3B, + 22699: 0x9D3C, + 22700: 0x9D3D, + 22701: 0x9D3E, + 22702: 0x9D3F, + 22703: 0x9D40, + 22704: 0x9D41, + 22705: 0x9D42, + 22800: 0x9D43, + 22801: 0x9D44, + 22802: 0x9D45, + 22803: 0x9D46, + 22804: 0x9D47, + 22805: 0x9D48, + 22806: 0x9D49, + 22807: 0x9D4A, + 22808: 0x9D4B, + 22809: 0x9D4C, + 22810: 0x9D4D, + 22811: 0x9D4E, + 22812: 0x9D4F, + 22813: 0x9D50, + 22814: 0x9D51, + 22815: 0x9D52, + 22816: 0x9D53, + 22817: 0x9D54, + 22818: 0x9D55, + 22819: 0x9D56, + 22820: 0x9D57, + 22821: 0x9D58, + 22822: 0x9D59, + 22823: 0x9D5A, + 22824: 0x9D5B, + 22825: 0x9D5C, + 22826: 0x9D5D, + 22827: 0x9D5E, + 22828: 0x9D5F, + 22829: 0x9D60, + 22830: 0x9D61, + 22831: 0x9D62, + 22832: 0x9D63, + 22833: 0x9D64, + 22834: 0x9D65, + 22835: 0x9D66, + 22836: 0x9D67, + 22837: 0x9D68, + 22838: 0x9D69, + 22839: 0x9D6A, + 22840: 0x9D6B, + 22841: 0x9D6C, + 22842: 0x9D6D, + 22843: 0x9D6E, + 22844: 0x9D6F, + 22845: 0x9D70, + 22846: 0x9D71, + 22847: 0x9D72, + 22848: 0x9D73, + 22849: 0x9D74, + 22850: 0x9D75, + 22851: 0x9D76, + 22852: 0x9D77, + 22853: 0x9D78, + 22854: 0x9D79, + 22855: 0x9D7A, + 22856: 0x9D7B, + 22857: 0x9D7C, + 22858: 0x9D7D, + 22859: 0x9D7E, + 22860: 0x9D7F, + 22861: 0x9D80, + 22862: 0x9D81, + 22863: 0x9D82, + 22864: 0x9D83, + 22865: 0x9D84, + 22866: 0x9D85, + 22867: 0x9D86, + 22868: 0x9D87, + 22869: 0x9D88, + 22870: 0x9D89, + 22871: 0x9D8A, + 22872: 0x9D8B, + 22873: 0x9D8C, + 22874: 0x9D8D, + 22875: 0x9D8E, + 22876: 0x9D8F, + 22877: 0x9D90, + 22878: 0x9D91, + 22879: 0x9D92, + 22880: 0x9D93, + 22881: 0x9D94, + 22882: 0x9D95, + 22883: 0x9D96, + 22884: 0x9D97, + 22885: 0x9D98, + 22886: 0x9D99, + 22887: 0x9D9A, + 22888: 0x9D9B, + 22889: 0x9D9C, + 22890: 0x9D9D, + 22891: 0x9D9E, + 22892: 0x9D9F, + 22893: 0x9DA0, + 22894: 0x9DA1, + 22895: 0x9DA2, + 22990: 0x9DA3, + 22991: 0x9DA4, + 22992: 0x9DA5, + 22993: 0x9DA6, + 22994: 0x9DA7, + 22995: 0x9DA8, + 22996: 0x9DA9, + 22997: 0x9DAA, + 22998: 0x9DAB, + 22999: 0x9DAC, + 23000: 0x9DAD, + 23001: 0x9DAE, + 23002: 0x9DAF, + 23003: 0x9DB0, + 23004: 0x9DB1, + 23005: 0x9DB2, + 23006: 0x9DB3, + 23007: 0x9DB4, + 23008: 0x9DB5, + 23009: 0x9DB6, + 23010: 0x9DB7, + 23011: 0x9DB8, + 23012: 0x9DB9, + 23013: 0x9DBA, + 23014: 0x9DBB, + 23015: 0x9DBC, + 23016: 0x9DBD, + 23017: 0x9DBE, + 23018: 0x9DBF, + 23019: 0x9DC0, + 23020: 0x9DC1, + 23021: 0x9DC2, + 23022: 0x9DC3, + 23023: 0x9DC4, + 23024: 0x9DC5, + 23025: 0x9DC6, + 23026: 0x9DC7, + 23027: 0x9DC8, + 23028: 0x9DC9, + 23029: 0x9DCA, + 23030: 0x9DCB, + 23031: 0x9DCC, + 23032: 0x9DCD, + 23033: 0x9DCE, + 23034: 0x9DCF, + 23035: 0x9DD0, + 23036: 0x9DD1, + 23037: 0x9DD2, + 23038: 0x9DD3, + 23039: 0x9DD4, + 23040: 0x9DD5, + 23041: 0x9DD6, + 23042: 0x9DD7, + 23043: 0x9DD8, + 23044: 0x9DD9, + 23045: 0x9DDA, + 23046: 0x9DDB, + 23047: 0x9DDC, + 23048: 0x9DDD, + 23049: 0x9DDE, + 23050: 0x9DDF, + 23051: 0x9DE0, + 23052: 0x9DE1, + 23053: 0x9DE2, + 23054: 0x9DE3, + 23055: 0x9DE4, + 23056: 0x9DE5, + 23057: 0x9DE6, + 23058: 0x9DE7, + 23059: 0x9DE8, + 23060: 0x9DE9, + 23061: 0x9DEA, + 23062: 0x9DEB, + 23063: 0x9DEC, + 23064: 0x9DED, + 23065: 0x9DEE, + 23066: 0x9DEF, + 23067: 0x9DF0, + 23068: 0x9DF1, + 23069: 0x9DF2, + 23070: 0x9DF3, + 23071: 0x9DF4, + 23072: 0x9DF5, + 23073: 0x9DF6, + 23074: 0x9DF7, + 23075: 0x9DF8, + 23076: 0x9DF9, + 23077: 0x9DFA, + 23078: 0x9DFB, + 23079: 0x9DFC, + 23080: 0x9DFD, + 23081: 0x9DFE, + 23082: 0x9DFF, + 23083: 0x9E00, + 23084: 0x9E01, + 23085: 0x9E02, + 23180: 0x9E03, + 23181: 0x9E04, + 23182: 0x9E05, + 23183: 0x9E06, + 23184: 0x9E07, + 23185: 0x9E08, + 23186: 0x9E09, + 23187: 0x9E0A, + 23188: 0x9E0B, + 23189: 0x9E0C, + 23190: 0x9E0D, + 23191: 0x9E0E, + 23192: 0x9E0F, + 23193: 0x9E10, + 23194: 0x9E11, + 23195: 0x9E12, + 23196: 0x9E13, + 23197: 0x9E14, + 23198: 0x9E15, + 23199: 0x9E16, + 23200: 0x9E17, + 23201: 0x9E18, + 23202: 0x9E19, + 23203: 0x9E1A, + 23204: 0x9E1B, + 23205: 0x9E1C, + 23206: 0x9E1D, + 23207: 0x9E1E, + 23208: 0x9E24, + 23209: 0x9E27, + 23210: 0x9E2E, + 23211: 0x9E30, + 23212: 0x9E34, + 23213: 0x9E3B, + 23214: 0x9E3C, + 23215: 0x9E40, + 23216: 0x9E4D, + 23217: 0x9E50, + 23218: 0x9E52, + 23219: 0x9E53, + 23220: 0x9E54, + 23221: 0x9E56, + 23222: 0x9E59, + 23223: 0x9E5D, + 23224: 0x9E5F, + 23225: 0x9E60, + 23226: 0x9E61, + 23227: 0x9E62, + 23228: 0x9E65, + 23229: 0x9E6E, + 23230: 0x9E6F, + 23231: 0x9E72, + 23232: 0x9E74, + 23233: 0x9E75, + 23234: 0x9E76, + 23235: 0x9E77, + 23236: 0x9E78, + 23237: 0x9E79, + 23238: 0x9E7A, + 23239: 0x9E7B, + 23240: 0x9E7C, + 23241: 0x9E7D, + 23242: 0x9E80, + 23243: 0x9E81, + 23244: 0x9E83, + 23245: 0x9E84, + 23246: 0x9E85, + 23247: 0x9E86, + 23248: 0x9E89, + 23249: 0x9E8A, + 23250: 0x9E8C, + 23251: 0x9E8D, + 23252: 0x9E8E, + 23253: 0x9E8F, + 23254: 0x9E90, + 23255: 0x9E91, + 23256: 0x9E94, + 23257: 0x9E95, + 23258: 0x9E96, + 23259: 0x9E97, + 23260: 0x9E98, + 23261: 0x9E99, + 23262: 0x9E9A, + 23263: 0x9E9B, + 23264: 0x9E9C, + 23265: 0x9E9E, + 23266: 0x9EA0, + 23267: 0x9EA1, + 23268: 0x9EA2, + 23269: 0x9EA3, + 23270: 0x9EA4, + 23271: 0x9EA5, + 23272: 0x9EA7, + 23273: 0x9EA8, + 23274: 0x9EA9, + 23275: 0x9EAA, + 23370: 0x9EAB, + 23371: 0x9EAC, + 23372: 0x9EAD, + 23373: 0x9EAE, + 23374: 0x9EAF, + 23375: 0x9EB0, + 23376: 0x9EB1, + 23377: 0x9EB2, + 23378: 0x9EB3, + 23379: 0x9EB5, + 23380: 0x9EB6, + 23381: 0x9EB7, + 23382: 0x9EB9, + 23383: 0x9EBA, + 23384: 0x9EBC, + 23385: 0x9EBF, + 23386: 0x9EC0, + 23387: 0x9EC1, + 23388: 0x9EC2, + 23389: 0x9EC3, + 23390: 0x9EC5, + 23391: 0x9EC6, + 23392: 0x9EC7, + 23393: 0x9EC8, + 23394: 0x9ECA, + 23395: 0x9ECB, + 23396: 0x9ECC, + 23397: 0x9ED0, + 23398: 0x9ED2, + 23399: 0x9ED3, + 23400: 0x9ED5, + 23401: 0x9ED6, + 23402: 0x9ED7, + 23403: 0x9ED9, + 23404: 0x9EDA, + 23405: 0x9EDE, + 23406: 0x9EE1, + 23407: 0x9EE3, + 23408: 0x9EE4, + 23409: 0x9EE6, + 23410: 0x9EE8, + 23411: 0x9EEB, + 23412: 0x9EEC, + 23413: 0x9EED, + 23414: 0x9EEE, + 23415: 0x9EF0, + 23416: 0x9EF1, + 23417: 0x9EF2, + 23418: 0x9EF3, + 23419: 0x9EF4, + 23420: 0x9EF5, + 23421: 0x9EF6, + 23422: 0x9EF7, + 23423: 0x9EF8, + 23424: 0x9EFA, + 23425: 0x9EFD, + 23426: 0x9EFF, + 23427: 0x9F00, + 23428: 0x9F01, + 23429: 0x9F02, + 23430: 0x9F03, + 23431: 0x9F04, + 23432: 0x9F05, + 23433: 0x9F06, + 23434: 0x9F07, + 23435: 0x9F08, + 23436: 0x9F09, + 23437: 0x9F0A, + 23438: 0x9F0C, + 23439: 0x9F0F, + 23440: 0x9F11, + 23441: 0x9F12, + 23442: 0x9F14, + 23443: 0x9F15, + 23444: 0x9F16, + 23445: 0x9F18, + 23446: 0x9F1A, + 23447: 0x9F1B, + 23448: 0x9F1C, + 23449: 0x9F1D, + 23450: 0x9F1E, + 23451: 0x9F1F, + 23452: 0x9F21, + 23453: 0x9F23, + 23454: 0x9F24, + 23455: 0x9F25, + 23456: 0x9F26, + 23457: 0x9F27, + 23458: 0x9F28, + 23459: 0x9F29, + 23460: 0x9F2A, + 23461: 0x9F2B, + 23462: 0x9F2D, + 23463: 0x9F2E, + 23464: 0x9F30, + 23465: 0x9F31, + 23560: 0x9F32, + 23561: 0x9F33, + 23562: 0x9F34, + 23563: 0x9F35, + 23564: 0x9F36, + 23565: 0x9F38, + 23566: 0x9F3A, + 23567: 0x9F3C, + 23568: 0x9F3F, + 23569: 0x9F40, + 23570: 0x9F41, + 23571: 0x9F42, + 23572: 0x9F43, + 23573: 0x9F45, + 23574: 0x9F46, + 23575: 0x9F47, + 23576: 0x9F48, + 23577: 0x9F49, + 23578: 0x9F4A, + 23579: 0x9F4B, + 23580: 0x9F4C, + 23581: 0x9F4D, + 23582: 0x9F4E, + 23583: 0x9F4F, + 23584: 0x9F52, + 23585: 0x9F53, + 23586: 0x9F54, + 23587: 0x9F55, + 23588: 0x9F56, + 23589: 0x9F57, + 23590: 0x9F58, + 23591: 0x9F59, + 23592: 0x9F5A, + 23593: 0x9F5B, + 23594: 0x9F5C, + 23595: 0x9F5D, + 23596: 0x9F5E, + 23597: 0x9F5F, + 23598: 0x9F60, + 23599: 0x9F61, + 23600: 0x9F62, + 23601: 0x9F63, + 23602: 0x9F64, + 23603: 0x9F65, + 23604: 0x9F66, + 23605: 0x9F67, + 23606: 0x9F68, + 23607: 0x9F69, + 23608: 0x9F6A, + 23609: 0x9F6B, + 23610: 0x9F6C, + 23611: 0x9F6D, + 23612: 0x9F6E, + 23613: 0x9F6F, + 23614: 0x9F70, + 23615: 0x9F71, + 23616: 0x9F72, + 23617: 0x9F73, + 23618: 0x9F74, + 23619: 0x9F75, + 23620: 0x9F76, + 23621: 0x9F77, + 23622: 0x9F78, + 23623: 0x9F79, + 23624: 0x9F7A, + 23625: 0x9F7B, + 23626: 0x9F7C, + 23627: 0x9F7D, + 23628: 0x9F7E, + 23629: 0x9F81, + 23630: 0x9F82, + 23631: 0x9F8D, + 23632: 0x9F8E, + 23633: 0x9F8F, + 23634: 0x9F90, + 23635: 0x9F91, + 23636: 0x9F92, + 23637: 0x9F93, + 23638: 0x9F94, + 23639: 0x9F95, + 23640: 0x9F96, + 23641: 0x9F97, + 23642: 0x9F98, + 23643: 0x9F9C, + 23644: 0x9F9D, + 23645: 0x9F9E, + 23646: 0x9FA1, + 23647: 0x9FA2, + 23648: 0x9FA3, + 23649: 0x9FA4, + 23650: 0x9FA5, + 23651: 0xF92C, + 23652: 0xF979, + 23653: 0xF995, + 23654: 0xF9E7, + 23655: 0xF9F1, + 23750: 0xFA0C, + 23751: 0xFA0D, + 23752: 0xFA0E, + 23753: 0xFA0F, + 23754: 0xFA11, + 23755: 0xFA13, + 23756: 0xFA14, + 23757: 0xFA18, + 23758: 0xFA1F, + 23759: 0xFA20, + 23760: 0xFA21, + 23761: 0xFA23, + 23762: 0xFA24, + 23763: 0xFA27, + 23764: 0xFA28, + 23765: 0xFA29, + 23766: 0x2E81, + 23770: 0x2E84, + 23771: 0x3473, + 23772: 0x3447, + 23773: 0x2E88, + 23774: 0x2E8B, + 23776: 0x359E, + 23777: 0x361A, + 23778: 0x360E, + 23779: 0x2E8C, + 23780: 0x2E97, + 23781: 0x396E, + 23782: 0x3918, + 23784: 0x39CF, + 23785: 0x39DF, + 23786: 0x3A73, + 23787: 0x39D0, + 23790: 0x3B4E, + 23791: 0x3C6E, + 23792: 0x3CE0, + 23793: 0x2EA7, + 23796: 0x2EAA, + 23797: 0x4056, + 23798: 0x415F, + 23799: 0x2EAE, + 23800: 0x4337, + 23801: 0x2EB3, + 23802: 0x2EB6, + 23803: 0x2EB7, + 23805: 0x43B1, + 23806: 0x43AC, + 23807: 0x2EBB, + 23808: 0x43DD, + 23809: 0x44D6, + 23810: 0x4661, + 23811: 0x464C, + 23813: 0x4723, + 23814: 0x4729, + 23815: 0x477C, + 23816: 0x478D, + 23817: 0x2ECA, + 23818: 0x4947, + 23819: 0x497A, + 23820: 0x497D, + 23821: 0x4982, + 23822: 0x4983, + 23823: 0x4985, + 23824: 0x4986, + 23825: 0x499F, + 23826: 0x499B, + 23827: 0x49B7, + 23828: 0x49B6, + 23831: 0x4CA3, + 23832: 0x4C9F, + 23833: 0x4CA0, + 23834: 0x4CA1, + 23835: 0x4C77, + 23836: 0x4CA2, + 23837: 0x4D13, + 23838: 0x4D14, + 23839: 0x4D15, + 23840: 0x4D16, + 23841: 0x4D17, + 23842: 0x4D18, + 23843: 0x4D19, + 23844: 0x4DAE, +} + +const numEncodeTables = 5 + +// encodeX are the encoding tables from Unicode to GBK code, +// sorted by decreasing length. +// encode0: 28965 entries for runes in [11905, 40870). +// encode1: 1587 entries for runes in [ 8208, 9795). +// encode2: 942 entries for runes in [ 164, 1106). +// encode3: 438 entries for runes in [65072, 65510). +// encode4: 254 entries for runes in [63788, 64042). + +const encode0Low, encode0High = 11905, 40870 + +var encode0 = [...]uint16{ + 11905 - 11905: 0xFE50, + 11908 - 11905: 0xFE54, + 11912 - 11905: 0xFE57, + 11915 - 11905: 0xFE58, + 11916 - 11905: 0xFE5D, + 11927 - 11905: 0xFE5E, + 11943 - 11905: 0xFE6B, + 11946 - 11905: 0xFE6E, + 11950 - 11905: 0xFE71, + 11955 - 11905: 0xFE73, + 11958 - 11905: 0xFE74, + 11959 - 11905: 0xFE75, + 11963 - 11905: 0xFE79, + 11978 - 11905: 0xFE84, + 12272 - 11905: 0xA98A, + 12273 - 11905: 0xA98B, + 12274 - 11905: 0xA98C, + 12275 - 11905: 0xA98D, + 12276 - 11905: 0xA98E, + 12277 - 11905: 0xA98F, + 12278 - 11905: 0xA990, + 12279 - 11905: 0xA991, + 12280 - 11905: 0xA992, + 12281 - 11905: 0xA993, + 12282 - 11905: 0xA994, + 12283 - 11905: 0xA995, + 12288 - 11905: 0xA1A1, + 12289 - 11905: 0xA1A2, + 12290 - 11905: 0xA1A3, + 12291 - 11905: 0xA1A8, + 12293 - 11905: 0xA1A9, + 12294 - 11905: 0xA965, + 12295 - 11905: 0xA996, + 12296 - 11905: 0xA1B4, + 12297 - 11905: 0xA1B5, + 12298 - 11905: 0xA1B6, + 12299 - 11905: 0xA1B7, + 12300 - 11905: 0xA1B8, + 12301 - 11905: 0xA1B9, + 12302 - 11905: 0xA1BA, + 12303 - 11905: 0xA1BB, + 12304 - 11905: 0xA1BE, + 12305 - 11905: 0xA1BF, + 12306 - 11905: 0xA893, + 12307 - 11905: 0xA1FE, + 12308 - 11905: 0xA1B2, + 12309 - 11905: 0xA1B3, + 12310 - 11905: 0xA1BC, + 12311 - 11905: 0xA1BD, + 12317 - 11905: 0xA894, + 12318 - 11905: 0xA895, + 12321 - 11905: 0xA940, + 12322 - 11905: 0xA941, + 12323 - 11905: 0xA942, + 12324 - 11905: 0xA943, + 12325 - 11905: 0xA944, + 12326 - 11905: 0xA945, + 12327 - 11905: 0xA946, + 12328 - 11905: 0xA947, + 12329 - 11905: 0xA948, + 12350 - 11905: 0xA989, + 12353 - 11905: 0xA4A1, + 12354 - 11905: 0xA4A2, + 12355 - 11905: 0xA4A3, + 12356 - 11905: 0xA4A4, + 12357 - 11905: 0xA4A5, + 12358 - 11905: 0xA4A6, + 12359 - 11905: 0xA4A7, + 12360 - 11905: 0xA4A8, + 12361 - 11905: 0xA4A9, + 12362 - 11905: 0xA4AA, + 12363 - 11905: 0xA4AB, + 12364 - 11905: 0xA4AC, + 12365 - 11905: 0xA4AD, + 12366 - 11905: 0xA4AE, + 12367 - 11905: 0xA4AF, + 12368 - 11905: 0xA4B0, + 12369 - 11905: 0xA4B1, + 12370 - 11905: 0xA4B2, + 12371 - 11905: 0xA4B3, + 12372 - 11905: 0xA4B4, + 12373 - 11905: 0xA4B5, + 12374 - 11905: 0xA4B6, + 12375 - 11905: 0xA4B7, + 12376 - 11905: 0xA4B8, + 12377 - 11905: 0xA4B9, + 12378 - 11905: 0xA4BA, + 12379 - 11905: 0xA4BB, + 12380 - 11905: 0xA4BC, + 12381 - 11905: 0xA4BD, + 12382 - 11905: 0xA4BE, + 12383 - 11905: 0xA4BF, + 12384 - 11905: 0xA4C0, + 12385 - 11905: 0xA4C1, + 12386 - 11905: 0xA4C2, + 12387 - 11905: 0xA4C3, + 12388 - 11905: 0xA4C4, + 12389 - 11905: 0xA4C5, + 12390 - 11905: 0xA4C6, + 12391 - 11905: 0xA4C7, + 12392 - 11905: 0xA4C8, + 12393 - 11905: 0xA4C9, + 12394 - 11905: 0xA4CA, + 12395 - 11905: 0xA4CB, + 12396 - 11905: 0xA4CC, + 12397 - 11905: 0xA4CD, + 12398 - 11905: 0xA4CE, + 12399 - 11905: 0xA4CF, + 12400 - 11905: 0xA4D0, + 12401 - 11905: 0xA4D1, + 12402 - 11905: 0xA4D2, + 12403 - 11905: 0xA4D3, + 12404 - 11905: 0xA4D4, + 12405 - 11905: 0xA4D5, + 12406 - 11905: 0xA4D6, + 12407 - 11905: 0xA4D7, + 12408 - 11905: 0xA4D8, + 12409 - 11905: 0xA4D9, + 12410 - 11905: 0xA4DA, + 12411 - 11905: 0xA4DB, + 12412 - 11905: 0xA4DC, + 12413 - 11905: 0xA4DD, + 12414 - 11905: 0xA4DE, + 12415 - 11905: 0xA4DF, + 12416 - 11905: 0xA4E0, + 12417 - 11905: 0xA4E1, + 12418 - 11905: 0xA4E2, + 12419 - 11905: 0xA4E3, + 12420 - 11905: 0xA4E4, + 12421 - 11905: 0xA4E5, + 12422 - 11905: 0xA4E6, + 12423 - 11905: 0xA4E7, + 12424 - 11905: 0xA4E8, + 12425 - 11905: 0xA4E9, + 12426 - 11905: 0xA4EA, + 12427 - 11905: 0xA4EB, + 12428 - 11905: 0xA4EC, + 12429 - 11905: 0xA4ED, + 12430 - 11905: 0xA4EE, + 12431 - 11905: 0xA4EF, + 12432 - 11905: 0xA4F0, + 12433 - 11905: 0xA4F1, + 12434 - 11905: 0xA4F2, + 12435 - 11905: 0xA4F3, + 12443 - 11905: 0xA961, + 12444 - 11905: 0xA962, + 12445 - 11905: 0xA966, + 12446 - 11905: 0xA967, + 12449 - 11905: 0xA5A1, + 12450 - 11905: 0xA5A2, + 12451 - 11905: 0xA5A3, + 12452 - 11905: 0xA5A4, + 12453 - 11905: 0xA5A5, + 12454 - 11905: 0xA5A6, + 12455 - 11905: 0xA5A7, + 12456 - 11905: 0xA5A8, + 12457 - 11905: 0xA5A9, + 12458 - 11905: 0xA5AA, + 12459 - 11905: 0xA5AB, + 12460 - 11905: 0xA5AC, + 12461 - 11905: 0xA5AD, + 12462 - 11905: 0xA5AE, + 12463 - 11905: 0xA5AF, + 12464 - 11905: 0xA5B0, + 12465 - 11905: 0xA5B1, + 12466 - 11905: 0xA5B2, + 12467 - 11905: 0xA5B3, + 12468 - 11905: 0xA5B4, + 12469 - 11905: 0xA5B5, + 12470 - 11905: 0xA5B6, + 12471 - 11905: 0xA5B7, + 12472 - 11905: 0xA5B8, + 12473 - 11905: 0xA5B9, + 12474 - 11905: 0xA5BA, + 12475 - 11905: 0xA5BB, + 12476 - 11905: 0xA5BC, + 12477 - 11905: 0xA5BD, + 12478 - 11905: 0xA5BE, + 12479 - 11905: 0xA5BF, + 12480 - 11905: 0xA5C0, + 12481 - 11905: 0xA5C1, + 12482 - 11905: 0xA5C2, + 12483 - 11905: 0xA5C3, + 12484 - 11905: 0xA5C4, + 12485 - 11905: 0xA5C5, + 12486 - 11905: 0xA5C6, + 12487 - 11905: 0xA5C7, + 12488 - 11905: 0xA5C8, + 12489 - 11905: 0xA5C9, + 12490 - 11905: 0xA5CA, + 12491 - 11905: 0xA5CB, + 12492 - 11905: 0xA5CC, + 12493 - 11905: 0xA5CD, + 12494 - 11905: 0xA5CE, + 12495 - 11905: 0xA5CF, + 12496 - 11905: 0xA5D0, + 12497 - 11905: 0xA5D1, + 12498 - 11905: 0xA5D2, + 12499 - 11905: 0xA5D3, + 12500 - 11905: 0xA5D4, + 12501 - 11905: 0xA5D5, + 12502 - 11905: 0xA5D6, + 12503 - 11905: 0xA5D7, + 12504 - 11905: 0xA5D8, + 12505 - 11905: 0xA5D9, + 12506 - 11905: 0xA5DA, + 12507 - 11905: 0xA5DB, + 12508 - 11905: 0xA5DC, + 12509 - 11905: 0xA5DD, + 12510 - 11905: 0xA5DE, + 12511 - 11905: 0xA5DF, + 12512 - 11905: 0xA5E0, + 12513 - 11905: 0xA5E1, + 12514 - 11905: 0xA5E2, + 12515 - 11905: 0xA5E3, + 12516 - 11905: 0xA5E4, + 12517 - 11905: 0xA5E5, + 12518 - 11905: 0xA5E6, + 12519 - 11905: 0xA5E7, + 12520 - 11905: 0xA5E8, + 12521 - 11905: 0xA5E9, + 12522 - 11905: 0xA5EA, + 12523 - 11905: 0xA5EB, + 12524 - 11905: 0xA5EC, + 12525 - 11905: 0xA5ED, + 12526 - 11905: 0xA5EE, + 12527 - 11905: 0xA5EF, + 12528 - 11905: 0xA5F0, + 12529 - 11905: 0xA5F1, + 12530 - 11905: 0xA5F2, + 12531 - 11905: 0xA5F3, + 12532 - 11905: 0xA5F4, + 12533 - 11905: 0xA5F5, + 12534 - 11905: 0xA5F6, + 12540 - 11905: 0xA960, + 12541 - 11905: 0xA963, + 12542 - 11905: 0xA964, + 12549 - 11905: 0xA8C5, + 12550 - 11905: 0xA8C6, + 12551 - 11905: 0xA8C7, + 12552 - 11905: 0xA8C8, + 12553 - 11905: 0xA8C9, + 12554 - 11905: 0xA8CA, + 12555 - 11905: 0xA8CB, + 12556 - 11905: 0xA8CC, + 12557 - 11905: 0xA8CD, + 12558 - 11905: 0xA8CE, + 12559 - 11905: 0xA8CF, + 12560 - 11905: 0xA8D0, + 12561 - 11905: 0xA8D1, + 12562 - 11905: 0xA8D2, + 12563 - 11905: 0xA8D3, + 12564 - 11905: 0xA8D4, + 12565 - 11905: 0xA8D5, + 12566 - 11905: 0xA8D6, + 12567 - 11905: 0xA8D7, + 12568 - 11905: 0xA8D8, + 12569 - 11905: 0xA8D9, + 12570 - 11905: 0xA8DA, + 12571 - 11905: 0xA8DB, + 12572 - 11905: 0xA8DC, + 12573 - 11905: 0xA8DD, + 12574 - 11905: 0xA8DE, + 12575 - 11905: 0xA8DF, + 12576 - 11905: 0xA8E0, + 12577 - 11905: 0xA8E1, + 12578 - 11905: 0xA8E2, + 12579 - 11905: 0xA8E3, + 12580 - 11905: 0xA8E4, + 12581 - 11905: 0xA8E5, + 12582 - 11905: 0xA8E6, + 12583 - 11905: 0xA8E7, + 12584 - 11905: 0xA8E8, + 12585 - 11905: 0xA8E9, + 12832 - 11905: 0xA2E5, + 12833 - 11905: 0xA2E6, + 12834 - 11905: 0xA2E7, + 12835 - 11905: 0xA2E8, + 12836 - 11905: 0xA2E9, + 12837 - 11905: 0xA2EA, + 12838 - 11905: 0xA2EB, + 12839 - 11905: 0xA2EC, + 12840 - 11905: 0xA2ED, + 12841 - 11905: 0xA2EE, + 12849 - 11905: 0xA95A, + 12963 - 11905: 0xA949, + 13198 - 11905: 0xA94A, + 13199 - 11905: 0xA94B, + 13212 - 11905: 0xA94C, + 13213 - 11905: 0xA94D, + 13214 - 11905: 0xA94E, + 13217 - 11905: 0xA94F, + 13252 - 11905: 0xA950, + 13262 - 11905: 0xA951, + 13265 - 11905: 0xA952, + 13266 - 11905: 0xA953, + 13269 - 11905: 0xA954, + 13383 - 11905: 0xFE56, + 13427 - 11905: 0xFE55, + 13726 - 11905: 0xFE5A, + 13838 - 11905: 0xFE5C, + 13850 - 11905: 0xFE5B, + 14616 - 11905: 0xFE60, + 14702 - 11905: 0xFE5F, + 14799 - 11905: 0xFE62, + 14800 - 11905: 0xFE65, + 14815 - 11905: 0xFE63, + 14963 - 11905: 0xFE64, + 15182 - 11905: 0xFE68, + 15470 - 11905: 0xFE69, + 15584 - 11905: 0xFE6A, + 16470 - 11905: 0xFE6F, + 16735 - 11905: 0xFE70, + 17207 - 11905: 0xFE72, + 17324 - 11905: 0xFE78, + 17329 - 11905: 0xFE77, + 17373 - 11905: 0xFE7A, + 17622 - 11905: 0xFE7B, + 17996 - 11905: 0xFE7D, + 18017 - 11905: 0xFE7C, + 18211 - 11905: 0xFE80, + 18217 - 11905: 0xFE81, + 18300 - 11905: 0xFE82, + 18317 - 11905: 0xFE83, + 18759 - 11905: 0xFE85, + 18810 - 11905: 0xFE86, + 18813 - 11905: 0xFE87, + 18818 - 11905: 0xFE88, + 18819 - 11905: 0xFE89, + 18821 - 11905: 0xFE8A, + 18822 - 11905: 0xFE8B, + 18843 - 11905: 0xFE8D, + 18847 - 11905: 0xFE8C, + 18870 - 11905: 0xFE8F, + 18871 - 11905: 0xFE8E, + 19575 - 11905: 0xFE96, + 19615 - 11905: 0xFE93, + 19616 - 11905: 0xFE94, + 19617 - 11905: 0xFE95, + 19618 - 11905: 0xFE97, + 19619 - 11905: 0xFE92, + 19731 - 11905: 0xFE98, + 19732 - 11905: 0xFE99, + 19733 - 11905: 0xFE9A, + 19734 - 11905: 0xFE9B, + 19735 - 11905: 0xFE9C, + 19736 - 11905: 0xFE9D, + 19737 - 11905: 0xFE9E, + 19886 - 11905: 0xFE9F, + 19968 - 11905: 0xD2BB, + 19969 - 11905: 0xB6A1, + 19970 - 11905: 0x8140, + 19971 - 11905: 0xC6DF, + 19972 - 11905: 0x8141, + 19973 - 11905: 0x8142, + 19974 - 11905: 0x8143, + 19975 - 11905: 0xCDF2, + 19976 - 11905: 0xD5C9, + 19977 - 11905: 0xC8FD, + 19978 - 11905: 0xC9CF, + 19979 - 11905: 0xCFC2, + 19980 - 11905: 0xD8A2, + 19981 - 11905: 0xB2BB, + 19982 - 11905: 0xD3EB, + 19983 - 11905: 0x8144, + 19984 - 11905: 0xD8A4, + 19985 - 11905: 0xB3F3, + 19986 - 11905: 0x8145, + 19987 - 11905: 0xD7A8, + 19988 - 11905: 0xC7D2, + 19989 - 11905: 0xD8A7, + 19990 - 11905: 0xCAC0, + 19991 - 11905: 0x8146, + 19992 - 11905: 0xC7F0, + 19993 - 11905: 0xB1FB, + 19994 - 11905: 0xD2B5, + 19995 - 11905: 0xB4D4, + 19996 - 11905: 0xB6AB, + 19997 - 11905: 0xCBBF, + 19998 - 11905: 0xD8A9, + 19999 - 11905: 0x8147, + 20000 - 11905: 0x8148, + 20001 - 11905: 0x8149, + 20002 - 11905: 0xB6AA, + 20003 - 11905: 0x814A, + 20004 - 11905: 0xC1BD, + 20005 - 11905: 0xD1CF, + 20006 - 11905: 0x814B, + 20007 - 11905: 0xC9A5, + 20008 - 11905: 0xD8AD, + 20009 - 11905: 0x814C, + 20010 - 11905: 0xB8F6, + 20011 - 11905: 0xD1BE, + 20012 - 11905: 0xE3DC, + 20013 - 11905: 0xD6D0, + 20014 - 11905: 0x814D, + 20015 - 11905: 0x814E, + 20016 - 11905: 0xB7E1, + 20017 - 11905: 0x814F, + 20018 - 11905: 0xB4AE, + 20019 - 11905: 0x8150, + 20020 - 11905: 0xC1D9, + 20021 - 11905: 0x8151, + 20022 - 11905: 0xD8BC, + 20023 - 11905: 0x8152, + 20024 - 11905: 0xCDE8, + 20025 - 11905: 0xB5A4, + 20026 - 11905: 0xCEAA, + 20027 - 11905: 0xD6F7, + 20028 - 11905: 0x8153, + 20029 - 11905: 0xC0F6, + 20030 - 11905: 0xBED9, + 20031 - 11905: 0xD8AF, + 20032 - 11905: 0x8154, + 20033 - 11905: 0x8155, + 20034 - 11905: 0x8156, + 20035 - 11905: 0xC4CB, + 20036 - 11905: 0x8157, + 20037 - 11905: 0xBEC3, + 20038 - 11905: 0x8158, + 20039 - 11905: 0xD8B1, + 20040 - 11905: 0xC3B4, + 20041 - 11905: 0xD2E5, + 20042 - 11905: 0x8159, + 20043 - 11905: 0xD6AE, + 20044 - 11905: 0xCEDA, + 20045 - 11905: 0xD5A7, + 20046 - 11905: 0xBAF5, + 20047 - 11905: 0xB7A6, + 20048 - 11905: 0xC0D6, + 20049 - 11905: 0x815A, + 20050 - 11905: 0xC6B9, + 20051 - 11905: 0xC5D2, + 20052 - 11905: 0xC7C7, + 20053 - 11905: 0x815B, + 20054 - 11905: 0xB9D4, + 20055 - 11905: 0x815C, + 20056 - 11905: 0xB3CB, + 20057 - 11905: 0xD2D2, + 20058 - 11905: 0x815D, + 20059 - 11905: 0x815E, + 20060 - 11905: 0xD8BF, + 20061 - 11905: 0xBEC5, + 20062 - 11905: 0xC6F2, + 20063 - 11905: 0xD2B2, + 20064 - 11905: 0xCFB0, + 20065 - 11905: 0xCFE7, + 20066 - 11905: 0x815F, + 20067 - 11905: 0x8160, + 20068 - 11905: 0x8161, + 20069 - 11905: 0x8162, + 20070 - 11905: 0xCAE9, + 20071 - 11905: 0x8163, + 20072 - 11905: 0x8164, + 20073 - 11905: 0xD8C0, + 20074 - 11905: 0x8165, + 20075 - 11905: 0x8166, + 20076 - 11905: 0x8167, + 20077 - 11905: 0x8168, + 20078 - 11905: 0x8169, + 20079 - 11905: 0x816A, + 20080 - 11905: 0xC2F2, + 20081 - 11905: 0xC2D2, + 20082 - 11905: 0x816B, + 20083 - 11905: 0xC8E9, + 20084 - 11905: 0x816C, + 20085 - 11905: 0x816D, + 20086 - 11905: 0x816E, + 20087 - 11905: 0x816F, + 20088 - 11905: 0x8170, + 20089 - 11905: 0x8171, + 20090 - 11905: 0x8172, + 20091 - 11905: 0x8173, + 20092 - 11905: 0x8174, + 20093 - 11905: 0x8175, + 20094 - 11905: 0xC7AC, + 20095 - 11905: 0x8176, + 20096 - 11905: 0x8177, + 20097 - 11905: 0x8178, + 20098 - 11905: 0x8179, + 20099 - 11905: 0x817A, + 20100 - 11905: 0x817B, + 20101 - 11905: 0x817C, + 20102 - 11905: 0xC1CB, + 20103 - 11905: 0x817D, + 20104 - 11905: 0xD3E8, + 20105 - 11905: 0xD5F9, + 20106 - 11905: 0x817E, + 20107 - 11905: 0xCAC2, + 20108 - 11905: 0xB6FE, + 20109 - 11905: 0xD8A1, + 20110 - 11905: 0xD3DA, + 20111 - 11905: 0xBFF7, + 20112 - 11905: 0x8180, + 20113 - 11905: 0xD4C6, + 20114 - 11905: 0xBBA5, + 20115 - 11905: 0xD8C1, + 20116 - 11905: 0xCEE5, + 20117 - 11905: 0xBEAE, + 20118 - 11905: 0x8181, + 20119 - 11905: 0x8182, + 20120 - 11905: 0xD8A8, + 20121 - 11905: 0x8183, + 20122 - 11905: 0xD1C7, + 20123 - 11905: 0xD0A9, + 20124 - 11905: 0x8184, + 20125 - 11905: 0x8185, + 20126 - 11905: 0x8186, + 20127 - 11905: 0xD8BD, + 20128 - 11905: 0xD9EF, + 20129 - 11905: 0xCDF6, + 20130 - 11905: 0xBFBA, + 20131 - 11905: 0x8187, + 20132 - 11905: 0xBDBB, + 20133 - 11905: 0xBAA5, + 20134 - 11905: 0xD2E0, + 20135 - 11905: 0xB2FA, + 20136 - 11905: 0xBAE0, + 20137 - 11905: 0xC4B6, + 20138 - 11905: 0x8188, + 20139 - 11905: 0xCFED, + 20140 - 11905: 0xBEA9, + 20141 - 11905: 0xCDA4, + 20142 - 11905: 0xC1C1, + 20143 - 11905: 0x8189, + 20144 - 11905: 0x818A, + 20145 - 11905: 0x818B, + 20146 - 11905: 0xC7D7, + 20147 - 11905: 0xD9F1, + 20148 - 11905: 0x818C, + 20149 - 11905: 0xD9F4, + 20150 - 11905: 0x818D, + 20151 - 11905: 0x818E, + 20152 - 11905: 0x818F, + 20153 - 11905: 0x8190, + 20154 - 11905: 0xC8CB, + 20155 - 11905: 0xD8E9, + 20156 - 11905: 0x8191, + 20157 - 11905: 0x8192, + 20158 - 11905: 0x8193, + 20159 - 11905: 0xD2DA, + 20160 - 11905: 0xCAB2, + 20161 - 11905: 0xC8CA, + 20162 - 11905: 0xD8EC, + 20163 - 11905: 0xD8EA, + 20164 - 11905: 0xD8C6, + 20165 - 11905: 0xBDF6, + 20166 - 11905: 0xC6CD, + 20167 - 11905: 0xB3F0, + 20168 - 11905: 0x8194, + 20169 - 11905: 0xD8EB, + 20170 - 11905: 0xBDF1, + 20171 - 11905: 0xBDE9, + 20172 - 11905: 0x8195, + 20173 - 11905: 0xC8D4, + 20174 - 11905: 0xB4D3, + 20175 - 11905: 0x8196, + 20176 - 11905: 0x8197, + 20177 - 11905: 0xC2D8, + 20178 - 11905: 0x8198, + 20179 - 11905: 0xB2D6, + 20180 - 11905: 0xD7D0, + 20181 - 11905: 0xCACB, + 20182 - 11905: 0xCBFB, + 20183 - 11905: 0xD5CC, + 20184 - 11905: 0xB8B6, + 20185 - 11905: 0xCFC9, + 20186 - 11905: 0x8199, + 20187 - 11905: 0x819A, + 20188 - 11905: 0x819B, + 20189 - 11905: 0xD9DA, + 20190 - 11905: 0xD8F0, + 20191 - 11905: 0xC7AA, + 20192 - 11905: 0x819C, + 20193 - 11905: 0xD8EE, + 20194 - 11905: 0x819D, + 20195 - 11905: 0xB4FA, + 20196 - 11905: 0xC1EE, + 20197 - 11905: 0xD2D4, + 20198 - 11905: 0x819E, + 20199 - 11905: 0x819F, + 20200 - 11905: 0xD8ED, + 20201 - 11905: 0x81A0, + 20202 - 11905: 0xD2C7, + 20203 - 11905: 0xD8EF, + 20204 - 11905: 0xC3C7, + 20205 - 11905: 0x81A1, + 20206 - 11905: 0x81A2, + 20207 - 11905: 0x81A3, + 20208 - 11905: 0xD1F6, + 20209 - 11905: 0x81A4, + 20210 - 11905: 0xD6D9, + 20211 - 11905: 0xD8F2, + 20212 - 11905: 0x81A5, + 20213 - 11905: 0xD8F5, + 20214 - 11905: 0xBCFE, + 20215 - 11905: 0xBCDB, + 20216 - 11905: 0x81A6, + 20217 - 11905: 0x81A7, + 20218 - 11905: 0x81A8, + 20219 - 11905: 0xC8CE, + 20220 - 11905: 0x81A9, + 20221 - 11905: 0xB7DD, + 20222 - 11905: 0x81AA, + 20223 - 11905: 0xB7C2, + 20224 - 11905: 0x81AB, + 20225 - 11905: 0xC6F3, + 20226 - 11905: 0x81AC, + 20227 - 11905: 0x81AD, + 20228 - 11905: 0x81AE, + 20229 - 11905: 0x81AF, + 20230 - 11905: 0x81B0, + 20231 - 11905: 0x81B1, + 20232 - 11905: 0x81B2, + 20233 - 11905: 0xD8F8, + 20234 - 11905: 0xD2C1, + 20235 - 11905: 0x81B3, + 20236 - 11905: 0x81B4, + 20237 - 11905: 0xCEE9, + 20238 - 11905: 0xBCBF, + 20239 - 11905: 0xB7FC, + 20240 - 11905: 0xB7A5, + 20241 - 11905: 0xD0DD, + 20242 - 11905: 0x81B5, + 20243 - 11905: 0x81B6, + 20244 - 11905: 0x81B7, + 20245 - 11905: 0x81B8, + 20246 - 11905: 0x81B9, + 20247 - 11905: 0xD6DA, + 20248 - 11905: 0xD3C5, + 20249 - 11905: 0xBBEF, + 20250 - 11905: 0xBBE1, + 20251 - 11905: 0xD8F1, + 20252 - 11905: 0x81BA, + 20253 - 11905: 0x81BB, + 20254 - 11905: 0xC9A1, + 20255 - 11905: 0xCEB0, + 20256 - 11905: 0xB4AB, + 20257 - 11905: 0x81BC, + 20258 - 11905: 0xD8F3, + 20259 - 11905: 0x81BD, + 20260 - 11905: 0xC9CB, + 20261 - 11905: 0xD8F6, + 20262 - 11905: 0xC2D7, + 20263 - 11905: 0xD8F7, + 20264 - 11905: 0x81BE, + 20265 - 11905: 0x81BF, + 20266 - 11905: 0xCEB1, + 20267 - 11905: 0xD8F9, + 20268 - 11905: 0x81C0, + 20269 - 11905: 0x81C1, + 20270 - 11905: 0x81C2, + 20271 - 11905: 0xB2AE, + 20272 - 11905: 0xB9C0, + 20273 - 11905: 0x81C3, + 20274 - 11905: 0xD9A3, + 20275 - 11905: 0x81C4, + 20276 - 11905: 0xB0E9, + 20277 - 11905: 0x81C5, + 20278 - 11905: 0xC1E6, + 20279 - 11905: 0x81C6, + 20280 - 11905: 0xC9EC, + 20281 - 11905: 0x81C7, + 20282 - 11905: 0xCBC5, + 20283 - 11905: 0x81C8, + 20284 - 11905: 0xCBC6, + 20285 - 11905: 0xD9A4, + 20286 - 11905: 0x81C9, + 20287 - 11905: 0x81CA, + 20288 - 11905: 0x81CB, + 20289 - 11905: 0x81CC, + 20290 - 11905: 0x81CD, + 20291 - 11905: 0xB5E8, + 20292 - 11905: 0x81CE, + 20293 - 11905: 0x81CF, + 20294 - 11905: 0xB5AB, + 20295 - 11905: 0x81D0, + 20296 - 11905: 0x81D1, + 20297 - 11905: 0x81D2, + 20298 - 11905: 0x81D3, + 20299 - 11905: 0x81D4, + 20300 - 11905: 0x81D5, + 20301 - 11905: 0xCEBB, + 20302 - 11905: 0xB5CD, + 20303 - 11905: 0xD7A1, + 20304 - 11905: 0xD7F4, + 20305 - 11905: 0xD3D3, + 20306 - 11905: 0x81D6, + 20307 - 11905: 0xCCE5, + 20308 - 11905: 0x81D7, + 20309 - 11905: 0xBACE, + 20310 - 11905: 0x81D8, + 20311 - 11905: 0xD9A2, + 20312 - 11905: 0xD9DC, + 20313 - 11905: 0xD3E0, + 20314 - 11905: 0xD8FD, + 20315 - 11905: 0xB7F0, + 20316 - 11905: 0xD7F7, + 20317 - 11905: 0xD8FE, + 20318 - 11905: 0xD8FA, + 20319 - 11905: 0xD9A1, + 20320 - 11905: 0xC4E3, + 20321 - 11905: 0x81D9, + 20322 - 11905: 0x81DA, + 20323 - 11905: 0xD3B6, + 20324 - 11905: 0xD8F4, + 20325 - 11905: 0xD9DD, + 20326 - 11905: 0x81DB, + 20327 - 11905: 0xD8FB, + 20328 - 11905: 0x81DC, + 20329 - 11905: 0xC5E5, + 20330 - 11905: 0x81DD, + 20331 - 11905: 0x81DE, + 20332 - 11905: 0xC0D0, + 20333 - 11905: 0x81DF, + 20334 - 11905: 0x81E0, + 20335 - 11905: 0xD1F0, + 20336 - 11905: 0xB0DB, + 20337 - 11905: 0x81E1, + 20338 - 11905: 0x81E2, + 20339 - 11905: 0xBCD1, + 20340 - 11905: 0xD9A6, + 20341 - 11905: 0x81E3, + 20342 - 11905: 0xD9A5, + 20343 - 11905: 0x81E4, + 20344 - 11905: 0x81E5, + 20345 - 11905: 0x81E6, + 20346 - 11905: 0x81E7, + 20347 - 11905: 0xD9AC, + 20348 - 11905: 0xD9AE, + 20349 - 11905: 0x81E8, + 20350 - 11905: 0xD9AB, + 20351 - 11905: 0xCAB9, + 20352 - 11905: 0x81E9, + 20353 - 11905: 0x81EA, + 20354 - 11905: 0x81EB, + 20355 - 11905: 0xD9A9, + 20356 - 11905: 0xD6B6, + 20357 - 11905: 0x81EC, + 20358 - 11905: 0x81ED, + 20359 - 11905: 0x81EE, + 20360 - 11905: 0xB3DE, + 20361 - 11905: 0xD9A8, + 20362 - 11905: 0x81EF, + 20363 - 11905: 0xC0FD, + 20364 - 11905: 0x81F0, + 20365 - 11905: 0xCACC, + 20366 - 11905: 0x81F1, + 20367 - 11905: 0xD9AA, + 20368 - 11905: 0x81F2, + 20369 - 11905: 0xD9A7, + 20370 - 11905: 0x81F3, + 20371 - 11905: 0x81F4, + 20372 - 11905: 0xD9B0, + 20373 - 11905: 0x81F5, + 20374 - 11905: 0x81F6, + 20375 - 11905: 0xB6B1, + 20376 - 11905: 0x81F7, + 20377 - 11905: 0x81F8, + 20378 - 11905: 0x81F9, + 20379 - 11905: 0xB9A9, + 20380 - 11905: 0x81FA, + 20381 - 11905: 0xD2C0, + 20382 - 11905: 0x81FB, + 20383 - 11905: 0x81FC, + 20384 - 11905: 0xCFC0, + 20385 - 11905: 0x81FD, + 20386 - 11905: 0x81FE, + 20387 - 11905: 0xC2C2, + 20388 - 11905: 0x8240, + 20389 - 11905: 0xBDC4, + 20390 - 11905: 0xD5EC, + 20391 - 11905: 0xB2E0, + 20392 - 11905: 0xC7C8, + 20393 - 11905: 0xBFEB, + 20394 - 11905: 0xD9AD, + 20395 - 11905: 0x8241, + 20396 - 11905: 0xD9AF, + 20397 - 11905: 0x8242, + 20398 - 11905: 0xCEEA, + 20399 - 11905: 0xBAEE, + 20400 - 11905: 0x8243, + 20401 - 11905: 0x8244, + 20402 - 11905: 0x8245, + 20403 - 11905: 0x8246, + 20404 - 11905: 0x8247, + 20405 - 11905: 0xC7D6, + 20406 - 11905: 0x8248, + 20407 - 11905: 0x8249, + 20408 - 11905: 0x824A, + 20409 - 11905: 0x824B, + 20410 - 11905: 0x824C, + 20411 - 11905: 0x824D, + 20412 - 11905: 0x824E, + 20413 - 11905: 0x824F, + 20414 - 11905: 0x8250, + 20415 - 11905: 0xB1E3, + 20416 - 11905: 0x8251, + 20417 - 11905: 0x8252, + 20418 - 11905: 0x8253, + 20419 - 11905: 0xB4D9, + 20420 - 11905: 0xB6ED, + 20421 - 11905: 0xD9B4, + 20422 - 11905: 0x8254, + 20423 - 11905: 0x8255, + 20424 - 11905: 0x8256, + 20425 - 11905: 0x8257, + 20426 - 11905: 0xBFA1, + 20427 - 11905: 0x8258, + 20428 - 11905: 0x8259, + 20429 - 11905: 0x825A, + 20430 - 11905: 0xD9DE, + 20431 - 11905: 0xC7CE, + 20432 - 11905: 0xC0FE, + 20433 - 11905: 0xD9B8, + 20434 - 11905: 0x825B, + 20435 - 11905: 0x825C, + 20436 - 11905: 0x825D, + 20437 - 11905: 0x825E, + 20438 - 11905: 0x825F, + 20439 - 11905: 0xCBD7, + 20440 - 11905: 0xB7FD, + 20441 - 11905: 0x8260, + 20442 - 11905: 0xD9B5, + 20443 - 11905: 0x8261, + 20444 - 11905: 0xD9B7, + 20445 - 11905: 0xB1A3, + 20446 - 11905: 0xD3E1, + 20447 - 11905: 0xD9B9, + 20448 - 11905: 0x8262, + 20449 - 11905: 0xD0C5, + 20450 - 11905: 0x8263, + 20451 - 11905: 0xD9B6, + 20452 - 11905: 0x8264, + 20453 - 11905: 0x8265, + 20454 - 11905: 0xD9B1, + 20455 - 11905: 0x8266, + 20456 - 11905: 0xD9B2, + 20457 - 11905: 0xC1A9, + 20458 - 11905: 0xD9B3, + 20459 - 11905: 0x8267, + 20460 - 11905: 0x8268, + 20461 - 11905: 0xBCF3, + 20462 - 11905: 0xD0DE, + 20463 - 11905: 0xB8A9, + 20464 - 11905: 0x8269, + 20465 - 11905: 0xBEE3, + 20466 - 11905: 0x826A, + 20467 - 11905: 0xD9BD, + 20468 - 11905: 0x826B, + 20469 - 11905: 0x826C, + 20470 - 11905: 0x826D, + 20471 - 11905: 0x826E, + 20472 - 11905: 0xD9BA, + 20473 - 11905: 0x826F, + 20474 - 11905: 0xB0B3, + 20475 - 11905: 0x8270, + 20476 - 11905: 0x8271, + 20477 - 11905: 0x8272, + 20478 - 11905: 0xD9C2, + 20479 - 11905: 0x8273, + 20480 - 11905: 0x8274, + 20481 - 11905: 0x8275, + 20482 - 11905: 0x8276, + 20483 - 11905: 0x8277, + 20484 - 11905: 0x8278, + 20485 - 11905: 0x8279, + 20486 - 11905: 0x827A, + 20487 - 11905: 0x827B, + 20488 - 11905: 0x827C, + 20489 - 11905: 0x827D, + 20490 - 11905: 0x827E, + 20491 - 11905: 0x8280, + 20492 - 11905: 0xD9C4, + 20493 - 11905: 0xB1B6, + 20494 - 11905: 0x8281, + 20495 - 11905: 0xD9BF, + 20496 - 11905: 0x8282, + 20497 - 11905: 0x8283, + 20498 - 11905: 0xB5B9, + 20499 - 11905: 0x8284, + 20500 - 11905: 0xBEF3, + 20501 - 11905: 0x8285, + 20502 - 11905: 0x8286, + 20503 - 11905: 0x8287, + 20504 - 11905: 0xCCC8, + 20505 - 11905: 0xBAF2, + 20506 - 11905: 0xD2D0, + 20507 - 11905: 0x8288, + 20508 - 11905: 0xD9C3, + 20509 - 11905: 0x8289, + 20510 - 11905: 0x828A, + 20511 - 11905: 0xBDE8, + 20512 - 11905: 0x828B, + 20513 - 11905: 0xB3AB, + 20514 - 11905: 0x828C, + 20515 - 11905: 0x828D, + 20516 - 11905: 0x828E, + 20517 - 11905: 0xD9C5, + 20518 - 11905: 0xBEEB, + 20519 - 11905: 0x828F, + 20520 - 11905: 0xD9C6, + 20521 - 11905: 0xD9BB, + 20522 - 11905: 0xC4DF, + 20523 - 11905: 0x8290, + 20524 - 11905: 0xD9BE, + 20525 - 11905: 0xD9C1, + 20526 - 11905: 0xD9C0, + 20527 - 11905: 0x8291, + 20528 - 11905: 0x8292, + 20529 - 11905: 0x8293, + 20530 - 11905: 0x8294, + 20531 - 11905: 0x8295, + 20532 - 11905: 0x8296, + 20533 - 11905: 0x8297, + 20534 - 11905: 0x8298, + 20535 - 11905: 0x8299, + 20536 - 11905: 0x829A, + 20537 - 11905: 0x829B, + 20538 - 11905: 0xD5AE, + 20539 - 11905: 0x829C, + 20540 - 11905: 0xD6B5, + 20541 - 11905: 0x829D, + 20542 - 11905: 0xC7E3, + 20543 - 11905: 0x829E, + 20544 - 11905: 0x829F, + 20545 - 11905: 0x82A0, + 20546 - 11905: 0x82A1, + 20547 - 11905: 0xD9C8, + 20548 - 11905: 0x82A2, + 20549 - 11905: 0x82A3, + 20550 - 11905: 0x82A4, + 20551 - 11905: 0xBCD9, + 20552 - 11905: 0xD9CA, + 20553 - 11905: 0x82A5, + 20554 - 11905: 0x82A6, + 20555 - 11905: 0x82A7, + 20556 - 11905: 0xD9BC, + 20557 - 11905: 0x82A8, + 20558 - 11905: 0xD9CB, + 20559 - 11905: 0xC6AB, + 20560 - 11905: 0x82A9, + 20561 - 11905: 0x82AA, + 20562 - 11905: 0x82AB, + 20563 - 11905: 0x82AC, + 20564 - 11905: 0x82AD, + 20565 - 11905: 0xD9C9, + 20566 - 11905: 0x82AE, + 20567 - 11905: 0x82AF, + 20568 - 11905: 0x82B0, + 20569 - 11905: 0x82B1, + 20570 - 11905: 0xD7F6, + 20571 - 11905: 0x82B2, + 20572 - 11905: 0xCDA3, + 20573 - 11905: 0x82B3, + 20574 - 11905: 0x82B4, + 20575 - 11905: 0x82B5, + 20576 - 11905: 0x82B6, + 20577 - 11905: 0x82B7, + 20578 - 11905: 0x82B8, + 20579 - 11905: 0x82B9, + 20580 - 11905: 0x82BA, + 20581 - 11905: 0xBDA1, + 20582 - 11905: 0x82BB, + 20583 - 11905: 0x82BC, + 20584 - 11905: 0x82BD, + 20585 - 11905: 0x82BE, + 20586 - 11905: 0x82BF, + 20587 - 11905: 0x82C0, + 20588 - 11905: 0xD9CC, + 20589 - 11905: 0x82C1, + 20590 - 11905: 0x82C2, + 20591 - 11905: 0x82C3, + 20592 - 11905: 0x82C4, + 20593 - 11905: 0x82C5, + 20594 - 11905: 0x82C6, + 20595 - 11905: 0x82C7, + 20596 - 11905: 0x82C8, + 20597 - 11905: 0x82C9, + 20598 - 11905: 0xC5BC, + 20599 - 11905: 0xCDB5, + 20600 - 11905: 0x82CA, + 20601 - 11905: 0x82CB, + 20602 - 11905: 0x82CC, + 20603 - 11905: 0xD9CD, + 20604 - 11905: 0x82CD, + 20605 - 11905: 0x82CE, + 20606 - 11905: 0xD9C7, + 20607 - 11905: 0xB3A5, + 20608 - 11905: 0xBFFE, + 20609 - 11905: 0x82CF, + 20610 - 11905: 0x82D0, + 20611 - 11905: 0x82D1, + 20612 - 11905: 0x82D2, + 20613 - 11905: 0xB8B5, + 20614 - 11905: 0x82D3, + 20615 - 11905: 0x82D4, + 20616 - 11905: 0xC0FC, + 20617 - 11905: 0x82D5, + 20618 - 11905: 0x82D6, + 20619 - 11905: 0x82D7, + 20620 - 11905: 0x82D8, + 20621 - 11905: 0xB0F8, + 20622 - 11905: 0x82D9, + 20623 - 11905: 0x82DA, + 20624 - 11905: 0x82DB, + 20625 - 11905: 0x82DC, + 20626 - 11905: 0x82DD, + 20627 - 11905: 0x82DE, + 20628 - 11905: 0x82DF, + 20629 - 11905: 0x82E0, + 20630 - 11905: 0x82E1, + 20631 - 11905: 0x82E2, + 20632 - 11905: 0x82E3, + 20633 - 11905: 0x82E4, + 20634 - 11905: 0x82E5, + 20635 - 11905: 0x82E6, + 20636 - 11905: 0x82E7, + 20637 - 11905: 0x82E8, + 20638 - 11905: 0x82E9, + 20639 - 11905: 0x82EA, + 20640 - 11905: 0x82EB, + 20641 - 11905: 0x82EC, + 20642 - 11905: 0x82ED, + 20643 - 11905: 0xB4F6, + 20644 - 11905: 0x82EE, + 20645 - 11905: 0xD9CE, + 20646 - 11905: 0x82EF, + 20647 - 11905: 0xD9CF, + 20648 - 11905: 0xB4A2, + 20649 - 11905: 0xD9D0, + 20650 - 11905: 0x82F0, + 20651 - 11905: 0x82F1, + 20652 - 11905: 0xB4DF, + 20653 - 11905: 0x82F2, + 20654 - 11905: 0x82F3, + 20655 - 11905: 0x82F4, + 20656 - 11905: 0x82F5, + 20657 - 11905: 0x82F6, + 20658 - 11905: 0xB0C1, + 20659 - 11905: 0x82F7, + 20660 - 11905: 0x82F8, + 20661 - 11905: 0x82F9, + 20662 - 11905: 0x82FA, + 20663 - 11905: 0x82FB, + 20664 - 11905: 0x82FC, + 20665 - 11905: 0x82FD, + 20666 - 11905: 0xD9D1, + 20667 - 11905: 0xC9B5, + 20668 - 11905: 0x82FE, + 20669 - 11905: 0x8340, + 20670 - 11905: 0x8341, + 20671 - 11905: 0x8342, + 20672 - 11905: 0x8343, + 20673 - 11905: 0x8344, + 20674 - 11905: 0x8345, + 20675 - 11905: 0x8346, + 20676 - 11905: 0x8347, + 20677 - 11905: 0x8348, + 20678 - 11905: 0x8349, + 20679 - 11905: 0x834A, + 20680 - 11905: 0x834B, + 20681 - 11905: 0x834C, + 20682 - 11905: 0x834D, + 20683 - 11905: 0x834E, + 20684 - 11905: 0x834F, + 20685 - 11905: 0x8350, + 20686 - 11905: 0x8351, + 20687 - 11905: 0xCFF1, + 20688 - 11905: 0x8352, + 20689 - 11905: 0x8353, + 20690 - 11905: 0x8354, + 20691 - 11905: 0x8355, + 20692 - 11905: 0x8356, + 20693 - 11905: 0x8357, + 20694 - 11905: 0xD9D2, + 20695 - 11905: 0x8358, + 20696 - 11905: 0x8359, + 20697 - 11905: 0x835A, + 20698 - 11905: 0xC1C5, + 20699 - 11905: 0x835B, + 20700 - 11905: 0x835C, + 20701 - 11905: 0x835D, + 20702 - 11905: 0x835E, + 20703 - 11905: 0x835F, + 20704 - 11905: 0x8360, + 20705 - 11905: 0x8361, + 20706 - 11905: 0x8362, + 20707 - 11905: 0x8363, + 20708 - 11905: 0x8364, + 20709 - 11905: 0x8365, + 20710 - 11905: 0xD9D6, + 20711 - 11905: 0xC9AE, + 20712 - 11905: 0x8366, + 20713 - 11905: 0x8367, + 20714 - 11905: 0x8368, + 20715 - 11905: 0x8369, + 20716 - 11905: 0xD9D5, + 20717 - 11905: 0xD9D4, + 20718 - 11905: 0xD9D7, + 20719 - 11905: 0x836A, + 20720 - 11905: 0x836B, + 20721 - 11905: 0x836C, + 20722 - 11905: 0x836D, + 20723 - 11905: 0xCBDB, + 20724 - 11905: 0x836E, + 20725 - 11905: 0xBDA9, + 20726 - 11905: 0x836F, + 20727 - 11905: 0x8370, + 20728 - 11905: 0x8371, + 20729 - 11905: 0x8372, + 20730 - 11905: 0x8373, + 20731 - 11905: 0xC6A7, + 20732 - 11905: 0x8374, + 20733 - 11905: 0x8375, + 20734 - 11905: 0x8376, + 20735 - 11905: 0x8377, + 20736 - 11905: 0x8378, + 20737 - 11905: 0x8379, + 20738 - 11905: 0x837A, + 20739 - 11905: 0x837B, + 20740 - 11905: 0x837C, + 20741 - 11905: 0x837D, + 20742 - 11905: 0xD9D3, + 20743 - 11905: 0xD9D8, + 20744 - 11905: 0x837E, + 20745 - 11905: 0x8380, + 20746 - 11905: 0x8381, + 20747 - 11905: 0xD9D9, + 20748 - 11905: 0x8382, + 20749 - 11905: 0x8383, + 20750 - 11905: 0x8384, + 20751 - 11905: 0x8385, + 20752 - 11905: 0x8386, + 20753 - 11905: 0x8387, + 20754 - 11905: 0xC8E5, + 20755 - 11905: 0x8388, + 20756 - 11905: 0x8389, + 20757 - 11905: 0x838A, + 20758 - 11905: 0x838B, + 20759 - 11905: 0x838C, + 20760 - 11905: 0x838D, + 20761 - 11905: 0x838E, + 20762 - 11905: 0x838F, + 20763 - 11905: 0x8390, + 20764 - 11905: 0x8391, + 20765 - 11905: 0x8392, + 20766 - 11905: 0x8393, + 20767 - 11905: 0x8394, + 20768 - 11905: 0x8395, + 20769 - 11905: 0xC0DC, + 20770 - 11905: 0x8396, + 20771 - 11905: 0x8397, + 20772 - 11905: 0x8398, + 20773 - 11905: 0x8399, + 20774 - 11905: 0x839A, + 20775 - 11905: 0x839B, + 20776 - 11905: 0x839C, + 20777 - 11905: 0x839D, + 20778 - 11905: 0x839E, + 20779 - 11905: 0x839F, + 20780 - 11905: 0x83A0, + 20781 - 11905: 0x83A1, + 20782 - 11905: 0x83A2, + 20783 - 11905: 0x83A3, + 20784 - 11905: 0x83A4, + 20785 - 11905: 0x83A5, + 20786 - 11905: 0x83A6, + 20787 - 11905: 0x83A7, + 20788 - 11905: 0x83A8, + 20789 - 11905: 0x83A9, + 20790 - 11905: 0x83AA, + 20791 - 11905: 0x83AB, + 20792 - 11905: 0x83AC, + 20793 - 11905: 0x83AD, + 20794 - 11905: 0x83AE, + 20795 - 11905: 0x83AF, + 20796 - 11905: 0x83B0, + 20797 - 11905: 0x83B1, + 20798 - 11905: 0x83B2, + 20799 - 11905: 0xB6F9, + 20800 - 11905: 0xD8A3, + 20801 - 11905: 0xD4CA, + 20802 - 11905: 0x83B3, + 20803 - 11905: 0xD4AA, + 20804 - 11905: 0xD0D6, + 20805 - 11905: 0xB3E4, + 20806 - 11905: 0xD5D7, + 20807 - 11905: 0x83B4, + 20808 - 11905: 0xCFC8, + 20809 - 11905: 0xB9E2, + 20810 - 11905: 0x83B5, + 20811 - 11905: 0xBFCB, + 20812 - 11905: 0x83B6, + 20813 - 11905: 0xC3E2, + 20814 - 11905: 0x83B7, + 20815 - 11905: 0x83B8, + 20816 - 11905: 0x83B9, + 20817 - 11905: 0xB6D2, + 20818 - 11905: 0x83BA, + 20819 - 11905: 0x83BB, + 20820 - 11905: 0xCDC3, + 20821 - 11905: 0xD9EE, + 20822 - 11905: 0xD9F0, + 20823 - 11905: 0x83BC, + 20824 - 11905: 0x83BD, + 20825 - 11905: 0x83BE, + 20826 - 11905: 0xB5B3, + 20827 - 11905: 0x83BF, + 20828 - 11905: 0xB6B5, + 20829 - 11905: 0x83C0, + 20830 - 11905: 0x83C1, + 20831 - 11905: 0x83C2, + 20832 - 11905: 0x83C3, + 20833 - 11905: 0x83C4, + 20834 - 11905: 0xBEA4, + 20835 - 11905: 0x83C5, + 20836 - 11905: 0x83C6, + 20837 - 11905: 0xC8EB, + 20838 - 11905: 0x83C7, + 20839 - 11905: 0x83C8, + 20840 - 11905: 0xC8AB, + 20841 - 11905: 0x83C9, + 20842 - 11905: 0x83CA, + 20843 - 11905: 0xB0CB, + 20844 - 11905: 0xB9AB, + 20845 - 11905: 0xC1F9, + 20846 - 11905: 0xD9E2, + 20847 - 11905: 0x83CB, + 20848 - 11905: 0xC0BC, + 20849 - 11905: 0xB9B2, + 20850 - 11905: 0x83CC, + 20851 - 11905: 0xB9D8, + 20852 - 11905: 0xD0CB, + 20853 - 11905: 0xB1F8, + 20854 - 11905: 0xC6E4, + 20855 - 11905: 0xBEDF, + 20856 - 11905: 0xB5E4, + 20857 - 11905: 0xD7C8, + 20858 - 11905: 0x83CD, + 20859 - 11905: 0xD1F8, + 20860 - 11905: 0xBCE6, + 20861 - 11905: 0xCADE, + 20862 - 11905: 0x83CE, + 20863 - 11905: 0x83CF, + 20864 - 11905: 0xBCBD, + 20865 - 11905: 0xD9E6, + 20866 - 11905: 0xD8E7, + 20867 - 11905: 0x83D0, + 20868 - 11905: 0x83D1, + 20869 - 11905: 0xC4DA, + 20870 - 11905: 0x83D2, + 20871 - 11905: 0x83D3, + 20872 - 11905: 0xB8D4, + 20873 - 11905: 0xC8BD, + 20874 - 11905: 0x83D4, + 20875 - 11905: 0x83D5, + 20876 - 11905: 0xB2E1, + 20877 - 11905: 0xD4D9, + 20878 - 11905: 0x83D6, + 20879 - 11905: 0x83D7, + 20880 - 11905: 0x83D8, + 20881 - 11905: 0x83D9, + 20882 - 11905: 0xC3B0, + 20883 - 11905: 0x83DA, + 20884 - 11905: 0x83DB, + 20885 - 11905: 0xC3E1, + 20886 - 11905: 0xDAA2, + 20887 - 11905: 0xC8DF, + 20888 - 11905: 0x83DC, + 20889 - 11905: 0xD0B4, + 20890 - 11905: 0x83DD, + 20891 - 11905: 0xBEFC, + 20892 - 11905: 0xC5A9, + 20893 - 11905: 0x83DE, + 20894 - 11905: 0x83DF, + 20895 - 11905: 0x83E0, + 20896 - 11905: 0xB9DA, + 20897 - 11905: 0x83E1, + 20898 - 11905: 0xDAA3, + 20899 - 11905: 0x83E2, + 20900 - 11905: 0xD4A9, + 20901 - 11905: 0xDAA4, + 20902 - 11905: 0x83E3, + 20903 - 11905: 0x83E4, + 20904 - 11905: 0x83E5, + 20905 - 11905: 0x83E6, + 20906 - 11905: 0x83E7, + 20907 - 11905: 0xD9FB, + 20908 - 11905: 0xB6AC, + 20909 - 11905: 0x83E8, + 20910 - 11905: 0x83E9, + 20911 - 11905: 0xB7EB, + 20912 - 11905: 0xB1F9, + 20913 - 11905: 0xD9FC, + 20914 - 11905: 0xB3E5, + 20915 - 11905: 0xBEF6, + 20916 - 11905: 0x83EA, + 20917 - 11905: 0xBFF6, + 20918 - 11905: 0xD2B1, + 20919 - 11905: 0xC0E4, + 20920 - 11905: 0x83EB, + 20921 - 11905: 0x83EC, + 20922 - 11905: 0x83ED, + 20923 - 11905: 0xB6B3, + 20924 - 11905: 0xD9FE, + 20925 - 11905: 0xD9FD, + 20926 - 11905: 0x83EE, + 20927 - 11905: 0x83EF, + 20928 - 11905: 0xBEBB, + 20929 - 11905: 0x83F0, + 20930 - 11905: 0x83F1, + 20931 - 11905: 0x83F2, + 20932 - 11905: 0xC6E0, + 20933 - 11905: 0x83F3, + 20934 - 11905: 0xD7BC, + 20935 - 11905: 0xDAA1, + 20936 - 11905: 0x83F4, + 20937 - 11905: 0xC1B9, + 20938 - 11905: 0x83F5, + 20939 - 11905: 0xB5F2, + 20940 - 11905: 0xC1E8, + 20941 - 11905: 0x83F6, + 20942 - 11905: 0x83F7, + 20943 - 11905: 0xBCF5, + 20944 - 11905: 0x83F8, + 20945 - 11905: 0xB4D5, + 20946 - 11905: 0x83F9, + 20947 - 11905: 0x83FA, + 20948 - 11905: 0x83FB, + 20949 - 11905: 0x83FC, + 20950 - 11905: 0x83FD, + 20951 - 11905: 0x83FE, + 20952 - 11905: 0x8440, + 20953 - 11905: 0x8441, + 20954 - 11905: 0x8442, + 20955 - 11905: 0xC1DD, + 20956 - 11905: 0x8443, + 20957 - 11905: 0xC4FD, + 20958 - 11905: 0x8444, + 20959 - 11905: 0x8445, + 20960 - 11905: 0xBCB8, + 20961 - 11905: 0xB7B2, + 20962 - 11905: 0x8446, + 20963 - 11905: 0x8447, + 20964 - 11905: 0xB7EF, + 20965 - 11905: 0x8448, + 20966 - 11905: 0x8449, + 20967 - 11905: 0x844A, + 20968 - 11905: 0x844B, + 20969 - 11905: 0x844C, + 20970 - 11905: 0x844D, + 20971 - 11905: 0xD9EC, + 20972 - 11905: 0x844E, + 20973 - 11905: 0xC6BE, + 20974 - 11905: 0x844F, + 20975 - 11905: 0xBFAD, + 20976 - 11905: 0xBBCB, + 20977 - 11905: 0x8450, + 20978 - 11905: 0x8451, + 20979 - 11905: 0xB5CA, + 20980 - 11905: 0x8452, + 20981 - 11905: 0xDBC9, + 20982 - 11905: 0xD0D7, + 20983 - 11905: 0x8453, + 20984 - 11905: 0xCDB9, + 20985 - 11905: 0xB0BC, + 20986 - 11905: 0xB3F6, + 20987 - 11905: 0xBBF7, + 20988 - 11905: 0xDBCA, + 20989 - 11905: 0xBAAF, + 20990 - 11905: 0x8454, + 20991 - 11905: 0xD4E4, + 20992 - 11905: 0xB5B6, + 20993 - 11905: 0xB5F3, + 20994 - 11905: 0xD8D6, + 20995 - 11905: 0xC8D0, + 20996 - 11905: 0x8455, + 20997 - 11905: 0x8456, + 20998 - 11905: 0xB7D6, + 20999 - 11905: 0xC7D0, + 21000 - 11905: 0xD8D7, + 21001 - 11905: 0x8457, + 21002 - 11905: 0xBFAF, + 21003 - 11905: 0x8458, + 21004 - 11905: 0x8459, + 21005 - 11905: 0xDBBB, + 21006 - 11905: 0xD8D8, + 21007 - 11905: 0x845A, + 21008 - 11905: 0x845B, + 21009 - 11905: 0xD0CC, + 21010 - 11905: 0xBBAE, + 21011 - 11905: 0x845C, + 21012 - 11905: 0x845D, + 21013 - 11905: 0x845E, + 21014 - 11905: 0xEBBE, + 21015 - 11905: 0xC1D0, + 21016 - 11905: 0xC1F5, + 21017 - 11905: 0xD4F2, + 21018 - 11905: 0xB8D5, + 21019 - 11905: 0xB4B4, + 21020 - 11905: 0x845F, + 21021 - 11905: 0xB3F5, + 21022 - 11905: 0x8460, + 21023 - 11905: 0x8461, + 21024 - 11905: 0xC9BE, + 21025 - 11905: 0x8462, + 21026 - 11905: 0x8463, + 21027 - 11905: 0x8464, + 21028 - 11905: 0xC5D0, + 21029 - 11905: 0x8465, + 21030 - 11905: 0x8466, + 21031 - 11905: 0x8467, + 21032 - 11905: 0xC5D9, + 21033 - 11905: 0xC0FB, + 21034 - 11905: 0x8468, + 21035 - 11905: 0xB1F0, + 21036 - 11905: 0x8469, + 21037 - 11905: 0xD8D9, + 21038 - 11905: 0xB9CE, + 21039 - 11905: 0x846A, + 21040 - 11905: 0xB5BD, + 21041 - 11905: 0x846B, + 21042 - 11905: 0x846C, + 21043 - 11905: 0xD8DA, + 21044 - 11905: 0x846D, + 21045 - 11905: 0x846E, + 21046 - 11905: 0xD6C6, + 21047 - 11905: 0xCBA2, + 21048 - 11905: 0xC8AF, + 21049 - 11905: 0xC9B2, + 21050 - 11905: 0xB4CC, + 21051 - 11905: 0xBFCC, + 21052 - 11905: 0x846F, + 21053 - 11905: 0xB9F4, + 21054 - 11905: 0x8470, + 21055 - 11905: 0xD8DB, + 21056 - 11905: 0xD8DC, + 21057 - 11905: 0xB6E7, + 21058 - 11905: 0xBCC1, + 21059 - 11905: 0xCCEA, + 21060 - 11905: 0x8471, + 21061 - 11905: 0x8472, + 21062 - 11905: 0x8473, + 21063 - 11905: 0x8474, + 21064 - 11905: 0x8475, + 21065 - 11905: 0x8476, + 21066 - 11905: 0xCFF7, + 21067 - 11905: 0x8477, + 21068 - 11905: 0xD8DD, + 21069 - 11905: 0xC7B0, + 21070 - 11905: 0x8478, + 21071 - 11905: 0x8479, + 21072 - 11905: 0xB9D0, + 21073 - 11905: 0xBDA3, + 21074 - 11905: 0x847A, + 21075 - 11905: 0x847B, + 21076 - 11905: 0xCCDE, + 21077 - 11905: 0x847C, + 21078 - 11905: 0xC6CA, + 21079 - 11905: 0x847D, + 21080 - 11905: 0x847E, + 21081 - 11905: 0x8480, + 21082 - 11905: 0x8481, + 21083 - 11905: 0x8482, + 21084 - 11905: 0xD8E0, + 21085 - 11905: 0x8483, + 21086 - 11905: 0xD8DE, + 21087 - 11905: 0x8484, + 21088 - 11905: 0x8485, + 21089 - 11905: 0xD8DF, + 21090 - 11905: 0x8486, + 21091 - 11905: 0x8487, + 21092 - 11905: 0x8488, + 21093 - 11905: 0xB0FE, + 21094 - 11905: 0x8489, + 21095 - 11905: 0xBEE7, + 21096 - 11905: 0x848A, + 21097 - 11905: 0xCAA3, + 21098 - 11905: 0xBCF4, + 21099 - 11905: 0x848B, + 21100 - 11905: 0x848C, + 21101 - 11905: 0x848D, + 21102 - 11905: 0x848E, + 21103 - 11905: 0xB8B1, + 21104 - 11905: 0x848F, + 21105 - 11905: 0x8490, + 21106 - 11905: 0xB8EE, + 21107 - 11905: 0x8491, + 21108 - 11905: 0x8492, + 21109 - 11905: 0x8493, + 21110 - 11905: 0x8494, + 21111 - 11905: 0x8495, + 21112 - 11905: 0x8496, + 21113 - 11905: 0x8497, + 21114 - 11905: 0x8498, + 21115 - 11905: 0x8499, + 21116 - 11905: 0x849A, + 21117 - 11905: 0xD8E2, + 21118 - 11905: 0x849B, + 21119 - 11905: 0xBDCB, + 21120 - 11905: 0x849C, + 21121 - 11905: 0xD8E4, + 21122 - 11905: 0xD8E3, + 21123 - 11905: 0x849D, + 21124 - 11905: 0x849E, + 21125 - 11905: 0x849F, + 21126 - 11905: 0x84A0, + 21127 - 11905: 0x84A1, + 21128 - 11905: 0xC5FC, + 21129 - 11905: 0x84A2, + 21130 - 11905: 0x84A3, + 21131 - 11905: 0x84A4, + 21132 - 11905: 0x84A5, + 21133 - 11905: 0x84A6, + 21134 - 11905: 0x84A7, + 21135 - 11905: 0x84A8, + 21136 - 11905: 0xD8E5, + 21137 - 11905: 0x84A9, + 21138 - 11905: 0x84AA, + 21139 - 11905: 0xD8E6, + 21140 - 11905: 0x84AB, + 21141 - 11905: 0x84AC, + 21142 - 11905: 0x84AD, + 21143 - 11905: 0x84AE, + 21144 - 11905: 0x84AF, + 21145 - 11905: 0x84B0, + 21146 - 11905: 0x84B1, + 21147 - 11905: 0xC1A6, + 21148 - 11905: 0x84B2, + 21149 - 11905: 0xC8B0, + 21150 - 11905: 0xB0EC, + 21151 - 11905: 0xB9A6, + 21152 - 11905: 0xBCD3, + 21153 - 11905: 0xCEF1, + 21154 - 11905: 0xDBBD, + 21155 - 11905: 0xC1D3, + 21156 - 11905: 0x84B3, + 21157 - 11905: 0x84B4, + 21158 - 11905: 0x84B5, + 21159 - 11905: 0x84B6, + 21160 - 11905: 0xB6AF, + 21161 - 11905: 0xD6FA, + 21162 - 11905: 0xC5AC, + 21163 - 11905: 0xBDD9, + 21164 - 11905: 0xDBBE, + 21165 - 11905: 0xDBBF, + 21166 - 11905: 0x84B7, + 21167 - 11905: 0x84B8, + 21168 - 11905: 0x84B9, + 21169 - 11905: 0xC0F8, + 21170 - 11905: 0xBEA2, + 21171 - 11905: 0xC0CD, + 21172 - 11905: 0x84BA, + 21173 - 11905: 0x84BB, + 21174 - 11905: 0x84BC, + 21175 - 11905: 0x84BD, + 21176 - 11905: 0x84BE, + 21177 - 11905: 0x84BF, + 21178 - 11905: 0x84C0, + 21179 - 11905: 0x84C1, + 21180 - 11905: 0x84C2, + 21181 - 11905: 0x84C3, + 21182 - 11905: 0xDBC0, + 21183 - 11905: 0xCAC6, + 21184 - 11905: 0x84C4, + 21185 - 11905: 0x84C5, + 21186 - 11905: 0x84C6, + 21187 - 11905: 0xB2AA, + 21188 - 11905: 0x84C7, + 21189 - 11905: 0x84C8, + 21190 - 11905: 0x84C9, + 21191 - 11905: 0xD3C2, + 21192 - 11905: 0x84CA, + 21193 - 11905: 0xC3E3, + 21194 - 11905: 0x84CB, + 21195 - 11905: 0xD1AB, + 21196 - 11905: 0x84CC, + 21197 - 11905: 0x84CD, + 21198 - 11905: 0x84CE, + 21199 - 11905: 0x84CF, + 21200 - 11905: 0xDBC2, + 21201 - 11905: 0x84D0, + 21202 - 11905: 0xC0D5, + 21203 - 11905: 0x84D1, + 21204 - 11905: 0x84D2, + 21205 - 11905: 0x84D3, + 21206 - 11905: 0xDBC3, + 21207 - 11905: 0x84D4, + 21208 - 11905: 0xBFB1, + 21209 - 11905: 0x84D5, + 21210 - 11905: 0x84D6, + 21211 - 11905: 0x84D7, + 21212 - 11905: 0x84D8, + 21213 - 11905: 0x84D9, + 21214 - 11905: 0x84DA, + 21215 - 11905: 0xC4BC, + 21216 - 11905: 0x84DB, + 21217 - 11905: 0x84DC, + 21218 - 11905: 0x84DD, + 21219 - 11905: 0x84DE, + 21220 - 11905: 0xC7DA, + 21221 - 11905: 0x84DF, + 21222 - 11905: 0x84E0, + 21223 - 11905: 0x84E1, + 21224 - 11905: 0x84E2, + 21225 - 11905: 0x84E3, + 21226 - 11905: 0x84E4, + 21227 - 11905: 0x84E5, + 21228 - 11905: 0x84E6, + 21229 - 11905: 0x84E7, + 21230 - 11905: 0x84E8, + 21231 - 11905: 0x84E9, + 21232 - 11905: 0xDBC4, + 21233 - 11905: 0x84EA, + 21234 - 11905: 0x84EB, + 21235 - 11905: 0x84EC, + 21236 - 11905: 0x84ED, + 21237 - 11905: 0x84EE, + 21238 - 11905: 0x84EF, + 21239 - 11905: 0x84F0, + 21240 - 11905: 0x84F1, + 21241 - 11905: 0xD9E8, + 21242 - 11905: 0xC9D7, + 21243 - 11905: 0x84F2, + 21244 - 11905: 0x84F3, + 21245 - 11905: 0x84F4, + 21246 - 11905: 0xB9B4, + 21247 - 11905: 0xCEF0, + 21248 - 11905: 0xD4C8, + 21249 - 11905: 0x84F5, + 21250 - 11905: 0x84F6, + 21251 - 11905: 0x84F7, + 21252 - 11905: 0x84F8, + 21253 - 11905: 0xB0FC, + 21254 - 11905: 0xB4D2, + 21255 - 11905: 0x84F9, + 21256 - 11905: 0xD0D9, + 21257 - 11905: 0x84FA, + 21258 - 11905: 0x84FB, + 21259 - 11905: 0x84FC, + 21260 - 11905: 0x84FD, + 21261 - 11905: 0xD9E9, + 21262 - 11905: 0x84FE, + 21263 - 11905: 0xDECB, + 21264 - 11905: 0xD9EB, + 21265 - 11905: 0x8540, + 21266 - 11905: 0x8541, + 21267 - 11905: 0x8542, + 21268 - 11905: 0x8543, + 21269 - 11905: 0xD8B0, + 21270 - 11905: 0xBBAF, + 21271 - 11905: 0xB1B1, + 21272 - 11905: 0x8544, + 21273 - 11905: 0xB3D7, + 21274 - 11905: 0xD8CE, + 21275 - 11905: 0x8545, + 21276 - 11905: 0x8546, + 21277 - 11905: 0xD4D1, + 21278 - 11905: 0x8547, + 21279 - 11905: 0x8548, + 21280 - 11905: 0xBDB3, + 21281 - 11905: 0xBFEF, + 21282 - 11905: 0x8549, + 21283 - 11905: 0xCFBB, + 21284 - 11905: 0x854A, + 21285 - 11905: 0x854B, + 21286 - 11905: 0xD8D0, + 21287 - 11905: 0x854C, + 21288 - 11905: 0x854D, + 21289 - 11905: 0x854E, + 21290 - 11905: 0xB7CB, + 21291 - 11905: 0x854F, + 21292 - 11905: 0x8550, + 21293 - 11905: 0x8551, + 21294 - 11905: 0xD8D1, + 21295 - 11905: 0x8552, + 21296 - 11905: 0x8553, + 21297 - 11905: 0x8554, + 21298 - 11905: 0x8555, + 21299 - 11905: 0x8556, + 21300 - 11905: 0x8557, + 21301 - 11905: 0x8558, + 21302 - 11905: 0x8559, + 21303 - 11905: 0x855A, + 21304 - 11905: 0x855B, + 21305 - 11905: 0xC6A5, + 21306 - 11905: 0xC7F8, + 21307 - 11905: 0xD2BD, + 21308 - 11905: 0x855C, + 21309 - 11905: 0x855D, + 21310 - 11905: 0xD8D2, + 21311 - 11905: 0xC4E4, + 21312 - 11905: 0x855E, + 21313 - 11905: 0xCAAE, + 21314 - 11905: 0x855F, + 21315 - 11905: 0xC7A7, + 21316 - 11905: 0x8560, + 21317 - 11905: 0xD8A6, + 21318 - 11905: 0x8561, + 21319 - 11905: 0xC9FD, + 21320 - 11905: 0xCEE7, + 21321 - 11905: 0xBBDC, + 21322 - 11905: 0xB0EB, + 21323 - 11905: 0x8562, + 21324 - 11905: 0x8563, + 21325 - 11905: 0x8564, + 21326 - 11905: 0xBBAA, + 21327 - 11905: 0xD0AD, + 21328 - 11905: 0x8565, + 21329 - 11905: 0xB1B0, + 21330 - 11905: 0xD7E4, + 21331 - 11905: 0xD7BF, + 21332 - 11905: 0x8566, + 21333 - 11905: 0xB5A5, + 21334 - 11905: 0xC2F4, + 21335 - 11905: 0xC4CF, + 21336 - 11905: 0x8567, + 21337 - 11905: 0x8568, + 21338 - 11905: 0xB2A9, + 21339 - 11905: 0x8569, + 21340 - 11905: 0xB2B7, + 21341 - 11905: 0x856A, + 21342 - 11905: 0xB1E5, + 21343 - 11905: 0xDFB2, + 21344 - 11905: 0xD5BC, + 21345 - 11905: 0xBFA8, + 21346 - 11905: 0xC2AC, + 21347 - 11905: 0xD8D5, + 21348 - 11905: 0xC2B1, + 21349 - 11905: 0x856B, + 21350 - 11905: 0xD8D4, + 21351 - 11905: 0xCED4, + 21352 - 11905: 0x856C, + 21353 - 11905: 0xDAE0, + 21354 - 11905: 0x856D, + 21355 - 11905: 0xCEC0, + 21356 - 11905: 0x856E, + 21357 - 11905: 0x856F, + 21358 - 11905: 0xD8B4, + 21359 - 11905: 0xC3AE, + 21360 - 11905: 0xD3A1, + 21361 - 11905: 0xCEA3, + 21362 - 11905: 0x8570, + 21363 - 11905: 0xBCB4, + 21364 - 11905: 0xC8B4, + 21365 - 11905: 0xC2D1, + 21366 - 11905: 0x8571, + 21367 - 11905: 0xBEED, + 21368 - 11905: 0xD0B6, + 21369 - 11905: 0x8572, + 21370 - 11905: 0xDAE1, + 21371 - 11905: 0x8573, + 21372 - 11905: 0x8574, + 21373 - 11905: 0x8575, + 21374 - 11905: 0x8576, + 21375 - 11905: 0xC7E4, + 21376 - 11905: 0x8577, + 21377 - 11905: 0x8578, + 21378 - 11905: 0xB3A7, + 21379 - 11905: 0x8579, + 21380 - 11905: 0xB6F2, + 21381 - 11905: 0xCCFC, + 21382 - 11905: 0xC0FA, + 21383 - 11905: 0x857A, + 21384 - 11905: 0x857B, + 21385 - 11905: 0xC0F7, + 21386 - 11905: 0x857C, + 21387 - 11905: 0xD1B9, + 21388 - 11905: 0xD1E1, + 21389 - 11905: 0xD8C7, + 21390 - 11905: 0x857D, + 21391 - 11905: 0x857E, + 21392 - 11905: 0x8580, + 21393 - 11905: 0x8581, + 21394 - 11905: 0x8582, + 21395 - 11905: 0x8583, + 21396 - 11905: 0x8584, + 21397 - 11905: 0xB2DE, + 21398 - 11905: 0x8585, + 21399 - 11905: 0x8586, + 21400 - 11905: 0xC0E5, + 21401 - 11905: 0x8587, + 21402 - 11905: 0xBAF1, + 21403 - 11905: 0x8588, + 21404 - 11905: 0x8589, + 21405 - 11905: 0xD8C8, + 21406 - 11905: 0x858A, + 21407 - 11905: 0xD4AD, + 21408 - 11905: 0x858B, + 21409 - 11905: 0x858C, + 21410 - 11905: 0xCFE1, + 21411 - 11905: 0xD8C9, + 21412 - 11905: 0x858D, + 21413 - 11905: 0xD8CA, + 21414 - 11905: 0xCFC3, + 21415 - 11905: 0x858E, + 21416 - 11905: 0xB3F8, + 21417 - 11905: 0xBEC7, + 21418 - 11905: 0x858F, + 21419 - 11905: 0x8590, + 21420 - 11905: 0x8591, + 21421 - 11905: 0x8592, + 21422 - 11905: 0xD8CB, + 21423 - 11905: 0x8593, + 21424 - 11905: 0x8594, + 21425 - 11905: 0x8595, + 21426 - 11905: 0x8596, + 21427 - 11905: 0x8597, + 21428 - 11905: 0x8598, + 21429 - 11905: 0x8599, + 21430 - 11905: 0xDBCC, + 21431 - 11905: 0x859A, + 21432 - 11905: 0x859B, + 21433 - 11905: 0x859C, + 21434 - 11905: 0x859D, + 21435 - 11905: 0xC8A5, + 21436 - 11905: 0x859E, + 21437 - 11905: 0x859F, + 21438 - 11905: 0x85A0, + 21439 - 11905: 0xCFD8, + 21440 - 11905: 0x85A1, + 21441 - 11905: 0xC8FE, + 21442 - 11905: 0xB2CE, + 21443 - 11905: 0x85A2, + 21444 - 11905: 0x85A3, + 21445 - 11905: 0x85A4, + 21446 - 11905: 0x85A5, + 21447 - 11905: 0x85A6, + 21448 - 11905: 0xD3D6, + 21449 - 11905: 0xB2E6, + 21450 - 11905: 0xBCB0, + 21451 - 11905: 0xD3D1, + 21452 - 11905: 0xCBAB, + 21453 - 11905: 0xB7B4, + 21454 - 11905: 0x85A7, + 21455 - 11905: 0x85A8, + 21456 - 11905: 0x85A9, + 21457 - 11905: 0xB7A2, + 21458 - 11905: 0x85AA, + 21459 - 11905: 0x85AB, + 21460 - 11905: 0xCAE5, + 21461 - 11905: 0x85AC, + 21462 - 11905: 0xC8A1, + 21463 - 11905: 0xCADC, + 21464 - 11905: 0xB1E4, + 21465 - 11905: 0xD0F0, + 21466 - 11905: 0x85AD, + 21467 - 11905: 0xC5D1, + 21468 - 11905: 0x85AE, + 21469 - 11905: 0x85AF, + 21470 - 11905: 0x85B0, + 21471 - 11905: 0xDBC5, + 21472 - 11905: 0xB5FE, + 21473 - 11905: 0x85B1, + 21474 - 11905: 0x85B2, + 21475 - 11905: 0xBFDA, + 21476 - 11905: 0xB9C5, + 21477 - 11905: 0xBEE4, + 21478 - 11905: 0xC1ED, + 21479 - 11905: 0x85B3, + 21480 - 11905: 0xDFB6, + 21481 - 11905: 0xDFB5, + 21482 - 11905: 0xD6BB, + 21483 - 11905: 0xBDD0, + 21484 - 11905: 0xD5D9, + 21485 - 11905: 0xB0C8, + 21486 - 11905: 0xB6A3, + 21487 - 11905: 0xBFC9, + 21488 - 11905: 0xCCA8, + 21489 - 11905: 0xDFB3, + 21490 - 11905: 0xCAB7, + 21491 - 11905: 0xD3D2, + 21492 - 11905: 0x85B4, + 21493 - 11905: 0xD8CF, + 21494 - 11905: 0xD2B6, + 21495 - 11905: 0xBAC5, + 21496 - 11905: 0xCBBE, + 21497 - 11905: 0xCCBE, + 21498 - 11905: 0x85B5, + 21499 - 11905: 0xDFB7, + 21500 - 11905: 0xB5F0, + 21501 - 11905: 0xDFB4, + 21502 - 11905: 0x85B6, + 21503 - 11905: 0x85B7, + 21504 - 11905: 0x85B8, + 21505 - 11905: 0xD3F5, + 21506 - 11905: 0x85B9, + 21507 - 11905: 0xB3D4, + 21508 - 11905: 0xB8F7, + 21509 - 11905: 0x85BA, + 21510 - 11905: 0xDFBA, + 21511 - 11905: 0x85BB, + 21512 - 11905: 0xBACF, + 21513 - 11905: 0xBCAA, + 21514 - 11905: 0xB5F5, + 21515 - 11905: 0x85BC, + 21516 - 11905: 0xCDAC, + 21517 - 11905: 0xC3FB, + 21518 - 11905: 0xBAF3, + 21519 - 11905: 0xC0F4, + 21520 - 11905: 0xCDC2, + 21521 - 11905: 0xCFF2, + 21522 - 11905: 0xDFB8, + 21523 - 11905: 0xCFC5, + 21524 - 11905: 0x85BD, + 21525 - 11905: 0xC2C0, + 21526 - 11905: 0xDFB9, + 21527 - 11905: 0xC2F0, + 21528 - 11905: 0x85BE, + 21529 - 11905: 0x85BF, + 21530 - 11905: 0x85C0, + 21531 - 11905: 0xBEFD, + 21532 - 11905: 0x85C1, + 21533 - 11905: 0xC1DF, + 21534 - 11905: 0xCDCC, + 21535 - 11905: 0xD2F7, + 21536 - 11905: 0xB7CD, + 21537 - 11905: 0xDFC1, + 21538 - 11905: 0x85C2, + 21539 - 11905: 0xDFC4, + 21540 - 11905: 0x85C3, + 21541 - 11905: 0x85C4, + 21542 - 11905: 0xB7F1, + 21543 - 11905: 0xB0C9, + 21544 - 11905: 0xB6D6, + 21545 - 11905: 0xB7D4, + 21546 - 11905: 0x85C5, + 21547 - 11905: 0xBAAC, + 21548 - 11905: 0xCCFD, + 21549 - 11905: 0xBFD4, + 21550 - 11905: 0xCBB1, + 21551 - 11905: 0xC6F4, + 21552 - 11905: 0x85C6, + 21553 - 11905: 0xD6A8, + 21554 - 11905: 0xDFC5, + 21555 - 11905: 0x85C7, + 21556 - 11905: 0xCEE2, + 21557 - 11905: 0xB3B3, + 21558 - 11905: 0x85C8, + 21559 - 11905: 0x85C9, + 21560 - 11905: 0xCEFC, + 21561 - 11905: 0xB4B5, + 21562 - 11905: 0x85CA, + 21563 - 11905: 0xCEC7, + 21564 - 11905: 0xBAF0, + 21565 - 11905: 0x85CB, + 21566 - 11905: 0xCEE1, + 21567 - 11905: 0x85CC, + 21568 - 11905: 0xD1BD, + 21569 - 11905: 0x85CD, + 21570 - 11905: 0x85CE, + 21571 - 11905: 0xDFC0, + 21572 - 11905: 0x85CF, + 21573 - 11905: 0x85D0, + 21574 - 11905: 0xB4F4, + 21575 - 11905: 0x85D1, + 21576 - 11905: 0xB3CA, + 21577 - 11905: 0x85D2, + 21578 - 11905: 0xB8E6, + 21579 - 11905: 0xDFBB, + 21580 - 11905: 0x85D3, + 21581 - 11905: 0x85D4, + 21582 - 11905: 0x85D5, + 21583 - 11905: 0x85D6, + 21584 - 11905: 0xC4C5, + 21585 - 11905: 0x85D7, + 21586 - 11905: 0xDFBC, + 21587 - 11905: 0xDFBD, + 21588 - 11905: 0xDFBE, + 21589 - 11905: 0xC5BB, + 21590 - 11905: 0xDFBF, + 21591 - 11905: 0xDFC2, + 21592 - 11905: 0xD4B1, + 21593 - 11905: 0xDFC3, + 21594 - 11905: 0x85D8, + 21595 - 11905: 0xC7BA, + 21596 - 11905: 0xCED8, + 21597 - 11905: 0x85D9, + 21598 - 11905: 0x85DA, + 21599 - 11905: 0x85DB, + 21600 - 11905: 0x85DC, + 21601 - 11905: 0x85DD, + 21602 - 11905: 0xC4D8, + 21603 - 11905: 0x85DE, + 21604 - 11905: 0xDFCA, + 21605 - 11905: 0x85DF, + 21606 - 11905: 0xDFCF, + 21607 - 11905: 0x85E0, + 21608 - 11905: 0xD6DC, + 21609 - 11905: 0x85E1, + 21610 - 11905: 0x85E2, + 21611 - 11905: 0x85E3, + 21612 - 11905: 0x85E4, + 21613 - 11905: 0x85E5, + 21614 - 11905: 0x85E6, + 21615 - 11905: 0x85E7, + 21616 - 11905: 0x85E8, + 21617 - 11905: 0xDFC9, + 21618 - 11905: 0xDFDA, + 21619 - 11905: 0xCEB6, + 21620 - 11905: 0x85E9, + 21621 - 11905: 0xBAC7, + 21622 - 11905: 0xDFCE, + 21623 - 11905: 0xDFC8, + 21624 - 11905: 0xC5DE, + 21625 - 11905: 0x85EA, + 21626 - 11905: 0x85EB, + 21627 - 11905: 0xC9EB, + 21628 - 11905: 0xBAF4, + 21629 - 11905: 0xC3FC, + 21630 - 11905: 0x85EC, + 21631 - 11905: 0x85ED, + 21632 - 11905: 0xBED7, + 21633 - 11905: 0x85EE, + 21634 - 11905: 0xDFC6, + 21635 - 11905: 0x85EF, + 21636 - 11905: 0xDFCD, + 21637 - 11905: 0x85F0, + 21638 - 11905: 0xC5D8, + 21639 - 11905: 0x85F1, + 21640 - 11905: 0x85F2, + 21641 - 11905: 0x85F3, + 21642 - 11905: 0x85F4, + 21643 - 11905: 0xD5A6, + 21644 - 11905: 0xBACD, + 21645 - 11905: 0x85F5, + 21646 - 11905: 0xBECC, + 21647 - 11905: 0xD3BD, + 21648 - 11905: 0xB8C0, + 21649 - 11905: 0x85F6, + 21650 - 11905: 0xD6E4, + 21651 - 11905: 0x85F7, + 21652 - 11905: 0xDFC7, + 21653 - 11905: 0xB9BE, + 21654 - 11905: 0xBFA7, + 21655 - 11905: 0x85F8, + 21656 - 11905: 0x85F9, + 21657 - 11905: 0xC1FC, + 21658 - 11905: 0xDFCB, + 21659 - 11905: 0xDFCC, + 21660 - 11905: 0x85FA, + 21661 - 11905: 0xDFD0, + 21662 - 11905: 0x85FB, + 21663 - 11905: 0x85FC, + 21664 - 11905: 0x85FD, + 21665 - 11905: 0x85FE, + 21666 - 11905: 0x8640, + 21667 - 11905: 0xDFDB, + 21668 - 11905: 0xDFE5, + 21669 - 11905: 0x8641, + 21670 - 11905: 0xDFD7, + 21671 - 11905: 0xDFD6, + 21672 - 11905: 0xD7C9, + 21673 - 11905: 0xDFE3, + 21674 - 11905: 0xDFE4, + 21675 - 11905: 0xE5EB, + 21676 - 11905: 0xD2A7, + 21677 - 11905: 0xDFD2, + 21678 - 11905: 0x8642, + 21679 - 11905: 0xBFA9, + 21680 - 11905: 0x8643, + 21681 - 11905: 0xD4DB, + 21682 - 11905: 0x8644, + 21683 - 11905: 0xBFC8, + 21684 - 11905: 0xDFD4, + 21685 - 11905: 0x8645, + 21686 - 11905: 0x8646, + 21687 - 11905: 0x8647, + 21688 - 11905: 0xCFCC, + 21689 - 11905: 0x8648, + 21690 - 11905: 0x8649, + 21691 - 11905: 0xDFDD, + 21692 - 11905: 0x864A, + 21693 - 11905: 0xD1CA, + 21694 - 11905: 0x864B, + 21695 - 11905: 0xDFDE, + 21696 - 11905: 0xB0A7, + 21697 - 11905: 0xC6B7, + 21698 - 11905: 0xDFD3, + 21699 - 11905: 0x864C, + 21700 - 11905: 0xBAE5, + 21701 - 11905: 0x864D, + 21702 - 11905: 0xB6DF, + 21703 - 11905: 0xCDDB, + 21704 - 11905: 0xB9FE, + 21705 - 11905: 0xD4D5, + 21706 - 11905: 0x864E, + 21707 - 11905: 0x864F, + 21708 - 11905: 0xDFDF, + 21709 - 11905: 0xCFEC, + 21710 - 11905: 0xB0A5, + 21711 - 11905: 0xDFE7, + 21712 - 11905: 0xDFD1, + 21713 - 11905: 0xD1C6, + 21714 - 11905: 0xDFD5, + 21715 - 11905: 0xDFD8, + 21716 - 11905: 0xDFD9, + 21717 - 11905: 0xDFDC, + 21718 - 11905: 0x8650, + 21719 - 11905: 0xBBA9, + 21720 - 11905: 0x8651, + 21721 - 11905: 0xDFE0, + 21722 - 11905: 0xDFE1, + 21723 - 11905: 0x8652, + 21724 - 11905: 0xDFE2, + 21725 - 11905: 0xDFE6, + 21726 - 11905: 0xDFE8, + 21727 - 11905: 0xD3B4, + 21728 - 11905: 0x8653, + 21729 - 11905: 0x8654, + 21730 - 11905: 0x8655, + 21731 - 11905: 0x8656, + 21732 - 11905: 0x8657, + 21733 - 11905: 0xB8E7, + 21734 - 11905: 0xC5B6, + 21735 - 11905: 0xDFEA, + 21736 - 11905: 0xC9DA, + 21737 - 11905: 0xC1A8, + 21738 - 11905: 0xC4C4, + 21739 - 11905: 0x8658, + 21740 - 11905: 0x8659, + 21741 - 11905: 0xBFDE, + 21742 - 11905: 0xCFF8, + 21743 - 11905: 0x865A, + 21744 - 11905: 0x865B, + 21745 - 11905: 0x865C, + 21746 - 11905: 0xD5DC, + 21747 - 11905: 0xDFEE, + 21748 - 11905: 0x865D, + 21749 - 11905: 0x865E, + 21750 - 11905: 0x865F, + 21751 - 11905: 0x8660, + 21752 - 11905: 0x8661, + 21753 - 11905: 0x8662, + 21754 - 11905: 0xB2B8, + 21755 - 11905: 0x8663, + 21756 - 11905: 0xBADF, + 21757 - 11905: 0xDFEC, + 21758 - 11905: 0x8664, + 21759 - 11905: 0xDBC1, + 21760 - 11905: 0x8665, + 21761 - 11905: 0xD1E4, + 21762 - 11905: 0x8666, + 21763 - 11905: 0x8667, + 21764 - 11905: 0x8668, + 21765 - 11905: 0x8669, + 21766 - 11905: 0xCBF4, + 21767 - 11905: 0xB4BD, + 21768 - 11905: 0x866A, + 21769 - 11905: 0xB0A6, + 21770 - 11905: 0x866B, + 21771 - 11905: 0x866C, + 21772 - 11905: 0x866D, + 21773 - 11905: 0x866E, + 21774 - 11905: 0x866F, + 21775 - 11905: 0xDFF1, + 21776 - 11905: 0xCCC6, + 21777 - 11905: 0xDFF2, + 21778 - 11905: 0x8670, + 21779 - 11905: 0x8671, + 21780 - 11905: 0xDFED, + 21781 - 11905: 0x8672, + 21782 - 11905: 0x8673, + 21783 - 11905: 0x8674, + 21784 - 11905: 0x8675, + 21785 - 11905: 0x8676, + 21786 - 11905: 0x8677, + 21787 - 11905: 0xDFE9, + 21788 - 11905: 0x8678, + 21789 - 11905: 0x8679, + 21790 - 11905: 0x867A, + 21791 - 11905: 0x867B, + 21792 - 11905: 0xDFEB, + 21793 - 11905: 0x867C, + 21794 - 11905: 0xDFEF, + 21795 - 11905: 0xDFF0, + 21796 - 11905: 0xBBBD, + 21797 - 11905: 0x867D, + 21798 - 11905: 0x867E, + 21799 - 11905: 0xDFF3, + 21800 - 11905: 0x8680, + 21801 - 11905: 0x8681, + 21802 - 11905: 0xDFF4, + 21803 - 11905: 0x8682, + 21804 - 11905: 0xBBA3, + 21805 - 11905: 0x8683, + 21806 - 11905: 0xCADB, + 21807 - 11905: 0xCEA8, + 21808 - 11905: 0xE0A7, + 21809 - 11905: 0xB3AA, + 21810 - 11905: 0x8684, + 21811 - 11905: 0xE0A6, + 21812 - 11905: 0x8685, + 21813 - 11905: 0x8686, + 21814 - 11905: 0x8687, + 21815 - 11905: 0xE0A1, + 21816 - 11905: 0x8688, + 21817 - 11905: 0x8689, + 21818 - 11905: 0x868A, + 21819 - 11905: 0x868B, + 21820 - 11905: 0xDFFE, + 21821 - 11905: 0x868C, + 21822 - 11905: 0xCDD9, + 21823 - 11905: 0xDFFC, + 21824 - 11905: 0x868D, + 21825 - 11905: 0xDFFA, + 21826 - 11905: 0x868E, + 21827 - 11905: 0xBFD0, + 21828 - 11905: 0xD7C4, + 21829 - 11905: 0x868F, + 21830 - 11905: 0xC9CC, + 21831 - 11905: 0x8690, + 21832 - 11905: 0x8691, + 21833 - 11905: 0xDFF8, + 21834 - 11905: 0xB0A1, + 21835 - 11905: 0x8692, + 21836 - 11905: 0x8693, + 21837 - 11905: 0x8694, + 21838 - 11905: 0x8695, + 21839 - 11905: 0x8696, + 21840 - 11905: 0xDFFD, + 21841 - 11905: 0x8697, + 21842 - 11905: 0x8698, + 21843 - 11905: 0x8699, + 21844 - 11905: 0x869A, + 21845 - 11905: 0xDFFB, + 21846 - 11905: 0xE0A2, + 21847 - 11905: 0x869B, + 21848 - 11905: 0x869C, + 21849 - 11905: 0x869D, + 21850 - 11905: 0x869E, + 21851 - 11905: 0x869F, + 21852 - 11905: 0xE0A8, + 21853 - 11905: 0x86A0, + 21854 - 11905: 0x86A1, + 21855 - 11905: 0x86A2, + 21856 - 11905: 0x86A3, + 21857 - 11905: 0xB7C8, + 21858 - 11905: 0x86A4, + 21859 - 11905: 0x86A5, + 21860 - 11905: 0xC6A1, + 21861 - 11905: 0xC9B6, + 21862 - 11905: 0xC0B2, + 21863 - 11905: 0xDFF5, + 21864 - 11905: 0x86A6, + 21865 - 11905: 0x86A7, + 21866 - 11905: 0xC5BE, + 21867 - 11905: 0x86A8, + 21868 - 11905: 0xD8C4, + 21869 - 11905: 0xDFF9, + 21870 - 11905: 0xC4F6, + 21871 - 11905: 0x86A9, + 21872 - 11905: 0x86AA, + 21873 - 11905: 0x86AB, + 21874 - 11905: 0x86AC, + 21875 - 11905: 0x86AD, + 21876 - 11905: 0x86AE, + 21877 - 11905: 0xE0A3, + 21878 - 11905: 0xE0A4, + 21879 - 11905: 0xE0A5, + 21880 - 11905: 0xD0A5, + 21881 - 11905: 0x86AF, + 21882 - 11905: 0x86B0, + 21883 - 11905: 0xE0B4, + 21884 - 11905: 0xCCE4, + 21885 - 11905: 0x86B1, + 21886 - 11905: 0xE0B1, + 21887 - 11905: 0x86B2, + 21888 - 11905: 0xBFA6, + 21889 - 11905: 0xE0AF, + 21890 - 11905: 0xCEB9, + 21891 - 11905: 0xE0AB, + 21892 - 11905: 0xC9C6, + 21893 - 11905: 0x86B3, + 21894 - 11905: 0x86B4, + 21895 - 11905: 0xC0AE, + 21896 - 11905: 0xE0AE, + 21897 - 11905: 0xBAED, + 21898 - 11905: 0xBAB0, + 21899 - 11905: 0xE0A9, + 21900 - 11905: 0x86B5, + 21901 - 11905: 0x86B6, + 21902 - 11905: 0x86B7, + 21903 - 11905: 0xDFF6, + 21904 - 11905: 0x86B8, + 21905 - 11905: 0xE0B3, + 21906 - 11905: 0x86B9, + 21907 - 11905: 0x86BA, + 21908 - 11905: 0xE0B8, + 21909 - 11905: 0x86BB, + 21910 - 11905: 0x86BC, + 21911 - 11905: 0x86BD, + 21912 - 11905: 0xB4AD, + 21913 - 11905: 0xE0B9, + 21914 - 11905: 0x86BE, + 21915 - 11905: 0x86BF, + 21916 - 11905: 0xCFB2, + 21917 - 11905: 0xBAC8, + 21918 - 11905: 0x86C0, + 21919 - 11905: 0xE0B0, + 21920 - 11905: 0x86C1, + 21921 - 11905: 0x86C2, + 21922 - 11905: 0x86C3, + 21923 - 11905: 0x86C4, + 21924 - 11905: 0x86C5, + 21925 - 11905: 0x86C6, + 21926 - 11905: 0x86C7, + 21927 - 11905: 0xD0FA, + 21928 - 11905: 0x86C8, + 21929 - 11905: 0x86C9, + 21930 - 11905: 0x86CA, + 21931 - 11905: 0x86CB, + 21932 - 11905: 0x86CC, + 21933 - 11905: 0x86CD, + 21934 - 11905: 0x86CE, + 21935 - 11905: 0x86CF, + 21936 - 11905: 0x86D0, + 21937 - 11905: 0xE0AC, + 21938 - 11905: 0x86D1, + 21939 - 11905: 0xD4FB, + 21940 - 11905: 0x86D2, + 21941 - 11905: 0xDFF7, + 21942 - 11905: 0x86D3, + 21943 - 11905: 0xC5E7, + 21944 - 11905: 0x86D4, + 21945 - 11905: 0xE0AD, + 21946 - 11905: 0x86D5, + 21947 - 11905: 0xD3F7, + 21948 - 11905: 0x86D6, + 21949 - 11905: 0xE0B6, + 21950 - 11905: 0xE0B7, + 21951 - 11905: 0x86D7, + 21952 - 11905: 0x86D8, + 21953 - 11905: 0x86D9, + 21954 - 11905: 0x86DA, + 21955 - 11905: 0x86DB, + 21956 - 11905: 0xE0C4, + 21957 - 11905: 0xD0E1, + 21958 - 11905: 0x86DC, + 21959 - 11905: 0x86DD, + 21960 - 11905: 0x86DE, + 21961 - 11905: 0xE0BC, + 21962 - 11905: 0x86DF, + 21963 - 11905: 0x86E0, + 21964 - 11905: 0xE0C9, + 21965 - 11905: 0xE0CA, + 21966 - 11905: 0x86E1, + 21967 - 11905: 0x86E2, + 21968 - 11905: 0x86E3, + 21969 - 11905: 0xE0BE, + 21970 - 11905: 0xE0AA, + 21971 - 11905: 0xC9A4, + 21972 - 11905: 0xE0C1, + 21973 - 11905: 0x86E4, + 21974 - 11905: 0xE0B2, + 21975 - 11905: 0x86E5, + 21976 - 11905: 0x86E6, + 21977 - 11905: 0x86E7, + 21978 - 11905: 0x86E8, + 21979 - 11905: 0x86E9, + 21980 - 11905: 0xCAC8, + 21981 - 11905: 0xE0C3, + 21982 - 11905: 0x86EA, + 21983 - 11905: 0xE0B5, + 21984 - 11905: 0x86EB, + 21985 - 11905: 0xCECB, + 21986 - 11905: 0x86EC, + 21987 - 11905: 0xCBC3, + 21988 - 11905: 0xE0CD, + 21989 - 11905: 0xE0C6, + 21990 - 11905: 0xE0C2, + 21991 - 11905: 0x86ED, + 21992 - 11905: 0xE0CB, + 21993 - 11905: 0x86EE, + 21994 - 11905: 0xE0BA, + 21995 - 11905: 0xE0BF, + 21996 - 11905: 0xE0C0, + 21997 - 11905: 0x86EF, + 21998 - 11905: 0x86F0, + 21999 - 11905: 0xE0C5, + 22000 - 11905: 0x86F1, + 22001 - 11905: 0x86F2, + 22002 - 11905: 0xE0C7, + 22003 - 11905: 0xE0C8, + 22004 - 11905: 0x86F3, + 22005 - 11905: 0xE0CC, + 22006 - 11905: 0x86F4, + 22007 - 11905: 0xE0BB, + 22008 - 11905: 0x86F5, + 22009 - 11905: 0x86F6, + 22010 - 11905: 0x86F7, + 22011 - 11905: 0x86F8, + 22012 - 11905: 0x86F9, + 22013 - 11905: 0xCBD4, + 22014 - 11905: 0xE0D5, + 22015 - 11905: 0x86FA, + 22016 - 11905: 0xE0D6, + 22017 - 11905: 0xE0D2, + 22018 - 11905: 0x86FB, + 22019 - 11905: 0x86FC, + 22020 - 11905: 0x86FD, + 22021 - 11905: 0x86FE, + 22022 - 11905: 0x8740, + 22023 - 11905: 0x8741, + 22024 - 11905: 0xE0D0, + 22025 - 11905: 0xBCCE, + 22026 - 11905: 0x8742, + 22027 - 11905: 0x8743, + 22028 - 11905: 0xE0D1, + 22029 - 11905: 0x8744, + 22030 - 11905: 0xB8C2, + 22031 - 11905: 0xD8C5, + 22032 - 11905: 0x8745, + 22033 - 11905: 0x8746, + 22034 - 11905: 0x8747, + 22035 - 11905: 0x8748, + 22036 - 11905: 0x8749, + 22037 - 11905: 0x874A, + 22038 - 11905: 0x874B, + 22039 - 11905: 0x874C, + 22040 - 11905: 0xD0EA, + 22041 - 11905: 0x874D, + 22042 - 11905: 0x874E, + 22043 - 11905: 0xC2EF, + 22044 - 11905: 0x874F, + 22045 - 11905: 0x8750, + 22046 - 11905: 0xE0CF, + 22047 - 11905: 0xE0BD, + 22048 - 11905: 0x8751, + 22049 - 11905: 0x8752, + 22050 - 11905: 0x8753, + 22051 - 11905: 0xE0D4, + 22052 - 11905: 0xE0D3, + 22053 - 11905: 0x8754, + 22054 - 11905: 0x8755, + 22055 - 11905: 0xE0D7, + 22056 - 11905: 0x8756, + 22057 - 11905: 0x8757, + 22058 - 11905: 0x8758, + 22059 - 11905: 0x8759, + 22060 - 11905: 0xE0DC, + 22061 - 11905: 0xE0D8, + 22062 - 11905: 0x875A, + 22063 - 11905: 0x875B, + 22064 - 11905: 0x875C, + 22065 - 11905: 0xD6F6, + 22066 - 11905: 0xB3B0, + 22067 - 11905: 0x875D, + 22068 - 11905: 0xD7EC, + 22069 - 11905: 0x875E, + 22070 - 11905: 0xCBBB, + 22071 - 11905: 0x875F, + 22072 - 11905: 0x8760, + 22073 - 11905: 0xE0DA, + 22074 - 11905: 0x8761, + 22075 - 11905: 0xCEFB, + 22076 - 11905: 0x8762, + 22077 - 11905: 0x8763, + 22078 - 11905: 0x8764, + 22079 - 11905: 0xBAD9, + 22080 - 11905: 0x8765, + 22081 - 11905: 0x8766, + 22082 - 11905: 0x8767, + 22083 - 11905: 0x8768, + 22084 - 11905: 0x8769, + 22085 - 11905: 0x876A, + 22086 - 11905: 0x876B, + 22087 - 11905: 0x876C, + 22088 - 11905: 0x876D, + 22089 - 11905: 0x876E, + 22090 - 11905: 0x876F, + 22091 - 11905: 0x8770, + 22092 - 11905: 0xE0E1, + 22093 - 11905: 0xE0DD, + 22094 - 11905: 0xD2AD, + 22095 - 11905: 0x8771, + 22096 - 11905: 0x8772, + 22097 - 11905: 0x8773, + 22098 - 11905: 0x8774, + 22099 - 11905: 0x8775, + 22100 - 11905: 0xE0E2, + 22101 - 11905: 0x8776, + 22102 - 11905: 0x8777, + 22103 - 11905: 0xE0DB, + 22104 - 11905: 0xE0D9, + 22105 - 11905: 0xE0DF, + 22106 - 11905: 0x8778, + 22107 - 11905: 0x8779, + 22108 - 11905: 0xE0E0, + 22109 - 11905: 0x877A, + 22110 - 11905: 0x877B, + 22111 - 11905: 0x877C, + 22112 - 11905: 0x877D, + 22113 - 11905: 0x877E, + 22114 - 11905: 0xE0DE, + 22115 - 11905: 0x8780, + 22116 - 11905: 0xE0E4, + 22117 - 11905: 0x8781, + 22118 - 11905: 0x8782, + 22119 - 11905: 0x8783, + 22120 - 11905: 0xC6F7, + 22121 - 11905: 0xD8AC, + 22122 - 11905: 0xD4EB, + 22123 - 11905: 0xE0E6, + 22124 - 11905: 0xCAC9, + 22125 - 11905: 0x8784, + 22126 - 11905: 0x8785, + 22127 - 11905: 0x8786, + 22128 - 11905: 0x8787, + 22129 - 11905: 0xE0E5, + 22130 - 11905: 0x8788, + 22131 - 11905: 0x8789, + 22132 - 11905: 0x878A, + 22133 - 11905: 0x878B, + 22134 - 11905: 0xB8C1, + 22135 - 11905: 0x878C, + 22136 - 11905: 0x878D, + 22137 - 11905: 0x878E, + 22138 - 11905: 0x878F, + 22139 - 11905: 0xE0E7, + 22140 - 11905: 0xE0E8, + 22141 - 11905: 0x8790, + 22142 - 11905: 0x8791, + 22143 - 11905: 0x8792, + 22144 - 11905: 0x8793, + 22145 - 11905: 0x8794, + 22146 - 11905: 0x8795, + 22147 - 11905: 0x8796, + 22148 - 11905: 0x8797, + 22149 - 11905: 0xE0E9, + 22150 - 11905: 0xE0E3, + 22151 - 11905: 0x8798, + 22152 - 11905: 0x8799, + 22153 - 11905: 0x879A, + 22154 - 11905: 0x879B, + 22155 - 11905: 0x879C, + 22156 - 11905: 0x879D, + 22157 - 11905: 0x879E, + 22158 - 11905: 0xBABF, + 22159 - 11905: 0xCCE7, + 22160 - 11905: 0x879F, + 22161 - 11905: 0x87A0, + 22162 - 11905: 0x87A1, + 22163 - 11905: 0xE0EA, + 22164 - 11905: 0x87A2, + 22165 - 11905: 0x87A3, + 22166 - 11905: 0x87A4, + 22167 - 11905: 0x87A5, + 22168 - 11905: 0x87A6, + 22169 - 11905: 0x87A7, + 22170 - 11905: 0x87A8, + 22171 - 11905: 0x87A9, + 22172 - 11905: 0x87AA, + 22173 - 11905: 0x87AB, + 22174 - 11905: 0x87AC, + 22175 - 11905: 0x87AD, + 22176 - 11905: 0x87AE, + 22177 - 11905: 0x87AF, + 22178 - 11905: 0x87B0, + 22179 - 11905: 0xCFF9, + 22180 - 11905: 0x87B1, + 22181 - 11905: 0x87B2, + 22182 - 11905: 0x87B3, + 22183 - 11905: 0x87B4, + 22184 - 11905: 0x87B5, + 22185 - 11905: 0x87B6, + 22186 - 11905: 0x87B7, + 22187 - 11905: 0x87B8, + 22188 - 11905: 0x87B9, + 22189 - 11905: 0x87BA, + 22190 - 11905: 0x87BB, + 22191 - 11905: 0xE0EB, + 22192 - 11905: 0x87BC, + 22193 - 11905: 0x87BD, + 22194 - 11905: 0x87BE, + 22195 - 11905: 0x87BF, + 22196 - 11905: 0x87C0, + 22197 - 11905: 0x87C1, + 22198 - 11905: 0x87C2, + 22199 - 11905: 0xC8C2, + 22200 - 11905: 0x87C3, + 22201 - 11905: 0x87C4, + 22202 - 11905: 0x87C5, + 22203 - 11905: 0x87C6, + 22204 - 11905: 0xBDC0, + 22205 - 11905: 0x87C7, + 22206 - 11905: 0x87C8, + 22207 - 11905: 0x87C9, + 22208 - 11905: 0x87CA, + 22209 - 11905: 0x87CB, + 22210 - 11905: 0x87CC, + 22211 - 11905: 0x87CD, + 22212 - 11905: 0x87CE, + 22213 - 11905: 0x87CF, + 22214 - 11905: 0x87D0, + 22215 - 11905: 0x87D1, + 22216 - 11905: 0x87D2, + 22217 - 11905: 0x87D3, + 22218 - 11905: 0xC4D2, + 22219 - 11905: 0x87D4, + 22220 - 11905: 0x87D5, + 22221 - 11905: 0x87D6, + 22222 - 11905: 0x87D7, + 22223 - 11905: 0x87D8, + 22224 - 11905: 0x87D9, + 22225 - 11905: 0x87DA, + 22226 - 11905: 0x87DB, + 22227 - 11905: 0x87DC, + 22228 - 11905: 0xE0EC, + 22229 - 11905: 0x87DD, + 22230 - 11905: 0x87DE, + 22231 - 11905: 0xE0ED, + 22232 - 11905: 0x87DF, + 22233 - 11905: 0x87E0, + 22234 - 11905: 0xC7F4, + 22235 - 11905: 0xCBC4, + 22236 - 11905: 0x87E1, + 22237 - 11905: 0xE0EE, + 22238 - 11905: 0xBBD8, + 22239 - 11905: 0xD8B6, + 22240 - 11905: 0xD2F2, + 22241 - 11905: 0xE0EF, + 22242 - 11905: 0xCDC5, + 22243 - 11905: 0x87E2, + 22244 - 11905: 0xB6DA, + 22245 - 11905: 0x87E3, + 22246 - 11905: 0x87E4, + 22247 - 11905: 0x87E5, + 22248 - 11905: 0x87E6, + 22249 - 11905: 0x87E7, + 22250 - 11905: 0x87E8, + 22251 - 11905: 0xE0F1, + 22252 - 11905: 0x87E9, + 22253 - 11905: 0xD4B0, + 22254 - 11905: 0x87EA, + 22255 - 11905: 0x87EB, + 22256 - 11905: 0xC0A7, + 22257 - 11905: 0xB4D1, + 22258 - 11905: 0x87EC, + 22259 - 11905: 0x87ED, + 22260 - 11905: 0xCEA7, + 22261 - 11905: 0xE0F0, + 22262 - 11905: 0x87EE, + 22263 - 11905: 0x87EF, + 22264 - 11905: 0x87F0, + 22265 - 11905: 0xE0F2, + 22266 - 11905: 0xB9CC, + 22267 - 11905: 0x87F1, + 22268 - 11905: 0x87F2, + 22269 - 11905: 0xB9FA, + 22270 - 11905: 0xCDBC, + 22271 - 11905: 0xE0F3, + 22272 - 11905: 0x87F3, + 22273 - 11905: 0x87F4, + 22274 - 11905: 0x87F5, + 22275 - 11905: 0xC6D4, + 22276 - 11905: 0xE0F4, + 22277 - 11905: 0x87F6, + 22278 - 11905: 0xD4B2, + 22279 - 11905: 0x87F7, + 22280 - 11905: 0xC8A6, + 22281 - 11905: 0xE0F6, + 22282 - 11905: 0xE0F5, + 22283 - 11905: 0x87F8, + 22284 - 11905: 0x87F9, + 22285 - 11905: 0x87FA, + 22286 - 11905: 0x87FB, + 22287 - 11905: 0x87FC, + 22288 - 11905: 0x87FD, + 22289 - 11905: 0x87FE, + 22290 - 11905: 0x8840, + 22291 - 11905: 0x8841, + 22292 - 11905: 0x8842, + 22293 - 11905: 0x8843, + 22294 - 11905: 0x8844, + 22295 - 11905: 0x8845, + 22296 - 11905: 0x8846, + 22297 - 11905: 0x8847, + 22298 - 11905: 0x8848, + 22299 - 11905: 0x8849, + 22300 - 11905: 0xE0F7, + 22301 - 11905: 0x884A, + 22302 - 11905: 0x884B, + 22303 - 11905: 0xCDC1, + 22304 - 11905: 0x884C, + 22305 - 11905: 0x884D, + 22306 - 11905: 0x884E, + 22307 - 11905: 0xCAA5, + 22308 - 11905: 0x884F, + 22309 - 11905: 0x8850, + 22310 - 11905: 0x8851, + 22311 - 11905: 0x8852, + 22312 - 11905: 0xD4DA, + 22313 - 11905: 0xDBD7, + 22314 - 11905: 0xDBD9, + 22315 - 11905: 0x8853, + 22316 - 11905: 0xDBD8, + 22317 - 11905: 0xB9E7, + 22318 - 11905: 0xDBDC, + 22319 - 11905: 0xDBDD, + 22320 - 11905: 0xB5D8, + 22321 - 11905: 0x8854, + 22322 - 11905: 0x8855, + 22323 - 11905: 0xDBDA, + 22324 - 11905: 0x8856, + 22325 - 11905: 0x8857, + 22326 - 11905: 0x8858, + 22327 - 11905: 0x8859, + 22328 - 11905: 0x885A, + 22329 - 11905: 0xDBDB, + 22330 - 11905: 0xB3A1, + 22331 - 11905: 0xDBDF, + 22332 - 11905: 0x885B, + 22333 - 11905: 0x885C, + 22334 - 11905: 0xBBF8, + 22335 - 11905: 0x885D, + 22336 - 11905: 0xD6B7, + 22337 - 11905: 0x885E, + 22338 - 11905: 0xDBE0, + 22339 - 11905: 0x885F, + 22340 - 11905: 0x8860, + 22341 - 11905: 0x8861, + 22342 - 11905: 0x8862, + 22343 - 11905: 0xBEF9, + 22344 - 11905: 0x8863, + 22345 - 11905: 0x8864, + 22346 - 11905: 0xB7BB, + 22347 - 11905: 0x8865, + 22348 - 11905: 0xDBD0, + 22349 - 11905: 0xCCAE, + 22350 - 11905: 0xBFB2, + 22351 - 11905: 0xBBB5, + 22352 - 11905: 0xD7F8, + 22353 - 11905: 0xBFD3, + 22354 - 11905: 0x8866, + 22355 - 11905: 0x8867, + 22356 - 11905: 0x8868, + 22357 - 11905: 0x8869, + 22358 - 11905: 0x886A, + 22359 - 11905: 0xBFE9, + 22360 - 11905: 0x886B, + 22361 - 11905: 0x886C, + 22362 - 11905: 0xBCE1, + 22363 - 11905: 0xCCB3, + 22364 - 11905: 0xDBDE, + 22365 - 11905: 0xB0D3, + 22366 - 11905: 0xCEEB, + 22367 - 11905: 0xB7D8, + 22368 - 11905: 0xD7B9, + 22369 - 11905: 0xC6C2, + 22370 - 11905: 0x886D, + 22371 - 11905: 0x886E, + 22372 - 11905: 0xC0A4, + 22373 - 11905: 0x886F, + 22374 - 11905: 0xCCB9, + 22375 - 11905: 0x8870, + 22376 - 11905: 0xDBE7, + 22377 - 11905: 0xDBE1, + 22378 - 11905: 0xC6BA, + 22379 - 11905: 0xDBE3, + 22380 - 11905: 0x8871, + 22381 - 11905: 0xDBE8, + 22382 - 11905: 0x8872, + 22383 - 11905: 0xC5F7, + 22384 - 11905: 0x8873, + 22385 - 11905: 0x8874, + 22386 - 11905: 0x8875, + 22387 - 11905: 0xDBEA, + 22388 - 11905: 0x8876, + 22389 - 11905: 0x8877, + 22390 - 11905: 0xDBE9, + 22391 - 11905: 0xBFC0, + 22392 - 11905: 0x8878, + 22393 - 11905: 0x8879, + 22394 - 11905: 0x887A, + 22395 - 11905: 0xDBE6, + 22396 - 11905: 0xDBE5, + 22397 - 11905: 0x887B, + 22398 - 11905: 0x887C, + 22399 - 11905: 0x887D, + 22400 - 11905: 0x887E, + 22401 - 11905: 0x8880, + 22402 - 11905: 0xB4B9, + 22403 - 11905: 0xC0AC, + 22404 - 11905: 0xC2A2, + 22405 - 11905: 0xDBE2, + 22406 - 11905: 0xDBE4, + 22407 - 11905: 0x8881, + 22408 - 11905: 0x8882, + 22409 - 11905: 0x8883, + 22410 - 11905: 0x8884, + 22411 - 11905: 0xD0CD, + 22412 - 11905: 0xDBED, + 22413 - 11905: 0x8885, + 22414 - 11905: 0x8886, + 22415 - 11905: 0x8887, + 22416 - 11905: 0x8888, + 22417 - 11905: 0x8889, + 22418 - 11905: 0xC0DD, + 22419 - 11905: 0xDBF2, + 22420 - 11905: 0x888A, + 22421 - 11905: 0x888B, + 22422 - 11905: 0x888C, + 22423 - 11905: 0x888D, + 22424 - 11905: 0x888E, + 22425 - 11905: 0x888F, + 22426 - 11905: 0x8890, + 22427 - 11905: 0xB6E2, + 22428 - 11905: 0x8891, + 22429 - 11905: 0x8892, + 22430 - 11905: 0x8893, + 22431 - 11905: 0x8894, + 22432 - 11905: 0xDBF3, + 22433 - 11905: 0xDBD2, + 22434 - 11905: 0xB9B8, + 22435 - 11905: 0xD4AB, + 22436 - 11905: 0xDBEC, + 22437 - 11905: 0x8895, + 22438 - 11905: 0xBFD1, + 22439 - 11905: 0xDBF0, + 22440 - 11905: 0x8896, + 22441 - 11905: 0xDBD1, + 22442 - 11905: 0x8897, + 22443 - 11905: 0xB5E6, + 22444 - 11905: 0x8898, + 22445 - 11905: 0xDBEB, + 22446 - 11905: 0xBFE5, + 22447 - 11905: 0x8899, + 22448 - 11905: 0x889A, + 22449 - 11905: 0x889B, + 22450 - 11905: 0xDBEE, + 22451 - 11905: 0x889C, + 22452 - 11905: 0xDBF1, + 22453 - 11905: 0x889D, + 22454 - 11905: 0x889E, + 22455 - 11905: 0x889F, + 22456 - 11905: 0xDBF9, + 22457 - 11905: 0x88A0, + 22458 - 11905: 0x88A1, + 22459 - 11905: 0x88A2, + 22460 - 11905: 0x88A3, + 22461 - 11905: 0x88A4, + 22462 - 11905: 0x88A5, + 22463 - 11905: 0x88A6, + 22464 - 11905: 0x88A7, + 22465 - 11905: 0x88A8, + 22466 - 11905: 0xB9A1, + 22467 - 11905: 0xB0A3, + 22468 - 11905: 0x88A9, + 22469 - 11905: 0x88AA, + 22470 - 11905: 0x88AB, + 22471 - 11905: 0x88AC, + 22472 - 11905: 0x88AD, + 22473 - 11905: 0x88AE, + 22474 - 11905: 0x88AF, + 22475 - 11905: 0xC2F1, + 22476 - 11905: 0x88B0, + 22477 - 11905: 0x88B1, + 22478 - 11905: 0xB3C7, + 22479 - 11905: 0xDBEF, + 22480 - 11905: 0x88B2, + 22481 - 11905: 0x88B3, + 22482 - 11905: 0xDBF8, + 22483 - 11905: 0x88B4, + 22484 - 11905: 0xC6D2, + 22485 - 11905: 0xDBF4, + 22486 - 11905: 0x88B5, + 22487 - 11905: 0x88B6, + 22488 - 11905: 0xDBF5, + 22489 - 11905: 0xDBF7, + 22490 - 11905: 0xDBF6, + 22491 - 11905: 0x88B7, + 22492 - 11905: 0x88B8, + 22493 - 11905: 0xDBFE, + 22494 - 11905: 0x88B9, + 22495 - 11905: 0xD3F2, + 22496 - 11905: 0xB2BA, + 22497 - 11905: 0x88BA, + 22498 - 11905: 0x88BB, + 22499 - 11905: 0x88BC, + 22500 - 11905: 0xDBFD, + 22501 - 11905: 0x88BD, + 22502 - 11905: 0x88BE, + 22503 - 11905: 0x88BF, + 22504 - 11905: 0x88C0, + 22505 - 11905: 0x88C1, + 22506 - 11905: 0x88C2, + 22507 - 11905: 0x88C3, + 22508 - 11905: 0x88C4, + 22509 - 11905: 0xDCA4, + 22510 - 11905: 0x88C5, + 22511 - 11905: 0xDBFB, + 22512 - 11905: 0x88C6, + 22513 - 11905: 0x88C7, + 22514 - 11905: 0x88C8, + 22515 - 11905: 0x88C9, + 22516 - 11905: 0xDBFA, + 22517 - 11905: 0x88CA, + 22518 - 11905: 0x88CB, + 22519 - 11905: 0x88CC, + 22520 - 11905: 0xDBFC, + 22521 - 11905: 0xC5E0, + 22522 - 11905: 0xBBF9, + 22523 - 11905: 0x88CD, + 22524 - 11905: 0x88CE, + 22525 - 11905: 0xDCA3, + 22526 - 11905: 0x88CF, + 22527 - 11905: 0x88D0, + 22528 - 11905: 0xDCA5, + 22529 - 11905: 0x88D1, + 22530 - 11905: 0xCCC3, + 22531 - 11905: 0x88D2, + 22532 - 11905: 0x88D3, + 22533 - 11905: 0x88D4, + 22534 - 11905: 0xB6D1, + 22535 - 11905: 0xDDC0, + 22536 - 11905: 0x88D5, + 22537 - 11905: 0x88D6, + 22538 - 11905: 0x88D7, + 22539 - 11905: 0xDCA1, + 22540 - 11905: 0x88D8, + 22541 - 11905: 0xDCA2, + 22542 - 11905: 0x88D9, + 22543 - 11905: 0x88DA, + 22544 - 11905: 0x88DB, + 22545 - 11905: 0xC7B5, + 22546 - 11905: 0x88DC, + 22547 - 11905: 0x88DD, + 22548 - 11905: 0x88DE, + 22549 - 11905: 0xB6E9, + 22550 - 11905: 0x88DF, + 22551 - 11905: 0x88E0, + 22552 - 11905: 0x88E1, + 22553 - 11905: 0xDCA7, + 22554 - 11905: 0x88E2, + 22555 - 11905: 0x88E3, + 22556 - 11905: 0x88E4, + 22557 - 11905: 0x88E5, + 22558 - 11905: 0xDCA6, + 22559 - 11905: 0x88E6, + 22560 - 11905: 0xDCA9, + 22561 - 11905: 0xB1A4, + 22562 - 11905: 0x88E7, + 22563 - 11905: 0x88E8, + 22564 - 11905: 0xB5CC, + 22565 - 11905: 0x88E9, + 22566 - 11905: 0x88EA, + 22567 - 11905: 0x88EB, + 22568 - 11905: 0x88EC, + 22569 - 11905: 0x88ED, + 22570 - 11905: 0xBFB0, + 22571 - 11905: 0x88EE, + 22572 - 11905: 0x88EF, + 22573 - 11905: 0x88F0, + 22574 - 11905: 0x88F1, + 22575 - 11905: 0x88F2, + 22576 - 11905: 0xD1DF, + 22577 - 11905: 0x88F3, + 22578 - 11905: 0x88F4, + 22579 - 11905: 0x88F5, + 22580 - 11905: 0x88F6, + 22581 - 11905: 0xB6C2, + 22582 - 11905: 0x88F7, + 22583 - 11905: 0x88F8, + 22584 - 11905: 0x88F9, + 22585 - 11905: 0x88FA, + 22586 - 11905: 0x88FB, + 22587 - 11905: 0x88FC, + 22588 - 11905: 0x88FD, + 22589 - 11905: 0x88FE, + 22590 - 11905: 0x8940, + 22591 - 11905: 0x8941, + 22592 - 11905: 0x8942, + 22593 - 11905: 0x8943, + 22594 - 11905: 0x8944, + 22595 - 11905: 0x8945, + 22596 - 11905: 0xDCA8, + 22597 - 11905: 0x8946, + 22598 - 11905: 0x8947, + 22599 - 11905: 0x8948, + 22600 - 11905: 0x8949, + 22601 - 11905: 0x894A, + 22602 - 11905: 0x894B, + 22603 - 11905: 0x894C, + 22604 - 11905: 0xCBFA, + 22605 - 11905: 0xEBF3, + 22606 - 11905: 0x894D, + 22607 - 11905: 0x894E, + 22608 - 11905: 0x894F, + 22609 - 11905: 0xCBDC, + 22610 - 11905: 0x8950, + 22611 - 11905: 0x8951, + 22612 - 11905: 0xCBFE, + 22613 - 11905: 0x8952, + 22614 - 11905: 0x8953, + 22615 - 11905: 0x8954, + 22616 - 11905: 0xCCC1, + 22617 - 11905: 0x8955, + 22618 - 11905: 0x8956, + 22619 - 11905: 0x8957, + 22620 - 11905: 0x8958, + 22621 - 11905: 0x8959, + 22622 - 11905: 0xC8FB, + 22623 - 11905: 0x895A, + 22624 - 11905: 0x895B, + 22625 - 11905: 0x895C, + 22626 - 11905: 0x895D, + 22627 - 11905: 0x895E, + 22628 - 11905: 0x895F, + 22629 - 11905: 0xDCAA, + 22630 - 11905: 0x8960, + 22631 - 11905: 0x8961, + 22632 - 11905: 0x8962, + 22633 - 11905: 0x8963, + 22634 - 11905: 0x8964, + 22635 - 11905: 0xCCEE, + 22636 - 11905: 0xDCAB, + 22637 - 11905: 0x8965, + 22638 - 11905: 0x8966, + 22639 - 11905: 0x8967, + 22640 - 11905: 0x8968, + 22641 - 11905: 0x8969, + 22642 - 11905: 0x896A, + 22643 - 11905: 0x896B, + 22644 - 11905: 0x896C, + 22645 - 11905: 0x896D, + 22646 - 11905: 0x896E, + 22647 - 11905: 0x896F, + 22648 - 11905: 0x8970, + 22649 - 11905: 0x8971, + 22650 - 11905: 0x8972, + 22651 - 11905: 0x8973, + 22652 - 11905: 0x8974, + 22653 - 11905: 0x8975, + 22654 - 11905: 0xDBD3, + 22655 - 11905: 0x8976, + 22656 - 11905: 0xDCAF, + 22657 - 11905: 0xDCAC, + 22658 - 11905: 0x8977, + 22659 - 11905: 0xBEB3, + 22660 - 11905: 0x8978, + 22661 - 11905: 0xCAFB, + 22662 - 11905: 0x8979, + 22663 - 11905: 0x897A, + 22664 - 11905: 0x897B, + 22665 - 11905: 0xDCAD, + 22666 - 11905: 0x897C, + 22667 - 11905: 0x897D, + 22668 - 11905: 0x897E, + 22669 - 11905: 0x8980, + 22670 - 11905: 0x8981, + 22671 - 11905: 0x8982, + 22672 - 11905: 0x8983, + 22673 - 11905: 0x8984, + 22674 - 11905: 0xC9CA, + 22675 - 11905: 0xC4B9, + 22676 - 11905: 0x8985, + 22677 - 11905: 0x8986, + 22678 - 11905: 0x8987, + 22679 - 11905: 0x8988, + 22680 - 11905: 0x8989, + 22681 - 11905: 0xC7BD, + 22682 - 11905: 0xDCAE, + 22683 - 11905: 0x898A, + 22684 - 11905: 0x898B, + 22685 - 11905: 0x898C, + 22686 - 11905: 0xD4F6, + 22687 - 11905: 0xD0E6, + 22688 - 11905: 0x898D, + 22689 - 11905: 0x898E, + 22690 - 11905: 0x898F, + 22691 - 11905: 0x8990, + 22692 - 11905: 0x8991, + 22693 - 11905: 0x8992, + 22694 - 11905: 0x8993, + 22695 - 11905: 0x8994, + 22696 - 11905: 0xC4AB, + 22697 - 11905: 0xB6D5, + 22698 - 11905: 0x8995, + 22699 - 11905: 0x8996, + 22700 - 11905: 0x8997, + 22701 - 11905: 0x8998, + 22702 - 11905: 0x8999, + 22703 - 11905: 0x899A, + 22704 - 11905: 0x899B, + 22705 - 11905: 0x899C, + 22706 - 11905: 0x899D, + 22707 - 11905: 0x899E, + 22708 - 11905: 0x899F, + 22709 - 11905: 0x89A0, + 22710 - 11905: 0x89A1, + 22711 - 11905: 0x89A2, + 22712 - 11905: 0x89A3, + 22713 - 11905: 0x89A4, + 22714 - 11905: 0x89A5, + 22715 - 11905: 0x89A6, + 22716 - 11905: 0xDBD4, + 22717 - 11905: 0x89A7, + 22718 - 11905: 0x89A8, + 22719 - 11905: 0x89A9, + 22720 - 11905: 0x89AA, + 22721 - 11905: 0xB1DA, + 22722 - 11905: 0x89AB, + 22723 - 11905: 0x89AC, + 22724 - 11905: 0x89AD, + 22725 - 11905: 0xDBD5, + 22726 - 11905: 0x89AE, + 22727 - 11905: 0x89AF, + 22728 - 11905: 0x89B0, + 22729 - 11905: 0x89B1, + 22730 - 11905: 0x89B2, + 22731 - 11905: 0x89B3, + 22732 - 11905: 0x89B4, + 22733 - 11905: 0x89B5, + 22734 - 11905: 0x89B6, + 22735 - 11905: 0x89B7, + 22736 - 11905: 0x89B8, + 22737 - 11905: 0xDBD6, + 22738 - 11905: 0x89B9, + 22739 - 11905: 0x89BA, + 22740 - 11905: 0x89BB, + 22741 - 11905: 0xBABE, + 22742 - 11905: 0x89BC, + 22743 - 11905: 0x89BD, + 22744 - 11905: 0x89BE, + 22745 - 11905: 0x89BF, + 22746 - 11905: 0x89C0, + 22747 - 11905: 0x89C1, + 22748 - 11905: 0x89C2, + 22749 - 11905: 0x89C3, + 22750 - 11905: 0x89C4, + 22751 - 11905: 0x89C5, + 22752 - 11905: 0x89C6, + 22753 - 11905: 0x89C7, + 22754 - 11905: 0x89C8, + 22755 - 11905: 0x89C9, + 22756 - 11905: 0xC8C0, + 22757 - 11905: 0x89CA, + 22758 - 11905: 0x89CB, + 22759 - 11905: 0x89CC, + 22760 - 11905: 0x89CD, + 22761 - 11905: 0x89CE, + 22762 - 11905: 0x89CF, + 22763 - 11905: 0xCABF, + 22764 - 11905: 0xC8C9, + 22765 - 11905: 0x89D0, + 22766 - 11905: 0xD7B3, + 22767 - 11905: 0x89D1, + 22768 - 11905: 0xC9F9, + 22769 - 11905: 0x89D2, + 22770 - 11905: 0x89D3, + 22771 - 11905: 0xBFC7, + 22772 - 11905: 0x89D4, + 22773 - 11905: 0x89D5, + 22774 - 11905: 0xBAF8, + 22775 - 11905: 0x89D6, + 22776 - 11905: 0x89D7, + 22777 - 11905: 0xD2BC, + 22778 - 11905: 0x89D8, + 22779 - 11905: 0x89D9, + 22780 - 11905: 0x89DA, + 22781 - 11905: 0x89DB, + 22782 - 11905: 0x89DC, + 22783 - 11905: 0x89DD, + 22784 - 11905: 0x89DE, + 22785 - 11905: 0x89DF, + 22786 - 11905: 0xE2BA, + 22787 - 11905: 0x89E0, + 22788 - 11905: 0xB4A6, + 22789 - 11905: 0x89E1, + 22790 - 11905: 0x89E2, + 22791 - 11905: 0xB1B8, + 22792 - 11905: 0x89E3, + 22793 - 11905: 0x89E4, + 22794 - 11905: 0x89E5, + 22795 - 11905: 0x89E6, + 22796 - 11905: 0x89E7, + 22797 - 11905: 0xB8B4, + 22798 - 11905: 0x89E8, + 22799 - 11905: 0xCFC4, + 22800 - 11905: 0x89E9, + 22801 - 11905: 0x89EA, + 22802 - 11905: 0x89EB, + 22803 - 11905: 0x89EC, + 22804 - 11905: 0xD9E7, + 22805 - 11905: 0xCFA6, + 22806 - 11905: 0xCDE2, + 22807 - 11905: 0x89ED, + 22808 - 11905: 0x89EE, + 22809 - 11905: 0xD9ED, + 22810 - 11905: 0xB6E0, + 22811 - 11905: 0x89EF, + 22812 - 11905: 0xD2B9, + 22813 - 11905: 0x89F0, + 22814 - 11905: 0x89F1, + 22815 - 11905: 0xB9BB, + 22816 - 11905: 0x89F2, + 22817 - 11905: 0x89F3, + 22818 - 11905: 0x89F4, + 22819 - 11905: 0x89F5, + 22820 - 11905: 0xE2B9, + 22821 - 11905: 0xE2B7, + 22822 - 11905: 0x89F6, + 22823 - 11905: 0xB4F3, + 22824 - 11905: 0x89F7, + 22825 - 11905: 0xCCEC, + 22826 - 11905: 0xCCAB, + 22827 - 11905: 0xB7F2, + 22828 - 11905: 0x89F8, + 22829 - 11905: 0xD8B2, + 22830 - 11905: 0xD1EB, + 22831 - 11905: 0xBABB, + 22832 - 11905: 0x89F9, + 22833 - 11905: 0xCAA7, + 22834 - 11905: 0x89FA, + 22835 - 11905: 0x89FB, + 22836 - 11905: 0xCDB7, + 22837 - 11905: 0x89FC, + 22838 - 11905: 0x89FD, + 22839 - 11905: 0xD2C4, + 22840 - 11905: 0xBFE4, + 22841 - 11905: 0xBCD0, + 22842 - 11905: 0xB6E1, + 22843 - 11905: 0x89FE, + 22844 - 11905: 0xDEC5, + 22845 - 11905: 0x8A40, + 22846 - 11905: 0x8A41, + 22847 - 11905: 0x8A42, + 22848 - 11905: 0x8A43, + 22849 - 11905: 0xDEC6, + 22850 - 11905: 0xDBBC, + 22851 - 11905: 0x8A44, + 22852 - 11905: 0xD1D9, + 22853 - 11905: 0x8A45, + 22854 - 11905: 0x8A46, + 22855 - 11905: 0xC6E6, + 22856 - 11905: 0xC4CE, + 22857 - 11905: 0xB7EE, + 22858 - 11905: 0x8A47, + 22859 - 11905: 0xB7DC, + 22860 - 11905: 0x8A48, + 22861 - 11905: 0x8A49, + 22862 - 11905: 0xBFFC, + 22863 - 11905: 0xD7E0, + 22864 - 11905: 0x8A4A, + 22865 - 11905: 0xC6F5, + 22866 - 11905: 0x8A4B, + 22867 - 11905: 0x8A4C, + 22868 - 11905: 0xB1BC, + 22869 - 11905: 0xDEC8, + 22870 - 11905: 0xBDB1, + 22871 - 11905: 0xCCD7, + 22872 - 11905: 0xDECA, + 22873 - 11905: 0x8A4D, + 22874 - 11905: 0xDEC9, + 22875 - 11905: 0x8A4E, + 22876 - 11905: 0x8A4F, + 22877 - 11905: 0x8A50, + 22878 - 11905: 0x8A51, + 22879 - 11905: 0x8A52, + 22880 - 11905: 0xB5EC, + 22881 - 11905: 0x8A53, + 22882 - 11905: 0xC9DD, + 22883 - 11905: 0x8A54, + 22884 - 11905: 0x8A55, + 22885 - 11905: 0xB0C2, + 22886 - 11905: 0x8A56, + 22887 - 11905: 0x8A57, + 22888 - 11905: 0x8A58, + 22889 - 11905: 0x8A59, + 22890 - 11905: 0x8A5A, + 22891 - 11905: 0x8A5B, + 22892 - 11905: 0x8A5C, + 22893 - 11905: 0x8A5D, + 22894 - 11905: 0x8A5E, + 22895 - 11905: 0x8A5F, + 22896 - 11905: 0x8A60, + 22897 - 11905: 0x8A61, + 22898 - 11905: 0x8A62, + 22899 - 11905: 0xC5AE, + 22900 - 11905: 0xC5AB, + 22901 - 11905: 0x8A63, + 22902 - 11905: 0xC4CC, + 22903 - 11905: 0x8A64, + 22904 - 11905: 0xBCE9, + 22905 - 11905: 0xCBFD, + 22906 - 11905: 0x8A65, + 22907 - 11905: 0x8A66, + 22908 - 11905: 0x8A67, + 22909 - 11905: 0xBAC3, + 22910 - 11905: 0x8A68, + 22911 - 11905: 0x8A69, + 22912 - 11905: 0x8A6A, + 22913 - 11905: 0xE5F9, + 22914 - 11905: 0xC8E7, + 22915 - 11905: 0xE5FA, + 22916 - 11905: 0xCDFD, + 22917 - 11905: 0x8A6B, + 22918 - 11905: 0xD7B1, + 22919 - 11905: 0xB8BE, + 22920 - 11905: 0xC2E8, + 22921 - 11905: 0x8A6C, + 22922 - 11905: 0xC8D1, + 22923 - 11905: 0x8A6D, + 22924 - 11905: 0x8A6E, + 22925 - 11905: 0xE5FB, + 22926 - 11905: 0x8A6F, + 22927 - 11905: 0x8A70, + 22928 - 11905: 0x8A71, + 22929 - 11905: 0x8A72, + 22930 - 11905: 0xB6CA, + 22931 - 11905: 0xBCCB, + 22932 - 11905: 0x8A73, + 22933 - 11905: 0x8A74, + 22934 - 11905: 0xD1FD, + 22935 - 11905: 0xE6A1, + 22936 - 11905: 0x8A75, + 22937 - 11905: 0xC3EE, + 22938 - 11905: 0x8A76, + 22939 - 11905: 0x8A77, + 22940 - 11905: 0x8A78, + 22941 - 11905: 0x8A79, + 22942 - 11905: 0xE6A4, + 22943 - 11905: 0x8A7A, + 22944 - 11905: 0x8A7B, + 22945 - 11905: 0x8A7C, + 22946 - 11905: 0x8A7D, + 22947 - 11905: 0xE5FE, + 22948 - 11905: 0xE6A5, + 22949 - 11905: 0xCDD7, + 22950 - 11905: 0x8A7E, + 22951 - 11905: 0x8A80, + 22952 - 11905: 0xB7C1, + 22953 - 11905: 0xE5FC, + 22954 - 11905: 0xE5FD, + 22955 - 11905: 0xE6A3, + 22956 - 11905: 0x8A81, + 22957 - 11905: 0x8A82, + 22958 - 11905: 0xC4DD, + 22959 - 11905: 0xE6A8, + 22960 - 11905: 0x8A83, + 22961 - 11905: 0x8A84, + 22962 - 11905: 0xE6A7, + 22963 - 11905: 0x8A85, + 22964 - 11905: 0x8A86, + 22965 - 11905: 0x8A87, + 22966 - 11905: 0x8A88, + 22967 - 11905: 0x8A89, + 22968 - 11905: 0x8A8A, + 22969 - 11905: 0xC3C3, + 22970 - 11905: 0x8A8B, + 22971 - 11905: 0xC6DE, + 22972 - 11905: 0x8A8C, + 22973 - 11905: 0x8A8D, + 22974 - 11905: 0xE6AA, + 22975 - 11905: 0x8A8E, + 22976 - 11905: 0x8A8F, + 22977 - 11905: 0x8A90, + 22978 - 11905: 0x8A91, + 22979 - 11905: 0x8A92, + 22980 - 11905: 0x8A93, + 22981 - 11905: 0x8A94, + 22982 - 11905: 0xC4B7, + 22983 - 11905: 0x8A95, + 22984 - 11905: 0x8A96, + 22985 - 11905: 0x8A97, + 22986 - 11905: 0xE6A2, + 22987 - 11905: 0xCABC, + 22988 - 11905: 0x8A98, + 22989 - 11905: 0x8A99, + 22990 - 11905: 0x8A9A, + 22991 - 11905: 0x8A9B, + 22992 - 11905: 0xBDE3, + 22993 - 11905: 0xB9C3, + 22994 - 11905: 0xE6A6, + 22995 - 11905: 0xD0D5, + 22996 - 11905: 0xCEAF, + 22997 - 11905: 0x8A9C, + 22998 - 11905: 0x8A9D, + 22999 - 11905: 0xE6A9, + 23000 - 11905: 0xE6B0, + 23001 - 11905: 0x8A9E, + 23002 - 11905: 0xD2A6, + 23003 - 11905: 0x8A9F, + 23004 - 11905: 0xBDAA, + 23005 - 11905: 0xE6AD, + 23006 - 11905: 0x8AA0, + 23007 - 11905: 0x8AA1, + 23008 - 11905: 0x8AA2, + 23009 - 11905: 0x8AA3, + 23010 - 11905: 0x8AA4, + 23011 - 11905: 0xE6AF, + 23012 - 11905: 0x8AA5, + 23013 - 11905: 0xC0D1, + 23014 - 11905: 0x8AA6, + 23015 - 11905: 0x8AA7, + 23016 - 11905: 0xD2CC, + 23017 - 11905: 0x8AA8, + 23018 - 11905: 0x8AA9, + 23019 - 11905: 0x8AAA, + 23020 - 11905: 0xBCA7, + 23021 - 11905: 0x8AAB, + 23022 - 11905: 0x8AAC, + 23023 - 11905: 0x8AAD, + 23024 - 11905: 0x8AAE, + 23025 - 11905: 0x8AAF, + 23026 - 11905: 0x8AB0, + 23027 - 11905: 0x8AB1, + 23028 - 11905: 0x8AB2, + 23029 - 11905: 0x8AB3, + 23030 - 11905: 0x8AB4, + 23031 - 11905: 0x8AB5, + 23032 - 11905: 0x8AB6, + 23033 - 11905: 0xE6B1, + 23034 - 11905: 0x8AB7, + 23035 - 11905: 0xD2F6, + 23036 - 11905: 0x8AB8, + 23037 - 11905: 0x8AB9, + 23038 - 11905: 0x8ABA, + 23039 - 11905: 0xD7CB, + 23040 - 11905: 0x8ABB, + 23041 - 11905: 0xCDFE, + 23042 - 11905: 0x8ABC, + 23043 - 11905: 0xCDDE, + 23044 - 11905: 0xC2A6, + 23045 - 11905: 0xE6AB, + 23046 - 11905: 0xE6AC, + 23047 - 11905: 0xBDBF, + 23048 - 11905: 0xE6AE, + 23049 - 11905: 0xE6B3, + 23050 - 11905: 0x8ABD, + 23051 - 11905: 0x8ABE, + 23052 - 11905: 0xE6B2, + 23053 - 11905: 0x8ABF, + 23054 - 11905: 0x8AC0, + 23055 - 11905: 0x8AC1, + 23056 - 11905: 0x8AC2, + 23057 - 11905: 0xE6B6, + 23058 - 11905: 0x8AC3, + 23059 - 11905: 0xE6B8, + 23060 - 11905: 0x8AC4, + 23061 - 11905: 0x8AC5, + 23062 - 11905: 0x8AC6, + 23063 - 11905: 0x8AC7, + 23064 - 11905: 0xC4EF, + 23065 - 11905: 0x8AC8, + 23066 - 11905: 0x8AC9, + 23067 - 11905: 0x8ACA, + 23068 - 11905: 0xC4C8, + 23069 - 11905: 0x8ACB, + 23070 - 11905: 0x8ACC, + 23071 - 11905: 0xBEEA, + 23072 - 11905: 0xC9EF, + 23073 - 11905: 0x8ACD, + 23074 - 11905: 0x8ACE, + 23075 - 11905: 0xE6B7, + 23076 - 11905: 0x8ACF, + 23077 - 11905: 0xB6F0, + 23078 - 11905: 0x8AD0, + 23079 - 11905: 0x8AD1, + 23080 - 11905: 0x8AD2, + 23081 - 11905: 0xC3E4, + 23082 - 11905: 0x8AD3, + 23083 - 11905: 0x8AD4, + 23084 - 11905: 0x8AD5, + 23085 - 11905: 0x8AD6, + 23086 - 11905: 0x8AD7, + 23087 - 11905: 0x8AD8, + 23088 - 11905: 0x8AD9, + 23089 - 11905: 0xD3E9, + 23090 - 11905: 0xE6B4, + 23091 - 11905: 0x8ADA, + 23092 - 11905: 0xE6B5, + 23093 - 11905: 0x8ADB, + 23094 - 11905: 0xC8A2, + 23095 - 11905: 0x8ADC, + 23096 - 11905: 0x8ADD, + 23097 - 11905: 0x8ADE, + 23098 - 11905: 0x8ADF, + 23099 - 11905: 0x8AE0, + 23100 - 11905: 0xE6BD, + 23101 - 11905: 0x8AE1, + 23102 - 11905: 0x8AE2, + 23103 - 11905: 0x8AE3, + 23104 - 11905: 0xE6B9, + 23105 - 11905: 0x8AE4, + 23106 - 11905: 0x8AE5, + 23107 - 11905: 0x8AE6, + 23108 - 11905: 0x8AE7, + 23109 - 11905: 0x8AE8, + 23110 - 11905: 0xC6C5, + 23111 - 11905: 0x8AE9, + 23112 - 11905: 0x8AEA, + 23113 - 11905: 0xCDF1, + 23114 - 11905: 0xE6BB, + 23115 - 11905: 0x8AEB, + 23116 - 11905: 0x8AEC, + 23117 - 11905: 0x8AED, + 23118 - 11905: 0x8AEE, + 23119 - 11905: 0x8AEF, + 23120 - 11905: 0x8AF0, + 23121 - 11905: 0x8AF1, + 23122 - 11905: 0x8AF2, + 23123 - 11905: 0x8AF3, + 23124 - 11905: 0x8AF4, + 23125 - 11905: 0xE6BC, + 23126 - 11905: 0x8AF5, + 23127 - 11905: 0x8AF6, + 23128 - 11905: 0x8AF7, + 23129 - 11905: 0x8AF8, + 23130 - 11905: 0xBBE9, + 23131 - 11905: 0x8AF9, + 23132 - 11905: 0x8AFA, + 23133 - 11905: 0x8AFB, + 23134 - 11905: 0x8AFC, + 23135 - 11905: 0x8AFD, + 23136 - 11905: 0x8AFE, + 23137 - 11905: 0x8B40, + 23138 - 11905: 0xE6BE, + 23139 - 11905: 0x8B41, + 23140 - 11905: 0x8B42, + 23141 - 11905: 0x8B43, + 23142 - 11905: 0x8B44, + 23143 - 11905: 0xE6BA, + 23144 - 11905: 0x8B45, + 23145 - 11905: 0x8B46, + 23146 - 11905: 0xC0B7, + 23147 - 11905: 0x8B47, + 23148 - 11905: 0x8B48, + 23149 - 11905: 0x8B49, + 23150 - 11905: 0x8B4A, + 23151 - 11905: 0x8B4B, + 23152 - 11905: 0x8B4C, + 23153 - 11905: 0x8B4D, + 23154 - 11905: 0x8B4E, + 23155 - 11905: 0x8B4F, + 23156 - 11905: 0xD3A4, + 23157 - 11905: 0xE6BF, + 23158 - 11905: 0xC9F4, + 23159 - 11905: 0xE6C3, + 23160 - 11905: 0x8B50, + 23161 - 11905: 0x8B51, + 23162 - 11905: 0xE6C4, + 23163 - 11905: 0x8B52, + 23164 - 11905: 0x8B53, + 23165 - 11905: 0x8B54, + 23166 - 11905: 0x8B55, + 23167 - 11905: 0xD0F6, + 23168 - 11905: 0x8B56, + 23169 - 11905: 0x8B57, + 23170 - 11905: 0x8B58, + 23171 - 11905: 0x8B59, + 23172 - 11905: 0x8B5A, + 23173 - 11905: 0x8B5B, + 23174 - 11905: 0x8B5C, + 23175 - 11905: 0x8B5D, + 23176 - 11905: 0x8B5E, + 23177 - 11905: 0x8B5F, + 23178 - 11905: 0x8B60, + 23179 - 11905: 0x8B61, + 23180 - 11905: 0x8B62, + 23181 - 11905: 0x8B63, + 23182 - 11905: 0x8B64, + 23183 - 11905: 0x8B65, + 23184 - 11905: 0x8B66, + 23185 - 11905: 0x8B67, + 23186 - 11905: 0xC3BD, + 23187 - 11905: 0x8B68, + 23188 - 11905: 0x8B69, + 23189 - 11905: 0x8B6A, + 23190 - 11905: 0x8B6B, + 23191 - 11905: 0x8B6C, + 23192 - 11905: 0x8B6D, + 23193 - 11905: 0x8B6E, + 23194 - 11905: 0xC3C4, + 23195 - 11905: 0xE6C2, + 23196 - 11905: 0x8B6F, + 23197 - 11905: 0x8B70, + 23198 - 11905: 0x8B71, + 23199 - 11905: 0x8B72, + 23200 - 11905: 0x8B73, + 23201 - 11905: 0x8B74, + 23202 - 11905: 0x8B75, + 23203 - 11905: 0x8B76, + 23204 - 11905: 0x8B77, + 23205 - 11905: 0x8B78, + 23206 - 11905: 0x8B79, + 23207 - 11905: 0x8B7A, + 23208 - 11905: 0x8B7B, + 23209 - 11905: 0x8B7C, + 23210 - 11905: 0xE6C1, + 23211 - 11905: 0x8B7D, + 23212 - 11905: 0x8B7E, + 23213 - 11905: 0x8B80, + 23214 - 11905: 0x8B81, + 23215 - 11905: 0x8B82, + 23216 - 11905: 0x8B83, + 23217 - 11905: 0x8B84, + 23218 - 11905: 0xE6C7, + 23219 - 11905: 0xCFB1, + 23220 - 11905: 0x8B85, + 23221 - 11905: 0xEBF4, + 23222 - 11905: 0x8B86, + 23223 - 11905: 0x8B87, + 23224 - 11905: 0xE6CA, + 23225 - 11905: 0x8B88, + 23226 - 11905: 0x8B89, + 23227 - 11905: 0x8B8A, + 23228 - 11905: 0x8B8B, + 23229 - 11905: 0x8B8C, + 23230 - 11905: 0xE6C5, + 23231 - 11905: 0x8B8D, + 23232 - 11905: 0x8B8E, + 23233 - 11905: 0xBCDE, + 23234 - 11905: 0xC9A9, + 23235 - 11905: 0x8B8F, + 23236 - 11905: 0x8B90, + 23237 - 11905: 0x8B91, + 23238 - 11905: 0x8B92, + 23239 - 11905: 0x8B93, + 23240 - 11905: 0x8B94, + 23241 - 11905: 0xBCB5, + 23242 - 11905: 0x8B95, + 23243 - 11905: 0x8B96, + 23244 - 11905: 0xCFD3, + 23245 - 11905: 0x8B97, + 23246 - 11905: 0x8B98, + 23247 - 11905: 0x8B99, + 23248 - 11905: 0x8B9A, + 23249 - 11905: 0x8B9B, + 23250 - 11905: 0xE6C8, + 23251 - 11905: 0x8B9C, + 23252 - 11905: 0xE6C9, + 23253 - 11905: 0x8B9D, + 23254 - 11905: 0xE6CE, + 23255 - 11905: 0x8B9E, + 23256 - 11905: 0xE6D0, + 23257 - 11905: 0x8B9F, + 23258 - 11905: 0x8BA0, + 23259 - 11905: 0x8BA1, + 23260 - 11905: 0xE6D1, + 23261 - 11905: 0x8BA2, + 23262 - 11905: 0x8BA3, + 23263 - 11905: 0x8BA4, + 23264 - 11905: 0xE6CB, + 23265 - 11905: 0xB5D5, + 23266 - 11905: 0x8BA5, + 23267 - 11905: 0xE6CC, + 23268 - 11905: 0x8BA6, + 23269 - 11905: 0x8BA7, + 23270 - 11905: 0xE6CF, + 23271 - 11905: 0x8BA8, + 23272 - 11905: 0x8BA9, + 23273 - 11905: 0xC4DB, + 23274 - 11905: 0x8BAA, + 23275 - 11905: 0xE6C6, + 23276 - 11905: 0x8BAB, + 23277 - 11905: 0x8BAC, + 23278 - 11905: 0x8BAD, + 23279 - 11905: 0x8BAE, + 23280 - 11905: 0x8BAF, + 23281 - 11905: 0xE6CD, + 23282 - 11905: 0x8BB0, + 23283 - 11905: 0x8BB1, + 23284 - 11905: 0x8BB2, + 23285 - 11905: 0x8BB3, + 23286 - 11905: 0x8BB4, + 23287 - 11905: 0x8BB5, + 23288 - 11905: 0x8BB6, + 23289 - 11905: 0x8BB7, + 23290 - 11905: 0x8BB8, + 23291 - 11905: 0x8BB9, + 23292 - 11905: 0x8BBA, + 23293 - 11905: 0x8BBB, + 23294 - 11905: 0x8BBC, + 23295 - 11905: 0x8BBD, + 23296 - 11905: 0x8BBE, + 23297 - 11905: 0x8BBF, + 23298 - 11905: 0x8BC0, + 23299 - 11905: 0x8BC1, + 23300 - 11905: 0x8BC2, + 23301 - 11905: 0x8BC3, + 23302 - 11905: 0x8BC4, + 23303 - 11905: 0x8BC5, + 23304 - 11905: 0x8BC6, + 23305 - 11905: 0xE6D2, + 23306 - 11905: 0x8BC7, + 23307 - 11905: 0x8BC8, + 23308 - 11905: 0x8BC9, + 23309 - 11905: 0x8BCA, + 23310 - 11905: 0x8BCB, + 23311 - 11905: 0x8BCC, + 23312 - 11905: 0x8BCD, + 23313 - 11905: 0x8BCE, + 23314 - 11905: 0x8BCF, + 23315 - 11905: 0x8BD0, + 23316 - 11905: 0x8BD1, + 23317 - 11905: 0x8BD2, + 23318 - 11905: 0xE6D4, + 23319 - 11905: 0xE6D3, + 23320 - 11905: 0x8BD3, + 23321 - 11905: 0x8BD4, + 23322 - 11905: 0x8BD5, + 23323 - 11905: 0x8BD6, + 23324 - 11905: 0x8BD7, + 23325 - 11905: 0x8BD8, + 23326 - 11905: 0x8BD9, + 23327 - 11905: 0x8BDA, + 23328 - 11905: 0x8BDB, + 23329 - 11905: 0x8BDC, + 23330 - 11905: 0x8BDD, + 23331 - 11905: 0x8BDE, + 23332 - 11905: 0x8BDF, + 23333 - 11905: 0x8BE0, + 23334 - 11905: 0x8BE1, + 23335 - 11905: 0x8BE2, + 23336 - 11905: 0x8BE3, + 23337 - 11905: 0x8BE4, + 23338 - 11905: 0x8BE5, + 23339 - 11905: 0x8BE6, + 23340 - 11905: 0x8BE7, + 23341 - 11905: 0x8BE8, + 23342 - 11905: 0x8BE9, + 23343 - 11905: 0x8BEA, + 23344 - 11905: 0x8BEB, + 23345 - 11905: 0x8BEC, + 23346 - 11905: 0xE6D5, + 23347 - 11905: 0x8BED, + 23348 - 11905: 0xD9F8, + 23349 - 11905: 0x8BEE, + 23350 - 11905: 0x8BEF, + 23351 - 11905: 0xE6D6, + 23352 - 11905: 0x8BF0, + 23353 - 11905: 0x8BF1, + 23354 - 11905: 0x8BF2, + 23355 - 11905: 0x8BF3, + 23356 - 11905: 0x8BF4, + 23357 - 11905: 0x8BF5, + 23358 - 11905: 0x8BF6, + 23359 - 11905: 0x8BF7, + 23360 - 11905: 0xE6D7, + 23361 - 11905: 0x8BF8, + 23362 - 11905: 0x8BF9, + 23363 - 11905: 0x8BFA, + 23364 - 11905: 0x8BFB, + 23365 - 11905: 0x8BFC, + 23366 - 11905: 0x8BFD, + 23367 - 11905: 0x8BFE, + 23368 - 11905: 0x8C40, + 23369 - 11905: 0x8C41, + 23370 - 11905: 0x8C42, + 23371 - 11905: 0x8C43, + 23372 - 11905: 0x8C44, + 23373 - 11905: 0x8C45, + 23374 - 11905: 0x8C46, + 23375 - 11905: 0x8C47, + 23376 - 11905: 0xD7D3, + 23377 - 11905: 0xE6DD, + 23378 - 11905: 0x8C48, + 23379 - 11905: 0xE6DE, + 23380 - 11905: 0xBFD7, + 23381 - 11905: 0xD4D0, + 23382 - 11905: 0x8C49, + 23383 - 11905: 0xD7D6, + 23384 - 11905: 0xB4E6, + 23385 - 11905: 0xCBEF, + 23386 - 11905: 0xE6DA, + 23387 - 11905: 0xD8C3, + 23388 - 11905: 0xD7CE, + 23389 - 11905: 0xD0A2, + 23390 - 11905: 0x8C4A, + 23391 - 11905: 0xC3CF, + 23392 - 11905: 0x8C4B, + 23393 - 11905: 0x8C4C, + 23394 - 11905: 0xE6DF, + 23395 - 11905: 0xBCBE, + 23396 - 11905: 0xB9C2, + 23397 - 11905: 0xE6DB, + 23398 - 11905: 0xD1A7, + 23399 - 11905: 0x8C4D, + 23400 - 11905: 0x8C4E, + 23401 - 11905: 0xBAA2, + 23402 - 11905: 0xC2CF, + 23403 - 11905: 0x8C4F, + 23404 - 11905: 0xD8AB, + 23405 - 11905: 0x8C50, + 23406 - 11905: 0x8C51, + 23407 - 11905: 0x8C52, + 23408 - 11905: 0xCAEB, + 23409 - 11905: 0xE5EE, + 23410 - 11905: 0x8C53, + 23411 - 11905: 0xE6DC, + 23412 - 11905: 0x8C54, + 23413 - 11905: 0xB7F5, + 23414 - 11905: 0x8C55, + 23415 - 11905: 0x8C56, + 23416 - 11905: 0x8C57, + 23417 - 11905: 0x8C58, + 23418 - 11905: 0xC8E6, + 23419 - 11905: 0x8C59, + 23420 - 11905: 0x8C5A, + 23421 - 11905: 0xC4F5, + 23422 - 11905: 0x8C5B, + 23423 - 11905: 0x8C5C, + 23424 - 11905: 0xE5B2, + 23425 - 11905: 0xC4FE, + 23426 - 11905: 0x8C5D, + 23427 - 11905: 0xCBFC, + 23428 - 11905: 0xE5B3, + 23429 - 11905: 0xD5AC, + 23430 - 11905: 0x8C5E, + 23431 - 11905: 0xD3EE, + 23432 - 11905: 0xCAD8, + 23433 - 11905: 0xB0B2, + 23434 - 11905: 0x8C5F, + 23435 - 11905: 0xCBCE, + 23436 - 11905: 0xCDEA, + 23437 - 11905: 0x8C60, + 23438 - 11905: 0x8C61, + 23439 - 11905: 0xBAEA, + 23440 - 11905: 0x8C62, + 23441 - 11905: 0x8C63, + 23442 - 11905: 0x8C64, + 23443 - 11905: 0xE5B5, + 23444 - 11905: 0x8C65, + 23445 - 11905: 0xE5B4, + 23446 - 11905: 0x8C66, + 23447 - 11905: 0xD7DA, + 23448 - 11905: 0xB9D9, + 23449 - 11905: 0xD6E6, + 23450 - 11905: 0xB6A8, + 23451 - 11905: 0xCDF0, + 23452 - 11905: 0xD2CB, + 23453 - 11905: 0xB1A6, + 23454 - 11905: 0xCAB5, + 23455 - 11905: 0x8C67, + 23456 - 11905: 0xB3E8, + 23457 - 11905: 0xC9F3, + 23458 - 11905: 0xBFCD, + 23459 - 11905: 0xD0FB, + 23460 - 11905: 0xCAD2, + 23461 - 11905: 0xE5B6, + 23462 - 11905: 0xBBC2, + 23463 - 11905: 0x8C68, + 23464 - 11905: 0x8C69, + 23465 - 11905: 0x8C6A, + 23466 - 11905: 0xCFDC, + 23467 - 11905: 0xB9AC, + 23468 - 11905: 0x8C6B, + 23469 - 11905: 0x8C6C, + 23470 - 11905: 0x8C6D, + 23471 - 11905: 0x8C6E, + 23472 - 11905: 0xD4D7, + 23473 - 11905: 0x8C6F, + 23474 - 11905: 0x8C70, + 23475 - 11905: 0xBAA6, + 23476 - 11905: 0xD1E7, + 23477 - 11905: 0xCFFC, + 23478 - 11905: 0xBCD2, + 23479 - 11905: 0x8C71, + 23480 - 11905: 0xE5B7, + 23481 - 11905: 0xC8DD, + 23482 - 11905: 0x8C72, + 23483 - 11905: 0x8C73, + 23484 - 11905: 0x8C74, + 23485 - 11905: 0xBFED, + 23486 - 11905: 0xB1F6, + 23487 - 11905: 0xCBDE, + 23488 - 11905: 0x8C75, + 23489 - 11905: 0x8C76, + 23490 - 11905: 0xBCC5, + 23491 - 11905: 0x8C77, + 23492 - 11905: 0xBCC4, + 23493 - 11905: 0xD2FA, + 23494 - 11905: 0xC3DC, + 23495 - 11905: 0xBFDC, + 23496 - 11905: 0x8C78, + 23497 - 11905: 0x8C79, + 23498 - 11905: 0x8C7A, + 23499 - 11905: 0x8C7B, + 23500 - 11905: 0xB8BB, + 23501 - 11905: 0x8C7C, + 23502 - 11905: 0x8C7D, + 23503 - 11905: 0x8C7E, + 23504 - 11905: 0xC3C2, + 23505 - 11905: 0x8C80, + 23506 - 11905: 0xBAAE, + 23507 - 11905: 0xD4A2, + 23508 - 11905: 0x8C81, + 23509 - 11905: 0x8C82, + 23510 - 11905: 0x8C83, + 23511 - 11905: 0x8C84, + 23512 - 11905: 0x8C85, + 23513 - 11905: 0x8C86, + 23514 - 11905: 0x8C87, + 23515 - 11905: 0x8C88, + 23516 - 11905: 0x8C89, + 23517 - 11905: 0xC7DE, + 23518 - 11905: 0xC4AF, + 23519 - 11905: 0xB2EC, + 23520 - 11905: 0x8C8A, + 23521 - 11905: 0xB9D1, + 23522 - 11905: 0x8C8B, + 23523 - 11905: 0x8C8C, + 23524 - 11905: 0xE5BB, + 23525 - 11905: 0xC1C8, + 23526 - 11905: 0x8C8D, + 23527 - 11905: 0x8C8E, + 23528 - 11905: 0xD5AF, + 23529 - 11905: 0x8C8F, + 23530 - 11905: 0x8C90, + 23531 - 11905: 0x8C91, + 23532 - 11905: 0x8C92, + 23533 - 11905: 0x8C93, + 23534 - 11905: 0xE5BC, + 23535 - 11905: 0x8C94, + 23536 - 11905: 0xE5BE, + 23537 - 11905: 0x8C95, + 23538 - 11905: 0x8C96, + 23539 - 11905: 0x8C97, + 23540 - 11905: 0x8C98, + 23541 - 11905: 0x8C99, + 23542 - 11905: 0x8C9A, + 23543 - 11905: 0x8C9B, + 23544 - 11905: 0xB4E7, + 23545 - 11905: 0xB6D4, + 23546 - 11905: 0xCBC2, + 23547 - 11905: 0xD1B0, + 23548 - 11905: 0xB5BC, + 23549 - 11905: 0x8C9C, + 23550 - 11905: 0x8C9D, + 23551 - 11905: 0xCAD9, + 23552 - 11905: 0x8C9E, + 23553 - 11905: 0xB7E2, + 23554 - 11905: 0x8C9F, + 23555 - 11905: 0x8CA0, + 23556 - 11905: 0xC9E4, + 23557 - 11905: 0x8CA1, + 23558 - 11905: 0xBDAB, + 23559 - 11905: 0x8CA2, + 23560 - 11905: 0x8CA3, + 23561 - 11905: 0xCEBE, + 23562 - 11905: 0xD7F0, + 23563 - 11905: 0x8CA4, + 23564 - 11905: 0x8CA5, + 23565 - 11905: 0x8CA6, + 23566 - 11905: 0x8CA7, + 23567 - 11905: 0xD0A1, + 23568 - 11905: 0x8CA8, + 23569 - 11905: 0xC9D9, + 23570 - 11905: 0x8CA9, + 23571 - 11905: 0x8CAA, + 23572 - 11905: 0xB6FB, + 23573 - 11905: 0xE6D8, + 23574 - 11905: 0xBCE2, + 23575 - 11905: 0x8CAB, + 23576 - 11905: 0xB3BE, + 23577 - 11905: 0x8CAC, + 23578 - 11905: 0xC9D0, + 23579 - 11905: 0x8CAD, + 23580 - 11905: 0xE6D9, + 23581 - 11905: 0xB3A2, + 23582 - 11905: 0x8CAE, + 23583 - 11905: 0x8CAF, + 23584 - 11905: 0x8CB0, + 23585 - 11905: 0x8CB1, + 23586 - 11905: 0xDECC, + 23587 - 11905: 0x8CB2, + 23588 - 11905: 0xD3C8, + 23589 - 11905: 0xDECD, + 23590 - 11905: 0x8CB3, + 23591 - 11905: 0xD2A2, + 23592 - 11905: 0x8CB4, + 23593 - 11905: 0x8CB5, + 23594 - 11905: 0x8CB6, + 23595 - 11905: 0x8CB7, + 23596 - 11905: 0xDECE, + 23597 - 11905: 0x8CB8, + 23598 - 11905: 0x8CB9, + 23599 - 11905: 0x8CBA, + 23600 - 11905: 0x8CBB, + 23601 - 11905: 0xBECD, + 23602 - 11905: 0x8CBC, + 23603 - 11905: 0x8CBD, + 23604 - 11905: 0xDECF, + 23605 - 11905: 0x8CBE, + 23606 - 11905: 0x8CBF, + 23607 - 11905: 0x8CC0, + 23608 - 11905: 0xCAAC, + 23609 - 11905: 0xD2FC, + 23610 - 11905: 0xB3DF, + 23611 - 11905: 0xE5EA, + 23612 - 11905: 0xC4E1, + 23613 - 11905: 0xBEA1, + 23614 - 11905: 0xCEB2, + 23615 - 11905: 0xC4F2, + 23616 - 11905: 0xBED6, + 23617 - 11905: 0xC6A8, + 23618 - 11905: 0xB2E3, + 23619 - 11905: 0x8CC1, + 23620 - 11905: 0x8CC2, + 23621 - 11905: 0xBED3, + 23622 - 11905: 0x8CC3, + 23623 - 11905: 0x8CC4, + 23624 - 11905: 0xC7FC, + 23625 - 11905: 0xCCEB, + 23626 - 11905: 0xBDEC, + 23627 - 11905: 0xCEDD, + 23628 - 11905: 0x8CC5, + 23629 - 11905: 0x8CC6, + 23630 - 11905: 0xCABA, + 23631 - 11905: 0xC6C1, + 23632 - 11905: 0xE5EC, + 23633 - 11905: 0xD0BC, + 23634 - 11905: 0x8CC7, + 23635 - 11905: 0x8CC8, + 23636 - 11905: 0x8CC9, + 23637 - 11905: 0xD5B9, + 23638 - 11905: 0x8CCA, + 23639 - 11905: 0x8CCB, + 23640 - 11905: 0x8CCC, + 23641 - 11905: 0xE5ED, + 23642 - 11905: 0x8CCD, + 23643 - 11905: 0x8CCE, + 23644 - 11905: 0x8CCF, + 23645 - 11905: 0x8CD0, + 23646 - 11905: 0xCAF4, + 23647 - 11905: 0x8CD1, + 23648 - 11905: 0xCDC0, + 23649 - 11905: 0xC2C5, + 23650 - 11905: 0x8CD2, + 23651 - 11905: 0xE5EF, + 23652 - 11905: 0x8CD3, + 23653 - 11905: 0xC2C4, + 23654 - 11905: 0xE5F0, + 23655 - 11905: 0x8CD4, + 23656 - 11905: 0x8CD5, + 23657 - 11905: 0x8CD6, + 23658 - 11905: 0x8CD7, + 23659 - 11905: 0x8CD8, + 23660 - 11905: 0x8CD9, + 23661 - 11905: 0x8CDA, + 23662 - 11905: 0xE5F8, + 23663 - 11905: 0xCDCD, + 23664 - 11905: 0x8CDB, + 23665 - 11905: 0xC9BD, + 23666 - 11905: 0x8CDC, + 23667 - 11905: 0x8CDD, + 23668 - 11905: 0x8CDE, + 23669 - 11905: 0x8CDF, + 23670 - 11905: 0x8CE0, + 23671 - 11905: 0x8CE1, + 23672 - 11905: 0x8CE2, + 23673 - 11905: 0xD2D9, + 23674 - 11905: 0xE1A8, + 23675 - 11905: 0x8CE3, + 23676 - 11905: 0x8CE4, + 23677 - 11905: 0x8CE5, + 23678 - 11905: 0x8CE6, + 23679 - 11905: 0xD3EC, + 23680 - 11905: 0x8CE7, + 23681 - 11905: 0xCBEA, + 23682 - 11905: 0xC6F1, + 23683 - 11905: 0x8CE8, + 23684 - 11905: 0x8CE9, + 23685 - 11905: 0x8CEA, + 23686 - 11905: 0x8CEB, + 23687 - 11905: 0x8CEC, + 23688 - 11905: 0xE1AC, + 23689 - 11905: 0x8CED, + 23690 - 11905: 0x8CEE, + 23691 - 11905: 0x8CEF, + 23692 - 11905: 0xE1A7, + 23693 - 11905: 0xE1A9, + 23694 - 11905: 0x8CF0, + 23695 - 11905: 0x8CF1, + 23696 - 11905: 0xE1AA, + 23697 - 11905: 0xE1AF, + 23698 - 11905: 0x8CF2, + 23699 - 11905: 0x8CF3, + 23700 - 11905: 0xB2ED, + 23701 - 11905: 0x8CF4, + 23702 - 11905: 0xE1AB, + 23703 - 11905: 0xB8DA, + 23704 - 11905: 0xE1AD, + 23705 - 11905: 0xE1AE, + 23706 - 11905: 0xE1B0, + 23707 - 11905: 0xB5BA, + 23708 - 11905: 0xE1B1, + 23709 - 11905: 0x8CF5, + 23710 - 11905: 0x8CF6, + 23711 - 11905: 0x8CF7, + 23712 - 11905: 0x8CF8, + 23713 - 11905: 0x8CF9, + 23714 - 11905: 0xE1B3, + 23715 - 11905: 0xE1B8, + 23716 - 11905: 0x8CFA, + 23717 - 11905: 0x8CFB, + 23718 - 11905: 0x8CFC, + 23719 - 11905: 0x8CFD, + 23720 - 11905: 0x8CFE, + 23721 - 11905: 0xD1D2, + 23722 - 11905: 0x8D40, + 23723 - 11905: 0xE1B6, + 23724 - 11905: 0xE1B5, + 23725 - 11905: 0xC1EB, + 23726 - 11905: 0x8D41, + 23727 - 11905: 0x8D42, + 23728 - 11905: 0x8D43, + 23729 - 11905: 0xE1B7, + 23730 - 11905: 0x8D44, + 23731 - 11905: 0xD4C0, + 23732 - 11905: 0x8D45, + 23733 - 11905: 0xE1B2, + 23734 - 11905: 0x8D46, + 23735 - 11905: 0xE1BA, + 23736 - 11905: 0xB0B6, + 23737 - 11905: 0x8D47, + 23738 - 11905: 0x8D48, + 23739 - 11905: 0x8D49, + 23740 - 11905: 0x8D4A, + 23741 - 11905: 0xE1B4, + 23742 - 11905: 0x8D4B, + 23743 - 11905: 0xBFF9, + 23744 - 11905: 0x8D4C, + 23745 - 11905: 0xE1B9, + 23746 - 11905: 0x8D4D, + 23747 - 11905: 0x8D4E, + 23748 - 11905: 0xE1BB, + 23749 - 11905: 0x8D4F, + 23750 - 11905: 0x8D50, + 23751 - 11905: 0x8D51, + 23752 - 11905: 0x8D52, + 23753 - 11905: 0x8D53, + 23754 - 11905: 0x8D54, + 23755 - 11905: 0xE1BE, + 23756 - 11905: 0x8D55, + 23757 - 11905: 0x8D56, + 23758 - 11905: 0x8D57, + 23759 - 11905: 0x8D58, + 23760 - 11905: 0x8D59, + 23761 - 11905: 0x8D5A, + 23762 - 11905: 0xE1BC, + 23763 - 11905: 0x8D5B, + 23764 - 11905: 0x8D5C, + 23765 - 11905: 0x8D5D, + 23766 - 11905: 0x8D5E, + 23767 - 11905: 0x8D5F, + 23768 - 11905: 0x8D60, + 23769 - 11905: 0xD6C5, + 23770 - 11905: 0x8D61, + 23771 - 11905: 0x8D62, + 23772 - 11905: 0x8D63, + 23773 - 11905: 0x8D64, + 23774 - 11905: 0x8D65, + 23775 - 11905: 0x8D66, + 23776 - 11905: 0x8D67, + 23777 - 11905: 0xCFBF, + 23778 - 11905: 0x8D68, + 23779 - 11905: 0x8D69, + 23780 - 11905: 0xE1BD, + 23781 - 11905: 0xE1BF, + 23782 - 11905: 0xC2CD, + 23783 - 11905: 0x8D6A, + 23784 - 11905: 0xB6EB, + 23785 - 11905: 0x8D6B, + 23786 - 11905: 0xD3F8, + 23787 - 11905: 0x8D6C, + 23788 - 11905: 0x8D6D, + 23789 - 11905: 0xC7CD, + 23790 - 11905: 0x8D6E, + 23791 - 11905: 0x8D6F, + 23792 - 11905: 0xB7E5, + 23793 - 11905: 0x8D70, + 23794 - 11905: 0x8D71, + 23795 - 11905: 0x8D72, + 23796 - 11905: 0x8D73, + 23797 - 11905: 0x8D74, + 23798 - 11905: 0x8D75, + 23799 - 11905: 0x8D76, + 23800 - 11905: 0x8D77, + 23801 - 11905: 0x8D78, + 23802 - 11905: 0x8D79, + 23803 - 11905: 0xBEFE, + 23804 - 11905: 0x8D7A, + 23805 - 11905: 0x8D7B, + 23806 - 11905: 0x8D7C, + 23807 - 11905: 0x8D7D, + 23808 - 11905: 0x8D7E, + 23809 - 11905: 0x8D80, + 23810 - 11905: 0xE1C0, + 23811 - 11905: 0xE1C1, + 23812 - 11905: 0x8D81, + 23813 - 11905: 0x8D82, + 23814 - 11905: 0xE1C7, + 23815 - 11905: 0xB3E7, + 23816 - 11905: 0x8D83, + 23817 - 11905: 0x8D84, + 23818 - 11905: 0x8D85, + 23819 - 11905: 0x8D86, + 23820 - 11905: 0x8D87, + 23821 - 11905: 0x8D88, + 23822 - 11905: 0xC6E9, + 23823 - 11905: 0x8D89, + 23824 - 11905: 0x8D8A, + 23825 - 11905: 0x8D8B, + 23826 - 11905: 0x8D8C, + 23827 - 11905: 0x8D8D, + 23828 - 11905: 0xB4DE, + 23829 - 11905: 0x8D8E, + 23830 - 11905: 0xD1C2, + 23831 - 11905: 0x8D8F, + 23832 - 11905: 0x8D90, + 23833 - 11905: 0x8D91, + 23834 - 11905: 0x8D92, + 23835 - 11905: 0xE1C8, + 23836 - 11905: 0x8D93, + 23837 - 11905: 0x8D94, + 23838 - 11905: 0xE1C6, + 23839 - 11905: 0x8D95, + 23840 - 11905: 0x8D96, + 23841 - 11905: 0x8D97, + 23842 - 11905: 0x8D98, + 23843 - 11905: 0x8D99, + 23844 - 11905: 0xE1C5, + 23845 - 11905: 0x8D9A, + 23846 - 11905: 0xE1C3, + 23847 - 11905: 0xE1C2, + 23848 - 11905: 0x8D9B, + 23849 - 11905: 0xB1C0, + 23850 - 11905: 0x8D9C, + 23851 - 11905: 0x8D9D, + 23852 - 11905: 0x8D9E, + 23853 - 11905: 0xD5B8, + 23854 - 11905: 0xE1C4, + 23855 - 11905: 0x8D9F, + 23856 - 11905: 0x8DA0, + 23857 - 11905: 0x8DA1, + 23858 - 11905: 0x8DA2, + 23859 - 11905: 0x8DA3, + 23860 - 11905: 0xE1CB, + 23861 - 11905: 0x8DA4, + 23862 - 11905: 0x8DA5, + 23863 - 11905: 0x8DA6, + 23864 - 11905: 0x8DA7, + 23865 - 11905: 0x8DA8, + 23866 - 11905: 0x8DA9, + 23867 - 11905: 0x8DAA, + 23868 - 11905: 0x8DAB, + 23869 - 11905: 0xE1CC, + 23870 - 11905: 0xE1CA, + 23871 - 11905: 0x8DAC, + 23872 - 11905: 0x8DAD, + 23873 - 11905: 0x8DAE, + 23874 - 11905: 0x8DAF, + 23875 - 11905: 0x8DB0, + 23876 - 11905: 0x8DB1, + 23877 - 11905: 0x8DB2, + 23878 - 11905: 0x8DB3, + 23879 - 11905: 0xEFFA, + 23880 - 11905: 0x8DB4, + 23881 - 11905: 0x8DB5, + 23882 - 11905: 0xE1D3, + 23883 - 11905: 0xE1D2, + 23884 - 11905: 0xC7B6, + 23885 - 11905: 0x8DB6, + 23886 - 11905: 0x8DB7, + 23887 - 11905: 0x8DB8, + 23888 - 11905: 0x8DB9, + 23889 - 11905: 0x8DBA, + 23890 - 11905: 0x8DBB, + 23891 - 11905: 0x8DBC, + 23892 - 11905: 0x8DBD, + 23893 - 11905: 0x8DBE, + 23894 - 11905: 0x8DBF, + 23895 - 11905: 0x8DC0, + 23896 - 11905: 0xE1C9, + 23897 - 11905: 0x8DC1, + 23898 - 11905: 0x8DC2, + 23899 - 11905: 0xE1CE, + 23900 - 11905: 0x8DC3, + 23901 - 11905: 0xE1D0, + 23902 - 11905: 0x8DC4, + 23903 - 11905: 0x8DC5, + 23904 - 11905: 0x8DC6, + 23905 - 11905: 0x8DC7, + 23906 - 11905: 0x8DC8, + 23907 - 11905: 0x8DC9, + 23908 - 11905: 0x8DCA, + 23909 - 11905: 0x8DCB, + 23910 - 11905: 0x8DCC, + 23911 - 11905: 0x8DCD, + 23912 - 11905: 0x8DCE, + 23913 - 11905: 0xE1D4, + 23914 - 11905: 0x8DCF, + 23915 - 11905: 0xE1D1, + 23916 - 11905: 0xE1CD, + 23917 - 11905: 0x8DD0, + 23918 - 11905: 0x8DD1, + 23919 - 11905: 0xE1CF, + 23920 - 11905: 0x8DD2, + 23921 - 11905: 0x8DD3, + 23922 - 11905: 0x8DD4, + 23923 - 11905: 0x8DD5, + 23924 - 11905: 0xE1D5, + 23925 - 11905: 0x8DD6, + 23926 - 11905: 0x8DD7, + 23927 - 11905: 0x8DD8, + 23928 - 11905: 0x8DD9, + 23929 - 11905: 0x8DDA, + 23930 - 11905: 0x8DDB, + 23931 - 11905: 0x8DDC, + 23932 - 11905: 0x8DDD, + 23933 - 11905: 0x8DDE, + 23934 - 11905: 0x8DDF, + 23935 - 11905: 0x8DE0, + 23936 - 11905: 0x8DE1, + 23937 - 11905: 0x8DE2, + 23938 - 11905: 0xE1D6, + 23939 - 11905: 0x8DE3, + 23940 - 11905: 0x8DE4, + 23941 - 11905: 0x8DE5, + 23942 - 11905: 0x8DE6, + 23943 - 11905: 0x8DE7, + 23944 - 11905: 0x8DE8, + 23945 - 11905: 0x8DE9, + 23946 - 11905: 0x8DEA, + 23947 - 11905: 0x8DEB, + 23948 - 11905: 0x8DEC, + 23949 - 11905: 0x8DED, + 23950 - 11905: 0x8DEE, + 23951 - 11905: 0x8DEF, + 23952 - 11905: 0x8DF0, + 23953 - 11905: 0x8DF1, + 23954 - 11905: 0x8DF2, + 23955 - 11905: 0x8DF3, + 23956 - 11905: 0x8DF4, + 23957 - 11905: 0x8DF5, + 23958 - 11905: 0x8DF6, + 23959 - 11905: 0x8DF7, + 23960 - 11905: 0x8DF8, + 23961 - 11905: 0xE1D7, + 23962 - 11905: 0x8DF9, + 23963 - 11905: 0x8DFA, + 23964 - 11905: 0x8DFB, + 23965 - 11905: 0xE1D8, + 23966 - 11905: 0x8DFC, + 23967 - 11905: 0x8DFD, + 23968 - 11905: 0x8DFE, + 23969 - 11905: 0x8E40, + 23970 - 11905: 0x8E41, + 23971 - 11905: 0x8E42, + 23972 - 11905: 0x8E43, + 23973 - 11905: 0x8E44, + 23974 - 11905: 0x8E45, + 23975 - 11905: 0x8E46, + 23976 - 11905: 0x8E47, + 23977 - 11905: 0x8E48, + 23978 - 11905: 0x8E49, + 23979 - 11905: 0x8E4A, + 23980 - 11905: 0x8E4B, + 23981 - 11905: 0x8E4C, + 23982 - 11905: 0x8E4D, + 23983 - 11905: 0x8E4E, + 23984 - 11905: 0x8E4F, + 23985 - 11905: 0x8E50, + 23986 - 11905: 0x8E51, + 23987 - 11905: 0x8E52, + 23988 - 11905: 0x8E53, + 23989 - 11905: 0x8E54, + 23990 - 11905: 0x8E55, + 23991 - 11905: 0xE1DA, + 23992 - 11905: 0x8E56, + 23993 - 11905: 0x8E57, + 23994 - 11905: 0x8E58, + 23995 - 11905: 0x8E59, + 23996 - 11905: 0x8E5A, + 23997 - 11905: 0x8E5B, + 23998 - 11905: 0x8E5C, + 23999 - 11905: 0x8E5D, + 24000 - 11905: 0x8E5E, + 24001 - 11905: 0x8E5F, + 24002 - 11905: 0x8E60, + 24003 - 11905: 0x8E61, + 24004 - 11905: 0x8E62, + 24005 - 11905: 0xE1DB, + 24006 - 11905: 0x8E63, + 24007 - 11905: 0x8E64, + 24008 - 11905: 0x8E65, + 24009 - 11905: 0x8E66, + 24010 - 11905: 0x8E67, + 24011 - 11905: 0x8E68, + 24012 - 11905: 0x8E69, + 24013 - 11905: 0xCEA1, + 24014 - 11905: 0x8E6A, + 24015 - 11905: 0x8E6B, + 24016 - 11905: 0x8E6C, + 24017 - 11905: 0x8E6D, + 24018 - 11905: 0x8E6E, + 24019 - 11905: 0x8E6F, + 24020 - 11905: 0x8E70, + 24021 - 11905: 0x8E71, + 24022 - 11905: 0x8E72, + 24023 - 11905: 0x8E73, + 24024 - 11905: 0x8E74, + 24025 - 11905: 0x8E75, + 24026 - 11905: 0x8E76, + 24027 - 11905: 0xE7DD, + 24028 - 11905: 0x8E77, + 24029 - 11905: 0xB4A8, + 24030 - 11905: 0xD6DD, + 24031 - 11905: 0x8E78, + 24032 - 11905: 0x8E79, + 24033 - 11905: 0xD1B2, + 24034 - 11905: 0xB3B2, + 24035 - 11905: 0x8E7A, + 24036 - 11905: 0x8E7B, + 24037 - 11905: 0xB9A4, + 24038 - 11905: 0xD7F3, + 24039 - 11905: 0xC7C9, + 24040 - 11905: 0xBEDE, + 24041 - 11905: 0xB9AE, + 24042 - 11905: 0x8E7C, + 24043 - 11905: 0xCED7, + 24044 - 11905: 0x8E7D, + 24045 - 11905: 0x8E7E, + 24046 - 11905: 0xB2EE, + 24047 - 11905: 0xDBCF, + 24048 - 11905: 0x8E80, + 24049 - 11905: 0xBCBA, + 24050 - 11905: 0xD2D1, + 24051 - 11905: 0xCBC8, + 24052 - 11905: 0xB0CD, + 24053 - 11905: 0x8E81, + 24054 - 11905: 0x8E82, + 24055 - 11905: 0xCFEF, + 24056 - 11905: 0x8E83, + 24057 - 11905: 0x8E84, + 24058 - 11905: 0x8E85, + 24059 - 11905: 0x8E86, + 24060 - 11905: 0x8E87, + 24061 - 11905: 0xD9E3, + 24062 - 11905: 0xBDED, + 24063 - 11905: 0x8E88, + 24064 - 11905: 0x8E89, + 24065 - 11905: 0xB1D2, + 24066 - 11905: 0xCAD0, + 24067 - 11905: 0xB2BC, + 24068 - 11905: 0x8E8A, + 24069 - 11905: 0xCBA7, + 24070 - 11905: 0xB7AB, + 24071 - 11905: 0x8E8B, + 24072 - 11905: 0xCAA6, + 24073 - 11905: 0x8E8C, + 24074 - 11905: 0x8E8D, + 24075 - 11905: 0x8E8E, + 24076 - 11905: 0xCFA3, + 24077 - 11905: 0x8E8F, + 24078 - 11905: 0x8E90, + 24079 - 11905: 0xE0F8, + 24080 - 11905: 0xD5CA, + 24081 - 11905: 0xE0FB, + 24082 - 11905: 0x8E91, + 24083 - 11905: 0x8E92, + 24084 - 11905: 0xE0FA, + 24085 - 11905: 0xC5C1, + 24086 - 11905: 0xCCFB, + 24087 - 11905: 0x8E93, + 24088 - 11905: 0xC1B1, + 24089 - 11905: 0xE0F9, + 24090 - 11905: 0xD6E3, + 24091 - 11905: 0xB2AF, + 24092 - 11905: 0xD6C4, + 24093 - 11905: 0xB5DB, + 24094 - 11905: 0x8E94, + 24095 - 11905: 0x8E95, + 24096 - 11905: 0x8E96, + 24097 - 11905: 0x8E97, + 24098 - 11905: 0x8E98, + 24099 - 11905: 0x8E99, + 24100 - 11905: 0x8E9A, + 24101 - 11905: 0x8E9B, + 24102 - 11905: 0xB4F8, + 24103 - 11905: 0xD6A1, + 24104 - 11905: 0x8E9C, + 24105 - 11905: 0x8E9D, + 24106 - 11905: 0x8E9E, + 24107 - 11905: 0x8E9F, + 24108 - 11905: 0x8EA0, + 24109 - 11905: 0xCFAF, + 24110 - 11905: 0xB0EF, + 24111 - 11905: 0x8EA1, + 24112 - 11905: 0x8EA2, + 24113 - 11905: 0xE0FC, + 24114 - 11905: 0x8EA3, + 24115 - 11905: 0x8EA4, + 24116 - 11905: 0x8EA5, + 24117 - 11905: 0x8EA6, + 24118 - 11905: 0x8EA7, + 24119 - 11905: 0xE1A1, + 24120 - 11905: 0xB3A3, + 24121 - 11905: 0x8EA8, + 24122 - 11905: 0x8EA9, + 24123 - 11905: 0xE0FD, + 24124 - 11905: 0xE0FE, + 24125 - 11905: 0xC3B1, + 24126 - 11905: 0x8EAA, + 24127 - 11905: 0x8EAB, + 24128 - 11905: 0x8EAC, + 24129 - 11905: 0x8EAD, + 24130 - 11905: 0xC3DD, + 24131 - 11905: 0x8EAE, + 24132 - 11905: 0xE1A2, + 24133 - 11905: 0xB7F9, + 24134 - 11905: 0x8EAF, + 24135 - 11905: 0x8EB0, + 24136 - 11905: 0x8EB1, + 24137 - 11905: 0x8EB2, + 24138 - 11905: 0x8EB3, + 24139 - 11905: 0x8EB4, + 24140 - 11905: 0xBBCF, + 24141 - 11905: 0x8EB5, + 24142 - 11905: 0x8EB6, + 24143 - 11905: 0x8EB7, + 24144 - 11905: 0x8EB8, + 24145 - 11905: 0x8EB9, + 24146 - 11905: 0x8EBA, + 24147 - 11905: 0x8EBB, + 24148 - 11905: 0xE1A3, + 24149 - 11905: 0xC4BB, + 24150 - 11905: 0x8EBC, + 24151 - 11905: 0x8EBD, + 24152 - 11905: 0x8EBE, + 24153 - 11905: 0x8EBF, + 24154 - 11905: 0x8EC0, + 24155 - 11905: 0xE1A4, + 24156 - 11905: 0x8EC1, + 24157 - 11905: 0x8EC2, + 24158 - 11905: 0xE1A5, + 24159 - 11905: 0x8EC3, + 24160 - 11905: 0x8EC4, + 24161 - 11905: 0xE1A6, + 24162 - 11905: 0xB4B1, + 24163 - 11905: 0x8EC5, + 24164 - 11905: 0x8EC6, + 24165 - 11905: 0x8EC7, + 24166 - 11905: 0x8EC8, + 24167 - 11905: 0x8EC9, + 24168 - 11905: 0x8ECA, + 24169 - 11905: 0x8ECB, + 24170 - 11905: 0x8ECC, + 24171 - 11905: 0x8ECD, + 24172 - 11905: 0x8ECE, + 24173 - 11905: 0x8ECF, + 24174 - 11905: 0x8ED0, + 24175 - 11905: 0x8ED1, + 24176 - 11905: 0x8ED2, + 24177 - 11905: 0x8ED3, + 24178 - 11905: 0xB8C9, + 24179 - 11905: 0xC6BD, + 24180 - 11905: 0xC4EA, + 24181 - 11905: 0x8ED4, + 24182 - 11905: 0xB2A2, + 24183 - 11905: 0x8ED5, + 24184 - 11905: 0xD0D2, + 24185 - 11905: 0x8ED6, + 24186 - 11905: 0xE7DB, + 24187 - 11905: 0xBBC3, + 24188 - 11905: 0xD3D7, + 24189 - 11905: 0xD3C4, + 24190 - 11905: 0x8ED7, + 24191 - 11905: 0xB9E3, + 24192 - 11905: 0xE2CF, + 24193 - 11905: 0x8ED8, + 24194 - 11905: 0x8ED9, + 24195 - 11905: 0x8EDA, + 24196 - 11905: 0xD7AF, + 24197 - 11905: 0x8EDB, + 24198 - 11905: 0xC7EC, + 24199 - 11905: 0xB1D3, + 24200 - 11905: 0x8EDC, + 24201 - 11905: 0x8EDD, + 24202 - 11905: 0xB4B2, + 24203 - 11905: 0xE2D1, + 24204 - 11905: 0x8EDE, + 24205 - 11905: 0x8EDF, + 24206 - 11905: 0x8EE0, + 24207 - 11905: 0xD0F2, + 24208 - 11905: 0xC2AE, + 24209 - 11905: 0xE2D0, + 24210 - 11905: 0x8EE1, + 24211 - 11905: 0xBFE2, + 24212 - 11905: 0xD3A6, + 24213 - 11905: 0xB5D7, + 24214 - 11905: 0xE2D2, + 24215 - 11905: 0xB5EA, + 24216 - 11905: 0x8EE2, + 24217 - 11905: 0xC3ED, + 24218 - 11905: 0xB8FD, + 24219 - 11905: 0x8EE3, + 24220 - 11905: 0xB8AE, + 24221 - 11905: 0x8EE4, + 24222 - 11905: 0xC5D3, + 24223 - 11905: 0xB7CF, + 24224 - 11905: 0xE2D4, + 24225 - 11905: 0x8EE5, + 24226 - 11905: 0x8EE6, + 24227 - 11905: 0x8EE7, + 24228 - 11905: 0x8EE8, + 24229 - 11905: 0xE2D3, + 24230 - 11905: 0xB6C8, + 24231 - 11905: 0xD7F9, + 24232 - 11905: 0x8EE9, + 24233 - 11905: 0x8EEA, + 24234 - 11905: 0x8EEB, + 24235 - 11905: 0x8EEC, + 24236 - 11905: 0x8EED, + 24237 - 11905: 0xCDA5, + 24238 - 11905: 0x8EEE, + 24239 - 11905: 0x8EEF, + 24240 - 11905: 0x8EF0, + 24241 - 11905: 0x8EF1, + 24242 - 11905: 0x8EF2, + 24243 - 11905: 0xE2D8, + 24244 - 11905: 0x8EF3, + 24245 - 11905: 0xE2D6, + 24246 - 11905: 0xCAFC, + 24247 - 11905: 0xBFB5, + 24248 - 11905: 0xD3B9, + 24249 - 11905: 0xE2D5, + 24250 - 11905: 0x8EF4, + 24251 - 11905: 0x8EF5, + 24252 - 11905: 0x8EF6, + 24253 - 11905: 0x8EF7, + 24254 - 11905: 0xE2D7, + 24255 - 11905: 0x8EF8, + 24256 - 11905: 0x8EF9, + 24257 - 11905: 0x8EFA, + 24258 - 11905: 0x8EFB, + 24259 - 11905: 0x8EFC, + 24260 - 11905: 0x8EFD, + 24261 - 11905: 0x8EFE, + 24262 - 11905: 0x8F40, + 24263 - 11905: 0x8F41, + 24264 - 11905: 0x8F42, + 24265 - 11905: 0xC1AE, + 24266 - 11905: 0xC0C8, + 24267 - 11905: 0x8F43, + 24268 - 11905: 0x8F44, + 24269 - 11905: 0x8F45, + 24270 - 11905: 0x8F46, + 24271 - 11905: 0x8F47, + 24272 - 11905: 0x8F48, + 24273 - 11905: 0xE2DB, + 24274 - 11905: 0xE2DA, + 24275 - 11905: 0xC0AA, + 24276 - 11905: 0x8F49, + 24277 - 11905: 0x8F4A, + 24278 - 11905: 0xC1CE, + 24279 - 11905: 0x8F4B, + 24280 - 11905: 0x8F4C, + 24281 - 11905: 0x8F4D, + 24282 - 11905: 0x8F4E, + 24283 - 11905: 0xE2DC, + 24284 - 11905: 0x8F4F, + 24285 - 11905: 0x8F50, + 24286 - 11905: 0x8F51, + 24287 - 11905: 0x8F52, + 24288 - 11905: 0x8F53, + 24289 - 11905: 0x8F54, + 24290 - 11905: 0x8F55, + 24291 - 11905: 0x8F56, + 24292 - 11905: 0x8F57, + 24293 - 11905: 0x8F58, + 24294 - 11905: 0x8F59, + 24295 - 11905: 0x8F5A, + 24296 - 11905: 0xE2DD, + 24297 - 11905: 0x8F5B, + 24298 - 11905: 0xE2DE, + 24299 - 11905: 0x8F5C, + 24300 - 11905: 0x8F5D, + 24301 - 11905: 0x8F5E, + 24302 - 11905: 0x8F5F, + 24303 - 11905: 0x8F60, + 24304 - 11905: 0x8F61, + 24305 - 11905: 0x8F62, + 24306 - 11905: 0x8F63, + 24307 - 11905: 0x8F64, + 24308 - 11905: 0xDBC8, + 24309 - 11905: 0x8F65, + 24310 - 11905: 0xD1D3, + 24311 - 11905: 0xCDA2, + 24312 - 11905: 0x8F66, + 24313 - 11905: 0x8F67, + 24314 - 11905: 0xBDA8, + 24315 - 11905: 0x8F68, + 24316 - 11905: 0x8F69, + 24317 - 11905: 0x8F6A, + 24318 - 11905: 0xDEC3, + 24319 - 11905: 0xD8A5, + 24320 - 11905: 0xBFAA, + 24321 - 11905: 0xDBCD, + 24322 - 11905: 0xD2EC, + 24323 - 11905: 0xC6FA, + 24324 - 11905: 0xC5AA, + 24325 - 11905: 0x8F6B, + 24326 - 11905: 0x8F6C, + 24327 - 11905: 0x8F6D, + 24328 - 11905: 0xDEC4, + 24329 - 11905: 0x8F6E, + 24330 - 11905: 0xB1D7, + 24331 - 11905: 0xDFAE, + 24332 - 11905: 0x8F6F, + 24333 - 11905: 0x8F70, + 24334 - 11905: 0x8F71, + 24335 - 11905: 0xCABD, + 24336 - 11905: 0x8F72, + 24337 - 11905: 0xDFB1, + 24338 - 11905: 0x8F73, + 24339 - 11905: 0xB9AD, + 24340 - 11905: 0x8F74, + 24341 - 11905: 0xD2FD, + 24342 - 11905: 0x8F75, + 24343 - 11905: 0xB8A5, + 24344 - 11905: 0xBAEB, + 24345 - 11905: 0x8F76, + 24346 - 11905: 0x8F77, + 24347 - 11905: 0xB3DA, + 24348 - 11905: 0x8F78, + 24349 - 11905: 0x8F79, + 24350 - 11905: 0x8F7A, + 24351 - 11905: 0xB5DC, + 24352 - 11905: 0xD5C5, + 24353 - 11905: 0x8F7B, + 24354 - 11905: 0x8F7C, + 24355 - 11905: 0x8F7D, + 24356 - 11905: 0x8F7E, + 24357 - 11905: 0xC3D6, + 24358 - 11905: 0xCFD2, + 24359 - 11905: 0xBBA1, + 24360 - 11905: 0x8F80, + 24361 - 11905: 0xE5F3, + 24362 - 11905: 0xE5F2, + 24363 - 11905: 0x8F81, + 24364 - 11905: 0x8F82, + 24365 - 11905: 0xE5F4, + 24366 - 11905: 0x8F83, + 24367 - 11905: 0xCDE4, + 24368 - 11905: 0x8F84, + 24369 - 11905: 0xC8F5, + 24370 - 11905: 0x8F85, + 24371 - 11905: 0x8F86, + 24372 - 11905: 0x8F87, + 24373 - 11905: 0x8F88, + 24374 - 11905: 0x8F89, + 24375 - 11905: 0x8F8A, + 24376 - 11905: 0x8F8B, + 24377 - 11905: 0xB5AF, + 24378 - 11905: 0xC7BF, + 24379 - 11905: 0x8F8C, + 24380 - 11905: 0xE5F6, + 24381 - 11905: 0x8F8D, + 24382 - 11905: 0x8F8E, + 24383 - 11905: 0x8F8F, + 24384 - 11905: 0xECB0, + 24385 - 11905: 0x8F90, + 24386 - 11905: 0x8F91, + 24387 - 11905: 0x8F92, + 24388 - 11905: 0x8F93, + 24389 - 11905: 0x8F94, + 24390 - 11905: 0x8F95, + 24391 - 11905: 0x8F96, + 24392 - 11905: 0x8F97, + 24393 - 11905: 0x8F98, + 24394 - 11905: 0x8F99, + 24395 - 11905: 0x8F9A, + 24396 - 11905: 0x8F9B, + 24397 - 11905: 0x8F9C, + 24398 - 11905: 0x8F9D, + 24399 - 11905: 0x8F9E, + 24400 - 11905: 0xE5E6, + 24401 - 11905: 0x8F9F, + 24402 - 11905: 0xB9E9, + 24403 - 11905: 0xB5B1, + 24404 - 11905: 0x8FA0, + 24405 - 11905: 0xC2BC, + 24406 - 11905: 0xE5E8, + 24407 - 11905: 0xE5E7, + 24408 - 11905: 0xE5E9, + 24409 - 11905: 0x8FA1, + 24410 - 11905: 0x8FA2, + 24411 - 11905: 0x8FA3, + 24412 - 11905: 0x8FA4, + 24413 - 11905: 0xD2CD, + 24414 - 11905: 0x8FA5, + 24415 - 11905: 0x8FA6, + 24416 - 11905: 0x8FA7, + 24417 - 11905: 0xE1EA, + 24418 - 11905: 0xD0CE, + 24419 - 11905: 0x8FA8, + 24420 - 11905: 0xCDAE, + 24421 - 11905: 0x8FA9, + 24422 - 11905: 0xD1E5, + 24423 - 11905: 0x8FAA, + 24424 - 11905: 0x8FAB, + 24425 - 11905: 0xB2CA, + 24426 - 11905: 0xB1EB, + 24427 - 11905: 0x8FAC, + 24428 - 11905: 0xB1F2, + 24429 - 11905: 0xC5ED, + 24430 - 11905: 0x8FAD, + 24431 - 11905: 0x8FAE, + 24432 - 11905: 0xD5C3, + 24433 - 11905: 0xD3B0, + 24434 - 11905: 0x8FAF, + 24435 - 11905: 0xE1DC, + 24436 - 11905: 0x8FB0, + 24437 - 11905: 0x8FB1, + 24438 - 11905: 0x8FB2, + 24439 - 11905: 0xE1DD, + 24440 - 11905: 0x8FB3, + 24441 - 11905: 0xD2DB, + 24442 - 11905: 0x8FB4, + 24443 - 11905: 0xB3B9, + 24444 - 11905: 0xB1CB, + 24445 - 11905: 0x8FB5, + 24446 - 11905: 0x8FB6, + 24447 - 11905: 0x8FB7, + 24448 - 11905: 0xCDF9, + 24449 - 11905: 0xD5F7, + 24450 - 11905: 0xE1DE, + 24451 - 11905: 0x8FB8, + 24452 - 11905: 0xBEB6, + 24453 - 11905: 0xB4FD, + 24454 - 11905: 0x8FB9, + 24455 - 11905: 0xE1DF, + 24456 - 11905: 0xBADC, + 24457 - 11905: 0xE1E0, + 24458 - 11905: 0xBBB2, + 24459 - 11905: 0xC2C9, + 24460 - 11905: 0xE1E1, + 24461 - 11905: 0x8FBA, + 24462 - 11905: 0x8FBB, + 24463 - 11905: 0x8FBC, + 24464 - 11905: 0xD0EC, + 24465 - 11905: 0x8FBD, + 24466 - 11905: 0xCDBD, + 24467 - 11905: 0x8FBE, + 24468 - 11905: 0x8FBF, + 24469 - 11905: 0xE1E2, + 24470 - 11905: 0x8FC0, + 24471 - 11905: 0xB5C3, + 24472 - 11905: 0xC5C7, + 24473 - 11905: 0xE1E3, + 24474 - 11905: 0x8FC1, + 24475 - 11905: 0x8FC2, + 24476 - 11905: 0xE1E4, + 24477 - 11905: 0x8FC3, + 24478 - 11905: 0x8FC4, + 24479 - 11905: 0x8FC5, + 24480 - 11905: 0x8FC6, + 24481 - 11905: 0xD3F9, + 24482 - 11905: 0x8FC7, + 24483 - 11905: 0x8FC8, + 24484 - 11905: 0x8FC9, + 24485 - 11905: 0x8FCA, + 24486 - 11905: 0x8FCB, + 24487 - 11905: 0x8FCC, + 24488 - 11905: 0xE1E5, + 24489 - 11905: 0x8FCD, + 24490 - 11905: 0xD1AD, + 24491 - 11905: 0x8FCE, + 24492 - 11905: 0x8FCF, + 24493 - 11905: 0xE1E6, + 24494 - 11905: 0xCEA2, + 24495 - 11905: 0x8FD0, + 24496 - 11905: 0x8FD1, + 24497 - 11905: 0x8FD2, + 24498 - 11905: 0x8FD3, + 24499 - 11905: 0x8FD4, + 24500 - 11905: 0x8FD5, + 24501 - 11905: 0xE1E7, + 24502 - 11905: 0x8FD6, + 24503 - 11905: 0xB5C2, + 24504 - 11905: 0x8FD7, + 24505 - 11905: 0x8FD8, + 24506 - 11905: 0x8FD9, + 24507 - 11905: 0x8FDA, + 24508 - 11905: 0xE1E8, + 24509 - 11905: 0xBBD5, + 24510 - 11905: 0x8FDB, + 24511 - 11905: 0x8FDC, + 24512 - 11905: 0x8FDD, + 24513 - 11905: 0x8FDE, + 24514 - 11905: 0x8FDF, + 24515 - 11905: 0xD0C4, + 24516 - 11905: 0xE2E0, + 24517 - 11905: 0xB1D8, + 24518 - 11905: 0xD2E4, + 24519 - 11905: 0x8FE0, + 24520 - 11905: 0x8FE1, + 24521 - 11905: 0xE2E1, + 24522 - 11905: 0x8FE2, + 24523 - 11905: 0x8FE3, + 24524 - 11905: 0xBCC9, + 24525 - 11905: 0xC8CC, + 24526 - 11905: 0x8FE4, + 24527 - 11905: 0xE2E3, + 24528 - 11905: 0xECFE, + 24529 - 11905: 0xECFD, + 24530 - 11905: 0xDFAF, + 24531 - 11905: 0x8FE5, + 24532 - 11905: 0x8FE6, + 24533 - 11905: 0x8FE7, + 24534 - 11905: 0xE2E2, + 24535 - 11905: 0xD6BE, + 24536 - 11905: 0xCDFC, + 24537 - 11905: 0xC3A6, + 24538 - 11905: 0x8FE8, + 24539 - 11905: 0x8FE9, + 24540 - 11905: 0x8FEA, + 24541 - 11905: 0xE3C3, + 24542 - 11905: 0x8FEB, + 24543 - 11905: 0x8FEC, + 24544 - 11905: 0xD6D2, + 24545 - 11905: 0xE2E7, + 24546 - 11905: 0x8FED, + 24547 - 11905: 0x8FEE, + 24548 - 11905: 0xE2E8, + 24549 - 11905: 0x8FEF, + 24550 - 11905: 0x8FF0, + 24551 - 11905: 0xD3C7, + 24552 - 11905: 0x8FF1, + 24553 - 11905: 0x8FF2, + 24554 - 11905: 0xE2EC, + 24555 - 11905: 0xBFEC, + 24556 - 11905: 0x8FF3, + 24557 - 11905: 0xE2ED, + 24558 - 11905: 0xE2E5, + 24559 - 11905: 0x8FF4, + 24560 - 11905: 0x8FF5, + 24561 - 11905: 0xB3C0, + 24562 - 11905: 0x8FF6, + 24563 - 11905: 0x8FF7, + 24564 - 11905: 0x8FF8, + 24565 - 11905: 0xC4EE, + 24566 - 11905: 0x8FF9, + 24567 - 11905: 0x8FFA, + 24568 - 11905: 0xE2EE, + 24569 - 11905: 0x8FFB, + 24570 - 11905: 0x8FFC, + 24571 - 11905: 0xD0C3, + 24572 - 11905: 0x8FFD, + 24573 - 11905: 0xBAF6, + 24574 - 11905: 0xE2E9, + 24575 - 11905: 0xB7DE, + 24576 - 11905: 0xBBB3, + 24577 - 11905: 0xCCAC, + 24578 - 11905: 0xCBCB, + 24579 - 11905: 0xE2E4, + 24580 - 11905: 0xE2E6, + 24581 - 11905: 0xE2EA, + 24582 - 11905: 0xE2EB, + 24583 - 11905: 0x8FFE, + 24584 - 11905: 0x9040, + 24585 - 11905: 0x9041, + 24586 - 11905: 0xE2F7, + 24587 - 11905: 0x9042, + 24588 - 11905: 0x9043, + 24589 - 11905: 0xE2F4, + 24590 - 11905: 0xD4F5, + 24591 - 11905: 0xE2F3, + 24592 - 11905: 0x9044, + 24593 - 11905: 0x9045, + 24594 - 11905: 0xC5AD, + 24595 - 11905: 0x9046, + 24596 - 11905: 0xD5FA, + 24597 - 11905: 0xC5C2, + 24598 - 11905: 0xB2C0, + 24599 - 11905: 0x9047, + 24600 - 11905: 0x9048, + 24601 - 11905: 0xE2EF, + 24602 - 11905: 0x9049, + 24603 - 11905: 0xE2F2, + 24604 - 11905: 0xC1AF, + 24605 - 11905: 0xCBBC, + 24606 - 11905: 0x904A, + 24607 - 11905: 0x904B, + 24608 - 11905: 0xB5A1, + 24609 - 11905: 0xE2F9, + 24610 - 11905: 0x904C, + 24611 - 11905: 0x904D, + 24612 - 11905: 0x904E, + 24613 - 11905: 0xBCB1, + 24614 - 11905: 0xE2F1, + 24615 - 11905: 0xD0D4, + 24616 - 11905: 0xD4B9, + 24617 - 11905: 0xE2F5, + 24618 - 11905: 0xB9D6, + 24619 - 11905: 0xE2F6, + 24620 - 11905: 0x904F, + 24621 - 11905: 0x9050, + 24622 - 11905: 0x9051, + 24623 - 11905: 0xC7D3, + 24624 - 11905: 0x9052, + 24625 - 11905: 0x9053, + 24626 - 11905: 0x9054, + 24627 - 11905: 0x9055, + 24628 - 11905: 0x9056, + 24629 - 11905: 0xE2F0, + 24630 - 11905: 0x9057, + 24631 - 11905: 0x9058, + 24632 - 11905: 0x9059, + 24633 - 11905: 0x905A, + 24634 - 11905: 0x905B, + 24635 - 11905: 0xD7DC, + 24636 - 11905: 0xEDA1, + 24637 - 11905: 0x905C, + 24638 - 11905: 0x905D, + 24639 - 11905: 0xE2F8, + 24640 - 11905: 0x905E, + 24641 - 11905: 0xEDA5, + 24642 - 11905: 0xE2FE, + 24643 - 11905: 0xCAD1, + 24644 - 11905: 0x905F, + 24645 - 11905: 0x9060, + 24646 - 11905: 0x9061, + 24647 - 11905: 0x9062, + 24648 - 11905: 0x9063, + 24649 - 11905: 0x9064, + 24650 - 11905: 0x9065, + 24651 - 11905: 0xC1B5, + 24652 - 11905: 0x9066, + 24653 - 11905: 0xBBD0, + 24654 - 11905: 0x9067, + 24655 - 11905: 0x9068, + 24656 - 11905: 0xBFD6, + 24657 - 11905: 0x9069, + 24658 - 11905: 0xBAE3, + 24659 - 11905: 0x906A, + 24660 - 11905: 0x906B, + 24661 - 11905: 0xCBA1, + 24662 - 11905: 0x906C, + 24663 - 11905: 0x906D, + 24664 - 11905: 0x906E, + 24665 - 11905: 0xEDA6, + 24666 - 11905: 0xEDA3, + 24667 - 11905: 0x906F, + 24668 - 11905: 0x9070, + 24669 - 11905: 0xEDA2, + 24670 - 11905: 0x9071, + 24671 - 11905: 0x9072, + 24672 - 11905: 0x9073, + 24673 - 11905: 0x9074, + 24674 - 11905: 0xBBD6, + 24675 - 11905: 0xEDA7, + 24676 - 11905: 0xD0F4, + 24677 - 11905: 0x9075, + 24678 - 11905: 0x9076, + 24679 - 11905: 0xEDA4, + 24680 - 11905: 0xBADE, + 24681 - 11905: 0xB6F7, + 24682 - 11905: 0xE3A1, + 24683 - 11905: 0xB6B2, + 24684 - 11905: 0xCCF1, + 24685 - 11905: 0xB9A7, + 24686 - 11905: 0x9077, + 24687 - 11905: 0xCFA2, + 24688 - 11905: 0xC7A1, + 24689 - 11905: 0x9078, + 24690 - 11905: 0x9079, + 24691 - 11905: 0xBFD2, + 24692 - 11905: 0x907A, + 24693 - 11905: 0x907B, + 24694 - 11905: 0xB6F1, + 24695 - 11905: 0x907C, + 24696 - 11905: 0xE2FA, + 24697 - 11905: 0xE2FB, + 24698 - 11905: 0xE2FD, + 24699 - 11905: 0xE2FC, + 24700 - 11905: 0xC4D5, + 24701 - 11905: 0xE3A2, + 24702 - 11905: 0x907D, + 24703 - 11905: 0xD3C1, + 24704 - 11905: 0x907E, + 24705 - 11905: 0x9080, + 24706 - 11905: 0x9081, + 24707 - 11905: 0xE3A7, + 24708 - 11905: 0xC7C4, + 24709 - 11905: 0x9082, + 24710 - 11905: 0x9083, + 24711 - 11905: 0x9084, + 24712 - 11905: 0x9085, + 24713 - 11905: 0xCFA4, + 24714 - 11905: 0x9086, + 24715 - 11905: 0x9087, + 24716 - 11905: 0xE3A9, + 24717 - 11905: 0xBAB7, + 24718 - 11905: 0x9088, + 24719 - 11905: 0x9089, + 24720 - 11905: 0x908A, + 24721 - 11905: 0x908B, + 24722 - 11905: 0xE3A8, + 24723 - 11905: 0x908C, + 24724 - 11905: 0xBBDA, + 24725 - 11905: 0x908D, + 24726 - 11905: 0xE3A3, + 24727 - 11905: 0x908E, + 24728 - 11905: 0x908F, + 24729 - 11905: 0x9090, + 24730 - 11905: 0xE3A4, + 24731 - 11905: 0xE3AA, + 24732 - 11905: 0x9091, + 24733 - 11905: 0xE3A6, + 24734 - 11905: 0x9092, + 24735 - 11905: 0xCEF2, + 24736 - 11905: 0xD3C6, + 24737 - 11905: 0x9093, + 24738 - 11905: 0x9094, + 24739 - 11905: 0xBBBC, + 24740 - 11905: 0x9095, + 24741 - 11905: 0x9096, + 24742 - 11905: 0xD4C3, + 24743 - 11905: 0x9097, + 24744 - 11905: 0xC4FA, + 24745 - 11905: 0x9098, + 24746 - 11905: 0x9099, + 24747 - 11905: 0xEDA8, + 24748 - 11905: 0xD0FC, + 24749 - 11905: 0xE3A5, + 24750 - 11905: 0x909A, + 24751 - 11905: 0xC3F5, + 24752 - 11905: 0x909B, + 24753 - 11905: 0xE3AD, + 24754 - 11905: 0xB1AF, + 24755 - 11905: 0x909C, + 24756 - 11905: 0xE3B2, + 24757 - 11905: 0x909D, + 24758 - 11905: 0x909E, + 24759 - 11905: 0x909F, + 24760 - 11905: 0xBCC2, + 24761 - 11905: 0x90A0, + 24762 - 11905: 0x90A1, + 24763 - 11905: 0xE3AC, + 24764 - 11905: 0xB5BF, + 24765 - 11905: 0x90A2, + 24766 - 11905: 0x90A3, + 24767 - 11905: 0x90A4, + 24768 - 11905: 0x90A5, + 24769 - 11905: 0x90A6, + 24770 - 11905: 0x90A7, + 24771 - 11905: 0x90A8, + 24772 - 11905: 0x90A9, + 24773 - 11905: 0xC7E9, + 24774 - 11905: 0xE3B0, + 24775 - 11905: 0x90AA, + 24776 - 11905: 0x90AB, + 24777 - 11905: 0x90AC, + 24778 - 11905: 0xBEAA, + 24779 - 11905: 0xCDEF, + 24780 - 11905: 0x90AD, + 24781 - 11905: 0x90AE, + 24782 - 11905: 0x90AF, + 24783 - 11905: 0x90B0, + 24784 - 11905: 0x90B1, + 24785 - 11905: 0xBBF3, + 24786 - 11905: 0x90B2, + 24787 - 11905: 0x90B3, + 24788 - 11905: 0x90B4, + 24789 - 11905: 0xCCE8, + 24790 - 11905: 0x90B5, + 24791 - 11905: 0x90B6, + 24792 - 11905: 0xE3AF, + 24793 - 11905: 0x90B7, + 24794 - 11905: 0xE3B1, + 24795 - 11905: 0x90B8, + 24796 - 11905: 0xCFA7, + 24797 - 11905: 0xE3AE, + 24798 - 11905: 0x90B9, + 24799 - 11905: 0xCEA9, + 24800 - 11905: 0xBBDD, + 24801 - 11905: 0x90BA, + 24802 - 11905: 0x90BB, + 24803 - 11905: 0x90BC, + 24804 - 11905: 0x90BD, + 24805 - 11905: 0x90BE, + 24806 - 11905: 0xB5EB, + 24807 - 11905: 0xBEE5, + 24808 - 11905: 0xB2D2, + 24809 - 11905: 0xB3CD, + 24810 - 11905: 0x90BF, + 24811 - 11905: 0xB1B9, + 24812 - 11905: 0xE3AB, + 24813 - 11905: 0xB2D1, + 24814 - 11905: 0xB5AC, + 24815 - 11905: 0xB9DF, + 24816 - 11905: 0xB6E8, + 24817 - 11905: 0x90C0, + 24818 - 11905: 0x90C1, + 24819 - 11905: 0xCFEB, + 24820 - 11905: 0xE3B7, + 24821 - 11905: 0x90C2, + 24822 - 11905: 0xBBCC, + 24823 - 11905: 0x90C3, + 24824 - 11905: 0x90C4, + 24825 - 11905: 0xC8C7, + 24826 - 11905: 0xD0CA, + 24827 - 11905: 0x90C5, + 24828 - 11905: 0x90C6, + 24829 - 11905: 0x90C7, + 24830 - 11905: 0x90C8, + 24831 - 11905: 0x90C9, + 24832 - 11905: 0xE3B8, + 24833 - 11905: 0xB3EE, + 24834 - 11905: 0x90CA, + 24835 - 11905: 0x90CB, + 24836 - 11905: 0x90CC, + 24837 - 11905: 0x90CD, + 24838 - 11905: 0xEDA9, + 24839 - 11905: 0x90CE, + 24840 - 11905: 0xD3FA, + 24841 - 11905: 0xD3E4, + 24842 - 11905: 0x90CF, + 24843 - 11905: 0x90D0, + 24844 - 11905: 0x90D1, + 24845 - 11905: 0xEDAA, + 24846 - 11905: 0xE3B9, + 24847 - 11905: 0xD2E2, + 24848 - 11905: 0x90D2, + 24849 - 11905: 0x90D3, + 24850 - 11905: 0x90D4, + 24851 - 11905: 0x90D5, + 24852 - 11905: 0x90D6, + 24853 - 11905: 0xE3B5, + 24854 - 11905: 0x90D7, + 24855 - 11905: 0x90D8, + 24856 - 11905: 0x90D9, + 24857 - 11905: 0x90DA, + 24858 - 11905: 0xD3DE, + 24859 - 11905: 0x90DB, + 24860 - 11905: 0x90DC, + 24861 - 11905: 0x90DD, + 24862 - 11905: 0x90DE, + 24863 - 11905: 0xB8D0, + 24864 - 11905: 0xE3B3, + 24865 - 11905: 0x90DF, + 24866 - 11905: 0x90E0, + 24867 - 11905: 0xE3B6, + 24868 - 11905: 0xB7DF, + 24869 - 11905: 0x90E1, + 24870 - 11905: 0xE3B4, + 24871 - 11905: 0xC0A2, + 24872 - 11905: 0x90E2, + 24873 - 11905: 0x90E3, + 24874 - 11905: 0x90E4, + 24875 - 11905: 0xE3BA, + 24876 - 11905: 0x90E5, + 24877 - 11905: 0x90E6, + 24878 - 11905: 0x90E7, + 24879 - 11905: 0x90E8, + 24880 - 11905: 0x90E9, + 24881 - 11905: 0x90EA, + 24882 - 11905: 0x90EB, + 24883 - 11905: 0x90EC, + 24884 - 11905: 0x90ED, + 24885 - 11905: 0x90EE, + 24886 - 11905: 0x90EF, + 24887 - 11905: 0x90F0, + 24888 - 11905: 0x90F1, + 24889 - 11905: 0x90F2, + 24890 - 11905: 0x90F3, + 24891 - 11905: 0x90F4, + 24892 - 11905: 0x90F5, + 24893 - 11905: 0x90F6, + 24894 - 11905: 0x90F7, + 24895 - 11905: 0xD4B8, + 24896 - 11905: 0x90F8, + 24897 - 11905: 0x90F9, + 24898 - 11905: 0x90FA, + 24899 - 11905: 0x90FB, + 24900 - 11905: 0x90FC, + 24901 - 11905: 0x90FD, + 24902 - 11905: 0x90FE, + 24903 - 11905: 0x9140, + 24904 - 11905: 0xB4C8, + 24905 - 11905: 0x9141, + 24906 - 11905: 0xE3BB, + 24907 - 11905: 0x9142, + 24908 - 11905: 0xBBC5, + 24909 - 11905: 0x9143, + 24910 - 11905: 0xC9F7, + 24911 - 11905: 0x9144, + 24912 - 11905: 0x9145, + 24913 - 11905: 0xC9E5, + 24914 - 11905: 0x9146, + 24915 - 11905: 0x9147, + 24916 - 11905: 0x9148, + 24917 - 11905: 0xC4BD, + 24918 - 11905: 0x9149, + 24919 - 11905: 0x914A, + 24920 - 11905: 0x914B, + 24921 - 11905: 0x914C, + 24922 - 11905: 0x914D, + 24923 - 11905: 0x914E, + 24924 - 11905: 0x914F, + 24925 - 11905: 0xEDAB, + 24926 - 11905: 0x9150, + 24927 - 11905: 0x9151, + 24928 - 11905: 0x9152, + 24929 - 11905: 0x9153, + 24930 - 11905: 0xC2FD, + 24931 - 11905: 0x9154, + 24932 - 11905: 0x9155, + 24933 - 11905: 0x9156, + 24934 - 11905: 0x9157, + 24935 - 11905: 0xBBDB, + 24936 - 11905: 0xBFAE, + 24937 - 11905: 0x9158, + 24938 - 11905: 0x9159, + 24939 - 11905: 0x915A, + 24940 - 11905: 0x915B, + 24941 - 11905: 0x915C, + 24942 - 11905: 0x915D, + 24943 - 11905: 0x915E, + 24944 - 11905: 0xCEBF, + 24945 - 11905: 0x915F, + 24946 - 11905: 0x9160, + 24947 - 11905: 0x9161, + 24948 - 11905: 0x9162, + 24949 - 11905: 0xE3BC, + 24950 - 11905: 0x9163, + 24951 - 11905: 0xBFB6, + 24952 - 11905: 0x9164, + 24953 - 11905: 0x9165, + 24954 - 11905: 0x9166, + 24955 - 11905: 0x9167, + 24956 - 11905: 0x9168, + 24957 - 11905: 0x9169, + 24958 - 11905: 0x916A, + 24959 - 11905: 0x916B, + 24960 - 11905: 0x916C, + 24961 - 11905: 0x916D, + 24962 - 11905: 0x916E, + 24963 - 11905: 0x916F, + 24964 - 11905: 0x9170, + 24965 - 11905: 0x9171, + 24966 - 11905: 0x9172, + 24967 - 11905: 0x9173, + 24968 - 11905: 0x9174, + 24969 - 11905: 0x9175, + 24970 - 11905: 0x9176, + 24971 - 11905: 0xB1EF, + 24972 - 11905: 0x9177, + 24973 - 11905: 0x9178, + 24974 - 11905: 0xD4F7, + 24975 - 11905: 0x9179, + 24976 - 11905: 0x917A, + 24977 - 11905: 0x917B, + 24978 - 11905: 0x917C, + 24979 - 11905: 0x917D, + 24980 - 11905: 0xE3BE, + 24981 - 11905: 0x917E, + 24982 - 11905: 0x9180, + 24983 - 11905: 0x9181, + 24984 - 11905: 0x9182, + 24985 - 11905: 0x9183, + 24986 - 11905: 0x9184, + 24987 - 11905: 0x9185, + 24988 - 11905: 0x9186, + 24989 - 11905: 0xEDAD, + 24990 - 11905: 0x9187, + 24991 - 11905: 0x9188, + 24992 - 11905: 0x9189, + 24993 - 11905: 0x918A, + 24994 - 11905: 0x918B, + 24995 - 11905: 0x918C, + 24996 - 11905: 0x918D, + 24997 - 11905: 0x918E, + 24998 - 11905: 0x918F, + 24999 - 11905: 0xE3BF, + 25000 - 11905: 0xBAA9, + 25001 - 11905: 0xEDAC, + 25002 - 11905: 0x9190, + 25003 - 11905: 0x9191, + 25004 - 11905: 0xE3BD, + 25005 - 11905: 0x9192, + 25006 - 11905: 0x9193, + 25007 - 11905: 0x9194, + 25008 - 11905: 0x9195, + 25009 - 11905: 0x9196, + 25010 - 11905: 0x9197, + 25011 - 11905: 0x9198, + 25012 - 11905: 0x9199, + 25013 - 11905: 0x919A, + 25014 - 11905: 0x919B, + 25015 - 11905: 0xE3C0, + 25016 - 11905: 0x919C, + 25017 - 11905: 0x919D, + 25018 - 11905: 0x919E, + 25019 - 11905: 0x919F, + 25020 - 11905: 0x91A0, + 25021 - 11905: 0x91A1, + 25022 - 11905: 0xBAB6, + 25023 - 11905: 0x91A2, + 25024 - 11905: 0x91A3, + 25025 - 11905: 0x91A4, + 25026 - 11905: 0xB6AE, + 25027 - 11905: 0x91A5, + 25028 - 11905: 0x91A6, + 25029 - 11905: 0x91A7, + 25030 - 11905: 0x91A8, + 25031 - 11905: 0x91A9, + 25032 - 11905: 0xD0B8, + 25033 - 11905: 0x91AA, + 25034 - 11905: 0xB0C3, + 25035 - 11905: 0xEDAE, + 25036 - 11905: 0x91AB, + 25037 - 11905: 0x91AC, + 25038 - 11905: 0x91AD, + 25039 - 11905: 0x91AE, + 25040 - 11905: 0x91AF, + 25041 - 11905: 0xEDAF, + 25042 - 11905: 0xC0C1, + 25043 - 11905: 0x91B0, + 25044 - 11905: 0xE3C1, + 25045 - 11905: 0x91B1, + 25046 - 11905: 0x91B2, + 25047 - 11905: 0x91B3, + 25048 - 11905: 0x91B4, + 25049 - 11905: 0x91B5, + 25050 - 11905: 0x91B6, + 25051 - 11905: 0x91B7, + 25052 - 11905: 0x91B8, + 25053 - 11905: 0x91B9, + 25054 - 11905: 0x91BA, + 25055 - 11905: 0x91BB, + 25056 - 11905: 0x91BC, + 25057 - 11905: 0x91BD, + 25058 - 11905: 0x91BE, + 25059 - 11905: 0x91BF, + 25060 - 11905: 0x91C0, + 25061 - 11905: 0x91C1, + 25062 - 11905: 0xC5B3, + 25063 - 11905: 0x91C2, + 25064 - 11905: 0x91C3, + 25065 - 11905: 0x91C4, + 25066 - 11905: 0x91C5, + 25067 - 11905: 0x91C6, + 25068 - 11905: 0x91C7, + 25069 - 11905: 0x91C8, + 25070 - 11905: 0x91C9, + 25071 - 11905: 0x91CA, + 25072 - 11905: 0x91CB, + 25073 - 11905: 0x91CC, + 25074 - 11905: 0x91CD, + 25075 - 11905: 0x91CE, + 25076 - 11905: 0x91CF, + 25077 - 11905: 0xE3C2, + 25078 - 11905: 0x91D0, + 25079 - 11905: 0x91D1, + 25080 - 11905: 0x91D2, + 25081 - 11905: 0x91D3, + 25082 - 11905: 0x91D4, + 25083 - 11905: 0x91D5, + 25084 - 11905: 0x91D6, + 25085 - 11905: 0x91D7, + 25086 - 11905: 0x91D8, + 25087 - 11905: 0xDCB2, + 25088 - 11905: 0x91D9, + 25089 - 11905: 0x91DA, + 25090 - 11905: 0x91DB, + 25091 - 11905: 0x91DC, + 25092 - 11905: 0x91DD, + 25093 - 11905: 0x91DE, + 25094 - 11905: 0xEDB0, + 25095 - 11905: 0x91DF, + 25096 - 11905: 0xB8EA, + 25097 - 11905: 0x91E0, + 25098 - 11905: 0xCEEC, + 25099 - 11905: 0xEAA7, + 25100 - 11905: 0xD0E7, + 25101 - 11905: 0xCAF9, + 25102 - 11905: 0xC8D6, + 25103 - 11905: 0xCFB7, + 25104 - 11905: 0xB3C9, + 25105 - 11905: 0xCED2, + 25106 - 11905: 0xBDE4, + 25107 - 11905: 0x91E1, + 25108 - 11905: 0x91E2, + 25109 - 11905: 0xE3DE, + 25110 - 11905: 0xBBF2, + 25111 - 11905: 0xEAA8, + 25112 - 11905: 0xD5BD, + 25113 - 11905: 0x91E3, + 25114 - 11905: 0xC6DD, + 25115 - 11905: 0xEAA9, + 25116 - 11905: 0x91E4, + 25117 - 11905: 0x91E5, + 25118 - 11905: 0x91E6, + 25119 - 11905: 0xEAAA, + 25120 - 11905: 0x91E7, + 25121 - 11905: 0xEAAC, + 25122 - 11905: 0xEAAB, + 25123 - 11905: 0x91E8, + 25124 - 11905: 0xEAAE, + 25125 - 11905: 0xEAAD, + 25126 - 11905: 0x91E9, + 25127 - 11905: 0x91EA, + 25128 - 11905: 0x91EB, + 25129 - 11905: 0x91EC, + 25130 - 11905: 0xBDD8, + 25131 - 11905: 0x91ED, + 25132 - 11905: 0xEAAF, + 25133 - 11905: 0x91EE, + 25134 - 11905: 0xC2BE, + 25135 - 11905: 0x91EF, + 25136 - 11905: 0x91F0, + 25137 - 11905: 0x91F1, + 25138 - 11905: 0x91F2, + 25139 - 11905: 0xB4C1, + 25140 - 11905: 0xB4F7, + 25141 - 11905: 0x91F3, + 25142 - 11905: 0x91F4, + 25143 - 11905: 0xBBA7, + 25144 - 11905: 0x91F5, + 25145 - 11905: 0x91F6, + 25146 - 11905: 0x91F7, + 25147 - 11905: 0x91F8, + 25148 - 11905: 0x91F9, + 25149 - 11905: 0xECE6, + 25150 - 11905: 0xECE5, + 25151 - 11905: 0xB7BF, + 25152 - 11905: 0xCBF9, + 25153 - 11905: 0xB1E2, + 25154 - 11905: 0x91FA, + 25155 - 11905: 0xECE7, + 25156 - 11905: 0x91FB, + 25157 - 11905: 0x91FC, + 25158 - 11905: 0x91FD, + 25159 - 11905: 0xC9C8, + 25160 - 11905: 0xECE8, + 25161 - 11905: 0xECE9, + 25162 - 11905: 0x91FE, + 25163 - 11905: 0xCAD6, + 25164 - 11905: 0xDED0, + 25165 - 11905: 0xB2C5, + 25166 - 11905: 0xD4FA, + 25167 - 11905: 0x9240, + 25168 - 11905: 0x9241, + 25169 - 11905: 0xC6CB, + 25170 - 11905: 0xB0C7, + 25171 - 11905: 0xB4F2, + 25172 - 11905: 0xC8D3, + 25173 - 11905: 0x9242, + 25174 - 11905: 0x9243, + 25175 - 11905: 0x9244, + 25176 - 11905: 0xCDD0, + 25177 - 11905: 0x9245, + 25178 - 11905: 0x9246, + 25179 - 11905: 0xBFB8, + 25180 - 11905: 0x9247, + 25181 - 11905: 0x9248, + 25182 - 11905: 0x9249, + 25183 - 11905: 0x924A, + 25184 - 11905: 0x924B, + 25185 - 11905: 0x924C, + 25186 - 11905: 0x924D, + 25187 - 11905: 0xBFDB, + 25188 - 11905: 0x924E, + 25189 - 11905: 0x924F, + 25190 - 11905: 0xC7A4, + 25191 - 11905: 0xD6B4, + 25192 - 11905: 0x9250, + 25193 - 11905: 0xC0A9, + 25194 - 11905: 0xDED1, + 25195 - 11905: 0xC9A8, + 25196 - 11905: 0xD1EF, + 25197 - 11905: 0xC5A4, + 25198 - 11905: 0xB0E7, + 25199 - 11905: 0xB3B6, + 25200 - 11905: 0xC8C5, + 25201 - 11905: 0x9251, + 25202 - 11905: 0x9252, + 25203 - 11905: 0xB0E2, + 25204 - 11905: 0x9253, + 25205 - 11905: 0x9254, + 25206 - 11905: 0xB7F6, + 25207 - 11905: 0x9255, + 25208 - 11905: 0x9256, + 25209 - 11905: 0xC5FA, + 25210 - 11905: 0x9257, + 25211 - 11905: 0x9258, + 25212 - 11905: 0xB6F3, + 25213 - 11905: 0x9259, + 25214 - 11905: 0xD5D2, + 25215 - 11905: 0xB3D0, + 25216 - 11905: 0xBCBC, + 25217 - 11905: 0x925A, + 25218 - 11905: 0x925B, + 25219 - 11905: 0x925C, + 25220 - 11905: 0xB3AD, + 25221 - 11905: 0x925D, + 25222 - 11905: 0x925E, + 25223 - 11905: 0x925F, + 25224 - 11905: 0x9260, + 25225 - 11905: 0xBEF1, + 25226 - 11905: 0xB0D1, + 25227 - 11905: 0x9261, + 25228 - 11905: 0x9262, + 25229 - 11905: 0x9263, + 25230 - 11905: 0x9264, + 25231 - 11905: 0x9265, + 25232 - 11905: 0x9266, + 25233 - 11905: 0xD2D6, + 25234 - 11905: 0xCAE3, + 25235 - 11905: 0xD7A5, + 25236 - 11905: 0x9267, + 25237 - 11905: 0xCDB6, + 25238 - 11905: 0xB6B6, + 25239 - 11905: 0xBFB9, + 25240 - 11905: 0xD5DB, + 25241 - 11905: 0x9268, + 25242 - 11905: 0xB8A7, + 25243 - 11905: 0xC5D7, + 25244 - 11905: 0x9269, + 25245 - 11905: 0x926A, + 25246 - 11905: 0x926B, + 25247 - 11905: 0xDED2, + 25248 - 11905: 0xBFD9, + 25249 - 11905: 0xC2D5, + 25250 - 11905: 0xC7C0, + 25251 - 11905: 0x926C, + 25252 - 11905: 0xBBA4, + 25253 - 11905: 0xB1A8, + 25254 - 11905: 0x926D, + 25255 - 11905: 0x926E, + 25256 - 11905: 0xC5EA, + 25257 - 11905: 0x926F, + 25258 - 11905: 0x9270, + 25259 - 11905: 0xC5FB, + 25260 - 11905: 0xCCA7, + 25261 - 11905: 0x9271, + 25262 - 11905: 0x9272, + 25263 - 11905: 0x9273, + 25264 - 11905: 0x9274, + 25265 - 11905: 0xB1A7, + 25266 - 11905: 0x9275, + 25267 - 11905: 0x9276, + 25268 - 11905: 0x9277, + 25269 - 11905: 0xB5D6, + 25270 - 11905: 0x9278, + 25271 - 11905: 0x9279, + 25272 - 11905: 0x927A, + 25273 - 11905: 0xC4A8, + 25274 - 11905: 0x927B, + 25275 - 11905: 0xDED3, + 25276 - 11905: 0xD1BA, + 25277 - 11905: 0xB3E9, + 25278 - 11905: 0x927C, + 25279 - 11905: 0xC3F2, + 25280 - 11905: 0x927D, + 25281 - 11905: 0x927E, + 25282 - 11905: 0xB7F7, + 25283 - 11905: 0x9280, + 25284 - 11905: 0xD6F4, + 25285 - 11905: 0xB5A3, + 25286 - 11905: 0xB2F0, + 25287 - 11905: 0xC4B4, + 25288 - 11905: 0xC4E9, + 25289 - 11905: 0xC0AD, + 25290 - 11905: 0xDED4, + 25291 - 11905: 0x9281, + 25292 - 11905: 0xB0E8, + 25293 - 11905: 0xC5C4, + 25294 - 11905: 0xC1E0, + 25295 - 11905: 0x9282, + 25296 - 11905: 0xB9D5, + 25297 - 11905: 0x9283, + 25298 - 11905: 0xBEDC, + 25299 - 11905: 0xCDD8, + 25300 - 11905: 0xB0CE, + 25301 - 11905: 0x9284, + 25302 - 11905: 0xCDCF, + 25303 - 11905: 0xDED6, + 25304 - 11905: 0xBED0, + 25305 - 11905: 0xD7BE, + 25306 - 11905: 0xDED5, + 25307 - 11905: 0xD5D0, + 25308 - 11905: 0xB0DD, + 25309 - 11905: 0x9285, + 25310 - 11905: 0x9286, + 25311 - 11905: 0xC4E2, + 25312 - 11905: 0x9287, + 25313 - 11905: 0x9288, + 25314 - 11905: 0xC2A3, + 25315 - 11905: 0xBCF0, + 25316 - 11905: 0x9289, + 25317 - 11905: 0xD3B5, + 25318 - 11905: 0xC0B9, + 25319 - 11905: 0xC5A1, + 25320 - 11905: 0xB2A6, + 25321 - 11905: 0xD4F1, + 25322 - 11905: 0x928A, + 25323 - 11905: 0x928B, + 25324 - 11905: 0xC0A8, + 25325 - 11905: 0xCAC3, + 25326 - 11905: 0xDED7, + 25327 - 11905: 0xD5FC, + 25328 - 11905: 0x928C, + 25329 - 11905: 0xB9B0, + 25330 - 11905: 0x928D, + 25331 - 11905: 0xC8AD, + 25332 - 11905: 0xCBA9, + 25333 - 11905: 0x928E, + 25334 - 11905: 0xDED9, + 25335 - 11905: 0xBFBD, + 25336 - 11905: 0x928F, + 25337 - 11905: 0x9290, + 25338 - 11905: 0x9291, + 25339 - 11905: 0x9292, + 25340 - 11905: 0xC6B4, + 25341 - 11905: 0xD7A7, + 25342 - 11905: 0xCAB0, + 25343 - 11905: 0xC4C3, + 25344 - 11905: 0x9293, + 25345 - 11905: 0xB3D6, + 25346 - 11905: 0xB9D2, + 25347 - 11905: 0x9294, + 25348 - 11905: 0x9295, + 25349 - 11905: 0x9296, + 25350 - 11905: 0x9297, + 25351 - 11905: 0xD6B8, + 25352 - 11905: 0xEAFC, + 25353 - 11905: 0xB0B4, + 25354 - 11905: 0x9298, + 25355 - 11905: 0x9299, + 25356 - 11905: 0x929A, + 25357 - 11905: 0x929B, + 25358 - 11905: 0xBFE6, + 25359 - 11905: 0x929C, + 25360 - 11905: 0x929D, + 25361 - 11905: 0xCCF4, + 25362 - 11905: 0x929E, + 25363 - 11905: 0x929F, + 25364 - 11905: 0x92A0, + 25365 - 11905: 0x92A1, + 25366 - 11905: 0xCDDA, + 25367 - 11905: 0x92A2, + 25368 - 11905: 0x92A3, + 25369 - 11905: 0x92A4, + 25370 - 11905: 0xD6BF, + 25371 - 11905: 0xC2CE, + 25372 - 11905: 0x92A5, + 25373 - 11905: 0xCECE, + 25374 - 11905: 0xCCA2, + 25375 - 11905: 0xD0AE, + 25376 - 11905: 0xC4D3, + 25377 - 11905: 0xB5B2, + 25378 - 11905: 0xDED8, + 25379 - 11905: 0xD5F5, + 25380 - 11905: 0xBCB7, + 25381 - 11905: 0xBBD3, + 25382 - 11905: 0x92A6, + 25383 - 11905: 0x92A7, + 25384 - 11905: 0xB0A4, + 25385 - 11905: 0x92A8, + 25386 - 11905: 0xC5B2, + 25387 - 11905: 0xB4EC, + 25388 - 11905: 0x92A9, + 25389 - 11905: 0x92AA, + 25390 - 11905: 0x92AB, + 25391 - 11905: 0xD5F1, + 25392 - 11905: 0x92AC, + 25393 - 11905: 0x92AD, + 25394 - 11905: 0xEAFD, + 25395 - 11905: 0x92AE, + 25396 - 11905: 0x92AF, + 25397 - 11905: 0x92B0, + 25398 - 11905: 0x92B1, + 25399 - 11905: 0x92B2, + 25400 - 11905: 0x92B3, + 25401 - 11905: 0xDEDA, + 25402 - 11905: 0xCDA6, + 25403 - 11905: 0x92B4, + 25404 - 11905: 0x92B5, + 25405 - 11905: 0xCDEC, + 25406 - 11905: 0x92B6, + 25407 - 11905: 0x92B7, + 25408 - 11905: 0x92B8, + 25409 - 11905: 0x92B9, + 25410 - 11905: 0xCEE6, + 25411 - 11905: 0xDEDC, + 25412 - 11905: 0x92BA, + 25413 - 11905: 0xCDB1, + 25414 - 11905: 0xC0A6, + 25415 - 11905: 0x92BB, + 25416 - 11905: 0x92BC, + 25417 - 11905: 0xD7BD, + 25418 - 11905: 0x92BD, + 25419 - 11905: 0xDEDB, + 25420 - 11905: 0xB0C6, + 25421 - 11905: 0xBAB4, + 25422 - 11905: 0xC9D3, + 25423 - 11905: 0xC4F3, + 25424 - 11905: 0xBEE8, + 25425 - 11905: 0x92BE, + 25426 - 11905: 0x92BF, + 25427 - 11905: 0x92C0, + 25428 - 11905: 0x92C1, + 25429 - 11905: 0xB2B6, + 25430 - 11905: 0x92C2, + 25431 - 11905: 0x92C3, + 25432 - 11905: 0x92C4, + 25433 - 11905: 0x92C5, + 25434 - 11905: 0x92C6, + 25435 - 11905: 0x92C7, + 25436 - 11905: 0x92C8, + 25437 - 11905: 0x92C9, + 25438 - 11905: 0xC0CC, + 25439 - 11905: 0xCBF0, + 25440 - 11905: 0x92CA, + 25441 - 11905: 0xBCF1, + 25442 - 11905: 0xBBBB, + 25443 - 11905: 0xB5B7, + 25444 - 11905: 0x92CB, + 25445 - 11905: 0x92CC, + 25446 - 11905: 0x92CD, + 25447 - 11905: 0xC5F5, + 25448 - 11905: 0x92CE, + 25449 - 11905: 0xDEE6, + 25450 - 11905: 0x92CF, + 25451 - 11905: 0x92D0, + 25452 - 11905: 0x92D1, + 25453 - 11905: 0xDEE3, + 25454 - 11905: 0xBEDD, + 25455 - 11905: 0x92D2, + 25456 - 11905: 0x92D3, + 25457 - 11905: 0xDEDF, + 25458 - 11905: 0x92D4, + 25459 - 11905: 0x92D5, + 25460 - 11905: 0x92D6, + 25461 - 11905: 0x92D7, + 25462 - 11905: 0xB4B7, + 25463 - 11905: 0xBDDD, + 25464 - 11905: 0x92D8, + 25465 - 11905: 0x92D9, + 25466 - 11905: 0xDEE0, + 25467 - 11905: 0xC4ED, + 25468 - 11905: 0x92DA, + 25469 - 11905: 0x92DB, + 25470 - 11905: 0x92DC, + 25471 - 11905: 0x92DD, + 25472 - 11905: 0xCFC6, + 25473 - 11905: 0x92DE, + 25474 - 11905: 0xB5E0, + 25475 - 11905: 0x92DF, + 25476 - 11905: 0x92E0, + 25477 - 11905: 0x92E1, + 25478 - 11905: 0x92E2, + 25479 - 11905: 0xB6DE, + 25480 - 11905: 0xCADA, + 25481 - 11905: 0xB5F4, + 25482 - 11905: 0xDEE5, + 25483 - 11905: 0x92E3, + 25484 - 11905: 0xD5C6, + 25485 - 11905: 0x92E4, + 25486 - 11905: 0xDEE1, + 25487 - 11905: 0xCCCD, + 25488 - 11905: 0xC6FE, + 25489 - 11905: 0x92E5, + 25490 - 11905: 0xC5C5, + 25491 - 11905: 0x92E6, + 25492 - 11905: 0x92E7, + 25493 - 11905: 0x92E8, + 25494 - 11905: 0xD2B4, + 25495 - 11905: 0x92E9, + 25496 - 11905: 0xBEF2, + 25497 - 11905: 0x92EA, + 25498 - 11905: 0x92EB, + 25499 - 11905: 0x92EC, + 25500 - 11905: 0x92ED, + 25501 - 11905: 0x92EE, + 25502 - 11905: 0x92EF, + 25503 - 11905: 0x92F0, + 25504 - 11905: 0xC2D3, + 25505 - 11905: 0x92F1, + 25506 - 11905: 0xCCBD, + 25507 - 11905: 0xB3B8, + 25508 - 11905: 0x92F2, + 25509 - 11905: 0xBDD3, + 25510 - 11905: 0x92F3, + 25511 - 11905: 0xBFD8, + 25512 - 11905: 0xCDC6, + 25513 - 11905: 0xD1DA, + 25514 - 11905: 0xB4EB, + 25515 - 11905: 0x92F4, + 25516 - 11905: 0xDEE4, + 25517 - 11905: 0xDEDD, + 25518 - 11905: 0xDEE7, + 25519 - 11905: 0x92F5, + 25520 - 11905: 0xEAFE, + 25521 - 11905: 0x92F6, + 25522 - 11905: 0x92F7, + 25523 - 11905: 0xC2B0, + 25524 - 11905: 0xDEE2, + 25525 - 11905: 0x92F8, + 25526 - 11905: 0x92F9, + 25527 - 11905: 0xD6C0, + 25528 - 11905: 0xB5A7, + 25529 - 11905: 0x92FA, + 25530 - 11905: 0xB2F4, + 25531 - 11905: 0x92FB, + 25532 - 11905: 0xDEE8, + 25533 - 11905: 0x92FC, + 25534 - 11905: 0xDEF2, + 25535 - 11905: 0x92FD, + 25536 - 11905: 0x92FE, + 25537 - 11905: 0x9340, + 25538 - 11905: 0x9341, + 25539 - 11905: 0x9342, + 25540 - 11905: 0xDEED, + 25541 - 11905: 0x9343, + 25542 - 11905: 0xDEF1, + 25543 - 11905: 0x9344, + 25544 - 11905: 0x9345, + 25545 - 11905: 0xC8E0, + 25546 - 11905: 0x9346, + 25547 - 11905: 0x9347, + 25548 - 11905: 0x9348, + 25549 - 11905: 0xD7E1, + 25550 - 11905: 0xDEEF, + 25551 - 11905: 0xC3E8, + 25552 - 11905: 0xCCE1, + 25553 - 11905: 0x9349, + 25554 - 11905: 0xB2E5, + 25555 - 11905: 0x934A, + 25556 - 11905: 0x934B, + 25557 - 11905: 0x934C, + 25558 - 11905: 0xD2BE, + 25559 - 11905: 0x934D, + 25560 - 11905: 0x934E, + 25561 - 11905: 0x934F, + 25562 - 11905: 0x9350, + 25563 - 11905: 0x9351, + 25564 - 11905: 0x9352, + 25565 - 11905: 0x9353, + 25566 - 11905: 0xDEEE, + 25567 - 11905: 0x9354, + 25568 - 11905: 0xDEEB, + 25569 - 11905: 0xCED5, + 25570 - 11905: 0x9355, + 25571 - 11905: 0xB4A7, + 25572 - 11905: 0x9356, + 25573 - 11905: 0x9357, + 25574 - 11905: 0x9358, + 25575 - 11905: 0x9359, + 25576 - 11905: 0x935A, + 25577 - 11905: 0xBFAB, + 25578 - 11905: 0xBEBE, + 25579 - 11905: 0x935B, + 25580 - 11905: 0x935C, + 25581 - 11905: 0xBDD2, + 25582 - 11905: 0x935D, + 25583 - 11905: 0x935E, + 25584 - 11905: 0x935F, + 25585 - 11905: 0x9360, + 25586 - 11905: 0xDEE9, + 25587 - 11905: 0x9361, + 25588 - 11905: 0xD4AE, + 25589 - 11905: 0x9362, + 25590 - 11905: 0xDEDE, + 25591 - 11905: 0x9363, + 25592 - 11905: 0xDEEA, + 25593 - 11905: 0x9364, + 25594 - 11905: 0x9365, + 25595 - 11905: 0x9366, + 25596 - 11905: 0x9367, + 25597 - 11905: 0xC0BF, + 25598 - 11905: 0x9368, + 25599 - 11905: 0xDEEC, + 25600 - 11905: 0xB2F3, + 25601 - 11905: 0xB8E9, + 25602 - 11905: 0xC2A7, + 25603 - 11905: 0x9369, + 25604 - 11905: 0x936A, + 25605 - 11905: 0xBDC1, + 25606 - 11905: 0x936B, + 25607 - 11905: 0x936C, + 25608 - 11905: 0x936D, + 25609 - 11905: 0x936E, + 25610 - 11905: 0x936F, + 25611 - 11905: 0xDEF5, + 25612 - 11905: 0xDEF8, + 25613 - 11905: 0x9370, + 25614 - 11905: 0x9371, + 25615 - 11905: 0xB2AB, + 25616 - 11905: 0xB4A4, + 25617 - 11905: 0x9372, + 25618 - 11905: 0x9373, + 25619 - 11905: 0xB4EA, + 25620 - 11905: 0xC9A6, + 25621 - 11905: 0x9374, + 25622 - 11905: 0x9375, + 25623 - 11905: 0x9376, + 25624 - 11905: 0x9377, + 25625 - 11905: 0x9378, + 25626 - 11905: 0x9379, + 25627 - 11905: 0xDEF6, + 25628 - 11905: 0xCBD1, + 25629 - 11905: 0x937A, + 25630 - 11905: 0xB8E3, + 25631 - 11905: 0x937B, + 25632 - 11905: 0xDEF7, + 25633 - 11905: 0xDEFA, + 25634 - 11905: 0x937C, + 25635 - 11905: 0x937D, + 25636 - 11905: 0x937E, + 25637 - 11905: 0x9380, + 25638 - 11905: 0xDEF9, + 25639 - 11905: 0x9381, + 25640 - 11905: 0x9382, + 25641 - 11905: 0x9383, + 25642 - 11905: 0xCCC2, + 25643 - 11905: 0x9384, + 25644 - 11905: 0xB0E1, + 25645 - 11905: 0xB4EE, + 25646 - 11905: 0x9385, + 25647 - 11905: 0x9386, + 25648 - 11905: 0x9387, + 25649 - 11905: 0x9388, + 25650 - 11905: 0x9389, + 25651 - 11905: 0x938A, + 25652 - 11905: 0xE5BA, + 25653 - 11905: 0x938B, + 25654 - 11905: 0x938C, + 25655 - 11905: 0x938D, + 25656 - 11905: 0x938E, + 25657 - 11905: 0x938F, + 25658 - 11905: 0xD0AF, + 25659 - 11905: 0x9390, + 25660 - 11905: 0x9391, + 25661 - 11905: 0xB2EB, + 25662 - 11905: 0x9392, + 25663 - 11905: 0xEBA1, + 25664 - 11905: 0x9393, + 25665 - 11905: 0xDEF4, + 25666 - 11905: 0x9394, + 25667 - 11905: 0x9395, + 25668 - 11905: 0xC9E3, + 25669 - 11905: 0xDEF3, + 25670 - 11905: 0xB0DA, + 25671 - 11905: 0xD2A1, + 25672 - 11905: 0xB1F7, + 25673 - 11905: 0x9396, + 25674 - 11905: 0xCCAF, + 25675 - 11905: 0x9397, + 25676 - 11905: 0x9398, + 25677 - 11905: 0x9399, + 25678 - 11905: 0x939A, + 25679 - 11905: 0x939B, + 25680 - 11905: 0x939C, + 25681 - 11905: 0x939D, + 25682 - 11905: 0xDEF0, + 25683 - 11905: 0x939E, + 25684 - 11905: 0xCBA4, + 25685 - 11905: 0x939F, + 25686 - 11905: 0x93A0, + 25687 - 11905: 0x93A1, + 25688 - 11905: 0xD5AA, + 25689 - 11905: 0x93A2, + 25690 - 11905: 0x93A3, + 25691 - 11905: 0x93A4, + 25692 - 11905: 0x93A5, + 25693 - 11905: 0x93A6, + 25694 - 11905: 0xDEFB, + 25695 - 11905: 0x93A7, + 25696 - 11905: 0x93A8, + 25697 - 11905: 0x93A9, + 25698 - 11905: 0x93AA, + 25699 - 11905: 0x93AB, + 25700 - 11905: 0x93AC, + 25701 - 11905: 0x93AD, + 25702 - 11905: 0x93AE, + 25703 - 11905: 0xB4DD, + 25704 - 11905: 0x93AF, + 25705 - 11905: 0xC4A6, + 25706 - 11905: 0x93B0, + 25707 - 11905: 0x93B1, + 25708 - 11905: 0x93B2, + 25709 - 11905: 0xDEFD, + 25710 - 11905: 0x93B3, + 25711 - 11905: 0x93B4, + 25712 - 11905: 0x93B5, + 25713 - 11905: 0x93B6, + 25714 - 11905: 0x93B7, + 25715 - 11905: 0x93B8, + 25716 - 11905: 0x93B9, + 25717 - 11905: 0x93BA, + 25718 - 11905: 0x93BB, + 25719 - 11905: 0x93BC, + 25720 - 11905: 0xC3FE, + 25721 - 11905: 0xC4A1, + 25722 - 11905: 0xDFA1, + 25723 - 11905: 0x93BD, + 25724 - 11905: 0x93BE, + 25725 - 11905: 0x93BF, + 25726 - 11905: 0x93C0, + 25727 - 11905: 0x93C1, + 25728 - 11905: 0x93C2, + 25729 - 11905: 0x93C3, + 25730 - 11905: 0xC1CC, + 25731 - 11905: 0x93C4, + 25732 - 11905: 0xDEFC, + 25733 - 11905: 0xBEEF, + 25734 - 11905: 0x93C5, + 25735 - 11905: 0xC6B2, + 25736 - 11905: 0x93C6, + 25737 - 11905: 0x93C7, + 25738 - 11905: 0x93C8, + 25739 - 11905: 0x93C9, + 25740 - 11905: 0x93CA, + 25741 - 11905: 0x93CB, + 25742 - 11905: 0x93CC, + 25743 - 11905: 0x93CD, + 25744 - 11905: 0x93CE, + 25745 - 11905: 0xB3C5, + 25746 - 11905: 0xC8F6, + 25747 - 11905: 0x93CF, + 25748 - 11905: 0x93D0, + 25749 - 11905: 0xCBBA, + 25750 - 11905: 0xDEFE, + 25751 - 11905: 0x93D1, + 25752 - 11905: 0x93D2, + 25753 - 11905: 0xDFA4, + 25754 - 11905: 0x93D3, + 25755 - 11905: 0x93D4, + 25756 - 11905: 0x93D5, + 25757 - 11905: 0x93D6, + 25758 - 11905: 0xD7B2, + 25759 - 11905: 0x93D7, + 25760 - 11905: 0x93D8, + 25761 - 11905: 0x93D9, + 25762 - 11905: 0x93DA, + 25763 - 11905: 0x93DB, + 25764 - 11905: 0xB3B7, + 25765 - 11905: 0x93DC, + 25766 - 11905: 0x93DD, + 25767 - 11905: 0x93DE, + 25768 - 11905: 0x93DF, + 25769 - 11905: 0xC1C3, + 25770 - 11905: 0x93E0, + 25771 - 11905: 0x93E1, + 25772 - 11905: 0xC7CB, + 25773 - 11905: 0xB2A5, + 25774 - 11905: 0xB4E9, + 25775 - 11905: 0x93E2, + 25776 - 11905: 0xD7AB, + 25777 - 11905: 0x93E3, + 25778 - 11905: 0x93E4, + 25779 - 11905: 0x93E5, + 25780 - 11905: 0x93E6, + 25781 - 11905: 0xC4EC, + 25782 - 11905: 0x93E7, + 25783 - 11905: 0xDFA2, + 25784 - 11905: 0xDFA3, + 25785 - 11905: 0x93E8, + 25786 - 11905: 0xDFA5, + 25787 - 11905: 0x93E9, + 25788 - 11905: 0xBAB3, + 25789 - 11905: 0x93EA, + 25790 - 11905: 0x93EB, + 25791 - 11905: 0x93EC, + 25792 - 11905: 0xDFA6, + 25793 - 11905: 0x93ED, + 25794 - 11905: 0xC0DE, + 25795 - 11905: 0x93EE, + 25796 - 11905: 0x93EF, + 25797 - 11905: 0xC9C3, + 25798 - 11905: 0x93F0, + 25799 - 11905: 0x93F1, + 25800 - 11905: 0x93F2, + 25801 - 11905: 0x93F3, + 25802 - 11905: 0x93F4, + 25803 - 11905: 0x93F5, + 25804 - 11905: 0x93F6, + 25805 - 11905: 0xB2D9, + 25806 - 11905: 0xC7E6, + 25807 - 11905: 0x93F7, + 25808 - 11905: 0xDFA7, + 25809 - 11905: 0x93F8, + 25810 - 11905: 0xC7DC, + 25811 - 11905: 0x93F9, + 25812 - 11905: 0x93FA, + 25813 - 11905: 0x93FB, + 25814 - 11905: 0x93FC, + 25815 - 11905: 0xDFA8, + 25816 - 11905: 0xEBA2, + 25817 - 11905: 0x93FD, + 25818 - 11905: 0x93FE, + 25819 - 11905: 0x9440, + 25820 - 11905: 0x9441, + 25821 - 11905: 0x9442, + 25822 - 11905: 0xCBD3, + 25823 - 11905: 0x9443, + 25824 - 11905: 0x9444, + 25825 - 11905: 0x9445, + 25826 - 11905: 0xDFAA, + 25827 - 11905: 0x9446, + 25828 - 11905: 0xDFA9, + 25829 - 11905: 0x9447, + 25830 - 11905: 0xB2C1, + 25831 - 11905: 0x9448, + 25832 - 11905: 0x9449, + 25833 - 11905: 0x944A, + 25834 - 11905: 0x944B, + 25835 - 11905: 0x944C, + 25836 - 11905: 0x944D, + 25837 - 11905: 0x944E, + 25838 - 11905: 0x944F, + 25839 - 11905: 0x9450, + 25840 - 11905: 0x9451, + 25841 - 11905: 0x9452, + 25842 - 11905: 0x9453, + 25843 - 11905: 0x9454, + 25844 - 11905: 0x9455, + 25845 - 11905: 0x9456, + 25846 - 11905: 0x9457, + 25847 - 11905: 0x9458, + 25848 - 11905: 0x9459, + 25849 - 11905: 0x945A, + 25850 - 11905: 0x945B, + 25851 - 11905: 0x945C, + 25852 - 11905: 0x945D, + 25853 - 11905: 0x945E, + 25854 - 11905: 0x945F, + 25855 - 11905: 0x9460, + 25856 - 11905: 0xC5CA, + 25857 - 11905: 0x9461, + 25858 - 11905: 0x9462, + 25859 - 11905: 0x9463, + 25860 - 11905: 0x9464, + 25861 - 11905: 0x9465, + 25862 - 11905: 0x9466, + 25863 - 11905: 0x9467, + 25864 - 11905: 0x9468, + 25865 - 11905: 0xDFAB, + 25866 - 11905: 0x9469, + 25867 - 11905: 0x946A, + 25868 - 11905: 0x946B, + 25869 - 11905: 0x946C, + 25870 - 11905: 0x946D, + 25871 - 11905: 0x946E, + 25872 - 11905: 0x946F, + 25873 - 11905: 0x9470, + 25874 - 11905: 0xD4DC, + 25875 - 11905: 0x9471, + 25876 - 11905: 0x9472, + 25877 - 11905: 0x9473, + 25878 - 11905: 0x9474, + 25879 - 11905: 0x9475, + 25880 - 11905: 0xC8C1, + 25881 - 11905: 0x9476, + 25882 - 11905: 0x9477, + 25883 - 11905: 0x9478, + 25884 - 11905: 0x9479, + 25885 - 11905: 0x947A, + 25886 - 11905: 0x947B, + 25887 - 11905: 0x947C, + 25888 - 11905: 0x947D, + 25889 - 11905: 0x947E, + 25890 - 11905: 0x9480, + 25891 - 11905: 0x9481, + 25892 - 11905: 0x9482, + 25893 - 11905: 0xDFAC, + 25894 - 11905: 0x9483, + 25895 - 11905: 0x9484, + 25896 - 11905: 0x9485, + 25897 - 11905: 0x9486, + 25898 - 11905: 0x9487, + 25899 - 11905: 0xBEF0, + 25900 - 11905: 0x9488, + 25901 - 11905: 0x9489, + 25902 - 11905: 0xDFAD, + 25903 - 11905: 0xD6A7, + 25904 - 11905: 0x948A, + 25905 - 11905: 0x948B, + 25906 - 11905: 0x948C, + 25907 - 11905: 0x948D, + 25908 - 11905: 0xEAB7, + 25909 - 11905: 0xEBB6, + 25910 - 11905: 0xCAD5, + 25911 - 11905: 0x948E, + 25912 - 11905: 0xD8FC, + 25913 - 11905: 0xB8C4, + 25914 - 11905: 0x948F, + 25915 - 11905: 0xB9A5, + 25916 - 11905: 0x9490, + 25917 - 11905: 0x9491, + 25918 - 11905: 0xB7C5, + 25919 - 11905: 0xD5FE, + 25920 - 11905: 0x9492, + 25921 - 11905: 0x9493, + 25922 - 11905: 0x9494, + 25923 - 11905: 0x9495, + 25924 - 11905: 0x9496, + 25925 - 11905: 0xB9CA, + 25926 - 11905: 0x9497, + 25927 - 11905: 0x9498, + 25928 - 11905: 0xD0A7, + 25929 - 11905: 0xF4CD, + 25930 - 11905: 0x9499, + 25931 - 11905: 0x949A, + 25932 - 11905: 0xB5D0, + 25933 - 11905: 0x949B, + 25934 - 11905: 0x949C, + 25935 - 11905: 0xC3F4, + 25936 - 11905: 0x949D, + 25937 - 11905: 0xBEC8, + 25938 - 11905: 0x949E, + 25939 - 11905: 0x949F, + 25940 - 11905: 0x94A0, + 25941 - 11905: 0xEBB7, + 25942 - 11905: 0xB0BD, + 25943 - 11905: 0x94A1, + 25944 - 11905: 0x94A2, + 25945 - 11905: 0xBDCC, + 25946 - 11905: 0x94A3, + 25947 - 11905: 0xC1B2, + 25948 - 11905: 0x94A4, + 25949 - 11905: 0xB1D6, + 25950 - 11905: 0xB3A8, + 25951 - 11905: 0x94A5, + 25952 - 11905: 0x94A6, + 25953 - 11905: 0x94A7, + 25954 - 11905: 0xB8D2, + 25955 - 11905: 0xC9A2, + 25956 - 11905: 0x94A8, + 25957 - 11905: 0x94A9, + 25958 - 11905: 0xB6D8, + 25959 - 11905: 0x94AA, + 25960 - 11905: 0x94AB, + 25961 - 11905: 0x94AC, + 25962 - 11905: 0x94AD, + 25963 - 11905: 0xEBB8, + 25964 - 11905: 0xBEB4, + 25965 - 11905: 0x94AE, + 25966 - 11905: 0x94AF, + 25967 - 11905: 0x94B0, + 25968 - 11905: 0xCAFD, + 25969 - 11905: 0x94B1, + 25970 - 11905: 0xC7C3, + 25971 - 11905: 0x94B2, + 25972 - 11905: 0xD5FB, + 25973 - 11905: 0x94B3, + 25974 - 11905: 0x94B4, + 25975 - 11905: 0xB7F3, + 25976 - 11905: 0x94B5, + 25977 - 11905: 0x94B6, + 25978 - 11905: 0x94B7, + 25979 - 11905: 0x94B8, + 25980 - 11905: 0x94B9, + 25981 - 11905: 0x94BA, + 25982 - 11905: 0x94BB, + 25983 - 11905: 0x94BC, + 25984 - 11905: 0x94BD, + 25985 - 11905: 0x94BE, + 25986 - 11905: 0x94BF, + 25987 - 11905: 0x94C0, + 25988 - 11905: 0x94C1, + 25989 - 11905: 0x94C2, + 25990 - 11905: 0x94C3, + 25991 - 11905: 0xCEC4, + 25992 - 11905: 0x94C4, + 25993 - 11905: 0x94C5, + 25994 - 11905: 0x94C6, + 25995 - 11905: 0xD5AB, + 25996 - 11905: 0xB1F3, + 25997 - 11905: 0x94C7, + 25998 - 11905: 0x94C8, + 25999 - 11905: 0x94C9, + 26000 - 11905: 0xECB3, + 26001 - 11905: 0xB0DF, + 26002 - 11905: 0x94CA, + 26003 - 11905: 0xECB5, + 26004 - 11905: 0x94CB, + 26005 - 11905: 0x94CC, + 26006 - 11905: 0x94CD, + 26007 - 11905: 0xB6B7, + 26008 - 11905: 0x94CE, + 26009 - 11905: 0xC1CF, + 26010 - 11905: 0x94CF, + 26011 - 11905: 0xF5FA, + 26012 - 11905: 0xD0B1, + 26013 - 11905: 0x94D0, + 26014 - 11905: 0x94D1, + 26015 - 11905: 0xD5E5, + 26016 - 11905: 0x94D2, + 26017 - 11905: 0xCED3, + 26018 - 11905: 0x94D3, + 26019 - 11905: 0x94D4, + 26020 - 11905: 0xBDEF, + 26021 - 11905: 0xB3E2, + 26022 - 11905: 0x94D5, + 26023 - 11905: 0xB8AB, + 26024 - 11905: 0x94D6, + 26025 - 11905: 0xD5B6, + 26026 - 11905: 0x94D7, + 26027 - 11905: 0xEDBD, + 26028 - 11905: 0x94D8, + 26029 - 11905: 0xB6CF, + 26030 - 11905: 0x94D9, + 26031 - 11905: 0xCBB9, + 26032 - 11905: 0xD0C2, + 26033 - 11905: 0x94DA, + 26034 - 11905: 0x94DB, + 26035 - 11905: 0x94DC, + 26036 - 11905: 0x94DD, + 26037 - 11905: 0x94DE, + 26038 - 11905: 0x94DF, + 26039 - 11905: 0x94E0, + 26040 - 11905: 0x94E1, + 26041 - 11905: 0xB7BD, + 26042 - 11905: 0x94E2, + 26043 - 11905: 0x94E3, + 26044 - 11905: 0xECB6, + 26045 - 11905: 0xCAA9, + 26046 - 11905: 0x94E4, + 26047 - 11905: 0x94E5, + 26048 - 11905: 0x94E6, + 26049 - 11905: 0xC5D4, + 26050 - 11905: 0x94E7, + 26051 - 11905: 0xECB9, + 26052 - 11905: 0xECB8, + 26053 - 11905: 0xC2C3, + 26054 - 11905: 0xECB7, + 26055 - 11905: 0x94E8, + 26056 - 11905: 0x94E9, + 26057 - 11905: 0x94EA, + 26058 - 11905: 0x94EB, + 26059 - 11905: 0xD0FD, + 26060 - 11905: 0xECBA, + 26061 - 11905: 0x94EC, + 26062 - 11905: 0xECBB, + 26063 - 11905: 0xD7E5, + 26064 - 11905: 0x94ED, + 26065 - 11905: 0x94EE, + 26066 - 11905: 0xECBC, + 26067 - 11905: 0x94EF, + 26068 - 11905: 0x94F0, + 26069 - 11905: 0x94F1, + 26070 - 11905: 0xECBD, + 26071 - 11905: 0xC6EC, + 26072 - 11905: 0x94F2, + 26073 - 11905: 0x94F3, + 26074 - 11905: 0x94F4, + 26075 - 11905: 0x94F5, + 26076 - 11905: 0x94F6, + 26077 - 11905: 0x94F7, + 26078 - 11905: 0x94F8, + 26079 - 11905: 0x94F9, + 26080 - 11905: 0xCEDE, + 26081 - 11905: 0x94FA, + 26082 - 11905: 0xBCC8, + 26083 - 11905: 0x94FB, + 26084 - 11905: 0x94FC, + 26085 - 11905: 0xC8D5, + 26086 - 11905: 0xB5A9, + 26087 - 11905: 0xBEC9, + 26088 - 11905: 0xD6BC, + 26089 - 11905: 0xD4E7, + 26090 - 11905: 0x94FD, + 26091 - 11905: 0x94FE, + 26092 - 11905: 0xD1AE, + 26093 - 11905: 0xD0F1, + 26094 - 11905: 0xEAB8, + 26095 - 11905: 0xEAB9, + 26096 - 11905: 0xEABA, + 26097 - 11905: 0xBAB5, + 26098 - 11905: 0x9540, + 26099 - 11905: 0x9541, + 26100 - 11905: 0x9542, + 26101 - 11905: 0x9543, + 26102 - 11905: 0xCAB1, + 26103 - 11905: 0xBFF5, + 26104 - 11905: 0x9544, + 26105 - 11905: 0x9545, + 26106 - 11905: 0xCDFA, + 26107 - 11905: 0x9546, + 26108 - 11905: 0x9547, + 26109 - 11905: 0x9548, + 26110 - 11905: 0x9549, + 26111 - 11905: 0x954A, + 26112 - 11905: 0xEAC0, + 26113 - 11905: 0x954B, + 26114 - 11905: 0xB0BA, + 26115 - 11905: 0xEABE, + 26116 - 11905: 0x954C, + 26117 - 11905: 0x954D, + 26118 - 11905: 0xC0A5, + 26119 - 11905: 0x954E, + 26120 - 11905: 0x954F, + 26121 - 11905: 0x9550, + 26122 - 11905: 0xEABB, + 26123 - 11905: 0x9551, + 26124 - 11905: 0xB2FD, + 26125 - 11905: 0x9552, + 26126 - 11905: 0xC3F7, + 26127 - 11905: 0xBBE8, + 26128 - 11905: 0x9553, + 26129 - 11905: 0x9554, + 26130 - 11905: 0x9555, + 26131 - 11905: 0xD2D7, + 26132 - 11905: 0xCEF4, + 26133 - 11905: 0xEABF, + 26134 - 11905: 0x9556, + 26135 - 11905: 0x9557, + 26136 - 11905: 0x9558, + 26137 - 11905: 0xEABC, + 26138 - 11905: 0x9559, + 26139 - 11905: 0x955A, + 26140 - 11905: 0x955B, + 26141 - 11905: 0xEAC3, + 26142 - 11905: 0x955C, + 26143 - 11905: 0xD0C7, + 26144 - 11905: 0xD3B3, + 26145 - 11905: 0x955D, + 26146 - 11905: 0x955E, + 26147 - 11905: 0x955F, + 26148 - 11905: 0x9560, + 26149 - 11905: 0xB4BA, + 26150 - 11905: 0x9561, + 26151 - 11905: 0xC3C1, + 26152 - 11905: 0xD7F2, + 26153 - 11905: 0x9562, + 26154 - 11905: 0x9563, + 26155 - 11905: 0x9564, + 26156 - 11905: 0x9565, + 26157 - 11905: 0xD5D1, + 26158 - 11905: 0x9566, + 26159 - 11905: 0xCAC7, + 26160 - 11905: 0x9567, + 26161 - 11905: 0xEAC5, + 26162 - 11905: 0x9568, + 26163 - 11905: 0x9569, + 26164 - 11905: 0xEAC4, + 26165 - 11905: 0xEAC7, + 26166 - 11905: 0xEAC6, + 26167 - 11905: 0x956A, + 26168 - 11905: 0x956B, + 26169 - 11905: 0x956C, + 26170 - 11905: 0x956D, + 26171 - 11905: 0x956E, + 26172 - 11905: 0xD6E7, + 26173 - 11905: 0x956F, + 26174 - 11905: 0xCFD4, + 26175 - 11905: 0x9570, + 26176 - 11905: 0x9571, + 26177 - 11905: 0xEACB, + 26178 - 11905: 0x9572, + 26179 - 11905: 0xBBCE, + 26180 - 11905: 0x9573, + 26181 - 11905: 0x9574, + 26182 - 11905: 0x9575, + 26183 - 11905: 0x9576, + 26184 - 11905: 0x9577, + 26185 - 11905: 0x9578, + 26186 - 11905: 0x9579, + 26187 - 11905: 0xBDFA, + 26188 - 11905: 0xC9CE, + 26189 - 11905: 0x957A, + 26190 - 11905: 0x957B, + 26191 - 11905: 0xEACC, + 26192 - 11905: 0x957C, + 26193 - 11905: 0x957D, + 26194 - 11905: 0xC9B9, + 26195 - 11905: 0xCFFE, + 26196 - 11905: 0xEACA, + 26197 - 11905: 0xD4CE, + 26198 - 11905: 0xEACD, + 26199 - 11905: 0xEACF, + 26200 - 11905: 0x957E, + 26201 - 11905: 0x9580, + 26202 - 11905: 0xCDED, + 26203 - 11905: 0x9581, + 26204 - 11905: 0x9582, + 26205 - 11905: 0x9583, + 26206 - 11905: 0x9584, + 26207 - 11905: 0xEAC9, + 26208 - 11905: 0x9585, + 26209 - 11905: 0xEACE, + 26210 - 11905: 0x9586, + 26211 - 11905: 0x9587, + 26212 - 11905: 0xCEEE, + 26213 - 11905: 0x9588, + 26214 - 11905: 0xBBDE, + 26215 - 11905: 0x9589, + 26216 - 11905: 0xB3BF, + 26217 - 11905: 0x958A, + 26218 - 11905: 0x958B, + 26219 - 11905: 0x958C, + 26220 - 11905: 0x958D, + 26221 - 11905: 0x958E, + 26222 - 11905: 0xC6D5, + 26223 - 11905: 0xBEB0, + 26224 - 11905: 0xCEFA, + 26225 - 11905: 0x958F, + 26226 - 11905: 0x9590, + 26227 - 11905: 0x9591, + 26228 - 11905: 0xC7E7, + 26229 - 11905: 0x9592, + 26230 - 11905: 0xBEA7, + 26231 - 11905: 0xEAD0, + 26232 - 11905: 0x9593, + 26233 - 11905: 0x9594, + 26234 - 11905: 0xD6C7, + 26235 - 11905: 0x9595, + 26236 - 11905: 0x9596, + 26237 - 11905: 0x9597, + 26238 - 11905: 0xC1C0, + 26239 - 11905: 0x9598, + 26240 - 11905: 0x9599, + 26241 - 11905: 0x959A, + 26242 - 11905: 0xD4DD, + 26243 - 11905: 0x959B, + 26244 - 11905: 0xEAD1, + 26245 - 11905: 0x959C, + 26246 - 11905: 0x959D, + 26247 - 11905: 0xCFBE, + 26248 - 11905: 0x959E, + 26249 - 11905: 0x959F, + 26250 - 11905: 0x95A0, + 26251 - 11905: 0x95A1, + 26252 - 11905: 0xEAD2, + 26253 - 11905: 0x95A2, + 26254 - 11905: 0x95A3, + 26255 - 11905: 0x95A4, + 26256 - 11905: 0x95A5, + 26257 - 11905: 0xCAEE, + 26258 - 11905: 0x95A6, + 26259 - 11905: 0x95A7, + 26260 - 11905: 0x95A8, + 26261 - 11905: 0x95A9, + 26262 - 11905: 0xC5AF, + 26263 - 11905: 0xB0B5, + 26264 - 11905: 0x95AA, + 26265 - 11905: 0x95AB, + 26266 - 11905: 0x95AC, + 26267 - 11905: 0x95AD, + 26268 - 11905: 0x95AE, + 26269 - 11905: 0xEAD4, + 26270 - 11905: 0x95AF, + 26271 - 11905: 0x95B0, + 26272 - 11905: 0x95B1, + 26273 - 11905: 0x95B2, + 26274 - 11905: 0x95B3, + 26275 - 11905: 0x95B4, + 26276 - 11905: 0x95B5, + 26277 - 11905: 0x95B6, + 26278 - 11905: 0x95B7, + 26279 - 11905: 0xEAD3, + 26280 - 11905: 0xF4DF, + 26281 - 11905: 0x95B8, + 26282 - 11905: 0x95B9, + 26283 - 11905: 0x95BA, + 26284 - 11905: 0x95BB, + 26285 - 11905: 0x95BC, + 26286 - 11905: 0xC4BA, + 26287 - 11905: 0x95BD, + 26288 - 11905: 0x95BE, + 26289 - 11905: 0x95BF, + 26290 - 11905: 0x95C0, + 26291 - 11905: 0x95C1, + 26292 - 11905: 0xB1A9, + 26293 - 11905: 0x95C2, + 26294 - 11905: 0x95C3, + 26295 - 11905: 0x95C4, + 26296 - 11905: 0x95C5, + 26297 - 11905: 0xE5DF, + 26298 - 11905: 0x95C6, + 26299 - 11905: 0x95C7, + 26300 - 11905: 0x95C8, + 26301 - 11905: 0x95C9, + 26302 - 11905: 0xEAD5, + 26303 - 11905: 0x95CA, + 26304 - 11905: 0x95CB, + 26305 - 11905: 0x95CC, + 26306 - 11905: 0x95CD, + 26307 - 11905: 0x95CE, + 26308 - 11905: 0x95CF, + 26309 - 11905: 0x95D0, + 26310 - 11905: 0x95D1, + 26311 - 11905: 0x95D2, + 26312 - 11905: 0x95D3, + 26313 - 11905: 0x95D4, + 26314 - 11905: 0x95D5, + 26315 - 11905: 0x95D6, + 26316 - 11905: 0x95D7, + 26317 - 11905: 0x95D8, + 26318 - 11905: 0x95D9, + 26319 - 11905: 0x95DA, + 26320 - 11905: 0x95DB, + 26321 - 11905: 0x95DC, + 26322 - 11905: 0x95DD, + 26323 - 11905: 0x95DE, + 26324 - 11905: 0x95DF, + 26325 - 11905: 0x95E0, + 26326 - 11905: 0x95E1, + 26327 - 11905: 0x95E2, + 26328 - 11905: 0x95E3, + 26329 - 11905: 0xCAEF, + 26330 - 11905: 0x95E4, + 26331 - 11905: 0xEAD6, + 26332 - 11905: 0xEAD7, + 26333 - 11905: 0xC6D8, + 26334 - 11905: 0x95E5, + 26335 - 11905: 0x95E6, + 26336 - 11905: 0x95E7, + 26337 - 11905: 0x95E8, + 26338 - 11905: 0x95E9, + 26339 - 11905: 0x95EA, + 26340 - 11905: 0x95EB, + 26341 - 11905: 0x95EC, + 26342 - 11905: 0xEAD8, + 26343 - 11905: 0x95ED, + 26344 - 11905: 0x95EE, + 26345 - 11905: 0xEAD9, + 26346 - 11905: 0x95EF, + 26347 - 11905: 0x95F0, + 26348 - 11905: 0x95F1, + 26349 - 11905: 0x95F2, + 26350 - 11905: 0x95F3, + 26351 - 11905: 0x95F4, + 26352 - 11905: 0xD4BB, + 26353 - 11905: 0x95F5, + 26354 - 11905: 0xC7FA, + 26355 - 11905: 0xD2B7, + 26356 - 11905: 0xB8FC, + 26357 - 11905: 0x95F6, + 26358 - 11905: 0x95F7, + 26359 - 11905: 0xEAC2, + 26360 - 11905: 0x95F8, + 26361 - 11905: 0xB2DC, + 26362 - 11905: 0x95F9, + 26363 - 11905: 0x95FA, + 26364 - 11905: 0xC2FC, + 26365 - 11905: 0x95FB, + 26366 - 11905: 0xD4F8, + 26367 - 11905: 0xCCE6, + 26368 - 11905: 0xD7EE, + 26369 - 11905: 0x95FC, + 26370 - 11905: 0x95FD, + 26371 - 11905: 0x95FE, + 26372 - 11905: 0x9640, + 26373 - 11905: 0x9641, + 26374 - 11905: 0x9642, + 26375 - 11905: 0x9643, + 26376 - 11905: 0xD4C2, + 26377 - 11905: 0xD3D0, + 26378 - 11905: 0xEBC3, + 26379 - 11905: 0xC5F3, + 26380 - 11905: 0x9644, + 26381 - 11905: 0xB7FE, + 26382 - 11905: 0x9645, + 26383 - 11905: 0x9646, + 26384 - 11905: 0xEBD4, + 26385 - 11905: 0x9647, + 26386 - 11905: 0x9648, + 26387 - 11905: 0x9649, + 26388 - 11905: 0xCBB7, + 26389 - 11905: 0xEBDE, + 26390 - 11905: 0x964A, + 26391 - 11905: 0xC0CA, + 26392 - 11905: 0x964B, + 26393 - 11905: 0x964C, + 26394 - 11905: 0x964D, + 26395 - 11905: 0xCDFB, + 26396 - 11905: 0x964E, + 26397 - 11905: 0xB3AF, + 26398 - 11905: 0x964F, + 26399 - 11905: 0xC6DA, + 26400 - 11905: 0x9650, + 26401 - 11905: 0x9651, + 26402 - 11905: 0x9652, + 26403 - 11905: 0x9653, + 26404 - 11905: 0x9654, + 26405 - 11905: 0x9655, + 26406 - 11905: 0xEBFC, + 26407 - 11905: 0x9656, + 26408 - 11905: 0xC4BE, + 26409 - 11905: 0x9657, + 26410 - 11905: 0xCEB4, + 26411 - 11905: 0xC4A9, + 26412 - 11905: 0xB1BE, + 26413 - 11905: 0xD4FD, + 26414 - 11905: 0x9658, + 26415 - 11905: 0xCAF5, + 26416 - 11905: 0x9659, + 26417 - 11905: 0xD6EC, + 26418 - 11905: 0x965A, + 26419 - 11905: 0x965B, + 26420 - 11905: 0xC6D3, + 26421 - 11905: 0xB6E4, + 26422 - 11905: 0x965C, + 26423 - 11905: 0x965D, + 26424 - 11905: 0x965E, + 26425 - 11905: 0x965F, + 26426 - 11905: 0xBBFA, + 26427 - 11905: 0x9660, + 26428 - 11905: 0x9661, + 26429 - 11905: 0xD0E0, + 26430 - 11905: 0x9662, + 26431 - 11905: 0x9663, + 26432 - 11905: 0xC9B1, + 26433 - 11905: 0x9664, + 26434 - 11905: 0xD4D3, + 26435 - 11905: 0xC8A8, + 26436 - 11905: 0x9665, + 26437 - 11905: 0x9666, + 26438 - 11905: 0xB8CB, + 26439 - 11905: 0x9667, + 26440 - 11905: 0xE8BE, + 26441 - 11905: 0xC9BC, + 26442 - 11905: 0x9668, + 26443 - 11905: 0x9669, + 26444 - 11905: 0xE8BB, + 26445 - 11905: 0x966A, + 26446 - 11905: 0xC0EE, + 26447 - 11905: 0xD0D3, + 26448 - 11905: 0xB2C4, + 26449 - 11905: 0xB4E5, + 26450 - 11905: 0x966B, + 26451 - 11905: 0xE8BC, + 26452 - 11905: 0x966C, + 26453 - 11905: 0x966D, + 26454 - 11905: 0xD5C8, + 26455 - 11905: 0x966E, + 26456 - 11905: 0x966F, + 26457 - 11905: 0x9670, + 26458 - 11905: 0x9671, + 26459 - 11905: 0x9672, + 26460 - 11905: 0xB6C5, + 26461 - 11905: 0x9673, + 26462 - 11905: 0xE8BD, + 26463 - 11905: 0xCAF8, + 26464 - 11905: 0xB8DC, + 26465 - 11905: 0xCCF5, + 26466 - 11905: 0x9674, + 26467 - 11905: 0x9675, + 26468 - 11905: 0x9676, + 26469 - 11905: 0xC0B4, + 26470 - 11905: 0x9677, + 26471 - 11905: 0x9678, + 26472 - 11905: 0xD1EE, + 26473 - 11905: 0xE8BF, + 26474 - 11905: 0xE8C2, + 26475 - 11905: 0x9679, + 26476 - 11905: 0x967A, + 26477 - 11905: 0xBABC, + 26478 - 11905: 0x967B, + 26479 - 11905: 0xB1AD, + 26480 - 11905: 0xBDDC, + 26481 - 11905: 0x967C, + 26482 - 11905: 0xEABD, + 26483 - 11905: 0xE8C3, + 26484 - 11905: 0x967D, + 26485 - 11905: 0xE8C6, + 26486 - 11905: 0x967E, + 26487 - 11905: 0xE8CB, + 26488 - 11905: 0x9680, + 26489 - 11905: 0x9681, + 26490 - 11905: 0x9682, + 26491 - 11905: 0x9683, + 26492 - 11905: 0xE8CC, + 26493 - 11905: 0x9684, + 26494 - 11905: 0xCBC9, + 26495 - 11905: 0xB0E5, + 26496 - 11905: 0x9685, + 26497 - 11905: 0xBCAB, + 26498 - 11905: 0x9686, + 26499 - 11905: 0x9687, + 26500 - 11905: 0xB9B9, + 26501 - 11905: 0x9688, + 26502 - 11905: 0x9689, + 26503 - 11905: 0xE8C1, + 26504 - 11905: 0x968A, + 26505 - 11905: 0xCDF7, + 26506 - 11905: 0x968B, + 26507 - 11905: 0xE8CA, + 26508 - 11905: 0x968C, + 26509 - 11905: 0x968D, + 26510 - 11905: 0x968E, + 26511 - 11905: 0x968F, + 26512 - 11905: 0xCEF6, + 26513 - 11905: 0x9690, + 26514 - 11905: 0x9691, + 26515 - 11905: 0x9692, + 26516 - 11905: 0x9693, + 26517 - 11905: 0xD5ED, + 26518 - 11905: 0x9694, + 26519 - 11905: 0xC1D6, + 26520 - 11905: 0xE8C4, + 26521 - 11905: 0x9695, + 26522 - 11905: 0xC3B6, + 26523 - 11905: 0x9696, + 26524 - 11905: 0xB9FB, + 26525 - 11905: 0xD6A6, + 26526 - 11905: 0xE8C8, + 26527 - 11905: 0x9697, + 26528 - 11905: 0x9698, + 26529 - 11905: 0x9699, + 26530 - 11905: 0xCAE0, + 26531 - 11905: 0xD4E6, + 26532 - 11905: 0x969A, + 26533 - 11905: 0xE8C0, + 26534 - 11905: 0x969B, + 26535 - 11905: 0xE8C5, + 26536 - 11905: 0xE8C7, + 26537 - 11905: 0x969C, + 26538 - 11905: 0xC7B9, + 26539 - 11905: 0xB7E3, + 26540 - 11905: 0x969D, + 26541 - 11905: 0xE8C9, + 26542 - 11905: 0x969E, + 26543 - 11905: 0xBFDD, + 26544 - 11905: 0xE8D2, + 26545 - 11905: 0x969F, + 26546 - 11905: 0x96A0, + 26547 - 11905: 0xE8D7, + 26548 - 11905: 0x96A1, + 26549 - 11905: 0xE8D5, + 26550 - 11905: 0xBCDC, + 26551 - 11905: 0xBCCF, + 26552 - 11905: 0xE8DB, + 26553 - 11905: 0x96A2, + 26554 - 11905: 0x96A3, + 26555 - 11905: 0x96A4, + 26556 - 11905: 0x96A5, + 26557 - 11905: 0x96A6, + 26558 - 11905: 0x96A7, + 26559 - 11905: 0x96A8, + 26560 - 11905: 0x96A9, + 26561 - 11905: 0xE8DE, + 26562 - 11905: 0x96AA, + 26563 - 11905: 0xE8DA, + 26564 - 11905: 0xB1FA, + 26565 - 11905: 0x96AB, + 26566 - 11905: 0x96AC, + 26567 - 11905: 0x96AD, + 26568 - 11905: 0x96AE, + 26569 - 11905: 0x96AF, + 26570 - 11905: 0x96B0, + 26571 - 11905: 0x96B1, + 26572 - 11905: 0x96B2, + 26573 - 11905: 0x96B3, + 26574 - 11905: 0x96B4, + 26575 - 11905: 0xB0D8, + 26576 - 11905: 0xC4B3, + 26577 - 11905: 0xB8CC, + 26578 - 11905: 0xC6E2, + 26579 - 11905: 0xC8BE, + 26580 - 11905: 0xC8E1, + 26581 - 11905: 0x96B5, + 26582 - 11905: 0x96B6, + 26583 - 11905: 0x96B7, + 26584 - 11905: 0xE8CF, + 26585 - 11905: 0xE8D4, + 26586 - 11905: 0xE8D6, + 26587 - 11905: 0x96B8, + 26588 - 11905: 0xB9F1, + 26589 - 11905: 0xE8D8, + 26590 - 11905: 0xD7F5, + 26591 - 11905: 0x96B9, + 26592 - 11905: 0xC4FB, + 26593 - 11905: 0x96BA, + 26594 - 11905: 0xE8DC, + 26595 - 11905: 0x96BB, + 26596 - 11905: 0x96BC, + 26597 - 11905: 0xB2E9, + 26598 - 11905: 0x96BD, + 26599 - 11905: 0x96BE, + 26600 - 11905: 0x96BF, + 26601 - 11905: 0xE8D1, + 26602 - 11905: 0x96C0, + 26603 - 11905: 0x96C1, + 26604 - 11905: 0xBCED, + 26605 - 11905: 0x96C2, + 26606 - 11905: 0x96C3, + 26607 - 11905: 0xBFC2, + 26608 - 11905: 0xE8CD, + 26609 - 11905: 0xD6F9, + 26610 - 11905: 0x96C4, + 26611 - 11905: 0xC1F8, + 26612 - 11905: 0xB2F1, + 26613 - 11905: 0x96C5, + 26614 - 11905: 0x96C6, + 26615 - 11905: 0x96C7, + 26616 - 11905: 0x96C8, + 26617 - 11905: 0x96C9, + 26618 - 11905: 0x96CA, + 26619 - 11905: 0x96CB, + 26620 - 11905: 0x96CC, + 26621 - 11905: 0xE8DF, + 26622 - 11905: 0x96CD, + 26623 - 11905: 0xCAC1, + 26624 - 11905: 0xE8D9, + 26625 - 11905: 0x96CE, + 26626 - 11905: 0x96CF, + 26627 - 11905: 0x96D0, + 26628 - 11905: 0x96D1, + 26629 - 11905: 0xD5A4, + 26630 - 11905: 0x96D2, + 26631 - 11905: 0xB1EA, + 26632 - 11905: 0xD5BB, + 26633 - 11905: 0xE8CE, + 26634 - 11905: 0xE8D0, + 26635 - 11905: 0xB6B0, + 26636 - 11905: 0xE8D3, + 26637 - 11905: 0x96D3, + 26638 - 11905: 0xE8DD, + 26639 - 11905: 0xC0B8, + 26640 - 11905: 0x96D4, + 26641 - 11905: 0xCAF7, + 26642 - 11905: 0x96D5, + 26643 - 11905: 0xCBA8, + 26644 - 11905: 0x96D6, + 26645 - 11905: 0x96D7, + 26646 - 11905: 0xC6DC, + 26647 - 11905: 0xC0F5, + 26648 - 11905: 0x96D8, + 26649 - 11905: 0x96D9, + 26650 - 11905: 0x96DA, + 26651 - 11905: 0x96DB, + 26652 - 11905: 0x96DC, + 26653 - 11905: 0xE8E9, + 26654 - 11905: 0x96DD, + 26655 - 11905: 0x96DE, + 26656 - 11905: 0x96DF, + 26657 - 11905: 0xD0A3, + 26658 - 11905: 0x96E0, + 26659 - 11905: 0x96E1, + 26660 - 11905: 0x96E2, + 26661 - 11905: 0x96E3, + 26662 - 11905: 0x96E4, + 26663 - 11905: 0x96E5, + 26664 - 11905: 0x96E6, + 26665 - 11905: 0xE8F2, + 26666 - 11905: 0xD6EA, + 26667 - 11905: 0x96E7, + 26668 - 11905: 0x96E8, + 26669 - 11905: 0x96E9, + 26670 - 11905: 0x96EA, + 26671 - 11905: 0x96EB, + 26672 - 11905: 0x96EC, + 26673 - 11905: 0x96ED, + 26674 - 11905: 0xE8E0, + 26675 - 11905: 0xE8E1, + 26676 - 11905: 0x96EE, + 26677 - 11905: 0x96EF, + 26678 - 11905: 0x96F0, + 26679 - 11905: 0xD1F9, + 26680 - 11905: 0xBACB, + 26681 - 11905: 0xB8F9, + 26682 - 11905: 0x96F1, + 26683 - 11905: 0x96F2, + 26684 - 11905: 0xB8F1, + 26685 - 11905: 0xD4D4, + 26686 - 11905: 0xE8EF, + 26687 - 11905: 0x96F3, + 26688 - 11905: 0xE8EE, + 26689 - 11905: 0xE8EC, + 26690 - 11905: 0xB9F0, + 26691 - 11905: 0xCCD2, + 26692 - 11905: 0xE8E6, + 26693 - 11905: 0xCEA6, + 26694 - 11905: 0xBFF2, + 26695 - 11905: 0x96F4, + 26696 - 11905: 0xB0B8, + 26697 - 11905: 0xE8F1, + 26698 - 11905: 0xE8F0, + 26699 - 11905: 0x96F5, + 26700 - 11905: 0xD7C0, + 26701 - 11905: 0x96F6, + 26702 - 11905: 0xE8E4, + 26703 - 11905: 0x96F7, + 26704 - 11905: 0xCDA9, + 26705 - 11905: 0xC9A3, + 26706 - 11905: 0x96F8, + 26707 - 11905: 0xBBB8, + 26708 - 11905: 0xBDDB, + 26709 - 11905: 0xE8EA, + 26710 - 11905: 0x96F9, + 26711 - 11905: 0x96FA, + 26712 - 11905: 0x96FB, + 26713 - 11905: 0x96FC, + 26714 - 11905: 0x96FD, + 26715 - 11905: 0x96FE, + 26716 - 11905: 0x9740, + 26717 - 11905: 0x9741, + 26718 - 11905: 0x9742, + 26719 - 11905: 0x9743, + 26720 - 11905: 0xE8E2, + 26721 - 11905: 0xE8E3, + 26722 - 11905: 0xE8E5, + 26723 - 11905: 0xB5B5, + 26724 - 11905: 0xE8E7, + 26725 - 11905: 0xC7C5, + 26726 - 11905: 0xE8EB, + 26727 - 11905: 0xE8ED, + 26728 - 11905: 0xBDB0, + 26729 - 11905: 0xD7AE, + 26730 - 11905: 0x9744, + 26731 - 11905: 0xE8F8, + 26732 - 11905: 0x9745, + 26733 - 11905: 0x9746, + 26734 - 11905: 0x9747, + 26735 - 11905: 0x9748, + 26736 - 11905: 0x9749, + 26737 - 11905: 0x974A, + 26738 - 11905: 0x974B, + 26739 - 11905: 0x974C, + 26740 - 11905: 0xE8F5, + 26741 - 11905: 0x974D, + 26742 - 11905: 0xCDB0, + 26743 - 11905: 0xE8F6, + 26744 - 11905: 0x974E, + 26745 - 11905: 0x974F, + 26746 - 11905: 0x9750, + 26747 - 11905: 0x9751, + 26748 - 11905: 0x9752, + 26749 - 11905: 0x9753, + 26750 - 11905: 0x9754, + 26751 - 11905: 0x9755, + 26752 - 11905: 0x9756, + 26753 - 11905: 0xC1BA, + 26754 - 11905: 0x9757, + 26755 - 11905: 0xE8E8, + 26756 - 11905: 0x9758, + 26757 - 11905: 0xC3B7, + 26758 - 11905: 0xB0F0, + 26759 - 11905: 0x9759, + 26760 - 11905: 0x975A, + 26761 - 11905: 0x975B, + 26762 - 11905: 0x975C, + 26763 - 11905: 0x975D, + 26764 - 11905: 0x975E, + 26765 - 11905: 0x975F, + 26766 - 11905: 0x9760, + 26767 - 11905: 0xE8F4, + 26768 - 11905: 0x9761, + 26769 - 11905: 0x9762, + 26770 - 11905: 0x9763, + 26771 - 11905: 0xE8F7, + 26772 - 11905: 0x9764, + 26773 - 11905: 0x9765, + 26774 - 11905: 0x9766, + 26775 - 11905: 0xB9A3, + 26776 - 11905: 0x9767, + 26777 - 11905: 0x9768, + 26778 - 11905: 0x9769, + 26779 - 11905: 0x976A, + 26780 - 11905: 0x976B, + 26781 - 11905: 0x976C, + 26782 - 11905: 0x976D, + 26783 - 11905: 0x976E, + 26784 - 11905: 0x976F, + 26785 - 11905: 0x9770, + 26786 - 11905: 0xC9D2, + 26787 - 11905: 0x9771, + 26788 - 11905: 0x9772, + 26789 - 11905: 0x9773, + 26790 - 11905: 0xC3CE, + 26791 - 11905: 0xCEE0, + 26792 - 11905: 0xC0E6, + 26793 - 11905: 0x9774, + 26794 - 11905: 0x9775, + 26795 - 11905: 0x9776, + 26796 - 11905: 0x9777, + 26797 - 11905: 0xCBF3, + 26798 - 11905: 0x9778, + 26799 - 11905: 0xCCDD, + 26800 - 11905: 0xD0B5, + 26801 - 11905: 0x9779, + 26802 - 11905: 0x977A, + 26803 - 11905: 0xCAE1, + 26804 - 11905: 0x977B, + 26805 - 11905: 0xE8F3, + 26806 - 11905: 0x977C, + 26807 - 11905: 0x977D, + 26808 - 11905: 0x977E, + 26809 - 11905: 0x9780, + 26810 - 11905: 0x9781, + 26811 - 11905: 0x9782, + 26812 - 11905: 0x9783, + 26813 - 11905: 0x9784, + 26814 - 11905: 0x9785, + 26815 - 11905: 0x9786, + 26816 - 11905: 0xBCEC, + 26817 - 11905: 0x9787, + 26818 - 11905: 0xE8F9, + 26819 - 11905: 0x9788, + 26820 - 11905: 0x9789, + 26821 - 11905: 0x978A, + 26822 - 11905: 0x978B, + 26823 - 11905: 0x978C, + 26824 - 11905: 0x978D, + 26825 - 11905: 0xC3DE, + 26826 - 11905: 0x978E, + 26827 - 11905: 0xC6E5, + 26828 - 11905: 0x978F, + 26829 - 11905: 0xB9F7, + 26830 - 11905: 0x9790, + 26831 - 11905: 0x9791, + 26832 - 11905: 0x9792, + 26833 - 11905: 0x9793, + 26834 - 11905: 0xB0F4, + 26835 - 11905: 0x9794, + 26836 - 11905: 0x9795, + 26837 - 11905: 0xD7D8, + 26838 - 11905: 0x9796, + 26839 - 11905: 0x9797, + 26840 - 11905: 0xBCAC, + 26841 - 11905: 0x9798, + 26842 - 11905: 0xC5EF, + 26843 - 11905: 0x9799, + 26844 - 11905: 0x979A, + 26845 - 11905: 0x979B, + 26846 - 11905: 0x979C, + 26847 - 11905: 0x979D, + 26848 - 11905: 0xCCC4, + 26849 - 11905: 0x979E, + 26850 - 11905: 0x979F, + 26851 - 11905: 0xE9A6, + 26852 - 11905: 0x97A0, + 26853 - 11905: 0x97A1, + 26854 - 11905: 0x97A2, + 26855 - 11905: 0x97A3, + 26856 - 11905: 0x97A4, + 26857 - 11905: 0x97A5, + 26858 - 11905: 0x97A6, + 26859 - 11905: 0x97A7, + 26860 - 11905: 0x97A8, + 26861 - 11905: 0x97A9, + 26862 - 11905: 0xC9AD, + 26863 - 11905: 0x97AA, + 26864 - 11905: 0xE9A2, + 26865 - 11905: 0xC0E2, + 26866 - 11905: 0x97AB, + 26867 - 11905: 0x97AC, + 26868 - 11905: 0x97AD, + 26869 - 11905: 0xBFC3, + 26870 - 11905: 0x97AE, + 26871 - 11905: 0x97AF, + 26872 - 11905: 0x97B0, + 26873 - 11905: 0xE8FE, + 26874 - 11905: 0xB9D7, + 26875 - 11905: 0x97B1, + 26876 - 11905: 0xE8FB, + 26877 - 11905: 0x97B2, + 26878 - 11905: 0x97B3, + 26879 - 11905: 0x97B4, + 26880 - 11905: 0x97B5, + 26881 - 11905: 0xE9A4, + 26882 - 11905: 0x97B6, + 26883 - 11905: 0x97B7, + 26884 - 11905: 0x97B8, + 26885 - 11905: 0xD2CE, + 26886 - 11905: 0x97B9, + 26887 - 11905: 0x97BA, + 26888 - 11905: 0x97BB, + 26889 - 11905: 0x97BC, + 26890 - 11905: 0x97BD, + 26891 - 11905: 0xE9A3, + 26892 - 11905: 0x97BE, + 26893 - 11905: 0xD6B2, + 26894 - 11905: 0xD7B5, + 26895 - 11905: 0x97BF, + 26896 - 11905: 0xE9A7, + 26897 - 11905: 0x97C0, + 26898 - 11905: 0xBDB7, + 26899 - 11905: 0x97C1, + 26900 - 11905: 0x97C2, + 26901 - 11905: 0x97C3, + 26902 - 11905: 0x97C4, + 26903 - 11905: 0x97C5, + 26904 - 11905: 0x97C6, + 26905 - 11905: 0x97C7, + 26906 - 11905: 0x97C8, + 26907 - 11905: 0x97C9, + 26908 - 11905: 0x97CA, + 26909 - 11905: 0x97CB, + 26910 - 11905: 0x97CC, + 26911 - 11905: 0xE8FC, + 26912 - 11905: 0xE8FD, + 26913 - 11905: 0x97CD, + 26914 - 11905: 0x97CE, + 26915 - 11905: 0x97CF, + 26916 - 11905: 0xE9A1, + 26917 - 11905: 0x97D0, + 26918 - 11905: 0x97D1, + 26919 - 11905: 0x97D2, + 26920 - 11905: 0x97D3, + 26921 - 11905: 0x97D4, + 26922 - 11905: 0x97D5, + 26923 - 11905: 0x97D6, + 26924 - 11905: 0x97D7, + 26925 - 11905: 0xCDD6, + 26926 - 11905: 0x97D8, + 26927 - 11905: 0x97D9, + 26928 - 11905: 0xD2AC, + 26929 - 11905: 0x97DA, + 26930 - 11905: 0x97DB, + 26931 - 11905: 0x97DC, + 26932 - 11905: 0xE9B2, + 26933 - 11905: 0x97DD, + 26934 - 11905: 0x97DE, + 26935 - 11905: 0x97DF, + 26936 - 11905: 0x97E0, + 26937 - 11905: 0xE9A9, + 26938 - 11905: 0x97E1, + 26939 - 11905: 0x97E2, + 26940 - 11905: 0x97E3, + 26941 - 11905: 0xB4AA, + 26942 - 11905: 0x97E4, + 26943 - 11905: 0xB4BB, + 26944 - 11905: 0x97E5, + 26945 - 11905: 0x97E6, + 26946 - 11905: 0xE9AB, + 26947 - 11905: 0x97E7, + 26948 - 11905: 0x97E8, + 26949 - 11905: 0x97E9, + 26950 - 11905: 0x97EA, + 26951 - 11905: 0x97EB, + 26952 - 11905: 0x97EC, + 26953 - 11905: 0x97ED, + 26954 - 11905: 0x97EE, + 26955 - 11905: 0x97EF, + 26956 - 11905: 0x97F0, + 26957 - 11905: 0x97F1, + 26958 - 11905: 0x97F2, + 26959 - 11905: 0x97F3, + 26960 - 11905: 0x97F4, + 26961 - 11905: 0x97F5, + 26962 - 11905: 0x97F6, + 26963 - 11905: 0x97F7, + 26964 - 11905: 0xD0A8, + 26965 - 11905: 0x97F8, + 26966 - 11905: 0x97F9, + 26967 - 11905: 0xE9A5, + 26968 - 11905: 0x97FA, + 26969 - 11905: 0x97FB, + 26970 - 11905: 0xB3FE, + 26971 - 11905: 0x97FC, + 26972 - 11905: 0x97FD, + 26973 - 11905: 0xE9AC, + 26974 - 11905: 0xC0E3, + 26975 - 11905: 0x97FE, + 26976 - 11905: 0xE9AA, + 26977 - 11905: 0x9840, + 26978 - 11905: 0x9841, + 26979 - 11905: 0xE9B9, + 26980 - 11905: 0x9842, + 26981 - 11905: 0x9843, + 26982 - 11905: 0xE9B8, + 26983 - 11905: 0x9844, + 26984 - 11905: 0x9845, + 26985 - 11905: 0x9846, + 26986 - 11905: 0x9847, + 26987 - 11905: 0xE9AE, + 26988 - 11905: 0x9848, + 26989 - 11905: 0x9849, + 26990 - 11905: 0xE8FA, + 26991 - 11905: 0x984A, + 26992 - 11905: 0x984B, + 26993 - 11905: 0xE9A8, + 26994 - 11905: 0x984C, + 26995 - 11905: 0x984D, + 26996 - 11905: 0x984E, + 26997 - 11905: 0x984F, + 26998 - 11905: 0x9850, + 26999 - 11905: 0xBFAC, + 27000 - 11905: 0xE9B1, + 27001 - 11905: 0xE9BA, + 27002 - 11905: 0x9851, + 27003 - 11905: 0x9852, + 27004 - 11905: 0xC2A5, + 27005 - 11905: 0x9853, + 27006 - 11905: 0x9854, + 27007 - 11905: 0x9855, + 27008 - 11905: 0xE9AF, + 27009 - 11905: 0x9856, + 27010 - 11905: 0xB8C5, + 27011 - 11905: 0x9857, + 27012 - 11905: 0xE9AD, + 27013 - 11905: 0x9858, + 27014 - 11905: 0xD3DC, + 27015 - 11905: 0xE9B4, + 27016 - 11905: 0xE9B5, + 27017 - 11905: 0xE9B7, + 27018 - 11905: 0x9859, + 27019 - 11905: 0x985A, + 27020 - 11905: 0x985B, + 27021 - 11905: 0xE9C7, + 27022 - 11905: 0x985C, + 27023 - 11905: 0x985D, + 27024 - 11905: 0x985E, + 27025 - 11905: 0x985F, + 27026 - 11905: 0x9860, + 27027 - 11905: 0x9861, + 27028 - 11905: 0xC0C6, + 27029 - 11905: 0xE9C5, + 27030 - 11905: 0x9862, + 27031 - 11905: 0x9863, + 27032 - 11905: 0xE9B0, + 27033 - 11905: 0x9864, + 27034 - 11905: 0x9865, + 27035 - 11905: 0xE9BB, + 27036 - 11905: 0xB0F1, + 27037 - 11905: 0x9866, + 27038 - 11905: 0x9867, + 27039 - 11905: 0x9868, + 27040 - 11905: 0x9869, + 27041 - 11905: 0x986A, + 27042 - 11905: 0x986B, + 27043 - 11905: 0x986C, + 27044 - 11905: 0x986D, + 27045 - 11905: 0x986E, + 27046 - 11905: 0x986F, + 27047 - 11905: 0xE9BC, + 27048 - 11905: 0xD5A5, + 27049 - 11905: 0x9870, + 27050 - 11905: 0x9871, + 27051 - 11905: 0xE9BE, + 27052 - 11905: 0x9872, + 27053 - 11905: 0xE9BF, + 27054 - 11905: 0x9873, + 27055 - 11905: 0x9874, + 27056 - 11905: 0x9875, + 27057 - 11905: 0xE9C1, + 27058 - 11905: 0x9876, + 27059 - 11905: 0x9877, + 27060 - 11905: 0xC1F1, + 27061 - 11905: 0x9878, + 27062 - 11905: 0x9879, + 27063 - 11905: 0xC8B6, + 27064 - 11905: 0x987A, + 27065 - 11905: 0x987B, + 27066 - 11905: 0x987C, + 27067 - 11905: 0xE9BD, + 27068 - 11905: 0x987D, + 27069 - 11905: 0x987E, + 27070 - 11905: 0x9880, + 27071 - 11905: 0x9881, + 27072 - 11905: 0x9882, + 27073 - 11905: 0xE9C2, + 27074 - 11905: 0x9883, + 27075 - 11905: 0x9884, + 27076 - 11905: 0x9885, + 27077 - 11905: 0x9886, + 27078 - 11905: 0x9887, + 27079 - 11905: 0x9888, + 27080 - 11905: 0x9889, + 27081 - 11905: 0x988A, + 27082 - 11905: 0xE9C3, + 27083 - 11905: 0x988B, + 27084 - 11905: 0xE9B3, + 27085 - 11905: 0x988C, + 27086 - 11905: 0xE9B6, + 27087 - 11905: 0x988D, + 27088 - 11905: 0xBBB1, + 27089 - 11905: 0x988E, + 27090 - 11905: 0x988F, + 27091 - 11905: 0x9890, + 27092 - 11905: 0xE9C0, + 27093 - 11905: 0x9891, + 27094 - 11905: 0x9892, + 27095 - 11905: 0x9893, + 27096 - 11905: 0x9894, + 27097 - 11905: 0x9895, + 27098 - 11905: 0x9896, + 27099 - 11905: 0xBCF7, + 27100 - 11905: 0x9897, + 27101 - 11905: 0x9898, + 27102 - 11905: 0x9899, + 27103 - 11905: 0xE9C4, + 27104 - 11905: 0xE9C6, + 27105 - 11905: 0x989A, + 27106 - 11905: 0x989B, + 27107 - 11905: 0x989C, + 27108 - 11905: 0x989D, + 27109 - 11905: 0x989E, + 27110 - 11905: 0x989F, + 27111 - 11905: 0x98A0, + 27112 - 11905: 0x98A1, + 27113 - 11905: 0x98A2, + 27114 - 11905: 0x98A3, + 27115 - 11905: 0x98A4, + 27116 - 11905: 0x98A5, + 27117 - 11905: 0xE9CA, + 27118 - 11905: 0x98A6, + 27119 - 11905: 0x98A7, + 27120 - 11905: 0x98A8, + 27121 - 11905: 0x98A9, + 27122 - 11905: 0xE9CE, + 27123 - 11905: 0x98AA, + 27124 - 11905: 0x98AB, + 27125 - 11905: 0x98AC, + 27126 - 11905: 0x98AD, + 27127 - 11905: 0x98AE, + 27128 - 11905: 0x98AF, + 27129 - 11905: 0x98B0, + 27130 - 11905: 0x98B1, + 27131 - 11905: 0x98B2, + 27132 - 11905: 0x98B3, + 27133 - 11905: 0xB2DB, + 27134 - 11905: 0x98B4, + 27135 - 11905: 0xE9C8, + 27136 - 11905: 0x98B5, + 27137 - 11905: 0x98B6, + 27138 - 11905: 0x98B7, + 27139 - 11905: 0x98B8, + 27140 - 11905: 0x98B9, + 27141 - 11905: 0x98BA, + 27142 - 11905: 0x98BB, + 27143 - 11905: 0x98BC, + 27144 - 11905: 0x98BD, + 27145 - 11905: 0x98BE, + 27146 - 11905: 0xB7AE, + 27147 - 11905: 0x98BF, + 27148 - 11905: 0x98C0, + 27149 - 11905: 0x98C1, + 27150 - 11905: 0x98C2, + 27151 - 11905: 0x98C3, + 27152 - 11905: 0x98C4, + 27153 - 11905: 0x98C5, + 27154 - 11905: 0x98C6, + 27155 - 11905: 0x98C7, + 27156 - 11905: 0x98C8, + 27157 - 11905: 0x98C9, + 27158 - 11905: 0x98CA, + 27159 - 11905: 0xE9CB, + 27160 - 11905: 0xE9CC, + 27161 - 11905: 0x98CB, + 27162 - 11905: 0x98CC, + 27163 - 11905: 0x98CD, + 27164 - 11905: 0x98CE, + 27165 - 11905: 0x98CF, + 27166 - 11905: 0x98D0, + 27167 - 11905: 0xD5C1, + 27168 - 11905: 0x98D1, + 27169 - 11905: 0xC4A3, + 27170 - 11905: 0x98D2, + 27171 - 11905: 0x98D3, + 27172 - 11905: 0x98D4, + 27173 - 11905: 0x98D5, + 27174 - 11905: 0x98D6, + 27175 - 11905: 0x98D7, + 27176 - 11905: 0xE9D8, + 27177 - 11905: 0x98D8, + 27178 - 11905: 0xBAE1, + 27179 - 11905: 0x98D9, + 27180 - 11905: 0x98DA, + 27181 - 11905: 0x98DB, + 27182 - 11905: 0x98DC, + 27183 - 11905: 0xE9C9, + 27184 - 11905: 0x98DD, + 27185 - 11905: 0xD3A3, + 27186 - 11905: 0x98DE, + 27187 - 11905: 0x98DF, + 27188 - 11905: 0x98E0, + 27189 - 11905: 0xE9D4, + 27190 - 11905: 0x98E1, + 27191 - 11905: 0x98E2, + 27192 - 11905: 0x98E3, + 27193 - 11905: 0x98E4, + 27194 - 11905: 0x98E5, + 27195 - 11905: 0x98E6, + 27196 - 11905: 0x98E7, + 27197 - 11905: 0xE9D7, + 27198 - 11905: 0xE9D0, + 27199 - 11905: 0x98E8, + 27200 - 11905: 0x98E9, + 27201 - 11905: 0x98EA, + 27202 - 11905: 0x98EB, + 27203 - 11905: 0x98EC, + 27204 - 11905: 0xE9CF, + 27205 - 11905: 0x98ED, + 27206 - 11905: 0x98EE, + 27207 - 11905: 0xC7C1, + 27208 - 11905: 0x98EF, + 27209 - 11905: 0x98F0, + 27210 - 11905: 0x98F1, + 27211 - 11905: 0x98F2, + 27212 - 11905: 0x98F3, + 27213 - 11905: 0x98F4, + 27214 - 11905: 0x98F5, + 27215 - 11905: 0x98F6, + 27216 - 11905: 0xE9D2, + 27217 - 11905: 0x98F7, + 27218 - 11905: 0x98F8, + 27219 - 11905: 0x98F9, + 27220 - 11905: 0x98FA, + 27221 - 11905: 0x98FB, + 27222 - 11905: 0x98FC, + 27223 - 11905: 0x98FD, + 27224 - 11905: 0xE9D9, + 27225 - 11905: 0xB3C8, + 27226 - 11905: 0x98FE, + 27227 - 11905: 0xE9D3, + 27228 - 11905: 0x9940, + 27229 - 11905: 0x9941, + 27230 - 11905: 0x9942, + 27231 - 11905: 0x9943, + 27232 - 11905: 0x9944, + 27233 - 11905: 0xCFF0, + 27234 - 11905: 0x9945, + 27235 - 11905: 0x9946, + 27236 - 11905: 0x9947, + 27237 - 11905: 0xE9CD, + 27238 - 11905: 0x9948, + 27239 - 11905: 0x9949, + 27240 - 11905: 0x994A, + 27241 - 11905: 0x994B, + 27242 - 11905: 0x994C, + 27243 - 11905: 0x994D, + 27244 - 11905: 0x994E, + 27245 - 11905: 0x994F, + 27246 - 11905: 0x9950, + 27247 - 11905: 0x9951, + 27248 - 11905: 0x9952, + 27249 - 11905: 0xB3F7, + 27250 - 11905: 0x9953, + 27251 - 11905: 0x9954, + 27252 - 11905: 0x9955, + 27253 - 11905: 0x9956, + 27254 - 11905: 0x9957, + 27255 - 11905: 0x9958, + 27256 - 11905: 0x9959, + 27257 - 11905: 0xE9D6, + 27258 - 11905: 0x995A, + 27259 - 11905: 0x995B, + 27260 - 11905: 0xE9DA, + 27261 - 11905: 0x995C, + 27262 - 11905: 0x995D, + 27263 - 11905: 0x995E, + 27264 - 11905: 0xCCB4, + 27265 - 11905: 0x995F, + 27266 - 11905: 0x9960, + 27267 - 11905: 0x9961, + 27268 - 11905: 0xCFAD, + 27269 - 11905: 0x9962, + 27270 - 11905: 0x9963, + 27271 - 11905: 0x9964, + 27272 - 11905: 0x9965, + 27273 - 11905: 0x9966, + 27274 - 11905: 0x9967, + 27275 - 11905: 0x9968, + 27276 - 11905: 0x9969, + 27277 - 11905: 0x996A, + 27278 - 11905: 0xE9D5, + 27279 - 11905: 0x996B, + 27280 - 11905: 0xE9DC, + 27281 - 11905: 0xE9DB, + 27282 - 11905: 0x996C, + 27283 - 11905: 0x996D, + 27284 - 11905: 0x996E, + 27285 - 11905: 0x996F, + 27286 - 11905: 0x9970, + 27287 - 11905: 0xE9DE, + 27288 - 11905: 0x9971, + 27289 - 11905: 0x9972, + 27290 - 11905: 0x9973, + 27291 - 11905: 0x9974, + 27292 - 11905: 0x9975, + 27293 - 11905: 0x9976, + 27294 - 11905: 0x9977, + 27295 - 11905: 0x9978, + 27296 - 11905: 0xE9D1, + 27297 - 11905: 0x9979, + 27298 - 11905: 0x997A, + 27299 - 11905: 0x997B, + 27300 - 11905: 0x997C, + 27301 - 11905: 0x997D, + 27302 - 11905: 0x997E, + 27303 - 11905: 0x9980, + 27304 - 11905: 0x9981, + 27305 - 11905: 0xE9DD, + 27306 - 11905: 0x9982, + 27307 - 11905: 0xE9DF, + 27308 - 11905: 0xC3CA, + 27309 - 11905: 0x9983, + 27310 - 11905: 0x9984, + 27311 - 11905: 0x9985, + 27312 - 11905: 0x9986, + 27313 - 11905: 0x9987, + 27314 - 11905: 0x9988, + 27315 - 11905: 0x9989, + 27316 - 11905: 0x998A, + 27317 - 11905: 0x998B, + 27318 - 11905: 0x998C, + 27319 - 11905: 0x998D, + 27320 - 11905: 0x998E, + 27321 - 11905: 0x998F, + 27322 - 11905: 0x9990, + 27323 - 11905: 0x9991, + 27324 - 11905: 0x9992, + 27325 - 11905: 0x9993, + 27326 - 11905: 0x9994, + 27327 - 11905: 0x9995, + 27328 - 11905: 0x9996, + 27329 - 11905: 0x9997, + 27330 - 11905: 0x9998, + 27331 - 11905: 0x9999, + 27332 - 11905: 0x999A, + 27333 - 11905: 0x999B, + 27334 - 11905: 0x999C, + 27335 - 11905: 0x999D, + 27336 - 11905: 0x999E, + 27337 - 11905: 0x999F, + 27338 - 11905: 0x99A0, + 27339 - 11905: 0x99A1, + 27340 - 11905: 0x99A2, + 27341 - 11905: 0x99A3, + 27342 - 11905: 0x99A4, + 27343 - 11905: 0x99A5, + 27344 - 11905: 0x99A6, + 27345 - 11905: 0x99A7, + 27346 - 11905: 0x99A8, + 27347 - 11905: 0x99A9, + 27348 - 11905: 0x99AA, + 27349 - 11905: 0x99AB, + 27350 - 11905: 0x99AC, + 27351 - 11905: 0x99AD, + 27352 - 11905: 0x99AE, + 27353 - 11905: 0x99AF, + 27354 - 11905: 0x99B0, + 27355 - 11905: 0x99B1, + 27356 - 11905: 0x99B2, + 27357 - 11905: 0x99B3, + 27358 - 11905: 0x99B4, + 27359 - 11905: 0x99B5, + 27360 - 11905: 0x99B6, + 27361 - 11905: 0x99B7, + 27362 - 11905: 0x99B8, + 27363 - 11905: 0x99B9, + 27364 - 11905: 0x99BA, + 27365 - 11905: 0x99BB, + 27366 - 11905: 0x99BC, + 27367 - 11905: 0x99BD, + 27368 - 11905: 0x99BE, + 27369 - 11905: 0x99BF, + 27370 - 11905: 0x99C0, + 27371 - 11905: 0x99C1, + 27372 - 11905: 0x99C2, + 27373 - 11905: 0x99C3, + 27374 - 11905: 0x99C4, + 27375 - 11905: 0x99C5, + 27376 - 11905: 0x99C6, + 27377 - 11905: 0x99C7, + 27378 - 11905: 0x99C8, + 27379 - 11905: 0x99C9, + 27380 - 11905: 0x99CA, + 27381 - 11905: 0x99CB, + 27382 - 11905: 0x99CC, + 27383 - 11905: 0x99CD, + 27384 - 11905: 0x99CE, + 27385 - 11905: 0x99CF, + 27386 - 11905: 0x99D0, + 27387 - 11905: 0x99D1, + 27388 - 11905: 0x99D2, + 27389 - 11905: 0x99D3, + 27390 - 11905: 0x99D4, + 27391 - 11905: 0x99D5, + 27392 - 11905: 0x99D6, + 27393 - 11905: 0x99D7, + 27394 - 11905: 0x99D8, + 27395 - 11905: 0x99D9, + 27396 - 11905: 0x99DA, + 27397 - 11905: 0x99DB, + 27398 - 11905: 0x99DC, + 27399 - 11905: 0x99DD, + 27400 - 11905: 0x99DE, + 27401 - 11905: 0x99DF, + 27402 - 11905: 0x99E0, + 27403 - 11905: 0x99E1, + 27404 - 11905: 0x99E2, + 27405 - 11905: 0x99E3, + 27406 - 11905: 0x99E4, + 27407 - 11905: 0x99E5, + 27408 - 11905: 0x99E6, + 27409 - 11905: 0x99E7, + 27410 - 11905: 0x99E8, + 27411 - 11905: 0x99E9, + 27412 - 11905: 0x99EA, + 27413 - 11905: 0x99EB, + 27414 - 11905: 0x99EC, + 27415 - 11905: 0x99ED, + 27416 - 11905: 0x99EE, + 27417 - 11905: 0x99EF, + 27418 - 11905: 0x99F0, + 27419 - 11905: 0x99F1, + 27420 - 11905: 0x99F2, + 27421 - 11905: 0x99F3, + 27422 - 11905: 0x99F4, + 27423 - 11905: 0x99F5, + 27424 - 11905: 0xC7B7, + 27425 - 11905: 0xB4CE, + 27426 - 11905: 0xBBB6, + 27427 - 11905: 0xD0C0, + 27428 - 11905: 0xECA3, + 27429 - 11905: 0x99F6, + 27430 - 11905: 0x99F7, + 27431 - 11905: 0xC5B7, + 27432 - 11905: 0x99F8, + 27433 - 11905: 0x99F9, + 27434 - 11905: 0x99FA, + 27435 - 11905: 0x99FB, + 27436 - 11905: 0x99FC, + 27437 - 11905: 0x99FD, + 27438 - 11905: 0x99FE, + 27439 - 11905: 0x9A40, + 27440 - 11905: 0x9A41, + 27441 - 11905: 0x9A42, + 27442 - 11905: 0xD3FB, + 27443 - 11905: 0x9A43, + 27444 - 11905: 0x9A44, + 27445 - 11905: 0x9A45, + 27446 - 11905: 0x9A46, + 27447 - 11905: 0xECA4, + 27448 - 11905: 0x9A47, + 27449 - 11905: 0xECA5, + 27450 - 11905: 0xC6DB, + 27451 - 11905: 0x9A48, + 27452 - 11905: 0x9A49, + 27453 - 11905: 0x9A4A, + 27454 - 11905: 0xBFEE, + 27455 - 11905: 0x9A4B, + 27456 - 11905: 0x9A4C, + 27457 - 11905: 0x9A4D, + 27458 - 11905: 0x9A4E, + 27459 - 11905: 0xECA6, + 27460 - 11905: 0x9A4F, + 27461 - 11905: 0x9A50, + 27462 - 11905: 0xECA7, + 27463 - 11905: 0xD0AA, + 27464 - 11905: 0x9A51, + 27465 - 11905: 0xC7B8, + 27466 - 11905: 0x9A52, + 27467 - 11905: 0x9A53, + 27468 - 11905: 0xB8E8, + 27469 - 11905: 0x9A54, + 27470 - 11905: 0x9A55, + 27471 - 11905: 0x9A56, + 27472 - 11905: 0x9A57, + 27473 - 11905: 0x9A58, + 27474 - 11905: 0x9A59, + 27475 - 11905: 0x9A5A, + 27476 - 11905: 0x9A5B, + 27477 - 11905: 0x9A5C, + 27478 - 11905: 0x9A5D, + 27479 - 11905: 0x9A5E, + 27480 - 11905: 0x9A5F, + 27481 - 11905: 0xECA8, + 27482 - 11905: 0x9A60, + 27483 - 11905: 0x9A61, + 27484 - 11905: 0x9A62, + 27485 - 11905: 0x9A63, + 27486 - 11905: 0x9A64, + 27487 - 11905: 0x9A65, + 27488 - 11905: 0x9A66, + 27489 - 11905: 0x9A67, + 27490 - 11905: 0xD6B9, + 27491 - 11905: 0xD5FD, + 27492 - 11905: 0xB4CB, + 27493 - 11905: 0xB2BD, + 27494 - 11905: 0xCEE4, + 27495 - 11905: 0xC6E7, + 27496 - 11905: 0x9A68, + 27497 - 11905: 0x9A69, + 27498 - 11905: 0xCDE1, + 27499 - 11905: 0x9A6A, + 27500 - 11905: 0x9A6B, + 27501 - 11905: 0x9A6C, + 27502 - 11905: 0x9A6D, + 27503 - 11905: 0x9A6E, + 27504 - 11905: 0x9A6F, + 27505 - 11905: 0x9A70, + 27506 - 11905: 0x9A71, + 27507 - 11905: 0x9A72, + 27508 - 11905: 0x9A73, + 27509 - 11905: 0x9A74, + 27510 - 11905: 0x9A75, + 27511 - 11905: 0x9A76, + 27512 - 11905: 0x9A77, + 27513 - 11905: 0xB4F5, + 27514 - 11905: 0x9A78, + 27515 - 11905: 0xCBC0, + 27516 - 11905: 0xBCDF, + 27517 - 11905: 0x9A79, + 27518 - 11905: 0x9A7A, + 27519 - 11905: 0x9A7B, + 27520 - 11905: 0x9A7C, + 27521 - 11905: 0xE9E2, + 27522 - 11905: 0xE9E3, + 27523 - 11905: 0xD1EA, + 27524 - 11905: 0xE9E5, + 27525 - 11905: 0x9A7D, + 27526 - 11905: 0xB4F9, + 27527 - 11905: 0xE9E4, + 27528 - 11905: 0x9A7E, + 27529 - 11905: 0xD1B3, + 27530 - 11905: 0xCAE2, + 27531 - 11905: 0xB2D0, + 27532 - 11905: 0x9A80, + 27533 - 11905: 0xE9E8, + 27534 - 11905: 0x9A81, + 27535 - 11905: 0x9A82, + 27536 - 11905: 0x9A83, + 27537 - 11905: 0x9A84, + 27538 - 11905: 0xE9E6, + 27539 - 11905: 0xE9E7, + 27540 - 11905: 0x9A85, + 27541 - 11905: 0x9A86, + 27542 - 11905: 0xD6B3, + 27543 - 11905: 0x9A87, + 27544 - 11905: 0x9A88, + 27545 - 11905: 0x9A89, + 27546 - 11905: 0xE9E9, + 27547 - 11905: 0xE9EA, + 27548 - 11905: 0x9A8A, + 27549 - 11905: 0x9A8B, + 27550 - 11905: 0x9A8C, + 27551 - 11905: 0x9A8D, + 27552 - 11905: 0x9A8E, + 27553 - 11905: 0xE9EB, + 27554 - 11905: 0x9A8F, + 27555 - 11905: 0x9A90, + 27556 - 11905: 0x9A91, + 27557 - 11905: 0x9A92, + 27558 - 11905: 0x9A93, + 27559 - 11905: 0x9A94, + 27560 - 11905: 0x9A95, + 27561 - 11905: 0x9A96, + 27562 - 11905: 0xE9EC, + 27563 - 11905: 0x9A97, + 27564 - 11905: 0x9A98, + 27565 - 11905: 0x9A99, + 27566 - 11905: 0x9A9A, + 27567 - 11905: 0x9A9B, + 27568 - 11905: 0x9A9C, + 27569 - 11905: 0x9A9D, + 27570 - 11905: 0x9A9E, + 27571 - 11905: 0xECAF, + 27572 - 11905: 0xC5B9, + 27573 - 11905: 0xB6CE, + 27574 - 11905: 0x9A9F, + 27575 - 11905: 0xD2F3, + 27576 - 11905: 0x9AA0, + 27577 - 11905: 0x9AA1, + 27578 - 11905: 0x9AA2, + 27579 - 11905: 0x9AA3, + 27580 - 11905: 0x9AA4, + 27581 - 11905: 0x9AA5, + 27582 - 11905: 0x9AA6, + 27583 - 11905: 0xB5EE, + 27584 - 11905: 0x9AA7, + 27585 - 11905: 0xBBD9, + 27586 - 11905: 0xECB1, + 27587 - 11905: 0x9AA8, + 27588 - 11905: 0x9AA9, + 27589 - 11905: 0xD2E3, + 27590 - 11905: 0x9AAA, + 27591 - 11905: 0x9AAB, + 27592 - 11905: 0x9AAC, + 27593 - 11905: 0x9AAD, + 27594 - 11905: 0x9AAE, + 27595 - 11905: 0xCEE3, + 27596 - 11905: 0x9AAF, + 27597 - 11905: 0xC4B8, + 27598 - 11905: 0x9AB0, + 27599 - 11905: 0xC3BF, + 27600 - 11905: 0x9AB1, + 27601 - 11905: 0x9AB2, + 27602 - 11905: 0xB6BE, + 27603 - 11905: 0xD8B9, + 27604 - 11905: 0xB1C8, + 27605 - 11905: 0xB1CF, + 27606 - 11905: 0xB1D1, + 27607 - 11905: 0xC5FE, + 27608 - 11905: 0x9AB3, + 27609 - 11905: 0xB1D0, + 27610 - 11905: 0x9AB4, + 27611 - 11905: 0xC3AB, + 27612 - 11905: 0x9AB5, + 27613 - 11905: 0x9AB6, + 27614 - 11905: 0x9AB7, + 27615 - 11905: 0x9AB8, + 27616 - 11905: 0x9AB9, + 27617 - 11905: 0xD5B1, + 27618 - 11905: 0x9ABA, + 27619 - 11905: 0x9ABB, + 27620 - 11905: 0x9ABC, + 27621 - 11905: 0x9ABD, + 27622 - 11905: 0x9ABE, + 27623 - 11905: 0x9ABF, + 27624 - 11905: 0x9AC0, + 27625 - 11905: 0x9AC1, + 27626 - 11905: 0xEBA4, + 27627 - 11905: 0xBAC1, + 27628 - 11905: 0x9AC2, + 27629 - 11905: 0x9AC3, + 27630 - 11905: 0x9AC4, + 27631 - 11905: 0xCCBA, + 27632 - 11905: 0x9AC5, + 27633 - 11905: 0x9AC6, + 27634 - 11905: 0x9AC7, + 27635 - 11905: 0xEBA5, + 27636 - 11905: 0x9AC8, + 27637 - 11905: 0xEBA7, + 27638 - 11905: 0x9AC9, + 27639 - 11905: 0x9ACA, + 27640 - 11905: 0x9ACB, + 27641 - 11905: 0xEBA8, + 27642 - 11905: 0x9ACC, + 27643 - 11905: 0x9ACD, + 27644 - 11905: 0x9ACE, + 27645 - 11905: 0xEBA6, + 27646 - 11905: 0x9ACF, + 27647 - 11905: 0x9AD0, + 27648 - 11905: 0x9AD1, + 27649 - 11905: 0x9AD2, + 27650 - 11905: 0x9AD3, + 27651 - 11905: 0x9AD4, + 27652 - 11905: 0x9AD5, + 27653 - 11905: 0xEBA9, + 27654 - 11905: 0xEBAB, + 27655 - 11905: 0xEBAA, + 27656 - 11905: 0x9AD6, + 27657 - 11905: 0x9AD7, + 27658 - 11905: 0x9AD8, + 27659 - 11905: 0x9AD9, + 27660 - 11905: 0x9ADA, + 27661 - 11905: 0xEBAC, + 27662 - 11905: 0x9ADB, + 27663 - 11905: 0xCACF, + 27664 - 11905: 0xD8B5, + 27665 - 11905: 0xC3F1, + 27666 - 11905: 0x9ADC, + 27667 - 11905: 0xC3A5, + 27668 - 11905: 0xC6F8, + 27669 - 11905: 0xEBAD, + 27670 - 11905: 0xC4CA, + 27671 - 11905: 0x9ADD, + 27672 - 11905: 0xEBAE, + 27673 - 11905: 0xEBAF, + 27674 - 11905: 0xEBB0, + 27675 - 11905: 0xB7D5, + 27676 - 11905: 0x9ADE, + 27677 - 11905: 0x9ADF, + 27678 - 11905: 0x9AE0, + 27679 - 11905: 0xB7FA, + 27680 - 11905: 0x9AE1, + 27681 - 11905: 0xEBB1, + 27682 - 11905: 0xC7E2, + 27683 - 11905: 0x9AE2, + 27684 - 11905: 0xEBB3, + 27685 - 11905: 0x9AE3, + 27686 - 11905: 0xBAA4, + 27687 - 11905: 0xD1F5, + 27688 - 11905: 0xB0B1, + 27689 - 11905: 0xEBB2, + 27690 - 11905: 0xEBB4, + 27691 - 11905: 0x9AE4, + 27692 - 11905: 0x9AE5, + 27693 - 11905: 0x9AE6, + 27694 - 11905: 0xB5AA, + 27695 - 11905: 0xC2C8, + 27696 - 11905: 0xC7E8, + 27697 - 11905: 0x9AE7, + 27698 - 11905: 0xEBB5, + 27699 - 11905: 0x9AE8, + 27700 - 11905: 0xCBAE, + 27701 - 11905: 0xE3DF, + 27702 - 11905: 0x9AE9, + 27703 - 11905: 0x9AEA, + 27704 - 11905: 0xD3C0, + 27705 - 11905: 0x9AEB, + 27706 - 11905: 0x9AEC, + 27707 - 11905: 0x9AED, + 27708 - 11905: 0x9AEE, + 27709 - 11905: 0xD9DB, + 27710 - 11905: 0x9AEF, + 27711 - 11905: 0x9AF0, + 27712 - 11905: 0xCDA1, + 27713 - 11905: 0xD6AD, + 27714 - 11905: 0xC7F3, + 27715 - 11905: 0x9AF1, + 27716 - 11905: 0x9AF2, + 27717 - 11905: 0x9AF3, + 27718 - 11905: 0xD9E0, + 27719 - 11905: 0xBBE3, + 27720 - 11905: 0x9AF4, + 27721 - 11905: 0xBABA, + 27722 - 11905: 0xE3E2, + 27723 - 11905: 0x9AF5, + 27724 - 11905: 0x9AF6, + 27725 - 11905: 0x9AF7, + 27726 - 11905: 0x9AF8, + 27727 - 11905: 0x9AF9, + 27728 - 11905: 0xCFAB, + 27729 - 11905: 0x9AFA, + 27730 - 11905: 0x9AFB, + 27731 - 11905: 0x9AFC, + 27732 - 11905: 0xE3E0, + 27733 - 11905: 0xC9C7, + 27734 - 11905: 0x9AFD, + 27735 - 11905: 0xBAB9, + 27736 - 11905: 0x9AFE, + 27737 - 11905: 0x9B40, + 27738 - 11905: 0x9B41, + 27739 - 11905: 0xD1B4, + 27740 - 11905: 0xE3E1, + 27741 - 11905: 0xC8EA, + 27742 - 11905: 0xB9AF, + 27743 - 11905: 0xBDAD, + 27744 - 11905: 0xB3D8, + 27745 - 11905: 0xCEDB, + 27746 - 11905: 0x9B42, + 27747 - 11905: 0x9B43, + 27748 - 11905: 0xCCC0, + 27749 - 11905: 0x9B44, + 27750 - 11905: 0x9B45, + 27751 - 11905: 0x9B46, + 27752 - 11905: 0xE3E8, + 27753 - 11905: 0xE3E9, + 27754 - 11905: 0xCDF4, + 27755 - 11905: 0x9B47, + 27756 - 11905: 0x9B48, + 27757 - 11905: 0x9B49, + 27758 - 11905: 0x9B4A, + 27759 - 11905: 0x9B4B, + 27760 - 11905: 0xCCAD, + 27761 - 11905: 0x9B4C, + 27762 - 11905: 0xBCB3, + 27763 - 11905: 0x9B4D, + 27764 - 11905: 0xE3EA, + 27765 - 11905: 0x9B4E, + 27766 - 11905: 0xE3EB, + 27767 - 11905: 0x9B4F, + 27768 - 11905: 0x9B50, + 27769 - 11905: 0xD0DA, + 27770 - 11905: 0x9B51, + 27771 - 11905: 0x9B52, + 27772 - 11905: 0x9B53, + 27773 - 11905: 0xC6FB, + 27774 - 11905: 0xB7DA, + 27775 - 11905: 0x9B54, + 27776 - 11905: 0x9B55, + 27777 - 11905: 0xC7DF, + 27778 - 11905: 0xD2CA, + 27779 - 11905: 0xCED6, + 27780 - 11905: 0x9B56, + 27781 - 11905: 0xE3E4, + 27782 - 11905: 0xE3EC, + 27783 - 11905: 0x9B57, + 27784 - 11905: 0xC9F2, + 27785 - 11905: 0xB3C1, + 27786 - 11905: 0x9B58, + 27787 - 11905: 0x9B59, + 27788 - 11905: 0xE3E7, + 27789 - 11905: 0x9B5A, + 27790 - 11905: 0x9B5B, + 27791 - 11905: 0xC6E3, + 27792 - 11905: 0xE3E5, + 27793 - 11905: 0x9B5C, + 27794 - 11905: 0x9B5D, + 27795 - 11905: 0xEDB3, + 27796 - 11905: 0xE3E6, + 27797 - 11905: 0x9B5E, + 27798 - 11905: 0x9B5F, + 27799 - 11905: 0x9B60, + 27800 - 11905: 0x9B61, + 27801 - 11905: 0xC9B3, + 27802 - 11905: 0x9B62, + 27803 - 11905: 0xC5E6, + 27804 - 11905: 0x9B63, + 27805 - 11905: 0x9B64, + 27806 - 11905: 0x9B65, + 27807 - 11905: 0xB9B5, + 27808 - 11905: 0x9B66, + 27809 - 11905: 0xC3BB, + 27810 - 11905: 0x9B67, + 27811 - 11905: 0xE3E3, + 27812 - 11905: 0xC5BD, + 27813 - 11905: 0xC1A4, + 27814 - 11905: 0xC2D9, + 27815 - 11905: 0xB2D7, + 27816 - 11905: 0x9B68, + 27817 - 11905: 0xE3ED, + 27818 - 11905: 0xBBA6, + 27819 - 11905: 0xC4AD, + 27820 - 11905: 0x9B69, + 27821 - 11905: 0xE3F0, + 27822 - 11905: 0xBEDA, + 27823 - 11905: 0x9B6A, + 27824 - 11905: 0x9B6B, + 27825 - 11905: 0xE3FB, + 27826 - 11905: 0xE3F5, + 27827 - 11905: 0xBAD3, + 27828 - 11905: 0x9B6C, + 27829 - 11905: 0x9B6D, + 27830 - 11905: 0x9B6E, + 27831 - 11905: 0x9B6F, + 27832 - 11905: 0xB7D0, + 27833 - 11905: 0xD3CD, + 27834 - 11905: 0x9B70, + 27835 - 11905: 0xD6CE, + 27836 - 11905: 0xD5D3, + 27837 - 11905: 0xB9C1, + 27838 - 11905: 0xD5B4, + 27839 - 11905: 0xD1D8, + 27840 - 11905: 0x9B71, + 27841 - 11905: 0x9B72, + 27842 - 11905: 0x9B73, + 27843 - 11905: 0x9B74, + 27844 - 11905: 0xD0B9, + 27845 - 11905: 0xC7F6, + 27846 - 11905: 0x9B75, + 27847 - 11905: 0x9B76, + 27848 - 11905: 0x9B77, + 27849 - 11905: 0xC8AA, + 27850 - 11905: 0xB2B4, + 27851 - 11905: 0x9B78, + 27852 - 11905: 0xC3DA, + 27853 - 11905: 0x9B79, + 27854 - 11905: 0x9B7A, + 27855 - 11905: 0x9B7B, + 27856 - 11905: 0xE3EE, + 27857 - 11905: 0x9B7C, + 27858 - 11905: 0x9B7D, + 27859 - 11905: 0xE3FC, + 27860 - 11905: 0xE3EF, + 27861 - 11905: 0xB7A8, + 27862 - 11905: 0xE3F7, + 27863 - 11905: 0xE3F4, + 27864 - 11905: 0x9B7E, + 27865 - 11905: 0x9B80, + 27866 - 11905: 0x9B81, + 27867 - 11905: 0xB7BA, + 27868 - 11905: 0x9B82, + 27869 - 11905: 0x9B83, + 27870 - 11905: 0xC5A2, + 27871 - 11905: 0x9B84, + 27872 - 11905: 0xE3F6, + 27873 - 11905: 0xC5DD, + 27874 - 11905: 0xB2A8, + 27875 - 11905: 0xC6FC, + 27876 - 11905: 0x9B85, + 27877 - 11905: 0xC4E0, + 27878 - 11905: 0x9B86, + 27879 - 11905: 0x9B87, + 27880 - 11905: 0xD7A2, + 27881 - 11905: 0x9B88, + 27882 - 11905: 0xC0E1, + 27883 - 11905: 0xE3F9, + 27884 - 11905: 0x9B89, + 27885 - 11905: 0x9B8A, + 27886 - 11905: 0xE3FA, + 27887 - 11905: 0xE3FD, + 27888 - 11905: 0xCCA9, + 27889 - 11905: 0xE3F3, + 27890 - 11905: 0x9B8B, + 27891 - 11905: 0xD3BE, + 27892 - 11905: 0x9B8C, + 27893 - 11905: 0xB1C3, + 27894 - 11905: 0xEDB4, + 27895 - 11905: 0xE3F1, + 27896 - 11905: 0xE3F2, + 27897 - 11905: 0x9B8D, + 27898 - 11905: 0xE3F8, + 27899 - 11905: 0xD0BA, + 27900 - 11905: 0xC6C3, + 27901 - 11905: 0xD4F3, + 27902 - 11905: 0xE3FE, + 27903 - 11905: 0x9B8E, + 27904 - 11905: 0x9B8F, + 27905 - 11905: 0xBDE0, + 27906 - 11905: 0x9B90, + 27907 - 11905: 0x9B91, + 27908 - 11905: 0xE4A7, + 27909 - 11905: 0x9B92, + 27910 - 11905: 0x9B93, + 27911 - 11905: 0xE4A6, + 27912 - 11905: 0x9B94, + 27913 - 11905: 0x9B95, + 27914 - 11905: 0x9B96, + 27915 - 11905: 0xD1F3, + 27916 - 11905: 0xE4A3, + 27917 - 11905: 0x9B97, + 27918 - 11905: 0xE4A9, + 27919 - 11905: 0x9B98, + 27920 - 11905: 0x9B99, + 27921 - 11905: 0x9B9A, + 27922 - 11905: 0xC8F7, + 27923 - 11905: 0x9B9B, + 27924 - 11905: 0x9B9C, + 27925 - 11905: 0x9B9D, + 27926 - 11905: 0x9B9E, + 27927 - 11905: 0xCFB4, + 27928 - 11905: 0x9B9F, + 27929 - 11905: 0xE4A8, + 27930 - 11905: 0xE4AE, + 27931 - 11905: 0xC2E5, + 27932 - 11905: 0x9BA0, + 27933 - 11905: 0x9BA1, + 27934 - 11905: 0xB6B4, + 27935 - 11905: 0x9BA2, + 27936 - 11905: 0x9BA3, + 27937 - 11905: 0x9BA4, + 27938 - 11905: 0x9BA5, + 27939 - 11905: 0x9BA6, + 27940 - 11905: 0x9BA7, + 27941 - 11905: 0xBDF2, + 27942 - 11905: 0x9BA8, + 27943 - 11905: 0xE4A2, + 27944 - 11905: 0x9BA9, + 27945 - 11905: 0x9BAA, + 27946 - 11905: 0xBAE9, + 27947 - 11905: 0xE4AA, + 27948 - 11905: 0x9BAB, + 27949 - 11905: 0x9BAC, + 27950 - 11905: 0xE4AC, + 27951 - 11905: 0x9BAD, + 27952 - 11905: 0x9BAE, + 27953 - 11905: 0xB6FD, + 27954 - 11905: 0xD6DE, + 27955 - 11905: 0xE4B2, + 27956 - 11905: 0x9BAF, + 27957 - 11905: 0xE4AD, + 27958 - 11905: 0x9BB0, + 27959 - 11905: 0x9BB1, + 27960 - 11905: 0x9BB2, + 27961 - 11905: 0xE4A1, + 27962 - 11905: 0x9BB3, + 27963 - 11905: 0xBBEE, + 27964 - 11905: 0xCDDD, + 27965 - 11905: 0xC7A2, + 27966 - 11905: 0xC5C9, + 27967 - 11905: 0x9BB4, + 27968 - 11905: 0x9BB5, + 27969 - 11905: 0xC1F7, + 27970 - 11905: 0x9BB6, + 27971 - 11905: 0xE4A4, + 27972 - 11905: 0x9BB7, + 27973 - 11905: 0xC7B3, + 27974 - 11905: 0xBDAC, + 27975 - 11905: 0xBDBD, + 27976 - 11905: 0xE4A5, + 27977 - 11905: 0x9BB8, + 27978 - 11905: 0xD7C7, + 27979 - 11905: 0xB2E2, + 27980 - 11905: 0x9BB9, + 27981 - 11905: 0xE4AB, + 27982 - 11905: 0xBCC3, + 27983 - 11905: 0xE4AF, + 27984 - 11905: 0x9BBA, + 27985 - 11905: 0xBBEB, + 27986 - 11905: 0xE4B0, + 27987 - 11905: 0xC5A8, + 27988 - 11905: 0xE4B1, + 27989 - 11905: 0x9BBB, + 27990 - 11905: 0x9BBC, + 27991 - 11905: 0x9BBD, + 27992 - 11905: 0x9BBE, + 27993 - 11905: 0xD5E3, + 27994 - 11905: 0xBFA3, + 27995 - 11905: 0x9BBF, + 27996 - 11905: 0xE4BA, + 27997 - 11905: 0x9BC0, + 27998 - 11905: 0xE4B7, + 27999 - 11905: 0x9BC1, + 28000 - 11905: 0xE4BB, + 28001 - 11905: 0x9BC2, + 28002 - 11905: 0x9BC3, + 28003 - 11905: 0xE4BD, + 28004 - 11905: 0x9BC4, + 28005 - 11905: 0x9BC5, + 28006 - 11905: 0xC6D6, + 28007 - 11905: 0x9BC6, + 28008 - 11905: 0x9BC7, + 28009 - 11905: 0xBAC6, + 28010 - 11905: 0xC0CB, + 28011 - 11905: 0x9BC8, + 28012 - 11905: 0x9BC9, + 28013 - 11905: 0x9BCA, + 28014 - 11905: 0xB8A1, + 28015 - 11905: 0xE4B4, + 28016 - 11905: 0x9BCB, + 28017 - 11905: 0x9BCC, + 28018 - 11905: 0x9BCD, + 28019 - 11905: 0x9BCE, + 28020 - 11905: 0xD4A1, + 28021 - 11905: 0x9BCF, + 28022 - 11905: 0x9BD0, + 28023 - 11905: 0xBAA3, + 28024 - 11905: 0xBDFE, + 28025 - 11905: 0x9BD1, + 28026 - 11905: 0x9BD2, + 28027 - 11905: 0x9BD3, + 28028 - 11905: 0xE4BC, + 28029 - 11905: 0x9BD4, + 28030 - 11905: 0x9BD5, + 28031 - 11905: 0x9BD6, + 28032 - 11905: 0x9BD7, + 28033 - 11905: 0x9BD8, + 28034 - 11905: 0xCDBF, + 28035 - 11905: 0x9BD9, + 28036 - 11905: 0x9BDA, + 28037 - 11905: 0xC4F9, + 28038 - 11905: 0x9BDB, + 28039 - 11905: 0x9BDC, + 28040 - 11905: 0xCFFB, + 28041 - 11905: 0xC9E6, + 28042 - 11905: 0x9BDD, + 28043 - 11905: 0x9BDE, + 28044 - 11905: 0xD3BF, + 28045 - 11905: 0x9BDF, + 28046 - 11905: 0xCFD1, + 28047 - 11905: 0x9BE0, + 28048 - 11905: 0x9BE1, + 28049 - 11905: 0xE4B3, + 28050 - 11905: 0x9BE2, + 28051 - 11905: 0xE4B8, + 28052 - 11905: 0xE4B9, + 28053 - 11905: 0xCCE9, + 28054 - 11905: 0x9BE3, + 28055 - 11905: 0x9BE4, + 28056 - 11905: 0x9BE5, + 28057 - 11905: 0x9BE6, + 28058 - 11905: 0x9BE7, + 28059 - 11905: 0xCCCE, + 28060 - 11905: 0x9BE8, + 28061 - 11905: 0xC0D4, + 28062 - 11905: 0xE4B5, + 28063 - 11905: 0xC1B0, + 28064 - 11905: 0xE4B6, + 28065 - 11905: 0xCED0, + 28066 - 11905: 0x9BE9, + 28067 - 11905: 0xBBC1, + 28068 - 11905: 0xB5D3, + 28069 - 11905: 0x9BEA, + 28070 - 11905: 0xC8F3, + 28071 - 11905: 0xBDA7, + 28072 - 11905: 0xD5C7, + 28073 - 11905: 0xC9AC, + 28074 - 11905: 0xB8A2, + 28075 - 11905: 0xE4CA, + 28076 - 11905: 0x9BEB, + 28077 - 11905: 0x9BEC, + 28078 - 11905: 0xE4CC, + 28079 - 11905: 0xD1C4, + 28080 - 11905: 0x9BED, + 28081 - 11905: 0x9BEE, + 28082 - 11905: 0xD2BA, + 28083 - 11905: 0x9BEF, + 28084 - 11905: 0x9BF0, + 28085 - 11905: 0xBAAD, + 28086 - 11905: 0x9BF1, + 28087 - 11905: 0x9BF2, + 28088 - 11905: 0xBAD4, + 28089 - 11905: 0x9BF3, + 28090 - 11905: 0x9BF4, + 28091 - 11905: 0x9BF5, + 28092 - 11905: 0x9BF6, + 28093 - 11905: 0x9BF7, + 28094 - 11905: 0x9BF8, + 28095 - 11905: 0xE4C3, + 28096 - 11905: 0xB5ED, + 28097 - 11905: 0x9BF9, + 28098 - 11905: 0x9BFA, + 28099 - 11905: 0x9BFB, + 28100 - 11905: 0xD7CD, + 28101 - 11905: 0xE4C0, + 28102 - 11905: 0xCFFD, + 28103 - 11905: 0xE4BF, + 28104 - 11905: 0x9BFC, + 28105 - 11905: 0x9BFD, + 28106 - 11905: 0x9BFE, + 28107 - 11905: 0xC1DC, + 28108 - 11905: 0xCCCA, + 28109 - 11905: 0x9C40, + 28110 - 11905: 0x9C41, + 28111 - 11905: 0x9C42, + 28112 - 11905: 0x9C43, + 28113 - 11905: 0xCAE7, + 28114 - 11905: 0x9C44, + 28115 - 11905: 0x9C45, + 28116 - 11905: 0x9C46, + 28117 - 11905: 0x9C47, + 28118 - 11905: 0xC4D7, + 28119 - 11905: 0x9C48, + 28120 - 11905: 0xCCD4, + 28121 - 11905: 0xE4C8, + 28122 - 11905: 0x9C49, + 28123 - 11905: 0x9C4A, + 28124 - 11905: 0x9C4B, + 28125 - 11905: 0xE4C7, + 28126 - 11905: 0xE4C1, + 28127 - 11905: 0x9C4C, + 28128 - 11905: 0xE4C4, + 28129 - 11905: 0xB5AD, + 28130 - 11905: 0x9C4D, + 28131 - 11905: 0x9C4E, + 28132 - 11905: 0xD3D9, + 28133 - 11905: 0x9C4F, + 28134 - 11905: 0xE4C6, + 28135 - 11905: 0x9C50, + 28136 - 11905: 0x9C51, + 28137 - 11905: 0x9C52, + 28138 - 11905: 0x9C53, + 28139 - 11905: 0xD2F9, + 28140 - 11905: 0xB4E3, + 28141 - 11905: 0x9C54, + 28142 - 11905: 0xBBB4, + 28143 - 11905: 0x9C55, + 28144 - 11905: 0x9C56, + 28145 - 11905: 0xC9EE, + 28146 - 11905: 0x9C57, + 28147 - 11905: 0xB4BE, + 28148 - 11905: 0x9C58, + 28149 - 11905: 0x9C59, + 28150 - 11905: 0x9C5A, + 28151 - 11905: 0xBBEC, + 28152 - 11905: 0x9C5B, + 28153 - 11905: 0xD1CD, + 28154 - 11905: 0x9C5C, + 28155 - 11905: 0xCCED, + 28156 - 11905: 0xEDB5, + 28157 - 11905: 0x9C5D, + 28158 - 11905: 0x9C5E, + 28159 - 11905: 0x9C5F, + 28160 - 11905: 0x9C60, + 28161 - 11905: 0x9C61, + 28162 - 11905: 0x9C62, + 28163 - 11905: 0x9C63, + 28164 - 11905: 0x9C64, + 28165 - 11905: 0xC7E5, + 28166 - 11905: 0x9C65, + 28167 - 11905: 0x9C66, + 28168 - 11905: 0x9C67, + 28169 - 11905: 0x9C68, + 28170 - 11905: 0xD4A8, + 28171 - 11905: 0x9C69, + 28172 - 11905: 0xE4CB, + 28173 - 11905: 0xD7D5, + 28174 - 11905: 0xE4C2, + 28175 - 11905: 0x9C6A, + 28176 - 11905: 0xBDA5, + 28177 - 11905: 0xE4C5, + 28178 - 11905: 0x9C6B, + 28179 - 11905: 0x9C6C, + 28180 - 11905: 0xD3E6, + 28181 - 11905: 0x9C6D, + 28182 - 11905: 0xE4C9, + 28183 - 11905: 0xC9F8, + 28184 - 11905: 0x9C6E, + 28185 - 11905: 0x9C6F, + 28186 - 11905: 0xE4BE, + 28187 - 11905: 0x9C70, + 28188 - 11905: 0x9C71, + 28189 - 11905: 0xD3E5, + 28190 - 11905: 0x9C72, + 28191 - 11905: 0x9C73, + 28192 - 11905: 0xC7FE, + 28193 - 11905: 0xB6C9, + 28194 - 11905: 0x9C74, + 28195 - 11905: 0xD4FC, + 28196 - 11905: 0xB2B3, + 28197 - 11905: 0xE4D7, + 28198 - 11905: 0x9C75, + 28199 - 11905: 0x9C76, + 28200 - 11905: 0x9C77, + 28201 - 11905: 0xCEC2, + 28202 - 11905: 0x9C78, + 28203 - 11905: 0xE4CD, + 28204 - 11905: 0x9C79, + 28205 - 11905: 0xCEBC, + 28206 - 11905: 0x9C7A, + 28207 - 11905: 0xB8DB, + 28208 - 11905: 0x9C7B, + 28209 - 11905: 0x9C7C, + 28210 - 11905: 0xE4D6, + 28211 - 11905: 0x9C7D, + 28212 - 11905: 0xBFCA, + 28213 - 11905: 0x9C7E, + 28214 - 11905: 0x9C80, + 28215 - 11905: 0x9C81, + 28216 - 11905: 0xD3CE, + 28217 - 11905: 0x9C82, + 28218 - 11905: 0xC3EC, + 28219 - 11905: 0x9C83, + 28220 - 11905: 0x9C84, + 28221 - 11905: 0x9C85, + 28222 - 11905: 0x9C86, + 28223 - 11905: 0x9C87, + 28224 - 11905: 0x9C88, + 28225 - 11905: 0x9C89, + 28226 - 11905: 0x9C8A, + 28227 - 11905: 0xC5C8, + 28228 - 11905: 0xE4D8, + 28229 - 11905: 0x9C8B, + 28230 - 11905: 0x9C8C, + 28231 - 11905: 0x9C8D, + 28232 - 11905: 0x9C8E, + 28233 - 11905: 0x9C8F, + 28234 - 11905: 0x9C90, + 28235 - 11905: 0x9C91, + 28236 - 11905: 0x9C92, + 28237 - 11905: 0xCDC4, + 28238 - 11905: 0xE4CF, + 28239 - 11905: 0x9C93, + 28240 - 11905: 0x9C94, + 28241 - 11905: 0x9C95, + 28242 - 11905: 0x9C96, + 28243 - 11905: 0xE4D4, + 28244 - 11905: 0xE4D5, + 28245 - 11905: 0x9C97, + 28246 - 11905: 0xBAFE, + 28247 - 11905: 0x9C98, + 28248 - 11905: 0xCFE6, + 28249 - 11905: 0x9C99, + 28250 - 11905: 0x9C9A, + 28251 - 11905: 0xD5BF, + 28252 - 11905: 0x9C9B, + 28253 - 11905: 0x9C9C, + 28254 - 11905: 0x9C9D, + 28255 - 11905: 0xE4D2, + 28256 - 11905: 0x9C9E, + 28257 - 11905: 0x9C9F, + 28258 - 11905: 0x9CA0, + 28259 - 11905: 0x9CA1, + 28260 - 11905: 0x9CA2, + 28261 - 11905: 0x9CA3, + 28262 - 11905: 0x9CA4, + 28263 - 11905: 0x9CA5, + 28264 - 11905: 0x9CA6, + 28265 - 11905: 0x9CA7, + 28266 - 11905: 0x9CA8, + 28267 - 11905: 0xE4D0, + 28268 - 11905: 0x9CA9, + 28269 - 11905: 0x9CAA, + 28270 - 11905: 0xE4CE, + 28271 - 11905: 0x9CAB, + 28272 - 11905: 0x9CAC, + 28273 - 11905: 0x9CAD, + 28274 - 11905: 0x9CAE, + 28275 - 11905: 0x9CAF, + 28276 - 11905: 0x9CB0, + 28277 - 11905: 0x9CB1, + 28278 - 11905: 0x9CB2, + 28279 - 11905: 0x9CB3, + 28280 - 11905: 0x9CB4, + 28281 - 11905: 0x9CB5, + 28282 - 11905: 0x9CB6, + 28283 - 11905: 0x9CB7, + 28284 - 11905: 0x9CB8, + 28285 - 11905: 0x9CB9, + 28286 - 11905: 0xCDE5, + 28287 - 11905: 0xCAAA, + 28288 - 11905: 0x9CBA, + 28289 - 11905: 0x9CBB, + 28290 - 11905: 0x9CBC, + 28291 - 11905: 0xC0A3, + 28292 - 11905: 0x9CBD, + 28293 - 11905: 0xBDA6, + 28294 - 11905: 0xE4D3, + 28295 - 11905: 0x9CBE, + 28296 - 11905: 0x9CBF, + 28297 - 11905: 0xB8C8, + 28298 - 11905: 0x9CC0, + 28299 - 11905: 0x9CC1, + 28300 - 11905: 0x9CC2, + 28301 - 11905: 0x9CC3, + 28302 - 11905: 0x9CC4, + 28303 - 11905: 0xE4E7, + 28304 - 11905: 0xD4B4, + 28305 - 11905: 0x9CC5, + 28306 - 11905: 0x9CC6, + 28307 - 11905: 0x9CC7, + 28308 - 11905: 0x9CC8, + 28309 - 11905: 0x9CC9, + 28310 - 11905: 0x9CCA, + 28311 - 11905: 0x9CCB, + 28312 - 11905: 0xE4DB, + 28313 - 11905: 0x9CCC, + 28314 - 11905: 0x9CCD, + 28315 - 11905: 0x9CCE, + 28316 - 11905: 0xC1EF, + 28317 - 11905: 0x9CCF, + 28318 - 11905: 0x9CD0, + 28319 - 11905: 0xE4E9, + 28320 - 11905: 0x9CD1, + 28321 - 11905: 0x9CD2, + 28322 - 11905: 0xD2E7, + 28323 - 11905: 0x9CD3, + 28324 - 11905: 0x9CD4, + 28325 - 11905: 0xE4DF, + 28326 - 11905: 0x9CD5, + 28327 - 11905: 0xE4E0, + 28328 - 11905: 0x9CD6, + 28329 - 11905: 0x9CD7, + 28330 - 11905: 0xCFAA, + 28331 - 11905: 0x9CD8, + 28332 - 11905: 0x9CD9, + 28333 - 11905: 0x9CDA, + 28334 - 11905: 0x9CDB, + 28335 - 11905: 0xCBDD, + 28336 - 11905: 0x9CDC, + 28337 - 11905: 0xE4DA, + 28338 - 11905: 0xE4D1, + 28339 - 11905: 0x9CDD, + 28340 - 11905: 0xE4E5, + 28341 - 11905: 0x9CDE, + 28342 - 11905: 0xC8DC, + 28343 - 11905: 0xE4E3, + 28344 - 11905: 0x9CDF, + 28345 - 11905: 0x9CE0, + 28346 - 11905: 0xC4E7, + 28347 - 11905: 0xE4E2, + 28348 - 11905: 0x9CE1, + 28349 - 11905: 0xE4E1, + 28350 - 11905: 0x9CE2, + 28351 - 11905: 0x9CE3, + 28352 - 11905: 0x9CE4, + 28353 - 11905: 0xB3FC, + 28354 - 11905: 0xE4E8, + 28355 - 11905: 0x9CE5, + 28356 - 11905: 0x9CE6, + 28357 - 11905: 0x9CE7, + 28358 - 11905: 0x9CE8, + 28359 - 11905: 0xB5E1, + 28360 - 11905: 0x9CE9, + 28361 - 11905: 0x9CEA, + 28362 - 11905: 0x9CEB, + 28363 - 11905: 0xD7CC, + 28364 - 11905: 0x9CEC, + 28365 - 11905: 0x9CED, + 28366 - 11905: 0x9CEE, + 28367 - 11905: 0xE4E6, + 28368 - 11905: 0x9CEF, + 28369 - 11905: 0xBBAC, + 28370 - 11905: 0x9CF0, + 28371 - 11905: 0xD7D2, + 28372 - 11905: 0xCCCF, + 28373 - 11905: 0xEBF8, + 28374 - 11905: 0x9CF1, + 28375 - 11905: 0xE4E4, + 28376 - 11905: 0x9CF2, + 28377 - 11905: 0x9CF3, + 28378 - 11905: 0xB9F6, + 28379 - 11905: 0x9CF4, + 28380 - 11905: 0x9CF5, + 28381 - 11905: 0x9CF6, + 28382 - 11905: 0xD6CD, + 28383 - 11905: 0xE4D9, + 28384 - 11905: 0xE4DC, + 28385 - 11905: 0xC2FA, + 28386 - 11905: 0xE4DE, + 28387 - 11905: 0x9CF7, + 28388 - 11905: 0xC2CB, + 28389 - 11905: 0xC0C4, + 28390 - 11905: 0xC2D0, + 28391 - 11905: 0x9CF8, + 28392 - 11905: 0xB1F5, + 28393 - 11905: 0xCCB2, + 28394 - 11905: 0x9CF9, + 28395 - 11905: 0x9CFA, + 28396 - 11905: 0x9CFB, + 28397 - 11905: 0x9CFC, + 28398 - 11905: 0x9CFD, + 28399 - 11905: 0x9CFE, + 28400 - 11905: 0x9D40, + 28401 - 11905: 0x9D41, + 28402 - 11905: 0x9D42, + 28403 - 11905: 0x9D43, + 28404 - 11905: 0xB5CE, + 28405 - 11905: 0x9D44, + 28406 - 11905: 0x9D45, + 28407 - 11905: 0x9D46, + 28408 - 11905: 0x9D47, + 28409 - 11905: 0xE4EF, + 28410 - 11905: 0x9D48, + 28411 - 11905: 0x9D49, + 28412 - 11905: 0x9D4A, + 28413 - 11905: 0x9D4B, + 28414 - 11905: 0x9D4C, + 28415 - 11905: 0x9D4D, + 28416 - 11905: 0x9D4E, + 28417 - 11905: 0x9D4F, + 28418 - 11905: 0xC6AF, + 28419 - 11905: 0x9D50, + 28420 - 11905: 0x9D51, + 28421 - 11905: 0x9D52, + 28422 - 11905: 0xC6E1, + 28423 - 11905: 0x9D53, + 28424 - 11905: 0x9D54, + 28425 - 11905: 0xE4F5, + 28426 - 11905: 0x9D55, + 28427 - 11905: 0x9D56, + 28428 - 11905: 0x9D57, + 28429 - 11905: 0x9D58, + 28430 - 11905: 0x9D59, + 28431 - 11905: 0xC2A9, + 28432 - 11905: 0x9D5A, + 28433 - 11905: 0x9D5B, + 28434 - 11905: 0x9D5C, + 28435 - 11905: 0xC0EC, + 28436 - 11905: 0xD1DD, + 28437 - 11905: 0xE4EE, + 28438 - 11905: 0x9D5D, + 28439 - 11905: 0x9D5E, + 28440 - 11905: 0x9D5F, + 28441 - 11905: 0x9D60, + 28442 - 11905: 0x9D61, + 28443 - 11905: 0x9D62, + 28444 - 11905: 0x9D63, + 28445 - 11905: 0x9D64, + 28446 - 11905: 0x9D65, + 28447 - 11905: 0x9D66, + 28448 - 11905: 0xC4AE, + 28449 - 11905: 0x9D67, + 28450 - 11905: 0x9D68, + 28451 - 11905: 0x9D69, + 28452 - 11905: 0xE4ED, + 28453 - 11905: 0x9D6A, + 28454 - 11905: 0x9D6B, + 28455 - 11905: 0x9D6C, + 28456 - 11905: 0x9D6D, + 28457 - 11905: 0xE4F6, + 28458 - 11905: 0xE4F4, + 28459 - 11905: 0xC2FE, + 28460 - 11905: 0x9D6E, + 28461 - 11905: 0xE4DD, + 28462 - 11905: 0x9D6F, + 28463 - 11905: 0xE4F0, + 28464 - 11905: 0x9D70, + 28465 - 11905: 0xCAFE, + 28466 - 11905: 0x9D71, + 28467 - 11905: 0xD5C4, + 28468 - 11905: 0x9D72, + 28469 - 11905: 0x9D73, + 28470 - 11905: 0xE4F1, + 28471 - 11905: 0x9D74, + 28472 - 11905: 0x9D75, + 28473 - 11905: 0x9D76, + 28474 - 11905: 0x9D77, + 28475 - 11905: 0x9D78, + 28476 - 11905: 0x9D79, + 28477 - 11905: 0x9D7A, + 28478 - 11905: 0xD1FA, + 28479 - 11905: 0x9D7B, + 28480 - 11905: 0x9D7C, + 28481 - 11905: 0x9D7D, + 28482 - 11905: 0x9D7E, + 28483 - 11905: 0x9D80, + 28484 - 11905: 0x9D81, + 28485 - 11905: 0x9D82, + 28486 - 11905: 0xE4EB, + 28487 - 11905: 0xE4EC, + 28488 - 11905: 0x9D83, + 28489 - 11905: 0x9D84, + 28490 - 11905: 0x9D85, + 28491 - 11905: 0xE4F2, + 28492 - 11905: 0x9D86, + 28493 - 11905: 0xCEAB, + 28494 - 11905: 0x9D87, + 28495 - 11905: 0x9D88, + 28496 - 11905: 0x9D89, + 28497 - 11905: 0x9D8A, + 28498 - 11905: 0x9D8B, + 28499 - 11905: 0x9D8C, + 28500 - 11905: 0x9D8D, + 28501 - 11905: 0x9D8E, + 28502 - 11905: 0x9D8F, + 28503 - 11905: 0x9D90, + 28504 - 11905: 0xC5CB, + 28505 - 11905: 0x9D91, + 28506 - 11905: 0x9D92, + 28507 - 11905: 0x9D93, + 28508 - 11905: 0xC7B1, + 28509 - 11905: 0x9D94, + 28510 - 11905: 0xC2BA, + 28511 - 11905: 0x9D95, + 28512 - 11905: 0x9D96, + 28513 - 11905: 0x9D97, + 28514 - 11905: 0xE4EA, + 28515 - 11905: 0x9D98, + 28516 - 11905: 0x9D99, + 28517 - 11905: 0x9D9A, + 28518 - 11905: 0xC1CA, + 28519 - 11905: 0x9D9B, + 28520 - 11905: 0x9D9C, + 28521 - 11905: 0x9D9D, + 28522 - 11905: 0x9D9E, + 28523 - 11905: 0x9D9F, + 28524 - 11905: 0x9DA0, + 28525 - 11905: 0xCCB6, + 28526 - 11905: 0xB3B1, + 28527 - 11905: 0x9DA1, + 28528 - 11905: 0x9DA2, + 28529 - 11905: 0x9DA3, + 28530 - 11905: 0xE4FB, + 28531 - 11905: 0x9DA4, + 28532 - 11905: 0xE4F3, + 28533 - 11905: 0x9DA5, + 28534 - 11905: 0x9DA6, + 28535 - 11905: 0x9DA7, + 28536 - 11905: 0xE4FA, + 28537 - 11905: 0x9DA8, + 28538 - 11905: 0xE4FD, + 28539 - 11905: 0x9DA9, + 28540 - 11905: 0xE4FC, + 28541 - 11905: 0x9DAA, + 28542 - 11905: 0x9DAB, + 28543 - 11905: 0x9DAC, + 28544 - 11905: 0x9DAD, + 28545 - 11905: 0x9DAE, + 28546 - 11905: 0x9DAF, + 28547 - 11905: 0x9DB0, + 28548 - 11905: 0xB3CE, + 28549 - 11905: 0x9DB1, + 28550 - 11905: 0x9DB2, + 28551 - 11905: 0x9DB3, + 28552 - 11905: 0xB3BA, + 28553 - 11905: 0xE4F7, + 28554 - 11905: 0x9DB4, + 28555 - 11905: 0x9DB5, + 28556 - 11905: 0xE4F9, + 28557 - 11905: 0xE4F8, + 28558 - 11905: 0xC5EC, + 28559 - 11905: 0x9DB6, + 28560 - 11905: 0x9DB7, + 28561 - 11905: 0x9DB8, + 28562 - 11905: 0x9DB9, + 28563 - 11905: 0x9DBA, + 28564 - 11905: 0x9DBB, + 28565 - 11905: 0x9DBC, + 28566 - 11905: 0x9DBD, + 28567 - 11905: 0x9DBE, + 28568 - 11905: 0x9DBF, + 28569 - 11905: 0x9DC0, + 28570 - 11905: 0x9DC1, + 28571 - 11905: 0x9DC2, + 28572 - 11905: 0xC0BD, + 28573 - 11905: 0x9DC3, + 28574 - 11905: 0x9DC4, + 28575 - 11905: 0x9DC5, + 28576 - 11905: 0x9DC6, + 28577 - 11905: 0xD4E8, + 28578 - 11905: 0x9DC7, + 28579 - 11905: 0x9DC8, + 28580 - 11905: 0x9DC9, + 28581 - 11905: 0x9DCA, + 28582 - 11905: 0x9DCB, + 28583 - 11905: 0xE5A2, + 28584 - 11905: 0x9DCC, + 28585 - 11905: 0x9DCD, + 28586 - 11905: 0x9DCE, + 28587 - 11905: 0x9DCF, + 28588 - 11905: 0x9DD0, + 28589 - 11905: 0x9DD1, + 28590 - 11905: 0x9DD2, + 28591 - 11905: 0x9DD3, + 28592 - 11905: 0x9DD4, + 28593 - 11905: 0x9DD5, + 28594 - 11905: 0x9DD6, + 28595 - 11905: 0xB0C4, + 28596 - 11905: 0x9DD7, + 28597 - 11905: 0x9DD8, + 28598 - 11905: 0xE5A4, + 28599 - 11905: 0x9DD9, + 28600 - 11905: 0x9DDA, + 28601 - 11905: 0xE5A3, + 28602 - 11905: 0x9DDB, + 28603 - 11905: 0x9DDC, + 28604 - 11905: 0x9DDD, + 28605 - 11905: 0x9DDE, + 28606 - 11905: 0x9DDF, + 28607 - 11905: 0x9DE0, + 28608 - 11905: 0xBCA4, + 28609 - 11905: 0x9DE1, + 28610 - 11905: 0xE5A5, + 28611 - 11905: 0x9DE2, + 28612 - 11905: 0x9DE3, + 28613 - 11905: 0x9DE4, + 28614 - 11905: 0x9DE5, + 28615 - 11905: 0x9DE6, + 28616 - 11905: 0x9DE7, + 28617 - 11905: 0xE5A1, + 28618 - 11905: 0x9DE8, + 28619 - 11905: 0x9DE9, + 28620 - 11905: 0x9DEA, + 28621 - 11905: 0x9DEB, + 28622 - 11905: 0x9DEC, + 28623 - 11905: 0x9DED, + 28624 - 11905: 0x9DEE, + 28625 - 11905: 0xE4FE, + 28626 - 11905: 0xB1F4, + 28627 - 11905: 0x9DEF, + 28628 - 11905: 0x9DF0, + 28629 - 11905: 0x9DF1, + 28630 - 11905: 0x9DF2, + 28631 - 11905: 0x9DF3, + 28632 - 11905: 0x9DF4, + 28633 - 11905: 0x9DF5, + 28634 - 11905: 0x9DF6, + 28635 - 11905: 0x9DF7, + 28636 - 11905: 0x9DF8, + 28637 - 11905: 0x9DF9, + 28638 - 11905: 0xE5A8, + 28639 - 11905: 0x9DFA, + 28640 - 11905: 0xE5A9, + 28641 - 11905: 0xE5A6, + 28642 - 11905: 0x9DFB, + 28643 - 11905: 0x9DFC, + 28644 - 11905: 0x9DFD, + 28645 - 11905: 0x9DFE, + 28646 - 11905: 0x9E40, + 28647 - 11905: 0x9E41, + 28648 - 11905: 0x9E42, + 28649 - 11905: 0x9E43, + 28650 - 11905: 0x9E44, + 28651 - 11905: 0x9E45, + 28652 - 11905: 0x9E46, + 28653 - 11905: 0x9E47, + 28654 - 11905: 0xE5A7, + 28655 - 11905: 0xE5AA, + 28656 - 11905: 0x9E48, + 28657 - 11905: 0x9E49, + 28658 - 11905: 0x9E4A, + 28659 - 11905: 0x9E4B, + 28660 - 11905: 0x9E4C, + 28661 - 11905: 0x9E4D, + 28662 - 11905: 0x9E4E, + 28663 - 11905: 0x9E4F, + 28664 - 11905: 0x9E50, + 28665 - 11905: 0x9E51, + 28666 - 11905: 0x9E52, + 28667 - 11905: 0x9E53, + 28668 - 11905: 0x9E54, + 28669 - 11905: 0x9E55, + 28670 - 11905: 0x9E56, + 28671 - 11905: 0x9E57, + 28672 - 11905: 0x9E58, + 28673 - 11905: 0x9E59, + 28674 - 11905: 0x9E5A, + 28675 - 11905: 0x9E5B, + 28676 - 11905: 0x9E5C, + 28677 - 11905: 0x9E5D, + 28678 - 11905: 0x9E5E, + 28679 - 11905: 0x9E5F, + 28680 - 11905: 0x9E60, + 28681 - 11905: 0x9E61, + 28682 - 11905: 0x9E62, + 28683 - 11905: 0x9E63, + 28684 - 11905: 0x9E64, + 28685 - 11905: 0x9E65, + 28686 - 11905: 0x9E66, + 28687 - 11905: 0x9E67, + 28688 - 11905: 0x9E68, + 28689 - 11905: 0xC6D9, + 28690 - 11905: 0x9E69, + 28691 - 11905: 0x9E6A, + 28692 - 11905: 0x9E6B, + 28693 - 11905: 0x9E6C, + 28694 - 11905: 0x9E6D, + 28695 - 11905: 0x9E6E, + 28696 - 11905: 0x9E6F, + 28697 - 11905: 0x9E70, + 28698 - 11905: 0xE5AB, + 28699 - 11905: 0xE5AD, + 28700 - 11905: 0x9E71, + 28701 - 11905: 0x9E72, + 28702 - 11905: 0x9E73, + 28703 - 11905: 0x9E74, + 28704 - 11905: 0x9E75, + 28705 - 11905: 0x9E76, + 28706 - 11905: 0x9E77, + 28707 - 11905: 0xE5AC, + 28708 - 11905: 0x9E78, + 28709 - 11905: 0x9E79, + 28710 - 11905: 0x9E7A, + 28711 - 11905: 0x9E7B, + 28712 - 11905: 0x9E7C, + 28713 - 11905: 0x9E7D, + 28714 - 11905: 0x9E7E, + 28715 - 11905: 0x9E80, + 28716 - 11905: 0x9E81, + 28717 - 11905: 0x9E82, + 28718 - 11905: 0x9E83, + 28719 - 11905: 0x9E84, + 28720 - 11905: 0x9E85, + 28721 - 11905: 0x9E86, + 28722 - 11905: 0x9E87, + 28723 - 11905: 0x9E88, + 28724 - 11905: 0x9E89, + 28725 - 11905: 0xE5AF, + 28726 - 11905: 0x9E8A, + 28727 - 11905: 0x9E8B, + 28728 - 11905: 0x9E8C, + 28729 - 11905: 0xE5AE, + 28730 - 11905: 0x9E8D, + 28731 - 11905: 0x9E8E, + 28732 - 11905: 0x9E8F, + 28733 - 11905: 0x9E90, + 28734 - 11905: 0x9E91, + 28735 - 11905: 0x9E92, + 28736 - 11905: 0x9E93, + 28737 - 11905: 0x9E94, + 28738 - 11905: 0x9E95, + 28739 - 11905: 0x9E96, + 28740 - 11905: 0x9E97, + 28741 - 11905: 0x9E98, + 28742 - 11905: 0x9E99, + 28743 - 11905: 0x9E9A, + 28744 - 11905: 0x9E9B, + 28745 - 11905: 0x9E9C, + 28746 - 11905: 0x9E9D, + 28747 - 11905: 0x9E9E, + 28748 - 11905: 0xB9E0, + 28749 - 11905: 0x9E9F, + 28750 - 11905: 0x9EA0, + 28751 - 11905: 0xE5B0, + 28752 - 11905: 0x9EA1, + 28753 - 11905: 0x9EA2, + 28754 - 11905: 0x9EA3, + 28755 - 11905: 0x9EA4, + 28756 - 11905: 0x9EA5, + 28757 - 11905: 0x9EA6, + 28758 - 11905: 0x9EA7, + 28759 - 11905: 0x9EA8, + 28760 - 11905: 0x9EA9, + 28761 - 11905: 0x9EAA, + 28762 - 11905: 0x9EAB, + 28763 - 11905: 0x9EAC, + 28764 - 11905: 0x9EAD, + 28765 - 11905: 0x9EAE, + 28766 - 11905: 0xE5B1, + 28767 - 11905: 0x9EAF, + 28768 - 11905: 0x9EB0, + 28769 - 11905: 0x9EB1, + 28770 - 11905: 0x9EB2, + 28771 - 11905: 0x9EB3, + 28772 - 11905: 0x9EB4, + 28773 - 11905: 0x9EB5, + 28774 - 11905: 0x9EB6, + 28775 - 11905: 0x9EB7, + 28776 - 11905: 0x9EB8, + 28777 - 11905: 0x9EB9, + 28778 - 11905: 0x9EBA, + 28779 - 11905: 0xBBF0, + 28780 - 11905: 0xECE1, + 28781 - 11905: 0xC3F0, + 28782 - 11905: 0x9EBB, + 28783 - 11905: 0xB5C6, + 28784 - 11905: 0xBBD2, + 28785 - 11905: 0x9EBC, + 28786 - 11905: 0x9EBD, + 28787 - 11905: 0x9EBE, + 28788 - 11905: 0x9EBF, + 28789 - 11905: 0xC1E9, + 28790 - 11905: 0xD4EE, + 28791 - 11905: 0x9EC0, + 28792 - 11905: 0xBEC4, + 28793 - 11905: 0x9EC1, + 28794 - 11905: 0x9EC2, + 28795 - 11905: 0x9EC3, + 28796 - 11905: 0xD7C6, + 28797 - 11905: 0x9EC4, + 28798 - 11905: 0xD4D6, + 28799 - 11905: 0xB2D3, + 28800 - 11905: 0xECBE, + 28801 - 11905: 0x9EC5, + 28802 - 11905: 0x9EC6, + 28803 - 11905: 0x9EC7, + 28804 - 11905: 0x9EC8, + 28805 - 11905: 0xEAC1, + 28806 - 11905: 0x9EC9, + 28807 - 11905: 0x9ECA, + 28808 - 11905: 0x9ECB, + 28809 - 11905: 0xC2AF, + 28810 - 11905: 0xB4B6, + 28811 - 11905: 0x9ECC, + 28812 - 11905: 0x9ECD, + 28813 - 11905: 0x9ECE, + 28814 - 11905: 0xD1D7, + 28815 - 11905: 0x9ECF, + 28816 - 11905: 0x9ED0, + 28817 - 11905: 0x9ED1, + 28818 - 11905: 0xB3B4, + 28819 - 11905: 0x9ED2, + 28820 - 11905: 0xC8B2, + 28821 - 11905: 0xBFBB, + 28822 - 11905: 0xECC0, + 28823 - 11905: 0x9ED3, + 28824 - 11905: 0x9ED4, + 28825 - 11905: 0xD6CB, + 28826 - 11905: 0x9ED5, + 28827 - 11905: 0x9ED6, + 28828 - 11905: 0xECBF, + 28829 - 11905: 0xECC1, + 28830 - 11905: 0x9ED7, + 28831 - 11905: 0x9ED8, + 28832 - 11905: 0x9ED9, + 28833 - 11905: 0x9EDA, + 28834 - 11905: 0x9EDB, + 28835 - 11905: 0x9EDC, + 28836 - 11905: 0x9EDD, + 28837 - 11905: 0x9EDE, + 28838 - 11905: 0x9EDF, + 28839 - 11905: 0x9EE0, + 28840 - 11905: 0x9EE1, + 28841 - 11905: 0x9EE2, + 28842 - 11905: 0x9EE3, + 28843 - 11905: 0xECC5, + 28844 - 11905: 0xBEE6, + 28845 - 11905: 0xCCBF, + 28846 - 11905: 0xC5DA, + 28847 - 11905: 0xBEBC, + 28848 - 11905: 0x9EE4, + 28849 - 11905: 0xECC6, + 28850 - 11905: 0x9EE5, + 28851 - 11905: 0xB1FE, + 28852 - 11905: 0x9EE6, + 28853 - 11905: 0x9EE7, + 28854 - 11905: 0x9EE8, + 28855 - 11905: 0xECC4, + 28856 - 11905: 0xD5A8, + 28857 - 11905: 0xB5E3, + 28858 - 11905: 0x9EE9, + 28859 - 11905: 0xECC2, + 28860 - 11905: 0xC1B6, + 28861 - 11905: 0xB3E3, + 28862 - 11905: 0x9EEA, + 28863 - 11905: 0x9EEB, + 28864 - 11905: 0xECC3, + 28865 - 11905: 0xCBB8, + 28866 - 11905: 0xC0C3, + 28867 - 11905: 0xCCFE, + 28868 - 11905: 0x9EEC, + 28869 - 11905: 0x9EED, + 28870 - 11905: 0x9EEE, + 28871 - 11905: 0x9EEF, + 28872 - 11905: 0xC1D2, + 28873 - 11905: 0x9EF0, + 28874 - 11905: 0xECC8, + 28875 - 11905: 0x9EF1, + 28876 - 11905: 0x9EF2, + 28877 - 11905: 0x9EF3, + 28878 - 11905: 0x9EF4, + 28879 - 11905: 0x9EF5, + 28880 - 11905: 0x9EF6, + 28881 - 11905: 0x9EF7, + 28882 - 11905: 0x9EF8, + 28883 - 11905: 0x9EF9, + 28884 - 11905: 0x9EFA, + 28885 - 11905: 0x9EFB, + 28886 - 11905: 0x9EFC, + 28887 - 11905: 0x9EFD, + 28888 - 11905: 0xBAE6, + 28889 - 11905: 0xC0D3, + 28890 - 11905: 0x9EFE, + 28891 - 11905: 0xD6F2, + 28892 - 11905: 0x9F40, + 28893 - 11905: 0x9F41, + 28894 - 11905: 0x9F42, + 28895 - 11905: 0xD1CC, + 28896 - 11905: 0x9F43, + 28897 - 11905: 0x9F44, + 28898 - 11905: 0x9F45, + 28899 - 11905: 0x9F46, + 28900 - 11905: 0xBFBE, + 28901 - 11905: 0x9F47, + 28902 - 11905: 0xB7B3, + 28903 - 11905: 0xC9D5, + 28904 - 11905: 0xECC7, + 28905 - 11905: 0xBBE2, + 28906 - 11905: 0x9F48, + 28907 - 11905: 0xCCCC, + 28908 - 11905: 0xBDFD, + 28909 - 11905: 0xC8C8, + 28910 - 11905: 0x9F49, + 28911 - 11905: 0xCFA9, + 28912 - 11905: 0x9F4A, + 28913 - 11905: 0x9F4B, + 28914 - 11905: 0x9F4C, + 28915 - 11905: 0x9F4D, + 28916 - 11905: 0x9F4E, + 28917 - 11905: 0x9F4F, + 28918 - 11905: 0x9F50, + 28919 - 11905: 0xCDE9, + 28920 - 11905: 0x9F51, + 28921 - 11905: 0xC5EB, + 28922 - 11905: 0x9F52, + 28923 - 11905: 0x9F53, + 28924 - 11905: 0x9F54, + 28925 - 11905: 0xB7E9, + 28926 - 11905: 0x9F55, + 28927 - 11905: 0x9F56, + 28928 - 11905: 0x9F57, + 28929 - 11905: 0x9F58, + 28930 - 11905: 0x9F59, + 28931 - 11905: 0x9F5A, + 28932 - 11905: 0x9F5B, + 28933 - 11905: 0x9F5C, + 28934 - 11905: 0x9F5D, + 28935 - 11905: 0x9F5E, + 28936 - 11905: 0x9F5F, + 28937 - 11905: 0xD1C9, + 28938 - 11905: 0xBAB8, + 28939 - 11905: 0x9F60, + 28940 - 11905: 0x9F61, + 28941 - 11905: 0x9F62, + 28942 - 11905: 0x9F63, + 28943 - 11905: 0x9F64, + 28944 - 11905: 0xECC9, + 28945 - 11905: 0x9F65, + 28946 - 11905: 0x9F66, + 28947 - 11905: 0xECCA, + 28948 - 11905: 0x9F67, + 28949 - 11905: 0xBBC0, + 28950 - 11905: 0xECCB, + 28951 - 11905: 0x9F68, + 28952 - 11905: 0xECE2, + 28953 - 11905: 0xB1BA, + 28954 - 11905: 0xB7D9, + 28955 - 11905: 0x9F69, + 28956 - 11905: 0x9F6A, + 28957 - 11905: 0x9F6B, + 28958 - 11905: 0x9F6C, + 28959 - 11905: 0x9F6D, + 28960 - 11905: 0x9F6E, + 28961 - 11905: 0x9F6F, + 28962 - 11905: 0x9F70, + 28963 - 11905: 0x9F71, + 28964 - 11905: 0x9F72, + 28965 - 11905: 0x9F73, + 28966 - 11905: 0xBDB9, + 28967 - 11905: 0x9F74, + 28968 - 11905: 0x9F75, + 28969 - 11905: 0x9F76, + 28970 - 11905: 0x9F77, + 28971 - 11905: 0x9F78, + 28972 - 11905: 0x9F79, + 28973 - 11905: 0x9F7A, + 28974 - 11905: 0x9F7B, + 28975 - 11905: 0xECCC, + 28976 - 11905: 0xD1E6, + 28977 - 11905: 0xECCD, + 28978 - 11905: 0x9F7C, + 28979 - 11905: 0x9F7D, + 28980 - 11905: 0x9F7E, + 28981 - 11905: 0x9F80, + 28982 - 11905: 0xC8BB, + 28983 - 11905: 0x9F81, + 28984 - 11905: 0x9F82, + 28985 - 11905: 0x9F83, + 28986 - 11905: 0x9F84, + 28987 - 11905: 0x9F85, + 28988 - 11905: 0x9F86, + 28989 - 11905: 0x9F87, + 28990 - 11905: 0x9F88, + 28991 - 11905: 0x9F89, + 28992 - 11905: 0x9F8A, + 28993 - 11905: 0x9F8B, + 28994 - 11905: 0x9F8C, + 28995 - 11905: 0x9F8D, + 28996 - 11905: 0x9F8E, + 28997 - 11905: 0xECD1, + 28998 - 11905: 0x9F8F, + 28999 - 11905: 0x9F90, + 29000 - 11905: 0x9F91, + 29001 - 11905: 0x9F92, + 29002 - 11905: 0xECD3, + 29003 - 11905: 0x9F93, + 29004 - 11905: 0xBBCD, + 29005 - 11905: 0x9F94, + 29006 - 11905: 0xBCE5, + 29007 - 11905: 0x9F95, + 29008 - 11905: 0x9F96, + 29009 - 11905: 0x9F97, + 29010 - 11905: 0x9F98, + 29011 - 11905: 0x9F99, + 29012 - 11905: 0x9F9A, + 29013 - 11905: 0x9F9B, + 29014 - 11905: 0x9F9C, + 29015 - 11905: 0x9F9D, + 29016 - 11905: 0x9F9E, + 29017 - 11905: 0x9F9F, + 29018 - 11905: 0x9FA0, + 29019 - 11905: 0x9FA1, + 29020 - 11905: 0xECCF, + 29021 - 11905: 0x9FA2, + 29022 - 11905: 0xC9B7, + 29023 - 11905: 0x9FA3, + 29024 - 11905: 0x9FA4, + 29025 - 11905: 0x9FA5, + 29026 - 11905: 0x9FA6, + 29027 - 11905: 0x9FA7, + 29028 - 11905: 0xC3BA, + 29029 - 11905: 0x9FA8, + 29030 - 11905: 0xECE3, + 29031 - 11905: 0xD5D5, + 29032 - 11905: 0xECD0, + 29033 - 11905: 0x9FA9, + 29034 - 11905: 0x9FAA, + 29035 - 11905: 0x9FAB, + 29036 - 11905: 0x9FAC, + 29037 - 11905: 0x9FAD, + 29038 - 11905: 0xD6F3, + 29039 - 11905: 0x9FAE, + 29040 - 11905: 0x9FAF, + 29041 - 11905: 0x9FB0, + 29042 - 11905: 0xECD2, + 29043 - 11905: 0xECCE, + 29044 - 11905: 0x9FB1, + 29045 - 11905: 0x9FB2, + 29046 - 11905: 0x9FB3, + 29047 - 11905: 0x9FB4, + 29048 - 11905: 0xECD4, + 29049 - 11905: 0x9FB5, + 29050 - 11905: 0xECD5, + 29051 - 11905: 0x9FB6, + 29052 - 11905: 0x9FB7, + 29053 - 11905: 0xC9BF, + 29054 - 11905: 0x9FB8, + 29055 - 11905: 0x9FB9, + 29056 - 11905: 0x9FBA, + 29057 - 11905: 0x9FBB, + 29058 - 11905: 0x9FBC, + 29059 - 11905: 0x9FBD, + 29060 - 11905: 0xCFA8, + 29061 - 11905: 0x9FBE, + 29062 - 11905: 0x9FBF, + 29063 - 11905: 0x9FC0, + 29064 - 11905: 0x9FC1, + 29065 - 11905: 0x9FC2, + 29066 - 11905: 0xD0DC, + 29067 - 11905: 0x9FC3, + 29068 - 11905: 0x9FC4, + 29069 - 11905: 0x9FC5, + 29070 - 11905: 0x9FC6, + 29071 - 11905: 0xD1AC, + 29072 - 11905: 0x9FC7, + 29073 - 11905: 0x9FC8, + 29074 - 11905: 0x9FC9, + 29075 - 11905: 0x9FCA, + 29076 - 11905: 0xC8DB, + 29077 - 11905: 0x9FCB, + 29078 - 11905: 0x9FCC, + 29079 - 11905: 0x9FCD, + 29080 - 11905: 0xECD6, + 29081 - 11905: 0xCEF5, + 29082 - 11905: 0x9FCE, + 29083 - 11905: 0x9FCF, + 29084 - 11905: 0x9FD0, + 29085 - 11905: 0x9FD1, + 29086 - 11905: 0x9FD2, + 29087 - 11905: 0xCAEC, + 29088 - 11905: 0xECDA, + 29089 - 11905: 0x9FD3, + 29090 - 11905: 0x9FD4, + 29091 - 11905: 0x9FD5, + 29092 - 11905: 0x9FD6, + 29093 - 11905: 0x9FD7, + 29094 - 11905: 0x9FD8, + 29095 - 11905: 0x9FD9, + 29096 - 11905: 0xECD9, + 29097 - 11905: 0x9FDA, + 29098 - 11905: 0x9FDB, + 29099 - 11905: 0x9FDC, + 29100 - 11905: 0xB0BE, + 29101 - 11905: 0x9FDD, + 29102 - 11905: 0x9FDE, + 29103 - 11905: 0x9FDF, + 29104 - 11905: 0x9FE0, + 29105 - 11905: 0x9FE1, + 29106 - 11905: 0x9FE2, + 29107 - 11905: 0xECD7, + 29108 - 11905: 0x9FE3, + 29109 - 11905: 0xECD8, + 29110 - 11905: 0x9FE4, + 29111 - 11905: 0x9FE5, + 29112 - 11905: 0x9FE6, + 29113 - 11905: 0xECE4, + 29114 - 11905: 0x9FE7, + 29115 - 11905: 0x9FE8, + 29116 - 11905: 0x9FE9, + 29117 - 11905: 0x9FEA, + 29118 - 11905: 0x9FEB, + 29119 - 11905: 0x9FEC, + 29120 - 11905: 0x9FED, + 29121 - 11905: 0x9FEE, + 29122 - 11905: 0x9FEF, + 29123 - 11905: 0xC8BC, + 29124 - 11905: 0x9FF0, + 29125 - 11905: 0x9FF1, + 29126 - 11905: 0x9FF2, + 29127 - 11905: 0x9FF3, + 29128 - 11905: 0x9FF4, + 29129 - 11905: 0x9FF5, + 29130 - 11905: 0x9FF6, + 29131 - 11905: 0x9FF7, + 29132 - 11905: 0x9FF8, + 29133 - 11905: 0x9FF9, + 29134 - 11905: 0xC1C7, + 29135 - 11905: 0x9FFA, + 29136 - 11905: 0x9FFB, + 29137 - 11905: 0x9FFC, + 29138 - 11905: 0x9FFD, + 29139 - 11905: 0x9FFE, + 29140 - 11905: 0xECDC, + 29141 - 11905: 0xD1E0, + 29142 - 11905: 0xA040, + 29143 - 11905: 0xA041, + 29144 - 11905: 0xA042, + 29145 - 11905: 0xA043, + 29146 - 11905: 0xA044, + 29147 - 11905: 0xA045, + 29148 - 11905: 0xA046, + 29149 - 11905: 0xA047, + 29150 - 11905: 0xA048, + 29151 - 11905: 0xA049, + 29152 - 11905: 0xECDB, + 29153 - 11905: 0xA04A, + 29154 - 11905: 0xA04B, + 29155 - 11905: 0xA04C, + 29156 - 11905: 0xA04D, + 29157 - 11905: 0xD4EF, + 29158 - 11905: 0xA04E, + 29159 - 11905: 0xECDD, + 29160 - 11905: 0xA04F, + 29161 - 11905: 0xA050, + 29162 - 11905: 0xA051, + 29163 - 11905: 0xA052, + 29164 - 11905: 0xA053, + 29165 - 11905: 0xA054, + 29166 - 11905: 0xDBC6, + 29167 - 11905: 0xA055, + 29168 - 11905: 0xA056, + 29169 - 11905: 0xA057, + 29170 - 11905: 0xA058, + 29171 - 11905: 0xA059, + 29172 - 11905: 0xA05A, + 29173 - 11905: 0xA05B, + 29174 - 11905: 0xA05C, + 29175 - 11905: 0xA05D, + 29176 - 11905: 0xA05E, + 29177 - 11905: 0xECDE, + 29178 - 11905: 0xA05F, + 29179 - 11905: 0xA060, + 29180 - 11905: 0xA061, + 29181 - 11905: 0xA062, + 29182 - 11905: 0xA063, + 29183 - 11905: 0xA064, + 29184 - 11905: 0xA065, + 29185 - 11905: 0xA066, + 29186 - 11905: 0xA067, + 29187 - 11905: 0xA068, + 29188 - 11905: 0xA069, + 29189 - 11905: 0xA06A, + 29190 - 11905: 0xB1AC, + 29191 - 11905: 0xA06B, + 29192 - 11905: 0xA06C, + 29193 - 11905: 0xA06D, + 29194 - 11905: 0xA06E, + 29195 - 11905: 0xA06F, + 29196 - 11905: 0xA070, + 29197 - 11905: 0xA071, + 29198 - 11905: 0xA072, + 29199 - 11905: 0xA073, + 29200 - 11905: 0xA074, + 29201 - 11905: 0xA075, + 29202 - 11905: 0xA076, + 29203 - 11905: 0xA077, + 29204 - 11905: 0xA078, + 29205 - 11905: 0xA079, + 29206 - 11905: 0xA07A, + 29207 - 11905: 0xA07B, + 29208 - 11905: 0xA07C, + 29209 - 11905: 0xA07D, + 29210 - 11905: 0xA07E, + 29211 - 11905: 0xA080, + 29212 - 11905: 0xA081, + 29213 - 11905: 0xECDF, + 29214 - 11905: 0xA082, + 29215 - 11905: 0xA083, + 29216 - 11905: 0xA084, + 29217 - 11905: 0xA085, + 29218 - 11905: 0xA086, + 29219 - 11905: 0xA087, + 29220 - 11905: 0xA088, + 29221 - 11905: 0xA089, + 29222 - 11905: 0xA08A, + 29223 - 11905: 0xA08B, + 29224 - 11905: 0xECE0, + 29225 - 11905: 0xA08C, + 29226 - 11905: 0xD7A6, + 29227 - 11905: 0xA08D, + 29228 - 11905: 0xC5C0, + 29229 - 11905: 0xA08E, + 29230 - 11905: 0xA08F, + 29231 - 11905: 0xA090, + 29232 - 11905: 0xEBBC, + 29233 - 11905: 0xB0AE, + 29234 - 11905: 0xA091, + 29235 - 11905: 0xA092, + 29236 - 11905: 0xA093, + 29237 - 11905: 0xBEF4, + 29238 - 11905: 0xB8B8, + 29239 - 11905: 0xD2AF, + 29240 - 11905: 0xB0D6, + 29241 - 11905: 0xB5F9, + 29242 - 11905: 0xA094, + 29243 - 11905: 0xD8B3, + 29244 - 11905: 0xA095, + 29245 - 11905: 0xCBAC, + 29246 - 11905: 0xA096, + 29247 - 11905: 0xE3DD, + 29248 - 11905: 0xA097, + 29249 - 11905: 0xA098, + 29250 - 11905: 0xA099, + 29251 - 11905: 0xA09A, + 29252 - 11905: 0xA09B, + 29253 - 11905: 0xA09C, + 29254 - 11905: 0xA09D, + 29255 - 11905: 0xC6AC, + 29256 - 11905: 0xB0E6, + 29257 - 11905: 0xA09E, + 29258 - 11905: 0xA09F, + 29259 - 11905: 0xA0A0, + 29260 - 11905: 0xC5C6, + 29261 - 11905: 0xEBB9, + 29262 - 11905: 0xA0A1, + 29263 - 11905: 0xA0A2, + 29264 - 11905: 0xA0A3, + 29265 - 11905: 0xA0A4, + 29266 - 11905: 0xEBBA, + 29267 - 11905: 0xA0A5, + 29268 - 11905: 0xA0A6, + 29269 - 11905: 0xA0A7, + 29270 - 11905: 0xEBBB, + 29271 - 11905: 0xA0A8, + 29272 - 11905: 0xA0A9, + 29273 - 11905: 0xD1C0, + 29274 - 11905: 0xA0AA, + 29275 - 11905: 0xC5A3, + 29276 - 11905: 0xA0AB, + 29277 - 11905: 0xEAF2, + 29278 - 11905: 0xA0AC, + 29279 - 11905: 0xC4B2, + 29280 - 11905: 0xA0AD, + 29281 - 11905: 0xC4B5, + 29282 - 11905: 0xC0CE, + 29283 - 11905: 0xA0AE, + 29284 - 11905: 0xA0AF, + 29285 - 11905: 0xA0B0, + 29286 - 11905: 0xEAF3, + 29287 - 11905: 0xC4C1, + 29288 - 11905: 0xA0B1, + 29289 - 11905: 0xCEEF, + 29290 - 11905: 0xA0B2, + 29291 - 11905: 0xA0B3, + 29292 - 11905: 0xA0B4, + 29293 - 11905: 0xA0B5, + 29294 - 11905: 0xEAF0, + 29295 - 11905: 0xEAF4, + 29296 - 11905: 0xA0B6, + 29297 - 11905: 0xA0B7, + 29298 - 11905: 0xC9FC, + 29299 - 11905: 0xA0B8, + 29300 - 11905: 0xA0B9, + 29301 - 11905: 0xC7A3, + 29302 - 11905: 0xA0BA, + 29303 - 11905: 0xA0BB, + 29304 - 11905: 0xA0BC, + 29305 - 11905: 0xCCD8, + 29306 - 11905: 0xCEFE, + 29307 - 11905: 0xA0BD, + 29308 - 11905: 0xA0BE, + 29309 - 11905: 0xA0BF, + 29310 - 11905: 0xEAF5, + 29311 - 11905: 0xEAF6, + 29312 - 11905: 0xCFAC, + 29313 - 11905: 0xC0E7, + 29314 - 11905: 0xA0C0, + 29315 - 11905: 0xA0C1, + 29316 - 11905: 0xEAF7, + 29317 - 11905: 0xA0C2, + 29318 - 11905: 0xA0C3, + 29319 - 11905: 0xA0C4, + 29320 - 11905: 0xA0C5, + 29321 - 11905: 0xA0C6, + 29322 - 11905: 0xB6BF, + 29323 - 11905: 0xEAF8, + 29324 - 11905: 0xA0C7, + 29325 - 11905: 0xEAF9, + 29326 - 11905: 0xA0C8, + 29327 - 11905: 0xEAFA, + 29328 - 11905: 0xA0C9, + 29329 - 11905: 0xA0CA, + 29330 - 11905: 0xEAFB, + 29331 - 11905: 0xA0CB, + 29332 - 11905: 0xA0CC, + 29333 - 11905: 0xA0CD, + 29334 - 11905: 0xA0CE, + 29335 - 11905: 0xA0CF, + 29336 - 11905: 0xA0D0, + 29337 - 11905: 0xA0D1, + 29338 - 11905: 0xA0D2, + 29339 - 11905: 0xA0D3, + 29340 - 11905: 0xA0D4, + 29341 - 11905: 0xA0D5, + 29342 - 11905: 0xA0D6, + 29343 - 11905: 0xEAF1, + 29344 - 11905: 0xA0D7, + 29345 - 11905: 0xA0D8, + 29346 - 11905: 0xA0D9, + 29347 - 11905: 0xA0DA, + 29348 - 11905: 0xA0DB, + 29349 - 11905: 0xA0DC, + 29350 - 11905: 0xA0DD, + 29351 - 11905: 0xA0DE, + 29352 - 11905: 0xA0DF, + 29353 - 11905: 0xA0E0, + 29354 - 11905: 0xA0E1, + 29355 - 11905: 0xA0E2, + 29356 - 11905: 0xC8AE, + 29357 - 11905: 0xE1EB, + 29358 - 11905: 0xA0E3, + 29359 - 11905: 0xB7B8, + 29360 - 11905: 0xE1EC, + 29361 - 11905: 0xA0E4, + 29362 - 11905: 0xA0E5, + 29363 - 11905: 0xA0E6, + 29364 - 11905: 0xE1ED, + 29365 - 11905: 0xA0E7, + 29366 - 11905: 0xD7B4, + 29367 - 11905: 0xE1EE, + 29368 - 11905: 0xE1EF, + 29369 - 11905: 0xD3CC, + 29370 - 11905: 0xA0E8, + 29371 - 11905: 0xA0E9, + 29372 - 11905: 0xA0EA, + 29373 - 11905: 0xA0EB, + 29374 - 11905: 0xA0EC, + 29375 - 11905: 0xA0ED, + 29376 - 11905: 0xA0EE, + 29377 - 11905: 0xE1F1, + 29378 - 11905: 0xBFF1, + 29379 - 11905: 0xE1F0, + 29380 - 11905: 0xB5D2, + 29381 - 11905: 0xA0EF, + 29382 - 11905: 0xA0F0, + 29383 - 11905: 0xA0F1, + 29384 - 11905: 0xB1B7, + 29385 - 11905: 0xA0F2, + 29386 - 11905: 0xA0F3, + 29387 - 11905: 0xA0F4, + 29388 - 11905: 0xA0F5, + 29389 - 11905: 0xE1F3, + 29390 - 11905: 0xE1F2, + 29391 - 11905: 0xA0F6, + 29392 - 11905: 0xBAFC, + 29393 - 11905: 0xA0F7, + 29394 - 11905: 0xE1F4, + 29395 - 11905: 0xA0F8, + 29396 - 11905: 0xA0F9, + 29397 - 11905: 0xA0FA, + 29398 - 11905: 0xA0FB, + 29399 - 11905: 0xB9B7, + 29400 - 11905: 0xA0FC, + 29401 - 11905: 0xBED1, + 29402 - 11905: 0xA0FD, + 29403 - 11905: 0xA0FE, + 29404 - 11905: 0xAA40, + 29405 - 11905: 0xAA41, + 29406 - 11905: 0xC4FC, + 29407 - 11905: 0xAA42, + 29408 - 11905: 0xBADD, + 29409 - 11905: 0xBDC6, + 29410 - 11905: 0xAA43, + 29411 - 11905: 0xAA44, + 29412 - 11905: 0xAA45, + 29413 - 11905: 0xAA46, + 29414 - 11905: 0xAA47, + 29415 - 11905: 0xAA48, + 29416 - 11905: 0xE1F5, + 29417 - 11905: 0xE1F7, + 29418 - 11905: 0xAA49, + 29419 - 11905: 0xAA4A, + 29420 - 11905: 0xB6C0, + 29421 - 11905: 0xCFC1, + 29422 - 11905: 0xCAA8, + 29423 - 11905: 0xE1F6, + 29424 - 11905: 0xD5F8, + 29425 - 11905: 0xD3FC, + 29426 - 11905: 0xE1F8, + 29427 - 11905: 0xE1FC, + 29428 - 11905: 0xE1F9, + 29429 - 11905: 0xAA4B, + 29430 - 11905: 0xAA4C, + 29431 - 11905: 0xE1FA, + 29432 - 11905: 0xC0EA, + 29433 - 11905: 0xAA4D, + 29434 - 11905: 0xE1FE, + 29435 - 11905: 0xE2A1, + 29436 - 11905: 0xC0C7, + 29437 - 11905: 0xAA4E, + 29438 - 11905: 0xAA4F, + 29439 - 11905: 0xAA50, + 29440 - 11905: 0xAA51, + 29441 - 11905: 0xE1FB, + 29442 - 11905: 0xAA52, + 29443 - 11905: 0xE1FD, + 29444 - 11905: 0xAA53, + 29445 - 11905: 0xAA54, + 29446 - 11905: 0xAA55, + 29447 - 11905: 0xAA56, + 29448 - 11905: 0xAA57, + 29449 - 11905: 0xAA58, + 29450 - 11905: 0xE2A5, + 29451 - 11905: 0xAA59, + 29452 - 11905: 0xAA5A, + 29453 - 11905: 0xAA5B, + 29454 - 11905: 0xC1D4, + 29455 - 11905: 0xAA5C, + 29456 - 11905: 0xAA5D, + 29457 - 11905: 0xAA5E, + 29458 - 11905: 0xAA5F, + 29459 - 11905: 0xE2A3, + 29460 - 11905: 0xAA60, + 29461 - 11905: 0xE2A8, + 29462 - 11905: 0xB2FE, + 29463 - 11905: 0xE2A2, + 29464 - 11905: 0xAA61, + 29465 - 11905: 0xAA62, + 29466 - 11905: 0xAA63, + 29467 - 11905: 0xC3CD, + 29468 - 11905: 0xB2C2, + 29469 - 11905: 0xE2A7, + 29470 - 11905: 0xE2A6, + 29471 - 11905: 0xAA64, + 29472 - 11905: 0xAA65, + 29473 - 11905: 0xE2A4, + 29474 - 11905: 0xE2A9, + 29475 - 11905: 0xAA66, + 29476 - 11905: 0xAA67, + 29477 - 11905: 0xE2AB, + 29478 - 11905: 0xAA68, + 29479 - 11905: 0xAA69, + 29480 - 11905: 0xAA6A, + 29481 - 11905: 0xD0C9, + 29482 - 11905: 0xD6ED, + 29483 - 11905: 0xC3A8, + 29484 - 11905: 0xE2AC, + 29485 - 11905: 0xAA6B, + 29486 - 11905: 0xCFD7, + 29487 - 11905: 0xAA6C, + 29488 - 11905: 0xAA6D, + 29489 - 11905: 0xE2AE, + 29490 - 11905: 0xAA6E, + 29491 - 11905: 0xAA6F, + 29492 - 11905: 0xBAEF, + 29493 - 11905: 0xAA70, + 29494 - 11905: 0xAA71, + 29495 - 11905: 0xE9E0, + 29496 - 11905: 0xE2AD, + 29497 - 11905: 0xE2AA, + 29498 - 11905: 0xAA72, + 29499 - 11905: 0xAA73, + 29500 - 11905: 0xAA74, + 29501 - 11905: 0xAA75, + 29502 - 11905: 0xBBAB, + 29503 - 11905: 0xD4B3, + 29504 - 11905: 0xAA76, + 29505 - 11905: 0xAA77, + 29506 - 11905: 0xAA78, + 29507 - 11905: 0xAA79, + 29508 - 11905: 0xAA7A, + 29509 - 11905: 0xAA7B, + 29510 - 11905: 0xAA7C, + 29511 - 11905: 0xAA7D, + 29512 - 11905: 0xAA7E, + 29513 - 11905: 0xAA80, + 29514 - 11905: 0xAA81, + 29515 - 11905: 0xAA82, + 29516 - 11905: 0xAA83, + 29517 - 11905: 0xE2B0, + 29518 - 11905: 0xAA84, + 29519 - 11905: 0xAA85, + 29520 - 11905: 0xE2AF, + 29521 - 11905: 0xAA86, + 29522 - 11905: 0xE9E1, + 29523 - 11905: 0xAA87, + 29524 - 11905: 0xAA88, + 29525 - 11905: 0xAA89, + 29526 - 11905: 0xAA8A, + 29527 - 11905: 0xE2B1, + 29528 - 11905: 0xAA8B, + 29529 - 11905: 0xAA8C, + 29530 - 11905: 0xAA8D, + 29531 - 11905: 0xAA8E, + 29532 - 11905: 0xAA8F, + 29533 - 11905: 0xAA90, + 29534 - 11905: 0xAA91, + 29535 - 11905: 0xAA92, + 29536 - 11905: 0xE2B2, + 29537 - 11905: 0xAA93, + 29538 - 11905: 0xAA94, + 29539 - 11905: 0xAA95, + 29540 - 11905: 0xAA96, + 29541 - 11905: 0xAA97, + 29542 - 11905: 0xAA98, + 29543 - 11905: 0xAA99, + 29544 - 11905: 0xAA9A, + 29545 - 11905: 0xAA9B, + 29546 - 11905: 0xAA9C, + 29547 - 11905: 0xAA9D, + 29548 - 11905: 0xE2B3, + 29549 - 11905: 0xCCA1, + 29550 - 11905: 0xAA9E, + 29551 - 11905: 0xE2B4, + 29552 - 11905: 0xAA9F, + 29553 - 11905: 0xAAA0, + 29554 - 11905: 0xAB40, + 29555 - 11905: 0xAB41, + 29556 - 11905: 0xAB42, + 29557 - 11905: 0xAB43, + 29558 - 11905: 0xAB44, + 29559 - 11905: 0xAB45, + 29560 - 11905: 0xAB46, + 29561 - 11905: 0xAB47, + 29562 - 11905: 0xAB48, + 29563 - 11905: 0xAB49, + 29564 - 11905: 0xAB4A, + 29565 - 11905: 0xAB4B, + 29566 - 11905: 0xE2B5, + 29567 - 11905: 0xAB4C, + 29568 - 11905: 0xAB4D, + 29569 - 11905: 0xAB4E, + 29570 - 11905: 0xAB4F, + 29571 - 11905: 0xAB50, + 29572 - 11905: 0xD0FE, + 29573 - 11905: 0xAB51, + 29574 - 11905: 0xAB52, + 29575 - 11905: 0xC2CA, + 29576 - 11905: 0xAB53, + 29577 - 11905: 0xD3F1, + 29578 - 11905: 0xAB54, + 29579 - 11905: 0xCDF5, + 29580 - 11905: 0xAB55, + 29581 - 11905: 0xAB56, + 29582 - 11905: 0xE7E0, + 29583 - 11905: 0xAB57, + 29584 - 11905: 0xAB58, + 29585 - 11905: 0xE7E1, + 29586 - 11905: 0xAB59, + 29587 - 11905: 0xAB5A, + 29588 - 11905: 0xAB5B, + 29589 - 11905: 0xAB5C, + 29590 - 11905: 0xBEC1, + 29591 - 11905: 0xAB5D, + 29592 - 11905: 0xAB5E, + 29593 - 11905: 0xAB5F, + 29594 - 11905: 0xAB60, + 29595 - 11905: 0xC2EA, + 29596 - 11905: 0xAB61, + 29597 - 11905: 0xAB62, + 29598 - 11905: 0xAB63, + 29599 - 11905: 0xE7E4, + 29600 - 11905: 0xAB64, + 29601 - 11905: 0xAB65, + 29602 - 11905: 0xE7E3, + 29603 - 11905: 0xAB66, + 29604 - 11905: 0xAB67, + 29605 - 11905: 0xAB68, + 29606 - 11905: 0xAB69, + 29607 - 11905: 0xAB6A, + 29608 - 11905: 0xAB6B, + 29609 - 11905: 0xCDE6, + 29610 - 11905: 0xAB6C, + 29611 - 11905: 0xC3B5, + 29612 - 11905: 0xAB6D, + 29613 - 11905: 0xAB6E, + 29614 - 11905: 0xE7E2, + 29615 - 11905: 0xBBB7, + 29616 - 11905: 0xCFD6, + 29617 - 11905: 0xAB6F, + 29618 - 11905: 0xC1E1, + 29619 - 11905: 0xE7E9, + 29620 - 11905: 0xAB70, + 29621 - 11905: 0xAB71, + 29622 - 11905: 0xAB72, + 29623 - 11905: 0xE7E8, + 29624 - 11905: 0xAB73, + 29625 - 11905: 0xAB74, + 29626 - 11905: 0xE7F4, + 29627 - 11905: 0xB2A3, + 29628 - 11905: 0xAB75, + 29629 - 11905: 0xAB76, + 29630 - 11905: 0xAB77, + 29631 - 11905: 0xAB78, + 29632 - 11905: 0xE7EA, + 29633 - 11905: 0xAB79, + 29634 - 11905: 0xE7E6, + 29635 - 11905: 0xAB7A, + 29636 - 11905: 0xAB7B, + 29637 - 11905: 0xAB7C, + 29638 - 11905: 0xAB7D, + 29639 - 11905: 0xAB7E, + 29640 - 11905: 0xE7EC, + 29641 - 11905: 0xE7EB, + 29642 - 11905: 0xC9BA, + 29643 - 11905: 0xAB80, + 29644 - 11905: 0xAB81, + 29645 - 11905: 0xD5E4, + 29646 - 11905: 0xAB82, + 29647 - 11905: 0xE7E5, + 29648 - 11905: 0xB7A9, + 29649 - 11905: 0xE7E7, + 29650 - 11905: 0xAB83, + 29651 - 11905: 0xAB84, + 29652 - 11905: 0xAB85, + 29653 - 11905: 0xAB86, + 29654 - 11905: 0xAB87, + 29655 - 11905: 0xAB88, + 29656 - 11905: 0xAB89, + 29657 - 11905: 0xE7EE, + 29658 - 11905: 0xAB8A, + 29659 - 11905: 0xAB8B, + 29660 - 11905: 0xAB8C, + 29661 - 11905: 0xAB8D, + 29662 - 11905: 0xE7F3, + 29663 - 11905: 0xAB8E, + 29664 - 11905: 0xD6E9, + 29665 - 11905: 0xAB8F, + 29666 - 11905: 0xAB90, + 29667 - 11905: 0xAB91, + 29668 - 11905: 0xAB92, + 29669 - 11905: 0xE7ED, + 29670 - 11905: 0xAB93, + 29671 - 11905: 0xE7F2, + 29672 - 11905: 0xAB94, + 29673 - 11905: 0xE7F1, + 29674 - 11905: 0xAB95, + 29675 - 11905: 0xAB96, + 29676 - 11905: 0xAB97, + 29677 - 11905: 0xB0E0, + 29678 - 11905: 0xAB98, + 29679 - 11905: 0xAB99, + 29680 - 11905: 0xAB9A, + 29681 - 11905: 0xAB9B, + 29682 - 11905: 0xE7F5, + 29683 - 11905: 0xAB9C, + 29684 - 11905: 0xAB9D, + 29685 - 11905: 0xAB9E, + 29686 - 11905: 0xAB9F, + 29687 - 11905: 0xABA0, + 29688 - 11905: 0xAC40, + 29689 - 11905: 0xAC41, + 29690 - 11905: 0xAC42, + 29691 - 11905: 0xAC43, + 29692 - 11905: 0xAC44, + 29693 - 11905: 0xAC45, + 29694 - 11905: 0xAC46, + 29695 - 11905: 0xAC47, + 29696 - 11905: 0xAC48, + 29697 - 11905: 0xAC49, + 29698 - 11905: 0xAC4A, + 29699 - 11905: 0xC7F2, + 29700 - 11905: 0xAC4B, + 29701 - 11905: 0xC0C5, + 29702 - 11905: 0xC0ED, + 29703 - 11905: 0xAC4C, + 29704 - 11905: 0xAC4D, + 29705 - 11905: 0xC1F0, + 29706 - 11905: 0xE7F0, + 29707 - 11905: 0xAC4E, + 29708 - 11905: 0xAC4F, + 29709 - 11905: 0xAC50, + 29710 - 11905: 0xAC51, + 29711 - 11905: 0xE7F6, + 29712 - 11905: 0xCBF6, + 29713 - 11905: 0xAC52, + 29714 - 11905: 0xAC53, + 29715 - 11905: 0xAC54, + 29716 - 11905: 0xAC55, + 29717 - 11905: 0xAC56, + 29718 - 11905: 0xAC57, + 29719 - 11905: 0xAC58, + 29720 - 11905: 0xAC59, + 29721 - 11905: 0xAC5A, + 29722 - 11905: 0xE8A2, + 29723 - 11905: 0xE8A1, + 29724 - 11905: 0xAC5B, + 29725 - 11905: 0xAC5C, + 29726 - 11905: 0xAC5D, + 29727 - 11905: 0xAC5E, + 29728 - 11905: 0xAC5F, + 29729 - 11905: 0xAC60, + 29730 - 11905: 0xD7C1, + 29731 - 11905: 0xAC61, + 29732 - 11905: 0xAC62, + 29733 - 11905: 0xE7FA, + 29734 - 11905: 0xE7F9, + 29735 - 11905: 0xAC63, + 29736 - 11905: 0xE7FB, + 29737 - 11905: 0xAC64, + 29738 - 11905: 0xE7F7, + 29739 - 11905: 0xAC65, + 29740 - 11905: 0xE7FE, + 29741 - 11905: 0xAC66, + 29742 - 11905: 0xE7FD, + 29743 - 11905: 0xAC67, + 29744 - 11905: 0xE7FC, + 29745 - 11905: 0xAC68, + 29746 - 11905: 0xAC69, + 29747 - 11905: 0xC1D5, + 29748 - 11905: 0xC7D9, + 29749 - 11905: 0xC5FD, + 29750 - 11905: 0xC5C3, + 29751 - 11905: 0xAC6A, + 29752 - 11905: 0xAC6B, + 29753 - 11905: 0xAC6C, + 29754 - 11905: 0xAC6D, + 29755 - 11905: 0xAC6E, + 29756 - 11905: 0xC7ED, + 29757 - 11905: 0xAC6F, + 29758 - 11905: 0xAC70, + 29759 - 11905: 0xAC71, + 29760 - 11905: 0xAC72, + 29761 - 11905: 0xE8A3, + 29762 - 11905: 0xAC73, + 29763 - 11905: 0xAC74, + 29764 - 11905: 0xAC75, + 29765 - 11905: 0xAC76, + 29766 - 11905: 0xAC77, + 29767 - 11905: 0xAC78, + 29768 - 11905: 0xAC79, + 29769 - 11905: 0xAC7A, + 29770 - 11905: 0xAC7B, + 29771 - 11905: 0xAC7C, + 29772 - 11905: 0xAC7D, + 29773 - 11905: 0xAC7E, + 29774 - 11905: 0xAC80, + 29775 - 11905: 0xAC81, + 29776 - 11905: 0xAC82, + 29777 - 11905: 0xAC83, + 29778 - 11905: 0xAC84, + 29779 - 11905: 0xAC85, + 29780 - 11905: 0xAC86, + 29781 - 11905: 0xE8A6, + 29782 - 11905: 0xAC87, + 29783 - 11905: 0xE8A5, + 29784 - 11905: 0xAC88, + 29785 - 11905: 0xE8A7, + 29786 - 11905: 0xBAF7, + 29787 - 11905: 0xE7F8, + 29788 - 11905: 0xE8A4, + 29789 - 11905: 0xAC89, + 29790 - 11905: 0xC8F0, + 29791 - 11905: 0xC9AA, + 29792 - 11905: 0xAC8A, + 29793 - 11905: 0xAC8B, + 29794 - 11905: 0xAC8C, + 29795 - 11905: 0xAC8D, + 29796 - 11905: 0xAC8E, + 29797 - 11905: 0xAC8F, + 29798 - 11905: 0xAC90, + 29799 - 11905: 0xAC91, + 29800 - 11905: 0xAC92, + 29801 - 11905: 0xAC93, + 29802 - 11905: 0xAC94, + 29803 - 11905: 0xAC95, + 29804 - 11905: 0xAC96, + 29805 - 11905: 0xE8A9, + 29806 - 11905: 0xAC97, + 29807 - 11905: 0xAC98, + 29808 - 11905: 0xB9E5, + 29809 - 11905: 0xAC99, + 29810 - 11905: 0xAC9A, + 29811 - 11905: 0xAC9B, + 29812 - 11905: 0xAC9C, + 29813 - 11905: 0xAC9D, + 29814 - 11905: 0xD1FE, + 29815 - 11905: 0xE8A8, + 29816 - 11905: 0xAC9E, + 29817 - 11905: 0xAC9F, + 29818 - 11905: 0xACA0, + 29819 - 11905: 0xAD40, + 29820 - 11905: 0xAD41, + 29821 - 11905: 0xAD42, + 29822 - 11905: 0xE8AA, + 29823 - 11905: 0xAD43, + 29824 - 11905: 0xE8AD, + 29825 - 11905: 0xE8AE, + 29826 - 11905: 0xAD44, + 29827 - 11905: 0xC1A7, + 29828 - 11905: 0xAD45, + 29829 - 11905: 0xAD46, + 29830 - 11905: 0xAD47, + 29831 - 11905: 0xE8AF, + 29832 - 11905: 0xAD48, + 29833 - 11905: 0xAD49, + 29834 - 11905: 0xAD4A, + 29835 - 11905: 0xE8B0, + 29836 - 11905: 0xAD4B, + 29837 - 11905: 0xAD4C, + 29838 - 11905: 0xE8AC, + 29839 - 11905: 0xAD4D, + 29840 - 11905: 0xE8B4, + 29841 - 11905: 0xAD4E, + 29842 - 11905: 0xAD4F, + 29843 - 11905: 0xAD50, + 29844 - 11905: 0xAD51, + 29845 - 11905: 0xAD52, + 29846 - 11905: 0xAD53, + 29847 - 11905: 0xAD54, + 29848 - 11905: 0xAD55, + 29849 - 11905: 0xAD56, + 29850 - 11905: 0xAD57, + 29851 - 11905: 0xAD58, + 29852 - 11905: 0xE8AB, + 29853 - 11905: 0xAD59, + 29854 - 11905: 0xE8B1, + 29855 - 11905: 0xAD5A, + 29856 - 11905: 0xAD5B, + 29857 - 11905: 0xAD5C, + 29858 - 11905: 0xAD5D, + 29859 - 11905: 0xAD5E, + 29860 - 11905: 0xAD5F, + 29861 - 11905: 0xAD60, + 29862 - 11905: 0xAD61, + 29863 - 11905: 0xE8B5, + 29864 - 11905: 0xE8B2, + 29865 - 11905: 0xE8B3, + 29866 - 11905: 0xAD62, + 29867 - 11905: 0xAD63, + 29868 - 11905: 0xAD64, + 29869 - 11905: 0xAD65, + 29870 - 11905: 0xAD66, + 29871 - 11905: 0xAD67, + 29872 - 11905: 0xAD68, + 29873 - 11905: 0xAD69, + 29874 - 11905: 0xAD6A, + 29875 - 11905: 0xAD6B, + 29876 - 11905: 0xAD6C, + 29877 - 11905: 0xAD6D, + 29878 - 11905: 0xAD6E, + 29879 - 11905: 0xAD6F, + 29880 - 11905: 0xAD70, + 29881 - 11905: 0xAD71, + 29882 - 11905: 0xE8B7, + 29883 - 11905: 0xAD72, + 29884 - 11905: 0xAD73, + 29885 - 11905: 0xAD74, + 29886 - 11905: 0xAD75, + 29887 - 11905: 0xAD76, + 29888 - 11905: 0xAD77, + 29889 - 11905: 0xAD78, + 29890 - 11905: 0xAD79, + 29891 - 11905: 0xAD7A, + 29892 - 11905: 0xAD7B, + 29893 - 11905: 0xAD7C, + 29894 - 11905: 0xAD7D, + 29895 - 11905: 0xAD7E, + 29896 - 11905: 0xAD80, + 29897 - 11905: 0xAD81, + 29898 - 11905: 0xAD82, + 29899 - 11905: 0xAD83, + 29900 - 11905: 0xAD84, + 29901 - 11905: 0xAD85, + 29902 - 11905: 0xAD86, + 29903 - 11905: 0xAD87, + 29904 - 11905: 0xAD88, + 29905 - 11905: 0xAD89, + 29906 - 11905: 0xE8B6, + 29907 - 11905: 0xAD8A, + 29908 - 11905: 0xAD8B, + 29909 - 11905: 0xAD8C, + 29910 - 11905: 0xAD8D, + 29911 - 11905: 0xAD8E, + 29912 - 11905: 0xAD8F, + 29913 - 11905: 0xAD90, + 29914 - 11905: 0xAD91, + 29915 - 11905: 0xAD92, + 29916 - 11905: 0xB9CF, + 29917 - 11905: 0xAD93, + 29918 - 11905: 0xF0AC, + 29919 - 11905: 0xAD94, + 29920 - 11905: 0xF0AD, + 29921 - 11905: 0xAD95, + 29922 - 11905: 0xC6B0, + 29923 - 11905: 0xB0EA, + 29924 - 11905: 0xC8BF, + 29925 - 11905: 0xAD96, + 29926 - 11905: 0xCDDF, + 29927 - 11905: 0xAD97, + 29928 - 11905: 0xAD98, + 29929 - 11905: 0xAD99, + 29930 - 11905: 0xAD9A, + 29931 - 11905: 0xAD9B, + 29932 - 11905: 0xAD9C, + 29933 - 11905: 0xAD9D, + 29934 - 11905: 0xCECD, + 29935 - 11905: 0xEAB1, + 29936 - 11905: 0xAD9E, + 29937 - 11905: 0xAD9F, + 29938 - 11905: 0xADA0, + 29939 - 11905: 0xAE40, + 29940 - 11905: 0xEAB2, + 29941 - 11905: 0xAE41, + 29942 - 11905: 0xC6BF, + 29943 - 11905: 0xB4C9, + 29944 - 11905: 0xAE42, + 29945 - 11905: 0xAE43, + 29946 - 11905: 0xAE44, + 29947 - 11905: 0xAE45, + 29948 - 11905: 0xAE46, + 29949 - 11905: 0xAE47, + 29950 - 11905: 0xAE48, + 29951 - 11905: 0xEAB3, + 29952 - 11905: 0xAE49, + 29953 - 11905: 0xAE4A, + 29954 - 11905: 0xAE4B, + 29955 - 11905: 0xAE4C, + 29956 - 11905: 0xD5E7, + 29957 - 11905: 0xAE4D, + 29958 - 11905: 0xAE4E, + 29959 - 11905: 0xAE4F, + 29960 - 11905: 0xAE50, + 29961 - 11905: 0xAE51, + 29962 - 11905: 0xAE52, + 29963 - 11905: 0xAE53, + 29964 - 11905: 0xAE54, + 29965 - 11905: 0xDDF9, + 29966 - 11905: 0xAE55, + 29967 - 11905: 0xEAB4, + 29968 - 11905: 0xAE56, + 29969 - 11905: 0xEAB5, + 29970 - 11905: 0xAE57, + 29971 - 11905: 0xEAB6, + 29972 - 11905: 0xAE58, + 29973 - 11905: 0xAE59, + 29974 - 11905: 0xAE5A, + 29975 - 11905: 0xAE5B, + 29976 - 11905: 0xB8CA, + 29977 - 11905: 0xDFB0, + 29978 - 11905: 0xC9F5, + 29979 - 11905: 0xAE5C, + 29980 - 11905: 0xCCF0, + 29981 - 11905: 0xAE5D, + 29982 - 11905: 0xAE5E, + 29983 - 11905: 0xC9FA, + 29984 - 11905: 0xAE5F, + 29985 - 11905: 0xAE60, + 29986 - 11905: 0xAE61, + 29987 - 11905: 0xAE62, + 29988 - 11905: 0xAE63, + 29989 - 11905: 0xC9FB, + 29990 - 11905: 0xAE64, + 29991 - 11905: 0xAE65, + 29992 - 11905: 0xD3C3, + 29993 - 11905: 0xCBA6, + 29994 - 11905: 0xAE66, + 29995 - 11905: 0xB8A6, + 29996 - 11905: 0xF0AE, + 29997 - 11905: 0xB1C2, + 29998 - 11905: 0xAE67, + 29999 - 11905: 0xE5B8, + 30000 - 11905: 0xCCEF, + 30001 - 11905: 0xD3C9, + 30002 - 11905: 0xBCD7, + 30003 - 11905: 0xC9EA, + 30004 - 11905: 0xAE68, + 30005 - 11905: 0xB5E7, + 30006 - 11905: 0xAE69, + 30007 - 11905: 0xC4D0, + 30008 - 11905: 0xB5E9, + 30009 - 11905: 0xAE6A, + 30010 - 11905: 0xEEAE, + 30011 - 11905: 0xBBAD, + 30012 - 11905: 0xAE6B, + 30013 - 11905: 0xAE6C, + 30014 - 11905: 0xE7DE, + 30015 - 11905: 0xAE6D, + 30016 - 11905: 0xEEAF, + 30017 - 11905: 0xAE6E, + 30018 - 11905: 0xAE6F, + 30019 - 11905: 0xAE70, + 30020 - 11905: 0xAE71, + 30021 - 11905: 0xB3A9, + 30022 - 11905: 0xAE72, + 30023 - 11905: 0xAE73, + 30024 - 11905: 0xEEB2, + 30025 - 11905: 0xAE74, + 30026 - 11905: 0xAE75, + 30027 - 11905: 0xEEB1, + 30028 - 11905: 0xBDE7, + 30029 - 11905: 0xAE76, + 30030 - 11905: 0xEEB0, + 30031 - 11905: 0xCEB7, + 30032 - 11905: 0xAE77, + 30033 - 11905: 0xAE78, + 30034 - 11905: 0xAE79, + 30035 - 11905: 0xAE7A, + 30036 - 11905: 0xC5CF, + 30037 - 11905: 0xAE7B, + 30038 - 11905: 0xAE7C, + 30039 - 11905: 0xAE7D, + 30040 - 11905: 0xAE7E, + 30041 - 11905: 0xC1F4, + 30042 - 11905: 0xDBCE, + 30043 - 11905: 0xEEB3, + 30044 - 11905: 0xD0F3, + 30045 - 11905: 0xAE80, + 30046 - 11905: 0xAE81, + 30047 - 11905: 0xAE82, + 30048 - 11905: 0xAE83, + 30049 - 11905: 0xAE84, + 30050 - 11905: 0xAE85, + 30051 - 11905: 0xAE86, + 30052 - 11905: 0xAE87, + 30053 - 11905: 0xC2D4, + 30054 - 11905: 0xC6E8, + 30055 - 11905: 0xAE88, + 30056 - 11905: 0xAE89, + 30057 - 11905: 0xAE8A, + 30058 - 11905: 0xB7AC, + 30059 - 11905: 0xAE8B, + 30060 - 11905: 0xAE8C, + 30061 - 11905: 0xAE8D, + 30062 - 11905: 0xAE8E, + 30063 - 11905: 0xAE8F, + 30064 - 11905: 0xAE90, + 30065 - 11905: 0xAE91, + 30066 - 11905: 0xEEB4, + 30067 - 11905: 0xAE92, + 30068 - 11905: 0xB3EB, + 30069 - 11905: 0xAE93, + 30070 - 11905: 0xAE94, + 30071 - 11905: 0xAE95, + 30072 - 11905: 0xBBFB, + 30073 - 11905: 0xEEB5, + 30074 - 11905: 0xAE96, + 30075 - 11905: 0xAE97, + 30076 - 11905: 0xAE98, + 30077 - 11905: 0xAE99, + 30078 - 11905: 0xAE9A, + 30079 - 11905: 0xE7DC, + 30080 - 11905: 0xAE9B, + 30081 - 11905: 0xAE9C, + 30082 - 11905: 0xAE9D, + 30083 - 11905: 0xEEB6, + 30084 - 11905: 0xAE9E, + 30085 - 11905: 0xAE9F, + 30086 - 11905: 0xBDAE, + 30087 - 11905: 0xAEA0, + 30088 - 11905: 0xAF40, + 30089 - 11905: 0xAF41, + 30090 - 11905: 0xAF42, + 30091 - 11905: 0xF1E2, + 30092 - 11905: 0xAF43, + 30093 - 11905: 0xAF44, + 30094 - 11905: 0xAF45, + 30095 - 11905: 0xCAE8, + 30096 - 11905: 0xAF46, + 30097 - 11905: 0xD2C9, + 30098 - 11905: 0xF0DA, + 30099 - 11905: 0xAF47, + 30100 - 11905: 0xF0DB, + 30101 - 11905: 0xAF48, + 30102 - 11905: 0xF0DC, + 30103 - 11905: 0xC1C6, + 30104 - 11905: 0xAF49, + 30105 - 11905: 0xB8ED, + 30106 - 11905: 0xBECE, + 30107 - 11905: 0xAF4A, + 30108 - 11905: 0xAF4B, + 30109 - 11905: 0xF0DE, + 30110 - 11905: 0xAF4C, + 30111 - 11905: 0xC5B1, + 30112 - 11905: 0xF0DD, + 30113 - 11905: 0xD1F1, + 30114 - 11905: 0xAF4D, + 30115 - 11905: 0xF0E0, + 30116 - 11905: 0xB0CC, + 30117 - 11905: 0xBDEA, + 30118 - 11905: 0xAF4E, + 30119 - 11905: 0xAF4F, + 30120 - 11905: 0xAF50, + 30121 - 11905: 0xAF51, + 30122 - 11905: 0xAF52, + 30123 - 11905: 0xD2DF, + 30124 - 11905: 0xF0DF, + 30125 - 11905: 0xAF53, + 30126 - 11905: 0xB4AF, + 30127 - 11905: 0xB7E8, + 30128 - 11905: 0xF0E6, + 30129 - 11905: 0xF0E5, + 30130 - 11905: 0xC6A3, + 30131 - 11905: 0xF0E1, + 30132 - 11905: 0xF0E2, + 30133 - 11905: 0xB4C3, + 30134 - 11905: 0xAF54, + 30135 - 11905: 0xAF55, + 30136 - 11905: 0xF0E3, + 30137 - 11905: 0xD5EE, + 30138 - 11905: 0xAF56, + 30139 - 11905: 0xAF57, + 30140 - 11905: 0xCCDB, + 30141 - 11905: 0xBED2, + 30142 - 11905: 0xBCB2, + 30143 - 11905: 0xAF58, + 30144 - 11905: 0xAF59, + 30145 - 11905: 0xAF5A, + 30146 - 11905: 0xF0E8, + 30147 - 11905: 0xF0E7, + 30148 - 11905: 0xF0E4, + 30149 - 11905: 0xB2A1, + 30150 - 11905: 0xAF5B, + 30151 - 11905: 0xD6A2, + 30152 - 11905: 0xD3B8, + 30153 - 11905: 0xBEB7, + 30154 - 11905: 0xC8AC, + 30155 - 11905: 0xAF5C, + 30156 - 11905: 0xAF5D, + 30157 - 11905: 0xF0EA, + 30158 - 11905: 0xAF5E, + 30159 - 11905: 0xAF5F, + 30160 - 11905: 0xAF60, + 30161 - 11905: 0xAF61, + 30162 - 11905: 0xD1F7, + 30163 - 11905: 0xAF62, + 30164 - 11905: 0xD6CC, + 30165 - 11905: 0xBADB, + 30166 - 11905: 0xF0E9, + 30167 - 11905: 0xAF63, + 30168 - 11905: 0xB6BB, + 30169 - 11905: 0xAF64, + 30170 - 11905: 0xAF65, + 30171 - 11905: 0xCDB4, + 30172 - 11905: 0xAF66, + 30173 - 11905: 0xAF67, + 30174 - 11905: 0xC6A6, + 30175 - 11905: 0xAF68, + 30176 - 11905: 0xAF69, + 30177 - 11905: 0xAF6A, + 30178 - 11905: 0xC1A1, + 30179 - 11905: 0xF0EB, + 30180 - 11905: 0xF0EE, + 30181 - 11905: 0xAF6B, + 30182 - 11905: 0xF0ED, + 30183 - 11905: 0xF0F0, + 30184 - 11905: 0xF0EC, + 30185 - 11905: 0xAF6C, + 30186 - 11905: 0xBBBE, + 30187 - 11905: 0xF0EF, + 30188 - 11905: 0xAF6D, + 30189 - 11905: 0xAF6E, + 30190 - 11905: 0xAF6F, + 30191 - 11905: 0xAF70, + 30192 - 11905: 0xCCB5, + 30193 - 11905: 0xF0F2, + 30194 - 11905: 0xAF71, + 30195 - 11905: 0xAF72, + 30196 - 11905: 0xB3D5, + 30197 - 11905: 0xAF73, + 30198 - 11905: 0xAF74, + 30199 - 11905: 0xAF75, + 30200 - 11905: 0xAF76, + 30201 - 11905: 0xB1D4, + 30202 - 11905: 0xAF77, + 30203 - 11905: 0xAF78, + 30204 - 11905: 0xF0F3, + 30205 - 11905: 0xAF79, + 30206 - 11905: 0xAF7A, + 30207 - 11905: 0xF0F4, + 30208 - 11905: 0xF0F6, + 30209 - 11905: 0xB4E1, + 30210 - 11905: 0xAF7B, + 30211 - 11905: 0xF0F1, + 30212 - 11905: 0xAF7C, + 30213 - 11905: 0xF0F7, + 30214 - 11905: 0xAF7D, + 30215 - 11905: 0xAF7E, + 30216 - 11905: 0xAF80, + 30217 - 11905: 0xAF81, + 30218 - 11905: 0xF0FA, + 30219 - 11905: 0xAF82, + 30220 - 11905: 0xF0F8, + 30221 - 11905: 0xAF83, + 30222 - 11905: 0xAF84, + 30223 - 11905: 0xAF85, + 30224 - 11905: 0xF0F5, + 30225 - 11905: 0xAF86, + 30226 - 11905: 0xAF87, + 30227 - 11905: 0xAF88, + 30228 - 11905: 0xAF89, + 30229 - 11905: 0xF0FD, + 30230 - 11905: 0xAF8A, + 30231 - 11905: 0xF0F9, + 30232 - 11905: 0xF0FC, + 30233 - 11905: 0xF0FE, + 30234 - 11905: 0xAF8B, + 30235 - 11905: 0xF1A1, + 30236 - 11905: 0xAF8C, + 30237 - 11905: 0xAF8D, + 30238 - 11905: 0xAF8E, + 30239 - 11905: 0xCEC1, + 30240 - 11905: 0xF1A4, + 30241 - 11905: 0xAF8F, + 30242 - 11905: 0xF1A3, + 30243 - 11905: 0xAF90, + 30244 - 11905: 0xC1F6, + 30245 - 11905: 0xF0FB, + 30246 - 11905: 0xCADD, + 30247 - 11905: 0xAF91, + 30248 - 11905: 0xAF92, + 30249 - 11905: 0xB4F1, + 30250 - 11905: 0xB1F1, + 30251 - 11905: 0xCCB1, + 30252 - 11905: 0xAF93, + 30253 - 11905: 0xF1A6, + 30254 - 11905: 0xAF94, + 30255 - 11905: 0xAF95, + 30256 - 11905: 0xF1A7, + 30257 - 11905: 0xAF96, + 30258 - 11905: 0xAF97, + 30259 - 11905: 0xF1AC, + 30260 - 11905: 0xD5CE, + 30261 - 11905: 0xF1A9, + 30262 - 11905: 0xAF98, + 30263 - 11905: 0xAF99, + 30264 - 11905: 0xC8B3, + 30265 - 11905: 0xAF9A, + 30266 - 11905: 0xAF9B, + 30267 - 11905: 0xAF9C, + 30268 - 11905: 0xF1A2, + 30269 - 11905: 0xAF9D, + 30270 - 11905: 0xF1AB, + 30271 - 11905: 0xF1A8, + 30272 - 11905: 0xF1A5, + 30273 - 11905: 0xAF9E, + 30274 - 11905: 0xAF9F, + 30275 - 11905: 0xF1AA, + 30276 - 11905: 0xAFA0, + 30277 - 11905: 0xB040, + 30278 - 11905: 0xB041, + 30279 - 11905: 0xB042, + 30280 - 11905: 0xB043, + 30281 - 11905: 0xB044, + 30282 - 11905: 0xB045, + 30283 - 11905: 0xB046, + 30284 - 11905: 0xB0A9, + 30285 - 11905: 0xF1AD, + 30286 - 11905: 0xB047, + 30287 - 11905: 0xB048, + 30288 - 11905: 0xB049, + 30289 - 11905: 0xB04A, + 30290 - 11905: 0xB04B, + 30291 - 11905: 0xB04C, + 30292 - 11905: 0xF1AF, + 30293 - 11905: 0xB04D, + 30294 - 11905: 0xF1B1, + 30295 - 11905: 0xB04E, + 30296 - 11905: 0xB04F, + 30297 - 11905: 0xB050, + 30298 - 11905: 0xB051, + 30299 - 11905: 0xB052, + 30300 - 11905: 0xF1B0, + 30301 - 11905: 0xB053, + 30302 - 11905: 0xF1AE, + 30303 - 11905: 0xB054, + 30304 - 11905: 0xB055, + 30305 - 11905: 0xB056, + 30306 - 11905: 0xB057, + 30307 - 11905: 0xD1A2, + 30308 - 11905: 0xB058, + 30309 - 11905: 0xB059, + 30310 - 11905: 0xB05A, + 30311 - 11905: 0xB05B, + 30312 - 11905: 0xB05C, + 30313 - 11905: 0xB05D, + 30314 - 11905: 0xB05E, + 30315 - 11905: 0xF1B2, + 30316 - 11905: 0xB05F, + 30317 - 11905: 0xB060, + 30318 - 11905: 0xB061, + 30319 - 11905: 0xF1B3, + 30320 - 11905: 0xB062, + 30321 - 11905: 0xB063, + 30322 - 11905: 0xB064, + 30323 - 11905: 0xB065, + 30324 - 11905: 0xB066, + 30325 - 11905: 0xB067, + 30326 - 11905: 0xB068, + 30327 - 11905: 0xB069, + 30328 - 11905: 0xB9EF, + 30329 - 11905: 0xB06A, + 30330 - 11905: 0xB06B, + 30331 - 11905: 0xB5C7, + 30332 - 11905: 0xB06C, + 30333 - 11905: 0xB0D7, + 30334 - 11905: 0xB0D9, + 30335 - 11905: 0xB06D, + 30336 - 11905: 0xB06E, + 30337 - 11905: 0xB06F, + 30338 - 11905: 0xD4ED, + 30339 - 11905: 0xB070, + 30340 - 11905: 0xB5C4, + 30341 - 11905: 0xB071, + 30342 - 11905: 0xBDD4, + 30343 - 11905: 0xBBCA, + 30344 - 11905: 0xF0A7, + 30345 - 11905: 0xB072, + 30346 - 11905: 0xB073, + 30347 - 11905: 0xB8DE, + 30348 - 11905: 0xB074, + 30349 - 11905: 0xB075, + 30350 - 11905: 0xF0A8, + 30351 - 11905: 0xB076, + 30352 - 11905: 0xB077, + 30353 - 11905: 0xB0A8, + 30354 - 11905: 0xB078, + 30355 - 11905: 0xF0A9, + 30356 - 11905: 0xB079, + 30357 - 11905: 0xB07A, + 30358 - 11905: 0xCDEE, + 30359 - 11905: 0xB07B, + 30360 - 11905: 0xB07C, + 30361 - 11905: 0xF0AA, + 30362 - 11905: 0xB07D, + 30363 - 11905: 0xB07E, + 30364 - 11905: 0xB080, + 30365 - 11905: 0xB081, + 30366 - 11905: 0xB082, + 30367 - 11905: 0xB083, + 30368 - 11905: 0xB084, + 30369 - 11905: 0xB085, + 30370 - 11905: 0xB086, + 30371 - 11905: 0xB087, + 30372 - 11905: 0xF0AB, + 30373 - 11905: 0xB088, + 30374 - 11905: 0xB089, + 30375 - 11905: 0xB08A, + 30376 - 11905: 0xB08B, + 30377 - 11905: 0xB08C, + 30378 - 11905: 0xB08D, + 30379 - 11905: 0xB08E, + 30380 - 11905: 0xB08F, + 30381 - 11905: 0xB090, + 30382 - 11905: 0xC6A4, + 30383 - 11905: 0xB091, + 30384 - 11905: 0xB092, + 30385 - 11905: 0xD6E5, + 30386 - 11905: 0xF1E4, + 30387 - 11905: 0xB093, + 30388 - 11905: 0xF1E5, + 30389 - 11905: 0xB094, + 30390 - 11905: 0xB095, + 30391 - 11905: 0xB096, + 30392 - 11905: 0xB097, + 30393 - 11905: 0xB098, + 30394 - 11905: 0xB099, + 30395 - 11905: 0xB09A, + 30396 - 11905: 0xB09B, + 30397 - 11905: 0xB09C, + 30398 - 11905: 0xB09D, + 30399 - 11905: 0xC3F3, + 30400 - 11905: 0xB09E, + 30401 - 11905: 0xB09F, + 30402 - 11905: 0xD3DB, + 30403 - 11905: 0xB0A0, + 30404 - 11905: 0xB140, + 30405 - 11905: 0xD6D1, + 30406 - 11905: 0xC5E8, + 30407 - 11905: 0xB141, + 30408 - 11905: 0xD3AF, + 30409 - 11905: 0xB142, + 30410 - 11905: 0xD2E6, + 30411 - 11905: 0xB143, + 30412 - 11905: 0xB144, + 30413 - 11905: 0xEEC1, + 30414 - 11905: 0xB0BB, + 30415 - 11905: 0xD5B5, + 30416 - 11905: 0xD1CE, + 30417 - 11905: 0xBCE0, + 30418 - 11905: 0xBAD0, + 30419 - 11905: 0xB145, + 30420 - 11905: 0xBFF8, + 30421 - 11905: 0xB146, + 30422 - 11905: 0xB8C7, + 30423 - 11905: 0xB5C1, + 30424 - 11905: 0xC5CC, + 30425 - 11905: 0xB147, + 30426 - 11905: 0xB148, + 30427 - 11905: 0xCAA2, + 30428 - 11905: 0xB149, + 30429 - 11905: 0xB14A, + 30430 - 11905: 0xB14B, + 30431 - 11905: 0xC3CB, + 30432 - 11905: 0xB14C, + 30433 - 11905: 0xB14D, + 30434 - 11905: 0xB14E, + 30435 - 11905: 0xB14F, + 30436 - 11905: 0xB150, + 30437 - 11905: 0xEEC2, + 30438 - 11905: 0xB151, + 30439 - 11905: 0xB152, + 30440 - 11905: 0xB153, + 30441 - 11905: 0xB154, + 30442 - 11905: 0xB155, + 30443 - 11905: 0xB156, + 30444 - 11905: 0xB157, + 30445 - 11905: 0xB158, + 30446 - 11905: 0xC4BF, + 30447 - 11905: 0xB6A2, + 30448 - 11905: 0xB159, + 30449 - 11905: 0xEDEC, + 30450 - 11905: 0xC3A4, + 30451 - 11905: 0xB15A, + 30452 - 11905: 0xD6B1, + 30453 - 11905: 0xB15B, + 30454 - 11905: 0xB15C, + 30455 - 11905: 0xB15D, + 30456 - 11905: 0xCFE0, + 30457 - 11905: 0xEDEF, + 30458 - 11905: 0xB15E, + 30459 - 11905: 0xB15F, + 30460 - 11905: 0xC5CE, + 30461 - 11905: 0xB160, + 30462 - 11905: 0xB6DC, + 30463 - 11905: 0xB161, + 30464 - 11905: 0xB162, + 30465 - 11905: 0xCAA1, + 30466 - 11905: 0xB163, + 30467 - 11905: 0xB164, + 30468 - 11905: 0xEDED, + 30469 - 11905: 0xB165, + 30470 - 11905: 0xB166, + 30471 - 11905: 0xEDF0, + 30472 - 11905: 0xEDF1, + 30473 - 11905: 0xC3BC, + 30474 - 11905: 0xB167, + 30475 - 11905: 0xBFB4, + 30476 - 11905: 0xB168, + 30477 - 11905: 0xEDEE, + 30478 - 11905: 0xB169, + 30479 - 11905: 0xB16A, + 30480 - 11905: 0xB16B, + 30481 - 11905: 0xB16C, + 30482 - 11905: 0xB16D, + 30483 - 11905: 0xB16E, + 30484 - 11905: 0xB16F, + 30485 - 11905: 0xB170, + 30486 - 11905: 0xB171, + 30487 - 11905: 0xB172, + 30488 - 11905: 0xB173, + 30489 - 11905: 0xEDF4, + 30490 - 11905: 0xEDF2, + 30491 - 11905: 0xB174, + 30492 - 11905: 0xB175, + 30493 - 11905: 0xB176, + 30494 - 11905: 0xB177, + 30495 - 11905: 0xD5E6, + 30496 - 11905: 0xC3DF, + 30497 - 11905: 0xB178, + 30498 - 11905: 0xEDF3, + 30499 - 11905: 0xB179, + 30500 - 11905: 0xB17A, + 30501 - 11905: 0xB17B, + 30502 - 11905: 0xEDF6, + 30503 - 11905: 0xB17C, + 30504 - 11905: 0xD5A3, + 30505 - 11905: 0xD1A3, + 30506 - 11905: 0xB17D, + 30507 - 11905: 0xB17E, + 30508 - 11905: 0xB180, + 30509 - 11905: 0xEDF5, + 30510 - 11905: 0xB181, + 30511 - 11905: 0xC3D0, + 30512 - 11905: 0xB182, + 30513 - 11905: 0xB183, + 30514 - 11905: 0xB184, + 30515 - 11905: 0xB185, + 30516 - 11905: 0xB186, + 30517 - 11905: 0xEDF7, + 30518 - 11905: 0xBFF4, + 30519 - 11905: 0xBEEC, + 30520 - 11905: 0xEDF8, + 30521 - 11905: 0xB187, + 30522 - 11905: 0xCCF7, + 30523 - 11905: 0xB188, + 30524 - 11905: 0xD1DB, + 30525 - 11905: 0xB189, + 30526 - 11905: 0xB18A, + 30527 - 11905: 0xB18B, + 30528 - 11905: 0xD7C5, + 30529 - 11905: 0xD5F6, + 30530 - 11905: 0xB18C, + 30531 - 11905: 0xEDFC, + 30532 - 11905: 0xB18D, + 30533 - 11905: 0xB18E, + 30534 - 11905: 0xB18F, + 30535 - 11905: 0xEDFB, + 30536 - 11905: 0xB190, + 30537 - 11905: 0xB191, + 30538 - 11905: 0xB192, + 30539 - 11905: 0xB193, + 30540 - 11905: 0xB194, + 30541 - 11905: 0xB195, + 30542 - 11905: 0xB196, + 30543 - 11905: 0xB197, + 30544 - 11905: 0xEDF9, + 30545 - 11905: 0xEDFA, + 30546 - 11905: 0xB198, + 30547 - 11905: 0xB199, + 30548 - 11905: 0xB19A, + 30549 - 11905: 0xB19B, + 30550 - 11905: 0xB19C, + 30551 - 11905: 0xB19D, + 30552 - 11905: 0xB19E, + 30553 - 11905: 0xB19F, + 30554 - 11905: 0xEDFD, + 30555 - 11905: 0xBEA6, + 30556 - 11905: 0xB1A0, + 30557 - 11905: 0xB240, + 30558 - 11905: 0xB241, + 30559 - 11905: 0xB242, + 30560 - 11905: 0xB243, + 30561 - 11905: 0xCBAF, + 30562 - 11905: 0xEEA1, + 30563 - 11905: 0xB6BD, + 30564 - 11905: 0xB244, + 30565 - 11905: 0xEEA2, + 30566 - 11905: 0xC4C0, + 30567 - 11905: 0xB245, + 30568 - 11905: 0xEDFE, + 30569 - 11905: 0xB246, + 30570 - 11905: 0xB247, + 30571 - 11905: 0xBDDE, + 30572 - 11905: 0xB2C7, + 30573 - 11905: 0xB248, + 30574 - 11905: 0xB249, + 30575 - 11905: 0xB24A, + 30576 - 11905: 0xB24B, + 30577 - 11905: 0xB24C, + 30578 - 11905: 0xB24D, + 30579 - 11905: 0xB24E, + 30580 - 11905: 0xB24F, + 30581 - 11905: 0xB250, + 30582 - 11905: 0xB251, + 30583 - 11905: 0xB252, + 30584 - 11905: 0xB253, + 30585 - 11905: 0xB6C3, + 30586 - 11905: 0xB254, + 30587 - 11905: 0xB255, + 30588 - 11905: 0xB256, + 30589 - 11905: 0xEEA5, + 30590 - 11905: 0xD8BA, + 30591 - 11905: 0xEEA3, + 30592 - 11905: 0xEEA6, + 30593 - 11905: 0xB257, + 30594 - 11905: 0xB258, + 30595 - 11905: 0xB259, + 30596 - 11905: 0xC3E9, + 30597 - 11905: 0xB3F2, + 30598 - 11905: 0xB25A, + 30599 - 11905: 0xB25B, + 30600 - 11905: 0xB25C, + 30601 - 11905: 0xB25D, + 30602 - 11905: 0xB25E, + 30603 - 11905: 0xB25F, + 30604 - 11905: 0xEEA7, + 30605 - 11905: 0xEEA4, + 30606 - 11905: 0xCFB9, + 30607 - 11905: 0xB260, + 30608 - 11905: 0xB261, + 30609 - 11905: 0xEEA8, + 30610 - 11905: 0xC2F7, + 30611 - 11905: 0xB262, + 30612 - 11905: 0xB263, + 30613 - 11905: 0xB264, + 30614 - 11905: 0xB265, + 30615 - 11905: 0xB266, + 30616 - 11905: 0xB267, + 30617 - 11905: 0xB268, + 30618 - 11905: 0xB269, + 30619 - 11905: 0xB26A, + 30620 - 11905: 0xB26B, + 30621 - 11905: 0xB26C, + 30622 - 11905: 0xB26D, + 30623 - 11905: 0xEEA9, + 30624 - 11905: 0xEEAA, + 30625 - 11905: 0xB26E, + 30626 - 11905: 0xDEAB, + 30627 - 11905: 0xB26F, + 30628 - 11905: 0xB270, + 30629 - 11905: 0xC6B3, + 30630 - 11905: 0xB271, + 30631 - 11905: 0xC7C6, + 30632 - 11905: 0xB272, + 30633 - 11905: 0xD6F5, + 30634 - 11905: 0xB5C9, + 30635 - 11905: 0xB273, + 30636 - 11905: 0xCBB2, + 30637 - 11905: 0xB274, + 30638 - 11905: 0xB275, + 30639 - 11905: 0xB276, + 30640 - 11905: 0xEEAB, + 30641 - 11905: 0xB277, + 30642 - 11905: 0xB278, + 30643 - 11905: 0xCDAB, + 30644 - 11905: 0xB279, + 30645 - 11905: 0xEEAC, + 30646 - 11905: 0xB27A, + 30647 - 11905: 0xB27B, + 30648 - 11905: 0xB27C, + 30649 - 11905: 0xB27D, + 30650 - 11905: 0xB27E, + 30651 - 11905: 0xD5B0, + 30652 - 11905: 0xB280, + 30653 - 11905: 0xEEAD, + 30654 - 11905: 0xB281, + 30655 - 11905: 0xF6C4, + 30656 - 11905: 0xB282, + 30657 - 11905: 0xB283, + 30658 - 11905: 0xB284, + 30659 - 11905: 0xB285, + 30660 - 11905: 0xB286, + 30661 - 11905: 0xB287, + 30662 - 11905: 0xB288, + 30663 - 11905: 0xB289, + 30664 - 11905: 0xB28A, + 30665 - 11905: 0xB28B, + 30666 - 11905: 0xB28C, + 30667 - 11905: 0xB28D, + 30668 - 11905: 0xB28E, + 30669 - 11905: 0xDBC7, + 30670 - 11905: 0xB28F, + 30671 - 11905: 0xB290, + 30672 - 11905: 0xB291, + 30673 - 11905: 0xB292, + 30674 - 11905: 0xB293, + 30675 - 11905: 0xB294, + 30676 - 11905: 0xB295, + 30677 - 11905: 0xB296, + 30678 - 11905: 0xB297, + 30679 - 11905: 0xB4A3, + 30680 - 11905: 0xB298, + 30681 - 11905: 0xB299, + 30682 - 11905: 0xB29A, + 30683 - 11905: 0xC3AC, + 30684 - 11905: 0xF1E6, + 30685 - 11905: 0xB29B, + 30686 - 11905: 0xB29C, + 30687 - 11905: 0xB29D, + 30688 - 11905: 0xB29E, + 30689 - 11905: 0xB29F, + 30690 - 11905: 0xCAB8, + 30691 - 11905: 0xD2D3, + 30692 - 11905: 0xB2A0, + 30693 - 11905: 0xD6AA, + 30694 - 11905: 0xB340, + 30695 - 11905: 0xEFF2, + 30696 - 11905: 0xB341, + 30697 - 11905: 0xBED8, + 30698 - 11905: 0xB342, + 30699 - 11905: 0xBDC3, + 30700 - 11905: 0xEFF3, + 30701 - 11905: 0xB6CC, + 30702 - 11905: 0xB0AB, + 30703 - 11905: 0xB343, + 30704 - 11905: 0xB344, + 30705 - 11905: 0xB345, + 30706 - 11905: 0xB346, + 30707 - 11905: 0xCAAF, + 30708 - 11905: 0xB347, + 30709 - 11905: 0xB348, + 30710 - 11905: 0xEDB6, + 30711 - 11905: 0xB349, + 30712 - 11905: 0xEDB7, + 30713 - 11905: 0xB34A, + 30714 - 11905: 0xB34B, + 30715 - 11905: 0xB34C, + 30716 - 11905: 0xB34D, + 30717 - 11905: 0xCEF9, + 30718 - 11905: 0xB7AF, + 30719 - 11905: 0xBFF3, + 30720 - 11905: 0xEDB8, + 30721 - 11905: 0xC2EB, + 30722 - 11905: 0xC9B0, + 30723 - 11905: 0xB34E, + 30724 - 11905: 0xB34F, + 30725 - 11905: 0xB350, + 30726 - 11905: 0xB351, + 30727 - 11905: 0xB352, + 30728 - 11905: 0xB353, + 30729 - 11905: 0xEDB9, + 30730 - 11905: 0xB354, + 30731 - 11905: 0xB355, + 30732 - 11905: 0xC6F6, + 30733 - 11905: 0xBFB3, + 30734 - 11905: 0xB356, + 30735 - 11905: 0xB357, + 30736 - 11905: 0xB358, + 30737 - 11905: 0xEDBC, + 30738 - 11905: 0xC5F8, + 30739 - 11905: 0xB359, + 30740 - 11905: 0xD1D0, + 30741 - 11905: 0xB35A, + 30742 - 11905: 0xD7A9, + 30743 - 11905: 0xEDBA, + 30744 - 11905: 0xEDBB, + 30745 - 11905: 0xB35B, + 30746 - 11905: 0xD1E2, + 30747 - 11905: 0xB35C, + 30748 - 11905: 0xEDBF, + 30749 - 11905: 0xEDC0, + 30750 - 11905: 0xB35D, + 30751 - 11905: 0xEDC4, + 30752 - 11905: 0xB35E, + 30753 - 11905: 0xB35F, + 30754 - 11905: 0xB360, + 30755 - 11905: 0xEDC8, + 30756 - 11905: 0xB361, + 30757 - 11905: 0xEDC6, + 30758 - 11905: 0xEDCE, + 30759 - 11905: 0xD5E8, + 30760 - 11905: 0xB362, + 30761 - 11905: 0xEDC9, + 30762 - 11905: 0xB363, + 30763 - 11905: 0xB364, + 30764 - 11905: 0xEDC7, + 30765 - 11905: 0xEDBE, + 30766 - 11905: 0xB365, + 30767 - 11905: 0xB366, + 30768 - 11905: 0xC5E9, + 30769 - 11905: 0xB367, + 30770 - 11905: 0xB368, + 30771 - 11905: 0xB369, + 30772 - 11905: 0xC6C6, + 30773 - 11905: 0xB36A, + 30774 - 11905: 0xB36B, + 30775 - 11905: 0xC9E9, + 30776 - 11905: 0xD4D2, + 30777 - 11905: 0xEDC1, + 30778 - 11905: 0xEDC2, + 30779 - 11905: 0xEDC3, + 30780 - 11905: 0xEDC5, + 30781 - 11905: 0xB36C, + 30782 - 11905: 0xC0F9, + 30783 - 11905: 0xB36D, + 30784 - 11905: 0xB4A1, + 30785 - 11905: 0xB36E, + 30786 - 11905: 0xB36F, + 30787 - 11905: 0xB370, + 30788 - 11905: 0xB371, + 30789 - 11905: 0xB9E8, + 30790 - 11905: 0xB372, + 30791 - 11905: 0xEDD0, + 30792 - 11905: 0xB373, + 30793 - 11905: 0xB374, + 30794 - 11905: 0xB375, + 30795 - 11905: 0xB376, + 30796 - 11905: 0xEDD1, + 30797 - 11905: 0xB377, + 30798 - 11905: 0xEDCA, + 30799 - 11905: 0xB378, + 30800 - 11905: 0xEDCF, + 30801 - 11905: 0xB379, + 30802 - 11905: 0xCEF8, + 30803 - 11905: 0xB37A, + 30804 - 11905: 0xB37B, + 30805 - 11905: 0xCBB6, + 30806 - 11905: 0xEDCC, + 30807 - 11905: 0xEDCD, + 30808 - 11905: 0xB37C, + 30809 - 11905: 0xB37D, + 30810 - 11905: 0xB37E, + 30811 - 11905: 0xB380, + 30812 - 11905: 0xB381, + 30813 - 11905: 0xCFF5, + 30814 - 11905: 0xB382, + 30815 - 11905: 0xB383, + 30816 - 11905: 0xB384, + 30817 - 11905: 0xB385, + 30818 - 11905: 0xB386, + 30819 - 11905: 0xB387, + 30820 - 11905: 0xB388, + 30821 - 11905: 0xB389, + 30822 - 11905: 0xB38A, + 30823 - 11905: 0xB38B, + 30824 - 11905: 0xB38C, + 30825 - 11905: 0xB38D, + 30826 - 11905: 0xEDD2, + 30827 - 11905: 0xC1F2, + 30828 - 11905: 0xD3B2, + 30829 - 11905: 0xEDCB, + 30830 - 11905: 0xC8B7, + 30831 - 11905: 0xB38E, + 30832 - 11905: 0xB38F, + 30833 - 11905: 0xB390, + 30834 - 11905: 0xB391, + 30835 - 11905: 0xB392, + 30836 - 11905: 0xB393, + 30837 - 11905: 0xB394, + 30838 - 11905: 0xB395, + 30839 - 11905: 0xBCEF, + 30840 - 11905: 0xB396, + 30841 - 11905: 0xB397, + 30842 - 11905: 0xB398, + 30843 - 11905: 0xB399, + 30844 - 11905: 0xC5F0, + 30845 - 11905: 0xB39A, + 30846 - 11905: 0xB39B, + 30847 - 11905: 0xB39C, + 30848 - 11905: 0xB39D, + 30849 - 11905: 0xB39E, + 30850 - 11905: 0xB39F, + 30851 - 11905: 0xB3A0, + 30852 - 11905: 0xB440, + 30853 - 11905: 0xB441, + 30854 - 11905: 0xB442, + 30855 - 11905: 0xEDD6, + 30856 - 11905: 0xB443, + 30857 - 11905: 0xB5EF, + 30858 - 11905: 0xB444, + 30859 - 11905: 0xB445, + 30860 - 11905: 0xC2B5, + 30861 - 11905: 0xB0AD, + 30862 - 11905: 0xCBE9, + 30863 - 11905: 0xB446, + 30864 - 11905: 0xB447, + 30865 - 11905: 0xB1AE, + 30866 - 11905: 0xB448, + 30867 - 11905: 0xEDD4, + 30868 - 11905: 0xB449, + 30869 - 11905: 0xB44A, + 30870 - 11905: 0xB44B, + 30871 - 11905: 0xCDEB, + 30872 - 11905: 0xB5E2, + 30873 - 11905: 0xB44C, + 30874 - 11905: 0xEDD5, + 30875 - 11905: 0xEDD3, + 30876 - 11905: 0xEDD7, + 30877 - 11905: 0xB44D, + 30878 - 11905: 0xB44E, + 30879 - 11905: 0xB5FA, + 30880 - 11905: 0xB44F, + 30881 - 11905: 0xEDD8, + 30882 - 11905: 0xB450, + 30883 - 11905: 0xEDD9, + 30884 - 11905: 0xB451, + 30885 - 11905: 0xEDDC, + 30886 - 11905: 0xB452, + 30887 - 11905: 0xB1CC, + 30888 - 11905: 0xB453, + 30889 - 11905: 0xB454, + 30890 - 11905: 0xB455, + 30891 - 11905: 0xB456, + 30892 - 11905: 0xB457, + 30893 - 11905: 0xB458, + 30894 - 11905: 0xB459, + 30895 - 11905: 0xB45A, + 30896 - 11905: 0xC5F6, + 30897 - 11905: 0xBCEE, + 30898 - 11905: 0xEDDA, + 30899 - 11905: 0xCCBC, + 30900 - 11905: 0xB2EA, + 30901 - 11905: 0xB45B, + 30902 - 11905: 0xB45C, + 30903 - 11905: 0xB45D, + 30904 - 11905: 0xB45E, + 30905 - 11905: 0xEDDB, + 30906 - 11905: 0xB45F, + 30907 - 11905: 0xB460, + 30908 - 11905: 0xB461, + 30909 - 11905: 0xB462, + 30910 - 11905: 0xC4EB, + 30911 - 11905: 0xB463, + 30912 - 11905: 0xB464, + 30913 - 11905: 0xB4C5, + 30914 - 11905: 0xB465, + 30915 - 11905: 0xB466, + 30916 - 11905: 0xB467, + 30917 - 11905: 0xB0F5, + 30918 - 11905: 0xB468, + 30919 - 11905: 0xB469, + 30920 - 11905: 0xB46A, + 30921 - 11905: 0xEDDF, + 30922 - 11905: 0xC0DA, + 30923 - 11905: 0xB4E8, + 30924 - 11905: 0xB46B, + 30925 - 11905: 0xB46C, + 30926 - 11905: 0xB46D, + 30927 - 11905: 0xB46E, + 30928 - 11905: 0xC5CD, + 30929 - 11905: 0xB46F, + 30930 - 11905: 0xB470, + 30931 - 11905: 0xB471, + 30932 - 11905: 0xEDDD, + 30933 - 11905: 0xBFC4, + 30934 - 11905: 0xB472, + 30935 - 11905: 0xB473, + 30936 - 11905: 0xB474, + 30937 - 11905: 0xEDDE, + 30938 - 11905: 0xB475, + 30939 - 11905: 0xB476, + 30940 - 11905: 0xB477, + 30941 - 11905: 0xB478, + 30942 - 11905: 0xB479, + 30943 - 11905: 0xB47A, + 30944 - 11905: 0xB47B, + 30945 - 11905: 0xB47C, + 30946 - 11905: 0xB47D, + 30947 - 11905: 0xB47E, + 30948 - 11905: 0xB480, + 30949 - 11905: 0xB481, + 30950 - 11905: 0xB482, + 30951 - 11905: 0xB483, + 30952 - 11905: 0xC4A5, + 30953 - 11905: 0xB484, + 30954 - 11905: 0xB485, + 30955 - 11905: 0xB486, + 30956 - 11905: 0xEDE0, + 30957 - 11905: 0xB487, + 30958 - 11905: 0xB488, + 30959 - 11905: 0xB489, + 30960 - 11905: 0xB48A, + 30961 - 11905: 0xB48B, + 30962 - 11905: 0xEDE1, + 30963 - 11905: 0xB48C, + 30964 - 11905: 0xEDE3, + 30965 - 11905: 0xB48D, + 30966 - 11905: 0xB48E, + 30967 - 11905: 0xC1D7, + 30968 - 11905: 0xB48F, + 30969 - 11905: 0xB490, + 30970 - 11905: 0xBBC7, + 30971 - 11905: 0xB491, + 30972 - 11905: 0xB492, + 30973 - 11905: 0xB493, + 30974 - 11905: 0xB494, + 30975 - 11905: 0xB495, + 30976 - 11905: 0xB496, + 30977 - 11905: 0xBDB8, + 30978 - 11905: 0xB497, + 30979 - 11905: 0xB498, + 30980 - 11905: 0xB499, + 30981 - 11905: 0xEDE2, + 30982 - 11905: 0xB49A, + 30983 - 11905: 0xB49B, + 30984 - 11905: 0xB49C, + 30985 - 11905: 0xB49D, + 30986 - 11905: 0xB49E, + 30987 - 11905: 0xB49F, + 30988 - 11905: 0xB4A0, + 30989 - 11905: 0xB540, + 30990 - 11905: 0xB541, + 30991 - 11905: 0xB542, + 30992 - 11905: 0xB543, + 30993 - 11905: 0xB544, + 30994 - 11905: 0xB545, + 30995 - 11905: 0xEDE4, + 30996 - 11905: 0xB546, + 30997 - 11905: 0xB547, + 30998 - 11905: 0xB548, + 30999 - 11905: 0xB549, + 31000 - 11905: 0xB54A, + 31001 - 11905: 0xB54B, + 31002 - 11905: 0xB54C, + 31003 - 11905: 0xB54D, + 31004 - 11905: 0xB54E, + 31005 - 11905: 0xB54F, + 31006 - 11905: 0xEDE6, + 31007 - 11905: 0xB550, + 31008 - 11905: 0xB551, + 31009 - 11905: 0xB552, + 31010 - 11905: 0xB553, + 31011 - 11905: 0xB554, + 31012 - 11905: 0xEDE5, + 31013 - 11905: 0xB555, + 31014 - 11905: 0xB556, + 31015 - 11905: 0xB557, + 31016 - 11905: 0xB558, + 31017 - 11905: 0xB559, + 31018 - 11905: 0xB55A, + 31019 - 11905: 0xB55B, + 31020 - 11905: 0xB55C, + 31021 - 11905: 0xB55D, + 31022 - 11905: 0xB55E, + 31023 - 11905: 0xB55F, + 31024 - 11905: 0xB560, + 31025 - 11905: 0xB561, + 31026 - 11905: 0xB562, + 31027 - 11905: 0xB563, + 31028 - 11905: 0xEDE7, + 31029 - 11905: 0xB564, + 31030 - 11905: 0xB565, + 31031 - 11905: 0xB566, + 31032 - 11905: 0xB567, + 31033 - 11905: 0xB568, + 31034 - 11905: 0xCABE, + 31035 - 11905: 0xECEA, + 31036 - 11905: 0xC0F1, + 31037 - 11905: 0xB569, + 31038 - 11905: 0xC9E7, + 31039 - 11905: 0xB56A, + 31040 - 11905: 0xECEB, + 31041 - 11905: 0xC6EE, + 31042 - 11905: 0xB56B, + 31043 - 11905: 0xB56C, + 31044 - 11905: 0xB56D, + 31045 - 11905: 0xB56E, + 31046 - 11905: 0xECEC, + 31047 - 11905: 0xB56F, + 31048 - 11905: 0xC6ED, + 31049 - 11905: 0xECED, + 31050 - 11905: 0xB570, + 31051 - 11905: 0xB571, + 31052 - 11905: 0xB572, + 31053 - 11905: 0xB573, + 31054 - 11905: 0xB574, + 31055 - 11905: 0xB575, + 31056 - 11905: 0xB576, + 31057 - 11905: 0xB577, + 31058 - 11905: 0xB578, + 31059 - 11905: 0xECF0, + 31060 - 11905: 0xB579, + 31061 - 11905: 0xB57A, + 31062 - 11905: 0xD7E6, + 31063 - 11905: 0xECF3, + 31064 - 11905: 0xB57B, + 31065 - 11905: 0xB57C, + 31066 - 11905: 0xECF1, + 31067 - 11905: 0xECEE, + 31068 - 11905: 0xECEF, + 31069 - 11905: 0xD7A3, + 31070 - 11905: 0xC9F1, + 31071 - 11905: 0xCBEE, + 31072 - 11905: 0xECF4, + 31073 - 11905: 0xB57D, + 31074 - 11905: 0xECF2, + 31075 - 11905: 0xB57E, + 31076 - 11905: 0xB580, + 31077 - 11905: 0xCFE9, + 31078 - 11905: 0xB581, + 31079 - 11905: 0xECF6, + 31080 - 11905: 0xC6B1, + 31081 - 11905: 0xB582, + 31082 - 11905: 0xB583, + 31083 - 11905: 0xB584, + 31084 - 11905: 0xB585, + 31085 - 11905: 0xBCC0, + 31086 - 11905: 0xB586, + 31087 - 11905: 0xECF5, + 31088 - 11905: 0xB587, + 31089 - 11905: 0xB588, + 31090 - 11905: 0xB589, + 31091 - 11905: 0xB58A, + 31092 - 11905: 0xB58B, + 31093 - 11905: 0xB58C, + 31094 - 11905: 0xB58D, + 31095 - 11905: 0xB5BB, + 31096 - 11905: 0xBBF6, + 31097 - 11905: 0xB58E, + 31098 - 11905: 0xECF7, + 31099 - 11905: 0xB58F, + 31100 - 11905: 0xB590, + 31101 - 11905: 0xB591, + 31102 - 11905: 0xB592, + 31103 - 11905: 0xB593, + 31104 - 11905: 0xD9F7, + 31105 - 11905: 0xBDFB, + 31106 - 11905: 0xB594, + 31107 - 11905: 0xB595, + 31108 - 11905: 0xC2BB, + 31109 - 11905: 0xECF8, + 31110 - 11905: 0xB596, + 31111 - 11905: 0xB597, + 31112 - 11905: 0xB598, + 31113 - 11905: 0xB599, + 31114 - 11905: 0xECF9, + 31115 - 11905: 0xB59A, + 31116 - 11905: 0xB59B, + 31117 - 11905: 0xB59C, + 31118 - 11905: 0xB59D, + 31119 - 11905: 0xB8A3, + 31120 - 11905: 0xB59E, + 31121 - 11905: 0xB59F, + 31122 - 11905: 0xB5A0, + 31123 - 11905: 0xB640, + 31124 - 11905: 0xB641, + 31125 - 11905: 0xB642, + 31126 - 11905: 0xB643, + 31127 - 11905: 0xB644, + 31128 - 11905: 0xB645, + 31129 - 11905: 0xB646, + 31130 - 11905: 0xECFA, + 31131 - 11905: 0xB647, + 31132 - 11905: 0xB648, + 31133 - 11905: 0xB649, + 31134 - 11905: 0xB64A, + 31135 - 11905: 0xB64B, + 31136 - 11905: 0xB64C, + 31137 - 11905: 0xB64D, + 31138 - 11905: 0xB64E, + 31139 - 11905: 0xB64F, + 31140 - 11905: 0xB650, + 31141 - 11905: 0xB651, + 31142 - 11905: 0xB652, + 31143 - 11905: 0xECFB, + 31144 - 11905: 0xB653, + 31145 - 11905: 0xB654, + 31146 - 11905: 0xB655, + 31147 - 11905: 0xB656, + 31148 - 11905: 0xB657, + 31149 - 11905: 0xB658, + 31150 - 11905: 0xB659, + 31151 - 11905: 0xB65A, + 31152 - 11905: 0xB65B, + 31153 - 11905: 0xB65C, + 31154 - 11905: 0xB65D, + 31155 - 11905: 0xECFC, + 31156 - 11905: 0xB65E, + 31157 - 11905: 0xB65F, + 31158 - 11905: 0xB660, + 31159 - 11905: 0xB661, + 31160 - 11905: 0xB662, + 31161 - 11905: 0xD3ED, + 31162 - 11905: 0xD8AE, + 31163 - 11905: 0xC0EB, + 31164 - 11905: 0xB663, + 31165 - 11905: 0xC7DD, + 31166 - 11905: 0xBACC, + 31167 - 11905: 0xB664, + 31168 - 11905: 0xD0E3, + 31169 - 11905: 0xCBBD, + 31170 - 11905: 0xB665, + 31171 - 11905: 0xCDBA, + 31172 - 11905: 0xB666, + 31173 - 11905: 0xB667, + 31174 - 11905: 0xB8D1, + 31175 - 11905: 0xB668, + 31176 - 11905: 0xB669, + 31177 - 11905: 0xB1FC, + 31178 - 11905: 0xB66A, + 31179 - 11905: 0xC7EF, + 31180 - 11905: 0xB66B, + 31181 - 11905: 0xD6D6, + 31182 - 11905: 0xB66C, + 31183 - 11905: 0xB66D, + 31184 - 11905: 0xB66E, + 31185 - 11905: 0xBFC6, + 31186 - 11905: 0xC3EB, + 31187 - 11905: 0xB66F, + 31188 - 11905: 0xB670, + 31189 - 11905: 0xEFF5, + 31190 - 11905: 0xB671, + 31191 - 11905: 0xB672, + 31192 - 11905: 0xC3D8, + 31193 - 11905: 0xB673, + 31194 - 11905: 0xB674, + 31195 - 11905: 0xB675, + 31196 - 11905: 0xB676, + 31197 - 11905: 0xB677, + 31198 - 11905: 0xB678, + 31199 - 11905: 0xD7E2, + 31200 - 11905: 0xB679, + 31201 - 11905: 0xB67A, + 31202 - 11905: 0xB67B, + 31203 - 11905: 0xEFF7, + 31204 - 11905: 0xB3D3, + 31205 - 11905: 0xB67C, + 31206 - 11905: 0xC7D8, + 31207 - 11905: 0xD1ED, + 31208 - 11905: 0xB67D, + 31209 - 11905: 0xD6C8, + 31210 - 11905: 0xB67E, + 31211 - 11905: 0xEFF8, + 31212 - 11905: 0xB680, + 31213 - 11905: 0xEFF6, + 31214 - 11905: 0xB681, + 31215 - 11905: 0xBBFD, + 31216 - 11905: 0xB3C6, + 31217 - 11905: 0xB682, + 31218 - 11905: 0xB683, + 31219 - 11905: 0xB684, + 31220 - 11905: 0xB685, + 31221 - 11905: 0xB686, + 31222 - 11905: 0xB687, + 31223 - 11905: 0xB688, + 31224 - 11905: 0xBDD5, + 31225 - 11905: 0xB689, + 31226 - 11905: 0xB68A, + 31227 - 11905: 0xD2C6, + 31228 - 11905: 0xB68B, + 31229 - 11905: 0xBBE0, + 31230 - 11905: 0xB68C, + 31231 - 11905: 0xB68D, + 31232 - 11905: 0xCFA1, + 31233 - 11905: 0xB68E, + 31234 - 11905: 0xEFFC, + 31235 - 11905: 0xEFFB, + 31236 - 11905: 0xB68F, + 31237 - 11905: 0xB690, + 31238 - 11905: 0xEFF9, + 31239 - 11905: 0xB691, + 31240 - 11905: 0xB692, + 31241 - 11905: 0xB693, + 31242 - 11905: 0xB694, + 31243 - 11905: 0xB3CC, + 31244 - 11905: 0xB695, + 31245 - 11905: 0xC9D4, + 31246 - 11905: 0xCBB0, + 31247 - 11905: 0xB696, + 31248 - 11905: 0xB697, + 31249 - 11905: 0xB698, + 31250 - 11905: 0xB699, + 31251 - 11905: 0xB69A, + 31252 - 11905: 0xEFFE, + 31253 - 11905: 0xB69B, + 31254 - 11905: 0xB69C, + 31255 - 11905: 0xB0DE, + 31256 - 11905: 0xB69D, + 31257 - 11905: 0xB69E, + 31258 - 11905: 0xD6C9, + 31259 - 11905: 0xB69F, + 31260 - 11905: 0xB6A0, + 31261 - 11905: 0xB740, + 31262 - 11905: 0xEFFD, + 31263 - 11905: 0xB741, + 31264 - 11905: 0xB3ED, + 31265 - 11905: 0xB742, + 31266 - 11905: 0xB743, + 31267 - 11905: 0xF6D5, + 31268 - 11905: 0xB744, + 31269 - 11905: 0xB745, + 31270 - 11905: 0xB746, + 31271 - 11905: 0xB747, + 31272 - 11905: 0xB748, + 31273 - 11905: 0xB749, + 31274 - 11905: 0xB74A, + 31275 - 11905: 0xB74B, + 31276 - 11905: 0xB74C, + 31277 - 11905: 0xB74D, + 31278 - 11905: 0xB74E, + 31279 - 11905: 0xB74F, + 31280 - 11905: 0xB750, + 31281 - 11905: 0xB751, + 31282 - 11905: 0xB752, + 31283 - 11905: 0xCEC8, + 31284 - 11905: 0xB753, + 31285 - 11905: 0xB754, + 31286 - 11905: 0xB755, + 31287 - 11905: 0xF0A2, + 31288 - 11905: 0xB756, + 31289 - 11905: 0xF0A1, + 31290 - 11905: 0xB757, + 31291 - 11905: 0xB5BE, + 31292 - 11905: 0xBCDA, + 31293 - 11905: 0xBBFC, + 31294 - 11905: 0xB758, + 31295 - 11905: 0xB8E5, + 31296 - 11905: 0xB759, + 31297 - 11905: 0xB75A, + 31298 - 11905: 0xB75B, + 31299 - 11905: 0xB75C, + 31300 - 11905: 0xB75D, + 31301 - 11905: 0xB75E, + 31302 - 11905: 0xC4C2, + 31303 - 11905: 0xB75F, + 31304 - 11905: 0xB760, + 31305 - 11905: 0xB761, + 31306 - 11905: 0xB762, + 31307 - 11905: 0xB763, + 31308 - 11905: 0xB764, + 31309 - 11905: 0xB765, + 31310 - 11905: 0xB766, + 31311 - 11905: 0xB767, + 31312 - 11905: 0xB768, + 31313 - 11905: 0xF0A3, + 31314 - 11905: 0xB769, + 31315 - 11905: 0xB76A, + 31316 - 11905: 0xB76B, + 31317 - 11905: 0xB76C, + 31318 - 11905: 0xB76D, + 31319 - 11905: 0xCBEB, + 31320 - 11905: 0xB76E, + 31321 - 11905: 0xB76F, + 31322 - 11905: 0xB770, + 31323 - 11905: 0xB771, + 31324 - 11905: 0xB772, + 31325 - 11905: 0xB773, + 31326 - 11905: 0xB774, + 31327 - 11905: 0xB775, + 31328 - 11905: 0xB776, + 31329 - 11905: 0xB777, + 31330 - 11905: 0xB778, + 31331 - 11905: 0xB779, + 31332 - 11905: 0xB77A, + 31333 - 11905: 0xB77B, + 31334 - 11905: 0xB77C, + 31335 - 11905: 0xB77D, + 31336 - 11905: 0xB77E, + 31337 - 11905: 0xB780, + 31338 - 11905: 0xB781, + 31339 - 11905: 0xB782, + 31340 - 11905: 0xB783, + 31341 - 11905: 0xB784, + 31342 - 11905: 0xB785, + 31343 - 11905: 0xB786, + 31344 - 11905: 0xF0A6, + 31345 - 11905: 0xB787, + 31346 - 11905: 0xB788, + 31347 - 11905: 0xB789, + 31348 - 11905: 0xD1A8, + 31349 - 11905: 0xB78A, + 31350 - 11905: 0xBEBF, + 31351 - 11905: 0xC7EE, + 31352 - 11905: 0xF1B6, + 31353 - 11905: 0xF1B7, + 31354 - 11905: 0xBFD5, + 31355 - 11905: 0xB78B, + 31356 - 11905: 0xB78C, + 31357 - 11905: 0xB78D, + 31358 - 11905: 0xB78E, + 31359 - 11905: 0xB4A9, + 31360 - 11905: 0xF1B8, + 31361 - 11905: 0xCDBB, + 31362 - 11905: 0xB78F, + 31363 - 11905: 0xC7D4, + 31364 - 11905: 0xD5AD, + 31365 - 11905: 0xB790, + 31366 - 11905: 0xF1B9, + 31367 - 11905: 0xB791, + 31368 - 11905: 0xF1BA, + 31369 - 11905: 0xB792, + 31370 - 11905: 0xB793, + 31371 - 11905: 0xB794, + 31372 - 11905: 0xB795, + 31373 - 11905: 0xC7CF, + 31374 - 11905: 0xB796, + 31375 - 11905: 0xB797, + 31376 - 11905: 0xB798, + 31377 - 11905: 0xD2A4, + 31378 - 11905: 0xD6CF, + 31379 - 11905: 0xB799, + 31380 - 11905: 0xB79A, + 31381 - 11905: 0xF1BB, + 31382 - 11905: 0xBDD1, + 31383 - 11905: 0xB4B0, + 31384 - 11905: 0xBEBD, + 31385 - 11905: 0xB79B, + 31386 - 11905: 0xB79C, + 31387 - 11905: 0xB79D, + 31388 - 11905: 0xB4DC, + 31389 - 11905: 0xCED1, + 31390 - 11905: 0xB79E, + 31391 - 11905: 0xBFDF, + 31392 - 11905: 0xF1BD, + 31393 - 11905: 0xB79F, + 31394 - 11905: 0xB7A0, + 31395 - 11905: 0xB840, + 31396 - 11905: 0xB841, + 31397 - 11905: 0xBFFA, + 31398 - 11905: 0xF1BC, + 31399 - 11905: 0xB842, + 31400 - 11905: 0xF1BF, + 31401 - 11905: 0xB843, + 31402 - 11905: 0xB844, + 31403 - 11905: 0xB845, + 31404 - 11905: 0xF1BE, + 31405 - 11905: 0xF1C0, + 31406 - 11905: 0xB846, + 31407 - 11905: 0xB847, + 31408 - 11905: 0xB848, + 31409 - 11905: 0xB849, + 31410 - 11905: 0xB84A, + 31411 - 11905: 0xF1C1, + 31412 - 11905: 0xB84B, + 31413 - 11905: 0xB84C, + 31414 - 11905: 0xB84D, + 31415 - 11905: 0xB84E, + 31416 - 11905: 0xB84F, + 31417 - 11905: 0xB850, + 31418 - 11905: 0xB851, + 31419 - 11905: 0xB852, + 31420 - 11905: 0xB853, + 31421 - 11905: 0xB854, + 31422 - 11905: 0xB855, + 31423 - 11905: 0xC1FE, + 31424 - 11905: 0xB856, + 31425 - 11905: 0xB857, + 31426 - 11905: 0xB858, + 31427 - 11905: 0xB859, + 31428 - 11905: 0xB85A, + 31429 - 11905: 0xB85B, + 31430 - 11905: 0xB85C, + 31431 - 11905: 0xB85D, + 31432 - 11905: 0xB85E, + 31433 - 11905: 0xB85F, + 31434 - 11905: 0xB860, + 31435 - 11905: 0xC1A2, + 31436 - 11905: 0xB861, + 31437 - 11905: 0xB862, + 31438 - 11905: 0xB863, + 31439 - 11905: 0xB864, + 31440 - 11905: 0xB865, + 31441 - 11905: 0xB866, + 31442 - 11905: 0xB867, + 31443 - 11905: 0xB868, + 31444 - 11905: 0xB869, + 31445 - 11905: 0xB86A, + 31446 - 11905: 0xCAFA, + 31447 - 11905: 0xB86B, + 31448 - 11905: 0xB86C, + 31449 - 11905: 0xD5BE, + 31450 - 11905: 0xB86D, + 31451 - 11905: 0xB86E, + 31452 - 11905: 0xB86F, + 31453 - 11905: 0xB870, + 31454 - 11905: 0xBEBA, + 31455 - 11905: 0xBEB9, + 31456 - 11905: 0xD5C2, + 31457 - 11905: 0xB871, + 31458 - 11905: 0xB872, + 31459 - 11905: 0xBFA2, + 31460 - 11905: 0xB873, + 31461 - 11905: 0xCDAF, + 31462 - 11905: 0xF1B5, + 31463 - 11905: 0xB874, + 31464 - 11905: 0xB875, + 31465 - 11905: 0xB876, + 31466 - 11905: 0xB877, + 31467 - 11905: 0xB878, + 31468 - 11905: 0xB879, + 31469 - 11905: 0xBDDF, + 31470 - 11905: 0xB87A, + 31471 - 11905: 0xB6CB, + 31472 - 11905: 0xB87B, + 31473 - 11905: 0xB87C, + 31474 - 11905: 0xB87D, + 31475 - 11905: 0xB87E, + 31476 - 11905: 0xB880, + 31477 - 11905: 0xB881, + 31478 - 11905: 0xB882, + 31479 - 11905: 0xB883, + 31480 - 11905: 0xB884, + 31481 - 11905: 0xD6F1, + 31482 - 11905: 0xF3C3, + 31483 - 11905: 0xB885, + 31484 - 11905: 0xB886, + 31485 - 11905: 0xF3C4, + 31486 - 11905: 0xB887, + 31487 - 11905: 0xB8CD, + 31488 - 11905: 0xB888, + 31489 - 11905: 0xB889, + 31490 - 11905: 0xB88A, + 31491 - 11905: 0xF3C6, + 31492 - 11905: 0xF3C7, + 31493 - 11905: 0xB88B, + 31494 - 11905: 0xB0CA, + 31495 - 11905: 0xB88C, + 31496 - 11905: 0xF3C5, + 31497 - 11905: 0xB88D, + 31498 - 11905: 0xF3C9, + 31499 - 11905: 0xCBF1, + 31500 - 11905: 0xB88E, + 31501 - 11905: 0xB88F, + 31502 - 11905: 0xB890, + 31503 - 11905: 0xF3CB, + 31504 - 11905: 0xB891, + 31505 - 11905: 0xD0A6, + 31506 - 11905: 0xB892, + 31507 - 11905: 0xB893, + 31508 - 11905: 0xB1CA, + 31509 - 11905: 0xF3C8, + 31510 - 11905: 0xB894, + 31511 - 11905: 0xB895, + 31512 - 11905: 0xB896, + 31513 - 11905: 0xF3CF, + 31514 - 11905: 0xB897, + 31515 - 11905: 0xB5D1, + 31516 - 11905: 0xB898, + 31517 - 11905: 0xB899, + 31518 - 11905: 0xF3D7, + 31519 - 11905: 0xB89A, + 31520 - 11905: 0xF3D2, + 31521 - 11905: 0xB89B, + 31522 - 11905: 0xB89C, + 31523 - 11905: 0xB89D, + 31524 - 11905: 0xF3D4, + 31525 - 11905: 0xF3D3, + 31526 - 11905: 0xB7FB, + 31527 - 11905: 0xB89E, + 31528 - 11905: 0xB1BF, + 31529 - 11905: 0xB89F, + 31530 - 11905: 0xF3CE, + 31531 - 11905: 0xF3CA, + 31532 - 11905: 0xB5DA, + 31533 - 11905: 0xB8A0, + 31534 - 11905: 0xF3D0, + 31535 - 11905: 0xB940, + 31536 - 11905: 0xB941, + 31537 - 11905: 0xF3D1, + 31538 - 11905: 0xB942, + 31539 - 11905: 0xF3D5, + 31540 - 11905: 0xB943, + 31541 - 11905: 0xB944, + 31542 - 11905: 0xB945, + 31543 - 11905: 0xB946, + 31544 - 11905: 0xF3CD, + 31545 - 11905: 0xB947, + 31546 - 11905: 0xBCE3, + 31547 - 11905: 0xB948, + 31548 - 11905: 0xC1FD, + 31549 - 11905: 0xB949, + 31550 - 11905: 0xF3D6, + 31551 - 11905: 0xB94A, + 31552 - 11905: 0xB94B, + 31553 - 11905: 0xB94C, + 31554 - 11905: 0xB94D, + 31555 - 11905: 0xB94E, + 31556 - 11905: 0xB94F, + 31557 - 11905: 0xF3DA, + 31558 - 11905: 0xB950, + 31559 - 11905: 0xF3CC, + 31560 - 11905: 0xB951, + 31561 - 11905: 0xB5C8, + 31562 - 11905: 0xB952, + 31563 - 11905: 0xBDEE, + 31564 - 11905: 0xF3DC, + 31565 - 11905: 0xB953, + 31566 - 11905: 0xB954, + 31567 - 11905: 0xB7A4, + 31568 - 11905: 0xBFF0, + 31569 - 11905: 0xD6FE, + 31570 - 11905: 0xCDB2, + 31571 - 11905: 0xB955, + 31572 - 11905: 0xB4F0, + 31573 - 11905: 0xB956, + 31574 - 11905: 0xB2DF, + 31575 - 11905: 0xB957, + 31576 - 11905: 0xF3D8, + 31577 - 11905: 0xB958, + 31578 - 11905: 0xF3D9, + 31579 - 11905: 0xC9B8, + 31580 - 11905: 0xB959, + 31581 - 11905: 0xF3DD, + 31582 - 11905: 0xB95A, + 31583 - 11905: 0xB95B, + 31584 - 11905: 0xF3DE, + 31585 - 11905: 0xB95C, + 31586 - 11905: 0xF3E1, + 31587 - 11905: 0xB95D, + 31588 - 11905: 0xB95E, + 31589 - 11905: 0xB95F, + 31590 - 11905: 0xB960, + 31591 - 11905: 0xB961, + 31592 - 11905: 0xB962, + 31593 - 11905: 0xB963, + 31594 - 11905: 0xB964, + 31595 - 11905: 0xB965, + 31596 - 11905: 0xB966, + 31597 - 11905: 0xB967, + 31598 - 11905: 0xF3DF, + 31599 - 11905: 0xB968, + 31600 - 11905: 0xB969, + 31601 - 11905: 0xF3E3, + 31602 - 11905: 0xF3E2, + 31603 - 11905: 0xB96A, + 31604 - 11905: 0xB96B, + 31605 - 11905: 0xF3DB, + 31606 - 11905: 0xB96C, + 31607 - 11905: 0xBFEA, + 31608 - 11905: 0xB96D, + 31609 - 11905: 0xB3EF, + 31610 - 11905: 0xB96E, + 31611 - 11905: 0xF3E0, + 31612 - 11905: 0xB96F, + 31613 - 11905: 0xB970, + 31614 - 11905: 0xC7A9, + 31615 - 11905: 0xB971, + 31616 - 11905: 0xBCF2, + 31617 - 11905: 0xB972, + 31618 - 11905: 0xB973, + 31619 - 11905: 0xB974, + 31620 - 11905: 0xB975, + 31621 - 11905: 0xF3EB, + 31622 - 11905: 0xB976, + 31623 - 11905: 0xB977, + 31624 - 11905: 0xB978, + 31625 - 11905: 0xB979, + 31626 - 11905: 0xB97A, + 31627 - 11905: 0xB97B, + 31628 - 11905: 0xB97C, + 31629 - 11905: 0xB9BF, + 31630 - 11905: 0xB97D, + 31631 - 11905: 0xB97E, + 31632 - 11905: 0xF3E4, + 31633 - 11905: 0xB980, + 31634 - 11905: 0xB981, + 31635 - 11905: 0xB982, + 31636 - 11905: 0xB2AD, + 31637 - 11905: 0xBBFE, + 31638 - 11905: 0xB983, + 31639 - 11905: 0xCBE3, + 31640 - 11905: 0xB984, + 31641 - 11905: 0xB985, + 31642 - 11905: 0xB986, + 31643 - 11905: 0xB987, + 31644 - 11905: 0xF3ED, + 31645 - 11905: 0xF3E9, + 31646 - 11905: 0xB988, + 31647 - 11905: 0xB989, + 31648 - 11905: 0xB98A, + 31649 - 11905: 0xB9DC, + 31650 - 11905: 0xF3EE, + 31651 - 11905: 0xB98B, + 31652 - 11905: 0xB98C, + 31653 - 11905: 0xB98D, + 31654 - 11905: 0xF3E5, + 31655 - 11905: 0xF3E6, + 31656 - 11905: 0xF3EA, + 31657 - 11905: 0xC2E1, + 31658 - 11905: 0xF3EC, + 31659 - 11905: 0xF3EF, + 31660 - 11905: 0xF3E8, + 31661 - 11905: 0xBCFD, + 31662 - 11905: 0xB98E, + 31663 - 11905: 0xB98F, + 31664 - 11905: 0xB990, + 31665 - 11905: 0xCFE4, + 31666 - 11905: 0xB991, + 31667 - 11905: 0xB992, + 31668 - 11905: 0xF3F0, + 31669 - 11905: 0xB993, + 31670 - 11905: 0xB994, + 31671 - 11905: 0xB995, + 31672 - 11905: 0xF3E7, + 31673 - 11905: 0xB996, + 31674 - 11905: 0xB997, + 31675 - 11905: 0xB998, + 31676 - 11905: 0xB999, + 31677 - 11905: 0xB99A, + 31678 - 11905: 0xB99B, + 31679 - 11905: 0xB99C, + 31680 - 11905: 0xB99D, + 31681 - 11905: 0xF3F2, + 31682 - 11905: 0xB99E, + 31683 - 11905: 0xB99F, + 31684 - 11905: 0xB9A0, + 31685 - 11905: 0xBA40, + 31686 - 11905: 0xD7AD, + 31687 - 11905: 0xC6AA, + 31688 - 11905: 0xBA41, + 31689 - 11905: 0xBA42, + 31690 - 11905: 0xBA43, + 31691 - 11905: 0xBA44, + 31692 - 11905: 0xF3F3, + 31693 - 11905: 0xBA45, + 31694 - 11905: 0xBA46, + 31695 - 11905: 0xBA47, + 31696 - 11905: 0xBA48, + 31697 - 11905: 0xF3F1, + 31698 - 11905: 0xBA49, + 31699 - 11905: 0xC2A8, + 31700 - 11905: 0xBA4A, + 31701 - 11905: 0xBA4B, + 31702 - 11905: 0xBA4C, + 31703 - 11905: 0xBA4D, + 31704 - 11905: 0xBA4E, + 31705 - 11905: 0xB8DD, + 31706 - 11905: 0xF3F5, + 31707 - 11905: 0xBA4F, + 31708 - 11905: 0xBA50, + 31709 - 11905: 0xF3F4, + 31710 - 11905: 0xBA51, + 31711 - 11905: 0xBA52, + 31712 - 11905: 0xBA53, + 31713 - 11905: 0xB4DB, + 31714 - 11905: 0xBA54, + 31715 - 11905: 0xBA55, + 31716 - 11905: 0xBA56, + 31717 - 11905: 0xF3F6, + 31718 - 11905: 0xF3F7, + 31719 - 11905: 0xBA57, + 31720 - 11905: 0xBA58, + 31721 - 11905: 0xBA59, + 31722 - 11905: 0xF3F8, + 31723 - 11905: 0xBA5A, + 31724 - 11905: 0xBA5B, + 31725 - 11905: 0xBA5C, + 31726 - 11905: 0xC0BA, + 31727 - 11905: 0xBA5D, + 31728 - 11905: 0xBA5E, + 31729 - 11905: 0xC0E9, + 31730 - 11905: 0xBA5F, + 31731 - 11905: 0xBA60, + 31732 - 11905: 0xBA61, + 31733 - 11905: 0xBA62, + 31734 - 11905: 0xBA63, + 31735 - 11905: 0xC5F1, + 31736 - 11905: 0xBA64, + 31737 - 11905: 0xBA65, + 31738 - 11905: 0xBA66, + 31739 - 11905: 0xBA67, + 31740 - 11905: 0xF3FB, + 31741 - 11905: 0xBA68, + 31742 - 11905: 0xF3FA, + 31743 - 11905: 0xBA69, + 31744 - 11905: 0xBA6A, + 31745 - 11905: 0xBA6B, + 31746 - 11905: 0xBA6C, + 31747 - 11905: 0xBA6D, + 31748 - 11905: 0xBA6E, + 31749 - 11905: 0xBA6F, + 31750 - 11905: 0xBA70, + 31751 - 11905: 0xB4D8, + 31752 - 11905: 0xBA71, + 31753 - 11905: 0xBA72, + 31754 - 11905: 0xBA73, + 31755 - 11905: 0xF3FE, + 31756 - 11905: 0xF3F9, + 31757 - 11905: 0xBA74, + 31758 - 11905: 0xBA75, + 31759 - 11905: 0xF3FC, + 31760 - 11905: 0xBA76, + 31761 - 11905: 0xBA77, + 31762 - 11905: 0xBA78, + 31763 - 11905: 0xBA79, + 31764 - 11905: 0xBA7A, + 31765 - 11905: 0xBA7B, + 31766 - 11905: 0xF3FD, + 31767 - 11905: 0xBA7C, + 31768 - 11905: 0xBA7D, + 31769 - 11905: 0xBA7E, + 31770 - 11905: 0xBA80, + 31771 - 11905: 0xBA81, + 31772 - 11905: 0xBA82, + 31773 - 11905: 0xBA83, + 31774 - 11905: 0xBA84, + 31775 - 11905: 0xF4A1, + 31776 - 11905: 0xBA85, + 31777 - 11905: 0xBA86, + 31778 - 11905: 0xBA87, + 31779 - 11905: 0xBA88, + 31780 - 11905: 0xBA89, + 31781 - 11905: 0xBA8A, + 31782 - 11905: 0xF4A3, + 31783 - 11905: 0xBBC9, + 31784 - 11905: 0xBA8B, + 31785 - 11905: 0xBA8C, + 31786 - 11905: 0xF4A2, + 31787 - 11905: 0xBA8D, + 31788 - 11905: 0xBA8E, + 31789 - 11905: 0xBA8F, + 31790 - 11905: 0xBA90, + 31791 - 11905: 0xBA91, + 31792 - 11905: 0xBA92, + 31793 - 11905: 0xBA93, + 31794 - 11905: 0xBA94, + 31795 - 11905: 0xBA95, + 31796 - 11905: 0xBA96, + 31797 - 11905: 0xBA97, + 31798 - 11905: 0xBA98, + 31799 - 11905: 0xBA99, + 31800 - 11905: 0xF4A4, + 31801 - 11905: 0xBA9A, + 31802 - 11905: 0xBA9B, + 31803 - 11905: 0xBA9C, + 31804 - 11905: 0xBA9D, + 31805 - 11905: 0xBA9E, + 31806 - 11905: 0xBA9F, + 31807 - 11905: 0xB2BE, + 31808 - 11905: 0xF4A6, + 31809 - 11905: 0xF4A5, + 31810 - 11905: 0xBAA0, + 31811 - 11905: 0xBB40, + 31812 - 11905: 0xBB41, + 31813 - 11905: 0xBB42, + 31814 - 11905: 0xBB43, + 31815 - 11905: 0xBB44, + 31816 - 11905: 0xBB45, + 31817 - 11905: 0xBB46, + 31818 - 11905: 0xBB47, + 31819 - 11905: 0xBB48, + 31820 - 11905: 0xBB49, + 31821 - 11905: 0xBCAE, + 31822 - 11905: 0xBB4A, + 31823 - 11905: 0xBB4B, + 31824 - 11905: 0xBB4C, + 31825 - 11905: 0xBB4D, + 31826 - 11905: 0xBB4E, + 31827 - 11905: 0xBB4F, + 31828 - 11905: 0xBB50, + 31829 - 11905: 0xBB51, + 31830 - 11905: 0xBB52, + 31831 - 11905: 0xBB53, + 31832 - 11905: 0xBB54, + 31833 - 11905: 0xBB55, + 31834 - 11905: 0xBB56, + 31835 - 11905: 0xBB57, + 31836 - 11905: 0xBB58, + 31837 - 11905: 0xBB59, + 31838 - 11905: 0xBB5A, + 31839 - 11905: 0xBB5B, + 31840 - 11905: 0xBB5C, + 31841 - 11905: 0xBB5D, + 31842 - 11905: 0xBB5E, + 31843 - 11905: 0xBB5F, + 31844 - 11905: 0xBB60, + 31845 - 11905: 0xBB61, + 31846 - 11905: 0xBB62, + 31847 - 11905: 0xBB63, + 31848 - 11905: 0xBB64, + 31849 - 11905: 0xBB65, + 31850 - 11905: 0xBB66, + 31851 - 11905: 0xBB67, + 31852 - 11905: 0xBB68, + 31853 - 11905: 0xBB69, + 31854 - 11905: 0xBB6A, + 31855 - 11905: 0xBB6B, + 31856 - 11905: 0xBB6C, + 31857 - 11905: 0xBB6D, + 31858 - 11905: 0xBB6E, + 31859 - 11905: 0xC3D7, + 31860 - 11905: 0xD9E1, + 31861 - 11905: 0xBB6F, + 31862 - 11905: 0xBB70, + 31863 - 11905: 0xBB71, + 31864 - 11905: 0xBB72, + 31865 - 11905: 0xBB73, + 31866 - 11905: 0xBB74, + 31867 - 11905: 0xC0E0, + 31868 - 11905: 0xF4CC, + 31869 - 11905: 0xD7D1, + 31870 - 11905: 0xBB75, + 31871 - 11905: 0xBB76, + 31872 - 11905: 0xBB77, + 31873 - 11905: 0xBB78, + 31874 - 11905: 0xBB79, + 31875 - 11905: 0xBB7A, + 31876 - 11905: 0xBB7B, + 31877 - 11905: 0xBB7C, + 31878 - 11905: 0xBB7D, + 31879 - 11905: 0xBB7E, + 31880 - 11905: 0xBB80, + 31881 - 11905: 0xB7DB, + 31882 - 11905: 0xBB81, + 31883 - 11905: 0xBB82, + 31884 - 11905: 0xBB83, + 31885 - 11905: 0xBB84, + 31886 - 11905: 0xBB85, + 31887 - 11905: 0xBB86, + 31888 - 11905: 0xBB87, + 31889 - 11905: 0xF4CE, + 31890 - 11905: 0xC1A3, + 31891 - 11905: 0xBB88, + 31892 - 11905: 0xBB89, + 31893 - 11905: 0xC6C9, + 31894 - 11905: 0xBB8A, + 31895 - 11905: 0xB4D6, + 31896 - 11905: 0xD5B3, + 31897 - 11905: 0xBB8B, + 31898 - 11905: 0xBB8C, + 31899 - 11905: 0xBB8D, + 31900 - 11905: 0xF4D0, + 31901 - 11905: 0xF4CF, + 31902 - 11905: 0xF4D1, + 31903 - 11905: 0xCBDA, + 31904 - 11905: 0xBB8E, + 31905 - 11905: 0xBB8F, + 31906 - 11905: 0xF4D2, + 31907 - 11905: 0xBB90, + 31908 - 11905: 0xD4C1, + 31909 - 11905: 0xD6E0, + 31910 - 11905: 0xBB91, + 31911 - 11905: 0xBB92, + 31912 - 11905: 0xBB93, + 31913 - 11905: 0xBB94, + 31914 - 11905: 0xB7E0, + 31915 - 11905: 0xBB95, + 31916 - 11905: 0xBB96, + 31917 - 11905: 0xBB97, + 31918 - 11905: 0xC1B8, + 31919 - 11905: 0xBB98, + 31920 - 11905: 0xBB99, + 31921 - 11905: 0xC1BB, + 31922 - 11905: 0xF4D3, + 31923 - 11905: 0xBEAC, + 31924 - 11905: 0xBB9A, + 31925 - 11905: 0xBB9B, + 31926 - 11905: 0xBB9C, + 31927 - 11905: 0xBB9D, + 31928 - 11905: 0xBB9E, + 31929 - 11905: 0xB4E2, + 31930 - 11905: 0xBB9F, + 31931 - 11905: 0xBBA0, + 31932 - 11905: 0xF4D4, + 31933 - 11905: 0xF4D5, + 31934 - 11905: 0xBEAB, + 31935 - 11905: 0xBC40, + 31936 - 11905: 0xBC41, + 31937 - 11905: 0xF4D6, + 31938 - 11905: 0xBC42, + 31939 - 11905: 0xBC43, + 31940 - 11905: 0xBC44, + 31941 - 11905: 0xF4DB, + 31942 - 11905: 0xBC45, + 31943 - 11905: 0xF4D7, + 31944 - 11905: 0xF4DA, + 31945 - 11905: 0xBC46, + 31946 - 11905: 0xBAFD, + 31947 - 11905: 0xBC47, + 31948 - 11905: 0xF4D8, + 31949 - 11905: 0xF4D9, + 31950 - 11905: 0xBC48, + 31951 - 11905: 0xBC49, + 31952 - 11905: 0xBC4A, + 31953 - 11905: 0xBC4B, + 31954 - 11905: 0xBC4C, + 31955 - 11905: 0xBC4D, + 31956 - 11905: 0xBC4E, + 31957 - 11905: 0xB8E2, + 31958 - 11905: 0xCCC7, + 31959 - 11905: 0xF4DC, + 31960 - 11905: 0xBC4F, + 31961 - 11905: 0xB2DA, + 31962 - 11905: 0xBC50, + 31963 - 11905: 0xBC51, + 31964 - 11905: 0xC3D3, + 31965 - 11905: 0xBC52, + 31966 - 11905: 0xBC53, + 31967 - 11905: 0xD4E3, + 31968 - 11905: 0xBFB7, + 31969 - 11905: 0xBC54, + 31970 - 11905: 0xBC55, + 31971 - 11905: 0xBC56, + 31972 - 11905: 0xBC57, + 31973 - 11905: 0xBC58, + 31974 - 11905: 0xBC59, + 31975 - 11905: 0xBC5A, + 31976 - 11905: 0xF4DD, + 31977 - 11905: 0xBC5B, + 31978 - 11905: 0xBC5C, + 31979 - 11905: 0xBC5D, + 31980 - 11905: 0xBC5E, + 31981 - 11905: 0xBC5F, + 31982 - 11905: 0xBC60, + 31983 - 11905: 0xC5B4, + 31984 - 11905: 0xBC61, + 31985 - 11905: 0xBC62, + 31986 - 11905: 0xBC63, + 31987 - 11905: 0xBC64, + 31988 - 11905: 0xBC65, + 31989 - 11905: 0xBC66, + 31990 - 11905: 0xBC67, + 31991 - 11905: 0xBC68, + 31992 - 11905: 0xF4E9, + 31993 - 11905: 0xBC69, + 31994 - 11905: 0xBC6A, + 31995 - 11905: 0xCFB5, + 31996 - 11905: 0xBC6B, + 31997 - 11905: 0xBC6C, + 31998 - 11905: 0xBC6D, + 31999 - 11905: 0xBC6E, + 32000 - 11905: 0xBC6F, + 32001 - 11905: 0xBC70, + 32002 - 11905: 0xBC71, + 32003 - 11905: 0xBC72, + 32004 - 11905: 0xBC73, + 32005 - 11905: 0xBC74, + 32006 - 11905: 0xBC75, + 32007 - 11905: 0xBC76, + 32008 - 11905: 0xBC77, + 32009 - 11905: 0xBC78, + 32010 - 11905: 0xCEC9, + 32011 - 11905: 0xBC79, + 32012 - 11905: 0xBC7A, + 32013 - 11905: 0xBC7B, + 32014 - 11905: 0xBC7C, + 32015 - 11905: 0xBC7D, + 32016 - 11905: 0xBC7E, + 32017 - 11905: 0xBC80, + 32018 - 11905: 0xBC81, + 32019 - 11905: 0xBC82, + 32020 - 11905: 0xBC83, + 32021 - 11905: 0xBC84, + 32022 - 11905: 0xBC85, + 32023 - 11905: 0xBC86, + 32024 - 11905: 0xBC87, + 32025 - 11905: 0xBC88, + 32026 - 11905: 0xBC89, + 32027 - 11905: 0xBC8A, + 32028 - 11905: 0xBC8B, + 32029 - 11905: 0xBC8C, + 32030 - 11905: 0xBC8D, + 32031 - 11905: 0xBC8E, + 32032 - 11905: 0xCBD8, + 32033 - 11905: 0xBC8F, + 32034 - 11905: 0xCBF7, + 32035 - 11905: 0xBC90, + 32036 - 11905: 0xBC91, + 32037 - 11905: 0xBC92, + 32038 - 11905: 0xBC93, + 32039 - 11905: 0xBDF4, + 32040 - 11905: 0xBC94, + 32041 - 11905: 0xBC95, + 32042 - 11905: 0xBC96, + 32043 - 11905: 0xD7CF, + 32044 - 11905: 0xBC97, + 32045 - 11905: 0xBC98, + 32046 - 11905: 0xBC99, + 32047 - 11905: 0xC0DB, + 32048 - 11905: 0xBC9A, + 32049 - 11905: 0xBC9B, + 32050 - 11905: 0xBC9C, + 32051 - 11905: 0xBC9D, + 32052 - 11905: 0xBC9E, + 32053 - 11905: 0xBC9F, + 32054 - 11905: 0xBCA0, + 32055 - 11905: 0xBD40, + 32056 - 11905: 0xBD41, + 32057 - 11905: 0xBD42, + 32058 - 11905: 0xBD43, + 32059 - 11905: 0xBD44, + 32060 - 11905: 0xBD45, + 32061 - 11905: 0xBD46, + 32062 - 11905: 0xBD47, + 32063 - 11905: 0xBD48, + 32064 - 11905: 0xBD49, + 32065 - 11905: 0xBD4A, + 32066 - 11905: 0xBD4B, + 32067 - 11905: 0xBD4C, + 32068 - 11905: 0xBD4D, + 32069 - 11905: 0xBD4E, + 32070 - 11905: 0xBD4F, + 32071 - 11905: 0xBD50, + 32072 - 11905: 0xBD51, + 32073 - 11905: 0xBD52, + 32074 - 11905: 0xBD53, + 32075 - 11905: 0xBD54, + 32076 - 11905: 0xBD55, + 32077 - 11905: 0xBD56, + 32078 - 11905: 0xBD57, + 32079 - 11905: 0xBD58, + 32080 - 11905: 0xBD59, + 32081 - 11905: 0xBD5A, + 32082 - 11905: 0xBD5B, + 32083 - 11905: 0xBD5C, + 32084 - 11905: 0xBD5D, + 32085 - 11905: 0xBD5E, + 32086 - 11905: 0xBD5F, + 32087 - 11905: 0xBD60, + 32088 - 11905: 0xBD61, + 32089 - 11905: 0xBD62, + 32090 - 11905: 0xBD63, + 32091 - 11905: 0xBD64, + 32092 - 11905: 0xBD65, + 32093 - 11905: 0xBD66, + 32094 - 11905: 0xBD67, + 32095 - 11905: 0xBD68, + 32096 - 11905: 0xBD69, + 32097 - 11905: 0xBD6A, + 32098 - 11905: 0xBD6B, + 32099 - 11905: 0xBD6C, + 32100 - 11905: 0xBD6D, + 32101 - 11905: 0xBD6E, + 32102 - 11905: 0xBD6F, + 32103 - 11905: 0xBD70, + 32104 - 11905: 0xBD71, + 32105 - 11905: 0xBD72, + 32106 - 11905: 0xBD73, + 32107 - 11905: 0xBD74, + 32108 - 11905: 0xBD75, + 32109 - 11905: 0xBD76, + 32110 - 11905: 0xD0F5, + 32111 - 11905: 0xBD77, + 32112 - 11905: 0xBD78, + 32113 - 11905: 0xBD79, + 32114 - 11905: 0xBD7A, + 32115 - 11905: 0xBD7B, + 32116 - 11905: 0xBD7C, + 32117 - 11905: 0xBD7D, + 32118 - 11905: 0xBD7E, + 32119 - 11905: 0xF4EA, + 32120 - 11905: 0xBD80, + 32121 - 11905: 0xBD81, + 32122 - 11905: 0xBD82, + 32123 - 11905: 0xBD83, + 32124 - 11905: 0xBD84, + 32125 - 11905: 0xBD85, + 32126 - 11905: 0xBD86, + 32127 - 11905: 0xBD87, + 32128 - 11905: 0xBD88, + 32129 - 11905: 0xBD89, + 32130 - 11905: 0xBD8A, + 32131 - 11905: 0xBD8B, + 32132 - 11905: 0xBD8C, + 32133 - 11905: 0xBD8D, + 32134 - 11905: 0xBD8E, + 32135 - 11905: 0xBD8F, + 32136 - 11905: 0xBD90, + 32137 - 11905: 0xBD91, + 32138 - 11905: 0xBD92, + 32139 - 11905: 0xBD93, + 32140 - 11905: 0xBD94, + 32141 - 11905: 0xBD95, + 32142 - 11905: 0xBD96, + 32143 - 11905: 0xBD97, + 32144 - 11905: 0xBD98, + 32145 - 11905: 0xBD99, + 32146 - 11905: 0xBD9A, + 32147 - 11905: 0xBD9B, + 32148 - 11905: 0xBD9C, + 32149 - 11905: 0xBD9D, + 32150 - 11905: 0xBD9E, + 32151 - 11905: 0xBD9F, + 32152 - 11905: 0xBDA0, + 32153 - 11905: 0xBE40, + 32154 - 11905: 0xBE41, + 32155 - 11905: 0xBE42, + 32156 - 11905: 0xBE43, + 32157 - 11905: 0xBE44, + 32158 - 11905: 0xBE45, + 32159 - 11905: 0xBE46, + 32160 - 11905: 0xBE47, + 32161 - 11905: 0xBE48, + 32162 - 11905: 0xBE49, + 32163 - 11905: 0xBE4A, + 32164 - 11905: 0xBE4B, + 32165 - 11905: 0xBE4C, + 32166 - 11905: 0xF4EB, + 32167 - 11905: 0xBE4D, + 32168 - 11905: 0xBE4E, + 32169 - 11905: 0xBE4F, + 32170 - 11905: 0xBE50, + 32171 - 11905: 0xBE51, + 32172 - 11905: 0xBE52, + 32173 - 11905: 0xBE53, + 32174 - 11905: 0xF4EC, + 32175 - 11905: 0xBE54, + 32176 - 11905: 0xBE55, + 32177 - 11905: 0xBE56, + 32178 - 11905: 0xBE57, + 32179 - 11905: 0xBE58, + 32180 - 11905: 0xBE59, + 32181 - 11905: 0xBE5A, + 32182 - 11905: 0xBE5B, + 32183 - 11905: 0xBE5C, + 32184 - 11905: 0xBE5D, + 32185 - 11905: 0xBE5E, + 32186 - 11905: 0xBE5F, + 32187 - 11905: 0xBE60, + 32188 - 11905: 0xBE61, + 32189 - 11905: 0xBE62, + 32190 - 11905: 0xBE63, + 32191 - 11905: 0xBE64, + 32192 - 11905: 0xBE65, + 32193 - 11905: 0xBE66, + 32194 - 11905: 0xBE67, + 32195 - 11905: 0xBE68, + 32196 - 11905: 0xBE69, + 32197 - 11905: 0xBE6A, + 32198 - 11905: 0xBE6B, + 32199 - 11905: 0xBE6C, + 32200 - 11905: 0xBE6D, + 32201 - 11905: 0xBE6E, + 32202 - 11905: 0xBE6F, + 32203 - 11905: 0xBE70, + 32204 - 11905: 0xBE71, + 32205 - 11905: 0xBE72, + 32206 - 11905: 0xBE73, + 32207 - 11905: 0xBE74, + 32208 - 11905: 0xBE75, + 32209 - 11905: 0xBE76, + 32210 - 11905: 0xBE77, + 32211 - 11905: 0xBE78, + 32212 - 11905: 0xBE79, + 32213 - 11905: 0xBE7A, + 32214 - 11905: 0xBE7B, + 32215 - 11905: 0xBE7C, + 32216 - 11905: 0xBE7D, + 32217 - 11905: 0xBE7E, + 32218 - 11905: 0xBE80, + 32219 - 11905: 0xBE81, + 32220 - 11905: 0xBE82, + 32221 - 11905: 0xBE83, + 32222 - 11905: 0xBE84, + 32223 - 11905: 0xBE85, + 32224 - 11905: 0xBE86, + 32225 - 11905: 0xBE87, + 32226 - 11905: 0xBE88, + 32227 - 11905: 0xBE89, + 32228 - 11905: 0xBE8A, + 32229 - 11905: 0xBE8B, + 32230 - 11905: 0xBE8C, + 32231 - 11905: 0xBE8D, + 32232 - 11905: 0xBE8E, + 32233 - 11905: 0xBE8F, + 32234 - 11905: 0xBE90, + 32235 - 11905: 0xBE91, + 32236 - 11905: 0xBE92, + 32237 - 11905: 0xBE93, + 32238 - 11905: 0xBE94, + 32239 - 11905: 0xBE95, + 32240 - 11905: 0xBE96, + 32241 - 11905: 0xBE97, + 32242 - 11905: 0xBE98, + 32243 - 11905: 0xBE99, + 32244 - 11905: 0xBE9A, + 32245 - 11905: 0xBE9B, + 32246 - 11905: 0xBE9C, + 32247 - 11905: 0xBE9D, + 32248 - 11905: 0xBE9E, + 32249 - 11905: 0xBE9F, + 32250 - 11905: 0xBEA0, + 32251 - 11905: 0xBF40, + 32252 - 11905: 0xBF41, + 32253 - 11905: 0xBF42, + 32254 - 11905: 0xBF43, + 32255 - 11905: 0xBF44, + 32256 - 11905: 0xBF45, + 32257 - 11905: 0xBF46, + 32258 - 11905: 0xBF47, + 32259 - 11905: 0xBF48, + 32260 - 11905: 0xBF49, + 32261 - 11905: 0xBF4A, + 32262 - 11905: 0xBF4B, + 32263 - 11905: 0xBF4C, + 32264 - 11905: 0xBF4D, + 32265 - 11905: 0xBF4E, + 32266 - 11905: 0xBF4F, + 32267 - 11905: 0xBF50, + 32268 - 11905: 0xBF51, + 32269 - 11905: 0xBF52, + 32270 - 11905: 0xBF53, + 32271 - 11905: 0xBF54, + 32272 - 11905: 0xBF55, + 32273 - 11905: 0xBF56, + 32274 - 11905: 0xBF57, + 32275 - 11905: 0xBF58, + 32276 - 11905: 0xBF59, + 32277 - 11905: 0xBF5A, + 32278 - 11905: 0xBF5B, + 32279 - 11905: 0xBF5C, + 32280 - 11905: 0xBF5D, + 32281 - 11905: 0xBF5E, + 32282 - 11905: 0xBF5F, + 32283 - 11905: 0xBF60, + 32284 - 11905: 0xBF61, + 32285 - 11905: 0xBF62, + 32286 - 11905: 0xBF63, + 32287 - 11905: 0xBF64, + 32288 - 11905: 0xBF65, + 32289 - 11905: 0xBF66, + 32290 - 11905: 0xBF67, + 32291 - 11905: 0xBF68, + 32292 - 11905: 0xBF69, + 32293 - 11905: 0xBF6A, + 32294 - 11905: 0xBF6B, + 32295 - 11905: 0xBF6C, + 32296 - 11905: 0xBF6D, + 32297 - 11905: 0xBF6E, + 32298 - 11905: 0xBF6F, + 32299 - 11905: 0xBF70, + 32300 - 11905: 0xBF71, + 32301 - 11905: 0xBF72, + 32302 - 11905: 0xBF73, + 32303 - 11905: 0xBF74, + 32304 - 11905: 0xBF75, + 32305 - 11905: 0xBF76, + 32306 - 11905: 0xBF77, + 32307 - 11905: 0xBF78, + 32308 - 11905: 0xBF79, + 32309 - 11905: 0xBF7A, + 32310 - 11905: 0xBF7B, + 32311 - 11905: 0xBF7C, + 32312 - 11905: 0xBF7D, + 32313 - 11905: 0xBF7E, + 32314 - 11905: 0xBF80, + 32315 - 11905: 0xF7E3, + 32316 - 11905: 0xBF81, + 32317 - 11905: 0xBF82, + 32318 - 11905: 0xBF83, + 32319 - 11905: 0xBF84, + 32320 - 11905: 0xBF85, + 32321 - 11905: 0xB7B1, + 32322 - 11905: 0xBF86, + 32323 - 11905: 0xBF87, + 32324 - 11905: 0xBF88, + 32325 - 11905: 0xBF89, + 32326 - 11905: 0xBF8A, + 32327 - 11905: 0xF4ED, + 32328 - 11905: 0xBF8B, + 32329 - 11905: 0xBF8C, + 32330 - 11905: 0xBF8D, + 32331 - 11905: 0xBF8E, + 32332 - 11905: 0xBF8F, + 32333 - 11905: 0xBF90, + 32334 - 11905: 0xBF91, + 32335 - 11905: 0xBF92, + 32336 - 11905: 0xBF93, + 32337 - 11905: 0xBF94, + 32338 - 11905: 0xBF95, + 32339 - 11905: 0xBF96, + 32340 - 11905: 0xBF97, + 32341 - 11905: 0xBF98, + 32342 - 11905: 0xBF99, + 32343 - 11905: 0xBF9A, + 32344 - 11905: 0xBF9B, + 32345 - 11905: 0xBF9C, + 32346 - 11905: 0xBF9D, + 32347 - 11905: 0xBF9E, + 32348 - 11905: 0xBF9F, + 32349 - 11905: 0xBFA0, + 32350 - 11905: 0xC040, + 32351 - 11905: 0xC041, + 32352 - 11905: 0xC042, + 32353 - 11905: 0xC043, + 32354 - 11905: 0xC044, + 32355 - 11905: 0xC045, + 32356 - 11905: 0xC046, + 32357 - 11905: 0xC047, + 32358 - 11905: 0xC048, + 32359 - 11905: 0xC049, + 32360 - 11905: 0xC04A, + 32361 - 11905: 0xC04B, + 32362 - 11905: 0xC04C, + 32363 - 11905: 0xC04D, + 32364 - 11905: 0xC04E, + 32365 - 11905: 0xC04F, + 32366 - 11905: 0xC050, + 32367 - 11905: 0xC051, + 32368 - 11905: 0xC052, + 32369 - 11905: 0xC053, + 32370 - 11905: 0xC054, + 32371 - 11905: 0xC055, + 32372 - 11905: 0xC056, + 32373 - 11905: 0xC057, + 32374 - 11905: 0xC058, + 32375 - 11905: 0xC059, + 32376 - 11905: 0xC05A, + 32377 - 11905: 0xC05B, + 32378 - 11905: 0xC05C, + 32379 - 11905: 0xC05D, + 32380 - 11905: 0xC05E, + 32381 - 11905: 0xC05F, + 32382 - 11905: 0xC060, + 32383 - 11905: 0xC061, + 32384 - 11905: 0xC062, + 32385 - 11905: 0xC063, + 32386 - 11905: 0xD7EB, + 32387 - 11905: 0xC064, + 32388 - 11905: 0xC065, + 32389 - 11905: 0xC066, + 32390 - 11905: 0xC067, + 32391 - 11905: 0xC068, + 32392 - 11905: 0xC069, + 32393 - 11905: 0xC06A, + 32394 - 11905: 0xC06B, + 32395 - 11905: 0xC06C, + 32396 - 11905: 0xC06D, + 32397 - 11905: 0xC06E, + 32398 - 11905: 0xC06F, + 32399 - 11905: 0xC070, + 32400 - 11905: 0xC071, + 32401 - 11905: 0xC072, + 32402 - 11905: 0xC073, + 32403 - 11905: 0xC074, + 32404 - 11905: 0xC075, + 32405 - 11905: 0xC076, + 32406 - 11905: 0xC077, + 32407 - 11905: 0xC078, + 32408 - 11905: 0xC079, + 32409 - 11905: 0xC07A, + 32410 - 11905: 0xC07B, + 32411 - 11905: 0xF4EE, + 32412 - 11905: 0xC07C, + 32413 - 11905: 0xC07D, + 32414 - 11905: 0xC07E, + 32415 - 11905: 0xE6F9, + 32416 - 11905: 0xBEC0, + 32417 - 11905: 0xE6FA, + 32418 - 11905: 0xBAEC, + 32419 - 11905: 0xE6FB, + 32420 - 11905: 0xCFCB, + 32421 - 11905: 0xE6FC, + 32422 - 11905: 0xD4BC, + 32423 - 11905: 0xBCB6, + 32424 - 11905: 0xE6FD, + 32425 - 11905: 0xE6FE, + 32426 - 11905: 0xBCCD, + 32427 - 11905: 0xC8D2, + 32428 - 11905: 0xCEB3, + 32429 - 11905: 0xE7A1, + 32430 - 11905: 0xC080, + 32431 - 11905: 0xB4BF, + 32432 - 11905: 0xE7A2, + 32433 - 11905: 0xC9B4, + 32434 - 11905: 0xB8D9, + 32435 - 11905: 0xC4C9, + 32436 - 11905: 0xC081, + 32437 - 11905: 0xD7DD, + 32438 - 11905: 0xC2DA, + 32439 - 11905: 0xB7D7, + 32440 - 11905: 0xD6BD, + 32441 - 11905: 0xCEC6, + 32442 - 11905: 0xB7C4, + 32443 - 11905: 0xC082, + 32444 - 11905: 0xC083, + 32445 - 11905: 0xC5A6, + 32446 - 11905: 0xE7A3, + 32447 - 11905: 0xCFDF, + 32448 - 11905: 0xE7A4, + 32449 - 11905: 0xE7A5, + 32450 - 11905: 0xE7A6, + 32451 - 11905: 0xC1B7, + 32452 - 11905: 0xD7E9, + 32453 - 11905: 0xC9F0, + 32454 - 11905: 0xCFB8, + 32455 - 11905: 0xD6AF, + 32456 - 11905: 0xD6D5, + 32457 - 11905: 0xE7A7, + 32458 - 11905: 0xB0ED, + 32459 - 11905: 0xE7A8, + 32460 - 11905: 0xE7A9, + 32461 - 11905: 0xC9DC, + 32462 - 11905: 0xD2EF, + 32463 - 11905: 0xBEAD, + 32464 - 11905: 0xE7AA, + 32465 - 11905: 0xB0F3, + 32466 - 11905: 0xC8DE, + 32467 - 11905: 0xBDE1, + 32468 - 11905: 0xE7AB, + 32469 - 11905: 0xC8C6, + 32470 - 11905: 0xC084, + 32471 - 11905: 0xE7AC, + 32472 - 11905: 0xBBE6, + 32473 - 11905: 0xB8F8, + 32474 - 11905: 0xD1A4, + 32475 - 11905: 0xE7AD, + 32476 - 11905: 0xC2E7, + 32477 - 11905: 0xBEF8, + 32478 - 11905: 0xBDCA, + 32479 - 11905: 0xCDB3, + 32480 - 11905: 0xE7AE, + 32481 - 11905: 0xE7AF, + 32482 - 11905: 0xBEEE, + 32483 - 11905: 0xD0E5, + 32484 - 11905: 0xC085, + 32485 - 11905: 0xCBE7, + 32486 - 11905: 0xCCD0, + 32487 - 11905: 0xBCCC, + 32488 - 11905: 0xE7B0, + 32489 - 11905: 0xBCA8, + 32490 - 11905: 0xD0F7, + 32491 - 11905: 0xE7B1, + 32492 - 11905: 0xC086, + 32493 - 11905: 0xD0F8, + 32494 - 11905: 0xE7B2, + 32495 - 11905: 0xE7B3, + 32496 - 11905: 0xB4C2, + 32497 - 11905: 0xE7B4, + 32498 - 11905: 0xE7B5, + 32499 - 11905: 0xC9FE, + 32500 - 11905: 0xCEAC, + 32501 - 11905: 0xC3E0, + 32502 - 11905: 0xE7B7, + 32503 - 11905: 0xB1C1, + 32504 - 11905: 0xB3F1, + 32505 - 11905: 0xC087, + 32506 - 11905: 0xE7B8, + 32507 - 11905: 0xE7B9, + 32508 - 11905: 0xD7DB, + 32509 - 11905: 0xD5C0, + 32510 - 11905: 0xE7BA, + 32511 - 11905: 0xC2CC, + 32512 - 11905: 0xD7BA, + 32513 - 11905: 0xE7BB, + 32514 - 11905: 0xE7BC, + 32515 - 11905: 0xE7BD, + 32516 - 11905: 0xBCEA, + 32517 - 11905: 0xC3E5, + 32518 - 11905: 0xC0C2, + 32519 - 11905: 0xE7BE, + 32520 - 11905: 0xE7BF, + 32521 - 11905: 0xBCA9, + 32522 - 11905: 0xC088, + 32523 - 11905: 0xE7C0, + 32524 - 11905: 0xE7C1, + 32525 - 11905: 0xE7B6, + 32526 - 11905: 0xB6D0, + 32527 - 11905: 0xE7C2, + 32528 - 11905: 0xC089, + 32529 - 11905: 0xE7C3, + 32530 - 11905: 0xE7C4, + 32531 - 11905: 0xBBBA, + 32532 - 11905: 0xB5DE, + 32533 - 11905: 0xC2C6, + 32534 - 11905: 0xB1E0, + 32535 - 11905: 0xE7C5, + 32536 - 11905: 0xD4B5, + 32537 - 11905: 0xE7C6, + 32538 - 11905: 0xB8BF, + 32539 - 11905: 0xE7C8, + 32540 - 11905: 0xE7C7, + 32541 - 11905: 0xB7EC, + 32542 - 11905: 0xC08A, + 32543 - 11905: 0xE7C9, + 32544 - 11905: 0xB2F8, + 32545 - 11905: 0xE7CA, + 32546 - 11905: 0xE7CB, + 32547 - 11905: 0xE7CC, + 32548 - 11905: 0xE7CD, + 32549 - 11905: 0xE7CE, + 32550 - 11905: 0xE7CF, + 32551 - 11905: 0xE7D0, + 32552 - 11905: 0xD3A7, + 32553 - 11905: 0xCBF5, + 32554 - 11905: 0xE7D1, + 32555 - 11905: 0xE7D2, + 32556 - 11905: 0xE7D3, + 32557 - 11905: 0xE7D4, + 32558 - 11905: 0xC9C9, + 32559 - 11905: 0xE7D5, + 32560 - 11905: 0xE7D6, + 32561 - 11905: 0xE7D7, + 32562 - 11905: 0xE7D8, + 32563 - 11905: 0xE7D9, + 32564 - 11905: 0xBDC9, + 32565 - 11905: 0xE7DA, + 32566 - 11905: 0xF3BE, + 32567 - 11905: 0xC08B, + 32568 - 11905: 0xB8D7, + 32569 - 11905: 0xC08C, + 32570 - 11905: 0xC8B1, + 32571 - 11905: 0xC08D, + 32572 - 11905: 0xC08E, + 32573 - 11905: 0xC08F, + 32574 - 11905: 0xC090, + 32575 - 11905: 0xC091, + 32576 - 11905: 0xC092, + 32577 - 11905: 0xC093, + 32578 - 11905: 0xF3BF, + 32579 - 11905: 0xC094, + 32580 - 11905: 0xF3C0, + 32581 - 11905: 0xF3C1, + 32582 - 11905: 0xC095, + 32583 - 11905: 0xC096, + 32584 - 11905: 0xC097, + 32585 - 11905: 0xC098, + 32586 - 11905: 0xC099, + 32587 - 11905: 0xC09A, + 32588 - 11905: 0xC09B, + 32589 - 11905: 0xC09C, + 32590 - 11905: 0xC09D, + 32591 - 11905: 0xC09E, + 32592 - 11905: 0xB9DE, + 32593 - 11905: 0xCDF8, + 32594 - 11905: 0xC09F, + 32595 - 11905: 0xC0A0, + 32596 - 11905: 0xD8E8, + 32597 - 11905: 0xBAB1, + 32598 - 11905: 0xC140, + 32599 - 11905: 0xC2DE, + 32600 - 11905: 0xEEB7, + 32601 - 11905: 0xC141, + 32602 - 11905: 0xB7A3, + 32603 - 11905: 0xC142, + 32604 - 11905: 0xC143, + 32605 - 11905: 0xC144, + 32606 - 11905: 0xC145, + 32607 - 11905: 0xEEB9, + 32608 - 11905: 0xC146, + 32609 - 11905: 0xEEB8, + 32610 - 11905: 0xB0D5, + 32611 - 11905: 0xC147, + 32612 - 11905: 0xC148, + 32613 - 11905: 0xC149, + 32614 - 11905: 0xC14A, + 32615 - 11905: 0xC14B, + 32616 - 11905: 0xEEBB, + 32617 - 11905: 0xD5D6, + 32618 - 11905: 0xD7EF, + 32619 - 11905: 0xC14C, + 32620 - 11905: 0xC14D, + 32621 - 11905: 0xC14E, + 32622 - 11905: 0xD6C3, + 32623 - 11905: 0xC14F, + 32624 - 11905: 0xC150, + 32625 - 11905: 0xEEBD, + 32626 - 11905: 0xCAF0, + 32627 - 11905: 0xC151, + 32628 - 11905: 0xEEBC, + 32629 - 11905: 0xC152, + 32630 - 11905: 0xC153, + 32631 - 11905: 0xC154, + 32632 - 11905: 0xC155, + 32633 - 11905: 0xEEBE, + 32634 - 11905: 0xC156, + 32635 - 11905: 0xC157, + 32636 - 11905: 0xC158, + 32637 - 11905: 0xC159, + 32638 - 11905: 0xEEC0, + 32639 - 11905: 0xC15A, + 32640 - 11905: 0xC15B, + 32641 - 11905: 0xEEBF, + 32642 - 11905: 0xC15C, + 32643 - 11905: 0xC15D, + 32644 - 11905: 0xC15E, + 32645 - 11905: 0xC15F, + 32646 - 11905: 0xC160, + 32647 - 11905: 0xC161, + 32648 - 11905: 0xC162, + 32649 - 11905: 0xC163, + 32650 - 11905: 0xD1F2, + 32651 - 11905: 0xC164, + 32652 - 11905: 0xC7BC, + 32653 - 11905: 0xC165, + 32654 - 11905: 0xC3C0, + 32655 - 11905: 0xC166, + 32656 - 11905: 0xC167, + 32657 - 11905: 0xC168, + 32658 - 11905: 0xC169, + 32659 - 11905: 0xC16A, + 32660 - 11905: 0xB8E1, + 32661 - 11905: 0xC16B, + 32662 - 11905: 0xC16C, + 32663 - 11905: 0xC16D, + 32664 - 11905: 0xC16E, + 32665 - 11905: 0xC16F, + 32666 - 11905: 0xC1E7, + 32667 - 11905: 0xC170, + 32668 - 11905: 0xC171, + 32669 - 11905: 0xF4C6, + 32670 - 11905: 0xD0DF, + 32671 - 11905: 0xF4C7, + 32672 - 11905: 0xC172, + 32673 - 11905: 0xCFDB, + 32674 - 11905: 0xC173, + 32675 - 11905: 0xC174, + 32676 - 11905: 0xC8BA, + 32677 - 11905: 0xC175, + 32678 - 11905: 0xC176, + 32679 - 11905: 0xF4C8, + 32680 - 11905: 0xC177, + 32681 - 11905: 0xC178, + 32682 - 11905: 0xC179, + 32683 - 11905: 0xC17A, + 32684 - 11905: 0xC17B, + 32685 - 11905: 0xC17C, + 32686 - 11905: 0xC17D, + 32687 - 11905: 0xF4C9, + 32688 - 11905: 0xF4CA, + 32689 - 11905: 0xC17E, + 32690 - 11905: 0xF4CB, + 32691 - 11905: 0xC180, + 32692 - 11905: 0xC181, + 32693 - 11905: 0xC182, + 32694 - 11905: 0xC183, + 32695 - 11905: 0xC184, + 32696 - 11905: 0xD9FA, + 32697 - 11905: 0xB8FE, + 32698 - 11905: 0xC185, + 32699 - 11905: 0xC186, + 32700 - 11905: 0xE5F1, + 32701 - 11905: 0xD3F0, + 32702 - 11905: 0xC187, + 32703 - 11905: 0xF4E0, + 32704 - 11905: 0xC188, + 32705 - 11905: 0xCECC, + 32706 - 11905: 0xC189, + 32707 - 11905: 0xC18A, + 32708 - 11905: 0xC18B, + 32709 - 11905: 0xB3E1, + 32710 - 11905: 0xC18C, + 32711 - 11905: 0xC18D, + 32712 - 11905: 0xC18E, + 32713 - 11905: 0xC18F, + 32714 - 11905: 0xF1B4, + 32715 - 11905: 0xC190, + 32716 - 11905: 0xD2EE, + 32717 - 11905: 0xC191, + 32718 - 11905: 0xF4E1, + 32719 - 11905: 0xC192, + 32720 - 11905: 0xC193, + 32721 - 11905: 0xC194, + 32722 - 11905: 0xC195, + 32723 - 11905: 0xC196, + 32724 - 11905: 0xCFE8, + 32725 - 11905: 0xF4E2, + 32726 - 11905: 0xC197, + 32727 - 11905: 0xC198, + 32728 - 11905: 0xC7CC, + 32729 - 11905: 0xC199, + 32730 - 11905: 0xC19A, + 32731 - 11905: 0xC19B, + 32732 - 11905: 0xC19C, + 32733 - 11905: 0xC19D, + 32734 - 11905: 0xC19E, + 32735 - 11905: 0xB5D4, + 32736 - 11905: 0xB4E4, + 32737 - 11905: 0xF4E4, + 32738 - 11905: 0xC19F, + 32739 - 11905: 0xC1A0, + 32740 - 11905: 0xC240, + 32741 - 11905: 0xF4E3, + 32742 - 11905: 0xF4E5, + 32743 - 11905: 0xC241, + 32744 - 11905: 0xC242, + 32745 - 11905: 0xF4E6, + 32746 - 11905: 0xC243, + 32747 - 11905: 0xC244, + 32748 - 11905: 0xC245, + 32749 - 11905: 0xC246, + 32750 - 11905: 0xF4E7, + 32751 - 11905: 0xC247, + 32752 - 11905: 0xBAB2, + 32753 - 11905: 0xB0BF, + 32754 - 11905: 0xC248, + 32755 - 11905: 0xF4E8, + 32756 - 11905: 0xC249, + 32757 - 11905: 0xC24A, + 32758 - 11905: 0xC24B, + 32759 - 11905: 0xC24C, + 32760 - 11905: 0xC24D, + 32761 - 11905: 0xC24E, + 32762 - 11905: 0xC24F, + 32763 - 11905: 0xB7AD, + 32764 - 11905: 0xD2ED, + 32765 - 11905: 0xC250, + 32766 - 11905: 0xC251, + 32767 - 11905: 0xC252, + 32768 - 11905: 0xD2AB, + 32769 - 11905: 0xC0CF, + 32770 - 11905: 0xC253, + 32771 - 11905: 0xBFBC, + 32772 - 11905: 0xEBA3, + 32773 - 11905: 0xD5DF, + 32774 - 11905: 0xEAC8, + 32775 - 11905: 0xC254, + 32776 - 11905: 0xC255, + 32777 - 11905: 0xC256, + 32778 - 11905: 0xC257, + 32779 - 11905: 0xF1F3, + 32780 - 11905: 0xB6F8, + 32781 - 11905: 0xCBA3, + 32782 - 11905: 0xC258, + 32783 - 11905: 0xC259, + 32784 - 11905: 0xC4CD, + 32785 - 11905: 0xC25A, + 32786 - 11905: 0xF1E7, + 32787 - 11905: 0xC25B, + 32788 - 11905: 0xF1E8, + 32789 - 11905: 0xB8FB, + 32790 - 11905: 0xF1E9, + 32791 - 11905: 0xBAC4, + 32792 - 11905: 0xD4C5, + 32793 - 11905: 0xB0D2, + 32794 - 11905: 0xC25C, + 32795 - 11905: 0xC25D, + 32796 - 11905: 0xF1EA, + 32797 - 11905: 0xC25E, + 32798 - 11905: 0xC25F, + 32799 - 11905: 0xC260, + 32800 - 11905: 0xF1EB, + 32801 - 11905: 0xC261, + 32802 - 11905: 0xF1EC, + 32803 - 11905: 0xC262, + 32804 - 11905: 0xC263, + 32805 - 11905: 0xF1ED, + 32806 - 11905: 0xF1EE, + 32807 - 11905: 0xF1EF, + 32808 - 11905: 0xF1F1, + 32809 - 11905: 0xF1F0, + 32810 - 11905: 0xC5D5, + 32811 - 11905: 0xC264, + 32812 - 11905: 0xC265, + 32813 - 11905: 0xC266, + 32814 - 11905: 0xC267, + 32815 - 11905: 0xC268, + 32816 - 11905: 0xC269, + 32817 - 11905: 0xF1F2, + 32818 - 11905: 0xC26A, + 32819 - 11905: 0xB6FA, + 32820 - 11905: 0xC26B, + 32821 - 11905: 0xF1F4, + 32822 - 11905: 0xD2AE, + 32823 - 11905: 0xDEC7, + 32824 - 11905: 0xCBCA, + 32825 - 11905: 0xC26C, + 32826 - 11905: 0xC26D, + 32827 - 11905: 0xB3DC, + 32828 - 11905: 0xC26E, + 32829 - 11905: 0xB5A2, + 32830 - 11905: 0xC26F, + 32831 - 11905: 0xB9A2, + 32832 - 11905: 0xC270, + 32833 - 11905: 0xC271, + 32834 - 11905: 0xC4F4, + 32835 - 11905: 0xF1F5, + 32836 - 11905: 0xC272, + 32837 - 11905: 0xC273, + 32838 - 11905: 0xF1F6, + 32839 - 11905: 0xC274, + 32840 - 11905: 0xC275, + 32841 - 11905: 0xC276, + 32842 - 11905: 0xC1C4, + 32843 - 11905: 0xC1FB, + 32844 - 11905: 0xD6B0, + 32845 - 11905: 0xF1F7, + 32846 - 11905: 0xC277, + 32847 - 11905: 0xC278, + 32848 - 11905: 0xC279, + 32849 - 11905: 0xC27A, + 32850 - 11905: 0xF1F8, + 32851 - 11905: 0xC27B, + 32852 - 11905: 0xC1AA, + 32853 - 11905: 0xC27C, + 32854 - 11905: 0xC27D, + 32855 - 11905: 0xC27E, + 32856 - 11905: 0xC6B8, + 32857 - 11905: 0xC280, + 32858 - 11905: 0xBEDB, + 32859 - 11905: 0xC281, + 32860 - 11905: 0xC282, + 32861 - 11905: 0xC283, + 32862 - 11905: 0xC284, + 32863 - 11905: 0xC285, + 32864 - 11905: 0xC286, + 32865 - 11905: 0xC287, + 32866 - 11905: 0xC288, + 32867 - 11905: 0xC289, + 32868 - 11905: 0xC28A, + 32869 - 11905: 0xC28B, + 32870 - 11905: 0xC28C, + 32871 - 11905: 0xC28D, + 32872 - 11905: 0xC28E, + 32873 - 11905: 0xF1F9, + 32874 - 11905: 0xB4CF, + 32875 - 11905: 0xC28F, + 32876 - 11905: 0xC290, + 32877 - 11905: 0xC291, + 32878 - 11905: 0xC292, + 32879 - 11905: 0xC293, + 32880 - 11905: 0xC294, + 32881 - 11905: 0xF1FA, + 32882 - 11905: 0xC295, + 32883 - 11905: 0xC296, + 32884 - 11905: 0xC297, + 32885 - 11905: 0xC298, + 32886 - 11905: 0xC299, + 32887 - 11905: 0xC29A, + 32888 - 11905: 0xC29B, + 32889 - 11905: 0xC29C, + 32890 - 11905: 0xC29D, + 32891 - 11905: 0xC29E, + 32892 - 11905: 0xC29F, + 32893 - 11905: 0xC2A0, + 32894 - 11905: 0xC340, + 32895 - 11905: 0xEDB2, + 32896 - 11905: 0xEDB1, + 32897 - 11905: 0xC341, + 32898 - 11905: 0xC342, + 32899 - 11905: 0xCBE0, + 32900 - 11905: 0xD2DE, + 32901 - 11905: 0xC343, + 32902 - 11905: 0xCBC1, + 32903 - 11905: 0xD5D8, + 32904 - 11905: 0xC344, + 32905 - 11905: 0xC8E2, + 32906 - 11905: 0xC345, + 32907 - 11905: 0xC0DF, + 32908 - 11905: 0xBCA1, + 32909 - 11905: 0xC346, + 32910 - 11905: 0xC347, + 32911 - 11905: 0xC348, + 32912 - 11905: 0xC349, + 32913 - 11905: 0xC34A, + 32914 - 11905: 0xC34B, + 32915 - 11905: 0xEBC1, + 32916 - 11905: 0xC34C, + 32917 - 11905: 0xC34D, + 32918 - 11905: 0xD0A4, + 32919 - 11905: 0xC34E, + 32920 - 11905: 0xD6E2, + 32921 - 11905: 0xC34F, + 32922 - 11905: 0xB6C7, + 32923 - 11905: 0xB8D8, + 32924 - 11905: 0xEBC0, + 32925 - 11905: 0xB8CE, + 32926 - 11905: 0xC350, + 32927 - 11905: 0xEBBF, + 32928 - 11905: 0xB3A6, + 32929 - 11905: 0xB9C9, + 32930 - 11905: 0xD6AB, + 32931 - 11905: 0xC351, + 32932 - 11905: 0xB7F4, + 32933 - 11905: 0xB7CA, + 32934 - 11905: 0xC352, + 32935 - 11905: 0xC353, + 32936 - 11905: 0xC354, + 32937 - 11905: 0xBCE7, + 32938 - 11905: 0xB7BE, + 32939 - 11905: 0xEBC6, + 32940 - 11905: 0xC355, + 32941 - 11905: 0xEBC7, + 32942 - 11905: 0xB0B9, + 32943 - 11905: 0xBFCF, + 32944 - 11905: 0xC356, + 32945 - 11905: 0xEBC5, + 32946 - 11905: 0xD3FD, + 32947 - 11905: 0xC357, + 32948 - 11905: 0xEBC8, + 32949 - 11905: 0xC358, + 32950 - 11905: 0xC359, + 32951 - 11905: 0xEBC9, + 32952 - 11905: 0xC35A, + 32953 - 11905: 0xC35B, + 32954 - 11905: 0xB7CE, + 32955 - 11905: 0xC35C, + 32956 - 11905: 0xEBC2, + 32957 - 11905: 0xEBC4, + 32958 - 11905: 0xC9F6, + 32959 - 11905: 0xD6D7, + 32960 - 11905: 0xD5CD, + 32961 - 11905: 0xD0B2, + 32962 - 11905: 0xEBCF, + 32963 - 11905: 0xCEB8, + 32964 - 11905: 0xEBD0, + 32965 - 11905: 0xC35D, + 32966 - 11905: 0xB5A8, + 32967 - 11905: 0xC35E, + 32968 - 11905: 0xC35F, + 32969 - 11905: 0xC360, + 32970 - 11905: 0xC361, + 32971 - 11905: 0xC362, + 32972 - 11905: 0xB1B3, + 32973 - 11905: 0xEBD2, + 32974 - 11905: 0xCCA5, + 32975 - 11905: 0xC363, + 32976 - 11905: 0xC364, + 32977 - 11905: 0xC365, + 32978 - 11905: 0xC366, + 32979 - 11905: 0xC367, + 32980 - 11905: 0xC368, + 32981 - 11905: 0xC369, + 32982 - 11905: 0xC5D6, + 32983 - 11905: 0xEBD3, + 32984 - 11905: 0xC36A, + 32985 - 11905: 0xEBD1, + 32986 - 11905: 0xC5DF, + 32987 - 11905: 0xEBCE, + 32988 - 11905: 0xCAA4, + 32989 - 11905: 0xEBD5, + 32990 - 11905: 0xB0FB, + 32991 - 11905: 0xC36B, + 32992 - 11905: 0xC36C, + 32993 - 11905: 0xBAFA, + 32994 - 11905: 0xC36D, + 32995 - 11905: 0xC36E, + 32996 - 11905: 0xD8B7, + 32997 - 11905: 0xF1E3, + 32998 - 11905: 0xC36F, + 32999 - 11905: 0xEBCA, + 33000 - 11905: 0xEBCB, + 33001 - 11905: 0xEBCC, + 33002 - 11905: 0xEBCD, + 33003 - 11905: 0xEBD6, + 33004 - 11905: 0xE6C0, + 33005 - 11905: 0xEBD9, + 33006 - 11905: 0xC370, + 33007 - 11905: 0xBFE8, + 33008 - 11905: 0xD2C8, + 33009 - 11905: 0xEBD7, + 33010 - 11905: 0xEBDC, + 33011 - 11905: 0xB8EC, + 33012 - 11905: 0xEBD8, + 33013 - 11905: 0xC371, + 33014 - 11905: 0xBDBA, + 33015 - 11905: 0xC372, + 33016 - 11905: 0xD0D8, + 33017 - 11905: 0xC373, + 33018 - 11905: 0xB0B7, + 33019 - 11905: 0xC374, + 33020 - 11905: 0xEBDD, + 33021 - 11905: 0xC4DC, + 33022 - 11905: 0xC375, + 33023 - 11905: 0xC376, + 33024 - 11905: 0xC377, + 33025 - 11905: 0xC378, + 33026 - 11905: 0xD6AC, + 33027 - 11905: 0xC379, + 33028 - 11905: 0xC37A, + 33029 - 11905: 0xC37B, + 33030 - 11905: 0xB4E0, + 33031 - 11905: 0xC37C, + 33032 - 11905: 0xC37D, + 33033 - 11905: 0xC2F6, + 33034 - 11905: 0xBCB9, + 33035 - 11905: 0xC37E, + 33036 - 11905: 0xC380, + 33037 - 11905: 0xEBDA, + 33038 - 11905: 0xEBDB, + 33039 - 11905: 0xD4E0, + 33040 - 11905: 0xC6EA, + 33041 - 11905: 0xC4D4, + 33042 - 11905: 0xEBDF, + 33043 - 11905: 0xC5A7, + 33044 - 11905: 0xD9F5, + 33045 - 11905: 0xC381, + 33046 - 11905: 0xB2B1, + 33047 - 11905: 0xC382, + 33048 - 11905: 0xEBE4, + 33049 - 11905: 0xC383, + 33050 - 11905: 0xBDC5, + 33051 - 11905: 0xC384, + 33052 - 11905: 0xC385, + 33053 - 11905: 0xC386, + 33054 - 11905: 0xEBE2, + 33055 - 11905: 0xC387, + 33056 - 11905: 0xC388, + 33057 - 11905: 0xC389, + 33058 - 11905: 0xC38A, + 33059 - 11905: 0xC38B, + 33060 - 11905: 0xC38C, + 33061 - 11905: 0xC38D, + 33062 - 11905: 0xC38E, + 33063 - 11905: 0xC38F, + 33064 - 11905: 0xC390, + 33065 - 11905: 0xC391, + 33066 - 11905: 0xC392, + 33067 - 11905: 0xC393, + 33068 - 11905: 0xEBE3, + 33069 - 11905: 0xC394, + 33070 - 11905: 0xC395, + 33071 - 11905: 0xB8AC, + 33072 - 11905: 0xC396, + 33073 - 11905: 0xCDD1, + 33074 - 11905: 0xEBE5, + 33075 - 11905: 0xC397, + 33076 - 11905: 0xC398, + 33077 - 11905: 0xC399, + 33078 - 11905: 0xEBE1, + 33079 - 11905: 0xC39A, + 33080 - 11905: 0xC1B3, + 33081 - 11905: 0xC39B, + 33082 - 11905: 0xC39C, + 33083 - 11905: 0xC39D, + 33084 - 11905: 0xC39E, + 33085 - 11905: 0xC39F, + 33086 - 11905: 0xC6A2, + 33087 - 11905: 0xC3A0, + 33088 - 11905: 0xC440, + 33089 - 11905: 0xC441, + 33090 - 11905: 0xC442, + 33091 - 11905: 0xC443, + 33092 - 11905: 0xC444, + 33093 - 11905: 0xC445, + 33094 - 11905: 0xCCF3, + 33095 - 11905: 0xC446, + 33096 - 11905: 0xEBE6, + 33097 - 11905: 0xC447, + 33098 - 11905: 0xC0B0, + 33099 - 11905: 0xD2B8, + 33100 - 11905: 0xEBE7, + 33101 - 11905: 0xC448, + 33102 - 11905: 0xC449, + 33103 - 11905: 0xC44A, + 33104 - 11905: 0xB8AF, + 33105 - 11905: 0xB8AD, + 33106 - 11905: 0xC44B, + 33107 - 11905: 0xEBE8, + 33108 - 11905: 0xC7BB, + 33109 - 11905: 0xCDF3, + 33110 - 11905: 0xC44C, + 33111 - 11905: 0xC44D, + 33112 - 11905: 0xC44E, + 33113 - 11905: 0xEBEA, + 33114 - 11905: 0xEBEB, + 33115 - 11905: 0xC44F, + 33116 - 11905: 0xC450, + 33117 - 11905: 0xC451, + 33118 - 11905: 0xC452, + 33119 - 11905: 0xC453, + 33120 - 11905: 0xEBED, + 33121 - 11905: 0xC454, + 33122 - 11905: 0xC455, + 33123 - 11905: 0xC456, + 33124 - 11905: 0xC457, + 33125 - 11905: 0xD0C8, + 33126 - 11905: 0xC458, + 33127 - 11905: 0xEBF2, + 33128 - 11905: 0xC459, + 33129 - 11905: 0xEBEE, + 33130 - 11905: 0xC45A, + 33131 - 11905: 0xC45B, + 33132 - 11905: 0xC45C, + 33133 - 11905: 0xEBF1, + 33134 - 11905: 0xC8F9, + 33135 - 11905: 0xC45D, + 33136 - 11905: 0xD1FC, + 33137 - 11905: 0xEBEC, + 33138 - 11905: 0xC45E, + 33139 - 11905: 0xC45F, + 33140 - 11905: 0xEBE9, + 33141 - 11905: 0xC460, + 33142 - 11905: 0xC461, + 33143 - 11905: 0xC462, + 33144 - 11905: 0xC463, + 33145 - 11905: 0xB8B9, + 33146 - 11905: 0xCFD9, + 33147 - 11905: 0xC4E5, + 33148 - 11905: 0xEBEF, + 33149 - 11905: 0xEBF0, + 33150 - 11905: 0xCCDA, + 33151 - 11905: 0xCDC8, + 33152 - 11905: 0xB0F2, + 33153 - 11905: 0xC464, + 33154 - 11905: 0xEBF6, + 33155 - 11905: 0xC465, + 33156 - 11905: 0xC466, + 33157 - 11905: 0xC467, + 33158 - 11905: 0xC468, + 33159 - 11905: 0xC469, + 33160 - 11905: 0xEBF5, + 33161 - 11905: 0xC46A, + 33162 - 11905: 0xB2B2, + 33163 - 11905: 0xC46B, + 33164 - 11905: 0xC46C, + 33165 - 11905: 0xC46D, + 33166 - 11905: 0xC46E, + 33167 - 11905: 0xB8E0, + 33168 - 11905: 0xC46F, + 33169 - 11905: 0xEBF7, + 33170 - 11905: 0xC470, + 33171 - 11905: 0xC471, + 33172 - 11905: 0xC472, + 33173 - 11905: 0xC473, + 33174 - 11905: 0xC474, + 33175 - 11905: 0xC475, + 33176 - 11905: 0xB1EC, + 33177 - 11905: 0xC476, + 33178 - 11905: 0xC477, + 33179 - 11905: 0xCCC5, + 33180 - 11905: 0xC4A4, + 33181 - 11905: 0xCFA5, + 33182 - 11905: 0xC478, + 33183 - 11905: 0xC479, + 33184 - 11905: 0xC47A, + 33185 - 11905: 0xC47B, + 33186 - 11905: 0xC47C, + 33187 - 11905: 0xEBF9, + 33188 - 11905: 0xC47D, + 33189 - 11905: 0xC47E, + 33190 - 11905: 0xECA2, + 33191 - 11905: 0xC480, + 33192 - 11905: 0xC5F2, + 33193 - 11905: 0xC481, + 33194 - 11905: 0xEBFA, + 33195 - 11905: 0xC482, + 33196 - 11905: 0xC483, + 33197 - 11905: 0xC484, + 33198 - 11905: 0xC485, + 33199 - 11905: 0xC486, + 33200 - 11905: 0xC487, + 33201 - 11905: 0xC488, + 33202 - 11905: 0xC489, + 33203 - 11905: 0xC9C5, + 33204 - 11905: 0xC48A, + 33205 - 11905: 0xC48B, + 33206 - 11905: 0xC48C, + 33207 - 11905: 0xC48D, + 33208 - 11905: 0xC48E, + 33209 - 11905: 0xC48F, + 33210 - 11905: 0xE2DF, + 33211 - 11905: 0xEBFE, + 33212 - 11905: 0xC490, + 33213 - 11905: 0xC491, + 33214 - 11905: 0xC492, + 33215 - 11905: 0xC493, + 33216 - 11905: 0xCDCE, + 33217 - 11905: 0xECA1, + 33218 - 11905: 0xB1DB, + 33219 - 11905: 0xD3B7, + 33220 - 11905: 0xC494, + 33221 - 11905: 0xC495, + 33222 - 11905: 0xD2DC, + 33223 - 11905: 0xC496, + 33224 - 11905: 0xC497, + 33225 - 11905: 0xC498, + 33226 - 11905: 0xEBFD, + 33227 - 11905: 0xC499, + 33228 - 11905: 0xEBFB, + 33229 - 11905: 0xC49A, + 33230 - 11905: 0xC49B, + 33231 - 11905: 0xC49C, + 33232 - 11905: 0xC49D, + 33233 - 11905: 0xC49E, + 33234 - 11905: 0xC49F, + 33235 - 11905: 0xC4A0, + 33236 - 11905: 0xC540, + 33237 - 11905: 0xC541, + 33238 - 11905: 0xC542, + 33239 - 11905: 0xC543, + 33240 - 11905: 0xC544, + 33241 - 11905: 0xC545, + 33242 - 11905: 0xC546, + 33243 - 11905: 0xC547, + 33244 - 11905: 0xC548, + 33245 - 11905: 0xC549, + 33246 - 11905: 0xC54A, + 33247 - 11905: 0xC54B, + 33248 - 11905: 0xC54C, + 33249 - 11905: 0xC54D, + 33250 - 11905: 0xC54E, + 33251 - 11905: 0xB3BC, + 33252 - 11905: 0xC54F, + 33253 - 11905: 0xC550, + 33254 - 11905: 0xC551, + 33255 - 11905: 0xEAB0, + 33256 - 11905: 0xC552, + 33257 - 11905: 0xC553, + 33258 - 11905: 0xD7D4, + 33259 - 11905: 0xC554, + 33260 - 11905: 0xF4AB, + 33261 - 11905: 0xB3F4, + 33262 - 11905: 0xC555, + 33263 - 11905: 0xC556, + 33264 - 11905: 0xC557, + 33265 - 11905: 0xC558, + 33266 - 11905: 0xC559, + 33267 - 11905: 0xD6C1, + 33268 - 11905: 0xD6C2, + 33269 - 11905: 0xC55A, + 33270 - 11905: 0xC55B, + 33271 - 11905: 0xC55C, + 33272 - 11905: 0xC55D, + 33273 - 11905: 0xC55E, + 33274 - 11905: 0xC55F, + 33275 - 11905: 0xD5E9, + 33276 - 11905: 0xBECA, + 33277 - 11905: 0xC560, + 33278 - 11905: 0xF4A7, + 33279 - 11905: 0xC561, + 33280 - 11905: 0xD2A8, + 33281 - 11905: 0xF4A8, + 33282 - 11905: 0xF4A9, + 33283 - 11905: 0xC562, + 33284 - 11905: 0xF4AA, + 33285 - 11905: 0xBECB, + 33286 - 11905: 0xD3DF, + 33287 - 11905: 0xC563, + 33288 - 11905: 0xC564, + 33289 - 11905: 0xC565, + 33290 - 11905: 0xC566, + 33291 - 11905: 0xC567, + 33292 - 11905: 0xC9E0, + 33293 - 11905: 0xC9E1, + 33294 - 11905: 0xC568, + 33295 - 11905: 0xC569, + 33296 - 11905: 0xF3C2, + 33297 - 11905: 0xC56A, + 33298 - 11905: 0xCAE6, + 33299 - 11905: 0xC56B, + 33300 - 11905: 0xCCF2, + 33301 - 11905: 0xC56C, + 33302 - 11905: 0xC56D, + 33303 - 11905: 0xC56E, + 33304 - 11905: 0xC56F, + 33305 - 11905: 0xC570, + 33306 - 11905: 0xC571, + 33307 - 11905: 0xE2B6, + 33308 - 11905: 0xCBB4, + 33309 - 11905: 0xC572, + 33310 - 11905: 0xCEE8, + 33311 - 11905: 0xD6DB, + 33312 - 11905: 0xC573, + 33313 - 11905: 0xF4AD, + 33314 - 11905: 0xF4AE, + 33315 - 11905: 0xF4AF, + 33316 - 11905: 0xC574, + 33317 - 11905: 0xC575, + 33318 - 11905: 0xC576, + 33319 - 11905: 0xC577, + 33320 - 11905: 0xF4B2, + 33321 - 11905: 0xC578, + 33322 - 11905: 0xBABD, + 33323 - 11905: 0xF4B3, + 33324 - 11905: 0xB0E3, + 33325 - 11905: 0xF4B0, + 33326 - 11905: 0xC579, + 33327 - 11905: 0xF4B1, + 33328 - 11905: 0xBDA2, + 33329 - 11905: 0xB2D5, + 33330 - 11905: 0xC57A, + 33331 - 11905: 0xF4B6, + 33332 - 11905: 0xF4B7, + 33333 - 11905: 0xB6E6, + 33334 - 11905: 0xB2B0, + 33335 - 11905: 0xCFCF, + 33336 - 11905: 0xF4B4, + 33337 - 11905: 0xB4AC, + 33338 - 11905: 0xC57B, + 33339 - 11905: 0xF4B5, + 33340 - 11905: 0xC57C, + 33341 - 11905: 0xC57D, + 33342 - 11905: 0xF4B8, + 33343 - 11905: 0xC57E, + 33344 - 11905: 0xC580, + 33345 - 11905: 0xC581, + 33346 - 11905: 0xC582, + 33347 - 11905: 0xC583, + 33348 - 11905: 0xF4B9, + 33349 - 11905: 0xC584, + 33350 - 11905: 0xC585, + 33351 - 11905: 0xCDA7, + 33352 - 11905: 0xC586, + 33353 - 11905: 0xF4BA, + 33354 - 11905: 0xC587, + 33355 - 11905: 0xF4BB, + 33356 - 11905: 0xC588, + 33357 - 11905: 0xC589, + 33358 - 11905: 0xC58A, + 33359 - 11905: 0xF4BC, + 33360 - 11905: 0xC58B, + 33361 - 11905: 0xC58C, + 33362 - 11905: 0xC58D, + 33363 - 11905: 0xC58E, + 33364 - 11905: 0xC58F, + 33365 - 11905: 0xC590, + 33366 - 11905: 0xC591, + 33367 - 11905: 0xC592, + 33368 - 11905: 0xCBD2, + 33369 - 11905: 0xC593, + 33370 - 11905: 0xF4BD, + 33371 - 11905: 0xC594, + 33372 - 11905: 0xC595, + 33373 - 11905: 0xC596, + 33374 - 11905: 0xC597, + 33375 - 11905: 0xF4BE, + 33376 - 11905: 0xC598, + 33377 - 11905: 0xC599, + 33378 - 11905: 0xC59A, + 33379 - 11905: 0xC59B, + 33380 - 11905: 0xC59C, + 33381 - 11905: 0xC59D, + 33382 - 11905: 0xC59E, + 33383 - 11905: 0xC59F, + 33384 - 11905: 0xF4BF, + 33385 - 11905: 0xC5A0, + 33386 - 11905: 0xC640, + 33387 - 11905: 0xC641, + 33388 - 11905: 0xC642, + 33389 - 11905: 0xC643, + 33390 - 11905: 0xF4DE, + 33391 - 11905: 0xC1BC, + 33392 - 11905: 0xBCE8, + 33393 - 11905: 0xC644, + 33394 - 11905: 0xC9AB, + 33395 - 11905: 0xD1DE, + 33396 - 11905: 0xE5F5, + 33397 - 11905: 0xC645, + 33398 - 11905: 0xC646, + 33399 - 11905: 0xC647, + 33400 - 11905: 0xC648, + 33401 - 11905: 0xDCB3, + 33402 - 11905: 0xD2D5, + 33403 - 11905: 0xC649, + 33404 - 11905: 0xC64A, + 33405 - 11905: 0xDCB4, + 33406 - 11905: 0xB0AC, + 33407 - 11905: 0xDCB5, + 33408 - 11905: 0xC64B, + 33409 - 11905: 0xC64C, + 33410 - 11905: 0xBDDA, + 33411 - 11905: 0xC64D, + 33412 - 11905: 0xDCB9, + 33413 - 11905: 0xC64E, + 33414 - 11905: 0xC64F, + 33415 - 11905: 0xC650, + 33416 - 11905: 0xD8C2, + 33417 - 11905: 0xC651, + 33418 - 11905: 0xDCB7, + 33419 - 11905: 0xD3F3, + 33420 - 11905: 0xC652, + 33421 - 11905: 0xC9D6, + 33422 - 11905: 0xDCBA, + 33423 - 11905: 0xDCB6, + 33424 - 11905: 0xC653, + 33425 - 11905: 0xDCBB, + 33426 - 11905: 0xC3A2, + 33427 - 11905: 0xC654, + 33428 - 11905: 0xC655, + 33429 - 11905: 0xC656, + 33430 - 11905: 0xC657, + 33431 - 11905: 0xDCBC, + 33432 - 11905: 0xDCC5, + 33433 - 11905: 0xDCBD, + 33434 - 11905: 0xC658, + 33435 - 11905: 0xC659, + 33436 - 11905: 0xCEDF, + 33437 - 11905: 0xD6A5, + 33438 - 11905: 0xC65A, + 33439 - 11905: 0xDCCF, + 33440 - 11905: 0xC65B, + 33441 - 11905: 0xDCCD, + 33442 - 11905: 0xC65C, + 33443 - 11905: 0xC65D, + 33444 - 11905: 0xDCD2, + 33445 - 11905: 0xBDE6, + 33446 - 11905: 0xC2AB, + 33447 - 11905: 0xC65E, + 33448 - 11905: 0xDCB8, + 33449 - 11905: 0xDCCB, + 33450 - 11905: 0xDCCE, + 33451 - 11905: 0xDCBE, + 33452 - 11905: 0xB7D2, + 33453 - 11905: 0xB0C5, + 33454 - 11905: 0xDCC7, + 33455 - 11905: 0xD0BE, + 33456 - 11905: 0xDCC1, + 33457 - 11905: 0xBBA8, + 33458 - 11905: 0xC65F, + 33459 - 11905: 0xB7BC, + 33460 - 11905: 0xDCCC, + 33461 - 11905: 0xC660, + 33462 - 11905: 0xC661, + 33463 - 11905: 0xDCC6, + 33464 - 11905: 0xDCBF, + 33465 - 11905: 0xC7DB, + 33466 - 11905: 0xC662, + 33467 - 11905: 0xC663, + 33468 - 11905: 0xC664, + 33469 - 11905: 0xD1BF, + 33470 - 11905: 0xDCC0, + 33471 - 11905: 0xC665, + 33472 - 11905: 0xC666, + 33473 - 11905: 0xDCCA, + 33474 - 11905: 0xC667, + 33475 - 11905: 0xC668, + 33476 - 11905: 0xDCD0, + 33477 - 11905: 0xC669, + 33478 - 11905: 0xC66A, + 33479 - 11905: 0xCEAD, + 33480 - 11905: 0xDCC2, + 33481 - 11905: 0xC66B, + 33482 - 11905: 0xDCC3, + 33483 - 11905: 0xDCC8, + 33484 - 11905: 0xDCC9, + 33485 - 11905: 0xB2D4, + 33486 - 11905: 0xDCD1, + 33487 - 11905: 0xCBD5, + 33488 - 11905: 0xC66C, + 33489 - 11905: 0xD4B7, + 33490 - 11905: 0xDCDB, + 33491 - 11905: 0xDCDF, + 33492 - 11905: 0xCCA6, + 33493 - 11905: 0xDCE6, + 33494 - 11905: 0xC66D, + 33495 - 11905: 0xC3E7, + 33496 - 11905: 0xDCDC, + 33497 - 11905: 0xC66E, + 33498 - 11905: 0xC66F, + 33499 - 11905: 0xBFC1, + 33500 - 11905: 0xDCD9, + 33501 - 11905: 0xC670, + 33502 - 11905: 0xB0FA, + 33503 - 11905: 0xB9B6, + 33504 - 11905: 0xDCE5, + 33505 - 11905: 0xDCD3, + 33506 - 11905: 0xC671, + 33507 - 11905: 0xDCC4, + 33508 - 11905: 0xDCD6, + 33509 - 11905: 0xC8F4, + 33510 - 11905: 0xBFE0, + 33511 - 11905: 0xC672, + 33512 - 11905: 0xC673, + 33513 - 11905: 0xC674, + 33514 - 11905: 0xC675, + 33515 - 11905: 0xC9BB, + 33516 - 11905: 0xC676, + 33517 - 11905: 0xC677, + 33518 - 11905: 0xC678, + 33519 - 11905: 0xB1BD, + 33520 - 11905: 0xC679, + 33521 - 11905: 0xD3A2, + 33522 - 11905: 0xC67A, + 33523 - 11905: 0xC67B, + 33524 - 11905: 0xDCDA, + 33525 - 11905: 0xC67C, + 33526 - 11905: 0xC67D, + 33527 - 11905: 0xDCD5, + 33528 - 11905: 0xC67E, + 33529 - 11905: 0xC6BB, + 33530 - 11905: 0xC680, + 33531 - 11905: 0xDCDE, + 33532 - 11905: 0xC681, + 33533 - 11905: 0xC682, + 33534 - 11905: 0xC683, + 33535 - 11905: 0xC684, + 33536 - 11905: 0xC685, + 33537 - 11905: 0xD7C2, + 33538 - 11905: 0xC3AF, + 33539 - 11905: 0xB7B6, + 33540 - 11905: 0xC7D1, + 33541 - 11905: 0xC3A9, + 33542 - 11905: 0xDCE2, + 33543 - 11905: 0xDCD8, + 33544 - 11905: 0xDCEB, + 33545 - 11905: 0xDCD4, + 33546 - 11905: 0xC686, + 33547 - 11905: 0xC687, + 33548 - 11905: 0xDCDD, + 33549 - 11905: 0xC688, + 33550 - 11905: 0xBEA5, + 33551 - 11905: 0xDCD7, + 33552 - 11905: 0xC689, + 33553 - 11905: 0xDCE0, + 33554 - 11905: 0xC68A, + 33555 - 11905: 0xC68B, + 33556 - 11905: 0xDCE3, + 33557 - 11905: 0xDCE4, + 33558 - 11905: 0xC68C, + 33559 - 11905: 0xDCF8, + 33560 - 11905: 0xC68D, + 33561 - 11905: 0xC68E, + 33562 - 11905: 0xDCE1, + 33563 - 11905: 0xDDA2, + 33564 - 11905: 0xDCE7, + 33565 - 11905: 0xC68F, + 33566 - 11905: 0xC690, + 33567 - 11905: 0xC691, + 33568 - 11905: 0xC692, + 33569 - 11905: 0xC693, + 33570 - 11905: 0xC694, + 33571 - 11905: 0xC695, + 33572 - 11905: 0xC696, + 33573 - 11905: 0xC697, + 33574 - 11905: 0xC698, + 33575 - 11905: 0xBCEB, + 33576 - 11905: 0xB4C4, + 33577 - 11905: 0xC699, + 33578 - 11905: 0xC69A, + 33579 - 11905: 0xC3A3, + 33580 - 11905: 0xB2E7, + 33581 - 11905: 0xDCFA, + 33582 - 11905: 0xC69B, + 33583 - 11905: 0xDCF2, + 33584 - 11905: 0xC69C, + 33585 - 11905: 0xDCEF, + 33586 - 11905: 0xC69D, + 33587 - 11905: 0xDCFC, + 33588 - 11905: 0xDCEE, + 33589 - 11905: 0xD2F0, + 33590 - 11905: 0xB2E8, + 33591 - 11905: 0xC69E, + 33592 - 11905: 0xC8D7, + 33593 - 11905: 0xC8E3, + 33594 - 11905: 0xDCFB, + 33595 - 11905: 0xC69F, + 33596 - 11905: 0xDCED, + 33597 - 11905: 0xC6A0, + 33598 - 11905: 0xC740, + 33599 - 11905: 0xC741, + 33600 - 11905: 0xDCF7, + 33601 - 11905: 0xC742, + 33602 - 11905: 0xC743, + 33603 - 11905: 0xDCF5, + 33604 - 11905: 0xC744, + 33605 - 11905: 0xC745, + 33606 - 11905: 0xBEA3, + 33607 - 11905: 0xDCF4, + 33608 - 11905: 0xC746, + 33609 - 11905: 0xB2DD, + 33610 - 11905: 0xC747, + 33611 - 11905: 0xC748, + 33612 - 11905: 0xC749, + 33613 - 11905: 0xC74A, + 33614 - 11905: 0xC74B, + 33615 - 11905: 0xDCF3, + 33616 - 11905: 0xBCF6, + 33617 - 11905: 0xDCE8, + 33618 - 11905: 0xBBC4, + 33619 - 11905: 0xC74C, + 33620 - 11905: 0xC0F3, + 33621 - 11905: 0xC74D, + 33622 - 11905: 0xC74E, + 33623 - 11905: 0xC74F, + 33624 - 11905: 0xC750, + 33625 - 11905: 0xC751, + 33626 - 11905: 0xBCD4, + 33627 - 11905: 0xDCE9, + 33628 - 11905: 0xDCEA, + 33629 - 11905: 0xC752, + 33630 - 11905: 0xDCF1, + 33631 - 11905: 0xDCF6, + 33632 - 11905: 0xDCF9, + 33633 - 11905: 0xB5B4, + 33634 - 11905: 0xC753, + 33635 - 11905: 0xC8D9, + 33636 - 11905: 0xBBE7, + 33637 - 11905: 0xDCFE, + 33638 - 11905: 0xDCFD, + 33639 - 11905: 0xD3AB, + 33640 - 11905: 0xDDA1, + 33641 - 11905: 0xDDA3, + 33642 - 11905: 0xDDA5, + 33643 - 11905: 0xD2F1, + 33644 - 11905: 0xDDA4, + 33645 - 11905: 0xDDA6, + 33646 - 11905: 0xDDA7, + 33647 - 11905: 0xD2A9, + 33648 - 11905: 0xC754, + 33649 - 11905: 0xC755, + 33650 - 11905: 0xC756, + 33651 - 11905: 0xC757, + 33652 - 11905: 0xC758, + 33653 - 11905: 0xC759, + 33654 - 11905: 0xC75A, + 33655 - 11905: 0xBAC9, + 33656 - 11905: 0xDDA9, + 33657 - 11905: 0xC75B, + 33658 - 11905: 0xC75C, + 33659 - 11905: 0xDDB6, + 33660 - 11905: 0xDDB1, + 33661 - 11905: 0xDDB4, + 33662 - 11905: 0xC75D, + 33663 - 11905: 0xC75E, + 33664 - 11905: 0xC75F, + 33665 - 11905: 0xC760, + 33666 - 11905: 0xC761, + 33667 - 11905: 0xC762, + 33668 - 11905: 0xC763, + 33669 - 11905: 0xDDB0, + 33670 - 11905: 0xC6CE, + 33671 - 11905: 0xC764, + 33672 - 11905: 0xC765, + 33673 - 11905: 0xC0F2, + 33674 - 11905: 0xC766, + 33675 - 11905: 0xC767, + 33676 - 11905: 0xC768, + 33677 - 11905: 0xC769, + 33678 - 11905: 0xC9AF, + 33679 - 11905: 0xC76A, + 33680 - 11905: 0xC76B, + 33681 - 11905: 0xC76C, + 33682 - 11905: 0xDCEC, + 33683 - 11905: 0xDDAE, + 33684 - 11905: 0xC76D, + 33685 - 11905: 0xC76E, + 33686 - 11905: 0xC76F, + 33687 - 11905: 0xC770, + 33688 - 11905: 0xDDB7, + 33689 - 11905: 0xC771, + 33690 - 11905: 0xC772, + 33691 - 11905: 0xDCF0, + 33692 - 11905: 0xDDAF, + 33693 - 11905: 0xC773, + 33694 - 11905: 0xDDB8, + 33695 - 11905: 0xC774, + 33696 - 11905: 0xDDAC, + 33697 - 11905: 0xC775, + 33698 - 11905: 0xC776, + 33699 - 11905: 0xC777, + 33700 - 11905: 0xC778, + 33701 - 11905: 0xC779, + 33702 - 11905: 0xC77A, + 33703 - 11905: 0xC77B, + 33704 - 11905: 0xDDB9, + 33705 - 11905: 0xDDB3, + 33706 - 11905: 0xDDAD, + 33707 - 11905: 0xC4AA, + 33708 - 11905: 0xC77C, + 33709 - 11905: 0xC77D, + 33710 - 11905: 0xC77E, + 33711 - 11905: 0xC780, + 33712 - 11905: 0xDDA8, + 33713 - 11905: 0xC0B3, + 33714 - 11905: 0xC1AB, + 33715 - 11905: 0xDDAA, + 33716 - 11905: 0xDDAB, + 33717 - 11905: 0xC781, + 33718 - 11905: 0xDDB2, + 33719 - 11905: 0xBBF1, + 33720 - 11905: 0xDDB5, + 33721 - 11905: 0xD3A8, + 33722 - 11905: 0xDDBA, + 33723 - 11905: 0xC782, + 33724 - 11905: 0xDDBB, + 33725 - 11905: 0xC3A7, + 33726 - 11905: 0xC783, + 33727 - 11905: 0xC784, + 33728 - 11905: 0xDDD2, + 33729 - 11905: 0xDDBC, + 33730 - 11905: 0xC785, + 33731 - 11905: 0xC786, + 33732 - 11905: 0xC787, + 33733 - 11905: 0xDDD1, + 33734 - 11905: 0xC788, + 33735 - 11905: 0xB9BD, + 33736 - 11905: 0xC789, + 33737 - 11905: 0xC78A, + 33738 - 11905: 0xBED5, + 33739 - 11905: 0xC78B, + 33740 - 11905: 0xBEFA, + 33741 - 11905: 0xC78C, + 33742 - 11905: 0xC78D, + 33743 - 11905: 0xBACA, + 33744 - 11905: 0xC78E, + 33745 - 11905: 0xC78F, + 33746 - 11905: 0xC790, + 33747 - 11905: 0xC791, + 33748 - 11905: 0xDDCA, + 33749 - 11905: 0xC792, + 33750 - 11905: 0xDDC5, + 33751 - 11905: 0xC793, + 33752 - 11905: 0xDDBF, + 33753 - 11905: 0xC794, + 33754 - 11905: 0xC795, + 33755 - 11905: 0xC796, + 33756 - 11905: 0xB2CB, + 33757 - 11905: 0xDDC3, + 33758 - 11905: 0xC797, + 33759 - 11905: 0xDDCB, + 33760 - 11905: 0xB2A4, + 33761 - 11905: 0xDDD5, + 33762 - 11905: 0xC798, + 33763 - 11905: 0xC799, + 33764 - 11905: 0xC79A, + 33765 - 11905: 0xDDBE, + 33766 - 11905: 0xC79B, + 33767 - 11905: 0xC79C, + 33768 - 11905: 0xC79D, + 33769 - 11905: 0xC6D0, + 33770 - 11905: 0xDDD0, + 33771 - 11905: 0xC79E, + 33772 - 11905: 0xC79F, + 33773 - 11905: 0xC7A0, + 33774 - 11905: 0xC840, + 33775 - 11905: 0xC841, + 33776 - 11905: 0xDDD4, + 33777 - 11905: 0xC1E2, + 33778 - 11905: 0xB7C6, + 33779 - 11905: 0xC842, + 33780 - 11905: 0xC843, + 33781 - 11905: 0xC844, + 33782 - 11905: 0xC845, + 33783 - 11905: 0xC846, + 33784 - 11905: 0xDDCE, + 33785 - 11905: 0xDDCF, + 33786 - 11905: 0xC847, + 33787 - 11905: 0xC848, + 33788 - 11905: 0xC849, + 33789 - 11905: 0xDDC4, + 33790 - 11905: 0xC84A, + 33791 - 11905: 0xC84B, + 33792 - 11905: 0xC84C, + 33793 - 11905: 0xDDBD, + 33794 - 11905: 0xC84D, + 33795 - 11905: 0xDDCD, + 33796 - 11905: 0xCCD1, + 33797 - 11905: 0xC84E, + 33798 - 11905: 0xDDC9, + 33799 - 11905: 0xC84F, + 33800 - 11905: 0xC850, + 33801 - 11905: 0xC851, + 33802 - 11905: 0xC852, + 33803 - 11905: 0xDDC2, + 33804 - 11905: 0xC3C8, + 33805 - 11905: 0xC6BC, + 33806 - 11905: 0xCEAE, + 33807 - 11905: 0xDDCC, + 33808 - 11905: 0xC853, + 33809 - 11905: 0xDDC8, + 33810 - 11905: 0xC854, + 33811 - 11905: 0xC855, + 33812 - 11905: 0xC856, + 33813 - 11905: 0xC857, + 33814 - 11905: 0xC858, + 33815 - 11905: 0xC859, + 33816 - 11905: 0xDDC1, + 33817 - 11905: 0xC85A, + 33818 - 11905: 0xC85B, + 33819 - 11905: 0xC85C, + 33820 - 11905: 0xDDC6, + 33821 - 11905: 0xC2DC, + 33822 - 11905: 0xC85D, + 33823 - 11905: 0xC85E, + 33824 - 11905: 0xC85F, + 33825 - 11905: 0xC860, + 33826 - 11905: 0xC861, + 33827 - 11905: 0xC862, + 33828 - 11905: 0xD3A9, + 33829 - 11905: 0xD3AA, + 33830 - 11905: 0xDDD3, + 33831 - 11905: 0xCFF4, + 33832 - 11905: 0xC8F8, + 33833 - 11905: 0xC863, + 33834 - 11905: 0xC864, + 33835 - 11905: 0xC865, + 33836 - 11905: 0xC866, + 33837 - 11905: 0xC867, + 33838 - 11905: 0xC868, + 33839 - 11905: 0xC869, + 33840 - 11905: 0xC86A, + 33841 - 11905: 0xDDE6, + 33842 - 11905: 0xC86B, + 33843 - 11905: 0xC86C, + 33844 - 11905: 0xC86D, + 33845 - 11905: 0xC86E, + 33846 - 11905: 0xC86F, + 33847 - 11905: 0xC870, + 33848 - 11905: 0xDDC7, + 33849 - 11905: 0xC871, + 33850 - 11905: 0xC872, + 33851 - 11905: 0xC873, + 33852 - 11905: 0xDDE0, + 33853 - 11905: 0xC2E4, + 33854 - 11905: 0xC874, + 33855 - 11905: 0xC875, + 33856 - 11905: 0xC876, + 33857 - 11905: 0xC877, + 33858 - 11905: 0xC878, + 33859 - 11905: 0xC879, + 33860 - 11905: 0xC87A, + 33861 - 11905: 0xC87B, + 33862 - 11905: 0xDDE1, + 33863 - 11905: 0xC87C, + 33864 - 11905: 0xC87D, + 33865 - 11905: 0xC87E, + 33866 - 11905: 0xC880, + 33867 - 11905: 0xC881, + 33868 - 11905: 0xC882, + 33869 - 11905: 0xC883, + 33870 - 11905: 0xC884, + 33871 - 11905: 0xC885, + 33872 - 11905: 0xC886, + 33873 - 11905: 0xDDD7, + 33874 - 11905: 0xC887, + 33875 - 11905: 0xC888, + 33876 - 11905: 0xC889, + 33877 - 11905: 0xC88A, + 33878 - 11905: 0xC88B, + 33879 - 11905: 0xD6F8, + 33880 - 11905: 0xC88C, + 33881 - 11905: 0xDDD9, + 33882 - 11905: 0xDDD8, + 33883 - 11905: 0xB8F0, + 33884 - 11905: 0xDDD6, + 33885 - 11905: 0xC88D, + 33886 - 11905: 0xC88E, + 33887 - 11905: 0xC88F, + 33888 - 11905: 0xC890, + 33889 - 11905: 0xC6CF, + 33890 - 11905: 0xC891, + 33891 - 11905: 0xB6AD, + 33892 - 11905: 0xC892, + 33893 - 11905: 0xC893, + 33894 - 11905: 0xC894, + 33895 - 11905: 0xC895, + 33896 - 11905: 0xC896, + 33897 - 11905: 0xDDE2, + 33898 - 11905: 0xC897, + 33899 - 11905: 0xBAF9, + 33900 - 11905: 0xD4E1, + 33901 - 11905: 0xDDE7, + 33902 - 11905: 0xC898, + 33903 - 11905: 0xC899, + 33904 - 11905: 0xC89A, + 33905 - 11905: 0xB4D0, + 33906 - 11905: 0xC89B, + 33907 - 11905: 0xDDDA, + 33908 - 11905: 0xC89C, + 33909 - 11905: 0xBFFB, + 33910 - 11905: 0xDDE3, + 33911 - 11905: 0xC89D, + 33912 - 11905: 0xDDDF, + 33913 - 11905: 0xC89E, + 33914 - 11905: 0xDDDD, + 33915 - 11905: 0xC89F, + 33916 - 11905: 0xC8A0, + 33917 - 11905: 0xC940, + 33918 - 11905: 0xC941, + 33919 - 11905: 0xC942, + 33920 - 11905: 0xC943, + 33921 - 11905: 0xC944, + 33922 - 11905: 0xB5D9, + 33923 - 11905: 0xC945, + 33924 - 11905: 0xC946, + 33925 - 11905: 0xC947, + 33926 - 11905: 0xC948, + 33927 - 11905: 0xDDDB, + 33928 - 11905: 0xDDDC, + 33929 - 11905: 0xDDDE, + 33930 - 11905: 0xC949, + 33931 - 11905: 0xBDAF, + 33932 - 11905: 0xDDE4, + 33933 - 11905: 0xC94A, + 33934 - 11905: 0xDDE5, + 33935 - 11905: 0xC94B, + 33936 - 11905: 0xC94C, + 33937 - 11905: 0xC94D, + 33938 - 11905: 0xC94E, + 33939 - 11905: 0xC94F, + 33940 - 11905: 0xC950, + 33941 - 11905: 0xC951, + 33942 - 11905: 0xC952, + 33943 - 11905: 0xDDF5, + 33944 - 11905: 0xC953, + 33945 - 11905: 0xC3C9, + 33946 - 11905: 0xC954, + 33947 - 11905: 0xC955, + 33948 - 11905: 0xCBE2, + 33949 - 11905: 0xC956, + 33950 - 11905: 0xC957, + 33951 - 11905: 0xC958, + 33952 - 11905: 0xC959, + 33953 - 11905: 0xDDF2, + 33954 - 11905: 0xC95A, + 33955 - 11905: 0xC95B, + 33956 - 11905: 0xC95C, + 33957 - 11905: 0xC95D, + 33958 - 11905: 0xC95E, + 33959 - 11905: 0xC95F, + 33960 - 11905: 0xC960, + 33961 - 11905: 0xC961, + 33962 - 11905: 0xC962, + 33963 - 11905: 0xC963, + 33964 - 11905: 0xC964, + 33965 - 11905: 0xC965, + 33966 - 11905: 0xC966, + 33967 - 11905: 0xD8E1, + 33968 - 11905: 0xC967, + 33969 - 11905: 0xC968, + 33970 - 11905: 0xC6D1, + 33971 - 11905: 0xC969, + 33972 - 11905: 0xDDF4, + 33973 - 11905: 0xC96A, + 33974 - 11905: 0xC96B, + 33975 - 11905: 0xC96C, + 33976 - 11905: 0xD5F4, + 33977 - 11905: 0xDDF3, + 33978 - 11905: 0xDDF0, + 33979 - 11905: 0xC96D, + 33980 - 11905: 0xC96E, + 33981 - 11905: 0xDDEC, + 33982 - 11905: 0xC96F, + 33983 - 11905: 0xDDEF, + 33984 - 11905: 0xC970, + 33985 - 11905: 0xDDE8, + 33986 - 11905: 0xC971, + 33987 - 11905: 0xC972, + 33988 - 11905: 0xD0EE, + 33989 - 11905: 0xC973, + 33990 - 11905: 0xC974, + 33991 - 11905: 0xC975, + 33992 - 11905: 0xC976, + 33993 - 11905: 0xC8D8, + 33994 - 11905: 0xDDEE, + 33995 - 11905: 0xC977, + 33996 - 11905: 0xC978, + 33997 - 11905: 0xDDE9, + 33998 - 11905: 0xC979, + 33999 - 11905: 0xC97A, + 34000 - 11905: 0xDDEA, + 34001 - 11905: 0xCBF2, + 34002 - 11905: 0xC97B, + 34003 - 11905: 0xDDED, + 34004 - 11905: 0xC97C, + 34005 - 11905: 0xC97D, + 34006 - 11905: 0xB1CD, + 34007 - 11905: 0xC97E, + 34008 - 11905: 0xC980, + 34009 - 11905: 0xC981, + 34010 - 11905: 0xC982, + 34011 - 11905: 0xC983, + 34012 - 11905: 0xC984, + 34013 - 11905: 0xC0B6, + 34014 - 11905: 0xC985, + 34015 - 11905: 0xBCBB, + 34016 - 11905: 0xDDF1, + 34017 - 11905: 0xC986, + 34018 - 11905: 0xC987, + 34019 - 11905: 0xDDF7, + 34020 - 11905: 0xC988, + 34021 - 11905: 0xDDF6, + 34022 - 11905: 0xDDEB, + 34023 - 11905: 0xC989, + 34024 - 11905: 0xC98A, + 34025 - 11905: 0xC98B, + 34026 - 11905: 0xC98C, + 34027 - 11905: 0xC98D, + 34028 - 11905: 0xC5EE, + 34029 - 11905: 0xC98E, + 34030 - 11905: 0xC98F, + 34031 - 11905: 0xC990, + 34032 - 11905: 0xDDFB, + 34033 - 11905: 0xC991, + 34034 - 11905: 0xC992, + 34035 - 11905: 0xC993, + 34036 - 11905: 0xC994, + 34037 - 11905: 0xC995, + 34038 - 11905: 0xC996, + 34039 - 11905: 0xC997, + 34040 - 11905: 0xC998, + 34041 - 11905: 0xC999, + 34042 - 11905: 0xC99A, + 34043 - 11905: 0xC99B, + 34044 - 11905: 0xDEA4, + 34045 - 11905: 0xC99C, + 34046 - 11905: 0xC99D, + 34047 - 11905: 0xDEA3, + 34048 - 11905: 0xC99E, + 34049 - 11905: 0xC99F, + 34050 - 11905: 0xC9A0, + 34051 - 11905: 0xCA40, + 34052 - 11905: 0xCA41, + 34053 - 11905: 0xCA42, + 34054 - 11905: 0xCA43, + 34055 - 11905: 0xCA44, + 34056 - 11905: 0xCA45, + 34057 - 11905: 0xCA46, + 34058 - 11905: 0xCA47, + 34059 - 11905: 0xCA48, + 34060 - 11905: 0xDDF8, + 34061 - 11905: 0xCA49, + 34062 - 11905: 0xCA4A, + 34063 - 11905: 0xCA4B, + 34064 - 11905: 0xCA4C, + 34065 - 11905: 0xC3EF, + 34066 - 11905: 0xCA4D, + 34067 - 11905: 0xC2FB, + 34068 - 11905: 0xCA4E, + 34069 - 11905: 0xCA4F, + 34070 - 11905: 0xCA50, + 34071 - 11905: 0xD5E1, + 34072 - 11905: 0xCA51, + 34073 - 11905: 0xCA52, + 34074 - 11905: 0xCEB5, + 34075 - 11905: 0xCA53, + 34076 - 11905: 0xCA54, + 34077 - 11905: 0xCA55, + 34078 - 11905: 0xCA56, + 34079 - 11905: 0xDDFD, + 34080 - 11905: 0xCA57, + 34081 - 11905: 0xB2CC, + 34082 - 11905: 0xCA58, + 34083 - 11905: 0xCA59, + 34084 - 11905: 0xCA5A, + 34085 - 11905: 0xCA5B, + 34086 - 11905: 0xCA5C, + 34087 - 11905: 0xCA5D, + 34088 - 11905: 0xCA5E, + 34089 - 11905: 0xCA5F, + 34090 - 11905: 0xCA60, + 34091 - 11905: 0xC4E8, + 34092 - 11905: 0xCADF, + 34093 - 11905: 0xCA61, + 34094 - 11905: 0xCA62, + 34095 - 11905: 0xCA63, + 34096 - 11905: 0xCA64, + 34097 - 11905: 0xCA65, + 34098 - 11905: 0xCA66, + 34099 - 11905: 0xCA67, + 34100 - 11905: 0xCA68, + 34101 - 11905: 0xCA69, + 34102 - 11905: 0xCA6A, + 34103 - 11905: 0xC7BE, + 34104 - 11905: 0xDDFA, + 34105 - 11905: 0xDDFC, + 34106 - 11905: 0xDDFE, + 34107 - 11905: 0xDEA2, + 34108 - 11905: 0xB0AA, + 34109 - 11905: 0xB1CE, + 34110 - 11905: 0xCA6B, + 34111 - 11905: 0xCA6C, + 34112 - 11905: 0xCA6D, + 34113 - 11905: 0xCA6E, + 34114 - 11905: 0xCA6F, + 34115 - 11905: 0xDEAC, + 34116 - 11905: 0xCA70, + 34117 - 11905: 0xCA71, + 34118 - 11905: 0xCA72, + 34119 - 11905: 0xCA73, + 34120 - 11905: 0xDEA6, + 34121 - 11905: 0xBDB6, + 34122 - 11905: 0xC8EF, + 34123 - 11905: 0xCA74, + 34124 - 11905: 0xCA75, + 34125 - 11905: 0xCA76, + 34126 - 11905: 0xCA77, + 34127 - 11905: 0xCA78, + 34128 - 11905: 0xCA79, + 34129 - 11905: 0xCA7A, + 34130 - 11905: 0xCA7B, + 34131 - 11905: 0xCA7C, + 34132 - 11905: 0xCA7D, + 34133 - 11905: 0xCA7E, + 34134 - 11905: 0xDEA1, + 34135 - 11905: 0xCA80, + 34136 - 11905: 0xCA81, + 34137 - 11905: 0xDEA5, + 34138 - 11905: 0xCA82, + 34139 - 11905: 0xCA83, + 34140 - 11905: 0xCA84, + 34141 - 11905: 0xCA85, + 34142 - 11905: 0xDEA9, + 34143 - 11905: 0xCA86, + 34144 - 11905: 0xCA87, + 34145 - 11905: 0xCA88, + 34146 - 11905: 0xCA89, + 34147 - 11905: 0xCA8A, + 34148 - 11905: 0xDEA8, + 34149 - 11905: 0xCA8B, + 34150 - 11905: 0xCA8C, + 34151 - 11905: 0xCA8D, + 34152 - 11905: 0xDEA7, + 34153 - 11905: 0xCA8E, + 34154 - 11905: 0xCA8F, + 34155 - 11905: 0xCA90, + 34156 - 11905: 0xCA91, + 34157 - 11905: 0xCA92, + 34158 - 11905: 0xCA93, + 34159 - 11905: 0xCA94, + 34160 - 11905: 0xCA95, + 34161 - 11905: 0xCA96, + 34162 - 11905: 0xDEAD, + 34163 - 11905: 0xCA97, + 34164 - 11905: 0xD4CC, + 34165 - 11905: 0xCA98, + 34166 - 11905: 0xCA99, + 34167 - 11905: 0xCA9A, + 34168 - 11905: 0xCA9B, + 34169 - 11905: 0xDEB3, + 34170 - 11905: 0xDEAA, + 34171 - 11905: 0xDEAE, + 34172 - 11905: 0xCA9C, + 34173 - 11905: 0xCA9D, + 34174 - 11905: 0xC0D9, + 34175 - 11905: 0xCA9E, + 34176 - 11905: 0xCA9F, + 34177 - 11905: 0xCAA0, + 34178 - 11905: 0xCB40, + 34179 - 11905: 0xCB41, + 34180 - 11905: 0xB1A1, + 34181 - 11905: 0xDEB6, + 34182 - 11905: 0xCB42, + 34183 - 11905: 0xDEB1, + 34184 - 11905: 0xCB43, + 34185 - 11905: 0xCB44, + 34186 - 11905: 0xCB45, + 34187 - 11905: 0xCB46, + 34188 - 11905: 0xCB47, + 34189 - 11905: 0xCB48, + 34190 - 11905: 0xCB49, + 34191 - 11905: 0xDEB2, + 34192 - 11905: 0xCB4A, + 34193 - 11905: 0xCB4B, + 34194 - 11905: 0xCB4C, + 34195 - 11905: 0xCB4D, + 34196 - 11905: 0xCB4E, + 34197 - 11905: 0xCB4F, + 34198 - 11905: 0xCB50, + 34199 - 11905: 0xCB51, + 34200 - 11905: 0xCB52, + 34201 - 11905: 0xCB53, + 34202 - 11905: 0xCB54, + 34203 - 11905: 0xD1A6, + 34204 - 11905: 0xDEB5, + 34205 - 11905: 0xCB55, + 34206 - 11905: 0xCB56, + 34207 - 11905: 0xCB57, + 34208 - 11905: 0xCB58, + 34209 - 11905: 0xCB59, + 34210 - 11905: 0xCB5A, + 34211 - 11905: 0xCB5B, + 34212 - 11905: 0xDEAF, + 34213 - 11905: 0xCB5C, + 34214 - 11905: 0xCB5D, + 34215 - 11905: 0xCB5E, + 34216 - 11905: 0xDEB0, + 34217 - 11905: 0xCB5F, + 34218 - 11905: 0xD0BD, + 34219 - 11905: 0xCB60, + 34220 - 11905: 0xCB61, + 34221 - 11905: 0xCB62, + 34222 - 11905: 0xDEB4, + 34223 - 11905: 0xCAED, + 34224 - 11905: 0xDEB9, + 34225 - 11905: 0xCB63, + 34226 - 11905: 0xCB64, + 34227 - 11905: 0xCB65, + 34228 - 11905: 0xCB66, + 34229 - 11905: 0xCB67, + 34230 - 11905: 0xCB68, + 34231 - 11905: 0xDEB8, + 34232 - 11905: 0xCB69, + 34233 - 11905: 0xDEB7, + 34234 - 11905: 0xCB6A, + 34235 - 11905: 0xCB6B, + 34236 - 11905: 0xCB6C, + 34237 - 11905: 0xCB6D, + 34238 - 11905: 0xCB6E, + 34239 - 11905: 0xCB6F, + 34240 - 11905: 0xCB70, + 34241 - 11905: 0xDEBB, + 34242 - 11905: 0xCB71, + 34243 - 11905: 0xCB72, + 34244 - 11905: 0xCB73, + 34245 - 11905: 0xCB74, + 34246 - 11905: 0xCB75, + 34247 - 11905: 0xCB76, + 34248 - 11905: 0xCB77, + 34249 - 11905: 0xBDE5, + 34250 - 11905: 0xCB78, + 34251 - 11905: 0xCB79, + 34252 - 11905: 0xCB7A, + 34253 - 11905: 0xCB7B, + 34254 - 11905: 0xCB7C, + 34255 - 11905: 0xB2D8, + 34256 - 11905: 0xC3EA, + 34257 - 11905: 0xCB7D, + 34258 - 11905: 0xCB7E, + 34259 - 11905: 0xDEBA, + 34260 - 11905: 0xCB80, + 34261 - 11905: 0xC5BA, + 34262 - 11905: 0xCB81, + 34263 - 11905: 0xCB82, + 34264 - 11905: 0xCB83, + 34265 - 11905: 0xCB84, + 34266 - 11905: 0xCB85, + 34267 - 11905: 0xCB86, + 34268 - 11905: 0xDEBC, + 34269 - 11905: 0xCB87, + 34270 - 11905: 0xCB88, + 34271 - 11905: 0xCB89, + 34272 - 11905: 0xCB8A, + 34273 - 11905: 0xCB8B, + 34274 - 11905: 0xCB8C, + 34275 - 11905: 0xCB8D, + 34276 - 11905: 0xCCD9, + 34277 - 11905: 0xCB8E, + 34278 - 11905: 0xCB8F, + 34279 - 11905: 0xCB90, + 34280 - 11905: 0xCB91, + 34281 - 11905: 0xB7AA, + 34282 - 11905: 0xCB92, + 34283 - 11905: 0xCB93, + 34284 - 11905: 0xCB94, + 34285 - 11905: 0xCB95, + 34286 - 11905: 0xCB96, + 34287 - 11905: 0xCB97, + 34288 - 11905: 0xCB98, + 34289 - 11905: 0xCB99, + 34290 - 11905: 0xCB9A, + 34291 - 11905: 0xCB9B, + 34292 - 11905: 0xCB9C, + 34293 - 11905: 0xCB9D, + 34294 - 11905: 0xCB9E, + 34295 - 11905: 0xCB9F, + 34296 - 11905: 0xCBA0, + 34297 - 11905: 0xCC40, + 34298 - 11905: 0xCC41, + 34299 - 11905: 0xD4E5, + 34300 - 11905: 0xCC42, + 34301 - 11905: 0xCC43, + 34302 - 11905: 0xCC44, + 34303 - 11905: 0xDEBD, + 34304 - 11905: 0xCC45, + 34305 - 11905: 0xCC46, + 34306 - 11905: 0xCC47, + 34307 - 11905: 0xCC48, + 34308 - 11905: 0xCC49, + 34309 - 11905: 0xDEBF, + 34310 - 11905: 0xCC4A, + 34311 - 11905: 0xCC4B, + 34312 - 11905: 0xCC4C, + 34313 - 11905: 0xCC4D, + 34314 - 11905: 0xCC4E, + 34315 - 11905: 0xCC4F, + 34316 - 11905: 0xCC50, + 34317 - 11905: 0xCC51, + 34318 - 11905: 0xCC52, + 34319 - 11905: 0xCC53, + 34320 - 11905: 0xCC54, + 34321 - 11905: 0xC4A2, + 34322 - 11905: 0xCC55, + 34323 - 11905: 0xCC56, + 34324 - 11905: 0xCC57, + 34325 - 11905: 0xCC58, + 34326 - 11905: 0xDEC1, + 34327 - 11905: 0xCC59, + 34328 - 11905: 0xCC5A, + 34329 - 11905: 0xCC5B, + 34330 - 11905: 0xCC5C, + 34331 - 11905: 0xCC5D, + 34332 - 11905: 0xCC5E, + 34333 - 11905: 0xCC5F, + 34334 - 11905: 0xCC60, + 34335 - 11905: 0xCC61, + 34336 - 11905: 0xCC62, + 34337 - 11905: 0xCC63, + 34338 - 11905: 0xCC64, + 34339 - 11905: 0xCC65, + 34340 - 11905: 0xCC66, + 34341 - 11905: 0xCC67, + 34342 - 11905: 0xCC68, + 34343 - 11905: 0xDEBE, + 34344 - 11905: 0xCC69, + 34345 - 11905: 0xDEC0, + 34346 - 11905: 0xCC6A, + 34347 - 11905: 0xCC6B, + 34348 - 11905: 0xCC6C, + 34349 - 11905: 0xCC6D, + 34350 - 11905: 0xCC6E, + 34351 - 11905: 0xCC6F, + 34352 - 11905: 0xCC70, + 34353 - 11905: 0xCC71, + 34354 - 11905: 0xCC72, + 34355 - 11905: 0xCC73, + 34356 - 11905: 0xCC74, + 34357 - 11905: 0xCC75, + 34358 - 11905: 0xCC76, + 34359 - 11905: 0xCC77, + 34360 - 11905: 0xD5BA, + 34361 - 11905: 0xCC78, + 34362 - 11905: 0xCC79, + 34363 - 11905: 0xCC7A, + 34364 - 11905: 0xDEC2, + 34365 - 11905: 0xCC7B, + 34366 - 11905: 0xCC7C, + 34367 - 11905: 0xCC7D, + 34368 - 11905: 0xCC7E, + 34369 - 11905: 0xCC80, + 34370 - 11905: 0xCC81, + 34371 - 11905: 0xCC82, + 34372 - 11905: 0xCC83, + 34373 - 11905: 0xCC84, + 34374 - 11905: 0xCC85, + 34375 - 11905: 0xCC86, + 34376 - 11905: 0xCC87, + 34377 - 11905: 0xCC88, + 34378 - 11905: 0xCC89, + 34379 - 11905: 0xCC8A, + 34380 - 11905: 0xCC8B, + 34381 - 11905: 0xF2AE, + 34382 - 11905: 0xBBA2, + 34383 - 11905: 0xC2B2, + 34384 - 11905: 0xC5B0, + 34385 - 11905: 0xC2C7, + 34386 - 11905: 0xCC8C, + 34387 - 11905: 0xCC8D, + 34388 - 11905: 0xF2AF, + 34389 - 11905: 0xCC8E, + 34390 - 11905: 0xCC8F, + 34391 - 11905: 0xCC90, + 34392 - 11905: 0xCC91, + 34393 - 11905: 0xCC92, + 34394 - 11905: 0xD0E9, + 34395 - 11905: 0xCC93, + 34396 - 11905: 0xCC94, + 34397 - 11905: 0xCC95, + 34398 - 11905: 0xD3DD, + 34399 - 11905: 0xCC96, + 34400 - 11905: 0xCC97, + 34401 - 11905: 0xCC98, + 34402 - 11905: 0xEBBD, + 34403 - 11905: 0xCC99, + 34404 - 11905: 0xCC9A, + 34405 - 11905: 0xCC9B, + 34406 - 11905: 0xCC9C, + 34407 - 11905: 0xCC9D, + 34408 - 11905: 0xCC9E, + 34409 - 11905: 0xCC9F, + 34410 - 11905: 0xCCA0, + 34411 - 11905: 0xB3E6, + 34412 - 11905: 0xF2B0, + 34413 - 11905: 0xCD40, + 34414 - 11905: 0xF2B1, + 34415 - 11905: 0xCD41, + 34416 - 11905: 0xCD42, + 34417 - 11905: 0xCAAD, + 34418 - 11905: 0xCD43, + 34419 - 11905: 0xCD44, + 34420 - 11905: 0xCD45, + 34421 - 11905: 0xCD46, + 34422 - 11905: 0xCD47, + 34423 - 11905: 0xCD48, + 34424 - 11905: 0xCD49, + 34425 - 11905: 0xBAE7, + 34426 - 11905: 0xF2B3, + 34427 - 11905: 0xF2B5, + 34428 - 11905: 0xF2B4, + 34429 - 11905: 0xCBE4, + 34430 - 11905: 0xCFBA, + 34431 - 11905: 0xF2B2, + 34432 - 11905: 0xCAB4, + 34433 - 11905: 0xD2CF, + 34434 - 11905: 0xC2EC, + 34435 - 11905: 0xCD4A, + 34436 - 11905: 0xCD4B, + 34437 - 11905: 0xCD4C, + 34438 - 11905: 0xCD4D, + 34439 - 11905: 0xCD4E, + 34440 - 11905: 0xCD4F, + 34441 - 11905: 0xCD50, + 34442 - 11905: 0xCEC3, + 34443 - 11905: 0xF2B8, + 34444 - 11905: 0xB0F6, + 34445 - 11905: 0xF2B7, + 34446 - 11905: 0xCD51, + 34447 - 11905: 0xCD52, + 34448 - 11905: 0xCD53, + 34449 - 11905: 0xCD54, + 34450 - 11905: 0xCD55, + 34451 - 11905: 0xF2BE, + 34452 - 11905: 0xCD56, + 34453 - 11905: 0xB2CF, + 34454 - 11905: 0xCD57, + 34455 - 11905: 0xCD58, + 34456 - 11905: 0xCD59, + 34457 - 11905: 0xCD5A, + 34458 - 11905: 0xCD5B, + 34459 - 11905: 0xCD5C, + 34460 - 11905: 0xD1C1, + 34461 - 11905: 0xF2BA, + 34462 - 11905: 0xCD5D, + 34463 - 11905: 0xCD5E, + 34464 - 11905: 0xCD5F, + 34465 - 11905: 0xCD60, + 34466 - 11905: 0xCD61, + 34467 - 11905: 0xF2BC, + 34468 - 11905: 0xD4E9, + 34469 - 11905: 0xCD62, + 34470 - 11905: 0xCD63, + 34471 - 11905: 0xF2BB, + 34472 - 11905: 0xF2B6, + 34473 - 11905: 0xF2BF, + 34474 - 11905: 0xF2BD, + 34475 - 11905: 0xCD64, + 34476 - 11905: 0xF2B9, + 34477 - 11905: 0xCD65, + 34478 - 11905: 0xCD66, + 34479 - 11905: 0xF2C7, + 34480 - 11905: 0xF2C4, + 34481 - 11905: 0xF2C6, + 34482 - 11905: 0xCD67, + 34483 - 11905: 0xCD68, + 34484 - 11905: 0xF2CA, + 34485 - 11905: 0xF2C2, + 34486 - 11905: 0xF2C0, + 34487 - 11905: 0xCD69, + 34488 - 11905: 0xCD6A, + 34489 - 11905: 0xCD6B, + 34490 - 11905: 0xF2C5, + 34491 - 11905: 0xCD6C, + 34492 - 11905: 0xCD6D, + 34493 - 11905: 0xCD6E, + 34494 - 11905: 0xCD6F, + 34495 - 11905: 0xCD70, + 34496 - 11905: 0xD6FB, + 34497 - 11905: 0xCD71, + 34498 - 11905: 0xCD72, + 34499 - 11905: 0xCD73, + 34500 - 11905: 0xF2C1, + 34501 - 11905: 0xCD74, + 34502 - 11905: 0xC7F9, + 34503 - 11905: 0xC9DF, + 34504 - 11905: 0xCD75, + 34505 - 11905: 0xF2C8, + 34506 - 11905: 0xB9C6, + 34507 - 11905: 0xB5B0, + 34508 - 11905: 0xCD76, + 34509 - 11905: 0xCD77, + 34510 - 11905: 0xF2C3, + 34511 - 11905: 0xF2C9, + 34512 - 11905: 0xF2D0, + 34513 - 11905: 0xF2D6, + 34514 - 11905: 0xCD78, + 34515 - 11905: 0xCD79, + 34516 - 11905: 0xBBD7, + 34517 - 11905: 0xCD7A, + 34518 - 11905: 0xCD7B, + 34519 - 11905: 0xCD7C, + 34520 - 11905: 0xF2D5, + 34521 - 11905: 0xCDDC, + 34522 - 11905: 0xCD7D, + 34523 - 11905: 0xD6EB, + 34524 - 11905: 0xCD7E, + 34525 - 11905: 0xCD80, + 34526 - 11905: 0xF2D2, + 34527 - 11905: 0xF2D4, + 34528 - 11905: 0xCD81, + 34529 - 11905: 0xCD82, + 34530 - 11905: 0xCD83, + 34531 - 11905: 0xCD84, + 34532 - 11905: 0xB8F2, + 34533 - 11905: 0xCD85, + 34534 - 11905: 0xCD86, + 34535 - 11905: 0xCD87, + 34536 - 11905: 0xCD88, + 34537 - 11905: 0xF2CB, + 34538 - 11905: 0xCD89, + 34539 - 11905: 0xCD8A, + 34540 - 11905: 0xCD8B, + 34541 - 11905: 0xF2CE, + 34542 - 11905: 0xC2F9, + 34543 - 11905: 0xCD8C, + 34544 - 11905: 0xD5DD, + 34545 - 11905: 0xF2CC, + 34546 - 11905: 0xF2CD, + 34547 - 11905: 0xF2CF, + 34548 - 11905: 0xF2D3, + 34549 - 11905: 0xCD8D, + 34550 - 11905: 0xCD8E, + 34551 - 11905: 0xCD8F, + 34552 - 11905: 0xF2D9, + 34553 - 11905: 0xD3BC, + 34554 - 11905: 0xCD90, + 34555 - 11905: 0xCD91, + 34556 - 11905: 0xCD92, + 34557 - 11905: 0xCD93, + 34558 - 11905: 0xB6EA, + 34559 - 11905: 0xCD94, + 34560 - 11905: 0xCAF1, + 34561 - 11905: 0xCD95, + 34562 - 11905: 0xB7E4, + 34563 - 11905: 0xF2D7, + 34564 - 11905: 0xCD96, + 34565 - 11905: 0xCD97, + 34566 - 11905: 0xCD98, + 34567 - 11905: 0xF2D8, + 34568 - 11905: 0xF2DA, + 34569 - 11905: 0xF2DD, + 34570 - 11905: 0xF2DB, + 34571 - 11905: 0xCD99, + 34572 - 11905: 0xCD9A, + 34573 - 11905: 0xF2DC, + 34574 - 11905: 0xCD9B, + 34575 - 11905: 0xCD9C, + 34576 - 11905: 0xCD9D, + 34577 - 11905: 0xCD9E, + 34578 - 11905: 0xD1D1, + 34579 - 11905: 0xF2D1, + 34580 - 11905: 0xCD9F, + 34581 - 11905: 0xCDC9, + 34582 - 11905: 0xCDA0, + 34583 - 11905: 0xCECF, + 34584 - 11905: 0xD6A9, + 34585 - 11905: 0xCE40, + 34586 - 11905: 0xF2E3, + 34587 - 11905: 0xCE41, + 34588 - 11905: 0xC3DB, + 34589 - 11905: 0xCE42, + 34590 - 11905: 0xF2E0, + 34591 - 11905: 0xCE43, + 34592 - 11905: 0xCE44, + 34593 - 11905: 0xC0AF, + 34594 - 11905: 0xF2EC, + 34595 - 11905: 0xF2DE, + 34596 - 11905: 0xCE45, + 34597 - 11905: 0xF2E1, + 34598 - 11905: 0xCE46, + 34599 - 11905: 0xCE47, + 34600 - 11905: 0xCE48, + 34601 - 11905: 0xF2E8, + 34602 - 11905: 0xCE49, + 34603 - 11905: 0xCE4A, + 34604 - 11905: 0xCE4B, + 34605 - 11905: 0xCE4C, + 34606 - 11905: 0xF2E2, + 34607 - 11905: 0xCE4D, + 34608 - 11905: 0xCE4E, + 34609 - 11905: 0xF2E7, + 34610 - 11905: 0xCE4F, + 34611 - 11905: 0xCE50, + 34612 - 11905: 0xF2E6, + 34613 - 11905: 0xCE51, + 34614 - 11905: 0xCE52, + 34615 - 11905: 0xF2E9, + 34616 - 11905: 0xCE53, + 34617 - 11905: 0xCE54, + 34618 - 11905: 0xCE55, + 34619 - 11905: 0xF2DF, + 34620 - 11905: 0xCE56, + 34621 - 11905: 0xCE57, + 34622 - 11905: 0xF2E4, + 34623 - 11905: 0xF2EA, + 34624 - 11905: 0xCE58, + 34625 - 11905: 0xCE59, + 34626 - 11905: 0xCE5A, + 34627 - 11905: 0xCE5B, + 34628 - 11905: 0xCE5C, + 34629 - 11905: 0xCE5D, + 34630 - 11905: 0xCE5E, + 34631 - 11905: 0xD3AC, + 34632 - 11905: 0xF2E5, + 34633 - 11905: 0xB2F5, + 34634 - 11905: 0xCE5F, + 34635 - 11905: 0xCE60, + 34636 - 11905: 0xF2F2, + 34637 - 11905: 0xCE61, + 34638 - 11905: 0xD0AB, + 34639 - 11905: 0xCE62, + 34640 - 11905: 0xCE63, + 34641 - 11905: 0xCE64, + 34642 - 11905: 0xCE65, + 34643 - 11905: 0xF2F5, + 34644 - 11905: 0xCE66, + 34645 - 11905: 0xCE67, + 34646 - 11905: 0xCE68, + 34647 - 11905: 0xBBC8, + 34648 - 11905: 0xCE69, + 34649 - 11905: 0xF2F9, + 34650 - 11905: 0xCE6A, + 34651 - 11905: 0xCE6B, + 34652 - 11905: 0xCE6C, + 34653 - 11905: 0xCE6D, + 34654 - 11905: 0xCE6E, + 34655 - 11905: 0xCE6F, + 34656 - 11905: 0xF2F0, + 34657 - 11905: 0xCE70, + 34658 - 11905: 0xCE71, + 34659 - 11905: 0xF2F6, + 34660 - 11905: 0xF2F8, + 34661 - 11905: 0xF2FA, + 34662 - 11905: 0xCE72, + 34663 - 11905: 0xCE73, + 34664 - 11905: 0xCE74, + 34665 - 11905: 0xCE75, + 34666 - 11905: 0xCE76, + 34667 - 11905: 0xCE77, + 34668 - 11905: 0xCE78, + 34669 - 11905: 0xCE79, + 34670 - 11905: 0xF2F3, + 34671 - 11905: 0xCE7A, + 34672 - 11905: 0xF2F1, + 34673 - 11905: 0xCE7B, + 34674 - 11905: 0xCE7C, + 34675 - 11905: 0xCE7D, + 34676 - 11905: 0xBAFB, + 34677 - 11905: 0xCE7E, + 34678 - 11905: 0xB5FB, + 34679 - 11905: 0xCE80, + 34680 - 11905: 0xCE81, + 34681 - 11905: 0xCE82, + 34682 - 11905: 0xCE83, + 34683 - 11905: 0xF2EF, + 34684 - 11905: 0xF2F7, + 34685 - 11905: 0xF2ED, + 34686 - 11905: 0xF2EE, + 34687 - 11905: 0xCE84, + 34688 - 11905: 0xCE85, + 34689 - 11905: 0xCE86, + 34690 - 11905: 0xF2EB, + 34691 - 11905: 0xF3A6, + 34692 - 11905: 0xCE87, + 34693 - 11905: 0xF3A3, + 34694 - 11905: 0xCE88, + 34695 - 11905: 0xCE89, + 34696 - 11905: 0xF3A2, + 34697 - 11905: 0xCE8A, + 34698 - 11905: 0xCE8B, + 34699 - 11905: 0xF2F4, + 34700 - 11905: 0xCE8C, + 34701 - 11905: 0xC8DA, + 34702 - 11905: 0xCE8D, + 34703 - 11905: 0xCE8E, + 34704 - 11905: 0xCE8F, + 34705 - 11905: 0xCE90, + 34706 - 11905: 0xCE91, + 34707 - 11905: 0xF2FB, + 34708 - 11905: 0xCE92, + 34709 - 11905: 0xCE93, + 34710 - 11905: 0xCE94, + 34711 - 11905: 0xF3A5, + 34712 - 11905: 0xCE95, + 34713 - 11905: 0xCE96, + 34714 - 11905: 0xCE97, + 34715 - 11905: 0xCE98, + 34716 - 11905: 0xCE99, + 34717 - 11905: 0xCE9A, + 34718 - 11905: 0xCE9B, + 34719 - 11905: 0xC3F8, + 34720 - 11905: 0xCE9C, + 34721 - 11905: 0xCE9D, + 34722 - 11905: 0xCE9E, + 34723 - 11905: 0xCE9F, + 34724 - 11905: 0xCEA0, + 34725 - 11905: 0xCF40, + 34726 - 11905: 0xCF41, + 34727 - 11905: 0xCF42, + 34728 - 11905: 0xF2FD, + 34729 - 11905: 0xCF43, + 34730 - 11905: 0xCF44, + 34731 - 11905: 0xF3A7, + 34732 - 11905: 0xF3A9, + 34733 - 11905: 0xF3A4, + 34734 - 11905: 0xCF45, + 34735 - 11905: 0xF2FC, + 34736 - 11905: 0xCF46, + 34737 - 11905: 0xCF47, + 34738 - 11905: 0xCF48, + 34739 - 11905: 0xF3AB, + 34740 - 11905: 0xCF49, + 34741 - 11905: 0xF3AA, + 34742 - 11905: 0xCF4A, + 34743 - 11905: 0xCF4B, + 34744 - 11905: 0xCF4C, + 34745 - 11905: 0xCF4D, + 34746 - 11905: 0xC2DD, + 34747 - 11905: 0xCF4E, + 34748 - 11905: 0xCF4F, + 34749 - 11905: 0xF3AE, + 34750 - 11905: 0xCF50, + 34751 - 11905: 0xCF51, + 34752 - 11905: 0xF3B0, + 34753 - 11905: 0xCF52, + 34754 - 11905: 0xCF53, + 34755 - 11905: 0xCF54, + 34756 - 11905: 0xCF55, + 34757 - 11905: 0xCF56, + 34758 - 11905: 0xF3A1, + 34759 - 11905: 0xCF57, + 34760 - 11905: 0xCF58, + 34761 - 11905: 0xCF59, + 34762 - 11905: 0xF3B1, + 34763 - 11905: 0xF3AC, + 34764 - 11905: 0xCF5A, + 34765 - 11905: 0xCF5B, + 34766 - 11905: 0xCF5C, + 34767 - 11905: 0xCF5D, + 34768 - 11905: 0xCF5E, + 34769 - 11905: 0xF3AF, + 34770 - 11905: 0xF2FE, + 34771 - 11905: 0xF3AD, + 34772 - 11905: 0xCF5F, + 34773 - 11905: 0xCF60, + 34774 - 11905: 0xCF61, + 34775 - 11905: 0xCF62, + 34776 - 11905: 0xCF63, + 34777 - 11905: 0xCF64, + 34778 - 11905: 0xCF65, + 34779 - 11905: 0xF3B2, + 34780 - 11905: 0xCF66, + 34781 - 11905: 0xCF67, + 34782 - 11905: 0xCF68, + 34783 - 11905: 0xCF69, + 34784 - 11905: 0xF3B4, + 34785 - 11905: 0xCF6A, + 34786 - 11905: 0xCF6B, + 34787 - 11905: 0xCF6C, + 34788 - 11905: 0xCF6D, + 34789 - 11905: 0xF3A8, + 34790 - 11905: 0xCF6E, + 34791 - 11905: 0xCF6F, + 34792 - 11905: 0xCF70, + 34793 - 11905: 0xCF71, + 34794 - 11905: 0xF3B3, + 34795 - 11905: 0xCF72, + 34796 - 11905: 0xCF73, + 34797 - 11905: 0xCF74, + 34798 - 11905: 0xF3B5, + 34799 - 11905: 0xCF75, + 34800 - 11905: 0xCF76, + 34801 - 11905: 0xCF77, + 34802 - 11905: 0xCF78, + 34803 - 11905: 0xCF79, + 34804 - 11905: 0xCF7A, + 34805 - 11905: 0xCF7B, + 34806 - 11905: 0xCF7C, + 34807 - 11905: 0xCF7D, + 34808 - 11905: 0xCF7E, + 34809 - 11905: 0xD0B7, + 34810 - 11905: 0xCF80, + 34811 - 11905: 0xCF81, + 34812 - 11905: 0xCF82, + 34813 - 11905: 0xCF83, + 34814 - 11905: 0xF3B8, + 34815 - 11905: 0xCF84, + 34816 - 11905: 0xCF85, + 34817 - 11905: 0xCF86, + 34818 - 11905: 0xCF87, + 34819 - 11905: 0xD9F9, + 34820 - 11905: 0xCF88, + 34821 - 11905: 0xCF89, + 34822 - 11905: 0xCF8A, + 34823 - 11905: 0xCF8B, + 34824 - 11905: 0xCF8C, + 34825 - 11905: 0xCF8D, + 34826 - 11905: 0xF3B9, + 34827 - 11905: 0xCF8E, + 34828 - 11905: 0xCF8F, + 34829 - 11905: 0xCF90, + 34830 - 11905: 0xCF91, + 34831 - 11905: 0xCF92, + 34832 - 11905: 0xCF93, + 34833 - 11905: 0xCF94, + 34834 - 11905: 0xCF95, + 34835 - 11905: 0xF3B7, + 34836 - 11905: 0xCF96, + 34837 - 11905: 0xC8E4, + 34838 - 11905: 0xF3B6, + 34839 - 11905: 0xCF97, + 34840 - 11905: 0xCF98, + 34841 - 11905: 0xCF99, + 34842 - 11905: 0xCF9A, + 34843 - 11905: 0xF3BA, + 34844 - 11905: 0xCF9B, + 34845 - 11905: 0xCF9C, + 34846 - 11905: 0xCF9D, + 34847 - 11905: 0xCF9E, + 34848 - 11905: 0xCF9F, + 34849 - 11905: 0xF3BB, + 34850 - 11905: 0xB4C0, + 34851 - 11905: 0xCFA0, + 34852 - 11905: 0xD040, + 34853 - 11905: 0xD041, + 34854 - 11905: 0xD042, + 34855 - 11905: 0xD043, + 34856 - 11905: 0xD044, + 34857 - 11905: 0xD045, + 34858 - 11905: 0xD046, + 34859 - 11905: 0xD047, + 34860 - 11905: 0xD048, + 34861 - 11905: 0xD049, + 34862 - 11905: 0xD04A, + 34863 - 11905: 0xD04B, + 34864 - 11905: 0xD04C, + 34865 - 11905: 0xD04D, + 34866 - 11905: 0xEEC3, + 34867 - 11905: 0xD04E, + 34868 - 11905: 0xD04F, + 34869 - 11905: 0xD050, + 34870 - 11905: 0xD051, + 34871 - 11905: 0xD052, + 34872 - 11905: 0xD053, + 34873 - 11905: 0xF3BC, + 34874 - 11905: 0xD054, + 34875 - 11905: 0xD055, + 34876 - 11905: 0xF3BD, + 34877 - 11905: 0xD056, + 34878 - 11905: 0xD057, + 34879 - 11905: 0xD058, + 34880 - 11905: 0xD1AA, + 34881 - 11905: 0xD059, + 34882 - 11905: 0xD05A, + 34883 - 11905: 0xD05B, + 34884 - 11905: 0xF4AC, + 34885 - 11905: 0xD0C6, + 34886 - 11905: 0xD05C, + 34887 - 11905: 0xD05D, + 34888 - 11905: 0xD05E, + 34889 - 11905: 0xD05F, + 34890 - 11905: 0xD060, + 34891 - 11905: 0xD061, + 34892 - 11905: 0xD0D0, + 34893 - 11905: 0xD1DC, + 34894 - 11905: 0xD062, + 34895 - 11905: 0xD063, + 34896 - 11905: 0xD064, + 34897 - 11905: 0xD065, + 34898 - 11905: 0xD066, + 34899 - 11905: 0xD067, + 34900 - 11905: 0xCFCE, + 34901 - 11905: 0xD068, + 34902 - 11905: 0xD069, + 34903 - 11905: 0xBDD6, + 34904 - 11905: 0xD06A, + 34905 - 11905: 0xD1C3, + 34906 - 11905: 0xD06B, + 34907 - 11905: 0xD06C, + 34908 - 11905: 0xD06D, + 34909 - 11905: 0xD06E, + 34910 - 11905: 0xD06F, + 34911 - 11905: 0xD070, + 34912 - 11905: 0xD071, + 34913 - 11905: 0xBAE2, + 34914 - 11905: 0xE1E9, + 34915 - 11905: 0xD2C2, + 34916 - 11905: 0xF1C2, + 34917 - 11905: 0xB2B9, + 34918 - 11905: 0xD072, + 34919 - 11905: 0xD073, + 34920 - 11905: 0xB1ED, + 34921 - 11905: 0xF1C3, + 34922 - 11905: 0xD074, + 34923 - 11905: 0xC9C0, + 34924 - 11905: 0xB3C4, + 34925 - 11905: 0xD075, + 34926 - 11905: 0xD9F2, + 34927 - 11905: 0xD076, + 34928 - 11905: 0xCBA5, + 34929 - 11905: 0xD077, + 34930 - 11905: 0xF1C4, + 34931 - 11905: 0xD078, + 34932 - 11905: 0xD079, + 34933 - 11905: 0xD07A, + 34934 - 11905: 0xD07B, + 34935 - 11905: 0xD6D4, + 34936 - 11905: 0xD07C, + 34937 - 11905: 0xD07D, + 34938 - 11905: 0xD07E, + 34939 - 11905: 0xD080, + 34940 - 11905: 0xD081, + 34941 - 11905: 0xF1C5, + 34942 - 11905: 0xF4C0, + 34943 - 11905: 0xF1C6, + 34944 - 11905: 0xD082, + 34945 - 11905: 0xD4AC, + 34946 - 11905: 0xF1C7, + 34947 - 11905: 0xD083, + 34948 - 11905: 0xB0C0, + 34949 - 11905: 0xF4C1, + 34950 - 11905: 0xD084, + 34951 - 11905: 0xD085, + 34952 - 11905: 0xF4C2, + 34953 - 11905: 0xD086, + 34954 - 11905: 0xD087, + 34955 - 11905: 0xB4FC, + 34956 - 11905: 0xD088, + 34957 - 11905: 0xC5DB, + 34958 - 11905: 0xD089, + 34959 - 11905: 0xD08A, + 34960 - 11905: 0xD08B, + 34961 - 11905: 0xD08C, + 34962 - 11905: 0xCCBB, + 34963 - 11905: 0xD08D, + 34964 - 11905: 0xD08E, + 34965 - 11905: 0xD08F, + 34966 - 11905: 0xD0E4, + 34967 - 11905: 0xD090, + 34968 - 11905: 0xD091, + 34969 - 11905: 0xD092, + 34970 - 11905: 0xD093, + 34971 - 11905: 0xD094, + 34972 - 11905: 0xCDE0, + 34973 - 11905: 0xD095, + 34974 - 11905: 0xD096, + 34975 - 11905: 0xD097, + 34976 - 11905: 0xD098, + 34977 - 11905: 0xD099, + 34978 - 11905: 0xF1C8, + 34979 - 11905: 0xD09A, + 34980 - 11905: 0xD9F3, + 34981 - 11905: 0xD09B, + 34982 - 11905: 0xD09C, + 34983 - 11905: 0xD09D, + 34984 - 11905: 0xD09E, + 34985 - 11905: 0xD09F, + 34986 - 11905: 0xD0A0, + 34987 - 11905: 0xB1BB, + 34988 - 11905: 0xD140, + 34989 - 11905: 0xCFAE, + 34990 - 11905: 0xD141, + 34991 - 11905: 0xD142, + 34992 - 11905: 0xD143, + 34993 - 11905: 0xB8A4, + 34994 - 11905: 0xD144, + 34995 - 11905: 0xD145, + 34996 - 11905: 0xD146, + 34997 - 11905: 0xD147, + 34998 - 11905: 0xD148, + 34999 - 11905: 0xF1CA, + 35000 - 11905: 0xD149, + 35001 - 11905: 0xD14A, + 35002 - 11905: 0xD14B, + 35003 - 11905: 0xD14C, + 35004 - 11905: 0xF1CB, + 35005 - 11905: 0xD14D, + 35006 - 11905: 0xD14E, + 35007 - 11905: 0xD14F, + 35008 - 11905: 0xD150, + 35009 - 11905: 0xB2C3, + 35010 - 11905: 0xC1D1, + 35011 - 11905: 0xD151, + 35012 - 11905: 0xD152, + 35013 - 11905: 0xD7B0, + 35014 - 11905: 0xF1C9, + 35015 - 11905: 0xD153, + 35016 - 11905: 0xD154, + 35017 - 11905: 0xF1CC, + 35018 - 11905: 0xD155, + 35019 - 11905: 0xD156, + 35020 - 11905: 0xD157, + 35021 - 11905: 0xD158, + 35022 - 11905: 0xF1CE, + 35023 - 11905: 0xD159, + 35024 - 11905: 0xD15A, + 35025 - 11905: 0xD15B, + 35026 - 11905: 0xD9F6, + 35027 - 11905: 0xD15C, + 35028 - 11905: 0xD2E1, + 35029 - 11905: 0xD4A3, + 35030 - 11905: 0xD15D, + 35031 - 11905: 0xD15E, + 35032 - 11905: 0xF4C3, + 35033 - 11905: 0xC8B9, + 35034 - 11905: 0xD15F, + 35035 - 11905: 0xD160, + 35036 - 11905: 0xD161, + 35037 - 11905: 0xD162, + 35038 - 11905: 0xD163, + 35039 - 11905: 0xF4C4, + 35040 - 11905: 0xD164, + 35041 - 11905: 0xD165, + 35042 - 11905: 0xF1CD, + 35043 - 11905: 0xF1CF, + 35044 - 11905: 0xBFE3, + 35045 - 11905: 0xF1D0, + 35046 - 11905: 0xD166, + 35047 - 11905: 0xD167, + 35048 - 11905: 0xF1D4, + 35049 - 11905: 0xD168, + 35050 - 11905: 0xD169, + 35051 - 11905: 0xD16A, + 35052 - 11905: 0xD16B, + 35053 - 11905: 0xD16C, + 35054 - 11905: 0xD16D, + 35055 - 11905: 0xD16E, + 35056 - 11905: 0xF1D6, + 35057 - 11905: 0xF1D1, + 35058 - 11905: 0xD16F, + 35059 - 11905: 0xC9D1, + 35060 - 11905: 0xC5E1, + 35061 - 11905: 0xD170, + 35062 - 11905: 0xD171, + 35063 - 11905: 0xD172, + 35064 - 11905: 0xC2E3, + 35065 - 11905: 0xB9FC, + 35066 - 11905: 0xD173, + 35067 - 11905: 0xD174, + 35068 - 11905: 0xF1D3, + 35069 - 11905: 0xD175, + 35070 - 11905: 0xF1D5, + 35071 - 11905: 0xD176, + 35072 - 11905: 0xD177, + 35073 - 11905: 0xD178, + 35074 - 11905: 0xB9D3, + 35075 - 11905: 0xD179, + 35076 - 11905: 0xD17A, + 35077 - 11905: 0xD17B, + 35078 - 11905: 0xD17C, + 35079 - 11905: 0xD17D, + 35080 - 11905: 0xD17E, + 35081 - 11905: 0xD180, + 35082 - 11905: 0xF1DB, + 35083 - 11905: 0xD181, + 35084 - 11905: 0xD182, + 35085 - 11905: 0xD183, + 35086 - 11905: 0xD184, + 35087 - 11905: 0xD185, + 35088 - 11905: 0xBAD6, + 35089 - 11905: 0xD186, + 35090 - 11905: 0xB0FD, + 35091 - 11905: 0xF1D9, + 35092 - 11905: 0xD187, + 35093 - 11905: 0xD188, + 35094 - 11905: 0xD189, + 35095 - 11905: 0xD18A, + 35096 - 11905: 0xD18B, + 35097 - 11905: 0xF1D8, + 35098 - 11905: 0xF1D2, + 35099 - 11905: 0xF1DA, + 35100 - 11905: 0xD18C, + 35101 - 11905: 0xD18D, + 35102 - 11905: 0xD18E, + 35103 - 11905: 0xD18F, + 35104 - 11905: 0xD190, + 35105 - 11905: 0xF1D7, + 35106 - 11905: 0xD191, + 35107 - 11905: 0xD192, + 35108 - 11905: 0xD193, + 35109 - 11905: 0xC8EC, + 35110 - 11905: 0xD194, + 35111 - 11905: 0xD195, + 35112 - 11905: 0xD196, + 35113 - 11905: 0xD197, + 35114 - 11905: 0xCDCA, + 35115 - 11905: 0xF1DD, + 35116 - 11905: 0xD198, + 35117 - 11905: 0xD199, + 35118 - 11905: 0xD19A, + 35119 - 11905: 0xD19B, + 35120 - 11905: 0xE5BD, + 35121 - 11905: 0xD19C, + 35122 - 11905: 0xD19D, + 35123 - 11905: 0xD19E, + 35124 - 11905: 0xF1DC, + 35125 - 11905: 0xD19F, + 35126 - 11905: 0xF1DE, + 35127 - 11905: 0xD1A0, + 35128 - 11905: 0xD240, + 35129 - 11905: 0xD241, + 35130 - 11905: 0xD242, + 35131 - 11905: 0xD243, + 35132 - 11905: 0xD244, + 35133 - 11905: 0xD245, + 35134 - 11905: 0xD246, + 35135 - 11905: 0xD247, + 35136 - 11905: 0xD248, + 35137 - 11905: 0xF1DF, + 35138 - 11905: 0xD249, + 35139 - 11905: 0xD24A, + 35140 - 11905: 0xCFE5, + 35141 - 11905: 0xD24B, + 35142 - 11905: 0xD24C, + 35143 - 11905: 0xD24D, + 35144 - 11905: 0xD24E, + 35145 - 11905: 0xD24F, + 35146 - 11905: 0xD250, + 35147 - 11905: 0xD251, + 35148 - 11905: 0xD252, + 35149 - 11905: 0xD253, + 35150 - 11905: 0xD254, + 35151 - 11905: 0xD255, + 35152 - 11905: 0xD256, + 35153 - 11905: 0xD257, + 35154 - 11905: 0xD258, + 35155 - 11905: 0xD259, + 35156 - 11905: 0xD25A, + 35157 - 11905: 0xD25B, + 35158 - 11905: 0xD25C, + 35159 - 11905: 0xD25D, + 35160 - 11905: 0xD25E, + 35161 - 11905: 0xD25F, + 35162 - 11905: 0xD260, + 35163 - 11905: 0xD261, + 35164 - 11905: 0xD262, + 35165 - 11905: 0xD263, + 35166 - 11905: 0xF4C5, + 35167 - 11905: 0xBDF3, + 35168 - 11905: 0xD264, + 35169 - 11905: 0xD265, + 35170 - 11905: 0xD266, + 35171 - 11905: 0xD267, + 35172 - 11905: 0xD268, + 35173 - 11905: 0xD269, + 35174 - 11905: 0xF1E0, + 35175 - 11905: 0xD26A, + 35176 - 11905: 0xD26B, + 35177 - 11905: 0xD26C, + 35178 - 11905: 0xD26D, + 35179 - 11905: 0xD26E, + 35180 - 11905: 0xD26F, + 35181 - 11905: 0xD270, + 35182 - 11905: 0xD271, + 35183 - 11905: 0xD272, + 35184 - 11905: 0xD273, + 35185 - 11905: 0xD274, + 35186 - 11905: 0xD275, + 35187 - 11905: 0xD276, + 35188 - 11905: 0xD277, + 35189 - 11905: 0xD278, + 35190 - 11905: 0xD279, + 35191 - 11905: 0xD27A, + 35192 - 11905: 0xD27B, + 35193 - 11905: 0xD27C, + 35194 - 11905: 0xD27D, + 35195 - 11905: 0xF1E1, + 35196 - 11905: 0xD27E, + 35197 - 11905: 0xD280, + 35198 - 11905: 0xD281, + 35199 - 11905: 0xCEF7, + 35200 - 11905: 0xD282, + 35201 - 11905: 0xD2AA, + 35202 - 11905: 0xD283, + 35203 - 11905: 0xF1FB, + 35204 - 11905: 0xD284, + 35205 - 11905: 0xD285, + 35206 - 11905: 0xB8B2, + 35207 - 11905: 0xD286, + 35208 - 11905: 0xD287, + 35209 - 11905: 0xD288, + 35210 - 11905: 0xD289, + 35211 - 11905: 0xD28A, + 35212 - 11905: 0xD28B, + 35213 - 11905: 0xD28C, + 35214 - 11905: 0xD28D, + 35215 - 11905: 0xD28E, + 35216 - 11905: 0xD28F, + 35217 - 11905: 0xD290, + 35218 - 11905: 0xD291, + 35219 - 11905: 0xD292, + 35220 - 11905: 0xD293, + 35221 - 11905: 0xD294, + 35222 - 11905: 0xD295, + 35223 - 11905: 0xD296, + 35224 - 11905: 0xD297, + 35225 - 11905: 0xD298, + 35226 - 11905: 0xD299, + 35227 - 11905: 0xD29A, + 35228 - 11905: 0xD29B, + 35229 - 11905: 0xD29C, + 35230 - 11905: 0xD29D, + 35231 - 11905: 0xD29E, + 35232 - 11905: 0xD29F, + 35233 - 11905: 0xD2A0, + 35234 - 11905: 0xD340, + 35235 - 11905: 0xD341, + 35236 - 11905: 0xD342, + 35237 - 11905: 0xD343, + 35238 - 11905: 0xD344, + 35239 - 11905: 0xD345, + 35240 - 11905: 0xD346, + 35241 - 11905: 0xD347, + 35242 - 11905: 0xD348, + 35243 - 11905: 0xD349, + 35244 - 11905: 0xD34A, + 35245 - 11905: 0xD34B, + 35246 - 11905: 0xD34C, + 35247 - 11905: 0xD34D, + 35248 - 11905: 0xD34E, + 35249 - 11905: 0xD34F, + 35250 - 11905: 0xD350, + 35251 - 11905: 0xD351, + 35252 - 11905: 0xD352, + 35253 - 11905: 0xD353, + 35254 - 11905: 0xD354, + 35255 - 11905: 0xD355, + 35256 - 11905: 0xD356, + 35257 - 11905: 0xD357, + 35258 - 11905: 0xD358, + 35259 - 11905: 0xD359, + 35260 - 11905: 0xD35A, + 35261 - 11905: 0xD35B, + 35262 - 11905: 0xD35C, + 35263 - 11905: 0xD35D, + 35264 - 11905: 0xD35E, + 35265 - 11905: 0xBCFB, + 35266 - 11905: 0xB9DB, + 35267 - 11905: 0xD35F, + 35268 - 11905: 0xB9E6, + 35269 - 11905: 0xC3D9, + 35270 - 11905: 0xCAD3, + 35271 - 11905: 0xEAE8, + 35272 - 11905: 0xC0C0, + 35273 - 11905: 0xBEF5, + 35274 - 11905: 0xEAE9, + 35275 - 11905: 0xEAEA, + 35276 - 11905: 0xEAEB, + 35277 - 11905: 0xD360, + 35278 - 11905: 0xEAEC, + 35279 - 11905: 0xEAED, + 35280 - 11905: 0xEAEE, + 35281 - 11905: 0xEAEF, + 35282 - 11905: 0xBDC7, + 35283 - 11905: 0xD361, + 35284 - 11905: 0xD362, + 35285 - 11905: 0xD363, + 35286 - 11905: 0xF5FB, + 35287 - 11905: 0xD364, + 35288 - 11905: 0xD365, + 35289 - 11905: 0xD366, + 35290 - 11905: 0xF5FD, + 35291 - 11905: 0xD367, + 35292 - 11905: 0xF5FE, + 35293 - 11905: 0xD368, + 35294 - 11905: 0xF5FC, + 35295 - 11905: 0xD369, + 35296 - 11905: 0xD36A, + 35297 - 11905: 0xD36B, + 35298 - 11905: 0xD36C, + 35299 - 11905: 0xBDE2, + 35300 - 11905: 0xD36D, + 35301 - 11905: 0xF6A1, + 35302 - 11905: 0xB4A5, + 35303 - 11905: 0xD36E, + 35304 - 11905: 0xD36F, + 35305 - 11905: 0xD370, + 35306 - 11905: 0xD371, + 35307 - 11905: 0xF6A2, + 35308 - 11905: 0xD372, + 35309 - 11905: 0xD373, + 35310 - 11905: 0xD374, + 35311 - 11905: 0xF6A3, + 35312 - 11905: 0xD375, + 35313 - 11905: 0xD376, + 35314 - 11905: 0xD377, + 35315 - 11905: 0xECB2, + 35316 - 11905: 0xD378, + 35317 - 11905: 0xD379, + 35318 - 11905: 0xD37A, + 35319 - 11905: 0xD37B, + 35320 - 11905: 0xD37C, + 35321 - 11905: 0xD37D, + 35322 - 11905: 0xD37E, + 35323 - 11905: 0xD380, + 35324 - 11905: 0xD381, + 35325 - 11905: 0xD382, + 35326 - 11905: 0xD383, + 35327 - 11905: 0xD384, + 35328 - 11905: 0xD1D4, + 35329 - 11905: 0xD385, + 35330 - 11905: 0xD386, + 35331 - 11905: 0xD387, + 35332 - 11905: 0xD388, + 35333 - 11905: 0xD389, + 35334 - 11905: 0xD38A, + 35335 - 11905: 0xD9EA, + 35336 - 11905: 0xD38B, + 35337 - 11905: 0xD38C, + 35338 - 11905: 0xD38D, + 35339 - 11905: 0xD38E, + 35340 - 11905: 0xD38F, + 35341 - 11905: 0xD390, + 35342 - 11905: 0xD391, + 35343 - 11905: 0xD392, + 35344 - 11905: 0xD393, + 35345 - 11905: 0xD394, + 35346 - 11905: 0xD395, + 35347 - 11905: 0xD396, + 35348 - 11905: 0xD397, + 35349 - 11905: 0xD398, + 35350 - 11905: 0xD399, + 35351 - 11905: 0xD39A, + 35352 - 11905: 0xD39B, + 35353 - 11905: 0xD39C, + 35354 - 11905: 0xD39D, + 35355 - 11905: 0xD39E, + 35356 - 11905: 0xD39F, + 35357 - 11905: 0xD3A0, + 35358 - 11905: 0xD440, + 35359 - 11905: 0xD441, + 35360 - 11905: 0xD442, + 35361 - 11905: 0xD443, + 35362 - 11905: 0xD444, + 35363 - 11905: 0xD445, + 35364 - 11905: 0xD446, + 35365 - 11905: 0xD447, + 35366 - 11905: 0xD448, + 35367 - 11905: 0xD449, + 35368 - 11905: 0xD44A, + 35369 - 11905: 0xD44B, + 35370 - 11905: 0xD44C, + 35371 - 11905: 0xD44D, + 35372 - 11905: 0xD44E, + 35373 - 11905: 0xD44F, + 35374 - 11905: 0xD450, + 35375 - 11905: 0xD451, + 35376 - 11905: 0xD452, + 35377 - 11905: 0xD453, + 35378 - 11905: 0xD454, + 35379 - 11905: 0xD455, + 35380 - 11905: 0xD456, + 35381 - 11905: 0xD457, + 35382 - 11905: 0xD458, + 35383 - 11905: 0xD459, + 35384 - 11905: 0xD45A, + 35385 - 11905: 0xD45B, + 35386 - 11905: 0xD45C, + 35387 - 11905: 0xD45D, + 35388 - 11905: 0xD45E, + 35389 - 11905: 0xD45F, + 35390 - 11905: 0xF6A4, + 35391 - 11905: 0xD460, + 35392 - 11905: 0xD461, + 35393 - 11905: 0xD462, + 35394 - 11905: 0xD463, + 35395 - 11905: 0xD464, + 35396 - 11905: 0xD465, + 35397 - 11905: 0xD466, + 35398 - 11905: 0xD467, + 35399 - 11905: 0xD468, + 35400 - 11905: 0xEEBA, + 35401 - 11905: 0xD469, + 35402 - 11905: 0xD46A, + 35403 - 11905: 0xD46B, + 35404 - 11905: 0xD46C, + 35405 - 11905: 0xD46D, + 35406 - 11905: 0xD46E, + 35407 - 11905: 0xD46F, + 35408 - 11905: 0xD470, + 35409 - 11905: 0xD471, + 35410 - 11905: 0xD472, + 35411 - 11905: 0xD473, + 35412 - 11905: 0xD474, + 35413 - 11905: 0xD475, + 35414 - 11905: 0xD476, + 35415 - 11905: 0xD477, + 35416 - 11905: 0xD478, + 35417 - 11905: 0xD479, + 35418 - 11905: 0xD47A, + 35419 - 11905: 0xD47B, + 35420 - 11905: 0xD47C, + 35421 - 11905: 0xD47D, + 35422 - 11905: 0xD47E, + 35423 - 11905: 0xD480, + 35424 - 11905: 0xD481, + 35425 - 11905: 0xD482, + 35426 - 11905: 0xD483, + 35427 - 11905: 0xD484, + 35428 - 11905: 0xD485, + 35429 - 11905: 0xD486, + 35430 - 11905: 0xD487, + 35431 - 11905: 0xD488, + 35432 - 11905: 0xD489, + 35433 - 11905: 0xD48A, + 35434 - 11905: 0xD48B, + 35435 - 11905: 0xD48C, + 35436 - 11905: 0xD48D, + 35437 - 11905: 0xD48E, + 35438 - 11905: 0xD48F, + 35439 - 11905: 0xD490, + 35440 - 11905: 0xD491, + 35441 - 11905: 0xD492, + 35442 - 11905: 0xD493, + 35443 - 11905: 0xD494, + 35444 - 11905: 0xD495, + 35445 - 11905: 0xD496, + 35446 - 11905: 0xD497, + 35447 - 11905: 0xD498, + 35448 - 11905: 0xD499, + 35449 - 11905: 0xD5B2, + 35450 - 11905: 0xD49A, + 35451 - 11905: 0xD49B, + 35452 - 11905: 0xD49C, + 35453 - 11905: 0xD49D, + 35454 - 11905: 0xD49E, + 35455 - 11905: 0xD49F, + 35456 - 11905: 0xD4A0, + 35457 - 11905: 0xD540, + 35458 - 11905: 0xD541, + 35459 - 11905: 0xD542, + 35460 - 11905: 0xD543, + 35461 - 11905: 0xD544, + 35462 - 11905: 0xD545, + 35463 - 11905: 0xD546, + 35464 - 11905: 0xD547, + 35465 - 11905: 0xD3FE, + 35466 - 11905: 0xCCDC, + 35467 - 11905: 0xD548, + 35468 - 11905: 0xD549, + 35469 - 11905: 0xD54A, + 35470 - 11905: 0xD54B, + 35471 - 11905: 0xD54C, + 35472 - 11905: 0xD54D, + 35473 - 11905: 0xD54E, + 35474 - 11905: 0xD54F, + 35475 - 11905: 0xCAC4, + 35476 - 11905: 0xD550, + 35477 - 11905: 0xD551, + 35478 - 11905: 0xD552, + 35479 - 11905: 0xD553, + 35480 - 11905: 0xD554, + 35481 - 11905: 0xD555, + 35482 - 11905: 0xD556, + 35483 - 11905: 0xD557, + 35484 - 11905: 0xD558, + 35485 - 11905: 0xD559, + 35486 - 11905: 0xD55A, + 35487 - 11905: 0xD55B, + 35488 - 11905: 0xD55C, + 35489 - 11905: 0xD55D, + 35490 - 11905: 0xD55E, + 35491 - 11905: 0xD55F, + 35492 - 11905: 0xD560, + 35493 - 11905: 0xD561, + 35494 - 11905: 0xD562, + 35495 - 11905: 0xD563, + 35496 - 11905: 0xD564, + 35497 - 11905: 0xD565, + 35498 - 11905: 0xD566, + 35499 - 11905: 0xD567, + 35500 - 11905: 0xD568, + 35501 - 11905: 0xD569, + 35502 - 11905: 0xD56A, + 35503 - 11905: 0xD56B, + 35504 - 11905: 0xD56C, + 35505 - 11905: 0xD56D, + 35506 - 11905: 0xD56E, + 35507 - 11905: 0xD56F, + 35508 - 11905: 0xD570, + 35509 - 11905: 0xD571, + 35510 - 11905: 0xD572, + 35511 - 11905: 0xD573, + 35512 - 11905: 0xD574, + 35513 - 11905: 0xD575, + 35514 - 11905: 0xD576, + 35515 - 11905: 0xD577, + 35516 - 11905: 0xD578, + 35517 - 11905: 0xD579, + 35518 - 11905: 0xD57A, + 35519 - 11905: 0xD57B, + 35520 - 11905: 0xD57C, + 35521 - 11905: 0xD57D, + 35522 - 11905: 0xD57E, + 35523 - 11905: 0xD580, + 35524 - 11905: 0xD581, + 35525 - 11905: 0xD582, + 35526 - 11905: 0xD583, + 35527 - 11905: 0xD584, + 35528 - 11905: 0xD585, + 35529 - 11905: 0xD586, + 35530 - 11905: 0xD587, + 35531 - 11905: 0xD588, + 35532 - 11905: 0xD589, + 35533 - 11905: 0xD58A, + 35534 - 11905: 0xD58B, + 35535 - 11905: 0xD58C, + 35536 - 11905: 0xD58D, + 35537 - 11905: 0xD58E, + 35538 - 11905: 0xD58F, + 35539 - 11905: 0xD590, + 35540 - 11905: 0xD591, + 35541 - 11905: 0xD592, + 35542 - 11905: 0xD593, + 35543 - 11905: 0xD594, + 35544 - 11905: 0xD595, + 35545 - 11905: 0xD596, + 35546 - 11905: 0xD597, + 35547 - 11905: 0xD598, + 35548 - 11905: 0xD599, + 35549 - 11905: 0xD59A, + 35550 - 11905: 0xD59B, + 35551 - 11905: 0xD59C, + 35552 - 11905: 0xD59D, + 35553 - 11905: 0xD59E, + 35554 - 11905: 0xD59F, + 35555 - 11905: 0xD5A0, + 35556 - 11905: 0xD640, + 35557 - 11905: 0xD641, + 35558 - 11905: 0xD642, + 35559 - 11905: 0xD643, + 35560 - 11905: 0xD644, + 35561 - 11905: 0xD645, + 35562 - 11905: 0xD646, + 35563 - 11905: 0xD647, + 35564 - 11905: 0xD648, + 35565 - 11905: 0xD649, + 35566 - 11905: 0xD64A, + 35567 - 11905: 0xD64B, + 35568 - 11905: 0xD64C, + 35569 - 11905: 0xD64D, + 35570 - 11905: 0xD64E, + 35571 - 11905: 0xD64F, + 35572 - 11905: 0xD650, + 35573 - 11905: 0xD651, + 35574 - 11905: 0xD652, + 35575 - 11905: 0xD653, + 35576 - 11905: 0xD654, + 35577 - 11905: 0xD655, + 35578 - 11905: 0xD656, + 35579 - 11905: 0xD657, + 35580 - 11905: 0xD658, + 35581 - 11905: 0xD659, + 35582 - 11905: 0xD65A, + 35583 - 11905: 0xD65B, + 35584 - 11905: 0xD65C, + 35585 - 11905: 0xD65D, + 35586 - 11905: 0xD65E, + 35587 - 11905: 0xD65F, + 35588 - 11905: 0xD660, + 35589 - 11905: 0xD661, + 35590 - 11905: 0xD662, + 35591 - 11905: 0xE5C0, + 35592 - 11905: 0xD663, + 35593 - 11905: 0xD664, + 35594 - 11905: 0xD665, + 35595 - 11905: 0xD666, + 35596 - 11905: 0xD667, + 35597 - 11905: 0xD668, + 35598 - 11905: 0xD669, + 35599 - 11905: 0xD66A, + 35600 - 11905: 0xD66B, + 35601 - 11905: 0xD66C, + 35602 - 11905: 0xD66D, + 35603 - 11905: 0xD66E, + 35604 - 11905: 0xD66F, + 35605 - 11905: 0xD670, + 35606 - 11905: 0xD671, + 35607 - 11905: 0xD672, + 35608 - 11905: 0xD673, + 35609 - 11905: 0xD674, + 35610 - 11905: 0xD675, + 35611 - 11905: 0xD676, + 35612 - 11905: 0xD677, + 35613 - 11905: 0xD678, + 35614 - 11905: 0xD679, + 35615 - 11905: 0xD67A, + 35616 - 11905: 0xD67B, + 35617 - 11905: 0xD67C, + 35618 - 11905: 0xD67D, + 35619 - 11905: 0xD67E, + 35620 - 11905: 0xD680, + 35621 - 11905: 0xD681, + 35622 - 11905: 0xF6A5, + 35623 - 11905: 0xD682, + 35624 - 11905: 0xD683, + 35625 - 11905: 0xD684, + 35626 - 11905: 0xD685, + 35627 - 11905: 0xD686, + 35628 - 11905: 0xD687, + 35629 - 11905: 0xD688, + 35630 - 11905: 0xD689, + 35631 - 11905: 0xD68A, + 35632 - 11905: 0xD68B, + 35633 - 11905: 0xD68C, + 35634 - 11905: 0xD68D, + 35635 - 11905: 0xD68E, + 35636 - 11905: 0xD68F, + 35637 - 11905: 0xD690, + 35638 - 11905: 0xD691, + 35639 - 11905: 0xD692, + 35640 - 11905: 0xD693, + 35641 - 11905: 0xD694, + 35642 - 11905: 0xD695, + 35643 - 11905: 0xD696, + 35644 - 11905: 0xD697, + 35645 - 11905: 0xD698, + 35646 - 11905: 0xD699, + 35647 - 11905: 0xD69A, + 35648 - 11905: 0xD69B, + 35649 - 11905: 0xD69C, + 35650 - 11905: 0xD69D, + 35651 - 11905: 0xD69E, + 35652 - 11905: 0xD69F, + 35653 - 11905: 0xD6A0, + 35654 - 11905: 0xD740, + 35655 - 11905: 0xD741, + 35656 - 11905: 0xD742, + 35657 - 11905: 0xD743, + 35658 - 11905: 0xD744, + 35659 - 11905: 0xD745, + 35660 - 11905: 0xD746, + 35661 - 11905: 0xD747, + 35662 - 11905: 0xD748, + 35663 - 11905: 0xD749, + 35664 - 11905: 0xD74A, + 35665 - 11905: 0xD74B, + 35666 - 11905: 0xD74C, + 35667 - 11905: 0xD74D, + 35668 - 11905: 0xD74E, + 35669 - 11905: 0xD74F, + 35670 - 11905: 0xD750, + 35671 - 11905: 0xD751, + 35672 - 11905: 0xD752, + 35673 - 11905: 0xD753, + 35674 - 11905: 0xD754, + 35675 - 11905: 0xD755, + 35676 - 11905: 0xD756, + 35677 - 11905: 0xD757, + 35678 - 11905: 0xD758, + 35679 - 11905: 0xD759, + 35680 - 11905: 0xD75A, + 35681 - 11905: 0xD75B, + 35682 - 11905: 0xD75C, + 35683 - 11905: 0xD75D, + 35684 - 11905: 0xD75E, + 35685 - 11905: 0xD75F, + 35686 - 11905: 0xBEAF, + 35687 - 11905: 0xD760, + 35688 - 11905: 0xD761, + 35689 - 11905: 0xD762, + 35690 - 11905: 0xD763, + 35691 - 11905: 0xD764, + 35692 - 11905: 0xC6A9, + 35693 - 11905: 0xD765, + 35694 - 11905: 0xD766, + 35695 - 11905: 0xD767, + 35696 - 11905: 0xD768, + 35697 - 11905: 0xD769, + 35698 - 11905: 0xD76A, + 35699 - 11905: 0xD76B, + 35700 - 11905: 0xD76C, + 35701 - 11905: 0xD76D, + 35702 - 11905: 0xD76E, + 35703 - 11905: 0xD76F, + 35704 - 11905: 0xD770, + 35705 - 11905: 0xD771, + 35706 - 11905: 0xD772, + 35707 - 11905: 0xD773, + 35708 - 11905: 0xD774, + 35709 - 11905: 0xD775, + 35710 - 11905: 0xD776, + 35711 - 11905: 0xD777, + 35712 - 11905: 0xD778, + 35713 - 11905: 0xD779, + 35714 - 11905: 0xD77A, + 35715 - 11905: 0xD77B, + 35716 - 11905: 0xD77C, + 35717 - 11905: 0xD77D, + 35718 - 11905: 0xD77E, + 35719 - 11905: 0xD780, + 35720 - 11905: 0xD781, + 35721 - 11905: 0xD782, + 35722 - 11905: 0xD783, + 35723 - 11905: 0xD784, + 35724 - 11905: 0xD785, + 35725 - 11905: 0xD786, + 35726 - 11905: 0xD787, + 35727 - 11905: 0xD788, + 35728 - 11905: 0xD789, + 35729 - 11905: 0xD78A, + 35730 - 11905: 0xD78B, + 35731 - 11905: 0xD78C, + 35732 - 11905: 0xD78D, + 35733 - 11905: 0xD78E, + 35734 - 11905: 0xD78F, + 35735 - 11905: 0xD790, + 35736 - 11905: 0xD791, + 35737 - 11905: 0xD792, + 35738 - 11905: 0xD793, + 35739 - 11905: 0xD794, + 35740 - 11905: 0xD795, + 35741 - 11905: 0xD796, + 35742 - 11905: 0xD797, + 35743 - 11905: 0xD798, + 35744 - 11905: 0xDAA5, + 35745 - 11905: 0xBCC6, + 35746 - 11905: 0xB6A9, + 35747 - 11905: 0xB8BC, + 35748 - 11905: 0xC8CF, + 35749 - 11905: 0xBCA5, + 35750 - 11905: 0xDAA6, + 35751 - 11905: 0xDAA7, + 35752 - 11905: 0xCCD6, + 35753 - 11905: 0xC8C3, + 35754 - 11905: 0xDAA8, + 35755 - 11905: 0xC6FD, + 35756 - 11905: 0xD799, + 35757 - 11905: 0xD1B5, + 35758 - 11905: 0xD2E9, + 35759 - 11905: 0xD1B6, + 35760 - 11905: 0xBCC7, + 35761 - 11905: 0xD79A, + 35762 - 11905: 0xBDB2, + 35763 - 11905: 0xBBE4, + 35764 - 11905: 0xDAA9, + 35765 - 11905: 0xDAAA, + 35766 - 11905: 0xD1C8, + 35767 - 11905: 0xDAAB, + 35768 - 11905: 0xD0ED, + 35769 - 11905: 0xB6EF, + 35770 - 11905: 0xC2DB, + 35771 - 11905: 0xD79B, + 35772 - 11905: 0xCBCF, + 35773 - 11905: 0xB7ED, + 35774 - 11905: 0xC9E8, + 35775 - 11905: 0xB7C3, + 35776 - 11905: 0xBEF7, + 35777 - 11905: 0xD6A4, + 35778 - 11905: 0xDAAC, + 35779 - 11905: 0xDAAD, + 35780 - 11905: 0xC6C0, + 35781 - 11905: 0xD7E7, + 35782 - 11905: 0xCAB6, + 35783 - 11905: 0xD79C, + 35784 - 11905: 0xD5A9, + 35785 - 11905: 0xCBDF, + 35786 - 11905: 0xD5EF, + 35787 - 11905: 0xDAAE, + 35788 - 11905: 0xD6DF, + 35789 - 11905: 0xB4CA, + 35790 - 11905: 0xDAB0, + 35791 - 11905: 0xDAAF, + 35792 - 11905: 0xD79D, + 35793 - 11905: 0xD2EB, + 35794 - 11905: 0xDAB1, + 35795 - 11905: 0xDAB2, + 35796 - 11905: 0xDAB3, + 35797 - 11905: 0xCAD4, + 35798 - 11905: 0xDAB4, + 35799 - 11905: 0xCAAB, + 35800 - 11905: 0xDAB5, + 35801 - 11905: 0xDAB6, + 35802 - 11905: 0xB3CF, + 35803 - 11905: 0xD6EF, + 35804 - 11905: 0xDAB7, + 35805 - 11905: 0xBBB0, + 35806 - 11905: 0xB5AE, + 35807 - 11905: 0xDAB8, + 35808 - 11905: 0xDAB9, + 35809 - 11905: 0xB9EE, + 35810 - 11905: 0xD1AF, + 35811 - 11905: 0xD2E8, + 35812 - 11905: 0xDABA, + 35813 - 11905: 0xB8C3, + 35814 - 11905: 0xCFEA, + 35815 - 11905: 0xB2EF, + 35816 - 11905: 0xDABB, + 35817 - 11905: 0xDABC, + 35818 - 11905: 0xD79E, + 35819 - 11905: 0xBDEB, + 35820 - 11905: 0xCEDC, + 35821 - 11905: 0xD3EF, + 35822 - 11905: 0xDABD, + 35823 - 11905: 0xCEF3, + 35824 - 11905: 0xDABE, + 35825 - 11905: 0xD3D5, + 35826 - 11905: 0xBBE5, + 35827 - 11905: 0xDABF, + 35828 - 11905: 0xCBB5, + 35829 - 11905: 0xCBD0, + 35830 - 11905: 0xDAC0, + 35831 - 11905: 0xC7EB, + 35832 - 11905: 0xD6EE, + 35833 - 11905: 0xDAC1, + 35834 - 11905: 0xC5B5, + 35835 - 11905: 0xB6C1, + 35836 - 11905: 0xDAC2, + 35837 - 11905: 0xB7CC, + 35838 - 11905: 0xBFCE, + 35839 - 11905: 0xDAC3, + 35840 - 11905: 0xDAC4, + 35841 - 11905: 0xCBAD, + 35842 - 11905: 0xDAC5, + 35843 - 11905: 0xB5F7, + 35844 - 11905: 0xDAC6, + 35845 - 11905: 0xC1C2, + 35846 - 11905: 0xD7BB, + 35847 - 11905: 0xDAC7, + 35848 - 11905: 0xCCB8, + 35849 - 11905: 0xD79F, + 35850 - 11905: 0xD2EA, + 35851 - 11905: 0xC4B1, + 35852 - 11905: 0xDAC8, + 35853 - 11905: 0xB5FD, + 35854 - 11905: 0xBBD1, + 35855 - 11905: 0xDAC9, + 35856 - 11905: 0xD0B3, + 35857 - 11905: 0xDACA, + 35858 - 11905: 0xDACB, + 35859 - 11905: 0xCEBD, + 35860 - 11905: 0xDACC, + 35861 - 11905: 0xDACD, + 35862 - 11905: 0xDACE, + 35863 - 11905: 0xB2F7, + 35864 - 11905: 0xDAD1, + 35865 - 11905: 0xDACF, + 35866 - 11905: 0xD1E8, + 35867 - 11905: 0xDAD0, + 35868 - 11905: 0xC3D5, + 35869 - 11905: 0xDAD2, + 35870 - 11905: 0xD7A0, + 35871 - 11905: 0xDAD3, + 35872 - 11905: 0xDAD4, + 35873 - 11905: 0xDAD5, + 35874 - 11905: 0xD0BB, + 35875 - 11905: 0xD2A5, + 35876 - 11905: 0xB0F9, + 35877 - 11905: 0xDAD6, + 35878 - 11905: 0xC7AB, + 35879 - 11905: 0xDAD7, + 35880 - 11905: 0xBDF7, + 35881 - 11905: 0xC3A1, + 35882 - 11905: 0xDAD8, + 35883 - 11905: 0xDAD9, + 35884 - 11905: 0xC3FD, + 35885 - 11905: 0xCCB7, + 35886 - 11905: 0xDADA, + 35887 - 11905: 0xDADB, + 35888 - 11905: 0xC0BE, + 35889 - 11905: 0xC6D7, + 35890 - 11905: 0xDADC, + 35891 - 11905: 0xDADD, + 35892 - 11905: 0xC7B4, + 35893 - 11905: 0xDADE, + 35894 - 11905: 0xDADF, + 35895 - 11905: 0xB9C8, + 35896 - 11905: 0xD840, + 35897 - 11905: 0xD841, + 35898 - 11905: 0xD842, + 35899 - 11905: 0xD843, + 35900 - 11905: 0xD844, + 35901 - 11905: 0xD845, + 35902 - 11905: 0xD846, + 35903 - 11905: 0xD847, + 35904 - 11905: 0xD848, + 35905 - 11905: 0xBBED, + 35906 - 11905: 0xD849, + 35907 - 11905: 0xD84A, + 35908 - 11905: 0xD84B, + 35909 - 11905: 0xD84C, + 35910 - 11905: 0xB6B9, + 35911 - 11905: 0xF4F8, + 35912 - 11905: 0xD84D, + 35913 - 11905: 0xF4F9, + 35914 - 11905: 0xD84E, + 35915 - 11905: 0xD84F, + 35916 - 11905: 0xCDE3, + 35917 - 11905: 0xD850, + 35918 - 11905: 0xD851, + 35919 - 11905: 0xD852, + 35920 - 11905: 0xD853, + 35921 - 11905: 0xD854, + 35922 - 11905: 0xD855, + 35923 - 11905: 0xD856, + 35924 - 11905: 0xD857, + 35925 - 11905: 0xF5B9, + 35926 - 11905: 0xD858, + 35927 - 11905: 0xD859, + 35928 - 11905: 0xD85A, + 35929 - 11905: 0xD85B, + 35930 - 11905: 0xEBE0, + 35931 - 11905: 0xD85C, + 35932 - 11905: 0xD85D, + 35933 - 11905: 0xD85E, + 35934 - 11905: 0xD85F, + 35935 - 11905: 0xD860, + 35936 - 11905: 0xD861, + 35937 - 11905: 0xCFF3, + 35938 - 11905: 0xBBBF, + 35939 - 11905: 0xD862, + 35940 - 11905: 0xD863, + 35941 - 11905: 0xD864, + 35942 - 11905: 0xD865, + 35943 - 11905: 0xD866, + 35944 - 11905: 0xD867, + 35945 - 11905: 0xD868, + 35946 - 11905: 0xBAC0, + 35947 - 11905: 0xD4A5, + 35948 - 11905: 0xD869, + 35949 - 11905: 0xD86A, + 35950 - 11905: 0xD86B, + 35951 - 11905: 0xD86C, + 35952 - 11905: 0xD86D, + 35953 - 11905: 0xD86E, + 35954 - 11905: 0xD86F, + 35955 - 11905: 0xE1D9, + 35956 - 11905: 0xD870, + 35957 - 11905: 0xD871, + 35958 - 11905: 0xD872, + 35959 - 11905: 0xD873, + 35960 - 11905: 0xF5F4, + 35961 - 11905: 0xB1AA, + 35962 - 11905: 0xB2F2, + 35963 - 11905: 0xD874, + 35964 - 11905: 0xD875, + 35965 - 11905: 0xD876, + 35966 - 11905: 0xD877, + 35967 - 11905: 0xD878, + 35968 - 11905: 0xD879, + 35969 - 11905: 0xD87A, + 35970 - 11905: 0xF5F5, + 35971 - 11905: 0xD87B, + 35972 - 11905: 0xD87C, + 35973 - 11905: 0xF5F7, + 35974 - 11905: 0xD87D, + 35975 - 11905: 0xD87E, + 35976 - 11905: 0xD880, + 35977 - 11905: 0xBAD1, + 35978 - 11905: 0xF5F6, + 35979 - 11905: 0xD881, + 35980 - 11905: 0xC3B2, + 35981 - 11905: 0xD882, + 35982 - 11905: 0xD883, + 35983 - 11905: 0xD884, + 35984 - 11905: 0xD885, + 35985 - 11905: 0xD886, + 35986 - 11905: 0xD887, + 35987 - 11905: 0xD888, + 35988 - 11905: 0xF5F9, + 35989 - 11905: 0xD889, + 35990 - 11905: 0xD88A, + 35991 - 11905: 0xD88B, + 35992 - 11905: 0xF5F8, + 35993 - 11905: 0xD88C, + 35994 - 11905: 0xD88D, + 35995 - 11905: 0xD88E, + 35996 - 11905: 0xD88F, + 35997 - 11905: 0xD890, + 35998 - 11905: 0xD891, + 35999 - 11905: 0xD892, + 36000 - 11905: 0xD893, + 36001 - 11905: 0xD894, + 36002 - 11905: 0xD895, + 36003 - 11905: 0xD896, + 36004 - 11905: 0xD897, + 36005 - 11905: 0xD898, + 36006 - 11905: 0xD899, + 36007 - 11905: 0xD89A, + 36008 - 11905: 0xD89B, + 36009 - 11905: 0xD89C, + 36010 - 11905: 0xD89D, + 36011 - 11905: 0xD89E, + 36012 - 11905: 0xD89F, + 36013 - 11905: 0xD8A0, + 36014 - 11905: 0xD940, + 36015 - 11905: 0xD941, + 36016 - 11905: 0xD942, + 36017 - 11905: 0xD943, + 36018 - 11905: 0xD944, + 36019 - 11905: 0xD945, + 36020 - 11905: 0xD946, + 36021 - 11905: 0xD947, + 36022 - 11905: 0xD948, + 36023 - 11905: 0xD949, + 36024 - 11905: 0xD94A, + 36025 - 11905: 0xD94B, + 36026 - 11905: 0xD94C, + 36027 - 11905: 0xD94D, + 36028 - 11905: 0xD94E, + 36029 - 11905: 0xD94F, + 36030 - 11905: 0xD950, + 36031 - 11905: 0xD951, + 36032 - 11905: 0xD952, + 36033 - 11905: 0xD953, + 36034 - 11905: 0xD954, + 36035 - 11905: 0xD955, + 36036 - 11905: 0xD956, + 36037 - 11905: 0xD957, + 36038 - 11905: 0xD958, + 36039 - 11905: 0xD959, + 36040 - 11905: 0xD95A, + 36041 - 11905: 0xD95B, + 36042 - 11905: 0xD95C, + 36043 - 11905: 0xD95D, + 36044 - 11905: 0xD95E, + 36045 - 11905: 0xD95F, + 36046 - 11905: 0xD960, + 36047 - 11905: 0xD961, + 36048 - 11905: 0xD962, + 36049 - 11905: 0xD963, + 36050 - 11905: 0xD964, + 36051 - 11905: 0xD965, + 36052 - 11905: 0xD966, + 36053 - 11905: 0xD967, + 36054 - 11905: 0xD968, + 36055 - 11905: 0xD969, + 36056 - 11905: 0xD96A, + 36057 - 11905: 0xD96B, + 36058 - 11905: 0xD96C, + 36059 - 11905: 0xD96D, + 36060 - 11905: 0xD96E, + 36061 - 11905: 0xD96F, + 36062 - 11905: 0xD970, + 36063 - 11905: 0xD971, + 36064 - 11905: 0xD972, + 36065 - 11905: 0xD973, + 36066 - 11905: 0xD974, + 36067 - 11905: 0xD975, + 36068 - 11905: 0xD976, + 36069 - 11905: 0xD977, + 36070 - 11905: 0xD978, + 36071 - 11905: 0xD979, + 36072 - 11905: 0xD97A, + 36073 - 11905: 0xD97B, + 36074 - 11905: 0xD97C, + 36075 - 11905: 0xD97D, + 36076 - 11905: 0xD97E, + 36077 - 11905: 0xD980, + 36078 - 11905: 0xD981, + 36079 - 11905: 0xD982, + 36080 - 11905: 0xD983, + 36081 - 11905: 0xD984, + 36082 - 11905: 0xD985, + 36083 - 11905: 0xD986, + 36084 - 11905: 0xD987, + 36085 - 11905: 0xD988, + 36086 - 11905: 0xD989, + 36087 - 11905: 0xD98A, + 36088 - 11905: 0xD98B, + 36089 - 11905: 0xD98C, + 36090 - 11905: 0xD98D, + 36091 - 11905: 0xD98E, + 36092 - 11905: 0xD98F, + 36093 - 11905: 0xD990, + 36094 - 11905: 0xD991, + 36095 - 11905: 0xD992, + 36096 - 11905: 0xD993, + 36097 - 11905: 0xD994, + 36098 - 11905: 0xD995, + 36099 - 11905: 0xD996, + 36100 - 11905: 0xD997, + 36101 - 11905: 0xD998, + 36102 - 11905: 0xD999, + 36103 - 11905: 0xD99A, + 36104 - 11905: 0xD99B, + 36105 - 11905: 0xD99C, + 36106 - 11905: 0xD99D, + 36107 - 11905: 0xD99E, + 36108 - 11905: 0xD99F, + 36109 - 11905: 0xD9A0, + 36110 - 11905: 0xDA40, + 36111 - 11905: 0xDA41, + 36112 - 11905: 0xDA42, + 36113 - 11905: 0xDA43, + 36114 - 11905: 0xDA44, + 36115 - 11905: 0xDA45, + 36116 - 11905: 0xDA46, + 36117 - 11905: 0xDA47, + 36118 - 11905: 0xDA48, + 36119 - 11905: 0xDA49, + 36120 - 11905: 0xDA4A, + 36121 - 11905: 0xDA4B, + 36122 - 11905: 0xDA4C, + 36123 - 11905: 0xDA4D, + 36124 - 11905: 0xDA4E, + 36125 - 11905: 0xB1B4, + 36126 - 11905: 0xD5EA, + 36127 - 11905: 0xB8BA, + 36128 - 11905: 0xDA4F, + 36129 - 11905: 0xB9B1, + 36130 - 11905: 0xB2C6, + 36131 - 11905: 0xD4F0, + 36132 - 11905: 0xCFCD, + 36133 - 11905: 0xB0DC, + 36134 - 11905: 0xD5CB, + 36135 - 11905: 0xBBF5, + 36136 - 11905: 0xD6CA, + 36137 - 11905: 0xB7B7, + 36138 - 11905: 0xCCB0, + 36139 - 11905: 0xC6B6, + 36140 - 11905: 0xB1E1, + 36141 - 11905: 0xB9BA, + 36142 - 11905: 0xD6FC, + 36143 - 11905: 0xB9E1, + 36144 - 11905: 0xB7A1, + 36145 - 11905: 0xBCFA, + 36146 - 11905: 0xEADA, + 36147 - 11905: 0xEADB, + 36148 - 11905: 0xCCF9, + 36149 - 11905: 0xB9F3, + 36150 - 11905: 0xEADC, + 36151 - 11905: 0xB4FB, + 36152 - 11905: 0xC3B3, + 36153 - 11905: 0xB7D1, + 36154 - 11905: 0xBAD8, + 36155 - 11905: 0xEADD, + 36156 - 11905: 0xD4F4, + 36157 - 11905: 0xEADE, + 36158 - 11905: 0xBCD6, + 36159 - 11905: 0xBBDF, + 36160 - 11905: 0xEADF, + 36161 - 11905: 0xC1DE, + 36162 - 11905: 0xC2B8, + 36163 - 11905: 0xD4DF, + 36164 - 11905: 0xD7CA, + 36165 - 11905: 0xEAE0, + 36166 - 11905: 0xEAE1, + 36167 - 11905: 0xEAE4, + 36168 - 11905: 0xEAE2, + 36169 - 11905: 0xEAE3, + 36170 - 11905: 0xC9DE, + 36171 - 11905: 0xB8B3, + 36172 - 11905: 0xB6C4, + 36173 - 11905: 0xEAE5, + 36174 - 11905: 0xCAEA, + 36175 - 11905: 0xC9CD, + 36176 - 11905: 0xB4CD, + 36177 - 11905: 0xDA50, + 36178 - 11905: 0xDA51, + 36179 - 11905: 0xE2D9, + 36180 - 11905: 0xC5E2, + 36181 - 11905: 0xEAE6, + 36182 - 11905: 0xC0B5, + 36183 - 11905: 0xDA52, + 36184 - 11905: 0xD7B8, + 36185 - 11905: 0xEAE7, + 36186 - 11905: 0xD7AC, + 36187 - 11905: 0xC8FC, + 36188 - 11905: 0xD8D3, + 36189 - 11905: 0xD8CD, + 36190 - 11905: 0xD4DE, + 36191 - 11905: 0xDA53, + 36192 - 11905: 0xD4F9, + 36193 - 11905: 0xC9C4, + 36194 - 11905: 0xD3AE, + 36195 - 11905: 0xB8D3, + 36196 - 11905: 0xB3E0, + 36197 - 11905: 0xDA54, + 36198 - 11905: 0xC9E2, + 36199 - 11905: 0xF4F6, + 36200 - 11905: 0xDA55, + 36201 - 11905: 0xDA56, + 36202 - 11905: 0xDA57, + 36203 - 11905: 0xBAD5, + 36204 - 11905: 0xDA58, + 36205 - 11905: 0xF4F7, + 36206 - 11905: 0xDA59, + 36207 - 11905: 0xDA5A, + 36208 - 11905: 0xD7DF, + 36209 - 11905: 0xDA5B, + 36210 - 11905: 0xDA5C, + 36211 - 11905: 0xF4F1, + 36212 - 11905: 0xB8B0, + 36213 - 11905: 0xD5D4, + 36214 - 11905: 0xB8CF, + 36215 - 11905: 0xC6F0, + 36216 - 11905: 0xDA5D, + 36217 - 11905: 0xDA5E, + 36218 - 11905: 0xDA5F, + 36219 - 11905: 0xDA60, + 36220 - 11905: 0xDA61, + 36221 - 11905: 0xDA62, + 36222 - 11905: 0xDA63, + 36223 - 11905: 0xDA64, + 36224 - 11905: 0xDA65, + 36225 - 11905: 0xB3C3, + 36226 - 11905: 0xDA66, + 36227 - 11905: 0xDA67, + 36228 - 11905: 0xF4F2, + 36229 - 11905: 0xB3AC, + 36230 - 11905: 0xDA68, + 36231 - 11905: 0xDA69, + 36232 - 11905: 0xDA6A, + 36233 - 11905: 0xDA6B, + 36234 - 11905: 0xD4BD, + 36235 - 11905: 0xC7F7, + 36236 - 11905: 0xDA6C, + 36237 - 11905: 0xDA6D, + 36238 - 11905: 0xDA6E, + 36239 - 11905: 0xDA6F, + 36240 - 11905: 0xDA70, + 36241 - 11905: 0xF4F4, + 36242 - 11905: 0xDA71, + 36243 - 11905: 0xDA72, + 36244 - 11905: 0xF4F3, + 36245 - 11905: 0xDA73, + 36246 - 11905: 0xDA74, + 36247 - 11905: 0xDA75, + 36248 - 11905: 0xDA76, + 36249 - 11905: 0xDA77, + 36250 - 11905: 0xDA78, + 36251 - 11905: 0xDA79, + 36252 - 11905: 0xDA7A, + 36253 - 11905: 0xDA7B, + 36254 - 11905: 0xDA7C, + 36255 - 11905: 0xCCCB, + 36256 - 11905: 0xDA7D, + 36257 - 11905: 0xDA7E, + 36258 - 11905: 0xDA80, + 36259 - 11905: 0xC8A4, + 36260 - 11905: 0xDA81, + 36261 - 11905: 0xDA82, + 36262 - 11905: 0xDA83, + 36263 - 11905: 0xDA84, + 36264 - 11905: 0xDA85, + 36265 - 11905: 0xDA86, + 36266 - 11905: 0xDA87, + 36267 - 11905: 0xDA88, + 36268 - 11905: 0xDA89, + 36269 - 11905: 0xDA8A, + 36270 - 11905: 0xDA8B, + 36271 - 11905: 0xDA8C, + 36272 - 11905: 0xDA8D, + 36273 - 11905: 0xF4F5, + 36274 - 11905: 0xDA8E, + 36275 - 11905: 0xD7E3, + 36276 - 11905: 0xC5BF, + 36277 - 11905: 0xF5C0, + 36278 - 11905: 0xDA8F, + 36279 - 11905: 0xDA90, + 36280 - 11905: 0xF5BB, + 36281 - 11905: 0xDA91, + 36282 - 11905: 0xF5C3, + 36283 - 11905: 0xDA92, + 36284 - 11905: 0xF5C2, + 36285 - 11905: 0xDA93, + 36286 - 11905: 0xD6BA, + 36287 - 11905: 0xF5C1, + 36288 - 11905: 0xDA94, + 36289 - 11905: 0xDA95, + 36290 - 11905: 0xDA96, + 36291 - 11905: 0xD4BE, + 36292 - 11905: 0xF5C4, + 36293 - 11905: 0xDA97, + 36294 - 11905: 0xF5CC, + 36295 - 11905: 0xDA98, + 36296 - 11905: 0xDA99, + 36297 - 11905: 0xDA9A, + 36298 - 11905: 0xDA9B, + 36299 - 11905: 0xB0CF, + 36300 - 11905: 0xB5F8, + 36301 - 11905: 0xDA9C, + 36302 - 11905: 0xF5C9, + 36303 - 11905: 0xF5CA, + 36304 - 11905: 0xDA9D, + 36305 - 11905: 0xC5DC, + 36306 - 11905: 0xDA9E, + 36307 - 11905: 0xDA9F, + 36308 - 11905: 0xDAA0, + 36309 - 11905: 0xDB40, + 36310 - 11905: 0xF5C5, + 36311 - 11905: 0xF5C6, + 36312 - 11905: 0xDB41, + 36313 - 11905: 0xDB42, + 36314 - 11905: 0xF5C7, + 36315 - 11905: 0xF5CB, + 36316 - 11905: 0xDB43, + 36317 - 11905: 0xBEE0, + 36318 - 11905: 0xF5C8, + 36319 - 11905: 0xB8FA, + 36320 - 11905: 0xDB44, + 36321 - 11905: 0xDB45, + 36322 - 11905: 0xDB46, + 36323 - 11905: 0xF5D0, + 36324 - 11905: 0xF5D3, + 36325 - 11905: 0xDB47, + 36326 - 11905: 0xDB48, + 36327 - 11905: 0xDB49, + 36328 - 11905: 0xBFE7, + 36329 - 11905: 0xDB4A, + 36330 - 11905: 0xB9F2, + 36331 - 11905: 0xF5BC, + 36332 - 11905: 0xF5CD, + 36333 - 11905: 0xDB4B, + 36334 - 11905: 0xDB4C, + 36335 - 11905: 0xC2B7, + 36336 - 11905: 0xDB4D, + 36337 - 11905: 0xDB4E, + 36338 - 11905: 0xDB4F, + 36339 - 11905: 0xCCF8, + 36340 - 11905: 0xDB50, + 36341 - 11905: 0xBCF9, + 36342 - 11905: 0xDB51, + 36343 - 11905: 0xF5CE, + 36344 - 11905: 0xF5CF, + 36345 - 11905: 0xF5D1, + 36346 - 11905: 0xB6E5, + 36347 - 11905: 0xF5D2, + 36348 - 11905: 0xDB52, + 36349 - 11905: 0xF5D5, + 36350 - 11905: 0xDB53, + 36351 - 11905: 0xDB54, + 36352 - 11905: 0xDB55, + 36353 - 11905: 0xDB56, + 36354 - 11905: 0xDB57, + 36355 - 11905: 0xDB58, + 36356 - 11905: 0xDB59, + 36357 - 11905: 0xF5BD, + 36358 - 11905: 0xDB5A, + 36359 - 11905: 0xDB5B, + 36360 - 11905: 0xDB5C, + 36361 - 11905: 0xF5D4, + 36362 - 11905: 0xD3BB, + 36363 - 11905: 0xDB5D, + 36364 - 11905: 0xB3EC, + 36365 - 11905: 0xDB5E, + 36366 - 11905: 0xDB5F, + 36367 - 11905: 0xCCA4, + 36368 - 11905: 0xDB60, + 36369 - 11905: 0xDB61, + 36370 - 11905: 0xDB62, + 36371 - 11905: 0xDB63, + 36372 - 11905: 0xF5D6, + 36373 - 11905: 0xDB64, + 36374 - 11905: 0xDB65, + 36375 - 11905: 0xDB66, + 36376 - 11905: 0xDB67, + 36377 - 11905: 0xDB68, + 36378 - 11905: 0xDB69, + 36379 - 11905: 0xDB6A, + 36380 - 11905: 0xDB6B, + 36381 - 11905: 0xF5D7, + 36382 - 11905: 0xBEE1, + 36383 - 11905: 0xF5D8, + 36384 - 11905: 0xDB6C, + 36385 - 11905: 0xDB6D, + 36386 - 11905: 0xCCDF, + 36387 - 11905: 0xF5DB, + 36388 - 11905: 0xDB6E, + 36389 - 11905: 0xDB6F, + 36390 - 11905: 0xDB70, + 36391 - 11905: 0xDB71, + 36392 - 11905: 0xDB72, + 36393 - 11905: 0xB2C8, + 36394 - 11905: 0xD7D9, + 36395 - 11905: 0xDB73, + 36396 - 11905: 0xF5D9, + 36397 - 11905: 0xDB74, + 36398 - 11905: 0xF5DA, + 36399 - 11905: 0xF5DC, + 36400 - 11905: 0xDB75, + 36401 - 11905: 0xF5E2, + 36402 - 11905: 0xDB76, + 36403 - 11905: 0xDB77, + 36404 - 11905: 0xDB78, + 36405 - 11905: 0xF5E0, + 36406 - 11905: 0xDB79, + 36407 - 11905: 0xDB7A, + 36408 - 11905: 0xDB7B, + 36409 - 11905: 0xF5DF, + 36410 - 11905: 0xF5DD, + 36411 - 11905: 0xDB7C, + 36412 - 11905: 0xDB7D, + 36413 - 11905: 0xF5E1, + 36414 - 11905: 0xDB7E, + 36415 - 11905: 0xDB80, + 36416 - 11905: 0xF5DE, + 36417 - 11905: 0xF5E4, + 36418 - 11905: 0xF5E5, + 36419 - 11905: 0xDB81, + 36420 - 11905: 0xCCE3, + 36421 - 11905: 0xDB82, + 36422 - 11905: 0xDB83, + 36423 - 11905: 0xE5BF, + 36424 - 11905: 0xB5B8, + 36425 - 11905: 0xF5E3, + 36426 - 11905: 0xF5E8, + 36427 - 11905: 0xCCA3, + 36428 - 11905: 0xDB84, + 36429 - 11905: 0xDB85, + 36430 - 11905: 0xDB86, + 36431 - 11905: 0xDB87, + 36432 - 11905: 0xDB88, + 36433 - 11905: 0xF5E6, + 36434 - 11905: 0xF5E7, + 36435 - 11905: 0xDB89, + 36436 - 11905: 0xDB8A, + 36437 - 11905: 0xDB8B, + 36438 - 11905: 0xDB8C, + 36439 - 11905: 0xDB8D, + 36440 - 11905: 0xDB8E, + 36441 - 11905: 0xF5BE, + 36442 - 11905: 0xDB8F, + 36443 - 11905: 0xDB90, + 36444 - 11905: 0xDB91, + 36445 - 11905: 0xDB92, + 36446 - 11905: 0xDB93, + 36447 - 11905: 0xDB94, + 36448 - 11905: 0xDB95, + 36449 - 11905: 0xDB96, + 36450 - 11905: 0xDB97, + 36451 - 11905: 0xDB98, + 36452 - 11905: 0xDB99, + 36453 - 11905: 0xDB9A, + 36454 - 11905: 0xB1C4, + 36455 - 11905: 0xDB9B, + 36456 - 11905: 0xDB9C, + 36457 - 11905: 0xF5BF, + 36458 - 11905: 0xDB9D, + 36459 - 11905: 0xDB9E, + 36460 - 11905: 0xB5C5, + 36461 - 11905: 0xB2E4, + 36462 - 11905: 0xDB9F, + 36463 - 11905: 0xF5EC, + 36464 - 11905: 0xF5E9, + 36465 - 11905: 0xDBA0, + 36466 - 11905: 0xB6D7, + 36467 - 11905: 0xDC40, + 36468 - 11905: 0xF5ED, + 36469 - 11905: 0xDC41, + 36470 - 11905: 0xF5EA, + 36471 - 11905: 0xDC42, + 36472 - 11905: 0xDC43, + 36473 - 11905: 0xDC44, + 36474 - 11905: 0xDC45, + 36475 - 11905: 0xDC46, + 36476 - 11905: 0xF5EB, + 36477 - 11905: 0xDC47, + 36478 - 11905: 0xDC48, + 36479 - 11905: 0xB4DA, + 36480 - 11905: 0xDC49, + 36481 - 11905: 0xD4EA, + 36482 - 11905: 0xDC4A, + 36483 - 11905: 0xDC4B, + 36484 - 11905: 0xDC4C, + 36485 - 11905: 0xF5EE, + 36486 - 11905: 0xDC4D, + 36487 - 11905: 0xB3F9, + 36488 - 11905: 0xDC4E, + 36489 - 11905: 0xDC4F, + 36490 - 11905: 0xDC50, + 36491 - 11905: 0xDC51, + 36492 - 11905: 0xDC52, + 36493 - 11905: 0xDC53, + 36494 - 11905: 0xDC54, + 36495 - 11905: 0xF5EF, + 36496 - 11905: 0xF5F1, + 36497 - 11905: 0xDC55, + 36498 - 11905: 0xDC56, + 36499 - 11905: 0xDC57, + 36500 - 11905: 0xF5F0, + 36501 - 11905: 0xDC58, + 36502 - 11905: 0xDC59, + 36503 - 11905: 0xDC5A, + 36504 - 11905: 0xDC5B, + 36505 - 11905: 0xDC5C, + 36506 - 11905: 0xDC5D, + 36507 - 11905: 0xDC5E, + 36508 - 11905: 0xF5F2, + 36509 - 11905: 0xDC5F, + 36510 - 11905: 0xF5F3, + 36511 - 11905: 0xDC60, + 36512 - 11905: 0xDC61, + 36513 - 11905: 0xDC62, + 36514 - 11905: 0xDC63, + 36515 - 11905: 0xDC64, + 36516 - 11905: 0xDC65, + 36517 - 11905: 0xDC66, + 36518 - 11905: 0xDC67, + 36519 - 11905: 0xDC68, + 36520 - 11905: 0xDC69, + 36521 - 11905: 0xDC6A, + 36522 - 11905: 0xDC6B, + 36523 - 11905: 0xC9ED, + 36524 - 11905: 0xB9AA, + 36525 - 11905: 0xDC6C, + 36526 - 11905: 0xDC6D, + 36527 - 11905: 0xC7FB, + 36528 - 11905: 0xDC6E, + 36529 - 11905: 0xDC6F, + 36530 - 11905: 0xB6E3, + 36531 - 11905: 0xDC70, + 36532 - 11905: 0xDC71, + 36533 - 11905: 0xDC72, + 36534 - 11905: 0xDC73, + 36535 - 11905: 0xDC74, + 36536 - 11905: 0xDC75, + 36537 - 11905: 0xDC76, + 36538 - 11905: 0xCCC9, + 36539 - 11905: 0xDC77, + 36540 - 11905: 0xDC78, + 36541 - 11905: 0xDC79, + 36542 - 11905: 0xDC7A, + 36543 - 11905: 0xDC7B, + 36544 - 11905: 0xDC7C, + 36545 - 11905: 0xDC7D, + 36546 - 11905: 0xDC7E, + 36547 - 11905: 0xDC80, + 36548 - 11905: 0xDC81, + 36549 - 11905: 0xDC82, + 36550 - 11905: 0xDC83, + 36551 - 11905: 0xDC84, + 36552 - 11905: 0xDC85, + 36553 - 11905: 0xDC86, + 36554 - 11905: 0xDC87, + 36555 - 11905: 0xDC88, + 36556 - 11905: 0xDC89, + 36557 - 11905: 0xDC8A, + 36558 - 11905: 0xEAA6, + 36559 - 11905: 0xDC8B, + 36560 - 11905: 0xDC8C, + 36561 - 11905: 0xDC8D, + 36562 - 11905: 0xDC8E, + 36563 - 11905: 0xDC8F, + 36564 - 11905: 0xDC90, + 36565 - 11905: 0xDC91, + 36566 - 11905: 0xDC92, + 36567 - 11905: 0xDC93, + 36568 - 11905: 0xDC94, + 36569 - 11905: 0xDC95, + 36570 - 11905: 0xDC96, + 36571 - 11905: 0xDC97, + 36572 - 11905: 0xDC98, + 36573 - 11905: 0xDC99, + 36574 - 11905: 0xDC9A, + 36575 - 11905: 0xDC9B, + 36576 - 11905: 0xDC9C, + 36577 - 11905: 0xDC9D, + 36578 - 11905: 0xDC9E, + 36579 - 11905: 0xDC9F, + 36580 - 11905: 0xDCA0, + 36581 - 11905: 0xDD40, + 36582 - 11905: 0xDD41, + 36583 - 11905: 0xDD42, + 36584 - 11905: 0xDD43, + 36585 - 11905: 0xDD44, + 36586 - 11905: 0xDD45, + 36587 - 11905: 0xDD46, + 36588 - 11905: 0xDD47, + 36589 - 11905: 0xDD48, + 36590 - 11905: 0xDD49, + 36591 - 11905: 0xDD4A, + 36592 - 11905: 0xDD4B, + 36593 - 11905: 0xDD4C, + 36594 - 11905: 0xDD4D, + 36595 - 11905: 0xDD4E, + 36596 - 11905: 0xDD4F, + 36597 - 11905: 0xDD50, + 36598 - 11905: 0xDD51, + 36599 - 11905: 0xDD52, + 36600 - 11905: 0xDD53, + 36601 - 11905: 0xDD54, + 36602 - 11905: 0xDD55, + 36603 - 11905: 0xDD56, + 36604 - 11905: 0xDD57, + 36605 - 11905: 0xDD58, + 36606 - 11905: 0xDD59, + 36607 - 11905: 0xDD5A, + 36608 - 11905: 0xDD5B, + 36609 - 11905: 0xDD5C, + 36610 - 11905: 0xDD5D, + 36611 - 11905: 0xDD5E, + 36612 - 11905: 0xDD5F, + 36613 - 11905: 0xDD60, + 36614 - 11905: 0xDD61, + 36615 - 11905: 0xDD62, + 36616 - 11905: 0xDD63, + 36617 - 11905: 0xDD64, + 36618 - 11905: 0xDD65, + 36619 - 11905: 0xDD66, + 36620 - 11905: 0xDD67, + 36621 - 11905: 0xDD68, + 36622 - 11905: 0xDD69, + 36623 - 11905: 0xDD6A, + 36624 - 11905: 0xDD6B, + 36625 - 11905: 0xDD6C, + 36626 - 11905: 0xDD6D, + 36627 - 11905: 0xDD6E, + 36628 - 11905: 0xDD6F, + 36629 - 11905: 0xDD70, + 36630 - 11905: 0xDD71, + 36631 - 11905: 0xDD72, + 36632 - 11905: 0xDD73, + 36633 - 11905: 0xDD74, + 36634 - 11905: 0xDD75, + 36635 - 11905: 0xDD76, + 36636 - 11905: 0xDD77, + 36637 - 11905: 0xDD78, + 36638 - 11905: 0xDD79, + 36639 - 11905: 0xDD7A, + 36640 - 11905: 0xDD7B, + 36641 - 11905: 0xDD7C, + 36642 - 11905: 0xDD7D, + 36643 - 11905: 0xDD7E, + 36644 - 11905: 0xDD80, + 36645 - 11905: 0xDD81, + 36646 - 11905: 0xDD82, + 36647 - 11905: 0xDD83, + 36648 - 11905: 0xDD84, + 36649 - 11905: 0xDD85, + 36650 - 11905: 0xDD86, + 36651 - 11905: 0xDD87, + 36652 - 11905: 0xDD88, + 36653 - 11905: 0xDD89, + 36654 - 11905: 0xDD8A, + 36655 - 11905: 0xDD8B, + 36656 - 11905: 0xDD8C, + 36657 - 11905: 0xDD8D, + 36658 - 11905: 0xDD8E, + 36659 - 11905: 0xDD8F, + 36660 - 11905: 0xDD90, + 36661 - 11905: 0xDD91, + 36662 - 11905: 0xDD92, + 36663 - 11905: 0xDD93, + 36664 - 11905: 0xDD94, + 36665 - 11905: 0xDD95, + 36666 - 11905: 0xDD96, + 36667 - 11905: 0xDD97, + 36668 - 11905: 0xDD98, + 36669 - 11905: 0xDD99, + 36670 - 11905: 0xDD9A, + 36671 - 11905: 0xDD9B, + 36672 - 11905: 0xDD9C, + 36673 - 11905: 0xDD9D, + 36674 - 11905: 0xDD9E, + 36675 - 11905: 0xDD9F, + 36676 - 11905: 0xDDA0, + 36677 - 11905: 0xDE40, + 36678 - 11905: 0xDE41, + 36679 - 11905: 0xDE42, + 36680 - 11905: 0xDE43, + 36681 - 11905: 0xDE44, + 36682 - 11905: 0xDE45, + 36683 - 11905: 0xDE46, + 36684 - 11905: 0xDE47, + 36685 - 11905: 0xDE48, + 36686 - 11905: 0xDE49, + 36687 - 11905: 0xDE4A, + 36688 - 11905: 0xDE4B, + 36689 - 11905: 0xDE4C, + 36690 - 11905: 0xDE4D, + 36691 - 11905: 0xDE4E, + 36692 - 11905: 0xDE4F, + 36693 - 11905: 0xDE50, + 36694 - 11905: 0xDE51, + 36695 - 11905: 0xDE52, + 36696 - 11905: 0xDE53, + 36697 - 11905: 0xDE54, + 36698 - 11905: 0xDE55, + 36699 - 11905: 0xDE56, + 36700 - 11905: 0xDE57, + 36701 - 11905: 0xDE58, + 36702 - 11905: 0xDE59, + 36703 - 11905: 0xDE5A, + 36704 - 11905: 0xDE5B, + 36705 - 11905: 0xDE5C, + 36706 - 11905: 0xDE5D, + 36707 - 11905: 0xDE5E, + 36708 - 11905: 0xDE5F, + 36709 - 11905: 0xDE60, + 36710 - 11905: 0xB3B5, + 36711 - 11905: 0xD4FE, + 36712 - 11905: 0xB9EC, + 36713 - 11905: 0xD0F9, + 36714 - 11905: 0xDE61, + 36715 - 11905: 0xE9ED, + 36716 - 11905: 0xD7AA, + 36717 - 11905: 0xE9EE, + 36718 - 11905: 0xC2D6, + 36719 - 11905: 0xC8ED, + 36720 - 11905: 0xBAE4, + 36721 - 11905: 0xE9EF, + 36722 - 11905: 0xE9F0, + 36723 - 11905: 0xE9F1, + 36724 - 11905: 0xD6E1, + 36725 - 11905: 0xE9F2, + 36726 - 11905: 0xE9F3, + 36727 - 11905: 0xE9F5, + 36728 - 11905: 0xE9F4, + 36729 - 11905: 0xE9F6, + 36730 - 11905: 0xE9F7, + 36731 - 11905: 0xC7E1, + 36732 - 11905: 0xE9F8, + 36733 - 11905: 0xD4D8, + 36734 - 11905: 0xE9F9, + 36735 - 11905: 0xBDCE, + 36736 - 11905: 0xDE62, + 36737 - 11905: 0xE9FA, + 36738 - 11905: 0xE9FB, + 36739 - 11905: 0xBDCF, + 36740 - 11905: 0xE9FC, + 36741 - 11905: 0xB8A8, + 36742 - 11905: 0xC1BE, + 36743 - 11905: 0xE9FD, + 36744 - 11905: 0xB1B2, + 36745 - 11905: 0xBBD4, + 36746 - 11905: 0xB9F5, + 36747 - 11905: 0xE9FE, + 36748 - 11905: 0xDE63, + 36749 - 11905: 0xEAA1, + 36750 - 11905: 0xEAA2, + 36751 - 11905: 0xEAA3, + 36752 - 11905: 0xB7F8, + 36753 - 11905: 0xBCAD, + 36754 - 11905: 0xDE64, + 36755 - 11905: 0xCAE4, + 36756 - 11905: 0xE0CE, + 36757 - 11905: 0xD4AF, + 36758 - 11905: 0xCFBD, + 36759 - 11905: 0xD5B7, + 36760 - 11905: 0xEAA4, + 36761 - 11905: 0xD5DE, + 36762 - 11905: 0xEAA5, + 36763 - 11905: 0xD0C1, + 36764 - 11905: 0xB9BC, + 36765 - 11905: 0xDE65, + 36766 - 11905: 0xB4C7, + 36767 - 11905: 0xB1D9, + 36768 - 11905: 0xDE66, + 36769 - 11905: 0xDE67, + 36770 - 11905: 0xDE68, + 36771 - 11905: 0xC0B1, + 36772 - 11905: 0xDE69, + 36773 - 11905: 0xDE6A, + 36774 - 11905: 0xDE6B, + 36775 - 11905: 0xDE6C, + 36776 - 11905: 0xB1E6, + 36777 - 11905: 0xB1E7, + 36778 - 11905: 0xDE6D, + 36779 - 11905: 0xB1E8, + 36780 - 11905: 0xDE6E, + 36781 - 11905: 0xDE6F, + 36782 - 11905: 0xDE70, + 36783 - 11905: 0xDE71, + 36784 - 11905: 0xB3BD, + 36785 - 11905: 0xC8E8, + 36786 - 11905: 0xDE72, + 36787 - 11905: 0xDE73, + 36788 - 11905: 0xDE74, + 36789 - 11905: 0xDE75, + 36790 - 11905: 0xE5C1, + 36791 - 11905: 0xDE76, + 36792 - 11905: 0xDE77, + 36793 - 11905: 0xB1DF, + 36794 - 11905: 0xDE78, + 36795 - 11905: 0xDE79, + 36796 - 11905: 0xDE7A, + 36797 - 11905: 0xC1C9, + 36798 - 11905: 0xB4EF, + 36799 - 11905: 0xDE7B, + 36800 - 11905: 0xDE7C, + 36801 - 11905: 0xC7A8, + 36802 - 11905: 0xD3D8, + 36803 - 11905: 0xDE7D, + 36804 - 11905: 0xC6F9, + 36805 - 11905: 0xD1B8, + 36806 - 11905: 0xDE7E, + 36807 - 11905: 0xB9FD, + 36808 - 11905: 0xC2F5, + 36809 - 11905: 0xDE80, + 36810 - 11905: 0xDE81, + 36811 - 11905: 0xDE82, + 36812 - 11905: 0xDE83, + 36813 - 11905: 0xDE84, + 36814 - 11905: 0xD3AD, + 36815 - 11905: 0xDE85, + 36816 - 11905: 0xD4CB, + 36817 - 11905: 0xBDFC, + 36818 - 11905: 0xDE86, + 36819 - 11905: 0xE5C2, + 36820 - 11905: 0xB7B5, + 36821 - 11905: 0xE5C3, + 36822 - 11905: 0xDE87, + 36823 - 11905: 0xDE88, + 36824 - 11905: 0xBBB9, + 36825 - 11905: 0xD5E2, + 36826 - 11905: 0xDE89, + 36827 - 11905: 0xBDF8, + 36828 - 11905: 0xD4B6, + 36829 - 11905: 0xCEA5, + 36830 - 11905: 0xC1AC, + 36831 - 11905: 0xB3D9, + 36832 - 11905: 0xDE8A, + 36833 - 11905: 0xDE8B, + 36834 - 11905: 0xCCF6, + 36835 - 11905: 0xDE8C, + 36836 - 11905: 0xE5C6, + 36837 - 11905: 0xE5C4, + 36838 - 11905: 0xE5C8, + 36839 - 11905: 0xDE8D, + 36840 - 11905: 0xE5CA, + 36841 - 11905: 0xE5C7, + 36842 - 11905: 0xB5CF, + 36843 - 11905: 0xC6C8, + 36844 - 11905: 0xDE8E, + 36845 - 11905: 0xB5FC, + 36846 - 11905: 0xE5C5, + 36847 - 11905: 0xDE8F, + 36848 - 11905: 0xCAF6, + 36849 - 11905: 0xDE90, + 36850 - 11905: 0xDE91, + 36851 - 11905: 0xE5C9, + 36852 - 11905: 0xDE92, + 36853 - 11905: 0xDE93, + 36854 - 11905: 0xDE94, + 36855 - 11905: 0xC3D4, + 36856 - 11905: 0xB1C5, + 36857 - 11905: 0xBCA3, + 36858 - 11905: 0xDE95, + 36859 - 11905: 0xDE96, + 36860 - 11905: 0xDE97, + 36861 - 11905: 0xD7B7, + 36862 - 11905: 0xDE98, + 36863 - 11905: 0xDE99, + 36864 - 11905: 0xCDCB, + 36865 - 11905: 0xCBCD, + 36866 - 11905: 0xCACA, + 36867 - 11905: 0xCCD3, + 36868 - 11905: 0xE5CC, + 36869 - 11905: 0xE5CB, + 36870 - 11905: 0xC4E6, + 36871 - 11905: 0xDE9A, + 36872 - 11905: 0xDE9B, + 36873 - 11905: 0xD1A1, + 36874 - 11905: 0xD1B7, + 36875 - 11905: 0xE5CD, + 36876 - 11905: 0xDE9C, + 36877 - 11905: 0xE5D0, + 36878 - 11905: 0xDE9D, + 36879 - 11905: 0xCDB8, + 36880 - 11905: 0xD6F0, + 36881 - 11905: 0xE5CF, + 36882 - 11905: 0xB5DD, + 36883 - 11905: 0xDE9E, + 36884 - 11905: 0xCDBE, + 36885 - 11905: 0xDE9F, + 36886 - 11905: 0xE5D1, + 36887 - 11905: 0xB6BA, + 36888 - 11905: 0xDEA0, + 36889 - 11905: 0xDF40, + 36890 - 11905: 0xCDA8, + 36891 - 11905: 0xB9E4, + 36892 - 11905: 0xDF41, + 36893 - 11905: 0xCAC5, + 36894 - 11905: 0xB3D1, + 36895 - 11905: 0xCBD9, + 36896 - 11905: 0xD4EC, + 36897 - 11905: 0xE5D2, + 36898 - 11905: 0xB7EA, + 36899 - 11905: 0xDF42, + 36900 - 11905: 0xDF43, + 36901 - 11905: 0xDF44, + 36902 - 11905: 0xE5CE, + 36903 - 11905: 0xDF45, + 36904 - 11905: 0xDF46, + 36905 - 11905: 0xDF47, + 36906 - 11905: 0xDF48, + 36907 - 11905: 0xDF49, + 36908 - 11905: 0xDF4A, + 36909 - 11905: 0xE5D5, + 36910 - 11905: 0xB4FE, + 36911 - 11905: 0xE5D6, + 36912 - 11905: 0xDF4B, + 36913 - 11905: 0xDF4C, + 36914 - 11905: 0xDF4D, + 36915 - 11905: 0xDF4E, + 36916 - 11905: 0xDF4F, + 36917 - 11905: 0xE5D3, + 36918 - 11905: 0xE5D4, + 36919 - 11905: 0xDF50, + 36920 - 11905: 0xD2DD, + 36921 - 11905: 0xDF51, + 36922 - 11905: 0xDF52, + 36923 - 11905: 0xC2DF, + 36924 - 11905: 0xB1C6, + 36925 - 11905: 0xDF53, + 36926 - 11905: 0xD3E2, + 36927 - 11905: 0xDF54, + 36928 - 11905: 0xDF55, + 36929 - 11905: 0xB6DD, + 36930 - 11905: 0xCBEC, + 36931 - 11905: 0xDF56, + 36932 - 11905: 0xE5D7, + 36933 - 11905: 0xDF57, + 36934 - 11905: 0xDF58, + 36935 - 11905: 0xD3F6, + 36936 - 11905: 0xDF59, + 36937 - 11905: 0xDF5A, + 36938 - 11905: 0xDF5B, + 36939 - 11905: 0xDF5C, + 36940 - 11905: 0xDF5D, + 36941 - 11905: 0xB1E9, + 36942 - 11905: 0xDF5E, + 36943 - 11905: 0xB6F4, + 36944 - 11905: 0xE5DA, + 36945 - 11905: 0xE5D8, + 36946 - 11905: 0xE5D9, + 36947 - 11905: 0xB5C0, + 36948 - 11905: 0xDF5F, + 36949 - 11905: 0xDF60, + 36950 - 11905: 0xDF61, + 36951 - 11905: 0xD2C5, + 36952 - 11905: 0xE5DC, + 36953 - 11905: 0xDF62, + 36954 - 11905: 0xDF63, + 36955 - 11905: 0xE5DE, + 36956 - 11905: 0xDF64, + 36957 - 11905: 0xDF65, + 36958 - 11905: 0xDF66, + 36959 - 11905: 0xDF67, + 36960 - 11905: 0xDF68, + 36961 - 11905: 0xDF69, + 36962 - 11905: 0xE5DD, + 36963 - 11905: 0xC7B2, + 36964 - 11905: 0xDF6A, + 36965 - 11905: 0xD2A3, + 36966 - 11905: 0xDF6B, + 36967 - 11905: 0xDF6C, + 36968 - 11905: 0xE5DB, + 36969 - 11905: 0xDF6D, + 36970 - 11905: 0xDF6E, + 36971 - 11905: 0xDF6F, + 36972 - 11905: 0xDF70, + 36973 - 11905: 0xD4E2, + 36974 - 11905: 0xD5DA, + 36975 - 11905: 0xDF71, + 36976 - 11905: 0xDF72, + 36977 - 11905: 0xDF73, + 36978 - 11905: 0xDF74, + 36979 - 11905: 0xDF75, + 36980 - 11905: 0xE5E0, + 36981 - 11905: 0xD7F1, + 36982 - 11905: 0xDF76, + 36983 - 11905: 0xDF77, + 36984 - 11905: 0xDF78, + 36985 - 11905: 0xDF79, + 36986 - 11905: 0xDF7A, + 36987 - 11905: 0xDF7B, + 36988 - 11905: 0xDF7C, + 36989 - 11905: 0xE5E1, + 36990 - 11905: 0xDF7D, + 36991 - 11905: 0xB1DC, + 36992 - 11905: 0xD1FB, + 36993 - 11905: 0xDF7E, + 36994 - 11905: 0xE5E2, + 36995 - 11905: 0xE5E4, + 36996 - 11905: 0xDF80, + 36997 - 11905: 0xDF81, + 36998 - 11905: 0xDF82, + 36999 - 11905: 0xDF83, + 37000 - 11905: 0xE5E3, + 37001 - 11905: 0xDF84, + 37002 - 11905: 0xDF85, + 37003 - 11905: 0xE5E5, + 37004 - 11905: 0xDF86, + 37005 - 11905: 0xDF87, + 37006 - 11905: 0xDF88, + 37007 - 11905: 0xDF89, + 37008 - 11905: 0xDF8A, + 37009 - 11905: 0xD2D8, + 37010 - 11905: 0xDF8B, + 37011 - 11905: 0xB5CB, + 37012 - 11905: 0xDF8C, + 37013 - 11905: 0xE7DF, + 37014 - 11905: 0xDF8D, + 37015 - 11905: 0xDAF5, + 37016 - 11905: 0xDF8E, + 37017 - 11905: 0xDAF8, + 37018 - 11905: 0xDF8F, + 37019 - 11905: 0xDAF6, + 37020 - 11905: 0xDF90, + 37021 - 11905: 0xDAF7, + 37022 - 11905: 0xDF91, + 37023 - 11905: 0xDF92, + 37024 - 11905: 0xDF93, + 37025 - 11905: 0xDAFA, + 37026 - 11905: 0xD0CF, + 37027 - 11905: 0xC4C7, + 37028 - 11905: 0xDF94, + 37029 - 11905: 0xDF95, + 37030 - 11905: 0xB0EE, + 37031 - 11905: 0xDF96, + 37032 - 11905: 0xDF97, + 37033 - 11905: 0xDF98, + 37034 - 11905: 0xD0B0, + 37035 - 11905: 0xDF99, + 37036 - 11905: 0xDAF9, + 37037 - 11905: 0xDF9A, + 37038 - 11905: 0xD3CA, + 37039 - 11905: 0xBAAA, + 37040 - 11905: 0xDBA2, + 37041 - 11905: 0xC7F1, + 37042 - 11905: 0xDF9B, + 37043 - 11905: 0xDAFC, + 37044 - 11905: 0xDAFB, + 37045 - 11905: 0xC9DB, + 37046 - 11905: 0xDAFD, + 37047 - 11905: 0xDF9C, + 37048 - 11905: 0xDBA1, + 37049 - 11905: 0xD7DE, + 37050 - 11905: 0xDAFE, + 37051 - 11905: 0xC1DA, + 37052 - 11905: 0xDF9D, + 37053 - 11905: 0xDF9E, + 37054 - 11905: 0xDBA5, + 37055 - 11905: 0xDF9F, + 37056 - 11905: 0xDFA0, + 37057 - 11905: 0xD3F4, + 37058 - 11905: 0xE040, + 37059 - 11905: 0xE041, + 37060 - 11905: 0xDBA7, + 37061 - 11905: 0xDBA4, + 37062 - 11905: 0xE042, + 37063 - 11905: 0xDBA8, + 37064 - 11905: 0xE043, + 37065 - 11905: 0xE044, + 37066 - 11905: 0xBDBC, + 37067 - 11905: 0xE045, + 37068 - 11905: 0xE046, + 37069 - 11905: 0xE047, + 37070 - 11905: 0xC0C9, + 37071 - 11905: 0xDBA3, + 37072 - 11905: 0xDBA6, + 37073 - 11905: 0xD6A3, + 37074 - 11905: 0xE048, + 37075 - 11905: 0xDBA9, + 37076 - 11905: 0xE049, + 37077 - 11905: 0xE04A, + 37078 - 11905: 0xE04B, + 37079 - 11905: 0xDBAD, + 37080 - 11905: 0xE04C, + 37081 - 11905: 0xE04D, + 37082 - 11905: 0xE04E, + 37083 - 11905: 0xDBAE, + 37084 - 11905: 0xDBAC, + 37085 - 11905: 0xBAC2, + 37086 - 11905: 0xE04F, + 37087 - 11905: 0xE050, + 37088 - 11905: 0xE051, + 37089 - 11905: 0xBFA4, + 37090 - 11905: 0xDBAB, + 37091 - 11905: 0xE052, + 37092 - 11905: 0xE053, + 37093 - 11905: 0xE054, + 37094 - 11905: 0xDBAA, + 37095 - 11905: 0xD4C7, + 37096 - 11905: 0xB2BF, + 37097 - 11905: 0xE055, + 37098 - 11905: 0xE056, + 37099 - 11905: 0xDBAF, + 37100 - 11905: 0xE057, + 37101 - 11905: 0xB9F9, + 37102 - 11905: 0xE058, + 37103 - 11905: 0xDBB0, + 37104 - 11905: 0xE059, + 37105 - 11905: 0xE05A, + 37106 - 11905: 0xE05B, + 37107 - 11905: 0xE05C, + 37108 - 11905: 0xB3BB, + 37109 - 11905: 0xE05D, + 37110 - 11905: 0xE05E, + 37111 - 11905: 0xE05F, + 37112 - 11905: 0xB5A6, + 37113 - 11905: 0xE060, + 37114 - 11905: 0xE061, + 37115 - 11905: 0xE062, + 37116 - 11905: 0xE063, + 37117 - 11905: 0xB6BC, + 37118 - 11905: 0xDBB1, + 37119 - 11905: 0xE064, + 37120 - 11905: 0xE065, + 37121 - 11905: 0xE066, + 37122 - 11905: 0xB6F5, + 37123 - 11905: 0xE067, + 37124 - 11905: 0xDBB2, + 37125 - 11905: 0xE068, + 37126 - 11905: 0xE069, + 37127 - 11905: 0xE06A, + 37128 - 11905: 0xE06B, + 37129 - 11905: 0xE06C, + 37130 - 11905: 0xE06D, + 37131 - 11905: 0xE06E, + 37132 - 11905: 0xE06F, + 37133 - 11905: 0xE070, + 37134 - 11905: 0xE071, + 37135 - 11905: 0xE072, + 37136 - 11905: 0xE073, + 37137 - 11905: 0xE074, + 37138 - 11905: 0xE075, + 37139 - 11905: 0xE076, + 37140 - 11905: 0xE077, + 37141 - 11905: 0xE078, + 37142 - 11905: 0xE079, + 37143 - 11905: 0xE07A, + 37144 - 11905: 0xE07B, + 37145 - 11905: 0xB1C9, + 37146 - 11905: 0xE07C, + 37147 - 11905: 0xE07D, + 37148 - 11905: 0xE07E, + 37149 - 11905: 0xE080, + 37150 - 11905: 0xDBB4, + 37151 - 11905: 0xE081, + 37152 - 11905: 0xE082, + 37153 - 11905: 0xE083, + 37154 - 11905: 0xDBB3, + 37155 - 11905: 0xDBB5, + 37156 - 11905: 0xE084, + 37157 - 11905: 0xE085, + 37158 - 11905: 0xE086, + 37159 - 11905: 0xE087, + 37160 - 11905: 0xE088, + 37161 - 11905: 0xE089, + 37162 - 11905: 0xE08A, + 37163 - 11905: 0xE08B, + 37164 - 11905: 0xE08C, + 37165 - 11905: 0xE08D, + 37166 - 11905: 0xE08E, + 37167 - 11905: 0xDBB7, + 37168 - 11905: 0xE08F, + 37169 - 11905: 0xDBB6, + 37170 - 11905: 0xE090, + 37171 - 11905: 0xE091, + 37172 - 11905: 0xE092, + 37173 - 11905: 0xE093, + 37174 - 11905: 0xE094, + 37175 - 11905: 0xE095, + 37176 - 11905: 0xE096, + 37177 - 11905: 0xDBB8, + 37178 - 11905: 0xE097, + 37179 - 11905: 0xE098, + 37180 - 11905: 0xE099, + 37181 - 11905: 0xE09A, + 37182 - 11905: 0xE09B, + 37183 - 11905: 0xE09C, + 37184 - 11905: 0xE09D, + 37185 - 11905: 0xE09E, + 37186 - 11905: 0xE09F, + 37187 - 11905: 0xDBB9, + 37188 - 11905: 0xE0A0, + 37189 - 11905: 0xE140, + 37190 - 11905: 0xDBBA, + 37191 - 11905: 0xE141, + 37192 - 11905: 0xE142, + 37193 - 11905: 0xD3CF, + 37194 - 11905: 0xF4FA, + 37195 - 11905: 0xC7F5, + 37196 - 11905: 0xD7C3, + 37197 - 11905: 0xC5E4, + 37198 - 11905: 0xF4FC, + 37199 - 11905: 0xF4FD, + 37200 - 11905: 0xF4FB, + 37201 - 11905: 0xE143, + 37202 - 11905: 0xBEC6, + 37203 - 11905: 0xE144, + 37204 - 11905: 0xE145, + 37205 - 11905: 0xE146, + 37206 - 11905: 0xE147, + 37207 - 11905: 0xD0EF, + 37208 - 11905: 0xE148, + 37209 - 11905: 0xE149, + 37210 - 11905: 0xB7D3, + 37211 - 11905: 0xE14A, + 37212 - 11905: 0xE14B, + 37213 - 11905: 0xD4CD, + 37214 - 11905: 0xCCAA, + 37215 - 11905: 0xE14C, + 37216 - 11905: 0xE14D, + 37217 - 11905: 0xF5A2, + 37218 - 11905: 0xF5A1, + 37219 - 11905: 0xBAA8, + 37220 - 11905: 0xF4FE, + 37221 - 11905: 0xCBD6, + 37222 - 11905: 0xE14E, + 37223 - 11905: 0xE14F, + 37224 - 11905: 0xE150, + 37225 - 11905: 0xF5A4, + 37226 - 11905: 0xC0D2, + 37227 - 11905: 0xE151, + 37228 - 11905: 0xB3EA, + 37229 - 11905: 0xE152, + 37230 - 11905: 0xCDAA, + 37231 - 11905: 0xF5A5, + 37232 - 11905: 0xF5A3, + 37233 - 11905: 0xBDB4, + 37234 - 11905: 0xF5A8, + 37235 - 11905: 0xE153, + 37236 - 11905: 0xF5A9, + 37237 - 11905: 0xBDCD, + 37238 - 11905: 0xC3B8, + 37239 - 11905: 0xBFE1, + 37240 - 11905: 0xCBE1, + 37241 - 11905: 0xF5AA, + 37242 - 11905: 0xE154, + 37243 - 11905: 0xE155, + 37244 - 11905: 0xE156, + 37245 - 11905: 0xF5A6, + 37246 - 11905: 0xF5A7, + 37247 - 11905: 0xC4F0, + 37248 - 11905: 0xE157, + 37249 - 11905: 0xE158, + 37250 - 11905: 0xE159, + 37251 - 11905: 0xE15A, + 37252 - 11905: 0xE15B, + 37253 - 11905: 0xF5AC, + 37254 - 11905: 0xE15C, + 37255 - 11905: 0xB4BC, + 37256 - 11905: 0xE15D, + 37257 - 11905: 0xD7ED, + 37258 - 11905: 0xE15E, + 37259 - 11905: 0xB4D7, + 37260 - 11905: 0xF5AB, + 37261 - 11905: 0xF5AE, + 37262 - 11905: 0xE15F, + 37263 - 11905: 0xE160, + 37264 - 11905: 0xF5AD, + 37265 - 11905: 0xF5AF, + 37266 - 11905: 0xD0D1, + 37267 - 11905: 0xE161, + 37268 - 11905: 0xE162, + 37269 - 11905: 0xE163, + 37270 - 11905: 0xE164, + 37271 - 11905: 0xE165, + 37272 - 11905: 0xE166, + 37273 - 11905: 0xE167, + 37274 - 11905: 0xC3D1, + 37275 - 11905: 0xC8A9, + 37276 - 11905: 0xE168, + 37277 - 11905: 0xE169, + 37278 - 11905: 0xE16A, + 37279 - 11905: 0xE16B, + 37280 - 11905: 0xE16C, + 37281 - 11905: 0xE16D, + 37282 - 11905: 0xF5B0, + 37283 - 11905: 0xF5B1, + 37284 - 11905: 0xE16E, + 37285 - 11905: 0xE16F, + 37286 - 11905: 0xE170, + 37287 - 11905: 0xE171, + 37288 - 11905: 0xE172, + 37289 - 11905: 0xE173, + 37290 - 11905: 0xF5B2, + 37291 - 11905: 0xE174, + 37292 - 11905: 0xE175, + 37293 - 11905: 0xF5B3, + 37294 - 11905: 0xF5B4, + 37295 - 11905: 0xF5B5, + 37296 - 11905: 0xE176, + 37297 - 11905: 0xE177, + 37298 - 11905: 0xE178, + 37299 - 11905: 0xE179, + 37300 - 11905: 0xF5B7, + 37301 - 11905: 0xF5B6, + 37302 - 11905: 0xE17A, + 37303 - 11905: 0xE17B, + 37304 - 11905: 0xE17C, + 37305 - 11905: 0xE17D, + 37306 - 11905: 0xF5B8, + 37307 - 11905: 0xE17E, + 37308 - 11905: 0xE180, + 37309 - 11905: 0xE181, + 37310 - 11905: 0xE182, + 37311 - 11905: 0xE183, + 37312 - 11905: 0xE184, + 37313 - 11905: 0xE185, + 37314 - 11905: 0xE186, + 37315 - 11905: 0xE187, + 37316 - 11905: 0xE188, + 37317 - 11905: 0xE189, + 37318 - 11905: 0xE18A, + 37319 - 11905: 0xB2C9, + 37320 - 11905: 0xE18B, + 37321 - 11905: 0xD3D4, + 37322 - 11905: 0xCACD, + 37323 - 11905: 0xE18C, + 37324 - 11905: 0xC0EF, + 37325 - 11905: 0xD6D8, + 37326 - 11905: 0xD2B0, + 37327 - 11905: 0xC1BF, + 37328 - 11905: 0xE18D, + 37329 - 11905: 0xBDF0, + 37330 - 11905: 0xE18E, + 37331 - 11905: 0xE18F, + 37332 - 11905: 0xE190, + 37333 - 11905: 0xE191, + 37334 - 11905: 0xE192, + 37335 - 11905: 0xE193, + 37336 - 11905: 0xE194, + 37337 - 11905: 0xE195, + 37338 - 11905: 0xE196, + 37339 - 11905: 0xE197, + 37340 - 11905: 0xB8AA, + 37341 - 11905: 0xE198, + 37342 - 11905: 0xE199, + 37343 - 11905: 0xE19A, + 37344 - 11905: 0xE19B, + 37345 - 11905: 0xE19C, + 37346 - 11905: 0xE19D, + 37347 - 11905: 0xE19E, + 37348 - 11905: 0xE19F, + 37349 - 11905: 0xE1A0, + 37350 - 11905: 0xE240, + 37351 - 11905: 0xE241, + 37352 - 11905: 0xE242, + 37353 - 11905: 0xE243, + 37354 - 11905: 0xE244, + 37355 - 11905: 0xE245, + 37356 - 11905: 0xE246, + 37357 - 11905: 0xE247, + 37358 - 11905: 0xE248, + 37359 - 11905: 0xE249, + 37360 - 11905: 0xE24A, + 37361 - 11905: 0xE24B, + 37362 - 11905: 0xE24C, + 37363 - 11905: 0xE24D, + 37364 - 11905: 0xE24E, + 37365 - 11905: 0xE24F, + 37366 - 11905: 0xE250, + 37367 - 11905: 0xE251, + 37368 - 11905: 0xE252, + 37369 - 11905: 0xE253, + 37370 - 11905: 0xE254, + 37371 - 11905: 0xE255, + 37372 - 11905: 0xE256, + 37373 - 11905: 0xE257, + 37374 - 11905: 0xE258, + 37375 - 11905: 0xE259, + 37376 - 11905: 0xE25A, + 37377 - 11905: 0xE25B, + 37378 - 11905: 0xE25C, + 37379 - 11905: 0xE25D, + 37380 - 11905: 0xE25E, + 37381 - 11905: 0xE25F, + 37382 - 11905: 0xE260, + 37383 - 11905: 0xE261, + 37384 - 11905: 0xE262, + 37385 - 11905: 0xE263, + 37386 - 11905: 0xE264, + 37387 - 11905: 0xE265, + 37388 - 11905: 0xE266, + 37389 - 11905: 0xE267, + 37390 - 11905: 0xE268, + 37391 - 11905: 0xE269, + 37392 - 11905: 0xE26A, + 37393 - 11905: 0xE26B, + 37394 - 11905: 0xE26C, + 37395 - 11905: 0xE26D, + 37396 - 11905: 0xE26E, + 37397 - 11905: 0xE26F, + 37398 - 11905: 0xE270, + 37399 - 11905: 0xE271, + 37400 - 11905: 0xE272, + 37401 - 11905: 0xE273, + 37402 - 11905: 0xE274, + 37403 - 11905: 0xE275, + 37404 - 11905: 0xE276, + 37405 - 11905: 0xE277, + 37406 - 11905: 0xE278, + 37407 - 11905: 0xE279, + 37408 - 11905: 0xE27A, + 37409 - 11905: 0xE27B, + 37410 - 11905: 0xE27C, + 37411 - 11905: 0xE27D, + 37412 - 11905: 0xE27E, + 37413 - 11905: 0xE280, + 37414 - 11905: 0xE281, + 37415 - 11905: 0xE282, + 37416 - 11905: 0xE283, + 37417 - 11905: 0xE284, + 37418 - 11905: 0xE285, + 37419 - 11905: 0xE286, + 37420 - 11905: 0xE287, + 37421 - 11905: 0xE288, + 37422 - 11905: 0xE289, + 37423 - 11905: 0xE28A, + 37424 - 11905: 0xE28B, + 37425 - 11905: 0xE28C, + 37426 - 11905: 0xE28D, + 37427 - 11905: 0xE28E, + 37428 - 11905: 0xE28F, + 37429 - 11905: 0xE290, + 37430 - 11905: 0xE291, + 37431 - 11905: 0xE292, + 37432 - 11905: 0xE293, + 37433 - 11905: 0xE294, + 37434 - 11905: 0xE295, + 37435 - 11905: 0xE296, + 37436 - 11905: 0xE297, + 37437 - 11905: 0xE298, + 37438 - 11905: 0xE299, + 37439 - 11905: 0xE29A, + 37440 - 11905: 0xE29B, + 37441 - 11905: 0xE29C, + 37442 - 11905: 0xE29D, + 37443 - 11905: 0xE29E, + 37444 - 11905: 0xE29F, + 37445 - 11905: 0xE2A0, + 37446 - 11905: 0xE340, + 37447 - 11905: 0xE341, + 37448 - 11905: 0xE342, + 37449 - 11905: 0xE343, + 37450 - 11905: 0xE344, + 37451 - 11905: 0xE345, + 37452 - 11905: 0xE346, + 37453 - 11905: 0xE347, + 37454 - 11905: 0xE348, + 37455 - 11905: 0xE349, + 37456 - 11905: 0xE34A, + 37457 - 11905: 0xE34B, + 37458 - 11905: 0xE34C, + 37459 - 11905: 0xE34D, + 37460 - 11905: 0xE34E, + 37461 - 11905: 0xE34F, + 37462 - 11905: 0xE350, + 37463 - 11905: 0xE351, + 37464 - 11905: 0xE352, + 37465 - 11905: 0xE353, + 37466 - 11905: 0xE354, + 37467 - 11905: 0xE355, + 37468 - 11905: 0xE356, + 37469 - 11905: 0xE357, + 37470 - 11905: 0xE358, + 37471 - 11905: 0xE359, + 37472 - 11905: 0xE35A, + 37473 - 11905: 0xE35B, + 37474 - 11905: 0xE35C, + 37475 - 11905: 0xE35D, + 37476 - 11905: 0xE35E, + 37477 - 11905: 0xE35F, + 37478 - 11905: 0xE360, + 37479 - 11905: 0xE361, + 37480 - 11905: 0xE362, + 37481 - 11905: 0xE363, + 37482 - 11905: 0xE364, + 37483 - 11905: 0xE365, + 37484 - 11905: 0xE366, + 37485 - 11905: 0xE367, + 37486 - 11905: 0xE368, + 37487 - 11905: 0xE369, + 37488 - 11905: 0xE36A, + 37489 - 11905: 0xE36B, + 37490 - 11905: 0xE36C, + 37491 - 11905: 0xE36D, + 37492 - 11905: 0xBCF8, + 37493 - 11905: 0xE36E, + 37494 - 11905: 0xE36F, + 37495 - 11905: 0xE370, + 37496 - 11905: 0xE371, + 37497 - 11905: 0xE372, + 37498 - 11905: 0xE373, + 37499 - 11905: 0xE374, + 37500 - 11905: 0xE375, + 37501 - 11905: 0xE376, + 37502 - 11905: 0xE377, + 37503 - 11905: 0xE378, + 37504 - 11905: 0xE379, + 37505 - 11905: 0xE37A, + 37506 - 11905: 0xE37B, + 37507 - 11905: 0xE37C, + 37508 - 11905: 0xE37D, + 37509 - 11905: 0xE37E, + 37510 - 11905: 0xE380, + 37511 - 11905: 0xE381, + 37512 - 11905: 0xE382, + 37513 - 11905: 0xE383, + 37514 - 11905: 0xE384, + 37515 - 11905: 0xE385, + 37516 - 11905: 0xE386, + 37517 - 11905: 0xE387, + 37518 - 11905: 0xF6C6, + 37519 - 11905: 0xE388, + 37520 - 11905: 0xE389, + 37521 - 11905: 0xE38A, + 37522 - 11905: 0xE38B, + 37523 - 11905: 0xE38C, + 37524 - 11905: 0xE38D, + 37525 - 11905: 0xE38E, + 37526 - 11905: 0xE38F, + 37527 - 11905: 0xE390, + 37528 - 11905: 0xE391, + 37529 - 11905: 0xE392, + 37530 - 11905: 0xE393, + 37531 - 11905: 0xE394, + 37532 - 11905: 0xE395, + 37533 - 11905: 0xE396, + 37534 - 11905: 0xE397, + 37535 - 11905: 0xE398, + 37536 - 11905: 0xE399, + 37537 - 11905: 0xE39A, + 37538 - 11905: 0xE39B, + 37539 - 11905: 0xE39C, + 37540 - 11905: 0xE39D, + 37541 - 11905: 0xE39E, + 37542 - 11905: 0xE39F, + 37543 - 11905: 0xE3A0, + 37544 - 11905: 0xE440, + 37545 - 11905: 0xE441, + 37546 - 11905: 0xE442, + 37547 - 11905: 0xE443, + 37548 - 11905: 0xE444, + 37549 - 11905: 0xE445, + 37550 - 11905: 0xF6C7, + 37551 - 11905: 0xE446, + 37552 - 11905: 0xE447, + 37553 - 11905: 0xE448, + 37554 - 11905: 0xE449, + 37555 - 11905: 0xE44A, + 37556 - 11905: 0xE44B, + 37557 - 11905: 0xE44C, + 37558 - 11905: 0xE44D, + 37559 - 11905: 0xE44E, + 37560 - 11905: 0xE44F, + 37561 - 11905: 0xE450, + 37562 - 11905: 0xE451, + 37563 - 11905: 0xE452, + 37564 - 11905: 0xE453, + 37565 - 11905: 0xE454, + 37566 - 11905: 0xE455, + 37567 - 11905: 0xE456, + 37568 - 11905: 0xE457, + 37569 - 11905: 0xE458, + 37570 - 11905: 0xE459, + 37571 - 11905: 0xE45A, + 37572 - 11905: 0xE45B, + 37573 - 11905: 0xE45C, + 37574 - 11905: 0xE45D, + 37575 - 11905: 0xE45E, + 37576 - 11905: 0xF6C8, + 37577 - 11905: 0xE45F, + 37578 - 11905: 0xE460, + 37579 - 11905: 0xE461, + 37580 - 11905: 0xE462, + 37581 - 11905: 0xE463, + 37582 - 11905: 0xE464, + 37583 - 11905: 0xE465, + 37584 - 11905: 0xE466, + 37585 - 11905: 0xE467, + 37586 - 11905: 0xE468, + 37587 - 11905: 0xE469, + 37588 - 11905: 0xE46A, + 37589 - 11905: 0xE46B, + 37590 - 11905: 0xE46C, + 37591 - 11905: 0xE46D, + 37592 - 11905: 0xE46E, + 37593 - 11905: 0xE46F, + 37594 - 11905: 0xE470, + 37595 - 11905: 0xE471, + 37596 - 11905: 0xE472, + 37597 - 11905: 0xE473, + 37598 - 11905: 0xE474, + 37599 - 11905: 0xE475, + 37600 - 11905: 0xE476, + 37601 - 11905: 0xE477, + 37602 - 11905: 0xE478, + 37603 - 11905: 0xE479, + 37604 - 11905: 0xE47A, + 37605 - 11905: 0xE47B, + 37606 - 11905: 0xE47C, + 37607 - 11905: 0xE47D, + 37608 - 11905: 0xE47E, + 37609 - 11905: 0xE480, + 37610 - 11905: 0xE481, + 37611 - 11905: 0xE482, + 37612 - 11905: 0xE483, + 37613 - 11905: 0xE484, + 37614 - 11905: 0xE485, + 37615 - 11905: 0xE486, + 37616 - 11905: 0xE487, + 37617 - 11905: 0xE488, + 37618 - 11905: 0xE489, + 37619 - 11905: 0xE48A, + 37620 - 11905: 0xE48B, + 37621 - 11905: 0xE48C, + 37622 - 11905: 0xE48D, + 37623 - 11905: 0xE48E, + 37624 - 11905: 0xE48F, + 37625 - 11905: 0xE490, + 37626 - 11905: 0xE491, + 37627 - 11905: 0xE492, + 37628 - 11905: 0xE493, + 37629 - 11905: 0xE494, + 37630 - 11905: 0xE495, + 37631 - 11905: 0xE496, + 37632 - 11905: 0xE497, + 37633 - 11905: 0xE498, + 37634 - 11905: 0xE499, + 37635 - 11905: 0xE49A, + 37636 - 11905: 0xE49B, + 37637 - 11905: 0xE49C, + 37638 - 11905: 0xE49D, + 37639 - 11905: 0xE49E, + 37640 - 11905: 0xE49F, + 37641 - 11905: 0xE4A0, + 37642 - 11905: 0xE540, + 37643 - 11905: 0xE541, + 37644 - 11905: 0xE542, + 37645 - 11905: 0xE543, + 37646 - 11905: 0xE544, + 37647 - 11905: 0xE545, + 37648 - 11905: 0xE546, + 37649 - 11905: 0xE547, + 37650 - 11905: 0xE548, + 37651 - 11905: 0xE549, + 37652 - 11905: 0xE54A, + 37653 - 11905: 0xE54B, + 37654 - 11905: 0xE54C, + 37655 - 11905: 0xE54D, + 37656 - 11905: 0xE54E, + 37657 - 11905: 0xE54F, + 37658 - 11905: 0xE550, + 37659 - 11905: 0xE551, + 37660 - 11905: 0xE552, + 37661 - 11905: 0xE553, + 37662 - 11905: 0xE554, + 37663 - 11905: 0xE555, + 37664 - 11905: 0xE556, + 37665 - 11905: 0xE557, + 37666 - 11905: 0xE558, + 37667 - 11905: 0xE559, + 37668 - 11905: 0xE55A, + 37669 - 11905: 0xE55B, + 37670 - 11905: 0xE55C, + 37671 - 11905: 0xE55D, + 37672 - 11905: 0xE55E, + 37673 - 11905: 0xE55F, + 37674 - 11905: 0xE560, + 37675 - 11905: 0xE561, + 37676 - 11905: 0xE562, + 37677 - 11905: 0xE563, + 37678 - 11905: 0xE564, + 37679 - 11905: 0xE565, + 37680 - 11905: 0xE566, + 37681 - 11905: 0xE567, + 37682 - 11905: 0xE568, + 37683 - 11905: 0xE569, + 37684 - 11905: 0xE56A, + 37685 - 11905: 0xE56B, + 37686 - 11905: 0xE56C, + 37687 - 11905: 0xE56D, + 37688 - 11905: 0xE56E, + 37689 - 11905: 0xE56F, + 37690 - 11905: 0xE570, + 37691 - 11905: 0xE571, + 37692 - 11905: 0xE572, + 37693 - 11905: 0xE573, + 37694 - 11905: 0xF6C9, + 37695 - 11905: 0xE574, + 37696 - 11905: 0xE575, + 37697 - 11905: 0xE576, + 37698 - 11905: 0xE577, + 37699 - 11905: 0xE578, + 37700 - 11905: 0xE579, + 37701 - 11905: 0xE57A, + 37702 - 11905: 0xE57B, + 37703 - 11905: 0xE57C, + 37704 - 11905: 0xE57D, + 37705 - 11905: 0xE57E, + 37706 - 11905: 0xE580, + 37707 - 11905: 0xE581, + 37708 - 11905: 0xE582, + 37709 - 11905: 0xE583, + 37710 - 11905: 0xE584, + 37711 - 11905: 0xE585, + 37712 - 11905: 0xE586, + 37713 - 11905: 0xE587, + 37714 - 11905: 0xE588, + 37715 - 11905: 0xE589, + 37716 - 11905: 0xE58A, + 37717 - 11905: 0xE58B, + 37718 - 11905: 0xE58C, + 37719 - 11905: 0xE58D, + 37720 - 11905: 0xE58E, + 37721 - 11905: 0xE58F, + 37722 - 11905: 0xE590, + 37723 - 11905: 0xE591, + 37724 - 11905: 0xE592, + 37725 - 11905: 0xE593, + 37726 - 11905: 0xE594, + 37727 - 11905: 0xE595, + 37728 - 11905: 0xE596, + 37729 - 11905: 0xE597, + 37730 - 11905: 0xE598, + 37731 - 11905: 0xE599, + 37732 - 11905: 0xE59A, + 37733 - 11905: 0xE59B, + 37734 - 11905: 0xE59C, + 37735 - 11905: 0xE59D, + 37736 - 11905: 0xE59E, + 37737 - 11905: 0xE59F, + 37738 - 11905: 0xF6CA, + 37739 - 11905: 0xE5A0, + 37740 - 11905: 0xE640, + 37741 - 11905: 0xE641, + 37742 - 11905: 0xE642, + 37743 - 11905: 0xE643, + 37744 - 11905: 0xE644, + 37745 - 11905: 0xE645, + 37746 - 11905: 0xE646, + 37747 - 11905: 0xE647, + 37748 - 11905: 0xE648, + 37749 - 11905: 0xE649, + 37750 - 11905: 0xE64A, + 37751 - 11905: 0xE64B, + 37752 - 11905: 0xE64C, + 37753 - 11905: 0xE64D, + 37754 - 11905: 0xE64E, + 37755 - 11905: 0xE64F, + 37756 - 11905: 0xE650, + 37757 - 11905: 0xE651, + 37758 - 11905: 0xE652, + 37759 - 11905: 0xE653, + 37760 - 11905: 0xE654, + 37761 - 11905: 0xE655, + 37762 - 11905: 0xE656, + 37763 - 11905: 0xE657, + 37764 - 11905: 0xE658, + 37765 - 11905: 0xE659, + 37766 - 11905: 0xE65A, + 37767 - 11905: 0xE65B, + 37768 - 11905: 0xE65C, + 37769 - 11905: 0xE65D, + 37770 - 11905: 0xE65E, + 37771 - 11905: 0xE65F, + 37772 - 11905: 0xE660, + 37773 - 11905: 0xE661, + 37774 - 11905: 0xE662, + 37775 - 11905: 0xF6CC, + 37776 - 11905: 0xE663, + 37777 - 11905: 0xE664, + 37778 - 11905: 0xE665, + 37779 - 11905: 0xE666, + 37780 - 11905: 0xE667, + 37781 - 11905: 0xE668, + 37782 - 11905: 0xE669, + 37783 - 11905: 0xE66A, + 37784 - 11905: 0xE66B, + 37785 - 11905: 0xE66C, + 37786 - 11905: 0xE66D, + 37787 - 11905: 0xE66E, + 37788 - 11905: 0xE66F, + 37789 - 11905: 0xE670, + 37790 - 11905: 0xE671, + 37791 - 11905: 0xE672, + 37792 - 11905: 0xE673, + 37793 - 11905: 0xE674, + 37794 - 11905: 0xE675, + 37795 - 11905: 0xE676, + 37796 - 11905: 0xE677, + 37797 - 11905: 0xE678, + 37798 - 11905: 0xE679, + 37799 - 11905: 0xE67A, + 37800 - 11905: 0xE67B, + 37801 - 11905: 0xE67C, + 37802 - 11905: 0xE67D, + 37803 - 11905: 0xE67E, + 37804 - 11905: 0xE680, + 37805 - 11905: 0xE681, + 37806 - 11905: 0xE682, + 37807 - 11905: 0xE683, + 37808 - 11905: 0xE684, + 37809 - 11905: 0xE685, + 37810 - 11905: 0xE686, + 37811 - 11905: 0xE687, + 37812 - 11905: 0xE688, + 37813 - 11905: 0xE689, + 37814 - 11905: 0xE68A, + 37815 - 11905: 0xE68B, + 37816 - 11905: 0xE68C, + 37817 - 11905: 0xE68D, + 37818 - 11905: 0xE68E, + 37819 - 11905: 0xE68F, + 37820 - 11905: 0xE690, + 37821 - 11905: 0xE691, + 37822 - 11905: 0xE692, + 37823 - 11905: 0xE693, + 37824 - 11905: 0xE694, + 37825 - 11905: 0xE695, + 37826 - 11905: 0xE696, + 37827 - 11905: 0xE697, + 37828 - 11905: 0xE698, + 37829 - 11905: 0xE699, + 37830 - 11905: 0xE69A, + 37831 - 11905: 0xE69B, + 37832 - 11905: 0xE69C, + 37833 - 11905: 0xE69D, + 37834 - 11905: 0xF6CB, + 37835 - 11905: 0xE69E, + 37836 - 11905: 0xE69F, + 37837 - 11905: 0xE6A0, + 37838 - 11905: 0xE740, + 37839 - 11905: 0xE741, + 37840 - 11905: 0xE742, + 37841 - 11905: 0xE743, + 37842 - 11905: 0xE744, + 37843 - 11905: 0xE745, + 37844 - 11905: 0xE746, + 37845 - 11905: 0xE747, + 37846 - 11905: 0xF7E9, + 37847 - 11905: 0xE748, + 37848 - 11905: 0xE749, + 37849 - 11905: 0xE74A, + 37850 - 11905: 0xE74B, + 37851 - 11905: 0xE74C, + 37852 - 11905: 0xE74D, + 37853 - 11905: 0xE74E, + 37854 - 11905: 0xE74F, + 37855 - 11905: 0xE750, + 37856 - 11905: 0xE751, + 37857 - 11905: 0xE752, + 37858 - 11905: 0xE753, + 37859 - 11905: 0xE754, + 37860 - 11905: 0xE755, + 37861 - 11905: 0xE756, + 37862 - 11905: 0xE757, + 37863 - 11905: 0xE758, + 37864 - 11905: 0xE759, + 37865 - 11905: 0xE75A, + 37866 - 11905: 0xE75B, + 37867 - 11905: 0xE75C, + 37868 - 11905: 0xE75D, + 37869 - 11905: 0xE75E, + 37870 - 11905: 0xE75F, + 37871 - 11905: 0xE760, + 37872 - 11905: 0xE761, + 37873 - 11905: 0xE762, + 37874 - 11905: 0xE763, + 37875 - 11905: 0xE764, + 37876 - 11905: 0xE765, + 37877 - 11905: 0xE766, + 37878 - 11905: 0xE767, + 37879 - 11905: 0xE768, + 37880 - 11905: 0xE769, + 37881 - 11905: 0xE76A, + 37882 - 11905: 0xE76B, + 37883 - 11905: 0xE76C, + 37884 - 11905: 0xE76D, + 37885 - 11905: 0xE76E, + 37886 - 11905: 0xE76F, + 37887 - 11905: 0xE770, + 37888 - 11905: 0xE771, + 37889 - 11905: 0xE772, + 37890 - 11905: 0xE773, + 37891 - 11905: 0xE774, + 37892 - 11905: 0xE775, + 37893 - 11905: 0xE776, + 37894 - 11905: 0xE777, + 37895 - 11905: 0xE778, + 37896 - 11905: 0xE779, + 37897 - 11905: 0xE77A, + 37898 - 11905: 0xE77B, + 37899 - 11905: 0xE77C, + 37900 - 11905: 0xE77D, + 37901 - 11905: 0xE77E, + 37902 - 11905: 0xE780, + 37903 - 11905: 0xE781, + 37904 - 11905: 0xE782, + 37905 - 11905: 0xE783, + 37906 - 11905: 0xE784, + 37907 - 11905: 0xE785, + 37908 - 11905: 0xE786, + 37909 - 11905: 0xE787, + 37910 - 11905: 0xE788, + 37911 - 11905: 0xE789, + 37912 - 11905: 0xE78A, + 37913 - 11905: 0xE78B, + 37914 - 11905: 0xE78C, + 37915 - 11905: 0xE78D, + 37916 - 11905: 0xE78E, + 37917 - 11905: 0xE78F, + 37918 - 11905: 0xE790, + 37919 - 11905: 0xE791, + 37920 - 11905: 0xE792, + 37921 - 11905: 0xE793, + 37922 - 11905: 0xE794, + 37923 - 11905: 0xE795, + 37924 - 11905: 0xE796, + 37925 - 11905: 0xE797, + 37926 - 11905: 0xE798, + 37927 - 11905: 0xE799, + 37928 - 11905: 0xE79A, + 37929 - 11905: 0xE79B, + 37930 - 11905: 0xE79C, + 37931 - 11905: 0xE79D, + 37932 - 11905: 0xE79E, + 37933 - 11905: 0xE79F, + 37934 - 11905: 0xE7A0, + 37935 - 11905: 0xE840, + 37936 - 11905: 0xE841, + 37937 - 11905: 0xE842, + 37938 - 11905: 0xE843, + 37939 - 11905: 0xE844, + 37940 - 11905: 0xE845, + 37941 - 11905: 0xE846, + 37942 - 11905: 0xE847, + 37943 - 11905: 0xE848, + 37944 - 11905: 0xE849, + 37945 - 11905: 0xE84A, + 37946 - 11905: 0xE84B, + 37947 - 11905: 0xE84C, + 37948 - 11905: 0xE84D, + 37949 - 11905: 0xE84E, + 37950 - 11905: 0xF6CD, + 37951 - 11905: 0xE84F, + 37952 - 11905: 0xE850, + 37953 - 11905: 0xE851, + 37954 - 11905: 0xE852, + 37955 - 11905: 0xE853, + 37956 - 11905: 0xE854, + 37957 - 11905: 0xE855, + 37958 - 11905: 0xE856, + 37959 - 11905: 0xE857, + 37960 - 11905: 0xE858, + 37961 - 11905: 0xE859, + 37962 - 11905: 0xE85A, + 37963 - 11905: 0xE85B, + 37964 - 11905: 0xE85C, + 37965 - 11905: 0xE85D, + 37966 - 11905: 0xE85E, + 37967 - 11905: 0xE85F, + 37968 - 11905: 0xE860, + 37969 - 11905: 0xE861, + 37970 - 11905: 0xE862, + 37971 - 11905: 0xE863, + 37972 - 11905: 0xE864, + 37973 - 11905: 0xE865, + 37974 - 11905: 0xE866, + 37975 - 11905: 0xE867, + 37976 - 11905: 0xE868, + 37977 - 11905: 0xE869, + 37978 - 11905: 0xE86A, + 37979 - 11905: 0xE86B, + 37980 - 11905: 0xE86C, + 37981 - 11905: 0xE86D, + 37982 - 11905: 0xE86E, + 37983 - 11905: 0xE86F, + 37984 - 11905: 0xE870, + 37985 - 11905: 0xE871, + 37986 - 11905: 0xE872, + 37987 - 11905: 0xE873, + 37988 - 11905: 0xE874, + 37989 - 11905: 0xE875, + 37990 - 11905: 0xE876, + 37991 - 11905: 0xE877, + 37992 - 11905: 0xE878, + 37993 - 11905: 0xE879, + 37994 - 11905: 0xE87A, + 37995 - 11905: 0xF6CE, + 37996 - 11905: 0xE87B, + 37997 - 11905: 0xE87C, + 37998 - 11905: 0xE87D, + 37999 - 11905: 0xE87E, + 38000 - 11905: 0xE880, + 38001 - 11905: 0xE881, + 38002 - 11905: 0xE882, + 38003 - 11905: 0xE883, + 38004 - 11905: 0xE884, + 38005 - 11905: 0xE885, + 38006 - 11905: 0xE886, + 38007 - 11905: 0xE887, + 38008 - 11905: 0xE888, + 38009 - 11905: 0xE889, + 38010 - 11905: 0xE88A, + 38011 - 11905: 0xE88B, + 38012 - 11905: 0xE88C, + 38013 - 11905: 0xE88D, + 38014 - 11905: 0xE88E, + 38015 - 11905: 0xE88F, + 38016 - 11905: 0xE890, + 38017 - 11905: 0xE891, + 38018 - 11905: 0xE892, + 38019 - 11905: 0xE893, + 38020 - 11905: 0xE894, + 38021 - 11905: 0xEEC4, + 38022 - 11905: 0xEEC5, + 38023 - 11905: 0xEEC6, + 38024 - 11905: 0xD5EB, + 38025 - 11905: 0xB6A4, + 38026 - 11905: 0xEEC8, + 38027 - 11905: 0xEEC7, + 38028 - 11905: 0xEEC9, + 38029 - 11905: 0xEECA, + 38030 - 11905: 0xC7A5, + 38031 - 11905: 0xEECB, + 38032 - 11905: 0xEECC, + 38033 - 11905: 0xE895, + 38034 - 11905: 0xB7B0, + 38035 - 11905: 0xB5F6, + 38036 - 11905: 0xEECD, + 38037 - 11905: 0xEECF, + 38038 - 11905: 0xE896, + 38039 - 11905: 0xEECE, + 38040 - 11905: 0xE897, + 38041 - 11905: 0xB8C6, + 38042 - 11905: 0xEED0, + 38043 - 11905: 0xEED1, + 38044 - 11905: 0xEED2, + 38045 - 11905: 0xB6DB, + 38046 - 11905: 0xB3AE, + 38047 - 11905: 0xD6D3, + 38048 - 11905: 0xC4C6, + 38049 - 11905: 0xB1B5, + 38050 - 11905: 0xB8D6, + 38051 - 11905: 0xEED3, + 38052 - 11905: 0xEED4, + 38053 - 11905: 0xD4BF, + 38054 - 11905: 0xC7D5, + 38055 - 11905: 0xBEFB, + 38056 - 11905: 0xCED9, + 38057 - 11905: 0xB9B3, + 38058 - 11905: 0xEED6, + 38059 - 11905: 0xEED5, + 38060 - 11905: 0xEED8, + 38061 - 11905: 0xEED7, + 38062 - 11905: 0xC5A5, + 38063 - 11905: 0xEED9, + 38064 - 11905: 0xEEDA, + 38065 - 11905: 0xC7AE, + 38066 - 11905: 0xEEDB, + 38067 - 11905: 0xC7AF, + 38068 - 11905: 0xEEDC, + 38069 - 11905: 0xB2A7, + 38070 - 11905: 0xEEDD, + 38071 - 11905: 0xEEDE, + 38072 - 11905: 0xEEDF, + 38073 - 11905: 0xEEE0, + 38074 - 11905: 0xEEE1, + 38075 - 11905: 0xD7EA, + 38076 - 11905: 0xEEE2, + 38077 - 11905: 0xEEE3, + 38078 - 11905: 0xBCD8, + 38079 - 11905: 0xEEE4, + 38080 - 11905: 0xD3CB, + 38081 - 11905: 0xCCFA, + 38082 - 11905: 0xB2AC, + 38083 - 11905: 0xC1E5, + 38084 - 11905: 0xEEE5, + 38085 - 11905: 0xC7A6, + 38086 - 11905: 0xC3AD, + 38087 - 11905: 0xE898, + 38088 - 11905: 0xEEE6, + 38089 - 11905: 0xEEE7, + 38090 - 11905: 0xEEE8, + 38091 - 11905: 0xEEE9, + 38092 - 11905: 0xEEEA, + 38093 - 11905: 0xEEEB, + 38094 - 11905: 0xEEEC, + 38095 - 11905: 0xE899, + 38096 - 11905: 0xEEED, + 38097 - 11905: 0xEEEE, + 38098 - 11905: 0xEEEF, + 38099 - 11905: 0xE89A, + 38100 - 11905: 0xE89B, + 38101 - 11905: 0xEEF0, + 38102 - 11905: 0xEEF1, + 38103 - 11905: 0xEEF2, + 38104 - 11905: 0xEEF4, + 38105 - 11905: 0xEEF3, + 38106 - 11905: 0xE89C, + 38107 - 11905: 0xEEF5, + 38108 - 11905: 0xCDAD, + 38109 - 11905: 0xC2C1, + 38110 - 11905: 0xEEF6, + 38111 - 11905: 0xEEF7, + 38112 - 11905: 0xEEF8, + 38113 - 11905: 0xD5A1, + 38114 - 11905: 0xEEF9, + 38115 - 11905: 0xCFB3, + 38116 - 11905: 0xEEFA, + 38117 - 11905: 0xEEFB, + 38118 - 11905: 0xE89D, + 38119 - 11905: 0xEEFC, + 38120 - 11905: 0xEEFD, + 38121 - 11905: 0xEFA1, + 38122 - 11905: 0xEEFE, + 38123 - 11905: 0xEFA2, + 38124 - 11905: 0xB8F5, + 38125 - 11905: 0xC3FA, + 38126 - 11905: 0xEFA3, + 38127 - 11905: 0xEFA4, + 38128 - 11905: 0xBDC2, + 38129 - 11905: 0xD2BF, + 38130 - 11905: 0xB2F9, + 38131 - 11905: 0xEFA5, + 38132 - 11905: 0xEFA6, + 38133 - 11905: 0xEFA7, + 38134 - 11905: 0xD2F8, + 38135 - 11905: 0xEFA8, + 38136 - 11905: 0xD6FD, + 38137 - 11905: 0xEFA9, + 38138 - 11905: 0xC6CC, + 38139 - 11905: 0xE89E, + 38140 - 11905: 0xEFAA, + 38141 - 11905: 0xEFAB, + 38142 - 11905: 0xC1B4, + 38143 - 11905: 0xEFAC, + 38144 - 11905: 0xCFFA, + 38145 - 11905: 0xCBF8, + 38146 - 11905: 0xEFAE, + 38147 - 11905: 0xEFAD, + 38148 - 11905: 0xB3FA, + 38149 - 11905: 0xB9F8, + 38150 - 11905: 0xEFAF, + 38151 - 11905: 0xEFB0, + 38152 - 11905: 0xD0E2, + 38153 - 11905: 0xEFB1, + 38154 - 11905: 0xEFB2, + 38155 - 11905: 0xB7E6, + 38156 - 11905: 0xD0BF, + 38157 - 11905: 0xEFB3, + 38158 - 11905: 0xEFB4, + 38159 - 11905: 0xEFB5, + 38160 - 11905: 0xC8F1, + 38161 - 11905: 0xCCE0, + 38162 - 11905: 0xEFB6, + 38163 - 11905: 0xEFB7, + 38164 - 11905: 0xEFB8, + 38165 - 11905: 0xEFB9, + 38166 - 11905: 0xEFBA, + 38167 - 11905: 0xD5E0, + 38168 - 11905: 0xEFBB, + 38169 - 11905: 0xB4ED, + 38170 - 11905: 0xC3AA, + 38171 - 11905: 0xEFBC, + 38172 - 11905: 0xE89F, + 38173 - 11905: 0xEFBD, + 38174 - 11905: 0xEFBE, + 38175 - 11905: 0xEFBF, + 38176 - 11905: 0xE8A0, + 38177 - 11905: 0xCEFD, + 38178 - 11905: 0xEFC0, + 38179 - 11905: 0xC2E0, + 38180 - 11905: 0xB4B8, + 38181 - 11905: 0xD7B6, + 38182 - 11905: 0xBDF5, + 38183 - 11905: 0xE940, + 38184 - 11905: 0xCFC7, + 38185 - 11905: 0xEFC3, + 38186 - 11905: 0xEFC1, + 38187 - 11905: 0xEFC2, + 38188 - 11905: 0xEFC4, + 38189 - 11905: 0xB6A7, + 38190 - 11905: 0xBCFC, + 38191 - 11905: 0xBEE2, + 38192 - 11905: 0xC3CC, + 38193 - 11905: 0xEFC5, + 38194 - 11905: 0xEFC6, + 38195 - 11905: 0xE941, + 38196 - 11905: 0xEFC7, + 38197 - 11905: 0xEFCF, + 38198 - 11905: 0xEFC8, + 38199 - 11905: 0xEFC9, + 38200 - 11905: 0xEFCA, + 38201 - 11905: 0xC7C2, + 38202 - 11905: 0xEFF1, + 38203 - 11905: 0xB6CD, + 38204 - 11905: 0xEFCB, + 38205 - 11905: 0xE942, + 38206 - 11905: 0xEFCC, + 38207 - 11905: 0xEFCD, + 38208 - 11905: 0xB6C6, + 38209 - 11905: 0xC3BE, + 38210 - 11905: 0xEFCE, + 38211 - 11905: 0xE943, + 38212 - 11905: 0xEFD0, + 38213 - 11905: 0xEFD1, + 38214 - 11905: 0xEFD2, + 38215 - 11905: 0xD5F2, + 38216 - 11905: 0xE944, + 38217 - 11905: 0xEFD3, + 38218 - 11905: 0xC4F7, + 38219 - 11905: 0xE945, + 38220 - 11905: 0xEFD4, + 38221 - 11905: 0xC4F8, + 38222 - 11905: 0xEFD5, + 38223 - 11905: 0xEFD6, + 38224 - 11905: 0xB8E4, + 38225 - 11905: 0xB0F7, + 38226 - 11905: 0xEFD7, + 38227 - 11905: 0xEFD8, + 38228 - 11905: 0xEFD9, + 38229 - 11905: 0xE946, + 38230 - 11905: 0xEFDA, + 38231 - 11905: 0xEFDB, + 38232 - 11905: 0xEFDC, + 38233 - 11905: 0xEFDD, + 38234 - 11905: 0xE947, + 38235 - 11905: 0xEFDE, + 38236 - 11905: 0xBEB5, + 38237 - 11905: 0xEFE1, + 38238 - 11905: 0xEFDF, + 38239 - 11905: 0xEFE0, + 38240 - 11905: 0xE948, + 38241 - 11905: 0xEFE2, + 38242 - 11905: 0xEFE3, + 38243 - 11905: 0xC1CD, + 38244 - 11905: 0xEFE4, + 38245 - 11905: 0xEFE5, + 38246 - 11905: 0xEFE6, + 38247 - 11905: 0xEFE7, + 38248 - 11905: 0xEFE8, + 38249 - 11905: 0xEFE9, + 38250 - 11905: 0xEFEA, + 38251 - 11905: 0xEFEB, + 38252 - 11905: 0xEFEC, + 38253 - 11905: 0xC0D8, + 38254 - 11905: 0xE949, + 38255 - 11905: 0xEFED, + 38256 - 11905: 0xC1AD, + 38257 - 11905: 0xEFEE, + 38258 - 11905: 0xEFEF, + 38259 - 11905: 0xEFF0, + 38260 - 11905: 0xE94A, + 38261 - 11905: 0xE94B, + 38262 - 11905: 0xCFE2, + 38263 - 11905: 0xE94C, + 38264 - 11905: 0xE94D, + 38265 - 11905: 0xE94E, + 38266 - 11905: 0xE94F, + 38267 - 11905: 0xE950, + 38268 - 11905: 0xE951, + 38269 - 11905: 0xE952, + 38270 - 11905: 0xE953, + 38271 - 11905: 0xB3A4, + 38272 - 11905: 0xE954, + 38273 - 11905: 0xE955, + 38274 - 11905: 0xE956, + 38275 - 11905: 0xE957, + 38276 - 11905: 0xE958, + 38277 - 11905: 0xE959, + 38278 - 11905: 0xE95A, + 38279 - 11905: 0xE95B, + 38280 - 11905: 0xE95C, + 38281 - 11905: 0xE95D, + 38282 - 11905: 0xE95E, + 38283 - 11905: 0xE95F, + 38284 - 11905: 0xE960, + 38285 - 11905: 0xE961, + 38286 - 11905: 0xE962, + 38287 - 11905: 0xE963, + 38288 - 11905: 0xE964, + 38289 - 11905: 0xE965, + 38290 - 11905: 0xE966, + 38291 - 11905: 0xE967, + 38292 - 11905: 0xE968, + 38293 - 11905: 0xE969, + 38294 - 11905: 0xE96A, + 38295 - 11905: 0xE96B, + 38296 - 11905: 0xE96C, + 38297 - 11905: 0xE96D, + 38298 - 11905: 0xE96E, + 38299 - 11905: 0xE96F, + 38300 - 11905: 0xE970, + 38301 - 11905: 0xE971, + 38302 - 11905: 0xE972, + 38303 - 11905: 0xE973, + 38304 - 11905: 0xE974, + 38305 - 11905: 0xE975, + 38306 - 11905: 0xE976, + 38307 - 11905: 0xE977, + 38308 - 11905: 0xE978, + 38309 - 11905: 0xE979, + 38310 - 11905: 0xE97A, + 38311 - 11905: 0xE97B, + 38312 - 11905: 0xE97C, + 38313 - 11905: 0xE97D, + 38314 - 11905: 0xE97E, + 38315 - 11905: 0xE980, + 38316 - 11905: 0xE981, + 38317 - 11905: 0xE982, + 38318 - 11905: 0xE983, + 38319 - 11905: 0xE984, + 38320 - 11905: 0xE985, + 38321 - 11905: 0xE986, + 38322 - 11905: 0xE987, + 38323 - 11905: 0xE988, + 38324 - 11905: 0xE989, + 38325 - 11905: 0xE98A, + 38326 - 11905: 0xE98B, + 38327 - 11905: 0xE98C, + 38328 - 11905: 0xE98D, + 38329 - 11905: 0xE98E, + 38330 - 11905: 0xE98F, + 38331 - 11905: 0xE990, + 38332 - 11905: 0xE991, + 38333 - 11905: 0xE992, + 38334 - 11905: 0xE993, + 38335 - 11905: 0xE994, + 38336 - 11905: 0xE995, + 38337 - 11905: 0xE996, + 38338 - 11905: 0xE997, + 38339 - 11905: 0xE998, + 38340 - 11905: 0xE999, + 38341 - 11905: 0xE99A, + 38342 - 11905: 0xE99B, + 38343 - 11905: 0xE99C, + 38344 - 11905: 0xE99D, + 38345 - 11905: 0xE99E, + 38346 - 11905: 0xE99F, + 38347 - 11905: 0xE9A0, + 38348 - 11905: 0xEA40, + 38349 - 11905: 0xEA41, + 38350 - 11905: 0xEA42, + 38351 - 11905: 0xEA43, + 38352 - 11905: 0xEA44, + 38353 - 11905: 0xEA45, + 38354 - 11905: 0xEA46, + 38355 - 11905: 0xEA47, + 38356 - 11905: 0xEA48, + 38357 - 11905: 0xEA49, + 38358 - 11905: 0xEA4A, + 38359 - 11905: 0xEA4B, + 38360 - 11905: 0xEA4C, + 38361 - 11905: 0xEA4D, + 38362 - 11905: 0xEA4E, + 38363 - 11905: 0xEA4F, + 38364 - 11905: 0xEA50, + 38365 - 11905: 0xEA51, + 38366 - 11905: 0xEA52, + 38367 - 11905: 0xEA53, + 38368 - 11905: 0xEA54, + 38369 - 11905: 0xEA55, + 38370 - 11905: 0xEA56, + 38371 - 11905: 0xEA57, + 38372 - 11905: 0xEA58, + 38373 - 11905: 0xEA59, + 38374 - 11905: 0xEA5A, + 38375 - 11905: 0xEA5B, + 38376 - 11905: 0xC3C5, + 38377 - 11905: 0xE3C5, + 38378 - 11905: 0xC9C1, + 38379 - 11905: 0xE3C6, + 38380 - 11905: 0xEA5C, + 38381 - 11905: 0xB1D5, + 38382 - 11905: 0xCECA, + 38383 - 11905: 0xB4B3, + 38384 - 11905: 0xC8F2, + 38385 - 11905: 0xE3C7, + 38386 - 11905: 0xCFD0, + 38387 - 11905: 0xE3C8, + 38388 - 11905: 0xBCE4, + 38389 - 11905: 0xE3C9, + 38390 - 11905: 0xE3CA, + 38391 - 11905: 0xC3C6, + 38392 - 11905: 0xD5A2, + 38393 - 11905: 0xC4D6, + 38394 - 11905: 0xB9EB, + 38395 - 11905: 0xCEC5, + 38396 - 11905: 0xE3CB, + 38397 - 11905: 0xC3F6, + 38398 - 11905: 0xE3CC, + 38399 - 11905: 0xEA5D, + 38400 - 11905: 0xB7A7, + 38401 - 11905: 0xB8F3, + 38402 - 11905: 0xBAD2, + 38403 - 11905: 0xE3CD, + 38404 - 11905: 0xE3CE, + 38405 - 11905: 0xD4C4, + 38406 - 11905: 0xE3CF, + 38407 - 11905: 0xEA5E, + 38408 - 11905: 0xE3D0, + 38409 - 11905: 0xD1CB, + 38410 - 11905: 0xE3D1, + 38411 - 11905: 0xE3D2, + 38412 - 11905: 0xE3D3, + 38413 - 11905: 0xE3D4, + 38414 - 11905: 0xD1D6, + 38415 - 11905: 0xE3D5, + 38416 - 11905: 0xB2FB, + 38417 - 11905: 0xC0BB, + 38418 - 11905: 0xE3D6, + 38419 - 11905: 0xEA5F, + 38420 - 11905: 0xC0AB, + 38421 - 11905: 0xE3D7, + 38422 - 11905: 0xE3D8, + 38423 - 11905: 0xE3D9, + 38424 - 11905: 0xEA60, + 38425 - 11905: 0xE3DA, + 38426 - 11905: 0xE3DB, + 38427 - 11905: 0xEA61, + 38428 - 11905: 0xB8B7, + 38429 - 11905: 0xDAE2, + 38430 - 11905: 0xEA62, + 38431 - 11905: 0xB6D3, + 38432 - 11905: 0xEA63, + 38433 - 11905: 0xDAE4, + 38434 - 11905: 0xDAE3, + 38435 - 11905: 0xEA64, + 38436 - 11905: 0xEA65, + 38437 - 11905: 0xEA66, + 38438 - 11905: 0xEA67, + 38439 - 11905: 0xEA68, + 38440 - 11905: 0xEA69, + 38441 - 11905: 0xEA6A, + 38442 - 11905: 0xDAE6, + 38443 - 11905: 0xEA6B, + 38444 - 11905: 0xEA6C, + 38445 - 11905: 0xEA6D, + 38446 - 11905: 0xC8EE, + 38447 - 11905: 0xEA6E, + 38448 - 11905: 0xEA6F, + 38449 - 11905: 0xDAE5, + 38450 - 11905: 0xB7C0, + 38451 - 11905: 0xD1F4, + 38452 - 11905: 0xD2F5, + 38453 - 11905: 0xD5F3, + 38454 - 11905: 0xBDD7, + 38455 - 11905: 0xEA70, + 38456 - 11905: 0xEA71, + 38457 - 11905: 0xEA72, + 38458 - 11905: 0xEA73, + 38459 - 11905: 0xD7E8, + 38460 - 11905: 0xDAE8, + 38461 - 11905: 0xDAE7, + 38462 - 11905: 0xEA74, + 38463 - 11905: 0xB0A2, + 38464 - 11905: 0xCDD3, + 38465 - 11905: 0xEA75, + 38466 - 11905: 0xDAE9, + 38467 - 11905: 0xEA76, + 38468 - 11905: 0xB8BD, + 38469 - 11905: 0xBCCA, + 38470 - 11905: 0xC2BD, + 38471 - 11905: 0xC2A4, + 38472 - 11905: 0xB3C2, + 38473 - 11905: 0xDAEA, + 38474 - 11905: 0xEA77, + 38475 - 11905: 0xC2AA, + 38476 - 11905: 0xC4B0, + 38477 - 11905: 0xBDB5, + 38478 - 11905: 0xEA78, + 38479 - 11905: 0xEA79, + 38480 - 11905: 0xCFDE, + 38481 - 11905: 0xEA7A, + 38482 - 11905: 0xEA7B, + 38483 - 11905: 0xEA7C, + 38484 - 11905: 0xDAEB, + 38485 - 11905: 0xC9C2, + 38486 - 11905: 0xEA7D, + 38487 - 11905: 0xEA7E, + 38488 - 11905: 0xEA80, + 38489 - 11905: 0xEA81, + 38490 - 11905: 0xEA82, + 38491 - 11905: 0xB1DD, + 38492 - 11905: 0xEA83, + 38493 - 11905: 0xEA84, + 38494 - 11905: 0xEA85, + 38495 - 11905: 0xDAEC, + 38496 - 11905: 0xEA86, + 38497 - 11905: 0xB6B8, + 38498 - 11905: 0xD4BA, + 38499 - 11905: 0xEA87, + 38500 - 11905: 0xB3FD, + 38501 - 11905: 0xEA88, + 38502 - 11905: 0xEA89, + 38503 - 11905: 0xDAED, + 38504 - 11905: 0xD4C9, + 38505 - 11905: 0xCFD5, + 38506 - 11905: 0xC5E3, + 38507 - 11905: 0xEA8A, + 38508 - 11905: 0xDAEE, + 38509 - 11905: 0xEA8B, + 38510 - 11905: 0xEA8C, + 38511 - 11905: 0xEA8D, + 38512 - 11905: 0xEA8E, + 38513 - 11905: 0xEA8F, + 38514 - 11905: 0xDAEF, + 38515 - 11905: 0xEA90, + 38516 - 11905: 0xDAF0, + 38517 - 11905: 0xC1EA, + 38518 - 11905: 0xCCD5, + 38519 - 11905: 0xCFDD, + 38520 - 11905: 0xEA91, + 38521 - 11905: 0xEA92, + 38522 - 11905: 0xEA93, + 38523 - 11905: 0xEA94, + 38524 - 11905: 0xEA95, + 38525 - 11905: 0xEA96, + 38526 - 11905: 0xEA97, + 38527 - 11905: 0xEA98, + 38528 - 11905: 0xEA99, + 38529 - 11905: 0xEA9A, + 38530 - 11905: 0xEA9B, + 38531 - 11905: 0xEA9C, + 38532 - 11905: 0xEA9D, + 38533 - 11905: 0xD3E7, + 38534 - 11905: 0xC2A1, + 38535 - 11905: 0xEA9E, + 38536 - 11905: 0xDAF1, + 38537 - 11905: 0xEA9F, + 38538 - 11905: 0xEAA0, + 38539 - 11905: 0xCBE5, + 38540 - 11905: 0xEB40, + 38541 - 11905: 0xDAF2, + 38542 - 11905: 0xEB41, + 38543 - 11905: 0xCBE6, + 38544 - 11905: 0xD2FE, + 38545 - 11905: 0xEB42, + 38546 - 11905: 0xEB43, + 38547 - 11905: 0xEB44, + 38548 - 11905: 0xB8F4, + 38549 - 11905: 0xEB45, + 38550 - 11905: 0xEB46, + 38551 - 11905: 0xDAF3, + 38552 - 11905: 0xB0AF, + 38553 - 11905: 0xCFB6, + 38554 - 11905: 0xEB47, + 38555 - 11905: 0xEB48, + 38556 - 11905: 0xD5CF, + 38557 - 11905: 0xEB49, + 38558 - 11905: 0xEB4A, + 38559 - 11905: 0xEB4B, + 38560 - 11905: 0xEB4C, + 38561 - 11905: 0xEB4D, + 38562 - 11905: 0xEB4E, + 38563 - 11905: 0xEB4F, + 38564 - 11905: 0xEB50, + 38565 - 11905: 0xEB51, + 38566 - 11905: 0xEB52, + 38567 - 11905: 0xCBED, + 38568 - 11905: 0xEB53, + 38569 - 11905: 0xEB54, + 38570 - 11905: 0xEB55, + 38571 - 11905: 0xEB56, + 38572 - 11905: 0xEB57, + 38573 - 11905: 0xEB58, + 38574 - 11905: 0xEB59, + 38575 - 11905: 0xEB5A, + 38576 - 11905: 0xDAF4, + 38577 - 11905: 0xEB5B, + 38578 - 11905: 0xEB5C, + 38579 - 11905: 0xE3C4, + 38580 - 11905: 0xEB5D, + 38581 - 11905: 0xEB5E, + 38582 - 11905: 0xC1A5, + 38583 - 11905: 0xEB5F, + 38584 - 11905: 0xEB60, + 38585 - 11905: 0xF6BF, + 38586 - 11905: 0xEB61, + 38587 - 11905: 0xEB62, + 38588 - 11905: 0xF6C0, + 38589 - 11905: 0xF6C1, + 38590 - 11905: 0xC4D1, + 38591 - 11905: 0xEB63, + 38592 - 11905: 0xC8B8, + 38593 - 11905: 0xD1E3, + 38594 - 11905: 0xEB64, + 38595 - 11905: 0xEB65, + 38596 - 11905: 0xD0DB, + 38597 - 11905: 0xD1C5, + 38598 - 11905: 0xBCAF, + 38599 - 11905: 0xB9CD, + 38600 - 11905: 0xEB66, + 38601 - 11905: 0xEFF4, + 38602 - 11905: 0xEB67, + 38603 - 11905: 0xEB68, + 38604 - 11905: 0xB4C6, + 38605 - 11905: 0xD3BA, + 38606 - 11905: 0xF6C2, + 38607 - 11905: 0xB3FB, + 38608 - 11905: 0xEB69, + 38609 - 11905: 0xEB6A, + 38610 - 11905: 0xF6C3, + 38611 - 11905: 0xEB6B, + 38612 - 11905: 0xEB6C, + 38613 - 11905: 0xB5F1, + 38614 - 11905: 0xEB6D, + 38615 - 11905: 0xEB6E, + 38616 - 11905: 0xEB6F, + 38617 - 11905: 0xEB70, + 38618 - 11905: 0xEB71, + 38619 - 11905: 0xEB72, + 38620 - 11905: 0xEB73, + 38621 - 11905: 0xEB74, + 38622 - 11905: 0xEB75, + 38623 - 11905: 0xEB76, + 38624 - 11905: 0xF6C5, + 38625 - 11905: 0xEB77, + 38626 - 11905: 0xEB78, + 38627 - 11905: 0xEB79, + 38628 - 11905: 0xEB7A, + 38629 - 11905: 0xEB7B, + 38630 - 11905: 0xEB7C, + 38631 - 11905: 0xEB7D, + 38632 - 11905: 0xD3EA, + 38633 - 11905: 0xF6A7, + 38634 - 11905: 0xD1A9, + 38635 - 11905: 0xEB7E, + 38636 - 11905: 0xEB80, + 38637 - 11905: 0xEB81, + 38638 - 11905: 0xEB82, + 38639 - 11905: 0xF6A9, + 38640 - 11905: 0xEB83, + 38641 - 11905: 0xEB84, + 38642 - 11905: 0xEB85, + 38643 - 11905: 0xF6A8, + 38644 - 11905: 0xEB86, + 38645 - 11905: 0xEB87, + 38646 - 11905: 0xC1E3, + 38647 - 11905: 0xC0D7, + 38648 - 11905: 0xEB88, + 38649 - 11905: 0xB1A2, + 38650 - 11905: 0xEB89, + 38651 - 11905: 0xEB8A, + 38652 - 11905: 0xEB8B, + 38653 - 11905: 0xEB8C, + 38654 - 11905: 0xCEED, + 38655 - 11905: 0xEB8D, + 38656 - 11905: 0xD0E8, + 38657 - 11905: 0xF6AB, + 38658 - 11905: 0xEB8E, + 38659 - 11905: 0xEB8F, + 38660 - 11905: 0xCFF6, + 38661 - 11905: 0xEB90, + 38662 - 11905: 0xF6AA, + 38663 - 11905: 0xD5F0, + 38664 - 11905: 0xF6AC, + 38665 - 11905: 0xC3B9, + 38666 - 11905: 0xEB91, + 38667 - 11905: 0xEB92, + 38668 - 11905: 0xEB93, + 38669 - 11905: 0xBBF4, + 38670 - 11905: 0xF6AE, + 38671 - 11905: 0xF6AD, + 38672 - 11905: 0xEB94, + 38673 - 11905: 0xEB95, + 38674 - 11905: 0xEB96, + 38675 - 11905: 0xC4DE, + 38676 - 11905: 0xEB97, + 38677 - 11905: 0xEB98, + 38678 - 11905: 0xC1D8, + 38679 - 11905: 0xEB99, + 38680 - 11905: 0xEB9A, + 38681 - 11905: 0xEB9B, + 38682 - 11905: 0xEB9C, + 38683 - 11905: 0xEB9D, + 38684 - 11905: 0xCBAA, + 38685 - 11905: 0xEB9E, + 38686 - 11905: 0xCFBC, + 38687 - 11905: 0xEB9F, + 38688 - 11905: 0xEBA0, + 38689 - 11905: 0xEC40, + 38690 - 11905: 0xEC41, + 38691 - 11905: 0xEC42, + 38692 - 11905: 0xEC43, + 38693 - 11905: 0xEC44, + 38694 - 11905: 0xEC45, + 38695 - 11905: 0xEC46, + 38696 - 11905: 0xEC47, + 38697 - 11905: 0xEC48, + 38698 - 11905: 0xF6AF, + 38699 - 11905: 0xEC49, + 38700 - 11905: 0xEC4A, + 38701 - 11905: 0xF6B0, + 38702 - 11905: 0xEC4B, + 38703 - 11905: 0xEC4C, + 38704 - 11905: 0xF6B1, + 38705 - 11905: 0xEC4D, + 38706 - 11905: 0xC2B6, + 38707 - 11905: 0xEC4E, + 38708 - 11905: 0xEC4F, + 38709 - 11905: 0xEC50, + 38710 - 11905: 0xEC51, + 38711 - 11905: 0xEC52, + 38712 - 11905: 0xB0D4, + 38713 - 11905: 0xC5F9, + 38714 - 11905: 0xEC53, + 38715 - 11905: 0xEC54, + 38716 - 11905: 0xEC55, + 38717 - 11905: 0xEC56, + 38718 - 11905: 0xF6B2, + 38719 - 11905: 0xEC57, + 38720 - 11905: 0xEC58, + 38721 - 11905: 0xEC59, + 38722 - 11905: 0xEC5A, + 38723 - 11905: 0xEC5B, + 38724 - 11905: 0xEC5C, + 38725 - 11905: 0xEC5D, + 38726 - 11905: 0xEC5E, + 38727 - 11905: 0xEC5F, + 38728 - 11905: 0xEC60, + 38729 - 11905: 0xEC61, + 38730 - 11905: 0xEC62, + 38731 - 11905: 0xEC63, + 38732 - 11905: 0xEC64, + 38733 - 11905: 0xEC65, + 38734 - 11905: 0xEC66, + 38735 - 11905: 0xEC67, + 38736 - 11905: 0xEC68, + 38737 - 11905: 0xEC69, + 38738 - 11905: 0xC7E0, + 38739 - 11905: 0xF6A6, + 38740 - 11905: 0xEC6A, + 38741 - 11905: 0xEC6B, + 38742 - 11905: 0xBEB8, + 38743 - 11905: 0xEC6C, + 38744 - 11905: 0xEC6D, + 38745 - 11905: 0xBEB2, + 38746 - 11905: 0xEC6E, + 38747 - 11905: 0xB5E5, + 38748 - 11905: 0xEC6F, + 38749 - 11905: 0xEC70, + 38750 - 11905: 0xB7C7, + 38751 - 11905: 0xEC71, + 38752 - 11905: 0xBFBF, + 38753 - 11905: 0xC3D2, + 38754 - 11905: 0xC3E6, + 38755 - 11905: 0xEC72, + 38756 - 11905: 0xEC73, + 38757 - 11905: 0xD8CC, + 38758 - 11905: 0xEC74, + 38759 - 11905: 0xEC75, + 38760 - 11905: 0xEC76, + 38761 - 11905: 0xB8EF, + 38762 - 11905: 0xEC77, + 38763 - 11905: 0xEC78, + 38764 - 11905: 0xEC79, + 38765 - 11905: 0xEC7A, + 38766 - 11905: 0xEC7B, + 38767 - 11905: 0xEC7C, + 38768 - 11905: 0xEC7D, + 38769 - 11905: 0xEC7E, + 38770 - 11905: 0xEC80, + 38771 - 11905: 0xBDF9, + 38772 - 11905: 0xD1A5, + 38773 - 11905: 0xEC81, + 38774 - 11905: 0xB0D0, + 38775 - 11905: 0xEC82, + 38776 - 11905: 0xEC83, + 38777 - 11905: 0xEC84, + 38778 - 11905: 0xEC85, + 38779 - 11905: 0xEC86, + 38780 - 11905: 0xF7B0, + 38781 - 11905: 0xEC87, + 38782 - 11905: 0xEC88, + 38783 - 11905: 0xEC89, + 38784 - 11905: 0xEC8A, + 38785 - 11905: 0xEC8B, + 38786 - 11905: 0xEC8C, + 38787 - 11905: 0xEC8D, + 38788 - 11905: 0xEC8E, + 38789 - 11905: 0xF7B1, + 38790 - 11905: 0xEC8F, + 38791 - 11905: 0xEC90, + 38792 - 11905: 0xEC91, + 38793 - 11905: 0xEC92, + 38794 - 11905: 0xEC93, + 38795 - 11905: 0xD0AC, + 38796 - 11905: 0xEC94, + 38797 - 11905: 0xB0B0, + 38798 - 11905: 0xEC95, + 38799 - 11905: 0xEC96, + 38800 - 11905: 0xEC97, + 38801 - 11905: 0xF7B2, + 38802 - 11905: 0xF7B3, + 38803 - 11905: 0xEC98, + 38804 - 11905: 0xF7B4, + 38805 - 11905: 0xEC99, + 38806 - 11905: 0xEC9A, + 38807 - 11905: 0xEC9B, + 38808 - 11905: 0xC7CA, + 38809 - 11905: 0xEC9C, + 38810 - 11905: 0xEC9D, + 38811 - 11905: 0xEC9E, + 38812 - 11905: 0xEC9F, + 38813 - 11905: 0xECA0, + 38814 - 11905: 0xED40, + 38815 - 11905: 0xED41, + 38816 - 11905: 0xBECF, + 38817 - 11905: 0xED42, + 38818 - 11905: 0xED43, + 38819 - 11905: 0xF7B7, + 38820 - 11905: 0xED44, + 38821 - 11905: 0xED45, + 38822 - 11905: 0xED46, + 38823 - 11905: 0xED47, + 38824 - 11905: 0xED48, + 38825 - 11905: 0xED49, + 38826 - 11905: 0xED4A, + 38827 - 11905: 0xF7B6, + 38828 - 11905: 0xED4B, + 38829 - 11905: 0xB1DE, + 38830 - 11905: 0xED4C, + 38831 - 11905: 0xF7B5, + 38832 - 11905: 0xED4D, + 38833 - 11905: 0xED4E, + 38834 - 11905: 0xF7B8, + 38835 - 11905: 0xED4F, + 38836 - 11905: 0xF7B9, + 38837 - 11905: 0xED50, + 38838 - 11905: 0xED51, + 38839 - 11905: 0xED52, + 38840 - 11905: 0xED53, + 38841 - 11905: 0xED54, + 38842 - 11905: 0xED55, + 38843 - 11905: 0xED56, + 38844 - 11905: 0xED57, + 38845 - 11905: 0xED58, + 38846 - 11905: 0xED59, + 38847 - 11905: 0xED5A, + 38848 - 11905: 0xED5B, + 38849 - 11905: 0xED5C, + 38850 - 11905: 0xED5D, + 38851 - 11905: 0xED5E, + 38852 - 11905: 0xED5F, + 38853 - 11905: 0xED60, + 38854 - 11905: 0xED61, + 38855 - 11905: 0xED62, + 38856 - 11905: 0xED63, + 38857 - 11905: 0xED64, + 38858 - 11905: 0xED65, + 38859 - 11905: 0xED66, + 38860 - 11905: 0xED67, + 38861 - 11905: 0xED68, + 38862 - 11905: 0xED69, + 38863 - 11905: 0xED6A, + 38864 - 11905: 0xED6B, + 38865 - 11905: 0xED6C, + 38866 - 11905: 0xED6D, + 38867 - 11905: 0xED6E, + 38868 - 11905: 0xED6F, + 38869 - 11905: 0xED70, + 38870 - 11905: 0xED71, + 38871 - 11905: 0xED72, + 38872 - 11905: 0xED73, + 38873 - 11905: 0xED74, + 38874 - 11905: 0xED75, + 38875 - 11905: 0xED76, + 38876 - 11905: 0xED77, + 38877 - 11905: 0xED78, + 38878 - 11905: 0xED79, + 38879 - 11905: 0xED7A, + 38880 - 11905: 0xED7B, + 38881 - 11905: 0xED7C, + 38882 - 11905: 0xED7D, + 38883 - 11905: 0xED7E, + 38884 - 11905: 0xED80, + 38885 - 11905: 0xED81, + 38886 - 11905: 0xCEA4, + 38887 - 11905: 0xC8CD, + 38888 - 11905: 0xED82, + 38889 - 11905: 0xBAAB, + 38890 - 11905: 0xE8B8, + 38891 - 11905: 0xE8B9, + 38892 - 11905: 0xE8BA, + 38893 - 11905: 0xBEC2, + 38894 - 11905: 0xED83, + 38895 - 11905: 0xED84, + 38896 - 11905: 0xED85, + 38897 - 11905: 0xED86, + 38898 - 11905: 0xED87, + 38899 - 11905: 0xD2F4, + 38900 - 11905: 0xED88, + 38901 - 11905: 0xD4CF, + 38902 - 11905: 0xC9D8, + 38903 - 11905: 0xED89, + 38904 - 11905: 0xED8A, + 38905 - 11905: 0xED8B, + 38906 - 11905: 0xED8C, + 38907 - 11905: 0xED8D, + 38908 - 11905: 0xED8E, + 38909 - 11905: 0xED8F, + 38910 - 11905: 0xED90, + 38911 - 11905: 0xED91, + 38912 - 11905: 0xED92, + 38913 - 11905: 0xED93, + 38914 - 11905: 0xED94, + 38915 - 11905: 0xED95, + 38916 - 11905: 0xED96, + 38917 - 11905: 0xED97, + 38918 - 11905: 0xED98, + 38919 - 11905: 0xED99, + 38920 - 11905: 0xED9A, + 38921 - 11905: 0xED9B, + 38922 - 11905: 0xED9C, + 38923 - 11905: 0xED9D, + 38924 - 11905: 0xED9E, + 38925 - 11905: 0xED9F, + 38926 - 11905: 0xEDA0, + 38927 - 11905: 0xEE40, + 38928 - 11905: 0xEE41, + 38929 - 11905: 0xEE42, + 38930 - 11905: 0xEE43, + 38931 - 11905: 0xEE44, + 38932 - 11905: 0xEE45, + 38933 - 11905: 0xEE46, + 38934 - 11905: 0xEE47, + 38935 - 11905: 0xEE48, + 38936 - 11905: 0xEE49, + 38937 - 11905: 0xEE4A, + 38938 - 11905: 0xEE4B, + 38939 - 11905: 0xEE4C, + 38940 - 11905: 0xEE4D, + 38941 - 11905: 0xEE4E, + 38942 - 11905: 0xEE4F, + 38943 - 11905: 0xEE50, + 38944 - 11905: 0xEE51, + 38945 - 11905: 0xEE52, + 38946 - 11905: 0xEE53, + 38947 - 11905: 0xEE54, + 38948 - 11905: 0xEE55, + 38949 - 11905: 0xEE56, + 38950 - 11905: 0xEE57, + 38951 - 11905: 0xEE58, + 38952 - 11905: 0xEE59, + 38953 - 11905: 0xEE5A, + 38954 - 11905: 0xEE5B, + 38955 - 11905: 0xEE5C, + 38956 - 11905: 0xEE5D, + 38957 - 11905: 0xEE5E, + 38958 - 11905: 0xEE5F, + 38959 - 11905: 0xEE60, + 38960 - 11905: 0xEE61, + 38961 - 11905: 0xEE62, + 38962 - 11905: 0xEE63, + 38963 - 11905: 0xEE64, + 38964 - 11905: 0xEE65, + 38965 - 11905: 0xEE66, + 38966 - 11905: 0xEE67, + 38967 - 11905: 0xEE68, + 38968 - 11905: 0xEE69, + 38969 - 11905: 0xEE6A, + 38970 - 11905: 0xEE6B, + 38971 - 11905: 0xEE6C, + 38972 - 11905: 0xEE6D, + 38973 - 11905: 0xEE6E, + 38974 - 11905: 0xEE6F, + 38975 - 11905: 0xEE70, + 38976 - 11905: 0xEE71, + 38977 - 11905: 0xEE72, + 38978 - 11905: 0xEE73, + 38979 - 11905: 0xEE74, + 38980 - 11905: 0xEE75, + 38981 - 11905: 0xEE76, + 38982 - 11905: 0xEE77, + 38983 - 11905: 0xEE78, + 38984 - 11905: 0xEE79, + 38985 - 11905: 0xEE7A, + 38986 - 11905: 0xEE7B, + 38987 - 11905: 0xEE7C, + 38988 - 11905: 0xEE7D, + 38989 - 11905: 0xEE7E, + 38990 - 11905: 0xEE80, + 38991 - 11905: 0xEE81, + 38992 - 11905: 0xEE82, + 38993 - 11905: 0xEE83, + 38994 - 11905: 0xEE84, + 38995 - 11905: 0xEE85, + 38996 - 11905: 0xEE86, + 38997 - 11905: 0xEE87, + 38998 - 11905: 0xEE88, + 38999 - 11905: 0xEE89, + 39000 - 11905: 0xEE8A, + 39001 - 11905: 0xEE8B, + 39002 - 11905: 0xEE8C, + 39003 - 11905: 0xEE8D, + 39004 - 11905: 0xEE8E, + 39005 - 11905: 0xEE8F, + 39006 - 11905: 0xEE90, + 39007 - 11905: 0xEE91, + 39008 - 11905: 0xEE92, + 39009 - 11905: 0xEE93, + 39010 - 11905: 0xEE94, + 39011 - 11905: 0xEE95, + 39012 - 11905: 0xEE96, + 39013 - 11905: 0xEE97, + 39014 - 11905: 0xEE98, + 39015 - 11905: 0xEE99, + 39016 - 11905: 0xEE9A, + 39017 - 11905: 0xEE9B, + 39018 - 11905: 0xEE9C, + 39019 - 11905: 0xEE9D, + 39020 - 11905: 0xEE9E, + 39021 - 11905: 0xEE9F, + 39022 - 11905: 0xEEA0, + 39023 - 11905: 0xEF40, + 39024 - 11905: 0xEF41, + 39025 - 11905: 0xEF42, + 39026 - 11905: 0xEF43, + 39027 - 11905: 0xEF44, + 39028 - 11905: 0xEF45, + 39029 - 11905: 0xD2B3, + 39030 - 11905: 0xB6A5, + 39031 - 11905: 0xC7EA, + 39032 - 11905: 0xF1FC, + 39033 - 11905: 0xCFEE, + 39034 - 11905: 0xCBB3, + 39035 - 11905: 0xD0EB, + 39036 - 11905: 0xE7EF, + 39037 - 11905: 0xCDE7, + 39038 - 11905: 0xB9CB, + 39039 - 11905: 0xB6D9, + 39040 - 11905: 0xF1FD, + 39041 - 11905: 0xB0E4, + 39042 - 11905: 0xCBCC, + 39043 - 11905: 0xF1FE, + 39044 - 11905: 0xD4A4, + 39045 - 11905: 0xC2AD, + 39046 - 11905: 0xC1EC, + 39047 - 11905: 0xC6C4, + 39048 - 11905: 0xBEB1, + 39049 - 11905: 0xF2A1, + 39050 - 11905: 0xBCD5, + 39051 - 11905: 0xEF46, + 39052 - 11905: 0xF2A2, + 39053 - 11905: 0xF2A3, + 39054 - 11905: 0xEF47, + 39055 - 11905: 0xF2A4, + 39056 - 11905: 0xD2C3, + 39057 - 11905: 0xC6B5, + 39058 - 11905: 0xEF48, + 39059 - 11905: 0xCDC7, + 39060 - 11905: 0xF2A5, + 39061 - 11905: 0xEF49, + 39062 - 11905: 0xD3B1, + 39063 - 11905: 0xBFC5, + 39064 - 11905: 0xCCE2, + 39065 - 11905: 0xEF4A, + 39066 - 11905: 0xF2A6, + 39067 - 11905: 0xF2A7, + 39068 - 11905: 0xD1D5, + 39069 - 11905: 0xB6EE, + 39070 - 11905: 0xF2A8, + 39071 - 11905: 0xF2A9, + 39072 - 11905: 0xB5DF, + 39073 - 11905: 0xF2AA, + 39074 - 11905: 0xF2AB, + 39075 - 11905: 0xEF4B, + 39076 - 11905: 0xB2FC, + 39077 - 11905: 0xF2AC, + 39078 - 11905: 0xF2AD, + 39079 - 11905: 0xC8A7, + 39080 - 11905: 0xEF4C, + 39081 - 11905: 0xEF4D, + 39082 - 11905: 0xEF4E, + 39083 - 11905: 0xEF4F, + 39084 - 11905: 0xEF50, + 39085 - 11905: 0xEF51, + 39086 - 11905: 0xEF52, + 39087 - 11905: 0xEF53, + 39088 - 11905: 0xEF54, + 39089 - 11905: 0xEF55, + 39090 - 11905: 0xEF56, + 39091 - 11905: 0xEF57, + 39092 - 11905: 0xEF58, + 39093 - 11905: 0xEF59, + 39094 - 11905: 0xEF5A, + 39095 - 11905: 0xEF5B, + 39096 - 11905: 0xEF5C, + 39097 - 11905: 0xEF5D, + 39098 - 11905: 0xEF5E, + 39099 - 11905: 0xEF5F, + 39100 - 11905: 0xEF60, + 39101 - 11905: 0xEF61, + 39102 - 11905: 0xEF62, + 39103 - 11905: 0xEF63, + 39104 - 11905: 0xEF64, + 39105 - 11905: 0xEF65, + 39106 - 11905: 0xEF66, + 39107 - 11905: 0xEF67, + 39108 - 11905: 0xEF68, + 39109 - 11905: 0xEF69, + 39110 - 11905: 0xEF6A, + 39111 - 11905: 0xEF6B, + 39112 - 11905: 0xEF6C, + 39113 - 11905: 0xEF6D, + 39114 - 11905: 0xEF6E, + 39115 - 11905: 0xEF6F, + 39116 - 11905: 0xEF70, + 39117 - 11905: 0xEF71, + 39118 - 11905: 0xB7E7, + 39119 - 11905: 0xEF72, + 39120 - 11905: 0xEF73, + 39121 - 11905: 0xECA9, + 39122 - 11905: 0xECAA, + 39123 - 11905: 0xECAB, + 39124 - 11905: 0xEF74, + 39125 - 11905: 0xECAC, + 39126 - 11905: 0xEF75, + 39127 - 11905: 0xEF76, + 39128 - 11905: 0xC6AE, + 39129 - 11905: 0xECAD, + 39130 - 11905: 0xECAE, + 39131 - 11905: 0xEF77, + 39132 - 11905: 0xEF78, + 39133 - 11905: 0xEF79, + 39134 - 11905: 0xB7C9, + 39135 - 11905: 0xCAB3, + 39136 - 11905: 0xEF7A, + 39137 - 11905: 0xEF7B, + 39138 - 11905: 0xEF7C, + 39139 - 11905: 0xEF7D, + 39140 - 11905: 0xEF7E, + 39141 - 11905: 0xEF80, + 39142 - 11905: 0xEF81, + 39143 - 11905: 0xE2B8, + 39144 - 11905: 0xF7CF, + 39145 - 11905: 0xEF82, + 39146 - 11905: 0xEF83, + 39147 - 11905: 0xEF84, + 39148 - 11905: 0xEF85, + 39149 - 11905: 0xEF86, + 39150 - 11905: 0xEF87, + 39151 - 11905: 0xEF88, + 39152 - 11905: 0xEF89, + 39153 - 11905: 0xEF8A, + 39154 - 11905: 0xEF8B, + 39155 - 11905: 0xEF8C, + 39156 - 11905: 0xEF8D, + 39157 - 11905: 0xEF8E, + 39158 - 11905: 0xEF8F, + 39159 - 11905: 0xEF90, + 39160 - 11905: 0xEF91, + 39161 - 11905: 0xEF92, + 39162 - 11905: 0xEF93, + 39163 - 11905: 0xEF94, + 39164 - 11905: 0xEF95, + 39165 - 11905: 0xEF96, + 39166 - 11905: 0xEF97, + 39167 - 11905: 0xEF98, + 39168 - 11905: 0xEF99, + 39169 - 11905: 0xEF9A, + 39170 - 11905: 0xEF9B, + 39171 - 11905: 0xEF9C, + 39172 - 11905: 0xEF9D, + 39173 - 11905: 0xEF9E, + 39174 - 11905: 0xEF9F, + 39175 - 11905: 0xEFA0, + 39176 - 11905: 0xF040, + 39177 - 11905: 0xF041, + 39178 - 11905: 0xF042, + 39179 - 11905: 0xF043, + 39180 - 11905: 0xF044, + 39181 - 11905: 0xF7D0, + 39182 - 11905: 0xF045, + 39183 - 11905: 0xF046, + 39184 - 11905: 0xB2CD, + 39185 - 11905: 0xF047, + 39186 - 11905: 0xF048, + 39187 - 11905: 0xF049, + 39188 - 11905: 0xF04A, + 39189 - 11905: 0xF04B, + 39190 - 11905: 0xF04C, + 39191 - 11905: 0xF04D, + 39192 - 11905: 0xF04E, + 39193 - 11905: 0xF04F, + 39194 - 11905: 0xF050, + 39195 - 11905: 0xF051, + 39196 - 11905: 0xF052, + 39197 - 11905: 0xF053, + 39198 - 11905: 0xF054, + 39199 - 11905: 0xF055, + 39200 - 11905: 0xF056, + 39201 - 11905: 0xF057, + 39202 - 11905: 0xF058, + 39203 - 11905: 0xF059, + 39204 - 11905: 0xF05A, + 39205 - 11905: 0xF05B, + 39206 - 11905: 0xF05C, + 39207 - 11905: 0xF05D, + 39208 - 11905: 0xF05E, + 39209 - 11905: 0xF05F, + 39210 - 11905: 0xF060, + 39211 - 11905: 0xF061, + 39212 - 11905: 0xF062, + 39213 - 11905: 0xF063, + 39214 - 11905: 0xF7D1, + 39215 - 11905: 0xF064, + 39216 - 11905: 0xF065, + 39217 - 11905: 0xF066, + 39218 - 11905: 0xF067, + 39219 - 11905: 0xF068, + 39220 - 11905: 0xF069, + 39221 - 11905: 0xF06A, + 39222 - 11905: 0xF06B, + 39223 - 11905: 0xF06C, + 39224 - 11905: 0xF06D, + 39225 - 11905: 0xF06E, + 39226 - 11905: 0xF06F, + 39227 - 11905: 0xF070, + 39228 - 11905: 0xF071, + 39229 - 11905: 0xF072, + 39230 - 11905: 0xF073, + 39231 - 11905: 0xF074, + 39232 - 11905: 0xF075, + 39233 - 11905: 0xF076, + 39234 - 11905: 0xF077, + 39235 - 11905: 0xF078, + 39236 - 11905: 0xF079, + 39237 - 11905: 0xF07A, + 39238 - 11905: 0xF07B, + 39239 - 11905: 0xF07C, + 39240 - 11905: 0xF07D, + 39241 - 11905: 0xF07E, + 39242 - 11905: 0xF080, + 39243 - 11905: 0xF081, + 39244 - 11905: 0xF082, + 39245 - 11905: 0xF083, + 39246 - 11905: 0xF084, + 39247 - 11905: 0xF085, + 39248 - 11905: 0xF086, + 39249 - 11905: 0xF087, + 39250 - 11905: 0xF088, + 39251 - 11905: 0xF089, + 39252 - 11905: 0xF7D3, + 39253 - 11905: 0xF7D2, + 39254 - 11905: 0xF08A, + 39255 - 11905: 0xF08B, + 39256 - 11905: 0xF08C, + 39257 - 11905: 0xF08D, + 39258 - 11905: 0xF08E, + 39259 - 11905: 0xF08F, + 39260 - 11905: 0xF090, + 39261 - 11905: 0xF091, + 39262 - 11905: 0xF092, + 39263 - 11905: 0xF093, + 39264 - 11905: 0xF094, + 39265 - 11905: 0xF095, + 39266 - 11905: 0xF096, + 39267 - 11905: 0xE2BB, + 39268 - 11905: 0xF097, + 39269 - 11905: 0xBCA2, + 39270 - 11905: 0xF098, + 39271 - 11905: 0xE2BC, + 39272 - 11905: 0xE2BD, + 39273 - 11905: 0xE2BE, + 39274 - 11905: 0xE2BF, + 39275 - 11905: 0xE2C0, + 39276 - 11905: 0xE2C1, + 39277 - 11905: 0xB7B9, + 39278 - 11905: 0xD2FB, + 39279 - 11905: 0xBDA4, + 39280 - 11905: 0xCACE, + 39281 - 11905: 0xB1A5, + 39282 - 11905: 0xCBC7, + 39283 - 11905: 0xF099, + 39284 - 11905: 0xE2C2, + 39285 - 11905: 0xB6FC, + 39286 - 11905: 0xC8C4, + 39287 - 11905: 0xE2C3, + 39288 - 11905: 0xF09A, + 39289 - 11905: 0xF09B, + 39290 - 11905: 0xBDC8, + 39291 - 11905: 0xF09C, + 39292 - 11905: 0xB1FD, + 39293 - 11905: 0xE2C4, + 39294 - 11905: 0xF09D, + 39295 - 11905: 0xB6F6, + 39296 - 11905: 0xE2C5, + 39297 - 11905: 0xC4D9, + 39298 - 11905: 0xF09E, + 39299 - 11905: 0xF09F, + 39300 - 11905: 0xE2C6, + 39301 - 11905: 0xCFDA, + 39302 - 11905: 0xB9DD, + 39303 - 11905: 0xE2C7, + 39304 - 11905: 0xC0A1, + 39305 - 11905: 0xF0A0, + 39306 - 11905: 0xE2C8, + 39307 - 11905: 0xB2F6, + 39308 - 11905: 0xF140, + 39309 - 11905: 0xE2C9, + 39310 - 11905: 0xF141, + 39311 - 11905: 0xC1F3, + 39312 - 11905: 0xE2CA, + 39313 - 11905: 0xE2CB, + 39314 - 11905: 0xC2F8, + 39315 - 11905: 0xE2CC, + 39316 - 11905: 0xE2CD, + 39317 - 11905: 0xE2CE, + 39318 - 11905: 0xCAD7, + 39319 - 11905: 0xD8B8, + 39320 - 11905: 0xD9E5, + 39321 - 11905: 0xCFE3, + 39322 - 11905: 0xF142, + 39323 - 11905: 0xF143, + 39324 - 11905: 0xF144, + 39325 - 11905: 0xF145, + 39326 - 11905: 0xF146, + 39327 - 11905: 0xF147, + 39328 - 11905: 0xF148, + 39329 - 11905: 0xF149, + 39330 - 11905: 0xF14A, + 39331 - 11905: 0xF14B, + 39332 - 11905: 0xF14C, + 39333 - 11905: 0xF0A5, + 39334 - 11905: 0xF14D, + 39335 - 11905: 0xF14E, + 39336 - 11905: 0xDCB0, + 39337 - 11905: 0xF14F, + 39338 - 11905: 0xF150, + 39339 - 11905: 0xF151, + 39340 - 11905: 0xF152, + 39341 - 11905: 0xF153, + 39342 - 11905: 0xF154, + 39343 - 11905: 0xF155, + 39344 - 11905: 0xF156, + 39345 - 11905: 0xF157, + 39346 - 11905: 0xF158, + 39347 - 11905: 0xF159, + 39348 - 11905: 0xF15A, + 39349 - 11905: 0xF15B, + 39350 - 11905: 0xF15C, + 39351 - 11905: 0xF15D, + 39352 - 11905: 0xF15E, + 39353 - 11905: 0xF15F, + 39354 - 11905: 0xF160, + 39355 - 11905: 0xF161, + 39356 - 11905: 0xF162, + 39357 - 11905: 0xF163, + 39358 - 11905: 0xF164, + 39359 - 11905: 0xF165, + 39360 - 11905: 0xF166, + 39361 - 11905: 0xF167, + 39362 - 11905: 0xF168, + 39363 - 11905: 0xF169, + 39364 - 11905: 0xF16A, + 39365 - 11905: 0xF16B, + 39366 - 11905: 0xF16C, + 39367 - 11905: 0xF16D, + 39368 - 11905: 0xF16E, + 39369 - 11905: 0xF16F, + 39370 - 11905: 0xF170, + 39371 - 11905: 0xF171, + 39372 - 11905: 0xF172, + 39373 - 11905: 0xF173, + 39374 - 11905: 0xF174, + 39375 - 11905: 0xF175, + 39376 - 11905: 0xF176, + 39377 - 11905: 0xF177, + 39378 - 11905: 0xF178, + 39379 - 11905: 0xF179, + 39380 - 11905: 0xF17A, + 39381 - 11905: 0xF17B, + 39382 - 11905: 0xF17C, + 39383 - 11905: 0xF17D, + 39384 - 11905: 0xF17E, + 39385 - 11905: 0xF180, + 39386 - 11905: 0xF181, + 39387 - 11905: 0xF182, + 39388 - 11905: 0xF183, + 39389 - 11905: 0xF184, + 39390 - 11905: 0xF185, + 39391 - 11905: 0xF186, + 39392 - 11905: 0xF187, + 39393 - 11905: 0xF188, + 39394 - 11905: 0xF189, + 39395 - 11905: 0xF18A, + 39396 - 11905: 0xF18B, + 39397 - 11905: 0xF18C, + 39398 - 11905: 0xF18D, + 39399 - 11905: 0xF18E, + 39400 - 11905: 0xF18F, + 39401 - 11905: 0xF190, + 39402 - 11905: 0xF191, + 39403 - 11905: 0xF192, + 39404 - 11905: 0xF193, + 39405 - 11905: 0xF194, + 39406 - 11905: 0xF195, + 39407 - 11905: 0xF196, + 39408 - 11905: 0xF197, + 39409 - 11905: 0xF198, + 39410 - 11905: 0xF199, + 39411 - 11905: 0xF19A, + 39412 - 11905: 0xF19B, + 39413 - 11905: 0xF19C, + 39414 - 11905: 0xF19D, + 39415 - 11905: 0xF19E, + 39416 - 11905: 0xF19F, + 39417 - 11905: 0xF1A0, + 39418 - 11905: 0xF240, + 39419 - 11905: 0xF241, + 39420 - 11905: 0xF242, + 39421 - 11905: 0xF243, + 39422 - 11905: 0xF244, + 39423 - 11905: 0xF245, + 39424 - 11905: 0xF246, + 39425 - 11905: 0xF247, + 39426 - 11905: 0xF248, + 39427 - 11905: 0xF249, + 39428 - 11905: 0xF24A, + 39429 - 11905: 0xF24B, + 39430 - 11905: 0xF24C, + 39431 - 11905: 0xF24D, + 39432 - 11905: 0xF24E, + 39433 - 11905: 0xF24F, + 39434 - 11905: 0xF250, + 39435 - 11905: 0xF251, + 39436 - 11905: 0xF252, + 39437 - 11905: 0xF253, + 39438 - 11905: 0xF254, + 39439 - 11905: 0xF255, + 39440 - 11905: 0xF256, + 39441 - 11905: 0xF257, + 39442 - 11905: 0xF258, + 39443 - 11905: 0xF259, + 39444 - 11905: 0xF25A, + 39445 - 11905: 0xF25B, + 39446 - 11905: 0xF25C, + 39447 - 11905: 0xF25D, + 39448 - 11905: 0xF25E, + 39449 - 11905: 0xF25F, + 39450 - 11905: 0xF260, + 39451 - 11905: 0xF261, + 39452 - 11905: 0xF262, + 39453 - 11905: 0xF263, + 39454 - 11905: 0xF264, + 39455 - 11905: 0xF265, + 39456 - 11905: 0xF266, + 39457 - 11905: 0xF267, + 39458 - 11905: 0xF268, + 39459 - 11905: 0xF269, + 39460 - 11905: 0xF26A, + 39461 - 11905: 0xF26B, + 39462 - 11905: 0xF26C, + 39463 - 11905: 0xF26D, + 39464 - 11905: 0xF26E, + 39465 - 11905: 0xF26F, + 39466 - 11905: 0xF270, + 39467 - 11905: 0xF271, + 39468 - 11905: 0xF272, + 39469 - 11905: 0xF273, + 39470 - 11905: 0xF274, + 39471 - 11905: 0xF275, + 39472 - 11905: 0xF276, + 39473 - 11905: 0xF277, + 39474 - 11905: 0xF278, + 39475 - 11905: 0xF279, + 39476 - 11905: 0xF27A, + 39477 - 11905: 0xF27B, + 39478 - 11905: 0xF27C, + 39479 - 11905: 0xF27D, + 39480 - 11905: 0xF27E, + 39481 - 11905: 0xF280, + 39482 - 11905: 0xF281, + 39483 - 11905: 0xF282, + 39484 - 11905: 0xF283, + 39485 - 11905: 0xF284, + 39486 - 11905: 0xF285, + 39487 - 11905: 0xF286, + 39488 - 11905: 0xF287, + 39489 - 11905: 0xF288, + 39490 - 11905: 0xF289, + 39491 - 11905: 0xF28A, + 39492 - 11905: 0xF28B, + 39493 - 11905: 0xF28C, + 39494 - 11905: 0xF28D, + 39495 - 11905: 0xF28E, + 39496 - 11905: 0xF28F, + 39497 - 11905: 0xF290, + 39498 - 11905: 0xF291, + 39499 - 11905: 0xF292, + 39500 - 11905: 0xF293, + 39501 - 11905: 0xF294, + 39502 - 11905: 0xF295, + 39503 - 11905: 0xF296, + 39504 - 11905: 0xF297, + 39505 - 11905: 0xF298, + 39506 - 11905: 0xF299, + 39507 - 11905: 0xF29A, + 39508 - 11905: 0xF29B, + 39509 - 11905: 0xF29C, + 39510 - 11905: 0xF29D, + 39511 - 11905: 0xF29E, + 39512 - 11905: 0xF29F, + 39513 - 11905: 0xF2A0, + 39514 - 11905: 0xF340, + 39515 - 11905: 0xF341, + 39516 - 11905: 0xF342, + 39517 - 11905: 0xF343, + 39518 - 11905: 0xF344, + 39519 - 11905: 0xF345, + 39520 - 11905: 0xF346, + 39521 - 11905: 0xF347, + 39522 - 11905: 0xF348, + 39523 - 11905: 0xF349, + 39524 - 11905: 0xF34A, + 39525 - 11905: 0xF34B, + 39526 - 11905: 0xF34C, + 39527 - 11905: 0xF34D, + 39528 - 11905: 0xF34E, + 39529 - 11905: 0xF34F, + 39530 - 11905: 0xF350, + 39531 - 11905: 0xF351, + 39532 - 11905: 0xC2ED, + 39533 - 11905: 0xD4A6, + 39534 - 11905: 0xCDD4, + 39535 - 11905: 0xD1B1, + 39536 - 11905: 0xB3DB, + 39537 - 11905: 0xC7FD, + 39538 - 11905: 0xF352, + 39539 - 11905: 0xB2B5, + 39540 - 11905: 0xC2BF, + 39541 - 11905: 0xE6E0, + 39542 - 11905: 0xCABB, + 39543 - 11905: 0xE6E1, + 39544 - 11905: 0xE6E2, + 39545 - 11905: 0xBED4, + 39546 - 11905: 0xE6E3, + 39547 - 11905: 0xD7A4, + 39548 - 11905: 0xCDD5, + 39549 - 11905: 0xE6E5, + 39550 - 11905: 0xBCDD, + 39551 - 11905: 0xE6E4, + 39552 - 11905: 0xE6E6, + 39553 - 11905: 0xE6E7, + 39554 - 11905: 0xC2EE, + 39555 - 11905: 0xF353, + 39556 - 11905: 0xBDBE, + 39557 - 11905: 0xE6E8, + 39558 - 11905: 0xC2E6, + 39559 - 11905: 0xBAA7, + 39560 - 11905: 0xE6E9, + 39561 - 11905: 0xF354, + 39562 - 11905: 0xE6EA, + 39563 - 11905: 0xB3D2, + 39564 - 11905: 0xD1E9, + 39565 - 11905: 0xF355, + 39566 - 11905: 0xF356, + 39567 - 11905: 0xBFA5, + 39568 - 11905: 0xE6EB, + 39569 - 11905: 0xC6EF, + 39570 - 11905: 0xE6EC, + 39571 - 11905: 0xE6ED, + 39572 - 11905: 0xF357, + 39573 - 11905: 0xF358, + 39574 - 11905: 0xE6EE, + 39575 - 11905: 0xC6AD, + 39576 - 11905: 0xE6EF, + 39577 - 11905: 0xF359, + 39578 - 11905: 0xC9A7, + 39579 - 11905: 0xE6F0, + 39580 - 11905: 0xE6F1, + 39581 - 11905: 0xE6F2, + 39582 - 11905: 0xE5B9, + 39583 - 11905: 0xE6F3, + 39584 - 11905: 0xE6F4, + 39585 - 11905: 0xC2E2, + 39586 - 11905: 0xE6F5, + 39587 - 11905: 0xE6F6, + 39588 - 11905: 0xD6E8, + 39589 - 11905: 0xE6F7, + 39590 - 11905: 0xF35A, + 39591 - 11905: 0xE6F8, + 39592 - 11905: 0xB9C7, + 39593 - 11905: 0xF35B, + 39594 - 11905: 0xF35C, + 39595 - 11905: 0xF35D, + 39596 - 11905: 0xF35E, + 39597 - 11905: 0xF35F, + 39598 - 11905: 0xF360, + 39599 - 11905: 0xF361, + 39600 - 11905: 0xF7BB, + 39601 - 11905: 0xF7BA, + 39602 - 11905: 0xF362, + 39603 - 11905: 0xF363, + 39604 - 11905: 0xF364, + 39605 - 11905: 0xF365, + 39606 - 11905: 0xF7BE, + 39607 - 11905: 0xF7BC, + 39608 - 11905: 0xBAA1, + 39609 - 11905: 0xF366, + 39610 - 11905: 0xF7BF, + 39611 - 11905: 0xF367, + 39612 - 11905: 0xF7C0, + 39613 - 11905: 0xF368, + 39614 - 11905: 0xF369, + 39615 - 11905: 0xF36A, + 39616 - 11905: 0xF7C2, + 39617 - 11905: 0xF7C1, + 39618 - 11905: 0xF7C4, + 39619 - 11905: 0xF36B, + 39620 - 11905: 0xF36C, + 39621 - 11905: 0xF7C3, + 39622 - 11905: 0xF36D, + 39623 - 11905: 0xF36E, + 39624 - 11905: 0xF36F, + 39625 - 11905: 0xF370, + 39626 - 11905: 0xF371, + 39627 - 11905: 0xF7C5, + 39628 - 11905: 0xF7C6, + 39629 - 11905: 0xF372, + 39630 - 11905: 0xF373, + 39631 - 11905: 0xF374, + 39632 - 11905: 0xF375, + 39633 - 11905: 0xF7C7, + 39634 - 11905: 0xF376, + 39635 - 11905: 0xCBE8, + 39636 - 11905: 0xF377, + 39637 - 11905: 0xF378, + 39638 - 11905: 0xF379, + 39639 - 11905: 0xF37A, + 39640 - 11905: 0xB8DF, + 39641 - 11905: 0xF37B, + 39642 - 11905: 0xF37C, + 39643 - 11905: 0xF37D, + 39644 - 11905: 0xF37E, + 39645 - 11905: 0xF380, + 39646 - 11905: 0xF381, + 39647 - 11905: 0xF7D4, + 39648 - 11905: 0xF382, + 39649 - 11905: 0xF7D5, + 39650 - 11905: 0xF383, + 39651 - 11905: 0xF384, + 39652 - 11905: 0xF385, + 39653 - 11905: 0xF386, + 39654 - 11905: 0xF7D6, + 39655 - 11905: 0xF387, + 39656 - 11905: 0xF388, + 39657 - 11905: 0xF389, + 39658 - 11905: 0xF38A, + 39659 - 11905: 0xF7D8, + 39660 - 11905: 0xF38B, + 39661 - 11905: 0xF7DA, + 39662 - 11905: 0xF38C, + 39663 - 11905: 0xF7D7, + 39664 - 11905: 0xF38D, + 39665 - 11905: 0xF38E, + 39666 - 11905: 0xF38F, + 39667 - 11905: 0xF390, + 39668 - 11905: 0xF391, + 39669 - 11905: 0xF392, + 39670 - 11905: 0xF393, + 39671 - 11905: 0xF394, + 39672 - 11905: 0xF395, + 39673 - 11905: 0xF7DB, + 39674 - 11905: 0xF396, + 39675 - 11905: 0xF7D9, + 39676 - 11905: 0xF397, + 39677 - 11905: 0xF398, + 39678 - 11905: 0xF399, + 39679 - 11905: 0xF39A, + 39680 - 11905: 0xF39B, + 39681 - 11905: 0xF39C, + 39682 - 11905: 0xF39D, + 39683 - 11905: 0xD7D7, + 39684 - 11905: 0xF39E, + 39685 - 11905: 0xF39F, + 39686 - 11905: 0xF3A0, + 39687 - 11905: 0xF440, + 39688 - 11905: 0xF7DC, + 39689 - 11905: 0xF441, + 39690 - 11905: 0xF442, + 39691 - 11905: 0xF443, + 39692 - 11905: 0xF444, + 39693 - 11905: 0xF445, + 39694 - 11905: 0xF446, + 39695 - 11905: 0xF7DD, + 39696 - 11905: 0xF447, + 39697 - 11905: 0xF448, + 39698 - 11905: 0xF449, + 39699 - 11905: 0xF7DE, + 39700 - 11905: 0xF44A, + 39701 - 11905: 0xF44B, + 39702 - 11905: 0xF44C, + 39703 - 11905: 0xF44D, + 39704 - 11905: 0xF44E, + 39705 - 11905: 0xF44F, + 39706 - 11905: 0xF450, + 39707 - 11905: 0xF451, + 39708 - 11905: 0xF452, + 39709 - 11905: 0xF453, + 39710 - 11905: 0xF454, + 39711 - 11905: 0xF7DF, + 39712 - 11905: 0xF455, + 39713 - 11905: 0xF456, + 39714 - 11905: 0xF457, + 39715 - 11905: 0xF7E0, + 39716 - 11905: 0xF458, + 39717 - 11905: 0xF459, + 39718 - 11905: 0xF45A, + 39719 - 11905: 0xF45B, + 39720 - 11905: 0xF45C, + 39721 - 11905: 0xF45D, + 39722 - 11905: 0xF45E, + 39723 - 11905: 0xF45F, + 39724 - 11905: 0xF460, + 39725 - 11905: 0xF461, + 39726 - 11905: 0xF462, + 39727 - 11905: 0xDBCB, + 39728 - 11905: 0xF463, + 39729 - 11905: 0xF464, + 39730 - 11905: 0xD8AA, + 39731 - 11905: 0xF465, + 39732 - 11905: 0xF466, + 39733 - 11905: 0xF467, + 39734 - 11905: 0xF468, + 39735 - 11905: 0xF469, + 39736 - 11905: 0xF46A, + 39737 - 11905: 0xF46B, + 39738 - 11905: 0xF46C, + 39739 - 11905: 0xE5F7, + 39740 - 11905: 0xB9ED, + 39741 - 11905: 0xF46D, + 39742 - 11905: 0xF46E, + 39743 - 11905: 0xF46F, + 39744 - 11905: 0xF470, + 39745 - 11905: 0xBFFD, + 39746 - 11905: 0xBBEA, + 39747 - 11905: 0xF7C9, + 39748 - 11905: 0xC6C7, + 39749 - 11905: 0xF7C8, + 39750 - 11905: 0xF471, + 39751 - 11905: 0xF7CA, + 39752 - 11905: 0xF7CC, + 39753 - 11905: 0xF7CB, + 39754 - 11905: 0xF472, + 39755 - 11905: 0xF473, + 39756 - 11905: 0xF474, + 39757 - 11905: 0xF7CD, + 39758 - 11905: 0xF475, + 39759 - 11905: 0xCEBA, + 39760 - 11905: 0xF476, + 39761 - 11905: 0xF7CE, + 39762 - 11905: 0xF477, + 39763 - 11905: 0xF478, + 39764 - 11905: 0xC4A7, + 39765 - 11905: 0xF479, + 39766 - 11905: 0xF47A, + 39767 - 11905: 0xF47B, + 39768 - 11905: 0xF47C, + 39769 - 11905: 0xF47D, + 39770 - 11905: 0xF47E, + 39771 - 11905: 0xF480, + 39772 - 11905: 0xF481, + 39773 - 11905: 0xF482, + 39774 - 11905: 0xF483, + 39775 - 11905: 0xF484, + 39776 - 11905: 0xF485, + 39777 - 11905: 0xF486, + 39778 - 11905: 0xF487, + 39779 - 11905: 0xF488, + 39780 - 11905: 0xF489, + 39781 - 11905: 0xF48A, + 39782 - 11905: 0xF48B, + 39783 - 11905: 0xF48C, + 39784 - 11905: 0xF48D, + 39785 - 11905: 0xF48E, + 39786 - 11905: 0xF48F, + 39787 - 11905: 0xF490, + 39788 - 11905: 0xF491, + 39789 - 11905: 0xF492, + 39790 - 11905: 0xF493, + 39791 - 11905: 0xF494, + 39792 - 11905: 0xF495, + 39793 - 11905: 0xF496, + 39794 - 11905: 0xF497, + 39795 - 11905: 0xF498, + 39796 - 11905: 0xF499, + 39797 - 11905: 0xF49A, + 39798 - 11905: 0xF49B, + 39799 - 11905: 0xF49C, + 39800 - 11905: 0xF49D, + 39801 - 11905: 0xF49E, + 39802 - 11905: 0xF49F, + 39803 - 11905: 0xF4A0, + 39804 - 11905: 0xF540, + 39805 - 11905: 0xF541, + 39806 - 11905: 0xF542, + 39807 - 11905: 0xF543, + 39808 - 11905: 0xF544, + 39809 - 11905: 0xF545, + 39810 - 11905: 0xF546, + 39811 - 11905: 0xF547, + 39812 - 11905: 0xF548, + 39813 - 11905: 0xF549, + 39814 - 11905: 0xF54A, + 39815 - 11905: 0xF54B, + 39816 - 11905: 0xF54C, + 39817 - 11905: 0xF54D, + 39818 - 11905: 0xF54E, + 39819 - 11905: 0xF54F, + 39820 - 11905: 0xF550, + 39821 - 11905: 0xF551, + 39822 - 11905: 0xF552, + 39823 - 11905: 0xF553, + 39824 - 11905: 0xF554, + 39825 - 11905: 0xF555, + 39826 - 11905: 0xF556, + 39827 - 11905: 0xF557, + 39828 - 11905: 0xF558, + 39829 - 11905: 0xF559, + 39830 - 11905: 0xF55A, + 39831 - 11905: 0xF55B, + 39832 - 11905: 0xF55C, + 39833 - 11905: 0xF55D, + 39834 - 11905: 0xF55E, + 39835 - 11905: 0xF55F, + 39836 - 11905: 0xF560, + 39837 - 11905: 0xF561, + 39838 - 11905: 0xF562, + 39839 - 11905: 0xF563, + 39840 - 11905: 0xF564, + 39841 - 11905: 0xF565, + 39842 - 11905: 0xF566, + 39843 - 11905: 0xF567, + 39844 - 11905: 0xF568, + 39845 - 11905: 0xF569, + 39846 - 11905: 0xF56A, + 39847 - 11905: 0xF56B, + 39848 - 11905: 0xF56C, + 39849 - 11905: 0xF56D, + 39850 - 11905: 0xF56E, + 39851 - 11905: 0xF56F, + 39852 - 11905: 0xF570, + 39853 - 11905: 0xF571, + 39854 - 11905: 0xF572, + 39855 - 11905: 0xF573, + 39856 - 11905: 0xF574, + 39857 - 11905: 0xF575, + 39858 - 11905: 0xF576, + 39859 - 11905: 0xF577, + 39860 - 11905: 0xF578, + 39861 - 11905: 0xF579, + 39862 - 11905: 0xF57A, + 39863 - 11905: 0xF57B, + 39864 - 11905: 0xF57C, + 39865 - 11905: 0xF57D, + 39866 - 11905: 0xF57E, + 39867 - 11905: 0xF580, + 39868 - 11905: 0xF581, + 39869 - 11905: 0xF582, + 39870 - 11905: 0xF583, + 39871 - 11905: 0xF584, + 39872 - 11905: 0xF585, + 39873 - 11905: 0xF586, + 39874 - 11905: 0xF587, + 39875 - 11905: 0xF588, + 39876 - 11905: 0xF589, + 39877 - 11905: 0xF58A, + 39878 - 11905: 0xF58B, + 39879 - 11905: 0xF58C, + 39880 - 11905: 0xF58D, + 39881 - 11905: 0xF58E, + 39882 - 11905: 0xF58F, + 39883 - 11905: 0xF590, + 39884 - 11905: 0xF591, + 39885 - 11905: 0xF592, + 39886 - 11905: 0xF593, + 39887 - 11905: 0xF594, + 39888 - 11905: 0xF595, + 39889 - 11905: 0xF596, + 39890 - 11905: 0xF597, + 39891 - 11905: 0xF598, + 39892 - 11905: 0xF599, + 39893 - 11905: 0xF59A, + 39894 - 11905: 0xF59B, + 39895 - 11905: 0xF59C, + 39896 - 11905: 0xF59D, + 39897 - 11905: 0xF59E, + 39898 - 11905: 0xF59F, + 39899 - 11905: 0xF5A0, + 39900 - 11905: 0xF640, + 39901 - 11905: 0xF641, + 39902 - 11905: 0xF642, + 39903 - 11905: 0xF643, + 39904 - 11905: 0xF644, + 39905 - 11905: 0xF645, + 39906 - 11905: 0xF646, + 39907 - 11905: 0xF647, + 39908 - 11905: 0xF648, + 39909 - 11905: 0xF649, + 39910 - 11905: 0xF64A, + 39911 - 11905: 0xF64B, + 39912 - 11905: 0xF64C, + 39913 - 11905: 0xF64D, + 39914 - 11905: 0xF64E, + 39915 - 11905: 0xF64F, + 39916 - 11905: 0xF650, + 39917 - 11905: 0xF651, + 39918 - 11905: 0xF652, + 39919 - 11905: 0xF653, + 39920 - 11905: 0xF654, + 39921 - 11905: 0xF655, + 39922 - 11905: 0xF656, + 39923 - 11905: 0xF657, + 39924 - 11905: 0xF658, + 39925 - 11905: 0xF659, + 39926 - 11905: 0xF65A, + 39927 - 11905: 0xF65B, + 39928 - 11905: 0xF65C, + 39929 - 11905: 0xF65D, + 39930 - 11905: 0xF65E, + 39931 - 11905: 0xF65F, + 39932 - 11905: 0xF660, + 39933 - 11905: 0xF661, + 39934 - 11905: 0xF662, + 39935 - 11905: 0xF663, + 39936 - 11905: 0xF664, + 39937 - 11905: 0xF665, + 39938 - 11905: 0xF666, + 39939 - 11905: 0xF667, + 39940 - 11905: 0xF668, + 39941 - 11905: 0xF669, + 39942 - 11905: 0xF66A, + 39943 - 11905: 0xF66B, + 39944 - 11905: 0xF66C, + 39945 - 11905: 0xF66D, + 39946 - 11905: 0xF66E, + 39947 - 11905: 0xF66F, + 39948 - 11905: 0xF670, + 39949 - 11905: 0xF671, + 39950 - 11905: 0xF672, + 39951 - 11905: 0xF673, + 39952 - 11905: 0xF674, + 39953 - 11905: 0xF675, + 39954 - 11905: 0xF676, + 39955 - 11905: 0xF677, + 39956 - 11905: 0xF678, + 39957 - 11905: 0xF679, + 39958 - 11905: 0xF67A, + 39959 - 11905: 0xF67B, + 39960 - 11905: 0xF67C, + 39961 - 11905: 0xF67D, + 39962 - 11905: 0xF67E, + 39963 - 11905: 0xF680, + 39964 - 11905: 0xF681, + 39965 - 11905: 0xF682, + 39966 - 11905: 0xF683, + 39967 - 11905: 0xF684, + 39968 - 11905: 0xF685, + 39969 - 11905: 0xF686, + 39970 - 11905: 0xF687, + 39971 - 11905: 0xF688, + 39972 - 11905: 0xF689, + 39973 - 11905: 0xF68A, + 39974 - 11905: 0xF68B, + 39975 - 11905: 0xF68C, + 39976 - 11905: 0xF68D, + 39977 - 11905: 0xF68E, + 39978 - 11905: 0xF68F, + 39979 - 11905: 0xF690, + 39980 - 11905: 0xF691, + 39981 - 11905: 0xF692, + 39982 - 11905: 0xF693, + 39983 - 11905: 0xF694, + 39984 - 11905: 0xF695, + 39985 - 11905: 0xF696, + 39986 - 11905: 0xF697, + 39987 - 11905: 0xF698, + 39988 - 11905: 0xF699, + 39989 - 11905: 0xF69A, + 39990 - 11905: 0xF69B, + 39991 - 11905: 0xF69C, + 39992 - 11905: 0xF69D, + 39993 - 11905: 0xF69E, + 39994 - 11905: 0xF69F, + 39995 - 11905: 0xF6A0, + 39996 - 11905: 0xF740, + 39997 - 11905: 0xF741, + 39998 - 11905: 0xF742, + 39999 - 11905: 0xF743, + 40000 - 11905: 0xF744, + 40001 - 11905: 0xF745, + 40002 - 11905: 0xF746, + 40003 - 11905: 0xF747, + 40004 - 11905: 0xF748, + 40005 - 11905: 0xF749, + 40006 - 11905: 0xF74A, + 40007 - 11905: 0xF74B, + 40008 - 11905: 0xF74C, + 40009 - 11905: 0xF74D, + 40010 - 11905: 0xF74E, + 40011 - 11905: 0xF74F, + 40012 - 11905: 0xF750, + 40013 - 11905: 0xF751, + 40014 - 11905: 0xF752, + 40015 - 11905: 0xF753, + 40016 - 11905: 0xF754, + 40017 - 11905: 0xF755, + 40018 - 11905: 0xF756, + 40019 - 11905: 0xF757, + 40020 - 11905: 0xF758, + 40021 - 11905: 0xF759, + 40022 - 11905: 0xF75A, + 40023 - 11905: 0xF75B, + 40024 - 11905: 0xF75C, + 40025 - 11905: 0xF75D, + 40026 - 11905: 0xF75E, + 40027 - 11905: 0xF75F, + 40028 - 11905: 0xF760, + 40029 - 11905: 0xF761, + 40030 - 11905: 0xF762, + 40031 - 11905: 0xF763, + 40032 - 11905: 0xF764, + 40033 - 11905: 0xF765, + 40034 - 11905: 0xF766, + 40035 - 11905: 0xF767, + 40036 - 11905: 0xF768, + 40037 - 11905: 0xF769, + 40038 - 11905: 0xF76A, + 40039 - 11905: 0xF76B, + 40040 - 11905: 0xF76C, + 40041 - 11905: 0xF76D, + 40042 - 11905: 0xF76E, + 40043 - 11905: 0xF76F, + 40044 - 11905: 0xF770, + 40045 - 11905: 0xF771, + 40046 - 11905: 0xF772, + 40047 - 11905: 0xF773, + 40048 - 11905: 0xF774, + 40049 - 11905: 0xF775, + 40050 - 11905: 0xF776, + 40051 - 11905: 0xF777, + 40052 - 11905: 0xF778, + 40053 - 11905: 0xF779, + 40054 - 11905: 0xF77A, + 40055 - 11905: 0xF77B, + 40056 - 11905: 0xF77C, + 40057 - 11905: 0xF77D, + 40058 - 11905: 0xF77E, + 40059 - 11905: 0xF780, + 40060 - 11905: 0xD3E3, + 40061 - 11905: 0xF781, + 40062 - 11905: 0xF782, + 40063 - 11905: 0xF6CF, + 40064 - 11905: 0xF783, + 40065 - 11905: 0xC2B3, + 40066 - 11905: 0xF6D0, + 40067 - 11905: 0xF784, + 40068 - 11905: 0xF785, + 40069 - 11905: 0xF6D1, + 40070 - 11905: 0xF6D2, + 40071 - 11905: 0xF6D3, + 40072 - 11905: 0xF6D4, + 40073 - 11905: 0xF786, + 40074 - 11905: 0xF787, + 40075 - 11905: 0xF6D6, + 40076 - 11905: 0xF788, + 40077 - 11905: 0xB1AB, + 40078 - 11905: 0xF6D7, + 40079 - 11905: 0xF789, + 40080 - 11905: 0xF6D8, + 40081 - 11905: 0xF6D9, + 40082 - 11905: 0xF6DA, + 40083 - 11905: 0xF78A, + 40084 - 11905: 0xF6DB, + 40085 - 11905: 0xF6DC, + 40086 - 11905: 0xF78B, + 40087 - 11905: 0xF78C, + 40088 - 11905: 0xF78D, + 40089 - 11905: 0xF78E, + 40090 - 11905: 0xF6DD, + 40091 - 11905: 0xF6DE, + 40092 - 11905: 0xCFCA, + 40093 - 11905: 0xF78F, + 40094 - 11905: 0xF6DF, + 40095 - 11905: 0xF6E0, + 40096 - 11905: 0xF6E1, + 40097 - 11905: 0xF6E2, + 40098 - 11905: 0xF6E3, + 40099 - 11905: 0xF6E4, + 40100 - 11905: 0xC0F0, + 40101 - 11905: 0xF6E5, + 40102 - 11905: 0xF6E6, + 40103 - 11905: 0xF6E7, + 40104 - 11905: 0xF6E8, + 40105 - 11905: 0xF6E9, + 40106 - 11905: 0xF790, + 40107 - 11905: 0xF6EA, + 40108 - 11905: 0xF791, + 40109 - 11905: 0xF6EB, + 40110 - 11905: 0xF6EC, + 40111 - 11905: 0xF792, + 40112 - 11905: 0xF6ED, + 40113 - 11905: 0xF6EE, + 40114 - 11905: 0xF6EF, + 40115 - 11905: 0xF6F0, + 40116 - 11905: 0xF6F1, + 40117 - 11905: 0xF6F2, + 40118 - 11905: 0xF6F3, + 40119 - 11905: 0xF6F4, + 40120 - 11905: 0xBEA8, + 40121 - 11905: 0xF793, + 40122 - 11905: 0xF6F5, + 40123 - 11905: 0xF6F6, + 40124 - 11905: 0xF6F7, + 40125 - 11905: 0xF6F8, + 40126 - 11905: 0xF794, + 40127 - 11905: 0xF795, + 40128 - 11905: 0xF796, + 40129 - 11905: 0xF797, + 40130 - 11905: 0xF798, + 40131 - 11905: 0xC8FA, + 40132 - 11905: 0xF6F9, + 40133 - 11905: 0xF6FA, + 40134 - 11905: 0xF6FB, + 40135 - 11905: 0xF6FC, + 40136 - 11905: 0xF799, + 40137 - 11905: 0xF79A, + 40138 - 11905: 0xF6FD, + 40139 - 11905: 0xF6FE, + 40140 - 11905: 0xF7A1, + 40141 - 11905: 0xF7A2, + 40142 - 11905: 0xF7A3, + 40143 - 11905: 0xF7A4, + 40144 - 11905: 0xF7A5, + 40145 - 11905: 0xF79B, + 40146 - 11905: 0xF79C, + 40147 - 11905: 0xF7A6, + 40148 - 11905: 0xF7A7, + 40149 - 11905: 0xF7A8, + 40150 - 11905: 0xB1EE, + 40151 - 11905: 0xF7A9, + 40152 - 11905: 0xF7AA, + 40153 - 11905: 0xF7AB, + 40154 - 11905: 0xF79D, + 40155 - 11905: 0xF79E, + 40156 - 11905: 0xF7AC, + 40157 - 11905: 0xF7AD, + 40158 - 11905: 0xC1DB, + 40159 - 11905: 0xF7AE, + 40160 - 11905: 0xF79F, + 40161 - 11905: 0xF7A0, + 40162 - 11905: 0xF7AF, + 40163 - 11905: 0xF840, + 40164 - 11905: 0xF841, + 40165 - 11905: 0xF842, + 40166 - 11905: 0xF843, + 40167 - 11905: 0xF844, + 40168 - 11905: 0xF845, + 40169 - 11905: 0xF846, + 40170 - 11905: 0xF847, + 40171 - 11905: 0xF848, + 40172 - 11905: 0xF849, + 40173 - 11905: 0xF84A, + 40174 - 11905: 0xF84B, + 40175 - 11905: 0xF84C, + 40176 - 11905: 0xF84D, + 40177 - 11905: 0xF84E, + 40178 - 11905: 0xF84F, + 40179 - 11905: 0xF850, + 40180 - 11905: 0xF851, + 40181 - 11905: 0xF852, + 40182 - 11905: 0xF853, + 40183 - 11905: 0xF854, + 40184 - 11905: 0xF855, + 40185 - 11905: 0xF856, + 40186 - 11905: 0xF857, + 40187 - 11905: 0xF858, + 40188 - 11905: 0xF859, + 40189 - 11905: 0xF85A, + 40190 - 11905: 0xF85B, + 40191 - 11905: 0xF85C, + 40192 - 11905: 0xF85D, + 40193 - 11905: 0xF85E, + 40194 - 11905: 0xF85F, + 40195 - 11905: 0xF860, + 40196 - 11905: 0xF861, + 40197 - 11905: 0xF862, + 40198 - 11905: 0xF863, + 40199 - 11905: 0xF864, + 40200 - 11905: 0xF865, + 40201 - 11905: 0xF866, + 40202 - 11905: 0xF867, + 40203 - 11905: 0xF868, + 40204 - 11905: 0xF869, + 40205 - 11905: 0xF86A, + 40206 - 11905: 0xF86B, + 40207 - 11905: 0xF86C, + 40208 - 11905: 0xF86D, + 40209 - 11905: 0xF86E, + 40210 - 11905: 0xF86F, + 40211 - 11905: 0xF870, + 40212 - 11905: 0xF871, + 40213 - 11905: 0xF872, + 40214 - 11905: 0xF873, + 40215 - 11905: 0xF874, + 40216 - 11905: 0xF875, + 40217 - 11905: 0xF876, + 40218 - 11905: 0xF877, + 40219 - 11905: 0xF878, + 40220 - 11905: 0xF879, + 40221 - 11905: 0xF87A, + 40222 - 11905: 0xF87B, + 40223 - 11905: 0xF87C, + 40224 - 11905: 0xF87D, + 40225 - 11905: 0xF87E, + 40226 - 11905: 0xF880, + 40227 - 11905: 0xF881, + 40228 - 11905: 0xF882, + 40229 - 11905: 0xF883, + 40230 - 11905: 0xF884, + 40231 - 11905: 0xF885, + 40232 - 11905: 0xF886, + 40233 - 11905: 0xF887, + 40234 - 11905: 0xF888, + 40235 - 11905: 0xF889, + 40236 - 11905: 0xF88A, + 40237 - 11905: 0xF88B, + 40238 - 11905: 0xF88C, + 40239 - 11905: 0xF88D, + 40240 - 11905: 0xF88E, + 40241 - 11905: 0xF88F, + 40242 - 11905: 0xF890, + 40243 - 11905: 0xF891, + 40244 - 11905: 0xF892, + 40245 - 11905: 0xF893, + 40246 - 11905: 0xF894, + 40247 - 11905: 0xF895, + 40248 - 11905: 0xF896, + 40249 - 11905: 0xF897, + 40250 - 11905: 0xF898, + 40251 - 11905: 0xF899, + 40252 - 11905: 0xF89A, + 40253 - 11905: 0xF89B, + 40254 - 11905: 0xF89C, + 40255 - 11905: 0xF89D, + 40256 - 11905: 0xF89E, + 40257 - 11905: 0xF89F, + 40258 - 11905: 0xF8A0, + 40259 - 11905: 0xF940, + 40260 - 11905: 0xF941, + 40261 - 11905: 0xF942, + 40262 - 11905: 0xF943, + 40263 - 11905: 0xF944, + 40264 - 11905: 0xF945, + 40265 - 11905: 0xF946, + 40266 - 11905: 0xF947, + 40267 - 11905: 0xF948, + 40268 - 11905: 0xF949, + 40269 - 11905: 0xF94A, + 40270 - 11905: 0xF94B, + 40271 - 11905: 0xF94C, + 40272 - 11905: 0xF94D, + 40273 - 11905: 0xF94E, + 40274 - 11905: 0xF94F, + 40275 - 11905: 0xF950, + 40276 - 11905: 0xF951, + 40277 - 11905: 0xF952, + 40278 - 11905: 0xF953, + 40279 - 11905: 0xF954, + 40280 - 11905: 0xF955, + 40281 - 11905: 0xF956, + 40282 - 11905: 0xF957, + 40283 - 11905: 0xF958, + 40284 - 11905: 0xF959, + 40285 - 11905: 0xF95A, + 40286 - 11905: 0xF95B, + 40287 - 11905: 0xF95C, + 40288 - 11905: 0xF95D, + 40289 - 11905: 0xF95E, + 40290 - 11905: 0xF95F, + 40291 - 11905: 0xF960, + 40292 - 11905: 0xF961, + 40293 - 11905: 0xF962, + 40294 - 11905: 0xF963, + 40295 - 11905: 0xF964, + 40296 - 11905: 0xF965, + 40297 - 11905: 0xF966, + 40298 - 11905: 0xF967, + 40299 - 11905: 0xF968, + 40300 - 11905: 0xF969, + 40301 - 11905: 0xF96A, + 40302 - 11905: 0xF96B, + 40303 - 11905: 0xF96C, + 40304 - 11905: 0xF96D, + 40305 - 11905: 0xF96E, + 40306 - 11905: 0xF96F, + 40307 - 11905: 0xF970, + 40308 - 11905: 0xF971, + 40309 - 11905: 0xF972, + 40310 - 11905: 0xF973, + 40311 - 11905: 0xF974, + 40312 - 11905: 0xF975, + 40313 - 11905: 0xF976, + 40314 - 11905: 0xF977, + 40315 - 11905: 0xF978, + 40316 - 11905: 0xF979, + 40317 - 11905: 0xF97A, + 40318 - 11905: 0xF97B, + 40319 - 11905: 0xF97C, + 40320 - 11905: 0xF97D, + 40321 - 11905: 0xF97E, + 40322 - 11905: 0xF980, + 40323 - 11905: 0xF981, + 40324 - 11905: 0xF982, + 40325 - 11905: 0xF983, + 40326 - 11905: 0xF984, + 40327 - 11905: 0xF985, + 40328 - 11905: 0xF986, + 40329 - 11905: 0xF987, + 40330 - 11905: 0xF988, + 40331 - 11905: 0xF989, + 40332 - 11905: 0xF98A, + 40333 - 11905: 0xF98B, + 40334 - 11905: 0xF98C, + 40335 - 11905: 0xF98D, + 40336 - 11905: 0xF98E, + 40337 - 11905: 0xF98F, + 40338 - 11905: 0xF990, + 40339 - 11905: 0xF991, + 40340 - 11905: 0xF992, + 40341 - 11905: 0xF993, + 40342 - 11905: 0xF994, + 40343 - 11905: 0xF995, + 40344 - 11905: 0xF996, + 40345 - 11905: 0xF997, + 40346 - 11905: 0xF998, + 40347 - 11905: 0xF999, + 40348 - 11905: 0xF99A, + 40349 - 11905: 0xF99B, + 40350 - 11905: 0xF99C, + 40351 - 11905: 0xF99D, + 40352 - 11905: 0xF99E, + 40353 - 11905: 0xF99F, + 40354 - 11905: 0xF9A0, + 40355 - 11905: 0xFA40, + 40356 - 11905: 0xFA41, + 40357 - 11905: 0xFA42, + 40358 - 11905: 0xFA43, + 40359 - 11905: 0xFA44, + 40360 - 11905: 0xFA45, + 40361 - 11905: 0xFA46, + 40362 - 11905: 0xFA47, + 40363 - 11905: 0xFA48, + 40364 - 11905: 0xFA49, + 40365 - 11905: 0xFA4A, + 40366 - 11905: 0xFA4B, + 40367 - 11905: 0xFA4C, + 40368 - 11905: 0xFA4D, + 40369 - 11905: 0xFA4E, + 40370 - 11905: 0xFA4F, + 40371 - 11905: 0xFA50, + 40372 - 11905: 0xFA51, + 40373 - 11905: 0xFA52, + 40374 - 11905: 0xFA53, + 40375 - 11905: 0xFA54, + 40376 - 11905: 0xFA55, + 40377 - 11905: 0xFA56, + 40378 - 11905: 0xFA57, + 40379 - 11905: 0xFA58, + 40380 - 11905: 0xFA59, + 40381 - 11905: 0xFA5A, + 40382 - 11905: 0xFA5B, + 40383 - 11905: 0xFA5C, + 40384 - 11905: 0xFA5D, + 40385 - 11905: 0xFA5E, + 40386 - 11905: 0xFA5F, + 40387 - 11905: 0xFA60, + 40388 - 11905: 0xFA61, + 40389 - 11905: 0xFA62, + 40390 - 11905: 0xFA63, + 40391 - 11905: 0xFA64, + 40392 - 11905: 0xFA65, + 40393 - 11905: 0xFA66, + 40394 - 11905: 0xFA67, + 40395 - 11905: 0xFA68, + 40396 - 11905: 0xFA69, + 40397 - 11905: 0xFA6A, + 40398 - 11905: 0xFA6B, + 40399 - 11905: 0xFA6C, + 40400 - 11905: 0xFA6D, + 40401 - 11905: 0xFA6E, + 40402 - 11905: 0xFA6F, + 40403 - 11905: 0xFA70, + 40404 - 11905: 0xFA71, + 40405 - 11905: 0xFA72, + 40406 - 11905: 0xFA73, + 40407 - 11905: 0xFA74, + 40408 - 11905: 0xFA75, + 40409 - 11905: 0xFA76, + 40410 - 11905: 0xFA77, + 40411 - 11905: 0xFA78, + 40412 - 11905: 0xFA79, + 40413 - 11905: 0xFA7A, + 40414 - 11905: 0xFA7B, + 40415 - 11905: 0xFA7C, + 40416 - 11905: 0xFA7D, + 40417 - 11905: 0xFA7E, + 40418 - 11905: 0xFA80, + 40419 - 11905: 0xFA81, + 40420 - 11905: 0xFA82, + 40421 - 11905: 0xFA83, + 40422 - 11905: 0xFA84, + 40423 - 11905: 0xFA85, + 40424 - 11905: 0xFA86, + 40425 - 11905: 0xFA87, + 40426 - 11905: 0xFA88, + 40427 - 11905: 0xFA89, + 40428 - 11905: 0xFA8A, + 40429 - 11905: 0xFA8B, + 40430 - 11905: 0xFA8C, + 40431 - 11905: 0xFA8D, + 40432 - 11905: 0xFA8E, + 40433 - 11905: 0xFA8F, + 40434 - 11905: 0xFA90, + 40435 - 11905: 0xFA91, + 40436 - 11905: 0xFA92, + 40437 - 11905: 0xFA93, + 40438 - 11905: 0xFA94, + 40439 - 11905: 0xFA95, + 40440 - 11905: 0xFA96, + 40441 - 11905: 0xFA97, + 40442 - 11905: 0xFA98, + 40443 - 11905: 0xFA99, + 40444 - 11905: 0xFA9A, + 40445 - 11905: 0xFA9B, + 40446 - 11905: 0xFA9C, + 40447 - 11905: 0xFA9D, + 40448 - 11905: 0xFA9E, + 40449 - 11905: 0xFA9F, + 40450 - 11905: 0xFAA0, + 40451 - 11905: 0xFB40, + 40452 - 11905: 0xFB41, + 40453 - 11905: 0xFB42, + 40454 - 11905: 0xFB43, + 40455 - 11905: 0xFB44, + 40456 - 11905: 0xFB45, + 40457 - 11905: 0xFB46, + 40458 - 11905: 0xFB47, + 40459 - 11905: 0xFB48, + 40460 - 11905: 0xFB49, + 40461 - 11905: 0xFB4A, + 40462 - 11905: 0xFB4B, + 40463 - 11905: 0xFB4C, + 40464 - 11905: 0xFB4D, + 40465 - 11905: 0xFB4E, + 40466 - 11905: 0xFB4F, + 40467 - 11905: 0xFB50, + 40468 - 11905: 0xFB51, + 40469 - 11905: 0xFB52, + 40470 - 11905: 0xFB53, + 40471 - 11905: 0xFB54, + 40472 - 11905: 0xFB55, + 40473 - 11905: 0xFB56, + 40474 - 11905: 0xFB57, + 40475 - 11905: 0xFB58, + 40476 - 11905: 0xFB59, + 40477 - 11905: 0xFB5A, + 40478 - 11905: 0xFB5B, + 40479 - 11905: 0xC4F1, + 40480 - 11905: 0xF0AF, + 40481 - 11905: 0xBCA6, + 40482 - 11905: 0xF0B0, + 40483 - 11905: 0xC3F9, + 40484 - 11905: 0xFB5C, + 40485 - 11905: 0xC5B8, + 40486 - 11905: 0xD1BB, + 40487 - 11905: 0xFB5D, + 40488 - 11905: 0xF0B1, + 40489 - 11905: 0xF0B2, + 40490 - 11905: 0xF0B3, + 40491 - 11905: 0xF0B4, + 40492 - 11905: 0xF0B5, + 40493 - 11905: 0xD1BC, + 40494 - 11905: 0xFB5E, + 40495 - 11905: 0xD1EC, + 40496 - 11905: 0xFB5F, + 40497 - 11905: 0xF0B7, + 40498 - 11905: 0xF0B6, + 40499 - 11905: 0xD4A7, + 40500 - 11905: 0xFB60, + 40501 - 11905: 0xCDD2, + 40502 - 11905: 0xF0B8, + 40503 - 11905: 0xF0BA, + 40504 - 11905: 0xF0B9, + 40505 - 11905: 0xF0BB, + 40506 - 11905: 0xF0BC, + 40507 - 11905: 0xFB61, + 40508 - 11905: 0xFB62, + 40509 - 11905: 0xB8EB, + 40510 - 11905: 0xF0BD, + 40511 - 11905: 0xBAE8, + 40512 - 11905: 0xFB63, + 40513 - 11905: 0xF0BE, + 40514 - 11905: 0xF0BF, + 40515 - 11905: 0xBEE9, + 40516 - 11905: 0xF0C0, + 40517 - 11905: 0xB6EC, + 40518 - 11905: 0xF0C1, + 40519 - 11905: 0xF0C2, + 40520 - 11905: 0xF0C3, + 40521 - 11905: 0xF0C4, + 40522 - 11905: 0xC8B5, + 40523 - 11905: 0xF0C5, + 40524 - 11905: 0xF0C6, + 40525 - 11905: 0xFB64, + 40526 - 11905: 0xF0C7, + 40527 - 11905: 0xC5F4, + 40528 - 11905: 0xFB65, + 40529 - 11905: 0xF0C8, + 40530 - 11905: 0xFB66, + 40531 - 11905: 0xFB67, + 40532 - 11905: 0xFB68, + 40533 - 11905: 0xF0C9, + 40534 - 11905: 0xFB69, + 40535 - 11905: 0xF0CA, + 40536 - 11905: 0xF7BD, + 40537 - 11905: 0xFB6A, + 40538 - 11905: 0xF0CB, + 40539 - 11905: 0xF0CC, + 40540 - 11905: 0xF0CD, + 40541 - 11905: 0xFB6B, + 40542 - 11905: 0xF0CE, + 40543 - 11905: 0xFB6C, + 40544 - 11905: 0xFB6D, + 40545 - 11905: 0xFB6E, + 40546 - 11905: 0xFB6F, + 40547 - 11905: 0xF0CF, + 40548 - 11905: 0xBAD7, + 40549 - 11905: 0xFB70, + 40550 - 11905: 0xF0D0, + 40551 - 11905: 0xF0D1, + 40552 - 11905: 0xF0D2, + 40553 - 11905: 0xF0D3, + 40554 - 11905: 0xF0D4, + 40555 - 11905: 0xF0D5, + 40556 - 11905: 0xF0D6, + 40557 - 11905: 0xF0D8, + 40558 - 11905: 0xFB71, + 40559 - 11905: 0xFB72, + 40560 - 11905: 0xD3A5, + 40561 - 11905: 0xF0D7, + 40562 - 11905: 0xFB73, + 40563 - 11905: 0xF0D9, + 40564 - 11905: 0xFB74, + 40565 - 11905: 0xFB75, + 40566 - 11905: 0xFB76, + 40567 - 11905: 0xFB77, + 40568 - 11905: 0xFB78, + 40569 - 11905: 0xFB79, + 40570 - 11905: 0xFB7A, + 40571 - 11905: 0xFB7B, + 40572 - 11905: 0xFB7C, + 40573 - 11905: 0xFB7D, + 40574 - 11905: 0xF5BA, + 40575 - 11905: 0xC2B9, + 40576 - 11905: 0xFB7E, + 40577 - 11905: 0xFB80, + 40578 - 11905: 0xF7E4, + 40579 - 11905: 0xFB81, + 40580 - 11905: 0xFB82, + 40581 - 11905: 0xFB83, + 40582 - 11905: 0xFB84, + 40583 - 11905: 0xF7E5, + 40584 - 11905: 0xF7E6, + 40585 - 11905: 0xFB85, + 40586 - 11905: 0xFB86, + 40587 - 11905: 0xF7E7, + 40588 - 11905: 0xFB87, + 40589 - 11905: 0xFB88, + 40590 - 11905: 0xFB89, + 40591 - 11905: 0xFB8A, + 40592 - 11905: 0xFB8B, + 40593 - 11905: 0xFB8C, + 40594 - 11905: 0xF7E8, + 40595 - 11905: 0xC2B4, + 40596 - 11905: 0xFB8D, + 40597 - 11905: 0xFB8E, + 40598 - 11905: 0xFB8F, + 40599 - 11905: 0xFB90, + 40600 - 11905: 0xFB91, + 40601 - 11905: 0xFB92, + 40602 - 11905: 0xFB93, + 40603 - 11905: 0xFB94, + 40604 - 11905: 0xFB95, + 40605 - 11905: 0xF7EA, + 40606 - 11905: 0xFB96, + 40607 - 11905: 0xF7EB, + 40608 - 11905: 0xFB97, + 40609 - 11905: 0xFB98, + 40610 - 11905: 0xFB99, + 40611 - 11905: 0xFB9A, + 40612 - 11905: 0xFB9B, + 40613 - 11905: 0xFB9C, + 40614 - 11905: 0xC2F3, + 40615 - 11905: 0xFB9D, + 40616 - 11905: 0xFB9E, + 40617 - 11905: 0xFB9F, + 40618 - 11905: 0xFBA0, + 40619 - 11905: 0xFC40, + 40620 - 11905: 0xFC41, + 40621 - 11905: 0xFC42, + 40622 - 11905: 0xFC43, + 40623 - 11905: 0xFC44, + 40624 - 11905: 0xFC45, + 40625 - 11905: 0xFC46, + 40626 - 11905: 0xFC47, + 40627 - 11905: 0xFC48, + 40628 - 11905: 0xF4F0, + 40629 - 11905: 0xFC49, + 40630 - 11905: 0xFC4A, + 40631 - 11905: 0xFC4B, + 40632 - 11905: 0xF4EF, + 40633 - 11905: 0xFC4C, + 40634 - 11905: 0xFC4D, + 40635 - 11905: 0xC2E9, + 40636 - 11905: 0xFC4E, + 40637 - 11905: 0xF7E1, + 40638 - 11905: 0xF7E2, + 40639 - 11905: 0xFC4F, + 40640 - 11905: 0xFC50, + 40641 - 11905: 0xFC51, + 40642 - 11905: 0xFC52, + 40643 - 11905: 0xFC53, + 40644 - 11905: 0xBBC6, + 40645 - 11905: 0xFC54, + 40646 - 11905: 0xFC55, + 40647 - 11905: 0xFC56, + 40648 - 11905: 0xFC57, + 40649 - 11905: 0xD9E4, + 40650 - 11905: 0xFC58, + 40651 - 11905: 0xFC59, + 40652 - 11905: 0xFC5A, + 40653 - 11905: 0xCAF2, + 40654 - 11905: 0xC0E8, + 40655 - 11905: 0xF0A4, + 40656 - 11905: 0xFC5B, + 40657 - 11905: 0xBADA, + 40658 - 11905: 0xFC5C, + 40659 - 11905: 0xFC5D, + 40660 - 11905: 0xC7AD, + 40661 - 11905: 0xFC5E, + 40662 - 11905: 0xFC5F, + 40663 - 11905: 0xFC60, + 40664 - 11905: 0xC4AC, + 40665 - 11905: 0xFC61, + 40666 - 11905: 0xFC62, + 40667 - 11905: 0xF7EC, + 40668 - 11905: 0xF7ED, + 40669 - 11905: 0xF7EE, + 40670 - 11905: 0xFC63, + 40671 - 11905: 0xF7F0, + 40672 - 11905: 0xF7EF, + 40673 - 11905: 0xFC64, + 40674 - 11905: 0xF7F1, + 40675 - 11905: 0xFC65, + 40676 - 11905: 0xFC66, + 40677 - 11905: 0xF7F4, + 40678 - 11905: 0xFC67, + 40679 - 11905: 0xF7F3, + 40680 - 11905: 0xFC68, + 40681 - 11905: 0xF7F2, + 40682 - 11905: 0xF7F5, + 40683 - 11905: 0xFC69, + 40684 - 11905: 0xFC6A, + 40685 - 11905: 0xFC6B, + 40686 - 11905: 0xFC6C, + 40687 - 11905: 0xF7F6, + 40688 - 11905: 0xFC6D, + 40689 - 11905: 0xFC6E, + 40690 - 11905: 0xFC6F, + 40691 - 11905: 0xFC70, + 40692 - 11905: 0xFC71, + 40693 - 11905: 0xFC72, + 40694 - 11905: 0xFC73, + 40695 - 11905: 0xFC74, + 40696 - 11905: 0xFC75, + 40697 - 11905: 0xEDE9, + 40698 - 11905: 0xFC76, + 40699 - 11905: 0xEDEA, + 40700 - 11905: 0xEDEB, + 40701 - 11905: 0xFC77, + 40702 - 11905: 0xF6BC, + 40703 - 11905: 0xFC78, + 40704 - 11905: 0xFC79, + 40705 - 11905: 0xFC7A, + 40706 - 11905: 0xFC7B, + 40707 - 11905: 0xFC7C, + 40708 - 11905: 0xFC7D, + 40709 - 11905: 0xFC7E, + 40710 - 11905: 0xFC80, + 40711 - 11905: 0xFC81, + 40712 - 11905: 0xFC82, + 40713 - 11905: 0xFC83, + 40714 - 11905: 0xFC84, + 40715 - 11905: 0xF6BD, + 40716 - 11905: 0xFC85, + 40717 - 11905: 0xF6BE, + 40718 - 11905: 0xB6A6, + 40719 - 11905: 0xFC86, + 40720 - 11905: 0xD8BE, + 40721 - 11905: 0xFC87, + 40722 - 11905: 0xFC88, + 40723 - 11905: 0xB9C4, + 40724 - 11905: 0xFC89, + 40725 - 11905: 0xFC8A, + 40726 - 11905: 0xFC8B, + 40727 - 11905: 0xD8BB, + 40728 - 11905: 0xFC8C, + 40729 - 11905: 0xDCB1, + 40730 - 11905: 0xFC8D, + 40731 - 11905: 0xFC8E, + 40732 - 11905: 0xFC8F, + 40733 - 11905: 0xFC90, + 40734 - 11905: 0xFC91, + 40735 - 11905: 0xFC92, + 40736 - 11905: 0xCAF3, + 40737 - 11905: 0xFC93, + 40738 - 11905: 0xF7F7, + 40739 - 11905: 0xFC94, + 40740 - 11905: 0xFC95, + 40741 - 11905: 0xFC96, + 40742 - 11905: 0xFC97, + 40743 - 11905: 0xFC98, + 40744 - 11905: 0xFC99, + 40745 - 11905: 0xFC9A, + 40746 - 11905: 0xFC9B, + 40747 - 11905: 0xFC9C, + 40748 - 11905: 0xF7F8, + 40749 - 11905: 0xFC9D, + 40750 - 11905: 0xFC9E, + 40751 - 11905: 0xF7F9, + 40752 - 11905: 0xFC9F, + 40753 - 11905: 0xFCA0, + 40754 - 11905: 0xFD40, + 40755 - 11905: 0xFD41, + 40756 - 11905: 0xFD42, + 40757 - 11905: 0xFD43, + 40758 - 11905: 0xFD44, + 40759 - 11905: 0xF7FB, + 40760 - 11905: 0xFD45, + 40761 - 11905: 0xF7FA, + 40762 - 11905: 0xFD46, + 40763 - 11905: 0xB1C7, + 40764 - 11905: 0xFD47, + 40765 - 11905: 0xF7FC, + 40766 - 11905: 0xF7FD, + 40767 - 11905: 0xFD48, + 40768 - 11905: 0xFD49, + 40769 - 11905: 0xFD4A, + 40770 - 11905: 0xFD4B, + 40771 - 11905: 0xFD4C, + 40772 - 11905: 0xF7FE, + 40773 - 11905: 0xFD4D, + 40774 - 11905: 0xFD4E, + 40775 - 11905: 0xFD4F, + 40776 - 11905: 0xFD50, + 40777 - 11905: 0xFD51, + 40778 - 11905: 0xFD52, + 40779 - 11905: 0xFD53, + 40780 - 11905: 0xFD54, + 40781 - 11905: 0xFD55, + 40782 - 11905: 0xFD56, + 40783 - 11905: 0xFD57, + 40784 - 11905: 0xC6EB, + 40785 - 11905: 0xECB4, + 40786 - 11905: 0xFD58, + 40787 - 11905: 0xFD59, + 40788 - 11905: 0xFD5A, + 40789 - 11905: 0xFD5B, + 40790 - 11905: 0xFD5C, + 40791 - 11905: 0xFD5D, + 40792 - 11905: 0xFD5E, + 40793 - 11905: 0xFD5F, + 40794 - 11905: 0xFD60, + 40795 - 11905: 0xFD61, + 40796 - 11905: 0xFD62, + 40797 - 11905: 0xFD63, + 40798 - 11905: 0xFD64, + 40799 - 11905: 0xFD65, + 40800 - 11905: 0xFD66, + 40801 - 11905: 0xFD67, + 40802 - 11905: 0xFD68, + 40803 - 11905: 0xFD69, + 40804 - 11905: 0xFD6A, + 40805 - 11905: 0xFD6B, + 40806 - 11905: 0xFD6C, + 40807 - 11905: 0xFD6D, + 40808 - 11905: 0xFD6E, + 40809 - 11905: 0xFD6F, + 40810 - 11905: 0xFD70, + 40811 - 11905: 0xFD71, + 40812 - 11905: 0xFD72, + 40813 - 11905: 0xFD73, + 40814 - 11905: 0xFD74, + 40815 - 11905: 0xFD75, + 40816 - 11905: 0xFD76, + 40817 - 11905: 0xFD77, + 40818 - 11905: 0xFD78, + 40819 - 11905: 0xFD79, + 40820 - 11905: 0xFD7A, + 40821 - 11905: 0xFD7B, + 40822 - 11905: 0xFD7C, + 40823 - 11905: 0xFD7D, + 40824 - 11905: 0xFD7E, + 40825 - 11905: 0xFD80, + 40826 - 11905: 0xFD81, + 40827 - 11905: 0xFD82, + 40828 - 11905: 0xFD83, + 40829 - 11905: 0xFD84, + 40830 - 11905: 0xFD85, + 40831 - 11905: 0xB3DD, + 40832 - 11905: 0xF6B3, + 40833 - 11905: 0xFD86, + 40834 - 11905: 0xFD87, + 40835 - 11905: 0xF6B4, + 40836 - 11905: 0xC1E4, + 40837 - 11905: 0xF6B5, + 40838 - 11905: 0xF6B6, + 40839 - 11905: 0xF6B7, + 40840 - 11905: 0xF6B8, + 40841 - 11905: 0xF6B9, + 40842 - 11905: 0xF6BA, + 40843 - 11905: 0xC8A3, + 40844 - 11905: 0xF6BB, + 40845 - 11905: 0xFD88, + 40846 - 11905: 0xFD89, + 40847 - 11905: 0xFD8A, + 40848 - 11905: 0xFD8B, + 40849 - 11905: 0xFD8C, + 40850 - 11905: 0xFD8D, + 40851 - 11905: 0xFD8E, + 40852 - 11905: 0xFD8F, + 40853 - 11905: 0xFD90, + 40854 - 11905: 0xFD91, + 40855 - 11905: 0xFD92, + 40856 - 11905: 0xFD93, + 40857 - 11905: 0xC1FA, + 40858 - 11905: 0xB9A8, + 40859 - 11905: 0xEDE8, + 40860 - 11905: 0xFD94, + 40861 - 11905: 0xFD95, + 40862 - 11905: 0xFD96, + 40863 - 11905: 0xB9EA, + 40864 - 11905: 0xD9DF, + 40865 - 11905: 0xFD97, + 40866 - 11905: 0xFD98, + 40867 - 11905: 0xFD99, + 40868 - 11905: 0xFD9A, + 40869 - 11905: 0xFD9B, +} + +const encode1Low, encode1High = 8208, 9795 + +var encode1 = [...]uint16{ + 8208 - 8208: 0xA95C, + 8211 - 8208: 0xA843, + 8212 - 8208: 0xA1AA, + 8213 - 8208: 0xA844, + 8214 - 8208: 0xA1AC, + 8216 - 8208: 0xA1AE, + 8217 - 8208: 0xA1AF, + 8220 - 8208: 0xA1B0, + 8221 - 8208: 0xA1B1, + 8229 - 8208: 0xA845, + 8230 - 8208: 0xA1AD, + 8240 - 8208: 0xA1EB, + 8242 - 8208: 0xA1E4, + 8243 - 8208: 0xA1E5, + 8245 - 8208: 0xA846, + 8251 - 8208: 0xA1F9, + 8364 - 8208: 0xA2E3, + 8451 - 8208: 0xA1E6, + 8453 - 8208: 0xA847, + 8457 - 8208: 0xA848, + 8470 - 8208: 0xA1ED, + 8481 - 8208: 0xA959, + 8544 - 8208: 0xA2F1, + 8545 - 8208: 0xA2F2, + 8546 - 8208: 0xA2F3, + 8547 - 8208: 0xA2F4, + 8548 - 8208: 0xA2F5, + 8549 - 8208: 0xA2F6, + 8550 - 8208: 0xA2F7, + 8551 - 8208: 0xA2F8, + 8552 - 8208: 0xA2F9, + 8553 - 8208: 0xA2FA, + 8554 - 8208: 0xA2FB, + 8555 - 8208: 0xA2FC, + 8560 - 8208: 0xA2A1, + 8561 - 8208: 0xA2A2, + 8562 - 8208: 0xA2A3, + 8563 - 8208: 0xA2A4, + 8564 - 8208: 0xA2A5, + 8565 - 8208: 0xA2A6, + 8566 - 8208: 0xA2A7, + 8567 - 8208: 0xA2A8, + 8568 - 8208: 0xA2A9, + 8569 - 8208: 0xA2AA, + 8592 - 8208: 0xA1FB, + 8593 - 8208: 0xA1FC, + 8594 - 8208: 0xA1FA, + 8595 - 8208: 0xA1FD, + 8598 - 8208: 0xA849, + 8599 - 8208: 0xA84A, + 8600 - 8208: 0xA84B, + 8601 - 8208: 0xA84C, + 8712 - 8208: 0xA1CA, + 8719 - 8208: 0xA1C7, + 8721 - 8208: 0xA1C6, + 8725 - 8208: 0xA84D, + 8730 - 8208: 0xA1CC, + 8733 - 8208: 0xA1D8, + 8734 - 8208: 0xA1DE, + 8735 - 8208: 0xA84E, + 8736 - 8208: 0xA1CF, + 8739 - 8208: 0xA84F, + 8741 - 8208: 0xA1CE, + 8743 - 8208: 0xA1C4, + 8744 - 8208: 0xA1C5, + 8745 - 8208: 0xA1C9, + 8746 - 8208: 0xA1C8, + 8747 - 8208: 0xA1D2, + 8750 - 8208: 0xA1D3, + 8756 - 8208: 0xA1E0, + 8757 - 8208: 0xA1DF, + 8758 - 8208: 0xA1C3, + 8759 - 8208: 0xA1CB, + 8765 - 8208: 0xA1D7, + 8776 - 8208: 0xA1D6, + 8780 - 8208: 0xA1D5, + 8786 - 8208: 0xA850, + 8800 - 8208: 0xA1D9, + 8801 - 8208: 0xA1D4, + 8804 - 8208: 0xA1DC, + 8805 - 8208: 0xA1DD, + 8806 - 8208: 0xA851, + 8807 - 8208: 0xA852, + 8814 - 8208: 0xA1DA, + 8815 - 8208: 0xA1DB, + 8853 - 8208: 0xA892, + 8857 - 8208: 0xA1D1, + 8869 - 8208: 0xA1CD, + 8895 - 8208: 0xA853, + 8978 - 8208: 0xA1D0, + 9312 - 8208: 0xA2D9, + 9313 - 8208: 0xA2DA, + 9314 - 8208: 0xA2DB, + 9315 - 8208: 0xA2DC, + 9316 - 8208: 0xA2DD, + 9317 - 8208: 0xA2DE, + 9318 - 8208: 0xA2DF, + 9319 - 8208: 0xA2E0, + 9320 - 8208: 0xA2E1, + 9321 - 8208: 0xA2E2, + 9332 - 8208: 0xA2C5, + 9333 - 8208: 0xA2C6, + 9334 - 8208: 0xA2C7, + 9335 - 8208: 0xA2C8, + 9336 - 8208: 0xA2C9, + 9337 - 8208: 0xA2CA, + 9338 - 8208: 0xA2CB, + 9339 - 8208: 0xA2CC, + 9340 - 8208: 0xA2CD, + 9341 - 8208: 0xA2CE, + 9342 - 8208: 0xA2CF, + 9343 - 8208: 0xA2D0, + 9344 - 8208: 0xA2D1, + 9345 - 8208: 0xA2D2, + 9346 - 8208: 0xA2D3, + 9347 - 8208: 0xA2D4, + 9348 - 8208: 0xA2D5, + 9349 - 8208: 0xA2D6, + 9350 - 8208: 0xA2D7, + 9351 - 8208: 0xA2D8, + 9352 - 8208: 0xA2B1, + 9353 - 8208: 0xA2B2, + 9354 - 8208: 0xA2B3, + 9355 - 8208: 0xA2B4, + 9356 - 8208: 0xA2B5, + 9357 - 8208: 0xA2B6, + 9358 - 8208: 0xA2B7, + 9359 - 8208: 0xA2B8, + 9360 - 8208: 0xA2B9, + 9361 - 8208: 0xA2BA, + 9362 - 8208: 0xA2BB, + 9363 - 8208: 0xA2BC, + 9364 - 8208: 0xA2BD, + 9365 - 8208: 0xA2BE, + 9366 - 8208: 0xA2BF, + 9367 - 8208: 0xA2C0, + 9368 - 8208: 0xA2C1, + 9369 - 8208: 0xA2C2, + 9370 - 8208: 0xA2C3, + 9371 - 8208: 0xA2C4, + 9472 - 8208: 0xA9A4, + 9473 - 8208: 0xA9A5, + 9474 - 8208: 0xA9A6, + 9475 - 8208: 0xA9A7, + 9476 - 8208: 0xA9A8, + 9477 - 8208: 0xA9A9, + 9478 - 8208: 0xA9AA, + 9479 - 8208: 0xA9AB, + 9480 - 8208: 0xA9AC, + 9481 - 8208: 0xA9AD, + 9482 - 8208: 0xA9AE, + 9483 - 8208: 0xA9AF, + 9484 - 8208: 0xA9B0, + 9485 - 8208: 0xA9B1, + 9486 - 8208: 0xA9B2, + 9487 - 8208: 0xA9B3, + 9488 - 8208: 0xA9B4, + 9489 - 8208: 0xA9B5, + 9490 - 8208: 0xA9B6, + 9491 - 8208: 0xA9B7, + 9492 - 8208: 0xA9B8, + 9493 - 8208: 0xA9B9, + 9494 - 8208: 0xA9BA, + 9495 - 8208: 0xA9BB, + 9496 - 8208: 0xA9BC, + 9497 - 8208: 0xA9BD, + 9498 - 8208: 0xA9BE, + 9499 - 8208: 0xA9BF, + 9500 - 8208: 0xA9C0, + 9501 - 8208: 0xA9C1, + 9502 - 8208: 0xA9C2, + 9503 - 8208: 0xA9C3, + 9504 - 8208: 0xA9C4, + 9505 - 8208: 0xA9C5, + 9506 - 8208: 0xA9C6, + 9507 - 8208: 0xA9C7, + 9508 - 8208: 0xA9C8, + 9509 - 8208: 0xA9C9, + 9510 - 8208: 0xA9CA, + 9511 - 8208: 0xA9CB, + 9512 - 8208: 0xA9CC, + 9513 - 8208: 0xA9CD, + 9514 - 8208: 0xA9CE, + 9515 - 8208: 0xA9CF, + 9516 - 8208: 0xA9D0, + 9517 - 8208: 0xA9D1, + 9518 - 8208: 0xA9D2, + 9519 - 8208: 0xA9D3, + 9520 - 8208: 0xA9D4, + 9521 - 8208: 0xA9D5, + 9522 - 8208: 0xA9D6, + 9523 - 8208: 0xA9D7, + 9524 - 8208: 0xA9D8, + 9525 - 8208: 0xA9D9, + 9526 - 8208: 0xA9DA, + 9527 - 8208: 0xA9DB, + 9528 - 8208: 0xA9DC, + 9529 - 8208: 0xA9DD, + 9530 - 8208: 0xA9DE, + 9531 - 8208: 0xA9DF, + 9532 - 8208: 0xA9E0, + 9533 - 8208: 0xA9E1, + 9534 - 8208: 0xA9E2, + 9535 - 8208: 0xA9E3, + 9536 - 8208: 0xA9E4, + 9537 - 8208: 0xA9E5, + 9538 - 8208: 0xA9E6, + 9539 - 8208: 0xA9E7, + 9540 - 8208: 0xA9E8, + 9541 - 8208: 0xA9E9, + 9542 - 8208: 0xA9EA, + 9543 - 8208: 0xA9EB, + 9544 - 8208: 0xA9EC, + 9545 - 8208: 0xA9ED, + 9546 - 8208: 0xA9EE, + 9547 - 8208: 0xA9EF, + 9552 - 8208: 0xA854, + 9553 - 8208: 0xA855, + 9554 - 8208: 0xA856, + 9555 - 8208: 0xA857, + 9556 - 8208: 0xA858, + 9557 - 8208: 0xA859, + 9558 - 8208: 0xA85A, + 9559 - 8208: 0xA85B, + 9560 - 8208: 0xA85C, + 9561 - 8208: 0xA85D, + 9562 - 8208: 0xA85E, + 9563 - 8208: 0xA85F, + 9564 - 8208: 0xA860, + 9565 - 8208: 0xA861, + 9566 - 8208: 0xA862, + 9567 - 8208: 0xA863, + 9568 - 8208: 0xA864, + 9569 - 8208: 0xA865, + 9570 - 8208: 0xA866, + 9571 - 8208: 0xA867, + 9572 - 8208: 0xA868, + 9573 - 8208: 0xA869, + 9574 - 8208: 0xA86A, + 9575 - 8208: 0xA86B, + 9576 - 8208: 0xA86C, + 9577 - 8208: 0xA86D, + 9578 - 8208: 0xA86E, + 9579 - 8208: 0xA86F, + 9580 - 8208: 0xA870, + 9581 - 8208: 0xA871, + 9582 - 8208: 0xA872, + 9583 - 8208: 0xA873, + 9584 - 8208: 0xA874, + 9585 - 8208: 0xA875, + 9586 - 8208: 0xA876, + 9587 - 8208: 0xA877, + 9601 - 8208: 0xA878, + 9602 - 8208: 0xA879, + 9603 - 8208: 0xA87A, + 9604 - 8208: 0xA87B, + 9605 - 8208: 0xA87C, + 9606 - 8208: 0xA87D, + 9607 - 8208: 0xA87E, + 9608 - 8208: 0xA880, + 9609 - 8208: 0xA881, + 9610 - 8208: 0xA882, + 9611 - 8208: 0xA883, + 9612 - 8208: 0xA884, + 9613 - 8208: 0xA885, + 9614 - 8208: 0xA886, + 9615 - 8208: 0xA887, + 9619 - 8208: 0xA888, + 9620 - 8208: 0xA889, + 9621 - 8208: 0xA88A, + 9632 - 8208: 0xA1F6, + 9633 - 8208: 0xA1F5, + 9650 - 8208: 0xA1F8, + 9651 - 8208: 0xA1F7, + 9660 - 8208: 0xA88B, + 9661 - 8208: 0xA88C, + 9670 - 8208: 0xA1F4, + 9671 - 8208: 0xA1F3, + 9675 - 8208: 0xA1F0, + 9678 - 8208: 0xA1F2, + 9679 - 8208: 0xA1F1, + 9698 - 8208: 0xA88D, + 9699 - 8208: 0xA88E, + 9700 - 8208: 0xA88F, + 9701 - 8208: 0xA890, + 9733 - 8208: 0xA1EF, + 9734 - 8208: 0xA1EE, + 9737 - 8208: 0xA891, + 9792 - 8208: 0xA1E2, + 9794 - 8208: 0xA1E1, +} + +const encode2Low, encode2High = 164, 1106 + +var encode2 = [...]uint16{ + 164 - 164: 0xA1E8, + 167 - 164: 0xA1EC, + 168 - 164: 0xA1A7, + 176 - 164: 0xA1E3, + 177 - 164: 0xA1C0, + 183 - 164: 0xA1A4, + 215 - 164: 0xA1C1, + 224 - 164: 0xA8A4, + 225 - 164: 0xA8A2, + 232 - 164: 0xA8A8, + 233 - 164: 0xA8A6, + 234 - 164: 0xA8BA, + 236 - 164: 0xA8AC, + 237 - 164: 0xA8AA, + 242 - 164: 0xA8B0, + 243 - 164: 0xA8AE, + 247 - 164: 0xA1C2, + 249 - 164: 0xA8B4, + 250 - 164: 0xA8B2, + 252 - 164: 0xA8B9, + 257 - 164: 0xA8A1, + 275 - 164: 0xA8A5, + 283 - 164: 0xA8A7, + 299 - 164: 0xA8A9, + 324 - 164: 0xA8BD, + 328 - 164: 0xA8BE, + 333 - 164: 0xA8AD, + 363 - 164: 0xA8B1, + 462 - 164: 0xA8A3, + 464 - 164: 0xA8AB, + 466 - 164: 0xA8AF, + 468 - 164: 0xA8B3, + 470 - 164: 0xA8B5, + 472 - 164: 0xA8B6, + 474 - 164: 0xA8B7, + 476 - 164: 0xA8B8, + 505 - 164: 0xA8BF, + 593 - 164: 0xA8BB, + 609 - 164: 0xA8C0, + 711 - 164: 0xA1A6, + 713 - 164: 0xA1A5, + 714 - 164: 0xA840, + 715 - 164: 0xA841, + 729 - 164: 0xA842, + 913 - 164: 0xA6A1, + 914 - 164: 0xA6A2, + 915 - 164: 0xA6A3, + 916 - 164: 0xA6A4, + 917 - 164: 0xA6A5, + 918 - 164: 0xA6A6, + 919 - 164: 0xA6A7, + 920 - 164: 0xA6A8, + 921 - 164: 0xA6A9, + 922 - 164: 0xA6AA, + 923 - 164: 0xA6AB, + 924 - 164: 0xA6AC, + 925 - 164: 0xA6AD, + 926 - 164: 0xA6AE, + 927 - 164: 0xA6AF, + 928 - 164: 0xA6B0, + 929 - 164: 0xA6B1, + 931 - 164: 0xA6B2, + 932 - 164: 0xA6B3, + 933 - 164: 0xA6B4, + 934 - 164: 0xA6B5, + 935 - 164: 0xA6B6, + 936 - 164: 0xA6B7, + 937 - 164: 0xA6B8, + 945 - 164: 0xA6C1, + 946 - 164: 0xA6C2, + 947 - 164: 0xA6C3, + 948 - 164: 0xA6C4, + 949 - 164: 0xA6C5, + 950 - 164: 0xA6C6, + 951 - 164: 0xA6C7, + 952 - 164: 0xA6C8, + 953 - 164: 0xA6C9, + 954 - 164: 0xA6CA, + 955 - 164: 0xA6CB, + 956 - 164: 0xA6CC, + 957 - 164: 0xA6CD, + 958 - 164: 0xA6CE, + 959 - 164: 0xA6CF, + 960 - 164: 0xA6D0, + 961 - 164: 0xA6D1, + 963 - 164: 0xA6D2, + 964 - 164: 0xA6D3, + 965 - 164: 0xA6D4, + 966 - 164: 0xA6D5, + 967 - 164: 0xA6D6, + 968 - 164: 0xA6D7, + 969 - 164: 0xA6D8, + 1025 - 164: 0xA7A7, + 1040 - 164: 0xA7A1, + 1041 - 164: 0xA7A2, + 1042 - 164: 0xA7A3, + 1043 - 164: 0xA7A4, + 1044 - 164: 0xA7A5, + 1045 - 164: 0xA7A6, + 1046 - 164: 0xA7A8, + 1047 - 164: 0xA7A9, + 1048 - 164: 0xA7AA, + 1049 - 164: 0xA7AB, + 1050 - 164: 0xA7AC, + 1051 - 164: 0xA7AD, + 1052 - 164: 0xA7AE, + 1053 - 164: 0xA7AF, + 1054 - 164: 0xA7B0, + 1055 - 164: 0xA7B1, + 1056 - 164: 0xA7B2, + 1057 - 164: 0xA7B3, + 1058 - 164: 0xA7B4, + 1059 - 164: 0xA7B5, + 1060 - 164: 0xA7B6, + 1061 - 164: 0xA7B7, + 1062 - 164: 0xA7B8, + 1063 - 164: 0xA7B9, + 1064 - 164: 0xA7BA, + 1065 - 164: 0xA7BB, + 1066 - 164: 0xA7BC, + 1067 - 164: 0xA7BD, + 1068 - 164: 0xA7BE, + 1069 - 164: 0xA7BF, + 1070 - 164: 0xA7C0, + 1071 - 164: 0xA7C1, + 1072 - 164: 0xA7D1, + 1073 - 164: 0xA7D2, + 1074 - 164: 0xA7D3, + 1075 - 164: 0xA7D4, + 1076 - 164: 0xA7D5, + 1077 - 164: 0xA7D6, + 1078 - 164: 0xA7D8, + 1079 - 164: 0xA7D9, + 1080 - 164: 0xA7DA, + 1081 - 164: 0xA7DB, + 1082 - 164: 0xA7DC, + 1083 - 164: 0xA7DD, + 1084 - 164: 0xA7DE, + 1085 - 164: 0xA7DF, + 1086 - 164: 0xA7E0, + 1087 - 164: 0xA7E1, + 1088 - 164: 0xA7E2, + 1089 - 164: 0xA7E3, + 1090 - 164: 0xA7E4, + 1091 - 164: 0xA7E5, + 1092 - 164: 0xA7E6, + 1093 - 164: 0xA7E7, + 1094 - 164: 0xA7E8, + 1095 - 164: 0xA7E9, + 1096 - 164: 0xA7EA, + 1097 - 164: 0xA7EB, + 1098 - 164: 0xA7EC, + 1099 - 164: 0xA7ED, + 1100 - 164: 0xA7EE, + 1101 - 164: 0xA7EF, + 1102 - 164: 0xA7F0, + 1103 - 164: 0xA7F1, + 1105 - 164: 0xA7D7, +} + +const encode3Low, encode3High = 65072, 65510 + +var encode3 = [...]uint16{ + 65072 - 65072: 0xA955, + 65073 - 65072: 0xA6F2, + 65075 - 65072: 0xA6F4, + 65076 - 65072: 0xA6F5, + 65077 - 65072: 0xA6E0, + 65078 - 65072: 0xA6E1, + 65079 - 65072: 0xA6F0, + 65080 - 65072: 0xA6F1, + 65081 - 65072: 0xA6E2, + 65082 - 65072: 0xA6E3, + 65083 - 65072: 0xA6EE, + 65084 - 65072: 0xA6EF, + 65085 - 65072: 0xA6E6, + 65086 - 65072: 0xA6E7, + 65087 - 65072: 0xA6E4, + 65088 - 65072: 0xA6E5, + 65089 - 65072: 0xA6E8, + 65090 - 65072: 0xA6E9, + 65091 - 65072: 0xA6EA, + 65092 - 65072: 0xA6EB, + 65097 - 65072: 0xA968, + 65098 - 65072: 0xA969, + 65099 - 65072: 0xA96A, + 65100 - 65072: 0xA96B, + 65101 - 65072: 0xA96C, + 65102 - 65072: 0xA96D, + 65103 - 65072: 0xA96E, + 65104 - 65072: 0xA96F, + 65105 - 65072: 0xA970, + 65106 - 65072: 0xA971, + 65108 - 65072: 0xA972, + 65109 - 65072: 0xA973, + 65110 - 65072: 0xA974, + 65111 - 65072: 0xA975, + 65113 - 65072: 0xA976, + 65114 - 65072: 0xA977, + 65115 - 65072: 0xA978, + 65116 - 65072: 0xA979, + 65117 - 65072: 0xA97A, + 65118 - 65072: 0xA97B, + 65119 - 65072: 0xA97C, + 65120 - 65072: 0xA97D, + 65121 - 65072: 0xA97E, + 65122 - 65072: 0xA980, + 65123 - 65072: 0xA981, + 65124 - 65072: 0xA982, + 65125 - 65072: 0xA983, + 65126 - 65072: 0xA984, + 65128 - 65072: 0xA985, + 65129 - 65072: 0xA986, + 65130 - 65072: 0xA987, + 65131 - 65072: 0xA988, + 65281 - 65072: 0xA3A1, + 65282 - 65072: 0xA3A2, + 65283 - 65072: 0xA3A3, + 65284 - 65072: 0xA1E7, + 65285 - 65072: 0xA3A5, + 65286 - 65072: 0xA3A6, + 65287 - 65072: 0xA3A7, + 65288 - 65072: 0xA3A8, + 65289 - 65072: 0xA3A9, + 65290 - 65072: 0xA3AA, + 65291 - 65072: 0xA3AB, + 65292 - 65072: 0xA3AC, + 65293 - 65072: 0xA3AD, + 65294 - 65072: 0xA3AE, + 65295 - 65072: 0xA3AF, + 65296 - 65072: 0xA3B0, + 65297 - 65072: 0xA3B1, + 65298 - 65072: 0xA3B2, + 65299 - 65072: 0xA3B3, + 65300 - 65072: 0xA3B4, + 65301 - 65072: 0xA3B5, + 65302 - 65072: 0xA3B6, + 65303 - 65072: 0xA3B7, + 65304 - 65072: 0xA3B8, + 65305 - 65072: 0xA3B9, + 65306 - 65072: 0xA3BA, + 65307 - 65072: 0xA3BB, + 65308 - 65072: 0xA3BC, + 65309 - 65072: 0xA3BD, + 65310 - 65072: 0xA3BE, + 65311 - 65072: 0xA3BF, + 65312 - 65072: 0xA3C0, + 65313 - 65072: 0xA3C1, + 65314 - 65072: 0xA3C2, + 65315 - 65072: 0xA3C3, + 65316 - 65072: 0xA3C4, + 65317 - 65072: 0xA3C5, + 65318 - 65072: 0xA3C6, + 65319 - 65072: 0xA3C7, + 65320 - 65072: 0xA3C8, + 65321 - 65072: 0xA3C9, + 65322 - 65072: 0xA3CA, + 65323 - 65072: 0xA3CB, + 65324 - 65072: 0xA3CC, + 65325 - 65072: 0xA3CD, + 65326 - 65072: 0xA3CE, + 65327 - 65072: 0xA3CF, + 65328 - 65072: 0xA3D0, + 65329 - 65072: 0xA3D1, + 65330 - 65072: 0xA3D2, + 65331 - 65072: 0xA3D3, + 65332 - 65072: 0xA3D4, + 65333 - 65072: 0xA3D5, + 65334 - 65072: 0xA3D6, + 65335 - 65072: 0xA3D7, + 65336 - 65072: 0xA3D8, + 65337 - 65072: 0xA3D9, + 65338 - 65072: 0xA3DA, + 65339 - 65072: 0xA3DB, + 65340 - 65072: 0xA3DC, + 65341 - 65072: 0xA3DD, + 65342 - 65072: 0xA3DE, + 65343 - 65072: 0xA3DF, + 65344 - 65072: 0xA3E0, + 65345 - 65072: 0xA3E1, + 65346 - 65072: 0xA3E2, + 65347 - 65072: 0xA3E3, + 65348 - 65072: 0xA3E4, + 65349 - 65072: 0xA3E5, + 65350 - 65072: 0xA3E6, + 65351 - 65072: 0xA3E7, + 65352 - 65072: 0xA3E8, + 65353 - 65072: 0xA3E9, + 65354 - 65072: 0xA3EA, + 65355 - 65072: 0xA3EB, + 65356 - 65072: 0xA3EC, + 65357 - 65072: 0xA3ED, + 65358 - 65072: 0xA3EE, + 65359 - 65072: 0xA3EF, + 65360 - 65072: 0xA3F0, + 65361 - 65072: 0xA3F1, + 65362 - 65072: 0xA3F2, + 65363 - 65072: 0xA3F3, + 65364 - 65072: 0xA3F4, + 65365 - 65072: 0xA3F5, + 65366 - 65072: 0xA3F6, + 65367 - 65072: 0xA3F7, + 65368 - 65072: 0xA3F8, + 65369 - 65072: 0xA3F9, + 65370 - 65072: 0xA3FA, + 65371 - 65072: 0xA3FB, + 65372 - 65072: 0xA3FC, + 65373 - 65072: 0xA3FD, + 65374 - 65072: 0xA1AB, + 65504 - 65072: 0xA1E9, + 65505 - 65072: 0xA1EA, + 65506 - 65072: 0xA956, + 65507 - 65072: 0xA3FE, + 65508 - 65072: 0xA957, + 65509 - 65072: 0xA3A4, +} + +const encode4Low, encode4High = 63788, 64042 + +var encode4 = [...]uint16{ + 63788 - 63788: 0xFD9C, + 63865 - 63788: 0xFD9D, + 63893 - 63788: 0xFD9E, + 63975 - 63788: 0xFD9F, + 63985 - 63788: 0xFDA0, + 64012 - 63788: 0xFE40, + 64013 - 63788: 0xFE41, + 64014 - 63788: 0xFE42, + 64015 - 63788: 0xFE43, + 64017 - 63788: 0xFE44, + 64019 - 63788: 0xFE45, + 64020 - 63788: 0xFE46, + 64024 - 63788: 0xFE47, + 64031 - 63788: 0xFE48, + 64032 - 63788: 0xFE49, + 64033 - 63788: 0xFE4A, + 64035 - 63788: 0xFE4B, + 64036 - 63788: 0xFE4C, + 64039 - 63788: 0xFE4D, + 64040 - 63788: 0xFE4E, + 64041 - 63788: 0xFE4F, +} diff --git a/tests/vendor/golang.org/x/text/encoding/traditionalchinese/big5.go b/tests/vendor/golang.org/x/text/encoding/traditionalchinese/big5.go new file mode 100644 index 000000000..1fcddde08 --- /dev/null +++ b/tests/vendor/golang.org/x/text/encoding/traditionalchinese/big5.go @@ -0,0 +1,199 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package traditionalchinese + +import ( + "unicode/utf8" + + "golang.org/x/text/encoding" + "golang.org/x/text/encoding/internal" + "golang.org/x/text/encoding/internal/identifier" + "golang.org/x/text/transform" +) + +// All is a list of all defined encodings in this package. +var All = []encoding.Encoding{Big5} + +// Big5 is the Big5 encoding, also known as Code Page 950. +var Big5 encoding.Encoding = &big5 + +var big5 = internal.Encoding{ + &internal.SimpleEncoding{big5Decoder{}, big5Encoder{}}, + "Big5", + identifier.Big5, +} + +type big5Decoder struct{ transform.NopResetter } + +func (big5Decoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + r, size, s := rune(0), 0, "" +loop: + for ; nSrc < len(src); nSrc += size { + switch c0 := src[nSrc]; { + case c0 < utf8.RuneSelf: + r, size = rune(c0), 1 + + case 0x81 <= c0 && c0 < 0xff: + if nSrc+1 >= len(src) { + if !atEOF { + err = transform.ErrShortSrc + break loop + } + r, size = utf8.RuneError, 1 + goto write + } + c1 := src[nSrc+1] + switch { + case 0x40 <= c1 && c1 < 0x7f: + c1 -= 0x40 + case 0xa1 <= c1 && c1 < 0xff: + c1 -= 0x62 + case c1 < 0x40: + r, size = utf8.RuneError, 1 + goto write + default: + r, size = utf8.RuneError, 2 + goto write + } + r, size = '\ufffd', 2 + if i := int(c0-0x81)*157 + int(c1); i < len(decode) { + if 1133 <= i && i < 1167 { + // The two-rune special cases for LATIN CAPITAL / SMALL E WITH CIRCUMFLEX + // AND MACRON / CARON are from http://encoding.spec.whatwg.org/#big5 + switch i { + case 1133: + s = "\u00CA\u0304" + goto writeStr + case 1135: + s = "\u00CA\u030C" + goto writeStr + case 1164: + s = "\u00EA\u0304" + goto writeStr + case 1166: + s = "\u00EA\u030C" + goto writeStr + } + } + r = rune(decode[i]) + if r == 0 { + r = '\ufffd' + } + } + + default: + r, size = utf8.RuneError, 1 + } + + write: + if nDst+utf8.RuneLen(r) > len(dst) { + err = transform.ErrShortDst + break loop + } + nDst += utf8.EncodeRune(dst[nDst:], r) + continue loop + + writeStr: + if nDst+len(s) > len(dst) { + err = transform.ErrShortDst + break loop + } + nDst += copy(dst[nDst:], s) + continue loop + } + return nDst, nSrc, err +} + +type big5Encoder struct{ transform.NopResetter } + +func (big5Encoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + r, size := rune(0), 0 + for ; nSrc < len(src); nSrc += size { + r = rune(src[nSrc]) + + // Decode a 1-byte rune. + if r < utf8.RuneSelf { + size = 1 + if nDst >= len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst] = uint8(r) + nDst++ + continue + + } else { + // Decode a multi-byte rune. + r, size = utf8.DecodeRune(src[nSrc:]) + if size == 1 { + // All valid runes of size 1 (those below utf8.RuneSelf) were + // handled above. We have invalid UTF-8 or we haven't seen the + // full character yet. + if !atEOF && !utf8.FullRune(src[nSrc:]) { + err = transform.ErrShortSrc + break + } + } + } + + if r >= utf8.RuneSelf { + // func init checks that the switch covers all tables. + switch { + case encode0Low <= r && r < encode0High: + if r = rune(encode0[r-encode0Low]); r != 0 { + goto write2 + } + case encode1Low <= r && r < encode1High: + if r = rune(encode1[r-encode1Low]); r != 0 { + goto write2 + } + case encode2Low <= r && r < encode2High: + if r = rune(encode2[r-encode2Low]); r != 0 { + goto write2 + } + case encode3Low <= r && r < encode3High: + if r = rune(encode3[r-encode3Low]); r != 0 { + goto write2 + } + case encode4Low <= r && r < encode4High: + if r = rune(encode4[r-encode4Low]); r != 0 { + goto write2 + } + case encode5Low <= r && r < encode5High: + if r = rune(encode5[r-encode5Low]); r != 0 { + goto write2 + } + case encode6Low <= r && r < encode6High: + if r = rune(encode6[r-encode6Low]); r != 0 { + goto write2 + } + case encode7Low <= r && r < encode7High: + if r = rune(encode7[r-encode7Low]); r != 0 { + goto write2 + } + } + err = internal.ErrASCIIReplacement + break + } + + write2: + if nDst+2 > len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst+0] = uint8(r >> 8) + dst[nDst+1] = uint8(r) + nDst += 2 + continue + } + return nDst, nSrc, err +} + +func init() { + // Check that the hard-coded encode switch covers all tables. + if numEncodeTables != 8 { + panic("bad numEncodeTables") + } +} diff --git a/tests/vendor/golang.org/x/text/encoding/traditionalchinese/tables.go b/tests/vendor/golang.org/x/text/encoding/traditionalchinese/tables.go new file mode 100644 index 000000000..d909e38e5 --- /dev/null +++ b/tests/vendor/golang.org/x/text/encoding/traditionalchinese/tables.go @@ -0,0 +1,37142 @@ +// generated by go run maketables.go; DO NOT EDIT + +// Package traditionalchinese provides Traditional Chinese encodings such as Big5. +package traditionalchinese // import "golang.org/x/text/encoding/traditionalchinese" + +// decode is the decoding table from Big5 code to Unicode. +// It is defined at http://encoding.spec.whatwg.org/index-big5.txt +var decode = [...]uint32{ + 942: 0x000043F0, + 943: 0x00004C32, + 944: 0x00004603, + 945: 0x000045A6, + 946: 0x00004578, + 947: 0x00027267, + 948: 0x00004D77, + 949: 0x000045B3, + 950: 0x00027CB1, + 951: 0x00004CE2, + 952: 0x00027CC5, + 953: 0x00003B95, + 954: 0x00004736, + 955: 0x00004744, + 956: 0x00004C47, + 957: 0x00004C40, + 958: 0x000242BF, + 959: 0x00023617, + 960: 0x00027352, + 961: 0x00026E8B, + 962: 0x000270D2, + 963: 0x00004C57, + 964: 0x0002A351, + 965: 0x0000474F, + 966: 0x000045DA, + 967: 0x00004C85, + 968: 0x00027C6C, + 969: 0x00004D07, + 970: 0x00004AA4, + 971: 0x000046A1, + 972: 0x00026B23, + 973: 0x00007225, + 974: 0x00025A54, + 975: 0x00021A63, + 976: 0x00023E06, + 977: 0x00023F61, + 978: 0x0000664D, + 979: 0x000056FB, + 981: 0x00007D95, + 982: 0x0000591D, + 983: 0x00028BB9, + 984: 0x00003DF4, + 985: 0x00009734, + 986: 0x00027BEF, + 987: 0x00005BDB, + 988: 0x00021D5E, + 989: 0x00005AA4, + 990: 0x00003625, + 991: 0x00029EB0, + 992: 0x00005AD1, + 993: 0x00005BB7, + 994: 0x00005CFC, + 995: 0x0000676E, + 996: 0x00008593, + 997: 0x00029945, + 998: 0x00007461, + 999: 0x0000749D, + 1000: 0x00003875, + 1001: 0x00021D53, + 1002: 0x0002369E, + 1003: 0x00026021, + 1004: 0x00003EEC, + 1005: 0x000258DE, + 1006: 0x00003AF5, + 1007: 0x00007AFC, + 1008: 0x00009F97, + 1009: 0x00024161, + 1010: 0x0002890D, + 1011: 0x000231EA, + 1012: 0x00020A8A, + 1013: 0x0002325E, + 1014: 0x0000430A, + 1015: 0x00008484, + 1016: 0x00009F96, + 1017: 0x0000942F, + 1018: 0x00004930, + 1019: 0x00008613, + 1020: 0x00005896, + 1021: 0x0000974A, + 1022: 0x00009218, + 1023: 0x000079D0, + 1024: 0x00007A32, + 1025: 0x00006660, + 1026: 0x00006A29, + 1027: 0x0000889D, + 1028: 0x0000744C, + 1029: 0x00007BC5, + 1030: 0x00006782, + 1031: 0x00007A2C, + 1032: 0x0000524F, + 1033: 0x00009046, + 1034: 0x000034E6, + 1035: 0x000073C4, + 1036: 0x00025DB9, + 1037: 0x000074C6, + 1038: 0x00009FC7, + 1039: 0x000057B3, + 1040: 0x0000492F, + 1041: 0x0000544C, + 1042: 0x00004131, + 1043: 0x0002368E, + 1044: 0x00005818, + 1045: 0x00007A72, + 1046: 0x00027B65, + 1047: 0x00008B8F, + 1048: 0x000046AE, + 1049: 0x00026E88, + 1050: 0x00004181, + 1051: 0x00025D99, + 1052: 0x00007BAE, + 1053: 0x000224BC, + 1054: 0x00009FC8, + 1055: 0x000224C1, + 1056: 0x000224C9, + 1057: 0x000224CC, + 1058: 0x00009FC9, + 1059: 0x00008504, + 1060: 0x000235BB, + 1061: 0x000040B4, + 1062: 0x00009FCA, + 1063: 0x000044E1, + 1064: 0x0002ADFF, + 1065: 0x000062C1, + 1066: 0x0000706E, + 1067: 0x00009FCB, + 1099: 0x000031C0, + 1100: 0x000031C1, + 1101: 0x000031C2, + 1102: 0x000031C3, + 1103: 0x000031C4, + 1104: 0x0002010C, + 1105: 0x000031C5, + 1106: 0x000200D1, + 1107: 0x000200CD, + 1108: 0x000031C6, + 1109: 0x000031C7, + 1110: 0x000200CB, + 1111: 0x00021FE8, + 1112: 0x000031C8, + 1113: 0x000200CA, + 1114: 0x000031C9, + 1115: 0x000031CA, + 1116: 0x000031CB, + 1117: 0x000031CC, + 1118: 0x0002010E, + 1119: 0x000031CD, + 1120: 0x000031CE, + 1121: 0x00000100, + 1122: 0x000000C1, + 1123: 0x000001CD, + 1124: 0x000000C0, + 1125: 0x00000112, + 1126: 0x000000C9, + 1127: 0x0000011A, + 1128: 0x000000C8, + 1129: 0x0000014C, + 1130: 0x000000D3, + 1131: 0x000001D1, + 1132: 0x000000D2, + 1134: 0x00001EBE, + 1136: 0x00001EC0, + 1137: 0x000000CA, + 1138: 0x00000101, + 1139: 0x000000E1, + 1140: 0x000001CE, + 1141: 0x000000E0, + 1142: 0x00000251, + 1143: 0x00000113, + 1144: 0x000000E9, + 1145: 0x0000011B, + 1146: 0x000000E8, + 1147: 0x0000012B, + 1148: 0x000000ED, + 1149: 0x000001D0, + 1150: 0x000000EC, + 1151: 0x0000014D, + 1152: 0x000000F3, + 1153: 0x000001D2, + 1154: 0x000000F2, + 1155: 0x0000016B, + 1156: 0x000000FA, + 1157: 0x000001D4, + 1158: 0x000000F9, + 1159: 0x000001D6, + 1160: 0x000001D8, + 1161: 0x000001DA, + 1162: 0x000001DC, + 1163: 0x000000FC, + 1165: 0x00001EBF, + 1167: 0x00001EC1, + 1168: 0x000000EA, + 1169: 0x00000261, + 1170: 0x000023DA, + 1171: 0x000023DB, + 1256: 0x0002A3A9, + 1257: 0x00021145, + 1259: 0x0000650A, + 1262: 0x00004E3D, + 1263: 0x00006EDD, + 1264: 0x00009D4E, + 1265: 0x000091DF, + 1268: 0x00027735, + 1269: 0x00006491, + 1270: 0x00004F1A, + 1271: 0x00004F28, + 1272: 0x00004FA8, + 1273: 0x00005156, + 1274: 0x00005174, + 1275: 0x0000519C, + 1276: 0x000051E4, + 1277: 0x000052A1, + 1278: 0x000052A8, + 1279: 0x0000533B, + 1280: 0x0000534E, + 1281: 0x000053D1, + 1282: 0x000053D8, + 1283: 0x000056E2, + 1284: 0x000058F0, + 1285: 0x00005904, + 1286: 0x00005907, + 1287: 0x00005932, + 1288: 0x00005934, + 1289: 0x00005B66, + 1290: 0x00005B9E, + 1291: 0x00005B9F, + 1292: 0x00005C9A, + 1293: 0x00005E86, + 1294: 0x0000603B, + 1295: 0x00006589, + 1296: 0x000067FE, + 1297: 0x00006804, + 1298: 0x00006865, + 1299: 0x00006D4E, + 1300: 0x000070BC, + 1301: 0x00007535, + 1302: 0x00007EA4, + 1303: 0x00007EAC, + 1304: 0x00007EBA, + 1305: 0x00007EC7, + 1306: 0x00007ECF, + 1307: 0x00007EDF, + 1308: 0x00007F06, + 1309: 0x00007F37, + 1310: 0x0000827A, + 1311: 0x000082CF, + 1312: 0x0000836F, + 1313: 0x000089C6, + 1314: 0x00008BBE, + 1315: 0x00008BE2, + 1316: 0x00008F66, + 1317: 0x00008F67, + 1318: 0x00008F6E, + 1319: 0x00007411, + 1320: 0x00007CFC, + 1321: 0x00007DCD, + 1322: 0x00006946, + 1323: 0x00007AC9, + 1324: 0x00005227, + 1329: 0x0000918C, + 1330: 0x000078B8, + 1331: 0x0000915E, + 1332: 0x000080BC, + 1334: 0x00008D0B, + 1335: 0x000080F6, + 1336: 0x000209E7, + 1339: 0x0000809F, + 1340: 0x00009EC7, + 1341: 0x00004CCD, + 1342: 0x00009DC9, + 1343: 0x00009E0C, + 1344: 0x00004C3E, + 1345: 0x00029DF6, + 1346: 0x0002700E, + 1347: 0x00009E0A, + 1348: 0x0002A133, + 1349: 0x000035C1, + 1351: 0x00006E9A, + 1352: 0x0000823E, + 1353: 0x00007519, + 1355: 0x00004911, + 1356: 0x00009A6C, + 1357: 0x00009A8F, + 1358: 0x00009F99, + 1359: 0x00007987, + 1360: 0x0002846C, + 1361: 0x00021DCA, + 1362: 0x000205D0, + 1363: 0x00022AE6, + 1364: 0x00004E24, + 1365: 0x00004E81, + 1366: 0x00004E80, + 1367: 0x00004E87, + 1368: 0x00004EBF, + 1369: 0x00004EEB, + 1370: 0x00004F37, + 1371: 0x0000344C, + 1372: 0x00004FBD, + 1373: 0x00003E48, + 1374: 0x00005003, + 1375: 0x00005088, + 1376: 0x0000347D, + 1377: 0x00003493, + 1378: 0x000034A5, + 1379: 0x00005186, + 1380: 0x00005905, + 1381: 0x000051DB, + 1382: 0x000051FC, + 1383: 0x00005205, + 1384: 0x00004E89, + 1385: 0x00005279, + 1386: 0x00005290, + 1387: 0x00005327, + 1388: 0x000035C7, + 1389: 0x000053A9, + 1390: 0x00003551, + 1391: 0x000053B0, + 1392: 0x00003553, + 1393: 0x000053C2, + 1394: 0x00005423, + 1395: 0x0000356D, + 1396: 0x00003572, + 1397: 0x00003681, + 1398: 0x00005493, + 1399: 0x000054A3, + 1400: 0x000054B4, + 1401: 0x000054B9, + 1402: 0x000054D0, + 1403: 0x000054EF, + 1404: 0x00005518, + 1405: 0x00005523, + 1406: 0x00005528, + 1407: 0x00003598, + 1408: 0x0000553F, + 1409: 0x000035A5, + 1410: 0x000035BF, + 1411: 0x000055D7, + 1412: 0x000035C5, + 1413: 0x00027D84, + 1414: 0x00005525, + 1416: 0x00020C42, + 1417: 0x00020D15, + 1418: 0x0002512B, + 1419: 0x00005590, + 1420: 0x00022CC6, + 1421: 0x000039EC, + 1422: 0x00020341, + 1423: 0x00008E46, + 1424: 0x00024DB8, + 1425: 0x000294E5, + 1426: 0x00004053, + 1427: 0x000280BE, + 1428: 0x0000777A, + 1429: 0x00022C38, + 1430: 0x00003A34, + 1431: 0x000047D5, + 1432: 0x0002815D, + 1433: 0x000269F2, + 1434: 0x00024DEA, + 1435: 0x000064DD, + 1436: 0x00020D7C, + 1437: 0x00020FB4, + 1438: 0x00020CD5, + 1439: 0x000210F4, + 1440: 0x0000648D, + 1441: 0x00008E7E, + 1442: 0x00020E96, + 1443: 0x00020C0B, + 1444: 0x00020F64, + 1445: 0x00022CA9, + 1446: 0x00028256, + 1447: 0x000244D3, + 1449: 0x00020D46, + 1450: 0x00029A4D, + 1451: 0x000280E9, + 1452: 0x000047F4, + 1453: 0x00024EA7, + 1454: 0x00022CC2, + 1455: 0x00009AB2, + 1456: 0x00003A67, + 1457: 0x000295F4, + 1458: 0x00003FED, + 1459: 0x00003506, + 1460: 0x000252C7, + 1461: 0x000297D4, + 1462: 0x000278C8, + 1463: 0x00022D44, + 1464: 0x00009D6E, + 1465: 0x00009815, + 1467: 0x000043D9, + 1468: 0x000260A5, + 1469: 0x000064B4, + 1470: 0x000054E3, + 1471: 0x00022D4C, + 1472: 0x00022BCA, + 1473: 0x00021077, + 1474: 0x000039FB, + 1475: 0x0002106F, + 1476: 0x000266DA, + 1477: 0x00026716, + 1478: 0x000279A0, + 1479: 0x000064EA, + 1480: 0x00025052, + 1481: 0x00020C43, + 1482: 0x00008E68, + 1483: 0x000221A1, + 1484: 0x00028B4C, + 1485: 0x00020731, + 1487: 0x0000480B, + 1488: 0x000201A9, + 1489: 0x00003FFA, + 1490: 0x00005873, + 1491: 0x00022D8D, + 1493: 0x000245C8, + 1494: 0x000204FC, + 1495: 0x00026097, + 1496: 0x00020F4C, + 1497: 0x00020D96, + 1498: 0x00005579, + 1499: 0x000040BB, + 1500: 0x000043BA, + 1502: 0x00004AB4, + 1503: 0x00022A66, + 1504: 0x0002109D, + 1505: 0x000081AA, + 1506: 0x000098F5, + 1507: 0x00020D9C, + 1508: 0x00006379, + 1509: 0x000039FE, + 1510: 0x00022775, + 1511: 0x00008DC0, + 1512: 0x000056A1, + 1513: 0x0000647C, + 1514: 0x00003E43, + 1516: 0x0002A601, + 1517: 0x00020E09, + 1518: 0x00022ACF, + 1519: 0x00022CC9, + 1521: 0x000210C8, + 1522: 0x000239C2, + 1523: 0x00003992, + 1524: 0x00003A06, + 1525: 0x0002829B, + 1526: 0x00003578, + 1527: 0x00025E49, + 1528: 0x000220C7, + 1529: 0x00005652, + 1530: 0x00020F31, + 1531: 0x00022CB2, + 1532: 0x00029720, + 1533: 0x000034BC, + 1534: 0x00006C3D, + 1535: 0x00024E3B, + 1538: 0x00027574, + 1539: 0x00022E8B, + 1540: 0x00022208, + 1541: 0x0002A65B, + 1542: 0x00028CCD, + 1543: 0x00020E7A, + 1544: 0x00020C34, + 1545: 0x0002681C, + 1546: 0x00007F93, + 1547: 0x000210CF, + 1548: 0x00022803, + 1549: 0x00022939, + 1550: 0x000035FB, + 1551: 0x000251E3, + 1552: 0x00020E8C, + 1553: 0x00020F8D, + 1554: 0x00020EAA, + 1555: 0x00003F93, + 1556: 0x00020F30, + 1557: 0x00020D47, + 1558: 0x0002114F, + 1559: 0x00020E4C, + 1561: 0x00020EAB, + 1562: 0x00020BA9, + 1563: 0x00020D48, + 1564: 0x000210C0, + 1565: 0x0002113D, + 1566: 0x00003FF9, + 1567: 0x00022696, + 1568: 0x00006432, + 1569: 0x00020FAD, + 1570: 0x000233F4, + 1571: 0x00027639, + 1572: 0x00022BCE, + 1573: 0x00020D7E, + 1574: 0x00020D7F, + 1575: 0x00022C51, + 1576: 0x00022C55, + 1577: 0x00003A18, + 1578: 0x00020E98, + 1579: 0x000210C7, + 1580: 0x00020F2E, + 1581: 0x0002A632, + 1582: 0x00026B50, + 1583: 0x00028CD2, + 1584: 0x00028D99, + 1585: 0x00028CCA, + 1586: 0x000095AA, + 1587: 0x000054CC, + 1588: 0x000082C4, + 1589: 0x000055B9, + 1591: 0x00029EC3, + 1592: 0x00009C26, + 1593: 0x00009AB6, + 1594: 0x0002775E, + 1595: 0x00022DEE, + 1596: 0x00007140, + 1597: 0x0000816D, + 1598: 0x000080EC, + 1599: 0x00005C1C, + 1600: 0x00026572, + 1601: 0x00008134, + 1602: 0x00003797, + 1603: 0x0000535F, + 1604: 0x000280BD, + 1605: 0x000091B6, + 1606: 0x00020EFA, + 1607: 0x00020E0F, + 1608: 0x00020E77, + 1609: 0x00020EFB, + 1610: 0x000035DD, + 1611: 0x00024DEB, + 1612: 0x00003609, + 1613: 0x00020CD6, + 1614: 0x000056AF, + 1615: 0x000227B5, + 1616: 0x000210C9, + 1617: 0x00020E10, + 1618: 0x00020E78, + 1619: 0x00021078, + 1620: 0x00021148, + 1621: 0x00028207, + 1622: 0x00021455, + 1623: 0x00020E79, + 1624: 0x00024E50, + 1625: 0x00022DA4, + 1626: 0x00005A54, + 1627: 0x0002101D, + 1628: 0x0002101E, + 1629: 0x000210F5, + 1630: 0x000210F6, + 1631: 0x0000579C, + 1632: 0x00020E11, + 1633: 0x00027694, + 1634: 0x000282CD, + 1635: 0x00020FB5, + 1636: 0x00020E7B, + 1637: 0x0002517E, + 1638: 0x00003703, + 1639: 0x00020FB6, + 1640: 0x00021180, + 1641: 0x000252D8, + 1642: 0x0002A2BD, + 1643: 0x000249DA, + 1644: 0x0002183A, + 1645: 0x00024177, + 1646: 0x0002827C, + 1647: 0x00005899, + 1648: 0x00005268, + 1649: 0x0000361A, + 1650: 0x0002573D, + 1651: 0x00007BB2, + 1652: 0x00005B68, + 1653: 0x00004800, + 1654: 0x00004B2C, + 1655: 0x00009F27, + 1656: 0x000049E7, + 1657: 0x00009C1F, + 1658: 0x00009B8D, + 1659: 0x00025B74, + 1660: 0x0002313D, + 1661: 0x000055FB, + 1662: 0x000035F2, + 1663: 0x00005689, + 1664: 0x00004E28, + 1665: 0x00005902, + 1666: 0x00021BC1, + 1667: 0x0002F878, + 1668: 0x00009751, + 1669: 0x00020086, + 1670: 0x00004E5B, + 1671: 0x00004EBB, + 1672: 0x0000353E, + 1673: 0x00005C23, + 1674: 0x00005F51, + 1675: 0x00005FC4, + 1676: 0x000038FA, + 1677: 0x0000624C, + 1678: 0x00006535, + 1679: 0x00006B7A, + 1680: 0x00006C35, + 1681: 0x00006C3A, + 1682: 0x0000706C, + 1683: 0x0000722B, + 1684: 0x00004E2C, + 1685: 0x000072AD, + 1686: 0x000248E9, + 1687: 0x00007F52, + 1688: 0x0000793B, + 1689: 0x00007CF9, + 1690: 0x00007F53, + 1691: 0x0002626A, + 1692: 0x000034C1, + 1694: 0x0002634B, + 1695: 0x00008002, + 1696: 0x00008080, + 1697: 0x00026612, + 1698: 0x00026951, + 1699: 0x0000535D, + 1700: 0x00008864, + 1701: 0x000089C1, + 1702: 0x000278B2, + 1703: 0x00008BA0, + 1704: 0x00008D1D, + 1705: 0x00009485, + 1706: 0x00009578, + 1707: 0x0000957F, + 1708: 0x000095E8, + 1709: 0x00028E0F, + 1710: 0x000097E6, + 1711: 0x00009875, + 1712: 0x000098CE, + 1713: 0x000098DE, + 1714: 0x00009963, + 1715: 0x00029810, + 1716: 0x00009C7C, + 1717: 0x00009E1F, + 1718: 0x00009EC4, + 1719: 0x00006B6F, + 1720: 0x0000F907, + 1721: 0x00004E37, + 1722: 0x00020087, + 1723: 0x0000961D, + 1724: 0x00006237, + 1725: 0x000094A2, + 1727: 0x0000503B, + 1728: 0x00006DFE, + 1729: 0x00029C73, + 1730: 0x00009FA6, + 1731: 0x00003DC9, + 1732: 0x0000888F, + 1733: 0x0002414E, + 1734: 0x00007077, + 1735: 0x00005CF5, + 1736: 0x00004B20, + 1737: 0x000251CD, + 1738: 0x00003559, + 1739: 0x00025D30, + 1740: 0x00006122, + 1741: 0x00028A32, + 1742: 0x00008FA7, + 1743: 0x000091F6, + 1744: 0x00007191, + 1745: 0x00006719, + 1746: 0x000073BA, + 1747: 0x00023281, + 1748: 0x0002A107, + 1749: 0x00003C8B, + 1750: 0x00021980, + 1751: 0x00004B10, + 1752: 0x000078E4, + 1753: 0x00007402, + 1754: 0x000051AE, + 1755: 0x0002870F, + 1756: 0x00004009, + 1757: 0x00006A63, + 1758: 0x0002A2BA, + 1759: 0x00004223, + 1760: 0x0000860F, + 1761: 0x00020A6F, + 1762: 0x00007A2A, + 1763: 0x00029947, + 1764: 0x00028AEA, + 1765: 0x00009755, + 1766: 0x0000704D, + 1767: 0x00005324, + 1768: 0x0002207E, + 1769: 0x000093F4, + 1770: 0x000076D9, + 1771: 0x000289E3, + 1772: 0x00009FA7, + 1773: 0x000077DD, + 1774: 0x00004EA3, + 1775: 0x00004FF0, + 1776: 0x000050BC, + 1777: 0x00004E2F, + 1778: 0x00004F17, + 1779: 0x00009FA8, + 1780: 0x00005434, + 1781: 0x00007D8B, + 1782: 0x00005892, + 1783: 0x000058D0, + 1784: 0x00021DB6, + 1785: 0x00005E92, + 1786: 0x00005E99, + 1787: 0x00005FC2, + 1788: 0x00022712, + 1789: 0x0000658B, + 1790: 0x000233F9, + 1791: 0x00006919, + 1792: 0x00006A43, + 1793: 0x00023C63, + 1794: 0x00006CFF, + 1796: 0x00007200, + 1797: 0x00024505, + 1798: 0x0000738C, + 1799: 0x00003EDB, + 1800: 0x00024A13, + 1801: 0x00005B15, + 1802: 0x000074B9, + 1803: 0x00008B83, + 1804: 0x00025CA4, + 1805: 0x00025695, + 1806: 0x00007A93, + 1807: 0x00007BEC, + 1808: 0x00007CC3, + 1809: 0x00007E6C, + 1810: 0x000082F8, + 1811: 0x00008597, + 1812: 0x00009FA9, + 1813: 0x00008890, + 1814: 0x00009FAA, + 1815: 0x00008EB9, + 1816: 0x00009FAB, + 1817: 0x00008FCF, + 1818: 0x0000855F, + 1819: 0x000099E0, + 1820: 0x00009221, + 1821: 0x00009FAC, + 1822: 0x00028DB9, + 1823: 0x0002143F, + 1824: 0x00004071, + 1825: 0x000042A2, + 1826: 0x00005A1A, + 1830: 0x00009868, + 1831: 0x0000676B, + 1832: 0x00004276, + 1833: 0x0000573D, + 1835: 0x000085D6, + 1836: 0x0002497B, + 1837: 0x000082BF, + 1838: 0x0002710D, + 1839: 0x00004C81, + 1840: 0x00026D74, + 1841: 0x00005D7B, + 1842: 0x00026B15, + 1843: 0x00026FBE, + 1844: 0x00009FAD, + 1845: 0x00009FAE, + 1846: 0x00005B96, + 1847: 0x00009FAF, + 1848: 0x000066E7, + 1849: 0x00007E5B, + 1850: 0x00006E57, + 1851: 0x000079CA, + 1852: 0x00003D88, + 1853: 0x000044C3, + 1854: 0x00023256, + 1855: 0x00022796, + 1856: 0x0000439A, + 1857: 0x00004536, + 1859: 0x00005CD5, + 1860: 0x00023B1A, + 1861: 0x00008AF9, + 1862: 0x00005C78, + 1863: 0x00003D12, + 1864: 0x00023551, + 1865: 0x00005D78, + 1866: 0x00009FB2, + 1867: 0x00007157, + 1868: 0x00004558, + 1869: 0x000240EC, + 1870: 0x00021E23, + 1871: 0x00004C77, + 1872: 0x00003978, + 1873: 0x0000344A, + 1874: 0x000201A4, + 1875: 0x00026C41, + 1876: 0x00008ACC, + 1877: 0x00004FB4, + 1878: 0x00020239, + 1879: 0x000059BF, + 1880: 0x0000816C, + 1881: 0x00009856, + 1882: 0x000298FA, + 1883: 0x00005F3B, + 1884: 0x00020B9F, + 1886: 0x000221C1, + 1887: 0x0002896D, + 1888: 0x00004102, + 1889: 0x000046BB, + 1890: 0x00029079, + 1891: 0x00003F07, + 1892: 0x00009FB3, + 1893: 0x0002A1B5, + 1894: 0x000040F8, + 1895: 0x000037D6, + 1896: 0x000046F7, + 1897: 0x00026C46, + 1898: 0x0000417C, + 1899: 0x000286B2, + 1900: 0x000273FF, + 1901: 0x0000456D, + 1902: 0x000038D4, + 1903: 0x0002549A, + 1904: 0x00004561, + 1905: 0x0000451B, + 1906: 0x00004D89, + 1907: 0x00004C7B, + 1908: 0x00004D76, + 1909: 0x000045EA, + 1910: 0x00003FC8, + 1911: 0x00024B0F, + 1912: 0x00003661, + 1913: 0x000044DE, + 1914: 0x000044BD, + 1915: 0x000041ED, + 1916: 0x00005D3E, + 1917: 0x00005D48, + 1918: 0x00005D56, + 1919: 0x00003DFC, + 1920: 0x0000380F, + 1921: 0x00005DA4, + 1922: 0x00005DB9, + 1923: 0x00003820, + 1924: 0x00003838, + 1925: 0x00005E42, + 1926: 0x00005EBD, + 1927: 0x00005F25, + 1928: 0x00005F83, + 1929: 0x00003908, + 1930: 0x00003914, + 1931: 0x0000393F, + 1932: 0x0000394D, + 1933: 0x000060D7, + 1934: 0x0000613D, + 1935: 0x00005CE5, + 1936: 0x00003989, + 1937: 0x000061B7, + 1938: 0x000061B9, + 1939: 0x000061CF, + 1940: 0x000039B8, + 1941: 0x0000622C, + 1942: 0x00006290, + 1943: 0x000062E5, + 1944: 0x00006318, + 1945: 0x000039F8, + 1946: 0x000056B1, + 1947: 0x00003A03, + 1948: 0x000063E2, + 1949: 0x000063FB, + 1950: 0x00006407, + 1951: 0x0000645A, + 1952: 0x00003A4B, + 1953: 0x000064C0, + 1954: 0x00005D15, + 1955: 0x00005621, + 1956: 0x00009F9F, + 1957: 0x00003A97, + 1958: 0x00006586, + 1959: 0x00003ABD, + 1960: 0x000065FF, + 1961: 0x00006653, + 1962: 0x00003AF2, + 1963: 0x00006692, + 1964: 0x00003B22, + 1965: 0x00006716, + 1966: 0x00003B42, + 1967: 0x000067A4, + 1968: 0x00006800, + 1969: 0x00003B58, + 1970: 0x0000684A, + 1971: 0x00006884, + 1972: 0x00003B72, + 1973: 0x00003B71, + 1974: 0x00003B7B, + 1975: 0x00006909, + 1976: 0x00006943, + 1977: 0x0000725C, + 1978: 0x00006964, + 1979: 0x0000699F, + 1980: 0x00006985, + 1981: 0x00003BBC, + 1982: 0x000069D6, + 1983: 0x00003BDD, + 1984: 0x00006A65, + 1985: 0x00006A74, + 1986: 0x00006A71, + 1987: 0x00006A82, + 1988: 0x00003BEC, + 1989: 0x00006A99, + 1990: 0x00003BF2, + 1991: 0x00006AAB, + 1992: 0x00006AB5, + 1993: 0x00006AD4, + 1994: 0x00006AF6, + 1995: 0x00006B81, + 1996: 0x00006BC1, + 1997: 0x00006BEA, + 1998: 0x00006C75, + 1999: 0x00006CAA, + 2000: 0x00003CCB, + 2001: 0x00006D02, + 2002: 0x00006D06, + 2003: 0x00006D26, + 2004: 0x00006D81, + 2005: 0x00003CEF, + 2006: 0x00006DA4, + 2007: 0x00006DB1, + 2008: 0x00006E15, + 2009: 0x00006E18, + 2010: 0x00006E29, + 2011: 0x00006E86, + 2012: 0x000289C0, + 2013: 0x00006EBB, + 2014: 0x00006EE2, + 2015: 0x00006EDA, + 2016: 0x00009F7F, + 2017: 0x00006EE8, + 2018: 0x00006EE9, + 2019: 0x00006F24, + 2020: 0x00006F34, + 2021: 0x00003D46, + 2022: 0x00023F41, + 2023: 0x00006F81, + 2024: 0x00006FBE, + 2025: 0x00003D6A, + 2026: 0x00003D75, + 2027: 0x000071B7, + 2028: 0x00005C99, + 2029: 0x00003D8A, + 2030: 0x0000702C, + 2031: 0x00003D91, + 2032: 0x00007050, + 2033: 0x00007054, + 2034: 0x0000706F, + 2035: 0x0000707F, + 2036: 0x00007089, + 2037: 0x00020325, + 2038: 0x000043C1, + 2039: 0x000035F1, + 2040: 0x00020ED8, + 2041: 0x00023ED7, + 2042: 0x000057BE, + 2043: 0x00026ED3, + 2044: 0x0000713E, + 2045: 0x000257E0, + 2046: 0x0000364E, + 2047: 0x000069A2, + 2048: 0x00028BE9, + 2049: 0x00005B74, + 2050: 0x00007A49, + 2051: 0x000258E1, + 2052: 0x000294D9, + 2053: 0x00007A65, + 2054: 0x00007A7D, + 2055: 0x000259AC, + 2056: 0x00007ABB, + 2057: 0x00007AB0, + 2058: 0x00007AC2, + 2059: 0x00007AC3, + 2060: 0x000071D1, + 2061: 0x0002648D, + 2062: 0x000041CA, + 2063: 0x00007ADA, + 2064: 0x00007ADD, + 2065: 0x00007AEA, + 2066: 0x000041EF, + 2067: 0x000054B2, + 2068: 0x00025C01, + 2069: 0x00007B0B, + 2070: 0x00007B55, + 2071: 0x00007B29, + 2072: 0x0002530E, + 2073: 0x00025CFE, + 2074: 0x00007BA2, + 2075: 0x00007B6F, + 2076: 0x0000839C, + 2077: 0x00025BB4, + 2078: 0x00026C7F, + 2079: 0x00007BD0, + 2080: 0x00008421, + 2081: 0x00007B92, + 2082: 0x00007BB8, + 2083: 0x00025D20, + 2084: 0x00003DAD, + 2085: 0x00025C65, + 2086: 0x00008492, + 2087: 0x00007BFA, + 2088: 0x00007C06, + 2089: 0x00007C35, + 2090: 0x00025CC1, + 2091: 0x00007C44, + 2092: 0x00007C83, + 2093: 0x00024882, + 2094: 0x00007CA6, + 2095: 0x0000667D, + 2096: 0x00024578, + 2097: 0x00007CC9, + 2098: 0x00007CC7, + 2099: 0x00007CE6, + 2100: 0x00007C74, + 2101: 0x00007CF3, + 2102: 0x00007CF5, + 2103: 0x00007CCE, + 2104: 0x00007E67, + 2105: 0x0000451D, + 2106: 0x00026E44, + 2107: 0x00007D5D, + 2108: 0x00026ED6, + 2109: 0x0000748D, + 2110: 0x00007D89, + 2111: 0x00007DAB, + 2112: 0x00007135, + 2113: 0x00007DB3, + 2114: 0x00007DD2, + 2115: 0x00024057, + 2116: 0x00026029, + 2117: 0x00007DE4, + 2118: 0x00003D13, + 2119: 0x00007DF5, + 2120: 0x000217F9, + 2121: 0x00007DE5, + 2122: 0x0002836D, + 2123: 0x00007E1D, + 2124: 0x00026121, + 2125: 0x0002615A, + 2126: 0x00007E6E, + 2127: 0x00007E92, + 2128: 0x0000432B, + 2129: 0x0000946C, + 2130: 0x00007E27, + 2131: 0x00007F40, + 2132: 0x00007F41, + 2133: 0x00007F47, + 2134: 0x00007936, + 2135: 0x000262D0, + 2136: 0x000099E1, + 2137: 0x00007F97, + 2138: 0x00026351, + 2139: 0x00007FA3, + 2140: 0x00021661, + 2141: 0x00020068, + 2142: 0x0000455C, + 2143: 0x00023766, + 2144: 0x00004503, + 2145: 0x0002833A, + 2146: 0x00007FFA, + 2147: 0x00026489, + 2148: 0x00008005, + 2149: 0x00008008, + 2150: 0x0000801D, + 2151: 0x00008028, + 2152: 0x0000802F, + 2153: 0x0002A087, + 2154: 0x00026CC3, + 2155: 0x0000803B, + 2156: 0x0000803C, + 2157: 0x00008061, + 2158: 0x00022714, + 2159: 0x00004989, + 2160: 0x00026626, + 2161: 0x00023DE3, + 2162: 0x000266E8, + 2163: 0x00006725, + 2164: 0x000080A7, + 2165: 0x00028A48, + 2166: 0x00008107, + 2167: 0x0000811A, + 2168: 0x000058B0, + 2169: 0x000226F6, + 2170: 0x00006C7F, + 2171: 0x00026498, + 2172: 0x00024FB8, + 2173: 0x000064E7, + 2174: 0x0002148A, + 2175: 0x00008218, + 2176: 0x0002185E, + 2177: 0x00006A53, + 2178: 0x00024A65, + 2179: 0x00024A95, + 2180: 0x0000447A, + 2181: 0x00008229, + 2182: 0x00020B0D, + 2183: 0x00026A52, + 2184: 0x00023D7E, + 2185: 0x00004FF9, + 2186: 0x000214FD, + 2187: 0x000084E2, + 2188: 0x00008362, + 2189: 0x00026B0A, + 2190: 0x000249A7, + 2191: 0x00023530, + 2192: 0x00021773, + 2193: 0x00023DF8, + 2194: 0x000082AA, + 2195: 0x0000691B, + 2196: 0x0002F994, + 2197: 0x000041DB, + 2198: 0x0000854B, + 2199: 0x000082D0, + 2200: 0x0000831A, + 2201: 0x00020E16, + 2202: 0x000217B4, + 2203: 0x000036C1, + 2204: 0x0002317D, + 2205: 0x0002355A, + 2206: 0x0000827B, + 2207: 0x000082E2, + 2208: 0x00008318, + 2209: 0x00023E8B, + 2210: 0x00026DA3, + 2211: 0x00026B05, + 2212: 0x00026B97, + 2213: 0x000235CE, + 2214: 0x00003DBF, + 2215: 0x0000831D, + 2216: 0x000055EC, + 2217: 0x00008385, + 2218: 0x0000450B, + 2219: 0x00026DA5, + 2220: 0x000083AC, + 2221: 0x000083C1, + 2222: 0x000083D3, + 2223: 0x0000347E, + 2224: 0x00026ED4, + 2225: 0x00006A57, + 2226: 0x0000855A, + 2227: 0x00003496, + 2228: 0x00026E42, + 2229: 0x00022EEF, + 2230: 0x00008458, + 2231: 0x00025BE4, + 2232: 0x00008471, + 2233: 0x00003DD3, + 2234: 0x000044E4, + 2235: 0x00006AA7, + 2236: 0x0000844A, + 2237: 0x00023CB5, + 2238: 0x00007958, + 2239: 0x000084A8, + 2240: 0x00026B96, + 2241: 0x00026E77, + 2242: 0x00026E43, + 2243: 0x000084DE, + 2244: 0x0000840F, + 2245: 0x00008391, + 2246: 0x000044A0, + 2247: 0x00008493, + 2248: 0x000084E4, + 2249: 0x00025C91, + 2250: 0x00004240, + 2251: 0x00025CC0, + 2252: 0x00004543, + 2253: 0x00008534, + 2254: 0x00005AF2, + 2255: 0x00026E99, + 2256: 0x00004527, + 2257: 0x00008573, + 2258: 0x00004516, + 2259: 0x000067BF, + 2260: 0x00008616, + 2261: 0x00028625, + 2262: 0x0002863B, + 2263: 0x000085C1, + 2264: 0x00027088, + 2265: 0x00008602, + 2266: 0x00021582, + 2267: 0x000270CD, + 2268: 0x0002F9B2, + 2269: 0x0000456A, + 2270: 0x00008628, + 2271: 0x00003648, + 2272: 0x000218A2, + 2273: 0x000053F7, + 2274: 0x0002739A, + 2275: 0x0000867E, + 2276: 0x00008771, + 2277: 0x0002A0F8, + 2278: 0x000087EE, + 2279: 0x00022C27, + 2280: 0x000087B1, + 2281: 0x000087DA, + 2282: 0x0000880F, + 2283: 0x00005661, + 2284: 0x0000866C, + 2285: 0x00006856, + 2286: 0x0000460F, + 2287: 0x00008845, + 2288: 0x00008846, + 2289: 0x000275E0, + 2290: 0x00023DB9, + 2291: 0x000275E4, + 2292: 0x0000885E, + 2293: 0x0000889C, + 2294: 0x0000465B, + 2295: 0x000088B4, + 2296: 0x000088B5, + 2297: 0x000063C1, + 2298: 0x000088C5, + 2299: 0x00007777, + 2300: 0x0002770F, + 2301: 0x00008987, + 2302: 0x0000898A, + 2303: 0x000089A6, + 2304: 0x000089A9, + 2305: 0x000089A7, + 2306: 0x000089BC, + 2307: 0x00028A25, + 2308: 0x000089E7, + 2309: 0x00027924, + 2310: 0x00027ABD, + 2311: 0x00008A9C, + 2312: 0x00007793, + 2313: 0x000091FE, + 2314: 0x00008A90, + 2315: 0x00027A59, + 2316: 0x00007AE9, + 2317: 0x00027B3A, + 2318: 0x00023F8F, + 2319: 0x00004713, + 2320: 0x00027B38, + 2321: 0x0000717C, + 2322: 0x00008B0C, + 2323: 0x00008B1F, + 2324: 0x00025430, + 2325: 0x00025565, + 2326: 0x00008B3F, + 2327: 0x00008B4C, + 2328: 0x00008B4D, + 2329: 0x00008AA9, + 2330: 0x00024A7A, + 2331: 0x00008B90, + 2332: 0x00008B9B, + 2333: 0x00008AAF, + 2334: 0x000216DF, + 2335: 0x00004615, + 2336: 0x0000884F, + 2337: 0x00008C9B, + 2338: 0x00027D54, + 2339: 0x00027D8F, + 2340: 0x0002F9D4, + 2341: 0x00003725, + 2342: 0x00027D53, + 2343: 0x00008CD6, + 2344: 0x00027D98, + 2345: 0x00027DBD, + 2346: 0x00008D12, + 2347: 0x00008D03, + 2348: 0x00021910, + 2349: 0x00008CDB, + 2350: 0x0000705C, + 2351: 0x00008D11, + 2352: 0x00024CC9, + 2353: 0x00003ED0, + 2354: 0x00008D77, + 2355: 0x00008DA9, + 2356: 0x00028002, + 2357: 0x00021014, + 2358: 0x0002498A, + 2359: 0x00003B7C, + 2360: 0x000281BC, + 2361: 0x0002710C, + 2362: 0x00007AE7, + 2363: 0x00008EAD, + 2364: 0x00008EB6, + 2365: 0x00008EC3, + 2366: 0x000092D4, + 2367: 0x00008F19, + 2368: 0x00008F2D, + 2369: 0x00028365, + 2370: 0x00028412, + 2371: 0x00008FA5, + 2372: 0x00009303, + 2373: 0x0002A29F, + 2374: 0x00020A50, + 2375: 0x00008FB3, + 2376: 0x0000492A, + 2377: 0x000289DE, + 2378: 0x0002853D, + 2379: 0x00023DBB, + 2380: 0x00005EF8, + 2381: 0x00023262, + 2382: 0x00008FF9, + 2383: 0x0002A014, + 2384: 0x000286BC, + 2385: 0x00028501, + 2386: 0x00022325, + 2387: 0x00003980, + 2388: 0x00026ED7, + 2389: 0x00009037, + 2390: 0x0002853C, + 2391: 0x00027ABE, + 2392: 0x00009061, + 2393: 0x0002856C, + 2394: 0x0002860B, + 2395: 0x000090A8, + 2396: 0x00028713, + 2397: 0x000090C4, + 2398: 0x000286E6, + 2399: 0x000090AE, + 2400: 0x000090FD, + 2401: 0x00009167, + 2402: 0x00003AF0, + 2403: 0x000091A9, + 2404: 0x000091C4, + 2405: 0x00007CAC, + 2406: 0x00028933, + 2407: 0x00021E89, + 2408: 0x0000920E, + 2409: 0x00006C9F, + 2410: 0x00009241, + 2411: 0x00009262, + 2412: 0x000255B9, + 2413: 0x000092B9, + 2414: 0x00028AC6, + 2415: 0x00023C9B, + 2416: 0x00028B0C, + 2417: 0x000255DB, + 2418: 0x00020D31, + 2419: 0x0000932C, + 2420: 0x0000936B, + 2421: 0x00028AE1, + 2422: 0x00028BEB, + 2423: 0x0000708F, + 2424: 0x00005AC3, + 2425: 0x00028AE2, + 2426: 0x00028AE5, + 2427: 0x00004965, + 2428: 0x00009244, + 2429: 0x00028BEC, + 2430: 0x00028C39, + 2431: 0x00028BFF, + 2432: 0x00009373, + 2433: 0x0000945B, + 2434: 0x00008EBC, + 2435: 0x00009585, + 2436: 0x000095A6, + 2437: 0x00009426, + 2438: 0x000095A0, + 2439: 0x00006FF6, + 2440: 0x000042B9, + 2441: 0x0002267A, + 2442: 0x000286D8, + 2443: 0x0002127C, + 2444: 0x00023E2E, + 2445: 0x000049DF, + 2446: 0x00006C1C, + 2447: 0x0000967B, + 2448: 0x00009696, + 2449: 0x0000416C, + 2450: 0x000096A3, + 2451: 0x00026ED5, + 2452: 0x000061DA, + 2453: 0x000096B6, + 2454: 0x000078F5, + 2455: 0x00028AE0, + 2456: 0x000096BD, + 2457: 0x000053CC, + 2458: 0x000049A1, + 2459: 0x00026CB8, + 2460: 0x00020274, + 2461: 0x00026410, + 2462: 0x000290AF, + 2463: 0x000290E5, + 2464: 0x00024AD1, + 2465: 0x00021915, + 2466: 0x0002330A, + 2467: 0x00009731, + 2468: 0x00008642, + 2469: 0x00009736, + 2470: 0x00004A0F, + 2471: 0x0000453D, + 2472: 0x00004585, + 2473: 0x00024AE9, + 2474: 0x00007075, + 2475: 0x00005B41, + 2476: 0x0000971B, + 2477: 0x0000975C, + 2478: 0x000291D5, + 2479: 0x00009757, + 2480: 0x00005B4A, + 2481: 0x000291EB, + 2482: 0x0000975F, + 2483: 0x00009425, + 2484: 0x000050D0, + 2485: 0x000230B7, + 2486: 0x000230BC, + 2487: 0x00009789, + 2488: 0x0000979F, + 2489: 0x000097B1, + 2490: 0x000097BE, + 2491: 0x000097C0, + 2492: 0x000097D2, + 2493: 0x000097E0, + 2494: 0x0002546C, + 2495: 0x000097EE, + 2496: 0x0000741C, + 2497: 0x00029433, + 2498: 0x000097FF, + 2499: 0x000097F5, + 2500: 0x0002941D, + 2501: 0x0002797A, + 2502: 0x00004AD1, + 2503: 0x00009834, + 2504: 0x00009833, + 2505: 0x0000984B, + 2506: 0x00009866, + 2507: 0x00003B0E, + 2508: 0x00027175, + 2509: 0x00003D51, + 2510: 0x00020630, + 2511: 0x0002415C, + 2512: 0x00025706, + 2513: 0x000098CA, + 2514: 0x000098B7, + 2515: 0x000098C8, + 2516: 0x000098C7, + 2517: 0x00004AFF, + 2518: 0x00026D27, + 2519: 0x000216D3, + 2520: 0x000055B0, + 2521: 0x000098E1, + 2522: 0x000098E6, + 2523: 0x000098EC, + 2524: 0x00009378, + 2525: 0x00009939, + 2526: 0x00024A29, + 2527: 0x00004B72, + 2528: 0x00029857, + 2529: 0x00029905, + 2530: 0x000099F5, + 2531: 0x00009A0C, + 2532: 0x00009A3B, + 2533: 0x00009A10, + 2534: 0x00009A58, + 2535: 0x00025725, + 2536: 0x000036C4, + 2537: 0x000290B1, + 2538: 0x00029BD5, + 2539: 0x00009AE0, + 2540: 0x00009AE2, + 2541: 0x00029B05, + 2542: 0x00009AF4, + 2543: 0x00004C0E, + 2544: 0x00009B14, + 2545: 0x00009B2D, + 2546: 0x00028600, + 2547: 0x00005034, + 2548: 0x00009B34, + 2549: 0x000269A8, + 2550: 0x000038C3, + 2551: 0x0002307D, + 2552: 0x00009B50, + 2553: 0x00009B40, + 2554: 0x00029D3E, + 2555: 0x00005A45, + 2556: 0x00021863, + 2557: 0x00009B8E, + 2558: 0x0002424B, + 2559: 0x00009C02, + 2560: 0x00009BFF, + 2561: 0x00009C0C, + 2562: 0x00029E68, + 2563: 0x00009DD4, + 2564: 0x00029FB7, + 2565: 0x0002A192, + 2566: 0x0002A1AB, + 2567: 0x0002A0E1, + 2568: 0x0002A123, + 2569: 0x0002A1DF, + 2570: 0x00009D7E, + 2571: 0x00009D83, + 2572: 0x0002A134, + 2573: 0x00009E0E, + 2574: 0x00006888, + 2575: 0x00009DC4, + 2576: 0x0002215B, + 2577: 0x0002A193, + 2578: 0x0002A220, + 2579: 0x0002193B, + 2580: 0x0002A233, + 2581: 0x00009D39, + 2582: 0x0002A0B9, + 2583: 0x0002A2B4, + 2584: 0x00009E90, + 2585: 0x00009E95, + 2586: 0x00009E9E, + 2587: 0x00009EA2, + 2588: 0x00004D34, + 2589: 0x00009EAA, + 2590: 0x00009EAF, + 2591: 0x00024364, + 2592: 0x00009EC1, + 2593: 0x00003B60, + 2594: 0x000039E5, + 2595: 0x00003D1D, + 2596: 0x00004F32, + 2597: 0x000037BE, + 2598: 0x00028C2B, + 2599: 0x00009F02, + 2600: 0x00009F08, + 2601: 0x00004B96, + 2602: 0x00009424, + 2603: 0x00026DA2, + 2604: 0x00009F17, + 2605: 0x00009F16, + 2606: 0x00009F39, + 2607: 0x0000569F, + 2608: 0x0000568A, + 2609: 0x00009F45, + 2610: 0x000099B8, + 2611: 0x0002908B, + 2612: 0x000097F2, + 2613: 0x0000847F, + 2614: 0x00009F62, + 2615: 0x00009F69, + 2616: 0x00007ADC, + 2617: 0x00009F8E, + 2618: 0x00007216, + 2619: 0x00004BBE, + 2620: 0x00024975, + 2621: 0x000249BB, + 2622: 0x00007177, + 2623: 0x000249F8, + 2624: 0x00024348, + 2625: 0x00024A51, + 2626: 0x0000739E, + 2627: 0x00028BDA, + 2628: 0x000218FA, + 2629: 0x0000799F, + 2630: 0x0002897E, + 2631: 0x00028E36, + 2632: 0x00009369, + 2633: 0x000093F3, + 2634: 0x00028A44, + 2635: 0x000092EC, + 2636: 0x00009381, + 2637: 0x000093CB, + 2638: 0x0002896C, + 2639: 0x000244B9, + 2640: 0x00007217, + 2641: 0x00003EEB, + 2642: 0x00007772, + 2643: 0x00007A43, + 2644: 0x000070D0, + 2645: 0x00024473, + 2646: 0x000243F8, + 2647: 0x0000717E, + 2648: 0x000217EF, + 2649: 0x000070A3, + 2650: 0x000218BE, + 2651: 0x00023599, + 2652: 0x00003EC7, + 2653: 0x00021885, + 2654: 0x0002542F, + 2655: 0x000217F8, + 2656: 0x00003722, + 2657: 0x000216FB, + 2658: 0x00021839, + 2659: 0x000036E1, + 2660: 0x00021774, + 2661: 0x000218D1, + 2662: 0x00025F4B, + 2663: 0x00003723, + 2664: 0x000216C0, + 2665: 0x0000575B, + 2666: 0x00024A25, + 2667: 0x000213FE, + 2668: 0x000212A8, + 2669: 0x000213C6, + 2670: 0x000214B6, + 2671: 0x00008503, + 2672: 0x000236A6, + 2673: 0x00008503, + 2674: 0x00008455, + 2675: 0x00024994, + 2676: 0x00027165, + 2677: 0x00023E31, + 2678: 0x0002555C, + 2679: 0x00023EFB, + 2680: 0x00027052, + 2681: 0x000044F4, + 2682: 0x000236EE, + 2683: 0x0002999D, + 2684: 0x00026F26, + 2685: 0x000067F9, + 2686: 0x00003733, + 2687: 0x00003C15, + 2688: 0x00003DE7, + 2689: 0x0000586C, + 2690: 0x00021922, + 2691: 0x00006810, + 2692: 0x00004057, + 2693: 0x0002373F, + 2694: 0x000240E1, + 2695: 0x0002408B, + 2696: 0x0002410F, + 2697: 0x00026C21, + 2698: 0x000054CB, + 2699: 0x0000569E, + 2700: 0x000266B1, + 2701: 0x00005692, + 2702: 0x00020FDF, + 2703: 0x00020BA8, + 2704: 0x00020E0D, + 2705: 0x000093C6, + 2706: 0x00028B13, + 2707: 0x0000939C, + 2708: 0x00004EF8, + 2709: 0x0000512B, + 2710: 0x00003819, + 2711: 0x00024436, + 2712: 0x00004EBC, + 2713: 0x00020465, + 2714: 0x0002037F, + 2715: 0x00004F4B, + 2716: 0x00004F8A, + 2717: 0x00025651, + 2718: 0x00005A68, + 2719: 0x000201AB, + 2720: 0x000203CB, + 2721: 0x00003999, + 2722: 0x0002030A, + 2723: 0x00020414, + 2724: 0x00003435, + 2725: 0x00004F29, + 2726: 0x000202C0, + 2727: 0x00028EB3, + 2728: 0x00020275, + 2729: 0x00008ADA, + 2730: 0x0002020C, + 2731: 0x00004E98, + 2732: 0x000050CD, + 2733: 0x0000510D, + 2734: 0x00004FA2, + 2735: 0x00004F03, + 2736: 0x00024A0E, + 2737: 0x00023E8A, + 2738: 0x00004F42, + 2739: 0x0000502E, + 2740: 0x0000506C, + 2741: 0x00005081, + 2742: 0x00004FCC, + 2743: 0x00004FE5, + 2744: 0x00005058, + 2745: 0x000050FC, + 2746: 0x00005159, + 2747: 0x0000515B, + 2748: 0x0000515D, + 2749: 0x0000515E, + 2750: 0x00006E76, + 2751: 0x00023595, + 2752: 0x00023E39, + 2753: 0x00023EBF, + 2754: 0x00006D72, + 2755: 0x00021884, + 2756: 0x00023E89, + 2757: 0x000051A8, + 2758: 0x000051C3, + 2759: 0x000205E0, + 2760: 0x000044DD, + 2761: 0x000204A3, + 2762: 0x00020492, + 2763: 0x00020491, + 2764: 0x00008D7A, + 2765: 0x00028A9C, + 2766: 0x0002070E, + 2767: 0x00005259, + 2768: 0x000052A4, + 2769: 0x00020873, + 2770: 0x000052E1, + 2771: 0x0000936E, + 2772: 0x0000467A, + 2773: 0x0000718C, + 2774: 0x0002438C, + 2775: 0x00020C20, + 2776: 0x000249AC, + 2777: 0x000210E4, + 2778: 0x000069D1, + 2779: 0x00020E1D, + 2780: 0x00007479, + 2781: 0x00003EDE, + 2782: 0x00007499, + 2783: 0x00007414, + 2784: 0x00007456, + 2785: 0x00007398, + 2786: 0x00004B8E, + 2787: 0x00024ABC, + 2788: 0x0002408D, + 2789: 0x000053D0, + 2790: 0x00003584, + 2791: 0x0000720F, + 2792: 0x000240C9, + 2793: 0x000055B4, + 2794: 0x00020345, + 2795: 0x000054CD, + 2796: 0x00020BC6, + 2797: 0x0000571D, + 2798: 0x0000925D, + 2799: 0x000096F4, + 2800: 0x00009366, + 2801: 0x000057DD, + 2802: 0x0000578D, + 2803: 0x0000577F, + 2804: 0x0000363E, + 2805: 0x000058CB, + 2806: 0x00005A99, + 2807: 0x00028A46, + 2808: 0x000216FA, + 2809: 0x0002176F, + 2810: 0x00021710, + 2811: 0x00005A2C, + 2812: 0x000059B8, + 2813: 0x0000928F, + 2814: 0x00005A7E, + 2815: 0x00005ACF, + 2816: 0x00005A12, + 2817: 0x00025946, + 2818: 0x000219F3, + 2819: 0x00021861, + 2820: 0x00024295, + 2821: 0x000036F5, + 2822: 0x00006D05, + 2823: 0x00007443, + 2824: 0x00005A21, + 2825: 0x00025E83, + 2826: 0x00005A81, + 2827: 0x00028BD7, + 2828: 0x00020413, + 2829: 0x000093E0, + 2830: 0x0000748C, + 2831: 0x00021303, + 2832: 0x00007105, + 2833: 0x00004972, + 2834: 0x00009408, + 2835: 0x000289FB, + 2836: 0x000093BD, + 2837: 0x000037A0, + 2838: 0x00005C1E, + 2839: 0x00005C9E, + 2840: 0x00005E5E, + 2841: 0x00005E48, + 2842: 0x00021996, + 2843: 0x0002197C, + 2844: 0x00023AEE, + 2845: 0x00005ECD, + 2846: 0x00005B4F, + 2847: 0x00021903, + 2848: 0x00021904, + 2849: 0x00003701, + 2850: 0x000218A0, + 2851: 0x000036DD, + 2852: 0x000216FE, + 2853: 0x000036D3, + 2854: 0x0000812A, + 2855: 0x00028A47, + 2856: 0x00021DBA, + 2857: 0x00023472, + 2858: 0x000289A8, + 2859: 0x00005F0C, + 2860: 0x00005F0E, + 2861: 0x00021927, + 2862: 0x000217AB, + 2863: 0x00005A6B, + 2864: 0x0002173B, + 2865: 0x00005B44, + 2866: 0x00008614, + 2867: 0x000275FD, + 2868: 0x00008860, + 2869: 0x0000607E, + 2870: 0x00022860, + 2871: 0x0002262B, + 2872: 0x00005FDB, + 2873: 0x00003EB8, + 2874: 0x000225AF, + 2875: 0x000225BE, + 2876: 0x00029088, + 2877: 0x00026F73, + 2878: 0x000061C0, + 2879: 0x0002003E, + 2880: 0x00020046, + 2881: 0x0002261B, + 2882: 0x00006199, + 2883: 0x00006198, + 2884: 0x00006075, + 2885: 0x00022C9B, + 2886: 0x00022D07, + 2887: 0x000246D4, + 2888: 0x0002914D, + 2889: 0x00006471, + 2890: 0x00024665, + 2891: 0x00022B6A, + 2892: 0x00003A29, + 2893: 0x00022B22, + 2894: 0x00023450, + 2895: 0x000298EA, + 2896: 0x00022E78, + 2897: 0x00006337, + 2898: 0x0002A45B, + 2899: 0x000064B6, + 2900: 0x00006331, + 2901: 0x000063D1, + 2902: 0x000249E3, + 2903: 0x00022D67, + 2904: 0x000062A4, + 2905: 0x00022CA1, + 2906: 0x0000643B, + 2907: 0x0000656B, + 2908: 0x00006972, + 2909: 0x00003BF4, + 2910: 0x0002308E, + 2911: 0x000232AD, + 2912: 0x00024989, + 2913: 0x000232AB, + 2914: 0x0000550D, + 2915: 0x000232E0, + 2916: 0x000218D9, + 2917: 0x0002943F, + 2918: 0x000066CE, + 2919: 0x00023289, + 2920: 0x000231B3, + 2921: 0x00003AE0, + 2922: 0x00004190, + 2923: 0x00025584, + 2924: 0x00028B22, + 2925: 0x0002558F, + 2926: 0x000216FC, + 2927: 0x0002555B, + 2928: 0x00025425, + 2929: 0x000078EE, + 2930: 0x00023103, + 2931: 0x0002182A, + 2932: 0x00023234, + 2933: 0x00003464, + 2934: 0x0002320F, + 2935: 0x00023182, + 2936: 0x000242C9, + 2937: 0x0000668E, + 2938: 0x00026D24, + 2939: 0x0000666B, + 2940: 0x00004B93, + 2941: 0x00006630, + 2942: 0x00027870, + 2943: 0x00021DEB, + 2944: 0x00006663, + 2945: 0x000232D2, + 2946: 0x000232E1, + 2947: 0x0000661E, + 2948: 0x00025872, + 2949: 0x000038D1, + 2950: 0x0002383A, + 2951: 0x000237BC, + 2952: 0x00003B99, + 2953: 0x000237A2, + 2954: 0x000233FE, + 2955: 0x000074D0, + 2956: 0x00003B96, + 2957: 0x0000678F, + 2958: 0x0002462A, + 2959: 0x000068B6, + 2960: 0x0000681E, + 2961: 0x00003BC4, + 2962: 0x00006ABE, + 2963: 0x00003863, + 2964: 0x000237D5, + 2965: 0x00024487, + 2966: 0x00006A33, + 2967: 0x00006A52, + 2968: 0x00006AC9, + 2969: 0x00006B05, + 2970: 0x00021912, + 2971: 0x00006511, + 2972: 0x00006898, + 2973: 0x00006A4C, + 2974: 0x00003BD7, + 2975: 0x00006A7A, + 2976: 0x00006B57, + 2977: 0x00023FC0, + 2978: 0x00023C9A, + 2979: 0x000093A0, + 2980: 0x000092F2, + 2981: 0x00028BEA, + 2982: 0x00028ACB, + 2983: 0x00009289, + 2984: 0x0002801E, + 2985: 0x000289DC, + 2986: 0x00009467, + 2987: 0x00006DA5, + 2988: 0x00006F0B, + 2989: 0x000249EC, + 2990: 0x00006D67, + 2991: 0x00023F7F, + 2992: 0x00003D8F, + 2993: 0x00006E04, + 2994: 0x0002403C, + 2995: 0x00005A3D, + 2996: 0x00006E0A, + 2997: 0x00005847, + 2998: 0x00006D24, + 2999: 0x00007842, + 3000: 0x0000713B, + 3001: 0x0002431A, + 3002: 0x00024276, + 3003: 0x000070F1, + 3004: 0x00007250, + 3005: 0x00007287, + 3006: 0x00007294, + 3007: 0x0002478F, + 3008: 0x00024725, + 3009: 0x00005179, + 3010: 0x00024AA4, + 3011: 0x000205EB, + 3012: 0x0000747A, + 3013: 0x00023EF8, + 3014: 0x0002365F, + 3015: 0x00024A4A, + 3016: 0x00024917, + 3017: 0x00025FE1, + 3018: 0x00003F06, + 3019: 0x00003EB1, + 3020: 0x00024ADF, + 3021: 0x00028C23, + 3022: 0x00023F35, + 3023: 0x000060A7, + 3024: 0x00003EF3, + 3025: 0x000074CC, + 3026: 0x0000743C, + 3027: 0x00009387, + 3028: 0x00007437, + 3029: 0x0000449F, + 3030: 0x00026DEA, + 3031: 0x00004551, + 3032: 0x00007583, + 3033: 0x00003F63, + 3034: 0x00024CD9, + 3035: 0x00024D06, + 3036: 0x00003F58, + 3037: 0x00007555, + 3038: 0x00007673, + 3039: 0x0002A5C6, + 3040: 0x00003B19, + 3041: 0x00007468, + 3042: 0x00028ACC, + 3043: 0x000249AB, + 3044: 0x0002498E, + 3045: 0x00003AFB, + 3046: 0x00003DCD, + 3047: 0x00024A4E, + 3048: 0x00003EFF, + 3049: 0x000249C5, + 3050: 0x000248F3, + 3051: 0x000091FA, + 3052: 0x00005732, + 3053: 0x00009342, + 3054: 0x00028AE3, + 3055: 0x00021864, + 3056: 0x000050DF, + 3057: 0x00025221, + 3058: 0x000251E7, + 3059: 0x00007778, + 3060: 0x00023232, + 3061: 0x0000770E, + 3062: 0x0000770F, + 3063: 0x0000777B, + 3064: 0x00024697, + 3065: 0x00023781, + 3066: 0x00003A5E, + 3067: 0x000248F0, + 3068: 0x00007438, + 3069: 0x0000749B, + 3070: 0x00003EBF, + 3071: 0x00024ABA, + 3072: 0x00024AC7, + 3073: 0x000040C8, + 3074: 0x00024A96, + 3075: 0x000261AE, + 3076: 0x00009307, + 3077: 0x00025581, + 3078: 0x0000781E, + 3079: 0x0000788D, + 3080: 0x00007888, + 3081: 0x000078D2, + 3082: 0x000073D0, + 3083: 0x00007959, + 3084: 0x00027741, + 3085: 0x000256E3, + 3086: 0x0000410E, + 3087: 0x0000799B, + 3088: 0x00008496, + 3089: 0x000079A5, + 3090: 0x00006A2D, + 3091: 0x00023EFA, + 3092: 0x00007A3A, + 3093: 0x000079F4, + 3094: 0x0000416E, + 3095: 0x000216E6, + 3096: 0x00004132, + 3097: 0x00009235, + 3098: 0x000079F1, + 3099: 0x00020D4C, + 3100: 0x0002498C, + 3101: 0x00020299, + 3102: 0x00023DBA, + 3103: 0x0002176E, + 3104: 0x00003597, + 3105: 0x0000556B, + 3106: 0x00003570, + 3107: 0x000036AA, + 3108: 0x000201D4, + 3109: 0x00020C0D, + 3110: 0x00007AE2, + 3111: 0x00005A59, + 3112: 0x000226F5, + 3113: 0x00025AAF, + 3114: 0x00025A9C, + 3115: 0x00005A0D, + 3116: 0x0002025B, + 3117: 0x000078F0, + 3118: 0x00005A2A, + 3119: 0x00025BC6, + 3120: 0x00007AFE, + 3121: 0x000041F9, + 3122: 0x00007C5D, + 3123: 0x00007C6D, + 3124: 0x00004211, + 3125: 0x00025BB3, + 3126: 0x00025EBC, + 3127: 0x00025EA6, + 3128: 0x00007CCD, + 3129: 0x000249F9, + 3130: 0x000217B0, + 3131: 0x00007C8E, + 3132: 0x00007C7C, + 3133: 0x00007CAE, + 3134: 0x00006AB2, + 3135: 0x00007DDC, + 3136: 0x00007E07, + 3137: 0x00007DD3, + 3138: 0x00007F4E, + 3139: 0x00026261, + 3140: 0x0002615C, + 3141: 0x00027B48, + 3142: 0x00007D97, + 3143: 0x00025E82, + 3144: 0x0000426A, + 3145: 0x00026B75, + 3146: 0x00020916, + 3147: 0x000067D6, + 3148: 0x0002004E, + 3149: 0x000235CF, + 3150: 0x000057C4, + 3151: 0x00026412, + 3152: 0x000263F8, + 3153: 0x00024962, + 3154: 0x00007FDD, + 3155: 0x00007B27, + 3156: 0x0002082C, + 3157: 0x00025AE9, + 3158: 0x00025D43, + 3159: 0x00007B0C, + 3160: 0x00025E0E, + 3161: 0x000099E6, + 3162: 0x00008645, + 3163: 0x00009A63, + 3164: 0x00006A1C, + 3165: 0x0002343F, + 3166: 0x000039E2, + 3167: 0x000249F7, + 3168: 0x000265AD, + 3169: 0x00009A1F, + 3170: 0x000265A0, + 3171: 0x00008480, + 3172: 0x00027127, + 3173: 0x00026CD1, + 3174: 0x000044EA, + 3175: 0x00008137, + 3176: 0x00004402, + 3177: 0x000080C6, + 3178: 0x00008109, + 3179: 0x00008142, + 3180: 0x000267B4, + 3181: 0x000098C3, + 3182: 0x00026A42, + 3183: 0x00008262, + 3184: 0x00008265, + 3185: 0x00026A51, + 3186: 0x00008453, + 3187: 0x00026DA7, + 3188: 0x00008610, + 3189: 0x0002721B, + 3190: 0x00005A86, + 3191: 0x0000417F, + 3192: 0x00021840, + 3193: 0x00005B2B, + 3194: 0x000218A1, + 3195: 0x00005AE4, + 3196: 0x000218D8, + 3197: 0x000086A0, + 3198: 0x0002F9BC, + 3199: 0x00023D8F, + 3200: 0x0000882D, + 3201: 0x00027422, + 3202: 0x00005A02, + 3203: 0x0000886E, + 3204: 0x00004F45, + 3205: 0x00008887, + 3206: 0x000088BF, + 3207: 0x000088E6, + 3208: 0x00008965, + 3209: 0x0000894D, + 3210: 0x00025683, + 3211: 0x00008954, + 3212: 0x00027785, + 3213: 0x00027784, + 3214: 0x00028BF5, + 3215: 0x00028BD9, + 3216: 0x00028B9C, + 3217: 0x000289F9, + 3218: 0x00003EAD, + 3219: 0x000084A3, + 3220: 0x000046F5, + 3221: 0x000046CF, + 3222: 0x000037F2, + 3223: 0x00008A3D, + 3224: 0x00008A1C, + 3225: 0x00029448, + 3226: 0x00005F4D, + 3227: 0x0000922B, + 3228: 0x00024284, + 3229: 0x000065D4, + 3230: 0x00007129, + 3231: 0x000070C4, + 3232: 0x00021845, + 3233: 0x00009D6D, + 3234: 0x00008C9F, + 3235: 0x00008CE9, + 3236: 0x00027DDC, + 3237: 0x0000599A, + 3238: 0x000077C3, + 3239: 0x000059F0, + 3240: 0x0000436E, + 3241: 0x000036D4, + 3242: 0x00008E2A, + 3243: 0x00008EA7, + 3244: 0x00024C09, + 3245: 0x00008F30, + 3246: 0x00008F4A, + 3247: 0x000042F4, + 3248: 0x00006C58, + 3249: 0x00006FBB, + 3250: 0x00022321, + 3251: 0x0000489B, + 3252: 0x00006F79, + 3253: 0x00006E8B, + 3254: 0x000217DA, + 3255: 0x00009BE9, + 3256: 0x000036B5, + 3257: 0x0002492F, + 3258: 0x000090BB, + 3259: 0x00009097, + 3260: 0x00005571, + 3261: 0x00004906, + 3262: 0x000091BB, + 3263: 0x00009404, + 3264: 0x00028A4B, + 3265: 0x00004062, + 3266: 0x00028AFC, + 3267: 0x00009427, + 3268: 0x00028C1D, + 3269: 0x00028C3B, + 3270: 0x000084E5, + 3271: 0x00008A2B, + 3272: 0x00009599, + 3273: 0x000095A7, + 3274: 0x00009597, + 3275: 0x00009596, + 3276: 0x00028D34, + 3277: 0x00007445, + 3278: 0x00003EC2, + 3279: 0x000248FF, + 3280: 0x00024A42, + 3281: 0x000243EA, + 3282: 0x00003EE7, + 3283: 0x00023225, + 3284: 0x0000968F, + 3285: 0x00028EE7, + 3286: 0x00028E66, + 3287: 0x00028E65, + 3288: 0x00003ECC, + 3289: 0x000249ED, + 3290: 0x00024A78, + 3291: 0x00023FEE, + 3292: 0x00007412, + 3293: 0x0000746B, + 3294: 0x00003EFC, + 3295: 0x00009741, + 3296: 0x000290B0, + 3297: 0x00006847, + 3298: 0x00004A1D, + 3299: 0x00029093, + 3300: 0x000257DF, + 3301: 0x0000975D, + 3302: 0x00009368, + 3303: 0x00028989, + 3304: 0x00028C26, + 3305: 0x00028B2F, + 3306: 0x000263BE, + 3307: 0x000092BA, + 3308: 0x00005B11, + 3309: 0x00008B69, + 3310: 0x0000493C, + 3311: 0x000073F9, + 3312: 0x0002421B, + 3313: 0x0000979B, + 3314: 0x00009771, + 3315: 0x00009938, + 3316: 0x00020F26, + 3317: 0x00005DC1, + 3318: 0x00028BC5, + 3319: 0x00024AB2, + 3320: 0x0000981F, + 3321: 0x000294DA, + 3322: 0x000092F6, + 3323: 0x000295D7, + 3324: 0x000091E5, + 3325: 0x000044C0, + 3326: 0x00028B50, + 3327: 0x00024A67, + 3328: 0x00028B64, + 3329: 0x000098DC, + 3330: 0x00028A45, + 3331: 0x00003F00, + 3332: 0x0000922A, + 3333: 0x00004925, + 3334: 0x00008414, + 3335: 0x0000993B, + 3336: 0x0000994D, + 3337: 0x00027B06, + 3338: 0x00003DFD, + 3339: 0x0000999B, + 3340: 0x00004B6F, + 3341: 0x000099AA, + 3342: 0x00009A5C, + 3343: 0x00028B65, + 3344: 0x000258C8, + 3345: 0x00006A8F, + 3346: 0x00009A21, + 3347: 0x00005AFE, + 3348: 0x00009A2F, + 3349: 0x000298F1, + 3350: 0x00004B90, + 3351: 0x00029948, + 3352: 0x000099BC, + 3353: 0x00004BBD, + 3354: 0x00004B97, + 3355: 0x0000937D, + 3356: 0x00005872, + 3357: 0x00021302, + 3358: 0x00005822, + 3359: 0x000249B8, + 3360: 0x000214E8, + 3361: 0x00007844, + 3362: 0x0002271F, + 3363: 0x00023DB8, + 3364: 0x000068C5, + 3365: 0x00003D7D, + 3366: 0x00009458, + 3367: 0x00003927, + 3368: 0x00006150, + 3369: 0x00022781, + 3370: 0x0002296B, + 3371: 0x00006107, + 3372: 0x00009C4F, + 3373: 0x00009C53, + 3374: 0x00009C7B, + 3375: 0x00009C35, + 3376: 0x00009C10, + 3377: 0x00009B7F, + 3378: 0x00009BCF, + 3379: 0x00029E2D, + 3380: 0x00009B9F, + 3381: 0x0002A1F5, + 3382: 0x0002A0FE, + 3383: 0x00009D21, + 3384: 0x00004CAE, + 3385: 0x00024104, + 3386: 0x00009E18, + 3387: 0x00004CB0, + 3388: 0x00009D0C, + 3389: 0x0002A1B4, + 3390: 0x0002A0ED, + 3391: 0x0002A0F3, + 3392: 0x0002992F, + 3393: 0x00009DA5, + 3394: 0x000084BD, + 3395: 0x00026E12, + 3396: 0x00026FDF, + 3397: 0x00026B82, + 3398: 0x000085FC, + 3399: 0x00004533, + 3400: 0x00026DA4, + 3401: 0x00026E84, + 3402: 0x00026DF0, + 3403: 0x00008420, + 3404: 0x000085EE, + 3405: 0x00026E00, + 3406: 0x000237D7, + 3407: 0x00026064, + 3408: 0x000079E2, + 3409: 0x0002359C, + 3410: 0x00023640, + 3411: 0x0000492D, + 3412: 0x000249DE, + 3413: 0x00003D62, + 3414: 0x000093DB, + 3415: 0x000092BE, + 3416: 0x00009348, + 3417: 0x000202BF, + 3418: 0x000078B9, + 3419: 0x00009277, + 3420: 0x0000944D, + 3421: 0x00004FE4, + 3422: 0x00003440, + 3423: 0x00009064, + 3424: 0x0002555D, + 3425: 0x0000783D, + 3426: 0x00007854, + 3427: 0x000078B6, + 3428: 0x0000784B, + 3429: 0x00021757, + 3430: 0x000231C9, + 3431: 0x00024941, + 3432: 0x0000369A, + 3433: 0x00004F72, + 3434: 0x00006FDA, + 3435: 0x00006FD9, + 3436: 0x0000701E, + 3437: 0x0000701E, + 3438: 0x00005414, + 3439: 0x000241B5, + 3440: 0x000057BB, + 3441: 0x000058F3, + 3442: 0x0000578A, + 3443: 0x00009D16, + 3444: 0x000057D7, + 3445: 0x00007134, + 3446: 0x000034AF, + 3447: 0x000241AC, + 3448: 0x000071EB, + 3449: 0x00026C40, + 3450: 0x00024F97, + 3451: 0x00005B28, + 3452: 0x000217B5, + 3453: 0x00028A49, + 3454: 0x0000610C, + 3455: 0x00005ACE, + 3456: 0x00005A0B, + 3457: 0x000042BC, + 3458: 0x00024488, + 3459: 0x0000372C, + 3460: 0x00004B7B, + 3461: 0x000289FC, + 3462: 0x000093BB, + 3463: 0x000093B8, + 3464: 0x000218D6, + 3465: 0x00020F1D, + 3466: 0x00008472, + 3467: 0x00026CC0, + 3468: 0x00021413, + 3469: 0x000242FA, + 3470: 0x00022C26, + 3471: 0x000243C1, + 3472: 0x00005994, + 3473: 0x00023DB7, + 3474: 0x00026741, + 3475: 0x00007DA8, + 3476: 0x0002615B, + 3477: 0x000260A4, + 3478: 0x000249B9, + 3479: 0x0002498B, + 3480: 0x000289FA, + 3481: 0x000092E5, + 3482: 0x000073E2, + 3483: 0x00003EE9, + 3484: 0x000074B4, + 3485: 0x00028B63, + 3486: 0x0002189F, + 3487: 0x00003EE1, + 3488: 0x00024AB3, + 3489: 0x00006AD8, + 3490: 0x000073F3, + 3491: 0x000073FB, + 3492: 0x00003ED6, + 3493: 0x00024A3E, + 3494: 0x00024A94, + 3495: 0x000217D9, + 3496: 0x00024A66, + 3497: 0x000203A7, + 3498: 0x00021424, + 3499: 0x000249E5, + 3500: 0x00007448, + 3501: 0x00024916, + 3502: 0x000070A5, + 3503: 0x00024976, + 3504: 0x00009284, + 3505: 0x000073E6, + 3506: 0x0000935F, + 3507: 0x000204FE, + 3508: 0x00009331, + 3509: 0x00028ACE, + 3510: 0x00028A16, + 3511: 0x00009386, + 3512: 0x00028BE7, + 3513: 0x000255D5, + 3514: 0x00004935, + 3515: 0x00028A82, + 3516: 0x0000716B, + 3517: 0x00024943, + 3518: 0x00020CFF, + 3519: 0x000056A4, + 3520: 0x0002061A, + 3521: 0x00020BEB, + 3522: 0x00020CB8, + 3523: 0x00005502, + 3524: 0x000079C4, + 3525: 0x000217FA, + 3526: 0x00007DFE, + 3527: 0x000216C2, + 3528: 0x00024A50, + 3529: 0x00021852, + 3530: 0x0000452E, + 3531: 0x00009401, + 3532: 0x0000370A, + 3533: 0x00028AC0, + 3534: 0x000249AD, + 3535: 0x000059B0, + 3536: 0x000218BF, + 3537: 0x00021883, + 3538: 0x00027484, + 3539: 0x00005AA1, + 3540: 0x000036E2, + 3541: 0x00023D5B, + 3542: 0x000036B0, + 3543: 0x0000925F, + 3544: 0x00005A79, + 3545: 0x00028A81, + 3546: 0x00021862, + 3547: 0x00009374, + 3548: 0x00003CCD, + 3549: 0x00020AB4, + 3550: 0x00004A96, + 3551: 0x0000398A, + 3552: 0x000050F4, + 3553: 0x00003D69, + 3554: 0x00003D4C, + 3555: 0x0002139C, + 3556: 0x00007175, + 3557: 0x000042FB, + 3558: 0x00028218, + 3559: 0x00006E0F, + 3560: 0x000290E4, + 3561: 0x000044EB, + 3562: 0x00006D57, + 3563: 0x00027E4F, + 3564: 0x00007067, + 3565: 0x00006CAF, + 3566: 0x00003CD6, + 3567: 0x00023FED, + 3568: 0x00023E2D, + 3569: 0x00006E02, + 3570: 0x00006F0C, + 3571: 0x00003D6F, + 3572: 0x000203F5, + 3573: 0x00007551, + 3574: 0x000036BC, + 3575: 0x000034C8, + 3576: 0x00004680, + 3577: 0x00003EDA, + 3578: 0x00004871, + 3579: 0x000059C4, + 3580: 0x0000926E, + 3581: 0x0000493E, + 3582: 0x00008F41, + 3583: 0x00028C1C, + 3584: 0x00026BC0, + 3585: 0x00005812, + 3586: 0x000057C8, + 3587: 0x000036D6, + 3588: 0x00021452, + 3589: 0x000070FE, + 3590: 0x00024362, + 3591: 0x00024A71, + 3592: 0x00022FE3, + 3593: 0x000212B0, + 3594: 0x000223BD, + 3595: 0x000068B9, + 3596: 0x00006967, + 3597: 0x00021398, + 3598: 0x000234E5, + 3599: 0x00027BF4, + 3600: 0x000236DF, + 3601: 0x00028A83, + 3602: 0x000237D6, + 3603: 0x000233FA, + 3604: 0x00024C9F, + 3605: 0x00006A1A, + 3606: 0x000236AD, + 3607: 0x00026CB7, + 3608: 0x0000843E, + 3609: 0x000044DF, + 3610: 0x000044CE, + 3611: 0x00026D26, + 3612: 0x00026D51, + 3613: 0x00026C82, + 3614: 0x00026FDE, + 3615: 0x00006F17, + 3616: 0x00027109, + 3617: 0x0000833D, + 3618: 0x0002173A, + 3619: 0x000083ED, + 3620: 0x00026C80, + 3621: 0x00027053, + 3622: 0x000217DB, + 3623: 0x00005989, + 3624: 0x00005A82, + 3625: 0x000217B3, + 3626: 0x00005A61, + 3627: 0x00005A71, + 3628: 0x00021905, + 3629: 0x000241FC, + 3630: 0x0000372D, + 3631: 0x000059EF, + 3632: 0x0002173C, + 3633: 0x000036C7, + 3634: 0x0000718E, + 3635: 0x00009390, + 3636: 0x0000669A, + 3637: 0x000242A5, + 3638: 0x00005A6E, + 3639: 0x00005A2B, + 3640: 0x00024293, + 3641: 0x00006A2B, + 3642: 0x00023EF9, + 3643: 0x00027736, + 3644: 0x0002445B, + 3645: 0x000242CA, + 3646: 0x0000711D, + 3647: 0x00024259, + 3648: 0x000289E1, + 3649: 0x00004FB0, + 3650: 0x00026D28, + 3651: 0x00005CC2, + 3652: 0x000244CE, + 3653: 0x00027E4D, + 3654: 0x000243BD, + 3655: 0x00006A0C, + 3656: 0x00024256, + 3657: 0x00021304, + 3658: 0x000070A6, + 3659: 0x00007133, + 3660: 0x000243E9, + 3661: 0x00003DA5, + 3662: 0x00006CDF, + 3663: 0x0002F825, + 3664: 0x00024A4F, + 3665: 0x00007E65, + 3666: 0x000059EB, + 3667: 0x00005D2F, + 3668: 0x00003DF3, + 3669: 0x00005F5C, + 3670: 0x00024A5D, + 3671: 0x000217DF, + 3672: 0x00007DA4, + 3673: 0x00008426, + 3674: 0x00005485, + 3675: 0x00023AFA, + 3676: 0x00023300, + 3677: 0x00020214, + 3678: 0x0000577E, + 3679: 0x000208D5, + 3680: 0x00020619, + 3681: 0x00003FE5, + 3682: 0x00021F9E, + 3683: 0x0002A2B6, + 3684: 0x00007003, + 3685: 0x0002915B, + 3686: 0x00005D70, + 3687: 0x0000738F, + 3688: 0x00007CD3, + 3689: 0x00028A59, + 3690: 0x00029420, + 3691: 0x00004FC8, + 3692: 0x00007FE7, + 3693: 0x000072CD, + 3694: 0x00007310, + 3695: 0x00027AF4, + 3696: 0x00007338, + 3697: 0x00007339, + 3698: 0x000256F6, + 3699: 0x00007341, + 3700: 0x00007348, + 3701: 0x00003EA9, + 3702: 0x00027B18, + 3703: 0x0000906C, + 3704: 0x000071F5, + 3705: 0x000248F2, + 3706: 0x000073E1, + 3707: 0x000081F6, + 3708: 0x00003ECA, + 3709: 0x0000770C, + 3710: 0x00003ED1, + 3711: 0x00006CA2, + 3712: 0x000056FD, + 3713: 0x00007419, + 3714: 0x0000741E, + 3715: 0x0000741F, + 3716: 0x00003EE2, + 3717: 0x00003EF0, + 3718: 0x00003EF4, + 3719: 0x00003EFA, + 3720: 0x000074D3, + 3721: 0x00003F0E, + 3722: 0x00003F53, + 3723: 0x00007542, + 3724: 0x0000756D, + 3725: 0x00007572, + 3726: 0x0000758D, + 3727: 0x00003F7C, + 3728: 0x000075C8, + 3729: 0x000075DC, + 3730: 0x00003FC0, + 3731: 0x0000764D, + 3732: 0x00003FD7, + 3733: 0x00007674, + 3734: 0x00003FDC, + 3735: 0x0000767A, + 3736: 0x00024F5C, + 3737: 0x00007188, + 3738: 0x00005623, + 3739: 0x00008980, + 3740: 0x00005869, + 3741: 0x0000401D, + 3742: 0x00007743, + 3743: 0x00004039, + 3744: 0x00006761, + 3745: 0x00004045, + 3746: 0x000035DB, + 3747: 0x00007798, + 3748: 0x0000406A, + 3749: 0x0000406F, + 3750: 0x00005C5E, + 3751: 0x000077BE, + 3752: 0x000077CB, + 3753: 0x000058F2, + 3754: 0x00007818, + 3755: 0x000070B9, + 3756: 0x0000781C, + 3757: 0x000040A8, + 3758: 0x00007839, + 3759: 0x00007847, + 3760: 0x00007851, + 3761: 0x00007866, + 3762: 0x00008448, + 3763: 0x00025535, + 3764: 0x00007933, + 3765: 0x00006803, + 3766: 0x00007932, + 3767: 0x00004103, + 3768: 0x00004109, + 3769: 0x00007991, + 3770: 0x00007999, + 3771: 0x00008FBB, + 3772: 0x00007A06, + 3773: 0x00008FBC, + 3774: 0x00004167, + 3775: 0x00007A91, + 3776: 0x000041B2, + 3777: 0x00007ABC, + 3778: 0x00008279, + 3779: 0x000041C4, + 3780: 0x00007ACF, + 3781: 0x00007ADB, + 3782: 0x000041CF, + 3783: 0x00004E21, + 3784: 0x00007B62, + 3785: 0x00007B6C, + 3786: 0x00007B7B, + 3787: 0x00007C12, + 3788: 0x00007C1B, + 3789: 0x00004260, + 3790: 0x0000427A, + 3791: 0x00007C7B, + 3792: 0x00007C9C, + 3793: 0x0000428C, + 3794: 0x00007CB8, + 3795: 0x00004294, + 3796: 0x00007CED, + 3797: 0x00008F93, + 3798: 0x000070C0, + 3799: 0x00020CCF, + 3800: 0x00007DCF, + 3801: 0x00007DD4, + 3802: 0x00007DD0, + 3803: 0x00007DFD, + 3804: 0x00007FAE, + 3805: 0x00007FB4, + 3806: 0x0000729F, + 3807: 0x00004397, + 3808: 0x00008020, + 3809: 0x00008025, + 3810: 0x00007B39, + 3811: 0x0000802E, + 3812: 0x00008031, + 3813: 0x00008054, + 3814: 0x00003DCC, + 3815: 0x000057B4, + 3816: 0x000070A0, + 3817: 0x000080B7, + 3818: 0x000080E9, + 3819: 0x000043ED, + 3820: 0x0000810C, + 3821: 0x0000732A, + 3822: 0x0000810E, + 3823: 0x00008112, + 3824: 0x00007560, + 3825: 0x00008114, + 3826: 0x00004401, + 3827: 0x00003B39, + 3828: 0x00008156, + 3829: 0x00008159, + 3830: 0x0000815A, + 3831: 0x00004413, + 3832: 0x0000583A, + 3833: 0x0000817C, + 3834: 0x00008184, + 3835: 0x00004425, + 3836: 0x00008193, + 3837: 0x0000442D, + 3838: 0x000081A5, + 3839: 0x000057EF, + 3840: 0x000081C1, + 3841: 0x000081E4, + 3842: 0x00008254, + 3843: 0x0000448F, + 3844: 0x000082A6, + 3845: 0x00008276, + 3846: 0x000082CA, + 3847: 0x000082D8, + 3848: 0x000082FF, + 3849: 0x000044B0, + 3850: 0x00008357, + 3851: 0x00009669, + 3852: 0x0000698A, + 3853: 0x00008405, + 3854: 0x000070F5, + 3855: 0x00008464, + 3856: 0x000060E3, + 3857: 0x00008488, + 3858: 0x00004504, + 3859: 0x000084BE, + 3860: 0x000084E1, + 3861: 0x000084F8, + 3862: 0x00008510, + 3863: 0x00008538, + 3864: 0x00008552, + 3865: 0x0000453B, + 3866: 0x0000856F, + 3867: 0x00008570, + 3868: 0x000085E0, + 3869: 0x00004577, + 3870: 0x00008672, + 3871: 0x00008692, + 3872: 0x000086B2, + 3873: 0x000086EF, + 3874: 0x00009645, + 3875: 0x0000878B, + 3876: 0x00004606, + 3877: 0x00004617, + 3878: 0x000088AE, + 3879: 0x000088FF, + 3880: 0x00008924, + 3881: 0x00008947, + 3882: 0x00008991, + 3883: 0x00027967, + 3884: 0x00008A29, + 3885: 0x00008A38, + 3886: 0x00008A94, + 3887: 0x00008AB4, + 3888: 0x00008C51, + 3889: 0x00008CD4, + 3890: 0x00008CF2, + 3891: 0x00008D1C, + 3892: 0x00004798, + 3893: 0x0000585F, + 3894: 0x00008DC3, + 3895: 0x000047ED, + 3896: 0x00004EEE, + 3897: 0x00008E3A, + 3898: 0x000055D8, + 3899: 0x00005754, + 3900: 0x00008E71, + 3901: 0x000055F5, + 3902: 0x00008EB0, + 3903: 0x00004837, + 3904: 0x00008ECE, + 3905: 0x00008EE2, + 3906: 0x00008EE4, + 3907: 0x00008EED, + 3908: 0x00008EF2, + 3909: 0x00008FB7, + 3910: 0x00008FC1, + 3911: 0x00008FCA, + 3912: 0x00008FCC, + 3913: 0x00009033, + 3914: 0x000099C4, + 3915: 0x000048AD, + 3916: 0x000098E0, + 3917: 0x00009213, + 3918: 0x0000491E, + 3919: 0x00009228, + 3920: 0x00009258, + 3921: 0x0000926B, + 3922: 0x000092B1, + 3923: 0x000092AE, + 3924: 0x000092BF, + 3925: 0x000092E3, + 3926: 0x000092EB, + 3927: 0x000092F3, + 3928: 0x000092F4, + 3929: 0x000092FD, + 3930: 0x00009343, + 3931: 0x00009384, + 3932: 0x000093AD, + 3933: 0x00004945, + 3934: 0x00004951, + 3935: 0x00009EBF, + 3936: 0x00009417, + 3937: 0x00005301, + 3938: 0x0000941D, + 3939: 0x0000942D, + 3940: 0x0000943E, + 3941: 0x0000496A, + 3942: 0x00009454, + 3943: 0x00009479, + 3944: 0x0000952D, + 3945: 0x000095A2, + 3946: 0x000049A7, + 3947: 0x000095F4, + 3948: 0x00009633, + 3949: 0x000049E5, + 3950: 0x000067A0, + 3951: 0x00004A24, + 3952: 0x00009740, + 3953: 0x00004A35, + 3954: 0x000097B2, + 3955: 0x000097C2, + 3956: 0x00005654, + 3957: 0x00004AE4, + 3958: 0x000060E8, + 3959: 0x000098B9, + 3960: 0x00004B19, + 3961: 0x000098F1, + 3962: 0x00005844, + 3963: 0x0000990E, + 3964: 0x00009919, + 3965: 0x000051B4, + 3966: 0x0000991C, + 3967: 0x00009937, + 3968: 0x00009942, + 3969: 0x0000995D, + 3970: 0x00009962, + 3971: 0x00004B70, + 3972: 0x000099C5, + 3973: 0x00004B9D, + 3974: 0x00009A3C, + 3975: 0x00009B0F, + 3976: 0x00007A83, + 3977: 0x00009B69, + 3978: 0x00009B81, + 3979: 0x00009BDD, + 3980: 0x00009BF1, + 3981: 0x00009BF4, + 3982: 0x00004C6D, + 3983: 0x00009C20, + 3984: 0x0000376F, + 3985: 0x00021BC2, + 3986: 0x00009D49, + 3987: 0x00009C3A, + 3988: 0x00009EFE, + 3989: 0x00005650, + 3990: 0x00009D93, + 3991: 0x00009DBD, + 3992: 0x00009DC0, + 3993: 0x00009DFC, + 3994: 0x000094F6, + 3995: 0x00008FB6, + 3996: 0x00009E7B, + 3997: 0x00009EAC, + 3998: 0x00009EB1, + 3999: 0x00009EBD, + 4000: 0x00009EC6, + 4001: 0x000094DC, + 4002: 0x00009EE2, + 4003: 0x00009EF1, + 4004: 0x00009EF8, + 4005: 0x00007AC8, + 4006: 0x00009F44, + 4007: 0x00020094, + 4008: 0x000202B7, + 4009: 0x000203A0, + 4010: 0x0000691A, + 4011: 0x000094C3, + 4012: 0x000059AC, + 4013: 0x000204D7, + 4014: 0x00005840, + 4015: 0x000094C1, + 4016: 0x000037B9, + 4017: 0x000205D5, + 4018: 0x00020615, + 4019: 0x00020676, + 4020: 0x000216BA, + 4021: 0x00005757, + 4022: 0x00007173, + 4023: 0x00020AC2, + 4024: 0x00020ACD, + 4025: 0x00020BBF, + 4026: 0x0000546A, + 4027: 0x0002F83B, + 4028: 0x00020BCB, + 4029: 0x0000549E, + 4030: 0x00020BFB, + 4031: 0x00020C3B, + 4032: 0x00020C53, + 4033: 0x00020C65, + 4034: 0x00020C7C, + 4035: 0x000060E7, + 4036: 0x00020C8D, + 4037: 0x0000567A, + 4038: 0x00020CB5, + 4039: 0x00020CDD, + 4040: 0x00020CED, + 4041: 0x00020D6F, + 4042: 0x00020DB2, + 4043: 0x00020DC8, + 4044: 0x00006955, + 4045: 0x00009C2F, + 4046: 0x000087A5, + 4047: 0x00020E04, + 4048: 0x00020E0E, + 4049: 0x00020ED7, + 4050: 0x00020F90, + 4051: 0x00020F2D, + 4052: 0x00020E73, + 4053: 0x00005C20, + 4054: 0x00020FBC, + 4055: 0x00005E0B, + 4056: 0x0002105C, + 4057: 0x0002104F, + 4058: 0x00021076, + 4059: 0x0000671E, + 4060: 0x0002107B, + 4061: 0x00021088, + 4062: 0x00021096, + 4063: 0x00003647, + 4064: 0x000210BF, + 4065: 0x000210D3, + 4066: 0x0002112F, + 4067: 0x0002113B, + 4068: 0x00005364, + 4069: 0x000084AD, + 4070: 0x000212E3, + 4071: 0x00021375, + 4072: 0x00021336, + 4073: 0x00008B81, + 4074: 0x00021577, + 4075: 0x00021619, + 4076: 0x000217C3, + 4077: 0x000217C7, + 4078: 0x00004E78, + 4079: 0x000070BB, + 4080: 0x0002182D, + 4081: 0x0002196A, + 4082: 0x00021A2D, + 4083: 0x00021A45, + 4084: 0x00021C2A, + 4085: 0x00021C70, + 4086: 0x00021CAC, + 4087: 0x00021EC8, + 4088: 0x000062C3, + 4089: 0x00021ED5, + 4090: 0x00021F15, + 4091: 0x00007198, + 4092: 0x00006855, + 4093: 0x00022045, + 4094: 0x000069E9, + 4095: 0x000036C8, + 4096: 0x0002227C, + 4097: 0x000223D7, + 4098: 0x000223FA, + 4099: 0x0002272A, + 4100: 0x00022871, + 4101: 0x0002294F, + 4102: 0x000082FD, + 4103: 0x00022967, + 4104: 0x00022993, + 4105: 0x00022AD5, + 4106: 0x000089A5, + 4107: 0x00022AE8, + 4108: 0x00008FA0, + 4109: 0x00022B0E, + 4110: 0x000097B8, + 4111: 0x00022B3F, + 4112: 0x00009847, + 4113: 0x00009ABD, + 4114: 0x00022C4C, + 4116: 0x00022C88, + 4117: 0x00022CB7, + 4118: 0x00025BE8, + 4119: 0x00022D08, + 4120: 0x00022D12, + 4121: 0x00022DB7, + 4122: 0x00022D95, + 4123: 0x00022E42, + 4124: 0x00022F74, + 4125: 0x00022FCC, + 4126: 0x00023033, + 4127: 0x00023066, + 4128: 0x0002331F, + 4129: 0x000233DE, + 4130: 0x00005FB1, + 4131: 0x00006648, + 4132: 0x000066BF, + 4133: 0x00027A79, + 4134: 0x00023567, + 4135: 0x000235F3, + 4136: 0x00007201, + 4137: 0x000249BA, + 4138: 0x000077D7, + 4139: 0x0002361A, + 4140: 0x00023716, + 4141: 0x00007E87, + 4142: 0x00020346, + 4143: 0x000058B5, + 4144: 0x0000670E, + 4145: 0x00006918, + 4146: 0x00023AA7, + 4147: 0x00027657, + 4148: 0x00025FE2, + 4149: 0x00023E11, + 4150: 0x00023EB9, + 4151: 0x000275FE, + 4152: 0x0002209A, + 4153: 0x000048D0, + 4154: 0x00004AB8, + 4155: 0x00024119, + 4156: 0x00028A9A, + 4157: 0x000242EE, + 4158: 0x0002430D, + 4159: 0x0002403B, + 4160: 0x00024334, + 4161: 0x00024396, + 4162: 0x00024A45, + 4163: 0x000205CA, + 4164: 0x000051D2, + 4165: 0x00020611, + 4166: 0x0000599F, + 4167: 0x00021EA8, + 4168: 0x00003BBE, + 4169: 0x00023CFF, + 4170: 0x00024404, + 4171: 0x000244D6, + 4172: 0x00005788, + 4173: 0x00024674, + 4174: 0x0000399B, + 4175: 0x0002472F, + 4176: 0x000285E8, + 4177: 0x000299C9, + 4178: 0x00003762, + 4179: 0x000221C3, + 4180: 0x00008B5E, + 4181: 0x00028B4E, + 4182: 0x000099D6, + 4183: 0x00024812, + 4184: 0x000248FB, + 4185: 0x00024A15, + 4186: 0x00007209, + 4187: 0x00024AC0, + 4188: 0x00020C78, + 4189: 0x00005965, + 4190: 0x00024EA5, + 4191: 0x00024F86, + 4192: 0x00020779, + 4193: 0x00008EDA, + 4194: 0x0002502C, + 4195: 0x0000528F, + 4196: 0x0000573F, + 4197: 0x00007171, + 4198: 0x00025299, + 4199: 0x00025419, + 4200: 0x00023F4A, + 4201: 0x00024AA7, + 4202: 0x000055BC, + 4203: 0x00025446, + 4204: 0x0002546E, + 4205: 0x00026B52, + 4206: 0x000091D4, + 4207: 0x00003473, + 4208: 0x0002553F, + 4209: 0x00027632, + 4210: 0x0002555E, + 4211: 0x00004718, + 4212: 0x00025562, + 4213: 0x00025566, + 4214: 0x000257C7, + 4215: 0x0002493F, + 4216: 0x0002585D, + 4217: 0x00005066, + 4218: 0x000034FB, + 4219: 0x000233CC, + 4220: 0x000060DE, + 4221: 0x00025903, + 4222: 0x0000477C, + 4223: 0x00028948, + 4224: 0x00025AAE, + 4225: 0x00025B89, + 4226: 0x00025C06, + 4227: 0x00021D90, + 4228: 0x000057A1, + 4229: 0x00007151, + 4230: 0x00006FB6, + 4231: 0x00026102, + 4232: 0x00027C12, + 4233: 0x00009056, + 4234: 0x000261B2, + 4235: 0x00024F9A, + 4236: 0x00008B62, + 4237: 0x00026402, + 4238: 0x0002644A, + 4239: 0x00005D5B, + 4240: 0x00026BF7, + 4241: 0x00008F36, + 4242: 0x00026484, + 4243: 0x0002191C, + 4244: 0x00008AEA, + 4245: 0x000249F6, + 4246: 0x00026488, + 4247: 0x00023FEF, + 4248: 0x00026512, + 4249: 0x00004BC0, + 4250: 0x000265BF, + 4251: 0x000266B5, + 4252: 0x0002271B, + 4253: 0x00009465, + 4254: 0x000257E1, + 4255: 0x00006195, + 4256: 0x00005A27, + 4257: 0x0002F8CD, + 4258: 0x00004FBB, + 4259: 0x000056B9, + 4260: 0x00024521, + 4261: 0x000266FC, + 4262: 0x00004E6A, + 4263: 0x00024934, + 4264: 0x00009656, + 4265: 0x00006D8F, + 4266: 0x00026CBD, + 4267: 0x00003618, + 4268: 0x00008977, + 4269: 0x00026799, + 4270: 0x0002686E, + 4271: 0x00026411, + 4272: 0x0002685E, + 4273: 0x000071DF, + 4274: 0x000268C7, + 4275: 0x00007B42, + 4276: 0x000290C0, + 4277: 0x00020A11, + 4278: 0x00026926, + 4279: 0x00009104, + 4280: 0x00026939, + 4281: 0x00007A45, + 4282: 0x00009DF0, + 4283: 0x000269FA, + 4284: 0x00009A26, + 4285: 0x00026A2D, + 4286: 0x0000365F, + 4287: 0x00026469, + 4288: 0x00020021, + 4289: 0x00007983, + 4290: 0x00026A34, + 4291: 0x00026B5B, + 4292: 0x00005D2C, + 4293: 0x00023519, + 4294: 0x000083CF, + 4295: 0x00026B9D, + 4296: 0x000046D0, + 4297: 0x00026CA4, + 4298: 0x0000753B, + 4299: 0x00008865, + 4300: 0x00026DAE, + 4301: 0x000058B6, + 4302: 0x0000371C, + 4303: 0x0002258D, + 4304: 0x0002704B, + 4305: 0x000271CD, + 4306: 0x00003C54, + 4307: 0x00027280, + 4308: 0x00027285, + 4309: 0x00009281, + 4310: 0x0002217A, + 4311: 0x0002728B, + 4312: 0x00009330, + 4313: 0x000272E6, + 4314: 0x000249D0, + 4315: 0x00006C39, + 4316: 0x0000949F, + 4317: 0x00027450, + 4318: 0x00020EF8, + 4319: 0x00008827, + 4320: 0x000088F5, + 4321: 0x00022926, + 4322: 0x00028473, + 4323: 0x000217B1, + 4324: 0x00006EB8, + 4325: 0x00024A2A, + 4326: 0x00021820, + 4327: 0x000039A4, + 4328: 0x000036B9, + 4329: 0x00005C10, + 4330: 0x000079E3, + 4331: 0x0000453F, + 4332: 0x000066B6, + 4333: 0x00029CAD, + 4334: 0x000298A4, + 4335: 0x00008943, + 4336: 0x000277CC, + 4337: 0x00027858, + 4338: 0x000056D6, + 4339: 0x000040DF, + 4340: 0x0002160A, + 4341: 0x000039A1, + 4342: 0x0002372F, + 4343: 0x000280E8, + 4344: 0x000213C5, + 4345: 0x000071AD, + 4346: 0x00008366, + 4347: 0x000279DD, + 4348: 0x000291A8, + 4349: 0x00005A67, + 4350: 0x00004CB7, + 4351: 0x000270AF, + 4352: 0x000289AB, + 4353: 0x000279FD, + 4354: 0x00027A0A, + 4355: 0x00027B0B, + 4356: 0x00027D66, + 4357: 0x0002417A, + 4358: 0x00007B43, + 4359: 0x0000797E, + 4360: 0x00028009, + 4361: 0x00006FB5, + 4362: 0x0002A2DF, + 4363: 0x00006A03, + 4364: 0x00028318, + 4365: 0x000053A2, + 4366: 0x00026E07, + 4367: 0x000093BF, + 4368: 0x00006836, + 4369: 0x0000975D, + 4370: 0x0002816F, + 4371: 0x00028023, + 4372: 0x000269B5, + 4373: 0x000213ED, + 4374: 0x0002322F, + 4375: 0x00028048, + 4376: 0x00005D85, + 4377: 0x00028C30, + 4378: 0x00028083, + 4379: 0x00005715, + 4380: 0x00009823, + 4381: 0x00028949, + 4382: 0x00005DAB, + 4383: 0x00024988, + 4384: 0x000065BE, + 4385: 0x000069D5, + 4386: 0x000053D2, + 4387: 0x00024AA5, + 4388: 0x00023F81, + 4389: 0x00003C11, + 4390: 0x00006736, + 4391: 0x00028090, + 4392: 0x000280F4, + 4393: 0x0002812E, + 4394: 0x00021FA1, + 4395: 0x0002814F, + 4396: 0x00028189, + 4397: 0x000281AF, + 4398: 0x0002821A, + 4399: 0x00028306, + 4400: 0x0002832F, + 4401: 0x0002838A, + 4402: 0x000035CA, + 4403: 0x00028468, + 4404: 0x000286AA, + 4405: 0x000048FA, + 4406: 0x000063E6, + 4407: 0x00028956, + 4408: 0x00007808, + 4409: 0x00009255, + 4410: 0x000289B8, + 4411: 0x000043F2, + 4412: 0x000289E7, + 4413: 0x000043DF, + 4414: 0x000289E8, + 4415: 0x00028B46, + 4416: 0x00028BD4, + 4417: 0x000059F8, + 4418: 0x00028C09, + 4419: 0x00008F0B, + 4420: 0x00028FC5, + 4421: 0x000290EC, + 4422: 0x00007B51, + 4423: 0x00029110, + 4424: 0x0002913C, + 4425: 0x00003DF7, + 4426: 0x0002915E, + 4427: 0x00024ACA, + 4428: 0x00008FD0, + 4429: 0x0000728F, + 4430: 0x0000568B, + 4431: 0x000294E7, + 4432: 0x000295E9, + 4433: 0x000295B0, + 4434: 0x000295B8, + 4435: 0x00029732, + 4436: 0x000298D1, + 4437: 0x00029949, + 4438: 0x0002996A, + 4439: 0x000299C3, + 4440: 0x00029A28, + 4441: 0x00029B0E, + 4442: 0x00029D5A, + 4443: 0x00029D9B, + 4444: 0x00007E9F, + 4445: 0x00029EF8, + 4446: 0x00029F23, + 4447: 0x00004CA4, + 4448: 0x00009547, + 4449: 0x0002A293, + 4450: 0x000071A2, + 4451: 0x0002A2FF, + 4452: 0x00004D91, + 4453: 0x00009012, + 4454: 0x0002A5CB, + 4455: 0x00004D9C, + 4456: 0x00020C9C, + 4457: 0x00008FBE, + 4458: 0x000055C1, + 4459: 0x00008FBA, + 4460: 0x000224B0, + 4461: 0x00008FB9, + 4462: 0x00024A93, + 4463: 0x00004509, + 4464: 0x00007E7F, + 4465: 0x00006F56, + 4466: 0x00006AB1, + 4467: 0x00004EEA, + 4468: 0x000034E4, + 4469: 0x00028B2C, + 4470: 0x0002789D, + 4471: 0x0000373A, + 4472: 0x00008E80, + 4473: 0x000217F5, + 4474: 0x00028024, + 4475: 0x00028B6C, + 4476: 0x00028B99, + 4477: 0x00027A3E, + 4478: 0x000266AF, + 4479: 0x00003DEB, + 4480: 0x00027655, + 4481: 0x00023CB7, + 4482: 0x00025635, + 4483: 0x00025956, + 4484: 0x00004E9A, + 4485: 0x00025E81, + 4486: 0x00026258, + 4487: 0x000056BF, + 4488: 0x00020E6D, + 4489: 0x00008E0E, + 4490: 0x00005B6D, + 4491: 0x00023E88, + 4492: 0x00024C9E, + 4493: 0x000063DE, + 4494: 0x000062D0, + 4495: 0x000217F6, + 4496: 0x0002187B, + 4497: 0x00006530, + 4498: 0x0000562D, + 4499: 0x00025C4A, + 4500: 0x0000541A, + 4501: 0x00025311, + 4502: 0x00003DC6, + 4503: 0x00029D98, + 4504: 0x00004C7D, + 4505: 0x00005622, + 4506: 0x0000561E, + 4507: 0x00007F49, + 4508: 0x00025ED8, + 4509: 0x00005975, + 4510: 0x00023D40, + 4511: 0x00008770, + 4512: 0x00004E1C, + 4513: 0x00020FEA, + 4514: 0x00020D49, + 4515: 0x000236BA, + 4516: 0x00008117, + 4517: 0x00009D5E, + 4518: 0x00008D18, + 4519: 0x0000763B, + 4520: 0x00009C45, + 4521: 0x0000764E, + 4522: 0x000077B9, + 4523: 0x00009345, + 4524: 0x00005432, + 4525: 0x00008148, + 4526: 0x000082F7, + 4527: 0x00005625, + 4528: 0x00008132, + 4529: 0x00008418, + 4530: 0x000080BD, + 4531: 0x000055EA, + 4532: 0x00007962, + 4533: 0x00005643, + 4534: 0x00005416, + 4535: 0x00020E9D, + 4536: 0x000035CE, + 4537: 0x00005605, + 4538: 0x000055F1, + 4539: 0x000066F1, + 4540: 0x000282E2, + 4541: 0x0000362D, + 4542: 0x00007534, + 4543: 0x000055F0, + 4544: 0x000055BA, + 4545: 0x00005497, + 4546: 0x00005572, + 4547: 0x00020C41, + 4548: 0x00020C96, + 4549: 0x00005ED0, + 4550: 0x00025148, + 4551: 0x00020E76, + 4552: 0x00022C62, + 4553: 0x00020EA2, + 4554: 0x00009EAB, + 4555: 0x00007D5A, + 4556: 0x000055DE, + 4557: 0x00021075, + 4558: 0x0000629D, + 4559: 0x0000976D, + 4560: 0x00005494, + 4561: 0x00008CCD, + 4562: 0x000071F6, + 4563: 0x00009176, + 4564: 0x000063FC, + 4565: 0x000063B9, + 4566: 0x000063FE, + 4567: 0x00005569, + 4568: 0x00022B43, + 4569: 0x00009C72, + 4570: 0x00022EB3, + 4571: 0x0000519A, + 4572: 0x000034DF, + 4573: 0x00020DA7, + 4574: 0x000051A7, + 4575: 0x0000544D, + 4576: 0x0000551E, + 4577: 0x00005513, + 4578: 0x00007666, + 4579: 0x00008E2D, + 4580: 0x0002688A, + 4581: 0x000075B1, + 4582: 0x000080B6, + 4583: 0x00008804, + 4584: 0x00008786, + 4585: 0x000088C7, + 4586: 0x000081B6, + 4587: 0x0000841C, + 4588: 0x000210C1, + 4589: 0x000044EC, + 4590: 0x00007304, + 4591: 0x00024706, + 4592: 0x00005B90, + 4593: 0x0000830B, + 4594: 0x00026893, + 4595: 0x0000567B, + 4596: 0x000226F4, + 4597: 0x00027D2F, + 4598: 0x000241A3, + 4599: 0x00027D73, + 4600: 0x00026ED0, + 4601: 0x000272B6, + 4602: 0x00009170, + 4603: 0x000211D9, + 4604: 0x00009208, + 4605: 0x00023CFC, + 4606: 0x0002A6A9, + 4607: 0x00020EAC, + 4608: 0x00020EF9, + 4609: 0x00007266, + 4610: 0x00021CA2, + 4611: 0x0000474E, + 4612: 0x00024FC2, + 4613: 0x00027FF9, + 4614: 0x00020FEB, + 4615: 0x000040FA, + 4616: 0x00009C5D, + 4617: 0x0000651F, + 4618: 0x00022DA0, + 4619: 0x000048F3, + 4620: 0x000247E0, + 4621: 0x00029D7C, + 4622: 0x00020FEC, + 4623: 0x00020E0A, + 4624: 0x00006062, + 4625: 0x000275A3, + 4626: 0x00020FED, + 4628: 0x00026048, + 4629: 0x00021187, + 4630: 0x000071A3, + 4631: 0x00007E8E, + 4632: 0x00009D50, + 4633: 0x00004E1A, + 4634: 0x00004E04, + 4635: 0x00003577, + 4636: 0x00005B0D, + 4637: 0x00006CB2, + 4638: 0x00005367, + 4639: 0x000036AC, + 4640: 0x000039DC, + 4641: 0x0000537D, + 4642: 0x000036A5, + 4643: 0x00024618, + 4644: 0x0000589A, + 4645: 0x00024B6E, + 4646: 0x0000822D, + 4647: 0x0000544B, + 4648: 0x000057AA, + 4649: 0x00025A95, + 4650: 0x00020979, + 4652: 0x00003A52, + 4653: 0x00022465, + 4654: 0x00007374, + 4655: 0x00029EAC, + 4656: 0x00004D09, + 4657: 0x00009BED, + 4658: 0x00023CFE, + 4659: 0x00029F30, + 4660: 0x00004C5B, + 4661: 0x00024FA9, + 4662: 0x0002959E, + 4663: 0x00029FDE, + 4664: 0x0000845C, + 4665: 0x00023DB6, + 4666: 0x000272B2, + 4667: 0x000267B3, + 4668: 0x00023720, + 4669: 0x0000632E, + 4670: 0x00007D25, + 4671: 0x00023EF7, + 4672: 0x00023E2C, + 4673: 0x00003A2A, + 4674: 0x00009008, + 4675: 0x000052CC, + 4676: 0x00003E74, + 4677: 0x0000367A, + 4678: 0x000045E9, + 4679: 0x0002048E, + 4680: 0x00007640, + 4681: 0x00005AF0, + 4682: 0x00020EB6, + 4683: 0x0000787A, + 4684: 0x00027F2E, + 4685: 0x000058A7, + 4686: 0x000040BF, + 4687: 0x0000567C, + 4688: 0x00009B8B, + 4689: 0x00005D74, + 4690: 0x00007654, + 4691: 0x0002A434, + 4692: 0x00009E85, + 4693: 0x00004CE1, + 4694: 0x000075F9, + 4695: 0x000037FB, + 4696: 0x00006119, + 4697: 0x000230DA, + 4698: 0x000243F2, + 4700: 0x0000565D, + 4701: 0x000212A9, + 4702: 0x000057A7, + 4703: 0x00024963, + 4704: 0x00029E06, + 4705: 0x00005234, + 4706: 0x000270AE, + 4707: 0x000035AD, + 4708: 0x00006C4A, + 4709: 0x00009D7C, + 4710: 0x00007C56, + 4711: 0x00009B39, + 4712: 0x000057DE, + 4713: 0x0002176C, + 4714: 0x00005C53, + 4715: 0x000064D3, + 4716: 0x000294D0, + 4717: 0x00026335, + 4718: 0x00027164, + 4719: 0x000086AD, + 4720: 0x00020D28, + 4721: 0x00026D22, + 4722: 0x00024AE2, + 4723: 0x00020D71, + 4725: 0x000051FE, + 4726: 0x00021F0F, + 4727: 0x00005D8E, + 4728: 0x00009703, + 4729: 0x00021DD1, + 4730: 0x00009E81, + 4731: 0x0000904C, + 4732: 0x00007B1F, + 4733: 0x00009B02, + 4734: 0x00005CD1, + 4735: 0x00007BA3, + 4736: 0x00006268, + 4737: 0x00006335, + 4738: 0x00009AFF, + 4739: 0x00007BCF, + 4740: 0x00009B2A, + 4741: 0x00007C7E, + 4742: 0x00009B2E, + 4743: 0x00007C42, + 4744: 0x00007C86, + 4745: 0x00009C15, + 4746: 0x00007BFC, + 4747: 0x00009B09, + 4748: 0x00009F17, + 4749: 0x00009C1B, + 4750: 0x0002493E, + 4751: 0x00009F5A, + 4752: 0x00005573, + 4753: 0x00005BC3, + 4754: 0x00004FFD, + 4755: 0x00009E98, + 4756: 0x00004FF2, + 4757: 0x00005260, + 4758: 0x00003E06, + 4759: 0x000052D1, + 4760: 0x00005767, + 4761: 0x00005056, + 4762: 0x000059B7, + 4763: 0x00005E12, + 4764: 0x000097C8, + 4765: 0x00009DAB, + 4766: 0x00008F5C, + 4767: 0x00005469, + 4768: 0x000097B4, + 4769: 0x00009940, + 4770: 0x000097BA, + 4771: 0x0000532C, + 4772: 0x00006130, + 4773: 0x0000692C, + 4774: 0x000053DA, + 4775: 0x00009C0A, + 4776: 0x00009D02, + 4777: 0x00004C3B, + 4778: 0x00009641, + 4779: 0x00006980, + 4780: 0x000050A6, + 4781: 0x00007546, + 4782: 0x0002176D, + 4783: 0x000099DA, + 4784: 0x00005273, + 4786: 0x00009159, + 4787: 0x00009681, + 4788: 0x0000915C, + 4790: 0x00009151, + 4791: 0x00028E97, + 4792: 0x0000637F, + 4793: 0x00026D23, + 4794: 0x00006ACA, + 4795: 0x00005611, + 4796: 0x0000918E, + 4797: 0x0000757A, + 4798: 0x00006285, + 4799: 0x000203FC, + 4800: 0x0000734F, + 4801: 0x00007C70, + 4802: 0x00025C21, + 4803: 0x00023CFD, + 4805: 0x00024919, + 4806: 0x000076D6, + 4807: 0x00009B9D, + 4808: 0x00004E2A, + 4809: 0x00020CD4, + 4810: 0x000083BE, + 4811: 0x00008842, + 4813: 0x00005C4A, + 4814: 0x000069C0, + 4815: 0x000050ED, + 4816: 0x0000577A, + 4817: 0x0000521F, + 4818: 0x00005DF5, + 4819: 0x00004ECE, + 4820: 0x00006C31, + 4821: 0x000201F2, + 4822: 0x00004F39, + 4823: 0x0000549C, + 4824: 0x000054DA, + 4825: 0x0000529A, + 4826: 0x00008D82, + 4827: 0x000035FE, + 4828: 0x00005F0C, + 4829: 0x000035F3, + 4831: 0x00006B52, + 4832: 0x0000917C, + 4833: 0x00009FA5, + 4834: 0x00009B97, + 4835: 0x0000982E, + 4836: 0x000098B4, + 4837: 0x00009ABA, + 4838: 0x00009EA8, + 4839: 0x00009E84, + 4840: 0x0000717A, + 4841: 0x00007B14, + 4843: 0x00006BFA, + 4844: 0x00008818, + 4845: 0x00007F78, + 4847: 0x00005620, + 4848: 0x0002A64A, + 4849: 0x00008E77, + 4850: 0x00009F53, + 4852: 0x00008DD4, + 4853: 0x00008E4F, + 4854: 0x00009E1C, + 4855: 0x00008E01, + 4856: 0x00006282, + 4857: 0x0002837D, + 4858: 0x00008E28, + 4859: 0x00008E75, + 4860: 0x00007AD3, + 4861: 0x00024A77, + 4862: 0x00007A3E, + 4863: 0x000078D8, + 4864: 0x00006CEA, + 4865: 0x00008A67, + 4866: 0x00007607, + 4867: 0x00028A5A, + 4868: 0x00009F26, + 4869: 0x00006CCE, + 4870: 0x000087D6, + 4871: 0x000075C3, + 4872: 0x0002A2B2, + 4873: 0x00007853, + 4874: 0x0002F840, + 4875: 0x00008D0C, + 4876: 0x000072E2, + 4877: 0x00007371, + 4878: 0x00008B2D, + 4879: 0x00007302, + 4880: 0x000074F1, + 4881: 0x00008CEB, + 4882: 0x00024ABB, + 4883: 0x0000862F, + 4884: 0x00005FBA, + 4885: 0x000088A0, + 4886: 0x000044B7, + 4888: 0x0002183B, + 4889: 0x00026E05, + 4891: 0x00008A7E, + 4892: 0x0002251B, + 4894: 0x000060FD, + 4895: 0x00007667, + 4896: 0x00009AD7, + 4897: 0x00009D44, + 4898: 0x0000936E, + 4899: 0x00009B8F, + 4900: 0x000087F5, + 4902: 0x0000880F, + 4903: 0x00008CF7, + 4904: 0x0000732C, + 4905: 0x00009721, + 4906: 0x00009BB0, + 4907: 0x000035D6, + 4908: 0x000072B2, + 4909: 0x00004C07, + 4910: 0x00007C51, + 4911: 0x0000994A, + 4912: 0x00026159, + 4913: 0x00006159, + 4914: 0x00004C04, + 4915: 0x00009E96, + 4916: 0x0000617D, + 4918: 0x0000575F, + 4919: 0x0000616F, + 4920: 0x000062A6, + 4921: 0x00006239, + 4922: 0x000062CE, + 4923: 0x00003A5C, + 4924: 0x000061E2, + 4925: 0x000053AA, + 4926: 0x000233F5, + 4927: 0x00006364, + 4928: 0x00006802, + 4929: 0x000035D2, + 4930: 0x00005D57, + 4931: 0x00028BC2, + 4932: 0x00008FDA, + 4933: 0x00028E39, + 4935: 0x000050D9, + 4936: 0x00021D46, + 4937: 0x00007906, + 4938: 0x00005332, + 4939: 0x00009638, + 4940: 0x00020F3B, + 4941: 0x00004065, + 4943: 0x000077FE, + 4945: 0x00007CC2, + 4946: 0x00025F1A, + 4947: 0x00007CDA, + 4948: 0x00007A2D, + 4949: 0x00008066, + 4950: 0x00008063, + 4951: 0x00007D4D, + 4952: 0x00007505, + 4953: 0x000074F2, + 4954: 0x00008994, + 4955: 0x0000821A, + 4956: 0x0000670C, + 4957: 0x00008062, + 4958: 0x00027486, + 4959: 0x0000805B, + 4960: 0x000074F0, + 4961: 0x00008103, + 4962: 0x00007724, + 4963: 0x00008989, + 4964: 0x000267CC, + 4965: 0x00007553, + 4966: 0x00026ED1, + 4967: 0x000087A9, + 4968: 0x000087CE, + 4969: 0x000081C8, + 4970: 0x0000878C, + 4971: 0x00008A49, + 4972: 0x00008CAD, + 4973: 0x00008B43, + 4974: 0x0000772B, + 4975: 0x000074F8, + 4976: 0x000084DA, + 4977: 0x00003635, + 4978: 0x000069B2, + 4979: 0x00008DA6, + 4981: 0x000089A9, + 4982: 0x00007468, + 4983: 0x00006DB9, + 4984: 0x000087C1, + 4985: 0x00024011, + 4986: 0x000074E7, + 4987: 0x00003DDB, + 4988: 0x00007176, + 4989: 0x000060A4, + 4990: 0x0000619C, + 4991: 0x00003CD1, + 4992: 0x00007162, + 4993: 0x00006077, + 4995: 0x00007F71, + 4996: 0x00028B2D, + 4997: 0x00007250, + 4998: 0x000060E9, + 4999: 0x00004B7E, + 5000: 0x00005220, + 5001: 0x00003C18, + 5002: 0x00023CC7, + 5003: 0x00025ED7, + 5004: 0x00027656, + 5005: 0x00025531, + 5006: 0x00021944, + 5007: 0x000212FE, + 5008: 0x00029903, + 5009: 0x00026DDC, + 5010: 0x000270AD, + 5011: 0x00005CC1, + 5012: 0x000261AD, + 5013: 0x00028A0F, + 5014: 0x00023677, + 5015: 0x000200EE, + 5016: 0x00026846, + 5017: 0x00024F0E, + 5018: 0x00004562, + 5019: 0x00005B1F, + 5020: 0x0002634C, + 5021: 0x00009F50, + 5022: 0x00009EA6, + 5023: 0x0002626B, + 5024: 0x00003000, + 5025: 0x0000FF0C, + 5026: 0x00003001, + 5027: 0x00003002, + 5028: 0x0000FF0E, + 5029: 0x00002027, + 5030: 0x0000FF1B, + 5031: 0x0000FF1A, + 5032: 0x0000FF1F, + 5033: 0x0000FF01, + 5034: 0x0000FE30, + 5035: 0x00002026, + 5036: 0x00002025, + 5037: 0x0000FE50, + 5038: 0x0000FE51, + 5039: 0x0000FE52, + 5040: 0x000000B7, + 5041: 0x0000FE54, + 5042: 0x0000FE55, + 5043: 0x0000FE56, + 5044: 0x0000FE57, + 5045: 0x0000FF5C, + 5046: 0x00002013, + 5047: 0x0000FE31, + 5048: 0x00002014, + 5049: 0x0000FE33, + 5050: 0x00002574, + 5051: 0x0000FE34, + 5052: 0x0000FE4F, + 5053: 0x0000FF08, + 5054: 0x0000FF09, + 5055: 0x0000FE35, + 5056: 0x0000FE36, + 5057: 0x0000FF5B, + 5058: 0x0000FF5D, + 5059: 0x0000FE37, + 5060: 0x0000FE38, + 5061: 0x00003014, + 5062: 0x00003015, + 5063: 0x0000FE39, + 5064: 0x0000FE3A, + 5065: 0x00003010, + 5066: 0x00003011, + 5067: 0x0000FE3B, + 5068: 0x0000FE3C, + 5069: 0x0000300A, + 5070: 0x0000300B, + 5071: 0x0000FE3D, + 5072: 0x0000FE3E, + 5073: 0x00003008, + 5074: 0x00003009, + 5075: 0x0000FE3F, + 5076: 0x0000FE40, + 5077: 0x0000300C, + 5078: 0x0000300D, + 5079: 0x0000FE41, + 5080: 0x0000FE42, + 5081: 0x0000300E, + 5082: 0x0000300F, + 5083: 0x0000FE43, + 5084: 0x0000FE44, + 5085: 0x0000FE59, + 5086: 0x0000FE5A, + 5087: 0x0000FE5B, + 5088: 0x0000FE5C, + 5089: 0x0000FE5D, + 5090: 0x0000FE5E, + 5091: 0x00002018, + 5092: 0x00002019, + 5093: 0x0000201C, + 5094: 0x0000201D, + 5095: 0x0000301D, + 5096: 0x0000301E, + 5097: 0x00002035, + 5098: 0x00002032, + 5099: 0x0000FF03, + 5100: 0x0000FF06, + 5101: 0x0000FF0A, + 5102: 0x0000203B, + 5103: 0x000000A7, + 5104: 0x00003003, + 5105: 0x000025CB, + 5106: 0x000025CF, + 5107: 0x000025B3, + 5108: 0x000025B2, + 5109: 0x000025CE, + 5110: 0x00002606, + 5111: 0x00002605, + 5112: 0x000025C7, + 5113: 0x000025C6, + 5114: 0x000025A1, + 5115: 0x000025A0, + 5116: 0x000025BD, + 5117: 0x000025BC, + 5118: 0x000032A3, + 5119: 0x00002105, + 5120: 0x000000AF, + 5121: 0x0000FFE3, + 5122: 0x0000FF3F, + 5123: 0x000002CD, + 5124: 0x0000FE49, + 5125: 0x0000FE4A, + 5126: 0x0000FE4D, + 5127: 0x0000FE4E, + 5128: 0x0000FE4B, + 5129: 0x0000FE4C, + 5130: 0x0000FE5F, + 5131: 0x0000FE60, + 5132: 0x0000FE61, + 5133: 0x0000FF0B, + 5134: 0x0000FF0D, + 5135: 0x000000D7, + 5136: 0x000000F7, + 5137: 0x000000B1, + 5138: 0x0000221A, + 5139: 0x0000FF1C, + 5140: 0x0000FF1E, + 5141: 0x0000FF1D, + 5142: 0x00002266, + 5143: 0x00002267, + 5144: 0x00002260, + 5145: 0x0000221E, + 5146: 0x00002252, + 5147: 0x00002261, + 5148: 0x0000FE62, + 5149: 0x0000FE63, + 5150: 0x0000FE64, + 5151: 0x0000FE65, + 5152: 0x0000FE66, + 5153: 0x0000FF5E, + 5154: 0x00002229, + 5155: 0x0000222A, + 5156: 0x000022A5, + 5157: 0x00002220, + 5158: 0x0000221F, + 5159: 0x000022BF, + 5160: 0x000033D2, + 5161: 0x000033D1, + 5162: 0x0000222B, + 5163: 0x0000222E, + 5164: 0x00002235, + 5165: 0x00002234, + 5166: 0x00002640, + 5167: 0x00002642, + 5168: 0x00002295, + 5169: 0x00002299, + 5170: 0x00002191, + 5171: 0x00002193, + 5172: 0x00002190, + 5173: 0x00002192, + 5174: 0x00002196, + 5175: 0x00002197, + 5176: 0x00002199, + 5177: 0x00002198, + 5178: 0x00002225, + 5179: 0x00002223, + 5180: 0x0000FF0F, + 5181: 0x0000FF3C, + 5182: 0x00002215, + 5183: 0x0000FE68, + 5184: 0x0000FF04, + 5185: 0x0000FFE5, + 5186: 0x00003012, + 5187: 0x0000FFE0, + 5188: 0x0000FFE1, + 5189: 0x0000FF05, + 5190: 0x0000FF20, + 5191: 0x00002103, + 5192: 0x00002109, + 5193: 0x0000FE69, + 5194: 0x0000FE6A, + 5195: 0x0000FE6B, + 5196: 0x000033D5, + 5197: 0x0000339C, + 5198: 0x0000339D, + 5199: 0x0000339E, + 5200: 0x000033CE, + 5201: 0x000033A1, + 5202: 0x0000338E, + 5203: 0x0000338F, + 5204: 0x000033C4, + 5205: 0x000000B0, + 5206: 0x00005159, + 5207: 0x0000515B, + 5208: 0x0000515E, + 5209: 0x0000515D, + 5210: 0x00005161, + 5211: 0x00005163, + 5212: 0x000055E7, + 5213: 0x000074E9, + 5214: 0x00007CCE, + 5215: 0x00002581, + 5216: 0x00002582, + 5217: 0x00002583, + 5218: 0x00002584, + 5219: 0x00002585, + 5220: 0x00002586, + 5221: 0x00002587, + 5222: 0x00002588, + 5223: 0x0000258F, + 5224: 0x0000258E, + 5225: 0x0000258D, + 5226: 0x0000258C, + 5227: 0x0000258B, + 5228: 0x0000258A, + 5229: 0x00002589, + 5230: 0x0000253C, + 5231: 0x00002534, + 5232: 0x0000252C, + 5233: 0x00002524, + 5234: 0x0000251C, + 5235: 0x00002594, + 5236: 0x00002500, + 5237: 0x00002502, + 5238: 0x00002595, + 5239: 0x0000250C, + 5240: 0x00002510, + 5241: 0x00002514, + 5242: 0x00002518, + 5243: 0x0000256D, + 5244: 0x0000256E, + 5245: 0x00002570, + 5246: 0x0000256F, + 5247: 0x00002550, + 5248: 0x0000255E, + 5249: 0x0000256A, + 5250: 0x00002561, + 5251: 0x000025E2, + 5252: 0x000025E3, + 5253: 0x000025E5, + 5254: 0x000025E4, + 5255: 0x00002571, + 5256: 0x00002572, + 5257: 0x00002573, + 5258: 0x0000FF10, + 5259: 0x0000FF11, + 5260: 0x0000FF12, + 5261: 0x0000FF13, + 5262: 0x0000FF14, + 5263: 0x0000FF15, + 5264: 0x0000FF16, + 5265: 0x0000FF17, + 5266: 0x0000FF18, + 5267: 0x0000FF19, + 5268: 0x00002160, + 5269: 0x00002161, + 5270: 0x00002162, + 5271: 0x00002163, + 5272: 0x00002164, + 5273: 0x00002165, + 5274: 0x00002166, + 5275: 0x00002167, + 5276: 0x00002168, + 5277: 0x00002169, + 5278: 0x00003021, + 5279: 0x00003022, + 5280: 0x00003023, + 5281: 0x00003024, + 5282: 0x00003025, + 5283: 0x00003026, + 5284: 0x00003027, + 5285: 0x00003028, + 5286: 0x00003029, + 5287: 0x00005341, + 5288: 0x00005344, + 5289: 0x00005345, + 5290: 0x0000FF21, + 5291: 0x0000FF22, + 5292: 0x0000FF23, + 5293: 0x0000FF24, + 5294: 0x0000FF25, + 5295: 0x0000FF26, + 5296: 0x0000FF27, + 5297: 0x0000FF28, + 5298: 0x0000FF29, + 5299: 0x0000FF2A, + 5300: 0x0000FF2B, + 5301: 0x0000FF2C, + 5302: 0x0000FF2D, + 5303: 0x0000FF2E, + 5304: 0x0000FF2F, + 5305: 0x0000FF30, + 5306: 0x0000FF31, + 5307: 0x0000FF32, + 5308: 0x0000FF33, + 5309: 0x0000FF34, + 5310: 0x0000FF35, + 5311: 0x0000FF36, + 5312: 0x0000FF37, + 5313: 0x0000FF38, + 5314: 0x0000FF39, + 5315: 0x0000FF3A, + 5316: 0x0000FF41, + 5317: 0x0000FF42, + 5318: 0x0000FF43, + 5319: 0x0000FF44, + 5320: 0x0000FF45, + 5321: 0x0000FF46, + 5322: 0x0000FF47, + 5323: 0x0000FF48, + 5324: 0x0000FF49, + 5325: 0x0000FF4A, + 5326: 0x0000FF4B, + 5327: 0x0000FF4C, + 5328: 0x0000FF4D, + 5329: 0x0000FF4E, + 5330: 0x0000FF4F, + 5331: 0x0000FF50, + 5332: 0x0000FF51, + 5333: 0x0000FF52, + 5334: 0x0000FF53, + 5335: 0x0000FF54, + 5336: 0x0000FF55, + 5337: 0x0000FF56, + 5338: 0x0000FF57, + 5339: 0x0000FF58, + 5340: 0x0000FF59, + 5341: 0x0000FF5A, + 5342: 0x00000391, + 5343: 0x00000392, + 5344: 0x00000393, + 5345: 0x00000394, + 5346: 0x00000395, + 5347: 0x00000396, + 5348: 0x00000397, + 5349: 0x00000398, + 5350: 0x00000399, + 5351: 0x0000039A, + 5352: 0x0000039B, + 5353: 0x0000039C, + 5354: 0x0000039D, + 5355: 0x0000039E, + 5356: 0x0000039F, + 5357: 0x000003A0, + 5358: 0x000003A1, + 5359: 0x000003A3, + 5360: 0x000003A4, + 5361: 0x000003A5, + 5362: 0x000003A6, + 5363: 0x000003A7, + 5364: 0x000003A8, + 5365: 0x000003A9, + 5366: 0x000003B1, + 5367: 0x000003B2, + 5368: 0x000003B3, + 5369: 0x000003B4, + 5370: 0x000003B5, + 5371: 0x000003B6, + 5372: 0x000003B7, + 5373: 0x000003B8, + 5374: 0x000003B9, + 5375: 0x000003BA, + 5376: 0x000003BB, + 5377: 0x000003BC, + 5378: 0x000003BD, + 5379: 0x000003BE, + 5380: 0x000003BF, + 5381: 0x000003C0, + 5382: 0x000003C1, + 5383: 0x000003C3, + 5384: 0x000003C4, + 5385: 0x000003C5, + 5386: 0x000003C6, + 5387: 0x000003C7, + 5388: 0x000003C8, + 5389: 0x000003C9, + 5390: 0x00003105, + 5391: 0x00003106, + 5392: 0x00003107, + 5393: 0x00003108, + 5394: 0x00003109, + 5395: 0x0000310A, + 5396: 0x0000310B, + 5397: 0x0000310C, + 5398: 0x0000310D, + 5399: 0x0000310E, + 5400: 0x0000310F, + 5401: 0x00003110, + 5402: 0x00003111, + 5403: 0x00003112, + 5404: 0x00003113, + 5405: 0x00003114, + 5406: 0x00003115, + 5407: 0x00003116, + 5408: 0x00003117, + 5409: 0x00003118, + 5410: 0x00003119, + 5411: 0x0000311A, + 5412: 0x0000311B, + 5413: 0x0000311C, + 5414: 0x0000311D, + 5415: 0x0000311E, + 5416: 0x0000311F, + 5417: 0x00003120, + 5418: 0x00003121, + 5419: 0x00003122, + 5420: 0x00003123, + 5421: 0x00003124, + 5422: 0x00003125, + 5423: 0x00003126, + 5424: 0x00003127, + 5425: 0x00003128, + 5426: 0x00003129, + 5427: 0x000002D9, + 5428: 0x000002C9, + 5429: 0x000002CA, + 5430: 0x000002C7, + 5431: 0x000002CB, + 5432: 0x00002400, + 5433: 0x00002401, + 5434: 0x00002402, + 5435: 0x00002403, + 5436: 0x00002404, + 5437: 0x00002405, + 5438: 0x00002406, + 5439: 0x00002407, + 5440: 0x00002408, + 5441: 0x00002409, + 5442: 0x0000240A, + 5443: 0x0000240B, + 5444: 0x0000240C, + 5445: 0x0000240D, + 5446: 0x0000240E, + 5447: 0x0000240F, + 5448: 0x00002410, + 5449: 0x00002411, + 5450: 0x00002412, + 5451: 0x00002413, + 5452: 0x00002414, + 5453: 0x00002415, + 5454: 0x00002416, + 5455: 0x00002417, + 5456: 0x00002418, + 5457: 0x00002419, + 5458: 0x0000241A, + 5459: 0x0000241B, + 5460: 0x0000241C, + 5461: 0x0000241D, + 5462: 0x0000241E, + 5463: 0x0000241F, + 5464: 0x00002421, + 5465: 0x000020AC, + 5495: 0x00004E00, + 5496: 0x00004E59, + 5497: 0x00004E01, + 5498: 0x00004E03, + 5499: 0x00004E43, + 5500: 0x00004E5D, + 5501: 0x00004E86, + 5502: 0x00004E8C, + 5503: 0x00004EBA, + 5504: 0x0000513F, + 5505: 0x00005165, + 5506: 0x0000516B, + 5507: 0x000051E0, + 5508: 0x00005200, + 5509: 0x00005201, + 5510: 0x0000529B, + 5511: 0x00005315, + 5512: 0x00005341, + 5513: 0x0000535C, + 5514: 0x000053C8, + 5515: 0x00004E09, + 5516: 0x00004E0B, + 5517: 0x00004E08, + 5518: 0x00004E0A, + 5519: 0x00004E2B, + 5520: 0x00004E38, + 5521: 0x000051E1, + 5522: 0x00004E45, + 5523: 0x00004E48, + 5524: 0x00004E5F, + 5525: 0x00004E5E, + 5526: 0x00004E8E, + 5527: 0x00004EA1, + 5528: 0x00005140, + 5529: 0x00005203, + 5530: 0x000052FA, + 5531: 0x00005343, + 5532: 0x000053C9, + 5533: 0x000053E3, + 5534: 0x0000571F, + 5535: 0x000058EB, + 5536: 0x00005915, + 5537: 0x00005927, + 5538: 0x00005973, + 5539: 0x00005B50, + 5540: 0x00005B51, + 5541: 0x00005B53, + 5542: 0x00005BF8, + 5543: 0x00005C0F, + 5544: 0x00005C22, + 5545: 0x00005C38, + 5546: 0x00005C71, + 5547: 0x00005DDD, + 5548: 0x00005DE5, + 5549: 0x00005DF1, + 5550: 0x00005DF2, + 5551: 0x00005DF3, + 5552: 0x00005DFE, + 5553: 0x00005E72, + 5554: 0x00005EFE, + 5555: 0x00005F0B, + 5556: 0x00005F13, + 5557: 0x0000624D, + 5558: 0x00004E11, + 5559: 0x00004E10, + 5560: 0x00004E0D, + 5561: 0x00004E2D, + 5562: 0x00004E30, + 5563: 0x00004E39, + 5564: 0x00004E4B, + 5565: 0x00005C39, + 5566: 0x00004E88, + 5567: 0x00004E91, + 5568: 0x00004E95, + 5569: 0x00004E92, + 5570: 0x00004E94, + 5571: 0x00004EA2, + 5572: 0x00004EC1, + 5573: 0x00004EC0, + 5574: 0x00004EC3, + 5575: 0x00004EC6, + 5576: 0x00004EC7, + 5577: 0x00004ECD, + 5578: 0x00004ECA, + 5579: 0x00004ECB, + 5580: 0x00004EC4, + 5581: 0x00005143, + 5582: 0x00005141, + 5583: 0x00005167, + 5584: 0x0000516D, + 5585: 0x0000516E, + 5586: 0x0000516C, + 5587: 0x00005197, + 5588: 0x000051F6, + 5589: 0x00005206, + 5590: 0x00005207, + 5591: 0x00005208, + 5592: 0x000052FB, + 5593: 0x000052FE, + 5594: 0x000052FF, + 5595: 0x00005316, + 5596: 0x00005339, + 5597: 0x00005348, + 5598: 0x00005347, + 5599: 0x00005345, + 5600: 0x0000535E, + 5601: 0x00005384, + 5602: 0x000053CB, + 5603: 0x000053CA, + 5604: 0x000053CD, + 5605: 0x000058EC, + 5606: 0x00005929, + 5607: 0x0000592B, + 5608: 0x0000592A, + 5609: 0x0000592D, + 5610: 0x00005B54, + 5611: 0x00005C11, + 5612: 0x00005C24, + 5613: 0x00005C3A, + 5614: 0x00005C6F, + 5615: 0x00005DF4, + 5616: 0x00005E7B, + 5617: 0x00005EFF, + 5618: 0x00005F14, + 5619: 0x00005F15, + 5620: 0x00005FC3, + 5621: 0x00006208, + 5622: 0x00006236, + 5623: 0x0000624B, + 5624: 0x0000624E, + 5625: 0x0000652F, + 5626: 0x00006587, + 5627: 0x00006597, + 5628: 0x000065A4, + 5629: 0x000065B9, + 5630: 0x000065E5, + 5631: 0x000066F0, + 5632: 0x00006708, + 5633: 0x00006728, + 5634: 0x00006B20, + 5635: 0x00006B62, + 5636: 0x00006B79, + 5637: 0x00006BCB, + 5638: 0x00006BD4, + 5639: 0x00006BDB, + 5640: 0x00006C0F, + 5641: 0x00006C34, + 5642: 0x0000706B, + 5643: 0x0000722A, + 5644: 0x00007236, + 5645: 0x0000723B, + 5646: 0x00007247, + 5647: 0x00007259, + 5648: 0x0000725B, + 5649: 0x000072AC, + 5650: 0x0000738B, + 5651: 0x00004E19, + 5652: 0x00004E16, + 5653: 0x00004E15, + 5654: 0x00004E14, + 5655: 0x00004E18, + 5656: 0x00004E3B, + 5657: 0x00004E4D, + 5658: 0x00004E4F, + 5659: 0x00004E4E, + 5660: 0x00004EE5, + 5661: 0x00004ED8, + 5662: 0x00004ED4, + 5663: 0x00004ED5, + 5664: 0x00004ED6, + 5665: 0x00004ED7, + 5666: 0x00004EE3, + 5667: 0x00004EE4, + 5668: 0x00004ED9, + 5669: 0x00004EDE, + 5670: 0x00005145, + 5671: 0x00005144, + 5672: 0x00005189, + 5673: 0x0000518A, + 5674: 0x000051AC, + 5675: 0x000051F9, + 5676: 0x000051FA, + 5677: 0x000051F8, + 5678: 0x0000520A, + 5679: 0x000052A0, + 5680: 0x0000529F, + 5681: 0x00005305, + 5682: 0x00005306, + 5683: 0x00005317, + 5684: 0x0000531D, + 5685: 0x00004EDF, + 5686: 0x0000534A, + 5687: 0x00005349, + 5688: 0x00005361, + 5689: 0x00005360, + 5690: 0x0000536F, + 5691: 0x0000536E, + 5692: 0x000053BB, + 5693: 0x000053EF, + 5694: 0x000053E4, + 5695: 0x000053F3, + 5696: 0x000053EC, + 5697: 0x000053EE, + 5698: 0x000053E9, + 5699: 0x000053E8, + 5700: 0x000053FC, + 5701: 0x000053F8, + 5702: 0x000053F5, + 5703: 0x000053EB, + 5704: 0x000053E6, + 5705: 0x000053EA, + 5706: 0x000053F2, + 5707: 0x000053F1, + 5708: 0x000053F0, + 5709: 0x000053E5, + 5710: 0x000053ED, + 5711: 0x000053FB, + 5712: 0x000056DB, + 5713: 0x000056DA, + 5714: 0x00005916, + 5715: 0x0000592E, + 5716: 0x00005931, + 5717: 0x00005974, + 5718: 0x00005976, + 5719: 0x00005B55, + 5720: 0x00005B83, + 5721: 0x00005C3C, + 5722: 0x00005DE8, + 5723: 0x00005DE7, + 5724: 0x00005DE6, + 5725: 0x00005E02, + 5726: 0x00005E03, + 5727: 0x00005E73, + 5728: 0x00005E7C, + 5729: 0x00005F01, + 5730: 0x00005F18, + 5731: 0x00005F17, + 5732: 0x00005FC5, + 5733: 0x0000620A, + 5734: 0x00006253, + 5735: 0x00006254, + 5736: 0x00006252, + 5737: 0x00006251, + 5738: 0x000065A5, + 5739: 0x000065E6, + 5740: 0x0000672E, + 5741: 0x0000672C, + 5742: 0x0000672A, + 5743: 0x0000672B, + 5744: 0x0000672D, + 5745: 0x00006B63, + 5746: 0x00006BCD, + 5747: 0x00006C11, + 5748: 0x00006C10, + 5749: 0x00006C38, + 5750: 0x00006C41, + 5751: 0x00006C40, + 5752: 0x00006C3E, + 5753: 0x000072AF, + 5754: 0x00007384, + 5755: 0x00007389, + 5756: 0x000074DC, + 5757: 0x000074E6, + 5758: 0x00007518, + 5759: 0x0000751F, + 5760: 0x00007528, + 5761: 0x00007529, + 5762: 0x00007530, + 5763: 0x00007531, + 5764: 0x00007532, + 5765: 0x00007533, + 5766: 0x0000758B, + 5767: 0x0000767D, + 5768: 0x000076AE, + 5769: 0x000076BF, + 5770: 0x000076EE, + 5771: 0x000077DB, + 5772: 0x000077E2, + 5773: 0x000077F3, + 5774: 0x0000793A, + 5775: 0x000079BE, + 5776: 0x00007A74, + 5777: 0x00007ACB, + 5778: 0x00004E1E, + 5779: 0x00004E1F, + 5780: 0x00004E52, + 5781: 0x00004E53, + 5782: 0x00004E69, + 5783: 0x00004E99, + 5784: 0x00004EA4, + 5785: 0x00004EA6, + 5786: 0x00004EA5, + 5787: 0x00004EFF, + 5788: 0x00004F09, + 5789: 0x00004F19, + 5790: 0x00004F0A, + 5791: 0x00004F15, + 5792: 0x00004F0D, + 5793: 0x00004F10, + 5794: 0x00004F11, + 5795: 0x00004F0F, + 5796: 0x00004EF2, + 5797: 0x00004EF6, + 5798: 0x00004EFB, + 5799: 0x00004EF0, + 5800: 0x00004EF3, + 5801: 0x00004EFD, + 5802: 0x00004F01, + 5803: 0x00004F0B, + 5804: 0x00005149, + 5805: 0x00005147, + 5806: 0x00005146, + 5807: 0x00005148, + 5808: 0x00005168, + 5809: 0x00005171, + 5810: 0x0000518D, + 5811: 0x000051B0, + 5812: 0x00005217, + 5813: 0x00005211, + 5814: 0x00005212, + 5815: 0x0000520E, + 5816: 0x00005216, + 5817: 0x000052A3, + 5818: 0x00005308, + 5819: 0x00005321, + 5820: 0x00005320, + 5821: 0x00005370, + 5822: 0x00005371, + 5823: 0x00005409, + 5824: 0x0000540F, + 5825: 0x0000540C, + 5826: 0x0000540A, + 5827: 0x00005410, + 5828: 0x00005401, + 5829: 0x0000540B, + 5830: 0x00005404, + 5831: 0x00005411, + 5832: 0x0000540D, + 5833: 0x00005408, + 5834: 0x00005403, + 5835: 0x0000540E, + 5836: 0x00005406, + 5837: 0x00005412, + 5838: 0x000056E0, + 5839: 0x000056DE, + 5840: 0x000056DD, + 5841: 0x00005733, + 5842: 0x00005730, + 5843: 0x00005728, + 5844: 0x0000572D, + 5845: 0x0000572C, + 5846: 0x0000572F, + 5847: 0x00005729, + 5848: 0x00005919, + 5849: 0x0000591A, + 5850: 0x00005937, + 5851: 0x00005938, + 5852: 0x00005984, + 5853: 0x00005978, + 5854: 0x00005983, + 5855: 0x0000597D, + 5856: 0x00005979, + 5857: 0x00005982, + 5858: 0x00005981, + 5859: 0x00005B57, + 5860: 0x00005B58, + 5861: 0x00005B87, + 5862: 0x00005B88, + 5863: 0x00005B85, + 5864: 0x00005B89, + 5865: 0x00005BFA, + 5866: 0x00005C16, + 5867: 0x00005C79, + 5868: 0x00005DDE, + 5869: 0x00005E06, + 5870: 0x00005E76, + 5871: 0x00005E74, + 5872: 0x00005F0F, + 5873: 0x00005F1B, + 5874: 0x00005FD9, + 5875: 0x00005FD6, + 5876: 0x0000620E, + 5877: 0x0000620C, + 5878: 0x0000620D, + 5879: 0x00006210, + 5880: 0x00006263, + 5881: 0x0000625B, + 5882: 0x00006258, + 5883: 0x00006536, + 5884: 0x000065E9, + 5885: 0x000065E8, + 5886: 0x000065EC, + 5887: 0x000065ED, + 5888: 0x000066F2, + 5889: 0x000066F3, + 5890: 0x00006709, + 5891: 0x0000673D, + 5892: 0x00006734, + 5893: 0x00006731, + 5894: 0x00006735, + 5895: 0x00006B21, + 5896: 0x00006B64, + 5897: 0x00006B7B, + 5898: 0x00006C16, + 5899: 0x00006C5D, + 5900: 0x00006C57, + 5901: 0x00006C59, + 5902: 0x00006C5F, + 5903: 0x00006C60, + 5904: 0x00006C50, + 5905: 0x00006C55, + 5906: 0x00006C61, + 5907: 0x00006C5B, + 5908: 0x00006C4D, + 5909: 0x00006C4E, + 5910: 0x00007070, + 5911: 0x0000725F, + 5912: 0x0000725D, + 5913: 0x0000767E, + 5914: 0x00007AF9, + 5915: 0x00007C73, + 5916: 0x00007CF8, + 5917: 0x00007F36, + 5918: 0x00007F8A, + 5919: 0x00007FBD, + 5920: 0x00008001, + 5921: 0x00008003, + 5922: 0x0000800C, + 5923: 0x00008012, + 5924: 0x00008033, + 5925: 0x0000807F, + 5926: 0x00008089, + 5927: 0x0000808B, + 5928: 0x0000808C, + 5929: 0x000081E3, + 5930: 0x000081EA, + 5931: 0x000081F3, + 5932: 0x000081FC, + 5933: 0x0000820C, + 5934: 0x0000821B, + 5935: 0x0000821F, + 5936: 0x0000826E, + 5937: 0x00008272, + 5938: 0x0000827E, + 5939: 0x0000866B, + 5940: 0x00008840, + 5941: 0x0000884C, + 5942: 0x00008863, + 5943: 0x0000897F, + 5944: 0x00009621, + 5945: 0x00004E32, + 5946: 0x00004EA8, + 5947: 0x00004F4D, + 5948: 0x00004F4F, + 5949: 0x00004F47, + 5950: 0x00004F57, + 5951: 0x00004F5E, + 5952: 0x00004F34, + 5953: 0x00004F5B, + 5954: 0x00004F55, + 5955: 0x00004F30, + 5956: 0x00004F50, + 5957: 0x00004F51, + 5958: 0x00004F3D, + 5959: 0x00004F3A, + 5960: 0x00004F38, + 5961: 0x00004F43, + 5962: 0x00004F54, + 5963: 0x00004F3C, + 5964: 0x00004F46, + 5965: 0x00004F63, + 5966: 0x00004F5C, + 5967: 0x00004F60, + 5968: 0x00004F2F, + 5969: 0x00004F4E, + 5970: 0x00004F36, + 5971: 0x00004F59, + 5972: 0x00004F5D, + 5973: 0x00004F48, + 5974: 0x00004F5A, + 5975: 0x0000514C, + 5976: 0x0000514B, + 5977: 0x0000514D, + 5978: 0x00005175, + 5979: 0x000051B6, + 5980: 0x000051B7, + 5981: 0x00005225, + 5982: 0x00005224, + 5983: 0x00005229, + 5984: 0x0000522A, + 5985: 0x00005228, + 5986: 0x000052AB, + 5987: 0x000052A9, + 5988: 0x000052AA, + 5989: 0x000052AC, + 5990: 0x00005323, + 5991: 0x00005373, + 5992: 0x00005375, + 5993: 0x0000541D, + 5994: 0x0000542D, + 5995: 0x0000541E, + 5996: 0x0000543E, + 5997: 0x00005426, + 5998: 0x0000544E, + 5999: 0x00005427, + 6000: 0x00005446, + 6001: 0x00005443, + 6002: 0x00005433, + 6003: 0x00005448, + 6004: 0x00005442, + 6005: 0x0000541B, + 6006: 0x00005429, + 6007: 0x0000544A, + 6008: 0x00005439, + 6009: 0x0000543B, + 6010: 0x00005438, + 6011: 0x0000542E, + 6012: 0x00005435, + 6013: 0x00005436, + 6014: 0x00005420, + 6015: 0x0000543C, + 6016: 0x00005440, + 6017: 0x00005431, + 6018: 0x0000542B, + 6019: 0x0000541F, + 6020: 0x0000542C, + 6021: 0x000056EA, + 6022: 0x000056F0, + 6023: 0x000056E4, + 6024: 0x000056EB, + 6025: 0x0000574A, + 6026: 0x00005751, + 6027: 0x00005740, + 6028: 0x0000574D, + 6029: 0x00005747, + 6030: 0x0000574E, + 6031: 0x0000573E, + 6032: 0x00005750, + 6033: 0x0000574F, + 6034: 0x0000573B, + 6035: 0x000058EF, + 6036: 0x0000593E, + 6037: 0x0000599D, + 6038: 0x00005992, + 6039: 0x000059A8, + 6040: 0x0000599E, + 6041: 0x000059A3, + 6042: 0x00005999, + 6043: 0x00005996, + 6044: 0x0000598D, + 6045: 0x000059A4, + 6046: 0x00005993, + 6047: 0x0000598A, + 6048: 0x000059A5, + 6049: 0x00005B5D, + 6050: 0x00005B5C, + 6051: 0x00005B5A, + 6052: 0x00005B5B, + 6053: 0x00005B8C, + 6054: 0x00005B8B, + 6055: 0x00005B8F, + 6056: 0x00005C2C, + 6057: 0x00005C40, + 6058: 0x00005C41, + 6059: 0x00005C3F, + 6060: 0x00005C3E, + 6061: 0x00005C90, + 6062: 0x00005C91, + 6063: 0x00005C94, + 6064: 0x00005C8C, + 6065: 0x00005DEB, + 6066: 0x00005E0C, + 6067: 0x00005E8F, + 6068: 0x00005E87, + 6069: 0x00005E8A, + 6070: 0x00005EF7, + 6071: 0x00005F04, + 6072: 0x00005F1F, + 6073: 0x00005F64, + 6074: 0x00005F62, + 6075: 0x00005F77, + 6076: 0x00005F79, + 6077: 0x00005FD8, + 6078: 0x00005FCC, + 6079: 0x00005FD7, + 6080: 0x00005FCD, + 6081: 0x00005FF1, + 6082: 0x00005FEB, + 6083: 0x00005FF8, + 6084: 0x00005FEA, + 6085: 0x00006212, + 6086: 0x00006211, + 6087: 0x00006284, + 6088: 0x00006297, + 6089: 0x00006296, + 6090: 0x00006280, + 6091: 0x00006276, + 6092: 0x00006289, + 6093: 0x0000626D, + 6094: 0x0000628A, + 6095: 0x0000627C, + 6096: 0x0000627E, + 6097: 0x00006279, + 6098: 0x00006273, + 6099: 0x00006292, + 6100: 0x0000626F, + 6101: 0x00006298, + 6102: 0x0000626E, + 6103: 0x00006295, + 6104: 0x00006293, + 6105: 0x00006291, + 6106: 0x00006286, + 6107: 0x00006539, + 6108: 0x0000653B, + 6109: 0x00006538, + 6110: 0x000065F1, + 6111: 0x000066F4, + 6112: 0x0000675F, + 6113: 0x0000674E, + 6114: 0x0000674F, + 6115: 0x00006750, + 6116: 0x00006751, + 6117: 0x0000675C, + 6118: 0x00006756, + 6119: 0x0000675E, + 6120: 0x00006749, + 6121: 0x00006746, + 6122: 0x00006760, + 6123: 0x00006753, + 6124: 0x00006757, + 6125: 0x00006B65, + 6126: 0x00006BCF, + 6127: 0x00006C42, + 6128: 0x00006C5E, + 6129: 0x00006C99, + 6130: 0x00006C81, + 6131: 0x00006C88, + 6132: 0x00006C89, + 6133: 0x00006C85, + 6134: 0x00006C9B, + 6135: 0x00006C6A, + 6136: 0x00006C7A, + 6137: 0x00006C90, + 6138: 0x00006C70, + 6139: 0x00006C8C, + 6140: 0x00006C68, + 6141: 0x00006C96, + 6142: 0x00006C92, + 6143: 0x00006C7D, + 6144: 0x00006C83, + 6145: 0x00006C72, + 6146: 0x00006C7E, + 6147: 0x00006C74, + 6148: 0x00006C86, + 6149: 0x00006C76, + 6150: 0x00006C8D, + 6151: 0x00006C94, + 6152: 0x00006C98, + 6153: 0x00006C82, + 6154: 0x00007076, + 6155: 0x0000707C, + 6156: 0x0000707D, + 6157: 0x00007078, + 6158: 0x00007262, + 6159: 0x00007261, + 6160: 0x00007260, + 6161: 0x000072C4, + 6162: 0x000072C2, + 6163: 0x00007396, + 6164: 0x0000752C, + 6165: 0x0000752B, + 6166: 0x00007537, + 6167: 0x00007538, + 6168: 0x00007682, + 6169: 0x000076EF, + 6170: 0x000077E3, + 6171: 0x000079C1, + 6172: 0x000079C0, + 6173: 0x000079BF, + 6174: 0x00007A76, + 6175: 0x00007CFB, + 6176: 0x00007F55, + 6177: 0x00008096, + 6178: 0x00008093, + 6179: 0x0000809D, + 6180: 0x00008098, + 6181: 0x0000809B, + 6182: 0x0000809A, + 6183: 0x000080B2, + 6184: 0x0000826F, + 6185: 0x00008292, + 6186: 0x0000828B, + 6187: 0x0000828D, + 6188: 0x0000898B, + 6189: 0x000089D2, + 6190: 0x00008A00, + 6191: 0x00008C37, + 6192: 0x00008C46, + 6193: 0x00008C55, + 6194: 0x00008C9D, + 6195: 0x00008D64, + 6196: 0x00008D70, + 6197: 0x00008DB3, + 6198: 0x00008EAB, + 6199: 0x00008ECA, + 6200: 0x00008F9B, + 6201: 0x00008FB0, + 6202: 0x00008FC2, + 6203: 0x00008FC6, + 6204: 0x00008FC5, + 6205: 0x00008FC4, + 6206: 0x00005DE1, + 6207: 0x00009091, + 6208: 0x000090A2, + 6209: 0x000090AA, + 6210: 0x000090A6, + 6211: 0x000090A3, + 6212: 0x00009149, + 6213: 0x000091C6, + 6214: 0x000091CC, + 6215: 0x00009632, + 6216: 0x0000962E, + 6217: 0x00009631, + 6218: 0x0000962A, + 6219: 0x0000962C, + 6220: 0x00004E26, + 6221: 0x00004E56, + 6222: 0x00004E73, + 6223: 0x00004E8B, + 6224: 0x00004E9B, + 6225: 0x00004E9E, + 6226: 0x00004EAB, + 6227: 0x00004EAC, + 6228: 0x00004F6F, + 6229: 0x00004F9D, + 6230: 0x00004F8D, + 6231: 0x00004F73, + 6232: 0x00004F7F, + 6233: 0x00004F6C, + 6234: 0x00004F9B, + 6235: 0x00004F8B, + 6236: 0x00004F86, + 6237: 0x00004F83, + 6238: 0x00004F70, + 6239: 0x00004F75, + 6240: 0x00004F88, + 6241: 0x00004F69, + 6242: 0x00004F7B, + 6243: 0x00004F96, + 6244: 0x00004F7E, + 6245: 0x00004F8F, + 6246: 0x00004F91, + 6247: 0x00004F7A, + 6248: 0x00005154, + 6249: 0x00005152, + 6250: 0x00005155, + 6251: 0x00005169, + 6252: 0x00005177, + 6253: 0x00005176, + 6254: 0x00005178, + 6255: 0x000051BD, + 6256: 0x000051FD, + 6257: 0x0000523B, + 6258: 0x00005238, + 6259: 0x00005237, + 6260: 0x0000523A, + 6261: 0x00005230, + 6262: 0x0000522E, + 6263: 0x00005236, + 6264: 0x00005241, + 6265: 0x000052BE, + 6266: 0x000052BB, + 6267: 0x00005352, + 6268: 0x00005354, + 6269: 0x00005353, + 6270: 0x00005351, + 6271: 0x00005366, + 6272: 0x00005377, + 6273: 0x00005378, + 6274: 0x00005379, + 6275: 0x000053D6, + 6276: 0x000053D4, + 6277: 0x000053D7, + 6278: 0x00005473, + 6279: 0x00005475, + 6280: 0x00005496, + 6281: 0x00005478, + 6282: 0x00005495, + 6283: 0x00005480, + 6284: 0x0000547B, + 6285: 0x00005477, + 6286: 0x00005484, + 6287: 0x00005492, + 6288: 0x00005486, + 6289: 0x0000547C, + 6290: 0x00005490, + 6291: 0x00005471, + 6292: 0x00005476, + 6293: 0x0000548C, + 6294: 0x0000549A, + 6295: 0x00005462, + 6296: 0x00005468, + 6297: 0x0000548B, + 6298: 0x0000547D, + 6299: 0x0000548E, + 6300: 0x000056FA, + 6301: 0x00005783, + 6302: 0x00005777, + 6303: 0x0000576A, + 6304: 0x00005769, + 6305: 0x00005761, + 6306: 0x00005766, + 6307: 0x00005764, + 6308: 0x0000577C, + 6309: 0x0000591C, + 6310: 0x00005949, + 6311: 0x00005947, + 6312: 0x00005948, + 6313: 0x00005944, + 6314: 0x00005954, + 6315: 0x000059BE, + 6316: 0x000059BB, + 6317: 0x000059D4, + 6318: 0x000059B9, + 6319: 0x000059AE, + 6320: 0x000059D1, + 6321: 0x000059C6, + 6322: 0x000059D0, + 6323: 0x000059CD, + 6324: 0x000059CB, + 6325: 0x000059D3, + 6326: 0x000059CA, + 6327: 0x000059AF, + 6328: 0x000059B3, + 6329: 0x000059D2, + 6330: 0x000059C5, + 6331: 0x00005B5F, + 6332: 0x00005B64, + 6333: 0x00005B63, + 6334: 0x00005B97, + 6335: 0x00005B9A, + 6336: 0x00005B98, + 6337: 0x00005B9C, + 6338: 0x00005B99, + 6339: 0x00005B9B, + 6340: 0x00005C1A, + 6341: 0x00005C48, + 6342: 0x00005C45, + 6343: 0x00005C46, + 6344: 0x00005CB7, + 6345: 0x00005CA1, + 6346: 0x00005CB8, + 6347: 0x00005CA9, + 6348: 0x00005CAB, + 6349: 0x00005CB1, + 6350: 0x00005CB3, + 6351: 0x00005E18, + 6352: 0x00005E1A, + 6353: 0x00005E16, + 6354: 0x00005E15, + 6355: 0x00005E1B, + 6356: 0x00005E11, + 6357: 0x00005E78, + 6358: 0x00005E9A, + 6359: 0x00005E97, + 6360: 0x00005E9C, + 6361: 0x00005E95, + 6362: 0x00005E96, + 6363: 0x00005EF6, + 6364: 0x00005F26, + 6365: 0x00005F27, + 6366: 0x00005F29, + 6367: 0x00005F80, + 6368: 0x00005F81, + 6369: 0x00005F7F, + 6370: 0x00005F7C, + 6371: 0x00005FDD, + 6372: 0x00005FE0, + 6373: 0x00005FFD, + 6374: 0x00005FF5, + 6375: 0x00005FFF, + 6376: 0x0000600F, + 6377: 0x00006014, + 6378: 0x0000602F, + 6379: 0x00006035, + 6380: 0x00006016, + 6381: 0x0000602A, + 6382: 0x00006015, + 6383: 0x00006021, + 6384: 0x00006027, + 6385: 0x00006029, + 6386: 0x0000602B, + 6387: 0x0000601B, + 6388: 0x00006216, + 6389: 0x00006215, + 6390: 0x0000623F, + 6391: 0x0000623E, + 6392: 0x00006240, + 6393: 0x0000627F, + 6394: 0x000062C9, + 6395: 0x000062CC, + 6396: 0x000062C4, + 6397: 0x000062BF, + 6398: 0x000062C2, + 6399: 0x000062B9, + 6400: 0x000062D2, + 6401: 0x000062DB, + 6402: 0x000062AB, + 6403: 0x000062D3, + 6404: 0x000062D4, + 6405: 0x000062CB, + 6406: 0x000062C8, + 6407: 0x000062A8, + 6408: 0x000062BD, + 6409: 0x000062BC, + 6410: 0x000062D0, + 6411: 0x000062D9, + 6412: 0x000062C7, + 6413: 0x000062CD, + 6414: 0x000062B5, + 6415: 0x000062DA, + 6416: 0x000062B1, + 6417: 0x000062D8, + 6418: 0x000062D6, + 6419: 0x000062D7, + 6420: 0x000062C6, + 6421: 0x000062AC, + 6422: 0x000062CE, + 6423: 0x0000653E, + 6424: 0x000065A7, + 6425: 0x000065BC, + 6426: 0x000065FA, + 6427: 0x00006614, + 6428: 0x00006613, + 6429: 0x0000660C, + 6430: 0x00006606, + 6431: 0x00006602, + 6432: 0x0000660E, + 6433: 0x00006600, + 6434: 0x0000660F, + 6435: 0x00006615, + 6436: 0x0000660A, + 6437: 0x00006607, + 6438: 0x0000670D, + 6439: 0x0000670B, + 6440: 0x0000676D, + 6441: 0x0000678B, + 6442: 0x00006795, + 6443: 0x00006771, + 6444: 0x0000679C, + 6445: 0x00006773, + 6446: 0x00006777, + 6447: 0x00006787, + 6448: 0x0000679D, + 6449: 0x00006797, + 6450: 0x0000676F, + 6451: 0x00006770, + 6452: 0x0000677F, + 6453: 0x00006789, + 6454: 0x0000677E, + 6455: 0x00006790, + 6456: 0x00006775, + 6457: 0x0000679A, + 6458: 0x00006793, + 6459: 0x0000677C, + 6460: 0x0000676A, + 6461: 0x00006772, + 6462: 0x00006B23, + 6463: 0x00006B66, + 6464: 0x00006B67, + 6465: 0x00006B7F, + 6466: 0x00006C13, + 6467: 0x00006C1B, + 6468: 0x00006CE3, + 6469: 0x00006CE8, + 6470: 0x00006CF3, + 6471: 0x00006CB1, + 6472: 0x00006CCC, + 6473: 0x00006CE5, + 6474: 0x00006CB3, + 6475: 0x00006CBD, + 6476: 0x00006CBE, + 6477: 0x00006CBC, + 6478: 0x00006CE2, + 6479: 0x00006CAB, + 6480: 0x00006CD5, + 6481: 0x00006CD3, + 6482: 0x00006CB8, + 6483: 0x00006CC4, + 6484: 0x00006CB9, + 6485: 0x00006CC1, + 6486: 0x00006CAE, + 6487: 0x00006CD7, + 6488: 0x00006CC5, + 6489: 0x00006CF1, + 6490: 0x00006CBF, + 6491: 0x00006CBB, + 6492: 0x00006CE1, + 6493: 0x00006CDB, + 6494: 0x00006CCA, + 6495: 0x00006CAC, + 6496: 0x00006CEF, + 6497: 0x00006CDC, + 6498: 0x00006CD6, + 6499: 0x00006CE0, + 6500: 0x00007095, + 6501: 0x0000708E, + 6502: 0x00007092, + 6503: 0x0000708A, + 6504: 0x00007099, + 6505: 0x0000722C, + 6506: 0x0000722D, + 6507: 0x00007238, + 6508: 0x00007248, + 6509: 0x00007267, + 6510: 0x00007269, + 6511: 0x000072C0, + 6512: 0x000072CE, + 6513: 0x000072D9, + 6514: 0x000072D7, + 6515: 0x000072D0, + 6516: 0x000073A9, + 6517: 0x000073A8, + 6518: 0x0000739F, + 6519: 0x000073AB, + 6520: 0x000073A5, + 6521: 0x0000753D, + 6522: 0x0000759D, + 6523: 0x00007599, + 6524: 0x0000759A, + 6525: 0x00007684, + 6526: 0x000076C2, + 6527: 0x000076F2, + 6528: 0x000076F4, + 6529: 0x000077E5, + 6530: 0x000077FD, + 6531: 0x0000793E, + 6532: 0x00007940, + 6533: 0x00007941, + 6534: 0x000079C9, + 6535: 0x000079C8, + 6536: 0x00007A7A, + 6537: 0x00007A79, + 6538: 0x00007AFA, + 6539: 0x00007CFE, + 6540: 0x00007F54, + 6541: 0x00007F8C, + 6542: 0x00007F8B, + 6543: 0x00008005, + 6544: 0x000080BA, + 6545: 0x000080A5, + 6546: 0x000080A2, + 6547: 0x000080B1, + 6548: 0x000080A1, + 6549: 0x000080AB, + 6550: 0x000080A9, + 6551: 0x000080B4, + 6552: 0x000080AA, + 6553: 0x000080AF, + 6554: 0x000081E5, + 6555: 0x000081FE, + 6556: 0x0000820D, + 6557: 0x000082B3, + 6558: 0x0000829D, + 6559: 0x00008299, + 6560: 0x000082AD, + 6561: 0x000082BD, + 6562: 0x0000829F, + 6563: 0x000082B9, + 6564: 0x000082B1, + 6565: 0x000082AC, + 6566: 0x000082A5, + 6567: 0x000082AF, + 6568: 0x000082B8, + 6569: 0x000082A3, + 6570: 0x000082B0, + 6571: 0x000082BE, + 6572: 0x000082B7, + 6573: 0x0000864E, + 6574: 0x00008671, + 6575: 0x0000521D, + 6576: 0x00008868, + 6577: 0x00008ECB, + 6578: 0x00008FCE, + 6579: 0x00008FD4, + 6580: 0x00008FD1, + 6581: 0x000090B5, + 6582: 0x000090B8, + 6583: 0x000090B1, + 6584: 0x000090B6, + 6585: 0x000091C7, + 6586: 0x000091D1, + 6587: 0x00009577, + 6588: 0x00009580, + 6589: 0x0000961C, + 6590: 0x00009640, + 6591: 0x0000963F, + 6592: 0x0000963B, + 6593: 0x00009644, + 6594: 0x00009642, + 6595: 0x000096B9, + 6596: 0x000096E8, + 6597: 0x00009752, + 6598: 0x0000975E, + 6599: 0x00004E9F, + 6600: 0x00004EAD, + 6601: 0x00004EAE, + 6602: 0x00004FE1, + 6603: 0x00004FB5, + 6604: 0x00004FAF, + 6605: 0x00004FBF, + 6606: 0x00004FE0, + 6607: 0x00004FD1, + 6608: 0x00004FCF, + 6609: 0x00004FDD, + 6610: 0x00004FC3, + 6611: 0x00004FB6, + 6612: 0x00004FD8, + 6613: 0x00004FDF, + 6614: 0x00004FCA, + 6615: 0x00004FD7, + 6616: 0x00004FAE, + 6617: 0x00004FD0, + 6618: 0x00004FC4, + 6619: 0x00004FC2, + 6620: 0x00004FDA, + 6621: 0x00004FCE, + 6622: 0x00004FDE, + 6623: 0x00004FB7, + 6624: 0x00005157, + 6625: 0x00005192, + 6626: 0x00005191, + 6627: 0x000051A0, + 6628: 0x0000524E, + 6629: 0x00005243, + 6630: 0x0000524A, + 6631: 0x0000524D, + 6632: 0x0000524C, + 6633: 0x0000524B, + 6634: 0x00005247, + 6635: 0x000052C7, + 6636: 0x000052C9, + 6637: 0x000052C3, + 6638: 0x000052C1, + 6639: 0x0000530D, + 6640: 0x00005357, + 6641: 0x0000537B, + 6642: 0x0000539A, + 6643: 0x000053DB, + 6644: 0x000054AC, + 6645: 0x000054C0, + 6646: 0x000054A8, + 6647: 0x000054CE, + 6648: 0x000054C9, + 6649: 0x000054B8, + 6650: 0x000054A6, + 6651: 0x000054B3, + 6652: 0x000054C7, + 6653: 0x000054C2, + 6654: 0x000054BD, + 6655: 0x000054AA, + 6656: 0x000054C1, + 6657: 0x000054C4, + 6658: 0x000054C8, + 6659: 0x000054AF, + 6660: 0x000054AB, + 6661: 0x000054B1, + 6662: 0x000054BB, + 6663: 0x000054A9, + 6664: 0x000054A7, + 6665: 0x000054BF, + 6666: 0x000056FF, + 6667: 0x00005782, + 6668: 0x0000578B, + 6669: 0x000057A0, + 6670: 0x000057A3, + 6671: 0x000057A2, + 6672: 0x000057CE, + 6673: 0x000057AE, + 6674: 0x00005793, + 6675: 0x00005955, + 6676: 0x00005951, + 6677: 0x0000594F, + 6678: 0x0000594E, + 6679: 0x00005950, + 6680: 0x000059DC, + 6681: 0x000059D8, + 6682: 0x000059FF, + 6683: 0x000059E3, + 6684: 0x000059E8, + 6685: 0x00005A03, + 6686: 0x000059E5, + 6687: 0x000059EA, + 6688: 0x000059DA, + 6689: 0x000059E6, + 6690: 0x00005A01, + 6691: 0x000059FB, + 6692: 0x00005B69, + 6693: 0x00005BA3, + 6694: 0x00005BA6, + 6695: 0x00005BA4, + 6696: 0x00005BA2, + 6697: 0x00005BA5, + 6698: 0x00005C01, + 6699: 0x00005C4E, + 6700: 0x00005C4F, + 6701: 0x00005C4D, + 6702: 0x00005C4B, + 6703: 0x00005CD9, + 6704: 0x00005CD2, + 6705: 0x00005DF7, + 6706: 0x00005E1D, + 6707: 0x00005E25, + 6708: 0x00005E1F, + 6709: 0x00005E7D, + 6710: 0x00005EA0, + 6711: 0x00005EA6, + 6712: 0x00005EFA, + 6713: 0x00005F08, + 6714: 0x00005F2D, + 6715: 0x00005F65, + 6716: 0x00005F88, + 6717: 0x00005F85, + 6718: 0x00005F8A, + 6719: 0x00005F8B, + 6720: 0x00005F87, + 6721: 0x00005F8C, + 6722: 0x00005F89, + 6723: 0x00006012, + 6724: 0x0000601D, + 6725: 0x00006020, + 6726: 0x00006025, + 6727: 0x0000600E, + 6728: 0x00006028, + 6729: 0x0000604D, + 6730: 0x00006070, + 6731: 0x00006068, + 6732: 0x00006062, + 6733: 0x00006046, + 6734: 0x00006043, + 6735: 0x0000606C, + 6736: 0x0000606B, + 6737: 0x0000606A, + 6738: 0x00006064, + 6739: 0x00006241, + 6740: 0x000062DC, + 6741: 0x00006316, + 6742: 0x00006309, + 6743: 0x000062FC, + 6744: 0x000062ED, + 6745: 0x00006301, + 6746: 0x000062EE, + 6747: 0x000062FD, + 6748: 0x00006307, + 6749: 0x000062F1, + 6750: 0x000062F7, + 6751: 0x000062EF, + 6752: 0x000062EC, + 6753: 0x000062FE, + 6754: 0x000062F4, + 6755: 0x00006311, + 6756: 0x00006302, + 6757: 0x0000653F, + 6758: 0x00006545, + 6759: 0x000065AB, + 6760: 0x000065BD, + 6761: 0x000065E2, + 6762: 0x00006625, + 6763: 0x0000662D, + 6764: 0x00006620, + 6765: 0x00006627, + 6766: 0x0000662F, + 6767: 0x0000661F, + 6768: 0x00006628, + 6769: 0x00006631, + 6770: 0x00006624, + 6771: 0x000066F7, + 6772: 0x000067FF, + 6773: 0x000067D3, + 6774: 0x000067F1, + 6775: 0x000067D4, + 6776: 0x000067D0, + 6777: 0x000067EC, + 6778: 0x000067B6, + 6779: 0x000067AF, + 6780: 0x000067F5, + 6781: 0x000067E9, + 6782: 0x000067EF, + 6783: 0x000067C4, + 6784: 0x000067D1, + 6785: 0x000067B4, + 6786: 0x000067DA, + 6787: 0x000067E5, + 6788: 0x000067B8, + 6789: 0x000067CF, + 6790: 0x000067DE, + 6791: 0x000067F3, + 6792: 0x000067B0, + 6793: 0x000067D9, + 6794: 0x000067E2, + 6795: 0x000067DD, + 6796: 0x000067D2, + 6797: 0x00006B6A, + 6798: 0x00006B83, + 6799: 0x00006B86, + 6800: 0x00006BB5, + 6801: 0x00006BD2, + 6802: 0x00006BD7, + 6803: 0x00006C1F, + 6804: 0x00006CC9, + 6805: 0x00006D0B, + 6806: 0x00006D32, + 6807: 0x00006D2A, + 6808: 0x00006D41, + 6809: 0x00006D25, + 6810: 0x00006D0C, + 6811: 0x00006D31, + 6812: 0x00006D1E, + 6813: 0x00006D17, + 6814: 0x00006D3B, + 6815: 0x00006D3D, + 6816: 0x00006D3E, + 6817: 0x00006D36, + 6818: 0x00006D1B, + 6819: 0x00006CF5, + 6820: 0x00006D39, + 6821: 0x00006D27, + 6822: 0x00006D38, + 6823: 0x00006D29, + 6824: 0x00006D2E, + 6825: 0x00006D35, + 6826: 0x00006D0E, + 6827: 0x00006D2B, + 6828: 0x000070AB, + 6829: 0x000070BA, + 6830: 0x000070B3, + 6831: 0x000070AC, + 6832: 0x000070AF, + 6833: 0x000070AD, + 6834: 0x000070B8, + 6835: 0x000070AE, + 6836: 0x000070A4, + 6837: 0x00007230, + 6838: 0x00007272, + 6839: 0x0000726F, + 6840: 0x00007274, + 6841: 0x000072E9, + 6842: 0x000072E0, + 6843: 0x000072E1, + 6844: 0x000073B7, + 6845: 0x000073CA, + 6846: 0x000073BB, + 6847: 0x000073B2, + 6848: 0x000073CD, + 6849: 0x000073C0, + 6850: 0x000073B3, + 6851: 0x0000751A, + 6852: 0x0000752D, + 6853: 0x0000754F, + 6854: 0x0000754C, + 6855: 0x0000754E, + 6856: 0x0000754B, + 6857: 0x000075AB, + 6858: 0x000075A4, + 6859: 0x000075A5, + 6860: 0x000075A2, + 6861: 0x000075A3, + 6862: 0x00007678, + 6863: 0x00007686, + 6864: 0x00007687, + 6865: 0x00007688, + 6866: 0x000076C8, + 6867: 0x000076C6, + 6868: 0x000076C3, + 6869: 0x000076C5, + 6870: 0x00007701, + 6871: 0x000076F9, + 6872: 0x000076F8, + 6873: 0x00007709, + 6874: 0x0000770B, + 6875: 0x000076FE, + 6876: 0x000076FC, + 6877: 0x00007707, + 6878: 0x000077DC, + 6879: 0x00007802, + 6880: 0x00007814, + 6881: 0x0000780C, + 6882: 0x0000780D, + 6883: 0x00007946, + 6884: 0x00007949, + 6885: 0x00007948, + 6886: 0x00007947, + 6887: 0x000079B9, + 6888: 0x000079BA, + 6889: 0x000079D1, + 6890: 0x000079D2, + 6891: 0x000079CB, + 6892: 0x00007A7F, + 6893: 0x00007A81, + 6894: 0x00007AFF, + 6895: 0x00007AFD, + 6896: 0x00007C7D, + 6897: 0x00007D02, + 6898: 0x00007D05, + 6899: 0x00007D00, + 6900: 0x00007D09, + 6901: 0x00007D07, + 6902: 0x00007D04, + 6903: 0x00007D06, + 6904: 0x00007F38, + 6905: 0x00007F8E, + 6906: 0x00007FBF, + 6907: 0x00008004, + 6908: 0x00008010, + 6909: 0x0000800D, + 6910: 0x00008011, + 6911: 0x00008036, + 6912: 0x000080D6, + 6913: 0x000080E5, + 6914: 0x000080DA, + 6915: 0x000080C3, + 6916: 0x000080C4, + 6917: 0x000080CC, + 6918: 0x000080E1, + 6919: 0x000080DB, + 6920: 0x000080CE, + 6921: 0x000080DE, + 6922: 0x000080E4, + 6923: 0x000080DD, + 6924: 0x000081F4, + 6925: 0x00008222, + 6926: 0x000082E7, + 6927: 0x00008303, + 6928: 0x00008305, + 6929: 0x000082E3, + 6930: 0x000082DB, + 6931: 0x000082E6, + 6932: 0x00008304, + 6933: 0x000082E5, + 6934: 0x00008302, + 6935: 0x00008309, + 6936: 0x000082D2, + 6937: 0x000082D7, + 6938: 0x000082F1, + 6939: 0x00008301, + 6940: 0x000082DC, + 6941: 0x000082D4, + 6942: 0x000082D1, + 6943: 0x000082DE, + 6944: 0x000082D3, + 6945: 0x000082DF, + 6946: 0x000082EF, + 6947: 0x00008306, + 6948: 0x00008650, + 6949: 0x00008679, + 6950: 0x0000867B, + 6951: 0x0000867A, + 6952: 0x0000884D, + 6953: 0x0000886B, + 6954: 0x00008981, + 6955: 0x000089D4, + 6956: 0x00008A08, + 6957: 0x00008A02, + 6958: 0x00008A03, + 6959: 0x00008C9E, + 6960: 0x00008CA0, + 6961: 0x00008D74, + 6962: 0x00008D73, + 6963: 0x00008DB4, + 6964: 0x00008ECD, + 6965: 0x00008ECC, + 6966: 0x00008FF0, + 6967: 0x00008FE6, + 6968: 0x00008FE2, + 6969: 0x00008FEA, + 6970: 0x00008FE5, + 6971: 0x00008FED, + 6972: 0x00008FEB, + 6973: 0x00008FE4, + 6974: 0x00008FE8, + 6975: 0x000090CA, + 6976: 0x000090CE, + 6977: 0x000090C1, + 6978: 0x000090C3, + 6979: 0x0000914B, + 6980: 0x0000914A, + 6981: 0x000091CD, + 6982: 0x00009582, + 6983: 0x00009650, + 6984: 0x0000964B, + 6985: 0x0000964C, + 6986: 0x0000964D, + 6987: 0x00009762, + 6988: 0x00009769, + 6989: 0x000097CB, + 6990: 0x000097ED, + 6991: 0x000097F3, + 6992: 0x00009801, + 6993: 0x000098A8, + 6994: 0x000098DB, + 6995: 0x000098DF, + 6996: 0x00009996, + 6997: 0x00009999, + 6998: 0x00004E58, + 6999: 0x00004EB3, + 7000: 0x0000500C, + 7001: 0x0000500D, + 7002: 0x00005023, + 7003: 0x00004FEF, + 7004: 0x00005026, + 7005: 0x00005025, + 7006: 0x00004FF8, + 7007: 0x00005029, + 7008: 0x00005016, + 7009: 0x00005006, + 7010: 0x0000503C, + 7011: 0x0000501F, + 7012: 0x0000501A, + 7013: 0x00005012, + 7014: 0x00005011, + 7015: 0x00004FFA, + 7016: 0x00005000, + 7017: 0x00005014, + 7018: 0x00005028, + 7019: 0x00004FF1, + 7020: 0x00005021, + 7021: 0x0000500B, + 7022: 0x00005019, + 7023: 0x00005018, + 7024: 0x00004FF3, + 7025: 0x00004FEE, + 7026: 0x0000502D, + 7027: 0x0000502A, + 7028: 0x00004FFE, + 7029: 0x0000502B, + 7030: 0x00005009, + 7031: 0x0000517C, + 7032: 0x000051A4, + 7033: 0x000051A5, + 7034: 0x000051A2, + 7035: 0x000051CD, + 7036: 0x000051CC, + 7037: 0x000051C6, + 7038: 0x000051CB, + 7039: 0x00005256, + 7040: 0x0000525C, + 7041: 0x00005254, + 7042: 0x0000525B, + 7043: 0x0000525D, + 7044: 0x0000532A, + 7045: 0x0000537F, + 7046: 0x0000539F, + 7047: 0x0000539D, + 7048: 0x000053DF, + 7049: 0x000054E8, + 7050: 0x00005510, + 7051: 0x00005501, + 7052: 0x00005537, + 7053: 0x000054FC, + 7054: 0x000054E5, + 7055: 0x000054F2, + 7056: 0x00005506, + 7057: 0x000054FA, + 7058: 0x00005514, + 7059: 0x000054E9, + 7060: 0x000054ED, + 7061: 0x000054E1, + 7062: 0x00005509, + 7063: 0x000054EE, + 7064: 0x000054EA, + 7065: 0x000054E6, + 7066: 0x00005527, + 7067: 0x00005507, + 7068: 0x000054FD, + 7069: 0x0000550F, + 7070: 0x00005703, + 7071: 0x00005704, + 7072: 0x000057C2, + 7073: 0x000057D4, + 7074: 0x000057CB, + 7075: 0x000057C3, + 7076: 0x00005809, + 7077: 0x0000590F, + 7078: 0x00005957, + 7079: 0x00005958, + 7080: 0x0000595A, + 7081: 0x00005A11, + 7082: 0x00005A18, + 7083: 0x00005A1C, + 7084: 0x00005A1F, + 7085: 0x00005A1B, + 7086: 0x00005A13, + 7087: 0x000059EC, + 7088: 0x00005A20, + 7089: 0x00005A23, + 7090: 0x00005A29, + 7091: 0x00005A25, + 7092: 0x00005A0C, + 7093: 0x00005A09, + 7094: 0x00005B6B, + 7095: 0x00005C58, + 7096: 0x00005BB0, + 7097: 0x00005BB3, + 7098: 0x00005BB6, + 7099: 0x00005BB4, + 7100: 0x00005BAE, + 7101: 0x00005BB5, + 7102: 0x00005BB9, + 7103: 0x00005BB8, + 7104: 0x00005C04, + 7105: 0x00005C51, + 7106: 0x00005C55, + 7107: 0x00005C50, + 7108: 0x00005CED, + 7109: 0x00005CFD, + 7110: 0x00005CFB, + 7111: 0x00005CEA, + 7112: 0x00005CE8, + 7113: 0x00005CF0, + 7114: 0x00005CF6, + 7115: 0x00005D01, + 7116: 0x00005CF4, + 7117: 0x00005DEE, + 7118: 0x00005E2D, + 7119: 0x00005E2B, + 7120: 0x00005EAB, + 7121: 0x00005EAD, + 7122: 0x00005EA7, + 7123: 0x00005F31, + 7124: 0x00005F92, + 7125: 0x00005F91, + 7126: 0x00005F90, + 7127: 0x00006059, + 7128: 0x00006063, + 7129: 0x00006065, + 7130: 0x00006050, + 7131: 0x00006055, + 7132: 0x0000606D, + 7133: 0x00006069, + 7134: 0x0000606F, + 7135: 0x00006084, + 7136: 0x0000609F, + 7137: 0x0000609A, + 7138: 0x0000608D, + 7139: 0x00006094, + 7140: 0x0000608C, + 7141: 0x00006085, + 7142: 0x00006096, + 7143: 0x00006247, + 7144: 0x000062F3, + 7145: 0x00006308, + 7146: 0x000062FF, + 7147: 0x0000634E, + 7148: 0x0000633E, + 7149: 0x0000632F, + 7150: 0x00006355, + 7151: 0x00006342, + 7152: 0x00006346, + 7153: 0x0000634F, + 7154: 0x00006349, + 7155: 0x0000633A, + 7156: 0x00006350, + 7157: 0x0000633D, + 7158: 0x0000632A, + 7159: 0x0000632B, + 7160: 0x00006328, + 7161: 0x0000634D, + 7162: 0x0000634C, + 7163: 0x00006548, + 7164: 0x00006549, + 7165: 0x00006599, + 7166: 0x000065C1, + 7167: 0x000065C5, + 7168: 0x00006642, + 7169: 0x00006649, + 7170: 0x0000664F, + 7171: 0x00006643, + 7172: 0x00006652, + 7173: 0x0000664C, + 7174: 0x00006645, + 7175: 0x00006641, + 7176: 0x000066F8, + 7177: 0x00006714, + 7178: 0x00006715, + 7179: 0x00006717, + 7180: 0x00006821, + 7181: 0x00006838, + 7182: 0x00006848, + 7183: 0x00006846, + 7184: 0x00006853, + 7185: 0x00006839, + 7186: 0x00006842, + 7187: 0x00006854, + 7188: 0x00006829, + 7189: 0x000068B3, + 7190: 0x00006817, + 7191: 0x0000684C, + 7192: 0x00006851, + 7193: 0x0000683D, + 7194: 0x000067F4, + 7195: 0x00006850, + 7196: 0x00006840, + 7197: 0x0000683C, + 7198: 0x00006843, + 7199: 0x0000682A, + 7200: 0x00006845, + 7201: 0x00006813, + 7202: 0x00006818, + 7203: 0x00006841, + 7204: 0x00006B8A, + 7205: 0x00006B89, + 7206: 0x00006BB7, + 7207: 0x00006C23, + 7208: 0x00006C27, + 7209: 0x00006C28, + 7210: 0x00006C26, + 7211: 0x00006C24, + 7212: 0x00006CF0, + 7213: 0x00006D6A, + 7214: 0x00006D95, + 7215: 0x00006D88, + 7216: 0x00006D87, + 7217: 0x00006D66, + 7218: 0x00006D78, + 7219: 0x00006D77, + 7220: 0x00006D59, + 7221: 0x00006D93, + 7222: 0x00006D6C, + 7223: 0x00006D89, + 7224: 0x00006D6E, + 7225: 0x00006D5A, + 7226: 0x00006D74, + 7227: 0x00006D69, + 7228: 0x00006D8C, + 7229: 0x00006D8A, + 7230: 0x00006D79, + 7231: 0x00006D85, + 7232: 0x00006D65, + 7233: 0x00006D94, + 7234: 0x000070CA, + 7235: 0x000070D8, + 7236: 0x000070E4, + 7237: 0x000070D9, + 7238: 0x000070C8, + 7239: 0x000070CF, + 7240: 0x00007239, + 7241: 0x00007279, + 7242: 0x000072FC, + 7243: 0x000072F9, + 7244: 0x000072FD, + 7245: 0x000072F8, + 7246: 0x000072F7, + 7247: 0x00007386, + 7248: 0x000073ED, + 7249: 0x00007409, + 7250: 0x000073EE, + 7251: 0x000073E0, + 7252: 0x000073EA, + 7253: 0x000073DE, + 7254: 0x00007554, + 7255: 0x0000755D, + 7256: 0x0000755C, + 7257: 0x0000755A, + 7258: 0x00007559, + 7259: 0x000075BE, + 7260: 0x000075C5, + 7261: 0x000075C7, + 7262: 0x000075B2, + 7263: 0x000075B3, + 7264: 0x000075BD, + 7265: 0x000075BC, + 7266: 0x000075B9, + 7267: 0x000075C2, + 7268: 0x000075B8, + 7269: 0x0000768B, + 7270: 0x000076B0, + 7271: 0x000076CA, + 7272: 0x000076CD, + 7273: 0x000076CE, + 7274: 0x00007729, + 7275: 0x0000771F, + 7276: 0x00007720, + 7277: 0x00007728, + 7278: 0x000077E9, + 7279: 0x00007830, + 7280: 0x00007827, + 7281: 0x00007838, + 7282: 0x0000781D, + 7283: 0x00007834, + 7284: 0x00007837, + 7285: 0x00007825, + 7286: 0x0000782D, + 7287: 0x00007820, + 7288: 0x0000781F, + 7289: 0x00007832, + 7290: 0x00007955, + 7291: 0x00007950, + 7292: 0x00007960, + 7293: 0x0000795F, + 7294: 0x00007956, + 7295: 0x0000795E, + 7296: 0x0000795D, + 7297: 0x00007957, + 7298: 0x0000795A, + 7299: 0x000079E4, + 7300: 0x000079E3, + 7301: 0x000079E7, + 7302: 0x000079DF, + 7303: 0x000079E6, + 7304: 0x000079E9, + 7305: 0x000079D8, + 7306: 0x00007A84, + 7307: 0x00007A88, + 7308: 0x00007AD9, + 7309: 0x00007B06, + 7310: 0x00007B11, + 7311: 0x00007C89, + 7312: 0x00007D21, + 7313: 0x00007D17, + 7314: 0x00007D0B, + 7315: 0x00007D0A, + 7316: 0x00007D20, + 7317: 0x00007D22, + 7318: 0x00007D14, + 7319: 0x00007D10, + 7320: 0x00007D15, + 7321: 0x00007D1A, + 7322: 0x00007D1C, + 7323: 0x00007D0D, + 7324: 0x00007D19, + 7325: 0x00007D1B, + 7326: 0x00007F3A, + 7327: 0x00007F5F, + 7328: 0x00007F94, + 7329: 0x00007FC5, + 7330: 0x00007FC1, + 7331: 0x00008006, + 7332: 0x00008018, + 7333: 0x00008015, + 7334: 0x00008019, + 7335: 0x00008017, + 7336: 0x0000803D, + 7337: 0x0000803F, + 7338: 0x000080F1, + 7339: 0x00008102, + 7340: 0x000080F0, + 7341: 0x00008105, + 7342: 0x000080ED, + 7343: 0x000080F4, + 7344: 0x00008106, + 7345: 0x000080F8, + 7346: 0x000080F3, + 7347: 0x00008108, + 7348: 0x000080FD, + 7349: 0x0000810A, + 7350: 0x000080FC, + 7351: 0x000080EF, + 7352: 0x000081ED, + 7353: 0x000081EC, + 7354: 0x00008200, + 7355: 0x00008210, + 7356: 0x0000822A, + 7357: 0x0000822B, + 7358: 0x00008228, + 7359: 0x0000822C, + 7360: 0x000082BB, + 7361: 0x0000832B, + 7362: 0x00008352, + 7363: 0x00008354, + 7364: 0x0000834A, + 7365: 0x00008338, + 7366: 0x00008350, + 7367: 0x00008349, + 7368: 0x00008335, + 7369: 0x00008334, + 7370: 0x0000834F, + 7371: 0x00008332, + 7372: 0x00008339, + 7373: 0x00008336, + 7374: 0x00008317, + 7375: 0x00008340, + 7376: 0x00008331, + 7377: 0x00008328, + 7378: 0x00008343, + 7379: 0x00008654, + 7380: 0x0000868A, + 7381: 0x000086AA, + 7382: 0x00008693, + 7383: 0x000086A4, + 7384: 0x000086A9, + 7385: 0x0000868C, + 7386: 0x000086A3, + 7387: 0x0000869C, + 7388: 0x00008870, + 7389: 0x00008877, + 7390: 0x00008881, + 7391: 0x00008882, + 7392: 0x0000887D, + 7393: 0x00008879, + 7394: 0x00008A18, + 7395: 0x00008A10, + 7396: 0x00008A0E, + 7397: 0x00008A0C, + 7398: 0x00008A15, + 7399: 0x00008A0A, + 7400: 0x00008A17, + 7401: 0x00008A13, + 7402: 0x00008A16, + 7403: 0x00008A0F, + 7404: 0x00008A11, + 7405: 0x00008C48, + 7406: 0x00008C7A, + 7407: 0x00008C79, + 7408: 0x00008CA1, + 7409: 0x00008CA2, + 7410: 0x00008D77, + 7411: 0x00008EAC, + 7412: 0x00008ED2, + 7413: 0x00008ED4, + 7414: 0x00008ECF, + 7415: 0x00008FB1, + 7416: 0x00009001, + 7417: 0x00009006, + 7418: 0x00008FF7, + 7419: 0x00009000, + 7420: 0x00008FFA, + 7421: 0x00008FF4, + 7422: 0x00009003, + 7423: 0x00008FFD, + 7424: 0x00009005, + 7425: 0x00008FF8, + 7426: 0x00009095, + 7427: 0x000090E1, + 7428: 0x000090DD, + 7429: 0x000090E2, + 7430: 0x00009152, + 7431: 0x0000914D, + 7432: 0x0000914C, + 7433: 0x000091D8, + 7434: 0x000091DD, + 7435: 0x000091D7, + 7436: 0x000091DC, + 7437: 0x000091D9, + 7438: 0x00009583, + 7439: 0x00009662, + 7440: 0x00009663, + 7441: 0x00009661, + 7442: 0x0000965B, + 7443: 0x0000965D, + 7444: 0x00009664, + 7445: 0x00009658, + 7446: 0x0000965E, + 7447: 0x000096BB, + 7448: 0x000098E2, + 7449: 0x000099AC, + 7450: 0x00009AA8, + 7451: 0x00009AD8, + 7452: 0x00009B25, + 7453: 0x00009B32, + 7454: 0x00009B3C, + 7455: 0x00004E7E, + 7456: 0x0000507A, + 7457: 0x0000507D, + 7458: 0x0000505C, + 7459: 0x00005047, + 7460: 0x00005043, + 7461: 0x0000504C, + 7462: 0x0000505A, + 7463: 0x00005049, + 7464: 0x00005065, + 7465: 0x00005076, + 7466: 0x0000504E, + 7467: 0x00005055, + 7468: 0x00005075, + 7469: 0x00005074, + 7470: 0x00005077, + 7471: 0x0000504F, + 7472: 0x0000500F, + 7473: 0x0000506F, + 7474: 0x0000506D, + 7475: 0x0000515C, + 7476: 0x00005195, + 7477: 0x000051F0, + 7478: 0x0000526A, + 7479: 0x0000526F, + 7480: 0x000052D2, + 7481: 0x000052D9, + 7482: 0x000052D8, + 7483: 0x000052D5, + 7484: 0x00005310, + 7485: 0x0000530F, + 7486: 0x00005319, + 7487: 0x0000533F, + 7488: 0x00005340, + 7489: 0x0000533E, + 7490: 0x000053C3, + 7491: 0x000066FC, + 7492: 0x00005546, + 7493: 0x0000556A, + 7494: 0x00005566, + 7495: 0x00005544, + 7496: 0x0000555E, + 7497: 0x00005561, + 7498: 0x00005543, + 7499: 0x0000554A, + 7500: 0x00005531, + 7501: 0x00005556, + 7502: 0x0000554F, + 7503: 0x00005555, + 7504: 0x0000552F, + 7505: 0x00005564, + 7506: 0x00005538, + 7507: 0x0000552E, + 7508: 0x0000555C, + 7509: 0x0000552C, + 7510: 0x00005563, + 7511: 0x00005533, + 7512: 0x00005541, + 7513: 0x00005557, + 7514: 0x00005708, + 7515: 0x0000570B, + 7516: 0x00005709, + 7517: 0x000057DF, + 7518: 0x00005805, + 7519: 0x0000580A, + 7520: 0x00005806, + 7521: 0x000057E0, + 7522: 0x000057E4, + 7523: 0x000057FA, + 7524: 0x00005802, + 7525: 0x00005835, + 7526: 0x000057F7, + 7527: 0x000057F9, + 7528: 0x00005920, + 7529: 0x00005962, + 7530: 0x00005A36, + 7531: 0x00005A41, + 7532: 0x00005A49, + 7533: 0x00005A66, + 7534: 0x00005A6A, + 7535: 0x00005A40, + 7536: 0x00005A3C, + 7537: 0x00005A62, + 7538: 0x00005A5A, + 7539: 0x00005A46, + 7540: 0x00005A4A, + 7541: 0x00005B70, + 7542: 0x00005BC7, + 7543: 0x00005BC5, + 7544: 0x00005BC4, + 7545: 0x00005BC2, + 7546: 0x00005BBF, + 7547: 0x00005BC6, + 7548: 0x00005C09, + 7549: 0x00005C08, + 7550: 0x00005C07, + 7551: 0x00005C60, + 7552: 0x00005C5C, + 7553: 0x00005C5D, + 7554: 0x00005D07, + 7555: 0x00005D06, + 7556: 0x00005D0E, + 7557: 0x00005D1B, + 7558: 0x00005D16, + 7559: 0x00005D22, + 7560: 0x00005D11, + 7561: 0x00005D29, + 7562: 0x00005D14, + 7563: 0x00005D19, + 7564: 0x00005D24, + 7565: 0x00005D27, + 7566: 0x00005D17, + 7567: 0x00005DE2, + 7568: 0x00005E38, + 7569: 0x00005E36, + 7570: 0x00005E33, + 7571: 0x00005E37, + 7572: 0x00005EB7, + 7573: 0x00005EB8, + 7574: 0x00005EB6, + 7575: 0x00005EB5, + 7576: 0x00005EBE, + 7577: 0x00005F35, + 7578: 0x00005F37, + 7579: 0x00005F57, + 7580: 0x00005F6C, + 7581: 0x00005F69, + 7582: 0x00005F6B, + 7583: 0x00005F97, + 7584: 0x00005F99, + 7585: 0x00005F9E, + 7586: 0x00005F98, + 7587: 0x00005FA1, + 7588: 0x00005FA0, + 7589: 0x00005F9C, + 7590: 0x0000607F, + 7591: 0x000060A3, + 7592: 0x00006089, + 7593: 0x000060A0, + 7594: 0x000060A8, + 7595: 0x000060CB, + 7596: 0x000060B4, + 7597: 0x000060E6, + 7598: 0x000060BD, + 7599: 0x000060C5, + 7600: 0x000060BB, + 7601: 0x000060B5, + 7602: 0x000060DC, + 7603: 0x000060BC, + 7604: 0x000060D8, + 7605: 0x000060D5, + 7606: 0x000060C6, + 7607: 0x000060DF, + 7608: 0x000060B8, + 7609: 0x000060DA, + 7610: 0x000060C7, + 7611: 0x0000621A, + 7612: 0x0000621B, + 7613: 0x00006248, + 7614: 0x000063A0, + 7615: 0x000063A7, + 7616: 0x00006372, + 7617: 0x00006396, + 7618: 0x000063A2, + 7619: 0x000063A5, + 7620: 0x00006377, + 7621: 0x00006367, + 7622: 0x00006398, + 7623: 0x000063AA, + 7624: 0x00006371, + 7625: 0x000063A9, + 7626: 0x00006389, + 7627: 0x00006383, + 7628: 0x0000639B, + 7629: 0x0000636B, + 7630: 0x000063A8, + 7631: 0x00006384, + 7632: 0x00006388, + 7633: 0x00006399, + 7634: 0x000063A1, + 7635: 0x000063AC, + 7636: 0x00006392, + 7637: 0x0000638F, + 7638: 0x00006380, + 7639: 0x0000637B, + 7640: 0x00006369, + 7641: 0x00006368, + 7642: 0x0000637A, + 7643: 0x0000655D, + 7644: 0x00006556, + 7645: 0x00006551, + 7646: 0x00006559, + 7647: 0x00006557, + 7648: 0x0000555F, + 7649: 0x0000654F, + 7650: 0x00006558, + 7651: 0x00006555, + 7652: 0x00006554, + 7653: 0x0000659C, + 7654: 0x0000659B, + 7655: 0x000065AC, + 7656: 0x000065CF, + 7657: 0x000065CB, + 7658: 0x000065CC, + 7659: 0x000065CE, + 7660: 0x0000665D, + 7661: 0x0000665A, + 7662: 0x00006664, + 7663: 0x00006668, + 7664: 0x00006666, + 7665: 0x0000665E, + 7666: 0x000066F9, + 7667: 0x000052D7, + 7668: 0x0000671B, + 7669: 0x00006881, + 7670: 0x000068AF, + 7671: 0x000068A2, + 7672: 0x00006893, + 7673: 0x000068B5, + 7674: 0x0000687F, + 7675: 0x00006876, + 7676: 0x000068B1, + 7677: 0x000068A7, + 7678: 0x00006897, + 7679: 0x000068B0, + 7680: 0x00006883, + 7681: 0x000068C4, + 7682: 0x000068AD, + 7683: 0x00006886, + 7684: 0x00006885, + 7685: 0x00006894, + 7686: 0x0000689D, + 7687: 0x000068A8, + 7688: 0x0000689F, + 7689: 0x000068A1, + 7690: 0x00006882, + 7691: 0x00006B32, + 7692: 0x00006BBA, + 7693: 0x00006BEB, + 7694: 0x00006BEC, + 7695: 0x00006C2B, + 7696: 0x00006D8E, + 7697: 0x00006DBC, + 7698: 0x00006DF3, + 7699: 0x00006DD9, + 7700: 0x00006DB2, + 7701: 0x00006DE1, + 7702: 0x00006DCC, + 7703: 0x00006DE4, + 7704: 0x00006DFB, + 7705: 0x00006DFA, + 7706: 0x00006E05, + 7707: 0x00006DC7, + 7708: 0x00006DCB, + 7709: 0x00006DAF, + 7710: 0x00006DD1, + 7711: 0x00006DAE, + 7712: 0x00006DDE, + 7713: 0x00006DF9, + 7714: 0x00006DB8, + 7715: 0x00006DF7, + 7716: 0x00006DF5, + 7717: 0x00006DC5, + 7718: 0x00006DD2, + 7719: 0x00006E1A, + 7720: 0x00006DB5, + 7721: 0x00006DDA, + 7722: 0x00006DEB, + 7723: 0x00006DD8, + 7724: 0x00006DEA, + 7725: 0x00006DF1, + 7726: 0x00006DEE, + 7727: 0x00006DE8, + 7728: 0x00006DC6, + 7729: 0x00006DC4, + 7730: 0x00006DAA, + 7731: 0x00006DEC, + 7732: 0x00006DBF, + 7733: 0x00006DE6, + 7734: 0x000070F9, + 7735: 0x00007109, + 7736: 0x0000710A, + 7737: 0x000070FD, + 7738: 0x000070EF, + 7739: 0x0000723D, + 7740: 0x0000727D, + 7741: 0x00007281, + 7742: 0x0000731C, + 7743: 0x0000731B, + 7744: 0x00007316, + 7745: 0x00007313, + 7746: 0x00007319, + 7747: 0x00007387, + 7748: 0x00007405, + 7749: 0x0000740A, + 7750: 0x00007403, + 7751: 0x00007406, + 7752: 0x000073FE, + 7753: 0x0000740D, + 7754: 0x000074E0, + 7755: 0x000074F6, + 7756: 0x000074F7, + 7757: 0x0000751C, + 7758: 0x00007522, + 7759: 0x00007565, + 7760: 0x00007566, + 7761: 0x00007562, + 7762: 0x00007570, + 7763: 0x0000758F, + 7764: 0x000075D4, + 7765: 0x000075D5, + 7766: 0x000075B5, + 7767: 0x000075CA, + 7768: 0x000075CD, + 7769: 0x0000768E, + 7770: 0x000076D4, + 7771: 0x000076D2, + 7772: 0x000076DB, + 7773: 0x00007737, + 7774: 0x0000773E, + 7775: 0x0000773C, + 7776: 0x00007736, + 7777: 0x00007738, + 7778: 0x0000773A, + 7779: 0x0000786B, + 7780: 0x00007843, + 7781: 0x0000784E, + 7782: 0x00007965, + 7783: 0x00007968, + 7784: 0x0000796D, + 7785: 0x000079FB, + 7786: 0x00007A92, + 7787: 0x00007A95, + 7788: 0x00007B20, + 7789: 0x00007B28, + 7790: 0x00007B1B, + 7791: 0x00007B2C, + 7792: 0x00007B26, + 7793: 0x00007B19, + 7794: 0x00007B1E, + 7795: 0x00007B2E, + 7796: 0x00007C92, + 7797: 0x00007C97, + 7798: 0x00007C95, + 7799: 0x00007D46, + 7800: 0x00007D43, + 7801: 0x00007D71, + 7802: 0x00007D2E, + 7803: 0x00007D39, + 7804: 0x00007D3C, + 7805: 0x00007D40, + 7806: 0x00007D30, + 7807: 0x00007D33, + 7808: 0x00007D44, + 7809: 0x00007D2F, + 7810: 0x00007D42, + 7811: 0x00007D32, + 7812: 0x00007D31, + 7813: 0x00007F3D, + 7814: 0x00007F9E, + 7815: 0x00007F9A, + 7816: 0x00007FCC, + 7817: 0x00007FCE, + 7818: 0x00007FD2, + 7819: 0x0000801C, + 7820: 0x0000804A, + 7821: 0x00008046, + 7822: 0x0000812F, + 7823: 0x00008116, + 7824: 0x00008123, + 7825: 0x0000812B, + 7826: 0x00008129, + 7827: 0x00008130, + 7828: 0x00008124, + 7829: 0x00008202, + 7830: 0x00008235, + 7831: 0x00008237, + 7832: 0x00008236, + 7833: 0x00008239, + 7834: 0x0000838E, + 7835: 0x0000839E, + 7836: 0x00008398, + 7837: 0x00008378, + 7838: 0x000083A2, + 7839: 0x00008396, + 7840: 0x000083BD, + 7841: 0x000083AB, + 7842: 0x00008392, + 7843: 0x0000838A, + 7844: 0x00008393, + 7845: 0x00008389, + 7846: 0x000083A0, + 7847: 0x00008377, + 7848: 0x0000837B, + 7849: 0x0000837C, + 7850: 0x00008386, + 7851: 0x000083A7, + 7852: 0x00008655, + 7853: 0x00005F6A, + 7854: 0x000086C7, + 7855: 0x000086C0, + 7856: 0x000086B6, + 7857: 0x000086C4, + 7858: 0x000086B5, + 7859: 0x000086C6, + 7860: 0x000086CB, + 7861: 0x000086B1, + 7862: 0x000086AF, + 7863: 0x000086C9, + 7864: 0x00008853, + 7865: 0x0000889E, + 7866: 0x00008888, + 7867: 0x000088AB, + 7868: 0x00008892, + 7869: 0x00008896, + 7870: 0x0000888D, + 7871: 0x0000888B, + 7872: 0x00008993, + 7873: 0x0000898F, + 7874: 0x00008A2A, + 7875: 0x00008A1D, + 7876: 0x00008A23, + 7877: 0x00008A25, + 7878: 0x00008A31, + 7879: 0x00008A2D, + 7880: 0x00008A1F, + 7881: 0x00008A1B, + 7882: 0x00008A22, + 7883: 0x00008C49, + 7884: 0x00008C5A, + 7885: 0x00008CA9, + 7886: 0x00008CAC, + 7887: 0x00008CAB, + 7888: 0x00008CA8, + 7889: 0x00008CAA, + 7890: 0x00008CA7, + 7891: 0x00008D67, + 7892: 0x00008D66, + 7893: 0x00008DBE, + 7894: 0x00008DBA, + 7895: 0x00008EDB, + 7896: 0x00008EDF, + 7897: 0x00009019, + 7898: 0x0000900D, + 7899: 0x0000901A, + 7900: 0x00009017, + 7901: 0x00009023, + 7902: 0x0000901F, + 7903: 0x0000901D, + 7904: 0x00009010, + 7905: 0x00009015, + 7906: 0x0000901E, + 7907: 0x00009020, + 7908: 0x0000900F, + 7909: 0x00009022, + 7910: 0x00009016, + 7911: 0x0000901B, + 7912: 0x00009014, + 7913: 0x000090E8, + 7914: 0x000090ED, + 7915: 0x000090FD, + 7916: 0x00009157, + 7917: 0x000091CE, + 7918: 0x000091F5, + 7919: 0x000091E6, + 7920: 0x000091E3, + 7921: 0x000091E7, + 7922: 0x000091ED, + 7923: 0x000091E9, + 7924: 0x00009589, + 7925: 0x0000966A, + 7926: 0x00009675, + 7927: 0x00009673, + 7928: 0x00009678, + 7929: 0x00009670, + 7930: 0x00009674, + 7931: 0x00009676, + 7932: 0x00009677, + 7933: 0x0000966C, + 7934: 0x000096C0, + 7935: 0x000096EA, + 7936: 0x000096E9, + 7937: 0x00007AE0, + 7938: 0x00007ADF, + 7939: 0x00009802, + 7940: 0x00009803, + 7941: 0x00009B5A, + 7942: 0x00009CE5, + 7943: 0x00009E75, + 7944: 0x00009E7F, + 7945: 0x00009EA5, + 7946: 0x00009EBB, + 7947: 0x000050A2, + 7948: 0x0000508D, + 7949: 0x00005085, + 7950: 0x00005099, + 7951: 0x00005091, + 7952: 0x00005080, + 7953: 0x00005096, + 7954: 0x00005098, + 7955: 0x0000509A, + 7956: 0x00006700, + 7957: 0x000051F1, + 7958: 0x00005272, + 7959: 0x00005274, + 7960: 0x00005275, + 7961: 0x00005269, + 7962: 0x000052DE, + 7963: 0x000052DD, + 7964: 0x000052DB, + 7965: 0x0000535A, + 7966: 0x000053A5, + 7967: 0x0000557B, + 7968: 0x00005580, + 7969: 0x000055A7, + 7970: 0x0000557C, + 7971: 0x0000558A, + 7972: 0x0000559D, + 7973: 0x00005598, + 7974: 0x00005582, + 7975: 0x0000559C, + 7976: 0x000055AA, + 7977: 0x00005594, + 7978: 0x00005587, + 7979: 0x0000558B, + 7980: 0x00005583, + 7981: 0x000055B3, + 7982: 0x000055AE, + 7983: 0x0000559F, + 7984: 0x0000553E, + 7985: 0x000055B2, + 7986: 0x0000559A, + 7987: 0x000055BB, + 7988: 0x000055AC, + 7989: 0x000055B1, + 7990: 0x0000557E, + 7991: 0x00005589, + 7992: 0x000055AB, + 7993: 0x00005599, + 7994: 0x0000570D, + 7995: 0x0000582F, + 7996: 0x0000582A, + 7997: 0x00005834, + 7998: 0x00005824, + 7999: 0x00005830, + 8000: 0x00005831, + 8001: 0x00005821, + 8002: 0x0000581D, + 8003: 0x00005820, + 8004: 0x000058F9, + 8005: 0x000058FA, + 8006: 0x00005960, + 8007: 0x00005A77, + 8008: 0x00005A9A, + 8009: 0x00005A7F, + 8010: 0x00005A92, + 8011: 0x00005A9B, + 8012: 0x00005AA7, + 8013: 0x00005B73, + 8014: 0x00005B71, + 8015: 0x00005BD2, + 8016: 0x00005BCC, + 8017: 0x00005BD3, + 8018: 0x00005BD0, + 8019: 0x00005C0A, + 8020: 0x00005C0B, + 8021: 0x00005C31, + 8022: 0x00005D4C, + 8023: 0x00005D50, + 8024: 0x00005D34, + 8025: 0x00005D47, + 8026: 0x00005DFD, + 8027: 0x00005E45, + 8028: 0x00005E3D, + 8029: 0x00005E40, + 8030: 0x00005E43, + 8031: 0x00005E7E, + 8032: 0x00005ECA, + 8033: 0x00005EC1, + 8034: 0x00005EC2, + 8035: 0x00005EC4, + 8036: 0x00005F3C, + 8037: 0x00005F6D, + 8038: 0x00005FA9, + 8039: 0x00005FAA, + 8040: 0x00005FA8, + 8041: 0x000060D1, + 8042: 0x000060E1, + 8043: 0x000060B2, + 8044: 0x000060B6, + 8045: 0x000060E0, + 8046: 0x0000611C, + 8047: 0x00006123, + 8048: 0x000060FA, + 8049: 0x00006115, + 8050: 0x000060F0, + 8051: 0x000060FB, + 8052: 0x000060F4, + 8053: 0x00006168, + 8054: 0x000060F1, + 8055: 0x0000610E, + 8056: 0x000060F6, + 8057: 0x00006109, + 8058: 0x00006100, + 8059: 0x00006112, + 8060: 0x0000621F, + 8061: 0x00006249, + 8062: 0x000063A3, + 8063: 0x0000638C, + 8064: 0x000063CF, + 8065: 0x000063C0, + 8066: 0x000063E9, + 8067: 0x000063C9, + 8068: 0x000063C6, + 8069: 0x000063CD, + 8070: 0x000063D2, + 8071: 0x000063E3, + 8072: 0x000063D0, + 8073: 0x000063E1, + 8074: 0x000063D6, + 8075: 0x000063ED, + 8076: 0x000063EE, + 8077: 0x00006376, + 8078: 0x000063F4, + 8079: 0x000063EA, + 8080: 0x000063DB, + 8081: 0x00006452, + 8082: 0x000063DA, + 8083: 0x000063F9, + 8084: 0x0000655E, + 8085: 0x00006566, + 8086: 0x00006562, + 8087: 0x00006563, + 8088: 0x00006591, + 8089: 0x00006590, + 8090: 0x000065AF, + 8091: 0x0000666E, + 8092: 0x00006670, + 8093: 0x00006674, + 8094: 0x00006676, + 8095: 0x0000666F, + 8096: 0x00006691, + 8097: 0x0000667A, + 8098: 0x0000667E, + 8099: 0x00006677, + 8100: 0x000066FE, + 8101: 0x000066FF, + 8102: 0x0000671F, + 8103: 0x0000671D, + 8104: 0x000068FA, + 8105: 0x000068D5, + 8106: 0x000068E0, + 8107: 0x000068D8, + 8108: 0x000068D7, + 8109: 0x00006905, + 8110: 0x000068DF, + 8111: 0x000068F5, + 8112: 0x000068EE, + 8113: 0x000068E7, + 8114: 0x000068F9, + 8115: 0x000068D2, + 8116: 0x000068F2, + 8117: 0x000068E3, + 8118: 0x000068CB, + 8119: 0x000068CD, + 8120: 0x0000690D, + 8121: 0x00006912, + 8122: 0x0000690E, + 8123: 0x000068C9, + 8124: 0x000068DA, + 8125: 0x0000696E, + 8126: 0x000068FB, + 8127: 0x00006B3E, + 8128: 0x00006B3A, + 8129: 0x00006B3D, + 8130: 0x00006B98, + 8131: 0x00006B96, + 8132: 0x00006BBC, + 8133: 0x00006BEF, + 8134: 0x00006C2E, + 8135: 0x00006C2F, + 8136: 0x00006C2C, + 8137: 0x00006E2F, + 8138: 0x00006E38, + 8139: 0x00006E54, + 8140: 0x00006E21, + 8141: 0x00006E32, + 8142: 0x00006E67, + 8143: 0x00006E4A, + 8144: 0x00006E20, + 8145: 0x00006E25, + 8146: 0x00006E23, + 8147: 0x00006E1B, + 8148: 0x00006E5B, + 8149: 0x00006E58, + 8150: 0x00006E24, + 8151: 0x00006E56, + 8152: 0x00006E6E, + 8153: 0x00006E2D, + 8154: 0x00006E26, + 8155: 0x00006E6F, + 8156: 0x00006E34, + 8157: 0x00006E4D, + 8158: 0x00006E3A, + 8159: 0x00006E2C, + 8160: 0x00006E43, + 8161: 0x00006E1D, + 8162: 0x00006E3E, + 8163: 0x00006ECB, + 8164: 0x00006E89, + 8165: 0x00006E19, + 8166: 0x00006E4E, + 8167: 0x00006E63, + 8168: 0x00006E44, + 8169: 0x00006E72, + 8170: 0x00006E69, + 8171: 0x00006E5F, + 8172: 0x00007119, + 8173: 0x0000711A, + 8174: 0x00007126, + 8175: 0x00007130, + 8176: 0x00007121, + 8177: 0x00007136, + 8178: 0x0000716E, + 8179: 0x0000711C, + 8180: 0x0000724C, + 8181: 0x00007284, + 8182: 0x00007280, + 8183: 0x00007336, + 8184: 0x00007325, + 8185: 0x00007334, + 8186: 0x00007329, + 8187: 0x0000743A, + 8188: 0x0000742A, + 8189: 0x00007433, + 8190: 0x00007422, + 8191: 0x00007425, + 8192: 0x00007435, + 8193: 0x00007436, + 8194: 0x00007434, + 8195: 0x0000742F, + 8196: 0x0000741B, + 8197: 0x00007426, + 8198: 0x00007428, + 8199: 0x00007525, + 8200: 0x00007526, + 8201: 0x0000756B, + 8202: 0x0000756A, + 8203: 0x000075E2, + 8204: 0x000075DB, + 8205: 0x000075E3, + 8206: 0x000075D9, + 8207: 0x000075D8, + 8208: 0x000075DE, + 8209: 0x000075E0, + 8210: 0x0000767B, + 8211: 0x0000767C, + 8212: 0x00007696, + 8213: 0x00007693, + 8214: 0x000076B4, + 8215: 0x000076DC, + 8216: 0x0000774F, + 8217: 0x000077ED, + 8218: 0x0000785D, + 8219: 0x0000786C, + 8220: 0x0000786F, + 8221: 0x00007A0D, + 8222: 0x00007A08, + 8223: 0x00007A0B, + 8224: 0x00007A05, + 8225: 0x00007A00, + 8226: 0x00007A98, + 8227: 0x00007A97, + 8228: 0x00007A96, + 8229: 0x00007AE5, + 8230: 0x00007AE3, + 8231: 0x00007B49, + 8232: 0x00007B56, + 8233: 0x00007B46, + 8234: 0x00007B50, + 8235: 0x00007B52, + 8236: 0x00007B54, + 8237: 0x00007B4D, + 8238: 0x00007B4B, + 8239: 0x00007B4F, + 8240: 0x00007B51, + 8241: 0x00007C9F, + 8242: 0x00007CA5, + 8243: 0x00007D5E, + 8244: 0x00007D50, + 8245: 0x00007D68, + 8246: 0x00007D55, + 8247: 0x00007D2B, + 8248: 0x00007D6E, + 8249: 0x00007D72, + 8250: 0x00007D61, + 8251: 0x00007D66, + 8252: 0x00007D62, + 8253: 0x00007D70, + 8254: 0x00007D73, + 8255: 0x00005584, + 8256: 0x00007FD4, + 8257: 0x00007FD5, + 8258: 0x0000800B, + 8259: 0x00008052, + 8260: 0x00008085, + 8261: 0x00008155, + 8262: 0x00008154, + 8263: 0x0000814B, + 8264: 0x00008151, + 8265: 0x0000814E, + 8266: 0x00008139, + 8267: 0x00008146, + 8268: 0x0000813E, + 8269: 0x0000814C, + 8270: 0x00008153, + 8271: 0x00008174, + 8272: 0x00008212, + 8273: 0x0000821C, + 8274: 0x000083E9, + 8275: 0x00008403, + 8276: 0x000083F8, + 8277: 0x0000840D, + 8278: 0x000083E0, + 8279: 0x000083C5, + 8280: 0x0000840B, + 8281: 0x000083C1, + 8282: 0x000083EF, + 8283: 0x000083F1, + 8284: 0x000083F4, + 8285: 0x00008457, + 8286: 0x0000840A, + 8287: 0x000083F0, + 8288: 0x0000840C, + 8289: 0x000083CC, + 8290: 0x000083FD, + 8291: 0x000083F2, + 8292: 0x000083CA, + 8293: 0x00008438, + 8294: 0x0000840E, + 8295: 0x00008404, + 8296: 0x000083DC, + 8297: 0x00008407, + 8298: 0x000083D4, + 8299: 0x000083DF, + 8300: 0x0000865B, + 8301: 0x000086DF, + 8302: 0x000086D9, + 8303: 0x000086ED, + 8304: 0x000086D4, + 8305: 0x000086DB, + 8306: 0x000086E4, + 8307: 0x000086D0, + 8308: 0x000086DE, + 8309: 0x00008857, + 8310: 0x000088C1, + 8311: 0x000088C2, + 8312: 0x000088B1, + 8313: 0x00008983, + 8314: 0x00008996, + 8315: 0x00008A3B, + 8316: 0x00008A60, + 8317: 0x00008A55, + 8318: 0x00008A5E, + 8319: 0x00008A3C, + 8320: 0x00008A41, + 8321: 0x00008A54, + 8322: 0x00008A5B, + 8323: 0x00008A50, + 8324: 0x00008A46, + 8325: 0x00008A34, + 8326: 0x00008A3A, + 8327: 0x00008A36, + 8328: 0x00008A56, + 8329: 0x00008C61, + 8330: 0x00008C82, + 8331: 0x00008CAF, + 8332: 0x00008CBC, + 8333: 0x00008CB3, + 8334: 0x00008CBD, + 8335: 0x00008CC1, + 8336: 0x00008CBB, + 8337: 0x00008CC0, + 8338: 0x00008CB4, + 8339: 0x00008CB7, + 8340: 0x00008CB6, + 8341: 0x00008CBF, + 8342: 0x00008CB8, + 8343: 0x00008D8A, + 8344: 0x00008D85, + 8345: 0x00008D81, + 8346: 0x00008DCE, + 8347: 0x00008DDD, + 8348: 0x00008DCB, + 8349: 0x00008DDA, + 8350: 0x00008DD1, + 8351: 0x00008DCC, + 8352: 0x00008DDB, + 8353: 0x00008DC6, + 8354: 0x00008EFB, + 8355: 0x00008EF8, + 8356: 0x00008EFC, + 8357: 0x00008F9C, + 8358: 0x0000902E, + 8359: 0x00009035, + 8360: 0x00009031, + 8361: 0x00009038, + 8362: 0x00009032, + 8363: 0x00009036, + 8364: 0x00009102, + 8365: 0x000090F5, + 8366: 0x00009109, + 8367: 0x000090FE, + 8368: 0x00009163, + 8369: 0x00009165, + 8370: 0x000091CF, + 8371: 0x00009214, + 8372: 0x00009215, + 8373: 0x00009223, + 8374: 0x00009209, + 8375: 0x0000921E, + 8376: 0x0000920D, + 8377: 0x00009210, + 8378: 0x00009207, + 8379: 0x00009211, + 8380: 0x00009594, + 8381: 0x0000958F, + 8382: 0x0000958B, + 8383: 0x00009591, + 8384: 0x00009593, + 8385: 0x00009592, + 8386: 0x0000958E, + 8387: 0x0000968A, + 8388: 0x0000968E, + 8389: 0x0000968B, + 8390: 0x0000967D, + 8391: 0x00009685, + 8392: 0x00009686, + 8393: 0x0000968D, + 8394: 0x00009672, + 8395: 0x00009684, + 8396: 0x000096C1, + 8397: 0x000096C5, + 8398: 0x000096C4, + 8399: 0x000096C6, + 8400: 0x000096C7, + 8401: 0x000096EF, + 8402: 0x000096F2, + 8403: 0x000097CC, + 8404: 0x00009805, + 8405: 0x00009806, + 8406: 0x00009808, + 8407: 0x000098E7, + 8408: 0x000098EA, + 8409: 0x000098EF, + 8410: 0x000098E9, + 8411: 0x000098F2, + 8412: 0x000098ED, + 8413: 0x000099AE, + 8414: 0x000099AD, + 8415: 0x00009EC3, + 8416: 0x00009ECD, + 8417: 0x00009ED1, + 8418: 0x00004E82, + 8419: 0x000050AD, + 8420: 0x000050B5, + 8421: 0x000050B2, + 8422: 0x000050B3, + 8423: 0x000050C5, + 8424: 0x000050BE, + 8425: 0x000050AC, + 8426: 0x000050B7, + 8427: 0x000050BB, + 8428: 0x000050AF, + 8429: 0x000050C7, + 8430: 0x0000527F, + 8431: 0x00005277, + 8432: 0x0000527D, + 8433: 0x000052DF, + 8434: 0x000052E6, + 8435: 0x000052E4, + 8436: 0x000052E2, + 8437: 0x000052E3, + 8438: 0x0000532F, + 8439: 0x000055DF, + 8440: 0x000055E8, + 8441: 0x000055D3, + 8442: 0x000055E6, + 8443: 0x000055CE, + 8444: 0x000055DC, + 8445: 0x000055C7, + 8446: 0x000055D1, + 8447: 0x000055E3, + 8448: 0x000055E4, + 8449: 0x000055EF, + 8450: 0x000055DA, + 8451: 0x000055E1, + 8452: 0x000055C5, + 8453: 0x000055C6, + 8454: 0x000055E5, + 8455: 0x000055C9, + 8456: 0x00005712, + 8457: 0x00005713, + 8458: 0x0000585E, + 8459: 0x00005851, + 8460: 0x00005858, + 8461: 0x00005857, + 8462: 0x0000585A, + 8463: 0x00005854, + 8464: 0x0000586B, + 8465: 0x0000584C, + 8466: 0x0000586D, + 8467: 0x0000584A, + 8468: 0x00005862, + 8469: 0x00005852, + 8470: 0x0000584B, + 8471: 0x00005967, + 8472: 0x00005AC1, + 8473: 0x00005AC9, + 8474: 0x00005ACC, + 8475: 0x00005ABE, + 8476: 0x00005ABD, + 8477: 0x00005ABC, + 8478: 0x00005AB3, + 8479: 0x00005AC2, + 8480: 0x00005AB2, + 8481: 0x00005D69, + 8482: 0x00005D6F, + 8483: 0x00005E4C, + 8484: 0x00005E79, + 8485: 0x00005EC9, + 8486: 0x00005EC8, + 8487: 0x00005F12, + 8488: 0x00005F59, + 8489: 0x00005FAC, + 8490: 0x00005FAE, + 8491: 0x0000611A, + 8492: 0x0000610F, + 8493: 0x00006148, + 8494: 0x0000611F, + 8495: 0x000060F3, + 8496: 0x0000611B, + 8497: 0x000060F9, + 8498: 0x00006101, + 8499: 0x00006108, + 8500: 0x0000614E, + 8501: 0x0000614C, + 8502: 0x00006144, + 8503: 0x0000614D, + 8504: 0x0000613E, + 8505: 0x00006134, + 8506: 0x00006127, + 8507: 0x0000610D, + 8508: 0x00006106, + 8509: 0x00006137, + 8510: 0x00006221, + 8511: 0x00006222, + 8512: 0x00006413, + 8513: 0x0000643E, + 8514: 0x0000641E, + 8515: 0x0000642A, + 8516: 0x0000642D, + 8517: 0x0000643D, + 8518: 0x0000642C, + 8519: 0x0000640F, + 8520: 0x0000641C, + 8521: 0x00006414, + 8522: 0x0000640D, + 8523: 0x00006436, + 8524: 0x00006416, + 8525: 0x00006417, + 8526: 0x00006406, + 8527: 0x0000656C, + 8528: 0x0000659F, + 8529: 0x000065B0, + 8530: 0x00006697, + 8531: 0x00006689, + 8532: 0x00006687, + 8533: 0x00006688, + 8534: 0x00006696, + 8535: 0x00006684, + 8536: 0x00006698, + 8537: 0x0000668D, + 8538: 0x00006703, + 8539: 0x00006994, + 8540: 0x0000696D, + 8541: 0x0000695A, + 8542: 0x00006977, + 8543: 0x00006960, + 8544: 0x00006954, + 8545: 0x00006975, + 8546: 0x00006930, + 8547: 0x00006982, + 8548: 0x0000694A, + 8549: 0x00006968, + 8550: 0x0000696B, + 8551: 0x0000695E, + 8552: 0x00006953, + 8553: 0x00006979, + 8554: 0x00006986, + 8555: 0x0000695D, + 8556: 0x00006963, + 8557: 0x0000695B, + 8558: 0x00006B47, + 8559: 0x00006B72, + 8560: 0x00006BC0, + 8561: 0x00006BBF, + 8562: 0x00006BD3, + 8563: 0x00006BFD, + 8564: 0x00006EA2, + 8565: 0x00006EAF, + 8566: 0x00006ED3, + 8567: 0x00006EB6, + 8568: 0x00006EC2, + 8569: 0x00006E90, + 8570: 0x00006E9D, + 8571: 0x00006EC7, + 8572: 0x00006EC5, + 8573: 0x00006EA5, + 8574: 0x00006E98, + 8575: 0x00006EBC, + 8576: 0x00006EBA, + 8577: 0x00006EAB, + 8578: 0x00006ED1, + 8579: 0x00006E96, + 8580: 0x00006E9C, + 8581: 0x00006EC4, + 8582: 0x00006ED4, + 8583: 0x00006EAA, + 8584: 0x00006EA7, + 8585: 0x00006EB4, + 8586: 0x0000714E, + 8587: 0x00007159, + 8588: 0x00007169, + 8589: 0x00007164, + 8590: 0x00007149, + 8591: 0x00007167, + 8592: 0x0000715C, + 8593: 0x0000716C, + 8594: 0x00007166, + 8595: 0x0000714C, + 8596: 0x00007165, + 8597: 0x0000715E, + 8598: 0x00007146, + 8599: 0x00007168, + 8600: 0x00007156, + 8601: 0x0000723A, + 8602: 0x00007252, + 8603: 0x00007337, + 8604: 0x00007345, + 8605: 0x0000733F, + 8606: 0x0000733E, + 8607: 0x0000746F, + 8608: 0x0000745A, + 8609: 0x00007455, + 8610: 0x0000745F, + 8611: 0x0000745E, + 8612: 0x00007441, + 8613: 0x0000743F, + 8614: 0x00007459, + 8615: 0x0000745B, + 8616: 0x0000745C, + 8617: 0x00007576, + 8618: 0x00007578, + 8619: 0x00007600, + 8620: 0x000075F0, + 8621: 0x00007601, + 8622: 0x000075F2, + 8623: 0x000075F1, + 8624: 0x000075FA, + 8625: 0x000075FF, + 8626: 0x000075F4, + 8627: 0x000075F3, + 8628: 0x000076DE, + 8629: 0x000076DF, + 8630: 0x0000775B, + 8631: 0x0000776B, + 8632: 0x00007766, + 8633: 0x0000775E, + 8634: 0x00007763, + 8635: 0x00007779, + 8636: 0x0000776A, + 8637: 0x0000776C, + 8638: 0x0000775C, + 8639: 0x00007765, + 8640: 0x00007768, + 8641: 0x00007762, + 8642: 0x000077EE, + 8643: 0x0000788E, + 8644: 0x000078B0, + 8645: 0x00007897, + 8646: 0x00007898, + 8647: 0x0000788C, + 8648: 0x00007889, + 8649: 0x0000787C, + 8650: 0x00007891, + 8651: 0x00007893, + 8652: 0x0000787F, + 8653: 0x0000797A, + 8654: 0x0000797F, + 8655: 0x00007981, + 8656: 0x0000842C, + 8657: 0x000079BD, + 8658: 0x00007A1C, + 8659: 0x00007A1A, + 8660: 0x00007A20, + 8661: 0x00007A14, + 8662: 0x00007A1F, + 8663: 0x00007A1E, + 8664: 0x00007A9F, + 8665: 0x00007AA0, + 8666: 0x00007B77, + 8667: 0x00007BC0, + 8668: 0x00007B60, + 8669: 0x00007B6E, + 8670: 0x00007B67, + 8671: 0x00007CB1, + 8672: 0x00007CB3, + 8673: 0x00007CB5, + 8674: 0x00007D93, + 8675: 0x00007D79, + 8676: 0x00007D91, + 8677: 0x00007D81, + 8678: 0x00007D8F, + 8679: 0x00007D5B, + 8680: 0x00007F6E, + 8681: 0x00007F69, + 8682: 0x00007F6A, + 8683: 0x00007F72, + 8684: 0x00007FA9, + 8685: 0x00007FA8, + 8686: 0x00007FA4, + 8687: 0x00008056, + 8688: 0x00008058, + 8689: 0x00008086, + 8690: 0x00008084, + 8691: 0x00008171, + 8692: 0x00008170, + 8693: 0x00008178, + 8694: 0x00008165, + 8695: 0x0000816E, + 8696: 0x00008173, + 8697: 0x0000816B, + 8698: 0x00008179, + 8699: 0x0000817A, + 8700: 0x00008166, + 8701: 0x00008205, + 8702: 0x00008247, + 8703: 0x00008482, + 8704: 0x00008477, + 8705: 0x0000843D, + 8706: 0x00008431, + 8707: 0x00008475, + 8708: 0x00008466, + 8709: 0x0000846B, + 8710: 0x00008449, + 8711: 0x0000846C, + 8712: 0x0000845B, + 8713: 0x0000843C, + 8714: 0x00008435, + 8715: 0x00008461, + 8716: 0x00008463, + 8717: 0x00008469, + 8718: 0x0000846D, + 8719: 0x00008446, + 8720: 0x0000865E, + 8721: 0x0000865C, + 8722: 0x0000865F, + 8723: 0x000086F9, + 8724: 0x00008713, + 8725: 0x00008708, + 8726: 0x00008707, + 8727: 0x00008700, + 8728: 0x000086FE, + 8729: 0x000086FB, + 8730: 0x00008702, + 8731: 0x00008703, + 8732: 0x00008706, + 8733: 0x0000870A, + 8734: 0x00008859, + 8735: 0x000088DF, + 8736: 0x000088D4, + 8737: 0x000088D9, + 8738: 0x000088DC, + 8739: 0x000088D8, + 8740: 0x000088DD, + 8741: 0x000088E1, + 8742: 0x000088CA, + 8743: 0x000088D5, + 8744: 0x000088D2, + 8745: 0x0000899C, + 8746: 0x000089E3, + 8747: 0x00008A6B, + 8748: 0x00008A72, + 8749: 0x00008A73, + 8750: 0x00008A66, + 8751: 0x00008A69, + 8752: 0x00008A70, + 8753: 0x00008A87, + 8754: 0x00008A7C, + 8755: 0x00008A63, + 8756: 0x00008AA0, + 8757: 0x00008A71, + 8758: 0x00008A85, + 8759: 0x00008A6D, + 8760: 0x00008A62, + 8761: 0x00008A6E, + 8762: 0x00008A6C, + 8763: 0x00008A79, + 8764: 0x00008A7B, + 8765: 0x00008A3E, + 8766: 0x00008A68, + 8767: 0x00008C62, + 8768: 0x00008C8A, + 8769: 0x00008C89, + 8770: 0x00008CCA, + 8771: 0x00008CC7, + 8772: 0x00008CC8, + 8773: 0x00008CC4, + 8774: 0x00008CB2, + 8775: 0x00008CC3, + 8776: 0x00008CC2, + 8777: 0x00008CC5, + 8778: 0x00008DE1, + 8779: 0x00008DDF, + 8780: 0x00008DE8, + 8781: 0x00008DEF, + 8782: 0x00008DF3, + 8783: 0x00008DFA, + 8784: 0x00008DEA, + 8785: 0x00008DE4, + 8786: 0x00008DE6, + 8787: 0x00008EB2, + 8788: 0x00008F03, + 8789: 0x00008F09, + 8790: 0x00008EFE, + 8791: 0x00008F0A, + 8792: 0x00008F9F, + 8793: 0x00008FB2, + 8794: 0x0000904B, + 8795: 0x0000904A, + 8796: 0x00009053, + 8797: 0x00009042, + 8798: 0x00009054, + 8799: 0x0000903C, + 8800: 0x00009055, + 8801: 0x00009050, + 8802: 0x00009047, + 8803: 0x0000904F, + 8804: 0x0000904E, + 8805: 0x0000904D, + 8806: 0x00009051, + 8807: 0x0000903E, + 8808: 0x00009041, + 8809: 0x00009112, + 8810: 0x00009117, + 8811: 0x0000916C, + 8812: 0x0000916A, + 8813: 0x00009169, + 8814: 0x000091C9, + 8815: 0x00009237, + 8816: 0x00009257, + 8817: 0x00009238, + 8818: 0x0000923D, + 8819: 0x00009240, + 8820: 0x0000923E, + 8821: 0x0000925B, + 8822: 0x0000924B, + 8823: 0x00009264, + 8824: 0x00009251, + 8825: 0x00009234, + 8826: 0x00009249, + 8827: 0x0000924D, + 8828: 0x00009245, + 8829: 0x00009239, + 8830: 0x0000923F, + 8831: 0x0000925A, + 8832: 0x00009598, + 8833: 0x00009698, + 8834: 0x00009694, + 8835: 0x00009695, + 8836: 0x000096CD, + 8837: 0x000096CB, + 8838: 0x000096C9, + 8839: 0x000096CA, + 8840: 0x000096F7, + 8841: 0x000096FB, + 8842: 0x000096F9, + 8843: 0x000096F6, + 8844: 0x00009756, + 8845: 0x00009774, + 8846: 0x00009776, + 8847: 0x00009810, + 8848: 0x00009811, + 8849: 0x00009813, + 8850: 0x0000980A, + 8851: 0x00009812, + 8852: 0x0000980C, + 8853: 0x000098FC, + 8854: 0x000098F4, + 8855: 0x000098FD, + 8856: 0x000098FE, + 8857: 0x000099B3, + 8858: 0x000099B1, + 8859: 0x000099B4, + 8860: 0x00009AE1, + 8861: 0x00009CE9, + 8862: 0x00009E82, + 8863: 0x00009F0E, + 8864: 0x00009F13, + 8865: 0x00009F20, + 8866: 0x000050E7, + 8867: 0x000050EE, + 8868: 0x000050E5, + 8869: 0x000050D6, + 8870: 0x000050ED, + 8871: 0x000050DA, + 8872: 0x000050D5, + 8873: 0x000050CF, + 8874: 0x000050D1, + 8875: 0x000050F1, + 8876: 0x000050CE, + 8877: 0x000050E9, + 8878: 0x00005162, + 8879: 0x000051F3, + 8880: 0x00005283, + 8881: 0x00005282, + 8882: 0x00005331, + 8883: 0x000053AD, + 8884: 0x000055FE, + 8885: 0x00005600, + 8886: 0x0000561B, + 8887: 0x00005617, + 8888: 0x000055FD, + 8889: 0x00005614, + 8890: 0x00005606, + 8891: 0x00005609, + 8892: 0x0000560D, + 8893: 0x0000560E, + 8894: 0x000055F7, + 8895: 0x00005616, + 8896: 0x0000561F, + 8897: 0x00005608, + 8898: 0x00005610, + 8899: 0x000055F6, + 8900: 0x00005718, + 8901: 0x00005716, + 8902: 0x00005875, + 8903: 0x0000587E, + 8904: 0x00005883, + 8905: 0x00005893, + 8906: 0x0000588A, + 8907: 0x00005879, + 8908: 0x00005885, + 8909: 0x0000587D, + 8910: 0x000058FD, + 8911: 0x00005925, + 8912: 0x00005922, + 8913: 0x00005924, + 8914: 0x0000596A, + 8915: 0x00005969, + 8916: 0x00005AE1, + 8917: 0x00005AE6, + 8918: 0x00005AE9, + 8919: 0x00005AD7, + 8920: 0x00005AD6, + 8921: 0x00005AD8, + 8922: 0x00005AE3, + 8923: 0x00005B75, + 8924: 0x00005BDE, + 8925: 0x00005BE7, + 8926: 0x00005BE1, + 8927: 0x00005BE5, + 8928: 0x00005BE6, + 8929: 0x00005BE8, + 8930: 0x00005BE2, + 8931: 0x00005BE4, + 8932: 0x00005BDF, + 8933: 0x00005C0D, + 8934: 0x00005C62, + 8935: 0x00005D84, + 8936: 0x00005D87, + 8937: 0x00005E5B, + 8938: 0x00005E63, + 8939: 0x00005E55, + 8940: 0x00005E57, + 8941: 0x00005E54, + 8942: 0x00005ED3, + 8943: 0x00005ED6, + 8944: 0x00005F0A, + 8945: 0x00005F46, + 8946: 0x00005F70, + 8947: 0x00005FB9, + 8948: 0x00006147, + 8949: 0x0000613F, + 8950: 0x0000614B, + 8951: 0x00006177, + 8952: 0x00006162, + 8953: 0x00006163, + 8954: 0x0000615F, + 8955: 0x0000615A, + 8956: 0x00006158, + 8957: 0x00006175, + 8958: 0x0000622A, + 8959: 0x00006487, + 8960: 0x00006458, + 8961: 0x00006454, + 8962: 0x000064A4, + 8963: 0x00006478, + 8964: 0x0000645F, + 8965: 0x0000647A, + 8966: 0x00006451, + 8967: 0x00006467, + 8968: 0x00006434, + 8969: 0x0000646D, + 8970: 0x0000647B, + 8971: 0x00006572, + 8972: 0x000065A1, + 8973: 0x000065D7, + 8974: 0x000065D6, + 8975: 0x000066A2, + 8976: 0x000066A8, + 8977: 0x0000669D, + 8978: 0x0000699C, + 8979: 0x000069A8, + 8980: 0x00006995, + 8981: 0x000069C1, + 8982: 0x000069AE, + 8983: 0x000069D3, + 8984: 0x000069CB, + 8985: 0x0000699B, + 8986: 0x000069B7, + 8987: 0x000069BB, + 8988: 0x000069AB, + 8989: 0x000069B4, + 8990: 0x000069D0, + 8991: 0x000069CD, + 8992: 0x000069AD, + 8993: 0x000069CC, + 8994: 0x000069A6, + 8995: 0x000069C3, + 8996: 0x000069A3, + 8997: 0x00006B49, + 8998: 0x00006B4C, + 8999: 0x00006C33, + 9000: 0x00006F33, + 9001: 0x00006F14, + 9002: 0x00006EFE, + 9003: 0x00006F13, + 9004: 0x00006EF4, + 9005: 0x00006F29, + 9006: 0x00006F3E, + 9007: 0x00006F20, + 9008: 0x00006F2C, + 9009: 0x00006F0F, + 9010: 0x00006F02, + 9011: 0x00006F22, + 9012: 0x00006EFF, + 9013: 0x00006EEF, + 9014: 0x00006F06, + 9015: 0x00006F31, + 9016: 0x00006F38, + 9017: 0x00006F32, + 9018: 0x00006F23, + 9019: 0x00006F15, + 9020: 0x00006F2B, + 9021: 0x00006F2F, + 9022: 0x00006F88, + 9023: 0x00006F2A, + 9024: 0x00006EEC, + 9025: 0x00006F01, + 9026: 0x00006EF2, + 9027: 0x00006ECC, + 9028: 0x00006EF7, + 9029: 0x00007194, + 9030: 0x00007199, + 9031: 0x0000717D, + 9032: 0x0000718A, + 9033: 0x00007184, + 9034: 0x00007192, + 9035: 0x0000723E, + 9036: 0x00007292, + 9037: 0x00007296, + 9038: 0x00007344, + 9039: 0x00007350, + 9040: 0x00007464, + 9041: 0x00007463, + 9042: 0x0000746A, + 9043: 0x00007470, + 9044: 0x0000746D, + 9045: 0x00007504, + 9046: 0x00007591, + 9047: 0x00007627, + 9048: 0x0000760D, + 9049: 0x0000760B, + 9050: 0x00007609, + 9051: 0x00007613, + 9052: 0x000076E1, + 9053: 0x000076E3, + 9054: 0x00007784, + 9055: 0x0000777D, + 9056: 0x0000777F, + 9057: 0x00007761, + 9058: 0x000078C1, + 9059: 0x0000789F, + 9060: 0x000078A7, + 9061: 0x000078B3, + 9062: 0x000078A9, + 9063: 0x000078A3, + 9064: 0x0000798E, + 9065: 0x0000798F, + 9066: 0x0000798D, + 9067: 0x00007A2E, + 9068: 0x00007A31, + 9069: 0x00007AAA, + 9070: 0x00007AA9, + 9071: 0x00007AED, + 9072: 0x00007AEF, + 9073: 0x00007BA1, + 9074: 0x00007B95, + 9075: 0x00007B8B, + 9076: 0x00007B75, + 9077: 0x00007B97, + 9078: 0x00007B9D, + 9079: 0x00007B94, + 9080: 0x00007B8F, + 9081: 0x00007BB8, + 9082: 0x00007B87, + 9083: 0x00007B84, + 9084: 0x00007CB9, + 9085: 0x00007CBD, + 9086: 0x00007CBE, + 9087: 0x00007DBB, + 9088: 0x00007DB0, + 9089: 0x00007D9C, + 9090: 0x00007DBD, + 9091: 0x00007DBE, + 9092: 0x00007DA0, + 9093: 0x00007DCA, + 9094: 0x00007DB4, + 9095: 0x00007DB2, + 9096: 0x00007DB1, + 9097: 0x00007DBA, + 9098: 0x00007DA2, + 9099: 0x00007DBF, + 9100: 0x00007DB5, + 9101: 0x00007DB8, + 9102: 0x00007DAD, + 9103: 0x00007DD2, + 9104: 0x00007DC7, + 9105: 0x00007DAC, + 9106: 0x00007F70, + 9107: 0x00007FE0, + 9108: 0x00007FE1, + 9109: 0x00007FDF, + 9110: 0x0000805E, + 9111: 0x0000805A, + 9112: 0x00008087, + 9113: 0x00008150, + 9114: 0x00008180, + 9115: 0x0000818F, + 9116: 0x00008188, + 9117: 0x0000818A, + 9118: 0x0000817F, + 9119: 0x00008182, + 9120: 0x000081E7, + 9121: 0x000081FA, + 9122: 0x00008207, + 9123: 0x00008214, + 9124: 0x0000821E, + 9125: 0x0000824B, + 9126: 0x000084C9, + 9127: 0x000084BF, + 9128: 0x000084C6, + 9129: 0x000084C4, + 9130: 0x00008499, + 9131: 0x0000849E, + 9132: 0x000084B2, + 9133: 0x0000849C, + 9134: 0x000084CB, + 9135: 0x000084B8, + 9136: 0x000084C0, + 9137: 0x000084D3, + 9138: 0x00008490, + 9139: 0x000084BC, + 9140: 0x000084D1, + 9141: 0x000084CA, + 9142: 0x0000873F, + 9143: 0x0000871C, + 9144: 0x0000873B, + 9145: 0x00008722, + 9146: 0x00008725, + 9147: 0x00008734, + 9148: 0x00008718, + 9149: 0x00008755, + 9150: 0x00008737, + 9151: 0x00008729, + 9152: 0x000088F3, + 9153: 0x00008902, + 9154: 0x000088F4, + 9155: 0x000088F9, + 9156: 0x000088F8, + 9157: 0x000088FD, + 9158: 0x000088E8, + 9159: 0x0000891A, + 9160: 0x000088EF, + 9161: 0x00008AA6, + 9162: 0x00008A8C, + 9163: 0x00008A9E, + 9164: 0x00008AA3, + 9165: 0x00008A8D, + 9166: 0x00008AA1, + 9167: 0x00008A93, + 9168: 0x00008AA4, + 9169: 0x00008AAA, + 9170: 0x00008AA5, + 9171: 0x00008AA8, + 9172: 0x00008A98, + 9173: 0x00008A91, + 9174: 0x00008A9A, + 9175: 0x00008AA7, + 9176: 0x00008C6A, + 9177: 0x00008C8D, + 9178: 0x00008C8C, + 9179: 0x00008CD3, + 9180: 0x00008CD1, + 9181: 0x00008CD2, + 9182: 0x00008D6B, + 9183: 0x00008D99, + 9184: 0x00008D95, + 9185: 0x00008DFC, + 9186: 0x00008F14, + 9187: 0x00008F12, + 9188: 0x00008F15, + 9189: 0x00008F13, + 9190: 0x00008FA3, + 9191: 0x00009060, + 9192: 0x00009058, + 9193: 0x0000905C, + 9194: 0x00009063, + 9195: 0x00009059, + 9196: 0x0000905E, + 9197: 0x00009062, + 9198: 0x0000905D, + 9199: 0x0000905B, + 9200: 0x00009119, + 9201: 0x00009118, + 9202: 0x0000911E, + 9203: 0x00009175, + 9204: 0x00009178, + 9205: 0x00009177, + 9206: 0x00009174, + 9207: 0x00009278, + 9208: 0x00009280, + 9209: 0x00009285, + 9210: 0x00009298, + 9211: 0x00009296, + 9212: 0x0000927B, + 9213: 0x00009293, + 9214: 0x0000929C, + 9215: 0x000092A8, + 9216: 0x0000927C, + 9217: 0x00009291, + 9218: 0x000095A1, + 9219: 0x000095A8, + 9220: 0x000095A9, + 9221: 0x000095A3, + 9222: 0x000095A5, + 9223: 0x000095A4, + 9224: 0x00009699, + 9225: 0x0000969C, + 9226: 0x0000969B, + 9227: 0x000096CC, + 9228: 0x000096D2, + 9229: 0x00009700, + 9230: 0x0000977C, + 9231: 0x00009785, + 9232: 0x000097F6, + 9233: 0x00009817, + 9234: 0x00009818, + 9235: 0x000098AF, + 9236: 0x000098B1, + 9237: 0x00009903, + 9238: 0x00009905, + 9239: 0x0000990C, + 9240: 0x00009909, + 9241: 0x000099C1, + 9242: 0x00009AAF, + 9243: 0x00009AB0, + 9244: 0x00009AE6, + 9245: 0x00009B41, + 9246: 0x00009B42, + 9247: 0x00009CF4, + 9248: 0x00009CF6, + 9249: 0x00009CF3, + 9250: 0x00009EBC, + 9251: 0x00009F3B, + 9252: 0x00009F4A, + 9253: 0x00005104, + 9254: 0x00005100, + 9255: 0x000050FB, + 9256: 0x000050F5, + 9257: 0x000050F9, + 9258: 0x00005102, + 9259: 0x00005108, + 9260: 0x00005109, + 9261: 0x00005105, + 9262: 0x000051DC, + 9263: 0x00005287, + 9264: 0x00005288, + 9265: 0x00005289, + 9266: 0x0000528D, + 9267: 0x0000528A, + 9268: 0x000052F0, + 9269: 0x000053B2, + 9270: 0x0000562E, + 9271: 0x0000563B, + 9272: 0x00005639, + 9273: 0x00005632, + 9274: 0x0000563F, + 9275: 0x00005634, + 9276: 0x00005629, + 9277: 0x00005653, + 9278: 0x0000564E, + 9279: 0x00005657, + 9280: 0x00005674, + 9281: 0x00005636, + 9282: 0x0000562F, + 9283: 0x00005630, + 9284: 0x00005880, + 9285: 0x0000589F, + 9286: 0x0000589E, + 9287: 0x000058B3, + 9288: 0x0000589C, + 9289: 0x000058AE, + 9290: 0x000058A9, + 9291: 0x000058A6, + 9292: 0x0000596D, + 9293: 0x00005B09, + 9294: 0x00005AFB, + 9295: 0x00005B0B, + 9296: 0x00005AF5, + 9297: 0x00005B0C, + 9298: 0x00005B08, + 9299: 0x00005BEE, + 9300: 0x00005BEC, + 9301: 0x00005BE9, + 9302: 0x00005BEB, + 9303: 0x00005C64, + 9304: 0x00005C65, + 9305: 0x00005D9D, + 9306: 0x00005D94, + 9307: 0x00005E62, + 9308: 0x00005E5F, + 9309: 0x00005E61, + 9310: 0x00005EE2, + 9311: 0x00005EDA, + 9312: 0x00005EDF, + 9313: 0x00005EDD, + 9314: 0x00005EE3, + 9315: 0x00005EE0, + 9316: 0x00005F48, + 9317: 0x00005F71, + 9318: 0x00005FB7, + 9319: 0x00005FB5, + 9320: 0x00006176, + 9321: 0x00006167, + 9322: 0x0000616E, + 9323: 0x0000615D, + 9324: 0x00006155, + 9325: 0x00006182, + 9326: 0x0000617C, + 9327: 0x00006170, + 9328: 0x0000616B, + 9329: 0x0000617E, + 9330: 0x000061A7, + 9331: 0x00006190, + 9332: 0x000061AB, + 9333: 0x0000618E, + 9334: 0x000061AC, + 9335: 0x0000619A, + 9336: 0x000061A4, + 9337: 0x00006194, + 9338: 0x000061AE, + 9339: 0x0000622E, + 9340: 0x00006469, + 9341: 0x0000646F, + 9342: 0x00006479, + 9343: 0x0000649E, + 9344: 0x000064B2, + 9345: 0x00006488, + 9346: 0x00006490, + 9347: 0x000064B0, + 9348: 0x000064A5, + 9349: 0x00006493, + 9350: 0x00006495, + 9351: 0x000064A9, + 9352: 0x00006492, + 9353: 0x000064AE, + 9354: 0x000064AD, + 9355: 0x000064AB, + 9356: 0x0000649A, + 9357: 0x000064AC, + 9358: 0x00006499, + 9359: 0x000064A2, + 9360: 0x000064B3, + 9361: 0x00006575, + 9362: 0x00006577, + 9363: 0x00006578, + 9364: 0x000066AE, + 9365: 0x000066AB, + 9366: 0x000066B4, + 9367: 0x000066B1, + 9368: 0x00006A23, + 9369: 0x00006A1F, + 9370: 0x000069E8, + 9371: 0x00006A01, + 9372: 0x00006A1E, + 9373: 0x00006A19, + 9374: 0x000069FD, + 9375: 0x00006A21, + 9376: 0x00006A13, + 9377: 0x00006A0A, + 9378: 0x000069F3, + 9379: 0x00006A02, + 9380: 0x00006A05, + 9381: 0x000069ED, + 9382: 0x00006A11, + 9383: 0x00006B50, + 9384: 0x00006B4E, + 9385: 0x00006BA4, + 9386: 0x00006BC5, + 9387: 0x00006BC6, + 9388: 0x00006F3F, + 9389: 0x00006F7C, + 9390: 0x00006F84, + 9391: 0x00006F51, + 9392: 0x00006F66, + 9393: 0x00006F54, + 9394: 0x00006F86, + 9395: 0x00006F6D, + 9396: 0x00006F5B, + 9397: 0x00006F78, + 9398: 0x00006F6E, + 9399: 0x00006F8E, + 9400: 0x00006F7A, + 9401: 0x00006F70, + 9402: 0x00006F64, + 9403: 0x00006F97, + 9404: 0x00006F58, + 9405: 0x00006ED5, + 9406: 0x00006F6F, + 9407: 0x00006F60, + 9408: 0x00006F5F, + 9409: 0x0000719F, + 9410: 0x000071AC, + 9411: 0x000071B1, + 9412: 0x000071A8, + 9413: 0x00007256, + 9414: 0x0000729B, + 9415: 0x0000734E, + 9416: 0x00007357, + 9417: 0x00007469, + 9418: 0x0000748B, + 9419: 0x00007483, + 9420: 0x0000747E, + 9421: 0x00007480, + 9422: 0x0000757F, + 9423: 0x00007620, + 9424: 0x00007629, + 9425: 0x0000761F, + 9426: 0x00007624, + 9427: 0x00007626, + 9428: 0x00007621, + 9429: 0x00007622, + 9430: 0x0000769A, + 9431: 0x000076BA, + 9432: 0x000076E4, + 9433: 0x0000778E, + 9434: 0x00007787, + 9435: 0x0000778C, + 9436: 0x00007791, + 9437: 0x0000778B, + 9438: 0x000078CB, + 9439: 0x000078C5, + 9440: 0x000078BA, + 9441: 0x000078CA, + 9442: 0x000078BE, + 9443: 0x000078D5, + 9444: 0x000078BC, + 9445: 0x000078D0, + 9446: 0x00007A3F, + 9447: 0x00007A3C, + 9448: 0x00007A40, + 9449: 0x00007A3D, + 9450: 0x00007A37, + 9451: 0x00007A3B, + 9452: 0x00007AAF, + 9453: 0x00007AAE, + 9454: 0x00007BAD, + 9455: 0x00007BB1, + 9456: 0x00007BC4, + 9457: 0x00007BB4, + 9458: 0x00007BC6, + 9459: 0x00007BC7, + 9460: 0x00007BC1, + 9461: 0x00007BA0, + 9462: 0x00007BCC, + 9463: 0x00007CCA, + 9464: 0x00007DE0, + 9465: 0x00007DF4, + 9466: 0x00007DEF, + 9467: 0x00007DFB, + 9468: 0x00007DD8, + 9469: 0x00007DEC, + 9470: 0x00007DDD, + 9471: 0x00007DE8, + 9472: 0x00007DE3, + 9473: 0x00007DDA, + 9474: 0x00007DDE, + 9475: 0x00007DE9, + 9476: 0x00007D9E, + 9477: 0x00007DD9, + 9478: 0x00007DF2, + 9479: 0x00007DF9, + 9480: 0x00007F75, + 9481: 0x00007F77, + 9482: 0x00007FAF, + 9483: 0x00007FE9, + 9484: 0x00008026, + 9485: 0x0000819B, + 9486: 0x0000819C, + 9487: 0x0000819D, + 9488: 0x000081A0, + 9489: 0x0000819A, + 9490: 0x00008198, + 9491: 0x00008517, + 9492: 0x0000853D, + 9493: 0x0000851A, + 9494: 0x000084EE, + 9495: 0x0000852C, + 9496: 0x0000852D, + 9497: 0x00008513, + 9498: 0x00008511, + 9499: 0x00008523, + 9500: 0x00008521, + 9501: 0x00008514, + 9502: 0x000084EC, + 9503: 0x00008525, + 9504: 0x000084FF, + 9505: 0x00008506, + 9506: 0x00008782, + 9507: 0x00008774, + 9508: 0x00008776, + 9509: 0x00008760, + 9510: 0x00008766, + 9511: 0x00008778, + 9512: 0x00008768, + 9513: 0x00008759, + 9514: 0x00008757, + 9515: 0x0000874C, + 9516: 0x00008753, + 9517: 0x0000885B, + 9518: 0x0000885D, + 9519: 0x00008910, + 9520: 0x00008907, + 9521: 0x00008912, + 9522: 0x00008913, + 9523: 0x00008915, + 9524: 0x0000890A, + 9525: 0x00008ABC, + 9526: 0x00008AD2, + 9527: 0x00008AC7, + 9528: 0x00008AC4, + 9529: 0x00008A95, + 9530: 0x00008ACB, + 9531: 0x00008AF8, + 9532: 0x00008AB2, + 9533: 0x00008AC9, + 9534: 0x00008AC2, + 9535: 0x00008ABF, + 9536: 0x00008AB0, + 9537: 0x00008AD6, + 9538: 0x00008ACD, + 9539: 0x00008AB6, + 9540: 0x00008AB9, + 9541: 0x00008ADB, + 9542: 0x00008C4C, + 9543: 0x00008C4E, + 9544: 0x00008C6C, + 9545: 0x00008CE0, + 9546: 0x00008CDE, + 9547: 0x00008CE6, + 9548: 0x00008CE4, + 9549: 0x00008CEC, + 9550: 0x00008CED, + 9551: 0x00008CE2, + 9552: 0x00008CE3, + 9553: 0x00008CDC, + 9554: 0x00008CEA, + 9555: 0x00008CE1, + 9556: 0x00008D6D, + 9557: 0x00008D9F, + 9558: 0x00008DA3, + 9559: 0x00008E2B, + 9560: 0x00008E10, + 9561: 0x00008E1D, + 9562: 0x00008E22, + 9563: 0x00008E0F, + 9564: 0x00008E29, + 9565: 0x00008E1F, + 9566: 0x00008E21, + 9567: 0x00008E1E, + 9568: 0x00008EBA, + 9569: 0x00008F1D, + 9570: 0x00008F1B, + 9571: 0x00008F1F, + 9572: 0x00008F29, + 9573: 0x00008F26, + 9574: 0x00008F2A, + 9575: 0x00008F1C, + 9576: 0x00008F1E, + 9577: 0x00008F25, + 9578: 0x00009069, + 9579: 0x0000906E, + 9580: 0x00009068, + 9581: 0x0000906D, + 9582: 0x00009077, + 9583: 0x00009130, + 9584: 0x0000912D, + 9585: 0x00009127, + 9586: 0x00009131, + 9587: 0x00009187, + 9588: 0x00009189, + 9589: 0x0000918B, + 9590: 0x00009183, + 9591: 0x000092C5, + 9592: 0x000092BB, + 9593: 0x000092B7, + 9594: 0x000092EA, + 9595: 0x000092AC, + 9596: 0x000092E4, + 9597: 0x000092C1, + 9598: 0x000092B3, + 9599: 0x000092BC, + 9600: 0x000092D2, + 9601: 0x000092C7, + 9602: 0x000092F0, + 9603: 0x000092B2, + 9604: 0x000095AD, + 9605: 0x000095B1, + 9606: 0x00009704, + 9607: 0x00009706, + 9608: 0x00009707, + 9609: 0x00009709, + 9610: 0x00009760, + 9611: 0x0000978D, + 9612: 0x0000978B, + 9613: 0x0000978F, + 9614: 0x00009821, + 9615: 0x0000982B, + 9616: 0x0000981C, + 9617: 0x000098B3, + 9618: 0x0000990A, + 9619: 0x00009913, + 9620: 0x00009912, + 9621: 0x00009918, + 9622: 0x000099DD, + 9623: 0x000099D0, + 9624: 0x000099DF, + 9625: 0x000099DB, + 9626: 0x000099D1, + 9627: 0x000099D5, + 9628: 0x000099D2, + 9629: 0x000099D9, + 9630: 0x00009AB7, + 9631: 0x00009AEE, + 9632: 0x00009AEF, + 9633: 0x00009B27, + 9634: 0x00009B45, + 9635: 0x00009B44, + 9636: 0x00009B77, + 9637: 0x00009B6F, + 9638: 0x00009D06, + 9639: 0x00009D09, + 9640: 0x00009D03, + 9641: 0x00009EA9, + 9642: 0x00009EBE, + 9643: 0x00009ECE, + 9644: 0x000058A8, + 9645: 0x00009F52, + 9646: 0x00005112, + 9647: 0x00005118, + 9648: 0x00005114, + 9649: 0x00005110, + 9650: 0x00005115, + 9651: 0x00005180, + 9652: 0x000051AA, + 9653: 0x000051DD, + 9654: 0x00005291, + 9655: 0x00005293, + 9656: 0x000052F3, + 9657: 0x00005659, + 9658: 0x0000566B, + 9659: 0x00005679, + 9660: 0x00005669, + 9661: 0x00005664, + 9662: 0x00005678, + 9663: 0x0000566A, + 9664: 0x00005668, + 9665: 0x00005665, + 9666: 0x00005671, + 9667: 0x0000566F, + 9668: 0x0000566C, + 9669: 0x00005662, + 9670: 0x00005676, + 9671: 0x000058C1, + 9672: 0x000058BE, + 9673: 0x000058C7, + 9674: 0x000058C5, + 9675: 0x0000596E, + 9676: 0x00005B1D, + 9677: 0x00005B34, + 9678: 0x00005B78, + 9679: 0x00005BF0, + 9680: 0x00005C0E, + 9681: 0x00005F4A, + 9682: 0x000061B2, + 9683: 0x00006191, + 9684: 0x000061A9, + 9685: 0x0000618A, + 9686: 0x000061CD, + 9687: 0x000061B6, + 9688: 0x000061BE, + 9689: 0x000061CA, + 9690: 0x000061C8, + 9691: 0x00006230, + 9692: 0x000064C5, + 9693: 0x000064C1, + 9694: 0x000064CB, + 9695: 0x000064BB, + 9696: 0x000064BC, + 9697: 0x000064DA, + 9698: 0x000064C4, + 9699: 0x000064C7, + 9700: 0x000064C2, + 9701: 0x000064CD, + 9702: 0x000064BF, + 9703: 0x000064D2, + 9704: 0x000064D4, + 9705: 0x000064BE, + 9706: 0x00006574, + 9707: 0x000066C6, + 9708: 0x000066C9, + 9709: 0x000066B9, + 9710: 0x000066C4, + 9711: 0x000066C7, + 9712: 0x000066B8, + 9713: 0x00006A3D, + 9714: 0x00006A38, + 9715: 0x00006A3A, + 9716: 0x00006A59, + 9717: 0x00006A6B, + 9718: 0x00006A58, + 9719: 0x00006A39, + 9720: 0x00006A44, + 9721: 0x00006A62, + 9722: 0x00006A61, + 9723: 0x00006A4B, + 9724: 0x00006A47, + 9725: 0x00006A35, + 9726: 0x00006A5F, + 9727: 0x00006A48, + 9728: 0x00006B59, + 9729: 0x00006B77, + 9730: 0x00006C05, + 9731: 0x00006FC2, + 9732: 0x00006FB1, + 9733: 0x00006FA1, + 9734: 0x00006FC3, + 9735: 0x00006FA4, + 9736: 0x00006FC1, + 9737: 0x00006FA7, + 9738: 0x00006FB3, + 9739: 0x00006FC0, + 9740: 0x00006FB9, + 9741: 0x00006FB6, + 9742: 0x00006FA6, + 9743: 0x00006FA0, + 9744: 0x00006FB4, + 9745: 0x000071BE, + 9746: 0x000071C9, + 9747: 0x000071D0, + 9748: 0x000071D2, + 9749: 0x000071C8, + 9750: 0x000071D5, + 9751: 0x000071B9, + 9752: 0x000071CE, + 9753: 0x000071D9, + 9754: 0x000071DC, + 9755: 0x000071C3, + 9756: 0x000071C4, + 9757: 0x00007368, + 9758: 0x0000749C, + 9759: 0x000074A3, + 9760: 0x00007498, + 9761: 0x0000749F, + 9762: 0x0000749E, + 9763: 0x000074E2, + 9764: 0x0000750C, + 9765: 0x0000750D, + 9766: 0x00007634, + 9767: 0x00007638, + 9768: 0x0000763A, + 9769: 0x000076E7, + 9770: 0x000076E5, + 9771: 0x000077A0, + 9772: 0x0000779E, + 9773: 0x0000779F, + 9774: 0x000077A5, + 9775: 0x000078E8, + 9776: 0x000078DA, + 9777: 0x000078EC, + 9778: 0x000078E7, + 9779: 0x000079A6, + 9780: 0x00007A4D, + 9781: 0x00007A4E, + 9782: 0x00007A46, + 9783: 0x00007A4C, + 9784: 0x00007A4B, + 9785: 0x00007ABA, + 9786: 0x00007BD9, + 9787: 0x00007C11, + 9788: 0x00007BC9, + 9789: 0x00007BE4, + 9790: 0x00007BDB, + 9791: 0x00007BE1, + 9792: 0x00007BE9, + 9793: 0x00007BE6, + 9794: 0x00007CD5, + 9795: 0x00007CD6, + 9796: 0x00007E0A, + 9797: 0x00007E11, + 9798: 0x00007E08, + 9799: 0x00007E1B, + 9800: 0x00007E23, + 9801: 0x00007E1E, + 9802: 0x00007E1D, + 9803: 0x00007E09, + 9804: 0x00007E10, + 9805: 0x00007F79, + 9806: 0x00007FB2, + 9807: 0x00007FF0, + 9808: 0x00007FF1, + 9809: 0x00007FEE, + 9810: 0x00008028, + 9811: 0x000081B3, + 9812: 0x000081A9, + 9813: 0x000081A8, + 9814: 0x000081FB, + 9815: 0x00008208, + 9816: 0x00008258, + 9817: 0x00008259, + 9818: 0x0000854A, + 9819: 0x00008559, + 9820: 0x00008548, + 9821: 0x00008568, + 9822: 0x00008569, + 9823: 0x00008543, + 9824: 0x00008549, + 9825: 0x0000856D, + 9826: 0x0000856A, + 9827: 0x0000855E, + 9828: 0x00008783, + 9829: 0x0000879F, + 9830: 0x0000879E, + 9831: 0x000087A2, + 9832: 0x0000878D, + 9833: 0x00008861, + 9834: 0x0000892A, + 9835: 0x00008932, + 9836: 0x00008925, + 9837: 0x0000892B, + 9838: 0x00008921, + 9839: 0x000089AA, + 9840: 0x000089A6, + 9841: 0x00008AE6, + 9842: 0x00008AFA, + 9843: 0x00008AEB, + 9844: 0x00008AF1, + 9845: 0x00008B00, + 9846: 0x00008ADC, + 9847: 0x00008AE7, + 9848: 0x00008AEE, + 9849: 0x00008AFE, + 9850: 0x00008B01, + 9851: 0x00008B02, + 9852: 0x00008AF7, + 9853: 0x00008AED, + 9854: 0x00008AF3, + 9855: 0x00008AF6, + 9856: 0x00008AFC, + 9857: 0x00008C6B, + 9858: 0x00008C6D, + 9859: 0x00008C93, + 9860: 0x00008CF4, + 9861: 0x00008E44, + 9862: 0x00008E31, + 9863: 0x00008E34, + 9864: 0x00008E42, + 9865: 0x00008E39, + 9866: 0x00008E35, + 9867: 0x00008F3B, + 9868: 0x00008F2F, + 9869: 0x00008F38, + 9870: 0x00008F33, + 9871: 0x00008FA8, + 9872: 0x00008FA6, + 9873: 0x00009075, + 9874: 0x00009074, + 9875: 0x00009078, + 9876: 0x00009072, + 9877: 0x0000907C, + 9878: 0x0000907A, + 9879: 0x00009134, + 9880: 0x00009192, + 9881: 0x00009320, + 9882: 0x00009336, + 9883: 0x000092F8, + 9884: 0x00009333, + 9885: 0x0000932F, + 9886: 0x00009322, + 9887: 0x000092FC, + 9888: 0x0000932B, + 9889: 0x00009304, + 9890: 0x0000931A, + 9891: 0x00009310, + 9892: 0x00009326, + 9893: 0x00009321, + 9894: 0x00009315, + 9895: 0x0000932E, + 9896: 0x00009319, + 9897: 0x000095BB, + 9898: 0x000096A7, + 9899: 0x000096A8, + 9900: 0x000096AA, + 9901: 0x000096D5, + 9902: 0x0000970E, + 9903: 0x00009711, + 9904: 0x00009716, + 9905: 0x0000970D, + 9906: 0x00009713, + 9907: 0x0000970F, + 9908: 0x0000975B, + 9909: 0x0000975C, + 9910: 0x00009766, + 9911: 0x00009798, + 9912: 0x00009830, + 9913: 0x00009838, + 9914: 0x0000983B, + 9915: 0x00009837, + 9916: 0x0000982D, + 9917: 0x00009839, + 9918: 0x00009824, + 9919: 0x00009910, + 9920: 0x00009928, + 9921: 0x0000991E, + 9922: 0x0000991B, + 9923: 0x00009921, + 9924: 0x0000991A, + 9925: 0x000099ED, + 9926: 0x000099E2, + 9927: 0x000099F1, + 9928: 0x00009AB8, + 9929: 0x00009ABC, + 9930: 0x00009AFB, + 9931: 0x00009AED, + 9932: 0x00009B28, + 9933: 0x00009B91, + 9934: 0x00009D15, + 9935: 0x00009D23, + 9936: 0x00009D26, + 9937: 0x00009D28, + 9938: 0x00009D12, + 9939: 0x00009D1B, + 9940: 0x00009ED8, + 9941: 0x00009ED4, + 9942: 0x00009F8D, + 9943: 0x00009F9C, + 9944: 0x0000512A, + 9945: 0x0000511F, + 9946: 0x00005121, + 9947: 0x00005132, + 9948: 0x000052F5, + 9949: 0x0000568E, + 9950: 0x00005680, + 9951: 0x00005690, + 9952: 0x00005685, + 9953: 0x00005687, + 9954: 0x0000568F, + 9955: 0x000058D5, + 9956: 0x000058D3, + 9957: 0x000058D1, + 9958: 0x000058CE, + 9959: 0x00005B30, + 9960: 0x00005B2A, + 9961: 0x00005B24, + 9962: 0x00005B7A, + 9963: 0x00005C37, + 9964: 0x00005C68, + 9965: 0x00005DBC, + 9966: 0x00005DBA, + 9967: 0x00005DBD, + 9968: 0x00005DB8, + 9969: 0x00005E6B, + 9970: 0x00005F4C, + 9971: 0x00005FBD, + 9972: 0x000061C9, + 9973: 0x000061C2, + 9974: 0x000061C7, + 9975: 0x000061E6, + 9976: 0x000061CB, + 9977: 0x00006232, + 9978: 0x00006234, + 9979: 0x000064CE, + 9980: 0x000064CA, + 9981: 0x000064D8, + 9982: 0x000064E0, + 9983: 0x000064F0, + 9984: 0x000064E6, + 9985: 0x000064EC, + 9986: 0x000064F1, + 9987: 0x000064E2, + 9988: 0x000064ED, + 9989: 0x00006582, + 9990: 0x00006583, + 9991: 0x000066D9, + 9992: 0x000066D6, + 9993: 0x00006A80, + 9994: 0x00006A94, + 9995: 0x00006A84, + 9996: 0x00006AA2, + 9997: 0x00006A9C, + 9998: 0x00006ADB, + 9999: 0x00006AA3, + 10000: 0x00006A7E, + 10001: 0x00006A97, + 10002: 0x00006A90, + 10003: 0x00006AA0, + 10004: 0x00006B5C, + 10005: 0x00006BAE, + 10006: 0x00006BDA, + 10007: 0x00006C08, + 10008: 0x00006FD8, + 10009: 0x00006FF1, + 10010: 0x00006FDF, + 10011: 0x00006FE0, + 10012: 0x00006FDB, + 10013: 0x00006FE4, + 10014: 0x00006FEB, + 10015: 0x00006FEF, + 10016: 0x00006F80, + 10017: 0x00006FEC, + 10018: 0x00006FE1, + 10019: 0x00006FE9, + 10020: 0x00006FD5, + 10021: 0x00006FEE, + 10022: 0x00006FF0, + 10023: 0x000071E7, + 10024: 0x000071DF, + 10025: 0x000071EE, + 10026: 0x000071E6, + 10027: 0x000071E5, + 10028: 0x000071ED, + 10029: 0x000071EC, + 10030: 0x000071F4, + 10031: 0x000071E0, + 10032: 0x00007235, + 10033: 0x00007246, + 10034: 0x00007370, + 10035: 0x00007372, + 10036: 0x000074A9, + 10037: 0x000074B0, + 10038: 0x000074A6, + 10039: 0x000074A8, + 10040: 0x00007646, + 10041: 0x00007642, + 10042: 0x0000764C, + 10043: 0x000076EA, + 10044: 0x000077B3, + 10045: 0x000077AA, + 10046: 0x000077B0, + 10047: 0x000077AC, + 10048: 0x000077A7, + 10049: 0x000077AD, + 10050: 0x000077EF, + 10051: 0x000078F7, + 10052: 0x000078FA, + 10053: 0x000078F4, + 10054: 0x000078EF, + 10055: 0x00007901, + 10056: 0x000079A7, + 10057: 0x000079AA, + 10058: 0x00007A57, + 10059: 0x00007ABF, + 10060: 0x00007C07, + 10061: 0x00007C0D, + 10062: 0x00007BFE, + 10063: 0x00007BF7, + 10064: 0x00007C0C, + 10065: 0x00007BE0, + 10066: 0x00007CE0, + 10067: 0x00007CDC, + 10068: 0x00007CDE, + 10069: 0x00007CE2, + 10070: 0x00007CDF, + 10071: 0x00007CD9, + 10072: 0x00007CDD, + 10073: 0x00007E2E, + 10074: 0x00007E3E, + 10075: 0x00007E46, + 10076: 0x00007E37, + 10077: 0x00007E32, + 10078: 0x00007E43, + 10079: 0x00007E2B, + 10080: 0x00007E3D, + 10081: 0x00007E31, + 10082: 0x00007E45, + 10083: 0x00007E41, + 10084: 0x00007E34, + 10085: 0x00007E39, + 10086: 0x00007E48, + 10087: 0x00007E35, + 10088: 0x00007E3F, + 10089: 0x00007E2F, + 10090: 0x00007F44, + 10091: 0x00007FF3, + 10092: 0x00007FFC, + 10093: 0x00008071, + 10094: 0x00008072, + 10095: 0x00008070, + 10096: 0x0000806F, + 10097: 0x00008073, + 10098: 0x000081C6, + 10099: 0x000081C3, + 10100: 0x000081BA, + 10101: 0x000081C2, + 10102: 0x000081C0, + 10103: 0x000081BF, + 10104: 0x000081BD, + 10105: 0x000081C9, + 10106: 0x000081BE, + 10107: 0x000081E8, + 10108: 0x00008209, + 10109: 0x00008271, + 10110: 0x000085AA, + 10111: 0x00008584, + 10112: 0x0000857E, + 10113: 0x0000859C, + 10114: 0x00008591, + 10115: 0x00008594, + 10116: 0x000085AF, + 10117: 0x0000859B, + 10118: 0x00008587, + 10119: 0x000085A8, + 10120: 0x0000858A, + 10121: 0x00008667, + 10122: 0x000087C0, + 10123: 0x000087D1, + 10124: 0x000087B3, + 10125: 0x000087D2, + 10126: 0x000087C6, + 10127: 0x000087AB, + 10128: 0x000087BB, + 10129: 0x000087BA, + 10130: 0x000087C8, + 10131: 0x000087CB, + 10132: 0x0000893B, + 10133: 0x00008936, + 10134: 0x00008944, + 10135: 0x00008938, + 10136: 0x0000893D, + 10137: 0x000089AC, + 10138: 0x00008B0E, + 10139: 0x00008B17, + 10140: 0x00008B19, + 10141: 0x00008B1B, + 10142: 0x00008B0A, + 10143: 0x00008B20, + 10144: 0x00008B1D, + 10145: 0x00008B04, + 10146: 0x00008B10, + 10147: 0x00008C41, + 10148: 0x00008C3F, + 10149: 0x00008C73, + 10150: 0x00008CFA, + 10151: 0x00008CFD, + 10152: 0x00008CFC, + 10153: 0x00008CF8, + 10154: 0x00008CFB, + 10155: 0x00008DA8, + 10156: 0x00008E49, + 10157: 0x00008E4B, + 10158: 0x00008E48, + 10159: 0x00008E4A, + 10160: 0x00008F44, + 10161: 0x00008F3E, + 10162: 0x00008F42, + 10163: 0x00008F45, + 10164: 0x00008F3F, + 10165: 0x0000907F, + 10166: 0x0000907D, + 10167: 0x00009084, + 10168: 0x00009081, + 10169: 0x00009082, + 10170: 0x00009080, + 10171: 0x00009139, + 10172: 0x000091A3, + 10173: 0x0000919E, + 10174: 0x0000919C, + 10175: 0x0000934D, + 10176: 0x00009382, + 10177: 0x00009328, + 10178: 0x00009375, + 10179: 0x0000934A, + 10180: 0x00009365, + 10181: 0x0000934B, + 10182: 0x00009318, + 10183: 0x0000937E, + 10184: 0x0000936C, + 10185: 0x0000935B, + 10186: 0x00009370, + 10187: 0x0000935A, + 10188: 0x00009354, + 10189: 0x000095CA, + 10190: 0x000095CB, + 10191: 0x000095CC, + 10192: 0x000095C8, + 10193: 0x000095C6, + 10194: 0x000096B1, + 10195: 0x000096B8, + 10196: 0x000096D6, + 10197: 0x0000971C, + 10198: 0x0000971E, + 10199: 0x000097A0, + 10200: 0x000097D3, + 10201: 0x00009846, + 10202: 0x000098B6, + 10203: 0x00009935, + 10204: 0x00009A01, + 10205: 0x000099FF, + 10206: 0x00009BAE, + 10207: 0x00009BAB, + 10208: 0x00009BAA, + 10209: 0x00009BAD, + 10210: 0x00009D3B, + 10211: 0x00009D3F, + 10212: 0x00009E8B, + 10213: 0x00009ECF, + 10214: 0x00009EDE, + 10215: 0x00009EDC, + 10216: 0x00009EDD, + 10217: 0x00009EDB, + 10218: 0x00009F3E, + 10219: 0x00009F4B, + 10220: 0x000053E2, + 10221: 0x00005695, + 10222: 0x000056AE, + 10223: 0x000058D9, + 10224: 0x000058D8, + 10225: 0x00005B38, + 10226: 0x00005F5D, + 10227: 0x000061E3, + 10228: 0x00006233, + 10229: 0x000064F4, + 10230: 0x000064F2, + 10231: 0x000064FE, + 10232: 0x00006506, + 10233: 0x000064FA, + 10234: 0x000064FB, + 10235: 0x000064F7, + 10236: 0x000065B7, + 10237: 0x000066DC, + 10238: 0x00006726, + 10239: 0x00006AB3, + 10240: 0x00006AAC, + 10241: 0x00006AC3, + 10242: 0x00006ABB, + 10243: 0x00006AB8, + 10244: 0x00006AC2, + 10245: 0x00006AAE, + 10246: 0x00006AAF, + 10247: 0x00006B5F, + 10248: 0x00006B78, + 10249: 0x00006BAF, + 10250: 0x00007009, + 10251: 0x0000700B, + 10252: 0x00006FFE, + 10253: 0x00007006, + 10254: 0x00006FFA, + 10255: 0x00007011, + 10256: 0x0000700F, + 10257: 0x000071FB, + 10258: 0x000071FC, + 10259: 0x000071FE, + 10260: 0x000071F8, + 10261: 0x00007377, + 10262: 0x00007375, + 10263: 0x000074A7, + 10264: 0x000074BF, + 10265: 0x00007515, + 10266: 0x00007656, + 10267: 0x00007658, + 10268: 0x00007652, + 10269: 0x000077BD, + 10270: 0x000077BF, + 10271: 0x000077BB, + 10272: 0x000077BC, + 10273: 0x0000790E, + 10274: 0x000079AE, + 10275: 0x00007A61, + 10276: 0x00007A62, + 10277: 0x00007A60, + 10278: 0x00007AC4, + 10279: 0x00007AC5, + 10280: 0x00007C2B, + 10281: 0x00007C27, + 10282: 0x00007C2A, + 10283: 0x00007C1E, + 10284: 0x00007C23, + 10285: 0x00007C21, + 10286: 0x00007CE7, + 10287: 0x00007E54, + 10288: 0x00007E55, + 10289: 0x00007E5E, + 10290: 0x00007E5A, + 10291: 0x00007E61, + 10292: 0x00007E52, + 10293: 0x00007E59, + 10294: 0x00007F48, + 10295: 0x00007FF9, + 10296: 0x00007FFB, + 10297: 0x00008077, + 10298: 0x00008076, + 10299: 0x000081CD, + 10300: 0x000081CF, + 10301: 0x0000820A, + 10302: 0x000085CF, + 10303: 0x000085A9, + 10304: 0x000085CD, + 10305: 0x000085D0, + 10306: 0x000085C9, + 10307: 0x000085B0, + 10308: 0x000085BA, + 10309: 0x000085B9, + 10310: 0x000085A6, + 10311: 0x000087EF, + 10312: 0x000087EC, + 10313: 0x000087F2, + 10314: 0x000087E0, + 10315: 0x00008986, + 10316: 0x000089B2, + 10317: 0x000089F4, + 10318: 0x00008B28, + 10319: 0x00008B39, + 10320: 0x00008B2C, + 10321: 0x00008B2B, + 10322: 0x00008C50, + 10323: 0x00008D05, + 10324: 0x00008E59, + 10325: 0x00008E63, + 10326: 0x00008E66, + 10327: 0x00008E64, + 10328: 0x00008E5F, + 10329: 0x00008E55, + 10330: 0x00008EC0, + 10331: 0x00008F49, + 10332: 0x00008F4D, + 10333: 0x00009087, + 10334: 0x00009083, + 10335: 0x00009088, + 10336: 0x000091AB, + 10337: 0x000091AC, + 10338: 0x000091D0, + 10339: 0x00009394, + 10340: 0x0000938A, + 10341: 0x00009396, + 10342: 0x000093A2, + 10343: 0x000093B3, + 10344: 0x000093AE, + 10345: 0x000093AC, + 10346: 0x000093B0, + 10347: 0x00009398, + 10348: 0x0000939A, + 10349: 0x00009397, + 10350: 0x000095D4, + 10351: 0x000095D6, + 10352: 0x000095D0, + 10353: 0x000095D5, + 10354: 0x000096E2, + 10355: 0x000096DC, + 10356: 0x000096D9, + 10357: 0x000096DB, + 10358: 0x000096DE, + 10359: 0x00009724, + 10360: 0x000097A3, + 10361: 0x000097A6, + 10362: 0x000097AD, + 10363: 0x000097F9, + 10364: 0x0000984D, + 10365: 0x0000984F, + 10366: 0x0000984C, + 10367: 0x0000984E, + 10368: 0x00009853, + 10369: 0x000098BA, + 10370: 0x0000993E, + 10371: 0x0000993F, + 10372: 0x0000993D, + 10373: 0x0000992E, + 10374: 0x000099A5, + 10375: 0x00009A0E, + 10376: 0x00009AC1, + 10377: 0x00009B03, + 10378: 0x00009B06, + 10379: 0x00009B4F, + 10380: 0x00009B4E, + 10381: 0x00009B4D, + 10382: 0x00009BCA, + 10383: 0x00009BC9, + 10384: 0x00009BFD, + 10385: 0x00009BC8, + 10386: 0x00009BC0, + 10387: 0x00009D51, + 10388: 0x00009D5D, + 10389: 0x00009D60, + 10390: 0x00009EE0, + 10391: 0x00009F15, + 10392: 0x00009F2C, + 10393: 0x00005133, + 10394: 0x000056A5, + 10395: 0x000058DE, + 10396: 0x000058DF, + 10397: 0x000058E2, + 10398: 0x00005BF5, + 10399: 0x00009F90, + 10400: 0x00005EEC, + 10401: 0x000061F2, + 10402: 0x000061F7, + 10403: 0x000061F6, + 10404: 0x000061F5, + 10405: 0x00006500, + 10406: 0x0000650F, + 10407: 0x000066E0, + 10408: 0x000066DD, + 10409: 0x00006AE5, + 10410: 0x00006ADD, + 10411: 0x00006ADA, + 10412: 0x00006AD3, + 10413: 0x0000701B, + 10414: 0x0000701F, + 10415: 0x00007028, + 10416: 0x0000701A, + 10417: 0x0000701D, + 10418: 0x00007015, + 10419: 0x00007018, + 10420: 0x00007206, + 10421: 0x0000720D, + 10422: 0x00007258, + 10423: 0x000072A2, + 10424: 0x00007378, + 10425: 0x0000737A, + 10426: 0x000074BD, + 10427: 0x000074CA, + 10428: 0x000074E3, + 10429: 0x00007587, + 10430: 0x00007586, + 10431: 0x0000765F, + 10432: 0x00007661, + 10433: 0x000077C7, + 10434: 0x00007919, + 10435: 0x000079B1, + 10436: 0x00007A6B, + 10437: 0x00007A69, + 10438: 0x00007C3E, + 10439: 0x00007C3F, + 10440: 0x00007C38, + 10441: 0x00007C3D, + 10442: 0x00007C37, + 10443: 0x00007C40, + 10444: 0x00007E6B, + 10445: 0x00007E6D, + 10446: 0x00007E79, + 10447: 0x00007E69, + 10448: 0x00007E6A, + 10449: 0x00007F85, + 10450: 0x00007E73, + 10451: 0x00007FB6, + 10452: 0x00007FB9, + 10453: 0x00007FB8, + 10454: 0x000081D8, + 10455: 0x000085E9, + 10456: 0x000085DD, + 10457: 0x000085EA, + 10458: 0x000085D5, + 10459: 0x000085E4, + 10460: 0x000085E5, + 10461: 0x000085F7, + 10462: 0x000087FB, + 10463: 0x00008805, + 10464: 0x0000880D, + 10465: 0x000087F9, + 10466: 0x000087FE, + 10467: 0x00008960, + 10468: 0x0000895F, + 10469: 0x00008956, + 10470: 0x0000895E, + 10471: 0x00008B41, + 10472: 0x00008B5C, + 10473: 0x00008B58, + 10474: 0x00008B49, + 10475: 0x00008B5A, + 10476: 0x00008B4E, + 10477: 0x00008B4F, + 10478: 0x00008B46, + 10479: 0x00008B59, + 10480: 0x00008D08, + 10481: 0x00008D0A, + 10482: 0x00008E7C, + 10483: 0x00008E72, + 10484: 0x00008E87, + 10485: 0x00008E76, + 10486: 0x00008E6C, + 10487: 0x00008E7A, + 10488: 0x00008E74, + 10489: 0x00008F54, + 10490: 0x00008F4E, + 10491: 0x00008FAD, + 10492: 0x0000908A, + 10493: 0x0000908B, + 10494: 0x000091B1, + 10495: 0x000091AE, + 10496: 0x000093E1, + 10497: 0x000093D1, + 10498: 0x000093DF, + 10499: 0x000093C3, + 10500: 0x000093C8, + 10501: 0x000093DC, + 10502: 0x000093DD, + 10503: 0x000093D6, + 10504: 0x000093E2, + 10505: 0x000093CD, + 10506: 0x000093D8, + 10507: 0x000093E4, + 10508: 0x000093D7, + 10509: 0x000093E8, + 10510: 0x000095DC, + 10511: 0x000096B4, + 10512: 0x000096E3, + 10513: 0x0000972A, + 10514: 0x00009727, + 10515: 0x00009761, + 10516: 0x000097DC, + 10517: 0x000097FB, + 10518: 0x0000985E, + 10519: 0x00009858, + 10520: 0x0000985B, + 10521: 0x000098BC, + 10522: 0x00009945, + 10523: 0x00009949, + 10524: 0x00009A16, + 10525: 0x00009A19, + 10526: 0x00009B0D, + 10527: 0x00009BE8, + 10528: 0x00009BE7, + 10529: 0x00009BD6, + 10530: 0x00009BDB, + 10531: 0x00009D89, + 10532: 0x00009D61, + 10533: 0x00009D72, + 10534: 0x00009D6A, + 10535: 0x00009D6C, + 10536: 0x00009E92, + 10537: 0x00009E97, + 10538: 0x00009E93, + 10539: 0x00009EB4, + 10540: 0x000052F8, + 10541: 0x000056A8, + 10542: 0x000056B7, + 10543: 0x000056B6, + 10544: 0x000056B4, + 10545: 0x000056BC, + 10546: 0x000058E4, + 10547: 0x00005B40, + 10548: 0x00005B43, + 10549: 0x00005B7D, + 10550: 0x00005BF6, + 10551: 0x00005DC9, + 10552: 0x000061F8, + 10553: 0x000061FA, + 10554: 0x00006518, + 10555: 0x00006514, + 10556: 0x00006519, + 10557: 0x000066E6, + 10558: 0x00006727, + 10559: 0x00006AEC, + 10560: 0x0000703E, + 10561: 0x00007030, + 10562: 0x00007032, + 10563: 0x00007210, + 10564: 0x0000737B, + 10565: 0x000074CF, + 10566: 0x00007662, + 10567: 0x00007665, + 10568: 0x00007926, + 10569: 0x0000792A, + 10570: 0x0000792C, + 10571: 0x0000792B, + 10572: 0x00007AC7, + 10573: 0x00007AF6, + 10574: 0x00007C4C, + 10575: 0x00007C43, + 10576: 0x00007C4D, + 10577: 0x00007CEF, + 10578: 0x00007CF0, + 10579: 0x00008FAE, + 10580: 0x00007E7D, + 10581: 0x00007E7C, + 10582: 0x00007E82, + 10583: 0x00007F4C, + 10584: 0x00008000, + 10585: 0x000081DA, + 10586: 0x00008266, + 10587: 0x000085FB, + 10588: 0x000085F9, + 10589: 0x00008611, + 10590: 0x000085FA, + 10591: 0x00008606, + 10592: 0x0000860B, + 10593: 0x00008607, + 10594: 0x0000860A, + 10595: 0x00008814, + 10596: 0x00008815, + 10597: 0x00008964, + 10598: 0x000089BA, + 10599: 0x000089F8, + 10600: 0x00008B70, + 10601: 0x00008B6C, + 10602: 0x00008B66, + 10603: 0x00008B6F, + 10604: 0x00008B5F, + 10605: 0x00008B6B, + 10606: 0x00008D0F, + 10607: 0x00008D0D, + 10608: 0x00008E89, + 10609: 0x00008E81, + 10610: 0x00008E85, + 10611: 0x00008E82, + 10612: 0x000091B4, + 10613: 0x000091CB, + 10614: 0x00009418, + 10615: 0x00009403, + 10616: 0x000093FD, + 10617: 0x000095E1, + 10618: 0x00009730, + 10619: 0x000098C4, + 10620: 0x00009952, + 10621: 0x00009951, + 10622: 0x000099A8, + 10623: 0x00009A2B, + 10624: 0x00009A30, + 10625: 0x00009A37, + 10626: 0x00009A35, + 10627: 0x00009C13, + 10628: 0x00009C0D, + 10629: 0x00009E79, + 10630: 0x00009EB5, + 10631: 0x00009EE8, + 10632: 0x00009F2F, + 10633: 0x00009F5F, + 10634: 0x00009F63, + 10635: 0x00009F61, + 10636: 0x00005137, + 10637: 0x00005138, + 10638: 0x000056C1, + 10639: 0x000056C0, + 10640: 0x000056C2, + 10641: 0x00005914, + 10642: 0x00005C6C, + 10643: 0x00005DCD, + 10644: 0x000061FC, + 10645: 0x000061FE, + 10646: 0x0000651D, + 10647: 0x0000651C, + 10648: 0x00006595, + 10649: 0x000066E9, + 10650: 0x00006AFB, + 10651: 0x00006B04, + 10652: 0x00006AFA, + 10653: 0x00006BB2, + 10654: 0x0000704C, + 10655: 0x0000721B, + 10656: 0x000072A7, + 10657: 0x000074D6, + 10658: 0x000074D4, + 10659: 0x00007669, + 10660: 0x000077D3, + 10661: 0x00007C50, + 10662: 0x00007E8F, + 10663: 0x00007E8C, + 10664: 0x00007FBC, + 10665: 0x00008617, + 10666: 0x0000862D, + 10667: 0x0000861A, + 10668: 0x00008823, + 10669: 0x00008822, + 10670: 0x00008821, + 10671: 0x0000881F, + 10672: 0x0000896A, + 10673: 0x0000896C, + 10674: 0x000089BD, + 10675: 0x00008B74, + 10676: 0x00008B77, + 10677: 0x00008B7D, + 10678: 0x00008D13, + 10679: 0x00008E8A, + 10680: 0x00008E8D, + 10681: 0x00008E8B, + 10682: 0x00008F5F, + 10683: 0x00008FAF, + 10684: 0x000091BA, + 10685: 0x0000942E, + 10686: 0x00009433, + 10687: 0x00009435, + 10688: 0x0000943A, + 10689: 0x00009438, + 10690: 0x00009432, + 10691: 0x0000942B, + 10692: 0x000095E2, + 10693: 0x00009738, + 10694: 0x00009739, + 10695: 0x00009732, + 10696: 0x000097FF, + 10697: 0x00009867, + 10698: 0x00009865, + 10699: 0x00009957, + 10700: 0x00009A45, + 10701: 0x00009A43, + 10702: 0x00009A40, + 10703: 0x00009A3E, + 10704: 0x00009ACF, + 10705: 0x00009B54, + 10706: 0x00009B51, + 10707: 0x00009C2D, + 10708: 0x00009C25, + 10709: 0x00009DAF, + 10710: 0x00009DB4, + 10711: 0x00009DC2, + 10712: 0x00009DB8, + 10713: 0x00009E9D, + 10714: 0x00009EEF, + 10715: 0x00009F19, + 10716: 0x00009F5C, + 10717: 0x00009F66, + 10718: 0x00009F67, + 10719: 0x0000513C, + 10720: 0x0000513B, + 10721: 0x000056C8, + 10722: 0x000056CA, + 10723: 0x000056C9, + 10724: 0x00005B7F, + 10725: 0x00005DD4, + 10726: 0x00005DD2, + 10727: 0x00005F4E, + 10728: 0x000061FF, + 10729: 0x00006524, + 10730: 0x00006B0A, + 10731: 0x00006B61, + 10732: 0x00007051, + 10733: 0x00007058, + 10734: 0x00007380, + 10735: 0x000074E4, + 10736: 0x0000758A, + 10737: 0x0000766E, + 10738: 0x0000766C, + 10739: 0x000079B3, + 10740: 0x00007C60, + 10741: 0x00007C5F, + 10742: 0x0000807E, + 10743: 0x0000807D, + 10744: 0x000081DF, + 10745: 0x00008972, + 10746: 0x0000896F, + 10747: 0x000089FC, + 10748: 0x00008B80, + 10749: 0x00008D16, + 10750: 0x00008D17, + 10751: 0x00008E91, + 10752: 0x00008E93, + 10753: 0x00008F61, + 10754: 0x00009148, + 10755: 0x00009444, + 10756: 0x00009451, + 10757: 0x00009452, + 10758: 0x0000973D, + 10759: 0x0000973E, + 10760: 0x000097C3, + 10761: 0x000097C1, + 10762: 0x0000986B, + 10763: 0x00009955, + 10764: 0x00009A55, + 10765: 0x00009A4D, + 10766: 0x00009AD2, + 10767: 0x00009B1A, + 10768: 0x00009C49, + 10769: 0x00009C31, + 10770: 0x00009C3E, + 10771: 0x00009C3B, + 10772: 0x00009DD3, + 10773: 0x00009DD7, + 10774: 0x00009F34, + 10775: 0x00009F6C, + 10776: 0x00009F6A, + 10777: 0x00009F94, + 10778: 0x000056CC, + 10779: 0x00005DD6, + 10780: 0x00006200, + 10781: 0x00006523, + 10782: 0x0000652B, + 10783: 0x0000652A, + 10784: 0x000066EC, + 10785: 0x00006B10, + 10786: 0x000074DA, + 10787: 0x00007ACA, + 10788: 0x00007C64, + 10789: 0x00007C63, + 10790: 0x00007C65, + 10791: 0x00007E93, + 10792: 0x00007E96, + 10793: 0x00007E94, + 10794: 0x000081E2, + 10795: 0x00008638, + 10796: 0x0000863F, + 10797: 0x00008831, + 10798: 0x00008B8A, + 10799: 0x00009090, + 10800: 0x0000908F, + 10801: 0x00009463, + 10802: 0x00009460, + 10803: 0x00009464, + 10804: 0x00009768, + 10805: 0x0000986F, + 10806: 0x0000995C, + 10807: 0x00009A5A, + 10808: 0x00009A5B, + 10809: 0x00009A57, + 10810: 0x00009AD3, + 10811: 0x00009AD4, + 10812: 0x00009AD1, + 10813: 0x00009C54, + 10814: 0x00009C57, + 10815: 0x00009C56, + 10816: 0x00009DE5, + 10817: 0x00009E9F, + 10818: 0x00009EF4, + 10819: 0x000056D1, + 10820: 0x000058E9, + 10821: 0x0000652C, + 10822: 0x0000705E, + 10823: 0x00007671, + 10824: 0x00007672, + 10825: 0x000077D7, + 10826: 0x00007F50, + 10827: 0x00007F88, + 10828: 0x00008836, + 10829: 0x00008839, + 10830: 0x00008862, + 10831: 0x00008B93, + 10832: 0x00008B92, + 10833: 0x00008B96, + 10834: 0x00008277, + 10835: 0x00008D1B, + 10836: 0x000091C0, + 10837: 0x0000946A, + 10838: 0x00009742, + 10839: 0x00009748, + 10840: 0x00009744, + 10841: 0x000097C6, + 10842: 0x00009870, + 10843: 0x00009A5F, + 10844: 0x00009B22, + 10845: 0x00009B58, + 10846: 0x00009C5F, + 10847: 0x00009DF9, + 10848: 0x00009DFA, + 10849: 0x00009E7C, + 10850: 0x00009E7D, + 10851: 0x00009F07, + 10852: 0x00009F77, + 10853: 0x00009F72, + 10854: 0x00005EF3, + 10855: 0x00006B16, + 10856: 0x00007063, + 10857: 0x00007C6C, + 10858: 0x00007C6E, + 10859: 0x0000883B, + 10860: 0x000089C0, + 10861: 0x00008EA1, + 10862: 0x000091C1, + 10863: 0x00009472, + 10864: 0x00009470, + 10865: 0x00009871, + 10866: 0x0000995E, + 10867: 0x00009AD6, + 10868: 0x00009B23, + 10869: 0x00009ECC, + 10870: 0x00007064, + 10871: 0x000077DA, + 10872: 0x00008B9A, + 10873: 0x00009477, + 10874: 0x000097C9, + 10875: 0x00009A62, + 10876: 0x00009A65, + 10877: 0x00007E9C, + 10878: 0x00008B9C, + 10879: 0x00008EAA, + 10880: 0x000091C5, + 10881: 0x0000947D, + 10882: 0x0000947E, + 10883: 0x0000947C, + 10884: 0x00009C77, + 10885: 0x00009C78, + 10886: 0x00009EF7, + 10887: 0x00008C54, + 10888: 0x0000947F, + 10889: 0x00009E1A, + 10890: 0x00007228, + 10891: 0x00009A6A, + 10892: 0x00009B31, + 10893: 0x00009E1B, + 10894: 0x00009E1E, + 10895: 0x00007C72, + 10896: 0x00002460, + 10897: 0x00002461, + 10898: 0x00002462, + 10899: 0x00002463, + 10900: 0x00002464, + 10901: 0x00002465, + 10902: 0x00002466, + 10903: 0x00002467, + 10904: 0x00002468, + 10905: 0x00002469, + 10906: 0x00002474, + 10907: 0x00002475, + 10908: 0x00002476, + 10909: 0x00002477, + 10910: 0x00002478, + 10911: 0x00002479, + 10912: 0x0000247A, + 10913: 0x0000247B, + 10914: 0x0000247C, + 10915: 0x0000247D, + 10916: 0x00002170, + 10917: 0x00002171, + 10918: 0x00002172, + 10919: 0x00002173, + 10920: 0x00002174, + 10921: 0x00002175, + 10922: 0x00002176, + 10923: 0x00002177, + 10924: 0x00002178, + 10925: 0x00002179, + 10926: 0x00004E36, + 10927: 0x00004E3F, + 10928: 0x00004E85, + 10929: 0x00004EA0, + 10930: 0x00005182, + 10931: 0x00005196, + 10932: 0x000051AB, + 10933: 0x000052F9, + 10934: 0x00005338, + 10935: 0x00005369, + 10936: 0x000053B6, + 10937: 0x0000590A, + 10938: 0x00005B80, + 10939: 0x00005DDB, + 10940: 0x00002F33, + 10941: 0x00005E7F, + 10942: 0x00005EF4, + 10943: 0x00005F50, + 10944: 0x00005F61, + 10945: 0x00006534, + 10946: 0x000065E0, + 10947: 0x00007592, + 10948: 0x00007676, + 10949: 0x00008FB5, + 10950: 0x000096B6, + 10951: 0x000000A8, + 10952: 0x000002C6, + 10953: 0x000030FD, + 10954: 0x000030FE, + 10955: 0x0000309D, + 10956: 0x0000309E, + 10957: 0x00003003, + 10958: 0x00004EDD, + 10959: 0x00003005, + 10960: 0x00003006, + 10961: 0x00003007, + 10962: 0x000030FC, + 10963: 0x0000FF3B, + 10964: 0x0000FF3D, + 10965: 0x0000273D, + 10966: 0x00003041, + 10967: 0x00003042, + 10968: 0x00003043, + 10969: 0x00003044, + 10970: 0x00003045, + 10971: 0x00003046, + 10972: 0x00003047, + 10973: 0x00003048, + 10974: 0x00003049, + 10975: 0x0000304A, + 10976: 0x0000304B, + 10977: 0x0000304C, + 10978: 0x0000304D, + 10979: 0x0000304E, + 10980: 0x0000304F, + 10981: 0x00003050, + 10982: 0x00003051, + 10983: 0x00003052, + 10984: 0x00003053, + 10985: 0x00003054, + 10986: 0x00003055, + 10987: 0x00003056, + 10988: 0x00003057, + 10989: 0x00003058, + 10990: 0x00003059, + 10991: 0x0000305A, + 10992: 0x0000305B, + 10993: 0x0000305C, + 10994: 0x0000305D, + 10995: 0x0000305E, + 10996: 0x0000305F, + 10997: 0x00003060, + 10998: 0x00003061, + 10999: 0x00003062, + 11000: 0x00003063, + 11001: 0x00003064, + 11002: 0x00003065, + 11003: 0x00003066, + 11004: 0x00003067, + 11005: 0x00003068, + 11006: 0x00003069, + 11007: 0x0000306A, + 11008: 0x0000306B, + 11009: 0x0000306C, + 11010: 0x0000306D, + 11011: 0x0000306E, + 11012: 0x0000306F, + 11013: 0x00003070, + 11014: 0x00003071, + 11015: 0x00003072, + 11016: 0x00003073, + 11017: 0x00003074, + 11018: 0x00003075, + 11019: 0x00003076, + 11020: 0x00003077, + 11021: 0x00003078, + 11022: 0x00003079, + 11023: 0x0000307A, + 11024: 0x0000307B, + 11025: 0x0000307C, + 11026: 0x0000307D, + 11027: 0x0000307E, + 11028: 0x0000307F, + 11029: 0x00003080, + 11030: 0x00003081, + 11031: 0x00003082, + 11032: 0x00003083, + 11033: 0x00003084, + 11034: 0x00003085, + 11035: 0x00003086, + 11036: 0x00003087, + 11037: 0x00003088, + 11038: 0x00003089, + 11039: 0x0000308A, + 11040: 0x0000308B, + 11041: 0x0000308C, + 11042: 0x0000308D, + 11043: 0x0000308E, + 11044: 0x0000308F, + 11045: 0x00003090, + 11046: 0x00003091, + 11047: 0x00003092, + 11048: 0x00003093, + 11049: 0x000030A1, + 11050: 0x000030A2, + 11051: 0x000030A3, + 11052: 0x000030A4, + 11053: 0x000030A5, + 11054: 0x000030A6, + 11055: 0x000030A7, + 11056: 0x000030A8, + 11057: 0x000030A9, + 11058: 0x000030AA, + 11059: 0x000030AB, + 11060: 0x000030AC, + 11061: 0x000030AD, + 11062: 0x000030AE, + 11063: 0x000030AF, + 11064: 0x000030B0, + 11065: 0x000030B1, + 11066: 0x000030B2, + 11067: 0x000030B3, + 11068: 0x000030B4, + 11069: 0x000030B5, + 11070: 0x000030B6, + 11071: 0x000030B7, + 11072: 0x000030B8, + 11073: 0x000030B9, + 11074: 0x000030BA, + 11075: 0x000030BB, + 11076: 0x000030BC, + 11077: 0x000030BD, + 11078: 0x000030BE, + 11079: 0x000030BF, + 11080: 0x000030C0, + 11081: 0x000030C1, + 11082: 0x000030C2, + 11083: 0x000030C3, + 11084: 0x000030C4, + 11085: 0x000030C5, + 11086: 0x000030C6, + 11087: 0x000030C7, + 11088: 0x000030C8, + 11089: 0x000030C9, + 11090: 0x000030CA, + 11091: 0x000030CB, + 11092: 0x000030CC, + 11093: 0x000030CD, + 11094: 0x000030CE, + 11095: 0x000030CF, + 11096: 0x000030D0, + 11097: 0x000030D1, + 11098: 0x000030D2, + 11099: 0x000030D3, + 11100: 0x000030D4, + 11101: 0x000030D5, + 11102: 0x000030D6, + 11103: 0x000030D7, + 11104: 0x000030D8, + 11105: 0x000030D9, + 11106: 0x000030DA, + 11107: 0x000030DB, + 11108: 0x000030DC, + 11109: 0x000030DD, + 11110: 0x000030DE, + 11111: 0x000030DF, + 11112: 0x000030E0, + 11113: 0x000030E1, + 11114: 0x000030E2, + 11115: 0x000030E3, + 11116: 0x000030E4, + 11117: 0x000030E5, + 11118: 0x000030E6, + 11119: 0x000030E7, + 11120: 0x000030E8, + 11121: 0x000030E9, + 11122: 0x000030EA, + 11123: 0x000030EB, + 11124: 0x000030EC, + 11125: 0x000030ED, + 11126: 0x000030EE, + 11127: 0x000030EF, + 11128: 0x000030F0, + 11129: 0x000030F1, + 11130: 0x000030F2, + 11131: 0x000030F3, + 11132: 0x000030F4, + 11133: 0x000030F5, + 11134: 0x000030F6, + 11135: 0x00000410, + 11136: 0x00000411, + 11137: 0x00000412, + 11138: 0x00000413, + 11139: 0x00000414, + 11140: 0x00000415, + 11141: 0x00000401, + 11142: 0x00000416, + 11143: 0x00000417, + 11144: 0x00000418, + 11145: 0x00000419, + 11146: 0x0000041A, + 11147: 0x0000041B, + 11148: 0x0000041C, + 11149: 0x0000041D, + 11150: 0x0000041E, + 11151: 0x0000041F, + 11152: 0x00000420, + 11153: 0x00000421, + 11154: 0x00000422, + 11155: 0x00000423, + 11156: 0x00000424, + 11157: 0x00000425, + 11158: 0x00000426, + 11159: 0x00000427, + 11160: 0x00000428, + 11161: 0x00000429, + 11162: 0x0000042A, + 11163: 0x0000042B, + 11164: 0x0000042C, + 11165: 0x0000042D, + 11166: 0x0000042E, + 11167: 0x0000042F, + 11168: 0x00000430, + 11169: 0x00000431, + 11170: 0x00000432, + 11171: 0x00000433, + 11172: 0x00000434, + 11173: 0x00000435, + 11174: 0x00000451, + 11175: 0x00000436, + 11176: 0x00000437, + 11177: 0x00000438, + 11178: 0x00000439, + 11179: 0x0000043A, + 11180: 0x0000043B, + 11181: 0x0000043C, + 11182: 0x0000043D, + 11183: 0x0000043E, + 11184: 0x0000043F, + 11185: 0x00000440, + 11186: 0x00000441, + 11187: 0x00000442, + 11188: 0x00000443, + 11189: 0x00000444, + 11190: 0x00000445, + 11191: 0x00000446, + 11192: 0x00000447, + 11193: 0x00000448, + 11194: 0x00000449, + 11195: 0x0000044A, + 11196: 0x0000044B, + 11197: 0x0000044C, + 11198: 0x0000044D, + 11199: 0x0000044E, + 11200: 0x0000044F, + 11201: 0x000021E7, + 11202: 0x000021B8, + 11203: 0x000021B9, + 11204: 0x000031CF, + 11205: 0x000200CC, + 11206: 0x00004E5A, + 11207: 0x0002008A, + 11208: 0x00005202, + 11209: 0x00004491, + 11210: 0x00009FB0, + 11211: 0x00005188, + 11212: 0x00009FB1, + 11213: 0x00027607, + 11254: 0x0000FFE2, + 11255: 0x0000FFE4, + 11256: 0x0000FF07, + 11257: 0x0000FF02, + 11258: 0x00003231, + 11259: 0x00002116, + 11260: 0x00002121, + 11261: 0x0000309B, + 11262: 0x0000309C, + 11263: 0x00002E80, + 11264: 0x00002E84, + 11265: 0x00002E86, + 11266: 0x00002E87, + 11267: 0x00002E88, + 11268: 0x00002E8A, + 11269: 0x00002E8C, + 11270: 0x00002E8D, + 11271: 0x00002E95, + 11272: 0x00002E9C, + 11273: 0x00002E9D, + 11274: 0x00002EA5, + 11275: 0x00002EA7, + 11276: 0x00002EAA, + 11277: 0x00002EAC, + 11278: 0x00002EAE, + 11279: 0x00002EB6, + 11280: 0x00002EBC, + 11281: 0x00002EBE, + 11282: 0x00002EC6, + 11283: 0x00002ECA, + 11284: 0x00002ECC, + 11285: 0x00002ECD, + 11286: 0x00002ECF, + 11287: 0x00002ED6, + 11288: 0x00002ED7, + 11289: 0x00002EDE, + 11290: 0x00002EE3, + 11294: 0x00000283, + 11295: 0x00000250, + 11296: 0x0000025B, + 11297: 0x00000254, + 11298: 0x00000275, + 11299: 0x00000153, + 11300: 0x000000F8, + 11301: 0x0000014B, + 11302: 0x0000028A, + 11303: 0x0000026A, + 11304: 0x00004E42, + 11305: 0x00004E5C, + 11306: 0x000051F5, + 11307: 0x0000531A, + 11308: 0x00005382, + 11309: 0x00004E07, + 11310: 0x00004E0C, + 11311: 0x00004E47, + 11312: 0x00004E8D, + 11313: 0x000056D7, + 11314: 0x0000FA0C, + 11315: 0x00005C6E, + 11316: 0x00005F73, + 11317: 0x00004E0F, + 11318: 0x00005187, + 11319: 0x00004E0E, + 11320: 0x00004E2E, + 11321: 0x00004E93, + 11322: 0x00004EC2, + 11323: 0x00004EC9, + 11324: 0x00004EC8, + 11325: 0x00005198, + 11326: 0x000052FC, + 11327: 0x0000536C, + 11328: 0x000053B9, + 11329: 0x00005720, + 11330: 0x00005903, + 11331: 0x0000592C, + 11332: 0x00005C10, + 11333: 0x00005DFF, + 11334: 0x000065E1, + 11335: 0x00006BB3, + 11336: 0x00006BCC, + 11337: 0x00006C14, + 11338: 0x0000723F, + 11339: 0x00004E31, + 11340: 0x00004E3C, + 11341: 0x00004EE8, + 11342: 0x00004EDC, + 11343: 0x00004EE9, + 11344: 0x00004EE1, + 11345: 0x00004EDD, + 11346: 0x00004EDA, + 11347: 0x0000520C, + 11348: 0x0000531C, + 11349: 0x0000534C, + 11350: 0x00005722, + 11351: 0x00005723, + 11352: 0x00005917, + 11353: 0x0000592F, + 11354: 0x00005B81, + 11355: 0x00005B84, + 11356: 0x00005C12, + 11357: 0x00005C3B, + 11358: 0x00005C74, + 11359: 0x00005C73, + 11360: 0x00005E04, + 11361: 0x00005E80, + 11362: 0x00005E82, + 11363: 0x00005FC9, + 11364: 0x00006209, + 11365: 0x00006250, + 11366: 0x00006C15, + 11367: 0x00006C36, + 11368: 0x00006C43, + 11369: 0x00006C3F, + 11370: 0x00006C3B, + 11371: 0x000072AE, + 11372: 0x000072B0, + 11373: 0x0000738A, + 11374: 0x000079B8, + 11375: 0x0000808A, + 11376: 0x0000961E, + 11377: 0x00004F0E, + 11378: 0x00004F18, + 11379: 0x00004F2C, + 11380: 0x00004EF5, + 11381: 0x00004F14, + 11382: 0x00004EF1, + 11383: 0x00004F00, + 11384: 0x00004EF7, + 11385: 0x00004F08, + 11386: 0x00004F1D, + 11387: 0x00004F02, + 11388: 0x00004F05, + 11389: 0x00004F22, + 11390: 0x00004F13, + 11391: 0x00004F04, + 11392: 0x00004EF4, + 11393: 0x00004F12, + 11394: 0x000051B1, + 11395: 0x00005213, + 11396: 0x00005209, + 11397: 0x00005210, + 11398: 0x000052A6, + 11399: 0x00005322, + 11400: 0x0000531F, + 11401: 0x0000534D, + 11402: 0x0000538A, + 11403: 0x00005407, + 11404: 0x000056E1, + 11405: 0x000056DF, + 11406: 0x0000572E, + 11407: 0x0000572A, + 11408: 0x00005734, + 11409: 0x0000593C, + 11410: 0x00005980, + 11411: 0x0000597C, + 11412: 0x00005985, + 11413: 0x0000597B, + 11414: 0x0000597E, + 11415: 0x00005977, + 11416: 0x0000597F, + 11417: 0x00005B56, + 11418: 0x00005C15, + 11419: 0x00005C25, + 11420: 0x00005C7C, + 11421: 0x00005C7A, + 11422: 0x00005C7B, + 11423: 0x00005C7E, + 11424: 0x00005DDF, + 11425: 0x00005E75, + 11426: 0x00005E84, + 11427: 0x00005F02, + 11428: 0x00005F1A, + 11429: 0x00005F74, + 11430: 0x00005FD5, + 11431: 0x00005FD4, + 11432: 0x00005FCF, + 11433: 0x0000625C, + 11434: 0x0000625E, + 11435: 0x00006264, + 11436: 0x00006261, + 11437: 0x00006266, + 11438: 0x00006262, + 11439: 0x00006259, + 11440: 0x00006260, + 11441: 0x0000625A, + 11442: 0x00006265, + 11443: 0x000065EF, + 11444: 0x000065EE, + 11445: 0x0000673E, + 11446: 0x00006739, + 11447: 0x00006738, + 11448: 0x0000673B, + 11449: 0x0000673A, + 11450: 0x0000673F, + 11451: 0x0000673C, + 11452: 0x00006733, + 11453: 0x00006C18, + 11454: 0x00006C46, + 11455: 0x00006C52, + 11456: 0x00006C5C, + 11457: 0x00006C4F, + 11458: 0x00006C4A, + 11459: 0x00006C54, + 11460: 0x00006C4B, + 11461: 0x00006C4C, + 11462: 0x00007071, + 11463: 0x0000725E, + 11464: 0x000072B4, + 11465: 0x000072B5, + 11466: 0x0000738E, + 11467: 0x0000752A, + 11468: 0x0000767F, + 11469: 0x00007A75, + 11470: 0x00007F51, + 11471: 0x00008278, + 11472: 0x0000827C, + 11473: 0x00008280, + 11474: 0x0000827D, + 11475: 0x0000827F, + 11476: 0x0000864D, + 11477: 0x0000897E, + 11478: 0x00009099, + 11479: 0x00009097, + 11480: 0x00009098, + 11481: 0x0000909B, + 11482: 0x00009094, + 11483: 0x00009622, + 11484: 0x00009624, + 11485: 0x00009620, + 11486: 0x00009623, + 11487: 0x00004F56, + 11488: 0x00004F3B, + 11489: 0x00004F62, + 11490: 0x00004F49, + 11491: 0x00004F53, + 11492: 0x00004F64, + 11493: 0x00004F3E, + 11494: 0x00004F67, + 11495: 0x00004F52, + 11496: 0x00004F5F, + 11497: 0x00004F41, + 11498: 0x00004F58, + 11499: 0x00004F2D, + 11500: 0x00004F33, + 11501: 0x00004F3F, + 11502: 0x00004F61, + 11503: 0x0000518F, + 11504: 0x000051B9, + 11505: 0x0000521C, + 11506: 0x0000521E, + 11507: 0x00005221, + 11508: 0x000052AD, + 11509: 0x000052AE, + 11510: 0x00005309, + 11511: 0x00005363, + 11512: 0x00005372, + 11513: 0x0000538E, + 11514: 0x0000538F, + 11515: 0x00005430, + 11516: 0x00005437, + 11517: 0x0000542A, + 11518: 0x00005454, + 11519: 0x00005445, + 11520: 0x00005419, + 11521: 0x0000541C, + 11522: 0x00005425, + 11523: 0x00005418, + 11524: 0x0000543D, + 11525: 0x0000544F, + 11526: 0x00005441, + 11527: 0x00005428, + 11528: 0x00005424, + 11529: 0x00005447, + 11530: 0x000056EE, + 11531: 0x000056E7, + 11532: 0x000056E5, + 11533: 0x00005741, + 11534: 0x00005745, + 11535: 0x0000574C, + 11536: 0x00005749, + 11537: 0x0000574B, + 11538: 0x00005752, + 11539: 0x00005906, + 11540: 0x00005940, + 11541: 0x000059A6, + 11542: 0x00005998, + 11543: 0x000059A0, + 11544: 0x00005997, + 11545: 0x0000598E, + 11546: 0x000059A2, + 11547: 0x00005990, + 11548: 0x0000598F, + 11549: 0x000059A7, + 11550: 0x000059A1, + 11551: 0x00005B8E, + 11552: 0x00005B92, + 11553: 0x00005C28, + 11554: 0x00005C2A, + 11555: 0x00005C8D, + 11556: 0x00005C8F, + 11557: 0x00005C88, + 11558: 0x00005C8B, + 11559: 0x00005C89, + 11560: 0x00005C92, + 11561: 0x00005C8A, + 11562: 0x00005C86, + 11563: 0x00005C93, + 11564: 0x00005C95, + 11565: 0x00005DE0, + 11566: 0x00005E0A, + 11567: 0x00005E0E, + 11568: 0x00005E8B, + 11569: 0x00005E89, + 11570: 0x00005E8C, + 11571: 0x00005E88, + 11572: 0x00005E8D, + 11573: 0x00005F05, + 11574: 0x00005F1D, + 11575: 0x00005F78, + 11576: 0x00005F76, + 11577: 0x00005FD2, + 11578: 0x00005FD1, + 11579: 0x00005FD0, + 11580: 0x00005FED, + 11581: 0x00005FE8, + 11582: 0x00005FEE, + 11583: 0x00005FF3, + 11584: 0x00005FE1, + 11585: 0x00005FE4, + 11586: 0x00005FE3, + 11587: 0x00005FFA, + 11588: 0x00005FEF, + 11589: 0x00005FF7, + 11590: 0x00005FFB, + 11591: 0x00006000, + 11592: 0x00005FF4, + 11593: 0x0000623A, + 11594: 0x00006283, + 11595: 0x0000628C, + 11596: 0x0000628E, + 11597: 0x0000628F, + 11598: 0x00006294, + 11599: 0x00006287, + 11600: 0x00006271, + 11601: 0x0000627B, + 11602: 0x0000627A, + 11603: 0x00006270, + 11604: 0x00006281, + 11605: 0x00006288, + 11606: 0x00006277, + 11607: 0x0000627D, + 11608: 0x00006272, + 11609: 0x00006274, + 11610: 0x00006537, + 11611: 0x000065F0, + 11612: 0x000065F4, + 11613: 0x000065F3, + 11614: 0x000065F2, + 11615: 0x000065F5, + 11616: 0x00006745, + 11617: 0x00006747, + 11618: 0x00006759, + 11619: 0x00006755, + 11620: 0x0000674C, + 11621: 0x00006748, + 11622: 0x0000675D, + 11623: 0x0000674D, + 11624: 0x0000675A, + 11625: 0x0000674B, + 11626: 0x00006BD0, + 11627: 0x00006C19, + 11628: 0x00006C1A, + 11629: 0x00006C78, + 11630: 0x00006C67, + 11631: 0x00006C6B, + 11632: 0x00006C84, + 11633: 0x00006C8B, + 11634: 0x00006C8F, + 11635: 0x00006C71, + 11636: 0x00006C6F, + 11637: 0x00006C69, + 11638: 0x00006C9A, + 11639: 0x00006C6D, + 11640: 0x00006C87, + 11641: 0x00006C95, + 11642: 0x00006C9C, + 11643: 0x00006C66, + 11644: 0x00006C73, + 11645: 0x00006C65, + 11646: 0x00006C7B, + 11647: 0x00006C8E, + 11648: 0x00007074, + 11649: 0x0000707A, + 11650: 0x00007263, + 11651: 0x000072BF, + 11652: 0x000072BD, + 11653: 0x000072C3, + 11654: 0x000072C6, + 11655: 0x000072C1, + 11656: 0x000072BA, + 11657: 0x000072C5, + 11658: 0x00007395, + 11659: 0x00007397, + 11660: 0x00007393, + 11661: 0x00007394, + 11662: 0x00007392, + 11663: 0x0000753A, + 11664: 0x00007539, + 11665: 0x00007594, + 11666: 0x00007595, + 11667: 0x00007681, + 11668: 0x0000793D, + 11669: 0x00008034, + 11670: 0x00008095, + 11671: 0x00008099, + 11672: 0x00008090, + 11673: 0x00008092, + 11674: 0x0000809C, + 11675: 0x00008290, + 11676: 0x0000828F, + 11677: 0x00008285, + 11678: 0x0000828E, + 11679: 0x00008291, + 11680: 0x00008293, + 11681: 0x0000828A, + 11682: 0x00008283, + 11683: 0x00008284, + 11684: 0x00008C78, + 11685: 0x00008FC9, + 11686: 0x00008FBF, + 11687: 0x0000909F, + 11688: 0x000090A1, + 11689: 0x000090A5, + 11690: 0x0000909E, + 11691: 0x000090A7, + 11692: 0x000090A0, + 11693: 0x00009630, + 11694: 0x00009628, + 11695: 0x0000962F, + 11696: 0x0000962D, + 11697: 0x00004E33, + 11698: 0x00004F98, + 11699: 0x00004F7C, + 11700: 0x00004F85, + 11701: 0x00004F7D, + 11702: 0x00004F80, + 11703: 0x00004F87, + 11704: 0x00004F76, + 11705: 0x00004F74, + 11706: 0x00004F89, + 11707: 0x00004F84, + 11708: 0x00004F77, + 11709: 0x00004F4C, + 11710: 0x00004F97, + 11711: 0x00004F6A, + 11712: 0x00004F9A, + 11713: 0x00004F79, + 11714: 0x00004F81, + 11715: 0x00004F78, + 11716: 0x00004F90, + 11717: 0x00004F9C, + 11718: 0x00004F94, + 11719: 0x00004F9E, + 11720: 0x00004F92, + 11721: 0x00004F82, + 11722: 0x00004F95, + 11723: 0x00004F6B, + 11724: 0x00004F6E, + 11725: 0x0000519E, + 11726: 0x000051BC, + 11727: 0x000051BE, + 11728: 0x00005235, + 11729: 0x00005232, + 11730: 0x00005233, + 11731: 0x00005246, + 11732: 0x00005231, + 11733: 0x000052BC, + 11734: 0x0000530A, + 11735: 0x0000530B, + 11736: 0x0000533C, + 11737: 0x00005392, + 11738: 0x00005394, + 11739: 0x00005487, + 11740: 0x0000547F, + 11741: 0x00005481, + 11742: 0x00005491, + 11743: 0x00005482, + 11744: 0x00005488, + 11745: 0x0000546B, + 11746: 0x0000547A, + 11747: 0x0000547E, + 11748: 0x00005465, + 11749: 0x0000546C, + 11750: 0x00005474, + 11751: 0x00005466, + 11752: 0x0000548D, + 11753: 0x0000546F, + 11754: 0x00005461, + 11755: 0x00005460, + 11756: 0x00005498, + 11757: 0x00005463, + 11758: 0x00005467, + 11759: 0x00005464, + 11760: 0x000056F7, + 11761: 0x000056F9, + 11762: 0x0000576F, + 11763: 0x00005772, + 11764: 0x0000576D, + 11765: 0x0000576B, + 11766: 0x00005771, + 11767: 0x00005770, + 11768: 0x00005776, + 11769: 0x00005780, + 11770: 0x00005775, + 11771: 0x0000577B, + 11772: 0x00005773, + 11773: 0x00005774, + 11774: 0x00005762, + 11775: 0x00005768, + 11776: 0x0000577D, + 11777: 0x0000590C, + 11778: 0x00005945, + 11779: 0x000059B5, + 11780: 0x000059BA, + 11781: 0x000059CF, + 11782: 0x000059CE, + 11783: 0x000059B2, + 11784: 0x000059CC, + 11785: 0x000059C1, + 11786: 0x000059B6, + 11787: 0x000059BC, + 11788: 0x000059C3, + 11789: 0x000059D6, + 11790: 0x000059B1, + 11791: 0x000059BD, + 11792: 0x000059C0, + 11793: 0x000059C8, + 11794: 0x000059B4, + 11795: 0x000059C7, + 11796: 0x00005B62, + 11797: 0x00005B65, + 11798: 0x00005B93, + 11799: 0x00005B95, + 11800: 0x00005C44, + 11801: 0x00005C47, + 11802: 0x00005CAE, + 11803: 0x00005CA4, + 11804: 0x00005CA0, + 11805: 0x00005CB5, + 11806: 0x00005CAF, + 11807: 0x00005CA8, + 11808: 0x00005CAC, + 11809: 0x00005C9F, + 11810: 0x00005CA3, + 11811: 0x00005CAD, + 11812: 0x00005CA2, + 11813: 0x00005CAA, + 11814: 0x00005CA7, + 11815: 0x00005C9D, + 11816: 0x00005CA5, + 11817: 0x00005CB6, + 11818: 0x00005CB0, + 11819: 0x00005CA6, + 11820: 0x00005E17, + 11821: 0x00005E14, + 11822: 0x00005E19, + 11823: 0x00005F28, + 11824: 0x00005F22, + 11825: 0x00005F23, + 11826: 0x00005F24, + 11827: 0x00005F54, + 11828: 0x00005F82, + 11829: 0x00005F7E, + 11830: 0x00005F7D, + 11831: 0x00005FDE, + 11832: 0x00005FE5, + 11833: 0x0000602D, + 11834: 0x00006026, + 11835: 0x00006019, + 11836: 0x00006032, + 11837: 0x0000600B, + 11838: 0x00006034, + 11839: 0x0000600A, + 11840: 0x00006017, + 11841: 0x00006033, + 11842: 0x0000601A, + 11843: 0x0000601E, + 11844: 0x0000602C, + 11845: 0x00006022, + 11846: 0x0000600D, + 11847: 0x00006010, + 11848: 0x0000602E, + 11849: 0x00006013, + 11850: 0x00006011, + 11851: 0x0000600C, + 11852: 0x00006009, + 11853: 0x0000601C, + 11854: 0x00006214, + 11855: 0x0000623D, + 11856: 0x000062AD, + 11857: 0x000062B4, + 11858: 0x000062D1, + 11859: 0x000062BE, + 11860: 0x000062AA, + 11861: 0x000062B6, + 11862: 0x000062CA, + 11863: 0x000062AE, + 11864: 0x000062B3, + 11865: 0x000062AF, + 11866: 0x000062BB, + 11867: 0x000062A9, + 11868: 0x000062B0, + 11869: 0x000062B8, + 11870: 0x0000653D, + 11871: 0x000065A8, + 11872: 0x000065BB, + 11873: 0x00006609, + 11874: 0x000065FC, + 11875: 0x00006604, + 11876: 0x00006612, + 11877: 0x00006608, + 11878: 0x000065FB, + 11879: 0x00006603, + 11880: 0x0000660B, + 11881: 0x0000660D, + 11882: 0x00006605, + 11883: 0x000065FD, + 11884: 0x00006611, + 11885: 0x00006610, + 11886: 0x000066F6, + 11887: 0x0000670A, + 11888: 0x00006785, + 11889: 0x0000676C, + 11890: 0x0000678E, + 11891: 0x00006792, + 11892: 0x00006776, + 11893: 0x0000677B, + 11894: 0x00006798, + 11895: 0x00006786, + 11896: 0x00006784, + 11897: 0x00006774, + 11898: 0x0000678D, + 11899: 0x0000678C, + 11900: 0x0000677A, + 11901: 0x0000679F, + 11902: 0x00006791, + 11903: 0x00006799, + 11904: 0x00006783, + 11905: 0x0000677D, + 11906: 0x00006781, + 11907: 0x00006778, + 11908: 0x00006779, + 11909: 0x00006794, + 11910: 0x00006B25, + 11911: 0x00006B80, + 11912: 0x00006B7E, + 11913: 0x00006BDE, + 11914: 0x00006C1D, + 11915: 0x00006C93, + 11916: 0x00006CEC, + 11917: 0x00006CEB, + 11918: 0x00006CEE, + 11919: 0x00006CD9, + 11920: 0x00006CB6, + 11921: 0x00006CD4, + 11922: 0x00006CAD, + 11923: 0x00006CE7, + 11924: 0x00006CB7, + 11925: 0x00006CD0, + 11926: 0x00006CC2, + 11927: 0x00006CBA, + 11928: 0x00006CC3, + 11929: 0x00006CC6, + 11930: 0x00006CED, + 11931: 0x00006CF2, + 11932: 0x00006CD2, + 11933: 0x00006CDD, + 11934: 0x00006CB4, + 11935: 0x00006C8A, + 11936: 0x00006C9D, + 11937: 0x00006C80, + 11938: 0x00006CDE, + 11939: 0x00006CC0, + 11940: 0x00006D30, + 11941: 0x00006CCD, + 11942: 0x00006CC7, + 11943: 0x00006CB0, + 11944: 0x00006CF9, + 11945: 0x00006CCF, + 11946: 0x00006CE9, + 11947: 0x00006CD1, + 11948: 0x00007094, + 11949: 0x00007098, + 11950: 0x00007085, + 11951: 0x00007093, + 11952: 0x00007086, + 11953: 0x00007084, + 11954: 0x00007091, + 11955: 0x00007096, + 11956: 0x00007082, + 11957: 0x0000709A, + 11958: 0x00007083, + 11959: 0x0000726A, + 11960: 0x000072D6, + 11961: 0x000072CB, + 11962: 0x000072D8, + 11963: 0x000072C9, + 11964: 0x000072DC, + 11965: 0x000072D2, + 11966: 0x000072D4, + 11967: 0x000072DA, + 11968: 0x000072CC, + 11969: 0x000072D1, + 11970: 0x000073A4, + 11971: 0x000073A1, + 11972: 0x000073AD, + 11973: 0x000073A6, + 11974: 0x000073A2, + 11975: 0x000073A0, + 11976: 0x000073AC, + 11977: 0x0000739D, + 11978: 0x000074DD, + 11979: 0x000074E8, + 11980: 0x0000753F, + 11981: 0x00007540, + 11982: 0x0000753E, + 11983: 0x0000758C, + 11984: 0x00007598, + 11985: 0x000076AF, + 11986: 0x000076F3, + 11987: 0x000076F1, + 11988: 0x000076F0, + 11989: 0x000076F5, + 11990: 0x000077F8, + 11991: 0x000077FC, + 11992: 0x000077F9, + 11993: 0x000077FB, + 11994: 0x000077FA, + 11995: 0x000077F7, + 11996: 0x00007942, + 11997: 0x0000793F, + 11998: 0x000079C5, + 11999: 0x00007A78, + 12000: 0x00007A7B, + 12001: 0x00007AFB, + 12002: 0x00007C75, + 12003: 0x00007CFD, + 12004: 0x00008035, + 12005: 0x0000808F, + 12006: 0x000080AE, + 12007: 0x000080A3, + 12008: 0x000080B8, + 12009: 0x000080B5, + 12010: 0x000080AD, + 12011: 0x00008220, + 12012: 0x000082A0, + 12013: 0x000082C0, + 12014: 0x000082AB, + 12015: 0x0000829A, + 12016: 0x00008298, + 12017: 0x0000829B, + 12018: 0x000082B5, + 12019: 0x000082A7, + 12020: 0x000082AE, + 12021: 0x000082BC, + 12022: 0x0000829E, + 12023: 0x000082BA, + 12024: 0x000082B4, + 12025: 0x000082A8, + 12026: 0x000082A1, + 12027: 0x000082A9, + 12028: 0x000082C2, + 12029: 0x000082A4, + 12030: 0x000082C3, + 12031: 0x000082B6, + 12032: 0x000082A2, + 12033: 0x00008670, + 12034: 0x0000866F, + 12035: 0x0000866D, + 12036: 0x0000866E, + 12037: 0x00008C56, + 12038: 0x00008FD2, + 12039: 0x00008FCB, + 12040: 0x00008FD3, + 12041: 0x00008FCD, + 12042: 0x00008FD6, + 12043: 0x00008FD5, + 12044: 0x00008FD7, + 12045: 0x000090B2, + 12046: 0x000090B4, + 12047: 0x000090AF, + 12048: 0x000090B3, + 12049: 0x000090B0, + 12050: 0x00009639, + 12051: 0x0000963D, + 12052: 0x0000963C, + 12053: 0x0000963A, + 12054: 0x00009643, + 12055: 0x00004FCD, + 12056: 0x00004FC5, + 12057: 0x00004FD3, + 12058: 0x00004FB2, + 12059: 0x00004FC9, + 12060: 0x00004FCB, + 12061: 0x00004FC1, + 12062: 0x00004FD4, + 12063: 0x00004FDC, + 12064: 0x00004FD9, + 12065: 0x00004FBB, + 12066: 0x00004FB3, + 12067: 0x00004FDB, + 12068: 0x00004FC7, + 12069: 0x00004FD6, + 12070: 0x00004FBA, + 12071: 0x00004FC0, + 12072: 0x00004FB9, + 12073: 0x00004FEC, + 12074: 0x00005244, + 12075: 0x00005249, + 12076: 0x000052C0, + 12077: 0x000052C2, + 12078: 0x0000533D, + 12079: 0x0000537C, + 12080: 0x00005397, + 12081: 0x00005396, + 12082: 0x00005399, + 12083: 0x00005398, + 12084: 0x000054BA, + 12085: 0x000054A1, + 12086: 0x000054AD, + 12087: 0x000054A5, + 12088: 0x000054CF, + 12089: 0x000054C3, + 12090: 0x0000830D, + 12091: 0x000054B7, + 12092: 0x000054AE, + 12093: 0x000054D6, + 12094: 0x000054B6, + 12095: 0x000054C5, + 12096: 0x000054C6, + 12097: 0x000054A0, + 12098: 0x00005470, + 12099: 0x000054BC, + 12100: 0x000054A2, + 12101: 0x000054BE, + 12102: 0x00005472, + 12103: 0x000054DE, + 12104: 0x000054B0, + 12105: 0x000057B5, + 12106: 0x0000579E, + 12107: 0x0000579F, + 12108: 0x000057A4, + 12109: 0x0000578C, + 12110: 0x00005797, + 12111: 0x0000579D, + 12112: 0x0000579B, + 12113: 0x00005794, + 12114: 0x00005798, + 12115: 0x0000578F, + 12116: 0x00005799, + 12117: 0x000057A5, + 12118: 0x0000579A, + 12119: 0x00005795, + 12120: 0x000058F4, + 12121: 0x0000590D, + 12122: 0x00005953, + 12123: 0x000059E1, + 12124: 0x000059DE, + 12125: 0x000059EE, + 12126: 0x00005A00, + 12127: 0x000059F1, + 12128: 0x000059DD, + 12129: 0x000059FA, + 12130: 0x000059FD, + 12131: 0x000059FC, + 12132: 0x000059F6, + 12133: 0x000059E4, + 12134: 0x000059F2, + 12135: 0x000059F7, + 12136: 0x000059DB, + 12137: 0x000059E9, + 12138: 0x000059F3, + 12139: 0x000059F5, + 12140: 0x000059E0, + 12141: 0x000059FE, + 12142: 0x000059F4, + 12143: 0x000059ED, + 12144: 0x00005BA8, + 12145: 0x00005C4C, + 12146: 0x00005CD0, + 12147: 0x00005CD8, + 12148: 0x00005CCC, + 12149: 0x00005CD7, + 12150: 0x00005CCB, + 12151: 0x00005CDB, + 12152: 0x00005CDE, + 12153: 0x00005CDA, + 12154: 0x00005CC9, + 12155: 0x00005CC7, + 12156: 0x00005CCA, + 12157: 0x00005CD6, + 12158: 0x00005CD3, + 12159: 0x00005CD4, + 12160: 0x00005CCF, + 12161: 0x00005CC8, + 12162: 0x00005CC6, + 12163: 0x00005CCE, + 12164: 0x00005CDF, + 12165: 0x00005CF8, + 12166: 0x00005DF9, + 12167: 0x00005E21, + 12168: 0x00005E22, + 12169: 0x00005E23, + 12170: 0x00005E20, + 12171: 0x00005E24, + 12172: 0x00005EB0, + 12173: 0x00005EA4, + 12174: 0x00005EA2, + 12175: 0x00005E9B, + 12176: 0x00005EA3, + 12177: 0x00005EA5, + 12178: 0x00005F07, + 12179: 0x00005F2E, + 12180: 0x00005F56, + 12181: 0x00005F86, + 12182: 0x00006037, + 12183: 0x00006039, + 12184: 0x00006054, + 12185: 0x00006072, + 12186: 0x0000605E, + 12187: 0x00006045, + 12188: 0x00006053, + 12189: 0x00006047, + 12190: 0x00006049, + 12191: 0x0000605B, + 12192: 0x0000604C, + 12193: 0x00006040, + 12194: 0x00006042, + 12195: 0x0000605F, + 12196: 0x00006024, + 12197: 0x00006044, + 12198: 0x00006058, + 12199: 0x00006066, + 12200: 0x0000606E, + 12201: 0x00006242, + 12202: 0x00006243, + 12203: 0x000062CF, + 12204: 0x0000630D, + 12205: 0x0000630B, + 12206: 0x000062F5, + 12207: 0x0000630E, + 12208: 0x00006303, + 12209: 0x000062EB, + 12210: 0x000062F9, + 12211: 0x0000630F, + 12212: 0x0000630C, + 12213: 0x000062F8, + 12214: 0x000062F6, + 12215: 0x00006300, + 12216: 0x00006313, + 12217: 0x00006314, + 12218: 0x000062FA, + 12219: 0x00006315, + 12220: 0x000062FB, + 12221: 0x000062F0, + 12222: 0x00006541, + 12223: 0x00006543, + 12224: 0x000065AA, + 12225: 0x000065BF, + 12226: 0x00006636, + 12227: 0x00006621, + 12228: 0x00006632, + 12229: 0x00006635, + 12230: 0x0000661C, + 12231: 0x00006626, + 12232: 0x00006622, + 12233: 0x00006633, + 12234: 0x0000662B, + 12235: 0x0000663A, + 12236: 0x0000661D, + 12237: 0x00006634, + 12238: 0x00006639, + 12239: 0x0000662E, + 12240: 0x0000670F, + 12241: 0x00006710, + 12242: 0x000067C1, + 12243: 0x000067F2, + 12244: 0x000067C8, + 12245: 0x000067BA, + 12246: 0x000067DC, + 12247: 0x000067BB, + 12248: 0x000067F8, + 12249: 0x000067D8, + 12250: 0x000067C0, + 12251: 0x000067B7, + 12252: 0x000067C5, + 12253: 0x000067EB, + 12254: 0x000067E4, + 12255: 0x000067DF, + 12256: 0x000067B5, + 12257: 0x000067CD, + 12258: 0x000067B3, + 12259: 0x000067F7, + 12260: 0x000067F6, + 12261: 0x000067EE, + 12262: 0x000067E3, + 12263: 0x000067C2, + 12264: 0x000067B9, + 12265: 0x000067CE, + 12266: 0x000067E7, + 12267: 0x000067F0, + 12268: 0x000067B2, + 12269: 0x000067FC, + 12270: 0x000067C6, + 12271: 0x000067ED, + 12272: 0x000067CC, + 12273: 0x000067AE, + 12274: 0x000067E6, + 12275: 0x000067DB, + 12276: 0x000067FA, + 12277: 0x000067C9, + 12278: 0x000067CA, + 12279: 0x000067C3, + 12280: 0x000067EA, + 12281: 0x000067CB, + 12282: 0x00006B28, + 12283: 0x00006B82, + 12284: 0x00006B84, + 12285: 0x00006BB6, + 12286: 0x00006BD6, + 12287: 0x00006BD8, + 12288: 0x00006BE0, + 12289: 0x00006C20, + 12290: 0x00006C21, + 12291: 0x00006D28, + 12292: 0x00006D34, + 12293: 0x00006D2D, + 12294: 0x00006D1F, + 12295: 0x00006D3C, + 12296: 0x00006D3F, + 12297: 0x00006D12, + 12298: 0x00006D0A, + 12299: 0x00006CDA, + 12300: 0x00006D33, + 12301: 0x00006D04, + 12302: 0x00006D19, + 12303: 0x00006D3A, + 12304: 0x00006D1A, + 12305: 0x00006D11, + 12306: 0x00006D00, + 12307: 0x00006D1D, + 12308: 0x00006D42, + 12309: 0x00006D01, + 12310: 0x00006D18, + 12311: 0x00006D37, + 12312: 0x00006D03, + 12313: 0x00006D0F, + 12314: 0x00006D40, + 12315: 0x00006D07, + 12316: 0x00006D20, + 12317: 0x00006D2C, + 12318: 0x00006D08, + 12319: 0x00006D22, + 12320: 0x00006D09, + 12321: 0x00006D10, + 12322: 0x000070B7, + 12323: 0x0000709F, + 12324: 0x000070BE, + 12325: 0x000070B1, + 12326: 0x000070B0, + 12327: 0x000070A1, + 12328: 0x000070B4, + 12329: 0x000070B5, + 12330: 0x000070A9, + 12331: 0x00007241, + 12332: 0x00007249, + 12333: 0x0000724A, + 12334: 0x0000726C, + 12335: 0x00007270, + 12336: 0x00007273, + 12337: 0x0000726E, + 12338: 0x000072CA, + 12339: 0x000072E4, + 12340: 0x000072E8, + 12341: 0x000072EB, + 12342: 0x000072DF, + 12343: 0x000072EA, + 12344: 0x000072E6, + 12345: 0x000072E3, + 12346: 0x00007385, + 12347: 0x000073CC, + 12348: 0x000073C2, + 12349: 0x000073C8, + 12350: 0x000073C5, + 12351: 0x000073B9, + 12352: 0x000073B6, + 12353: 0x000073B5, + 12354: 0x000073B4, + 12355: 0x000073EB, + 12356: 0x000073BF, + 12357: 0x000073C7, + 12358: 0x000073BE, + 12359: 0x000073C3, + 12360: 0x000073C6, + 12361: 0x000073B8, + 12362: 0x000073CB, + 12363: 0x000074EC, + 12364: 0x000074EE, + 12365: 0x0000752E, + 12366: 0x00007547, + 12367: 0x00007548, + 12368: 0x000075A7, + 12369: 0x000075AA, + 12370: 0x00007679, + 12371: 0x000076C4, + 12372: 0x00007708, + 12373: 0x00007703, + 12374: 0x00007704, + 12375: 0x00007705, + 12376: 0x0000770A, + 12377: 0x000076F7, + 12378: 0x000076FB, + 12379: 0x000076FA, + 12380: 0x000077E7, + 12381: 0x000077E8, + 12382: 0x00007806, + 12383: 0x00007811, + 12384: 0x00007812, + 12385: 0x00007805, + 12386: 0x00007810, + 12387: 0x0000780F, + 12388: 0x0000780E, + 12389: 0x00007809, + 12390: 0x00007803, + 12391: 0x00007813, + 12392: 0x0000794A, + 12393: 0x0000794C, + 12394: 0x0000794B, + 12395: 0x00007945, + 12396: 0x00007944, + 12397: 0x000079D5, + 12398: 0x000079CD, + 12399: 0x000079CF, + 12400: 0x000079D6, + 12401: 0x000079CE, + 12402: 0x00007A80, + 12403: 0x00007A7E, + 12404: 0x00007AD1, + 12405: 0x00007B00, + 12406: 0x00007B01, + 12407: 0x00007C7A, + 12408: 0x00007C78, + 12409: 0x00007C79, + 12410: 0x00007C7F, + 12411: 0x00007C80, + 12412: 0x00007C81, + 12413: 0x00007D03, + 12414: 0x00007D08, + 12415: 0x00007D01, + 12416: 0x00007F58, + 12417: 0x00007F91, + 12418: 0x00007F8D, + 12419: 0x00007FBE, + 12420: 0x00008007, + 12421: 0x0000800E, + 12422: 0x0000800F, + 12423: 0x00008014, + 12424: 0x00008037, + 12425: 0x000080D8, + 12426: 0x000080C7, + 12427: 0x000080E0, + 12428: 0x000080D1, + 12429: 0x000080C8, + 12430: 0x000080C2, + 12431: 0x000080D0, + 12432: 0x000080C5, + 12433: 0x000080E3, + 12434: 0x000080D9, + 12435: 0x000080DC, + 12436: 0x000080CA, + 12437: 0x000080D5, + 12438: 0x000080C9, + 12439: 0x000080CF, + 12440: 0x000080D7, + 12441: 0x000080E6, + 12442: 0x000080CD, + 12443: 0x000081FF, + 12444: 0x00008221, + 12445: 0x00008294, + 12446: 0x000082D9, + 12447: 0x000082FE, + 12448: 0x000082F9, + 12449: 0x00008307, + 12450: 0x000082E8, + 12451: 0x00008300, + 12452: 0x000082D5, + 12453: 0x0000833A, + 12454: 0x000082EB, + 12455: 0x000082D6, + 12456: 0x000082F4, + 12457: 0x000082EC, + 12458: 0x000082E1, + 12459: 0x000082F2, + 12460: 0x000082F5, + 12461: 0x0000830C, + 12462: 0x000082FB, + 12463: 0x000082F6, + 12464: 0x000082F0, + 12465: 0x000082EA, + 12466: 0x000082E4, + 12467: 0x000082E0, + 12468: 0x000082FA, + 12469: 0x000082F3, + 12470: 0x000082ED, + 12471: 0x00008677, + 12472: 0x00008674, + 12473: 0x0000867C, + 12474: 0x00008673, + 12475: 0x00008841, + 12476: 0x0000884E, + 12477: 0x00008867, + 12478: 0x0000886A, + 12479: 0x00008869, + 12480: 0x000089D3, + 12481: 0x00008A04, + 12482: 0x00008A07, + 12483: 0x00008D72, + 12484: 0x00008FE3, + 12485: 0x00008FE1, + 12486: 0x00008FEE, + 12487: 0x00008FE0, + 12488: 0x000090F1, + 12489: 0x000090BD, + 12490: 0x000090BF, + 12491: 0x000090D5, + 12492: 0x000090C5, + 12493: 0x000090BE, + 12494: 0x000090C7, + 12495: 0x000090CB, + 12496: 0x000090C8, + 12497: 0x000091D4, + 12498: 0x000091D3, + 12499: 0x00009654, + 12500: 0x0000964F, + 12501: 0x00009651, + 12502: 0x00009653, + 12503: 0x0000964A, + 12504: 0x0000964E, + 12505: 0x0000501E, + 12506: 0x00005005, + 12507: 0x00005007, + 12508: 0x00005013, + 12509: 0x00005022, + 12510: 0x00005030, + 12511: 0x0000501B, + 12512: 0x00004FF5, + 12513: 0x00004FF4, + 12514: 0x00005033, + 12515: 0x00005037, + 12516: 0x0000502C, + 12517: 0x00004FF6, + 12518: 0x00004FF7, + 12519: 0x00005017, + 12520: 0x0000501C, + 12521: 0x00005020, + 12522: 0x00005027, + 12523: 0x00005035, + 12524: 0x0000502F, + 12525: 0x00005031, + 12526: 0x0000500E, + 12527: 0x0000515A, + 12528: 0x00005194, + 12529: 0x00005193, + 12530: 0x000051CA, + 12531: 0x000051C4, + 12532: 0x000051C5, + 12533: 0x000051C8, + 12534: 0x000051CE, + 12535: 0x00005261, + 12536: 0x0000525A, + 12537: 0x00005252, + 12538: 0x0000525E, + 12539: 0x0000525F, + 12540: 0x00005255, + 12541: 0x00005262, + 12542: 0x000052CD, + 12543: 0x0000530E, + 12544: 0x0000539E, + 12545: 0x00005526, + 12546: 0x000054E2, + 12547: 0x00005517, + 12548: 0x00005512, + 12549: 0x000054E7, + 12550: 0x000054F3, + 12551: 0x000054E4, + 12552: 0x0000551A, + 12553: 0x000054FF, + 12554: 0x00005504, + 12555: 0x00005508, + 12556: 0x000054EB, + 12557: 0x00005511, + 12558: 0x00005505, + 12559: 0x000054F1, + 12560: 0x0000550A, + 12561: 0x000054FB, + 12562: 0x000054F7, + 12563: 0x000054F8, + 12564: 0x000054E0, + 12565: 0x0000550E, + 12566: 0x00005503, + 12567: 0x0000550B, + 12568: 0x00005701, + 12569: 0x00005702, + 12570: 0x000057CC, + 12571: 0x00005832, + 12572: 0x000057D5, + 12573: 0x000057D2, + 12574: 0x000057BA, + 12575: 0x000057C6, + 12576: 0x000057BD, + 12577: 0x000057BC, + 12578: 0x000057B8, + 12579: 0x000057B6, + 12580: 0x000057BF, + 12581: 0x000057C7, + 12582: 0x000057D0, + 12583: 0x000057B9, + 12584: 0x000057C1, + 12585: 0x0000590E, + 12586: 0x0000594A, + 12587: 0x00005A19, + 12588: 0x00005A16, + 12589: 0x00005A2D, + 12590: 0x00005A2E, + 12591: 0x00005A15, + 12592: 0x00005A0F, + 12593: 0x00005A17, + 12594: 0x00005A0A, + 12595: 0x00005A1E, + 12596: 0x00005A33, + 12597: 0x00005B6C, + 12598: 0x00005BA7, + 12599: 0x00005BAD, + 12600: 0x00005BAC, + 12601: 0x00005C03, + 12602: 0x00005C56, + 12603: 0x00005C54, + 12604: 0x00005CEC, + 12605: 0x00005CFF, + 12606: 0x00005CEE, + 12607: 0x00005CF1, + 12608: 0x00005CF7, + 12609: 0x00005D00, + 12610: 0x00005CF9, + 12611: 0x00005E29, + 12612: 0x00005E28, + 12613: 0x00005EA8, + 12614: 0x00005EAE, + 12615: 0x00005EAA, + 12616: 0x00005EAC, + 12617: 0x00005F33, + 12618: 0x00005F30, + 12619: 0x00005F67, + 12620: 0x0000605D, + 12621: 0x0000605A, + 12622: 0x00006067, + 12623: 0x00006041, + 12624: 0x000060A2, + 12625: 0x00006088, + 12626: 0x00006080, + 12627: 0x00006092, + 12628: 0x00006081, + 12629: 0x0000609D, + 12630: 0x00006083, + 12631: 0x00006095, + 12632: 0x0000609B, + 12633: 0x00006097, + 12634: 0x00006087, + 12635: 0x0000609C, + 12636: 0x0000608E, + 12637: 0x00006219, + 12638: 0x00006246, + 12639: 0x000062F2, + 12640: 0x00006310, + 12641: 0x00006356, + 12642: 0x0000632C, + 12643: 0x00006344, + 12644: 0x00006345, + 12645: 0x00006336, + 12646: 0x00006343, + 12647: 0x000063E4, + 12648: 0x00006339, + 12649: 0x0000634B, + 12650: 0x0000634A, + 12651: 0x0000633C, + 12652: 0x00006329, + 12653: 0x00006341, + 12654: 0x00006334, + 12655: 0x00006358, + 12656: 0x00006354, + 12657: 0x00006359, + 12658: 0x0000632D, + 12659: 0x00006347, + 12660: 0x00006333, + 12661: 0x0000635A, + 12662: 0x00006351, + 12663: 0x00006338, + 12664: 0x00006357, + 12665: 0x00006340, + 12666: 0x00006348, + 12667: 0x0000654A, + 12668: 0x00006546, + 12669: 0x000065C6, + 12670: 0x000065C3, + 12671: 0x000065C4, + 12672: 0x000065C2, + 12673: 0x0000664A, + 12674: 0x0000665F, + 12675: 0x00006647, + 12676: 0x00006651, + 12677: 0x00006712, + 12678: 0x00006713, + 12679: 0x0000681F, + 12680: 0x0000681A, + 12681: 0x00006849, + 12682: 0x00006832, + 12683: 0x00006833, + 12684: 0x0000683B, + 12685: 0x0000684B, + 12686: 0x0000684F, + 12687: 0x00006816, + 12688: 0x00006831, + 12689: 0x0000681C, + 12690: 0x00006835, + 12691: 0x0000682B, + 12692: 0x0000682D, + 12693: 0x0000682F, + 12694: 0x0000684E, + 12695: 0x00006844, + 12696: 0x00006834, + 12697: 0x0000681D, + 12698: 0x00006812, + 12699: 0x00006814, + 12700: 0x00006826, + 12701: 0x00006828, + 12702: 0x0000682E, + 12703: 0x0000684D, + 12704: 0x0000683A, + 12705: 0x00006825, + 12706: 0x00006820, + 12707: 0x00006B2C, + 12708: 0x00006B2F, + 12709: 0x00006B2D, + 12710: 0x00006B31, + 12711: 0x00006B34, + 12712: 0x00006B6D, + 12713: 0x00008082, + 12714: 0x00006B88, + 12715: 0x00006BE6, + 12716: 0x00006BE4, + 12717: 0x00006BE8, + 12718: 0x00006BE3, + 12719: 0x00006BE2, + 12720: 0x00006BE7, + 12721: 0x00006C25, + 12722: 0x00006D7A, + 12723: 0x00006D63, + 12724: 0x00006D64, + 12725: 0x00006D76, + 12726: 0x00006D0D, + 12727: 0x00006D61, + 12728: 0x00006D92, + 12729: 0x00006D58, + 12730: 0x00006D62, + 12731: 0x00006D6D, + 12732: 0x00006D6F, + 12733: 0x00006D91, + 12734: 0x00006D8D, + 12735: 0x00006DEF, + 12736: 0x00006D7F, + 12737: 0x00006D86, + 12738: 0x00006D5E, + 12739: 0x00006D67, + 12740: 0x00006D60, + 12741: 0x00006D97, + 12742: 0x00006D70, + 12743: 0x00006D7C, + 12744: 0x00006D5F, + 12745: 0x00006D82, + 12746: 0x00006D98, + 12747: 0x00006D2F, + 12748: 0x00006D68, + 12749: 0x00006D8B, + 12750: 0x00006D7E, + 12751: 0x00006D80, + 12752: 0x00006D84, + 12753: 0x00006D16, + 12754: 0x00006D83, + 12755: 0x00006D7B, + 12756: 0x00006D7D, + 12757: 0x00006D75, + 12758: 0x00006D90, + 12759: 0x000070DC, + 12760: 0x000070D3, + 12761: 0x000070D1, + 12762: 0x000070DD, + 12763: 0x000070CB, + 12764: 0x00007F39, + 12765: 0x000070E2, + 12766: 0x000070D7, + 12767: 0x000070D2, + 12768: 0x000070DE, + 12769: 0x000070E0, + 12770: 0x000070D4, + 12771: 0x000070CD, + 12772: 0x000070C5, + 12773: 0x000070C6, + 12774: 0x000070C7, + 12775: 0x000070DA, + 12776: 0x000070CE, + 12777: 0x000070E1, + 12778: 0x00007242, + 12779: 0x00007278, + 12780: 0x00007277, + 12781: 0x00007276, + 12782: 0x00007300, + 12783: 0x000072FA, + 12784: 0x000072F4, + 12785: 0x000072FE, + 12786: 0x000072F6, + 12787: 0x000072F3, + 12788: 0x000072FB, + 12789: 0x00007301, + 12790: 0x000073D3, + 12791: 0x000073D9, + 12792: 0x000073E5, + 12793: 0x000073D6, + 12794: 0x000073BC, + 12795: 0x000073E7, + 12796: 0x000073E3, + 12797: 0x000073E9, + 12798: 0x000073DC, + 12799: 0x000073D2, + 12800: 0x000073DB, + 12801: 0x000073D4, + 12802: 0x000073DD, + 12803: 0x000073DA, + 12804: 0x000073D7, + 12805: 0x000073D8, + 12806: 0x000073E8, + 12807: 0x000074DE, + 12808: 0x000074DF, + 12809: 0x000074F4, + 12810: 0x000074F5, + 12811: 0x00007521, + 12812: 0x0000755B, + 12813: 0x0000755F, + 12814: 0x000075B0, + 12815: 0x000075C1, + 12816: 0x000075BB, + 12817: 0x000075C4, + 12818: 0x000075C0, + 12819: 0x000075BF, + 12820: 0x000075B6, + 12821: 0x000075BA, + 12822: 0x0000768A, + 12823: 0x000076C9, + 12824: 0x0000771D, + 12825: 0x0000771B, + 12826: 0x00007710, + 12827: 0x00007713, + 12828: 0x00007712, + 12829: 0x00007723, + 12830: 0x00007711, + 12831: 0x00007715, + 12832: 0x00007719, + 12833: 0x0000771A, + 12834: 0x00007722, + 12835: 0x00007727, + 12836: 0x00007823, + 12837: 0x0000782C, + 12838: 0x00007822, + 12839: 0x00007835, + 12840: 0x0000782F, + 12841: 0x00007828, + 12842: 0x0000782E, + 12843: 0x0000782B, + 12844: 0x00007821, + 12845: 0x00007829, + 12846: 0x00007833, + 12847: 0x0000782A, + 12848: 0x00007831, + 12849: 0x00007954, + 12850: 0x0000795B, + 12851: 0x0000794F, + 12852: 0x0000795C, + 12853: 0x00007953, + 12854: 0x00007952, + 12855: 0x00007951, + 12856: 0x000079EB, + 12857: 0x000079EC, + 12858: 0x000079E0, + 12859: 0x000079EE, + 12860: 0x000079ED, + 12861: 0x000079EA, + 12862: 0x000079DC, + 12863: 0x000079DE, + 12864: 0x000079DD, + 12865: 0x00007A86, + 12866: 0x00007A89, + 12867: 0x00007A85, + 12868: 0x00007A8B, + 12869: 0x00007A8C, + 12870: 0x00007A8A, + 12871: 0x00007A87, + 12872: 0x00007AD8, + 12873: 0x00007B10, + 12874: 0x00007B04, + 12875: 0x00007B13, + 12876: 0x00007B05, + 12877: 0x00007B0F, + 12878: 0x00007B08, + 12879: 0x00007B0A, + 12880: 0x00007B0E, + 12881: 0x00007B09, + 12882: 0x00007B12, + 12883: 0x00007C84, + 12884: 0x00007C91, + 12885: 0x00007C8A, + 12886: 0x00007C8C, + 12887: 0x00007C88, + 12888: 0x00007C8D, + 12889: 0x00007C85, + 12890: 0x00007D1E, + 12891: 0x00007D1D, + 12892: 0x00007D11, + 12893: 0x00007D0E, + 12894: 0x00007D18, + 12895: 0x00007D16, + 12896: 0x00007D13, + 12897: 0x00007D1F, + 12898: 0x00007D12, + 12899: 0x00007D0F, + 12900: 0x00007D0C, + 12901: 0x00007F5C, + 12902: 0x00007F61, + 12903: 0x00007F5E, + 12904: 0x00007F60, + 12905: 0x00007F5D, + 12906: 0x00007F5B, + 12907: 0x00007F96, + 12908: 0x00007F92, + 12909: 0x00007FC3, + 12910: 0x00007FC2, + 12911: 0x00007FC0, + 12912: 0x00008016, + 12913: 0x0000803E, + 12914: 0x00008039, + 12915: 0x000080FA, + 12916: 0x000080F2, + 12917: 0x000080F9, + 12918: 0x000080F5, + 12919: 0x00008101, + 12920: 0x000080FB, + 12921: 0x00008100, + 12922: 0x00008201, + 12923: 0x0000822F, + 12924: 0x00008225, + 12925: 0x00008333, + 12926: 0x0000832D, + 12927: 0x00008344, + 12928: 0x00008319, + 12929: 0x00008351, + 12930: 0x00008325, + 12931: 0x00008356, + 12932: 0x0000833F, + 12933: 0x00008341, + 12934: 0x00008326, + 12935: 0x0000831C, + 12936: 0x00008322, + 12937: 0x00008342, + 12938: 0x0000834E, + 12939: 0x0000831B, + 12940: 0x0000832A, + 12941: 0x00008308, + 12942: 0x0000833C, + 12943: 0x0000834D, + 12944: 0x00008316, + 12945: 0x00008324, + 12946: 0x00008320, + 12947: 0x00008337, + 12948: 0x0000832F, + 12949: 0x00008329, + 12950: 0x00008347, + 12951: 0x00008345, + 12952: 0x0000834C, + 12953: 0x00008353, + 12954: 0x0000831E, + 12955: 0x0000832C, + 12956: 0x0000834B, + 12957: 0x00008327, + 12958: 0x00008348, + 12959: 0x00008653, + 12960: 0x00008652, + 12961: 0x000086A2, + 12962: 0x000086A8, + 12963: 0x00008696, + 12964: 0x0000868D, + 12965: 0x00008691, + 12966: 0x0000869E, + 12967: 0x00008687, + 12968: 0x00008697, + 12969: 0x00008686, + 12970: 0x0000868B, + 12971: 0x0000869A, + 12972: 0x00008685, + 12973: 0x000086A5, + 12974: 0x00008699, + 12975: 0x000086A1, + 12976: 0x000086A7, + 12977: 0x00008695, + 12978: 0x00008698, + 12979: 0x0000868E, + 12980: 0x0000869D, + 12981: 0x00008690, + 12982: 0x00008694, + 12983: 0x00008843, + 12984: 0x00008844, + 12985: 0x0000886D, + 12986: 0x00008875, + 12987: 0x00008876, + 12988: 0x00008872, + 12989: 0x00008880, + 12990: 0x00008871, + 12991: 0x0000887F, + 12992: 0x0000886F, + 12993: 0x00008883, + 12994: 0x0000887E, + 12995: 0x00008874, + 12996: 0x0000887C, + 12997: 0x00008A12, + 12998: 0x00008C47, + 12999: 0x00008C57, + 13000: 0x00008C7B, + 13001: 0x00008CA4, + 13002: 0x00008CA3, + 13003: 0x00008D76, + 13004: 0x00008D78, + 13005: 0x00008DB5, + 13006: 0x00008DB7, + 13007: 0x00008DB6, + 13008: 0x00008ED1, + 13009: 0x00008ED3, + 13010: 0x00008FFE, + 13011: 0x00008FF5, + 13012: 0x00009002, + 13013: 0x00008FFF, + 13014: 0x00008FFB, + 13015: 0x00009004, + 13016: 0x00008FFC, + 13017: 0x00008FF6, + 13018: 0x000090D6, + 13019: 0x000090E0, + 13020: 0x000090D9, + 13021: 0x000090DA, + 13022: 0x000090E3, + 13023: 0x000090DF, + 13024: 0x000090E5, + 13025: 0x000090D8, + 13026: 0x000090DB, + 13027: 0x000090D7, + 13028: 0x000090DC, + 13029: 0x000090E4, + 13030: 0x00009150, + 13031: 0x0000914E, + 13032: 0x0000914F, + 13033: 0x000091D5, + 13034: 0x000091E2, + 13035: 0x000091DA, + 13036: 0x0000965C, + 13037: 0x0000965F, + 13038: 0x000096BC, + 13039: 0x000098E3, + 13040: 0x00009ADF, + 13041: 0x00009B2F, + 13042: 0x00004E7F, + 13043: 0x00005070, + 13044: 0x0000506A, + 13045: 0x00005061, + 13046: 0x0000505E, + 13047: 0x00005060, + 13048: 0x00005053, + 13049: 0x0000504B, + 13050: 0x0000505D, + 13051: 0x00005072, + 13052: 0x00005048, + 13053: 0x0000504D, + 13054: 0x00005041, + 13055: 0x0000505B, + 13056: 0x0000504A, + 13057: 0x00005062, + 13058: 0x00005015, + 13059: 0x00005045, + 13060: 0x0000505F, + 13061: 0x00005069, + 13062: 0x0000506B, + 13063: 0x00005063, + 13064: 0x00005064, + 13065: 0x00005046, + 13066: 0x00005040, + 13067: 0x0000506E, + 13068: 0x00005073, + 13069: 0x00005057, + 13070: 0x00005051, + 13071: 0x000051D0, + 13072: 0x0000526B, + 13073: 0x0000526D, + 13074: 0x0000526C, + 13075: 0x0000526E, + 13076: 0x000052D6, + 13077: 0x000052D3, + 13078: 0x0000532D, + 13079: 0x0000539C, + 13080: 0x00005575, + 13081: 0x00005576, + 13082: 0x0000553C, + 13083: 0x0000554D, + 13084: 0x00005550, + 13085: 0x00005534, + 13086: 0x0000552A, + 13087: 0x00005551, + 13088: 0x00005562, + 13089: 0x00005536, + 13090: 0x00005535, + 13091: 0x00005530, + 13092: 0x00005552, + 13093: 0x00005545, + 13094: 0x0000550C, + 13095: 0x00005532, + 13096: 0x00005565, + 13097: 0x0000554E, + 13098: 0x00005539, + 13099: 0x00005548, + 13100: 0x0000552D, + 13101: 0x0000553B, + 13102: 0x00005540, + 13103: 0x0000554B, + 13104: 0x0000570A, + 13105: 0x00005707, + 13106: 0x000057FB, + 13107: 0x00005814, + 13108: 0x000057E2, + 13109: 0x000057F6, + 13110: 0x000057DC, + 13111: 0x000057F4, + 13112: 0x00005800, + 13113: 0x000057ED, + 13114: 0x000057FD, + 13115: 0x00005808, + 13116: 0x000057F8, + 13117: 0x0000580B, + 13118: 0x000057F3, + 13119: 0x000057CF, + 13120: 0x00005807, + 13121: 0x000057EE, + 13122: 0x000057E3, + 13123: 0x000057F2, + 13124: 0x000057E5, + 13125: 0x000057EC, + 13126: 0x000057E1, + 13127: 0x0000580E, + 13128: 0x000057FC, + 13129: 0x00005810, + 13130: 0x000057E7, + 13131: 0x00005801, + 13132: 0x0000580C, + 13133: 0x000057F1, + 13134: 0x000057E9, + 13135: 0x000057F0, + 13136: 0x0000580D, + 13137: 0x00005804, + 13138: 0x0000595C, + 13139: 0x00005A60, + 13140: 0x00005A58, + 13141: 0x00005A55, + 13142: 0x00005A67, + 13143: 0x00005A5E, + 13144: 0x00005A38, + 13145: 0x00005A35, + 13146: 0x00005A6D, + 13147: 0x00005A50, + 13148: 0x00005A5F, + 13149: 0x00005A65, + 13150: 0x00005A6C, + 13151: 0x00005A53, + 13152: 0x00005A64, + 13153: 0x00005A57, + 13154: 0x00005A43, + 13155: 0x00005A5D, + 13156: 0x00005A52, + 13157: 0x00005A44, + 13158: 0x00005A5B, + 13159: 0x00005A48, + 13160: 0x00005A8E, + 13161: 0x00005A3E, + 13162: 0x00005A4D, + 13163: 0x00005A39, + 13164: 0x00005A4C, + 13165: 0x00005A70, + 13166: 0x00005A69, + 13167: 0x00005A47, + 13168: 0x00005A51, + 13169: 0x00005A56, + 13170: 0x00005A42, + 13171: 0x00005A5C, + 13172: 0x00005B72, + 13173: 0x00005B6E, + 13174: 0x00005BC1, + 13175: 0x00005BC0, + 13176: 0x00005C59, + 13177: 0x00005D1E, + 13178: 0x00005D0B, + 13179: 0x00005D1D, + 13180: 0x00005D1A, + 13181: 0x00005D20, + 13182: 0x00005D0C, + 13183: 0x00005D28, + 13184: 0x00005D0D, + 13185: 0x00005D26, + 13186: 0x00005D25, + 13187: 0x00005D0F, + 13188: 0x00005D30, + 13189: 0x00005D12, + 13190: 0x00005D23, + 13191: 0x00005D1F, + 13192: 0x00005D2E, + 13193: 0x00005E3E, + 13194: 0x00005E34, + 13195: 0x00005EB1, + 13196: 0x00005EB4, + 13197: 0x00005EB9, + 13198: 0x00005EB2, + 13199: 0x00005EB3, + 13200: 0x00005F36, + 13201: 0x00005F38, + 13202: 0x00005F9B, + 13203: 0x00005F96, + 13204: 0x00005F9F, + 13205: 0x0000608A, + 13206: 0x00006090, + 13207: 0x00006086, + 13208: 0x000060BE, + 13209: 0x000060B0, + 13210: 0x000060BA, + 13211: 0x000060D3, + 13212: 0x000060D4, + 13213: 0x000060CF, + 13214: 0x000060E4, + 13215: 0x000060D9, + 13216: 0x000060DD, + 13217: 0x000060C8, + 13218: 0x000060B1, + 13219: 0x000060DB, + 13220: 0x000060B7, + 13221: 0x000060CA, + 13222: 0x000060BF, + 13223: 0x000060C3, + 13224: 0x000060CD, + 13225: 0x000060C0, + 13226: 0x00006332, + 13227: 0x00006365, + 13228: 0x0000638A, + 13229: 0x00006382, + 13230: 0x0000637D, + 13231: 0x000063BD, + 13232: 0x0000639E, + 13233: 0x000063AD, + 13234: 0x0000639D, + 13235: 0x00006397, + 13236: 0x000063AB, + 13237: 0x0000638E, + 13238: 0x0000636F, + 13239: 0x00006387, + 13240: 0x00006390, + 13241: 0x0000636E, + 13242: 0x000063AF, + 13243: 0x00006375, + 13244: 0x0000639C, + 13245: 0x0000636D, + 13246: 0x000063AE, + 13247: 0x0000637C, + 13248: 0x000063A4, + 13249: 0x0000633B, + 13250: 0x0000639F, + 13251: 0x00006378, + 13252: 0x00006385, + 13253: 0x00006381, + 13254: 0x00006391, + 13255: 0x0000638D, + 13256: 0x00006370, + 13257: 0x00006553, + 13258: 0x000065CD, + 13259: 0x00006665, + 13260: 0x00006661, + 13261: 0x0000665B, + 13262: 0x00006659, + 13263: 0x0000665C, + 13264: 0x00006662, + 13265: 0x00006718, + 13266: 0x00006879, + 13267: 0x00006887, + 13268: 0x00006890, + 13269: 0x0000689C, + 13270: 0x0000686D, + 13271: 0x0000686E, + 13272: 0x000068AE, + 13273: 0x000068AB, + 13274: 0x00006956, + 13275: 0x0000686F, + 13276: 0x000068A3, + 13277: 0x000068AC, + 13278: 0x000068A9, + 13279: 0x00006875, + 13280: 0x00006874, + 13281: 0x000068B2, + 13282: 0x0000688F, + 13283: 0x00006877, + 13284: 0x00006892, + 13285: 0x0000687C, + 13286: 0x0000686B, + 13287: 0x00006872, + 13288: 0x000068AA, + 13289: 0x00006880, + 13290: 0x00006871, + 13291: 0x0000687E, + 13292: 0x0000689B, + 13293: 0x00006896, + 13294: 0x0000688B, + 13295: 0x000068A0, + 13296: 0x00006889, + 13297: 0x000068A4, + 13298: 0x00006878, + 13299: 0x0000687B, + 13300: 0x00006891, + 13301: 0x0000688C, + 13302: 0x0000688A, + 13303: 0x0000687D, + 13304: 0x00006B36, + 13305: 0x00006B33, + 13306: 0x00006B37, + 13307: 0x00006B38, + 13308: 0x00006B91, + 13309: 0x00006B8F, + 13310: 0x00006B8D, + 13311: 0x00006B8E, + 13312: 0x00006B8C, + 13313: 0x00006C2A, + 13314: 0x00006DC0, + 13315: 0x00006DAB, + 13316: 0x00006DB4, + 13317: 0x00006DB3, + 13318: 0x00006E74, + 13319: 0x00006DAC, + 13320: 0x00006DE9, + 13321: 0x00006DE2, + 13322: 0x00006DB7, + 13323: 0x00006DF6, + 13324: 0x00006DD4, + 13325: 0x00006E00, + 13326: 0x00006DC8, + 13327: 0x00006DE0, + 13328: 0x00006DDF, + 13329: 0x00006DD6, + 13330: 0x00006DBE, + 13331: 0x00006DE5, + 13332: 0x00006DDC, + 13333: 0x00006DDD, + 13334: 0x00006DDB, + 13335: 0x00006DF4, + 13336: 0x00006DCA, + 13337: 0x00006DBD, + 13338: 0x00006DED, + 13339: 0x00006DF0, + 13340: 0x00006DBA, + 13341: 0x00006DD5, + 13342: 0x00006DC2, + 13343: 0x00006DCF, + 13344: 0x00006DC9, + 13345: 0x00006DD0, + 13346: 0x00006DF2, + 13347: 0x00006DD3, + 13348: 0x00006DFD, + 13349: 0x00006DD7, + 13350: 0x00006DCD, + 13351: 0x00006DE3, + 13352: 0x00006DBB, + 13353: 0x000070FA, + 13354: 0x0000710D, + 13355: 0x000070F7, + 13356: 0x00007117, + 13357: 0x000070F4, + 13358: 0x0000710C, + 13359: 0x000070F0, + 13360: 0x00007104, + 13361: 0x000070F3, + 13362: 0x00007110, + 13363: 0x000070FC, + 13364: 0x000070FF, + 13365: 0x00007106, + 13366: 0x00007113, + 13367: 0x00007100, + 13368: 0x000070F8, + 13369: 0x000070F6, + 13370: 0x0000710B, + 13371: 0x00007102, + 13372: 0x0000710E, + 13373: 0x0000727E, + 13374: 0x0000727B, + 13375: 0x0000727C, + 13376: 0x0000727F, + 13377: 0x0000731D, + 13378: 0x00007317, + 13379: 0x00007307, + 13380: 0x00007311, + 13381: 0x00007318, + 13382: 0x0000730A, + 13383: 0x00007308, + 13384: 0x000072FF, + 13385: 0x0000730F, + 13386: 0x0000731E, + 13387: 0x00007388, + 13388: 0x000073F6, + 13389: 0x000073F8, + 13390: 0x000073F5, + 13391: 0x00007404, + 13392: 0x00007401, + 13393: 0x000073FD, + 13394: 0x00007407, + 13395: 0x00007400, + 13396: 0x000073FA, + 13397: 0x000073FC, + 13398: 0x000073FF, + 13399: 0x0000740C, + 13400: 0x0000740B, + 13401: 0x000073F4, + 13402: 0x00007408, + 13403: 0x00007564, + 13404: 0x00007563, + 13405: 0x000075CE, + 13406: 0x000075D2, + 13407: 0x000075CF, + 13408: 0x000075CB, + 13409: 0x000075CC, + 13410: 0x000075D1, + 13411: 0x000075D0, + 13412: 0x0000768F, + 13413: 0x00007689, + 13414: 0x000076D3, + 13415: 0x00007739, + 13416: 0x0000772F, + 13417: 0x0000772D, + 13418: 0x00007731, + 13419: 0x00007732, + 13420: 0x00007734, + 13421: 0x00007733, + 13422: 0x0000773D, + 13423: 0x00007725, + 13424: 0x0000773B, + 13425: 0x00007735, + 13426: 0x00007848, + 13427: 0x00007852, + 13428: 0x00007849, + 13429: 0x0000784D, + 13430: 0x0000784A, + 13431: 0x0000784C, + 13432: 0x00007826, + 13433: 0x00007845, + 13434: 0x00007850, + 13435: 0x00007964, + 13436: 0x00007967, + 13437: 0x00007969, + 13438: 0x0000796A, + 13439: 0x00007963, + 13440: 0x0000796B, + 13441: 0x00007961, + 13442: 0x000079BB, + 13443: 0x000079FA, + 13444: 0x000079F8, + 13445: 0x000079F6, + 13446: 0x000079F7, + 13447: 0x00007A8F, + 13448: 0x00007A94, + 13449: 0x00007A90, + 13450: 0x00007B35, + 13451: 0x00007B47, + 13452: 0x00007B34, + 13453: 0x00007B25, + 13454: 0x00007B30, + 13455: 0x00007B22, + 13456: 0x00007B24, + 13457: 0x00007B33, + 13458: 0x00007B18, + 13459: 0x00007B2A, + 13460: 0x00007B1D, + 13461: 0x00007B31, + 13462: 0x00007B2B, + 13463: 0x00007B2D, + 13464: 0x00007B2F, + 13465: 0x00007B32, + 13466: 0x00007B38, + 13467: 0x00007B1A, + 13468: 0x00007B23, + 13469: 0x00007C94, + 13470: 0x00007C98, + 13471: 0x00007C96, + 13472: 0x00007CA3, + 13473: 0x00007D35, + 13474: 0x00007D3D, + 13475: 0x00007D38, + 13476: 0x00007D36, + 13477: 0x00007D3A, + 13478: 0x00007D45, + 13479: 0x00007D2C, + 13480: 0x00007D29, + 13481: 0x00007D41, + 13482: 0x00007D47, + 13483: 0x00007D3E, + 13484: 0x00007D3F, + 13485: 0x00007D4A, + 13486: 0x00007D3B, + 13487: 0x00007D28, + 13488: 0x00007F63, + 13489: 0x00007F95, + 13490: 0x00007F9C, + 13491: 0x00007F9D, + 13492: 0x00007F9B, + 13493: 0x00007FCA, + 13494: 0x00007FCB, + 13495: 0x00007FCD, + 13496: 0x00007FD0, + 13497: 0x00007FD1, + 13498: 0x00007FC7, + 13499: 0x00007FCF, + 13500: 0x00007FC9, + 13501: 0x0000801F, + 13502: 0x0000801E, + 13503: 0x0000801B, + 13504: 0x00008047, + 13505: 0x00008043, + 13506: 0x00008048, + 13507: 0x00008118, + 13508: 0x00008125, + 13509: 0x00008119, + 13510: 0x0000811B, + 13511: 0x0000812D, + 13512: 0x0000811F, + 13513: 0x0000812C, + 13514: 0x0000811E, + 13515: 0x00008121, + 13516: 0x00008115, + 13517: 0x00008127, + 13518: 0x0000811D, + 13519: 0x00008122, + 13520: 0x00008211, + 13521: 0x00008238, + 13522: 0x00008233, + 13523: 0x0000823A, + 13524: 0x00008234, + 13525: 0x00008232, + 13526: 0x00008274, + 13527: 0x00008390, + 13528: 0x000083A3, + 13529: 0x000083A8, + 13530: 0x0000838D, + 13531: 0x0000837A, + 13532: 0x00008373, + 13533: 0x000083A4, + 13534: 0x00008374, + 13535: 0x0000838F, + 13536: 0x00008381, + 13537: 0x00008395, + 13538: 0x00008399, + 13539: 0x00008375, + 13540: 0x00008394, + 13541: 0x000083A9, + 13542: 0x0000837D, + 13543: 0x00008383, + 13544: 0x0000838C, + 13545: 0x0000839D, + 13546: 0x0000839B, + 13547: 0x000083AA, + 13548: 0x0000838B, + 13549: 0x0000837E, + 13550: 0x000083A5, + 13551: 0x000083AF, + 13552: 0x00008388, + 13553: 0x00008397, + 13554: 0x000083B0, + 13555: 0x0000837F, + 13556: 0x000083A6, + 13557: 0x00008387, + 13558: 0x000083AE, + 13559: 0x00008376, + 13560: 0x0000839A, + 13561: 0x00008659, + 13562: 0x00008656, + 13563: 0x000086BF, + 13564: 0x000086B7, + 13565: 0x000086C2, + 13566: 0x000086C1, + 13567: 0x000086C5, + 13568: 0x000086BA, + 13569: 0x000086B0, + 13570: 0x000086C8, + 13571: 0x000086B9, + 13572: 0x000086B3, + 13573: 0x000086B8, + 13574: 0x000086CC, + 13575: 0x000086B4, + 13576: 0x000086BB, + 13577: 0x000086BC, + 13578: 0x000086C3, + 13579: 0x000086BD, + 13580: 0x000086BE, + 13581: 0x00008852, + 13582: 0x00008889, + 13583: 0x00008895, + 13584: 0x000088A8, + 13585: 0x000088A2, + 13586: 0x000088AA, + 13587: 0x0000889A, + 13588: 0x00008891, + 13589: 0x000088A1, + 13590: 0x0000889F, + 13591: 0x00008898, + 13592: 0x000088A7, + 13593: 0x00008899, + 13594: 0x0000889B, + 13595: 0x00008897, + 13596: 0x000088A4, + 13597: 0x000088AC, + 13598: 0x0000888C, + 13599: 0x00008893, + 13600: 0x0000888E, + 13601: 0x00008982, + 13602: 0x000089D6, + 13603: 0x000089D9, + 13604: 0x000089D5, + 13605: 0x00008A30, + 13606: 0x00008A27, + 13607: 0x00008A2C, + 13608: 0x00008A1E, + 13609: 0x00008C39, + 13610: 0x00008C3B, + 13611: 0x00008C5C, + 13612: 0x00008C5D, + 13613: 0x00008C7D, + 13614: 0x00008CA5, + 13615: 0x00008D7D, + 13616: 0x00008D7B, + 13617: 0x00008D79, + 13618: 0x00008DBC, + 13619: 0x00008DC2, + 13620: 0x00008DB9, + 13621: 0x00008DBF, + 13622: 0x00008DC1, + 13623: 0x00008ED8, + 13624: 0x00008EDE, + 13625: 0x00008EDD, + 13626: 0x00008EDC, + 13627: 0x00008ED7, + 13628: 0x00008EE0, + 13629: 0x00008EE1, + 13630: 0x00009024, + 13631: 0x0000900B, + 13632: 0x00009011, + 13633: 0x0000901C, + 13634: 0x0000900C, + 13635: 0x00009021, + 13636: 0x000090EF, + 13637: 0x000090EA, + 13638: 0x000090F0, + 13639: 0x000090F4, + 13640: 0x000090F2, + 13641: 0x000090F3, + 13642: 0x000090D4, + 13643: 0x000090EB, + 13644: 0x000090EC, + 13645: 0x000090E9, + 13646: 0x00009156, + 13647: 0x00009158, + 13648: 0x0000915A, + 13649: 0x00009153, + 13650: 0x00009155, + 13651: 0x000091EC, + 13652: 0x000091F4, + 13653: 0x000091F1, + 13654: 0x000091F3, + 13655: 0x000091F8, + 13656: 0x000091E4, + 13657: 0x000091F9, + 13658: 0x000091EA, + 13659: 0x000091EB, + 13660: 0x000091F7, + 13661: 0x000091E8, + 13662: 0x000091EE, + 13663: 0x0000957A, + 13664: 0x00009586, + 13665: 0x00009588, + 13666: 0x0000967C, + 13667: 0x0000966D, + 13668: 0x0000966B, + 13669: 0x00009671, + 13670: 0x0000966F, + 13671: 0x000096BF, + 13672: 0x0000976A, + 13673: 0x00009804, + 13674: 0x000098E5, + 13675: 0x00009997, + 13676: 0x0000509B, + 13677: 0x00005095, + 13678: 0x00005094, + 13679: 0x0000509E, + 13680: 0x0000508B, + 13681: 0x000050A3, + 13682: 0x00005083, + 13683: 0x0000508C, + 13684: 0x0000508E, + 13685: 0x0000509D, + 13686: 0x00005068, + 13687: 0x0000509C, + 13688: 0x00005092, + 13689: 0x00005082, + 13690: 0x00005087, + 13691: 0x0000515F, + 13692: 0x000051D4, + 13693: 0x00005312, + 13694: 0x00005311, + 13695: 0x000053A4, + 13696: 0x000053A7, + 13697: 0x00005591, + 13698: 0x000055A8, + 13699: 0x000055A5, + 13700: 0x000055AD, + 13701: 0x00005577, + 13702: 0x00005645, + 13703: 0x000055A2, + 13704: 0x00005593, + 13705: 0x00005588, + 13706: 0x0000558F, + 13707: 0x000055B5, + 13708: 0x00005581, + 13709: 0x000055A3, + 13710: 0x00005592, + 13711: 0x000055A4, + 13712: 0x0000557D, + 13713: 0x0000558C, + 13714: 0x000055A6, + 13715: 0x0000557F, + 13716: 0x00005595, + 13717: 0x000055A1, + 13718: 0x0000558E, + 13719: 0x0000570C, + 13720: 0x00005829, + 13721: 0x00005837, + 13722: 0x00005819, + 13723: 0x0000581E, + 13724: 0x00005827, + 13725: 0x00005823, + 13726: 0x00005828, + 13727: 0x000057F5, + 13728: 0x00005848, + 13729: 0x00005825, + 13730: 0x0000581C, + 13731: 0x0000581B, + 13732: 0x00005833, + 13733: 0x0000583F, + 13734: 0x00005836, + 13735: 0x0000582E, + 13736: 0x00005839, + 13737: 0x00005838, + 13738: 0x0000582D, + 13739: 0x0000582C, + 13740: 0x0000583B, + 13741: 0x00005961, + 13742: 0x00005AAF, + 13743: 0x00005A94, + 13744: 0x00005A9F, + 13745: 0x00005A7A, + 13746: 0x00005AA2, + 13747: 0x00005A9E, + 13748: 0x00005A78, + 13749: 0x00005AA6, + 13750: 0x00005A7C, + 13751: 0x00005AA5, + 13752: 0x00005AAC, + 13753: 0x00005A95, + 13754: 0x00005AAE, + 13755: 0x00005A37, + 13756: 0x00005A84, + 13757: 0x00005A8A, + 13758: 0x00005A97, + 13759: 0x00005A83, + 13760: 0x00005A8B, + 13761: 0x00005AA9, + 13762: 0x00005A7B, + 13763: 0x00005A7D, + 13764: 0x00005A8C, + 13765: 0x00005A9C, + 13766: 0x00005A8F, + 13767: 0x00005A93, + 13768: 0x00005A9D, + 13769: 0x00005BEA, + 13770: 0x00005BCD, + 13771: 0x00005BCB, + 13772: 0x00005BD4, + 13773: 0x00005BD1, + 13774: 0x00005BCA, + 13775: 0x00005BCE, + 13776: 0x00005C0C, + 13777: 0x00005C30, + 13778: 0x00005D37, + 13779: 0x00005D43, + 13780: 0x00005D6B, + 13781: 0x00005D41, + 13782: 0x00005D4B, + 13783: 0x00005D3F, + 13784: 0x00005D35, + 13785: 0x00005D51, + 13786: 0x00005D4E, + 13787: 0x00005D55, + 13788: 0x00005D33, + 13789: 0x00005D3A, + 13790: 0x00005D52, + 13791: 0x00005D3D, + 13792: 0x00005D31, + 13793: 0x00005D59, + 13794: 0x00005D42, + 13795: 0x00005D39, + 13796: 0x00005D49, + 13797: 0x00005D38, + 13798: 0x00005D3C, + 13799: 0x00005D32, + 13800: 0x00005D36, + 13801: 0x00005D40, + 13802: 0x00005D45, + 13803: 0x00005E44, + 13804: 0x00005E41, + 13805: 0x00005F58, + 13806: 0x00005FA6, + 13807: 0x00005FA5, + 13808: 0x00005FAB, + 13809: 0x000060C9, + 13810: 0x000060B9, + 13811: 0x000060CC, + 13812: 0x000060E2, + 13813: 0x000060CE, + 13814: 0x000060C4, + 13815: 0x00006114, + 13816: 0x000060F2, + 13817: 0x0000610A, + 13818: 0x00006116, + 13819: 0x00006105, + 13820: 0x000060F5, + 13821: 0x00006113, + 13822: 0x000060F8, + 13823: 0x000060FC, + 13824: 0x000060FE, + 13825: 0x000060C1, + 13826: 0x00006103, + 13827: 0x00006118, + 13828: 0x0000611D, + 13829: 0x00006110, + 13830: 0x000060FF, + 13831: 0x00006104, + 13832: 0x0000610B, + 13833: 0x0000624A, + 13834: 0x00006394, + 13835: 0x000063B1, + 13836: 0x000063B0, + 13837: 0x000063CE, + 13838: 0x000063E5, + 13839: 0x000063E8, + 13840: 0x000063EF, + 13841: 0x000063C3, + 13842: 0x0000649D, + 13843: 0x000063F3, + 13844: 0x000063CA, + 13845: 0x000063E0, + 13846: 0x000063F6, + 13847: 0x000063D5, + 13848: 0x000063F2, + 13849: 0x000063F5, + 13850: 0x00006461, + 13851: 0x000063DF, + 13852: 0x000063BE, + 13853: 0x000063DD, + 13854: 0x000063DC, + 13855: 0x000063C4, + 13856: 0x000063D8, + 13857: 0x000063D3, + 13858: 0x000063C2, + 13859: 0x000063C7, + 13860: 0x000063CC, + 13861: 0x000063CB, + 13862: 0x000063C8, + 13863: 0x000063F0, + 13864: 0x000063D7, + 13865: 0x000063D9, + 13866: 0x00006532, + 13867: 0x00006567, + 13868: 0x0000656A, + 13869: 0x00006564, + 13870: 0x0000655C, + 13871: 0x00006568, + 13872: 0x00006565, + 13873: 0x0000658C, + 13874: 0x0000659D, + 13875: 0x0000659E, + 13876: 0x000065AE, + 13877: 0x000065D0, + 13878: 0x000065D2, + 13879: 0x0000667C, + 13880: 0x0000666C, + 13881: 0x0000667B, + 13882: 0x00006680, + 13883: 0x00006671, + 13884: 0x00006679, + 13885: 0x0000666A, + 13886: 0x00006672, + 13887: 0x00006701, + 13888: 0x0000690C, + 13889: 0x000068D3, + 13890: 0x00006904, + 13891: 0x000068DC, + 13892: 0x0000692A, + 13893: 0x000068EC, + 13894: 0x000068EA, + 13895: 0x000068F1, + 13896: 0x0000690F, + 13897: 0x000068D6, + 13898: 0x000068F7, + 13899: 0x000068EB, + 13900: 0x000068E4, + 13901: 0x000068F6, + 13902: 0x00006913, + 13903: 0x00006910, + 13904: 0x000068F3, + 13905: 0x000068E1, + 13906: 0x00006907, + 13907: 0x000068CC, + 13908: 0x00006908, + 13909: 0x00006970, + 13910: 0x000068B4, + 13911: 0x00006911, + 13912: 0x000068EF, + 13913: 0x000068C6, + 13914: 0x00006914, + 13915: 0x000068F8, + 13916: 0x000068D0, + 13917: 0x000068FD, + 13918: 0x000068FC, + 13919: 0x000068E8, + 13920: 0x0000690B, + 13921: 0x0000690A, + 13922: 0x00006917, + 13923: 0x000068CE, + 13924: 0x000068C8, + 13925: 0x000068DD, + 13926: 0x000068DE, + 13927: 0x000068E6, + 13928: 0x000068F4, + 13929: 0x000068D1, + 13930: 0x00006906, + 13931: 0x000068D4, + 13932: 0x000068E9, + 13933: 0x00006915, + 13934: 0x00006925, + 13935: 0x000068C7, + 13936: 0x00006B39, + 13937: 0x00006B3B, + 13938: 0x00006B3F, + 13939: 0x00006B3C, + 13940: 0x00006B94, + 13941: 0x00006B97, + 13942: 0x00006B99, + 13943: 0x00006B95, + 13944: 0x00006BBD, + 13945: 0x00006BF0, + 13946: 0x00006BF2, + 13947: 0x00006BF3, + 13948: 0x00006C30, + 13949: 0x00006DFC, + 13950: 0x00006E46, + 13951: 0x00006E47, + 13952: 0x00006E1F, + 13953: 0x00006E49, + 13954: 0x00006E88, + 13955: 0x00006E3C, + 13956: 0x00006E3D, + 13957: 0x00006E45, + 13958: 0x00006E62, + 13959: 0x00006E2B, + 13960: 0x00006E3F, + 13961: 0x00006E41, + 13962: 0x00006E5D, + 13963: 0x00006E73, + 13964: 0x00006E1C, + 13965: 0x00006E33, + 13966: 0x00006E4B, + 13967: 0x00006E40, + 13968: 0x00006E51, + 13969: 0x00006E3B, + 13970: 0x00006E03, + 13971: 0x00006E2E, + 13972: 0x00006E5E, + 13973: 0x00006E68, + 13974: 0x00006E5C, + 13975: 0x00006E61, + 13976: 0x00006E31, + 13977: 0x00006E28, + 13978: 0x00006E60, + 13979: 0x00006E71, + 13980: 0x00006E6B, + 13981: 0x00006E39, + 13982: 0x00006E22, + 13983: 0x00006E30, + 13984: 0x00006E53, + 13985: 0x00006E65, + 13986: 0x00006E27, + 13987: 0x00006E78, + 13988: 0x00006E64, + 13989: 0x00006E77, + 13990: 0x00006E55, + 13991: 0x00006E79, + 13992: 0x00006E52, + 13993: 0x00006E66, + 13994: 0x00006E35, + 13995: 0x00006E36, + 13996: 0x00006E5A, + 13997: 0x00007120, + 13998: 0x0000711E, + 13999: 0x0000712F, + 14000: 0x000070FB, + 14001: 0x0000712E, + 14002: 0x00007131, + 14003: 0x00007123, + 14004: 0x00007125, + 14005: 0x00007122, + 14006: 0x00007132, + 14007: 0x0000711F, + 14008: 0x00007128, + 14009: 0x0000713A, + 14010: 0x0000711B, + 14011: 0x0000724B, + 14012: 0x0000725A, + 14013: 0x00007288, + 14014: 0x00007289, + 14015: 0x00007286, + 14016: 0x00007285, + 14017: 0x0000728B, + 14018: 0x00007312, + 14019: 0x0000730B, + 14020: 0x00007330, + 14021: 0x00007322, + 14022: 0x00007331, + 14023: 0x00007333, + 14024: 0x00007327, + 14025: 0x00007332, + 14026: 0x0000732D, + 14027: 0x00007326, + 14028: 0x00007323, + 14029: 0x00007335, + 14030: 0x0000730C, + 14031: 0x0000742E, + 14032: 0x0000742C, + 14033: 0x00007430, + 14034: 0x0000742B, + 14035: 0x00007416, + 14036: 0x0000741A, + 14037: 0x00007421, + 14038: 0x0000742D, + 14039: 0x00007431, + 14040: 0x00007424, + 14041: 0x00007423, + 14042: 0x0000741D, + 14043: 0x00007429, + 14044: 0x00007420, + 14045: 0x00007432, + 14046: 0x000074FB, + 14047: 0x0000752F, + 14048: 0x0000756F, + 14049: 0x0000756C, + 14050: 0x000075E7, + 14051: 0x000075DA, + 14052: 0x000075E1, + 14053: 0x000075E6, + 14054: 0x000075DD, + 14055: 0x000075DF, + 14056: 0x000075E4, + 14057: 0x000075D7, + 14058: 0x00007695, + 14059: 0x00007692, + 14060: 0x000076DA, + 14061: 0x00007746, + 14062: 0x00007747, + 14063: 0x00007744, + 14064: 0x0000774D, + 14065: 0x00007745, + 14066: 0x0000774A, + 14067: 0x0000774E, + 14068: 0x0000774B, + 14069: 0x0000774C, + 14070: 0x000077DE, + 14071: 0x000077EC, + 14072: 0x00007860, + 14073: 0x00007864, + 14074: 0x00007865, + 14075: 0x0000785C, + 14076: 0x0000786D, + 14077: 0x00007871, + 14078: 0x0000786A, + 14079: 0x0000786E, + 14080: 0x00007870, + 14081: 0x00007869, + 14082: 0x00007868, + 14083: 0x0000785E, + 14084: 0x00007862, + 14085: 0x00007974, + 14086: 0x00007973, + 14087: 0x00007972, + 14088: 0x00007970, + 14089: 0x00007A02, + 14090: 0x00007A0A, + 14091: 0x00007A03, + 14092: 0x00007A0C, + 14093: 0x00007A04, + 14094: 0x00007A99, + 14095: 0x00007AE6, + 14096: 0x00007AE4, + 14097: 0x00007B4A, + 14098: 0x00007B3B, + 14099: 0x00007B44, + 14100: 0x00007B48, + 14101: 0x00007B4C, + 14102: 0x00007B4E, + 14103: 0x00007B40, + 14104: 0x00007B58, + 14105: 0x00007B45, + 14106: 0x00007CA2, + 14107: 0x00007C9E, + 14108: 0x00007CA8, + 14109: 0x00007CA1, + 14110: 0x00007D58, + 14111: 0x00007D6F, + 14112: 0x00007D63, + 14113: 0x00007D53, + 14114: 0x00007D56, + 14115: 0x00007D67, + 14116: 0x00007D6A, + 14117: 0x00007D4F, + 14118: 0x00007D6D, + 14119: 0x00007D5C, + 14120: 0x00007D6B, + 14121: 0x00007D52, + 14122: 0x00007D54, + 14123: 0x00007D69, + 14124: 0x00007D51, + 14125: 0x00007D5F, + 14126: 0x00007D4E, + 14127: 0x00007F3E, + 14128: 0x00007F3F, + 14129: 0x00007F65, + 14130: 0x00007F66, + 14131: 0x00007FA2, + 14132: 0x00007FA0, + 14133: 0x00007FA1, + 14134: 0x00007FD7, + 14135: 0x00008051, + 14136: 0x0000804F, + 14137: 0x00008050, + 14138: 0x000080FE, + 14139: 0x000080D4, + 14140: 0x00008143, + 14141: 0x0000814A, + 14142: 0x00008152, + 14143: 0x0000814F, + 14144: 0x00008147, + 14145: 0x0000813D, + 14146: 0x0000814D, + 14147: 0x0000813A, + 14148: 0x000081E6, + 14149: 0x000081EE, + 14150: 0x000081F7, + 14151: 0x000081F8, + 14152: 0x000081F9, + 14153: 0x00008204, + 14154: 0x0000823C, + 14155: 0x0000823D, + 14156: 0x0000823F, + 14157: 0x00008275, + 14158: 0x0000833B, + 14159: 0x000083CF, + 14160: 0x000083F9, + 14161: 0x00008423, + 14162: 0x000083C0, + 14163: 0x000083E8, + 14164: 0x00008412, + 14165: 0x000083E7, + 14166: 0x000083E4, + 14167: 0x000083FC, + 14168: 0x000083F6, + 14169: 0x00008410, + 14170: 0x000083C6, + 14171: 0x000083C8, + 14172: 0x000083EB, + 14173: 0x000083E3, + 14174: 0x000083BF, + 14175: 0x00008401, + 14176: 0x000083DD, + 14177: 0x000083E5, + 14178: 0x000083D8, + 14179: 0x000083FF, + 14180: 0x000083E1, + 14181: 0x000083CB, + 14182: 0x000083CE, + 14183: 0x000083D6, + 14184: 0x000083F5, + 14185: 0x000083C9, + 14186: 0x00008409, + 14187: 0x0000840F, + 14188: 0x000083DE, + 14189: 0x00008411, + 14190: 0x00008406, + 14191: 0x000083C2, + 14192: 0x000083F3, + 14193: 0x000083D5, + 14194: 0x000083FA, + 14195: 0x000083C7, + 14196: 0x000083D1, + 14197: 0x000083EA, + 14198: 0x00008413, + 14199: 0x000083C3, + 14200: 0x000083EC, + 14201: 0x000083EE, + 14202: 0x000083C4, + 14203: 0x000083FB, + 14204: 0x000083D7, + 14205: 0x000083E2, + 14206: 0x0000841B, + 14207: 0x000083DB, + 14208: 0x000083FE, + 14209: 0x000086D8, + 14210: 0x000086E2, + 14211: 0x000086E6, + 14212: 0x000086D3, + 14213: 0x000086E3, + 14214: 0x000086DA, + 14215: 0x000086EA, + 14216: 0x000086DD, + 14217: 0x000086EB, + 14218: 0x000086DC, + 14219: 0x000086EC, + 14220: 0x000086E9, + 14221: 0x000086D7, + 14222: 0x000086E8, + 14223: 0x000086D1, + 14224: 0x00008848, + 14225: 0x00008856, + 14226: 0x00008855, + 14227: 0x000088BA, + 14228: 0x000088D7, + 14229: 0x000088B9, + 14230: 0x000088B8, + 14231: 0x000088C0, + 14232: 0x000088BE, + 14233: 0x000088B6, + 14234: 0x000088BC, + 14235: 0x000088B7, + 14236: 0x000088BD, + 14237: 0x000088B2, + 14238: 0x00008901, + 14239: 0x000088C9, + 14240: 0x00008995, + 14241: 0x00008998, + 14242: 0x00008997, + 14243: 0x000089DD, + 14244: 0x000089DA, + 14245: 0x000089DB, + 14246: 0x00008A4E, + 14247: 0x00008A4D, + 14248: 0x00008A39, + 14249: 0x00008A59, + 14250: 0x00008A40, + 14251: 0x00008A57, + 14252: 0x00008A58, + 14253: 0x00008A44, + 14254: 0x00008A45, + 14255: 0x00008A52, + 14256: 0x00008A48, + 14257: 0x00008A51, + 14258: 0x00008A4A, + 14259: 0x00008A4C, + 14260: 0x00008A4F, + 14261: 0x00008C5F, + 14262: 0x00008C81, + 14263: 0x00008C80, + 14264: 0x00008CBA, + 14265: 0x00008CBE, + 14266: 0x00008CB0, + 14267: 0x00008CB9, + 14268: 0x00008CB5, + 14269: 0x00008D84, + 14270: 0x00008D80, + 14271: 0x00008D89, + 14272: 0x00008DD8, + 14273: 0x00008DD3, + 14274: 0x00008DCD, + 14275: 0x00008DC7, + 14276: 0x00008DD6, + 14277: 0x00008DDC, + 14278: 0x00008DCF, + 14279: 0x00008DD5, + 14280: 0x00008DD9, + 14281: 0x00008DC8, + 14282: 0x00008DD7, + 14283: 0x00008DC5, + 14284: 0x00008EEF, + 14285: 0x00008EF7, + 14286: 0x00008EFA, + 14287: 0x00008EF9, + 14288: 0x00008EE6, + 14289: 0x00008EEE, + 14290: 0x00008EE5, + 14291: 0x00008EF5, + 14292: 0x00008EE7, + 14293: 0x00008EE8, + 14294: 0x00008EF6, + 14295: 0x00008EEB, + 14296: 0x00008EF1, + 14297: 0x00008EEC, + 14298: 0x00008EF4, + 14299: 0x00008EE9, + 14300: 0x0000902D, + 14301: 0x00009034, + 14302: 0x0000902F, + 14303: 0x00009106, + 14304: 0x0000912C, + 14305: 0x00009104, + 14306: 0x000090FF, + 14307: 0x000090FC, + 14308: 0x00009108, + 14309: 0x000090F9, + 14310: 0x000090FB, + 14311: 0x00009101, + 14312: 0x00009100, + 14313: 0x00009107, + 14314: 0x00009105, + 14315: 0x00009103, + 14316: 0x00009161, + 14317: 0x00009164, + 14318: 0x0000915F, + 14319: 0x00009162, + 14320: 0x00009160, + 14321: 0x00009201, + 14322: 0x0000920A, + 14323: 0x00009225, + 14324: 0x00009203, + 14325: 0x0000921A, + 14326: 0x00009226, + 14327: 0x0000920F, + 14328: 0x0000920C, + 14329: 0x00009200, + 14330: 0x00009212, + 14331: 0x000091FF, + 14332: 0x000091FD, + 14333: 0x00009206, + 14334: 0x00009204, + 14335: 0x00009227, + 14336: 0x00009202, + 14337: 0x0000921C, + 14338: 0x00009224, + 14339: 0x00009219, + 14340: 0x00009217, + 14341: 0x00009205, + 14342: 0x00009216, + 14343: 0x0000957B, + 14344: 0x0000958D, + 14345: 0x0000958C, + 14346: 0x00009590, + 14347: 0x00009687, + 14348: 0x0000967E, + 14349: 0x00009688, + 14350: 0x00009689, + 14351: 0x00009683, + 14352: 0x00009680, + 14353: 0x000096C2, + 14354: 0x000096C8, + 14355: 0x000096C3, + 14356: 0x000096F1, + 14357: 0x000096F0, + 14358: 0x0000976C, + 14359: 0x00009770, + 14360: 0x0000976E, + 14361: 0x00009807, + 14362: 0x000098A9, + 14363: 0x000098EB, + 14364: 0x00009CE6, + 14365: 0x00009EF9, + 14366: 0x00004E83, + 14367: 0x00004E84, + 14368: 0x00004EB6, + 14369: 0x000050BD, + 14370: 0x000050BF, + 14371: 0x000050C6, + 14372: 0x000050AE, + 14373: 0x000050C4, + 14374: 0x000050CA, + 14375: 0x000050B4, + 14376: 0x000050C8, + 14377: 0x000050C2, + 14378: 0x000050B0, + 14379: 0x000050C1, + 14380: 0x000050BA, + 14381: 0x000050B1, + 14382: 0x000050CB, + 14383: 0x000050C9, + 14384: 0x000050B6, + 14385: 0x000050B8, + 14386: 0x000051D7, + 14387: 0x0000527A, + 14388: 0x00005278, + 14389: 0x0000527B, + 14390: 0x0000527C, + 14391: 0x000055C3, + 14392: 0x000055DB, + 14393: 0x000055CC, + 14394: 0x000055D0, + 14395: 0x000055CB, + 14396: 0x000055CA, + 14397: 0x000055DD, + 14398: 0x000055C0, + 14399: 0x000055D4, + 14400: 0x000055C4, + 14401: 0x000055E9, + 14402: 0x000055BF, + 14403: 0x000055D2, + 14404: 0x0000558D, + 14405: 0x000055CF, + 14406: 0x000055D5, + 14407: 0x000055E2, + 14408: 0x000055D6, + 14409: 0x000055C8, + 14410: 0x000055F2, + 14411: 0x000055CD, + 14412: 0x000055D9, + 14413: 0x000055C2, + 14414: 0x00005714, + 14415: 0x00005853, + 14416: 0x00005868, + 14417: 0x00005864, + 14418: 0x0000584F, + 14419: 0x0000584D, + 14420: 0x00005849, + 14421: 0x0000586F, + 14422: 0x00005855, + 14423: 0x0000584E, + 14424: 0x0000585D, + 14425: 0x00005859, + 14426: 0x00005865, + 14427: 0x0000585B, + 14428: 0x0000583D, + 14429: 0x00005863, + 14430: 0x00005871, + 14431: 0x000058FC, + 14432: 0x00005AC7, + 14433: 0x00005AC4, + 14434: 0x00005ACB, + 14435: 0x00005ABA, + 14436: 0x00005AB8, + 14437: 0x00005AB1, + 14438: 0x00005AB5, + 14439: 0x00005AB0, + 14440: 0x00005ABF, + 14441: 0x00005AC8, + 14442: 0x00005ABB, + 14443: 0x00005AC6, + 14444: 0x00005AB7, + 14445: 0x00005AC0, + 14446: 0x00005ACA, + 14447: 0x00005AB4, + 14448: 0x00005AB6, + 14449: 0x00005ACD, + 14450: 0x00005AB9, + 14451: 0x00005A90, + 14452: 0x00005BD6, + 14453: 0x00005BD8, + 14454: 0x00005BD9, + 14455: 0x00005C1F, + 14456: 0x00005C33, + 14457: 0x00005D71, + 14458: 0x00005D63, + 14459: 0x00005D4A, + 14460: 0x00005D65, + 14461: 0x00005D72, + 14462: 0x00005D6C, + 14463: 0x00005D5E, + 14464: 0x00005D68, + 14465: 0x00005D67, + 14466: 0x00005D62, + 14467: 0x00005DF0, + 14468: 0x00005E4F, + 14469: 0x00005E4E, + 14470: 0x00005E4A, + 14471: 0x00005E4D, + 14472: 0x00005E4B, + 14473: 0x00005EC5, + 14474: 0x00005ECC, + 14475: 0x00005EC6, + 14476: 0x00005ECB, + 14477: 0x00005EC7, + 14478: 0x00005F40, + 14479: 0x00005FAF, + 14480: 0x00005FAD, + 14481: 0x000060F7, + 14482: 0x00006149, + 14483: 0x0000614A, + 14484: 0x0000612B, + 14485: 0x00006145, + 14486: 0x00006136, + 14487: 0x00006132, + 14488: 0x0000612E, + 14489: 0x00006146, + 14490: 0x0000612F, + 14491: 0x0000614F, + 14492: 0x00006129, + 14493: 0x00006140, + 14494: 0x00006220, + 14495: 0x00009168, + 14496: 0x00006223, + 14497: 0x00006225, + 14498: 0x00006224, + 14499: 0x000063C5, + 14500: 0x000063F1, + 14501: 0x000063EB, + 14502: 0x00006410, + 14503: 0x00006412, + 14504: 0x00006409, + 14505: 0x00006420, + 14506: 0x00006424, + 14507: 0x00006433, + 14508: 0x00006443, + 14509: 0x0000641F, + 14510: 0x00006415, + 14511: 0x00006418, + 14512: 0x00006439, + 14513: 0x00006437, + 14514: 0x00006422, + 14515: 0x00006423, + 14516: 0x0000640C, + 14517: 0x00006426, + 14518: 0x00006430, + 14519: 0x00006428, + 14520: 0x00006441, + 14521: 0x00006435, + 14522: 0x0000642F, + 14523: 0x0000640A, + 14524: 0x0000641A, + 14525: 0x00006440, + 14526: 0x00006425, + 14527: 0x00006427, + 14528: 0x0000640B, + 14529: 0x000063E7, + 14530: 0x0000641B, + 14531: 0x0000642E, + 14532: 0x00006421, + 14533: 0x0000640E, + 14534: 0x0000656F, + 14535: 0x00006592, + 14536: 0x000065D3, + 14537: 0x00006686, + 14538: 0x0000668C, + 14539: 0x00006695, + 14540: 0x00006690, + 14541: 0x0000668B, + 14542: 0x0000668A, + 14543: 0x00006699, + 14544: 0x00006694, + 14545: 0x00006678, + 14546: 0x00006720, + 14547: 0x00006966, + 14548: 0x0000695F, + 14549: 0x00006938, + 14550: 0x0000694E, + 14551: 0x00006962, + 14552: 0x00006971, + 14553: 0x0000693F, + 14554: 0x00006945, + 14555: 0x0000696A, + 14556: 0x00006939, + 14557: 0x00006942, + 14558: 0x00006957, + 14559: 0x00006959, + 14560: 0x0000697A, + 14561: 0x00006948, + 14562: 0x00006949, + 14563: 0x00006935, + 14564: 0x0000696C, + 14565: 0x00006933, + 14566: 0x0000693D, + 14567: 0x00006965, + 14568: 0x000068F0, + 14569: 0x00006978, + 14570: 0x00006934, + 14571: 0x00006969, + 14572: 0x00006940, + 14573: 0x0000696F, + 14574: 0x00006944, + 14575: 0x00006976, + 14576: 0x00006958, + 14577: 0x00006941, + 14578: 0x00006974, + 14579: 0x0000694C, + 14580: 0x0000693B, + 14581: 0x0000694B, + 14582: 0x00006937, + 14583: 0x0000695C, + 14584: 0x0000694F, + 14585: 0x00006951, + 14586: 0x00006932, + 14587: 0x00006952, + 14588: 0x0000692F, + 14589: 0x0000697B, + 14590: 0x0000693C, + 14591: 0x00006B46, + 14592: 0x00006B45, + 14593: 0x00006B43, + 14594: 0x00006B42, + 14595: 0x00006B48, + 14596: 0x00006B41, + 14597: 0x00006B9B, + 14598: 0x0000FA0D, + 14599: 0x00006BFB, + 14600: 0x00006BFC, + 14601: 0x00006BF9, + 14602: 0x00006BF7, + 14603: 0x00006BF8, + 14604: 0x00006E9B, + 14605: 0x00006ED6, + 14606: 0x00006EC8, + 14607: 0x00006E8F, + 14608: 0x00006EC0, + 14609: 0x00006E9F, + 14610: 0x00006E93, + 14611: 0x00006E94, + 14612: 0x00006EA0, + 14613: 0x00006EB1, + 14614: 0x00006EB9, + 14615: 0x00006EC6, + 14616: 0x00006ED2, + 14617: 0x00006EBD, + 14618: 0x00006EC1, + 14619: 0x00006E9E, + 14620: 0x00006EC9, + 14621: 0x00006EB7, + 14622: 0x00006EB0, + 14623: 0x00006ECD, + 14624: 0x00006EA6, + 14625: 0x00006ECF, + 14626: 0x00006EB2, + 14627: 0x00006EBE, + 14628: 0x00006EC3, + 14629: 0x00006EDC, + 14630: 0x00006ED8, + 14631: 0x00006E99, + 14632: 0x00006E92, + 14633: 0x00006E8E, + 14634: 0x00006E8D, + 14635: 0x00006EA4, + 14636: 0x00006EA1, + 14637: 0x00006EBF, + 14638: 0x00006EB3, + 14639: 0x00006ED0, + 14640: 0x00006ECA, + 14641: 0x00006E97, + 14642: 0x00006EAE, + 14643: 0x00006EA3, + 14644: 0x00007147, + 14645: 0x00007154, + 14646: 0x00007152, + 14647: 0x00007163, + 14648: 0x00007160, + 14649: 0x00007141, + 14650: 0x0000715D, + 14651: 0x00007162, + 14652: 0x00007172, + 14653: 0x00007178, + 14654: 0x0000716A, + 14655: 0x00007161, + 14656: 0x00007142, + 14657: 0x00007158, + 14658: 0x00007143, + 14659: 0x0000714B, + 14660: 0x00007170, + 14661: 0x0000715F, + 14662: 0x00007150, + 14663: 0x00007153, + 14664: 0x00007144, + 14665: 0x0000714D, + 14666: 0x0000715A, + 14667: 0x0000724F, + 14668: 0x0000728D, + 14669: 0x0000728C, + 14670: 0x00007291, + 14671: 0x00007290, + 14672: 0x0000728E, + 14673: 0x0000733C, + 14674: 0x00007342, + 14675: 0x0000733B, + 14676: 0x0000733A, + 14677: 0x00007340, + 14678: 0x0000734A, + 14679: 0x00007349, + 14680: 0x00007444, + 14681: 0x0000744A, + 14682: 0x0000744B, + 14683: 0x00007452, + 14684: 0x00007451, + 14685: 0x00007457, + 14686: 0x00007440, + 14687: 0x0000744F, + 14688: 0x00007450, + 14689: 0x0000744E, + 14690: 0x00007442, + 14691: 0x00007446, + 14692: 0x0000744D, + 14693: 0x00007454, + 14694: 0x000074E1, + 14695: 0x000074FF, + 14696: 0x000074FE, + 14697: 0x000074FD, + 14698: 0x0000751D, + 14699: 0x00007579, + 14700: 0x00007577, + 14701: 0x00006983, + 14702: 0x000075EF, + 14703: 0x0000760F, + 14704: 0x00007603, + 14705: 0x000075F7, + 14706: 0x000075FE, + 14707: 0x000075FC, + 14708: 0x000075F9, + 14709: 0x000075F8, + 14710: 0x00007610, + 14711: 0x000075FB, + 14712: 0x000075F6, + 14713: 0x000075ED, + 14714: 0x000075F5, + 14715: 0x000075FD, + 14716: 0x00007699, + 14717: 0x000076B5, + 14718: 0x000076DD, + 14719: 0x00007755, + 14720: 0x0000775F, + 14721: 0x00007760, + 14722: 0x00007752, + 14723: 0x00007756, + 14724: 0x0000775A, + 14725: 0x00007769, + 14726: 0x00007767, + 14727: 0x00007754, + 14728: 0x00007759, + 14729: 0x0000776D, + 14730: 0x000077E0, + 14731: 0x00007887, + 14732: 0x0000789A, + 14733: 0x00007894, + 14734: 0x0000788F, + 14735: 0x00007884, + 14736: 0x00007895, + 14737: 0x00007885, + 14738: 0x00007886, + 14739: 0x000078A1, + 14740: 0x00007883, + 14741: 0x00007879, + 14742: 0x00007899, + 14743: 0x00007880, + 14744: 0x00007896, + 14745: 0x0000787B, + 14746: 0x0000797C, + 14747: 0x00007982, + 14748: 0x0000797D, + 14749: 0x00007979, + 14750: 0x00007A11, + 14751: 0x00007A18, + 14752: 0x00007A19, + 14753: 0x00007A12, + 14754: 0x00007A17, + 14755: 0x00007A15, + 14756: 0x00007A22, + 14757: 0x00007A13, + 14758: 0x00007A1B, + 14759: 0x00007A10, + 14760: 0x00007AA3, + 14761: 0x00007AA2, + 14762: 0x00007A9E, + 14763: 0x00007AEB, + 14764: 0x00007B66, + 14765: 0x00007B64, + 14766: 0x00007B6D, + 14767: 0x00007B74, + 14768: 0x00007B69, + 14769: 0x00007B72, + 14770: 0x00007B65, + 14771: 0x00007B73, + 14772: 0x00007B71, + 14773: 0x00007B70, + 14774: 0x00007B61, + 14775: 0x00007B78, + 14776: 0x00007B76, + 14777: 0x00007B63, + 14778: 0x00007CB2, + 14779: 0x00007CB4, + 14780: 0x00007CAF, + 14781: 0x00007D88, + 14782: 0x00007D86, + 14783: 0x00007D80, + 14784: 0x00007D8D, + 14785: 0x00007D7F, + 14786: 0x00007D85, + 14787: 0x00007D7A, + 14788: 0x00007D8E, + 14789: 0x00007D7B, + 14790: 0x00007D83, + 14791: 0x00007D7C, + 14792: 0x00007D8C, + 14793: 0x00007D94, + 14794: 0x00007D84, + 14795: 0x00007D7D, + 14796: 0x00007D92, + 14797: 0x00007F6D, + 14798: 0x00007F6B, + 14799: 0x00007F67, + 14800: 0x00007F68, + 14801: 0x00007F6C, + 14802: 0x00007FA6, + 14803: 0x00007FA5, + 14804: 0x00007FA7, + 14805: 0x00007FDB, + 14806: 0x00007FDC, + 14807: 0x00008021, + 14808: 0x00008164, + 14809: 0x00008160, + 14810: 0x00008177, + 14811: 0x0000815C, + 14812: 0x00008169, + 14813: 0x0000815B, + 14814: 0x00008162, + 14815: 0x00008172, + 14816: 0x00006721, + 14817: 0x0000815E, + 14818: 0x00008176, + 14819: 0x00008167, + 14820: 0x0000816F, + 14821: 0x00008144, + 14822: 0x00008161, + 14823: 0x0000821D, + 14824: 0x00008249, + 14825: 0x00008244, + 14826: 0x00008240, + 14827: 0x00008242, + 14828: 0x00008245, + 14829: 0x000084F1, + 14830: 0x0000843F, + 14831: 0x00008456, + 14832: 0x00008476, + 14833: 0x00008479, + 14834: 0x0000848F, + 14835: 0x0000848D, + 14836: 0x00008465, + 14837: 0x00008451, + 14838: 0x00008440, + 14839: 0x00008486, + 14840: 0x00008467, + 14841: 0x00008430, + 14842: 0x0000844D, + 14843: 0x0000847D, + 14844: 0x0000845A, + 14845: 0x00008459, + 14846: 0x00008474, + 14847: 0x00008473, + 14848: 0x0000845D, + 14849: 0x00008507, + 14850: 0x0000845E, + 14851: 0x00008437, + 14852: 0x0000843A, + 14853: 0x00008434, + 14854: 0x0000847A, + 14855: 0x00008443, + 14856: 0x00008478, + 14857: 0x00008432, + 14858: 0x00008445, + 14859: 0x00008429, + 14860: 0x000083D9, + 14861: 0x0000844B, + 14862: 0x0000842F, + 14863: 0x00008442, + 14864: 0x0000842D, + 14865: 0x0000845F, + 14866: 0x00008470, + 14867: 0x00008439, + 14868: 0x0000844E, + 14869: 0x0000844C, + 14870: 0x00008452, + 14871: 0x0000846F, + 14872: 0x000084C5, + 14873: 0x0000848E, + 14874: 0x0000843B, + 14875: 0x00008447, + 14876: 0x00008436, + 14877: 0x00008433, + 14878: 0x00008468, + 14879: 0x0000847E, + 14880: 0x00008444, + 14881: 0x0000842B, + 14882: 0x00008460, + 14883: 0x00008454, + 14884: 0x0000846E, + 14885: 0x00008450, + 14886: 0x0000870B, + 14887: 0x00008704, + 14888: 0x000086F7, + 14889: 0x0000870C, + 14890: 0x000086FA, + 14891: 0x000086D6, + 14892: 0x000086F5, + 14893: 0x0000874D, + 14894: 0x000086F8, + 14895: 0x0000870E, + 14896: 0x00008709, + 14897: 0x00008701, + 14898: 0x000086F6, + 14899: 0x0000870D, + 14900: 0x00008705, + 14901: 0x000088D6, + 14902: 0x000088CB, + 14903: 0x000088CD, + 14904: 0x000088CE, + 14905: 0x000088DE, + 14906: 0x000088DB, + 14907: 0x000088DA, + 14908: 0x000088CC, + 14909: 0x000088D0, + 14910: 0x00008985, + 14911: 0x0000899B, + 14912: 0x000089DF, + 14913: 0x000089E5, + 14914: 0x000089E4, + 14915: 0x000089E1, + 14916: 0x000089E0, + 14917: 0x000089E2, + 14918: 0x000089DC, + 14919: 0x000089E6, + 14920: 0x00008A76, + 14921: 0x00008A86, + 14922: 0x00008A7F, + 14923: 0x00008A61, + 14924: 0x00008A3F, + 14925: 0x00008A77, + 14926: 0x00008A82, + 14927: 0x00008A84, + 14928: 0x00008A75, + 14929: 0x00008A83, + 14930: 0x00008A81, + 14931: 0x00008A74, + 14932: 0x00008A7A, + 14933: 0x00008C3C, + 14934: 0x00008C4B, + 14935: 0x00008C4A, + 14936: 0x00008C65, + 14937: 0x00008C64, + 14938: 0x00008C66, + 14939: 0x00008C86, + 14940: 0x00008C84, + 14941: 0x00008C85, + 14942: 0x00008CCC, + 14943: 0x00008D68, + 14944: 0x00008D69, + 14945: 0x00008D91, + 14946: 0x00008D8C, + 14947: 0x00008D8E, + 14948: 0x00008D8F, + 14949: 0x00008D8D, + 14950: 0x00008D93, + 14951: 0x00008D94, + 14952: 0x00008D90, + 14953: 0x00008D92, + 14954: 0x00008DF0, + 14955: 0x00008DE0, + 14956: 0x00008DEC, + 14957: 0x00008DF1, + 14958: 0x00008DEE, + 14959: 0x00008DD0, + 14960: 0x00008DE9, + 14961: 0x00008DE3, + 14962: 0x00008DE2, + 14963: 0x00008DE7, + 14964: 0x00008DF2, + 14965: 0x00008DEB, + 14966: 0x00008DF4, + 14967: 0x00008F06, + 14968: 0x00008EFF, + 14969: 0x00008F01, + 14970: 0x00008F00, + 14971: 0x00008F05, + 14972: 0x00008F07, + 14973: 0x00008F08, + 14974: 0x00008F02, + 14975: 0x00008F0B, + 14976: 0x00009052, + 14977: 0x0000903F, + 14978: 0x00009044, + 14979: 0x00009049, + 14980: 0x0000903D, + 14981: 0x00009110, + 14982: 0x0000910D, + 14983: 0x0000910F, + 14984: 0x00009111, + 14985: 0x00009116, + 14986: 0x00009114, + 14987: 0x0000910B, + 14988: 0x0000910E, + 14989: 0x0000916E, + 14990: 0x0000916F, + 14991: 0x00009248, + 14992: 0x00009252, + 14993: 0x00009230, + 14994: 0x0000923A, + 14995: 0x00009266, + 14996: 0x00009233, + 14997: 0x00009265, + 14998: 0x0000925E, + 14999: 0x00009283, + 15000: 0x0000922E, + 15001: 0x0000924A, + 15002: 0x00009246, + 15003: 0x0000926D, + 15004: 0x0000926C, + 15005: 0x0000924F, + 15006: 0x00009260, + 15007: 0x00009267, + 15008: 0x0000926F, + 15009: 0x00009236, + 15010: 0x00009261, + 15011: 0x00009270, + 15012: 0x00009231, + 15013: 0x00009254, + 15014: 0x00009263, + 15015: 0x00009250, + 15016: 0x00009272, + 15017: 0x0000924E, + 15018: 0x00009253, + 15019: 0x0000924C, + 15020: 0x00009256, + 15021: 0x00009232, + 15022: 0x0000959F, + 15023: 0x0000959C, + 15024: 0x0000959E, + 15025: 0x0000959B, + 15026: 0x00009692, + 15027: 0x00009693, + 15028: 0x00009691, + 15029: 0x00009697, + 15030: 0x000096CE, + 15031: 0x000096FA, + 15032: 0x000096FD, + 15033: 0x000096F8, + 15034: 0x000096F5, + 15035: 0x00009773, + 15036: 0x00009777, + 15037: 0x00009778, + 15038: 0x00009772, + 15039: 0x0000980F, + 15040: 0x0000980D, + 15041: 0x0000980E, + 15042: 0x000098AC, + 15043: 0x000098F6, + 15044: 0x000098F9, + 15045: 0x000099AF, + 15046: 0x000099B2, + 15047: 0x000099B0, + 15048: 0x000099B5, + 15049: 0x00009AAD, + 15050: 0x00009AAB, + 15051: 0x00009B5B, + 15052: 0x00009CEA, + 15053: 0x00009CED, + 15054: 0x00009CE7, + 15055: 0x00009E80, + 15056: 0x00009EFD, + 15057: 0x000050E6, + 15058: 0x000050D4, + 15059: 0x000050D7, + 15060: 0x000050E8, + 15061: 0x000050F3, + 15062: 0x000050DB, + 15063: 0x000050EA, + 15064: 0x000050DD, + 15065: 0x000050E4, + 15066: 0x000050D3, + 15067: 0x000050EC, + 15068: 0x000050F0, + 15069: 0x000050EF, + 15070: 0x000050E3, + 15071: 0x000050E0, + 15072: 0x000051D8, + 15073: 0x00005280, + 15074: 0x00005281, + 15075: 0x000052E9, + 15076: 0x000052EB, + 15077: 0x00005330, + 15078: 0x000053AC, + 15079: 0x00005627, + 15080: 0x00005615, + 15081: 0x0000560C, + 15082: 0x00005612, + 15083: 0x000055FC, + 15084: 0x0000560F, + 15085: 0x0000561C, + 15086: 0x00005601, + 15087: 0x00005613, + 15088: 0x00005602, + 15089: 0x000055FA, + 15090: 0x0000561D, + 15091: 0x00005604, + 15092: 0x000055FF, + 15093: 0x000055F9, + 15094: 0x00005889, + 15095: 0x0000587C, + 15096: 0x00005890, + 15097: 0x00005898, + 15098: 0x00005886, + 15099: 0x00005881, + 15100: 0x0000587F, + 15101: 0x00005874, + 15102: 0x0000588B, + 15103: 0x0000587A, + 15104: 0x00005887, + 15105: 0x00005891, + 15106: 0x0000588E, + 15107: 0x00005876, + 15108: 0x00005882, + 15109: 0x00005888, + 15110: 0x0000587B, + 15111: 0x00005894, + 15112: 0x0000588F, + 15113: 0x000058FE, + 15114: 0x0000596B, + 15115: 0x00005ADC, + 15116: 0x00005AEE, + 15117: 0x00005AE5, + 15118: 0x00005AD5, + 15119: 0x00005AEA, + 15120: 0x00005ADA, + 15121: 0x00005AED, + 15122: 0x00005AEB, + 15123: 0x00005AF3, + 15124: 0x00005AE2, + 15125: 0x00005AE0, + 15126: 0x00005ADB, + 15127: 0x00005AEC, + 15128: 0x00005ADE, + 15129: 0x00005ADD, + 15130: 0x00005AD9, + 15131: 0x00005AE8, + 15132: 0x00005ADF, + 15133: 0x00005B77, + 15134: 0x00005BE0, + 15135: 0x00005BE3, + 15136: 0x00005C63, + 15137: 0x00005D82, + 15138: 0x00005D80, + 15139: 0x00005D7D, + 15140: 0x00005D86, + 15141: 0x00005D7A, + 15142: 0x00005D81, + 15143: 0x00005D77, + 15144: 0x00005D8A, + 15145: 0x00005D89, + 15146: 0x00005D88, + 15147: 0x00005D7E, + 15148: 0x00005D7C, + 15149: 0x00005D8D, + 15150: 0x00005D79, + 15151: 0x00005D7F, + 15152: 0x00005E58, + 15153: 0x00005E59, + 15154: 0x00005E53, + 15155: 0x00005ED8, + 15156: 0x00005ED1, + 15157: 0x00005ED7, + 15158: 0x00005ECE, + 15159: 0x00005EDC, + 15160: 0x00005ED5, + 15161: 0x00005ED9, + 15162: 0x00005ED2, + 15163: 0x00005ED4, + 15164: 0x00005F44, + 15165: 0x00005F43, + 15166: 0x00005F6F, + 15167: 0x00005FB6, + 15168: 0x0000612C, + 15169: 0x00006128, + 15170: 0x00006141, + 15171: 0x0000615E, + 15172: 0x00006171, + 15173: 0x00006173, + 15174: 0x00006152, + 15175: 0x00006153, + 15176: 0x00006172, + 15177: 0x0000616C, + 15178: 0x00006180, + 15179: 0x00006174, + 15180: 0x00006154, + 15181: 0x0000617A, + 15182: 0x0000615B, + 15183: 0x00006165, + 15184: 0x0000613B, + 15185: 0x0000616A, + 15186: 0x00006161, + 15187: 0x00006156, + 15188: 0x00006229, + 15189: 0x00006227, + 15190: 0x0000622B, + 15191: 0x0000642B, + 15192: 0x0000644D, + 15193: 0x0000645B, + 15194: 0x0000645D, + 15195: 0x00006474, + 15196: 0x00006476, + 15197: 0x00006472, + 15198: 0x00006473, + 15199: 0x0000647D, + 15200: 0x00006475, + 15201: 0x00006466, + 15202: 0x000064A6, + 15203: 0x0000644E, + 15204: 0x00006482, + 15205: 0x0000645E, + 15206: 0x0000645C, + 15207: 0x0000644B, + 15208: 0x00006453, + 15209: 0x00006460, + 15210: 0x00006450, + 15211: 0x0000647F, + 15212: 0x0000643F, + 15213: 0x0000646C, + 15214: 0x0000646B, + 15215: 0x00006459, + 15216: 0x00006465, + 15217: 0x00006477, + 15218: 0x00006573, + 15219: 0x000065A0, + 15220: 0x000066A1, + 15221: 0x000066A0, + 15222: 0x0000669F, + 15223: 0x00006705, + 15224: 0x00006704, + 15225: 0x00006722, + 15226: 0x000069B1, + 15227: 0x000069B6, + 15228: 0x000069C9, + 15229: 0x000069A0, + 15230: 0x000069CE, + 15231: 0x00006996, + 15232: 0x000069B0, + 15233: 0x000069AC, + 15234: 0x000069BC, + 15235: 0x00006991, + 15236: 0x00006999, + 15237: 0x0000698E, + 15238: 0x000069A7, + 15239: 0x0000698D, + 15240: 0x000069A9, + 15241: 0x000069BE, + 15242: 0x000069AF, + 15243: 0x000069BF, + 15244: 0x000069C4, + 15245: 0x000069BD, + 15246: 0x000069A4, + 15247: 0x000069D4, + 15248: 0x000069B9, + 15249: 0x000069CA, + 15250: 0x0000699A, + 15251: 0x000069CF, + 15252: 0x000069B3, + 15253: 0x00006993, + 15254: 0x000069AA, + 15255: 0x000069A1, + 15256: 0x0000699E, + 15257: 0x000069D9, + 15258: 0x00006997, + 15259: 0x00006990, + 15260: 0x000069C2, + 15261: 0x000069B5, + 15262: 0x000069A5, + 15263: 0x000069C6, + 15264: 0x00006B4A, + 15265: 0x00006B4D, + 15266: 0x00006B4B, + 15267: 0x00006B9E, + 15268: 0x00006B9F, + 15269: 0x00006BA0, + 15270: 0x00006BC3, + 15271: 0x00006BC4, + 15272: 0x00006BFE, + 15273: 0x00006ECE, + 15274: 0x00006EF5, + 15275: 0x00006EF1, + 15276: 0x00006F03, + 15277: 0x00006F25, + 15278: 0x00006EF8, + 15279: 0x00006F37, + 15280: 0x00006EFB, + 15281: 0x00006F2E, + 15282: 0x00006F09, + 15283: 0x00006F4E, + 15284: 0x00006F19, + 15285: 0x00006F1A, + 15286: 0x00006F27, + 15287: 0x00006F18, + 15288: 0x00006F3B, + 15289: 0x00006F12, + 15290: 0x00006EED, + 15291: 0x00006F0A, + 15292: 0x00006F36, + 15293: 0x00006F73, + 15294: 0x00006EF9, + 15295: 0x00006EEE, + 15296: 0x00006F2D, + 15297: 0x00006F40, + 15298: 0x00006F30, + 15299: 0x00006F3C, + 15300: 0x00006F35, + 15301: 0x00006EEB, + 15302: 0x00006F07, + 15303: 0x00006F0E, + 15304: 0x00006F43, + 15305: 0x00006F05, + 15306: 0x00006EFD, + 15307: 0x00006EF6, + 15308: 0x00006F39, + 15309: 0x00006F1C, + 15310: 0x00006EFC, + 15311: 0x00006F3A, + 15312: 0x00006F1F, + 15313: 0x00006F0D, + 15314: 0x00006F1E, + 15315: 0x00006F08, + 15316: 0x00006F21, + 15317: 0x00007187, + 15318: 0x00007190, + 15319: 0x00007189, + 15320: 0x00007180, + 15321: 0x00007185, + 15322: 0x00007182, + 15323: 0x0000718F, + 15324: 0x0000717B, + 15325: 0x00007186, + 15326: 0x00007181, + 15327: 0x00007197, + 15328: 0x00007244, + 15329: 0x00007253, + 15330: 0x00007297, + 15331: 0x00007295, + 15332: 0x00007293, + 15333: 0x00007343, + 15334: 0x0000734D, + 15335: 0x00007351, + 15336: 0x0000734C, + 15337: 0x00007462, + 15338: 0x00007473, + 15339: 0x00007471, + 15340: 0x00007475, + 15341: 0x00007472, + 15342: 0x00007467, + 15343: 0x0000746E, + 15344: 0x00007500, + 15345: 0x00007502, + 15346: 0x00007503, + 15347: 0x0000757D, + 15348: 0x00007590, + 15349: 0x00007616, + 15350: 0x00007608, + 15351: 0x0000760C, + 15352: 0x00007615, + 15353: 0x00007611, + 15354: 0x0000760A, + 15355: 0x00007614, + 15356: 0x000076B8, + 15357: 0x00007781, + 15358: 0x0000777C, + 15359: 0x00007785, + 15360: 0x00007782, + 15361: 0x0000776E, + 15362: 0x00007780, + 15363: 0x0000776F, + 15364: 0x0000777E, + 15365: 0x00007783, + 15366: 0x000078B2, + 15367: 0x000078AA, + 15368: 0x000078B4, + 15369: 0x000078AD, + 15370: 0x000078A8, + 15371: 0x0000787E, + 15372: 0x000078AB, + 15373: 0x0000789E, + 15374: 0x000078A5, + 15375: 0x000078A0, + 15376: 0x000078AC, + 15377: 0x000078A2, + 15378: 0x000078A4, + 15379: 0x00007998, + 15380: 0x0000798A, + 15381: 0x0000798B, + 15382: 0x00007996, + 15383: 0x00007995, + 15384: 0x00007994, + 15385: 0x00007993, + 15386: 0x00007997, + 15387: 0x00007988, + 15388: 0x00007992, + 15389: 0x00007990, + 15390: 0x00007A2B, + 15391: 0x00007A4A, + 15392: 0x00007A30, + 15393: 0x00007A2F, + 15394: 0x00007A28, + 15395: 0x00007A26, + 15396: 0x00007AA8, + 15397: 0x00007AAB, + 15398: 0x00007AAC, + 15399: 0x00007AEE, + 15400: 0x00007B88, + 15401: 0x00007B9C, + 15402: 0x00007B8A, + 15403: 0x00007B91, + 15404: 0x00007B90, + 15405: 0x00007B96, + 15406: 0x00007B8D, + 15407: 0x00007B8C, + 15408: 0x00007B9B, + 15409: 0x00007B8E, + 15410: 0x00007B85, + 15411: 0x00007B98, + 15412: 0x00005284, + 15413: 0x00007B99, + 15414: 0x00007BA4, + 15415: 0x00007B82, + 15416: 0x00007CBB, + 15417: 0x00007CBF, + 15418: 0x00007CBC, + 15419: 0x00007CBA, + 15420: 0x00007DA7, + 15421: 0x00007DB7, + 15422: 0x00007DC2, + 15423: 0x00007DA3, + 15424: 0x00007DAA, + 15425: 0x00007DC1, + 15426: 0x00007DC0, + 15427: 0x00007DC5, + 15428: 0x00007D9D, + 15429: 0x00007DCE, + 15430: 0x00007DC4, + 15431: 0x00007DC6, + 15432: 0x00007DCB, + 15433: 0x00007DCC, + 15434: 0x00007DAF, + 15435: 0x00007DB9, + 15436: 0x00007D96, + 15437: 0x00007DBC, + 15438: 0x00007D9F, + 15439: 0x00007DA6, + 15440: 0x00007DAE, + 15441: 0x00007DA9, + 15442: 0x00007DA1, + 15443: 0x00007DC9, + 15444: 0x00007F73, + 15445: 0x00007FE2, + 15446: 0x00007FE3, + 15447: 0x00007FE5, + 15448: 0x00007FDE, + 15449: 0x00008024, + 15450: 0x0000805D, + 15451: 0x0000805C, + 15452: 0x00008189, + 15453: 0x00008186, + 15454: 0x00008183, + 15455: 0x00008187, + 15456: 0x0000818D, + 15457: 0x0000818C, + 15458: 0x0000818B, + 15459: 0x00008215, + 15460: 0x00008497, + 15461: 0x000084A4, + 15462: 0x000084A1, + 15463: 0x0000849F, + 15464: 0x000084BA, + 15465: 0x000084CE, + 15466: 0x000084C2, + 15467: 0x000084AC, + 15468: 0x000084AE, + 15469: 0x000084AB, + 15470: 0x000084B9, + 15471: 0x000084B4, + 15472: 0x000084C1, + 15473: 0x000084CD, + 15474: 0x000084AA, + 15475: 0x0000849A, + 15476: 0x000084B1, + 15477: 0x000084D0, + 15478: 0x0000849D, + 15479: 0x000084A7, + 15480: 0x000084BB, + 15481: 0x000084A2, + 15482: 0x00008494, + 15483: 0x000084C7, + 15484: 0x000084CC, + 15485: 0x0000849B, + 15486: 0x000084A9, + 15487: 0x000084AF, + 15488: 0x000084A8, + 15489: 0x000084D6, + 15490: 0x00008498, + 15491: 0x000084B6, + 15492: 0x000084CF, + 15493: 0x000084A0, + 15494: 0x000084D7, + 15495: 0x000084D4, + 15496: 0x000084D2, + 15497: 0x000084DB, + 15498: 0x000084B0, + 15499: 0x00008491, + 15500: 0x00008661, + 15501: 0x00008733, + 15502: 0x00008723, + 15503: 0x00008728, + 15504: 0x0000876B, + 15505: 0x00008740, + 15506: 0x0000872E, + 15507: 0x0000871E, + 15508: 0x00008721, + 15509: 0x00008719, + 15510: 0x0000871B, + 15511: 0x00008743, + 15512: 0x0000872C, + 15513: 0x00008741, + 15514: 0x0000873E, + 15515: 0x00008746, + 15516: 0x00008720, + 15517: 0x00008732, + 15518: 0x0000872A, + 15519: 0x0000872D, + 15520: 0x0000873C, + 15521: 0x00008712, + 15522: 0x0000873A, + 15523: 0x00008731, + 15524: 0x00008735, + 15525: 0x00008742, + 15526: 0x00008726, + 15527: 0x00008727, + 15528: 0x00008738, + 15529: 0x00008724, + 15530: 0x0000871A, + 15531: 0x00008730, + 15532: 0x00008711, + 15533: 0x000088F7, + 15534: 0x000088E7, + 15535: 0x000088F1, + 15536: 0x000088F2, + 15537: 0x000088FA, + 15538: 0x000088FE, + 15539: 0x000088EE, + 15540: 0x000088FC, + 15541: 0x000088F6, + 15542: 0x000088FB, + 15543: 0x000088F0, + 15544: 0x000088EC, + 15545: 0x000088EB, + 15546: 0x0000899D, + 15547: 0x000089A1, + 15548: 0x0000899F, + 15549: 0x0000899E, + 15550: 0x000089E9, + 15551: 0x000089EB, + 15552: 0x000089E8, + 15553: 0x00008AAB, + 15554: 0x00008A99, + 15555: 0x00008A8B, + 15556: 0x00008A92, + 15557: 0x00008A8F, + 15558: 0x00008A96, + 15559: 0x00008C3D, + 15560: 0x00008C68, + 15561: 0x00008C69, + 15562: 0x00008CD5, + 15563: 0x00008CCF, + 15564: 0x00008CD7, + 15565: 0x00008D96, + 15566: 0x00008E09, + 15567: 0x00008E02, + 15568: 0x00008DFF, + 15569: 0x00008E0D, + 15570: 0x00008DFD, + 15571: 0x00008E0A, + 15572: 0x00008E03, + 15573: 0x00008E07, + 15574: 0x00008E06, + 15575: 0x00008E05, + 15576: 0x00008DFE, + 15577: 0x00008E00, + 15578: 0x00008E04, + 15579: 0x00008F10, + 15580: 0x00008F11, + 15581: 0x00008F0E, + 15582: 0x00008F0D, + 15583: 0x00009123, + 15584: 0x0000911C, + 15585: 0x00009120, + 15586: 0x00009122, + 15587: 0x0000911F, + 15588: 0x0000911D, + 15589: 0x0000911A, + 15590: 0x00009124, + 15591: 0x00009121, + 15592: 0x0000911B, + 15593: 0x0000917A, + 15594: 0x00009172, + 15595: 0x00009179, + 15596: 0x00009173, + 15597: 0x000092A5, + 15598: 0x000092A4, + 15599: 0x00009276, + 15600: 0x0000929B, + 15601: 0x0000927A, + 15602: 0x000092A0, + 15603: 0x00009294, + 15604: 0x000092AA, + 15605: 0x0000928D, + 15606: 0x000092A6, + 15607: 0x0000929A, + 15608: 0x000092AB, + 15609: 0x00009279, + 15610: 0x00009297, + 15611: 0x0000927F, + 15612: 0x000092A3, + 15613: 0x000092EE, + 15614: 0x0000928E, + 15615: 0x00009282, + 15616: 0x00009295, + 15617: 0x000092A2, + 15618: 0x0000927D, + 15619: 0x00009288, + 15620: 0x000092A1, + 15621: 0x0000928A, + 15622: 0x00009286, + 15623: 0x0000928C, + 15624: 0x00009299, + 15625: 0x000092A7, + 15626: 0x0000927E, + 15627: 0x00009287, + 15628: 0x000092A9, + 15629: 0x0000929D, + 15630: 0x0000928B, + 15631: 0x0000922D, + 15632: 0x0000969E, + 15633: 0x000096A1, + 15634: 0x000096FF, + 15635: 0x00009758, + 15636: 0x0000977D, + 15637: 0x0000977A, + 15638: 0x0000977E, + 15639: 0x00009783, + 15640: 0x00009780, + 15641: 0x00009782, + 15642: 0x0000977B, + 15643: 0x00009784, + 15644: 0x00009781, + 15645: 0x0000977F, + 15646: 0x000097CE, + 15647: 0x000097CD, + 15648: 0x00009816, + 15649: 0x000098AD, + 15650: 0x000098AE, + 15651: 0x00009902, + 15652: 0x00009900, + 15653: 0x00009907, + 15654: 0x0000999D, + 15655: 0x0000999C, + 15656: 0x000099C3, + 15657: 0x000099B9, + 15658: 0x000099BB, + 15659: 0x000099BA, + 15660: 0x000099C2, + 15661: 0x000099BD, + 15662: 0x000099C7, + 15663: 0x00009AB1, + 15664: 0x00009AE3, + 15665: 0x00009AE7, + 15666: 0x00009B3E, + 15667: 0x00009B3F, + 15668: 0x00009B60, + 15669: 0x00009B61, + 15670: 0x00009B5F, + 15671: 0x00009CF1, + 15672: 0x00009CF2, + 15673: 0x00009CF5, + 15674: 0x00009EA7, + 15675: 0x000050FF, + 15676: 0x00005103, + 15677: 0x00005130, + 15678: 0x000050F8, + 15679: 0x00005106, + 15680: 0x00005107, + 15681: 0x000050F6, + 15682: 0x000050FE, + 15683: 0x0000510B, + 15684: 0x0000510C, + 15685: 0x000050FD, + 15686: 0x0000510A, + 15687: 0x0000528B, + 15688: 0x0000528C, + 15689: 0x000052F1, + 15690: 0x000052EF, + 15691: 0x00005648, + 15692: 0x00005642, + 15693: 0x0000564C, + 15694: 0x00005635, + 15695: 0x00005641, + 15696: 0x0000564A, + 15697: 0x00005649, + 15698: 0x00005646, + 15699: 0x00005658, + 15700: 0x0000565A, + 15701: 0x00005640, + 15702: 0x00005633, + 15703: 0x0000563D, + 15704: 0x0000562C, + 15705: 0x0000563E, + 15706: 0x00005638, + 15707: 0x0000562A, + 15708: 0x0000563A, + 15709: 0x0000571A, + 15710: 0x000058AB, + 15711: 0x0000589D, + 15712: 0x000058B1, + 15713: 0x000058A0, + 15714: 0x000058A3, + 15715: 0x000058AF, + 15716: 0x000058AC, + 15717: 0x000058A5, + 15718: 0x000058A1, + 15719: 0x000058FF, + 15720: 0x00005AFF, + 15721: 0x00005AF4, + 15722: 0x00005AFD, + 15723: 0x00005AF7, + 15724: 0x00005AF6, + 15725: 0x00005B03, + 15726: 0x00005AF8, + 15727: 0x00005B02, + 15728: 0x00005AF9, + 15729: 0x00005B01, + 15730: 0x00005B07, + 15731: 0x00005B05, + 15732: 0x00005B0F, + 15733: 0x00005C67, + 15734: 0x00005D99, + 15735: 0x00005D97, + 15736: 0x00005D9F, + 15737: 0x00005D92, + 15738: 0x00005DA2, + 15739: 0x00005D93, + 15740: 0x00005D95, + 15741: 0x00005DA0, + 15742: 0x00005D9C, + 15743: 0x00005DA1, + 15744: 0x00005D9A, + 15745: 0x00005D9E, + 15746: 0x00005E69, + 15747: 0x00005E5D, + 15748: 0x00005E60, + 15749: 0x00005E5C, + 15750: 0x00007DF3, + 15751: 0x00005EDB, + 15752: 0x00005EDE, + 15753: 0x00005EE1, + 15754: 0x00005F49, + 15755: 0x00005FB2, + 15756: 0x0000618B, + 15757: 0x00006183, + 15758: 0x00006179, + 15759: 0x000061B1, + 15760: 0x000061B0, + 15761: 0x000061A2, + 15762: 0x00006189, + 15763: 0x0000619B, + 15764: 0x00006193, + 15765: 0x000061AF, + 15766: 0x000061AD, + 15767: 0x0000619F, + 15768: 0x00006192, + 15769: 0x000061AA, + 15770: 0x000061A1, + 15771: 0x0000618D, + 15772: 0x00006166, + 15773: 0x000061B3, + 15774: 0x0000622D, + 15775: 0x0000646E, + 15776: 0x00006470, + 15777: 0x00006496, + 15778: 0x000064A0, + 15779: 0x00006485, + 15780: 0x00006497, + 15781: 0x0000649C, + 15782: 0x0000648F, + 15783: 0x0000648B, + 15784: 0x0000648A, + 15785: 0x0000648C, + 15786: 0x000064A3, + 15787: 0x0000649F, + 15788: 0x00006468, + 15789: 0x000064B1, + 15790: 0x00006498, + 15791: 0x00006576, + 15792: 0x0000657A, + 15793: 0x00006579, + 15794: 0x0000657B, + 15795: 0x000065B2, + 15796: 0x000065B3, + 15797: 0x000066B5, + 15798: 0x000066B0, + 15799: 0x000066A9, + 15800: 0x000066B2, + 15801: 0x000066B7, + 15802: 0x000066AA, + 15803: 0x000066AF, + 15804: 0x00006A00, + 15805: 0x00006A06, + 15806: 0x00006A17, + 15807: 0x000069E5, + 15808: 0x000069F8, + 15809: 0x00006A15, + 15810: 0x000069F1, + 15811: 0x000069E4, + 15812: 0x00006A20, + 15813: 0x000069FF, + 15814: 0x000069EC, + 15815: 0x000069E2, + 15816: 0x00006A1B, + 15817: 0x00006A1D, + 15818: 0x000069FE, + 15819: 0x00006A27, + 15820: 0x000069F2, + 15821: 0x000069EE, + 15822: 0x00006A14, + 15823: 0x000069F7, + 15824: 0x000069E7, + 15825: 0x00006A40, + 15826: 0x00006A08, + 15827: 0x000069E6, + 15828: 0x000069FB, + 15829: 0x00006A0D, + 15830: 0x000069FC, + 15831: 0x000069EB, + 15832: 0x00006A09, + 15833: 0x00006A04, + 15834: 0x00006A18, + 15835: 0x00006A25, + 15836: 0x00006A0F, + 15837: 0x000069F6, + 15838: 0x00006A26, + 15839: 0x00006A07, + 15840: 0x000069F4, + 15841: 0x00006A16, + 15842: 0x00006B51, + 15843: 0x00006BA5, + 15844: 0x00006BA3, + 15845: 0x00006BA2, + 15846: 0x00006BA6, + 15847: 0x00006C01, + 15848: 0x00006C00, + 15849: 0x00006BFF, + 15850: 0x00006C02, + 15851: 0x00006F41, + 15852: 0x00006F26, + 15853: 0x00006F7E, + 15854: 0x00006F87, + 15855: 0x00006FC6, + 15856: 0x00006F92, + 15857: 0x00006F8D, + 15858: 0x00006F89, + 15859: 0x00006F8C, + 15860: 0x00006F62, + 15861: 0x00006F4F, + 15862: 0x00006F85, + 15863: 0x00006F5A, + 15864: 0x00006F96, + 15865: 0x00006F76, + 15866: 0x00006F6C, + 15867: 0x00006F82, + 15868: 0x00006F55, + 15869: 0x00006F72, + 15870: 0x00006F52, + 15871: 0x00006F50, + 15872: 0x00006F57, + 15873: 0x00006F94, + 15874: 0x00006F93, + 15875: 0x00006F5D, + 15876: 0x00006F00, + 15877: 0x00006F61, + 15878: 0x00006F6B, + 15879: 0x00006F7D, + 15880: 0x00006F67, + 15881: 0x00006F90, + 15882: 0x00006F53, + 15883: 0x00006F8B, + 15884: 0x00006F69, + 15885: 0x00006F7F, + 15886: 0x00006F95, + 15887: 0x00006F63, + 15888: 0x00006F77, + 15889: 0x00006F6A, + 15890: 0x00006F7B, + 15891: 0x000071B2, + 15892: 0x000071AF, + 15893: 0x0000719B, + 15894: 0x000071B0, + 15895: 0x000071A0, + 15896: 0x0000719A, + 15897: 0x000071A9, + 15898: 0x000071B5, + 15899: 0x0000719D, + 15900: 0x000071A5, + 15901: 0x0000719E, + 15902: 0x000071A4, + 15903: 0x000071A1, + 15904: 0x000071AA, + 15905: 0x0000719C, + 15906: 0x000071A7, + 15907: 0x000071B3, + 15908: 0x00007298, + 15909: 0x0000729A, + 15910: 0x00007358, + 15911: 0x00007352, + 15912: 0x0000735E, + 15913: 0x0000735F, + 15914: 0x00007360, + 15915: 0x0000735D, + 15916: 0x0000735B, + 15917: 0x00007361, + 15918: 0x0000735A, + 15919: 0x00007359, + 15920: 0x00007362, + 15921: 0x00007487, + 15922: 0x00007489, + 15923: 0x0000748A, + 15924: 0x00007486, + 15925: 0x00007481, + 15926: 0x0000747D, + 15927: 0x00007485, + 15928: 0x00007488, + 15929: 0x0000747C, + 15930: 0x00007479, + 15931: 0x00007508, + 15932: 0x00007507, + 15933: 0x0000757E, + 15934: 0x00007625, + 15935: 0x0000761E, + 15936: 0x00007619, + 15937: 0x0000761D, + 15938: 0x0000761C, + 15939: 0x00007623, + 15940: 0x0000761A, + 15941: 0x00007628, + 15942: 0x0000761B, + 15943: 0x0000769C, + 15944: 0x0000769D, + 15945: 0x0000769E, + 15946: 0x0000769B, + 15947: 0x0000778D, + 15948: 0x0000778F, + 15949: 0x00007789, + 15950: 0x00007788, + 15951: 0x000078CD, + 15952: 0x000078BB, + 15953: 0x000078CF, + 15954: 0x000078CC, + 15955: 0x000078D1, + 15956: 0x000078CE, + 15957: 0x000078D4, + 15958: 0x000078C8, + 15959: 0x000078C3, + 15960: 0x000078C4, + 15961: 0x000078C9, + 15962: 0x0000799A, + 15963: 0x000079A1, + 15964: 0x000079A0, + 15965: 0x0000799C, + 15966: 0x000079A2, + 15967: 0x0000799B, + 15968: 0x00006B76, + 15969: 0x00007A39, + 15970: 0x00007AB2, + 15971: 0x00007AB4, + 15972: 0x00007AB3, + 15973: 0x00007BB7, + 15974: 0x00007BCB, + 15975: 0x00007BBE, + 15976: 0x00007BAC, + 15977: 0x00007BCE, + 15978: 0x00007BAF, + 15979: 0x00007BB9, + 15980: 0x00007BCA, + 15981: 0x00007BB5, + 15982: 0x00007CC5, + 15983: 0x00007CC8, + 15984: 0x00007CCC, + 15985: 0x00007CCB, + 15986: 0x00007DF7, + 15987: 0x00007DDB, + 15988: 0x00007DEA, + 15989: 0x00007DE7, + 15990: 0x00007DD7, + 15991: 0x00007DE1, + 15992: 0x00007E03, + 15993: 0x00007DFA, + 15994: 0x00007DE6, + 15995: 0x00007DF6, + 15996: 0x00007DF1, + 15997: 0x00007DF0, + 15998: 0x00007DEE, + 15999: 0x00007DDF, + 16000: 0x00007F76, + 16001: 0x00007FAC, + 16002: 0x00007FB0, + 16003: 0x00007FAD, + 16004: 0x00007FED, + 16005: 0x00007FEB, + 16006: 0x00007FEA, + 16007: 0x00007FEC, + 16008: 0x00007FE6, + 16009: 0x00007FE8, + 16010: 0x00008064, + 16011: 0x00008067, + 16012: 0x000081A3, + 16013: 0x0000819F, + 16014: 0x0000819E, + 16015: 0x00008195, + 16016: 0x000081A2, + 16017: 0x00008199, + 16018: 0x00008197, + 16019: 0x00008216, + 16020: 0x0000824F, + 16021: 0x00008253, + 16022: 0x00008252, + 16023: 0x00008250, + 16024: 0x0000824E, + 16025: 0x00008251, + 16026: 0x00008524, + 16027: 0x0000853B, + 16028: 0x0000850F, + 16029: 0x00008500, + 16030: 0x00008529, + 16031: 0x0000850E, + 16032: 0x00008509, + 16033: 0x0000850D, + 16034: 0x0000851F, + 16035: 0x0000850A, + 16036: 0x00008527, + 16037: 0x0000851C, + 16038: 0x000084FB, + 16039: 0x0000852B, + 16040: 0x000084FA, + 16041: 0x00008508, + 16042: 0x0000850C, + 16043: 0x000084F4, + 16044: 0x0000852A, + 16045: 0x000084F2, + 16046: 0x00008515, + 16047: 0x000084F7, + 16048: 0x000084EB, + 16049: 0x000084F3, + 16050: 0x000084FC, + 16051: 0x00008512, + 16052: 0x000084EA, + 16053: 0x000084E9, + 16054: 0x00008516, + 16055: 0x000084FE, + 16056: 0x00008528, + 16057: 0x0000851D, + 16058: 0x0000852E, + 16059: 0x00008502, + 16060: 0x000084FD, + 16061: 0x0000851E, + 16062: 0x000084F6, + 16063: 0x00008531, + 16064: 0x00008526, + 16065: 0x000084E7, + 16066: 0x000084E8, + 16067: 0x000084F0, + 16068: 0x000084EF, + 16069: 0x000084F9, + 16070: 0x00008518, + 16071: 0x00008520, + 16072: 0x00008530, + 16073: 0x0000850B, + 16074: 0x00008519, + 16075: 0x0000852F, + 16076: 0x00008662, + 16077: 0x00008756, + 16078: 0x00008763, + 16079: 0x00008764, + 16080: 0x00008777, + 16081: 0x000087E1, + 16082: 0x00008773, + 16083: 0x00008758, + 16084: 0x00008754, + 16085: 0x0000875B, + 16086: 0x00008752, + 16087: 0x00008761, + 16088: 0x0000875A, + 16089: 0x00008751, + 16090: 0x0000875E, + 16091: 0x0000876D, + 16092: 0x0000876A, + 16093: 0x00008750, + 16094: 0x0000874E, + 16095: 0x0000875F, + 16096: 0x0000875D, + 16097: 0x0000876F, + 16098: 0x0000876C, + 16099: 0x0000877A, + 16100: 0x0000876E, + 16101: 0x0000875C, + 16102: 0x00008765, + 16103: 0x0000874F, + 16104: 0x0000877B, + 16105: 0x00008775, + 16106: 0x00008762, + 16107: 0x00008767, + 16108: 0x00008769, + 16109: 0x0000885A, + 16110: 0x00008905, + 16111: 0x0000890C, + 16112: 0x00008914, + 16113: 0x0000890B, + 16114: 0x00008917, + 16115: 0x00008918, + 16116: 0x00008919, + 16117: 0x00008906, + 16118: 0x00008916, + 16119: 0x00008911, + 16120: 0x0000890E, + 16121: 0x00008909, + 16122: 0x000089A2, + 16123: 0x000089A4, + 16124: 0x000089A3, + 16125: 0x000089ED, + 16126: 0x000089F0, + 16127: 0x000089EC, + 16128: 0x00008ACF, + 16129: 0x00008AC6, + 16130: 0x00008AB8, + 16131: 0x00008AD3, + 16132: 0x00008AD1, + 16133: 0x00008AD4, + 16134: 0x00008AD5, + 16135: 0x00008ABB, + 16136: 0x00008AD7, + 16137: 0x00008ABE, + 16138: 0x00008AC0, + 16139: 0x00008AC5, + 16140: 0x00008AD8, + 16141: 0x00008AC3, + 16142: 0x00008ABA, + 16143: 0x00008ABD, + 16144: 0x00008AD9, + 16145: 0x00008C3E, + 16146: 0x00008C4D, + 16147: 0x00008C8F, + 16148: 0x00008CE5, + 16149: 0x00008CDF, + 16150: 0x00008CD9, + 16151: 0x00008CE8, + 16152: 0x00008CDA, + 16153: 0x00008CDD, + 16154: 0x00008CE7, + 16155: 0x00008DA0, + 16156: 0x00008D9C, + 16157: 0x00008DA1, + 16158: 0x00008D9B, + 16159: 0x00008E20, + 16160: 0x00008E23, + 16161: 0x00008E25, + 16162: 0x00008E24, + 16163: 0x00008E2E, + 16164: 0x00008E15, + 16165: 0x00008E1B, + 16166: 0x00008E16, + 16167: 0x00008E11, + 16168: 0x00008E19, + 16169: 0x00008E26, + 16170: 0x00008E27, + 16171: 0x00008E14, + 16172: 0x00008E12, + 16173: 0x00008E18, + 16174: 0x00008E13, + 16175: 0x00008E1C, + 16176: 0x00008E17, + 16177: 0x00008E1A, + 16178: 0x00008F2C, + 16179: 0x00008F24, + 16180: 0x00008F18, + 16181: 0x00008F1A, + 16182: 0x00008F20, + 16183: 0x00008F23, + 16184: 0x00008F16, + 16185: 0x00008F17, + 16186: 0x00009073, + 16187: 0x00009070, + 16188: 0x0000906F, + 16189: 0x00009067, + 16190: 0x0000906B, + 16191: 0x0000912F, + 16192: 0x0000912B, + 16193: 0x00009129, + 16194: 0x0000912A, + 16195: 0x00009132, + 16196: 0x00009126, + 16197: 0x0000912E, + 16198: 0x00009185, + 16199: 0x00009186, + 16200: 0x0000918A, + 16201: 0x00009181, + 16202: 0x00009182, + 16203: 0x00009184, + 16204: 0x00009180, + 16205: 0x000092D0, + 16206: 0x000092C3, + 16207: 0x000092C4, + 16208: 0x000092C0, + 16209: 0x000092D9, + 16210: 0x000092B6, + 16211: 0x000092CF, + 16212: 0x000092F1, + 16213: 0x000092DF, + 16214: 0x000092D8, + 16215: 0x000092E9, + 16216: 0x000092D7, + 16217: 0x000092DD, + 16218: 0x000092CC, + 16219: 0x000092EF, + 16220: 0x000092C2, + 16221: 0x000092E8, + 16222: 0x000092CA, + 16223: 0x000092C8, + 16224: 0x000092CE, + 16225: 0x000092E6, + 16226: 0x000092CD, + 16227: 0x000092D5, + 16228: 0x000092C9, + 16229: 0x000092E0, + 16230: 0x000092DE, + 16231: 0x000092E7, + 16232: 0x000092D1, + 16233: 0x000092D3, + 16234: 0x000092B5, + 16235: 0x000092E1, + 16236: 0x000092C6, + 16237: 0x000092B4, + 16238: 0x0000957C, + 16239: 0x000095AC, + 16240: 0x000095AB, + 16241: 0x000095AE, + 16242: 0x000095B0, + 16243: 0x000096A4, + 16244: 0x000096A2, + 16245: 0x000096D3, + 16246: 0x00009705, + 16247: 0x00009708, + 16248: 0x00009702, + 16249: 0x0000975A, + 16250: 0x0000978A, + 16251: 0x0000978E, + 16252: 0x00009788, + 16253: 0x000097D0, + 16254: 0x000097CF, + 16255: 0x0000981E, + 16256: 0x0000981D, + 16257: 0x00009826, + 16258: 0x00009829, + 16259: 0x00009828, + 16260: 0x00009820, + 16261: 0x0000981B, + 16262: 0x00009827, + 16263: 0x000098B2, + 16264: 0x00009908, + 16265: 0x000098FA, + 16266: 0x00009911, + 16267: 0x00009914, + 16268: 0x00009916, + 16269: 0x00009917, + 16270: 0x00009915, + 16271: 0x000099DC, + 16272: 0x000099CD, + 16273: 0x000099CF, + 16274: 0x000099D3, + 16275: 0x000099D4, + 16276: 0x000099CE, + 16277: 0x000099C9, + 16278: 0x000099D6, + 16279: 0x000099D8, + 16280: 0x000099CB, + 16281: 0x000099D7, + 16282: 0x000099CC, + 16283: 0x00009AB3, + 16284: 0x00009AEC, + 16285: 0x00009AEB, + 16286: 0x00009AF3, + 16287: 0x00009AF2, + 16288: 0x00009AF1, + 16289: 0x00009B46, + 16290: 0x00009B43, + 16291: 0x00009B67, + 16292: 0x00009B74, + 16293: 0x00009B71, + 16294: 0x00009B66, + 16295: 0x00009B76, + 16296: 0x00009B75, + 16297: 0x00009B70, + 16298: 0x00009B68, + 16299: 0x00009B64, + 16300: 0x00009B6C, + 16301: 0x00009CFC, + 16302: 0x00009CFA, + 16303: 0x00009CFD, + 16304: 0x00009CFF, + 16305: 0x00009CF7, + 16306: 0x00009D07, + 16307: 0x00009D00, + 16308: 0x00009CF9, + 16309: 0x00009CFB, + 16310: 0x00009D08, + 16311: 0x00009D05, + 16312: 0x00009D04, + 16313: 0x00009E83, + 16314: 0x00009ED3, + 16315: 0x00009F0F, + 16316: 0x00009F10, + 16317: 0x0000511C, + 16318: 0x00005113, + 16319: 0x00005117, + 16320: 0x0000511A, + 16321: 0x00005111, + 16322: 0x000051DE, + 16323: 0x00005334, + 16324: 0x000053E1, + 16325: 0x00005670, + 16326: 0x00005660, + 16327: 0x0000566E, + 16328: 0x00005673, + 16329: 0x00005666, + 16330: 0x00005663, + 16331: 0x0000566D, + 16332: 0x00005672, + 16333: 0x0000565E, + 16334: 0x00005677, + 16335: 0x0000571C, + 16336: 0x0000571B, + 16337: 0x000058C8, + 16338: 0x000058BD, + 16339: 0x000058C9, + 16340: 0x000058BF, + 16341: 0x000058BA, + 16342: 0x000058C2, + 16343: 0x000058BC, + 16344: 0x000058C6, + 16345: 0x00005B17, + 16346: 0x00005B19, + 16347: 0x00005B1B, + 16348: 0x00005B21, + 16349: 0x00005B14, + 16350: 0x00005B13, + 16351: 0x00005B10, + 16352: 0x00005B16, + 16353: 0x00005B28, + 16354: 0x00005B1A, + 16355: 0x00005B20, + 16356: 0x00005B1E, + 16357: 0x00005BEF, + 16358: 0x00005DAC, + 16359: 0x00005DB1, + 16360: 0x00005DA9, + 16361: 0x00005DA7, + 16362: 0x00005DB5, + 16363: 0x00005DB0, + 16364: 0x00005DAE, + 16365: 0x00005DAA, + 16366: 0x00005DA8, + 16367: 0x00005DB2, + 16368: 0x00005DAD, + 16369: 0x00005DAF, + 16370: 0x00005DB4, + 16371: 0x00005E67, + 16372: 0x00005E68, + 16373: 0x00005E66, + 16374: 0x00005E6F, + 16375: 0x00005EE9, + 16376: 0x00005EE7, + 16377: 0x00005EE6, + 16378: 0x00005EE8, + 16379: 0x00005EE5, + 16380: 0x00005F4B, + 16381: 0x00005FBC, + 16382: 0x0000619D, + 16383: 0x000061A8, + 16384: 0x00006196, + 16385: 0x000061C5, + 16386: 0x000061B4, + 16387: 0x000061C6, + 16388: 0x000061C1, + 16389: 0x000061CC, + 16390: 0x000061BA, + 16391: 0x000061BF, + 16392: 0x000061B8, + 16393: 0x0000618C, + 16394: 0x000064D7, + 16395: 0x000064D6, + 16396: 0x000064D0, + 16397: 0x000064CF, + 16398: 0x000064C9, + 16399: 0x000064BD, + 16400: 0x00006489, + 16401: 0x000064C3, + 16402: 0x000064DB, + 16403: 0x000064F3, + 16404: 0x000064D9, + 16405: 0x00006533, + 16406: 0x0000657F, + 16407: 0x0000657C, + 16408: 0x000065A2, + 16409: 0x000066C8, + 16410: 0x000066BE, + 16411: 0x000066C0, + 16412: 0x000066CA, + 16413: 0x000066CB, + 16414: 0x000066CF, + 16415: 0x000066BD, + 16416: 0x000066BB, + 16417: 0x000066BA, + 16418: 0x000066CC, + 16419: 0x00006723, + 16420: 0x00006A34, + 16421: 0x00006A66, + 16422: 0x00006A49, + 16423: 0x00006A67, + 16424: 0x00006A32, + 16425: 0x00006A68, + 16426: 0x00006A3E, + 16427: 0x00006A5D, + 16428: 0x00006A6D, + 16429: 0x00006A76, + 16430: 0x00006A5B, + 16431: 0x00006A51, + 16432: 0x00006A28, + 16433: 0x00006A5A, + 16434: 0x00006A3B, + 16435: 0x00006A3F, + 16436: 0x00006A41, + 16437: 0x00006A6A, + 16438: 0x00006A64, + 16439: 0x00006A50, + 16440: 0x00006A4F, + 16441: 0x00006A54, + 16442: 0x00006A6F, + 16443: 0x00006A69, + 16444: 0x00006A60, + 16445: 0x00006A3C, + 16446: 0x00006A5E, + 16447: 0x00006A56, + 16448: 0x00006A55, + 16449: 0x00006A4D, + 16450: 0x00006A4E, + 16451: 0x00006A46, + 16452: 0x00006B55, + 16453: 0x00006B54, + 16454: 0x00006B56, + 16455: 0x00006BA7, + 16456: 0x00006BAA, + 16457: 0x00006BAB, + 16458: 0x00006BC8, + 16459: 0x00006BC7, + 16460: 0x00006C04, + 16461: 0x00006C03, + 16462: 0x00006C06, + 16463: 0x00006FAD, + 16464: 0x00006FCB, + 16465: 0x00006FA3, + 16466: 0x00006FC7, + 16467: 0x00006FBC, + 16468: 0x00006FCE, + 16469: 0x00006FC8, + 16470: 0x00006F5E, + 16471: 0x00006FC4, + 16472: 0x00006FBD, + 16473: 0x00006F9E, + 16474: 0x00006FCA, + 16475: 0x00006FA8, + 16476: 0x00007004, + 16477: 0x00006FA5, + 16478: 0x00006FAE, + 16479: 0x00006FBA, + 16480: 0x00006FAC, + 16481: 0x00006FAA, + 16482: 0x00006FCF, + 16483: 0x00006FBF, + 16484: 0x00006FB8, + 16485: 0x00006FA2, + 16486: 0x00006FC9, + 16487: 0x00006FAB, + 16488: 0x00006FCD, + 16489: 0x00006FAF, + 16490: 0x00006FB2, + 16491: 0x00006FB0, + 16492: 0x000071C5, + 16493: 0x000071C2, + 16494: 0x000071BF, + 16495: 0x000071B8, + 16496: 0x000071D6, + 16497: 0x000071C0, + 16498: 0x000071C1, + 16499: 0x000071CB, + 16500: 0x000071D4, + 16501: 0x000071CA, + 16502: 0x000071C7, + 16503: 0x000071CF, + 16504: 0x000071BD, + 16505: 0x000071D8, + 16506: 0x000071BC, + 16507: 0x000071C6, + 16508: 0x000071DA, + 16509: 0x000071DB, + 16510: 0x0000729D, + 16511: 0x0000729E, + 16512: 0x00007369, + 16513: 0x00007366, + 16514: 0x00007367, + 16515: 0x0000736C, + 16516: 0x00007365, + 16517: 0x0000736B, + 16518: 0x0000736A, + 16519: 0x0000747F, + 16520: 0x0000749A, + 16521: 0x000074A0, + 16522: 0x00007494, + 16523: 0x00007492, + 16524: 0x00007495, + 16525: 0x000074A1, + 16526: 0x0000750B, + 16527: 0x00007580, + 16528: 0x0000762F, + 16529: 0x0000762D, + 16530: 0x00007631, + 16531: 0x0000763D, + 16532: 0x00007633, + 16533: 0x0000763C, + 16534: 0x00007635, + 16535: 0x00007632, + 16536: 0x00007630, + 16537: 0x000076BB, + 16538: 0x000076E6, + 16539: 0x0000779A, + 16540: 0x0000779D, + 16541: 0x000077A1, + 16542: 0x0000779C, + 16543: 0x0000779B, + 16544: 0x000077A2, + 16545: 0x000077A3, + 16546: 0x00007795, + 16547: 0x00007799, + 16548: 0x00007797, + 16549: 0x000078DD, + 16550: 0x000078E9, + 16551: 0x000078E5, + 16552: 0x000078EA, + 16553: 0x000078DE, + 16554: 0x000078E3, + 16555: 0x000078DB, + 16556: 0x000078E1, + 16557: 0x000078E2, + 16558: 0x000078ED, + 16559: 0x000078DF, + 16560: 0x000078E0, + 16561: 0x000079A4, + 16562: 0x00007A44, + 16563: 0x00007A48, + 16564: 0x00007A47, + 16565: 0x00007AB6, + 16566: 0x00007AB8, + 16567: 0x00007AB5, + 16568: 0x00007AB1, + 16569: 0x00007AB7, + 16570: 0x00007BDE, + 16571: 0x00007BE3, + 16572: 0x00007BE7, + 16573: 0x00007BDD, + 16574: 0x00007BD5, + 16575: 0x00007BE5, + 16576: 0x00007BDA, + 16577: 0x00007BE8, + 16578: 0x00007BF9, + 16579: 0x00007BD4, + 16580: 0x00007BEA, + 16581: 0x00007BE2, + 16582: 0x00007BDC, + 16583: 0x00007BEB, + 16584: 0x00007BD8, + 16585: 0x00007BDF, + 16586: 0x00007CD2, + 16587: 0x00007CD4, + 16588: 0x00007CD7, + 16589: 0x00007CD0, + 16590: 0x00007CD1, + 16591: 0x00007E12, + 16592: 0x00007E21, + 16593: 0x00007E17, + 16594: 0x00007E0C, + 16595: 0x00007E1F, + 16596: 0x00007E20, + 16597: 0x00007E13, + 16598: 0x00007E0E, + 16599: 0x00007E1C, + 16600: 0x00007E15, + 16601: 0x00007E1A, + 16602: 0x00007E22, + 16603: 0x00007E0B, + 16604: 0x00007E0F, + 16605: 0x00007E16, + 16606: 0x00007E0D, + 16607: 0x00007E14, + 16608: 0x00007E25, + 16609: 0x00007E24, + 16610: 0x00007F43, + 16611: 0x00007F7B, + 16612: 0x00007F7C, + 16613: 0x00007F7A, + 16614: 0x00007FB1, + 16615: 0x00007FEF, + 16616: 0x0000802A, + 16617: 0x00008029, + 16618: 0x0000806C, + 16619: 0x000081B1, + 16620: 0x000081A6, + 16621: 0x000081AE, + 16622: 0x000081B9, + 16623: 0x000081B5, + 16624: 0x000081AB, + 16625: 0x000081B0, + 16626: 0x000081AC, + 16627: 0x000081B4, + 16628: 0x000081B2, + 16629: 0x000081B7, + 16630: 0x000081A7, + 16631: 0x000081F2, + 16632: 0x00008255, + 16633: 0x00008256, + 16634: 0x00008257, + 16635: 0x00008556, + 16636: 0x00008545, + 16637: 0x0000856B, + 16638: 0x0000854D, + 16639: 0x00008553, + 16640: 0x00008561, + 16641: 0x00008558, + 16642: 0x00008540, + 16643: 0x00008546, + 16644: 0x00008564, + 16645: 0x00008541, + 16646: 0x00008562, + 16647: 0x00008544, + 16648: 0x00008551, + 16649: 0x00008547, + 16650: 0x00008563, + 16651: 0x0000853E, + 16652: 0x0000855B, + 16653: 0x00008571, + 16654: 0x0000854E, + 16655: 0x0000856E, + 16656: 0x00008575, + 16657: 0x00008555, + 16658: 0x00008567, + 16659: 0x00008560, + 16660: 0x0000858C, + 16661: 0x00008566, + 16662: 0x0000855D, + 16663: 0x00008554, + 16664: 0x00008565, + 16665: 0x0000856C, + 16666: 0x00008663, + 16667: 0x00008665, + 16668: 0x00008664, + 16669: 0x0000879B, + 16670: 0x0000878F, + 16671: 0x00008797, + 16672: 0x00008793, + 16673: 0x00008792, + 16674: 0x00008788, + 16675: 0x00008781, + 16676: 0x00008796, + 16677: 0x00008798, + 16678: 0x00008779, + 16679: 0x00008787, + 16680: 0x000087A3, + 16681: 0x00008785, + 16682: 0x00008790, + 16683: 0x00008791, + 16684: 0x0000879D, + 16685: 0x00008784, + 16686: 0x00008794, + 16687: 0x0000879C, + 16688: 0x0000879A, + 16689: 0x00008789, + 16690: 0x0000891E, + 16691: 0x00008926, + 16692: 0x00008930, + 16693: 0x0000892D, + 16694: 0x0000892E, + 16695: 0x00008927, + 16696: 0x00008931, + 16697: 0x00008922, + 16698: 0x00008929, + 16699: 0x00008923, + 16700: 0x0000892F, + 16701: 0x0000892C, + 16702: 0x0000891F, + 16703: 0x000089F1, + 16704: 0x00008AE0, + 16705: 0x00008AE2, + 16706: 0x00008AF2, + 16707: 0x00008AF4, + 16708: 0x00008AF5, + 16709: 0x00008ADD, + 16710: 0x00008B14, + 16711: 0x00008AE4, + 16712: 0x00008ADF, + 16713: 0x00008AF0, + 16714: 0x00008AC8, + 16715: 0x00008ADE, + 16716: 0x00008AE1, + 16717: 0x00008AE8, + 16718: 0x00008AFF, + 16719: 0x00008AEF, + 16720: 0x00008AFB, + 16721: 0x00008C91, + 16722: 0x00008C92, + 16723: 0x00008C90, + 16724: 0x00008CF5, + 16725: 0x00008CEE, + 16726: 0x00008CF1, + 16727: 0x00008CF0, + 16728: 0x00008CF3, + 16729: 0x00008D6C, + 16730: 0x00008D6E, + 16731: 0x00008DA5, + 16732: 0x00008DA7, + 16733: 0x00008E33, + 16734: 0x00008E3E, + 16735: 0x00008E38, + 16736: 0x00008E40, + 16737: 0x00008E45, + 16738: 0x00008E36, + 16739: 0x00008E3C, + 16740: 0x00008E3D, + 16741: 0x00008E41, + 16742: 0x00008E30, + 16743: 0x00008E3F, + 16744: 0x00008EBD, + 16745: 0x00008F36, + 16746: 0x00008F2E, + 16747: 0x00008F35, + 16748: 0x00008F32, + 16749: 0x00008F39, + 16750: 0x00008F37, + 16751: 0x00008F34, + 16752: 0x00009076, + 16753: 0x00009079, + 16754: 0x0000907B, + 16755: 0x00009086, + 16756: 0x000090FA, + 16757: 0x00009133, + 16758: 0x00009135, + 16759: 0x00009136, + 16760: 0x00009193, + 16761: 0x00009190, + 16762: 0x00009191, + 16763: 0x0000918D, + 16764: 0x0000918F, + 16765: 0x00009327, + 16766: 0x0000931E, + 16767: 0x00009308, + 16768: 0x0000931F, + 16769: 0x00009306, + 16770: 0x0000930F, + 16771: 0x0000937A, + 16772: 0x00009338, + 16773: 0x0000933C, + 16774: 0x0000931B, + 16775: 0x00009323, + 16776: 0x00009312, + 16777: 0x00009301, + 16778: 0x00009346, + 16779: 0x0000932D, + 16780: 0x0000930E, + 16781: 0x0000930D, + 16782: 0x000092CB, + 16783: 0x0000931D, + 16784: 0x000092FA, + 16785: 0x00009325, + 16786: 0x00009313, + 16787: 0x000092F9, + 16788: 0x000092F7, + 16789: 0x00009334, + 16790: 0x00009302, + 16791: 0x00009324, + 16792: 0x000092FF, + 16793: 0x00009329, + 16794: 0x00009339, + 16795: 0x00009335, + 16796: 0x0000932A, + 16797: 0x00009314, + 16798: 0x0000930C, + 16799: 0x0000930B, + 16800: 0x000092FE, + 16801: 0x00009309, + 16802: 0x00009300, + 16803: 0x000092FB, + 16804: 0x00009316, + 16805: 0x000095BC, + 16806: 0x000095CD, + 16807: 0x000095BE, + 16808: 0x000095B9, + 16809: 0x000095BA, + 16810: 0x000095B6, + 16811: 0x000095BF, + 16812: 0x000095B5, + 16813: 0x000095BD, + 16814: 0x000096A9, + 16815: 0x000096D4, + 16816: 0x0000970B, + 16817: 0x00009712, + 16818: 0x00009710, + 16819: 0x00009799, + 16820: 0x00009797, + 16821: 0x00009794, + 16822: 0x000097F0, + 16823: 0x000097F8, + 16824: 0x00009835, + 16825: 0x0000982F, + 16826: 0x00009832, + 16827: 0x00009924, + 16828: 0x0000991F, + 16829: 0x00009927, + 16830: 0x00009929, + 16831: 0x0000999E, + 16832: 0x000099EE, + 16833: 0x000099EC, + 16834: 0x000099E5, + 16835: 0x000099E4, + 16836: 0x000099F0, + 16837: 0x000099E3, + 16838: 0x000099EA, + 16839: 0x000099E9, + 16840: 0x000099E7, + 16841: 0x00009AB9, + 16842: 0x00009ABF, + 16843: 0x00009AB4, + 16844: 0x00009ABB, + 16845: 0x00009AF6, + 16846: 0x00009AFA, + 16847: 0x00009AF9, + 16848: 0x00009AF7, + 16849: 0x00009B33, + 16850: 0x00009B80, + 16851: 0x00009B85, + 16852: 0x00009B87, + 16853: 0x00009B7C, + 16854: 0x00009B7E, + 16855: 0x00009B7B, + 16856: 0x00009B82, + 16857: 0x00009B93, + 16858: 0x00009B92, + 16859: 0x00009B90, + 16860: 0x00009B7A, + 16861: 0x00009B95, + 16862: 0x00009B7D, + 16863: 0x00009B88, + 16864: 0x00009D25, + 16865: 0x00009D17, + 16866: 0x00009D20, + 16867: 0x00009D1E, + 16868: 0x00009D14, + 16869: 0x00009D29, + 16870: 0x00009D1D, + 16871: 0x00009D18, + 16872: 0x00009D22, + 16873: 0x00009D10, + 16874: 0x00009D19, + 16875: 0x00009D1F, + 16876: 0x00009E88, + 16877: 0x00009E86, + 16878: 0x00009E87, + 16879: 0x00009EAE, + 16880: 0x00009EAD, + 16881: 0x00009ED5, + 16882: 0x00009ED6, + 16883: 0x00009EFA, + 16884: 0x00009F12, + 16885: 0x00009F3D, + 16886: 0x00005126, + 16887: 0x00005125, + 16888: 0x00005122, + 16889: 0x00005124, + 16890: 0x00005120, + 16891: 0x00005129, + 16892: 0x000052F4, + 16893: 0x00005693, + 16894: 0x0000568C, + 16895: 0x0000568D, + 16896: 0x00005686, + 16897: 0x00005684, + 16898: 0x00005683, + 16899: 0x0000567E, + 16900: 0x00005682, + 16901: 0x0000567F, + 16902: 0x00005681, + 16903: 0x000058D6, + 16904: 0x000058D4, + 16905: 0x000058CF, + 16906: 0x000058D2, + 16907: 0x00005B2D, + 16908: 0x00005B25, + 16909: 0x00005B32, + 16910: 0x00005B23, + 16911: 0x00005B2C, + 16912: 0x00005B27, + 16913: 0x00005B26, + 16914: 0x00005B2F, + 16915: 0x00005B2E, + 16916: 0x00005B7B, + 16917: 0x00005BF1, + 16918: 0x00005BF2, + 16919: 0x00005DB7, + 16920: 0x00005E6C, + 16921: 0x00005E6A, + 16922: 0x00005FBE, + 16923: 0x00005FBB, + 16924: 0x000061C3, + 16925: 0x000061B5, + 16926: 0x000061BC, + 16927: 0x000061E7, + 16928: 0x000061E0, + 16929: 0x000061E5, + 16930: 0x000061E4, + 16931: 0x000061E8, + 16932: 0x000061DE, + 16933: 0x000064EF, + 16934: 0x000064E9, + 16935: 0x000064E3, + 16936: 0x000064EB, + 16937: 0x000064E4, + 16938: 0x000064E8, + 16939: 0x00006581, + 16940: 0x00006580, + 16941: 0x000065B6, + 16942: 0x000065DA, + 16943: 0x000066D2, + 16944: 0x00006A8D, + 16945: 0x00006A96, + 16946: 0x00006A81, + 16947: 0x00006AA5, + 16948: 0x00006A89, + 16949: 0x00006A9F, + 16950: 0x00006A9B, + 16951: 0x00006AA1, + 16952: 0x00006A9E, + 16953: 0x00006A87, + 16954: 0x00006A93, + 16955: 0x00006A8E, + 16956: 0x00006A95, + 16957: 0x00006A83, + 16958: 0x00006AA8, + 16959: 0x00006AA4, + 16960: 0x00006A91, + 16961: 0x00006A7F, + 16962: 0x00006AA6, + 16963: 0x00006A9A, + 16964: 0x00006A85, + 16965: 0x00006A8C, + 16966: 0x00006A92, + 16967: 0x00006B5B, + 16968: 0x00006BAD, + 16969: 0x00006C09, + 16970: 0x00006FCC, + 16971: 0x00006FA9, + 16972: 0x00006FF4, + 16973: 0x00006FD4, + 16974: 0x00006FE3, + 16975: 0x00006FDC, + 16976: 0x00006FED, + 16977: 0x00006FE7, + 16978: 0x00006FE6, + 16979: 0x00006FDE, + 16980: 0x00006FF2, + 16981: 0x00006FDD, + 16982: 0x00006FE2, + 16983: 0x00006FE8, + 16984: 0x000071E1, + 16985: 0x000071F1, + 16986: 0x000071E8, + 16987: 0x000071F2, + 16988: 0x000071E4, + 16989: 0x000071F0, + 16990: 0x000071E2, + 16991: 0x00007373, + 16992: 0x0000736E, + 16993: 0x0000736F, + 16994: 0x00007497, + 16995: 0x000074B2, + 16996: 0x000074AB, + 16997: 0x00007490, + 16998: 0x000074AA, + 16999: 0x000074AD, + 17000: 0x000074B1, + 17001: 0x000074A5, + 17002: 0x000074AF, + 17003: 0x00007510, + 17004: 0x00007511, + 17005: 0x00007512, + 17006: 0x0000750F, + 17007: 0x00007584, + 17008: 0x00007643, + 17009: 0x00007648, + 17010: 0x00007649, + 17011: 0x00007647, + 17012: 0x000076A4, + 17013: 0x000076E9, + 17014: 0x000077B5, + 17015: 0x000077AB, + 17016: 0x000077B2, + 17017: 0x000077B7, + 17018: 0x000077B6, + 17019: 0x000077B4, + 17020: 0x000077B1, + 17021: 0x000077A8, + 17022: 0x000077F0, + 17023: 0x000078F3, + 17024: 0x000078FD, + 17025: 0x00007902, + 17026: 0x000078FB, + 17027: 0x000078FC, + 17028: 0x000078F2, + 17029: 0x00007905, + 17030: 0x000078F9, + 17031: 0x000078FE, + 17032: 0x00007904, + 17033: 0x000079AB, + 17034: 0x000079A8, + 17035: 0x00007A5C, + 17036: 0x00007A5B, + 17037: 0x00007A56, + 17038: 0x00007A58, + 17039: 0x00007A54, + 17040: 0x00007A5A, + 17041: 0x00007ABE, + 17042: 0x00007AC0, + 17043: 0x00007AC1, + 17044: 0x00007C05, + 17045: 0x00007C0F, + 17046: 0x00007BF2, + 17047: 0x00007C00, + 17048: 0x00007BFF, + 17049: 0x00007BFB, + 17050: 0x00007C0E, + 17051: 0x00007BF4, + 17052: 0x00007C0B, + 17053: 0x00007BF3, + 17054: 0x00007C02, + 17055: 0x00007C09, + 17056: 0x00007C03, + 17057: 0x00007C01, + 17058: 0x00007BF8, + 17059: 0x00007BFD, + 17060: 0x00007C06, + 17061: 0x00007BF0, + 17062: 0x00007BF1, + 17063: 0x00007C10, + 17064: 0x00007C0A, + 17065: 0x00007CE8, + 17066: 0x00007E2D, + 17067: 0x00007E3C, + 17068: 0x00007E42, + 17069: 0x00007E33, + 17070: 0x00009848, + 17071: 0x00007E38, + 17072: 0x00007E2A, + 17073: 0x00007E49, + 17074: 0x00007E40, + 17075: 0x00007E47, + 17076: 0x00007E29, + 17077: 0x00007E4C, + 17078: 0x00007E30, + 17079: 0x00007E3B, + 17080: 0x00007E36, + 17081: 0x00007E44, + 17082: 0x00007E3A, + 17083: 0x00007F45, + 17084: 0x00007F7F, + 17085: 0x00007F7E, + 17086: 0x00007F7D, + 17087: 0x00007FF4, + 17088: 0x00007FF2, + 17089: 0x0000802C, + 17090: 0x000081BB, + 17091: 0x000081C4, + 17092: 0x000081CC, + 17093: 0x000081CA, + 17094: 0x000081C5, + 17095: 0x000081C7, + 17096: 0x000081BC, + 17097: 0x000081E9, + 17098: 0x0000825B, + 17099: 0x0000825A, + 17100: 0x0000825C, + 17101: 0x00008583, + 17102: 0x00008580, + 17103: 0x0000858F, + 17104: 0x000085A7, + 17105: 0x00008595, + 17106: 0x000085A0, + 17107: 0x0000858B, + 17108: 0x000085A3, + 17109: 0x0000857B, + 17110: 0x000085A4, + 17111: 0x0000859A, + 17112: 0x0000859E, + 17113: 0x00008577, + 17114: 0x0000857C, + 17115: 0x00008589, + 17116: 0x000085A1, + 17117: 0x0000857A, + 17118: 0x00008578, + 17119: 0x00008557, + 17120: 0x0000858E, + 17121: 0x00008596, + 17122: 0x00008586, + 17123: 0x0000858D, + 17124: 0x00008599, + 17125: 0x0000859D, + 17126: 0x00008581, + 17127: 0x000085A2, + 17128: 0x00008582, + 17129: 0x00008588, + 17130: 0x00008585, + 17131: 0x00008579, + 17132: 0x00008576, + 17133: 0x00008598, + 17134: 0x00008590, + 17135: 0x0000859F, + 17136: 0x00008668, + 17137: 0x000087BE, + 17138: 0x000087AA, + 17139: 0x000087AD, + 17140: 0x000087C5, + 17141: 0x000087B0, + 17142: 0x000087AC, + 17143: 0x000087B9, + 17144: 0x000087B5, + 17145: 0x000087BC, + 17146: 0x000087AE, + 17147: 0x000087C9, + 17148: 0x000087C3, + 17149: 0x000087C2, + 17150: 0x000087CC, + 17151: 0x000087B7, + 17152: 0x000087AF, + 17153: 0x000087C4, + 17154: 0x000087CA, + 17155: 0x000087B4, + 17156: 0x000087B6, + 17157: 0x000087BF, + 17158: 0x000087B8, + 17159: 0x000087BD, + 17160: 0x000087DE, + 17161: 0x000087B2, + 17162: 0x00008935, + 17163: 0x00008933, + 17164: 0x0000893C, + 17165: 0x0000893E, + 17166: 0x00008941, + 17167: 0x00008952, + 17168: 0x00008937, + 17169: 0x00008942, + 17170: 0x000089AD, + 17171: 0x000089AF, + 17172: 0x000089AE, + 17173: 0x000089F2, + 17174: 0x000089F3, + 17175: 0x00008B1E, + 17176: 0x00008B18, + 17177: 0x00008B16, + 17178: 0x00008B11, + 17179: 0x00008B05, + 17180: 0x00008B0B, + 17181: 0x00008B22, + 17182: 0x00008B0F, + 17183: 0x00008B12, + 17184: 0x00008B15, + 17185: 0x00008B07, + 17186: 0x00008B0D, + 17187: 0x00008B08, + 17188: 0x00008B06, + 17189: 0x00008B1C, + 17190: 0x00008B13, + 17191: 0x00008B1A, + 17192: 0x00008C4F, + 17193: 0x00008C70, + 17194: 0x00008C72, + 17195: 0x00008C71, + 17196: 0x00008C6F, + 17197: 0x00008C95, + 17198: 0x00008C94, + 17199: 0x00008CF9, + 17200: 0x00008D6F, + 17201: 0x00008E4E, + 17202: 0x00008E4D, + 17203: 0x00008E53, + 17204: 0x00008E50, + 17205: 0x00008E4C, + 17206: 0x00008E47, + 17207: 0x00008F43, + 17208: 0x00008F40, + 17209: 0x00009085, + 17210: 0x0000907E, + 17211: 0x00009138, + 17212: 0x0000919A, + 17213: 0x000091A2, + 17214: 0x0000919B, + 17215: 0x00009199, + 17216: 0x0000919F, + 17217: 0x000091A1, + 17218: 0x0000919D, + 17219: 0x000091A0, + 17220: 0x000093A1, + 17221: 0x00009383, + 17222: 0x000093AF, + 17223: 0x00009364, + 17224: 0x00009356, + 17225: 0x00009347, + 17226: 0x0000937C, + 17227: 0x00009358, + 17228: 0x0000935C, + 17229: 0x00009376, + 17230: 0x00009349, + 17231: 0x00009350, + 17232: 0x00009351, + 17233: 0x00009360, + 17234: 0x0000936D, + 17235: 0x0000938F, + 17236: 0x0000934C, + 17237: 0x0000936A, + 17238: 0x00009379, + 17239: 0x00009357, + 17240: 0x00009355, + 17241: 0x00009352, + 17242: 0x0000934F, + 17243: 0x00009371, + 17244: 0x00009377, + 17245: 0x0000937B, + 17246: 0x00009361, + 17247: 0x0000935E, + 17248: 0x00009363, + 17249: 0x00009367, + 17250: 0x00009380, + 17251: 0x0000934E, + 17252: 0x00009359, + 17253: 0x000095C7, + 17254: 0x000095C0, + 17255: 0x000095C9, + 17256: 0x000095C3, + 17257: 0x000095C5, + 17258: 0x000095B7, + 17259: 0x000096AE, + 17260: 0x000096B0, + 17261: 0x000096AC, + 17262: 0x00009720, + 17263: 0x0000971F, + 17264: 0x00009718, + 17265: 0x0000971D, + 17266: 0x00009719, + 17267: 0x0000979A, + 17268: 0x000097A1, + 17269: 0x0000979C, + 17270: 0x0000979E, + 17271: 0x0000979D, + 17272: 0x000097D5, + 17273: 0x000097D4, + 17274: 0x000097F1, + 17275: 0x00009841, + 17276: 0x00009844, + 17277: 0x0000984A, + 17278: 0x00009849, + 17279: 0x00009845, + 17280: 0x00009843, + 17281: 0x00009925, + 17282: 0x0000992B, + 17283: 0x0000992C, + 17284: 0x0000992A, + 17285: 0x00009933, + 17286: 0x00009932, + 17287: 0x0000992F, + 17288: 0x0000992D, + 17289: 0x00009931, + 17290: 0x00009930, + 17291: 0x00009998, + 17292: 0x000099A3, + 17293: 0x000099A1, + 17294: 0x00009A02, + 17295: 0x000099FA, + 17296: 0x000099F4, + 17297: 0x000099F7, + 17298: 0x000099F9, + 17299: 0x000099F8, + 17300: 0x000099F6, + 17301: 0x000099FB, + 17302: 0x000099FD, + 17303: 0x000099FE, + 17304: 0x000099FC, + 17305: 0x00009A03, + 17306: 0x00009ABE, + 17307: 0x00009AFE, + 17308: 0x00009AFD, + 17309: 0x00009B01, + 17310: 0x00009AFC, + 17311: 0x00009B48, + 17312: 0x00009B9A, + 17313: 0x00009BA8, + 17314: 0x00009B9E, + 17315: 0x00009B9B, + 17316: 0x00009BA6, + 17317: 0x00009BA1, + 17318: 0x00009BA5, + 17319: 0x00009BA4, + 17320: 0x00009B86, + 17321: 0x00009BA2, + 17322: 0x00009BA0, + 17323: 0x00009BAF, + 17324: 0x00009D33, + 17325: 0x00009D41, + 17326: 0x00009D67, + 17327: 0x00009D36, + 17328: 0x00009D2E, + 17329: 0x00009D2F, + 17330: 0x00009D31, + 17331: 0x00009D38, + 17332: 0x00009D30, + 17333: 0x00009D45, + 17334: 0x00009D42, + 17335: 0x00009D43, + 17336: 0x00009D3E, + 17337: 0x00009D37, + 17338: 0x00009D40, + 17339: 0x00009D3D, + 17340: 0x00007FF5, + 17341: 0x00009D2D, + 17342: 0x00009E8A, + 17343: 0x00009E89, + 17344: 0x00009E8D, + 17345: 0x00009EB0, + 17346: 0x00009EC8, + 17347: 0x00009EDA, + 17348: 0x00009EFB, + 17349: 0x00009EFF, + 17350: 0x00009F24, + 17351: 0x00009F23, + 17352: 0x00009F22, + 17353: 0x00009F54, + 17354: 0x00009FA0, + 17355: 0x00005131, + 17356: 0x0000512D, + 17357: 0x0000512E, + 17358: 0x00005698, + 17359: 0x0000569C, + 17360: 0x00005697, + 17361: 0x0000569A, + 17362: 0x0000569D, + 17363: 0x00005699, + 17364: 0x00005970, + 17365: 0x00005B3C, + 17366: 0x00005C69, + 17367: 0x00005C6A, + 17368: 0x00005DC0, + 17369: 0x00005E6D, + 17370: 0x00005E6E, + 17371: 0x000061D8, + 17372: 0x000061DF, + 17373: 0x000061ED, + 17374: 0x000061EE, + 17375: 0x000061F1, + 17376: 0x000061EA, + 17377: 0x000061F0, + 17378: 0x000061EB, + 17379: 0x000061D6, + 17380: 0x000061E9, + 17381: 0x000064FF, + 17382: 0x00006504, + 17383: 0x000064FD, + 17384: 0x000064F8, + 17385: 0x00006501, + 17386: 0x00006503, + 17387: 0x000064FC, + 17388: 0x00006594, + 17389: 0x000065DB, + 17390: 0x000066DA, + 17391: 0x000066DB, + 17392: 0x000066D8, + 17393: 0x00006AC5, + 17394: 0x00006AB9, + 17395: 0x00006ABD, + 17396: 0x00006AE1, + 17397: 0x00006AC6, + 17398: 0x00006ABA, + 17399: 0x00006AB6, + 17400: 0x00006AB7, + 17401: 0x00006AC7, + 17402: 0x00006AB4, + 17403: 0x00006AAD, + 17404: 0x00006B5E, + 17405: 0x00006BC9, + 17406: 0x00006C0B, + 17407: 0x00007007, + 17408: 0x0000700C, + 17409: 0x0000700D, + 17410: 0x00007001, + 17411: 0x00007005, + 17412: 0x00007014, + 17413: 0x0000700E, + 17414: 0x00006FFF, + 17415: 0x00007000, + 17416: 0x00006FFB, + 17417: 0x00007026, + 17418: 0x00006FFC, + 17419: 0x00006FF7, + 17420: 0x0000700A, + 17421: 0x00007201, + 17422: 0x000071FF, + 17423: 0x000071F9, + 17424: 0x00007203, + 17425: 0x000071FD, + 17426: 0x00007376, + 17427: 0x000074B8, + 17428: 0x000074C0, + 17429: 0x000074B5, + 17430: 0x000074C1, + 17431: 0x000074BE, + 17432: 0x000074B6, + 17433: 0x000074BB, + 17434: 0x000074C2, + 17435: 0x00007514, + 17436: 0x00007513, + 17437: 0x0000765C, + 17438: 0x00007664, + 17439: 0x00007659, + 17440: 0x00007650, + 17441: 0x00007653, + 17442: 0x00007657, + 17443: 0x0000765A, + 17444: 0x000076A6, + 17445: 0x000076BD, + 17446: 0x000076EC, + 17447: 0x000077C2, + 17448: 0x000077BA, + 17449: 0x000078FF, + 17450: 0x0000790C, + 17451: 0x00007913, + 17452: 0x00007914, + 17453: 0x00007909, + 17454: 0x00007910, + 17455: 0x00007912, + 17456: 0x00007911, + 17457: 0x000079AD, + 17458: 0x000079AC, + 17459: 0x00007A5F, + 17460: 0x00007C1C, + 17461: 0x00007C29, + 17462: 0x00007C19, + 17463: 0x00007C20, + 17464: 0x00007C1F, + 17465: 0x00007C2D, + 17466: 0x00007C1D, + 17467: 0x00007C26, + 17468: 0x00007C28, + 17469: 0x00007C22, + 17470: 0x00007C25, + 17471: 0x00007C30, + 17472: 0x00007E5C, + 17473: 0x00007E50, + 17474: 0x00007E56, + 17475: 0x00007E63, + 17476: 0x00007E58, + 17477: 0x00007E62, + 17478: 0x00007E5F, + 17479: 0x00007E51, + 17480: 0x00007E60, + 17481: 0x00007E57, + 17482: 0x00007E53, + 17483: 0x00007FB5, + 17484: 0x00007FB3, + 17485: 0x00007FF7, + 17486: 0x00007FF8, + 17487: 0x00008075, + 17488: 0x000081D1, + 17489: 0x000081D2, + 17490: 0x000081D0, + 17491: 0x0000825F, + 17492: 0x0000825E, + 17493: 0x000085B4, + 17494: 0x000085C6, + 17495: 0x000085C0, + 17496: 0x000085C3, + 17497: 0x000085C2, + 17498: 0x000085B3, + 17499: 0x000085B5, + 17500: 0x000085BD, + 17501: 0x000085C7, + 17502: 0x000085C4, + 17503: 0x000085BF, + 17504: 0x000085CB, + 17505: 0x000085CE, + 17506: 0x000085C8, + 17507: 0x000085C5, + 17508: 0x000085B1, + 17509: 0x000085B6, + 17510: 0x000085D2, + 17511: 0x00008624, + 17512: 0x000085B8, + 17513: 0x000085B7, + 17514: 0x000085BE, + 17515: 0x00008669, + 17516: 0x000087E7, + 17517: 0x000087E6, + 17518: 0x000087E2, + 17519: 0x000087DB, + 17520: 0x000087EB, + 17521: 0x000087EA, + 17522: 0x000087E5, + 17523: 0x000087DF, + 17524: 0x000087F3, + 17525: 0x000087E4, + 17526: 0x000087D4, + 17527: 0x000087DC, + 17528: 0x000087D3, + 17529: 0x000087ED, + 17530: 0x000087D8, + 17531: 0x000087E3, + 17532: 0x000087A4, + 17533: 0x000087D7, + 17534: 0x000087D9, + 17535: 0x00008801, + 17536: 0x000087F4, + 17537: 0x000087E8, + 17538: 0x000087DD, + 17539: 0x00008953, + 17540: 0x0000894B, + 17541: 0x0000894F, + 17542: 0x0000894C, + 17543: 0x00008946, + 17544: 0x00008950, + 17545: 0x00008951, + 17546: 0x00008949, + 17547: 0x00008B2A, + 17548: 0x00008B27, + 17549: 0x00008B23, + 17550: 0x00008B33, + 17551: 0x00008B30, + 17552: 0x00008B35, + 17553: 0x00008B47, + 17554: 0x00008B2F, + 17555: 0x00008B3C, + 17556: 0x00008B3E, + 17557: 0x00008B31, + 17558: 0x00008B25, + 17559: 0x00008B37, + 17560: 0x00008B26, + 17561: 0x00008B36, + 17562: 0x00008B2E, + 17563: 0x00008B24, + 17564: 0x00008B3B, + 17565: 0x00008B3D, + 17566: 0x00008B3A, + 17567: 0x00008C42, + 17568: 0x00008C75, + 17569: 0x00008C99, + 17570: 0x00008C98, + 17571: 0x00008C97, + 17572: 0x00008CFE, + 17573: 0x00008D04, + 17574: 0x00008D02, + 17575: 0x00008D00, + 17576: 0x00008E5C, + 17577: 0x00008E62, + 17578: 0x00008E60, + 17579: 0x00008E57, + 17580: 0x00008E56, + 17581: 0x00008E5E, + 17582: 0x00008E65, + 17583: 0x00008E67, + 17584: 0x00008E5B, + 17585: 0x00008E5A, + 17586: 0x00008E61, + 17587: 0x00008E5D, + 17588: 0x00008E69, + 17589: 0x00008E54, + 17590: 0x00008F46, + 17591: 0x00008F47, + 17592: 0x00008F48, + 17593: 0x00008F4B, + 17594: 0x00009128, + 17595: 0x0000913A, + 17596: 0x0000913B, + 17597: 0x0000913E, + 17598: 0x000091A8, + 17599: 0x000091A5, + 17600: 0x000091A7, + 17601: 0x000091AF, + 17602: 0x000091AA, + 17603: 0x000093B5, + 17604: 0x0000938C, + 17605: 0x00009392, + 17606: 0x000093B7, + 17607: 0x0000939B, + 17608: 0x0000939D, + 17609: 0x00009389, + 17610: 0x000093A7, + 17611: 0x0000938E, + 17612: 0x000093AA, + 17613: 0x0000939E, + 17614: 0x000093A6, + 17615: 0x00009395, + 17616: 0x00009388, + 17617: 0x00009399, + 17618: 0x0000939F, + 17619: 0x0000938D, + 17620: 0x000093B1, + 17621: 0x00009391, + 17622: 0x000093B2, + 17623: 0x000093A4, + 17624: 0x000093A8, + 17625: 0x000093B4, + 17626: 0x000093A3, + 17627: 0x000093A5, + 17628: 0x000095D2, + 17629: 0x000095D3, + 17630: 0x000095D1, + 17631: 0x000096B3, + 17632: 0x000096D7, + 17633: 0x000096DA, + 17634: 0x00005DC2, + 17635: 0x000096DF, + 17636: 0x000096D8, + 17637: 0x000096DD, + 17638: 0x00009723, + 17639: 0x00009722, + 17640: 0x00009725, + 17641: 0x000097AC, + 17642: 0x000097AE, + 17643: 0x000097A8, + 17644: 0x000097AB, + 17645: 0x000097A4, + 17646: 0x000097AA, + 17647: 0x000097A2, + 17648: 0x000097A5, + 17649: 0x000097D7, + 17650: 0x000097D9, + 17651: 0x000097D6, + 17652: 0x000097D8, + 17653: 0x000097FA, + 17654: 0x00009850, + 17655: 0x00009851, + 17656: 0x00009852, + 17657: 0x000098B8, + 17658: 0x00009941, + 17659: 0x0000993C, + 17660: 0x0000993A, + 17661: 0x00009A0F, + 17662: 0x00009A0B, + 17663: 0x00009A09, + 17664: 0x00009A0D, + 17665: 0x00009A04, + 17666: 0x00009A11, + 17667: 0x00009A0A, + 17668: 0x00009A05, + 17669: 0x00009A07, + 17670: 0x00009A06, + 17671: 0x00009AC0, + 17672: 0x00009ADC, + 17673: 0x00009B08, + 17674: 0x00009B04, + 17675: 0x00009B05, + 17676: 0x00009B29, + 17677: 0x00009B35, + 17678: 0x00009B4A, + 17679: 0x00009B4C, + 17680: 0x00009B4B, + 17681: 0x00009BC7, + 17682: 0x00009BC6, + 17683: 0x00009BC3, + 17684: 0x00009BBF, + 17685: 0x00009BC1, + 17686: 0x00009BB5, + 17687: 0x00009BB8, + 17688: 0x00009BD3, + 17689: 0x00009BB6, + 17690: 0x00009BC4, + 17691: 0x00009BB9, + 17692: 0x00009BBD, + 17693: 0x00009D5C, + 17694: 0x00009D53, + 17695: 0x00009D4F, + 17696: 0x00009D4A, + 17697: 0x00009D5B, + 17698: 0x00009D4B, + 17699: 0x00009D59, + 17700: 0x00009D56, + 17701: 0x00009D4C, + 17702: 0x00009D57, + 17703: 0x00009D52, + 17704: 0x00009D54, + 17705: 0x00009D5F, + 17706: 0x00009D58, + 17707: 0x00009D5A, + 17708: 0x00009E8E, + 17709: 0x00009E8C, + 17710: 0x00009EDF, + 17711: 0x00009F01, + 17712: 0x00009F00, + 17713: 0x00009F16, + 17714: 0x00009F25, + 17715: 0x00009F2B, + 17716: 0x00009F2A, + 17717: 0x00009F29, + 17718: 0x00009F28, + 17719: 0x00009F4C, + 17720: 0x00009F55, + 17721: 0x00005134, + 17722: 0x00005135, + 17723: 0x00005296, + 17724: 0x000052F7, + 17725: 0x000053B4, + 17726: 0x000056AB, + 17727: 0x000056AD, + 17728: 0x000056A6, + 17729: 0x000056A7, + 17730: 0x000056AA, + 17731: 0x000056AC, + 17732: 0x000058DA, + 17733: 0x000058DD, + 17734: 0x000058DB, + 17735: 0x00005912, + 17736: 0x00005B3D, + 17737: 0x00005B3E, + 17738: 0x00005B3F, + 17739: 0x00005DC3, + 17740: 0x00005E70, + 17741: 0x00005FBF, + 17742: 0x000061FB, + 17743: 0x00006507, + 17744: 0x00006510, + 17745: 0x0000650D, + 17746: 0x00006509, + 17747: 0x0000650C, + 17748: 0x0000650E, + 17749: 0x00006584, + 17750: 0x000065DE, + 17751: 0x000065DD, + 17752: 0x000066DE, + 17753: 0x00006AE7, + 17754: 0x00006AE0, + 17755: 0x00006ACC, + 17756: 0x00006AD1, + 17757: 0x00006AD9, + 17758: 0x00006ACB, + 17759: 0x00006ADF, + 17760: 0x00006ADC, + 17761: 0x00006AD0, + 17762: 0x00006AEB, + 17763: 0x00006ACF, + 17764: 0x00006ACD, + 17765: 0x00006ADE, + 17766: 0x00006B60, + 17767: 0x00006BB0, + 17768: 0x00006C0C, + 17769: 0x00007019, + 17770: 0x00007027, + 17771: 0x00007020, + 17772: 0x00007016, + 17773: 0x0000702B, + 17774: 0x00007021, + 17775: 0x00007022, + 17776: 0x00007023, + 17777: 0x00007029, + 17778: 0x00007017, + 17779: 0x00007024, + 17780: 0x0000701C, + 17781: 0x0000702A, + 17782: 0x0000720C, + 17783: 0x0000720A, + 17784: 0x00007207, + 17785: 0x00007202, + 17786: 0x00007205, + 17787: 0x000072A5, + 17788: 0x000072A6, + 17789: 0x000072A4, + 17790: 0x000072A3, + 17791: 0x000072A1, + 17792: 0x000074CB, + 17793: 0x000074C5, + 17794: 0x000074B7, + 17795: 0x000074C3, + 17796: 0x00007516, + 17797: 0x00007660, + 17798: 0x000077C9, + 17799: 0x000077CA, + 17800: 0x000077C4, + 17801: 0x000077F1, + 17802: 0x0000791D, + 17803: 0x0000791B, + 17804: 0x00007921, + 17805: 0x0000791C, + 17806: 0x00007917, + 17807: 0x0000791E, + 17808: 0x000079B0, + 17809: 0x00007A67, + 17810: 0x00007A68, + 17811: 0x00007C33, + 17812: 0x00007C3C, + 17813: 0x00007C39, + 17814: 0x00007C2C, + 17815: 0x00007C3B, + 17816: 0x00007CEC, + 17817: 0x00007CEA, + 17818: 0x00007E76, + 17819: 0x00007E75, + 17820: 0x00007E78, + 17821: 0x00007E70, + 17822: 0x00007E77, + 17823: 0x00007E6F, + 17824: 0x00007E7A, + 17825: 0x00007E72, + 17826: 0x00007E74, + 17827: 0x00007E68, + 17828: 0x00007F4B, + 17829: 0x00007F4A, + 17830: 0x00007F83, + 17831: 0x00007F86, + 17832: 0x00007FB7, + 17833: 0x00007FFD, + 17834: 0x00007FFE, + 17835: 0x00008078, + 17836: 0x000081D7, + 17837: 0x000081D5, + 17838: 0x00008264, + 17839: 0x00008261, + 17840: 0x00008263, + 17841: 0x000085EB, + 17842: 0x000085F1, + 17843: 0x000085ED, + 17844: 0x000085D9, + 17845: 0x000085E1, + 17846: 0x000085E8, + 17847: 0x000085DA, + 17848: 0x000085D7, + 17849: 0x000085EC, + 17850: 0x000085F2, + 17851: 0x000085F8, + 17852: 0x000085D8, + 17853: 0x000085DF, + 17854: 0x000085E3, + 17855: 0x000085DC, + 17856: 0x000085D1, + 17857: 0x000085F0, + 17858: 0x000085E6, + 17859: 0x000085EF, + 17860: 0x000085DE, + 17861: 0x000085E2, + 17862: 0x00008800, + 17863: 0x000087FA, + 17864: 0x00008803, + 17865: 0x000087F6, + 17866: 0x000087F7, + 17867: 0x00008809, + 17868: 0x0000880C, + 17869: 0x0000880B, + 17870: 0x00008806, + 17871: 0x000087FC, + 17872: 0x00008808, + 17873: 0x000087FF, + 17874: 0x0000880A, + 17875: 0x00008802, + 17876: 0x00008962, + 17877: 0x0000895A, + 17878: 0x0000895B, + 17879: 0x00008957, + 17880: 0x00008961, + 17881: 0x0000895C, + 17882: 0x00008958, + 17883: 0x0000895D, + 17884: 0x00008959, + 17885: 0x00008988, + 17886: 0x000089B7, + 17887: 0x000089B6, + 17888: 0x000089F6, + 17889: 0x00008B50, + 17890: 0x00008B48, + 17891: 0x00008B4A, + 17892: 0x00008B40, + 17893: 0x00008B53, + 17894: 0x00008B56, + 17895: 0x00008B54, + 17896: 0x00008B4B, + 17897: 0x00008B55, + 17898: 0x00008B51, + 17899: 0x00008B42, + 17900: 0x00008B52, + 17901: 0x00008B57, + 17902: 0x00008C43, + 17903: 0x00008C77, + 17904: 0x00008C76, + 17905: 0x00008C9A, + 17906: 0x00008D06, + 17907: 0x00008D07, + 17908: 0x00008D09, + 17909: 0x00008DAC, + 17910: 0x00008DAA, + 17911: 0x00008DAD, + 17912: 0x00008DAB, + 17913: 0x00008E6D, + 17914: 0x00008E78, + 17915: 0x00008E73, + 17916: 0x00008E6A, + 17917: 0x00008E6F, + 17918: 0x00008E7B, + 17919: 0x00008EC2, + 17920: 0x00008F52, + 17921: 0x00008F51, + 17922: 0x00008F4F, + 17923: 0x00008F50, + 17924: 0x00008F53, + 17925: 0x00008FB4, + 17926: 0x00009140, + 17927: 0x0000913F, + 17928: 0x000091B0, + 17929: 0x000091AD, + 17930: 0x000093DE, + 17931: 0x000093C7, + 17932: 0x000093CF, + 17933: 0x000093C2, + 17934: 0x000093DA, + 17935: 0x000093D0, + 17936: 0x000093F9, + 17937: 0x000093EC, + 17938: 0x000093CC, + 17939: 0x000093D9, + 17940: 0x000093A9, + 17941: 0x000093E6, + 17942: 0x000093CA, + 17943: 0x000093D4, + 17944: 0x000093EE, + 17945: 0x000093E3, + 17946: 0x000093D5, + 17947: 0x000093C4, + 17948: 0x000093CE, + 17949: 0x000093C0, + 17950: 0x000093D2, + 17951: 0x000093E7, + 17952: 0x0000957D, + 17953: 0x000095DA, + 17954: 0x000095DB, + 17955: 0x000096E1, + 17956: 0x00009729, + 17957: 0x0000972B, + 17958: 0x0000972C, + 17959: 0x00009728, + 17960: 0x00009726, + 17961: 0x000097B3, + 17962: 0x000097B7, + 17963: 0x000097B6, + 17964: 0x000097DD, + 17965: 0x000097DE, + 17966: 0x000097DF, + 17967: 0x0000985C, + 17968: 0x00009859, + 17969: 0x0000985D, + 17970: 0x00009857, + 17971: 0x000098BF, + 17972: 0x000098BD, + 17973: 0x000098BB, + 17974: 0x000098BE, + 17975: 0x00009948, + 17976: 0x00009947, + 17977: 0x00009943, + 17978: 0x000099A6, + 17979: 0x000099A7, + 17980: 0x00009A1A, + 17981: 0x00009A15, + 17982: 0x00009A25, + 17983: 0x00009A1D, + 17984: 0x00009A24, + 17985: 0x00009A1B, + 17986: 0x00009A22, + 17987: 0x00009A20, + 17988: 0x00009A27, + 17989: 0x00009A23, + 17990: 0x00009A1E, + 17991: 0x00009A1C, + 17992: 0x00009A14, + 17993: 0x00009AC2, + 17994: 0x00009B0B, + 17995: 0x00009B0A, + 17996: 0x00009B0E, + 17997: 0x00009B0C, + 17998: 0x00009B37, + 17999: 0x00009BEA, + 18000: 0x00009BEB, + 18001: 0x00009BE0, + 18002: 0x00009BDE, + 18003: 0x00009BE4, + 18004: 0x00009BE6, + 18005: 0x00009BE2, + 18006: 0x00009BF0, + 18007: 0x00009BD4, + 18008: 0x00009BD7, + 18009: 0x00009BEC, + 18010: 0x00009BDC, + 18011: 0x00009BD9, + 18012: 0x00009BE5, + 18013: 0x00009BD5, + 18014: 0x00009BE1, + 18015: 0x00009BDA, + 18016: 0x00009D77, + 18017: 0x00009D81, + 18018: 0x00009D8A, + 18019: 0x00009D84, + 18020: 0x00009D88, + 18021: 0x00009D71, + 18022: 0x00009D80, + 18023: 0x00009D78, + 18024: 0x00009D86, + 18025: 0x00009D8B, + 18026: 0x00009D8C, + 18027: 0x00009D7D, + 18028: 0x00009D6B, + 18029: 0x00009D74, + 18030: 0x00009D75, + 18031: 0x00009D70, + 18032: 0x00009D69, + 18033: 0x00009D85, + 18034: 0x00009D73, + 18035: 0x00009D7B, + 18036: 0x00009D82, + 18037: 0x00009D6F, + 18038: 0x00009D79, + 18039: 0x00009D7F, + 18040: 0x00009D87, + 18041: 0x00009D68, + 18042: 0x00009E94, + 18043: 0x00009E91, + 18044: 0x00009EC0, + 18045: 0x00009EFC, + 18046: 0x00009F2D, + 18047: 0x00009F40, + 18048: 0x00009F41, + 18049: 0x00009F4D, + 18050: 0x00009F56, + 18051: 0x00009F57, + 18052: 0x00009F58, + 18053: 0x00005337, + 18054: 0x000056B2, + 18055: 0x000056B5, + 18056: 0x000056B3, + 18057: 0x000058E3, + 18058: 0x00005B45, + 18059: 0x00005DC6, + 18060: 0x00005DC7, + 18061: 0x00005EEE, + 18062: 0x00005EEF, + 18063: 0x00005FC0, + 18064: 0x00005FC1, + 18065: 0x000061F9, + 18066: 0x00006517, + 18067: 0x00006516, + 18068: 0x00006515, + 18069: 0x00006513, + 18070: 0x000065DF, + 18071: 0x000066E8, + 18072: 0x000066E3, + 18073: 0x000066E4, + 18074: 0x00006AF3, + 18075: 0x00006AF0, + 18076: 0x00006AEA, + 18077: 0x00006AE8, + 18078: 0x00006AF9, + 18079: 0x00006AF1, + 18080: 0x00006AEE, + 18081: 0x00006AEF, + 18082: 0x0000703C, + 18083: 0x00007035, + 18084: 0x0000702F, + 18085: 0x00007037, + 18086: 0x00007034, + 18087: 0x00007031, + 18088: 0x00007042, + 18089: 0x00007038, + 18090: 0x0000703F, + 18091: 0x0000703A, + 18092: 0x00007039, + 18093: 0x00007040, + 18094: 0x0000703B, + 18095: 0x00007033, + 18096: 0x00007041, + 18097: 0x00007213, + 18098: 0x00007214, + 18099: 0x000072A8, + 18100: 0x0000737D, + 18101: 0x0000737C, + 18102: 0x000074BA, + 18103: 0x000076AB, + 18104: 0x000076AA, + 18105: 0x000076BE, + 18106: 0x000076ED, + 18107: 0x000077CC, + 18108: 0x000077CE, + 18109: 0x000077CF, + 18110: 0x000077CD, + 18111: 0x000077F2, + 18112: 0x00007925, + 18113: 0x00007923, + 18114: 0x00007927, + 18115: 0x00007928, + 18116: 0x00007924, + 18117: 0x00007929, + 18118: 0x000079B2, + 18119: 0x00007A6E, + 18120: 0x00007A6C, + 18121: 0x00007A6D, + 18122: 0x00007AF7, + 18123: 0x00007C49, + 18124: 0x00007C48, + 18125: 0x00007C4A, + 18126: 0x00007C47, + 18127: 0x00007C45, + 18128: 0x00007CEE, + 18129: 0x00007E7B, + 18130: 0x00007E7E, + 18131: 0x00007E81, + 18132: 0x00007E80, + 18133: 0x00007FBA, + 18134: 0x00007FFF, + 18135: 0x00008079, + 18136: 0x000081DB, + 18137: 0x000081D9, + 18138: 0x0000820B, + 18139: 0x00008268, + 18140: 0x00008269, + 18141: 0x00008622, + 18142: 0x000085FF, + 18143: 0x00008601, + 18144: 0x000085FE, + 18145: 0x0000861B, + 18146: 0x00008600, + 18147: 0x000085F6, + 18148: 0x00008604, + 18149: 0x00008609, + 18150: 0x00008605, + 18151: 0x0000860C, + 18152: 0x000085FD, + 18153: 0x00008819, + 18154: 0x00008810, + 18155: 0x00008811, + 18156: 0x00008817, + 18157: 0x00008813, + 18158: 0x00008816, + 18159: 0x00008963, + 18160: 0x00008966, + 18161: 0x000089B9, + 18162: 0x000089F7, + 18163: 0x00008B60, + 18164: 0x00008B6A, + 18165: 0x00008B5D, + 18166: 0x00008B68, + 18167: 0x00008B63, + 18168: 0x00008B65, + 18169: 0x00008B67, + 18170: 0x00008B6D, + 18171: 0x00008DAE, + 18172: 0x00008E86, + 18173: 0x00008E88, + 18174: 0x00008E84, + 18175: 0x00008F59, + 18176: 0x00008F56, + 18177: 0x00008F57, + 18178: 0x00008F55, + 18179: 0x00008F58, + 18180: 0x00008F5A, + 18181: 0x0000908D, + 18182: 0x00009143, + 18183: 0x00009141, + 18184: 0x000091B7, + 18185: 0x000091B5, + 18186: 0x000091B2, + 18187: 0x000091B3, + 18188: 0x0000940B, + 18189: 0x00009413, + 18190: 0x000093FB, + 18191: 0x00009420, + 18192: 0x0000940F, + 18193: 0x00009414, + 18194: 0x000093FE, + 18195: 0x00009415, + 18196: 0x00009410, + 18197: 0x00009428, + 18198: 0x00009419, + 18199: 0x0000940D, + 18200: 0x000093F5, + 18201: 0x00009400, + 18202: 0x000093F7, + 18203: 0x00009407, + 18204: 0x0000940E, + 18205: 0x00009416, + 18206: 0x00009412, + 18207: 0x000093FA, + 18208: 0x00009409, + 18209: 0x000093F8, + 18210: 0x0000940A, + 18211: 0x000093FF, + 18212: 0x000093FC, + 18213: 0x0000940C, + 18214: 0x000093F6, + 18215: 0x00009411, + 18216: 0x00009406, + 18217: 0x000095DE, + 18218: 0x000095E0, + 18219: 0x000095DF, + 18220: 0x0000972E, + 18221: 0x0000972F, + 18222: 0x000097B9, + 18223: 0x000097BB, + 18224: 0x000097FD, + 18225: 0x000097FE, + 18226: 0x00009860, + 18227: 0x00009862, + 18228: 0x00009863, + 18229: 0x0000985F, + 18230: 0x000098C1, + 18231: 0x000098C2, + 18232: 0x00009950, + 18233: 0x0000994E, + 18234: 0x00009959, + 18235: 0x0000994C, + 18236: 0x0000994B, + 18237: 0x00009953, + 18238: 0x00009A32, + 18239: 0x00009A34, + 18240: 0x00009A31, + 18241: 0x00009A2C, + 18242: 0x00009A2A, + 18243: 0x00009A36, + 18244: 0x00009A29, + 18245: 0x00009A2E, + 18246: 0x00009A38, + 18247: 0x00009A2D, + 18248: 0x00009AC7, + 18249: 0x00009ACA, + 18250: 0x00009AC6, + 18251: 0x00009B10, + 18252: 0x00009B12, + 18253: 0x00009B11, + 18254: 0x00009C0B, + 18255: 0x00009C08, + 18256: 0x00009BF7, + 18257: 0x00009C05, + 18258: 0x00009C12, + 18259: 0x00009BF8, + 18260: 0x00009C40, + 18261: 0x00009C07, + 18262: 0x00009C0E, + 18263: 0x00009C06, + 18264: 0x00009C17, + 18265: 0x00009C14, + 18266: 0x00009C09, + 18267: 0x00009D9F, + 18268: 0x00009D99, + 18269: 0x00009DA4, + 18270: 0x00009D9D, + 18271: 0x00009D92, + 18272: 0x00009D98, + 18273: 0x00009D90, + 18274: 0x00009D9B, + 18275: 0x00009DA0, + 18276: 0x00009D94, + 18277: 0x00009D9C, + 18278: 0x00009DAA, + 18279: 0x00009D97, + 18280: 0x00009DA1, + 18281: 0x00009D9A, + 18282: 0x00009DA2, + 18283: 0x00009DA8, + 18284: 0x00009D9E, + 18285: 0x00009DA3, + 18286: 0x00009DBF, + 18287: 0x00009DA9, + 18288: 0x00009D96, + 18289: 0x00009DA6, + 18290: 0x00009DA7, + 18291: 0x00009E99, + 18292: 0x00009E9B, + 18293: 0x00009E9A, + 18294: 0x00009EE5, + 18295: 0x00009EE4, + 18296: 0x00009EE7, + 18297: 0x00009EE6, + 18298: 0x00009F30, + 18299: 0x00009F2E, + 18300: 0x00009F5B, + 18301: 0x00009F60, + 18302: 0x00009F5E, + 18303: 0x00009F5D, + 18304: 0x00009F59, + 18305: 0x00009F91, + 18306: 0x0000513A, + 18307: 0x00005139, + 18308: 0x00005298, + 18309: 0x00005297, + 18310: 0x000056C3, + 18311: 0x000056BD, + 18312: 0x000056BE, + 18313: 0x00005B48, + 18314: 0x00005B47, + 18315: 0x00005DCB, + 18316: 0x00005DCF, + 18317: 0x00005EF1, + 18318: 0x000061FD, + 18319: 0x0000651B, + 18320: 0x00006B02, + 18321: 0x00006AFC, + 18322: 0x00006B03, + 18323: 0x00006AF8, + 18324: 0x00006B00, + 18325: 0x00007043, + 18326: 0x00007044, + 18327: 0x0000704A, + 18328: 0x00007048, + 18329: 0x00007049, + 18330: 0x00007045, + 18331: 0x00007046, + 18332: 0x0000721D, + 18333: 0x0000721A, + 18334: 0x00007219, + 18335: 0x0000737E, + 18336: 0x00007517, + 18337: 0x0000766A, + 18338: 0x000077D0, + 18339: 0x0000792D, + 18340: 0x00007931, + 18341: 0x0000792F, + 18342: 0x00007C54, + 18343: 0x00007C53, + 18344: 0x00007CF2, + 18345: 0x00007E8A, + 18346: 0x00007E87, + 18347: 0x00007E88, + 18348: 0x00007E8B, + 18349: 0x00007E86, + 18350: 0x00007E8D, + 18351: 0x00007F4D, + 18352: 0x00007FBB, + 18353: 0x00008030, + 18354: 0x000081DD, + 18355: 0x00008618, + 18356: 0x0000862A, + 18357: 0x00008626, + 18358: 0x0000861F, + 18359: 0x00008623, + 18360: 0x0000861C, + 18361: 0x00008619, + 18362: 0x00008627, + 18363: 0x0000862E, + 18364: 0x00008621, + 18365: 0x00008620, + 18366: 0x00008629, + 18367: 0x0000861E, + 18368: 0x00008625, + 18369: 0x00008829, + 18370: 0x0000881D, + 18371: 0x0000881B, + 18372: 0x00008820, + 18373: 0x00008824, + 18374: 0x0000881C, + 18375: 0x0000882B, + 18376: 0x0000884A, + 18377: 0x0000896D, + 18378: 0x00008969, + 18379: 0x0000896E, + 18380: 0x0000896B, + 18381: 0x000089FA, + 18382: 0x00008B79, + 18383: 0x00008B78, + 18384: 0x00008B45, + 18385: 0x00008B7A, + 18386: 0x00008B7B, + 18387: 0x00008D10, + 18388: 0x00008D14, + 18389: 0x00008DAF, + 18390: 0x00008E8E, + 18391: 0x00008E8C, + 18392: 0x00008F5E, + 18393: 0x00008F5B, + 18394: 0x00008F5D, + 18395: 0x00009146, + 18396: 0x00009144, + 18397: 0x00009145, + 18398: 0x000091B9, + 18399: 0x0000943F, + 18400: 0x0000943B, + 18401: 0x00009436, + 18402: 0x00009429, + 18403: 0x0000943D, + 18404: 0x0000943C, + 18405: 0x00009430, + 18406: 0x00009439, + 18407: 0x0000942A, + 18408: 0x00009437, + 18409: 0x0000942C, + 18410: 0x00009440, + 18411: 0x00009431, + 18412: 0x000095E5, + 18413: 0x000095E4, + 18414: 0x000095E3, + 18415: 0x00009735, + 18416: 0x0000973A, + 18417: 0x000097BF, + 18418: 0x000097E1, + 18419: 0x00009864, + 18420: 0x000098C9, + 18421: 0x000098C6, + 18422: 0x000098C0, + 18423: 0x00009958, + 18424: 0x00009956, + 18425: 0x00009A39, + 18426: 0x00009A3D, + 18427: 0x00009A46, + 18428: 0x00009A44, + 18429: 0x00009A42, + 18430: 0x00009A41, + 18431: 0x00009A3A, + 18432: 0x00009A3F, + 18433: 0x00009ACD, + 18434: 0x00009B15, + 18435: 0x00009B17, + 18436: 0x00009B18, + 18437: 0x00009B16, + 18438: 0x00009B3A, + 18439: 0x00009B52, + 18440: 0x00009C2B, + 18441: 0x00009C1D, + 18442: 0x00009C1C, + 18443: 0x00009C2C, + 18444: 0x00009C23, + 18445: 0x00009C28, + 18446: 0x00009C29, + 18447: 0x00009C24, + 18448: 0x00009C21, + 18449: 0x00009DB7, + 18450: 0x00009DB6, + 18451: 0x00009DBC, + 18452: 0x00009DC1, + 18453: 0x00009DC7, + 18454: 0x00009DCA, + 18455: 0x00009DCF, + 18456: 0x00009DBE, + 18457: 0x00009DC5, + 18458: 0x00009DC3, + 18459: 0x00009DBB, + 18460: 0x00009DB5, + 18461: 0x00009DCE, + 18462: 0x00009DB9, + 18463: 0x00009DBA, + 18464: 0x00009DAC, + 18465: 0x00009DC8, + 18466: 0x00009DB1, + 18467: 0x00009DAD, + 18468: 0x00009DCC, + 18469: 0x00009DB3, + 18470: 0x00009DCD, + 18471: 0x00009DB2, + 18472: 0x00009E7A, + 18473: 0x00009E9C, + 18474: 0x00009EEB, + 18475: 0x00009EEE, + 18476: 0x00009EED, + 18477: 0x00009F1B, + 18478: 0x00009F18, + 18479: 0x00009F1A, + 18480: 0x00009F31, + 18481: 0x00009F4E, + 18482: 0x00009F65, + 18483: 0x00009F64, + 18484: 0x00009F92, + 18485: 0x00004EB9, + 18486: 0x000056C6, + 18487: 0x000056C5, + 18488: 0x000056CB, + 18489: 0x00005971, + 18490: 0x00005B4B, + 18491: 0x00005B4C, + 18492: 0x00005DD5, + 18493: 0x00005DD1, + 18494: 0x00005EF2, + 18495: 0x00006521, + 18496: 0x00006520, + 18497: 0x00006526, + 18498: 0x00006522, + 18499: 0x00006B0B, + 18500: 0x00006B08, + 18501: 0x00006B09, + 18502: 0x00006C0D, + 18503: 0x00007055, + 18504: 0x00007056, + 18505: 0x00007057, + 18506: 0x00007052, + 18507: 0x0000721E, + 18508: 0x0000721F, + 18509: 0x000072A9, + 18510: 0x0000737F, + 18511: 0x000074D8, + 18512: 0x000074D5, + 18513: 0x000074D9, + 18514: 0x000074D7, + 18515: 0x0000766D, + 18516: 0x000076AD, + 18517: 0x00007935, + 18518: 0x000079B4, + 18519: 0x00007A70, + 18520: 0x00007A71, + 18521: 0x00007C57, + 18522: 0x00007C5C, + 18523: 0x00007C59, + 18524: 0x00007C5B, + 18525: 0x00007C5A, + 18526: 0x00007CF4, + 18527: 0x00007CF1, + 18528: 0x00007E91, + 18529: 0x00007F4F, + 18530: 0x00007F87, + 18531: 0x000081DE, + 18532: 0x0000826B, + 18533: 0x00008634, + 18534: 0x00008635, + 18535: 0x00008633, + 18536: 0x0000862C, + 18537: 0x00008632, + 18538: 0x00008636, + 18539: 0x0000882C, + 18540: 0x00008828, + 18541: 0x00008826, + 18542: 0x0000882A, + 18543: 0x00008825, + 18544: 0x00008971, + 18545: 0x000089BF, + 18546: 0x000089BE, + 18547: 0x000089FB, + 18548: 0x00008B7E, + 18549: 0x00008B84, + 18550: 0x00008B82, + 18551: 0x00008B86, + 18552: 0x00008B85, + 18553: 0x00008B7F, + 18554: 0x00008D15, + 18555: 0x00008E95, + 18556: 0x00008E94, + 18557: 0x00008E9A, + 18558: 0x00008E92, + 18559: 0x00008E90, + 18560: 0x00008E96, + 18561: 0x00008E97, + 18562: 0x00008F60, + 18563: 0x00008F62, + 18564: 0x00009147, + 18565: 0x0000944C, + 18566: 0x00009450, + 18567: 0x0000944A, + 18568: 0x0000944B, + 18569: 0x0000944F, + 18570: 0x00009447, + 18571: 0x00009445, + 18572: 0x00009448, + 18573: 0x00009449, + 18574: 0x00009446, + 18575: 0x0000973F, + 18576: 0x000097E3, + 18577: 0x0000986A, + 18578: 0x00009869, + 18579: 0x000098CB, + 18580: 0x00009954, + 18581: 0x0000995B, + 18582: 0x00009A4E, + 18583: 0x00009A53, + 18584: 0x00009A54, + 18585: 0x00009A4C, + 18586: 0x00009A4F, + 18587: 0x00009A48, + 18588: 0x00009A4A, + 18589: 0x00009A49, + 18590: 0x00009A52, + 18591: 0x00009A50, + 18592: 0x00009AD0, + 18593: 0x00009B19, + 18594: 0x00009B2B, + 18595: 0x00009B3B, + 18596: 0x00009B56, + 18597: 0x00009B55, + 18598: 0x00009C46, + 18599: 0x00009C48, + 18600: 0x00009C3F, + 18601: 0x00009C44, + 18602: 0x00009C39, + 18603: 0x00009C33, + 18604: 0x00009C41, + 18605: 0x00009C3C, + 18606: 0x00009C37, + 18607: 0x00009C34, + 18608: 0x00009C32, + 18609: 0x00009C3D, + 18610: 0x00009C36, + 18611: 0x00009DDB, + 18612: 0x00009DD2, + 18613: 0x00009DDE, + 18614: 0x00009DDA, + 18615: 0x00009DCB, + 18616: 0x00009DD0, + 18617: 0x00009DDC, + 18618: 0x00009DD1, + 18619: 0x00009DDF, + 18620: 0x00009DE9, + 18621: 0x00009DD9, + 18622: 0x00009DD8, + 18623: 0x00009DD6, + 18624: 0x00009DF5, + 18625: 0x00009DD5, + 18626: 0x00009DDD, + 18627: 0x00009EB6, + 18628: 0x00009EF0, + 18629: 0x00009F35, + 18630: 0x00009F33, + 18631: 0x00009F32, + 18632: 0x00009F42, + 18633: 0x00009F6B, + 18634: 0x00009F95, + 18635: 0x00009FA2, + 18636: 0x0000513D, + 18637: 0x00005299, + 18638: 0x000058E8, + 18639: 0x000058E7, + 18640: 0x00005972, + 18641: 0x00005B4D, + 18642: 0x00005DD8, + 18643: 0x0000882F, + 18644: 0x00005F4F, + 18645: 0x00006201, + 18646: 0x00006203, + 18647: 0x00006204, + 18648: 0x00006529, + 18649: 0x00006525, + 18650: 0x00006596, + 18651: 0x000066EB, + 18652: 0x00006B11, + 18653: 0x00006B12, + 18654: 0x00006B0F, + 18655: 0x00006BCA, + 18656: 0x0000705B, + 18657: 0x0000705A, + 18658: 0x00007222, + 18659: 0x00007382, + 18660: 0x00007381, + 18661: 0x00007383, + 18662: 0x00007670, + 18663: 0x000077D4, + 18664: 0x00007C67, + 18665: 0x00007C66, + 18666: 0x00007E95, + 18667: 0x0000826C, + 18668: 0x0000863A, + 18669: 0x00008640, + 18670: 0x00008639, + 18671: 0x0000863C, + 18672: 0x00008631, + 18673: 0x0000863B, + 18674: 0x0000863E, + 18675: 0x00008830, + 18676: 0x00008832, + 18677: 0x0000882E, + 18678: 0x00008833, + 18679: 0x00008976, + 18680: 0x00008974, + 18681: 0x00008973, + 18682: 0x000089FE, + 18683: 0x00008B8C, + 18684: 0x00008B8E, + 18685: 0x00008B8B, + 18686: 0x00008B88, + 18687: 0x00008C45, + 18688: 0x00008D19, + 18689: 0x00008E98, + 18690: 0x00008F64, + 18691: 0x00008F63, + 18692: 0x000091BC, + 18693: 0x00009462, + 18694: 0x00009455, + 18695: 0x0000945D, + 18696: 0x00009457, + 18697: 0x0000945E, + 18698: 0x000097C4, + 18699: 0x000097C5, + 18700: 0x00009800, + 18701: 0x00009A56, + 18702: 0x00009A59, + 18703: 0x00009B1E, + 18704: 0x00009B1F, + 18705: 0x00009B20, + 18706: 0x00009C52, + 18707: 0x00009C58, + 18708: 0x00009C50, + 18709: 0x00009C4A, + 18710: 0x00009C4D, + 18711: 0x00009C4B, + 18712: 0x00009C55, + 18713: 0x00009C59, + 18714: 0x00009C4C, + 18715: 0x00009C4E, + 18716: 0x00009DFB, + 18717: 0x00009DF7, + 18718: 0x00009DEF, + 18719: 0x00009DE3, + 18720: 0x00009DEB, + 18721: 0x00009DF8, + 18722: 0x00009DE4, + 18723: 0x00009DF6, + 18724: 0x00009DE1, + 18725: 0x00009DEE, + 18726: 0x00009DE6, + 18727: 0x00009DF2, + 18728: 0x00009DF0, + 18729: 0x00009DE2, + 18730: 0x00009DEC, + 18731: 0x00009DF4, + 18732: 0x00009DF3, + 18733: 0x00009DE8, + 18734: 0x00009DED, + 18735: 0x00009EC2, + 18736: 0x00009ED0, + 18737: 0x00009EF2, + 18738: 0x00009EF3, + 18739: 0x00009F06, + 18740: 0x00009F1C, + 18741: 0x00009F38, + 18742: 0x00009F37, + 18743: 0x00009F36, + 18744: 0x00009F43, + 18745: 0x00009F4F, + 18746: 0x00009F71, + 18747: 0x00009F70, + 18748: 0x00009F6E, + 18749: 0x00009F6F, + 18750: 0x000056D3, + 18751: 0x000056CD, + 18752: 0x00005B4E, + 18753: 0x00005C6D, + 18754: 0x0000652D, + 18755: 0x000066ED, + 18756: 0x000066EE, + 18757: 0x00006B13, + 18758: 0x0000705F, + 18759: 0x00007061, + 18760: 0x0000705D, + 18761: 0x00007060, + 18762: 0x00007223, + 18763: 0x000074DB, + 18764: 0x000074E5, + 18765: 0x000077D5, + 18766: 0x00007938, + 18767: 0x000079B7, + 18768: 0x000079B6, + 18769: 0x00007C6A, + 18770: 0x00007E97, + 18771: 0x00007F89, + 18772: 0x0000826D, + 18773: 0x00008643, + 18774: 0x00008838, + 18775: 0x00008837, + 18776: 0x00008835, + 18777: 0x0000884B, + 18778: 0x00008B94, + 18779: 0x00008B95, + 18780: 0x00008E9E, + 18781: 0x00008E9F, + 18782: 0x00008EA0, + 18783: 0x00008E9D, + 18784: 0x000091BE, + 18785: 0x000091BD, + 18786: 0x000091C2, + 18787: 0x0000946B, + 18788: 0x00009468, + 18789: 0x00009469, + 18790: 0x000096E5, + 18791: 0x00009746, + 18792: 0x00009743, + 18793: 0x00009747, + 18794: 0x000097C7, + 18795: 0x000097E5, + 18796: 0x00009A5E, + 18797: 0x00009AD5, + 18798: 0x00009B59, + 18799: 0x00009C63, + 18800: 0x00009C67, + 18801: 0x00009C66, + 18802: 0x00009C62, + 18803: 0x00009C5E, + 18804: 0x00009C60, + 18805: 0x00009E02, + 18806: 0x00009DFE, + 18807: 0x00009E07, + 18808: 0x00009E03, + 18809: 0x00009E06, + 18810: 0x00009E05, + 18811: 0x00009E00, + 18812: 0x00009E01, + 18813: 0x00009E09, + 18814: 0x00009DFF, + 18815: 0x00009DFD, + 18816: 0x00009E04, + 18817: 0x00009EA0, + 18818: 0x00009F1E, + 18819: 0x00009F46, + 18820: 0x00009F74, + 18821: 0x00009F75, + 18822: 0x00009F76, + 18823: 0x000056D4, + 18824: 0x0000652E, + 18825: 0x000065B8, + 18826: 0x00006B18, + 18827: 0x00006B19, + 18828: 0x00006B17, + 18829: 0x00006B1A, + 18830: 0x00007062, + 18831: 0x00007226, + 18832: 0x000072AA, + 18833: 0x000077D8, + 18834: 0x000077D9, + 18835: 0x00007939, + 18836: 0x00007C69, + 18837: 0x00007C6B, + 18838: 0x00007CF6, + 18839: 0x00007E9A, + 18840: 0x00007E98, + 18841: 0x00007E9B, + 18842: 0x00007E99, + 18843: 0x000081E0, + 18844: 0x000081E1, + 18845: 0x00008646, + 18846: 0x00008647, + 18847: 0x00008648, + 18848: 0x00008979, + 18849: 0x0000897A, + 18850: 0x0000897C, + 18851: 0x0000897B, + 18852: 0x000089FF, + 18853: 0x00008B98, + 18854: 0x00008B99, + 18855: 0x00008EA5, + 18856: 0x00008EA4, + 18857: 0x00008EA3, + 18858: 0x0000946E, + 18859: 0x0000946D, + 18860: 0x0000946F, + 18861: 0x00009471, + 18862: 0x00009473, + 18863: 0x00009749, + 18864: 0x00009872, + 18865: 0x0000995F, + 18866: 0x00009C68, + 18867: 0x00009C6E, + 18868: 0x00009C6D, + 18869: 0x00009E0B, + 18870: 0x00009E0D, + 18871: 0x00009E10, + 18872: 0x00009E0F, + 18873: 0x00009E12, + 18874: 0x00009E11, + 18875: 0x00009EA1, + 18876: 0x00009EF5, + 18877: 0x00009F09, + 18878: 0x00009F47, + 18879: 0x00009F78, + 18880: 0x00009F7B, + 18881: 0x00009F7A, + 18882: 0x00009F79, + 18883: 0x0000571E, + 18884: 0x00007066, + 18885: 0x00007C6F, + 18886: 0x0000883C, + 18887: 0x00008DB2, + 18888: 0x00008EA6, + 18889: 0x000091C3, + 18890: 0x00009474, + 18891: 0x00009478, + 18892: 0x00009476, + 18893: 0x00009475, + 18894: 0x00009A60, + 18895: 0x00009C74, + 18896: 0x00009C73, + 18897: 0x00009C71, + 18898: 0x00009C75, + 18899: 0x00009E14, + 18900: 0x00009E13, + 18901: 0x00009EF6, + 18902: 0x00009F0A, + 18903: 0x00009FA4, + 18904: 0x00007068, + 18905: 0x00007065, + 18906: 0x00007CF7, + 18907: 0x0000866A, + 18908: 0x0000883E, + 18909: 0x0000883D, + 18910: 0x0000883F, + 18911: 0x00008B9E, + 18912: 0x00008C9C, + 18913: 0x00008EA9, + 18914: 0x00008EC9, + 18915: 0x0000974B, + 18916: 0x00009873, + 18917: 0x00009874, + 18918: 0x000098CC, + 18919: 0x00009961, + 18920: 0x000099AB, + 18921: 0x00009A64, + 18922: 0x00009A66, + 18923: 0x00009A67, + 18924: 0x00009B24, + 18925: 0x00009E15, + 18926: 0x00009E17, + 18927: 0x00009F48, + 18928: 0x00006207, + 18929: 0x00006B1E, + 18930: 0x00007227, + 18931: 0x0000864C, + 18932: 0x00008EA8, + 18933: 0x00009482, + 18934: 0x00009480, + 18935: 0x00009481, + 18936: 0x00009A69, + 18937: 0x00009A68, + 18938: 0x00009B2E, + 18939: 0x00009E19, + 18940: 0x00007229, + 18941: 0x0000864B, + 18942: 0x00008B9F, + 18943: 0x00009483, + 18944: 0x00009C79, + 18945: 0x00009EB7, + 18946: 0x00007675, + 18947: 0x00009A6B, + 18948: 0x00009C7A, + 18949: 0x00009E1D, + 18950: 0x00007069, + 18951: 0x0000706A, + 18952: 0x00009EA4, + 18953: 0x00009F7E, + 18954: 0x00009F49, + 18955: 0x00009F98, + 18956: 0x00007881, + 18957: 0x000092B9, + 18958: 0x000088CF, + 18959: 0x000058BB, + 18960: 0x00006052, + 18961: 0x00007CA7, + 18962: 0x00005AFA, + 18963: 0x00002554, + 18964: 0x00002566, + 18965: 0x00002557, + 18966: 0x00002560, + 18967: 0x0000256C, + 18968: 0x00002563, + 18969: 0x0000255A, + 18970: 0x00002569, + 18971: 0x0000255D, + 18972: 0x00002552, + 18973: 0x00002564, + 18974: 0x00002555, + 18975: 0x0000255E, + 18976: 0x0000256A, + 18977: 0x00002561, + 18978: 0x00002558, + 18979: 0x00002567, + 18980: 0x0000255B, + 18981: 0x00002553, + 18982: 0x00002565, + 18983: 0x00002556, + 18984: 0x0000255F, + 18985: 0x0000256B, + 18986: 0x00002562, + 18987: 0x00002559, + 18988: 0x00002568, + 18989: 0x0000255C, + 18990: 0x00002551, + 18991: 0x00002550, + 18992: 0x0000256D, + 18993: 0x0000256E, + 18994: 0x00002570, + 18995: 0x0000256F, + 18996: 0x0000FFED, + 18997: 0x00020547, + 18998: 0x000092DB, + 18999: 0x000205DF, + 19000: 0x00023FC5, + 19001: 0x0000854C, + 19002: 0x000042B5, + 19003: 0x000073EF, + 19004: 0x000051B5, + 19005: 0x00003649, + 19006: 0x00024942, + 19007: 0x000289E4, + 19008: 0x00009344, + 19009: 0x000219DB, + 19010: 0x000082EE, + 19011: 0x00023CC8, + 19012: 0x0000783C, + 19013: 0x00006744, + 19014: 0x000062DF, + 19015: 0x00024933, + 19016: 0x000289AA, + 19017: 0x000202A0, + 19018: 0x00026BB3, + 19019: 0x00021305, + 19020: 0x00004FAB, + 19021: 0x000224ED, + 19022: 0x00005008, + 19023: 0x00026D29, + 19024: 0x00027A84, + 19025: 0x00023600, + 19026: 0x00024AB1, + 19027: 0x00022513, + 19028: 0x00005029, + 19029: 0x0002037E, + 19030: 0x00005FA4, + 19031: 0x00020380, + 19032: 0x00020347, + 19033: 0x00006EDB, + 19034: 0x0002041F, + 19035: 0x0000507D, + 19036: 0x00005101, + 19037: 0x0000347A, + 19038: 0x0000510E, + 19039: 0x0000986C, + 19040: 0x00003743, + 19041: 0x00008416, + 19042: 0x000249A4, + 19043: 0x00020487, + 19044: 0x00005160, + 19045: 0x000233B4, + 19046: 0x0000516A, + 19047: 0x00020BFF, + 19048: 0x000220FC, + 19049: 0x000202E5, + 19050: 0x00022530, + 19051: 0x0002058E, + 19052: 0x00023233, + 19053: 0x00021983, + 19054: 0x00005B82, + 19055: 0x0000877D, + 19056: 0x000205B3, + 19057: 0x00023C99, + 19058: 0x000051B2, + 19059: 0x000051B8, + 19060: 0x00009D34, + 19061: 0x000051C9, + 19062: 0x000051CF, + 19063: 0x000051D1, + 19064: 0x00003CDC, + 19065: 0x000051D3, + 19066: 0x00024AA6, + 19067: 0x000051B3, + 19068: 0x000051E2, + 19069: 0x00005342, + 19070: 0x000051ED, + 19071: 0x000083CD, + 19072: 0x0000693E, + 19073: 0x0002372D, + 19074: 0x00005F7B, + 19075: 0x0000520B, + 19076: 0x00005226, + 19077: 0x0000523C, + 19078: 0x000052B5, + 19079: 0x00005257, + 19080: 0x00005294, + 19081: 0x000052B9, + 19082: 0x000052C5, + 19083: 0x00007C15, + 19084: 0x00008542, + 19085: 0x000052E0, + 19086: 0x0000860D, + 19087: 0x00026B13, + 19088: 0x00005305, + 19089: 0x00028ADE, + 19090: 0x00005549, + 19091: 0x00006ED9, + 19092: 0x00023F80, + 19093: 0x00020954, + 19094: 0x00023FEC, + 19095: 0x00005333, + 19096: 0x00005344, + 19097: 0x00020BE2, + 19098: 0x00006CCB, + 19099: 0x00021726, + 19100: 0x0000681B, + 19101: 0x000073D5, + 19102: 0x0000604A, + 19103: 0x00003EAA, + 19104: 0x000038CC, + 19105: 0x000216E8, + 19106: 0x000071DD, + 19107: 0x000044A2, + 19108: 0x0000536D, + 19109: 0x00005374, + 19110: 0x000286AB, + 19111: 0x0000537E, + 19112: 0x0000537F, + 19113: 0x00021596, + 19114: 0x00021613, + 19115: 0x000077E6, + 19116: 0x00005393, + 19117: 0x00028A9B, + 19118: 0x000053A0, + 19119: 0x000053AB, + 19120: 0x000053AE, + 19121: 0x000073A7, + 19122: 0x00025772, + 19123: 0x00003F59, + 19124: 0x0000739C, + 19125: 0x000053C1, + 19126: 0x000053C5, + 19127: 0x00006C49, + 19128: 0x00004E49, + 19129: 0x000057FE, + 19130: 0x000053D9, + 19131: 0x00003AAB, + 19132: 0x00020B8F, + 19133: 0x000053E0, + 19134: 0x00023FEB, + 19135: 0x00022DA3, + 19136: 0x000053F6, + 19137: 0x00020C77, + 19138: 0x00005413, + 19139: 0x00007079, + 19140: 0x0000552B, + 19141: 0x00006657, + 19142: 0x00006D5B, + 19143: 0x0000546D, + 19144: 0x00026B53, + 19145: 0x00020D74, + 19146: 0x0000555D, + 19147: 0x0000548F, + 19148: 0x000054A4, + 19149: 0x000047A6, + 19150: 0x0002170D, + 19151: 0x00020EDD, + 19152: 0x00003DB4, + 19153: 0x00020D4D, + 19154: 0x000289BC, + 19155: 0x00022698, + 19156: 0x00005547, + 19157: 0x00004CED, + 19158: 0x0000542F, + 19159: 0x00007417, + 19160: 0x00005586, + 19161: 0x000055A9, + 19162: 0x00005605, + 19163: 0x000218D7, + 19164: 0x0002403A, + 19165: 0x00004552, + 19166: 0x00024435, + 19167: 0x000066B3, + 19168: 0x000210B4, + 19169: 0x00005637, + 19170: 0x000066CD, + 19171: 0x0002328A, + 19172: 0x000066A4, + 19173: 0x000066AD, + 19174: 0x0000564D, + 19175: 0x0000564F, + 19176: 0x000078F1, + 19177: 0x000056F1, + 19178: 0x00009787, + 19179: 0x000053FE, + 19180: 0x00005700, + 19181: 0x000056EF, + 19182: 0x000056ED, + 19183: 0x00028B66, + 19184: 0x00003623, + 19185: 0x0002124F, + 19186: 0x00005746, + 19187: 0x000241A5, + 19188: 0x00006C6E, + 19189: 0x0000708B, + 19190: 0x00005742, + 19191: 0x000036B1, + 19192: 0x00026C7E, + 19193: 0x000057E6, + 19194: 0x00021416, + 19195: 0x00005803, + 19196: 0x00021454, + 19197: 0x00024363, + 19198: 0x00005826, + 19199: 0x00024BF5, + 19200: 0x0000585C, + 19201: 0x000058AA, + 19202: 0x00003561, + 19203: 0x000058E0, + 19204: 0x000058DC, + 19205: 0x0002123C, + 19206: 0x000058FB, + 19207: 0x00005BFF, + 19208: 0x00005743, + 19209: 0x0002A150, + 19210: 0x00024278, + 19211: 0x000093D3, + 19212: 0x000035A1, + 19213: 0x0000591F, + 19214: 0x000068A6, + 19215: 0x000036C3, + 19216: 0x00006E59, + 19217: 0x0002163E, + 19218: 0x00005A24, + 19219: 0x00005553, + 19220: 0x00021692, + 19221: 0x00008505, + 19222: 0x000059C9, + 19223: 0x00020D4E, + 19224: 0x00026C81, + 19225: 0x00026D2A, + 19226: 0x000217DC, + 19227: 0x000059D9, + 19228: 0x000217FB, + 19229: 0x000217B2, + 19230: 0x00026DA6, + 19231: 0x00006D71, + 19232: 0x00021828, + 19233: 0x000216D5, + 19234: 0x000059F9, + 19235: 0x00026E45, + 19236: 0x00005AAB, + 19237: 0x00005A63, + 19238: 0x000036E6, + 19239: 0x000249A9, + 19240: 0x00005A77, + 19241: 0x00003708, + 19242: 0x00005A96, + 19243: 0x00007465, + 19244: 0x00005AD3, + 19245: 0x00026FA1, + 19246: 0x00022554, + 19247: 0x00003D85, + 19248: 0x00021911, + 19249: 0x00003732, + 19250: 0x000216B8, + 19251: 0x00005E83, + 19252: 0x000052D0, + 19253: 0x00005B76, + 19254: 0x00006588, + 19255: 0x00005B7C, + 19256: 0x00027A0E, + 19257: 0x00004004, + 19258: 0x0000485D, + 19259: 0x00020204, + 19260: 0x00005BD5, + 19261: 0x00006160, + 19262: 0x00021A34, + 19263: 0x000259CC, + 19264: 0x000205A5, + 19265: 0x00005BF3, + 19266: 0x00005B9D, + 19267: 0x00004D10, + 19268: 0x00005C05, + 19269: 0x00021B44, + 19270: 0x00005C13, + 19271: 0x000073CE, + 19272: 0x00005C14, + 19273: 0x00021CA5, + 19274: 0x00026B28, + 19275: 0x00005C49, + 19276: 0x000048DD, + 19277: 0x00005C85, + 19278: 0x00005CE9, + 19279: 0x00005CEF, + 19280: 0x00005D8B, + 19281: 0x00021DF9, + 19282: 0x00021E37, + 19283: 0x00005D10, + 19284: 0x00005D18, + 19285: 0x00005D46, + 19286: 0x00021EA4, + 19287: 0x00005CBA, + 19288: 0x00005DD7, + 19289: 0x000082FC, + 19290: 0x0000382D, + 19291: 0x00024901, + 19292: 0x00022049, + 19293: 0x00022173, + 19294: 0x00008287, + 19295: 0x00003836, + 19296: 0x00003BC2, + 19297: 0x00005E2E, + 19298: 0x00006A8A, + 19299: 0x00005E75, + 19300: 0x00005E7A, + 19301: 0x000244BC, + 19302: 0x00020CD3, + 19303: 0x000053A6, + 19304: 0x00004EB7, + 19305: 0x00005ED0, + 19306: 0x000053A8, + 19307: 0x00021771, + 19308: 0x00005E09, + 19309: 0x00005EF4, + 19310: 0x00028482, + 19311: 0x00005EF9, + 19312: 0x00005EFB, + 19313: 0x000038A0, + 19314: 0x00005EFC, + 19315: 0x0000683E, + 19316: 0x0000941B, + 19317: 0x00005F0D, + 19318: 0x000201C1, + 19319: 0x0002F894, + 19320: 0x00003ADE, + 19321: 0x000048AE, + 19322: 0x0002133A, + 19323: 0x00005F3A, + 19324: 0x00026888, + 19325: 0x000223D0, + 19326: 0x00005F58, + 19327: 0x00022471, + 19328: 0x00005F63, + 19329: 0x000097BD, + 19330: 0x00026E6E, + 19331: 0x00005F72, + 19332: 0x00009340, + 19333: 0x00028A36, + 19334: 0x00005FA7, + 19335: 0x00005DB6, + 19336: 0x00003D5F, + 19337: 0x00025250, + 19338: 0x00021F6A, + 19339: 0x000270F8, + 19340: 0x00022668, + 19341: 0x000091D6, + 19342: 0x0002029E, + 19343: 0x00028A29, + 19344: 0x00006031, + 19345: 0x00006685, + 19346: 0x00021877, + 19347: 0x00003963, + 19348: 0x00003DC7, + 19349: 0x00003639, + 19350: 0x00005790, + 19351: 0x000227B4, + 19352: 0x00007971, + 19353: 0x00003E40, + 19354: 0x0000609E, + 19355: 0x000060A4, + 19356: 0x000060B3, + 19357: 0x00024982, + 19358: 0x0002498F, + 19359: 0x00027A53, + 19360: 0x000074A4, + 19361: 0x000050E1, + 19362: 0x00005AA0, + 19363: 0x00006164, + 19364: 0x00008424, + 19365: 0x00006142, + 19366: 0x0002F8A6, + 19367: 0x00026ED2, + 19368: 0x00006181, + 19369: 0x000051F4, + 19370: 0x00020656, + 19371: 0x00006187, + 19372: 0x00005BAA, + 19373: 0x00023FB7, + 19374: 0x0002285F, + 19375: 0x000061D3, + 19376: 0x00028B9D, + 19377: 0x0002995D, + 19378: 0x000061D0, + 19379: 0x00003932, + 19380: 0x00022980, + 19381: 0x000228C1, + 19382: 0x00006023, + 19383: 0x0000615C, + 19384: 0x0000651E, + 19385: 0x0000638B, + 19386: 0x00020118, + 19387: 0x000062C5, + 19388: 0x00021770, + 19389: 0x000062D5, + 19390: 0x00022E0D, + 19391: 0x0000636C, + 19392: 0x000249DF, + 19393: 0x00003A17, + 19394: 0x00006438, + 19395: 0x000063F8, + 19396: 0x0002138E, + 19397: 0x000217FC, + 19398: 0x00006490, + 19399: 0x00006F8A, + 19400: 0x00022E36, + 19401: 0x00009814, + 19402: 0x0002408C, + 19403: 0x0002571D, + 19404: 0x000064E1, + 19405: 0x000064E5, + 19406: 0x0000947B, + 19407: 0x00003A66, + 19408: 0x0000643A, + 19409: 0x00003A57, + 19410: 0x0000654D, + 19411: 0x00006F16, + 19412: 0x00024A28, + 19413: 0x00024A23, + 19414: 0x00006585, + 19415: 0x0000656D, + 19416: 0x0000655F, + 19417: 0x0002307E, + 19418: 0x000065B5, + 19419: 0x00024940, + 19420: 0x00004B37, + 19421: 0x000065D1, + 19422: 0x000040D8, + 19423: 0x00021829, + 19424: 0x000065E0, + 19425: 0x000065E3, + 19426: 0x00005FDF, + 19427: 0x00023400, + 19428: 0x00006618, + 19429: 0x000231F7, + 19430: 0x000231F8, + 19431: 0x00006644, + 19432: 0x000231A4, + 19433: 0x000231A5, + 19434: 0x0000664B, + 19435: 0x00020E75, + 19436: 0x00006667, + 19437: 0x000251E6, + 19438: 0x00006673, + 19439: 0x00006674, + 19440: 0x00021E3D, + 19441: 0x00023231, + 19442: 0x000285F4, + 19443: 0x000231C8, + 19444: 0x00025313, + 19445: 0x000077C5, + 19446: 0x000228F7, + 19447: 0x000099A4, + 19448: 0x00006702, + 19449: 0x0002439C, + 19450: 0x00024A21, + 19451: 0x00003B2B, + 19452: 0x000069FA, + 19453: 0x000237C2, + 19454: 0x0000675E, + 19455: 0x00006767, + 19456: 0x00006762, + 19457: 0x000241CD, + 19458: 0x000290ED, + 19459: 0x000067D7, + 19460: 0x000044E9, + 19461: 0x00006822, + 19462: 0x00006E50, + 19463: 0x0000923C, + 19464: 0x00006801, + 19465: 0x000233E6, + 19466: 0x00026DA0, + 19467: 0x0000685D, + 19468: 0x0002346F, + 19469: 0x000069E1, + 19470: 0x00006A0B, + 19471: 0x00028ADF, + 19472: 0x00006973, + 19473: 0x000068C3, + 19474: 0x000235CD, + 19475: 0x00006901, + 19476: 0x00006900, + 19477: 0x00003D32, + 19478: 0x00003A01, + 19479: 0x0002363C, + 19480: 0x00003B80, + 19481: 0x000067AC, + 19482: 0x00006961, + 19483: 0x00028A4A, + 19484: 0x000042FC, + 19485: 0x00006936, + 19486: 0x00006998, + 19487: 0x00003BA1, + 19488: 0x000203C9, + 19489: 0x00008363, + 19490: 0x00005090, + 19491: 0x000069F9, + 19492: 0x00023659, + 19493: 0x0002212A, + 19494: 0x00006A45, + 19495: 0x00023703, + 19496: 0x00006A9D, + 19497: 0x00003BF3, + 19498: 0x000067B1, + 19499: 0x00006AC8, + 19500: 0x0002919C, + 19501: 0x00003C0D, + 19502: 0x00006B1D, + 19503: 0x00020923, + 19504: 0x000060DE, + 19505: 0x00006B35, + 19506: 0x00006B74, + 19507: 0x000227CD, + 19508: 0x00006EB5, + 19509: 0x00023ADB, + 19510: 0x000203B5, + 19511: 0x00021958, + 19512: 0x00003740, + 19513: 0x00005421, + 19514: 0x00023B5A, + 19515: 0x00006BE1, + 19516: 0x00023EFC, + 19517: 0x00006BDC, + 19518: 0x00006C37, + 19519: 0x0002248B, + 19520: 0x000248F1, + 19521: 0x00026B51, + 19522: 0x00006C5A, + 19523: 0x00008226, + 19524: 0x00006C79, + 19525: 0x00023DBC, + 19526: 0x000044C5, + 19527: 0x00023DBD, + 19528: 0x000241A4, + 19529: 0x0002490C, + 19530: 0x00024900, + 19531: 0x00023CC9, + 19532: 0x000036E5, + 19533: 0x00003CEB, + 19534: 0x00020D32, + 19535: 0x00009B83, + 19536: 0x000231F9, + 19537: 0x00022491, + 19538: 0x00007F8F, + 19539: 0x00006837, + 19540: 0x00026D25, + 19541: 0x00026DA1, + 19542: 0x00026DEB, + 19543: 0x00006D96, + 19544: 0x00006D5C, + 19545: 0x00006E7C, + 19546: 0x00006F04, + 19547: 0x0002497F, + 19548: 0x00024085, + 19549: 0x00026E72, + 19550: 0x00008533, + 19551: 0x00026F74, + 19552: 0x000051C7, + 19553: 0x00006C9C, + 19554: 0x00006E1D, + 19555: 0x0000842E, + 19556: 0x00028B21, + 19557: 0x00006E2F, + 19558: 0x00023E2F, + 19559: 0x00007453, + 19560: 0x00023F82, + 19561: 0x000079CC, + 19562: 0x00006E4F, + 19563: 0x00005A91, + 19564: 0x0002304B, + 19565: 0x00006FF8, + 19566: 0x0000370D, + 19567: 0x00006F9D, + 19568: 0x00023E30, + 19569: 0x00006EFA, + 19570: 0x00021497, + 19571: 0x0002403D, + 19572: 0x00004555, + 19573: 0x000093F0, + 19574: 0x00006F44, + 19575: 0x00006F5C, + 19576: 0x00003D4E, + 19577: 0x00006F74, + 19578: 0x00029170, + 19579: 0x00003D3B, + 19580: 0x00006F9F, + 19581: 0x00024144, + 19582: 0x00006FD3, + 19583: 0x00024091, + 19584: 0x00024155, + 19585: 0x00024039, + 19586: 0x00023FF0, + 19587: 0x00023FB4, + 19588: 0x0002413F, + 19589: 0x000051DF, + 19590: 0x00024156, + 19591: 0x00024157, + 19592: 0x00024140, + 19593: 0x000261DD, + 19594: 0x0000704B, + 19595: 0x0000707E, + 19596: 0x000070A7, + 19597: 0x00007081, + 19598: 0x000070CC, + 19599: 0x000070D5, + 19600: 0x000070D6, + 19601: 0x000070DF, + 19602: 0x00004104, + 19603: 0x00003DE8, + 19604: 0x000071B4, + 19605: 0x00007196, + 19606: 0x00024277, + 19607: 0x0000712B, + 19608: 0x00007145, + 19609: 0x00005A88, + 19610: 0x0000714A, + 19611: 0x0000716E, + 19612: 0x00005C9C, + 19613: 0x00024365, + 19614: 0x0000714F, + 19615: 0x00009362, + 19616: 0x000242C1, + 19617: 0x0000712C, + 19618: 0x0002445A, + 19619: 0x00024A27, + 19620: 0x00024A22, + 19621: 0x000071BA, + 19622: 0x00028BE8, + 19623: 0x000070BD, + 19624: 0x0000720E, + 19625: 0x00009442, + 19626: 0x00007215, + 19627: 0x00005911, + 19628: 0x00009443, + 19629: 0x00007224, + 19630: 0x00009341, + 19631: 0x00025605, + 19632: 0x0000722E, + 19633: 0x00007240, + 19634: 0x00024974, + 19635: 0x000068BD, + 19636: 0x00007255, + 19637: 0x00007257, + 19638: 0x00003E55, + 19639: 0x00023044, + 19640: 0x0000680D, + 19641: 0x00006F3D, + 19642: 0x00007282, + 19643: 0x0000732A, + 19644: 0x0000732B, + 19645: 0x00024823, + 19646: 0x0002882B, + 19647: 0x000048ED, + 19648: 0x00028804, + 19649: 0x00007328, + 19650: 0x0000732E, + 19651: 0x000073CF, + 19652: 0x000073AA, + 19653: 0x00020C3A, + 19654: 0x00026A2E, + 19655: 0x000073C9, + 19656: 0x00007449, + 19657: 0x000241E2, + 19658: 0x000216E7, + 19659: 0x00024A24, + 19660: 0x00006623, + 19661: 0x000036C5, + 19662: 0x000249B7, + 19663: 0x0002498D, + 19664: 0x000249FB, + 19665: 0x000073F7, + 19666: 0x00007415, + 19667: 0x00006903, + 19668: 0x00024A26, + 19669: 0x00007439, + 19670: 0x000205C3, + 19671: 0x00003ED7, + 19672: 0x0000745C, + 19673: 0x000228AD, + 19674: 0x00007460, + 19675: 0x00028EB2, + 19676: 0x00007447, + 19677: 0x000073E4, + 19678: 0x00007476, + 19679: 0x000083B9, + 19680: 0x0000746C, + 19681: 0x00003730, + 19682: 0x00007474, + 19683: 0x000093F1, + 19684: 0x00006A2C, + 19685: 0x00007482, + 19686: 0x00004953, + 19687: 0x00024A8C, + 19688: 0x0002415F, + 19689: 0x00024A79, + 19690: 0x00028B8F, + 19691: 0x00005B46, + 19692: 0x00028C03, + 19693: 0x0002189E, + 19694: 0x000074C8, + 19695: 0x00021988, + 19696: 0x0000750E, + 19697: 0x000074E9, + 19698: 0x0000751E, + 19699: 0x00028ED9, + 19700: 0x00021A4B, + 19701: 0x00005BD7, + 19702: 0x00028EAC, + 19703: 0x00009385, + 19704: 0x0000754D, + 19705: 0x0000754A, + 19706: 0x00007567, + 19707: 0x0000756E, + 19708: 0x00024F82, + 19709: 0x00003F04, + 19710: 0x00024D13, + 19711: 0x0000758E, + 19712: 0x0000745D, + 19713: 0x0000759E, + 19714: 0x000075B4, + 19715: 0x00007602, + 19716: 0x0000762C, + 19717: 0x00007651, + 19718: 0x0000764F, + 19719: 0x0000766F, + 19720: 0x00007676, + 19721: 0x000263F5, + 19722: 0x00007690, + 19723: 0x000081EF, + 19724: 0x000037F8, + 19725: 0x00026911, + 19726: 0x0002690E, + 19727: 0x000076A1, + 19728: 0x000076A5, + 19729: 0x000076B7, + 19730: 0x000076CC, + 19731: 0x00026F9F, + 19732: 0x00008462, + 19733: 0x0002509D, + 19734: 0x0002517D, + 19735: 0x00021E1C, + 19736: 0x0000771E, + 19737: 0x00007726, + 19738: 0x00007740, + 19739: 0x000064AF, + 19740: 0x00025220, + 19741: 0x00007758, + 19742: 0x000232AC, + 19743: 0x000077AF, + 19744: 0x00028964, + 19745: 0x00028968, + 19746: 0x000216C1, + 19747: 0x000077F4, + 19748: 0x00007809, + 19749: 0x00021376, + 19750: 0x00024A12, + 19751: 0x000068CA, + 19752: 0x000078AF, + 19753: 0x000078C7, + 19754: 0x000078D3, + 19755: 0x000096A5, + 19756: 0x0000792E, + 19757: 0x000255E0, + 19758: 0x000078D7, + 19759: 0x00007934, + 19760: 0x000078B1, + 19761: 0x0002760C, + 19762: 0x00008FB8, + 19763: 0x00008884, + 19764: 0x00028B2B, + 19765: 0x00026083, + 19766: 0x0002261C, + 19767: 0x00007986, + 19768: 0x00008900, + 19769: 0x00006902, + 19770: 0x00007980, + 19771: 0x00025857, + 19772: 0x0000799D, + 19773: 0x00027B39, + 19774: 0x0000793C, + 19775: 0x000079A9, + 19776: 0x00006E2A, + 19777: 0x00027126, + 19778: 0x00003EA8, + 19779: 0x000079C6, + 19780: 0x0002910D, + 19781: 0x000079D4, +} + +const numEncodeTables = 8 + +// encodeX are the encoding tables from Unicode to Big5 code, +// sorted by decreasing length. +// encode0: 42633 entries for runes in [131105, 173738). +// encode1: 29004 entries for runes in [ 11904, 40908). +// encode2: 2176 entries for runes in [ 7870, 10046). +// encode3: 939 entries for runes in [ 167, 1106). +// encode4: 446 entries for runes in [ 65072, 65518). +// encode5: 432 entries for runes in [194597, 195029). +// encode6: 263 entries for runes in [ 63751, 64014). +// encode7: 1 entries for runes in [175615, 175616). + +const encode0Low, encode0High = 131105, 173738 + +var encode0 = [...]uint16{ + 131105 - 131105: 0x9C71, + 131134 - 131105: 0x9375, + 131142 - 131105: 0x9376, + 131150 - 131105: 0x9548, + 131176 - 131105: 0x8EC6, + 131206 - 131105: 0x8BC5, + 131207 - 131105: 0x8BFA, + 131210 - 131105: 0xC87C, + 131220 - 131105: 0x9AB4, + 131274 - 131105: 0x884E, + 131275 - 131105: 0x884B, + 131276 - 131105: 0xC87A, + 131277 - 131105: 0x8848, + 131281 - 131105: 0x8847, + 131310 - 131105: 0xA0F6, + 131340 - 131105: 0x8845, + 131342 - 131105: 0x8853, + 131352 - 131105: 0xFCAD, + 131492 - 131105: 0x8CF5, + 131497 - 131105: 0x8AAD, + 131499 - 131105: 0x9272, + 131521 - 131105: 0xFC47, + 131540 - 131105: 0x94DF, + 131570 - 131105: 0x9FD1, + 131588 - 131105: 0xFBCB, + 131596 - 131105: 0x927D, + 131604 - 131105: 0x98A4, + 131641 - 131105: 0x8CF9, + 131675 - 131105: 0x94E7, + 131700 - 131105: 0x90CB, + 131701 - 131105: 0x927B, + 131737 - 131105: 0x94D8, + 131742 - 131105: 0xFC5F, + 131744 - 131105: 0xFA54, + 131767 - 131105: 0x9AB5, + 131775 - 131105: 0x96DA, + 131776 - 131105: 0x9279, + 131813 - 131105: 0xFA74, + 131850 - 131105: 0x9275, + 131877 - 131105: 0x8DFB, + 131905 - 131105: 0x8A49, + 131909 - 131105: 0x92DF, + 131910 - 131105: 0x9B7C, + 131911 - 131105: 0xFA63, + 131966 - 131105: 0xFA60, + 131967 - 131105: 0x926D, + 131968 - 131105: 0xFA62, + 132000 - 131105: 0x9AB6, + 132007 - 131105: 0x976B, + 132021 - 131105: 0xFD6A, + 132041 - 131105: 0xFD54, + 132043 - 131105: 0x9273, + 132085 - 131105: 0x97D8, + 132092 - 131105: 0x9FBB, + 132115 - 131105: 0x9342, + 132116 - 131105: 0x9276, + 132127 - 131105: 0xFA65, + 132197 - 131105: 0x926C, + 132231 - 131105: 0xFA6E, + 132238 - 131105: 0x9EE0, + 132241 - 131105: 0x92C0, + 132242 - 131105: 0x92BF, + 132259 - 131105: 0x92BE, + 132311 - 131105: 0x9ABA, + 132348 - 131105: 0x8AB3, + 132350 - 131105: 0x9775, + 132423 - 131105: 0xFA40, + 132494 - 131105: 0xFA76, + 132517 - 131105: 0xFBD0, + 132531 - 131105: 0xFA7B, + 132547 - 131105: 0xFE6D, + 132554 - 131105: 0x9BB3, + 132560 - 131105: 0x89CC, + 132565 - 131105: 0x9ABE, + 132575 - 131105: 0xFA42, + 132576 - 131105: 0x92BC, + 132587 - 131105: 0x945C, + 132625 - 131105: 0x9BB5, + 132629 - 131105: 0x9ABF, + 132633 - 131105: 0x98A7, + 132634 - 131105: 0x97A4, + 132656 - 131105: 0x90FD, + 132694 - 131105: 0xFC7B, + 132726 - 131105: 0x9AC0, + 132878 - 131105: 0x92C3, + 132913 - 131105: 0x8AAA, + 132985 - 131105: 0x9BD0, + 133164 - 131105: 0x9550, + 133235 - 131105: 0x92C6, + 133333 - 131105: 0x98A6, + 133398 - 131105: 0x9546, + 133411 - 131105: 0xFD63, + 133460 - 131105: 0xFAC2, + 133497 - 131105: 0x9EC3, + 133607 - 131105: 0x89B2, + 133649 - 131105: 0x9C66, + 133712 - 131105: 0x9053, + 133743 - 131105: 0x8C62, + 133770 - 131105: 0x87A8, + 133812 - 131105: 0x97C1, + 133826 - 131105: 0x9AC4, + 133837 - 131105: 0x9AC5, + 133901 - 131105: 0x8EEF, + 134031 - 131105: 0xFAE9, + 134047 - 131105: 0x8D40, + 134056 - 131105: 0x9262, + 134057 - 131105: 0x8AF7, + 134079 - 131105: 0x9AC6, + 134086 - 131105: 0x92E1, + 134091 - 131105: 0x9AC9, + 134114 - 131105: 0xFAC6, + 134123 - 131105: 0x97A5, + 134139 - 131105: 0x9ACB, + 134143 - 131105: 0xFA72, + 134155 - 131105: 0x8A5E, + 134157 - 131105: 0x94E0, + 134176 - 131105: 0x92CC, + 134196 - 131105: 0x8AE5, + 134202 - 131105: 0xFE5C, + 134203 - 131105: 0x9ACC, + 134209 - 131105: 0x9DF9, + 134210 - 131105: 0x8A43, + 134211 - 131105: 0x8AA6, + 134227 - 131105: 0x9ACD, + 134245 - 131105: 0x9ACE, + 134263 - 131105: 0xFAEE, + 134264 - 131105: 0x9BCC, + 134268 - 131105: 0x9ACF, + 134285 - 131105: 0x9AD1, + 134294 - 131105: 0x9DFA, + 134300 - 131105: 0x9D7C, + 134325 - 131105: 0x9AD3, + 134328 - 131105: 0x97A6, + 134351 - 131105: 0x995F, + 134355 - 131105: 0xFBF6, + 134356 - 131105: 0x9FC5, + 134357 - 131105: 0x8A59, + 134358 - 131105: 0x8B6B, + 134365 - 131105: 0x9AD4, + 134381 - 131105: 0x9AD5, + 134399 - 131105: 0x97A2, + 134421 - 131105: 0x8A44, + 134440 - 131105: 0x9F4A, + 134449 - 131105: 0x90A1, + 134450 - 131105: 0xFDA4, + 134470 - 131105: 0x8A64, + 134471 - 131105: 0x8AF2, + 134472 - 131105: 0x8AF8, + 134473 - 131105: 0x9DD8, + 134476 - 131105: 0x94D6, + 134477 - 131105: 0xFAFE, + 134478 - 131105: 0xFBA7, + 134511 - 131105: 0x9AD6, + 134513 - 131105: 0x9F4D, + 134516 - 131105: 0xFAF6, + 134524 - 131105: 0x8A57, + 134526 - 131105: 0x8B43, + 134527 - 131105: 0x8B44, + 134550 - 131105: 0x8AB6, + 134556 - 131105: 0x8AC0, + 134567 - 131105: 0x9E54, + 134578 - 131105: 0x9AD7, + 134600 - 131105: 0x9AD8, + 134660 - 131105: 0x9ADC, + 134665 - 131105: 0x8ACA, + 134666 - 131105: 0x9EA8, + 134669 - 131105: 0x9263, + 134670 - 131105: 0x9ADD, + 134671 - 131105: 0x8B65, + 134672 - 131105: 0x8B6F, + 134673 - 131105: 0x8B7E, + 134678 - 131105: 0x8F43, + 134685 - 131105: 0x92D0, + 134732 - 131105: 0x8AF4, + 134765 - 131105: 0x9DBE, + 134771 - 131105: 0x9AE1, + 134773 - 131105: 0xFCDE, + 134774 - 131105: 0x9DFD, + 134775 - 131105: 0x8B66, + 134776 - 131105: 0x8B70, + 134777 - 131105: 0x8B75, + 134778 - 131105: 0x8AE4, + 134779 - 131105: 0x8BA4, + 134796 - 131105: 0x8AED, + 134806 - 131105: 0x8A5D, + 134808 - 131105: 0x8B48, + 134813 - 131105: 0x9DED, + 134818 - 131105: 0x9E40, + 134826 - 131105: 0x8AEF, + 134827 - 131105: 0x8AF6, + 134828 - 131105: 0x9E76, + 134838 - 131105: 0x9EE3, + 134871 - 131105: 0x9ADE, + 134872 - 131105: 0x8DFE, + 134877 - 131105: 0xFAFC, + 134904 - 131105: 0x9CB1, + 134905 - 131105: 0x9E77, + 134906 - 131105: 0x8B64, + 134907 - 131105: 0x8B67, + 134941 - 131105: 0x974B, + 134950 - 131105: 0x9653, + 134957 - 131105: 0x9AE0, + 134958 - 131105: 0x8B4A, + 134960 - 131105: 0x8AF1, + 134961 - 131105: 0x8AD7, + 134971 - 131105: 0xA0AB, + 134988 - 131105: 0x8AB5, + 135012 - 131105: 0x8A5F, + 135053 - 131105: 0x8AEE, + 135056 - 131105: 0x9ADF, + 135085 - 131105: 0x8AFE, + 135092 - 131105: 0x8A58, + 135093 - 131105: 0x8BA3, + 135094 - 131105: 0x8BA7, + 135100 - 131105: 0x9AE3, + 135135 - 131105: 0x9261, + 135146 - 131105: 0x9DD7, + 135147 - 131105: 0x9E7D, + 135148 - 131105: 0x9EA7, + 135149 - 131105: 0x9EAB, + 135188 - 131105: 0x9042, + 135197 - 131105: 0x8B79, + 135198 - 131105: 0x8B7A, + 135247 - 131105: 0x9AE6, + 135260 - 131105: 0x9AE5, + 135279 - 131105: 0x8A7E, + 135285 - 131105: 0x9E44, + 135286 - 131105: 0x9AE7, + 135287 - 131105: 0x8A7C, + 135288 - 131105: 0x8B71, + 135291 - 131105: 0x9AE9, + 135304 - 131105: 0x9AEA, + 135318 - 131105: 0x9AEB, + 135325 - 131105: 0x8ABD, + 135348 - 131105: 0xFB4E, + 135359 - 131105: 0x9AED, + 135360 - 131105: 0x8AF9, + 135361 - 131105: 0x9E63, + 135367 - 131105: 0x8B49, + 135368 - 131105: 0x8ACE, + 135369 - 131105: 0x8B6E, + 135375 - 131105: 0x8AE8, + 135379 - 131105: 0x9AEE, + 135396 - 131105: 0x92CE, + 135412 - 131105: 0x8A5A, + 135413 - 131105: 0x8B7B, + 135414 - 131105: 0x8B7C, + 135471 - 131105: 0x9AEF, + 135483 - 131105: 0x9AF0, + 135485 - 131105: 0x8AFA, + 135493 - 131105: 0x8941, + 135496 - 131105: 0x8B72, + 135503 - 131105: 0x8AF3, + 135552 - 131105: 0x8BA8, + 135559 - 131105: 0x9EAE, + 135641 - 131105: 0x9E72, + 135740 - 131105: 0xFB73, + 135759 - 131105: 0xFB5F, + 135804 - 131105: 0x90BA, + 135848 - 131105: 0x91FE, + 135849 - 131105: 0x9EF6, + 135856 - 131105: 0x97ED, + 135907 - 131105: 0x9AF3, + 135934 - 131105: 0xA0EE, + 135938 - 131105: 0x967C, + 135939 - 131105: 0x9345, + 135940 - 131105: 0x986E, + 135941 - 131105: 0xFA56, + 135990 - 131105: 0x9AF5, + 135994 - 131105: 0xFC4B, + 136053 - 131105: 0x9AF4, + 136054 - 131105: 0xFEDE, + 136078 - 131105: 0xFCB7, + 136088 - 131105: 0x97F1, + 136092 - 131105: 0x97C7, + 136133 - 131105: 0x9CCB, + 136134 - 131105: 0x9240, + 136173 - 131105: 0x9CE8, + 136190 - 131105: 0x91FD, + 136211 - 131105: 0x974E, + 136214 - 131105: 0xFB68, + 136228 - 131105: 0x976C, + 136255 - 131105: 0x8CC2, + 136274 - 131105: 0x97E8, + 136276 - 131105: 0xFB6A, + 136277 - 131105: 0x8B74, + 136330 - 131105: 0x8EE7, + 136343 - 131105: 0xFDC8, + 136374 - 131105: 0x9241, + 136424 - 131105: 0x96A1, + 136445 - 131105: 0x8EF3, + 136567 - 131105: 0x9AF7, + 136578 - 131105: 0x8FA6, + 136598 - 131105: 0xFAD6, + 136714 - 131105: 0x9CC7, + 136723 - 131105: 0xFAD7, + 136729 - 131105: 0x9AF8, + 136766 - 131105: 0xFBA1, + 136801 - 131105: 0x8EC5, + 136850 - 131105: 0xFBA4, + 136888 - 131105: 0xFBC2, + 136890 - 131105: 0x9AC1, + 136896 - 131105: 0x91FA, + 136897 - 131105: 0xFEDB, + 136898 - 131105: 0x97AB, + 136915 - 131105: 0x9147, + 136917 - 131105: 0xFBB1, + 136927 - 131105: 0x8FEA, + 136934 - 131105: 0x94D2, + 136935 - 131105: 0xFE61, + 136936 - 131105: 0xFACE, + 136954 - 131105: 0x92ED, + 136955 - 131105: 0x91F3, + 136956 - 131105: 0x93C6, + 136958 - 131105: 0x935A, + 136973 - 131105: 0xFAFB, + 136976 - 131105: 0x92EF, + 136998 - 131105: 0xFAC8, + 137018 - 131105: 0x9847, + 137019 - 131105: 0x9366, + 137020 - 131105: 0x9855, + 137047 - 131105: 0x96E6, + 137068 - 131105: 0x9F43, + 137069 - 131105: 0x9FAA, + 137070 - 131105: 0x94DA, + 137071 - 131105: 0x92EE, + 137072 - 131105: 0xFCAF, + 137073 - 131105: 0xFBFB, + 137075 - 131105: 0x8EF9, + 137076 - 131105: 0x91F6, + 137131 - 131105: 0x9364, + 137136 - 131105: 0x94F5, + 137137 - 131105: 0x9CB6, + 137138 - 131105: 0xFBAD, + 137139 - 131105: 0x984E, + 137140 - 131105: 0x8F44, + 137141 - 131105: 0x96FD, + 137155 - 131105: 0x9AF9, + 137159 - 131105: 0x9AFA, + 137177 - 131105: 0x9769, + 137178 - 131105: 0x95D4, + 137179 - 131105: 0x984B, + 137180 - 131105: 0xFBAA, + 137183 - 131105: 0x987C, + 137199 - 131105: 0x91EA, + 137205 - 131105: 0x9DAF, + 137206 - 131105: 0x9DC5, + 137208 - 131105: 0x91F1, + 137209 - 131105: 0x8EB1, + 137210 - 131105: 0x97A9, + 137211 - 131105: 0xFBAC, + 137212 - 131105: 0xFCB8, + 137248 - 131105: 0x9CB9, + 137256 - 131105: 0xFBB0, + 137257 - 131105: 0xFCD2, + 137258 - 131105: 0x93CB, + 137261 - 131105: 0x9AFD, + 137273 - 131105: 0x91F4, + 137274 - 131105: 0x8BAC, + 137275 - 131105: 0xA055, + 137280 - 131105: 0x9574, + 137285 - 131105: 0x95BE, + 137298 - 131105: 0x97AD, + 137310 - 131105: 0x8EE9, + 137313 - 131105: 0x92F8, + 137314 - 131105: 0x97BE, + 137315 - 131105: 0x916C, + 137316 - 131105: 0x94AA, + 137335 - 131105: 0xFC63, + 137339 - 131105: 0x9DC6, + 137347 - 131105: 0x97B5, + 137348 - 131105: 0x92B8, + 137349 - 131105: 0x91EF, + 137374 - 131105: 0xFEA6, + 137375 - 131105: 0x9760, + 137376 - 131105: 0x9358, + 137377 - 131105: 0x9576, + 137378 - 131105: 0x8FAC, + 137406 - 131105: 0x91EC, + 137407 - 131105: 0x97B4, + 137425 - 131105: 0x91F7, + 137430 - 131105: 0x974A, + 137431 - 131105: 0xFB49, + 137432 - 131105: 0x9578, + 137433 - 131105: 0x93BC, + 137466 - 131105: 0x91D6, + 137475 - 131105: 0x9355, + 137476 - 131105: 0x9356, + 137477 - 131105: 0x9851, + 137488 - 131105: 0x8FF8, + 137489 - 131105: 0xFBC0, + 137490 - 131105: 0x93F2, + 137493 - 131105: 0x90D0, + 137500 - 131105: 0x9C44, + 137506 - 131105: 0x9255, + 137511 - 131105: 0x9363, + 137531 - 131105: 0x91A5, + 137540 - 131105: 0xA0ED, + 137560 - 131105: 0xFD6B, + 137578 - 131105: 0x9AFE, + 137596 - 131105: 0x9351, + 137600 - 131105: 0x8C57, + 137603 - 131105: 0xFA78, + 137608 - 131105: 0xFEA8, + 137622 - 131105: 0x9350, + 137691 - 131105: 0xFA4C, + 137715 - 131105: 0x92F7, + 137773 - 131105: 0x9B40, + 137780 - 131105: 0xFBCE, + 137797 - 131105: 0x9B41, + 137803 - 131105: 0xFEAD, + 137827 - 131105: 0x8761, + 138052 - 131105: 0xFBD5, + 138177 - 131105: 0x8BC2, + 138178 - 131105: 0x9A7C, + 138282 - 131105: 0x9B42, + 138352 - 131105: 0x9B43, + 138402 - 131105: 0x9E79, + 138405 - 131105: 0xFBD9, + 138412 - 131105: 0x9B44, + 138566 - 131105: 0xA0A7, + 138579 - 131105: 0x877B, + 138590 - 131105: 0x876E, + 138640 - 131105: 0x9BF3, + 138678 - 131105: 0x8C79, + 138682 - 131105: 0x935E, + 138698 - 131105: 0x89CB, + 138705 - 131105: 0x9F53, + 138731 - 131105: 0x93D7, + 138745 - 131105: 0xFBE1, + 138780 - 131105: 0xFED0, + 138787 - 131105: 0x8CF1, + 138807 - 131105: 0xFBE2, + 138813 - 131105: 0xFCE3, + 138889 - 131105: 0x9074, + 138916 - 131105: 0xFBE6, + 138920 - 131105: 0x9BB7, + 138952 - 131105: 0x9B45, + 138965 - 131105: 0x9B47, + 139023 - 131105: 0x9F50, + 139029 - 131105: 0x9B48, + 139114 - 131105: 0xFC5B, + 139166 - 131105: 0x98A9, + 139169 - 131105: 0x9CFD, + 139240 - 131105: 0x884C, + 139333 - 131105: 0x9B4B, + 139337 - 131105: 0xFBEC, + 139390 - 131105: 0x8C69, + 139418 - 131105: 0x9BA8, + 139463 - 131105: 0x8AD5, + 139516 - 131105: 0xFA73, + 139562 - 131105: 0xFD59, + 139611 - 131105: 0x91A2, + 139635 - 131105: 0xFBED, + 139642 - 131105: 0x9CA9, + 139681 - 131105: 0x8AA8, + 139713 - 131105: 0x8D42, + 139715 - 131105: 0x9BC3, + 139784 - 131105: 0x8AE1, + 139900 - 131105: 0x9B4E, + 140065 - 131105: 0x95D0, + 140069 - 131105: 0x905F, + 140221 - 131105: 0x97EE, + 140240 - 131105: 0xFC4E, + 140247 - 131105: 0x9B4F, + 140282 - 131105: 0x9B50, + 140389 - 131105: 0x9EC6, + 140401 - 131105: 0xFC50, + 140427 - 131105: 0xFD73, + 140433 - 131105: 0xFDA7, + 140464 - 131105: 0x9DA2, + 140476 - 131105: 0x87D1, + 140481 - 131105: 0x87D3, + 140489 - 131105: 0x87D4, + 140492 - 131105: 0x87D5, + 140525 - 131105: 0xFA58, + 140563 - 131105: 0xFA5E, + 140571 - 131105: 0xA059, + 140592 - 131105: 0xFA75, + 140628 - 131105: 0xFBBE, + 140685 - 131105: 0x9CA2, + 140719 - 131105: 0x9370, + 140734 - 131105: 0x9371, + 140827 - 131105: 0x9377, + 140828 - 131105: 0xFEEF, + 140843 - 131105: 0x936D, + 140904 - 131105: 0xFC5D, + 140922 - 131105: 0x90B8, + 140950 - 131105: 0x8AFC, + 140952 - 131105: 0xFB41, + 141044 - 131105: 0x9E6B, + 141045 - 131105: 0x94E3, + 141046 - 131105: 0x8EE2, + 141074 - 131105: 0x8C7D, + 141076 - 131105: 0x8ED7, + 141083 - 131105: 0x9C4D, + 141087 - 131105: 0x96A3, + 141098 - 131105: 0x9B51, + 141173 - 131105: 0x8AC3, + 141185 - 131105: 0x96AA, + 141206 - 131105: 0x8CE2, + 141236 - 131105: 0xFC68, + 141237 - 131105: 0x8B6D, + 141261 - 131105: 0xFD67, + 141315 - 131105: 0x8AE9, + 141407 - 131105: 0xFCA1, + 141408 - 131105: 0x936C, + 141425 - 131105: 0x9B52, + 141485 - 131105: 0xFE70, + 141505 - 131105: 0xFCA8, + 141559 - 131105: 0xFCE9, + 141606 - 131105: 0x9CB4, + 141625 - 131105: 0x8AEA, + 141647 - 131105: 0x9B53, + 141671 - 131105: 0x9B55, + 141675 - 131105: 0x96AB, + 141696 - 131105: 0xFCA7, + 141715 - 131105: 0x9B56, + 141926 - 131105: 0x8ABC, + 142031 - 131105: 0x8ACB, + 142037 - 131105: 0x9B57, + 142054 - 131105: 0x89CD, + 142056 - 131105: 0x9B59, + 142094 - 131105: 0x9B5B, + 142114 - 131105: 0x93A5, + 142143 - 131105: 0x9B5D, + 142147 - 131105: 0x9E4F, + 142186 - 131105: 0x93A3, + 142282 - 131105: 0x8A7B, + 142286 - 131105: 0x8B42, + 142374 - 131105: 0x9750, + 142375 - 131105: 0x8FB3, + 142392 - 131105: 0x8A50, + 142412 - 131105: 0x9B60, + 142417 - 131105: 0x8B45, + 142421 - 131105: 0x8B46, + 142434 - 131105: 0x9DFE, + 142472 - 131105: 0x9B62, + 142491 - 131105: 0x937B, + 142497 - 131105: 0x93B1, + 142505 - 131105: 0x8A60, + 142514 - 131105: 0x8AD8, + 142519 - 131105: 0x9B63, + 142530 - 131105: 0x8A69, + 142534 - 131105: 0x8A47, + 142537 - 131105: 0x8ACC, + 142599 - 131105: 0x937C, + 142600 - 131105: 0x9B65, + 142610 - 131105: 0x9B66, + 142660 - 131105: 0x8A72, + 142668 - 131105: 0x8A7A, + 142695 - 131105: 0x93AF, + 142733 - 131105: 0x8AB0, + 142741 - 131105: 0x9B68, + 142752 - 131105: 0x9EA3, + 142755 - 131105: 0xFAEC, + 142756 - 131105: 0x8B77, + 142775 - 131105: 0x9B67, + 142830 - 131105: 0x8B59, + 142861 - 131105: 0xFCB1, + 142902 - 131105: 0xFCBB, + 142914 - 131105: 0x9B69, + 142968 - 131105: 0x93A8, + 142987 - 131105: 0x8AE0, + 143027 - 131105: 0x9E51, + 143087 - 131105: 0x8F5F, + 143220 - 131105: 0x9B6A, + 143308 - 131105: 0x9B6B, + 143331 - 131105: 0x97EC, + 143411 - 131105: 0x9B6C, + 143428 - 131105: 0xFE4E, + 143435 - 131105: 0xFDC2, + 143462 - 131105: 0x9B6D, + 143485 - 131105: 0x9167, + 143486 - 131105: 0xFCCC, + 143502 - 131105: 0x93B6, + 143543 - 131105: 0x90E4, + 143548 - 131105: 0x90E5, + 143578 - 131105: 0x9EF2, + 143619 - 131105: 0x93CA, + 143677 - 131105: 0x8BBC, + 143741 - 131105: 0x8F46, + 143746 - 131105: 0x93CF, + 143780 - 131105: 0xFCDB, + 143781 - 131105: 0xFCDC, + 143795 - 131105: 0x93C0, + 143816 - 131105: 0xFCE6, + 143817 - 131105: 0x96E7, + 143850 - 131105: 0x87A7, + 143863 - 131105: 0xFCD8, + 143864 - 131105: 0xFCD9, + 143865 - 131105: 0xFDA6, + 143887 - 131105: 0x93CE, + 143909 - 131105: 0x95F1, + 143919 - 131105: 0x9CE9, + 143921 - 131105: 0xFCE4, + 143922 - 131105: 0x94AF, + 143923 - 131105: 0xFA77, + 143924 - 131105: 0x93CC, + 143958 - 131105: 0x8CE1, + 143966 - 131105: 0x87A9, + 143970 - 131105: 0x905A, + 144001 - 131105: 0x8C54, + 144009 - 131105: 0x93BF, + 144010 - 131105: 0xFB51, + 144043 - 131105: 0x93B9, + 144044 - 131105: 0xFED7, + 144045 - 131105: 0x93B7, + 144082 - 131105: 0x93D9, + 144096 - 131105: 0x93BB, + 144097 - 131105: 0x93DA, + 144128 - 131105: 0x98A3, + 144138 - 131105: 0x90D1, + 144159 - 131105: 0x9B6E, + 144308 - 131105: 0xFA70, + 144332 - 131105: 0x9BEB, + 144350 - 131105: 0x9B6F, + 144358 - 131105: 0xFCFC, + 144372 - 131105: 0x8B40, + 144373 - 131105: 0xA07B, + 144377 - 131105: 0x8CA1, + 144378 - 131105: 0x97F7, + 144382 - 131105: 0x93E2, + 144384 - 131105: 0xFCD6, + 144447 - 131105: 0x9559, + 144464 - 131105: 0x93A6, + 144495 - 131105: 0xFD40, + 144498 - 131105: 0x935F, + 144613 - 131105: 0x97F2, + 144665 - 131105: 0x9C76, + 144688 - 131105: 0x8EF8, + 144721 - 131105: 0x8CEB, + 144730 - 131105: 0x8F47, + 144743 - 131105: 0x9B74, + 144789 - 131105: 0x92B4, + 144793 - 131105: 0x91ED, + 144796 - 131105: 0x96D2, + 144827 - 131105: 0x87D8, + 144845 - 131105: 0xFD46, + 144846 - 131105: 0x8F4F, + 144847 - 131105: 0x9549, + 144883 - 131105: 0x9B75, + 144896 - 131105: 0xFA5C, + 144919 - 131105: 0x8751, + 144922 - 131105: 0x9B79, + 144956 - 131105: 0xFD4B, + 144960 - 131105: 0x96D3, + 144985 - 131105: 0xFD58, + 144991 - 131105: 0x945F, + 145015 - 131105: 0xA0F5, + 145038 - 131105: 0x87C7, + 145054 - 131105: 0x877C, + 145062 - 131105: 0x9243, + 145069 - 131105: 0x97FA, + 145082 - 131105: 0x9DD9, + 145119 - 131105: 0x97F4, + 145134 - 131105: 0x924D, + 145155 - 131105: 0xFD5B, + 145174 - 131105: 0x9B7A, + 145184 - 131105: 0x9ED5, + 145197 - 131105: 0xFAAE, + 145199 - 131105: 0x9CC9, + 145215 - 131105: 0x9258, + 145254 - 131105: 0x8EC8, + 145281 - 131105: 0x94B4, + 145314 - 131105: 0x93E1, + 145340 - 131105: 0x93DF, + 145346 - 131105: 0xFCF0, + 145365 - 131105: 0x93EC, + 145366 - 131105: 0x97F6, + 145367 - 131105: 0x96CF, + 145466 - 131105: 0x93DE, + 145858 - 131105: 0x8ACF, + 146087 - 131105: 0x9BA2, + 146139 - 131105: 0xFD69, + 146158 - 131105: 0x9352, + 146170 - 131105: 0x98A2, + 146202 - 131105: 0x8CE7, + 146266 - 131105: 0xFD6E, + 146531 - 131105: 0x8CA4, + 146585 - 131105: 0xFA7C, + 146586 - 131105: 0x93FA, + 146587 - 131105: 0x907C, + 146613 - 131105: 0x8F67, + 146615 - 131105: 0x9DB7, + 146631 - 131105: 0xA0E9, + 146632 - 131105: 0xFA4E, + 146633 - 131105: 0xFDA1, + 146684 - 131105: 0x9E74, + 146685 - 131105: 0x9FBF, + 146686 - 131105: 0x9ECB, + 146687 - 131105: 0x9BB9, + 146752 - 131105: 0x9DD4, + 146779 - 131105: 0x97B9, + 146814 - 131105: 0x8EF1, + 146831 - 131105: 0x957B, + 146870 - 131105: 0x9ED2, + 146871 - 131105: 0x9753, + 146872 - 131105: 0x96A4, + 146873 - 131105: 0x8FBE, + 146874 - 131105: 0x94D9, + 146875 - 131105: 0x9058, + 146876 - 131105: 0xFD79, + 146877 - 131105: 0xFD7B, + 146915 - 131105: 0x8EDA, + 146936 - 131105: 0x8EFA, + 146950 - 131105: 0x8762, + 146961 - 131105: 0x9BA5, + 146988 - 131105: 0x9ED9, + 146989 - 131105: 0x97D4, + 146990 - 131105: 0x90BB, + 146991 - 131105: 0xFDBC, + 146992 - 131105: 0xFDC6, + 146993 - 131105: 0x9248, + 147001 - 131105: 0x92B5, + 147080 - 131105: 0x9DC1, + 147081 - 131105: 0x92B9, + 147082 - 131105: 0x92A6, + 147083 - 131105: 0x8F4B, + 147129 - 131105: 0x9BA6, + 147135 - 131105: 0x92B6, + 147159 - 131105: 0x8E40, + 147191 - 131105: 0x9ED8, + 147192 - 131105: 0x945E, + 147193 - 131105: 0x985F, + 147194 - 131105: 0x94CE, + 147195 - 131105: 0x924A, + 147196 - 131105: 0xFD70, + 147253 - 131105: 0x9467, + 147265 - 131105: 0x8DEC, + 147274 - 131105: 0x9BD8, + 147297 - 131105: 0x8763, + 147327 - 131105: 0x9448, + 147328 - 131105: 0xFAC1, + 147329 - 131105: 0x9CF7, + 147330 - 131105: 0xFDBE, + 147343 - 131105: 0x8FDA, + 147380 - 131105: 0xFDD9, + 147383 - 131105: 0xFC7E, + 147392 - 131105: 0x93F9, + 147397 - 131105: 0xFA43, + 147435 - 131105: 0xFAEB, + 147436 - 131105: 0xFAC3, + 147437 - 131105: 0x97D3, + 147438 - 131105: 0x95F9, + 147439 - 131105: 0x9C48, + 147440 - 131105: 0xFDD8, + 147473 - 131105: 0xA0D8, + 147513 - 131105: 0xFDD7, + 147514 - 131105: 0xFB4A, + 147515 - 131105: 0x9BAF, + 147516 - 131105: 0x944B, + 147517 - 131105: 0xFDC9, + 147543 - 131105: 0x8EAC, + 147589 - 131105: 0xFDB2, + 147595 - 131105: 0x925A, + 147596 - 131105: 0xFCBD, + 147597 - 131105: 0x92D9, + 147601 - 131105: 0xFDD5, + 147657 - 131105: 0x92DD, + 147681 - 131105: 0x9259, + 147692 - 131105: 0x8CF0, + 147716 - 131105: 0x96BA, + 147727 - 131105: 0x925B, + 147737 - 131105: 0x9BAB, + 147775 - 131105: 0xFDDA, + 147776 - 131105: 0xFDDE, + 147780 - 131105: 0xFDD3, + 147790 - 131105: 0x8C46, + 147797 - 131105: 0xFDD6, + 147798 - 131105: 0xFDDC, + 147799 - 131105: 0xFDDD, + 147804 - 131105: 0x90FE, + 147807 - 131105: 0xFEA1, + 147809 - 131105: 0x87A5, + 147831 - 131105: 0x8BAD, + 147834 - 131105: 0x9CD8, + 147875 - 131105: 0x9E6D, + 147876 - 131105: 0xFD7C, + 147877 - 131105: 0xFB61, + 147884 - 131105: 0x96F8, + 147893 - 131105: 0x96F0, + 147917 - 131105: 0xFCF4, + 147938 - 131105: 0xFE60, + 147964 - 131105: 0x9852, + 147995 - 131105: 0x964F, + 148043 - 131105: 0x916E, + 148054 - 131105: 0x986D, + 148057 - 131105: 0x9864, + 148086 - 131105: 0x9453, + 148087 - 131105: 0xFDEC, + 148088 - 131105: 0xFB78, + 148100 - 131105: 0x95BA, + 148115 - 131105: 0x985D, + 148117 - 131105: 0x92F9, + 148133 - 131105: 0x985A, + 148159 - 131105: 0x8750, + 148161 - 131105: 0xFDF6, + 148169 - 131105: 0x93D0, + 148170 - 131105: 0x9862, + 148206 - 131105: 0x9BAD, + 148218 - 131105: 0x974F, + 148237 - 131105: 0x9BAE, + 148250 - 131105: 0x9452, + 148276 - 131105: 0x9BB0, + 148296 - 131105: 0x91D2, + 148322 - 131105: 0x97EA, + 148323 - 131105: 0xFB6B, + 148324 - 131105: 0x91B1, + 148325 - 131105: 0xFDF3, + 148364 - 131105: 0x92CB, + 148374 - 131105: 0x9BB1, + 148380 - 131105: 0xFCEC, + 148413 - 131105: 0x986B, + 148417 - 131105: 0x9751, + 148457 - 131105: 0x9871, + 148458 - 131105: 0x95EF, + 148466 - 131105: 0x9EF3, + 148472 - 131105: 0x91E8, + 148484 - 131105: 0x9BBA, + 148533 - 131105: 0xFB4C, + 148534 - 131105: 0x926A, + 148570 - 131105: 0xFDF8, + 148571 - 131105: 0x9861, + 148595 - 131105: 0x91E7, + 148615 - 131105: 0x93ED, + 148616 - 131105: 0x9744, + 148665 - 131105: 0x91E1, + 148668 - 131105: 0xFBF5, + 148686 - 131105: 0x9869, + 148691 - 131105: 0x8A62, + 148694 - 131105: 0x9BBB, + 148741 - 131105: 0x8CA8, + 148769 - 131105: 0x9C55, + 148856 - 131105: 0x8E77, + 148936 - 131105: 0x8AB2, + 149016 - 131105: 0x9EBC, + 149034 - 131105: 0x93E6, + 149093 - 131105: 0x93A2, + 149108 - 131105: 0x9BBD, + 149143 - 131105: 0x94B3, + 149204 - 131105: 0x937D, + 149254 - 131105: 0x9E66, + 149285 - 131105: 0x9459, + 149295 - 131105: 0x9BBF, + 149391 - 131105: 0x9458, + 149472 - 131105: 0x9EA5, + 149522 - 131105: 0x9BC7, + 149539 - 131105: 0xFE54, + 149634 - 131105: 0x8E74, + 149737 - 131105: 0x8BD6, + 149744 - 131105: 0x94B6, + 149745 - 131105: 0xFD74, + 149746 - 131105: 0x98C0, + 149747 - 131105: 0x94A5, + 149755 - 131105: 0x9BC8, + 149759 - 131105: 0x95ED, + 149760 - 131105: 0xFD7E, + 149761 - 131105: 0xFBEB, + 149772 - 131105: 0xFD7D, + 149782 - 131105: 0x976F, + 149783 - 131105: 0x9461, + 149785 - 131105: 0x9FC1, + 149807 - 131105: 0x95D7, + 149811 - 131105: 0xFA52, + 149812 - 131105: 0x9C58, + 149822 - 131105: 0x9F68, + 149823 - 131105: 0x9BE7, + 149824 - 131105: 0xFCCE, + 149825 - 131105: 0x96E8, + 149826 - 131105: 0xFA49, + 149827 - 131105: 0x97A1, + 149858 - 131105: 0x954D, + 149859 - 131105: 0x9EF8, + 149876 - 131105: 0xFE49, + 149877 - 131105: 0x91CE, + 149878 - 131105: 0x9771, + 149883 - 131105: 0x8CCF, + 149887 - 131105: 0xFDB1, + 149890 - 131105: 0xFC6E, + 149896 - 131105: 0x9CF2, + 149897 - 131105: 0x93B8, + 149898 - 131105: 0x9043, + 149899 - 131105: 0x9759, + 149900 - 131105: 0x94D7, + 149901 - 131105: 0xFE66, + 149902 - 131105: 0x947D, + 149903 - 131105: 0xFC6F, + 149908 - 131105: 0x9246, + 149924 - 131105: 0xFA6D, + 149927 - 131105: 0x8EF7, + 149929 - 131105: 0xFBB7, + 149931 - 131105: 0x947C, + 149932 - 131105: 0x92CD, + 149933 - 131105: 0x97B2, + 149943 - 131105: 0xFE65, + 149944 - 131105: 0x967E, + 149945 - 131105: 0x9758, + 149946 - 131105: 0x9B77, + 149947 - 131105: 0x91CF, + 149957 - 131105: 0x94A4, + 149968 - 131105: 0x9CAD, + 149978 - 131105: 0x8BAB, + 149982 - 131105: 0x96D5, + 149983 - 131105: 0xFCB3, + 149987 - 131105: 0x93AE, + 149989 - 131105: 0x976D, + 149996 - 131105: 0x9446, + 149997 - 131105: 0x95F7, + 150006 - 131105: 0x9C46, + 150007 - 131105: 0x955B, + 150008 - 131105: 0x91D1, + 150009 - 131105: 0x94F4, + 150011 - 131105: 0xFE67, + 150030 - 131105: 0x92A5, + 150034 - 131105: 0xFEDF, + 150035 - 131105: 0x8CAB, + 150037 - 131105: 0x9BC9, + 150049 - 131105: 0xFCED, + 150050 - 131105: 0xFDFA, + 150051 - 131105: 0xFCC8, + 150052 - 131105: 0xFE62, + 150053 - 131105: 0x91FC, + 150054 - 131105: 0xFE6B, + 150055 - 131105: 0xFDF9, + 150056 - 131105: 0xFCC7, + 150057 - 131105: 0x914E, + 150058 - 131105: 0x9CB8, + 150078 - 131105: 0x9767, + 150082 - 131105: 0x95EE, + 150085 - 131105: 0x9BB2, + 150090 - 131105: 0x9460, + 150094 - 131105: 0x94A2, + 150095 - 131105: 0x9875, + 150096 - 131105: 0x97AC, + 150097 - 131105: 0x91D3, + 150109 - 131105: 0x987B, + 150117 - 131105: 0x8EEB, + 150118 - 131105: 0x976A, + 150119 - 131105: 0x965E, + 150129 - 131105: 0x97EB, + 150135 - 131105: 0x9FF9, + 150136 - 131105: 0x95F8, + 150137 - 131105: 0xFEA2, + 150138 - 131105: 0x8FE6, + 150156 - 131105: 0xFE7E, + 150163 - 131105: 0x9DA4, + 150164 - 131105: 0x9768, + 150165 - 131105: 0x8EEC, + 150166 - 131105: 0x94BD, + 150180 - 131105: 0x945B, + 150181 - 131105: 0x9CF6, + 150182 - 131105: 0xFAA7, + 150183 - 131105: 0x9BD9, + 150193 - 131105: 0xFA5D, + 150194 - 131105: 0x9656, + 150195 - 131105: 0x9762, + 150202 - 131105: 0x94BA, + 150203 - 131105: 0xA04F, + 150204 - 131105: 0x92D8, + 150208 - 131105: 0x9BCB, + 150215 - 131105: 0x94BB, + 150218 - 131105: 0x9D5F, + 150225 - 131105: 0x90CF, + 150239 - 131105: 0x9465, + 150242 - 131105: 0x9F4C, + 150249 - 131105: 0x90D8, + 150287 - 131105: 0x8D5B, + 150382 - 131105: 0x9EBE, + 150517 - 131105: 0xFB6D, + 150537 - 131105: 0x95CA, + 150686 - 131105: 0x9DC2, + 150687 - 131105: 0x97F8, + 150729 - 131105: 0x8FFC, + 150745 - 131105: 0x9473, + 150790 - 131105: 0x9474, + 150803 - 131105: 0xFEB7, + 150968 - 131105: 0x8A4B, + 151018 - 131105: 0x8A55, + 151019 - 131105: 0x8B69, + 151099 - 131105: 0x8ADC, + 151120 - 131105: 0x8B76, + 151205 - 131105: 0x9BCE, + 151207 - 131105: 0x8A68, + 151310 - 131105: 0xA0F8, + 151388 - 131105: 0x98DF, + 151426 - 131105: 0xFEB5, + 151430 - 131105: 0x9BCF, + 151447 - 131105: 0x96FB, + 151450 - 131105: 0x9BFB, + 151465 - 131105: 0x9ECE, + 151480 - 131105: 0x8EE5, + 151490 - 131105: 0x9E7B, + 151596 - 131105: 0x9BD2, + 151634 - 131105: 0x8AA5, + 151709 - 131105: 0xFECE, + 151851 - 131105: 0x8A45, + 151880 - 131105: 0x9DFC, + 151933 - 131105: 0xFECF, + 151934 - 131105: 0x8BA5, + 152013 - 131105: 0x8C4A, + 152035 - 131105: 0x8AEC, + 152038 - 131105: 0xFCE0, + 152039 - 131105: 0x94AD, + 152096 - 131105: 0xFED5, + 152097 - 131105: 0x94AC, + 152144 - 131105: 0xFC5A, + 152217 - 131105: 0x9BD6, + 152263 - 131105: 0x8A6F, + 152280 - 131105: 0x8BA9, + 152334 - 131105: 0x8E5F, + 152337 - 131105: 0x9DCB, + 152339 - 131105: 0xFCE7, + 152601 - 131105: 0x9BD7, + 152613 - 131105: 0x93C8, + 152623 - 131105: 0x91F0, + 152624 - 131105: 0x8FE0, + 152646 - 131105: 0x9BDB, + 152684 - 131105: 0x90ED, + 152686 - 131105: 0x9BDC, + 152730 - 131105: 0x8D53, + 152881 - 131105: 0xA0EC, + 152885 - 131105: 0x98FA, + 152895 - 131105: 0x9BE0, + 152923 - 131105: 0x93C7, + 152924 - 131105: 0x9249, + 152925 - 131105: 0x96E1, + 152926 - 131105: 0x9BE2, + 152930 - 131105: 0x9BE4, + 152933 - 131105: 0x8FE1, + 152934 - 131105: 0x9BE5, + 152961 - 131105: 0x94C0, + 152964 - 131105: 0x93C3, + 152975 - 131105: 0x93C5, + 153017 - 131105: 0x9079, + 153045 - 131105: 0x977B, + 153051 - 131105: 0x907E, + 153056 - 131105: 0xFEE6, + 153093 - 131105: 0xFE46, + 153141 - 131105: 0x9DB8, + 153169 - 131105: 0x9270, + 153219 - 131105: 0x95A8, + 153237 - 131105: 0x8CB0, + 153315 - 131105: 0x94C8, + 153334 - 131105: 0x98B9, + 153350 - 131105: 0x9140, + 153373 - 131105: 0xFCBE, + 153381 - 131105: 0x9157, + 153405 - 131105: 0x8BB2, + 153458 - 131105: 0xFADF, + 153543 - 131105: 0x9BE6, + 153567 - 131105: 0x9643, + 153568 - 131105: 0x8E44, + 153569 - 131105: 0x9C4F, + 153687 - 131105: 0xFEF4, + 153693 - 131105: 0x9BE8, + 153714 - 131105: 0x93DC, + 153800 - 131105: 0x966F, + 153822 - 131105: 0x87A1, + 153825 - 131105: 0x8E4A, + 153859 - 131105: 0x9BED, + 153926 - 131105: 0x92F6, + 153942 - 131105: 0x9DB9, + 154028 - 131105: 0x8E4E, + 154060 - 131105: 0xFBCF, + 154196 - 131105: 0x8760, + 154261 - 131105: 0x9EC2, + 154268 - 131105: 0x94E5, + 154286 - 131105: 0x9BF0, + 154287 - 131105: 0x94E4, + 154345 - 131105: 0x9551, + 154484 - 131105: 0x8BBB, + 154505 - 131105: 0x9BF1, + 154547 - 131105: 0x94F0, + 154548 - 131105: 0x8E64, + 154566 - 131105: 0x94EA, + 154596 - 131105: 0x8F61, + 154600 - 131105: 0x9B64, + 154625 - 131105: 0x8E5B, + 154630 - 131105: 0x9BF2, + 154657 - 131105: 0x9FBE, + 154698 - 131105: 0x9DC9, + 154725 - 131105: 0x8E6C, + 154769 - 131105: 0x8F73, + 154788 - 131105: 0x8CAF, + 154816 - 131105: 0x8F75, + 154817 - 131105: 0x8E71, + 154878 - 131105: 0x8E60, + 154912 - 131105: 0x8E6A, + 154928 - 131105: 0x8C4C, + 154947 - 131105: 0x9552, + 155033 - 131105: 0x87CF, + 155065 - 131105: 0x87C0, + 155150 - 131105: 0x9554, + 155209 - 131105: 0x8AD4, + 155265 - 131105: 0x9DBB, + 155266 - 131105: 0x9543, + 155267 - 131105: 0x92FE, + 155302 - 131105: 0x94F2, + 155324 - 131105: 0x94F1, + 155351 - 131105: 0xA0EA, + 155352 - 131105: 0x9DD2, + 155418 - 131105: 0xA0B1, + 155467 - 131105: 0x91F8, + 155617 - 131105: 0x9462, + 155618 - 131105: 0x9BA4, + 155681 - 131105: 0x877D, + 155689 - 131105: 0x8EAD, + 155720 - 131105: 0x9EAD, + 155748 - 131105: 0x96D0, + 155779 - 131105: 0xFEEE, + 155799 - 131105: 0x8AB4, + 155812 - 131105: 0x9757, + 155813 - 131105: 0x8A77, + 155906 - 131105: 0x9BF7, + 155937 - 131105: 0x8EB5, + 155993 - 131105: 0xA06D, + 155994 - 131105: 0x8EB6, + 155995 - 131105: 0x9756, + 155996 - 131105: 0x9540, + 156077 - 131105: 0xA0F3, + 156078 - 131105: 0x94BE, + 156082 - 131105: 0x9BFA, + 156125 - 131105: 0xFDDF, + 156248 - 131105: 0x9DBC, + 156257 - 131105: 0x94FE, + 156266 - 131105: 0x8BDB, + 156267 - 131105: 0xA0FE, + 156368 - 131105: 0x8EC0, + 156469 - 131105: 0x9F47, + 156491 - 131105: 0x8BDE, + 156492 - 131105: 0xA0FB, + 156497 - 131105: 0x8EC3, + 156606 - 131105: 0x9649, + 156661 - 131105: 0xFEC2, + 156664 - 131105: 0x954C, + 156674 - 131105: 0x9BFD, + 156688 - 131105: 0x90CC, + 156689 - 131105: 0x9C60, + 156690 - 131105: 0x954B, + 156746 - 131105: 0x9BFE, + 156777 - 131105: 0x9C70, + 156804 - 131105: 0x9C43, + 156808 - 131105: 0x9C47, + 156809 - 131105: 0x8ECC, + 156813 - 131105: 0x8E54, + 156824 - 131105: 0x8EE4, + 156946 - 131105: 0x9C49, + 157042 - 131105: 0x8B5E, + 157088 - 131105: 0x955E, + 157101 - 131105: 0x955C, + 157119 - 131105: 0x9C4B, + 157202 - 131105: 0x8BE1, + 157222 - 131105: 0x8ED9, + 157359 - 131105: 0x9DB4, + 157361 - 131105: 0x925F, + 157365 - 131105: 0x9C4C, + 157402 - 131105: 0x8AA1, + 157416 - 131105: 0x8EDB, + 157436 - 131105: 0x9C56, + 157462 - 131105: 0x8AA2, + 157505 - 131105: 0x9754, + 157593 - 131105: 0x9C5E, + 157619 - 131105: 0x9ED4, + 157620 - 131105: 0x9568, + 157644 - 131105: 0xA0C3, + 157724 - 131105: 0x8AE6, + 157766 - 131105: 0xA0F7, + 157790 - 131105: 0x9C61, + 157806 - 131105: 0x9C5F, + 157832 - 131105: 0xFC4D, + 157834 - 131105: 0x9E5B, + 157843 - 131105: 0x9E69, + 157895 - 131105: 0x9C63, + 157966 - 131105: 0xFEC7, + 157969 - 131105: 0xFEC6, + 157990 - 131105: 0x9C67, + 158009 - 131105: 0x9C69, + 158033 - 131105: 0x8BE2, + 158120 - 131105: 0x9165, + 158133 - 131105: 0x9CE7, + 158194 - 131105: 0x8A54, + 158202 - 131105: 0x9C6C, + 158253 - 131105: 0x9C6E, + 158254 - 131105: 0xFE5D, + 158260 - 131105: 0x9C73, + 158274 - 131105: 0x956A, + 158289 - 131105: 0x956D, + 158290 - 131105: 0x8EF0, + 158469 - 131105: 0x8F4D, + 158474 - 131105: 0x8EF6, + 158483 - 131105: 0xFABC, + 158485 - 131105: 0x8CD5, + 158499 - 131105: 0x875E, + 158504 - 131105: 0xFBDA, + 158544 - 131105: 0x8B4C, + 158545 - 131105: 0xFD75, + 158546 - 131105: 0x9BDD, + 158547 - 131105: 0xFAF5, + 158555 - 131105: 0x9C74, + 158581 - 131105: 0x9545, + 158594 - 131105: 0x96C6, + 158614 - 131105: 0x8F6A, + 158615 - 131105: 0x8F4E, + 158621 - 131105: 0x9C78, + 158643 - 131105: 0xFA55, + 158656 - 131105: 0x97E4, + 158711 - 131105: 0x9C41, + 158753 - 131105: 0x925C, + 158784 - 131105: 0x96FA, + 158785 - 131105: 0x8CF6, + 158790 - 131105: 0x8D4D, + 158846 - 131105: 0xFB66, + 158847 - 131105: 0x8E65, + 158848 - 131105: 0x9849, + 158849 - 131105: 0xFBA8, + 158850 - 131105: 0x9842, + 158884 - 131105: 0x9C7A, + 158903 - 131105: 0x97FB, + 158904 - 131105: 0x90CA, + 158909 - 131105: 0x9C5B, + 158912 - 131105: 0x974D, + 158915 - 131105: 0x8ED3, + 158929 - 131105: 0x9561, + 159010 - 131105: 0x9F4B, + 159011 - 131105: 0x9FB5, + 159012 - 131105: 0x93D2, + 159013 - 131105: 0xFDAA, + 159014 - 131105: 0x9840, + 159015 - 131105: 0x9146, + 159016 - 131105: 0x9867, + 159017 - 131105: 0xFA5A, + 159018 - 131105: 0xFBA9, + 159057 - 131105: 0x9841, + 159092 - 131105: 0x8CD3, + 159136 - 131105: 0xFCFD, + 159137 - 131105: 0xFDAB, + 159138 - 131105: 0x91BD, + 159139 - 131105: 0x8F4C, + 159140 - 131105: 0x96C9, + 159141 - 131105: 0x8F55, + 159142 - 131105: 0xFBAE, + 159143 - 131105: 0x956F, + 159150 - 131105: 0x9C7D, + 159196 - 131105: 0xA0F0, + 159210 - 131105: 0x946F, + 159211 - 131105: 0xFDAC, + 159216 - 131105: 0x96CB, + 159232 - 131105: 0x96CE, + 159237 - 131105: 0xA056, + 159239 - 131105: 0x9CE1, + 159250 - 131105: 0x96C4, + 159298 - 131105: 0x8F5E, + 159299 - 131105: 0x8F6C, + 159300 - 131105: 0x8EA3, + 159301 - 131105: 0xFBB3, + 159342 - 131105: 0xFC53, + 159346 - 131105: 0xFDB3, + 159351 - 131105: 0x8F6B, + 159364 - 131105: 0x96CA, + 159368 - 131105: 0x87CD, + 159371 - 131105: 0x8753, + 159385 - 131105: 0x8F79, + 159440 - 131105: 0x9E6F, + 159441 - 131105: 0xA0C5, + 159442 - 131105: 0xFC78, + 159443 - 131105: 0x8E42, + 159444 - 131105: 0x8F5A, + 159445 - 131105: 0x90C2, + 159446 - 131105: 0x8EA5, + 159447 - 131105: 0x9061, + 159526 - 131105: 0x924F, + 159603 - 131105: 0x9373, + 159604 - 131105: 0xFDB5, + 159647 - 131105: 0xFECC, + 159649 - 131105: 0xFBBD, + 159678 - 131105: 0x8CD6, + 159710 - 131105: 0x9843, + 159711 - 131105: 0x96C5, + 159758 - 131105: 0x89BC, + 159819 - 131105: 0x9CA3, + 159826 - 131105: 0x924B, + 159827 - 131105: 0x984A, + 159880 - 131105: 0x8FA4, + 159917 - 131105: 0xA0F1, + 159918 - 131105: 0x9EFB, + 159919 - 131105: 0x9CD2, + 159949 - 131105: 0x8FA7, + 159954 - 131105: 0x8754, + 159992 - 131105: 0xFC5C, + 160009 - 131105: 0x9845, + 160012 - 131105: 0x9046, + 160013 - 131105: 0x8CD1, + 160038 - 131105: 0xFEFA, + 160039 - 131105: 0x9560, + 160100 - 131105: 0x9F48, + 160101 - 131105: 0x9247, + 160117 - 131105: 0x90FB, + 160205 - 131105: 0x9CA4, + 160283 - 131105: 0x9571, + 160359 - 131105: 0x8745, + 160384 - 131105: 0x9CA6, + 160389 - 131105: 0x9CA7, + 160395 - 131105: 0x9CAA, + 160434 - 131105: 0x9ED3, + 160438 - 131105: 0x9E70, + 160486 - 131105: 0x9CAC, + 160594 - 131105: 0x8752, + 160666 - 131105: 0x8FAE, + 160767 - 131105: 0x8D50, + 160802 - 131105: 0x957D, + 160848 - 131105: 0x9CB0, + 160900 - 131105: 0x97B6, + 160902 - 131105: 0xA0BD, + 161140 - 131105: 0x8ADF, + 161187 - 131105: 0x9EAA, + 161248 - 131105: 0x8FBD, + 161252 - 131105: 0x8FBF, + 161277 - 131105: 0x9369, + 161278 - 131105: 0x9BA7, + 161287 - 131105: 0xC8A4, + 161292 - 131105: 0xFEEA, + 161330 - 131105: 0x9BE1, + 161337 - 131105: 0x8B41, + 161365 - 131105: 0x9DB6, + 161366 - 131105: 0xA0EB, + 161367 - 131105: 0x9BA3, + 161428 - 131105: 0x8BA1, + 161551 - 131105: 0x8FC8, + 161589 - 131105: 0x894C, + 161590 - 131105: 0x9860, + 161601 - 131105: 0x94C7, + 161630 - 131105: 0x8B58, + 161668 - 131105: 0x95AB, + 161669 - 131105: 0x95AA, + 161740 - 131105: 0x9CC3, + 161880 - 131105: 0x9CC4, + 161904 - 131105: 0x93D6, + 161949 - 131105: 0x9DAC, + 161970 - 131105: 0x8BE6, + 161992 - 131105: 0x8A71, + 162084 - 131105: 0x8FD1, + 162151 - 131105: 0x99D5, + 162170 - 131105: 0x90F4, + 162208 - 131105: 0x8AA3, + 162269 - 131105: 0x9CCE, + 162301 - 131105: 0x9CD4, + 162314 - 131105: 0x9CD5, + 162318 - 131105: 0xFBC8, + 162366 - 131105: 0x9DB3, + 162387 - 131105: 0xFC70, + 162393 - 131105: 0x8FD7, + 162425 - 131105: 0x9B73, + 162436 - 131105: 0xFA5B, + 162493 - 131105: 0x8FD2, + 162494 - 131105: 0x9064, + 162548 - 131105: 0x98B6, + 162566 - 131105: 0x9668, + 162571 - 131105: 0x9CD6, + 162584 - 131105: 0x98BD, + 162616 - 131105: 0x8FDC, + 162617 - 131105: 0xFEF6, + 162618 - 131105: 0x8FD9, + 162632 - 131105: 0x9541, + 162661 - 131105: 0x87CA, + 162799 - 131105: 0x876C, + 162804 - 131105: 0x97F3, + 162834 - 131105: 0x9BF8, + 162924 - 131105: 0x875A, + 162993 - 131105: 0x8748, + 163013 - 131105: 0x874A, + 163119 - 131105: 0x9E6C, + 163155 - 131105: 0x8FF2, + 163156 - 131105: 0x8FEE, + 163174 - 131105: 0x9CD7, + 163187 - 131105: 0x9E6E, + 163204 - 131105: 0x8A40, + 163215 - 131105: 0x8FEF, + 163224 - 131105: 0x8FF4, + 163261 - 131105: 0x8FF5, + 163292 - 131105: 0x95C2, + 163405 - 131105: 0x986A, + 163407 - 131105: 0x97CF, + 163630 - 131105: 0x9EE5, + 163833 - 131105: 0x9E7C, + 163842 - 131105: 0x9041, + 163849 - 131105: 0x9CDB, + 163870 - 131105: 0x9441, + 163875 - 131105: 0x9CE6, + 163876 - 131105: 0x9DB0, + 163912 - 131105: 0x9CEA, + 163971 - 131105: 0x9CED, + 163984 - 131105: 0x9CFA, + 164029 - 131105: 0x8B62, + 164030 - 131105: 0x8A4E, + 164072 - 131105: 0x9CCA, + 164073 - 131105: 0x8A66, + 164084 - 131105: 0x9CFB, + 164142 - 131105: 0x9CFC, + 164175 - 131105: 0x9CFE, + 164189 - 131105: 0x8A53, + 164207 - 131105: 0x9CE5, + 164233 - 131105: 0x9D40, + 164271 - 131105: 0x9D41, + 164284 - 131105: 0x9045, + 164359 - 131105: 0x8B73, + 164376 - 131105: 0x97CA, + 164378 - 131105: 0x9D42, + 164438 - 131105: 0x8A61, + 164476 - 131105: 0x8BAE, + 164507 - 131105: 0x8AD2, + 164557 - 131105: 0x8BA2, + 164578 - 131105: 0x9DF2, + 164614 - 131105: 0x9D43, + 164632 - 131105: 0x9CDF, + 164655 - 131105: 0x9D44, + 164666 - 131105: 0x8ECA, + 164709 - 131105: 0x904E, + 164717 - 131105: 0x8EB3, + 164733 - 131105: 0x9FF5, + 164746 - 131105: 0x9D45, + 164882 - 131105: 0x904F, + 164968 - 131105: 0x9D47, + 164972 - 131105: 0x89CA, + 164979 - 131105: 0x9CB5, + 164994 - 131105: 0xFBFE, + 165121 - 131105: 0x905E, + 165180 - 131105: 0x9063, + 165181 - 131105: 0x9057, + 165228 - 131105: 0x9066, + 165352 - 131105: 0x9BC0, + 165364 - 131105: 0xFCE5, + 165376 - 131105: 0x9162, + 165387 - 131105: 0x9067, + 165413 - 131105: 0x8FA1, + 165435 - 131105: 0x8FA2, + 165546 - 131105: 0x9D48, + 165547 - 131105: 0xFAD3, + 165554 - 131105: 0x8D4F, + 165564 - 131105: 0x905D, + 165592 - 131105: 0x90B9, + 165606 - 131105: 0x906B, + 165647 - 131105: 0x8C5C, + 165651 - 131105: 0x9069, + 165892 - 131105: 0xFE57, + 165931 - 131105: 0xFE55, + 166157 - 131105: 0x87A6, + 166195 - 131105: 0x9073, + 166216 - 131105: 0x9BEF, + 166217 - 131105: 0x9CF0, + 166230 - 131105: 0x9D4B, + 166244 - 131105: 0xFED9, + 166248 - 131105: 0xFEDA, + 166252 - 131105: 0x91E0, + 166253 - 131105: 0x8D43, + 166270 - 131105: 0x91D8, + 166281 - 131105: 0x9646, + 166312 - 131105: 0x9360, + 166314 - 131105: 0xFA53, + 166315 - 131105: 0x9CD3, + 166328 - 131105: 0x9D4E, + 166332 - 131105: 0xFB40, + 166336 - 131105: 0x8DE2, + 166364 - 131105: 0x9442, + 166366 - 131105: 0x9056, + 166369 - 131105: 0x9865, + 166371 - 131105: 0x8C6C, + 166372 - 131105: 0xFA4A, + 166375 - 131105: 0x9D50, + 166376 - 131105: 0x9D52, + 166393 - 131105: 0x95AF, + 166394 - 131105: 0x975A, + 166395 - 131105: 0x9349, + 166396 - 131105: 0x9747, + 166415 - 131105: 0xA0F4, + 166422 - 131105: 0x9778, + 166437 - 131105: 0x8FCF, + 166441 - 131105: 0xFC60, + 166450 - 131105: 0x8C4E, + 166454 - 131105: 0xFC56, + 166468 - 131105: 0x91DC, + 166469 - 131105: 0x9661, + 166470 - 131105: 0x92EC, + 166471 - 131105: 0x935D, + 166472 - 131105: 0x8EDE, + 166473 - 131105: 0x96FE, + 166474 - 131105: 0xFD4F, + 166475 - 131105: 0x95DE, + 166489 - 131105: 0x98B0, + 166490 - 131105: 0xA040, + 166529 - 131105: 0x97BD, + 166530 - 131105: 0x977D, + 166531 - 131105: 0x97F5, + 166554 - 131105: 0x9BAC, + 166555 - 131105: 0xFADA, + 166556 - 131105: 0x92C2, + 166592 - 131105: 0x97B1, + 166598 - 131105: 0x907B, + 166603 - 131105: 0x93FE, + 166604 - 131105: 0x947B, + 166606 - 131105: 0x9777, + 166622 - 131105: 0xFABE, + 166623 - 131105: 0xFD43, + 166624 - 131105: 0x90C6, + 166625 - 131105: 0x90A4, + 166626 - 131105: 0x90A8, + 166627 - 131105: 0x94A9, + 166629 - 131105: 0x90A9, + 166634 - 131105: 0x8C65, + 166652 - 131105: 0x95E0, + 166668 - 131105: 0x907D, + 166675 - 131105: 0x9265, + 166689 - 131105: 0xFDBA, + 166690 - 131105: 0x93C4, + 166699 - 131105: 0xFEED, + 166700 - 131105: 0x9DAB, + 166701 - 131105: 0xA0E3, + 166703 - 131105: 0x9648, + 166726 - 131105: 0x9D53, + 166732 - 131105: 0x8AA9, + 166734 - 131105: 0x9BC5, + 166736 - 131105: 0x965D, + 166755 - 131105: 0x975F, + 166756 - 131105: 0x965F, + 166757 - 131105: 0x966E, + 166758 - 131105: 0xFB5D, + 166764 - 131105: 0x9DB1, + 166799 - 131105: 0xFEA3, + 166809 - 131105: 0x9DB2, + 166812 - 131105: 0x95AE, + 166813 - 131105: 0xFCA3, + 166841 - 131105: 0x8769, + 166850 - 131105: 0xA0A2, + 166853 - 131105: 0x9655, + 166868 - 131105: 0x9D54, + 166871 - 131105: 0x9341, + 166873 - 131105: 0x95AD, + 166874 - 131105: 0x91D5, + 166887 - 131105: 0x977A, + 166888 - 131105: 0xFDFC, + 166889 - 131105: 0x8E47, + 166890 - 131105: 0x93FD, + 166891 - 131105: 0x90A5, + 166892 - 131105: 0x90AC, + 166901 - 131105: 0x95AC, + 166911 - 131105: 0x90AE, + 166915 - 131105: 0xFEA5, + 166921 - 131105: 0x9D56, + 166940 - 131105: 0x97E3, + 166941 - 131105: 0x95E2, + 166947 - 131105: 0x9466, + 166950 - 131105: 0x9647, + 166955 - 131105: 0x91B8, + 166960 - 131105: 0x9CEC, + 166969 - 131105: 0x90AD, + 166971 - 131105: 0x95E3, + 167114 - 131105: 0x8B4F, + 167117 - 131105: 0x8AE3, + 167122 - 131105: 0x8B4D, + 167220 - 131105: 0x95EA, + 167321 - 131105: 0x8B4E, + 167353 - 131105: 0x8CC1, + 167439 - 131105: 0x8BED, + 167478 - 131105: 0x91D9, + 167481 - 131105: 0xA0A4, + 167525 - 131105: 0x95F5, + 167526 - 131105: 0x95F4, + 167575 - 131105: 0x9FB3, + 167596 - 131105: 0xFEAF, + 167602 - 131105: 0xFE72, + 167603 - 131105: 0x927A, + 167641 - 131105: 0xFEAC, + 167655 - 131105: 0x95F3, + 167877 - 131105: 0x9D58, + 168057 - 131105: 0x8D46, + 168072 - 131105: 0x9372, + 168075 - 131105: 0x91C5, + 168083 - 131105: 0x9642, + 168111 - 131105: 0x90CD, + 168112 - 131105: 0x95FE, + 168113 - 131105: 0x9159, + 168128 - 131105: 0x9C65, + 168164 - 131105: 0x97CC, + 168165 - 131105: 0x90CE, + 168172 - 131105: 0x9D59, + 168173 - 131105: 0xFCF5, + 168205 - 131105: 0xFEFD, + 168208 - 131105: 0x9D5B, + 168252 - 131105: 0x9D5C, + 168269 - 131105: 0x937E, + 168283 - 131105: 0x98AC, + 168286 - 131105: 0x9D5E, + 168304 - 131105: 0xFDD0, + 168348 - 131105: 0xFD60, + 168360 - 131105: 0x9CCF, + 168405 - 131105: 0x90DD, + 168427 - 131105: 0x90E0, + 168989 - 131105: 0x90F3, + 168992 - 131105: 0x98B1, + 169011 - 131105: 0x90F0, + 169023 - 131105: 0x93BD, + 169032 - 131105: 0x95B7, + 169168 - 131105: 0x9F46, + 169177 - 131105: 0x8E4B, + 169178 - 131105: 0x9658, + 169189 - 131105: 0x8A4C, + 169191 - 131105: 0x9D63, + 169374 - 131105: 0x9ECF, + 169392 - 131105: 0x9D65, + 169400 - 131105: 0x9D66, + 169431 - 131105: 0x965A, + 169449 - 131105: 0x9D64, + 169460 - 131105: 0x8A6C, + 169760 - 131105: 0x8AD9, + 169778 - 131105: 0x9D67, + 169940 - 131105: 0x8A70, + 170000 - 131105: 0x8BF3, + 170071 - 131105: 0x9150, + 170148 - 131105: 0x9CC1, + 170193 - 131105: 0x9D68, + 170218 - 131105: 0x93A7, + 170225 - 131105: 0x9674, + 170234 - 131105: 0x8CFD, + 170243 - 131105: 0xA0EF, + 170245 - 131105: 0x9151, + 170287 - 131105: 0x96C1, + 170309 - 131105: 0x8777, + 170311 - 131105: 0x8C64, + 170312 - 131105: 0x9676, + 170313 - 131105: 0x9D69, + 170333 - 131105: 0xFCA4, + 170346 - 131105: 0x9D6A, + 170397 - 131105: 0x924E, + 170435 - 131105: 0x9D6B, + 170441 - 131105: 0x9BC1, + 170536 - 131105: 0x9D6C, + 170573 - 131105: 0x8A65, + 170757 - 131105: 0x915D, + 170766 - 131105: 0x9D6D, + 170965 - 131105: 0x915A, + 171123 - 131105: 0x8C42, + 171181 - 131105: 0x9CC0, + 171326 - 131105: 0x916A, + 171354 - 131105: 0x9D6E, + 171388 - 131105: 0x9EA6, + 171416 - 131105: 0x9DCD, + 171419 - 131105: 0x9D6F, + 171510 - 131105: 0x89BB, + 171526 - 131105: 0x9EF9, + 171565 - 131105: 0x96B4, + 171624 - 131105: 0x9172, + 171692 - 131105: 0x9EC8, + 171696 - 131105: 0x8771, + 171715 - 131105: 0x8B55, + 171768 - 131105: 0x9D71, + 171811 - 131105: 0x9D72, + 171824 - 131105: 0x9ECC, + 171959 - 131105: 0x9174, + 171998 - 131105: 0x9ED0, + 172052 - 131105: 0x905C, + 172167 - 131105: 0x8ED2, + 172217 - 131105: 0x91A8, + 172257 - 131105: 0x9177, + 172269 - 131105: 0x96BF, + 172275 - 131105: 0x96C0, + 172280 - 131105: 0x8FB1, + 172286 - 131105: 0x96B7, + 172295 - 131105: 0x8C55, + 172323 - 131105: 0x9178, + 172339 - 131105: 0x89BE, + 172340 - 131105: 0x917C, + 172368 - 131105: 0xFB77, + 172434 - 131105: 0x9175, + 172435 - 131105: 0x91A3, + 172459 - 131105: 0x9176, + 172468 - 131105: 0x96BE, + 172469 - 131105: 0x8D49, + 172511 - 131105: 0x9179, + 172533 - 131105: 0x96B6, + 172576 - 131105: 0x91A4, + 172595 - 131105: 0x91A6, + 172691 - 131105: 0x9D75, + 172703 - 131105: 0x9052, + 172722 - 131105: 0xA045, + 172724 - 131105: 0x91A9, + 172726 - 131105: 0x98AA, + 172730 - 131105: 0x8C5F, + 172733 - 131105: 0x8BAA, + 172767 - 131105: 0x9CDD, + 172799 - 131105: 0x9D77, + 172881 - 131105: 0x8756, + 172969 - 131105: 0x8940, + 173108 - 131105: 0x9EEC, + 173147 - 131105: 0x93AA, + 173510 - 131105: 0x9478, + 173515 - 131105: 0x9D7A, + 173569 - 131105: 0x8AC9, + 173618 - 131105: 0x8B4B, + 173642 - 131105: 0x9FEC, + 173659 - 131105: 0x8AE2, + 173737 - 131105: 0x9E75, +} + +const encode1Low, encode1High = 11904, 40908 + +var encode1 = [...]uint16{ + 11904 - 11904: 0xC8D6, + 11908 - 11904: 0xC8D7, + 11910 - 11904: 0xC8D8, + 11911 - 11904: 0xC8D9, + 11912 - 11904: 0xC8DA, + 11914 - 11904: 0xC8DB, + 11916 - 11904: 0xC8DC, + 11917 - 11904: 0xC8DD, + 11925 - 11904: 0xC8DE, + 11932 - 11904: 0xC8DF, + 11933 - 11904: 0xC8E0, + 11941 - 11904: 0xC8E1, + 11943 - 11904: 0xC8E2, + 11946 - 11904: 0xC8E3, + 11948 - 11904: 0xC8E4, + 11950 - 11904: 0xC8E5, + 11958 - 11904: 0xC8E6, + 11964 - 11904: 0xC8E7, + 11966 - 11904: 0xC8E8, + 11974 - 11904: 0xC8E9, + 11978 - 11904: 0xC8EA, + 11980 - 11904: 0xC8EB, + 11981 - 11904: 0xC8EC, + 11983 - 11904: 0xC8ED, + 11990 - 11904: 0xC8EE, + 11991 - 11904: 0xC8EF, + 11998 - 11904: 0xC8F0, + 12003 - 11904: 0xC8F1, + 12083 - 11904: 0xC6CD, + 12288 - 11904: 0xA140, + 12289 - 11904: 0xA142, + 12290 - 11904: 0xA143, + 12291 - 11904: 0xC6DE, + 12293 - 11904: 0xC6E0, + 12294 - 11904: 0xC6E1, + 12295 - 11904: 0xC6E2, + 12296 - 11904: 0xA171, + 12297 - 11904: 0xA172, + 12298 - 11904: 0xA16D, + 12299 - 11904: 0xA16E, + 12300 - 11904: 0xA175, + 12301 - 11904: 0xA176, + 12302 - 11904: 0xA179, + 12303 - 11904: 0xA17A, + 12304 - 11904: 0xA169, + 12305 - 11904: 0xA16A, + 12306 - 11904: 0xA245, + 12308 - 11904: 0xA165, + 12309 - 11904: 0xA166, + 12317 - 11904: 0xA1A9, + 12318 - 11904: 0xA1AA, + 12321 - 11904: 0xA2C3, + 12322 - 11904: 0xA2C4, + 12323 - 11904: 0xA2C5, + 12324 - 11904: 0xA2C6, + 12325 - 11904: 0xA2C7, + 12326 - 11904: 0xA2C8, + 12327 - 11904: 0xA2C9, + 12328 - 11904: 0xA2CA, + 12329 - 11904: 0xA2CB, + 12353 - 11904: 0xC6E7, + 12354 - 11904: 0xC6E8, + 12355 - 11904: 0xC6E9, + 12356 - 11904: 0xC6EA, + 12357 - 11904: 0xC6EB, + 12358 - 11904: 0xC6EC, + 12359 - 11904: 0xC6ED, + 12360 - 11904: 0xC6EE, + 12361 - 11904: 0xC6EF, + 12362 - 11904: 0xC6F0, + 12363 - 11904: 0xC6F1, + 12364 - 11904: 0xC6F2, + 12365 - 11904: 0xC6F3, + 12366 - 11904: 0xC6F4, + 12367 - 11904: 0xC6F5, + 12368 - 11904: 0xC6F6, + 12369 - 11904: 0xC6F7, + 12370 - 11904: 0xC6F8, + 12371 - 11904: 0xC6F9, + 12372 - 11904: 0xC6FA, + 12373 - 11904: 0xC6FB, + 12374 - 11904: 0xC6FC, + 12375 - 11904: 0xC6FD, + 12376 - 11904: 0xC6FE, + 12377 - 11904: 0xC740, + 12378 - 11904: 0xC741, + 12379 - 11904: 0xC742, + 12380 - 11904: 0xC743, + 12381 - 11904: 0xC744, + 12382 - 11904: 0xC745, + 12383 - 11904: 0xC746, + 12384 - 11904: 0xC747, + 12385 - 11904: 0xC748, + 12386 - 11904: 0xC749, + 12387 - 11904: 0xC74A, + 12388 - 11904: 0xC74B, + 12389 - 11904: 0xC74C, + 12390 - 11904: 0xC74D, + 12391 - 11904: 0xC74E, + 12392 - 11904: 0xC74F, + 12393 - 11904: 0xC750, + 12394 - 11904: 0xC751, + 12395 - 11904: 0xC752, + 12396 - 11904: 0xC753, + 12397 - 11904: 0xC754, + 12398 - 11904: 0xC755, + 12399 - 11904: 0xC756, + 12400 - 11904: 0xC757, + 12401 - 11904: 0xC758, + 12402 - 11904: 0xC759, + 12403 - 11904: 0xC75A, + 12404 - 11904: 0xC75B, + 12405 - 11904: 0xC75C, + 12406 - 11904: 0xC75D, + 12407 - 11904: 0xC75E, + 12408 - 11904: 0xC75F, + 12409 - 11904: 0xC760, + 12410 - 11904: 0xC761, + 12411 - 11904: 0xC762, + 12412 - 11904: 0xC763, + 12413 - 11904: 0xC764, + 12414 - 11904: 0xC765, + 12415 - 11904: 0xC766, + 12416 - 11904: 0xC767, + 12417 - 11904: 0xC768, + 12418 - 11904: 0xC769, + 12419 - 11904: 0xC76A, + 12420 - 11904: 0xC76B, + 12421 - 11904: 0xC76C, + 12422 - 11904: 0xC76D, + 12423 - 11904: 0xC76E, + 12424 - 11904: 0xC76F, + 12425 - 11904: 0xC770, + 12426 - 11904: 0xC771, + 12427 - 11904: 0xC772, + 12428 - 11904: 0xC773, + 12429 - 11904: 0xC774, + 12430 - 11904: 0xC775, + 12431 - 11904: 0xC776, + 12432 - 11904: 0xC777, + 12433 - 11904: 0xC778, + 12434 - 11904: 0xC779, + 12435 - 11904: 0xC77A, + 12443 - 11904: 0xC8D4, + 12444 - 11904: 0xC8D5, + 12445 - 11904: 0xC6DC, + 12446 - 11904: 0xC6DD, + 12449 - 11904: 0xC77B, + 12450 - 11904: 0xC77C, + 12451 - 11904: 0xC77D, + 12452 - 11904: 0xC77E, + 12453 - 11904: 0xC7A1, + 12454 - 11904: 0xC7A2, + 12455 - 11904: 0xC7A3, + 12456 - 11904: 0xC7A4, + 12457 - 11904: 0xC7A5, + 12458 - 11904: 0xC7A6, + 12459 - 11904: 0xC7A7, + 12460 - 11904: 0xC7A8, + 12461 - 11904: 0xC7A9, + 12462 - 11904: 0xC7AA, + 12463 - 11904: 0xC7AB, + 12464 - 11904: 0xC7AC, + 12465 - 11904: 0xC7AD, + 12466 - 11904: 0xC7AE, + 12467 - 11904: 0xC7AF, + 12468 - 11904: 0xC7B0, + 12469 - 11904: 0xC7B1, + 12470 - 11904: 0xC7B2, + 12471 - 11904: 0xC7B3, + 12472 - 11904: 0xC7B4, + 12473 - 11904: 0xC7B5, + 12474 - 11904: 0xC7B6, + 12475 - 11904: 0xC7B7, + 12476 - 11904: 0xC7B8, + 12477 - 11904: 0xC7B9, + 12478 - 11904: 0xC7BA, + 12479 - 11904: 0xC7BB, + 12480 - 11904: 0xC7BC, + 12481 - 11904: 0xC7BD, + 12482 - 11904: 0xC7BE, + 12483 - 11904: 0xC7BF, + 12484 - 11904: 0xC7C0, + 12485 - 11904: 0xC7C1, + 12486 - 11904: 0xC7C2, + 12487 - 11904: 0xC7C3, + 12488 - 11904: 0xC7C4, + 12489 - 11904: 0xC7C5, + 12490 - 11904: 0xC7C6, + 12491 - 11904: 0xC7C7, + 12492 - 11904: 0xC7C8, + 12493 - 11904: 0xC7C9, + 12494 - 11904: 0xC7CA, + 12495 - 11904: 0xC7CB, + 12496 - 11904: 0xC7CC, + 12497 - 11904: 0xC7CD, + 12498 - 11904: 0xC7CE, + 12499 - 11904: 0xC7CF, + 12500 - 11904: 0xC7D0, + 12501 - 11904: 0xC7D1, + 12502 - 11904: 0xC7D2, + 12503 - 11904: 0xC7D3, + 12504 - 11904: 0xC7D4, + 12505 - 11904: 0xC7D5, + 12506 - 11904: 0xC7D6, + 12507 - 11904: 0xC7D7, + 12508 - 11904: 0xC7D8, + 12509 - 11904: 0xC7D9, + 12510 - 11904: 0xC7DA, + 12511 - 11904: 0xC7DB, + 12512 - 11904: 0xC7DC, + 12513 - 11904: 0xC7DD, + 12514 - 11904: 0xC7DE, + 12515 - 11904: 0xC7DF, + 12516 - 11904: 0xC7E0, + 12517 - 11904: 0xC7E1, + 12518 - 11904: 0xC7E2, + 12519 - 11904: 0xC7E3, + 12520 - 11904: 0xC7E4, + 12521 - 11904: 0xC7E5, + 12522 - 11904: 0xC7E6, + 12523 - 11904: 0xC7E7, + 12524 - 11904: 0xC7E8, + 12525 - 11904: 0xC7E9, + 12526 - 11904: 0xC7EA, + 12527 - 11904: 0xC7EB, + 12528 - 11904: 0xC7EC, + 12529 - 11904: 0xC7ED, + 12530 - 11904: 0xC7EE, + 12531 - 11904: 0xC7EF, + 12532 - 11904: 0xC7F0, + 12533 - 11904: 0xC7F1, + 12534 - 11904: 0xC7F2, + 12540 - 11904: 0xC6E3, + 12541 - 11904: 0xC6DA, + 12542 - 11904: 0xC6DB, + 12549 - 11904: 0xA374, + 12550 - 11904: 0xA375, + 12551 - 11904: 0xA376, + 12552 - 11904: 0xA377, + 12553 - 11904: 0xA378, + 12554 - 11904: 0xA379, + 12555 - 11904: 0xA37A, + 12556 - 11904: 0xA37B, + 12557 - 11904: 0xA37C, + 12558 - 11904: 0xA37D, + 12559 - 11904: 0xA37E, + 12560 - 11904: 0xA3A1, + 12561 - 11904: 0xA3A2, + 12562 - 11904: 0xA3A3, + 12563 - 11904: 0xA3A4, + 12564 - 11904: 0xA3A5, + 12565 - 11904: 0xA3A6, + 12566 - 11904: 0xA3A7, + 12567 - 11904: 0xA3A8, + 12568 - 11904: 0xA3A9, + 12569 - 11904: 0xA3AA, + 12570 - 11904: 0xA3AB, + 12571 - 11904: 0xA3AC, + 12572 - 11904: 0xA3AD, + 12573 - 11904: 0xA3AE, + 12574 - 11904: 0xA3AF, + 12575 - 11904: 0xA3B0, + 12576 - 11904: 0xA3B1, + 12577 - 11904: 0xA3B2, + 12578 - 11904: 0xA3B3, + 12579 - 11904: 0xA3B4, + 12580 - 11904: 0xA3B5, + 12581 - 11904: 0xA3B6, + 12582 - 11904: 0xA3B7, + 12583 - 11904: 0xA3B8, + 12584 - 11904: 0xA3B9, + 12585 - 11904: 0xA3BA, + 12736 - 11904: 0x8840, + 12737 - 11904: 0x8841, + 12738 - 11904: 0x8842, + 12739 - 11904: 0x8843, + 12740 - 11904: 0x8844, + 12741 - 11904: 0x8846, + 12742 - 11904: 0x8849, + 12743 - 11904: 0x884A, + 12744 - 11904: 0x884D, + 12745 - 11904: 0x884F, + 12746 - 11904: 0x8850, + 12747 - 11904: 0x8851, + 12748 - 11904: 0x8852, + 12749 - 11904: 0x8854, + 12750 - 11904: 0x8855, + 12751 - 11904: 0xC879, + 12849 - 11904: 0xC8D1, + 12963 - 11904: 0xA1C0, + 13198 - 11904: 0xA255, + 13199 - 11904: 0xA256, + 13212 - 11904: 0xA250, + 13213 - 11904: 0xA251, + 13214 - 11904: 0xA252, + 13217 - 11904: 0xA254, + 13252 - 11904: 0xA257, + 13262 - 11904: 0xA253, + 13265 - 11904: 0xA1EB, + 13266 - 11904: 0xA1EA, + 13269 - 11904: 0xA24F, + 13365 - 11904: 0x9277, + 13376 - 11904: 0x96DF, + 13386 - 11904: 0x8CF4, + 13388 - 11904: 0x89D5, + 13412 - 11904: 0x93CD, + 13427 - 11904: 0x9BDF, + 13434 - 11904: 0xFA68, + 13437 - 11904: 0x89DA, + 13438 - 11904: 0x8F59, + 13459 - 11904: 0x89DB, + 13462 - 11904: 0x8F5D, + 13477 - 11904: 0x89DC, + 13487 - 11904: 0x96F7, + 13500 - 11904: 0x8ADA, + 13505 - 11904: 0x8BDC, + 13512 - 11904: 0x97DB, + 13535 - 11904: 0x9E53, + 13540 - 11904: 0x9DAA, + 13542 - 11904: 0x87BE, + 13563 - 11904: 0x9BEA, + 13574 - 11904: 0x8A6E, + 13630 - 11904: 0x8BC8, + 13649 - 11904: 0x89E8, + 13651 - 11904: 0x89EA, + 13657 - 11904: 0x8C4B, + 13665 - 11904: 0xFB70, + 13677 - 11904: 0x89ED, + 13680 - 11904: 0x94DD, + 13682 - 11904: 0x89EE, + 13687 - 11904: 0x9EB4, + 13688 - 11904: 0x8AD3, + 13700 - 11904: 0x92DB, + 13719 - 11904: 0x94DB, + 13720 - 11904: 0x89F9, + 13729 - 11904: 0xFB7A, + 13733 - 11904: 0x89FB, + 13741 - 11904: 0x9EFC, + 13759 - 11904: 0x89FC, + 13761 - 11904: 0x89BF, + 13765 - 11904: 0x89FE, + 13767 - 11904: 0x89E6, + 13770 - 11904: 0x9D46, + 13774 - 11904: 0x9DEE, + 13778 - 11904: 0xA07E, + 13782 - 11904: 0xA068, + 13787 - 11904: 0x98E9, + 13789 - 11904: 0x8B68, + 13809 - 11904: 0x8DFD, + 13810 - 11904: 0x8BBE, + 13811 - 11904: 0x9FD9, + 13819 - 11904: 0x8AEB, + 13822 - 11904: 0x9FD7, + 13833 - 11904: 0x8B6A, + 13848 - 11904: 0x9C5C, + 13850 - 11904: 0x8BB1, + 13859 - 11904: 0xFB5E, + 13861 - 11904: 0x8770, + 13869 - 11904: 0x9DF3, + 13877 - 11904: 0xA0D0, + 13881 - 11904: 0xFC66, + 13886 - 11904: 0x92E9, + 13895 - 11904: 0x9AEC, + 13896 - 11904: 0x8FAB, + 13897 - 11904: 0xFA48, + 13902 - 11904: 0x8E45, + 13919 - 11904: 0x9C6F, + 13921 - 11904: 0x8D5C, + 13946 - 11904: 0x9EDE, + 13953 - 11904: 0x89EF, + 13978 - 11904: 0x96E9, + 13989 - 11904: 0x9EBB, + 13994 - 11904: 0x94DE, + 13996 - 11904: 0x9EB8, + 14000 - 11904: 0x97BA, + 14001 - 11904: 0xFB65, + 14005 - 11904: 0x95D6, + 14009 - 11904: 0x9CBB, + 14012 - 11904: 0x97DA, + 14017 - 11904: 0x8F45, + 14019 - 11904: 0xFB7D, + 14020 - 11904: 0x9158, + 14021 - 11904: 0xFE64, + 14023 - 11904: 0x9856, + 14024 - 11904: 0x9B4D, + 14035 - 11904: 0x935B, + 14036 - 11904: 0x95C7, + 14038 - 11904: 0x97E7, + 14045 - 11904: 0x9359, + 14049 - 11904: 0x91F5, + 14050 - 11904: 0x97B8, + 14053 - 11904: 0xFDA2, + 14054 - 11904: 0xFBB6, + 14069 - 11904: 0x92FA, + 14081 - 11904: 0x9357, + 14083 - 11904: 0x8BA6, + 14088 - 11904: 0xFBB9, + 14090 - 11904: 0x97B0, + 14093 - 11904: 0xFDC4, + 14108 - 11904: 0x9CA1, + 14114 - 11904: 0x91F2, + 14115 - 11904: 0x91F9, + 14117 - 11904: 0x8FF1, + 14124 - 11904: 0x9745, + 14125 - 11904: 0x9853, + 14128 - 11904: 0xFE78, + 14130 - 11904: 0xFBC1, + 14131 - 11904: 0x9251, + 14138 - 11904: 0x9DAD, + 14144 - 11904: 0xFD6C, + 14147 - 11904: 0xFA6B, + 14178 - 11904: 0x9BC2, + 14191 - 11904: 0x9A7B, + 14231 - 11904: 0x8B60, + 14240 - 11904: 0x934B, + 14265 - 11904: 0x9ABD, + 14270 - 11904: 0x91B7, + 14294 - 11904: 0x8D4B, + 14322 - 11904: 0x95B4, + 14328 - 11904: 0xFEC5, + 14331 - 11904: 0x9EF0, + 14351 - 11904: 0x8D64, + 14361 - 11904: 0x9269, + 14368 - 11904: 0x8D67, + 14381 - 11904: 0xFBEA, + 14390 - 11904: 0xFBEF, + 14392 - 11904: 0x8D68, + 14435 - 11904: 0x93EB, + 14453 - 11904: 0x877A, + 14496 - 11904: 0xFC42, + 14531 - 11904: 0x9166, + 14540 - 11904: 0xFACD, + 14545 - 11904: 0x93DD, + 14548 - 11904: 0x8D52, + 14586 - 11904: 0x8BCC, + 14600 - 11904: 0x8D6D, + 14612 - 11904: 0x8D6E, + 14631 - 11904: 0x96A8, + 14642 - 11904: 0xFCA6, + 14655 - 11904: 0x8D6F, + 14669 - 11904: 0x8D70, + 14691 - 11904: 0xFC64, + 14712 - 11904: 0x8CF3, + 14720 - 11904: 0x9060, + 14729 - 11904: 0x8D74, + 14730 - 11904: 0x97C3, + 14738 - 11904: 0x8AD0, + 14745 - 11904: 0x9274, + 14747 - 11904: 0x9BBE, + 14753 - 11904: 0x9CC8, + 14756 - 11904: 0x9CBA, + 14776 - 11904: 0x8D78, + 14812 - 11904: 0x9EB9, + 14818 - 11904: 0x955A, + 14821 - 11904: 0x91B4, + 14828 - 11904: 0x8A48, + 14840 - 11904: 0x8D7D, + 14843 - 11904: 0x8A7D, + 14846 - 11904: 0x8AC2, + 14849 - 11904: 0xFD4A, + 14851 - 11904: 0x8DA1, + 14854 - 11904: 0x8AD1, + 14871 - 11904: 0xFCB4, + 14872 - 11904: 0x8B47, + 14889 - 11904: 0x93A4, + 14890 - 11904: 0x9EDA, + 14900 - 11904: 0x8A51, + 14923 - 11904: 0x8DA6, + 14930 - 11904: 0x9EC5, + 14935 - 11904: 0xFCC4, + 14940 - 11904: 0xA078, + 14942 - 11904: 0x94B5, + 14950 - 11904: 0xFCC2, + 14951 - 11904: 0x8A6B, + 14999 - 11904: 0x8DAB, + 15019 - 11904: 0xFAE8, + 15037 - 11904: 0x8DAD, + 15070 - 11904: 0xFC49, + 15072 - 11904: 0x93C1, + 15088 - 11904: 0x906F, + 15090 - 11904: 0x8DB0, + 15093 - 11904: 0x87A2, + 15099 - 11904: 0x947E, + 15118 - 11904: 0x90FA, + 15129 - 11904: 0x9479, + 15138 - 11904: 0x8DB2, + 15147 - 11904: 0xFCEE, + 15161 - 11904: 0x997B, + 15170 - 11904: 0x8DB4, + 15192 - 11904: 0x8DB7, + 15200 - 11904: 0x91B3, + 15217 - 11904: 0x8DBB, + 15218 - 11904: 0x8DBA, + 15227 - 11904: 0x8DBC, + 15228 - 11904: 0x9044, + 15232 - 11904: 0xFD4C, + 15253 - 11904: 0x874B, + 15254 - 11904: 0x93E4, + 15257 - 11904: 0x93E0, + 15265 - 11904: 0xFD53, + 15292 - 11904: 0x8DC3, + 15294 - 11904: 0x9BB8, + 15298 - 11904: 0xFBF0, + 15300 - 11904: 0x93E9, + 15319 - 11904: 0x93F6, + 15325 - 11904: 0x8DC5, + 15340 - 11904: 0x8DCA, + 15346 - 11904: 0x8DCC, + 15347 - 11904: 0xFD5D, + 15348 - 11904: 0x93B5, + 15373 - 11904: 0xFD61, + 15377 - 11904: 0x9CF8, + 15381 - 11904: 0x9252, + 15384 - 11904: 0xA0E8, + 15444 - 11904: 0x9CA5, + 15499 - 11904: 0x8C56, + 15563 - 11904: 0x8DD6, + 15565 - 11904: 0x97C0, + 15569 - 11904: 0xA0DE, + 15574 - 11904: 0x97D2, + 15580 - 11904: 0xFAA5, + 15595 - 11904: 0xFDA3, + 15599 - 11904: 0x8DDB, + 15634 - 11904: 0x8CEA, + 15635 - 11904: 0x8EAF, + 15645 - 11904: 0x91B5, + 15666 - 11904: 0xFD49, + 15675 - 11904: 0xFDD1, + 15686 - 11904: 0x8DEB, + 15692 - 11904: 0x97C6, + 15694 - 11904: 0xFDCE, + 15697 - 11904: 0x90FC, + 15711 - 11904: 0xFC59, + 15714 - 11904: 0x96D6, + 15721 - 11904: 0x97C5, + 15722 - 11904: 0x8DEF, + 15727 - 11904: 0x97D7, + 15733 - 11904: 0x8DF0, + 15741 - 11904: 0x96A6, + 15749 - 11904: 0xFBBF, + 15752 - 11904: 0x8CDF, + 15754 - 11904: 0x8DF3, + 15759 - 11904: 0x9449, + 15761 - 11904: 0x8DF5, + 15781 - 11904: 0x9872, + 15789 - 11904: 0x8E6B, + 15796 - 11904: 0xFAFD, + 15807 - 11904: 0x8F50, + 15814 - 11904: 0x9DCC, + 15815 - 11904: 0xFC65, + 15817 - 11904: 0x8C44, + 15820 - 11904: 0x996E, + 15821 - 11904: 0x94A1, + 15827 - 11904: 0x8F63, + 15835 - 11904: 0xA0DA, + 15847 - 11904: 0x9253, + 15848 - 11904: 0xFDE9, + 15851 - 11904: 0x9DB5, + 15859 - 11904: 0x9879, + 15860 - 11904: 0x876A, + 15863 - 11904: 0x9D5D, + 15868 - 11904: 0x8D63, + 15869 - 11904: 0x9669, + 15878 - 11904: 0x9F70, + 15936 - 11904: 0xFC6A, + 15939 - 11904: 0x8AC7, + 15944 - 11904: 0x89D7, + 15957 - 11904: 0xFE4D, + 15988 - 11904: 0x9EDD, + 16040 - 11904: 0xFEFB, + 16041 - 11904: 0x98BC, + 16042 - 11904: 0xFACC, + 16045 - 11904: 0x95B0, + 16049 - 11904: 0x9464, + 16056 - 11904: 0x936F, + 16063 - 11904: 0x94B9, + 16066 - 11904: 0x95EC, + 16071 - 11904: 0x91EE, + 16074 - 11904: 0x98C3, + 16076 - 11904: 0x95F6, + 16080 - 11904: 0x8FFD, + 16081 - 11904: 0x98C5, + 16086 - 11904: 0x9766, + 16087 - 11904: 0xFE6E, + 16090 - 11904: 0x97DD, + 16091 - 11904: 0x8CAA, + 16094 - 11904: 0x92D2, + 16097 - 11904: 0x9761, + 16098 - 11904: 0x98CB, + 16103 - 11904: 0x95F0, + 16105 - 11904: 0x975D, + 16107 - 11904: 0x91E3, + 16108 - 11904: 0x877E, + 16112 - 11904: 0x98CC, + 16115 - 11904: 0x9469, + 16116 - 11904: 0x98CD, + 16122 - 11904: 0x98CE, + 16124 - 11904: 0x95FC, + 16127 - 11904: 0x94A3, + 16128 - 11904: 0x9662, + 16132 - 11904: 0xFEB6, + 16134 - 11904: 0x9463, + 16135 - 11904: 0x8D47, + 16142 - 11904: 0x98D0, + 16211 - 11904: 0x98D1, + 16216 - 11904: 0x9475, + 16217 - 11904: 0xFAE0, + 16227 - 11904: 0x9472, + 16252 - 11904: 0x98D6, + 16275 - 11904: 0x8AF0, + 16320 - 11904: 0x98D9, + 16328 - 11904: 0x8D5A, + 16343 - 11904: 0x98DB, + 16348 - 11904: 0x98DD, + 16357 - 11904: 0x98A8, + 16365 - 11904: 0x8A6D, + 16377 - 11904: 0x8AFB, + 16378 - 11904: 0x8AAE, + 16388 - 11904: 0xFBC9, + 16393 - 11904: 0x8C5D, + 16413 - 11904: 0x98E4, + 16441 - 11904: 0x98E6, + 16453 - 11904: 0x98E8, + 16467 - 11904: 0x8A4D, + 16471 - 11904: 0x9257, + 16482 - 11904: 0x95DF, + 16485 - 11904: 0xA0AC, + 16490 - 11904: 0x98EB, + 16495 - 11904: 0x98EC, + 16497 - 11904: 0x8CC3, + 16552 - 11904: 0x98F4, + 16564 - 11904: 0x87D9, + 16571 - 11904: 0x8AB8, + 16575 - 11904: 0x9EE7, + 16584 - 11904: 0x94BC, + 16600 - 11904: 0xFCD1, + 16607 - 11904: 0x9CC6, + 16632 - 11904: 0x8D4A, + 16634 - 11904: 0x9E7E, + 16642 - 11904: 0x8D44, + 16643 - 11904: 0x98FE, + 16644 - 11904: 0xFDE8, + 16649 - 11904: 0x9940, + 16654 - 11904: 0x94C9, + 16689 - 11904: 0x87C6, + 16690 - 11904: 0x94D3, + 16743 - 11904: 0x9946, + 16748 - 11904: 0x90C0, + 16750 - 11904: 0x94D1, + 16764 - 11904: 0x8D4E, + 16767 - 11904: 0x9573, + 16769 - 11904: 0x87CE, + 16784 - 11904: 0x93C2, + 16818 - 11904: 0x9948, + 16836 - 11904: 0x994B, + 16842 - 11904: 0x8E55, + 16847 - 11904: 0x994E, + 16859 - 11904: 0x8EFE, + 16877 - 11904: 0x8D5F, + 16879 - 11904: 0x8E59, + 16889 - 11904: 0x94EC, + 16913 - 11904: 0x94EF, + 16931 - 11904: 0x8C60, + 16960 - 11904: 0x8F74, + 16992 - 11904: 0x9955, + 17002 - 11904: 0x9544, + 17014 - 11904: 0x8CCB, + 17018 - 11904: 0x9956, + 17036 - 11904: 0x9959, + 17044 - 11904: 0x995B, + 17058 - 11904: 0x8CC4, + 17077 - 11904: 0xFA45, + 17081 - 11904: 0x90B7, + 17084 - 11904: 0x9743, + 17140 - 11904: 0x95CD, + 17147 - 11904: 0x97C9, + 17148 - 11904: 0xFD50, + 17162 - 11904: 0x87AA, + 17195 - 11904: 0x8EB9, + 17262 - 11904: 0x95C6, + 17303 - 11904: 0x9967, + 17306 - 11904: 0x8CE3, + 17338 - 11904: 0x8AB9, + 17345 - 11904: 0x8DFC, + 17369 - 11904: 0x8A76, + 17375 - 11904: 0x9D51, + 17389 - 11904: 0x9973, + 17392 - 11904: 0x8740, + 17394 - 11904: 0x9D4F, + 17409 - 11904: 0x997A, + 17410 - 11904: 0x9564, + 17427 - 11904: 0x99A1, + 17445 - 11904: 0x99A5, + 17453 - 11904: 0x99A7, + 17530 - 11904: 0x8EED, + 17551 - 11904: 0x99AD, + 17553 - 11904: 0xC87E, + 17567 - 11904: 0x946E, + 17568 - 11904: 0x8F70, + 17570 - 11904: 0xFAD0, + 17584 - 11904: 0x99B3, + 17591 - 11904: 0xA053, + 17597 - 11904: 0x8D5E, + 17600 - 11904: 0x965C, + 17603 - 11904: 0x8CE0, + 17605 - 11904: 0xFD7A, + 17614 - 11904: 0x97FE, + 17629 - 11904: 0x92BD, + 17630 - 11904: 0x8D5D, + 17631 - 11904: 0x97FD, + 17633 - 11904: 0x87DB, + 17636 - 11904: 0x8F64, + 17641 - 11904: 0xFCF7, + 17642 - 11904: 0x9562, + 17643 - 11904: 0x97CD, + 17644 - 11904: 0x9E64, + 17652 - 11904: 0x924C, + 17667 - 11904: 0x8EC9, + 17668 - 11904: 0x99BC, + 17673 - 11904: 0x9DA5, + 17675 - 11904: 0x8F54, + 17686 - 11904: 0x8F7C, + 17691 - 11904: 0x8D55, + 17693 - 11904: 0x8EA2, + 17703 - 11904: 0x8F7A, + 17710 - 11904: 0x97AE, + 17715 - 11904: 0x96C8, + 17718 - 11904: 0x8CE4, + 17723 - 11904: 0x99C3, + 17725 - 11904: 0x90D6, + 17727 - 11904: 0x9CBE, + 17731 - 11904: 0x8F76, + 17745 - 11904: 0x9470, + 17746 - 11904: 0xFB4B, + 17749 - 11904: 0xFDCA, + 17752 - 11904: 0x8CEF, + 17756 - 11904: 0x8EC7, + 17761 - 11904: 0x8D54, + 17762 - 11904: 0xA0F9, + 17770 - 11904: 0x8FA9, + 17773 - 11904: 0x8D51, + 17783 - 11904: 0x99C7, + 17784 - 11904: 0x8744, + 17797 - 11904: 0x90D7, + 17830 - 11904: 0x8743, + 17843 - 11904: 0x8747, + 17882 - 11904: 0x8758, + 17897 - 11904: 0x9EDF, + 17898 - 11904: 0x8D59, + 17923 - 11904: 0x8742, + 17926 - 11904: 0x99CE, + 17935 - 11904: 0x8FBA, + 17941 - 11904: 0x8FEB, + 17943 - 11904: 0x99CF, + 18011 - 11904: 0x8FC2, + 18042 - 11904: 0x92C9, + 18048 - 11904: 0x97DC, + 18081 - 11904: 0x875D, + 18094 - 11904: 0x87CC, + 18107 - 11904: 0x8D45, + 18127 - 11904: 0x95B3, + 18128 - 11904: 0x9C79, + 18165 - 11904: 0x95B2, + 18167 - 11904: 0x8D4C, + 18195 - 11904: 0x8FDB, + 18200 - 11904: 0x9BE3, + 18230 - 11904: 0x874C, + 18244 - 11904: 0x874D, + 18254 - 11904: 0x9E7A, + 18255 - 11904: 0x8757, + 18300 - 11904: 0x9BEE, + 18328 - 11904: 0x99DE, + 18342 - 11904: 0xFAFA, + 18389 - 11904: 0x8A52, + 18413 - 11904: 0x99E1, + 18420 - 11904: 0x8A67, + 18432 - 11904: 0x8BB5, + 18443 - 11904: 0x8AAC, + 18487 - 11904: 0x99E9, + 18525 - 11904: 0xFBCA, + 18545 - 11904: 0x97DE, + 18587 - 11904: 0x95D1, + 18605 - 11904: 0x99F5, + 18606 - 11904: 0xFC4A, + 18640 - 11904: 0x9BA9, + 18653 - 11904: 0xFBDC, + 18669 - 11904: 0xFE56, + 18675 - 11904: 0x9EA4, + 18682 - 11904: 0x9D49, + 18694 - 11904: 0x95DB, + 18705 - 11904: 0x89C5, + 18718 - 11904: 0x99F8, + 18725 - 11904: 0x9664, + 18730 - 11904: 0x9055, + 18733 - 11904: 0x96D4, + 18735 - 11904: 0x87C4, + 18736 - 11904: 0x87AE, + 18741 - 11904: 0x977C, + 18748 - 11904: 0x964D, + 18750 - 11904: 0x97E1, + 18757 - 11904: 0x9A48, + 18769 - 11904: 0x9A49, + 18771 - 11904: 0xFE7D, + 18789 - 11904: 0x90AA, + 18794 - 11904: 0x9A50, + 18802 - 11904: 0x9347, + 18825 - 11904: 0x8ED8, + 18849 - 11904: 0x90C9, + 18855 - 11904: 0x9A55, + 18911 - 11904: 0x90BC, + 18917 - 11904: 0x9A58, + 18919 - 11904: 0x8BB8, + 18959 - 11904: 0x90D5, + 18973 - 11904: 0x9641, + 18980 - 11904: 0x9A5A, + 18997 - 11904: 0x9A5C, + 19094 - 11904: 0x97C2, + 19108 - 11904: 0x875C, + 19124 - 11904: 0x8ABB, + 19128 - 11904: 0x9BAA, + 19153 - 11904: 0x90F5, + 19172 - 11904: 0x9A60, + 19199 - 11904: 0x9145, + 19216 - 11904: 0x8C58, + 19225 - 11904: 0x9A63, + 19232 - 11904: 0x8C49, + 19244 - 11904: 0x8BB6, + 19255 - 11904: 0xFCCF, + 19311 - 11904: 0x966B, + 19312 - 11904: 0x9A6E, + 19314 - 11904: 0x914F, + 19323 - 11904: 0x9746, + 19326 - 11904: 0xA0E6, + 19342 - 11904: 0x92D7, + 19344 - 11904: 0x9675, + 19347 - 11904: 0x93D4, + 19350 - 11904: 0x91BB, + 19351 - 11904: 0x9679, + 19357 - 11904: 0x9A70, + 19389 - 11904: 0x9678, + 19390 - 11904: 0x91CD, + 19392 - 11904: 0x9C4A, + 19460 - 11904: 0xA06F, + 19463 - 11904: 0xA06A, + 19470 - 11904: 0x915F, + 19506 - 11904: 0x8741, + 19515 - 11904: 0x9FA5, + 19518 - 11904: 0x89BA, + 19520 - 11904: 0x874F, + 19527 - 11904: 0x874E, + 19543 - 11904: 0x8755, + 19547 - 11904: 0x9ECD, + 19565 - 11904: 0x9A79, + 19575 - 11904: 0x8CF2, + 19579 - 11904: 0x8D57, + 19581 - 11904: 0x9DCE, + 19585 - 11904: 0x8CD2, + 19589 - 11904: 0x8759, + 19620 - 11904: 0x9D73, + 19630 - 11904: 0x96B9, + 19632 - 11904: 0x96BC, + 19639 - 11904: 0x9CD1, + 19661 - 11904: 0x89B7, + 19681 - 11904: 0x9EEE, + 19682 - 11904: 0x8749, + 19693 - 11904: 0xFB43, + 19719 - 11904: 0x875B, + 19721 - 11904: 0x9EC9, + 19728 - 11904: 0xFBD3, + 19764 - 11904: 0x91AE, + 19830 - 11904: 0x8D58, + 19831 - 11904: 0x8746, + 19849 - 11904: 0x8D56, + 19857 - 11904: 0x9D78, + 19868 - 11904: 0x9D7B, + 19968 - 11904: 0xA440, + 19969 - 11904: 0xA442, + 19971 - 11904: 0xA443, + 19972 - 11904: 0x9EB3, + 19975 - 11904: 0xC945, + 19976 - 11904: 0xA456, + 19977 - 11904: 0xA454, + 19978 - 11904: 0xA457, + 19979 - 11904: 0xA455, + 19980 - 11904: 0xC946, + 19981 - 11904: 0xA4A3, + 19982 - 11904: 0xC94F, + 19983 - 11904: 0xC94D, + 19984 - 11904: 0xA4A2, + 19985 - 11904: 0xA4A1, + 19988 - 11904: 0xA542, + 19989 - 11904: 0xA541, + 19990 - 11904: 0xA540, + 19992 - 11904: 0xA543, + 19993 - 11904: 0xA4FE, + 19994 - 11904: 0x9EB2, + 19996 - 11904: 0x9DD6, + 19998 - 11904: 0xA5E0, + 19999 - 11904: 0xA5E1, + 20001 - 11904: 0x994F, + 20004 - 11904: 0x89CE, + 20006 - 11904: 0xA8C3, + 20008 - 11904: 0x8BC0, + 20010 - 11904: 0x9FC4, + 20011 - 11904: 0xA458, + 20012 - 11904: 0x8BD4, + 20013 - 11904: 0xA4A4, + 20014 - 11904: 0xC950, + 20015 - 11904: 0x8C72, + 20016 - 11904: 0xA4A5, + 20017 - 11904: 0xC963, + 20018 - 11904: 0xA6EA, + 20019 - 11904: 0xCBB1, + 20022 - 11904: 0xC6BF, + 20023 - 11904: 0x8BF9, + 20024 - 11904: 0xA459, + 20025 - 11904: 0xA4A6, + 20027 - 11904: 0xA544, + 20028 - 11904: 0xC964, + 20029 - 11904: 0x8946, + 20031 - 11904: 0xC6C0, + 20034 - 11904: 0xC940, + 20035 - 11904: 0xA444, + 20037 - 11904: 0xA45B, + 20039 - 11904: 0xC947, + 20040 - 11904: 0xA45C, + 20041 - 11904: 0xFAE5, + 20043 - 11904: 0xA4A7, + 20045 - 11904: 0xA545, + 20046 - 11904: 0xA547, + 20047 - 11904: 0xA546, + 20050 - 11904: 0xA5E2, + 20051 - 11904: 0xA5E3, + 20054 - 11904: 0xA8C4, + 20056 - 11904: 0xADBC, + 20057 - 11904: 0xA441, + 20058 - 11904: 0xC87B, + 20059 - 11904: 0x8BC6, + 20060 - 11904: 0xC941, + 20061 - 11904: 0xA445, + 20062 - 11904: 0xA45E, + 20063 - 11904: 0xA45D, + 20073 - 11904: 0xA5E4, + 20074 - 11904: 0x9C57, + 20083 - 11904: 0xA8C5, + 20088 - 11904: 0x9AFB, + 20094 - 11904: 0xB0AE, + 20095 - 11904: 0xD44B, + 20096 - 11904: 0x89D0, + 20097 - 11904: 0x89CF, + 20098 - 11904: 0xB6C3, + 20099 - 11904: 0xDCB1, + 20100 - 11904: 0xDCB2, + 20101 - 11904: 0xC6C1, + 20102 - 11904: 0xA446, + 20103 - 11904: 0x89D1, + 20104 - 11904: 0xA4A9, + 20105 - 11904: 0x89E2, + 20107 - 11904: 0xA8C6, + 20108 - 11904: 0xA447, + 20109 - 11904: 0xC948, + 20110 - 11904: 0xA45F, + 20113 - 11904: 0xA4AA, + 20114 - 11904: 0xA4AC, + 20115 - 11904: 0xC951, + 20116 - 11904: 0xA4AD, + 20117 - 11904: 0xA4AB, + 20120 - 11904: 0x927E, + 20121 - 11904: 0xA5E5, + 20122 - 11904: 0x9DBA, + 20123 - 11904: 0xA8C7, + 20126 - 11904: 0xA8C8, + 20127 - 11904: 0xAB45, + 20128 - 11904: 0xC6C2, + 20129 - 11904: 0xA460, + 20130 - 11904: 0xA4AE, + 20131 - 11904: 0x8C6F, + 20132 - 11904: 0xA5E6, + 20133 - 11904: 0xA5E8, + 20134 - 11904: 0xA5E7, + 20136 - 11904: 0xA6EB, + 20139 - 11904: 0xA8C9, + 20140 - 11904: 0xA8CA, + 20141 - 11904: 0xAB46, + 20142 - 11904: 0xAB47, + 20147 - 11904: 0xADBD, + 20150 - 11904: 0xDCB3, + 20151 - 11904: 0xFBF8, + 20153 - 11904: 0xF6D6, + 20154 - 11904: 0xA448, + 20155 - 11904: 0x8BC7, + 20156 - 11904: 0x926B, + 20159 - 11904: 0x89D2, + 20160 - 11904: 0xA4B0, + 20161 - 11904: 0xA4AF, + 20162 - 11904: 0xC952, + 20163 - 11904: 0xA4B1, + 20164 - 11904: 0xA4B7, + 20166 - 11904: 0xA4B2, + 20167 - 11904: 0xA4B3, + 20168 - 11904: 0xC954, + 20169 - 11904: 0xC953, + 20170 - 11904: 0xA4B5, + 20171 - 11904: 0xA4B6, + 20173 - 11904: 0xA4B4, + 20174 - 11904: 0x9FCF, + 20180 - 11904: 0xA54A, + 20181 - 11904: 0xA54B, + 20182 - 11904: 0xA54C, + 20183 - 11904: 0xA54D, + 20184 - 11904: 0xA549, + 20185 - 11904: 0xA550, + 20186 - 11904: 0xC96A, + 20188 - 11904: 0xC966, + 20189 - 11904: 0xC969, + 20190 - 11904: 0xA551, + 20191 - 11904: 0xA561, + 20193 - 11904: 0xC968, + 20195 - 11904: 0xA54E, + 20196 - 11904: 0xA54F, + 20197 - 11904: 0xA548, + 20200 - 11904: 0xC965, + 20201 - 11904: 0xC967, + 20202 - 11904: 0x9DA9, + 20203 - 11904: 0x89D3, + 20206 - 11904: 0x99E2, + 20208 - 11904: 0xA5F5, + 20209 - 11904: 0xC9B0, + 20210 - 11904: 0xA5F2, + 20211 - 11904: 0xA5F6, + 20212 - 11904: 0xC9BA, + 20213 - 11904: 0xC9AE, + 20214 - 11904: 0xA5F3, + 20215 - 11904: 0xC9B2, + 20216 - 11904: 0x9267, + 20219 - 11904: 0xA5F4, + 20221 - 11904: 0xA5F7, + 20223 - 11904: 0xA5E9, + 20224 - 11904: 0xC9B1, + 20225 - 11904: 0xA5F8, + 20226 - 11904: 0xC9B5, + 20227 - 11904: 0x92A4, + 20228 - 11904: 0xC9B9, + 20229 - 11904: 0xC9B6, + 20232 - 11904: 0xC9B3, + 20233 - 11904: 0xA5EA, + 20234 - 11904: 0xA5EC, + 20235 - 11904: 0xA5F9, + 20237 - 11904: 0xA5EE, + 20238 - 11904: 0xC9AB, + 20239 - 11904: 0xA5F1, + 20240 - 11904: 0xA5EF, + 20241 - 11904: 0xA5F0, + 20242 - 11904: 0xC9BB, + 20243 - 11904: 0xC9B8, + 20244 - 11904: 0xC9AF, + 20245 - 11904: 0xA5ED, + 20247 - 11904: 0x8C73, + 20248 - 11904: 0xC9AC, + 20249 - 11904: 0xA5EB, + 20250 - 11904: 0x894E, + 20253 - 11904: 0xC9B4, + 20258 - 11904: 0xC9B7, + 20264 - 11904: 0x894F, + 20265 - 11904: 0x9278, + 20268 - 11904: 0xC9AD, + 20269 - 11904: 0xCA66, + 20271 - 11904: 0xA742, + 20272 - 11904: 0xA6F4, + 20274 - 11904: 0x91B6, + 20275 - 11904: 0xCA67, + 20276 - 11904: 0xA6F1, + 20278 - 11904: 0xA744, + 20279 - 11904: 0x89D4, + 20280 - 11904: 0xA6F9, + 20281 - 11904: 0x9FD2, + 20282 - 11904: 0xA6F8, + 20283 - 11904: 0xCA5B, + 20284 - 11904: 0xA6FC, + 20285 - 11904: 0xA6F7, + 20286 - 11904: 0xCA60, + 20287 - 11904: 0xCA68, + 20289 - 11904: 0xCA64, + 20290 - 11904: 0x92A7, + 20291 - 11904: 0xA6FA, + 20293 - 11904: 0x95A2, + 20294 - 11904: 0xA6FD, + 20295 - 11904: 0xA6EE, + 20296 - 11904: 0xA747, + 20297 - 11904: 0xCA5D, + 20299 - 11904: 0x926E, + 20300 - 11904: 0xCBBD, + 20301 - 11904: 0xA6EC, + 20302 - 11904: 0xA743, + 20303 - 11904: 0xA6ED, + 20304 - 11904: 0xA6F5, + 20305 - 11904: 0xA6F6, + 20306 - 11904: 0xCA62, + 20307 - 11904: 0xCA5E, + 20308 - 11904: 0xA6FB, + 20309 - 11904: 0xA6F3, + 20310 - 11904: 0xCA5A, + 20311 - 11904: 0xA6EF, + 20312 - 11904: 0xCA65, + 20313 - 11904: 0xA745, + 20314 - 11904: 0xA748, + 20315 - 11904: 0xA6F2, + 20316 - 11904: 0xA740, + 20317 - 11904: 0xA746, + 20318 - 11904: 0xA6F0, + 20319 - 11904: 0xCA63, + 20320 - 11904: 0xA741, + 20321 - 11904: 0xCA69, + 20322 - 11904: 0xCA5C, + 20323 - 11904: 0xA6FE, + 20324 - 11904: 0xCA5F, + 20327 - 11904: 0xCA61, + 20329 - 11904: 0xA8D8, + 20330 - 11904: 0xCBBF, + 20331 - 11904: 0xCBCB, + 20332 - 11904: 0xA8D0, + 20334 - 11904: 0xCBCC, + 20335 - 11904: 0xA8CB, + 20336 - 11904: 0xA8D5, + 20338 - 11904: 0x96EA, + 20339 - 11904: 0xA8CE, + 20340 - 11904: 0xCBB9, + 20341 - 11904: 0xA8D6, + 20342 - 11904: 0xCBB8, + 20343 - 11904: 0xCBBC, + 20344 - 11904: 0xCBC3, + 20345 - 11904: 0xCBC1, + 20346 - 11904: 0xA8DE, + 20347 - 11904: 0xA8D9, + 20348 - 11904: 0xCBB3, + 20349 - 11904: 0xCBB5, + 20350 - 11904: 0xA8DB, + 20351 - 11904: 0xA8CF, + 20352 - 11904: 0xCBB6, + 20353 - 11904: 0xCBC2, + 20354 - 11904: 0xCBC9, + 20355 - 11904: 0xA8D4, + 20356 - 11904: 0xCBBB, + 20357 - 11904: 0xCBB4, + 20358 - 11904: 0xA8D3, + 20359 - 11904: 0xCBB7, + 20360 - 11904: 0xA8D7, + 20361 - 11904: 0xCBBA, + 20362 - 11904: 0x926F, + 20363 - 11904: 0xA8D2, + 20365 - 11904: 0xA8CD, + 20367 - 11904: 0xA8DC, + 20368 - 11904: 0xCBC4, + 20369 - 11904: 0xA8DD, + 20370 - 11904: 0xCBC8, + 20372 - 11904: 0xCBC6, + 20373 - 11904: 0xCBCA, + 20374 - 11904: 0xA8DA, + 20375 - 11904: 0xCBBE, + 20376 - 11904: 0xCBB2, + 20378 - 11904: 0xCBC0, + 20379 - 11904: 0xA8D1, + 20380 - 11904: 0xCBC5, + 20381 - 11904: 0xA8CC, + 20382 - 11904: 0xCBC7, + 20386 - 11904: 0x92A3, + 20392 - 11904: 0x8950, + 20395 - 11904: 0xFA57, + 20398 - 11904: 0xAB56, + 20399 - 11904: 0xAB4A, + 20400 - 11904: 0x9866, + 20402 - 11904: 0xCDE0, + 20403 - 11904: 0xCDE8, + 20404 - 11904: 0x8CF8, + 20405 - 11904: 0xAB49, + 20406 - 11904: 0xAB51, + 20407 - 11904: 0xAB5D, + 20409 - 11904: 0xCDEE, + 20410 - 11904: 0xCDEC, + 20411 - 11904: 0xCDE7, + 20413 - 11904: 0x89D6, + 20415 - 11904: 0xAB4B, + 20416 - 11904: 0xCDED, + 20417 - 11904: 0xCDE3, + 20418 - 11904: 0xAB59, + 20419 - 11904: 0xAB50, + 20420 - 11904: 0xAB58, + 20421 - 11904: 0xCDDE, + 20423 - 11904: 0xCDEA, + 20424 - 11904: 0x98B2, + 20425 - 11904: 0xCDE1, + 20426 - 11904: 0xAB54, + 20427 - 11904: 0xCDE2, + 20428 - 11904: 0x92AB, + 20429 - 11904: 0xCDDD, + 20430 - 11904: 0xAB5B, + 20431 - 11904: 0xAB4E, + 20432 - 11904: 0xAB57, + 20433 - 11904: 0xAB4D, + 20435 - 11904: 0xCDDF, + 20436 - 11904: 0xCDE4, + 20438 - 11904: 0xCDEB, + 20439 - 11904: 0xAB55, + 20440 - 11904: 0xAB52, + 20441 - 11904: 0xCDE6, + 20442 - 11904: 0xAB5A, + 20443 - 11904: 0xCDE9, + 20444 - 11904: 0xCDE5, + 20445 - 11904: 0xAB4F, + 20446 - 11904: 0xAB5C, + 20447 - 11904: 0xAB53, + 20448 - 11904: 0xAB4C, + 20449 - 11904: 0xAB48, + 20452 - 11904: 0x96DE, + 20453 - 11904: 0x92AC, + 20460 - 11904: 0xCDEF, + 20462 - 11904: 0xADD7, + 20463 - 11904: 0xADC1, + 20464 - 11904: 0x8C70, + 20465 - 11904: 0xADD1, + 20466 - 11904: 0x9F6E, + 20467 - 11904: 0xADD6, + 20468 - 11904: 0xD0D0, + 20469 - 11904: 0xD0CF, + 20470 - 11904: 0xD0D4, + 20471 - 11904: 0xD0D5, + 20472 - 11904: 0xADC4, + 20473 - 11904: 0x8EF2, + 20474 - 11904: 0xADCD, + 20477 - 11904: 0x9F6C, + 20478 - 11904: 0xADDA, + 20480 - 11904: 0xADCE, + 20483 - 11904: 0x89D8, + 20485 - 11904: 0xD0C9, + 20486 - 11904: 0xADC7, + 20487 - 11904: 0xD0CA, + 20488 - 11904: 0xFA59, + 20489 - 11904: 0xADDC, + 20491 - 11904: 0xADD3, + 20492 - 11904: 0xADBE, + 20493 - 11904: 0xADBF, + 20494 - 11904: 0xD0DD, + 20495 - 11904: 0xB0BF, + 20497 - 11904: 0xADCC, + 20498 - 11904: 0xADCB, + 20499 - 11904: 0xD0CB, + 20500 - 11904: 0xADCF, + 20501 - 11904: 0xD45B, + 20502 - 11904: 0xADC6, + 20503 - 11904: 0xD0D6, + 20504 - 11904: 0xADD5, + 20505 - 11904: 0xADD4, + 20506 - 11904: 0xADCA, + 20507 - 11904: 0xD0CE, + 20508 - 11904: 0xD0D7, + 20510 - 11904: 0xD0C8, + 20511 - 11904: 0xADC9, + 20512 - 11904: 0xD0D8, + 20513 - 11904: 0xADD2, + 20514 - 11904: 0xD0CC, + 20515 - 11904: 0xADC0, + 20517 - 11904: 0xADC3, + 20518 - 11904: 0xADC2, + 20519 - 11904: 0xD0D9, + 20520 - 11904: 0xADD0, + 20521 - 11904: 0xFA5F, + 20522 - 11904: 0xADD9, + 20523 - 11904: 0xADDB, + 20524 - 11904: 0xD0D3, + 20525 - 11904: 0xADD8, + 20526 - 11904: 0x92A8, + 20527 - 11904: 0xD0DB, + 20528 - 11904: 0xD0CD, + 20529 - 11904: 0xD0DC, + 20531 - 11904: 0xD0D1, + 20532 - 11904: 0x9163, + 20533 - 11904: 0xD0DA, + 20535 - 11904: 0xD0D2, + 20539 - 11904: 0x8C40, + 20540 - 11904: 0xADC8, + 20544 - 11904: 0xD463, + 20545 - 11904: 0xD457, + 20547 - 11904: 0xB0B3, + 20549 - 11904: 0xD45C, + 20550 - 11904: 0xD462, + 20551 - 11904: 0xB0B2, + 20552 - 11904: 0xD455, + 20553 - 11904: 0xB0B6, + 20554 - 11904: 0xD459, + 20555 - 11904: 0xD452, + 20556 - 11904: 0xB0B4, + 20557 - 11904: 0xD456, + 20558 - 11904: 0xB0B9, + 20559 - 11904: 0xB0BE, + 20561 - 11904: 0xD467, + 20563 - 11904: 0xD451, + 20565 - 11904: 0xB0BA, + 20566 - 11904: 0x9F73, + 20567 - 11904: 0xD466, + 20568 - 11904: 0x92AD, + 20570 - 11904: 0xB0B5, + 20571 - 11904: 0xD458, + 20572 - 11904: 0xB0B1, + 20573 - 11904: 0xD453, + 20574 - 11904: 0xD44F, + 20575 - 11904: 0xD45D, + 20576 - 11904: 0xD450, + 20577 - 11904: 0xD44E, + 20578 - 11904: 0xD45A, + 20579 - 11904: 0xD460, + 20580 - 11904: 0xD461, + 20581 - 11904: 0xB0B7, + 20582 - 11904: 0x9BE9, + 20584 - 11904: 0xD85B, + 20585 - 11904: 0xD45E, + 20586 - 11904: 0xD44D, + 20587 - 11904: 0xD45F, + 20588 - 11904: 0x92A9, + 20589 - 11904: 0xB0C1, + 20590 - 11904: 0xD464, + 20591 - 11904: 0xB0C0, + 20592 - 11904: 0xD44C, + 20594 - 11904: 0xD454, + 20595 - 11904: 0xD465, + 20596 - 11904: 0xB0BC, + 20597 - 11904: 0xB0BB, + 20598 - 11904: 0xB0B8, + 20599 - 11904: 0xB0BD, + 20602 - 11904: 0xB0AF, + 20605 - 11904: 0xFA66, + 20608 - 11904: 0xB3C8, + 20609 - 11904: 0x92AA, + 20610 - 11904: 0xD85E, + 20611 - 11904: 0xD857, + 20613 - 11904: 0xB3C5, + 20615 - 11904: 0xD85F, + 20616 - 11904: 0x89D9, + 20619 - 11904: 0xD855, + 20620 - 11904: 0xD858, + 20621 - 11904: 0xB3C4, + 20622 - 11904: 0xD859, + 20624 - 11904: 0xFD56, + 20625 - 11904: 0xB3C7, + 20626 - 11904: 0xD85D, + 20628 - 11904: 0xD853, + 20629 - 11904: 0xD852, + 20630 - 11904: 0xB3C9, + 20632 - 11904: 0xB3CA, + 20633 - 11904: 0xB3C6, + 20634 - 11904: 0xB3CB, + 20635 - 11904: 0xD851, + 20636 - 11904: 0xD85C, + 20637 - 11904: 0xD85A, + 20638 - 11904: 0xD854, + 20642 - 11904: 0xB3C3, + 20643 - 11904: 0xD856, + 20646 - 11904: 0x9FA8, + 20652 - 11904: 0xB6CA, + 20653 - 11904: 0xB6C4, + 20654 - 11904: 0xDCB7, + 20655 - 11904: 0xB6CD, + 20656 - 11904: 0xDCBD, + 20657 - 11904: 0xDCC0, + 20658 - 11904: 0xB6C6, + 20659 - 11904: 0xB6C7, + 20660 - 11904: 0xDCBA, + 20661 - 11904: 0xB6C5, + 20662 - 11904: 0xDCC3, + 20663 - 11904: 0xB6CB, + 20664 - 11904: 0xDCC4, + 20666 - 11904: 0xDCBF, + 20667 - 11904: 0xB6CC, + 20668 - 11904: 0x8C71, + 20669 - 11904: 0xDCB4, + 20670 - 11904: 0xB6C9, + 20671 - 11904: 0xDCB5, + 20673 - 11904: 0xDCBE, + 20674 - 11904: 0xDCBC, + 20676 - 11904: 0xDCB8, + 20677 - 11904: 0xB6C8, + 20678 - 11904: 0xDCB6, + 20679 - 11904: 0xB6CE, + 20680 - 11904: 0xDCBB, + 20681 - 11904: 0xDCC2, + 20682 - 11904: 0xDCB9, + 20683 - 11904: 0xDCC1, + 20685 - 11904: 0x92A1, + 20686 - 11904: 0xB9B6, + 20687 - 11904: 0xB9B3, + 20688 - 11904: 0x90E3, + 20689 - 11904: 0xB9B4, + 20691 - 11904: 0xE0F9, + 20692 - 11904: 0xE0F1, + 20693 - 11904: 0xB9B2, + 20694 - 11904: 0xB9AF, + 20695 - 11904: 0xE0F2, + 20697 - 11904: 0xA0A6, + 20698 - 11904: 0xB9B1, + 20699 - 11904: 0xE0F5, + 20701 - 11904: 0xE0F7, + 20703 - 11904: 0x94AB, + 20704 - 11904: 0xE0FE, + 20705 - 11904: 0xFC72, + 20707 - 11904: 0xE0FD, + 20708 - 11904: 0xE0F8, + 20709 - 11904: 0xB9AE, + 20710 - 11904: 0xE0F0, + 20711 - 11904: 0xB9AC, + 20712 - 11904: 0xE0F3, + 20713 - 11904: 0xB9B7, + 20714 - 11904: 0xE0F6, + 20716 - 11904: 0xE0FA, + 20717 - 11904: 0xB9B0, + 20718 - 11904: 0xB9AD, + 20719 - 11904: 0xE0FC, + 20720 - 11904: 0xE0FB, + 20721 - 11904: 0xB9B5, + 20723 - 11904: 0xE0F4, + 20724 - 11904: 0x97C4, + 20725 - 11904: 0xBBF8, + 20726 - 11904: 0xE4EC, + 20728 - 11904: 0xE4E9, + 20729 - 11904: 0xBBF9, + 20731 - 11904: 0xBBF7, + 20732 - 11904: 0x92AE, + 20733 - 11904: 0xE4F0, + 20734 - 11904: 0xE4ED, + 20735 - 11904: 0xE4E6, + 20736 - 11904: 0xBBF6, + 20737 - 11904: 0xFA67, + 20738 - 11904: 0xBBFA, + 20739 - 11904: 0xE4E7, + 20740 - 11904: 0xBBF5, + 20741 - 11904: 0xBBFD, + 20742 - 11904: 0xE4EA, + 20743 - 11904: 0xE4EB, + 20744 - 11904: 0xBBFB, + 20745 - 11904: 0xBBFC, + 20746 - 11904: 0xE4F1, + 20747 - 11904: 0xE4EE, + 20748 - 11904: 0xE4EF, + 20749 - 11904: 0x92A2, + 20750 - 11904: 0xFA69, + 20752 - 11904: 0xBEAA, + 20753 - 11904: 0xE8F8, + 20754 - 11904: 0xBEA7, + 20755 - 11904: 0xE8F5, + 20756 - 11904: 0xBEA9, + 20757 - 11904: 0xBEAB, + 20759 - 11904: 0xE8F6, + 20760 - 11904: 0xBEA8, + 20762 - 11904: 0xE8F7, + 20764 - 11904: 0xE8F4, + 20767 - 11904: 0xC076, + 20768 - 11904: 0xECBD, + 20769 - 11904: 0xC077, + 20770 - 11904: 0xECBB, + 20772 - 11904: 0xECBC, + 20773 - 11904: 0xECBA, + 20774 - 11904: 0xECB9, + 20777 - 11904: 0xECBE, + 20778 - 11904: 0xC075, + 20779 - 11904: 0x9268, + 20781 - 11904: 0xEFB8, + 20782 - 11904: 0xEFB9, + 20784 - 11904: 0xE4E8, + 20785 - 11904: 0xEFB7, + 20786 - 11904: 0xC078, + 20787 - 11904: 0xC35F, + 20788 - 11904: 0xF1EB, + 20789 - 11904: 0xF1EC, + 20791 - 11904: 0xC4D7, + 20792 - 11904: 0xC4D8, + 20793 - 11904: 0xF5C1, + 20794 - 11904: 0xF5C0, + 20795 - 11904: 0xC56C, + 20796 - 11904: 0xC56B, + 20797 - 11904: 0xF7D0, + 20799 - 11904: 0xA449, + 20800 - 11904: 0xA461, + 20801 - 11904: 0xA4B9, + 20803 - 11904: 0xA4B8, + 20804 - 11904: 0xA553, + 20805 - 11904: 0xA552, + 20806 - 11904: 0xA5FC, + 20807 - 11904: 0xA5FB, + 20808 - 11904: 0xA5FD, + 20809 - 11904: 0xA5FA, + 20811 - 11904: 0xA74A, + 20812 - 11904: 0xA749, + 20813 - 11904: 0xA74B, + 20818 - 11904: 0xA8E0, + 20820 - 11904: 0xA8DF, + 20821 - 11904: 0xA8E1, + 20822 - 11904: 0x8951, + 20823 - 11904: 0xAB5E, + 20825 - 11904: 0xA259, + 20826 - 11904: 0xD0DE, + 20827 - 11904: 0xA25A, + 20828 - 11904: 0xB0C2, + 20829 - 11904: 0xA25C, + 20830 - 11904: 0xA25B, + 20831 - 11904: 0xD860, + 20832 - 11904: 0xFA6F, + 20833 - 11904: 0xA25D, + 20834 - 11904: 0xB9B8, + 20835 - 11904: 0xA25E, + 20837 - 11904: 0xA44A, + 20839 - 11904: 0xA4BA, + 20840 - 11904: 0xA5FE, + 20841 - 11904: 0xA8E2, + 20842 - 11904: 0xFA71, + 20843 - 11904: 0xA44B, + 20844 - 11904: 0xA4BD, + 20845 - 11904: 0xA4BB, + 20846 - 11904: 0xA4BC, + 20849 - 11904: 0xA640, + 20852 - 11904: 0x8952, + 20853 - 11904: 0xA74C, + 20854 - 11904: 0xA8E4, + 20855 - 11904: 0xA8E3, + 20856 - 11904: 0xA8E5, + 20857 - 11904: 0x945A, + 20860 - 11904: 0xADDD, + 20864 - 11904: 0xBEAC, + 20866 - 11904: 0xC6C3, + 20870 - 11904: 0x89DD, + 20871 - 11904: 0xC94E, + 20872 - 11904: 0xC8A2, + 20873 - 11904: 0xA554, + 20874 - 11904: 0xA555, + 20877 - 11904: 0xA641, + 20879 - 11904: 0xCA6A, + 20881 - 11904: 0xAB60, + 20882 - 11904: 0xAB5F, + 20883 - 11904: 0xD0E0, + 20884 - 11904: 0xD0DF, + 20885 - 11904: 0xB0C3, + 20886 - 11904: 0xC6C4, + 20887 - 11904: 0xA4BE, + 20888 - 11904: 0xC955, + 20890 - 11904: 0x9E52, + 20892 - 11904: 0x8953, + 20894 - 11904: 0xCBCD, + 20896 - 11904: 0xAB61, + 20898 - 11904: 0xADE0, + 20900 - 11904: 0xADDE, + 20901 - 11904: 0xADDF, + 20903 - 11904: 0x9E55, + 20904 - 11904: 0x92BA, + 20906 - 11904: 0xBEAD, + 20907 - 11904: 0xC6C5, + 20908 - 11904: 0xA556, + 20910 - 11904: 0x8C5B, + 20912 - 11904: 0xA642, + 20913 - 11904: 0xC9BC, + 20914 - 11904: 0xFA7D, + 20915 - 11904: 0xFAA8, + 20916 - 11904: 0x9A68, + 20917 - 11904: 0xFA47, + 20918 - 11904: 0xA74D, + 20919 - 11904: 0xA74E, + 20920 - 11904: 0xFA7E, + 20921 - 11904: 0xCA6B, + 20924 - 11904: 0xCBCE, + 20925 - 11904: 0xA8E6, + 20926 - 11904: 0xCBCF, + 20931 - 11904: 0x92BB, + 20932 - 11904: 0xD0E2, + 20933 - 11904: 0xD0E3, + 20934 - 11904: 0xADE3, + 20935 - 11904: 0xFDB6, + 20936 - 11904: 0xD0E4, + 20937 - 11904: 0xFAA2, + 20938 - 11904: 0xD0E1, + 20939 - 11904: 0xADE4, + 20940 - 11904: 0xADE2, + 20941 - 11904: 0xADE1, + 20942 - 11904: 0xD0E5, + 20943 - 11904: 0xFAA3, + 20944 - 11904: 0xD468, + 20945 - 11904: 0xFAA4, + 20946 - 11904: 0x9BB4, + 20947 - 11904: 0xFAA6, + 20948 - 11904: 0xD861, + 20951 - 11904: 0xDCC5, + 20952 - 11904: 0xE140, + 20955 - 11904: 0x89DF, + 20956 - 11904: 0xBBFE, + 20957 - 11904: 0xBEAE, + 20958 - 11904: 0xE8F9, + 20959 - 11904: 0xFDDB, + 20960 - 11904: 0xA44C, + 20961 - 11904: 0xA45A, + 20962 - 11904: 0xFAA9, + 20964 - 11904: 0x8954, + 20973 - 11904: 0xFAAB, + 20976 - 11904: 0xB0C4, + 20977 - 11904: 0xB3CD, + 20979 - 11904: 0xB9B9, + 20980 - 11904: 0xFC7A, + 20981 - 11904: 0xC942, + 20982 - 11904: 0xA4BF, + 20984 - 11904: 0xA559, + 20985 - 11904: 0xA557, + 20986 - 11904: 0xA558, + 20988 - 11904: 0x89E0, + 20989 - 11904: 0xA8E7, + 20990 - 11904: 0x9F4F, + 20992 - 11904: 0xA44D, + 20993 - 11904: 0xA44E, + 20994 - 11904: 0xC87D, + 20995 - 11904: 0xA462, + 20997 - 11904: 0x89E1, + 20998 - 11904: 0xA4C0, + 20999 - 11904: 0xA4C1, + 21000 - 11904: 0xA4C2, + 21001 - 11904: 0xC9BE, + 21002 - 11904: 0xA55A, + 21003 - 11904: 0xFAB0, + 21004 - 11904: 0xC96B, + 21006 - 11904: 0xA646, + 21008 - 11904: 0xC9BF, + 21009 - 11904: 0xA644, + 21010 - 11904: 0xA645, + 21011 - 11904: 0xC9BD, + 21014 - 11904: 0xA647, + 21015 - 11904: 0xA643, + 21020 - 11904: 0xCA6C, + 21021 - 11904: 0xAAEC, + 21022 - 11904: 0xCA6D, + 21023 - 11904: 0x9FCD, + 21024 - 11904: 0xA0E7, + 21025 - 11904: 0xCA6E, + 21028 - 11904: 0xA750, + 21029 - 11904: 0xA74F, + 21030 - 11904: 0xFAB1, + 21031 - 11904: 0x89A6, + 21032 - 11904: 0xA753, + 21033 - 11904: 0xA751, + 21034 - 11904: 0xA752, + 21038 - 11904: 0xA8ED, + 21040 - 11904: 0xA8EC, + 21041 - 11904: 0xCBD4, + 21042 - 11904: 0xCBD1, + 21043 - 11904: 0xCBD2, + 21044 - 11904: 0x9EFA, + 21045 - 11904: 0xCBD0, + 21046 - 11904: 0xA8EE, + 21047 - 11904: 0xA8EA, + 21048 - 11904: 0xA8E9, + 21050 - 11904: 0xA8EB, + 21051 - 11904: 0xA8E8, + 21052 - 11904: 0xFAB2, + 21057 - 11904: 0xA8EF, + 21059 - 11904: 0xAB63, + 21060 - 11904: 0xCDF0, + 21062 - 11904: 0xCBD3, + 21063 - 11904: 0xAB68, + 21065 - 11904: 0xCDF1, + 21066 - 11904: 0xAB64, + 21067 - 11904: 0xAB67, + 21068 - 11904: 0xAB66, + 21069 - 11904: 0xAB65, + 21070 - 11904: 0xAB62, + 21071 - 11904: 0x87BC, + 21074 - 11904: 0xD0E8, + 21076 - 11904: 0xADE7, + 21077 - 11904: 0xD0EB, + 21078 - 11904: 0xADE5, + 21079 - 11904: 0xFAB4, + 21081 - 11904: 0x92C4, + 21082 - 11904: 0xD0E7, + 21083 - 11904: 0xADE8, + 21084 - 11904: 0xADE6, + 21085 - 11904: 0xADE9, + 21086 - 11904: 0xD0E9, + 21087 - 11904: 0xD0EA, + 21088 - 11904: 0x9F6F, + 21089 - 11904: 0xD0E6, + 21090 - 11904: 0xD0EC, + 21096 - 11904: 0x8BB0, + 21097 - 11904: 0xB3D1, + 21098 - 11904: 0xB0C5, + 21099 - 11904: 0xD469, + 21100 - 11904: 0xD46B, + 21101 - 11904: 0xD46A, + 21102 - 11904: 0xD46C, + 21103 - 11904: 0xB0C6, + 21106 - 11904: 0xB3CE, + 21107 - 11904: 0x9FAC, + 21108 - 11904: 0xB3CF, + 21109 - 11904: 0xB3D0, + 21111 - 11904: 0xB6D0, + 21112 - 11904: 0xDCC7, + 21113 - 11904: 0x89E3, + 21114 - 11904: 0xDCC6, + 21115 - 11904: 0xDCC8, + 21116 - 11904: 0xDCC9, + 21117 - 11904: 0xB6D1, + 21119 - 11904: 0xB6CF, + 21120 - 11904: 0xE141, + 21121 - 11904: 0xE142, + 21122 - 11904: 0xB9BB, + 21123 - 11904: 0xB9BA, + 21124 - 11904: 0xE35A, + 21127 - 11904: 0xBC40, + 21128 - 11904: 0xBC41, + 21129 - 11904: 0xBC42, + 21130 - 11904: 0xBC44, + 21131 - 11904: 0xE4F2, + 21132 - 11904: 0xE4F3, + 21133 - 11904: 0xBC43, + 21135 - 11904: 0x9BD3, + 21136 - 11904: 0x89E4, + 21137 - 11904: 0xBEAF, + 21139 - 11904: 0xBEB0, + 21140 - 11904: 0xFAB5, + 21142 - 11904: 0xF1ED, + 21143 - 11904: 0xF5C3, + 21144 - 11904: 0xF5C2, + 21145 - 11904: 0xF7D1, + 21146 - 11904: 0x9FD5, + 21147 - 11904: 0xA44F, + 21151 - 11904: 0xA55C, + 21152 - 11904: 0xA55B, + 21153 - 11904: 0x8955, + 21155 - 11904: 0xA648, + 21156 - 11904: 0x92C5, + 21158 - 11904: 0xC9C0, + 21160 - 11904: 0x8956, + 21161 - 11904: 0xA755, + 21162 - 11904: 0xA756, + 21163 - 11904: 0xA754, + 21164 - 11904: 0xA757, + 21165 - 11904: 0xCA6F, + 21166 - 11904: 0xCA70, + 21173 - 11904: 0xFAB3, + 21177 - 11904: 0xFAB6, + 21179 - 11904: 0xA8F1, + 21180 - 11904: 0xCBD5, + 21182 - 11904: 0xA8F0, + 21184 - 11904: 0xCDF2, + 21185 - 11904: 0xAB6C, + 21186 - 11904: 0xCDF3, + 21187 - 11904: 0xAB6B, + 21189 - 11904: 0xFAB7, + 21191 - 11904: 0xAB69, + 21193 - 11904: 0xAB6A, + 21196 - 11904: 0x9EDC, + 21197 - 11904: 0xD0ED, + 21200 - 11904: 0xFBC4, + 21201 - 11904: 0x9F71, + 21202 - 11904: 0xB0C7, + 21203 - 11904: 0xD46E, + 21205 - 11904: 0xB0CA, + 21206 - 11904: 0xD46D, + 21207 - 11904: 0xB1E5, + 21208 - 11904: 0xB0C9, + 21209 - 11904: 0xB0C8, + 21211 - 11904: 0xB3D4, + 21213 - 11904: 0xB3D3, + 21214 - 11904: 0xB3D2, + 21215 - 11904: 0xB6D2, + 21216 - 11904: 0xFABA, + 21217 - 11904: 0x92C7, + 21218 - 11904: 0xB6D5, + 21219 - 11904: 0xB6D6, + 21220 - 11904: 0xB6D4, + 21222 - 11904: 0xB6D3, + 21225 - 11904: 0xE143, + 21227 - 11904: 0xE144, + 21231 - 11904: 0xE4F5, + 21232 - 11904: 0xBC45, + 21233 - 11904: 0xE4F4, + 21235 - 11904: 0xBEB1, + 21236 - 11904: 0xECBF, + 21237 - 11904: 0xC079, + 21239 - 11904: 0xF1EE, + 21240 - 11904: 0xC455, + 21241 - 11904: 0xC6C6, + 21242 - 11904: 0xA463, + 21243 - 11904: 0xA4C3, + 21244 - 11904: 0xC956, + 21246 - 11904: 0xA4C4, + 21247 - 11904: 0xA4C5, + 21249 - 11904: 0x9A4C, + 21253 - 11904: 0xFABD, + 21254 - 11904: 0xA55E, + 21256 - 11904: 0xA649, + 21257 - 11904: 0xCA71, + 21258 - 11904: 0xCBD6, + 21259 - 11904: 0xCBD7, + 21261 - 11904: 0xAB6D, + 21262 - 11904: 0xD0EE, + 21263 - 11904: 0xB0CC, + 21264 - 11904: 0xB0CB, + 21265 - 11904: 0xD863, + 21266 - 11904: 0xD862, + 21269 - 11904: 0xA450, + 21270 - 11904: 0xA4C6, + 21271 - 11904: 0xA55F, + 21273 - 11904: 0xB0CD, + 21274 - 11904: 0xC943, + 21276 - 11904: 0xC96C, + 21277 - 11904: 0xA560, + 21279 - 11904: 0xC9C2, + 21280 - 11904: 0xA64B, + 21281 - 11904: 0xA64A, + 21282 - 11904: 0xC9C1, + 21283 - 11904: 0xA758, + 21284 - 11904: 0x8C68, + 21287 - 11904: 0x89E5, + 21290 - 11904: 0xADEA, + 21292 - 11904: 0x9F7D, + 21293 - 11904: 0xD46F, + 21295 - 11904: 0xB6D7, + 21296 - 11904: 0xE145, + 21297 - 11904: 0xB9BC, + 21298 - 11904: 0xA0A9, + 21299 - 11904: 0xFAC4, + 21300 - 11904: 0xE8FA, + 21303 - 11904: 0xF3FD, + 21304 - 11904: 0xC6C7, + 21305 - 11904: 0xA4C7, + 21307 - 11904: 0x8957, + 21308 - 11904: 0xCBD8, + 21309 - 11904: 0xCDF4, + 21310 - 11904: 0xB0D0, + 21311 - 11904: 0xB0CE, + 21312 - 11904: 0xB0CF, + 21313 - 11904: 0xA451, + 21314 - 11904: 0xFAAA, + 21315 - 11904: 0xA464, + 21316 - 11904: 0xFAC5, + 21317 - 11904: 0xA4CA, + 21319 - 11904: 0xA4C9, + 21320 - 11904: 0xA4C8, + 21321 - 11904: 0xA563, + 21322 - 11904: 0xA562, + 21324 - 11904: 0xC96D, + 21325 - 11904: 0xC9C3, + 21326 - 11904: 0x8958, + 21329 - 11904: 0xA8F5, + 21330 - 11904: 0xA8F2, + 21331 - 11904: 0xA8F4, + 21332 - 11904: 0xA8F3, + 21335 - 11904: 0xAB6E, + 21338 - 11904: 0xB3D5, + 21340 - 11904: 0xA452, + 21341 - 11904: 0x8BE3, + 21342 - 11904: 0xA4CB, + 21343 - 11904: 0x8B61, + 21344 - 11904: 0xA565, + 21345 - 11904: 0xA564, + 21347 - 11904: 0xCA72, + 21348 - 11904: 0x9AF1, + 21350 - 11904: 0xA8F6, + 21351 - 11904: 0x9EB7, + 21353 - 11904: 0xC6C8, + 21356 - 11904: 0xC957, + 21357 - 11904: 0xFAD1, + 21358 - 11904: 0xA567, + 21359 - 11904: 0xA566, + 21360 - 11904: 0xA64C, + 21361 - 11904: 0xA64D, + 21362 - 11904: 0xCA73, + 21363 - 11904: 0xA759, + 21364 - 11904: 0xFAD2, + 21365 - 11904: 0xA75A, + 21367 - 11904: 0xA8F7, + 21368 - 11904: 0xA8F8, + 21369 - 11904: 0xA8F9, + 21371 - 11904: 0xAB6F, + 21372 - 11904: 0xCDF5, + 21373 - 11904: 0x9EBA, + 21374 - 11904: 0xFAD4, + 21375 - 11904: 0xFAD5, + 21378 - 11904: 0xC944, + 21380 - 11904: 0xA4CC, + 21386 - 11904: 0xC9C4, + 21390 - 11904: 0xCA74, + 21391 - 11904: 0xCA75, + 21394 - 11904: 0xCBD9, + 21395 - 11904: 0xFAD9, + 21396 - 11904: 0xCBDA, + 21398 - 11904: 0xCDF7, + 21399 - 11904: 0xCDF6, + 21400 - 11904: 0xCDF9, + 21401 - 11904: 0xCDF8, + 21402 - 11904: 0xAB70, + 21404 - 11904: 0xD470, + 21405 - 11904: 0xADED, + 21406 - 11904: 0xD0EF, + 21407 - 11904: 0xADEC, + 21408 - 11904: 0xFADB, + 21410 - 11904: 0x9CE0, + 21412 - 11904: 0xD864, + 21413 - 11904: 0xB3D6, + 21414 - 11904: 0xFBF7, + 21415 - 11904: 0xD865, + 21416 - 11904: 0xFBFA, + 21417 - 11904: 0x89E7, + 21418 - 11904: 0xA07A, + 21419 - 11904: 0xFADC, + 21420 - 11904: 0xE146, + 21421 - 11904: 0xB9BD, + 21422 - 11904: 0xFADD, + 21424 - 11904: 0x89E9, + 21426 - 11904: 0xBC46, + 21428 - 11904: 0xF1EF, + 21430 - 11904: 0xC6C9, + 21433 - 11904: 0xC958, + 21435 - 11904: 0xA568, + 21441 - 11904: 0xFAE2, + 21442 - 11904: 0x89EB, + 21443 - 11904: 0xB0D1, + 21445 - 11904: 0xFAE3, + 21448 - 11904: 0xA453, + 21449 - 11904: 0xA465, + 21450 - 11904: 0xA4CE, + 21451 - 11904: 0xA4CD, + 21452 - 11904: 0x90C8, + 21453 - 11904: 0xA4CF, + 21456 - 11904: 0x92DA, + 21457 - 11904: 0x8959, + 21458 - 11904: 0x9CF5, + 21460 - 11904: 0xA8FB, + 21462 - 11904: 0xA8FA, + 21463 - 11904: 0xA8FC, + 21464 - 11904: 0x895A, + 21465 - 11904: 0xFAE7, + 21466 - 11904: 0x9FA2, + 21467 - 11904: 0xAB71, + 21471 - 11904: 0xADEE, + 21472 - 11904: 0xFAEA, + 21473 - 11904: 0xE8FB, + 21474 - 11904: 0xC24F, + 21475 - 11904: 0xA466, + 21476 - 11904: 0xA56A, + 21477 - 11904: 0xA579, + 21478 - 11904: 0xA574, + 21480 - 11904: 0xA56F, + 21481 - 11904: 0xA56E, + 21482 - 11904: 0xA575, + 21483 - 11904: 0xA573, + 21484 - 11904: 0xA56C, + 21485 - 11904: 0xA57A, + 21486 - 11904: 0xA56D, + 21487 - 11904: 0xA569, + 21488 - 11904: 0xA578, + 21489 - 11904: 0xA577, + 21490 - 11904: 0xA576, + 21491 - 11904: 0xA56B, + 21493 - 11904: 0xA572, + 21494 - 11904: 0xFAED, + 21495 - 11904: 0x8FAD, + 21496 - 11904: 0xA571, + 21499 - 11904: 0xA57B, + 21500 - 11904: 0xA570, + 21502 - 11904: 0xFB59, + 21505 - 11904: 0xA653, + 21507 - 11904: 0xA659, + 21508 - 11904: 0xA655, + 21510 - 11904: 0xA65B, + 21511 - 11904: 0xC9C5, + 21512 - 11904: 0xA658, + 21513 - 11904: 0xA64E, + 21514 - 11904: 0xA651, + 21515 - 11904: 0xA654, + 21516 - 11904: 0xA650, + 21517 - 11904: 0xA657, + 21518 - 11904: 0xA65A, + 21519 - 11904: 0xA64F, + 21520 - 11904: 0xA652, + 21521 - 11904: 0xA656, + 21522 - 11904: 0xA65C, + 21523 - 11904: 0xFAEF, + 21524 - 11904: 0x96EF, + 21526 - 11904: 0x9DEC, + 21528 - 11904: 0xCA7E, + 21529 - 11904: 0xCA7B, + 21530 - 11904: 0x9DCA, + 21531 - 11904: 0xA767, + 21532 - 11904: 0xCA7C, + 21533 - 11904: 0xA75B, + 21534 - 11904: 0xA75D, + 21535 - 11904: 0xA775, + 21536 - 11904: 0xA770, + 21537 - 11904: 0xFD6D, + 21539 - 11904: 0x89EC, + 21540 - 11904: 0xCAA5, + 21541 - 11904: 0xCA7D, + 21542 - 11904: 0xA75F, + 21543 - 11904: 0xA761, + 21544 - 11904: 0xCAA4, + 21545 - 11904: 0xA768, + 21546 - 11904: 0xCA78, + 21547 - 11904: 0xA774, + 21548 - 11904: 0xA776, + 21549 - 11904: 0xA75C, + 21550 - 11904: 0xA76D, + 21551 - 11904: 0xFB44, + 21552 - 11904: 0xCA76, + 21553 - 11904: 0xA773, + 21554 - 11904: 0x9DE2, + 21555 - 11904: 0xA764, + 21556 - 11904: 0x8C75, + 21557 - 11904: 0xA76E, + 21558 - 11904: 0xA76F, + 21559 - 11904: 0xCA77, + 21560 - 11904: 0xA76C, + 21561 - 11904: 0xA76A, + 21563 - 11904: 0xA76B, + 21564 - 11904: 0xA771, + 21565 - 11904: 0xCAA1, + 21566 - 11904: 0xA75E, + 21568 - 11904: 0xA772, + 21569 - 11904: 0xCAA3, + 21570 - 11904: 0xA766, + 21571 - 11904: 0xA763, + 21573 - 11904: 0xCA7A, + 21574 - 11904: 0xA762, + 21575 - 11904: 0xCAA6, + 21576 - 11904: 0xA765, + 21578 - 11904: 0xA769, + 21579 - 11904: 0x9EC0, + 21580 - 11904: 0x87C5, + 21581 - 11904: 0x9E56, + 21582 - 11904: 0xA760, + 21583 - 11904: 0xCAA2, + 21588 - 11904: 0xCA79, + 21600 - 11904: 0xCBEB, + 21601 - 11904: 0xCBEA, + 21602 - 11904: 0xA94F, + 21603 - 11904: 0xCBED, + 21604 - 11904: 0xCBEF, + 21605 - 11904: 0xCBE4, + 21606 - 11904: 0xCBE7, + 21607 - 11904: 0xCBEE, + 21608 - 11904: 0xA950, + 21609 - 11904: 0x9F79, + 21610 - 11904: 0x9AC7, + 21611 - 11904: 0xCBE1, + 21612 - 11904: 0xCBE5, + 21613 - 11904: 0xFAF4, + 21615 - 11904: 0xCBE9, + 21616 - 11904: 0xCE49, + 21617 - 11904: 0xA94B, + 21618 - 11904: 0xCE4D, + 21619 - 11904: 0xA8FD, + 21620 - 11904: 0xCBE6, + 21621 - 11904: 0xA8FE, + 21622 - 11904: 0xA94C, + 21623 - 11904: 0xA945, + 21624 - 11904: 0xA941, + 21626 - 11904: 0xCBE2, + 21627 - 11904: 0xA944, + 21628 - 11904: 0xA949, + 21629 - 11904: 0xA952, + 21630 - 11904: 0xCBE3, + 21631 - 11904: 0xCBDC, + 21632 - 11904: 0xA943, + 21633 - 11904: 0xCBDD, + 21634 - 11904: 0xCBDF, + 21636 - 11904: 0xA946, + 21637 - 11904: 0x98A1, + 21638 - 11904: 0xA948, + 21639 - 11904: 0xCBDB, + 21640 - 11904: 0xCBE0, + 21643 - 11904: 0xA951, + 21644 - 11904: 0xA94D, + 21645 - 11904: 0xCBE8, + 21646 - 11904: 0xA953, + 21647 - 11904: 0xFAF8, + 21648 - 11904: 0xA94A, + 21649 - 11904: 0xCBDE, + 21650 - 11904: 0xA947, + 21651 - 11904: 0x89F0, + 21652 - 11904: 0x9E47, + 21653 - 11904: 0xA942, + 21654 - 11904: 0xA940, + 21655 - 11904: 0x9DF7, + 21656 - 11904: 0xCBEC, + 21658 - 11904: 0xA94E, + 21660 - 11904: 0x9FD3, + 21662 - 11904: 0x9ACA, + 21664 - 11904: 0xCE48, + 21665 - 11904: 0xCDFB, + 21666 - 11904: 0xCE4B, + 21667 - 11904: 0x89F1, + 21668 - 11904: 0xFAF9, + 21669 - 11904: 0xCDFD, + 21670 - 11904: 0xAB78, + 21671 - 11904: 0xABA8, + 21672 - 11904: 0xAB74, + 21673 - 11904: 0xABA7, + 21674 - 11904: 0xAB7D, + 21675 - 11904: 0xABA4, + 21676 - 11904: 0xAB72, + 21677 - 11904: 0xCDFC, + 21678 - 11904: 0xCE43, + 21679 - 11904: 0xABA3, + 21680 - 11904: 0xCE4F, + 21681 - 11904: 0xABA5, + 21682 - 11904: 0x8E5A, + 21683 - 11904: 0xAB79, + 21684 - 11904: 0x89F2, + 21686 - 11904: 0xCE45, + 21687 - 11904: 0xCE42, + 21688 - 11904: 0xAB77, + 21689 - 11904: 0x89F3, + 21690 - 11904: 0xCDFA, + 21691 - 11904: 0xABA6, + 21692 - 11904: 0xCE4A, + 21693 - 11904: 0xAB7C, + 21694 - 11904: 0xCE4C, + 21695 - 11904: 0xABA9, + 21696 - 11904: 0xAB73, + 21697 - 11904: 0xAB7E, + 21698 - 11904: 0xAB7B, + 21699 - 11904: 0xCE40, + 21700 - 11904: 0xABA1, + 21701 - 11904: 0xCE46, + 21702 - 11904: 0xCE47, + 21703 - 11904: 0xAB7A, + 21704 - 11904: 0xABA2, + 21705 - 11904: 0xAB76, + 21707 - 11904: 0x925D, + 21708 - 11904: 0x8B51, + 21709 - 11904: 0x92E0, + 21710 - 11904: 0xAB75, + 21711 - 11904: 0xCDFE, + 21712 - 11904: 0x89F4, + 21718 - 11904: 0xCE44, + 21722 - 11904: 0x9FD4, + 21726 - 11904: 0xCE4E, + 21728 - 11904: 0xD144, + 21729 - 11904: 0xADFB, + 21730 - 11904: 0xD0F1, + 21731 - 11904: 0x8A79, + 21732 - 11904: 0xD0F6, + 21733 - 11904: 0xADF4, + 21734 - 11904: 0xAE40, + 21735 - 11904: 0xD0F4, + 21736 - 11904: 0xADEF, + 21737 - 11904: 0xADF9, + 21738 - 11904: 0xADFE, + 21739 - 11904: 0xD0FB, + 21741 - 11904: 0xADFA, + 21742 - 11904: 0xADFD, + 21743 - 11904: 0x89F5, + 21745 - 11904: 0xD0FE, + 21746 - 11904: 0xADF5, + 21747 - 11904: 0xD0F5, + 21751 - 11904: 0xD142, + 21752 - 11904: 0xD143, + 21754 - 11904: 0xADF7, + 21755 - 11904: 0xD141, + 21756 - 11904: 0xADF3, + 21757 - 11904: 0xAE43, + 21759 - 11904: 0xD0F8, + 21761 - 11904: 0xADF1, + 21762 - 11904: 0x97A7, + 21763 - 11904: 0xD146, + 21764 - 11904: 0xD0F9, + 21765 - 11904: 0xD0FD, + 21766 - 11904: 0xADF6, + 21767 - 11904: 0xAE42, + 21768 - 11904: 0xD0FA, + 21769 - 11904: 0xADFC, + 21770 - 11904: 0xD140, + 21771 - 11904: 0xD147, + 21772 - 11904: 0xD4A1, + 21773 - 11904: 0x93BA, + 21774 - 11904: 0xD145, + 21775 - 11904: 0xAE44, + 21776 - 11904: 0xADF0, + 21777 - 11904: 0xD0FC, + 21778 - 11904: 0xD0F3, + 21779 - 11904: 0x9E58, + 21780 - 11904: 0xADF8, + 21783 - 11904: 0xD0F2, + 21784 - 11904: 0x89F6, + 21786 - 11904: 0xD0F7, + 21790 - 11904: 0x9E57, + 21795 - 11904: 0x89F7, + 21797 - 11904: 0x8A41, + 21798 - 11904: 0xD0F0, + 21799 - 11904: 0xAE41, + 21800 - 11904: 0x89F8, + 21802 - 11904: 0xD477, + 21803 - 11904: 0xFAF1, + 21804 - 11904: 0xB0E4, + 21805 - 11904: 0xD4A7, + 21806 - 11904: 0xB0E2, + 21807 - 11904: 0xB0DF, + 21808 - 11904: 0xD47C, + 21809 - 11904: 0xB0DB, + 21810 - 11904: 0xD4A2, + 21811 - 11904: 0xB0E6, + 21812 - 11904: 0xD476, + 21813 - 11904: 0xD47B, + 21814 - 11904: 0xD47A, + 21815 - 11904: 0xADF2, + 21816 - 11904: 0xB0E1, + 21817 - 11904: 0xD4A5, + 21819 - 11904: 0xD4A8, + 21820 - 11904: 0xD473, + 21822 - 11904: 0xB3E8, + 21823 - 11904: 0x89FA, + 21824 - 11904: 0xD4A9, + 21825 - 11904: 0xB0E7, + 21827 - 11904: 0xB0D9, + 21828 - 11904: 0xB0D6, + 21829 - 11904: 0xD47E, + 21830 - 11904: 0xB0D3, + 21831 - 11904: 0xFB42, + 21832 - 11904: 0xD4A6, + 21833 - 11904: 0xFABF, + 21834 - 11904: 0xB0DA, + 21835 - 11904: 0xD4AA, + 21837 - 11904: 0xD474, + 21838 - 11904: 0xD4A4, + 21839 - 11904: 0xB0DD, + 21840 - 11904: 0xD475, + 21841 - 11904: 0xD478, + 21842 - 11904: 0xD47D, + 21843 - 11904: 0xFBA3, + 21845 - 11904: 0xB0DE, + 21846 - 11904: 0xB0DC, + 21847 - 11904: 0xB0E8, + 21852 - 11904: 0xB0E3, + 21853 - 11904: 0xFAF7, + 21854 - 11904: 0xB0D7, + 21855 - 11904: 0xB1D2, + 21857 - 11904: 0xB0D8, + 21858 - 11904: 0xD479, + 21859 - 11904: 0xB0E5, + 21860 - 11904: 0xB0E0, + 21861 - 11904: 0xD4A3, + 21862 - 11904: 0xB0D5, + 21865 - 11904: 0x9E4E, + 21866 - 11904: 0xB0D4, + 21867 - 11904: 0x94DC, + 21873 - 11904: 0x95DA, + 21874 - 11904: 0x9DF8, + 21875 - 11904: 0x9F6A, + 21877 - 11904: 0xD471, + 21878 - 11904: 0xD472, + 21879 - 11904: 0xD86A, + 21881 - 11904: 0x8AB7, + 21883 - 11904: 0xB3D7, + 21884 - 11904: 0xB3DA, + 21885 - 11904: 0xD875, + 21886 - 11904: 0xB3EE, + 21887 - 11904: 0xD878, + 21888 - 11904: 0xB3D8, + 21889 - 11904: 0xD871, + 21890 - 11904: 0xB3DE, + 21891 - 11904: 0xB3E4, + 21892 - 11904: 0xB5BD, + 21894 - 11904: 0xFB46, + 21895 - 11904: 0xB3E2, + 21896 - 11904: 0xD86E, + 21897 - 11904: 0xB3EF, + 21898 - 11904: 0xB3DB, + 21899 - 11904: 0xB3E3, + 21900 - 11904: 0xD876, + 21901 - 11904: 0xDCD7, + 21902 - 11904: 0xD87B, + 21903 - 11904: 0xD86F, + 21904 - 11904: 0x8A46, + 21905 - 11904: 0xD866, + 21906 - 11904: 0xD873, + 21907 - 11904: 0xD86D, + 21908 - 11904: 0xB3E1, + 21909 - 11904: 0xD879, + 21912 - 11904: 0xB3DD, + 21913 - 11904: 0xB3F1, + 21914 - 11904: 0xB3EA, + 21916 - 11904: 0xB3DF, + 21917 - 11904: 0xB3DC, + 21919 - 11904: 0xB3E7, + 21921 - 11904: 0xD87A, + 21922 - 11904: 0xD86C, + 21923 - 11904: 0xD872, + 21924 - 11904: 0xD874, + 21925 - 11904: 0xD868, + 21926 - 11904: 0xD877, + 21927 - 11904: 0xB3D9, + 21928 - 11904: 0xD867, + 21929 - 11904: 0xFB47, + 21930 - 11904: 0xB3E0, + 21931 - 11904: 0xB3F0, + 21932 - 11904: 0xB3EC, + 21933 - 11904: 0xD869, + 21934 - 11904: 0xB3E6, + 21936 - 11904: 0x9148, + 21937 - 11904: 0xB3ED, + 21938 - 11904: 0xB3E9, + 21939 - 11904: 0xB3E5, + 21940 - 11904: 0x92DE, + 21941 - 11904: 0xD870, + 21945 - 11904: 0x8B53, + 21946 - 11904: 0x9DF6, + 21947 - 11904: 0xB3EB, + 21948 - 11904: 0x9BDA, + 21951 - 11904: 0xDCD5, + 21952 - 11904: 0xDCD1, + 21953 - 11904: 0x9D7E, + 21954 - 11904: 0xDCE0, + 21955 - 11904: 0xDCCA, + 21956 - 11904: 0xDCD3, + 21957 - 11904: 0xB6E5, + 21958 - 11904: 0xB6E6, + 21959 - 11904: 0xB6DE, + 21960 - 11904: 0xDCDC, + 21961 - 11904: 0xB6E8, + 21962 - 11904: 0xDCCF, + 21963 - 11904: 0xDCCE, + 21964 - 11904: 0xDCCC, + 21965 - 11904: 0xDCDE, + 21966 - 11904: 0xB6DC, + 21967 - 11904: 0xDCD8, + 21968 - 11904: 0xDCCD, + 21969 - 11904: 0xB6DF, + 21970 - 11904: 0xDCD6, + 21971 - 11904: 0xB6DA, + 21972 - 11904: 0xDCD2, + 21973 - 11904: 0xDCD9, + 21974 - 11904: 0xDCDB, + 21975 - 11904: 0x89FD, + 21976 - 11904: 0x99E4, + 21977 - 11904: 0xDCDF, + 21978 - 11904: 0xB6E3, + 21979 - 11904: 0xDCCB, + 21980 - 11904: 0xB6DD, + 21981 - 11904: 0xDCD0, + 21982 - 11904: 0x9E43, + 21983 - 11904: 0xB6D8, + 21985 - 11904: 0xB6E4, + 21986 - 11904: 0xDCDA, + 21987 - 11904: 0xB6E0, + 21988 - 11904: 0xB6E1, + 21989 - 11904: 0xB6E7, + 21990 - 11904: 0xB6DB, + 21991 - 11904: 0xA25F, + 21992 - 11904: 0xB6D9, + 21993 - 11904: 0xDCD4, + 21994 - 11904: 0x9DE9, + 21996 - 11904: 0x8F52, + 21999 - 11904: 0xB6E2, + 22000 - 11904: 0x9DF5, + 22001 - 11904: 0x9DF0, + 22002 - 11904: 0xDCDD, + 22005 - 11904: 0x99E7, + 22006 - 11904: 0xB9CD, + 22007 - 11904: 0xB9C8, + 22009 - 11904: 0xE155, + 22010 - 11904: 0xE151, + 22011 - 11904: 0x8BBD, + 22012 - 11904: 0xE14B, + 22013 - 11904: 0xB9C2, + 22014 - 11904: 0xB9BE, + 22015 - 11904: 0xE154, + 22016 - 11904: 0xB9BF, + 22017 - 11904: 0xE14E, + 22018 - 11904: 0xE150, + 22020 - 11904: 0xE153, + 22021 - 11904: 0xFB48, + 22022 - 11904: 0xB9C4, + 22024 - 11904: 0xB9CB, + 22025 - 11904: 0xB9C5, + 22028 - 11904: 0xE149, + 22029 - 11904: 0xB9C6, + 22030 - 11904: 0xB9C7, + 22031 - 11904: 0xE14C, + 22032 - 11904: 0xB9CC, + 22033 - 11904: 0x9FB7, + 22034 - 11904: 0xE14A, + 22035 - 11904: 0xE14F, + 22036 - 11904: 0xB9C3, + 22037 - 11904: 0xE148, + 22038 - 11904: 0xB9C9, + 22039 - 11904: 0xB9C1, + 22043 - 11904: 0xB9C0, + 22044 - 11904: 0xE14D, + 22045 - 11904: 0xE152, + 22046 - 11904: 0x9DD0, + 22047 - 11904: 0xB9CA, + 22048 - 11904: 0x9FEB, + 22049 - 11904: 0x8DA9, + 22050 - 11904: 0x9DCF, + 22051 - 11904: 0x98E1, + 22053 - 11904: 0x9DE5, + 22055 - 11904: 0xE147, + 22057 - 11904: 0xBC4D, + 22058 - 11904: 0xE547, + 22060 - 11904: 0xE544, + 22061 - 11904: 0x9DC8, + 22062 - 11904: 0xBC47, + 22063 - 11904: 0xBC53, + 22064 - 11904: 0xBC54, + 22066 - 11904: 0xBC4A, + 22067 - 11904: 0xE542, + 22068 - 11904: 0xBC4C, + 22069 - 11904: 0xE4F9, + 22070 - 11904: 0xBC52, + 22071 - 11904: 0xFB4F, + 22072 - 11904: 0xE546, + 22073 - 11904: 0xBC49, + 22074 - 11904: 0xE548, + 22075 - 11904: 0xBC48, + 22077 - 11904: 0xE543, + 22078 - 11904: 0xE545, + 22079 - 11904: 0xBC4B, + 22080 - 11904: 0xE541, + 22081 - 11904: 0xE4FA, + 22082 - 11904: 0xE4F7, + 22083 - 11904: 0x9DEB, + 22085 - 11904: 0xD86B, + 22086 - 11904: 0xE4FD, + 22088 - 11904: 0xE4F6, + 22089 - 11904: 0xE4FC, + 22090 - 11904: 0xE4FB, + 22092 - 11904: 0xE4F8, + 22093 - 11904: 0xFB54, + 22094 - 11904: 0xBC4F, + 22095 - 11904: 0xFB55, + 22096 - 11904: 0x9AA2, + 22098 - 11904: 0x8AD6, + 22099 - 11904: 0xBC4E, + 22100 - 11904: 0x9A5F, + 22103 - 11904: 0xBC50, + 22104 - 11904: 0xE4FE, + 22105 - 11904: 0xBEB2, + 22106 - 11904: 0xE540, + 22109 - 11904: 0x9EF5, + 22110 - 11904: 0xE945, + 22112 - 11904: 0xE8FD, + 22113 - 11904: 0x8FB7, + 22114 - 11904: 0xBEBE, + 22115 - 11904: 0xE942, + 22116 - 11904: 0xBEB6, + 22117 - 11904: 0xBEBA, + 22118 - 11904: 0xE941, + 22120 - 11904: 0xBEB9, + 22121 - 11904: 0xBEB5, + 22122 - 11904: 0xBEB8, + 22123 - 11904: 0xBEB3, + 22124 - 11904: 0xBEBD, + 22125 - 11904: 0xE943, + 22126 - 11904: 0xE8FE, + 22127 - 11904: 0xBEBC, + 22128 - 11904: 0xE8FC, + 22129 - 11904: 0xBEBB, + 22130 - 11904: 0xE944, + 22131 - 11904: 0xE940, + 22132 - 11904: 0xBC51, + 22134 - 11904: 0xBEBF, + 22135 - 11904: 0xE946, + 22136 - 11904: 0xBEB7, + 22137 - 11904: 0xBEB4, + 22138 - 11904: 0x9AD2, + 22139 - 11904: 0x9E6A, + 22140 - 11904: 0x9EE8, + 22142 - 11904: 0xECC6, + 22143 - 11904: 0xECC8, + 22144 - 11904: 0xC07B, + 22145 - 11904: 0xECC9, + 22146 - 11904: 0xECC7, + 22147 - 11904: 0xECC5, + 22148 - 11904: 0xECC4, + 22149 - 11904: 0xC07D, + 22150 - 11904: 0xECC3, + 22151 - 11904: 0xC07E, + 22153 - 11904: 0x8BBF, + 22154 - 11904: 0x91C2, + 22155 - 11904: 0x9D62, + 22156 - 11904: 0xECC1, + 22157 - 11904: 0xECC2, + 22158 - 11904: 0xC07A, + 22159 - 11904: 0xC0A1, + 22160 - 11904: 0xC07C, + 22162 - 11904: 0x9260, + 22163 - 11904: 0xECC0, + 22165 - 11904: 0xC250, + 22167 - 11904: 0xEFBC, + 22168 - 11904: 0xEFBA, + 22169 - 11904: 0xEFBF, + 22170 - 11904: 0xEFBD, + 22172 - 11904: 0xEFBB, + 22173 - 11904: 0xEFBE, + 22174 - 11904: 0x925E, + 22175 - 11904: 0x91C1, + 22177 - 11904: 0x8AC5, + 22180 - 11904: 0x97A3, + 22181 - 11904: 0xC360, + 22182 - 11904: 0xF1F2, + 22183 - 11904: 0xF1F3, + 22184 - 11904: 0xC456, + 22186 - 11904: 0xF1F4, + 22187 - 11904: 0xF1F0, + 22188 - 11904: 0xF1F5, + 22189 - 11904: 0xF1F1, + 22190 - 11904: 0xC251, + 22191 - 11904: 0x8B6C, + 22193 - 11904: 0x8D7E, + 22194 - 11904: 0xF3FE, + 22195 - 11904: 0xF441, + 22196 - 11904: 0xC459, + 22197 - 11904: 0xF440, + 22198 - 11904: 0xC458, + 22199 - 11904: 0xC457, + 22201 - 11904: 0x9C54, + 22204 - 11904: 0xC45A, + 22205 - 11904: 0xF5C5, + 22206 - 11904: 0xF5C6, + 22207 - 11904: 0x9DBD, + 22208 - 11904: 0xC4DA, + 22209 - 11904: 0xC4D9, + 22210 - 11904: 0xC4DB, + 22211 - 11904: 0xF5C4, + 22213 - 11904: 0xF6D8, + 22214 - 11904: 0xF6D7, + 22216 - 11904: 0xC56D, + 22217 - 11904: 0xC56F, + 22218 - 11904: 0xC56E, + 22219 - 11904: 0xF6D9, + 22220 - 11904: 0xC5C8, + 22221 - 11904: 0xF8A6, + 22225 - 11904: 0xC5F1, + 22227 - 11904: 0xF8A5, + 22228 - 11904: 0xF8EE, + 22230 - 11904: 0x9CC5, + 22231 - 11904: 0xC949, + 22234 - 11904: 0xA57D, + 22235 - 11904: 0xA57C, + 22237 - 11904: 0xA65F, + 22238 - 11904: 0xA65E, + 22239 - 11904: 0xC9C7, + 22240 - 11904: 0xA65D, + 22241 - 11904: 0xC9C6, + 22242 - 11904: 0x895B, + 22244 - 11904: 0xA779, + 22245 - 11904: 0xCAA9, + 22247 - 11904: 0xCAA8, + 22250 - 11904: 0xA777, + 22251 - 11904: 0xA77A, + 22253 - 11904: 0xFB5C, + 22254 - 11904: 0xCAA7, + 22255 - 11904: 0xFB5B, + 22256 - 11904: 0xA778, + 22257 - 11904: 0xFB57, + 22263 - 11904: 0xCBF0, + 22265 - 11904: 0xCBF1, + 22266 - 11904: 0xA954, + 22267 - 11904: 0x8765, + 22269 - 11904: 0x98C7, + 22271 - 11904: 0xABAA, + 22272 - 11904: 0xFB5A, + 22273 - 11904: 0xD148, + 22274 - 11904: 0xD149, + 22275 - 11904: 0xAE45, + 22276 - 11904: 0xAE46, + 22279 - 11904: 0xD4AC, + 22280 - 11904: 0xB0E9, + 22281 - 11904: 0xB0EB, + 22282 - 11904: 0xD4AB, + 22283 - 11904: 0xB0EA, + 22284 - 11904: 0xD87C, + 22285 - 11904: 0xB3F2, + 22290 - 11904: 0xB6E9, + 22291 - 11904: 0xB6EA, + 22292 - 11904: 0xDCE1, + 22293 - 11904: 0x9CEE, + 22294 - 11904: 0xB9CF, + 22296 - 11904: 0xB9CE, + 22298 - 11904: 0xE549, + 22299 - 11904: 0xE948, + 22300 - 11904: 0xE947, + 22301 - 11904: 0x92E2, + 22302 - 11904: 0xF96B, + 22303 - 11904: 0xA467, + 22304 - 11904: 0xC959, + 22306 - 11904: 0xC96E, + 22307 - 11904: 0xC96F, + 22312 - 11904: 0xA662, + 22313 - 11904: 0xA666, + 22314 - 11904: 0xC9C9, + 22316 - 11904: 0xA664, + 22317 - 11904: 0xA663, + 22318 - 11904: 0xC9C8, + 22319 - 11904: 0xA665, + 22320 - 11904: 0xA661, + 22322 - 11904: 0x94A7, + 22323 - 11904: 0xA660, + 22324 - 11904: 0xC9CA, + 22331 - 11904: 0xA7A6, + 22333 - 11904: 0x8CCC, + 22334 - 11904: 0xA7A3, + 22335 - 11904: 0x9BD4, + 22336 - 11904: 0xA77D, + 22337 - 11904: 0xCAAA, + 22338 - 11904: 0xFB64, + 22339 - 11904: 0xFB76, + 22341 - 11904: 0xCAAB, + 22342 - 11904: 0xFB60, + 22343 - 11904: 0xA7A1, + 22345 - 11904: 0xCAAD, + 22346 - 11904: 0xA77B, + 22347 - 11904: 0xCAAE, + 22348 - 11904: 0xCAAC, + 22349 - 11904: 0xA77E, + 22350 - 11904: 0xA7A2, + 22351 - 11904: 0xA7A5, + 22352 - 11904: 0xA7A4, + 22353 - 11904: 0xA77C, + 22354 - 11904: 0xCAAF, + 22356 - 11904: 0x99E5, + 22359 - 11904: 0x9AC2, + 22363 - 11904: 0x91FB, + 22367 - 11904: 0xA073, + 22369 - 11904: 0xA959, + 22370 - 11904: 0xCBFE, + 22372 - 11904: 0xA95B, + 22374 - 11904: 0xA95A, + 22375 - 11904: 0x9F72, + 22376 - 11904: 0xCC40, + 22377 - 11904: 0xA958, + 22378 - 11904: 0xA957, + 22379 - 11904: 0xCBF5, + 22381 - 11904: 0xCBF4, + 22383 - 11904: 0xCBF2, + 22384 - 11904: 0xCBF7, + 22385 - 11904: 0xCBF6, + 22386 - 11904: 0xCBF3, + 22387 - 11904: 0xCBFC, + 22388 - 11904: 0xCBFD, + 22389 - 11904: 0xCBFA, + 22390 - 11904: 0xCBF8, + 22391 - 11904: 0xA956, + 22394 - 11904: 0x9FCC, + 22395 - 11904: 0xCBFB, + 22396 - 11904: 0xA95C, + 22397 - 11904: 0xCC41, + 22398 - 11904: 0x98A5, + 22399 - 11904: 0x92E8, + 22400 - 11904: 0xCBF9, + 22402 - 11904: 0xABAB, + 22403 - 11904: 0xA955, + 22408 - 11904: 0x9BBC, + 22410 - 11904: 0x96F3, + 22411 - 11904: 0xABAC, + 22412 - 11904: 0xCE54, + 22413 - 11904: 0x92E7, + 22415 - 11904: 0xCE5A, + 22416 - 11904: 0xFC67, + 22419 - 11904: 0xABB2, + 22420 - 11904: 0xCE58, + 22421 - 11904: 0xCE5E, + 22423 - 11904: 0xCE55, + 22424 - 11904: 0xCE59, + 22425 - 11904: 0xCE5B, + 22426 - 11904: 0xCE5D, + 22427 - 11904: 0xCE57, + 22428 - 11904: 0x8B7D, + 22429 - 11904: 0xCE56, + 22430 - 11904: 0xCE51, + 22431 - 11904: 0xCE52, + 22432 - 11904: 0xABAD, + 22433 - 11904: 0x9BF4, + 22434 - 11904: 0xABAF, + 22435 - 11904: 0xABAE, + 22436 - 11904: 0xCE53, + 22437 - 11904: 0xCE5C, + 22439 - 11904: 0x9EF7, + 22442 - 11904: 0x9EC1, + 22446 - 11904: 0xABB1, + 22451 - 11904: 0x87C3, + 22452 - 11904: 0x996F, + 22453 - 11904: 0xCE50, + 22454 - 11904: 0xD153, + 22456 - 11904: 0xD152, + 22457 - 11904: 0xD157, + 22458 - 11904: 0xD14E, + 22459 - 11904: 0x96F1, + 22460 - 11904: 0xD151, + 22461 - 11904: 0xD150, + 22462 - 11904: 0x8E41, + 22463 - 11904: 0xD154, + 22465 - 11904: 0xD158, + 22466 - 11904: 0xAE47, + 22467 - 11904: 0xAE4A, + 22468 - 11904: 0x954A, + 22470 - 11904: 0xD14F, + 22471 - 11904: 0xD155, + 22472 - 11904: 0x97E6, + 22475 - 11904: 0xAE49, + 22476 - 11904: 0xD14A, + 22478 - 11904: 0xABB0, + 22479 - 11904: 0xD4BA, + 22480 - 11904: 0xD156, + 22482 - 11904: 0xD14D, + 22484 - 11904: 0xAE48, + 22485 - 11904: 0xD14C, + 22487 - 11904: 0x96F5, + 22492 - 11904: 0xD4B1, + 22493 - 11904: 0x92E6, + 22494 - 11904: 0x9F42, + 22495 - 11904: 0xB0EC, + 22496 - 11904: 0xB0F0, + 22497 - 11904: 0xD4C1, + 22498 - 11904: 0xD4AF, + 22499 - 11904: 0xD4BD, + 22500 - 11904: 0xB0F1, + 22501 - 11904: 0xD4BF, + 22502 - 11904: 0xFB67, + 22503 - 11904: 0xD4C5, + 22505 - 11904: 0xD4C9, + 22508 - 11904: 0xD4C0, + 22509 - 11904: 0xD4B4, + 22510 - 11904: 0xD4BC, + 22511 - 11904: 0x99A9, + 22512 - 11904: 0xD4CA, + 22513 - 11904: 0xD4C8, + 22514 - 11904: 0xD4BE, + 22515 - 11904: 0xD4B9, + 22516 - 11904: 0xD4B2, + 22517 - 11904: 0xD8A6, + 22518 - 11904: 0xD4B0, + 22519 - 11904: 0xB0F5, + 22520 - 11904: 0xD4B7, + 22521 - 11904: 0xB0F6, + 22522 - 11904: 0xB0F2, + 22523 - 11904: 0xD4AD, + 22524 - 11904: 0xD4C3, + 22525 - 11904: 0xD4B5, + 22526 - 11904: 0xFAE6, + 22528 - 11904: 0xD4B3, + 22529 - 11904: 0xD4C6, + 22530 - 11904: 0xB0F3, + 22531 - 11904: 0xFB69, + 22532 - 11904: 0xD4CC, + 22533 - 11904: 0xB0ED, + 22534 - 11904: 0xB0EF, + 22535 - 11904: 0xD4BB, + 22536 - 11904: 0xD4B6, + 22537 - 11904: 0xAE4B, + 22538 - 11904: 0xB0EE, + 22539 - 11904: 0xD4B8, + 22540 - 11904: 0xD4C7, + 22541 - 11904: 0xD4CB, + 22542 - 11904: 0xD4C2, + 22544 - 11904: 0xD4C4, + 22546 - 11904: 0x97E5, + 22548 - 11904: 0xD4AE, + 22552 - 11904: 0x87C8, + 22553 - 11904: 0xD8A1, + 22555 - 11904: 0xD8AA, + 22556 - 11904: 0xD8A9, + 22557 - 11904: 0xB3FA, + 22558 - 11904: 0xD8A2, + 22560 - 11904: 0xB3FB, + 22561 - 11904: 0xB3F9, + 22562 - 11904: 0x967D, + 22563 - 11904: 0xD8A4, + 22564 - 11904: 0xB3F6, + 22565 - 11904: 0xD8A8, + 22566 - 11904: 0xFB6C, + 22567 - 11904: 0xD8A3, + 22568 - 11904: 0xD8A5, + 22569 - 11904: 0xD87D, + 22570 - 11904: 0xB3F4, + 22572 - 11904: 0xD8B2, + 22573 - 11904: 0xD8B1, + 22574 - 11904: 0xD8AE, + 22575 - 11904: 0xB3F3, + 22576 - 11904: 0xB3F7, + 22577 - 11904: 0xB3F8, + 22578 - 11904: 0xD14B, + 22579 - 11904: 0xD8AB, + 22580 - 11904: 0xB3F5, + 22581 - 11904: 0xB0F4, + 22582 - 11904: 0xD8AD, + 22583 - 11904: 0xD87E, + 22584 - 11904: 0xD8B0, + 22585 - 11904: 0xD8AF, + 22586 - 11904: 0x99A2, + 22587 - 11904: 0xD8B3, + 22589 - 11904: 0xDCEF, + 22591 - 11904: 0xD8AC, + 22592 - 11904: 0x9ABB, + 22596 - 11904: 0x9A65, + 22599 - 11904: 0x944E, + 22600 - 11904: 0xD8A7, + 22601 - 11904: 0xDCE7, + 22602 - 11904: 0xB6F4, + 22603 - 11904: 0xB6F7, + 22604 - 11904: 0xB6F2, + 22605 - 11904: 0xDCE6, + 22606 - 11904: 0xDCEA, + 22607 - 11904: 0xDCE5, + 22609 - 11904: 0xB6EC, + 22610 - 11904: 0xB6F6, + 22611 - 11904: 0xDCE2, + 22612 - 11904: 0xB6F0, + 22613 - 11904: 0xDCE9, + 22615 - 11904: 0xB6EE, + 22616 - 11904: 0xB6ED, + 22617 - 11904: 0xDCEC, + 22618 - 11904: 0xB6EF, + 22619 - 11904: 0xDCEE, + 22620 - 11904: 0xFB6E, + 22621 - 11904: 0xDCEB, + 22622 - 11904: 0xB6EB, + 22623 - 11904: 0x99DF, + 22626 - 11904: 0xB6F5, + 22627 - 11904: 0xDCF0, + 22628 - 11904: 0xDCE4, + 22629 - 11904: 0xDCED, + 22632 - 11904: 0xDCE3, + 22633 - 11904: 0x98E3, + 22635 - 11904: 0xB6F1, + 22636 - 11904: 0x9254, + 22637 - 11904: 0xB6F3, + 22639 - 11904: 0xDCE8, + 22641 - 11904: 0xDCF1, + 22642 - 11904: 0x967B, + 22643 - 11904: 0x8AAF, + 22644 - 11904: 0xE15D, + 22645 - 11904: 0xB9D0, + 22646 - 11904: 0xE163, + 22649 - 11904: 0xB9D5, + 22650 - 11904: 0xE15F, + 22651 - 11904: 0xE166, + 22652 - 11904: 0xE157, + 22653 - 11904: 0xB9D7, + 22654 - 11904: 0xB9D1, + 22655 - 11904: 0xE15C, + 22656 - 11904: 0xBC55, + 22657 - 11904: 0xE15B, + 22658 - 11904: 0xE164, + 22659 - 11904: 0xB9D2, + 22661 - 11904: 0xB9D6, + 22662 - 11904: 0xE15A, + 22663 - 11904: 0xE160, + 22664 - 11904: 0xE165, + 22665 - 11904: 0xE156, + 22666 - 11904: 0xB9D4, + 22667 - 11904: 0xE15E, + 22670 - 11904: 0xE162, + 22671 - 11904: 0xE168, + 22672 - 11904: 0xE158, + 22673 - 11904: 0xE161, + 22674 - 11904: 0x8C77, + 22675 - 11904: 0xB9D3, + 22676 - 11904: 0xE167, + 22678 - 11904: 0x87B0, + 22680 - 11904: 0xE159, + 22681 - 11904: 0x8BAF, + 22682 - 11904: 0x9EBD, + 22684 - 11904: 0xBC59, + 22685 - 11904: 0xE54B, + 22686 - 11904: 0xBC57, + 22687 - 11904: 0xBC56, + 22688 - 11904: 0xE54D, + 22689 - 11904: 0xE552, + 22691 - 11904: 0xE54E, + 22693 - 11904: 0xE551, + 22694 - 11904: 0xBC5C, + 22695 - 11904: 0x9EE6, + 22696 - 11904: 0xBEA5, + 22697 - 11904: 0xBC5B, + 22698 - 11904: 0xFB6F, + 22699 - 11904: 0xE54A, + 22700 - 11904: 0xE550, + 22702 - 11904: 0xBC5A, + 22703 - 11904: 0xE54F, + 22704 - 11904: 0x8EE1, + 22705 - 11904: 0xE54C, + 22707 - 11904: 0xBC58, + 22709 - 11904: 0x9B7D, + 22710 - 11904: 0x9C7E, + 22714 - 11904: 0xE94D, + 22715 - 11904: 0xF9D9, + 22716 - 11904: 0xE94F, + 22717 - 11904: 0xE94A, + 22718 - 11904: 0xBEC1, + 22719 - 11904: 0xE94C, + 22721 - 11904: 0xBEC0, + 22722 - 11904: 0xE94E, + 22725 - 11904: 0xBEC3, + 22726 - 11904: 0xE950, + 22727 - 11904: 0xBEC2, + 22728 - 11904: 0xE949, + 22729 - 11904: 0xE94B, + 22731 - 11904: 0x92EA, + 22734 - 11904: 0xC0A5, + 22735 - 11904: 0xECCC, + 22736 - 11904: 0x8C78, + 22737 - 11904: 0xC0A4, + 22738 - 11904: 0xECCD, + 22739 - 11904: 0xC0A3, + 22740 - 11904: 0xECCB, + 22741 - 11904: 0xC0A2, + 22742 - 11904: 0xECCA, + 22744 - 11904: 0xC253, + 22745 - 11904: 0xC252, + 22746 - 11904: 0xF1F6, + 22747 - 11904: 0xF1F8, + 22748 - 11904: 0xFB72, + 22749 - 11904: 0xF1F7, + 22750 - 11904: 0xC361, + 22751 - 11904: 0xC362, + 22752 - 11904: 0xFB71, + 22754 - 11904: 0xC363, + 22755 - 11904: 0xF442, + 22756 - 11904: 0xC45B, + 22759 - 11904: 0xF7D3, + 22760 - 11904: 0xF7D2, + 22761 - 11904: 0xC5F2, + 22763 - 11904: 0xA468, + 22764 - 11904: 0xA4D0, + 22767 - 11904: 0xA7A7, + 22768 - 11904: 0x895C, + 22770 - 11904: 0x98F0, + 22771 - 11904: 0x96F2, + 22772 - 11904: 0xCE5F, + 22777 - 11904: 0xB3FC, + 22778 - 11904: 0xB3FD, + 22779 - 11904: 0xFB74, + 22780 - 11904: 0xDCF2, + 22781 - 11904: 0xB9D8, + 22782 - 11904: 0xE169, + 22783 - 11904: 0xE553, + 22786 - 11904: 0x8BC1, + 22787 - 11904: 0xC95A, + 22788 - 11904: 0x895D, + 22789 - 11904: 0x89DE, + 22790 - 11904: 0xCAB0, + 22791 - 11904: 0x895E, + 22794 - 11904: 0xC6CA, + 22796 - 11904: 0xCC42, + 22797 - 11904: 0xCE60, + 22798 - 11904: 0xD159, + 22799 - 11904: 0xAE4C, + 22801 - 11904: 0xFE42, + 22802 - 11904: 0xF1F9, + 22804 - 11904: 0xC4DC, + 22805 - 11904: 0xA469, + 22806 - 11904: 0xA57E, + 22807 - 11904: 0xC970, + 22809 - 11904: 0xA667, + 22810 - 11904: 0xA668, + 22812 - 11904: 0xA95D, + 22813 - 11904: 0x8768, + 22815 - 11904: 0xFB7B, + 22816 - 11904: 0xB0F7, + 22818 - 11904: 0xB9DA, + 22820 - 11904: 0xB9DB, + 22821 - 11904: 0xB9D9, + 22823 - 11904: 0xA46A, + 22825 - 11904: 0xA4D1, + 22826 - 11904: 0xA4D3, + 22827 - 11904: 0xA4D2, + 22828 - 11904: 0xC95B, + 22829 - 11904: 0xA4D4, + 22830 - 11904: 0xA5A1, + 22831 - 11904: 0xC971, + 22833 - 11904: 0xA5A2, + 22834 - 11904: 0x895F, + 22836 - 11904: 0x8960, + 22839 - 11904: 0xA669, + 22840 - 11904: 0xA66A, + 22844 - 11904: 0xC9CB, + 22846 - 11904: 0xA7A8, + 22848 - 11904: 0xCAB1, + 22852 - 11904: 0xA961, + 22853 - 11904: 0xCC43, + 22855 - 11904: 0xA95F, + 22856 - 11904: 0xA960, + 22857 - 11904: 0xA95E, + 22858 - 11904: 0xD15A, + 22862 - 11904: 0xABB6, + 22863 - 11904: 0xABB5, + 22864 - 11904: 0xABB7, + 22865 - 11904: 0xABB4, + 22867 - 11904: 0xCE61, + 22868 - 11904: 0xA962, + 22869 - 11904: 0xABB3, + 22871 - 11904: 0xAE4D, + 22872 - 11904: 0xAE4E, + 22874 - 11904: 0xAE4F, + 22876 - 11904: 0xD4CD, + 22880 - 11904: 0xB3FE, + 22881 - 11904: 0xD8B4, + 22882 - 11904: 0xB0F8, + 22885 - 11904: 0x9BCD, + 22887 - 11904: 0xB6F8, + 22889 - 11904: 0xB9DD, + 22890 - 11904: 0xB9DC, + 22891 - 11904: 0xE16A, + 22893 - 11904: 0xBC5D, + 22894 - 11904: 0xBEC4, + 22896 - 11904: 0xEFC0, + 22897 - 11904: 0xF6DA, + 22898 - 11904: 0xF7D4, + 22899 - 11904: 0xA46B, + 22900 - 11904: 0xA5A3, + 22901 - 11904: 0x9DD3, + 22902 - 11904: 0xA5A4, + 22903 - 11904: 0xC9D1, + 22904 - 11904: 0xA66C, + 22905 - 11904: 0xA66F, + 22907 - 11904: 0xC9CF, + 22908 - 11904: 0xC9CD, + 22909 - 11904: 0xA66E, + 22910 - 11904: 0xC9D0, + 22911 - 11904: 0xC9D2, + 22912 - 11904: 0xC9CC, + 22913 - 11904: 0xA671, + 22914 - 11904: 0xA670, + 22915 - 11904: 0xA66D, + 22916 - 11904: 0xA66B, + 22917 - 11904: 0xC9CE, + 22921 - 11904: 0x984C, + 22922 - 11904: 0xA7B3, + 22925 - 11904: 0xA7B0, + 22926 - 11904: 0xCAB6, + 22927 - 11904: 0xCAB9, + 22928 - 11904: 0xCAB8, + 22930 - 11904: 0xA7AA, + 22931 - 11904: 0xA7B2, + 22932 - 11904: 0x9752, + 22934 - 11904: 0xA7AF, + 22935 - 11904: 0xCAB5, + 22936 - 11904: 0xCAB3, + 22937 - 11904: 0xA7AE, + 22938 - 11904: 0x95C3, + 22941 - 11904: 0xA7A9, + 22942 - 11904: 0xA7AC, + 22943 - 11904: 0x9BB6, + 22944 - 11904: 0xCAB4, + 22945 - 11904: 0xCABB, + 22946 - 11904: 0xCAB7, + 22947 - 11904: 0xA7AD, + 22948 - 11904: 0xA7B1, + 22949 - 11904: 0xA7B4, + 22950 - 11904: 0xCAB2, + 22951 - 11904: 0xCABA, + 22952 - 11904: 0xA7AB, + 22956 - 11904: 0x9AB9, + 22958 - 11904: 0xA967, + 22959 - 11904: 0xA96F, + 22960 - 11904: 0x97B3, + 22961 - 11904: 0xCC4F, + 22962 - 11904: 0xCC48, + 22963 - 11904: 0xA970, + 22964 - 11904: 0xCC53, + 22965 - 11904: 0xCC44, + 22966 - 11904: 0xCC4B, + 22967 - 11904: 0x9F74, + 22968 - 11904: 0x92F1, + 22969 - 11904: 0xA966, + 22970 - 11904: 0xCC45, + 22971 - 11904: 0xA964, + 22972 - 11904: 0xCC4C, + 22973 - 11904: 0xCC50, + 22974 - 11904: 0xA963, + 22975 - 11904: 0x8CFA, + 22976 - 11904: 0xCC51, + 22977 - 11904: 0xCC4A, + 22979 - 11904: 0xCC4D, + 22980 - 11904: 0x97DF, + 22981 - 11904: 0xA972, + 22982 - 11904: 0xA969, + 22983 - 11904: 0xCC54, + 22984 - 11904: 0xCC52, + 22985 - 11904: 0xFBA6, + 22986 - 11904: 0xA96E, + 22987 - 11904: 0xA96C, + 22988 - 11904: 0xCC49, + 22989 - 11904: 0xA96B, + 22990 - 11904: 0xCC47, + 22991 - 11904: 0xCC46, + 22992 - 11904: 0xA96A, + 22993 - 11904: 0xA968, + 22994 - 11904: 0xA971, + 22995 - 11904: 0xA96D, + 22996 - 11904: 0xA965, + 22998 - 11904: 0xCC4E, + 23000 - 11904: 0xABB9, + 23001 - 11904: 0xFBAB, + 23002 - 11904: 0xABC0, + 23003 - 11904: 0xCE6F, + 23004 - 11904: 0xABB8, + 23005 - 11904: 0xCE67, + 23006 - 11904: 0xCE63, + 23008 - 11904: 0xCE73, + 23009 - 11904: 0xCE62, + 23011 - 11904: 0xABBB, + 23012 - 11904: 0xCE6C, + 23013 - 11904: 0xABBE, + 23014 - 11904: 0xABC1, + 23016 - 11904: 0xABBC, + 23017 - 11904: 0xCE70, + 23018 - 11904: 0xABBF, + 23019 - 11904: 0x9877, + 23020 - 11904: 0xAE56, + 23021 - 11904: 0xCE76, + 23022 - 11904: 0xCE64, + 23023 - 11904: 0x9854, + 23024 - 11904: 0x95C5, + 23025 - 11904: 0xCE66, + 23026 - 11904: 0xCE6D, + 23027 - 11904: 0xCE71, + 23028 - 11904: 0xCE75, + 23029 - 11904: 0xCE72, + 23030 - 11904: 0xCE6B, + 23031 - 11904: 0xCE6E, + 23032 - 11904: 0x9D55, + 23033 - 11904: 0xFBB2, + 23034 - 11904: 0xCE68, + 23035 - 11904: 0xABC3, + 23036 - 11904: 0xCE6A, + 23037 - 11904: 0xCE69, + 23038 - 11904: 0xCE74, + 23039 - 11904: 0xABBA, + 23040 - 11904: 0xCE65, + 23041 - 11904: 0xABC2, + 23042 - 11904: 0x957E, + 23043 - 11904: 0xABBD, + 23049 - 11904: 0xAE5C, + 23050 - 11904: 0xD162, + 23051 - 11904: 0x9742, + 23052 - 11904: 0xAE5B, + 23053 - 11904: 0x94E6, + 23055 - 11904: 0xD160, + 23057 - 11904: 0xAE50, + 23058 - 11904: 0x92F5, + 23059 - 11904: 0xAE55, + 23061 - 11904: 0xD15F, + 23062 - 11904: 0xD15C, + 23063 - 11904: 0xD161, + 23064 - 11904: 0xAE51, + 23065 - 11904: 0xD15B, + 23066 - 11904: 0x8CC5, + 23067 - 11904: 0xAE54, + 23068 - 11904: 0xAE52, + 23070 - 11904: 0xD163, + 23071 - 11904: 0xAE53, + 23072 - 11904: 0xAE57, + 23073 - 11904: 0x92FD, + 23075 - 11904: 0xAE58, + 23076 - 11904: 0xFBA2, + 23077 - 11904: 0xAE5A, + 23079 - 11904: 0x9C51, + 23081 - 11904: 0xAE59, + 23082 - 11904: 0x94E9, + 23083 - 11904: 0x985C, + 23084 - 11904: 0x92F0, + 23085 - 11904: 0xD15D, + 23086 - 11904: 0xD15E, + 23091 - 11904: 0xD164, + 23093 - 11904: 0xD4D4, + 23094 - 11904: 0xB0F9, + 23095 - 11904: 0xD8C2, + 23096 - 11904: 0xD4D3, + 23097 - 11904: 0xD4E6, + 23100 - 11904: 0xB140, + 23101 - 11904: 0x944C, + 23102 - 11904: 0xD4E4, + 23104 - 11904: 0xB0FE, + 23105 - 11904: 0xB0FA, + 23106 - 11904: 0xD4ED, + 23107 - 11904: 0xD4DD, + 23108 - 11904: 0xD4E0, + 23109 - 11904: 0x916B, + 23110 - 11904: 0xB143, + 23111 - 11904: 0xD4EA, + 23112 - 11904: 0xD4E2, + 23113 - 11904: 0xB0FB, + 23114 - 11904: 0xB144, + 23116 - 11904: 0xD4E7, + 23117 - 11904: 0xD4E5, + 23120 - 11904: 0xD4D6, + 23121 - 11904: 0xD4EB, + 23122 - 11904: 0xD4DF, + 23123 - 11904: 0xD4DA, + 23124 - 11904: 0x8B78, + 23125 - 11904: 0xD4D0, + 23126 - 11904: 0xD4EC, + 23127 - 11904: 0xD4DC, + 23128 - 11904: 0xD4CF, + 23129 - 11904: 0x94E2, + 23130 - 11904: 0xB142, + 23131 - 11904: 0xD4E1, + 23132 - 11904: 0xD4EE, + 23133 - 11904: 0xD4DE, + 23134 - 11904: 0xD4D2, + 23135 - 11904: 0xD4D7, + 23136 - 11904: 0xD4CE, + 23137 - 11904: 0x984F, + 23138 - 11904: 0xB141, + 23139 - 11904: 0xFBB5, + 23140 - 11904: 0xD4DB, + 23141 - 11904: 0xD4D8, + 23142 - 11904: 0xB0FC, + 23143 - 11904: 0xD4D1, + 23144 - 11904: 0x9271, + 23145 - 11904: 0xD4E9, + 23146 - 11904: 0xB0FD, + 23147 - 11904: 0x9365, + 23148 - 11904: 0xD4D9, + 23149 - 11904: 0xD4D5, + 23150 - 11904: 0x985B, + 23152 - 11904: 0xD4E8, + 23153 - 11904: 0x9850, + 23159 - 11904: 0xFBB8, + 23160 - 11904: 0xD8BB, + 23161 - 11904: 0x97BC, + 23162 - 11904: 0xD8B8, + 23163 - 11904: 0xD8C9, + 23164 - 11904: 0xD8BD, + 23165 - 11904: 0xD8CA, + 23166 - 11904: 0x92F3, + 23167 - 11904: 0xB442, + 23169 - 11904: 0x9340, + 23170 - 11904: 0x984D, + 23171 - 11904: 0xD8C6, + 23172 - 11904: 0xD8C3, + 23174 - 11904: 0x9572, + 23176 - 11904: 0xFDEF, + 23178 - 11904: 0xD8C4, + 23179 - 11904: 0xD8C7, + 23180 - 11904: 0xD8CB, + 23182 - 11904: 0xD4E3, + 23183 - 11904: 0xD8CD, + 23184 - 11904: 0xDD47, + 23185 - 11904: 0xFDC1, + 23186 - 11904: 0xB443, + 23187 - 11904: 0xD8CE, + 23188 - 11904: 0xD8B6, + 23189 - 11904: 0xD8C0, + 23190 - 11904: 0xFBBA, + 23191 - 11904: 0xD8C5, + 23193 - 11904: 0x92EB, + 23194 - 11904: 0xB441, + 23195 - 11904: 0xB444, + 23196 - 11904: 0xD8CC, + 23197 - 11904: 0xD8CF, + 23198 - 11904: 0xD8BA, + 23199 - 11904: 0xD8B7, + 23200 - 11904: 0xFC73, + 23201 - 11904: 0x97B7, + 23202 - 11904: 0xD8B9, + 23204 - 11904: 0x876F, + 23205 - 11904: 0xD8BE, + 23206 - 11904: 0xD8BC, + 23207 - 11904: 0xB445, + 23209 - 11904: 0xD8C8, + 23211 - 11904: 0xFBB4, + 23212 - 11904: 0xD8BF, + 23214 - 11904: 0xD8C1, + 23215 - 11904: 0xD8B5, + 23216 - 11904: 0xDCFA, + 23217 - 11904: 0xDCF8, + 23218 - 11904: 0xB742, + 23219 - 11904: 0xB740, + 23220 - 11904: 0xDD43, + 23221 - 11904: 0xDCF9, + 23222 - 11904: 0xDD44, + 23223 - 11904: 0xDD40, + 23224 - 11904: 0xDCF7, + 23225 - 11904: 0xDD46, + 23226 - 11904: 0xDCF6, + 23227 - 11904: 0xDCFD, + 23228 - 11904: 0xB6FE, + 23229 - 11904: 0xB6FD, + 23230 - 11904: 0xB6FC, + 23231 - 11904: 0xDCFB, + 23232 - 11904: 0xDD41, + 23233 - 11904: 0xB6F9, + 23234 - 11904: 0xB741, + 23235 - 11904: 0x90A7, + 23236 - 11904: 0xDCF4, + 23238 - 11904: 0xDCFE, + 23239 - 11904: 0xDCF3, + 23240 - 11904: 0xDCFC, + 23241 - 11904: 0xB6FA, + 23242 - 11904: 0xDD42, + 23243 - 11904: 0xDCF5, + 23244 - 11904: 0xB6FB, + 23245 - 11904: 0xDD45, + 23246 - 11904: 0x9741, + 23247 - 11904: 0x92F4, + 23249 - 11904: 0x8772, + 23251 - 11904: 0xFBBC, + 23253 - 11904: 0xE16E, + 23254 - 11904: 0xB9E2, + 23255 - 11904: 0xB9E1, + 23256 - 11904: 0xB9E3, + 23257 - 11904: 0xE17A, + 23258 - 11904: 0xE170, + 23259 - 11904: 0xE176, + 23260 - 11904: 0xE16B, + 23261 - 11904: 0xE179, + 23262 - 11904: 0xE178, + 23263 - 11904: 0xE17C, + 23264 - 11904: 0xE175, + 23265 - 11904: 0xB9DE, + 23266 - 11904: 0xE174, + 23267 - 11904: 0xB9E4, + 23268 - 11904: 0x9577, + 23269 - 11904: 0xE16D, + 23270 - 11904: 0xB9DF, + 23272 - 11904: 0xE17B, + 23273 - 11904: 0xB9E0, + 23274 - 11904: 0xE16F, + 23275 - 11904: 0xE172, + 23276 - 11904: 0xE177, + 23277 - 11904: 0xE171, + 23278 - 11904: 0xE16C, + 23280 - 11904: 0x9EE2, + 23282 - 11904: 0x8F78, + 23283 - 11904: 0xE173, + 23284 - 11904: 0xE555, + 23285 - 11904: 0xBC61, + 23286 - 11904: 0xE558, + 23287 - 11904: 0xE557, + 23288 - 11904: 0xE55A, + 23289 - 11904: 0xE55C, + 23290 - 11904: 0xF9DC, + 23291 - 11904: 0xBC5F, + 23293 - 11904: 0xE556, + 23294 - 11904: 0x9672, + 23295 - 11904: 0xE554, + 23297 - 11904: 0xE55D, + 23298 - 11904: 0xE55B, + 23299 - 11904: 0xE559, + 23301 - 11904: 0xE55F, + 23303 - 11904: 0xE55E, + 23304 - 11904: 0xBC63, + 23305 - 11904: 0xBC5E, + 23307 - 11904: 0xBC60, + 23308 - 11904: 0xBC62, + 23309 - 11904: 0x9EB5, + 23311 - 11904: 0xE560, + 23312 - 11904: 0xE957, + 23313 - 11904: 0x964B, + 23315 - 11904: 0xE956, + 23316 - 11904: 0xE955, + 23317 - 11904: 0x8CAC, + 23318 - 11904: 0xE958, + 23319 - 11904: 0xE951, + 23321 - 11904: 0xE952, + 23322 - 11904: 0xE95A, + 23323 - 11904: 0xE953, + 23325 - 11904: 0xBEC5, + 23326 - 11904: 0xE95C, + 23327 - 11904: 0xA0FA, + 23328 - 11904: 0xE95B, + 23329 - 11904: 0xE954, + 23331 - 11904: 0xECD1, + 23332 - 11904: 0xC0A8, + 23333 - 11904: 0xECCF, + 23334 - 11904: 0xECD4, + 23335 - 11904: 0xECD3, + 23336 - 11904: 0xE959, + 23338 - 11904: 0xC0A7, + 23339 - 11904: 0x9575, + 23340 - 11904: 0xECD2, + 23341 - 11904: 0xECCE, + 23342 - 11904: 0xECD6, + 23343 - 11904: 0xECD5, + 23344 - 11904: 0xC0A6, + 23346 - 11904: 0xECD0, + 23348 - 11904: 0xBEC6, + 23352 - 11904: 0xC254, + 23356 - 11904: 0xEFC1, + 23357 - 11904: 0xF1FA, + 23358 - 11904: 0xF1FB, + 23359 - 11904: 0xF1FC, + 23360 - 11904: 0xC45C, + 23361 - 11904: 0x90DA, + 23363 - 11904: 0xC45D, + 23364 - 11904: 0x9367, + 23365 - 11904: 0xF443, + 23366 - 11904: 0xFEA4, + 23367 - 11904: 0xF5C8, + 23368 - 11904: 0xF5C7, + 23370 - 11904: 0x90DF, + 23371 - 11904: 0xF6DB, + 23372 - 11904: 0xF6DC, + 23373 - 11904: 0xF7D5, + 23374 - 11904: 0xF8A7, + 23375 - 11904: 0x9354, + 23376 - 11904: 0xA46C, + 23377 - 11904: 0xA46D, + 23379 - 11904: 0xA46E, + 23380 - 11904: 0xA4D5, + 23381 - 11904: 0xA5A5, + 23382 - 11904: 0xC9D3, + 23383 - 11904: 0xA672, + 23384 - 11904: 0xA673, + 23386 - 11904: 0xA7B7, + 23387 - 11904: 0xA7B8, + 23388 - 11904: 0xA7B6, + 23389 - 11904: 0xA7B5, + 23391 - 11904: 0xA973, + 23394 - 11904: 0xCC55, + 23395 - 11904: 0xA975, + 23396 - 11904: 0xA974, + 23397 - 11904: 0xCC56, + 23398 - 11904: 0x8961, + 23400 - 11904: 0x8BB4, + 23401 - 11904: 0xABC4, + 23403 - 11904: 0xAE5D, + 23404 - 11904: 0xD165, + 23405 - 11904: 0x9DC0, + 23406 - 11904: 0xD4F0, + 23408 - 11904: 0xB145, + 23409 - 11904: 0xB447, + 23410 - 11904: 0xD4EF, + 23411 - 11904: 0xB446, + 23412 - 11904: 0x8E48, + 23413 - 11904: 0xB9E5, + 23414 - 11904: 0xFBC5, + 23415 - 11904: 0xE17D, + 23416 - 11904: 0xBEC7, + 23418 - 11904: 0xC0A9, + 23419 - 11904: 0xECD7, + 23420 - 11904: 0xFBC7, + 23421 - 11904: 0xC45E, + 23423 - 11904: 0xC570, + 23424 - 11904: 0xC6CB, + 23425 - 11904: 0xC972, + 23426 - 11904: 0xFA79, + 23427 - 11904: 0xA5A6, + 23428 - 11904: 0xC973, + 23429 - 11904: 0xA676, + 23431 - 11904: 0xA674, + 23432 - 11904: 0xA675, + 23433 - 11904: 0xA677, + 23435 - 11904: 0xA7BA, + 23436 - 11904: 0xA7B9, + 23438 - 11904: 0xCABC, + 23439 - 11904: 0xA7BB, + 23440 - 11904: 0x9E67, + 23442 - 11904: 0xCABD, + 23443 - 11904: 0xCC57, + 23445 - 11904: 0xCC58, + 23446 - 11904: 0x8CD9, + 23447 - 11904: 0xA976, + 23448 - 11904: 0xA978, + 23449 - 11904: 0xA97A, + 23450 - 11904: 0xA977, + 23451 - 11904: 0xA97B, + 23452 - 11904: 0xA979, + 23453 - 11904: 0xFBD2, + 23454 - 11904: 0x8962, + 23455 - 11904: 0x8963, + 23458 - 11904: 0xABC8, + 23459 - 11904: 0xABC5, + 23460 - 11904: 0xABC7, + 23461 - 11904: 0xABC9, + 23462 - 11904: 0xABC6, + 23463 - 11904: 0xD166, + 23464 - 11904: 0xCE77, + 23466 - 11904: 0xFC7D, + 23468 - 11904: 0xD168, + 23469 - 11904: 0xD167, + 23470 - 11904: 0xAE63, + 23472 - 11904: 0xAE5F, + 23475 - 11904: 0xAE60, + 23476 - 11904: 0xAE62, + 23477 - 11904: 0xAE64, + 23478 - 11904: 0xAE61, + 23479 - 11904: 0x8773, + 23480 - 11904: 0xAE66, + 23481 - 11904: 0xAE65, + 23487 - 11904: 0xB14A, + 23488 - 11904: 0xD4F2, + 23489 - 11904: 0xD4F1, + 23490 - 11904: 0xB149, + 23491 - 11904: 0x9F6B, + 23492 - 11904: 0xB148, + 23493 - 11904: 0xB147, + 23494 - 11904: 0xB14B, + 23495 - 11904: 0xB146, + 23498 - 11904: 0xD8D5, + 23499 - 11904: 0xD8D2, + 23500 - 11904: 0xB449, + 23501 - 11904: 0xD8D1, + 23502 - 11904: 0xD8D6, + 23504 - 11904: 0xB44B, + 23505 - 11904: 0xD8D4, + 23506 - 11904: 0xB448, + 23507 - 11904: 0xB44A, + 23508 - 11904: 0xD8D3, + 23509 - 11904: 0xFBCC, + 23510 - 11904: 0xDD48, + 23511 - 11904: 0xFEAE, + 23512 - 11904: 0xDD49, + 23513 - 11904: 0xDD4A, + 23515 - 11904: 0x876D, + 23518 - 11904: 0xB9E6, + 23519 - 11904: 0xB9EE, + 23520 - 11904: 0xE17E, + 23521 - 11904: 0xB9E8, + 23522 - 11904: 0xB9EC, + 23523 - 11904: 0xE1A1, + 23524 - 11904: 0xB9ED, + 23525 - 11904: 0xB9E9, + 23526 - 11904: 0xB9EA, + 23527 - 11904: 0xB9E7, + 23528 - 11904: 0xB9EB, + 23529 - 11904: 0xBC66, + 23530 - 11904: 0xD8D0, + 23531 - 11904: 0xBC67, + 23532 - 11904: 0xBC65, + 23534 - 11904: 0xBC64, + 23535 - 11904: 0xE95D, + 23536 - 11904: 0xBEC8, + 23537 - 11904: 0xECD8, + 23538 - 11904: 0xECD9, + 23539 - 11904: 0xFBD1, + 23541 - 11904: 0xC364, + 23542 - 11904: 0xC45F, + 23544 - 11904: 0xA46F, + 23546 - 11904: 0xA678, + 23551 - 11904: 0xFB75, + 23553 - 11904: 0xABCA, + 23555 - 11904: 0xD169, + 23556 - 11904: 0xAE67, + 23557 - 11904: 0xFBD4, + 23559 - 11904: 0xB14E, + 23560 - 11904: 0xB14D, + 23561 - 11904: 0xB14C, + 23562 - 11904: 0xB44C, + 23563 - 11904: 0xB44D, + 23564 - 11904: 0xD8D7, + 23565 - 11904: 0xB9EF, + 23566 - 11904: 0xBEC9, + 23567 - 11904: 0xA470, + 23568 - 11904: 0xC95C, + 23569 - 11904: 0xA4D6, + 23570 - 11904: 0xC974, + 23571 - 11904: 0xFBD6, + 23572 - 11904: 0xFBD8, + 23573 - 11904: 0xC9D4, + 23574 - 11904: 0xA679, + 23578 - 11904: 0xA97C, + 23580 - 11904: 0x8B5D, + 23582 - 11904: 0x934C, + 23583 - 11904: 0xDD4B, + 23584 - 11904: 0x9AE2, + 23586 - 11904: 0xA471, + 23587 - 11904: 0x8BC9, + 23588 - 11904: 0xA4D7, + 23589 - 11904: 0xC9D5, + 23592 - 11904: 0xCABE, + 23594 - 11904: 0xCABF, + 23596 - 11904: 0xA7BC, + 23600 - 11904: 0xD8D8, + 23601 - 11904: 0xB44E, + 23603 - 11904: 0xDD4C, + 23607 - 11904: 0xC0AA, + 23608 - 11904: 0xA472, + 23609 - 11904: 0xA4A8, + 23610 - 11904: 0xA4D8, + 23611 - 11904: 0xC975, + 23612 - 11904: 0xA5A7, + 23614 - 11904: 0xA7C0, + 23615 - 11904: 0xA7BF, + 23616 - 11904: 0xA7BD, + 23617 - 11904: 0xA7BE, + 23620 - 11904: 0xCC59, + 23621 - 11904: 0xA97E, + 23622 - 11904: 0xA9A1, + 23623 - 11904: 0xCC5A, + 23624 - 11904: 0xA97D, + 23625 - 11904: 0xFBDB, + 23626 - 11904: 0x9FC9, + 23627 - 11904: 0xABCE, + 23628 - 11904: 0xCE78, + 23629 - 11904: 0xABCD, + 23630 - 11904: 0xABCB, + 23631 - 11904: 0xABCC, + 23632 - 11904: 0xAE6A, + 23633 - 11904: 0xAE68, + 23635 - 11904: 0x9F44, + 23636 - 11904: 0xD16B, + 23637 - 11904: 0xAE69, + 23638 - 11904: 0xD16A, + 23640 - 11904: 0xAE5E, + 23641 - 11904: 0xD4F3, + 23644 - 11904: 0xB150, + 23645 - 11904: 0xB151, + 23646 - 11904: 0x98ED, + 23648 - 11904: 0xB14F, + 23650 - 11904: 0xB9F0, + 23651 - 11904: 0xE1A2, + 23652 - 11904: 0xBC68, + 23653 - 11904: 0xBC69, + 23655 - 11904: 0xE561, + 23656 - 11904: 0xC0AB, + 23657 - 11904: 0xEFC2, + 23658 - 11904: 0xEFC3, + 23660 - 11904: 0xC4DD, + 23661 - 11904: 0xF8A8, + 23662 - 11904: 0xC94B, + 23663 - 11904: 0xA4D9, + 23665 - 11904: 0xA473, + 23667 - 11904: 0xC977, + 23668 - 11904: 0xC976, + 23672 - 11904: 0x8CE9, + 23673 - 11904: 0xA67A, + 23674 - 11904: 0xC9D7, + 23675 - 11904: 0xC9D8, + 23676 - 11904: 0xC9D6, + 23678 - 11904: 0xC9D9, + 23685 - 11904: 0xFBDD, + 23686 - 11904: 0xCAC7, + 23688 - 11904: 0xCAC2, + 23689 - 11904: 0xCAC4, + 23690 - 11904: 0xCAC6, + 23691 - 11904: 0xCAC3, + 23692 - 11904: 0xA7C4, + 23693 - 11904: 0xCAC0, + 23695 - 11904: 0xCAC1, + 23696 - 11904: 0xA7C1, + 23697 - 11904: 0xA7C2, + 23698 - 11904: 0xCAC5, + 23699 - 11904: 0xCAC8, + 23700 - 11904: 0xA7C3, + 23701 - 11904: 0xCAC9, + 23705 - 11904: 0x8DF2, + 23706 - 11904: 0x8964, + 23708 - 11904: 0xFDF2, + 23709 - 11904: 0xCC68, + 23710 - 11904: 0x934D, + 23711 - 11904: 0xCC62, + 23712 - 11904: 0xCC5D, + 23713 - 11904: 0xA9A3, + 23714 - 11904: 0xCC65, + 23715 - 11904: 0xCC63, + 23716 - 11904: 0xCC5C, + 23717 - 11904: 0xCC69, + 23718 - 11904: 0xCC6C, + 23719 - 11904: 0xCC67, + 23720 - 11904: 0xCC60, + 23721 - 11904: 0xA9A5, + 23722 - 11904: 0xCC66, + 23723 - 11904: 0xA9A6, + 23724 - 11904: 0xCC61, + 23725 - 11904: 0xCC64, + 23726 - 11904: 0xCC5B, + 23727 - 11904: 0xCC5F, + 23728 - 11904: 0xCC6B, + 23729 - 11904: 0xA9A7, + 23731 - 11904: 0xA9A8, + 23733 - 11904: 0xCC5E, + 23734 - 11904: 0xCC6A, + 23735 - 11904: 0xA9A2, + 23736 - 11904: 0xA9A4, + 23738 - 11904: 0xFBE7, + 23745 - 11904: 0xA0F2, + 23746 - 11904: 0x9868, + 23750 - 11904: 0xCEAB, + 23751 - 11904: 0xCEA4, + 23752 - 11904: 0xCEAA, + 23753 - 11904: 0xCEA3, + 23754 - 11904: 0xCEA5, + 23755 - 11904: 0xCE7D, + 23756 - 11904: 0xCE7B, + 23758 - 11904: 0xCEAC, + 23759 - 11904: 0xCEA9, + 23760 - 11904: 0xCE79, + 23761 - 11904: 0x9F58, + 23762 - 11904: 0xABD0, + 23763 - 11904: 0xCEA7, + 23764 - 11904: 0xCEA8, + 23765 - 11904: 0x8CE6, + 23766 - 11904: 0xCEA6, + 23767 - 11904: 0xCE7C, + 23768 - 11904: 0xCE7A, + 23769 - 11904: 0xABCF, + 23770 - 11904: 0xCEA2, + 23771 - 11904: 0xCE7E, + 23774 - 11904: 0xCEA1, + 23775 - 11904: 0xCEAD, + 23781 - 11904: 0x8D73, + 23784 - 11904: 0xAE6F, + 23785 - 11904: 0xFBDE, + 23786 - 11904: 0xAE6E, + 23788 - 11904: 0xD16C, + 23789 - 11904: 0xAE6B, + 23790 - 11904: 0xD16E, + 23791 - 11904: 0xFBDF, + 23792 - 11904: 0xAE70, + 23793 - 11904: 0xD16F, + 23796 - 11904: 0xAE73, + 23797 - 11904: 0x8C48, + 23798 - 11904: 0xAE71, + 23799 - 11904: 0xD170, + 23800 - 11904: 0xCEAE, + 23801 - 11904: 0xD172, + 23803 - 11904: 0xAE6D, + 23804 - 11904: 0x8774, + 23805 - 11904: 0xAE6C, + 23807 - 11904: 0xD16D, + 23808 - 11904: 0xD171, + 23809 - 11904: 0xAE72, + 23814 - 11904: 0xB153, + 23815 - 11904: 0xB152, + 23819 - 11904: 0xD4F5, + 23820 - 11904: 0xD4F9, + 23821 - 11904: 0xD4FB, + 23822 - 11904: 0xB154, + 23823 - 11904: 0xD4FE, + 23824 - 11904: 0xFBE3, + 23825 - 11904: 0xB158, + 23826 - 11904: 0xD541, + 23828 - 11904: 0xB15A, + 23829 - 11904: 0x8DA8, + 23830 - 11904: 0xB156, + 23831 - 11904: 0xB15E, + 23832 - 11904: 0xFBE4, + 23833 - 11904: 0xB15B, + 23834 - 11904: 0xD4F7, + 23835 - 11904: 0xB155, + 23837 - 11904: 0xD4F6, + 23838 - 11904: 0xD4F4, + 23839 - 11904: 0xD543, + 23840 - 11904: 0xD4F8, + 23842 - 11904: 0xB157, + 23843 - 11904: 0xD542, + 23844 - 11904: 0xB15C, + 23845 - 11904: 0xD4FD, + 23846 - 11904: 0xD4FC, + 23847 - 11904: 0xB15D, + 23848 - 11904: 0xD4FA, + 23849 - 11904: 0xB159, + 23852 - 11904: 0x9C75, + 23854 - 11904: 0xD544, + 23855 - 11904: 0x9878, + 23856 - 11904: 0xD540, + 23857 - 11904: 0xD8E7, + 23858 - 11904: 0xD8EE, + 23859 - 11904: 0xD8E3, + 23860 - 11904: 0xB451, + 23861 - 11904: 0xD8DF, + 23862 - 11904: 0xD8EF, + 23863 - 11904: 0xD8D9, + 23864 - 11904: 0xD8EC, + 23865 - 11904: 0xD8EA, + 23866 - 11904: 0xD8E4, + 23868 - 11904: 0xD8ED, + 23869 - 11904: 0xD8E6, + 23870 - 11904: 0x8D60, + 23871 - 11904: 0xD8DE, + 23872 - 11904: 0xD8F0, + 23873 - 11904: 0xD8DC, + 23874 - 11904: 0xD8E9, + 23875 - 11904: 0xD8DA, + 23877 - 11904: 0xD8F1, + 23878 - 11904: 0xFBE5, + 23879 - 11904: 0xB452, + 23880 - 11904: 0x8D61, + 23881 - 11904: 0xD8EB, + 23882 - 11904: 0xDD4F, + 23883 - 11904: 0xD8DD, + 23884 - 11904: 0xB44F, + 23886 - 11904: 0xD8E1, + 23888 - 11904: 0xB450, + 23889 - 11904: 0xD8E0, + 23890 - 11904: 0xD8E5, + 23893 - 11904: 0xD8E2, + 23894 - 11904: 0x8D62, + 23895 - 11904: 0xA0A1, + 23897 - 11904: 0xD8E8, + 23899 - 11904: 0x9C40, + 23902 - 11904: 0xDD53, + 23906 - 11904: 0xDD56, + 23907 - 11904: 0xDD4E, + 23909 - 11904: 0xDD50, + 23911 - 11904: 0xDD55, + 23912 - 11904: 0xDD54, + 23913 - 11904: 0xB743, + 23915 - 11904: 0xD8DB, + 23916 - 11904: 0xDD52, + 23919 - 11904: 0xB744, + 23920 - 11904: 0x98AD, + 23921 - 11904: 0xDD4D, + 23922 - 11904: 0xDD51, + 23924 - 11904: 0x9EEA, + 23927 - 11904: 0xE1A9, + 23928 - 11904: 0x8CEC, + 23929 - 11904: 0xE1B0, + 23930 - 11904: 0xE1A7, + 23931 - 11904: 0x8CD4, + 23932 - 11904: 0xE1AE, + 23933 - 11904: 0xE1A5, + 23934 - 11904: 0xE1AD, + 23935 - 11904: 0xE1B1, + 23936 - 11904: 0xE1A4, + 23937 - 11904: 0xE1A8, + 23938 - 11904: 0xE1A3, + 23940 - 11904: 0xB9F1, + 23941 - 11904: 0x9CEB, + 23942 - 11904: 0xE1A6, + 23943 - 11904: 0xB9F2, + 23944 - 11904: 0xE1AC, + 23945 - 11904: 0xE1AB, + 23946 - 11904: 0xE1AA, + 23947 - 11904: 0xFBE0, + 23949 - 11904: 0xE1AF, + 23950 - 11904: 0x9F51, + 23954 - 11904: 0xE565, + 23955 - 11904: 0xE567, + 23956 - 11904: 0xBC6B, + 23957 - 11904: 0xE568, + 23959 - 11904: 0xE563, + 23961 - 11904: 0xE562, + 23962 - 11904: 0xE56C, + 23964 - 11904: 0xE56A, + 23965 - 11904: 0xBC6A, + 23966 - 11904: 0xE56D, + 23967 - 11904: 0xE564, + 23968 - 11904: 0xE569, + 23969 - 11904: 0xE56B, + 23970 - 11904: 0xE566, + 23972 - 11904: 0x8D65, + 23975 - 11904: 0xE961, + 23976 - 11904: 0xE966, + 23977 - 11904: 0xE960, + 23978 - 11904: 0xE965, + 23979 - 11904: 0x9CF1, + 23980 - 11904: 0xE95E, + 23981 - 11904: 0xE968, + 23982 - 11904: 0xE964, + 23983 - 11904: 0xE969, + 23984 - 11904: 0xE963, + 23985 - 11904: 0xE95F, + 23986 - 11904: 0xE967, + 23988 - 11904: 0xE96A, + 23989 - 11904: 0xE962, + 23990 - 11904: 0xFC58, + 23991 - 11904: 0xECDA, + 23992 - 11904: 0xC0AF, + 23993 - 11904: 0x8D66, + 23994 - 11904: 0xC0AD, + 23996 - 11904: 0xC0AC, + 23997 - 11904: 0xC0AE, + 24000 - 11904: 0xEFC4, + 24001 - 11904: 0x9654, + 24002 - 11904: 0xF172, + 24003 - 11904: 0xF1FD, + 24006 - 11904: 0xF444, + 24007 - 11904: 0xF445, + 24009 - 11904: 0xC460, + 24011 - 11904: 0xF5C9, + 24013 - 11904: 0xC4DE, + 24015 - 11904: 0xF5CA, + 24017 - 11904: 0xF6DE, + 24018 - 11904: 0xC572, + 24020 - 11904: 0xC571, + 24021 - 11904: 0xF6DD, + 24022 - 11904: 0xC5C9, + 24023 - 11904: 0xFBE8, + 24024 - 11904: 0xF7D6, + 24027 - 11904: 0xC6CC, + 24029 - 11904: 0xA474, + 24030 - 11904: 0xA67B, + 24031 - 11904: 0xC9DA, + 24032 - 11904: 0xCACA, + 24033 - 11904: 0xA8B5, + 24034 - 11904: 0xB15F, + 24037 - 11904: 0xA475, + 24038 - 11904: 0xA5AA, + 24039 - 11904: 0xA5A9, + 24040 - 11904: 0xA5A8, + 24043 - 11904: 0xA7C5, + 24046 - 11904: 0xAE74, + 24048 - 11904: 0xDD57, + 24049 - 11904: 0xA476, + 24050 - 11904: 0xA477, + 24051 - 11904: 0xA478, + 24052 - 11904: 0xA4DA, + 24053 - 11904: 0x9FCE, + 24055 - 11904: 0xABD1, + 24057 - 11904: 0xCEAF, + 24061 - 11904: 0xB453, + 24062 - 11904: 0xA479, + 24063 - 11904: 0xC95D, + 24066 - 11904: 0xA5AB, + 24067 - 11904: 0xA5AC, + 24068 - 11904: 0xC978, + 24070 - 11904: 0xA67C, + 24073 - 11904: 0xFBFC, + 24074 - 11904: 0xCACB, + 24075 - 11904: 0x9AE4, + 24076 - 11904: 0xA7C6, + 24078 - 11904: 0xCACC, + 24081 - 11904: 0xA9AE, + 24082 - 11904: 0x9F75, + 24084 - 11904: 0xCC6E, + 24085 - 11904: 0xA9AC, + 24086 - 11904: 0xA9AB, + 24087 - 11904: 0xCC6D, + 24088 - 11904: 0xA9A9, + 24089 - 11904: 0xCC6F, + 24090 - 11904: 0xA9AA, + 24091 - 11904: 0xA9AD, + 24093 - 11904: 0xABD2, + 24095 - 11904: 0xABD4, + 24096 - 11904: 0xCEB3, + 24097 - 11904: 0xCEB0, + 24098 - 11904: 0xCEB1, + 24099 - 11904: 0xCEB2, + 24100 - 11904: 0xCEB4, + 24101 - 11904: 0xABD3, + 24104 - 11904: 0xD174, + 24105 - 11904: 0xD173, + 24107 - 11904: 0xAE76, + 24109 - 11904: 0xAE75, + 24110 - 11904: 0xFBF1, + 24115 - 11904: 0xB162, + 24116 - 11904: 0xD546, + 24118 - 11904: 0xB161, + 24119 - 11904: 0xB163, + 24120 - 11904: 0xB160, + 24125 - 11904: 0xB455, + 24126 - 11904: 0xD545, + 24128 - 11904: 0xB456, + 24129 - 11904: 0xD8F3, + 24130 - 11904: 0x8D69, + 24131 - 11904: 0xB457, + 24132 - 11904: 0xD8F2, + 24133 - 11904: 0xB454, + 24136 - 11904: 0x934F, + 24138 - 11904: 0xDD5A, + 24139 - 11904: 0xDD5C, + 24140 - 11904: 0xB745, + 24141 - 11904: 0xDD5B, + 24142 - 11904: 0xDD59, + 24143 - 11904: 0xDD58, + 24147 - 11904: 0xE1B4, + 24148 - 11904: 0xB9F7, + 24149 - 11904: 0xB9F5, + 24151 - 11904: 0xB9F6, + 24152 - 11904: 0xE1B2, + 24153 - 11904: 0xE1B3, + 24155 - 11904: 0xB9F3, + 24156 - 11904: 0xE571, + 24157 - 11904: 0xE56F, + 24158 - 11904: 0x934E, + 24159 - 11904: 0xBC6D, + 24160 - 11904: 0xE570, + 24161 - 11904: 0xBC6E, + 24162 - 11904: 0xBC6C, + 24163 - 11904: 0xB9F4, + 24166 - 11904: 0xE96D, + 24167 - 11904: 0xE96B, + 24168 - 11904: 0xE96C, + 24169 - 11904: 0xE56E, + 24170 - 11904: 0xECDC, + 24171 - 11904: 0xC0B0, + 24172 - 11904: 0xECDB, + 24173 - 11904: 0xEFC5, + 24174 - 11904: 0xEFC6, + 24175 - 11904: 0xE96E, + 24176 - 11904: 0xF1FE, + 24178 - 11904: 0xA47A, + 24179 - 11904: 0xA5AD, + 24180 - 11904: 0xA67E, + 24181 - 11904: 0xFBF3, + 24182 - 11904: 0xA67D, + 24184 - 11904: 0xA9AF, + 24185 - 11904: 0xB746, + 24186 - 11904: 0xFBF4, + 24187 - 11904: 0xA4DB, + 24188 - 11904: 0xA5AE, + 24189 - 11904: 0xABD5, + 24190 - 11904: 0xB458, + 24191 - 11904: 0xC6CE, + 24192 - 11904: 0xC979, + 24194 - 11904: 0xC97A, + 24195 - 11904: 0xFBC3, + 24196 - 11904: 0xC9DC, + 24198 - 11904: 0x8965, + 24199 - 11904: 0xA7C8, + 24200 - 11904: 0xCAD0, + 24201 - 11904: 0xCACE, + 24202 - 11904: 0xA7C9, + 24203 - 11904: 0xCACD, + 24204 - 11904: 0xCACF, + 24205 - 11904: 0xCAD1, + 24207 - 11904: 0xA7C7, + 24210 - 11904: 0x8C7A, + 24213 - 11904: 0xA9B3, + 24214 - 11904: 0xA9B4, + 24215 - 11904: 0xA9B1, + 24217 - 11904: 0x8C7B, + 24218 - 11904: 0xA9B0, + 24219 - 11904: 0xCEB8, + 24220 - 11904: 0xA9B2, + 24224 - 11904: 0xABD6, + 24226 - 11904: 0xCEB7, + 24227 - 11904: 0xCEB9, + 24228 - 11904: 0xCEB6, + 24229 - 11904: 0xCEBA, + 24230 - 11904: 0xABD7, + 24231 - 11904: 0xAE79, + 24232 - 11904: 0xD175, + 24234 - 11904: 0xD177, + 24235 - 11904: 0xAE77, + 24236 - 11904: 0xD178, + 24237 - 11904: 0xAE78, + 24238 - 11904: 0xD176, + 24240 - 11904: 0xCEB5, + 24241 - 11904: 0xD547, + 24242 - 11904: 0xD54A, + 24243 - 11904: 0xD54B, + 24244 - 11904: 0xD548, + 24245 - 11904: 0xB167, + 24246 - 11904: 0xB166, + 24247 - 11904: 0xB164, + 24248 - 11904: 0xB165, + 24249 - 11904: 0xD549, + 24253 - 11904: 0x8D6A, + 24254 - 11904: 0xB168, + 24257 - 11904: 0xB45A, + 24258 - 11904: 0xB45B, + 24260 - 11904: 0xB45C, + 24261 - 11904: 0xDD5D, + 24262 - 11904: 0xDD5F, + 24263 - 11904: 0xDD61, + 24264 - 11904: 0xB748, + 24265 - 11904: 0xB747, + 24266 - 11904: 0xB459, + 24267 - 11904: 0xDD60, + 24268 - 11904: 0xDD5E, + 24269 - 11904: 0x9353, + 24270 - 11904: 0xE1B8, + 24272 - 11904: 0xFBF9, + 24273 - 11904: 0xE1B6, + 24274 - 11904: 0xE1BC, + 24275 - 11904: 0xB9F8, + 24276 - 11904: 0xE1BD, + 24277 - 11904: 0xE1BA, + 24278 - 11904: 0xB9F9, + 24279 - 11904: 0xE1B7, + 24280 - 11904: 0xE1B5, + 24281 - 11904: 0xE1BB, + 24282 - 11904: 0xBC70, + 24283 - 11904: 0xE573, + 24284 - 11904: 0xE1B9, + 24285 - 11904: 0xBC72, + 24286 - 11904: 0xE574, + 24287 - 11904: 0xBC71, + 24288 - 11904: 0xBC74, + 24289 - 11904: 0xE575, + 24290 - 11904: 0xBC6F, + 24291 - 11904: 0xBC73, + 24293 - 11904: 0xE973, + 24294 - 11904: 0xE971, + 24295 - 11904: 0xE970, + 24296 - 11904: 0xE972, + 24297 - 11904: 0xE96F, + 24300 - 11904: 0xC366, + 24302 - 11904: 0xF446, + 24303 - 11904: 0xF447, + 24305 - 11904: 0xF5CB, + 24306 - 11904: 0xF6DF, + 24307 - 11904: 0xC655, + 24308 - 11904: 0xFBFD, + 24310 - 11904: 0xA9B5, + 24311 - 11904: 0xA7CA, + 24312 - 11904: 0x9059, + 24313 - 11904: 0xFC40, + 24314 - 11904: 0xABD8, + 24315 - 11904: 0xFC41, + 24316 - 11904: 0xFC43, + 24318 - 11904: 0xA47B, + 24319 - 11904: 0xA4DC, + 24321 - 11904: 0xA5AF, + 24322 - 11904: 0xC9DD, + 24324 - 11904: 0xA7CB, + 24325 - 11904: 0xCAD2, + 24327 - 11904: 0xCEBB, + 24328 - 11904: 0xABD9, + 24330 - 11904: 0xB9FA, + 24331 - 11904: 0xA47C, + 24332 - 11904: 0x9FD8, + 24333 - 11904: 0xFC46, + 24334 - 11904: 0x9362, + 24335 - 11904: 0xA6A1, + 24338 - 11904: 0xB749, + 24339 - 11904: 0xA47D, + 24340 - 11904: 0xA4DD, + 24341 - 11904: 0xA4DE, + 24343 - 11904: 0xA5B1, + 24344 - 11904: 0xA5B0, + 24346 - 11904: 0xC9DE, + 24347 - 11904: 0xA6A2, + 24349 - 11904: 0xCAD3, + 24351 - 11904: 0xA7CC, + 24354 - 11904: 0xCC71, + 24355 - 11904: 0xCC72, + 24356 - 11904: 0xCC73, + 24357 - 11904: 0x8D6B, + 24358 - 11904: 0xA9B6, + 24359 - 11904: 0xA9B7, + 24360 - 11904: 0xCC70, + 24361 - 11904: 0xA9B8, + 24365 - 11904: 0xABDA, + 24366 - 11904: 0xCEBC, + 24368 - 11904: 0xD17A, + 24369 - 11904: 0xAE7A, + 24371 - 11904: 0xD179, + 24373 - 11904: 0xB169, + 24374 - 11904: 0xD54C, + 24375 - 11904: 0xB16A, + 24376 - 11904: 0xD54D, + 24378 - 11904: 0xFC4C, + 24379 - 11904: 0x8CFE, + 24380 - 11904: 0xB45D, + 24384 - 11904: 0xDD62, + 24387 - 11904: 0xE1BF, + 24388 - 11904: 0xE1BE, + 24390 - 11904: 0xB9FB, + 24392 - 11904: 0xBC75, + 24393 - 11904: 0xE576, + 24394 - 11904: 0xBECA, + 24395 - 11904: 0xE974, + 24396 - 11904: 0xC0B1, + 24397 - 11904: 0x95B8, + 24398 - 11904: 0xC573, + 24399 - 11904: 0xF7D8, + 24400 - 11904: 0xC6D0, + 24401 - 11904: 0x8BCA, + 24404 - 11904: 0xCC74, + 24406 - 11904: 0xCEBD, + 24407 - 11904: 0xB16B, + 24408 - 11904: 0xFC4F, + 24409 - 11904: 0xB74A, + 24412 - 11904: 0x987A, + 24413 - 11904: 0xC255, + 24417 - 11904: 0xC6D1, + 24418 - 11904: 0xA7CE, + 24419 - 11904: 0xFC51, + 24420 - 11904: 0xA7CD, + 24421 - 11904: 0xABDB, + 24423 - 11904: 0xD17B, + 24425 - 11904: 0xB16D, + 24426 - 11904: 0xB343, + 24427 - 11904: 0xB16E, + 24428 - 11904: 0xB16C, + 24429 - 11904: 0xB45E, + 24431 - 11904: 0xE1C0, + 24432 - 11904: 0xB9FC, + 24433 - 11904: 0xBC76, + 24434 - 11904: 0xFC54, + 24435 - 11904: 0xC94C, + 24436 - 11904: 0xC9DF, + 24438 - 11904: 0xCAD5, + 24439 - 11904: 0xA7CF, + 24440 - 11904: 0xCAD4, + 24441 - 11904: 0xA7D0, + 24443 - 11904: 0xFAAF, + 24444 - 11904: 0xA9BC, + 24445 - 11904: 0xCC77, + 24446 - 11904: 0xCC76, + 24447 - 11904: 0xA9BB, + 24448 - 11904: 0xA9B9, + 24449 - 11904: 0xA9BA, + 24450 - 11904: 0xCC75, + 24451 - 11904: 0x8D6C, + 24453 - 11904: 0xABDD, + 24454 - 11904: 0xCEBE, + 24455 - 11904: 0xABE0, + 24456 - 11904: 0xABDC, + 24457 - 11904: 0xABE2, + 24458 - 11904: 0xABDE, + 24459 - 11904: 0xABDF, + 24460 - 11904: 0xABE1, + 24464 - 11904: 0xAE7D, + 24465 - 11904: 0xAE7C, + 24466 - 11904: 0xAE7B, + 24470 - 11904: 0xD54F, + 24471 - 11904: 0xB16F, + 24472 - 11904: 0xB172, + 24473 - 11904: 0xB170, + 24475 - 11904: 0xD54E, + 24476 - 11904: 0xB175, + 24478 - 11904: 0xB171, + 24479 - 11904: 0xD550, + 24480 - 11904: 0xB174, + 24481 - 11904: 0xB173, + 24484 - 11904: 0xFA61, + 24485 - 11904: 0xD8F6, + 24486 - 11904: 0xD8F5, + 24487 - 11904: 0xFC57, + 24488 - 11904: 0xB461, + 24489 - 11904: 0xB45F, + 24490 - 11904: 0xB460, + 24491 - 11904: 0xD8F7, + 24492 - 11904: 0xB74B, + 24493 - 11904: 0xDD64, + 24494 - 11904: 0xB74C, + 24495 - 11904: 0xDD63, + 24497 - 11904: 0x9B70, + 24498 - 11904: 0xE577, + 24501 - 11904: 0xBC78, + 24502 - 11904: 0xE1C1, + 24503 - 11904: 0xBC77, + 24505 - 11904: 0xB9FD, + 24506 - 11904: 0xA051, + 24507 - 11904: 0xECDE, + 24508 - 11904: 0xE975, + 24509 - 11904: 0xC0B2, + 24510 - 11904: 0xECDD, + 24511 - 11904: 0xF240, + 24512 - 11904: 0xF448, + 24513 - 11904: 0xF449, + 24514 - 11904: 0x8C7C, + 24515 - 11904: 0xA4DF, + 24516 - 11904: 0x8BCB, + 24517 - 11904: 0xA5B2, + 24521 - 11904: 0xC97B, + 24524 - 11904: 0xA7D2, + 24525 - 11904: 0xA7D4, + 24527 - 11904: 0xC9E2, + 24528 - 11904: 0xCAD8, + 24529 - 11904: 0xCAD7, + 24530 - 11904: 0xCAD6, + 24532 - 11904: 0xC9E1, + 24533 - 11904: 0xC9E0, + 24534 - 11904: 0xA6A4, + 24535 - 11904: 0xA7D3, + 24536 - 11904: 0xA7D1, + 24537 - 11904: 0xA6A3, + 24539 - 11904: 0x936E, + 24541 - 11904: 0xA9BD, + 24542 - 11904: 0xCC78, + 24543 - 11904: 0xFCD5, + 24544 - 11904: 0xA9BE, + 24545 - 11904: 0xCADD, + 24547 - 11904: 0xCADF, + 24548 - 11904: 0xCADE, + 24549 - 11904: 0xCC79, + 24552 - 11904: 0xCADA, + 24554 - 11904: 0xA7D8, + 24555 - 11904: 0xA7D6, + 24557 - 11904: 0xCAD9, + 24558 - 11904: 0xCADB, + 24559 - 11904: 0xCAE1, + 24561 - 11904: 0xA7D5, + 24563 - 11904: 0xCADC, + 24564 - 11904: 0xCAE5, + 24565 - 11904: 0xA9C0, + 24567 - 11904: 0xCAE2, + 24568 - 11904: 0xA7D7, + 24570 - 11904: 0xCAE0, + 24571 - 11904: 0xCAE3, + 24573 - 11904: 0xA9BF, + 24575 - 11904: 0xA9C1, + 24576 - 11904: 0xCAE4, + 24585 - 11904: 0xCCAF, + 24586 - 11904: 0xCCA2, + 24587 - 11904: 0xCC7E, + 24588 - 11904: 0xCCAE, + 24589 - 11904: 0xCCA9, + 24590 - 11904: 0xABE7, + 24591 - 11904: 0xA9C2, + 24592 - 11904: 0xCCAA, + 24593 - 11904: 0xCCAD, + 24594 - 11904: 0xABE3, + 24595 - 11904: 0xCCAC, + 24596 - 11904: 0xA9C3, + 24597 - 11904: 0xA9C8, + 24598 - 11904: 0xA9C6, + 24599 - 11904: 0xCCA3, + 24601 - 11904: 0xCC7C, + 24602 - 11904: 0xCCA5, + 24603 - 11904: 0xA9CD, + 24604 - 11904: 0xCCB0, + 24605 - 11904: 0xABE4, + 24606 - 11904: 0xCCA6, + 24608 - 11904: 0xABE5, + 24609 - 11904: 0xA9C9, + 24610 - 11904: 0xCCA8, + 24611 - 11904: 0xFCA9, + 24612 - 11904: 0xCECD, + 24613 - 11904: 0xABE6, + 24614 - 11904: 0xCC7B, + 24615 - 11904: 0xA9CA, + 24616 - 11904: 0xABE8, + 24617 - 11904: 0xA9CB, + 24618 - 11904: 0xA9C7, + 24619 - 11904: 0xA9CC, + 24620 - 11904: 0xCCA7, + 24621 - 11904: 0xCC7A, + 24622 - 11904: 0xCCAB, + 24623 - 11904: 0xA9C4, + 24625 - 11904: 0xFC61, + 24626 - 11904: 0xCC7D, + 24627 - 11904: 0xCCA4, + 24628 - 11904: 0xCCA1, + 24629 - 11904: 0xA9C5, + 24631 - 11904: 0xCEBF, + 24633 - 11904: 0xCEC0, + 24635 - 11904: 0x8966, + 24640 - 11904: 0xCECA, + 24641 - 11904: 0xD1A1, + 24642 - 11904: 0xCECB, + 24643 - 11904: 0xABEE, + 24644 - 11904: 0xCECE, + 24645 - 11904: 0xCEC4, + 24646 - 11904: 0xABED, + 24647 - 11904: 0xCEC6, + 24649 - 11904: 0xCEC7, + 24650 - 11904: 0xFACB, + 24652 - 11904: 0xCEC9, + 24653 - 11904: 0xABE9, + 24656 - 11904: 0xAEA3, + 24658 - 11904: 0xF9DA, + 24659 - 11904: 0xCEC5, + 24660 - 11904: 0xCEC1, + 24661 - 11904: 0xAEA4, + 24664 - 11904: 0xCECF, + 24665 - 11904: 0xAE7E, + 24666 - 11904: 0xD17D, + 24667 - 11904: 0xCEC8, + 24669 - 11904: 0xD17C, + 24670 - 11904: 0xCEC3, + 24671 - 11904: 0xCECC, + 24674 - 11904: 0xABEC, + 24675 - 11904: 0xAEA1, + 24676 - 11904: 0xABF2, + 24677 - 11904: 0xAEA2, + 24678 - 11904: 0xCED0, + 24679 - 11904: 0xD17E, + 24680 - 11904: 0xABEB, + 24681 - 11904: 0xAEA6, + 24682 - 11904: 0xABF1, + 24683 - 11904: 0xABF0, + 24684 - 11904: 0xABEF, + 24685 - 11904: 0xAEA5, + 24686 - 11904: 0xCED1, + 24687 - 11904: 0xAEA7, + 24688 - 11904: 0xABEA, + 24690 - 11904: 0xCEC2, + 24693 - 11904: 0x937A, + 24695 - 11904: 0xA0E0, + 24702 - 11904: 0x936B, + 24703 - 11904: 0xB176, + 24704 - 11904: 0xD1A4, + 24705 - 11904: 0xD1A6, + 24707 - 11904: 0xD1A8, + 24708 - 11904: 0xAEA8, + 24709 - 11904: 0xAEAE, + 24710 - 11904: 0xD553, + 24711 - 11904: 0xD1AC, + 24712 - 11904: 0xD1A3, + 24713 - 11904: 0xB178, + 24714 - 11904: 0xD551, + 24716 - 11904: 0xAEAD, + 24717 - 11904: 0xAEAB, + 24718 - 11904: 0xD1AE, + 24720 - 11904: 0xD552, + 24722 - 11904: 0xD1A5, + 24724 - 11904: 0xAEAC, + 24725 - 11904: 0xD1A9, + 24726 - 11904: 0xAEAF, + 24727 - 11904: 0xD1AB, + 24730 - 11904: 0xAEAA, + 24731 - 11904: 0xD1AA, + 24732 - 11904: 0xD1AD, + 24733 - 11904: 0xD1A7, + 24734 - 11904: 0xFC6B, + 24735 - 11904: 0xAEA9, + 24736 - 11904: 0xB179, + 24738 - 11904: 0xD1A2, + 24739 - 11904: 0xB177, + 24740 - 11904: 0xFC6C, + 24743 - 11904: 0x9468, + 24744 - 11904: 0xB17A, + 24752 - 11904: 0xD555, + 24753 - 11904: 0xD55E, + 24754 - 11904: 0xB464, + 24755 - 11904: 0xFC6D, + 24756 - 11904: 0xB17C, + 24757 - 11904: 0xB1A3, + 24758 - 11904: 0xB465, + 24759 - 11904: 0xD560, + 24760 - 11904: 0xB1AA, + 24761 - 11904: 0xD8F9, + 24762 - 11904: 0xD556, + 24763 - 11904: 0xB1A2, + 24764 - 11904: 0xB1A5, + 24765 - 11904: 0xB17E, + 24766 - 11904: 0xD554, + 24767 - 11904: 0xD562, + 24768 - 11904: 0xD565, + 24769 - 11904: 0xD949, + 24771 - 11904: 0xD563, + 24772 - 11904: 0xD8FD, + 24773 - 11904: 0xB1A1, + 24774 - 11904: 0xB1A8, + 24775 - 11904: 0xB1AC, + 24776 - 11904: 0xD55D, + 24777 - 11904: 0xD8F8, + 24778 - 11904: 0xD561, + 24779 - 11904: 0xB17B, + 24780 - 11904: 0xD8FA, + 24781 - 11904: 0xD564, + 24782 - 11904: 0xD8FC, + 24783 - 11904: 0xD559, + 24785 - 11904: 0xB462, + 24787 - 11904: 0xD557, + 24788 - 11904: 0xD558, + 24789 - 11904: 0xB1A7, + 24791 - 11904: 0x8D71, + 24792 - 11904: 0xB1A6, + 24793 - 11904: 0xD55B, + 24794 - 11904: 0xB1AB, + 24795 - 11904: 0xD55F, + 24796 - 11904: 0xB1A4, + 24797 - 11904: 0xD55C, + 24798 - 11904: 0xFD64, + 24799 - 11904: 0xB1A9, + 24800 - 11904: 0xB466, + 24801 - 11904: 0xB463, + 24802 - 11904: 0xD8FB, + 24803 - 11904: 0x99BA, + 24804 - 11904: 0xD55A, + 24806 - 11904: 0xB17D, + 24807 - 11904: 0x9AD0, + 24808 - 11904: 0x9A61, + 24809 - 11904: 0xA0E5, + 24816 - 11904: 0xB46B, + 24817 - 11904: 0xB46F, + 24818 - 11904: 0xD940, + 24819 - 11904: 0xB751, + 24820 - 11904: 0xB46D, + 24821 - 11904: 0xD944, + 24822 - 11904: 0xB471, + 24823 - 11904: 0xDD65, + 24824 - 11904: 0xD946, + 24825 - 11904: 0xB753, + 24826 - 11904: 0xB469, + 24827 - 11904: 0xB46C, + 24828 - 11904: 0xD947, + 24829 - 11904: 0xA05B, + 24830 - 11904: 0xD948, + 24831 - 11904: 0xD94E, + 24832 - 11904: 0xB473, + 24833 - 11904: 0xB754, + 24835 - 11904: 0xD94A, + 24836 - 11904: 0xD94F, + 24837 - 11904: 0xD943, + 24838 - 11904: 0xB75E, + 24839 - 11904: 0x96AC, + 24840 - 11904: 0xB755, + 24841 - 11904: 0xB472, + 24842 - 11904: 0xD941, + 24843 - 11904: 0xD950, + 24844 - 11904: 0x9740, + 24845 - 11904: 0xB75D, + 24846 - 11904: 0xB470, + 24847 - 11904: 0xB74E, + 24848 - 11904: 0xD94D, + 24850 - 11904: 0xB474, + 24851 - 11904: 0xD945, + 24852 - 11904: 0xD8FE, + 24853 - 11904: 0xB46A, + 24854 - 11904: 0xD942, + 24856 - 11904: 0xD94B, + 24857 - 11904: 0x9EF1, + 24858 - 11904: 0xB74D, + 24859 - 11904: 0xB752, + 24860 - 11904: 0xB467, + 24861 - 11904: 0xD94C, + 24863 - 11904: 0xB750, + 24866 - 11904: 0x8C4D, + 24867 - 11904: 0xB468, + 24871 - 11904: 0xB75C, + 24872 - 11904: 0xE1C3, + 24873 - 11904: 0xDD70, + 24875 - 11904: 0xDD68, + 24876 - 11904: 0xE1C2, + 24878 - 11904: 0xDD6C, + 24879 - 11904: 0xDD6E, + 24880 - 11904: 0x9F7E, + 24882 - 11904: 0xDD6B, + 24884 - 11904: 0xB75B, + 24886 - 11904: 0xDD6A, + 24887 - 11904: 0xB75F, + 24891 - 11904: 0xE1D2, + 24893 - 11904: 0x8D72, + 24894 - 11904: 0xB75A, + 24895 - 11904: 0xBA40, + 24896 - 11904: 0xDD71, + 24897 - 11904: 0xE1C4, + 24898 - 11904: 0xFC76, + 24900 - 11904: 0xB758, + 24901 - 11904: 0xDD69, + 24902 - 11904: 0xDD6D, + 24903 - 11904: 0xB9FE, + 24904 - 11904: 0xB74F, + 24905 - 11904: 0xDD66, + 24906 - 11904: 0xDD67, + 24907 - 11904: 0xBA41, + 24908 - 11904: 0xB757, + 24909 - 11904: 0xB759, + 24910 - 11904: 0xB756, + 24911 - 11904: 0xDD6F, + 24912 - 11904: 0x96A9, + 24914 - 11904: 0xE1C8, + 24915 - 11904: 0xE1C9, + 24916 - 11904: 0xE1CE, + 24917 - 11904: 0xBC7D, + 24918 - 11904: 0xE1D5, + 24920 - 11904: 0xBA47, + 24921 - 11904: 0xA06E, + 24922 - 11904: 0xBA46, + 24923 - 11904: 0xE1D0, + 24924 - 11904: 0xFCAA, + 24925 - 11904: 0xBC7C, + 24926 - 11904: 0xE1C5, + 24927 - 11904: 0xBA45, + 24928 - 11904: 0xFBCD, + 24929 - 11904: 0xE1D4, + 24930 - 11904: 0xBA43, + 24931 - 11904: 0xBA44, + 24932 - 11904: 0xFC74, + 24933 - 11904: 0xE1D1, + 24934 - 11904: 0xE5AA, + 24935 - 11904: 0xBC7A, + 24936 - 11904: 0xB46E, + 24938 - 11904: 0xE1D3, + 24939 - 11904: 0xBCA3, + 24940 - 11904: 0xE1CB, + 24942 - 11904: 0xBC7B, + 24943 - 11904: 0xA074, + 24944 - 11904: 0xBCA2, + 24945 - 11904: 0xE1C6, + 24946 - 11904: 0xE1CA, + 24947 - 11904: 0xE1C7, + 24948 - 11904: 0xE1CD, + 24949 - 11904: 0xBA48, + 24950 - 11904: 0xBC79, + 24951 - 11904: 0xBA42, + 24953 - 11904: 0xE57A, + 24954 - 11904: 0xE1CF, + 24956 - 11904: 0xBCA1, + 24957 - 11904: 0xA071, + 24958 - 11904: 0xBCA4, + 24960 - 11904: 0xE1CC, + 24961 - 11904: 0xFC79, + 24962 - 11904: 0xBC7E, + 24963 - 11904: 0xE579, + 24967 - 11904: 0xFC7C, + 24969 - 11904: 0xE57E, + 24970 - 11904: 0xBECE, + 24971 - 11904: 0xE578, + 24972 - 11904: 0xE9A3, + 24973 - 11904: 0xE5A9, + 24974 - 11904: 0xBCA8, + 24976 - 11904: 0xBCA6, + 24977 - 11904: 0xBECC, + 24978 - 11904: 0xE5A6, + 24979 - 11904: 0xE5A2, + 24980 - 11904: 0xBCAC, + 24981 - 11904: 0x9C50, + 24982 - 11904: 0xE978, + 24984 - 11904: 0x9379, + 24985 - 11904: 0x9378, + 24986 - 11904: 0xBCAA, + 24987 - 11904: 0xE5A1, + 24988 - 11904: 0xA0DD, + 24989 - 11904: 0xE976, + 24991 - 11904: 0xE5A5, + 24993 - 11904: 0xE5A8, + 24994 - 11904: 0xE57D, + 24996 - 11904: 0xBCAB, + 24999 - 11904: 0xBCA5, + 25000 - 11904: 0xE977, + 25001 - 11904: 0xBECD, + 25002 - 11904: 0xE5A7, + 25003 - 11904: 0xBCA7, + 25004 - 11904: 0xBCA9, + 25005 - 11904: 0xE5A4, + 25006 - 11904: 0xBCAD, + 25007 - 11904: 0xE5A3, + 25008 - 11904: 0xE57C, + 25009 - 11904: 0xE57B, + 25010 - 11904: 0xBECB, + 25011 - 11904: 0xE5AB, + 25012 - 11904: 0xE97A, + 25013 - 11904: 0xECE0, + 25014 - 11904: 0xBED0, + 25015 - 11904: 0x8D75, + 25016 - 11904: 0xE9A2, + 25017 - 11904: 0x8D76, + 25018 - 11904: 0xE97E, + 25020 - 11904: 0xECE1, + 25022 - 11904: 0xBED1, + 25023 - 11904: 0xE9A1, + 25024 - 11904: 0x9374, + 25025 - 11904: 0xE97C, + 25026 - 11904: 0xC0B4, + 25027 - 11904: 0xECDF, + 25029 - 11904: 0xE979, + 25030 - 11904: 0xE97B, + 25031 - 11904: 0xC0B5, + 25032 - 11904: 0xBED3, + 25033 - 11904: 0xC0B3, + 25034 - 11904: 0xBED2, + 25035 - 11904: 0xC0B7, + 25036 - 11904: 0xE97D, + 25037 - 11904: 0xBECF, + 25039 - 11904: 0x8D77, + 25040 - 11904: 0xFCA5, + 25043 - 11904: 0xFCA2, + 25046 - 11904: 0xEFCF, + 25048 - 11904: 0xEFC7, + 25050 - 11904: 0x90C3, + 25054 - 11904: 0xECE7, + 25055 - 11904: 0xEFC8, + 25056 - 11904: 0xECE3, + 25058 - 11904: 0xA079, + 25059 - 11904: 0xC256, + 25060 - 11904: 0xECE5, + 25061 - 11904: 0xECE4, + 25062 - 11904: 0xC0B6, + 25063 - 11904: 0xECE2, + 25064 - 11904: 0xECE6, + 25065 - 11904: 0xEFD0, + 25066 - 11904: 0xEFCC, + 25067 - 11904: 0xEFCE, + 25069 - 11904: 0xEFC9, + 25070 - 11904: 0xEFCA, + 25072 - 11904: 0xEFCD, + 25073 - 11904: 0xEFCB, + 25074 - 11904: 0xC367, + 25077 - 11904: 0xC36A, + 25078 - 11904: 0xC369, + 25079 - 11904: 0xC368, + 25080 - 11904: 0xC461, + 25081 - 11904: 0xF44A, + 25082 - 11904: 0xC462, + 25083 - 11904: 0xF241, + 25084 - 11904: 0xC4DF, + 25085 - 11904: 0xF5CC, + 25086 - 11904: 0xC4E0, + 25087 - 11904: 0xC574, + 25088 - 11904: 0xC5CA, + 25089 - 11904: 0xF7D9, + 25091 - 11904: 0xF7DA, + 25092 - 11904: 0xF7DB, + 25095 - 11904: 0xF9BA, + 25096 - 11904: 0xA4E0, + 25097 - 11904: 0xC97C, + 25098 - 11904: 0xA5B3, + 25100 - 11904: 0xA6A6, + 25101 - 11904: 0xA6A7, + 25102 - 11904: 0xA6A5, + 25104 - 11904: 0xA6A8, + 25105 - 11904: 0xA7DA, + 25106 - 11904: 0xA7D9, + 25108 - 11904: 0xCCB1, + 25109 - 11904: 0xA9CF, + 25110 - 11904: 0xA9CE, + 25113 - 11904: 0xD1AF, + 25114 - 11904: 0xB1AD, + 25115 - 11904: 0xB1AE, + 25119 - 11904: 0xB475, + 25120 - 11904: 0xDD72, + 25121 - 11904: 0xB760, + 25122 - 11904: 0xB761, + 25123 - 11904: 0xDD74, + 25124 - 11904: 0xDD76, + 25125 - 11904: 0xDD75, + 25127 - 11904: 0xE1D7, + 25129 - 11904: 0xE1D6, + 25130 - 11904: 0xBA49, + 25131 - 11904: 0xE1D8, + 25132 - 11904: 0x8D79, + 25133 - 11904: 0xE5AC, + 25134 - 11904: 0xBCAE, + 25136 - 11904: 0xBED4, + 25138 - 11904: 0xC0B8, + 25139 - 11904: 0xC257, + 25140 - 11904: 0xC0B9, + 25142 - 11904: 0xA4E1, + 25143 - 11904: 0x8BFC, + 25145 - 11904: 0xA076, + 25146 - 11904: 0xCAE6, + 25149 - 11904: 0xCCB2, + 25150 - 11904: 0xA9D1, + 25151 - 11904: 0xA9D0, + 25152 - 11904: 0xA9D2, + 25153 - 11904: 0xABF3, + 25154 - 11904: 0xCED2, + 25155 - 11904: 0xCED3, + 25158 - 11904: 0xD1B0, + 25159 - 11904: 0xAEB0, + 25160 - 11904: 0xB1AF, + 25161 - 11904: 0xB476, + 25162 - 11904: 0xD951, + 25163 - 11904: 0xA4E2, + 25164 - 11904: 0x8BCD, + 25165 - 11904: 0xA47E, + 25166 - 11904: 0xA4E3, + 25168 - 11904: 0xC97D, + 25169 - 11904: 0xA5B7, + 25170 - 11904: 0xA5B6, + 25171 - 11904: 0xA5B4, + 25172 - 11904: 0xA5B5, + 25176 - 11904: 0xA6AB, + 25177 - 11904: 0xC9E9, + 25178 - 11904: 0xC9EB, + 25179 - 11904: 0xA6AA, + 25180 - 11904: 0xC9E3, + 25182 - 11904: 0xC9E4, + 25184 - 11904: 0xC9EA, + 25185 - 11904: 0xC9E6, + 25186 - 11904: 0xC9E8, + 25187 - 11904: 0xA6A9, + 25188 - 11904: 0xC9E5, + 25189 - 11904: 0xC9EC, + 25190 - 11904: 0xC9E7, + 25192 - 11904: 0x9F5A, + 25197 - 11904: 0xA7E1, + 25198 - 11904: 0xA7EA, + 25199 - 11904: 0xA7E8, + 25200 - 11904: 0xCAF0, + 25201 - 11904: 0xCAED, + 25202 - 11904: 0xCAF5, + 25203 - 11904: 0xA7E6, + 25204 - 11904: 0xCAF6, + 25206 - 11904: 0xA7DF, + 25207 - 11904: 0xCAF3, + 25209 - 11904: 0xA7E5, + 25210 - 11904: 0xCAEF, + 25211 - 11904: 0xCAEE, + 25212 - 11904: 0xA7E3, + 25213 - 11904: 0xCAF4, + 25214 - 11904: 0xA7E4, + 25215 - 11904: 0xA9D3, + 25216 - 11904: 0xA7DE, + 25217 - 11904: 0xCAF1, + 25218 - 11904: 0x9FF4, + 25219 - 11904: 0xCAE7, + 25220 - 11904: 0xA7DB, + 25221 - 11904: 0x9FBA, + 25222 - 11904: 0xA7EE, + 25223 - 11904: 0xCAEC, + 25224 - 11904: 0xCAF2, + 25225 - 11904: 0xA7E0, + 25226 - 11904: 0xA7E2, + 25228 - 11904: 0xCAE8, + 25230 - 11904: 0xCAE9, + 25231 - 11904: 0xCAEA, + 25232 - 11904: 0x8D7A, + 25233 - 11904: 0xA7ED, + 25234 - 11904: 0xA7E7, + 25235 - 11904: 0xA7EC, + 25236 - 11904: 0xCAEB, + 25237 - 11904: 0xA7EB, + 25238 - 11904: 0xA7DD, + 25239 - 11904: 0xA7DC, + 25240 - 11904: 0xA7E9, + 25245 - 11904: 0x9E45, + 25252 - 11904: 0x93B0, + 25254 - 11904: 0xA075, + 25256 - 11904: 0xA9E1, + 25257 - 11904: 0xCCBE, + 25258 - 11904: 0xCCB7, + 25259 - 11904: 0xA9DC, + 25260 - 11904: 0xA9EF, + 25261 - 11904: 0xCCB3, + 25262 - 11904: 0xCCBA, + 25263 - 11904: 0xCCBC, + 25264 - 11904: 0xCCBF, + 25265 - 11904: 0xA9EA, + 25267 - 11904: 0xCCBB, + 25268 - 11904: 0xCCB4, + 25269 - 11904: 0xA9E8, + 25270 - 11904: 0xCCB8, + 25272 - 11904: 0xCCC0, + 25273 - 11904: 0xA9D9, + 25275 - 11904: 0xCCBD, + 25276 - 11904: 0xA9E3, + 25277 - 11904: 0xA9E2, + 25278 - 11904: 0xCCB6, + 25279 - 11904: 0xA9D7, + 25281 - 11904: 0x87DD, + 25282 - 11904: 0xA9D8, + 25283 - 11904: 0x9B46, + 25284 - 11904: 0xA9D6, + 25285 - 11904: 0xFCAE, + 25286 - 11904: 0xA9EE, + 25287 - 11904: 0xA9E6, + 25288 - 11904: 0xA9E0, + 25289 - 11904: 0xA9D4, + 25290 - 11904: 0xCCB9, + 25291 - 11904: 0xA9DF, + 25292 - 11904: 0xA9D5, + 25293 - 11904: 0xA9E7, + 25294 - 11904: 0xA9F0, + 25295 - 11904: 0xCED4, + 25296 - 11904: 0xA9E4, + 25297 - 11904: 0xCCB5, + 25298 - 11904: 0xA9DA, + 25299 - 11904: 0xA9DD, + 25300 - 11904: 0xA9DE, + 25301 - 11904: 0xFCB0, + 25302 - 11904: 0xA9EC, + 25303 - 11904: 0xA9ED, + 25304 - 11904: 0xA9EB, + 25305 - 11904: 0xA9E5, + 25306 - 11904: 0xA9E9, + 25307 - 11904: 0xA9DB, + 25308 - 11904: 0xABF4, + 25311 - 11904: 0xFA51, + 25317 - 11904: 0x8D7B, + 25323 - 11904: 0xCEDA, + 25324 - 11904: 0xAC41, + 25325 - 11904: 0xABF8, + 25326 - 11904: 0xABFA, + 25327 - 11904: 0xAC40, + 25328 - 11904: 0xCEE6, + 25329 - 11904: 0xABFD, + 25330 - 11904: 0xD1B1, + 25331 - 11904: 0xAEB1, + 25332 - 11904: 0xAC43, + 25333 - 11904: 0xCED7, + 25334 - 11904: 0xCEDF, + 25335 - 11904: 0xABFE, + 25336 - 11904: 0xCEDE, + 25337 - 11904: 0xCEDB, + 25338 - 11904: 0xCEE3, + 25339 - 11904: 0xCEE5, + 25340 - 11904: 0xABF7, + 25341 - 11904: 0xABFB, + 25342 - 11904: 0xAC42, + 25343 - 11904: 0xAEB3, + 25344 - 11904: 0xCEE0, + 25345 - 11904: 0xABF9, + 25346 - 11904: 0xAC45, + 25347 - 11904: 0xCED9, + 25351 - 11904: 0xABFC, + 25352 - 11904: 0xAEB2, + 25353 - 11904: 0xABF6, + 25355 - 11904: 0xCED6, + 25356 - 11904: 0xCEDD, + 25357 - 11904: 0xCED5, + 25358 - 11904: 0xCED8, + 25359 - 11904: 0xCEDC, + 25360 - 11904: 0xD1B2, + 25361 - 11904: 0xAC44, + 25363 - 11904: 0xCEE1, + 25364 - 11904: 0xCEE2, + 25365 - 11904: 0xCEE4, + 25366 - 11904: 0xABF5, + 25368 - 11904: 0x8D7C, + 25384 - 11904: 0xAEC1, + 25385 - 11904: 0xD1BE, + 25386 - 11904: 0xAEBF, + 25387 - 11904: 0xAEC0, + 25388 - 11904: 0xD1B4, + 25389 - 11904: 0xD1C4, + 25390 - 11904: 0x9ED6, + 25391 - 11904: 0xAEB6, + 25393 - 11904: 0x93AC, + 25394 - 11904: 0xD566, + 25395 - 11904: 0xD1C6, + 25396 - 11904: 0xD1C0, + 25397 - 11904: 0x9F5B, + 25398 - 11904: 0xD1B7, + 25399 - 11904: 0x93A9, + 25400 - 11904: 0xD1C9, + 25401 - 11904: 0xD1BA, + 25402 - 11904: 0xAEBC, + 25403 - 11904: 0xD57D, + 25404 - 11904: 0xD1BD, + 25405 - 11904: 0xAEBE, + 25406 - 11904: 0xAEB5, + 25408 - 11904: 0xD1CB, + 25409 - 11904: 0xD1BF, + 25410 - 11904: 0xAEB8, + 25411 - 11904: 0xD1B8, + 25412 - 11904: 0xD1B5, + 25413 - 11904: 0xD1B6, + 25414 - 11904: 0xAEB9, + 25415 - 11904: 0xD1C5, + 25416 - 11904: 0xD1CC, + 25417 - 11904: 0xAEBB, + 25418 - 11904: 0xD1BC, + 25419 - 11904: 0xD1BB, + 25420 - 11904: 0xAEC3, + 25421 - 11904: 0xAEC2, + 25422 - 11904: 0xAEB4, + 25423 - 11904: 0xAEBA, + 25424 - 11904: 0xAEBD, + 25425 - 11904: 0xD1C8, + 25428 - 11904: 0xD1C2, + 25429 - 11904: 0xAEB7, + 25430 - 11904: 0xD1B3, + 25431 - 11904: 0xD1CA, + 25432 - 11904: 0xD1C1, + 25433 - 11904: 0xD1C3, + 25434 - 11904: 0xD1C7, + 25444 - 11904: 0xA07C, + 25445 - 11904: 0xD567, + 25447 - 11904: 0xB1B7, + 25448 - 11904: 0xB1CB, + 25449 - 11904: 0xB1CA, + 25451 - 11904: 0xB1BF, + 25452 - 11904: 0xFCB2, + 25453 - 11904: 0xD579, + 25454 - 11904: 0xD575, + 25455 - 11904: 0xD572, + 25456 - 11904: 0xD5A6, + 25457 - 11904: 0xB1BA, + 25458 - 11904: 0xB1B2, + 25461 - 11904: 0xD577, + 25462 - 11904: 0xB4A8, + 25463 - 11904: 0xB1B6, + 25464 - 11904: 0xD5A1, + 25465 - 11904: 0x8AC1, + 25466 - 11904: 0xB1CC, + 25467 - 11904: 0xB1C9, + 25468 - 11904: 0xD57B, + 25469 - 11904: 0xD56A, + 25471 - 11904: 0x9FB4, + 25472 - 11904: 0xB1C8, + 25473 - 11904: 0xD5A3, + 25474 - 11904: 0xD569, + 25475 - 11904: 0xB1BD, + 25476 - 11904: 0xB1C1, + 25477 - 11904: 0xD5A2, + 25479 - 11904: 0xD573, + 25480 - 11904: 0xB1C2, + 25481 - 11904: 0xB1BC, + 25482 - 11904: 0xD568, + 25483 - 11904: 0xFCAC, + 25484 - 11904: 0xB478, + 25485 - 11904: 0xD5A5, + 25486 - 11904: 0xD571, + 25487 - 11904: 0xB1C7, + 25488 - 11904: 0xD574, + 25489 - 11904: 0xD5A4, + 25490 - 11904: 0xB1C6, + 25492 - 11904: 0xD952, + 25494 - 11904: 0xB1B3, + 25495 - 11904: 0xD56F, + 25496 - 11904: 0xB1B8, + 25497 - 11904: 0xB1C3, + 25499 - 11904: 0xB1BE, + 25500 - 11904: 0xD578, + 25501 - 11904: 0xD56E, + 25502 - 11904: 0xD56C, + 25503 - 11904: 0xD57E, + 25504 - 11904: 0xB1B0, + 25505 - 11904: 0xB1C4, + 25506 - 11904: 0xB1B4, + 25507 - 11904: 0xB477, + 25508 - 11904: 0xD57C, + 25509 - 11904: 0xB1B5, + 25511 - 11904: 0xB1B1, + 25512 - 11904: 0xB1C0, + 25513 - 11904: 0xB1BB, + 25514 - 11904: 0xB1B9, + 25515 - 11904: 0xD570, + 25516 - 11904: 0xB1C5, + 25517 - 11904: 0xD56D, + 25518 - 11904: 0xD57A, + 25519 - 11904: 0xD576, + 25520 - 11904: 0xD954, + 25521 - 11904: 0xD953, + 25529 - 11904: 0x9E4C, + 25533 - 11904: 0xD56B, + 25534 - 11904: 0xD964, + 25536 - 11904: 0xB47A, + 25537 - 11904: 0x8FC5, + 25538 - 11904: 0xD96A, + 25539 - 11904: 0xD959, + 25540 - 11904: 0xD967, + 25541 - 11904: 0xDD77, + 25542 - 11904: 0xB47D, + 25543 - 11904: 0xD96B, + 25544 - 11904: 0xD96E, + 25545 - 11904: 0xB47C, + 25546 - 11904: 0xD95C, + 25547 - 11904: 0xD96D, + 25548 - 11904: 0xD96C, + 25549 - 11904: 0xB47E, + 25550 - 11904: 0xD955, + 25551 - 11904: 0xB479, + 25552 - 11904: 0xB4A3, + 25553 - 11904: 0x93AD, + 25554 - 11904: 0xB4A1, + 25555 - 11904: 0xD969, + 25557 - 11904: 0xD95F, + 25558 - 11904: 0xB4A5, + 25559 - 11904: 0xD970, + 25560 - 11904: 0xD968, + 25561 - 11904: 0xD971, + 25562 - 11904: 0xB4AD, + 25563 - 11904: 0xB4AB, + 25564 - 11904: 0xD966, + 25565 - 11904: 0xD965, + 25566 - 11904: 0x9DC3, + 25567 - 11904: 0xD963, + 25568 - 11904: 0xD95D, + 25569 - 11904: 0xB4A4, + 25570 - 11904: 0x8DA2, + 25571 - 11904: 0xB4A2, + 25572 - 11904: 0xD1B9, + 25573 - 11904: 0xD956, + 25574 - 11904: 0x9D4A, + 25575 - 11904: 0xDDB7, + 25576 - 11904: 0xD957, + 25577 - 11904: 0xB47B, + 25578 - 11904: 0xB4AA, + 25579 - 11904: 0xDD79, + 25581 - 11904: 0xB4A6, + 25582 - 11904: 0xB4A7, + 25583 - 11904: 0xD958, + 25584 - 11904: 0xD96F, + 25585 - 11904: 0xDD78, + 25586 - 11904: 0xD960, + 25587 - 11904: 0xD95B, + 25588 - 11904: 0xB4A9, + 25589 - 11904: 0xD961, + 25590 - 11904: 0xD95E, + 25592 - 11904: 0xFCB6, + 25593 - 11904: 0xB4AE, + 25595 - 11904: 0x8DA3, + 25596 - 11904: 0x9E4B, + 25598 - 11904: 0x9E4D, + 25606 - 11904: 0xB770, + 25607 - 11904: 0x8DA4, + 25609 - 11904: 0xDD7C, + 25610 - 11904: 0xDDB1, + 25611 - 11904: 0xDDB6, + 25612 - 11904: 0xDDAA, + 25613 - 11904: 0xB76C, + 25614 - 11904: 0xDDBB, + 25615 - 11904: 0xB769, + 25616 - 11904: 0xDD7A, + 25618 - 11904: 0xDD7B, + 25619 - 11904: 0xB762, + 25620 - 11904: 0xB76B, + 25621 - 11904: 0xDDA4, + 25622 - 11904: 0xB76E, + 25623 - 11904: 0xB76F, + 25624 - 11904: 0xDDA5, + 25626 - 11904: 0xDDB2, + 25627 - 11904: 0xDDB8, + 25628 - 11904: 0xB76A, + 25630 - 11904: 0xB764, + 25631 - 11904: 0xDDA3, + 25632 - 11904: 0xDD7D, + 25633 - 11904: 0xDDBA, + 25634 - 11904: 0xDDA8, + 25635 - 11904: 0xDDA9, + 25636 - 11904: 0xDD7E, + 25637 - 11904: 0xDDB4, + 25638 - 11904: 0xDDAB, + 25639 - 11904: 0xDDB5, + 25640 - 11904: 0xDDAD, + 25642 - 11904: 0xB765, + 25643 - 11904: 0xE1D9, + 25644 - 11904: 0xB768, + 25645 - 11904: 0xB766, + 25646 - 11904: 0xDDB9, + 25647 - 11904: 0xDDB0, + 25648 - 11904: 0xDDAC, + 25650 - 11904: 0x8AFD, + 25651 - 11904: 0xDDA1, + 25652 - 11904: 0xBA53, + 25653 - 11904: 0xDDAF, + 25654 - 11904: 0xB76D, + 25655 - 11904: 0xDDA7, + 25656 - 11904: 0xFCB5, + 25657 - 11904: 0xDDA6, + 25658 - 11904: 0xFCC3, + 25659 - 11904: 0x93B2, + 25661 - 11904: 0xB767, + 25662 - 11904: 0xB763, + 25663 - 11904: 0xE1EE, + 25664 - 11904: 0xDDB3, + 25665 - 11904: 0xDDAE, + 25667 - 11904: 0xDDA2, + 25675 - 11904: 0xE1E9, + 25677 - 11904: 0xE1DA, + 25678 - 11904: 0xE1E5, + 25680 - 11904: 0xE1EC, + 25681 - 11904: 0xBA51, + 25682 - 11904: 0xB4AC, + 25683 - 11904: 0xE1EA, + 25684 - 11904: 0xBA4C, + 25688 - 11904: 0xBA4B, + 25689 - 11904: 0xE1F1, + 25690 - 11904: 0x8DA5, + 25691 - 11904: 0xE1DB, + 25692 - 11904: 0xE1E8, + 25693 - 11904: 0xE1DC, + 25694 - 11904: 0xE1E7, + 25695 - 11904: 0xBA4F, + 25696 - 11904: 0xE1EB, + 25697 - 11904: 0xD962, + 25701 - 11904: 0xE1F2, + 25702 - 11904: 0xE1E3, + 25703 - 11904: 0xBA52, + 25704 - 11904: 0xE5BA, + 25705 - 11904: 0xBCAF, + 25707 - 11904: 0xE1F0, + 25708 - 11904: 0xE1EF, + 25709 - 11904: 0xBA54, + 25710 - 11904: 0xE5AD, + 25711 - 11904: 0xBCB0, + 25712 - 11904: 0xE5AE, + 25713 - 11904: 0x93A1, + 25714 - 11904: 0xE1DF, + 25715 - 11904: 0xE1E0, + 25716 - 11904: 0xE1DD, + 25717 - 11904: 0xE1E2, + 25718 - 11904: 0xE1DE, + 25719 - 11904: 0xE1F3, + 25720 - 11904: 0xBA4E, + 25721 - 11904: 0xBCB1, + 25722 - 11904: 0xBA50, + 25723 - 11904: 0xBA55, + 25724 - 11904: 0x8AC6, + 25725 - 11904: 0xE1E1, + 25727 - 11904: 0xE1ED, + 25730 - 11904: 0xE1E6, + 25733 - 11904: 0xE5B1, + 25735 - 11904: 0xBA4A, + 25736 - 11904: 0xBCB4, + 25737 - 11904: 0xE9AA, + 25738 - 11904: 0xE5B6, + 25739 - 11904: 0xE5B5, + 25740 - 11904: 0xE5B7, + 25741 - 11904: 0x8A5B, + 25743 - 11904: 0xE5B4, + 25744 - 11904: 0xFCB9, + 25745 - 11904: 0x894D, + 25746 - 11904: 0xBCBB, + 25747 - 11904: 0xBCB8, + 25749 - 11904: 0xBCB9, + 25750 - 11904: 0xE5AF, + 25751 - 11904: 0xE5B2, + 25752 - 11904: 0xE5BC, + 25753 - 11904: 0xBCC1, + 25754 - 11904: 0xBCBF, + 25756 - 11904: 0xE5B3, + 25757 - 11904: 0xD95A, + 25758 - 11904: 0xBCB2, + 25759 - 11904: 0xE5B9, + 25760 - 11904: 0xE5B0, + 25762 - 11904: 0xBCC2, + 25763 - 11904: 0xE5B8, + 25764 - 11904: 0xBA4D, + 25765 - 11904: 0xBCB7, + 25766 - 11904: 0xE1E4, + 25769 - 11904: 0xBCBA, + 25771 - 11904: 0xBCBE, + 25772 - 11904: 0xBCC0, + 25773 - 11904: 0xBCBD, + 25774 - 11904: 0xBCBC, + 25775 - 11904: 0xFED4, + 25776 - 11904: 0xBCB6, + 25777 - 11904: 0xE5BB, + 25778 - 11904: 0xBCB3, + 25779 - 11904: 0xBCC3, + 25780 - 11904: 0x8A78, + 25782 - 11904: 0x93AB, + 25787 - 11904: 0xBED8, + 25788 - 11904: 0xBED9, + 25789 - 11904: 0xE9A9, + 25790 - 11904: 0xBEE2, + 25791 - 11904: 0xBEDF, + 25792 - 11904: 0x8DA7, + 25793 - 11904: 0xBED6, + 25794 - 11904: 0xBEDD, + 25795 - 11904: 0xE9AB, + 25796 - 11904: 0xBEDB, + 25797 - 11904: 0xBED5, + 25799 - 11904: 0xBEDC, + 25801 - 11904: 0xE9A8, + 25802 - 11904: 0xC0BB, + 25803 - 11904: 0xBED7, + 25805 - 11904: 0xBEDE, + 25806 - 11904: 0xC0BA, + 25807 - 11904: 0xE9A7, + 25808 - 11904: 0xE9A6, + 25810 - 11904: 0xBEE0, + 25811 - 11904: 0x9F45, + 25812 - 11904: 0xBEE1, + 25814 - 11904: 0xE9A5, + 25815 - 11904: 0xE9A4, + 25816 - 11904: 0xC0BC, + 25817 - 11904: 0xE9AE, + 25818 - 11904: 0xBEDA, + 25819 - 11904: 0xE9AC, + 25821 - 11904: 0x8A56, + 25824 - 11904: 0xC0BD, + 25825 - 11904: 0xFCBF, + 25826 - 11904: 0xC0C2, + 25827 - 11904: 0xECEA, + 25828 - 11904: 0xECEC, + 25829 - 11904: 0xFCC0, + 25830 - 11904: 0xC0BF, + 25831 - 11904: 0x8EE6, + 25832 - 11904: 0xECED, + 25833 - 11904: 0xECE9, + 25834 - 11904: 0x8AA4, + 25835 - 11904: 0xECEB, + 25836 - 11904: 0xC0C0, + 25837 - 11904: 0xC0C3, + 25839 - 11904: 0xECE8, + 25840 - 11904: 0xC0BE, + 25841 - 11904: 0xC0C1, + 25842 - 11904: 0xC259, + 25843 - 11904: 0xE9AD, + 25844 - 11904: 0xC258, + 25847 - 11904: 0xC25E, + 25848 - 11904: 0xEFD4, + 25850 - 11904: 0xC25C, + 25851 - 11904: 0xC25D, + 25852 - 11904: 0xEFD7, + 25853 - 11904: 0xEFD3, + 25854 - 11904: 0xC25A, + 25855 - 11904: 0xEFD1, + 25856 - 11904: 0xC36B, + 25857 - 11904: 0xEFD5, + 25859 - 11904: 0xEFD6, + 25860 - 11904: 0xEFD2, + 25862 - 11904: 0xC25B, + 25863 - 11904: 0xF242, + 25865 - 11904: 0xF245, + 25866 - 11904: 0x8943, + 25868 - 11904: 0xF246, + 25869 - 11904: 0xF244, + 25870 - 11904: 0xF247, + 25871 - 11904: 0xC36C, + 25872 - 11904: 0xF243, + 25873 - 11904: 0x93F3, + 25875 - 11904: 0xF44E, + 25876 - 11904: 0xC464, + 25877 - 11904: 0xF44D, + 25878 - 11904: 0xF44C, + 25879 - 11904: 0xF44B, + 25880 - 11904: 0xC463, + 25881 - 11904: 0xC465, + 25883 - 11904: 0xF5CD, + 25884 - 11904: 0xC4E2, + 25885 - 11904: 0xC4E1, + 25886 - 11904: 0xFCAB, + 25887 - 11904: 0x9EA2, + 25888 - 11904: 0xF6E1, + 25889 - 11904: 0xF6E0, + 25890 - 11904: 0xF6E3, + 25891 - 11904: 0xC5CB, + 25892 - 11904: 0xC575, + 25893 - 11904: 0xF7DD, + 25894 - 11904: 0xF6E2, + 25897 - 11904: 0xF7DC, + 25898 - 11904: 0xC5CD, + 25899 - 11904: 0xC5CC, + 25900 - 11904: 0xC5F3, + 25901 - 11904: 0xF8A9, + 25902 - 11904: 0xF8EF, + 25903 - 11904: 0xA4E4, + 25904 - 11904: 0x9DC7, + 25906 - 11904: 0xD972, + 25907 - 11904: 0xE9AF, + 25908 - 11904: 0xC6D2, + 25909 - 11904: 0x8BCE, + 25910 - 11904: 0xA6AC, + 25911 - 11904: 0xCAF7, + 25912 - 11904: 0xA7F1, + 25913 - 11904: 0xA7EF, + 25915 - 11904: 0xA7F0, + 25917 - 11904: 0xCCC1, + 25918 - 11904: 0xA9F1, + 25919 - 11904: 0xAC46, + 25921 - 11904: 0xCEE7, + 25923 - 11904: 0xCEE8, + 25925 - 11904: 0xAC47, + 25926 - 11904: 0xD1CE, + 25928 - 11904: 0xAEC4, + 25929 - 11904: 0xAEC5, + 25930 - 11904: 0xD1CD, + 25933 - 11904: 0xFCC5, + 25935 - 11904: 0xB1D3, + 25937 - 11904: 0xB1CF, + 25939 - 11904: 0xD5A7, + 25940 - 11904: 0xB1D6, + 25941 - 11904: 0xB1D5, + 25942 - 11904: 0xB1CE, + 25943 - 11904: 0xB1D1, + 25944 - 11904: 0xB1D4, + 25945 - 11904: 0xB1D0, + 25948 - 11904: 0xD976, + 25949 - 11904: 0xB1CD, + 25950 - 11904: 0xB4AF, + 25951 - 11904: 0xFCCB, + 25954 - 11904: 0xB4B1, + 25955 - 11904: 0xB4B2, + 25956 - 11904: 0xD975, + 25957 - 11904: 0xD978, + 25958 - 11904: 0xB4B0, + 25959 - 11904: 0xD973, + 25960 - 11904: 0xD977, + 25962 - 11904: 0xD974, + 25963 - 11904: 0x93B3, + 25964 - 11904: 0xB771, + 25965 - 11904: 0xFCCA, + 25967 - 11904: 0xDDBC, + 25970 - 11904: 0xBA56, + 25971 - 11904: 0xE1F4, + 25972 - 11904: 0xBEE3, + 25973 - 11904: 0xBCC4, + 25974 - 11904: 0xE5BD, + 25975 - 11904: 0xBCC5, + 25976 - 11904: 0xBCC6, + 25977 - 11904: 0xE5BF, + 25978 - 11904: 0xE5BE, + 25979 - 11904: 0xE5C0, + 25980 - 11904: 0xE9B1, + 25983 - 11904: 0xE9B0, + 25984 - 11904: 0xECEF, + 25985 - 11904: 0xECEE, + 25986 - 11904: 0xC0C4, + 25987 - 11904: 0xC0C5, + 25988 - 11904: 0xF248, + 25989 - 11904: 0xFCC9, + 25990 - 11904: 0x8DAC, + 25991 - 11904: 0xA4E5, + 25992 - 11904: 0xFBC6, + 25993 - 11904: 0x8967, + 25995 - 11904: 0x8C7E, + 25996 - 11904: 0xD979, + 26000 - 11904: 0xB4B4, + 26001 - 11904: 0xB4B3, + 26002 - 11904: 0xDDBD, + 26004 - 11904: 0xEFD8, + 26005 - 11904: 0xC4E3, + 26006 - 11904: 0xF7DE, + 26007 - 11904: 0xA4E6, + 26009 - 11904: 0xAEC6, + 26011 - 11904: 0xB1D8, + 26012 - 11904: 0xB1D7, + 26013 - 11904: 0xD97A, + 26014 - 11904: 0xD97B, + 26015 - 11904: 0xB772, + 26016 - 11904: 0xE1F5, + 26017 - 11904: 0xBA57, + 26018 - 11904: 0xE9B2, + 26020 - 11904: 0xA4E7, + 26021 - 11904: 0xA5B8, + 26023 - 11904: 0xA9F2, + 26024 - 11904: 0xCCC2, + 26026 - 11904: 0xCEE9, + 26027 - 11904: 0xAC48, + 26028 - 11904: 0xB1D9, + 26030 - 11904: 0xD97C, + 26031 - 11904: 0xB4B5, + 26032 - 11904: 0xB773, + 26034 - 11904: 0xE5C1, + 26035 - 11904: 0xE5C2, + 26037 - 11904: 0xFCCD, + 26038 - 11904: 0xECF0, + 26039 - 11904: 0xC25F, + 26040 - 11904: 0xF8F0, + 26041 - 11904: 0xA4E8, + 26043 - 11904: 0xCCC3, + 26044 - 11904: 0xA9F3, + 26045 - 11904: 0xAC49, + 26046 - 11904: 0x9CF3, + 26047 - 11904: 0xCEEA, + 26049 - 11904: 0xAEC7, + 26050 - 11904: 0xD1D2, + 26051 - 11904: 0xD1D0, + 26052 - 11904: 0xD1D1, + 26053 - 11904: 0xAEC8, + 26054 - 11904: 0xD1CF, + 26059 - 11904: 0xB1DB, + 26060 - 11904: 0xB1DC, + 26061 - 11904: 0xD5A8, + 26062 - 11904: 0xB1DD, + 26063 - 11904: 0xB1DA, + 26064 - 11904: 0xD97D, + 26065 - 11904: 0xFCD0, + 26066 - 11904: 0xD97E, + 26067 - 11904: 0xDDBE, + 26068 - 11904: 0x95BB, + 26070 - 11904: 0xBA59, + 26071 - 11904: 0xBA58, + 26074 - 11904: 0xECF1, + 26075 - 11904: 0xEFD9, + 26077 - 11904: 0xF24A, + 26078 - 11904: 0xF249, + 26079 - 11904: 0xF44F, + 26080 - 11904: 0xFCD3, + 26081 - 11904: 0xC95E, + 26082 - 11904: 0xAC4A, + 26083 - 11904: 0xFCD4, + 26085 - 11904: 0xA4E9, + 26086 - 11904: 0xA5B9, + 26088 - 11904: 0xA6AE, + 26089 - 11904: 0xA6AD, + 26092 - 11904: 0xA6AF, + 26093 - 11904: 0xA6B0, + 26094 - 11904: 0xC9EE, + 26095 - 11904: 0xC9ED, + 26096 - 11904: 0xCAF8, + 26097 - 11904: 0xA7F2, + 26098 - 11904: 0xCAFB, + 26099 - 11904: 0xCAFA, + 26100 - 11904: 0xCAF9, + 26101 - 11904: 0xCAFC, + 26106 - 11904: 0xA9F4, + 26107 - 11904: 0xCCC9, + 26108 - 11904: 0xCCC5, + 26109 - 11904: 0xCCCE, + 26111 - 11904: 0x8DAE, + 26112 - 11904: 0xA9FB, + 26114 - 11904: 0xA9F9, + 26115 - 11904: 0xCCCA, + 26116 - 11904: 0xCCC6, + 26117 - 11904: 0xCCCD, + 26118 - 11904: 0xA9F8, + 26119 - 11904: 0xAA40, + 26120 - 11904: 0xCCC8, + 26121 - 11904: 0xCCC4, + 26122 - 11904: 0xA9FE, + 26123 - 11904: 0xCCCB, + 26124 - 11904: 0xA9F7, + 26125 - 11904: 0xCCCC, + 26126 - 11904: 0xA9FA, + 26127 - 11904: 0xA9FC, + 26128 - 11904: 0xCCD0, + 26129 - 11904: 0xCCCF, + 26130 - 11904: 0xCCC7, + 26131 - 11904: 0xA9F6, + 26132 - 11904: 0xA9F5, + 26133 - 11904: 0xA9FD, + 26136 - 11904: 0xFCD7, + 26140 - 11904: 0xCEEF, + 26141 - 11904: 0xCEF5, + 26142 - 11904: 0x93DB, + 26143 - 11904: 0xAC50, + 26144 - 11904: 0xAC4D, + 26145 - 11904: 0xCEEC, + 26146 - 11904: 0xCEF1, + 26147 - 11904: 0xFE63, + 26148 - 11904: 0xAC53, + 26149 - 11904: 0xAC4B, + 26150 - 11904: 0xCEF0, + 26151 - 11904: 0xAC4E, + 26152 - 11904: 0xAC51, + 26155 - 11904: 0xCEF3, + 26157 - 11904: 0xAC4C, + 26158 - 11904: 0xCEF8, + 26159 - 11904: 0xAC4F, + 26160 - 11904: 0x93D5, + 26161 - 11904: 0xAC52, + 26162 - 11904: 0xCEED, + 26163 - 11904: 0xCEF2, + 26164 - 11904: 0xCEF6, + 26165 - 11904: 0xCEEE, + 26166 - 11904: 0xCEEB, + 26169 - 11904: 0xCEF7, + 26170 - 11904: 0xCEF4, + 26177 - 11904: 0xAED0, + 26178 - 11904: 0xAEC9, + 26179 - 11904: 0xAECC, + 26180 - 11904: 0xFCDA, + 26181 - 11904: 0xAECF, + 26183 - 11904: 0xD1D5, + 26184 - 11904: 0x9B71, + 26185 - 11904: 0xAECA, + 26186 - 11904: 0xD1D3, + 26187 - 11904: 0xFCDD, + 26188 - 11904: 0xAECE, + 26189 - 11904: 0x8764, + 26191 - 11904: 0xAECB, + 26193 - 11904: 0xD1D6, + 26194 - 11904: 0xAECD, + 26195 - 11904: 0x8DAF, + 26199 - 11904: 0xFAF2, + 26201 - 11904: 0xD5AC, + 26202 - 11904: 0xB1DF, + 26203 - 11904: 0xD5AB, + 26204 - 11904: 0xD5AD, + 26205 - 11904: 0xB1DE, + 26206 - 11904: 0xB1E3, + 26207 - 11904: 0xD1D4, + 26208 - 11904: 0x87B5, + 26209 - 11904: 0xD5AA, + 26210 - 11904: 0xD5AE, + 26211 - 11904: 0x93D8, + 26212 - 11904: 0xB1E0, + 26213 - 11904: 0xD5A9, + 26214 - 11904: 0xB1E2, + 26215 - 11904: 0xFCDF, + 26216 - 11904: 0xB1E1, + 26218 - 11904: 0xD9A7, + 26219 - 11904: 0x93D3, + 26220 - 11904: 0xD9A2, + 26222 - 11904: 0xB4B6, + 26223 - 11904: 0xB4BA, + 26224 - 11904: 0xB4B7, + 26225 - 11904: 0xD9A5, + 26226 - 11904: 0xD9A8, + 26227 - 11904: 0xFCE1, + 26228 - 11904: 0xFCE2, + 26230 - 11904: 0xB4B9, + 26231 - 11904: 0xB4BE, + 26232 - 11904: 0xDDC7, + 26233 - 11904: 0xD9A6, + 26234 - 11904: 0xB4BC, + 26235 - 11904: 0xD9A3, + 26236 - 11904: 0xD9A1, + 26237 - 11904: 0x8E76, + 26238 - 11904: 0xB4BD, + 26240 - 11904: 0xD9A4, + 26244 - 11904: 0xB779, + 26245 - 11904: 0xFC62, + 26246 - 11904: 0xDDBF, + 26247 - 11904: 0xB776, + 26248 - 11904: 0xB777, + 26249 - 11904: 0xB775, + 26250 - 11904: 0xDDC4, + 26251 - 11904: 0xDDC3, + 26252 - 11904: 0xDDC0, + 26253 - 11904: 0xB77B, + 26254 - 11904: 0x93D1, + 26256 - 11904: 0xDDC2, + 26257 - 11904: 0xB4BB, + 26258 - 11904: 0x8DB1, + 26260 - 11904: 0xDDC6, + 26261 - 11904: 0xDDC1, + 26262 - 11904: 0xB778, + 26263 - 11904: 0xB774, + 26264 - 11904: 0xB77A, + 26265 - 11904: 0xDDC5, + 26266 - 11904: 0x9859, + 26269 - 11904: 0xBA5C, + 26271 - 11904: 0xE1F8, + 26272 - 11904: 0xE1F7, + 26273 - 11904: 0xE1F6, + 26274 - 11904: 0xBA5A, + 26276 - 11904: 0xFB52, + 26280 - 11904: 0xBA5B, + 26281 - 11904: 0xE5C5, + 26282 - 11904: 0xE5C8, + 26283 - 11904: 0xBCC8, + 26285 - 11904: 0xFB53, + 26286 - 11904: 0xBCC7, + 26287 - 11904: 0xE5C9, + 26288 - 11904: 0xE5C4, + 26289 - 11904: 0xBCCA, + 26290 - 11904: 0xE5C6, + 26291 - 11904: 0xFB4D, + 26292 - 11904: 0xBCC9, + 26293 - 11904: 0xE5C3, + 26294 - 11904: 0x9CBF, + 26295 - 11904: 0xE5C7, + 26296 - 11904: 0xBEE9, + 26297 - 11904: 0xBEE6, + 26298 - 11904: 0xE9BB, + 26299 - 11904: 0xE9BA, + 26301 - 11904: 0xE9B9, + 26302 - 11904: 0xE9B4, + 26303 - 11904: 0x9B72, + 26304 - 11904: 0xE9B5, + 26308 - 11904: 0xBEE7, + 26310 - 11904: 0xBEE4, + 26311 - 11904: 0xBEE8, + 26312 - 11904: 0xE9B3, + 26313 - 11904: 0xBEE5, + 26314 - 11904: 0xE9B6, + 26315 - 11904: 0xE9B7, + 26316 - 11904: 0xE9BC, + 26317 - 11904: 0xFB50, + 26318 - 11904: 0x93BE, + 26319 - 11904: 0xE9B8, + 26322 - 11904: 0xECF2, + 26326 - 11904: 0xC0C7, + 26328 - 11904: 0xEFDC, + 26329 - 11904: 0xC0C6, + 26330 - 11904: 0xEFDA, + 26331 - 11904: 0xEFDB, + 26332 - 11904: 0xC260, + 26333 - 11904: 0xC36E, + 26334 - 11904: 0xF24B, + 26336 - 11904: 0xC36D, + 26339 - 11904: 0xF451, + 26340 - 11904: 0xF452, + 26342 - 11904: 0xC466, + 26343 - 11904: 0x8CDB, + 26344 - 11904: 0xF450, + 26345 - 11904: 0xC4E4, + 26347 - 11904: 0xF7DF, + 26348 - 11904: 0xC5CE, + 26349 - 11904: 0xF8AA, + 26350 - 11904: 0xF8AB, + 26352 - 11904: 0xA4EA, + 26353 - 11904: 0x9DF1, + 26354 - 11904: 0xA6B1, + 26355 - 11904: 0xA6B2, + 26356 - 11904: 0xA7F3, + 26358 - 11904: 0xCCD1, + 26359 - 11904: 0xAC54, + 26360 - 11904: 0xAED1, + 26361 - 11904: 0xB1E4, + 26364 - 11904: 0xB0D2, + 26366 - 11904: 0xB4BF, + 26367 - 11904: 0xB4C0, + 26368 - 11904: 0xB3CC, + 26369 - 11904: 0xD9A9, + 26370 - 11904: 0xFCEB, + 26371 - 11904: 0xB77C, + 26372 - 11904: 0xE1FA, + 26373 - 11904: 0xE1F9, + 26376 - 11904: 0xA4EB, + 26377 - 11904: 0xA6B3, + 26378 - 11904: 0xCCD2, + 26379 - 11904: 0xAA42, + 26380 - 11904: 0xA0BB, + 26381 - 11904: 0xAA41, + 26382 - 11904: 0x9B7E, + 26383 - 11904: 0xCEF9, + 26384 - 11904: 0xCEFA, + 26386 - 11904: 0xD1D7, + 26387 - 11904: 0xD1D8, + 26388 - 11904: 0xAED2, + 26389 - 11904: 0xAED3, + 26390 - 11904: 0x8DB3, + 26391 - 11904: 0xAED4, + 26392 - 11904: 0xD5AF, + 26393 - 11904: 0x8C52, + 26395 - 11904: 0xB1E6, + 26397 - 11904: 0xB4C2, + 26398 - 11904: 0x9AE8, + 26399 - 11904: 0xB4C1, + 26400 - 11904: 0xDDC8, + 26401 - 11904: 0xDF7A, + 26402 - 11904: 0xE1FB, + 26403 - 11904: 0xE9BD, + 26405 - 11904: 0x8EDC, + 26406 - 11904: 0xC261, + 26407 - 11904: 0xC467, + 26408 - 11904: 0xA4EC, + 26410 - 11904: 0xA5BC, + 26411 - 11904: 0xA5BD, + 26412 - 11904: 0xA5BB, + 26413 - 11904: 0xA5BE, + 26414 - 11904: 0xA5BA, + 26417 - 11904: 0xA6B6, + 26419 - 11904: 0xC9F6, + 26420 - 11904: 0xA6B5, + 26421 - 11904: 0xA6B7, + 26422 - 11904: 0x9CF9, + 26424 - 11904: 0xC9F1, + 26425 - 11904: 0xC9F0, + 26426 - 11904: 0xC9F3, + 26427 - 11904: 0xC9F2, + 26428 - 11904: 0xC9F5, + 26429 - 11904: 0xA6B4, + 26430 - 11904: 0xC9EF, + 26431 - 11904: 0xC9F4, + 26436 - 11904: 0xFA50, + 26437 - 11904: 0xCAFD, + 26438 - 11904: 0xA7FD, + 26439 - 11904: 0xCAFE, + 26440 - 11904: 0xCB43, + 26441 - 11904: 0xA7FC, + 26443 - 11904: 0xCB47, + 26444 - 11904: 0xCB42, + 26445 - 11904: 0xCB45, + 26446 - 11904: 0xA7F5, + 26447 - 11904: 0xA7F6, + 26448 - 11904: 0xA7F7, + 26449 - 11904: 0xA7F8, + 26451 - 11904: 0xA840, + 26453 - 11904: 0xCB41, + 26454 - 11904: 0xA7FA, + 26455 - 11904: 0xA841, + 26457 - 11904: 0xCB40, + 26458 - 11904: 0xCB46, + 26460 - 11904: 0xA7F9, + 26461 - 11904: 0xCB44, + 26462 - 11904: 0xFCF1, + 26463 - 11904: 0xA7F4, + 26464 - 11904: 0xA7FE, + 26465 - 11904: 0x98E7, + 26466 - 11904: 0xFCF3, + 26471 - 11904: 0xFCF2, + 26474 - 11904: 0xAA57, + 26475 - 11904: 0x8CCA, + 26476 - 11904: 0xCCD4, + 26477 - 11904: 0xAA43, + 26478 - 11904: 0x8775, + 26479 - 11904: 0xAA4D, + 26480 - 11904: 0xAA4E, + 26481 - 11904: 0xAA46, + 26482 - 11904: 0xAA58, + 26483 - 11904: 0xAA48, + 26484 - 11904: 0xCCDC, + 26485 - 11904: 0xAA53, + 26486 - 11904: 0xCCD7, + 26487 - 11904: 0xAA49, + 26488 - 11904: 0xCCE6, + 26489 - 11904: 0xCCE7, + 26490 - 11904: 0xCCDF, + 26491 - 11904: 0xCCD8, + 26492 - 11904: 0xAA56, + 26493 - 11904: 0xCCE4, + 26494 - 11904: 0xAA51, + 26495 - 11904: 0xAA4F, + 26497 - 11904: 0xCCE5, + 26498 - 11904: 0x87BA, + 26499 - 11904: 0xCCE3, + 26500 - 11904: 0xCCDB, + 26501 - 11904: 0xCCD3, + 26502 - 11904: 0xCCDA, + 26503 - 11904: 0xAA4A, + 26505 - 11904: 0xAA50, + 26507 - 11904: 0xAA44, + 26508 - 11904: 0xCCDE, + 26509 - 11904: 0xCCDD, + 26510 - 11904: 0xCCD5, + 26511 - 11904: 0x93E5, + 26512 - 11904: 0xAA52, + 26513 - 11904: 0xCCE1, + 26514 - 11904: 0xCCD6, + 26515 - 11904: 0xAA55, + 26516 - 11904: 0xCCE8, + 26517 - 11904: 0xAA45, + 26519 - 11904: 0xAA4C, + 26520 - 11904: 0xCCD9, + 26521 - 11904: 0xCCE2, + 26522 - 11904: 0xAA54, + 26524 - 11904: 0xAA47, + 26525 - 11904: 0xAA4B, + 26527 - 11904: 0xCCE0, + 26528 - 11904: 0x9A59, + 26532 - 11904: 0x8DB5, + 26540 - 11904: 0xFD4D, + 26542 - 11904: 0xCF5B, + 26543 - 11904: 0xAC5C, + 26544 - 11904: 0xAC69, + 26545 - 11904: 0xFD5E, + 26546 - 11904: 0xCF56, + 26547 - 11904: 0xCF4C, + 26548 - 11904: 0xAC62, + 26549 - 11904: 0xCF4A, + 26550 - 11904: 0xAC5B, + 26551 - 11904: 0xCF45, + 26552 - 11904: 0xAC65, + 26553 - 11904: 0xCF52, + 26554 - 11904: 0xCEFE, + 26555 - 11904: 0xCF41, + 26559 - 11904: 0x8F7D, + 26560 - 11904: 0xCF44, + 26561 - 11904: 0xCEFB, + 26562 - 11904: 0xCF51, + 26563 - 11904: 0xCF61, + 26564 - 11904: 0xAC60, + 26565 - 11904: 0xCF46, + 26566 - 11904: 0xCF58, + 26568 - 11904: 0xCEFD, + 26569 - 11904: 0xCF5F, + 26570 - 11904: 0xCF60, + 26571 - 11904: 0xCF63, + 26572 - 11904: 0xCF5A, + 26573 - 11904: 0xCF4B, + 26574 - 11904: 0xCF53, + 26575 - 11904: 0xAC66, + 26576 - 11904: 0xAC59, + 26577 - 11904: 0xAC61, + 26578 - 11904: 0xAC6D, + 26579 - 11904: 0xAC56, + 26580 - 11904: 0xAC58, + 26582 - 11904: 0x9547, + 26583 - 11904: 0xFCF6, + 26584 - 11904: 0xCF43, + 26585 - 11904: 0xAC6A, + 26586 - 11904: 0xAC63, + 26587 - 11904: 0xCF5D, + 26588 - 11904: 0xCF40, + 26589 - 11904: 0xAC6C, + 26590 - 11904: 0xAC67, + 26591 - 11904: 0xCF49, + 26594 - 11904: 0xAC6B, + 26595 - 11904: 0xCF50, + 26596 - 11904: 0xCF48, + 26597 - 11904: 0xAC64, + 26598 - 11904: 0xCF5C, + 26599 - 11904: 0xCF54, + 26601 - 11904: 0xAC5E, + 26602 - 11904: 0xCF62, + 26603 - 11904: 0xCF47, + 26604 - 11904: 0xAC5A, + 26605 - 11904: 0xCF59, + 26606 - 11904: 0xCF4F, + 26607 - 11904: 0xAC5F, + 26608 - 11904: 0xCF55, + 26609 - 11904: 0xAC57, + 26610 - 11904: 0xCEFC, + 26611 - 11904: 0xAC68, + 26612 - 11904: 0xAEE3, + 26613 - 11904: 0xAC5D, + 26614 - 11904: 0xCF4E, + 26615 - 11904: 0xCF4D, + 26616 - 11904: 0xCF42, + 26617 - 11904: 0x9250, + 26618 - 11904: 0xCF5E, + 26620 - 11904: 0xCF57, + 26622 - 11904: 0x8968, + 26623 - 11904: 0xAC55, + 26624 - 11904: 0x8DB6, + 26625 - 11904: 0xFCFB, + 26626 - 11904: 0xA07D, + 26627 - 11904: 0x98FC, + 26628 - 11904: 0x8969, + 26637 - 11904: 0xFE4F, + 26640 - 11904: 0x9256, + 26642 - 11904: 0xD1EC, + 26643 - 11904: 0xAEEA, + 26644 - 11904: 0xD1ED, + 26646 - 11904: 0xD1E1, + 26647 - 11904: 0xAEDF, + 26648 - 11904: 0xAEEB, + 26650 - 11904: 0xD1DA, + 26651 - 11904: 0xFAC9, + 26652 - 11904: 0xD1E3, + 26653 - 11904: 0xD1EB, + 26654 - 11904: 0x93E8, + 26655 - 11904: 0xD1D9, + 26656 - 11904: 0xD1F4, + 26657 - 11904: 0xAED5, + 26658 - 11904: 0xFCF8, + 26661 - 11904: 0xD1F3, + 26662 - 11904: 0xD1EE, + 26664 - 11904: 0xD1EF, + 26665 - 11904: 0xAEDD, + 26666 - 11904: 0xAEE8, + 26667 - 11904: 0xD1E5, + 26669 - 11904: 0xD1E6, + 26670 - 11904: 0xD1F0, + 26671 - 11904: 0xD1E7, + 26673 - 11904: 0xD1E2, + 26674 - 11904: 0xD1DC, + 26675 - 11904: 0xD1DD, + 26676 - 11904: 0xD1EA, + 26677 - 11904: 0xD1E4, + 26678 - 11904: 0x9CE3, + 26679 - 11904: 0xFDA9, + 26680 - 11904: 0xAED6, + 26681 - 11904: 0xAEDA, + 26682 - 11904: 0xD1F2, + 26683 - 11904: 0xD1DE, + 26684 - 11904: 0xAEE6, + 26685 - 11904: 0xAEE2, + 26686 - 11904: 0xFC44, + 26688 - 11904: 0xAEE5, + 26689 - 11904: 0xAEEC, + 26690 - 11904: 0xAEDB, + 26691 - 11904: 0xAEE7, + 26692 - 11904: 0xD1E9, + 26693 - 11904: 0xAEE9, + 26694 - 11904: 0xAED8, + 26695 - 11904: 0x9640, + 26696 - 11904: 0xAED7, + 26697 - 11904: 0xD1DB, + 26698 - 11904: 0x8DB8, + 26699 - 11904: 0xD1DF, + 26700 - 11904: 0xAEE0, + 26701 - 11904: 0xD1F1, + 26702 - 11904: 0xD1E8, + 26703 - 11904: 0xD1E0, + 26704 - 11904: 0xAEE4, + 26705 - 11904: 0xAEE1, + 26707 - 11904: 0xAED9, + 26708 - 11904: 0xAEDC, + 26709 - 11904: 0x9B4A, + 26710 - 11904: 0x8FB9, + 26717 - 11904: 0xFCFE, + 26725 - 11904: 0x896A, + 26731 - 11904: 0xD5C4, + 26733 - 11904: 0xD5B4, + 26734 - 11904: 0xD5B5, + 26735 - 11904: 0xD5B9, + 26737 - 11904: 0xD5C8, + 26738 - 11904: 0xD5C5, + 26740 - 11904: 0xD5BE, + 26741 - 11904: 0xD5BD, + 26742 - 11904: 0xB1ED, + 26743 - 11904: 0xD5C1, + 26744 - 11904: 0xD5D0, + 26745 - 11904: 0xD5B0, + 26747 - 11904: 0xD5D1, + 26748 - 11904: 0xD5C3, + 26749 - 11904: 0xD5D5, + 26750 - 11904: 0xD5C9, + 26751 - 11904: 0xB1EC, + 26752 - 11904: 0xD5C7, + 26753 - 11904: 0xB1E7, + 26754 - 11904: 0xB1FC, + 26755 - 11904: 0xB1F2, + 26756 - 11904: 0x8DB9, + 26757 - 11904: 0xB1F6, + 26758 - 11904: 0xB1F5, + 26759 - 11904: 0xD5B1, + 26760 - 11904: 0x917E, + 26761 - 11904: 0xD5CE, + 26762 - 11904: 0xD5D4, + 26763 - 11904: 0xD5CC, + 26764 - 11904: 0xD5D3, + 26767 - 11904: 0xD5C0, + 26768 - 11904: 0xD5B2, + 26769 - 11904: 0xD5D2, + 26770 - 11904: 0xD5C2, + 26771 - 11904: 0xB1EA, + 26772 - 11904: 0xB1F7, + 26774 - 11904: 0xD5CB, + 26775 - 11904: 0xB1F0, + 26776 - 11904: 0x93F4, + 26779 - 11904: 0xD5CA, + 26780 - 11904: 0xD5B3, + 26781 - 11904: 0xB1F8, + 26783 - 11904: 0xB1FA, + 26784 - 11904: 0xD5CD, + 26785 - 11904: 0xB1FB, + 26786 - 11904: 0xB1E9, + 26787 - 11904: 0xD5BA, + 26788 - 11904: 0xD5CF, + 26790 - 11904: 0xFB7C, + 26791 - 11904: 0xB1EF, + 26792 - 11904: 0xB1F9, + 26793 - 11904: 0xD5BC, + 26794 - 11904: 0xD5C6, + 26795 - 11904: 0xD5B7, + 26796 - 11904: 0xD5BB, + 26797 - 11904: 0xB1F4, + 26798 - 11904: 0xD5B6, + 26799 - 11904: 0xB1E8, + 26800 - 11904: 0xB1F1, + 26801 - 11904: 0xB1EE, + 26802 - 11904: 0xD5BF, + 26803 - 11904: 0xAEDE, + 26804 - 11904: 0xD9C0, + 26805 - 11904: 0xB1EB, + 26806 - 11904: 0x93E7, + 26809 - 11904: 0x97EF, + 26813 - 11904: 0xFE4A, + 26819 - 11904: 0xFD45, + 26820 - 11904: 0xB1F3, + 26821 - 11904: 0x96A5, + 26822 - 11904: 0xD9C3, + 26823 - 11904: 0xD9D9, + 26824 - 11904: 0xD9CE, + 26825 - 11904: 0xB4D6, + 26826 - 11904: 0xFEE0, + 26827 - 11904: 0xB4D1, + 26828 - 11904: 0xD9BD, + 26829 - 11904: 0xB4D2, + 26830 - 11904: 0xD9CD, + 26832 - 11904: 0xD9C6, + 26833 - 11904: 0xD9D3, + 26834 - 11904: 0xB4CE, + 26835 - 11904: 0xD9AB, + 26836 - 11904: 0xD9D5, + 26837 - 11904: 0xB4C4, + 26838 - 11904: 0xD9B3, + 26839 - 11904: 0xB4C7, + 26840 - 11904: 0xB4C6, + 26842 - 11904: 0xB4D7, + 26844 - 11904: 0xD9AD, + 26845 - 11904: 0xD9CF, + 26846 - 11904: 0xD9D0, + 26847 - 11904: 0xB4C9, + 26848 - 11904: 0xB4C5, + 26849 - 11904: 0xD9BB, + 26851 - 11904: 0xB4D0, + 26852 - 11904: 0xD9B6, + 26854 - 11904: 0xD9D1, + 26855 - 11904: 0xB4CC, + 26856 - 11904: 0xD9C9, + 26857 - 11904: 0xD9D6, + 26858 - 11904: 0xD9B0, + 26859 - 11904: 0xD9B5, + 26860 - 11904: 0xD9AF, + 26862 - 11904: 0xB4CB, + 26863 - 11904: 0xD9C2, + 26864 - 11904: 0xDDDE, + 26865 - 11904: 0xD9B1, + 26866 - 11904: 0xB4CF, + 26867 - 11904: 0xD9BA, + 26868 - 11904: 0xD9D2, + 26869 - 11904: 0xB4CA, + 26870 - 11904: 0xD9B7, + 26871 - 11904: 0xD9B4, + 26872 - 11904: 0xD9C5, + 26873 - 11904: 0xB4CD, + 26874 - 11904: 0xB4C3, + 26875 - 11904: 0xB4D9, + 26876 - 11904: 0xD9C8, + 26877 - 11904: 0xD9C7, + 26880 - 11904: 0xFD48, + 26881 - 11904: 0xFD47, + 26882 - 11904: 0xFEF2, + 26883 - 11904: 0xFE6A, + 26884 - 11904: 0xD9AC, + 26885 - 11904: 0xB4C8, + 26886 - 11904: 0xD9D4, + 26887 - 11904: 0xD9BC, + 26888 - 11904: 0xD9BE, + 26889 - 11904: 0x8DBD, + 26890 - 11904: 0xD9CB, + 26891 - 11904: 0xD9CA, + 26892 - 11904: 0xD9AA, + 26893 - 11904: 0xB4D3, + 26894 - 11904: 0xB4D5, + 26895 - 11904: 0xD9B2, + 26896 - 11904: 0xD9B9, + 26897 - 11904: 0xD9C1, + 26898 - 11904: 0xB4D4, + 26899 - 11904: 0xD9B8, + 26900 - 11904: 0xD9C4, + 26901 - 11904: 0xD9D7, + 26903 - 11904: 0xD9CC, + 26904 - 11904: 0x9BA1, + 26905 - 11904: 0x8CA2, + 26906 - 11904: 0x9AB7, + 26907 - 11904: 0x8EFC, + 26917 - 11904: 0xD9D8, + 26922 - 11904: 0xD9AE, + 26924 - 11904: 0x9FA1, + 26927 - 11904: 0xDDF2, + 26928 - 11904: 0xB7A6, + 26930 - 11904: 0xDDF0, + 26931 - 11904: 0xDDDB, + 26932 - 11904: 0xDDE0, + 26933 - 11904: 0xDDD9, + 26934 - 11904: 0xFD51, + 26935 - 11904: 0xDDEC, + 26936 - 11904: 0xDDCB, + 26937 - 11904: 0xDDD2, + 26939 - 11904: 0xDDEA, + 26940 - 11904: 0xDDF4, + 26941 - 11904: 0xDDDC, + 26942 - 11904: 0xFAAD, + 26943 - 11904: 0xDDCF, + 26944 - 11904: 0xDDE2, + 26945 - 11904: 0xDDE7, + 26946 - 11904: 0xDDD3, + 26947 - 11904: 0x8DBE, + 26948 - 11904: 0xDDE4, + 26949 - 11904: 0xDDD0, + 26950 - 11904: 0x89A4, + 26952 - 11904: 0xDDD7, + 26953 - 11904: 0xDDD8, + 26954 - 11904: 0xB7A8, + 26955 - 11904: 0xDDEB, + 26956 - 11904: 0xDDE9, + 26958 - 11904: 0xDDCC, + 26959 - 11904: 0xDDEE, + 26961 - 11904: 0xDDEF, + 26962 - 11904: 0xDDF1, + 26963 - 11904: 0xB7AC, + 26964 - 11904: 0xB7A4, + 26965 - 11904: 0x9AD9, + 26966 - 11904: 0xD5B8, + 26967 - 11904: 0xDDD4, + 26968 - 11904: 0xDDE6, + 26969 - 11904: 0xDDD5, + 26970 - 11904: 0xB7A1, + 26971 - 11904: 0xB7B1, + 26972 - 11904: 0xDDED, + 26973 - 11904: 0xB7AF, + 26974 - 11904: 0xB7AB, + 26975 - 11904: 0xDDCA, + 26976 - 11904: 0xB7A3, + 26977 - 11904: 0xFD4E, + 26978 - 11904: 0xDDCD, + 26979 - 11904: 0xB7B0, + 26980 - 11904: 0x8DC0, + 26981 - 11904: 0xDDDD, + 26982 - 11904: 0xDDC9, + 26983 - 11904: 0x97F0, + 26984 - 11904: 0xB7A9, + 26985 - 11904: 0xDDE1, + 26986 - 11904: 0xDDD1, + 26987 - 11904: 0xB7AA, + 26988 - 11904: 0xDDDA, + 26989 - 11904: 0xB77E, + 26990 - 11904: 0xB4D8, + 26991 - 11904: 0xDDE3, + 26992 - 11904: 0xD9BF, + 26993 - 11904: 0xDDCE, + 26994 - 11904: 0x93B4, + 26995 - 11904: 0xFD44, + 26996 - 11904: 0xDDE8, + 26997 - 11904: 0xB7A5, + 26998 - 11904: 0xDDE5, + 26999 - 11904: 0xB7A2, + 27000 - 11904: 0xDDDF, + 27001 - 11904: 0xB7AD, + 27002 - 11904: 0xDDD6, + 27003 - 11904: 0xDDF3, + 27008 - 11904: 0x9FA7, + 27010 - 11904: 0xB7A7, + 27011 - 11904: 0xDEC6, + 27013 - 11904: 0x8DC2, + 27014 - 11904: 0xB7AE, + 27018 - 11904: 0x99B6, + 27021 - 11904: 0xE24A, + 27022 - 11904: 0xE248, + 27024 - 11904: 0xE25E, + 27025 - 11904: 0xE246, + 27027 - 11904: 0xE258, + 27028 - 11904: 0xB77D, + 27029 - 11904: 0xBA5F, + 27030 - 11904: 0xE242, + 27031 - 11904: 0xE25D, + 27032 - 11904: 0xFD52, + 27033 - 11904: 0xE247, + 27034 - 11904: 0xE255, + 27035 - 11904: 0xBA64, + 27036 - 11904: 0xBA5D, + 27038 - 11904: 0xE25B, + 27039 - 11904: 0x8DC1, + 27040 - 11904: 0xE240, + 27041 - 11904: 0xE25A, + 27042 - 11904: 0x8E46, + 27043 - 11904: 0xBA6F, + 27044 - 11904: 0xE251, + 27045 - 11904: 0xE261, + 27046 - 11904: 0xBA6D, + 27047 - 11904: 0xE249, + 27048 - 11904: 0xBA5E, + 27049 - 11904: 0xE24B, + 27050 - 11904: 0xE259, + 27051 - 11904: 0xBA67, + 27052 - 11904: 0xE244, + 27053 - 11904: 0xBA6B, + 27054 - 11904: 0xBA61, + 27055 - 11904: 0xE24D, + 27056 - 11904: 0xE243, + 27057 - 11904: 0xE1FC, + 27058 - 11904: 0xA0D1, + 27059 - 11904: 0xE257, + 27060 - 11904: 0xBA68, + 27061 - 11904: 0xE260, + 27062 - 11904: 0xE1FD, + 27063 - 11904: 0xBA65, + 27065 - 11904: 0xE253, + 27067 - 11904: 0xBA66, + 27068 - 11904: 0xE245, + 27069 - 11904: 0xE250, + 27070 - 11904: 0xE24C, + 27071 - 11904: 0xE24E, + 27072 - 11904: 0x9FCA, + 27073 - 11904: 0xBA60, + 27074 - 11904: 0xE25F, + 27075 - 11904: 0xBA6E, + 27076 - 11904: 0xE24F, + 27078 - 11904: 0xE262, + 27081 - 11904: 0xE1FE, + 27082 - 11904: 0xE254, + 27083 - 11904: 0xBA63, + 27084 - 11904: 0xBA6C, + 27085 - 11904: 0xBA6A, + 27086 - 11904: 0xE241, + 27087 - 11904: 0xE256, + 27088 - 11904: 0xBA69, + 27089 - 11904: 0x92CF, + 27091 - 11904: 0xBA62, + 27092 - 11904: 0xE252, + 27093 - 11904: 0x9CF4, + 27094 - 11904: 0x8DC4, + 27097 - 11904: 0xE25C, + 27105 - 11904: 0xFD41, + 27106 - 11904: 0xE5D5, + 27108 - 11904: 0xE5D1, + 27109 - 11904: 0xE5CD, + 27110 - 11904: 0xE5E1, + 27111 - 11904: 0xE5DE, + 27112 - 11904: 0xBCCD, + 27113 - 11904: 0x9B4C, + 27115 - 11904: 0xE5E5, + 27116 - 11904: 0xE5D4, + 27117 - 11904: 0xBCD8, + 27118 - 11904: 0xE5DB, + 27121 - 11904: 0xE5D0, + 27122 - 11904: 0xE5DA, + 27123 - 11904: 0xBCD5, + 27124 - 11904: 0xE5EE, + 27126 - 11904: 0xE5EB, + 27127 - 11904: 0xE5DD, + 27128 - 11904: 0xE5CE, + 27129 - 11904: 0xFD57, + 27130 - 11904: 0xFCEF, + 27131 - 11904: 0xE5E2, + 27132 - 11904: 0xE5E4, + 27133 - 11904: 0xBCD1, + 27134 - 11904: 0xE5D8, + 27135 - 11904: 0xE5D3, + 27136 - 11904: 0xE5CA, + 27137 - 11904: 0xBCCE, + 27138 - 11904: 0xBCD6, + 27139 - 11904: 0x9CDE, + 27140 - 11904: 0xE5E7, + 27141 - 11904: 0xBCD7, + 27142 - 11904: 0xE5CB, + 27143 - 11904: 0xE5ED, + 27144 - 11904: 0xE5E0, + 27145 - 11904: 0xE5E6, + 27146 - 11904: 0xBCD4, + 27147 - 11904: 0xFD42, + 27148 - 11904: 0x986C, + 27149 - 11904: 0xE5E3, + 27151 - 11904: 0xE5EA, + 27153 - 11904: 0xBCD9, + 27155 - 11904: 0xBCD3, + 27156 - 11904: 0xE5DC, + 27157 - 11904: 0xE5CF, + 27158 - 11904: 0xE5EF, + 27159 - 11904: 0xE5CC, + 27160 - 11904: 0xE5E8, + 27161 - 11904: 0xBCD0, + 27162 - 11904: 0x97F9, + 27163 - 11904: 0xE5D6, + 27164 - 11904: 0x9558, + 27165 - 11904: 0xE5D7, + 27166 - 11904: 0xBCCF, + 27167 - 11904: 0xBCCC, + 27168 - 11904: 0xE5D2, + 27169 - 11904: 0xBCD2, + 27171 - 11904: 0xBCCB, + 27173 - 11904: 0xE5E9, + 27174 - 11904: 0xE5EC, + 27175 - 11904: 0xE5D9, + 27176 - 11904: 0xE9CA, + 27177 - 11904: 0x87B6, + 27179 - 11904: 0x985E, + 27180 - 11904: 0xFE7B, + 27181 - 11904: 0x94CD, + 27186 - 11904: 0xE9C2, + 27187 - 11904: 0x93EE, + 27188 - 11904: 0xE9BE, + 27189 - 11904: 0xBEF6, + 27192 - 11904: 0xBEEB, + 27193 - 11904: 0xBEF0, + 27194 - 11904: 0xBEEC, + 27195 - 11904: 0xE9CC, + 27196 - 11904: 0xE9D7, + 27197 - 11904: 0xBEEA, + 27198 - 11904: 0xE9C4, + 27199 - 11904: 0xE9CD, + 27200 - 11904: 0xE5DF, + 27201 - 11904: 0xE9CE, + 27203 - 11904: 0x8CA3, + 27204 - 11904: 0xBEF1, + 27205 - 11904: 0xFD5A, + 27206 - 11904: 0xE9DD, + 27207 - 11904: 0xBEF5, + 27208 - 11904: 0xBEF8, + 27209 - 11904: 0xE9C0, + 27211 - 11904: 0xBEF4, + 27212 - 11904: 0x93F5, + 27213 - 11904: 0xE9DB, + 27214 - 11904: 0xE9DC, + 27215 - 11904: 0xE9D2, + 27216 - 11904: 0xE9D1, + 27217 - 11904: 0xE9C9, + 27218 - 11904: 0x93EF, + 27219 - 11904: 0x8EEA, + 27220 - 11904: 0xE9D3, + 27221 - 11904: 0xE9DA, + 27222 - 11904: 0xE9D9, + 27223 - 11904: 0x8F5B, + 27224 - 11904: 0xBEEF, + 27225 - 11904: 0xBEED, + 27226 - 11904: 0xE9CB, + 27227 - 11904: 0xE9C8, + 27229 - 11904: 0xE9C5, + 27230 - 11904: 0xE9D8, + 27231 - 11904: 0xBEF7, + 27232 - 11904: 0xE9D6, + 27233 - 11904: 0xBEF3, + 27234 - 11904: 0xBEF2, + 27235 - 11904: 0x8C5E, + 27236 - 11904: 0xE9D0, + 27237 - 11904: 0x8DC6, + 27238 - 11904: 0xE9BF, + 27239 - 11904: 0xE9C1, + 27240 - 11904: 0xE9C3, + 27241 - 11904: 0xE9D5, + 27242 - 11904: 0xE9CF, + 27243 - 11904: 0xBEEE, + 27245 - 11904: 0xE9C6, + 27247 - 11904: 0xE9D4, + 27249 - 11904: 0x8DC8, + 27252 - 11904: 0x8DC7, + 27254 - 11904: 0xE9C7, + 27258 - 11904: 0x93F7, + 27262 - 11904: 0xC0CF, + 27263 - 11904: 0xED45, + 27264 - 11904: 0xC0C8, + 27265 - 11904: 0xECF5, + 27266 - 11904: 0x8DC9, + 27267 - 11904: 0xED41, + 27268 - 11904: 0xC0CA, + 27269 - 11904: 0xED48, + 27271 - 11904: 0xECFC, + 27273 - 11904: 0xECF7, + 27274 - 11904: 0xFBF2, + 27276 - 11904: 0xED49, + 27277 - 11904: 0xECF3, + 27278 - 11904: 0xECFE, + 27279 - 11904: 0x9670, + 27280 - 11904: 0xC0D1, + 27281 - 11904: 0xED44, + 27282 - 11904: 0xED4A, + 27283 - 11904: 0xECFD, + 27284 - 11904: 0xC0C9, + 27285 - 11904: 0xED40, + 27286 - 11904: 0xECF4, + 27287 - 11904: 0xC0D0, + 27289 - 11904: 0x8DCB, + 27290 - 11904: 0xED47, + 27291 - 11904: 0xECF9, + 27292 - 11904: 0xC0CC, + 27293 - 11904: 0xFD5C, + 27294 - 11904: 0xECFB, + 27295 - 11904: 0xECF8, + 27296 - 11904: 0xC0D2, + 27297 - 11904: 0xECFA, + 27298 - 11904: 0xC0CB, + 27299 - 11904: 0xC0CE, + 27300 - 11904: 0xED43, + 27301 - 11904: 0xECF6, + 27302 - 11904: 0xED46, + 27303 - 11904: 0x8F65, + 27304 - 11904: 0xED42, + 27307 - 11904: 0x8DCD, + 27308 - 11904: 0xC263, + 27309 - 11904: 0xEFE7, + 27310 - 11904: 0xC268, + 27311 - 11904: 0xC269, + 27313 - 11904: 0x9DA8, + 27314 - 11904: 0x94F9, + 27315 - 11904: 0xC262, + 27316 - 11904: 0xEFE6, + 27317 - 11904: 0x8DCE, + 27318 - 11904: 0xEFE3, + 27319 - 11904: 0xEFE4, + 27320 - 11904: 0xC266, + 27321 - 11904: 0xEFDE, + 27322 - 11904: 0xEFE2, + 27323 - 11904: 0xC265, + 27325 - 11904: 0xEFDF, + 27326 - 11904: 0x93EA, + 27330 - 11904: 0xC267, + 27331 - 11904: 0xC264, + 27333 - 11904: 0xEFDD, + 27334 - 11904: 0xEFE1, + 27335 - 11904: 0xEFE5, + 27336 - 11904: 0xFD5F, + 27337 - 11904: 0x93F0, + 27338 - 11904: 0x9FB6, + 27339 - 11904: 0xF251, + 27340 - 11904: 0xF24E, + 27341 - 11904: 0xF257, + 27343 - 11904: 0xF256, + 27344 - 11904: 0xF254, + 27345 - 11904: 0xF24F, + 27347 - 11904: 0xC372, + 27348 - 11904: 0x8DCF, + 27352 - 11904: 0x9763, + 27353 - 11904: 0xF250, + 27354 - 11904: 0xC371, + 27355 - 11904: 0xC0CD, + 27356 - 11904: 0xF253, + 27357 - 11904: 0xC370, + 27358 - 11904: 0xF258, + 27359 - 11904: 0xF252, + 27360 - 11904: 0xF24D, + 27361 - 11904: 0xEFE0, + 27365 - 11904: 0xC36F, + 27367 - 11904: 0xF24C, + 27368 - 11904: 0xF456, + 27370 - 11904: 0xF455, + 27371 - 11904: 0xF255, + 27372 - 11904: 0xC468, + 27374 - 11904: 0xF459, + 27375 - 11904: 0xF45A, + 27376 - 11904: 0xF454, + 27377 - 11904: 0xF458, + 27379 - 11904: 0xF453, + 27382 - 11904: 0x8DD0, + 27384 - 11904: 0xF5D1, + 27385 - 11904: 0xF457, + 27386 - 11904: 0xC4E7, + 27387 - 11904: 0xC4E5, + 27388 - 11904: 0xF5CF, + 27392 - 11904: 0xF5D2, + 27394 - 11904: 0xF5CE, + 27395 - 11904: 0xF5D0, + 27396 - 11904: 0xC4E6, + 27397 - 11904: 0x93F1, + 27400 - 11904: 0xF6E5, + 27401 - 11904: 0xF6E6, + 27402 - 11904: 0xC576, + 27403 - 11904: 0xF6E4, + 27407 - 11904: 0xF7E2, + 27408 - 11904: 0xC5CF, + 27409 - 11904: 0xF7E0, + 27410 - 11904: 0xF7E1, + 27411 - 11904: 0xF8AC, + 27414 - 11904: 0xC656, + 27415 - 11904: 0xF8F3, + 27416 - 11904: 0xF8F1, + 27417 - 11904: 0xF8F2, + 27418 - 11904: 0xF8F4, + 27421 - 11904: 0xFD62, + 27422 - 11904: 0xF9BB, + 27424 - 11904: 0xA4ED, + 27425 - 11904: 0xA6B8, + 27427 - 11904: 0xAA59, + 27429 - 11904: 0xCCE9, + 27432 - 11904: 0xCF64, + 27436 - 11904: 0xD1F5, + 27437 - 11904: 0xD1F7, + 27439 - 11904: 0xD1F6, + 27441 - 11904: 0xD1F8, + 27442 - 11904: 0xB1FD, + 27443 - 11904: 0xD5D7, + 27444 - 11904: 0xD1F9, + 27445 - 11904: 0xFD65, + 27446 - 11904: 0xD5D6, + 27447 - 11904: 0xD5D8, + 27448 - 11904: 0xD5D9, + 27449 - 11904: 0xD9DA, + 27450 - 11904: 0xB4DB, + 27451 - 11904: 0xD9DB, + 27452 - 11904: 0xD9DD, + 27453 - 11904: 0xB4DC, + 27454 - 11904: 0xB4DA, + 27455 - 11904: 0xD9DC, + 27457 - 11904: 0xDDFA, + 27458 - 11904: 0xDDF8, + 27459 - 11904: 0xDDF7, + 27461 - 11904: 0xDDF6, + 27462 - 11904: 0xDDF5, + 27463 - 11904: 0xB7B2, + 27464 - 11904: 0xDDF9, + 27465 - 11904: 0xBA70, + 27466 - 11904: 0xE263, + 27467 - 11904: 0xE265, + 27468 - 11904: 0xBA71, + 27469 - 11904: 0xE264, + 27470 - 11904: 0xBCDB, + 27472 - 11904: 0xBCDA, + 27473 - 11904: 0xE5F0, + 27474 - 11904: 0x9FDB, + 27476 - 11904: 0xE9DF, + 27477 - 11904: 0xE9DE, + 27478 - 11904: 0xE9E0, + 27479 - 11904: 0x93F8, + 27481 - 11904: 0xBEF9, + 27483 - 11904: 0xED4B, + 27484 - 11904: 0xC0D3, + 27486 - 11904: 0xEFE8, + 27487 - 11904: 0xC26A, + 27488 - 11904: 0xF259, + 27489 - 11904: 0xC577, + 27490 - 11904: 0xA4EE, + 27491 - 11904: 0xA5BF, + 27492 - 11904: 0xA6B9, + 27493 - 11904: 0xA842, + 27494 - 11904: 0xAA5A, + 27495 - 11904: 0xAA5B, + 27498 - 11904: 0xAC6E, + 27501 - 11904: 0xD1FA, + 27503 - 11904: 0x8BF7, + 27506 - 11904: 0xB7B3, + 27508 - 11904: 0xFD66, + 27510 - 11904: 0xE6D1, + 27511 - 11904: 0xBEFA, + 27512 - 11904: 0xC26B, + 27513 - 11904: 0xA4EF, + 27514 - 11904: 0x8BCF, + 27515 - 11904: 0xA6BA, + 27518 - 11904: 0xCCEB, + 27519 - 11904: 0xAA5C, + 27520 - 11904: 0xCCEA, + 27521 - 11904: 0x8DD1, + 27522 - 11904: 0xCF65, + 27523 - 11904: 0xAC6F, + 27524 - 11904: 0xCF66, + 27526 - 11904: 0xAC70, + 27528 - 11904: 0xD1FC, + 27529 - 11904: 0xAEEE, + 27530 - 11904: 0xAEED, + 27532 - 11904: 0xD5DE, + 27533 - 11904: 0xD5DC, + 27534 - 11904: 0xD5DD, + 27535 - 11904: 0xD5DB, + 27537 - 11904: 0xD5DA, + 27540 - 11904: 0xD9DE, + 27541 - 11904: 0xD9E1, + 27542 - 11904: 0xB4DE, + 27543 - 11904: 0xD9DF, + 27544 - 11904: 0xB4DD, + 27545 - 11904: 0xD9E0, + 27547 - 11904: 0xDDFB, + 27550 - 11904: 0xE266, + 27551 - 11904: 0xE267, + 27552 - 11904: 0xE268, + 27554 - 11904: 0xE5F3, + 27555 - 11904: 0xE5F2, + 27556 - 11904: 0xBCDC, + 27557 - 11904: 0xE5F1, + 27558 - 11904: 0xE5F4, + 27559 - 11904: 0xE9E1, + 27562 - 11904: 0xE9E2, + 27563 - 11904: 0xE9E3, + 27565 - 11904: 0xED4C, + 27566 - 11904: 0xC0D4, + 27567 - 11904: 0xC26C, + 27568 - 11904: 0xF25A, + 27570 - 11904: 0xC4E8, + 27571 - 11904: 0xC95F, + 27573 - 11904: 0xAC71, + 27574 - 11904: 0xCF67, + 27575 - 11904: 0xAEEF, + 27578 - 11904: 0xB1FE, + 27580 - 11904: 0xB4DF, + 27581 - 11904: 0xD9E2, + 27583 - 11904: 0xB7B5, + 27584 - 11904: 0xB7B4, + 27585 - 11904: 0x8DD2, + 27587 - 11904: 0xE269, + 27588 - 11904: 0xE26A, + 27589 - 11904: 0xBCDD, + 27590 - 11904: 0xBCDE, + 27591 - 11904: 0xE9E5, + 27592 - 11904: 0xE9E4, + 27593 - 11904: 0xEFE9, + 27594 - 11904: 0xF7E3, + 27595 - 11904: 0xA4F0, + 27596 - 11904: 0xC960, + 27597 - 11904: 0xA5C0, + 27599 - 11904: 0xA843, + 27600 - 11904: 0xCB48, + 27602 - 11904: 0xAC72, + 27603 - 11904: 0xB7B6, + 27604 - 11904: 0xA4F1, + 27606 - 11904: 0xCF68, + 27607 - 11904: 0xAC73, + 27608 - 11904: 0xCF69, + 27610 - 11904: 0xC0D5, + 27611 - 11904: 0xA4F2, + 27612 - 11904: 0xFD71, + 27614 - 11904: 0xCCEC, + 27616 - 11904: 0xCF6A, + 27617 - 11904: 0xFD6F, + 27618 - 11904: 0xD242, + 27619 - 11904: 0xD241, + 27620 - 11904: 0xD1FE, + 27622 - 11904: 0xD1FD, + 27623 - 11904: 0xD243, + 27624 - 11904: 0xD240, + 27626 - 11904: 0x8DD3, + 27627 - 11904: 0xB240, + 27628 - 11904: 0xB241, + 27631 - 11904: 0xB4E0, + 27632 - 11904: 0xD9E3, + 27634 - 11904: 0xD9E4, + 27635 - 11904: 0xD9E5, + 27639 - 11904: 0xDE41, + 27640 - 11904: 0xDE42, + 27641 - 11904: 0xDE40, + 27642 - 11904: 0x9FE7, + 27643 - 11904: 0xDDFD, + 27644 - 11904: 0xDDFE, + 27645 - 11904: 0xB7B7, + 27646 - 11904: 0xE26B, + 27647 - 11904: 0xE5F7, + 27648 - 11904: 0xE5F6, + 27649 - 11904: 0xE5F5, + 27650 - 11904: 0xE5F8, + 27651 - 11904: 0xE9E7, + 27652 - 11904: 0xE9E6, + 27653 - 11904: 0xBEFB, + 27654 - 11904: 0xE9E8, + 27656 - 11904: 0xC0D6, + 27657 - 11904: 0xED4D, + 27659 - 11904: 0xEFEA, + 27660 - 11904: 0xF25B, + 27661 - 11904: 0xF6E7, + 27663 - 11904: 0xA4F3, + 27664 - 11904: 0xA5C2, + 27665 - 11904: 0xA5C1, + 27667 - 11904: 0xAA5D, + 27668 - 11904: 0xC961, + 27669 - 11904: 0xC97E, + 27670 - 11904: 0xA6BB, + 27672 - 11904: 0xC9F7, + 27673 - 11904: 0xCB49, + 27674 - 11904: 0xCB4A, + 27675 - 11904: 0xAA5E, + 27676 - 11904: 0x90BD, + 27677 - 11904: 0xCCED, + 27679 - 11904: 0xAC74, + 27680 - 11904: 0xCF6B, + 27681 - 11904: 0xCF6C, + 27683 - 11904: 0xAEF0, + 27684 - 11904: 0xAEF4, + 27685 - 11904: 0xD244, + 27686 - 11904: 0xAEF3, + 27687 - 11904: 0xAEF1, + 27688 - 11904: 0xAEF2, + 27690 - 11904: 0xD5DF, + 27691 - 11904: 0xB242, + 27692 - 11904: 0xB4E3, + 27694 - 11904: 0xB4E1, + 27695 - 11904: 0xB4E2, + 27696 - 11904: 0xD9E6, + 27697 - 11904: 0x9FD0, + 27699 - 11904: 0xBA72, + 27700 - 11904: 0xA4F4, + 27701 - 11904: 0x8BD0, + 27702 - 11904: 0xC9A1, + 27703 - 11904: 0xFD72, + 27704 - 11904: 0xA5C3, + 27705 - 11904: 0x9CAE, + 27706 - 11904: 0x8BD1, + 27707 - 11904: 0xC9A4, + 27709 - 11904: 0x8ADB, + 27710 - 11904: 0xA5C6, + 27711 - 11904: 0xC9A3, + 27712 - 11904: 0xA5C5, + 27713 - 11904: 0xA5C4, + 27714 - 11904: 0xA844, + 27715 - 11904: 0xC9A2, + 27718 - 11904: 0xC9F8, + 27721 - 11904: 0xFAE4, + 27722 - 11904: 0xC9FC, + 27723 - 11904: 0xC9FE, + 27724 - 11904: 0xCA40, + 27725 - 11904: 0xA6C5, + 27726 - 11904: 0xA6C6, + 27727 - 11904: 0xC9FB, + 27728 - 11904: 0xA6C1, + 27730 - 11904: 0xC9F9, + 27732 - 11904: 0xC9FD, + 27733 - 11904: 0xA6C2, + 27735 - 11904: 0xA6BD, + 27736 - 11904: 0x95CE, + 27737 - 11904: 0xA6BE, + 27738 - 11904: 0xFD76, + 27739 - 11904: 0xA6C4, + 27740 - 11904: 0xC9FA, + 27741 - 11904: 0xA6BC, + 27742 - 11904: 0xA845, + 27743 - 11904: 0xA6BF, + 27744 - 11904: 0xA6C0, + 27745 - 11904: 0xA6C3, + 27749 - 11904: 0xCB5B, + 27750 - 11904: 0xCB59, + 27751 - 11904: 0xCB4C, + 27752 - 11904: 0xA851, + 27753 - 11904: 0xCB53, + 27754 - 11904: 0xA84C, + 27755 - 11904: 0xCB4D, + 27757 - 11904: 0xCB55, + 27758 - 11904: 0xFB62, + 27759 - 11904: 0xCB52, + 27760 - 11904: 0xA84F, + 27761 - 11904: 0xCB51, + 27762 - 11904: 0xA856, + 27763 - 11904: 0xCB5A, + 27764 - 11904: 0xA858, + 27765 - 11904: 0x8DD4, + 27766 - 11904: 0xA85A, + 27768 - 11904: 0xCB4B, + 27769 - 11904: 0xFD78, + 27770 - 11904: 0xA84D, + 27771 - 11904: 0xCB5C, + 27773 - 11904: 0xA854, + 27774 - 11904: 0xA857, + 27775 - 11904: 0x8EE3, + 27776 - 11904: 0xCD45, + 27777 - 11904: 0xA847, + 27778 - 11904: 0xA85E, + 27779 - 11904: 0xA855, + 27780 - 11904: 0xCB4E, + 27781 - 11904: 0xA84A, + 27782 - 11904: 0xA859, + 27783 - 11904: 0xCB56, + 27784 - 11904: 0xA848, + 27785 - 11904: 0xA849, + 27786 - 11904: 0xCD43, + 27787 - 11904: 0xCB4F, + 27788 - 11904: 0xA850, + 27789 - 11904: 0xA85B, + 27790 - 11904: 0xCB5D, + 27791 - 11904: 0xCB50, + 27792 - 11904: 0xA84E, + 27794 - 11904: 0xA853, + 27795 - 11904: 0xCCEE, + 27796 - 11904: 0xA85C, + 27797 - 11904: 0xCB57, + 27798 - 11904: 0xA852, + 27800 - 11904: 0xA85D, + 27801 - 11904: 0xA846, + 27802 - 11904: 0xCB54, + 27803 - 11904: 0xA84B, + 27804 - 11904: 0xFDB7, + 27805 - 11904: 0xCD44, + 27807 - 11904: 0x9076, + 27810 - 11904: 0x98C6, + 27818 - 11904: 0x8DD5, + 27819 - 11904: 0xAA6A, + 27820 - 11904: 0xAA7A, + 27821 - 11904: 0xCCF5, + 27822 - 11904: 0xAA71, + 27823 - 11904: 0x97D1, + 27824 - 11904: 0xCD4B, + 27825 - 11904: 0xAA62, + 27826 - 11904: 0x9EB6, + 27827 - 11904: 0xAA65, + 27828 - 11904: 0xCD42, + 27830 - 11904: 0xCCF3, + 27831 - 11904: 0xCCF7, + 27832 - 11904: 0xAA6D, + 27833 - 11904: 0xAA6F, + 27834 - 11904: 0xCCFA, + 27835 - 11904: 0xAA76, + 27836 - 11904: 0xAA68, + 27837 - 11904: 0xAA66, + 27838 - 11904: 0xAA67, + 27839 - 11904: 0xAA75, + 27840 - 11904: 0xCD47, + 27841 - 11904: 0xAA70, + 27842 - 11904: 0xCCF9, + 27843 - 11904: 0xCCFB, + 27844 - 11904: 0xAA6E, + 27845 - 11904: 0xAA73, + 27846 - 11904: 0xCCFC, + 27847 - 11904: 0xCD4A, + 27849 - 11904: 0xAC75, + 27850 - 11904: 0xAA79, + 27851 - 11904: 0xFAC7, + 27852 - 11904: 0xAA63, + 27853 - 11904: 0xCD49, + 27854 - 11904: 0xA042, + 27855 - 11904: 0xCD4D, + 27856 - 11904: 0xCCF8, + 27857 - 11904: 0xCD4F, + 27858 - 11904: 0xCD40, + 27859 - 11904: 0xAA6C, + 27860 - 11904: 0xCCF4, + 27861 - 11904: 0xAA6B, + 27862 - 11904: 0xAA7D, + 27863 - 11904: 0xAA72, + 27865 - 11904: 0xCCF2, + 27866 - 11904: 0xCF75, + 27867 - 11904: 0xAA78, + 27868 - 11904: 0xAA7C, + 27869 - 11904: 0xCD41, + 27870 - 11904: 0xCD46, + 27871 - 11904: 0x9873, + 27872 - 11904: 0xAA7E, + 27873 - 11904: 0xAA77, + 27874 - 11904: 0xAA69, + 27875 - 11904: 0xAA5F, + 27877 - 11904: 0xAA64, + 27879 - 11904: 0xCCF6, + 27880 - 11904: 0xAA60, + 27881 - 11904: 0xCD4E, + 27882 - 11904: 0x9FFC, + 27883 - 11904: 0xCCF0, + 27884 - 11904: 0xCCEF, + 27885 - 11904: 0xCCFD, + 27886 - 11904: 0xCCF1, + 27887 - 11904: 0xAA7B, + 27888 - 11904: 0xAEF5, + 27889 - 11904: 0xAA74, + 27890 - 11904: 0xCCFE, + 27891 - 11904: 0xAA61, + 27893 - 11904: 0xACA6, + 27897 - 11904: 0xCD4C, + 27903 - 11904: 0x8CA5, + 27904 - 11904: 0xCF7C, + 27905 - 11904: 0xCFA1, + 27906 - 11904: 0x8DD7, + 27907 - 11904: 0xCFA4, + 27908 - 11904: 0xCF77, + 27909 - 11904: 0x92FB, + 27910 - 11904: 0x8DD8, + 27911 - 11904: 0xCFA7, + 27912 - 11904: 0xCFAA, + 27913 - 11904: 0xCFAC, + 27914 - 11904: 0xCF74, + 27915 - 11904: 0xAC76, + 27916 - 11904: 0xAC7B, + 27917 - 11904: 0xD249, + 27918 - 11904: 0xACAD, + 27919 - 11904: 0xCFA5, + 27920 - 11904: 0xCFAD, + 27921 - 11904: 0xCF7B, + 27922 - 11904: 0xCF73, + 27926 - 11904: 0xD264, + 27927 - 11904: 0xAC7E, + 27928 - 11904: 0xCFA2, + 27929 - 11904: 0xCF78, + 27930 - 11904: 0xCF7A, + 27931 - 11904: 0xACA5, + 27933 - 11904: 0xCF7D, + 27934 - 11904: 0xAC7D, + 27935 - 11904: 0xCF70, + 27936 - 11904: 0xCFA8, + 27938 - 11904: 0xCFAB, + 27940 - 11904: 0x944F, + 27941 - 11904: 0xAC7A, + 27942 - 11904: 0x8DD9, + 27943 - 11904: 0xACA8, + 27944 - 11904: 0xCF6D, + 27945 - 11904: 0xACAA, + 27946 - 11904: 0xAC78, + 27947 - 11904: 0xACAE, + 27948 - 11904: 0xCFA9, + 27949 - 11904: 0xCF6F, + 27950 - 11904: 0xACAB, + 27951 - 11904: 0xD25E, + 27952 - 11904: 0xCD48, + 27953 - 11904: 0xAC7C, + 27954 - 11904: 0xAC77, + 27955 - 11904: 0xCF76, + 27956 - 11904: 0xCF6E, + 27957 - 11904: 0xACAC, + 27958 - 11904: 0xACA4, + 27959 - 11904: 0xCFA3, + 27960 - 11904: 0xACA9, + 27961 - 11904: 0xACA7, + 27962 - 11904: 0xCF79, + 27963 - 11904: 0xACA1, + 27964 - 11904: 0xCF71, + 27965 - 11904: 0xACA2, + 27966 - 11904: 0xACA3, + 27967 - 11904: 0xCF72, + 27968 - 11904: 0xCFA6, + 27969 - 11904: 0xAC79, + 27970 - 11904: 0xCF7E, + 27982 - 11904: 0x896B, + 27991 - 11904: 0x97CE, + 27992 - 11904: 0xD24C, + 27993 - 11904: 0xAEFD, + 27994 - 11904: 0xAF43, + 27995 - 11904: 0xFAF3, + 27996 - 11904: 0xFDAE, + 27998 - 11904: 0xD255, + 27999 - 11904: 0xD25B, + 28000 - 11904: 0xD257, + 28001 - 11904: 0xD24A, + 28002 - 11904: 0xD24D, + 28003 - 11904: 0xD246, + 28004 - 11904: 0xD247, + 28005 - 11904: 0xAF4A, + 28006 - 11904: 0xAEFA, + 28007 - 11904: 0xD256, + 28008 - 11904: 0xD25F, + 28009 - 11904: 0xAF45, + 28010 - 11904: 0xAEF6, + 28012 - 11904: 0xAF40, + 28013 - 11904: 0xD24E, + 28014 - 11904: 0xAF42, + 28015 - 11904: 0xD24F, + 28016 - 11904: 0xD259, + 28017 - 11904: 0xFBAF, + 28018 - 11904: 0x92B7, + 28020 - 11904: 0xAF44, + 28021 - 11904: 0xD268, + 28022 - 11904: 0xD248, + 28023 - 11904: 0xAEFC, + 28024 - 11904: 0xAEFB, + 28025 - 11904: 0xAF48, + 28026 - 11904: 0xD245, + 28027 - 11904: 0xD266, + 28028 - 11904: 0xD25A, + 28029 - 11904: 0xD267, + 28030 - 11904: 0xD261, + 28031 - 11904: 0xD253, + 28032 - 11904: 0xD262, + 28033 - 11904: 0x8DDA, + 28034 - 11904: 0xD25C, + 28035 - 11904: 0xD265, + 28036 - 11904: 0xD263, + 28037 - 11904: 0xAF49, + 28038 - 11904: 0xD254, + 28039 - 11904: 0xAEF9, + 28040 - 11904: 0xAEF8, + 28041 - 11904: 0xAF41, + 28042 - 11904: 0xAF47, + 28043 - 11904: 0xD260, + 28044 - 11904: 0xAF46, + 28045 - 11904: 0xD251, + 28046 - 11904: 0xB243, + 28047 - 11904: 0x9C5A, + 28048 - 11904: 0xD269, + 28049 - 11904: 0xD250, + 28050 - 11904: 0xD24B, + 28051 - 11904: 0xAEFE, + 28052 - 11904: 0xAF4B, + 28053 - 11904: 0xAEF7, + 28054 - 11904: 0xFDAD, + 28055 - 11904: 0xD258, + 28056 - 11904: 0xD25D, + 28068 - 11904: 0x8DDC, + 28069 - 11904: 0x9444, + 28074 - 11904: 0xB265, + 28075 - 11904: 0xD5E1, + 28076 - 11904: 0xD5E5, + 28078 - 11904: 0xB252, + 28079 - 11904: 0xB250, + 28081 - 11904: 0x8DDD, + 28082 - 11904: 0xB247, + 28083 - 11904: 0xD5E3, + 28084 - 11904: 0xD5E2, + 28085 - 11904: 0xB25B, + 28087 - 11904: 0xD5E8, + 28088 - 11904: 0xB255, + 28089 - 11904: 0xA0D6, + 28090 - 11904: 0xD5FA, + 28091 - 11904: 0xD647, + 28092 - 11904: 0xB244, + 28093 - 11904: 0xD5F7, + 28094 - 11904: 0xD5F0, + 28095 - 11904: 0xB267, + 28096 - 11904: 0xD5E0, + 28098 - 11904: 0xD5FC, + 28100 - 11904: 0xB264, + 28101 - 11904: 0xB258, + 28102 - 11904: 0xB263, + 28103 - 11904: 0xB24E, + 28104 - 11904: 0xD5EC, + 28105 - 11904: 0xD5FE, + 28106 - 11904: 0xD5F6, + 28107 - 11904: 0xB24F, + 28108 - 11904: 0xB249, + 28109 - 11904: 0xD645, + 28111 - 11904: 0xD5FD, + 28112 - 11904: 0xD640, + 28113 - 11904: 0xB251, + 28114 - 11904: 0xB259, + 28115 - 11904: 0xD642, + 28116 - 11904: 0xD5EA, + 28117 - 11904: 0xD5FB, + 28118 - 11904: 0xD5EF, + 28119 - 11904: 0xD644, + 28120 - 11904: 0xB25E, + 28121 - 11904: 0xB246, + 28122 - 11904: 0xB25C, + 28123 - 11904: 0xD5F4, + 28124 - 11904: 0xD5F2, + 28125 - 11904: 0xD5F3, + 28126 - 11904: 0xB253, + 28127 - 11904: 0xD5EE, + 28128 - 11904: 0xD5ED, + 28129 - 11904: 0xB248, + 28130 - 11904: 0xD5E7, + 28131 - 11904: 0xD646, + 28132 - 11904: 0xB24A, + 28133 - 11904: 0xD5F1, + 28134 - 11904: 0xB268, + 28136 - 11904: 0xB262, + 28137 - 11904: 0xD5E6, + 28138 - 11904: 0xB25F, + 28139 - 11904: 0xB25D, + 28140 - 11904: 0xB266, + 28141 - 11904: 0xD5F8, + 28142 - 11904: 0xB261, + 28143 - 11904: 0xD252, + 28144 - 11904: 0xD5F9, + 28145 - 11904: 0xB260, + 28146 - 11904: 0xD641, + 28147 - 11904: 0xB245, + 28148 - 11904: 0xD5F5, + 28149 - 11904: 0xB257, + 28150 - 11904: 0xD5E9, + 28151 - 11904: 0xB256, + 28153 - 11904: 0xB254, + 28154 - 11904: 0xB24C, + 28155 - 11904: 0xB24B, + 28156 - 11904: 0xD9E7, + 28157 - 11904: 0xD643, + 28158 - 11904: 0x8C41, + 28160 - 11904: 0xD5EB, + 28162 - 11904: 0x97D5, + 28163 - 11904: 0xD9FC, + 28164 - 11904: 0x944A, + 28165 - 11904: 0xB24D, + 28170 - 11904: 0x944D, + 28175 - 11904: 0x97CB, + 28181 - 11904: 0x8DDE, + 28184 - 11904: 0x8DDF, + 28185 - 11904: 0xB541, + 28186 - 11904: 0xB25A, + 28187 - 11904: 0xB4EE, + 28188 - 11904: 0xD9F6, + 28189 - 11904: 0xFDB8, + 28191 - 11904: 0xD9EA, + 28192 - 11904: 0xB4EB, + 28193 - 11904: 0xB4E7, + 28194 - 11904: 0xDA49, + 28195 - 11904: 0xB4ED, + 28196 - 11904: 0xB4F1, + 28197 - 11904: 0xB4EC, + 28198 - 11904: 0xB4F5, + 28199 - 11904: 0xDA4D, + 28200 - 11904: 0xDA44, + 28201 - 11904: 0x8DE0, + 28202 - 11904: 0xFEF9, + 28203 - 11904: 0xD9F1, + 28204 - 11904: 0xB4FA, + 28205 - 11904: 0xB4F4, + 28206 - 11904: 0xD9FD, + 28207 - 11904: 0xFDBB, + 28208 - 11904: 0xDA4A, + 28209 - 11904: 0xDA43, + 28210 - 11904: 0xB4E8, + 28211 - 11904: 0xD9F7, + 28212 - 11904: 0xB4F7, + 28213 - 11904: 0xDA55, + 28214 - 11904: 0xDA56, + 28216 - 11904: 0xB4E5, + 28217 - 11904: 0xDA48, + 28218 - 11904: 0xB4F9, + 28219 - 11904: 0xD9FB, + 28220 - 11904: 0xD9ED, + 28221 - 11904: 0xD9EE, + 28222 - 11904: 0xB4FD, + 28223 - 11904: 0xD9F2, + 28224 - 11904: 0xD9F9, + 28225 - 11904: 0xD9F3, + 28227 - 11904: 0xB4FB, + 28228 - 11904: 0xB544, + 28229 - 11904: 0xD9EF, + 28230 - 11904: 0xD9E8, + 28231 - 11904: 0xD9E9, + 28233 - 11904: 0xD9EB, + 28234 - 11904: 0xB4EA, + 28235 - 11904: 0xD9F8, + 28237 - 11904: 0xB4F8, + 28238 - 11904: 0xB542, + 28239 - 11904: 0xFDC0, + 28240 - 11904: 0xFCF9, + 28241 - 11904: 0xD9FA, + 28242 - 11904: 0xDA53, + 28243 - 11904: 0xDA4B, + 28244 - 11904: 0xB4E6, + 28245 - 11904: 0xDA51, + 28246 - 11904: 0xB4F2, + 28247 - 11904: 0x8CDD, + 28248 - 11904: 0xB4F0, + 28249 - 11904: 0xFB7E, + 28250 - 11904: 0xDA57, + 28251 - 11904: 0xB4EF, + 28252 - 11904: 0xDA41, + 28253 - 11904: 0xD9F4, + 28254 - 11904: 0xD9FE, + 28255 - 11904: 0xB547, + 28256 - 11904: 0xDA45, + 28257 - 11904: 0xDA42, + 28258 - 11904: 0xD9F0, + 28259 - 11904: 0xB543, + 28260 - 11904: 0xDA4F, + 28261 - 11904: 0xDA4C, + 28262 - 11904: 0xDA54, + 28263 - 11904: 0xB4E9, + 28264 - 11904: 0xDA40, + 28265 - 11904: 0xB546, + 28267 - 11904: 0xDA47, + 28270 - 11904: 0xB4F3, + 28271 - 11904: 0xB4F6, + 28273 - 11904: 0xDA46, + 28274 - 11904: 0xB545, + 28275 - 11904: 0xD9F5, + 28276 - 11904: 0xD5E4, + 28278 - 11904: 0x92B3, + 28279 - 11904: 0xDA50, + 28280 - 11904: 0xDA4E, + 28281 - 11904: 0xDA52, + 28284 - 11904: 0xFDAF, + 28294 - 11904: 0x8DE1, + 28296 - 11904: 0xD9EC, + 28297 - 11904: 0xB540, + 28299 - 11904: 0x95D3, + 28301 - 11904: 0xDE61, + 28302 - 11904: 0xDE60, + 28303 - 11904: 0xDE46, + 28304 - 11904: 0xB7BD, + 28306 - 11904: 0xDE5F, + 28307 - 11904: 0xDE49, + 28308 - 11904: 0xDE4A, + 28310 - 11904: 0xB7C7, + 28311 - 11904: 0xDE68, + 28312 - 11904: 0xB7C2, + 28313 - 11904: 0xDE5E, + 28314 - 11904: 0x89C1, + 28315 - 11904: 0xDE43, + 28316 - 11904: 0xB7C8, + 28317 - 11904: 0xB7BE, + 28318 - 11904: 0xDE52, + 28319 - 11904: 0xDE48, + 28320 - 11904: 0xDE4B, + 28321 - 11904: 0xDE63, + 28322 - 11904: 0xB7B8, + 28323 - 11904: 0xDE6A, + 28324 - 11904: 0xDE62, + 28325 - 11904: 0xB7C1, + 28326 - 11904: 0xDE57, + 28327 - 11904: 0xB7CC, + 28330 - 11904: 0xB7CB, + 28331 - 11904: 0xB7C5, + 28334 - 11904: 0xDE69, + 28335 - 11904: 0xB7B9, + 28336 - 11904: 0xDE55, + 28337 - 11904: 0xDE4C, + 28338 - 11904: 0xDE59, + 28339 - 11904: 0xDE65, + 28340 - 11904: 0xB7CD, + 28341 - 11904: 0xFD68, + 28342 - 11904: 0xB7BB, + 28343 - 11904: 0xDE54, + 28344 - 11904: 0x9CB7, + 28345 - 11904: 0xDE4D, + 28346 - 11904: 0xB7C4, + 28347 - 11904: 0x8DE3, + 28348 - 11904: 0xB7C3, + 28349 - 11904: 0xDE50, + 28350 - 11904: 0xDE5A, + 28351 - 11904: 0xDE64, + 28352 - 11904: 0xDE47, + 28353 - 11904: 0xDE51, + 28354 - 11904: 0xB7BC, + 28355 - 11904: 0xDE5B, + 28356 - 11904: 0xB7C9, + 28357 - 11904: 0xB7C0, + 28358 - 11904: 0xDE4E, + 28359 - 11904: 0xB7BF, + 28360 - 11904: 0xDE45, + 28361 - 11904: 0xDE53, + 28362 - 11904: 0xDE67, + 28363 - 11904: 0xB4FE, + 28364 - 11904: 0xBAB0, + 28365 - 11904: 0xDE56, + 28366 - 11904: 0xE26C, + 28367 - 11904: 0xDE58, + 28368 - 11904: 0xDE66, + 28369 - 11904: 0xB7C6, + 28370 - 11904: 0xDE4F, + 28371 - 11904: 0xB7BA, + 28372 - 11904: 0xB7CA, + 28373 - 11904: 0xBCF0, + 28374 - 11904: 0xDE44, + 28376 - 11904: 0xDE5D, + 28377 - 11904: 0xFAC0, + 28378 - 11904: 0x8DE5, + 28379 - 11904: 0xFA64, + 28380 - 11904: 0xDE5C, + 28381 - 11904: 0x8947, + 28386 - 11904: 0x8DE4, + 28392 - 11904: 0x8DE7, + 28393 - 11904: 0x8DE8, + 28395 - 11904: 0xE2AA, + 28396 - 11904: 0xBAAD, + 28397 - 11904: 0xE27D, + 28398 - 11904: 0xE2A4, + 28399 - 11904: 0xBAA2, + 28401 - 11904: 0xE26E, + 28402 - 11904: 0xBAAF, + 28404 - 11904: 0xBA77, + 28405 - 11904: 0xE26D, + 28406 - 11904: 0xE2B0, + 28407 - 11904: 0xBAB1, + 28408 - 11904: 0xE271, + 28409 - 11904: 0xE2A3, + 28410 - 11904: 0xFDC7, + 28411 - 11904: 0xE273, + 28412 - 11904: 0xE2B3, + 28413 - 11904: 0xE2AF, + 28414 - 11904: 0xBA75, + 28415 - 11904: 0xBAA1, + 28416 - 11904: 0xE653, + 28417 - 11904: 0xBAAE, + 28418 - 11904: 0xBA7D, + 28419 - 11904: 0xE26F, + 28420 - 11904: 0xFDB0, + 28421 - 11904: 0xE2AE, + 28422 - 11904: 0xBAA3, + 28423 - 11904: 0xE2AB, + 28424 - 11904: 0xE2B8, + 28425 - 11904: 0xE275, + 28426 - 11904: 0xE27E, + 28427 - 11904: 0x9445, + 28428 - 11904: 0x97D6, + 28429 - 11904: 0xE2B6, + 28430 - 11904: 0xE2AC, + 28431 - 11904: 0xBA7C, + 28434 - 11904: 0xE27C, + 28435 - 11904: 0xBA76, + 28436 - 11904: 0xBA74, + 28437 - 11904: 0xBAA8, + 28438 - 11904: 0xFCC6, + 28439 - 11904: 0x9844, + 28440 - 11904: 0xE27A, + 28441 - 11904: 0xE277, + 28442 - 11904: 0xE278, + 28444 - 11904: 0xE2B2, + 28446 - 11904: 0xE2B7, + 28447 - 11904: 0xE2B5, + 28448 - 11904: 0xBA7A, + 28449 - 11904: 0xE2B9, + 28450 - 11904: 0xBA7E, + 28451 - 11904: 0xBAA7, + 28452 - 11904: 0x8DE9, + 28453 - 11904: 0xE270, + 28454 - 11904: 0xE5FA, + 28455 - 11904: 0xE279, + 28457 - 11904: 0xBA78, + 28458 - 11904: 0xBAAC, + 28459 - 11904: 0xBAA9, + 28460 - 11904: 0xBA7B, + 28461 - 11904: 0xE2A5, + 28462 - 11904: 0xE274, + 28463 - 11904: 0xBAAA, + 28464 - 11904: 0xE2A7, + 28465 - 11904: 0xBAA4, + 28466 - 11904: 0xBAA6, + 28467 - 11904: 0xBA73, + 28468 - 11904: 0x8DEA, + 28469 - 11904: 0xE2A9, + 28470 - 11904: 0xE2A1, + 28471 - 11904: 0xE272, + 28472 - 11904: 0xBAA5, + 28473 - 11904: 0xE2B1, + 28474 - 11904: 0xE2B4, + 28475 - 11904: 0xE27B, + 28476 - 11904: 0xE2A8, + 28477 - 11904: 0xFE50, + 28478 - 11904: 0xBA79, + 28479 - 11904: 0xBCDF, + 28480 - 11904: 0xE2A6, + 28481 - 11904: 0xE5F9, + 28483 - 11904: 0xE2AD, + 28484 - 11904: 0xFDCC, + 28494 - 11904: 0xE276, + 28495 - 11904: 0xE644, + 28496 - 11904: 0xE64E, + 28497 - 11904: 0xBCE2, + 28498 - 11904: 0xE64D, + 28499 - 11904: 0xE659, + 28500 - 11904: 0xBCE4, + 28501 - 11904: 0xE64B, + 28502 - 11904: 0x9DA7, + 28503 - 11904: 0xE64F, + 28504 - 11904: 0xBCEF, + 28506 - 11904: 0xE646, + 28507 - 11904: 0xBCE7, + 28508 - 11904: 0xFDCD, + 28509 - 11904: 0xE652, + 28510 - 11904: 0xE9F0, + 28511 - 11904: 0xBCF3, + 28512 - 11904: 0xBCF2, + 28513 - 11904: 0xE654, + 28514 - 11904: 0xE643, + 28515 - 11904: 0xE65E, + 28516 - 11904: 0xBCED, + 28518 - 11904: 0xBCE3, + 28519 - 11904: 0xE657, + 28521 - 11904: 0xE65B, + 28522 - 11904: 0xE660, + 28523 - 11904: 0xE655, + 28524 - 11904: 0xE649, + 28525 - 11904: 0xBCE6, + 28526 - 11904: 0xBCE9, + 28527 - 11904: 0xBCF1, + 28528 - 11904: 0xBCEC, + 28530 - 11904: 0xE64C, + 28531 - 11904: 0xE2A2, + 28532 - 11904: 0xFDCF, + 28534 - 11904: 0xE648, + 28535 - 11904: 0xE65F, + 28536 - 11904: 0xBCE8, + 28537 - 11904: 0x95D2, + 28538 - 11904: 0xBCEB, + 28539 - 11904: 0xE661, + 28540 - 11904: 0xBCE0, + 28541 - 11904: 0xE656, + 28542 - 11904: 0xE5FB, + 28543 - 11904: 0xE65C, + 28544 - 11904: 0xC0DF, + 28545 - 11904: 0x8DED, + 28546 - 11904: 0xE64A, + 28548 - 11904: 0xBCE1, + 28549 - 11904: 0xE645, + 28550 - 11904: 0xBCE5, + 28551 - 11904: 0xE5FC, + 28552 - 11904: 0xBAAB, + 28553 - 11904: 0xE641, + 28554 - 11904: 0xFCBA, + 28555 - 11904: 0xE65A, + 28556 - 11904: 0xE642, + 28557 - 11904: 0xE640, + 28558 - 11904: 0xBCEA, + 28560 - 11904: 0xE658, + 28562 - 11904: 0xE5FE, + 28563 - 11904: 0xE651, + 28564 - 11904: 0xE650, + 28565 - 11904: 0xE65D, + 28566 - 11904: 0xE647, + 28567 - 11904: 0xBCEE, + 28573 - 11904: 0xFDC5, + 28574 - 11904: 0xE9F3, + 28575 - 11904: 0xFDD2, + 28576 - 11904: 0xBF49, + 28577 - 11904: 0xBEFE, + 28578 - 11904: 0xEA40, + 28579 - 11904: 0xE9EB, + 28580 - 11904: 0xBF41, + 28581 - 11904: 0xE9F7, + 28582 - 11904: 0xBF48, + 28583 - 11904: 0xBF43, + 28584 - 11904: 0xE9F5, + 28585 - 11904: 0xED4F, + 28586 - 11904: 0xE9FB, + 28587 - 11904: 0xEA42, + 28588 - 11904: 0xE9FA, + 28589 - 11904: 0xE9E9, + 28590 - 11904: 0xE9F8, + 28591 - 11904: 0xEA44, + 28592 - 11904: 0xEA46, + 28593 - 11904: 0xBEFD, + 28594 - 11904: 0xEA45, + 28595 - 11904: 0xBF44, + 28596 - 11904: 0xBF4A, + 28597 - 11904: 0x9CDC, + 28598 - 11904: 0xBF47, + 28600 - 11904: 0xE9FE, + 28601 - 11904: 0xBF46, + 28602 - 11904: 0xE9F9, + 28603 - 11904: 0x95CF, + 28604 - 11904: 0xE9ED, + 28605 - 11904: 0xE9F2, + 28606 - 11904: 0x8DEE, + 28607 - 11904: 0xE9FD, + 28608 - 11904: 0xBF45, + 28609 - 11904: 0xBF42, + 28610 - 11904: 0xBEFC, + 28611 - 11904: 0xBF40, + 28612 - 11904: 0xE9F1, + 28614 - 11904: 0xE5FD, + 28615 - 11904: 0xE9EC, + 28616 - 11904: 0xE9EF, + 28617 - 11904: 0xEA41, + 28618 - 11904: 0xE9F4, + 28619 - 11904: 0xE9EA, + 28620 - 11904: 0xED4E, + 28621 - 11904: 0xEA43, + 28622 - 11904: 0xE9EE, + 28623 - 11904: 0xE9FC, + 28627 - 11904: 0xFDD4, + 28628 - 11904: 0xED51, + 28629 - 11904: 0xC0E3, + 28632 - 11904: 0xC0D7, + 28633 - 11904: 0x96EC, + 28634 - 11904: 0x96EB, + 28635 - 11904: 0xC0DB, + 28636 - 11904: 0xED53, + 28637 - 11904: 0xED59, + 28638 - 11904: 0xED57, + 28639 - 11904: 0xC0D9, + 28640 - 11904: 0xC0DA, + 28641 - 11904: 0xC0E1, + 28642 - 11904: 0xED5A, + 28643 - 11904: 0xED52, + 28644 - 11904: 0xC0DC, + 28646 - 11904: 0xED56, + 28647 - 11904: 0xED55, + 28648 - 11904: 0xED5B, + 28649 - 11904: 0xC0E2, + 28651 - 11904: 0xC0DD, + 28652 - 11904: 0xC0E0, + 28653 - 11904: 0xED54, + 28654 - 11904: 0xC0E4, + 28655 - 11904: 0xC0DE, + 28656 - 11904: 0xC0E5, + 28657 - 11904: 0xC0D8, + 28658 - 11904: 0xED58, + 28660 - 11904: 0xED50, + 28662 - 11904: 0x90B6, + 28663 - 11904: 0xEFF7, + 28664 - 11904: 0xFDC3, + 28666 - 11904: 0xC271, + 28667 - 11904: 0xEFF4, + 28668 - 11904: 0xEFF6, + 28670 - 11904: 0xC26F, + 28671 - 11904: 0xEFF2, + 28672 - 11904: 0xEFF3, + 28673 - 11904: 0xEFEE, + 28675 - 11904: 0x98AB, + 28676 - 11904: 0xE9F6, + 28677 - 11904: 0xEFEF, + 28678 - 11904: 0xC270, + 28679 - 11904: 0xEFEB, + 28681 - 11904: 0xC26D, + 28682 - 11904: 0xEFF8, + 28683 - 11904: 0xC26E, + 28684 - 11904: 0xEFEC, + 28685 - 11904: 0xEFED, + 28686 - 11904: 0xEFF1, + 28687 - 11904: 0xC273, + 28689 - 11904: 0xC272, + 28692 - 11904: 0xEFF0, + 28693 - 11904: 0xC378, + 28694 - 11904: 0xF25F, + 28695 - 11904: 0xF265, + 28696 - 11904: 0xC379, + 28697 - 11904: 0xF25C, + 28698 - 11904: 0xC376, + 28699 - 11904: 0xC373, + 28700 - 11904: 0xF267, + 28701 - 11904: 0xC377, + 28702 - 11904: 0x96EE, + 28703 - 11904: 0xC374, + 28704 - 11904: 0xF25E, + 28705 - 11904: 0xF261, + 28706 - 11904: 0xF262, + 28707 - 11904: 0xF263, + 28708 - 11904: 0xF266, + 28710 - 11904: 0xEFF5, + 28711 - 11904: 0xF25D, + 28712 - 11904: 0xC375, + 28713 - 11904: 0xF264, + 28714 - 11904: 0xF268, + 28715 - 11904: 0xF260, + 28716 - 11904: 0x8DF4, + 28719 - 11904: 0xF45D, + 28720 - 11904: 0xC46A, + 28721 - 11904: 0xF460, + 28722 - 11904: 0xC46B, + 28723 - 11904: 0xF468, + 28724 - 11904: 0xF45F, + 28725 - 11904: 0xF45C, + 28727 - 11904: 0xF45E, + 28728 - 11904: 0xF462, + 28729 - 11904: 0xF465, + 28730 - 11904: 0xF464, + 28731 - 11904: 0xF467, + 28732 - 11904: 0xF45B, + 28734 - 11904: 0xC469, + 28735 - 11904: 0xF463, + 28736 - 11904: 0xF466, + 28737 - 11904: 0xF469, + 28738 - 11904: 0xF461, + 28739 - 11904: 0xF5D3, + 28740 - 11904: 0xF5D4, + 28741 - 11904: 0xF5D8, + 28742 - 11904: 0xF5D9, + 28744 - 11904: 0xF5D6, + 28745 - 11904: 0xF5D7, + 28746 - 11904: 0xF5D5, + 28747 - 11904: 0xFDE0, + 28748 - 11904: 0xC4E9, + 28749 - 11904: 0x8C67, + 28752 - 11904: 0x8DF6, + 28753 - 11904: 0xC578, + 28754 - 11904: 0xF6EB, + 28756 - 11904: 0x8DF7, + 28757 - 11904: 0xF6E8, + 28758 - 11904: 0xF6E9, + 28759 - 11904: 0xF6EA, + 28760 - 11904: 0xC579, + 28762 - 11904: 0xF7E5, + 28763 - 11904: 0xF7E4, + 28764 - 11904: 0x8FFA, + 28765 - 11904: 0xF8AF, + 28766 - 11904: 0xC5F4, + 28767 - 11904: 0xF8AD, + 28768 - 11904: 0xF8B0, + 28769 - 11904: 0xF8AE, + 28770 - 11904: 0xF8F5, + 28771 - 11904: 0xC657, + 28772 - 11904: 0xC665, + 28773 - 11904: 0xF9A3, + 28774 - 11904: 0xF96C, + 28775 - 11904: 0x97D0, + 28776 - 11904: 0xF9A2, + 28777 - 11904: 0xF9D0, + 28778 - 11904: 0xF9D1, + 28779 - 11904: 0xA4F5, + 28780 - 11904: 0x8BD2, + 28782 - 11904: 0x87DE, + 28783 - 11904: 0x8DF8, + 28784 - 11904: 0xA6C7, + 28785 - 11904: 0xCA41, + 28788 - 11904: 0xCB5E, + 28789 - 11904: 0x90D9, + 28790 - 11904: 0xA85F, + 28791 - 11904: 0x8C47, + 28792 - 11904: 0xA862, + 28793 - 11904: 0xFAF0, + 28794 - 11904: 0xCB5F, + 28796 - 11904: 0xA860, + 28797 - 11904: 0xA861, + 28798 - 11904: 0xFDE1, + 28799 - 11904: 0x8DF9, + 28801 - 11904: 0xFDE3, + 28802 - 11904: 0xCD58, + 28803 - 11904: 0xCD5A, + 28804 - 11904: 0xCD55, + 28805 - 11904: 0xCD52, + 28806 - 11904: 0xCD54, + 28809 - 11904: 0x8DFA, + 28810 - 11904: 0xAAA4, + 28811 - 11904: 0xFB63, + 28814 - 11904: 0xAAA2, + 28815 - 11904: 0x90A6, + 28817 - 11904: 0xCD56, + 28818 - 11904: 0xAAA3, + 28819 - 11904: 0xCD53, + 28820 - 11904: 0xCD50, + 28821 - 11904: 0xAAA1, + 28822 - 11904: 0xCD57, + 28824 - 11904: 0xCD51, + 28825 - 11904: 0xAAA5, + 28826 - 11904: 0xCD59, + 28831 - 11904: 0xCFAF, + 28832 - 11904: 0x9970, + 28833 - 11904: 0xCFB3, + 28835 - 11904: 0x91EB, + 28836 - 11904: 0xACB7, + 28837 - 11904: 0x9770, + 28838 - 11904: 0x986F, + 28839 - 11904: 0xFDE2, + 28841 - 11904: 0xCFB6, + 28843 - 11904: 0xACAF, + 28844 - 11904: 0xACB2, + 28845 - 11904: 0xACB4, + 28846 - 11904: 0xACB6, + 28847 - 11904: 0xACB3, + 28848 - 11904: 0xCFB2, + 28849 - 11904: 0xCFB1, + 28851 - 11904: 0xACB1, + 28852 - 11904: 0xCFB4, + 28853 - 11904: 0xCFB5, + 28855 - 11904: 0xCFAE, + 28856 - 11904: 0xACB5, + 28857 - 11904: 0x98F2, + 28858 - 11904: 0xACB0, + 28859 - 11904: 0x9AFC, + 28860 - 11904: 0x896C, + 28861 - 11904: 0xFDFD, + 28862 - 11904: 0xCFB0, + 28864 - 11904: 0x995E, + 28868 - 11904: 0x95BD, + 28869 - 11904: 0xD277, + 28870 - 11904: 0xD278, + 28871 - 11904: 0xD279, + 28872 - 11904: 0xAF50, + 28874 - 11904: 0xAF4C, + 28875 - 11904: 0xD26E, + 28876 - 11904: 0xFDE4, + 28877 - 11904: 0xD276, + 28878 - 11904: 0xD27B, + 28879 - 11904: 0xAF51, + 28880 - 11904: 0x91E6, + 28881 - 11904: 0xD26C, + 28882 - 11904: 0xD272, + 28883 - 11904: 0xD26B, + 28884 - 11904: 0xD275, + 28885 - 11904: 0xFDE5, + 28886 - 11904: 0xFDE6, + 28887 - 11904: 0xD271, + 28888 - 11904: 0xAF4D, + 28889 - 11904: 0xAF4F, + 28890 - 11904: 0xD27A, + 28892 - 11904: 0xD26A, + 28893 - 11904: 0xD26D, + 28894 - 11904: 0xD273, + 28895 - 11904: 0xFDE7, + 28896 - 11904: 0xD274, + 28897 - 11904: 0xD27C, + 28898 - 11904: 0xD270, + 28900 - 11904: 0xAF4E, + 28911 - 11904: 0xB26D, + 28912 - 11904: 0xD64E, + 28913 - 11904: 0x9454, + 28915 - 11904: 0xD650, + 28916 - 11904: 0xD64C, + 28917 - 11904: 0x99B8, + 28918 - 11904: 0xD658, + 28919 - 11904: 0xD64A, + 28920 - 11904: 0xD657, + 28921 - 11904: 0xB269, + 28922 - 11904: 0xD648, + 28923 - 11904: 0xDA5B, + 28924 - 11904: 0xD652, + 28925 - 11904: 0xB26C, + 28926 - 11904: 0x97E9, + 28927 - 11904: 0xD653, + 28928 - 11904: 0xD656, + 28930 - 11904: 0xD65A, + 28932 - 11904: 0xD64F, + 28933 - 11904: 0x9346, + 28934 - 11904: 0xD654, + 28937 - 11904: 0xB26A, + 28938 - 11904: 0xB26B, + 28939 - 11904: 0xD659, + 28940 - 11904: 0xD64D, + 28941 - 11904: 0xD649, + 28942 - 11904: 0xD65B, + 28944 - 11904: 0xD651, + 28947 - 11904: 0xD655, + 28951 - 11904: 0xD64B, + 28953 - 11904: 0xB548, + 28954 - 11904: 0xB549, + 28955 - 11904: 0xDA65, + 28956 - 11904: 0xB54F, + 28957 - 11904: 0x9863, + 28958 - 11904: 0xDA59, + 28959 - 11904: 0xDA62, + 28960 - 11904: 0xDA58, + 28961 - 11904: 0xB54C, + 28962 - 11904: 0xDA60, + 28963 - 11904: 0xDA5E, + 28965 - 11904: 0xDA5F, + 28966 - 11904: 0xB54A, + 28968 - 11904: 0xDA63, + 28969 - 11904: 0x95BC, + 28971 - 11904: 0xFDED, + 28972 - 11904: 0xFDF7, + 28974 - 11904: 0xDA5C, + 28975 - 11904: 0xDA5A, + 28976 - 11904: 0xB54B, + 28977 - 11904: 0xDA5D, + 28978 - 11904: 0xDA61, + 28979 - 11904: 0x9870, + 28980 - 11904: 0x96F6, + 28981 - 11904: 0x8EA9, + 28982 - 11904: 0xB54D, + 28986 - 11904: 0xDA64, + 28987 - 11904: 0x9451, + 28990 - 11904: 0x8E43, + 28992 - 11904: 0x8B5A, + 28993 - 11904: 0xDE70, + 28994 - 11904: 0xDE77, + 28995 - 11904: 0xDE79, + 28996 - 11904: 0xDEA1, + 28997 - 11904: 0xFDEE, + 28998 - 11904: 0xB7DA, + 28999 - 11904: 0xDE6B, + 29001 - 11904: 0xB7D2, + 29002 - 11904: 0xFDF0, + 29003 - 11904: 0xDE7A, + 29004 - 11904: 0xB7D7, + 29005 - 11904: 0xDEA2, + 29006 - 11904: 0xB7CE, + 29007 - 11904: 0xFDF4, + 29008 - 11904: 0xDE7D, + 29009 - 11904: 0x9BF5, + 29010 - 11904: 0xDE6D, + 29011 - 11904: 0xDE7E, + 29012 - 11904: 0xDE6C, + 29014 - 11904: 0xB7DC, + 29015 - 11904: 0x8CEE, + 29016 - 11904: 0xDE78, + 29017 - 11904: 0xB7CF, + 29018 - 11904: 0xDEA3, + 29020 - 11904: 0xB7D4, + 29021 - 11904: 0xDE71, + 29022 - 11904: 0xB7D9, + 29023 - 11904: 0xDE7C, + 29024 - 11904: 0xDE6F, + 29025 - 11904: 0xDE76, + 29026 - 11904: 0xDE72, + 29027 - 11904: 0xDE6E, + 29028 - 11904: 0xB7D1, + 29029 - 11904: 0xB7D8, + 29030 - 11904: 0xB7D6, + 29031 - 11904: 0xB7D3, + 29032 - 11904: 0xB7DB, + 29033 - 11904: 0xB7D0, + 29034 - 11904: 0xDE75, + 29035 - 11904: 0x977E, + 29036 - 11904: 0xB7D5, + 29038 - 11904: 0xFDF1, + 29040 - 11904: 0xDE7B, + 29041 - 11904: 0x9BD5, + 29042 - 11904: 0xDE73, + 29043 - 11904: 0x9AC3, + 29045 - 11904: 0x97C8, + 29046 - 11904: 0xA0DB, + 29047 - 11904: 0x91D0, + 29048 - 11904: 0xDE74, + 29050 - 11904: 0x9FE4, + 29051 - 11904: 0xE2C1, + 29052 - 11904: 0x8FDD, + 29053 - 11904: 0xBAB4, + 29054 - 11904: 0x91E9, + 29056 - 11904: 0xE2BD, + 29057 - 11904: 0xE2C3, + 29058 - 11904: 0xE2BF, + 29060 - 11904: 0xBAB6, + 29061 - 11904: 0xE2BE, + 29062 - 11904: 0xE2C2, + 29063 - 11904: 0xE2BA, + 29064 - 11904: 0x98E0, + 29065 - 11904: 0xE2BC, + 29066 - 11904: 0xBAB5, + 29068 - 11904: 0x92CA, + 29070 - 11904: 0x9857, + 29071 - 11904: 0xE2C0, + 29072 - 11904: 0xE2BB, + 29073 - 11904: 0x8C51, + 29074 - 11904: 0xBAB7, + 29076 - 11904: 0xBAB2, + 29078 - 11904: 0xFDEB, + 29079 - 11904: 0xE2C4, + 29080 - 11904: 0x9B49, + 29081 - 11904: 0xBAB3, + 29082 - 11904: 0xE667, + 29083 - 11904: 0xE664, + 29084 - 11904: 0xE670, + 29085 - 11904: 0xE66A, + 29086 - 11904: 0xE66C, + 29087 - 11904: 0xBCF4, + 29088 - 11904: 0xE666, + 29089 - 11904: 0xE66E, + 29090 - 11904: 0x9D76, + 29091 - 11904: 0x9EAF, + 29092 - 11904: 0xE66D, + 29093 - 11904: 0xE66B, + 29095 - 11904: 0xE671, + 29096 - 11904: 0xBCF7, + 29097 - 11904: 0xE668, + 29098 - 11904: 0xE66F, + 29100 - 11904: 0xBCF5, + 29101 - 11904: 0x9CCC, + 29103 - 11904: 0xE663, + 29104 - 11904: 0xE665, + 29105 - 11904: 0xBCF6, + 29106 - 11904: 0xE662, + 29107 - 11904: 0xE672, + 29108 - 11904: 0xFDEA, + 29109 - 11904: 0xE669, + 29111 - 11904: 0x8DF1, + 29112 - 11904: 0xEA4A, + 29113 - 11904: 0xBF51, + 29114 - 11904: 0xFDFB, + 29116 - 11904: 0xEA55, + 29117 - 11904: 0xEA53, + 29118 - 11904: 0xBF4B, + 29119 - 11904: 0xEA49, + 29120 - 11904: 0xEA4C, + 29121 - 11904: 0xEA4D, + 29122 - 11904: 0xEA48, + 29123 - 11904: 0xBF55, + 29124 - 11904: 0xBF56, + 29125 - 11904: 0xEA47, + 29126 - 11904: 0xEA56, + 29127 - 11904: 0xEA51, + 29128 - 11904: 0xBF4F, + 29129 - 11904: 0xBF4C, + 29130 - 11904: 0xEA50, + 29131 - 11904: 0xEA4E, + 29134 - 11904: 0xBF52, + 29135 - 11904: 0xEA52, + 29136 - 11904: 0xBF4D, + 29137 - 11904: 0x8E53, + 29138 - 11904: 0xBF4E, + 29140 - 11904: 0xEA4F, + 29141 - 11904: 0xBF50, + 29142 - 11904: 0xEA4B, + 29144 - 11904: 0xEA54, + 29145 - 11904: 0xBF53, + 29146 - 11904: 0xEA57, + 29147 - 11904: 0xEA58, + 29148 - 11904: 0xBF54, + 29149 - 11904: 0xFACF, + 29151 - 11904: 0xC0E7, + 29152 - 11904: 0xC0EE, + 29153 - 11904: 0xED5C, + 29154 - 11904: 0xED62, + 29156 - 11904: 0xED60, + 29157 - 11904: 0xC0EA, + 29158 - 11904: 0xC0E9, + 29159 - 11904: 0xC0E6, + 29160 - 11904: 0xED5E, + 29163 - 11904: 0x96F9, + 29164 - 11904: 0xC0EC, + 29165 - 11904: 0xC0EB, + 29166 - 11904: 0xC0E8, + 29168 - 11904: 0xED61, + 29169 - 11904: 0xED5D, + 29170 - 11904: 0xED5F, + 29172 - 11904: 0xC0ED, + 29173 - 11904: 0x98BF, + 29174 - 11904: 0x9E49, + 29176 - 11904: 0xC277, + 29177 - 11904: 0xEFFB, + 29179 - 11904: 0xC274, + 29180 - 11904: 0xC275, + 29181 - 11904: 0xEFFD, + 29182 - 11904: 0xC276, + 29183 - 11904: 0xEFFA, + 29184 - 11904: 0x8CA7, + 29185 - 11904: 0xEFF9, + 29186 - 11904: 0xF26C, + 29187 - 11904: 0xEFFC, + 29189 - 11904: 0xF26D, + 29190 - 11904: 0xC37A, + 29191 - 11904: 0xF26B, + 29193 - 11904: 0x9BCA, + 29194 - 11904: 0xF26A, + 29196 - 11904: 0xF269, + 29197 - 11904: 0xC37B, + 29198 - 11904: 0xFDFE, + 29199 - 11904: 0x92DC, + 29200 - 11904: 0xC46C, + 29203 - 11904: 0xF46A, + 29204 - 11904: 0xF46B, + 29205 - 11904: 0xFE41, + 29206 - 11904: 0x91CC, + 29207 - 11904: 0x91E2, + 29209 - 11904: 0xF5DC, + 29210 - 11904: 0xF5DB, + 29211 - 11904: 0xC4EA, + 29213 - 11904: 0xF5DA, + 29214 - 11904: 0xF6EC, + 29215 - 11904: 0xF6ED, + 29218 - 11904: 0xF7E6, + 29219 - 11904: 0xF8B1, + 29220 - 11904: 0xFE44, + 29221 - 11904: 0x875F, + 29222 - 11904: 0xF8F6, + 29223 - 11904: 0xF9BC, + 29224 - 11904: 0xC679, + 29225 - 11904: 0xF9C6, + 29226 - 11904: 0xA4F6, + 29227 - 11904: 0x8BD3, + 29228 - 11904: 0xAAA6, + 29229 - 11904: 0xAAA7, + 29230 - 11904: 0xFE47, + 29232 - 11904: 0xACB8, + 29237 - 11904: 0xC0EF, + 29238 - 11904: 0xA4F7, + 29240 - 11904: 0xAAA8, + 29241 - 11904: 0xAF52, + 29242 - 11904: 0xB7DD, + 29243 - 11904: 0xA4F8, + 29245 - 11904: 0xB26E, + 29246 - 11904: 0xBAB8, + 29247 - 11904: 0xC962, + 29248 - 11904: 0xFE48, + 29249 - 11904: 0xCFB7, + 29250 - 11904: 0xD27D, + 29252 - 11904: 0xE2C5, + 29254 - 11904: 0xC0F0, + 29255 - 11904: 0xA4F9, + 29256 - 11904: 0xAAA9, + 29257 - 11904: 0xCFB8, + 29258 - 11904: 0xCFB9, + 29259 - 11904: 0xDA66, + 29260 - 11904: 0xB550, + 29263 - 11904: 0xDEA4, + 29264 - 11904: 0xA0E4, + 29266 - 11904: 0xB7DE, + 29267 - 11904: 0xE2C6, + 29269 - 11904: 0xFE4B, + 29270 - 11904: 0xBCF8, + 29271 - 11904: 0xFE4C, + 29272 - 11904: 0xC37C, + 29273 - 11904: 0xA4FA, + 29274 - 11904: 0xDA67, + 29275 - 11904: 0xA4FB, + 29276 - 11904: 0x8DBF, + 29277 - 11904: 0xA6C9, + 29278 - 11904: 0xCA42, + 29279 - 11904: 0xA6C8, + 29280 - 11904: 0xA865, + 29281 - 11904: 0xA864, + 29282 - 11904: 0xA863, + 29283 - 11904: 0xCB60, + 29286 - 11904: 0x9E78, + 29287 - 11904: 0xAAAA, + 29289 - 11904: 0xAAAB, + 29290 - 11904: 0xCD5B, + 29292 - 11904: 0xCFBA, + 29294 - 11904: 0xCFBD, + 29295 - 11904: 0xACBA, + 29296 - 11904: 0xCFBB, + 29298 - 11904: 0xACB9, + 29299 - 11904: 0xCFBC, + 29300 - 11904: 0xACBB, + 29302 - 11904: 0xD2A2, + 29303 - 11904: 0xD2A1, + 29304 - 11904: 0xD27E, + 29305 - 11904: 0xAF53, + 29307 - 11904: 0xD65D, + 29308 - 11904: 0xD65E, + 29309 - 11904: 0xB26F, + 29310 - 11904: 0xD65C, + 29311 - 11904: 0xD65F, + 29312 - 11904: 0xB552, + 29313 - 11904: 0xB270, + 29314 - 11904: 0xFE51, + 29316 - 11904: 0xB551, + 29317 - 11904: 0xDA6B, + 29318 - 11904: 0xDA6A, + 29319 - 11904: 0x9456, + 29320 - 11904: 0xDA68, + 29321 - 11904: 0xDA69, + 29323 - 11904: 0xDA6C, + 29324 - 11904: 0xDEA6, + 29325 - 11904: 0xDEA5, + 29326 - 11904: 0xDEA9, + 29327 - 11904: 0x9D61, + 29328 - 11904: 0xDEA8, + 29329 - 11904: 0xDEA7, + 29330 - 11904: 0xBAB9, + 29331 - 11904: 0xE2C9, + 29332 - 11904: 0x9457, + 29333 - 11904: 0xE2C8, + 29334 - 11904: 0xBABA, + 29335 - 11904: 0xE2C7, + 29336 - 11904: 0xE673, + 29338 - 11904: 0xE674, + 29339 - 11904: 0xBCF9, + 29341 - 11904: 0xEA59, + 29342 - 11904: 0xEA5A, + 29343 - 11904: 0x9966, + 29345 - 11904: 0xF272, + 29346 - 11904: 0xC37D, + 29347 - 11904: 0xF271, + 29348 - 11904: 0xF270, + 29349 - 11904: 0xF26E, + 29350 - 11904: 0xF26F, + 29351 - 11904: 0xC4EB, + 29352 - 11904: 0xF46C, + 29353 - 11904: 0xF6EE, + 29354 - 11904: 0xF8F7, + 29356 - 11904: 0xA4FC, + 29357 - 11904: 0x8BD5, + 29358 - 11904: 0xC9A5, + 29359 - 11904: 0xA5C7, + 29360 - 11904: 0xC9A6, + 29362 - 11904: 0xA069, + 29364 - 11904: 0xCA43, + 29365 - 11904: 0xCA44, + 29370 - 11904: 0xCB66, + 29373 - 11904: 0xCB62, + 29375 - 11904: 0xCB61, + 29376 - 11904: 0xAAAC, + 29377 - 11904: 0xCB65, + 29378 - 11904: 0xA867, + 29379 - 11904: 0xCB63, + 29380 - 11904: 0xA866, + 29381 - 11904: 0xCB67, + 29382 - 11904: 0xCB64, + 29385 - 11904: 0xCD5F, + 29386 - 11904: 0xCFBE, + 29387 - 11904: 0xCD5D, + 29388 - 11904: 0xCD64, + 29389 - 11904: 0x98B4, + 29390 - 11904: 0xAAAD, + 29392 - 11904: 0xAAB0, + 29393 - 11904: 0xCD65, + 29394 - 11904: 0xCD61, + 29396 - 11904: 0xCD62, + 29398 - 11904: 0xCD5C, + 29399 - 11904: 0xAAAF, + 29400 - 11904: 0xCD5E, + 29401 - 11904: 0xAAAE, + 29402 - 11904: 0xCD63, + 29404 - 11904: 0xCD60, + 29407 - 11904: 0xCFC2, + 29408 - 11904: 0xACBD, + 29409 - 11904: 0xACBE, + 29410 - 11904: 0xA049, + 29411 - 11904: 0xCFC5, + 29412 - 11904: 0xCFBF, + 29414 - 11904: 0xCFC4, + 29416 - 11904: 0xCFC0, + 29417 - 11904: 0xACBC, + 29418 - 11904: 0xCFC3, + 29419 - 11904: 0xCFC1, + 29427 - 11904: 0xD2A8, + 29428 - 11904: 0xD2A5, + 29430 - 11904: 0xD2A7, + 29431 - 11904: 0xAF58, + 29432 - 11904: 0xAF57, + 29433 - 11904: 0xAF55, + 29434 - 11904: 0xD2A4, + 29435 - 11904: 0xD2A9, + 29436 - 11904: 0xAF54, + 29437 - 11904: 0xAF56, + 29438 - 11904: 0xD2A6, + 29439 - 11904: 0xD667, + 29440 - 11904: 0xD2A3, + 29441 - 11904: 0xD2AA, + 29442 - 11904: 0xA04C, + 29444 - 11904: 0x9E65, + 29447 - 11904: 0xD662, + 29448 - 11904: 0xD666, + 29450 - 11904: 0xD665, + 29451 - 11904: 0xDA6E, + 29452 - 11904: 0xDA79, + 29455 - 11904: 0xD668, + 29456 - 11904: 0x98B5, + 29457 - 11904: 0xD663, + 29458 - 11904: 0xDA6D, + 29459 - 11904: 0xB274, + 29462 - 11904: 0xB273, + 29463 - 11904: 0xD661, + 29464 - 11904: 0xD664, + 29465 - 11904: 0xB275, + 29467 - 11904: 0xB272, + 29468 - 11904: 0xB271, + 29469 - 11904: 0xD660, + 29470 - 11904: 0xD669, + 29474 - 11904: 0xDA70, + 29475 - 11904: 0xDA77, + 29477 - 11904: 0xB554, + 29478 - 11904: 0xDA76, + 29479 - 11904: 0xDA73, + 29480 - 11904: 0xFE58, + 29481 - 11904: 0xB556, + 29482 - 11904: 0xFE52, + 29483 - 11904: 0xFE53, + 29484 - 11904: 0xA065, + 29485 - 11904: 0xDA75, + 29486 - 11904: 0xFE59, + 29488 - 11904: 0xDA6F, + 29489 - 11904: 0xDA71, + 29490 - 11904: 0xDA74, + 29491 - 11904: 0xDA72, + 29492 - 11904: 0xB555, + 29493 - 11904: 0xDA78, + 29494 - 11904: 0xB553, + 29495 - 11904: 0xB7DF, + 29496 - 11904: 0x98B7, + 29497 - 11904: 0x98B8, + 29498 - 11904: 0xDEAD, + 29499 - 11904: 0xDEAC, + 29500 - 11904: 0xDEAA, + 29502 - 11904: 0xB7E2, + 29503 - 11904: 0xB7E1, + 29504 - 11904: 0xDEAE, + 29505 - 11904: 0x98BA, + 29506 - 11904: 0xDEAB, + 29507 - 11904: 0xE2CA, + 29508 - 11904: 0xBABB, + 29509 - 11904: 0xB7E0, + 29512 - 11904: 0x98BB, + 29513 - 11904: 0xDEB0, + 29514 - 11904: 0xDEAF, + 29516 - 11904: 0xE2CD, + 29517 - 11904: 0xE2CB, + 29518 - 11904: 0xBCFA, + 29519 - 11904: 0x9FBC, + 29520 - 11904: 0xBABC, + 29521 - 11904: 0xE2CC, + 29522 - 11904: 0xE676, + 29527 - 11904: 0xBCFB, + 29528 - 11904: 0xE675, + 29529 - 11904: 0xE67E, + 29530 - 11904: 0xE67D, + 29531 - 11904: 0xE67B, + 29533 - 11904: 0xE67A, + 29534 - 11904: 0xE677, + 29535 - 11904: 0xE678, + 29536 - 11904: 0xE679, + 29537 - 11904: 0xE67C, + 29538 - 11904: 0xE6A1, + 29541 - 11904: 0xEA5F, + 29542 - 11904: 0xEA5C, + 29543 - 11904: 0xEA5D, + 29544 - 11904: 0xBF57, + 29545 - 11904: 0xEA5B, + 29546 - 11904: 0xEA61, + 29547 - 11904: 0xEA60, + 29548 - 11904: 0xEA5E, + 29550 - 11904: 0xED64, + 29551 - 11904: 0xED65, + 29552 - 11904: 0xC0F1, + 29553 - 11904: 0xA04A, + 29554 - 11904: 0xC0F2, + 29555 - 11904: 0xED63, + 29556 - 11904: 0x9EC7, + 29557 - 11904: 0xC279, + 29558 - 11904: 0xEFFE, + 29559 - 11904: 0xC278, + 29560 - 11904: 0xC37E, + 29562 - 11904: 0xC3A1, + 29563 - 11904: 0xC46D, + 29564 - 11904: 0xF46E, + 29565 - 11904: 0xF46D, + 29566 - 11904: 0xF5DD, + 29567 - 11904: 0xF6EF, + 29568 - 11904: 0xC57A, + 29569 - 11904: 0xF7E8, + 29570 - 11904: 0xF7E7, + 29571 - 11904: 0xF7E9, + 29572 - 11904: 0xA5C8, + 29573 - 11904: 0xCFC6, + 29574 - 11904: 0xAF59, + 29575 - 11904: 0xB276, + 29576 - 11904: 0xD66A, + 29577 - 11904: 0xA5C9, + 29578 - 11904: 0xC9A7, + 29579 - 11904: 0xA4FD, + 29580 - 11904: 0x8CA9, + 29582 - 11904: 0xCA45, + 29583 - 11904: 0x98AE, + 29586 - 11904: 0xCB6C, + 29587 - 11904: 0xCB6A, + 29588 - 11904: 0xCB6B, + 29589 - 11904: 0xCB68, + 29590 - 11904: 0xA868, + 29591 - 11904: 0xCB69, + 29592 - 11904: 0x92D6, + 29596 - 11904: 0xFAE1, + 29597 - 11904: 0xCD6D, + 29598 - 11904: 0x91D4, + 29599 - 11904: 0xAAB3, + 29600 - 11904: 0xCD6B, + 29601 - 11904: 0xCD67, + 29602 - 11904: 0xCD6A, + 29604 - 11904: 0xCD66, + 29605 - 11904: 0xAAB5, + 29606 - 11904: 0xCD69, + 29607 - 11904: 0xFADE, + 29608 - 11904: 0xAAB2, + 29609 - 11904: 0xAAB1, + 29610 - 11904: 0xFE5B, + 29611 - 11904: 0xAAB4, + 29612 - 11904: 0xCD6C, + 29613 - 11904: 0xCD68, + 29618 - 11904: 0xACC2, + 29619 - 11904: 0xACC5, + 29620 - 11904: 0xCFCE, + 29621 - 11904: 0xCFCD, + 29622 - 11904: 0xCFCC, + 29623 - 11904: 0xACBF, + 29624 - 11904: 0xCFD5, + 29625 - 11904: 0xCFCB, + 29626 - 11904: 0x8C53, + 29627 - 11904: 0xACC1, + 29628 - 11904: 0xD2AF, + 29630 - 11904: 0xCFD2, + 29631 - 11904: 0xCFD0, + 29632 - 11904: 0xACC4, + 29634 - 11904: 0xCFC8, + 29635 - 11904: 0xCFD3, + 29636 - 11904: 0x87BF, + 29637 - 11904: 0xCFCA, + 29638 - 11904: 0xCFD4, + 29639 - 11904: 0xCFD1, + 29640 - 11904: 0xCFC9, + 29641 - 11904: 0xFE5E, + 29642 - 11904: 0xACC0, + 29643 - 11904: 0xCFD6, + 29644 - 11904: 0xCFC7, + 29645 - 11904: 0xACC3, + 29646 - 11904: 0xFBD7, + 29647 - 11904: 0xFE5A, + 29648 - 11904: 0x94C5, + 29650 - 11904: 0xD2B4, + 29651 - 11904: 0xD2AB, + 29652 - 11904: 0xD2B6, + 29653 - 11904: 0xFACA, + 29654 - 11904: 0xD2AE, + 29655 - 11904: 0xD2B9, + 29656 - 11904: 0xD2BA, + 29657 - 11904: 0xD2AC, + 29658 - 11904: 0xD2B8, + 29659 - 11904: 0xD2B5, + 29660 - 11904: 0xD2B3, + 29661 - 11904: 0xD2B7, + 29662 - 11904: 0xAF5F, + 29664 - 11904: 0xAF5D, + 29665 - 11904: 0x98C1, + 29666 - 11904: 0x975C, + 29667 - 11904: 0xD2B1, + 29668 - 11904: 0xFE74, + 29669 - 11904: 0xD2AD, + 29670 - 11904: 0x9773, + 29671 - 11904: 0xD2B0, + 29672 - 11904: 0xD2BB, + 29673 - 11904: 0xD2B2, + 29674 - 11904: 0xAF5E, + 29675 - 11904: 0xCFCF, + 29677 - 11904: 0xAF5A, + 29678 - 11904: 0xAF5C, + 29679 - 11904: 0xFA46, + 29683 - 11904: 0x9764, + 29684 - 11904: 0xD678, + 29685 - 11904: 0xD66D, + 29686 - 11904: 0xD66B, + 29687 - 11904: 0xFE68, + 29688 - 11904: 0xD66C, + 29689 - 11904: 0x964E, + 29690 - 11904: 0xD673, + 29691 - 11904: 0x9765, + 29692 - 11904: 0xD674, + 29693 - 11904: 0xD670, + 29694 - 11904: 0xB27B, + 29695 - 11904: 0xD675, + 29696 - 11904: 0xD672, + 29697 - 11904: 0xD66F, + 29698 - 11904: 0x8C5A, + 29699 - 11904: 0xB279, + 29700 - 11904: 0xD66E, + 29701 - 11904: 0xB277, + 29702 - 11904: 0xB27A, + 29703 - 11904: 0xD671, + 29704 - 11904: 0xD679, + 29705 - 11904: 0xAF5B, + 29706 - 11904: 0xB278, + 29707 - 11904: 0xD677, + 29708 - 11904: 0xD676, + 29709 - 11904: 0xB27C, + 29713 - 11904: 0x89A1, + 29714 - 11904: 0x95FA, + 29716 - 11904: 0x92D4, + 29717 - 11904: 0xFE69, + 29718 - 11904: 0xDA7E, + 29719 - 11904: 0xFB45, + 29721 - 11904: 0x98C8, + 29722 - 11904: 0xDAA1, + 29723 - 11904: 0xB560, + 29724 - 11904: 0x90EF, + 29725 - 11904: 0xDAA7, + 29726 - 11904: 0x98C9, + 29727 - 11904: 0x98CA, + 29728 - 11904: 0xDAA9, + 29729 - 11904: 0xDAA2, + 29730 - 11904: 0xB55A, + 29731 - 11904: 0xDAA6, + 29732 - 11904: 0xDAA5, + 29733 - 11904: 0xB55B, + 29734 - 11904: 0xB561, + 29736 - 11904: 0xB562, + 29737 - 11904: 0xDAA8, + 29738 - 11904: 0xB558, + 29739 - 11904: 0xDA7D, + 29740 - 11904: 0xDA7B, + 29741 - 11904: 0xDAA3, + 29742 - 11904: 0xDA7A, + 29743 - 11904: 0xB55F, + 29744 - 11904: 0xDA7C, + 29745 - 11904: 0xDAA4, + 29746 - 11904: 0xDAAA, + 29747 - 11904: 0xB559, + 29748 - 11904: 0xB55E, + 29749 - 11904: 0xB55C, + 29750 - 11904: 0xB55D, + 29751 - 11904: 0x946D, + 29752 - 11904: 0x94B7, + 29753 - 11904: 0xFE6C, + 29754 - 11904: 0xB557, + 29756 - 11904: 0x946B, + 29759 - 11904: 0xB7E9, + 29760 - 11904: 0xDEB7, + 29761 - 11904: 0xB7E8, + 29762 - 11904: 0xDEBB, + 29763 - 11904: 0x92FC, + 29764 - 11904: 0xDEB1, + 29765 - 11904: 0x95EB, + 29766 - 11904: 0xDEBC, + 29767 - 11904: 0xFE73, + 29768 - 11904: 0x976E, + 29769 - 11904: 0xFE5F, + 29770 - 11904: 0xDEB2, + 29771 - 11904: 0xDEB3, + 29772 - 11904: 0x87B8, + 29773 - 11904: 0xDEBD, + 29774 - 11904: 0xDEBA, + 29775 - 11904: 0xDEB8, + 29776 - 11904: 0xDEB9, + 29777 - 11904: 0xDEB5, + 29778 - 11904: 0xDEB4, + 29779 - 11904: 0xFDBD, + 29780 - 11904: 0xDEBE, + 29781 - 11904: 0xB7E5, + 29782 - 11904: 0x92D5, + 29783 - 11904: 0xDEB6, + 29785 - 11904: 0xB7EA, + 29786 - 11904: 0xB7E4, + 29787 - 11904: 0xB7EB, + 29788 - 11904: 0xFE6F, + 29789 - 11904: 0xFEB9, + 29790 - 11904: 0xB7E7, + 29791 - 11904: 0xB7E6, + 29792 - 11904: 0xFE71, + 29793 - 11904: 0x8778, + 29794 - 11904: 0xE2CE, + 29795 - 11904: 0xBABE, + 29796 - 11904: 0xBABD, + 29797 - 11904: 0xFBBB, + 29799 - 11904: 0xE2D3, + 29800 - 11904: 0xA0D5, + 29801 - 11904: 0xBCFC, + 29802 - 11904: 0xBABF, + 29803 - 11904: 0x95FB, + 29804 - 11904: 0xFE77, + 29805 - 11904: 0xBAC1, + 29806 - 11904: 0xE2D4, + 29807 - 11904: 0xB7E3, + 29808 - 11904: 0xBAC0, + 29809 - 11904: 0xE2D0, + 29810 - 11904: 0xE2D2, + 29811 - 11904: 0xE2CF, + 29812 - 11904: 0xFE79, + 29813 - 11904: 0xE2D1, + 29814 - 11904: 0xFE75, + 29817 - 11904: 0xE6AB, + 29818 - 11904: 0x945D, + 29820 - 11904: 0xE6AA, + 29821 - 11904: 0xE6A7, + 29822 - 11904: 0xBD40, + 29823 - 11904: 0xEA62, + 29824 - 11904: 0xBD41, + 29825 - 11904: 0xE6A6, + 29826 - 11904: 0xFE7C, + 29827 - 11904: 0xBCFE, + 29829 - 11904: 0xE6A8, + 29830 - 11904: 0xE6A5, + 29831 - 11904: 0xE6A2, + 29832 - 11904: 0xE6A9, + 29833 - 11904: 0xE6A3, + 29834 - 11904: 0xE6A4, + 29835 - 11904: 0xBCFD, + 29836 - 11904: 0x9344, + 29837 - 11904: 0x8EA6, + 29840 - 11904: 0xED69, + 29842 - 11904: 0xEA66, + 29844 - 11904: 0xEA65, + 29845 - 11904: 0xEA67, + 29847 - 11904: 0xED66, + 29848 - 11904: 0xBF5A, + 29849 - 11904: 0x92D3, + 29850 - 11904: 0xEA63, + 29851 - 11904: 0x94B8, + 29852 - 11904: 0xBF58, + 29853 - 11904: 0x8779, + 29854 - 11904: 0xBF5C, + 29855 - 11904: 0xBF5B, + 29856 - 11904: 0xEA64, + 29857 - 11904: 0xEA68, + 29859 - 11904: 0xBF59, + 29860 - 11904: 0xFC71, + 29861 - 11904: 0xED6D, + 29862 - 11904: 0xC0F5, + 29863 - 11904: 0xC27A, + 29864 - 11904: 0xC0F6, + 29865 - 11904: 0xC0F3, + 29866 - 11904: 0xED6A, + 29867 - 11904: 0xED68, + 29869 - 11904: 0xED6B, + 29871 - 11904: 0xED6E, + 29872 - 11904: 0xC0F4, + 29873 - 11904: 0xED6C, + 29874 - 11904: 0xED67, + 29876 - 11904: 0x975E, + 29877 - 11904: 0xF042, + 29878 - 11904: 0xF045, + 29879 - 11904: 0xF275, + 29880 - 11904: 0xF040, + 29881 - 11904: 0x8CAD, + 29882 - 11904: 0xF46F, + 29883 - 11904: 0xF046, + 29885 - 11904: 0xC3A2, + 29886 - 11904: 0xF044, + 29887 - 11904: 0xC27B, + 29888 - 11904: 0xF041, + 29889 - 11904: 0xF043, + 29890 - 11904: 0xF047, + 29891 - 11904: 0xF276, + 29893 - 11904: 0xF274, + 29894 - 11904: 0x87C1, + 29896 - 11904: 0xFEA7, + 29898 - 11904: 0xC3A3, + 29899 - 11904: 0xF273, + 29900 - 11904: 0x946A, + 29903 - 11904: 0xC46E, + 29904 - 11904: 0x93E3, + 29907 - 11904: 0x98CF, + 29908 - 11904: 0xC4ED, + 29909 - 11904: 0xF6F1, + 29910 - 11904: 0xC4EC, + 29911 - 11904: 0xF6F3, + 29912 - 11904: 0xF6F0, + 29913 - 11904: 0xF6F2, + 29914 - 11904: 0xC5D0, + 29915 - 11904: 0xF8B2, + 29916 - 11904: 0xA5CA, + 29917 - 11904: 0xCD6E, + 29918 - 11904: 0xD2BC, + 29919 - 11904: 0xD2BD, + 29920 - 11904: 0xB27D, + 29921 - 11904: 0xDEBF, + 29922 - 11904: 0xBF5D, + 29923 - 11904: 0xC3A4, + 29924 - 11904: 0xC57B, + 29925 - 11904: 0xF8B3, + 29926 - 11904: 0xA5CB, + 29927 - 11904: 0xA0D9, + 29928 - 11904: 0xCD6F, + 29929 - 11904: 0xFEAA, + 29932 - 11904: 0xCFD7, + 29934 - 11904: 0xCFD8, + 29936 - 11904: 0xA0BF, + 29937 - 11904: 0xA04D, + 29938 - 11904: 0xA0B8, + 29940 - 11904: 0xD2BE, + 29941 - 11904: 0xD2BF, + 29942 - 11904: 0xB27E, + 29943 - 11904: 0xB2A1, + 29944 - 11904: 0xA0CE, + 29947 - 11904: 0xDAAB, + 29949 - 11904: 0xDEC2, + 29950 - 11904: 0xDEC1, + 29951 - 11904: 0xDEC0, + 29952 - 11904: 0xE2D5, + 29954 - 11904: 0xE2D6, + 29955 - 11904: 0xE2D7, + 29956 - 11904: 0xBAC2, + 29957 - 11904: 0xA0B7, + 29959 - 11904: 0xE6AD, + 29960 - 11904: 0xE6AC, + 29963 - 11904: 0xEA69, + 29964 - 11904: 0xBF5E, + 29965 - 11904: 0xBF5F, + 29966 - 11904: 0xFEA9, + 29967 - 11904: 0xED72, + 29968 - 11904: 0xED6F, + 29969 - 11904: 0xED70, + 29970 - 11904: 0xED71, + 29971 - 11904: 0xF049, + 29972 - 11904: 0xF048, + 29973 - 11904: 0xC27C, + 29974 - 11904: 0xF277, + 29975 - 11904: 0xF5DE, + 29976 - 11904: 0xA5CC, + 29977 - 11904: 0x89C3, + 29978 - 11904: 0xACC6, + 29980 - 11904: 0xB2A2, + 29981 - 11904: 0xDEC3, + 29982 - 11904: 0xFEAB, + 29983 - 11904: 0xA5CD, + 29985 - 11904: 0xD2C0, + 29986 - 11904: 0xB2A3, + 29989 - 11904: 0xB563, + 29990 - 11904: 0xB564, + 29992 - 11904: 0xA5CE, + 29993 - 11904: 0xA5CF, + 29994 - 11904: 0xCA46, + 29995 - 11904: 0xA86A, + 29996 - 11904: 0xA869, + 29997 - 11904: 0xACC7, + 29998 - 11904: 0xCFD9, + 29999 - 11904: 0xDAAC, + 30000 - 11904: 0xA5D0, + 30001 - 11904: 0xA5D1, + 30002 - 11904: 0xA5D2, + 30003 - 11904: 0xA5D3, + 30004 - 11904: 0x9DF4, + 30005 - 11904: 0x896D, + 30007 - 11904: 0xA86B, + 30008 - 11904: 0xA86C, + 30009 - 11904: 0xCB6E, + 30010 - 11904: 0xCB6D, + 30011 - 11904: 0x9C7B, + 30013 - 11904: 0xAAB6, + 30014 - 11904: 0xCD72, + 30015 - 11904: 0xCD70, + 30016 - 11904: 0xCD71, + 30018 - 11904: 0x98D2, + 30022 - 11904: 0x9FA9, + 30023 - 11904: 0xCFDA, + 30024 - 11904: 0xCFDB, + 30026 - 11904: 0xFEB2, + 30027 - 11904: 0xACCB, + 30028 - 11904: 0xACC9, + 30029 - 11904: 0xFEB1, + 30030 - 11904: 0xACCA, + 30031 - 11904: 0xACC8, + 30033 - 11904: 0x97D9, + 30035 - 11904: 0xA0C4, + 30036 - 11904: 0xAF60, + 30037 - 11904: 0x9476, + 30041 - 11904: 0xAF64, + 30042 - 11904: 0xAF63, + 30043 - 11904: 0xD2C1, + 30044 - 11904: 0xAF62, + 30045 - 11904: 0xAF61, + 30047 - 11904: 0xD2C2, + 30048 - 11904: 0x9978, + 30050 - 11904: 0xB2A6, + 30051 - 11904: 0xD67B, + 30052 - 11904: 0xD67A, + 30053 - 11904: 0xB2A4, + 30054 - 11904: 0xB2A5, + 30055 - 11904: 0xFEB3, + 30058 - 11904: 0xB566, + 30059 - 11904: 0xB565, + 30060 - 11904: 0xDAAE, + 30061 - 11904: 0x98D3, + 30062 - 11904: 0xFEB4, + 30063 - 11904: 0xDAAD, + 30064 - 11904: 0xB2A7, + 30066 - 11904: 0x98D4, + 30070 - 11904: 0xB7ED, + 30071 - 11904: 0xDEC5, + 30072 - 11904: 0xB7EE, + 30073 - 11904: 0xDEC4, + 30074 - 11904: 0x9FB9, + 30077 - 11904: 0xE2D8, + 30078 - 11904: 0xE6AE, + 30079 - 11904: 0xBD42, + 30080 - 11904: 0xEA6A, + 30083 - 11904: 0x9471, + 30084 - 11904: 0xED73, + 30086 - 11904: 0xC3A6, + 30087 - 11904: 0xC3A5, + 30090 - 11904: 0xC57C, + 30091 - 11904: 0xA5D4, + 30092 - 11904: 0xCD73, + 30093 - 11904: 0x98D5, + 30094 - 11904: 0xFEB8, + 30095 - 11904: 0xB2A8, + 30096 - 11904: 0xE2D9, + 30097 - 11904: 0xBAC3, + 30098 - 11904: 0xC6D4, + 30100 - 11904: 0xCB6F, + 30101 - 11904: 0xCB70, + 30104 - 11904: 0xCD74, + 30105 - 11904: 0xAAB8, + 30106 - 11904: 0xAAB9, + 30109 - 11904: 0xAAB7, + 30110 - 11904: 0xFEBA, + 30114 - 11904: 0xACCF, + 30115 - 11904: 0xACD0, + 30116 - 11904: 0xACCD, + 30117 - 11904: 0xACCE, + 30119 - 11904: 0xCFDC, + 30122 - 11904: 0xCFDD, + 30123 - 11904: 0xACCC, + 30128 - 11904: 0xD2C3, + 30129 - 11904: 0x9E5C, + 30130 - 11904: 0xAF68, + 30131 - 11904: 0xAF69, + 30132 - 11904: 0xFEBB, + 30133 - 11904: 0xB2AB, + 30134 - 11904: 0xD2C9, + 30136 - 11904: 0xAF6E, + 30137 - 11904: 0xAF6C, + 30138 - 11904: 0xD2CA, + 30139 - 11904: 0xD2C5, + 30140 - 11904: 0xAF6B, + 30141 - 11904: 0xAF6A, + 30142 - 11904: 0xAF65, + 30143 - 11904: 0xD2C8, + 30144 - 11904: 0xD2C7, + 30145 - 11904: 0xD2C4, + 30146 - 11904: 0xAF6D, + 30147 - 11904: 0xA044, + 30148 - 11904: 0xD2C6, + 30149 - 11904: 0xAF66, + 30151 - 11904: 0xAF67, + 30152 - 11904: 0x98D7, + 30154 - 11904: 0xB2AC, + 30155 - 11904: 0xD6A1, + 30156 - 11904: 0xD6A2, + 30157 - 11904: 0xB2AD, + 30158 - 11904: 0xD67C, + 30159 - 11904: 0xD67E, + 30160 - 11904: 0xD6A4, + 30161 - 11904: 0xD6A3, + 30162 - 11904: 0xD67D, + 30164 - 11904: 0xB2A9, + 30165 - 11904: 0xB2AA, + 30167 - 11904: 0xDAB6, + 30168 - 11904: 0xB56B, + 30169 - 11904: 0xB56A, + 30170 - 11904: 0xDAB0, + 30171 - 11904: 0xB568, + 30172 - 11904: 0x98D8, + 30173 - 11904: 0xDAB3, + 30174 - 11904: 0xB56C, + 30175 - 11904: 0xDAB4, + 30176 - 11904: 0xB56D, + 30177 - 11904: 0xDAB1, + 30178 - 11904: 0xB567, + 30179 - 11904: 0xB569, + 30180 - 11904: 0xDAB5, + 30182 - 11904: 0xDAB2, + 30183 - 11904: 0xDAAF, + 30189 - 11904: 0xDED2, + 30191 - 11904: 0xDEC7, + 30192 - 11904: 0xB7F0, + 30193 - 11904: 0xB7F3, + 30194 - 11904: 0xB7F2, + 30195 - 11904: 0xB7F7, + 30196 - 11904: 0xB7F6, + 30197 - 11904: 0xDED3, + 30198 - 11904: 0xDED1, + 30199 - 11904: 0xDECA, + 30200 - 11904: 0xDECE, + 30201 - 11904: 0xDECD, + 30202 - 11904: 0xB7F4, + 30203 - 11904: 0xDED0, + 30204 - 11904: 0xDECC, + 30205 - 11904: 0xDED4, + 30206 - 11904: 0xDECB, + 30207 - 11904: 0xB7F5, + 30208 - 11904: 0xB7EF, + 30209 - 11904: 0xB7F1, + 30210 - 11904: 0xFEBC, + 30211 - 11904: 0xDEC9, + 30215 - 11904: 0x9FFE, + 30216 - 11904: 0xE2DB, + 30217 - 11904: 0xBAC7, + 30218 - 11904: 0xE2DF, + 30219 - 11904: 0xBAC6, + 30220 - 11904: 0xE2DC, + 30221 - 11904: 0xBAC5, + 30223 - 11904: 0xDEC8, + 30224 - 11904: 0xDECF, + 30225 - 11904: 0xE2DE, + 30227 - 11904: 0xBAC8, + 30228 - 11904: 0xE2E0, + 30229 - 11904: 0xE2DD, + 30230 - 11904: 0xE2DA, + 30233 - 11904: 0xE6B1, + 30234 - 11904: 0xE6B5, + 30235 - 11904: 0xE6B7, + 30236 - 11904: 0xE6B3, + 30237 - 11904: 0xE6B2, + 30238 - 11904: 0xE6B0, + 30239 - 11904: 0xBD45, + 30240 - 11904: 0xBD43, + 30241 - 11904: 0xBD48, + 30242 - 11904: 0xBD49, + 30243 - 11904: 0xE6B4, + 30244 - 11904: 0xBD46, + 30245 - 11904: 0xE6AF, + 30246 - 11904: 0xBD47, + 30247 - 11904: 0xBAC4, + 30248 - 11904: 0xE6B6, + 30249 - 11904: 0xBD44, + 30252 - 11904: 0xFEBD, + 30253 - 11904: 0xEA6C, + 30255 - 11904: 0xEA6B, + 30256 - 11904: 0xEA73, + 30257 - 11904: 0xEA6D, + 30258 - 11904: 0xEA72, + 30259 - 11904: 0xEA6F, + 30260 - 11904: 0xBF60, + 30261 - 11904: 0xEA71, + 30264 - 11904: 0xBF61, + 30266 - 11904: 0xBF62, + 30267 - 11904: 0x9DDD, + 30268 - 11904: 0xEA70, + 30269 - 11904: 0xEA6E, + 30272 - 11904: 0x9EE1, + 30274 - 11904: 0xC0F8, + 30275 - 11904: 0xED74, + 30278 - 11904: 0xC0F7, + 30279 - 11904: 0xED77, + 30280 - 11904: 0xED75, + 30281 - 11904: 0xED76, + 30284 - 11904: 0xC0F9, + 30285 - 11904: 0x98DA, + 30286 - 11904: 0x9DDF, + 30287 - 11904: 0xFEBF, + 30288 - 11904: 0xF04D, + 30289 - 11904: 0xFEBE, + 30290 - 11904: 0xC2A1, + 30291 - 11904: 0xF04E, + 30292 - 11904: 0x9EEB, + 30294 - 11904: 0xC27D, + 30295 - 11904: 0xF04F, + 30296 - 11904: 0xC27E, + 30297 - 11904: 0xF04C, + 30298 - 11904: 0xF050, + 30300 - 11904: 0xF04A, + 30303 - 11904: 0xC3A7, + 30304 - 11904: 0xF278, + 30305 - 11904: 0xC3A8, + 30306 - 11904: 0xC46F, + 30308 - 11904: 0xF04B, + 30309 - 11904: 0xC470, + 30310 - 11904: 0x9E59, + 30311 - 11904: 0xA05C, + 30313 - 11904: 0xC4EE, + 30314 - 11904: 0xF5DF, + 30316 - 11904: 0xC57E, + 30317 - 11904: 0xF6F4, + 30318 - 11904: 0xC57D, + 30319 - 11904: 0xFEC0, + 30320 - 11904: 0xF7EA, + 30321 - 11904: 0xC5F5, + 30322 - 11904: 0xC5F6, + 30323 - 11904: 0x9477, + 30324 - 11904: 0x98DC, + 30325 - 11904: 0xF9CC, + 30326 - 11904: 0xFEC1, + 30328 - 11904: 0xACD1, + 30329 - 11904: 0xCFDE, + 30330 - 11904: 0x98DE, + 30331 - 11904: 0xB56E, + 30332 - 11904: 0xB56F, + 30333 - 11904: 0xA5D5, + 30334 - 11904: 0xA6CA, + 30335 - 11904: 0xCA47, + 30337 - 11904: 0xCB71, + 30338 - 11904: 0xA86D, + 30340 - 11904: 0xAABA, + 30342 - 11904: 0xACD2, + 30343 - 11904: 0xACD3, + 30344 - 11904: 0xACD4, + 30345 - 11904: 0xD6A6, + 30346 - 11904: 0xD2CB, + 30347 - 11904: 0xAF6F, + 30350 - 11904: 0xB2AE, + 30351 - 11904: 0xD6A5, + 30352 - 11904: 0xFEC3, + 30354 - 11904: 0xDAB8, + 30355 - 11904: 0xB571, + 30357 - 11904: 0xDAB7, + 30358 - 11904: 0xB570, + 30361 - 11904: 0xDED5, + 30362 - 11904: 0xBD4A, + 30363 - 11904: 0xE6BB, + 30364 - 11904: 0xE6B8, + 30365 - 11904: 0xE6B9, + 30366 - 11904: 0xE6BA, + 30369 - 11904: 0xFEC8, + 30372 - 11904: 0xED78, + 30373 - 11904: 0xFEC9, + 30374 - 11904: 0xF051, + 30378 - 11904: 0xF471, + 30379 - 11904: 0xF470, + 30381 - 11904: 0xF6F5, + 30382 - 11904: 0xA5D6, + 30383 - 11904: 0xCD75, + 30384 - 11904: 0xAF70, + 30388 - 11904: 0xB572, + 30389 - 11904: 0xDED6, + 30391 - 11904: 0xFECA, + 30392 - 11904: 0xE2E1, + 30394 - 11904: 0xBD4B, + 30395 - 11904: 0xEA74, + 30397 - 11904: 0xF052, + 30398 - 11904: 0xF472, + 30399 - 11904: 0xA5D7, + 30402 - 11904: 0xAABB, + 30403 - 11904: 0xACD7, + 30404 - 11904: 0xCFDF, + 30405 - 11904: 0xACD8, + 30406 - 11904: 0xACD6, + 30408 - 11904: 0xACD5, + 30409 - 11904: 0xD2CC, + 30410 - 11904: 0xAF71, + 30412 - 11904: 0xFECB, + 30413 - 11904: 0xAF72, + 30414 - 11904: 0xAF73, + 30418 - 11904: 0xB2B0, + 30419 - 11904: 0xD6A7, + 30420 - 11904: 0xB2AF, + 30422 - 11904: 0x9FC2, + 30425 - 11904: 0x8C6B, + 30426 - 11904: 0xDAB9, + 30427 - 11904: 0xB2B1, + 30428 - 11904: 0xB573, + 30429 - 11904: 0xDED7, + 30430 - 11904: 0xB7F8, + 30431 - 11904: 0xB7F9, + 30433 - 11904: 0xBAC9, + 30435 - 11904: 0xBACA, + 30436 - 11904: 0xBD4C, + 30437 - 11904: 0xBF64, + 30438 - 11904: 0xEA75, + 30439 - 11904: 0xBF63, + 30441 - 11904: 0xED79, + 30442 - 11904: 0xC0FA, + 30444 - 11904: 0xF053, + 30445 - 11904: 0xF473, + 30446 - 11904: 0xA5D8, + 30447 - 11904: 0xA86E, + 30448 - 11904: 0xCD78, + 30449 - 11904: 0xCD77, + 30450 - 11904: 0xAABC, + 30451 - 11904: 0xCD76, + 30452 - 11904: 0xAABD, + 30453 - 11904: 0xCD79, + 30455 - 11904: 0xCFE5, + 30456 - 11904: 0xACDB, + 30457 - 11904: 0xACDA, + 30458 - 11904: 0xCFE7, + 30459 - 11904: 0xCFE6, + 30460 - 11904: 0xACDF, + 30462 - 11904: 0xACDE, + 30465 - 11904: 0xACD9, + 30467 - 11904: 0xCFE1, + 30468 - 11904: 0xCFE2, + 30469 - 11904: 0xCFE3, + 30471 - 11904: 0xACE0, + 30472 - 11904: 0xCFE0, + 30473 - 11904: 0xACDC, + 30474 - 11904: 0xCFE4, + 30475 - 11904: 0xACDD, + 30476 - 11904: 0x98C4, + 30478 - 11904: 0x94B0, + 30479 - 11904: 0x94B1, + 30480 - 11904: 0xD2CF, + 30481 - 11904: 0xD2D3, + 30482 - 11904: 0xD2D1, + 30483 - 11904: 0xD2D0, + 30485 - 11904: 0xD2D4, + 30489 - 11904: 0xD2D5, + 30490 - 11904: 0xD2D6, + 30491 - 11904: 0xD2CE, + 30493 - 11904: 0xD2CD, + 30494 - 11904: 0xFED1, + 30495 - 11904: 0xAF75, + 30496 - 11904: 0xAF76, + 30498 - 11904: 0xD2D7, + 30499 - 11904: 0xD2D2, + 30500 - 11904: 0xA0C1, + 30501 - 11904: 0xD6B0, + 30502 - 11904: 0xFED2, + 30503 - 11904: 0xD2D8, + 30504 - 11904: 0xAF77, + 30505 - 11904: 0xAF74, + 30507 - 11904: 0xA0CD, + 30509 - 11904: 0xD6AA, + 30511 - 11904: 0xD6A9, + 30513 - 11904: 0xD6AB, + 30514 - 11904: 0xD6AC, + 30515 - 11904: 0xD6AE, + 30516 - 11904: 0xD6AD, + 30517 - 11904: 0xD6B2, + 30518 - 11904: 0xB2B5, + 30519 - 11904: 0xB2B2, + 30520 - 11904: 0xB2B6, + 30521 - 11904: 0xD6A8, + 30522 - 11904: 0xB2B7, + 30523 - 11904: 0xD6B1, + 30524 - 11904: 0xB2B4, + 30525 - 11904: 0xD6AF, + 30526 - 11904: 0xB2B3, + 30528 - 11904: 0xFED3, + 30531 - 11904: 0x98E5, + 30532 - 11904: 0xDABC, + 30533 - 11904: 0xDABE, + 30534 - 11904: 0xDABA, + 30535 - 11904: 0xDABB, + 30538 - 11904: 0xDABF, + 30539 - 11904: 0xDAC1, + 30540 - 11904: 0xDAC2, + 30541 - 11904: 0xDABD, + 30542 - 11904: 0xDAC0, + 30543 - 11904: 0xB574, + 30546 - 11904: 0xDEDB, + 30548 - 11904: 0xDEE0, + 30549 - 11904: 0xDED8, + 30550 - 11904: 0xDEDC, + 30552 - 11904: 0xFED6, + 30553 - 11904: 0xDEE1, + 30554 - 11904: 0xDEDD, + 30555 - 11904: 0xB7FA, + 30556 - 11904: 0xB843, + 30558 - 11904: 0xB7FD, + 30559 - 11904: 0xDED9, + 30560 - 11904: 0xDEDA, + 30561 - 11904: 0xBACE, + 30562 - 11904: 0xB846, + 30563 - 11904: 0xB7FE, + 30565 - 11904: 0xB844, + 30566 - 11904: 0xB7FC, + 30567 - 11904: 0xDEDF, + 30568 - 11904: 0xB845, + 30569 - 11904: 0xDEDE, + 30570 - 11904: 0xB841, + 30571 - 11904: 0xB7FB, + 30572 - 11904: 0xB842, + 30573 - 11904: 0xDEE2, + 30574 - 11904: 0xE2E6, + 30575 - 11904: 0xE2E8, + 30578 - 11904: 0x91E4, + 30583 - 11904: 0x8FC7, + 30584 - 11904: 0x94AE, + 30585 - 11904: 0xB840, + 30586 - 11904: 0x8A4F, + 30587 - 11904: 0x94B2, + 30588 - 11904: 0xE2E3, + 30589 - 11904: 0xBACC, + 30590 - 11904: 0xE2E9, + 30591 - 11904: 0xBACD, + 30592 - 11904: 0xE2E7, + 30593 - 11904: 0xE2E2, + 30594 - 11904: 0xE2E5, + 30595 - 11904: 0xE2EA, + 30596 - 11904: 0xBACB, + 30597 - 11904: 0xE2E4, + 30599 - 11904: 0xBD4E, + 30600 - 11904: 0xE6BF, + 30601 - 11904: 0xE6BE, + 30603 - 11904: 0xBD51, + 30604 - 11904: 0xBD4F, + 30605 - 11904: 0xE6BC, + 30606 - 11904: 0xBD4D, + 30607 - 11904: 0xE6BD, + 30609 - 11904: 0xBD50, + 30611 - 11904: 0x8FD4, + 30613 - 11904: 0xEA7D, + 30615 - 11904: 0xEAA1, + 30616 - 11904: 0x98EA, + 30617 - 11904: 0xEA7E, + 30618 - 11904: 0xEA76, + 30619 - 11904: 0xEA7A, + 30620 - 11904: 0xEA79, + 30621 - 11904: 0xEA77, + 30622 - 11904: 0xBF66, + 30623 - 11904: 0xBF67, + 30624 - 11904: 0xBF65, + 30625 - 11904: 0xEA78, + 30626 - 11904: 0xEA7B, + 30627 - 11904: 0xEA7C, + 30629 - 11904: 0xBF68, + 30631 - 11904: 0xC140, + 30632 - 11904: 0xEDA3, + 30634 - 11904: 0xC0FC, + 30635 - 11904: 0xED7B, + 30636 - 11904: 0xC0FE, + 30637 - 11904: 0xC141, + 30639 - 11904: 0xFED8, + 30640 - 11904: 0xC0FD, + 30641 - 11904: 0xEDA2, + 30642 - 11904: 0xED7C, + 30643 - 11904: 0xC0FB, + 30644 - 11904: 0xEDA1, + 30645 - 11904: 0xED7A, + 30646 - 11904: 0xED7E, + 30647 - 11904: 0xED7D, + 30649 - 11904: 0x9DE0, + 30650 - 11904: 0xF055, + 30651 - 11904: 0xC2A4, + 30652 - 11904: 0xC2A5, + 30653 - 11904: 0xC2A2, + 30654 - 11904: 0x98EE, + 30655 - 11904: 0xC2A3, + 30658 - 11904: 0xF054, + 30659 - 11904: 0x95C4, + 30660 - 11904: 0xF27B, + 30661 - 11904: 0xFCE8, + 30663 - 11904: 0xC3A9, + 30665 - 11904: 0xF279, + 30666 - 11904: 0xF27A, + 30667 - 11904: 0x98EF, + 30668 - 11904: 0xF474, + 30669 - 11904: 0xF477, + 30670 - 11904: 0xF475, + 30671 - 11904: 0xF476, + 30672 - 11904: 0xF5E0, + 30675 - 11904: 0xC4EF, + 30676 - 11904: 0xF7EB, + 30677 - 11904: 0xF8B4, + 30679 - 11904: 0xC5F7, + 30680 - 11904: 0xF8F8, + 30681 - 11904: 0xF8F9, + 30682 - 11904: 0xC666, + 30683 - 11904: 0xA5D9, + 30684 - 11904: 0xACE1, + 30685 - 11904: 0x8C6E, + 30686 - 11904: 0xDAC3, + 30688 - 11904: 0xDEE3, + 30690 - 11904: 0xA5DA, + 30691 - 11904: 0xA86F, + 30693 - 11904: 0xAABE, + 30694 - 11904: 0xFAD8, + 30695 - 11904: 0xCFE8, + 30696 - 11904: 0xCFE9, + 30697 - 11904: 0xAF78, + 30700 - 11904: 0xDAC4, + 30701 - 11904: 0xB575, + 30702 - 11904: 0xB847, + 30703 - 11904: 0xC142, + 30704 - 11904: 0xEDA4, + 30705 - 11904: 0xF27C, + 30706 - 11904: 0xF478, + 30707 - 11904: 0xA5DB, + 30708 - 11904: 0xFEDC, + 30711 - 11904: 0xCDA1, + 30712 - 11904: 0xCD7A, + 30713 - 11904: 0xCD7C, + 30714 - 11904: 0xCD7E, + 30715 - 11904: 0xCD7D, + 30716 - 11904: 0xCD7B, + 30717 - 11904: 0xAABF, + 30718 - 11904: 0xA0AE, + 30722 - 11904: 0xACE2, + 30723 - 11904: 0xCFF2, + 30725 - 11904: 0xCFED, + 30726 - 11904: 0xCFEA, + 30728 - 11904: 0x9D4C, + 30729 - 11904: 0xFEDD, + 30732 - 11904: 0xACE4, + 30733 - 11904: 0xACE5, + 30734 - 11904: 0xCFF0, + 30735 - 11904: 0xCFEF, + 30736 - 11904: 0xCFEE, + 30737 - 11904: 0xCFEB, + 30738 - 11904: 0xCFEC, + 30739 - 11904: 0xCFF3, + 30740 - 11904: 0xACE3, + 30744 - 11904: 0x98F1, + 30748 - 11904: 0x98F3, + 30749 - 11904: 0xAF7C, + 30750 - 11904: 0x94C1, + 30751 - 11904: 0xAFA4, + 30752 - 11904: 0xAFA3, + 30753 - 11904: 0xD2E1, + 30754 - 11904: 0xD2DB, + 30755 - 11904: 0xD2D9, + 30757 - 11904: 0xAFA1, + 30758 - 11904: 0xD6B9, + 30759 - 11904: 0xAF7A, + 30760 - 11904: 0xD2DE, + 30761 - 11904: 0xD2E2, + 30762 - 11904: 0xD2E4, + 30763 - 11904: 0xD2E0, + 30764 - 11904: 0xD2DA, + 30765 - 11904: 0xAFA2, + 30766 - 11904: 0xD2DF, + 30767 - 11904: 0xD2DD, + 30768 - 11904: 0xAF79, + 30769 - 11904: 0xD2E5, + 30770 - 11904: 0xAFA5, + 30771 - 11904: 0xD2E3, + 30772 - 11904: 0xAF7D, + 30773 - 11904: 0xD2DC, + 30775 - 11904: 0xAF7E, + 30776 - 11904: 0xAF7B, + 30777 - 11904: 0x98F5, + 30780 - 11904: 0xFA4F, + 30781 - 11904: 0x96E2, + 30786 - 11904: 0x9450, + 30787 - 11904: 0xB2B9, + 30788 - 11904: 0x96A2, + 30789 - 11904: 0xD6BA, + 30791 - 11904: 0x98F6, + 30792 - 11904: 0xD6B3, + 30793 - 11904: 0xD6B5, + 30794 - 11904: 0xD6B7, + 30795 - 11904: 0x96E5, + 30796 - 11904: 0xD6B8, + 30797 - 11904: 0xD6B6, + 30798 - 11904: 0xB2BA, + 30800 - 11904: 0xD6BB, + 30801 - 11904: 0x98F7, + 30802 - 11904: 0xD6B4, + 30803 - 11904: 0xA046, + 30804 - 11904: 0x96E3, + 30812 - 11904: 0xDAC8, + 30813 - 11904: 0xB576, + 30814 - 11904: 0xDAD0, + 30816 - 11904: 0xDAC5, + 30818 - 11904: 0xDAD1, + 30820 - 11904: 0xDAC6, + 30821 - 11904: 0xDAC7, + 30822 - 11904: 0x98F8, + 30824 - 11904: 0xDACF, + 30825 - 11904: 0xDACE, + 30826 - 11904: 0xDACB, + 30827 - 11904: 0xB2B8, + 30828 - 11904: 0xB577, + 30829 - 11904: 0xDAC9, + 30830 - 11904: 0xDACC, + 30831 - 11904: 0xB578, + 30832 - 11904: 0xDACD, + 30833 - 11904: 0xDACA, + 30841 - 11904: 0xDEEE, + 30842 - 11904: 0x9EE4, + 30843 - 11904: 0xDEF2, + 30844 - 11904: 0xB84E, + 30846 - 11904: 0xE2F0, + 30847 - 11904: 0xB851, + 30848 - 11904: 0xDEF0, + 30849 - 11904: 0xF9D6, + 30851 - 11904: 0xDEED, + 30852 - 11904: 0xDEE8, + 30853 - 11904: 0xDEEA, + 30854 - 11904: 0xDEEB, + 30855 - 11904: 0xDEE4, + 30856 - 11904: 0x94C3, + 30857 - 11904: 0xB84D, + 30860 - 11904: 0xB84C, + 30861 - 11904: 0x94C2, + 30862 - 11904: 0xB848, + 30863 - 11904: 0xDEE7, + 30865 - 11904: 0xB84F, + 30867 - 11904: 0xB850, + 30868 - 11904: 0xDEE6, + 30869 - 11904: 0xDEE9, + 30870 - 11904: 0xDEF1, + 30871 - 11904: 0xB84A, + 30872 - 11904: 0xB84B, + 30873 - 11904: 0xDEEF, + 30874 - 11904: 0xDEE5, + 30878 - 11904: 0xE2F2, + 30879 - 11904: 0xBAD0, + 30880 - 11904: 0xE2F4, + 30881 - 11904: 0xDEEC, + 30882 - 11904: 0xE2F6, + 30883 - 11904: 0xBAD4, + 30884 - 11904: 0xE2F7, + 30885 - 11904: 0xE2F3, + 30887 - 11904: 0xBAD1, + 30888 - 11904: 0xE2EF, + 30889 - 11904: 0xBAD3, + 30890 - 11904: 0xE2EC, + 30891 - 11904: 0xE2F1, + 30892 - 11904: 0xE2F5, + 30893 - 11904: 0xE2EE, + 30895 - 11904: 0xFEE1, + 30896 - 11904: 0xB849, + 30897 - 11904: 0xFEE9, + 30898 - 11904: 0xE2EB, + 30899 - 11904: 0xBAD2, + 30900 - 11904: 0xE2ED, + 30902 - 11904: 0x96E4, + 30904 - 11904: 0x89AC, + 30905 - 11904: 0x96DB, + 30906 - 11904: 0xBD54, + 30907 - 11904: 0xE6C1, + 30908 - 11904: 0xBD58, + 30910 - 11904: 0xBD56, + 30913 - 11904: 0xBACF, + 30915 - 11904: 0xE6C8, + 30916 - 11904: 0xE6C9, + 30917 - 11904: 0xBD53, + 30919 - 11904: 0xFEE2, + 30920 - 11904: 0xE6C7, + 30921 - 11904: 0xE6CA, + 30922 - 11904: 0xBD55, + 30923 - 11904: 0xBD52, + 30924 - 11904: 0xE6C3, + 30925 - 11904: 0xE6C0, + 30926 - 11904: 0xE6C5, + 30927 - 11904: 0xE6C2, + 30928 - 11904: 0xBD59, + 30929 - 11904: 0xE6C4, + 30930 - 11904: 0x94C4, + 30931 - 11904: 0xFEE3, + 30932 - 11904: 0xE6C6, + 30933 - 11904: 0xBD57, + 30935 - 11904: 0xFEE7, + 30936 - 11904: 0x9FFB, + 30938 - 11904: 0xBF6A, + 30939 - 11904: 0xEAA8, + 30941 - 11904: 0xEAA2, + 30942 - 11904: 0xEAA6, + 30943 - 11904: 0xEAAC, + 30944 - 11904: 0xEAAD, + 30945 - 11904: 0xEAA9, + 30946 - 11904: 0xEAAA, + 30947 - 11904: 0xEAA7, + 30948 - 11904: 0x8C59, + 30949 - 11904: 0xEAA4, + 30951 - 11904: 0xBF6C, + 30952 - 11904: 0xBF69, + 30953 - 11904: 0xEAA3, + 30954 - 11904: 0xEAA5, + 30956 - 11904: 0xBF6B, + 30957 - 11904: 0xEAAB, + 30958 - 11904: 0x93C9, + 30959 - 11904: 0xC146, + 30960 - 11904: 0x94E8, + 30961 - 11904: 0xFB56, + 30962 - 11904: 0xEDAA, + 30963 - 11904: 0xEDA5, + 30964 - 11904: 0xC145, + 30965 - 11904: 0x90C5, + 30967 - 11904: 0xC143, + 30969 - 11904: 0xEDAC, + 30970 - 11904: 0xC144, + 30971 - 11904: 0xEDA8, + 30972 - 11904: 0xEDA9, + 30973 - 11904: 0xEDA6, + 30974 - 11904: 0xEDAD, + 30975 - 11904: 0xF056, + 30977 - 11904: 0xC147, + 30978 - 11904: 0xEDA7, + 30980 - 11904: 0xEDAE, + 30981 - 11904: 0xEDAB, + 30982 - 11904: 0xA0A8, + 30985 - 11904: 0xF05A, + 30988 - 11904: 0xF057, + 30990 - 11904: 0xC2A6, + 30992 - 11904: 0xF05B, + 30993 - 11904: 0xF05D, + 30994 - 11904: 0xF05C, + 30995 - 11904: 0xF058, + 30996 - 11904: 0xF059, + 30999 - 11904: 0xF2A3, + 31001 - 11904: 0xC3AA, + 31003 - 11904: 0xF27E, + 31004 - 11904: 0xF2A2, + 31005 - 11904: 0xF27D, + 31006 - 11904: 0xF2A4, + 31009 - 11904: 0xF2A1, + 31011 - 11904: 0xF47A, + 31012 - 11904: 0xF47D, + 31013 - 11904: 0xF479, + 31014 - 11904: 0xC471, + 31015 - 11904: 0xF47B, + 31016 - 11904: 0xF47C, + 31017 - 11904: 0xF47E, + 31018 - 11904: 0xC472, + 31019 - 11904: 0xC474, + 31020 - 11904: 0xC473, + 31021 - 11904: 0xF5E1, + 31022 - 11904: 0xFEE5, + 31023 - 11904: 0xF5E3, + 31025 - 11904: 0xF5E2, + 31026 - 11904: 0x98FD, + 31027 - 11904: 0x98FB, + 31028 - 11904: 0xFEE8, + 31029 - 11904: 0xF6F6, + 31030 - 11904: 0x8EBF, + 31032 - 11904: 0xF8B5, + 31033 - 11904: 0xF8FA, + 31034 - 11904: 0xA5DC, + 31035 - 11904: 0x8BD8, + 31036 - 11904: 0xFEF7, + 31037 - 11904: 0xCB72, + 31038 - 11904: 0xAAC0, + 31039 - 11904: 0xCDA3, + 31040 - 11904: 0xAAC1, + 31041 - 11904: 0xAAC2, + 31042 - 11904: 0xCDA2, + 31044 - 11904: 0xCFF8, + 31045 - 11904: 0xCFF7, + 31046 - 11904: 0xACE6, + 31047 - 11904: 0xACE9, + 31048 - 11904: 0xACE8, + 31049 - 11904: 0xACE7, + 31050 - 11904: 0xCFF4, + 31051 - 11904: 0xCFF6, + 31052 - 11904: 0xCFF5, + 31055 - 11904: 0xD2E8, + 31056 - 11904: 0xAFA7, + 31057 - 11904: 0xD2EC, + 31058 - 11904: 0xD2EB, + 31059 - 11904: 0xD2EA, + 31060 - 11904: 0xD2E6, + 31061 - 11904: 0xAFA6, + 31062 - 11904: 0xAFAA, + 31063 - 11904: 0xAFAD, + 31064 - 11904: 0x8F68, + 31065 - 11904: 0x94C6, + 31066 - 11904: 0xAFAE, + 31067 - 11904: 0xD2E7, + 31068 - 11904: 0xD2E9, + 31069 - 11904: 0xAFAC, + 31070 - 11904: 0xAFAB, + 31071 - 11904: 0xAFA9, + 31072 - 11904: 0xAFA8, + 31073 - 11904: 0xD6C2, + 31074 - 11904: 0x9DEA, + 31075 - 11904: 0xD6C0, + 31076 - 11904: 0xD6BC, + 31077 - 11904: 0xB2BB, + 31079 - 11904: 0xD6BD, + 31080 - 11904: 0xB2BC, + 31081 - 11904: 0xD6BE, + 31082 - 11904: 0xD6BF, + 31083 - 11904: 0xD6C1, + 31085 - 11904: 0xB2BD, + 31088 - 11904: 0xDAD5, + 31089 - 11904: 0xFC69, + 31090 - 11904: 0xDAD4, + 31091 - 11904: 0xDAD3, + 31092 - 11904: 0xDAD2, + 31097 - 11904: 0xDEF6, + 31098 - 11904: 0xB852, + 31100 - 11904: 0xDEF3, + 31101 - 11904: 0xDEF5, + 31102 - 11904: 0x9CDA, + 31103 - 11904: 0xB853, + 31104 - 11904: 0xFEF3, + 31105 - 11904: 0xB854, + 31106 - 11904: 0xDEF4, + 31107 - 11904: 0x9C72, + 31110 - 11904: 0xFEF0, + 31111 - 11904: 0x89C9, + 31112 - 11904: 0xE341, + 31114 - 11904: 0xE2F9, + 31115 - 11904: 0xE2FA, + 31117 - 11904: 0xBAD7, + 31118 - 11904: 0xBAD5, + 31119 - 11904: 0xBAD6, + 31120 - 11904: 0xE343, + 31121 - 11904: 0x9941, + 31122 - 11904: 0xE342, + 31123 - 11904: 0xE2FE, + 31124 - 11904: 0xE2FD, + 31125 - 11904: 0xE2FC, + 31126 - 11904: 0xE2FB, + 31127 - 11904: 0xE340, + 31128 - 11904: 0xE2F8, + 31129 - 11904: 0x9942, + 31130 - 11904: 0xE6CB, + 31131 - 11904: 0xE6D0, + 31132 - 11904: 0xE6CE, + 31133 - 11904: 0xFEF5, + 31135 - 11904: 0x91D7, + 31136 - 11904: 0xE6CD, + 31137 - 11904: 0xE6CC, + 31138 - 11904: 0xE6CF, + 31140 - 11904: 0xEAAE, + 31141 - 11904: 0x94CC, + 31142 - 11904: 0xBF6D, + 31143 - 11904: 0xC148, + 31144 - 11904: 0xEDB0, + 31145 - 11904: 0xFEF8, + 31146 - 11904: 0xC149, + 31147 - 11904: 0xEDAF, + 31148 - 11904: 0xF05F, + 31149 - 11904: 0xF05E, + 31150 - 11904: 0xC2A7, + 31152 - 11904: 0xF2A5, + 31153 - 11904: 0xC3AB, + 31154 - 11904: 0xF4A1, + 31155 - 11904: 0xC5A1, + 31156 - 11904: 0xF6F7, + 31158 - 11904: 0xF8B7, + 31159 - 11904: 0xF8B6, + 31160 - 11904: 0xC9A8, + 31161 - 11904: 0xACEA, + 31162 - 11904: 0xACEB, + 31163 - 11904: 0xD6C3, + 31165 - 11904: 0xB856, + 31166 - 11904: 0xA5DD, + 31167 - 11904: 0xA872, + 31168 - 11904: 0xA871, + 31169 - 11904: 0xA870, + 31172 - 11904: 0x97A8, + 31173 - 11904: 0xCDA4, + 31174 - 11904: 0xFEFC, + 31176 - 11904: 0xAAC4, + 31177 - 11904: 0xAAC3, + 31178 - 11904: 0x8CDE, + 31179 - 11904: 0xACEE, + 31180 - 11904: 0xFDBF, + 31181 - 11904: 0xCFFA, + 31182 - 11904: 0xCFFD, + 31183 - 11904: 0xCFFB, + 31184 - 11904: 0x87B3, + 31185 - 11904: 0xACEC, + 31186 - 11904: 0xACED, + 31188 - 11904: 0xFEFE, + 31189 - 11904: 0xCFF9, + 31190 - 11904: 0xCFFC, + 31192 - 11904: 0xAFB5, + 31196 - 11904: 0xD2F3, + 31197 - 11904: 0xD2F5, + 31198 - 11904: 0xD2F4, + 31199 - 11904: 0xAFB2, + 31200 - 11904: 0xD2EF, + 31202 - 11904: 0x96D1, + 31203 - 11904: 0xAFB0, + 31204 - 11904: 0xAFAF, + 31206 - 11904: 0xAFB3, + 31207 - 11904: 0xAFB1, + 31209 - 11904: 0xAFB4, + 31210 - 11904: 0xD2F2, + 31211 - 11904: 0xD2ED, + 31212 - 11904: 0xD2EE, + 31213 - 11904: 0xD2F1, + 31214 - 11904: 0xD2F0, + 31217 - 11904: 0x94D5, + 31220 - 11904: 0x94D0, + 31222 - 11904: 0xD6C6, + 31223 - 11904: 0xD6C7, + 31224 - 11904: 0xD6C5, + 31226 - 11904: 0xD6C4, + 31227 - 11904: 0xB2BE, + 31232 - 11904: 0xB57D, + 31234 - 11904: 0xDAD6, + 31235 - 11904: 0xDAD8, + 31236 - 11904: 0xDADA, + 31237 - 11904: 0xB57C, + 31238 - 11904: 0x9944, + 31240 - 11904: 0xB57A, + 31242 - 11904: 0xDAD7, + 31243 - 11904: 0xB57B, + 31244 - 11904: 0xDAD9, + 31245 - 11904: 0xB579, + 31248 - 11904: 0xDF41, + 31249 - 11904: 0xDEF7, + 31250 - 11904: 0xDEFA, + 31251 - 11904: 0xDEFE, + 31252 - 11904: 0xB85A, + 31253 - 11904: 0xDEFC, + 31255 - 11904: 0xDEFB, + 31256 - 11904: 0xDEF8, + 31257 - 11904: 0xDEF9, + 31258 - 11904: 0xB858, + 31259 - 11904: 0xDF40, + 31260 - 11904: 0xB857, + 31262 - 11904: 0xB85C, + 31263 - 11904: 0xB85B, + 31264 - 11904: 0xB859, + 31266 - 11904: 0xDEFD, + 31270 - 11904: 0xE349, + 31272 - 11904: 0xE348, + 31274 - 11904: 0x8C63, + 31275 - 11904: 0xE344, + 31276 - 11904: 0x87BB, + 31277 - 11904: 0xA0B3, + 31278 - 11904: 0xBAD8, + 31279 - 11904: 0xE347, + 31280 - 11904: 0xE346, + 31281 - 11904: 0xBAD9, + 31282 - 11904: 0x87B4, + 31287 - 11904: 0xBD5E, + 31289 - 11904: 0xE6D2, + 31290 - 11904: 0x94CF, + 31291 - 11904: 0xBD5F, + 31292 - 11904: 0xBD5B, + 31293 - 11904: 0xBD5D, + 31294 - 11904: 0x9FFA, + 31295 - 11904: 0xBD5A, + 31296 - 11904: 0xBD5C, + 31299 - 11904: 0x91E5, + 31300 - 11904: 0xEAAF, + 31301 - 11904: 0x9C6A, + 31302 - 11904: 0xBF70, + 31303 - 11904: 0xEAB1, + 31304 - 11904: 0xEAB0, + 31305 - 11904: 0x8E49, + 31306 - 11904: 0xE345, + 31307 - 11904: 0xBF72, + 31308 - 11904: 0xBF71, + 31309 - 11904: 0xBF6E, + 31310 - 11904: 0xBF6F, + 31316 - 11904: 0xEDB5, + 31318 - 11904: 0xEDB3, + 31319 - 11904: 0xC14A, + 31320 - 11904: 0xEDB4, + 31322 - 11904: 0xEDB6, + 31323 - 11904: 0xEDB2, + 31324 - 11904: 0xEDB1, + 31327 - 11904: 0xF060, + 31328 - 11904: 0xC2AA, + 31329 - 11904: 0xC2A8, + 31330 - 11904: 0xC2A9, + 31333 - 11904: 0x8E4C, + 31335 - 11904: 0xF2A6, + 31336 - 11904: 0xF2A7, + 31337 - 11904: 0xC3AD, + 31339 - 11904: 0xC3AC, + 31340 - 11904: 0xF4A3, + 31341 - 11904: 0xF4A4, + 31342 - 11904: 0xF4A2, + 31344 - 11904: 0xF6F8, + 31345 - 11904: 0xF6F9, + 31346 - 11904: 0x87C9, + 31348 - 11904: 0xA5DE, + 31349 - 11904: 0xCA48, + 31350 - 11904: 0xA873, + 31352 - 11904: 0xCDA5, + 31353 - 11904: 0xAAC6, + 31354 - 11904: 0xAAC5, + 31355 - 11904: 0xCDA6, + 31357 - 11904: 0x8E4D, + 31358 - 11904: 0xD040, + 31359 - 11904: 0xACEF, + 31360 - 11904: 0xCFFE, + 31361 - 11904: 0xACF0, + 31363 - 11904: 0x9A73, + 31364 - 11904: 0xAFB6, + 31365 - 11904: 0xD2F8, + 31366 - 11904: 0xD2F6, + 31367 - 11904: 0xD2FC, + 31368 - 11904: 0xAFB7, + 31369 - 11904: 0xD2F7, + 31370 - 11904: 0xD2FB, + 31371 - 11904: 0xD2F9, + 31372 - 11904: 0xD2FA, + 31375 - 11904: 0xD6C8, + 31376 - 11904: 0xD6CA, + 31377 - 11904: 0x9947, + 31378 - 11904: 0xB2BF, + 31379 - 11904: 0x8CB1, + 31380 - 11904: 0xD6C9, + 31381 - 11904: 0xB2C0, + 31382 - 11904: 0xB5A2, + 31383 - 11904: 0xB5A1, + 31384 - 11904: 0xB57E, + 31385 - 11904: 0xDADB, + 31390 - 11904: 0xDF44, + 31391 - 11904: 0xB85D, + 31392 - 11904: 0xB85E, + 31394 - 11904: 0xDF43, + 31395 - 11904: 0xDF42, + 31400 - 11904: 0xE34A, + 31401 - 11904: 0xBADB, + 31402 - 11904: 0xBADA, + 31403 - 11904: 0xE34B, + 31404 - 11904: 0xE34C, + 31406 - 11904: 0xBD61, + 31407 - 11904: 0xBD60, + 31408 - 11904: 0x8E50, + 31409 - 11904: 0xEAB5, + 31410 - 11904: 0xE6D3, + 31411 - 11904: 0xE6D5, + 31412 - 11904: 0xE6D4, + 31413 - 11904: 0xEAB4, + 31414 - 11904: 0xEAB2, + 31415 - 11904: 0xEAB6, + 31416 - 11904: 0xEAB3, + 31418 - 11904: 0xBF73, + 31419 - 11904: 0x8E4F, + 31420 - 11904: 0x9949, + 31422 - 11904: 0xEDB7, + 31423 - 11904: 0xC14B, + 31424 - 11904: 0xEDB8, + 31425 - 11904: 0xEDB9, + 31426 - 11904: 0x8E51, + 31427 - 11904: 0x8E52, + 31428 - 11904: 0xC2AB, + 31429 - 11904: 0xC2AC, + 31431 - 11904: 0xC475, + 31432 - 11904: 0x9AB2, + 31433 - 11904: 0x89A5, + 31434 - 11904: 0xC5D1, + 31435 - 11904: 0xA5DF, + 31439 - 11904: 0x994C, + 31441 - 11904: 0xD041, + 31443 - 11904: 0x9FF8, + 31448 - 11904: 0xD2FD, + 31449 - 11904: 0xAFB8, + 31450 - 11904: 0x8E56, + 31451 - 11904: 0x994D, + 31452 - 11904: 0x91CA, + 31453 - 11904: 0x8E57, + 31455 - 11904: 0xB3BA, + 31456 - 11904: 0xB3B9, + 31458 - 11904: 0x94E1, + 31459 - 11904: 0xB5A4, + 31460 - 11904: 0xDADD, + 31461 - 11904: 0xB5A3, + 31462 - 11904: 0xDADC, + 31463 - 11904: 0x9047, + 31465 - 11904: 0x8FD8, + 31466 - 11904: 0x8E58, + 31467 - 11904: 0xDF45, + 31469 - 11904: 0xBADC, + 31470 - 11904: 0xE34D, + 31471 - 11904: 0xBADD, + 31478 - 11904: 0xC476, + 31479 - 11904: 0xF4A5, + 31481 - 11904: 0xA6CB, + 31482 - 11904: 0xAAC7, + 31483 - 11904: 0xCDA7, + 31484 - 11904: 0x87A3, + 31485 - 11904: 0xACF2, + 31486 - 11904: 0x94EB, + 31487 - 11904: 0xACF1, + 31488 - 11904: 0xD042, + 31489 - 11904: 0xD043, + 31492 - 11904: 0xD340, + 31493 - 11904: 0xD342, + 31494 - 11904: 0xAFB9, + 31496 - 11904: 0xD344, + 31497 - 11904: 0xD347, + 31498 - 11904: 0xD345, + 31499 - 11904: 0x8E5C, + 31500 - 11904: 0x9553, + 31502 - 11904: 0xD346, + 31503 - 11904: 0xD343, + 31504 - 11904: 0xD2FE, + 31505 - 11904: 0xAFBA, + 31506 - 11904: 0xD348, + 31507 - 11904: 0xD341, + 31508 - 11904: 0x9FE5, + 31512 - 11904: 0xD6D3, + 31513 - 11904: 0xB2C6, + 31514 - 11904: 0xD6DC, + 31515 - 11904: 0xB2C3, + 31517 - 11904: 0xD6D5, + 31518 - 11904: 0xB2C7, + 31519 - 11904: 0x9F56, + 31520 - 11904: 0xB2C1, + 31522 - 11904: 0xD6D0, + 31523 - 11904: 0xD6DD, + 31524 - 11904: 0xD6D1, + 31525 - 11904: 0xD6CE, + 31526 - 11904: 0xB2C5, + 31527 - 11904: 0x954F, + 31528 - 11904: 0xB2C2, + 31529 - 11904: 0x8E5E, + 31530 - 11904: 0xD6D4, + 31531 - 11904: 0xD6D7, + 31532 - 11904: 0xB2C4, + 31533 - 11904: 0xD6D8, + 31534 - 11904: 0xB2C8, + 31535 - 11904: 0xD6D9, + 31536 - 11904: 0xD6CF, + 31537 - 11904: 0xD6D6, + 31538 - 11904: 0xD6DA, + 31539 - 11904: 0xD6D2, + 31540 - 11904: 0xD6CD, + 31541 - 11904: 0xD6CB, + 31544 - 11904: 0xD6DB, + 31545 - 11904: 0x996A, + 31547 - 11904: 0xDADF, + 31552 - 11904: 0xDAE4, + 31554 - 11904: 0x9C64, + 31555 - 11904: 0x9CD9, + 31556 - 11904: 0xDAE0, + 31557 - 11904: 0xDAE6, + 31558 - 11904: 0xB5A7, + 31559 - 11904: 0xD6CC, + 31560 - 11904: 0xDAE1, + 31561 - 11904: 0xB5A5, + 31562 - 11904: 0xDADE, + 31563 - 11904: 0xB5AC, + 31564 - 11904: 0xDAE2, + 31565 - 11904: 0xB5AB, + 31566 - 11904: 0xDAE3, + 31567 - 11904: 0xB5AD, + 31568 - 11904: 0xB5A8, + 31569 - 11904: 0xB5AE, + 31570 - 11904: 0xB5A9, + 31572 - 11904: 0xB5AA, + 31573 - 11904: 0x8E5D, + 31574 - 11904: 0xB5A6, + 31576 - 11904: 0xDAE5, + 31584 - 11904: 0xB861, + 31585 - 11904: 0xDF50, + 31586 - 11904: 0x9950, + 31587 - 11904: 0xDF53, + 31588 - 11904: 0xDF47, + 31589 - 11904: 0xDF4C, + 31590 - 11904: 0xDF46, + 31591 - 11904: 0xB863, + 31593 - 11904: 0xDF4A, + 31596 - 11904: 0x9951, + 31597 - 11904: 0xDF48, + 31598 - 11904: 0xB862, + 31599 - 11904: 0x8E62, + 31600 - 11904: 0xDF4F, + 31601 - 11904: 0xDF4E, + 31602 - 11904: 0xDF4B, + 31603 - 11904: 0xDF4D, + 31604 - 11904: 0xDF49, + 31605 - 11904: 0xBAE1, + 31606 - 11904: 0xDF52, + 31607 - 11904: 0xB85F, + 31608 - 11904: 0xDF51, + 31611 - 11904: 0x9952, + 31618 - 11904: 0xE35D, + 31620 - 11904: 0xBAE8, + 31621 - 11904: 0xE358, + 31623 - 11904: 0xBAE7, + 31624 - 11904: 0xE34E, + 31626 - 11904: 0xE350, + 31627 - 11904: 0xBAE0, + 31628 - 11904: 0xE355, + 31629 - 11904: 0xE354, + 31630 - 11904: 0xE357, + 31631 - 11904: 0xBAE5, + 31632 - 11904: 0xE352, + 31633 - 11904: 0xE351, + 31634 - 11904: 0x8E68, + 31636 - 11904: 0xBAE4, + 31637 - 11904: 0xBADF, + 31638 - 11904: 0xE353, + 31639 - 11904: 0xBAE2, + 31640 - 11904: 0xE359, + 31641 - 11904: 0xE35B, + 31643 - 11904: 0xE356, + 31644 - 11904: 0xE34F, + 31645 - 11904: 0xBAE3, + 31648 - 11904: 0xBD69, + 31649 - 11904: 0xBADE, + 31650 - 11904: 0x8E61, + 31651 - 11904: 0x9F59, + 31652 - 11904: 0xE35C, + 31660 - 11904: 0xE6D9, + 31661 - 11904: 0xBD62, + 31662 - 11904: 0x87D0, + 31663 - 11904: 0xE6DB, + 31665 - 11904: 0xBD63, + 31666 - 11904: 0x8BB3, + 31668 - 11904: 0xBD65, + 31669 - 11904: 0xE6DE, + 31671 - 11904: 0xE6D6, + 31672 - 11904: 0xBAE6, + 31673 - 11904: 0xE6DC, + 31678 - 11904: 0xE6D8, + 31680 - 11904: 0xB860, + 31681 - 11904: 0xBD68, + 31684 - 11904: 0xBD64, + 31685 - 11904: 0x87B9, + 31686 - 11904: 0xBD66, + 31687 - 11904: 0xBD67, + 31689 - 11904: 0xBF76, + 31690 - 11904: 0xE6DD, + 31691 - 11904: 0xE6D7, + 31692 - 11904: 0xBD6A, + 31694 - 11904: 0xE6DA, + 31695 - 11904: 0x9F5D, + 31696 - 11904: 0x8E66, + 31700 - 11904: 0xEAC0, + 31701 - 11904: 0xEABB, + 31704 - 11904: 0xEAC5, + 31705 - 11904: 0xBF74, + 31706 - 11904: 0xEABD, + 31707 - 11904: 0xBF78, + 31708 - 11904: 0xEAC3, + 31709 - 11904: 0xEABA, + 31710 - 11904: 0xEAB7, + 31711 - 11904: 0xEAC6, + 31712 - 11904: 0xC151, + 31713 - 11904: 0xBF79, + 31714 - 11904: 0xEAC2, + 31715 - 11904: 0xEAB8, + 31716 - 11904: 0xBF77, + 31717 - 11904: 0xEABC, + 31718 - 11904: 0xBF7B, + 31719 - 11904: 0xEAB9, + 31720 - 11904: 0xEABE, + 31721 - 11904: 0xBF7A, + 31722 - 11904: 0xEAC1, + 31723 - 11904: 0xEAC4, + 31724 - 11904: 0x8CB2, + 31728 - 11904: 0xEDCB, + 31729 - 11904: 0xEDCC, + 31730 - 11904: 0xEDBC, + 31731 - 11904: 0xEDC3, + 31732 - 11904: 0xEDC1, + 31735 - 11904: 0xC14F, + 31736 - 11904: 0xEDC8, + 31737 - 11904: 0xEABF, + 31738 - 11904: 0x8E6E, + 31739 - 11904: 0xEDBF, + 31740 - 11904: 0x9F64, + 31741 - 11904: 0xEDC9, + 31742 - 11904: 0xC14E, + 31743 - 11904: 0xEDBE, + 31744 - 11904: 0xEDBD, + 31745 - 11904: 0xEDC7, + 31746 - 11904: 0xEDC4, + 31747 - 11904: 0xEDC6, + 31749 - 11904: 0xEDBA, + 31750 - 11904: 0xEDCA, + 31751 - 11904: 0xC14C, + 31753 - 11904: 0xEDC5, + 31754 - 11904: 0xEDCE, + 31755 - 11904: 0xEDC2, + 31756 - 11904: 0xC150, + 31757 - 11904: 0xC14D, + 31758 - 11904: 0xEDC0, + 31759 - 11904: 0xEDBB, + 31760 - 11904: 0xEDCD, + 31761 - 11904: 0xBF75, + 31762 - 11904: 0x9953, + 31765 - 11904: 0xFAB8, + 31769 - 11904: 0xF063, + 31771 - 11904: 0x9954, + 31772 - 11904: 0xF061, + 31773 - 11904: 0xF067, + 31774 - 11904: 0xC2B0, + 31775 - 11904: 0xF065, + 31776 - 11904: 0xF064, + 31777 - 11904: 0xC2B2, + 31778 - 11904: 0xF06A, + 31779 - 11904: 0xC2B1, + 31781 - 11904: 0xF06B, + 31782 - 11904: 0xF068, + 31783 - 11904: 0xC2AE, + 31784 - 11904: 0xF069, + 31785 - 11904: 0xF062, + 31786 - 11904: 0xC2AF, + 31787 - 11904: 0xC2AD, + 31788 - 11904: 0xF2AB, + 31789 - 11904: 0xF066, + 31792 - 11904: 0xF06C, + 31795 - 11904: 0xF2A8, + 31797 - 11904: 0x8E70, + 31799 - 11904: 0xC3B2, + 31800 - 11904: 0xC3B0, + 31801 - 11904: 0xF2AA, + 31803 - 11904: 0xF2AC, + 31804 - 11904: 0xF2A9, + 31805 - 11904: 0xC3B1, + 31806 - 11904: 0xC3AE, + 31807 - 11904: 0xC3AF, + 31808 - 11904: 0xC3B3, + 31810 - 11904: 0x9F61, + 31811 - 11904: 0xC478, + 31812 - 11904: 0x8E72, + 31813 - 11904: 0xF4AA, + 31815 - 11904: 0xF4A9, + 31816 - 11904: 0xF4A7, + 31817 - 11904: 0xF4A6, + 31818 - 11904: 0xF4A8, + 31820 - 11904: 0xC477, + 31821 - 11904: 0xC479, + 31824 - 11904: 0xC4F0, + 31825 - 11904: 0xA06B, + 31827 - 11904: 0xF5E5, + 31828 - 11904: 0xF5E4, + 31830 - 11904: 0x9F40, + 31831 - 11904: 0xF6FA, + 31833 - 11904: 0xF6FC, + 31834 - 11904: 0xF6FE, + 31835 - 11904: 0xF6FD, + 31836 - 11904: 0xF6FB, + 31837 - 11904: 0x94ED, + 31839 - 11904: 0xC5A3, + 31840 - 11904: 0xC5A2, + 31843 - 11904: 0xC5D3, + 31844 - 11904: 0xC5D2, + 31845 - 11904: 0xC5D4, + 31846 - 11904: 0xF7ED, + 31847 - 11904: 0xF7EC, + 31849 - 11904: 0xF8FB, + 31850 - 11904: 0xF8B8, + 31851 - 11904: 0xF8FC, + 31852 - 11904: 0xC658, + 31853 - 11904: 0x94EE, + 31854 - 11904: 0xC659, + 31855 - 11904: 0xF96D, + 31856 - 11904: 0x9FBD, + 31858 - 11904: 0xC67E, + 31859 - 11904: 0xA6CC, + 31860 - 11904: 0x8E7B, + 31861 - 11904: 0xCDA8, + 31864 - 11904: 0xD045, + 31865 - 11904: 0xD046, + 31866 - 11904: 0xD044, + 31867 - 11904: 0x9957, + 31868 - 11904: 0x94F7, + 31869 - 11904: 0xACF3, + 31870 - 11904: 0x9F5F, + 31871 - 11904: 0xD047, + 31872 - 11904: 0xD048, + 31873 - 11904: 0xD049, + 31875 - 11904: 0x8E73, + 31876 - 11904: 0xD349, + 31877 - 11904: 0xD34F, + 31878 - 11904: 0x9F62, + 31880 - 11904: 0xD34D, + 31881 - 11904: 0xAFBB, + 31882 - 11904: 0xD34B, + 31884 - 11904: 0xD34C, + 31885 - 11904: 0xD34E, + 31886 - 11904: 0x94F6, + 31889 - 11904: 0xD34A, + 31890 - 11904: 0xB2C9, + 31892 - 11904: 0xD6DE, + 31893 - 11904: 0xB2CB, + 31894 - 11904: 0xD6E0, + 31895 - 11904: 0xB2CA, + 31896 - 11904: 0xD6DF, + 31900 - 11904: 0x9958, + 31902 - 11904: 0xDAE8, + 31903 - 11904: 0xB5AF, + 31905 - 11904: 0xDAEA, + 31906 - 11904: 0xDAE7, + 31907 - 11904: 0xD6E1, + 31909 - 11904: 0xB5B0, + 31910 - 11904: 0x8E75, + 31911 - 11904: 0xF9DB, + 31912 - 11904: 0xDAE9, + 31916 - 11904: 0x9072, + 31918 - 11904: 0x94F8, + 31919 - 11904: 0xDF56, + 31921 - 11904: 0xB864, + 31922 - 11904: 0xDF54, + 31923 - 11904: 0xB865, + 31924 - 11904: 0xDF55, + 31925 - 11904: 0xB866, + 31928 - 11904: 0x995A, + 31929 - 11904: 0xBAE9, + 31930 - 11904: 0xE361, + 31931 - 11904: 0xE35E, + 31932 - 11904: 0xE360, + 31933 - 11904: 0xBAEA, + 31934 - 11904: 0xBAEB, + 31935 - 11904: 0xE35F, + 31938 - 11904: 0xA0B0, + 31939 - 11904: 0x8CB3, + 31941 - 11904: 0xE6DF, + 31943 - 11904: 0x8E79, + 31944 - 11904: 0xE6E0, + 31945 - 11904: 0x8E78, + 31946 - 11904: 0xBD6B, + 31947 - 11904: 0xE6E2, + 31948 - 11904: 0xE6E1, + 31949 - 11904: 0x94F3, + 31950 - 11904: 0xA261, + 31952 - 11904: 0xEACA, + 31953 - 11904: 0xEACB, + 31954 - 11904: 0xEAC7, + 31955 - 11904: 0x98AF, + 31956 - 11904: 0xEAC8, + 31957 - 11904: 0xBF7C, + 31958 - 11904: 0xBF7D, + 31959 - 11904: 0xEAC9, + 31961 - 11904: 0xC157, + 31962 - 11904: 0xA0B2, + 31964 - 11904: 0xC153, + 31965 - 11904: 0xC158, + 31966 - 11904: 0xC154, + 31967 - 11904: 0xC156, + 31968 - 11904: 0xC152, + 31970 - 11904: 0xC155, + 31974 - 11904: 0x8E7A, + 31975 - 11904: 0xC2B3, + 31976 - 11904: 0xEDCF, + 31978 - 11904: 0xF2AE, + 31980 - 11904: 0xF2AD, + 31981 - 11904: 0x995C, + 31982 - 11904: 0xF4AB, + 31983 - 11904: 0xC47A, + 31984 - 11904: 0xC47B, + 31985 - 11904: 0xF741, + 31986 - 11904: 0xF5E6, + 31987 - 11904: 0x8E7C, + 31988 - 11904: 0xF740, + 31989 - 11904: 0x8E7D, + 31990 - 11904: 0xF8FD, + 31991 - 11904: 0xF9A4, + 31992 - 11904: 0xA6CD, + 31993 - 11904: 0x8BD9, + 31995 - 11904: 0xA874, + 31996 - 11904: 0x89A2, + 31997 - 11904: 0xCDA9, + 31998 - 11904: 0xAAC8, + 32000 - 11904: 0xACF6, + 32001 - 11904: 0xD04C, + 32002 - 11904: 0xACF4, + 32003 - 11904: 0xD04A, + 32004 - 11904: 0xACF9, + 32005 - 11904: 0xACF5, + 32006 - 11904: 0xACFA, + 32007 - 11904: 0xACF8, + 32008 - 11904: 0xD04B, + 32009 - 11904: 0xACF7, + 32010 - 11904: 0xAFBF, + 32011 - 11904: 0xAFBE, + 32012 - 11904: 0xD35A, + 32013 - 11904: 0xAFC7, + 32014 - 11904: 0xD353, + 32015 - 11904: 0xD359, + 32016 - 11904: 0xAFC3, + 32017 - 11904: 0xD352, + 32018 - 11904: 0xD358, + 32019 - 11904: 0xD356, + 32020 - 11904: 0xAFC2, + 32021 - 11904: 0xAFC4, + 32022 - 11904: 0xD355, + 32023 - 11904: 0xAFBD, + 32024 - 11904: 0xD354, + 32025 - 11904: 0xAFC8, + 32026 - 11904: 0xAFC5, + 32027 - 11904: 0xAFC9, + 32028 - 11904: 0xAFC6, + 32029 - 11904: 0xD351, + 32030 - 11904: 0xD350, + 32031 - 11904: 0xD357, + 32032 - 11904: 0xAFC0, + 32033 - 11904: 0xAFBC, + 32034 - 11904: 0xAFC1, + 32037 - 11904: 0x9ED7, + 32040 - 11904: 0xD6F0, + 32041 - 11904: 0xD6E9, + 32043 - 11904: 0xB5B5, + 32044 - 11904: 0xD6E8, + 32046 - 11904: 0xB2CF, + 32047 - 11904: 0xB2D6, + 32048 - 11904: 0xB2D3, + 32049 - 11904: 0xB2D9, + 32050 - 11904: 0xB2D8, + 32051 - 11904: 0xB2D4, + 32053 - 11904: 0xD6E2, + 32054 - 11904: 0xD6E5, + 32056 - 11904: 0xD6E4, + 32057 - 11904: 0xB2D0, + 32058 - 11904: 0xD6E6, + 32059 - 11904: 0xD6EF, + 32060 - 11904: 0xB2D1, + 32061 - 11904: 0xD6E3, + 32062 - 11904: 0xD6EC, + 32063 - 11904: 0xD6ED, + 32064 - 11904: 0xB2D2, + 32065 - 11904: 0xD6EA, + 32066 - 11904: 0xB2D7, + 32067 - 11904: 0xB2CD, + 32068 - 11904: 0xB2D5, + 32069 - 11904: 0xD6E7, + 32070 - 11904: 0xB2CC, + 32071 - 11904: 0xD6EB, + 32074 - 11904: 0xD6EE, + 32077 - 11904: 0xA0B6, + 32078 - 11904: 0xDAFB, + 32079 - 11904: 0xDAF2, + 32080 - 11904: 0xB5B2, + 32081 - 11904: 0xDAF9, + 32082 - 11904: 0xDAF6, + 32083 - 11904: 0xDAEE, + 32084 - 11904: 0xDAF7, + 32085 - 11904: 0xB5B4, + 32086 - 11904: 0xDAEF, + 32088 - 11904: 0xDAEB, + 32090 - 11904: 0x9E42, + 32091 - 11904: 0xB86C, + 32092 - 11904: 0xDAF4, + 32093 - 11904: 0x8EA4, + 32094 - 11904: 0xB5B1, + 32095 - 11904: 0xDAFA, + 32097 - 11904: 0xB5B8, + 32098 - 11904: 0xB5BA, + 32099 - 11904: 0xDAED, + 32102 - 11904: 0xB5B9, + 32103 - 11904: 0xDAF0, + 32104 - 11904: 0xB5B3, + 32105 - 11904: 0xDAF8, + 32106 - 11904: 0xDAF1, + 32107 - 11904: 0xDAF5, + 32109 - 11904: 0xDAF3, + 32110 - 11904: 0xB5B6, + 32111 - 11904: 0xDAEC, + 32112 - 11904: 0xB5BB, + 32113 - 11904: 0xB2CE, + 32114 - 11904: 0xB5B7, + 32115 - 11904: 0xB5BC, + 32121 - 11904: 0xB868, + 32122 - 11904: 0xDF5D, + 32123 - 11904: 0xDF5F, + 32124 - 11904: 0xDF61, + 32125 - 11904: 0xDF65, + 32127 - 11904: 0xDF5B, + 32128 - 11904: 0xDF59, + 32129 - 11904: 0xB86A, + 32131 - 11904: 0xDF60, + 32132 - 11904: 0xDF64, + 32133 - 11904: 0xDF5C, + 32134 - 11904: 0xDF58, + 32136 - 11904: 0xDF57, + 32137 - 11904: 0x8EA7, + 32139 - 11904: 0x8C76, + 32140 - 11904: 0xDF62, + 32141 - 11904: 0xDF5A, + 32142 - 11904: 0xDF5E, + 32143 - 11904: 0xB86B, + 32145 - 11904: 0xB869, + 32146 - 11904: 0xDF66, + 32147 - 11904: 0xB867, + 32148 - 11904: 0xDF63, + 32149 - 11904: 0x8767, + 32150 - 11904: 0xE372, + 32151 - 11904: 0x9542, + 32156 - 11904: 0xBAEE, + 32157 - 11904: 0xE36A, + 32158 - 11904: 0xBD78, + 32159 - 11904: 0xE374, + 32160 - 11904: 0xBAF1, + 32161 - 11904: 0xE378, + 32162 - 11904: 0xBAF7, + 32163 - 11904: 0xE365, + 32164 - 11904: 0x987D, + 32166 - 11904: 0xE375, + 32167 - 11904: 0xE362, + 32168 - 11904: 0x9755, + 32169 - 11904: 0xE377, + 32170 - 11904: 0xE366, + 32171 - 11904: 0x8EA8, + 32172 - 11904: 0xBAFE, + 32173 - 11904: 0xBAFB, + 32174 - 11904: 0xE376, + 32175 - 11904: 0xE370, + 32176 - 11904: 0xBAED, + 32177 - 11904: 0xBAF5, + 32178 - 11904: 0xBAF4, + 32179 - 11904: 0x8EAA, + 32180 - 11904: 0xBAF3, + 32181 - 11904: 0xBAF9, + 32183 - 11904: 0xE363, + 32184 - 11904: 0xBAFA, + 32185 - 11904: 0xE371, + 32186 - 11904: 0xBAF6, + 32187 - 11904: 0xBAEC, + 32188 - 11904: 0xE373, + 32189 - 11904: 0xBAEF, + 32190 - 11904: 0xBAF0, + 32191 - 11904: 0xBAF8, + 32192 - 11904: 0xE368, + 32193 - 11904: 0xE367, + 32194 - 11904: 0xE364, + 32196 - 11904: 0xE36C, + 32197 - 11904: 0xE369, + 32198 - 11904: 0xE36D, + 32199 - 11904: 0xBAFD, + 32201 - 11904: 0xE379, + 32202 - 11904: 0xBAF2, + 32203 - 11904: 0xE36E, + 32204 - 11904: 0xE36F, + 32205 - 11904: 0x89A3, + 32206 - 11904: 0xE36B, + 32207 - 11904: 0x9960, + 32208 - 11904: 0x9962, + 32210 - 11904: 0xBAFC, + 32211 - 11904: 0x94FC, + 32212 - 11904: 0x9961, + 32215 - 11904: 0xE6E7, + 32216 - 11904: 0xBD70, + 32217 - 11904: 0xBD79, + 32218 - 11904: 0xBD75, + 32219 - 11904: 0xE6E4, + 32220 - 11904: 0x94FA, + 32221 - 11904: 0xBD72, + 32222 - 11904: 0xBD76, + 32223 - 11904: 0xE6F0, + 32224 - 11904: 0xBD6C, + 32225 - 11904: 0xE6E8, + 32227 - 11904: 0xBD74, + 32228 - 11904: 0x8EAE, + 32229 - 11904: 0x8EB2, + 32230 - 11904: 0xE6EB, + 32231 - 11904: 0xE6E6, + 32232 - 11904: 0xBD73, + 32233 - 11904: 0xBD77, + 32234 - 11904: 0xE6E5, + 32236 - 11904: 0xBD71, + 32238 - 11904: 0xE6EF, + 32239 - 11904: 0xBD6E, + 32240 - 11904: 0xE6EE, + 32241 - 11904: 0xE6ED, + 32242 - 11904: 0xBD7A, + 32243 - 11904: 0xE572, + 32244 - 11904: 0xBD6D, + 32245 - 11904: 0x8EB0, + 32246 - 11904: 0xE6EC, + 32247 - 11904: 0xE6E3, + 32249 - 11904: 0xBD7B, + 32250 - 11904: 0xE6EA, + 32251 - 11904: 0xBD6F, + 32253 - 11904: 0x9963, + 32254 - 11904: 0x97AA, + 32259 - 11904: 0xE6E9, + 32263 - 11904: 0x94FB, + 32264 - 11904: 0xBFA2, + 32265 - 11904: 0xBFA7, + 32266 - 11904: 0xBF7E, + 32267 - 11904: 0xEAD8, + 32268 - 11904: 0xEACF, + 32269 - 11904: 0xEADB, + 32270 - 11904: 0xEAD3, + 32271 - 11904: 0xEAD9, + 32272 - 11904: 0xBFA8, + 32273 - 11904: 0xBFA1, + 32274 - 11904: 0xEACC, + 32275 - 11904: 0xEAD2, + 32276 - 11904: 0xEADC, + 32277 - 11904: 0xEAD5, + 32278 - 11904: 0xEADA, + 32279 - 11904: 0xEACE, + 32282 - 11904: 0xEAD6, + 32283 - 11904: 0xBFA3, + 32284 - 11904: 0xEAD4, + 32285 - 11904: 0xBFA6, + 32286 - 11904: 0xBFA5, + 32287 - 11904: 0xEAD0, + 32288 - 11904: 0xEAD1, + 32289 - 11904: 0xEACD, + 32290 - 11904: 0xEAD7, + 32291 - 11904: 0xBFA4, + 32292 - 11904: 0xEADE, + 32293 - 11904: 0xEADD, + 32295 - 11904: 0x8EBB, + 32297 - 11904: 0xEDDA, + 32298 - 11904: 0xEDD6, + 32299 - 11904: 0xC15F, + 32301 - 11904: 0xEDD0, + 32302 - 11904: 0xC159, + 32303 - 11904: 0xC169, + 32304 - 11904: 0xEDDC, + 32305 - 11904: 0xC161, + 32306 - 11904: 0xC15D, + 32307 - 11904: 0xEDD3, + 32308 - 11904: 0xC164, + 32309 - 11904: 0xC167, + 32310 - 11904: 0xEDDE, + 32311 - 11904: 0xC15C, + 32312 - 11904: 0xEDD5, + 32313 - 11904: 0xC165, + 32314 - 11904: 0xEDE0, + 32315 - 11904: 0xEDDD, + 32316 - 11904: 0xEDD1, + 32317 - 11904: 0xC160, + 32318 - 11904: 0xC15A, + 32319 - 11904: 0xC168, + 32320 - 11904: 0xEDD8, + 32321 - 11904: 0xC163, + 32322 - 11904: 0xEDD2, + 32323 - 11904: 0xC15E, + 32324 - 11904: 0xEDDF, + 32325 - 11904: 0xC162, + 32326 - 11904: 0xC15B, + 32327 - 11904: 0xEDD9, + 32328 - 11904: 0xC166, + 32329 - 11904: 0xEDD7, + 32332 - 11904: 0xEDDB, + 32336 - 11904: 0xF06E, + 32337 - 11904: 0xF074, + 32338 - 11904: 0xC2B9, + 32339 - 11904: 0xF077, + 32340 - 11904: 0xC2B4, + 32341 - 11904: 0xC2B5, + 32342 - 11904: 0xF06F, + 32343 - 11904: 0xF076, + 32344 - 11904: 0xF071, + 32345 - 11904: 0xC2BA, + 32346 - 11904: 0xC2B7, + 32347 - 11904: 0x8CDC, + 32348 - 11904: 0xF06D, + 32350 - 11904: 0xC2B6, + 32351 - 11904: 0xF073, + 32352 - 11904: 0xF075, + 32353 - 11904: 0xC2B8, + 32354 - 11904: 0xF072, + 32355 - 11904: 0xF070, + 32357 - 11904: 0x9876, + 32359 - 11904: 0x8EA1, + 32360 - 11904: 0xF2B8, + 32361 - 11904: 0xC3B7, + 32362 - 11904: 0xC3B8, + 32363 - 11904: 0xC3B4, + 32364 - 11904: 0x8CB4, + 32365 - 11904: 0xC3B5, + 32366 - 11904: 0x8EB7, + 32367 - 11904: 0xF2B4, + 32368 - 11904: 0xF2B2, + 32370 - 11904: 0xF2B6, + 32371 - 11904: 0xC3BA, + 32372 - 11904: 0xF2B7, + 32373 - 11904: 0xF2B0, + 32374 - 11904: 0xF2AF, + 32375 - 11904: 0xF2B3, + 32376 - 11904: 0xF2B1, + 32377 - 11904: 0xC3B6, + 32378 - 11904: 0xF2B5, + 32379 - 11904: 0xF4AC, + 32380 - 11904: 0xC47E, + 32381 - 11904: 0xC47D, + 32382 - 11904: 0xF4AD, + 32383 - 11904: 0x9DA6, + 32384 - 11904: 0xF4AF, + 32385 - 11904: 0xF4AE, + 32386 - 11904: 0xC4A1, + 32390 - 11904: 0xF5EB, + 32391 - 11904: 0xF5E8, + 32392 - 11904: 0xF5E9, + 32394 - 11904: 0xF5E7, + 32395 - 11904: 0xF5EA, + 32396 - 11904: 0xC4F2, + 32397 - 11904: 0xF5EC, + 32398 - 11904: 0x9EB0, + 32399 - 11904: 0xC4F1, + 32401 - 11904: 0xF742, + 32402 - 11904: 0x8EB8, + 32403 - 11904: 0xC5D5, + 32404 - 11904: 0xC5D7, + 32405 - 11904: 0xF7EE, + 32406 - 11904: 0xC5D6, + 32407 - 11904: 0xF8B9, + 32408 - 11904: 0xF940, + 32409 - 11904: 0xF942, + 32410 - 11904: 0xF8FE, + 32411 - 11904: 0xF941, + 32412 - 11904: 0xC66C, + 32415 - 11904: 0x9D70, + 32420 - 11904: 0x896E, + 32428 - 11904: 0x896F, + 32442 - 11904: 0x8970, + 32455 - 11904: 0x8971, + 32463 - 11904: 0x8972, + 32479 - 11904: 0x8973, + 32518 - 11904: 0x8974, + 32566 - 11904: 0xA6CE, + 32567 - 11904: 0x8975, + 32568 - 11904: 0xACFB, + 32569 - 11904: 0xD26F, + 32570 - 11904: 0xAFCA, + 32573 - 11904: 0xB2DA, + 32574 - 11904: 0xDAFC, + 32575 - 11904: 0xDAFD, + 32576 - 11904: 0x8EBC, + 32577 - 11904: 0x8EBD, + 32579 - 11904: 0xEADF, + 32580 - 11904: 0xC16A, + 32581 - 11904: 0xEDE1, + 32583 - 11904: 0x8EBE, + 32584 - 11904: 0xC2BB, + 32585 - 11904: 0x9DD1, + 32586 - 11904: 0xF2BA, + 32587 - 11904: 0xF2B9, + 32588 - 11904: 0xC4A2, + 32589 - 11904: 0xF5ED, + 32590 - 11904: 0x94FD, + 32591 - 11904: 0xF743, + 32592 - 11904: 0xC5F8, + 32593 - 11904: 0xCA49, + 32594 - 11904: 0x8BD7, + 32595 - 11904: 0x8BDA, + 32596 - 11904: 0xAAC9, + 32597 - 11904: 0xA875, + 32600 - 11904: 0xD04D, + 32603 - 11904: 0xD360, + 32604 - 11904: 0xD35B, + 32605 - 11904: 0xD35F, + 32606 - 11904: 0xD35D, + 32607 - 11904: 0xAFCB, + 32608 - 11904: 0xD35E, + 32609 - 11904: 0xD35C, + 32611 - 11904: 0xD6F1, + 32613 - 11904: 0xDAFE, + 32614 - 11904: 0xDB40, + 32615 - 11904: 0xDF69, + 32616 - 11904: 0xDF6A, + 32617 - 11904: 0xB86E, + 32618 - 11904: 0xB86F, + 32619 - 11904: 0xDF68, + 32620 - 11904: 0xDF6B, + 32621 - 11904: 0xDF67, + 32622 - 11904: 0xB86D, + 32624 - 11904: 0xBB40, + 32625 - 11904: 0xA0E2, + 32626 - 11904: 0xB870, + 32627 - 11904: 0xE37A, + 32629 - 11904: 0xBD7C, + 32630 - 11904: 0xE6F1, + 32631 - 11904: 0xBD7D, + 32632 - 11904: 0x9FE9, + 32633 - 11904: 0xBFA9, + 32634 - 11904: 0xEAE2, + 32635 - 11904: 0xEAE0, + 32636 - 11904: 0xEAE1, + 32637 - 11904: 0xEDE4, + 32638 - 11904: 0xEDE3, + 32639 - 11904: 0xEDE2, + 32643 - 11904: 0xF2BB, + 32645 - 11904: 0xC3B9, + 32646 - 11904: 0xF2BC, + 32647 - 11904: 0xF744, + 32648 - 11904: 0xC5F9, + 32649 - 11904: 0xF8BA, + 32650 - 11904: 0xA6CF, + 32651 - 11904: 0xAACB, + 32652 - 11904: 0xAACA, + 32653 - 11904: 0xD04F, + 32654 - 11904: 0xACFC, + 32655 - 11904: 0xFDA8, + 32657 - 11904: 0xD04E, + 32658 - 11904: 0xD362, + 32659 - 11904: 0x8AE7, + 32660 - 11904: 0xAFCC, + 32661 - 11904: 0xD6F2, + 32662 - 11904: 0xD361, + 32663 - 11904: 0x8EC2, + 32666 - 11904: 0xB2DC, + 32667 - 11904: 0xD6F5, + 32668 - 11904: 0xD6F3, + 32669 - 11904: 0xD6F4, + 32670 - 11904: 0xB2DB, + 32672 - 11904: 0xDB42, + 32673 - 11904: 0xDB43, + 32674 - 11904: 0xDB41, + 32675 - 11904: 0x8EC4, + 32676 - 11904: 0xB873, + 32677 - 11904: 0xDF6D, + 32678 - 11904: 0xDF6C, + 32679 - 11904: 0xDF6E, + 32680 - 11904: 0xB872, + 32681 - 11904: 0xB871, + 32684 - 11904: 0xE6F2, + 32685 - 11904: 0xE6F4, + 32686 - 11904: 0x9964, + 32687 - 11904: 0xBD7E, + 32688 - 11904: 0xE6F3, + 32689 - 11904: 0xEAE3, + 32690 - 11904: 0xBFAA, + 32691 - 11904: 0xF079, + 32692 - 11904: 0x9965, + 32693 - 11904: 0xF078, + 32694 - 11904: 0xC3BB, + 32695 - 11904: 0xF2BD, + 32696 - 11904: 0xC3BD, + 32697 - 11904: 0xC3BC, + 32698 - 11904: 0xF4B0, + 32699 - 11904: 0xF5EE, + 32700 - 11904: 0xC4F3, + 32701 - 11904: 0xA6D0, + 32702 - 11904: 0xD050, + 32703 - 11904: 0xACFD, + 32704 - 11904: 0xD365, + 32705 - 11904: 0xAFCE, + 32706 - 11904: 0xD364, + 32707 - 11904: 0xD363, + 32709 - 11904: 0xAFCD, + 32711 - 11904: 0xD6FB, + 32713 - 11904: 0xD6FD, + 32714 - 11904: 0xD6F6, + 32715 - 11904: 0xD6F7, + 32716 - 11904: 0xB2DD, + 32717 - 11904: 0xD6F8, + 32718 - 11904: 0xB2DE, + 32719 - 11904: 0xD6FC, + 32720 - 11904: 0xD6F9, + 32721 - 11904: 0xD6FA, + 32722 - 11904: 0xB2DF, + 32724 - 11904: 0xB5BE, + 32725 - 11904: 0xB5BF, + 32727 - 11904: 0xDB44, + 32731 - 11904: 0xDF6F, + 32732 - 11904: 0xDF70, + 32733 - 11904: 0x954E, + 32734 - 11904: 0xE37E, + 32735 - 11904: 0xBB43, + 32736 - 11904: 0xBB41, + 32737 - 11904: 0xBB42, + 32738 - 11904: 0xE37B, + 32739 - 11904: 0xE37C, + 32741 - 11904: 0xE37D, + 32742 - 11904: 0xE6F9, + 32743 - 11904: 0x98B3, + 32744 - 11904: 0xE6FA, + 32745 - 11904: 0xBDA1, + 32746 - 11904: 0xE6F7, + 32747 - 11904: 0xE6F6, + 32748 - 11904: 0xE6F8, + 32749 - 11904: 0xE6F5, + 32750 - 11904: 0xBFAD, + 32751 - 11904: 0xEAE4, + 32752 - 11904: 0xBFAB, + 32753 - 11904: 0xBFAC, + 32754 - 11904: 0xEDE6, + 32755 - 11904: 0xC16B, + 32756 - 11904: 0xEDE5, + 32757 - 11904: 0xEFA8, + 32759 - 11904: 0xF07A, + 32760 - 11904: 0xF07B, + 32761 - 11904: 0xC2BC, + 32762 - 11904: 0x8ECB, + 32763 - 11904: 0xC2BD, + 32764 - 11904: 0xC16C, + 32765 - 11904: 0xF2BE, + 32766 - 11904: 0xF2BF, + 32767 - 11904: 0xF4B1, + 32768 - 11904: 0xC4A3, + 32769 - 11904: 0xA6D1, + 32770 - 11904: 0x8BDF, + 32771 - 11904: 0xA6D2, + 32772 - 11904: 0xACFE, + 32773 - 11904: 0xAACC, + 32774 - 11904: 0xAFCF, + 32775 - 11904: 0xD051, + 32776 - 11904: 0x8ECE, + 32779 - 11904: 0xB5C0, + 32780 - 11904: 0xA6D3, + 32781 - 11904: 0xAD41, + 32782 - 11904: 0xD052, + 32783 - 11904: 0xD053, + 32784 - 11904: 0xAD40, + 32785 - 11904: 0xAD42, + 32786 - 11904: 0xA6D4, + 32788 - 11904: 0xD054, + 32789 - 11904: 0xAFD1, + 32790 - 11904: 0xD366, + 32791 - 11904: 0xAFD3, + 32792 - 11904: 0xAFD0, + 32793 - 11904: 0xAFD2, + 32795 - 11904: 0xD741, + 32796 - 11904: 0xB2E0, + 32797 - 11904: 0x8ECF, + 32798 - 11904: 0xD740, + 32799 - 11904: 0xD6FE, + 32800 - 11904: 0x9968, + 32801 - 11904: 0xDF71, + 32804 - 11904: 0xE3A1, + 32805 - 11904: 0x9969, + 32806 - 11904: 0xBDA2, + 32808 - 11904: 0xBFAE, + 32809 - 11904: 0xEAE6, + 32810 - 11904: 0xEAE5, + 32812 - 11904: 0xEDE7, + 32814 - 11904: 0x996B, + 32815 - 11904: 0x8ED1, + 32816 - 11904: 0xF5EF, + 32817 - 11904: 0x996C, + 32819 - 11904: 0xA6D5, + 32820 - 11904: 0xCB73, + 32821 - 11904: 0xCDAA, + 32822 - 11904: 0xAD43, + 32823 - 11904: 0xD055, + 32825 - 11904: 0xD368, + 32827 - 11904: 0x8ED4, + 32828 - 11904: 0x8ED5, + 32829 - 11904: 0xAFD4, + 32830 - 11904: 0xD367, + 32831 - 11904: 0xAFD5, + 32835 - 11904: 0xD743, + 32838 - 11904: 0xB2E2, + 32839 - 11904: 0xD742, + 32840 - 11904: 0xD744, + 32842 - 11904: 0xB2E1, + 32847 - 11904: 0xDB46, + 32848 - 11904: 0xDB47, + 32849 - 11904: 0xDB45, + 32850 - 11904: 0xB5C1, + 32852 - 11904: 0x996D, + 32854 - 11904: 0xB874, + 32856 - 11904: 0xB875, + 32858 - 11904: 0xBB45, + 32859 - 11904: 0xA0BE, + 32860 - 11904: 0xE3A3, + 32861 - 11904: 0xE3A2, + 32862 - 11904: 0xBB44, + 32865 - 11904: 0x8ED6, + 32866 - 11904: 0xA0BC, + 32867 - 11904: 0xA0B5, + 32868 - 11904: 0xE6FB, + 32870 - 11904: 0xA0B4, + 32871 - 11904: 0xE6FC, + 32876 - 11904: 0xEAE7, + 32879 - 11904: 0xC170, + 32880 - 11904: 0xC16F, + 32881 - 11904: 0xC16D, + 32882 - 11904: 0xC16E, + 32883 - 11904: 0xC171, + 32885 - 11904: 0xF07C, + 32886 - 11904: 0xC2BF, + 32887 - 11904: 0xC2BE, + 32888 - 11904: 0xF2C0, + 32889 - 11904: 0xF4B2, + 32893 - 11904: 0xC5A5, + 32894 - 11904: 0xC5A4, + 32895 - 11904: 0xA6D6, + 32896 - 11904: 0x8BE0, + 32898 - 11904: 0xD1FB, + 32900 - 11904: 0xB877, + 32901 - 11904: 0xB5C2, + 32902 - 11904: 0xB876, + 32903 - 11904: 0xBB46, + 32905 - 11904: 0xA6D7, + 32906 - 11904: 0xC9A9, + 32907 - 11904: 0xA6D8, + 32908 - 11904: 0xA6D9, + 32911 - 11904: 0xCDAB, + 32912 - 11904: 0xCB76, + 32914 - 11904: 0xCB77, + 32915 - 11904: 0xA877, + 32917 - 11904: 0xCB74, + 32918 - 11904: 0xA876, + 32920 - 11904: 0xA879, + 32921 - 11904: 0xCB75, + 32922 - 11904: 0xA87B, + 32923 - 11904: 0xA87A, + 32924 - 11904: 0xCB78, + 32925 - 11904: 0xA878, + 32927 - 11904: 0x89B5, + 32929 - 11904: 0xAAD1, + 32930 - 11904: 0xAACF, + 32931 - 11904: 0xCDAD, + 32933 - 11904: 0xAACE, + 32935 - 11904: 0x8EDD, + 32937 - 11904: 0xAAD3, + 32938 - 11904: 0xAAD5, + 32939 - 11904: 0xAAD2, + 32941 - 11904: 0xCDB0, + 32942 - 11904: 0xCDAC, + 32943 - 11904: 0xAAD6, + 32945 - 11904: 0xAAD0, + 32946 - 11904: 0xA87C, + 32948 - 11904: 0xAAD4, + 32949 - 11904: 0xCDAF, + 32950 - 11904: 0x9E5D, + 32951 - 11904: 0x9971, + 32952 - 11904: 0xCDAE, + 32954 - 11904: 0xAACD, + 32956 - 11904: 0x89AE, + 32957 - 11904: 0x9DE8, + 32962 - 11904: 0xD05B, + 32963 - 11904: 0xAD47, + 32964 - 11904: 0xAD48, + 32965 - 11904: 0xD05D, + 32966 - 11904: 0x9565, + 32967 - 11904: 0xD057, + 32968 - 11904: 0xD05A, + 32969 - 11904: 0xD063, + 32970 - 11904: 0xD061, + 32972 - 11904: 0xAD49, + 32973 - 11904: 0xD067, + 32974 - 11904: 0xAD4C, + 32975 - 11904: 0xD064, + 32976 - 11904: 0xD05C, + 32977 - 11904: 0xD059, + 32980 - 11904: 0xDB49, + 32981 - 11904: 0xD062, + 32982 - 11904: 0xAD44, + 32983 - 11904: 0xD065, + 32984 - 11904: 0xD056, + 32985 - 11904: 0xD05F, + 32986 - 11904: 0xAD46, + 32987 - 11904: 0xAD4B, + 32988 - 11904: 0xD060, + 32989 - 11904: 0xAD4F, + 32990 - 11904: 0xAD4D, + 32992 - 11904: 0xD058, + 32993 - 11904: 0xAD4A, + 32995 - 11904: 0xD05E, + 32996 - 11904: 0xAD4E, + 32997 - 11904: 0xAD45, + 32998 - 11904: 0xD066, + 33001 - 11904: 0x9972, + 33004 - 11904: 0x8B5C, + 33005 - 11904: 0xAFDA, + 33007 - 11904: 0xAFE3, + 33008 - 11904: 0xAFD8, + 33009 - 11904: 0xAFD6, + 33010 - 11904: 0xD36A, + 33011 - 11904: 0xAFDE, + 33012 - 11904: 0xAFDB, + 33013 - 11904: 0xD36C, + 33014 - 11904: 0x89B1, + 33016 - 11904: 0xAFDD, + 33017 - 11904: 0xD36B, + 33018 - 11904: 0xD369, + 33019 - 11904: 0xD36E, + 33020 - 11904: 0xAFE2, + 33021 - 11904: 0xAFE0, + 33022 - 11904: 0xDB48, + 33024 - 11904: 0xD36F, + 33025 - 11904: 0xD36D, + 33026 - 11904: 0xAFD7, + 33027 - 11904: 0xA0C0, + 33029 - 11904: 0xAFD9, + 33030 - 11904: 0xAFDC, + 33031 - 11904: 0x8EDF, + 33032 - 11904: 0xAFDF, + 33033 - 11904: 0x9566, + 33034 - 11904: 0xAFE1, + 33036 - 11904: 0x9974, + 33038 - 11904: 0x9976, + 33042 - 11904: 0x9977, + 33044 - 11904: 0x9979, + 33045 - 11904: 0xD74E, + 33046 - 11904: 0xB2E4, + 33047 - 11904: 0x9DDA, + 33048 - 11904: 0xD745, + 33049 - 11904: 0xD747, + 33050 - 11904: 0x8EE0, + 33051 - 11904: 0xD748, + 33053 - 11904: 0xD750, + 33054 - 11904: 0xD74C, + 33055 - 11904: 0xD74A, + 33057 - 11904: 0xD74D, + 33058 - 11904: 0xD751, + 33059 - 11904: 0xB2E5, + 33060 - 11904: 0xB2E9, + 33061 - 11904: 0xD746, + 33063 - 11904: 0xD74F, + 33065 - 11904: 0xB2E7, + 33066 - 11904: 0x935C, + 33067 - 11904: 0xB2E6, + 33068 - 11904: 0xD74B, + 33069 - 11904: 0xD749, + 33071 - 11904: 0xB2E3, + 33072 - 11904: 0xB2E8, + 33074 - 11904: 0x9DE6, + 33076 - 11904: 0x8B5F, + 33079 - 11904: 0x9563, + 33081 - 11904: 0xB5C8, + 33082 - 11904: 0xDB51, + 33085 - 11904: 0xDB4F, + 33086 - 11904: 0xB5CA, + 33090 - 11904: 0x9567, + 33091 - 11904: 0xDB4A, + 33092 - 11904: 0xDFA1, + 33094 - 11904: 0xB5C9, + 33095 - 11904: 0xDB4E, + 33096 - 11904: 0x9DE3, + 33098 - 11904: 0xDB4B, + 33099 - 11904: 0xB5C5, + 33100 - 11904: 0xB5CB, + 33101 - 11904: 0xDB50, + 33102 - 11904: 0xB5C7, + 33103 - 11904: 0xDB4D, + 33104 - 11904: 0xBB47, + 33105 - 11904: 0xB5C6, + 33106 - 11904: 0xDB4C, + 33107 - 11904: 0xB5CC, + 33108 - 11904: 0xB5C4, + 33109 - 11904: 0xB5C3, + 33110 - 11904: 0x997C, + 33113 - 11904: 0x997D, + 33114 - 11904: 0x997E, + 33115 - 11904: 0xDF77, + 33116 - 11904: 0xDF75, + 33118 - 11904: 0xDF7B, + 33120 - 11904: 0xDF73, + 33121 - 11904: 0xDFA2, + 33122 - 11904: 0xDF78, + 33124 - 11904: 0xDF72, + 33125 - 11904: 0xB87B, + 33126 - 11904: 0xB8A3, + 33127 - 11904: 0xDF7D, + 33129 - 11904: 0xDF76, + 33131 - 11904: 0xB87E, + 33132 - 11904: 0x8CFB, + 33133 - 11904: 0x8B5B, + 33134 - 11904: 0xB87C, + 33135 - 11904: 0xDF7E, + 33136 - 11904: 0xB879, + 33137 - 11904: 0xB878, + 33138 - 11904: 0xDF79, + 33139 - 11904: 0xB87D, + 33140 - 11904: 0xB5CD, + 33142 - 11904: 0xDF7C, + 33143 - 11904: 0xDF74, + 33144 - 11904: 0xB87A, + 33145 - 11904: 0xB8A1, + 33146 - 11904: 0xB8A2, + 33148 - 11904: 0x99A3, + 33151 - 11904: 0xBB4C, + 33152 - 11904: 0xBB48, + 33154 - 11904: 0xBB4D, + 33155 - 11904: 0xE3A6, + 33156 - 11904: 0x99A4, + 33158 - 11904: 0xE3A5, + 33159 - 11904: 0xE3A7, + 33160 - 11904: 0xBB4A, + 33161 - 11904: 0xE3A4, + 33162 - 11904: 0xBB4B, + 33163 - 11904: 0xE3AA, + 33164 - 11904: 0xE3A9, + 33165 - 11904: 0xE3A8, + 33167 - 11904: 0xBB49, + 33171 - 11904: 0x99A6, + 33173 - 11904: 0xE741, + 33175 - 11904: 0xE744, + 33176 - 11904: 0xBDA8, + 33177 - 11904: 0xE743, + 33178 - 11904: 0xBDA7, + 33179 - 11904: 0xBDA3, + 33180 - 11904: 0xBDA4, + 33181 - 11904: 0xBDA5, + 33182 - 11904: 0xE740, + 33183 - 11904: 0xE6FE, + 33184 - 11904: 0xBDA6, + 33186 - 11904: 0xE742, + 33187 - 11904: 0xE6FD, + 33189 - 11904: 0x99A8, + 33190 - 11904: 0xEAE9, + 33191 - 11904: 0xEAF3, + 33192 - 11904: 0xBFB1, + 33193 - 11904: 0xBFB0, + 33194 - 11904: 0x8ABE, + 33195 - 11904: 0xEAED, + 33196 - 11904: 0xEAEF, + 33198 - 11904: 0xEAEA, + 33200 - 11904: 0xEAEE, + 33201 - 11904: 0xEAE8, + 33202 - 11904: 0xEAF1, + 33203 - 11904: 0xBFAF, + 33204 - 11904: 0xEAF0, + 33205 - 11904: 0xEAEC, + 33206 - 11904: 0x9E61, + 33207 - 11904: 0xEAF2, + 33209 - 11904: 0xEAEB, + 33210 - 11904: 0xC174, + 33211 - 11904: 0xEDE8, + 33212 - 11904: 0xEDEE, + 33213 - 11904: 0xC178, + 33214 - 11904: 0xC17A, + 33215 - 11904: 0xC177, + 33216 - 11904: 0xC176, + 33217 - 11904: 0x99AA, + 33218 - 11904: 0xC175, + 33219 - 11904: 0xC173, + 33220 - 11904: 0xEDE9, + 33221 - 11904: 0xEDEC, + 33222 - 11904: 0xC172, + 33223 - 11904: 0xEDED, + 33224 - 11904: 0xA0C8, + 33225 - 11904: 0xC179, + 33226 - 11904: 0xEDEB, + 33228 - 11904: 0xEDEA, + 33229 - 11904: 0xC2C0, + 33231 - 11904: 0xC2C1, + 33232 - 11904: 0xF0A1, + 33233 - 11904: 0xF07D, + 33234 - 11904: 0xF07E, + 33237 - 11904: 0xF2C2, + 33239 - 11904: 0xF2C1, + 33240 - 11904: 0xC3BE, + 33241 - 11904: 0xF4B4, + 33242 - 11904: 0xC4A4, + 33243 - 11904: 0xF4B3, + 33245 - 11904: 0xF5F0, + 33246 - 11904: 0xF745, + 33247 - 11904: 0xC5A6, + 33248 - 11904: 0xF943, + 33249 - 11904: 0xF944, + 33250 - 11904: 0xC5D8, + 33251 - 11904: 0xA6DA, + 33252 - 11904: 0x99AB, + 33253 - 11904: 0xAAD7, + 33254 - 11904: 0xDB52, + 33255 - 11904: 0xBB4E, + 33256 - 11904: 0xC17B, + 33257 - 11904: 0xEDEF, + 33258 - 11904: 0xA6DB, + 33260 - 11904: 0xAFE5, + 33261 - 11904: 0xAFE4, + 33262 - 11904: 0xDB53, + 33263 - 11904: 0xFEC4, + 33266 - 11904: 0xEAF4, + 33267 - 11904: 0xA6DC, + 33268 - 11904: 0xAD50, + 33270 - 11904: 0x98C2, + 33271 - 11904: 0xDB54, + 33272 - 11904: 0xDB55, + 33273 - 11904: 0xDB56, + 33274 - 11904: 0xBB4F, + 33275 - 11904: 0xBFB2, + 33276 - 11904: 0xA6DD, + 33278 - 11904: 0xAAD8, + 33279 - 11904: 0xD068, + 33280 - 11904: 0xAFE6, + 33281 - 11904: 0xD370, + 33282 - 11904: 0xB2EA, + 33284 - 11904: 0xDB57, + 33285 - 11904: 0xB8A4, + 33287 - 11904: 0xBB50, + 33288 - 11904: 0xBFB3, + 33289 - 11904: 0xC17C, + 33290 - 11904: 0xC2C2, + 33291 - 11904: 0xF4B5, + 33292 - 11904: 0xA6DE, + 33293 - 11904: 0xAAD9, + 33296 - 11904: 0xAFE7, + 33297 - 11904: 0xD752, + 33298 - 11904: 0xB5CE, + 33300 - 11904: 0xBB51, + 33301 - 11904: 0xE3AB, + 33302 - 11904: 0xE745, + 33304 - 11904: 0x8EE8, + 33306 - 11904: 0xA0BA, + 33307 - 11904: 0xA6DF, + 33308 - 11904: 0xB5CF, + 33309 - 11904: 0xDFA3, + 33310 - 11904: 0xBB52, + 33311 - 11904: 0xA6E0, + 33312 - 11904: 0xCDB1, + 33313 - 11904: 0xD069, + 33314 - 11904: 0xAD51, + 33317 - 11904: 0xD372, + 33318 - 11904: 0xFD77, + 33320 - 11904: 0xAFEA, + 33321 - 11904: 0x8EEE, + 33322 - 11904: 0xAFE8, + 33323 - 11904: 0xAFE9, + 33324 - 11904: 0xAFEB, + 33325 - 11904: 0x9EBF, + 33327 - 11904: 0xD371, + 33330 - 11904: 0xD757, + 33331 - 11904: 0xD754, + 33332 - 11904: 0xD756, + 33333 - 11904: 0xB2EB, + 33334 - 11904: 0xB2ED, + 33335 - 11904: 0xB2EC, + 33336 - 11904: 0xD753, + 33337 - 11904: 0xB2EE, + 33338 - 11904: 0xD755, + 33340 - 11904: 0xDB58, + 33341 - 11904: 0xDB59, + 33342 - 11904: 0x89C2, + 33343 - 11904: 0xDB5A, + 33344 - 11904: 0xDFA6, + 33346 - 11904: 0xDFA7, + 33348 - 11904: 0xDFA5, + 33349 - 11904: 0xDFA8, + 33351 - 11904: 0xB8A5, + 33353 - 11904: 0xDFA4, + 33355 - 11904: 0xBB53, + 33358 - 11904: 0xE74A, + 33359 - 11904: 0xE746, + 33360 - 11904: 0xE749, + 33361 - 11904: 0xE74B, + 33362 - 11904: 0xE748, + 33363 - 11904: 0xE747, + 33364 - 11904: 0x99AC, + 33365 - 11904: 0xEAF5, + 33366 - 11904: 0xEAF6, + 33367 - 11904: 0xEAF7, + 33368 - 11904: 0xBFB4, + 33369 - 11904: 0xBFB5, + 33370 - 11904: 0xEDF1, + 33371 - 11904: 0xEDF0, + 33372 - 11904: 0xEDF2, + 33374 - 11904: 0xF0A3, + 33375 - 11904: 0xF0A2, + 33377 - 11904: 0xF2C4, + 33378 - 11904: 0x956B, + 33379 - 11904: 0xF2C5, + 33380 - 11904: 0xF2C3, + 33381 - 11904: 0x956C, + 33382 - 11904: 0xC4A5, + 33384 - 11904: 0xF4B6, + 33385 - 11904: 0xF4B7, + 33387 - 11904: 0xF746, + 33388 - 11904: 0xF7EF, + 33389 - 11904: 0xF8BB, + 33390 - 11904: 0xA6E1, + 33391 - 11904: 0xA87D, + 33393 - 11904: 0xC17D, + 33394 - 11904: 0xA6E2, + 33396 - 11904: 0xD758, + 33397 - 11904: 0xDB5B, + 33398 - 11904: 0x99AF, + 33399 - 11904: 0xC641, + 33400 - 11904: 0xCA4A, + 33401 - 11904: 0x994A, + 33402 - 11904: 0x8976, + 33403 - 11904: 0x8F48, + 33404 - 11904: 0xCA4B, + 33405 - 11904: 0xCA4D, + 33406 - 11904: 0xA6E3, + 33407 - 11904: 0xCA4E, + 33408 - 11904: 0xCA4C, + 33411 - 11904: 0xCBA2, + 33412 - 11904: 0xCBA3, + 33413 - 11904: 0xCB7B, + 33415 - 11904: 0xFBEE, + 33418 - 11904: 0xCBA1, + 33419 - 11904: 0xA8A1, + 33421 - 11904: 0xA8A2, + 33422 - 11904: 0xCB7C, + 33423 - 11904: 0xCB7A, + 33424 - 11904: 0xCB79, + 33425 - 11904: 0xCB7D, + 33426 - 11904: 0xA87E, + 33427 - 11904: 0xCB7E, + 33428 - 11904: 0xD06A, + 33432 - 11904: 0xCDB6, + 33433 - 11904: 0xAADC, + 33434 - 11904: 0xCDB5, + 33435 - 11904: 0xCDB7, + 33437 - 11904: 0xAADB, + 33438 - 11904: 0xCDBC, + 33439 - 11904: 0xAADF, + 33440 - 11904: 0xCDB2, + 33441 - 11904: 0xCDC0, + 33442 - 11904: 0xCDC6, + 33443 - 11904: 0xAAE6, + 33444 - 11904: 0xCDC3, + 33445 - 11904: 0xAAE3, + 33446 - 11904: 0x99AE, + 33447 - 11904: 0xCDB9, + 33448 - 11904: 0xCDBF, + 33449 - 11904: 0xCDC1, + 33450 - 11904: 0x8EFB, + 33451 - 11904: 0xCDB4, + 33452 - 11904: 0xAAE2, + 33453 - 11904: 0xAADD, + 33454 - 11904: 0xCDBA, + 33455 - 11904: 0xAAE4, + 33456 - 11904: 0xAAE7, + 33457 - 11904: 0xAAE1, + 33459 - 11904: 0xAADA, + 33460 - 11904: 0xCDBE, + 33461 - 11904: 0xCDB8, + 33462 - 11904: 0xCDC5, + 33463 - 11904: 0xAAE9, + 33464 - 11904: 0xAAE5, + 33465 - 11904: 0xAAE0, + 33466 - 11904: 0xCDBD, + 33467 - 11904: 0xAFEC, + 33468 - 11904: 0xCDBB, + 33469 - 11904: 0xAADE, + 33470 - 11904: 0xAAE8, + 33471 - 11904: 0x8CD0, + 33472 - 11904: 0xCDB3, + 33474 - 11904: 0xCDC2, + 33475 - 11904: 0xCDC4, + 33476 - 11904: 0x8B52, + 33482 - 11904: 0x99B0, + 33487 - 11904: 0x8977, + 33488 - 11904: 0x8F41, + 33489 - 11904: 0xAD62, + 33490 - 11904: 0xAD5C, + 33491 - 11904: 0xAD64, + 33492 - 11904: 0xAD61, + 33493 - 11904: 0xD071, + 33494 - 11904: 0xD074, + 33495 - 11904: 0xAD5D, + 33496 - 11904: 0x99B1, + 33497 - 11904: 0xD06B, + 33499 - 11904: 0xAD56, + 33500 - 11904: 0xAD60, + 33502 - 11904: 0xAD63, + 33503 - 11904: 0xAD65, + 33504 - 11904: 0xD0A2, + 33505 - 11904: 0xD077, + 33506 - 11904: 0x8F49, + 33507 - 11904: 0xAD55, + 33508 - 11904: 0xD0A1, + 33509 - 11904: 0xAD59, + 33510 - 11904: 0xAD57, + 33511 - 11904: 0xAD52, + 33512 - 11904: 0xD06F, + 33514 - 11904: 0xD07E, + 33515 - 11904: 0xD073, + 33516 - 11904: 0xD076, + 33517 - 11904: 0xD0A5, + 33518 - 11904: 0xFA4D, + 33519 - 11904: 0xAD66, + 33520 - 11904: 0xD07D, + 33521 - 11904: 0xAD5E, + 33522 - 11904: 0xD078, + 33523 - 11904: 0xD0A4, + 33524 - 11904: 0xD075, + 33525 - 11904: 0xD079, + 33526 - 11904: 0xD07C, + 33527 - 11904: 0x9DE4, + 33528 - 11904: 0x8CB5, + 33529 - 11904: 0xD06D, + 33530 - 11904: 0xD0A3, + 33531 - 11904: 0xD07B, + 33532 - 11904: 0xFBE9, + 33533 - 11904: 0x9B54, + 33534 - 11904: 0xD06C, + 33535 - 11904: 0x99B2, + 33536 - 11904: 0xD070, + 33537 - 11904: 0xAD5F, + 33538 - 11904: 0xAD5A, + 33539 - 11904: 0xAD53, + 33540 - 11904: 0xAD58, + 33541 - 11904: 0xAD54, + 33542 - 11904: 0xAD67, + 33543 - 11904: 0xD06E, + 33544 - 11904: 0xD3A5, + 33545 - 11904: 0xAD5B, + 33547 - 11904: 0x9E68, + 33548 - 11904: 0xD07A, + 33549 - 11904: 0xCE41, + 33558 - 11904: 0xD3A8, + 33559 - 11904: 0xAFFA, + 33560 - 11904: 0x8F4A, + 33561 - 11904: 0xD376, + 33562 - 11904: 0x8F42, + 33563 - 11904: 0xD3A3, + 33564 - 11904: 0xD37D, + 33565 - 11904: 0x8F51, + 33566 - 11904: 0xD3B2, + 33568 - 11904: 0xD3AA, + 33570 - 11904: 0xD37E, + 33572 - 11904: 0xD3A9, + 33573 - 11904: 0xD378, + 33574 - 11904: 0xD37C, + 33575 - 11904: 0xD3B5, + 33576 - 11904: 0xAFFD, + 33577 - 11904: 0xD3AD, + 33578 - 11904: 0xD3A4, + 33579 - 11904: 0xAFED, + 33580 - 11904: 0xD3B3, + 33581 - 11904: 0xD374, + 33583 - 11904: 0xD3AC, + 33585 - 11904: 0xAFFC, + 33586 - 11904: 0xAFF7, + 33587 - 11904: 0xD373, + 33588 - 11904: 0xAFF5, + 33589 - 11904: 0xAFF4, + 33590 - 11904: 0xAFF9, + 33591 - 11904: 0xD3AB, + 33592 - 11904: 0xAFF1, + 33593 - 11904: 0xAFF8, + 33594 - 11904: 0xD072, + 33595 - 11904: 0xDB5C, + 33596 - 11904: 0xD3A6, + 33597 - 11904: 0x9846, + 33599 - 11904: 0xD37A, + 33600 - 11904: 0xAFFB, + 33601 - 11904: 0xD37B, + 33602 - 11904: 0xD3A1, + 33603 - 11904: 0xAFFE, + 33604 - 11904: 0xD375, + 33605 - 11904: 0xD3AF, + 33607 - 11904: 0xD3AE, + 33608 - 11904: 0xD3B6, + 33609 - 11904: 0xAFF3, + 33610 - 11904: 0xAFF0, + 33611 - 11904: 0xD3B4, + 33612 - 11904: 0xD3B0, + 33613 - 11904: 0xD3A7, + 33614 - 11904: 0xD3A2, + 33615 - 11904: 0xAFF6, + 33616 - 11904: 0xAFF2, + 33617 - 11904: 0xD377, + 33618 - 11904: 0xAFEE, + 33619 - 11904: 0xD3B1, + 33620 - 11904: 0xAFEF, + 33622 - 11904: 0xD379, + 33623 - 11904: 0x99B4, + 33634 - 11904: 0x8EF5, + 33635 - 11904: 0xFD55, + 33638 - 11904: 0x9CCD, + 33647 - 11904: 0x8978, + 33651 - 11904: 0xD75E, + 33652 - 11904: 0xD760, + 33653 - 11904: 0xD765, + 33654 - 11904: 0xD779, + 33655 - 11904: 0xB2FC, + 33656 - 11904: 0xB2F2, + 33658 - 11904: 0xD75D, + 33659 - 11904: 0xB2FD, + 33660 - 11904: 0xB2FE, + 33661 - 11904: 0xD768, + 33662 - 11904: 0xD76F, + 33663 - 11904: 0xD775, + 33665 - 11904: 0xD762, + 33667 - 11904: 0xD769, + 33669 - 11904: 0x8F53, + 33670 - 11904: 0xB340, + 33671 - 11904: 0xD777, + 33672 - 11904: 0xD772, + 33673 - 11904: 0xB2FA, + 33674 - 11904: 0xB2F8, + 33675 - 11904: 0xD76E, + 33676 - 11904: 0xD76A, + 33677 - 11904: 0xD75C, + 33678 - 11904: 0xB2EF, + 33679 - 11904: 0xD761, + 33680 - 11904: 0xD759, + 33681 - 11904: 0x8F6F, + 33682 - 11904: 0xB2F7, + 33683 - 11904: 0xB2F9, + 33684 - 11904: 0xD766, + 33685 - 11904: 0xD763, + 33686 - 11904: 0xB2F4, + 33687 - 11904: 0xD773, + 33688 - 11904: 0xB2F1, + 33689 - 11904: 0xD764, + 33690 - 11904: 0xD77A, + 33691 - 11904: 0xD76C, + 33692 - 11904: 0x8E63, + 33693 - 11904: 0xD76B, + 33694 - 11904: 0xB2F0, + 33696 - 11904: 0xB2FB, + 33698 - 11904: 0xB2F3, + 33699 - 11904: 0xD75A, + 33700 - 11904: 0xD75F, + 33701 - 11904: 0xD770, + 33702 - 11904: 0xD776, + 33703 - 11904: 0xB341, + 33704 - 11904: 0xD75B, + 33705 - 11904: 0xD767, + 33706 - 11904: 0xD76D, + 33707 - 11904: 0xB2F6, + 33708 - 11904: 0x8F56, + 33710 - 11904: 0xD778, + 33711 - 11904: 0xD771, + 33712 - 11904: 0xD774, + 33721 - 11904: 0xFE76, + 33725 - 11904: 0xB2F5, + 33726 - 11904: 0x9FC6, + 33727 - 11904: 0xDB6C, + 33728 - 11904: 0xDB60, + 33729 - 11904: 0xB5D7, + 33730 - 11904: 0xDB7D, + 33731 - 11904: 0xDBA7, + 33732 - 11904: 0xDBAA, + 33733 - 11904: 0xB5D5, + 33734 - 11904: 0xDB68, + 33735 - 11904: 0xDBA3, + 33736 - 11904: 0xDB69, + 33737 - 11904: 0xDB77, + 33738 - 11904: 0xB5E2, + 33739 - 11904: 0xDB73, + 33740 - 11904: 0xB5DF, + 33741 - 11904: 0xFAAC, + 33742 - 11904: 0xDB74, + 33743 - 11904: 0xDB5D, + 33745 - 11904: 0xDBA4, + 33747 - 11904: 0x8F58, + 33748 - 11904: 0xB5E8, + 33749 - 11904: 0xDBA1, + 33750 - 11904: 0xDB75, + 33751 - 11904: 0xDBAC, + 33752 - 11904: 0xDB70, + 33753 - 11904: 0xDFC8, + 33755 - 11904: 0xDBAF, + 33756 - 11904: 0xB5E6, + 33757 - 11904: 0xDB6E, + 33758 - 11904: 0xDB7A, + 33759 - 11904: 0xB5E9, + 33760 - 11904: 0xB5D4, + 33761 - 11904: 0xDB72, + 33762 - 11904: 0xDBAD, + 33763 - 11904: 0xDB6B, + 33764 - 11904: 0xDB64, + 33765 - 11904: 0xDB6F, + 33767 - 11904: 0xDB63, + 33768 - 11904: 0xDB61, + 33769 - 11904: 0xB5D0, + 33770 - 11904: 0xDBA5, + 33771 - 11904: 0xDB6A, + 33772 - 11904: 0xDBA8, + 33773 - 11904: 0x9848, + 33774 - 11904: 0xDBA9, + 33775 - 11904: 0xB5D8, + 33776 - 11904: 0xB5DD, + 33777 - 11904: 0xB5D9, + 33778 - 11904: 0xB5E1, + 33779 - 11904: 0xDB7E, + 33780 - 11904: 0xB5DA, + 33781 - 11904: 0xDB76, + 33782 - 11904: 0xDB66, + 33784 - 11904: 0xB5D2, + 33785 - 11904: 0xDB5E, + 33786 - 11904: 0xDBA2, + 33787 - 11904: 0xDBAB, + 33788 - 11904: 0xDB65, + 33789 - 11904: 0xB5E0, + 33790 - 11904: 0xDBB0, + 33791 - 11904: 0xDB71, + 33793 - 11904: 0xDB6D, + 33795 - 11904: 0xB5D1, + 33796 - 11904: 0xB5E5, + 33797 - 11904: 0x99B7, + 33798 - 11904: 0xDB7C, + 33799 - 11904: 0xB5E7, + 33801 - 11904: 0xDB78, + 33802 - 11904: 0xB5DC, + 33803 - 11904: 0xB5D6, + 33804 - 11904: 0xB5DE, + 33805 - 11904: 0xB5D3, + 33806 - 11904: 0xB5E4, + 33807 - 11904: 0xDB79, + 33808 - 11904: 0xDB67, + 33809 - 11904: 0xDB7B, + 33810 - 11904: 0xDB62, + 33811 - 11904: 0xDBA6, + 33812 - 11904: 0x9665, + 33814 - 11904: 0xFA6C, + 33816 - 11904: 0x9DE7, + 33819 - 11904: 0xDBAE, + 33820 - 11904: 0x9E62, + 33824 - 11904: 0x96CC, + 33825 - 11904: 0x8E67, + 33827 - 11904: 0xDB5F, + 33828 - 11904: 0xFC75, + 33830 - 11904: 0x987E, + 33833 - 11904: 0xDFC7, + 33835 - 11904: 0xDFDD, + 33836 - 11904: 0xB855, + 33837 - 11904: 0xDFCC, + 33838 - 11904: 0xFDB9, + 33839 - 11904: 0xDFCA, + 33840 - 11904: 0xDFB5, + 33841 - 11904: 0xB8A9, + 33842 - 11904: 0xDFC5, + 33843 - 11904: 0xDFD9, + 33844 - 11904: 0xDFC1, + 33845 - 11904: 0xB8B1, + 33846 - 11904: 0xDFD8, + 33847 - 11904: 0xDFBF, + 33848 - 11904: 0xB5E3, + 33849 - 11904: 0xDFCF, + 33850 - 11904: 0xDFC0, + 33851 - 11904: 0xDFD6, + 33852 - 11904: 0xB8B0, + 33853 - 11904: 0xB8A8, + 33854 - 11904: 0x97FC, + 33855 - 11904: 0xDFAA, + 33856 - 11904: 0xDFB2, + 33858 - 11904: 0xDFCB, + 33859 - 11904: 0xDFC3, + 33860 - 11904: 0xDFDC, + 33861 - 11904: 0xDFC6, + 33862 - 11904: 0xB8B6, + 33863 - 11904: 0xDFD7, + 33864 - 11904: 0x98F9, + 33865 - 11904: 0xB8AD, + 33866 - 11904: 0x8F66, + 33867 - 11904: 0xDFC9, + 33868 - 11904: 0xDFD1, + 33869 - 11904: 0xDFB6, + 33870 - 11904: 0xDFD0, + 33872 - 11904: 0xDFE1, + 33873 - 11904: 0xDFB1, + 33874 - 11904: 0xDFD2, + 33875 - 11904: 0x956E, + 33876 - 11904: 0xDFDF, + 33877 - 11904: 0x9245, + 33878 - 11904: 0xDFAB, + 33879 - 11904: 0xB5DB, + 33880 - 11904: 0x8F60, + 33881 - 11904: 0xDFB9, + 33882 - 11904: 0xDFB8, + 33883 - 11904: 0xB8AF, + 33884 - 11904: 0x9ED1, + 33885 - 11904: 0xDFBC, + 33886 - 11904: 0xDFBE, + 33887 - 11904: 0xDFCD, + 33888 - 11904: 0xDFDE, + 33889 - 11904: 0xB8B2, + 33890 - 11904: 0xFECD, + 33891 - 11904: 0xB8B3, + 33892 - 11904: 0x99B9, + 33893 - 11904: 0xDFB0, + 33894 - 11904: 0xB8AB, + 33895 - 11904: 0xDFB4, + 33896 - 11904: 0xDFDA, + 33897 - 11904: 0xB8B4, + 33899 - 11904: 0xB8AC, + 33900 - 11904: 0xB8AE, + 33901 - 11904: 0xB8B5, + 33902 - 11904: 0xDFE0, + 33903 - 11904: 0xDFD3, + 33904 - 11904: 0xDFCE, + 33905 - 11904: 0x8F62, + 33906 - 11904: 0x974C, + 33907 - 11904: 0xDFBB, + 33908 - 11904: 0xDFBA, + 33909 - 11904: 0xB8AA, + 33910 - 11904: 0xDFAC, + 33911 - 11904: 0xB8A7, + 33912 - 11904: 0xDFC4, + 33913 - 11904: 0xDFAD, + 33914 - 11904: 0xDFC2, + 33917 - 11904: 0xDFB7, + 33918 - 11904: 0xDFDB, + 33919 - 11904: 0x91C7, + 33920 - 11904: 0x955F, + 33922 - 11904: 0xB8A6, + 33924 - 11904: 0x87AB, + 33926 - 11904: 0xDFB3, + 33928 - 11904: 0x99BB, + 33933 - 11904: 0xDFAF, + 33934 - 11904: 0xDFD5, + 33935 - 11904: 0xDFAE, + 33936 - 11904: 0xBB60, + 33937 - 11904: 0xE3D3, + 33938 - 11904: 0x8E6D, + 33939 - 11904: 0x8F71, + 33940 - 11904: 0xE3C2, + 33942 - 11904: 0x94CB, + 33943 - 11904: 0xE3AC, + 33944 - 11904: 0xE3CA, + 33945 - 11904: 0xBB58, + 33946 - 11904: 0xE3BB, + 33947 - 11904: 0xE3C5, + 33948 - 11904: 0xBB5B, + 33949 - 11904: 0xE3BE, + 33950 - 11904: 0xBB59, + 33951 - 11904: 0xE3AF, + 33952 - 11904: 0xE3CD, + 33953 - 11904: 0xE3AE, + 33954 - 11904: 0xE3C1, + 33955 - 11904: 0x95B1, + 33956 - 11904: 0xE3AD, + 33959 - 11904: 0xE3BF, + 33960 - 11904: 0xE3C8, + 33961 - 11904: 0xE3C6, + 33962 - 11904: 0xE3BA, + 33963 - 11904: 0xE3B5, + 33964 - 11904: 0xE3B3, + 33965 - 11904: 0x9AF2, + 33966 - 11904: 0xE3B4, + 33967 - 11904: 0xE3C7, + 33968 - 11904: 0xE3D2, + 33969 - 11904: 0xE3BC, + 33970 - 11904: 0xBB5A, + 33972 - 11904: 0xE3B7, + 33974 - 11904: 0xE3CB, + 33976 - 11904: 0xBB5D, + 33977 - 11904: 0xE3B6, + 33978 - 11904: 0xE3B0, + 33979 - 11904: 0xE3C0, + 33980 - 11904: 0xBB61, + 33981 - 11904: 0x96C3, + 33982 - 11904: 0x99BD, + 33983 - 11904: 0xBB55, + 33984 - 11904: 0xBB5E, + 33985 - 11904: 0xE3B8, + 33986 - 11904: 0xE3B2, + 33988 - 11904: 0xBB57, + 33989 - 11904: 0xDFD4, + 33990 - 11904: 0xBB56, + 33991 - 11904: 0xE3C3, + 33993 - 11904: 0xBB54, + 33994 - 11904: 0xBB63, + 33995 - 11904: 0xBB5C, + 33996 - 11904: 0xE3C4, + 33997 - 11904: 0xE3B9, + 33998 - 11904: 0xE3B1, + 33999 - 11904: 0xE3CC, + 34000 - 11904: 0xE3BD, + 34001 - 11904: 0xBB62, + 34002 - 11904: 0xE3D0, + 34003 - 11904: 0xBB5F, + 34004 - 11904: 0xE3CF, + 34006 - 11904: 0xE3C9, + 34007 - 11904: 0xE3CE, + 34010 - 11904: 0xA0CF, + 34011 - 11904: 0xE3D1, + 34014 - 11904: 0x8F6D, + 34017 - 11904: 0x99BE, + 34018 - 11904: 0x8EF4, + 34020 - 11904: 0x8F72, + 34021 - 11904: 0x95E4, + 34023 - 11904: 0xE773, + 34024 - 11904: 0xE774, + 34025 - 11904: 0xE767, + 34026 - 11904: 0xE766, + 34027 - 11904: 0xE762, + 34028 - 11904: 0xBDB4, + 34030 - 11904: 0xBDAC, + 34031 - 11904: 0xE776, + 34032 - 11904: 0xE775, + 34033 - 11904: 0xDFA9, + 34034 - 11904: 0xE75F, + 34035 - 11904: 0xE763, + 34036 - 11904: 0xE75D, + 34038 - 11904: 0xE770, + 34039 - 11904: 0xE761, + 34040 - 11904: 0x99BF, + 34041 - 11904: 0xE777, + 34042 - 11904: 0xE75A, + 34043 - 11904: 0xE758, + 34044 - 11904: 0xE764, + 34045 - 11904: 0xE76E, + 34046 - 11904: 0xE769, + 34047 - 11904: 0xBDB6, + 34048 - 11904: 0xE74F, + 34050 - 11904: 0xE76D, + 34051 - 11904: 0x9244, + 34052 - 11904: 0x87D7, + 34053 - 11904: 0xFBA5, + 34054 - 11904: 0xBDB7, + 34055 - 11904: 0xDFBD, + 34056 - 11904: 0xE75B, + 34057 - 11904: 0xE752, + 34058 - 11904: 0xE755, + 34059 - 11904: 0xE77B, + 34060 - 11904: 0xE75C, + 34061 - 11904: 0xE753, + 34062 - 11904: 0xE751, + 34063 - 11904: 0xE74E, + 34064 - 11904: 0x99C0, + 34065 - 11904: 0xBDB0, + 34066 - 11904: 0xE765, + 34067 - 11904: 0xBDAF, + 34068 - 11904: 0xBDB3, + 34069 - 11904: 0xE760, + 34070 - 11904: 0xE768, + 34071 - 11904: 0xBDA9, + 34072 - 11904: 0xE778, + 34073 - 11904: 0xE77C, + 34074 - 11904: 0xBDAB, + 34076 - 11904: 0xE757, + 34077 - 11904: 0xE76B, + 34078 - 11904: 0xE76F, + 34079 - 11904: 0xE754, + 34080 - 11904: 0xE779, + 34081 - 11904: 0xBDB2, + 34083 - 11904: 0xBDB1, + 34084 - 11904: 0xE74C, + 34085 - 11904: 0xBDB5, + 34086 - 11904: 0xE772, + 34087 - 11904: 0xE756, + 34088 - 11904: 0xE76A, + 34089 - 11904: 0xE750, + 34090 - 11904: 0xE75E, + 34091 - 11904: 0xE759, + 34092 - 11904: 0xBDAD, + 34093 - 11904: 0xBDAE, + 34094 - 11904: 0xE76C, + 34095 - 11904: 0xE77D, + 34096 - 11904: 0xE77A, + 34097 - 11904: 0xE771, + 34099 - 11904: 0xFDB4, + 34100 - 11904: 0x8F77, + 34104 - 11904: 0x99C1, + 34107 - 11904: 0xE74D, + 34109 - 11904: 0xBDAA, + 34110 - 11904: 0xEB49, + 34112 - 11904: 0xEB40, + 34113 - 11904: 0xEB43, + 34114 - 11904: 0xFAB9, + 34115 - 11904: 0xBFBB, + 34116 - 11904: 0xEB45, + 34117 - 11904: 0xEAF9, + 34118 - 11904: 0xEB41, + 34119 - 11904: 0xEB47, + 34120 - 11904: 0xBFB8, + 34121 - 11904: 0xBFBC, + 34122 - 11904: 0xBFB6, + 34123 - 11904: 0x8F40, + 34124 - 11904: 0xFA44, + 34125 - 11904: 0xEAFB, + 34126 - 11904: 0xEB4C, + 34129 - 11904: 0xEB46, + 34130 - 11904: 0x99C2, + 34131 - 11904: 0xEAFC, + 34132 - 11904: 0xEB55, + 34133 - 11904: 0xEB4F, + 34134 - 11904: 0xEAF8, + 34135 - 11904: 0xEE46, + 34136 - 11904: 0xEAFE, + 34137 - 11904: 0xBFB7, + 34138 - 11904: 0x8F5C, + 34139 - 11904: 0xEB4A, + 34141 - 11904: 0xEB54, + 34142 - 11904: 0xBFBF, + 34143 - 11904: 0x8CBD, + 34144 - 11904: 0xEB51, + 34145 - 11904: 0xEAFD, + 34146 - 11904: 0xEB44, + 34147 - 11904: 0xEB48, + 34148 - 11904: 0xEB42, + 34149 - 11904: 0xEB56, + 34150 - 11904: 0xEB53, + 34151 - 11904: 0xEB50, + 34152 - 11904: 0xBFB9, + 34153 - 11904: 0xBFBA, + 34154 - 11904: 0xBFBE, + 34155 - 11904: 0xEAFA, + 34156 - 11904: 0xEB57, + 34157 - 11904: 0xBFBD, + 34158 - 11904: 0xEB4D, + 34159 - 11904: 0x99C4, + 34160 - 11904: 0x99C5, + 34161 - 11904: 0xEB4B, + 34163 - 11904: 0x8F7B, + 34165 - 11904: 0xEB4E, + 34166 - 11904: 0xEE53, + 34167 - 11904: 0xEE40, + 34168 - 11904: 0xEE45, + 34169 - 11904: 0xEE52, + 34170 - 11904: 0xEE44, + 34171 - 11904: 0xEDFB, + 34172 - 11904: 0xEE41, + 34174 - 11904: 0xC1A2, + 34176 - 11904: 0xEDF4, + 34177 - 11904: 0xEE4D, + 34178 - 11904: 0xEE4F, + 34179 - 11904: 0xEDF3, + 34180 - 11904: 0xC1A1, + 34181 - 11904: 0xEE51, + 34182 - 11904: 0xEE49, + 34183 - 11904: 0xC1A8, + 34184 - 11904: 0xEE50, + 34185 - 11904: 0xEE42, + 34186 - 11904: 0xC1AA, + 34187 - 11904: 0xEDF9, + 34188 - 11904: 0xEB52, + 34189 - 11904: 0xEE4A, + 34190 - 11904: 0xEE47, + 34191 - 11904: 0xEDF5, + 34192 - 11904: 0xEE55, + 34193 - 11904: 0xC1A4, + 34195 - 11904: 0x8776, + 34196 - 11904: 0xC1A5, + 34197 - 11904: 0xEDF7, + 34198 - 11904: 0xEE48, + 34199 - 11904: 0x8CB6, + 34200 - 11904: 0xEE54, + 34201 - 11904: 0xEE4B, + 34202 - 11904: 0xEDFD, + 34203 - 11904: 0xC1A7, + 34204 - 11904: 0xC1A3, + 34205 - 11904: 0xEE4C, + 34206 - 11904: 0xEDFE, + 34207 - 11904: 0xEE56, + 34208 - 11904: 0xEDF8, + 34209 - 11904: 0xEE43, + 34210 - 11904: 0xEE4E, + 34211 - 11904: 0xEDFA, + 34212 - 11904: 0xEDFC, + 34214 - 11904: 0xC2CB, + 34215 - 11904: 0xEDF6, + 34216 - 11904: 0xC1A9, + 34217 - 11904: 0xC2C4, + 34218 - 11904: 0xC17E, + 34223 - 11904: 0xC1A6, + 34224 - 11904: 0xC2C8, + 34225 - 11904: 0xF0B3, + 34227 - 11904: 0xF0A9, + 34228 - 11904: 0xF0A4, + 34229 - 11904: 0xF0AA, + 34230 - 11904: 0xF0B4, + 34231 - 11904: 0xF0B8, + 34232 - 11904: 0xF0B7, + 34233 - 11904: 0xC2CA, + 34234 - 11904: 0xC2C9, + 34237 - 11904: 0xF0AB, + 34238 - 11904: 0xF0B9, + 34239 - 11904: 0xF0AE, + 34240 - 11904: 0xF0A6, + 34241 - 11904: 0x8FA3, + 34242 - 11904: 0xF0A8, + 34243 - 11904: 0xF0A7, + 34244 - 11904: 0xF0AD, + 34245 - 11904: 0xF0B2, + 34246 - 11904: 0xF0A5, + 34247 - 11904: 0xF0AC, + 34248 - 11904: 0xF0B1, + 34249 - 11904: 0xC2C7, + 34251 - 11904: 0xF0AF, + 34253 - 11904: 0xC2C5, + 34254 - 11904: 0xF0B0, + 34255 - 11904: 0xC2C3, + 34256 - 11904: 0xC2C6, + 34257 - 11904: 0xF2D5, + 34258 - 11904: 0xF0B5, + 34261 - 11904: 0xC3C2, + 34262 - 11904: 0x8CCE, + 34263 - 11904: 0xF2CD, + 34264 - 11904: 0xF2D1, + 34265 - 11904: 0xF2C9, + 34266 - 11904: 0xF2CC, + 34268 - 11904: 0xF2D4, + 34269 - 11904: 0xC3C0, + 34270 - 11904: 0xF2D9, + 34271 - 11904: 0xF2D2, + 34272 - 11904: 0x99C6, + 34273 - 11904: 0xF2CA, + 34274 - 11904: 0xF2DA, + 34275 - 11904: 0xF2D3, + 34276 - 11904: 0xC3C3, + 34277 - 11904: 0xC3C4, + 34278 - 11904: 0xF2D7, + 34280 - 11904: 0xF2CB, + 34281 - 11904: 0xC3BF, + 34282 - 11904: 0xC3C1, + 34283 - 11904: 0xF2C6, + 34284 - 11904: 0xF2CE, + 34285 - 11904: 0xF2C8, + 34286 - 11904: 0x96CD, + 34287 - 11904: 0xF2D8, + 34288 - 11904: 0xF2D6, + 34289 - 11904: 0xF2C7, + 34290 - 11904: 0xF2CF, + 34294 - 11904: 0xF4BE, + 34295 - 11904: 0xC3C5, + 34296 - 11904: 0xF2D0, + 34297 - 11904: 0xC4A7, + 34298 - 11904: 0xC4A9, + 34299 - 11904: 0xC4A6, + 34300 - 11904: 0x96C7, + 34301 - 11904: 0xF4C3, + 34302 - 11904: 0xF4BB, + 34303 - 11904: 0xF4B9, + 34304 - 11904: 0xF4BD, + 34305 - 11904: 0xF4BA, + 34306 - 11904: 0x8FA5, + 34308 - 11904: 0xF4BF, + 34309 - 11904: 0xF4C1, + 34310 - 11904: 0xC4AA, + 34311 - 11904: 0xC4AC, + 34313 - 11904: 0xF4C0, + 34314 - 11904: 0xC4AD, + 34315 - 11904: 0xC4AB, + 34316 - 11904: 0xF4C2, + 34317 - 11904: 0xFABB, + 34319 - 11904: 0x8C61, + 34320 - 11904: 0x9570, + 34321 - 11904: 0xC4A8, + 34323 - 11904: 0x87AF, + 34324 - 11904: 0x9368, + 34326 - 11904: 0x8F7E, + 34327 - 11904: 0xC4F4, + 34328 - 11904: 0xF5F1, + 34329 - 11904: 0xF5F7, + 34330 - 11904: 0xC4F6, + 34331 - 11904: 0xF4BC, + 34332 - 11904: 0xF5F6, + 34334 - 11904: 0xF5FD, + 34335 - 11904: 0xF5F4, + 34336 - 11904: 0xF5FB, + 34337 - 11904: 0xF5FA, + 34338 - 11904: 0xF4B8, + 34339 - 11904: 0xF5F5, + 34340 - 11904: 0xF0B6, + 34341 - 11904: 0xF5FE, + 34342 - 11904: 0xF5F3, + 34343 - 11904: 0xF5F8, + 34344 - 11904: 0x8FAA, + 34345 - 11904: 0xF5FC, + 34346 - 11904: 0xF5F2, + 34348 - 11904: 0xF74A, + 34349 - 11904: 0xC4F5, + 34350 - 11904: 0xF5F9, + 34351 - 11904: 0xA050, + 34353 - 11904: 0xF7F4, + 34354 - 11904: 0xF74B, + 34355 - 11904: 0xF749, + 34356 - 11904: 0xF747, + 34357 - 11904: 0xF748, + 34358 - 11904: 0xF74C, + 34360 - 11904: 0xC5D9, + 34361 - 11904: 0xF7F2, + 34362 - 11904: 0xF7F0, + 34363 - 11904: 0xF7F5, + 34364 - 11904: 0xF7F3, + 34366 - 11904: 0xF7F6, + 34367 - 11904: 0xC5DA, + 34368 - 11904: 0xF7F1, + 34370 - 11904: 0x90D3, + 34371 - 11904: 0xF8BC, + 34373 - 11904: 0x9556, + 34374 - 11904: 0xF945, + 34375 - 11904: 0xF946, + 34376 - 11904: 0xF947, + 34379 - 11904: 0xF9C7, + 34380 - 11904: 0xF9BD, + 34381 - 11904: 0xCA4F, + 34382 - 11904: 0xAAEA, + 34384 - 11904: 0xAD68, + 34386 - 11904: 0xD3B8, + 34387 - 11904: 0xD3B7, + 34388 - 11904: 0xB040, + 34389 - 11904: 0xB342, + 34390 - 11904: 0xD77C, + 34393 - 11904: 0xD77B, + 34395 - 11904: 0xB5EA, + 34396 - 11904: 0xB8B8, + 34398 - 11904: 0xB8B7, + 34399 - 11904: 0xB8B9, + 34401 - 11904: 0xE3D4, + 34402 - 11904: 0xE77E, + 34403 - 11904: 0xEB58, + 34404 - 11904: 0xEB5A, + 34405 - 11904: 0xEB59, + 34407 - 11904: 0xC1AB, + 34408 - 11904: 0xEE57, + 34409 - 11904: 0xF0BA, + 34410 - 11904: 0xF9A5, + 34411 - 11904: 0xA6E4, + 34412 - 11904: 0x8FB8, + 34413 - 11904: 0xCDC9, + 34414 - 11904: 0xCDCA, + 34415 - 11904: 0xCDC8, + 34416 - 11904: 0xCDC7, + 34417 - 11904: 0xAAEB, + 34418 - 11904: 0x99C8, + 34419 - 11904: 0xD0A9, + 34420 - 11904: 0xD0A7, + 34423 - 11904: 0xD0A6, + 34425 - 11904: 0xAD69, + 34426 - 11904: 0xAD6B, + 34427 - 11904: 0xAD6A, + 34428 - 11904: 0xD0A8, + 34430 - 11904: 0x8FAF, + 34437 - 11904: 0xD3C4, + 34438 - 11904: 0xD3C1, + 34439 - 11904: 0xD3BF, + 34442 - 11904: 0xB041, + 34443 - 11904: 0xD3C2, + 34444 - 11904: 0xB046, + 34445 - 11904: 0xD3BC, + 34446 - 11904: 0xD3CB, + 34448 - 11904: 0xD3CD, + 34449 - 11904: 0xD3BD, + 34450 - 11904: 0x99C9, + 34451 - 11904: 0xB043, + 34452 - 11904: 0xD3CE, + 34453 - 11904: 0xD3C9, + 34454 - 11904: 0xD3BB, + 34455 - 11904: 0xD3C0, + 34456 - 11904: 0xD3CA, + 34457 - 11904: 0xD3C6, + 34458 - 11904: 0xD3C3, + 34460 - 11904: 0xB048, + 34461 - 11904: 0xD3CC, + 34462 - 11904: 0xD3BE, + 34464 - 11904: 0x9579, + 34465 - 11904: 0xD3C7, + 34466 - 11904: 0xD3B9, + 34467 - 11904: 0xB047, + 34468 - 11904: 0xB044, + 34469 - 11904: 0xD3C5, + 34471 - 11904: 0xD3C8, + 34472 - 11904: 0xD3BA, + 34473 - 11904: 0xB045, + 34474 - 11904: 0xB042, + 34477 - 11904: 0x9F49, + 34479 - 11904: 0xB34C, + 34480 - 11904: 0xD7A5, + 34481 - 11904: 0xB34B, + 34482 - 11904: 0x99CA, + 34483 - 11904: 0xD7A8, + 34484 - 11904: 0xD7AB, + 34485 - 11904: 0xB348, + 34486 - 11904: 0xB346, + 34487 - 11904: 0xD77E, + 34488 - 11904: 0xD7A9, + 34489 - 11904: 0xD7A7, + 34490 - 11904: 0xD7A4, + 34491 - 11904: 0xD7AC, + 34492 - 11904: 0xD7AD, + 34493 - 11904: 0xD7AF, + 34494 - 11904: 0xD7B0, + 34495 - 11904: 0xD77D, + 34496 - 11904: 0xB345, + 34497 - 11904: 0xD7A2, + 34498 - 11904: 0xD7A1, + 34499 - 11904: 0xD7AE, + 34500 - 11904: 0xB347, + 34501 - 11904: 0xD7A3, + 34502 - 11904: 0xB349, + 34503 - 11904: 0xB344, + 34504 - 11904: 0xD7A6, + 34505 - 11904: 0xB34D, + 34507 - 11904: 0xB34A, + 34508 - 11904: 0xD7AA, + 34512 - 11904: 0xB5F1, + 34513 - 11904: 0xDBBF, + 34515 - 11904: 0xDBB4, + 34516 - 11904: 0xB5EE, + 34518 - 11904: 0xDFE7, + 34519 - 11904: 0xDBBD, + 34520 - 11904: 0xDBB1, + 34521 - 11904: 0xB5EC, + 34522 - 11904: 0xDBB6, + 34523 - 11904: 0xB5EF, + 34524 - 11904: 0xDBBA, + 34525 - 11904: 0xDBB8, + 34526 - 11904: 0xB5F2, + 34527 - 11904: 0xB5EB, + 34530 - 11904: 0xDBB2, + 34531 - 11904: 0xDBB5, + 34532 - 11904: 0xB5F0, + 34534 - 11904: 0xDBB3, + 34536 - 11904: 0xDBBE, + 34537 - 11904: 0xDBBC, + 34538 - 11904: 0xDBB7, + 34539 - 11904: 0xDBB9, + 34540 - 11904: 0xDBBB, + 34541 - 11904: 0xB5ED, + 34543 - 11904: 0x99CB, + 34549 - 11904: 0xDFE8, + 34550 - 11904: 0xDFEE, + 34551 - 11904: 0xDFE4, + 34552 - 11904: 0xDFEA, + 34553 - 11904: 0xB8BA, + 34554 - 11904: 0xDFE6, + 34555 - 11904: 0xB8C0, + 34558 - 11904: 0xB8BF, + 34560 - 11904: 0xB8BE, + 34561 - 11904: 0xDFED, + 34562 - 11904: 0xB8C1, + 34563 - 11904: 0xB8C2, + 34564 - 11904: 0xDFE3, + 34565 - 11904: 0xDFF0, + 34566 - 11904: 0xB8C3, + 34567 - 11904: 0xB8BD, + 34568 - 11904: 0xB8BC, + 34569 - 11904: 0xDFEC, + 34570 - 11904: 0xB8C4, + 34571 - 11904: 0xDFE2, + 34572 - 11904: 0xDFE5, + 34573 - 11904: 0xDFEF, + 34574 - 11904: 0xDFEB, + 34577 - 11904: 0xE3F4, + 34578 - 11904: 0xE3E9, + 34579 - 11904: 0xB8BB, + 34584 - 11904: 0xBB6A, + 34585 - 11904: 0xE3DD, + 34586 - 11904: 0xE3F2, + 34587 - 11904: 0xE3DE, + 34588 - 11904: 0xBB65, + 34590 - 11904: 0xE3DB, + 34592 - 11904: 0xE3E4, + 34593 - 11904: 0xE3DC, + 34594 - 11904: 0xBB67, + 34595 - 11904: 0xE3D6, + 34596 - 11904: 0xE3F1, + 34597 - 11904: 0xBB68, + 34598 - 11904: 0xE3EE, + 34599 - 11904: 0xE3EF, + 34600 - 11904: 0xE3D7, + 34601 - 11904: 0xBB6D, + 34602 - 11904: 0xE3E6, + 34604 - 11904: 0xE3E0, + 34605 - 11904: 0xE3E7, + 34606 - 11904: 0xE3DA, + 34608 - 11904: 0xE3F3, + 34609 - 11904: 0xE3EB, + 34610 - 11904: 0xE3E5, + 34611 - 11904: 0xE3D5, + 34612 - 11904: 0xBB69, + 34613 - 11904: 0xE3EC, + 34615 - 11904: 0xBB6C, + 34616 - 11904: 0xE3F0, + 34618 - 11904: 0xE3EA, + 34619 - 11904: 0xBB66, + 34620 - 11904: 0xE3E8, + 34622 - 11904: 0xE3E2, + 34623 - 11904: 0xBB64, + 34624 - 11904: 0xE3D9, + 34625 - 11904: 0xE3E1, + 34626 - 11904: 0xE3ED, + 34627 - 11904: 0xE3DF, + 34630 - 11904: 0xE3E3, + 34636 - 11904: 0xBDC1, + 34637 - 11904: 0xDFE9, + 34638 - 11904: 0xE7B2, + 34639 - 11904: 0xE7BB, + 34640 - 11904: 0xE7B1, + 34641 - 11904: 0xE7AD, + 34642 - 11904: 0xE7AA, + 34643 - 11904: 0xBDC2, + 34644 - 11904: 0xE7A8, + 34645 - 11904: 0xBB6B, + 34646 - 11904: 0xE7A1, + 34647 - 11904: 0xBDC0, + 34648 - 11904: 0xE7A7, + 34649 - 11904: 0xBDBF, + 34650 - 11904: 0xE7AC, + 34651 - 11904: 0xE7A9, + 34652 - 11904: 0xE7B9, + 34653 - 11904: 0xE7B4, + 34654 - 11904: 0xE7AE, + 34655 - 11904: 0xE7B3, + 34656 - 11904: 0xBDBB, + 34657 - 11904: 0xE7AB, + 34658 - 11904: 0xE7BE, + 34659 - 11904: 0xE7A2, + 34660 - 11904: 0xE7A3, + 34661 - 11904: 0xE7BA, + 34662 - 11904: 0xBDBC, + 34663 - 11904: 0xE7BF, + 34664 - 11904: 0xBDBE, + 34665 - 11904: 0xE7C0, + 34666 - 11904: 0xE7B0, + 34667 - 11904: 0xE3D8, + 34668 - 11904: 0xE7B6, + 34669 - 11904: 0xE7AF, + 34670 - 11904: 0xE7B8, + 34671 - 11904: 0xE7B5, + 34672 - 11904: 0x9DD5, + 34673 - 11904: 0x8FB0, + 34675 - 11904: 0xE7A6, + 34676 - 11904: 0xBDB9, + 34677 - 11904: 0xE7BD, + 34678 - 11904: 0xBDBA, + 34679 - 11904: 0xE7A4, + 34680 - 11904: 0xBDBD, + 34681 - 11904: 0xEB64, + 34682 - 11904: 0xE7B7, + 34683 - 11904: 0xE7BC, + 34685 - 11904: 0xFA7A, + 34689 - 11904: 0xEB61, + 34690 - 11904: 0xBDB8, + 34691 - 11904: 0xBFC0, + 34692 - 11904: 0xEB6B, + 34693 - 11904: 0xEB67, + 34694 - 11904: 0x9E5F, + 34695 - 11904: 0xEB65, + 34696 - 11904: 0xEB60, + 34697 - 11904: 0xEB6F, + 34699 - 11904: 0x99CD, + 34700 - 11904: 0xA0C9, + 34701 - 11904: 0xBFC4, + 34703 - 11904: 0xEB5C, + 34704 - 11904: 0xEB68, + 34705 - 11904: 0xEB69, + 34706 - 11904: 0xEB5F, + 34707 - 11904: 0xEB5E, + 34708 - 11904: 0xEB6C, + 34710 - 11904: 0xEB62, + 34711 - 11904: 0xEB5D, + 34712 - 11904: 0xEB63, + 34714 - 11904: 0xEB6E, + 34715 - 11904: 0xEB5B, + 34716 - 11904: 0xEB6D, + 34717 - 11904: 0xEB6A, + 34718 - 11904: 0xBFC2, + 34719 - 11904: 0xBFC1, + 34722 - 11904: 0xBFC3, + 34723 - 11904: 0xEB66, + 34724 - 11904: 0xF0CB, + 34725 - 11904: 0x9ADB, + 34729 - 11904: 0xA0C6, + 34730 - 11904: 0xEE59, + 34731 - 11904: 0xC1B1, + 34732 - 11904: 0xEE5D, + 34733 - 11904: 0xEE5A, + 34734 - 11904: 0xEE61, + 34735 - 11904: 0xEE67, + 34736 - 11904: 0xEE5C, + 34737 - 11904: 0x8FB4, + 34738 - 11904: 0xEE70, + 34739 - 11904: 0xC1AE, + 34740 - 11904: 0xEE6A, + 34741 - 11904: 0xEE5F, + 34742 - 11904: 0xEE6B, + 34743 - 11904: 0xEE66, + 34744 - 11904: 0xEE6D, + 34745 - 11904: 0xEE5E, + 34746 - 11904: 0xC1B3, + 34747 - 11904: 0xC1B2, + 34748 - 11904: 0xEE60, + 34749 - 11904: 0xEE6E, + 34750 - 11904: 0xEE58, + 34751 - 11904: 0xEE6C, + 34752 - 11904: 0xC1AC, + 34753 - 11904: 0xA0D7, + 34754 - 11904: 0xEE64, + 34755 - 11904: 0xEE63, + 34756 - 11904: 0xEE68, + 34757 - 11904: 0xEE5B, + 34758 - 11904: 0xC1B0, + 34760 - 11904: 0xC1B4, + 34761 - 11904: 0xEE62, + 34762 - 11904: 0xEE69, + 34763 - 11904: 0xC1B5, + 34764 - 11904: 0xEE65, + 34766 - 11904: 0xA0C7, + 34769 - 11904: 0xC1AD, + 34770 - 11904: 0xC1AF, + 34771 - 11904: 0xF0C7, + 34772 - 11904: 0xF0C5, + 34774 - 11904: 0xA043, + 34775 - 11904: 0xF0CC, + 34776 - 11904: 0xF0C9, + 34777 - 11904: 0xF0CD, + 34778 - 11904: 0x8FB5, + 34779 - 11904: 0xF0BE, + 34780 - 11904: 0xF0C6, + 34781 - 11904: 0xF0D1, + 34782 - 11904: 0xEE6F, + 34783 - 11904: 0xF0C2, + 34784 - 11904: 0xC2CF, + 34785 - 11904: 0xE7A5, + 34786 - 11904: 0xF0BD, + 34787 - 11904: 0xF0CA, + 34788 - 11904: 0xF0C4, + 34789 - 11904: 0xF0C1, + 34790 - 11904: 0xF0BC, + 34791 - 11904: 0xF0BB, + 34792 - 11904: 0xF0D0, + 34794 - 11904: 0xF0C0, + 34795 - 11904: 0xF0BF, + 34796 - 11904: 0xC2CD, + 34797 - 11904: 0xF0C8, + 34798 - 11904: 0x8FB2, + 34799 - 11904: 0xC2CC, + 34802 - 11904: 0xC2CE, + 34803 - 11904: 0xF0C3, + 34804 - 11904: 0xF0CF, + 34805 - 11904: 0xA061, + 34806 - 11904: 0xF2DE, + 34807 - 11904: 0xF2DF, + 34809 - 11904: 0xC3C9, + 34810 - 11904: 0xF2DC, + 34811 - 11904: 0xC3C6, + 34812 - 11904: 0xF2E4, + 34814 - 11904: 0xC3CA, + 34815 - 11904: 0xF2E6, + 34816 - 11904: 0xF2DB, + 34817 - 11904: 0xF0CE, + 34818 - 11904: 0xF2E8, + 34819 - 11904: 0xF2DD, + 34820 - 11904: 0x9E5E, + 34821 - 11904: 0xC3C7, + 34822 - 11904: 0xF2E3, + 34824 - 11904: 0xF2E5, + 34825 - 11904: 0xF2E0, + 34826 - 11904: 0xF2E7, + 34827 - 11904: 0xF2E2, + 34828 - 11904: 0xF2E1, + 34829 - 11904: 0xC3C8, + 34831 - 11904: 0xA063, + 34832 - 11904: 0xF4C5, + 34833 - 11904: 0xF4C6, + 34835 - 11904: 0xF4C8, + 34836 - 11904: 0xC4AE, + 34837 - 11904: 0xC4AF, + 34838 - 11904: 0xF4C9, + 34839 - 11904: 0xF4C7, + 34840 - 11904: 0x9FE8, + 34841 - 11904: 0xF4C4, + 34843 - 11904: 0xF642, + 34844 - 11904: 0xF645, + 34845 - 11904: 0xF641, + 34847 - 11904: 0xC4FA, + 34848 - 11904: 0xF643, + 34849 - 11904: 0xC4F9, + 34850 - 11904: 0xC4F8, + 34851 - 11904: 0xC4F7, + 34852 - 11904: 0xF644, + 34853 - 11904: 0xF751, + 34854 - 11904: 0xF74F, + 34855 - 11904: 0x9CB2, + 34856 - 11904: 0xF74E, + 34857 - 11904: 0xF640, + 34858 - 11904: 0xF750, + 34859 - 11904: 0xF646, + 34860 - 11904: 0xF74D, + 34861 - 11904: 0x957C, + 34862 - 11904: 0xF7F9, + 34863 - 11904: 0xF7D7, + 34864 - 11904: 0xF7F7, + 34865 - 11904: 0xC5DB, + 34866 - 11904: 0xF7F8, + 34867 - 11904: 0xF7FA, + 34869 - 11904: 0xF8BF, + 34870 - 11904: 0xC5FA, + 34871 - 11904: 0xF8BE, + 34872 - 11904: 0xF8BD, + 34873 - 11904: 0xC5FB, + 34875 - 11904: 0xC65A, + 34876 - 11904: 0xF96E, + 34877 - 11904: 0xF9A7, + 34878 - 11904: 0xF9A6, + 34879 - 11904: 0xF9A8, + 34880 - 11904: 0xA6E5, + 34881 - 11904: 0xD0AA, + 34882 - 11904: 0x9FC7, + 34883 - 11904: 0xD3CF, + 34884 - 11904: 0xD3D0, + 34885 - 11904: 0x8FBB, + 34886 - 11904: 0x8FBC, + 34888 - 11904: 0xDBC0, + 34890 - 11904: 0xF647, + 34891 - 11904: 0xF8C0, + 34892 - 11904: 0xA6E6, + 34893 - 11904: 0xAD6C, + 34894 - 11904: 0xD0AB, + 34895 - 11904: 0x8FEC, + 34898 - 11904: 0xD7B1, + 34899 - 11904: 0xB34E, + 34901 - 11904: 0xDBC2, + 34902 - 11904: 0xDBC1, + 34903 - 11904: 0xB5F3, + 34905 - 11904: 0xB8C5, + 34906 - 11904: 0xE7C1, + 34907 - 11904: 0xBDC3, + 34909 - 11904: 0xBDC4, + 34910 - 11904: 0x8FC0, + 34912 - 11904: 0x936A, + 34913 - 11904: 0xBFC5, + 34914 - 11904: 0xC5FC, + 34915 - 11904: 0xA6E7, + 34916 - 11904: 0x8BE4, + 34917 - 11904: 0x9C7C, + 34919 - 11904: 0xD0AC, + 34920 - 11904: 0xAAED, + 34921 - 11904: 0xD0AE, + 34922 - 11904: 0xD0AD, + 34923 - 11904: 0xAD6D, + 34925 - 11904: 0xD3D1, + 34926 - 11904: 0x95A1, + 34927 - 11904: 0xD3D8, + 34928 - 11904: 0xB049, + 34929 - 11904: 0xD3D6, + 34930 - 11904: 0xD3D4, + 34932 - 11904: 0xD3DB, + 34933 - 11904: 0xD3D2, + 34934 - 11904: 0xD3D3, + 34935 - 11904: 0xB04A, + 34937 - 11904: 0xB04E, + 34940 - 11904: 0xD3DC, + 34941 - 11904: 0xB04D, + 34942 - 11904: 0xD3DA, + 34943 - 11904: 0xD3D7, + 34944 - 11904: 0xD3D5, + 34945 - 11904: 0xB04B, + 34946 - 11904: 0xB04C, + 34947 - 11904: 0xD3D9, + 34948 - 11904: 0xFEEC, + 34951 - 11904: 0x95A3, + 34952 - 11904: 0xB350, + 34953 - 11904: 0xD7B2, + 34955 - 11904: 0xB355, + 34956 - 11904: 0xD7C2, + 34957 - 11904: 0xB354, + 34958 - 11904: 0xD7C4, + 34959 - 11904: 0x8C45, + 34960 - 11904: 0x8CB8, + 34961 - 11904: 0xD7B8, + 34962 - 11904: 0xB352, + 34963 - 11904: 0xD7C3, + 34965 - 11904: 0xD7B3, + 34966 - 11904: 0xB353, + 34967 - 11904: 0xD7BF, + 34968 - 11904: 0xD7BB, + 34969 - 11904: 0xD7BD, + 34970 - 11904: 0xD7B7, + 34971 - 11904: 0xD7BE, + 34972 - 11904: 0x8FC1, + 34973 - 11904: 0x87B7, + 34974 - 11904: 0xB34F, + 34975 - 11904: 0xD7BA, + 34976 - 11904: 0xA052, + 34977 - 11904: 0xD7B9, + 34978 - 11904: 0xD7B5, + 34980 - 11904: 0xD7C0, + 34983 - 11904: 0xD7BC, + 34984 - 11904: 0xD7B4, + 34986 - 11904: 0xD7B6, + 34987 - 11904: 0xB351, + 34988 - 11904: 0xD7C1, + 34990 - 11904: 0x99D0, + 34993 - 11904: 0xB5F6, + 34994 - 11904: 0xDBCD, + 34996 - 11904: 0x8FC3, + 34997 - 11904: 0x8FC4, + 34998 - 11904: 0xDBC9, + 34999 - 11904: 0xDBCB, + 35000 - 11904: 0xDBC6, + 35001 - 11904: 0xDBC5, + 35002 - 11904: 0xDBC3, + 35004 - 11904: 0xDBCA, + 35005 - 11904: 0xDBCC, + 35006 - 11904: 0xDBC8, + 35007 - 11904: 0x95A4, + 35008 - 11904: 0xDBC7, + 35009 - 11904: 0xB5F4, + 35010 - 11904: 0xB5F5, + 35013 - 11904: 0x8FC6, + 35015 - 11904: 0x9E60, + 35017 - 11904: 0xDBCF, + 35018 - 11904: 0xB8CD, + 35019 - 11904: 0xDFF2, + 35020 - 11904: 0xDFF8, + 35021 - 11904: 0xDFF3, + 35022 - 11904: 0xDFF4, + 35023 - 11904: 0xF9D8, + 35024 - 11904: 0xDFF9, + 35026 - 11904: 0xB8CF, + 35028 - 11904: 0xB8C7, + 35029 - 11904: 0xB8CE, + 35030 - 11904: 0xDFF1, + 35031 - 11904: 0xDBC4, + 35032 - 11904: 0xB8CA, + 35033 - 11904: 0xB8C8, + 35034 - 11904: 0xDFF7, + 35035 - 11904: 0xDFF6, + 35036 - 11904: 0xB8C9, + 35037 - 11904: 0xB8CB, + 35038 - 11904: 0xDFF5, + 35039 - 11904: 0xB8C6, + 35041 - 11904: 0xB8CC, + 35046 - 11904: 0x95A5, + 35047 - 11904: 0xE3F6, + 35048 - 11904: 0xBB74, + 35051 - 11904: 0xE442, + 35052 - 11904: 0xE441, + 35054 - 11904: 0xE3FB, + 35055 - 11904: 0xBB76, + 35056 - 11904: 0xE440, + 35057 - 11904: 0xE3F7, + 35058 - 11904: 0xE3F8, + 35059 - 11904: 0xBB6E, + 35060 - 11904: 0xBB70, + 35061 - 11904: 0x9CB3, + 35062 - 11904: 0xE3FD, + 35063 - 11904: 0xE3F5, + 35064 - 11904: 0xBB72, + 35065 - 11904: 0xBB71, + 35066 - 11904: 0xE3F9, + 35067 - 11904: 0xE3FE, + 35068 - 11904: 0xE3FC, + 35069 - 11904: 0xBB73, + 35070 - 11904: 0xE3FA, + 35071 - 11904: 0x99D1, + 35072 - 11904: 0xFEF1, + 35073 - 11904: 0xDBCE, + 35074 - 11904: 0xBB6F, + 35077 - 11904: 0xE7C2, + 35078 - 11904: 0xE7C9, + 35079 - 11904: 0xBDC6, + 35081 - 11904: 0xE7CD, + 35082 - 11904: 0xBDCA, + 35083 - 11904: 0xE7C5, + 35084 - 11904: 0xE7C3, + 35086 - 11904: 0xE7CC, + 35088 - 11904: 0xBDC5, + 35089 - 11904: 0xE7CB, + 35090 - 11904: 0xBDC7, + 35091 - 11904: 0xBDC8, + 35092 - 11904: 0xE7C4, + 35093 - 11904: 0xBDC9, + 35094 - 11904: 0xE7CA, + 35095 - 11904: 0xE7C6, + 35096 - 11904: 0xE7C7, + 35097 - 11904: 0xE7C8, + 35098 - 11904: 0xBB75, + 35102 - 11904: 0xEB70, + 35103 - 11904: 0xEB7C, + 35105 - 11904: 0xBFCA, + 35106 - 11904: 0xEB77, + 35107 - 11904: 0xEB79, + 35108 - 11904: 0x99D2, + 35109 - 11904: 0xBFC8, + 35110 - 11904: 0xEB71, + 35111 - 11904: 0xEB75, + 35113 - 11904: 0xEB78, + 35114 - 11904: 0xBFC6, + 35115 - 11904: 0xBFC9, + 35116 - 11904: 0xEB7B, + 35117 - 11904: 0xEB73, + 35118 - 11904: 0xEB74, + 35119 - 11904: 0xEB7A, + 35120 - 11904: 0xEB72, + 35121 - 11904: 0xEB76, + 35122 - 11904: 0xBFC7, + 35123 - 11904: 0xEE72, + 35125 - 11904: 0xEE71, + 35126 - 11904: 0xC1B7, + 35127 - 11904: 0xEE77, + 35128 - 11904: 0xC1B9, + 35131 - 11904: 0xC1B6, + 35132 - 11904: 0xEE73, + 35133 - 11904: 0xC1BA, + 35134 - 11904: 0xEE74, + 35137 - 11904: 0xEE75, + 35138 - 11904: 0xEE78, + 35139 - 11904: 0x9CC2, + 35140 - 11904: 0xC1B8, + 35142 - 11904: 0xF0D6, + 35143 - 11904: 0x99D3, + 35145 - 11904: 0xF0D9, + 35147 - 11904: 0xF0D3, + 35148 - 11904: 0xF0D5, + 35149 - 11904: 0x95A7, + 35151 - 11904: 0xF0D4, + 35152 - 11904: 0xF0D7, + 35153 - 11904: 0xF0D8, + 35154 - 11904: 0xEE76, + 35155 - 11904: 0xF0D2, + 35156 - 11904: 0x95A9, + 35158 - 11904: 0xC3CD, + 35159 - 11904: 0xF2EC, + 35160 - 11904: 0xF2EF, + 35161 - 11904: 0xF2F1, + 35162 - 11904: 0xF2EA, + 35163 - 11904: 0xF2EB, + 35164 - 11904: 0xF2EE, + 35165 - 11904: 0xF2F0, + 35166 - 11904: 0xC3CE, + 35167 - 11904: 0xC3CC, + 35168 - 11904: 0xC3CB, + 35169 - 11904: 0xF2ED, + 35170 - 11904: 0xF2E9, + 35171 - 11904: 0xF4CA, + 35172 - 11904: 0xC4B0, + 35173 - 11904: 0x95A6, + 35174 - 11904: 0xF4CB, + 35177 - 11904: 0xF649, + 35178 - 11904: 0xC4FB, + 35179 - 11904: 0xF64B, + 35180 - 11904: 0xC4FC, + 35181 - 11904: 0xF648, + 35182 - 11904: 0xF64A, + 35183 - 11904: 0xC5A8, + 35185 - 11904: 0xF752, + 35186 - 11904: 0xC5A7, + 35187 - 11904: 0xF7FD, + 35188 - 11904: 0xF7FC, + 35190 - 11904: 0xF7FB, + 35191 - 11904: 0x9C5D, + 35193 - 11904: 0xF948, + 35194 - 11904: 0xF949, + 35195 - 11904: 0xF94B, + 35196 - 11904: 0xF94A, + 35198 - 11904: 0xCA50, + 35199 - 11904: 0xA6E8, + 35200 - 11904: 0x98E2, + 35201 - 11904: 0xAD6E, + 35202 - 11904: 0xD7C5, + 35203 - 11904: 0xB5F7, + 35205 - 11904: 0xDFFA, + 35206 - 11904: 0xC2D0, + 35207 - 11904: 0x8FC9, + 35208 - 11904: 0xF2F2, + 35209 - 11904: 0xA0C2, + 35210 - 11904: 0x8FCA, + 35211 - 11904: 0xA8A3, + 35215 - 11904: 0xB357, + 35217 - 11904: 0x99D4, + 35219 - 11904: 0xB356, + 35220 - 11904: 0xA0B9, + 35221 - 11904: 0xDBD0, + 35222 - 11904: 0xB5F8, + 35223 - 11904: 0xDBD2, + 35224 - 11904: 0xDBD1, + 35227 - 11904: 0xDFFB, + 35228 - 11904: 0xB8D0, + 35229 - 11904: 0xE443, + 35230 - 11904: 0xE446, + 35231 - 11904: 0xE445, + 35233 - 11904: 0xE444, + 35234 - 11904: 0xE7CE, + 35235 - 11904: 0xE7D0, + 35236 - 11904: 0xE7CF, + 35237 - 11904: 0x9B58, + 35238 - 11904: 0xBFCC, + 35239 - 11904: 0x8FCD, + 35241 - 11904: 0xA0D4, + 35242 - 11904: 0xBFCB, + 35244 - 11904: 0xC1BB, + 35245 - 11904: 0xEE79, + 35246 - 11904: 0xEE7B, + 35247 - 11904: 0xEE7A, + 35250 - 11904: 0xC2D1, + 35254 - 11904: 0xF2F4, + 35255 - 11904: 0xF2F3, + 35257 - 11904: 0xF4CC, + 35258 - 11904: 0xC4B1, + 35260 - 11904: 0x8FCE, + 35261 - 11904: 0xC4FD, + 35262 - 11904: 0xF754, + 35263 - 11904: 0xF753, + 35264 - 11904: 0xC65B, + 35265 - 11904: 0x8BE5, + 35270 - 11904: 0x8979, + 35282 - 11904: 0xA8A4, + 35283 - 11904: 0xD0AF, + 35284 - 11904: 0xAD6F, + 35285 - 11904: 0xD7C8, + 35286 - 11904: 0xD7C6, + 35289 - 11904: 0xD7C7, + 35290 - 11904: 0xDBD4, + 35291 - 11904: 0xDBD5, + 35292 - 11904: 0xE043, + 35293 - 11904: 0xDBD3, + 35295 - 11904: 0xDFFC, + 35296 - 11904: 0xE041, + 35297 - 11904: 0xE040, + 35298 - 11904: 0xE042, + 35299 - 11904: 0xB8D1, + 35300 - 11904: 0xDFFE, + 35301 - 11904: 0xDFFD, + 35302 - 11904: 0xE044, + 35303 - 11904: 0x8FD0, + 35304 - 11904: 0xE449, + 35305 - 11904: 0xE447, + 35307 - 11904: 0xE448, + 35308 - 11904: 0xE7D3, + 35309 - 11904: 0xE7D1, + 35312 - 11904: 0xE7D2, + 35313 - 11904: 0xEB7D, + 35314 - 11904: 0xEE7C, + 35315 - 11904: 0xEE7D, + 35316 - 11904: 0xC2D2, + 35318 - 11904: 0xF2F5, + 35319 - 11904: 0xF4CD, + 35320 - 11904: 0xC4B2, + 35322 - 11904: 0xF64C, + 35323 - 11904: 0xF755, + 35324 - 11904: 0xC5A9, + 35326 - 11904: 0xF7FE, + 35327 - 11904: 0xF94C, + 35328 - 11904: 0xA8A5, + 35330 - 11904: 0xAD71, + 35331 - 11904: 0xAD72, + 35332 - 11904: 0xD0B0, + 35335 - 11904: 0xD0B1, + 35336 - 11904: 0xAD70, + 35338 - 11904: 0xB054, + 35340 - 11904: 0xB052, + 35342 - 11904: 0xB051, + 35343 - 11904: 0xB058, + 35344 - 11904: 0xB050, + 35345 - 11904: 0xB059, + 35346 - 11904: 0xD3DD, + 35347 - 11904: 0xB056, + 35349 - 11904: 0xB053, + 35350 - 11904: 0xB057, + 35351 - 11904: 0xB055, + 35352 - 11904: 0xB04F, + 35355 - 11904: 0xB35F, + 35356 - 11904: 0x95B6, + 35357 - 11904: 0xB359, + 35358 - 11904: 0xD7CC, + 35359 - 11904: 0xB35E, + 35362 - 11904: 0xB360, + 35363 - 11904: 0xB35A, + 35365 - 11904: 0xB35B, + 35367 - 11904: 0xD7CA, + 35369 - 11904: 0x99D6, + 35370 - 11904: 0xB358, + 35371 - 11904: 0x95E5, + 35372 - 11904: 0xD7CB, + 35373 - 11904: 0xB35D, + 35376 - 11904: 0xD7C9, + 35377 - 11904: 0xB35C, + 35380 - 11904: 0xB644, + 35382 - 11904: 0xB646, + 35384 - 11904: 0x99D7, + 35385 - 11904: 0xDBD8, + 35386 - 11904: 0xB645, + 35387 - 11904: 0xB5F9, + 35388 - 11904: 0xB5FD, + 35389 - 11904: 0x95B5, + 35390 - 11904: 0xB8E4, + 35391 - 11904: 0xE049, + 35392 - 11904: 0xDBDA, + 35393 - 11904: 0xB5FE, + 35396 - 11904: 0xDBDD, + 35397 - 11904: 0xDBDE, + 35398 - 11904: 0xB643, + 35400 - 11904: 0xDBE0, + 35401 - 11904: 0xA0CA, + 35402 - 11904: 0xDBE2, + 35404 - 11904: 0xDBE3, + 35405 - 11904: 0xDBD7, + 35406 - 11904: 0xDBD6, + 35407 - 11904: 0xDBE4, + 35408 - 11904: 0xB642, + 35409 - 11904: 0xDBE1, + 35410 - 11904: 0xDBDF, + 35412 - 11904: 0xB640, + 35413 - 11904: 0xB5FB, + 35414 - 11904: 0xB647, + 35415 - 11904: 0xDBDB, + 35416 - 11904: 0xDBDC, + 35417 - 11904: 0xDBD9, + 35419 - 11904: 0xB641, + 35422 - 11904: 0xB5FC, + 35424 - 11904: 0xB5FA, + 35425 - 11904: 0xE048, + 35426 - 11904: 0xB8DF, + 35427 - 11904: 0xB8DA, + 35430 - 11904: 0xB8D5, + 35431 - 11904: 0x9FFD, + 35432 - 11904: 0xB8E5, + 35433 - 11904: 0xB8D6, + 35435 - 11904: 0xB8D2, + 35436 - 11904: 0xB8E1, + 35437 - 11904: 0xB8DE, + 35438 - 11904: 0xB8E0, + 35440 - 11904: 0xB8D7, + 35441 - 11904: 0xB8DC, + 35442 - 11904: 0xB8D3, + 35443 - 11904: 0xB8D4, + 35444 - 11904: 0xE050, + 35445 - 11904: 0xE04D, + 35446 - 11904: 0xE045, + 35447 - 11904: 0xE04A, + 35449 - 11904: 0xB8E2, + 35450 - 11904: 0xE051, + 35451 - 11904: 0xB8E3, + 35452 - 11904: 0xB8D9, + 35454 - 11904: 0xA058, + 35455 - 11904: 0xE047, + 35457 - 11904: 0xE04F, + 35458 - 11904: 0xE04B, + 35459 - 11904: 0xE04E, + 35460 - 11904: 0xE04C, + 35461 - 11904: 0xB8DD, + 35462 - 11904: 0xE046, + 35463 - 11904: 0xB8D8, + 35467 - 11904: 0xE44C, + 35468 - 11904: 0xBB78, + 35469 - 11904: 0xBB7B, + 35471 - 11904: 0xE44E, + 35472 - 11904: 0x8FD6, + 35473 - 11904: 0xBBA5, + 35474 - 11904: 0xE44D, + 35475 - 11904: 0xBB7D, + 35476 - 11904: 0x99D8, + 35477 - 11904: 0xBDCF, + 35478 - 11904: 0xE44F, + 35480 - 11904: 0xBBA4, + 35481 - 11904: 0xE44B, + 35482 - 11904: 0xBBA6, + 35484 - 11904: 0x8FD3, + 35486 - 11904: 0xBB79, + 35488 - 11904: 0xB8DB, + 35489 - 11904: 0xBB7C, + 35491 - 11904: 0xBB7A, + 35492 - 11904: 0xBB7E, + 35493 - 11904: 0xBBA2, + 35494 - 11904: 0xBB77, + 35495 - 11904: 0xBBA7, + 35496 - 11904: 0xBBA3, + 35497 - 11904: 0x8FE5, + 35498 - 11904: 0xBBA1, + 35499 - 11904: 0xE44A, + 35503 - 11904: 0x8FE9, + 35504 - 11904: 0xBDD6, + 35506 - 11904: 0xBDD2, + 35508 - 11904: 0x99D9, + 35510 - 11904: 0xBDD9, + 35512 - 11904: 0xE7D6, + 35513 - 11904: 0xBDDA, + 35514 - 11904: 0xE7E2, + 35515 - 11904: 0xE7DB, + 35516 - 11904: 0xBDCB, + 35517 - 11904: 0xE7E3, + 35518 - 11904: 0xE7DD, + 35519 - 11904: 0xBDD5, + 35520 - 11904: 0xE7DE, + 35522 - 11904: 0xBDD4, + 35523 - 11904: 0xE7E1, + 35524 - 11904: 0xBDCE, + 35525 - 11904: 0xE7DF, + 35526 - 11904: 0xE7D5, + 35527 - 11904: 0xBDCD, + 35528 - 11904: 0xEBAA, + 35529 - 11904: 0xBDD3, + 35531 - 11904: 0xBDD0, + 35532 - 11904: 0x8CF7, + 35533 - 11904: 0xBDD8, + 35535 - 11904: 0xE7D4, + 35537 - 11904: 0xE7D8, + 35538 - 11904: 0xBDCC, + 35539 - 11904: 0xE7D7, + 35540 - 11904: 0xE7D9, + 35541 - 11904: 0xE7DA, + 35542 - 11904: 0xBDD7, + 35543 - 11904: 0xE7DC, + 35544 - 11904: 0xE7E0, + 35545 - 11904: 0xE7E4, + 35546 - 11904: 0x927C, + 35547 - 11904: 0xBDDB, + 35548 - 11904: 0xBFD2, + 35549 - 11904: 0xEBA5, + 35550 - 11904: 0xEBAB, + 35551 - 11904: 0xEBA8, + 35552 - 11904: 0xEB7E, + 35553 - 11904: 0xEBAC, + 35554 - 11904: 0xEBA1, + 35556 - 11904: 0xEBA7, + 35558 - 11904: 0xBFCD, + 35559 - 11904: 0xBFD3, + 35560 - 11904: 0xEBAD, + 35562 - 11904: 0x9C45, + 35563 - 11904: 0xBFCF, + 35565 - 11904: 0xBFD9, + 35566 - 11904: 0xBFD4, + 35567 - 11904: 0xEBAF, + 35568 - 11904: 0xEBA9, + 35569 - 11904: 0xBFD0, + 35570 - 11904: 0xEBA2, + 35571 - 11904: 0xBFDA, + 35572 - 11904: 0xEBA3, + 35573 - 11904: 0xEBA4, + 35574 - 11904: 0xBFDB, + 35575 - 11904: 0xBFD8, + 35576 - 11904: 0xBDD1, + 35577 - 11904: 0x8CE8, + 35578 - 11904: 0xBFCE, + 35579 - 11904: 0xEBB0, + 35580 - 11904: 0xBFDC, + 35582 - 11904: 0xBFD5, + 35583 - 11904: 0xEBAE, + 35584 - 11904: 0xBFD1, + 35585 - 11904: 0xBFD6, + 35586 - 11904: 0xBFD7, + 35588 - 11904: 0xC1C3, + 35589 - 11904: 0xEEA4, + 35590 - 11904: 0xEEAD, + 35591 - 11904: 0xEEAA, + 35592 - 11904: 0xEEAC, + 35594 - 11904: 0xC1C0, + 35595 - 11904: 0xEEA5, + 35596 - 11904: 0x8FDE, + 35597 - 11904: 0xEEAB, + 35598 - 11904: 0xC1BC, + 35599 - 11904: 0xEEA7, + 35600 - 11904: 0xC1C4, + 35601 - 11904: 0xEEA3, + 35602 - 11904: 0xEEA8, + 35603 - 11904: 0xEEAF, + 35604 - 11904: 0xEBA6, + 35605 - 11904: 0xEEA9, + 35606 - 11904: 0xEEA2, + 35607 - 11904: 0xC1BD, + 35608 - 11904: 0xEEA1, + 35609 - 11904: 0xC1BE, + 35610 - 11904: 0xEEB0, + 35611 - 11904: 0xC1BF, + 35612 - 11904: 0xEEAE, + 35613 - 11904: 0xC1C2, + 35614 - 11904: 0xEE7E, + 35615 - 11904: 0x8FDF, + 35616 - 11904: 0xC1C1, + 35618 - 11904: 0xEEA6, + 35619 - 11904: 0xF0DC, + 35620 - 11904: 0xF0EA, + 35621 - 11904: 0xF0E5, + 35622 - 11904: 0xF0E7, + 35623 - 11904: 0xF0DB, + 35624 - 11904: 0xC2D3, + 35626 - 11904: 0xF0DA, + 35627 - 11904: 0xC2D6, + 35628 - 11904: 0xC2D5, + 35629 - 11904: 0xA04B, + 35630 - 11904: 0xF0E9, + 35631 - 11904: 0xF0E1, + 35632 - 11904: 0xF0DE, + 35633 - 11904: 0xF0E4, + 35635 - 11904: 0xF0DD, + 35637 - 11904: 0xF0DF, + 35638 - 11904: 0xF0E8, + 35639 - 11904: 0xF0E6, + 35641 - 11904: 0xC2D4, + 35642 - 11904: 0xF0ED, + 35643 - 11904: 0xF0EB, + 35644 - 11904: 0xF0E2, + 35645 - 11904: 0xF0EC, + 35646 - 11904: 0xF0E3, + 35647 - 11904: 0x8FE2, + 35648 - 11904: 0xF2F9, + 35649 - 11904: 0xC3CF, + 35650 - 11904: 0xF341, + 35651 - 11904: 0xA0CC, + 35653 - 11904: 0xF64F, + 35654 - 11904: 0xC3D6, + 35655 - 11904: 0xF0E0, + 35656 - 11904: 0xF2F7, + 35657 - 11904: 0xC3D2, + 35658 - 11904: 0xF2F8, + 35659 - 11904: 0xF2FD, + 35660 - 11904: 0x8FE3, + 35661 - 11904: 0x8FE4, + 35662 - 11904: 0xC3D4, + 35663 - 11904: 0xC3D5, + 35664 - 11904: 0xF2F6, + 35665 - 11904: 0xF340, + 35666 - 11904: 0xF342, + 35667 - 11904: 0xF2FA, + 35668 - 11904: 0xF2FC, + 35669 - 11904: 0xF2FE, + 35670 - 11904: 0xF2FB, + 35671 - 11904: 0xF343, + 35672 - 11904: 0xC3D1, + 35673 - 11904: 0xC3D7, + 35674 - 11904: 0xC3D3, + 35676 - 11904: 0xC3D0, + 35677 - 11904: 0xF4D0, + 35678 - 11904: 0x9BC4, + 35679 - 11904: 0xC4B7, + 35680 - 11904: 0xF4CE, + 35682 - 11904: 0x9BFC, + 35683 - 11904: 0xF4D2, + 35685 - 11904: 0xF4D3, + 35686 - 11904: 0xC4B5, + 35687 - 11904: 0xF4D4, + 35688 - 11904: 0xF4D1, + 35689 - 11904: 0x964C, + 35690 - 11904: 0xF4CF, + 35691 - 11904: 0xC4B8, + 35692 - 11904: 0xC4B4, + 35693 - 11904: 0xF4D5, + 35695 - 11904: 0xC4B6, + 35696 - 11904: 0xC4B3, + 35700 - 11904: 0xC4FE, + 35703 - 11904: 0xC540, + 35704 - 11904: 0xF64E, + 35705 - 11904: 0xF64D, + 35706 - 11904: 0xF650, + 35707 - 11904: 0xF651, + 35709 - 11904: 0xC541, + 35710 - 11904: 0xF756, + 35711 - 11904: 0xF75B, + 35712 - 11904: 0xC5AA, + 35713 - 11904: 0x9AF6, + 35714 - 11904: 0xF758, + 35715 - 11904: 0x8CAE, + 35716 - 11904: 0xF757, + 35717 - 11904: 0xF75A, + 35718 - 11904: 0xF759, + 35720 - 11904: 0xF843, + 35722 - 11904: 0xC5DC, + 35723 - 11904: 0xF842, + 35724 - 11904: 0xF840, + 35726 - 11904: 0xF841, + 35727 - 11904: 0x87CB, + 35728 - 11904: 0x8FE7, + 35730 - 11904: 0xC5FE, + 35731 - 11904: 0xC5FD, + 35732 - 11904: 0xF8C1, + 35733 - 11904: 0xF8C2, + 35734 - 11904: 0xC640, + 35736 - 11904: 0xF94D, + 35737 - 11904: 0xF94E, + 35738 - 11904: 0xC667, + 35739 - 11904: 0x8FE8, + 35740 - 11904: 0xC66D, + 35742 - 11904: 0xF9A9, + 35743 - 11904: 0xF9C8, + 35744 - 11904: 0x8BE7, + 35774 - 11904: 0x897A, + 35810 - 11904: 0x897B, + 35895 - 11904: 0xA8A6, + 35897 - 11904: 0xD7CD, + 35899 - 11904: 0xD7CE, + 35900 - 11904: 0xE052, + 35901 - 11904: 0xE450, + 35902 - 11904: 0xE7E5, + 35903 - 11904: 0xC1C6, + 35905 - 11904: 0xC1C5, + 35906 - 11904: 0xF0EE, + 35907 - 11904: 0xF344, + 35909 - 11904: 0xF844, + 35910 - 11904: 0xA8A7, + 35911 - 11904: 0xD3DE, + 35912 - 11904: 0xB05A, + 35913 - 11904: 0xB361, + 35914 - 11904: 0xE054, + 35915 - 11904: 0xE053, + 35916 - 11904: 0xBDDC, + 35917 - 11904: 0xE7E6, + 35918 - 11904: 0xBDDD, + 35919 - 11904: 0xEEB1, + 35920 - 11904: 0xC2D7, + 35921 - 11904: 0x99DA, + 35924 - 11904: 0xC676, + 35925 - 11904: 0xA8A8, + 35926 - 11904: 0xCDCB, + 35927 - 11904: 0xD3DF, + 35930 - 11904: 0xB362, + 35932 - 11904: 0xD7CF, + 35933 - 11904: 0xD7D0, + 35935 - 11904: 0xDBE5, + 35937 - 11904: 0xB648, + 35938 - 11904: 0xB8E6, + 35940 - 11904: 0xE056, + 35941 - 11904: 0xE055, + 35942 - 11904: 0xE057, + 35944 - 11904: 0xE451, + 35945 - 11904: 0xE452, + 35946 - 11904: 0xBBA8, + 35947 - 11904: 0xBFDD, + 35948 - 11904: 0xBDDE, + 35949 - 11904: 0xBFDE, + 35951 - 11904: 0xEEB5, + 35952 - 11904: 0xEEB2, + 35953 - 11904: 0xEEB4, + 35954 - 11904: 0xEEB3, + 35955 - 11904: 0xC1C7, + 35957 - 11904: 0xF0EF, + 35958 - 11904: 0xF346, + 35959 - 11904: 0xF345, + 35960 - 11904: 0xCBA4, + 35961 - 11904: 0xB05C, + 35962 - 11904: 0xB05B, + 35963 - 11904: 0xD3E0, + 35965 - 11904: 0xD7D1, + 35968 - 11904: 0xDBE7, + 35969 - 11904: 0xDBE6, + 35970 - 11904: 0xB649, + 35972 - 11904: 0xE059, + 35973 - 11904: 0xE05A, + 35974 - 11904: 0xE058, + 35977 - 11904: 0xB8E8, + 35978 - 11904: 0xB8E7, + 35980 - 11904: 0xBBAA, + 35981 - 11904: 0xBBA9, + 35983 - 11904: 0xE7E7, + 35984 - 11904: 0xEBB3, + 35985 - 11904: 0xEBB1, + 35986 - 11904: 0xEBB2, + 35987 - 11904: 0xBFDF, + 35988 - 11904: 0xEEB7, + 35989 - 11904: 0xEEB6, + 35991 - 11904: 0xF0F2, + 35992 - 11904: 0xF0F1, + 35993 - 11904: 0xF0F0, + 35994 - 11904: 0xF347, + 35995 - 11904: 0x8FED, + 35996 - 11904: 0xF9AA, + 35997 - 11904: 0xA8A9, + 35998 - 11904: 0xAD73, + 35999 - 11904: 0x95C0, + 36000 - 11904: 0xAD74, + 36001 - 11904: 0xB05D, + 36002 - 11904: 0xB05E, + 36003 - 11904: 0xD3E2, + 36004 - 11904: 0xD3E1, + 36005 - 11904: 0xD7D2, + 36007 - 11904: 0xB368, + 36008 - 11904: 0xB366, + 36009 - 11904: 0xB363, + 36010 - 11904: 0xB367, + 36011 - 11904: 0xB365, + 36012 - 11904: 0xB364, + 36013 - 11904: 0xA0CB, + 36015 - 11904: 0xB64A, + 36016 - 11904: 0xDBEA, + 36018 - 11904: 0xB8ED, + 36019 - 11904: 0xB64C, + 36020 - 11904: 0xB651, + 36021 - 11904: 0xDBEC, + 36022 - 11904: 0xB653, + 36023 - 11904: 0xB652, + 36024 - 11904: 0xB655, + 36025 - 11904: 0xDBEB, + 36026 - 11904: 0xDBE8, + 36027 - 11904: 0xB64F, + 36028 - 11904: 0xB64B, + 36029 - 11904: 0xB64D, + 36030 - 11904: 0xDBE9, + 36031 - 11904: 0xB654, + 36032 - 11904: 0xB650, + 36033 - 11904: 0xB64E, + 36034 - 11904: 0xB8EF, + 36035 - 11904: 0xB8EE, + 36036 - 11904: 0xB8EC, + 36037 - 11904: 0xB8F0, + 36039 - 11904: 0xB8EA, + 36040 - 11904: 0xB8EB, + 36042 - 11904: 0xB8E9, + 36044 - 11904: 0xE05B, + 36045 - 11904: 0x9E48, + 36047 - 11904: 0xE454, + 36049 - 11904: 0xBBAC, + 36050 - 11904: 0xBBAD, + 36051 - 11904: 0xBBAB, + 36052 - 11904: 0x99DB, + 36053 - 11904: 0xE453, + 36054 - 11904: 0x8FF3, + 36055 - 11904: 0xE455, + 36057 - 11904: 0xE7EA, + 36058 - 11904: 0xE7EC, + 36059 - 11904: 0x8FF9, + 36060 - 11904: 0xBDE7, + 36061 - 11904: 0xE7ED, + 36062 - 11904: 0xBDE0, + 36063 - 11904: 0xE7E9, + 36064 - 11904: 0xBDDF, + 36065 - 11904: 0xBDE9, + 36066 - 11904: 0xBDE5, + 36067 - 11904: 0xBDE6, + 36068 - 11904: 0xBDE2, + 36069 - 11904: 0xE7E8, + 36070 - 11904: 0xBDE1, + 36071 - 11904: 0xE7EE, + 36072 - 11904: 0xE7EB, + 36073 - 11904: 0x95C1, + 36074 - 11904: 0xBDE8, + 36075 - 11904: 0xA04E, + 36076 - 11904: 0xBDE3, + 36077 - 11904: 0xBDE4, + 36078 - 11904: 0xEBB5, + 36080 - 11904: 0xEBB7, + 36081 - 11904: 0xEBB6, + 36082 - 11904: 0x99DC, + 36083 - 11904: 0xEBB8, + 36084 - 11904: 0xBFE0, + 36085 - 11904: 0xEBB4, + 36087 - 11904: 0xA064, + 36088 - 11904: 0xC1CB, + 36089 - 11904: 0xEEB8, + 36090 - 11904: 0xC1C8, + 36091 - 11904: 0xC1CC, + 36092 - 11904: 0xC1CA, + 36093 - 11904: 0xC1C9, + 36094 - 11904: 0xF0F3, + 36096 - 11904: 0xF0F6, + 36098 - 11904: 0xF0F5, + 36099 - 11904: 0x8FF7, + 36100 - 11904: 0xF0F4, + 36101 - 11904: 0xC2D8, + 36102 - 11904: 0xF348, + 36103 - 11904: 0xF349, + 36104 - 11904: 0xC3D8, + 36105 - 11904: 0xF34A, + 36106 - 11904: 0xC3D9, + 36107 - 11904: 0x89B0, + 36108 - 11904: 0xA048, + 36109 - 11904: 0xC4BA, + 36111 - 11904: 0xC4B9, + 36112 - 11904: 0xF652, + 36113 - 11904: 0x8FFB, + 36114 - 11904: 0x8FF6, + 36115 - 11904: 0xC542, + 36116 - 11904: 0xF653, + 36117 - 11904: 0xF75C, + 36118 - 11904: 0xC5AB, + 36119 - 11904: 0xC5AC, + 36120 - 11904: 0x9DDC, + 36121 - 11904: 0xF845, + 36123 - 11904: 0xC642, + 36124 - 11904: 0x99DD, + 36125 - 11904: 0x8BE8, + 36196 - 11904: 0xA8AA, + 36198 - 11904: 0xB36A, + 36199 - 11904: 0xB369, + 36200 - 11904: 0xE05C, + 36201 - 11904: 0xE05D, + 36203 - 11904: 0xBBAE, + 36204 - 11904: 0xEBB9, + 36205 - 11904: 0xBDEA, + 36206 - 11904: 0xEBBA, + 36207 - 11904: 0xEEB9, + 36208 - 11904: 0xA8AB, + 36210 - 11904: 0xD0B2, + 36211 - 11904: 0xAD76, + 36212 - 11904: 0xAD75, + 36214 - 11904: 0xD3E3, + 36215 - 11904: 0xB05F, + 36216 - 11904: 0xD3E4, + 36217 - 11904: 0xD7D5, + 36218 - 11904: 0x92C1, + 36219 - 11904: 0xD7D4, + 36221 - 11904: 0xD7D3, + 36224 - 11904: 0xDBEE, + 36225 - 11904: 0xB658, + 36226 - 11904: 0x9FD6, + 36228 - 11904: 0xDBED, + 36229 - 11904: 0xB657, + 36233 - 11904: 0xDBEF, + 36234 - 11904: 0xB656, + 36236 - 11904: 0xE05F, + 36237 - 11904: 0xE062, + 36238 - 11904: 0xE060, + 36239 - 11904: 0xE061, + 36240 - 11904: 0xE065, + 36241 - 11904: 0xE05E, + 36242 - 11904: 0xE066, + 36243 - 11904: 0xE063, + 36244 - 11904: 0xE064, + 36245 - 11904: 0xBBB0, + 36246 - 11904: 0xE456, + 36249 - 11904: 0xBBAF, + 36251 - 11904: 0xE7F2, + 36252 - 11904: 0xE7F0, + 36255 - 11904: 0xBDEB, + 36256 - 11904: 0xE7EF, + 36257 - 11904: 0xE7F1, + 36259 - 11904: 0xBDEC, + 36261 - 11904: 0xEBBB, + 36262 - 11904: 0xA0D2, + 36263 - 11904: 0xEBBC, + 36264 - 11904: 0xC1CD, + 36265 - 11904: 0x9040, + 36266 - 11904: 0xF34C, + 36267 - 11904: 0xF34E, + 36268 - 11904: 0xF34B, + 36269 - 11904: 0xF34D, + 36270 - 11904: 0xF4D6, + 36271 - 11904: 0xF654, + 36274 - 11904: 0xF96F, + 36275 - 11904: 0xA8AC, + 36276 - 11904: 0xAD77, + 36277 - 11904: 0xD3E5, + 36278 - 11904: 0xD3E7, + 36279 - 11904: 0xD3E6, + 36281 - 11904: 0xD7D8, + 36282 - 11904: 0xB36C, + 36284 - 11904: 0xD7D6, + 36286 - 11904: 0xB36B, + 36287 - 11904: 0xD7D9, + 36288 - 11904: 0x8AC4, + 36289 - 11904: 0xD7DA, + 36290 - 11904: 0xD7D7, + 36291 - 11904: 0x99E0, + 36293 - 11904: 0xDBFB, + 36294 - 11904: 0xB660, + 36295 - 11904: 0xDBF3, + 36296 - 11904: 0xDBF9, + 36299 - 11904: 0xB65B, + 36300 - 11904: 0xB65E, + 36301 - 11904: 0xDBF2, + 36302 - 11904: 0xB659, + 36303 - 11904: 0xDBF6, + 36304 - 11904: 0xE06C, + 36305 - 11904: 0xB65D, + 36307 - 11904: 0xDBF1, + 36308 - 11904: 0x9FF0, + 36309 - 11904: 0xDBF7, + 36310 - 11904: 0xDBF4, + 36311 - 11904: 0xDBFA, + 36312 - 11904: 0xDBF0, + 36313 - 11904: 0xDBF8, + 36314 - 11904: 0xB65C, + 36315 - 11904: 0xB65F, + 36316 - 11904: 0xDBF5, + 36317 - 11904: 0xB65A, + 36319 - 11904: 0xB8F2, + 36320 - 11904: 0xE068, + 36321 - 11904: 0xB8F1, + 36322 - 11904: 0xE06F, + 36323 - 11904: 0xE06E, + 36324 - 11904: 0xB8F8, + 36326 - 11904: 0xB8F9, + 36327 - 11904: 0xE070, + 36328 - 11904: 0xB8F3, + 36329 - 11904: 0xE06D, + 36330 - 11904: 0xB8F7, + 36331 - 11904: 0xE072, + 36332 - 11904: 0xE069, + 36334 - 11904: 0xE06B, + 36335 - 11904: 0xB8F4, + 36336 - 11904: 0xE067, + 36337 - 11904: 0xE06A, + 36338 - 11904: 0xE071, + 36339 - 11904: 0xB8F5, + 36340 - 11904: 0xE073, + 36346 - 11904: 0xB8F6, + 36348 - 11904: 0xBBB1, + 36349 - 11904: 0xE45B, + 36350 - 11904: 0xE461, + 36351 - 11904: 0xE459, + 36352 - 11904: 0xE462, + 36353 - 11904: 0x9FF3, + 36354 - 11904: 0xE458, + 36355 - 11904: 0xE45D, + 36356 - 11904: 0xE463, + 36357 - 11904: 0xE460, + 36358 - 11904: 0xE45F, + 36359 - 11904: 0xE45E, + 36361 - 11904: 0xE457, + 36362 - 11904: 0xE45C, + 36365 - 11904: 0xE45A, + 36366 - 11904: 0x9DBF, + 36367 - 11904: 0xBDF1, + 36368 - 11904: 0xBDEE, + 36369 - 11904: 0xE7FB, + 36370 - 11904: 0xE841, + 36371 - 11904: 0xE843, + 36372 - 11904: 0xE840, + 36373 - 11904: 0xE7F8, + 36374 - 11904: 0xE7FA, + 36375 - 11904: 0xE845, + 36376 - 11904: 0xE842, + 36377 - 11904: 0xE7FC, + 36378 - 11904: 0xE846, + 36379 - 11904: 0xE7F9, + 36380 - 11904: 0xE844, + 36381 - 11904: 0xBDEF, + 36382 - 11904: 0xBDF5, + 36383 - 11904: 0xBDF3, + 36384 - 11904: 0xE7F3, + 36385 - 11904: 0xBDF4, + 36386 - 11904: 0xBDF0, + 36387 - 11904: 0xE7F4, + 36388 - 11904: 0xE7F6, + 36389 - 11904: 0xE7F5, + 36390 - 11904: 0xE7FD, + 36391 - 11904: 0xE7FE, + 36392 - 11904: 0x9FF6, + 36393 - 11904: 0xBDF2, + 36394 - 11904: 0x95C8, + 36395 - 11904: 0xBDED, + 36397 - 11904: 0x9E5A, + 36398 - 11904: 0xE7F7, + 36400 - 11904: 0xEBC6, + 36401 - 11904: 0xBFE2, + 36403 - 11904: 0xEBBD, + 36404 - 11904: 0xBFE3, + 36405 - 11904: 0xBFE6, + 36406 - 11904: 0xEBC2, + 36408 - 11904: 0xEBBF, + 36409 - 11904: 0xBFE5, + 36410 - 11904: 0x99E3, + 36412 - 11904: 0xEBC3, + 36413 - 11904: 0xEBC4, + 36414 - 11904: 0xEBBE, + 36415 - 11904: 0xEBC7, + 36416 - 11904: 0xEBC0, + 36417 - 11904: 0xEBC5, + 36418 - 11904: 0xBFE4, + 36420 - 11904: 0xBFE1, + 36421 - 11904: 0xEBC1, + 36422 - 11904: 0x8A4A, + 36423 - 11904: 0xEEBF, + 36424 - 11904: 0xC1D0, + 36425 - 11904: 0xC1CE, + 36426 - 11904: 0xC1D1, + 36427 - 11904: 0xC1CF, + 36428 - 11904: 0xEEBE, + 36429 - 11904: 0xEEBB, + 36430 - 11904: 0xEEBA, + 36431 - 11904: 0x9FF1, + 36432 - 11904: 0xEEBD, + 36435 - 11904: 0xEEBC, + 36436 - 11904: 0xF145, + 36437 - 11904: 0xC2DE, + 36438 - 11904: 0xF0FB, + 36439 - 11904: 0xF0FA, + 36441 - 11904: 0xC2D9, + 36442 - 11904: 0xF141, + 36443 - 11904: 0xF140, + 36444 - 11904: 0xF0F7, + 36445 - 11904: 0xF143, + 36446 - 11904: 0xF0FC, + 36447 - 11904: 0xC2DD, + 36448 - 11904: 0xF0F9, + 36449 - 11904: 0xF142, + 36450 - 11904: 0xF0F8, + 36451 - 11904: 0xC2DA, + 36452 - 11904: 0xC2DC, + 36453 - 11904: 0xF0FD, + 36454 - 11904: 0xC2DB, + 36455 - 11904: 0xF0FE, + 36456 - 11904: 0x8AA7, + 36457 - 11904: 0xF144, + 36458 - 11904: 0xF352, + 36460 - 11904: 0xC3DE, + 36461 - 11904: 0xF34F, + 36463 - 11904: 0xF353, + 36465 - 11904: 0x99E6, + 36466 - 11904: 0xC3DB, + 36467 - 11904: 0xF351, + 36468 - 11904: 0xC3E0, + 36469 - 11904: 0x9FF7, + 36470 - 11904: 0xC3DD, + 36471 - 11904: 0x9FED, + 36472 - 11904: 0xF350, + 36474 - 11904: 0xC3DF, + 36475 - 11904: 0xF354, + 36476 - 11904: 0xC3DA, + 36478 - 11904: 0x8A5C, + 36480 - 11904: 0x9DAE, + 36481 - 11904: 0xC4BC, + 36482 - 11904: 0xC4BE, + 36484 - 11904: 0xF4D9, + 36485 - 11904: 0xC4BD, + 36486 - 11904: 0xF4D7, + 36487 - 11904: 0xC3DC, + 36488 - 11904: 0xF4D8, + 36489 - 11904: 0xC4BB, + 36490 - 11904: 0xC543, + 36491 - 11904: 0xC545, + 36492 - 11904: 0xF656, + 36493 - 11904: 0xC544, + 36494 - 11904: 0xF655, + 36496 - 11904: 0xF761, + 36497 - 11904: 0xC5AD, + 36498 - 11904: 0xF760, + 36499 - 11904: 0xC5AE, + 36500 - 11904: 0xF75E, + 36501 - 11904: 0xF75D, + 36502 - 11904: 0xF762, + 36503 - 11904: 0xF763, + 36504 - 11904: 0xF846, + 36506 - 11904: 0xF75F, + 36509 - 11904: 0xF8C6, + 36510 - 11904: 0xF8C3, + 36511 - 11904: 0xF8C4, + 36512 - 11904: 0xF8C5, + 36513 - 11904: 0xC65C, + 36515 - 11904: 0xF951, + 36516 - 11904: 0xF950, + 36517 - 11904: 0xF94F, + 36518 - 11904: 0xF970, + 36519 - 11904: 0x95C9, + 36520 - 11904: 0xF9BE, + 36521 - 11904: 0xF9AB, + 36522 - 11904: 0xC66E, + 36523 - 11904: 0xA8AD, + 36524 - 11904: 0xB060, + 36525 - 11904: 0x9048, + 36528 - 11904: 0x99E8, + 36530 - 11904: 0xB8FA, + 36534 - 11904: 0x9049, + 36537 - 11904: 0x8CBA, + 36538 - 11904: 0xBDF6, + 36540 - 11904: 0x90B1, + 36541 - 11904: 0xEBC8, + 36544 - 11904: 0xC2DF, + 36546 - 11904: 0xF355, + 36547 - 11904: 0x904A, + 36553 - 11904: 0xF9AC, + 36554 - 11904: 0xA8AE, + 36555 - 11904: 0xAAEE, + 36556 - 11904: 0xAD79, + 36557 - 11904: 0xAD78, + 36558 - 11904: 0x99EA, + 36559 - 11904: 0xB063, + 36561 - 11904: 0xD3E8, + 36562 - 11904: 0xB061, + 36563 - 11904: 0xD3E9, + 36564 - 11904: 0xB062, + 36567 - 11904: 0xD7DF, + 36568 - 11904: 0xD7DB, + 36570 - 11904: 0x9BD1, + 36571 - 11904: 0xB36D, + 36572 - 11904: 0xD7DE, + 36573 - 11904: 0xD7DD, + 36574 - 11904: 0xD7DC, + 36575 - 11904: 0xB36E, + 36576 - 11904: 0xD7E0, + 36577 - 11904: 0xD7E1, + 36578 - 11904: 0x99EB, + 36580 - 11904: 0x99EC, + 36581 - 11904: 0xDC43, + 36582 - 11904: 0xDC41, + 36583 - 11904: 0xDC45, + 36584 - 11904: 0xDC46, + 36585 - 11904: 0xDC4C, + 36587 - 11904: 0xDC48, + 36588 - 11904: 0xDC4A, + 36589 - 11904: 0x99ED, + 36590 - 11904: 0xDC42, + 36591 - 11904: 0xDBFC, + 36593 - 11904: 0xDC49, + 36594 - 11904: 0x99EE, + 36596 - 11904: 0xDC4B, + 36597 - 11904: 0xDC44, + 36598 - 11904: 0xDC47, + 36599 - 11904: 0xDBFD, + 36600 - 11904: 0xB662, + 36601 - 11904: 0xDC40, + 36602 - 11904: 0xDBFE, + 36603 - 11904: 0xB661, + 36604 - 11904: 0xB663, + 36606 - 11904: 0xB8FD, + 36607 - 11904: 0xE075, + 36608 - 11904: 0xE077, + 36609 - 11904: 0xE076, + 36610 - 11904: 0xE07B, + 36611 - 11904: 0xB8FB, + 36613 - 11904: 0xE078, + 36614 - 11904: 0xE074, + 36615 - 11904: 0xE079, + 36616 - 11904: 0xE07A, + 36617 - 11904: 0xB8FC, + 36618 - 11904: 0xB8FE, + 36619 - 11904: 0xE07C, + 36621 - 11904: 0xE467, + 36622 - 11904: 0xE466, + 36624 - 11904: 0xE464, + 36625 - 11904: 0xE465, + 36626 - 11904: 0xBBB3, + 36627 - 11904: 0xBBB5, + 36628 - 11904: 0xBBB2, + 36629 - 11904: 0xBBB4, + 36630 - 11904: 0xE84D, + 36631 - 11904: 0xE84E, + 36632 - 11904: 0xE849, + 36633 - 11904: 0x904C, + 36634 - 11904: 0xE84A, + 36635 - 11904: 0xBDF8, + 36636 - 11904: 0xBDFD, + 36637 - 11904: 0xBDF7, + 36638 - 11904: 0xBDFE, + 36639 - 11904: 0xBDF9, + 36640 - 11904: 0xE84B, + 36643 - 11904: 0xE84C, + 36644 - 11904: 0xE848, + 36645 - 11904: 0xBE40, + 36646 - 11904: 0xBDFB, + 36649 - 11904: 0xBDFA, + 36650 - 11904: 0xBDFC, + 36652 - 11904: 0xE847, + 36653 - 11904: 0x904D, + 36654 - 11904: 0xEBCA, + 36655 - 11904: 0xBFE8, + 36656 - 11904: 0x95CB, + 36658 - 11904: 0xEBCC, + 36659 - 11904: 0xBFEA, + 36660 - 11904: 0xEBCF, + 36661 - 11904: 0xEBCB, + 36662 - 11904: 0xEBC9, + 36663 - 11904: 0xEBCE, + 36664 - 11904: 0xBFE9, + 36665 - 11904: 0xEBCD, + 36667 - 11904: 0xBFE7, + 36670 - 11904: 0xC1D3, + 36671 - 11904: 0xC1D6, + 36672 - 11904: 0xEEC1, + 36673 - 11904: 0x97E2, + 36674 - 11904: 0xC1D4, + 36675 - 11904: 0xEEC0, + 36676 - 11904: 0xC1D2, + 36677 - 11904: 0xC1D5, + 36678 - 11904: 0xF146, + 36679 - 11904: 0xF147, + 36680 - 11904: 0xF148, + 36681 - 11904: 0xC2E0, + 36682 - 11904: 0x95CC, + 36683 - 11904: 0xF149, + 36685 - 11904: 0xC2E1, + 36686 - 11904: 0xC3E2, + 36687 - 11904: 0xF358, + 36688 - 11904: 0xF359, + 36689 - 11904: 0xF357, + 36690 - 11904: 0xF356, + 36691 - 11904: 0xF35A, + 36692 - 11904: 0xC3E1, + 36693 - 11904: 0xF4DD, + 36694 - 11904: 0xF4DB, + 36695 - 11904: 0xF4DC, + 36696 - 11904: 0xF4DE, + 36697 - 11904: 0xF4DA, + 36698 - 11904: 0xF4DF, + 36699 - 11904: 0xF658, + 36700 - 11904: 0x9F78, + 36701 - 11904: 0xF659, + 36702 - 11904: 0xF657, + 36703 - 11904: 0xC546, + 36704 - 11904: 0xF764, + 36705 - 11904: 0xC5AF, + 36706 - 11904: 0xF765, + 36707 - 11904: 0xF848, + 36708 - 11904: 0xF847, + 36710 - 11904: 0x897C, + 36711 - 11904: 0x897D, + 36718 - 11904: 0x897E, + 36755 - 11904: 0x995D, + 36763 - 11904: 0xA8AF, + 36764 - 11904: 0xB664, + 36767 - 11904: 0xB940, + 36768 - 11904: 0x9B5A, + 36771 - 11904: 0xBBB6, + 36773 - 11904: 0x9050, + 36774 - 11904: 0xBFEC, + 36775 - 11904: 0x8C4F, + 36776 - 11904: 0xBFEB, + 36781 - 11904: 0xC3E3, + 36782 - 11904: 0xC47C, + 36783 - 11904: 0xC547, + 36784 - 11904: 0xA8B0, + 36785 - 11904: 0xB064, + 36786 - 11904: 0xB941, + 36787 - 11904: 0x9054, + 36788 - 11904: 0xF35B, + 36789 - 11904: 0xC6D6, + 36790 - 11904: 0x9AA8, + 36791 - 11904: 0x99EF, + 36792 - 11904: 0xFEEB, + 36793 - 11904: 0x9DA3, + 36794 - 11904: 0x9DA1, + 36795 - 11904: 0x9943, + 36796 - 11904: 0x9945, + 36798 - 11904: 0x9D7D, + 36799 - 11904: 0xCBA6, + 36801 - 11904: 0x99F0, + 36802 - 11904: 0xA8B1, + 36804 - 11904: 0xA8B4, + 36805 - 11904: 0xA8B3, + 36806 - 11904: 0xA8B2, + 36809 - 11904: 0xCBA5, + 36810 - 11904: 0x99F1, + 36811 - 11904: 0xCDCD, + 36812 - 11904: 0x99F2, + 36813 - 11904: 0xCDCF, + 36814 - 11904: 0xAAEF, + 36815 - 11904: 0x8CBC, + 36816 - 11904: 0x9D60, + 36817 - 11904: 0xAAF1, + 36818 - 11904: 0xCDCC, + 36819 - 11904: 0xCDCE, + 36820 - 11904: 0xAAF0, + 36821 - 11904: 0xCDD1, + 36822 - 11904: 0xCDD0, + 36823 - 11904: 0xCDD2, + 36826 - 11904: 0xA0A3, + 36832 - 11904: 0xD0B6, + 36833 - 11904: 0xD0B4, + 36834 - 11904: 0xAD7C, + 36835 - 11904: 0xD0B3, + 36836 - 11904: 0xADA3, + 36837 - 11904: 0xAD7E, + 36838 - 11904: 0xAD7B, + 36840 - 11904: 0xADA4, + 36842 - 11904: 0xAD7D, + 36843 - 11904: 0xADA2, + 36845 - 11904: 0xADA1, + 36846 - 11904: 0xD0B5, + 36848 - 11904: 0xAD7A, + 36852 - 11904: 0xB06A, + 36853 - 11904: 0xD3EB, + 36854 - 11904: 0xD3F1, + 36855 - 11904: 0xB067, + 36856 - 11904: 0xB06E, + 36857 - 11904: 0x905B, + 36858 - 11904: 0xB069, + 36859 - 11904: 0xD3EE, + 36860 - 11904: 0xD3F0, + 36861 - 11904: 0xB06C, + 36862 - 11904: 0xD3EA, + 36863 - 11904: 0xD3ED, + 36864 - 11904: 0xB068, + 36865 - 11904: 0xB065, + 36866 - 11904: 0xD3EC, + 36867 - 11904: 0xB06B, + 36868 - 11904: 0xD3EF, + 36869 - 11904: 0xB06D, + 36870 - 11904: 0xB066, + 36872 - 11904: 0x9EDB, + 36875 - 11904: 0xD7E3, + 36876 - 11904: 0xD7E6, + 36877 - 11904: 0xB370, + 36879 - 11904: 0xB37A, + 36880 - 11904: 0xB376, + 36881 - 11904: 0xD7E4, + 36882 - 11904: 0x9D79, + 36884 - 11904: 0xB37E, + 36885 - 11904: 0xB377, + 36886 - 11904: 0xB37C, + 36887 - 11904: 0xB372, + 36889 - 11904: 0xB36F, + 36890 - 11904: 0xB371, + 36891 - 11904: 0xB37D, + 36892 - 11904: 0xD7E5, + 36893 - 11904: 0xB375, + 36894 - 11904: 0xB378, + 36895 - 11904: 0xB374, + 36896 - 11904: 0xB379, + 36897 - 11904: 0xD7E7, + 36898 - 11904: 0xB37B, + 36899 - 11904: 0xB373, + 36900 - 11904: 0xD7E2, + 36909 - 11904: 0xDC4D, + 36910 - 11904: 0xB665, + 36911 - 11904: 0xDC4F, + 36913 - 11904: 0xB667, + 36914 - 11904: 0xB669, + 36915 - 11904: 0x99F3, + 36916 - 11904: 0xDC4E, + 36917 - 11904: 0xB666, + 36918 - 11904: 0xB66A, + 36919 - 11904: 0x9062, + 36920 - 11904: 0xB668, + 36924 - 11904: 0xB947, + 36925 - 11904: 0xE0A3, + 36926 - 11904: 0xB94F, + 36927 - 11904: 0xE07E, + 36929 - 11904: 0xB950, + 36930 - 11904: 0xB945, + 36932 - 11904: 0xE0A1, + 36934 - 11904: 0x87BD, + 36935 - 11904: 0xB94A, + 36937 - 11904: 0xE0A2, + 36938 - 11904: 0xB943, + 36939 - 11904: 0xB942, + 36940 - 11904: 0x9F55, + 36941 - 11904: 0xB94D, + 36942 - 11904: 0xB94C, + 36943 - 11904: 0xB94B, + 36944 - 11904: 0xB949, + 36945 - 11904: 0xB94E, + 36946 - 11904: 0xE07D, + 36947 - 11904: 0xB944, + 36948 - 11904: 0xB946, + 36949 - 11904: 0xB948, + 36950 - 11904: 0x9BF9, + 36952 - 11904: 0xBBB8, + 36953 - 11904: 0xBBBB, + 36955 - 11904: 0xBBBF, + 36956 - 11904: 0xBBB9, + 36957 - 11904: 0xBBBE, + 36958 - 11904: 0xBBBC, + 36960 - 11904: 0xBBB7, + 36961 - 11904: 0x9065, + 36962 - 11904: 0xBBBD, + 36963 - 11904: 0xBBBA, + 36964 - 11904: 0x96E0, + 36967 - 11904: 0xE852, + 36968 - 11904: 0xBE43, + 36969 - 11904: 0xBE41, + 36971 - 11904: 0xE853, + 36972 - 11904: 0x98BE, + 36973 - 11904: 0xBE44, + 36974 - 11904: 0xBE42, + 36975 - 11904: 0xE851, + 36976 - 11904: 0xE850, + 36978 - 11904: 0xBFF0, + 36979 - 11904: 0xE84F, + 36980 - 11904: 0xBFEE, + 36981 - 11904: 0xBFED, + 36982 - 11904: 0xEBD0, + 36983 - 11904: 0xBE45, + 36984 - 11904: 0xBFEF, + 36985 - 11904: 0xEBD1, + 36986 - 11904: 0xBFF2, + 36987 - 11904: 0xEBD2, + 36988 - 11904: 0xBFF1, + 36989 - 11904: 0xC1D8, + 36990 - 11904: 0xEEC3, + 36991 - 11904: 0xC1D7, + 36992 - 11904: 0xC1DC, + 36993 - 11904: 0xC1DA, + 36994 - 11904: 0xC1DB, + 36995 - 11904: 0xC2E3, + 36996 - 11904: 0xC1D9, + 36997 - 11904: 0xEEC2, + 36998 - 11904: 0xEBD3, + 36999 - 11904: 0xC2E2, + 37000 - 11904: 0xC2E4, + 37002 - 11904: 0xC3E4, + 37003 - 11904: 0xC3E5, + 37005 - 11904: 0xF4E0, + 37007 - 11904: 0xC5DE, + 37008 - 11904: 0xC5DD, + 37009 - 11904: 0xA8B6, + 37012 - 11904: 0xCA55, + 37013 - 11904: 0xB06F, + 37015 - 11904: 0xCA52, + 37016 - 11904: 0xCA53, + 37017 - 11904: 0xCA51, + 37019 - 11904: 0xCA54, + 37022 - 11904: 0xCBAA, + 37023 - 11904: 0xCBA7, + 37024 - 11904: 0xCBAC, + 37025 - 11904: 0xCBA8, + 37026 - 11904: 0xA8B7, + 37027 - 11904: 0xA8BA, + 37029 - 11904: 0xCBA9, + 37030 - 11904: 0xA8B9, + 37031 - 11904: 0xCBAB, + 37032 - 11904: 0x9068, + 37034 - 11904: 0xA8B8, + 37038 - 11904: 0x906C, + 37039 - 11904: 0xCDD5, + 37040 - 11904: 0xCDD7, + 37041 - 11904: 0xAAF4, + 37042 - 11904: 0xCDD3, + 37043 - 11904: 0xCDD6, + 37044 - 11904: 0xCDD4, + 37045 - 11904: 0xAAF2, + 37046 - 11904: 0xAAF5, + 37048 - 11904: 0xAAF3, + 37051 - 11904: 0x95D8, + 37053 - 11904: 0xD0B8, + 37054 - 11904: 0xD0BC, + 37055 - 11904: 0xD0B9, + 37057 - 11904: 0xADA7, + 37059 - 11904: 0xADA8, + 37060 - 11904: 0x906A, + 37061 - 11904: 0xD0BB, + 37063 - 11904: 0xD0BD, + 37064 - 11904: 0xD0BF, + 37066 - 11904: 0xADA5, + 37067 - 11904: 0xD0BE, + 37070 - 11904: 0xADA6, + 37076 - 11904: 0xD7EE, + 37077 - 11904: 0xD0BA, + 37078 - 11904: 0xD3F2, + 37079 - 11904: 0xD3FB, + 37080 - 11904: 0xD3F9, + 37081 - 11904: 0xD3F4, + 37082 - 11904: 0xD3F5, + 37083 - 11904: 0xD3FA, + 37084 - 11904: 0xD3FC, + 37085 - 11904: 0xB071, + 37087 - 11904: 0xD3F7, + 37088 - 11904: 0xD3F3, + 37089 - 11904: 0xB070, + 37090 - 11904: 0xB072, + 37091 - 11904: 0xD3F6, + 37092 - 11904: 0xD3FD, + 37093 - 11904: 0xD3F8, + 37096 - 11904: 0xB3A1, + 37097 - 11904: 0xD7F1, + 37098 - 11904: 0xD7E9, + 37099 - 11904: 0xD7EF, + 37100 - 11904: 0xD7F0, + 37101 - 11904: 0xB3A2, + 37103 - 11904: 0xD7E8, + 37104 - 11904: 0xD7EA, + 37105 - 11904: 0xD0B7, + 37106 - 11904: 0xD7EC, + 37107 - 11904: 0xD7ED, + 37108 - 11904: 0xD7EB, + 37109 - 11904: 0xB66C, + 37113 - 11904: 0xDC56, + 37114 - 11904: 0xEBD4, + 37115 - 11904: 0xDC57, + 37116 - 11904: 0xDC54, + 37117 - 11904: 0xB3A3, + 37118 - 11904: 0xB66E, + 37119 - 11904: 0xDC53, + 37120 - 11904: 0xDC59, + 37121 - 11904: 0xDC58, + 37122 - 11904: 0xB66B, + 37123 - 11904: 0xDC5C, + 37124 - 11904: 0xDC52, + 37125 - 11904: 0xDC5B, + 37126 - 11904: 0xDC50, + 37127 - 11904: 0xDC5A, + 37128 - 11904: 0xDC55, + 37129 - 11904: 0xB66D, + 37131 - 11904: 0xE0AA, + 37133 - 11904: 0xE0A5, + 37134 - 11904: 0xE0AB, + 37135 - 11904: 0xE0A6, + 37136 - 11904: 0xE0A4, + 37137 - 11904: 0xE0A7, + 37138 - 11904: 0xB951, + 37140 - 11904: 0xE0A9, + 37142 - 11904: 0xE0A8, + 37143 - 11904: 0xB952, + 37144 - 11904: 0xBBC1, + 37145 - 11904: 0xBBC0, + 37146 - 11904: 0xE46E, + 37147 - 11904: 0xE471, + 37148 - 11904: 0xE469, + 37149 - 11904: 0xE46D, + 37150 - 11904: 0xBBC2, + 37151 - 11904: 0xE46C, + 37152 - 11904: 0xE46A, + 37153 - 11904: 0xE470, + 37154 - 11904: 0xE46B, + 37155 - 11904: 0xE468, + 37156 - 11904: 0xE46F, + 37158 - 11904: 0xE859, + 37159 - 11904: 0xBE48, + 37160 - 11904: 0xF14A, + 37161 - 11904: 0xE856, + 37162 - 11904: 0xE857, + 37163 - 11904: 0xE855, + 37164 - 11904: 0xDC51, + 37165 - 11904: 0xBE47, + 37166 - 11904: 0xE85A, + 37167 - 11904: 0xE854, + 37168 - 11904: 0xBE46, + 37169 - 11904: 0xBE49, + 37170 - 11904: 0xE858, + 37171 - 11904: 0xEBD5, + 37172 - 11904: 0xBFF3, + 37173 - 11904: 0xEBD6, + 37174 - 11904: 0xEBD7, + 37176 - 11904: 0xEEC4, + 37177 - 11904: 0xC1DD, + 37178 - 11904: 0xF14B, + 37179 - 11904: 0xF14C, + 37182 - 11904: 0xF14D, + 37183 - 11904: 0xF35D, + 37184 - 11904: 0xF35C, + 37185 - 11904: 0xF4E2, + 37187 - 11904: 0xF4E1, + 37188 - 11904: 0xF65B, + 37189 - 11904: 0xF65C, + 37190 - 11904: 0xF65A, + 37191 - 11904: 0xF766, + 37192 - 11904: 0xC5B0, + 37193 - 11904: 0xA8BB, + 37194 - 11904: 0xADAA, + 37195 - 11904: 0xADA9, + 37196 - 11904: 0xB075, + 37197 - 11904: 0xB074, + 37198 - 11904: 0xD440, + 37199 - 11904: 0xD441, + 37200 - 11904: 0xD3FE, + 37201 - 11904: 0x9FB2, + 37202 - 11904: 0xB073, + 37203 - 11904: 0xD7F5, + 37205 - 11904: 0xD7F6, + 37206 - 11904: 0xD7F2, + 37207 - 11904: 0xB3A4, + 37208 - 11904: 0xD7F3, + 37209 - 11904: 0x9FAE, + 37210 - 11904: 0xD7F4, + 37212 - 11904: 0x9FB0, + 37214 - 11904: 0x89AD, + 37215 - 11904: 0xDC5F, + 37216 - 11904: 0xDC61, + 37217 - 11904: 0xDC5D, + 37218 - 11904: 0xDC60, + 37219 - 11904: 0xB66F, + 37220 - 11904: 0xDC5E, + 37221 - 11904: 0xB670, + 37223 - 11904: 0x906E, + 37224 - 11904: 0xDD73, + 37225 - 11904: 0xB955, + 37226 - 11904: 0xB954, + 37228 - 11904: 0xB953, + 37230 - 11904: 0xE0AC, + 37231 - 11904: 0xE0AD, + 37232 - 11904: 0x9E71, + 37234 - 11904: 0xE473, + 37235 - 11904: 0xE475, + 37236 - 11904: 0xBBC6, + 37237 - 11904: 0xBBC3, + 37238 - 11904: 0x9E4A, + 37239 - 11904: 0xBBC5, + 37240 - 11904: 0xBBC4, + 37241 - 11904: 0xE474, + 37242 - 11904: 0xE472, + 37244 - 11904: 0x9FDC, + 37248 - 11904: 0xE861, + 37249 - 11904: 0xE85E, + 37250 - 11904: 0xE85F, + 37251 - 11904: 0xBE4D, + 37252 - 11904: 0xE860, + 37253 - 11904: 0xE85B, + 37254 - 11904: 0xE85C, + 37255 - 11904: 0xBE4A, + 37257 - 11904: 0xBE4B, + 37258 - 11904: 0xE85D, + 37259 - 11904: 0xBE4C, + 37260 - 11904: 0x89AB, + 37261 - 11904: 0xEBDB, + 37262 - 11904: 0x9FB8, + 37263 - 11904: 0xEBDC, + 37264 - 11904: 0xEBD9, + 37265 - 11904: 0xEBDA, + 37266 - 11904: 0xBFF4, + 37267 - 11904: 0xEBD8, + 37273 - 11904: 0xEEC8, + 37274 - 11904: 0xEEC5, + 37275 - 11904: 0xEEC7, + 37276 - 11904: 0xC1E0, + 37277 - 11904: 0xEECB, + 37278 - 11904: 0xC1DF, + 37279 - 11904: 0xEEC9, + 37280 - 11904: 0xEECC, + 37281 - 11904: 0xEECA, + 37282 - 11904: 0xEEC6, + 37283 - 11904: 0xC1DE, + 37285 - 11904: 0xF14F, + 37287 - 11904: 0xF150, + 37288 - 11904: 0xF14E, + 37289 - 11904: 0x9070, + 37290 - 11904: 0xF152, + 37291 - 11904: 0xC2E5, + 37292 - 11904: 0xC2E6, + 37293 - 11904: 0xF35F, + 37294 - 11904: 0xC3E7, + 37295 - 11904: 0xF151, + 37296 - 11904: 0xF35E, + 37297 - 11904: 0xC3E6, + 37298 - 11904: 0xF4E5, + 37299 - 11904: 0xF4E6, + 37300 - 11904: 0xC4BF, + 37301 - 11904: 0xF4E4, + 37302 - 11904: 0x8B63, + 37303 - 11904: 0xF4E3, + 37305 - 11904: 0xF65D, + 37306 - 11904: 0xC548, + 37307 - 11904: 0x95DC, + 37308 - 11904: 0xF849, + 37309 - 11904: 0xF8C8, + 37310 - 11904: 0xF8C7, + 37312 - 11904: 0xC643, + 37313 - 11904: 0xC65D, + 37314 - 11904: 0xF8C9, + 37315 - 11904: 0xF971, + 37316 - 11904: 0x9071, + 37317 - 11904: 0xC66F, + 37318 - 11904: 0xA8BC, + 37319 - 11904: 0xAAF6, + 37321 - 11904: 0xB956, + 37323 - 11904: 0xC4C0, + 37324 - 11904: 0xA8BD, + 37325 - 11904: 0xADAB, + 37326 - 11904: 0xB3A5, + 37327 - 11904: 0xB671, + 37328 - 11904: 0xC2E7, + 37329 - 11904: 0xAAF7, + 37331 - 11904: 0xD0C1, + 37332 - 11904: 0xD0C0, + 37333 - 11904: 0xD442, + 37334 - 11904: 0xFC5E, + 37335 - 11904: 0xB078, + 37336 - 11904: 0xB076, + 37337 - 11904: 0xB07A, + 37338 - 11904: 0xD444, + 37340 - 11904: 0xB079, + 37341 - 11904: 0xB077, + 37343 - 11904: 0x8949, + 37346 - 11904: 0xD443, + 37347 - 11904: 0xB3A8, + 37348 - 11904: 0xD7FC, + 37349 - 11904: 0x965B, + 37350 - 11904: 0xB3A7, + 37351 - 11904: 0xB3A9, + 37352 - 11904: 0xD842, + 37353 - 11904: 0xB3AB, + 37354 - 11904: 0xD7FE, + 37355 - 11904: 0xD840, + 37356 - 11904: 0xD7F7, + 37357 - 11904: 0xB3AA, + 37358 - 11904: 0xD843, + 37361 - 11904: 0xD7F9, + 37363 - 11904: 0xD7FA, + 37364 - 11904: 0xD7F8, + 37365 - 11904: 0xB3A6, + 37366 - 11904: 0x8C50, + 37367 - 11904: 0xD841, + 37368 - 11904: 0xD7FB, + 37369 - 11904: 0xD7FD, + 37370 - 11904: 0x94A6, + 37373 - 11904: 0xDC6D, + 37374 - 11904: 0x8FD5, + 37375 - 11904: 0xDC6C, + 37376 - 11904: 0xDC6A, + 37377 - 11904: 0xDC62, + 37378 - 11904: 0xDC71, + 37379 - 11904: 0xDC65, + 37380 - 11904: 0xDC6F, + 37381 - 11904: 0xDC76, + 37382 - 11904: 0xDC6E, + 37383 - 11904: 0xB679, + 37384 - 11904: 0x9E73, + 37385 - 11904: 0xB675, + 37386 - 11904: 0xDC63, + 37388 - 11904: 0xDC69, + 37389 - 11904: 0xB677, + 37390 - 11904: 0x9075, + 37391 - 11904: 0xDC68, + 37392 - 11904: 0xB678, + 37393 - 11904: 0xB67A, + 37394 - 11904: 0xDC6B, + 37395 - 11904: 0x99F7, + 37396 - 11904: 0xB672, + 37397 - 11904: 0xB673, + 37398 - 11904: 0xDC77, + 37399 - 11904: 0xDC75, + 37400 - 11904: 0x87B2, + 37401 - 11904: 0xDC74, + 37402 - 11904: 0xDC66, + 37404 - 11904: 0xDC72, + 37406 - 11904: 0xB676, + 37409 - 11904: 0x8CBF, + 37411 - 11904: 0xB674, + 37412 - 11904: 0xDC73, + 37413 - 11904: 0xDC64, + 37414 - 11904: 0xDC67, + 37415 - 11904: 0xDC70, + 37416 - 11904: 0x99F9, + 37418 - 11904: 0x9663, + 37419 - 11904: 0x95B9, + 37421 - 11904: 0xE4BA, + 37422 - 11904: 0xE0B7, + 37424 - 11904: 0xE0B0, + 37425 - 11904: 0xE0C3, + 37426 - 11904: 0xE0CC, + 37427 - 11904: 0xE0B3, + 37428 - 11904: 0xB961, + 37429 - 11904: 0x94D4, + 37430 - 11904: 0xE0C0, + 37431 - 11904: 0xB957, + 37432 - 11904: 0xB959, + 37433 - 11904: 0xB965, + 37434 - 11904: 0xE0B1, + 37436 - 11904: 0xFCFA, + 37437 - 11904: 0xB95A, + 37438 - 11904: 0xB95C, + 37439 - 11904: 0xB966, + 37440 - 11904: 0xB95B, + 37441 - 11904: 0x9077, + 37444 - 11904: 0x90AB, + 37445 - 11904: 0xB964, + 37446 - 11904: 0xE0B9, + 37448 - 11904: 0xE0AE, + 37449 - 11904: 0xB962, + 37450 - 11904: 0xE0B8, + 37451 - 11904: 0xB95E, + 37452 - 11904: 0xE0CA, + 37453 - 11904: 0xB963, + 37454 - 11904: 0xE0C8, + 37455 - 11904: 0xE0BC, + 37456 - 11904: 0xE0C6, + 37457 - 11904: 0xB960, + 37458 - 11904: 0xE0AF, + 37459 - 11904: 0xE0C9, + 37460 - 11904: 0xE0C4, + 37461 - 11904: 0x9D4D, + 37462 - 11904: 0xE0CB, + 37463 - 11904: 0xB958, + 37464 - 11904: 0x99FA, + 37466 - 11904: 0xB967, + 37467 - 11904: 0xB95D, + 37469 - 11904: 0x92E3, + 37470 - 11904: 0xE0B5, + 37471 - 11904: 0x97BB, + 37472 - 11904: 0xE0BD, + 37473 - 11904: 0xE0C1, + 37474 - 11904: 0x9078, + 37475 - 11904: 0xE0C5, + 37476 - 11904: 0xB95F, + 37477 - 11904: 0xE0B4, + 37478 - 11904: 0xE0B2, + 37479 - 11904: 0xE0BE, + 37483 - 11904: 0x99FB, + 37484 - 11904: 0xE0BB, + 37485 - 11904: 0xE0BA, + 37486 - 11904: 0x97E0, + 37487 - 11904: 0xE0BF, + 37488 - 11904: 0xE0C2, + 37490 - 11904: 0xE0C7, + 37494 - 11904: 0xE478, + 37495 - 11904: 0x96DC, + 37496 - 11904: 0xBBC7, + 37497 - 11904: 0xE4A4, + 37498 - 11904: 0xE47A, + 37499 - 11904: 0xBBCC, + 37500 - 11904: 0xBBD0, + 37501 - 11904: 0xE4AD, + 37502 - 11904: 0xE4B5, + 37503 - 11904: 0xE4A6, + 37504 - 11904: 0xBBC8, + 37505 - 11904: 0x9CA8, + 37506 - 11904: 0xE4AA, + 37507 - 11904: 0xE0B6, + 37508 - 11904: 0x9772, + 37509 - 11904: 0xBBC9, + 37510 - 11904: 0xE4B1, + 37511 - 11904: 0xE4B6, + 37512 - 11904: 0xE4AE, + 37513 - 11904: 0x9440, + 37514 - 11904: 0xE4B0, + 37515 - 11904: 0xE4B9, + 37516 - 11904: 0xE4B2, + 37517 - 11904: 0xE47E, + 37518 - 11904: 0xE4A9, + 37519 - 11904: 0x92F2, + 37521 - 11904: 0xBBD1, + 37523 - 11904: 0xBBCD, + 37524 - 11904: 0xE47C, + 37525 - 11904: 0xE4AB, + 37526 - 11904: 0xBBCB, + 37527 - 11904: 0xE4A5, + 37528 - 11904: 0xBBCA, + 37529 - 11904: 0xE4B3, + 37530 - 11904: 0xE4A2, + 37531 - 11904: 0xE479, + 37532 - 11904: 0xBBCE, + 37533 - 11904: 0xE4B8, + 37536 - 11904: 0xE47B, + 37537 - 11904: 0xE4AF, + 37538 - 11904: 0xE4AC, + 37539 - 11904: 0xE4A7, + 37540 - 11904: 0xE477, + 37541 - 11904: 0xE476, + 37542 - 11904: 0xE4A1, + 37543 - 11904: 0xE4B4, + 37544 - 11904: 0xBBCF, + 37545 - 11904: 0xE4B7, + 37546 - 11904: 0xE47D, + 37547 - 11904: 0xE4A3, + 37548 - 11904: 0xBE52, + 37550 - 11904: 0x99FD, + 37553 - 11904: 0x99FC, + 37554 - 11904: 0xBE5A, + 37555 - 11904: 0xBE55, + 37556 - 11904: 0xE8A4, + 37557 - 11904: 0xE8A1, + 37558 - 11904: 0xE867, + 37559 - 11904: 0xBE50, + 37561 - 11904: 0xF9D7, + 37562 - 11904: 0x964A, + 37563 - 11904: 0xBE4F, + 37564 - 11904: 0xBE56, + 37566 - 11904: 0x96D8, + 37567 - 11904: 0x99FE, + 37568 - 11904: 0xE865, + 37569 - 11904: 0xBE54, + 37570 - 11904: 0xE871, + 37571 - 11904: 0xE863, + 37572 - 11904: 0xE864, + 37573 - 11904: 0xBE4E, + 37574 - 11904: 0xE8A3, + 37575 - 11904: 0xBE58, + 37576 - 11904: 0xE874, + 37577 - 11904: 0xE879, + 37578 - 11904: 0xE873, + 37579 - 11904: 0xEBEE, + 37580 - 11904: 0xE86F, + 37581 - 11904: 0xE877, + 37582 - 11904: 0xE875, + 37583 - 11904: 0xE868, + 37584 - 11904: 0xE862, + 37585 - 11904: 0xE87D, + 37586 - 11904: 0xBE57, + 37587 - 11904: 0xE87E, + 37588 - 11904: 0x904B, + 37589 - 11904: 0xE878, + 37591 - 11904: 0xE86D, + 37592 - 11904: 0xE86B, + 37593 - 11904: 0xE866, + 37595 - 11904: 0xFA41, + 37597 - 11904: 0xE86E, + 37598 - 11904: 0xE87B, + 37599 - 11904: 0xE86A, + 37600 - 11904: 0xE87A, + 37601 - 11904: 0xE8A2, + 37603 - 11904: 0x9A40, + 37604 - 11904: 0xBE53, + 37605 - 11904: 0x975B, + 37606 - 11904: 0xE876, + 37607 - 11904: 0xE87C, + 37608 - 11904: 0xE872, + 37609 - 11904: 0xE86C, + 37610 - 11904: 0xBE51, + 37611 - 11904: 0x9A41, + 37612 - 11904: 0x91DD, + 37614 - 11904: 0xE4A8, + 37615 - 11904: 0xE870, + 37616 - 11904: 0xBE59, + 37617 - 11904: 0xE869, + 37618 - 11904: 0x93FC, + 37619 - 11904: 0x9A42, + 37620 - 11904: 0x9A43, + 37622 - 11904: 0x9659, + 37623 - 11904: 0xEBF4, + 37624 - 11904: 0xBFF7, + 37625 - 11904: 0xEBF3, + 37626 - 11904: 0xEBF0, + 37627 - 11904: 0xEC44, + 37628 - 11904: 0xBFFB, + 37629 - 11904: 0x9A44, + 37630 - 11904: 0xEC41, + 37631 - 11904: 0xEBF8, + 37632 - 11904: 0xEC43, + 37633 - 11904: 0xEBE9, + 37634 - 11904: 0xEBF6, + 37635 - 11904: 0x9051, + 37636 - 11904: 0xBFFD, + 37638 - 11904: 0xEBE1, + 37639 - 11904: 0x94BF, + 37640 - 11904: 0xEBDF, + 37641 - 11904: 0xEC42, + 37643 - 11904: 0xEC40, + 37644 - 11904: 0xEBFE, + 37645 - 11904: 0xEBED, + 37646 - 11904: 0xEBEC, + 37647 - 11904: 0xEBE2, + 37648 - 11904: 0xC040, + 37650 - 11904: 0xEBE8, + 37651 - 11904: 0xEBF2, + 37652 - 11904: 0xEBFD, + 37653 - 11904: 0xC043, + 37654 - 11904: 0xEC45, + 37656 - 11904: 0xC1E8, + 37657 - 11904: 0xC045, + 37658 - 11904: 0xBFFE, + 37659 - 11904: 0xEBE6, + 37661 - 11904: 0xEBEF, + 37662 - 11904: 0xEBDE, + 37663 - 11904: 0xEBE0, + 37664 - 11904: 0xBFF5, + 37665 - 11904: 0xC042, + 37666 - 11904: 0xBFFA, + 37667 - 11904: 0xEBE7, + 37668 - 11904: 0xEBF7, + 37669 - 11904: 0xEBF1, + 37670 - 11904: 0xC041, + 37671 - 11904: 0xEBDD, + 37672 - 11904: 0xC1E3, + 37673 - 11904: 0xEBF9, + 37674 - 11904: 0xEBFC, + 37675 - 11904: 0xBFFC, + 37676 - 11904: 0x90A2, + 37677 - 11904: 0xEBEB, + 37678 - 11904: 0xC044, + 37679 - 11904: 0xBFF9, + 37680 - 11904: 0x9CAB, + 37681 - 11904: 0x9776, + 37683 - 11904: 0xBFF8, + 37684 - 11904: 0xEBF5, + 37685 - 11904: 0xEBFB, + 37686 - 11904: 0xBFF6, + 37688 - 11904: 0xEBE4, + 37689 - 11904: 0xEBFA, + 37692 - 11904: 0xEBE5, + 37696 - 11904: 0xFC55, + 37697 - 11904: 0xFE45, + 37698 - 11904: 0x94A8, + 37699 - 11904: 0x9A45, + 37700 - 11904: 0xFA4B, + 37701 - 11904: 0x9DE1, + 37702 - 11904: 0xEBEA, + 37703 - 11904: 0xEED2, + 37704 - 11904: 0x96D9, + 37705 - 11904: 0xEED7, + 37706 - 11904: 0xC1E5, + 37707 - 11904: 0xC1E7, + 37708 - 11904: 0xEEDD, + 37709 - 11904: 0xC1E1, + 37710 - 11904: 0xEEEC, + 37711 - 11904: 0xEEE3, + 37712 - 11904: 0xEED8, + 37713 - 11904: 0xEED9, + 37714 - 11904: 0xEEE2, + 37716 - 11904: 0xC1EE, + 37717 - 11904: 0xEEE1, + 37718 - 11904: 0xEED1, + 37719 - 11904: 0xEEE0, + 37720 - 11904: 0xEED4, + 37721 - 11904: 0xEEED, + 37722 - 11904: 0xC1ED, + 37723 - 11904: 0xC1EB, + 37724 - 11904: 0xEED5, + 37726 - 11904: 0xEEE8, + 37727 - 11904: 0x9774, + 37728 - 11904: 0xEEDA, + 37729 - 11904: 0xEEE7, + 37730 - 11904: 0xFDF5, + 37731 - 11904: 0xEEE9, + 37732 - 11904: 0xEED0, + 37733 - 11904: 0xC1E6, + 37734 - 11904: 0x92E5, + 37735 - 11904: 0xEEEA, + 37736 - 11904: 0x9645, + 37737 - 11904: 0x91DA, + 37738 - 11904: 0xEEDE, + 37739 - 11904: 0x90A3, + 37740 - 11904: 0xC1EA, + 37741 - 11904: 0xEEDB, + 37742 - 11904: 0xA05F, + 37744 - 11904: 0xC1EC, + 37745 - 11904: 0xEEE4, + 37747 - 11904: 0x90AF, + 37748 - 11904: 0x97BF, + 37749 - 11904: 0xC1E4, + 37750 - 11904: 0xEED6, + 37751 - 11904: 0xEEE5, + 37752 - 11904: 0x914C, + 37753 - 11904: 0xEEDF, + 37754 - 11904: 0xEBE3, + 37755 - 11904: 0xEEE6, + 37756 - 11904: 0xEED3, + 37757 - 11904: 0x967A, + 37758 - 11904: 0xC1E9, + 37760 - 11904: 0xEEEB, + 37761 - 11904: 0x91DE, + 37762 - 11904: 0xC1E2, + 37763 - 11904: 0xEECE, + 37764 - 11904: 0x9A46, + 37765 - 11904: 0xFEB0, + 37766 - 11904: 0x9779, + 37767 - 11904: 0x946C, + 37768 - 11904: 0xF160, + 37769 - 11904: 0xF159, + 37770 - 11904: 0xC2E9, + 37772 - 11904: 0xF154, + 37773 - 11904: 0xF163, + 37774 - 11904: 0xF15B, + 37775 - 11904: 0xEEDC, + 37776 - 11904: 0x9858, + 37777 - 11904: 0xF165, + 37778 - 11904: 0xF155, + 37780 - 11904: 0xC2E8, + 37781 - 11904: 0xF15F, + 37782 - 11904: 0xC2EA, + 37783 - 11904: 0xC2F2, + 37784 - 11904: 0xC2F0, + 37785 - 11904: 0xF161, + 37786 - 11904: 0xC2F1, + 37787 - 11904: 0xF157, + 37788 - 11904: 0x9266, + 37789 - 11904: 0xF158, + 37790 - 11904: 0xF15D, + 37791 - 11904: 0xF162, + 37792 - 11904: 0x93FB, + 37793 - 11904: 0xEECD, + 37794 - 11904: 0xC2EB, + 37795 - 11904: 0xF16A, + 37796 - 11904: 0xF167, + 37797 - 11904: 0xF16B, + 37798 - 11904: 0xF15E, + 37799 - 11904: 0xF15A, + 37800 - 11904: 0xF168, + 37801 - 11904: 0xF36A, + 37802 - 11904: 0xF15C, + 37804 - 11904: 0xC2EE, + 37805 - 11904: 0x9A47, + 37806 - 11904: 0xC2ED, + 37807 - 11904: 0xEECF, + 37808 - 11904: 0xC2EF, + 37809 - 11904: 0xF164, + 37810 - 11904: 0xF166, + 37811 - 11904: 0xC2EC, + 37812 - 11904: 0xF169, + 37813 - 11904: 0xF153, + 37815 - 11904: 0xF156, + 37816 - 11904: 0x9749, + 37819 - 11904: 0x9748, + 37821 - 11904: 0x934A, + 37823 - 11904: 0x9CE2, + 37824 - 11904: 0xF373, + 37826 - 11904: 0xF363, + 37827 - 11904: 0xC3EB, + 37828 - 11904: 0xF371, + 37830 - 11904: 0x9264, + 37831 - 11904: 0xF361, + 37832 - 11904: 0xC3EC, + 37834 - 11904: 0xF36C, + 37835 - 11904: 0x91DF, + 37836 - 11904: 0xF368, + 37837 - 11904: 0xC3F1, + 37838 - 11904: 0xF372, + 37839 - 11904: 0xF362, + 37840 - 11904: 0xF365, + 37841 - 11904: 0xC3E9, + 37842 - 11904: 0xF374, + 37843 - 11904: 0xFB79, + 37844 - 11904: 0xF36D, + 37845 - 11904: 0xF370, + 37846 - 11904: 0xC3EF, + 37847 - 11904: 0xC3F4, + 37848 - 11904: 0xC3F2, + 37849 - 11904: 0xF369, + 37850 - 11904: 0xF364, + 37851 - 11904: 0x96D7, + 37852 - 11904: 0xC3ED, + 37853 - 11904: 0xC3EE, + 37854 - 11904: 0xF360, + 37855 - 11904: 0xC3EA, + 37856 - 11904: 0x9343, + 37857 - 11904: 0xC3E8, + 37858 - 11904: 0xC3F0, + 37859 - 11904: 0xF36F, + 37860 - 11904: 0xC3F3, + 37862 - 11904: 0xF36B, + 37863 - 11904: 0xF375, + 37864 - 11904: 0xC3F5, + 37868 - 11904: 0xF367, + 37870 - 11904: 0xF36E, + 37872 - 11904: 0xFDCB, + 37873 - 11904: 0xFE7A, + 37875 - 11904: 0x91DB, + 37876 - 11904: 0x8C6A, + 37877 - 11904: 0xF4F3, + 37878 - 11904: 0xF542, + 37879 - 11904: 0xF4F5, + 37880 - 11904: 0xF4FC, + 37881 - 11904: 0xF366, + 37882 - 11904: 0xF4FA, + 37883 - 11904: 0xF4E9, + 37884 - 11904: 0xF540, + 37885 - 11904: 0xC4C3, + 37886 - 11904: 0xF4ED, + 37887 - 11904: 0xF4FE, + 37888 - 11904: 0xF4F4, + 37889 - 11904: 0x97AF, + 37891 - 11904: 0xC4C2, + 37892 - 11904: 0x95DD, + 37894 - 11904: 0xF544, + 37895 - 11904: 0xF4F6, + 37896 - 11904: 0x9348, + 37897 - 11904: 0xF4FB, + 37898 - 11904: 0xF4FD, + 37899 - 11904: 0xF4E7, + 37900 - 11904: 0xF541, + 37901 - 11904: 0xF4F2, + 37902 - 11904: 0xF4F7, + 37903 - 11904: 0xF4EB, + 37904 - 11904: 0xF4EF, + 37905 - 11904: 0xF543, + 37906 - 11904: 0xF4F9, + 37907 - 11904: 0xF4E8, + 37908 - 11904: 0xF4EC, + 37909 - 11904: 0xF4EE, + 37910 - 11904: 0xF4F8, + 37911 - 11904: 0x9A4B, + 37912 - 11904: 0xC4C1, + 37913 - 11904: 0xF4F1, + 37915 - 11904: 0xFC45, + 37917 - 11904: 0x9A4D, + 37920 - 11904: 0xF4EA, + 37924 - 11904: 0x91BC, + 37925 - 11904: 0x90E2, + 37926 - 11904: 0x90B4, + 37927 - 11904: 0x95E1, + 37928 - 11904: 0xF4F0, + 37929 - 11904: 0xF661, + 37930 - 11904: 0xF666, + 37931 - 11904: 0xC54F, + 37932 - 11904: 0xF668, + 37933 - 11904: 0x9A4E, + 37934 - 11904: 0xC549, + 37935 - 11904: 0x87AD, + 37936 - 11904: 0xF664, + 37937 - 11904: 0xF66A, + 37938 - 11904: 0xC54E, + 37939 - 11904: 0xC54A, + 37941 - 11904: 0xC54B, + 37942 - 11904: 0xF660, + 37943 - 11904: 0xF667, + 37944 - 11904: 0xC54D, + 37945 - 11904: 0xF665, + 37946 - 11904: 0xC54C, + 37947 - 11904: 0xF65F, + 37948 - 11904: 0xF663, + 37949 - 11904: 0xF662, + 37950 - 11904: 0x9A4F, + 37951 - 11904: 0xF65E, + 37952 - 11904: 0xF669, + 37954 - 11904: 0xFE40, + 37955 - 11904: 0xFE43, + 37956 - 11904: 0xC5B1, + 37957 - 11904: 0xF76D, + 37958 - 11904: 0xF770, + 37959 - 11904: 0xF76C, + 37960 - 11904: 0xF76E, + 37961 - 11904: 0xF76F, + 37962 - 11904: 0xF769, + 37963 - 11904: 0xF76A, + 37964 - 11904: 0xF767, + 37965 - 11904: 0x96DD, + 37967 - 11904: 0xF76B, + 37968 - 11904: 0xF768, + 37969 - 11904: 0xC5B2, + 37970 - 11904: 0xC5B3, + 37972 - 11904: 0x9A51, + 37973 - 11904: 0xF84B, + 37975 - 11904: 0xF84D, + 37976 - 11904: 0x96A7, + 37979 - 11904: 0x90B0, + 37981 - 11904: 0xF84C, + 37982 - 11904: 0xF84E, + 37984 - 11904: 0xC5E0, + 37986 - 11904: 0xF84A, + 37987 - 11904: 0xC5DF, + 37988 - 11904: 0xC5E1, + 37989 - 11904: 0x9C4E, + 37991 - 11904: 0x9443, + 37992 - 11904: 0xF8CB, + 37993 - 11904: 0xF8CC, + 37994 - 11904: 0xC644, + 37995 - 11904: 0xF8CA, + 37996 - 11904: 0x8EBA, + 37997 - 11904: 0xF953, + 37998 - 11904: 0xF952, + 37999 - 11904: 0xF954, + 38000 - 11904: 0xC65F, + 38001 - 11904: 0xF955, + 38002 - 11904: 0xC65E, + 38003 - 11904: 0xF956, + 38004 - 11904: 0xF972, + 38005 - 11904: 0xF975, + 38006 - 11904: 0xF974, + 38007 - 11904: 0xC668, + 38008 - 11904: 0xF973, + 38009 - 11904: 0x9A52, + 38011 - 11904: 0xFCC1, + 38012 - 11904: 0xC672, + 38013 - 11904: 0xC670, + 38014 - 11904: 0xC671, + 38015 - 11904: 0xC677, + 38016 - 11904: 0xF9C0, + 38017 - 11904: 0xF9C1, + 38018 - 11904: 0xF9BF, + 38019 - 11904: 0xF9C9, + 38021 - 11904: 0x8BE9, + 38047 - 11904: 0x9CAF, + 38050 - 11904: 0x8BFD, + 38081 - 11904: 0x9ABC, + 38083 - 11904: 0x9AB8, + 38108 - 11904: 0x9AAE, + 38134 - 11904: 0x9AA7, + 38189 - 11904: 0x9A53, + 38215 - 11904: 0x9D74, + 38263 - 11904: 0xAAF8, + 38264 - 11904: 0x8BEA, + 38266 - 11904: 0xD844, + 38267 - 11904: 0xDC78, + 38268 - 11904: 0xE8A5, + 38269 - 11904: 0xF376, + 38271 - 11904: 0x8BEB, + 38272 - 11904: 0xAAF9, + 38274 - 11904: 0xADAC, + 38275 - 11904: 0xB07B, + 38277 - 11904: 0x90B2, + 38278 - 11904: 0xD845, + 38280 - 11904: 0xD846, + 38281 - 11904: 0xB3AC, + 38283 - 11904: 0xB67D, + 38284 - 11904: 0xDC7A, + 38285 - 11904: 0xDC79, + 38286 - 11904: 0xB6A3, + 38287 - 11904: 0xB67C, + 38288 - 11904: 0xDC7B, + 38289 - 11904: 0xB67E, + 38290 - 11904: 0xB6A2, + 38291 - 11904: 0xB6A1, + 38292 - 11904: 0xB67B, + 38294 - 11904: 0x95E9, + 38295 - 11904: 0x95E8, + 38296 - 11904: 0xB968, + 38297 - 11904: 0x95E6, + 38299 - 11904: 0xE0D0, + 38300 - 11904: 0xE0CE, + 38302 - 11904: 0xE0CF, + 38303 - 11904: 0xE0CD, + 38304 - 11904: 0x90B5, + 38305 - 11904: 0xBBD2, + 38306 - 11904: 0x9A54, + 38307 - 11904: 0xBBD5, + 38308 - 11904: 0xBBD7, + 38309 - 11904: 0xBBD6, + 38310 - 11904: 0x90B3, + 38311 - 11904: 0x95E7, + 38312 - 11904: 0xBBD3, + 38313 - 11904: 0xBBD4, + 38314 - 11904: 0x8B50, + 38315 - 11904: 0xE8A7, + 38316 - 11904: 0xE8A6, + 38317 - 11904: 0xBE5B, + 38318 - 11904: 0xE8A8, + 38320 - 11904: 0xE8A9, + 38321 - 11904: 0xBE5C, + 38325 - 11904: 0xEC4D, + 38326 - 11904: 0xEC4B, + 38327 - 11904: 0xEEF3, + 38329 - 11904: 0xEC49, + 38330 - 11904: 0xEC4A, + 38331 - 11904: 0xC046, + 38332 - 11904: 0xEC46, + 38333 - 11904: 0xEC4E, + 38334 - 11904: 0xEC48, + 38335 - 11904: 0xEC4C, + 38336 - 11904: 0xEEEF, + 38339 - 11904: 0xEEF1, + 38341 - 11904: 0xEEF2, + 38342 - 11904: 0xC1F3, + 38343 - 11904: 0xEEEE, + 38344 - 11904: 0xC1F2, + 38345 - 11904: 0xEEF0, + 38346 - 11904: 0xC1EF, + 38347 - 11904: 0xC1F0, + 38348 - 11904: 0xC1F1, + 38349 - 11904: 0xEC47, + 38352 - 11904: 0xC2F5, + 38353 - 11904: 0xF16E, + 38354 - 11904: 0xF16C, + 38355 - 11904: 0xF16D, + 38356 - 11904: 0xC2F3, + 38357 - 11904: 0xC2F6, + 38358 - 11904: 0xC2F4, + 38362 - 11904: 0xF377, + 38363 - 11904: 0xF378, + 38364 - 11904: 0xC3F6, + 38366 - 11904: 0xF545, + 38367 - 11904: 0xF547, + 38368 - 11904: 0xF546, + 38369 - 11904: 0xC4C4, + 38370 - 11904: 0xC550, + 38371 - 11904: 0xF66D, + 38372 - 11904: 0xF66C, + 38373 - 11904: 0xF66B, + 38376 - 11904: 0x8BEC, + 38388 - 11904: 0x9A56, + 38428 - 11904: 0xAAFA, + 38429 - 11904: 0x8BFB, + 38430 - 11904: 0xC9AA, + 38432 - 11904: 0xCA58, + 38433 - 11904: 0xA6E9, + 38434 - 11904: 0xCA56, + 38435 - 11904: 0xCA59, + 38436 - 11904: 0xCA57, + 38440 - 11904: 0xCBAE, + 38442 - 11904: 0xA8C1, + 38444 - 11904: 0xA8C2, + 38445 - 11904: 0xCBB0, + 38446 - 11904: 0xA8BF, + 38447 - 11904: 0xCBAF, + 38448 - 11904: 0xCBAD, + 38449 - 11904: 0xA8C0, + 38450 - 11904: 0xA8BE, + 38451 - 11904: 0x9A57, + 38456 - 11904: 0xA0AA, + 38457 - 11904: 0xCDD8, + 38458 - 11904: 0xCDDB, + 38459 - 11904: 0xAAFD, + 38460 - 11904: 0xCDDA, + 38461 - 11904: 0xCDD9, + 38463 - 11904: 0xAAFC, + 38464 - 11904: 0xAAFB, + 38465 - 11904: 0x9FA6, + 38466 - 11904: 0xAB40, + 38467 - 11904: 0xCDDC, + 38468 - 11904: 0xAAFE, + 38469 - 11904: 0x99CC, + 38474 - 11904: 0xD0C6, + 38475 - 11904: 0xADAE, + 38476 - 11904: 0xADAF, + 38477 - 11904: 0xADB0, + 38478 - 11904: 0xD0C7, + 38479 - 11904: 0xD0C3, + 38480 - 11904: 0xADAD, + 38481 - 11904: 0xD0C4, + 38483 - 11904: 0xD0C5, + 38484 - 11904: 0xD0C2, + 38486 - 11904: 0x9C59, + 38488 - 11904: 0xB0A4, + 38491 - 11904: 0xB0A1, + 38492 - 11904: 0xD445, + 38493 - 11904: 0xB0A2, + 38494 - 11904: 0xB0A5, + 38495 - 11904: 0xD446, + 38497 - 11904: 0xB07E, + 38498 - 11904: 0xB07C, + 38499 - 11904: 0xB07D, + 38500 - 11904: 0xB0A3, + 38505 - 11904: 0x99B5, + 38506 - 11904: 0xB3AD, + 38507 - 11904: 0xD849, + 38508 - 11904: 0xB3B5, + 38509 - 11904: 0xD848, + 38511 - 11904: 0xD84B, + 38512 - 11904: 0xB3B1, + 38513 - 11904: 0xD84A, + 38514 - 11904: 0xB6AB, + 38515 - 11904: 0xB3AF, + 38516 - 11904: 0xB3B2, + 38517 - 11904: 0xB3AE, + 38518 - 11904: 0xB3B3, + 38519 - 11904: 0xB3B4, + 38520 - 11904: 0xB3B0, + 38523 - 11904: 0x90BE, + 38524 - 11904: 0xD847, + 38525 - 11904: 0xB6A7, + 38526 - 11904: 0xDC7D, + 38528 - 11904: 0xDCA3, + 38529 - 11904: 0x9FAF, + 38531 - 11904: 0xDCA2, + 38532 - 11904: 0xB6AC, + 38533 - 11904: 0xB6A8, + 38534 - 11904: 0xB6A9, + 38535 - 11904: 0xDC7C, + 38536 - 11904: 0xDC7E, + 38537 - 11904: 0xDCA1, + 38538 - 11904: 0xB6A4, + 38539 - 11904: 0xB6A6, + 38541 - 11904: 0xB6AA, + 38542 - 11904: 0xB6A5, + 38543 - 11904: 0x95F2, + 38545 - 11904: 0xE0D3, + 38546 - 11904: 0xE0D1, + 38547 - 11904: 0xE0D2, + 38548 - 11904: 0xB96A, + 38549 - 11904: 0xB96B, + 38550 - 11904: 0x90BF, + 38551 - 11904: 0xE0D4, + 38552 - 11904: 0xB969, + 38553 - 11904: 0xBBD8, + 38555 - 11904: 0xBBDA, + 38556 - 11904: 0xBBD9, + 38558 - 11904: 0xE4BB, + 38561 - 11904: 0xE4BC, + 38562 - 11904: 0xE8AB, + 38563 - 11904: 0x90C1, + 38564 - 11904: 0xE8AA, + 38565 - 11904: 0xFEE4, + 38567 - 11904: 0xC047, + 38568 - 11904: 0xC048, + 38569 - 11904: 0xEC4F, + 38570 - 11904: 0xC049, + 38572 - 11904: 0xEEF6, + 38574 - 11904: 0xEEF4, + 38576 - 11904: 0xEEF5, + 38577 - 11904: 0xC1F4, + 38579 - 11904: 0xF16F, + 38580 - 11904: 0xC3F7, + 38582 - 11904: 0xC6D7, + 38584 - 11904: 0xC1F5, + 38585 - 11904: 0xAB41, + 38587 - 11904: 0xB0A6, + 38588 - 11904: 0xD447, + 38589 - 11904: 0x90C7, + 38591 - 11904: 0xD84C, + 38592 - 11904: 0xB3B6, + 38593 - 11904: 0xB6AD, + 38594 - 11904: 0xDCA4, + 38595 - 11904: 0xDCA6, + 38596 - 11904: 0xB6AF, + 38597 - 11904: 0xB6AE, + 38598 - 11904: 0xB6B0, + 38599 - 11904: 0xB6B1, + 38600 - 11904: 0xDCA5, + 38601 - 11904: 0xB96E, + 38602 - 11904: 0xB96F, + 38603 - 11904: 0xB96D, + 38604 - 11904: 0xBBDB, + 38605 - 11904: 0xB96C, + 38606 - 11904: 0xE0D5, + 38610 - 11904: 0xBBDC, + 38611 - 11904: 0xE8AC, + 38612 - 11904: 0xEC50, + 38613 - 11904: 0xC04A, + 38614 - 11904: 0xC1F6, + 38615 - 11904: 0xF170, + 38616 - 11904: 0xF174, + 38617 - 11904: 0xC2F9, + 38618 - 11904: 0xF171, + 38619 - 11904: 0xC2FA, + 38620 - 11904: 0xC2F8, + 38621 - 11904: 0xF175, + 38622 - 11904: 0xC2FB, + 38623 - 11904: 0xF173, + 38625 - 11904: 0xF379, + 38626 - 11904: 0xC2F7, + 38627 - 11904: 0xC3F8, + 38629 - 11904: 0xF8CD, + 38632 - 11904: 0xAB42, + 38633 - 11904: 0xB3B8, + 38634 - 11904: 0xB3B7, + 38639 - 11904: 0xB6B2, + 38640 - 11904: 0xDCA8, + 38641 - 11904: 0xDCA7, + 38642 - 11904: 0xB6B3, + 38644 - 11904: 0x92E4, + 38645 - 11904: 0xE0D9, + 38646 - 11904: 0xB973, + 38647 - 11904: 0xB970, + 38648 - 11904: 0xE0D8, + 38649 - 11904: 0xB972, + 38650 - 11904: 0xE0D6, + 38651 - 11904: 0xB971, + 38653 - 11904: 0xE0D7, + 38655 - 11904: 0xE4BD, + 38656 - 11904: 0xBBDD, + 38658 - 11904: 0xE8AF, + 38659 - 11904: 0x9F52, + 38660 - 11904: 0xBE5D, + 38661 - 11904: 0xE8AD, + 38662 - 11904: 0xBE5E, + 38663 - 11904: 0xBE5F, + 38664 - 11904: 0xE8AE, + 38665 - 11904: 0xBE60, + 38667 - 11904: 0xEC51, + 38669 - 11904: 0xC04E, + 38670 - 11904: 0xC04B, + 38671 - 11904: 0xC050, + 38672 - 11904: 0xEC53, + 38673 - 11904: 0xC04C, + 38674 - 11904: 0xEC52, + 38675 - 11904: 0xC04F, + 38678 - 11904: 0xC04D, + 38680 - 11904: 0xEEF9, + 38681 - 11904: 0xEEFB, + 38683 - 11904: 0x90DB, + 38684 - 11904: 0xC1F7, + 38685 - 11904: 0xEEFA, + 38686 - 11904: 0xC1F8, + 38687 - 11904: 0xEEF8, + 38688 - 11904: 0xEEF7, + 38689 - 11904: 0xA066, + 38690 - 11904: 0xF177, + 38691 - 11904: 0xF176, + 38692 - 11904: 0xC2FC, + 38693 - 11904: 0xF178, + 38694 - 11904: 0xF37E, + 38695 - 11904: 0xC3FA, + 38696 - 11904: 0xF37D, + 38697 - 11904: 0xF37A, + 38698 - 11904: 0xC3F9, + 38699 - 11904: 0xF37B, + 38700 - 11904: 0xF37C, + 38702 - 11904: 0xF548, + 38703 - 11904: 0xF549, + 38704 - 11904: 0xC4C5, + 38705 - 11904: 0x90D2, + 38706 - 11904: 0xC553, + 38708 - 11904: 0x876B, + 38709 - 11904: 0xF66E, + 38710 - 11904: 0x90D4, + 38712 - 11904: 0xC551, + 38713 - 11904: 0xC552, + 38714 - 11904: 0xF66F, + 38717 - 11904: 0xC5B4, + 38718 - 11904: 0xC5B5, + 38719 - 11904: 0xF771, + 38720 - 11904: 0x9A5B, + 38721 - 11904: 0x95FD, + 38722 - 11904: 0xC645, + 38723 - 11904: 0xF8CF, + 38724 - 11904: 0xC647, + 38726 - 11904: 0xF8CE, + 38727 - 11904: 0xF8D0, + 38728 - 11904: 0xC646, + 38729 - 11904: 0xF957, + 38730 - 11904: 0x87B1, + 38731 - 11904: 0xF9AD, + 38737 - 11904: 0x8BC4, + 38738 - 11904: 0xAB43, + 38741 - 11904: 0x8C66, + 38742 - 11904: 0xB974, + 38743 - 11904: 0x90DE, + 38744 - 11904: 0xE4BE, + 38746 - 11904: 0xE8B0, + 38747 - 11904: 0xC051, + 38748 - 11904: 0xC052, + 38749 - 11904: 0x9CE4, + 38750 - 11904: 0xAB44, + 38751 - 11904: 0x90E1, + 38752 - 11904: 0xBE61, + 38753 - 11904: 0xC3FB, + 38754 - 11904: 0xADB1, + 38758 - 11904: 0xC053, + 38760 - 11904: 0xC5E2, + 38761 - 11904: 0xADB2, + 38762 - 11904: 0xD84D, + 38764 - 11904: 0xDCA9, + 38765 - 11904: 0x9E46, + 38766 - 11904: 0xDCAB, + 38768 - 11904: 0xDCAA, + 38769 - 11904: 0x9651, + 38770 - 11904: 0xE0DD, + 38771 - 11904: 0xE0DA, + 38772 - 11904: 0xB975, + 38774 - 11904: 0xB976, + 38775 - 11904: 0xE0DB, + 38776 - 11904: 0xE0DC, + 38778 - 11904: 0xE4C0, + 38779 - 11904: 0xE4C5, + 38780 - 11904: 0xBBDE, + 38781 - 11904: 0xE4BF, + 38782 - 11904: 0xE4C1, + 38783 - 11904: 0xE4C8, + 38784 - 11904: 0xE4C3, + 38785 - 11904: 0xE4C7, + 38786 - 11904: 0xE4C4, + 38787 - 11904: 0xE4C2, + 38788 - 11904: 0xE4C6, + 38789 - 11904: 0xBBDF, + 38791 - 11904: 0xFB58, + 38792 - 11904: 0xE8B3, + 38793 - 11904: 0x90E6, + 38794 - 11904: 0xE8B1, + 38795 - 11904: 0xBE63, + 38797 - 11904: 0xBE62, + 38798 - 11904: 0xE8B2, + 38799 - 11904: 0xBE64, + 38804 - 11904: 0xEC56, + 38807 - 11904: 0xEC55, + 38808 - 11904: 0xC054, + 38809 - 11904: 0xEC54, + 38810 - 11904: 0xEEFC, + 38811 - 11904: 0x9650, + 38812 - 11904: 0xEEFE, + 38813 - 11904: 0xEF41, + 38814 - 11904: 0xEF40, + 38815 - 11904: 0x90E7, + 38816 - 11904: 0xC1F9, + 38817 - 11904: 0xEEFD, + 38818 - 11904: 0xF1A1, + 38819 - 11904: 0xC2FD, + 38820 - 11904: 0xF17D, + 38821 - 11904: 0xF1A2, + 38822 - 11904: 0xC2FE, + 38824 - 11904: 0xF17B, + 38826 - 11904: 0xF17E, + 38827 - 11904: 0xF17C, + 38828 - 11904: 0xF179, + 38829 - 11904: 0xC340, + 38830 - 11904: 0xF17A, + 38833 - 11904: 0x90E8, + 38834 - 11904: 0x9A5D, + 38835 - 11904: 0xF3A1, + 38836 - 11904: 0x9F7A, + 38838 - 11904: 0xF3A3, + 38839 - 11904: 0xF3A2, + 38840 - 11904: 0x9B5C, + 38841 - 11904: 0xF54A, + 38842 - 11904: 0x9F7C, + 38843 - 11904: 0xF54B, + 38845 - 11904: 0xFC52, + 38846 - 11904: 0x90E9, + 38847 - 11904: 0xF670, + 38848 - 11904: 0x90EA, + 38849 - 11904: 0xC5B7, + 38850 - 11904: 0x9A5E, + 38851 - 11904: 0xC5B6, + 38852 - 11904: 0xF84F, + 38853 - 11904: 0xF850, + 38854 - 11904: 0xC648, + 38855 - 11904: 0xF8D1, + 38856 - 11904: 0x9F76, + 38857 - 11904: 0xC669, + 38859 - 11904: 0xADB3, + 38860 - 11904: 0xB6B4, + 38861 - 11904: 0xE4CA, + 38862 - 11904: 0xE4C9, + 38863 - 11904: 0xE8B5, + 38864 - 11904: 0xE8B4, + 38866 - 11904: 0x90EB, + 38867 - 11904: 0xC1FA, + 38868 - 11904: 0xEF43, + 38869 - 11904: 0xEF42, + 38870 - 11904: 0xF1A5, + 38871 - 11904: 0xF1A3, + 38872 - 11904: 0xF1A6, + 38873 - 11904: 0xF1A4, + 38876 - 11904: 0xC3FC, + 38877 - 11904: 0xF3A4, + 38878 - 11904: 0xF3A5, + 38879 - 11904: 0xF3A6, + 38880 - 11904: 0x90EC, + 38881 - 11904: 0xF671, + 38883 - 11904: 0xF772, + 38885 - 11904: 0xF8D2, + 38886 - 11904: 0x8BEE, + 38893 - 11904: 0xADB4, + 38894 - 11904: 0x90EE, + 38896 - 11904: 0xEC57, + 38897 - 11904: 0xEF44, + 38898 - 11904: 0x91C6, + 38899 - 11904: 0xADB5, + 38901 - 11904: 0x90F2, + 38902 - 11904: 0xBBE0, + 38904 - 11904: 0xEC58, + 38905 - 11904: 0xC341, + 38906 - 11904: 0xF1A7, + 38907 - 11904: 0xC3FD, + 38909 - 11904: 0xF54C, + 38910 - 11904: 0xF54D, + 38911 - 11904: 0xC554, + 38912 - 11904: 0xF851, + 38913 - 11904: 0xADB6, + 38914 - 11904: 0xB3BB, + 38915 - 11904: 0xB3BC, + 38916 - 11904: 0xD84E, + 38917 - 11904: 0xB6B5, + 38918 - 11904: 0xB6B6, + 38919 - 11904: 0xDCAC, + 38920 - 11904: 0xB6B7, + 38922 - 11904: 0xB97A, + 38924 - 11904: 0xB97C, + 38925 - 11904: 0xE0DF, + 38926 - 11904: 0xE0E0, + 38927 - 11904: 0xE0DE, + 38928 - 11904: 0xB977, + 38929 - 11904: 0xB978, + 38930 - 11904: 0xB97B, + 38931 - 11904: 0xB979, + 38932 - 11904: 0xFCBC, + 38933 - 11904: 0x8A74, + 38934 - 11904: 0xE4CB, + 38935 - 11904: 0xBBE1, + 38936 - 11904: 0xBBE2, + 38939 - 11904: 0xE8BC, + 38940 - 11904: 0xBE67, + 38941 - 11904: 0xE8B7, + 38942 - 11904: 0xE8B6, + 38943 - 11904: 0x9657, + 38944 - 11904: 0xE8BB, + 38945 - 11904: 0xBE65, + 38947 - 11904: 0x9CEF, + 38948 - 11904: 0xC05B, + 38950 - 11904: 0xE8B8, + 38951 - 11904: 0xE8BD, + 38952 - 11904: 0xE8BA, + 38953 - 11904: 0xE8B9, + 38955 - 11904: 0xBE66, + 38957 - 11904: 0xC059, + 38958 - 11904: 0x9FDF, + 38959 - 11904: 0xEC5A, + 38960 - 11904: 0xC055, + 38962 - 11904: 0xEC5B, + 38963 - 11904: 0x90F7, + 38964 - 11904: 0x90F6, + 38965 - 11904: 0xEC59, + 38967 - 11904: 0xC058, + 38968 - 11904: 0xC056, + 38969 - 11904: 0xC05A, + 38971 - 11904: 0xC057, + 38977 - 11904: 0xEF45, + 38979 - 11904: 0xEF4A, + 38980 - 11904: 0xEF46, + 38981 - 11904: 0xEF49, + 38982 - 11904: 0xC1FB, + 38983 - 11904: 0x9B5E, + 38984 - 11904: 0xEDD4, + 38985 - 11904: 0xEF48, + 38986 - 11904: 0xEF47, + 38987 - 11904: 0x90F8, + 38988 - 11904: 0xC344, + 38989 - 11904: 0xC342, + 38990 - 11904: 0xC345, + 38991 - 11904: 0xC343, + 38992 - 11904: 0xF1A8, + 38993 - 11904: 0xF1A9, + 38994 - 11904: 0xF1AA, + 38995 - 11904: 0xC346, + 38998 - 11904: 0x8CFC, + 38999 - 11904: 0xF3AA, + 39000 - 11904: 0xC440, + 39001 - 11904: 0xF3A8, + 39003 - 11904: 0xC441, + 39004 - 11904: 0xF3A7, + 39005 - 11904: 0xF3A9, + 39006 - 11904: 0xC3FE, + 39007 - 11904: 0xF551, + 39008 - 11904: 0xF54E, + 39010 - 11904: 0xF54F, + 39011 - 11904: 0xF550, + 39012 - 11904: 0xF672, + 39013 - 11904: 0xC556, + 39014 - 11904: 0x90F9, + 39015 - 11904: 0xC555, + 39016 - 11904: 0x8CC9, + 39017 - 11904: 0xF774, + 39018 - 11904: 0xF773, + 39019 - 11904: 0xC5B8, + 39020 - 11904: 0xFA6A, + 39023 - 11904: 0xC5E3, + 39024 - 11904: 0xC649, + 39025 - 11904: 0xC660, + 39026 - 11904: 0xF958, + 39027 - 11904: 0xF9AE, + 39028 - 11904: 0xF9AF, + 39029 - 11904: 0x8BEF, + 39080 - 11904: 0xADB7, + 39081 - 11904: 0xDCAD, + 39084 - 11904: 0xE0E1, + 39085 - 11904: 0xE4CC, + 39086 - 11904: 0xE4CD, + 39087 - 11904: 0xBBE3, + 39089 - 11904: 0xBBE4, + 39090 - 11904: 0xE8BE, + 39091 - 11904: 0xBE68, + 39092 - 11904: 0x9FE0, + 39094 - 11904: 0xC1FC, + 39095 - 11904: 0x9142, + 39096 - 11904: 0xF1AB, + 39097 - 11904: 0x9A62, + 39098 - 11904: 0xC347, + 39099 - 11904: 0xF3AD, + 39100 - 11904: 0xC442, + 39101 - 11904: 0xF3AC, + 39102 - 11904: 0xF3AE, + 39103 - 11904: 0xF3AB, + 39104 - 11904: 0xF675, + 39105 - 11904: 0xF552, + 39106 - 11904: 0xF553, + 39107 - 11904: 0x9569, + 39108 - 11904: 0xC4C6, + 39110 - 11904: 0xF674, + 39111 - 11904: 0x9144, + 39112 - 11904: 0x9143, + 39113 - 11904: 0xF673, + 39114 - 11904: 0x9141, + 39115 - 11904: 0xF775, + 39116 - 11904: 0xF9B0, + 39118 - 11904: 0x8BF0, + 39131 - 11904: 0xADB8, + 39132 - 11904: 0x9660, + 39134 - 11904: 0x8BF1, + 39135 - 11904: 0xADB9, + 39136 - 11904: 0x99F6, + 39137 - 11904: 0x9149, + 39138 - 11904: 0xB0A7, + 39139 - 11904: 0xD448, + 39141 - 11904: 0xD84F, + 39142 - 11904: 0x914A, + 39143 - 11904: 0xB6B8, + 39145 - 11904: 0xB6BB, + 39146 - 11904: 0xB6B9, + 39147 - 11904: 0xDCAE, + 39148 - 11904: 0x914B, + 39149 - 11904: 0xB6BD, + 39151 - 11904: 0xB6BA, + 39153 - 11904: 0x9A64, + 39154 - 11904: 0xB6BC, + 39156 - 11904: 0xB97E, + 39157 - 11904: 0x8ABF, + 39158 - 11904: 0xE0E2, + 39161 - 11904: 0xE0E3, + 39162 - 11904: 0xE8C0, + 39164 - 11904: 0xB97D, + 39165 - 11904: 0xB9A1, + 39166 - 11904: 0xB9A2, + 39168 - 11904: 0xE4CF, + 39170 - 11904: 0xE4CE, + 39171 - 11904: 0xBBE5, + 39173 - 11904: 0xBBE6, + 39175 - 11904: 0xE4D0, + 39176 - 11904: 0xE8BF, + 39177 - 11904: 0xBBE8, + 39178 - 11904: 0xBE69, + 39180 - 11904: 0xBBE7, + 39182 - 11904: 0x9A66, + 39184 - 11904: 0xC05C, + 39185 - 11904: 0xE8C1, + 39186 - 11904: 0xBE6B, + 39187 - 11904: 0xBE6A, + 39188 - 11904: 0xE8C2, + 39189 - 11904: 0xE8C5, + 39190 - 11904: 0xE8C3, + 39191 - 11904: 0xE8C4, + 39192 - 11904: 0xBE6C, + 39193 - 11904: 0x9A67, + 39194 - 11904: 0xC061, + 39195 - 11904: 0xC05F, + 39196 - 11904: 0x9A69, + 39198 - 11904: 0xC05E, + 39199 - 11904: 0xEC5D, + 39201 - 11904: 0xC060, + 39204 - 11904: 0xEC5C, + 39205 - 11904: 0xEF4B, + 39207 - 11904: 0xEC5E, + 39208 - 11904: 0xC05D, + 39209 - 11904: 0xEC5F, + 39210 - 11904: 0xEF4E, + 39211 - 11904: 0xEF4C, + 39212 - 11904: 0xEF4D, + 39213 - 11904: 0xEF52, + 39214 - 11904: 0xC34B, + 39215 - 11904: 0xEF51, + 39216 - 11904: 0xEF54, + 39217 - 11904: 0xEF53, + 39218 - 11904: 0xEF50, + 39219 - 11904: 0xEF4F, + 39221 - 11904: 0xC1FD, + 39223 - 11904: 0x9A6A, + 39224 - 11904: 0x9652, + 39225 - 11904: 0x914D, + 39226 - 11904: 0xF1AE, + 39227 - 11904: 0x9666, + 39228 - 11904: 0xF1AD, + 39229 - 11904: 0xC34A, + 39230 - 11904: 0xC348, + 39231 - 11904: 0xC349, + 39232 - 11904: 0x9F7B, + 39233 - 11904: 0xF1AC, + 39234 - 11904: 0x9A6B, + 39235 - 11904: 0xF3B1, + 39237 - 11904: 0xC443, + 39239 - 11904: 0xF3B0, + 39240 - 11904: 0xF3AF, + 39241 - 11904: 0xC444, + 39242 - 11904: 0xA06C, + 39243 - 11904: 0xF558, + 39244 - 11904: 0xF557, + 39245 - 11904: 0x9667, + 39246 - 11904: 0xF555, + 39248 - 11904: 0xF554, + 39249 - 11904: 0xC4C8, + 39250 - 11904: 0xC4C7, + 39251 - 11904: 0xF559, + 39252 - 11904: 0xF776, + 39253 - 11904: 0xC5B9, + 39254 - 11904: 0xF677, + 39255 - 11904: 0xC557, + 39256 - 11904: 0xF676, + 39257 - 11904: 0xF556, + 39259 - 11904: 0xF777, + 39260 - 11904: 0xC5E4, + 39261 - 11904: 0x9A6C, + 39262 - 11904: 0xC661, + 39263 - 11904: 0xF959, + 39265 - 11904: 0xF9B1, + 39266 - 11904: 0x9A6D, + 39267 - 11904: 0x8BF2, + 39318 - 11904: 0xADBA, + 39319 - 11904: 0xD850, + 39320 - 11904: 0xEF55, + 39321 - 11904: 0xADBB, + 39323 - 11904: 0x966A, + 39324 - 11904: 0xE4D2, + 39325 - 11904: 0xE4D1, + 39326 - 11904: 0xEC60, + 39329 - 11904: 0xEF57, + 39331 - 11904: 0xEF56, + 39332 - 11904: 0xFCEA, + 39333 - 11904: 0xC34C, + 39334 - 11904: 0xF3B2, + 39335 - 11904: 0xF3B3, + 39336 - 11904: 0xC4C9, + 39338 - 11904: 0x966C, + 39339 - 11904: 0xF9B2, + 39340 - 11904: 0xB0A8, + 39341 - 11904: 0xB6BF, + 39342 - 11904: 0xB6BE, + 39343 - 11904: 0xE0E4, + 39344 - 11904: 0xE0E6, + 39345 - 11904: 0xB9A4, + 39346 - 11904: 0xE0E5, + 39347 - 11904: 0xB9A3, + 39348 - 11904: 0xB9A5, + 39349 - 11904: 0xE0E7, + 39352 - 11904: 0x91C4, + 39353 - 11904: 0xE4D4, + 39354 - 11904: 0xE4D6, + 39355 - 11904: 0xE4D5, + 39356 - 11904: 0x9677, + 39357 - 11904: 0xE4D8, + 39361 - 11904: 0xBBE9, + 39362 - 11904: 0xE4D7, + 39363 - 11904: 0xE4D3, + 39364 - 11904: 0x99F4, + 39365 - 11904: 0x9A6F, + 39367 - 11904: 0xE4D9, + 39369 - 11904: 0xE8CC, + 39371 - 11904: 0xE8CF, + 39372 - 11904: 0xE8D1, + 39373 - 11904: 0xE8C7, + 39374 - 11904: 0xE8CB, + 39375 - 11904: 0xE8C8, + 39376 - 11904: 0xBE6E, + 39377 - 11904: 0xBE71, + 39378 - 11904: 0xBE73, + 39379 - 11904: 0xE8C9, + 39380 - 11904: 0xE8CA, + 39381 - 11904: 0xBE72, + 39382 - 11904: 0xE8CD, + 39383 - 11904: 0xE8D0, + 39384 - 11904: 0xE8CE, + 39385 - 11904: 0xBE74, + 39386 - 11904: 0x9FAB, + 39387 - 11904: 0xBE70, + 39388 - 11904: 0xE8C6, + 39389 - 11904: 0xBE6D, + 39391 - 11904: 0xBE6F, + 39392 - 11904: 0x8CBE, + 39393 - 11904: 0x8EC1, + 39394 - 11904: 0xC063, + 39395 - 11904: 0xEC66, + 39396 - 11904: 0xEC64, + 39397 - 11904: 0xEC63, + 39398 - 11904: 0x9555, + 39399 - 11904: 0xEC69, + 39401 - 11904: 0xEC68, + 39402 - 11904: 0xEC67, + 39404 - 11904: 0xEC62, + 39405 - 11904: 0xC062, + 39406 - 11904: 0xEC61, + 39408 - 11904: 0xEC65, + 39409 - 11904: 0xC064, + 39412 - 11904: 0xEF5A, + 39413 - 11904: 0x9152, + 39414 - 11904: 0xEF5E, + 39415 - 11904: 0xEF5B, + 39416 - 11904: 0xEF5D, + 39417 - 11904: 0xEF5C, + 39418 - 11904: 0xEF59, + 39419 - 11904: 0xEF5F, + 39420 - 11904: 0xEF62, + 39421 - 11904: 0xEF60, + 39422 - 11904: 0xEF61, + 39423 - 11904: 0xC240, + 39425 - 11904: 0xC1FE, + 39426 - 11904: 0xEF58, + 39427 - 11904: 0xEF63, + 39428 - 11904: 0xF1B3, + 39429 - 11904: 0xF1B6, + 39430 - 11904: 0xF1B8, + 39431 - 11904: 0xF1B7, + 39433 - 11904: 0xF1B1, + 39434 - 11904: 0xF1B5, + 39435 - 11904: 0xF1B0, + 39436 - 11904: 0x9153, + 39437 - 11904: 0xF1B2, + 39438 - 11904: 0xC34D, + 39439 - 11904: 0xF1AF, + 39440 - 11904: 0x9155, + 39441 - 11904: 0xF1B4, + 39444 - 11904: 0xF3C0, + 39445 - 11904: 0xF3B5, + 39446 - 11904: 0xC445, + 39449 - 11904: 0xC446, + 39450 - 11904: 0xF3B4, + 39451 - 11904: 0xF3B9, + 39452 - 11904: 0xF3BF, + 39453 - 11904: 0xF3B7, + 39454 - 11904: 0xF3BE, + 39455 - 11904: 0x955D, + 39456 - 11904: 0xF3BB, + 39457 - 11904: 0x9671, + 39458 - 11904: 0xF3BA, + 39459 - 11904: 0xF3BD, + 39460 - 11904: 0xF3B8, + 39461 - 11904: 0xF3B6, + 39462 - 11904: 0x9C6D, + 39463 - 11904: 0xF3BC, + 39465 - 11904: 0xF560, + 39466 - 11904: 0xF55E, + 39467 - 11904: 0xC4CA, + 39468 - 11904: 0xF55D, + 39469 - 11904: 0xF563, + 39470 - 11904: 0xF561, + 39471 - 11904: 0x9673, + 39472 - 11904: 0xC4CB, + 39473 - 11904: 0xF55C, + 39474 - 11904: 0xF55A, + 39476 - 11904: 0xF55B, + 39477 - 11904: 0xC4CD, + 39478 - 11904: 0xF55F, + 39479 - 11904: 0xC4CC, + 39480 - 11904: 0xF562, + 39481 - 11904: 0xF678, + 39482 - 11904: 0xF67E, + 39483 - 11904: 0x9154, + 39484 - 11904: 0x9A71, + 39485 - 11904: 0xF679, + 39486 - 11904: 0xC55B, + 39487 - 11904: 0xF6A1, + 39488 - 11904: 0xC55A, + 39489 - 11904: 0xF67D, + 39490 - 11904: 0xF67C, + 39491 - 11904: 0xC559, + 39492 - 11904: 0xF67B, + 39493 - 11904: 0xC558, + 39494 - 11904: 0xF67A, + 39496 - 11904: 0xF77D, + 39497 - 11904: 0xF7A1, + 39498 - 11904: 0xF77E, + 39500 - 11904: 0xF77B, + 39501 - 11904: 0xC5BB, + 39502 - 11904: 0xF778, + 39503 - 11904: 0xF77C, + 39504 - 11904: 0xF7A3, + 39506 - 11904: 0xF7A2, + 39507 - 11904: 0xF779, + 39508 - 11904: 0xF77A, + 39509 - 11904: 0xC5BA, + 39510 - 11904: 0xF852, + 39511 - 11904: 0xC5E7, + 39512 - 11904: 0x9156, + 39513 - 11904: 0xF853, + 39514 - 11904: 0xC5E5, + 39515 - 11904: 0xC5E6, + 39516 - 11904: 0x966D, + 39518 - 11904: 0xF8D3, + 39519 - 11904: 0xC64A, + 39520 - 11904: 0xF976, + 39522 - 11904: 0xC66A, + 39523 - 11904: 0x9557, + 39524 - 11904: 0xF9B3, + 39525 - 11904: 0xC66B, + 39526 - 11904: 0xF9B4, + 39527 - 11904: 0xF9B5, + 39528 - 11904: 0xF9C3, + 39529 - 11904: 0xF9C2, + 39530 - 11904: 0xC67A, + 39531 - 11904: 0xF9CD, + 39532 - 11904: 0x89C6, + 39567 - 11904: 0x89C7, + 39592 - 11904: 0xB0A9, + 39595 - 11904: 0xE0E9, + 39597 - 11904: 0xE0E8, + 39599 - 11904: 0xBBEA, + 39600 - 11904: 0xBBEB, + 39601 - 11904: 0xE4DA, + 39602 - 11904: 0x8A6A, + 39603 - 11904: 0xE8D2, + 39604 - 11904: 0xEC6C, + 39606 - 11904: 0x8B57, + 39607 - 11904: 0xBE75, + 39608 - 11904: 0xC065, + 39609 - 11904: 0xEC6A, + 39610 - 11904: 0x9FE1, + 39611 - 11904: 0xEC6D, + 39612 - 11904: 0xC066, + 39613 - 11904: 0x9B5F, + 39614 - 11904: 0xEF64, + 39615 - 11904: 0xEC6B, + 39616 - 11904: 0xF1B9, + 39617 - 11904: 0xC34E, + 39618 - 11904: 0xF3C1, + 39622 - 11904: 0xF566, + 39623 - 11904: 0xF564, + 39626 - 11904: 0xF565, + 39629 - 11904: 0xF6A2, + 39631 - 11904: 0xC55C, + 39632 - 11904: 0xF7A4, + 39633 - 11904: 0xC5EA, + 39634 - 11904: 0xC5BC, + 39635 - 11904: 0xC5E8, + 39636 - 11904: 0xC5E9, + 39637 - 11904: 0xF8D4, + 39638 - 11904: 0xC662, + 39639 - 11904: 0xA05D, + 39640 - 11904: 0xB0AA, + 39644 - 11904: 0xF1BA, + 39647 - 11904: 0xD449, + 39648 - 11904: 0x915B, + 39649 - 11904: 0xB9A6, + 39650 - 11904: 0x915C, + 39651 - 11904: 0xE4DB, + 39654 - 11904: 0xBBEC, + 39655 - 11904: 0xE4DC, + 39659 - 11904: 0xE8D4, + 39660 - 11904: 0xE8D3, + 39661 - 11904: 0xC068, + 39662 - 11904: 0xBE76, + 39663 - 11904: 0xBE77, + 39665 - 11904: 0xE8D7, + 39666 - 11904: 0xE8D6, + 39667 - 11904: 0xE8D5, + 39668 - 11904: 0x915E, + 39670 - 11904: 0xEC6E, + 39671 - 11904: 0xEC71, + 39673 - 11904: 0xEC70, + 39674 - 11904: 0xEC6F, + 39675 - 11904: 0xC067, + 39676 - 11904: 0xEF68, + 39677 - 11904: 0xEF66, + 39678 - 11904: 0xEF65, + 39679 - 11904: 0x9F5C, + 39681 - 11904: 0xEF67, + 39682 - 11904: 0x9F57, + 39683 - 11904: 0xC34F, + 39684 - 11904: 0xF1BC, + 39685 - 11904: 0xF1BD, + 39686 - 11904: 0xC350, + 39688 - 11904: 0xF1BB, + 39689 - 11904: 0x9F65, + 39690 - 11904: 0xF3C3, + 39691 - 11904: 0xF3C2, + 39692 - 11904: 0xF3C5, + 39693 - 11904: 0xC447, + 39694 - 11904: 0xF3C4, + 39695 - 11904: 0x9A72, + 39696 - 11904: 0xF567, + 39697 - 11904: 0xF569, + 39698 - 11904: 0xF568, + 39700 - 11904: 0x9160, + 39701 - 11904: 0xF6A3, + 39702 - 11904: 0xF6A6, + 39703 - 11904: 0xF6A4, + 39704 - 11904: 0xF6A5, + 39705 - 11904: 0xF7A5, + 39706 - 11904: 0xC5BD, + 39710 - 11904: 0xF854, + 39711 - 11904: 0xF855, + 39712 - 11904: 0xF856, + 39714 - 11904: 0xC64B, + 39715 - 11904: 0xC663, + 39716 - 11904: 0xF9B6, + 39717 - 11904: 0xB0AB, + 39719 - 11904: 0xBE78, + 39720 - 11904: 0xC069, + 39721 - 11904: 0xF1BE, + 39722 - 11904: 0x9F5E, + 39723 - 11904: 0xF7A6, + 39725 - 11904: 0x9161, + 39726 - 11904: 0xF9C4, + 39727 - 11904: 0xD44A, + 39729 - 11904: 0xC67B, + 39730 - 11904: 0xB0AC, + 39731 - 11904: 0xEC72, + 39732 - 11904: 0x9164, + 39733 - 11904: 0xF1BF, + 39735 - 11904: 0xF3C6, + 39737 - 11904: 0x9F41, + 39738 - 11904: 0xF6A7, + 39739 - 11904: 0xF7A7, + 39740 - 11904: 0xB0AD, + 39742 - 11904: 0xE4DD, + 39743 - 11904: 0xE4DE, + 39744 - 11904: 0x9169, + 39745 - 11904: 0xBBED, + 39746 - 11904: 0xBBEE, + 39747 - 11904: 0xE8D9, + 39748 - 11904: 0xBE7A, + 39749 - 11904: 0xBE79, + 39750 - 11904: 0xE8D8, + 39752 - 11904: 0xEF69, + 39754 - 11904: 0xF1C0, + 39755 - 11904: 0xF1C2, + 39756 - 11904: 0xF1C1, + 39757 - 11904: 0xC353, + 39758 - 11904: 0xC352, + 39759 - 11904: 0xC351, + 39760 - 11904: 0x9168, + 39761 - 11904: 0xC55E, + 39762 - 11904: 0xF6A8, + 39764 - 11904: 0xC55D, + 39765 - 11904: 0xF7A9, + 39766 - 11904: 0xF7A8, + 39768 - 11904: 0xC64C, + 39769 - 11904: 0xF8D5, + 39770 - 11904: 0xB3BD, + 39771 - 11904: 0xE0EA, + 39775 - 11904: 0xE4E1, + 39776 - 11904: 0xE4DF, + 39777 - 11904: 0xE4E0, + 39780 - 11904: 0xE8E2, + 39782 - 11904: 0xE8DD, + 39783 - 11904: 0xE8DA, + 39784 - 11904: 0xE8E1, + 39785 - 11904: 0x9A74, + 39788 - 11904: 0xE8E3, + 39791 - 11904: 0xBE7C, + 39792 - 11904: 0xE8E0, + 39793 - 11904: 0xE8DC, + 39796 - 11904: 0xE8DB, + 39797 - 11904: 0xE8DF, + 39798 - 11904: 0xE8DE, + 39799 - 11904: 0xBE7B, + 39802 - 11904: 0xEC7D, + 39803 - 11904: 0xEC78, + 39804 - 11904: 0xEC76, + 39805 - 11904: 0xECA1, + 39806 - 11904: 0xEC77, + 39807 - 11904: 0x96B2, + 39808 - 11904: 0xEC73, + 39809 - 11904: 0x9A75, + 39810 - 11904: 0xEC79, + 39811 - 11904: 0xFDA5, + 39813 - 11904: 0xEC74, + 39814 - 11904: 0xEF72, + 39815 - 11904: 0xEC75, + 39816 - 11904: 0xECA2, + 39819 - 11904: 0x9EE9, + 39821 - 11904: 0x8BBA, + 39822 - 11904: 0x916D, + 39823 - 11904: 0xA060, + 39824 - 11904: 0xEC7C, + 39825 - 11904: 0xC06A, + 39826 - 11904: 0xEC7B, + 39827 - 11904: 0xEC7A, + 39829 - 11904: 0xEC7E, + 39831 - 11904: 0x9FDE, + 39834 - 11904: 0xEF6A, + 39835 - 11904: 0xEF6D, + 39837 - 11904: 0x9FC3, + 39838 - 11904: 0xEF6C, + 39839 - 11904: 0x96B5, + 39840 - 11904: 0xEF74, + 39841 - 11904: 0xEF6F, + 39842 - 11904: 0xEF73, + 39844 - 11904: 0xEF71, + 39845 - 11904: 0xEF70, + 39846 - 11904: 0xEF6E, + 39848 - 11904: 0xEF6B, + 39850 - 11904: 0xC243, + 39851 - 11904: 0xC242, + 39853 - 11904: 0xC244, + 39854 - 11904: 0xC241, + 39855 - 11904: 0xEF75, + 39856 - 11904: 0xA067, + 39861 - 11904: 0xF1C8, + 39862 - 11904: 0xF1CB, + 39864 - 11904: 0xF1C9, + 39865 - 11904: 0xF1CD, + 39869 - 11904: 0xF1CE, + 39871 - 11904: 0xF1C6, + 39872 - 11904: 0xC358, + 39873 - 11904: 0xF1C7, + 39875 - 11904: 0xF1C5, + 39876 - 11904: 0xF1CC, + 39878 - 11904: 0xF1C4, + 39879 - 11904: 0xF1C3, + 39880 - 11904: 0xC357, + 39881 - 11904: 0xC355, + 39882 - 11904: 0xC354, + 39887 - 11904: 0x96B3, + 39891 - 11904: 0xF1CA, + 39892 - 11904: 0xF3CF, + 39893 - 11904: 0xF3D5, + 39894 - 11904: 0xC44A, + 39895 - 11904: 0xF3D0, + 39897 - 11904: 0xF3D3, + 39898 - 11904: 0xF3D7, + 39899 - 11904: 0xC44B, + 39900 - 11904: 0xF3D2, + 39901 - 11904: 0x9A76, + 39902 - 11904: 0xF3CA, + 39904 - 11904: 0xF3C9, + 39905 - 11904: 0xF3D6, + 39906 - 11904: 0xF3CD, + 39908 - 11904: 0xF3CB, + 39909 - 11904: 0xF3D4, + 39910 - 11904: 0xF3CC, + 39911 - 11904: 0xC449, + 39912 - 11904: 0xC448, + 39913 - 11904: 0x95D5, + 39914 - 11904: 0xF3C7, + 39915 - 11904: 0xF3C8, + 39916 - 11904: 0xF3D1, + 39917 - 11904: 0x9ECA, + 39920 - 11904: 0xF3CE, + 39921 - 11904: 0x9A77, + 39924 - 11904: 0x9A78, + 39927 - 11904: 0xF56C, + 39928 - 11904: 0xF56F, + 39933 - 11904: 0xC356, + 39935 - 11904: 0x9170, + 39938 - 11904: 0x916F, + 39941 - 11904: 0xF56D, + 39942 - 11904: 0xF573, + 39943 - 11904: 0xF571, + 39944 - 11904: 0xF56B, + 39945 - 11904: 0xF576, + 39946 - 11904: 0x9FA3, + 39947 - 11904: 0xF56A, + 39948 - 11904: 0x9171, + 39949 - 11904: 0xC4CF, + 39950 - 11904: 0xF572, + 39952 - 11904: 0x96B1, + 39954 - 11904: 0xF56E, + 39955 - 11904: 0xC4CE, + 39956 - 11904: 0xF575, + 39957 - 11904: 0x9F63, + 39959 - 11904: 0xF574, + 39963 - 11904: 0x9F67, + 39964 - 11904: 0xF6AB, + 39965 - 11904: 0xF6AA, + 39967 - 11904: 0x8BB9, + 39968 - 11904: 0x9A7A, + 39969 - 11904: 0xF6B1, + 39971 - 11904: 0xF6AD, + 39972 - 11904: 0xF6B0, + 39973 - 11904: 0xC560, + 39974 - 11904: 0x8B56, + 39976 - 11904: 0xF6AE, + 39977 - 11904: 0xF6AF, + 39979 - 11904: 0xF6A9, + 39980 - 11904: 0xF6AC, + 39981 - 11904: 0xC55F, + 39983 - 11904: 0x9ADA, + 39985 - 11904: 0xC5BF, + 39986 - 11904: 0xF7B4, + 39987 - 11904: 0xF7AF, + 39988 - 11904: 0xF7B3, + 39989 - 11904: 0x96B0, + 39990 - 11904: 0xF7B6, + 39991 - 11904: 0xF7B2, + 39993 - 11904: 0xF7AE, + 39994 - 11904: 0x9A7E, + 39995 - 11904: 0xC5C1, + 39996 - 11904: 0xF7B1, + 39997 - 11904: 0xF7B5, + 39998 - 11904: 0xC5C0, + 39999 - 11904: 0xF7AC, + 40000 - 11904: 0xF570, + 40001 - 11904: 0xF7B0, + 40004 - 11904: 0xF7AD, + 40005 - 11904: 0x9DDE, + 40006 - 11904: 0xF7AA, + 40008 - 11904: 0xF7AB, + 40009 - 11904: 0xC5BE, + 40010 - 11904: 0xF85A, + 40011 - 11904: 0xF85C, + 40012 - 11904: 0xF85F, + 40013 - 11904: 0xF85B, + 40014 - 11904: 0xF860, + 40015 - 11904: 0x96AD, + 40016 - 11904: 0xF859, + 40018 - 11904: 0xF857, + 40019 - 11904: 0x96AE, + 40020 - 11904: 0xC5EB, + 40021 - 11904: 0xF85D, + 40022 - 11904: 0xC5ED, + 40023 - 11904: 0xC5EC, + 40024 - 11904: 0xF858, + 40025 - 11904: 0xF85E, + 40029 - 11904: 0x9EA1, + 40030 - 11904: 0xF8DA, + 40031 - 11904: 0xC64D, + 40032 - 11904: 0xF8DB, + 40034 - 11904: 0xF8D9, + 40035 - 11904: 0xF8D6, + 40038 - 11904: 0xF8D8, + 40039 - 11904: 0xF8D7, + 40040 - 11904: 0xF95A, + 40045 - 11904: 0xF95C, + 40046 - 11904: 0xF95B, + 40049 - 11904: 0xF979, + 40050 - 11904: 0x9E50, + 40051 - 11904: 0xF978, + 40052 - 11904: 0xF977, + 40053 - 11904: 0xF97A, + 40055 - 11904: 0xC673, + 40056 - 11904: 0xC674, + 40057 - 11904: 0xF9CA, + 40058 - 11904: 0xF9CE, + 40059 - 11904: 0x96AF, + 40060 - 11904: 0x8BF4, + 40165 - 11904: 0xB3BE, + 40166 - 11904: 0xDCAF, + 40167 - 11904: 0xE0ED, + 40169 - 11904: 0xB9A7, + 40170 - 11904: 0xE0EB, + 40173 - 11904: 0xE0EC, + 40177 - 11904: 0xE4E2, + 40178 - 11904: 0xE4E3, + 40179 - 11904: 0xBBF1, + 40180 - 11904: 0xBBEF, + 40181 - 11904: 0xE4E4, + 40182 - 11904: 0xBBF0, + 40183 - 11904: 0xE8E8, + 40185 - 11904: 0xE8EB, + 40186 - 11904: 0xE8E5, + 40187 - 11904: 0xE8EC, + 40188 - 11904: 0xE8E4, + 40189 - 11904: 0xE8E6, + 40191 - 11904: 0xE8E7, + 40192 - 11904: 0xE8EA, + 40194 - 11904: 0x9FA4, + 40195 - 11904: 0xBEA1, + 40196 - 11904: 0xE8EF, + 40197 - 11904: 0xE8EE, + 40198 - 11904: 0xBE7D, + 40199 - 11904: 0xE8E9, + 40200 - 11904: 0xE8ED, + 40201 - 11904: 0xBE7E, + 40204 - 11904: 0x96BD, + 40208 - 11904: 0xECAC, + 40210 - 11904: 0xC06F, + 40212 - 11904: 0xECA7, + 40213 - 11904: 0xC06B, + 40214 - 11904: 0x96F4, + 40215 - 11904: 0xECA4, + 40216 - 11904: 0xECAA, + 40217 - 11904: 0xECAD, + 40219 - 11904: 0xC070, + 40221 - 11904: 0xECA9, + 40222 - 11904: 0xECA6, + 40223 - 11904: 0xECAE, + 40224 - 11904: 0xECA5, + 40225 - 11904: 0x96B8, + 40226 - 11904: 0xECAB, + 40227 - 11904: 0xC06C, + 40229 - 11904: 0xECA3, + 40230 - 11904: 0xC06D, + 40232 - 11904: 0xC06E, + 40233 - 11904: 0xECA8, + 40237 - 11904: 0xEFA9, + 40238 - 11904: 0xEF7A, + 40239 - 11904: 0xEF7B, + 40240 - 11904: 0xEF7E, + 40241 - 11904: 0xEF7C, + 40243 - 11904: 0xEF76, + 40244 - 11904: 0xFAA1, + 40246 - 11904: 0xEF79, + 40247 - 11904: 0xEFA5, + 40248 - 11904: 0xEF7D, + 40249 - 11904: 0x91A7, + 40251 - 11904: 0xC245, + 40253 - 11904: 0xEFA7, + 40254 - 11904: 0xEFA4, + 40255 - 11904: 0xC246, + 40256 - 11904: 0xEFA6, + 40257 - 11904: 0xEF77, + 40258 - 11904: 0xEFA2, + 40259 - 11904: 0xEFA3, + 40260 - 11904: 0xA05E, + 40261 - 11904: 0xEFA1, + 40265 - 11904: 0x9A7D, + 40266 - 11904: 0xF1D2, + 40267 - 11904: 0xF1D4, + 40268 - 11904: 0xF1D7, + 40270 - 11904: 0x8948, + 40271 - 11904: 0xF1D1, + 40272 - 11904: 0x9EB1, + 40273 - 11904: 0xC359, + 40274 - 11904: 0xF1D9, + 40275 - 11904: 0xF1D0, + 40276 - 11904: 0xF1DA, + 40278 - 11904: 0xF1D6, + 40279 - 11904: 0xF1D8, + 40280 - 11904: 0xF1DC, + 40281 - 11904: 0xF1D5, + 40282 - 11904: 0xF1DD, + 40283 - 11904: 0xF1D3, + 40284 - 11904: 0xF1CF, + 40285 - 11904: 0xC35A, + 40286 - 11904: 0x9DDB, + 40287 - 11904: 0xF1DB, + 40288 - 11904: 0xC35B, + 40289 - 11904: 0xC44D, + 40295 - 11904: 0xEF78, + 40296 - 11904: 0xF3F1, + 40297 - 11904: 0xF3E8, + 40298 - 11904: 0xC44F, + 40299 - 11904: 0xF3E4, + 40300 - 11904: 0xC450, + 40301 - 11904: 0x95BF, + 40302 - 11904: 0x8A73, + 40303 - 11904: 0xF3ED, + 40304 - 11904: 0xF3E7, + 40305 - 11904: 0xF3DD, + 40306 - 11904: 0xC44E, + 40307 - 11904: 0xF3EA, + 40308 - 11904: 0xF3E5, + 40309 - 11904: 0xF3E6, + 40311 - 11904: 0xF3D8, + 40312 - 11904: 0xF3DF, + 40313 - 11904: 0xF3EE, + 40315 - 11904: 0xF3EB, + 40316 - 11904: 0x9EFE, + 40317 - 11904: 0xF3E3, + 40318 - 11904: 0x917A, + 40319 - 11904: 0xF3EF, + 40320 - 11904: 0xF3DE, + 40321 - 11904: 0xF3D9, + 40322 - 11904: 0xF3EC, + 40323 - 11904: 0x917B, + 40324 - 11904: 0xF3DB, + 40325 - 11904: 0xF3E9, + 40326 - 11904: 0xF3E0, + 40327 - 11904: 0xF3F0, + 40328 - 11904: 0xF3DC, + 40329 - 11904: 0xC44C, + 40330 - 11904: 0xF3DA, + 40331 - 11904: 0xF3E1, + 40332 - 11904: 0xF3E2, + 40336 - 11904: 0xF57D, + 40338 - 11904: 0xF57B, + 40339 - 11904: 0x9AA3, + 40340 - 11904: 0xF5A2, + 40342 - 11904: 0xF5AE, + 40343 - 11904: 0xF5A5, + 40344 - 11904: 0xF57C, + 40345 - 11904: 0xF578, + 40346 - 11904: 0xF5A7, + 40347 - 11904: 0xF57E, + 40348 - 11904: 0xF5A3, + 40349 - 11904: 0xF57A, + 40350 - 11904: 0xF5AA, + 40351 - 11904: 0xF577, + 40352 - 11904: 0xF5A1, + 40353 - 11904: 0xF5A6, + 40354 - 11904: 0xF5A8, + 40355 - 11904: 0xF5AB, + 40356 - 11904: 0xF579, + 40357 - 11904: 0x96C2, + 40358 - 11904: 0xF5AF, + 40359 - 11904: 0xF5B0, + 40360 - 11904: 0xF5A9, + 40361 - 11904: 0xF5AD, + 40362 - 11904: 0xF5A4, + 40363 - 11904: 0x9F77, + 40364 - 11904: 0xF6C1, + 40365 - 11904: 0xF6C4, + 40367 - 11904: 0xC561, + 40369 - 11904: 0xF6C3, + 40370 - 11904: 0xF6C8, + 40371 - 11904: 0xF6C6, + 40372 - 11904: 0xC562, + 40373 - 11904: 0xF6BD, + 40374 - 11904: 0xF6B3, + 40375 - 11904: 0xF6B2, + 40376 - 11904: 0xC564, + 40377 - 11904: 0xF6BF, + 40378 - 11904: 0xF6C0, + 40379 - 11904: 0xF6BC, + 40380 - 11904: 0xF6B4, + 40381 - 11904: 0x9AA4, + 40382 - 11904: 0xF6B9, + 40383 - 11904: 0xF5AC, + 40384 - 11904: 0x9AA5, + 40385 - 11904: 0xF6B5, + 40386 - 11904: 0xC563, + 40387 - 11904: 0xF6BB, + 40388 - 11904: 0x91A1, + 40389 - 11904: 0xF6BA, + 40391 - 11904: 0xF6B6, + 40392 - 11904: 0xF6C2, + 40393 - 11904: 0x89B8, + 40394 - 11904: 0xF6B7, + 40395 - 11904: 0xF7BB, + 40396 - 11904: 0xF6C5, + 40397 - 11904: 0xF6C7, + 40398 - 11904: 0xF6BE, + 40399 - 11904: 0xF6B8, + 40400 - 11904: 0xF7BC, + 40401 - 11904: 0xF7BE, + 40402 - 11904: 0xF7B8, + 40403 - 11904: 0xC5C2, + 40404 - 11904: 0x9173, + 40405 - 11904: 0xF7C5, + 40406 - 11904: 0xF7C3, + 40407 - 11904: 0xC5C3, + 40408 - 11904: 0xF7C2, + 40409 - 11904: 0xF7C1, + 40410 - 11904: 0xF7BA, + 40411 - 11904: 0xF7B7, + 40412 - 11904: 0xF7BD, + 40413 - 11904: 0xF7C6, + 40414 - 11904: 0xF7B9, + 40415 - 11904: 0xF7BF, + 40417 - 11904: 0xF869, + 40418 - 11904: 0xF86E, + 40419 - 11904: 0xF864, + 40420 - 11904: 0xF867, + 40421 - 11904: 0xC5EE, + 40422 - 11904: 0xF86B, + 40424 - 11904: 0xF872, + 40425 - 11904: 0xF7C0, + 40427 - 11904: 0xF865, + 40428 - 11904: 0xF86F, + 40429 - 11904: 0xF873, + 40430 - 11904: 0xF86A, + 40431 - 11904: 0xF863, + 40432 - 11904: 0xF86D, + 40434 - 11904: 0xF86C, + 40435 - 11904: 0xF871, + 40436 - 11904: 0xF870, + 40437 - 11904: 0xF7C4, + 40438 - 11904: 0xF868, + 40439 - 11904: 0xF862, + 40440 - 11904: 0xF866, + 40441 - 11904: 0xC64E, + 40442 - 11904: 0xC64F, + 40443 - 11904: 0xF861, + 40444 - 11904: 0x9AA6, + 40445 - 11904: 0xF8E6, + 40446 - 11904: 0xF8DD, + 40447 - 11904: 0xF8E5, + 40448 - 11904: 0xF8E2, + 40449 - 11904: 0xF8E3, + 40450 - 11904: 0xF8DC, + 40451 - 11904: 0xF8DF, + 40452 - 11904: 0xF8E7, + 40453 - 11904: 0xF8E1, + 40454 - 11904: 0xF8E0, + 40455 - 11904: 0xF8DE, + 40457 - 11904: 0xF8E4, + 40458 - 11904: 0x89BD, + 40459 - 11904: 0xF95D, + 40460 - 11904: 0x89B9, + 40461 - 11904: 0xF95E, + 40462 - 11904: 0x917D, + 40463 - 11904: 0xF960, + 40464 - 11904: 0xF95F, + 40465 - 11904: 0xF962, + 40466 - 11904: 0xF961, + 40467 - 11904: 0xF97C, + 40468 - 11904: 0xF97B, + 40469 - 11904: 0xF9B7, + 40471 - 11904: 0xF9B8, + 40472 - 11904: 0x96BB, + 40473 - 11904: 0xF9C5, + 40474 - 11904: 0xC678, + 40475 - 11904: 0xC67C, + 40476 - 11904: 0x9FF2, + 40477 - 11904: 0xF9CF, + 40478 - 11904: 0xC67D, + 40479 - 11904: 0x8BF5, + 40565 - 11904: 0xB3BF, + 40569 - 11904: 0xC4D0, + 40570 - 11904: 0xF6C9, + 40571 - 11904: 0x9AA9, + 40572 - 11904: 0xC650, + 40573 - 11904: 0xC651, + 40575 - 11904: 0xB3C0, + 40576 - 11904: 0xE0EE, + 40577 - 11904: 0x9F54, + 40578 - 11904: 0xB9A8, + 40579 - 11904: 0xE8F0, + 40580 - 11904: 0x9FE3, + 40581 - 11904: 0x9EED, + 40582 - 11904: 0xECB0, + 40583 - 11904: 0xECB1, + 40584 - 11904: 0xECAF, + 40585 - 11904: 0xEFAB, + 40586 - 11904: 0xEFAA, + 40587 - 11904: 0xC247, + 40588 - 11904: 0xF1DF, + 40589 - 11904: 0xEFAC, + 40590 - 11904: 0xF1DE, + 40592 - 11904: 0x91AA, + 40593 - 11904: 0xF3F3, + 40594 - 11904: 0xC451, + 40595 - 11904: 0xC453, + 40596 - 11904: 0xF3F2, + 40597 - 11904: 0x91AB, + 40598 - 11904: 0xA070, + 40599 - 11904: 0xC452, + 40600 - 11904: 0x9F6D, + 40601 - 11904: 0xF5B1, + 40602 - 11904: 0xF5B3, + 40603 - 11904: 0xF5B2, + 40604 - 11904: 0xF6CA, + 40605 - 11904: 0xC565, + 40606 - 11904: 0x91AC, + 40607 - 11904: 0xC5EF, + 40608 - 11904: 0xF8E8, + 40609 - 11904: 0xF963, + 40610 - 11904: 0x91AD, + 40612 - 11904: 0xF9D2, + 40613 - 11904: 0xB3C1, + 40614 - 11904: 0xA0FD, + 40615 - 11904: 0xE4E5, + 40616 - 11904: 0x9FE2, + 40617 - 11904: 0xBEA2, + 40618 - 11904: 0x91AF, + 40619 - 11904: 0x9E41, + 40620 - 11904: 0x9AAA, + 40621 - 11904: 0xECB3, + 40622 - 11904: 0xECB2, + 40623 - 11904: 0x91B0, + 40624 - 11904: 0xEFAD, + 40625 - 11904: 0x9AAB, + 40628 - 11904: 0xC454, + 40629 - 11904: 0xC4D1, + 40630 - 11904: 0xF7C7, + 40631 - 11904: 0xF9CB, + 40635 - 11904: 0xB3C2, + 40636 - 11904: 0xBBF2, + 40637 - 11904: 0x9AAC, + 40638 - 11904: 0xBEA3, + 40639 - 11904: 0x9A4A, + 40640 - 11904: 0xF3F4, + 40641 - 11904: 0x91B2, + 40642 - 11904: 0xF874, + 40643 - 11904: 0xB6C0, + 40644 - 11904: 0x8BF6, + 40646 - 11904: 0x9AAD, + 40647 - 11904: 0x89B6, + 40648 - 11904: 0xEFAE, + 40652 - 11904: 0xC664, + 40653 - 11904: 0xB6C1, + 40654 - 11904: 0xBEA4, + 40655 - 11904: 0xC248, + 40656 - 11904: 0xF875, + 40657 - 11904: 0xB6C2, + 40659 - 11904: 0xE8F1, + 40660 - 11904: 0xC072, + 40661 - 11904: 0xECB4, + 40662 - 11904: 0xECB5, + 40664 - 11904: 0xC071, + 40666 - 11904: 0xEFAF, + 40667 - 11904: 0xC24C, + 40668 - 11904: 0xC24A, + 40669 - 11904: 0xC24B, + 40670 - 11904: 0xC249, + 40671 - 11904: 0xF1E0, + 40672 - 11904: 0xC35C, + 40674 - 11904: 0x9AAF, + 40676 - 11904: 0xF5B5, + 40677 - 11904: 0xF5B4, + 40678 - 11904: 0xF5B7, + 40679 - 11904: 0xF5B6, + 40680 - 11904: 0xC4D2, + 40683 - 11904: 0xF6CB, + 40685 - 11904: 0xF6CD, + 40686 - 11904: 0xF6CC, + 40687 - 11904: 0xC566, + 40688 - 11904: 0xF7C8, + 40689 - 11904: 0x9AB0, + 40690 - 11904: 0xF876, + 40691 - 11904: 0xF877, + 40692 - 11904: 0xC5F0, + 40693 - 11904: 0xF964, + 40694 - 11904: 0xF97D, + 40695 - 11904: 0xC675, + 40696 - 11904: 0x9AB1, + 40697 - 11904: 0xDCB0, + 40698 - 11904: 0xECB6, + 40699 - 11904: 0xEFB0, + 40700 - 11904: 0xF3F5, + 40701 - 11904: 0xE0EF, + 40702 - 11904: 0x9AA1, + 40703 - 11904: 0xEFB1, + 40704 - 11904: 0xF1E2, + 40705 - 11904: 0xF1E1, + 40706 - 11904: 0x91B9, + 40710 - 11904: 0xF878, + 40711 - 11904: 0xC652, + 40712 - 11904: 0x91BA, + 40713 - 11904: 0xF965, + 40714 - 11904: 0xF97E, + 40718 - 11904: 0xB9A9, + 40719 - 11904: 0xE8F2, + 40720 - 11904: 0xE8F3, + 40722 - 11904: 0xECB7, + 40723 - 11904: 0xB9AA, + 40725 - 11904: 0xC35D, + 40726 - 11904: 0xF1E3, + 40727 - 11904: 0x9F66, + 40728 - 11904: 0xF6CF, + 40729 - 11904: 0xC567, + 40730 - 11904: 0xF6D0, + 40731 - 11904: 0xF6CE, + 40732 - 11904: 0xF879, + 40734 - 11904: 0xF8E9, + 40736 - 11904: 0xB9AB, + 40738 - 11904: 0xEFB4, + 40739 - 11904: 0xEFB3, + 40740 - 11904: 0xEFB2, + 40741 - 11904: 0xF1E4, + 40742 - 11904: 0xA041, + 40743 - 11904: 0x8BB7, + 40744 - 11904: 0xF1E8, + 40745 - 11904: 0xF1E7, + 40746 - 11904: 0xF1E6, + 40747 - 11904: 0xF1E5, + 40748 - 11904: 0xC35E, + 40749 - 11904: 0xF3F6, + 40750 - 11904: 0xF5B9, + 40751 - 11904: 0xC4D3, + 40752 - 11904: 0xF5B8, + 40753 - 11904: 0xF6D1, + 40754 - 11904: 0xF7CB, + 40755 - 11904: 0xF7CA, + 40756 - 11904: 0xC5C4, + 40757 - 11904: 0xF7C9, + 40758 - 11904: 0xF87C, + 40759 - 11904: 0xF87B, + 40760 - 11904: 0xF87A, + 40761 - 11904: 0x91C0, + 40763 - 11904: 0xBBF3, + 40765 - 11904: 0xECB8, + 40766 - 11904: 0xC24D, + 40768 - 11904: 0xF3F7, + 40769 - 11904: 0xF3F8, + 40770 - 11904: 0xF7CC, + 40771 - 11904: 0xF87D, + 40772 - 11904: 0x9AB3, + 40773 - 11904: 0x91C3, + 40774 - 11904: 0xF8EA, + 40775 - 11904: 0xF966, + 40776 - 11904: 0xF9B9, + 40777 - 11904: 0xF9D4, + 40778 - 11904: 0xBBF4, + 40779 - 11904: 0xC24E, + 40780 - 11904: 0xF1E9, + 40781 - 11904: 0xF3F9, + 40782 - 11904: 0xF6D2, + 40783 - 11904: 0xF87E, + 40784 - 11904: 0xA0FC, + 40786 - 11904: 0xBEA6, + 40787 - 11904: 0x9FEE, + 40788 - 11904: 0xEFB5, + 40789 - 11904: 0xF1EA, + 40790 - 11904: 0xF3FA, + 40791 - 11904: 0xF3FB, + 40792 - 11904: 0xF3FC, + 40793 - 11904: 0xF5BE, + 40794 - 11904: 0x9F69, + 40795 - 11904: 0xF5BA, + 40796 - 11904: 0xC568, + 40797 - 11904: 0xF5BD, + 40798 - 11904: 0xF5BC, + 40799 - 11904: 0xC4D4, + 40800 - 11904: 0xF5BB, + 40801 - 11904: 0xC4D6, + 40802 - 11904: 0x91C8, + 40803 - 11904: 0xC4D5, + 40804 - 11904: 0xF6D4, + 40805 - 11904: 0xF6D3, + 40806 - 11904: 0xC569, + 40807 - 11904: 0xC56A, + 40809 - 11904: 0x91C9, + 40810 - 11904: 0xC5C6, + 40811 - 11904: 0xF7CD, + 40812 - 11904: 0xC5C5, + 40814 - 11904: 0xF8A3, + 40815 - 11904: 0xF8A4, + 40816 - 11904: 0xF8A2, + 40817 - 11904: 0xF8A1, + 40818 - 11904: 0xC654, + 40820 - 11904: 0xF8EB, + 40821 - 11904: 0xF8EC, + 40822 - 11904: 0xF8ED, + 40823 - 11904: 0xC653, + 40824 - 11904: 0xF967, + 40825 - 11904: 0xF96A, + 40826 - 11904: 0xF969, + 40827 - 11904: 0xF968, + 40830 - 11904: 0xF9D3, + 40831 - 11904: 0x8DE6, + 40845 - 11904: 0xC073, + 40846 - 11904: 0x91CB, + 40848 - 11904: 0xC365, + 40849 - 11904: 0xF5BF, + 40850 - 11904: 0xF6D5, + 40852 - 11904: 0xC5C7, + 40853 - 11904: 0xF7CE, + 40854 - 11904: 0x87AC, + 40855 - 11904: 0x87A4, + 40856 - 11904: 0xF9D5, + 40857 - 11904: 0x89C8, + 40860 - 11904: 0xC074, + 40863 - 11904: 0x8DAA, + 40864 - 11904: 0xEFB6, + 40866 - 11904: 0xF7CF, + 40868 - 11904: 0xF9A1, + 40869 - 11904: 0x9FDD, + 40870 - 11904: 0x8C43, + 40871 - 11904: 0x8C6D, + 40872 - 11904: 0x8C74, + 40873 - 11904: 0x8CB7, + 40874 - 11904: 0x8CB9, + 40875 - 11904: 0x8CBB, + 40876 - 11904: 0x8CC0, + 40877 - 11904: 0x8CD7, + 40878 - 11904: 0x8CD8, + 40879 - 11904: 0x8CDA, + 40880 - 11904: 0xC8A1, + 40881 - 11904: 0xC8A3, + 40882 - 11904: 0x8CED, + 40883 - 11904: 0x8D48, + 40903 - 11904: 0x87C2, + 40904 - 11904: 0x87D2, + 40905 - 11904: 0x87D6, + 40906 - 11904: 0x87DA, + 40907 - 11904: 0x87DF, +} + +const encode2Low, encode2High = 7870, 10046 + +var encode2 = [...]uint16{ + 7870 - 7870: 0x8863, + 7871 - 7870: 0x88A4, + 7872 - 7870: 0x8865, + 7873 - 7870: 0x88A6, + 8211 - 7870: 0xA156, + 8212 - 7870: 0xA158, + 8216 - 7870: 0xA1A5, + 8217 - 7870: 0xA1A6, + 8220 - 7870: 0xA1A7, + 8221 - 7870: 0xA1A8, + 8229 - 7870: 0xA14C, + 8230 - 7870: 0xA14B, + 8231 - 7870: 0xA145, + 8242 - 7870: 0xA1AC, + 8245 - 7870: 0xA1AB, + 8251 - 7870: 0xA1B0, + 8364 - 7870: 0xA3E1, + 8451 - 7870: 0xA24A, + 8453 - 7870: 0xA1C1, + 8457 - 7870: 0xA24B, + 8470 - 7870: 0xC8D2, + 8481 - 7870: 0xC8D3, + 8544 - 7870: 0xA2B9, + 8545 - 7870: 0xA2BA, + 8546 - 7870: 0xA2BB, + 8547 - 7870: 0xA2BC, + 8548 - 7870: 0xA2BD, + 8549 - 7870: 0xA2BE, + 8550 - 7870: 0xA2BF, + 8551 - 7870: 0xA2C0, + 8552 - 7870: 0xA2C1, + 8553 - 7870: 0xA2C2, + 8560 - 7870: 0xC6B5, + 8561 - 7870: 0xC6B6, + 8562 - 7870: 0xC6B7, + 8563 - 7870: 0xC6B8, + 8564 - 7870: 0xC6B9, + 8565 - 7870: 0xC6BA, + 8566 - 7870: 0xC6BB, + 8567 - 7870: 0xC6BC, + 8568 - 7870: 0xC6BD, + 8569 - 7870: 0xC6BE, + 8592 - 7870: 0xA1F6, + 8593 - 7870: 0xA1F4, + 8594 - 7870: 0xA1F7, + 8595 - 7870: 0xA1F5, + 8598 - 7870: 0xA1F8, + 8599 - 7870: 0xA1F9, + 8600 - 7870: 0xA1FB, + 8601 - 7870: 0xA1FA, + 8632 - 7870: 0xC877, + 8633 - 7870: 0xC878, + 8679 - 7870: 0xC876, + 8725 - 7870: 0xA241, + 8730 - 7870: 0xA1D4, + 8734 - 7870: 0xA1DB, + 8735 - 7870: 0xA1E8, + 8736 - 7870: 0xA1E7, + 8739 - 7870: 0xA1FD, + 8741 - 7870: 0xA1FC, + 8745 - 7870: 0xA1E4, + 8746 - 7870: 0xA1E5, + 8747 - 7870: 0xA1EC, + 8750 - 7870: 0xA1ED, + 8756 - 7870: 0xA1EF, + 8757 - 7870: 0xA1EE, + 8786 - 7870: 0xA1DC, + 8800 - 7870: 0xA1DA, + 8801 - 7870: 0xA1DD, + 8806 - 7870: 0xA1D8, + 8807 - 7870: 0xA1D9, + 8853 - 7870: 0xA1F2, + 8857 - 7870: 0xA1F3, + 8869 - 7870: 0xA1E6, + 8895 - 7870: 0xA1E9, + 9178 - 7870: 0x88A9, + 9179 - 7870: 0x88AA, + 9216 - 7870: 0xA3C0, + 9217 - 7870: 0xA3C1, + 9218 - 7870: 0xA3C2, + 9219 - 7870: 0xA3C3, + 9220 - 7870: 0xA3C4, + 9221 - 7870: 0xA3C5, + 9222 - 7870: 0xA3C6, + 9223 - 7870: 0xA3C7, + 9224 - 7870: 0xA3C8, + 9225 - 7870: 0xA3C9, + 9226 - 7870: 0xA3CA, + 9227 - 7870: 0xA3CB, + 9228 - 7870: 0xA3CC, + 9229 - 7870: 0xA3CD, + 9230 - 7870: 0xA3CE, + 9231 - 7870: 0xA3CF, + 9232 - 7870: 0xA3D0, + 9233 - 7870: 0xA3D1, + 9234 - 7870: 0xA3D2, + 9235 - 7870: 0xA3D3, + 9236 - 7870: 0xA3D4, + 9237 - 7870: 0xA3D5, + 9238 - 7870: 0xA3D6, + 9239 - 7870: 0xA3D7, + 9240 - 7870: 0xA3D8, + 9241 - 7870: 0xA3D9, + 9242 - 7870: 0xA3DA, + 9243 - 7870: 0xA3DB, + 9244 - 7870: 0xA3DC, + 9245 - 7870: 0xA3DD, + 9246 - 7870: 0xA3DE, + 9247 - 7870: 0xA3DF, + 9249 - 7870: 0xA3E0, + 9312 - 7870: 0xC6A1, + 9313 - 7870: 0xC6A2, + 9314 - 7870: 0xC6A3, + 9315 - 7870: 0xC6A4, + 9316 - 7870: 0xC6A5, + 9317 - 7870: 0xC6A6, + 9318 - 7870: 0xC6A7, + 9319 - 7870: 0xC6A8, + 9320 - 7870: 0xC6A9, + 9321 - 7870: 0xC6AA, + 9332 - 7870: 0xC6AB, + 9333 - 7870: 0xC6AC, + 9334 - 7870: 0xC6AD, + 9335 - 7870: 0xC6AE, + 9336 - 7870: 0xC6AF, + 9337 - 7870: 0xC6B0, + 9338 - 7870: 0xC6B1, + 9339 - 7870: 0xC6B2, + 9340 - 7870: 0xC6B3, + 9341 - 7870: 0xC6B4, + 9472 - 7870: 0xA277, + 9474 - 7870: 0xA278, + 9484 - 7870: 0xA27A, + 9488 - 7870: 0xA27B, + 9492 - 7870: 0xA27C, + 9496 - 7870: 0xA27D, + 9500 - 7870: 0xA275, + 9508 - 7870: 0xA274, + 9516 - 7870: 0xA273, + 9524 - 7870: 0xA272, + 9532 - 7870: 0xA271, + 9552 - 7870: 0xF9F9, + 9553 - 7870: 0xF9F8, + 9554 - 7870: 0xF9E6, + 9555 - 7870: 0xF9EF, + 9556 - 7870: 0xF9DD, + 9557 - 7870: 0xF9E8, + 9558 - 7870: 0xF9F1, + 9559 - 7870: 0xF9DF, + 9560 - 7870: 0xF9EC, + 9561 - 7870: 0xF9F5, + 9562 - 7870: 0xF9E3, + 9563 - 7870: 0xF9EE, + 9564 - 7870: 0xF9F7, + 9565 - 7870: 0xF9E5, + 9566 - 7870: 0xF9E9, + 9567 - 7870: 0xF9F2, + 9568 - 7870: 0xF9E0, + 9569 - 7870: 0xF9EB, + 9570 - 7870: 0xF9F4, + 9571 - 7870: 0xF9E2, + 9572 - 7870: 0xF9E7, + 9573 - 7870: 0xF9F0, + 9574 - 7870: 0xF9DE, + 9575 - 7870: 0xF9ED, + 9576 - 7870: 0xF9F6, + 9577 - 7870: 0xF9E4, + 9578 - 7870: 0xF9EA, + 9579 - 7870: 0xF9F3, + 9580 - 7870: 0xF9E1, + 9581 - 7870: 0xF9FA, + 9582 - 7870: 0xF9FB, + 9583 - 7870: 0xF9FD, + 9584 - 7870: 0xF9FC, + 9585 - 7870: 0xA2AC, + 9586 - 7870: 0xA2AD, + 9587 - 7870: 0xA2AE, + 9588 - 7870: 0xA15A, + 9601 - 7870: 0xA262, + 9602 - 7870: 0xA263, + 9603 - 7870: 0xA264, + 9604 - 7870: 0xA265, + 9605 - 7870: 0xA266, + 9606 - 7870: 0xA267, + 9607 - 7870: 0xA268, + 9608 - 7870: 0xA269, + 9609 - 7870: 0xA270, + 9610 - 7870: 0xA26F, + 9611 - 7870: 0xA26E, + 9612 - 7870: 0xA26D, + 9613 - 7870: 0xA26C, + 9614 - 7870: 0xA26B, + 9615 - 7870: 0xA26A, + 9620 - 7870: 0xA276, + 9621 - 7870: 0xA279, + 9632 - 7870: 0xA1BD, + 9633 - 7870: 0xA1BC, + 9650 - 7870: 0xA1B6, + 9651 - 7870: 0xA1B5, + 9660 - 7870: 0xA1BF, + 9661 - 7870: 0xA1BE, + 9670 - 7870: 0xA1BB, + 9671 - 7870: 0xA1BA, + 9675 - 7870: 0xA1B3, + 9678 - 7870: 0xA1B7, + 9679 - 7870: 0xA1B4, + 9698 - 7870: 0xA2A8, + 9699 - 7870: 0xA2A9, + 9700 - 7870: 0xA2AB, + 9701 - 7870: 0xA2AA, + 9733 - 7870: 0xA1B9, + 9734 - 7870: 0xA1B8, + 9792 - 7870: 0xA1F0, + 9794 - 7870: 0xA1F1, + 10045 - 7870: 0xC6E6, +} + +const encode3Low, encode3High = 167, 1106 + +var encode3 = [...]uint16{ + 167 - 167: 0xA1B1, + 168 - 167: 0xC6D8, + 175 - 167: 0xA1C2, + 176 - 167: 0xA258, + 177 - 167: 0xA1D3, + 183 - 167: 0xA150, + 192 - 167: 0x8859, + 193 - 167: 0x8857, + 200 - 167: 0x885D, + 201 - 167: 0x885B, + 202 - 167: 0x8866, + 210 - 167: 0x8861, + 211 - 167: 0x885F, + 215 - 167: 0xA1D1, + 224 - 167: 0x886A, + 225 - 167: 0x8868, + 232 - 167: 0x886F, + 233 - 167: 0x886D, + 234 - 167: 0x88A7, + 236 - 167: 0x8873, + 237 - 167: 0x8871, + 242 - 167: 0x8877, + 243 - 167: 0x8875, + 247 - 167: 0xA1D2, + 248 - 167: 0xC8FB, + 249 - 167: 0x887B, + 250 - 167: 0x8879, + 252 - 167: 0x88A2, + 256 - 167: 0x8856, + 257 - 167: 0x8867, + 274 - 167: 0x885A, + 275 - 167: 0x886C, + 282 - 167: 0x885C, + 283 - 167: 0x886E, + 299 - 167: 0x8870, + 331 - 167: 0xC8FC, + 332 - 167: 0x885E, + 333 - 167: 0x8874, + 339 - 167: 0xC8FA, + 363 - 167: 0x8878, + 461 - 167: 0x8858, + 462 - 167: 0x8869, + 464 - 167: 0x8872, + 465 - 167: 0x8860, + 466 - 167: 0x8876, + 468 - 167: 0x887A, + 470 - 167: 0x887C, + 472 - 167: 0x887D, + 474 - 167: 0x887E, + 476 - 167: 0x88A1, + 592 - 167: 0xC8F6, + 593 - 167: 0x886B, + 596 - 167: 0xC8F8, + 603 - 167: 0xC8F7, + 609 - 167: 0x88A8, + 618 - 167: 0xC8FE, + 629 - 167: 0xC8F9, + 643 - 167: 0xC8F5, + 650 - 167: 0xC8FD, + 710 - 167: 0xC6D9, + 711 - 167: 0xA3BE, + 713 - 167: 0xA3BC, + 714 - 167: 0xA3BD, + 715 - 167: 0xA3BF, + 717 - 167: 0xA1C5, + 729 - 167: 0xA3BB, + 913 - 167: 0xA344, + 914 - 167: 0xA345, + 915 - 167: 0xA346, + 916 - 167: 0xA347, + 917 - 167: 0xA348, + 918 - 167: 0xA349, + 919 - 167: 0xA34A, + 920 - 167: 0xA34B, + 921 - 167: 0xA34C, + 922 - 167: 0xA34D, + 923 - 167: 0xA34E, + 924 - 167: 0xA34F, + 925 - 167: 0xA350, + 926 - 167: 0xA351, + 927 - 167: 0xA352, + 928 - 167: 0xA353, + 929 - 167: 0xA354, + 931 - 167: 0xA355, + 932 - 167: 0xA356, + 933 - 167: 0xA357, + 934 - 167: 0xA358, + 935 - 167: 0xA359, + 936 - 167: 0xA35A, + 937 - 167: 0xA35B, + 945 - 167: 0xA35C, + 946 - 167: 0xA35D, + 947 - 167: 0xA35E, + 948 - 167: 0xA35F, + 949 - 167: 0xA360, + 950 - 167: 0xA361, + 951 - 167: 0xA362, + 952 - 167: 0xA363, + 953 - 167: 0xA364, + 954 - 167: 0xA365, + 955 - 167: 0xA366, + 956 - 167: 0xA367, + 957 - 167: 0xA368, + 958 - 167: 0xA369, + 959 - 167: 0xA36A, + 960 - 167: 0xA36B, + 961 - 167: 0xA36C, + 963 - 167: 0xA36D, + 964 - 167: 0xA36E, + 965 - 167: 0xA36F, + 966 - 167: 0xA370, + 967 - 167: 0xA371, + 968 - 167: 0xA372, + 969 - 167: 0xA373, + 1025 - 167: 0xC7F9, + 1040 - 167: 0xC7F3, + 1041 - 167: 0xC7F4, + 1042 - 167: 0xC7F5, + 1043 - 167: 0xC7F6, + 1044 - 167: 0xC7F7, + 1045 - 167: 0xC7F8, + 1046 - 167: 0xC7FA, + 1047 - 167: 0xC7FB, + 1048 - 167: 0xC7FC, + 1049 - 167: 0xC7FD, + 1050 - 167: 0xC7FE, + 1051 - 167: 0xC840, + 1052 - 167: 0xC841, + 1053 - 167: 0xC842, + 1054 - 167: 0xC843, + 1055 - 167: 0xC844, + 1056 - 167: 0xC845, + 1057 - 167: 0xC846, + 1058 - 167: 0xC847, + 1059 - 167: 0xC848, + 1060 - 167: 0xC849, + 1061 - 167: 0xC84A, + 1062 - 167: 0xC84B, + 1063 - 167: 0xC84C, + 1064 - 167: 0xC84D, + 1065 - 167: 0xC84E, + 1066 - 167: 0xC84F, + 1067 - 167: 0xC850, + 1068 - 167: 0xC851, + 1069 - 167: 0xC852, + 1070 - 167: 0xC853, + 1071 - 167: 0xC854, + 1072 - 167: 0xC855, + 1073 - 167: 0xC856, + 1074 - 167: 0xC857, + 1075 - 167: 0xC858, + 1076 - 167: 0xC859, + 1077 - 167: 0xC85A, + 1078 - 167: 0xC85C, + 1079 - 167: 0xC85D, + 1080 - 167: 0xC85E, + 1081 - 167: 0xC85F, + 1082 - 167: 0xC860, + 1083 - 167: 0xC861, + 1084 - 167: 0xC862, + 1085 - 167: 0xC863, + 1086 - 167: 0xC864, + 1087 - 167: 0xC865, + 1088 - 167: 0xC866, + 1089 - 167: 0xC867, + 1090 - 167: 0xC868, + 1091 - 167: 0xC869, + 1092 - 167: 0xC86A, + 1093 - 167: 0xC86B, + 1094 - 167: 0xC86C, + 1095 - 167: 0xC86D, + 1096 - 167: 0xC86E, + 1097 - 167: 0xC86F, + 1098 - 167: 0xC870, + 1099 - 167: 0xC871, + 1100 - 167: 0xC872, + 1101 - 167: 0xC873, + 1102 - 167: 0xC874, + 1103 - 167: 0xC875, + 1105 - 167: 0xC85B, +} + +const encode4Low, encode4High = 65072, 65518 + +var encode4 = [...]uint16{ + 65072 - 65072: 0xA14A, + 65073 - 65072: 0xA157, + 65075 - 65072: 0xA159, + 65076 - 65072: 0xA15B, + 65077 - 65072: 0xA15F, + 65078 - 65072: 0xA160, + 65079 - 65072: 0xA163, + 65080 - 65072: 0xA164, + 65081 - 65072: 0xA167, + 65082 - 65072: 0xA168, + 65083 - 65072: 0xA16B, + 65084 - 65072: 0xA16C, + 65085 - 65072: 0xA16F, + 65086 - 65072: 0xA170, + 65087 - 65072: 0xA173, + 65088 - 65072: 0xA174, + 65089 - 65072: 0xA177, + 65090 - 65072: 0xA178, + 65091 - 65072: 0xA17B, + 65092 - 65072: 0xA17C, + 65097 - 65072: 0xA1C6, + 65098 - 65072: 0xA1C7, + 65099 - 65072: 0xA1CA, + 65100 - 65072: 0xA1CB, + 65101 - 65072: 0xA1C8, + 65102 - 65072: 0xA1C9, + 65103 - 65072: 0xA15C, + 65104 - 65072: 0xA14D, + 65105 - 65072: 0xA14E, + 65106 - 65072: 0xA14F, + 65108 - 65072: 0xA151, + 65109 - 65072: 0xA152, + 65110 - 65072: 0xA153, + 65111 - 65072: 0xA154, + 65113 - 65072: 0xA17D, + 65114 - 65072: 0xA17E, + 65115 - 65072: 0xA1A1, + 65116 - 65072: 0xA1A2, + 65117 - 65072: 0xA1A3, + 65118 - 65072: 0xA1A4, + 65119 - 65072: 0xA1CC, + 65120 - 65072: 0xA1CD, + 65121 - 65072: 0xA1CE, + 65122 - 65072: 0xA1DE, + 65123 - 65072: 0xA1DF, + 65124 - 65072: 0xA1E0, + 65125 - 65072: 0xA1E1, + 65126 - 65072: 0xA1E2, + 65128 - 65072: 0xA242, + 65129 - 65072: 0xA24C, + 65130 - 65072: 0xA24D, + 65131 - 65072: 0xA24E, + 65281 - 65072: 0xA149, + 65282 - 65072: 0xC8D0, + 65283 - 65072: 0xA1AD, + 65284 - 65072: 0xA243, + 65285 - 65072: 0xA248, + 65286 - 65072: 0xA1AE, + 65287 - 65072: 0xC8CF, + 65288 - 65072: 0xA15D, + 65289 - 65072: 0xA15E, + 65290 - 65072: 0xA1AF, + 65291 - 65072: 0xA1CF, + 65292 - 65072: 0xA141, + 65293 - 65072: 0xA1D0, + 65294 - 65072: 0xA144, + 65295 - 65072: 0xA1FE, + 65296 - 65072: 0xA2AF, + 65297 - 65072: 0xA2B0, + 65298 - 65072: 0xA2B1, + 65299 - 65072: 0xA2B2, + 65300 - 65072: 0xA2B3, + 65301 - 65072: 0xA2B4, + 65302 - 65072: 0xA2B5, + 65303 - 65072: 0xA2B6, + 65304 - 65072: 0xA2B7, + 65305 - 65072: 0xA2B8, + 65306 - 65072: 0xA147, + 65307 - 65072: 0xA146, + 65308 - 65072: 0xA1D5, + 65309 - 65072: 0xA1D7, + 65310 - 65072: 0xA1D6, + 65311 - 65072: 0xA148, + 65312 - 65072: 0xA249, + 65313 - 65072: 0xA2CF, + 65314 - 65072: 0xA2D0, + 65315 - 65072: 0xA2D1, + 65316 - 65072: 0xA2D2, + 65317 - 65072: 0xA2D3, + 65318 - 65072: 0xA2D4, + 65319 - 65072: 0xA2D5, + 65320 - 65072: 0xA2D6, + 65321 - 65072: 0xA2D7, + 65322 - 65072: 0xA2D8, + 65323 - 65072: 0xA2D9, + 65324 - 65072: 0xA2DA, + 65325 - 65072: 0xA2DB, + 65326 - 65072: 0xA2DC, + 65327 - 65072: 0xA2DD, + 65328 - 65072: 0xA2DE, + 65329 - 65072: 0xA2DF, + 65330 - 65072: 0xA2E0, + 65331 - 65072: 0xA2E1, + 65332 - 65072: 0xA2E2, + 65333 - 65072: 0xA2E3, + 65334 - 65072: 0xA2E4, + 65335 - 65072: 0xA2E5, + 65336 - 65072: 0xA2E6, + 65337 - 65072: 0xA2E7, + 65338 - 65072: 0xA2E8, + 65339 - 65072: 0xC6E4, + 65340 - 65072: 0xA240, + 65341 - 65072: 0xC6E5, + 65343 - 65072: 0xA1C4, + 65345 - 65072: 0xA2E9, + 65346 - 65072: 0xA2EA, + 65347 - 65072: 0xA2EB, + 65348 - 65072: 0xA2EC, + 65349 - 65072: 0xA2ED, + 65350 - 65072: 0xA2EE, + 65351 - 65072: 0xA2EF, + 65352 - 65072: 0xA2F0, + 65353 - 65072: 0xA2F1, + 65354 - 65072: 0xA2F2, + 65355 - 65072: 0xA2F3, + 65356 - 65072: 0xA2F4, + 65357 - 65072: 0xA2F5, + 65358 - 65072: 0xA2F6, + 65359 - 65072: 0xA2F7, + 65360 - 65072: 0xA2F8, + 65361 - 65072: 0xA2F9, + 65362 - 65072: 0xA2FA, + 65363 - 65072: 0xA2FB, + 65364 - 65072: 0xA2FC, + 65365 - 65072: 0xA2FD, + 65366 - 65072: 0xA2FE, + 65367 - 65072: 0xA340, + 65368 - 65072: 0xA341, + 65369 - 65072: 0xA342, + 65370 - 65072: 0xA343, + 65371 - 65072: 0xA161, + 65372 - 65072: 0xA155, + 65373 - 65072: 0xA162, + 65374 - 65072: 0xA1E3, + 65504 - 65072: 0xA246, + 65505 - 65072: 0xA247, + 65506 - 65072: 0xC8CD, + 65507 - 65072: 0xA1C3, + 65508 - 65072: 0xC8CE, + 65509 - 65072: 0xA244, + 65517 - 65072: 0xF9FE, +} + +const encode5Low, encode5High = 194597, 195029 + +var encode5 = [...]uint16{ + 194597 - 194597: 0x9874, + 194619 - 194597: 0x9AC8, + 194624 - 194597: 0xA047, + 194680 - 194597: 0x8BC3, + 194708 - 194597: 0xFC48, + 194726 - 194597: 0xFC77, + 194765 - 194597: 0x9C52, + 194964 - 194597: 0x8EFD, + 194994 - 194597: 0x8FA8, + 195004 - 194597: 0x957A, + 195028 - 194597: 0x8FF0, +} + +const encode6Low, encode6High = 63751, 64014 + +var encode6 = [...]uint16{ + 63751 - 63751: 0x8BF8, + 64012 - 63751: 0xC94A, + 64013 - 63751: 0xDDFC, +} + +const encode7Low, encode7High = 175615, 175616 + +var encode7 = [...]uint16{ + 175615 - 175615: 0x87DC, +} diff --git a/tests/vendor/golang.org/x/text/encoding/unicode/override.go b/tests/vendor/golang.org/x/text/encoding/unicode/override.go new file mode 100644 index 000000000..35d62fcc9 --- /dev/null +++ b/tests/vendor/golang.org/x/text/encoding/unicode/override.go @@ -0,0 +1,82 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package unicode + +import ( + "golang.org/x/text/transform" +) + +// BOMOverride returns a new decoder transformer that is identical to fallback, +// except that the presence of a Byte Order Mark at the start of the input +// causes it to switch to the corresponding Unicode decoding. It will only +// consider BOMs for UTF-8, UTF-16BE, and UTF-16LE. +// +// This differs from using ExpectBOM by allowing a BOM to switch to UTF-8, not +// just UTF-16 variants, and allowing falling back to any encoding scheme. +// +// This technique is recommended by the W3C for use in HTML 5: "For +// compatibility with deployed content, the byte order mark (also known as BOM) +// is considered more authoritative than anything else." +// http://www.w3.org/TR/encoding/#specification-hooks +// +// Using BOMOverride is mostly intended for use cases where the first characters +// of a fallback encoding are known to not be a BOM, for example, for valid HTML +// and most encodings. +func BOMOverride(fallback transform.Transformer) transform.Transformer { + // TODO: possibly allow a variadic argument of unicode encodings to allow + // specifying details of which fallbacks are supported as well as + // specifying the details of the implementations. This would also allow for + // support for UTF-32, which should not be supported by default. + return &bomOverride{fallback: fallback} +} + +type bomOverride struct { + fallback transform.Transformer + current transform.Transformer +} + +func (d *bomOverride) Reset() { + d.current = nil + d.fallback.Reset() +} + +var ( + // TODO: we could use decode functions here, instead of allocating a new + // decoder on every NewDecoder as IgnoreBOM decoders can be stateless. + utf16le = UTF16(LittleEndian, IgnoreBOM) + utf16be = UTF16(BigEndian, IgnoreBOM) +) + +const utf8BOM = "\ufeff" + +func (d *bomOverride) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + if d.current != nil { + return d.current.Transform(dst, src, atEOF) + } + if len(src) < 3 && !atEOF { + return 0, 0, transform.ErrShortSrc + } + d.current = d.fallback + bomSize := 0 + if len(src) >= 2 { + if src[0] == 0xFF && src[1] == 0xFE { + d.current = utf16le.NewDecoder() + bomSize = 2 + } else if src[0] == 0xFE && src[1] == 0xFF { + d.current = utf16be.NewDecoder() + bomSize = 2 + } else if len(src) >= 3 && + src[0] == utf8BOM[0] && + src[1] == utf8BOM[1] && + src[2] == utf8BOM[2] { + d.current = transform.Nop + bomSize = 3 + } + } + if bomSize < len(src) { + nDst, nSrc, err = d.current.Transform(dst, src[bomSize:], atEOF) + } + return nDst, nSrc + bomSize, err +} diff --git a/tests/vendor/golang.org/x/text/encoding/unicode/unicode.go b/tests/vendor/golang.org/x/text/encoding/unicode/unicode.go new file mode 100644 index 000000000..dd99ad14d --- /dev/null +++ b/tests/vendor/golang.org/x/text/encoding/unicode/unicode.go @@ -0,0 +1,512 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package unicode provides Unicode encodings such as UTF-16. +package unicode // import "golang.org/x/text/encoding/unicode" + +import ( + "bytes" + "errors" + "unicode/utf16" + "unicode/utf8" + + "golang.org/x/text/encoding" + "golang.org/x/text/encoding/internal" + "golang.org/x/text/encoding/internal/identifier" + "golang.org/x/text/internal/utf8internal" + "golang.org/x/text/runes" + "golang.org/x/text/transform" +) + +// TODO: I think the Transformers really should return errors on unmatched +// surrogate pairs and odd numbers of bytes. This is not required by RFC 2781, +// which leaves it open, but is suggested by WhatWG. It will allow for all error +// modes as defined by WhatWG: fatal, HTML and Replacement. This would require +// the introduction of some kind of error type for conveying the erroneous code +// point. + +// UTF8 is the UTF-8 encoding. It neither removes nor adds byte order marks. +var UTF8 encoding.Encoding = utf8enc + +// UTF8BOM is an UTF-8 encoding where the decoder strips a leading byte order +// mark while the encoder adds one. +// +// Some editors add a byte order mark as a signature to UTF-8 files. Although +// the byte order mark is not useful for detecting byte order in UTF-8, it is +// sometimes used as a convention to mark UTF-8-encoded files. This relies on +// the observation that the UTF-8 byte order mark is either an illegal or at +// least very unlikely sequence in any other character encoding. +var UTF8BOM encoding.Encoding = utf8bomEncoding{} + +type utf8bomEncoding struct{} + +func (utf8bomEncoding) String() string { + return "UTF-8-BOM" +} + +func (utf8bomEncoding) ID() (identifier.MIB, string) { + return identifier.Unofficial, "x-utf8bom" +} + +func (utf8bomEncoding) NewEncoder() *encoding.Encoder { + return &encoding.Encoder{ + Transformer: &utf8bomEncoder{t: runes.ReplaceIllFormed()}, + } +} + +func (utf8bomEncoding) NewDecoder() *encoding.Decoder { + return &encoding.Decoder{Transformer: &utf8bomDecoder{}} +} + +var utf8enc = &internal.Encoding{ + &internal.SimpleEncoding{utf8Decoder{}, runes.ReplaceIllFormed()}, + "UTF-8", + identifier.UTF8, +} + +type utf8bomDecoder struct { + checked bool +} + +func (t *utf8bomDecoder) Reset() { + t.checked = false +} + +func (t *utf8bomDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + if !t.checked { + if !atEOF && len(src) < len(utf8BOM) { + if len(src) == 0 { + return 0, 0, nil + } + return 0, 0, transform.ErrShortSrc + } + if bytes.HasPrefix(src, []byte(utf8BOM)) { + nSrc += len(utf8BOM) + src = src[len(utf8BOM):] + } + t.checked = true + } + nDst, n, err := utf8Decoder.Transform(utf8Decoder{}, dst[nDst:], src, atEOF) + nSrc += n + return nDst, nSrc, err +} + +type utf8bomEncoder struct { + written bool + t transform.Transformer +} + +func (t *utf8bomEncoder) Reset() { + t.written = false + t.t.Reset() +} + +func (t *utf8bomEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + if !t.written { + if len(dst) < len(utf8BOM) { + return nDst, 0, transform.ErrShortDst + } + nDst = copy(dst, utf8BOM) + t.written = true + } + n, nSrc, err := utf8Decoder.Transform(utf8Decoder{}, dst[nDst:], src, atEOF) + nDst += n + return nDst, nSrc, err +} + +type utf8Decoder struct{ transform.NopResetter } + +func (utf8Decoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + var pSrc int // point from which to start copy in src + var accept utf8internal.AcceptRange + + // The decoder can only make the input larger, not smaller. + n := len(src) + if len(dst) < n { + err = transform.ErrShortDst + n = len(dst) + atEOF = false + } + for nSrc < n { + c := src[nSrc] + if c < utf8.RuneSelf { + nSrc++ + continue + } + first := utf8internal.First[c] + size := int(first & utf8internal.SizeMask) + if first == utf8internal.FirstInvalid { + goto handleInvalid // invalid starter byte + } + accept = utf8internal.AcceptRanges[first>>utf8internal.AcceptShift] + if nSrc+size > n { + if !atEOF { + // We may stop earlier than necessary here if the short sequence + // has invalid bytes. Not checking for this simplifies the code + // and may avoid duplicate computations in certain conditions. + if err == nil { + err = transform.ErrShortSrc + } + break + } + // Determine the maximal subpart of an ill-formed subsequence. + switch { + case nSrc+1 >= n || src[nSrc+1] < accept.Lo || accept.Hi < src[nSrc+1]: + size = 1 + case nSrc+2 >= n || src[nSrc+2] < utf8internal.LoCB || utf8internal.HiCB < src[nSrc+2]: + size = 2 + default: + size = 3 // As we are short, the maximum is 3. + } + goto handleInvalid + } + if c = src[nSrc+1]; c < accept.Lo || accept.Hi < c { + size = 1 + goto handleInvalid // invalid continuation byte + } else if size == 2 { + } else if c = src[nSrc+2]; c < utf8internal.LoCB || utf8internal.HiCB < c { + size = 2 + goto handleInvalid // invalid continuation byte + } else if size == 3 { + } else if c = src[nSrc+3]; c < utf8internal.LoCB || utf8internal.HiCB < c { + size = 3 + goto handleInvalid // invalid continuation byte + } + nSrc += size + continue + + handleInvalid: + // Copy the scanned input so far. + nDst += copy(dst[nDst:], src[pSrc:nSrc]) + + // Append RuneError to the destination. + const runeError = "\ufffd" + if nDst+len(runeError) > len(dst) { + return nDst, nSrc, transform.ErrShortDst + } + nDst += copy(dst[nDst:], runeError) + + // Skip the maximal subpart of an ill-formed subsequence according to + // the W3C standard way instead of the Go way. This Transform is + // probably the only place in the text repo where it is warranted. + nSrc += size + pSrc = nSrc + + // Recompute the maximum source length. + if sz := len(dst) - nDst; sz < len(src)-nSrc { + err = transform.ErrShortDst + n = nSrc + sz + atEOF = false + } + } + return nDst + copy(dst[nDst:], src[pSrc:nSrc]), nSrc, err +} + +// UTF16 returns a UTF-16 Encoding for the given default endianness and byte +// order mark (BOM) policy. +// +// When decoding from UTF-16 to UTF-8, if the BOMPolicy is IgnoreBOM then +// neither BOMs U+FEFF nor noncharacters U+FFFE in the input stream will affect +// the endianness used for decoding, and will instead be output as their +// standard UTF-8 encodings: "\xef\xbb\xbf" and "\xef\xbf\xbe". If the BOMPolicy +// is UseBOM or ExpectBOM a staring BOM is not written to the UTF-8 output. +// Instead, it overrides the default endianness e for the remainder of the +// transformation. Any subsequent BOMs U+FEFF or noncharacters U+FFFE will not +// affect the endianness used, and will instead be output as their standard +// UTF-8 encodings. For UseBOM, if there is no starting BOM, it will proceed +// with the default Endianness. For ExpectBOM, in that case, the transformation +// will return early with an ErrMissingBOM error. +// +// When encoding from UTF-8 to UTF-16, a BOM will be inserted at the start of +// the output if the BOMPolicy is UseBOM or ExpectBOM. Otherwise, a BOM will not +// be inserted. The UTF-8 input does not need to contain a BOM. +// +// There is no concept of a 'native' endianness. If the UTF-16 data is produced +// and consumed in a greater context that implies a certain endianness, use +// IgnoreBOM. Otherwise, use ExpectBOM and always produce and consume a BOM. +// +// In the language of https://www.unicode.org/faq/utf_bom.html#bom10, IgnoreBOM +// corresponds to "Where the precise type of the data stream is known... the +// BOM should not be used" and ExpectBOM corresponds to "A particular +// protocol... may require use of the BOM". +func UTF16(e Endianness, b BOMPolicy) encoding.Encoding { + return utf16Encoding{config{e, b}, mibValue[e][b&bomMask]} +} + +// mibValue maps Endianness and BOMPolicy settings to MIB constants. Note that +// some configurations map to the same MIB identifier. RFC 2781 has requirements +// and recommendations. Some of the "configurations" are merely recommendations, +// so multiple configurations could match. +var mibValue = map[Endianness][numBOMValues]identifier.MIB{ + BigEndian: [numBOMValues]identifier.MIB{ + IgnoreBOM: identifier.UTF16BE, + UseBOM: identifier.UTF16, // BigEnding default is preferred by RFC 2781. + // TODO: acceptBOM | strictBOM would map to UTF16BE as well. + }, + LittleEndian: [numBOMValues]identifier.MIB{ + IgnoreBOM: identifier.UTF16LE, + UseBOM: identifier.UTF16, // LittleEndian default is allowed and preferred on Windows. + // TODO: acceptBOM | strictBOM would map to UTF16LE as well. + }, + // ExpectBOM is not widely used and has no valid MIB identifier. +} + +// All lists a configuration for each IANA-defined UTF-16 variant. +var All = []encoding.Encoding{ + UTF8, + UTF16(BigEndian, UseBOM), + UTF16(BigEndian, IgnoreBOM), + UTF16(LittleEndian, IgnoreBOM), +} + +// BOMPolicy is a UTF-16 encoding's byte order mark policy. +type BOMPolicy uint8 + +const ( + writeBOM BOMPolicy = 0x01 + acceptBOM BOMPolicy = 0x02 + requireBOM BOMPolicy = 0x04 + bomMask BOMPolicy = 0x07 + + // HACK: numBOMValues == 8 triggers a bug in the 1.4 compiler (cannot have a + // map of an array of length 8 of a type that is also used as a key or value + // in another map). See golang.org/issue/11354. + // TODO: consider changing this value back to 8 if the use of 1.4.* has + // been minimized. + numBOMValues = 8 + 1 + + // IgnoreBOM means to ignore any byte order marks. + IgnoreBOM BOMPolicy = 0 + // Common and RFC 2781-compliant interpretation for UTF-16BE/LE. + + // UseBOM means that the UTF-16 form may start with a byte order mark, which + // will be used to override the default encoding. + UseBOM BOMPolicy = writeBOM | acceptBOM + // Common and RFC 2781-compliant interpretation for UTF-16. + + // ExpectBOM means that the UTF-16 form must start with a byte order mark, + // which will be used to override the default encoding. + ExpectBOM BOMPolicy = writeBOM | acceptBOM | requireBOM + // Used in Java as Unicode (not to be confused with Java's UTF-16) and + // ICU's UTF-16,version=1. Not compliant with RFC 2781. + + // TODO (maybe): strictBOM: BOM must match Endianness. This would allow: + // - UTF-16(B|L)E,version=1: writeBOM | acceptBOM | requireBOM | strictBOM + // (UnicodeBig and UnicodeLittle in Java) + // - RFC 2781-compliant, but less common interpretation for UTF-16(B|L)E: + // acceptBOM | strictBOM (e.g. assigned to CheckBOM). + // This addition would be consistent with supporting ExpectBOM. +) + +// Endianness is a UTF-16 encoding's default endianness. +type Endianness bool + +const ( + // BigEndian is UTF-16BE. + BigEndian Endianness = false + // LittleEndian is UTF-16LE. + LittleEndian Endianness = true +) + +// ErrMissingBOM means that decoding UTF-16 input with ExpectBOM did not find a +// starting byte order mark. +var ErrMissingBOM = errors.New("encoding: missing byte order mark") + +type utf16Encoding struct { + config + mib identifier.MIB +} + +type config struct { + endianness Endianness + bomPolicy BOMPolicy +} + +func (u utf16Encoding) NewDecoder() *encoding.Decoder { + return &encoding.Decoder{Transformer: &utf16Decoder{ + initial: u.config, + current: u.config, + }} +} + +func (u utf16Encoding) NewEncoder() *encoding.Encoder { + return &encoding.Encoder{Transformer: &utf16Encoder{ + endianness: u.endianness, + initialBOMPolicy: u.bomPolicy, + currentBOMPolicy: u.bomPolicy, + }} +} + +func (u utf16Encoding) ID() (mib identifier.MIB, other string) { + return u.mib, "" +} + +func (u utf16Encoding) String() string { + e, b := "B", "" + if u.endianness == LittleEndian { + e = "L" + } + switch u.bomPolicy { + case ExpectBOM: + b = "Expect" + case UseBOM: + b = "Use" + case IgnoreBOM: + b = "Ignore" + } + return "UTF-16" + e + "E (" + b + " BOM)" +} + +type utf16Decoder struct { + initial config + current config +} + +func (u *utf16Decoder) Reset() { + u.current = u.initial +} + +func (u *utf16Decoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + if len(src) < 2 && atEOF && u.current.bomPolicy&requireBOM != 0 { + return 0, 0, ErrMissingBOM + } + if len(src) == 0 { + return 0, 0, nil + } + if len(src) >= 2 && u.current.bomPolicy&acceptBOM != 0 { + switch { + case src[0] == 0xfe && src[1] == 0xff: + u.current.endianness = BigEndian + nSrc = 2 + case src[0] == 0xff && src[1] == 0xfe: + u.current.endianness = LittleEndian + nSrc = 2 + default: + if u.current.bomPolicy&requireBOM != 0 { + return 0, 0, ErrMissingBOM + } + } + u.current.bomPolicy = IgnoreBOM + } + + var r rune + var dSize, sSize int + for nSrc < len(src) { + if nSrc+1 < len(src) { + x := uint16(src[nSrc+0])<<8 | uint16(src[nSrc+1]) + if u.current.endianness == LittleEndian { + x = x>>8 | x<<8 + } + r, sSize = rune(x), 2 + if utf16.IsSurrogate(r) { + if nSrc+3 < len(src) { + x = uint16(src[nSrc+2])<<8 | uint16(src[nSrc+3]) + if u.current.endianness == LittleEndian { + x = x>>8 | x<<8 + } + // Save for next iteration if it is not a high surrogate. + if isHighSurrogate(rune(x)) { + r, sSize = utf16.DecodeRune(r, rune(x)), 4 + } + } else if !atEOF { + err = transform.ErrShortSrc + break + } + } + if dSize = utf8.RuneLen(r); dSize < 0 { + r, dSize = utf8.RuneError, 3 + } + } else if atEOF { + // Single trailing byte. + r, dSize, sSize = utf8.RuneError, 3, 1 + } else { + err = transform.ErrShortSrc + break + } + if nDst+dSize > len(dst) { + err = transform.ErrShortDst + break + } + nDst += utf8.EncodeRune(dst[nDst:], r) + nSrc += sSize + } + return nDst, nSrc, err +} + +func isHighSurrogate(r rune) bool { + return 0xDC00 <= r && r <= 0xDFFF +} + +type utf16Encoder struct { + endianness Endianness + initialBOMPolicy BOMPolicy + currentBOMPolicy BOMPolicy +} + +func (u *utf16Encoder) Reset() { + u.currentBOMPolicy = u.initialBOMPolicy +} + +func (u *utf16Encoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + if u.currentBOMPolicy&writeBOM != 0 { + if len(dst) < 2 { + return 0, 0, transform.ErrShortDst + } + dst[0], dst[1] = 0xfe, 0xff + u.currentBOMPolicy = IgnoreBOM + nDst = 2 + } + + r, size := rune(0), 0 + for nSrc < len(src) { + r = rune(src[nSrc]) + + // Decode a 1-byte rune. + if r < utf8.RuneSelf { + size = 1 + + } else { + // Decode a multi-byte rune. + r, size = utf8.DecodeRune(src[nSrc:]) + if size == 1 { + // All valid runes of size 1 (those below utf8.RuneSelf) were + // handled above. We have invalid UTF-8 or we haven't seen the + // full character yet. + if !atEOF && !utf8.FullRune(src[nSrc:]) { + err = transform.ErrShortSrc + break + } + } + } + + if r <= 0xffff { + if nDst+2 > len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst+0] = uint8(r >> 8) + dst[nDst+1] = uint8(r) + nDst += 2 + } else { + if nDst+4 > len(dst) { + err = transform.ErrShortDst + break + } + r1, r2 := utf16.EncodeRune(r) + dst[nDst+0] = uint8(r1 >> 8) + dst[nDst+1] = uint8(r1) + dst[nDst+2] = uint8(r2 >> 8) + dst[nDst+3] = uint8(r2) + nDst += 4 + } + nSrc += size + } + + if u.endianness == LittleEndian { + for i := 0; i < nDst; i += 2 { + dst[i], dst[i+1] = dst[i+1], dst[i] + } + } + return nDst, nSrc, err +} diff --git a/tests/vendor/golang.org/x/text/internal/language/common.go b/tests/vendor/golang.org/x/text/internal/language/common.go new file mode 100644 index 000000000..cdfdb7497 --- /dev/null +++ b/tests/vendor/golang.org/x/text/internal/language/common.go @@ -0,0 +1,16 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +package language + +// This file contains code common to the maketables.go and the package code. + +// AliasType is the type of an alias in AliasMap. +type AliasType int8 + +const ( + Deprecated AliasType = iota + Macro + Legacy + + AliasTypeUnknown AliasType = -1 +) diff --git a/tests/vendor/golang.org/x/text/internal/language/compact.go b/tests/vendor/golang.org/x/text/internal/language/compact.go new file mode 100644 index 000000000..46a001507 --- /dev/null +++ b/tests/vendor/golang.org/x/text/internal/language/compact.go @@ -0,0 +1,29 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package language + +// CompactCoreInfo is a compact integer with the three core tags encoded. +type CompactCoreInfo uint32 + +// GetCompactCore generates a uint32 value that is guaranteed to be unique for +// different language, region, and script values. +func GetCompactCore(t Tag) (cci CompactCoreInfo, ok bool) { + if t.LangID > langNoIndexOffset { + return 0, false + } + cci |= CompactCoreInfo(t.LangID) << (8 + 12) + cci |= CompactCoreInfo(t.ScriptID) << 12 + cci |= CompactCoreInfo(t.RegionID) + return cci, true +} + +// Tag generates a tag from c. +func (c CompactCoreInfo) Tag() Tag { + return Tag{ + LangID: Language(c >> 20), + RegionID: Region(c & 0x3ff), + ScriptID: Script(c>>12) & 0xff, + } +} diff --git a/tests/vendor/golang.org/x/text/internal/language/compact/compact.go b/tests/vendor/golang.org/x/text/internal/language/compact/compact.go new file mode 100644 index 000000000..1b36935ef --- /dev/null +++ b/tests/vendor/golang.org/x/text/internal/language/compact/compact.go @@ -0,0 +1,61 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package compact defines a compact representation of language tags. +// +// Common language tags (at least all for which locale information is defined +// in CLDR) are assigned a unique index. Each Tag is associated with such an +// ID for selecting language-related resources (such as translations) as well +// as one for selecting regional defaults (currency, number formatting, etc.) +// +// It may want to export this functionality at some point, but at this point +// this is only available for use within x/text. +package compact // import "golang.org/x/text/internal/language/compact" + +import ( + "sort" + "strings" + + "golang.org/x/text/internal/language" +) + +// ID is an integer identifying a single tag. +type ID uint16 + +func getCoreIndex(t language.Tag) (id ID, ok bool) { + cci, ok := language.GetCompactCore(t) + if !ok { + return 0, false + } + i := sort.Search(len(coreTags), func(i int) bool { + return cci <= coreTags[i] + }) + if i == len(coreTags) || coreTags[i] != cci { + return 0, false + } + return ID(i), true +} + +// Parent returns the ID of the parent or the root ID if id is already the root. +func (id ID) Parent() ID { + return parents[id] +} + +// Tag converts id to an internal language Tag. +func (id ID) Tag() language.Tag { + if int(id) >= len(coreTags) { + return specialTags[int(id)-len(coreTags)] + } + return coreTags[id].Tag() +} + +var specialTags []language.Tag + +func init() { + tags := strings.Split(specialTagsStr, " ") + specialTags = make([]language.Tag, len(tags)) + for i, t := range tags { + specialTags[i] = language.MustParse(t) + } +} diff --git a/tests/vendor/golang.org/x/text/internal/language/compact/language.go b/tests/vendor/golang.org/x/text/internal/language/compact/language.go new file mode 100644 index 000000000..8c1b6666f --- /dev/null +++ b/tests/vendor/golang.org/x/text/internal/language/compact/language.go @@ -0,0 +1,260 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:generate go run gen.go gen_index.go -output tables.go +//go:generate go run gen_parents.go + +package compact + +// TODO: Remove above NOTE after: +// - verifying that tables are dropped correctly (most notably matcher tables). + +import ( + "strings" + + "golang.org/x/text/internal/language" +) + +// Tag represents a BCP 47 language tag. It is used to specify an instance of a +// specific language or locale. All language tag values are guaranteed to be +// well-formed. +type Tag struct { + // NOTE: exported tags will become part of the public API. + language ID + locale ID + full fullTag // always a language.Tag for now. +} + +const _und = 0 + +type fullTag interface { + IsRoot() bool + Parent() language.Tag +} + +// Make a compact Tag from a fully specified internal language Tag. +func Make(t language.Tag) (tag Tag) { + if region := t.TypeForKey("rg"); len(region) == 6 && region[2:] == "zzzz" { + if r, err := language.ParseRegion(region[:2]); err == nil { + tFull := t + t, _ = t.SetTypeForKey("rg", "") + // TODO: should we not consider "va" for the language tag? + var exact1, exact2 bool + tag.language, exact1 = FromTag(t) + t.RegionID = r + tag.locale, exact2 = FromTag(t) + if !exact1 || !exact2 { + tag.full = tFull + } + return tag + } + } + lang, ok := FromTag(t) + tag.language = lang + tag.locale = lang + if !ok { + tag.full = t + } + return tag +} + +// Tag returns an internal language Tag version of this tag. +func (t Tag) Tag() language.Tag { + if t.full != nil { + return t.full.(language.Tag) + } + tag := t.language.Tag() + if t.language != t.locale { + loc := t.locale.Tag() + tag, _ = tag.SetTypeForKey("rg", strings.ToLower(loc.RegionID.String())+"zzzz") + } + return tag +} + +// IsCompact reports whether this tag is fully defined in terms of ID. +func (t *Tag) IsCompact() bool { + return t.full == nil +} + +// MayHaveVariants reports whether a tag may have variants. If it returns false +// it is guaranteed the tag does not have variants. +func (t Tag) MayHaveVariants() bool { + return t.full != nil || int(t.language) >= len(coreTags) +} + +// MayHaveExtensions reports whether a tag may have extensions. If it returns +// false it is guaranteed the tag does not have them. +func (t Tag) MayHaveExtensions() bool { + return t.full != nil || + int(t.language) >= len(coreTags) || + t.language != t.locale +} + +// IsRoot returns true if t is equal to language "und". +func (t Tag) IsRoot() bool { + if t.full != nil { + return t.full.IsRoot() + } + return t.language == _und +} + +// Parent returns the CLDR parent of t. In CLDR, missing fields in data for a +// specific language are substituted with fields from the parent language. +// The parent for a language may change for newer versions of CLDR. +func (t Tag) Parent() Tag { + if t.full != nil { + return Make(t.full.Parent()) + } + if t.language != t.locale { + // Simulate stripping -u-rg-xxxxxx + return Tag{language: t.language, locale: t.language} + } + // TODO: use parent lookup table once cycle from internal package is + // removed. Probably by internalizing the table and declaring this fast + // enough. + // lang := compactID(internal.Parent(uint16(t.language))) + lang, _ := FromTag(t.language.Tag().Parent()) + return Tag{language: lang, locale: lang} +} + +// nextToken returns token t and the rest of the string. +func nextToken(s string) (t, tail string) { + p := strings.Index(s[1:], "-") + if p == -1 { + return s[1:], "" + } + p++ + return s[1:p], s[p:] +} + +// LanguageID returns an index, where 0 <= index < NumCompactTags, for tags +// for which data exists in the text repository.The index will change over time +// and should not be stored in persistent storage. If t does not match a compact +// index, exact will be false and the compact index will be returned for the +// first match after repeatedly taking the Parent of t. +func LanguageID(t Tag) (id ID, exact bool) { + return t.language, t.full == nil +} + +// RegionalID returns the ID for the regional variant of this tag. This index is +// used to indicate region-specific overrides, such as default currency, default +// calendar and week data, default time cycle, and default measurement system +// and unit preferences. +// +// For instance, the tag en-GB-u-rg-uszzzz specifies British English with US +// settings for currency, number formatting, etc. The CompactIndex for this tag +// will be that for en-GB, while the RegionalID will be the one corresponding to +// en-US. +func RegionalID(t Tag) (id ID, exact bool) { + return t.locale, t.full == nil +} + +// LanguageTag returns t stripped of regional variant indicators. +// +// At the moment this means it is stripped of a regional and variant subtag "rg" +// and "va" in the "u" extension. +func (t Tag) LanguageTag() Tag { + if t.full == nil { + return Tag{language: t.language, locale: t.language} + } + tt := t.Tag() + tt.SetTypeForKey("rg", "") + tt.SetTypeForKey("va", "") + return Make(tt) +} + +// RegionalTag returns the regional variant of the tag. +// +// At the moment this means that the region is set from the regional subtag +// "rg" in the "u" extension. +func (t Tag) RegionalTag() Tag { + rt := Tag{language: t.locale, locale: t.locale} + if t.full == nil { + return rt + } + b := language.Builder{} + tag := t.Tag() + // tag, _ = tag.SetTypeForKey("rg", "") + b.SetTag(t.locale.Tag()) + if v := tag.Variants(); v != "" { + for _, v := range strings.Split(v, "-") { + b.AddVariant(v) + } + } + for _, e := range tag.Extensions() { + b.AddExt(e) + } + return t +} + +// FromTag reports closest matching ID for an internal language Tag. +func FromTag(t language.Tag) (id ID, exact bool) { + // TODO: perhaps give more frequent tags a lower index. + // TODO: we could make the indexes stable. This will excluded some + // possibilities for optimization, so don't do this quite yet. + exact = true + + b, s, r := t.Raw() + if t.HasString() { + if t.IsPrivateUse() { + // We have no entries for user-defined tags. + return 0, false + } + hasExtra := false + if t.HasVariants() { + if t.HasExtensions() { + build := language.Builder{} + build.SetTag(language.Tag{LangID: b, ScriptID: s, RegionID: r}) + build.AddVariant(t.Variants()) + exact = false + t = build.Make() + } + hasExtra = true + } else if _, ok := t.Extension('u'); ok { + // TODO: va may mean something else. Consider not considering it. + // Strip all but the 'va' entry. + old := t + variant := t.TypeForKey("va") + t = language.Tag{LangID: b, ScriptID: s, RegionID: r} + if variant != "" { + t, _ = t.SetTypeForKey("va", variant) + hasExtra = true + } + exact = old == t + } else { + exact = false + } + if hasExtra { + // We have some variants. + for i, s := range specialTags { + if s == t { + return ID(i + len(coreTags)), exact + } + } + exact = false + } + } + if x, ok := getCoreIndex(t); ok { + return x, exact + } + exact = false + if r != 0 && s == 0 { + // Deal with cases where an extra script is inserted for the region. + t, _ := t.Maximize() + if x, ok := getCoreIndex(t); ok { + return x, exact + } + } + for t = t.Parent(); t != root; t = t.Parent() { + // No variants specified: just compare core components. + // The key has the form lllssrrr, where l, s, and r are nibbles for + // respectively the langID, scriptID, and regionID. + if x, ok := getCoreIndex(t); ok { + return x, exact + } + } + return 0, exact +} + +var root = language.Tag{} diff --git a/tests/vendor/golang.org/x/text/internal/language/compact/parents.go b/tests/vendor/golang.org/x/text/internal/language/compact/parents.go new file mode 100644 index 000000000..8d810723c --- /dev/null +++ b/tests/vendor/golang.org/x/text/internal/language/compact/parents.go @@ -0,0 +1,120 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +package compact + +// parents maps a compact index of a tag to the compact index of the parent of +// this tag. +var parents = []ID{ // 775 elements + // Entry 0 - 3F + 0x0000, 0x0000, 0x0001, 0x0001, 0x0000, 0x0004, 0x0000, 0x0006, + 0x0000, 0x0008, 0x0000, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, + 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0000, + 0x0000, 0x0028, 0x0000, 0x002a, 0x0000, 0x002c, 0x0000, 0x0000, + 0x002f, 0x002e, 0x002e, 0x0000, 0x0033, 0x0000, 0x0035, 0x0000, + 0x0037, 0x0000, 0x0039, 0x0000, 0x003b, 0x0000, 0x0000, 0x003e, + // Entry 40 - 7F + 0x0000, 0x0040, 0x0040, 0x0000, 0x0043, 0x0043, 0x0000, 0x0046, + 0x0000, 0x0048, 0x0000, 0x0000, 0x004b, 0x004a, 0x004a, 0x0000, + 0x004f, 0x004f, 0x004f, 0x004f, 0x0000, 0x0054, 0x0054, 0x0000, + 0x0057, 0x0000, 0x0059, 0x0000, 0x005b, 0x0000, 0x005d, 0x005d, + 0x0000, 0x0060, 0x0000, 0x0062, 0x0000, 0x0064, 0x0000, 0x0066, + 0x0066, 0x0000, 0x0069, 0x0000, 0x006b, 0x006b, 0x006b, 0x006b, + 0x006b, 0x006b, 0x006b, 0x0000, 0x0073, 0x0000, 0x0075, 0x0000, + 0x0077, 0x0000, 0x0000, 0x007a, 0x0000, 0x007c, 0x0000, 0x007e, + // Entry 80 - BF + 0x0000, 0x0080, 0x0080, 0x0000, 0x0083, 0x0083, 0x0000, 0x0086, + 0x0087, 0x0087, 0x0087, 0x0086, 0x0088, 0x0087, 0x0087, 0x0087, + 0x0086, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0088, + 0x0087, 0x0087, 0x0087, 0x0087, 0x0088, 0x0087, 0x0088, 0x0087, + 0x0087, 0x0088, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0087, 0x0087, 0x0087, 0x0086, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0086, 0x0087, 0x0086, + // Entry C0 - FF + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0088, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0086, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0088, 0x0087, + 0x0087, 0x0088, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, + 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0086, 0x0086, 0x0087, + 0x0087, 0x0086, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0000, + 0x00ef, 0x0000, 0x00f1, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f2, + 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f1, 0x00f2, 0x00f1, 0x00f1, + // Entry 100 - 13F + 0x00f2, 0x00f2, 0x00f1, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f1, + 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x00f2, 0x0000, 0x010e, + 0x0000, 0x0110, 0x0000, 0x0112, 0x0000, 0x0114, 0x0114, 0x0000, + 0x0117, 0x0117, 0x0117, 0x0117, 0x0000, 0x011c, 0x0000, 0x011e, + 0x0000, 0x0120, 0x0120, 0x0000, 0x0123, 0x0123, 0x0123, 0x0123, + 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, + 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, + 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, + // Entry 140 - 17F + 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, + 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, 0x0123, + 0x0123, 0x0123, 0x0000, 0x0152, 0x0000, 0x0154, 0x0000, 0x0156, + 0x0000, 0x0158, 0x0000, 0x015a, 0x0000, 0x015c, 0x015c, 0x015c, + 0x0000, 0x0160, 0x0000, 0x0000, 0x0163, 0x0000, 0x0165, 0x0000, + 0x0167, 0x0167, 0x0167, 0x0000, 0x016b, 0x0000, 0x016d, 0x0000, + 0x016f, 0x0000, 0x0171, 0x0171, 0x0000, 0x0174, 0x0000, 0x0176, + 0x0000, 0x0178, 0x0000, 0x017a, 0x0000, 0x017c, 0x0000, 0x017e, + // Entry 180 - 1BF + 0x0000, 0x0000, 0x0000, 0x0182, 0x0000, 0x0184, 0x0184, 0x0184, + 0x0184, 0x0000, 0x0000, 0x0000, 0x018b, 0x0000, 0x0000, 0x018e, + 0x0000, 0x0000, 0x0191, 0x0000, 0x0000, 0x0000, 0x0195, 0x0000, + 0x0197, 0x0000, 0x0000, 0x019a, 0x0000, 0x0000, 0x019d, 0x0000, + 0x019f, 0x0000, 0x01a1, 0x0000, 0x01a3, 0x0000, 0x01a5, 0x0000, + 0x01a7, 0x0000, 0x01a9, 0x0000, 0x01ab, 0x0000, 0x01ad, 0x0000, + 0x01af, 0x0000, 0x01b1, 0x01b1, 0x0000, 0x01b4, 0x0000, 0x01b6, + 0x0000, 0x01b8, 0x0000, 0x01ba, 0x0000, 0x01bc, 0x0000, 0x0000, + // Entry 1C0 - 1FF + 0x01bf, 0x0000, 0x01c1, 0x0000, 0x01c3, 0x0000, 0x01c5, 0x0000, + 0x01c7, 0x0000, 0x01c9, 0x0000, 0x01cb, 0x01cb, 0x01cb, 0x01cb, + 0x0000, 0x01d0, 0x0000, 0x01d2, 0x01d2, 0x0000, 0x01d5, 0x0000, + 0x01d7, 0x0000, 0x01d9, 0x0000, 0x01db, 0x0000, 0x01dd, 0x0000, + 0x01df, 0x01df, 0x0000, 0x01e2, 0x0000, 0x01e4, 0x0000, 0x01e6, + 0x0000, 0x01e8, 0x0000, 0x01ea, 0x0000, 0x01ec, 0x0000, 0x01ee, + 0x0000, 0x01f0, 0x0000, 0x0000, 0x01f3, 0x0000, 0x01f5, 0x01f5, + 0x01f5, 0x0000, 0x01f9, 0x0000, 0x01fb, 0x0000, 0x01fd, 0x0000, + // Entry 200 - 23F + 0x01ff, 0x0000, 0x0000, 0x0202, 0x0000, 0x0204, 0x0204, 0x0000, + 0x0207, 0x0000, 0x0209, 0x0209, 0x0000, 0x020c, 0x020c, 0x0000, + 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x020f, 0x0000, + 0x0217, 0x0000, 0x0219, 0x0000, 0x021b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0221, 0x0000, 0x0000, 0x0224, 0x0000, 0x0226, + 0x0226, 0x0000, 0x0229, 0x0000, 0x022b, 0x022b, 0x0000, 0x0000, + 0x022f, 0x022e, 0x022e, 0x0000, 0x0000, 0x0234, 0x0000, 0x0236, + 0x0000, 0x0238, 0x0000, 0x0244, 0x023a, 0x0244, 0x0244, 0x0244, + // Entry 240 - 27F + 0x0244, 0x0244, 0x0244, 0x0244, 0x023a, 0x0244, 0x0244, 0x0000, + 0x0247, 0x0247, 0x0247, 0x0000, 0x024b, 0x0000, 0x024d, 0x0000, + 0x024f, 0x024f, 0x0000, 0x0252, 0x0000, 0x0254, 0x0254, 0x0254, + 0x0254, 0x0254, 0x0254, 0x0000, 0x025b, 0x0000, 0x025d, 0x0000, + 0x025f, 0x0000, 0x0261, 0x0000, 0x0263, 0x0000, 0x0265, 0x0000, + 0x0000, 0x0268, 0x0268, 0x0268, 0x0000, 0x026c, 0x0000, 0x026e, + 0x0000, 0x0270, 0x0000, 0x0000, 0x0000, 0x0274, 0x0273, 0x0273, + 0x0000, 0x0278, 0x0000, 0x027a, 0x0000, 0x027c, 0x0000, 0x0000, + // Entry 280 - 2BF + 0x0000, 0x0000, 0x0281, 0x0000, 0x0000, 0x0284, 0x0000, 0x0286, + 0x0286, 0x0286, 0x0286, 0x0000, 0x028b, 0x028b, 0x028b, 0x0000, + 0x028f, 0x028f, 0x028f, 0x028f, 0x028f, 0x0000, 0x0295, 0x0295, + 0x0295, 0x0295, 0x0000, 0x0000, 0x0000, 0x0000, 0x029d, 0x029d, + 0x029d, 0x0000, 0x02a1, 0x02a1, 0x02a1, 0x02a1, 0x0000, 0x0000, + 0x02a7, 0x02a7, 0x02a7, 0x02a7, 0x0000, 0x02ac, 0x0000, 0x02ae, + 0x02ae, 0x0000, 0x02b1, 0x0000, 0x02b3, 0x0000, 0x02b5, 0x02b5, + 0x0000, 0x0000, 0x02b9, 0x0000, 0x0000, 0x0000, 0x02bd, 0x0000, + // Entry 2C0 - 2FF + 0x02bf, 0x02bf, 0x0000, 0x0000, 0x02c3, 0x0000, 0x02c5, 0x0000, + 0x02c7, 0x0000, 0x02c9, 0x0000, 0x02cb, 0x0000, 0x02cd, 0x02cd, + 0x0000, 0x0000, 0x02d1, 0x0000, 0x02d3, 0x02d0, 0x02d0, 0x0000, + 0x0000, 0x02d8, 0x02d7, 0x02d7, 0x0000, 0x0000, 0x02dd, 0x0000, + 0x02df, 0x0000, 0x02e1, 0x0000, 0x0000, 0x02e4, 0x0000, 0x02e6, + 0x0000, 0x0000, 0x02e9, 0x0000, 0x02eb, 0x0000, 0x02ed, 0x0000, + 0x02ef, 0x02ef, 0x0000, 0x0000, 0x02f3, 0x02f2, 0x02f2, 0x0000, + 0x02f7, 0x0000, 0x02f9, 0x02f9, 0x02f9, 0x02f9, 0x02f9, 0x0000, + // Entry 300 - 33F + 0x02ff, 0x0300, 0x02ff, 0x0000, 0x0303, 0x0051, 0x00e6, +} // Size: 1574 bytes + +// Total table size 1574 bytes (1KiB); checksum: 895AAF0B diff --git a/tests/vendor/golang.org/x/text/internal/language/compact/tables.go b/tests/vendor/golang.org/x/text/internal/language/compact/tables.go new file mode 100644 index 000000000..a09ed198a --- /dev/null +++ b/tests/vendor/golang.org/x/text/internal/language/compact/tables.go @@ -0,0 +1,1015 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +package compact + +import "golang.org/x/text/internal/language" + +// CLDRVersion is the CLDR version from which the tables in this package are derived. +const CLDRVersion = "32" + +// NumCompactTags is the number of common tags. The maximum tag is +// NumCompactTags-1. +const NumCompactTags = 775 +const ( + undIndex ID = 0 + afIndex ID = 1 + afNAIndex ID = 2 + afZAIndex ID = 3 + agqIndex ID = 4 + agqCMIndex ID = 5 + akIndex ID = 6 + akGHIndex ID = 7 + amIndex ID = 8 + amETIndex ID = 9 + arIndex ID = 10 + ar001Index ID = 11 + arAEIndex ID = 12 + arBHIndex ID = 13 + arDJIndex ID = 14 + arDZIndex ID = 15 + arEGIndex ID = 16 + arEHIndex ID = 17 + arERIndex ID = 18 + arILIndex ID = 19 + arIQIndex ID = 20 + arJOIndex ID = 21 + arKMIndex ID = 22 + arKWIndex ID = 23 + arLBIndex ID = 24 + arLYIndex ID = 25 + arMAIndex ID = 26 + arMRIndex ID = 27 + arOMIndex ID = 28 + arPSIndex ID = 29 + arQAIndex ID = 30 + arSAIndex ID = 31 + arSDIndex ID = 32 + arSOIndex ID = 33 + arSSIndex ID = 34 + arSYIndex ID = 35 + arTDIndex ID = 36 + arTNIndex ID = 37 + arYEIndex ID = 38 + arsIndex ID = 39 + asIndex ID = 40 + asINIndex ID = 41 + asaIndex ID = 42 + asaTZIndex ID = 43 + astIndex ID = 44 + astESIndex ID = 45 + azIndex ID = 46 + azCyrlIndex ID = 47 + azCyrlAZIndex ID = 48 + azLatnIndex ID = 49 + azLatnAZIndex ID = 50 + basIndex ID = 51 + basCMIndex ID = 52 + beIndex ID = 53 + beBYIndex ID = 54 + bemIndex ID = 55 + bemZMIndex ID = 56 + bezIndex ID = 57 + bezTZIndex ID = 58 + bgIndex ID = 59 + bgBGIndex ID = 60 + bhIndex ID = 61 + bmIndex ID = 62 + bmMLIndex ID = 63 + bnIndex ID = 64 + bnBDIndex ID = 65 + bnINIndex ID = 66 + boIndex ID = 67 + boCNIndex ID = 68 + boINIndex ID = 69 + brIndex ID = 70 + brFRIndex ID = 71 + brxIndex ID = 72 + brxINIndex ID = 73 + bsIndex ID = 74 + bsCyrlIndex ID = 75 + bsCyrlBAIndex ID = 76 + bsLatnIndex ID = 77 + bsLatnBAIndex ID = 78 + caIndex ID = 79 + caADIndex ID = 80 + caESIndex ID = 81 + caFRIndex ID = 82 + caITIndex ID = 83 + ccpIndex ID = 84 + ccpBDIndex ID = 85 + ccpINIndex ID = 86 + ceIndex ID = 87 + ceRUIndex ID = 88 + cggIndex ID = 89 + cggUGIndex ID = 90 + chrIndex ID = 91 + chrUSIndex ID = 92 + ckbIndex ID = 93 + ckbIQIndex ID = 94 + ckbIRIndex ID = 95 + csIndex ID = 96 + csCZIndex ID = 97 + cuIndex ID = 98 + cuRUIndex ID = 99 + cyIndex ID = 100 + cyGBIndex ID = 101 + daIndex ID = 102 + daDKIndex ID = 103 + daGLIndex ID = 104 + davIndex ID = 105 + davKEIndex ID = 106 + deIndex ID = 107 + deATIndex ID = 108 + deBEIndex ID = 109 + deCHIndex ID = 110 + deDEIndex ID = 111 + deITIndex ID = 112 + deLIIndex ID = 113 + deLUIndex ID = 114 + djeIndex ID = 115 + djeNEIndex ID = 116 + dsbIndex ID = 117 + dsbDEIndex ID = 118 + duaIndex ID = 119 + duaCMIndex ID = 120 + dvIndex ID = 121 + dyoIndex ID = 122 + dyoSNIndex ID = 123 + dzIndex ID = 124 + dzBTIndex ID = 125 + ebuIndex ID = 126 + ebuKEIndex ID = 127 + eeIndex ID = 128 + eeGHIndex ID = 129 + eeTGIndex ID = 130 + elIndex ID = 131 + elCYIndex ID = 132 + elGRIndex ID = 133 + enIndex ID = 134 + en001Index ID = 135 + en150Index ID = 136 + enAGIndex ID = 137 + enAIIndex ID = 138 + enASIndex ID = 139 + enATIndex ID = 140 + enAUIndex ID = 141 + enBBIndex ID = 142 + enBEIndex ID = 143 + enBIIndex ID = 144 + enBMIndex ID = 145 + enBSIndex ID = 146 + enBWIndex ID = 147 + enBZIndex ID = 148 + enCAIndex ID = 149 + enCCIndex ID = 150 + enCHIndex ID = 151 + enCKIndex ID = 152 + enCMIndex ID = 153 + enCXIndex ID = 154 + enCYIndex ID = 155 + enDEIndex ID = 156 + enDGIndex ID = 157 + enDKIndex ID = 158 + enDMIndex ID = 159 + enERIndex ID = 160 + enFIIndex ID = 161 + enFJIndex ID = 162 + enFKIndex ID = 163 + enFMIndex ID = 164 + enGBIndex ID = 165 + enGDIndex ID = 166 + enGGIndex ID = 167 + enGHIndex ID = 168 + enGIIndex ID = 169 + enGMIndex ID = 170 + enGUIndex ID = 171 + enGYIndex ID = 172 + enHKIndex ID = 173 + enIEIndex ID = 174 + enILIndex ID = 175 + enIMIndex ID = 176 + enINIndex ID = 177 + enIOIndex ID = 178 + enJEIndex ID = 179 + enJMIndex ID = 180 + enKEIndex ID = 181 + enKIIndex ID = 182 + enKNIndex ID = 183 + enKYIndex ID = 184 + enLCIndex ID = 185 + enLRIndex ID = 186 + enLSIndex ID = 187 + enMGIndex ID = 188 + enMHIndex ID = 189 + enMOIndex ID = 190 + enMPIndex ID = 191 + enMSIndex ID = 192 + enMTIndex ID = 193 + enMUIndex ID = 194 + enMWIndex ID = 195 + enMYIndex ID = 196 + enNAIndex ID = 197 + enNFIndex ID = 198 + enNGIndex ID = 199 + enNLIndex ID = 200 + enNRIndex ID = 201 + enNUIndex ID = 202 + enNZIndex ID = 203 + enPGIndex ID = 204 + enPHIndex ID = 205 + enPKIndex ID = 206 + enPNIndex ID = 207 + enPRIndex ID = 208 + enPWIndex ID = 209 + enRWIndex ID = 210 + enSBIndex ID = 211 + enSCIndex ID = 212 + enSDIndex ID = 213 + enSEIndex ID = 214 + enSGIndex ID = 215 + enSHIndex ID = 216 + enSIIndex ID = 217 + enSLIndex ID = 218 + enSSIndex ID = 219 + enSXIndex ID = 220 + enSZIndex ID = 221 + enTCIndex ID = 222 + enTKIndex ID = 223 + enTOIndex ID = 224 + enTTIndex ID = 225 + enTVIndex ID = 226 + enTZIndex ID = 227 + enUGIndex ID = 228 + enUMIndex ID = 229 + enUSIndex ID = 230 + enVCIndex ID = 231 + enVGIndex ID = 232 + enVIIndex ID = 233 + enVUIndex ID = 234 + enWSIndex ID = 235 + enZAIndex ID = 236 + enZMIndex ID = 237 + enZWIndex ID = 238 + eoIndex ID = 239 + eo001Index ID = 240 + esIndex ID = 241 + es419Index ID = 242 + esARIndex ID = 243 + esBOIndex ID = 244 + esBRIndex ID = 245 + esBZIndex ID = 246 + esCLIndex ID = 247 + esCOIndex ID = 248 + esCRIndex ID = 249 + esCUIndex ID = 250 + esDOIndex ID = 251 + esEAIndex ID = 252 + esECIndex ID = 253 + esESIndex ID = 254 + esGQIndex ID = 255 + esGTIndex ID = 256 + esHNIndex ID = 257 + esICIndex ID = 258 + esMXIndex ID = 259 + esNIIndex ID = 260 + esPAIndex ID = 261 + esPEIndex ID = 262 + esPHIndex ID = 263 + esPRIndex ID = 264 + esPYIndex ID = 265 + esSVIndex ID = 266 + esUSIndex ID = 267 + esUYIndex ID = 268 + esVEIndex ID = 269 + etIndex ID = 270 + etEEIndex ID = 271 + euIndex ID = 272 + euESIndex ID = 273 + ewoIndex ID = 274 + ewoCMIndex ID = 275 + faIndex ID = 276 + faAFIndex ID = 277 + faIRIndex ID = 278 + ffIndex ID = 279 + ffCMIndex ID = 280 + ffGNIndex ID = 281 + ffMRIndex ID = 282 + ffSNIndex ID = 283 + fiIndex ID = 284 + fiFIIndex ID = 285 + filIndex ID = 286 + filPHIndex ID = 287 + foIndex ID = 288 + foDKIndex ID = 289 + foFOIndex ID = 290 + frIndex ID = 291 + frBEIndex ID = 292 + frBFIndex ID = 293 + frBIIndex ID = 294 + frBJIndex ID = 295 + frBLIndex ID = 296 + frCAIndex ID = 297 + frCDIndex ID = 298 + frCFIndex ID = 299 + frCGIndex ID = 300 + frCHIndex ID = 301 + frCIIndex ID = 302 + frCMIndex ID = 303 + frDJIndex ID = 304 + frDZIndex ID = 305 + frFRIndex ID = 306 + frGAIndex ID = 307 + frGFIndex ID = 308 + frGNIndex ID = 309 + frGPIndex ID = 310 + frGQIndex ID = 311 + frHTIndex ID = 312 + frKMIndex ID = 313 + frLUIndex ID = 314 + frMAIndex ID = 315 + frMCIndex ID = 316 + frMFIndex ID = 317 + frMGIndex ID = 318 + frMLIndex ID = 319 + frMQIndex ID = 320 + frMRIndex ID = 321 + frMUIndex ID = 322 + frNCIndex ID = 323 + frNEIndex ID = 324 + frPFIndex ID = 325 + frPMIndex ID = 326 + frREIndex ID = 327 + frRWIndex ID = 328 + frSCIndex ID = 329 + frSNIndex ID = 330 + frSYIndex ID = 331 + frTDIndex ID = 332 + frTGIndex ID = 333 + frTNIndex ID = 334 + frVUIndex ID = 335 + frWFIndex ID = 336 + frYTIndex ID = 337 + furIndex ID = 338 + furITIndex ID = 339 + fyIndex ID = 340 + fyNLIndex ID = 341 + gaIndex ID = 342 + gaIEIndex ID = 343 + gdIndex ID = 344 + gdGBIndex ID = 345 + glIndex ID = 346 + glESIndex ID = 347 + gswIndex ID = 348 + gswCHIndex ID = 349 + gswFRIndex ID = 350 + gswLIIndex ID = 351 + guIndex ID = 352 + guINIndex ID = 353 + guwIndex ID = 354 + guzIndex ID = 355 + guzKEIndex ID = 356 + gvIndex ID = 357 + gvIMIndex ID = 358 + haIndex ID = 359 + haGHIndex ID = 360 + haNEIndex ID = 361 + haNGIndex ID = 362 + hawIndex ID = 363 + hawUSIndex ID = 364 + heIndex ID = 365 + heILIndex ID = 366 + hiIndex ID = 367 + hiINIndex ID = 368 + hrIndex ID = 369 + hrBAIndex ID = 370 + hrHRIndex ID = 371 + hsbIndex ID = 372 + hsbDEIndex ID = 373 + huIndex ID = 374 + huHUIndex ID = 375 + hyIndex ID = 376 + hyAMIndex ID = 377 + idIndex ID = 378 + idIDIndex ID = 379 + igIndex ID = 380 + igNGIndex ID = 381 + iiIndex ID = 382 + iiCNIndex ID = 383 + inIndex ID = 384 + ioIndex ID = 385 + isIndex ID = 386 + isISIndex ID = 387 + itIndex ID = 388 + itCHIndex ID = 389 + itITIndex ID = 390 + itSMIndex ID = 391 + itVAIndex ID = 392 + iuIndex ID = 393 + iwIndex ID = 394 + jaIndex ID = 395 + jaJPIndex ID = 396 + jboIndex ID = 397 + jgoIndex ID = 398 + jgoCMIndex ID = 399 + jiIndex ID = 400 + jmcIndex ID = 401 + jmcTZIndex ID = 402 + jvIndex ID = 403 + jwIndex ID = 404 + kaIndex ID = 405 + kaGEIndex ID = 406 + kabIndex ID = 407 + kabDZIndex ID = 408 + kajIndex ID = 409 + kamIndex ID = 410 + kamKEIndex ID = 411 + kcgIndex ID = 412 + kdeIndex ID = 413 + kdeTZIndex ID = 414 + keaIndex ID = 415 + keaCVIndex ID = 416 + khqIndex ID = 417 + khqMLIndex ID = 418 + kiIndex ID = 419 + kiKEIndex ID = 420 + kkIndex ID = 421 + kkKZIndex ID = 422 + kkjIndex ID = 423 + kkjCMIndex ID = 424 + klIndex ID = 425 + klGLIndex ID = 426 + klnIndex ID = 427 + klnKEIndex ID = 428 + kmIndex ID = 429 + kmKHIndex ID = 430 + knIndex ID = 431 + knINIndex ID = 432 + koIndex ID = 433 + koKPIndex ID = 434 + koKRIndex ID = 435 + kokIndex ID = 436 + kokINIndex ID = 437 + ksIndex ID = 438 + ksINIndex ID = 439 + ksbIndex ID = 440 + ksbTZIndex ID = 441 + ksfIndex ID = 442 + ksfCMIndex ID = 443 + kshIndex ID = 444 + kshDEIndex ID = 445 + kuIndex ID = 446 + kwIndex ID = 447 + kwGBIndex ID = 448 + kyIndex ID = 449 + kyKGIndex ID = 450 + lagIndex ID = 451 + lagTZIndex ID = 452 + lbIndex ID = 453 + lbLUIndex ID = 454 + lgIndex ID = 455 + lgUGIndex ID = 456 + lktIndex ID = 457 + lktUSIndex ID = 458 + lnIndex ID = 459 + lnAOIndex ID = 460 + lnCDIndex ID = 461 + lnCFIndex ID = 462 + lnCGIndex ID = 463 + loIndex ID = 464 + loLAIndex ID = 465 + lrcIndex ID = 466 + lrcIQIndex ID = 467 + lrcIRIndex ID = 468 + ltIndex ID = 469 + ltLTIndex ID = 470 + luIndex ID = 471 + luCDIndex ID = 472 + luoIndex ID = 473 + luoKEIndex ID = 474 + luyIndex ID = 475 + luyKEIndex ID = 476 + lvIndex ID = 477 + lvLVIndex ID = 478 + masIndex ID = 479 + masKEIndex ID = 480 + masTZIndex ID = 481 + merIndex ID = 482 + merKEIndex ID = 483 + mfeIndex ID = 484 + mfeMUIndex ID = 485 + mgIndex ID = 486 + mgMGIndex ID = 487 + mghIndex ID = 488 + mghMZIndex ID = 489 + mgoIndex ID = 490 + mgoCMIndex ID = 491 + mkIndex ID = 492 + mkMKIndex ID = 493 + mlIndex ID = 494 + mlINIndex ID = 495 + mnIndex ID = 496 + mnMNIndex ID = 497 + moIndex ID = 498 + mrIndex ID = 499 + mrINIndex ID = 500 + msIndex ID = 501 + msBNIndex ID = 502 + msMYIndex ID = 503 + msSGIndex ID = 504 + mtIndex ID = 505 + mtMTIndex ID = 506 + muaIndex ID = 507 + muaCMIndex ID = 508 + myIndex ID = 509 + myMMIndex ID = 510 + mznIndex ID = 511 + mznIRIndex ID = 512 + nahIndex ID = 513 + naqIndex ID = 514 + naqNAIndex ID = 515 + nbIndex ID = 516 + nbNOIndex ID = 517 + nbSJIndex ID = 518 + ndIndex ID = 519 + ndZWIndex ID = 520 + ndsIndex ID = 521 + ndsDEIndex ID = 522 + ndsNLIndex ID = 523 + neIndex ID = 524 + neINIndex ID = 525 + neNPIndex ID = 526 + nlIndex ID = 527 + nlAWIndex ID = 528 + nlBEIndex ID = 529 + nlBQIndex ID = 530 + nlCWIndex ID = 531 + nlNLIndex ID = 532 + nlSRIndex ID = 533 + nlSXIndex ID = 534 + nmgIndex ID = 535 + nmgCMIndex ID = 536 + nnIndex ID = 537 + nnNOIndex ID = 538 + nnhIndex ID = 539 + nnhCMIndex ID = 540 + noIndex ID = 541 + nqoIndex ID = 542 + nrIndex ID = 543 + nsoIndex ID = 544 + nusIndex ID = 545 + nusSSIndex ID = 546 + nyIndex ID = 547 + nynIndex ID = 548 + nynUGIndex ID = 549 + omIndex ID = 550 + omETIndex ID = 551 + omKEIndex ID = 552 + orIndex ID = 553 + orINIndex ID = 554 + osIndex ID = 555 + osGEIndex ID = 556 + osRUIndex ID = 557 + paIndex ID = 558 + paArabIndex ID = 559 + paArabPKIndex ID = 560 + paGuruIndex ID = 561 + paGuruINIndex ID = 562 + papIndex ID = 563 + plIndex ID = 564 + plPLIndex ID = 565 + prgIndex ID = 566 + prg001Index ID = 567 + psIndex ID = 568 + psAFIndex ID = 569 + ptIndex ID = 570 + ptAOIndex ID = 571 + ptBRIndex ID = 572 + ptCHIndex ID = 573 + ptCVIndex ID = 574 + ptGQIndex ID = 575 + ptGWIndex ID = 576 + ptLUIndex ID = 577 + ptMOIndex ID = 578 + ptMZIndex ID = 579 + ptPTIndex ID = 580 + ptSTIndex ID = 581 + ptTLIndex ID = 582 + quIndex ID = 583 + quBOIndex ID = 584 + quECIndex ID = 585 + quPEIndex ID = 586 + rmIndex ID = 587 + rmCHIndex ID = 588 + rnIndex ID = 589 + rnBIIndex ID = 590 + roIndex ID = 591 + roMDIndex ID = 592 + roROIndex ID = 593 + rofIndex ID = 594 + rofTZIndex ID = 595 + ruIndex ID = 596 + ruBYIndex ID = 597 + ruKGIndex ID = 598 + ruKZIndex ID = 599 + ruMDIndex ID = 600 + ruRUIndex ID = 601 + ruUAIndex ID = 602 + rwIndex ID = 603 + rwRWIndex ID = 604 + rwkIndex ID = 605 + rwkTZIndex ID = 606 + sahIndex ID = 607 + sahRUIndex ID = 608 + saqIndex ID = 609 + saqKEIndex ID = 610 + sbpIndex ID = 611 + sbpTZIndex ID = 612 + sdIndex ID = 613 + sdPKIndex ID = 614 + sdhIndex ID = 615 + seIndex ID = 616 + seFIIndex ID = 617 + seNOIndex ID = 618 + seSEIndex ID = 619 + sehIndex ID = 620 + sehMZIndex ID = 621 + sesIndex ID = 622 + sesMLIndex ID = 623 + sgIndex ID = 624 + sgCFIndex ID = 625 + shIndex ID = 626 + shiIndex ID = 627 + shiLatnIndex ID = 628 + shiLatnMAIndex ID = 629 + shiTfngIndex ID = 630 + shiTfngMAIndex ID = 631 + siIndex ID = 632 + siLKIndex ID = 633 + skIndex ID = 634 + skSKIndex ID = 635 + slIndex ID = 636 + slSIIndex ID = 637 + smaIndex ID = 638 + smiIndex ID = 639 + smjIndex ID = 640 + smnIndex ID = 641 + smnFIIndex ID = 642 + smsIndex ID = 643 + snIndex ID = 644 + snZWIndex ID = 645 + soIndex ID = 646 + soDJIndex ID = 647 + soETIndex ID = 648 + soKEIndex ID = 649 + soSOIndex ID = 650 + sqIndex ID = 651 + sqALIndex ID = 652 + sqMKIndex ID = 653 + sqXKIndex ID = 654 + srIndex ID = 655 + srCyrlIndex ID = 656 + srCyrlBAIndex ID = 657 + srCyrlMEIndex ID = 658 + srCyrlRSIndex ID = 659 + srCyrlXKIndex ID = 660 + srLatnIndex ID = 661 + srLatnBAIndex ID = 662 + srLatnMEIndex ID = 663 + srLatnRSIndex ID = 664 + srLatnXKIndex ID = 665 + ssIndex ID = 666 + ssyIndex ID = 667 + stIndex ID = 668 + svIndex ID = 669 + svAXIndex ID = 670 + svFIIndex ID = 671 + svSEIndex ID = 672 + swIndex ID = 673 + swCDIndex ID = 674 + swKEIndex ID = 675 + swTZIndex ID = 676 + swUGIndex ID = 677 + syrIndex ID = 678 + taIndex ID = 679 + taINIndex ID = 680 + taLKIndex ID = 681 + taMYIndex ID = 682 + taSGIndex ID = 683 + teIndex ID = 684 + teINIndex ID = 685 + teoIndex ID = 686 + teoKEIndex ID = 687 + teoUGIndex ID = 688 + tgIndex ID = 689 + tgTJIndex ID = 690 + thIndex ID = 691 + thTHIndex ID = 692 + tiIndex ID = 693 + tiERIndex ID = 694 + tiETIndex ID = 695 + tigIndex ID = 696 + tkIndex ID = 697 + tkTMIndex ID = 698 + tlIndex ID = 699 + tnIndex ID = 700 + toIndex ID = 701 + toTOIndex ID = 702 + trIndex ID = 703 + trCYIndex ID = 704 + trTRIndex ID = 705 + tsIndex ID = 706 + ttIndex ID = 707 + ttRUIndex ID = 708 + twqIndex ID = 709 + twqNEIndex ID = 710 + tzmIndex ID = 711 + tzmMAIndex ID = 712 + ugIndex ID = 713 + ugCNIndex ID = 714 + ukIndex ID = 715 + ukUAIndex ID = 716 + urIndex ID = 717 + urINIndex ID = 718 + urPKIndex ID = 719 + uzIndex ID = 720 + uzArabIndex ID = 721 + uzArabAFIndex ID = 722 + uzCyrlIndex ID = 723 + uzCyrlUZIndex ID = 724 + uzLatnIndex ID = 725 + uzLatnUZIndex ID = 726 + vaiIndex ID = 727 + vaiLatnIndex ID = 728 + vaiLatnLRIndex ID = 729 + vaiVaiiIndex ID = 730 + vaiVaiiLRIndex ID = 731 + veIndex ID = 732 + viIndex ID = 733 + viVNIndex ID = 734 + voIndex ID = 735 + vo001Index ID = 736 + vunIndex ID = 737 + vunTZIndex ID = 738 + waIndex ID = 739 + waeIndex ID = 740 + waeCHIndex ID = 741 + woIndex ID = 742 + woSNIndex ID = 743 + xhIndex ID = 744 + xogIndex ID = 745 + xogUGIndex ID = 746 + yavIndex ID = 747 + yavCMIndex ID = 748 + yiIndex ID = 749 + yi001Index ID = 750 + yoIndex ID = 751 + yoBJIndex ID = 752 + yoNGIndex ID = 753 + yueIndex ID = 754 + yueHansIndex ID = 755 + yueHansCNIndex ID = 756 + yueHantIndex ID = 757 + yueHantHKIndex ID = 758 + zghIndex ID = 759 + zghMAIndex ID = 760 + zhIndex ID = 761 + zhHansIndex ID = 762 + zhHansCNIndex ID = 763 + zhHansHKIndex ID = 764 + zhHansMOIndex ID = 765 + zhHansSGIndex ID = 766 + zhHantIndex ID = 767 + zhHantHKIndex ID = 768 + zhHantMOIndex ID = 769 + zhHantTWIndex ID = 770 + zuIndex ID = 771 + zuZAIndex ID = 772 + caESvalenciaIndex ID = 773 + enUSuvaposixIndex ID = 774 +) + +var coreTags = []language.CompactCoreInfo{ // 773 elements + // Entry 0 - 1F + 0x00000000, 0x01600000, 0x016000d3, 0x01600162, + 0x01c00000, 0x01c00052, 0x02100000, 0x02100081, + 0x02700000, 0x02700070, 0x03a00000, 0x03a00001, + 0x03a00023, 0x03a00039, 0x03a00063, 0x03a00068, + 0x03a0006c, 0x03a0006d, 0x03a0006e, 0x03a00098, + 0x03a0009c, 0x03a000a2, 0x03a000a9, 0x03a000ad, + 0x03a000b1, 0x03a000ba, 0x03a000bb, 0x03a000ca, + 0x03a000e2, 0x03a000ee, 0x03a000f4, 0x03a00109, + // Entry 20 - 3F + 0x03a0010c, 0x03a00116, 0x03a00118, 0x03a0011d, + 0x03a00121, 0x03a00129, 0x03a0015f, 0x04000000, + 0x04300000, 0x0430009a, 0x04400000, 0x04400130, + 0x04800000, 0x0480006f, 0x05800000, 0x05820000, + 0x05820032, 0x0585b000, 0x0585b032, 0x05e00000, + 0x05e00052, 0x07100000, 0x07100047, 0x07500000, + 0x07500163, 0x07900000, 0x07900130, 0x07e00000, + 0x07e00038, 0x08200000, 0x0a000000, 0x0a0000c4, + // Entry 40 - 5F + 0x0a500000, 0x0a500035, 0x0a50009a, 0x0a900000, + 0x0a900053, 0x0a90009a, 0x0b200000, 0x0b200079, + 0x0b500000, 0x0b50009a, 0x0b700000, 0x0b720000, + 0x0b720033, 0x0b75b000, 0x0b75b033, 0x0d700000, + 0x0d700022, 0x0d70006f, 0x0d700079, 0x0d70009f, + 0x0db00000, 0x0db00035, 0x0db0009a, 0x0dc00000, + 0x0dc00107, 0x0df00000, 0x0df00132, 0x0e500000, + 0x0e500136, 0x0e900000, 0x0e90009c, 0x0e90009d, + // Entry 60 - 7F + 0x0fa00000, 0x0fa0005f, 0x0fe00000, 0x0fe00107, + 0x10000000, 0x1000007c, 0x10100000, 0x10100064, + 0x10100083, 0x10800000, 0x108000a5, 0x10d00000, + 0x10d0002e, 0x10d00036, 0x10d0004e, 0x10d00061, + 0x10d0009f, 0x10d000b3, 0x10d000b8, 0x11700000, + 0x117000d5, 0x11f00000, 0x11f00061, 0x12400000, + 0x12400052, 0x12800000, 0x12b00000, 0x12b00115, + 0x12d00000, 0x12d00043, 0x12f00000, 0x12f000a5, + // Entry 80 - 9F + 0x13000000, 0x13000081, 0x13000123, 0x13600000, + 0x1360005e, 0x13600088, 0x13900000, 0x13900001, + 0x1390001a, 0x13900025, 0x13900026, 0x1390002d, + 0x1390002e, 0x1390002f, 0x13900034, 0x13900036, + 0x1390003a, 0x1390003d, 0x13900042, 0x13900046, + 0x13900048, 0x13900049, 0x1390004a, 0x1390004e, + 0x13900050, 0x13900052, 0x1390005d, 0x1390005e, + 0x13900061, 0x13900062, 0x13900064, 0x13900065, + // Entry A0 - BF + 0x1390006e, 0x13900073, 0x13900074, 0x13900075, + 0x13900076, 0x1390007c, 0x1390007d, 0x13900080, + 0x13900081, 0x13900082, 0x13900084, 0x1390008b, + 0x1390008d, 0x1390008e, 0x13900097, 0x13900098, + 0x13900099, 0x1390009a, 0x1390009b, 0x139000a0, + 0x139000a1, 0x139000a5, 0x139000a8, 0x139000aa, + 0x139000ae, 0x139000b2, 0x139000b5, 0x139000b6, + 0x139000c0, 0x139000c1, 0x139000c7, 0x139000c8, + // Entry C0 - DF + 0x139000cb, 0x139000cc, 0x139000cd, 0x139000cf, + 0x139000d1, 0x139000d3, 0x139000d6, 0x139000d7, + 0x139000da, 0x139000de, 0x139000e0, 0x139000e1, + 0x139000e7, 0x139000e8, 0x139000e9, 0x139000ec, + 0x139000ed, 0x139000f1, 0x13900108, 0x1390010a, + 0x1390010b, 0x1390010c, 0x1390010d, 0x1390010e, + 0x1390010f, 0x13900110, 0x13900113, 0x13900118, + 0x1390011c, 0x1390011e, 0x13900120, 0x13900126, + // Entry E0 - FF + 0x1390012a, 0x1390012d, 0x1390012e, 0x13900130, + 0x13900132, 0x13900134, 0x13900136, 0x1390013a, + 0x1390013d, 0x1390013e, 0x13900140, 0x13900143, + 0x13900162, 0x13900163, 0x13900165, 0x13c00000, + 0x13c00001, 0x13e00000, 0x13e0001f, 0x13e0002c, + 0x13e0003f, 0x13e00041, 0x13e00048, 0x13e00051, + 0x13e00054, 0x13e00057, 0x13e0005a, 0x13e00066, + 0x13e00069, 0x13e0006a, 0x13e0006f, 0x13e00087, + // Entry 100 - 11F + 0x13e0008a, 0x13e00090, 0x13e00095, 0x13e000d0, + 0x13e000d9, 0x13e000e3, 0x13e000e5, 0x13e000e8, + 0x13e000ed, 0x13e000f2, 0x13e0011b, 0x13e00136, + 0x13e00137, 0x13e0013c, 0x14000000, 0x1400006b, + 0x14500000, 0x1450006f, 0x14600000, 0x14600052, + 0x14800000, 0x14800024, 0x1480009d, 0x14e00000, + 0x14e00052, 0x14e00085, 0x14e000ca, 0x14e00115, + 0x15100000, 0x15100073, 0x15300000, 0x153000e8, + // Entry 120 - 13F + 0x15800000, 0x15800064, 0x15800077, 0x15e00000, + 0x15e00036, 0x15e00037, 0x15e0003a, 0x15e0003b, + 0x15e0003c, 0x15e00049, 0x15e0004b, 0x15e0004c, + 0x15e0004d, 0x15e0004e, 0x15e0004f, 0x15e00052, + 0x15e00063, 0x15e00068, 0x15e00079, 0x15e0007b, + 0x15e0007f, 0x15e00085, 0x15e00086, 0x15e00087, + 0x15e00092, 0x15e000a9, 0x15e000b8, 0x15e000bb, + 0x15e000bc, 0x15e000bf, 0x15e000c0, 0x15e000c4, + // Entry 140 - 15F + 0x15e000c9, 0x15e000ca, 0x15e000cd, 0x15e000d4, + 0x15e000d5, 0x15e000e6, 0x15e000eb, 0x15e00103, + 0x15e00108, 0x15e0010b, 0x15e00115, 0x15e0011d, + 0x15e00121, 0x15e00123, 0x15e00129, 0x15e00140, + 0x15e00141, 0x15e00160, 0x16900000, 0x1690009f, + 0x16d00000, 0x16d000da, 0x16e00000, 0x16e00097, + 0x17e00000, 0x17e0007c, 0x19000000, 0x1900006f, + 0x1a300000, 0x1a30004e, 0x1a300079, 0x1a3000b3, + // Entry 160 - 17F + 0x1a400000, 0x1a40009a, 0x1a900000, 0x1ab00000, + 0x1ab000a5, 0x1ac00000, 0x1ac00099, 0x1b400000, + 0x1b400081, 0x1b4000d5, 0x1b4000d7, 0x1b800000, + 0x1b800136, 0x1bc00000, 0x1bc00098, 0x1be00000, + 0x1be0009a, 0x1d100000, 0x1d100033, 0x1d100091, + 0x1d200000, 0x1d200061, 0x1d500000, 0x1d500093, + 0x1d700000, 0x1d700028, 0x1e100000, 0x1e100096, + 0x1e700000, 0x1e7000d7, 0x1ea00000, 0x1ea00053, + // Entry 180 - 19F + 0x1f300000, 0x1f500000, 0x1f800000, 0x1f80009e, + 0x1f900000, 0x1f90004e, 0x1f90009f, 0x1f900114, + 0x1f900139, 0x1fa00000, 0x1fb00000, 0x20000000, + 0x200000a3, 0x20300000, 0x20700000, 0x20700052, + 0x20800000, 0x20a00000, 0x20a00130, 0x20e00000, + 0x20f00000, 0x21000000, 0x2100007e, 0x21200000, + 0x21200068, 0x21600000, 0x21700000, 0x217000a5, + 0x21f00000, 0x22300000, 0x22300130, 0x22700000, + // Entry 1A0 - 1BF + 0x2270005b, 0x23400000, 0x234000c4, 0x23900000, + 0x239000a5, 0x24200000, 0x242000af, 0x24400000, + 0x24400052, 0x24500000, 0x24500083, 0x24600000, + 0x246000a5, 0x24a00000, 0x24a000a7, 0x25100000, + 0x2510009a, 0x25400000, 0x254000ab, 0x254000ac, + 0x25600000, 0x2560009a, 0x26a00000, 0x26a0009a, + 0x26b00000, 0x26b00130, 0x26d00000, 0x26d00052, + 0x26e00000, 0x26e00061, 0x27400000, 0x28100000, + // Entry 1C0 - 1DF + 0x2810007c, 0x28a00000, 0x28a000a6, 0x29100000, + 0x29100130, 0x29500000, 0x295000b8, 0x2a300000, + 0x2a300132, 0x2af00000, 0x2af00136, 0x2b500000, + 0x2b50002a, 0x2b50004b, 0x2b50004c, 0x2b50004d, + 0x2b800000, 0x2b8000b0, 0x2bf00000, 0x2bf0009c, + 0x2bf0009d, 0x2c000000, 0x2c0000b7, 0x2c200000, + 0x2c20004b, 0x2c400000, 0x2c4000a5, 0x2c500000, + 0x2c5000a5, 0x2c700000, 0x2c7000b9, 0x2d100000, + // Entry 1E0 - 1FF + 0x2d1000a5, 0x2d100130, 0x2e900000, 0x2e9000a5, + 0x2ed00000, 0x2ed000cd, 0x2f100000, 0x2f1000c0, + 0x2f200000, 0x2f2000d2, 0x2f400000, 0x2f400052, + 0x2ff00000, 0x2ff000c3, 0x30400000, 0x3040009a, + 0x30b00000, 0x30b000c6, 0x31000000, 0x31b00000, + 0x31b0009a, 0x31f00000, 0x31f0003e, 0x31f000d1, + 0x31f0010e, 0x32000000, 0x320000cc, 0x32500000, + 0x32500052, 0x33100000, 0x331000c5, 0x33a00000, + // Entry 200 - 21F + 0x33a0009d, 0x34100000, 0x34500000, 0x345000d3, + 0x34700000, 0x347000db, 0x34700111, 0x34e00000, + 0x34e00165, 0x35000000, 0x35000061, 0x350000da, + 0x35100000, 0x3510009a, 0x351000dc, 0x36700000, + 0x36700030, 0x36700036, 0x36700040, 0x3670005c, + 0x367000da, 0x36700117, 0x3670011c, 0x36800000, + 0x36800052, 0x36a00000, 0x36a000db, 0x36c00000, + 0x36c00052, 0x36f00000, 0x37500000, 0x37600000, + // Entry 220 - 23F + 0x37a00000, 0x38000000, 0x38000118, 0x38700000, + 0x38900000, 0x38900132, 0x39000000, 0x39000070, + 0x390000a5, 0x39500000, 0x3950009a, 0x39800000, + 0x3980007e, 0x39800107, 0x39d00000, 0x39d05000, + 0x39d050e9, 0x39d36000, 0x39d3609a, 0x3a100000, + 0x3b300000, 0x3b3000ea, 0x3bd00000, 0x3bd00001, + 0x3be00000, 0x3be00024, 0x3c000000, 0x3c00002a, + 0x3c000041, 0x3c00004e, 0x3c00005b, 0x3c000087, + // Entry 240 - 25F + 0x3c00008c, 0x3c0000b8, 0x3c0000c7, 0x3c0000d2, + 0x3c0000ef, 0x3c000119, 0x3c000127, 0x3c400000, + 0x3c40003f, 0x3c40006a, 0x3c4000e5, 0x3d400000, + 0x3d40004e, 0x3d900000, 0x3d90003a, 0x3dc00000, + 0x3dc000bd, 0x3dc00105, 0x3de00000, 0x3de00130, + 0x3e200000, 0x3e200047, 0x3e2000a6, 0x3e2000af, + 0x3e2000bd, 0x3e200107, 0x3e200131, 0x3e500000, + 0x3e500108, 0x3e600000, 0x3e600130, 0x3eb00000, + // Entry 260 - 27F + 0x3eb00107, 0x3ec00000, 0x3ec000a5, 0x3f300000, + 0x3f300130, 0x3fa00000, 0x3fa000e9, 0x3fc00000, + 0x3fd00000, 0x3fd00073, 0x3fd000db, 0x3fd0010d, + 0x3ff00000, 0x3ff000d2, 0x40100000, 0x401000c4, + 0x40200000, 0x4020004c, 0x40700000, 0x40800000, + 0x4085b000, 0x4085b0bb, 0x408eb000, 0x408eb0bb, + 0x40c00000, 0x40c000b4, 0x41200000, 0x41200112, + 0x41600000, 0x41600110, 0x41c00000, 0x41d00000, + // Entry 280 - 29F + 0x41e00000, 0x41f00000, 0x41f00073, 0x42200000, + 0x42300000, 0x42300165, 0x42900000, 0x42900063, + 0x42900070, 0x429000a5, 0x42900116, 0x43100000, + 0x43100027, 0x431000c3, 0x4310014e, 0x43200000, + 0x43220000, 0x43220033, 0x432200be, 0x43220106, + 0x4322014e, 0x4325b000, 0x4325b033, 0x4325b0be, + 0x4325b106, 0x4325b14e, 0x43700000, 0x43a00000, + 0x43b00000, 0x44400000, 0x44400031, 0x44400073, + // Entry 2A0 - 2BF + 0x4440010d, 0x44500000, 0x4450004b, 0x445000a5, + 0x44500130, 0x44500132, 0x44e00000, 0x45000000, + 0x4500009a, 0x450000b4, 0x450000d1, 0x4500010e, + 0x46100000, 0x4610009a, 0x46400000, 0x464000a5, + 0x46400132, 0x46700000, 0x46700125, 0x46b00000, + 0x46b00124, 0x46f00000, 0x46f0006e, 0x46f00070, + 0x47100000, 0x47600000, 0x47600128, 0x47a00000, + 0x48000000, 0x48200000, 0x4820012a, 0x48a00000, + // Entry 2C0 - 2DF + 0x48a0005e, 0x48a0012c, 0x48e00000, 0x49400000, + 0x49400107, 0x4a400000, 0x4a4000d5, 0x4a900000, + 0x4a9000bb, 0x4ac00000, 0x4ac00053, 0x4ae00000, + 0x4ae00131, 0x4b400000, 0x4b40009a, 0x4b4000e9, + 0x4bc00000, 0x4bc05000, 0x4bc05024, 0x4bc20000, + 0x4bc20138, 0x4bc5b000, 0x4bc5b138, 0x4be00000, + 0x4be5b000, 0x4be5b0b5, 0x4bef4000, 0x4bef40b5, + 0x4c000000, 0x4c300000, 0x4c30013f, 0x4c900000, + // Entry 2E0 - 2FF + 0x4c900001, 0x4cc00000, 0x4cc00130, 0x4ce00000, + 0x4cf00000, 0x4cf0004e, 0x4e500000, 0x4e500115, + 0x4f200000, 0x4fb00000, 0x4fb00132, 0x50900000, + 0x50900052, 0x51200000, 0x51200001, 0x51800000, + 0x5180003b, 0x518000d7, 0x51f00000, 0x51f3b000, + 0x51f3b053, 0x51f3c000, 0x51f3c08e, 0x52800000, + 0x528000bb, 0x52900000, 0x5293b000, 0x5293b053, + 0x5293b08e, 0x5293b0c7, 0x5293b10e, 0x5293c000, + // Entry 300 - 31F + 0x5293c08e, 0x5293c0c7, 0x5293c12f, 0x52f00000, + 0x52f00162, +} // Size: 3116 bytes + +const specialTagsStr string = "ca-ES-valencia en-US-u-va-posix" + +// Total table size 3147 bytes (3KiB); checksum: 5A8FFFA5 diff --git a/tests/vendor/golang.org/x/text/internal/language/compact/tags.go b/tests/vendor/golang.org/x/text/internal/language/compact/tags.go new file mode 100644 index 000000000..ca135d295 --- /dev/null +++ b/tests/vendor/golang.org/x/text/internal/language/compact/tags.go @@ -0,0 +1,91 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package compact + +var ( + und = Tag{} + + Und Tag = Tag{} + + Afrikaans Tag = Tag{language: afIndex, locale: afIndex} + Amharic Tag = Tag{language: amIndex, locale: amIndex} + Arabic Tag = Tag{language: arIndex, locale: arIndex} + ModernStandardArabic Tag = Tag{language: ar001Index, locale: ar001Index} + Azerbaijani Tag = Tag{language: azIndex, locale: azIndex} + Bulgarian Tag = Tag{language: bgIndex, locale: bgIndex} + Bengali Tag = Tag{language: bnIndex, locale: bnIndex} + Catalan Tag = Tag{language: caIndex, locale: caIndex} + Czech Tag = Tag{language: csIndex, locale: csIndex} + Danish Tag = Tag{language: daIndex, locale: daIndex} + German Tag = Tag{language: deIndex, locale: deIndex} + Greek Tag = Tag{language: elIndex, locale: elIndex} + English Tag = Tag{language: enIndex, locale: enIndex} + AmericanEnglish Tag = Tag{language: enUSIndex, locale: enUSIndex} + BritishEnglish Tag = Tag{language: enGBIndex, locale: enGBIndex} + Spanish Tag = Tag{language: esIndex, locale: esIndex} + EuropeanSpanish Tag = Tag{language: esESIndex, locale: esESIndex} + LatinAmericanSpanish Tag = Tag{language: es419Index, locale: es419Index} + Estonian Tag = Tag{language: etIndex, locale: etIndex} + Persian Tag = Tag{language: faIndex, locale: faIndex} + Finnish Tag = Tag{language: fiIndex, locale: fiIndex} + Filipino Tag = Tag{language: filIndex, locale: filIndex} + French Tag = Tag{language: frIndex, locale: frIndex} + CanadianFrench Tag = Tag{language: frCAIndex, locale: frCAIndex} + Gujarati Tag = Tag{language: guIndex, locale: guIndex} + Hebrew Tag = Tag{language: heIndex, locale: heIndex} + Hindi Tag = Tag{language: hiIndex, locale: hiIndex} + Croatian Tag = Tag{language: hrIndex, locale: hrIndex} + Hungarian Tag = Tag{language: huIndex, locale: huIndex} + Armenian Tag = Tag{language: hyIndex, locale: hyIndex} + Indonesian Tag = Tag{language: idIndex, locale: idIndex} + Icelandic Tag = Tag{language: isIndex, locale: isIndex} + Italian Tag = Tag{language: itIndex, locale: itIndex} + Japanese Tag = Tag{language: jaIndex, locale: jaIndex} + Georgian Tag = Tag{language: kaIndex, locale: kaIndex} + Kazakh Tag = Tag{language: kkIndex, locale: kkIndex} + Khmer Tag = Tag{language: kmIndex, locale: kmIndex} + Kannada Tag = Tag{language: knIndex, locale: knIndex} + Korean Tag = Tag{language: koIndex, locale: koIndex} + Kirghiz Tag = Tag{language: kyIndex, locale: kyIndex} + Lao Tag = Tag{language: loIndex, locale: loIndex} + Lithuanian Tag = Tag{language: ltIndex, locale: ltIndex} + Latvian Tag = Tag{language: lvIndex, locale: lvIndex} + Macedonian Tag = Tag{language: mkIndex, locale: mkIndex} + Malayalam Tag = Tag{language: mlIndex, locale: mlIndex} + Mongolian Tag = Tag{language: mnIndex, locale: mnIndex} + Marathi Tag = Tag{language: mrIndex, locale: mrIndex} + Malay Tag = Tag{language: msIndex, locale: msIndex} + Burmese Tag = Tag{language: myIndex, locale: myIndex} + Nepali Tag = Tag{language: neIndex, locale: neIndex} + Dutch Tag = Tag{language: nlIndex, locale: nlIndex} + Norwegian Tag = Tag{language: noIndex, locale: noIndex} + Punjabi Tag = Tag{language: paIndex, locale: paIndex} + Polish Tag = Tag{language: plIndex, locale: plIndex} + Portuguese Tag = Tag{language: ptIndex, locale: ptIndex} + BrazilianPortuguese Tag = Tag{language: ptBRIndex, locale: ptBRIndex} + EuropeanPortuguese Tag = Tag{language: ptPTIndex, locale: ptPTIndex} + Romanian Tag = Tag{language: roIndex, locale: roIndex} + Russian Tag = Tag{language: ruIndex, locale: ruIndex} + Sinhala Tag = Tag{language: siIndex, locale: siIndex} + Slovak Tag = Tag{language: skIndex, locale: skIndex} + Slovenian Tag = Tag{language: slIndex, locale: slIndex} + Albanian Tag = Tag{language: sqIndex, locale: sqIndex} + Serbian Tag = Tag{language: srIndex, locale: srIndex} + SerbianLatin Tag = Tag{language: srLatnIndex, locale: srLatnIndex} + Swedish Tag = Tag{language: svIndex, locale: svIndex} + Swahili Tag = Tag{language: swIndex, locale: swIndex} + Tamil Tag = Tag{language: taIndex, locale: taIndex} + Telugu Tag = Tag{language: teIndex, locale: teIndex} + Thai Tag = Tag{language: thIndex, locale: thIndex} + Turkish Tag = Tag{language: trIndex, locale: trIndex} + Ukrainian Tag = Tag{language: ukIndex, locale: ukIndex} + Urdu Tag = Tag{language: urIndex, locale: urIndex} + Uzbek Tag = Tag{language: uzIndex, locale: uzIndex} + Vietnamese Tag = Tag{language: viIndex, locale: viIndex} + Chinese Tag = Tag{language: zhIndex, locale: zhIndex} + SimplifiedChinese Tag = Tag{language: zhHansIndex, locale: zhHansIndex} + TraditionalChinese Tag = Tag{language: zhHantIndex, locale: zhHantIndex} + Zulu Tag = Tag{language: zuIndex, locale: zuIndex} +) diff --git a/tests/vendor/golang.org/x/text/internal/language/compose.go b/tests/vendor/golang.org/x/text/internal/language/compose.go new file mode 100644 index 000000000..4ae78e0fa --- /dev/null +++ b/tests/vendor/golang.org/x/text/internal/language/compose.go @@ -0,0 +1,167 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package language + +import ( + "sort" + "strings" +) + +// A Builder allows constructing a Tag from individual components. +// Its main user is Compose in the top-level language package. +type Builder struct { + Tag Tag + + private string // the x extension + variants []string + extensions []string +} + +// Make returns a new Tag from the current settings. +func (b *Builder) Make() Tag { + t := b.Tag + + if len(b.extensions) > 0 || len(b.variants) > 0 { + sort.Sort(sortVariants(b.variants)) + sort.Strings(b.extensions) + + if b.private != "" { + b.extensions = append(b.extensions, b.private) + } + n := maxCoreSize + tokenLen(b.variants...) + tokenLen(b.extensions...) + buf := make([]byte, n) + p := t.genCoreBytes(buf) + t.pVariant = byte(p) + p += appendTokens(buf[p:], b.variants...) + t.pExt = uint16(p) + p += appendTokens(buf[p:], b.extensions...) + t.str = string(buf[:p]) + // We may not always need to remake the string, but when or when not + // to do so is rather tricky. + scan := makeScanner(buf[:p]) + t, _ = parse(&scan, "") + return t + + } else if b.private != "" { + t.str = b.private + t.RemakeString() + } + return t +} + +// SetTag copies all the settings from a given Tag. Any previously set values +// are discarded. +func (b *Builder) SetTag(t Tag) { + b.Tag.LangID = t.LangID + b.Tag.RegionID = t.RegionID + b.Tag.ScriptID = t.ScriptID + // TODO: optimize + b.variants = b.variants[:0] + if variants := t.Variants(); variants != "" { + for _, vr := range strings.Split(variants[1:], "-") { + b.variants = append(b.variants, vr) + } + } + b.extensions, b.private = b.extensions[:0], "" + for _, e := range t.Extensions() { + b.AddExt(e) + } +} + +// AddExt adds extension e to the tag. e must be a valid extension as returned +// by Tag.Extension. If the extension already exists, it will be discarded, +// except for a -u extension, where non-existing key-type pairs will added. +func (b *Builder) AddExt(e string) { + if e[0] == 'x' { + if b.private == "" { + b.private = e + } + return + } + for i, s := range b.extensions { + if s[0] == e[0] { + if e[0] == 'u' { + b.extensions[i] += e[1:] + } + return + } + } + b.extensions = append(b.extensions, e) +} + +// SetExt sets the extension e to the tag. e must be a valid extension as +// returned by Tag.Extension. If the extension already exists, it will be +// overwritten, except for a -u extension, where the individual key-type pairs +// will be set. +func (b *Builder) SetExt(e string) { + if e[0] == 'x' { + b.private = e + return + } + for i, s := range b.extensions { + if s[0] == e[0] { + if e[0] == 'u' { + b.extensions[i] = e + s[1:] + } else { + b.extensions[i] = e + } + return + } + } + b.extensions = append(b.extensions, e) +} + +// AddVariant adds any number of variants. +func (b *Builder) AddVariant(v ...string) { + for _, v := range v { + if v != "" { + b.variants = append(b.variants, v) + } + } +} + +// ClearVariants removes any variants previously added, including those +// copied from a Tag in SetTag. +func (b *Builder) ClearVariants() { + b.variants = b.variants[:0] +} + +// ClearExtensions removes any extensions previously added, including those +// copied from a Tag in SetTag. +func (b *Builder) ClearExtensions() { + b.private = "" + b.extensions = b.extensions[:0] +} + +func tokenLen(token ...string) (n int) { + for _, t := range token { + n += len(t) + 1 + } + return +} + +func appendTokens(b []byte, token ...string) int { + p := 0 + for _, t := range token { + b[p] = '-' + copy(b[p+1:], t) + p += 1 + len(t) + } + return p +} + +type sortVariants []string + +func (s sortVariants) Len() int { + return len(s) +} + +func (s sortVariants) Swap(i, j int) { + s[j], s[i] = s[i], s[j] +} + +func (s sortVariants) Less(i, j int) bool { + return variantIndex[s[i]] < variantIndex[s[j]] +} diff --git a/tests/vendor/golang.org/x/text/internal/language/coverage.go b/tests/vendor/golang.org/x/text/internal/language/coverage.go new file mode 100644 index 000000000..9b20b88fe --- /dev/null +++ b/tests/vendor/golang.org/x/text/internal/language/coverage.go @@ -0,0 +1,28 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package language + +// BaseLanguages returns the list of all supported base languages. It generates +// the list by traversing the internal structures. +func BaseLanguages() []Language { + base := make([]Language, 0, NumLanguages) + for i := 0; i < langNoIndexOffset; i++ { + // We included "und" already for the value 0. + if i != nonCanonicalUnd { + base = append(base, Language(i)) + } + } + i := langNoIndexOffset + for _, v := range langNoIndex { + for k := 0; k < 8; k++ { + if v&1 == 1 { + base = append(base, Language(i)) + } + v >>= 1 + i++ + } + } + return base +} diff --git a/tests/vendor/golang.org/x/text/internal/language/language.go b/tests/vendor/golang.org/x/text/internal/language/language.go new file mode 100644 index 000000000..09d41c736 --- /dev/null +++ b/tests/vendor/golang.org/x/text/internal/language/language.go @@ -0,0 +1,627 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:generate go run gen.go gen_common.go -output tables.go + +package language // import "golang.org/x/text/internal/language" + +// TODO: Remove above NOTE after: +// - verifying that tables are dropped correctly (most notably matcher tables). + +import ( + "errors" + "fmt" + "strings" +) + +const ( + // maxCoreSize is the maximum size of a BCP 47 tag without variants and + // extensions. Equals max lang (3) + script (4) + max reg (3) + 2 dashes. + maxCoreSize = 12 + + // max99thPercentileSize is a somewhat arbitrary buffer size that presumably + // is large enough to hold at least 99% of the BCP 47 tags. + max99thPercentileSize = 32 + + // maxSimpleUExtensionSize is the maximum size of a -u extension with one + // key-type pair. Equals len("-u-") + key (2) + dash + max value (8). + maxSimpleUExtensionSize = 14 +) + +// Tag represents a BCP 47 language tag. It is used to specify an instance of a +// specific language or locale. All language tag values are guaranteed to be +// well-formed. The zero value of Tag is Und. +type Tag struct { + // TODO: the following fields have the form TagTypeID. This name is chosen + // to allow refactoring the public package without conflicting with its + // Base, Script, and Region methods. Once the transition is fully completed + // the ID can be stripped from the name. + + LangID Language + RegionID Region + // TODO: we will soon run out of positions for ScriptID. Idea: instead of + // storing lang, region, and ScriptID codes, store only the compact index and + // have a lookup table from this code to its expansion. This greatly speeds + // up table lookup, speed up common variant cases. + // This will also immediately free up 3 extra bytes. Also, the pVariant + // field can now be moved to the lookup table, as the compact index uniquely + // determines the offset of a possible variant. + ScriptID Script + pVariant byte // offset in str, includes preceding '-' + pExt uint16 // offset of first extension, includes preceding '-' + + // str is the string representation of the Tag. It will only be used if the + // tag has variants or extensions. + str string +} + +// Make is a convenience wrapper for Parse that omits the error. +// In case of an error, a sensible default is returned. +func Make(s string) Tag { + t, _ := Parse(s) + return t +} + +// Raw returns the raw base language, script and region, without making an +// attempt to infer their values. +// TODO: consider removing +func (t Tag) Raw() (b Language, s Script, r Region) { + return t.LangID, t.ScriptID, t.RegionID +} + +// equalTags compares language, script and region subtags only. +func (t Tag) equalTags(a Tag) bool { + return t.LangID == a.LangID && t.ScriptID == a.ScriptID && t.RegionID == a.RegionID +} + +// IsRoot returns true if t is equal to language "und". +func (t Tag) IsRoot() bool { + if int(t.pVariant) < len(t.str) { + return false + } + return t.equalTags(Und) +} + +// IsPrivateUse reports whether the Tag consists solely of an IsPrivateUse use +// tag. +func (t Tag) IsPrivateUse() bool { + return t.str != "" && t.pVariant == 0 +} + +// RemakeString is used to update t.str in case lang, script or region changed. +// It is assumed that pExt and pVariant still point to the start of the +// respective parts. +func (t *Tag) RemakeString() { + if t.str == "" { + return + } + extra := t.str[t.pVariant:] + if t.pVariant > 0 { + extra = extra[1:] + } + if t.equalTags(Und) && strings.HasPrefix(extra, "x-") { + t.str = extra + t.pVariant = 0 + t.pExt = 0 + return + } + var buf [max99thPercentileSize]byte // avoid extra memory allocation in most cases. + b := buf[:t.genCoreBytes(buf[:])] + if extra != "" { + diff := len(b) - int(t.pVariant) + b = append(b, '-') + b = append(b, extra...) + t.pVariant = uint8(int(t.pVariant) + diff) + t.pExt = uint16(int(t.pExt) + diff) + } else { + t.pVariant = uint8(len(b)) + t.pExt = uint16(len(b)) + } + t.str = string(b) +} + +// genCoreBytes writes a string for the base languages, script and region tags +// to the given buffer and returns the number of bytes written. It will never +// write more than maxCoreSize bytes. +func (t *Tag) genCoreBytes(buf []byte) int { + n := t.LangID.StringToBuf(buf[:]) + if t.ScriptID != 0 { + n += copy(buf[n:], "-") + n += copy(buf[n:], t.ScriptID.String()) + } + if t.RegionID != 0 { + n += copy(buf[n:], "-") + n += copy(buf[n:], t.RegionID.String()) + } + return n +} + +// String returns the canonical string representation of the language tag. +func (t Tag) String() string { + if t.str != "" { + return t.str + } + if t.ScriptID == 0 && t.RegionID == 0 { + return t.LangID.String() + } + buf := [maxCoreSize]byte{} + return string(buf[:t.genCoreBytes(buf[:])]) +} + +// MarshalText implements encoding.TextMarshaler. +func (t Tag) MarshalText() (text []byte, err error) { + if t.str != "" { + text = append(text, t.str...) + } else if t.ScriptID == 0 && t.RegionID == 0 { + text = append(text, t.LangID.String()...) + } else { + buf := [maxCoreSize]byte{} + text = buf[:t.genCoreBytes(buf[:])] + } + return text, nil +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (t *Tag) UnmarshalText(text []byte) error { + tag, err := Parse(string(text)) + *t = tag + return err +} + +// Variants returns the part of the tag holding all variants or the empty string +// if there are no variants defined. +func (t Tag) Variants() string { + if t.pVariant == 0 { + return "" + } + return t.str[t.pVariant:t.pExt] +} + +// VariantOrPrivateUseTags returns variants or private use tags. +func (t Tag) VariantOrPrivateUseTags() string { + if t.pExt > 0 { + return t.str[t.pVariant:t.pExt] + } + return t.str[t.pVariant:] +} + +// HasString reports whether this tag defines more than just the raw +// components. +func (t Tag) HasString() bool { + return t.str != "" +} + +// Parent returns the CLDR parent of t. In CLDR, missing fields in data for a +// specific language are substituted with fields from the parent language. +// The parent for a language may change for newer versions of CLDR. +func (t Tag) Parent() Tag { + if t.str != "" { + // Strip the variants and extensions. + b, s, r := t.Raw() + t = Tag{LangID: b, ScriptID: s, RegionID: r} + if t.RegionID == 0 && t.ScriptID != 0 && t.LangID != 0 { + base, _ := addTags(Tag{LangID: t.LangID}) + if base.ScriptID == t.ScriptID { + return Tag{LangID: t.LangID} + } + } + return t + } + if t.LangID != 0 { + if t.RegionID != 0 { + maxScript := t.ScriptID + if maxScript == 0 { + max, _ := addTags(t) + maxScript = max.ScriptID + } + + for i := range parents { + if Language(parents[i].lang) == t.LangID && Script(parents[i].maxScript) == maxScript { + for _, r := range parents[i].fromRegion { + if Region(r) == t.RegionID { + return Tag{ + LangID: t.LangID, + ScriptID: Script(parents[i].script), + RegionID: Region(parents[i].toRegion), + } + } + } + } + } + + // Strip the script if it is the default one. + base, _ := addTags(Tag{LangID: t.LangID}) + if base.ScriptID != maxScript { + return Tag{LangID: t.LangID, ScriptID: maxScript} + } + return Tag{LangID: t.LangID} + } else if t.ScriptID != 0 { + // The parent for an base-script pair with a non-default script is + // "und" instead of the base language. + base, _ := addTags(Tag{LangID: t.LangID}) + if base.ScriptID != t.ScriptID { + return Und + } + return Tag{LangID: t.LangID} + } + } + return Und +} + +// ParseExtension parses s as an extension and returns it on success. +func ParseExtension(s string) (ext string, err error) { + defer func() { + if recover() != nil { + ext = "" + err = ErrSyntax + } + }() + + scan := makeScannerString(s) + var end int + if n := len(scan.token); n != 1 { + return "", ErrSyntax + } + scan.toLower(0, len(scan.b)) + end = parseExtension(&scan) + if end != len(s) { + return "", ErrSyntax + } + return string(scan.b), nil +} + +// HasVariants reports whether t has variants. +func (t Tag) HasVariants() bool { + return uint16(t.pVariant) < t.pExt +} + +// HasExtensions reports whether t has extensions. +func (t Tag) HasExtensions() bool { + return int(t.pExt) < len(t.str) +} + +// Extension returns the extension of type x for tag t. It will return +// false for ok if t does not have the requested extension. The returned +// extension will be invalid in this case. +func (t Tag) Extension(x byte) (ext string, ok bool) { + for i := int(t.pExt); i < len(t.str)-1; { + var ext string + i, ext = getExtension(t.str, i) + if ext[0] == x { + return ext, true + } + } + return "", false +} + +// Extensions returns all extensions of t. +func (t Tag) Extensions() []string { + e := []string{} + for i := int(t.pExt); i < len(t.str)-1; { + var ext string + i, ext = getExtension(t.str, i) + e = append(e, ext) + } + return e +} + +// TypeForKey returns the type associated with the given key, where key and type +// are of the allowed values defined for the Unicode locale extension ('u') in +// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers. +// TypeForKey will traverse the inheritance chain to get the correct value. +// +// If there are multiple types associated with a key, only the first will be +// returned. If there is no type associated with a key, it returns the empty +// string. +func (t Tag) TypeForKey(key string) string { + if _, start, end, _ := t.findTypeForKey(key); end != start { + s := t.str[start:end] + if p := strings.IndexByte(s, '-'); p >= 0 { + s = s[:p] + } + return s + } + return "" +} + +var ( + errPrivateUse = errors.New("cannot set a key on a private use tag") + errInvalidArguments = errors.New("invalid key or type") +) + +// SetTypeForKey returns a new Tag with the key set to type, where key and type +// are of the allowed values defined for the Unicode locale extension ('u') in +// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers. +// An empty value removes an existing pair with the same key. +func (t Tag) SetTypeForKey(key, value string) (Tag, error) { + if t.IsPrivateUse() { + return t, errPrivateUse + } + if len(key) != 2 { + return t, errInvalidArguments + } + + // Remove the setting if value is "". + if value == "" { + start, sep, end, _ := t.findTypeForKey(key) + if start != sep { + // Remove a possible empty extension. + switch { + case t.str[start-2] != '-': // has previous elements. + case end == len(t.str), // end of string + end+2 < len(t.str) && t.str[end+2] == '-': // end of extension + start -= 2 + } + if start == int(t.pVariant) && end == len(t.str) { + t.str = "" + t.pVariant, t.pExt = 0, 0 + } else { + t.str = fmt.Sprintf("%s%s", t.str[:start], t.str[end:]) + } + } + return t, nil + } + + if len(value) < 3 || len(value) > 8 { + return t, errInvalidArguments + } + + var ( + buf [maxCoreSize + maxSimpleUExtensionSize]byte + uStart int // start of the -u extension. + ) + + // Generate the tag string if needed. + if t.str == "" { + uStart = t.genCoreBytes(buf[:]) + buf[uStart] = '-' + uStart++ + } + + // Create new key-type pair and parse it to verify. + b := buf[uStart:] + copy(b, "u-") + copy(b[2:], key) + b[4] = '-' + b = b[:5+copy(b[5:], value)] + scan := makeScanner(b) + if parseExtensions(&scan); scan.err != nil { + return t, scan.err + } + + // Assemble the replacement string. + if t.str == "" { + t.pVariant, t.pExt = byte(uStart-1), uint16(uStart-1) + t.str = string(buf[:uStart+len(b)]) + } else { + s := t.str + start, sep, end, hasExt := t.findTypeForKey(key) + if start == sep { + if hasExt { + b = b[2:] + } + t.str = fmt.Sprintf("%s-%s%s", s[:sep], b, s[end:]) + } else { + t.str = fmt.Sprintf("%s-%s%s", s[:start+3], value, s[end:]) + } + } + return t, nil +} + +// findTypeForKey returns the start and end position for the type corresponding +// to key or the point at which to insert the key-value pair if the type +// wasn't found. The hasExt return value reports whether an -u extension was present. +// Note: the extensions are typically very small and are likely to contain +// only one key-type pair. +func (t Tag) findTypeForKey(key string) (start, sep, end int, hasExt bool) { + p := int(t.pExt) + if len(key) != 2 || p == len(t.str) || p == 0 { + return p, p, p, false + } + s := t.str + + // Find the correct extension. + for p++; s[p] != 'u'; p++ { + if s[p] > 'u' { + p-- + return p, p, p, false + } + if p = nextExtension(s, p); p == len(s) { + return len(s), len(s), len(s), false + } + } + // Proceed to the hyphen following the extension name. + p++ + + // curKey is the key currently being processed. + curKey := "" + + // Iterate over keys until we get the end of a section. + for { + end = p + for p++; p < len(s) && s[p] != '-'; p++ { + } + n := p - end - 1 + if n <= 2 && curKey == key { + if sep < end { + sep++ + } + return start, sep, end, true + } + switch n { + case 0, // invalid string + 1: // next extension + return end, end, end, true + case 2: + // next key + curKey = s[end+1 : p] + if curKey > key { + return end, end, end, true + } + start = end + sep = p + } + } +} + +// ParseBase parses a 2- or 3-letter ISO 639 code. +// It returns a ValueError if s is a well-formed but unknown language identifier +// or another error if another error occurred. +func ParseBase(s string) (l Language, err error) { + defer func() { + if recover() != nil { + l = 0 + err = ErrSyntax + } + }() + + if n := len(s); n < 2 || 3 < n { + return 0, ErrSyntax + } + var buf [3]byte + return getLangID(buf[:copy(buf[:], s)]) +} + +// ParseScript parses a 4-letter ISO 15924 code. +// It returns a ValueError if s is a well-formed but unknown script identifier +// or another error if another error occurred. +func ParseScript(s string) (scr Script, err error) { + defer func() { + if recover() != nil { + scr = 0 + err = ErrSyntax + } + }() + + if len(s) != 4 { + return 0, ErrSyntax + } + var buf [4]byte + return getScriptID(script, buf[:copy(buf[:], s)]) +} + +// EncodeM49 returns the Region for the given UN M.49 code. +// It returns an error if r is not a valid code. +func EncodeM49(r int) (Region, error) { + return getRegionM49(r) +} + +// ParseRegion parses a 2- or 3-letter ISO 3166-1 or a UN M.49 code. +// It returns a ValueError if s is a well-formed but unknown region identifier +// or another error if another error occurred. +func ParseRegion(s string) (r Region, err error) { + defer func() { + if recover() != nil { + r = 0 + err = ErrSyntax + } + }() + + if n := len(s); n < 2 || 3 < n { + return 0, ErrSyntax + } + var buf [3]byte + return getRegionID(buf[:copy(buf[:], s)]) +} + +// IsCountry returns whether this region is a country or autonomous area. This +// includes non-standard definitions from CLDR. +func (r Region) IsCountry() bool { + if r == 0 || r.IsGroup() || r.IsPrivateUse() && r != _XK { + return false + } + return true +} + +// IsGroup returns whether this region defines a collection of regions. This +// includes non-standard definitions from CLDR. +func (r Region) IsGroup() bool { + if r == 0 { + return false + } + return int(regionInclusion[r]) < len(regionContainment) +} + +// Contains returns whether Region c is contained by Region r. It returns true +// if c == r. +func (r Region) Contains(c Region) bool { + if r == c { + return true + } + g := regionInclusion[r] + if g >= nRegionGroups { + return false + } + m := regionContainment[g] + + d := regionInclusion[c] + b := regionInclusionBits[d] + + // A contained country may belong to multiple disjoint groups. Matching any + // of these indicates containment. If the contained region is a group, it + // must strictly be a subset. + if d >= nRegionGroups { + return b&m != 0 + } + return b&^m == 0 +} + +var errNoTLD = errors.New("language: region is not a valid ccTLD") + +// TLD returns the country code top-level domain (ccTLD). UK is returned for GB. +// In all other cases it returns either the region itself or an error. +// +// This method may return an error for a region for which there exists a +// canonical form with a ccTLD. To get that ccTLD canonicalize r first. The +// region will already be canonicalized it was obtained from a Tag that was +// obtained using any of the default methods. +func (r Region) TLD() (Region, error) { + // See http://en.wikipedia.org/wiki/Country_code_top-level_domain for the + // difference between ISO 3166-1 and IANA ccTLD. + if r == _GB { + r = _UK + } + if (r.typ() & ccTLD) == 0 { + return 0, errNoTLD + } + return r, nil +} + +// Canonicalize returns the region or a possible replacement if the region is +// deprecated. It will not return a replacement for deprecated regions that +// are split into multiple regions. +func (r Region) Canonicalize() Region { + if cr := normRegion(r); cr != 0 { + return cr + } + return r +} + +// Variant represents a registered variant of a language as defined by BCP 47. +type Variant struct { + ID uint8 + str string +} + +// ParseVariant parses and returns a Variant. An error is returned if s is not +// a valid variant. +func ParseVariant(s string) (v Variant, err error) { + defer func() { + if recover() != nil { + v = Variant{} + err = ErrSyntax + } + }() + + s = strings.ToLower(s) + if id, ok := variantIndex[s]; ok { + return Variant{id, s}, nil + } + return Variant{}, NewValueError([]byte(s)) +} + +// String returns the string representation of the variant. +func (v Variant) String() string { + return v.str +} diff --git a/tests/vendor/golang.org/x/text/internal/language/lookup.go b/tests/vendor/golang.org/x/text/internal/language/lookup.go new file mode 100644 index 000000000..231b4fbde --- /dev/null +++ b/tests/vendor/golang.org/x/text/internal/language/lookup.go @@ -0,0 +1,412 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package language + +import ( + "bytes" + "fmt" + "sort" + "strconv" + + "golang.org/x/text/internal/tag" +) + +// findIndex tries to find the given tag in idx and returns a standardized error +// if it could not be found. +func findIndex(idx tag.Index, key []byte, form string) (index int, err error) { + if !tag.FixCase(form, key) { + return 0, ErrSyntax + } + i := idx.Index(key) + if i == -1 { + return 0, NewValueError(key) + } + return i, nil +} + +func searchUint(imap []uint16, key uint16) int { + return sort.Search(len(imap), func(i int) bool { + return imap[i] >= key + }) +} + +type Language uint16 + +// getLangID returns the langID of s if s is a canonical subtag +// or langUnknown if s is not a canonical subtag. +func getLangID(s []byte) (Language, error) { + if len(s) == 2 { + return getLangISO2(s) + } + return getLangISO3(s) +} + +// TODO language normalization as well as the AliasMaps could be moved to the +// higher level package, but it is a bit tricky to separate the generation. + +func (id Language) Canonicalize() (Language, AliasType) { + return normLang(id) +} + +// normLang returns the mapped langID of id according to mapping m. +func normLang(id Language) (Language, AliasType) { + k := sort.Search(len(AliasMap), func(i int) bool { + return AliasMap[i].From >= uint16(id) + }) + if k < len(AliasMap) && AliasMap[k].From == uint16(id) { + return Language(AliasMap[k].To), AliasTypes[k] + } + return id, AliasTypeUnknown +} + +// getLangISO2 returns the langID for the given 2-letter ISO language code +// or unknownLang if this does not exist. +func getLangISO2(s []byte) (Language, error) { + if !tag.FixCase("zz", s) { + return 0, ErrSyntax + } + if i := lang.Index(s); i != -1 && lang.Elem(i)[3] != 0 { + return Language(i), nil + } + return 0, NewValueError(s) +} + +const base = 'z' - 'a' + 1 + +func strToInt(s []byte) uint { + v := uint(0) + for i := 0; i < len(s); i++ { + v *= base + v += uint(s[i] - 'a') + } + return v +} + +// converts the given integer to the original ASCII string passed to strToInt. +// len(s) must match the number of characters obtained. +func intToStr(v uint, s []byte) { + for i := len(s) - 1; i >= 0; i-- { + s[i] = byte(v%base) + 'a' + v /= base + } +} + +// getLangISO3 returns the langID for the given 3-letter ISO language code +// or unknownLang if this does not exist. +func getLangISO3(s []byte) (Language, error) { + if tag.FixCase("und", s) { + // first try to match canonical 3-letter entries + for i := lang.Index(s[:2]); i != -1; i = lang.Next(s[:2], i) { + if e := lang.Elem(i); e[3] == 0 && e[2] == s[2] { + // We treat "und" as special and always translate it to "unspecified". + // Note that ZZ and Zzzz are private use and are not treated as + // unspecified by default. + id := Language(i) + if id == nonCanonicalUnd { + return 0, nil + } + return id, nil + } + } + if i := altLangISO3.Index(s); i != -1 { + return Language(altLangIndex[altLangISO3.Elem(i)[3]]), nil + } + n := strToInt(s) + if langNoIndex[n/8]&(1<<(n%8)) != 0 { + return Language(n) + langNoIndexOffset, nil + } + // Check for non-canonical uses of ISO3. + for i := lang.Index(s[:1]); i != -1; i = lang.Next(s[:1], i) { + if e := lang.Elem(i); e[2] == s[1] && e[3] == s[2] { + return Language(i), nil + } + } + return 0, NewValueError(s) + } + return 0, ErrSyntax +} + +// StringToBuf writes the string to b and returns the number of bytes +// written. cap(b) must be >= 3. +func (id Language) StringToBuf(b []byte) int { + if id >= langNoIndexOffset { + intToStr(uint(id)-langNoIndexOffset, b[:3]) + return 3 + } else if id == 0 { + return copy(b, "und") + } + l := lang[id<<2:] + if l[3] == 0 { + return copy(b, l[:3]) + } + return copy(b, l[:2]) +} + +// String returns the BCP 47 representation of the langID. +// Use b as variable name, instead of id, to ensure the variable +// used is consistent with that of Base in which this type is embedded. +func (b Language) String() string { + if b == 0 { + return "und" + } else if b >= langNoIndexOffset { + b -= langNoIndexOffset + buf := [3]byte{} + intToStr(uint(b), buf[:]) + return string(buf[:]) + } + l := lang.Elem(int(b)) + if l[3] == 0 { + return l[:3] + } + return l[:2] +} + +// ISO3 returns the ISO 639-3 language code. +func (b Language) ISO3() string { + if b == 0 || b >= langNoIndexOffset { + return b.String() + } + l := lang.Elem(int(b)) + if l[3] == 0 { + return l[:3] + } else if l[2] == 0 { + return altLangISO3.Elem(int(l[3]))[:3] + } + // This allocation will only happen for 3-letter ISO codes + // that are non-canonical BCP 47 language identifiers. + return l[0:1] + l[2:4] +} + +// IsPrivateUse reports whether this language code is reserved for private use. +func (b Language) IsPrivateUse() bool { + return langPrivateStart <= b && b <= langPrivateEnd +} + +// SuppressScript returns the script marked as SuppressScript in the IANA +// language tag repository, or 0 if there is no such script. +func (b Language) SuppressScript() Script { + if b < langNoIndexOffset { + return Script(suppressScript[b]) + } + return 0 +} + +type Region uint16 + +// getRegionID returns the region id for s if s is a valid 2-letter region code +// or unknownRegion. +func getRegionID(s []byte) (Region, error) { + if len(s) == 3 { + if isAlpha(s[0]) { + return getRegionISO3(s) + } + if i, err := strconv.ParseUint(string(s), 10, 10); err == nil { + return getRegionM49(int(i)) + } + } + return getRegionISO2(s) +} + +// getRegionISO2 returns the regionID for the given 2-letter ISO country code +// or unknownRegion if this does not exist. +func getRegionISO2(s []byte) (Region, error) { + i, err := findIndex(regionISO, s, "ZZ") + if err != nil { + return 0, err + } + return Region(i) + isoRegionOffset, nil +} + +// getRegionISO3 returns the regionID for the given 3-letter ISO country code +// or unknownRegion if this does not exist. +func getRegionISO3(s []byte) (Region, error) { + if tag.FixCase("ZZZ", s) { + for i := regionISO.Index(s[:1]); i != -1; i = regionISO.Next(s[:1], i) { + if e := regionISO.Elem(i); e[2] == s[1] && e[3] == s[2] { + return Region(i) + isoRegionOffset, nil + } + } + for i := 0; i < len(altRegionISO3); i += 3 { + if tag.Compare(altRegionISO3[i:i+3], s) == 0 { + return Region(altRegionIDs[i/3]), nil + } + } + return 0, NewValueError(s) + } + return 0, ErrSyntax +} + +func getRegionM49(n int) (Region, error) { + if 0 < n && n <= 999 { + const ( + searchBits = 7 + regionBits = 9 + regionMask = 1<<regionBits - 1 + ) + idx := n >> searchBits + buf := fromM49[m49Index[idx]:m49Index[idx+1]] + val := uint16(n) << regionBits // we rely on bits shifting out + i := sort.Search(len(buf), func(i int) bool { + return buf[i] >= val + }) + if r := fromM49[int(m49Index[idx])+i]; r&^regionMask == val { + return Region(r & regionMask), nil + } + } + var e ValueError + fmt.Fprint(bytes.NewBuffer([]byte(e.v[:])), n) + return 0, e +} + +// normRegion returns a region if r is deprecated or 0 otherwise. +// TODO: consider supporting BYS (-> BLR), CSK (-> 200 or CZ), PHI (-> PHL) and AFI (-> DJ). +// TODO: consider mapping split up regions to new most populous one (like CLDR). +func normRegion(r Region) Region { + m := regionOldMap + k := sort.Search(len(m), func(i int) bool { + return m[i].From >= uint16(r) + }) + if k < len(m) && m[k].From == uint16(r) { + return Region(m[k].To) + } + return 0 +} + +const ( + iso3166UserAssigned = 1 << iota + ccTLD + bcp47Region +) + +func (r Region) typ() byte { + return regionTypes[r] +} + +// String returns the BCP 47 representation for the region. +// It returns "ZZ" for an unspecified region. +func (r Region) String() string { + if r < isoRegionOffset { + if r == 0 { + return "ZZ" + } + return fmt.Sprintf("%03d", r.M49()) + } + r -= isoRegionOffset + return regionISO.Elem(int(r))[:2] +} + +// ISO3 returns the 3-letter ISO code of r. +// Note that not all regions have a 3-letter ISO code. +// In such cases this method returns "ZZZ". +func (r Region) ISO3() string { + if r < isoRegionOffset { + return "ZZZ" + } + r -= isoRegionOffset + reg := regionISO.Elem(int(r)) + switch reg[2] { + case 0: + return altRegionISO3[reg[3]:][:3] + case ' ': + return "ZZZ" + } + return reg[0:1] + reg[2:4] +} + +// M49 returns the UN M.49 encoding of r, or 0 if this encoding +// is not defined for r. +func (r Region) M49() int { + return int(m49[r]) +} + +// IsPrivateUse reports whether r has the ISO 3166 User-assigned status. This +// may include private-use tags that are assigned by CLDR and used in this +// implementation. So IsPrivateUse and IsCountry can be simultaneously true. +func (r Region) IsPrivateUse() bool { + return r.typ()&iso3166UserAssigned != 0 +} + +type Script uint16 + +// getScriptID returns the script id for string s. It assumes that s +// is of the format [A-Z][a-z]{3}. +func getScriptID(idx tag.Index, s []byte) (Script, error) { + i, err := findIndex(idx, s, "Zzzz") + return Script(i), err +} + +// String returns the script code in title case. +// It returns "Zzzz" for an unspecified script. +func (s Script) String() string { + if s == 0 { + return "Zzzz" + } + return script.Elem(int(s)) +} + +// IsPrivateUse reports whether this script code is reserved for private use. +func (s Script) IsPrivateUse() bool { + return _Qaaa <= s && s <= _Qabx +} + +const ( + maxAltTaglen = len("en-US-POSIX") + maxLen = maxAltTaglen +) + +var ( + // grandfatheredMap holds a mapping from legacy and grandfathered tags to + // their base language or index to more elaborate tag. + grandfatheredMap = map[[maxLen]byte]int16{ + [maxLen]byte{'a', 'r', 't', '-', 'l', 'o', 'j', 'b', 'a', 'n'}: _jbo, // art-lojban + [maxLen]byte{'i', '-', 'a', 'm', 'i'}: _ami, // i-ami + [maxLen]byte{'i', '-', 'b', 'n', 'n'}: _bnn, // i-bnn + [maxLen]byte{'i', '-', 'h', 'a', 'k'}: _hak, // i-hak + [maxLen]byte{'i', '-', 'k', 'l', 'i', 'n', 'g', 'o', 'n'}: _tlh, // i-klingon + [maxLen]byte{'i', '-', 'l', 'u', 'x'}: _lb, // i-lux + [maxLen]byte{'i', '-', 'n', 'a', 'v', 'a', 'j', 'o'}: _nv, // i-navajo + [maxLen]byte{'i', '-', 'p', 'w', 'n'}: _pwn, // i-pwn + [maxLen]byte{'i', '-', 't', 'a', 'o'}: _tao, // i-tao + [maxLen]byte{'i', '-', 't', 'a', 'y'}: _tay, // i-tay + [maxLen]byte{'i', '-', 't', 's', 'u'}: _tsu, // i-tsu + [maxLen]byte{'n', 'o', '-', 'b', 'o', 'k'}: _nb, // no-bok + [maxLen]byte{'n', 'o', '-', 'n', 'y', 'n'}: _nn, // no-nyn + [maxLen]byte{'s', 'g', 'n', '-', 'b', 'e', '-', 'f', 'r'}: _sfb, // sgn-BE-FR + [maxLen]byte{'s', 'g', 'n', '-', 'b', 'e', '-', 'n', 'l'}: _vgt, // sgn-BE-NL + [maxLen]byte{'s', 'g', 'n', '-', 'c', 'h', '-', 'd', 'e'}: _sgg, // sgn-CH-DE + [maxLen]byte{'z', 'h', '-', 'g', 'u', 'o', 'y', 'u'}: _cmn, // zh-guoyu + [maxLen]byte{'z', 'h', '-', 'h', 'a', 'k', 'k', 'a'}: _hak, // zh-hakka + [maxLen]byte{'z', 'h', '-', 'm', 'i', 'n', '-', 'n', 'a', 'n'}: _nan, // zh-min-nan + [maxLen]byte{'z', 'h', '-', 'x', 'i', 'a', 'n', 'g'}: _hsn, // zh-xiang + + // Grandfathered tags with no modern replacement will be converted as + // follows: + [maxLen]byte{'c', 'e', 'l', '-', 'g', 'a', 'u', 'l', 'i', 's', 'h'}: -1, // cel-gaulish + [maxLen]byte{'e', 'n', '-', 'g', 'b', '-', 'o', 'e', 'd'}: -2, // en-GB-oed + [maxLen]byte{'i', '-', 'd', 'e', 'f', 'a', 'u', 'l', 't'}: -3, // i-default + [maxLen]byte{'i', '-', 'e', 'n', 'o', 'c', 'h', 'i', 'a', 'n'}: -4, // i-enochian + [maxLen]byte{'i', '-', 'm', 'i', 'n', 'g', 'o'}: -5, // i-mingo + [maxLen]byte{'z', 'h', '-', 'm', 'i', 'n'}: -6, // zh-min + + // CLDR-specific tag. + [maxLen]byte{'r', 'o', 'o', 't'}: 0, // root + [maxLen]byte{'e', 'n', '-', 'u', 's', '-', 'p', 'o', 's', 'i', 'x'}: -7, // en_US_POSIX" + } + + altTagIndex = [...]uint8{0, 17, 31, 45, 61, 74, 86, 102} + + altTags = "xtg-x-cel-gaulishen-GB-oxendicten-x-i-defaultund-x-i-enochiansee-x-i-mingonan-x-zh-minen-US-u-va-posix" +) + +func grandfathered(s [maxAltTaglen]byte) (t Tag, ok bool) { + if v, ok := grandfatheredMap[s]; ok { + if v < 0 { + return Make(altTags[altTagIndex[-v-1]:altTagIndex[-v]]), true + } + t.LangID = Language(v) + return t, true + } + return t, false +} diff --git a/tests/vendor/golang.org/x/text/internal/language/match.go b/tests/vendor/golang.org/x/text/internal/language/match.go new file mode 100644 index 000000000..75a2dbca7 --- /dev/null +++ b/tests/vendor/golang.org/x/text/internal/language/match.go @@ -0,0 +1,226 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package language + +import "errors" + +type scriptRegionFlags uint8 + +const ( + isList = 1 << iota + scriptInFrom + regionInFrom +) + +func (t *Tag) setUndefinedLang(id Language) { + if t.LangID == 0 { + t.LangID = id + } +} + +func (t *Tag) setUndefinedScript(id Script) { + if t.ScriptID == 0 { + t.ScriptID = id + } +} + +func (t *Tag) setUndefinedRegion(id Region) { + if t.RegionID == 0 || t.RegionID.Contains(id) { + t.RegionID = id + } +} + +// ErrMissingLikelyTagsData indicates no information was available +// to compute likely values of missing tags. +var ErrMissingLikelyTagsData = errors.New("missing likely tags data") + +// addLikelySubtags sets subtags to their most likely value, given the locale. +// In most cases this means setting fields for unknown values, but in some +// cases it may alter a value. It returns an ErrMissingLikelyTagsData error +// if the given locale cannot be expanded. +func (t Tag) addLikelySubtags() (Tag, error) { + id, err := addTags(t) + if err != nil { + return t, err + } else if id.equalTags(t) { + return t, nil + } + id.RemakeString() + return id, nil +} + +// specializeRegion attempts to specialize a group region. +func specializeRegion(t *Tag) bool { + if i := regionInclusion[t.RegionID]; i < nRegionGroups { + x := likelyRegionGroup[i] + if Language(x.lang) == t.LangID && Script(x.script) == t.ScriptID { + t.RegionID = Region(x.region) + } + return true + } + return false +} + +// Maximize returns a new tag with missing tags filled in. +func (t Tag) Maximize() (Tag, error) { + return addTags(t) +} + +func addTags(t Tag) (Tag, error) { + // We leave private use identifiers alone. + if t.IsPrivateUse() { + return t, nil + } + if t.ScriptID != 0 && t.RegionID != 0 { + if t.LangID != 0 { + // already fully specified + specializeRegion(&t) + return t, nil + } + // Search matches for und-script-region. Note that for these cases + // region will never be a group so there is no need to check for this. + list := likelyRegion[t.RegionID : t.RegionID+1] + if x := list[0]; x.flags&isList != 0 { + list = likelyRegionList[x.lang : x.lang+uint16(x.script)] + } + for _, x := range list { + // Deviating from the spec. See match_test.go for details. + if Script(x.script) == t.ScriptID { + t.setUndefinedLang(Language(x.lang)) + return t, nil + } + } + } + if t.LangID != 0 { + // Search matches for lang-script and lang-region, where lang != und. + if t.LangID < langNoIndexOffset { + x := likelyLang[t.LangID] + if x.flags&isList != 0 { + list := likelyLangList[x.region : x.region+uint16(x.script)] + if t.ScriptID != 0 { + for _, x := range list { + if Script(x.script) == t.ScriptID && x.flags&scriptInFrom != 0 { + t.setUndefinedRegion(Region(x.region)) + return t, nil + } + } + } else if t.RegionID != 0 { + count := 0 + goodScript := true + tt := t + for _, x := range list { + // We visit all entries for which the script was not + // defined, including the ones where the region was not + // defined. This allows for proper disambiguation within + // regions. + if x.flags&scriptInFrom == 0 && t.RegionID.Contains(Region(x.region)) { + tt.RegionID = Region(x.region) + tt.setUndefinedScript(Script(x.script)) + goodScript = goodScript && tt.ScriptID == Script(x.script) + count++ + } + } + if count == 1 { + return tt, nil + } + // Even if we fail to find a unique Region, we might have + // an unambiguous script. + if goodScript { + t.ScriptID = tt.ScriptID + } + } + } + } + } else { + // Search matches for und-script. + if t.ScriptID != 0 { + x := likelyScript[t.ScriptID] + if x.region != 0 { + t.setUndefinedRegion(Region(x.region)) + t.setUndefinedLang(Language(x.lang)) + return t, nil + } + } + // Search matches for und-region. If und-script-region exists, it would + // have been found earlier. + if t.RegionID != 0 { + if i := regionInclusion[t.RegionID]; i < nRegionGroups { + x := likelyRegionGroup[i] + if x.region != 0 { + t.setUndefinedLang(Language(x.lang)) + t.setUndefinedScript(Script(x.script)) + t.RegionID = Region(x.region) + } + } else { + x := likelyRegion[t.RegionID] + if x.flags&isList != 0 { + x = likelyRegionList[x.lang] + } + if x.script != 0 && x.flags != scriptInFrom { + t.setUndefinedLang(Language(x.lang)) + t.setUndefinedScript(Script(x.script)) + return t, nil + } + } + } + } + + // Search matches for lang. + if t.LangID < langNoIndexOffset { + x := likelyLang[t.LangID] + if x.flags&isList != 0 { + x = likelyLangList[x.region] + } + if x.region != 0 { + t.setUndefinedScript(Script(x.script)) + t.setUndefinedRegion(Region(x.region)) + } + specializeRegion(&t) + if t.LangID == 0 { + t.LangID = _en // default language + } + return t, nil + } + return t, ErrMissingLikelyTagsData +} + +func (t *Tag) setTagsFrom(id Tag) { + t.LangID = id.LangID + t.ScriptID = id.ScriptID + t.RegionID = id.RegionID +} + +// minimize removes the region or script subtags from t such that +// t.addLikelySubtags() == t.minimize().addLikelySubtags(). +func (t Tag) minimize() (Tag, error) { + t, err := minimizeTags(t) + if err != nil { + return t, err + } + t.RemakeString() + return t, nil +} + +// minimizeTags mimics the behavior of the ICU 51 C implementation. +func minimizeTags(t Tag) (Tag, error) { + if t.equalTags(Und) { + return t, nil + } + max, err := addTags(t) + if err != nil { + return t, err + } + for _, id := range [...]Tag{ + {LangID: t.LangID}, + {LangID: t.LangID, RegionID: t.RegionID}, + {LangID: t.LangID, ScriptID: t.ScriptID}, + } { + if x, err := addTags(id); err == nil && max.equalTags(x) { + t.setTagsFrom(id) + break + } + } + return t, nil +} diff --git a/tests/vendor/golang.org/x/text/internal/language/parse.go b/tests/vendor/golang.org/x/text/internal/language/parse.go new file mode 100644 index 000000000..aad1e0acf --- /dev/null +++ b/tests/vendor/golang.org/x/text/internal/language/parse.go @@ -0,0 +1,608 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package language + +import ( + "bytes" + "errors" + "fmt" + "sort" + + "golang.org/x/text/internal/tag" +) + +// isAlpha returns true if the byte is not a digit. +// b must be an ASCII letter or digit. +func isAlpha(b byte) bool { + return b > '9' +} + +// isAlphaNum returns true if the string contains only ASCII letters or digits. +func isAlphaNum(s []byte) bool { + for _, c := range s { + if !('a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' || '0' <= c && c <= '9') { + return false + } + } + return true +} + +// ErrSyntax is returned by any of the parsing functions when the +// input is not well-formed, according to BCP 47. +// TODO: return the position at which the syntax error occurred? +var ErrSyntax = errors.New("language: tag is not well-formed") + +// ErrDuplicateKey is returned when a tag contains the same key twice with +// different values in the -u section. +var ErrDuplicateKey = errors.New("language: different values for same key in -u extension") + +// ValueError is returned by any of the parsing functions when the +// input is well-formed but the respective subtag is not recognized +// as a valid value. +type ValueError struct { + v [8]byte +} + +// NewValueError creates a new ValueError. +func NewValueError(tag []byte) ValueError { + var e ValueError + copy(e.v[:], tag) + return e +} + +func (e ValueError) tag() []byte { + n := bytes.IndexByte(e.v[:], 0) + if n == -1 { + n = 8 + } + return e.v[:n] +} + +// Error implements the error interface. +func (e ValueError) Error() string { + return fmt.Sprintf("language: subtag %q is well-formed but unknown", e.tag()) +} + +// Subtag returns the subtag for which the error occurred. +func (e ValueError) Subtag() string { + return string(e.tag()) +} + +// scanner is used to scan BCP 47 tokens, which are separated by _ or -. +type scanner struct { + b []byte + bytes [max99thPercentileSize]byte + token []byte + start int // start position of the current token + end int // end position of the current token + next int // next point for scan + err error + done bool +} + +func makeScannerString(s string) scanner { + scan := scanner{} + if len(s) <= len(scan.bytes) { + scan.b = scan.bytes[:copy(scan.bytes[:], s)] + } else { + scan.b = []byte(s) + } + scan.init() + return scan +} + +// makeScanner returns a scanner using b as the input buffer. +// b is not copied and may be modified by the scanner routines. +func makeScanner(b []byte) scanner { + scan := scanner{b: b} + scan.init() + return scan +} + +func (s *scanner) init() { + for i, c := range s.b { + if c == '_' { + s.b[i] = '-' + } + } + s.scan() +} + +// restToLower converts the string between start and end to lower case. +func (s *scanner) toLower(start, end int) { + for i := start; i < end; i++ { + c := s.b[i] + if 'A' <= c && c <= 'Z' { + s.b[i] += 'a' - 'A' + } + } +} + +func (s *scanner) setError(e error) { + if s.err == nil || (e == ErrSyntax && s.err != ErrSyntax) { + s.err = e + } +} + +// resizeRange shrinks or grows the array at position oldStart such that +// a new string of size newSize can fit between oldStart and oldEnd. +// Sets the scan point to after the resized range. +func (s *scanner) resizeRange(oldStart, oldEnd, newSize int) { + s.start = oldStart + if end := oldStart + newSize; end != oldEnd { + diff := end - oldEnd + var b []byte + if n := len(s.b) + diff; n > cap(s.b) { + b = make([]byte, n) + copy(b, s.b[:oldStart]) + } else { + b = s.b[:n] + } + copy(b[end:], s.b[oldEnd:]) + s.b = b + s.next = end + (s.next - s.end) + s.end = end + } +} + +// replace replaces the current token with repl. +func (s *scanner) replace(repl string) { + s.resizeRange(s.start, s.end, len(repl)) + copy(s.b[s.start:], repl) +} + +// gobble removes the current token from the input. +// Caller must call scan after calling gobble. +func (s *scanner) gobble(e error) { + s.setError(e) + if s.start == 0 { + s.b = s.b[:+copy(s.b, s.b[s.next:])] + s.end = 0 + } else { + s.b = s.b[:s.start-1+copy(s.b[s.start-1:], s.b[s.end:])] + s.end = s.start - 1 + } + s.next = s.start +} + +// deleteRange removes the given range from s.b before the current token. +func (s *scanner) deleteRange(start, end int) { + s.b = s.b[:start+copy(s.b[start:], s.b[end:])] + diff := end - start + s.next -= diff + s.start -= diff + s.end -= diff +} + +// scan parses the next token of a BCP 47 string. Tokens that are larger +// than 8 characters or include non-alphanumeric characters result in an error +// and are gobbled and removed from the output. +// It returns the end position of the last token consumed. +func (s *scanner) scan() (end int) { + end = s.end + s.token = nil + for s.start = s.next; s.next < len(s.b); { + i := bytes.IndexByte(s.b[s.next:], '-') + if i == -1 { + s.end = len(s.b) + s.next = len(s.b) + i = s.end - s.start + } else { + s.end = s.next + i + s.next = s.end + 1 + } + token := s.b[s.start:s.end] + if i < 1 || i > 8 || !isAlphaNum(token) { + s.gobble(ErrSyntax) + continue + } + s.token = token + return end + } + if n := len(s.b); n > 0 && s.b[n-1] == '-' { + s.setError(ErrSyntax) + s.b = s.b[:len(s.b)-1] + } + s.done = true + return end +} + +// acceptMinSize parses multiple tokens of the given size or greater. +// It returns the end position of the last token consumed. +func (s *scanner) acceptMinSize(min int) (end int) { + end = s.end + s.scan() + for ; len(s.token) >= min; s.scan() { + end = s.end + } + return end +} + +// Parse parses the given BCP 47 string and returns a valid Tag. If parsing +// failed it returns an error and any part of the tag that could be parsed. +// If parsing succeeded but an unknown value was found, it returns +// ValueError. The Tag returned in this case is just stripped of the unknown +// value. All other values are preserved. It accepts tags in the BCP 47 format +// and extensions to this standard defined in +// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers. +func Parse(s string) (t Tag, err error) { + // TODO: consider supporting old-style locale key-value pairs. + if s == "" { + return Und, ErrSyntax + } + defer func() { + if recover() != nil { + t = Und + err = ErrSyntax + return + } + }() + if len(s) <= maxAltTaglen { + b := [maxAltTaglen]byte{} + for i, c := range s { + // Generating invalid UTF-8 is okay as it won't match. + if 'A' <= c && c <= 'Z' { + c += 'a' - 'A' + } else if c == '_' { + c = '-' + } + b[i] = byte(c) + } + if t, ok := grandfathered(b); ok { + return t, nil + } + } + scan := makeScannerString(s) + return parse(&scan, s) +} + +func parse(scan *scanner, s string) (t Tag, err error) { + t = Und + var end int + if n := len(scan.token); n <= 1 { + scan.toLower(0, len(scan.b)) + if n == 0 || scan.token[0] != 'x' { + return t, ErrSyntax + } + end = parseExtensions(scan) + } else if n >= 4 { + return Und, ErrSyntax + } else { // the usual case + t, end = parseTag(scan, true) + if n := len(scan.token); n == 1 { + t.pExt = uint16(end) + end = parseExtensions(scan) + } else if end < len(scan.b) { + scan.setError(ErrSyntax) + scan.b = scan.b[:end] + } + } + if int(t.pVariant) < len(scan.b) { + if end < len(s) { + s = s[:end] + } + if len(s) > 0 && tag.Compare(s, scan.b) == 0 { + t.str = s + } else { + t.str = string(scan.b) + } + } else { + t.pVariant, t.pExt = 0, 0 + } + return t, scan.err +} + +// parseTag parses language, script, region and variants. +// It returns a Tag and the end position in the input that was parsed. +// If doNorm is true, then <lang>-<extlang> will be normalized to <extlang>. +func parseTag(scan *scanner, doNorm bool) (t Tag, end int) { + var e error + // TODO: set an error if an unknown lang, script or region is encountered. + t.LangID, e = getLangID(scan.token) + scan.setError(e) + scan.replace(t.LangID.String()) + langStart := scan.start + end = scan.scan() + for len(scan.token) == 3 && isAlpha(scan.token[0]) { + // From http://tools.ietf.org/html/bcp47, <lang>-<extlang> tags are equivalent + // to a tag of the form <extlang>. + if doNorm { + lang, e := getLangID(scan.token) + if lang != 0 { + t.LangID = lang + langStr := lang.String() + copy(scan.b[langStart:], langStr) + scan.b[langStart+len(langStr)] = '-' + scan.start = langStart + len(langStr) + 1 + } + scan.gobble(e) + } + end = scan.scan() + } + if len(scan.token) == 4 && isAlpha(scan.token[0]) { + t.ScriptID, e = getScriptID(script, scan.token) + if t.ScriptID == 0 { + scan.gobble(e) + } + end = scan.scan() + } + if n := len(scan.token); n >= 2 && n <= 3 { + t.RegionID, e = getRegionID(scan.token) + if t.RegionID == 0 { + scan.gobble(e) + } else { + scan.replace(t.RegionID.String()) + } + end = scan.scan() + } + scan.toLower(scan.start, len(scan.b)) + t.pVariant = byte(end) + end = parseVariants(scan, end, t) + t.pExt = uint16(end) + return t, end +} + +var separator = []byte{'-'} + +// parseVariants scans tokens as long as each token is a valid variant string. +// Duplicate variants are removed. +func parseVariants(scan *scanner, end int, t Tag) int { + start := scan.start + varIDBuf := [4]uint8{} + variantBuf := [4][]byte{} + varID := varIDBuf[:0] + variant := variantBuf[:0] + last := -1 + needSort := false + for ; len(scan.token) >= 4; scan.scan() { + // TODO: measure the impact of needing this conversion and redesign + // the data structure if there is an issue. + v, ok := variantIndex[string(scan.token)] + if !ok { + // unknown variant + // TODO: allow user-defined variants? + scan.gobble(NewValueError(scan.token)) + continue + } + varID = append(varID, v) + variant = append(variant, scan.token) + if !needSort { + if last < int(v) { + last = int(v) + } else { + needSort = true + // There is no legal combinations of more than 7 variants + // (and this is by no means a useful sequence). + const maxVariants = 8 + if len(varID) > maxVariants { + break + } + } + } + end = scan.end + } + if needSort { + sort.Sort(variantsSort{varID, variant}) + k, l := 0, -1 + for i, v := range varID { + w := int(v) + if l == w { + // Remove duplicates. + continue + } + varID[k] = varID[i] + variant[k] = variant[i] + k++ + l = w + } + if str := bytes.Join(variant[:k], separator); len(str) == 0 { + end = start - 1 + } else { + scan.resizeRange(start, end, len(str)) + copy(scan.b[scan.start:], str) + end = scan.end + } + } + return end +} + +type variantsSort struct { + i []uint8 + v [][]byte +} + +func (s variantsSort) Len() int { + return len(s.i) +} + +func (s variantsSort) Swap(i, j int) { + s.i[i], s.i[j] = s.i[j], s.i[i] + s.v[i], s.v[j] = s.v[j], s.v[i] +} + +func (s variantsSort) Less(i, j int) bool { + return s.i[i] < s.i[j] +} + +type bytesSort struct { + b [][]byte + n int // first n bytes to compare +} + +func (b bytesSort) Len() int { + return len(b.b) +} + +func (b bytesSort) Swap(i, j int) { + b.b[i], b.b[j] = b.b[j], b.b[i] +} + +func (b bytesSort) Less(i, j int) bool { + for k := 0; k < b.n; k++ { + if b.b[i][k] == b.b[j][k] { + continue + } + return b.b[i][k] < b.b[j][k] + } + return false +} + +// parseExtensions parses and normalizes the extensions in the buffer. +// It returns the last position of scan.b that is part of any extension. +// It also trims scan.b to remove excess parts accordingly. +func parseExtensions(scan *scanner) int { + start := scan.start + exts := [][]byte{} + private := []byte{} + end := scan.end + for len(scan.token) == 1 { + extStart := scan.start + ext := scan.token[0] + end = parseExtension(scan) + extension := scan.b[extStart:end] + if len(extension) < 3 || (ext != 'x' && len(extension) < 4) { + scan.setError(ErrSyntax) + end = extStart + continue + } else if start == extStart && (ext == 'x' || scan.start == len(scan.b)) { + scan.b = scan.b[:end] + return end + } else if ext == 'x' { + private = extension + break + } + exts = append(exts, extension) + } + sort.Sort(bytesSort{exts, 1}) + if len(private) > 0 { + exts = append(exts, private) + } + scan.b = scan.b[:start] + if len(exts) > 0 { + scan.b = append(scan.b, bytes.Join(exts, separator)...) + } else if start > 0 { + // Strip trailing '-'. + scan.b = scan.b[:start-1] + } + return end +} + +// parseExtension parses a single extension and returns the position of +// the extension end. +func parseExtension(scan *scanner) int { + start, end := scan.start, scan.end + switch scan.token[0] { + case 'u': // https://www.ietf.org/rfc/rfc6067.txt + attrStart := end + scan.scan() + for last := []byte{}; len(scan.token) > 2; scan.scan() { + if bytes.Compare(scan.token, last) != -1 { + // Attributes are unsorted. Start over from scratch. + p := attrStart + 1 + scan.next = p + attrs := [][]byte{} + for scan.scan(); len(scan.token) > 2; scan.scan() { + attrs = append(attrs, scan.token) + end = scan.end + } + sort.Sort(bytesSort{attrs, 3}) + copy(scan.b[p:], bytes.Join(attrs, separator)) + break + } + last = scan.token + end = scan.end + } + // Scan key-type sequences. A key is of length 2 and may be followed + // by 0 or more "type" subtags from 3 to the maximum of 8 letters. + var last, key []byte + for attrEnd := end; len(scan.token) == 2; last = key { + key = scan.token + end = scan.end + for scan.scan(); end < scan.end && len(scan.token) > 2; scan.scan() { + end = scan.end + } + // TODO: check key value validity + if bytes.Compare(key, last) != 1 || scan.err != nil { + // We have an invalid key or the keys are not sorted. + // Start scanning keys from scratch and reorder. + p := attrEnd + 1 + scan.next = p + keys := [][]byte{} + for scan.scan(); len(scan.token) == 2; { + keyStart := scan.start + end = scan.end + for scan.scan(); end < scan.end && len(scan.token) > 2; scan.scan() { + end = scan.end + } + keys = append(keys, scan.b[keyStart:end]) + } + sort.Stable(bytesSort{keys, 2}) + if n := len(keys); n > 0 { + k := 0 + for i := 1; i < n; i++ { + if !bytes.Equal(keys[k][:2], keys[i][:2]) { + k++ + keys[k] = keys[i] + } else if !bytes.Equal(keys[k], keys[i]) { + scan.setError(ErrDuplicateKey) + } + } + keys = keys[:k+1] + } + reordered := bytes.Join(keys, separator) + if e := p + len(reordered); e < end { + scan.deleteRange(e, end) + end = e + } + copy(scan.b[p:], reordered) + break + } + } + case 't': // https://www.ietf.org/rfc/rfc6497.txt + scan.scan() + if n := len(scan.token); n >= 2 && n <= 3 && isAlpha(scan.token[1]) { + _, end = parseTag(scan, false) + scan.toLower(start, end) + } + for len(scan.token) == 2 && !isAlpha(scan.token[1]) { + end = scan.acceptMinSize(3) + } + case 'x': + end = scan.acceptMinSize(1) + default: + end = scan.acceptMinSize(2) + } + return end +} + +// getExtension returns the name, body and end position of the extension. +func getExtension(s string, p int) (end int, ext string) { + if s[p] == '-' { + p++ + } + if s[p] == 'x' { + return len(s), s[p:] + } + end = nextExtension(s, p) + return end, s[p:end] +} + +// nextExtension finds the next extension within the string, searching +// for the -<char>- pattern from position p. +// In the fast majority of cases, language tags will have at most +// one extension and extensions tend to be small. +func nextExtension(s string, p int) int { + for n := len(s) - 3; p < n; { + if s[p] == '-' { + if s[p+2] == '-' { + return p + } + p += 3 + } else { + p++ + } + } + return len(s) +} diff --git a/tests/vendor/golang.org/x/text/internal/language/tables.go b/tests/vendor/golang.org/x/text/internal/language/tables.go new file mode 100644 index 000000000..14167e74e --- /dev/null +++ b/tests/vendor/golang.org/x/text/internal/language/tables.go @@ -0,0 +1,3494 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +package language + +import "golang.org/x/text/internal/tag" + +// CLDRVersion is the CLDR version from which the tables in this package are derived. +const CLDRVersion = "32" + +const NumLanguages = 8798 + +const NumScripts = 261 + +const NumRegions = 358 + +type FromTo struct { + From uint16 + To uint16 +} + +const nonCanonicalUnd = 1201 +const ( + _af = 22 + _am = 39 + _ar = 58 + _az = 88 + _bg = 126 + _bn = 165 + _ca = 215 + _cs = 250 + _da = 257 + _de = 269 + _el = 310 + _en = 313 + _es = 318 + _et = 320 + _fa = 328 + _fi = 337 + _fil = 339 + _fr = 350 + _gu = 420 + _he = 444 + _hi = 446 + _hr = 465 + _hu = 469 + _hy = 471 + _id = 481 + _is = 504 + _it = 505 + _ja = 512 + _ka = 528 + _kk = 578 + _km = 586 + _kn = 593 + _ko = 596 + _ky = 650 + _lo = 696 + _lt = 704 + _lv = 711 + _mk = 767 + _ml = 772 + _mn = 779 + _mo = 784 + _mr = 795 + _ms = 799 + _mul = 806 + _my = 817 + _nb = 839 + _ne = 849 + _nl = 871 + _no = 879 + _pa = 925 + _pl = 947 + _pt = 960 + _ro = 988 + _ru = 994 + _sh = 1031 + _si = 1036 + _sk = 1042 + _sl = 1046 + _sq = 1073 + _sr = 1074 + _sv = 1092 + _sw = 1093 + _ta = 1104 + _te = 1121 + _th = 1131 + _tl = 1146 + _tn = 1152 + _tr = 1162 + _uk = 1198 + _ur = 1204 + _uz = 1212 + _vi = 1219 + _zh = 1321 + _zu = 1327 + _jbo = 515 + _ami = 1650 + _bnn = 2357 + _hak = 438 + _tlh = 14467 + _lb = 661 + _nv = 899 + _pwn = 12055 + _tao = 14188 + _tay = 14198 + _tsu = 14662 + _nn = 874 + _sfb = 13629 + _vgt = 15701 + _sgg = 13660 + _cmn = 3007 + _nan = 835 + _hsn = 467 +) + +const langPrivateStart = 0x2f72 + +const langPrivateEnd = 0x3179 + +// lang holds an alphabetically sorted list of ISO-639 language identifiers. +// All entries are 4 bytes. The index of the identifier (divided by 4) is the language tag. +// For 2-byte language identifiers, the two successive bytes have the following meaning: +// - if the first letter of the 2- and 3-letter ISO codes are the same: +// the second and third letter of the 3-letter ISO code. +// - otherwise: a 0 and a by 2 bits right-shifted index into altLangISO3. +// +// For 3-byte language identifiers the 4th byte is 0. +const lang tag.Index = "" + // Size: 5324 bytes + "---\x00aaaraai\x00aak\x00aau\x00abbkabi\x00abq\x00abr\x00abt\x00aby\x00a" + + "cd\x00ace\x00ach\x00ada\x00ade\x00adj\x00ady\x00adz\x00aeveaeb\x00aey" + + "\x00affragc\x00agd\x00agg\x00agm\x00ago\x00agq\x00aha\x00ahl\x00aho\x00a" + + "jg\x00akkaakk\x00ala\x00ali\x00aln\x00alt\x00ammhamm\x00amn\x00amo\x00am" + + "p\x00anrganc\x00ank\x00ann\x00any\x00aoj\x00aom\x00aoz\x00apc\x00apd\x00" + + "ape\x00apr\x00aps\x00apz\x00arraarc\x00arh\x00arn\x00aro\x00arq\x00ars" + + "\x00ary\x00arz\x00assmasa\x00ase\x00asg\x00aso\x00ast\x00ata\x00atg\x00a" + + "tj\x00auy\x00avvaavl\x00avn\x00avt\x00avu\x00awa\x00awb\x00awo\x00awx" + + "\x00ayymayb\x00azzebaakbal\x00ban\x00bap\x00bar\x00bas\x00bav\x00bax\x00" + + "bba\x00bbb\x00bbc\x00bbd\x00bbj\x00bbp\x00bbr\x00bcf\x00bch\x00bci\x00bc" + + "m\x00bcn\x00bco\x00bcq\x00bcu\x00bdd\x00beelbef\x00beh\x00bej\x00bem\x00" + + "bet\x00bew\x00bex\x00bez\x00bfd\x00bfq\x00bft\x00bfy\x00bgulbgc\x00bgn" + + "\x00bgx\x00bhihbhb\x00bhg\x00bhi\x00bhk\x00bhl\x00bho\x00bhy\x00biisbib" + + "\x00big\x00bik\x00bim\x00bin\x00bio\x00biq\x00bjh\x00bji\x00bjj\x00bjn" + + "\x00bjo\x00bjr\x00bjt\x00bjz\x00bkc\x00bkm\x00bkq\x00bku\x00bkv\x00blt" + + "\x00bmambmh\x00bmk\x00bmq\x00bmu\x00bnenbng\x00bnm\x00bnp\x00boodboj\x00" + + "bom\x00bon\x00bpy\x00bqc\x00bqi\x00bqp\x00bqv\x00brrebra\x00brh\x00brx" + + "\x00brz\x00bsosbsj\x00bsq\x00bss\x00bst\x00bto\x00btt\x00btv\x00bua\x00b" + + "uc\x00bud\x00bug\x00buk\x00bum\x00buo\x00bus\x00buu\x00bvb\x00bwd\x00bwr" + + "\x00bxh\x00bye\x00byn\x00byr\x00bys\x00byv\x00byx\x00bza\x00bze\x00bzf" + + "\x00bzh\x00bzw\x00caatcan\x00cbj\x00cch\x00ccp\x00ceheceb\x00cfa\x00cgg" + + "\x00chhachk\x00chm\x00cho\x00chp\x00chr\x00cja\x00cjm\x00cjv\x00ckb\x00c" + + "kl\x00cko\x00cky\x00cla\x00cme\x00cmg\x00cooscop\x00cps\x00crrecrh\x00cr" + + "j\x00crk\x00crl\x00crm\x00crs\x00csescsb\x00csw\x00ctd\x00cuhucvhvcyymda" + + "andad\x00daf\x00dag\x00dah\x00dak\x00dar\x00dav\x00dbd\x00dbq\x00dcc\x00" + + "ddn\x00deeuded\x00den\x00dga\x00dgh\x00dgi\x00dgl\x00dgr\x00dgz\x00dia" + + "\x00dje\x00dnj\x00dob\x00doi\x00dop\x00dow\x00dri\x00drs\x00dsb\x00dtm" + + "\x00dtp\x00dts\x00dty\x00dua\x00duc\x00dud\x00dug\x00dvivdva\x00dww\x00d" + + "yo\x00dyu\x00dzzodzg\x00ebu\x00eeweefi\x00egl\x00egy\x00eka\x00eky\x00el" + + "llema\x00emi\x00enngenn\x00enq\x00eopoeri\x00es\x00\x05esu\x00etstetr" + + "\x00ett\x00etu\x00etx\x00euusewo\x00ext\x00faasfaa\x00fab\x00fag\x00fai" + + "\x00fan\x00ffulffi\x00ffm\x00fiinfia\x00fil\x00fit\x00fjijflr\x00fmp\x00" + + "foaofod\x00fon\x00for\x00fpe\x00fqs\x00frrafrc\x00frp\x00frr\x00frs\x00f" + + "ub\x00fud\x00fue\x00fuf\x00fuh\x00fuq\x00fur\x00fuv\x00fuy\x00fvr\x00fyr" + + "ygalegaa\x00gaf\x00gag\x00gah\x00gaj\x00gam\x00gan\x00gaw\x00gay\x00gba" + + "\x00gbf\x00gbm\x00gby\x00gbz\x00gcr\x00gdlagde\x00gdn\x00gdr\x00geb\x00g" + + "ej\x00gel\x00gez\x00gfk\x00ggn\x00ghs\x00gil\x00gim\x00gjk\x00gjn\x00gju" + + "\x00gkn\x00gkp\x00gllgglk\x00gmm\x00gmv\x00gnrngnd\x00gng\x00god\x00gof" + + "\x00goi\x00gom\x00gon\x00gor\x00gos\x00got\x00grb\x00grc\x00grt\x00grw" + + "\x00gsw\x00guujgub\x00guc\x00gud\x00gur\x00guw\x00gux\x00guz\x00gvlvgvf" + + "\x00gvr\x00gvs\x00gwc\x00gwi\x00gwt\x00gyi\x00haauhag\x00hak\x00ham\x00h" + + "aw\x00haz\x00hbb\x00hdy\x00heebhhy\x00hiinhia\x00hif\x00hig\x00hih\x00hi" + + "l\x00hla\x00hlu\x00hmd\x00hmt\x00hnd\x00hne\x00hnj\x00hnn\x00hno\x00homo" + + "hoc\x00hoj\x00hot\x00hrrvhsb\x00hsn\x00htathuunhui\x00hyyehzerianaian" + + "\x00iar\x00iba\x00ibb\x00iby\x00ica\x00ich\x00idndidd\x00idi\x00idu\x00i" + + "eleife\x00igboigb\x00ige\x00iiiiijj\x00ikpkikk\x00ikt\x00ikw\x00ikx\x00i" + + "lo\x00imo\x00inndinh\x00iodoiou\x00iri\x00isslittaiukuiw\x00\x03iwm\x00i" + + "ws\x00izh\x00izi\x00japnjab\x00jam\x00jbo\x00jbu\x00jen\x00jgk\x00jgo" + + "\x00ji\x00\x06jib\x00jmc\x00jml\x00jra\x00jut\x00jvavjwavkaatkaa\x00kab" + + "\x00kac\x00kad\x00kai\x00kaj\x00kam\x00kao\x00kbd\x00kbm\x00kbp\x00kbq" + + "\x00kbx\x00kby\x00kcg\x00kck\x00kcl\x00kct\x00kde\x00kdh\x00kdl\x00kdt" + + "\x00kea\x00ken\x00kez\x00kfo\x00kfr\x00kfy\x00kgonkge\x00kgf\x00kgp\x00k" + + "ha\x00khb\x00khn\x00khq\x00khs\x00kht\x00khw\x00khz\x00kiikkij\x00kiu" + + "\x00kiw\x00kjuakjd\x00kjg\x00kjs\x00kjy\x00kkazkkc\x00kkj\x00klalkln\x00" + + "klq\x00klt\x00klx\x00kmhmkmb\x00kmh\x00kmo\x00kms\x00kmu\x00kmw\x00knank" + + "nf\x00knp\x00koorkoi\x00kok\x00kol\x00kos\x00koz\x00kpe\x00kpf\x00kpo" + + "\x00kpr\x00kpx\x00kqb\x00kqf\x00kqs\x00kqy\x00kraukrc\x00kri\x00krj\x00k" + + "rl\x00krs\x00kru\x00ksasksb\x00ksd\x00ksf\x00ksh\x00ksj\x00ksr\x00ktb" + + "\x00ktm\x00kto\x00kuurkub\x00kud\x00kue\x00kuj\x00kum\x00kun\x00kup\x00k" + + "us\x00kvomkvg\x00kvr\x00kvx\x00kw\x00\x01kwj\x00kwo\x00kxa\x00kxc\x00kxm" + + "\x00kxp\x00kxw\x00kxz\x00kyirkye\x00kyx\x00kzr\x00laatlab\x00lad\x00lag" + + "\x00lah\x00laj\x00las\x00lbtzlbe\x00lbu\x00lbw\x00lcm\x00lcp\x00ldb\x00l" + + "ed\x00lee\x00lem\x00lep\x00leq\x00leu\x00lez\x00lguglgg\x00liimlia\x00li" + + "d\x00lif\x00lig\x00lih\x00lij\x00lis\x00ljp\x00lki\x00lkt\x00lle\x00lln" + + "\x00lmn\x00lmo\x00lmp\x00lninlns\x00lnu\x00loaoloj\x00lok\x00lol\x00lor" + + "\x00los\x00loz\x00lrc\x00ltitltg\x00luublua\x00luo\x00luy\x00luz\x00lvav" + + "lwl\x00lzh\x00lzz\x00mad\x00maf\x00mag\x00mai\x00mak\x00man\x00mas\x00ma" + + "w\x00maz\x00mbh\x00mbo\x00mbq\x00mbu\x00mbw\x00mci\x00mcp\x00mcq\x00mcr" + + "\x00mcu\x00mda\x00mde\x00mdf\x00mdh\x00mdj\x00mdr\x00mdx\x00med\x00mee" + + "\x00mek\x00men\x00mer\x00met\x00meu\x00mfa\x00mfe\x00mfn\x00mfo\x00mfq" + + "\x00mglgmgh\x00mgl\x00mgo\x00mgp\x00mgy\x00mhahmhi\x00mhl\x00mirimif\x00" + + "min\x00mis\x00miw\x00mkkdmki\x00mkl\x00mkp\x00mkw\x00mlalmle\x00mlp\x00m" + + "ls\x00mmo\x00mmu\x00mmx\x00mnonmna\x00mnf\x00mni\x00mnw\x00moolmoa\x00mo" + + "e\x00moh\x00mos\x00mox\x00mpp\x00mps\x00mpt\x00mpx\x00mql\x00mrarmrd\x00" + + "mrj\x00mro\x00mssamtltmtc\x00mtf\x00mti\x00mtr\x00mua\x00mul\x00mur\x00m" + + "us\x00mva\x00mvn\x00mvy\x00mwk\x00mwr\x00mwv\x00mxc\x00mxm\x00myyamyk" + + "\x00mym\x00myv\x00myw\x00myx\x00myz\x00mzk\x00mzm\x00mzn\x00mzp\x00mzw" + + "\x00mzz\x00naaunac\x00naf\x00nah\x00nak\x00nan\x00nap\x00naq\x00nas\x00n" + + "bobnca\x00nce\x00ncf\x00nch\x00nco\x00ncu\x00nddendc\x00nds\x00neepneb" + + "\x00new\x00nex\x00nfr\x00ngdonga\x00ngb\x00ngl\x00nhb\x00nhe\x00nhw\x00n" + + "if\x00nii\x00nij\x00nin\x00niu\x00niy\x00niz\x00njo\x00nkg\x00nko\x00nll" + + "dnmg\x00nmz\x00nnnonnf\x00nnh\x00nnk\x00nnm\x00noornod\x00noe\x00non\x00" + + "nop\x00nou\x00nqo\x00nrblnrb\x00nsk\x00nsn\x00nso\x00nss\x00ntm\x00ntr" + + "\x00nui\x00nup\x00nus\x00nuv\x00nux\x00nvavnwb\x00nxq\x00nxr\x00nyyanym" + + "\x00nyn\x00nzi\x00occiogc\x00ojjiokr\x00okv\x00omrmong\x00onn\x00ons\x00" + + "opm\x00orrioro\x00oru\x00osssosa\x00ota\x00otk\x00ozm\x00paanpag\x00pal" + + "\x00pam\x00pap\x00pau\x00pbi\x00pcd\x00pcm\x00pdc\x00pdt\x00ped\x00peo" + + "\x00pex\x00pfl\x00phl\x00phn\x00pilipil\x00pip\x00pka\x00pko\x00plolpla" + + "\x00pms\x00png\x00pnn\x00pnt\x00pon\x00ppo\x00pra\x00prd\x00prg\x00psusp" + + "ss\x00ptorptp\x00puu\x00pwa\x00quuequc\x00qug\x00rai\x00raj\x00rao\x00rc" + + "f\x00rej\x00rel\x00res\x00rgn\x00rhg\x00ria\x00rif\x00rjs\x00rkt\x00rmoh" + + "rmf\x00rmo\x00rmt\x00rmu\x00rnunrna\x00rng\x00roonrob\x00rof\x00roo\x00r" + + "ro\x00rtm\x00ruusrue\x00rug\x00rw\x00\x04rwk\x00rwo\x00ryu\x00saansaf" + + "\x00sah\x00saq\x00sas\x00sat\x00sav\x00saz\x00sba\x00sbe\x00sbp\x00scrds" + + "ck\x00scl\x00scn\x00sco\x00scs\x00sdndsdc\x00sdh\x00semesef\x00seh\x00se" + + "i\x00ses\x00sgagsga\x00sgs\x00sgw\x00sgz\x00sh\x00\x02shi\x00shk\x00shn" + + "\x00shu\x00siinsid\x00sig\x00sil\x00sim\x00sjr\x00sklkskc\x00skr\x00sks" + + "\x00sllvsld\x00sli\x00sll\x00sly\x00smmosma\x00smi\x00smj\x00smn\x00smp" + + "\x00smq\x00sms\x00snnasnc\x00snk\x00snp\x00snx\x00sny\x00soomsok\x00soq" + + "\x00sou\x00soy\x00spd\x00spl\x00sps\x00sqqisrrpsrb\x00srn\x00srr\x00srx" + + "\x00ssswssd\x00ssg\x00ssy\x00stotstk\x00stq\x00suunsua\x00sue\x00suk\x00" + + "sur\x00sus\x00svweswwaswb\x00swc\x00swg\x00swp\x00swv\x00sxn\x00sxw\x00s" + + "yl\x00syr\x00szl\x00taamtaj\x00tal\x00tan\x00taq\x00tbc\x00tbd\x00tbf" + + "\x00tbg\x00tbo\x00tbw\x00tbz\x00tci\x00tcy\x00tdd\x00tdg\x00tdh\x00teelt" + + "ed\x00tem\x00teo\x00tet\x00tfi\x00tggktgc\x00tgo\x00tgu\x00thhathl\x00th" + + "q\x00thr\x00tiirtif\x00tig\x00tik\x00tim\x00tio\x00tiv\x00tkuktkl\x00tkr" + + "\x00tkt\x00tlgltlf\x00tlx\x00tly\x00tmh\x00tmy\x00tnsntnh\x00toontof\x00" + + "tog\x00toq\x00tpi\x00tpm\x00tpz\x00tqo\x00trurtru\x00trv\x00trw\x00tssot" + + "sd\x00tsf\x00tsg\x00tsj\x00tsw\x00ttatttd\x00tte\x00ttj\x00ttr\x00tts" + + "\x00ttt\x00tuh\x00tul\x00tum\x00tuq\x00tvd\x00tvl\x00tvu\x00twwitwh\x00t" + + "wq\x00txg\x00tyahtya\x00tyv\x00tzm\x00ubu\x00udm\x00ugiguga\x00ukkruli" + + "\x00umb\x00und\x00unr\x00unx\x00urrduri\x00urt\x00urw\x00usa\x00utr\x00u" + + "vh\x00uvl\x00uzzbvag\x00vai\x00van\x00veenvec\x00vep\x00viievic\x00viv" + + "\x00vls\x00vmf\x00vmw\x00voolvot\x00vro\x00vun\x00vut\x00walnwae\x00waj" + + "\x00wal\x00wan\x00war\x00wbp\x00wbq\x00wbr\x00wci\x00wer\x00wgi\x00whg" + + "\x00wib\x00wiu\x00wiv\x00wja\x00wji\x00wls\x00wmo\x00wnc\x00wni\x00wnu" + + "\x00woolwob\x00wos\x00wrs\x00wsk\x00wtm\x00wuu\x00wuv\x00wwa\x00xav\x00x" + + "bi\x00xcr\x00xes\x00xhhoxla\x00xlc\x00xld\x00xmf\x00xmn\x00xmr\x00xna" + + "\x00xnr\x00xog\x00xon\x00xpr\x00xrb\x00xsa\x00xsi\x00xsm\x00xsr\x00xwe" + + "\x00yam\x00yao\x00yap\x00yas\x00yat\x00yav\x00yay\x00yaz\x00yba\x00ybb" + + "\x00yby\x00yer\x00ygr\x00ygw\x00yiidyko\x00yle\x00ylg\x00yll\x00yml\x00y" + + "ooryon\x00yrb\x00yre\x00yrl\x00yss\x00yua\x00yue\x00yuj\x00yut\x00yuw" + + "\x00zahazag\x00zbl\x00zdj\x00zea\x00zgh\x00zhhozhx\x00zia\x00zlm\x00zmi" + + "\x00zne\x00zuulzxx\x00zza\x00\xff\xff\xff\xff" + +const langNoIndexOffset = 1330 + +// langNoIndex is a bit vector of all 3-letter language codes that are not used as an index +// in lookup tables. The language ids for these language codes are derived directly +// from the letters and are not consecutive. +// Size: 2197 bytes, 2197 elements +var langNoIndex = [2197]uint8{ + // Entry 0 - 3F + 0xff, 0xf8, 0xed, 0xfe, 0xeb, 0xd3, 0x3b, 0xd2, + 0xfb, 0xbf, 0x7a, 0xfa, 0x37, 0x1d, 0x3c, 0x57, + 0x6e, 0x97, 0x73, 0x38, 0xfb, 0xea, 0xbf, 0x70, + 0xad, 0x03, 0xff, 0xff, 0xcf, 0x05, 0x84, 0x72, + 0xe9, 0xbf, 0xfd, 0xbf, 0xbf, 0xf7, 0xfd, 0x77, + 0x0f, 0xff, 0xef, 0x6f, 0xff, 0xfb, 0xdf, 0xe2, + 0xc9, 0xf8, 0x7f, 0x7e, 0x4d, 0xbc, 0x0a, 0x6a, + 0x7c, 0xea, 0xe3, 0xfa, 0x7a, 0xbf, 0x67, 0xff, + // Entry 40 - 7F + 0xff, 0xff, 0xff, 0xdf, 0x2a, 0x54, 0x91, 0xc0, + 0x5d, 0xe3, 0x97, 0x14, 0x07, 0x20, 0xdd, 0xed, + 0x9f, 0x3f, 0xc9, 0x21, 0xf8, 0x3f, 0x94, 0x35, + 0x7c, 0x5f, 0xff, 0x5f, 0x8e, 0x6e, 0xdf, 0xff, + 0xff, 0xff, 0x55, 0x7c, 0xd3, 0xfd, 0xbf, 0xb5, + 0x7b, 0xdf, 0x7f, 0xf7, 0xca, 0xfe, 0xdb, 0xa3, + 0xa8, 0xff, 0x1f, 0x67, 0x7d, 0xeb, 0xef, 0xce, + 0xff, 0xff, 0x9f, 0xff, 0xb7, 0xef, 0xfe, 0xcf, + // Entry 80 - BF + 0xdb, 0xff, 0xf3, 0xcd, 0xfb, 0x7f, 0xff, 0xff, + 0xbb, 0xee, 0xf7, 0xbd, 0xdb, 0xff, 0x5f, 0xf7, + 0xfd, 0xf2, 0xfd, 0xff, 0x5e, 0x2f, 0x3b, 0xba, + 0x7e, 0xff, 0xff, 0xfe, 0xf7, 0xff, 0xdd, 0xff, + 0xfd, 0xdf, 0xfb, 0xfe, 0x9d, 0xb4, 0xd3, 0xff, + 0xef, 0xff, 0xdf, 0xf7, 0x7f, 0xb7, 0xfd, 0xd5, + 0xa5, 0x77, 0x40, 0xff, 0x9c, 0xc1, 0x41, 0x2c, + 0x08, 0x21, 0x41, 0x00, 0x50, 0x40, 0x00, 0x80, + // Entry C0 - FF + 0xfb, 0x4a, 0xf2, 0x9f, 0xb4, 0x42, 0x41, 0x96, + 0x1b, 0x14, 0x08, 0xf3, 0x2b, 0xe7, 0x17, 0x56, + 0x05, 0x7d, 0x0e, 0x1c, 0x37, 0x7f, 0xf3, 0xef, + 0x97, 0xff, 0x5d, 0x38, 0x64, 0x08, 0x00, 0x10, + 0xbc, 0x85, 0xaf, 0xdf, 0xff, 0xff, 0x7b, 0x35, + 0x3e, 0xc7, 0xc7, 0xdf, 0xff, 0x01, 0x81, 0x00, + 0xb0, 0x05, 0x80, 0x00, 0x20, 0x00, 0x00, 0x03, + 0x40, 0x00, 0x40, 0x92, 0x21, 0x50, 0xb1, 0x5d, + // Entry 100 - 13F + 0xfd, 0xdc, 0xbe, 0x5e, 0x00, 0x00, 0x02, 0x64, + 0x0d, 0x19, 0x41, 0xdf, 0x79, 0x22, 0x00, 0x00, + 0x00, 0x5e, 0x64, 0xdc, 0x24, 0xe5, 0xd9, 0xe3, + 0xfe, 0xff, 0xfd, 0xcb, 0x9f, 0x14, 0x41, 0x0c, + 0x86, 0x00, 0xd1, 0x00, 0xf0, 0xc7, 0x67, 0x5f, + 0x56, 0x99, 0x5e, 0xb5, 0x6c, 0xaf, 0x03, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xc0, 0x37, 0xda, 0x56, + 0x90, 0x6d, 0x01, 0x2e, 0x96, 0x69, 0x20, 0xfb, + // Entry 140 - 17F + 0xff, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x0c, 0x16, + 0x03, 0x00, 0x00, 0xb0, 0x14, 0x23, 0x50, 0x06, + 0x0a, 0x00, 0x01, 0x00, 0x00, 0x10, 0x11, 0x09, + 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x10, + 0x00, 0x00, 0x44, 0x00, 0x00, 0x10, 0x00, 0x05, + 0x08, 0x00, 0x00, 0x05, 0x00, 0x80, 0x28, 0x04, + 0x00, 0x00, 0x40, 0xd5, 0x2d, 0x00, 0x64, 0x35, + 0x24, 0x52, 0xf4, 0xd5, 0xbf, 0x62, 0xc9, 0x03, + // Entry 180 - 1BF + 0x00, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x13, 0x39, 0x01, 0xdd, 0x57, 0x98, + 0x21, 0x18, 0x81, 0x08, 0x00, 0x01, 0x40, 0x82, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x40, 0x00, 0x44, 0x00, 0x00, 0x80, 0xea, + 0xa9, 0x39, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + // Entry 1C0 - 1FF + 0x00, 0x03, 0x28, 0x05, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x20, 0x04, 0xa6, 0x00, 0x04, 0x00, 0x00, + 0x81, 0x50, 0x00, 0x00, 0x00, 0x11, 0x84, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x55, + 0x02, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00, 0x40, + 0x30, 0x83, 0x01, 0x00, 0x00, 0x00, 0x11, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1e, 0xcd, 0xbf, 0x7a, 0xbf, + // Entry 200 - 23F + 0xdf, 0xc3, 0x83, 0x82, 0xc0, 0xfb, 0x57, 0x27, + 0xed, 0x55, 0xe7, 0x01, 0x00, 0x20, 0xb2, 0xc5, + 0xa4, 0x45, 0x25, 0x9b, 0x02, 0xdf, 0xe1, 0xdf, + 0x03, 0x44, 0x08, 0x90, 0x01, 0x04, 0x81, 0xe3, + 0x92, 0x54, 0xdb, 0x28, 0xd3, 0x5f, 0xfe, 0x6d, + 0x79, 0xed, 0x1c, 0x7f, 0x04, 0x08, 0x00, 0x01, + 0x21, 0x12, 0x64, 0x5f, 0xdd, 0x0e, 0x85, 0x4f, + 0x40, 0x40, 0x00, 0x04, 0xf1, 0xfd, 0x3d, 0x54, + // Entry 240 - 27F + 0xe8, 0x03, 0xb4, 0x27, 0x23, 0x0d, 0x00, 0x00, + 0x20, 0x7b, 0x78, 0x02, 0x07, 0x84, 0x00, 0xf0, + 0xbb, 0x7e, 0x5a, 0x00, 0x18, 0x04, 0x81, 0x00, + 0x00, 0x00, 0x80, 0x10, 0x90, 0x1c, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x04, + 0x08, 0xa0, 0x70, 0xa5, 0x0c, 0x40, 0x00, 0x00, + 0x91, 0x24, 0x04, 0x68, 0x00, 0x20, 0x70, 0xff, + 0x7b, 0x7f, 0x70, 0x00, 0x05, 0x9b, 0xdd, 0x66, + // Entry 280 - 2BF + 0x03, 0x00, 0x11, 0x00, 0x00, 0x00, 0x40, 0x05, + 0xb5, 0xb6, 0x80, 0x08, 0x04, 0x00, 0x04, 0x51, + 0xe2, 0xef, 0xfd, 0x3f, 0x05, 0x09, 0x08, 0x05, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x60, + 0xe7, 0x48, 0x00, 0x81, 0x20, 0xc0, 0x05, 0x80, + 0x03, 0x00, 0x00, 0x00, 0x8c, 0x50, 0x40, 0x04, + 0x84, 0x47, 0x84, 0x40, 0x20, 0x10, 0x00, 0x20, + // Entry 2C0 - 2FF + 0x02, 0x50, 0x80, 0x11, 0x00, 0x99, 0x6c, 0xe2, + 0x50, 0x27, 0x1d, 0x11, 0x29, 0x0e, 0x59, 0xe9, + 0x33, 0x08, 0x00, 0x20, 0x04, 0x40, 0x10, 0x00, + 0x00, 0x00, 0x50, 0x44, 0x92, 0x49, 0xd6, 0x5d, + 0xa7, 0x81, 0x47, 0x97, 0xfb, 0x00, 0x10, 0x00, + 0x08, 0x00, 0x80, 0x00, 0x40, 0x04, 0x00, 0x01, + 0x02, 0x00, 0x01, 0x40, 0x80, 0x00, 0x40, 0x08, + 0xd8, 0xeb, 0xf6, 0x39, 0xc4, 0x8d, 0x12, 0x00, + // Entry 300 - 33F + 0x00, 0x0c, 0x04, 0x01, 0x20, 0x20, 0xdd, 0xa0, + 0x01, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x04, 0x10, 0xd0, 0x9d, 0x95, 0x13, 0x04, 0x80, + 0x00, 0x01, 0xd0, 0x16, 0x40, 0x00, 0x10, 0xb0, + 0x10, 0x62, 0x4c, 0xd2, 0x02, 0x01, 0x4a, 0x00, + 0x46, 0x04, 0x00, 0x08, 0x02, 0x00, 0x20, 0x80, + 0x00, 0x80, 0x06, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0xf0, 0xd8, 0x6f, 0x15, 0x02, 0x08, 0x00, + // Entry 340 - 37F + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, + 0x00, 0x10, 0x00, 0x00, 0x00, 0xf0, 0x84, 0xe3, + 0xdd, 0xbf, 0xf9, 0xf9, 0x3b, 0x7f, 0x7f, 0xdb, + 0xfd, 0xfc, 0xfe, 0xdf, 0xff, 0xfd, 0xff, 0xf6, + 0xfb, 0xfc, 0xf7, 0x1f, 0xff, 0xb3, 0x6c, 0xff, + 0xd9, 0xad, 0xdf, 0xfe, 0xef, 0xba, 0xdf, 0xff, + 0xff, 0xff, 0xb7, 0xdd, 0x7d, 0xbf, 0xab, 0x7f, + 0xfd, 0xfd, 0xdf, 0x2f, 0x9c, 0xdf, 0xf3, 0x6f, + // Entry 380 - 3BF + 0xdf, 0xdd, 0xff, 0xfb, 0xee, 0xd2, 0xab, 0x5f, + 0xd5, 0xdf, 0x7f, 0xff, 0xeb, 0xff, 0xe4, 0x4d, + 0xf9, 0xff, 0xfe, 0xf7, 0xfd, 0xdf, 0xfb, 0xbf, + 0xee, 0xdb, 0x6f, 0xef, 0xff, 0x7f, 0xff, 0xff, + 0xf7, 0x5f, 0xd3, 0x3b, 0xfd, 0xd9, 0xdf, 0xeb, + 0xbc, 0x08, 0x05, 0x24, 0xff, 0x07, 0x70, 0xfe, + 0xe6, 0x5e, 0x00, 0x08, 0x00, 0x83, 0x7d, 0x1f, + 0x06, 0xe6, 0x72, 0x60, 0xd1, 0x3c, 0x7f, 0x44, + // Entry 3C0 - 3FF + 0x02, 0x30, 0x9f, 0x7a, 0x16, 0xbd, 0x7f, 0x57, + 0xf2, 0xff, 0x31, 0xff, 0xf2, 0x1e, 0x90, 0xf7, + 0xf1, 0xf9, 0x45, 0x80, 0x01, 0x02, 0x00, 0x20, + 0x40, 0x54, 0x9f, 0x8a, 0xdf, 0xf9, 0x6e, 0x11, + 0x86, 0x51, 0xc0, 0xf3, 0xfb, 0x47, 0x40, 0x03, + 0x05, 0xd1, 0x50, 0x5c, 0x00, 0x40, 0x00, 0x10, + 0x04, 0x02, 0x00, 0x00, 0x0a, 0x00, 0x17, 0xd2, + 0xb9, 0xfd, 0xfc, 0xba, 0xfe, 0xef, 0xc7, 0xbe, + // Entry 400 - 43F + 0x53, 0x6f, 0xdf, 0xe7, 0xdb, 0x65, 0xbb, 0x7f, + 0xfa, 0xff, 0x77, 0xf3, 0xef, 0xbf, 0xfd, 0xf7, + 0xdf, 0xdf, 0x9b, 0x7f, 0xff, 0xff, 0x7f, 0x6f, + 0xf7, 0xfb, 0xeb, 0xdf, 0xbc, 0xff, 0xbf, 0x6b, + 0x7b, 0xfb, 0xff, 0xce, 0x76, 0xbd, 0xf7, 0xf7, + 0xdf, 0xdc, 0xf7, 0xf7, 0xff, 0xdf, 0xf3, 0xfe, + 0xef, 0xff, 0xff, 0xff, 0xb6, 0x7f, 0x7f, 0xde, + 0xf7, 0xb9, 0xeb, 0x77, 0xff, 0xfb, 0xbf, 0xdf, + // Entry 440 - 47F + 0xfd, 0xfe, 0xfb, 0xff, 0xfe, 0xeb, 0x1f, 0x7d, + 0x2f, 0xfd, 0xb6, 0xb5, 0xa5, 0xfc, 0xff, 0xfd, + 0x7f, 0x4e, 0xbf, 0x8f, 0xae, 0xff, 0xee, 0xdf, + 0x7f, 0xf7, 0x73, 0x02, 0x02, 0x04, 0xfc, 0xf7, + 0xff, 0xb7, 0xd7, 0xef, 0xfe, 0xcd, 0xf5, 0xce, + 0xe2, 0x8e, 0xe7, 0xbf, 0xb7, 0xff, 0x56, 0xfd, + 0xcd, 0xff, 0xfb, 0xff, 0xdf, 0xd7, 0xea, 0xff, + 0xe5, 0x5f, 0x6d, 0x0f, 0xa7, 0x51, 0x06, 0xc4, + // Entry 480 - 4BF + 0x93, 0x50, 0x5d, 0xaf, 0xa6, 0xff, 0x99, 0xfb, + 0x63, 0x1d, 0x53, 0xff, 0xef, 0xb7, 0x35, 0x20, + 0x14, 0x00, 0x55, 0x51, 0xc2, 0x65, 0xf5, 0x41, + 0xe2, 0xff, 0xfc, 0xdf, 0x02, 0x85, 0xc5, 0x05, + 0x00, 0x22, 0x00, 0x74, 0x69, 0x10, 0x08, 0x05, + 0x41, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x51, 0x20, 0x05, 0x04, 0x01, 0x00, 0x00, + 0x06, 0x11, 0x20, 0x00, 0x18, 0x01, 0x92, 0xf1, + // Entry 4C0 - 4FF + 0xfd, 0x47, 0x69, 0x06, 0x95, 0x06, 0x57, 0xed, + 0xfb, 0x4d, 0x1c, 0x6b, 0x83, 0x04, 0x62, 0x40, + 0x00, 0x11, 0x42, 0x00, 0x00, 0x00, 0x54, 0x83, + 0xb8, 0x4f, 0x10, 0x8e, 0x89, 0x46, 0xde, 0xf7, + 0x13, 0x31, 0x00, 0x20, 0x00, 0x00, 0x00, 0x90, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x10, 0x00, + 0x01, 0x00, 0x00, 0xf0, 0x5b, 0xf4, 0xbe, 0x3d, + 0xbe, 0xcf, 0xf7, 0xaf, 0x42, 0x04, 0x84, 0x41, + // Entry 500 - 53F + 0x30, 0xff, 0x79, 0x72, 0x04, 0x00, 0x00, 0x49, + 0x2d, 0x14, 0x27, 0x5f, 0xed, 0xf1, 0x3f, 0xe7, + 0x3f, 0x00, 0x00, 0x02, 0xc6, 0xa0, 0x1e, 0xf8, + 0xbb, 0xff, 0xfd, 0xfb, 0xb7, 0xfd, 0xe7, 0xf7, + 0xfd, 0xfc, 0xd5, 0xed, 0x47, 0xf4, 0x7e, 0x10, + 0x01, 0x01, 0x84, 0x6d, 0xff, 0xf7, 0xdd, 0xf9, + 0x5b, 0x05, 0x86, 0xed, 0xf5, 0x77, 0xbd, 0x3c, + 0x00, 0x00, 0x00, 0x42, 0x71, 0x42, 0x00, 0x40, + // Entry 540 - 57F + 0x00, 0x00, 0x01, 0x43, 0x19, 0x24, 0x08, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + // Entry 580 - 5BF + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xab, 0xbd, 0xe7, 0x57, 0xee, 0x13, 0x5d, + 0x09, 0xc1, 0x40, 0x21, 0xfa, 0x17, 0x01, 0x80, + 0x00, 0x00, 0x00, 0x00, 0xf0, 0xce, 0xfb, 0xbf, + 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, + 0x00, 0x30, 0x15, 0xa3, 0x10, 0x00, 0x00, 0x00, + 0x11, 0x04, 0x16, 0x00, 0x00, 0x02, 0x20, 0x81, + 0xa3, 0x01, 0x50, 0x00, 0x00, 0x83, 0x11, 0x40, + // Entry 5C0 - 5FF + 0x00, 0x00, 0x00, 0xf0, 0xdd, 0x7b, 0xbe, 0x02, + 0xaa, 0x10, 0x5d, 0x98, 0x52, 0x00, 0x80, 0x20, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x02, 0x02, + 0x3d, 0x40, 0x10, 0x02, 0x10, 0x61, 0x5a, 0x9d, + 0x31, 0x00, 0x00, 0x00, 0x01, 0x18, 0x02, 0x20, + 0x00, 0x00, 0x01, 0x00, 0x42, 0x00, 0x20, 0x00, + 0x00, 0x1f, 0xdf, 0xd2, 0xb9, 0xff, 0xfd, 0x3f, + 0x1f, 0x98, 0xcf, 0x9c, 0xff, 0xaf, 0x5f, 0xfe, + // Entry 600 - 63F + 0x7b, 0x4b, 0x40, 0x10, 0xe1, 0xfd, 0xaf, 0xd9, + 0xb7, 0xf6, 0xfb, 0xb3, 0xc7, 0xff, 0x6f, 0xf1, + 0x73, 0xb1, 0x7f, 0x9f, 0x7f, 0xbd, 0xfc, 0xb7, + 0xee, 0x1c, 0xfa, 0xcb, 0xef, 0xdd, 0xf9, 0xbd, + 0x6e, 0xae, 0x55, 0xfd, 0x6e, 0x81, 0x76, 0x9f, + 0xd4, 0x77, 0xf5, 0x7d, 0xfb, 0xff, 0xeb, 0xfe, + 0xbe, 0x5f, 0x46, 0x5b, 0xe9, 0x5f, 0x50, 0x18, + 0x02, 0xfa, 0xf7, 0x9d, 0x15, 0x97, 0x05, 0x0f, + // Entry 640 - 67F + 0x75, 0xc4, 0x7d, 0x81, 0x92, 0xf5, 0x57, 0x6c, + 0xff, 0xe4, 0xef, 0x6f, 0xff, 0xfc, 0xdd, 0xde, + 0xfc, 0xfd, 0x76, 0x5f, 0x7a, 0x3f, 0x00, 0x98, + 0x02, 0xfb, 0xa3, 0xef, 0xf3, 0xd6, 0xf2, 0xff, + 0xb9, 0xda, 0x7d, 0xd0, 0x3e, 0x15, 0x7b, 0xb4, + 0xf5, 0x3e, 0xff, 0xff, 0xf1, 0xf7, 0xff, 0xe7, + 0x5f, 0xff, 0xff, 0x9e, 0xdf, 0xf6, 0xd7, 0xb9, + 0xef, 0x27, 0x80, 0xbb, 0xc5, 0xff, 0xff, 0xe3, + // Entry 680 - 6BF + 0x97, 0x9d, 0xbf, 0x9f, 0xf7, 0xc7, 0xfd, 0x37, + 0xce, 0x7f, 0x44, 0x1d, 0x73, 0x7f, 0xf8, 0xda, + 0x5d, 0xce, 0x7d, 0x06, 0xb9, 0xea, 0x79, 0xa0, + 0x1a, 0x20, 0x00, 0x30, 0x02, 0x04, 0x24, 0x08, + 0x04, 0x00, 0x00, 0x40, 0xd4, 0x02, 0x04, 0x00, + 0x00, 0x04, 0x00, 0x04, 0x00, 0x20, 0x09, 0x06, + 0x50, 0x00, 0x08, 0x00, 0x00, 0x00, 0x24, 0x00, + 0x04, 0x00, 0x10, 0xdc, 0x58, 0xd7, 0x0d, 0x0f, + // Entry 6C0 - 6FF + 0x54, 0x4d, 0xf1, 0x16, 0x44, 0xd5, 0x42, 0x08, + 0x40, 0x02, 0x00, 0x40, 0x00, 0x08, 0x00, 0x00, + 0x00, 0xdc, 0xfb, 0xcb, 0x0e, 0x58, 0x48, 0x41, + 0x24, 0x20, 0x04, 0x00, 0x30, 0x12, 0x40, 0x00, + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x80, 0x10, 0x10, 0xab, + 0x6d, 0x93, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x80, 0x25, 0x00, 0x00, + // Entry 700 - 73F + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x80, 0x86, 0xc2, 0x00, 0x00, 0x01, 0x00, 0x01, + 0xff, 0x18, 0x02, 0x00, 0x02, 0xf0, 0xfd, 0x79, + 0x3b, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, + 0x03, 0x00, 0x09, 0x20, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 740 - 77F + 0x00, 0x00, 0x00, 0xef, 0xd5, 0xfd, 0xcf, 0x7e, + 0xb0, 0x11, 0x00, 0x00, 0x00, 0x92, 0x01, 0x46, + 0xcd, 0xf9, 0x5c, 0x00, 0x01, 0x00, 0x30, 0x04, + 0x04, 0x55, 0x00, 0x01, 0x04, 0xf4, 0x3f, 0x4a, + 0x01, 0x00, 0x00, 0xb0, 0x80, 0x20, 0x55, 0x75, + 0x97, 0x7c, 0xdf, 0x31, 0xcc, 0x68, 0xd1, 0x03, + 0xd5, 0x57, 0x27, 0x14, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x2c, 0xf7, 0xcb, 0x1f, 0x14, 0x60, + // Entry 780 - 7BF + 0x83, 0x68, 0x01, 0x10, 0x8b, 0x38, 0x8a, 0x01, + 0x00, 0x00, 0x20, 0x00, 0x24, 0x44, 0x00, 0x00, + 0x10, 0x03, 0x31, 0x02, 0x01, 0x00, 0x00, 0xf0, + 0xf5, 0xff, 0xd5, 0x97, 0xbc, 0x70, 0xd6, 0x78, + 0x78, 0x15, 0x50, 0x05, 0xa4, 0x84, 0xa9, 0x41, + 0x00, 0x00, 0x00, 0x6b, 0x39, 0x52, 0x74, 0x40, + 0xe8, 0x30, 0x90, 0x6a, 0x92, 0x00, 0x00, 0x02, + 0xff, 0xef, 0xff, 0x4b, 0x85, 0x53, 0xf4, 0xed, + // Entry 7C0 - 7FF + 0xdd, 0xbf, 0xf2, 0x5d, 0xc7, 0x0c, 0xd5, 0x42, + 0xfc, 0xff, 0xf7, 0x1f, 0x00, 0x80, 0x40, 0x56, + 0xcc, 0x16, 0x9e, 0xea, 0x35, 0x7d, 0xef, 0xff, + 0xbd, 0xa4, 0xaf, 0x01, 0x44, 0x18, 0x01, 0x4d, + 0x4e, 0x4a, 0x08, 0x50, 0x28, 0x30, 0xe0, 0x80, + 0x10, 0x20, 0x24, 0x00, 0xff, 0x2f, 0xd3, 0x60, + 0xfe, 0x01, 0x02, 0x88, 0x2a, 0x40, 0x16, 0x01, + 0x01, 0x15, 0x2b, 0x3c, 0x01, 0x00, 0x00, 0x10, + // Entry 800 - 83F + 0x90, 0x49, 0x41, 0x02, 0x02, 0x01, 0xe1, 0xbf, + 0xbf, 0x03, 0x00, 0x00, 0x10, 0xdc, 0xa3, 0xd1, + 0x40, 0x9c, 0x44, 0xdf, 0xf5, 0x8f, 0x66, 0xb3, + 0x55, 0x20, 0xd4, 0xc1, 0xd8, 0x30, 0x3d, 0x80, + 0x00, 0x00, 0x00, 0x04, 0xd4, 0x11, 0xc5, 0x84, + 0x2f, 0x50, 0x00, 0x22, 0x50, 0x6e, 0xbd, 0x93, + 0x07, 0x00, 0x20, 0x10, 0x84, 0xb2, 0x45, 0x10, + 0x06, 0x44, 0x00, 0x00, 0x12, 0x02, 0x11, 0x00, + // Entry 840 - 87F + 0xf0, 0xfb, 0xfd, 0x7f, 0x05, 0x00, 0x16, 0x89, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x02, 0x28, + 0x84, 0x00, 0x21, 0xc0, 0x23, 0x24, 0x00, 0x00, + 0x00, 0xcb, 0xe4, 0x3a, 0x46, 0x88, 0x54, 0xf1, + 0xef, 0xff, 0x7f, 0x12, 0x01, 0x01, 0x84, 0x50, + 0x07, 0xfc, 0xff, 0xff, 0x0f, 0x01, 0x00, 0x40, + 0x10, 0x38, 0x01, 0x01, 0x1c, 0x12, 0x40, 0xe1, + // Entry 880 - 8BF + 0x76, 0x16, 0x08, 0x03, 0x10, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x24, + 0x0a, 0x00, 0x80, 0x00, 0x00, +} + +// altLangISO3 holds an alphabetically sorted list of 3-letter language code alternatives +// to 2-letter language codes that cannot be derived using the method described above. +// Each 3-letter code is followed by its 1-byte langID. +const altLangISO3 tag.Index = "---\x00cor\x00hbs\x01heb\x02kin\x03spa\x04yid\x05\xff\xff\xff\xff" + +// altLangIndex is used to convert indexes in altLangISO3 to langIDs. +// Size: 12 bytes, 6 elements +var altLangIndex = [6]uint16{ + 0x0281, 0x0407, 0x01fb, 0x03e5, 0x013e, 0x0208, +} + +// AliasMap maps langIDs to their suggested replacements. +// Size: 772 bytes, 193 elements +var AliasMap = [193]FromTo{ + 0: {From: 0x82, To: 0x88}, + 1: {From: 0x187, To: 0x1ae}, + 2: {From: 0x1f3, To: 0x1e1}, + 3: {From: 0x1fb, To: 0x1bc}, + 4: {From: 0x208, To: 0x512}, + 5: {From: 0x20f, To: 0x20e}, + 6: {From: 0x310, To: 0x3dc}, + 7: {From: 0x347, To: 0x36f}, + 8: {From: 0x407, To: 0x432}, + 9: {From: 0x47a, To: 0x153}, + 10: {From: 0x490, To: 0x451}, + 11: {From: 0x4a2, To: 0x21}, + 12: {From: 0x53e, To: 0x544}, + 13: {From: 0x58f, To: 0x12d}, + 14: {From: 0x62b, To: 0x34}, + 15: {From: 0x62f, To: 0x14}, + 16: {From: 0x630, To: 0x1eb1}, + 17: {From: 0x651, To: 0x431}, + 18: {From: 0x662, To: 0x431}, + 19: {From: 0x6ed, To: 0x3a}, + 20: {From: 0x6f8, To: 0x1d7}, + 21: {From: 0x709, To: 0x3625}, + 22: {From: 0x73e, To: 0x21a1}, + 23: {From: 0x7b3, To: 0x56}, + 24: {From: 0x7b9, To: 0x299b}, + 25: {From: 0x7c5, To: 0x58}, + 26: {From: 0x7e6, To: 0x145}, + 27: {From: 0x80c, To: 0x5a}, + 28: {From: 0x815, To: 0x8d}, + 29: {From: 0x87e, To: 0x810}, + 30: {From: 0x8a8, To: 0x8b7}, + 31: {From: 0x8c3, To: 0xee3}, + 32: {From: 0x8fa, To: 0x1dc}, + 33: {From: 0x9ef, To: 0x331}, + 34: {From: 0xa36, To: 0x2c5}, + 35: {From: 0xa3d, To: 0xbf}, + 36: {From: 0xabe, To: 0x3322}, + 37: {From: 0xb38, To: 0x529}, + 38: {From: 0xb75, To: 0x265a}, + 39: {From: 0xb7e, To: 0xbc3}, + 40: {From: 0xb9b, To: 0x44e}, + 41: {From: 0xbbc, To: 0x4229}, + 42: {From: 0xbbf, To: 0x529}, + 43: {From: 0xbfe, To: 0x2da7}, + 44: {From: 0xc2e, To: 0x3181}, + 45: {From: 0xcb9, To: 0xf3}, + 46: {From: 0xd08, To: 0xfa}, + 47: {From: 0xdc8, To: 0x11a}, + 48: {From: 0xdd7, To: 0x32d}, + 49: {From: 0xdf8, To: 0xdfb}, + 50: {From: 0xdfe, To: 0x531}, + 51: {From: 0xe01, To: 0xdf3}, + 52: {From: 0xedf, To: 0x205a}, + 53: {From: 0xee9, To: 0x222e}, + 54: {From: 0xeee, To: 0x2e9a}, + 55: {From: 0xf39, To: 0x367}, + 56: {From: 0x10d0, To: 0x140}, + 57: {From: 0x1104, To: 0x2d0}, + 58: {From: 0x11a0, To: 0x1ec}, + 59: {From: 0x1279, To: 0x21}, + 60: {From: 0x1424, To: 0x15e}, + 61: {From: 0x1470, To: 0x14e}, + 62: {From: 0x151f, To: 0xd9b}, + 63: {From: 0x1523, To: 0x390}, + 64: {From: 0x1532, To: 0x19f}, + 65: {From: 0x1580, To: 0x210}, + 66: {From: 0x1583, To: 0x10d}, + 67: {From: 0x15a3, To: 0x3caf}, + 68: {From: 0x1630, To: 0x222e}, + 69: {From: 0x166a, To: 0x19b}, + 70: {From: 0x16c8, To: 0x136}, + 71: {From: 0x1700, To: 0x29f8}, + 72: {From: 0x1718, To: 0x194}, + 73: {From: 0x1727, To: 0xf3f}, + 74: {From: 0x177a, To: 0x178}, + 75: {From: 0x1809, To: 0x17b6}, + 76: {From: 0x1816, To: 0x18f3}, + 77: {From: 0x188a, To: 0x436}, + 78: {From: 0x1979, To: 0x1d01}, + 79: {From: 0x1a74, To: 0x2bb0}, + 80: {From: 0x1a8a, To: 0x1f8}, + 81: {From: 0x1b5a, To: 0x1fa}, + 82: {From: 0x1b86, To: 0x1515}, + 83: {From: 0x1d64, To: 0x2c9b}, + 84: {From: 0x2038, To: 0x37b1}, + 85: {From: 0x203d, To: 0x20dd}, + 86: {From: 0x2042, To: 0x2e00}, + 87: {From: 0x205a, To: 0x30b}, + 88: {From: 0x20e3, To: 0x274}, + 89: {From: 0x20ee, To: 0x263}, + 90: {From: 0x20f2, To: 0x22d}, + 91: {From: 0x20f9, To: 0x256}, + 92: {From: 0x210f, To: 0x21eb}, + 93: {From: 0x2135, To: 0x27d}, + 94: {From: 0x2160, To: 0x913}, + 95: {From: 0x2199, To: 0x121}, + 96: {From: 0x21ce, To: 0x1561}, + 97: {From: 0x21e6, To: 0x504}, + 98: {From: 0x21f4, To: 0x49f}, + 99: {From: 0x21fb, To: 0x269}, + 100: {From: 0x222d, To: 0x121}, + 101: {From: 0x2237, To: 0x121}, + 102: {From: 0x2248, To: 0x217d}, + 103: {From: 0x2262, To: 0x92a}, + 104: {From: 0x2316, To: 0x3226}, + 105: {From: 0x236a, To: 0x2835}, + 106: {From: 0x2382, To: 0x3365}, + 107: {From: 0x2472, To: 0x2c7}, + 108: {From: 0x24e4, To: 0x2ff}, + 109: {From: 0x24f0, To: 0x2fa}, + 110: {From: 0x24fa, To: 0x31f}, + 111: {From: 0x2550, To: 0xb5b}, + 112: {From: 0x25a9, To: 0xe2}, + 113: {From: 0x263e, To: 0x2d0}, + 114: {From: 0x26c9, To: 0x26b4}, + 115: {From: 0x26f9, To: 0x3c8}, + 116: {From: 0x2727, To: 0x3caf}, + 117: {From: 0x2755, To: 0x6a4}, + 118: {From: 0x2765, To: 0x26b4}, + 119: {From: 0x2789, To: 0x4358}, + 120: {From: 0x27c9, To: 0x2001}, + 121: {From: 0x28ea, To: 0x27b1}, + 122: {From: 0x28ef, To: 0x2837}, + 123: {From: 0x28fe, To: 0xaa5}, + 124: {From: 0x2914, To: 0x351}, + 125: {From: 0x2986, To: 0x2da7}, + 126: {From: 0x29f0, To: 0x96b}, + 127: {From: 0x2b1a, To: 0x38d}, + 128: {From: 0x2bfc, To: 0x395}, + 129: {From: 0x2c3f, To: 0x3caf}, + 130: {From: 0x2ce1, To: 0x2201}, + 131: {From: 0x2cfc, To: 0x3be}, + 132: {From: 0x2d13, To: 0x597}, + 133: {From: 0x2d47, To: 0x148}, + 134: {From: 0x2d48, To: 0x148}, + 135: {From: 0x2dff, To: 0x2f1}, + 136: {From: 0x2e08, To: 0x19cc}, + 137: {From: 0x2e10, To: 0xc45}, + 138: {From: 0x2e1a, To: 0x2d95}, + 139: {From: 0x2e21, To: 0x292}, + 140: {From: 0x2e54, To: 0x7d}, + 141: {From: 0x2e65, To: 0x2282}, + 142: {From: 0x2e97, To: 0x1a4}, + 143: {From: 0x2ea0, To: 0x2e9b}, + 144: {From: 0x2eef, To: 0x2ed7}, + 145: {From: 0x3193, To: 0x3c4}, + 146: {From: 0x3366, To: 0x338e}, + 147: {From: 0x342a, To: 0x3dc}, + 148: {From: 0x34ee, To: 0x18d0}, + 149: {From: 0x35c8, To: 0x2c9b}, + 150: {From: 0x35e6, To: 0x412}, + 151: {From: 0x35f5, To: 0x24b}, + 152: {From: 0x360d, To: 0x1dc}, + 153: {From: 0x3658, To: 0x246}, + 154: {From: 0x3676, To: 0x3f4}, + 155: {From: 0x36fd, To: 0x445}, + 156: {From: 0x3747, To: 0x3b42}, + 157: {From: 0x37c0, To: 0x121}, + 158: {From: 0x3816, To: 0x38f2}, + 159: {From: 0x382a, To: 0x2b48}, + 160: {From: 0x382b, To: 0x2c9b}, + 161: {From: 0x382f, To: 0xa9}, + 162: {From: 0x3832, To: 0x3228}, + 163: {From: 0x386c, To: 0x39a6}, + 164: {From: 0x3892, To: 0x3fc0}, + 165: {From: 0x38a0, To: 0x45f}, + 166: {From: 0x38a5, To: 0x39d7}, + 167: {From: 0x38b4, To: 0x1fa4}, + 168: {From: 0x38b5, To: 0x2e9a}, + 169: {From: 0x38fa, To: 0x38f1}, + 170: {From: 0x395c, To: 0x47e}, + 171: {From: 0x3b4e, To: 0xd91}, + 172: {From: 0x3b78, To: 0x137}, + 173: {From: 0x3c99, To: 0x4bc}, + 174: {From: 0x3fbd, To: 0x100}, + 175: {From: 0x4208, To: 0xa91}, + 176: {From: 0x42be, To: 0x573}, + 177: {From: 0x42f9, To: 0x3f60}, + 178: {From: 0x4378, To: 0x25a}, + 179: {From: 0x43b8, To: 0xe6c}, + 180: {From: 0x43cd, To: 0x10f}, + 181: {From: 0x43d4, To: 0x4848}, + 182: {From: 0x44af, To: 0x3322}, + 183: {From: 0x44e3, To: 0x512}, + 184: {From: 0x45ca, To: 0x2409}, + 185: {From: 0x45dd, To: 0x26dc}, + 186: {From: 0x4610, To: 0x48ae}, + 187: {From: 0x46ae, To: 0x46a0}, + 188: {From: 0x473e, To: 0x4745}, + 189: {From: 0x4817, To: 0x3503}, + 190: {From: 0x483b, To: 0x208b}, + 191: {From: 0x4916, To: 0x31f}, + 192: {From: 0x49a7, To: 0x523}, +} + +// Size: 193 bytes, 193 elements +var AliasTypes = [193]AliasType{ + // Entry 0 - 3F + 1, 0, 0, 0, 0, 0, 0, 1, 2, 2, 0, 1, 0, 0, 0, 0, + 1, 2, 1, 1, 2, 0, 0, 1, 0, 1, 2, 1, 1, 0, 0, 0, + 0, 2, 1, 1, 0, 2, 0, 0, 1, 0, 1, 0, 0, 1, 2, 1, + 1, 1, 1, 0, 0, 0, 0, 2, 1, 1, 1, 1, 2, 1, 0, 1, + // Entry 40 - 7F + 1, 2, 2, 0, 0, 1, 2, 0, 1, 0, 1, 1, 1, 1, 0, 0, + 2, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 2, 2, 2, 0, + 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, + // Entry 80 - BF + 1, 0, 0, 1, 0, 2, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 1, 1, 2, 0, 0, 2, 0, 0, 1, 1, 1, 0, 0, 0, 0, + 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 2, 0, + 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, + // Entry C0 - FF + 1, +} + +const ( + _Latn = 91 + _Hani = 57 + _Hans = 59 + _Hant = 60 + _Qaaa = 149 + _Qaai = 157 + _Qabx = 198 + _Zinh = 255 + _Zyyy = 260 + _Zzzz = 261 +) + +// script is an alphabetically sorted list of ISO 15924 codes. The index +// of the script in the string, divided by 4, is the internal scriptID. +const script tag.Index = "" + // Size: 1052 bytes + "----AdlmAfakAghbAhomArabAranArmiArmnAvstBaliBamuBassBatkBengBhksBlisBopo" + + "BrahBraiBugiBuhdCakmCansCariChamCherChrsCirtCoptCpmnCprtCyrlCyrsDevaDiak" + + "DogrDsrtDuplEgydEgyhEgypElbaElymEthiGeokGeorGlagGongGonmGothGranGrekGujr" + + "GuruHanbHangHaniHanoHansHantHatrHebrHiraHluwHmngHmnpHrktHungIndsItalJamo" + + "JavaJpanJurcKaliKanaKawiKharKhmrKhojKitlKitsKndaKoreKpelKthiLanaLaooLatf" + + "LatgLatnLekeLepcLimbLinaLinbLisuLomaLyciLydiMahjMakaMandManiMarcMayaMedf" + + "MendMercMeroMlymModiMongMoonMrooMteiMultMymrNagmNandNarbNbatNewaNkdbNkgb" + + "NkooNshuOgamOlckOrkhOryaOsgeOsmaOugrPalmPaucPcunPelmPermPhagPhliPhlpPhlv" + + "PhnxPiqdPlrdPrtiPsinQaaaQaabQaacQaadQaaeQaafQaagQaahQaaiQaajQaakQaalQaam" + + "QaanQaaoQaapQaaqQaarQaasQaatQaauQaavQaawQaaxQaayQaazQabaQabbQabcQabdQabe" + + "QabfQabgQabhQabiQabjQabkQablQabmQabnQaboQabpQabqQabrQabsQabtQabuQabvQabw" + + "QabxRanjRjngRohgRoroRunrSamrSaraSarbSaurSgnwShawShrdShuiSiddSindSinhSogd" + + "SogoSoraSoyoSundSunuSyloSyrcSyreSyrjSyrnTagbTakrTaleTaluTamlTangTavtTelu" + + "TengTfngTglgThaaThaiTibtTirhTnsaTotoUgarVaiiVispVithWaraWchoWoleXpeoXsux" + + "YeziYiiiZanbZinhZmthZsyeZsymZxxxZyyyZzzz\xff\xff\xff\xff" + +// suppressScript is an index from langID to the dominant script for that language, +// if it exists. If a script is given, it should be suppressed from the language tag. +// Size: 1330 bytes, 1330 elements +var suppressScript = [1330]uint8{ + // Entry 0 - 3F + 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 40 - 7F + 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, + // Entry 80 - BF + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry C0 - FF + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 100 - 13F + 0x5b, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xed, 0x00, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, + 0x00, 0x5b, 0x00, 0x00, 0x5b, 0x00, 0x5b, 0x00, + // Entry 140 - 17F + 0x5b, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, + 0x00, 0x5b, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x5b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 180 - 1BF + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x5b, 0x35, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x22, 0x00, + // Entry 1C0 - 1FF + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x5b, 0x5b, 0x00, 0x5b, 0x5b, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, + 0x5b, 0x5b, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, + // Entry 200 - 23F + 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 240 - 27F + 0x00, 0x00, 0x20, 0x00, 0x00, 0x5b, 0x00, 0x00, + 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x53, 0x00, 0x00, 0x54, 0x00, 0x22, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 280 - 2BF + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 2C0 - 2FF + 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, + // Entry 300 - 33F + 0x00, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x5b, + 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, + // Entry 340 - 37F + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, + 0x5b, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, + 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x5b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x5b, 0x00, + 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 380 - 3BF + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + // Entry 3C0 - 3FF + 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x00, 0x5b, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x20, 0x00, 0x00, 0x5b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 400 - 43F + 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, + 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, + 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, + // Entry 440 - 47F + 0x00, 0x00, 0x00, 0x00, 0x5b, 0x5b, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xe9, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x2c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, + 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, + // Entry 480 - 4BF + 0x5b, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, + 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 4C0 - 4FF + 0x5b, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 500 - 53F + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, + 0x00, 0x00, +} + +const ( + _001 = 1 + _419 = 31 + _BR = 65 + _CA = 73 + _ES = 111 + _GB = 124 + _MD = 189 + _PT = 239 + _UK = 307 + _US = 310 + _ZZ = 358 + _XA = 324 + _XC = 326 + _XK = 334 +) + +// isoRegionOffset needs to be added to the index of regionISO to obtain the regionID +// for 2-letter ISO codes. (The first isoRegionOffset regionIDs are reserved for +// the UN.M49 codes used for groups.) +const isoRegionOffset = 32 + +// regionTypes defines the status of a region for various standards. +// Size: 359 bytes, 359 elements +var regionTypes = [359]uint8{ + // Entry 0 - 3F + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + // Entry 40 - 7F + 0x06, 0x06, 0x06, 0x06, 0x04, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x04, 0x04, 0x06, + 0x04, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x04, 0x06, 0x04, 0x06, 0x06, 0x06, 0x06, 0x00, + 0x06, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x00, 0x06, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, + // Entry 80 - BF + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x00, 0x04, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + // Entry C0 - FF + 0x06, 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x00, 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, 0x04, + 0x06, 0x06, 0x06, 0x06, 0x00, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x00, 0x06, 0x06, 0x00, 0x06, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + // Entry 100 - 13F + 0x05, 0x05, 0x05, 0x06, 0x00, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x04, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x02, 0x06, 0x04, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x00, 0x06, 0x06, 0x06, 0x06, + // Entry 140 - 17F + 0x06, 0x06, 0x00, 0x06, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x04, 0x06, + 0x06, 0x04, 0x06, 0x06, 0x04, 0x06, 0x05, +} + +// regionISO holds a list of alphabetically sorted 2-letter ISO region codes. +// Each 2-letter codes is followed by two bytes with the following meaning: +// - [A-Z}{2}: the first letter of the 2-letter code plus these two +// letters form the 3-letter ISO code. +// - 0, n: index into altRegionISO3. +const regionISO tag.Index = "" + // Size: 1312 bytes + "AAAAACSCADNDAEREAFFGAGTGAIIAALLBAMRMANNTAOGOAQTAARRGASSMATUTAUUSAWBWAXLA" + + "AZZEBAIHBBRBBDGDBEELBFFABGGRBHHRBIDIBJENBLLMBMMUBNRNBOOLBQESBRRABSHSBTTN" + + "BUURBVVTBWWABYLRBZLZCAANCCCKCDODCFAFCGOGCHHECIIVCKOKCLHLCMMRCNHNCOOLCPPT" + + "CQ CRRICS\x00\x00CTTECUUBCVPVCWUWCXXRCYYPCZZEDDDRDEEUDGGADJJIDKNKDMMADO" + + "OMDYHYDZZAEA ECCUEESTEGGYEHSHERRIESSPETTHEU\x00\x03EZ FIINFJJIFKLKFMSM" + + "FOROFQ\x00\x18FRRAFXXXGAABGBBRGDRDGEEOGFUFGGGYGHHAGIIBGLRLGMMBGNINGPLPGQ" + + "NQGRRCGS\x00\x06GTTMGUUMGWNBGYUYHKKGHMMDHNNDHRRVHTTIHUUNHVVOIC IDDNIERL" + + "ILSRIMMNINNDIOOTIQRQIRRNISSLITTAJEEYJMAMJOORJPPNJTTNKEENKGGZKHHMKIIRKM" + + "\x00\x09KNNAKP\x00\x0cKRORKWWTKY\x00\x0fKZAZLAAOLBBNLCCALIIELKKALRBRLSSO" + + "LTTULUUXLVVALYBYMAARMCCOMDDAMENEMFAFMGDGMHHLMIIDMKKDMLLIMMMRMNNGMOACMPNP" + + "MQTQMRRTMSSRMTLTMUUSMVDVMWWIMXEXMYYSMZOZNAAMNCCLNEERNFFKNGGANHHBNIICNLLD" + + "NOORNPPLNQ\x00\x1eNRRUNTTZNUIUNZZLOMMNPAANPCCIPEERPFYFPGNGPHHLPKAKPLOLPM" + + "\x00\x12PNCNPRRIPSSEPTRTPUUSPWLWPYRYPZCZQAATQMMMQNNNQOOOQPPPQQQQQRRRQSSS" + + "QTTTQU\x00\x03QVVVQWWWQXXXQYYYQZZZREEURHHOROOURS\x00\x15RUUSRWWASAAUSBLB" + + "SCYCSDDNSEWESGGPSHHNSIVNSJJMSKVKSLLESMMRSNENSOOMSRURSSSDSTTPSUUNSVLVSXXM" + + "SYYRSZWZTAAATCCATDCDTF\x00\x18TGGOTHHATJJKTKKLTLLSTMKMTNUNTOONTPMPTRURTT" + + "TOTVUVTWWNTZZAUAKRUGGAUK UMMIUN USSAUYRYUZZBVAATVCCTVDDRVEENVGGBVIIRVN" + + "NMVUUTWFLFWKAKWSSMXAAAXBBBXCCCXDDDXEEEXFFFXGGGXHHHXIIIXJJJXKKKXLLLXMMMXN" + + "NNXOOOXPPPXQQQXRRRXSSSXTTTXUUUXVVVXWWWXXXXXYYYXZZZYDMDYEEMYT\x00\x1bYUUG" + + "ZAAFZMMBZRARZWWEZZZZ\xff\xff\xff\xff" + +// altRegionISO3 holds a list of 3-letter region codes that cannot be +// mapped to 2-letter codes using the default algorithm. This is a short list. +const altRegionISO3 string = "SCGQUUSGSCOMPRKCYMSPMSRBATFMYTATN" + +// altRegionIDs holds a list of regionIDs the positions of which match those +// of the 3-letter ISO codes in altRegionISO3. +// Size: 22 bytes, 11 elements +var altRegionIDs = [11]uint16{ + 0x0058, 0x0071, 0x0089, 0x00a9, 0x00ab, 0x00ae, 0x00eb, 0x0106, + 0x0122, 0x0160, 0x00dd, +} + +// Size: 80 bytes, 20 elements +var regionOldMap = [20]FromTo{ + 0: {From: 0x44, To: 0xc5}, + 1: {From: 0x59, To: 0xa8}, + 2: {From: 0x60, To: 0x61}, + 3: {From: 0x67, To: 0x3b}, + 4: {From: 0x7a, To: 0x79}, + 5: {From: 0x94, To: 0x37}, + 6: {From: 0xa4, To: 0x134}, + 7: {From: 0xc2, To: 0x134}, + 8: {From: 0xd8, To: 0x140}, + 9: {From: 0xdd, To: 0x2b}, + 10: {From: 0xf0, To: 0x134}, + 11: {From: 0xf3, To: 0xe3}, + 12: {From: 0xfd, To: 0x71}, + 13: {From: 0x104, To: 0x165}, + 14: {From: 0x12b, To: 0x127}, + 15: {From: 0x133, To: 0x7c}, + 16: {From: 0x13b, To: 0x13f}, + 17: {From: 0x142, To: 0x134}, + 18: {From: 0x15e, To: 0x15f}, + 19: {From: 0x164, To: 0x4b}, +} + +// m49 maps regionIDs to UN.M49 codes. The first isoRegionOffset entries are +// codes indicating collections of regions. +// Size: 718 bytes, 359 elements +var m49 = [359]int16{ + // Entry 0 - 3F + 0, 1, 2, 3, 5, 9, 11, 13, + 14, 15, 17, 18, 19, 21, 29, 30, + 34, 35, 39, 53, 54, 57, 61, 142, + 143, 145, 150, 151, 154, 155, 202, 419, + 958, 0, 20, 784, 4, 28, 660, 8, + 51, 530, 24, 10, 32, 16, 40, 36, + 533, 248, 31, 70, 52, 50, 56, 854, + 100, 48, 108, 204, 652, 60, 96, 68, + // Entry 40 - 7F + 535, 76, 44, 64, 104, 74, 72, 112, + 84, 124, 166, 180, 140, 178, 756, 384, + 184, 152, 120, 156, 170, 0, 0, 188, + 891, 296, 192, 132, 531, 162, 196, 203, + 278, 276, 0, 262, 208, 212, 214, 204, + 12, 0, 218, 233, 818, 732, 232, 724, + 231, 967, 0, 246, 242, 238, 583, 234, + 0, 250, 249, 266, 826, 308, 268, 254, + // Entry 80 - BF + 831, 288, 292, 304, 270, 324, 312, 226, + 300, 239, 320, 316, 624, 328, 344, 334, + 340, 191, 332, 348, 854, 0, 360, 372, + 376, 833, 356, 86, 368, 364, 352, 380, + 832, 388, 400, 392, 581, 404, 417, 116, + 296, 174, 659, 408, 410, 414, 136, 398, + 418, 422, 662, 438, 144, 430, 426, 440, + 442, 428, 434, 504, 492, 498, 499, 663, + // Entry C0 - FF + 450, 584, 581, 807, 466, 104, 496, 446, + 580, 474, 478, 500, 470, 480, 462, 454, + 484, 458, 508, 516, 540, 562, 574, 566, + 548, 558, 528, 578, 524, 10, 520, 536, + 570, 554, 512, 591, 0, 604, 258, 598, + 608, 586, 616, 666, 612, 630, 275, 620, + 581, 585, 600, 591, 634, 959, 960, 961, + 962, 963, 964, 965, 966, 967, 968, 969, + // Entry 100 - 13F + 970, 971, 972, 638, 716, 642, 688, 643, + 646, 682, 90, 690, 729, 752, 702, 654, + 705, 744, 703, 694, 674, 686, 706, 740, + 728, 678, 810, 222, 534, 760, 748, 0, + 796, 148, 260, 768, 764, 762, 772, 626, + 795, 788, 776, 626, 792, 780, 798, 158, + 834, 804, 800, 826, 581, 0, 840, 858, + 860, 336, 670, 704, 862, 92, 850, 704, + // Entry 140 - 17F + 548, 876, 581, 882, 973, 974, 975, 976, + 977, 978, 979, 980, 981, 982, 983, 984, + 985, 986, 987, 988, 989, 990, 991, 992, + 993, 994, 995, 996, 997, 998, 720, 887, + 175, 891, 710, 894, 180, 716, 999, +} + +// m49Index gives indexes into fromM49 based on the three most significant bits +// of a 10-bit UN.M49 code. To search an UN.M49 code in fromM49, search in +// +// fromM49[m49Index[msb39(code)]:m49Index[msb3(code)+1]] +// +// for an entry where the first 7 bits match the 7 lsb of the UN.M49 code. +// The region code is stored in the 9 lsb of the indexed value. +// Size: 18 bytes, 9 elements +var m49Index = [9]int16{ + 0, 59, 108, 143, 181, 220, 259, 291, + 333, +} + +// fromM49 contains entries to map UN.M49 codes to regions. See m49Index for details. +// Size: 666 bytes, 333 elements +var fromM49 = [333]uint16{ + // Entry 0 - 3F + 0x0201, 0x0402, 0x0603, 0x0824, 0x0a04, 0x1027, 0x1205, 0x142b, + 0x1606, 0x1868, 0x1a07, 0x1c08, 0x1e09, 0x202d, 0x220a, 0x240b, + 0x260c, 0x2822, 0x2a0d, 0x302a, 0x3825, 0x3a0e, 0x3c0f, 0x3e32, + 0x402c, 0x4410, 0x4611, 0x482f, 0x4e12, 0x502e, 0x5842, 0x6039, + 0x6435, 0x6628, 0x6834, 0x6a13, 0x6c14, 0x7036, 0x7215, 0x783d, + 0x7a16, 0x8043, 0x883f, 0x8c33, 0x9046, 0x9445, 0x9841, 0xa848, + 0xac9b, 0xb50a, 0xb93d, 0xc03e, 0xc838, 0xd0c5, 0xd83a, 0xe047, + 0xe8a7, 0xf052, 0xf849, 0x085b, 0x10ae, 0x184c, 0x1c17, 0x1e18, + // Entry 40 - 7F + 0x20b4, 0x2219, 0x2921, 0x2c1a, 0x2e1b, 0x3051, 0x341c, 0x361d, + 0x3853, 0x3d2f, 0x445d, 0x4c4a, 0x5454, 0x5ca9, 0x5f60, 0x644d, + 0x684b, 0x7050, 0x7857, 0x7e91, 0x805a, 0x885e, 0x941e, 0x965f, + 0x983b, 0xa064, 0xa865, 0xac66, 0xb46a, 0xbd1b, 0xc487, 0xcc70, + 0xce70, 0xd06e, 0xd26b, 0xd477, 0xdc75, 0xde89, 0xe474, 0xec73, + 0xf031, 0xf27a, 0xf479, 0xfc7f, 0x04e6, 0x0922, 0x0c63, 0x147b, + 0x187e, 0x1c84, 0x26ee, 0x2861, 0x2c60, 0x3061, 0x4081, 0x4882, + 0x50a8, 0x5888, 0x6083, 0x687d, 0x7086, 0x788b, 0x808a, 0x8885, + // Entry 80 - BF + 0x908d, 0x9892, 0x9c8f, 0xa139, 0xa890, 0xb08e, 0xb893, 0xc09e, + 0xc89a, 0xd096, 0xd89d, 0xe09c, 0xe897, 0xf098, 0xf89f, 0x004f, + 0x08a1, 0x10a3, 0x1caf, 0x20a2, 0x28a5, 0x30ab, 0x34ac, 0x3cad, + 0x42a6, 0x44b0, 0x461f, 0x4cb1, 0x54b6, 0x58b9, 0x5cb5, 0x64ba, + 0x6cb3, 0x70b7, 0x74b8, 0x7cc7, 0x84c0, 0x8ccf, 0x94d1, 0x9cce, + 0xa4c4, 0xaccc, 0xb4c9, 0xbcca, 0xc0cd, 0xc8d0, 0xd8bc, 0xe0c6, + 0xe4bd, 0xe6be, 0xe8cb, 0xf0bb, 0xf8d2, 0x00e2, 0x08d3, 0x10de, + 0x18dc, 0x20da, 0x2429, 0x265c, 0x2a30, 0x2d1c, 0x2e40, 0x30df, + // Entry C0 - FF + 0x38d4, 0x4940, 0x54e1, 0x5cd9, 0x64d5, 0x6cd7, 0x74e0, 0x7cd6, + 0x84db, 0x88c8, 0x8b34, 0x8e76, 0x90c1, 0x92f1, 0x94e9, 0x9ee3, + 0xace7, 0xb0f2, 0xb8e5, 0xc0e8, 0xc8ec, 0xd0ea, 0xd8ef, 0xe08c, + 0xe527, 0xeced, 0xf4f4, 0xfd03, 0x0505, 0x0707, 0x0d08, 0x183c, + 0x1d0f, 0x26aa, 0x2826, 0x2cb2, 0x2ebf, 0x34eb, 0x3d3a, 0x4514, + 0x4d19, 0x5509, 0x5d15, 0x6106, 0x650b, 0x6d13, 0x7d0e, 0x7f12, + 0x813f, 0x8310, 0x8516, 0x8d62, 0x9965, 0xa15e, 0xa86f, 0xb118, + 0xb30c, 0xb86d, 0xc10c, 0xc917, 0xd111, 0xd91e, 0xe10d, 0xe84e, + // Entry 100 - 13F + 0xf11d, 0xf525, 0xf924, 0x0123, 0x0926, 0x112a, 0x192d, 0x2023, + 0x2929, 0x312c, 0x3728, 0x3920, 0x3d2e, 0x4132, 0x4931, 0x4ec3, + 0x551a, 0x646c, 0x747c, 0x7e80, 0x80a0, 0x8299, 0x8530, 0x9136, + 0xa53e, 0xac37, 0xb537, 0xb938, 0xbd3c, 0xd941, 0xe543, 0xed5f, + 0xef5f, 0xf658, 0xfd63, 0x7c20, 0x7ef5, 0x80f6, 0x82f7, 0x84f8, + 0x86f9, 0x88fa, 0x8afb, 0x8cfc, 0x8e71, 0x90fe, 0x92ff, 0x9500, + 0x9701, 0x9902, 0x9b44, 0x9d45, 0x9f46, 0xa147, 0xa348, 0xa549, + 0xa74a, 0xa94b, 0xab4c, 0xad4d, 0xaf4e, 0xb14f, 0xb350, 0xb551, + // Entry 140 - 17F + 0xb752, 0xb953, 0xbb54, 0xbd55, 0xbf56, 0xc157, 0xc358, 0xc559, + 0xc75a, 0xc95b, 0xcb5c, 0xcd5d, 0xcf66, +} + +// Size: 2128 bytes +var variantIndex = map[string]uint8{ + "1606nict": 0x0, + "1694acad": 0x1, + "1901": 0x2, + "1959acad": 0x3, + "1994": 0x67, + "1996": 0x4, + "abl1943": 0x5, + "akuapem": 0x6, + "alalc97": 0x69, + "aluku": 0x7, + "ao1990": 0x8, + "aranes": 0x9, + "arevela": 0xa, + "arevmda": 0xb, + "arkaika": 0xc, + "asante": 0xd, + "auvern": 0xe, + "baku1926": 0xf, + "balanka": 0x10, + "barla": 0x11, + "basiceng": 0x12, + "bauddha": 0x13, + "bciav": 0x14, + "bcizbl": 0x15, + "biscayan": 0x16, + "biske": 0x62, + "bohoric": 0x17, + "boont": 0x18, + "bornholm": 0x19, + "cisaup": 0x1a, + "colb1945": 0x1b, + "cornu": 0x1c, + "creiss": 0x1d, + "dajnko": 0x1e, + "ekavsk": 0x1f, + "emodeng": 0x20, + "fonipa": 0x6a, + "fonkirsh": 0x6b, + "fonnapa": 0x6c, + "fonupa": 0x6d, + "fonxsamp": 0x6e, + "gallo": 0x21, + "gascon": 0x22, + "grclass": 0x23, + "grital": 0x24, + "grmistr": 0x25, + "hepburn": 0x26, + "heploc": 0x68, + "hognorsk": 0x27, + "hsistemo": 0x28, + "ijekavsk": 0x29, + "itihasa": 0x2a, + "ivanchov": 0x2b, + "jauer": 0x2c, + "jyutping": 0x2d, + "kkcor": 0x2e, + "kociewie": 0x2f, + "kscor": 0x30, + "laukika": 0x31, + "lemosin": 0x32, + "lengadoc": 0x33, + "lipaw": 0x63, + "ltg1929": 0x34, + "ltg2007": 0x35, + "luna1918": 0x36, + "metelko": 0x37, + "monoton": 0x38, + "ndyuka": 0x39, + "nedis": 0x3a, + "newfound": 0x3b, + "nicard": 0x3c, + "njiva": 0x64, + "nulik": 0x3d, + "osojs": 0x65, + "oxendict": 0x3e, + "pahawh2": 0x3f, + "pahawh3": 0x40, + "pahawh4": 0x41, + "pamaka": 0x42, + "peano": 0x43, + "petr1708": 0x44, + "pinyin": 0x45, + "polyton": 0x46, + "provenc": 0x47, + "puter": 0x48, + "rigik": 0x49, + "rozaj": 0x4a, + "rumgr": 0x4b, + "scotland": 0x4c, + "scouse": 0x4d, + "simple": 0x6f, + "solba": 0x66, + "sotav": 0x4e, + "spanglis": 0x4f, + "surmiran": 0x50, + "sursilv": 0x51, + "sutsilv": 0x52, + "synnejyl": 0x53, + "tarask": 0x54, + "tongyong": 0x55, + "tunumiit": 0x56, + "uccor": 0x57, + "ucrcor": 0x58, + "ulster": 0x59, + "unifon": 0x5a, + "vaidika": 0x5b, + "valencia": 0x5c, + "vallader": 0x5d, + "vecdruka": 0x5e, + "vivaraup": 0x5f, + "wadegile": 0x60, + "xsistemo": 0x61, +} + +// variantNumSpecialized is the number of specialized variants in variants. +const variantNumSpecialized = 105 + +// nRegionGroups is the number of region groups. +const nRegionGroups = 33 + +type likelyLangRegion struct { + lang uint16 + region uint16 +} + +// likelyScript is a lookup table, indexed by scriptID, for the most likely +// languages and regions given a script. +// Size: 1052 bytes, 263 elements +var likelyScript = [263]likelyLangRegion{ + 1: {lang: 0x14e, region: 0x85}, + 3: {lang: 0x2a2, region: 0x107}, + 4: {lang: 0x1f, region: 0x9a}, + 5: {lang: 0x3a, region: 0x6c}, + 7: {lang: 0x3b, region: 0x9d}, + 8: {lang: 0x1d7, region: 0x28}, + 9: {lang: 0x13, region: 0x9d}, + 10: {lang: 0x5b, region: 0x96}, + 11: {lang: 0x60, region: 0x52}, + 12: {lang: 0xb9, region: 0xb5}, + 13: {lang: 0x63, region: 0x96}, + 14: {lang: 0xa5, region: 0x35}, + 15: {lang: 0x3e9, region: 0x9a}, + 17: {lang: 0x529, region: 0x12f}, + 18: {lang: 0x3b1, region: 0x9a}, + 19: {lang: 0x15e, region: 0x79}, + 20: {lang: 0xc2, region: 0x96}, + 21: {lang: 0x9d, region: 0xe8}, + 22: {lang: 0xdb, region: 0x35}, + 23: {lang: 0xf3, region: 0x49}, + 24: {lang: 0x4f0, region: 0x12c}, + 25: {lang: 0xe7, region: 0x13f}, + 26: {lang: 0xe5, region: 0x136}, + 29: {lang: 0xf1, region: 0x6c}, + 31: {lang: 0x1a0, region: 0x5e}, + 32: {lang: 0x3e2, region: 0x107}, + 34: {lang: 0x1be, region: 0x9a}, + 38: {lang: 0x15e, region: 0x79}, + 41: {lang: 0x133, region: 0x6c}, + 42: {lang: 0x431, region: 0x27}, + 44: {lang: 0x27, region: 0x70}, + 46: {lang: 0x210, region: 0x7e}, + 47: {lang: 0xfe, region: 0x38}, + 49: {lang: 0x19b, region: 0x9a}, + 50: {lang: 0x19e, region: 0x131}, + 51: {lang: 0x3e9, region: 0x9a}, + 52: {lang: 0x136, region: 0x88}, + 53: {lang: 0x1a4, region: 0x9a}, + 54: {lang: 0x39d, region: 0x9a}, + 55: {lang: 0x529, region: 0x12f}, + 56: {lang: 0x254, region: 0xac}, + 57: {lang: 0x529, region: 0x53}, + 58: {lang: 0x1cb, region: 0xe8}, + 59: {lang: 0x529, region: 0x53}, + 60: {lang: 0x529, region: 0x12f}, + 61: {lang: 0x2fd, region: 0x9c}, + 62: {lang: 0x1bc, region: 0x98}, + 63: {lang: 0x200, region: 0xa3}, + 64: {lang: 0x1c5, region: 0x12c}, + 65: {lang: 0x1ca, region: 0xb0}, + 68: {lang: 0x1d5, region: 0x93}, + 70: {lang: 0x142, region: 0x9f}, + 71: {lang: 0x254, region: 0xac}, + 72: {lang: 0x20e, region: 0x96}, + 73: {lang: 0x200, region: 0xa3}, + 75: {lang: 0x135, region: 0xc5}, + 76: {lang: 0x200, region: 0xa3}, + 78: {lang: 0x3bb, region: 0xe9}, + 79: {lang: 0x24a, region: 0xa7}, + 80: {lang: 0x3fa, region: 0x9a}, + 83: {lang: 0x251, region: 0x9a}, + 84: {lang: 0x254, region: 0xac}, + 86: {lang: 0x88, region: 0x9a}, + 87: {lang: 0x370, region: 0x124}, + 88: {lang: 0x2b8, region: 0xb0}, + 93: {lang: 0x29f, region: 0x9a}, + 94: {lang: 0x2a8, region: 0x9a}, + 95: {lang: 0x28f, region: 0x88}, + 96: {lang: 0x1a0, region: 0x88}, + 97: {lang: 0x2ac, region: 0x53}, + 99: {lang: 0x4f4, region: 0x12c}, + 100: {lang: 0x4f5, region: 0x12c}, + 101: {lang: 0x1be, region: 0x9a}, + 103: {lang: 0x337, region: 0x9d}, + 104: {lang: 0x4f7, region: 0x53}, + 105: {lang: 0xa9, region: 0x53}, + 108: {lang: 0x2e8, region: 0x113}, + 109: {lang: 0x4f8, region: 0x10c}, + 110: {lang: 0x4f8, region: 0x10c}, + 111: {lang: 0x304, region: 0x9a}, + 112: {lang: 0x31b, region: 0x9a}, + 113: {lang: 0x30b, region: 0x53}, + 115: {lang: 0x31e, region: 0x35}, + 116: {lang: 0x30e, region: 0x9a}, + 117: {lang: 0x414, region: 0xe9}, + 118: {lang: 0x331, region: 0xc5}, + 121: {lang: 0x4f9, region: 0x109}, + 122: {lang: 0x3b, region: 0xa2}, + 123: {lang: 0x353, region: 0xdc}, + 126: {lang: 0x2d0, region: 0x85}, + 127: {lang: 0x52a, region: 0x53}, + 128: {lang: 0x403, region: 0x97}, + 129: {lang: 0x3ee, region: 0x9a}, + 130: {lang: 0x39b, region: 0xc6}, + 131: {lang: 0x395, region: 0x9a}, + 132: {lang: 0x399, region: 0x136}, + 133: {lang: 0x429, region: 0x116}, + 135: {lang: 0x3b, region: 0x11d}, + 136: {lang: 0xfd, region: 0xc5}, + 139: {lang: 0x27d, region: 0x107}, + 140: {lang: 0x2c9, region: 0x53}, + 141: {lang: 0x39f, region: 0x9d}, + 142: {lang: 0x39f, region: 0x53}, + 144: {lang: 0x3ad, region: 0xb1}, + 146: {lang: 0x1c6, region: 0x53}, + 147: {lang: 0x4fd, region: 0x9d}, + 200: {lang: 0x3cb, region: 0x96}, + 203: {lang: 0x372, region: 0x10d}, + 204: {lang: 0x420, region: 0x98}, + 206: {lang: 0x4ff, region: 0x15f}, + 207: {lang: 0x3f0, region: 0x9a}, + 208: {lang: 0x45, region: 0x136}, + 209: {lang: 0x139, region: 0x7c}, + 210: {lang: 0x3e9, region: 0x9a}, + 212: {lang: 0x3e9, region: 0x9a}, + 213: {lang: 0x3fa, region: 0x9a}, + 214: {lang: 0x40c, region: 0xb4}, + 217: {lang: 0x433, region: 0x9a}, + 218: {lang: 0xef, region: 0xc6}, + 219: {lang: 0x43e, region: 0x96}, + 221: {lang: 0x44d, region: 0x35}, + 222: {lang: 0x44e, region: 0x9c}, + 226: {lang: 0x45a, region: 0xe8}, + 227: {lang: 0x11a, region: 0x9a}, + 228: {lang: 0x45e, region: 0x53}, + 229: {lang: 0x232, region: 0x53}, + 230: {lang: 0x450, region: 0x9a}, + 231: {lang: 0x4a5, region: 0x53}, + 232: {lang: 0x9f, region: 0x13f}, + 233: {lang: 0x461, region: 0x9a}, + 235: {lang: 0x528, region: 0xbb}, + 236: {lang: 0x153, region: 0xe8}, + 237: {lang: 0x128, region: 0xce}, + 238: {lang: 0x46b, region: 0x124}, + 239: {lang: 0xa9, region: 0x53}, + 240: {lang: 0x2ce, region: 0x9a}, + 243: {lang: 0x4ad, region: 0x11d}, + 244: {lang: 0x4be, region: 0xb5}, + 247: {lang: 0x1ce, region: 0x9a}, + 250: {lang: 0x3a9, region: 0x9d}, + 251: {lang: 0x22, region: 0x9c}, + 253: {lang: 0x1ea, region: 0x53}, + 254: {lang: 0xef, region: 0xc6}, +} + +type likelyScriptRegion struct { + region uint16 + script uint16 + flags uint8 +} + +// likelyLang is a lookup table, indexed by langID, for the most likely +// scripts and regions given incomplete information. If more entries exist for a +// given language, region and script are the index and size respectively +// of the list in likelyLangList. +// Size: 7980 bytes, 1330 elements +var likelyLang = [1330]likelyScriptRegion{ + 0: {region: 0x136, script: 0x5b, flags: 0x0}, + 1: {region: 0x70, script: 0x5b, flags: 0x0}, + 2: {region: 0x166, script: 0x5b, flags: 0x0}, + 3: {region: 0x166, script: 0x5b, flags: 0x0}, + 4: {region: 0x166, script: 0x5b, flags: 0x0}, + 5: {region: 0x7e, script: 0x20, flags: 0x0}, + 6: {region: 0x166, script: 0x5b, flags: 0x0}, + 7: {region: 0x166, script: 0x20, flags: 0x0}, + 8: {region: 0x81, script: 0x5b, flags: 0x0}, + 9: {region: 0x166, script: 0x5b, flags: 0x0}, + 10: {region: 0x166, script: 0x5b, flags: 0x0}, + 11: {region: 0x166, script: 0x5b, flags: 0x0}, + 12: {region: 0x96, script: 0x5b, flags: 0x0}, + 13: {region: 0x132, script: 0x5b, flags: 0x0}, + 14: {region: 0x81, script: 0x5b, flags: 0x0}, + 15: {region: 0x166, script: 0x5b, flags: 0x0}, + 16: {region: 0x166, script: 0x5b, flags: 0x0}, + 17: {region: 0x107, script: 0x20, flags: 0x0}, + 18: {region: 0x166, script: 0x5b, flags: 0x0}, + 19: {region: 0x9d, script: 0x9, flags: 0x0}, + 20: {region: 0x129, script: 0x5, flags: 0x0}, + 21: {region: 0x166, script: 0x5b, flags: 0x0}, + 22: {region: 0x162, script: 0x5b, flags: 0x0}, + 23: {region: 0x166, script: 0x5b, flags: 0x0}, + 24: {region: 0x166, script: 0x5b, flags: 0x0}, + 25: {region: 0x166, script: 0x5b, flags: 0x0}, + 26: {region: 0x166, script: 0x5b, flags: 0x0}, + 27: {region: 0x166, script: 0x5b, flags: 0x0}, + 28: {region: 0x52, script: 0x5b, flags: 0x0}, + 29: {region: 0x166, script: 0x5b, flags: 0x0}, + 30: {region: 0x166, script: 0x5b, flags: 0x0}, + 31: {region: 0x9a, script: 0x4, flags: 0x0}, + 32: {region: 0x166, script: 0x5b, flags: 0x0}, + 33: {region: 0x81, script: 0x5b, flags: 0x0}, + 34: {region: 0x9c, script: 0xfb, flags: 0x0}, + 35: {region: 0x166, script: 0x5b, flags: 0x0}, + 36: {region: 0x166, script: 0x5b, flags: 0x0}, + 37: {region: 0x14e, script: 0x5b, flags: 0x0}, + 38: {region: 0x107, script: 0x20, flags: 0x0}, + 39: {region: 0x70, script: 0x2c, flags: 0x0}, + 40: {region: 0x166, script: 0x5b, flags: 0x0}, + 41: {region: 0x166, script: 0x5b, flags: 0x0}, + 42: {region: 0xd7, script: 0x5b, flags: 0x0}, + 43: {region: 0x166, script: 0x5b, flags: 0x0}, + 45: {region: 0x166, script: 0x5b, flags: 0x0}, + 46: {region: 0x166, script: 0x5b, flags: 0x0}, + 47: {region: 0x166, script: 0x5b, flags: 0x0}, + 48: {region: 0x166, script: 0x5b, flags: 0x0}, + 49: {region: 0x166, script: 0x5b, flags: 0x0}, + 50: {region: 0x166, script: 0x5b, flags: 0x0}, + 51: {region: 0x96, script: 0x5b, flags: 0x0}, + 52: {region: 0x166, script: 0x5, flags: 0x0}, + 53: {region: 0x123, script: 0x5, flags: 0x0}, + 54: {region: 0x166, script: 0x5b, flags: 0x0}, + 55: {region: 0x166, script: 0x5b, flags: 0x0}, + 56: {region: 0x166, script: 0x5b, flags: 0x0}, + 57: {region: 0x166, script: 0x5b, flags: 0x0}, + 58: {region: 0x6c, script: 0x5, flags: 0x0}, + 59: {region: 0x0, script: 0x3, flags: 0x1}, + 60: {region: 0x166, script: 0x5b, flags: 0x0}, + 61: {region: 0x51, script: 0x5b, flags: 0x0}, + 62: {region: 0x3f, script: 0x5b, flags: 0x0}, + 63: {region: 0x68, script: 0x5, flags: 0x0}, + 65: {region: 0xbb, script: 0x5, flags: 0x0}, + 66: {region: 0x6c, script: 0x5, flags: 0x0}, + 67: {region: 0x9a, script: 0xe, flags: 0x0}, + 68: {region: 0x130, script: 0x5b, flags: 0x0}, + 69: {region: 0x136, script: 0xd0, flags: 0x0}, + 70: {region: 0x166, script: 0x5b, flags: 0x0}, + 71: {region: 0x166, script: 0x5b, flags: 0x0}, + 72: {region: 0x6f, script: 0x5b, flags: 0x0}, + 73: {region: 0x166, script: 0x5b, flags: 0x0}, + 74: {region: 0x166, script: 0x5b, flags: 0x0}, + 75: {region: 0x49, script: 0x5b, flags: 0x0}, + 76: {region: 0x166, script: 0x5b, flags: 0x0}, + 77: {region: 0x107, script: 0x20, flags: 0x0}, + 78: {region: 0x166, script: 0x5, flags: 0x0}, + 79: {region: 0x166, script: 0x5b, flags: 0x0}, + 80: {region: 0x166, script: 0x5b, flags: 0x0}, + 81: {region: 0x166, script: 0x5b, flags: 0x0}, + 82: {region: 0x9a, script: 0x22, flags: 0x0}, + 83: {region: 0x166, script: 0x5b, flags: 0x0}, + 84: {region: 0x166, script: 0x5b, flags: 0x0}, + 85: {region: 0x166, script: 0x5b, flags: 0x0}, + 86: {region: 0x3f, script: 0x5b, flags: 0x0}, + 87: {region: 0x166, script: 0x5b, flags: 0x0}, + 88: {region: 0x3, script: 0x5, flags: 0x1}, + 89: {region: 0x107, script: 0x20, flags: 0x0}, + 90: {region: 0xe9, script: 0x5, flags: 0x0}, + 91: {region: 0x96, script: 0x5b, flags: 0x0}, + 92: {region: 0xdc, script: 0x22, flags: 0x0}, + 93: {region: 0x2e, script: 0x5b, flags: 0x0}, + 94: {region: 0x52, script: 0x5b, flags: 0x0}, + 95: {region: 0x166, script: 0x5b, flags: 0x0}, + 96: {region: 0x52, script: 0xb, flags: 0x0}, + 97: {region: 0x166, script: 0x5b, flags: 0x0}, + 98: {region: 0x166, script: 0x5b, flags: 0x0}, + 99: {region: 0x96, script: 0x5b, flags: 0x0}, + 100: {region: 0x166, script: 0x5b, flags: 0x0}, + 101: {region: 0x52, script: 0x5b, flags: 0x0}, + 102: {region: 0x166, script: 0x5b, flags: 0x0}, + 103: {region: 0x166, script: 0x5b, flags: 0x0}, + 104: {region: 0x166, script: 0x5b, flags: 0x0}, + 105: {region: 0x166, script: 0x5b, flags: 0x0}, + 106: {region: 0x4f, script: 0x5b, flags: 0x0}, + 107: {region: 0x166, script: 0x5b, flags: 0x0}, + 108: {region: 0x166, script: 0x5b, flags: 0x0}, + 109: {region: 0x166, script: 0x5b, flags: 0x0}, + 110: {region: 0x166, script: 0x2c, flags: 0x0}, + 111: {region: 0x166, script: 0x5b, flags: 0x0}, + 112: {region: 0x166, script: 0x5b, flags: 0x0}, + 113: {region: 0x47, script: 0x20, flags: 0x0}, + 114: {region: 0x166, script: 0x5b, flags: 0x0}, + 115: {region: 0x166, script: 0x5b, flags: 0x0}, + 116: {region: 0x10c, script: 0x5, flags: 0x0}, + 117: {region: 0x163, script: 0x5b, flags: 0x0}, + 118: {region: 0x166, script: 0x5b, flags: 0x0}, + 119: {region: 0x96, script: 0x5b, flags: 0x0}, + 120: {region: 0x166, script: 0x5b, flags: 0x0}, + 121: {region: 0x130, script: 0x5b, flags: 0x0}, + 122: {region: 0x52, script: 0x5b, flags: 0x0}, + 123: {region: 0x9a, script: 0xe6, flags: 0x0}, + 124: {region: 0xe9, script: 0x5, flags: 0x0}, + 125: {region: 0x9a, script: 0x22, flags: 0x0}, + 126: {region: 0x38, script: 0x20, flags: 0x0}, + 127: {region: 0x9a, script: 0x22, flags: 0x0}, + 128: {region: 0xe9, script: 0x5, flags: 0x0}, + 129: {region: 0x12c, script: 0x34, flags: 0x0}, + 131: {region: 0x9a, script: 0x22, flags: 0x0}, + 132: {region: 0x166, script: 0x5b, flags: 0x0}, + 133: {region: 0x9a, script: 0x22, flags: 0x0}, + 134: {region: 0xe8, script: 0x5b, flags: 0x0}, + 135: {region: 0x166, script: 0x5b, flags: 0x0}, + 136: {region: 0x9a, script: 0x22, flags: 0x0}, + 137: {region: 0x166, script: 0x5b, flags: 0x0}, + 138: {region: 0x140, script: 0x5b, flags: 0x0}, + 139: {region: 0x166, script: 0x5b, flags: 0x0}, + 140: {region: 0x166, script: 0x5b, flags: 0x0}, + 141: {region: 0xe8, script: 0x5b, flags: 0x0}, + 142: {region: 0x166, script: 0x5b, flags: 0x0}, + 143: {region: 0xd7, script: 0x5b, flags: 0x0}, + 144: {region: 0x166, script: 0x5b, flags: 0x0}, + 145: {region: 0x166, script: 0x5b, flags: 0x0}, + 146: {region: 0x166, script: 0x5b, flags: 0x0}, + 147: {region: 0x166, script: 0x2c, flags: 0x0}, + 148: {region: 0x9a, script: 0x22, flags: 0x0}, + 149: {region: 0x96, script: 0x5b, flags: 0x0}, + 150: {region: 0x166, script: 0x5b, flags: 0x0}, + 151: {region: 0x166, script: 0x5b, flags: 0x0}, + 152: {region: 0x115, script: 0x5b, flags: 0x0}, + 153: {region: 0x166, script: 0x5b, flags: 0x0}, + 154: {region: 0x166, script: 0x5b, flags: 0x0}, + 155: {region: 0x52, script: 0x5b, flags: 0x0}, + 156: {region: 0x166, script: 0x5b, flags: 0x0}, + 157: {region: 0xe8, script: 0x5b, flags: 0x0}, + 158: {region: 0x166, script: 0x5b, flags: 0x0}, + 159: {region: 0x13f, script: 0xe8, flags: 0x0}, + 160: {region: 0xc4, script: 0x5b, flags: 0x0}, + 161: {region: 0x166, script: 0x5b, flags: 0x0}, + 162: {region: 0x166, script: 0x5b, flags: 0x0}, + 163: {region: 0xc4, script: 0x5b, flags: 0x0}, + 164: {region: 0x166, script: 0x5b, flags: 0x0}, + 165: {region: 0x35, script: 0xe, flags: 0x0}, + 166: {region: 0x166, script: 0x5b, flags: 0x0}, + 167: {region: 0x166, script: 0x5b, flags: 0x0}, + 168: {region: 0x166, script: 0x5b, flags: 0x0}, + 169: {region: 0x53, script: 0xef, flags: 0x0}, + 170: {region: 0x166, script: 0x5b, flags: 0x0}, + 171: {region: 0x166, script: 0x5b, flags: 0x0}, + 172: {region: 0x166, script: 0x5b, flags: 0x0}, + 173: {region: 0x9a, script: 0xe, flags: 0x0}, + 174: {region: 0x166, script: 0x5b, flags: 0x0}, + 175: {region: 0x9d, script: 0x5, flags: 0x0}, + 176: {region: 0x166, script: 0x5b, flags: 0x0}, + 177: {region: 0x4f, script: 0x5b, flags: 0x0}, + 178: {region: 0x79, script: 0x5b, flags: 0x0}, + 179: {region: 0x9a, script: 0x22, flags: 0x0}, + 180: {region: 0xe9, script: 0x5, flags: 0x0}, + 181: {region: 0x9a, script: 0x22, flags: 0x0}, + 182: {region: 0x166, script: 0x5b, flags: 0x0}, + 183: {region: 0x33, script: 0x5b, flags: 0x0}, + 184: {region: 0x166, script: 0x5b, flags: 0x0}, + 185: {region: 0xb5, script: 0xc, flags: 0x0}, + 186: {region: 0x52, script: 0x5b, flags: 0x0}, + 187: {region: 0x166, script: 0x2c, flags: 0x0}, + 188: {region: 0xe8, script: 0x5b, flags: 0x0}, + 189: {region: 0x166, script: 0x5b, flags: 0x0}, + 190: {region: 0xe9, script: 0x22, flags: 0x0}, + 191: {region: 0x107, script: 0x20, flags: 0x0}, + 192: {region: 0x160, script: 0x5b, flags: 0x0}, + 193: {region: 0x166, script: 0x5b, flags: 0x0}, + 194: {region: 0x96, script: 0x5b, flags: 0x0}, + 195: {region: 0x166, script: 0x5b, flags: 0x0}, + 196: {region: 0x52, script: 0x5b, flags: 0x0}, + 197: {region: 0x166, script: 0x5b, flags: 0x0}, + 198: {region: 0x166, script: 0x5b, flags: 0x0}, + 199: {region: 0x166, script: 0x5b, flags: 0x0}, + 200: {region: 0x87, script: 0x5b, flags: 0x0}, + 201: {region: 0x166, script: 0x5b, flags: 0x0}, + 202: {region: 0x166, script: 0x5b, flags: 0x0}, + 203: {region: 0x166, script: 0x5b, flags: 0x0}, + 204: {region: 0x166, script: 0x5b, flags: 0x0}, + 205: {region: 0x6e, script: 0x2c, flags: 0x0}, + 206: {region: 0x166, script: 0x5b, flags: 0x0}, + 207: {region: 0x166, script: 0x5b, flags: 0x0}, + 208: {region: 0x52, script: 0x5b, flags: 0x0}, + 209: {region: 0x166, script: 0x5b, flags: 0x0}, + 210: {region: 0x166, script: 0x5b, flags: 0x0}, + 211: {region: 0xc4, script: 0x5b, flags: 0x0}, + 212: {region: 0x166, script: 0x5b, flags: 0x0}, + 213: {region: 0x166, script: 0x5b, flags: 0x0}, + 214: {region: 0x166, script: 0x5b, flags: 0x0}, + 215: {region: 0x6f, script: 0x5b, flags: 0x0}, + 216: {region: 0x166, script: 0x5b, flags: 0x0}, + 217: {region: 0x166, script: 0x5b, flags: 0x0}, + 218: {region: 0xd7, script: 0x5b, flags: 0x0}, + 219: {region: 0x35, script: 0x16, flags: 0x0}, + 220: {region: 0x107, script: 0x20, flags: 0x0}, + 221: {region: 0xe8, script: 0x5b, flags: 0x0}, + 222: {region: 0x166, script: 0x5b, flags: 0x0}, + 223: {region: 0x132, script: 0x5b, flags: 0x0}, + 224: {region: 0x8b, script: 0x5b, flags: 0x0}, + 225: {region: 0x76, script: 0x5b, flags: 0x0}, + 226: {region: 0x107, script: 0x20, flags: 0x0}, + 227: {region: 0x136, script: 0x5b, flags: 0x0}, + 228: {region: 0x49, script: 0x5b, flags: 0x0}, + 229: {region: 0x136, script: 0x1a, flags: 0x0}, + 230: {region: 0xa7, script: 0x5, flags: 0x0}, + 231: {region: 0x13f, script: 0x19, flags: 0x0}, + 232: {region: 0x166, script: 0x5b, flags: 0x0}, + 233: {region: 0x9c, script: 0x5, flags: 0x0}, + 234: {region: 0x166, script: 0x5b, flags: 0x0}, + 235: {region: 0x166, script: 0x5b, flags: 0x0}, + 236: {region: 0x166, script: 0x5b, flags: 0x0}, + 237: {region: 0x166, script: 0x5b, flags: 0x0}, + 238: {region: 0x166, script: 0x5b, flags: 0x0}, + 239: {region: 0xc6, script: 0xda, flags: 0x0}, + 240: {region: 0x79, script: 0x5b, flags: 0x0}, + 241: {region: 0x6c, script: 0x1d, flags: 0x0}, + 242: {region: 0xe8, script: 0x5b, flags: 0x0}, + 243: {region: 0x49, script: 0x17, flags: 0x0}, + 244: {region: 0x131, script: 0x20, flags: 0x0}, + 245: {region: 0x49, script: 0x17, flags: 0x0}, + 246: {region: 0x49, script: 0x17, flags: 0x0}, + 247: {region: 0x49, script: 0x17, flags: 0x0}, + 248: {region: 0x49, script: 0x17, flags: 0x0}, + 249: {region: 0x10b, script: 0x5b, flags: 0x0}, + 250: {region: 0x5f, script: 0x5b, flags: 0x0}, + 251: {region: 0xea, script: 0x5b, flags: 0x0}, + 252: {region: 0x49, script: 0x17, flags: 0x0}, + 253: {region: 0xc5, script: 0x88, flags: 0x0}, + 254: {region: 0x8, script: 0x2, flags: 0x1}, + 255: {region: 0x107, script: 0x20, flags: 0x0}, + 256: {region: 0x7c, script: 0x5b, flags: 0x0}, + 257: {region: 0x64, script: 0x5b, flags: 0x0}, + 258: {region: 0x166, script: 0x5b, flags: 0x0}, + 259: {region: 0x166, script: 0x5b, flags: 0x0}, + 260: {region: 0x166, script: 0x5b, flags: 0x0}, + 261: {region: 0x166, script: 0x5b, flags: 0x0}, + 262: {region: 0x136, script: 0x5b, flags: 0x0}, + 263: {region: 0x107, script: 0x20, flags: 0x0}, + 264: {region: 0xa5, script: 0x5b, flags: 0x0}, + 265: {region: 0x166, script: 0x5b, flags: 0x0}, + 266: {region: 0x166, script: 0x5b, flags: 0x0}, + 267: {region: 0x9a, script: 0x5, flags: 0x0}, + 268: {region: 0x166, script: 0x5b, flags: 0x0}, + 269: {region: 0x61, script: 0x5b, flags: 0x0}, + 270: {region: 0x166, script: 0x5b, flags: 0x0}, + 271: {region: 0x49, script: 0x5b, flags: 0x0}, + 272: {region: 0x166, script: 0x5b, flags: 0x0}, + 273: {region: 0x166, script: 0x5b, flags: 0x0}, + 274: {region: 0x166, script: 0x5b, flags: 0x0}, + 275: {region: 0x166, script: 0x5, flags: 0x0}, + 276: {region: 0x49, script: 0x5b, flags: 0x0}, + 277: {region: 0x166, script: 0x5b, flags: 0x0}, + 278: {region: 0x166, script: 0x5b, flags: 0x0}, + 279: {region: 0xd5, script: 0x5b, flags: 0x0}, + 280: {region: 0x4f, script: 0x5b, flags: 0x0}, + 281: {region: 0x166, script: 0x5b, flags: 0x0}, + 282: {region: 0x9a, script: 0x5, flags: 0x0}, + 283: {region: 0x166, script: 0x5b, flags: 0x0}, + 284: {region: 0x166, script: 0x5b, flags: 0x0}, + 285: {region: 0x166, script: 0x5b, flags: 0x0}, + 286: {region: 0x166, script: 0x2c, flags: 0x0}, + 287: {region: 0x61, script: 0x5b, flags: 0x0}, + 288: {region: 0xc4, script: 0x5b, flags: 0x0}, + 289: {region: 0xd1, script: 0x5b, flags: 0x0}, + 290: {region: 0x166, script: 0x5b, flags: 0x0}, + 291: {region: 0xdc, script: 0x22, flags: 0x0}, + 292: {region: 0x52, script: 0x5b, flags: 0x0}, + 293: {region: 0x166, script: 0x5b, flags: 0x0}, + 294: {region: 0x166, script: 0x5b, flags: 0x0}, + 295: {region: 0x166, script: 0x5b, flags: 0x0}, + 296: {region: 0xce, script: 0xed, flags: 0x0}, + 297: {region: 0x166, script: 0x5b, flags: 0x0}, + 298: {region: 0x166, script: 0x5b, flags: 0x0}, + 299: {region: 0x115, script: 0x5b, flags: 0x0}, + 300: {region: 0x37, script: 0x5b, flags: 0x0}, + 301: {region: 0x43, script: 0xef, flags: 0x0}, + 302: {region: 0x166, script: 0x5b, flags: 0x0}, + 303: {region: 0xa5, script: 0x5b, flags: 0x0}, + 304: {region: 0x81, script: 0x5b, flags: 0x0}, + 305: {region: 0xd7, script: 0x5b, flags: 0x0}, + 306: {region: 0x9f, script: 0x5b, flags: 0x0}, + 307: {region: 0x6c, script: 0x29, flags: 0x0}, + 308: {region: 0x166, script: 0x5b, flags: 0x0}, + 309: {region: 0xc5, script: 0x4b, flags: 0x0}, + 310: {region: 0x88, script: 0x34, flags: 0x0}, + 311: {region: 0x166, script: 0x5b, flags: 0x0}, + 312: {region: 0x166, script: 0x5b, flags: 0x0}, + 313: {region: 0xa, script: 0x2, flags: 0x1}, + 314: {region: 0x166, script: 0x5b, flags: 0x0}, + 315: {region: 0x166, script: 0x5b, flags: 0x0}, + 316: {region: 0x1, script: 0x5b, flags: 0x0}, + 317: {region: 0x166, script: 0x5b, flags: 0x0}, + 318: {region: 0x6f, script: 0x5b, flags: 0x0}, + 319: {region: 0x136, script: 0x5b, flags: 0x0}, + 320: {region: 0x6b, script: 0x5b, flags: 0x0}, + 321: {region: 0x166, script: 0x5b, flags: 0x0}, + 322: {region: 0x9f, script: 0x46, flags: 0x0}, + 323: {region: 0x166, script: 0x5b, flags: 0x0}, + 324: {region: 0x166, script: 0x5b, flags: 0x0}, + 325: {region: 0x6f, script: 0x5b, flags: 0x0}, + 326: {region: 0x52, script: 0x5b, flags: 0x0}, + 327: {region: 0x6f, script: 0x5b, flags: 0x0}, + 328: {region: 0x9d, script: 0x5, flags: 0x0}, + 329: {region: 0x166, script: 0x5b, flags: 0x0}, + 330: {region: 0x166, script: 0x5b, flags: 0x0}, + 331: {region: 0x166, script: 0x5b, flags: 0x0}, + 332: {region: 0x166, script: 0x5b, flags: 0x0}, + 333: {region: 0x87, script: 0x5b, flags: 0x0}, + 334: {region: 0xc, script: 0x2, flags: 0x1}, + 335: {region: 0x166, script: 0x5b, flags: 0x0}, + 336: {region: 0xc4, script: 0x5b, flags: 0x0}, + 337: {region: 0x73, script: 0x5b, flags: 0x0}, + 338: {region: 0x10c, script: 0x5, flags: 0x0}, + 339: {region: 0xe8, script: 0x5b, flags: 0x0}, + 340: {region: 0x10d, script: 0x5b, flags: 0x0}, + 341: {region: 0x74, script: 0x5b, flags: 0x0}, + 342: {region: 0x166, script: 0x5b, flags: 0x0}, + 343: {region: 0x166, script: 0x5b, flags: 0x0}, + 344: {region: 0x77, script: 0x5b, flags: 0x0}, + 345: {region: 0x166, script: 0x5b, flags: 0x0}, + 346: {region: 0x3b, script: 0x5b, flags: 0x0}, + 347: {region: 0x166, script: 0x5b, flags: 0x0}, + 348: {region: 0x166, script: 0x5b, flags: 0x0}, + 349: {region: 0x166, script: 0x5b, flags: 0x0}, + 350: {region: 0x79, script: 0x5b, flags: 0x0}, + 351: {region: 0x136, script: 0x5b, flags: 0x0}, + 352: {region: 0x79, script: 0x5b, flags: 0x0}, + 353: {region: 0x61, script: 0x5b, flags: 0x0}, + 354: {region: 0x61, script: 0x5b, flags: 0x0}, + 355: {region: 0x52, script: 0x5, flags: 0x0}, + 356: {region: 0x141, script: 0x5b, flags: 0x0}, + 357: {region: 0x166, script: 0x5b, flags: 0x0}, + 358: {region: 0x85, script: 0x5b, flags: 0x0}, + 359: {region: 0x166, script: 0x5b, flags: 0x0}, + 360: {region: 0xd5, script: 0x5b, flags: 0x0}, + 361: {region: 0x9f, script: 0x5b, flags: 0x0}, + 362: {region: 0xd7, script: 0x5b, flags: 0x0}, + 363: {region: 0x166, script: 0x5b, flags: 0x0}, + 364: {region: 0x10c, script: 0x5b, flags: 0x0}, + 365: {region: 0xda, script: 0x5b, flags: 0x0}, + 366: {region: 0x97, script: 0x5b, flags: 0x0}, + 367: {region: 0x81, script: 0x5b, flags: 0x0}, + 368: {region: 0x166, script: 0x5b, flags: 0x0}, + 369: {region: 0xbd, script: 0x5b, flags: 0x0}, + 370: {region: 0x166, script: 0x5b, flags: 0x0}, + 371: {region: 0x166, script: 0x5b, flags: 0x0}, + 372: {region: 0x166, script: 0x5b, flags: 0x0}, + 373: {region: 0x53, script: 0x3b, flags: 0x0}, + 374: {region: 0x166, script: 0x5b, flags: 0x0}, + 375: {region: 0x96, script: 0x5b, flags: 0x0}, + 376: {region: 0x166, script: 0x5b, flags: 0x0}, + 377: {region: 0x166, script: 0x5b, flags: 0x0}, + 378: {region: 0x9a, script: 0x22, flags: 0x0}, + 379: {region: 0x166, script: 0x5b, flags: 0x0}, + 380: {region: 0x9d, script: 0x5, flags: 0x0}, + 381: {region: 0x7f, script: 0x5b, flags: 0x0}, + 382: {region: 0x7c, script: 0x5b, flags: 0x0}, + 383: {region: 0x166, script: 0x5b, flags: 0x0}, + 384: {region: 0x166, script: 0x5b, flags: 0x0}, + 385: {region: 0x166, script: 0x5b, flags: 0x0}, + 386: {region: 0x166, script: 0x5b, flags: 0x0}, + 387: {region: 0x166, script: 0x5b, flags: 0x0}, + 388: {region: 0x166, script: 0x5b, flags: 0x0}, + 389: {region: 0x70, script: 0x2c, flags: 0x0}, + 390: {region: 0x166, script: 0x5b, flags: 0x0}, + 391: {region: 0xdc, script: 0x22, flags: 0x0}, + 392: {region: 0x166, script: 0x5b, flags: 0x0}, + 393: {region: 0xa8, script: 0x5b, flags: 0x0}, + 394: {region: 0x166, script: 0x5b, flags: 0x0}, + 395: {region: 0xe9, script: 0x5, flags: 0x0}, + 396: {region: 0x166, script: 0x5b, flags: 0x0}, + 397: {region: 0xe9, script: 0x5, flags: 0x0}, + 398: {region: 0x166, script: 0x5b, flags: 0x0}, + 399: {region: 0x166, script: 0x5b, flags: 0x0}, + 400: {region: 0x6f, script: 0x5b, flags: 0x0}, + 401: {region: 0x9d, script: 0x5, flags: 0x0}, + 402: {region: 0x166, script: 0x5b, flags: 0x0}, + 403: {region: 0x166, script: 0x2c, flags: 0x0}, + 404: {region: 0xf2, script: 0x5b, flags: 0x0}, + 405: {region: 0x166, script: 0x5b, flags: 0x0}, + 406: {region: 0x166, script: 0x5b, flags: 0x0}, + 407: {region: 0x166, script: 0x5b, flags: 0x0}, + 408: {region: 0x166, script: 0x2c, flags: 0x0}, + 409: {region: 0x166, script: 0x5b, flags: 0x0}, + 410: {region: 0x9a, script: 0x22, flags: 0x0}, + 411: {region: 0x9a, script: 0xe9, flags: 0x0}, + 412: {region: 0x96, script: 0x5b, flags: 0x0}, + 413: {region: 0xda, script: 0x5b, flags: 0x0}, + 414: {region: 0x131, script: 0x32, flags: 0x0}, + 415: {region: 0x166, script: 0x5b, flags: 0x0}, + 416: {region: 0xe, script: 0x2, flags: 0x1}, + 417: {region: 0x9a, script: 0xe, flags: 0x0}, + 418: {region: 0x166, script: 0x5b, flags: 0x0}, + 419: {region: 0x4e, script: 0x5b, flags: 0x0}, + 420: {region: 0x9a, script: 0x35, flags: 0x0}, + 421: {region: 0x41, script: 0x5b, flags: 0x0}, + 422: {region: 0x54, script: 0x5b, flags: 0x0}, + 423: {region: 0x166, script: 0x5b, flags: 0x0}, + 424: {region: 0x81, script: 0x5b, flags: 0x0}, + 425: {region: 0x166, script: 0x5b, flags: 0x0}, + 426: {region: 0x166, script: 0x5b, flags: 0x0}, + 427: {region: 0xa5, script: 0x5b, flags: 0x0}, + 428: {region: 0x99, script: 0x5b, flags: 0x0}, + 429: {region: 0x166, script: 0x5b, flags: 0x0}, + 430: {region: 0xdc, script: 0x22, flags: 0x0}, + 431: {region: 0x166, script: 0x5b, flags: 0x0}, + 432: {region: 0x166, script: 0x5, flags: 0x0}, + 433: {region: 0x49, script: 0x5b, flags: 0x0}, + 434: {region: 0x166, script: 0x5, flags: 0x0}, + 435: {region: 0x166, script: 0x5b, flags: 0x0}, + 436: {region: 0x10, script: 0x3, flags: 0x1}, + 437: {region: 0x166, script: 0x5b, flags: 0x0}, + 438: {region: 0x53, script: 0x3b, flags: 0x0}, + 439: {region: 0x166, script: 0x5b, flags: 0x0}, + 440: {region: 0x136, script: 0x5b, flags: 0x0}, + 441: {region: 0x24, script: 0x5, flags: 0x0}, + 442: {region: 0x166, script: 0x5b, flags: 0x0}, + 443: {region: 0x166, script: 0x2c, flags: 0x0}, + 444: {region: 0x98, script: 0x3e, flags: 0x0}, + 445: {region: 0x166, script: 0x5b, flags: 0x0}, + 446: {region: 0x9a, script: 0x22, flags: 0x0}, + 447: {region: 0x166, script: 0x5b, flags: 0x0}, + 448: {region: 0x74, script: 0x5b, flags: 0x0}, + 449: {region: 0x166, script: 0x5b, flags: 0x0}, + 450: {region: 0x166, script: 0x5b, flags: 0x0}, + 451: {region: 0xe8, script: 0x5b, flags: 0x0}, + 452: {region: 0x166, script: 0x5b, flags: 0x0}, + 453: {region: 0x12c, script: 0x40, flags: 0x0}, + 454: {region: 0x53, script: 0x92, flags: 0x0}, + 455: {region: 0x166, script: 0x5b, flags: 0x0}, + 456: {region: 0xe9, script: 0x5, flags: 0x0}, + 457: {region: 0x9a, script: 0x22, flags: 0x0}, + 458: {region: 0xb0, script: 0x41, flags: 0x0}, + 459: {region: 0xe8, script: 0x5b, flags: 0x0}, + 460: {region: 0xe9, script: 0x5, flags: 0x0}, + 461: {region: 0xe7, script: 0x5b, flags: 0x0}, + 462: {region: 0x9a, script: 0x22, flags: 0x0}, + 463: {region: 0x9a, script: 0x22, flags: 0x0}, + 464: {region: 0x166, script: 0x5b, flags: 0x0}, + 465: {region: 0x91, script: 0x5b, flags: 0x0}, + 466: {region: 0x61, script: 0x5b, flags: 0x0}, + 467: {region: 0x53, script: 0x3b, flags: 0x0}, + 468: {region: 0x92, script: 0x5b, flags: 0x0}, + 469: {region: 0x93, script: 0x5b, flags: 0x0}, + 470: {region: 0x166, script: 0x5b, flags: 0x0}, + 471: {region: 0x28, script: 0x8, flags: 0x0}, + 472: {region: 0xd3, script: 0x5b, flags: 0x0}, + 473: {region: 0x79, script: 0x5b, flags: 0x0}, + 474: {region: 0x166, script: 0x5b, flags: 0x0}, + 475: {region: 0x166, script: 0x5b, flags: 0x0}, + 476: {region: 0xd1, script: 0x5b, flags: 0x0}, + 477: {region: 0xd7, script: 0x5b, flags: 0x0}, + 478: {region: 0x166, script: 0x5b, flags: 0x0}, + 479: {region: 0x166, script: 0x5b, flags: 0x0}, + 480: {region: 0x166, script: 0x5b, flags: 0x0}, + 481: {region: 0x96, script: 0x5b, flags: 0x0}, + 482: {region: 0x166, script: 0x5b, flags: 0x0}, + 483: {region: 0x166, script: 0x5b, flags: 0x0}, + 484: {region: 0x166, script: 0x5b, flags: 0x0}, + 486: {region: 0x123, script: 0x5b, flags: 0x0}, + 487: {region: 0xd7, script: 0x5b, flags: 0x0}, + 488: {region: 0x166, script: 0x5b, flags: 0x0}, + 489: {region: 0x166, script: 0x5b, flags: 0x0}, + 490: {region: 0x53, script: 0xfd, flags: 0x0}, + 491: {region: 0x166, script: 0x5b, flags: 0x0}, + 492: {region: 0x136, script: 0x5b, flags: 0x0}, + 493: {region: 0x166, script: 0x5b, flags: 0x0}, + 494: {region: 0x49, script: 0x5b, flags: 0x0}, + 495: {region: 0x166, script: 0x5b, flags: 0x0}, + 496: {region: 0x166, script: 0x5b, flags: 0x0}, + 497: {region: 0xe8, script: 0x5b, flags: 0x0}, + 498: {region: 0x166, script: 0x5b, flags: 0x0}, + 499: {region: 0x96, script: 0x5b, flags: 0x0}, + 500: {region: 0x107, script: 0x20, flags: 0x0}, + 501: {region: 0x1, script: 0x5b, flags: 0x0}, + 502: {region: 0x166, script: 0x5b, flags: 0x0}, + 503: {region: 0x166, script: 0x5b, flags: 0x0}, + 504: {region: 0x9e, script: 0x5b, flags: 0x0}, + 505: {region: 0x9f, script: 0x5b, flags: 0x0}, + 506: {region: 0x49, script: 0x17, flags: 0x0}, + 507: {region: 0x98, script: 0x3e, flags: 0x0}, + 508: {region: 0x166, script: 0x5b, flags: 0x0}, + 509: {region: 0x166, script: 0x5b, flags: 0x0}, + 510: {region: 0x107, script: 0x5b, flags: 0x0}, + 511: {region: 0x166, script: 0x5b, flags: 0x0}, + 512: {region: 0xa3, script: 0x49, flags: 0x0}, + 513: {region: 0x166, script: 0x5b, flags: 0x0}, + 514: {region: 0xa1, script: 0x5b, flags: 0x0}, + 515: {region: 0x1, script: 0x5b, flags: 0x0}, + 516: {region: 0x166, script: 0x5b, flags: 0x0}, + 517: {region: 0x166, script: 0x5b, flags: 0x0}, + 518: {region: 0x166, script: 0x5b, flags: 0x0}, + 519: {region: 0x52, script: 0x5b, flags: 0x0}, + 520: {region: 0x131, script: 0x3e, flags: 0x0}, + 521: {region: 0x166, script: 0x5b, flags: 0x0}, + 522: {region: 0x130, script: 0x5b, flags: 0x0}, + 523: {region: 0xdc, script: 0x22, flags: 0x0}, + 524: {region: 0x166, script: 0x5b, flags: 0x0}, + 525: {region: 0x64, script: 0x5b, flags: 0x0}, + 526: {region: 0x96, script: 0x5b, flags: 0x0}, + 527: {region: 0x96, script: 0x5b, flags: 0x0}, + 528: {region: 0x7e, script: 0x2e, flags: 0x0}, + 529: {region: 0x138, script: 0x20, flags: 0x0}, + 530: {region: 0x68, script: 0x5b, flags: 0x0}, + 531: {region: 0xc5, script: 0x5b, flags: 0x0}, + 532: {region: 0x166, script: 0x5b, flags: 0x0}, + 533: {region: 0x166, script: 0x5b, flags: 0x0}, + 534: {region: 0xd7, script: 0x5b, flags: 0x0}, + 535: {region: 0xa5, script: 0x5b, flags: 0x0}, + 536: {region: 0xc4, script: 0x5b, flags: 0x0}, + 537: {region: 0x107, script: 0x20, flags: 0x0}, + 538: {region: 0x166, script: 0x5b, flags: 0x0}, + 539: {region: 0x166, script: 0x5b, flags: 0x0}, + 540: {region: 0x166, script: 0x5b, flags: 0x0}, + 541: {region: 0x166, script: 0x5b, flags: 0x0}, + 542: {region: 0xd5, script: 0x5, flags: 0x0}, + 543: {region: 0xd7, script: 0x5b, flags: 0x0}, + 544: {region: 0x165, script: 0x5b, flags: 0x0}, + 545: {region: 0x166, script: 0x5b, flags: 0x0}, + 546: {region: 0x166, script: 0x5b, flags: 0x0}, + 547: {region: 0x130, script: 0x5b, flags: 0x0}, + 548: {region: 0x123, script: 0x5, flags: 0x0}, + 549: {region: 0x166, script: 0x5b, flags: 0x0}, + 550: {region: 0x124, script: 0xee, flags: 0x0}, + 551: {region: 0x5b, script: 0x5b, flags: 0x0}, + 552: {region: 0x52, script: 0x5b, flags: 0x0}, + 553: {region: 0x166, script: 0x5b, flags: 0x0}, + 554: {region: 0x4f, script: 0x5b, flags: 0x0}, + 555: {region: 0x9a, script: 0x22, flags: 0x0}, + 556: {region: 0x9a, script: 0x22, flags: 0x0}, + 557: {region: 0x4b, script: 0x5b, flags: 0x0}, + 558: {region: 0x96, script: 0x5b, flags: 0x0}, + 559: {region: 0x166, script: 0x5b, flags: 0x0}, + 560: {region: 0x41, script: 0x5b, flags: 0x0}, + 561: {region: 0x9a, script: 0x5b, flags: 0x0}, + 562: {region: 0x53, script: 0xe5, flags: 0x0}, + 563: {region: 0x9a, script: 0x22, flags: 0x0}, + 564: {region: 0xc4, script: 0x5b, flags: 0x0}, + 565: {region: 0x166, script: 0x5b, flags: 0x0}, + 566: {region: 0x9a, script: 0x76, flags: 0x0}, + 567: {region: 0xe9, script: 0x5, flags: 0x0}, + 568: {region: 0x166, script: 0x5b, flags: 0x0}, + 569: {region: 0xa5, script: 0x5b, flags: 0x0}, + 570: {region: 0x166, script: 0x5b, flags: 0x0}, + 571: {region: 0x12c, script: 0x5b, flags: 0x0}, + 572: {region: 0x166, script: 0x5b, flags: 0x0}, + 573: {region: 0xd3, script: 0x5b, flags: 0x0}, + 574: {region: 0x166, script: 0x5b, flags: 0x0}, + 575: {region: 0xb0, script: 0x58, flags: 0x0}, + 576: {region: 0x166, script: 0x5b, flags: 0x0}, + 577: {region: 0x166, script: 0x5b, flags: 0x0}, + 578: {region: 0x13, script: 0x6, flags: 0x1}, + 579: {region: 0x166, script: 0x5b, flags: 0x0}, + 580: {region: 0x52, script: 0x5b, flags: 0x0}, + 581: {region: 0x83, script: 0x5b, flags: 0x0}, + 582: {region: 0xa5, script: 0x5b, flags: 0x0}, + 583: {region: 0x166, script: 0x5b, flags: 0x0}, + 584: {region: 0x166, script: 0x5b, flags: 0x0}, + 585: {region: 0x166, script: 0x5b, flags: 0x0}, + 586: {region: 0xa7, script: 0x4f, flags: 0x0}, + 587: {region: 0x2a, script: 0x5b, flags: 0x0}, + 588: {region: 0x166, script: 0x5b, flags: 0x0}, + 589: {region: 0x166, script: 0x5b, flags: 0x0}, + 590: {region: 0x166, script: 0x5b, flags: 0x0}, + 591: {region: 0x166, script: 0x5b, flags: 0x0}, + 592: {region: 0x166, script: 0x5b, flags: 0x0}, + 593: {region: 0x9a, script: 0x53, flags: 0x0}, + 594: {region: 0x8c, script: 0x5b, flags: 0x0}, + 595: {region: 0x166, script: 0x5b, flags: 0x0}, + 596: {region: 0xac, script: 0x54, flags: 0x0}, + 597: {region: 0x107, script: 0x20, flags: 0x0}, + 598: {region: 0x9a, script: 0x22, flags: 0x0}, + 599: {region: 0x166, script: 0x5b, flags: 0x0}, + 600: {region: 0x76, script: 0x5b, flags: 0x0}, + 601: {region: 0x166, script: 0x5b, flags: 0x0}, + 602: {region: 0xb5, script: 0x5b, flags: 0x0}, + 603: {region: 0x166, script: 0x5b, flags: 0x0}, + 604: {region: 0x166, script: 0x5b, flags: 0x0}, + 605: {region: 0x166, script: 0x5b, flags: 0x0}, + 606: {region: 0x166, script: 0x5b, flags: 0x0}, + 607: {region: 0x166, script: 0x5b, flags: 0x0}, + 608: {region: 0x166, script: 0x5b, flags: 0x0}, + 609: {region: 0x166, script: 0x5b, flags: 0x0}, + 610: {region: 0x166, script: 0x2c, flags: 0x0}, + 611: {region: 0x166, script: 0x5b, flags: 0x0}, + 612: {region: 0x107, script: 0x20, flags: 0x0}, + 613: {region: 0x113, script: 0x5b, flags: 0x0}, + 614: {region: 0xe8, script: 0x5b, flags: 0x0}, + 615: {region: 0x107, script: 0x5b, flags: 0x0}, + 616: {region: 0x166, script: 0x5b, flags: 0x0}, + 617: {region: 0x9a, script: 0x22, flags: 0x0}, + 618: {region: 0x9a, script: 0x5, flags: 0x0}, + 619: {region: 0x130, script: 0x5b, flags: 0x0}, + 620: {region: 0x166, script: 0x5b, flags: 0x0}, + 621: {region: 0x52, script: 0x5b, flags: 0x0}, + 622: {region: 0x61, script: 0x5b, flags: 0x0}, + 623: {region: 0x166, script: 0x5b, flags: 0x0}, + 624: {region: 0x166, script: 0x5b, flags: 0x0}, + 625: {region: 0x166, script: 0x2c, flags: 0x0}, + 626: {region: 0x166, script: 0x5b, flags: 0x0}, + 627: {region: 0x166, script: 0x5b, flags: 0x0}, + 628: {region: 0x19, script: 0x3, flags: 0x1}, + 629: {region: 0x166, script: 0x5b, flags: 0x0}, + 630: {region: 0x166, script: 0x5b, flags: 0x0}, + 631: {region: 0x166, script: 0x5b, flags: 0x0}, + 632: {region: 0x166, script: 0x5b, flags: 0x0}, + 633: {region: 0x107, script: 0x20, flags: 0x0}, + 634: {region: 0x166, script: 0x5b, flags: 0x0}, + 635: {region: 0x166, script: 0x5b, flags: 0x0}, + 636: {region: 0x166, script: 0x5b, flags: 0x0}, + 637: {region: 0x107, script: 0x20, flags: 0x0}, + 638: {region: 0x166, script: 0x5b, flags: 0x0}, + 639: {region: 0x96, script: 0x5b, flags: 0x0}, + 640: {region: 0xe9, script: 0x5, flags: 0x0}, + 641: {region: 0x7c, script: 0x5b, flags: 0x0}, + 642: {region: 0x166, script: 0x5b, flags: 0x0}, + 643: {region: 0x166, script: 0x5b, flags: 0x0}, + 644: {region: 0x166, script: 0x5b, flags: 0x0}, + 645: {region: 0x166, script: 0x2c, flags: 0x0}, + 646: {region: 0x124, script: 0xee, flags: 0x0}, + 647: {region: 0xe9, script: 0x5, flags: 0x0}, + 648: {region: 0x166, script: 0x5b, flags: 0x0}, + 649: {region: 0x166, script: 0x5b, flags: 0x0}, + 650: {region: 0x1c, script: 0x5, flags: 0x1}, + 651: {region: 0x166, script: 0x5b, flags: 0x0}, + 652: {region: 0x166, script: 0x5b, flags: 0x0}, + 653: {region: 0x166, script: 0x5b, flags: 0x0}, + 654: {region: 0x139, script: 0x5b, flags: 0x0}, + 655: {region: 0x88, script: 0x5f, flags: 0x0}, + 656: {region: 0x98, script: 0x3e, flags: 0x0}, + 657: {region: 0x130, script: 0x5b, flags: 0x0}, + 658: {region: 0xe9, script: 0x5, flags: 0x0}, + 659: {region: 0x132, script: 0x5b, flags: 0x0}, + 660: {region: 0x166, script: 0x5b, flags: 0x0}, + 661: {region: 0xb8, script: 0x5b, flags: 0x0}, + 662: {region: 0x107, script: 0x20, flags: 0x0}, + 663: {region: 0x166, script: 0x5b, flags: 0x0}, + 664: {region: 0x96, script: 0x5b, flags: 0x0}, + 665: {region: 0x166, script: 0x5b, flags: 0x0}, + 666: {region: 0x53, script: 0xee, flags: 0x0}, + 667: {region: 0x166, script: 0x5b, flags: 0x0}, + 668: {region: 0x166, script: 0x5b, flags: 0x0}, + 669: {region: 0x166, script: 0x5b, flags: 0x0}, + 670: {region: 0x166, script: 0x5b, flags: 0x0}, + 671: {region: 0x9a, script: 0x5d, flags: 0x0}, + 672: {region: 0x166, script: 0x5b, flags: 0x0}, + 673: {region: 0x166, script: 0x5b, flags: 0x0}, + 674: {region: 0x107, script: 0x20, flags: 0x0}, + 675: {region: 0x132, script: 0x5b, flags: 0x0}, + 676: {region: 0x166, script: 0x5b, flags: 0x0}, + 677: {region: 0xda, script: 0x5b, flags: 0x0}, + 678: {region: 0x166, script: 0x5b, flags: 0x0}, + 679: {region: 0x166, script: 0x5b, flags: 0x0}, + 680: {region: 0x21, script: 0x2, flags: 0x1}, + 681: {region: 0x166, script: 0x5b, flags: 0x0}, + 682: {region: 0x166, script: 0x5b, flags: 0x0}, + 683: {region: 0x9f, script: 0x5b, flags: 0x0}, + 684: {region: 0x53, script: 0x61, flags: 0x0}, + 685: {region: 0x96, script: 0x5b, flags: 0x0}, + 686: {region: 0x9d, script: 0x5, flags: 0x0}, + 687: {region: 0x136, script: 0x5b, flags: 0x0}, + 688: {region: 0x166, script: 0x5b, flags: 0x0}, + 689: {region: 0x166, script: 0x5b, flags: 0x0}, + 690: {region: 0x9a, script: 0xe9, flags: 0x0}, + 691: {region: 0x9f, script: 0x5b, flags: 0x0}, + 692: {region: 0x166, script: 0x5b, flags: 0x0}, + 693: {region: 0x4b, script: 0x5b, flags: 0x0}, + 694: {region: 0x166, script: 0x5b, flags: 0x0}, + 695: {region: 0x166, script: 0x5b, flags: 0x0}, + 696: {region: 0xb0, script: 0x58, flags: 0x0}, + 697: {region: 0x166, script: 0x5b, flags: 0x0}, + 698: {region: 0x166, script: 0x5b, flags: 0x0}, + 699: {region: 0x4b, script: 0x5b, flags: 0x0}, + 700: {region: 0x166, script: 0x5b, flags: 0x0}, + 701: {region: 0x166, script: 0x5b, flags: 0x0}, + 702: {region: 0x163, script: 0x5b, flags: 0x0}, + 703: {region: 0x9d, script: 0x5, flags: 0x0}, + 704: {region: 0xb7, script: 0x5b, flags: 0x0}, + 705: {region: 0xb9, script: 0x5b, flags: 0x0}, + 706: {region: 0x4b, script: 0x5b, flags: 0x0}, + 707: {region: 0x4b, script: 0x5b, flags: 0x0}, + 708: {region: 0xa5, script: 0x5b, flags: 0x0}, + 709: {region: 0xa5, script: 0x5b, flags: 0x0}, + 710: {region: 0x9d, script: 0x5, flags: 0x0}, + 711: {region: 0xb9, script: 0x5b, flags: 0x0}, + 712: {region: 0x124, script: 0xee, flags: 0x0}, + 713: {region: 0x53, script: 0x3b, flags: 0x0}, + 714: {region: 0x12c, script: 0x5b, flags: 0x0}, + 715: {region: 0x96, script: 0x5b, flags: 0x0}, + 716: {region: 0x52, script: 0x5b, flags: 0x0}, + 717: {region: 0x9a, script: 0x22, flags: 0x0}, + 718: {region: 0x9a, script: 0x22, flags: 0x0}, + 719: {region: 0x96, script: 0x5b, flags: 0x0}, + 720: {region: 0x23, script: 0x3, flags: 0x1}, + 721: {region: 0xa5, script: 0x5b, flags: 0x0}, + 722: {region: 0x166, script: 0x5b, flags: 0x0}, + 723: {region: 0xd0, script: 0x5b, flags: 0x0}, + 724: {region: 0x166, script: 0x5b, flags: 0x0}, + 725: {region: 0x166, script: 0x5b, flags: 0x0}, + 726: {region: 0x166, script: 0x5b, flags: 0x0}, + 727: {region: 0x166, script: 0x5b, flags: 0x0}, + 728: {region: 0x166, script: 0x5b, flags: 0x0}, + 729: {region: 0x166, script: 0x5b, flags: 0x0}, + 730: {region: 0x166, script: 0x5b, flags: 0x0}, + 731: {region: 0x166, script: 0x5b, flags: 0x0}, + 732: {region: 0x166, script: 0x5b, flags: 0x0}, + 733: {region: 0x166, script: 0x5b, flags: 0x0}, + 734: {region: 0x166, script: 0x5b, flags: 0x0}, + 735: {region: 0x166, script: 0x5, flags: 0x0}, + 736: {region: 0x107, script: 0x20, flags: 0x0}, + 737: {region: 0xe8, script: 0x5b, flags: 0x0}, + 738: {region: 0x166, script: 0x5b, flags: 0x0}, + 739: {region: 0x96, script: 0x5b, flags: 0x0}, + 740: {region: 0x166, script: 0x2c, flags: 0x0}, + 741: {region: 0x166, script: 0x5b, flags: 0x0}, + 742: {region: 0x166, script: 0x5b, flags: 0x0}, + 743: {region: 0x166, script: 0x5b, flags: 0x0}, + 744: {region: 0x113, script: 0x5b, flags: 0x0}, + 745: {region: 0xa5, script: 0x5b, flags: 0x0}, + 746: {region: 0x166, script: 0x5b, flags: 0x0}, + 747: {region: 0x166, script: 0x5b, flags: 0x0}, + 748: {region: 0x124, script: 0x5, flags: 0x0}, + 749: {region: 0xcd, script: 0x5b, flags: 0x0}, + 750: {region: 0x166, script: 0x5b, flags: 0x0}, + 751: {region: 0x166, script: 0x5b, flags: 0x0}, + 752: {region: 0x166, script: 0x5b, flags: 0x0}, + 753: {region: 0xc0, script: 0x5b, flags: 0x0}, + 754: {region: 0xd2, script: 0x5b, flags: 0x0}, + 755: {region: 0x166, script: 0x5b, flags: 0x0}, + 756: {region: 0x52, script: 0x5b, flags: 0x0}, + 757: {region: 0xdc, script: 0x22, flags: 0x0}, + 758: {region: 0x130, script: 0x5b, flags: 0x0}, + 759: {region: 0xc1, script: 0x5b, flags: 0x0}, + 760: {region: 0x166, script: 0x5b, flags: 0x0}, + 761: {region: 0x166, script: 0x5b, flags: 0x0}, + 762: {region: 0xe1, script: 0x5b, flags: 0x0}, + 763: {region: 0x166, script: 0x5b, flags: 0x0}, + 764: {region: 0x96, script: 0x5b, flags: 0x0}, + 765: {region: 0x9c, script: 0x3d, flags: 0x0}, + 766: {region: 0x166, script: 0x5b, flags: 0x0}, + 767: {region: 0xc3, script: 0x20, flags: 0x0}, + 768: {region: 0x166, script: 0x5, flags: 0x0}, + 769: {region: 0x166, script: 0x5b, flags: 0x0}, + 770: {region: 0x166, script: 0x5b, flags: 0x0}, + 771: {region: 0x166, script: 0x5b, flags: 0x0}, + 772: {region: 0x9a, script: 0x6f, flags: 0x0}, + 773: {region: 0x166, script: 0x5b, flags: 0x0}, + 774: {region: 0x166, script: 0x5b, flags: 0x0}, + 775: {region: 0x10c, script: 0x5b, flags: 0x0}, + 776: {region: 0x166, script: 0x5b, flags: 0x0}, + 777: {region: 0x166, script: 0x5b, flags: 0x0}, + 778: {region: 0x166, script: 0x5b, flags: 0x0}, + 779: {region: 0x26, script: 0x3, flags: 0x1}, + 780: {region: 0x166, script: 0x5b, flags: 0x0}, + 781: {region: 0x166, script: 0x5b, flags: 0x0}, + 782: {region: 0x9a, script: 0xe, flags: 0x0}, + 783: {region: 0xc5, script: 0x76, flags: 0x0}, + 785: {region: 0x166, script: 0x5b, flags: 0x0}, + 786: {region: 0x49, script: 0x5b, flags: 0x0}, + 787: {region: 0x49, script: 0x5b, flags: 0x0}, + 788: {region: 0x37, script: 0x5b, flags: 0x0}, + 789: {region: 0x166, script: 0x5b, flags: 0x0}, + 790: {region: 0x166, script: 0x5b, flags: 0x0}, + 791: {region: 0x166, script: 0x5b, flags: 0x0}, + 792: {region: 0x166, script: 0x5b, flags: 0x0}, + 793: {region: 0x166, script: 0x5b, flags: 0x0}, + 794: {region: 0x166, script: 0x5b, flags: 0x0}, + 795: {region: 0x9a, script: 0x22, flags: 0x0}, + 796: {region: 0xdc, script: 0x22, flags: 0x0}, + 797: {region: 0x107, script: 0x20, flags: 0x0}, + 798: {region: 0x35, script: 0x73, flags: 0x0}, + 799: {region: 0x29, script: 0x3, flags: 0x1}, + 800: {region: 0xcc, script: 0x5b, flags: 0x0}, + 801: {region: 0x166, script: 0x5b, flags: 0x0}, + 802: {region: 0x166, script: 0x5b, flags: 0x0}, + 803: {region: 0x166, script: 0x5b, flags: 0x0}, + 804: {region: 0x9a, script: 0x22, flags: 0x0}, + 805: {region: 0x52, script: 0x5b, flags: 0x0}, + 807: {region: 0x166, script: 0x5b, flags: 0x0}, + 808: {region: 0x136, script: 0x5b, flags: 0x0}, + 809: {region: 0x166, script: 0x5b, flags: 0x0}, + 810: {region: 0x166, script: 0x5b, flags: 0x0}, + 811: {region: 0xe9, script: 0x5, flags: 0x0}, + 812: {region: 0xc4, script: 0x5b, flags: 0x0}, + 813: {region: 0x9a, script: 0x22, flags: 0x0}, + 814: {region: 0x96, script: 0x5b, flags: 0x0}, + 815: {region: 0x165, script: 0x5b, flags: 0x0}, + 816: {region: 0x166, script: 0x5b, flags: 0x0}, + 817: {region: 0xc5, script: 0x76, flags: 0x0}, + 818: {region: 0x166, script: 0x5b, flags: 0x0}, + 819: {region: 0x166, script: 0x2c, flags: 0x0}, + 820: {region: 0x107, script: 0x20, flags: 0x0}, + 821: {region: 0x166, script: 0x5b, flags: 0x0}, + 822: {region: 0x132, script: 0x5b, flags: 0x0}, + 823: {region: 0x9d, script: 0x67, flags: 0x0}, + 824: {region: 0x166, script: 0x5b, flags: 0x0}, + 825: {region: 0x166, script: 0x5b, flags: 0x0}, + 826: {region: 0x9d, script: 0x5, flags: 0x0}, + 827: {region: 0x166, script: 0x5b, flags: 0x0}, + 828: {region: 0x166, script: 0x5b, flags: 0x0}, + 829: {region: 0x166, script: 0x5b, flags: 0x0}, + 830: {region: 0xde, script: 0x5b, flags: 0x0}, + 831: {region: 0x166, script: 0x5b, flags: 0x0}, + 832: {region: 0x166, script: 0x5b, flags: 0x0}, + 834: {region: 0x166, script: 0x5b, flags: 0x0}, + 835: {region: 0x53, script: 0x3b, flags: 0x0}, + 836: {region: 0x9f, script: 0x5b, flags: 0x0}, + 837: {region: 0xd3, script: 0x5b, flags: 0x0}, + 838: {region: 0x166, script: 0x5b, flags: 0x0}, + 839: {region: 0xdb, script: 0x5b, flags: 0x0}, + 840: {region: 0x166, script: 0x5b, flags: 0x0}, + 841: {region: 0x166, script: 0x5b, flags: 0x0}, + 842: {region: 0x166, script: 0x5b, flags: 0x0}, + 843: {region: 0xd0, script: 0x5b, flags: 0x0}, + 844: {region: 0x166, script: 0x5b, flags: 0x0}, + 845: {region: 0x166, script: 0x5b, flags: 0x0}, + 846: {region: 0x165, script: 0x5b, flags: 0x0}, + 847: {region: 0xd2, script: 0x5b, flags: 0x0}, + 848: {region: 0x61, script: 0x5b, flags: 0x0}, + 849: {region: 0xdc, script: 0x22, flags: 0x0}, + 850: {region: 0x166, script: 0x5b, flags: 0x0}, + 851: {region: 0xdc, script: 0x22, flags: 0x0}, + 852: {region: 0x166, script: 0x5b, flags: 0x0}, + 853: {region: 0x166, script: 0x5b, flags: 0x0}, + 854: {region: 0xd3, script: 0x5b, flags: 0x0}, + 855: {region: 0x166, script: 0x5b, flags: 0x0}, + 856: {region: 0x166, script: 0x5b, flags: 0x0}, + 857: {region: 0xd2, script: 0x5b, flags: 0x0}, + 858: {region: 0x166, script: 0x5b, flags: 0x0}, + 859: {region: 0xd0, script: 0x5b, flags: 0x0}, + 860: {region: 0xd0, script: 0x5b, flags: 0x0}, + 861: {region: 0x166, script: 0x5b, flags: 0x0}, + 862: {region: 0x166, script: 0x5b, flags: 0x0}, + 863: {region: 0x96, script: 0x5b, flags: 0x0}, + 864: {region: 0x166, script: 0x5b, flags: 0x0}, + 865: {region: 0xe0, script: 0x5b, flags: 0x0}, + 866: {region: 0x166, script: 0x5b, flags: 0x0}, + 867: {region: 0x166, script: 0x5b, flags: 0x0}, + 868: {region: 0x9a, script: 0x5b, flags: 0x0}, + 869: {region: 0x166, script: 0x5b, flags: 0x0}, + 870: {region: 0x166, script: 0x5b, flags: 0x0}, + 871: {region: 0xda, script: 0x5b, flags: 0x0}, + 872: {region: 0x52, script: 0x5b, flags: 0x0}, + 873: {region: 0x166, script: 0x5b, flags: 0x0}, + 874: {region: 0xdb, script: 0x5b, flags: 0x0}, + 875: {region: 0x166, script: 0x5b, flags: 0x0}, + 876: {region: 0x52, script: 0x5b, flags: 0x0}, + 877: {region: 0x166, script: 0x5b, flags: 0x0}, + 878: {region: 0x166, script: 0x5b, flags: 0x0}, + 879: {region: 0xdb, script: 0x5b, flags: 0x0}, + 880: {region: 0x124, script: 0x57, flags: 0x0}, + 881: {region: 0x9a, script: 0x22, flags: 0x0}, + 882: {region: 0x10d, script: 0xcb, flags: 0x0}, + 883: {region: 0x166, script: 0x5b, flags: 0x0}, + 884: {region: 0x166, script: 0x5b, flags: 0x0}, + 885: {region: 0x85, script: 0x7e, flags: 0x0}, + 886: {region: 0x162, script: 0x5b, flags: 0x0}, + 887: {region: 0x166, script: 0x5b, flags: 0x0}, + 888: {region: 0x49, script: 0x17, flags: 0x0}, + 889: {region: 0x166, script: 0x5b, flags: 0x0}, + 890: {region: 0x162, script: 0x5b, flags: 0x0}, + 891: {region: 0x166, script: 0x5b, flags: 0x0}, + 892: {region: 0x166, script: 0x5b, flags: 0x0}, + 893: {region: 0x166, script: 0x5b, flags: 0x0}, + 894: {region: 0x166, script: 0x5b, flags: 0x0}, + 895: {region: 0x166, script: 0x5b, flags: 0x0}, + 896: {region: 0x118, script: 0x5b, flags: 0x0}, + 897: {region: 0x166, script: 0x5b, flags: 0x0}, + 898: {region: 0x166, script: 0x5b, flags: 0x0}, + 899: {region: 0x136, script: 0x5b, flags: 0x0}, + 900: {region: 0x166, script: 0x5b, flags: 0x0}, + 901: {region: 0x53, script: 0x5b, flags: 0x0}, + 902: {region: 0x166, script: 0x5b, flags: 0x0}, + 903: {region: 0xcf, script: 0x5b, flags: 0x0}, + 904: {region: 0x130, script: 0x5b, flags: 0x0}, + 905: {region: 0x132, script: 0x5b, flags: 0x0}, + 906: {region: 0x81, script: 0x5b, flags: 0x0}, + 907: {region: 0x79, script: 0x5b, flags: 0x0}, + 908: {region: 0x166, script: 0x5b, flags: 0x0}, + 910: {region: 0x166, script: 0x5b, flags: 0x0}, + 911: {region: 0x166, script: 0x5b, flags: 0x0}, + 912: {region: 0x70, script: 0x5b, flags: 0x0}, + 913: {region: 0x166, script: 0x5b, flags: 0x0}, + 914: {region: 0x166, script: 0x5b, flags: 0x0}, + 915: {region: 0x166, script: 0x5b, flags: 0x0}, + 916: {region: 0x166, script: 0x5b, flags: 0x0}, + 917: {region: 0x9a, script: 0x83, flags: 0x0}, + 918: {region: 0x166, script: 0x5b, flags: 0x0}, + 919: {region: 0x166, script: 0x5, flags: 0x0}, + 920: {region: 0x7e, script: 0x20, flags: 0x0}, + 921: {region: 0x136, script: 0x84, flags: 0x0}, + 922: {region: 0x166, script: 0x5, flags: 0x0}, + 923: {region: 0xc6, script: 0x82, flags: 0x0}, + 924: {region: 0x166, script: 0x5b, flags: 0x0}, + 925: {region: 0x2c, script: 0x3, flags: 0x1}, + 926: {region: 0xe8, script: 0x5b, flags: 0x0}, + 927: {region: 0x2f, script: 0x2, flags: 0x1}, + 928: {region: 0xe8, script: 0x5b, flags: 0x0}, + 929: {region: 0x30, script: 0x5b, flags: 0x0}, + 930: {region: 0xf1, script: 0x5b, flags: 0x0}, + 931: {region: 0x166, script: 0x5b, flags: 0x0}, + 932: {region: 0x79, script: 0x5b, flags: 0x0}, + 933: {region: 0xd7, script: 0x5b, flags: 0x0}, + 934: {region: 0x136, script: 0x5b, flags: 0x0}, + 935: {region: 0x49, script: 0x5b, flags: 0x0}, + 936: {region: 0x166, script: 0x5b, flags: 0x0}, + 937: {region: 0x9d, script: 0xfa, flags: 0x0}, + 938: {region: 0x166, script: 0x5b, flags: 0x0}, + 939: {region: 0x61, script: 0x5b, flags: 0x0}, + 940: {region: 0x166, script: 0x5, flags: 0x0}, + 941: {region: 0xb1, script: 0x90, flags: 0x0}, + 943: {region: 0x166, script: 0x5b, flags: 0x0}, + 944: {region: 0x166, script: 0x5b, flags: 0x0}, + 945: {region: 0x9a, script: 0x12, flags: 0x0}, + 946: {region: 0xa5, script: 0x5b, flags: 0x0}, + 947: {region: 0xea, script: 0x5b, flags: 0x0}, + 948: {region: 0x166, script: 0x5b, flags: 0x0}, + 949: {region: 0x9f, script: 0x5b, flags: 0x0}, + 950: {region: 0x166, script: 0x5b, flags: 0x0}, + 951: {region: 0x166, script: 0x5b, flags: 0x0}, + 952: {region: 0x88, script: 0x34, flags: 0x0}, + 953: {region: 0x76, script: 0x5b, flags: 0x0}, + 954: {region: 0x166, script: 0x5b, flags: 0x0}, + 955: {region: 0xe9, script: 0x4e, flags: 0x0}, + 956: {region: 0x9d, script: 0x5, flags: 0x0}, + 957: {region: 0x1, script: 0x5b, flags: 0x0}, + 958: {region: 0x24, script: 0x5, flags: 0x0}, + 959: {region: 0x166, script: 0x5b, flags: 0x0}, + 960: {region: 0x41, script: 0x5b, flags: 0x0}, + 961: {region: 0x166, script: 0x5b, flags: 0x0}, + 962: {region: 0x7b, script: 0x5b, flags: 0x0}, + 963: {region: 0x166, script: 0x5b, flags: 0x0}, + 964: {region: 0xe5, script: 0x5b, flags: 0x0}, + 965: {region: 0x8a, script: 0x5b, flags: 0x0}, + 966: {region: 0x6a, script: 0x5b, flags: 0x0}, + 967: {region: 0x166, script: 0x5b, flags: 0x0}, + 968: {region: 0x9a, script: 0x22, flags: 0x0}, + 969: {region: 0x166, script: 0x5b, flags: 0x0}, + 970: {region: 0x103, script: 0x5b, flags: 0x0}, + 971: {region: 0x96, script: 0x5b, flags: 0x0}, + 972: {region: 0x166, script: 0x5b, flags: 0x0}, + 973: {region: 0x166, script: 0x5b, flags: 0x0}, + 974: {region: 0x9f, script: 0x5b, flags: 0x0}, + 975: {region: 0x166, script: 0x5, flags: 0x0}, + 976: {region: 0x9a, script: 0x5b, flags: 0x0}, + 977: {region: 0x31, script: 0x2, flags: 0x1}, + 978: {region: 0xdc, script: 0x22, flags: 0x0}, + 979: {region: 0x35, script: 0xe, flags: 0x0}, + 980: {region: 0x4e, script: 0x5b, flags: 0x0}, + 981: {region: 0x73, script: 0x5b, flags: 0x0}, + 982: {region: 0x4e, script: 0x5b, flags: 0x0}, + 983: {region: 0x9d, script: 0x5, flags: 0x0}, + 984: {region: 0x10d, script: 0x5b, flags: 0x0}, + 985: {region: 0x3a, script: 0x5b, flags: 0x0}, + 986: {region: 0x166, script: 0x5b, flags: 0x0}, + 987: {region: 0xd2, script: 0x5b, flags: 0x0}, + 988: {region: 0x105, script: 0x5b, flags: 0x0}, + 989: {region: 0x96, script: 0x5b, flags: 0x0}, + 990: {region: 0x130, script: 0x5b, flags: 0x0}, + 991: {region: 0x166, script: 0x5b, flags: 0x0}, + 992: {region: 0x166, script: 0x5b, flags: 0x0}, + 993: {region: 0x74, script: 0x5b, flags: 0x0}, + 994: {region: 0x107, script: 0x20, flags: 0x0}, + 995: {region: 0x131, script: 0x20, flags: 0x0}, + 996: {region: 0x10a, script: 0x5b, flags: 0x0}, + 997: {region: 0x108, script: 0x5b, flags: 0x0}, + 998: {region: 0x130, script: 0x5b, flags: 0x0}, + 999: {region: 0x166, script: 0x5b, flags: 0x0}, + 1000: {region: 0xa3, script: 0x4c, flags: 0x0}, + 1001: {region: 0x9a, script: 0x22, flags: 0x0}, + 1002: {region: 0x81, script: 0x5b, flags: 0x0}, + 1003: {region: 0x107, script: 0x20, flags: 0x0}, + 1004: {region: 0xa5, script: 0x5b, flags: 0x0}, + 1005: {region: 0x96, script: 0x5b, flags: 0x0}, + 1006: {region: 0x9a, script: 0x5b, flags: 0x0}, + 1007: {region: 0x115, script: 0x5b, flags: 0x0}, + 1008: {region: 0x9a, script: 0xcf, flags: 0x0}, + 1009: {region: 0x166, script: 0x5b, flags: 0x0}, + 1010: {region: 0x166, script: 0x5b, flags: 0x0}, + 1011: {region: 0x130, script: 0x5b, flags: 0x0}, + 1012: {region: 0x9f, script: 0x5b, flags: 0x0}, + 1013: {region: 0x9a, script: 0x22, flags: 0x0}, + 1014: {region: 0x166, script: 0x5, flags: 0x0}, + 1015: {region: 0x9f, script: 0x5b, flags: 0x0}, + 1016: {region: 0x7c, script: 0x5b, flags: 0x0}, + 1017: {region: 0x49, script: 0x5b, flags: 0x0}, + 1018: {region: 0x33, script: 0x4, flags: 0x1}, + 1019: {region: 0x9f, script: 0x5b, flags: 0x0}, + 1020: {region: 0x9d, script: 0x5, flags: 0x0}, + 1021: {region: 0xdb, script: 0x5b, flags: 0x0}, + 1022: {region: 0x4f, script: 0x5b, flags: 0x0}, + 1023: {region: 0xd2, script: 0x5b, flags: 0x0}, + 1024: {region: 0xd0, script: 0x5b, flags: 0x0}, + 1025: {region: 0xc4, script: 0x5b, flags: 0x0}, + 1026: {region: 0x4c, script: 0x5b, flags: 0x0}, + 1027: {region: 0x97, script: 0x80, flags: 0x0}, + 1028: {region: 0xb7, script: 0x5b, flags: 0x0}, + 1029: {region: 0x166, script: 0x2c, flags: 0x0}, + 1030: {region: 0x166, script: 0x5b, flags: 0x0}, + 1032: {region: 0xbb, script: 0xeb, flags: 0x0}, + 1033: {region: 0x166, script: 0x5b, flags: 0x0}, + 1034: {region: 0xc5, script: 0x76, flags: 0x0}, + 1035: {region: 0x166, script: 0x5, flags: 0x0}, + 1036: {region: 0xb4, script: 0xd6, flags: 0x0}, + 1037: {region: 0x70, script: 0x5b, flags: 0x0}, + 1038: {region: 0x166, script: 0x5b, flags: 0x0}, + 1039: {region: 0x166, script: 0x5b, flags: 0x0}, + 1040: {region: 0x166, script: 0x5b, flags: 0x0}, + 1041: {region: 0x166, script: 0x5b, flags: 0x0}, + 1042: {region: 0x112, script: 0x5b, flags: 0x0}, + 1043: {region: 0x166, script: 0x5b, flags: 0x0}, + 1044: {region: 0xe9, script: 0x5, flags: 0x0}, + 1045: {region: 0x166, script: 0x5b, flags: 0x0}, + 1046: {region: 0x110, script: 0x5b, flags: 0x0}, + 1047: {region: 0x166, script: 0x5b, flags: 0x0}, + 1048: {region: 0xea, script: 0x5b, flags: 0x0}, + 1049: {region: 0x166, script: 0x5b, flags: 0x0}, + 1050: {region: 0x96, script: 0x5b, flags: 0x0}, + 1051: {region: 0x143, script: 0x5b, flags: 0x0}, + 1052: {region: 0x10d, script: 0x5b, flags: 0x0}, + 1054: {region: 0x10d, script: 0x5b, flags: 0x0}, + 1055: {region: 0x73, script: 0x5b, flags: 0x0}, + 1056: {region: 0x98, script: 0xcc, flags: 0x0}, + 1057: {region: 0x166, script: 0x5b, flags: 0x0}, + 1058: {region: 0x73, script: 0x5b, flags: 0x0}, + 1059: {region: 0x165, script: 0x5b, flags: 0x0}, + 1060: {region: 0x166, script: 0x5b, flags: 0x0}, + 1061: {region: 0xc4, script: 0x5b, flags: 0x0}, + 1062: {region: 0x166, script: 0x5b, flags: 0x0}, + 1063: {region: 0x166, script: 0x5b, flags: 0x0}, + 1064: {region: 0x166, script: 0x5b, flags: 0x0}, + 1065: {region: 0x116, script: 0x5b, flags: 0x0}, + 1066: {region: 0x166, script: 0x5b, flags: 0x0}, + 1067: {region: 0x166, script: 0x5b, flags: 0x0}, + 1068: {region: 0x124, script: 0xee, flags: 0x0}, + 1069: {region: 0x166, script: 0x5b, flags: 0x0}, + 1070: {region: 0x166, script: 0x5b, flags: 0x0}, + 1071: {region: 0x166, script: 0x5b, flags: 0x0}, + 1072: {region: 0x166, script: 0x5b, flags: 0x0}, + 1073: {region: 0x27, script: 0x5b, flags: 0x0}, + 1074: {region: 0x37, script: 0x5, flags: 0x1}, + 1075: {region: 0x9a, script: 0xd9, flags: 0x0}, + 1076: {region: 0x117, script: 0x5b, flags: 0x0}, + 1077: {region: 0x115, script: 0x5b, flags: 0x0}, + 1078: {region: 0x9a, script: 0x22, flags: 0x0}, + 1079: {region: 0x162, script: 0x5b, flags: 0x0}, + 1080: {region: 0x166, script: 0x5b, flags: 0x0}, + 1081: {region: 0x166, script: 0x5b, flags: 0x0}, + 1082: {region: 0x6e, script: 0x5b, flags: 0x0}, + 1083: {region: 0x162, script: 0x5b, flags: 0x0}, + 1084: {region: 0x166, script: 0x5b, flags: 0x0}, + 1085: {region: 0x61, script: 0x5b, flags: 0x0}, + 1086: {region: 0x96, script: 0x5b, flags: 0x0}, + 1087: {region: 0x166, script: 0x5b, flags: 0x0}, + 1088: {region: 0x166, script: 0x5b, flags: 0x0}, + 1089: {region: 0x130, script: 0x5b, flags: 0x0}, + 1090: {region: 0x166, script: 0x5b, flags: 0x0}, + 1091: {region: 0x85, script: 0x5b, flags: 0x0}, + 1092: {region: 0x10d, script: 0x5b, flags: 0x0}, + 1093: {region: 0x130, script: 0x5b, flags: 0x0}, + 1094: {region: 0x160, script: 0x5, flags: 0x0}, + 1095: {region: 0x4b, script: 0x5b, flags: 0x0}, + 1096: {region: 0x61, script: 0x5b, flags: 0x0}, + 1097: {region: 0x166, script: 0x5b, flags: 0x0}, + 1098: {region: 0x9a, script: 0x22, flags: 0x0}, + 1099: {region: 0x96, script: 0x5b, flags: 0x0}, + 1100: {region: 0x166, script: 0x5b, flags: 0x0}, + 1101: {region: 0x35, script: 0xe, flags: 0x0}, + 1102: {region: 0x9c, script: 0xde, flags: 0x0}, + 1103: {region: 0xea, script: 0x5b, flags: 0x0}, + 1104: {region: 0x9a, script: 0xe6, flags: 0x0}, + 1105: {region: 0xdc, script: 0x22, flags: 0x0}, + 1106: {region: 0x166, script: 0x5b, flags: 0x0}, + 1107: {region: 0x166, script: 0x5b, flags: 0x0}, + 1108: {region: 0x166, script: 0x5b, flags: 0x0}, + 1109: {region: 0x166, script: 0x5b, flags: 0x0}, + 1110: {region: 0x166, script: 0x5b, flags: 0x0}, + 1111: {region: 0x166, script: 0x5b, flags: 0x0}, + 1112: {region: 0x166, script: 0x5b, flags: 0x0}, + 1113: {region: 0x166, script: 0x5b, flags: 0x0}, + 1114: {region: 0xe8, script: 0x5b, flags: 0x0}, + 1115: {region: 0x166, script: 0x5b, flags: 0x0}, + 1116: {region: 0x166, script: 0x5b, flags: 0x0}, + 1117: {region: 0x9a, script: 0x53, flags: 0x0}, + 1118: {region: 0x53, script: 0xe4, flags: 0x0}, + 1119: {region: 0xdc, script: 0x22, flags: 0x0}, + 1120: {region: 0xdc, script: 0x22, flags: 0x0}, + 1121: {region: 0x9a, script: 0xe9, flags: 0x0}, + 1122: {region: 0x166, script: 0x5b, flags: 0x0}, + 1123: {region: 0x113, script: 0x5b, flags: 0x0}, + 1124: {region: 0x132, script: 0x5b, flags: 0x0}, + 1125: {region: 0x127, script: 0x5b, flags: 0x0}, + 1126: {region: 0x166, script: 0x5b, flags: 0x0}, + 1127: {region: 0x3c, script: 0x3, flags: 0x1}, + 1128: {region: 0x166, script: 0x5b, flags: 0x0}, + 1129: {region: 0x166, script: 0x5b, flags: 0x0}, + 1130: {region: 0x166, script: 0x5b, flags: 0x0}, + 1131: {region: 0x124, script: 0xee, flags: 0x0}, + 1132: {region: 0xdc, script: 0x22, flags: 0x0}, + 1133: {region: 0xdc, script: 0x22, flags: 0x0}, + 1134: {region: 0xdc, script: 0x22, flags: 0x0}, + 1135: {region: 0x70, script: 0x2c, flags: 0x0}, + 1136: {region: 0x166, script: 0x5b, flags: 0x0}, + 1137: {region: 0x6e, script: 0x2c, flags: 0x0}, + 1138: {region: 0x166, script: 0x5b, flags: 0x0}, + 1139: {region: 0x166, script: 0x5b, flags: 0x0}, + 1140: {region: 0x166, script: 0x5b, flags: 0x0}, + 1141: {region: 0xd7, script: 0x5b, flags: 0x0}, + 1142: {region: 0x128, script: 0x5b, flags: 0x0}, + 1143: {region: 0x126, script: 0x5b, flags: 0x0}, + 1144: {region: 0x32, script: 0x5b, flags: 0x0}, + 1145: {region: 0xdc, script: 0x22, flags: 0x0}, + 1146: {region: 0xe8, script: 0x5b, flags: 0x0}, + 1147: {region: 0x166, script: 0x5b, flags: 0x0}, + 1148: {region: 0x166, script: 0x5b, flags: 0x0}, + 1149: {region: 0x32, script: 0x5b, flags: 0x0}, + 1150: {region: 0xd5, script: 0x5b, flags: 0x0}, + 1151: {region: 0x166, script: 0x5b, flags: 0x0}, + 1152: {region: 0x162, script: 0x5b, flags: 0x0}, + 1153: {region: 0x166, script: 0x5b, flags: 0x0}, + 1154: {region: 0x12a, script: 0x5b, flags: 0x0}, + 1155: {region: 0x166, script: 0x5b, flags: 0x0}, + 1156: {region: 0xcf, script: 0x5b, flags: 0x0}, + 1157: {region: 0x166, script: 0x5b, flags: 0x0}, + 1158: {region: 0xe7, script: 0x5b, flags: 0x0}, + 1159: {region: 0x166, script: 0x5b, flags: 0x0}, + 1160: {region: 0x166, script: 0x5b, flags: 0x0}, + 1161: {region: 0x166, script: 0x5b, flags: 0x0}, + 1162: {region: 0x12c, script: 0x5b, flags: 0x0}, + 1163: {region: 0x12c, script: 0x5b, flags: 0x0}, + 1164: {region: 0x12f, script: 0x5b, flags: 0x0}, + 1165: {region: 0x166, script: 0x5, flags: 0x0}, + 1166: {region: 0x162, script: 0x5b, flags: 0x0}, + 1167: {region: 0x88, script: 0x34, flags: 0x0}, + 1168: {region: 0xdc, script: 0x22, flags: 0x0}, + 1169: {region: 0xe8, script: 0x5b, flags: 0x0}, + 1170: {region: 0x43, script: 0xef, flags: 0x0}, + 1171: {region: 0x166, script: 0x5b, flags: 0x0}, + 1172: {region: 0x107, script: 0x20, flags: 0x0}, + 1173: {region: 0x166, script: 0x5b, flags: 0x0}, + 1174: {region: 0x166, script: 0x5b, flags: 0x0}, + 1175: {region: 0x132, script: 0x5b, flags: 0x0}, + 1176: {region: 0x166, script: 0x5b, flags: 0x0}, + 1177: {region: 0x124, script: 0xee, flags: 0x0}, + 1178: {region: 0x32, script: 0x5b, flags: 0x0}, + 1179: {region: 0x166, script: 0x5b, flags: 0x0}, + 1180: {region: 0x166, script: 0x5b, flags: 0x0}, + 1181: {region: 0xcf, script: 0x5b, flags: 0x0}, + 1182: {region: 0x166, script: 0x5b, flags: 0x0}, + 1183: {region: 0x166, script: 0x5b, flags: 0x0}, + 1184: {region: 0x12e, script: 0x5b, flags: 0x0}, + 1185: {region: 0x166, script: 0x5b, flags: 0x0}, + 1187: {region: 0x166, script: 0x5b, flags: 0x0}, + 1188: {region: 0xd5, script: 0x5b, flags: 0x0}, + 1189: {region: 0x53, script: 0xe7, flags: 0x0}, + 1190: {region: 0xe6, script: 0x5b, flags: 0x0}, + 1191: {region: 0x166, script: 0x5b, flags: 0x0}, + 1192: {region: 0x107, script: 0x20, flags: 0x0}, + 1193: {region: 0xbb, script: 0x5b, flags: 0x0}, + 1194: {region: 0x166, script: 0x5b, flags: 0x0}, + 1195: {region: 0x107, script: 0x20, flags: 0x0}, + 1196: {region: 0x3f, script: 0x4, flags: 0x1}, + 1197: {region: 0x11d, script: 0xf3, flags: 0x0}, + 1198: {region: 0x131, script: 0x20, flags: 0x0}, + 1199: {region: 0x76, script: 0x5b, flags: 0x0}, + 1200: {region: 0x2a, script: 0x5b, flags: 0x0}, + 1202: {region: 0x43, script: 0x3, flags: 0x1}, + 1203: {region: 0x9a, script: 0xe, flags: 0x0}, + 1204: {region: 0xe9, script: 0x5, flags: 0x0}, + 1205: {region: 0x166, script: 0x5b, flags: 0x0}, + 1206: {region: 0x166, script: 0x5b, flags: 0x0}, + 1207: {region: 0x166, script: 0x5b, flags: 0x0}, + 1208: {region: 0x166, script: 0x5b, flags: 0x0}, + 1209: {region: 0x166, script: 0x5b, flags: 0x0}, + 1210: {region: 0x166, script: 0x5b, flags: 0x0}, + 1211: {region: 0x166, script: 0x5b, flags: 0x0}, + 1212: {region: 0x46, script: 0x4, flags: 0x1}, + 1213: {region: 0x166, script: 0x5b, flags: 0x0}, + 1214: {region: 0xb5, script: 0xf4, flags: 0x0}, + 1215: {region: 0x166, script: 0x5b, flags: 0x0}, + 1216: {region: 0x162, script: 0x5b, flags: 0x0}, + 1217: {region: 0x9f, script: 0x5b, flags: 0x0}, + 1218: {region: 0x107, script: 0x5b, flags: 0x0}, + 1219: {region: 0x13f, script: 0x5b, flags: 0x0}, + 1220: {region: 0x11c, script: 0x5b, flags: 0x0}, + 1221: {region: 0x166, script: 0x5b, flags: 0x0}, + 1222: {region: 0x36, script: 0x5b, flags: 0x0}, + 1223: {region: 0x61, script: 0x5b, flags: 0x0}, + 1224: {region: 0xd2, script: 0x5b, flags: 0x0}, + 1225: {region: 0x1, script: 0x5b, flags: 0x0}, + 1226: {region: 0x107, script: 0x5b, flags: 0x0}, + 1227: {region: 0x6b, script: 0x5b, flags: 0x0}, + 1228: {region: 0x130, script: 0x5b, flags: 0x0}, + 1229: {region: 0x166, script: 0x5b, flags: 0x0}, + 1230: {region: 0x36, script: 0x5b, flags: 0x0}, + 1231: {region: 0x4e, script: 0x5b, flags: 0x0}, + 1232: {region: 0x166, script: 0x5b, flags: 0x0}, + 1233: {region: 0x70, script: 0x2c, flags: 0x0}, + 1234: {region: 0x166, script: 0x5b, flags: 0x0}, + 1235: {region: 0xe8, script: 0x5b, flags: 0x0}, + 1236: {region: 0x2f, script: 0x5b, flags: 0x0}, + 1237: {region: 0x9a, script: 0xe9, flags: 0x0}, + 1238: {region: 0x9a, script: 0x22, flags: 0x0}, + 1239: {region: 0x166, script: 0x5b, flags: 0x0}, + 1240: {region: 0x166, script: 0x5b, flags: 0x0}, + 1241: {region: 0x166, script: 0x5b, flags: 0x0}, + 1242: {region: 0x166, script: 0x5b, flags: 0x0}, + 1243: {region: 0x166, script: 0x5b, flags: 0x0}, + 1244: {region: 0x166, script: 0x5b, flags: 0x0}, + 1245: {region: 0x166, script: 0x5b, flags: 0x0}, + 1246: {region: 0x166, script: 0x5b, flags: 0x0}, + 1247: {region: 0x166, script: 0x5b, flags: 0x0}, + 1248: {region: 0x141, script: 0x5b, flags: 0x0}, + 1249: {region: 0x166, script: 0x5b, flags: 0x0}, + 1250: {region: 0x166, script: 0x5b, flags: 0x0}, + 1251: {region: 0xa9, script: 0x5, flags: 0x0}, + 1252: {region: 0x166, script: 0x5b, flags: 0x0}, + 1253: {region: 0x115, script: 0x5b, flags: 0x0}, + 1254: {region: 0x166, script: 0x5b, flags: 0x0}, + 1255: {region: 0x166, script: 0x5b, flags: 0x0}, + 1256: {region: 0x166, script: 0x5b, flags: 0x0}, + 1257: {region: 0x166, script: 0x5b, flags: 0x0}, + 1258: {region: 0x9a, script: 0x22, flags: 0x0}, + 1259: {region: 0x53, script: 0x3b, flags: 0x0}, + 1260: {region: 0x166, script: 0x5b, flags: 0x0}, + 1261: {region: 0x166, script: 0x5b, flags: 0x0}, + 1262: {region: 0x41, script: 0x5b, flags: 0x0}, + 1263: {region: 0x166, script: 0x5b, flags: 0x0}, + 1264: {region: 0x12c, script: 0x18, flags: 0x0}, + 1265: {region: 0x166, script: 0x5b, flags: 0x0}, + 1266: {region: 0x162, script: 0x5b, flags: 0x0}, + 1267: {region: 0x166, script: 0x5b, flags: 0x0}, + 1268: {region: 0x12c, script: 0x63, flags: 0x0}, + 1269: {region: 0x12c, script: 0x64, flags: 0x0}, + 1270: {region: 0x7e, script: 0x2e, flags: 0x0}, + 1271: {region: 0x53, script: 0x68, flags: 0x0}, + 1272: {region: 0x10c, script: 0x6d, flags: 0x0}, + 1273: {region: 0x109, script: 0x79, flags: 0x0}, + 1274: {region: 0x9a, script: 0x22, flags: 0x0}, + 1275: {region: 0x132, script: 0x5b, flags: 0x0}, + 1276: {region: 0x166, script: 0x5b, flags: 0x0}, + 1277: {region: 0x9d, script: 0x93, flags: 0x0}, + 1278: {region: 0x166, script: 0x5b, flags: 0x0}, + 1279: {region: 0x15f, script: 0xce, flags: 0x0}, + 1280: {region: 0x166, script: 0x5b, flags: 0x0}, + 1281: {region: 0x166, script: 0x5b, flags: 0x0}, + 1282: {region: 0xdc, script: 0x22, flags: 0x0}, + 1283: {region: 0x166, script: 0x5b, flags: 0x0}, + 1284: {region: 0x166, script: 0x5b, flags: 0x0}, + 1285: {region: 0xd2, script: 0x5b, flags: 0x0}, + 1286: {region: 0x76, script: 0x5b, flags: 0x0}, + 1287: {region: 0x166, script: 0x5b, flags: 0x0}, + 1288: {region: 0x166, script: 0x5b, flags: 0x0}, + 1289: {region: 0x52, script: 0x5b, flags: 0x0}, + 1290: {region: 0x166, script: 0x5b, flags: 0x0}, + 1291: {region: 0x166, script: 0x5b, flags: 0x0}, + 1292: {region: 0x166, script: 0x5b, flags: 0x0}, + 1293: {region: 0x52, script: 0x5b, flags: 0x0}, + 1294: {region: 0x166, script: 0x5b, flags: 0x0}, + 1295: {region: 0x166, script: 0x5b, flags: 0x0}, + 1296: {region: 0x166, script: 0x5b, flags: 0x0}, + 1297: {region: 0x166, script: 0x5b, flags: 0x0}, + 1298: {region: 0x1, script: 0x3e, flags: 0x0}, + 1299: {region: 0x166, script: 0x5b, flags: 0x0}, + 1300: {region: 0x166, script: 0x5b, flags: 0x0}, + 1301: {region: 0x166, script: 0x5b, flags: 0x0}, + 1302: {region: 0x166, script: 0x5b, flags: 0x0}, + 1303: {region: 0x166, script: 0x5b, flags: 0x0}, + 1304: {region: 0xd7, script: 0x5b, flags: 0x0}, + 1305: {region: 0x166, script: 0x5b, flags: 0x0}, + 1306: {region: 0x166, script: 0x5b, flags: 0x0}, + 1307: {region: 0x166, script: 0x5b, flags: 0x0}, + 1308: {region: 0x41, script: 0x5b, flags: 0x0}, + 1309: {region: 0x166, script: 0x5b, flags: 0x0}, + 1310: {region: 0xd0, script: 0x5b, flags: 0x0}, + 1311: {region: 0x4a, script: 0x3, flags: 0x1}, + 1312: {region: 0x166, script: 0x5b, flags: 0x0}, + 1313: {region: 0x166, script: 0x5b, flags: 0x0}, + 1314: {region: 0x166, script: 0x5b, flags: 0x0}, + 1315: {region: 0x53, script: 0x5b, flags: 0x0}, + 1316: {region: 0x10c, script: 0x5b, flags: 0x0}, + 1318: {region: 0xa9, script: 0x5, flags: 0x0}, + 1319: {region: 0xda, script: 0x5b, flags: 0x0}, + 1320: {region: 0xbb, script: 0xeb, flags: 0x0}, + 1321: {region: 0x4d, script: 0x14, flags: 0x1}, + 1322: {region: 0x53, script: 0x7f, flags: 0x0}, + 1323: {region: 0x166, script: 0x5b, flags: 0x0}, + 1324: {region: 0x123, script: 0x5b, flags: 0x0}, + 1325: {region: 0xd1, script: 0x5b, flags: 0x0}, + 1326: {region: 0x166, script: 0x5b, flags: 0x0}, + 1327: {region: 0x162, script: 0x5b, flags: 0x0}, + 1329: {region: 0x12c, script: 0x5b, flags: 0x0}, +} + +// likelyLangList holds lists info associated with likelyLang. +// Size: 582 bytes, 97 elements +var likelyLangList = [97]likelyScriptRegion{ + 0: {region: 0x9d, script: 0x7, flags: 0x0}, + 1: {region: 0xa2, script: 0x7a, flags: 0x2}, + 2: {region: 0x11d, script: 0x87, flags: 0x2}, + 3: {region: 0x32, script: 0x5b, flags: 0x0}, + 4: {region: 0x9c, script: 0x5, flags: 0x4}, + 5: {region: 0x9d, script: 0x5, flags: 0x4}, + 6: {region: 0x107, script: 0x20, flags: 0x4}, + 7: {region: 0x9d, script: 0x5, flags: 0x2}, + 8: {region: 0x107, script: 0x20, flags: 0x0}, + 9: {region: 0x38, script: 0x2f, flags: 0x2}, + 10: {region: 0x136, script: 0x5b, flags: 0x0}, + 11: {region: 0x7c, script: 0xd1, flags: 0x2}, + 12: {region: 0x115, script: 0x5b, flags: 0x0}, + 13: {region: 0x85, script: 0x1, flags: 0x2}, + 14: {region: 0x5e, script: 0x1f, flags: 0x0}, + 15: {region: 0x88, script: 0x60, flags: 0x2}, + 16: {region: 0xd7, script: 0x5b, flags: 0x0}, + 17: {region: 0x52, script: 0x5, flags: 0x4}, + 18: {region: 0x10c, script: 0x5, flags: 0x4}, + 19: {region: 0xaf, script: 0x20, flags: 0x0}, + 20: {region: 0x24, script: 0x5, flags: 0x4}, + 21: {region: 0x53, script: 0x5, flags: 0x4}, + 22: {region: 0x9d, script: 0x5, flags: 0x4}, + 23: {region: 0xc6, script: 0x5, flags: 0x4}, + 24: {region: 0x53, script: 0x5, flags: 0x2}, + 25: {region: 0x12c, script: 0x5b, flags: 0x0}, + 26: {region: 0xb1, script: 0x5, flags: 0x4}, + 27: {region: 0x9c, script: 0x5, flags: 0x2}, + 28: {region: 0xa6, script: 0x20, flags: 0x0}, + 29: {region: 0x53, script: 0x5, flags: 0x4}, + 30: {region: 0x12c, script: 0x5b, flags: 0x4}, + 31: {region: 0x53, script: 0x5, flags: 0x2}, + 32: {region: 0x12c, script: 0x5b, flags: 0x2}, + 33: {region: 0xdc, script: 0x22, flags: 0x0}, + 34: {region: 0x9a, script: 0x5e, flags: 0x2}, + 35: {region: 0x84, script: 0x5b, flags: 0x0}, + 36: {region: 0x85, script: 0x7e, flags: 0x4}, + 37: {region: 0x85, script: 0x7e, flags: 0x2}, + 38: {region: 0xc6, script: 0x20, flags: 0x0}, + 39: {region: 0x53, script: 0x71, flags: 0x4}, + 40: {region: 0x53, script: 0x71, flags: 0x2}, + 41: {region: 0xd1, script: 0x5b, flags: 0x0}, + 42: {region: 0x4a, script: 0x5, flags: 0x4}, + 43: {region: 0x96, script: 0x5, flags: 0x4}, + 44: {region: 0x9a, script: 0x36, flags: 0x0}, + 45: {region: 0xe9, script: 0x5, flags: 0x4}, + 46: {region: 0xe9, script: 0x5, flags: 0x2}, + 47: {region: 0x9d, script: 0x8d, flags: 0x0}, + 48: {region: 0x53, script: 0x8e, flags: 0x2}, + 49: {region: 0xbb, script: 0xeb, flags: 0x0}, + 50: {region: 0xda, script: 0x5b, flags: 0x4}, + 51: {region: 0xe9, script: 0x5, flags: 0x0}, + 52: {region: 0x9a, script: 0x22, flags: 0x2}, + 53: {region: 0x9a, script: 0x50, flags: 0x2}, + 54: {region: 0x9a, script: 0xd5, flags: 0x2}, + 55: {region: 0x106, script: 0x20, flags: 0x0}, + 56: {region: 0xbe, script: 0x5b, flags: 0x4}, + 57: {region: 0x105, script: 0x5b, flags: 0x4}, + 58: {region: 0x107, script: 0x5b, flags: 0x4}, + 59: {region: 0x12c, script: 0x5b, flags: 0x4}, + 60: {region: 0x125, script: 0x20, flags: 0x0}, + 61: {region: 0xe9, script: 0x5, flags: 0x4}, + 62: {region: 0xe9, script: 0x5, flags: 0x2}, + 63: {region: 0x53, script: 0x5, flags: 0x0}, + 64: {region: 0xaf, script: 0x20, flags: 0x4}, + 65: {region: 0xc6, script: 0x20, flags: 0x4}, + 66: {region: 0xaf, script: 0x20, flags: 0x2}, + 67: {region: 0x9a, script: 0xe, flags: 0x0}, + 68: {region: 0xdc, script: 0x22, flags: 0x4}, + 69: {region: 0xdc, script: 0x22, flags: 0x2}, + 70: {region: 0x138, script: 0x5b, flags: 0x0}, + 71: {region: 0x24, script: 0x5, flags: 0x4}, + 72: {region: 0x53, script: 0x20, flags: 0x4}, + 73: {region: 0x24, script: 0x5, flags: 0x2}, + 74: {region: 0x8e, script: 0x3c, flags: 0x0}, + 75: {region: 0x53, script: 0x3b, flags: 0x4}, + 76: {region: 0x53, script: 0x3b, flags: 0x2}, + 77: {region: 0x53, script: 0x3b, flags: 0x0}, + 78: {region: 0x2f, script: 0x3c, flags: 0x4}, + 79: {region: 0x3e, script: 0x3c, flags: 0x4}, + 80: {region: 0x7c, script: 0x3c, flags: 0x4}, + 81: {region: 0x7f, script: 0x3c, flags: 0x4}, + 82: {region: 0x8e, script: 0x3c, flags: 0x4}, + 83: {region: 0x96, script: 0x3c, flags: 0x4}, + 84: {region: 0xc7, script: 0x3c, flags: 0x4}, + 85: {region: 0xd1, script: 0x3c, flags: 0x4}, + 86: {region: 0xe3, script: 0x3c, flags: 0x4}, + 87: {region: 0xe6, script: 0x3c, flags: 0x4}, + 88: {region: 0xe8, script: 0x3c, flags: 0x4}, + 89: {region: 0x117, script: 0x3c, flags: 0x4}, + 90: {region: 0x124, script: 0x3c, flags: 0x4}, + 91: {region: 0x12f, script: 0x3c, flags: 0x4}, + 92: {region: 0x136, script: 0x3c, flags: 0x4}, + 93: {region: 0x13f, script: 0x3c, flags: 0x4}, + 94: {region: 0x12f, script: 0x11, flags: 0x2}, + 95: {region: 0x12f, script: 0x37, flags: 0x2}, + 96: {region: 0x12f, script: 0x3c, flags: 0x2}, +} + +type likelyLangScript struct { + lang uint16 + script uint16 + flags uint8 +} + +// likelyRegion is a lookup table, indexed by regionID, for the most likely +// languages and scripts given incomplete information. If more entries exist +// for a given regionID, lang and script are the index and size respectively +// of the list in likelyRegionList. +// TODO: exclude containers and user-definable regions from the list. +// Size: 2154 bytes, 359 elements +var likelyRegion = [359]likelyLangScript{ + 34: {lang: 0xd7, script: 0x5b, flags: 0x0}, + 35: {lang: 0x3a, script: 0x5, flags: 0x0}, + 36: {lang: 0x0, script: 0x2, flags: 0x1}, + 39: {lang: 0x2, script: 0x2, flags: 0x1}, + 40: {lang: 0x4, script: 0x2, flags: 0x1}, + 42: {lang: 0x3c0, script: 0x5b, flags: 0x0}, + 43: {lang: 0x0, script: 0x5b, flags: 0x0}, + 44: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 45: {lang: 0x41b, script: 0x5b, flags: 0x0}, + 46: {lang: 0x10d, script: 0x5b, flags: 0x0}, + 48: {lang: 0x367, script: 0x5b, flags: 0x0}, + 49: {lang: 0x444, script: 0x5b, flags: 0x0}, + 50: {lang: 0x58, script: 0x5b, flags: 0x0}, + 51: {lang: 0x6, script: 0x2, flags: 0x1}, + 53: {lang: 0xa5, script: 0xe, flags: 0x0}, + 54: {lang: 0x367, script: 0x5b, flags: 0x0}, + 55: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 56: {lang: 0x7e, script: 0x20, flags: 0x0}, + 57: {lang: 0x3a, script: 0x5, flags: 0x0}, + 58: {lang: 0x3d9, script: 0x5b, flags: 0x0}, + 59: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 60: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 62: {lang: 0x31f, script: 0x5b, flags: 0x0}, + 63: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 64: {lang: 0x3a1, script: 0x5b, flags: 0x0}, + 65: {lang: 0x3c0, script: 0x5b, flags: 0x0}, + 67: {lang: 0x8, script: 0x2, flags: 0x1}, + 69: {lang: 0x0, script: 0x5b, flags: 0x0}, + 71: {lang: 0x71, script: 0x20, flags: 0x0}, + 73: {lang: 0x512, script: 0x3e, flags: 0x2}, + 74: {lang: 0x31f, script: 0x5, flags: 0x2}, + 75: {lang: 0x445, script: 0x5b, flags: 0x0}, + 76: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 77: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 78: {lang: 0x10d, script: 0x5b, flags: 0x0}, + 79: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 81: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 82: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 83: {lang: 0xa, script: 0x4, flags: 0x1}, + 84: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 85: {lang: 0x0, script: 0x5b, flags: 0x0}, + 87: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 90: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 91: {lang: 0x3c0, script: 0x5b, flags: 0x0}, + 92: {lang: 0x3a1, script: 0x5b, flags: 0x0}, + 94: {lang: 0xe, script: 0x2, flags: 0x1}, + 95: {lang: 0xfa, script: 0x5b, flags: 0x0}, + 97: {lang: 0x10d, script: 0x5b, flags: 0x0}, + 99: {lang: 0x1, script: 0x5b, flags: 0x0}, + 100: {lang: 0x101, script: 0x5b, flags: 0x0}, + 102: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 104: {lang: 0x10, script: 0x2, flags: 0x1}, + 105: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 106: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 107: {lang: 0x140, script: 0x5b, flags: 0x0}, + 108: {lang: 0x3a, script: 0x5, flags: 0x0}, + 109: {lang: 0x3a, script: 0x5, flags: 0x0}, + 110: {lang: 0x46f, script: 0x2c, flags: 0x0}, + 111: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 112: {lang: 0x12, script: 0x2, flags: 0x1}, + 114: {lang: 0x10d, script: 0x5b, flags: 0x0}, + 115: {lang: 0x151, script: 0x5b, flags: 0x0}, + 116: {lang: 0x1c0, script: 0x22, flags: 0x2}, + 119: {lang: 0x158, script: 0x5b, flags: 0x0}, + 121: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 123: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 124: {lang: 0x14, script: 0x2, flags: 0x1}, + 126: {lang: 0x16, script: 0x3, flags: 0x1}, + 127: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 129: {lang: 0x21, script: 0x5b, flags: 0x0}, + 131: {lang: 0x245, script: 0x5b, flags: 0x0}, + 133: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 134: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 135: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 136: {lang: 0x19, script: 0x2, flags: 0x1}, + 137: {lang: 0x0, script: 0x5b, flags: 0x0}, + 138: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 140: {lang: 0x3c0, script: 0x5b, flags: 0x0}, + 142: {lang: 0x529, script: 0x3c, flags: 0x0}, + 143: {lang: 0x0, script: 0x5b, flags: 0x0}, + 144: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 145: {lang: 0x1d1, script: 0x5b, flags: 0x0}, + 146: {lang: 0x1d4, script: 0x5b, flags: 0x0}, + 147: {lang: 0x1d5, script: 0x5b, flags: 0x0}, + 149: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 150: {lang: 0x1b, script: 0x2, flags: 0x1}, + 152: {lang: 0x1bc, script: 0x3e, flags: 0x0}, + 154: {lang: 0x1d, script: 0x3, flags: 0x1}, + 156: {lang: 0x3a, script: 0x5, flags: 0x0}, + 157: {lang: 0x20, script: 0x2, flags: 0x1}, + 158: {lang: 0x1f8, script: 0x5b, flags: 0x0}, + 159: {lang: 0x1f9, script: 0x5b, flags: 0x0}, + 162: {lang: 0x3a, script: 0x5, flags: 0x0}, + 163: {lang: 0x200, script: 0x49, flags: 0x0}, + 165: {lang: 0x445, script: 0x5b, flags: 0x0}, + 166: {lang: 0x28a, script: 0x20, flags: 0x0}, + 167: {lang: 0x22, script: 0x3, flags: 0x1}, + 169: {lang: 0x25, script: 0x2, flags: 0x1}, + 171: {lang: 0x254, script: 0x54, flags: 0x0}, + 172: {lang: 0x254, script: 0x54, flags: 0x0}, + 173: {lang: 0x3a, script: 0x5, flags: 0x0}, + 175: {lang: 0x3e2, script: 0x20, flags: 0x0}, + 176: {lang: 0x27, script: 0x2, flags: 0x1}, + 177: {lang: 0x3a, script: 0x5, flags: 0x0}, + 179: {lang: 0x10d, script: 0x5b, flags: 0x0}, + 180: {lang: 0x40c, script: 0xd6, flags: 0x0}, + 182: {lang: 0x43b, script: 0x5b, flags: 0x0}, + 183: {lang: 0x2c0, script: 0x5b, flags: 0x0}, + 184: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 185: {lang: 0x2c7, script: 0x5b, flags: 0x0}, + 186: {lang: 0x3a, script: 0x5, flags: 0x0}, + 187: {lang: 0x29, script: 0x2, flags: 0x1}, + 188: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 189: {lang: 0x2b, script: 0x2, flags: 0x1}, + 190: {lang: 0x432, script: 0x5b, flags: 0x0}, + 191: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 192: {lang: 0x2f1, script: 0x5b, flags: 0x0}, + 195: {lang: 0x2d, script: 0x2, flags: 0x1}, + 196: {lang: 0xa0, script: 0x5b, flags: 0x0}, + 197: {lang: 0x2f, script: 0x2, flags: 0x1}, + 198: {lang: 0x31, script: 0x2, flags: 0x1}, + 199: {lang: 0x33, script: 0x2, flags: 0x1}, + 201: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 202: {lang: 0x35, script: 0x2, flags: 0x1}, + 204: {lang: 0x320, script: 0x5b, flags: 0x0}, + 205: {lang: 0x37, script: 0x3, flags: 0x1}, + 206: {lang: 0x128, script: 0xed, flags: 0x0}, + 208: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 209: {lang: 0x31f, script: 0x5b, flags: 0x0}, + 210: {lang: 0x3c0, script: 0x5b, flags: 0x0}, + 211: {lang: 0x16, script: 0x5b, flags: 0x0}, + 212: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 213: {lang: 0x1b4, script: 0x5b, flags: 0x0}, + 215: {lang: 0x1b4, script: 0x5, flags: 0x2}, + 217: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 218: {lang: 0x367, script: 0x5b, flags: 0x0}, + 219: {lang: 0x347, script: 0x5b, flags: 0x0}, + 220: {lang: 0x351, script: 0x22, flags: 0x0}, + 226: {lang: 0x3a, script: 0x5, flags: 0x0}, + 227: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 229: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 230: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 231: {lang: 0x486, script: 0x5b, flags: 0x0}, + 232: {lang: 0x153, script: 0x5b, flags: 0x0}, + 233: {lang: 0x3a, script: 0x3, flags: 0x1}, + 234: {lang: 0x3b3, script: 0x5b, flags: 0x0}, + 235: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 237: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 238: {lang: 0x3a, script: 0x5, flags: 0x0}, + 239: {lang: 0x3c0, script: 0x5b, flags: 0x0}, + 241: {lang: 0x3a2, script: 0x5b, flags: 0x0}, + 242: {lang: 0x194, script: 0x5b, flags: 0x0}, + 244: {lang: 0x3a, script: 0x5, flags: 0x0}, + 259: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 261: {lang: 0x3d, script: 0x2, flags: 0x1}, + 262: {lang: 0x432, script: 0x20, flags: 0x0}, + 263: {lang: 0x3f, script: 0x2, flags: 0x1}, + 264: {lang: 0x3e5, script: 0x5b, flags: 0x0}, + 265: {lang: 0x3a, script: 0x5, flags: 0x0}, + 267: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 268: {lang: 0x3a, script: 0x5, flags: 0x0}, + 269: {lang: 0x41, script: 0x2, flags: 0x1}, + 272: {lang: 0x416, script: 0x5b, flags: 0x0}, + 273: {lang: 0x347, script: 0x5b, flags: 0x0}, + 274: {lang: 0x43, script: 0x2, flags: 0x1}, + 276: {lang: 0x1f9, script: 0x5b, flags: 0x0}, + 277: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 278: {lang: 0x429, script: 0x5b, flags: 0x0}, + 279: {lang: 0x367, script: 0x5b, flags: 0x0}, + 281: {lang: 0x3c0, script: 0x5b, flags: 0x0}, + 283: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 285: {lang: 0x45, script: 0x2, flags: 0x1}, + 289: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 290: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 291: {lang: 0x47, script: 0x2, flags: 0x1}, + 292: {lang: 0x49, script: 0x3, flags: 0x1}, + 293: {lang: 0x4c, script: 0x2, flags: 0x1}, + 294: {lang: 0x477, script: 0x5b, flags: 0x0}, + 295: {lang: 0x3c0, script: 0x5b, flags: 0x0}, + 296: {lang: 0x476, script: 0x5b, flags: 0x0}, + 297: {lang: 0x4e, script: 0x2, flags: 0x1}, + 298: {lang: 0x482, script: 0x5b, flags: 0x0}, + 300: {lang: 0x50, script: 0x4, flags: 0x1}, + 302: {lang: 0x4a0, script: 0x5b, flags: 0x0}, + 303: {lang: 0x54, script: 0x2, flags: 0x1}, + 304: {lang: 0x445, script: 0x5b, flags: 0x0}, + 305: {lang: 0x56, script: 0x3, flags: 0x1}, + 306: {lang: 0x445, script: 0x5b, flags: 0x0}, + 310: {lang: 0x512, script: 0x3e, flags: 0x2}, + 311: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 312: {lang: 0x4bc, script: 0x5b, flags: 0x0}, + 313: {lang: 0x1f9, script: 0x5b, flags: 0x0}, + 316: {lang: 0x13e, script: 0x5b, flags: 0x0}, + 319: {lang: 0x4c3, script: 0x5b, flags: 0x0}, + 320: {lang: 0x8a, script: 0x5b, flags: 0x0}, + 321: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 323: {lang: 0x41b, script: 0x5b, flags: 0x0}, + 334: {lang: 0x59, script: 0x2, flags: 0x1}, + 351: {lang: 0x3a, script: 0x5, flags: 0x0}, + 352: {lang: 0x5b, script: 0x2, flags: 0x1}, + 357: {lang: 0x423, script: 0x5b, flags: 0x0}, +} + +// likelyRegionList holds lists info associated with likelyRegion. +// Size: 558 bytes, 93 elements +var likelyRegionList = [93]likelyLangScript{ + 0: {lang: 0x148, script: 0x5, flags: 0x0}, + 1: {lang: 0x476, script: 0x5b, flags: 0x0}, + 2: {lang: 0x431, script: 0x5b, flags: 0x0}, + 3: {lang: 0x2ff, script: 0x20, flags: 0x0}, + 4: {lang: 0x1d7, script: 0x8, flags: 0x0}, + 5: {lang: 0x274, script: 0x5b, flags: 0x0}, + 6: {lang: 0xb7, script: 0x5b, flags: 0x0}, + 7: {lang: 0x432, script: 0x20, flags: 0x0}, + 8: {lang: 0x12d, script: 0xef, flags: 0x0}, + 9: {lang: 0x351, script: 0x22, flags: 0x0}, + 10: {lang: 0x529, script: 0x3b, flags: 0x0}, + 11: {lang: 0x4ac, script: 0x5, flags: 0x0}, + 12: {lang: 0x523, script: 0x5b, flags: 0x0}, + 13: {lang: 0x29a, script: 0xee, flags: 0x0}, + 14: {lang: 0x136, script: 0x34, flags: 0x0}, + 15: {lang: 0x48a, script: 0x5b, flags: 0x0}, + 16: {lang: 0x3a, script: 0x5, flags: 0x0}, + 17: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 18: {lang: 0x27, script: 0x2c, flags: 0x0}, + 19: {lang: 0x139, script: 0x5b, flags: 0x0}, + 20: {lang: 0x26a, script: 0x5, flags: 0x2}, + 21: {lang: 0x512, script: 0x3e, flags: 0x2}, + 22: {lang: 0x210, script: 0x2e, flags: 0x0}, + 23: {lang: 0x5, script: 0x20, flags: 0x0}, + 24: {lang: 0x274, script: 0x5b, flags: 0x0}, + 25: {lang: 0x136, script: 0x34, flags: 0x0}, + 26: {lang: 0x2ff, script: 0x20, flags: 0x0}, + 27: {lang: 0x1e1, script: 0x5b, flags: 0x0}, + 28: {lang: 0x31f, script: 0x5, flags: 0x0}, + 29: {lang: 0x1be, script: 0x22, flags: 0x0}, + 30: {lang: 0x4b4, script: 0x5, flags: 0x0}, + 31: {lang: 0x236, script: 0x76, flags: 0x0}, + 32: {lang: 0x148, script: 0x5, flags: 0x0}, + 33: {lang: 0x476, script: 0x5b, flags: 0x0}, + 34: {lang: 0x24a, script: 0x4f, flags: 0x0}, + 35: {lang: 0xe6, script: 0x5, flags: 0x0}, + 36: {lang: 0x226, script: 0xee, flags: 0x0}, + 37: {lang: 0x3a, script: 0x5, flags: 0x0}, + 38: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 39: {lang: 0x2b8, script: 0x58, flags: 0x0}, + 40: {lang: 0x226, script: 0xee, flags: 0x0}, + 41: {lang: 0x3a, script: 0x5, flags: 0x0}, + 42: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 43: {lang: 0x3dc, script: 0x5b, flags: 0x0}, + 44: {lang: 0x4ae, script: 0x20, flags: 0x0}, + 45: {lang: 0x2ff, script: 0x20, flags: 0x0}, + 46: {lang: 0x431, script: 0x5b, flags: 0x0}, + 47: {lang: 0x331, script: 0x76, flags: 0x0}, + 48: {lang: 0x213, script: 0x5b, flags: 0x0}, + 49: {lang: 0x30b, script: 0x20, flags: 0x0}, + 50: {lang: 0x242, script: 0x5, flags: 0x0}, + 51: {lang: 0x529, script: 0x3c, flags: 0x0}, + 52: {lang: 0x3c0, script: 0x5b, flags: 0x0}, + 53: {lang: 0x3a, script: 0x5, flags: 0x0}, + 54: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 55: {lang: 0x2ed, script: 0x5b, flags: 0x0}, + 56: {lang: 0x4b4, script: 0x5, flags: 0x0}, + 57: {lang: 0x88, script: 0x22, flags: 0x0}, + 58: {lang: 0x4b4, script: 0x5, flags: 0x0}, + 59: {lang: 0x4b4, script: 0x5, flags: 0x0}, + 60: {lang: 0xbe, script: 0x22, flags: 0x0}, + 61: {lang: 0x3dc, script: 0x5b, flags: 0x0}, + 62: {lang: 0x7e, script: 0x20, flags: 0x0}, + 63: {lang: 0x3e2, script: 0x20, flags: 0x0}, + 64: {lang: 0x267, script: 0x5b, flags: 0x0}, + 65: {lang: 0x444, script: 0x5b, flags: 0x0}, + 66: {lang: 0x512, script: 0x3e, flags: 0x0}, + 67: {lang: 0x412, script: 0x5b, flags: 0x0}, + 68: {lang: 0x4ae, script: 0x20, flags: 0x0}, + 69: {lang: 0x3a, script: 0x5, flags: 0x0}, + 70: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 71: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 72: {lang: 0x35, script: 0x5, flags: 0x0}, + 73: {lang: 0x46b, script: 0xee, flags: 0x0}, + 74: {lang: 0x2ec, script: 0x5, flags: 0x0}, + 75: {lang: 0x30f, script: 0x76, flags: 0x0}, + 76: {lang: 0x467, script: 0x20, flags: 0x0}, + 77: {lang: 0x148, script: 0x5, flags: 0x0}, + 78: {lang: 0x3a, script: 0x5, flags: 0x0}, + 79: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 80: {lang: 0x48a, script: 0x5b, flags: 0x0}, + 81: {lang: 0x58, script: 0x5, flags: 0x0}, + 82: {lang: 0x219, script: 0x20, flags: 0x0}, + 83: {lang: 0x81, script: 0x34, flags: 0x0}, + 84: {lang: 0x529, script: 0x3c, flags: 0x0}, + 85: {lang: 0x48c, script: 0x5b, flags: 0x0}, + 86: {lang: 0x4ae, script: 0x20, flags: 0x0}, + 87: {lang: 0x512, script: 0x3e, flags: 0x0}, + 88: {lang: 0x3b3, script: 0x5b, flags: 0x0}, + 89: {lang: 0x431, script: 0x5b, flags: 0x0}, + 90: {lang: 0x432, script: 0x20, flags: 0x0}, + 91: {lang: 0x15e, script: 0x5b, flags: 0x0}, + 92: {lang: 0x446, script: 0x5, flags: 0x0}, +} + +type likelyTag struct { + lang uint16 + region uint16 + script uint16 +} + +// Size: 198 bytes, 33 elements +var likelyRegionGroup = [33]likelyTag{ + 1: {lang: 0x139, region: 0xd7, script: 0x5b}, + 2: {lang: 0x139, region: 0x136, script: 0x5b}, + 3: {lang: 0x3c0, region: 0x41, script: 0x5b}, + 4: {lang: 0x139, region: 0x2f, script: 0x5b}, + 5: {lang: 0x139, region: 0xd7, script: 0x5b}, + 6: {lang: 0x13e, region: 0xd0, script: 0x5b}, + 7: {lang: 0x445, region: 0x130, script: 0x5b}, + 8: {lang: 0x3a, region: 0x6c, script: 0x5}, + 9: {lang: 0x445, region: 0x4b, script: 0x5b}, + 10: {lang: 0x139, region: 0x162, script: 0x5b}, + 11: {lang: 0x139, region: 0x136, script: 0x5b}, + 12: {lang: 0x139, region: 0x136, script: 0x5b}, + 13: {lang: 0x13e, region: 0x5a, script: 0x5b}, + 14: {lang: 0x529, region: 0x53, script: 0x3b}, + 15: {lang: 0x1be, region: 0x9a, script: 0x22}, + 16: {lang: 0x1e1, region: 0x96, script: 0x5b}, + 17: {lang: 0x1f9, region: 0x9f, script: 0x5b}, + 18: {lang: 0x139, region: 0x2f, script: 0x5b}, + 19: {lang: 0x139, region: 0xe7, script: 0x5b}, + 20: {lang: 0x139, region: 0x8b, script: 0x5b}, + 21: {lang: 0x41b, region: 0x143, script: 0x5b}, + 22: {lang: 0x529, region: 0x53, script: 0x3b}, + 23: {lang: 0x4bc, region: 0x138, script: 0x5b}, + 24: {lang: 0x3a, region: 0x109, script: 0x5}, + 25: {lang: 0x3e2, region: 0x107, script: 0x20}, + 26: {lang: 0x3e2, region: 0x107, script: 0x20}, + 27: {lang: 0x139, region: 0x7c, script: 0x5b}, + 28: {lang: 0x10d, region: 0x61, script: 0x5b}, + 29: {lang: 0x139, region: 0xd7, script: 0x5b}, + 30: {lang: 0x13e, region: 0x1f, script: 0x5b}, + 31: {lang: 0x139, region: 0x9b, script: 0x5b}, + 32: {lang: 0x139, region: 0x7c, script: 0x5b}, +} + +// Size: 264 bytes, 33 elements +var regionContainment = [33]uint64{ + // Entry 0 - 1F + 0x00000001ffffffff, 0x00000000200007a2, 0x0000000000003044, 0x0000000000000008, + 0x00000000803c0010, 0x0000000000000020, 0x0000000000000040, 0x0000000000000080, + 0x0000000000000100, 0x0000000000000200, 0x0000000000000400, 0x000000004000384c, + 0x0000000000001000, 0x0000000000002000, 0x0000000000004000, 0x0000000000008000, + 0x0000000000010000, 0x0000000000020000, 0x0000000000040000, 0x0000000000080000, + 0x0000000000100000, 0x0000000000200000, 0x0000000001c1c000, 0x0000000000800000, + 0x0000000001000000, 0x000000001e020000, 0x0000000004000000, 0x0000000008000000, + 0x0000000010000000, 0x00000000200006a0, 0x0000000040002048, 0x0000000080000000, + // Entry 20 - 3F + 0x0000000100000000, +} + +// regionInclusion maps region identifiers to sets of regions in regionInclusionBits, +// where each set holds all groupings that are directly connected in a region +// containment graph. +// Size: 359 bytes, 359 elements +var regionInclusion = [359]uint8{ + // Entry 0 - 3F + 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, + 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, + 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, + 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, + 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x26, 0x23, + 0x24, 0x26, 0x27, 0x22, 0x28, 0x29, 0x2a, 0x2b, + 0x26, 0x2c, 0x24, 0x23, 0x26, 0x25, 0x2a, 0x2d, + 0x2e, 0x24, 0x2f, 0x2d, 0x26, 0x30, 0x31, 0x28, + // Entry 40 - 7F + 0x26, 0x28, 0x26, 0x25, 0x31, 0x22, 0x32, 0x33, + 0x34, 0x30, 0x22, 0x27, 0x27, 0x27, 0x35, 0x2d, + 0x29, 0x28, 0x27, 0x36, 0x28, 0x22, 0x21, 0x34, + 0x23, 0x21, 0x26, 0x2d, 0x26, 0x22, 0x37, 0x2e, + 0x35, 0x2a, 0x22, 0x2f, 0x38, 0x26, 0x26, 0x21, + 0x39, 0x39, 0x28, 0x38, 0x39, 0x39, 0x2f, 0x3a, + 0x2f, 0x20, 0x21, 0x38, 0x3b, 0x28, 0x3c, 0x2c, + 0x21, 0x2a, 0x35, 0x27, 0x38, 0x26, 0x24, 0x28, + // Entry 80 - BF + 0x2c, 0x2d, 0x23, 0x30, 0x2d, 0x2d, 0x26, 0x27, + 0x3a, 0x22, 0x34, 0x3c, 0x2d, 0x28, 0x36, 0x22, + 0x34, 0x3a, 0x26, 0x2e, 0x21, 0x39, 0x31, 0x38, + 0x24, 0x2c, 0x25, 0x22, 0x24, 0x25, 0x2c, 0x3a, + 0x2c, 0x26, 0x24, 0x36, 0x21, 0x2f, 0x3d, 0x31, + 0x3c, 0x2f, 0x26, 0x36, 0x36, 0x24, 0x26, 0x3d, + 0x31, 0x24, 0x26, 0x35, 0x25, 0x2d, 0x32, 0x38, + 0x2a, 0x38, 0x39, 0x39, 0x35, 0x33, 0x23, 0x26, + // Entry C0 - FF + 0x2f, 0x3c, 0x21, 0x23, 0x2d, 0x31, 0x36, 0x36, + 0x3c, 0x26, 0x2d, 0x26, 0x3a, 0x2f, 0x25, 0x2f, + 0x34, 0x31, 0x2f, 0x32, 0x3b, 0x2d, 0x2b, 0x2d, + 0x21, 0x34, 0x2a, 0x2c, 0x25, 0x21, 0x3c, 0x24, + 0x29, 0x2b, 0x24, 0x34, 0x21, 0x28, 0x29, 0x3b, + 0x31, 0x25, 0x2e, 0x30, 0x29, 0x26, 0x24, 0x3a, + 0x21, 0x3c, 0x28, 0x21, 0x24, 0x21, 0x21, 0x1f, + 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, + // Entry 100 - 13F + 0x21, 0x21, 0x21, 0x2f, 0x21, 0x2e, 0x23, 0x33, + 0x2f, 0x24, 0x3b, 0x2f, 0x39, 0x38, 0x31, 0x2d, + 0x3a, 0x2c, 0x2e, 0x2d, 0x23, 0x2d, 0x2f, 0x28, + 0x2f, 0x27, 0x33, 0x34, 0x26, 0x24, 0x32, 0x22, + 0x26, 0x27, 0x22, 0x2d, 0x31, 0x3d, 0x29, 0x31, + 0x3d, 0x39, 0x29, 0x31, 0x24, 0x26, 0x29, 0x36, + 0x2f, 0x33, 0x2f, 0x21, 0x22, 0x21, 0x30, 0x28, + 0x3d, 0x23, 0x26, 0x21, 0x28, 0x26, 0x26, 0x31, + // Entry 140 - 17F + 0x3b, 0x29, 0x21, 0x29, 0x21, 0x21, 0x21, 0x21, + 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, 0x21, + 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, + 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x24, 0x24, + 0x2f, 0x23, 0x32, 0x2f, 0x27, 0x2f, 0x21, +} + +// regionInclusionBits is an array of bit vectors where every vector represents +// a set of region groupings. These sets are used to compute the distance +// between two regions for the purpose of language matching. +// Size: 584 bytes, 73 elements +var regionInclusionBits = [73]uint64{ + // Entry 0 - 1F + 0x0000000102400813, 0x00000000200007a3, 0x0000000000003844, 0x0000000040000808, + 0x00000000803c0011, 0x0000000020000022, 0x0000000040000844, 0x0000000020000082, + 0x0000000000000102, 0x0000000020000202, 0x0000000020000402, 0x000000004000384d, + 0x0000000000001804, 0x0000000040002804, 0x0000000000404000, 0x0000000000408000, + 0x0000000000410000, 0x0000000002020000, 0x0000000000040010, 0x0000000000080010, + 0x0000000000100010, 0x0000000000200010, 0x0000000001c1c001, 0x0000000000c00000, + 0x0000000001400000, 0x000000001e020001, 0x0000000006000000, 0x000000000a000000, + 0x0000000012000000, 0x00000000200006a2, 0x0000000040002848, 0x0000000080000010, + // Entry 20 - 3F + 0x0000000100000001, 0x0000000000000001, 0x0000000080000000, 0x0000000000020000, + 0x0000000001000000, 0x0000000000008000, 0x0000000000002000, 0x0000000000000200, + 0x0000000000000008, 0x0000000000200000, 0x0000000110000000, 0x0000000000040000, + 0x0000000008000000, 0x0000000000000020, 0x0000000104000000, 0x0000000000000080, + 0x0000000000001000, 0x0000000000010000, 0x0000000000000400, 0x0000000004000000, + 0x0000000000000040, 0x0000000010000000, 0x0000000000004000, 0x0000000101000000, + 0x0000000108000000, 0x0000000000000100, 0x0000000100020000, 0x0000000000080000, + 0x0000000000100000, 0x0000000000800000, 0x00000001ffffffff, 0x0000000122400fb3, + // Entry 40 - 5F + 0x00000001827c0813, 0x000000014240385f, 0x0000000103c1c813, 0x000000011e420813, + 0x0000000112000001, 0x0000000106000001, 0x0000000101400001, 0x000000010a000001, + 0x0000000102020001, +} + +// regionInclusionNext marks, for each entry in regionInclusionBits, the set of +// all groups that are reachable from the groups set in the respective entry. +// Size: 73 bytes, 73 elements +var regionInclusionNext = [73]uint8{ + // Entry 0 - 3F + 0x3e, 0x3f, 0x0b, 0x0b, 0x40, 0x01, 0x0b, 0x01, + 0x01, 0x01, 0x01, 0x41, 0x0b, 0x0b, 0x16, 0x16, + 0x16, 0x19, 0x04, 0x04, 0x04, 0x04, 0x42, 0x16, + 0x16, 0x43, 0x19, 0x19, 0x19, 0x01, 0x0b, 0x04, + 0x00, 0x00, 0x1f, 0x11, 0x18, 0x0f, 0x0d, 0x09, + 0x03, 0x15, 0x44, 0x12, 0x1b, 0x05, 0x45, 0x07, + 0x0c, 0x10, 0x0a, 0x1a, 0x06, 0x1c, 0x0e, 0x46, + 0x47, 0x08, 0x48, 0x13, 0x14, 0x17, 0x3e, 0x3e, + // Entry 40 - 7F + 0x3e, 0x3e, 0x3e, 0x3e, 0x43, 0x43, 0x42, 0x43, + 0x43, +} + +type parentRel struct { + lang uint16 + script uint16 + maxScript uint16 + toRegion uint16 + fromRegion []uint16 +} + +// Size: 414 bytes, 5 elements +var parents = [5]parentRel{ + 0: {lang: 0x139, script: 0x0, maxScript: 0x5b, toRegion: 0x1, fromRegion: []uint16{0x1a, 0x25, 0x26, 0x2f, 0x34, 0x36, 0x3d, 0x42, 0x46, 0x48, 0x49, 0x4a, 0x50, 0x52, 0x5d, 0x5e, 0x62, 0x65, 0x6e, 0x74, 0x75, 0x76, 0x7c, 0x7d, 0x80, 0x81, 0x82, 0x84, 0x8d, 0x8e, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0xa0, 0xa1, 0xa5, 0xa8, 0xaa, 0xae, 0xb2, 0xb5, 0xb6, 0xc0, 0xc7, 0xcb, 0xcc, 0xcd, 0xcf, 0xd1, 0xd3, 0xd6, 0xd7, 0xde, 0xe0, 0xe1, 0xe7, 0xe8, 0xe9, 0xec, 0xf1, 0x108, 0x10a, 0x10b, 0x10c, 0x10e, 0x10f, 0x113, 0x118, 0x11c, 0x11e, 0x120, 0x126, 0x12a, 0x12d, 0x12e, 0x130, 0x132, 0x13a, 0x13d, 0x140, 0x143, 0x162, 0x163, 0x165}}, + 1: {lang: 0x139, script: 0x0, maxScript: 0x5b, toRegion: 0x1a, fromRegion: []uint16{0x2e, 0x4e, 0x61, 0x64, 0x73, 0xda, 0x10d, 0x110}}, + 2: {lang: 0x13e, script: 0x0, maxScript: 0x5b, toRegion: 0x1f, fromRegion: []uint16{0x2c, 0x3f, 0x41, 0x48, 0x51, 0x54, 0x57, 0x5a, 0x66, 0x6a, 0x8a, 0x90, 0xd0, 0xd9, 0xe3, 0xe5, 0xed, 0xf2, 0x11b, 0x136, 0x137, 0x13c}}, + 3: {lang: 0x3c0, script: 0x0, maxScript: 0x5b, toRegion: 0xef, fromRegion: []uint16{0x2a, 0x4e, 0x5b, 0x87, 0x8c, 0xb8, 0xc7, 0xd2, 0x119, 0x127}}, + 4: {lang: 0x529, script: 0x3c, maxScript: 0x3c, toRegion: 0x8e, fromRegion: []uint16{0xc7}}, +} + +// Total table size 30466 bytes (29KiB); checksum: 7544152B diff --git a/tests/vendor/golang.org/x/text/internal/language/tags.go b/tests/vendor/golang.org/x/text/internal/language/tags.go new file mode 100644 index 000000000..e7afd3188 --- /dev/null +++ b/tests/vendor/golang.org/x/text/internal/language/tags.go @@ -0,0 +1,48 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package language + +// MustParse is like Parse, but panics if the given BCP 47 tag cannot be parsed. +// It simplifies safe initialization of Tag values. +func MustParse(s string) Tag { + t, err := Parse(s) + if err != nil { + panic(err) + } + return t +} + +// MustParseBase is like ParseBase, but panics if the given base cannot be parsed. +// It simplifies safe initialization of Base values. +func MustParseBase(s string) Language { + b, err := ParseBase(s) + if err != nil { + panic(err) + } + return b +} + +// MustParseScript is like ParseScript, but panics if the given script cannot be +// parsed. It simplifies safe initialization of Script values. +func MustParseScript(s string) Script { + scr, err := ParseScript(s) + if err != nil { + panic(err) + } + return scr +} + +// MustParseRegion is like ParseRegion, but panics if the given region cannot be +// parsed. It simplifies safe initialization of Region values. +func MustParseRegion(s string) Region { + r, err := ParseRegion(s) + if err != nil { + panic(err) + } + return r +} + +// Und is the root language. +var Und Tag diff --git a/tests/vendor/golang.org/x/text/internal/tag/tag.go b/tests/vendor/golang.org/x/text/internal/tag/tag.go new file mode 100644 index 000000000..b5d348891 --- /dev/null +++ b/tests/vendor/golang.org/x/text/internal/tag/tag.go @@ -0,0 +1,100 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package tag contains functionality handling tags and related data. +package tag // import "golang.org/x/text/internal/tag" + +import "sort" + +// An Index converts tags to a compact numeric value. +// +// All elements are of size 4. Tags may be up to 4 bytes long. Excess bytes can +// be used to store additional information about the tag. +type Index string + +// Elem returns the element data at the given index. +func (s Index) Elem(x int) string { + return string(s[x*4 : x*4+4]) +} + +// Index reports the index of the given key or -1 if it could not be found. +// Only the first len(key) bytes from the start of the 4-byte entries will be +// considered for the search and the first match in Index will be returned. +func (s Index) Index(key []byte) int { + n := len(key) + // search the index of the first entry with an equal or higher value than + // key in s. + index := sort.Search(len(s)/4, func(i int) bool { + return cmp(s[i*4:i*4+n], key) != -1 + }) + i := index * 4 + if cmp(s[i:i+len(key)], key) != 0 { + return -1 + } + return index +} + +// Next finds the next occurrence of key after index x, which must have been +// obtained from a call to Index using the same key. It returns x+1 or -1. +func (s Index) Next(key []byte, x int) int { + if x++; x*4 < len(s) && cmp(s[x*4:x*4+len(key)], key) == 0 { + return x + } + return -1 +} + +// cmp returns an integer comparing a and b lexicographically. +func cmp(a Index, b []byte) int { + n := len(a) + if len(b) < n { + n = len(b) + } + for i, c := range b[:n] { + switch { + case a[i] > c: + return 1 + case a[i] < c: + return -1 + } + } + switch { + case len(a) < len(b): + return -1 + case len(a) > len(b): + return 1 + } + return 0 +} + +// Compare returns an integer comparing a and b lexicographically. +func Compare(a string, b []byte) int { + return cmp(Index(a), b) +} + +// FixCase reformats b to the same pattern of cases as form. +// If returns false if string b is malformed. +func FixCase(form string, b []byte) bool { + if len(form) != len(b) { + return false + } + for i, c := range b { + if form[i] <= 'Z' { + if c >= 'a' { + c -= 'z' - 'Z' + } + if c < 'A' || 'Z' < c { + return false + } + } else { + if c <= 'Z' { + c += 'z' - 'Z' + } + if c < 'a' || 'z' < c { + return false + } + } + b[i] = c + } + return true +} diff --git a/tests/vendor/golang.org/x/text/internal/utf8internal/utf8internal.go b/tests/vendor/golang.org/x/text/internal/utf8internal/utf8internal.go new file mode 100644 index 000000000..e5c53b1b3 --- /dev/null +++ b/tests/vendor/golang.org/x/text/internal/utf8internal/utf8internal.go @@ -0,0 +1,87 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package utf8internal contains low-level utf8-related constants, tables, etc. +// that are used internally by the text package. +package utf8internal + +// The default lowest and highest continuation byte. +const ( + LoCB = 0x80 // 1000 0000 + HiCB = 0xBF // 1011 1111 +) + +// Constants related to getting information of first bytes of UTF-8 sequences. +const ( + // ASCII identifies a UTF-8 byte as ASCII. + ASCII = as + + // FirstInvalid indicates a byte is invalid as a first byte of a UTF-8 + // sequence. + FirstInvalid = xx + + // SizeMask is a mask for the size bits. Use use x&SizeMask to get the size. + SizeMask = 7 + + // AcceptShift is the right-shift count for the first byte info byte to get + // the index into the AcceptRanges table. See AcceptRanges. + AcceptShift = 4 + + // The names of these constants are chosen to give nice alignment in the + // table below. The first nibble is an index into acceptRanges or F for + // special one-byte cases. The second nibble is the Rune length or the + // Status for the special one-byte case. + xx = 0xF1 // invalid: size 1 + as = 0xF0 // ASCII: size 1 + s1 = 0x02 // accept 0, size 2 + s2 = 0x13 // accept 1, size 3 + s3 = 0x03 // accept 0, size 3 + s4 = 0x23 // accept 2, size 3 + s5 = 0x34 // accept 3, size 4 + s6 = 0x04 // accept 0, size 4 + s7 = 0x44 // accept 4, size 4 +) + +// First is information about the first byte in a UTF-8 sequence. +var First = [256]uint8{ + // 1 2 3 4 5 6 7 8 9 A B C D E F + as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x00-0x0F + as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x10-0x1F + as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x20-0x2F + as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x30-0x3F + as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x40-0x4F + as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x50-0x5F + as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x60-0x6F + as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x70-0x7F + // 1 2 3 4 5 6 7 8 9 A B C D E F + xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, // 0x80-0x8F + xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, // 0x90-0x9F + xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, // 0xA0-0xAF + xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, // 0xB0-0xBF + xx, xx, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, // 0xC0-0xCF + s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, // 0xD0-0xDF + s2, s3, s3, s3, s3, s3, s3, s3, s3, s3, s3, s3, s3, s4, s3, s3, // 0xE0-0xEF + s5, s6, s6, s6, s7, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, // 0xF0-0xFF +} + +// AcceptRange gives the range of valid values for the second byte in a UTF-8 +// sequence for any value for First that is not ASCII or FirstInvalid. +type AcceptRange struct { + Lo uint8 // lowest value for second byte. + Hi uint8 // highest value for second byte. +} + +// AcceptRanges is a slice of AcceptRange values. For a given byte sequence b +// +// AcceptRanges[First[b[0]]>>AcceptShift] +// +// will give the value of AcceptRange for the multi-byte UTF-8 sequence starting +// at b[0]. +var AcceptRanges = [...]AcceptRange{ + 0: {LoCB, HiCB}, + 1: {0xA0, HiCB}, + 2: {LoCB, 0x9F}, + 3: {0x90, HiCB}, + 4: {LoCB, 0x8F}, +} diff --git a/tests/vendor/golang.org/x/text/language/coverage.go b/tests/vendor/golang.org/x/text/language/coverage.go new file mode 100644 index 000000000..a24fd1a4d --- /dev/null +++ b/tests/vendor/golang.org/x/text/language/coverage.go @@ -0,0 +1,187 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package language + +import ( + "fmt" + "sort" + + "golang.org/x/text/internal/language" +) + +// The Coverage interface is used to define the level of coverage of an +// internationalization service. Note that not all types are supported by all +// services. As lists may be generated on the fly, it is recommended that users +// of a Coverage cache the results. +type Coverage interface { + // Tags returns the list of supported tags. + Tags() []Tag + + // BaseLanguages returns the list of supported base languages. + BaseLanguages() []Base + + // Scripts returns the list of supported scripts. + Scripts() []Script + + // Regions returns the list of supported regions. + Regions() []Region +} + +var ( + // Supported defines a Coverage that lists all supported subtags. Tags + // always returns nil. + Supported Coverage = allSubtags{} +) + +// TODO: +// - Support Variants, numbering systems. +// - CLDR coverage levels. +// - Set of common tags defined in this package. + +type allSubtags struct{} + +// Regions returns the list of supported regions. As all regions are in a +// consecutive range, it simply returns a slice of numbers in increasing order. +// The "undefined" region is not returned. +func (s allSubtags) Regions() []Region { + reg := make([]Region, language.NumRegions) + for i := range reg { + reg[i] = Region{language.Region(i + 1)} + } + return reg +} + +// Scripts returns the list of supported scripts. As all scripts are in a +// consecutive range, it simply returns a slice of numbers in increasing order. +// The "undefined" script is not returned. +func (s allSubtags) Scripts() []Script { + scr := make([]Script, language.NumScripts) + for i := range scr { + scr[i] = Script{language.Script(i + 1)} + } + return scr +} + +// BaseLanguages returns the list of all supported base languages. It generates +// the list by traversing the internal structures. +func (s allSubtags) BaseLanguages() []Base { + bs := language.BaseLanguages() + base := make([]Base, len(bs)) + for i, b := range bs { + base[i] = Base{b} + } + return base +} + +// Tags always returns nil. +func (s allSubtags) Tags() []Tag { + return nil +} + +// coverage is used by NewCoverage which is used as a convenient way for +// creating Coverage implementations for partially defined data. Very often a +// package will only need to define a subset of slices. coverage provides a +// convenient way to do this. Moreover, packages using NewCoverage, instead of +// their own implementation, will not break if later new slice types are added. +type coverage struct { + tags func() []Tag + bases func() []Base + scripts func() []Script + regions func() []Region +} + +func (s *coverage) Tags() []Tag { + if s.tags == nil { + return nil + } + return s.tags() +} + +// bases implements sort.Interface and is used to sort base languages. +type bases []Base + +func (b bases) Len() int { + return len(b) +} + +func (b bases) Swap(i, j int) { + b[i], b[j] = b[j], b[i] +} + +func (b bases) Less(i, j int) bool { + return b[i].langID < b[j].langID +} + +// BaseLanguages returns the result from calling s.bases if it is specified or +// otherwise derives the set of supported base languages from tags. +func (s *coverage) BaseLanguages() []Base { + if s.bases == nil { + tags := s.Tags() + if len(tags) == 0 { + return nil + } + a := make([]Base, len(tags)) + for i, t := range tags { + a[i] = Base{language.Language(t.lang())} + } + sort.Sort(bases(a)) + k := 0 + for i := 1; i < len(a); i++ { + if a[k] != a[i] { + k++ + a[k] = a[i] + } + } + return a[:k+1] + } + return s.bases() +} + +func (s *coverage) Scripts() []Script { + if s.scripts == nil { + return nil + } + return s.scripts() +} + +func (s *coverage) Regions() []Region { + if s.regions == nil { + return nil + } + return s.regions() +} + +// NewCoverage returns a Coverage for the given lists. It is typically used by +// packages providing internationalization services to define their level of +// coverage. A list may be of type []T or func() []T, where T is either Tag, +// Base, Script or Region. The returned Coverage derives the value for Bases +// from Tags if no func or slice for []Base is specified. For other unspecified +// types the returned Coverage will return nil for the respective methods. +func NewCoverage(list ...interface{}) Coverage { + s := &coverage{} + for _, x := range list { + switch v := x.(type) { + case func() []Base: + s.bases = v + case func() []Script: + s.scripts = v + case func() []Region: + s.regions = v + case func() []Tag: + s.tags = v + case []Base: + s.bases = func() []Base { return v } + case []Script: + s.scripts = func() []Script { return v } + case []Region: + s.regions = func() []Region { return v } + case []Tag: + s.tags = func() []Tag { return v } + default: + panic(fmt.Sprintf("language: unsupported set type %T", v)) + } + } + return s +} diff --git a/tests/vendor/golang.org/x/text/language/doc.go b/tests/vendor/golang.org/x/text/language/doc.go new file mode 100644 index 000000000..212b77c90 --- /dev/null +++ b/tests/vendor/golang.org/x/text/language/doc.go @@ -0,0 +1,98 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package language implements BCP 47 language tags and related functionality. +// +// The most important function of package language is to match a list of +// user-preferred languages to a list of supported languages. +// It alleviates the developer of dealing with the complexity of this process +// and provides the user with the best experience +// (see https://blog.golang.org/matchlang). +// +// # Matching preferred against supported languages +// +// A Matcher for an application that supports English, Australian English, +// Danish, and standard Mandarin can be created as follows: +// +// var matcher = language.NewMatcher([]language.Tag{ +// language.English, // The first language is used as fallback. +// language.MustParse("en-AU"), +// language.Danish, +// language.Chinese, +// }) +// +// This list of supported languages is typically implied by the languages for +// which there exists translations of the user interface. +// +// User-preferred languages usually come as a comma-separated list of BCP 47 +// language tags. +// The MatchString finds best matches for such strings: +// +// handler(w http.ResponseWriter, r *http.Request) { +// lang, _ := r.Cookie("lang") +// accept := r.Header.Get("Accept-Language") +// tag, _ := language.MatchStrings(matcher, lang.String(), accept) +// +// // tag should now be used for the initialization of any +// // locale-specific service. +// } +// +// The Matcher's Match method can be used to match Tags directly. +// +// Matchers are aware of the intricacies of equivalence between languages, such +// as deprecated subtags, legacy tags, macro languages, mutual +// intelligibility between scripts and languages, and transparently passing +// BCP 47 user configuration. +// For instance, it will know that a reader of Bokmål Danish can read Norwegian +// and will know that Cantonese ("yue") is a good match for "zh-HK". +// +// # Using match results +// +// To guarantee a consistent user experience to the user it is important to +// use the same language tag for the selection of any locale-specific services. +// For example, it is utterly confusing to substitute spelled-out numbers +// or dates in one language in text of another language. +// More subtly confusing is using the wrong sorting order or casing +// algorithm for a certain language. +// +// All the packages in x/text that provide locale-specific services +// (e.g. collate, cases) should be initialized with the tag that was +// obtained at the start of an interaction with the user. +// +// Note that Tag that is returned by Match and MatchString may differ from any +// of the supported languages, as it may contain carried over settings from +// the user tags. +// This may be inconvenient when your application has some additional +// locale-specific data for your supported languages. +// Match and MatchString both return the index of the matched supported tag +// to simplify associating such data with the matched tag. +// +// # Canonicalization +// +// If one uses the Matcher to compare languages one does not need to +// worry about canonicalization. +// +// The meaning of a Tag varies per application. The language package +// therefore delays canonicalization and preserves information as much +// as possible. The Matcher, however, will always take into account that +// two different tags may represent the same language. +// +// By default, only legacy and deprecated tags are converted into their +// canonical equivalent. All other information is preserved. This approach makes +// the confidence scores more accurate and allows matchers to distinguish +// between variants that are otherwise lost. +// +// As a consequence, two tags that should be treated as identical according to +// BCP 47 or CLDR, like "en-Latn" and "en", will be represented differently. The +// Matcher handles such distinctions, though, and is aware of the +// equivalence relations. The CanonType type can be used to alter the +// canonicalization form. +// +// # References +// +// BCP 47 - Tags for Identifying Languages http://tools.ietf.org/html/bcp47 +package language // import "golang.org/x/text/language" + +// TODO: explanation on how to match languages for your own locale-specific +// service. diff --git a/tests/vendor/golang.org/x/text/language/language.go b/tests/vendor/golang.org/x/text/language/language.go new file mode 100644 index 000000000..4d9c66121 --- /dev/null +++ b/tests/vendor/golang.org/x/text/language/language.go @@ -0,0 +1,605 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:generate go run gen.go -output tables.go + +package language + +// TODO: Remove above NOTE after: +// - verifying that tables are dropped correctly (most notably matcher tables). + +import ( + "strings" + + "golang.org/x/text/internal/language" + "golang.org/x/text/internal/language/compact" +) + +// Tag represents a BCP 47 language tag. It is used to specify an instance of a +// specific language or locale. All language tag values are guaranteed to be +// well-formed. +type Tag compact.Tag + +func makeTag(t language.Tag) (tag Tag) { + return Tag(compact.Make(t)) +} + +func (t *Tag) tag() language.Tag { + return (*compact.Tag)(t).Tag() +} + +func (t *Tag) isCompact() bool { + return (*compact.Tag)(t).IsCompact() +} + +// TODO: improve performance. +func (t *Tag) lang() language.Language { return t.tag().LangID } +func (t *Tag) region() language.Region { return t.tag().RegionID } +func (t *Tag) script() language.Script { return t.tag().ScriptID } + +// Make is a convenience wrapper for Parse that omits the error. +// In case of an error, a sensible default is returned. +func Make(s string) Tag { + return Default.Make(s) +} + +// Make is a convenience wrapper for c.Parse that omits the error. +// In case of an error, a sensible default is returned. +func (c CanonType) Make(s string) Tag { + t, _ := c.Parse(s) + return t +} + +// Raw returns the raw base language, script and region, without making an +// attempt to infer their values. +func (t Tag) Raw() (b Base, s Script, r Region) { + tt := t.tag() + return Base{tt.LangID}, Script{tt.ScriptID}, Region{tt.RegionID} +} + +// IsRoot returns true if t is equal to language "und". +func (t Tag) IsRoot() bool { + return compact.Tag(t).IsRoot() +} + +// CanonType can be used to enable or disable various types of canonicalization. +type CanonType int + +const ( + // Replace deprecated base languages with their preferred replacements. + DeprecatedBase CanonType = 1 << iota + // Replace deprecated scripts with their preferred replacements. + DeprecatedScript + // Replace deprecated regions with their preferred replacements. + DeprecatedRegion + // Remove redundant scripts. + SuppressScript + // Normalize legacy encodings. This includes legacy languages defined in + // CLDR as well as bibliographic codes defined in ISO-639. + Legacy + // Map the dominant language of a macro language group to the macro language + // subtag. For example cmn -> zh. + Macro + // The CLDR flag should be used if full compatibility with CLDR is required. + // There are a few cases where language.Tag may differ from CLDR. To follow all + // of CLDR's suggestions, use All|CLDR. + CLDR + + // Raw can be used to Compose or Parse without Canonicalization. + Raw CanonType = 0 + + // Replace all deprecated tags with their preferred replacements. + Deprecated = DeprecatedBase | DeprecatedScript | DeprecatedRegion + + // All canonicalizations recommended by BCP 47. + BCP47 = Deprecated | SuppressScript + + // All canonicalizations. + All = BCP47 | Legacy | Macro + + // Default is the canonicalization used by Parse, Make and Compose. To + // preserve as much information as possible, canonicalizations that remove + // potentially valuable information are not included. The Matcher is + // designed to recognize similar tags that would be the same if + // they were canonicalized using All. + Default = Deprecated | Legacy + + canonLang = DeprecatedBase | Legacy | Macro + + // TODO: LikelyScript, LikelyRegion: suppress similar to ICU. +) + +// canonicalize returns the canonicalized equivalent of the tag and +// whether there was any change. +func canonicalize(c CanonType, t language.Tag) (language.Tag, bool) { + if c == Raw { + return t, false + } + changed := false + if c&SuppressScript != 0 { + if t.LangID.SuppressScript() == t.ScriptID { + t.ScriptID = 0 + changed = true + } + } + if c&canonLang != 0 { + for { + if l, aliasType := t.LangID.Canonicalize(); l != t.LangID { + switch aliasType { + case language.Legacy: + if c&Legacy != 0 { + if t.LangID == _sh && t.ScriptID == 0 { + t.ScriptID = _Latn + } + t.LangID = l + changed = true + } + case language.Macro: + if c&Macro != 0 { + // We deviate here from CLDR. The mapping "nb" -> "no" + // qualifies as a typical Macro language mapping. However, + // for legacy reasons, CLDR maps "no", the macro language + // code for Norwegian, to the dominant variant "nb". This + // change is currently under consideration for CLDR as well. + // See https://unicode.org/cldr/trac/ticket/2698 and also + // https://unicode.org/cldr/trac/ticket/1790 for some of the + // practical implications. TODO: this check could be removed + // if CLDR adopts this change. + if c&CLDR == 0 || t.LangID != _nb { + changed = true + t.LangID = l + } + } + case language.Deprecated: + if c&DeprecatedBase != 0 { + if t.LangID == _mo && t.RegionID == 0 { + t.RegionID = _MD + } + t.LangID = l + changed = true + // Other canonicalization types may still apply. + continue + } + } + } else if c&Legacy != 0 && t.LangID == _no && c&CLDR != 0 { + t.LangID = _nb + changed = true + } + break + } + } + if c&DeprecatedScript != 0 { + if t.ScriptID == _Qaai { + changed = true + t.ScriptID = _Zinh + } + } + if c&DeprecatedRegion != 0 { + if r := t.RegionID.Canonicalize(); r != t.RegionID { + changed = true + t.RegionID = r + } + } + return t, changed +} + +// Canonicalize returns the canonicalized equivalent of the tag. +func (c CanonType) Canonicalize(t Tag) (Tag, error) { + // First try fast path. + if t.isCompact() { + if _, changed := canonicalize(c, compact.Tag(t).Tag()); !changed { + return t, nil + } + } + // It is unlikely that one will canonicalize a tag after matching. So do + // a slow but simple approach here. + if tag, changed := canonicalize(c, t.tag()); changed { + tag.RemakeString() + return makeTag(tag), nil + } + return t, nil + +} + +// Confidence indicates the level of certainty for a given return value. +// For example, Serbian may be written in Cyrillic or Latin script. +// The confidence level indicates whether a value was explicitly specified, +// whether it is typically the only possible value, or whether there is +// an ambiguity. +type Confidence int + +const ( + No Confidence = iota // full confidence that there was no match + Low // most likely value picked out of a set of alternatives + High // value is generally assumed to be the correct match + Exact // exact match or explicitly specified value +) + +var confName = []string{"No", "Low", "High", "Exact"} + +func (c Confidence) String() string { + return confName[c] +} + +// String returns the canonical string representation of the language tag. +func (t Tag) String() string { + return t.tag().String() +} + +// MarshalText implements encoding.TextMarshaler. +func (t Tag) MarshalText() (text []byte, err error) { + return t.tag().MarshalText() +} + +// UnmarshalText implements encoding.TextUnmarshaler. +func (t *Tag) UnmarshalText(text []byte) error { + var tag language.Tag + err := tag.UnmarshalText(text) + *t = makeTag(tag) + return err +} + +// Base returns the base language of the language tag. If the base language is +// unspecified, an attempt will be made to infer it from the context. +// It uses a variant of CLDR's Add Likely Subtags algorithm. This is subject to change. +func (t Tag) Base() (Base, Confidence) { + if b := t.lang(); b != 0 { + return Base{b}, Exact + } + tt := t.tag() + c := High + if tt.ScriptID == 0 && !tt.RegionID.IsCountry() { + c = Low + } + if tag, err := tt.Maximize(); err == nil && tag.LangID != 0 { + return Base{tag.LangID}, c + } + return Base{0}, No +} + +// Script infers the script for the language tag. If it was not explicitly given, it will infer +// a most likely candidate. +// If more than one script is commonly used for a language, the most likely one +// is returned with a low confidence indication. For example, it returns (Cyrl, Low) +// for Serbian. +// If a script cannot be inferred (Zzzz, No) is returned. We do not use Zyyy (undetermined) +// as one would suspect from the IANA registry for BCP 47. In a Unicode context Zyyy marks +// common characters (like 1, 2, 3, '.', etc.) and is therefore more like multiple scripts. +// See https://www.unicode.org/reports/tr24/#Values for more details. Zzzz is also used for +// unknown value in CLDR. (Zzzz, Exact) is returned if Zzzz was explicitly specified. +// Note that an inferred script is never guaranteed to be the correct one. Latin is +// almost exclusively used for Afrikaans, but Arabic has been used for some texts +// in the past. Also, the script that is commonly used may change over time. +// It uses a variant of CLDR's Add Likely Subtags algorithm. This is subject to change. +func (t Tag) Script() (Script, Confidence) { + if scr := t.script(); scr != 0 { + return Script{scr}, Exact + } + tt := t.tag() + sc, c := language.Script(_Zzzz), No + if scr := tt.LangID.SuppressScript(); scr != 0 { + // Note: it is not always the case that a language with a suppress + // script value is only written in one script (e.g. kk, ms, pa). + if tt.RegionID == 0 { + return Script{scr}, High + } + sc, c = scr, High + } + if tag, err := tt.Maximize(); err == nil { + if tag.ScriptID != sc { + sc, c = tag.ScriptID, Low + } + } else { + tt, _ = canonicalize(Deprecated|Macro, tt) + if tag, err := tt.Maximize(); err == nil && tag.ScriptID != sc { + sc, c = tag.ScriptID, Low + } + } + return Script{sc}, c +} + +// Region returns the region for the language tag. If it was not explicitly given, it will +// infer a most likely candidate from the context. +// It uses a variant of CLDR's Add Likely Subtags algorithm. This is subject to change. +func (t Tag) Region() (Region, Confidence) { + if r := t.region(); r != 0 { + return Region{r}, Exact + } + tt := t.tag() + if tt, err := tt.Maximize(); err == nil { + return Region{tt.RegionID}, Low // TODO: differentiate between high and low. + } + tt, _ = canonicalize(Deprecated|Macro, tt) + if tag, err := tt.Maximize(); err == nil { + return Region{tag.RegionID}, Low + } + return Region{_ZZ}, No // TODO: return world instead of undetermined? +} + +// Variants returns the variants specified explicitly for this language tag. +// or nil if no variant was specified. +func (t Tag) Variants() []Variant { + if !compact.Tag(t).MayHaveVariants() { + return nil + } + v := []Variant{} + x, str := "", t.tag().Variants() + for str != "" { + x, str = nextToken(str) + v = append(v, Variant{x}) + } + return v +} + +// Parent returns the CLDR parent of t. In CLDR, missing fields in data for a +// specific language are substituted with fields from the parent language. +// The parent for a language may change for newer versions of CLDR. +// +// Parent returns a tag for a less specific language that is mutually +// intelligible or Und if there is no such language. This may not be the same as +// simply stripping the last BCP 47 subtag. For instance, the parent of "zh-TW" +// is "zh-Hant", and the parent of "zh-Hant" is "und". +func (t Tag) Parent() Tag { + return Tag(compact.Tag(t).Parent()) +} + +// nextToken returns token t and the rest of the string. +func nextToken(s string) (t, tail string) { + p := strings.Index(s[1:], "-") + if p == -1 { + return s[1:], "" + } + p++ + return s[1:p], s[p:] +} + +// Extension is a single BCP 47 extension. +type Extension struct { + s string +} + +// String returns the string representation of the extension, including the +// type tag. +func (e Extension) String() string { + return e.s +} + +// ParseExtension parses s as an extension and returns it on success. +func ParseExtension(s string) (e Extension, err error) { + ext, err := language.ParseExtension(s) + return Extension{ext}, err +} + +// Type returns the one-byte extension type of e. It returns 0 for the zero +// exception. +func (e Extension) Type() byte { + if e.s == "" { + return 0 + } + return e.s[0] +} + +// Tokens returns the list of tokens of e. +func (e Extension) Tokens() []string { + return strings.Split(e.s, "-") +} + +// Extension returns the extension of type x for tag t. It will return +// false for ok if t does not have the requested extension. The returned +// extension will be invalid in this case. +func (t Tag) Extension(x byte) (ext Extension, ok bool) { + if !compact.Tag(t).MayHaveExtensions() { + return Extension{}, false + } + e, ok := t.tag().Extension(x) + return Extension{e}, ok +} + +// Extensions returns all extensions of t. +func (t Tag) Extensions() []Extension { + if !compact.Tag(t).MayHaveExtensions() { + return nil + } + e := []Extension{} + for _, ext := range t.tag().Extensions() { + e = append(e, Extension{ext}) + } + return e +} + +// TypeForKey returns the type associated with the given key, where key and type +// are of the allowed values defined for the Unicode locale extension ('u') in +// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers. +// TypeForKey will traverse the inheritance chain to get the correct value. +// +// If there are multiple types associated with a key, only the first will be +// returned. If there is no type associated with a key, it returns the empty +// string. +func (t Tag) TypeForKey(key string) string { + if !compact.Tag(t).MayHaveExtensions() { + if key != "rg" && key != "va" { + return "" + } + } + return t.tag().TypeForKey(key) +} + +// SetTypeForKey returns a new Tag with the key set to type, where key and type +// are of the allowed values defined for the Unicode locale extension ('u') in +// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers. +// An empty value removes an existing pair with the same key. +func (t Tag) SetTypeForKey(key, value string) (Tag, error) { + tt, err := t.tag().SetTypeForKey(key, value) + return makeTag(tt), err +} + +// NumCompactTags is the number of compact tags. The maximum tag is +// NumCompactTags-1. +const NumCompactTags = compact.NumCompactTags + +// CompactIndex returns an index, where 0 <= index < NumCompactTags, for tags +// for which data exists in the text repository.The index will change over time +// and should not be stored in persistent storage. If t does not match a compact +// index, exact will be false and the compact index will be returned for the +// first match after repeatedly taking the Parent of t. +func CompactIndex(t Tag) (index int, exact bool) { + id, exact := compact.LanguageID(compact.Tag(t)) + return int(id), exact +} + +var root = language.Tag{} + +// Base is an ISO 639 language code, used for encoding the base language +// of a language tag. +type Base struct { + langID language.Language +} + +// ParseBase parses a 2- or 3-letter ISO 639 code. +// It returns a ValueError if s is a well-formed but unknown language identifier +// or another error if another error occurred. +func ParseBase(s string) (Base, error) { + l, err := language.ParseBase(s) + return Base{l}, err +} + +// String returns the BCP 47 representation of the base language. +func (b Base) String() string { + return b.langID.String() +} + +// ISO3 returns the ISO 639-3 language code. +func (b Base) ISO3() string { + return b.langID.ISO3() +} + +// IsPrivateUse reports whether this language code is reserved for private use. +func (b Base) IsPrivateUse() bool { + return b.langID.IsPrivateUse() +} + +// Script is a 4-letter ISO 15924 code for representing scripts. +// It is idiomatically represented in title case. +type Script struct { + scriptID language.Script +} + +// ParseScript parses a 4-letter ISO 15924 code. +// It returns a ValueError if s is a well-formed but unknown script identifier +// or another error if another error occurred. +func ParseScript(s string) (Script, error) { + sc, err := language.ParseScript(s) + return Script{sc}, err +} + +// String returns the script code in title case. +// It returns "Zzzz" for an unspecified script. +func (s Script) String() string { + return s.scriptID.String() +} + +// IsPrivateUse reports whether this script code is reserved for private use. +func (s Script) IsPrivateUse() bool { + return s.scriptID.IsPrivateUse() +} + +// Region is an ISO 3166-1 or UN M.49 code for representing countries and regions. +type Region struct { + regionID language.Region +} + +// EncodeM49 returns the Region for the given UN M.49 code. +// It returns an error if r is not a valid code. +func EncodeM49(r int) (Region, error) { + rid, err := language.EncodeM49(r) + return Region{rid}, err +} + +// ParseRegion parses a 2- or 3-letter ISO 3166-1 or a UN M.49 code. +// It returns a ValueError if s is a well-formed but unknown region identifier +// or another error if another error occurred. +func ParseRegion(s string) (Region, error) { + r, err := language.ParseRegion(s) + return Region{r}, err +} + +// String returns the BCP 47 representation for the region. +// It returns "ZZ" for an unspecified region. +func (r Region) String() string { + return r.regionID.String() +} + +// ISO3 returns the 3-letter ISO code of r. +// Note that not all regions have a 3-letter ISO code. +// In such cases this method returns "ZZZ". +func (r Region) ISO3() string { + return r.regionID.ISO3() +} + +// M49 returns the UN M.49 encoding of r, or 0 if this encoding +// is not defined for r. +func (r Region) M49() int { + return r.regionID.M49() +} + +// IsPrivateUse reports whether r has the ISO 3166 User-assigned status. This +// may include private-use tags that are assigned by CLDR and used in this +// implementation. So IsPrivateUse and IsCountry can be simultaneously true. +func (r Region) IsPrivateUse() bool { + return r.regionID.IsPrivateUse() +} + +// IsCountry returns whether this region is a country or autonomous area. This +// includes non-standard definitions from CLDR. +func (r Region) IsCountry() bool { + return r.regionID.IsCountry() +} + +// IsGroup returns whether this region defines a collection of regions. This +// includes non-standard definitions from CLDR. +func (r Region) IsGroup() bool { + return r.regionID.IsGroup() +} + +// Contains returns whether Region c is contained by Region r. It returns true +// if c == r. +func (r Region) Contains(c Region) bool { + return r.regionID.Contains(c.regionID) +} + +// TLD returns the country code top-level domain (ccTLD). UK is returned for GB. +// In all other cases it returns either the region itself or an error. +// +// This method may return an error for a region for which there exists a +// canonical form with a ccTLD. To get that ccTLD canonicalize r first. The +// region will already be canonicalized it was obtained from a Tag that was +// obtained using any of the default methods. +func (r Region) TLD() (Region, error) { + tld, err := r.regionID.TLD() + return Region{tld}, err +} + +// Canonicalize returns the region or a possible replacement if the region is +// deprecated. It will not return a replacement for deprecated regions that +// are split into multiple regions. +func (r Region) Canonicalize() Region { + return Region{r.regionID.Canonicalize()} +} + +// Variant represents a registered variant of a language as defined by BCP 47. +type Variant struct { + variant string +} + +// ParseVariant parses and returns a Variant. An error is returned if s is not +// a valid variant. +func ParseVariant(s string) (Variant, error) { + v, err := language.ParseVariant(s) + return Variant{v.String()}, err +} + +// String returns the string representation of the variant. +func (v Variant) String() string { + return v.variant +} diff --git a/tests/vendor/golang.org/x/text/language/match.go b/tests/vendor/golang.org/x/text/language/match.go new file mode 100644 index 000000000..1153baf29 --- /dev/null +++ b/tests/vendor/golang.org/x/text/language/match.go @@ -0,0 +1,735 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package language + +import ( + "errors" + "strings" + + "golang.org/x/text/internal/language" +) + +// A MatchOption configures a Matcher. +type MatchOption func(*matcher) + +// PreferSameScript will, in the absence of a match, result in the first +// preferred tag with the same script as a supported tag to match this supported +// tag. The default is currently true, but this may change in the future. +func PreferSameScript(preferSame bool) MatchOption { + return func(m *matcher) { m.preferSameScript = preferSame } +} + +// TODO(v1.0.0): consider making Matcher a concrete type, instead of interface. +// There doesn't seem to be too much need for multiple types. +// Making it a concrete type allows MatchStrings to be a method, which will +// improve its discoverability. + +// MatchStrings parses and matches the given strings until one of them matches +// the language in the Matcher. A string may be an Accept-Language header as +// handled by ParseAcceptLanguage. The default language is returned if no +// other language matched. +func MatchStrings(m Matcher, lang ...string) (tag Tag, index int) { + for _, accept := range lang { + desired, _, err := ParseAcceptLanguage(accept) + if err != nil { + continue + } + if tag, index, conf := m.Match(desired...); conf != No { + return tag, index + } + } + tag, index, _ = m.Match() + return +} + +// Matcher is the interface that wraps the Match method. +// +// Match returns the best match for any of the given tags, along with +// a unique index associated with the returned tag and a confidence +// score. +type Matcher interface { + Match(t ...Tag) (tag Tag, index int, c Confidence) +} + +// Comprehends reports the confidence score for a speaker of a given language +// to being able to comprehend the written form of an alternative language. +func Comprehends(speaker, alternative Tag) Confidence { + _, _, c := NewMatcher([]Tag{alternative}).Match(speaker) + return c +} + +// NewMatcher returns a Matcher that matches an ordered list of preferred tags +// against a list of supported tags based on written intelligibility, closeness +// of dialect, equivalence of subtags and various other rules. It is initialized +// with the list of supported tags. The first element is used as the default +// value in case no match is found. +// +// Its Match method matches the first of the given Tags to reach a certain +// confidence threshold. The tags passed to Match should therefore be specified +// in order of preference. Extensions are ignored for matching. +// +// The index returned by the Match method corresponds to the index of the +// matched tag in t, but is augmented with the Unicode extension ('u')of the +// corresponding preferred tag. This allows user locale options to be passed +// transparently. +func NewMatcher(t []Tag, options ...MatchOption) Matcher { + return newMatcher(t, options) +} + +func (m *matcher) Match(want ...Tag) (t Tag, index int, c Confidence) { + var tt language.Tag + match, w, c := m.getBest(want...) + if match != nil { + tt, index = match.tag, match.index + } else { + // TODO: this should be an option + tt = m.default_.tag + if m.preferSameScript { + outer: + for _, w := range want { + script, _ := w.Script() + if script.scriptID == 0 { + // Don't do anything if there is no script, such as with + // private subtags. + continue + } + for i, h := range m.supported { + if script.scriptID == h.maxScript { + tt, index = h.tag, i + break outer + } + } + } + } + // TODO: select first language tag based on script. + } + if w.RegionID != tt.RegionID && w.RegionID != 0 { + if w.RegionID != 0 && tt.RegionID != 0 && tt.RegionID.Contains(w.RegionID) { + tt.RegionID = w.RegionID + tt.RemakeString() + } else if r := w.RegionID.String(); len(r) == 2 { + // TODO: also filter macro and deprecated. + tt, _ = tt.SetTypeForKey("rg", strings.ToLower(r)+"zzzz") + } + } + // Copy options from the user-provided tag into the result tag. This is hard + // to do after the fact, so we do it here. + // TODO: add in alternative variants to -u-va-. + // TODO: add preferred region to -u-rg-. + if e := w.Extensions(); len(e) > 0 { + b := language.Builder{} + b.SetTag(tt) + for _, e := range e { + b.AddExt(e) + } + tt = b.Make() + } + return makeTag(tt), index, c +} + +// ErrMissingLikelyTagsData indicates no information was available +// to compute likely values of missing tags. +var ErrMissingLikelyTagsData = errors.New("missing likely tags data") + +// func (t *Tag) setTagsFrom(id Tag) { +// t.LangID = id.LangID +// t.ScriptID = id.ScriptID +// t.RegionID = id.RegionID +// } + +// Tag Matching +// CLDR defines an algorithm for finding the best match between two sets of language +// tags. The basic algorithm defines how to score a possible match and then find +// the match with the best score +// (see https://www.unicode.org/reports/tr35/#LanguageMatching). +// Using scoring has several disadvantages. The scoring obfuscates the importance of +// the various factors considered, making the algorithm harder to understand. Using +// scoring also requires the full score to be computed for each pair of tags. +// +// We will use a different algorithm which aims to have the following properties: +// - clarity on the precedence of the various selection factors, and +// - improved performance by allowing early termination of a comparison. +// +// Matching algorithm (overview) +// Input: +// - supported: a set of supported tags +// - default: the default tag to return in case there is no match +// - desired: list of desired tags, ordered by preference, starting with +// the most-preferred. +// +// Algorithm: +// 1) Set the best match to the lowest confidence level +// 2) For each tag in "desired": +// a) For each tag in "supported": +// 1) compute the match between the two tags. +// 2) if the match is better than the previous best match, replace it +// with the new match. (see next section) +// b) if the current best match is Exact and pin is true the result will be +// frozen to the language found thusfar, although better matches may +// still be found for the same language. +// 3) If the best match so far is below a certain threshold, return "default". +// +// Ranking: +// We use two phases to determine whether one pair of tags are a better match +// than another pair of tags. First, we determine a rough confidence level. If the +// levels are different, the one with the highest confidence wins. +// Second, if the rough confidence levels are identical, we use a set of tie-breaker +// rules. +// +// The confidence level of matching a pair of tags is determined by finding the +// lowest confidence level of any matches of the corresponding subtags (the +// result is deemed as good as its weakest link). +// We define the following levels: +// Exact - An exact match of a subtag, before adding likely subtags. +// MaxExact - An exact match of a subtag, after adding likely subtags. +// [See Note 2]. +// High - High level of mutual intelligibility between different subtag +// variants. +// Low - Low level of mutual intelligibility between different subtag +// variants. +// No - No mutual intelligibility. +// +// The following levels can occur for each type of subtag: +// Base: Exact, MaxExact, High, Low, No +// Script: Exact, MaxExact [see Note 3], Low, No +// Region: Exact, MaxExact, High +// Variant: Exact, High +// Private: Exact, No +// +// Any result with a confidence level of Low or higher is deemed a possible match. +// Once a desired tag matches any of the supported tags with a level of MaxExact +// or higher, the next desired tag is not considered (see Step 2.b). +// Note that CLDR provides languageMatching data that defines close equivalence +// classes for base languages, scripts and regions. +// +// Tie-breaking +// If we get the same confidence level for two matches, we apply a sequence of +// tie-breaking rules. The first that succeeds defines the result. The rules are +// applied in the following order. +// 1) Original language was defined and was identical. +// 2) Original region was defined and was identical. +// 3) Distance between two maximized regions was the smallest. +// 4) Original script was defined and was identical. +// 5) Distance from want tag to have tag using the parent relation [see Note 5.] +// If there is still no winner after these rules are applied, the first match +// found wins. +// +// Notes: +// [2] In practice, as matching of Exact is done in a separate phase from +// matching the other levels, we reuse the Exact level to mean MaxExact in +// the second phase. As a consequence, we only need the levels defined by +// the Confidence type. The MaxExact confidence level is mapped to High in +// the public API. +// [3] We do not differentiate between maximized script values that were derived +// from suppressScript versus most likely tag data. We determined that in +// ranking the two, one ranks just after the other. Moreover, the two cannot +// occur concurrently. As a consequence, they are identical for practical +// purposes. +// [4] In case of deprecated, macro-equivalents and legacy mappings, we assign +// the MaxExact level to allow iw vs he to still be a closer match than +// en-AU vs en-US, for example. +// [5] In CLDR a locale inherits fields that are unspecified for this locale +// from its parent. Therefore, if a locale is a parent of another locale, +// it is a strong measure for closeness, especially when no other tie +// breaker rule applies. One could also argue it is inconsistent, for +// example, when pt-AO matches pt (which CLDR equates with pt-BR), even +// though its parent is pt-PT according to the inheritance rules. +// +// Implementation Details: +// There are several performance considerations worth pointing out. Most notably, +// we preprocess as much as possible (within reason) at the time of creation of a +// matcher. This includes: +// - creating a per-language map, which includes data for the raw base language +// and its canonicalized variant (if applicable), +// - expanding entries for the equivalence classes defined in CLDR's +// languageMatch data. +// The per-language map ensures that typically only a very small number of tags +// need to be considered. The pre-expansion of canonicalized subtags and +// equivalence classes reduces the amount of map lookups that need to be done at +// runtime. + +// matcher keeps a set of supported language tags, indexed by language. +type matcher struct { + default_ *haveTag + supported []*haveTag + index map[language.Language]*matchHeader + passSettings bool + preferSameScript bool +} + +// matchHeader has the lists of tags for exact matches and matches based on +// maximized and canonicalized tags for a given language. +type matchHeader struct { + haveTags []*haveTag + original bool +} + +// haveTag holds a supported Tag and its maximized script and region. The maximized +// or canonicalized language is not stored as it is not needed during matching. +type haveTag struct { + tag language.Tag + + // index of this tag in the original list of supported tags. + index int + + // conf is the maximum confidence that can result from matching this haveTag. + // When conf < Exact this means it was inserted after applying a CLDR equivalence rule. + conf Confidence + + // Maximized region and script. + maxRegion language.Region + maxScript language.Script + + // altScript may be checked as an alternative match to maxScript. If altScript + // matches, the confidence level for this match is Low. Theoretically there + // could be multiple alternative scripts. This does not occur in practice. + altScript language.Script + + // nextMax is the index of the next haveTag with the same maximized tags. + nextMax uint16 +} + +func makeHaveTag(tag language.Tag, index int) (haveTag, language.Language) { + max := tag + if tag.LangID != 0 || tag.RegionID != 0 || tag.ScriptID != 0 { + max, _ = canonicalize(All, max) + max, _ = max.Maximize() + max.RemakeString() + } + return haveTag{tag, index, Exact, max.RegionID, max.ScriptID, altScript(max.LangID, max.ScriptID), 0}, max.LangID +} + +// altScript returns an alternative script that may match the given script with +// a low confidence. At the moment, the langMatch data allows for at most one +// script to map to another and we rely on this to keep the code simple. +func altScript(l language.Language, s language.Script) language.Script { + for _, alt := range matchScript { + // TODO: also match cases where language is not the same. + if (language.Language(alt.wantLang) == l || language.Language(alt.haveLang) == l) && + language.Script(alt.haveScript) == s { + return language.Script(alt.wantScript) + } + } + return 0 +} + +// addIfNew adds a haveTag to the list of tags only if it is a unique tag. +// Tags that have the same maximized values are linked by index. +func (h *matchHeader) addIfNew(n haveTag, exact bool) { + h.original = h.original || exact + // Don't add new exact matches. + for _, v := range h.haveTags { + if equalsRest(v.tag, n.tag) { + return + } + } + // Allow duplicate maximized tags, but create a linked list to allow quickly + // comparing the equivalents and bail out. + for i, v := range h.haveTags { + if v.maxScript == n.maxScript && + v.maxRegion == n.maxRegion && + v.tag.VariantOrPrivateUseTags() == n.tag.VariantOrPrivateUseTags() { + for h.haveTags[i].nextMax != 0 { + i = int(h.haveTags[i].nextMax) + } + h.haveTags[i].nextMax = uint16(len(h.haveTags)) + break + } + } + h.haveTags = append(h.haveTags, &n) +} + +// header returns the matchHeader for the given language. It creates one if +// it doesn't already exist. +func (m *matcher) header(l language.Language) *matchHeader { + if h := m.index[l]; h != nil { + return h + } + h := &matchHeader{} + m.index[l] = h + return h +} + +func toConf(d uint8) Confidence { + if d <= 10 { + return High + } + if d < 30 { + return Low + } + return No +} + +// newMatcher builds an index for the given supported tags and returns it as +// a matcher. It also expands the index by considering various equivalence classes +// for a given tag. +func newMatcher(supported []Tag, options []MatchOption) *matcher { + m := &matcher{ + index: make(map[language.Language]*matchHeader), + preferSameScript: true, + } + for _, o := range options { + o(m) + } + if len(supported) == 0 { + m.default_ = &haveTag{} + return m + } + // Add supported languages to the index. Add exact matches first to give + // them precedence. + for i, tag := range supported { + tt := tag.tag() + pair, _ := makeHaveTag(tt, i) + m.header(tt.LangID).addIfNew(pair, true) + m.supported = append(m.supported, &pair) + } + m.default_ = m.header(supported[0].lang()).haveTags[0] + // Keep these in two different loops to support the case that two equivalent + // languages are distinguished, such as iw and he. + for i, tag := range supported { + tt := tag.tag() + pair, max := makeHaveTag(tt, i) + if max != tt.LangID { + m.header(max).addIfNew(pair, true) + } + } + + // update is used to add indexes in the map for equivalent languages. + // update will only add entries to original indexes, thus not computing any + // transitive relations. + update := func(want, have uint16, conf Confidence) { + if hh := m.index[language.Language(have)]; hh != nil { + if !hh.original { + return + } + hw := m.header(language.Language(want)) + for _, ht := range hh.haveTags { + v := *ht + if conf < v.conf { + v.conf = conf + } + v.nextMax = 0 // this value needs to be recomputed + if v.altScript != 0 { + v.altScript = altScript(language.Language(want), v.maxScript) + } + hw.addIfNew(v, conf == Exact && hh.original) + } + } + } + + // Add entries for languages with mutual intelligibility as defined by CLDR's + // languageMatch data. + for _, ml := range matchLang { + update(ml.want, ml.have, toConf(ml.distance)) + if !ml.oneway { + update(ml.have, ml.want, toConf(ml.distance)) + } + } + + // Add entries for possible canonicalizations. This is an optimization to + // ensure that only one map lookup needs to be done at runtime per desired tag. + // First we match deprecated equivalents. If they are perfect equivalents + // (their canonicalization simply substitutes a different language code, but + // nothing else), the match confidence is Exact, otherwise it is High. + for i, lm := range language.AliasMap { + // If deprecated codes match and there is no fiddling with the script + // or region, we consider it an exact match. + conf := Exact + if language.AliasTypes[i] != language.Macro { + if !isExactEquivalent(language.Language(lm.From)) { + conf = High + } + update(lm.To, lm.From, conf) + } + update(lm.From, lm.To, conf) + } + return m +} + +// getBest gets the best matching tag in m for any of the given tags, taking into +// account the order of preference of the given tags. +func (m *matcher) getBest(want ...Tag) (got *haveTag, orig language.Tag, c Confidence) { + best := bestMatch{} + for i, ww := range want { + w := ww.tag() + var max language.Tag + // Check for exact match first. + h := m.index[w.LangID] + if w.LangID != 0 { + if h == nil { + continue + } + // Base language is defined. + max, _ = canonicalize(Legacy|Deprecated|Macro, w) + // A region that is added through canonicalization is stronger than + // a maximized region: set it in the original (e.g. mo -> ro-MD). + if w.RegionID != max.RegionID { + w.RegionID = max.RegionID + } + // TODO: should we do the same for scripts? + // See test case: en, sr, nl ; sh ; sr + max, _ = max.Maximize() + } else { + // Base language is not defined. + if h != nil { + for i := range h.haveTags { + have := h.haveTags[i] + if equalsRest(have.tag, w) { + return have, w, Exact + } + } + } + if w.ScriptID == 0 && w.RegionID == 0 { + // We skip all tags matching und for approximate matching, including + // private tags. + continue + } + max, _ = w.Maximize() + if h = m.index[max.LangID]; h == nil { + continue + } + } + pin := true + for _, t := range want[i+1:] { + if w.LangID == t.lang() { + pin = false + break + } + } + // Check for match based on maximized tag. + for i := range h.haveTags { + have := h.haveTags[i] + best.update(have, w, max.ScriptID, max.RegionID, pin) + if best.conf == Exact { + for have.nextMax != 0 { + have = h.haveTags[have.nextMax] + best.update(have, w, max.ScriptID, max.RegionID, pin) + } + return best.have, best.want, best.conf + } + } + } + if best.conf <= No { + if len(want) != 0 { + return nil, want[0].tag(), No + } + return nil, language.Tag{}, No + } + return best.have, best.want, best.conf +} + +// bestMatch accumulates the best match so far. +type bestMatch struct { + have *haveTag + want language.Tag + conf Confidence + pinnedRegion language.Region + pinLanguage bool + sameRegionGroup bool + // Cached results from applying tie-breaking rules. + origLang bool + origReg bool + paradigmReg bool + regGroupDist uint8 + origScript bool +} + +// update updates the existing best match if the new pair is considered to be a +// better match. To determine if the given pair is a better match, it first +// computes the rough confidence level. If this surpasses the current match, it +// will replace it and update the tie-breaker rule cache. If there is a tie, it +// proceeds with applying a series of tie-breaker rules. If there is no +// conclusive winner after applying the tie-breaker rules, it leaves the current +// match as the preferred match. +// +// If pin is true and have and tag are a strong match, it will henceforth only +// consider matches for this language. This corresponds to the idea that most +// users have a strong preference for the first defined language. A user can +// still prefer a second language over a dialect of the preferred language by +// explicitly specifying dialects, e.g. "en, nl, en-GB". In this case pin should +// be false. +func (m *bestMatch) update(have *haveTag, tag language.Tag, maxScript language.Script, maxRegion language.Region, pin bool) { + // Bail if the maximum attainable confidence is below that of the current best match. + c := have.conf + if c < m.conf { + return + } + // Don't change the language once we already have found an exact match. + if m.pinLanguage && tag.LangID != m.want.LangID { + return + } + // Pin the region group if we are comparing tags for the same language. + if tag.LangID == m.want.LangID && m.sameRegionGroup { + _, sameGroup := regionGroupDist(m.pinnedRegion, have.maxRegion, have.maxScript, m.want.LangID) + if !sameGroup { + return + } + } + if c == Exact && have.maxScript == maxScript { + // If there is another language and then another entry of this language, + // don't pin anything, otherwise pin the language. + m.pinLanguage = pin + } + if equalsRest(have.tag, tag) { + } else if have.maxScript != maxScript { + // There is usually very little comprehension between different scripts. + // In a few cases there may still be Low comprehension. This possibility + // is pre-computed and stored in have.altScript. + if Low < m.conf || have.altScript != maxScript { + return + } + c = Low + } else if have.maxRegion != maxRegion { + if High < c { + // There is usually a small difference between languages across regions. + c = High + } + } + + // We store the results of the computations of the tie-breaker rules along + // with the best match. There is no need to do the checks once we determine + // we have a winner, but we do still need to do the tie-breaker computations. + // We use "beaten" to keep track if we still need to do the checks. + beaten := false // true if the new pair defeats the current one. + if c != m.conf { + if c < m.conf { + return + } + beaten = true + } + + // Tie-breaker rules: + // We prefer if the pre-maximized language was specified and identical. + origLang := have.tag.LangID == tag.LangID && tag.LangID != 0 + if !beaten && m.origLang != origLang { + if m.origLang { + return + } + beaten = true + } + + // We prefer if the pre-maximized region was specified and identical. + origReg := have.tag.RegionID == tag.RegionID && tag.RegionID != 0 + if !beaten && m.origReg != origReg { + if m.origReg { + return + } + beaten = true + } + + regGroupDist, sameGroup := regionGroupDist(have.maxRegion, maxRegion, maxScript, tag.LangID) + if !beaten && m.regGroupDist != regGroupDist { + if regGroupDist > m.regGroupDist { + return + } + beaten = true + } + + paradigmReg := isParadigmLocale(tag.LangID, have.maxRegion) + if !beaten && m.paradigmReg != paradigmReg { + if !paradigmReg { + return + } + beaten = true + } + + // Next we prefer if the pre-maximized script was specified and identical. + origScript := have.tag.ScriptID == tag.ScriptID && tag.ScriptID != 0 + if !beaten && m.origScript != origScript { + if m.origScript { + return + } + beaten = true + } + + // Update m to the newly found best match. + if beaten { + m.have = have + m.want = tag + m.conf = c + m.pinnedRegion = maxRegion + m.sameRegionGroup = sameGroup + m.origLang = origLang + m.origReg = origReg + m.paradigmReg = paradigmReg + m.origScript = origScript + m.regGroupDist = regGroupDist + } +} + +func isParadigmLocale(lang language.Language, r language.Region) bool { + for _, e := range paradigmLocales { + if language.Language(e[0]) == lang && (r == language.Region(e[1]) || r == language.Region(e[2])) { + return true + } + } + return false +} + +// regionGroupDist computes the distance between two regions based on their +// CLDR grouping. +func regionGroupDist(a, b language.Region, script language.Script, lang language.Language) (dist uint8, same bool) { + const defaultDistance = 4 + + aGroup := uint(regionToGroups[a]) << 1 + bGroup := uint(regionToGroups[b]) << 1 + for _, ri := range matchRegion { + if language.Language(ri.lang) == lang && (ri.script == 0 || language.Script(ri.script) == script) { + group := uint(1 << (ri.group &^ 0x80)) + if 0x80&ri.group == 0 { + if aGroup&bGroup&group != 0 { // Both regions are in the group. + return ri.distance, ri.distance == defaultDistance + } + } else { + if (aGroup|bGroup)&group == 0 { // Both regions are not in the group. + return ri.distance, ri.distance == defaultDistance + } + } + } + } + return defaultDistance, true +} + +// equalsRest compares everything except the language. +func equalsRest(a, b language.Tag) bool { + // TODO: don't include extensions in this comparison. To do this efficiently, + // though, we should handle private tags separately. + return a.ScriptID == b.ScriptID && a.RegionID == b.RegionID && a.VariantOrPrivateUseTags() == b.VariantOrPrivateUseTags() +} + +// isExactEquivalent returns true if canonicalizing the language will not alter +// the script or region of a tag. +func isExactEquivalent(l language.Language) bool { + for _, o := range notEquivalent { + if o == l { + return false + } + } + return true +} + +var notEquivalent []language.Language + +func init() { + // Create a list of all languages for which canonicalization may alter the + // script or region. + for _, lm := range language.AliasMap { + tag := language.Tag{LangID: language.Language(lm.From)} + if tag, _ = canonicalize(All, tag); tag.ScriptID != 0 || tag.RegionID != 0 { + notEquivalent = append(notEquivalent, language.Language(lm.From)) + } + } + // Maximize undefined regions of paradigm locales. + for i, v := range paradigmLocales { + t := language.Tag{LangID: language.Language(v[0])} + max, _ := t.Maximize() + if v[1] == 0 { + paradigmLocales[i][1] = uint16(max.RegionID) + } + if v[2] == 0 { + paradigmLocales[i][2] = uint16(max.RegionID) + } + } +} diff --git a/tests/vendor/golang.org/x/text/language/parse.go b/tests/vendor/golang.org/x/text/language/parse.go new file mode 100644 index 000000000..053336e28 --- /dev/null +++ b/tests/vendor/golang.org/x/text/language/parse.go @@ -0,0 +1,256 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package language + +import ( + "errors" + "sort" + "strconv" + "strings" + + "golang.org/x/text/internal/language" +) + +// ValueError is returned by any of the parsing functions when the +// input is well-formed but the respective subtag is not recognized +// as a valid value. +type ValueError interface { + error + + // Subtag returns the subtag for which the error occurred. + Subtag() string +} + +// Parse parses the given BCP 47 string and returns a valid Tag. If parsing +// failed it returns an error and any part of the tag that could be parsed. +// If parsing succeeded but an unknown value was found, it returns +// ValueError. The Tag returned in this case is just stripped of the unknown +// value. All other values are preserved. It accepts tags in the BCP 47 format +// and extensions to this standard defined in +// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers. +// The resulting tag is canonicalized using the default canonicalization type. +func Parse(s string) (t Tag, err error) { + return Default.Parse(s) +} + +// Parse parses the given BCP 47 string and returns a valid Tag. If parsing +// failed it returns an error and any part of the tag that could be parsed. +// If parsing succeeded but an unknown value was found, it returns +// ValueError. The Tag returned in this case is just stripped of the unknown +// value. All other values are preserved. It accepts tags in the BCP 47 format +// and extensions to this standard defined in +// https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers. +// The resulting tag is canonicalized using the canonicalization type c. +func (c CanonType) Parse(s string) (t Tag, err error) { + defer func() { + if recover() != nil { + t = Tag{} + err = language.ErrSyntax + } + }() + + tt, err := language.Parse(s) + if err != nil { + return makeTag(tt), err + } + tt, changed := canonicalize(c, tt) + if changed { + tt.RemakeString() + } + return makeTag(tt), nil +} + +// Compose creates a Tag from individual parts, which may be of type Tag, Base, +// Script, Region, Variant, []Variant, Extension, []Extension or error. If a +// Base, Script or Region or slice of type Variant or Extension is passed more +// than once, the latter will overwrite the former. Variants and Extensions are +// accumulated, but if two extensions of the same type are passed, the latter +// will replace the former. For -u extensions, though, the key-type pairs are +// added, where later values overwrite older ones. A Tag overwrites all former +// values and typically only makes sense as the first argument. The resulting +// tag is returned after canonicalizing using the Default CanonType. If one or +// more errors are encountered, one of the errors is returned. +func Compose(part ...interface{}) (t Tag, err error) { + return Default.Compose(part...) +} + +// Compose creates a Tag from individual parts, which may be of type Tag, Base, +// Script, Region, Variant, []Variant, Extension, []Extension or error. If a +// Base, Script or Region or slice of type Variant or Extension is passed more +// than once, the latter will overwrite the former. Variants and Extensions are +// accumulated, but if two extensions of the same type are passed, the latter +// will replace the former. For -u extensions, though, the key-type pairs are +// added, where later values overwrite older ones. A Tag overwrites all former +// values and typically only makes sense as the first argument. The resulting +// tag is returned after canonicalizing using CanonType c. If one or more errors +// are encountered, one of the errors is returned. +func (c CanonType) Compose(part ...interface{}) (t Tag, err error) { + defer func() { + if recover() != nil { + t = Tag{} + err = language.ErrSyntax + } + }() + + var b language.Builder + if err = update(&b, part...); err != nil { + return und, err + } + b.Tag, _ = canonicalize(c, b.Tag) + return makeTag(b.Make()), err +} + +var errInvalidArgument = errors.New("invalid Extension or Variant") + +func update(b *language.Builder, part ...interface{}) (err error) { + for _, x := range part { + switch v := x.(type) { + case Tag: + b.SetTag(v.tag()) + case Base: + b.Tag.LangID = v.langID + case Script: + b.Tag.ScriptID = v.scriptID + case Region: + b.Tag.RegionID = v.regionID + case Variant: + if v.variant == "" { + err = errInvalidArgument + break + } + b.AddVariant(v.variant) + case Extension: + if v.s == "" { + err = errInvalidArgument + break + } + b.SetExt(v.s) + case []Variant: + b.ClearVariants() + for _, v := range v { + b.AddVariant(v.variant) + } + case []Extension: + b.ClearExtensions() + for _, e := range v { + b.SetExt(e.s) + } + // TODO: support parsing of raw strings based on morphology or just extensions? + case error: + if v != nil { + err = v + } + } + } + return +} + +var errInvalidWeight = errors.New("ParseAcceptLanguage: invalid weight") +var errTagListTooLarge = errors.New("tag list exceeds max length") + +// ParseAcceptLanguage parses the contents of an Accept-Language header as +// defined in http://www.ietf.org/rfc/rfc2616.txt and returns a list of Tags and +// a list of corresponding quality weights. It is more permissive than RFC 2616 +// and may return non-nil slices even if the input is not valid. +// The Tags will be sorted by highest weight first and then by first occurrence. +// Tags with a weight of zero will be dropped. An error will be returned if the +// input could not be parsed. +func ParseAcceptLanguage(s string) (tag []Tag, q []float32, err error) { + defer func() { + if recover() != nil { + tag = nil + q = nil + err = language.ErrSyntax + } + }() + + if strings.Count(s, "-") > 1000 { + return nil, nil, errTagListTooLarge + } + + var entry string + for s != "" { + if entry, s = split(s, ','); entry == "" { + continue + } + + entry, weight := split(entry, ';') + + // Scan the language. + t, err := Parse(entry) + if err != nil { + id, ok := acceptFallback[entry] + if !ok { + return nil, nil, err + } + t = makeTag(language.Tag{LangID: id}) + } + + // Scan the optional weight. + w := 1.0 + if weight != "" { + weight = consume(weight, 'q') + weight = consume(weight, '=') + // consume returns the empty string when a token could not be + // consumed, resulting in an error for ParseFloat. + if w, err = strconv.ParseFloat(weight, 32); err != nil { + return nil, nil, errInvalidWeight + } + // Drop tags with a quality weight of 0. + if w <= 0 { + continue + } + } + + tag = append(tag, t) + q = append(q, float32(w)) + } + sort.Stable(&tagSort{tag, q}) + return tag, q, nil +} + +// consume removes a leading token c from s and returns the result or the empty +// string if there is no such token. +func consume(s string, c byte) string { + if s == "" || s[0] != c { + return "" + } + return strings.TrimSpace(s[1:]) +} + +func split(s string, c byte) (head, tail string) { + if i := strings.IndexByte(s, c); i >= 0 { + return strings.TrimSpace(s[:i]), strings.TrimSpace(s[i+1:]) + } + return strings.TrimSpace(s), "" +} + +// Add hack mapping to deal with a small number of cases that occur +// in Accept-Language (with reasonable frequency). +var acceptFallback = map[string]language.Language{ + "english": _en, + "deutsch": _de, + "italian": _it, + "french": _fr, + "*": _mul, // defined in the spec to match all languages. +} + +type tagSort struct { + tag []Tag + q []float32 +} + +func (s *tagSort) Len() int { + return len(s.q) +} + +func (s *tagSort) Less(i, j int) bool { + return s.q[i] > s.q[j] +} + +func (s *tagSort) Swap(i, j int) { + s.tag[i], s.tag[j] = s.tag[j], s.tag[i] + s.q[i], s.q[j] = s.q[j], s.q[i] +} diff --git a/tests/vendor/golang.org/x/text/language/tables.go b/tests/vendor/golang.org/x/text/language/tables.go new file mode 100644 index 000000000..a6573dcb2 --- /dev/null +++ b/tests/vendor/golang.org/x/text/language/tables.go @@ -0,0 +1,298 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +package language + +// CLDRVersion is the CLDR version from which the tables in this package are derived. +const CLDRVersion = "32" + +const ( + _de = 269 + _en = 313 + _fr = 350 + _it = 505 + _mo = 784 + _no = 879 + _nb = 839 + _pt = 960 + _sh = 1031 + _mul = 806 + _und = 0 +) +const ( + _001 = 1 + _419 = 31 + _BR = 65 + _CA = 73 + _ES = 111 + _GB = 124 + _MD = 189 + _PT = 239 + _UK = 307 + _US = 310 + _ZZ = 358 + _XA = 324 + _XC = 326 + _XK = 334 +) +const ( + _Latn = 91 + _Hani = 57 + _Hans = 59 + _Hant = 60 + _Qaaa = 149 + _Qaai = 157 + _Qabx = 198 + _Zinh = 255 + _Zyyy = 260 + _Zzzz = 261 +) + +var regionToGroups = []uint8{ // 359 elements + // Entry 0 - 3F + 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, + 0x00, 0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, + // Entry 40 - 7F + 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, + // Entry 80 - BF + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, + 0x00, 0x00, 0x04, 0x01, 0x00, 0x04, 0x02, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x04, + // Entry C0 - FF + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x01, 0x04, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x00, 0x05, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // Entry 100 - 13F + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x05, 0x04, + 0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x05, 0x00, + // Entry 140 - 17F + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +} // Size: 383 bytes + +var paradigmLocales = [][3]uint16{ // 3 elements + 0: [3]uint16{0x139, 0x0, 0x7c}, + 1: [3]uint16{0x13e, 0x0, 0x1f}, + 2: [3]uint16{0x3c0, 0x41, 0xef}, +} // Size: 42 bytes + +type mutualIntelligibility struct { + want uint16 + have uint16 + distance uint8 + oneway bool +} +type scriptIntelligibility struct { + wantLang uint16 + haveLang uint16 + wantScript uint8 + haveScript uint8 + distance uint8 +} +type regionIntelligibility struct { + lang uint16 + script uint8 + group uint8 + distance uint8 +} + +// matchLang holds pairs of langIDs of base languages that are typically +// mutually intelligible. Each pair is associated with a confidence and +// whether the intelligibility goes one or both ways. +var matchLang = []mutualIntelligibility{ // 113 elements + 0: {want: 0x1d1, have: 0xb7, distance: 0x4, oneway: false}, + 1: {want: 0x407, have: 0xb7, distance: 0x4, oneway: false}, + 2: {want: 0x407, have: 0x1d1, distance: 0x4, oneway: false}, + 3: {want: 0x407, have: 0x432, distance: 0x4, oneway: false}, + 4: {want: 0x43a, have: 0x1, distance: 0x4, oneway: false}, + 5: {want: 0x1a3, have: 0x10d, distance: 0x4, oneway: true}, + 6: {want: 0x295, have: 0x10d, distance: 0x4, oneway: true}, + 7: {want: 0x101, have: 0x36f, distance: 0x8, oneway: false}, + 8: {want: 0x101, have: 0x347, distance: 0x8, oneway: false}, + 9: {want: 0x5, have: 0x3e2, distance: 0xa, oneway: true}, + 10: {want: 0xd, have: 0x139, distance: 0xa, oneway: true}, + 11: {want: 0x16, have: 0x367, distance: 0xa, oneway: true}, + 12: {want: 0x21, have: 0x139, distance: 0xa, oneway: true}, + 13: {want: 0x56, have: 0x13e, distance: 0xa, oneway: true}, + 14: {want: 0x58, have: 0x3e2, distance: 0xa, oneway: true}, + 15: {want: 0x71, have: 0x3e2, distance: 0xa, oneway: true}, + 16: {want: 0x75, have: 0x139, distance: 0xa, oneway: true}, + 17: {want: 0x82, have: 0x1be, distance: 0xa, oneway: true}, + 18: {want: 0xa5, have: 0x139, distance: 0xa, oneway: true}, + 19: {want: 0xb2, have: 0x15e, distance: 0xa, oneway: true}, + 20: {want: 0xdd, have: 0x153, distance: 0xa, oneway: true}, + 21: {want: 0xe5, have: 0x139, distance: 0xa, oneway: true}, + 22: {want: 0xe9, have: 0x3a, distance: 0xa, oneway: true}, + 23: {want: 0xf0, have: 0x15e, distance: 0xa, oneway: true}, + 24: {want: 0xf9, have: 0x15e, distance: 0xa, oneway: true}, + 25: {want: 0x100, have: 0x139, distance: 0xa, oneway: true}, + 26: {want: 0x130, have: 0x139, distance: 0xa, oneway: true}, + 27: {want: 0x13c, have: 0x139, distance: 0xa, oneway: true}, + 28: {want: 0x140, have: 0x151, distance: 0xa, oneway: true}, + 29: {want: 0x145, have: 0x13e, distance: 0xa, oneway: true}, + 30: {want: 0x158, have: 0x101, distance: 0xa, oneway: true}, + 31: {want: 0x16d, have: 0x367, distance: 0xa, oneway: true}, + 32: {want: 0x16e, have: 0x139, distance: 0xa, oneway: true}, + 33: {want: 0x16f, have: 0x139, distance: 0xa, oneway: true}, + 34: {want: 0x17e, have: 0x139, distance: 0xa, oneway: true}, + 35: {want: 0x190, have: 0x13e, distance: 0xa, oneway: true}, + 36: {want: 0x194, have: 0x13e, distance: 0xa, oneway: true}, + 37: {want: 0x1a4, have: 0x1be, distance: 0xa, oneway: true}, + 38: {want: 0x1b4, have: 0x139, distance: 0xa, oneway: true}, + 39: {want: 0x1b8, have: 0x139, distance: 0xa, oneway: true}, + 40: {want: 0x1d4, have: 0x15e, distance: 0xa, oneway: true}, + 41: {want: 0x1d7, have: 0x3e2, distance: 0xa, oneway: true}, + 42: {want: 0x1d9, have: 0x139, distance: 0xa, oneway: true}, + 43: {want: 0x1e7, have: 0x139, distance: 0xa, oneway: true}, + 44: {want: 0x1f8, have: 0x139, distance: 0xa, oneway: true}, + 45: {want: 0x20e, have: 0x1e1, distance: 0xa, oneway: true}, + 46: {want: 0x210, have: 0x139, distance: 0xa, oneway: true}, + 47: {want: 0x22d, have: 0x15e, distance: 0xa, oneway: true}, + 48: {want: 0x242, have: 0x3e2, distance: 0xa, oneway: true}, + 49: {want: 0x24a, have: 0x139, distance: 0xa, oneway: true}, + 50: {want: 0x251, have: 0x139, distance: 0xa, oneway: true}, + 51: {want: 0x265, have: 0x139, distance: 0xa, oneway: true}, + 52: {want: 0x274, have: 0x48a, distance: 0xa, oneway: true}, + 53: {want: 0x28a, have: 0x3e2, distance: 0xa, oneway: true}, + 54: {want: 0x28e, have: 0x1f9, distance: 0xa, oneway: true}, + 55: {want: 0x2a3, have: 0x139, distance: 0xa, oneway: true}, + 56: {want: 0x2b5, have: 0x15e, distance: 0xa, oneway: true}, + 57: {want: 0x2b8, have: 0x139, distance: 0xa, oneway: true}, + 58: {want: 0x2be, have: 0x139, distance: 0xa, oneway: true}, + 59: {want: 0x2c3, have: 0x15e, distance: 0xa, oneway: true}, + 60: {want: 0x2ed, have: 0x139, distance: 0xa, oneway: true}, + 61: {want: 0x2f1, have: 0x15e, distance: 0xa, oneway: true}, + 62: {want: 0x2fa, have: 0x139, distance: 0xa, oneway: true}, + 63: {want: 0x2ff, have: 0x7e, distance: 0xa, oneway: true}, + 64: {want: 0x304, have: 0x139, distance: 0xa, oneway: true}, + 65: {want: 0x30b, have: 0x3e2, distance: 0xa, oneway: true}, + 66: {want: 0x31b, have: 0x1be, distance: 0xa, oneway: true}, + 67: {want: 0x31f, have: 0x1e1, distance: 0xa, oneway: true}, + 68: {want: 0x320, have: 0x139, distance: 0xa, oneway: true}, + 69: {want: 0x331, have: 0x139, distance: 0xa, oneway: true}, + 70: {want: 0x351, have: 0x139, distance: 0xa, oneway: true}, + 71: {want: 0x36a, have: 0x347, distance: 0xa, oneway: false}, + 72: {want: 0x36a, have: 0x36f, distance: 0xa, oneway: true}, + 73: {want: 0x37a, have: 0x139, distance: 0xa, oneway: true}, + 74: {want: 0x387, have: 0x139, distance: 0xa, oneway: true}, + 75: {want: 0x389, have: 0x139, distance: 0xa, oneway: true}, + 76: {want: 0x38b, have: 0x15e, distance: 0xa, oneway: true}, + 77: {want: 0x390, have: 0x139, distance: 0xa, oneway: true}, + 78: {want: 0x395, have: 0x139, distance: 0xa, oneway: true}, + 79: {want: 0x39d, have: 0x139, distance: 0xa, oneway: true}, + 80: {want: 0x3a5, have: 0x139, distance: 0xa, oneway: true}, + 81: {want: 0x3be, have: 0x139, distance: 0xa, oneway: true}, + 82: {want: 0x3c4, have: 0x13e, distance: 0xa, oneway: true}, + 83: {want: 0x3d4, have: 0x10d, distance: 0xa, oneway: true}, + 84: {want: 0x3d9, have: 0x139, distance: 0xa, oneway: true}, + 85: {want: 0x3e5, have: 0x15e, distance: 0xa, oneway: true}, + 86: {want: 0x3e9, have: 0x1be, distance: 0xa, oneway: true}, + 87: {want: 0x3fa, have: 0x139, distance: 0xa, oneway: true}, + 88: {want: 0x40c, have: 0x139, distance: 0xa, oneway: true}, + 89: {want: 0x423, have: 0x139, distance: 0xa, oneway: true}, + 90: {want: 0x429, have: 0x139, distance: 0xa, oneway: true}, + 91: {want: 0x431, have: 0x139, distance: 0xa, oneway: true}, + 92: {want: 0x43b, have: 0x139, distance: 0xa, oneway: true}, + 93: {want: 0x43e, have: 0x1e1, distance: 0xa, oneway: true}, + 94: {want: 0x445, have: 0x139, distance: 0xa, oneway: true}, + 95: {want: 0x450, have: 0x139, distance: 0xa, oneway: true}, + 96: {want: 0x461, have: 0x139, distance: 0xa, oneway: true}, + 97: {want: 0x467, have: 0x3e2, distance: 0xa, oneway: true}, + 98: {want: 0x46f, have: 0x139, distance: 0xa, oneway: true}, + 99: {want: 0x476, have: 0x3e2, distance: 0xa, oneway: true}, + 100: {want: 0x3883, have: 0x139, distance: 0xa, oneway: true}, + 101: {want: 0x480, have: 0x139, distance: 0xa, oneway: true}, + 102: {want: 0x482, have: 0x139, distance: 0xa, oneway: true}, + 103: {want: 0x494, have: 0x3e2, distance: 0xa, oneway: true}, + 104: {want: 0x49d, have: 0x139, distance: 0xa, oneway: true}, + 105: {want: 0x4ac, have: 0x529, distance: 0xa, oneway: true}, + 106: {want: 0x4b4, have: 0x139, distance: 0xa, oneway: true}, + 107: {want: 0x4bc, have: 0x3e2, distance: 0xa, oneway: true}, + 108: {want: 0x4e5, have: 0x15e, distance: 0xa, oneway: true}, + 109: {want: 0x4f2, have: 0x139, distance: 0xa, oneway: true}, + 110: {want: 0x512, have: 0x139, distance: 0xa, oneway: true}, + 111: {want: 0x518, have: 0x139, distance: 0xa, oneway: true}, + 112: {want: 0x52f, have: 0x139, distance: 0xa, oneway: true}, +} // Size: 702 bytes + +// matchScript holds pairs of scriptIDs where readers of one script +// can typically also read the other. Each is associated with a confidence. +var matchScript = []scriptIntelligibility{ // 26 elements + 0: {wantLang: 0x432, haveLang: 0x432, wantScript: 0x5b, haveScript: 0x20, distance: 0x5}, + 1: {wantLang: 0x432, haveLang: 0x432, wantScript: 0x20, haveScript: 0x5b, distance: 0x5}, + 2: {wantLang: 0x58, haveLang: 0x3e2, wantScript: 0x5b, haveScript: 0x20, distance: 0xa}, + 3: {wantLang: 0xa5, haveLang: 0x139, wantScript: 0xe, haveScript: 0x5b, distance: 0xa}, + 4: {wantLang: 0x1d7, haveLang: 0x3e2, wantScript: 0x8, haveScript: 0x20, distance: 0xa}, + 5: {wantLang: 0x210, haveLang: 0x139, wantScript: 0x2e, haveScript: 0x5b, distance: 0xa}, + 6: {wantLang: 0x24a, haveLang: 0x139, wantScript: 0x4f, haveScript: 0x5b, distance: 0xa}, + 7: {wantLang: 0x251, haveLang: 0x139, wantScript: 0x53, haveScript: 0x5b, distance: 0xa}, + 8: {wantLang: 0x2b8, haveLang: 0x139, wantScript: 0x58, haveScript: 0x5b, distance: 0xa}, + 9: {wantLang: 0x304, haveLang: 0x139, wantScript: 0x6f, haveScript: 0x5b, distance: 0xa}, + 10: {wantLang: 0x331, haveLang: 0x139, wantScript: 0x76, haveScript: 0x5b, distance: 0xa}, + 11: {wantLang: 0x351, haveLang: 0x139, wantScript: 0x22, haveScript: 0x5b, distance: 0xa}, + 12: {wantLang: 0x395, haveLang: 0x139, wantScript: 0x83, haveScript: 0x5b, distance: 0xa}, + 13: {wantLang: 0x39d, haveLang: 0x139, wantScript: 0x36, haveScript: 0x5b, distance: 0xa}, + 14: {wantLang: 0x3be, haveLang: 0x139, wantScript: 0x5, haveScript: 0x5b, distance: 0xa}, + 15: {wantLang: 0x3fa, haveLang: 0x139, wantScript: 0x5, haveScript: 0x5b, distance: 0xa}, + 16: {wantLang: 0x40c, haveLang: 0x139, wantScript: 0xd6, haveScript: 0x5b, distance: 0xa}, + 17: {wantLang: 0x450, haveLang: 0x139, wantScript: 0xe6, haveScript: 0x5b, distance: 0xa}, + 18: {wantLang: 0x461, haveLang: 0x139, wantScript: 0xe9, haveScript: 0x5b, distance: 0xa}, + 19: {wantLang: 0x46f, haveLang: 0x139, wantScript: 0x2c, haveScript: 0x5b, distance: 0xa}, + 20: {wantLang: 0x476, haveLang: 0x3e2, wantScript: 0x5b, haveScript: 0x20, distance: 0xa}, + 21: {wantLang: 0x4b4, haveLang: 0x139, wantScript: 0x5, haveScript: 0x5b, distance: 0xa}, + 22: {wantLang: 0x4bc, haveLang: 0x3e2, wantScript: 0x5b, haveScript: 0x20, distance: 0xa}, + 23: {wantLang: 0x512, haveLang: 0x139, wantScript: 0x3e, haveScript: 0x5b, distance: 0xa}, + 24: {wantLang: 0x529, haveLang: 0x529, wantScript: 0x3b, haveScript: 0x3c, distance: 0xf}, + 25: {wantLang: 0x529, haveLang: 0x529, wantScript: 0x3c, haveScript: 0x3b, distance: 0x13}, +} // Size: 232 bytes + +var matchRegion = []regionIntelligibility{ // 15 elements + 0: {lang: 0x3a, script: 0x0, group: 0x4, distance: 0x4}, + 1: {lang: 0x3a, script: 0x0, group: 0x84, distance: 0x4}, + 2: {lang: 0x139, script: 0x0, group: 0x1, distance: 0x4}, + 3: {lang: 0x139, script: 0x0, group: 0x81, distance: 0x4}, + 4: {lang: 0x13e, script: 0x0, group: 0x3, distance: 0x4}, + 5: {lang: 0x13e, script: 0x0, group: 0x83, distance: 0x4}, + 6: {lang: 0x3c0, script: 0x0, group: 0x3, distance: 0x4}, + 7: {lang: 0x3c0, script: 0x0, group: 0x83, distance: 0x4}, + 8: {lang: 0x529, script: 0x3c, group: 0x2, distance: 0x4}, + 9: {lang: 0x529, script: 0x3c, group: 0x82, distance: 0x4}, + 10: {lang: 0x3a, script: 0x0, group: 0x80, distance: 0x5}, + 11: {lang: 0x139, script: 0x0, group: 0x80, distance: 0x5}, + 12: {lang: 0x13e, script: 0x0, group: 0x80, distance: 0x5}, + 13: {lang: 0x3c0, script: 0x0, group: 0x80, distance: 0x5}, + 14: {lang: 0x529, script: 0x3c, group: 0x80, distance: 0x5}, +} // Size: 114 bytes + +// Total table size 1473 bytes (1KiB); checksum: 7BB90B5C diff --git a/tests/vendor/golang.org/x/text/language/tags.go b/tests/vendor/golang.org/x/text/language/tags.go new file mode 100644 index 000000000..42ea79266 --- /dev/null +++ b/tests/vendor/golang.org/x/text/language/tags.go @@ -0,0 +1,145 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package language + +import "golang.org/x/text/internal/language/compact" + +// TODO: Various sets of commonly use tags and regions. + +// MustParse is like Parse, but panics if the given BCP 47 tag cannot be parsed. +// It simplifies safe initialization of Tag values. +func MustParse(s string) Tag { + t, err := Parse(s) + if err != nil { + panic(err) + } + return t +} + +// MustParse is like Parse, but panics if the given BCP 47 tag cannot be parsed. +// It simplifies safe initialization of Tag values. +func (c CanonType) MustParse(s string) Tag { + t, err := c.Parse(s) + if err != nil { + panic(err) + } + return t +} + +// MustParseBase is like ParseBase, but panics if the given base cannot be parsed. +// It simplifies safe initialization of Base values. +func MustParseBase(s string) Base { + b, err := ParseBase(s) + if err != nil { + panic(err) + } + return b +} + +// MustParseScript is like ParseScript, but panics if the given script cannot be +// parsed. It simplifies safe initialization of Script values. +func MustParseScript(s string) Script { + scr, err := ParseScript(s) + if err != nil { + panic(err) + } + return scr +} + +// MustParseRegion is like ParseRegion, but panics if the given region cannot be +// parsed. It simplifies safe initialization of Region values. +func MustParseRegion(s string) Region { + r, err := ParseRegion(s) + if err != nil { + panic(err) + } + return r +} + +var ( + und = Tag{} + + Und Tag = Tag{} + + Afrikaans Tag = Tag(compact.Afrikaans) + Amharic Tag = Tag(compact.Amharic) + Arabic Tag = Tag(compact.Arabic) + ModernStandardArabic Tag = Tag(compact.ModernStandardArabic) + Azerbaijani Tag = Tag(compact.Azerbaijani) + Bulgarian Tag = Tag(compact.Bulgarian) + Bengali Tag = Tag(compact.Bengali) + Catalan Tag = Tag(compact.Catalan) + Czech Tag = Tag(compact.Czech) + Danish Tag = Tag(compact.Danish) + German Tag = Tag(compact.German) + Greek Tag = Tag(compact.Greek) + English Tag = Tag(compact.English) + AmericanEnglish Tag = Tag(compact.AmericanEnglish) + BritishEnglish Tag = Tag(compact.BritishEnglish) + Spanish Tag = Tag(compact.Spanish) + EuropeanSpanish Tag = Tag(compact.EuropeanSpanish) + LatinAmericanSpanish Tag = Tag(compact.LatinAmericanSpanish) + Estonian Tag = Tag(compact.Estonian) + Persian Tag = Tag(compact.Persian) + Finnish Tag = Tag(compact.Finnish) + Filipino Tag = Tag(compact.Filipino) + French Tag = Tag(compact.French) + CanadianFrench Tag = Tag(compact.CanadianFrench) + Gujarati Tag = Tag(compact.Gujarati) + Hebrew Tag = Tag(compact.Hebrew) + Hindi Tag = Tag(compact.Hindi) + Croatian Tag = Tag(compact.Croatian) + Hungarian Tag = Tag(compact.Hungarian) + Armenian Tag = Tag(compact.Armenian) + Indonesian Tag = Tag(compact.Indonesian) + Icelandic Tag = Tag(compact.Icelandic) + Italian Tag = Tag(compact.Italian) + Japanese Tag = Tag(compact.Japanese) + Georgian Tag = Tag(compact.Georgian) + Kazakh Tag = Tag(compact.Kazakh) + Khmer Tag = Tag(compact.Khmer) + Kannada Tag = Tag(compact.Kannada) + Korean Tag = Tag(compact.Korean) + Kirghiz Tag = Tag(compact.Kirghiz) + Lao Tag = Tag(compact.Lao) + Lithuanian Tag = Tag(compact.Lithuanian) + Latvian Tag = Tag(compact.Latvian) + Macedonian Tag = Tag(compact.Macedonian) + Malayalam Tag = Tag(compact.Malayalam) + Mongolian Tag = Tag(compact.Mongolian) + Marathi Tag = Tag(compact.Marathi) + Malay Tag = Tag(compact.Malay) + Burmese Tag = Tag(compact.Burmese) + Nepali Tag = Tag(compact.Nepali) + Dutch Tag = Tag(compact.Dutch) + Norwegian Tag = Tag(compact.Norwegian) + Punjabi Tag = Tag(compact.Punjabi) + Polish Tag = Tag(compact.Polish) + Portuguese Tag = Tag(compact.Portuguese) + BrazilianPortuguese Tag = Tag(compact.BrazilianPortuguese) + EuropeanPortuguese Tag = Tag(compact.EuropeanPortuguese) + Romanian Tag = Tag(compact.Romanian) + Russian Tag = Tag(compact.Russian) + Sinhala Tag = Tag(compact.Sinhala) + Slovak Tag = Tag(compact.Slovak) + Slovenian Tag = Tag(compact.Slovenian) + Albanian Tag = Tag(compact.Albanian) + Serbian Tag = Tag(compact.Serbian) + SerbianLatin Tag = Tag(compact.SerbianLatin) + Swedish Tag = Tag(compact.Swedish) + Swahili Tag = Tag(compact.Swahili) + Tamil Tag = Tag(compact.Tamil) + Telugu Tag = Tag(compact.Telugu) + Thai Tag = Tag(compact.Thai) + Turkish Tag = Tag(compact.Turkish) + Ukrainian Tag = Tag(compact.Ukrainian) + Urdu Tag = Tag(compact.Urdu) + Uzbek Tag = Tag(compact.Uzbek) + Vietnamese Tag = Tag(compact.Vietnamese) + Chinese Tag = Tag(compact.Chinese) + SimplifiedChinese Tag = Tag(compact.SimplifiedChinese) + TraditionalChinese Tag = Tag(compact.TraditionalChinese) + Zulu Tag = Tag(compact.Zulu) +) diff --git a/tests/vendor/golang.org/x/text/runes/cond.go b/tests/vendor/golang.org/x/text/runes/cond.go new file mode 100644 index 000000000..df7aa02db --- /dev/null +++ b/tests/vendor/golang.org/x/text/runes/cond.go @@ -0,0 +1,187 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package runes + +import ( + "unicode/utf8" + + "golang.org/x/text/transform" +) + +// Note: below we pass invalid UTF-8 to the tIn and tNotIn transformers as is. +// This is done for various reasons: +// - To retain the semantics of the Nop transformer: if input is passed to a Nop +// one would expect it to be unchanged. +// - It would be very expensive to pass a converted RuneError to a transformer: +// a transformer might need more source bytes after RuneError, meaning that +// the only way to pass it safely is to create a new buffer and manage the +// intermingling of RuneErrors and normal input. +// - Many transformers leave ill-formed UTF-8 as is, so this is not +// inconsistent. Generally ill-formed UTF-8 is only replaced if it is a +// logical consequence of the operation (as for Map) or if it otherwise would +// pose security concerns (as for Remove). +// - An alternative would be to return an error on ill-formed UTF-8, but this +// would be inconsistent with other operations. + +// If returns a transformer that applies tIn to consecutive runes for which +// s.Contains(r) and tNotIn to consecutive runes for which !s.Contains(r). Reset +// is called on tIn and tNotIn at the start of each run. A Nop transformer will +// substitute a nil value passed to tIn or tNotIn. Invalid UTF-8 is translated +// to RuneError to determine which transformer to apply, but is passed as is to +// the respective transformer. +func If(s Set, tIn, tNotIn transform.Transformer) Transformer { + if tIn == nil && tNotIn == nil { + return Transformer{transform.Nop} + } + if tIn == nil { + tIn = transform.Nop + } + if tNotIn == nil { + tNotIn = transform.Nop + } + sIn, ok := tIn.(transform.SpanningTransformer) + if !ok { + sIn = dummySpan{tIn} + } + sNotIn, ok := tNotIn.(transform.SpanningTransformer) + if !ok { + sNotIn = dummySpan{tNotIn} + } + + a := &cond{ + tIn: sIn, + tNotIn: sNotIn, + f: s.Contains, + } + a.Reset() + return Transformer{a} +} + +type dummySpan struct{ transform.Transformer } + +func (d dummySpan) Span(src []byte, atEOF bool) (n int, err error) { + return 0, transform.ErrEndOfSpan +} + +type cond struct { + tIn, tNotIn transform.SpanningTransformer + f func(rune) bool + check func(rune) bool // current check to perform + t transform.SpanningTransformer // current transformer to use +} + +// Reset implements transform.Transformer. +func (t *cond) Reset() { + t.check = t.is + t.t = t.tIn + t.t.Reset() // notIn will be reset on first usage. +} + +func (t *cond) is(r rune) bool { + if t.f(r) { + return true + } + t.check = t.isNot + t.t = t.tNotIn + t.tNotIn.Reset() + return false +} + +func (t *cond) isNot(r rune) bool { + if !t.f(r) { + return true + } + t.check = t.is + t.t = t.tIn + t.tIn.Reset() + return false +} + +// This implementation of Span doesn't help all too much, but it needs to be +// there to satisfy this package's Transformer interface. +// TODO: there are certainly room for improvements, though. For example, if +// t.t == transform.Nop (which will a common occurrence) it will save a bundle +// to special-case that loop. +func (t *cond) Span(src []byte, atEOF bool) (n int, err error) { + p := 0 + for n < len(src) && err == nil { + // Don't process too much at a time as the Spanner that will be + // called on this block may terminate early. + const maxChunk = 4096 + max := len(src) + if v := n + maxChunk; v < max { + max = v + } + atEnd := false + size := 0 + current := t.t + for ; p < max; p += size { + r := rune(src[p]) + if r < utf8.RuneSelf { + size = 1 + } else if r, size = utf8.DecodeRune(src[p:]); size == 1 { + if !atEOF && !utf8.FullRune(src[p:]) { + err = transform.ErrShortSrc + break + } + } + if !t.check(r) { + // The next rune will be the start of a new run. + atEnd = true + break + } + } + n2, err2 := current.Span(src[n:p], atEnd || (atEOF && p == len(src))) + n += n2 + if err2 != nil { + return n, err2 + } + // At this point either err != nil or t.check will pass for the rune at p. + p = n + size + } + return n, err +} + +func (t *cond) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + p := 0 + for nSrc < len(src) && err == nil { + // Don't process too much at a time, as the work might be wasted if the + // destination buffer isn't large enough to hold the result or a + // transform returns an error early. + const maxChunk = 4096 + max := len(src) + if n := nSrc + maxChunk; n < len(src) { + max = n + } + atEnd := false + size := 0 + current := t.t + for ; p < max; p += size { + r := rune(src[p]) + if r < utf8.RuneSelf { + size = 1 + } else if r, size = utf8.DecodeRune(src[p:]); size == 1 { + if !atEOF && !utf8.FullRune(src[p:]) { + err = transform.ErrShortSrc + break + } + } + if !t.check(r) { + // The next rune will be the start of a new run. + atEnd = true + break + } + } + nDst2, nSrc2, err2 := current.Transform(dst[nDst:], src[nSrc:p], atEnd || (atEOF && p == len(src))) + nDst += nDst2 + nSrc += nSrc2 + if err2 != nil { + return nDst, nSrc, err2 + } + // At this point either err != nil or t.check will pass for the rune at p. + p = nSrc + size + } + return nDst, nSrc, err +} diff --git a/tests/vendor/golang.org/x/text/runes/runes.go b/tests/vendor/golang.org/x/text/runes/runes.go new file mode 100644 index 000000000..930e87fed --- /dev/null +++ b/tests/vendor/golang.org/x/text/runes/runes.go @@ -0,0 +1,355 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package runes provide transforms for UTF-8 encoded text. +package runes // import "golang.org/x/text/runes" + +import ( + "unicode" + "unicode/utf8" + + "golang.org/x/text/transform" +) + +// A Set is a collection of runes. +type Set interface { + // Contains returns true if r is contained in the set. + Contains(r rune) bool +} + +type setFunc func(rune) bool + +func (s setFunc) Contains(r rune) bool { + return s(r) +} + +// Note: using funcs here instead of wrapping types result in cleaner +// documentation and a smaller API. + +// In creates a Set with a Contains method that returns true for all runes in +// the given RangeTable. +func In(rt *unicode.RangeTable) Set { + return setFunc(func(r rune) bool { return unicode.Is(rt, r) }) +} + +// NotIn creates a Set with a Contains method that returns true for all runes not +// in the given RangeTable. +func NotIn(rt *unicode.RangeTable) Set { + return setFunc(func(r rune) bool { return !unicode.Is(rt, r) }) +} + +// Predicate creates a Set with a Contains method that returns f(r). +func Predicate(f func(rune) bool) Set { + return setFunc(f) +} + +// Transformer implements the transform.Transformer interface. +type Transformer struct { + t transform.SpanningTransformer +} + +func (t Transformer) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + return t.t.Transform(dst, src, atEOF) +} + +func (t Transformer) Span(b []byte, atEOF bool) (n int, err error) { + return t.t.Span(b, atEOF) +} + +func (t Transformer) Reset() { t.t.Reset() } + +// Bytes returns a new byte slice with the result of converting b using t. It +// calls Reset on t. It returns nil if any error was found. This can only happen +// if an error-producing Transformer is passed to If. +func (t Transformer) Bytes(b []byte) []byte { + b, _, err := transform.Bytes(t, b) + if err != nil { + return nil + } + return b +} + +// String returns a string with the result of converting s using t. It calls +// Reset on t. It returns the empty string if any error was found. This can only +// happen if an error-producing Transformer is passed to If. +func (t Transformer) String(s string) string { + s, _, err := transform.String(t, s) + if err != nil { + return "" + } + return s +} + +// TODO: +// - Copy: copying strings and bytes in whole-rune units. +// - Validation (maybe) +// - Well-formed-ness (maybe) + +const runeErrorString = string(utf8.RuneError) + +// Remove returns a Transformer that removes runes r for which s.Contains(r). +// Illegal input bytes are replaced by RuneError before being passed to f. +func Remove(s Set) Transformer { + if f, ok := s.(setFunc); ok { + // This little trick cuts the running time of BenchmarkRemove for sets + // created by Predicate roughly in half. + // TODO: special-case RangeTables as well. + return Transformer{remove(f)} + } + return Transformer{remove(s.Contains)} +} + +// TODO: remove transform.RemoveFunc. + +type remove func(r rune) bool + +func (remove) Reset() {} + +// Span implements transform.Spanner. +func (t remove) Span(src []byte, atEOF bool) (n int, err error) { + for r, size := rune(0), 0; n < len(src); { + if r = rune(src[n]); r < utf8.RuneSelf { + size = 1 + } else if r, size = utf8.DecodeRune(src[n:]); size == 1 { + // Invalid rune. + if !atEOF && !utf8.FullRune(src[n:]) { + err = transform.ErrShortSrc + } else { + err = transform.ErrEndOfSpan + } + break + } + if t(r) { + err = transform.ErrEndOfSpan + break + } + n += size + } + return +} + +// Transform implements transform.Transformer. +func (t remove) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + for r, size := rune(0), 0; nSrc < len(src); { + if r = rune(src[nSrc]); r < utf8.RuneSelf { + size = 1 + } else if r, size = utf8.DecodeRune(src[nSrc:]); size == 1 { + // Invalid rune. + if !atEOF && !utf8.FullRune(src[nSrc:]) { + err = transform.ErrShortSrc + break + } + // We replace illegal bytes with RuneError. Not doing so might + // otherwise turn a sequence of invalid UTF-8 into valid UTF-8. + // The resulting byte sequence may subsequently contain runes + // for which t(r) is true that were passed unnoticed. + if !t(utf8.RuneError) { + if nDst+3 > len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst+0] = runeErrorString[0] + dst[nDst+1] = runeErrorString[1] + dst[nDst+2] = runeErrorString[2] + nDst += 3 + } + nSrc++ + continue + } + if t(r) { + nSrc += size + continue + } + if nDst+size > len(dst) { + err = transform.ErrShortDst + break + } + for i := 0; i < size; i++ { + dst[nDst] = src[nSrc] + nDst++ + nSrc++ + } + } + return +} + +// Map returns a Transformer that maps the runes in the input using the given +// mapping. Illegal bytes in the input are converted to utf8.RuneError before +// being passed to the mapping func. +func Map(mapping func(rune) rune) Transformer { + return Transformer{mapper(mapping)} +} + +type mapper func(rune) rune + +func (mapper) Reset() {} + +// Span implements transform.Spanner. +func (t mapper) Span(src []byte, atEOF bool) (n int, err error) { + for r, size := rune(0), 0; n < len(src); n += size { + if r = rune(src[n]); r < utf8.RuneSelf { + size = 1 + } else if r, size = utf8.DecodeRune(src[n:]); size == 1 { + // Invalid rune. + if !atEOF && !utf8.FullRune(src[n:]) { + err = transform.ErrShortSrc + } else { + err = transform.ErrEndOfSpan + } + break + } + if t(r) != r { + err = transform.ErrEndOfSpan + break + } + } + return n, err +} + +// Transform implements transform.Transformer. +func (t mapper) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + var replacement rune + var b [utf8.UTFMax]byte + + for r, size := rune(0), 0; nSrc < len(src); { + if r = rune(src[nSrc]); r < utf8.RuneSelf { + if replacement = t(r); replacement < utf8.RuneSelf { + if nDst == len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst] = byte(replacement) + nDst++ + nSrc++ + continue + } + size = 1 + } else if r, size = utf8.DecodeRune(src[nSrc:]); size == 1 { + // Invalid rune. + if !atEOF && !utf8.FullRune(src[nSrc:]) { + err = transform.ErrShortSrc + break + } + + if replacement = t(utf8.RuneError); replacement == utf8.RuneError { + if nDst+3 > len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst+0] = runeErrorString[0] + dst[nDst+1] = runeErrorString[1] + dst[nDst+2] = runeErrorString[2] + nDst += 3 + nSrc++ + continue + } + } else if replacement = t(r); replacement == r { + if nDst+size > len(dst) { + err = transform.ErrShortDst + break + } + for i := 0; i < size; i++ { + dst[nDst] = src[nSrc] + nDst++ + nSrc++ + } + continue + } + + n := utf8.EncodeRune(b[:], replacement) + + if nDst+n > len(dst) { + err = transform.ErrShortDst + break + } + for i := 0; i < n; i++ { + dst[nDst] = b[i] + nDst++ + } + nSrc += size + } + return +} + +// ReplaceIllFormed returns a transformer that replaces all input bytes that are +// not part of a well-formed UTF-8 code sequence with utf8.RuneError. +func ReplaceIllFormed() Transformer { + return Transformer{&replaceIllFormed{}} +} + +type replaceIllFormed struct{ transform.NopResetter } + +func (t replaceIllFormed) Span(src []byte, atEOF bool) (n int, err error) { + for n < len(src) { + // ASCII fast path. + if src[n] < utf8.RuneSelf { + n++ + continue + } + + r, size := utf8.DecodeRune(src[n:]) + + // Look for a valid non-ASCII rune. + if r != utf8.RuneError || size != 1 { + n += size + continue + } + + // Look for short source data. + if !atEOF && !utf8.FullRune(src[n:]) { + err = transform.ErrShortSrc + break + } + + // We have an invalid rune. + err = transform.ErrEndOfSpan + break + } + return n, err +} + +func (t replaceIllFormed) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + for nSrc < len(src) { + // ASCII fast path. + if r := src[nSrc]; r < utf8.RuneSelf { + if nDst == len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst] = r + nDst++ + nSrc++ + continue + } + + // Look for a valid non-ASCII rune. + if _, size := utf8.DecodeRune(src[nSrc:]); size != 1 { + if size != copy(dst[nDst:], src[nSrc:nSrc+size]) { + err = transform.ErrShortDst + break + } + nDst += size + nSrc += size + continue + } + + // Look for short source data. + if !atEOF && !utf8.FullRune(src[nSrc:]) { + err = transform.ErrShortSrc + break + } + + // We have an invalid rune. + if nDst+3 > len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst+0] = runeErrorString[0] + dst[nDst+1] = runeErrorString[1] + dst[nDst+2] = runeErrorString[2] + nDst += 3 + nSrc++ + } + return nDst, nSrc, err +} diff --git a/tests/vendor/golang.org/x/text/transform/transform.go b/tests/vendor/golang.org/x/text/transform/transform.go new file mode 100644 index 000000000..48ec64b40 --- /dev/null +++ b/tests/vendor/golang.org/x/text/transform/transform.go @@ -0,0 +1,709 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package transform provides reader and writer wrappers that transform the +// bytes passing through as well as various transformations. Example +// transformations provided by other packages include normalization and +// conversion between character sets. +package transform // import "golang.org/x/text/transform" + +import ( + "bytes" + "errors" + "io" + "unicode/utf8" +) + +var ( + // ErrShortDst means that the destination buffer was too short to + // receive all of the transformed bytes. + ErrShortDst = errors.New("transform: short destination buffer") + + // ErrShortSrc means that the source buffer has insufficient data to + // complete the transformation. + ErrShortSrc = errors.New("transform: short source buffer") + + // ErrEndOfSpan means that the input and output (the transformed input) + // are not identical. + ErrEndOfSpan = errors.New("transform: input and output are not identical") + + // errInconsistentByteCount means that Transform returned success (nil + // error) but also returned nSrc inconsistent with the src argument. + errInconsistentByteCount = errors.New("transform: inconsistent byte count returned") + + // errShortInternal means that an internal buffer is not large enough + // to make progress and the Transform operation must be aborted. + errShortInternal = errors.New("transform: short internal buffer") +) + +// Transformer transforms bytes. +type Transformer interface { + // Transform writes to dst the transformed bytes read from src, and + // returns the number of dst bytes written and src bytes read. The + // atEOF argument tells whether src represents the last bytes of the + // input. + // + // Callers should always process the nDst bytes produced and account + // for the nSrc bytes consumed before considering the error err. + // + // A nil error means that all of the transformed bytes (whether freshly + // transformed from src or left over from previous Transform calls) + // were written to dst. A nil error can be returned regardless of + // whether atEOF is true. If err is nil then nSrc must equal len(src); + // the converse is not necessarily true. + // + // ErrShortDst means that dst was too short to receive all of the + // transformed bytes. ErrShortSrc means that src had insufficient data + // to complete the transformation. If both conditions apply, then + // either error may be returned. Other than the error conditions listed + // here, implementations are free to report other errors that arise. + Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) + + // Reset resets the state and allows a Transformer to be reused. + Reset() +} + +// SpanningTransformer extends the Transformer interface with a Span method +// that determines how much of the input already conforms to the Transformer. +type SpanningTransformer interface { + Transformer + + // Span returns a position in src such that transforming src[:n] results in + // identical output src[:n] for these bytes. It does not necessarily return + // the largest such n. The atEOF argument tells whether src represents the + // last bytes of the input. + // + // Callers should always account for the n bytes consumed before + // considering the error err. + // + // A nil error means that all input bytes are known to be identical to the + // output produced by the Transformer. A nil error can be returned + // regardless of whether atEOF is true. If err is nil, then n must + // equal len(src); the converse is not necessarily true. + // + // ErrEndOfSpan means that the Transformer output may differ from the + // input after n bytes. Note that n may be len(src), meaning that the output + // would contain additional bytes after otherwise identical output. + // ErrShortSrc means that src had insufficient data to determine whether the + // remaining bytes would change. Other than the error conditions listed + // here, implementations are free to report other errors that arise. + // + // Calling Span can modify the Transformer state as a side effect. In + // effect, it does the transformation just as calling Transform would, only + // without copying to a destination buffer and only up to a point it can + // determine the input and output bytes are the same. This is obviously more + // limited than calling Transform, but can be more efficient in terms of + // copying and allocating buffers. Calls to Span and Transform may be + // interleaved. + Span(src []byte, atEOF bool) (n int, err error) +} + +// NopResetter can be embedded by implementations of Transformer to add a nop +// Reset method. +type NopResetter struct{} + +// Reset implements the Reset method of the Transformer interface. +func (NopResetter) Reset() {} + +// Reader wraps another io.Reader by transforming the bytes read. +type Reader struct { + r io.Reader + t Transformer + err error + + // dst[dst0:dst1] contains bytes that have been transformed by t but + // not yet copied out via Read. + dst []byte + dst0, dst1 int + + // src[src0:src1] contains bytes that have been read from r but not + // yet transformed through t. + src []byte + src0, src1 int + + // transformComplete is whether the transformation is complete, + // regardless of whether or not it was successful. + transformComplete bool +} + +const defaultBufSize = 4096 + +// NewReader returns a new Reader that wraps r by transforming the bytes read +// via t. It calls Reset on t. +func NewReader(r io.Reader, t Transformer) *Reader { + t.Reset() + return &Reader{ + r: r, + t: t, + dst: make([]byte, defaultBufSize), + src: make([]byte, defaultBufSize), + } +} + +// Read implements the io.Reader interface. +func (r *Reader) Read(p []byte) (int, error) { + n, err := 0, error(nil) + for { + // Copy out any transformed bytes and return the final error if we are done. + if r.dst0 != r.dst1 { + n = copy(p, r.dst[r.dst0:r.dst1]) + r.dst0 += n + if r.dst0 == r.dst1 && r.transformComplete { + return n, r.err + } + return n, nil + } else if r.transformComplete { + return 0, r.err + } + + // Try to transform some source bytes, or to flush the transformer if we + // are out of source bytes. We do this even if r.r.Read returned an error. + // As the io.Reader documentation says, "process the n > 0 bytes returned + // before considering the error". + if r.src0 != r.src1 || r.err != nil { + r.dst0 = 0 + r.dst1, n, err = r.t.Transform(r.dst, r.src[r.src0:r.src1], r.err == io.EOF) + r.src0 += n + + switch { + case err == nil: + if r.src0 != r.src1 { + r.err = errInconsistentByteCount + } + // The Transform call was successful; we are complete if we + // cannot read more bytes into src. + r.transformComplete = r.err != nil + continue + case err == ErrShortDst && (r.dst1 != 0 || n != 0): + // Make room in dst by copying out, and try again. + continue + case err == ErrShortSrc && r.src1-r.src0 != len(r.src) && r.err == nil: + // Read more bytes into src via the code below, and try again. + default: + r.transformComplete = true + // The reader error (r.err) takes precedence over the + // transformer error (err) unless r.err is nil or io.EOF. + if r.err == nil || r.err == io.EOF { + r.err = err + } + continue + } + } + + // Move any untransformed source bytes to the start of the buffer + // and read more bytes. + if r.src0 != 0 { + r.src0, r.src1 = 0, copy(r.src, r.src[r.src0:r.src1]) + } + n, r.err = r.r.Read(r.src[r.src1:]) + r.src1 += n + } +} + +// TODO: implement ReadByte (and ReadRune??). + +// Writer wraps another io.Writer by transforming the bytes read. +// The user needs to call Close to flush unwritten bytes that may +// be buffered. +type Writer struct { + w io.Writer + t Transformer + dst []byte + + // src[:n] contains bytes that have not yet passed through t. + src []byte + n int +} + +// NewWriter returns a new Writer that wraps w by transforming the bytes written +// via t. It calls Reset on t. +func NewWriter(w io.Writer, t Transformer) *Writer { + t.Reset() + return &Writer{ + w: w, + t: t, + dst: make([]byte, defaultBufSize), + src: make([]byte, defaultBufSize), + } +} + +// Write implements the io.Writer interface. If there are not enough +// bytes available to complete a Transform, the bytes will be buffered +// for the next write. Call Close to convert the remaining bytes. +func (w *Writer) Write(data []byte) (n int, err error) { + src := data + if w.n > 0 { + // Append bytes from data to the last remainder. + // TODO: limit the amount copied on first try. + n = copy(w.src[w.n:], data) + w.n += n + src = w.src[:w.n] + } + for { + nDst, nSrc, err := w.t.Transform(w.dst, src, false) + if _, werr := w.w.Write(w.dst[:nDst]); werr != nil { + return n, werr + } + src = src[nSrc:] + if w.n == 0 { + n += nSrc + } else if len(src) <= n { + // Enough bytes from w.src have been consumed. We make src point + // to data instead to reduce the copying. + w.n = 0 + n -= len(src) + src = data[n:] + if n < len(data) && (err == nil || err == ErrShortSrc) { + continue + } + } + switch err { + case ErrShortDst: + // This error is okay as long as we are making progress. + if nDst > 0 || nSrc > 0 { + continue + } + case ErrShortSrc: + if len(src) < len(w.src) { + m := copy(w.src, src) + // If w.n > 0, bytes from data were already copied to w.src and n + // was already set to the number of bytes consumed. + if w.n == 0 { + n += m + } + w.n = m + err = nil + } else if nDst > 0 || nSrc > 0 { + // Not enough buffer to store the remainder. Keep processing as + // long as there is progress. Without this case, transforms that + // require a lookahead larger than the buffer may result in an + // error. This is not something one may expect to be common in + // practice, but it may occur when buffers are set to small + // sizes during testing. + continue + } + case nil: + if w.n > 0 { + err = errInconsistentByteCount + } + } + return n, err + } +} + +// Close implements the io.Closer interface. +func (w *Writer) Close() error { + src := w.src[:w.n] + for { + nDst, nSrc, err := w.t.Transform(w.dst, src, true) + if _, werr := w.w.Write(w.dst[:nDst]); werr != nil { + return werr + } + if err != ErrShortDst { + return err + } + src = src[nSrc:] + } +} + +type nop struct{ NopResetter } + +func (nop) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + n := copy(dst, src) + if n < len(src) { + err = ErrShortDst + } + return n, n, err +} + +func (nop) Span(src []byte, atEOF bool) (n int, err error) { + return len(src), nil +} + +type discard struct{ NopResetter } + +func (discard) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + return 0, len(src), nil +} + +var ( + // Discard is a Transformer for which all Transform calls succeed + // by consuming all bytes and writing nothing. + Discard Transformer = discard{} + + // Nop is a SpanningTransformer that copies src to dst. + Nop SpanningTransformer = nop{} +) + +// chain is a sequence of links. A chain with N Transformers has N+1 links and +// N+1 buffers. Of those N+1 buffers, the first and last are the src and dst +// buffers given to chain.Transform and the middle N-1 buffers are intermediate +// buffers owned by the chain. The i'th link transforms bytes from the i'th +// buffer chain.link[i].b at read offset chain.link[i].p to the i+1'th buffer +// chain.link[i+1].b at write offset chain.link[i+1].n, for i in [0, N). +type chain struct { + link []link + err error + // errStart is the index at which the error occurred plus 1. Processing + // errStart at this level at the next call to Transform. As long as + // errStart > 0, chain will not consume any more source bytes. + errStart int +} + +func (c *chain) fatalError(errIndex int, err error) { + if i := errIndex + 1; i > c.errStart { + c.errStart = i + c.err = err + } +} + +type link struct { + t Transformer + // b[p:n] holds the bytes to be transformed by t. + b []byte + p int + n int +} + +func (l *link) src() []byte { + return l.b[l.p:l.n] +} + +func (l *link) dst() []byte { + return l.b[l.n:] +} + +// Chain returns a Transformer that applies t in sequence. +func Chain(t ...Transformer) Transformer { + if len(t) == 0 { + return nop{} + } + c := &chain{link: make([]link, len(t)+1)} + for i, tt := range t { + c.link[i].t = tt + } + // Allocate intermediate buffers. + b := make([][defaultBufSize]byte, len(t)-1) + for i := range b { + c.link[i+1].b = b[i][:] + } + return c +} + +// Reset resets the state of Chain. It calls Reset on all the Transformers. +func (c *chain) Reset() { + for i, l := range c.link { + if l.t != nil { + l.t.Reset() + } + c.link[i].p, c.link[i].n = 0, 0 + } +} + +// TODO: make chain use Span (is going to be fun to implement!) + +// Transform applies the transformers of c in sequence. +func (c *chain) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + // Set up src and dst in the chain. + srcL := &c.link[0] + dstL := &c.link[len(c.link)-1] + srcL.b, srcL.p, srcL.n = src, 0, len(src) + dstL.b, dstL.n = dst, 0 + var lastFull, needProgress bool // for detecting progress + + // i is the index of the next Transformer to apply, for i in [low, high]. + // low is the lowest index for which c.link[low] may still produce bytes. + // high is the highest index for which c.link[high] has a Transformer. + // The error returned by Transform determines whether to increase or + // decrease i. We try to completely fill a buffer before converting it. + for low, i, high := c.errStart, c.errStart, len(c.link)-2; low <= i && i <= high; { + in, out := &c.link[i], &c.link[i+1] + nDst, nSrc, err0 := in.t.Transform(out.dst(), in.src(), atEOF && low == i) + out.n += nDst + in.p += nSrc + if i > 0 && in.p == in.n { + in.p, in.n = 0, 0 + } + needProgress, lastFull = lastFull, false + switch err0 { + case ErrShortDst: + // Process the destination buffer next. Return if we are already + // at the high index. + if i == high { + return dstL.n, srcL.p, ErrShortDst + } + if out.n != 0 { + i++ + // If the Transformer at the next index is not able to process any + // source bytes there is nothing that can be done to make progress + // and the bytes will remain unprocessed. lastFull is used to + // detect this and break out of the loop with a fatal error. + lastFull = true + continue + } + // The destination buffer was too small, but is completely empty. + // Return a fatal error as this transformation can never complete. + c.fatalError(i, errShortInternal) + case ErrShortSrc: + if i == 0 { + // Save ErrShortSrc in err. All other errors take precedence. + err = ErrShortSrc + break + } + // Source bytes were depleted before filling up the destination buffer. + // Verify we made some progress, move the remaining bytes to the errStart + // and try to get more source bytes. + if needProgress && nSrc == 0 || in.n-in.p == len(in.b) { + // There were not enough source bytes to proceed while the source + // buffer cannot hold any more bytes. Return a fatal error as this + // transformation can never complete. + c.fatalError(i, errShortInternal) + break + } + // in.b is an internal buffer and we can make progress. + in.p, in.n = 0, copy(in.b, in.src()) + fallthrough + case nil: + // if i == low, we have depleted the bytes at index i or any lower levels. + // In that case we increase low and i. In all other cases we decrease i to + // fetch more bytes before proceeding to the next index. + if i > low { + i-- + continue + } + default: + c.fatalError(i, err0) + } + // Exhausted level low or fatal error: increase low and continue + // to process the bytes accepted so far. + i++ + low = i + } + + // If c.errStart > 0, this means we found a fatal error. We will clear + // all upstream buffers. At this point, no more progress can be made + // downstream, as Transform would have bailed while handling ErrShortDst. + if c.errStart > 0 { + for i := 1; i < c.errStart; i++ { + c.link[i].p, c.link[i].n = 0, 0 + } + err, c.errStart, c.err = c.err, 0, nil + } + return dstL.n, srcL.p, err +} + +// Deprecated: Use runes.Remove instead. +func RemoveFunc(f func(r rune) bool) Transformer { + return removeF(f) +} + +type removeF func(r rune) bool + +func (removeF) Reset() {} + +// Transform implements the Transformer interface. +func (t removeF) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + for r, sz := rune(0), 0; len(src) > 0; src = src[sz:] { + + if r = rune(src[0]); r < utf8.RuneSelf { + sz = 1 + } else { + r, sz = utf8.DecodeRune(src) + + if sz == 1 { + // Invalid rune. + if !atEOF && !utf8.FullRune(src) { + err = ErrShortSrc + break + } + // We replace illegal bytes with RuneError. Not doing so might + // otherwise turn a sequence of invalid UTF-8 into valid UTF-8. + // The resulting byte sequence may subsequently contain runes + // for which t(r) is true that were passed unnoticed. + if !t(r) { + if nDst+3 > len(dst) { + err = ErrShortDst + break + } + nDst += copy(dst[nDst:], "\uFFFD") + } + nSrc++ + continue + } + } + + if !t(r) { + if nDst+sz > len(dst) { + err = ErrShortDst + break + } + nDst += copy(dst[nDst:], src[:sz]) + } + nSrc += sz + } + return +} + +// grow returns a new []byte that is longer than b, and copies the first n bytes +// of b to the start of the new slice. +func grow(b []byte, n int) []byte { + m := len(b) + if m <= 32 { + m = 64 + } else if m <= 256 { + m *= 2 + } else { + m += m >> 1 + } + buf := make([]byte, m) + copy(buf, b[:n]) + return buf +} + +const initialBufSize = 128 + +// String returns a string with the result of converting s[:n] using t, where +// n <= len(s). If err == nil, n will be len(s). It calls Reset on t. +func String(t Transformer, s string) (result string, n int, err error) { + t.Reset() + if s == "" { + // Fast path for the common case for empty input. Results in about a + // 86% reduction of running time for BenchmarkStringLowerEmpty. + if _, _, err := t.Transform(nil, nil, true); err == nil { + return "", 0, nil + } + } + + // Allocate only once. Note that both dst and src escape when passed to + // Transform. + buf := [2 * initialBufSize]byte{} + dst := buf[:initialBufSize:initialBufSize] + src := buf[initialBufSize : 2*initialBufSize] + + // The input string s is transformed in multiple chunks (starting with a + // chunk size of initialBufSize). nDst and nSrc are per-chunk (or + // per-Transform-call) indexes, pDst and pSrc are overall indexes. + nDst, nSrc := 0, 0 + pDst, pSrc := 0, 0 + + // pPrefix is the length of a common prefix: the first pPrefix bytes of the + // result will equal the first pPrefix bytes of s. It is not guaranteed to + // be the largest such value, but if pPrefix, len(result) and len(s) are + // all equal after the final transform (i.e. calling Transform with atEOF + // being true returned nil error) then we don't need to allocate a new + // result string. + pPrefix := 0 + for { + // Invariant: pDst == pPrefix && pSrc == pPrefix. + + n := copy(src, s[pSrc:]) + nDst, nSrc, err = t.Transform(dst, src[:n], pSrc+n == len(s)) + pDst += nDst + pSrc += nSrc + + // TODO: let transformers implement an optional Spanner interface, akin + // to norm's QuickSpan. This would even allow us to avoid any allocation. + if !bytes.Equal(dst[:nDst], src[:nSrc]) { + break + } + pPrefix = pSrc + if err == ErrShortDst { + // A buffer can only be short if a transformer modifies its input. + break + } else if err == ErrShortSrc { + if nSrc == 0 { + // No progress was made. + break + } + // Equal so far and !atEOF, so continue checking. + } else if err != nil || pPrefix == len(s) { + return string(s[:pPrefix]), pPrefix, err + } + } + // Post-condition: pDst == pPrefix + nDst && pSrc == pPrefix + nSrc. + + // We have transformed the first pSrc bytes of the input s to become pDst + // transformed bytes. Those transformed bytes are discontiguous: the first + // pPrefix of them equal s[:pPrefix] and the last nDst of them equal + // dst[:nDst]. We copy them around, into a new dst buffer if necessary, so + // that they become one contiguous slice: dst[:pDst]. + if pPrefix != 0 { + newDst := dst + if pDst > len(newDst) { + newDst = make([]byte, len(s)+nDst-nSrc) + } + copy(newDst[pPrefix:pDst], dst[:nDst]) + copy(newDst[:pPrefix], s[:pPrefix]) + dst = newDst + } + + // Prevent duplicate Transform calls with atEOF being true at the end of + // the input. Also return if we have an unrecoverable error. + if (err == nil && pSrc == len(s)) || + (err != nil && err != ErrShortDst && err != ErrShortSrc) { + return string(dst[:pDst]), pSrc, err + } + + // Transform the remaining input, growing dst and src buffers as necessary. + for { + n := copy(src, s[pSrc:]) + atEOF := pSrc+n == len(s) + nDst, nSrc, err := t.Transform(dst[pDst:], src[:n], atEOF) + pDst += nDst + pSrc += nSrc + + // If we got ErrShortDst or ErrShortSrc, do not grow as long as we can + // make progress. This may avoid excessive allocations. + if err == ErrShortDst { + if nDst == 0 { + dst = grow(dst, pDst) + } + } else if err == ErrShortSrc { + if atEOF { + return string(dst[:pDst]), pSrc, err + } + if nSrc == 0 { + src = grow(src, 0) + } + } else if err != nil || pSrc == len(s) { + return string(dst[:pDst]), pSrc, err + } + } +} + +// Bytes returns a new byte slice with the result of converting b[:n] using t, +// where n <= len(b). If err == nil, n will be len(b). It calls Reset on t. +func Bytes(t Transformer, b []byte) (result []byte, n int, err error) { + return doAppend(t, 0, make([]byte, len(b)), b) +} + +// Append appends the result of converting src[:n] using t to dst, where +// n <= len(src), If err == nil, n will be len(src). It calls Reset on t. +func Append(t Transformer, dst, src []byte) (result []byte, n int, err error) { + if len(dst) == cap(dst) { + n := len(src) + len(dst) // It is okay for this to be 0. + b := make([]byte, n) + dst = b[:copy(b, dst)] + } + return doAppend(t, len(dst), dst[:cap(dst)], src) +} + +func doAppend(t Transformer, pDst int, dst, src []byte) (result []byte, n int, err error) { + t.Reset() + pSrc := 0 + for { + nDst, nSrc, err := t.Transform(dst[pDst:], src[pSrc:], true) + pDst += nDst + pSrc += nSrc + if err != ErrShortDst { + return dst[:pDst], pSrc, err + } + + // Grow the destination buffer, but do not grow as long as we can make + // progress. This may avoid excessive allocations. + if nDst == 0 { + dst = grow(dst, pDst) + } + } +} diff --git a/tests/vendor/golang.org/x/tools/LICENSE b/tests/vendor/golang.org/x/tools/LICENSE new file mode 100644 index 000000000..2a7cf70da --- /dev/null +++ b/tests/vendor/golang.org/x/tools/LICENSE @@ -0,0 +1,27 @@ +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/tests/vendor/golang.org/x/tools/PATENTS b/tests/vendor/golang.org/x/tools/PATENTS new file mode 100644 index 000000000..733099041 --- /dev/null +++ b/tests/vendor/golang.org/x/tools/PATENTS @@ -0,0 +1,22 @@ +Additional IP Rights Grant (Patents) + +"This implementation" means the copyrightable works distributed by +Google as part of the Go project. + +Google hereby grants to You a perpetual, worldwide, non-exclusive, +no-charge, royalty-free, irrevocable (except as stated in this section) +patent license to make, have made, use, offer to sell, sell, import, +transfer and otherwise run, modify and propagate the contents of this +implementation of Go, where such license applies only to those patent +claims, both currently owned or controlled by Google and acquired in +the future, licensable by Google that are necessarily infringed by this +implementation of Go. This grant does not include claims that would be +infringed only as a consequence of further modification of this +implementation. If you or your agent or exclusive licensee institute or +order or agree to the institution of patent litigation against any +entity (including a cross-claim or counterclaim in a lawsuit) alleging +that this implementation of Go or any code incorporated within this +implementation of Go constitutes direct or contributory patent +infringement, or inducement of patent infringement, then any patent +rights granted to you under this License for this implementation of Go +shall terminate as of the date such litigation is filed. diff --git a/tests/vendor/golang.org/x/tools/cover/profile.go b/tests/vendor/golang.org/x/tools/cover/profile.go new file mode 100644 index 000000000..47a9a5411 --- /dev/null +++ b/tests/vendor/golang.org/x/tools/cover/profile.go @@ -0,0 +1,266 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package cover provides support for parsing coverage profiles +// generated by "go test -coverprofile=cover.out". +package cover // import "golang.org/x/tools/cover" + +import ( + "bufio" + "errors" + "fmt" + "io" + "math" + "os" + "sort" + "strconv" + "strings" +) + +// Profile represents the profiling data for a specific file. +type Profile struct { + FileName string + Mode string + Blocks []ProfileBlock +} + +// ProfileBlock represents a single block of profiling data. +type ProfileBlock struct { + StartLine, StartCol int + EndLine, EndCol int + NumStmt, Count int +} + +type byFileName []*Profile + +func (p byFileName) Len() int { return len(p) } +func (p byFileName) Less(i, j int) bool { return p[i].FileName < p[j].FileName } +func (p byFileName) Swap(i, j int) { p[i], p[j] = p[j], p[i] } + +// ParseProfiles parses profile data in the specified file and returns a +// Profile for each source file described therein. +func ParseProfiles(fileName string) ([]*Profile, error) { + pf, err := os.Open(fileName) + if err != nil { + return nil, err + } + defer pf.Close() + return ParseProfilesFromReader(pf) +} + +// ParseProfilesFromReader parses profile data from the Reader and +// returns a Profile for each source file described therein. +func ParseProfilesFromReader(rd io.Reader) ([]*Profile, error) { + // First line is "mode: foo", where foo is "set", "count", or "atomic". + // Rest of file is in the format + // encoding/base64/base64.go:34.44,37.40 3 1 + // where the fields are: name.go:line.column,line.column numberOfStatements count + files := make(map[string]*Profile) + s := bufio.NewScanner(rd) + mode := "" + for s.Scan() { + line := s.Text() + if mode == "" { + const p = "mode: " + if !strings.HasPrefix(line, p) || line == p { + return nil, fmt.Errorf("bad mode line: %v", line) + } + mode = line[len(p):] + continue + } + fn, b, err := parseLine(line) + if err != nil { + return nil, fmt.Errorf("line %q doesn't match expected format: %v", line, err) + } + p := files[fn] + if p == nil { + p = &Profile{ + FileName: fn, + Mode: mode, + } + files[fn] = p + } + p.Blocks = append(p.Blocks, b) + } + if err := s.Err(); err != nil { + return nil, err + } + for _, p := range files { + sort.Sort(blocksByStart(p.Blocks)) + // Merge samples from the same location. + j := 1 + for i := 1; i < len(p.Blocks); i++ { + b := p.Blocks[i] + last := p.Blocks[j-1] + if b.StartLine == last.StartLine && + b.StartCol == last.StartCol && + b.EndLine == last.EndLine && + b.EndCol == last.EndCol { + if b.NumStmt != last.NumStmt { + return nil, fmt.Errorf("inconsistent NumStmt: changed from %d to %d", last.NumStmt, b.NumStmt) + } + if mode == "set" { + p.Blocks[j-1].Count |= b.Count + } else { + p.Blocks[j-1].Count += b.Count + } + continue + } + p.Blocks[j] = b + j++ + } + p.Blocks = p.Blocks[:j] + } + // Generate a sorted slice. + profiles := make([]*Profile, 0, len(files)) + for _, profile := range files { + profiles = append(profiles, profile) + } + sort.Sort(byFileName(profiles)) + return profiles, nil +} + +// parseLine parses a line from a coverage file. +// It is equivalent to the regex +// ^(.+):([0-9]+)\.([0-9]+),([0-9]+)\.([0-9]+) ([0-9]+) ([0-9]+)$ +// +// However, it is much faster: https://golang.org/cl/179377 +func parseLine(l string) (fileName string, block ProfileBlock, err error) { + end := len(l) + + b := ProfileBlock{} + b.Count, end, err = seekBack(l, ' ', end, "Count") + if err != nil { + return "", b, err + } + b.NumStmt, end, err = seekBack(l, ' ', end, "NumStmt") + if err != nil { + return "", b, err + } + b.EndCol, end, err = seekBack(l, '.', end, "EndCol") + if err != nil { + return "", b, err + } + b.EndLine, end, err = seekBack(l, ',', end, "EndLine") + if err != nil { + return "", b, err + } + b.StartCol, end, err = seekBack(l, '.', end, "StartCol") + if err != nil { + return "", b, err + } + b.StartLine, end, err = seekBack(l, ':', end, "StartLine") + if err != nil { + return "", b, err + } + fn := l[0:end] + if fn == "" { + return "", b, errors.New("a FileName cannot be blank") + } + return fn, b, nil +} + +// seekBack searches backwards from end to find sep in l, then returns the +// value between sep and end as an integer. +// If seekBack fails, the returned error will reference what. +func seekBack(l string, sep byte, end int, what string) (value int, nextSep int, err error) { + // Since we're seeking backwards and we know only ASCII is legal for these values, + // we can ignore the possibility of non-ASCII characters. + for start := end - 1; start >= 0; start-- { + if l[start] == sep { + i, err := strconv.Atoi(l[start+1 : end]) + if err != nil { + return 0, 0, fmt.Errorf("couldn't parse %q: %v", what, err) + } + if i < 0 { + return 0, 0, fmt.Errorf("negative values are not allowed for %s, found %d", what, i) + } + return i, start, nil + } + } + return 0, 0, fmt.Errorf("couldn't find a %s before %s", string(sep), what) +} + +type blocksByStart []ProfileBlock + +func (b blocksByStart) Len() int { return len(b) } +func (b blocksByStart) Swap(i, j int) { b[i], b[j] = b[j], b[i] } +func (b blocksByStart) Less(i, j int) bool { + bi, bj := b[i], b[j] + return bi.StartLine < bj.StartLine || bi.StartLine == bj.StartLine && bi.StartCol < bj.StartCol +} + +// Boundary represents the position in a source file of the beginning or end of a +// block as reported by the coverage profile. In HTML mode, it will correspond to +// the opening or closing of a <span> tag and will be used to colorize the source +type Boundary struct { + Offset int // Location as a byte offset in the source file. + Start bool // Is this the start of a block? + Count int // Event count from the cover profile. + Norm float64 // Count normalized to [0..1]. + Index int // Order in input file. +} + +// Boundaries returns a Profile as a set of Boundary objects within the provided src. +func (p *Profile) Boundaries(src []byte) (boundaries []Boundary) { + // Find maximum count. + max := 0 + for _, b := range p.Blocks { + if b.Count > max { + max = b.Count + } + } + // Divisor for normalization. + divisor := math.Log(float64(max)) + + // boundary returns a Boundary, populating the Norm field with a normalized Count. + index := 0 + boundary := func(offset int, start bool, count int) Boundary { + b := Boundary{Offset: offset, Start: start, Count: count, Index: index} + index++ + if !start || count == 0 { + return b + } + if max <= 1 { + b.Norm = 0.8 // Profile is in"set" mode; we want a heat map. Use cov8 in the CSS. + } else if count > 0 { + b.Norm = math.Log(float64(count)) / divisor + } + return b + } + + line, col := 1, 2 // TODO: Why is this 2? + for si, bi := 0, 0; si < len(src) && bi < len(p.Blocks); { + b := p.Blocks[bi] + if b.StartLine == line && b.StartCol == col { + boundaries = append(boundaries, boundary(si, true, b.Count)) + } + if b.EndLine == line && b.EndCol == col || line > b.EndLine { + boundaries = append(boundaries, boundary(si, false, 0)) + bi++ + continue // Don't advance through src; maybe the next block starts here. + } + if src[si] == '\n' { + line++ + col = 0 + } + col++ + si++ + } + sort.Sort(boundariesByPos(boundaries)) + return +} + +type boundariesByPos []Boundary + +func (b boundariesByPos) Len() int { return len(b) } +func (b boundariesByPos) Swap(i, j int) { b[i], b[j] = b[j], b[i] } +func (b boundariesByPos) Less(i, j int) bool { + if b[i].Offset == b[j].Offset { + // Boundaries at the same offset should be ordered according to + // their original position. + return b[i].Index < b[j].Index + } + return b[i].Offset < b[j].Offset +} diff --git a/tests/vendor/golang.org/x/tools/go/ast/inspector/inspector.go b/tests/vendor/golang.org/x/tools/go/ast/inspector/inspector.go new file mode 100644 index 000000000..674490a65 --- /dev/null +++ b/tests/vendor/golang.org/x/tools/go/ast/inspector/inspector.go @@ -0,0 +1,286 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package inspector provides helper functions for traversal over the +// syntax trees of a package, including node filtering by type, and +// materialization of the traversal stack. +// +// During construction, the inspector does a complete traversal and +// builds a list of push/pop events and their node type. Subsequent +// method calls that request a traversal scan this list, rather than walk +// the AST, and perform type filtering using efficient bit sets. +// This representation is sometimes called a "balanced parenthesis tree." +// +// Experiments suggest the inspector's traversals are about 2.5x faster +// than ast.Inspect, but it may take around 5 traversals for this +// benefit to amortize the inspector's construction cost. +// If efficiency is the primary concern, do not use Inspector for +// one-off traversals. +package inspector + +// There are four orthogonal features in a traversal: +// 1 type filtering +// 2 pruning +// 3 postorder calls to f +// 4 stack +// Rather than offer all of them in the API, +// only a few combinations are exposed: +// - Preorder is the fastest and has fewest features, +// but is the most commonly needed traversal. +// - Nodes and WithStack both provide pruning and postorder calls, +// even though few clients need it, because supporting two versions +// is not justified. +// More combinations could be supported by expressing them as +// wrappers around a more generic traversal, but this was measured +// and found to degrade performance significantly (30%). + +import ( + "go/ast" + _ "unsafe" + + "golang.org/x/tools/internal/astutil/edge" +) + +// An Inspector provides methods for inspecting +// (traversing) the syntax trees of a package. +type Inspector struct { + events []event +} + +//go:linkname events golang.org/x/tools/go/ast/inspector.events +func events(in *Inspector) []event { return in.events } + +//go:linkname packEdgeKindAndIndex golang.org/x/tools/go/ast/inspector.packEdgeKindAndIndex +func packEdgeKindAndIndex(ek edge.Kind, index int) int32 { + return int32(uint32(index+1)<<7 | uint32(ek)) +} + +// unpackEdgeKindAndIndex unpacks the edge kind and edge index (within +// an []ast.Node slice) from the parent field of a pop event. +// +//go:linkname unpackEdgeKindAndIndex golang.org/x/tools/go/ast/inspector.unpackEdgeKindAndIndex +func unpackEdgeKindAndIndex(x int32) (edge.Kind, int) { + // The "parent" field of a pop node holds the + // edge Kind in the lower 7 bits and the index+1 + // in the upper 25. + return edge.Kind(x & 0x7f), int(x>>7) - 1 +} + +// New returns an Inspector for the specified syntax trees. +func New(files []*ast.File) *Inspector { + return &Inspector{traverse(files)} +} + +// An event represents a push or a pop +// of an ast.Node during a traversal. +type event struct { + node ast.Node + typ uint64 // typeOf(node) on push event, or union of typ strictly between push and pop events on pop events + index int32 // index of corresponding push or pop event + parent int32 // index of parent's push node (push nodes only), or packed edge kind/index (pop nodes only) +} + +// TODO: Experiment with storing only the second word of event.node (unsafe.Pointer). +// Type can be recovered from the sole bit in typ. + +// Preorder visits all the nodes of the files supplied to New in +// depth-first order. It calls f(n) for each node n before it visits +// n's children. +// +// The complete traversal sequence is determined by ast.Inspect. +// The types argument, if non-empty, enables type-based filtering of +// events. The function f is called only for nodes whose type +// matches an element of the types slice. +func (in *Inspector) Preorder(types []ast.Node, f func(ast.Node)) { + // Because it avoids postorder calls to f, and the pruning + // check, Preorder is almost twice as fast as Nodes. The two + // features seem to contribute similar slowdowns (~1.4x each). + + // This function is equivalent to the PreorderSeq call below, + // but to avoid the additional dynamic call (which adds 13-35% + // to the benchmarks), we expand it out. + // + // in.PreorderSeq(types...)(func(n ast.Node) bool { + // f(n) + // return true + // }) + + mask := maskOf(types) + for i := int32(0); i < int32(len(in.events)); { + ev := in.events[i] + if ev.index > i { + // push + if ev.typ&mask != 0 { + f(ev.node) + } + pop := ev.index + if in.events[pop].typ&mask == 0 { + // Subtrees do not contain types: skip them and pop. + i = pop + 1 + continue + } + } + i++ + } +} + +// Nodes visits the nodes of the files supplied to New in depth-first +// order. It calls f(n, true) for each node n before it visits n's +// children. If f returns true, Nodes invokes f recursively for each +// of the non-nil children of the node, followed by a call of +// f(n, false). +// +// The complete traversal sequence is determined by ast.Inspect. +// The types argument, if non-empty, enables type-based filtering of +// events. The function f if is called only for nodes whose type +// matches an element of the types slice. +func (in *Inspector) Nodes(types []ast.Node, f func(n ast.Node, push bool) (proceed bool)) { + mask := maskOf(types) + for i := int32(0); i < int32(len(in.events)); { + ev := in.events[i] + if ev.index > i { + // push + pop := ev.index + if ev.typ&mask != 0 { + if !f(ev.node, true) { + i = pop + 1 // jump to corresponding pop + 1 + continue + } + } + if in.events[pop].typ&mask == 0 { + // Subtrees do not contain types: skip them. + i = pop + continue + } + } else { + // pop + push := ev.index + if in.events[push].typ&mask != 0 { + f(ev.node, false) + } + } + i++ + } +} + +// WithStack visits nodes in a similar manner to Nodes, but it +// supplies each call to f an additional argument, the current +// traversal stack. The stack's first element is the outermost node, +// an *ast.File; its last is the innermost, n. +func (in *Inspector) WithStack(types []ast.Node, f func(n ast.Node, push bool, stack []ast.Node) (proceed bool)) { + mask := maskOf(types) + var stack []ast.Node + for i := int32(0); i < int32(len(in.events)); { + ev := in.events[i] + if ev.index > i { + // push + pop := ev.index + stack = append(stack, ev.node) + if ev.typ&mask != 0 { + if !f(ev.node, true, stack) { + i = pop + 1 + stack = stack[:len(stack)-1] + continue + } + } + if in.events[pop].typ&mask == 0 { + // Subtrees does not contain types: skip them. + i = pop + continue + } + } else { + // pop + push := ev.index + if in.events[push].typ&mask != 0 { + f(ev.node, false, stack) + } + stack = stack[:len(stack)-1] + } + i++ + } +} + +// traverse builds the table of events representing a traversal. +func traverse(files []*ast.File) []event { + // Preallocate approximate number of events + // based on source file extent of the declarations. + // (We use End-Pos not FileStart-FileEnd to neglect + // the effect of long doc comments.) + // This makes traverse faster by 4x (!). + var extent int + for _, f := range files { + extent += int(f.End() - f.Pos()) + } + // This estimate is based on the net/http package. + capacity := min(extent*33/100, 1e6) // impose some reasonable maximum (1M) + + v := &visitor{ + events: make([]event, 0, capacity), + stack: []item{{index: -1}}, // include an extra event so file nodes have a parent + } + for _, file := range files { + walk(v, edge.Invalid, -1, file) + } + return v.events +} + +type visitor struct { + events []event + stack []item +} + +type item struct { + index int32 // index of current node's push event + parentIndex int32 // index of parent node's push event + typAccum uint64 // accumulated type bits of current node's descendents + edgeKindAndIndex int32 // edge.Kind and index, bit packed +} + +func (v *visitor) push(ek edge.Kind, eindex int, node ast.Node) { + var ( + index = int32(len(v.events)) + parentIndex = v.stack[len(v.stack)-1].index + ) + v.events = append(v.events, event{ + node: node, + parent: parentIndex, + typ: typeOf(node), + index: 0, // (pop index is set later by visitor.pop) + }) + v.stack = append(v.stack, item{ + index: index, + parentIndex: parentIndex, + edgeKindAndIndex: packEdgeKindAndIndex(ek, eindex), + }) + + // 2B nodes ought to be enough for anyone! + if int32(len(v.events)) < 0 { + panic("event index exceeded int32") + } + + // 32M elements in an []ast.Node ought to be enough for anyone! + if ek2, eindex2 := unpackEdgeKindAndIndex(packEdgeKindAndIndex(ek, eindex)); ek2 != ek || eindex2 != eindex { + panic("Node slice index exceeded uint25") + } +} + +func (v *visitor) pop(node ast.Node) { + top := len(v.stack) - 1 + current := v.stack[top] + + push := &v.events[current.index] + parent := &v.stack[top-1] + + push.index = int32(len(v.events)) // make push event refer to pop + parent.typAccum |= current.typAccum | push.typ // accumulate type bits into parent + + v.stack = v.stack[:top] + + v.events = append(v.events, event{ + node: node, + typ: current.typAccum, + index: current.index, + parent: current.edgeKindAndIndex, // see [unpackEdgeKindAndIndex] + }) +} diff --git a/tests/vendor/golang.org/x/tools/go/ast/inspector/iter.go b/tests/vendor/golang.org/x/tools/go/ast/inspector/iter.go new file mode 100644 index 000000000..c576dc70a --- /dev/null +++ b/tests/vendor/golang.org/x/tools/go/ast/inspector/iter.go @@ -0,0 +1,85 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build go1.23 + +package inspector + +import ( + "go/ast" + "iter" +) + +// PreorderSeq returns an iterator that visits all the +// nodes of the files supplied to New in depth-first order. +// It visits each node n before n's children. +// The complete traversal sequence is determined by ast.Inspect. +// +// The types argument, if non-empty, enables type-based +// filtering of events: only nodes whose type matches an +// element of the types slice are included in the sequence. +func (in *Inspector) PreorderSeq(types ...ast.Node) iter.Seq[ast.Node] { + + // This implementation is identical to Preorder, + // except that it supports breaking out of the loop. + + return func(yield func(ast.Node) bool) { + mask := maskOf(types) + for i := int32(0); i < int32(len(in.events)); { + ev := in.events[i] + if ev.index > i { + // push + if ev.typ&mask != 0 { + if !yield(ev.node) { + break + } + } + pop := ev.index + if in.events[pop].typ&mask == 0 { + // Subtrees do not contain types: skip them and pop. + i = pop + 1 + continue + } + } + i++ + } + } +} + +// All[N] returns an iterator over all the nodes of type N. +// N must be a pointer-to-struct type that implements ast.Node. +// +// Example: +// +// for call := range All[*ast.CallExpr](in) { ... } +func All[N interface { + *S + ast.Node +}, S any](in *Inspector) iter.Seq[N] { + + // To avoid additional dynamic call overheads, + // we duplicate rather than call the logic of PreorderSeq. + + mask := typeOf((N)(nil)) + return func(yield func(N) bool) { + for i := int32(0); i < int32(len(in.events)); { + ev := in.events[i] + if ev.index > i { + // push + if ev.typ&mask != 0 { + if !yield(ev.node.(N)) { + break + } + } + pop := ev.index + if in.events[pop].typ&mask == 0 { + // Subtrees do not contain types: skip them and pop. + i = pop + 1 + continue + } + } + i++ + } + } +} diff --git a/tests/vendor/golang.org/x/tools/go/ast/inspector/typeof.go b/tests/vendor/golang.org/x/tools/go/ast/inspector/typeof.go new file mode 100644 index 000000000..e936c67c9 --- /dev/null +++ b/tests/vendor/golang.org/x/tools/go/ast/inspector/typeof.go @@ -0,0 +1,230 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package inspector + +// This file defines func typeOf(ast.Node) uint64. +// +// The initial map-based implementation was too slow; +// see https://go-review.googlesource.com/c/tools/+/135655/1/go/ast/inspector/inspector.go#196 + +import ( + "go/ast" + "math" + + _ "unsafe" +) + +const ( + nArrayType = iota + nAssignStmt + nBadDecl + nBadExpr + nBadStmt + nBasicLit + nBinaryExpr + nBlockStmt + nBranchStmt + nCallExpr + nCaseClause + nChanType + nCommClause + nComment + nCommentGroup + nCompositeLit + nDeclStmt + nDeferStmt + nEllipsis + nEmptyStmt + nExprStmt + nField + nFieldList + nFile + nForStmt + nFuncDecl + nFuncLit + nFuncType + nGenDecl + nGoStmt + nIdent + nIfStmt + nImportSpec + nIncDecStmt + nIndexExpr + nIndexListExpr + nInterfaceType + nKeyValueExpr + nLabeledStmt + nMapType + nPackage + nParenExpr + nRangeStmt + nReturnStmt + nSelectStmt + nSelectorExpr + nSendStmt + nSliceExpr + nStarExpr + nStructType + nSwitchStmt + nTypeAssertExpr + nTypeSpec + nTypeSwitchStmt + nUnaryExpr + nValueSpec +) + +// typeOf returns a distinct single-bit value that represents the type of n. +// +// Various implementations were benchmarked with BenchmarkNewInspector: +// +// GOGC=off +// - type switch 4.9-5.5ms 2.1ms +// - binary search over a sorted list of types 5.5-5.9ms 2.5ms +// - linear scan, frequency-ordered list 5.9-6.1ms 2.7ms +// - linear scan, unordered list 6.4ms 2.7ms +// - hash table 6.5ms 3.1ms +// +// A perfect hash seemed like overkill. +// +// The compiler's switch statement is the clear winner +// as it produces a binary tree in code, +// with constant conditions and good branch prediction. +// (Sadly it is the most verbose in source code.) +// Binary search suffered from poor branch prediction. +func typeOf(n ast.Node) uint64 { + // Fast path: nearly half of all nodes are identifiers. + if _, ok := n.(*ast.Ident); ok { + return 1 << nIdent + } + + // These cases include all nodes encountered by ast.Inspect. + switch n.(type) { + case *ast.ArrayType: + return 1 << nArrayType + case *ast.AssignStmt: + return 1 << nAssignStmt + case *ast.BadDecl: + return 1 << nBadDecl + case *ast.BadExpr: + return 1 << nBadExpr + case *ast.BadStmt: + return 1 << nBadStmt + case *ast.BasicLit: + return 1 << nBasicLit + case *ast.BinaryExpr: + return 1 << nBinaryExpr + case *ast.BlockStmt: + return 1 << nBlockStmt + case *ast.BranchStmt: + return 1 << nBranchStmt + case *ast.CallExpr: + return 1 << nCallExpr + case *ast.CaseClause: + return 1 << nCaseClause + case *ast.ChanType: + return 1 << nChanType + case *ast.CommClause: + return 1 << nCommClause + case *ast.Comment: + return 1 << nComment + case *ast.CommentGroup: + return 1 << nCommentGroup + case *ast.CompositeLit: + return 1 << nCompositeLit + case *ast.DeclStmt: + return 1 << nDeclStmt + case *ast.DeferStmt: + return 1 << nDeferStmt + case *ast.Ellipsis: + return 1 << nEllipsis + case *ast.EmptyStmt: + return 1 << nEmptyStmt + case *ast.ExprStmt: + return 1 << nExprStmt + case *ast.Field: + return 1 << nField + case *ast.FieldList: + return 1 << nFieldList + case *ast.File: + return 1 << nFile + case *ast.ForStmt: + return 1 << nForStmt + case *ast.FuncDecl: + return 1 << nFuncDecl + case *ast.FuncLit: + return 1 << nFuncLit + case *ast.FuncType: + return 1 << nFuncType + case *ast.GenDecl: + return 1 << nGenDecl + case *ast.GoStmt: + return 1 << nGoStmt + case *ast.Ident: + return 1 << nIdent + case *ast.IfStmt: + return 1 << nIfStmt + case *ast.ImportSpec: + return 1 << nImportSpec + case *ast.IncDecStmt: + return 1 << nIncDecStmt + case *ast.IndexExpr: + return 1 << nIndexExpr + case *ast.IndexListExpr: + return 1 << nIndexListExpr + case *ast.InterfaceType: + return 1 << nInterfaceType + case *ast.KeyValueExpr: + return 1 << nKeyValueExpr + case *ast.LabeledStmt: + return 1 << nLabeledStmt + case *ast.MapType: + return 1 << nMapType + case *ast.Package: + return 1 << nPackage + case *ast.ParenExpr: + return 1 << nParenExpr + case *ast.RangeStmt: + return 1 << nRangeStmt + case *ast.ReturnStmt: + return 1 << nReturnStmt + case *ast.SelectStmt: + return 1 << nSelectStmt + case *ast.SelectorExpr: + return 1 << nSelectorExpr + case *ast.SendStmt: + return 1 << nSendStmt + case *ast.SliceExpr: + return 1 << nSliceExpr + case *ast.StarExpr: + return 1 << nStarExpr + case *ast.StructType: + return 1 << nStructType + case *ast.SwitchStmt: + return 1 << nSwitchStmt + case *ast.TypeAssertExpr: + return 1 << nTypeAssertExpr + case *ast.TypeSpec: + return 1 << nTypeSpec + case *ast.TypeSwitchStmt: + return 1 << nTypeSwitchStmt + case *ast.UnaryExpr: + return 1 << nUnaryExpr + case *ast.ValueSpec: + return 1 << nValueSpec + } + return 0 +} + +//go:linkname maskOf golang.org/x/tools/go/ast/inspector.maskOf +func maskOf(nodes []ast.Node) uint64 { + if len(nodes) == 0 { + return math.MaxUint64 // match all node types + } + var mask uint64 + for _, n := range nodes { + mask |= typeOf(n) + } + return mask +} diff --git a/tests/vendor/golang.org/x/tools/go/ast/inspector/walk.go b/tests/vendor/golang.org/x/tools/go/ast/inspector/walk.go new file mode 100644 index 000000000..5a42174a0 --- /dev/null +++ b/tests/vendor/golang.org/x/tools/go/ast/inspector/walk.go @@ -0,0 +1,341 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package inspector + +// This file is a fork of ast.Inspect to reduce unnecessary dynamic +// calls and to gather edge information. +// +// Consistency with the original is ensured by TestInspectAllNodes. + +import ( + "fmt" + "go/ast" + + "golang.org/x/tools/internal/astutil/edge" +) + +func walkList[N ast.Node](v *visitor, ek edge.Kind, list []N) { + for i, node := range list { + walk(v, ek, i, node) + } +} + +func walk(v *visitor, ek edge.Kind, index int, node ast.Node) { + v.push(ek, index, node) + + // walk children + // (the order of the cases matches the order + // of the corresponding node types in ast.go) + switch n := node.(type) { + // Comments and fields + case *ast.Comment: + // nothing to do + + case *ast.CommentGroup: + walkList(v, edge.CommentGroup_List, n.List) + + case *ast.Field: + if n.Doc != nil { + walk(v, edge.Field_Doc, -1, n.Doc) + } + walkList(v, edge.Field_Names, n.Names) + if n.Type != nil { + walk(v, edge.Field_Type, -1, n.Type) + } + if n.Tag != nil { + walk(v, edge.Field_Tag, -1, n.Tag) + } + if n.Comment != nil { + walk(v, edge.Field_Comment, -1, n.Comment) + } + + case *ast.FieldList: + walkList(v, edge.FieldList_List, n.List) + + // Expressions + case *ast.BadExpr, *ast.Ident, *ast.BasicLit: + // nothing to do + + case *ast.Ellipsis: + if n.Elt != nil { + walk(v, edge.Ellipsis_Elt, -1, n.Elt) + } + + case *ast.FuncLit: + walk(v, edge.FuncLit_Type, -1, n.Type) + walk(v, edge.FuncLit_Body, -1, n.Body) + + case *ast.CompositeLit: + if n.Type != nil { + walk(v, edge.CompositeLit_Type, -1, n.Type) + } + walkList(v, edge.CompositeLit_Elts, n.Elts) + + case *ast.ParenExpr: + walk(v, edge.ParenExpr_X, -1, n.X) + + case *ast.SelectorExpr: + walk(v, edge.SelectorExpr_X, -1, n.X) + walk(v, edge.SelectorExpr_Sel, -1, n.Sel) + + case *ast.IndexExpr: + walk(v, edge.IndexExpr_X, -1, n.X) + walk(v, edge.IndexExpr_Index, -1, n.Index) + + case *ast.IndexListExpr: + walk(v, edge.IndexListExpr_X, -1, n.X) + walkList(v, edge.IndexListExpr_Indices, n.Indices) + + case *ast.SliceExpr: + walk(v, edge.SliceExpr_X, -1, n.X) + if n.Low != nil { + walk(v, edge.SliceExpr_Low, -1, n.Low) + } + if n.High != nil { + walk(v, edge.SliceExpr_High, -1, n.High) + } + if n.Max != nil { + walk(v, edge.SliceExpr_Max, -1, n.Max) + } + + case *ast.TypeAssertExpr: + walk(v, edge.TypeAssertExpr_X, -1, n.X) + if n.Type != nil { + walk(v, edge.TypeAssertExpr_Type, -1, n.Type) + } + + case *ast.CallExpr: + walk(v, edge.CallExpr_Fun, -1, n.Fun) + walkList(v, edge.CallExpr_Args, n.Args) + + case *ast.StarExpr: + walk(v, edge.StarExpr_X, -1, n.X) + + case *ast.UnaryExpr: + walk(v, edge.UnaryExpr_X, -1, n.X) + + case *ast.BinaryExpr: + walk(v, edge.BinaryExpr_X, -1, n.X) + walk(v, edge.BinaryExpr_Y, -1, n.Y) + + case *ast.KeyValueExpr: + walk(v, edge.KeyValueExpr_Key, -1, n.Key) + walk(v, edge.KeyValueExpr_Value, -1, n.Value) + + // Types + case *ast.ArrayType: + if n.Len != nil { + walk(v, edge.ArrayType_Len, -1, n.Len) + } + walk(v, edge.ArrayType_Elt, -1, n.Elt) + + case *ast.StructType: + walk(v, edge.StructType_Fields, -1, n.Fields) + + case *ast.FuncType: + if n.TypeParams != nil { + walk(v, edge.FuncType_TypeParams, -1, n.TypeParams) + } + if n.Params != nil { + walk(v, edge.FuncType_Params, -1, n.Params) + } + if n.Results != nil { + walk(v, edge.FuncType_Results, -1, n.Results) + } + + case *ast.InterfaceType: + walk(v, edge.InterfaceType_Methods, -1, n.Methods) + + case *ast.MapType: + walk(v, edge.MapType_Key, -1, n.Key) + walk(v, edge.MapType_Value, -1, n.Value) + + case *ast.ChanType: + walk(v, edge.ChanType_Value, -1, n.Value) + + // Statements + case *ast.BadStmt: + // nothing to do + + case *ast.DeclStmt: + walk(v, edge.DeclStmt_Decl, -1, n.Decl) + + case *ast.EmptyStmt: + // nothing to do + + case *ast.LabeledStmt: + walk(v, edge.LabeledStmt_Label, -1, n.Label) + walk(v, edge.LabeledStmt_Stmt, -1, n.Stmt) + + case *ast.ExprStmt: + walk(v, edge.ExprStmt_X, -1, n.X) + + case *ast.SendStmt: + walk(v, edge.SendStmt_Chan, -1, n.Chan) + walk(v, edge.SendStmt_Value, -1, n.Value) + + case *ast.IncDecStmt: + walk(v, edge.IncDecStmt_X, -1, n.X) + + case *ast.AssignStmt: + walkList(v, edge.AssignStmt_Lhs, n.Lhs) + walkList(v, edge.AssignStmt_Rhs, n.Rhs) + + case *ast.GoStmt: + walk(v, edge.GoStmt_Call, -1, n.Call) + + case *ast.DeferStmt: + walk(v, edge.DeferStmt_Call, -1, n.Call) + + case *ast.ReturnStmt: + walkList(v, edge.ReturnStmt_Results, n.Results) + + case *ast.BranchStmt: + if n.Label != nil { + walk(v, edge.BranchStmt_Label, -1, n.Label) + } + + case *ast.BlockStmt: + walkList(v, edge.BlockStmt_List, n.List) + + case *ast.IfStmt: + if n.Init != nil { + walk(v, edge.IfStmt_Init, -1, n.Init) + } + walk(v, edge.IfStmt_Cond, -1, n.Cond) + walk(v, edge.IfStmt_Body, -1, n.Body) + if n.Else != nil { + walk(v, edge.IfStmt_Else, -1, n.Else) + } + + case *ast.CaseClause: + walkList(v, edge.CaseClause_List, n.List) + walkList(v, edge.CaseClause_Body, n.Body) + + case *ast.SwitchStmt: + if n.Init != nil { + walk(v, edge.SwitchStmt_Init, -1, n.Init) + } + if n.Tag != nil { + walk(v, edge.SwitchStmt_Tag, -1, n.Tag) + } + walk(v, edge.SwitchStmt_Body, -1, n.Body) + + case *ast.TypeSwitchStmt: + if n.Init != nil { + walk(v, edge.TypeSwitchStmt_Init, -1, n.Init) + } + walk(v, edge.TypeSwitchStmt_Assign, -1, n.Assign) + walk(v, edge.TypeSwitchStmt_Body, -1, n.Body) + + case *ast.CommClause: + if n.Comm != nil { + walk(v, edge.CommClause_Comm, -1, n.Comm) + } + walkList(v, edge.CommClause_Body, n.Body) + + case *ast.SelectStmt: + walk(v, edge.SelectStmt_Body, -1, n.Body) + + case *ast.ForStmt: + if n.Init != nil { + walk(v, edge.ForStmt_Init, -1, n.Init) + } + if n.Cond != nil { + walk(v, edge.ForStmt_Cond, -1, n.Cond) + } + if n.Post != nil { + walk(v, edge.ForStmt_Post, -1, n.Post) + } + walk(v, edge.ForStmt_Body, -1, n.Body) + + case *ast.RangeStmt: + if n.Key != nil { + walk(v, edge.RangeStmt_Key, -1, n.Key) + } + if n.Value != nil { + walk(v, edge.RangeStmt_Value, -1, n.Value) + } + walk(v, edge.RangeStmt_X, -1, n.X) + walk(v, edge.RangeStmt_Body, -1, n.Body) + + // Declarations + case *ast.ImportSpec: + if n.Doc != nil { + walk(v, edge.ImportSpec_Doc, -1, n.Doc) + } + if n.Name != nil { + walk(v, edge.ImportSpec_Name, -1, n.Name) + } + walk(v, edge.ImportSpec_Path, -1, n.Path) + if n.Comment != nil { + walk(v, edge.ImportSpec_Comment, -1, n.Comment) + } + + case *ast.ValueSpec: + if n.Doc != nil { + walk(v, edge.ValueSpec_Doc, -1, n.Doc) + } + walkList(v, edge.ValueSpec_Names, n.Names) + if n.Type != nil { + walk(v, edge.ValueSpec_Type, -1, n.Type) + } + walkList(v, edge.ValueSpec_Values, n.Values) + if n.Comment != nil { + walk(v, edge.ValueSpec_Comment, -1, n.Comment) + } + + case *ast.TypeSpec: + if n.Doc != nil { + walk(v, edge.TypeSpec_Doc, -1, n.Doc) + } + walk(v, edge.TypeSpec_Name, -1, n.Name) + if n.TypeParams != nil { + walk(v, edge.TypeSpec_TypeParams, -1, n.TypeParams) + } + walk(v, edge.TypeSpec_Type, -1, n.Type) + if n.Comment != nil { + walk(v, edge.TypeSpec_Comment, -1, n.Comment) + } + + case *ast.BadDecl: + // nothing to do + + case *ast.GenDecl: + if n.Doc != nil { + walk(v, edge.GenDecl_Doc, -1, n.Doc) + } + walkList(v, edge.GenDecl_Specs, n.Specs) + + case *ast.FuncDecl: + if n.Doc != nil { + walk(v, edge.FuncDecl_Doc, -1, n.Doc) + } + if n.Recv != nil { + walk(v, edge.FuncDecl_Recv, -1, n.Recv) + } + walk(v, edge.FuncDecl_Name, -1, n.Name) + walk(v, edge.FuncDecl_Type, -1, n.Type) + if n.Body != nil { + walk(v, edge.FuncDecl_Body, -1, n.Body) + } + + case *ast.File: + if n.Doc != nil { + walk(v, edge.File_Doc, -1, n.Doc) + } + walk(v, edge.File_Name, -1, n.Name) + walkList(v, edge.File_Decls, n.Decls) + // don't walk n.Comments - they have been + // visited already through the individual + // nodes + + default: + // (includes *ast.Package) + panic(fmt.Sprintf("Walk: unexpected node type %T", n)) + } + + v.pop(node) +} diff --git a/tests/vendor/golang.org/x/tools/internal/astutil/edge/edge.go b/tests/vendor/golang.org/x/tools/internal/astutil/edge/edge.go new file mode 100644 index 000000000..4f6ccfd6e --- /dev/null +++ b/tests/vendor/golang.org/x/tools/internal/astutil/edge/edge.go @@ -0,0 +1,295 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package edge defines identifiers for each field of an ast.Node +// struct type that refers to another Node. +package edge + +import ( + "fmt" + "go/ast" + "reflect" +) + +// A Kind describes a field of an ast.Node struct. +type Kind uint8 + +// String returns a description of the edge kind. +func (k Kind) String() string { + if k == Invalid { + return "<invalid>" + } + info := fieldInfos[k] + return fmt.Sprintf("%v.%s", info.nodeType.Elem().Name(), info.name) +} + +// NodeType returns the pointer-to-struct type of the ast.Node implementation. +func (k Kind) NodeType() reflect.Type { return fieldInfos[k].nodeType } + +// FieldName returns the name of the field. +func (k Kind) FieldName() string { return fieldInfos[k].name } + +// FieldType returns the declared type of the field. +func (k Kind) FieldType() reflect.Type { return fieldInfos[k].fieldType } + +// Get returns the direct child of n identified by (k, idx). +// n's type must match k.NodeType(). +// idx must be a valid slice index, or -1 for a non-slice. +func (k Kind) Get(n ast.Node, idx int) ast.Node { + if k.NodeType() != reflect.TypeOf(n) { + panic(fmt.Sprintf("%v.Get(%T): invalid node type", k, n)) + } + v := reflect.ValueOf(n).Elem().Field(fieldInfos[k].index) + if idx != -1 { + v = v.Index(idx) // asserts valid index + } else { + // (The type assertion below asserts that v is not a slice.) + } + return v.Interface().(ast.Node) // may be nil +} + +const ( + Invalid Kind = iota // for nodes at the root of the traversal + + // Kinds are sorted alphabetically. + // Numbering is not stable. + // Each is named Type_Field, where Type is the + // ast.Node struct type and Field is the name of the field + + ArrayType_Elt + ArrayType_Len + AssignStmt_Lhs + AssignStmt_Rhs + BinaryExpr_X + BinaryExpr_Y + BlockStmt_List + BranchStmt_Label + CallExpr_Args + CallExpr_Fun + CaseClause_Body + CaseClause_List + ChanType_Value + CommClause_Body + CommClause_Comm + CommentGroup_List + CompositeLit_Elts + CompositeLit_Type + DeclStmt_Decl + DeferStmt_Call + Ellipsis_Elt + ExprStmt_X + FieldList_List + Field_Comment + Field_Doc + Field_Names + Field_Tag + Field_Type + File_Decls + File_Doc + File_Name + ForStmt_Body + ForStmt_Cond + ForStmt_Init + ForStmt_Post + FuncDecl_Body + FuncDecl_Doc + FuncDecl_Name + FuncDecl_Recv + FuncDecl_Type + FuncLit_Body + FuncLit_Type + FuncType_Params + FuncType_Results + FuncType_TypeParams + GenDecl_Doc + GenDecl_Specs + GoStmt_Call + IfStmt_Body + IfStmt_Cond + IfStmt_Else + IfStmt_Init + ImportSpec_Comment + ImportSpec_Doc + ImportSpec_Name + ImportSpec_Path + IncDecStmt_X + IndexExpr_Index + IndexExpr_X + IndexListExpr_Indices + IndexListExpr_X + InterfaceType_Methods + KeyValueExpr_Key + KeyValueExpr_Value + LabeledStmt_Label + LabeledStmt_Stmt + MapType_Key + MapType_Value + ParenExpr_X + RangeStmt_Body + RangeStmt_Key + RangeStmt_Value + RangeStmt_X + ReturnStmt_Results + SelectStmt_Body + SelectorExpr_Sel + SelectorExpr_X + SendStmt_Chan + SendStmt_Value + SliceExpr_High + SliceExpr_Low + SliceExpr_Max + SliceExpr_X + StarExpr_X + StructType_Fields + SwitchStmt_Body + SwitchStmt_Init + SwitchStmt_Tag + TypeAssertExpr_Type + TypeAssertExpr_X + TypeSpec_Comment + TypeSpec_Doc + TypeSpec_Name + TypeSpec_Type + TypeSpec_TypeParams + TypeSwitchStmt_Assign + TypeSwitchStmt_Body + TypeSwitchStmt_Init + UnaryExpr_X + ValueSpec_Comment + ValueSpec_Doc + ValueSpec_Names + ValueSpec_Type + ValueSpec_Values + + maxKind +) + +// Assert that the encoding fits in 7 bits, +// as the inspector relies on this. +// (We are currently at 104.) +var _ = [1 << 7]struct{}{}[maxKind] + +type fieldInfo struct { + nodeType reflect.Type // pointer-to-struct type of ast.Node implementation + name string + index int + fieldType reflect.Type +} + +func info[N ast.Node](fieldName string) fieldInfo { + nodePtrType := reflect.TypeFor[N]() + f, ok := nodePtrType.Elem().FieldByName(fieldName) + if !ok { + panic(fieldName) + } + return fieldInfo{nodePtrType, fieldName, f.Index[0], f.Type} +} + +var fieldInfos = [...]fieldInfo{ + Invalid: {}, + ArrayType_Elt: info[*ast.ArrayType]("Elt"), + ArrayType_Len: info[*ast.ArrayType]("Len"), + AssignStmt_Lhs: info[*ast.AssignStmt]("Lhs"), + AssignStmt_Rhs: info[*ast.AssignStmt]("Rhs"), + BinaryExpr_X: info[*ast.BinaryExpr]("X"), + BinaryExpr_Y: info[*ast.BinaryExpr]("Y"), + BlockStmt_List: info[*ast.BlockStmt]("List"), + BranchStmt_Label: info[*ast.BranchStmt]("Label"), + CallExpr_Args: info[*ast.CallExpr]("Args"), + CallExpr_Fun: info[*ast.CallExpr]("Fun"), + CaseClause_Body: info[*ast.CaseClause]("Body"), + CaseClause_List: info[*ast.CaseClause]("List"), + ChanType_Value: info[*ast.ChanType]("Value"), + CommClause_Body: info[*ast.CommClause]("Body"), + CommClause_Comm: info[*ast.CommClause]("Comm"), + CommentGroup_List: info[*ast.CommentGroup]("List"), + CompositeLit_Elts: info[*ast.CompositeLit]("Elts"), + CompositeLit_Type: info[*ast.CompositeLit]("Type"), + DeclStmt_Decl: info[*ast.DeclStmt]("Decl"), + DeferStmt_Call: info[*ast.DeferStmt]("Call"), + Ellipsis_Elt: info[*ast.Ellipsis]("Elt"), + ExprStmt_X: info[*ast.ExprStmt]("X"), + FieldList_List: info[*ast.FieldList]("List"), + Field_Comment: info[*ast.Field]("Comment"), + Field_Doc: info[*ast.Field]("Doc"), + Field_Names: info[*ast.Field]("Names"), + Field_Tag: info[*ast.Field]("Tag"), + Field_Type: info[*ast.Field]("Type"), + File_Decls: info[*ast.File]("Decls"), + File_Doc: info[*ast.File]("Doc"), + File_Name: info[*ast.File]("Name"), + ForStmt_Body: info[*ast.ForStmt]("Body"), + ForStmt_Cond: info[*ast.ForStmt]("Cond"), + ForStmt_Init: info[*ast.ForStmt]("Init"), + ForStmt_Post: info[*ast.ForStmt]("Post"), + FuncDecl_Body: info[*ast.FuncDecl]("Body"), + FuncDecl_Doc: info[*ast.FuncDecl]("Doc"), + FuncDecl_Name: info[*ast.FuncDecl]("Name"), + FuncDecl_Recv: info[*ast.FuncDecl]("Recv"), + FuncDecl_Type: info[*ast.FuncDecl]("Type"), + FuncLit_Body: info[*ast.FuncLit]("Body"), + FuncLit_Type: info[*ast.FuncLit]("Type"), + FuncType_Params: info[*ast.FuncType]("Params"), + FuncType_Results: info[*ast.FuncType]("Results"), + FuncType_TypeParams: info[*ast.FuncType]("TypeParams"), + GenDecl_Doc: info[*ast.GenDecl]("Doc"), + GenDecl_Specs: info[*ast.GenDecl]("Specs"), + GoStmt_Call: info[*ast.GoStmt]("Call"), + IfStmt_Body: info[*ast.IfStmt]("Body"), + IfStmt_Cond: info[*ast.IfStmt]("Cond"), + IfStmt_Else: info[*ast.IfStmt]("Else"), + IfStmt_Init: info[*ast.IfStmt]("Init"), + ImportSpec_Comment: info[*ast.ImportSpec]("Comment"), + ImportSpec_Doc: info[*ast.ImportSpec]("Doc"), + ImportSpec_Name: info[*ast.ImportSpec]("Name"), + ImportSpec_Path: info[*ast.ImportSpec]("Path"), + IncDecStmt_X: info[*ast.IncDecStmt]("X"), + IndexExpr_Index: info[*ast.IndexExpr]("Index"), + IndexExpr_X: info[*ast.IndexExpr]("X"), + IndexListExpr_Indices: info[*ast.IndexListExpr]("Indices"), + IndexListExpr_X: info[*ast.IndexListExpr]("X"), + InterfaceType_Methods: info[*ast.InterfaceType]("Methods"), + KeyValueExpr_Key: info[*ast.KeyValueExpr]("Key"), + KeyValueExpr_Value: info[*ast.KeyValueExpr]("Value"), + LabeledStmt_Label: info[*ast.LabeledStmt]("Label"), + LabeledStmt_Stmt: info[*ast.LabeledStmt]("Stmt"), + MapType_Key: info[*ast.MapType]("Key"), + MapType_Value: info[*ast.MapType]("Value"), + ParenExpr_X: info[*ast.ParenExpr]("X"), + RangeStmt_Body: info[*ast.RangeStmt]("Body"), + RangeStmt_Key: info[*ast.RangeStmt]("Key"), + RangeStmt_Value: info[*ast.RangeStmt]("Value"), + RangeStmt_X: info[*ast.RangeStmt]("X"), + ReturnStmt_Results: info[*ast.ReturnStmt]("Results"), + SelectStmt_Body: info[*ast.SelectStmt]("Body"), + SelectorExpr_Sel: info[*ast.SelectorExpr]("Sel"), + SelectorExpr_X: info[*ast.SelectorExpr]("X"), + SendStmt_Chan: info[*ast.SendStmt]("Chan"), + SendStmt_Value: info[*ast.SendStmt]("Value"), + SliceExpr_High: info[*ast.SliceExpr]("High"), + SliceExpr_Low: info[*ast.SliceExpr]("Low"), + SliceExpr_Max: info[*ast.SliceExpr]("Max"), + SliceExpr_X: info[*ast.SliceExpr]("X"), + StarExpr_X: info[*ast.StarExpr]("X"), + StructType_Fields: info[*ast.StructType]("Fields"), + SwitchStmt_Body: info[*ast.SwitchStmt]("Body"), + SwitchStmt_Init: info[*ast.SwitchStmt]("Init"), + SwitchStmt_Tag: info[*ast.SwitchStmt]("Tag"), + TypeAssertExpr_Type: info[*ast.TypeAssertExpr]("Type"), + TypeAssertExpr_X: info[*ast.TypeAssertExpr]("X"), + TypeSpec_Comment: info[*ast.TypeSpec]("Comment"), + TypeSpec_Doc: info[*ast.TypeSpec]("Doc"), + TypeSpec_Name: info[*ast.TypeSpec]("Name"), + TypeSpec_Type: info[*ast.TypeSpec]("Type"), + TypeSpec_TypeParams: info[*ast.TypeSpec]("TypeParams"), + TypeSwitchStmt_Assign: info[*ast.TypeSwitchStmt]("Assign"), + TypeSwitchStmt_Body: info[*ast.TypeSwitchStmt]("Body"), + TypeSwitchStmt_Init: info[*ast.TypeSwitchStmt]("Init"), + UnaryExpr_X: info[*ast.UnaryExpr]("X"), + ValueSpec_Comment: info[*ast.ValueSpec]("Comment"), + ValueSpec_Doc: info[*ast.ValueSpec]("Doc"), + ValueSpec_Names: info[*ast.ValueSpec]("Names"), + ValueSpec_Type: info[*ast.ValueSpec]("Type"), + ValueSpec_Values: info[*ast.ValueSpec]("Values"), +} diff --git a/tests/vendor/gopkg.in/yaml.v3/LICENSE b/tests/vendor/gopkg.in/yaml.v3/LICENSE new file mode 100644 index 000000000..2683e4bb1 --- /dev/null +++ b/tests/vendor/gopkg.in/yaml.v3/LICENSE @@ -0,0 +1,50 @@ + +This project is covered by two different licenses: MIT and Apache. + +#### MIT License #### + +The following files were ported to Go from C files of libyaml, and thus +are still covered by their original MIT license, with the additional +copyright staring in 2011 when the project was ported over: + + apic.go emitterc.go parserc.go readerc.go scannerc.go + writerc.go yamlh.go yamlprivateh.go + +Copyright (c) 2006-2010 Kirill Simonov +Copyright (c) 2006-2011 Kirill Simonov + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +### Apache License ### + +All the remaining project files are covered by the Apache license: + +Copyright (c) 2011-2019 Canonical Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/vendor/gopkg.in/yaml.v2/NOTICE b/tests/vendor/gopkg.in/yaml.v3/NOTICE similarity index 100% rename from vendor/gopkg.in/yaml.v2/NOTICE rename to tests/vendor/gopkg.in/yaml.v3/NOTICE diff --git a/tests/vendor/gopkg.in/yaml.v3/README.md b/tests/vendor/gopkg.in/yaml.v3/README.md new file mode 100644 index 000000000..08eb1babd --- /dev/null +++ b/tests/vendor/gopkg.in/yaml.v3/README.md @@ -0,0 +1,150 @@ +# YAML support for the Go language + +Introduction +------------ + +The yaml package enables Go programs to comfortably encode and decode YAML +values. It was developed within [Canonical](https://www.canonical.com) as +part of the [juju](https://juju.ubuntu.com) project, and is based on a +pure Go port of the well-known [libyaml](http://pyyaml.org/wiki/LibYAML) +C library to parse and generate YAML data quickly and reliably. + +Compatibility +------------- + +The yaml package supports most of YAML 1.2, but preserves some behavior +from 1.1 for backwards compatibility. + +Specifically, as of v3 of the yaml package: + + - YAML 1.1 bools (_yes/no, on/off_) are supported as long as they are being + decoded into a typed bool value. Otherwise they behave as a string. Booleans + in YAML 1.2 are _true/false_ only. + - Octals encode and decode as _0777_ per YAML 1.1, rather than _0o777_ + as specified in YAML 1.2, because most parsers still use the old format. + Octals in the _0o777_ format are supported though, so new files work. + - Does not support base-60 floats. These are gone from YAML 1.2, and were + actually never supported by this package as it's clearly a poor choice. + +and offers backwards +compatibility with YAML 1.1 in some cases. +1.2, including support for +anchors, tags, map merging, etc. Multi-document unmarshalling is not yet +implemented, and base-60 floats from YAML 1.1 are purposefully not +supported since they're a poor design and are gone in YAML 1.2. + +Installation and usage +---------------------- + +The import path for the package is *gopkg.in/yaml.v3*. + +To install it, run: + + go get gopkg.in/yaml.v3 + +API documentation +----------------- + +If opened in a browser, the import path itself leads to the API documentation: + + - [https://gopkg.in/yaml.v3](https://gopkg.in/yaml.v3) + +API stability +------------- + +The package API for yaml v3 will remain stable as described in [gopkg.in](https://gopkg.in). + + +License +------- + +The yaml package is licensed under the MIT and Apache License 2.0 licenses. +Please see the LICENSE file for details. + + +Example +------- + +```Go +package main + +import ( + "fmt" + "log" + + "gopkg.in/yaml.v3" +) + +var data = ` +a: Easy! +b: + c: 2 + d: [3, 4] +` + +// Note: struct fields must be public in order for unmarshal to +// correctly populate the data. +type T struct { + A string + B struct { + RenamedC int `yaml:"c"` + D []int `yaml:",flow"` + } +} + +func main() { + t := T{} + + err := yaml.Unmarshal([]byte(data), &t) + if err != nil { + log.Fatalf("error: %v", err) + } + fmt.Printf("--- t:\n%v\n\n", t) + + d, err := yaml.Marshal(&t) + if err != nil { + log.Fatalf("error: %v", err) + } + fmt.Printf("--- t dump:\n%s\n\n", string(d)) + + m := make(map[interface{}]interface{}) + + err = yaml.Unmarshal([]byte(data), &m) + if err != nil { + log.Fatalf("error: %v", err) + } + fmt.Printf("--- m:\n%v\n\n", m) + + d, err = yaml.Marshal(&m) + if err != nil { + log.Fatalf("error: %v", err) + } + fmt.Printf("--- m dump:\n%s\n\n", string(d)) +} +``` + +This example will generate the following output: + +``` +--- t: +{Easy! {2 [3 4]}} + +--- t dump: +a: Easy! +b: + c: 2 + d: [3, 4] + + +--- m: +map[a:Easy! b:map[c:2 d:[3 4]]] + +--- m dump: +a: Easy! +b: + c: 2 + d: + - 3 + - 4 +``` + diff --git a/tests/vendor/gopkg.in/yaml.v3/apic.go b/tests/vendor/gopkg.in/yaml.v3/apic.go new file mode 100644 index 000000000..ae7d049f1 --- /dev/null +++ b/tests/vendor/gopkg.in/yaml.v3/apic.go @@ -0,0 +1,747 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// Copyright (c) 2006-2010 Kirill Simonov +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +package yaml + +import ( + "io" +) + +func yaml_insert_token(parser *yaml_parser_t, pos int, token *yaml_token_t) { + //fmt.Println("yaml_insert_token", "pos:", pos, "typ:", token.typ, "head:", parser.tokens_head, "len:", len(parser.tokens)) + + // Check if we can move the queue at the beginning of the buffer. + if parser.tokens_head > 0 && len(parser.tokens) == cap(parser.tokens) { + if parser.tokens_head != len(parser.tokens) { + copy(parser.tokens, parser.tokens[parser.tokens_head:]) + } + parser.tokens = parser.tokens[:len(parser.tokens)-parser.tokens_head] + parser.tokens_head = 0 + } + parser.tokens = append(parser.tokens, *token) + if pos < 0 { + return + } + copy(parser.tokens[parser.tokens_head+pos+1:], parser.tokens[parser.tokens_head+pos:]) + parser.tokens[parser.tokens_head+pos] = *token +} + +// Create a new parser object. +func yaml_parser_initialize(parser *yaml_parser_t) bool { + *parser = yaml_parser_t{ + raw_buffer: make([]byte, 0, input_raw_buffer_size), + buffer: make([]byte, 0, input_buffer_size), + } + return true +} + +// Destroy a parser object. +func yaml_parser_delete(parser *yaml_parser_t) { + *parser = yaml_parser_t{} +} + +// String read handler. +func yaml_string_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) { + if parser.input_pos == len(parser.input) { + return 0, io.EOF + } + n = copy(buffer, parser.input[parser.input_pos:]) + parser.input_pos += n + return n, nil +} + +// Reader read handler. +func yaml_reader_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) { + return parser.input_reader.Read(buffer) +} + +// Set a string input. +func yaml_parser_set_input_string(parser *yaml_parser_t, input []byte) { + if parser.read_handler != nil { + panic("must set the input source only once") + } + parser.read_handler = yaml_string_read_handler + parser.input = input + parser.input_pos = 0 +} + +// Set a file input. +func yaml_parser_set_input_reader(parser *yaml_parser_t, r io.Reader) { + if parser.read_handler != nil { + panic("must set the input source only once") + } + parser.read_handler = yaml_reader_read_handler + parser.input_reader = r +} + +// Set the source encoding. +func yaml_parser_set_encoding(parser *yaml_parser_t, encoding yaml_encoding_t) { + if parser.encoding != yaml_ANY_ENCODING { + panic("must set the encoding only once") + } + parser.encoding = encoding +} + +// Create a new emitter object. +func yaml_emitter_initialize(emitter *yaml_emitter_t) { + *emitter = yaml_emitter_t{ + buffer: make([]byte, output_buffer_size), + raw_buffer: make([]byte, 0, output_raw_buffer_size), + states: make([]yaml_emitter_state_t, 0, initial_stack_size), + events: make([]yaml_event_t, 0, initial_queue_size), + best_width: -1, + } +} + +// Destroy an emitter object. +func yaml_emitter_delete(emitter *yaml_emitter_t) { + *emitter = yaml_emitter_t{} +} + +// String write handler. +func yaml_string_write_handler(emitter *yaml_emitter_t, buffer []byte) error { + *emitter.output_buffer = append(*emitter.output_buffer, buffer...) + return nil +} + +// yaml_writer_write_handler uses emitter.output_writer to write the +// emitted text. +func yaml_writer_write_handler(emitter *yaml_emitter_t, buffer []byte) error { + _, err := emitter.output_writer.Write(buffer) + return err +} + +// Set a string output. +func yaml_emitter_set_output_string(emitter *yaml_emitter_t, output_buffer *[]byte) { + if emitter.write_handler != nil { + panic("must set the output target only once") + } + emitter.write_handler = yaml_string_write_handler + emitter.output_buffer = output_buffer +} + +// Set a file output. +func yaml_emitter_set_output_writer(emitter *yaml_emitter_t, w io.Writer) { + if emitter.write_handler != nil { + panic("must set the output target only once") + } + emitter.write_handler = yaml_writer_write_handler + emitter.output_writer = w +} + +// Set the output encoding. +func yaml_emitter_set_encoding(emitter *yaml_emitter_t, encoding yaml_encoding_t) { + if emitter.encoding != yaml_ANY_ENCODING { + panic("must set the output encoding only once") + } + emitter.encoding = encoding +} + +// Set the canonical output style. +func yaml_emitter_set_canonical(emitter *yaml_emitter_t, canonical bool) { + emitter.canonical = canonical +} + +// Set the indentation increment. +func yaml_emitter_set_indent(emitter *yaml_emitter_t, indent int) { + if indent < 2 || indent > 9 { + indent = 2 + } + emitter.best_indent = indent +} + +// Set the preferred line width. +func yaml_emitter_set_width(emitter *yaml_emitter_t, width int) { + if width < 0 { + width = -1 + } + emitter.best_width = width +} + +// Set if unescaped non-ASCII characters are allowed. +func yaml_emitter_set_unicode(emitter *yaml_emitter_t, unicode bool) { + emitter.unicode = unicode +} + +// Set the preferred line break character. +func yaml_emitter_set_break(emitter *yaml_emitter_t, line_break yaml_break_t) { + emitter.line_break = line_break +} + +///* +// * Destroy a token object. +// */ +// +//YAML_DECLARE(void) +//yaml_token_delete(yaml_token_t *token) +//{ +// assert(token); // Non-NULL token object expected. +// +// switch (token.type) +// { +// case YAML_TAG_DIRECTIVE_TOKEN: +// yaml_free(token.data.tag_directive.handle); +// yaml_free(token.data.tag_directive.prefix); +// break; +// +// case YAML_ALIAS_TOKEN: +// yaml_free(token.data.alias.value); +// break; +// +// case YAML_ANCHOR_TOKEN: +// yaml_free(token.data.anchor.value); +// break; +// +// case YAML_TAG_TOKEN: +// yaml_free(token.data.tag.handle); +// yaml_free(token.data.tag.suffix); +// break; +// +// case YAML_SCALAR_TOKEN: +// yaml_free(token.data.scalar.value); +// break; +// +// default: +// break; +// } +// +// memset(token, 0, sizeof(yaml_token_t)); +//} +// +///* +// * Check if a string is a valid UTF-8 sequence. +// * +// * Check 'reader.c' for more details on UTF-8 encoding. +// */ +// +//static int +//yaml_check_utf8(yaml_char_t *start, size_t length) +//{ +// yaml_char_t *end = start+length; +// yaml_char_t *pointer = start; +// +// while (pointer < end) { +// unsigned char octet; +// unsigned int width; +// unsigned int value; +// size_t k; +// +// octet = pointer[0]; +// width = (octet & 0x80) == 0x00 ? 1 : +// (octet & 0xE0) == 0xC0 ? 2 : +// (octet & 0xF0) == 0xE0 ? 3 : +// (octet & 0xF8) == 0xF0 ? 4 : 0; +// value = (octet & 0x80) == 0x00 ? octet & 0x7F : +// (octet & 0xE0) == 0xC0 ? octet & 0x1F : +// (octet & 0xF0) == 0xE0 ? octet & 0x0F : +// (octet & 0xF8) == 0xF0 ? octet & 0x07 : 0; +// if (!width) return 0; +// if (pointer+width > end) return 0; +// for (k = 1; k < width; k ++) { +// octet = pointer[k]; +// if ((octet & 0xC0) != 0x80) return 0; +// value = (value << 6) + (octet & 0x3F); +// } +// if (!((width == 1) || +// (width == 2 && value >= 0x80) || +// (width == 3 && value >= 0x800) || +// (width == 4 && value >= 0x10000))) return 0; +// +// pointer += width; +// } +// +// return 1; +//} +// + +// Create STREAM-START. +func yaml_stream_start_event_initialize(event *yaml_event_t, encoding yaml_encoding_t) { + *event = yaml_event_t{ + typ: yaml_STREAM_START_EVENT, + encoding: encoding, + } +} + +// Create STREAM-END. +func yaml_stream_end_event_initialize(event *yaml_event_t) { + *event = yaml_event_t{ + typ: yaml_STREAM_END_EVENT, + } +} + +// Create DOCUMENT-START. +func yaml_document_start_event_initialize( + event *yaml_event_t, + version_directive *yaml_version_directive_t, + tag_directives []yaml_tag_directive_t, + implicit bool, +) { + *event = yaml_event_t{ + typ: yaml_DOCUMENT_START_EVENT, + version_directive: version_directive, + tag_directives: tag_directives, + implicit: implicit, + } +} + +// Create DOCUMENT-END. +func yaml_document_end_event_initialize(event *yaml_event_t, implicit bool) { + *event = yaml_event_t{ + typ: yaml_DOCUMENT_END_EVENT, + implicit: implicit, + } +} + +// Create ALIAS. +func yaml_alias_event_initialize(event *yaml_event_t, anchor []byte) bool { + *event = yaml_event_t{ + typ: yaml_ALIAS_EVENT, + anchor: anchor, + } + return true +} + +// Create SCALAR. +func yaml_scalar_event_initialize(event *yaml_event_t, anchor, tag, value []byte, plain_implicit, quoted_implicit bool, style yaml_scalar_style_t) bool { + *event = yaml_event_t{ + typ: yaml_SCALAR_EVENT, + anchor: anchor, + tag: tag, + value: value, + implicit: plain_implicit, + quoted_implicit: quoted_implicit, + style: yaml_style_t(style), + } + return true +} + +// Create SEQUENCE-START. +func yaml_sequence_start_event_initialize(event *yaml_event_t, anchor, tag []byte, implicit bool, style yaml_sequence_style_t) bool { + *event = yaml_event_t{ + typ: yaml_SEQUENCE_START_EVENT, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(style), + } + return true +} + +// Create SEQUENCE-END. +func yaml_sequence_end_event_initialize(event *yaml_event_t) bool { + *event = yaml_event_t{ + typ: yaml_SEQUENCE_END_EVENT, + } + return true +} + +// Create MAPPING-START. +func yaml_mapping_start_event_initialize(event *yaml_event_t, anchor, tag []byte, implicit bool, style yaml_mapping_style_t) { + *event = yaml_event_t{ + typ: yaml_MAPPING_START_EVENT, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(style), + } +} + +// Create MAPPING-END. +func yaml_mapping_end_event_initialize(event *yaml_event_t) { + *event = yaml_event_t{ + typ: yaml_MAPPING_END_EVENT, + } +} + +// Destroy an event object. +func yaml_event_delete(event *yaml_event_t) { + *event = yaml_event_t{} +} + +///* +// * Create a document object. +// */ +// +//YAML_DECLARE(int) +//yaml_document_initialize(document *yaml_document_t, +// version_directive *yaml_version_directive_t, +// tag_directives_start *yaml_tag_directive_t, +// tag_directives_end *yaml_tag_directive_t, +// start_implicit int, end_implicit int) +//{ +// struct { +// error yaml_error_type_t +// } context +// struct { +// start *yaml_node_t +// end *yaml_node_t +// top *yaml_node_t +// } nodes = { NULL, NULL, NULL } +// version_directive_copy *yaml_version_directive_t = NULL +// struct { +// start *yaml_tag_directive_t +// end *yaml_tag_directive_t +// top *yaml_tag_directive_t +// } tag_directives_copy = { NULL, NULL, NULL } +// value yaml_tag_directive_t = { NULL, NULL } +// mark yaml_mark_t = { 0, 0, 0 } +// +// assert(document) // Non-NULL document object is expected. +// assert((tag_directives_start && tag_directives_end) || +// (tag_directives_start == tag_directives_end)) +// // Valid tag directives are expected. +// +// if (!STACK_INIT(&context, nodes, INITIAL_STACK_SIZE)) goto error +// +// if (version_directive) { +// version_directive_copy = yaml_malloc(sizeof(yaml_version_directive_t)) +// if (!version_directive_copy) goto error +// version_directive_copy.major = version_directive.major +// version_directive_copy.minor = version_directive.minor +// } +// +// if (tag_directives_start != tag_directives_end) { +// tag_directive *yaml_tag_directive_t +// if (!STACK_INIT(&context, tag_directives_copy, INITIAL_STACK_SIZE)) +// goto error +// for (tag_directive = tag_directives_start +// tag_directive != tag_directives_end; tag_directive ++) { +// assert(tag_directive.handle) +// assert(tag_directive.prefix) +// if (!yaml_check_utf8(tag_directive.handle, +// strlen((char *)tag_directive.handle))) +// goto error +// if (!yaml_check_utf8(tag_directive.prefix, +// strlen((char *)tag_directive.prefix))) +// goto error +// value.handle = yaml_strdup(tag_directive.handle) +// value.prefix = yaml_strdup(tag_directive.prefix) +// if (!value.handle || !value.prefix) goto error +// if (!PUSH(&context, tag_directives_copy, value)) +// goto error +// value.handle = NULL +// value.prefix = NULL +// } +// } +// +// DOCUMENT_INIT(*document, nodes.start, nodes.end, version_directive_copy, +// tag_directives_copy.start, tag_directives_copy.top, +// start_implicit, end_implicit, mark, mark) +// +// return 1 +// +//error: +// STACK_DEL(&context, nodes) +// yaml_free(version_directive_copy) +// while (!STACK_EMPTY(&context, tag_directives_copy)) { +// value yaml_tag_directive_t = POP(&context, tag_directives_copy) +// yaml_free(value.handle) +// yaml_free(value.prefix) +// } +// STACK_DEL(&context, tag_directives_copy) +// yaml_free(value.handle) +// yaml_free(value.prefix) +// +// return 0 +//} +// +///* +// * Destroy a document object. +// */ +// +//YAML_DECLARE(void) +//yaml_document_delete(document *yaml_document_t) +//{ +// struct { +// error yaml_error_type_t +// } context +// tag_directive *yaml_tag_directive_t +// +// context.error = YAML_NO_ERROR // Eliminate a compiler warning. +// +// assert(document) // Non-NULL document object is expected. +// +// while (!STACK_EMPTY(&context, document.nodes)) { +// node yaml_node_t = POP(&context, document.nodes) +// yaml_free(node.tag) +// switch (node.type) { +// case YAML_SCALAR_NODE: +// yaml_free(node.data.scalar.value) +// break +// case YAML_SEQUENCE_NODE: +// STACK_DEL(&context, node.data.sequence.items) +// break +// case YAML_MAPPING_NODE: +// STACK_DEL(&context, node.data.mapping.pairs) +// break +// default: +// assert(0) // Should not happen. +// } +// } +// STACK_DEL(&context, document.nodes) +// +// yaml_free(document.version_directive) +// for (tag_directive = document.tag_directives.start +// tag_directive != document.tag_directives.end +// tag_directive++) { +// yaml_free(tag_directive.handle) +// yaml_free(tag_directive.prefix) +// } +// yaml_free(document.tag_directives.start) +// +// memset(document, 0, sizeof(yaml_document_t)) +//} +// +///** +// * Get a document node. +// */ +// +//YAML_DECLARE(yaml_node_t *) +//yaml_document_get_node(document *yaml_document_t, index int) +//{ +// assert(document) // Non-NULL document object is expected. +// +// if (index > 0 && document.nodes.start + index <= document.nodes.top) { +// return document.nodes.start + index - 1 +// } +// return NULL +//} +// +///** +// * Get the root object. +// */ +// +//YAML_DECLARE(yaml_node_t *) +//yaml_document_get_root_node(document *yaml_document_t) +//{ +// assert(document) // Non-NULL document object is expected. +// +// if (document.nodes.top != document.nodes.start) { +// return document.nodes.start +// } +// return NULL +//} +// +///* +// * Add a scalar node to a document. +// */ +// +//YAML_DECLARE(int) +//yaml_document_add_scalar(document *yaml_document_t, +// tag *yaml_char_t, value *yaml_char_t, length int, +// style yaml_scalar_style_t) +//{ +// struct { +// error yaml_error_type_t +// } context +// mark yaml_mark_t = { 0, 0, 0 } +// tag_copy *yaml_char_t = NULL +// value_copy *yaml_char_t = NULL +// node yaml_node_t +// +// assert(document) // Non-NULL document object is expected. +// assert(value) // Non-NULL value is expected. +// +// if (!tag) { +// tag = (yaml_char_t *)YAML_DEFAULT_SCALAR_TAG +// } +// +// if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error +// tag_copy = yaml_strdup(tag) +// if (!tag_copy) goto error +// +// if (length < 0) { +// length = strlen((char *)value) +// } +// +// if (!yaml_check_utf8(value, length)) goto error +// value_copy = yaml_malloc(length+1) +// if (!value_copy) goto error +// memcpy(value_copy, value, length) +// value_copy[length] = '\0' +// +// SCALAR_NODE_INIT(node, tag_copy, value_copy, length, style, mark, mark) +// if (!PUSH(&context, document.nodes, node)) goto error +// +// return document.nodes.top - document.nodes.start +// +//error: +// yaml_free(tag_copy) +// yaml_free(value_copy) +// +// return 0 +//} +// +///* +// * Add a sequence node to a document. +// */ +// +//YAML_DECLARE(int) +//yaml_document_add_sequence(document *yaml_document_t, +// tag *yaml_char_t, style yaml_sequence_style_t) +//{ +// struct { +// error yaml_error_type_t +// } context +// mark yaml_mark_t = { 0, 0, 0 } +// tag_copy *yaml_char_t = NULL +// struct { +// start *yaml_node_item_t +// end *yaml_node_item_t +// top *yaml_node_item_t +// } items = { NULL, NULL, NULL } +// node yaml_node_t +// +// assert(document) // Non-NULL document object is expected. +// +// if (!tag) { +// tag = (yaml_char_t *)YAML_DEFAULT_SEQUENCE_TAG +// } +// +// if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error +// tag_copy = yaml_strdup(tag) +// if (!tag_copy) goto error +// +// if (!STACK_INIT(&context, items, INITIAL_STACK_SIZE)) goto error +// +// SEQUENCE_NODE_INIT(node, tag_copy, items.start, items.end, +// style, mark, mark) +// if (!PUSH(&context, document.nodes, node)) goto error +// +// return document.nodes.top - document.nodes.start +// +//error: +// STACK_DEL(&context, items) +// yaml_free(tag_copy) +// +// return 0 +//} +// +///* +// * Add a mapping node to a document. +// */ +// +//YAML_DECLARE(int) +//yaml_document_add_mapping(document *yaml_document_t, +// tag *yaml_char_t, style yaml_mapping_style_t) +//{ +// struct { +// error yaml_error_type_t +// } context +// mark yaml_mark_t = { 0, 0, 0 } +// tag_copy *yaml_char_t = NULL +// struct { +// start *yaml_node_pair_t +// end *yaml_node_pair_t +// top *yaml_node_pair_t +// } pairs = { NULL, NULL, NULL } +// node yaml_node_t +// +// assert(document) // Non-NULL document object is expected. +// +// if (!tag) { +// tag = (yaml_char_t *)YAML_DEFAULT_MAPPING_TAG +// } +// +// if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error +// tag_copy = yaml_strdup(tag) +// if (!tag_copy) goto error +// +// if (!STACK_INIT(&context, pairs, INITIAL_STACK_SIZE)) goto error +// +// MAPPING_NODE_INIT(node, tag_copy, pairs.start, pairs.end, +// style, mark, mark) +// if (!PUSH(&context, document.nodes, node)) goto error +// +// return document.nodes.top - document.nodes.start +// +//error: +// STACK_DEL(&context, pairs) +// yaml_free(tag_copy) +// +// return 0 +//} +// +///* +// * Append an item to a sequence node. +// */ +// +//YAML_DECLARE(int) +//yaml_document_append_sequence_item(document *yaml_document_t, +// sequence int, item int) +//{ +// struct { +// error yaml_error_type_t +// } context +// +// assert(document) // Non-NULL document is required. +// assert(sequence > 0 +// && document.nodes.start + sequence <= document.nodes.top) +// // Valid sequence id is required. +// assert(document.nodes.start[sequence-1].type == YAML_SEQUENCE_NODE) +// // A sequence node is required. +// assert(item > 0 && document.nodes.start + item <= document.nodes.top) +// // Valid item id is required. +// +// if (!PUSH(&context, +// document.nodes.start[sequence-1].data.sequence.items, item)) +// return 0 +// +// return 1 +//} +// +///* +// * Append a pair of a key and a value to a mapping node. +// */ +// +//YAML_DECLARE(int) +//yaml_document_append_mapping_pair(document *yaml_document_t, +// mapping int, key int, value int) +//{ +// struct { +// error yaml_error_type_t +// } context +// +// pair yaml_node_pair_t +// +// assert(document) // Non-NULL document is required. +// assert(mapping > 0 +// && document.nodes.start + mapping <= document.nodes.top) +// // Valid mapping id is required. +// assert(document.nodes.start[mapping-1].type == YAML_MAPPING_NODE) +// // A mapping node is required. +// assert(key > 0 && document.nodes.start + key <= document.nodes.top) +// // Valid key id is required. +// assert(value > 0 && document.nodes.start + value <= document.nodes.top) +// // Valid value id is required. +// +// pair.key = key +// pair.value = value +// +// if (!PUSH(&context, +// document.nodes.start[mapping-1].data.mapping.pairs, pair)) +// return 0 +// +// return 1 +//} +// +// diff --git a/tests/vendor/gopkg.in/yaml.v3/decode.go b/tests/vendor/gopkg.in/yaml.v3/decode.go new file mode 100644 index 000000000..0173b6982 --- /dev/null +++ b/tests/vendor/gopkg.in/yaml.v3/decode.go @@ -0,0 +1,1000 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package yaml + +import ( + "encoding" + "encoding/base64" + "fmt" + "io" + "math" + "reflect" + "strconv" + "time" +) + +// ---------------------------------------------------------------------------- +// Parser, produces a node tree out of a libyaml event stream. + +type parser struct { + parser yaml_parser_t + event yaml_event_t + doc *Node + anchors map[string]*Node + doneInit bool + textless bool +} + +func newParser(b []byte) *parser { + p := parser{} + if !yaml_parser_initialize(&p.parser) { + panic("failed to initialize YAML emitter") + } + if len(b) == 0 { + b = []byte{'\n'} + } + yaml_parser_set_input_string(&p.parser, b) + return &p +} + +func newParserFromReader(r io.Reader) *parser { + p := parser{} + if !yaml_parser_initialize(&p.parser) { + panic("failed to initialize YAML emitter") + } + yaml_parser_set_input_reader(&p.parser, r) + return &p +} + +func (p *parser) init() { + if p.doneInit { + return + } + p.anchors = make(map[string]*Node) + p.expect(yaml_STREAM_START_EVENT) + p.doneInit = true +} + +func (p *parser) destroy() { + if p.event.typ != yaml_NO_EVENT { + yaml_event_delete(&p.event) + } + yaml_parser_delete(&p.parser) +} + +// expect consumes an event from the event stream and +// checks that it's of the expected type. +func (p *parser) expect(e yaml_event_type_t) { + if p.event.typ == yaml_NO_EVENT { + if !yaml_parser_parse(&p.parser, &p.event) { + p.fail() + } + } + if p.event.typ == yaml_STREAM_END_EVENT { + failf("attempted to go past the end of stream; corrupted value?") + } + if p.event.typ != e { + p.parser.problem = fmt.Sprintf("expected %s event but got %s", e, p.event.typ) + p.fail() + } + yaml_event_delete(&p.event) + p.event.typ = yaml_NO_EVENT +} + +// peek peeks at the next event in the event stream, +// puts the results into p.event and returns the event type. +func (p *parser) peek() yaml_event_type_t { + if p.event.typ != yaml_NO_EVENT { + return p.event.typ + } + // It's curious choice from the underlying API to generally return a + // positive result on success, but on this case return true in an error + // scenario. This was the source of bugs in the past (issue #666). + if !yaml_parser_parse(&p.parser, &p.event) || p.parser.error != yaml_NO_ERROR { + p.fail() + } + return p.event.typ +} + +func (p *parser) fail() { + var where string + var line int + if p.parser.context_mark.line != 0 { + line = p.parser.context_mark.line + // Scanner errors don't iterate line before returning error + if p.parser.error == yaml_SCANNER_ERROR { + line++ + } + } else if p.parser.problem_mark.line != 0 { + line = p.parser.problem_mark.line + // Scanner errors don't iterate line before returning error + if p.parser.error == yaml_SCANNER_ERROR { + line++ + } + } + if line != 0 { + where = "line " + strconv.Itoa(line) + ": " + } + var msg string + if len(p.parser.problem) > 0 { + msg = p.parser.problem + } else { + msg = "unknown problem parsing YAML content" + } + failf("%s%s", where, msg) +} + +func (p *parser) anchor(n *Node, anchor []byte) { + if anchor != nil { + n.Anchor = string(anchor) + p.anchors[n.Anchor] = n + } +} + +func (p *parser) parse() *Node { + p.init() + switch p.peek() { + case yaml_SCALAR_EVENT: + return p.scalar() + case yaml_ALIAS_EVENT: + return p.alias() + case yaml_MAPPING_START_EVENT: + return p.mapping() + case yaml_SEQUENCE_START_EVENT: + return p.sequence() + case yaml_DOCUMENT_START_EVENT: + return p.document() + case yaml_STREAM_END_EVENT: + // Happens when attempting to decode an empty buffer. + return nil + case yaml_TAIL_COMMENT_EVENT: + panic("internal error: unexpected tail comment event (please report)") + default: + panic("internal error: attempted to parse unknown event (please report): " + p.event.typ.String()) + } +} + +func (p *parser) node(kind Kind, defaultTag, tag, value string) *Node { + var style Style + if tag != "" && tag != "!" { + tag = shortTag(tag) + style = TaggedStyle + } else if defaultTag != "" { + tag = defaultTag + } else if kind == ScalarNode { + tag, _ = resolve("", value) + } + n := &Node{ + Kind: kind, + Tag: tag, + Value: value, + Style: style, + } + if !p.textless { + n.Line = p.event.start_mark.line + 1 + n.Column = p.event.start_mark.column + 1 + n.HeadComment = string(p.event.head_comment) + n.LineComment = string(p.event.line_comment) + n.FootComment = string(p.event.foot_comment) + } + return n +} + +func (p *parser) parseChild(parent *Node) *Node { + child := p.parse() + parent.Content = append(parent.Content, child) + return child +} + +func (p *parser) document() *Node { + n := p.node(DocumentNode, "", "", "") + p.doc = n + p.expect(yaml_DOCUMENT_START_EVENT) + p.parseChild(n) + if p.peek() == yaml_DOCUMENT_END_EVENT { + n.FootComment = string(p.event.foot_comment) + } + p.expect(yaml_DOCUMENT_END_EVENT) + return n +} + +func (p *parser) alias() *Node { + n := p.node(AliasNode, "", "", string(p.event.anchor)) + n.Alias = p.anchors[n.Value] + if n.Alias == nil { + failf("unknown anchor '%s' referenced", n.Value) + } + p.expect(yaml_ALIAS_EVENT) + return n +} + +func (p *parser) scalar() *Node { + var parsedStyle = p.event.scalar_style() + var nodeStyle Style + switch { + case parsedStyle&yaml_DOUBLE_QUOTED_SCALAR_STYLE != 0: + nodeStyle = DoubleQuotedStyle + case parsedStyle&yaml_SINGLE_QUOTED_SCALAR_STYLE != 0: + nodeStyle = SingleQuotedStyle + case parsedStyle&yaml_LITERAL_SCALAR_STYLE != 0: + nodeStyle = LiteralStyle + case parsedStyle&yaml_FOLDED_SCALAR_STYLE != 0: + nodeStyle = FoldedStyle + } + var nodeValue = string(p.event.value) + var nodeTag = string(p.event.tag) + var defaultTag string + if nodeStyle == 0 { + if nodeValue == "<<" { + defaultTag = mergeTag + } + } else { + defaultTag = strTag + } + n := p.node(ScalarNode, defaultTag, nodeTag, nodeValue) + n.Style |= nodeStyle + p.anchor(n, p.event.anchor) + p.expect(yaml_SCALAR_EVENT) + return n +} + +func (p *parser) sequence() *Node { + n := p.node(SequenceNode, seqTag, string(p.event.tag), "") + if p.event.sequence_style()&yaml_FLOW_SEQUENCE_STYLE != 0 { + n.Style |= FlowStyle + } + p.anchor(n, p.event.anchor) + p.expect(yaml_SEQUENCE_START_EVENT) + for p.peek() != yaml_SEQUENCE_END_EVENT { + p.parseChild(n) + } + n.LineComment = string(p.event.line_comment) + n.FootComment = string(p.event.foot_comment) + p.expect(yaml_SEQUENCE_END_EVENT) + return n +} + +func (p *parser) mapping() *Node { + n := p.node(MappingNode, mapTag, string(p.event.tag), "") + block := true + if p.event.mapping_style()&yaml_FLOW_MAPPING_STYLE != 0 { + block = false + n.Style |= FlowStyle + } + p.anchor(n, p.event.anchor) + p.expect(yaml_MAPPING_START_EVENT) + for p.peek() != yaml_MAPPING_END_EVENT { + k := p.parseChild(n) + if block && k.FootComment != "" { + // Must be a foot comment for the prior value when being dedented. + if len(n.Content) > 2 { + n.Content[len(n.Content)-3].FootComment = k.FootComment + k.FootComment = "" + } + } + v := p.parseChild(n) + if k.FootComment == "" && v.FootComment != "" { + k.FootComment = v.FootComment + v.FootComment = "" + } + if p.peek() == yaml_TAIL_COMMENT_EVENT { + if k.FootComment == "" { + k.FootComment = string(p.event.foot_comment) + } + p.expect(yaml_TAIL_COMMENT_EVENT) + } + } + n.LineComment = string(p.event.line_comment) + n.FootComment = string(p.event.foot_comment) + if n.Style&FlowStyle == 0 && n.FootComment != "" && len(n.Content) > 1 { + n.Content[len(n.Content)-2].FootComment = n.FootComment + n.FootComment = "" + } + p.expect(yaml_MAPPING_END_EVENT) + return n +} + +// ---------------------------------------------------------------------------- +// Decoder, unmarshals a node into a provided value. + +type decoder struct { + doc *Node + aliases map[*Node]bool + terrors []string + + stringMapType reflect.Type + generalMapType reflect.Type + + knownFields bool + uniqueKeys bool + decodeCount int + aliasCount int + aliasDepth int + + mergedFields map[interface{}]bool +} + +var ( + nodeType = reflect.TypeOf(Node{}) + durationType = reflect.TypeOf(time.Duration(0)) + stringMapType = reflect.TypeOf(map[string]interface{}{}) + generalMapType = reflect.TypeOf(map[interface{}]interface{}{}) + ifaceType = generalMapType.Elem() + timeType = reflect.TypeOf(time.Time{}) + ptrTimeType = reflect.TypeOf(&time.Time{}) +) + +func newDecoder() *decoder { + d := &decoder{ + stringMapType: stringMapType, + generalMapType: generalMapType, + uniqueKeys: true, + } + d.aliases = make(map[*Node]bool) + return d +} + +func (d *decoder) terror(n *Node, tag string, out reflect.Value) { + if n.Tag != "" { + tag = n.Tag + } + value := n.Value + if tag != seqTag && tag != mapTag { + if len(value) > 10 { + value = " `" + value[:7] + "...`" + } else { + value = " `" + value + "`" + } + } + d.terrors = append(d.terrors, fmt.Sprintf("line %d: cannot unmarshal %s%s into %s", n.Line, shortTag(tag), value, out.Type())) +} + +func (d *decoder) callUnmarshaler(n *Node, u Unmarshaler) (good bool) { + err := u.UnmarshalYAML(n) + if e, ok := err.(*TypeError); ok { + d.terrors = append(d.terrors, e.Errors...) + return false + } + if err != nil { + fail(err) + } + return true +} + +func (d *decoder) callObsoleteUnmarshaler(n *Node, u obsoleteUnmarshaler) (good bool) { + terrlen := len(d.terrors) + err := u.UnmarshalYAML(func(v interface{}) (err error) { + defer handleErr(&err) + d.unmarshal(n, reflect.ValueOf(v)) + if len(d.terrors) > terrlen { + issues := d.terrors[terrlen:] + d.terrors = d.terrors[:terrlen] + return &TypeError{issues} + } + return nil + }) + if e, ok := err.(*TypeError); ok { + d.terrors = append(d.terrors, e.Errors...) + return false + } + if err != nil { + fail(err) + } + return true +} + +// d.prepare initializes and dereferences pointers and calls UnmarshalYAML +// if a value is found to implement it. +// It returns the initialized and dereferenced out value, whether +// unmarshalling was already done by UnmarshalYAML, and if so whether +// its types unmarshalled appropriately. +// +// If n holds a null value, prepare returns before doing anything. +func (d *decoder) prepare(n *Node, out reflect.Value) (newout reflect.Value, unmarshaled, good bool) { + if n.ShortTag() == nullTag { + return out, false, false + } + again := true + for again { + again = false + if out.Kind() == reflect.Ptr { + if out.IsNil() { + out.Set(reflect.New(out.Type().Elem())) + } + out = out.Elem() + again = true + } + if out.CanAddr() { + outi := out.Addr().Interface() + if u, ok := outi.(Unmarshaler); ok { + good = d.callUnmarshaler(n, u) + return out, true, good + } + if u, ok := outi.(obsoleteUnmarshaler); ok { + good = d.callObsoleteUnmarshaler(n, u) + return out, true, good + } + } + } + return out, false, false +} + +func (d *decoder) fieldByIndex(n *Node, v reflect.Value, index []int) (field reflect.Value) { + if n.ShortTag() == nullTag { + return reflect.Value{} + } + for _, num := range index { + for { + if v.Kind() == reflect.Ptr { + if v.IsNil() { + v.Set(reflect.New(v.Type().Elem())) + } + v = v.Elem() + continue + } + break + } + v = v.Field(num) + } + return v +} + +const ( + // 400,000 decode operations is ~500kb of dense object declarations, or + // ~5kb of dense object declarations with 10000% alias expansion + alias_ratio_range_low = 400000 + + // 4,000,000 decode operations is ~5MB of dense object declarations, or + // ~4.5MB of dense object declarations with 10% alias expansion + alias_ratio_range_high = 4000000 + + // alias_ratio_range is the range over which we scale allowed alias ratios + alias_ratio_range = float64(alias_ratio_range_high - alias_ratio_range_low) +) + +func allowedAliasRatio(decodeCount int) float64 { + switch { + case decodeCount <= alias_ratio_range_low: + // allow 99% to come from alias expansion for small-to-medium documents + return 0.99 + case decodeCount >= alias_ratio_range_high: + // allow 10% to come from alias expansion for very large documents + return 0.10 + default: + // scale smoothly from 99% down to 10% over the range. + // this maps to 396,000 - 400,000 allowed alias-driven decodes over the range. + // 400,000 decode operations is ~100MB of allocations in worst-case scenarios (single-item maps). + return 0.99 - 0.89*(float64(decodeCount-alias_ratio_range_low)/alias_ratio_range) + } +} + +func (d *decoder) unmarshal(n *Node, out reflect.Value) (good bool) { + d.decodeCount++ + if d.aliasDepth > 0 { + d.aliasCount++ + } + if d.aliasCount > 100 && d.decodeCount > 1000 && float64(d.aliasCount)/float64(d.decodeCount) > allowedAliasRatio(d.decodeCount) { + failf("document contains excessive aliasing") + } + if out.Type() == nodeType { + out.Set(reflect.ValueOf(n).Elem()) + return true + } + switch n.Kind { + case DocumentNode: + return d.document(n, out) + case AliasNode: + return d.alias(n, out) + } + out, unmarshaled, good := d.prepare(n, out) + if unmarshaled { + return good + } + switch n.Kind { + case ScalarNode: + good = d.scalar(n, out) + case MappingNode: + good = d.mapping(n, out) + case SequenceNode: + good = d.sequence(n, out) + case 0: + if n.IsZero() { + return d.null(out) + } + fallthrough + default: + failf("cannot decode node with unknown kind %d", n.Kind) + } + return good +} + +func (d *decoder) document(n *Node, out reflect.Value) (good bool) { + if len(n.Content) == 1 { + d.doc = n + d.unmarshal(n.Content[0], out) + return true + } + return false +} + +func (d *decoder) alias(n *Node, out reflect.Value) (good bool) { + if d.aliases[n] { + // TODO this could actually be allowed in some circumstances. + failf("anchor '%s' value contains itself", n.Value) + } + d.aliases[n] = true + d.aliasDepth++ + good = d.unmarshal(n.Alias, out) + d.aliasDepth-- + delete(d.aliases, n) + return good +} + +var zeroValue reflect.Value + +func resetMap(out reflect.Value) { + for _, k := range out.MapKeys() { + out.SetMapIndex(k, zeroValue) + } +} + +func (d *decoder) null(out reflect.Value) bool { + if out.CanAddr() { + switch out.Kind() { + case reflect.Interface, reflect.Ptr, reflect.Map, reflect.Slice: + out.Set(reflect.Zero(out.Type())) + return true + } + } + return false +} + +func (d *decoder) scalar(n *Node, out reflect.Value) bool { + var tag string + var resolved interface{} + if n.indicatedString() { + tag = strTag + resolved = n.Value + } else { + tag, resolved = resolve(n.Tag, n.Value) + if tag == binaryTag { + data, err := base64.StdEncoding.DecodeString(resolved.(string)) + if err != nil { + failf("!!binary value contains invalid base64 data") + } + resolved = string(data) + } + } + if resolved == nil { + return d.null(out) + } + if resolvedv := reflect.ValueOf(resolved); out.Type() == resolvedv.Type() { + // We've resolved to exactly the type we want, so use that. + out.Set(resolvedv) + return true + } + // Perhaps we can use the value as a TextUnmarshaler to + // set its value. + if out.CanAddr() { + u, ok := out.Addr().Interface().(encoding.TextUnmarshaler) + if ok { + var text []byte + if tag == binaryTag { + text = []byte(resolved.(string)) + } else { + // We let any value be unmarshaled into TextUnmarshaler. + // That might be more lax than we'd like, but the + // TextUnmarshaler itself should bowl out any dubious values. + text = []byte(n.Value) + } + err := u.UnmarshalText(text) + if err != nil { + fail(err) + } + return true + } + } + switch out.Kind() { + case reflect.String: + if tag == binaryTag { + out.SetString(resolved.(string)) + return true + } + out.SetString(n.Value) + return true + case reflect.Interface: + out.Set(reflect.ValueOf(resolved)) + return true + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + // This used to work in v2, but it's very unfriendly. + isDuration := out.Type() == durationType + + switch resolved := resolved.(type) { + case int: + if !isDuration && !out.OverflowInt(int64(resolved)) { + out.SetInt(int64(resolved)) + return true + } + case int64: + if !isDuration && !out.OverflowInt(resolved) { + out.SetInt(resolved) + return true + } + case uint64: + if !isDuration && resolved <= math.MaxInt64 && !out.OverflowInt(int64(resolved)) { + out.SetInt(int64(resolved)) + return true + } + case float64: + if !isDuration && resolved <= math.MaxInt64 && !out.OverflowInt(int64(resolved)) { + out.SetInt(int64(resolved)) + return true + } + case string: + if out.Type() == durationType { + d, err := time.ParseDuration(resolved) + if err == nil { + out.SetInt(int64(d)) + return true + } + } + } + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + switch resolved := resolved.(type) { + case int: + if resolved >= 0 && !out.OverflowUint(uint64(resolved)) { + out.SetUint(uint64(resolved)) + return true + } + case int64: + if resolved >= 0 && !out.OverflowUint(uint64(resolved)) { + out.SetUint(uint64(resolved)) + return true + } + case uint64: + if !out.OverflowUint(uint64(resolved)) { + out.SetUint(uint64(resolved)) + return true + } + case float64: + if resolved <= math.MaxUint64 && !out.OverflowUint(uint64(resolved)) { + out.SetUint(uint64(resolved)) + return true + } + } + case reflect.Bool: + switch resolved := resolved.(type) { + case bool: + out.SetBool(resolved) + return true + case string: + // This offers some compatibility with the 1.1 spec (https://yaml.org/type/bool.html). + // It only works if explicitly attempting to unmarshal into a typed bool value. + switch resolved { + case "y", "Y", "yes", "Yes", "YES", "on", "On", "ON": + out.SetBool(true) + return true + case "n", "N", "no", "No", "NO", "off", "Off", "OFF": + out.SetBool(false) + return true + } + } + case reflect.Float32, reflect.Float64: + switch resolved := resolved.(type) { + case int: + out.SetFloat(float64(resolved)) + return true + case int64: + out.SetFloat(float64(resolved)) + return true + case uint64: + out.SetFloat(float64(resolved)) + return true + case float64: + out.SetFloat(resolved) + return true + } + case reflect.Struct: + if resolvedv := reflect.ValueOf(resolved); out.Type() == resolvedv.Type() { + out.Set(resolvedv) + return true + } + case reflect.Ptr: + panic("yaml internal error: please report the issue") + } + d.terror(n, tag, out) + return false +} + +func settableValueOf(i interface{}) reflect.Value { + v := reflect.ValueOf(i) + sv := reflect.New(v.Type()).Elem() + sv.Set(v) + return sv +} + +func (d *decoder) sequence(n *Node, out reflect.Value) (good bool) { + l := len(n.Content) + + var iface reflect.Value + switch out.Kind() { + case reflect.Slice: + out.Set(reflect.MakeSlice(out.Type(), l, l)) + case reflect.Array: + if l != out.Len() { + failf("invalid array: want %d elements but got %d", out.Len(), l) + } + case reflect.Interface: + // No type hints. Will have to use a generic sequence. + iface = out + out = settableValueOf(make([]interface{}, l)) + default: + d.terror(n, seqTag, out) + return false + } + et := out.Type().Elem() + + j := 0 + for i := 0; i < l; i++ { + e := reflect.New(et).Elem() + if ok := d.unmarshal(n.Content[i], e); ok { + out.Index(j).Set(e) + j++ + } + } + if out.Kind() != reflect.Array { + out.Set(out.Slice(0, j)) + } + if iface.IsValid() { + iface.Set(out) + } + return true +} + +func (d *decoder) mapping(n *Node, out reflect.Value) (good bool) { + l := len(n.Content) + if d.uniqueKeys { + nerrs := len(d.terrors) + for i := 0; i < l; i += 2 { + ni := n.Content[i] + for j := i + 2; j < l; j += 2 { + nj := n.Content[j] + if ni.Kind == nj.Kind && ni.Value == nj.Value { + d.terrors = append(d.terrors, fmt.Sprintf("line %d: mapping key %#v already defined at line %d", nj.Line, nj.Value, ni.Line)) + } + } + } + if len(d.terrors) > nerrs { + return false + } + } + switch out.Kind() { + case reflect.Struct: + return d.mappingStruct(n, out) + case reflect.Map: + // okay + case reflect.Interface: + iface := out + if isStringMap(n) { + out = reflect.MakeMap(d.stringMapType) + } else { + out = reflect.MakeMap(d.generalMapType) + } + iface.Set(out) + default: + d.terror(n, mapTag, out) + return false + } + + outt := out.Type() + kt := outt.Key() + et := outt.Elem() + + stringMapType := d.stringMapType + generalMapType := d.generalMapType + if outt.Elem() == ifaceType { + if outt.Key().Kind() == reflect.String { + d.stringMapType = outt + } else if outt.Key() == ifaceType { + d.generalMapType = outt + } + } + + mergedFields := d.mergedFields + d.mergedFields = nil + + var mergeNode *Node + + mapIsNew := false + if out.IsNil() { + out.Set(reflect.MakeMap(outt)) + mapIsNew = true + } + for i := 0; i < l; i += 2 { + if isMerge(n.Content[i]) { + mergeNode = n.Content[i+1] + continue + } + k := reflect.New(kt).Elem() + if d.unmarshal(n.Content[i], k) { + if mergedFields != nil { + ki := k.Interface() + if mergedFields[ki] { + continue + } + mergedFields[ki] = true + } + kkind := k.Kind() + if kkind == reflect.Interface { + kkind = k.Elem().Kind() + } + if kkind == reflect.Map || kkind == reflect.Slice { + failf("invalid map key: %#v", k.Interface()) + } + e := reflect.New(et).Elem() + if d.unmarshal(n.Content[i+1], e) || n.Content[i+1].ShortTag() == nullTag && (mapIsNew || !out.MapIndex(k).IsValid()) { + out.SetMapIndex(k, e) + } + } + } + + d.mergedFields = mergedFields + if mergeNode != nil { + d.merge(n, mergeNode, out) + } + + d.stringMapType = stringMapType + d.generalMapType = generalMapType + return true +} + +func isStringMap(n *Node) bool { + if n.Kind != MappingNode { + return false + } + l := len(n.Content) + for i := 0; i < l; i += 2 { + shortTag := n.Content[i].ShortTag() + if shortTag != strTag && shortTag != mergeTag { + return false + } + } + return true +} + +func (d *decoder) mappingStruct(n *Node, out reflect.Value) (good bool) { + sinfo, err := getStructInfo(out.Type()) + if err != nil { + panic(err) + } + + var inlineMap reflect.Value + var elemType reflect.Type + if sinfo.InlineMap != -1 { + inlineMap = out.Field(sinfo.InlineMap) + elemType = inlineMap.Type().Elem() + } + + for _, index := range sinfo.InlineUnmarshalers { + field := d.fieldByIndex(n, out, index) + d.prepare(n, field) + } + + mergedFields := d.mergedFields + d.mergedFields = nil + var mergeNode *Node + var doneFields []bool + if d.uniqueKeys { + doneFields = make([]bool, len(sinfo.FieldsList)) + } + name := settableValueOf("") + l := len(n.Content) + for i := 0; i < l; i += 2 { + ni := n.Content[i] + if isMerge(ni) { + mergeNode = n.Content[i+1] + continue + } + if !d.unmarshal(ni, name) { + continue + } + sname := name.String() + if mergedFields != nil { + if mergedFields[sname] { + continue + } + mergedFields[sname] = true + } + if info, ok := sinfo.FieldsMap[sname]; ok { + if d.uniqueKeys { + if doneFields[info.Id] { + d.terrors = append(d.terrors, fmt.Sprintf("line %d: field %s already set in type %s", ni.Line, name.String(), out.Type())) + continue + } + doneFields[info.Id] = true + } + var field reflect.Value + if info.Inline == nil { + field = out.Field(info.Num) + } else { + field = d.fieldByIndex(n, out, info.Inline) + } + d.unmarshal(n.Content[i+1], field) + } else if sinfo.InlineMap != -1 { + if inlineMap.IsNil() { + inlineMap.Set(reflect.MakeMap(inlineMap.Type())) + } + value := reflect.New(elemType).Elem() + d.unmarshal(n.Content[i+1], value) + inlineMap.SetMapIndex(name, value) + } else if d.knownFields { + d.terrors = append(d.terrors, fmt.Sprintf("line %d: field %s not found in type %s", ni.Line, name.String(), out.Type())) + } + } + + d.mergedFields = mergedFields + if mergeNode != nil { + d.merge(n, mergeNode, out) + } + return true +} + +func failWantMap() { + failf("map merge requires map or sequence of maps as the value") +} + +func (d *decoder) merge(parent *Node, merge *Node, out reflect.Value) { + mergedFields := d.mergedFields + if mergedFields == nil { + d.mergedFields = make(map[interface{}]bool) + for i := 0; i < len(parent.Content); i += 2 { + k := reflect.New(ifaceType).Elem() + if d.unmarshal(parent.Content[i], k) { + d.mergedFields[k.Interface()] = true + } + } + } + + switch merge.Kind { + case MappingNode: + d.unmarshal(merge, out) + case AliasNode: + if merge.Alias != nil && merge.Alias.Kind != MappingNode { + failWantMap() + } + d.unmarshal(merge, out) + case SequenceNode: + for i := 0; i < len(merge.Content); i++ { + ni := merge.Content[i] + if ni.Kind == AliasNode { + if ni.Alias != nil && ni.Alias.Kind != MappingNode { + failWantMap() + } + } else if ni.Kind != MappingNode { + failWantMap() + } + d.unmarshal(ni, out) + } + default: + failWantMap() + } + + d.mergedFields = mergedFields +} + +func isMerge(n *Node) bool { + return n.Kind == ScalarNode && n.Value == "<<" && (n.Tag == "" || n.Tag == "!" || shortTag(n.Tag) == mergeTag) +} diff --git a/tests/vendor/gopkg.in/yaml.v3/emitterc.go b/tests/vendor/gopkg.in/yaml.v3/emitterc.go new file mode 100644 index 000000000..0f47c9ca8 --- /dev/null +++ b/tests/vendor/gopkg.in/yaml.v3/emitterc.go @@ -0,0 +1,2020 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// Copyright (c) 2006-2010 Kirill Simonov +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +package yaml + +import ( + "bytes" + "fmt" +) + +// Flush the buffer if needed. +func flush(emitter *yaml_emitter_t) bool { + if emitter.buffer_pos+5 >= len(emitter.buffer) { + return yaml_emitter_flush(emitter) + } + return true +} + +// Put a character to the output buffer. +func put(emitter *yaml_emitter_t, value byte) bool { + if emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) { + return false + } + emitter.buffer[emitter.buffer_pos] = value + emitter.buffer_pos++ + emitter.column++ + return true +} + +// Put a line break to the output buffer. +func put_break(emitter *yaml_emitter_t) bool { + if emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) { + return false + } + switch emitter.line_break { + case yaml_CR_BREAK: + emitter.buffer[emitter.buffer_pos] = '\r' + emitter.buffer_pos += 1 + case yaml_LN_BREAK: + emitter.buffer[emitter.buffer_pos] = '\n' + emitter.buffer_pos += 1 + case yaml_CRLN_BREAK: + emitter.buffer[emitter.buffer_pos+0] = '\r' + emitter.buffer[emitter.buffer_pos+1] = '\n' + emitter.buffer_pos += 2 + default: + panic("unknown line break setting") + } + if emitter.column == 0 { + emitter.space_above = true + } + emitter.column = 0 + emitter.line++ + // [Go] Do this here and below and drop from everywhere else (see commented lines). + emitter.indention = true + return true +} + +// Copy a character from a string into buffer. +func write(emitter *yaml_emitter_t, s []byte, i *int) bool { + if emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) { + return false + } + p := emitter.buffer_pos + w := width(s[*i]) + switch w { + case 4: + emitter.buffer[p+3] = s[*i+3] + fallthrough + case 3: + emitter.buffer[p+2] = s[*i+2] + fallthrough + case 2: + emitter.buffer[p+1] = s[*i+1] + fallthrough + case 1: + emitter.buffer[p+0] = s[*i+0] + default: + panic("unknown character width") + } + emitter.column++ + emitter.buffer_pos += w + *i += w + return true +} + +// Write a whole string into buffer. +func write_all(emitter *yaml_emitter_t, s []byte) bool { + for i := 0; i < len(s); { + if !write(emitter, s, &i) { + return false + } + } + return true +} + +// Copy a line break character from a string into buffer. +func write_break(emitter *yaml_emitter_t, s []byte, i *int) bool { + if s[*i] == '\n' { + if !put_break(emitter) { + return false + } + *i++ + } else { + if !write(emitter, s, i) { + return false + } + if emitter.column == 0 { + emitter.space_above = true + } + emitter.column = 0 + emitter.line++ + // [Go] Do this here and above and drop from everywhere else (see commented lines). + emitter.indention = true + } + return true +} + +// Set an emitter error and return false. +func yaml_emitter_set_emitter_error(emitter *yaml_emitter_t, problem string) bool { + emitter.error = yaml_EMITTER_ERROR + emitter.problem = problem + return false +} + +// Emit an event. +func yaml_emitter_emit(emitter *yaml_emitter_t, event *yaml_event_t) bool { + emitter.events = append(emitter.events, *event) + for !yaml_emitter_need_more_events(emitter) { + event := &emitter.events[emitter.events_head] + if !yaml_emitter_analyze_event(emitter, event) { + return false + } + if !yaml_emitter_state_machine(emitter, event) { + return false + } + yaml_event_delete(event) + emitter.events_head++ + } + return true +} + +// Check if we need to accumulate more events before emitting. +// +// We accumulate extra +// - 1 event for DOCUMENT-START +// - 2 events for SEQUENCE-START +// - 3 events for MAPPING-START +// +func yaml_emitter_need_more_events(emitter *yaml_emitter_t) bool { + if emitter.events_head == len(emitter.events) { + return true + } + var accumulate int + switch emitter.events[emitter.events_head].typ { + case yaml_DOCUMENT_START_EVENT: + accumulate = 1 + break + case yaml_SEQUENCE_START_EVENT: + accumulate = 2 + break + case yaml_MAPPING_START_EVENT: + accumulate = 3 + break + default: + return false + } + if len(emitter.events)-emitter.events_head > accumulate { + return false + } + var level int + for i := emitter.events_head; i < len(emitter.events); i++ { + switch emitter.events[i].typ { + case yaml_STREAM_START_EVENT, yaml_DOCUMENT_START_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT: + level++ + case yaml_STREAM_END_EVENT, yaml_DOCUMENT_END_EVENT, yaml_SEQUENCE_END_EVENT, yaml_MAPPING_END_EVENT: + level-- + } + if level == 0 { + return false + } + } + return true +} + +// Append a directive to the directives stack. +func yaml_emitter_append_tag_directive(emitter *yaml_emitter_t, value *yaml_tag_directive_t, allow_duplicates bool) bool { + for i := 0; i < len(emitter.tag_directives); i++ { + if bytes.Equal(value.handle, emitter.tag_directives[i].handle) { + if allow_duplicates { + return true + } + return yaml_emitter_set_emitter_error(emitter, "duplicate %TAG directive") + } + } + + // [Go] Do we actually need to copy this given garbage collection + // and the lack of deallocating destructors? + tag_copy := yaml_tag_directive_t{ + handle: make([]byte, len(value.handle)), + prefix: make([]byte, len(value.prefix)), + } + copy(tag_copy.handle, value.handle) + copy(tag_copy.prefix, value.prefix) + emitter.tag_directives = append(emitter.tag_directives, tag_copy) + return true +} + +// Increase the indentation level. +func yaml_emitter_increase_indent(emitter *yaml_emitter_t, flow, indentless bool) bool { + emitter.indents = append(emitter.indents, emitter.indent) + if emitter.indent < 0 { + if flow { + emitter.indent = emitter.best_indent + } else { + emitter.indent = 0 + } + } else if !indentless { + // [Go] This was changed so that indentations are more regular. + if emitter.states[len(emitter.states)-1] == yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE { + // The first indent inside a sequence will just skip the "- " indicator. + emitter.indent += 2 + } else { + // Everything else aligns to the chosen indentation. + emitter.indent = emitter.best_indent*((emitter.indent+emitter.best_indent)/emitter.best_indent) + } + } + return true +} + +// State dispatcher. +func yaml_emitter_state_machine(emitter *yaml_emitter_t, event *yaml_event_t) bool { + switch emitter.state { + default: + case yaml_EMIT_STREAM_START_STATE: + return yaml_emitter_emit_stream_start(emitter, event) + + case yaml_EMIT_FIRST_DOCUMENT_START_STATE: + return yaml_emitter_emit_document_start(emitter, event, true) + + case yaml_EMIT_DOCUMENT_START_STATE: + return yaml_emitter_emit_document_start(emitter, event, false) + + case yaml_EMIT_DOCUMENT_CONTENT_STATE: + return yaml_emitter_emit_document_content(emitter, event) + + case yaml_EMIT_DOCUMENT_END_STATE: + return yaml_emitter_emit_document_end(emitter, event) + + case yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE: + return yaml_emitter_emit_flow_sequence_item(emitter, event, true, false) + + case yaml_EMIT_FLOW_SEQUENCE_TRAIL_ITEM_STATE: + return yaml_emitter_emit_flow_sequence_item(emitter, event, false, true) + + case yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE: + return yaml_emitter_emit_flow_sequence_item(emitter, event, false, false) + + case yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE: + return yaml_emitter_emit_flow_mapping_key(emitter, event, true, false) + + case yaml_EMIT_FLOW_MAPPING_TRAIL_KEY_STATE: + return yaml_emitter_emit_flow_mapping_key(emitter, event, false, true) + + case yaml_EMIT_FLOW_MAPPING_KEY_STATE: + return yaml_emitter_emit_flow_mapping_key(emitter, event, false, false) + + case yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE: + return yaml_emitter_emit_flow_mapping_value(emitter, event, true) + + case yaml_EMIT_FLOW_MAPPING_VALUE_STATE: + return yaml_emitter_emit_flow_mapping_value(emitter, event, false) + + case yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE: + return yaml_emitter_emit_block_sequence_item(emitter, event, true) + + case yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE: + return yaml_emitter_emit_block_sequence_item(emitter, event, false) + + case yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE: + return yaml_emitter_emit_block_mapping_key(emitter, event, true) + + case yaml_EMIT_BLOCK_MAPPING_KEY_STATE: + return yaml_emitter_emit_block_mapping_key(emitter, event, false) + + case yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE: + return yaml_emitter_emit_block_mapping_value(emitter, event, true) + + case yaml_EMIT_BLOCK_MAPPING_VALUE_STATE: + return yaml_emitter_emit_block_mapping_value(emitter, event, false) + + case yaml_EMIT_END_STATE: + return yaml_emitter_set_emitter_error(emitter, "expected nothing after STREAM-END") + } + panic("invalid emitter state") +} + +// Expect STREAM-START. +func yaml_emitter_emit_stream_start(emitter *yaml_emitter_t, event *yaml_event_t) bool { + if event.typ != yaml_STREAM_START_EVENT { + return yaml_emitter_set_emitter_error(emitter, "expected STREAM-START") + } + if emitter.encoding == yaml_ANY_ENCODING { + emitter.encoding = event.encoding + if emitter.encoding == yaml_ANY_ENCODING { + emitter.encoding = yaml_UTF8_ENCODING + } + } + if emitter.best_indent < 2 || emitter.best_indent > 9 { + emitter.best_indent = 2 + } + if emitter.best_width >= 0 && emitter.best_width <= emitter.best_indent*2 { + emitter.best_width = 80 + } + if emitter.best_width < 0 { + emitter.best_width = 1<<31 - 1 + } + if emitter.line_break == yaml_ANY_BREAK { + emitter.line_break = yaml_LN_BREAK + } + + emitter.indent = -1 + emitter.line = 0 + emitter.column = 0 + emitter.whitespace = true + emitter.indention = true + emitter.space_above = true + emitter.foot_indent = -1 + + if emitter.encoding != yaml_UTF8_ENCODING { + if !yaml_emitter_write_bom(emitter) { + return false + } + } + emitter.state = yaml_EMIT_FIRST_DOCUMENT_START_STATE + return true +} + +// Expect DOCUMENT-START or STREAM-END. +func yaml_emitter_emit_document_start(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { + + if event.typ == yaml_DOCUMENT_START_EVENT { + + if event.version_directive != nil { + if !yaml_emitter_analyze_version_directive(emitter, event.version_directive) { + return false + } + } + + for i := 0; i < len(event.tag_directives); i++ { + tag_directive := &event.tag_directives[i] + if !yaml_emitter_analyze_tag_directive(emitter, tag_directive) { + return false + } + if !yaml_emitter_append_tag_directive(emitter, tag_directive, false) { + return false + } + } + + for i := 0; i < len(default_tag_directives); i++ { + tag_directive := &default_tag_directives[i] + if !yaml_emitter_append_tag_directive(emitter, tag_directive, true) { + return false + } + } + + implicit := event.implicit + if !first || emitter.canonical { + implicit = false + } + + if emitter.open_ended && (event.version_directive != nil || len(event.tag_directives) > 0) { + if !yaml_emitter_write_indicator(emitter, []byte("..."), true, false, false) { + return false + } + if !yaml_emitter_write_indent(emitter) { + return false + } + } + + if event.version_directive != nil { + implicit = false + if !yaml_emitter_write_indicator(emitter, []byte("%YAML"), true, false, false) { + return false + } + if !yaml_emitter_write_indicator(emitter, []byte("1.1"), true, false, false) { + return false + } + if !yaml_emitter_write_indent(emitter) { + return false + } + } + + if len(event.tag_directives) > 0 { + implicit = false + for i := 0; i < len(event.tag_directives); i++ { + tag_directive := &event.tag_directives[i] + if !yaml_emitter_write_indicator(emitter, []byte("%TAG"), true, false, false) { + return false + } + if !yaml_emitter_write_tag_handle(emitter, tag_directive.handle) { + return false + } + if !yaml_emitter_write_tag_content(emitter, tag_directive.prefix, true) { + return false + } + if !yaml_emitter_write_indent(emitter) { + return false + } + } + } + + if yaml_emitter_check_empty_document(emitter) { + implicit = false + } + if !implicit { + if !yaml_emitter_write_indent(emitter) { + return false + } + if !yaml_emitter_write_indicator(emitter, []byte("---"), true, false, false) { + return false + } + if emitter.canonical || true { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + } + + if len(emitter.head_comment) > 0 { + if !yaml_emitter_process_head_comment(emitter) { + return false + } + if !put_break(emitter) { + return false + } + } + + emitter.state = yaml_EMIT_DOCUMENT_CONTENT_STATE + return true + } + + if event.typ == yaml_STREAM_END_EVENT { + if emitter.open_ended { + if !yaml_emitter_write_indicator(emitter, []byte("..."), true, false, false) { + return false + } + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !yaml_emitter_flush(emitter) { + return false + } + emitter.state = yaml_EMIT_END_STATE + return true + } + + return yaml_emitter_set_emitter_error(emitter, "expected DOCUMENT-START or STREAM-END") +} + +// Expect the root node. +func yaml_emitter_emit_document_content(emitter *yaml_emitter_t, event *yaml_event_t) bool { + emitter.states = append(emitter.states, yaml_EMIT_DOCUMENT_END_STATE) + + if !yaml_emitter_process_head_comment(emitter) { + return false + } + if !yaml_emitter_emit_node(emitter, event, true, false, false, false) { + return false + } + if !yaml_emitter_process_line_comment(emitter) { + return false + } + if !yaml_emitter_process_foot_comment(emitter) { + return false + } + return true +} + +// Expect DOCUMENT-END. +func yaml_emitter_emit_document_end(emitter *yaml_emitter_t, event *yaml_event_t) bool { + if event.typ != yaml_DOCUMENT_END_EVENT { + return yaml_emitter_set_emitter_error(emitter, "expected DOCUMENT-END") + } + // [Go] Force document foot separation. + emitter.foot_indent = 0 + if !yaml_emitter_process_foot_comment(emitter) { + return false + } + emitter.foot_indent = -1 + if !yaml_emitter_write_indent(emitter) { + return false + } + if !event.implicit { + // [Go] Allocate the slice elsewhere. + if !yaml_emitter_write_indicator(emitter, []byte("..."), true, false, false) { + return false + } + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !yaml_emitter_flush(emitter) { + return false + } + emitter.state = yaml_EMIT_DOCUMENT_START_STATE + emitter.tag_directives = emitter.tag_directives[:0] + return true +} + +// Expect a flow item node. +func yaml_emitter_emit_flow_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first, trail bool) bool { + if first { + if !yaml_emitter_write_indicator(emitter, []byte{'['}, true, true, false) { + return false + } + if !yaml_emitter_increase_indent(emitter, true, false) { + return false + } + emitter.flow_level++ + } + + if event.typ == yaml_SEQUENCE_END_EVENT { + if emitter.canonical && !first && !trail { + if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { + return false + } + } + emitter.flow_level-- + emitter.indent = emitter.indents[len(emitter.indents)-1] + emitter.indents = emitter.indents[:len(emitter.indents)-1] + if emitter.column == 0 || emitter.canonical && !first { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !yaml_emitter_write_indicator(emitter, []byte{']'}, false, false, false) { + return false + } + if !yaml_emitter_process_line_comment(emitter) { + return false + } + if !yaml_emitter_process_foot_comment(emitter) { + return false + } + emitter.state = emitter.states[len(emitter.states)-1] + emitter.states = emitter.states[:len(emitter.states)-1] + + return true + } + + if !first && !trail { + if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { + return false + } + } + + if !yaml_emitter_process_head_comment(emitter) { + return false + } + if emitter.column == 0 { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + + if emitter.canonical || emitter.column > emitter.best_width { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if len(emitter.line_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0 { + emitter.states = append(emitter.states, yaml_EMIT_FLOW_SEQUENCE_TRAIL_ITEM_STATE) + } else { + emitter.states = append(emitter.states, yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE) + } + if !yaml_emitter_emit_node(emitter, event, false, true, false, false) { + return false + } + if len(emitter.line_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0 { + if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { + return false + } + } + if !yaml_emitter_process_line_comment(emitter) { + return false + } + if !yaml_emitter_process_foot_comment(emitter) { + return false + } + return true +} + +// Expect a flow key node. +func yaml_emitter_emit_flow_mapping_key(emitter *yaml_emitter_t, event *yaml_event_t, first, trail bool) bool { + if first { + if !yaml_emitter_write_indicator(emitter, []byte{'{'}, true, true, false) { + return false + } + if !yaml_emitter_increase_indent(emitter, true, false) { + return false + } + emitter.flow_level++ + } + + if event.typ == yaml_MAPPING_END_EVENT { + if (emitter.canonical || len(emitter.head_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0) && !first && !trail { + if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { + return false + } + } + if !yaml_emitter_process_head_comment(emitter) { + return false + } + emitter.flow_level-- + emitter.indent = emitter.indents[len(emitter.indents)-1] + emitter.indents = emitter.indents[:len(emitter.indents)-1] + if emitter.canonical && !first { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !yaml_emitter_write_indicator(emitter, []byte{'}'}, false, false, false) { + return false + } + if !yaml_emitter_process_line_comment(emitter) { + return false + } + if !yaml_emitter_process_foot_comment(emitter) { + return false + } + emitter.state = emitter.states[len(emitter.states)-1] + emitter.states = emitter.states[:len(emitter.states)-1] + return true + } + + if !first && !trail { + if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { + return false + } + } + + if !yaml_emitter_process_head_comment(emitter) { + return false + } + + if emitter.column == 0 { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + + if emitter.canonical || emitter.column > emitter.best_width { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + + if !emitter.canonical && yaml_emitter_check_simple_key(emitter) { + emitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE) + return yaml_emitter_emit_node(emitter, event, false, false, true, true) + } + if !yaml_emitter_write_indicator(emitter, []byte{'?'}, true, false, false) { + return false + } + emitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_VALUE_STATE) + return yaml_emitter_emit_node(emitter, event, false, false, true, false) +} + +// Expect a flow value node. +func yaml_emitter_emit_flow_mapping_value(emitter *yaml_emitter_t, event *yaml_event_t, simple bool) bool { + if simple { + if !yaml_emitter_write_indicator(emitter, []byte{':'}, false, false, false) { + return false + } + } else { + if emitter.canonical || emitter.column > emitter.best_width { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !yaml_emitter_write_indicator(emitter, []byte{':'}, true, false, false) { + return false + } + } + if len(emitter.line_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0 { + emitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_TRAIL_KEY_STATE) + } else { + emitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_KEY_STATE) + } + if !yaml_emitter_emit_node(emitter, event, false, false, true, false) { + return false + } + if len(emitter.line_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0 { + if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { + return false + } + } + if !yaml_emitter_process_line_comment(emitter) { + return false + } + if !yaml_emitter_process_foot_comment(emitter) { + return false + } + return true +} + +// Expect a block item node. +func yaml_emitter_emit_block_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { + if first { + if !yaml_emitter_increase_indent(emitter, false, false) { + return false + } + } + if event.typ == yaml_SEQUENCE_END_EVENT { + emitter.indent = emitter.indents[len(emitter.indents)-1] + emitter.indents = emitter.indents[:len(emitter.indents)-1] + emitter.state = emitter.states[len(emitter.states)-1] + emitter.states = emitter.states[:len(emitter.states)-1] + return true + } + if !yaml_emitter_process_head_comment(emitter) { + return false + } + if !yaml_emitter_write_indent(emitter) { + return false + } + if !yaml_emitter_write_indicator(emitter, []byte{'-'}, true, false, true) { + return false + } + emitter.states = append(emitter.states, yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE) + if !yaml_emitter_emit_node(emitter, event, false, true, false, false) { + return false + } + if !yaml_emitter_process_line_comment(emitter) { + return false + } + if !yaml_emitter_process_foot_comment(emitter) { + return false + } + return true +} + +// Expect a block key node. +func yaml_emitter_emit_block_mapping_key(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { + if first { + if !yaml_emitter_increase_indent(emitter, false, false) { + return false + } + } + if !yaml_emitter_process_head_comment(emitter) { + return false + } + if event.typ == yaml_MAPPING_END_EVENT { + emitter.indent = emitter.indents[len(emitter.indents)-1] + emitter.indents = emitter.indents[:len(emitter.indents)-1] + emitter.state = emitter.states[len(emitter.states)-1] + emitter.states = emitter.states[:len(emitter.states)-1] + return true + } + if !yaml_emitter_write_indent(emitter) { + return false + } + if len(emitter.line_comment) > 0 { + // [Go] A line comment was provided for the key. That's unusual as the + // scanner associates line comments with the value. Either way, + // save the line comment and render it appropriately later. + emitter.key_line_comment = emitter.line_comment + emitter.line_comment = nil + } + if yaml_emitter_check_simple_key(emitter) { + emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE) + return yaml_emitter_emit_node(emitter, event, false, false, true, true) + } + if !yaml_emitter_write_indicator(emitter, []byte{'?'}, true, false, true) { + return false + } + emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_VALUE_STATE) + return yaml_emitter_emit_node(emitter, event, false, false, true, false) +} + +// Expect a block value node. +func yaml_emitter_emit_block_mapping_value(emitter *yaml_emitter_t, event *yaml_event_t, simple bool) bool { + if simple { + if !yaml_emitter_write_indicator(emitter, []byte{':'}, false, false, false) { + return false + } + } else { + if !yaml_emitter_write_indent(emitter) { + return false + } + if !yaml_emitter_write_indicator(emitter, []byte{':'}, true, false, true) { + return false + } + } + if len(emitter.key_line_comment) > 0 { + // [Go] Line comments are generally associated with the value, but when there's + // no value on the same line as a mapping key they end up attached to the + // key itself. + if event.typ == yaml_SCALAR_EVENT { + if len(emitter.line_comment) == 0 { + // A scalar is coming and it has no line comments by itself yet, + // so just let it handle the line comment as usual. If it has a + // line comment, we can't have both so the one from the key is lost. + emitter.line_comment = emitter.key_line_comment + emitter.key_line_comment = nil + } + } else if event.sequence_style() != yaml_FLOW_SEQUENCE_STYLE && (event.typ == yaml_MAPPING_START_EVENT || event.typ == yaml_SEQUENCE_START_EVENT) { + // An indented block follows, so write the comment right now. + emitter.line_comment, emitter.key_line_comment = emitter.key_line_comment, emitter.line_comment + if !yaml_emitter_process_line_comment(emitter) { + return false + } + emitter.line_comment, emitter.key_line_comment = emitter.key_line_comment, emitter.line_comment + } + } + emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_KEY_STATE) + if !yaml_emitter_emit_node(emitter, event, false, false, true, false) { + return false + } + if !yaml_emitter_process_line_comment(emitter) { + return false + } + if !yaml_emitter_process_foot_comment(emitter) { + return false + } + return true +} + +func yaml_emitter_silent_nil_event(emitter *yaml_emitter_t, event *yaml_event_t) bool { + return event.typ == yaml_SCALAR_EVENT && event.implicit && !emitter.canonical && len(emitter.scalar_data.value) == 0 +} + +// Expect a node. +func yaml_emitter_emit_node(emitter *yaml_emitter_t, event *yaml_event_t, + root bool, sequence bool, mapping bool, simple_key bool) bool { + + emitter.root_context = root + emitter.sequence_context = sequence + emitter.mapping_context = mapping + emitter.simple_key_context = simple_key + + switch event.typ { + case yaml_ALIAS_EVENT: + return yaml_emitter_emit_alias(emitter, event) + case yaml_SCALAR_EVENT: + return yaml_emitter_emit_scalar(emitter, event) + case yaml_SEQUENCE_START_EVENT: + return yaml_emitter_emit_sequence_start(emitter, event) + case yaml_MAPPING_START_EVENT: + return yaml_emitter_emit_mapping_start(emitter, event) + default: + return yaml_emitter_set_emitter_error(emitter, + fmt.Sprintf("expected SCALAR, SEQUENCE-START, MAPPING-START, or ALIAS, but got %v", event.typ)) + } +} + +// Expect ALIAS. +func yaml_emitter_emit_alias(emitter *yaml_emitter_t, event *yaml_event_t) bool { + if !yaml_emitter_process_anchor(emitter) { + return false + } + emitter.state = emitter.states[len(emitter.states)-1] + emitter.states = emitter.states[:len(emitter.states)-1] + return true +} + +// Expect SCALAR. +func yaml_emitter_emit_scalar(emitter *yaml_emitter_t, event *yaml_event_t) bool { + if !yaml_emitter_select_scalar_style(emitter, event) { + return false + } + if !yaml_emitter_process_anchor(emitter) { + return false + } + if !yaml_emitter_process_tag(emitter) { + return false + } + if !yaml_emitter_increase_indent(emitter, true, false) { + return false + } + if !yaml_emitter_process_scalar(emitter) { + return false + } + emitter.indent = emitter.indents[len(emitter.indents)-1] + emitter.indents = emitter.indents[:len(emitter.indents)-1] + emitter.state = emitter.states[len(emitter.states)-1] + emitter.states = emitter.states[:len(emitter.states)-1] + return true +} + +// Expect SEQUENCE-START. +func yaml_emitter_emit_sequence_start(emitter *yaml_emitter_t, event *yaml_event_t) bool { + if !yaml_emitter_process_anchor(emitter) { + return false + } + if !yaml_emitter_process_tag(emitter) { + return false + } + if emitter.flow_level > 0 || emitter.canonical || event.sequence_style() == yaml_FLOW_SEQUENCE_STYLE || + yaml_emitter_check_empty_sequence(emitter) { + emitter.state = yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE + } else { + emitter.state = yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE + } + return true +} + +// Expect MAPPING-START. +func yaml_emitter_emit_mapping_start(emitter *yaml_emitter_t, event *yaml_event_t) bool { + if !yaml_emitter_process_anchor(emitter) { + return false + } + if !yaml_emitter_process_tag(emitter) { + return false + } + if emitter.flow_level > 0 || emitter.canonical || event.mapping_style() == yaml_FLOW_MAPPING_STYLE || + yaml_emitter_check_empty_mapping(emitter) { + emitter.state = yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE + } else { + emitter.state = yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE + } + return true +} + +// Check if the document content is an empty scalar. +func yaml_emitter_check_empty_document(emitter *yaml_emitter_t) bool { + return false // [Go] Huh? +} + +// Check if the next events represent an empty sequence. +func yaml_emitter_check_empty_sequence(emitter *yaml_emitter_t) bool { + if len(emitter.events)-emitter.events_head < 2 { + return false + } + return emitter.events[emitter.events_head].typ == yaml_SEQUENCE_START_EVENT && + emitter.events[emitter.events_head+1].typ == yaml_SEQUENCE_END_EVENT +} + +// Check if the next events represent an empty mapping. +func yaml_emitter_check_empty_mapping(emitter *yaml_emitter_t) bool { + if len(emitter.events)-emitter.events_head < 2 { + return false + } + return emitter.events[emitter.events_head].typ == yaml_MAPPING_START_EVENT && + emitter.events[emitter.events_head+1].typ == yaml_MAPPING_END_EVENT +} + +// Check if the next node can be expressed as a simple key. +func yaml_emitter_check_simple_key(emitter *yaml_emitter_t) bool { + length := 0 + switch emitter.events[emitter.events_head].typ { + case yaml_ALIAS_EVENT: + length += len(emitter.anchor_data.anchor) + case yaml_SCALAR_EVENT: + if emitter.scalar_data.multiline { + return false + } + length += len(emitter.anchor_data.anchor) + + len(emitter.tag_data.handle) + + len(emitter.tag_data.suffix) + + len(emitter.scalar_data.value) + case yaml_SEQUENCE_START_EVENT: + if !yaml_emitter_check_empty_sequence(emitter) { + return false + } + length += len(emitter.anchor_data.anchor) + + len(emitter.tag_data.handle) + + len(emitter.tag_data.suffix) + case yaml_MAPPING_START_EVENT: + if !yaml_emitter_check_empty_mapping(emitter) { + return false + } + length += len(emitter.anchor_data.anchor) + + len(emitter.tag_data.handle) + + len(emitter.tag_data.suffix) + default: + return false + } + return length <= 128 +} + +// Determine an acceptable scalar style. +func yaml_emitter_select_scalar_style(emitter *yaml_emitter_t, event *yaml_event_t) bool { + + no_tag := len(emitter.tag_data.handle) == 0 && len(emitter.tag_data.suffix) == 0 + if no_tag && !event.implicit && !event.quoted_implicit { + return yaml_emitter_set_emitter_error(emitter, "neither tag nor implicit flags are specified") + } + + style := event.scalar_style() + if style == yaml_ANY_SCALAR_STYLE { + style = yaml_PLAIN_SCALAR_STYLE + } + if emitter.canonical { + style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } + if emitter.simple_key_context && emitter.scalar_data.multiline { + style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } + + if style == yaml_PLAIN_SCALAR_STYLE { + if emitter.flow_level > 0 && !emitter.scalar_data.flow_plain_allowed || + emitter.flow_level == 0 && !emitter.scalar_data.block_plain_allowed { + style = yaml_SINGLE_QUOTED_SCALAR_STYLE + } + if len(emitter.scalar_data.value) == 0 && (emitter.flow_level > 0 || emitter.simple_key_context) { + style = yaml_SINGLE_QUOTED_SCALAR_STYLE + } + if no_tag && !event.implicit { + style = yaml_SINGLE_QUOTED_SCALAR_STYLE + } + } + if style == yaml_SINGLE_QUOTED_SCALAR_STYLE { + if !emitter.scalar_data.single_quoted_allowed { + style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } + } + if style == yaml_LITERAL_SCALAR_STYLE || style == yaml_FOLDED_SCALAR_STYLE { + if !emitter.scalar_data.block_allowed || emitter.flow_level > 0 || emitter.simple_key_context { + style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } + } + + if no_tag && !event.quoted_implicit && style != yaml_PLAIN_SCALAR_STYLE { + emitter.tag_data.handle = []byte{'!'} + } + emitter.scalar_data.style = style + return true +} + +// Write an anchor. +func yaml_emitter_process_anchor(emitter *yaml_emitter_t) bool { + if emitter.anchor_data.anchor == nil { + return true + } + c := []byte{'&'} + if emitter.anchor_data.alias { + c[0] = '*' + } + if !yaml_emitter_write_indicator(emitter, c, true, false, false) { + return false + } + return yaml_emitter_write_anchor(emitter, emitter.anchor_data.anchor) +} + +// Write a tag. +func yaml_emitter_process_tag(emitter *yaml_emitter_t) bool { + if len(emitter.tag_data.handle) == 0 && len(emitter.tag_data.suffix) == 0 { + return true + } + if len(emitter.tag_data.handle) > 0 { + if !yaml_emitter_write_tag_handle(emitter, emitter.tag_data.handle) { + return false + } + if len(emitter.tag_data.suffix) > 0 { + if !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) { + return false + } + } + } else { + // [Go] Allocate these slices elsewhere. + if !yaml_emitter_write_indicator(emitter, []byte("!<"), true, false, false) { + return false + } + if !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) { + return false + } + if !yaml_emitter_write_indicator(emitter, []byte{'>'}, false, false, false) { + return false + } + } + return true +} + +// Write a scalar. +func yaml_emitter_process_scalar(emitter *yaml_emitter_t) bool { + switch emitter.scalar_data.style { + case yaml_PLAIN_SCALAR_STYLE: + return yaml_emitter_write_plain_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context) + + case yaml_SINGLE_QUOTED_SCALAR_STYLE: + return yaml_emitter_write_single_quoted_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context) + + case yaml_DOUBLE_QUOTED_SCALAR_STYLE: + return yaml_emitter_write_double_quoted_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context) + + case yaml_LITERAL_SCALAR_STYLE: + return yaml_emitter_write_literal_scalar(emitter, emitter.scalar_data.value) + + case yaml_FOLDED_SCALAR_STYLE: + return yaml_emitter_write_folded_scalar(emitter, emitter.scalar_data.value) + } + panic("unknown scalar style") +} + +// Write a head comment. +func yaml_emitter_process_head_comment(emitter *yaml_emitter_t) bool { + if len(emitter.tail_comment) > 0 { + if !yaml_emitter_write_indent(emitter) { + return false + } + if !yaml_emitter_write_comment(emitter, emitter.tail_comment) { + return false + } + emitter.tail_comment = emitter.tail_comment[:0] + emitter.foot_indent = emitter.indent + if emitter.foot_indent < 0 { + emitter.foot_indent = 0 + } + } + + if len(emitter.head_comment) == 0 { + return true + } + if !yaml_emitter_write_indent(emitter) { + return false + } + if !yaml_emitter_write_comment(emitter, emitter.head_comment) { + return false + } + emitter.head_comment = emitter.head_comment[:0] + return true +} + +// Write an line comment. +func yaml_emitter_process_line_comment(emitter *yaml_emitter_t) bool { + if len(emitter.line_comment) == 0 { + return true + } + if !emitter.whitespace { + if !put(emitter, ' ') { + return false + } + } + if !yaml_emitter_write_comment(emitter, emitter.line_comment) { + return false + } + emitter.line_comment = emitter.line_comment[:0] + return true +} + +// Write a foot comment. +func yaml_emitter_process_foot_comment(emitter *yaml_emitter_t) bool { + if len(emitter.foot_comment) == 0 { + return true + } + if !yaml_emitter_write_indent(emitter) { + return false + } + if !yaml_emitter_write_comment(emitter, emitter.foot_comment) { + return false + } + emitter.foot_comment = emitter.foot_comment[:0] + emitter.foot_indent = emitter.indent + if emitter.foot_indent < 0 { + emitter.foot_indent = 0 + } + return true +} + +// Check if a %YAML directive is valid. +func yaml_emitter_analyze_version_directive(emitter *yaml_emitter_t, version_directive *yaml_version_directive_t) bool { + if version_directive.major != 1 || version_directive.minor != 1 { + return yaml_emitter_set_emitter_error(emitter, "incompatible %YAML directive") + } + return true +} + +// Check if a %TAG directive is valid. +func yaml_emitter_analyze_tag_directive(emitter *yaml_emitter_t, tag_directive *yaml_tag_directive_t) bool { + handle := tag_directive.handle + prefix := tag_directive.prefix + if len(handle) == 0 { + return yaml_emitter_set_emitter_error(emitter, "tag handle must not be empty") + } + if handle[0] != '!' { + return yaml_emitter_set_emitter_error(emitter, "tag handle must start with '!'") + } + if handle[len(handle)-1] != '!' { + return yaml_emitter_set_emitter_error(emitter, "tag handle must end with '!'") + } + for i := 1; i < len(handle)-1; i += width(handle[i]) { + if !is_alpha(handle, i) { + return yaml_emitter_set_emitter_error(emitter, "tag handle must contain alphanumerical characters only") + } + } + if len(prefix) == 0 { + return yaml_emitter_set_emitter_error(emitter, "tag prefix must not be empty") + } + return true +} + +// Check if an anchor is valid. +func yaml_emitter_analyze_anchor(emitter *yaml_emitter_t, anchor []byte, alias bool) bool { + if len(anchor) == 0 { + problem := "anchor value must not be empty" + if alias { + problem = "alias value must not be empty" + } + return yaml_emitter_set_emitter_error(emitter, problem) + } + for i := 0; i < len(anchor); i += width(anchor[i]) { + if !is_alpha(anchor, i) { + problem := "anchor value must contain alphanumerical characters only" + if alias { + problem = "alias value must contain alphanumerical characters only" + } + return yaml_emitter_set_emitter_error(emitter, problem) + } + } + emitter.anchor_data.anchor = anchor + emitter.anchor_data.alias = alias + return true +} + +// Check if a tag is valid. +func yaml_emitter_analyze_tag(emitter *yaml_emitter_t, tag []byte) bool { + if len(tag) == 0 { + return yaml_emitter_set_emitter_error(emitter, "tag value must not be empty") + } + for i := 0; i < len(emitter.tag_directives); i++ { + tag_directive := &emitter.tag_directives[i] + if bytes.HasPrefix(tag, tag_directive.prefix) { + emitter.tag_data.handle = tag_directive.handle + emitter.tag_data.suffix = tag[len(tag_directive.prefix):] + return true + } + } + emitter.tag_data.suffix = tag + return true +} + +// Check if a scalar is valid. +func yaml_emitter_analyze_scalar(emitter *yaml_emitter_t, value []byte) bool { + var ( + block_indicators = false + flow_indicators = false + line_breaks = false + special_characters = false + tab_characters = false + + leading_space = false + leading_break = false + trailing_space = false + trailing_break = false + break_space = false + space_break = false + + preceded_by_whitespace = false + followed_by_whitespace = false + previous_space = false + previous_break = false + ) + + emitter.scalar_data.value = value + + if len(value) == 0 { + emitter.scalar_data.multiline = false + emitter.scalar_data.flow_plain_allowed = false + emitter.scalar_data.block_plain_allowed = true + emitter.scalar_data.single_quoted_allowed = true + emitter.scalar_data.block_allowed = false + return true + } + + if len(value) >= 3 && ((value[0] == '-' && value[1] == '-' && value[2] == '-') || (value[0] == '.' && value[1] == '.' && value[2] == '.')) { + block_indicators = true + flow_indicators = true + } + + preceded_by_whitespace = true + for i, w := 0, 0; i < len(value); i += w { + w = width(value[i]) + followed_by_whitespace = i+w >= len(value) || is_blank(value, i+w) + + if i == 0 { + switch value[i] { + case '#', ',', '[', ']', '{', '}', '&', '*', '!', '|', '>', '\'', '"', '%', '@', '`': + flow_indicators = true + block_indicators = true + case '?', ':': + flow_indicators = true + if followed_by_whitespace { + block_indicators = true + } + case '-': + if followed_by_whitespace { + flow_indicators = true + block_indicators = true + } + } + } else { + switch value[i] { + case ',', '?', '[', ']', '{', '}': + flow_indicators = true + case ':': + flow_indicators = true + if followed_by_whitespace { + block_indicators = true + } + case '#': + if preceded_by_whitespace { + flow_indicators = true + block_indicators = true + } + } + } + + if value[i] == '\t' { + tab_characters = true + } else if !is_printable(value, i) || !is_ascii(value, i) && !emitter.unicode { + special_characters = true + } + if is_space(value, i) { + if i == 0 { + leading_space = true + } + if i+width(value[i]) == len(value) { + trailing_space = true + } + if previous_break { + break_space = true + } + previous_space = true + previous_break = false + } else if is_break(value, i) { + line_breaks = true + if i == 0 { + leading_break = true + } + if i+width(value[i]) == len(value) { + trailing_break = true + } + if previous_space { + space_break = true + } + previous_space = false + previous_break = true + } else { + previous_space = false + previous_break = false + } + + // [Go]: Why 'z'? Couldn't be the end of the string as that's the loop condition. + preceded_by_whitespace = is_blankz(value, i) + } + + emitter.scalar_data.multiline = line_breaks + emitter.scalar_data.flow_plain_allowed = true + emitter.scalar_data.block_plain_allowed = true + emitter.scalar_data.single_quoted_allowed = true + emitter.scalar_data.block_allowed = true + + if leading_space || leading_break || trailing_space || trailing_break { + emitter.scalar_data.flow_plain_allowed = false + emitter.scalar_data.block_plain_allowed = false + } + if trailing_space { + emitter.scalar_data.block_allowed = false + } + if break_space { + emitter.scalar_data.flow_plain_allowed = false + emitter.scalar_data.block_plain_allowed = false + emitter.scalar_data.single_quoted_allowed = false + } + if space_break || tab_characters || special_characters { + emitter.scalar_data.flow_plain_allowed = false + emitter.scalar_data.block_plain_allowed = false + emitter.scalar_data.single_quoted_allowed = false + } + if space_break || special_characters { + emitter.scalar_data.block_allowed = false + } + if line_breaks { + emitter.scalar_data.flow_plain_allowed = false + emitter.scalar_data.block_plain_allowed = false + } + if flow_indicators { + emitter.scalar_data.flow_plain_allowed = false + } + if block_indicators { + emitter.scalar_data.block_plain_allowed = false + } + return true +} + +// Check if the event data is valid. +func yaml_emitter_analyze_event(emitter *yaml_emitter_t, event *yaml_event_t) bool { + + emitter.anchor_data.anchor = nil + emitter.tag_data.handle = nil + emitter.tag_data.suffix = nil + emitter.scalar_data.value = nil + + if len(event.head_comment) > 0 { + emitter.head_comment = event.head_comment + } + if len(event.line_comment) > 0 { + emitter.line_comment = event.line_comment + } + if len(event.foot_comment) > 0 { + emitter.foot_comment = event.foot_comment + } + if len(event.tail_comment) > 0 { + emitter.tail_comment = event.tail_comment + } + + switch event.typ { + case yaml_ALIAS_EVENT: + if !yaml_emitter_analyze_anchor(emitter, event.anchor, true) { + return false + } + + case yaml_SCALAR_EVENT: + if len(event.anchor) > 0 { + if !yaml_emitter_analyze_anchor(emitter, event.anchor, false) { + return false + } + } + if len(event.tag) > 0 && (emitter.canonical || (!event.implicit && !event.quoted_implicit)) { + if !yaml_emitter_analyze_tag(emitter, event.tag) { + return false + } + } + if !yaml_emitter_analyze_scalar(emitter, event.value) { + return false + } + + case yaml_SEQUENCE_START_EVENT: + if len(event.anchor) > 0 { + if !yaml_emitter_analyze_anchor(emitter, event.anchor, false) { + return false + } + } + if len(event.tag) > 0 && (emitter.canonical || !event.implicit) { + if !yaml_emitter_analyze_tag(emitter, event.tag) { + return false + } + } + + case yaml_MAPPING_START_EVENT: + if len(event.anchor) > 0 { + if !yaml_emitter_analyze_anchor(emitter, event.anchor, false) { + return false + } + } + if len(event.tag) > 0 && (emitter.canonical || !event.implicit) { + if !yaml_emitter_analyze_tag(emitter, event.tag) { + return false + } + } + } + return true +} + +// Write the BOM character. +func yaml_emitter_write_bom(emitter *yaml_emitter_t) bool { + if !flush(emitter) { + return false + } + pos := emitter.buffer_pos + emitter.buffer[pos+0] = '\xEF' + emitter.buffer[pos+1] = '\xBB' + emitter.buffer[pos+2] = '\xBF' + emitter.buffer_pos += 3 + return true +} + +func yaml_emitter_write_indent(emitter *yaml_emitter_t) bool { + indent := emitter.indent + if indent < 0 { + indent = 0 + } + if !emitter.indention || emitter.column > indent || (emitter.column == indent && !emitter.whitespace) { + if !put_break(emitter) { + return false + } + } + if emitter.foot_indent == indent { + if !put_break(emitter) { + return false + } + } + for emitter.column < indent { + if !put(emitter, ' ') { + return false + } + } + emitter.whitespace = true + //emitter.indention = true + emitter.space_above = false + emitter.foot_indent = -1 + return true +} + +func yaml_emitter_write_indicator(emitter *yaml_emitter_t, indicator []byte, need_whitespace, is_whitespace, is_indention bool) bool { + if need_whitespace && !emitter.whitespace { + if !put(emitter, ' ') { + return false + } + } + if !write_all(emitter, indicator) { + return false + } + emitter.whitespace = is_whitespace + emitter.indention = (emitter.indention && is_indention) + emitter.open_ended = false + return true +} + +func yaml_emitter_write_anchor(emitter *yaml_emitter_t, value []byte) bool { + if !write_all(emitter, value) { + return false + } + emitter.whitespace = false + emitter.indention = false + return true +} + +func yaml_emitter_write_tag_handle(emitter *yaml_emitter_t, value []byte) bool { + if !emitter.whitespace { + if !put(emitter, ' ') { + return false + } + } + if !write_all(emitter, value) { + return false + } + emitter.whitespace = false + emitter.indention = false + return true +} + +func yaml_emitter_write_tag_content(emitter *yaml_emitter_t, value []byte, need_whitespace bool) bool { + if need_whitespace && !emitter.whitespace { + if !put(emitter, ' ') { + return false + } + } + for i := 0; i < len(value); { + var must_write bool + switch value[i] { + case ';', '/', '?', ':', '@', '&', '=', '+', '$', ',', '_', '.', '~', '*', '\'', '(', ')', '[', ']': + must_write = true + default: + must_write = is_alpha(value, i) + } + if must_write { + if !write(emitter, value, &i) { + return false + } + } else { + w := width(value[i]) + for k := 0; k < w; k++ { + octet := value[i] + i++ + if !put(emitter, '%') { + return false + } + + c := octet >> 4 + if c < 10 { + c += '0' + } else { + c += 'A' - 10 + } + if !put(emitter, c) { + return false + } + + c = octet & 0x0f + if c < 10 { + c += '0' + } else { + c += 'A' - 10 + } + if !put(emitter, c) { + return false + } + } + } + } + emitter.whitespace = false + emitter.indention = false + return true +} + +func yaml_emitter_write_plain_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool { + if len(value) > 0 && !emitter.whitespace { + if !put(emitter, ' ') { + return false + } + } + + spaces := false + breaks := false + for i := 0; i < len(value); { + if is_space(value, i) { + if allow_breaks && !spaces && emitter.column > emitter.best_width && !is_space(value, i+1) { + if !yaml_emitter_write_indent(emitter) { + return false + } + i += width(value[i]) + } else { + if !write(emitter, value, &i) { + return false + } + } + spaces = true + } else if is_break(value, i) { + if !breaks && value[i] == '\n' { + if !put_break(emitter) { + return false + } + } + if !write_break(emitter, value, &i) { + return false + } + //emitter.indention = true + breaks = true + } else { + if breaks { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !write(emitter, value, &i) { + return false + } + emitter.indention = false + spaces = false + breaks = false + } + } + + if len(value) > 0 { + emitter.whitespace = false + } + emitter.indention = false + if emitter.root_context { + emitter.open_ended = true + } + + return true +} + +func yaml_emitter_write_single_quoted_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool { + + if !yaml_emitter_write_indicator(emitter, []byte{'\''}, true, false, false) { + return false + } + + spaces := false + breaks := false + for i := 0; i < len(value); { + if is_space(value, i) { + if allow_breaks && !spaces && emitter.column > emitter.best_width && i > 0 && i < len(value)-1 && !is_space(value, i+1) { + if !yaml_emitter_write_indent(emitter) { + return false + } + i += width(value[i]) + } else { + if !write(emitter, value, &i) { + return false + } + } + spaces = true + } else if is_break(value, i) { + if !breaks && value[i] == '\n' { + if !put_break(emitter) { + return false + } + } + if !write_break(emitter, value, &i) { + return false + } + //emitter.indention = true + breaks = true + } else { + if breaks { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if value[i] == '\'' { + if !put(emitter, '\'') { + return false + } + } + if !write(emitter, value, &i) { + return false + } + emitter.indention = false + spaces = false + breaks = false + } + } + if !yaml_emitter_write_indicator(emitter, []byte{'\''}, false, false, false) { + return false + } + emitter.whitespace = false + emitter.indention = false + return true +} + +func yaml_emitter_write_double_quoted_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool { + spaces := false + if !yaml_emitter_write_indicator(emitter, []byte{'"'}, true, false, false) { + return false + } + + for i := 0; i < len(value); { + if !is_printable(value, i) || (!emitter.unicode && !is_ascii(value, i)) || + is_bom(value, i) || is_break(value, i) || + value[i] == '"' || value[i] == '\\' { + + octet := value[i] + + var w int + var v rune + switch { + case octet&0x80 == 0x00: + w, v = 1, rune(octet&0x7F) + case octet&0xE0 == 0xC0: + w, v = 2, rune(octet&0x1F) + case octet&0xF0 == 0xE0: + w, v = 3, rune(octet&0x0F) + case octet&0xF8 == 0xF0: + w, v = 4, rune(octet&0x07) + } + for k := 1; k < w; k++ { + octet = value[i+k] + v = (v << 6) + (rune(octet) & 0x3F) + } + i += w + + if !put(emitter, '\\') { + return false + } + + var ok bool + switch v { + case 0x00: + ok = put(emitter, '0') + case 0x07: + ok = put(emitter, 'a') + case 0x08: + ok = put(emitter, 'b') + case 0x09: + ok = put(emitter, 't') + case 0x0A: + ok = put(emitter, 'n') + case 0x0b: + ok = put(emitter, 'v') + case 0x0c: + ok = put(emitter, 'f') + case 0x0d: + ok = put(emitter, 'r') + case 0x1b: + ok = put(emitter, 'e') + case 0x22: + ok = put(emitter, '"') + case 0x5c: + ok = put(emitter, '\\') + case 0x85: + ok = put(emitter, 'N') + case 0xA0: + ok = put(emitter, '_') + case 0x2028: + ok = put(emitter, 'L') + case 0x2029: + ok = put(emitter, 'P') + default: + if v <= 0xFF { + ok = put(emitter, 'x') + w = 2 + } else if v <= 0xFFFF { + ok = put(emitter, 'u') + w = 4 + } else { + ok = put(emitter, 'U') + w = 8 + } + for k := (w - 1) * 4; ok && k >= 0; k -= 4 { + digit := byte((v >> uint(k)) & 0x0F) + if digit < 10 { + ok = put(emitter, digit+'0') + } else { + ok = put(emitter, digit+'A'-10) + } + } + } + if !ok { + return false + } + spaces = false + } else if is_space(value, i) { + if allow_breaks && !spaces && emitter.column > emitter.best_width && i > 0 && i < len(value)-1 { + if !yaml_emitter_write_indent(emitter) { + return false + } + if is_space(value, i+1) { + if !put(emitter, '\\') { + return false + } + } + i += width(value[i]) + } else if !write(emitter, value, &i) { + return false + } + spaces = true + } else { + if !write(emitter, value, &i) { + return false + } + spaces = false + } + } + if !yaml_emitter_write_indicator(emitter, []byte{'"'}, false, false, false) { + return false + } + emitter.whitespace = false + emitter.indention = false + return true +} + +func yaml_emitter_write_block_scalar_hints(emitter *yaml_emitter_t, value []byte) bool { + if is_space(value, 0) || is_break(value, 0) { + indent_hint := []byte{'0' + byte(emitter.best_indent)} + if !yaml_emitter_write_indicator(emitter, indent_hint, false, false, false) { + return false + } + } + + emitter.open_ended = false + + var chomp_hint [1]byte + if len(value) == 0 { + chomp_hint[0] = '-' + } else { + i := len(value) - 1 + for value[i]&0xC0 == 0x80 { + i-- + } + if !is_break(value, i) { + chomp_hint[0] = '-' + } else if i == 0 { + chomp_hint[0] = '+' + emitter.open_ended = true + } else { + i-- + for value[i]&0xC0 == 0x80 { + i-- + } + if is_break(value, i) { + chomp_hint[0] = '+' + emitter.open_ended = true + } + } + } + if chomp_hint[0] != 0 { + if !yaml_emitter_write_indicator(emitter, chomp_hint[:], false, false, false) { + return false + } + } + return true +} + +func yaml_emitter_write_literal_scalar(emitter *yaml_emitter_t, value []byte) bool { + if !yaml_emitter_write_indicator(emitter, []byte{'|'}, true, false, false) { + return false + } + if !yaml_emitter_write_block_scalar_hints(emitter, value) { + return false + } + if !yaml_emitter_process_line_comment(emitter) { + return false + } + //emitter.indention = true + emitter.whitespace = true + breaks := true + for i := 0; i < len(value); { + if is_break(value, i) { + if !write_break(emitter, value, &i) { + return false + } + //emitter.indention = true + breaks = true + } else { + if breaks { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !write(emitter, value, &i) { + return false + } + emitter.indention = false + breaks = false + } + } + + return true +} + +func yaml_emitter_write_folded_scalar(emitter *yaml_emitter_t, value []byte) bool { + if !yaml_emitter_write_indicator(emitter, []byte{'>'}, true, false, false) { + return false + } + if !yaml_emitter_write_block_scalar_hints(emitter, value) { + return false + } + if !yaml_emitter_process_line_comment(emitter) { + return false + } + + //emitter.indention = true + emitter.whitespace = true + + breaks := true + leading_spaces := true + for i := 0; i < len(value); { + if is_break(value, i) { + if !breaks && !leading_spaces && value[i] == '\n' { + k := 0 + for is_break(value, k) { + k += width(value[k]) + } + if !is_blankz(value, k) { + if !put_break(emitter) { + return false + } + } + } + if !write_break(emitter, value, &i) { + return false + } + //emitter.indention = true + breaks = true + } else { + if breaks { + if !yaml_emitter_write_indent(emitter) { + return false + } + leading_spaces = is_blank(value, i) + } + if !breaks && is_space(value, i) && !is_space(value, i+1) && emitter.column > emitter.best_width { + if !yaml_emitter_write_indent(emitter) { + return false + } + i += width(value[i]) + } else { + if !write(emitter, value, &i) { + return false + } + } + emitter.indention = false + breaks = false + } + } + return true +} + +func yaml_emitter_write_comment(emitter *yaml_emitter_t, comment []byte) bool { + breaks := false + pound := false + for i := 0; i < len(comment); { + if is_break(comment, i) { + if !write_break(emitter, comment, &i) { + return false + } + //emitter.indention = true + breaks = true + pound = false + } else { + if breaks && !yaml_emitter_write_indent(emitter) { + return false + } + if !pound { + if comment[i] != '#' && (!put(emitter, '#') || !put(emitter, ' ')) { + return false + } + pound = true + } + if !write(emitter, comment, &i) { + return false + } + emitter.indention = false + breaks = false + } + } + if !breaks && !put_break(emitter) { + return false + } + + emitter.whitespace = true + //emitter.indention = true + return true +} diff --git a/tests/vendor/gopkg.in/yaml.v3/encode.go b/tests/vendor/gopkg.in/yaml.v3/encode.go new file mode 100644 index 000000000..de9e72a3e --- /dev/null +++ b/tests/vendor/gopkg.in/yaml.v3/encode.go @@ -0,0 +1,577 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package yaml + +import ( + "encoding" + "fmt" + "io" + "reflect" + "regexp" + "sort" + "strconv" + "strings" + "time" + "unicode/utf8" +) + +type encoder struct { + emitter yaml_emitter_t + event yaml_event_t + out []byte + flow bool + indent int + doneInit bool +} + +func newEncoder() *encoder { + e := &encoder{} + yaml_emitter_initialize(&e.emitter) + yaml_emitter_set_output_string(&e.emitter, &e.out) + yaml_emitter_set_unicode(&e.emitter, true) + return e +} + +func newEncoderWithWriter(w io.Writer) *encoder { + e := &encoder{} + yaml_emitter_initialize(&e.emitter) + yaml_emitter_set_output_writer(&e.emitter, w) + yaml_emitter_set_unicode(&e.emitter, true) + return e +} + +func (e *encoder) init() { + if e.doneInit { + return + } + if e.indent == 0 { + e.indent = 4 + } + e.emitter.best_indent = e.indent + yaml_stream_start_event_initialize(&e.event, yaml_UTF8_ENCODING) + e.emit() + e.doneInit = true +} + +func (e *encoder) finish() { + e.emitter.open_ended = false + yaml_stream_end_event_initialize(&e.event) + e.emit() +} + +func (e *encoder) destroy() { + yaml_emitter_delete(&e.emitter) +} + +func (e *encoder) emit() { + // This will internally delete the e.event value. + e.must(yaml_emitter_emit(&e.emitter, &e.event)) +} + +func (e *encoder) must(ok bool) { + if !ok { + msg := e.emitter.problem + if msg == "" { + msg = "unknown problem generating YAML content" + } + failf("%s", msg) + } +} + +func (e *encoder) marshalDoc(tag string, in reflect.Value) { + e.init() + var node *Node + if in.IsValid() { + node, _ = in.Interface().(*Node) + } + if node != nil && node.Kind == DocumentNode { + e.nodev(in) + } else { + yaml_document_start_event_initialize(&e.event, nil, nil, true) + e.emit() + e.marshal(tag, in) + yaml_document_end_event_initialize(&e.event, true) + e.emit() + } +} + +func (e *encoder) marshal(tag string, in reflect.Value) { + tag = shortTag(tag) + if !in.IsValid() || in.Kind() == reflect.Ptr && in.IsNil() { + e.nilv() + return + } + iface := in.Interface() + switch value := iface.(type) { + case *Node: + e.nodev(in) + return + case Node: + if !in.CanAddr() { + var n = reflect.New(in.Type()).Elem() + n.Set(in) + in = n + } + e.nodev(in.Addr()) + return + case time.Time: + e.timev(tag, in) + return + case *time.Time: + e.timev(tag, in.Elem()) + return + case time.Duration: + e.stringv(tag, reflect.ValueOf(value.String())) + return + case Marshaler: + v, err := value.MarshalYAML() + if err != nil { + fail(err) + } + if v == nil { + e.nilv() + return + } + e.marshal(tag, reflect.ValueOf(v)) + return + case encoding.TextMarshaler: + text, err := value.MarshalText() + if err != nil { + fail(err) + } + in = reflect.ValueOf(string(text)) + case nil: + e.nilv() + return + } + switch in.Kind() { + case reflect.Interface: + e.marshal(tag, in.Elem()) + case reflect.Map: + e.mapv(tag, in) + case reflect.Ptr: + e.marshal(tag, in.Elem()) + case reflect.Struct: + e.structv(tag, in) + case reflect.Slice, reflect.Array: + e.slicev(tag, in) + case reflect.String: + e.stringv(tag, in) + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + e.intv(tag, in) + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + e.uintv(tag, in) + case reflect.Float32, reflect.Float64: + e.floatv(tag, in) + case reflect.Bool: + e.boolv(tag, in) + default: + panic("cannot marshal type: " + in.Type().String()) + } +} + +func (e *encoder) mapv(tag string, in reflect.Value) { + e.mappingv(tag, func() { + keys := keyList(in.MapKeys()) + sort.Sort(keys) + for _, k := range keys { + e.marshal("", k) + e.marshal("", in.MapIndex(k)) + } + }) +} + +func (e *encoder) fieldByIndex(v reflect.Value, index []int) (field reflect.Value) { + for _, num := range index { + for { + if v.Kind() == reflect.Ptr { + if v.IsNil() { + return reflect.Value{} + } + v = v.Elem() + continue + } + break + } + v = v.Field(num) + } + return v +} + +func (e *encoder) structv(tag string, in reflect.Value) { + sinfo, err := getStructInfo(in.Type()) + if err != nil { + panic(err) + } + e.mappingv(tag, func() { + for _, info := range sinfo.FieldsList { + var value reflect.Value + if info.Inline == nil { + value = in.Field(info.Num) + } else { + value = e.fieldByIndex(in, info.Inline) + if !value.IsValid() { + continue + } + } + if info.OmitEmpty && isZero(value) { + continue + } + e.marshal("", reflect.ValueOf(info.Key)) + e.flow = info.Flow + e.marshal("", value) + } + if sinfo.InlineMap >= 0 { + m := in.Field(sinfo.InlineMap) + if m.Len() > 0 { + e.flow = false + keys := keyList(m.MapKeys()) + sort.Sort(keys) + for _, k := range keys { + if _, found := sinfo.FieldsMap[k.String()]; found { + panic(fmt.Sprintf("cannot have key %q in inlined map: conflicts with struct field", k.String())) + } + e.marshal("", k) + e.flow = false + e.marshal("", m.MapIndex(k)) + } + } + } + }) +} + +func (e *encoder) mappingv(tag string, f func()) { + implicit := tag == "" + style := yaml_BLOCK_MAPPING_STYLE + if e.flow { + e.flow = false + style = yaml_FLOW_MAPPING_STYLE + } + yaml_mapping_start_event_initialize(&e.event, nil, []byte(tag), implicit, style) + e.emit() + f() + yaml_mapping_end_event_initialize(&e.event) + e.emit() +} + +func (e *encoder) slicev(tag string, in reflect.Value) { + implicit := tag == "" + style := yaml_BLOCK_SEQUENCE_STYLE + if e.flow { + e.flow = false + style = yaml_FLOW_SEQUENCE_STYLE + } + e.must(yaml_sequence_start_event_initialize(&e.event, nil, []byte(tag), implicit, style)) + e.emit() + n := in.Len() + for i := 0; i < n; i++ { + e.marshal("", in.Index(i)) + } + e.must(yaml_sequence_end_event_initialize(&e.event)) + e.emit() +} + +// isBase60 returns whether s is in base 60 notation as defined in YAML 1.1. +// +// The base 60 float notation in YAML 1.1 is a terrible idea and is unsupported +// in YAML 1.2 and by this package, but these should be marshalled quoted for +// the time being for compatibility with other parsers. +func isBase60Float(s string) (result bool) { + // Fast path. + if s == "" { + return false + } + c := s[0] + if !(c == '+' || c == '-' || c >= '0' && c <= '9') || strings.IndexByte(s, ':') < 0 { + return false + } + // Do the full match. + return base60float.MatchString(s) +} + +// From http://yaml.org/type/float.html, except the regular expression there +// is bogus. In practice parsers do not enforce the "\.[0-9_]*" suffix. +var base60float = regexp.MustCompile(`^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+(?:\.[0-9_]*)?$`) + +// isOldBool returns whether s is bool notation as defined in YAML 1.1. +// +// We continue to force strings that YAML 1.1 would interpret as booleans to be +// rendered as quotes strings so that the marshalled output valid for YAML 1.1 +// parsing. +func isOldBool(s string) (result bool) { + switch s { + case "y", "Y", "yes", "Yes", "YES", "on", "On", "ON", + "n", "N", "no", "No", "NO", "off", "Off", "OFF": + return true + default: + return false + } +} + +func (e *encoder) stringv(tag string, in reflect.Value) { + var style yaml_scalar_style_t + s := in.String() + canUsePlain := true + switch { + case !utf8.ValidString(s): + if tag == binaryTag { + failf("explicitly tagged !!binary data must be base64-encoded") + } + if tag != "" { + failf("cannot marshal invalid UTF-8 data as %s", shortTag(tag)) + } + // It can't be encoded directly as YAML so use a binary tag + // and encode it as base64. + tag = binaryTag + s = encodeBase64(s) + case tag == "": + // Check to see if it would resolve to a specific + // tag when encoded unquoted. If it doesn't, + // there's no need to quote it. + rtag, _ := resolve("", s) + canUsePlain = rtag == strTag && !(isBase60Float(s) || isOldBool(s)) + } + // Note: it's possible for user code to emit invalid YAML + // if they explicitly specify a tag and a string containing + // text that's incompatible with that tag. + switch { + case strings.Contains(s, "\n"): + if e.flow { + style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } else { + style = yaml_LITERAL_SCALAR_STYLE + } + case canUsePlain: + style = yaml_PLAIN_SCALAR_STYLE + default: + style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } + e.emitScalar(s, "", tag, style, nil, nil, nil, nil) +} + +func (e *encoder) boolv(tag string, in reflect.Value) { + var s string + if in.Bool() { + s = "true" + } else { + s = "false" + } + e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil) +} + +func (e *encoder) intv(tag string, in reflect.Value) { + s := strconv.FormatInt(in.Int(), 10) + e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil) +} + +func (e *encoder) uintv(tag string, in reflect.Value) { + s := strconv.FormatUint(in.Uint(), 10) + e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil) +} + +func (e *encoder) timev(tag string, in reflect.Value) { + t := in.Interface().(time.Time) + s := t.Format(time.RFC3339Nano) + e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil) +} + +func (e *encoder) floatv(tag string, in reflect.Value) { + // Issue #352: When formatting, use the precision of the underlying value + precision := 64 + if in.Kind() == reflect.Float32 { + precision = 32 + } + + s := strconv.FormatFloat(in.Float(), 'g', -1, precision) + switch s { + case "+Inf": + s = ".inf" + case "-Inf": + s = "-.inf" + case "NaN": + s = ".nan" + } + e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil) +} + +func (e *encoder) nilv() { + e.emitScalar("null", "", "", yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil) +} + +func (e *encoder) emitScalar(value, anchor, tag string, style yaml_scalar_style_t, head, line, foot, tail []byte) { + // TODO Kill this function. Replace all initialize calls by their underlining Go literals. + implicit := tag == "" + if !implicit { + tag = longTag(tag) + } + e.must(yaml_scalar_event_initialize(&e.event, []byte(anchor), []byte(tag), []byte(value), implicit, implicit, style)) + e.event.head_comment = head + e.event.line_comment = line + e.event.foot_comment = foot + e.event.tail_comment = tail + e.emit() +} + +func (e *encoder) nodev(in reflect.Value) { + e.node(in.Interface().(*Node), "") +} + +func (e *encoder) node(node *Node, tail string) { + // Zero nodes behave as nil. + if node.Kind == 0 && node.IsZero() { + e.nilv() + return + } + + // If the tag was not explicitly requested, and dropping it won't change the + // implicit tag of the value, don't include it in the presentation. + var tag = node.Tag + var stag = shortTag(tag) + var forceQuoting bool + if tag != "" && node.Style&TaggedStyle == 0 { + if node.Kind == ScalarNode { + if stag == strTag && node.Style&(SingleQuotedStyle|DoubleQuotedStyle|LiteralStyle|FoldedStyle) != 0 { + tag = "" + } else { + rtag, _ := resolve("", node.Value) + if rtag == stag { + tag = "" + } else if stag == strTag { + tag = "" + forceQuoting = true + } + } + } else { + var rtag string + switch node.Kind { + case MappingNode: + rtag = mapTag + case SequenceNode: + rtag = seqTag + } + if rtag == stag { + tag = "" + } + } + } + + switch node.Kind { + case DocumentNode: + yaml_document_start_event_initialize(&e.event, nil, nil, true) + e.event.head_comment = []byte(node.HeadComment) + e.emit() + for _, node := range node.Content { + e.node(node, "") + } + yaml_document_end_event_initialize(&e.event, true) + e.event.foot_comment = []byte(node.FootComment) + e.emit() + + case SequenceNode: + style := yaml_BLOCK_SEQUENCE_STYLE + if node.Style&FlowStyle != 0 { + style = yaml_FLOW_SEQUENCE_STYLE + } + e.must(yaml_sequence_start_event_initialize(&e.event, []byte(node.Anchor), []byte(longTag(tag)), tag == "", style)) + e.event.head_comment = []byte(node.HeadComment) + e.emit() + for _, node := range node.Content { + e.node(node, "") + } + e.must(yaml_sequence_end_event_initialize(&e.event)) + e.event.line_comment = []byte(node.LineComment) + e.event.foot_comment = []byte(node.FootComment) + e.emit() + + case MappingNode: + style := yaml_BLOCK_MAPPING_STYLE + if node.Style&FlowStyle != 0 { + style = yaml_FLOW_MAPPING_STYLE + } + yaml_mapping_start_event_initialize(&e.event, []byte(node.Anchor), []byte(longTag(tag)), tag == "", style) + e.event.tail_comment = []byte(tail) + e.event.head_comment = []byte(node.HeadComment) + e.emit() + + // The tail logic below moves the foot comment of prior keys to the following key, + // since the value for each key may be a nested structure and the foot needs to be + // processed only the entirety of the value is streamed. The last tail is processed + // with the mapping end event. + var tail string + for i := 0; i+1 < len(node.Content); i += 2 { + k := node.Content[i] + foot := k.FootComment + if foot != "" { + kopy := *k + kopy.FootComment = "" + k = &kopy + } + e.node(k, tail) + tail = foot + + v := node.Content[i+1] + e.node(v, "") + } + + yaml_mapping_end_event_initialize(&e.event) + e.event.tail_comment = []byte(tail) + e.event.line_comment = []byte(node.LineComment) + e.event.foot_comment = []byte(node.FootComment) + e.emit() + + case AliasNode: + yaml_alias_event_initialize(&e.event, []byte(node.Value)) + e.event.head_comment = []byte(node.HeadComment) + e.event.line_comment = []byte(node.LineComment) + e.event.foot_comment = []byte(node.FootComment) + e.emit() + + case ScalarNode: + value := node.Value + if !utf8.ValidString(value) { + if stag == binaryTag { + failf("explicitly tagged !!binary data must be base64-encoded") + } + if stag != "" { + failf("cannot marshal invalid UTF-8 data as %s", stag) + } + // It can't be encoded directly as YAML so use a binary tag + // and encode it as base64. + tag = binaryTag + value = encodeBase64(value) + } + + style := yaml_PLAIN_SCALAR_STYLE + switch { + case node.Style&DoubleQuotedStyle != 0: + style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + case node.Style&SingleQuotedStyle != 0: + style = yaml_SINGLE_QUOTED_SCALAR_STYLE + case node.Style&LiteralStyle != 0: + style = yaml_LITERAL_SCALAR_STYLE + case node.Style&FoldedStyle != 0: + style = yaml_FOLDED_SCALAR_STYLE + case strings.Contains(value, "\n"): + style = yaml_LITERAL_SCALAR_STYLE + case forceQuoting: + style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } + + e.emitScalar(value, node.Anchor, tag, style, []byte(node.HeadComment), []byte(node.LineComment), []byte(node.FootComment), []byte(tail)) + default: + failf("cannot encode node with unknown kind %d", node.Kind) + } +} diff --git a/tests/vendor/gopkg.in/yaml.v3/parserc.go b/tests/vendor/gopkg.in/yaml.v3/parserc.go new file mode 100644 index 000000000..268558a0d --- /dev/null +++ b/tests/vendor/gopkg.in/yaml.v3/parserc.go @@ -0,0 +1,1258 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// Copyright (c) 2006-2010 Kirill Simonov +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +package yaml + +import ( + "bytes" +) + +// The parser implements the following grammar: +// +// stream ::= STREAM-START implicit_document? explicit_document* STREAM-END +// implicit_document ::= block_node DOCUMENT-END* +// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* +// block_node_or_indentless_sequence ::= +// ALIAS +// | properties (block_content | indentless_block_sequence)? +// | block_content +// | indentless_block_sequence +// block_node ::= ALIAS +// | properties block_content? +// | block_content +// flow_node ::= ALIAS +// | properties flow_content? +// | flow_content +// properties ::= TAG ANCHOR? | ANCHOR TAG? +// block_content ::= block_collection | flow_collection | SCALAR +// flow_content ::= flow_collection | SCALAR +// block_collection ::= block_sequence | block_mapping +// flow_collection ::= flow_sequence | flow_mapping +// block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END +// indentless_sequence ::= (BLOCK-ENTRY block_node?)+ +// block_mapping ::= BLOCK-MAPPING_START +// ((KEY block_node_or_indentless_sequence?)? +// (VALUE block_node_or_indentless_sequence?)?)* +// BLOCK-END +// flow_sequence ::= FLOW-SEQUENCE-START +// (flow_sequence_entry FLOW-ENTRY)* +// flow_sequence_entry? +// FLOW-SEQUENCE-END +// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// flow_mapping ::= FLOW-MAPPING-START +// (flow_mapping_entry FLOW-ENTRY)* +// flow_mapping_entry? +// FLOW-MAPPING-END +// flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? + +// Peek the next token in the token queue. +func peek_token(parser *yaml_parser_t) *yaml_token_t { + if parser.token_available || yaml_parser_fetch_more_tokens(parser) { + token := &parser.tokens[parser.tokens_head] + yaml_parser_unfold_comments(parser, token) + return token + } + return nil +} + +// yaml_parser_unfold_comments walks through the comments queue and joins all +// comments behind the position of the provided token into the respective +// top-level comment slices in the parser. +func yaml_parser_unfold_comments(parser *yaml_parser_t, token *yaml_token_t) { + for parser.comments_head < len(parser.comments) && token.start_mark.index >= parser.comments[parser.comments_head].token_mark.index { + comment := &parser.comments[parser.comments_head] + if len(comment.head) > 0 { + if token.typ == yaml_BLOCK_END_TOKEN { + // No heads on ends, so keep comment.head for a follow up token. + break + } + if len(parser.head_comment) > 0 { + parser.head_comment = append(parser.head_comment, '\n') + } + parser.head_comment = append(parser.head_comment, comment.head...) + } + if len(comment.foot) > 0 { + if len(parser.foot_comment) > 0 { + parser.foot_comment = append(parser.foot_comment, '\n') + } + parser.foot_comment = append(parser.foot_comment, comment.foot...) + } + if len(comment.line) > 0 { + if len(parser.line_comment) > 0 { + parser.line_comment = append(parser.line_comment, '\n') + } + parser.line_comment = append(parser.line_comment, comment.line...) + } + *comment = yaml_comment_t{} + parser.comments_head++ + } +} + +// Remove the next token from the queue (must be called after peek_token). +func skip_token(parser *yaml_parser_t) { + parser.token_available = false + parser.tokens_parsed++ + parser.stream_end_produced = parser.tokens[parser.tokens_head].typ == yaml_STREAM_END_TOKEN + parser.tokens_head++ +} + +// Get the next event. +func yaml_parser_parse(parser *yaml_parser_t, event *yaml_event_t) bool { + // Erase the event object. + *event = yaml_event_t{} + + // No events after the end of the stream or error. + if parser.stream_end_produced || parser.error != yaml_NO_ERROR || parser.state == yaml_PARSE_END_STATE { + return true + } + + // Generate the next event. + return yaml_parser_state_machine(parser, event) +} + +// Set parser error. +func yaml_parser_set_parser_error(parser *yaml_parser_t, problem string, problem_mark yaml_mark_t) bool { + parser.error = yaml_PARSER_ERROR + parser.problem = problem + parser.problem_mark = problem_mark + return false +} + +func yaml_parser_set_parser_error_context(parser *yaml_parser_t, context string, context_mark yaml_mark_t, problem string, problem_mark yaml_mark_t) bool { + parser.error = yaml_PARSER_ERROR + parser.context = context + parser.context_mark = context_mark + parser.problem = problem + parser.problem_mark = problem_mark + return false +} + +// State dispatcher. +func yaml_parser_state_machine(parser *yaml_parser_t, event *yaml_event_t) bool { + //trace("yaml_parser_state_machine", "state:", parser.state.String()) + + switch parser.state { + case yaml_PARSE_STREAM_START_STATE: + return yaml_parser_parse_stream_start(parser, event) + + case yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE: + return yaml_parser_parse_document_start(parser, event, true) + + case yaml_PARSE_DOCUMENT_START_STATE: + return yaml_parser_parse_document_start(parser, event, false) + + case yaml_PARSE_DOCUMENT_CONTENT_STATE: + return yaml_parser_parse_document_content(parser, event) + + case yaml_PARSE_DOCUMENT_END_STATE: + return yaml_parser_parse_document_end(parser, event) + + case yaml_PARSE_BLOCK_NODE_STATE: + return yaml_parser_parse_node(parser, event, true, false) + + case yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE: + return yaml_parser_parse_node(parser, event, true, true) + + case yaml_PARSE_FLOW_NODE_STATE: + return yaml_parser_parse_node(parser, event, false, false) + + case yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE: + return yaml_parser_parse_block_sequence_entry(parser, event, true) + + case yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE: + return yaml_parser_parse_block_sequence_entry(parser, event, false) + + case yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE: + return yaml_parser_parse_indentless_sequence_entry(parser, event) + + case yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE: + return yaml_parser_parse_block_mapping_key(parser, event, true) + + case yaml_PARSE_BLOCK_MAPPING_KEY_STATE: + return yaml_parser_parse_block_mapping_key(parser, event, false) + + case yaml_PARSE_BLOCK_MAPPING_VALUE_STATE: + return yaml_parser_parse_block_mapping_value(parser, event) + + case yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE: + return yaml_parser_parse_flow_sequence_entry(parser, event, true) + + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE: + return yaml_parser_parse_flow_sequence_entry(parser, event, false) + + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE: + return yaml_parser_parse_flow_sequence_entry_mapping_key(parser, event) + + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE: + return yaml_parser_parse_flow_sequence_entry_mapping_value(parser, event) + + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE: + return yaml_parser_parse_flow_sequence_entry_mapping_end(parser, event) + + case yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE: + return yaml_parser_parse_flow_mapping_key(parser, event, true) + + case yaml_PARSE_FLOW_MAPPING_KEY_STATE: + return yaml_parser_parse_flow_mapping_key(parser, event, false) + + case yaml_PARSE_FLOW_MAPPING_VALUE_STATE: + return yaml_parser_parse_flow_mapping_value(parser, event, false) + + case yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE: + return yaml_parser_parse_flow_mapping_value(parser, event, true) + + default: + panic("invalid parser state") + } +} + +// Parse the production: +// stream ::= STREAM-START implicit_document? explicit_document* STREAM-END +// ************ +func yaml_parser_parse_stream_start(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_STREAM_START_TOKEN { + return yaml_parser_set_parser_error(parser, "did not find expected <stream-start>", token.start_mark) + } + parser.state = yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE + *event = yaml_event_t{ + typ: yaml_STREAM_START_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + encoding: token.encoding, + } + skip_token(parser) + return true +} + +// Parse the productions: +// implicit_document ::= block_node DOCUMENT-END* +// * +// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* +// ************************* +func yaml_parser_parse_document_start(parser *yaml_parser_t, event *yaml_event_t, implicit bool) bool { + + token := peek_token(parser) + if token == nil { + return false + } + + // Parse extra document end indicators. + if !implicit { + for token.typ == yaml_DOCUMENT_END_TOKEN { + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + } + } + + if implicit && token.typ != yaml_VERSION_DIRECTIVE_TOKEN && + token.typ != yaml_TAG_DIRECTIVE_TOKEN && + token.typ != yaml_DOCUMENT_START_TOKEN && + token.typ != yaml_STREAM_END_TOKEN { + // Parse an implicit document. + if !yaml_parser_process_directives(parser, nil, nil) { + return false + } + parser.states = append(parser.states, yaml_PARSE_DOCUMENT_END_STATE) + parser.state = yaml_PARSE_BLOCK_NODE_STATE + + var head_comment []byte + if len(parser.head_comment) > 0 { + // [Go] Scan the header comment backwards, and if an empty line is found, break + // the header so the part before the last empty line goes into the + // document header, while the bottom of it goes into a follow up event. + for i := len(parser.head_comment) - 1; i > 0; i-- { + if parser.head_comment[i] == '\n' { + if i == len(parser.head_comment)-1 { + head_comment = parser.head_comment[:i] + parser.head_comment = parser.head_comment[i+1:] + break + } else if parser.head_comment[i-1] == '\n' { + head_comment = parser.head_comment[:i-1] + parser.head_comment = parser.head_comment[i+1:] + break + } + } + } + } + + *event = yaml_event_t{ + typ: yaml_DOCUMENT_START_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + + head_comment: head_comment, + } + + } else if token.typ != yaml_STREAM_END_TOKEN { + // Parse an explicit document. + var version_directive *yaml_version_directive_t + var tag_directives []yaml_tag_directive_t + start_mark := token.start_mark + if !yaml_parser_process_directives(parser, &version_directive, &tag_directives) { + return false + } + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_DOCUMENT_START_TOKEN { + yaml_parser_set_parser_error(parser, + "did not find expected <document start>", token.start_mark) + return false + } + parser.states = append(parser.states, yaml_PARSE_DOCUMENT_END_STATE) + parser.state = yaml_PARSE_DOCUMENT_CONTENT_STATE + end_mark := token.end_mark + + *event = yaml_event_t{ + typ: yaml_DOCUMENT_START_EVENT, + start_mark: start_mark, + end_mark: end_mark, + version_directive: version_directive, + tag_directives: tag_directives, + implicit: false, + } + skip_token(parser) + + } else { + // Parse the stream end. + parser.state = yaml_PARSE_END_STATE + *event = yaml_event_t{ + typ: yaml_STREAM_END_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + } + skip_token(parser) + } + + return true +} + +// Parse the productions: +// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* +// *********** +// +func yaml_parser_parse_document_content(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + + if token.typ == yaml_VERSION_DIRECTIVE_TOKEN || + token.typ == yaml_TAG_DIRECTIVE_TOKEN || + token.typ == yaml_DOCUMENT_START_TOKEN || + token.typ == yaml_DOCUMENT_END_TOKEN || + token.typ == yaml_STREAM_END_TOKEN { + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + return yaml_parser_process_empty_scalar(parser, event, + token.start_mark) + } + return yaml_parser_parse_node(parser, event, true, false) +} + +// Parse the productions: +// implicit_document ::= block_node DOCUMENT-END* +// ************* +// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* +// +func yaml_parser_parse_document_end(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + + start_mark := token.start_mark + end_mark := token.start_mark + + implicit := true + if token.typ == yaml_DOCUMENT_END_TOKEN { + end_mark = token.end_mark + skip_token(parser) + implicit = false + } + + parser.tag_directives = parser.tag_directives[:0] + + parser.state = yaml_PARSE_DOCUMENT_START_STATE + *event = yaml_event_t{ + typ: yaml_DOCUMENT_END_EVENT, + start_mark: start_mark, + end_mark: end_mark, + implicit: implicit, + } + yaml_parser_set_event_comments(parser, event) + if len(event.head_comment) > 0 && len(event.foot_comment) == 0 { + event.foot_comment = event.head_comment + event.head_comment = nil + } + return true +} + +func yaml_parser_set_event_comments(parser *yaml_parser_t, event *yaml_event_t) { + event.head_comment = parser.head_comment + event.line_comment = parser.line_comment + event.foot_comment = parser.foot_comment + parser.head_comment = nil + parser.line_comment = nil + parser.foot_comment = nil + parser.tail_comment = nil + parser.stem_comment = nil +} + +// Parse the productions: +// block_node_or_indentless_sequence ::= +// ALIAS +// ***** +// | properties (block_content | indentless_block_sequence)? +// ********** * +// | block_content | indentless_block_sequence +// * +// block_node ::= ALIAS +// ***** +// | properties block_content? +// ********** * +// | block_content +// * +// flow_node ::= ALIAS +// ***** +// | properties flow_content? +// ********** * +// | flow_content +// * +// properties ::= TAG ANCHOR? | ANCHOR TAG? +// ************************* +// block_content ::= block_collection | flow_collection | SCALAR +// ****** +// flow_content ::= flow_collection | SCALAR +// ****** +func yaml_parser_parse_node(parser *yaml_parser_t, event *yaml_event_t, block, indentless_sequence bool) bool { + //defer trace("yaml_parser_parse_node", "block:", block, "indentless_sequence:", indentless_sequence)() + + token := peek_token(parser) + if token == nil { + return false + } + + if token.typ == yaml_ALIAS_TOKEN { + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + *event = yaml_event_t{ + typ: yaml_ALIAS_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + anchor: token.value, + } + yaml_parser_set_event_comments(parser, event) + skip_token(parser) + return true + } + + start_mark := token.start_mark + end_mark := token.start_mark + + var tag_token bool + var tag_handle, tag_suffix, anchor []byte + var tag_mark yaml_mark_t + if token.typ == yaml_ANCHOR_TOKEN { + anchor = token.value + start_mark = token.start_mark + end_mark = token.end_mark + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ == yaml_TAG_TOKEN { + tag_token = true + tag_handle = token.value + tag_suffix = token.suffix + tag_mark = token.start_mark + end_mark = token.end_mark + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + } + } else if token.typ == yaml_TAG_TOKEN { + tag_token = true + tag_handle = token.value + tag_suffix = token.suffix + start_mark = token.start_mark + tag_mark = token.start_mark + end_mark = token.end_mark + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ == yaml_ANCHOR_TOKEN { + anchor = token.value + end_mark = token.end_mark + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + } + } + + var tag []byte + if tag_token { + if len(tag_handle) == 0 { + tag = tag_suffix + tag_suffix = nil + } else { + for i := range parser.tag_directives { + if bytes.Equal(parser.tag_directives[i].handle, tag_handle) { + tag = append([]byte(nil), parser.tag_directives[i].prefix...) + tag = append(tag, tag_suffix...) + break + } + } + if len(tag) == 0 { + yaml_parser_set_parser_error_context(parser, + "while parsing a node", start_mark, + "found undefined tag handle", tag_mark) + return false + } + } + } + + implicit := len(tag) == 0 + if indentless_sequence && token.typ == yaml_BLOCK_ENTRY_TOKEN { + end_mark = token.end_mark + parser.state = yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE + *event = yaml_event_t{ + typ: yaml_SEQUENCE_START_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE), + } + return true + } + if token.typ == yaml_SCALAR_TOKEN { + var plain_implicit, quoted_implicit bool + end_mark = token.end_mark + if (len(tag) == 0 && token.style == yaml_PLAIN_SCALAR_STYLE) || (len(tag) == 1 && tag[0] == '!') { + plain_implicit = true + } else if len(tag) == 0 { + quoted_implicit = true + } + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + + *event = yaml_event_t{ + typ: yaml_SCALAR_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + value: token.value, + implicit: plain_implicit, + quoted_implicit: quoted_implicit, + style: yaml_style_t(token.style), + } + yaml_parser_set_event_comments(parser, event) + skip_token(parser) + return true + } + if token.typ == yaml_FLOW_SEQUENCE_START_TOKEN { + // [Go] Some of the events below can be merged as they differ only on style. + end_mark = token.end_mark + parser.state = yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE + *event = yaml_event_t{ + typ: yaml_SEQUENCE_START_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(yaml_FLOW_SEQUENCE_STYLE), + } + yaml_parser_set_event_comments(parser, event) + return true + } + if token.typ == yaml_FLOW_MAPPING_START_TOKEN { + end_mark = token.end_mark + parser.state = yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE + *event = yaml_event_t{ + typ: yaml_MAPPING_START_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(yaml_FLOW_MAPPING_STYLE), + } + yaml_parser_set_event_comments(parser, event) + return true + } + if block && token.typ == yaml_BLOCK_SEQUENCE_START_TOKEN { + end_mark = token.end_mark + parser.state = yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE + *event = yaml_event_t{ + typ: yaml_SEQUENCE_START_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE), + } + if parser.stem_comment != nil { + event.head_comment = parser.stem_comment + parser.stem_comment = nil + } + return true + } + if block && token.typ == yaml_BLOCK_MAPPING_START_TOKEN { + end_mark = token.end_mark + parser.state = yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE + *event = yaml_event_t{ + typ: yaml_MAPPING_START_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(yaml_BLOCK_MAPPING_STYLE), + } + if parser.stem_comment != nil { + event.head_comment = parser.stem_comment + parser.stem_comment = nil + } + return true + } + if len(anchor) > 0 || len(tag) > 0 { + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + + *event = yaml_event_t{ + typ: yaml_SCALAR_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + implicit: implicit, + quoted_implicit: false, + style: yaml_style_t(yaml_PLAIN_SCALAR_STYLE), + } + return true + } + + context := "while parsing a flow node" + if block { + context = "while parsing a block node" + } + yaml_parser_set_parser_error_context(parser, context, start_mark, + "did not find expected node content", token.start_mark) + return false +} + +// Parse the productions: +// block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END +// ******************** *********** * ********* +// +func yaml_parser_parse_block_sequence_entry(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { + if first { + token := peek_token(parser) + if token == nil { + return false + } + parser.marks = append(parser.marks, token.start_mark) + skip_token(parser) + } + + token := peek_token(parser) + if token == nil { + return false + } + + if token.typ == yaml_BLOCK_ENTRY_TOKEN { + mark := token.end_mark + prior_head_len := len(parser.head_comment) + skip_token(parser) + yaml_parser_split_stem_comment(parser, prior_head_len) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_BLOCK_ENTRY_TOKEN && token.typ != yaml_BLOCK_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE) + return yaml_parser_parse_node(parser, event, true, false) + } else { + parser.state = yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE + return yaml_parser_process_empty_scalar(parser, event, mark) + } + } + if token.typ == yaml_BLOCK_END_TOKEN { + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + + *event = yaml_event_t{ + typ: yaml_SEQUENCE_END_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + } + + skip_token(parser) + return true + } + + context_mark := parser.marks[len(parser.marks)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + return yaml_parser_set_parser_error_context(parser, + "while parsing a block collection", context_mark, + "did not find expected '-' indicator", token.start_mark) +} + +// Parse the productions: +// indentless_sequence ::= (BLOCK-ENTRY block_node?)+ +// *********** * +func yaml_parser_parse_indentless_sequence_entry(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + + if token.typ == yaml_BLOCK_ENTRY_TOKEN { + mark := token.end_mark + prior_head_len := len(parser.head_comment) + skip_token(parser) + yaml_parser_split_stem_comment(parser, prior_head_len) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_BLOCK_ENTRY_TOKEN && + token.typ != yaml_KEY_TOKEN && + token.typ != yaml_VALUE_TOKEN && + token.typ != yaml_BLOCK_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE) + return yaml_parser_parse_node(parser, event, true, false) + } + parser.state = yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE + return yaml_parser_process_empty_scalar(parser, event, mark) + } + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + + *event = yaml_event_t{ + typ: yaml_SEQUENCE_END_EVENT, + start_mark: token.start_mark, + end_mark: token.start_mark, // [Go] Shouldn't this be token.end_mark? + } + return true +} + +// Split stem comment from head comment. +// +// When a sequence or map is found under a sequence entry, the former head comment +// is assigned to the underlying sequence or map as a whole, not the individual +// sequence or map entry as would be expected otherwise. To handle this case the +// previous head comment is moved aside as the stem comment. +func yaml_parser_split_stem_comment(parser *yaml_parser_t, stem_len int) { + if stem_len == 0 { + return + } + + token := peek_token(parser) + if token == nil || token.typ != yaml_BLOCK_SEQUENCE_START_TOKEN && token.typ != yaml_BLOCK_MAPPING_START_TOKEN { + return + } + + parser.stem_comment = parser.head_comment[:stem_len] + if len(parser.head_comment) == stem_len { + parser.head_comment = nil + } else { + // Copy suffix to prevent very strange bugs if someone ever appends + // further bytes to the prefix in the stem_comment slice above. + parser.head_comment = append([]byte(nil), parser.head_comment[stem_len+1:]...) + } +} + +// Parse the productions: +// block_mapping ::= BLOCK-MAPPING_START +// ******************* +// ((KEY block_node_or_indentless_sequence?)? +// *** * +// (VALUE block_node_or_indentless_sequence?)?)* +// +// BLOCK-END +// ********* +// +func yaml_parser_parse_block_mapping_key(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { + if first { + token := peek_token(parser) + if token == nil { + return false + } + parser.marks = append(parser.marks, token.start_mark) + skip_token(parser) + } + + token := peek_token(parser) + if token == nil { + return false + } + + // [Go] A tail comment was left from the prior mapping value processed. Emit an event + // as it needs to be processed with that value and not the following key. + if len(parser.tail_comment) > 0 { + *event = yaml_event_t{ + typ: yaml_TAIL_COMMENT_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + foot_comment: parser.tail_comment, + } + parser.tail_comment = nil + return true + } + + if token.typ == yaml_KEY_TOKEN { + mark := token.end_mark + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_KEY_TOKEN && + token.typ != yaml_VALUE_TOKEN && + token.typ != yaml_BLOCK_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_BLOCK_MAPPING_VALUE_STATE) + return yaml_parser_parse_node(parser, event, true, true) + } else { + parser.state = yaml_PARSE_BLOCK_MAPPING_VALUE_STATE + return yaml_parser_process_empty_scalar(parser, event, mark) + } + } else if token.typ == yaml_BLOCK_END_TOKEN { + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + *event = yaml_event_t{ + typ: yaml_MAPPING_END_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + } + yaml_parser_set_event_comments(parser, event) + skip_token(parser) + return true + } + + context_mark := parser.marks[len(parser.marks)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + return yaml_parser_set_parser_error_context(parser, + "while parsing a block mapping", context_mark, + "did not find expected key", token.start_mark) +} + +// Parse the productions: +// block_mapping ::= BLOCK-MAPPING_START +// +// ((KEY block_node_or_indentless_sequence?)? +// +// (VALUE block_node_or_indentless_sequence?)?)* +// ***** * +// BLOCK-END +// +// +func yaml_parser_parse_block_mapping_value(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + if token.typ == yaml_VALUE_TOKEN { + mark := token.end_mark + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_KEY_TOKEN && + token.typ != yaml_VALUE_TOKEN && + token.typ != yaml_BLOCK_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_BLOCK_MAPPING_KEY_STATE) + return yaml_parser_parse_node(parser, event, true, true) + } + parser.state = yaml_PARSE_BLOCK_MAPPING_KEY_STATE + return yaml_parser_process_empty_scalar(parser, event, mark) + } + parser.state = yaml_PARSE_BLOCK_MAPPING_KEY_STATE + return yaml_parser_process_empty_scalar(parser, event, token.start_mark) +} + +// Parse the productions: +// flow_sequence ::= FLOW-SEQUENCE-START +// ******************* +// (flow_sequence_entry FLOW-ENTRY)* +// * ********** +// flow_sequence_entry? +// * +// FLOW-SEQUENCE-END +// ***************** +// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// * +// +func yaml_parser_parse_flow_sequence_entry(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { + if first { + token := peek_token(parser) + if token == nil { + return false + } + parser.marks = append(parser.marks, token.start_mark) + skip_token(parser) + } + token := peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_FLOW_SEQUENCE_END_TOKEN { + if !first { + if token.typ == yaml_FLOW_ENTRY_TOKEN { + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + } else { + context_mark := parser.marks[len(parser.marks)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + return yaml_parser_set_parser_error_context(parser, + "while parsing a flow sequence", context_mark, + "did not find expected ',' or ']'", token.start_mark) + } + } + + if token.typ == yaml_KEY_TOKEN { + parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE + *event = yaml_event_t{ + typ: yaml_MAPPING_START_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + implicit: true, + style: yaml_style_t(yaml_FLOW_MAPPING_STYLE), + } + skip_token(parser) + return true + } else if token.typ != yaml_FLOW_SEQUENCE_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE) + return yaml_parser_parse_node(parser, event, false, false) + } + } + + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + + *event = yaml_event_t{ + typ: yaml_SEQUENCE_END_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + } + yaml_parser_set_event_comments(parser, event) + + skip_token(parser) + return true +} + +// +// Parse the productions: +// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// *** * +// +func yaml_parser_parse_flow_sequence_entry_mapping_key(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_VALUE_TOKEN && + token.typ != yaml_FLOW_ENTRY_TOKEN && + token.typ != yaml_FLOW_SEQUENCE_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE) + return yaml_parser_parse_node(parser, event, false, false) + } + mark := token.end_mark + skip_token(parser) + parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE + return yaml_parser_process_empty_scalar(parser, event, mark) +} + +// Parse the productions: +// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// ***** * +// +func yaml_parser_parse_flow_sequence_entry_mapping_value(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + if token.typ == yaml_VALUE_TOKEN { + skip_token(parser) + token := peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_FLOW_ENTRY_TOKEN && token.typ != yaml_FLOW_SEQUENCE_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE) + return yaml_parser_parse_node(parser, event, false, false) + } + } + parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE + return yaml_parser_process_empty_scalar(parser, event, token.start_mark) +} + +// Parse the productions: +// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// * +// +func yaml_parser_parse_flow_sequence_entry_mapping_end(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE + *event = yaml_event_t{ + typ: yaml_MAPPING_END_EVENT, + start_mark: token.start_mark, + end_mark: token.start_mark, // [Go] Shouldn't this be end_mark? + } + return true +} + +// Parse the productions: +// flow_mapping ::= FLOW-MAPPING-START +// ****************** +// (flow_mapping_entry FLOW-ENTRY)* +// * ********** +// flow_mapping_entry? +// ****************** +// FLOW-MAPPING-END +// **************** +// flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// * *** * +// +func yaml_parser_parse_flow_mapping_key(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { + if first { + token := peek_token(parser) + parser.marks = append(parser.marks, token.start_mark) + skip_token(parser) + } + + token := peek_token(parser) + if token == nil { + return false + } + + if token.typ != yaml_FLOW_MAPPING_END_TOKEN { + if !first { + if token.typ == yaml_FLOW_ENTRY_TOKEN { + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + } else { + context_mark := parser.marks[len(parser.marks)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + return yaml_parser_set_parser_error_context(parser, + "while parsing a flow mapping", context_mark, + "did not find expected ',' or '}'", token.start_mark) + } + } + + if token.typ == yaml_KEY_TOKEN { + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_VALUE_TOKEN && + token.typ != yaml_FLOW_ENTRY_TOKEN && + token.typ != yaml_FLOW_MAPPING_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_VALUE_STATE) + return yaml_parser_parse_node(parser, event, false, false) + } else { + parser.state = yaml_PARSE_FLOW_MAPPING_VALUE_STATE + return yaml_parser_process_empty_scalar(parser, event, token.start_mark) + } + } else if token.typ != yaml_FLOW_MAPPING_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE) + return yaml_parser_parse_node(parser, event, false, false) + } + } + + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + *event = yaml_event_t{ + typ: yaml_MAPPING_END_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + } + yaml_parser_set_event_comments(parser, event) + skip_token(parser) + return true +} + +// Parse the productions: +// flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// * ***** * +// +func yaml_parser_parse_flow_mapping_value(parser *yaml_parser_t, event *yaml_event_t, empty bool) bool { + token := peek_token(parser) + if token == nil { + return false + } + if empty { + parser.state = yaml_PARSE_FLOW_MAPPING_KEY_STATE + return yaml_parser_process_empty_scalar(parser, event, token.start_mark) + } + if token.typ == yaml_VALUE_TOKEN { + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_FLOW_ENTRY_TOKEN && token.typ != yaml_FLOW_MAPPING_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_KEY_STATE) + return yaml_parser_parse_node(parser, event, false, false) + } + } + parser.state = yaml_PARSE_FLOW_MAPPING_KEY_STATE + return yaml_parser_process_empty_scalar(parser, event, token.start_mark) +} + +// Generate an empty scalar event. +func yaml_parser_process_empty_scalar(parser *yaml_parser_t, event *yaml_event_t, mark yaml_mark_t) bool { + *event = yaml_event_t{ + typ: yaml_SCALAR_EVENT, + start_mark: mark, + end_mark: mark, + value: nil, // Empty + implicit: true, + style: yaml_style_t(yaml_PLAIN_SCALAR_STYLE), + } + return true +} + +var default_tag_directives = []yaml_tag_directive_t{ + {[]byte("!"), []byte("!")}, + {[]byte("!!"), []byte("tag:yaml.org,2002:")}, +} + +// Parse directives. +func yaml_parser_process_directives(parser *yaml_parser_t, + version_directive_ref **yaml_version_directive_t, + tag_directives_ref *[]yaml_tag_directive_t) bool { + + var version_directive *yaml_version_directive_t + var tag_directives []yaml_tag_directive_t + + token := peek_token(parser) + if token == nil { + return false + } + + for token.typ == yaml_VERSION_DIRECTIVE_TOKEN || token.typ == yaml_TAG_DIRECTIVE_TOKEN { + if token.typ == yaml_VERSION_DIRECTIVE_TOKEN { + if version_directive != nil { + yaml_parser_set_parser_error(parser, + "found duplicate %YAML directive", token.start_mark) + return false + } + if token.major != 1 || token.minor != 1 { + yaml_parser_set_parser_error(parser, + "found incompatible YAML document", token.start_mark) + return false + } + version_directive = &yaml_version_directive_t{ + major: token.major, + minor: token.minor, + } + } else if token.typ == yaml_TAG_DIRECTIVE_TOKEN { + value := yaml_tag_directive_t{ + handle: token.value, + prefix: token.prefix, + } + if !yaml_parser_append_tag_directive(parser, value, false, token.start_mark) { + return false + } + tag_directives = append(tag_directives, value) + } + + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + } + + for i := range default_tag_directives { + if !yaml_parser_append_tag_directive(parser, default_tag_directives[i], true, token.start_mark) { + return false + } + } + + if version_directive_ref != nil { + *version_directive_ref = version_directive + } + if tag_directives_ref != nil { + *tag_directives_ref = tag_directives + } + return true +} + +// Append a tag directive to the directives stack. +func yaml_parser_append_tag_directive(parser *yaml_parser_t, value yaml_tag_directive_t, allow_duplicates bool, mark yaml_mark_t) bool { + for i := range parser.tag_directives { + if bytes.Equal(value.handle, parser.tag_directives[i].handle) { + if allow_duplicates { + return true + } + return yaml_parser_set_parser_error(parser, "found duplicate %TAG directive", mark) + } + } + + // [Go] I suspect the copy is unnecessary. This was likely done + // because there was no way to track ownership of the data. + value_copy := yaml_tag_directive_t{ + handle: make([]byte, len(value.handle)), + prefix: make([]byte, len(value.prefix)), + } + copy(value_copy.handle, value.handle) + copy(value_copy.prefix, value.prefix) + parser.tag_directives = append(parser.tag_directives, value_copy) + return true +} diff --git a/tests/vendor/gopkg.in/yaml.v3/readerc.go b/tests/vendor/gopkg.in/yaml.v3/readerc.go new file mode 100644 index 000000000..b7de0a89c --- /dev/null +++ b/tests/vendor/gopkg.in/yaml.v3/readerc.go @@ -0,0 +1,434 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// Copyright (c) 2006-2010 Kirill Simonov +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +package yaml + +import ( + "io" +) + +// Set the reader error and return 0. +func yaml_parser_set_reader_error(parser *yaml_parser_t, problem string, offset int, value int) bool { + parser.error = yaml_READER_ERROR + parser.problem = problem + parser.problem_offset = offset + parser.problem_value = value + return false +} + +// Byte order marks. +const ( + bom_UTF8 = "\xef\xbb\xbf" + bom_UTF16LE = "\xff\xfe" + bom_UTF16BE = "\xfe\xff" +) + +// Determine the input stream encoding by checking the BOM symbol. If no BOM is +// found, the UTF-8 encoding is assumed. Return 1 on success, 0 on failure. +func yaml_parser_determine_encoding(parser *yaml_parser_t) bool { + // Ensure that we had enough bytes in the raw buffer. + for !parser.eof && len(parser.raw_buffer)-parser.raw_buffer_pos < 3 { + if !yaml_parser_update_raw_buffer(parser) { + return false + } + } + + // Determine the encoding. + buf := parser.raw_buffer + pos := parser.raw_buffer_pos + avail := len(buf) - pos + if avail >= 2 && buf[pos] == bom_UTF16LE[0] && buf[pos+1] == bom_UTF16LE[1] { + parser.encoding = yaml_UTF16LE_ENCODING + parser.raw_buffer_pos += 2 + parser.offset += 2 + } else if avail >= 2 && buf[pos] == bom_UTF16BE[0] && buf[pos+1] == bom_UTF16BE[1] { + parser.encoding = yaml_UTF16BE_ENCODING + parser.raw_buffer_pos += 2 + parser.offset += 2 + } else if avail >= 3 && buf[pos] == bom_UTF8[0] && buf[pos+1] == bom_UTF8[1] && buf[pos+2] == bom_UTF8[2] { + parser.encoding = yaml_UTF8_ENCODING + parser.raw_buffer_pos += 3 + parser.offset += 3 + } else { + parser.encoding = yaml_UTF8_ENCODING + } + return true +} + +// Update the raw buffer. +func yaml_parser_update_raw_buffer(parser *yaml_parser_t) bool { + size_read := 0 + + // Return if the raw buffer is full. + if parser.raw_buffer_pos == 0 && len(parser.raw_buffer) == cap(parser.raw_buffer) { + return true + } + + // Return on EOF. + if parser.eof { + return true + } + + // Move the remaining bytes in the raw buffer to the beginning. + if parser.raw_buffer_pos > 0 && parser.raw_buffer_pos < len(parser.raw_buffer) { + copy(parser.raw_buffer, parser.raw_buffer[parser.raw_buffer_pos:]) + } + parser.raw_buffer = parser.raw_buffer[:len(parser.raw_buffer)-parser.raw_buffer_pos] + parser.raw_buffer_pos = 0 + + // Call the read handler to fill the buffer. + size_read, err := parser.read_handler(parser, parser.raw_buffer[len(parser.raw_buffer):cap(parser.raw_buffer)]) + parser.raw_buffer = parser.raw_buffer[:len(parser.raw_buffer)+size_read] + if err == io.EOF { + parser.eof = true + } else if err != nil { + return yaml_parser_set_reader_error(parser, "input error: "+err.Error(), parser.offset, -1) + } + return true +} + +// Ensure that the buffer contains at least `length` characters. +// Return true on success, false on failure. +// +// The length is supposed to be significantly less that the buffer size. +func yaml_parser_update_buffer(parser *yaml_parser_t, length int) bool { + if parser.read_handler == nil { + panic("read handler must be set") + } + + // [Go] This function was changed to guarantee the requested length size at EOF. + // The fact we need to do this is pretty awful, but the description above implies + // for that to be the case, and there are tests + + // If the EOF flag is set and the raw buffer is empty, do nothing. + if parser.eof && parser.raw_buffer_pos == len(parser.raw_buffer) { + // [Go] ACTUALLY! Read the documentation of this function above. + // This is just broken. To return true, we need to have the + // given length in the buffer. Not doing that means every single + // check that calls this function to make sure the buffer has a + // given length is Go) panicking; or C) accessing invalid memory. + //return true + } + + // Return if the buffer contains enough characters. + if parser.unread >= length { + return true + } + + // Determine the input encoding if it is not known yet. + if parser.encoding == yaml_ANY_ENCODING { + if !yaml_parser_determine_encoding(parser) { + return false + } + } + + // Move the unread characters to the beginning of the buffer. + buffer_len := len(parser.buffer) + if parser.buffer_pos > 0 && parser.buffer_pos < buffer_len { + copy(parser.buffer, parser.buffer[parser.buffer_pos:]) + buffer_len -= parser.buffer_pos + parser.buffer_pos = 0 + } else if parser.buffer_pos == buffer_len { + buffer_len = 0 + parser.buffer_pos = 0 + } + + // Open the whole buffer for writing, and cut it before returning. + parser.buffer = parser.buffer[:cap(parser.buffer)] + + // Fill the buffer until it has enough characters. + first := true + for parser.unread < length { + + // Fill the raw buffer if necessary. + if !first || parser.raw_buffer_pos == len(parser.raw_buffer) { + if !yaml_parser_update_raw_buffer(parser) { + parser.buffer = parser.buffer[:buffer_len] + return false + } + } + first = false + + // Decode the raw buffer. + inner: + for parser.raw_buffer_pos != len(parser.raw_buffer) { + var value rune + var width int + + raw_unread := len(parser.raw_buffer) - parser.raw_buffer_pos + + // Decode the next character. + switch parser.encoding { + case yaml_UTF8_ENCODING: + // Decode a UTF-8 character. Check RFC 3629 + // (http://www.ietf.org/rfc/rfc3629.txt) for more details. + // + // The following table (taken from the RFC) is used for + // decoding. + // + // Char. number range | UTF-8 octet sequence + // (hexadecimal) | (binary) + // --------------------+------------------------------------ + // 0000 0000-0000 007F | 0xxxxxxx + // 0000 0080-0000 07FF | 110xxxxx 10xxxxxx + // 0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx + // 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + // + // Additionally, the characters in the range 0xD800-0xDFFF + // are prohibited as they are reserved for use with UTF-16 + // surrogate pairs. + + // Determine the length of the UTF-8 sequence. + octet := parser.raw_buffer[parser.raw_buffer_pos] + switch { + case octet&0x80 == 0x00: + width = 1 + case octet&0xE0 == 0xC0: + width = 2 + case octet&0xF0 == 0xE0: + width = 3 + case octet&0xF8 == 0xF0: + width = 4 + default: + // The leading octet is invalid. + return yaml_parser_set_reader_error(parser, + "invalid leading UTF-8 octet", + parser.offset, int(octet)) + } + + // Check if the raw buffer contains an incomplete character. + if width > raw_unread { + if parser.eof { + return yaml_parser_set_reader_error(parser, + "incomplete UTF-8 octet sequence", + parser.offset, -1) + } + break inner + } + + // Decode the leading octet. + switch { + case octet&0x80 == 0x00: + value = rune(octet & 0x7F) + case octet&0xE0 == 0xC0: + value = rune(octet & 0x1F) + case octet&0xF0 == 0xE0: + value = rune(octet & 0x0F) + case octet&0xF8 == 0xF0: + value = rune(octet & 0x07) + default: + value = 0 + } + + // Check and decode the trailing octets. + for k := 1; k < width; k++ { + octet = parser.raw_buffer[parser.raw_buffer_pos+k] + + // Check if the octet is valid. + if (octet & 0xC0) != 0x80 { + return yaml_parser_set_reader_error(parser, + "invalid trailing UTF-8 octet", + parser.offset+k, int(octet)) + } + + // Decode the octet. + value = (value << 6) + rune(octet&0x3F) + } + + // Check the length of the sequence against the value. + switch { + case width == 1: + case width == 2 && value >= 0x80: + case width == 3 && value >= 0x800: + case width == 4 && value >= 0x10000: + default: + return yaml_parser_set_reader_error(parser, + "invalid length of a UTF-8 sequence", + parser.offset, -1) + } + + // Check the range of the value. + if value >= 0xD800 && value <= 0xDFFF || value > 0x10FFFF { + return yaml_parser_set_reader_error(parser, + "invalid Unicode character", + parser.offset, int(value)) + } + + case yaml_UTF16LE_ENCODING, yaml_UTF16BE_ENCODING: + var low, high int + if parser.encoding == yaml_UTF16LE_ENCODING { + low, high = 0, 1 + } else { + low, high = 1, 0 + } + + // The UTF-16 encoding is not as simple as one might + // naively think. Check RFC 2781 + // (http://www.ietf.org/rfc/rfc2781.txt). + // + // Normally, two subsequent bytes describe a Unicode + // character. However a special technique (called a + // surrogate pair) is used for specifying character + // values larger than 0xFFFF. + // + // A surrogate pair consists of two pseudo-characters: + // high surrogate area (0xD800-0xDBFF) + // low surrogate area (0xDC00-0xDFFF) + // + // The following formulas are used for decoding + // and encoding characters using surrogate pairs: + // + // U = U' + 0x10000 (0x01 00 00 <= U <= 0x10 FF FF) + // U' = yyyyyyyyyyxxxxxxxxxx (0 <= U' <= 0x0F FF FF) + // W1 = 110110yyyyyyyyyy + // W2 = 110111xxxxxxxxxx + // + // where U is the character value, W1 is the high surrogate + // area, W2 is the low surrogate area. + + // Check for incomplete UTF-16 character. + if raw_unread < 2 { + if parser.eof { + return yaml_parser_set_reader_error(parser, + "incomplete UTF-16 character", + parser.offset, -1) + } + break inner + } + + // Get the character. + value = rune(parser.raw_buffer[parser.raw_buffer_pos+low]) + + (rune(parser.raw_buffer[parser.raw_buffer_pos+high]) << 8) + + // Check for unexpected low surrogate area. + if value&0xFC00 == 0xDC00 { + return yaml_parser_set_reader_error(parser, + "unexpected low surrogate area", + parser.offset, int(value)) + } + + // Check for a high surrogate area. + if value&0xFC00 == 0xD800 { + width = 4 + + // Check for incomplete surrogate pair. + if raw_unread < 4 { + if parser.eof { + return yaml_parser_set_reader_error(parser, + "incomplete UTF-16 surrogate pair", + parser.offset, -1) + } + break inner + } + + // Get the next character. + value2 := rune(parser.raw_buffer[parser.raw_buffer_pos+low+2]) + + (rune(parser.raw_buffer[parser.raw_buffer_pos+high+2]) << 8) + + // Check for a low surrogate area. + if value2&0xFC00 != 0xDC00 { + return yaml_parser_set_reader_error(parser, + "expected low surrogate area", + parser.offset+2, int(value2)) + } + + // Generate the value of the surrogate pair. + value = 0x10000 + ((value & 0x3FF) << 10) + (value2 & 0x3FF) + } else { + width = 2 + } + + default: + panic("impossible") + } + + // Check if the character is in the allowed range: + // #x9 | #xA | #xD | [#x20-#x7E] (8 bit) + // | #x85 | [#xA0-#xD7FF] | [#xE000-#xFFFD] (16 bit) + // | [#x10000-#x10FFFF] (32 bit) + switch { + case value == 0x09: + case value == 0x0A: + case value == 0x0D: + case value >= 0x20 && value <= 0x7E: + case value == 0x85: + case value >= 0xA0 && value <= 0xD7FF: + case value >= 0xE000 && value <= 0xFFFD: + case value >= 0x10000 && value <= 0x10FFFF: + default: + return yaml_parser_set_reader_error(parser, + "control characters are not allowed", + parser.offset, int(value)) + } + + // Move the raw pointers. + parser.raw_buffer_pos += width + parser.offset += width + + // Finally put the character into the buffer. + if value <= 0x7F { + // 0000 0000-0000 007F . 0xxxxxxx + parser.buffer[buffer_len+0] = byte(value) + buffer_len += 1 + } else if value <= 0x7FF { + // 0000 0080-0000 07FF . 110xxxxx 10xxxxxx + parser.buffer[buffer_len+0] = byte(0xC0 + (value >> 6)) + parser.buffer[buffer_len+1] = byte(0x80 + (value & 0x3F)) + buffer_len += 2 + } else if value <= 0xFFFF { + // 0000 0800-0000 FFFF . 1110xxxx 10xxxxxx 10xxxxxx + parser.buffer[buffer_len+0] = byte(0xE0 + (value >> 12)) + parser.buffer[buffer_len+1] = byte(0x80 + ((value >> 6) & 0x3F)) + parser.buffer[buffer_len+2] = byte(0x80 + (value & 0x3F)) + buffer_len += 3 + } else { + // 0001 0000-0010 FFFF . 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + parser.buffer[buffer_len+0] = byte(0xF0 + (value >> 18)) + parser.buffer[buffer_len+1] = byte(0x80 + ((value >> 12) & 0x3F)) + parser.buffer[buffer_len+2] = byte(0x80 + ((value >> 6) & 0x3F)) + parser.buffer[buffer_len+3] = byte(0x80 + (value & 0x3F)) + buffer_len += 4 + } + + parser.unread++ + } + + // On EOF, put NUL into the buffer and return. + if parser.eof { + parser.buffer[buffer_len] = 0 + buffer_len++ + parser.unread++ + break + } + } + // [Go] Read the documentation of this function above. To return true, + // we need to have the given length in the buffer. Not doing that means + // every single check that calls this function to make sure the buffer + // has a given length is Go) panicking; or C) accessing invalid memory. + // This happens here due to the EOF above breaking early. + for buffer_len < length { + parser.buffer[buffer_len] = 0 + buffer_len++ + } + parser.buffer = parser.buffer[:buffer_len] + return true +} diff --git a/tests/vendor/gopkg.in/yaml.v3/resolve.go b/tests/vendor/gopkg.in/yaml.v3/resolve.go new file mode 100644 index 000000000..64ae88805 --- /dev/null +++ b/tests/vendor/gopkg.in/yaml.v3/resolve.go @@ -0,0 +1,326 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package yaml + +import ( + "encoding/base64" + "math" + "regexp" + "strconv" + "strings" + "time" +) + +type resolveMapItem struct { + value interface{} + tag string +} + +var resolveTable = make([]byte, 256) +var resolveMap = make(map[string]resolveMapItem) + +func init() { + t := resolveTable + t[int('+')] = 'S' // Sign + t[int('-')] = 'S' + for _, c := range "0123456789" { + t[int(c)] = 'D' // Digit + } + for _, c := range "yYnNtTfFoO~" { + t[int(c)] = 'M' // In map + } + t[int('.')] = '.' // Float (potentially in map) + + var resolveMapList = []struct { + v interface{} + tag string + l []string + }{ + {true, boolTag, []string{"true", "True", "TRUE"}}, + {false, boolTag, []string{"false", "False", "FALSE"}}, + {nil, nullTag, []string{"", "~", "null", "Null", "NULL"}}, + {math.NaN(), floatTag, []string{".nan", ".NaN", ".NAN"}}, + {math.Inf(+1), floatTag, []string{".inf", ".Inf", ".INF"}}, + {math.Inf(+1), floatTag, []string{"+.inf", "+.Inf", "+.INF"}}, + {math.Inf(-1), floatTag, []string{"-.inf", "-.Inf", "-.INF"}}, + {"<<", mergeTag, []string{"<<"}}, + } + + m := resolveMap + for _, item := range resolveMapList { + for _, s := range item.l { + m[s] = resolveMapItem{item.v, item.tag} + } + } +} + +const ( + nullTag = "!!null" + boolTag = "!!bool" + strTag = "!!str" + intTag = "!!int" + floatTag = "!!float" + timestampTag = "!!timestamp" + seqTag = "!!seq" + mapTag = "!!map" + binaryTag = "!!binary" + mergeTag = "!!merge" +) + +var longTags = make(map[string]string) +var shortTags = make(map[string]string) + +func init() { + for _, stag := range []string{nullTag, boolTag, strTag, intTag, floatTag, timestampTag, seqTag, mapTag, binaryTag, mergeTag} { + ltag := longTag(stag) + longTags[stag] = ltag + shortTags[ltag] = stag + } +} + +const longTagPrefix = "tag:yaml.org,2002:" + +func shortTag(tag string) string { + if strings.HasPrefix(tag, longTagPrefix) { + if stag, ok := shortTags[tag]; ok { + return stag + } + return "!!" + tag[len(longTagPrefix):] + } + return tag +} + +func longTag(tag string) string { + if strings.HasPrefix(tag, "!!") { + if ltag, ok := longTags[tag]; ok { + return ltag + } + return longTagPrefix + tag[2:] + } + return tag +} + +func resolvableTag(tag string) bool { + switch tag { + case "", strTag, boolTag, intTag, floatTag, nullTag, timestampTag: + return true + } + return false +} + +var yamlStyleFloat = regexp.MustCompile(`^[-+]?(\.[0-9]+|[0-9]+(\.[0-9]*)?)([eE][-+]?[0-9]+)?$`) + +func resolve(tag string, in string) (rtag string, out interface{}) { + tag = shortTag(tag) + if !resolvableTag(tag) { + return tag, in + } + + defer func() { + switch tag { + case "", rtag, strTag, binaryTag: + return + case floatTag: + if rtag == intTag { + switch v := out.(type) { + case int64: + rtag = floatTag + out = float64(v) + return + case int: + rtag = floatTag + out = float64(v) + return + } + } + } + failf("cannot decode %s `%s` as a %s", shortTag(rtag), in, shortTag(tag)) + }() + + // Any data is accepted as a !!str or !!binary. + // Otherwise, the prefix is enough of a hint about what it might be. + hint := byte('N') + if in != "" { + hint = resolveTable[in[0]] + } + if hint != 0 && tag != strTag && tag != binaryTag { + // Handle things we can lookup in a map. + if item, ok := resolveMap[in]; ok { + return item.tag, item.value + } + + // Base 60 floats are a bad idea, were dropped in YAML 1.2, and + // are purposefully unsupported here. They're still quoted on + // the way out for compatibility with other parser, though. + + switch hint { + case 'M': + // We've already checked the map above. + + case '.': + // Not in the map, so maybe a normal float. + floatv, err := strconv.ParseFloat(in, 64) + if err == nil { + return floatTag, floatv + } + + case 'D', 'S': + // Int, float, or timestamp. + // Only try values as a timestamp if the value is unquoted or there's an explicit + // !!timestamp tag. + if tag == "" || tag == timestampTag { + t, ok := parseTimestamp(in) + if ok { + return timestampTag, t + } + } + + plain := strings.Replace(in, "_", "", -1) + intv, err := strconv.ParseInt(plain, 0, 64) + if err == nil { + if intv == int64(int(intv)) { + return intTag, int(intv) + } else { + return intTag, intv + } + } + uintv, err := strconv.ParseUint(plain, 0, 64) + if err == nil { + return intTag, uintv + } + if yamlStyleFloat.MatchString(plain) { + floatv, err := strconv.ParseFloat(plain, 64) + if err == nil { + return floatTag, floatv + } + } + if strings.HasPrefix(plain, "0b") { + intv, err := strconv.ParseInt(plain[2:], 2, 64) + if err == nil { + if intv == int64(int(intv)) { + return intTag, int(intv) + } else { + return intTag, intv + } + } + uintv, err := strconv.ParseUint(plain[2:], 2, 64) + if err == nil { + return intTag, uintv + } + } else if strings.HasPrefix(plain, "-0b") { + intv, err := strconv.ParseInt("-"+plain[3:], 2, 64) + if err == nil { + if true || intv == int64(int(intv)) { + return intTag, int(intv) + } else { + return intTag, intv + } + } + } + // Octals as introduced in version 1.2 of the spec. + // Octals from the 1.1 spec, spelled as 0777, are still + // decoded by default in v3 as well for compatibility. + // May be dropped in v4 depending on how usage evolves. + if strings.HasPrefix(plain, "0o") { + intv, err := strconv.ParseInt(plain[2:], 8, 64) + if err == nil { + if intv == int64(int(intv)) { + return intTag, int(intv) + } else { + return intTag, intv + } + } + uintv, err := strconv.ParseUint(plain[2:], 8, 64) + if err == nil { + return intTag, uintv + } + } else if strings.HasPrefix(plain, "-0o") { + intv, err := strconv.ParseInt("-"+plain[3:], 8, 64) + if err == nil { + if true || intv == int64(int(intv)) { + return intTag, int(intv) + } else { + return intTag, intv + } + } + } + default: + panic("internal error: missing handler for resolver table: " + string(rune(hint)) + " (with " + in + ")") + } + } + return strTag, in +} + +// encodeBase64 encodes s as base64 that is broken up into multiple lines +// as appropriate for the resulting length. +func encodeBase64(s string) string { + const lineLen = 70 + encLen := base64.StdEncoding.EncodedLen(len(s)) + lines := encLen/lineLen + 1 + buf := make([]byte, encLen*2+lines) + in := buf[0:encLen] + out := buf[encLen:] + base64.StdEncoding.Encode(in, []byte(s)) + k := 0 + for i := 0; i < len(in); i += lineLen { + j := i + lineLen + if j > len(in) { + j = len(in) + } + k += copy(out[k:], in[i:j]) + if lines > 1 { + out[k] = '\n' + k++ + } + } + return string(out[:k]) +} + +// This is a subset of the formats allowed by the regular expression +// defined at http://yaml.org/type/timestamp.html. +var allowedTimestampFormats = []string{ + "2006-1-2T15:4:5.999999999Z07:00", // RCF3339Nano with short date fields. + "2006-1-2t15:4:5.999999999Z07:00", // RFC3339Nano with short date fields and lower-case "t". + "2006-1-2 15:4:5.999999999", // space separated with no time zone + "2006-1-2", // date only + // Notable exception: time.Parse cannot handle: "2001-12-14 21:59:43.10 -5" + // from the set of examples. +} + +// parseTimestamp parses s as a timestamp string and +// returns the timestamp and reports whether it succeeded. +// Timestamp formats are defined at http://yaml.org/type/timestamp.html +func parseTimestamp(s string) (time.Time, bool) { + // TODO write code to check all the formats supported by + // http://yaml.org/type/timestamp.html instead of using time.Parse. + + // Quick check: all date formats start with YYYY-. + i := 0 + for ; i < len(s); i++ { + if c := s[i]; c < '0' || c > '9' { + break + } + } + if i != 4 || i == len(s) || s[i] != '-' { + return time.Time{}, false + } + for _, format := range allowedTimestampFormats { + if t, err := time.Parse(format, s); err == nil { + return t, true + } + } + return time.Time{}, false +} diff --git a/tests/vendor/gopkg.in/yaml.v3/scannerc.go b/tests/vendor/gopkg.in/yaml.v3/scannerc.go new file mode 100644 index 000000000..ca0070108 --- /dev/null +++ b/tests/vendor/gopkg.in/yaml.v3/scannerc.go @@ -0,0 +1,3038 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// Copyright (c) 2006-2010 Kirill Simonov +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +package yaml + +import ( + "bytes" + "fmt" +) + +// Introduction +// ************ +// +// The following notes assume that you are familiar with the YAML specification +// (http://yaml.org/spec/1.2/spec.html). We mostly follow it, although in +// some cases we are less restrictive that it requires. +// +// The process of transforming a YAML stream into a sequence of events is +// divided on two steps: Scanning and Parsing. +// +// The Scanner transforms the input stream into a sequence of tokens, while the +// parser transform the sequence of tokens produced by the Scanner into a +// sequence of parsing events. +// +// The Scanner is rather clever and complicated. The Parser, on the contrary, +// is a straightforward implementation of a recursive-descendant parser (or, +// LL(1) parser, as it is usually called). +// +// Actually there are two issues of Scanning that might be called "clever", the +// rest is quite straightforward. The issues are "block collection start" and +// "simple keys". Both issues are explained below in details. +// +// Here the Scanning step is explained and implemented. We start with the list +// of all the tokens produced by the Scanner together with short descriptions. +// +// Now, tokens: +// +// STREAM-START(encoding) # The stream start. +// STREAM-END # The stream end. +// VERSION-DIRECTIVE(major,minor) # The '%YAML' directive. +// TAG-DIRECTIVE(handle,prefix) # The '%TAG' directive. +// DOCUMENT-START # '---' +// DOCUMENT-END # '...' +// BLOCK-SEQUENCE-START # Indentation increase denoting a block +// BLOCK-MAPPING-START # sequence or a block mapping. +// BLOCK-END # Indentation decrease. +// FLOW-SEQUENCE-START # '[' +// FLOW-SEQUENCE-END # ']' +// BLOCK-SEQUENCE-START # '{' +// BLOCK-SEQUENCE-END # '}' +// BLOCK-ENTRY # '-' +// FLOW-ENTRY # ',' +// KEY # '?' or nothing (simple keys). +// VALUE # ':' +// ALIAS(anchor) # '*anchor' +// ANCHOR(anchor) # '&anchor' +// TAG(handle,suffix) # '!handle!suffix' +// SCALAR(value,style) # A scalar. +// +// The following two tokens are "virtual" tokens denoting the beginning and the +// end of the stream: +// +// STREAM-START(encoding) +// STREAM-END +// +// We pass the information about the input stream encoding with the +// STREAM-START token. +// +// The next two tokens are responsible for tags: +// +// VERSION-DIRECTIVE(major,minor) +// TAG-DIRECTIVE(handle,prefix) +// +// Example: +// +// %YAML 1.1 +// %TAG ! !foo +// %TAG !yaml! tag:yaml.org,2002: +// --- +// +// The correspoding sequence of tokens: +// +// STREAM-START(utf-8) +// VERSION-DIRECTIVE(1,1) +// TAG-DIRECTIVE("!","!foo") +// TAG-DIRECTIVE("!yaml","tag:yaml.org,2002:") +// DOCUMENT-START +// STREAM-END +// +// Note that the VERSION-DIRECTIVE and TAG-DIRECTIVE tokens occupy a whole +// line. +// +// The document start and end indicators are represented by: +// +// DOCUMENT-START +// DOCUMENT-END +// +// Note that if a YAML stream contains an implicit document (without '---' +// and '...' indicators), no DOCUMENT-START and DOCUMENT-END tokens will be +// produced. +// +// In the following examples, we present whole documents together with the +// produced tokens. +// +// 1. An implicit document: +// +// 'a scalar' +// +// Tokens: +// +// STREAM-START(utf-8) +// SCALAR("a scalar",single-quoted) +// STREAM-END +// +// 2. An explicit document: +// +// --- +// 'a scalar' +// ... +// +// Tokens: +// +// STREAM-START(utf-8) +// DOCUMENT-START +// SCALAR("a scalar",single-quoted) +// DOCUMENT-END +// STREAM-END +// +// 3. Several documents in a stream: +// +// 'a scalar' +// --- +// 'another scalar' +// --- +// 'yet another scalar' +// +// Tokens: +// +// STREAM-START(utf-8) +// SCALAR("a scalar",single-quoted) +// DOCUMENT-START +// SCALAR("another scalar",single-quoted) +// DOCUMENT-START +// SCALAR("yet another scalar",single-quoted) +// STREAM-END +// +// We have already introduced the SCALAR token above. The following tokens are +// used to describe aliases, anchors, tag, and scalars: +// +// ALIAS(anchor) +// ANCHOR(anchor) +// TAG(handle,suffix) +// SCALAR(value,style) +// +// The following series of examples illustrate the usage of these tokens: +// +// 1. A recursive sequence: +// +// &A [ *A ] +// +// Tokens: +// +// STREAM-START(utf-8) +// ANCHOR("A") +// FLOW-SEQUENCE-START +// ALIAS("A") +// FLOW-SEQUENCE-END +// STREAM-END +// +// 2. A tagged scalar: +// +// !!float "3.14" # A good approximation. +// +// Tokens: +// +// STREAM-START(utf-8) +// TAG("!!","float") +// SCALAR("3.14",double-quoted) +// STREAM-END +// +// 3. Various scalar styles: +// +// --- # Implicit empty plain scalars do not produce tokens. +// --- a plain scalar +// --- 'a single-quoted scalar' +// --- "a double-quoted scalar" +// --- |- +// a literal scalar +// --- >- +// a folded +// scalar +// +// Tokens: +// +// STREAM-START(utf-8) +// DOCUMENT-START +// DOCUMENT-START +// SCALAR("a plain scalar",plain) +// DOCUMENT-START +// SCALAR("a single-quoted scalar",single-quoted) +// DOCUMENT-START +// SCALAR("a double-quoted scalar",double-quoted) +// DOCUMENT-START +// SCALAR("a literal scalar",literal) +// DOCUMENT-START +// SCALAR("a folded scalar",folded) +// STREAM-END +// +// Now it's time to review collection-related tokens. We will start with +// flow collections: +// +// FLOW-SEQUENCE-START +// FLOW-SEQUENCE-END +// FLOW-MAPPING-START +// FLOW-MAPPING-END +// FLOW-ENTRY +// KEY +// VALUE +// +// The tokens FLOW-SEQUENCE-START, FLOW-SEQUENCE-END, FLOW-MAPPING-START, and +// FLOW-MAPPING-END represent the indicators '[', ']', '{', and '}' +// correspondingly. FLOW-ENTRY represent the ',' indicator. Finally the +// indicators '?' and ':', which are used for denoting mapping keys and values, +// are represented by the KEY and VALUE tokens. +// +// The following examples show flow collections: +// +// 1. A flow sequence: +// +// [item 1, item 2, item 3] +// +// Tokens: +// +// STREAM-START(utf-8) +// FLOW-SEQUENCE-START +// SCALAR("item 1",plain) +// FLOW-ENTRY +// SCALAR("item 2",plain) +// FLOW-ENTRY +// SCALAR("item 3",plain) +// FLOW-SEQUENCE-END +// STREAM-END +// +// 2. A flow mapping: +// +// { +// a simple key: a value, # Note that the KEY token is produced. +// ? a complex key: another value, +// } +// +// Tokens: +// +// STREAM-START(utf-8) +// FLOW-MAPPING-START +// KEY +// SCALAR("a simple key",plain) +// VALUE +// SCALAR("a value",plain) +// FLOW-ENTRY +// KEY +// SCALAR("a complex key",plain) +// VALUE +// SCALAR("another value",plain) +// FLOW-ENTRY +// FLOW-MAPPING-END +// STREAM-END +// +// A simple key is a key which is not denoted by the '?' indicator. Note that +// the Scanner still produce the KEY token whenever it encounters a simple key. +// +// For scanning block collections, the following tokens are used (note that we +// repeat KEY and VALUE here): +// +// BLOCK-SEQUENCE-START +// BLOCK-MAPPING-START +// BLOCK-END +// BLOCK-ENTRY +// KEY +// VALUE +// +// The tokens BLOCK-SEQUENCE-START and BLOCK-MAPPING-START denote indentation +// increase that precedes a block collection (cf. the INDENT token in Python). +// The token BLOCK-END denote indentation decrease that ends a block collection +// (cf. the DEDENT token in Python). However YAML has some syntax pecularities +// that makes detections of these tokens more complex. +// +// The tokens BLOCK-ENTRY, KEY, and VALUE are used to represent the indicators +// '-', '?', and ':' correspondingly. +// +// The following examples show how the tokens BLOCK-SEQUENCE-START, +// BLOCK-MAPPING-START, and BLOCK-END are emitted by the Scanner: +// +// 1. Block sequences: +// +// - item 1 +// - item 2 +// - +// - item 3.1 +// - item 3.2 +// - +// key 1: value 1 +// key 2: value 2 +// +// Tokens: +// +// STREAM-START(utf-8) +// BLOCK-SEQUENCE-START +// BLOCK-ENTRY +// SCALAR("item 1",plain) +// BLOCK-ENTRY +// SCALAR("item 2",plain) +// BLOCK-ENTRY +// BLOCK-SEQUENCE-START +// BLOCK-ENTRY +// SCALAR("item 3.1",plain) +// BLOCK-ENTRY +// SCALAR("item 3.2",plain) +// BLOCK-END +// BLOCK-ENTRY +// BLOCK-MAPPING-START +// KEY +// SCALAR("key 1",plain) +// VALUE +// SCALAR("value 1",plain) +// KEY +// SCALAR("key 2",plain) +// VALUE +// SCALAR("value 2",plain) +// BLOCK-END +// BLOCK-END +// STREAM-END +// +// 2. Block mappings: +// +// a simple key: a value # The KEY token is produced here. +// ? a complex key +// : another value +// a mapping: +// key 1: value 1 +// key 2: value 2 +// a sequence: +// - item 1 +// - item 2 +// +// Tokens: +// +// STREAM-START(utf-8) +// BLOCK-MAPPING-START +// KEY +// SCALAR("a simple key",plain) +// VALUE +// SCALAR("a value",plain) +// KEY +// SCALAR("a complex key",plain) +// VALUE +// SCALAR("another value",plain) +// KEY +// SCALAR("a mapping",plain) +// BLOCK-MAPPING-START +// KEY +// SCALAR("key 1",plain) +// VALUE +// SCALAR("value 1",plain) +// KEY +// SCALAR("key 2",plain) +// VALUE +// SCALAR("value 2",plain) +// BLOCK-END +// KEY +// SCALAR("a sequence",plain) +// VALUE +// BLOCK-SEQUENCE-START +// BLOCK-ENTRY +// SCALAR("item 1",plain) +// BLOCK-ENTRY +// SCALAR("item 2",plain) +// BLOCK-END +// BLOCK-END +// STREAM-END +// +// YAML does not always require to start a new block collection from a new +// line. If the current line contains only '-', '?', and ':' indicators, a new +// block collection may start at the current line. The following examples +// illustrate this case: +// +// 1. Collections in a sequence: +// +// - - item 1 +// - item 2 +// - key 1: value 1 +// key 2: value 2 +// - ? complex key +// : complex value +// +// Tokens: +// +// STREAM-START(utf-8) +// BLOCK-SEQUENCE-START +// BLOCK-ENTRY +// BLOCK-SEQUENCE-START +// BLOCK-ENTRY +// SCALAR("item 1",plain) +// BLOCK-ENTRY +// SCALAR("item 2",plain) +// BLOCK-END +// BLOCK-ENTRY +// BLOCK-MAPPING-START +// KEY +// SCALAR("key 1",plain) +// VALUE +// SCALAR("value 1",plain) +// KEY +// SCALAR("key 2",plain) +// VALUE +// SCALAR("value 2",plain) +// BLOCK-END +// BLOCK-ENTRY +// BLOCK-MAPPING-START +// KEY +// SCALAR("complex key") +// VALUE +// SCALAR("complex value") +// BLOCK-END +// BLOCK-END +// STREAM-END +// +// 2. Collections in a mapping: +// +// ? a sequence +// : - item 1 +// - item 2 +// ? a mapping +// : key 1: value 1 +// key 2: value 2 +// +// Tokens: +// +// STREAM-START(utf-8) +// BLOCK-MAPPING-START +// KEY +// SCALAR("a sequence",plain) +// VALUE +// BLOCK-SEQUENCE-START +// BLOCK-ENTRY +// SCALAR("item 1",plain) +// BLOCK-ENTRY +// SCALAR("item 2",plain) +// BLOCK-END +// KEY +// SCALAR("a mapping",plain) +// VALUE +// BLOCK-MAPPING-START +// KEY +// SCALAR("key 1",plain) +// VALUE +// SCALAR("value 1",plain) +// KEY +// SCALAR("key 2",plain) +// VALUE +// SCALAR("value 2",plain) +// BLOCK-END +// BLOCK-END +// STREAM-END +// +// YAML also permits non-indented sequences if they are included into a block +// mapping. In this case, the token BLOCK-SEQUENCE-START is not produced: +// +// key: +// - item 1 # BLOCK-SEQUENCE-START is NOT produced here. +// - item 2 +// +// Tokens: +// +// STREAM-START(utf-8) +// BLOCK-MAPPING-START +// KEY +// SCALAR("key",plain) +// VALUE +// BLOCK-ENTRY +// SCALAR("item 1",plain) +// BLOCK-ENTRY +// SCALAR("item 2",plain) +// BLOCK-END +// + +// Ensure that the buffer contains the required number of characters. +// Return true on success, false on failure (reader error or memory error). +func cache(parser *yaml_parser_t, length int) bool { + // [Go] This was inlined: !cache(A, B) -> unread < B && !update(A, B) + return parser.unread >= length || yaml_parser_update_buffer(parser, length) +} + +// Advance the buffer pointer. +func skip(parser *yaml_parser_t) { + if !is_blank(parser.buffer, parser.buffer_pos) { + parser.newlines = 0 + } + parser.mark.index++ + parser.mark.column++ + parser.unread-- + parser.buffer_pos += width(parser.buffer[parser.buffer_pos]) +} + +func skip_line(parser *yaml_parser_t) { + if is_crlf(parser.buffer, parser.buffer_pos) { + parser.mark.index += 2 + parser.mark.column = 0 + parser.mark.line++ + parser.unread -= 2 + parser.buffer_pos += 2 + parser.newlines++ + } else if is_break(parser.buffer, parser.buffer_pos) { + parser.mark.index++ + parser.mark.column = 0 + parser.mark.line++ + parser.unread-- + parser.buffer_pos += width(parser.buffer[parser.buffer_pos]) + parser.newlines++ + } +} + +// Copy a character to a string buffer and advance pointers. +func read(parser *yaml_parser_t, s []byte) []byte { + if !is_blank(parser.buffer, parser.buffer_pos) { + parser.newlines = 0 + } + w := width(parser.buffer[parser.buffer_pos]) + if w == 0 { + panic("invalid character sequence") + } + if len(s) == 0 { + s = make([]byte, 0, 32) + } + if w == 1 && len(s)+w <= cap(s) { + s = s[:len(s)+1] + s[len(s)-1] = parser.buffer[parser.buffer_pos] + parser.buffer_pos++ + } else { + s = append(s, parser.buffer[parser.buffer_pos:parser.buffer_pos+w]...) + parser.buffer_pos += w + } + parser.mark.index++ + parser.mark.column++ + parser.unread-- + return s +} + +// Copy a line break character to a string buffer and advance pointers. +func read_line(parser *yaml_parser_t, s []byte) []byte { + buf := parser.buffer + pos := parser.buffer_pos + switch { + case buf[pos] == '\r' && buf[pos+1] == '\n': + // CR LF . LF + s = append(s, '\n') + parser.buffer_pos += 2 + parser.mark.index++ + parser.unread-- + case buf[pos] == '\r' || buf[pos] == '\n': + // CR|LF . LF + s = append(s, '\n') + parser.buffer_pos += 1 + case buf[pos] == '\xC2' && buf[pos+1] == '\x85': + // NEL . LF + s = append(s, '\n') + parser.buffer_pos += 2 + case buf[pos] == '\xE2' && buf[pos+1] == '\x80' && (buf[pos+2] == '\xA8' || buf[pos+2] == '\xA9'): + // LS|PS . LS|PS + s = append(s, buf[parser.buffer_pos:pos+3]...) + parser.buffer_pos += 3 + default: + return s + } + parser.mark.index++ + parser.mark.column = 0 + parser.mark.line++ + parser.unread-- + parser.newlines++ + return s +} + +// Get the next token. +func yaml_parser_scan(parser *yaml_parser_t, token *yaml_token_t) bool { + // Erase the token object. + *token = yaml_token_t{} // [Go] Is this necessary? + + // No tokens after STREAM-END or error. + if parser.stream_end_produced || parser.error != yaml_NO_ERROR { + return true + } + + // Ensure that the tokens queue contains enough tokens. + if !parser.token_available { + if !yaml_parser_fetch_more_tokens(parser) { + return false + } + } + + // Fetch the next token from the queue. + *token = parser.tokens[parser.tokens_head] + parser.tokens_head++ + parser.tokens_parsed++ + parser.token_available = false + + if token.typ == yaml_STREAM_END_TOKEN { + parser.stream_end_produced = true + } + return true +} + +// Set the scanner error and return false. +func yaml_parser_set_scanner_error(parser *yaml_parser_t, context string, context_mark yaml_mark_t, problem string) bool { + parser.error = yaml_SCANNER_ERROR + parser.context = context + parser.context_mark = context_mark + parser.problem = problem + parser.problem_mark = parser.mark + return false +} + +func yaml_parser_set_scanner_tag_error(parser *yaml_parser_t, directive bool, context_mark yaml_mark_t, problem string) bool { + context := "while parsing a tag" + if directive { + context = "while parsing a %TAG directive" + } + return yaml_parser_set_scanner_error(parser, context, context_mark, problem) +} + +func trace(args ...interface{}) func() { + pargs := append([]interface{}{"+++"}, args...) + fmt.Println(pargs...) + pargs = append([]interface{}{"---"}, args...) + return func() { fmt.Println(pargs...) } +} + +// Ensure that the tokens queue contains at least one token which can be +// returned to the Parser. +func yaml_parser_fetch_more_tokens(parser *yaml_parser_t) bool { + // While we need more tokens to fetch, do it. + for { + // [Go] The comment parsing logic requires a lookahead of two tokens + // so that foot comments may be parsed in time of associating them + // with the tokens that are parsed before them, and also for line + // comments to be transformed into head comments in some edge cases. + if parser.tokens_head < len(parser.tokens)-2 { + // If a potential simple key is at the head position, we need to fetch + // the next token to disambiguate it. + head_tok_idx, ok := parser.simple_keys_by_tok[parser.tokens_parsed] + if !ok { + break + } else if valid, ok := yaml_simple_key_is_valid(parser, &parser.simple_keys[head_tok_idx]); !ok { + return false + } else if !valid { + break + } + } + // Fetch the next token. + if !yaml_parser_fetch_next_token(parser) { + return false + } + } + + parser.token_available = true + return true +} + +// The dispatcher for token fetchers. +func yaml_parser_fetch_next_token(parser *yaml_parser_t) (ok bool) { + // Ensure that the buffer is initialized. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + // Check if we just started scanning. Fetch STREAM-START then. + if !parser.stream_start_produced { + return yaml_parser_fetch_stream_start(parser) + } + + scan_mark := parser.mark + + // Eat whitespaces and comments until we reach the next token. + if !yaml_parser_scan_to_next_token(parser) { + return false + } + + // [Go] While unrolling indents, transform the head comments of prior + // indentation levels observed after scan_start into foot comments at + // the respective indexes. + + // Check the indentation level against the current column. + if !yaml_parser_unroll_indent(parser, parser.mark.column, scan_mark) { + return false + } + + // Ensure that the buffer contains at least 4 characters. 4 is the length + // of the longest indicators ('--- ' and '... '). + if parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) { + return false + } + + // Is it the end of the stream? + if is_z(parser.buffer, parser.buffer_pos) { + return yaml_parser_fetch_stream_end(parser) + } + + // Is it a directive? + if parser.mark.column == 0 && parser.buffer[parser.buffer_pos] == '%' { + return yaml_parser_fetch_directive(parser) + } + + buf := parser.buffer + pos := parser.buffer_pos + + // Is it the document start indicator? + if parser.mark.column == 0 && buf[pos] == '-' && buf[pos+1] == '-' && buf[pos+2] == '-' && is_blankz(buf, pos+3) { + return yaml_parser_fetch_document_indicator(parser, yaml_DOCUMENT_START_TOKEN) + } + + // Is it the document end indicator? + if parser.mark.column == 0 && buf[pos] == '.' && buf[pos+1] == '.' && buf[pos+2] == '.' && is_blankz(buf, pos+3) { + return yaml_parser_fetch_document_indicator(parser, yaml_DOCUMENT_END_TOKEN) + } + + comment_mark := parser.mark + if len(parser.tokens) > 0 && (parser.flow_level == 0 && buf[pos] == ':' || parser.flow_level > 0 && buf[pos] == ',') { + // Associate any following comments with the prior token. + comment_mark = parser.tokens[len(parser.tokens)-1].start_mark + } + defer func() { + if !ok { + return + } + if len(parser.tokens) > 0 && parser.tokens[len(parser.tokens)-1].typ == yaml_BLOCK_ENTRY_TOKEN { + // Sequence indicators alone have no line comments. It becomes + // a head comment for whatever follows. + return + } + if !yaml_parser_scan_line_comment(parser, comment_mark) { + ok = false + return + } + }() + + // Is it the flow sequence start indicator? + if buf[pos] == '[' { + return yaml_parser_fetch_flow_collection_start(parser, yaml_FLOW_SEQUENCE_START_TOKEN) + } + + // Is it the flow mapping start indicator? + if parser.buffer[parser.buffer_pos] == '{' { + return yaml_parser_fetch_flow_collection_start(parser, yaml_FLOW_MAPPING_START_TOKEN) + } + + // Is it the flow sequence end indicator? + if parser.buffer[parser.buffer_pos] == ']' { + return yaml_parser_fetch_flow_collection_end(parser, + yaml_FLOW_SEQUENCE_END_TOKEN) + } + + // Is it the flow mapping end indicator? + if parser.buffer[parser.buffer_pos] == '}' { + return yaml_parser_fetch_flow_collection_end(parser, + yaml_FLOW_MAPPING_END_TOKEN) + } + + // Is it the flow entry indicator? + if parser.buffer[parser.buffer_pos] == ',' { + return yaml_parser_fetch_flow_entry(parser) + } + + // Is it the block entry indicator? + if parser.buffer[parser.buffer_pos] == '-' && is_blankz(parser.buffer, parser.buffer_pos+1) { + return yaml_parser_fetch_block_entry(parser) + } + + // Is it the key indicator? + if parser.buffer[parser.buffer_pos] == '?' && (parser.flow_level > 0 || is_blankz(parser.buffer, parser.buffer_pos+1)) { + return yaml_parser_fetch_key(parser) + } + + // Is it the value indicator? + if parser.buffer[parser.buffer_pos] == ':' && (parser.flow_level > 0 || is_blankz(parser.buffer, parser.buffer_pos+1)) { + return yaml_parser_fetch_value(parser) + } + + // Is it an alias? + if parser.buffer[parser.buffer_pos] == '*' { + return yaml_parser_fetch_anchor(parser, yaml_ALIAS_TOKEN) + } + + // Is it an anchor? + if parser.buffer[parser.buffer_pos] == '&' { + return yaml_parser_fetch_anchor(parser, yaml_ANCHOR_TOKEN) + } + + // Is it a tag? + if parser.buffer[parser.buffer_pos] == '!' { + return yaml_parser_fetch_tag(parser) + } + + // Is it a literal scalar? + if parser.buffer[parser.buffer_pos] == '|' && parser.flow_level == 0 { + return yaml_parser_fetch_block_scalar(parser, true) + } + + // Is it a folded scalar? + if parser.buffer[parser.buffer_pos] == '>' && parser.flow_level == 0 { + return yaml_parser_fetch_block_scalar(parser, false) + } + + // Is it a single-quoted scalar? + if parser.buffer[parser.buffer_pos] == '\'' { + return yaml_parser_fetch_flow_scalar(parser, true) + } + + // Is it a double-quoted scalar? + if parser.buffer[parser.buffer_pos] == '"' { + return yaml_parser_fetch_flow_scalar(parser, false) + } + + // Is it a plain scalar? + // + // A plain scalar may start with any non-blank characters except + // + // '-', '?', ':', ',', '[', ']', '{', '}', + // '#', '&', '*', '!', '|', '>', '\'', '\"', + // '%', '@', '`'. + // + // In the block context (and, for the '-' indicator, in the flow context + // too), it may also start with the characters + // + // '-', '?', ':' + // + // if it is followed by a non-space character. + // + // The last rule is more restrictive than the specification requires. + // [Go] TODO Make this logic more reasonable. + //switch parser.buffer[parser.buffer_pos] { + //case '-', '?', ':', ',', '?', '-', ',', ':', ']', '[', '}', '{', '&', '#', '!', '*', '>', '|', '"', '\'', '@', '%', '-', '`': + //} + if !(is_blankz(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == '-' || + parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == ':' || + parser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == '[' || + parser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '{' || + parser.buffer[parser.buffer_pos] == '}' || parser.buffer[parser.buffer_pos] == '#' || + parser.buffer[parser.buffer_pos] == '&' || parser.buffer[parser.buffer_pos] == '*' || + parser.buffer[parser.buffer_pos] == '!' || parser.buffer[parser.buffer_pos] == '|' || + parser.buffer[parser.buffer_pos] == '>' || parser.buffer[parser.buffer_pos] == '\'' || + parser.buffer[parser.buffer_pos] == '"' || parser.buffer[parser.buffer_pos] == '%' || + parser.buffer[parser.buffer_pos] == '@' || parser.buffer[parser.buffer_pos] == '`') || + (parser.buffer[parser.buffer_pos] == '-' && !is_blank(parser.buffer, parser.buffer_pos+1)) || + (parser.flow_level == 0 && + (parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == ':') && + !is_blankz(parser.buffer, parser.buffer_pos+1)) { + return yaml_parser_fetch_plain_scalar(parser) + } + + // If we don't determine the token type so far, it is an error. + return yaml_parser_set_scanner_error(parser, + "while scanning for the next token", parser.mark, + "found character that cannot start any token") +} + +func yaml_simple_key_is_valid(parser *yaml_parser_t, simple_key *yaml_simple_key_t) (valid, ok bool) { + if !simple_key.possible { + return false, true + } + + // The 1.2 specification says: + // + // "If the ? indicator is omitted, parsing needs to see past the + // implicit key to recognize it as such. To limit the amount of + // lookahead required, the “:” indicator must appear at most 1024 + // Unicode characters beyond the start of the key. In addition, the key + // is restricted to a single line." + // + if simple_key.mark.line < parser.mark.line || simple_key.mark.index+1024 < parser.mark.index { + // Check if the potential simple key to be removed is required. + if simple_key.required { + return false, yaml_parser_set_scanner_error(parser, + "while scanning a simple key", simple_key.mark, + "could not find expected ':'") + } + simple_key.possible = false + return false, true + } + return true, true +} + +// Check if a simple key may start at the current position and add it if +// needed. +func yaml_parser_save_simple_key(parser *yaml_parser_t) bool { + // A simple key is required at the current position if the scanner is in + // the block context and the current column coincides with the indentation + // level. + + required := parser.flow_level == 0 && parser.indent == parser.mark.column + + // + // If the current position may start a simple key, save it. + // + if parser.simple_key_allowed { + simple_key := yaml_simple_key_t{ + possible: true, + required: required, + token_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head), + mark: parser.mark, + } + + if !yaml_parser_remove_simple_key(parser) { + return false + } + parser.simple_keys[len(parser.simple_keys)-1] = simple_key + parser.simple_keys_by_tok[simple_key.token_number] = len(parser.simple_keys) - 1 + } + return true +} + +// Remove a potential simple key at the current flow level. +func yaml_parser_remove_simple_key(parser *yaml_parser_t) bool { + i := len(parser.simple_keys) - 1 + if parser.simple_keys[i].possible { + // If the key is required, it is an error. + if parser.simple_keys[i].required { + return yaml_parser_set_scanner_error(parser, + "while scanning a simple key", parser.simple_keys[i].mark, + "could not find expected ':'") + } + // Remove the key from the stack. + parser.simple_keys[i].possible = false + delete(parser.simple_keys_by_tok, parser.simple_keys[i].token_number) + } + return true +} + +// max_flow_level limits the flow_level +const max_flow_level = 10000 + +// Increase the flow level and resize the simple key list if needed. +func yaml_parser_increase_flow_level(parser *yaml_parser_t) bool { + // Reset the simple key on the next level. + parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{ + possible: false, + required: false, + token_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head), + mark: parser.mark, + }) + + // Increase the flow level. + parser.flow_level++ + if parser.flow_level > max_flow_level { + return yaml_parser_set_scanner_error(parser, + "while increasing flow level", parser.simple_keys[len(parser.simple_keys)-1].mark, + fmt.Sprintf("exceeded max depth of %d", max_flow_level)) + } + return true +} + +// Decrease the flow level. +func yaml_parser_decrease_flow_level(parser *yaml_parser_t) bool { + if parser.flow_level > 0 { + parser.flow_level-- + last := len(parser.simple_keys) - 1 + delete(parser.simple_keys_by_tok, parser.simple_keys[last].token_number) + parser.simple_keys = parser.simple_keys[:last] + } + return true +} + +// max_indents limits the indents stack size +const max_indents = 10000 + +// Push the current indentation level to the stack and set the new level +// the current column is greater than the indentation level. In this case, +// append or insert the specified token into the token queue. +func yaml_parser_roll_indent(parser *yaml_parser_t, column, number int, typ yaml_token_type_t, mark yaml_mark_t) bool { + // In the flow context, do nothing. + if parser.flow_level > 0 { + return true + } + + if parser.indent < column { + // Push the current indentation level to the stack and set the new + // indentation level. + parser.indents = append(parser.indents, parser.indent) + parser.indent = column + if len(parser.indents) > max_indents { + return yaml_parser_set_scanner_error(parser, + "while increasing indent level", parser.simple_keys[len(parser.simple_keys)-1].mark, + fmt.Sprintf("exceeded max depth of %d", max_indents)) + } + + // Create a token and insert it into the queue. + token := yaml_token_t{ + typ: typ, + start_mark: mark, + end_mark: mark, + } + if number > -1 { + number -= parser.tokens_parsed + } + yaml_insert_token(parser, number, &token) + } + return true +} + +// Pop indentation levels from the indents stack until the current level +// becomes less or equal to the column. For each indentation level, append +// the BLOCK-END token. +func yaml_parser_unroll_indent(parser *yaml_parser_t, column int, scan_mark yaml_mark_t) bool { + // In the flow context, do nothing. + if parser.flow_level > 0 { + return true + } + + block_mark := scan_mark + block_mark.index-- + + // Loop through the indentation levels in the stack. + for parser.indent > column { + + // [Go] Reposition the end token before potential following + // foot comments of parent blocks. For that, search + // backwards for recent comments that were at the same + // indent as the block that is ending now. + stop_index := block_mark.index + for i := len(parser.comments) - 1; i >= 0; i-- { + comment := &parser.comments[i] + + if comment.end_mark.index < stop_index { + // Don't go back beyond the start of the comment/whitespace scan, unless column < 0. + // If requested indent column is < 0, then the document is over and everything else + // is a foot anyway. + break + } + if comment.start_mark.column == parser.indent+1 { + // This is a good match. But maybe there's a former comment + // at that same indent level, so keep searching. + block_mark = comment.start_mark + } + + // While the end of the former comment matches with + // the start of the following one, we know there's + // nothing in between and scanning is still safe. + stop_index = comment.scan_mark.index + } + + // Create a token and append it to the queue. + token := yaml_token_t{ + typ: yaml_BLOCK_END_TOKEN, + start_mark: block_mark, + end_mark: block_mark, + } + yaml_insert_token(parser, -1, &token) + + // Pop the indentation level. + parser.indent = parser.indents[len(parser.indents)-1] + parser.indents = parser.indents[:len(parser.indents)-1] + } + return true +} + +// Initialize the scanner and produce the STREAM-START token. +func yaml_parser_fetch_stream_start(parser *yaml_parser_t) bool { + + // Set the initial indentation. + parser.indent = -1 + + // Initialize the simple key stack. + parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{}) + + parser.simple_keys_by_tok = make(map[int]int) + + // A simple key is allowed at the beginning of the stream. + parser.simple_key_allowed = true + + // We have started. + parser.stream_start_produced = true + + // Create the STREAM-START token and append it to the queue. + token := yaml_token_t{ + typ: yaml_STREAM_START_TOKEN, + start_mark: parser.mark, + end_mark: parser.mark, + encoding: parser.encoding, + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the STREAM-END token and shut down the scanner. +func yaml_parser_fetch_stream_end(parser *yaml_parser_t) bool { + + // Force new line. + if parser.mark.column != 0 { + parser.mark.column = 0 + parser.mark.line++ + } + + // Reset the indentation level. + if !yaml_parser_unroll_indent(parser, -1, parser.mark) { + return false + } + + // Reset simple keys. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + parser.simple_key_allowed = false + + // Create the STREAM-END token and append it to the queue. + token := yaml_token_t{ + typ: yaml_STREAM_END_TOKEN, + start_mark: parser.mark, + end_mark: parser.mark, + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce a VERSION-DIRECTIVE or TAG-DIRECTIVE token. +func yaml_parser_fetch_directive(parser *yaml_parser_t) bool { + // Reset the indentation level. + if !yaml_parser_unroll_indent(parser, -1, parser.mark) { + return false + } + + // Reset simple keys. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + parser.simple_key_allowed = false + + // Create the YAML-DIRECTIVE or TAG-DIRECTIVE token. + token := yaml_token_t{} + if !yaml_parser_scan_directive(parser, &token) { + return false + } + // Append the token to the queue. + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the DOCUMENT-START or DOCUMENT-END token. +func yaml_parser_fetch_document_indicator(parser *yaml_parser_t, typ yaml_token_type_t) bool { + // Reset the indentation level. + if !yaml_parser_unroll_indent(parser, -1, parser.mark) { + return false + } + + // Reset simple keys. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + parser.simple_key_allowed = false + + // Consume the token. + start_mark := parser.mark + + skip(parser) + skip(parser) + skip(parser) + + end_mark := parser.mark + + // Create the DOCUMENT-START or DOCUMENT-END token. + token := yaml_token_t{ + typ: typ, + start_mark: start_mark, + end_mark: end_mark, + } + // Append the token to the queue. + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the FLOW-SEQUENCE-START or FLOW-MAPPING-START token. +func yaml_parser_fetch_flow_collection_start(parser *yaml_parser_t, typ yaml_token_type_t) bool { + + // The indicators '[' and '{' may start a simple key. + if !yaml_parser_save_simple_key(parser) { + return false + } + + // Increase the flow level. + if !yaml_parser_increase_flow_level(parser) { + return false + } + + // A simple key may follow the indicators '[' and '{'. + parser.simple_key_allowed = true + + // Consume the token. + start_mark := parser.mark + skip(parser) + end_mark := parser.mark + + // Create the FLOW-SEQUENCE-START of FLOW-MAPPING-START token. + token := yaml_token_t{ + typ: typ, + start_mark: start_mark, + end_mark: end_mark, + } + // Append the token to the queue. + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the FLOW-SEQUENCE-END or FLOW-MAPPING-END token. +func yaml_parser_fetch_flow_collection_end(parser *yaml_parser_t, typ yaml_token_type_t) bool { + // Reset any potential simple key on the current flow level. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + // Decrease the flow level. + if !yaml_parser_decrease_flow_level(parser) { + return false + } + + // No simple keys after the indicators ']' and '}'. + parser.simple_key_allowed = false + + // Consume the token. + + start_mark := parser.mark + skip(parser) + end_mark := parser.mark + + // Create the FLOW-SEQUENCE-END of FLOW-MAPPING-END token. + token := yaml_token_t{ + typ: typ, + start_mark: start_mark, + end_mark: end_mark, + } + // Append the token to the queue. + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the FLOW-ENTRY token. +func yaml_parser_fetch_flow_entry(parser *yaml_parser_t) bool { + // Reset any potential simple keys on the current flow level. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + // Simple keys are allowed after ','. + parser.simple_key_allowed = true + + // Consume the token. + start_mark := parser.mark + skip(parser) + end_mark := parser.mark + + // Create the FLOW-ENTRY token and append it to the queue. + token := yaml_token_t{ + typ: yaml_FLOW_ENTRY_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the BLOCK-ENTRY token. +func yaml_parser_fetch_block_entry(parser *yaml_parser_t) bool { + // Check if the scanner is in the block context. + if parser.flow_level == 0 { + // Check if we are allowed to start a new entry. + if !parser.simple_key_allowed { + return yaml_parser_set_scanner_error(parser, "", parser.mark, + "block sequence entries are not allowed in this context") + } + // Add the BLOCK-SEQUENCE-START token if needed. + if !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_SEQUENCE_START_TOKEN, parser.mark) { + return false + } + } else { + // It is an error for the '-' indicator to occur in the flow context, + // but we let the Parser detect and report about it because the Parser + // is able to point to the context. + } + + // Reset any potential simple keys on the current flow level. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + // Simple keys are allowed after '-'. + parser.simple_key_allowed = true + + // Consume the token. + start_mark := parser.mark + skip(parser) + end_mark := parser.mark + + // Create the BLOCK-ENTRY token and append it to the queue. + token := yaml_token_t{ + typ: yaml_BLOCK_ENTRY_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the KEY token. +func yaml_parser_fetch_key(parser *yaml_parser_t) bool { + + // In the block context, additional checks are required. + if parser.flow_level == 0 { + // Check if we are allowed to start a new key (not nessesary simple). + if !parser.simple_key_allowed { + return yaml_parser_set_scanner_error(parser, "", parser.mark, + "mapping keys are not allowed in this context") + } + // Add the BLOCK-MAPPING-START token if needed. + if !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_MAPPING_START_TOKEN, parser.mark) { + return false + } + } + + // Reset any potential simple keys on the current flow level. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + // Simple keys are allowed after '?' in the block context. + parser.simple_key_allowed = parser.flow_level == 0 + + // Consume the token. + start_mark := parser.mark + skip(parser) + end_mark := parser.mark + + // Create the KEY token and append it to the queue. + token := yaml_token_t{ + typ: yaml_KEY_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the VALUE token. +func yaml_parser_fetch_value(parser *yaml_parser_t) bool { + + simple_key := &parser.simple_keys[len(parser.simple_keys)-1] + + // Have we found a simple key? + if valid, ok := yaml_simple_key_is_valid(parser, simple_key); !ok { + return false + + } else if valid { + + // Create the KEY token and insert it into the queue. + token := yaml_token_t{ + typ: yaml_KEY_TOKEN, + start_mark: simple_key.mark, + end_mark: simple_key.mark, + } + yaml_insert_token(parser, simple_key.token_number-parser.tokens_parsed, &token) + + // In the block context, we may need to add the BLOCK-MAPPING-START token. + if !yaml_parser_roll_indent(parser, simple_key.mark.column, + simple_key.token_number, + yaml_BLOCK_MAPPING_START_TOKEN, simple_key.mark) { + return false + } + + // Remove the simple key. + simple_key.possible = false + delete(parser.simple_keys_by_tok, simple_key.token_number) + + // A simple key cannot follow another simple key. + parser.simple_key_allowed = false + + } else { + // The ':' indicator follows a complex key. + + // In the block context, extra checks are required. + if parser.flow_level == 0 { + + // Check if we are allowed to start a complex value. + if !parser.simple_key_allowed { + return yaml_parser_set_scanner_error(parser, "", parser.mark, + "mapping values are not allowed in this context") + } + + // Add the BLOCK-MAPPING-START token if needed. + if !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_MAPPING_START_TOKEN, parser.mark) { + return false + } + } + + // Simple keys after ':' are allowed in the block context. + parser.simple_key_allowed = parser.flow_level == 0 + } + + // Consume the token. + start_mark := parser.mark + skip(parser) + end_mark := parser.mark + + // Create the VALUE token and append it to the queue. + token := yaml_token_t{ + typ: yaml_VALUE_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the ALIAS or ANCHOR token. +func yaml_parser_fetch_anchor(parser *yaml_parser_t, typ yaml_token_type_t) bool { + // An anchor or an alias could be a simple key. + if !yaml_parser_save_simple_key(parser) { + return false + } + + // A simple key cannot follow an anchor or an alias. + parser.simple_key_allowed = false + + // Create the ALIAS or ANCHOR token and append it to the queue. + var token yaml_token_t + if !yaml_parser_scan_anchor(parser, &token, typ) { + return false + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the TAG token. +func yaml_parser_fetch_tag(parser *yaml_parser_t) bool { + // A tag could be a simple key. + if !yaml_parser_save_simple_key(parser) { + return false + } + + // A simple key cannot follow a tag. + parser.simple_key_allowed = false + + // Create the TAG token and append it to the queue. + var token yaml_token_t + if !yaml_parser_scan_tag(parser, &token) { + return false + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the SCALAR(...,literal) or SCALAR(...,folded) tokens. +func yaml_parser_fetch_block_scalar(parser *yaml_parser_t, literal bool) bool { + // Remove any potential simple keys. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + // A simple key may follow a block scalar. + parser.simple_key_allowed = true + + // Create the SCALAR token and append it to the queue. + var token yaml_token_t + if !yaml_parser_scan_block_scalar(parser, &token, literal) { + return false + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the SCALAR(...,single-quoted) or SCALAR(...,double-quoted) tokens. +func yaml_parser_fetch_flow_scalar(parser *yaml_parser_t, single bool) bool { + // A plain scalar could be a simple key. + if !yaml_parser_save_simple_key(parser) { + return false + } + + // A simple key cannot follow a flow scalar. + parser.simple_key_allowed = false + + // Create the SCALAR token and append it to the queue. + var token yaml_token_t + if !yaml_parser_scan_flow_scalar(parser, &token, single) { + return false + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the SCALAR(...,plain) token. +func yaml_parser_fetch_plain_scalar(parser *yaml_parser_t) bool { + // A plain scalar could be a simple key. + if !yaml_parser_save_simple_key(parser) { + return false + } + + // A simple key cannot follow a flow scalar. + parser.simple_key_allowed = false + + // Create the SCALAR token and append it to the queue. + var token yaml_token_t + if !yaml_parser_scan_plain_scalar(parser, &token) { + return false + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Eat whitespaces and comments until the next token is found. +func yaml_parser_scan_to_next_token(parser *yaml_parser_t) bool { + + scan_mark := parser.mark + + // Until the next token is not found. + for { + // Allow the BOM mark to start a line. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if parser.mark.column == 0 && is_bom(parser.buffer, parser.buffer_pos) { + skip(parser) + } + + // Eat whitespaces. + // Tabs are allowed: + // - in the flow context + // - in the block context, but not at the beginning of the line or + // after '-', '?', or ':' (complex value). + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + for parser.buffer[parser.buffer_pos] == ' ' || ((parser.flow_level > 0 || !parser.simple_key_allowed) && parser.buffer[parser.buffer_pos] == '\t') { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Check if we just had a line comment under a sequence entry that + // looks more like a header to the following content. Similar to this: + // + // - # The comment + // - Some data + // + // If so, transform the line comment to a head comment and reposition. + if len(parser.comments) > 0 && len(parser.tokens) > 1 { + tokenA := parser.tokens[len(parser.tokens)-2] + tokenB := parser.tokens[len(parser.tokens)-1] + comment := &parser.comments[len(parser.comments)-1] + if tokenA.typ == yaml_BLOCK_SEQUENCE_START_TOKEN && tokenB.typ == yaml_BLOCK_ENTRY_TOKEN && len(comment.line) > 0 && !is_break(parser.buffer, parser.buffer_pos) { + // If it was in the prior line, reposition so it becomes a + // header of the follow up token. Otherwise, keep it in place + // so it becomes a header of the former. + comment.head = comment.line + comment.line = nil + if comment.start_mark.line == parser.mark.line-1 { + comment.token_mark = parser.mark + } + } + } + + // Eat a comment until a line break. + if parser.buffer[parser.buffer_pos] == '#' { + if !yaml_parser_scan_comments(parser, scan_mark) { + return false + } + } + + // If it is a line break, eat it. + if is_break(parser.buffer, parser.buffer_pos) { + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + skip_line(parser) + + // In the block context, a new line may start a simple key. + if parser.flow_level == 0 { + parser.simple_key_allowed = true + } + } else { + break // We have found a token. + } + } + + return true +} + +// Scan a YAML-DIRECTIVE or TAG-DIRECTIVE token. +// +// Scope: +// %YAML 1.1 # a comment \n +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +// %TAG !yaml! tag:yaml.org,2002: \n +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +// +func yaml_parser_scan_directive(parser *yaml_parser_t, token *yaml_token_t) bool { + // Eat '%'. + start_mark := parser.mark + skip(parser) + + // Scan the directive name. + var name []byte + if !yaml_parser_scan_directive_name(parser, start_mark, &name) { + return false + } + + // Is it a YAML directive? + if bytes.Equal(name, []byte("YAML")) { + // Scan the VERSION directive value. + var major, minor int8 + if !yaml_parser_scan_version_directive_value(parser, start_mark, &major, &minor) { + return false + } + end_mark := parser.mark + + // Create a VERSION-DIRECTIVE token. + *token = yaml_token_t{ + typ: yaml_VERSION_DIRECTIVE_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + major: major, + minor: minor, + } + + // Is it a TAG directive? + } else if bytes.Equal(name, []byte("TAG")) { + // Scan the TAG directive value. + var handle, prefix []byte + if !yaml_parser_scan_tag_directive_value(parser, start_mark, &handle, &prefix) { + return false + } + end_mark := parser.mark + + // Create a TAG-DIRECTIVE token. + *token = yaml_token_t{ + typ: yaml_TAG_DIRECTIVE_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + value: handle, + prefix: prefix, + } + + // Unknown directive. + } else { + yaml_parser_set_scanner_error(parser, "while scanning a directive", + start_mark, "found unknown directive name") + return false + } + + // Eat the rest of the line including any comments. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + for is_blank(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + if parser.buffer[parser.buffer_pos] == '#' { + // [Go] Discard this inline comment for the time being. + //if !yaml_parser_scan_line_comment(parser, start_mark) { + // return false + //} + for !is_breakz(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + } + + // Check if we are at the end of the line. + if !is_breakz(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a directive", + start_mark, "did not find expected comment or line break") + return false + } + + // Eat a line break. + if is_break(parser.buffer, parser.buffer_pos) { + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + skip_line(parser) + } + + return true +} + +// Scan the directive name. +// +// Scope: +// %YAML 1.1 # a comment \n +// ^^^^ +// %TAG !yaml! tag:yaml.org,2002: \n +// ^^^ +// +func yaml_parser_scan_directive_name(parser *yaml_parser_t, start_mark yaml_mark_t, name *[]byte) bool { + // Consume the directive name. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + var s []byte + for is_alpha(parser.buffer, parser.buffer_pos) { + s = read(parser, s) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Check if the name is empty. + if len(s) == 0 { + yaml_parser_set_scanner_error(parser, "while scanning a directive", + start_mark, "could not find expected directive name") + return false + } + + // Check for an blank character after the name. + if !is_blankz(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a directive", + start_mark, "found unexpected non-alphabetical character") + return false + } + *name = s + return true +} + +// Scan the value of VERSION-DIRECTIVE. +// +// Scope: +// %YAML 1.1 # a comment \n +// ^^^^^^ +func yaml_parser_scan_version_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, major, minor *int8) bool { + // Eat whitespaces. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + for is_blank(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Consume the major version number. + if !yaml_parser_scan_version_directive_number(parser, start_mark, major) { + return false + } + + // Eat '.'. + if parser.buffer[parser.buffer_pos] != '.' { + return yaml_parser_set_scanner_error(parser, "while scanning a %YAML directive", + start_mark, "did not find expected digit or '.' character") + } + + skip(parser) + + // Consume the minor version number. + if !yaml_parser_scan_version_directive_number(parser, start_mark, minor) { + return false + } + return true +} + +const max_number_length = 2 + +// Scan the version number of VERSION-DIRECTIVE. +// +// Scope: +// %YAML 1.1 # a comment \n +// ^ +// %YAML 1.1 # a comment \n +// ^ +func yaml_parser_scan_version_directive_number(parser *yaml_parser_t, start_mark yaml_mark_t, number *int8) bool { + + // Repeat while the next character is digit. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + var value, length int8 + for is_digit(parser.buffer, parser.buffer_pos) { + // Check if the number is too long. + length++ + if length > max_number_length { + return yaml_parser_set_scanner_error(parser, "while scanning a %YAML directive", + start_mark, "found extremely long version number") + } + value = value*10 + int8(as_digit(parser.buffer, parser.buffer_pos)) + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Check if the number was present. + if length == 0 { + return yaml_parser_set_scanner_error(parser, "while scanning a %YAML directive", + start_mark, "did not find expected version number") + } + *number = value + return true +} + +// Scan the value of a TAG-DIRECTIVE token. +// +// Scope: +// %TAG !yaml! tag:yaml.org,2002: \n +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +// +func yaml_parser_scan_tag_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, handle, prefix *[]byte) bool { + var handle_value, prefix_value []byte + + // Eat whitespaces. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + for is_blank(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Scan a handle. + if !yaml_parser_scan_tag_handle(parser, true, start_mark, &handle_value) { + return false + } + + // Expect a whitespace. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if !is_blank(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a %TAG directive", + start_mark, "did not find expected whitespace") + return false + } + + // Eat whitespaces. + for is_blank(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Scan a prefix. + if !yaml_parser_scan_tag_uri(parser, true, nil, start_mark, &prefix_value) { + return false + } + + // Expect a whitespace or line break. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if !is_blankz(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a %TAG directive", + start_mark, "did not find expected whitespace or line break") + return false + } + + *handle = handle_value + *prefix = prefix_value + return true +} + +func yaml_parser_scan_anchor(parser *yaml_parser_t, token *yaml_token_t, typ yaml_token_type_t) bool { + var s []byte + + // Eat the indicator character. + start_mark := parser.mark + skip(parser) + + // Consume the value. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + for is_alpha(parser.buffer, parser.buffer_pos) { + s = read(parser, s) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + end_mark := parser.mark + + /* + * Check if length of the anchor is greater than 0 and it is followed by + * a whitespace character or one of the indicators: + * + * '?', ':', ',', ']', '}', '%', '@', '`'. + */ + + if len(s) == 0 || + !(is_blankz(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == '?' || + parser.buffer[parser.buffer_pos] == ':' || parser.buffer[parser.buffer_pos] == ',' || + parser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '}' || + parser.buffer[parser.buffer_pos] == '%' || parser.buffer[parser.buffer_pos] == '@' || + parser.buffer[parser.buffer_pos] == '`') { + context := "while scanning an alias" + if typ == yaml_ANCHOR_TOKEN { + context = "while scanning an anchor" + } + yaml_parser_set_scanner_error(parser, context, start_mark, + "did not find expected alphabetic or numeric character") + return false + } + + // Create a token. + *token = yaml_token_t{ + typ: typ, + start_mark: start_mark, + end_mark: end_mark, + value: s, + } + + return true +} + +/* + * Scan a TAG token. + */ + +func yaml_parser_scan_tag(parser *yaml_parser_t, token *yaml_token_t) bool { + var handle, suffix []byte + + start_mark := parser.mark + + // Check if the tag is in the canonical form. + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + + if parser.buffer[parser.buffer_pos+1] == '<' { + // Keep the handle as '' + + // Eat '!<' + skip(parser) + skip(parser) + + // Consume the tag value. + if !yaml_parser_scan_tag_uri(parser, false, nil, start_mark, &suffix) { + return false + } + + // Check for '>' and eat it. + if parser.buffer[parser.buffer_pos] != '>' { + yaml_parser_set_scanner_error(parser, "while scanning a tag", + start_mark, "did not find the expected '>'") + return false + } + + skip(parser) + } else { + // The tag has either the '!suffix' or the '!handle!suffix' form. + + // First, try to scan a handle. + if !yaml_parser_scan_tag_handle(parser, false, start_mark, &handle) { + return false + } + + // Check if it is, indeed, handle. + if handle[0] == '!' && len(handle) > 1 && handle[len(handle)-1] == '!' { + // Scan the suffix now. + if !yaml_parser_scan_tag_uri(parser, false, nil, start_mark, &suffix) { + return false + } + } else { + // It wasn't a handle after all. Scan the rest of the tag. + if !yaml_parser_scan_tag_uri(parser, false, handle, start_mark, &suffix) { + return false + } + + // Set the handle to '!'. + handle = []byte{'!'} + + // A special case: the '!' tag. Set the handle to '' and the + // suffix to '!'. + if len(suffix) == 0 { + handle, suffix = suffix, handle + } + } + } + + // Check the character which ends the tag. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if !is_blankz(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a tag", + start_mark, "did not find expected whitespace or line break") + return false + } + + end_mark := parser.mark + + // Create a token. + *token = yaml_token_t{ + typ: yaml_TAG_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + value: handle, + suffix: suffix, + } + return true +} + +// Scan a tag handle. +func yaml_parser_scan_tag_handle(parser *yaml_parser_t, directive bool, start_mark yaml_mark_t, handle *[]byte) bool { + // Check the initial '!' character. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if parser.buffer[parser.buffer_pos] != '!' { + yaml_parser_set_scanner_tag_error(parser, directive, + start_mark, "did not find expected '!'") + return false + } + + var s []byte + + // Copy the '!' character. + s = read(parser, s) + + // Copy all subsequent alphabetical and numerical characters. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + for is_alpha(parser.buffer, parser.buffer_pos) { + s = read(parser, s) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Check if the trailing character is '!' and copy it. + if parser.buffer[parser.buffer_pos] == '!' { + s = read(parser, s) + } else { + // It's either the '!' tag or not really a tag handle. If it's a %TAG + // directive, it's an error. If it's a tag token, it must be a part of URI. + if directive && string(s) != "!" { + yaml_parser_set_scanner_tag_error(parser, directive, + start_mark, "did not find expected '!'") + return false + } + } + + *handle = s + return true +} + +// Scan a tag. +func yaml_parser_scan_tag_uri(parser *yaml_parser_t, directive bool, head []byte, start_mark yaml_mark_t, uri *[]byte) bool { + //size_t length = head ? strlen((char *)head) : 0 + var s []byte + hasTag := len(head) > 0 + + // Copy the head if needed. + // + // Note that we don't copy the leading '!' character. + if len(head) > 1 { + s = append(s, head[1:]...) + } + + // Scan the tag. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + // The set of characters that may appear in URI is as follows: + // + // '0'-'9', 'A'-'Z', 'a'-'z', '_', '-', ';', '/', '?', ':', '@', '&', + // '=', '+', '$', ',', '.', '!', '~', '*', '\'', '(', ')', '[', ']', + // '%'. + // [Go] TODO Convert this into more reasonable logic. + for is_alpha(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == ';' || + parser.buffer[parser.buffer_pos] == '/' || parser.buffer[parser.buffer_pos] == '?' || + parser.buffer[parser.buffer_pos] == ':' || parser.buffer[parser.buffer_pos] == '@' || + parser.buffer[parser.buffer_pos] == '&' || parser.buffer[parser.buffer_pos] == '=' || + parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '$' || + parser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == '.' || + parser.buffer[parser.buffer_pos] == '!' || parser.buffer[parser.buffer_pos] == '~' || + parser.buffer[parser.buffer_pos] == '*' || parser.buffer[parser.buffer_pos] == '\'' || + parser.buffer[parser.buffer_pos] == '(' || parser.buffer[parser.buffer_pos] == ')' || + parser.buffer[parser.buffer_pos] == '[' || parser.buffer[parser.buffer_pos] == ']' || + parser.buffer[parser.buffer_pos] == '%' { + // Check if it is a URI-escape sequence. + if parser.buffer[parser.buffer_pos] == '%' { + if !yaml_parser_scan_uri_escapes(parser, directive, start_mark, &s) { + return false + } + } else { + s = read(parser, s) + } + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + hasTag = true + } + + if !hasTag { + yaml_parser_set_scanner_tag_error(parser, directive, + start_mark, "did not find expected tag URI") + return false + } + *uri = s + return true +} + +// Decode an URI-escape sequence corresponding to a single UTF-8 character. +func yaml_parser_scan_uri_escapes(parser *yaml_parser_t, directive bool, start_mark yaml_mark_t, s *[]byte) bool { + + // Decode the required number of characters. + w := 1024 + for w > 0 { + // Check for a URI-escaped octet. + if parser.unread < 3 && !yaml_parser_update_buffer(parser, 3) { + return false + } + + if !(parser.buffer[parser.buffer_pos] == '%' && + is_hex(parser.buffer, parser.buffer_pos+1) && + is_hex(parser.buffer, parser.buffer_pos+2)) { + return yaml_parser_set_scanner_tag_error(parser, directive, + start_mark, "did not find URI escaped octet") + } + + // Get the octet. + octet := byte((as_hex(parser.buffer, parser.buffer_pos+1) << 4) + as_hex(parser.buffer, parser.buffer_pos+2)) + + // If it is the leading octet, determine the length of the UTF-8 sequence. + if w == 1024 { + w = width(octet) + if w == 0 { + return yaml_parser_set_scanner_tag_error(parser, directive, + start_mark, "found an incorrect leading UTF-8 octet") + } + } else { + // Check if the trailing octet is correct. + if octet&0xC0 != 0x80 { + return yaml_parser_set_scanner_tag_error(parser, directive, + start_mark, "found an incorrect trailing UTF-8 octet") + } + } + + // Copy the octet and move the pointers. + *s = append(*s, octet) + skip(parser) + skip(parser) + skip(parser) + w-- + } + return true +} + +// Scan a block scalar. +func yaml_parser_scan_block_scalar(parser *yaml_parser_t, token *yaml_token_t, literal bool) bool { + // Eat the indicator '|' or '>'. + start_mark := parser.mark + skip(parser) + + // Scan the additional block scalar indicators. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + // Check for a chomping indicator. + var chomping, increment int + if parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '-' { + // Set the chomping method and eat the indicator. + if parser.buffer[parser.buffer_pos] == '+' { + chomping = +1 + } else { + chomping = -1 + } + skip(parser) + + // Check for an indentation indicator. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if is_digit(parser.buffer, parser.buffer_pos) { + // Check that the indentation is greater than 0. + if parser.buffer[parser.buffer_pos] == '0' { + yaml_parser_set_scanner_error(parser, "while scanning a block scalar", + start_mark, "found an indentation indicator equal to 0") + return false + } + + // Get the indentation level and eat the indicator. + increment = as_digit(parser.buffer, parser.buffer_pos) + skip(parser) + } + + } else if is_digit(parser.buffer, parser.buffer_pos) { + // Do the same as above, but in the opposite order. + + if parser.buffer[parser.buffer_pos] == '0' { + yaml_parser_set_scanner_error(parser, "while scanning a block scalar", + start_mark, "found an indentation indicator equal to 0") + return false + } + increment = as_digit(parser.buffer, parser.buffer_pos) + skip(parser) + + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '-' { + if parser.buffer[parser.buffer_pos] == '+' { + chomping = +1 + } else { + chomping = -1 + } + skip(parser) + } + } + + // Eat whitespaces and comments to the end of the line. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + for is_blank(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + if parser.buffer[parser.buffer_pos] == '#' { + if !yaml_parser_scan_line_comment(parser, start_mark) { + return false + } + for !is_breakz(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + } + + // Check if we are at the end of the line. + if !is_breakz(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a block scalar", + start_mark, "did not find expected comment or line break") + return false + } + + // Eat a line break. + if is_break(parser.buffer, parser.buffer_pos) { + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + skip_line(parser) + } + + end_mark := parser.mark + + // Set the indentation level if it was specified. + var indent int + if increment > 0 { + if parser.indent >= 0 { + indent = parser.indent + increment + } else { + indent = increment + } + } + + // Scan the leading line breaks and determine the indentation level if needed. + var s, leading_break, trailing_breaks []byte + if !yaml_parser_scan_block_scalar_breaks(parser, &indent, &trailing_breaks, start_mark, &end_mark) { + return false + } + + // Scan the block scalar content. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + var leading_blank, trailing_blank bool + for parser.mark.column == indent && !is_z(parser.buffer, parser.buffer_pos) { + // We are at the beginning of a non-empty line. + + // Is it a trailing whitespace? + trailing_blank = is_blank(parser.buffer, parser.buffer_pos) + + // Check if we need to fold the leading line break. + if !literal && !leading_blank && !trailing_blank && len(leading_break) > 0 && leading_break[0] == '\n' { + // Do we need to join the lines by space? + if len(trailing_breaks) == 0 { + s = append(s, ' ') + } + } else { + s = append(s, leading_break...) + } + leading_break = leading_break[:0] + + // Append the remaining line breaks. + s = append(s, trailing_breaks...) + trailing_breaks = trailing_breaks[:0] + + // Is it a leading whitespace? + leading_blank = is_blank(parser.buffer, parser.buffer_pos) + + // Consume the current line. + for !is_breakz(parser.buffer, parser.buffer_pos) { + s = read(parser, s) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Consume the line break. + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + + leading_break = read_line(parser, leading_break) + + // Eat the following indentation spaces and line breaks. + if !yaml_parser_scan_block_scalar_breaks(parser, &indent, &trailing_breaks, start_mark, &end_mark) { + return false + } + } + + // Chomp the tail. + if chomping != -1 { + s = append(s, leading_break...) + } + if chomping == 1 { + s = append(s, trailing_breaks...) + } + + // Create a token. + *token = yaml_token_t{ + typ: yaml_SCALAR_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + value: s, + style: yaml_LITERAL_SCALAR_STYLE, + } + if !literal { + token.style = yaml_FOLDED_SCALAR_STYLE + } + return true +} + +// Scan indentation spaces and line breaks for a block scalar. Determine the +// indentation level if needed. +func yaml_parser_scan_block_scalar_breaks(parser *yaml_parser_t, indent *int, breaks *[]byte, start_mark yaml_mark_t, end_mark *yaml_mark_t) bool { + *end_mark = parser.mark + + // Eat the indentation spaces and line breaks. + max_indent := 0 + for { + // Eat the indentation spaces. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + for (*indent == 0 || parser.mark.column < *indent) && is_space(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + if parser.mark.column > max_indent { + max_indent = parser.mark.column + } + + // Check for a tab character messing the indentation. + if (*indent == 0 || parser.mark.column < *indent) && is_tab(parser.buffer, parser.buffer_pos) { + return yaml_parser_set_scanner_error(parser, "while scanning a block scalar", + start_mark, "found a tab character where an indentation space is expected") + } + + // Have we found a non-empty line? + if !is_break(parser.buffer, parser.buffer_pos) { + break + } + + // Consume the line break. + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + // [Go] Should really be returning breaks instead. + *breaks = read_line(parser, *breaks) + *end_mark = parser.mark + } + + // Determine the indentation level if needed. + if *indent == 0 { + *indent = max_indent + if *indent < parser.indent+1 { + *indent = parser.indent + 1 + } + if *indent < 1 { + *indent = 1 + } + } + return true +} + +// Scan a quoted scalar. +func yaml_parser_scan_flow_scalar(parser *yaml_parser_t, token *yaml_token_t, single bool) bool { + // Eat the left quote. + start_mark := parser.mark + skip(parser) + + // Consume the content of the quoted scalar. + var s, leading_break, trailing_breaks, whitespaces []byte + for { + // Check that there are no document indicators at the beginning of the line. + if parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) { + return false + } + + if parser.mark.column == 0 && + ((parser.buffer[parser.buffer_pos+0] == '-' && + parser.buffer[parser.buffer_pos+1] == '-' && + parser.buffer[parser.buffer_pos+2] == '-') || + (parser.buffer[parser.buffer_pos+0] == '.' && + parser.buffer[parser.buffer_pos+1] == '.' && + parser.buffer[parser.buffer_pos+2] == '.')) && + is_blankz(parser.buffer, parser.buffer_pos+3) { + yaml_parser_set_scanner_error(parser, "while scanning a quoted scalar", + start_mark, "found unexpected document indicator") + return false + } + + // Check for EOF. + if is_z(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a quoted scalar", + start_mark, "found unexpected end of stream") + return false + } + + // Consume non-blank characters. + leading_blanks := false + for !is_blankz(parser.buffer, parser.buffer_pos) { + if single && parser.buffer[parser.buffer_pos] == '\'' && parser.buffer[parser.buffer_pos+1] == '\'' { + // Is is an escaped single quote. + s = append(s, '\'') + skip(parser) + skip(parser) + + } else if single && parser.buffer[parser.buffer_pos] == '\'' { + // It is a right single quote. + break + } else if !single && parser.buffer[parser.buffer_pos] == '"' { + // It is a right double quote. + break + + } else if !single && parser.buffer[parser.buffer_pos] == '\\' && is_break(parser.buffer, parser.buffer_pos+1) { + // It is an escaped line break. + if parser.unread < 3 && !yaml_parser_update_buffer(parser, 3) { + return false + } + skip(parser) + skip_line(parser) + leading_blanks = true + break + + } else if !single && parser.buffer[parser.buffer_pos] == '\\' { + // It is an escape sequence. + code_length := 0 + + // Check the escape character. + switch parser.buffer[parser.buffer_pos+1] { + case '0': + s = append(s, 0) + case 'a': + s = append(s, '\x07') + case 'b': + s = append(s, '\x08') + case 't', '\t': + s = append(s, '\x09') + case 'n': + s = append(s, '\x0A') + case 'v': + s = append(s, '\x0B') + case 'f': + s = append(s, '\x0C') + case 'r': + s = append(s, '\x0D') + case 'e': + s = append(s, '\x1B') + case ' ': + s = append(s, '\x20') + case '"': + s = append(s, '"') + case '\'': + s = append(s, '\'') + case '\\': + s = append(s, '\\') + case 'N': // NEL (#x85) + s = append(s, '\xC2') + s = append(s, '\x85') + case '_': // #xA0 + s = append(s, '\xC2') + s = append(s, '\xA0') + case 'L': // LS (#x2028) + s = append(s, '\xE2') + s = append(s, '\x80') + s = append(s, '\xA8') + case 'P': // PS (#x2029) + s = append(s, '\xE2') + s = append(s, '\x80') + s = append(s, '\xA9') + case 'x': + code_length = 2 + case 'u': + code_length = 4 + case 'U': + code_length = 8 + default: + yaml_parser_set_scanner_error(parser, "while parsing a quoted scalar", + start_mark, "found unknown escape character") + return false + } + + skip(parser) + skip(parser) + + // Consume an arbitrary escape code. + if code_length > 0 { + var value int + + // Scan the character value. + if parser.unread < code_length && !yaml_parser_update_buffer(parser, code_length) { + return false + } + for k := 0; k < code_length; k++ { + if !is_hex(parser.buffer, parser.buffer_pos+k) { + yaml_parser_set_scanner_error(parser, "while parsing a quoted scalar", + start_mark, "did not find expected hexdecimal number") + return false + } + value = (value << 4) + as_hex(parser.buffer, parser.buffer_pos+k) + } + + // Check the value and write the character. + if (value >= 0xD800 && value <= 0xDFFF) || value > 0x10FFFF { + yaml_parser_set_scanner_error(parser, "while parsing a quoted scalar", + start_mark, "found invalid Unicode character escape code") + return false + } + if value <= 0x7F { + s = append(s, byte(value)) + } else if value <= 0x7FF { + s = append(s, byte(0xC0+(value>>6))) + s = append(s, byte(0x80+(value&0x3F))) + } else if value <= 0xFFFF { + s = append(s, byte(0xE0+(value>>12))) + s = append(s, byte(0x80+((value>>6)&0x3F))) + s = append(s, byte(0x80+(value&0x3F))) + } else { + s = append(s, byte(0xF0+(value>>18))) + s = append(s, byte(0x80+((value>>12)&0x3F))) + s = append(s, byte(0x80+((value>>6)&0x3F))) + s = append(s, byte(0x80+(value&0x3F))) + } + + // Advance the pointer. + for k := 0; k < code_length; k++ { + skip(parser) + } + } + } else { + // It is a non-escaped non-blank character. + s = read(parser, s) + } + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + } + + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + // Check if we are at the end of the scalar. + if single { + if parser.buffer[parser.buffer_pos] == '\'' { + break + } + } else { + if parser.buffer[parser.buffer_pos] == '"' { + break + } + } + + // Consume blank characters. + for is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos) { + if is_blank(parser.buffer, parser.buffer_pos) { + // Consume a space or a tab character. + if !leading_blanks { + whitespaces = read(parser, whitespaces) + } else { + skip(parser) + } + } else { + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + + // Check if it is a first line break. + if !leading_blanks { + whitespaces = whitespaces[:0] + leading_break = read_line(parser, leading_break) + leading_blanks = true + } else { + trailing_breaks = read_line(parser, trailing_breaks) + } + } + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Join the whitespaces or fold line breaks. + if leading_blanks { + // Do we need to fold line breaks? + if len(leading_break) > 0 && leading_break[0] == '\n' { + if len(trailing_breaks) == 0 { + s = append(s, ' ') + } else { + s = append(s, trailing_breaks...) + } + } else { + s = append(s, leading_break...) + s = append(s, trailing_breaks...) + } + trailing_breaks = trailing_breaks[:0] + leading_break = leading_break[:0] + } else { + s = append(s, whitespaces...) + whitespaces = whitespaces[:0] + } + } + + // Eat the right quote. + skip(parser) + end_mark := parser.mark + + // Create a token. + *token = yaml_token_t{ + typ: yaml_SCALAR_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + value: s, + style: yaml_SINGLE_QUOTED_SCALAR_STYLE, + } + if !single { + token.style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } + return true +} + +// Scan a plain scalar. +func yaml_parser_scan_plain_scalar(parser *yaml_parser_t, token *yaml_token_t) bool { + + var s, leading_break, trailing_breaks, whitespaces []byte + var leading_blanks bool + var indent = parser.indent + 1 + + start_mark := parser.mark + end_mark := parser.mark + + // Consume the content of the plain scalar. + for { + // Check for a document indicator. + if parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) { + return false + } + if parser.mark.column == 0 && + ((parser.buffer[parser.buffer_pos+0] == '-' && + parser.buffer[parser.buffer_pos+1] == '-' && + parser.buffer[parser.buffer_pos+2] == '-') || + (parser.buffer[parser.buffer_pos+0] == '.' && + parser.buffer[parser.buffer_pos+1] == '.' && + parser.buffer[parser.buffer_pos+2] == '.')) && + is_blankz(parser.buffer, parser.buffer_pos+3) { + break + } + + // Check for a comment. + if parser.buffer[parser.buffer_pos] == '#' { + break + } + + // Consume non-blank characters. + for !is_blankz(parser.buffer, parser.buffer_pos) { + + // Check for indicators that may end a plain scalar. + if (parser.buffer[parser.buffer_pos] == ':' && is_blankz(parser.buffer, parser.buffer_pos+1)) || + (parser.flow_level > 0 && + (parser.buffer[parser.buffer_pos] == ',' || + parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == '[' || + parser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '{' || + parser.buffer[parser.buffer_pos] == '}')) { + break + } + + // Check if we need to join whitespaces and breaks. + if leading_blanks || len(whitespaces) > 0 { + if leading_blanks { + // Do we need to fold line breaks? + if leading_break[0] == '\n' { + if len(trailing_breaks) == 0 { + s = append(s, ' ') + } else { + s = append(s, trailing_breaks...) + } + } else { + s = append(s, leading_break...) + s = append(s, trailing_breaks...) + } + trailing_breaks = trailing_breaks[:0] + leading_break = leading_break[:0] + leading_blanks = false + } else { + s = append(s, whitespaces...) + whitespaces = whitespaces[:0] + } + } + + // Copy the character. + s = read(parser, s) + + end_mark = parser.mark + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + } + + // Is it the end? + if !(is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos)) { + break + } + + // Consume blank characters. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + for is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos) { + if is_blank(parser.buffer, parser.buffer_pos) { + + // Check for tab characters that abuse indentation. + if leading_blanks && parser.mark.column < indent && is_tab(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a plain scalar", + start_mark, "found a tab character that violates indentation") + return false + } + + // Consume a space or a tab character. + if !leading_blanks { + whitespaces = read(parser, whitespaces) + } else { + skip(parser) + } + } else { + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + + // Check if it is a first line break. + if !leading_blanks { + whitespaces = whitespaces[:0] + leading_break = read_line(parser, leading_break) + leading_blanks = true + } else { + trailing_breaks = read_line(parser, trailing_breaks) + } + } + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Check indentation level. + if parser.flow_level == 0 && parser.mark.column < indent { + break + } + } + + // Create a token. + *token = yaml_token_t{ + typ: yaml_SCALAR_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + value: s, + style: yaml_PLAIN_SCALAR_STYLE, + } + + // Note that we change the 'simple_key_allowed' flag. + if leading_blanks { + parser.simple_key_allowed = true + } + return true +} + +func yaml_parser_scan_line_comment(parser *yaml_parser_t, token_mark yaml_mark_t) bool { + if parser.newlines > 0 { + return true + } + + var start_mark yaml_mark_t + var text []byte + + for peek := 0; peek < 512; peek++ { + if parser.unread < peek+1 && !yaml_parser_update_buffer(parser, peek+1) { + break + } + if is_blank(parser.buffer, parser.buffer_pos+peek) { + continue + } + if parser.buffer[parser.buffer_pos+peek] == '#' { + seen := parser.mark.index+peek + for { + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if is_breakz(parser.buffer, parser.buffer_pos) { + if parser.mark.index >= seen { + break + } + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + skip_line(parser) + } else if parser.mark.index >= seen { + if len(text) == 0 { + start_mark = parser.mark + } + text = read(parser, text) + } else { + skip(parser) + } + } + } + break + } + if len(text) > 0 { + parser.comments = append(parser.comments, yaml_comment_t{ + token_mark: token_mark, + start_mark: start_mark, + line: text, + }) + } + return true +} + +func yaml_parser_scan_comments(parser *yaml_parser_t, scan_mark yaml_mark_t) bool { + token := parser.tokens[len(parser.tokens)-1] + + if token.typ == yaml_FLOW_ENTRY_TOKEN && len(parser.tokens) > 1 { + token = parser.tokens[len(parser.tokens)-2] + } + + var token_mark = token.start_mark + var start_mark yaml_mark_t + var next_indent = parser.indent + if next_indent < 0 { + next_indent = 0 + } + + var recent_empty = false + var first_empty = parser.newlines <= 1 + + var line = parser.mark.line + var column = parser.mark.column + + var text []byte + + // The foot line is the place where a comment must start to + // still be considered as a foot of the prior content. + // If there's some content in the currently parsed line, then + // the foot is the line below it. + var foot_line = -1 + if scan_mark.line > 0 { + foot_line = parser.mark.line-parser.newlines+1 + if parser.newlines == 0 && parser.mark.column > 1 { + foot_line++ + } + } + + var peek = 0 + for ; peek < 512; peek++ { + if parser.unread < peek+1 && !yaml_parser_update_buffer(parser, peek+1) { + break + } + column++ + if is_blank(parser.buffer, parser.buffer_pos+peek) { + continue + } + c := parser.buffer[parser.buffer_pos+peek] + var close_flow = parser.flow_level > 0 && (c == ']' || c == '}') + if close_flow || is_breakz(parser.buffer, parser.buffer_pos+peek) { + // Got line break or terminator. + if close_flow || !recent_empty { + if close_flow || first_empty && (start_mark.line == foot_line && token.typ != yaml_VALUE_TOKEN || start_mark.column-1 < next_indent) { + // This is the first empty line and there were no empty lines before, + // so this initial part of the comment is a foot of the prior token + // instead of being a head for the following one. Split it up. + // Alternatively, this might also be the last comment inside a flow + // scope, so it must be a footer. + if len(text) > 0 { + if start_mark.column-1 < next_indent { + // If dedented it's unrelated to the prior token. + token_mark = start_mark + } + parser.comments = append(parser.comments, yaml_comment_t{ + scan_mark: scan_mark, + token_mark: token_mark, + start_mark: start_mark, + end_mark: yaml_mark_t{parser.mark.index + peek, line, column}, + foot: text, + }) + scan_mark = yaml_mark_t{parser.mark.index + peek, line, column} + token_mark = scan_mark + text = nil + } + } else { + if len(text) > 0 && parser.buffer[parser.buffer_pos+peek] != 0 { + text = append(text, '\n') + } + } + } + if !is_break(parser.buffer, parser.buffer_pos+peek) { + break + } + first_empty = false + recent_empty = true + column = 0 + line++ + continue + } + + if len(text) > 0 && (close_flow || column-1 < next_indent && column != start_mark.column) { + // The comment at the different indentation is a foot of the + // preceding data rather than a head of the upcoming one. + parser.comments = append(parser.comments, yaml_comment_t{ + scan_mark: scan_mark, + token_mark: token_mark, + start_mark: start_mark, + end_mark: yaml_mark_t{parser.mark.index + peek, line, column}, + foot: text, + }) + scan_mark = yaml_mark_t{parser.mark.index + peek, line, column} + token_mark = scan_mark + text = nil + } + + if parser.buffer[parser.buffer_pos+peek] != '#' { + break + } + + if len(text) == 0 { + start_mark = yaml_mark_t{parser.mark.index + peek, line, column} + } else { + text = append(text, '\n') + } + + recent_empty = false + + // Consume until after the consumed comment line. + seen := parser.mark.index+peek + for { + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if is_breakz(parser.buffer, parser.buffer_pos) { + if parser.mark.index >= seen { + break + } + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + skip_line(parser) + } else if parser.mark.index >= seen { + text = read(parser, text) + } else { + skip(parser) + } + } + + peek = 0 + column = 0 + line = parser.mark.line + next_indent = parser.indent + if next_indent < 0 { + next_indent = 0 + } + } + + if len(text) > 0 { + parser.comments = append(parser.comments, yaml_comment_t{ + scan_mark: scan_mark, + token_mark: start_mark, + start_mark: start_mark, + end_mark: yaml_mark_t{parser.mark.index + peek - 1, line, column}, + head: text, + }) + } + return true +} diff --git a/tests/vendor/gopkg.in/yaml.v3/sorter.go b/tests/vendor/gopkg.in/yaml.v3/sorter.go new file mode 100644 index 000000000..9210ece7e --- /dev/null +++ b/tests/vendor/gopkg.in/yaml.v3/sorter.go @@ -0,0 +1,134 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package yaml + +import ( + "reflect" + "unicode" +) + +type keyList []reflect.Value + +func (l keyList) Len() int { return len(l) } +func (l keyList) Swap(i, j int) { l[i], l[j] = l[j], l[i] } +func (l keyList) Less(i, j int) bool { + a := l[i] + b := l[j] + ak := a.Kind() + bk := b.Kind() + for (ak == reflect.Interface || ak == reflect.Ptr) && !a.IsNil() { + a = a.Elem() + ak = a.Kind() + } + for (bk == reflect.Interface || bk == reflect.Ptr) && !b.IsNil() { + b = b.Elem() + bk = b.Kind() + } + af, aok := keyFloat(a) + bf, bok := keyFloat(b) + if aok && bok { + if af != bf { + return af < bf + } + if ak != bk { + return ak < bk + } + return numLess(a, b) + } + if ak != reflect.String || bk != reflect.String { + return ak < bk + } + ar, br := []rune(a.String()), []rune(b.String()) + digits := false + for i := 0; i < len(ar) && i < len(br); i++ { + if ar[i] == br[i] { + digits = unicode.IsDigit(ar[i]) + continue + } + al := unicode.IsLetter(ar[i]) + bl := unicode.IsLetter(br[i]) + if al && bl { + return ar[i] < br[i] + } + if al || bl { + if digits { + return al + } else { + return bl + } + } + var ai, bi int + var an, bn int64 + if ar[i] == '0' || br[i] == '0' { + for j := i - 1; j >= 0 && unicode.IsDigit(ar[j]); j-- { + if ar[j] != '0' { + an = 1 + bn = 1 + break + } + } + } + for ai = i; ai < len(ar) && unicode.IsDigit(ar[ai]); ai++ { + an = an*10 + int64(ar[ai]-'0') + } + for bi = i; bi < len(br) && unicode.IsDigit(br[bi]); bi++ { + bn = bn*10 + int64(br[bi]-'0') + } + if an != bn { + return an < bn + } + if ai != bi { + return ai < bi + } + return ar[i] < br[i] + } + return len(ar) < len(br) +} + +// keyFloat returns a float value for v if it is a number/bool +// and whether it is a number/bool or not. +func keyFloat(v reflect.Value) (f float64, ok bool) { + switch v.Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return float64(v.Int()), true + case reflect.Float32, reflect.Float64: + return v.Float(), true + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return float64(v.Uint()), true + case reflect.Bool: + if v.Bool() { + return 1, true + } + return 0, true + } + return 0, false +} + +// numLess returns whether a < b. +// a and b must necessarily have the same kind. +func numLess(a, b reflect.Value) bool { + switch a.Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return a.Int() < b.Int() + case reflect.Float32, reflect.Float64: + return a.Float() < b.Float() + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return a.Uint() < b.Uint() + case reflect.Bool: + return !a.Bool() && b.Bool() + } + panic("not a number") +} diff --git a/tests/vendor/gopkg.in/yaml.v3/writerc.go b/tests/vendor/gopkg.in/yaml.v3/writerc.go new file mode 100644 index 000000000..b8a116bf9 --- /dev/null +++ b/tests/vendor/gopkg.in/yaml.v3/writerc.go @@ -0,0 +1,48 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// Copyright (c) 2006-2010 Kirill Simonov +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +package yaml + +// Set the writer error and return false. +func yaml_emitter_set_writer_error(emitter *yaml_emitter_t, problem string) bool { + emitter.error = yaml_WRITER_ERROR + emitter.problem = problem + return false +} + +// Flush the output buffer. +func yaml_emitter_flush(emitter *yaml_emitter_t) bool { + if emitter.write_handler == nil { + panic("write handler not set") + } + + // Check if the buffer is empty. + if emitter.buffer_pos == 0 { + return true + } + + if err := emitter.write_handler(emitter, emitter.buffer[:emitter.buffer_pos]); err != nil { + return yaml_emitter_set_writer_error(emitter, "write error: "+err.Error()) + } + emitter.buffer_pos = 0 + return true +} diff --git a/tests/vendor/gopkg.in/yaml.v3/yaml.go b/tests/vendor/gopkg.in/yaml.v3/yaml.go new file mode 100644 index 000000000..8cec6da48 --- /dev/null +++ b/tests/vendor/gopkg.in/yaml.v3/yaml.go @@ -0,0 +1,698 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Package yaml implements YAML support for the Go language. +// +// Source code and other details for the project are available at GitHub: +// +// https://github.com/go-yaml/yaml +// +package yaml + +import ( + "errors" + "fmt" + "io" + "reflect" + "strings" + "sync" + "unicode/utf8" +) + +// The Unmarshaler interface may be implemented by types to customize their +// behavior when being unmarshaled from a YAML document. +type Unmarshaler interface { + UnmarshalYAML(value *Node) error +} + +type obsoleteUnmarshaler interface { + UnmarshalYAML(unmarshal func(interface{}) error) error +} + +// The Marshaler interface may be implemented by types to customize their +// behavior when being marshaled into a YAML document. The returned value +// is marshaled in place of the original value implementing Marshaler. +// +// If an error is returned by MarshalYAML, the marshaling procedure stops +// and returns with the provided error. +type Marshaler interface { + MarshalYAML() (interface{}, error) +} + +// Unmarshal decodes the first document found within the in byte slice +// and assigns decoded values into the out value. +// +// Maps and pointers (to a struct, string, int, etc) are accepted as out +// values. If an internal pointer within a struct is not initialized, +// the yaml package will initialize it if necessary for unmarshalling +// the provided data. The out parameter must not be nil. +// +// The type of the decoded values should be compatible with the respective +// values in out. If one or more values cannot be decoded due to a type +// mismatches, decoding continues partially until the end of the YAML +// content, and a *yaml.TypeError is returned with details for all +// missed values. +// +// Struct fields are only unmarshalled if they are exported (have an +// upper case first letter), and are unmarshalled using the field name +// lowercased as the default key. Custom keys may be defined via the +// "yaml" name in the field tag: the content preceding the first comma +// is used as the key, and the following comma-separated options are +// used to tweak the marshalling process (see Marshal). +// Conflicting names result in a runtime error. +// +// For example: +// +// type T struct { +// F int `yaml:"a,omitempty"` +// B int +// } +// var t T +// yaml.Unmarshal([]byte("a: 1\nb: 2"), &t) +// +// See the documentation of Marshal for the format of tags and a list of +// supported tag options. +// +func Unmarshal(in []byte, out interface{}) (err error) { + return unmarshal(in, out, false) +} + +// A Decoder reads and decodes YAML values from an input stream. +type Decoder struct { + parser *parser + knownFields bool +} + +// NewDecoder returns a new decoder that reads from r. +// +// The decoder introduces its own buffering and may read +// data from r beyond the YAML values requested. +func NewDecoder(r io.Reader) *Decoder { + return &Decoder{ + parser: newParserFromReader(r), + } +} + +// KnownFields ensures that the keys in decoded mappings to +// exist as fields in the struct being decoded into. +func (dec *Decoder) KnownFields(enable bool) { + dec.knownFields = enable +} + +// Decode reads the next YAML-encoded value from its input +// and stores it in the value pointed to by v. +// +// See the documentation for Unmarshal for details about the +// conversion of YAML into a Go value. +func (dec *Decoder) Decode(v interface{}) (err error) { + d := newDecoder() + d.knownFields = dec.knownFields + defer handleErr(&err) + node := dec.parser.parse() + if node == nil { + return io.EOF + } + out := reflect.ValueOf(v) + if out.Kind() == reflect.Ptr && !out.IsNil() { + out = out.Elem() + } + d.unmarshal(node, out) + if len(d.terrors) > 0 { + return &TypeError{d.terrors} + } + return nil +} + +// Decode decodes the node and stores its data into the value pointed to by v. +// +// See the documentation for Unmarshal for details about the +// conversion of YAML into a Go value. +func (n *Node) Decode(v interface{}) (err error) { + d := newDecoder() + defer handleErr(&err) + out := reflect.ValueOf(v) + if out.Kind() == reflect.Ptr && !out.IsNil() { + out = out.Elem() + } + d.unmarshal(n, out) + if len(d.terrors) > 0 { + return &TypeError{d.terrors} + } + return nil +} + +func unmarshal(in []byte, out interface{}, strict bool) (err error) { + defer handleErr(&err) + d := newDecoder() + p := newParser(in) + defer p.destroy() + node := p.parse() + if node != nil { + v := reflect.ValueOf(out) + if v.Kind() == reflect.Ptr && !v.IsNil() { + v = v.Elem() + } + d.unmarshal(node, v) + } + if len(d.terrors) > 0 { + return &TypeError{d.terrors} + } + return nil +} + +// Marshal serializes the value provided into a YAML document. The structure +// of the generated document will reflect the structure of the value itself. +// Maps and pointers (to struct, string, int, etc) are accepted as the in value. +// +// Struct fields are only marshalled if they are exported (have an upper case +// first letter), and are marshalled using the field name lowercased as the +// default key. Custom keys may be defined via the "yaml" name in the field +// tag: the content preceding the first comma is used as the key, and the +// following comma-separated options are used to tweak the marshalling process. +// Conflicting names result in a runtime error. +// +// The field tag format accepted is: +// +// `(...) yaml:"[<key>][,<flag1>[,<flag2>]]" (...)` +// +// The following flags are currently supported: +// +// omitempty Only include the field if it's not set to the zero +// value for the type or to empty slices or maps. +// Zero valued structs will be omitted if all their public +// fields are zero, unless they implement an IsZero +// method (see the IsZeroer interface type), in which +// case the field will be excluded if IsZero returns true. +// +// flow Marshal using a flow style (useful for structs, +// sequences and maps). +// +// inline Inline the field, which must be a struct or a map, +// causing all of its fields or keys to be processed as if +// they were part of the outer struct. For maps, keys must +// not conflict with the yaml keys of other struct fields. +// +// In addition, if the key is "-", the field is ignored. +// +// For example: +// +// type T struct { +// F int `yaml:"a,omitempty"` +// B int +// } +// yaml.Marshal(&T{B: 2}) // Returns "b: 2\n" +// yaml.Marshal(&T{F: 1}} // Returns "a: 1\nb: 0\n" +// +func Marshal(in interface{}) (out []byte, err error) { + defer handleErr(&err) + e := newEncoder() + defer e.destroy() + e.marshalDoc("", reflect.ValueOf(in)) + e.finish() + out = e.out + return +} + +// An Encoder writes YAML values to an output stream. +type Encoder struct { + encoder *encoder +} + +// NewEncoder returns a new encoder that writes to w. +// The Encoder should be closed after use to flush all data +// to w. +func NewEncoder(w io.Writer) *Encoder { + return &Encoder{ + encoder: newEncoderWithWriter(w), + } +} + +// Encode writes the YAML encoding of v to the stream. +// If multiple items are encoded to the stream, the +// second and subsequent document will be preceded +// with a "---" document separator, but the first will not. +// +// See the documentation for Marshal for details about the conversion of Go +// values to YAML. +func (e *Encoder) Encode(v interface{}) (err error) { + defer handleErr(&err) + e.encoder.marshalDoc("", reflect.ValueOf(v)) + return nil +} + +// Encode encodes value v and stores its representation in n. +// +// See the documentation for Marshal for details about the +// conversion of Go values into YAML. +func (n *Node) Encode(v interface{}) (err error) { + defer handleErr(&err) + e := newEncoder() + defer e.destroy() + e.marshalDoc("", reflect.ValueOf(v)) + e.finish() + p := newParser(e.out) + p.textless = true + defer p.destroy() + doc := p.parse() + *n = *doc.Content[0] + return nil +} + +// SetIndent changes the used indentation used when encoding. +func (e *Encoder) SetIndent(spaces int) { + if spaces < 0 { + panic("yaml: cannot indent to a negative number of spaces") + } + e.encoder.indent = spaces +} + +// Close closes the encoder by writing any remaining data. +// It does not write a stream terminating string "...". +func (e *Encoder) Close() (err error) { + defer handleErr(&err) + e.encoder.finish() + return nil +} + +func handleErr(err *error) { + if v := recover(); v != nil { + if e, ok := v.(yamlError); ok { + *err = e.err + } else { + panic(v) + } + } +} + +type yamlError struct { + err error +} + +func fail(err error) { + panic(yamlError{err}) +} + +func failf(format string, args ...interface{}) { + panic(yamlError{fmt.Errorf("yaml: "+format, args...)}) +} + +// A TypeError is returned by Unmarshal when one or more fields in +// the YAML document cannot be properly decoded into the requested +// types. When this error is returned, the value is still +// unmarshaled partially. +type TypeError struct { + Errors []string +} + +func (e *TypeError) Error() string { + return fmt.Sprintf("yaml: unmarshal errors:\n %s", strings.Join(e.Errors, "\n ")) +} + +type Kind uint32 + +const ( + DocumentNode Kind = 1 << iota + SequenceNode + MappingNode + ScalarNode + AliasNode +) + +type Style uint32 + +const ( + TaggedStyle Style = 1 << iota + DoubleQuotedStyle + SingleQuotedStyle + LiteralStyle + FoldedStyle + FlowStyle +) + +// Node represents an element in the YAML document hierarchy. While documents +// are typically encoded and decoded into higher level types, such as structs +// and maps, Node is an intermediate representation that allows detailed +// control over the content being decoded or encoded. +// +// It's worth noting that although Node offers access into details such as +// line numbers, colums, and comments, the content when re-encoded will not +// have its original textual representation preserved. An effort is made to +// render the data plesantly, and to preserve comments near the data they +// describe, though. +// +// Values that make use of the Node type interact with the yaml package in the +// same way any other type would do, by encoding and decoding yaml data +// directly or indirectly into them. +// +// For example: +// +// var person struct { +// Name string +// Address yaml.Node +// } +// err := yaml.Unmarshal(data, &person) +// +// Or by itself: +// +// var person Node +// err := yaml.Unmarshal(data, &person) +// +type Node struct { + // Kind defines whether the node is a document, a mapping, a sequence, + // a scalar value, or an alias to another node. The specific data type of + // scalar nodes may be obtained via the ShortTag and LongTag methods. + Kind Kind + + // Style allows customizing the apperance of the node in the tree. + Style Style + + // Tag holds the YAML tag defining the data type for the value. + // When decoding, this field will always be set to the resolved tag, + // even when it wasn't explicitly provided in the YAML content. + // When encoding, if this field is unset the value type will be + // implied from the node properties, and if it is set, it will only + // be serialized into the representation if TaggedStyle is used or + // the implicit tag diverges from the provided one. + Tag string + + // Value holds the unescaped and unquoted represenation of the value. + Value string + + // Anchor holds the anchor name for this node, which allows aliases to point to it. + Anchor string + + // Alias holds the node that this alias points to. Only valid when Kind is AliasNode. + Alias *Node + + // Content holds contained nodes for documents, mappings, and sequences. + Content []*Node + + // HeadComment holds any comments in the lines preceding the node and + // not separated by an empty line. + HeadComment string + + // LineComment holds any comments at the end of the line where the node is in. + LineComment string + + // FootComment holds any comments following the node and before empty lines. + FootComment string + + // Line and Column hold the node position in the decoded YAML text. + // These fields are not respected when encoding the node. + Line int + Column int +} + +// IsZero returns whether the node has all of its fields unset. +func (n *Node) IsZero() bool { + return n.Kind == 0 && n.Style == 0 && n.Tag == "" && n.Value == "" && n.Anchor == "" && n.Alias == nil && n.Content == nil && + n.HeadComment == "" && n.LineComment == "" && n.FootComment == "" && n.Line == 0 && n.Column == 0 +} + + +// LongTag returns the long form of the tag that indicates the data type for +// the node. If the Tag field isn't explicitly defined, one will be computed +// based on the node properties. +func (n *Node) LongTag() string { + return longTag(n.ShortTag()) +} + +// ShortTag returns the short form of the YAML tag that indicates data type for +// the node. If the Tag field isn't explicitly defined, one will be computed +// based on the node properties. +func (n *Node) ShortTag() string { + if n.indicatedString() { + return strTag + } + if n.Tag == "" || n.Tag == "!" { + switch n.Kind { + case MappingNode: + return mapTag + case SequenceNode: + return seqTag + case AliasNode: + if n.Alias != nil { + return n.Alias.ShortTag() + } + case ScalarNode: + tag, _ := resolve("", n.Value) + return tag + case 0: + // Special case to make the zero value convenient. + if n.IsZero() { + return nullTag + } + } + return "" + } + return shortTag(n.Tag) +} + +func (n *Node) indicatedString() bool { + return n.Kind == ScalarNode && + (shortTag(n.Tag) == strTag || + (n.Tag == "" || n.Tag == "!") && n.Style&(SingleQuotedStyle|DoubleQuotedStyle|LiteralStyle|FoldedStyle) != 0) +} + +// SetString is a convenience function that sets the node to a string value +// and defines its style in a pleasant way depending on its content. +func (n *Node) SetString(s string) { + n.Kind = ScalarNode + if utf8.ValidString(s) { + n.Value = s + n.Tag = strTag + } else { + n.Value = encodeBase64(s) + n.Tag = binaryTag + } + if strings.Contains(n.Value, "\n") { + n.Style = LiteralStyle + } +} + +// -------------------------------------------------------------------------- +// Maintain a mapping of keys to structure field indexes + +// The code in this section was copied from mgo/bson. + +// structInfo holds details for the serialization of fields of +// a given struct. +type structInfo struct { + FieldsMap map[string]fieldInfo + FieldsList []fieldInfo + + // InlineMap is the number of the field in the struct that + // contains an ,inline map, or -1 if there's none. + InlineMap int + + // InlineUnmarshalers holds indexes to inlined fields that + // contain unmarshaler values. + InlineUnmarshalers [][]int +} + +type fieldInfo struct { + Key string + Num int + OmitEmpty bool + Flow bool + // Id holds the unique field identifier, so we can cheaply + // check for field duplicates without maintaining an extra map. + Id int + + // Inline holds the field index if the field is part of an inlined struct. + Inline []int +} + +var structMap = make(map[reflect.Type]*structInfo) +var fieldMapMutex sync.RWMutex +var unmarshalerType reflect.Type + +func init() { + var v Unmarshaler + unmarshalerType = reflect.ValueOf(&v).Elem().Type() +} + +func getStructInfo(st reflect.Type) (*structInfo, error) { + fieldMapMutex.RLock() + sinfo, found := structMap[st] + fieldMapMutex.RUnlock() + if found { + return sinfo, nil + } + + n := st.NumField() + fieldsMap := make(map[string]fieldInfo) + fieldsList := make([]fieldInfo, 0, n) + inlineMap := -1 + inlineUnmarshalers := [][]int(nil) + for i := 0; i != n; i++ { + field := st.Field(i) + if field.PkgPath != "" && !field.Anonymous { + continue // Private field + } + + info := fieldInfo{Num: i} + + tag := field.Tag.Get("yaml") + if tag == "" && strings.Index(string(field.Tag), ":") < 0 { + tag = string(field.Tag) + } + if tag == "-" { + continue + } + + inline := false + fields := strings.Split(tag, ",") + if len(fields) > 1 { + for _, flag := range fields[1:] { + switch flag { + case "omitempty": + info.OmitEmpty = true + case "flow": + info.Flow = true + case "inline": + inline = true + default: + return nil, errors.New(fmt.Sprintf("unsupported flag %q in tag %q of type %s", flag, tag, st)) + } + } + tag = fields[0] + } + + if inline { + switch field.Type.Kind() { + case reflect.Map: + if inlineMap >= 0 { + return nil, errors.New("multiple ,inline maps in struct " + st.String()) + } + if field.Type.Key() != reflect.TypeOf("") { + return nil, errors.New("option ,inline needs a map with string keys in struct " + st.String()) + } + inlineMap = info.Num + case reflect.Struct, reflect.Ptr: + ftype := field.Type + for ftype.Kind() == reflect.Ptr { + ftype = ftype.Elem() + } + if ftype.Kind() != reflect.Struct { + return nil, errors.New("option ,inline may only be used on a struct or map field") + } + if reflect.PtrTo(ftype).Implements(unmarshalerType) { + inlineUnmarshalers = append(inlineUnmarshalers, []int{i}) + } else { + sinfo, err := getStructInfo(ftype) + if err != nil { + return nil, err + } + for _, index := range sinfo.InlineUnmarshalers { + inlineUnmarshalers = append(inlineUnmarshalers, append([]int{i}, index...)) + } + for _, finfo := range sinfo.FieldsList { + if _, found := fieldsMap[finfo.Key]; found { + msg := "duplicated key '" + finfo.Key + "' in struct " + st.String() + return nil, errors.New(msg) + } + if finfo.Inline == nil { + finfo.Inline = []int{i, finfo.Num} + } else { + finfo.Inline = append([]int{i}, finfo.Inline...) + } + finfo.Id = len(fieldsList) + fieldsMap[finfo.Key] = finfo + fieldsList = append(fieldsList, finfo) + } + } + default: + return nil, errors.New("option ,inline may only be used on a struct or map field") + } + continue + } + + if tag != "" { + info.Key = tag + } else { + info.Key = strings.ToLower(field.Name) + } + + if _, found = fieldsMap[info.Key]; found { + msg := "duplicated key '" + info.Key + "' in struct " + st.String() + return nil, errors.New(msg) + } + + info.Id = len(fieldsList) + fieldsList = append(fieldsList, info) + fieldsMap[info.Key] = info + } + + sinfo = &structInfo{ + FieldsMap: fieldsMap, + FieldsList: fieldsList, + InlineMap: inlineMap, + InlineUnmarshalers: inlineUnmarshalers, + } + + fieldMapMutex.Lock() + structMap[st] = sinfo + fieldMapMutex.Unlock() + return sinfo, nil +} + +// IsZeroer is used to check whether an object is zero to +// determine whether it should be omitted when marshaling +// with the omitempty flag. One notable implementation +// is time.Time. +type IsZeroer interface { + IsZero() bool +} + +func isZero(v reflect.Value) bool { + kind := v.Kind() + if z, ok := v.Interface().(IsZeroer); ok { + if (kind == reflect.Ptr || kind == reflect.Interface) && v.IsNil() { + return true + } + return z.IsZero() + } + switch kind { + case reflect.String: + return len(v.String()) == 0 + case reflect.Interface, reflect.Ptr: + return v.IsNil() + case reflect.Slice: + return v.Len() == 0 + case reflect.Map: + return v.Len() == 0 + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return v.Int() == 0 + case reflect.Float32, reflect.Float64: + return v.Float() == 0 + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return v.Uint() == 0 + case reflect.Bool: + return !v.Bool() + case reflect.Struct: + vt := v.Type() + for i := v.NumField() - 1; i >= 0; i-- { + if vt.Field(i).PkgPath != "" { + continue // Private field + } + if !isZero(v.Field(i)) { + return false + } + } + return true + } + return false +} diff --git a/tests/vendor/gopkg.in/yaml.v3/yamlh.go b/tests/vendor/gopkg.in/yaml.v3/yamlh.go new file mode 100644 index 000000000..7c6d00770 --- /dev/null +++ b/tests/vendor/gopkg.in/yaml.v3/yamlh.go @@ -0,0 +1,807 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// Copyright (c) 2006-2010 Kirill Simonov +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +package yaml + +import ( + "fmt" + "io" +) + +// The version directive data. +type yaml_version_directive_t struct { + major int8 // The major version number. + minor int8 // The minor version number. +} + +// The tag directive data. +type yaml_tag_directive_t struct { + handle []byte // The tag handle. + prefix []byte // The tag prefix. +} + +type yaml_encoding_t int + +// The stream encoding. +const ( + // Let the parser choose the encoding. + yaml_ANY_ENCODING yaml_encoding_t = iota + + yaml_UTF8_ENCODING // The default UTF-8 encoding. + yaml_UTF16LE_ENCODING // The UTF-16-LE encoding with BOM. + yaml_UTF16BE_ENCODING // The UTF-16-BE encoding with BOM. +) + +type yaml_break_t int + +// Line break types. +const ( + // Let the parser choose the break type. + yaml_ANY_BREAK yaml_break_t = iota + + yaml_CR_BREAK // Use CR for line breaks (Mac style). + yaml_LN_BREAK // Use LN for line breaks (Unix style). + yaml_CRLN_BREAK // Use CR LN for line breaks (DOS style). +) + +type yaml_error_type_t int + +// Many bad things could happen with the parser and emitter. +const ( + // No error is produced. + yaml_NO_ERROR yaml_error_type_t = iota + + yaml_MEMORY_ERROR // Cannot allocate or reallocate a block of memory. + yaml_READER_ERROR // Cannot read or decode the input stream. + yaml_SCANNER_ERROR // Cannot scan the input stream. + yaml_PARSER_ERROR // Cannot parse the input stream. + yaml_COMPOSER_ERROR // Cannot compose a YAML document. + yaml_WRITER_ERROR // Cannot write to the output stream. + yaml_EMITTER_ERROR // Cannot emit a YAML stream. +) + +// The pointer position. +type yaml_mark_t struct { + index int // The position index. + line int // The position line. + column int // The position column. +} + +// Node Styles + +type yaml_style_t int8 + +type yaml_scalar_style_t yaml_style_t + +// Scalar styles. +const ( + // Let the emitter choose the style. + yaml_ANY_SCALAR_STYLE yaml_scalar_style_t = 0 + + yaml_PLAIN_SCALAR_STYLE yaml_scalar_style_t = 1 << iota // The plain scalar style. + yaml_SINGLE_QUOTED_SCALAR_STYLE // The single-quoted scalar style. + yaml_DOUBLE_QUOTED_SCALAR_STYLE // The double-quoted scalar style. + yaml_LITERAL_SCALAR_STYLE // The literal scalar style. + yaml_FOLDED_SCALAR_STYLE // The folded scalar style. +) + +type yaml_sequence_style_t yaml_style_t + +// Sequence styles. +const ( + // Let the emitter choose the style. + yaml_ANY_SEQUENCE_STYLE yaml_sequence_style_t = iota + + yaml_BLOCK_SEQUENCE_STYLE // The block sequence style. + yaml_FLOW_SEQUENCE_STYLE // The flow sequence style. +) + +type yaml_mapping_style_t yaml_style_t + +// Mapping styles. +const ( + // Let the emitter choose the style. + yaml_ANY_MAPPING_STYLE yaml_mapping_style_t = iota + + yaml_BLOCK_MAPPING_STYLE // The block mapping style. + yaml_FLOW_MAPPING_STYLE // The flow mapping style. +) + +// Tokens + +type yaml_token_type_t int + +// Token types. +const ( + // An empty token. + yaml_NO_TOKEN yaml_token_type_t = iota + + yaml_STREAM_START_TOKEN // A STREAM-START token. + yaml_STREAM_END_TOKEN // A STREAM-END token. + + yaml_VERSION_DIRECTIVE_TOKEN // A VERSION-DIRECTIVE token. + yaml_TAG_DIRECTIVE_TOKEN // A TAG-DIRECTIVE token. + yaml_DOCUMENT_START_TOKEN // A DOCUMENT-START token. + yaml_DOCUMENT_END_TOKEN // A DOCUMENT-END token. + + yaml_BLOCK_SEQUENCE_START_TOKEN // A BLOCK-SEQUENCE-START token. + yaml_BLOCK_MAPPING_START_TOKEN // A BLOCK-SEQUENCE-END token. + yaml_BLOCK_END_TOKEN // A BLOCK-END token. + + yaml_FLOW_SEQUENCE_START_TOKEN // A FLOW-SEQUENCE-START token. + yaml_FLOW_SEQUENCE_END_TOKEN // A FLOW-SEQUENCE-END token. + yaml_FLOW_MAPPING_START_TOKEN // A FLOW-MAPPING-START token. + yaml_FLOW_MAPPING_END_TOKEN // A FLOW-MAPPING-END token. + + yaml_BLOCK_ENTRY_TOKEN // A BLOCK-ENTRY token. + yaml_FLOW_ENTRY_TOKEN // A FLOW-ENTRY token. + yaml_KEY_TOKEN // A KEY token. + yaml_VALUE_TOKEN // A VALUE token. + + yaml_ALIAS_TOKEN // An ALIAS token. + yaml_ANCHOR_TOKEN // An ANCHOR token. + yaml_TAG_TOKEN // A TAG token. + yaml_SCALAR_TOKEN // A SCALAR token. +) + +func (tt yaml_token_type_t) String() string { + switch tt { + case yaml_NO_TOKEN: + return "yaml_NO_TOKEN" + case yaml_STREAM_START_TOKEN: + return "yaml_STREAM_START_TOKEN" + case yaml_STREAM_END_TOKEN: + return "yaml_STREAM_END_TOKEN" + case yaml_VERSION_DIRECTIVE_TOKEN: + return "yaml_VERSION_DIRECTIVE_TOKEN" + case yaml_TAG_DIRECTIVE_TOKEN: + return "yaml_TAG_DIRECTIVE_TOKEN" + case yaml_DOCUMENT_START_TOKEN: + return "yaml_DOCUMENT_START_TOKEN" + case yaml_DOCUMENT_END_TOKEN: + return "yaml_DOCUMENT_END_TOKEN" + case yaml_BLOCK_SEQUENCE_START_TOKEN: + return "yaml_BLOCK_SEQUENCE_START_TOKEN" + case yaml_BLOCK_MAPPING_START_TOKEN: + return "yaml_BLOCK_MAPPING_START_TOKEN" + case yaml_BLOCK_END_TOKEN: + return "yaml_BLOCK_END_TOKEN" + case yaml_FLOW_SEQUENCE_START_TOKEN: + return "yaml_FLOW_SEQUENCE_START_TOKEN" + case yaml_FLOW_SEQUENCE_END_TOKEN: + return "yaml_FLOW_SEQUENCE_END_TOKEN" + case yaml_FLOW_MAPPING_START_TOKEN: + return "yaml_FLOW_MAPPING_START_TOKEN" + case yaml_FLOW_MAPPING_END_TOKEN: + return "yaml_FLOW_MAPPING_END_TOKEN" + case yaml_BLOCK_ENTRY_TOKEN: + return "yaml_BLOCK_ENTRY_TOKEN" + case yaml_FLOW_ENTRY_TOKEN: + return "yaml_FLOW_ENTRY_TOKEN" + case yaml_KEY_TOKEN: + return "yaml_KEY_TOKEN" + case yaml_VALUE_TOKEN: + return "yaml_VALUE_TOKEN" + case yaml_ALIAS_TOKEN: + return "yaml_ALIAS_TOKEN" + case yaml_ANCHOR_TOKEN: + return "yaml_ANCHOR_TOKEN" + case yaml_TAG_TOKEN: + return "yaml_TAG_TOKEN" + case yaml_SCALAR_TOKEN: + return "yaml_SCALAR_TOKEN" + } + return "<unknown token>" +} + +// The token structure. +type yaml_token_t struct { + // The token type. + typ yaml_token_type_t + + // The start/end of the token. + start_mark, end_mark yaml_mark_t + + // The stream encoding (for yaml_STREAM_START_TOKEN). + encoding yaml_encoding_t + + // The alias/anchor/scalar value or tag/tag directive handle + // (for yaml_ALIAS_TOKEN, yaml_ANCHOR_TOKEN, yaml_SCALAR_TOKEN, yaml_TAG_TOKEN, yaml_TAG_DIRECTIVE_TOKEN). + value []byte + + // The tag suffix (for yaml_TAG_TOKEN). + suffix []byte + + // The tag directive prefix (for yaml_TAG_DIRECTIVE_TOKEN). + prefix []byte + + // The scalar style (for yaml_SCALAR_TOKEN). + style yaml_scalar_style_t + + // The version directive major/minor (for yaml_VERSION_DIRECTIVE_TOKEN). + major, minor int8 +} + +// Events + +type yaml_event_type_t int8 + +// Event types. +const ( + // An empty event. + yaml_NO_EVENT yaml_event_type_t = iota + + yaml_STREAM_START_EVENT // A STREAM-START event. + yaml_STREAM_END_EVENT // A STREAM-END event. + yaml_DOCUMENT_START_EVENT // A DOCUMENT-START event. + yaml_DOCUMENT_END_EVENT // A DOCUMENT-END event. + yaml_ALIAS_EVENT // An ALIAS event. + yaml_SCALAR_EVENT // A SCALAR event. + yaml_SEQUENCE_START_EVENT // A SEQUENCE-START event. + yaml_SEQUENCE_END_EVENT // A SEQUENCE-END event. + yaml_MAPPING_START_EVENT // A MAPPING-START event. + yaml_MAPPING_END_EVENT // A MAPPING-END event. + yaml_TAIL_COMMENT_EVENT +) + +var eventStrings = []string{ + yaml_NO_EVENT: "none", + yaml_STREAM_START_EVENT: "stream start", + yaml_STREAM_END_EVENT: "stream end", + yaml_DOCUMENT_START_EVENT: "document start", + yaml_DOCUMENT_END_EVENT: "document end", + yaml_ALIAS_EVENT: "alias", + yaml_SCALAR_EVENT: "scalar", + yaml_SEQUENCE_START_EVENT: "sequence start", + yaml_SEQUENCE_END_EVENT: "sequence end", + yaml_MAPPING_START_EVENT: "mapping start", + yaml_MAPPING_END_EVENT: "mapping end", + yaml_TAIL_COMMENT_EVENT: "tail comment", +} + +func (e yaml_event_type_t) String() string { + if e < 0 || int(e) >= len(eventStrings) { + return fmt.Sprintf("unknown event %d", e) + } + return eventStrings[e] +} + +// The event structure. +type yaml_event_t struct { + + // The event type. + typ yaml_event_type_t + + // The start and end of the event. + start_mark, end_mark yaml_mark_t + + // The document encoding (for yaml_STREAM_START_EVENT). + encoding yaml_encoding_t + + // The version directive (for yaml_DOCUMENT_START_EVENT). + version_directive *yaml_version_directive_t + + // The list of tag directives (for yaml_DOCUMENT_START_EVENT). + tag_directives []yaml_tag_directive_t + + // The comments + head_comment []byte + line_comment []byte + foot_comment []byte + tail_comment []byte + + // The anchor (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT, yaml_ALIAS_EVENT). + anchor []byte + + // The tag (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT). + tag []byte + + // The scalar value (for yaml_SCALAR_EVENT). + value []byte + + // Is the document start/end indicator implicit, or the tag optional? + // (for yaml_DOCUMENT_START_EVENT, yaml_DOCUMENT_END_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT, yaml_SCALAR_EVENT). + implicit bool + + // Is the tag optional for any non-plain style? (for yaml_SCALAR_EVENT). + quoted_implicit bool + + // The style (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT). + style yaml_style_t +} + +func (e *yaml_event_t) scalar_style() yaml_scalar_style_t { return yaml_scalar_style_t(e.style) } +func (e *yaml_event_t) sequence_style() yaml_sequence_style_t { return yaml_sequence_style_t(e.style) } +func (e *yaml_event_t) mapping_style() yaml_mapping_style_t { return yaml_mapping_style_t(e.style) } + +// Nodes + +const ( + yaml_NULL_TAG = "tag:yaml.org,2002:null" // The tag !!null with the only possible value: null. + yaml_BOOL_TAG = "tag:yaml.org,2002:bool" // The tag !!bool with the values: true and false. + yaml_STR_TAG = "tag:yaml.org,2002:str" // The tag !!str for string values. + yaml_INT_TAG = "tag:yaml.org,2002:int" // The tag !!int for integer values. + yaml_FLOAT_TAG = "tag:yaml.org,2002:float" // The tag !!float for float values. + yaml_TIMESTAMP_TAG = "tag:yaml.org,2002:timestamp" // The tag !!timestamp for date and time values. + + yaml_SEQ_TAG = "tag:yaml.org,2002:seq" // The tag !!seq is used to denote sequences. + yaml_MAP_TAG = "tag:yaml.org,2002:map" // The tag !!map is used to denote mapping. + + // Not in original libyaml. + yaml_BINARY_TAG = "tag:yaml.org,2002:binary" + yaml_MERGE_TAG = "tag:yaml.org,2002:merge" + + yaml_DEFAULT_SCALAR_TAG = yaml_STR_TAG // The default scalar tag is !!str. + yaml_DEFAULT_SEQUENCE_TAG = yaml_SEQ_TAG // The default sequence tag is !!seq. + yaml_DEFAULT_MAPPING_TAG = yaml_MAP_TAG // The default mapping tag is !!map. +) + +type yaml_node_type_t int + +// Node types. +const ( + // An empty node. + yaml_NO_NODE yaml_node_type_t = iota + + yaml_SCALAR_NODE // A scalar node. + yaml_SEQUENCE_NODE // A sequence node. + yaml_MAPPING_NODE // A mapping node. +) + +// An element of a sequence node. +type yaml_node_item_t int + +// An element of a mapping node. +type yaml_node_pair_t struct { + key int // The key of the element. + value int // The value of the element. +} + +// The node structure. +type yaml_node_t struct { + typ yaml_node_type_t // The node type. + tag []byte // The node tag. + + // The node data. + + // The scalar parameters (for yaml_SCALAR_NODE). + scalar struct { + value []byte // The scalar value. + length int // The length of the scalar value. + style yaml_scalar_style_t // The scalar style. + } + + // The sequence parameters (for YAML_SEQUENCE_NODE). + sequence struct { + items_data []yaml_node_item_t // The stack of sequence items. + style yaml_sequence_style_t // The sequence style. + } + + // The mapping parameters (for yaml_MAPPING_NODE). + mapping struct { + pairs_data []yaml_node_pair_t // The stack of mapping pairs (key, value). + pairs_start *yaml_node_pair_t // The beginning of the stack. + pairs_end *yaml_node_pair_t // The end of the stack. + pairs_top *yaml_node_pair_t // The top of the stack. + style yaml_mapping_style_t // The mapping style. + } + + start_mark yaml_mark_t // The beginning of the node. + end_mark yaml_mark_t // The end of the node. + +} + +// The document structure. +type yaml_document_t struct { + + // The document nodes. + nodes []yaml_node_t + + // The version directive. + version_directive *yaml_version_directive_t + + // The list of tag directives. + tag_directives_data []yaml_tag_directive_t + tag_directives_start int // The beginning of the tag directives list. + tag_directives_end int // The end of the tag directives list. + + start_implicit int // Is the document start indicator implicit? + end_implicit int // Is the document end indicator implicit? + + // The start/end of the document. + start_mark, end_mark yaml_mark_t +} + +// The prototype of a read handler. +// +// The read handler is called when the parser needs to read more bytes from the +// source. The handler should write not more than size bytes to the buffer. +// The number of written bytes should be set to the size_read variable. +// +// [in,out] data A pointer to an application data specified by +// yaml_parser_set_input(). +// [out] buffer The buffer to write the data from the source. +// [in] size The size of the buffer. +// [out] size_read The actual number of bytes read from the source. +// +// On success, the handler should return 1. If the handler failed, +// the returned value should be 0. On EOF, the handler should set the +// size_read to 0 and return 1. +type yaml_read_handler_t func(parser *yaml_parser_t, buffer []byte) (n int, err error) + +// This structure holds information about a potential simple key. +type yaml_simple_key_t struct { + possible bool // Is a simple key possible? + required bool // Is a simple key required? + token_number int // The number of the token. + mark yaml_mark_t // The position mark. +} + +// The states of the parser. +type yaml_parser_state_t int + +const ( + yaml_PARSE_STREAM_START_STATE yaml_parser_state_t = iota + + yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE // Expect the beginning of an implicit document. + yaml_PARSE_DOCUMENT_START_STATE // Expect DOCUMENT-START. + yaml_PARSE_DOCUMENT_CONTENT_STATE // Expect the content of a document. + yaml_PARSE_DOCUMENT_END_STATE // Expect DOCUMENT-END. + yaml_PARSE_BLOCK_NODE_STATE // Expect a block node. + yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE // Expect a block node or indentless sequence. + yaml_PARSE_FLOW_NODE_STATE // Expect a flow node. + yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE // Expect the first entry of a block sequence. + yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE // Expect an entry of a block sequence. + yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE // Expect an entry of an indentless sequence. + yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE // Expect the first key of a block mapping. + yaml_PARSE_BLOCK_MAPPING_KEY_STATE // Expect a block mapping key. + yaml_PARSE_BLOCK_MAPPING_VALUE_STATE // Expect a block mapping value. + yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE // Expect the first entry of a flow sequence. + yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE // Expect an entry of a flow sequence. + yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE // Expect a key of an ordered mapping. + yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE // Expect a value of an ordered mapping. + yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE // Expect the and of an ordered mapping entry. + yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE // Expect the first key of a flow mapping. + yaml_PARSE_FLOW_MAPPING_KEY_STATE // Expect a key of a flow mapping. + yaml_PARSE_FLOW_MAPPING_VALUE_STATE // Expect a value of a flow mapping. + yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE // Expect an empty value of a flow mapping. + yaml_PARSE_END_STATE // Expect nothing. +) + +func (ps yaml_parser_state_t) String() string { + switch ps { + case yaml_PARSE_STREAM_START_STATE: + return "yaml_PARSE_STREAM_START_STATE" + case yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE: + return "yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE" + case yaml_PARSE_DOCUMENT_START_STATE: + return "yaml_PARSE_DOCUMENT_START_STATE" + case yaml_PARSE_DOCUMENT_CONTENT_STATE: + return "yaml_PARSE_DOCUMENT_CONTENT_STATE" + case yaml_PARSE_DOCUMENT_END_STATE: + return "yaml_PARSE_DOCUMENT_END_STATE" + case yaml_PARSE_BLOCK_NODE_STATE: + return "yaml_PARSE_BLOCK_NODE_STATE" + case yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE: + return "yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE" + case yaml_PARSE_FLOW_NODE_STATE: + return "yaml_PARSE_FLOW_NODE_STATE" + case yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE: + return "yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE" + case yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE: + return "yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE" + case yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE: + return "yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE" + case yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE: + return "yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE" + case yaml_PARSE_BLOCK_MAPPING_KEY_STATE: + return "yaml_PARSE_BLOCK_MAPPING_KEY_STATE" + case yaml_PARSE_BLOCK_MAPPING_VALUE_STATE: + return "yaml_PARSE_BLOCK_MAPPING_VALUE_STATE" + case yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE: + return "yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE" + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE: + return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE" + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE: + return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE" + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE: + return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE" + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE: + return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE" + case yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE: + return "yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE" + case yaml_PARSE_FLOW_MAPPING_KEY_STATE: + return "yaml_PARSE_FLOW_MAPPING_KEY_STATE" + case yaml_PARSE_FLOW_MAPPING_VALUE_STATE: + return "yaml_PARSE_FLOW_MAPPING_VALUE_STATE" + case yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE: + return "yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE" + case yaml_PARSE_END_STATE: + return "yaml_PARSE_END_STATE" + } + return "<unknown parser state>" +} + +// This structure holds aliases data. +type yaml_alias_data_t struct { + anchor []byte // The anchor. + index int // The node id. + mark yaml_mark_t // The anchor mark. +} + +// The parser structure. +// +// All members are internal. Manage the structure using the +// yaml_parser_ family of functions. +type yaml_parser_t struct { + + // Error handling + + error yaml_error_type_t // Error type. + + problem string // Error description. + + // The byte about which the problem occurred. + problem_offset int + problem_value int + problem_mark yaml_mark_t + + // The error context. + context string + context_mark yaml_mark_t + + // Reader stuff + + read_handler yaml_read_handler_t // Read handler. + + input_reader io.Reader // File input data. + input []byte // String input data. + input_pos int + + eof bool // EOF flag + + buffer []byte // The working buffer. + buffer_pos int // The current position of the buffer. + + unread int // The number of unread characters in the buffer. + + newlines int // The number of line breaks since last non-break/non-blank character + + raw_buffer []byte // The raw buffer. + raw_buffer_pos int // The current position of the buffer. + + encoding yaml_encoding_t // The input encoding. + + offset int // The offset of the current position (in bytes). + mark yaml_mark_t // The mark of the current position. + + // Comments + + head_comment []byte // The current head comments + line_comment []byte // The current line comments + foot_comment []byte // The current foot comments + tail_comment []byte // Foot comment that happens at the end of a block. + stem_comment []byte // Comment in item preceding a nested structure (list inside list item, etc) + + comments []yaml_comment_t // The folded comments for all parsed tokens + comments_head int + + // Scanner stuff + + stream_start_produced bool // Have we started to scan the input stream? + stream_end_produced bool // Have we reached the end of the input stream? + + flow_level int // The number of unclosed '[' and '{' indicators. + + tokens []yaml_token_t // The tokens queue. + tokens_head int // The head of the tokens queue. + tokens_parsed int // The number of tokens fetched from the queue. + token_available bool // Does the tokens queue contain a token ready for dequeueing. + + indent int // The current indentation level. + indents []int // The indentation levels stack. + + simple_key_allowed bool // May a simple key occur at the current position? + simple_keys []yaml_simple_key_t // The stack of simple keys. + simple_keys_by_tok map[int]int // possible simple_key indexes indexed by token_number + + // Parser stuff + + state yaml_parser_state_t // The current parser state. + states []yaml_parser_state_t // The parser states stack. + marks []yaml_mark_t // The stack of marks. + tag_directives []yaml_tag_directive_t // The list of TAG directives. + + // Dumper stuff + + aliases []yaml_alias_data_t // The alias data. + + document *yaml_document_t // The currently parsed document. +} + +type yaml_comment_t struct { + + scan_mark yaml_mark_t // Position where scanning for comments started + token_mark yaml_mark_t // Position after which tokens will be associated with this comment + start_mark yaml_mark_t // Position of '#' comment mark + end_mark yaml_mark_t // Position where comment terminated + + head []byte + line []byte + foot []byte +} + +// Emitter Definitions + +// The prototype of a write handler. +// +// The write handler is called when the emitter needs to flush the accumulated +// characters to the output. The handler should write @a size bytes of the +// @a buffer to the output. +// +// @param[in,out] data A pointer to an application data specified by +// yaml_emitter_set_output(). +// @param[in] buffer The buffer with bytes to be written. +// @param[in] size The size of the buffer. +// +// @returns On success, the handler should return @c 1. If the handler failed, +// the returned value should be @c 0. +// +type yaml_write_handler_t func(emitter *yaml_emitter_t, buffer []byte) error + +type yaml_emitter_state_t int + +// The emitter states. +const ( + // Expect STREAM-START. + yaml_EMIT_STREAM_START_STATE yaml_emitter_state_t = iota + + yaml_EMIT_FIRST_DOCUMENT_START_STATE // Expect the first DOCUMENT-START or STREAM-END. + yaml_EMIT_DOCUMENT_START_STATE // Expect DOCUMENT-START or STREAM-END. + yaml_EMIT_DOCUMENT_CONTENT_STATE // Expect the content of a document. + yaml_EMIT_DOCUMENT_END_STATE // Expect DOCUMENT-END. + yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE // Expect the first item of a flow sequence. + yaml_EMIT_FLOW_SEQUENCE_TRAIL_ITEM_STATE // Expect the next item of a flow sequence, with the comma already written out + yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE // Expect an item of a flow sequence. + yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE // Expect the first key of a flow mapping. + yaml_EMIT_FLOW_MAPPING_TRAIL_KEY_STATE // Expect the next key of a flow mapping, with the comma already written out + yaml_EMIT_FLOW_MAPPING_KEY_STATE // Expect a key of a flow mapping. + yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE // Expect a value for a simple key of a flow mapping. + yaml_EMIT_FLOW_MAPPING_VALUE_STATE // Expect a value of a flow mapping. + yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE // Expect the first item of a block sequence. + yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE // Expect an item of a block sequence. + yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE // Expect the first key of a block mapping. + yaml_EMIT_BLOCK_MAPPING_KEY_STATE // Expect the key of a block mapping. + yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE // Expect a value for a simple key of a block mapping. + yaml_EMIT_BLOCK_MAPPING_VALUE_STATE // Expect a value of a block mapping. + yaml_EMIT_END_STATE // Expect nothing. +) + +// The emitter structure. +// +// All members are internal. Manage the structure using the @c yaml_emitter_ +// family of functions. +type yaml_emitter_t struct { + + // Error handling + + error yaml_error_type_t // Error type. + problem string // Error description. + + // Writer stuff + + write_handler yaml_write_handler_t // Write handler. + + output_buffer *[]byte // String output data. + output_writer io.Writer // File output data. + + buffer []byte // The working buffer. + buffer_pos int // The current position of the buffer. + + raw_buffer []byte // The raw buffer. + raw_buffer_pos int // The current position of the buffer. + + encoding yaml_encoding_t // The stream encoding. + + // Emitter stuff + + canonical bool // If the output is in the canonical style? + best_indent int // The number of indentation spaces. + best_width int // The preferred width of the output lines. + unicode bool // Allow unescaped non-ASCII characters? + line_break yaml_break_t // The preferred line break. + + state yaml_emitter_state_t // The current emitter state. + states []yaml_emitter_state_t // The stack of states. + + events []yaml_event_t // The event queue. + events_head int // The head of the event queue. + + indents []int // The stack of indentation levels. + + tag_directives []yaml_tag_directive_t // The list of tag directives. + + indent int // The current indentation level. + + flow_level int // The current flow level. + + root_context bool // Is it the document root context? + sequence_context bool // Is it a sequence context? + mapping_context bool // Is it a mapping context? + simple_key_context bool // Is it a simple mapping key context? + + line int // The current line. + column int // The current column. + whitespace bool // If the last character was a whitespace? + indention bool // If the last character was an indentation character (' ', '-', '?', ':')? + open_ended bool // If an explicit document end is required? + + space_above bool // Is there's an empty line above? + foot_indent int // The indent used to write the foot comment above, or -1 if none. + + // Anchor analysis. + anchor_data struct { + anchor []byte // The anchor value. + alias bool // Is it an alias? + } + + // Tag analysis. + tag_data struct { + handle []byte // The tag handle. + suffix []byte // The tag suffix. + } + + // Scalar analysis. + scalar_data struct { + value []byte // The scalar value. + multiline bool // Does the scalar contain line breaks? + flow_plain_allowed bool // Can the scalar be expessed in the flow plain style? + block_plain_allowed bool // Can the scalar be expressed in the block plain style? + single_quoted_allowed bool // Can the scalar be expressed in the single quoted style? + block_allowed bool // Can the scalar be expressed in the literal or folded styles? + style yaml_scalar_style_t // The output style. + } + + // Comments + head_comment []byte + line_comment []byte + foot_comment []byte + tail_comment []byte + + key_line_comment []byte + + // Dumper stuff + + opened bool // If the stream was already opened? + closed bool // If the stream was already closed? + + // The information associated with the document nodes. + anchors *struct { + references int // The number of references. + anchor int // The anchor id. + serialized bool // If the node has been emitted? + } + + last_anchor_id int // The last assigned anchor id. + + document *yaml_document_t // The currently emitted document. +} diff --git a/tests/vendor/gopkg.in/yaml.v3/yamlprivateh.go b/tests/vendor/gopkg.in/yaml.v3/yamlprivateh.go new file mode 100644 index 000000000..e88f9c54a --- /dev/null +++ b/tests/vendor/gopkg.in/yaml.v3/yamlprivateh.go @@ -0,0 +1,198 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// Copyright (c) 2006-2010 Kirill Simonov +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +package yaml + +const ( + // The size of the input raw buffer. + input_raw_buffer_size = 512 + + // The size of the input buffer. + // It should be possible to decode the whole raw buffer. + input_buffer_size = input_raw_buffer_size * 3 + + // The size of the output buffer. + output_buffer_size = 128 + + // The size of the output raw buffer. + // It should be possible to encode the whole output buffer. + output_raw_buffer_size = (output_buffer_size*2 + 2) + + // The size of other stacks and queues. + initial_stack_size = 16 + initial_queue_size = 16 + initial_string_size = 16 +) + +// Check if the character at the specified position is an alphabetical +// character, a digit, '_', or '-'. +func is_alpha(b []byte, i int) bool { + return b[i] >= '0' && b[i] <= '9' || b[i] >= 'A' && b[i] <= 'Z' || b[i] >= 'a' && b[i] <= 'z' || b[i] == '_' || b[i] == '-' +} + +// Check if the character at the specified position is a digit. +func is_digit(b []byte, i int) bool { + return b[i] >= '0' && b[i] <= '9' +} + +// Get the value of a digit. +func as_digit(b []byte, i int) int { + return int(b[i]) - '0' +} + +// Check if the character at the specified position is a hex-digit. +func is_hex(b []byte, i int) bool { + return b[i] >= '0' && b[i] <= '9' || b[i] >= 'A' && b[i] <= 'F' || b[i] >= 'a' && b[i] <= 'f' +} + +// Get the value of a hex-digit. +func as_hex(b []byte, i int) int { + bi := b[i] + if bi >= 'A' && bi <= 'F' { + return int(bi) - 'A' + 10 + } + if bi >= 'a' && bi <= 'f' { + return int(bi) - 'a' + 10 + } + return int(bi) - '0' +} + +// Check if the character is ASCII. +func is_ascii(b []byte, i int) bool { + return b[i] <= 0x7F +} + +// Check if the character at the start of the buffer can be printed unescaped. +func is_printable(b []byte, i int) bool { + return ((b[i] == 0x0A) || // . == #x0A + (b[i] >= 0x20 && b[i] <= 0x7E) || // #x20 <= . <= #x7E + (b[i] == 0xC2 && b[i+1] >= 0xA0) || // #0xA0 <= . <= #xD7FF + (b[i] > 0xC2 && b[i] < 0xED) || + (b[i] == 0xED && b[i+1] < 0xA0) || + (b[i] == 0xEE) || + (b[i] == 0xEF && // #xE000 <= . <= #xFFFD + !(b[i+1] == 0xBB && b[i+2] == 0xBF) && // && . != #xFEFF + !(b[i+1] == 0xBF && (b[i+2] == 0xBE || b[i+2] == 0xBF)))) +} + +// Check if the character at the specified position is NUL. +func is_z(b []byte, i int) bool { + return b[i] == 0x00 +} + +// Check if the beginning of the buffer is a BOM. +func is_bom(b []byte, i int) bool { + return b[0] == 0xEF && b[1] == 0xBB && b[2] == 0xBF +} + +// Check if the character at the specified position is space. +func is_space(b []byte, i int) bool { + return b[i] == ' ' +} + +// Check if the character at the specified position is tab. +func is_tab(b []byte, i int) bool { + return b[i] == '\t' +} + +// Check if the character at the specified position is blank (space or tab). +func is_blank(b []byte, i int) bool { + //return is_space(b, i) || is_tab(b, i) + return b[i] == ' ' || b[i] == '\t' +} + +// Check if the character at the specified position is a line break. +func is_break(b []byte, i int) bool { + return (b[i] == '\r' || // CR (#xD) + b[i] == '\n' || // LF (#xA) + b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9) // PS (#x2029) +} + +func is_crlf(b []byte, i int) bool { + return b[i] == '\r' && b[i+1] == '\n' +} + +// Check if the character is a line break or NUL. +func is_breakz(b []byte, i int) bool { + //return is_break(b, i) || is_z(b, i) + return ( + // is_break: + b[i] == '\r' || // CR (#xD) + b[i] == '\n' || // LF (#xA) + b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029) + // is_z: + b[i] == 0) +} + +// Check if the character is a line break, space, or NUL. +func is_spacez(b []byte, i int) bool { + //return is_space(b, i) || is_breakz(b, i) + return ( + // is_space: + b[i] == ' ' || + // is_breakz: + b[i] == '\r' || // CR (#xD) + b[i] == '\n' || // LF (#xA) + b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029) + b[i] == 0) +} + +// Check if the character is a line break, space, tab, or NUL. +func is_blankz(b []byte, i int) bool { + //return is_blank(b, i) || is_breakz(b, i) + return ( + // is_blank: + b[i] == ' ' || b[i] == '\t' || + // is_breakz: + b[i] == '\r' || // CR (#xD) + b[i] == '\n' || // LF (#xA) + b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029) + b[i] == 0) +} + +// Determine the width of the character. +func width(b byte) int { + // Don't replace these by a switch without first + // confirming that it is being inlined. + if b&0x80 == 0x00 { + return 1 + } + if b&0xE0 == 0xC0 { + return 2 + } + if b&0xF0 == 0xE0 { + return 3 + } + if b&0xF8 == 0xF0 { + return 4 + } + return 0 + +} diff --git a/tests/vendor/modules.txt b/tests/vendor/modules.txt new file mode 100644 index 000000000..3bcd55f78 --- /dev/null +++ b/tests/vendor/modules.txt @@ -0,0 +1,103 @@ +# github.com/go-logr/logr v1.4.2 +## explicit; go 1.18 +github.com/go-logr/logr +github.com/go-logr/logr/funcr +# github.com/go-task/slim-sprig/v3 v3.0.0 +## explicit; go 1.20 +github.com/go-task/slim-sprig/v3 +# github.com/google/go-cmp v0.7.0 +## explicit; go 1.21 +github.com/google/go-cmp/cmp +github.com/google/go-cmp/cmp/internal/diff +github.com/google/go-cmp/cmp/internal/flags +github.com/google/go-cmp/cmp/internal/function +github.com/google/go-cmp/cmp/internal/value +# github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 +## explicit; go 1.23 +github.com/google/pprof/profile +# github.com/onsi/ginkgo/v2 v2.23.4 +## explicit; go 1.23.0 +github.com/onsi/ginkgo/v2 +github.com/onsi/ginkgo/v2/config +github.com/onsi/ginkgo/v2/formatter +github.com/onsi/ginkgo/v2/ginkgo +github.com/onsi/ginkgo/v2/ginkgo/build +github.com/onsi/ginkgo/v2/ginkgo/command +github.com/onsi/ginkgo/v2/ginkgo/generators +github.com/onsi/ginkgo/v2/ginkgo/internal +github.com/onsi/ginkgo/v2/ginkgo/labels +github.com/onsi/ginkgo/v2/ginkgo/outline +github.com/onsi/ginkgo/v2/ginkgo/run +github.com/onsi/ginkgo/v2/ginkgo/unfocus +github.com/onsi/ginkgo/v2/ginkgo/watch +github.com/onsi/ginkgo/v2/internal +github.com/onsi/ginkgo/v2/internal/global +github.com/onsi/ginkgo/v2/internal/interrupt_handler +github.com/onsi/ginkgo/v2/internal/parallel_support +github.com/onsi/ginkgo/v2/internal/testingtproxy +github.com/onsi/ginkgo/v2/reporters +github.com/onsi/ginkgo/v2/types +# github.com/onsi/gomega v1.37.0 +## explicit; go 1.23.0 +github.com/onsi/gomega +github.com/onsi/gomega/format +github.com/onsi/gomega/internal +github.com/onsi/gomega/internal/gutil +github.com/onsi/gomega/matchers +github.com/onsi/gomega/matchers/internal/miter +github.com/onsi/gomega/matchers/support/goraph/bipartitegraph +github.com/onsi/gomega/matchers/support/goraph/edge +github.com/onsi/gomega/matchers/support/goraph/node +github.com/onsi/gomega/matchers/support/goraph/util +github.com/onsi/gomega/types +# go.uber.org/automaxprocs v1.6.0 +## explicit; go 1.20 +go.uber.org/automaxprocs +go.uber.org/automaxprocs/internal/cgroups +go.uber.org/automaxprocs/internal/runtime +go.uber.org/automaxprocs/maxprocs +# golang.org/x/crypto v0.39.0 +## explicit; go 1.23.0 +golang.org/x/crypto/blowfish +golang.org/x/crypto/chacha20 +golang.org/x/crypto/curve25519 +golang.org/x/crypto/internal/alias +golang.org/x/crypto/internal/poly1305 +golang.org/x/crypto/ssh +golang.org/x/crypto/ssh/internal/bcrypt_pbkdf +# golang.org/x/net v0.40.0 +## explicit; go 1.23.0 +golang.org/x/net/html +golang.org/x/net/html/atom +golang.org/x/net/html/charset +# golang.org/x/sys v0.33.0 +## explicit; go 1.23.0 +golang.org/x/sys/cpu +golang.org/x/sys/unix +# golang.org/x/text v0.26.0 +## explicit; go 1.23.0 +golang.org/x/text/encoding +golang.org/x/text/encoding/charmap +golang.org/x/text/encoding/htmlindex +golang.org/x/text/encoding/internal +golang.org/x/text/encoding/internal/identifier +golang.org/x/text/encoding/japanese +golang.org/x/text/encoding/korean +golang.org/x/text/encoding/simplifiedchinese +golang.org/x/text/encoding/traditionalchinese +golang.org/x/text/encoding/unicode +golang.org/x/text/internal/language +golang.org/x/text/internal/language/compact +golang.org/x/text/internal/tag +golang.org/x/text/internal/utf8internal +golang.org/x/text/language +golang.org/x/text/runes +golang.org/x/text/transform +# golang.org/x/tools v0.33.0 +## explicit; go 1.23.0 +golang.org/x/tools/cover +golang.org/x/tools/go/ast/inspector +golang.org/x/tools/internal/astutil/edge +# gopkg.in/yaml.v3 v3.0.1 +## explicit +gopkg.in/yaml.v3 diff --git a/third_party/libnvidia-container b/third_party/libnvidia-container index 4c2494f16..9d6a23b99 160000 --- a/third_party/libnvidia-container +++ b/third_party/libnvidia-container @@ -1 +1 @@ -Subproject commit 4c2494f16573b585788a42e9c7bee76ecd48c73d +Subproject commit 9d6a23b99689663e245b802c3eeedcddd658abdd diff --git a/tools/container/containerd/containerd.go b/tools/container/containerd/containerd.go deleted file mode 100644 index b5dff882d..000000000 --- a/tools/container/containerd/containerd.go +++ /dev/null @@ -1,275 +0,0 @@ -/** -# Copyright (c) 2020-2021, NVIDIA CORPORATION. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -*/ - -package main - -import ( - "encoding/json" - "fmt" - "os" - - log "github.com/sirupsen/logrus" - cli "github.com/urfave/cli/v2" - - "github.com/NVIDIA/nvidia-container-toolkit/internal/info" - "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine/containerd" - "github.com/NVIDIA/nvidia-container-toolkit/tools/container" -) - -const ( - defaultConfig = "/etc/containerd/config.toml" - defaultSocket = "/run/containerd/containerd.sock" - defaultRuntimeClass = "nvidia" - defaultRuntmeType = "io.containerd.runc.v2" - defaultSetAsDefault = true - defaultRestartMode = "signal" - defaultHostRootMount = "/host" -) - -// options stores the configuration from the command line or environment variables -type options struct { - container.Options - - // containerd-specific options - useLegacyConfig bool - runtimeType string - - ContainerRuntimeModesCDIAnnotationPrefixes cli.StringSlice - - runtimeConfigOverrideJSON string -} - -func main() { - options := options{} - - // Create the top-level CLI - c := cli.NewApp() - c.Name = "containerd" - c.Usage = "Update a containerd config with the nvidia-container-runtime" - c.Version = info.GetVersionString() - - // Create the 'setup' subcommand - setup := cli.Command{} - setup.Name = "setup" - setup.Usage = "Trigger a containerd config to be updated" - setup.ArgsUsage = "<runtime_dirname>" - setup.Action = func(c *cli.Context) error { - return Setup(c, &options) - } - setup.Before = func(c *cli.Context) error { - return container.ParseArgs(c, &options.Options) - } - - // Create the 'cleanup' subcommand - cleanup := cli.Command{} - cleanup.Name = "cleanup" - cleanup.Usage = "Trigger any updates made to a containerd config to be undone" - cleanup.ArgsUsage = "<runtime_dirname>" - cleanup.Action = func(c *cli.Context) error { - return Cleanup(c, &options) - } - cleanup.Before = func(c *cli.Context) error { - return container.ParseArgs(c, &options.Options) - } - - // Register the subcommands with the top-level CLI - c.Commands = []*cli.Command{ - &setup, - &cleanup, - } - - // Setup common flags across both subcommands. All subcommands get the same - // set of flags even if they don't use some of them. This is so that we - // only require the user to specify one set of flags for both 'startup' - // and 'cleanup' to simplify things. - commonFlags := []cli.Flag{ - &cli.StringFlag{ - Name: "config", - Usage: "Path to the containerd config file", - Value: defaultConfig, - Destination: &options.Config, - EnvVars: []string{"RUNTIME_CONFIG", "CONTAINERD_CONFIG"}, - }, - &cli.StringFlag{ - Name: "socket", - Usage: "Path to the containerd socket file", - Value: defaultSocket, - Destination: &options.Socket, - EnvVars: []string{"RUNTIME_SOCKET", "CONTAINERD_SOCKET"}, - }, - &cli.StringFlag{ - Name: "restart-mode", - Usage: "Specify how containerd should be restarted; If 'none' is selected, it will not be restarted [signal | systemd | none]", - Value: defaultRestartMode, - Destination: &options.RestartMode, - EnvVars: []string{"RUNTIME_RESTART_MODE", "CONTAINERD_RESTART_MODE"}, - }, - &cli.StringFlag{ - Name: "runtime-name", - Aliases: []string{"nvidia-runtime-name", "runtime-class"}, - Usage: "The name of the runtime class to set for the nvidia-container-runtime", - Value: defaultRuntimeClass, - Destination: &options.RuntimeName, - EnvVars: []string{"NVIDIA_RUNTIME_NAME", "CONTAINERD_RUNTIME_CLASS"}, - }, - &cli.StringFlag{ - Name: "nvidia-runtime-dir", - Aliases: []string{"runtime-dir"}, - Usage: "The path where the nvidia-container-runtime binaries are located. If this is not specified, the first argument will be used instead", - Destination: &options.RuntimeDir, - EnvVars: []string{"NVIDIA_RUNTIME_DIR"}, - }, - &cli.BoolFlag{ - Name: "set-as-default", - Usage: "Set nvidia-container-runtime as the default runtime", - Value: defaultSetAsDefault, - Destination: &options.SetAsDefault, - EnvVars: []string{"NVIDIA_RUNTIME_SET_AS_DEFAULT", "CONTAINERD_SET_AS_DEFAULT"}, - Hidden: true, - }, - &cli.StringFlag{ - Name: "host-root", - Usage: "Specify the path to the host root to be used when restarting containerd using systemd", - Value: defaultHostRootMount, - Destination: &options.HostRootMount, - EnvVars: []string{"HOST_ROOT_MOUNT"}, - }, - &cli.BoolFlag{ - Name: "use-legacy-config", - Usage: "Specify whether a legacy (pre v1.3) config should be used", - Destination: &options.useLegacyConfig, - EnvVars: []string{"CONTAINERD_USE_LEGACY_CONFIG"}, - }, - &cli.StringFlag{ - Name: "runtime-type", - Usage: "The runtime_type to use for the configured runtime classes", - Value: defaultRuntmeType, - Destination: &options.runtimeType, - EnvVars: []string{"CONTAINERD_RUNTIME_TYPE"}, - }, - &cli.StringSliceFlag{ - Name: "nvidia-container-runtime-modes.cdi.annotation-prefixes", - Destination: &options.ContainerRuntimeModesCDIAnnotationPrefixes, - EnvVars: []string{"NVIDIA_CONTAINER_RUNTIME_MODES_CDI_ANNOTATION_PREFIXES"}, - }, - &cli.StringFlag{ - Name: "runtime-config-override", - Destination: &options.runtimeConfigOverrideJSON, - Usage: "specify additional runtime options as a JSON string. The paths are relative to the runtime config.", - Value: "{}", - EnvVars: []string{"RUNTIME_CONFIG_OVERRIDE", "CONTAINERD_RUNTIME_CONFIG_OVERRIDE"}, - }, - } - - // Update the subcommand flags with the common subcommand flags - setup.Flags = append([]cli.Flag{}, commonFlags...) - cleanup.Flags = append([]cli.Flag{}, commonFlags...) - - // Run the top-level CLI - if err := c.Run(os.Args); err != nil { - log.Fatal(fmt.Errorf("error: %v", err)) - } -} - -// Setup updates a containerd configuration to include the nvidia-containerd-runtime and reloads it -func Setup(c *cli.Context, o *options) error { - log.Infof("Starting 'setup' for %v", c.App.Name) - - cfg, err := containerd.New( - containerd.WithPath(o.Config), - containerd.WithRuntimeType(o.runtimeType), - containerd.WithUseLegacyConfig(o.useLegacyConfig), - containerd.WithContainerAnnotations(o.containerAnnotationsFromCDIPrefixes()...), - ) - if err != nil { - return fmt.Errorf("unable to load config: %v", err) - } - - runtimeConfigOverride, err := o.runtimeConfigOverride() - if err != nil { - return fmt.Errorf("unable to parse config overrides: %w", err) - } - err = o.Configure(cfg, runtimeConfigOverride) - if err != nil { - return fmt.Errorf("unable to configure containerd: %v", err) - } - - err = RestartContainerd(o) - if err != nil { - return fmt.Errorf("unable to restart containerd: %v", err) - } - - log.Infof("Completed 'setup' for %v", c.App.Name) - - return nil -} - -// Cleanup reverts a containerd configuration to remove the nvidia-containerd-runtime and reloads it -func Cleanup(c *cli.Context, o *options) error { - log.Infof("Starting 'cleanup' for %v", c.App.Name) - - cfg, err := containerd.New( - containerd.WithPath(o.Config), - containerd.WithRuntimeType(o.runtimeType), - containerd.WithUseLegacyConfig(o.useLegacyConfig), - containerd.WithContainerAnnotations(o.containerAnnotationsFromCDIPrefixes()...), - ) - if err != nil { - return fmt.Errorf("unable to load config: %v", err) - } - - err = o.Unconfigure(cfg) - if err != nil { - return fmt.Errorf("unable to unconfigure containerd: %v", err) - } - - err = RestartContainerd(o) - if err != nil { - return fmt.Errorf("unable to restart containerd: %v", err) - } - - log.Infof("Completed 'cleanup' for %v", c.App.Name) - - return nil -} - -// RestartContainerd restarts containerd depending on the value of restartModeFlag -func RestartContainerd(o *options) error { - return o.Restart("containerd", SignalContainerd) -} - -// containerAnnotationsFromCDIPrefixes returns the container annotations to set for the given CDI prefixes. -func (o *options) containerAnnotationsFromCDIPrefixes() []string { - var annotations []string - for _, prefix := range o.ContainerRuntimeModesCDIAnnotationPrefixes.Value() { - annotations = append(annotations, prefix+"*") - } - - return annotations -} - -func (o *options) runtimeConfigOverride() (map[string]interface{}, error) { - if o.runtimeConfigOverrideJSON == "" { - return nil, nil - } - - runtimeOptions := make(map[string]interface{}) - if err := json.Unmarshal([]byte(o.runtimeConfigOverrideJSON), &runtimeOptions); err != nil { - return nil, fmt.Errorf("failed to read %v as JSON: %w", o.runtimeConfigOverrideJSON, err) - } - - return runtimeOptions, nil -} diff --git a/tools/container/crio/crio.go b/tools/container/crio/crio.go deleted file mode 100644 index 653998c7a..000000000 --- a/tools/container/crio/crio.go +++ /dev/null @@ -1,297 +0,0 @@ -/** -# Copyright (c) 2021-2022, NVIDIA CORPORATION. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -**/ - -package main - -import ( - "fmt" - "os" - "path/filepath" - - log "github.com/sirupsen/logrus" - cli "github.com/urfave/cli/v2" - - "github.com/NVIDIA/nvidia-container-toolkit/internal/config" - "github.com/NVIDIA/nvidia-container-toolkit/internal/info" - "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine/crio" - "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/ocihook" - "github.com/NVIDIA/nvidia-container-toolkit/tools/container" -) - -const ( - defaultConfigMode = "hook" - - // Hook-based settings - defaultHooksDir = "/usr/share/containers/oci/hooks.d" - defaultHookFilename = "oci-nvidia-hook.json" - - // Config-based settings - defaultConfig = "/etc/crio/crio.conf" - defaultSocket = "/var/run/crio/crio.sock" - defaultRuntimeClass = "nvidia" - defaultSetAsDefault = true - defaultRestartMode = "systemd" - defaultHostRootMount = "/host" -) - -// options stores the configuration from the command linek or environment variables -type options struct { - container.Options - - configMode string - - // hook-specific options - hooksDir string - hookFilename string -} - -func main() { - options := options{} - - // Create the top-level CLI - c := cli.NewApp() - c.Name = "crio" - c.Usage = "Update cri-o hooks to include the NVIDIA runtime hook" - c.Version = info.GetVersionString() - - // Create the 'setup' subcommand - setup := cli.Command{} - setup.Name = "setup" - setup.Usage = "Configure cri-o for NVIDIA GPU containers" - setup.ArgsUsage = "<toolkit_dirname>" - setup.Action = func(c *cli.Context) error { - return Setup(c, &options) - } - setup.Before = func(c *cli.Context) error { - return container.ParseArgs(c, &options.Options) - } - - // Create the 'cleanup' subcommand - cleanup := cli.Command{} - cleanup.Name = "cleanup" - cleanup.Usage = "Remove the NVIDIA-specific cri-o configuration" - cleanup.Action = func(c *cli.Context) error { - return Cleanup(c, &options) - } - cleanup.Before = func(c *cli.Context) error { - return container.ParseArgs(c, &options.Options) - } - - // Register the subcommands with the top-level CLI - c.Commands = []*cli.Command{ - &setup, - &cleanup, - } - - // Setup common flags across both subcommands. All subcommands get the same - // set of flags even if they don't use some of them. This is so that we - // only require the user to specify one set of flags for both 'startup' - // and 'cleanup' to simplify things. - commonFlags := []cli.Flag{ - &cli.StringFlag{ - Name: "config", - Usage: "Path to the cri-o config file", - Value: defaultConfig, - Destination: &options.Config, - EnvVars: []string{"RUNTIME_CONFIG", "CRIO_CONFIG"}, - }, - &cli.StringFlag{ - Name: "socket", - Usage: "Path to the crio socket file", - Value: "", - Destination: &options.Socket, - EnvVars: []string{"RUNTIME_SOCKET", "CRIO_SOCKET"}, - // Note: We hide this option since restarting cri-o via a socket is not supported. - Hidden: true, - }, - &cli.StringFlag{ - Name: "restart-mode", - Usage: "Specify how cri-o should be restarted; If 'none' is selected, it will not be restarted [systemd | none]", - Value: defaultRestartMode, - Destination: &options.RestartMode, - EnvVars: []string{"RUNTIME_RESTART_MODE", "CRIO_RESTART_MODE"}, - }, - &cli.StringFlag{ - Name: "runtime-name", - Aliases: []string{"nvidia-runtime-name", "runtime-class"}, - Usage: "The name of the runtime class to set for the nvidia-container-runtime", - Value: defaultRuntimeClass, - Destination: &options.RuntimeName, - EnvVars: []string{"NVIDIA_RUNTIME_NAME", "CRIO_RUNTIME_CLASS"}, - }, - &cli.StringFlag{ - Name: "nvidia-runtime-dir", - Aliases: []string{"runtime-dir"}, - Usage: "The path where the nvidia-container-runtime binaries are located. If this is not specified, the first argument will be used instead", - Destination: &options.RuntimeDir, - EnvVars: []string{"NVIDIA_RUNTIME_DIR"}, - }, - &cli.BoolFlag{ - Name: "set-as-default", - Usage: "Set nvidia-container-runtime as the default runtime", - Value: defaultSetAsDefault, - Destination: &options.SetAsDefault, - EnvVars: []string{"NVIDIA_RUNTIME_SET_AS_DEFAULT", "CRIO_SET_AS_DEFAULT"}, - Hidden: true, - }, - &cli.StringFlag{ - Name: "host-root", - Usage: "Specify the path to the host root to be used when restarting crio using systemd", - Value: defaultHostRootMount, - Destination: &options.HostRootMount, - EnvVars: []string{"HOST_ROOT_MOUNT"}, - }, - &cli.StringFlag{ - Name: "hooks-dir", - Usage: "path to the cri-o hooks directory", - Value: defaultHooksDir, - Destination: &options.hooksDir, - EnvVars: []string{"CRIO_HOOKS_DIR"}, - DefaultText: defaultHooksDir, - }, - &cli.StringFlag{ - Name: "hook-filename", - Usage: "filename of the cri-o hook that will be created / removed in the hooks directory", - Value: defaultHookFilename, - Destination: &options.hookFilename, - EnvVars: []string{"CRIO_HOOK_FILENAME"}, - DefaultText: defaultHookFilename, - }, - &cli.StringFlag{ - Name: "config-mode", - Usage: "the configuration mode to use. One of [hook | config]", - Value: defaultConfigMode, - Destination: &options.configMode, - EnvVars: []string{"CRIO_CONFIG_MODE"}, - }, - } - - // Update the subcommand flags with the common subcommand flags - setup.Flags = append([]cli.Flag{}, commonFlags...) - cleanup.Flags = append([]cli.Flag{}, commonFlags...) - - // Run the top-level CLI - if err := c.Run(os.Args); err != nil { - log.Fatal(fmt.Errorf("error: %v", err)) - } -} - -// Setup installs the prestart hook required to launch GPU-enabled containers -func Setup(c *cli.Context, o *options) error { - log.Infof("Starting 'setup' for %v", c.App.Name) - - switch o.configMode { - case "hook": - return setupHook(o) - case "config": - return setupConfig(o) - default: - return fmt.Errorf("invalid config-mode '%v'", o.configMode) - } -} - -// setupHook installs the prestart hook required to launch GPU-enabled containers -func setupHook(o *options) error { - log.Infof("Installing prestart hook") - - hookPath := filepath.Join(o.hooksDir, o.hookFilename) - err := ocihook.CreateHook(hookPath, filepath.Join(o.RuntimeDir, config.NVIDIAContainerRuntimeHookExecutable)) - if err != nil { - return fmt.Errorf("error creating hook: %v", err) - } - - return nil -} - -// setupConfig updates the cri-o config for the NVIDIA container runtime -func setupConfig(o *options) error { - log.Infof("Updating config file") - - cfg, err := crio.New( - crio.WithPath(o.Config), - ) - if err != nil { - return fmt.Errorf("unable to load config: %v", err) - } - - err = o.Configure(cfg) - if err != nil { - return fmt.Errorf("unable to configure cri-o: %v", err) - } - - err = RestartCrio(o) - if err != nil { - return fmt.Errorf("unable to restart crio: %v", err) - } - - return nil -} - -// Cleanup removes the specified prestart hook -func Cleanup(c *cli.Context, o *options) error { - log.Infof("Starting 'cleanup' for %v", c.App.Name) - - switch o.configMode { - case "hook": - return cleanupHook(o) - case "config": - return cleanupConfig(o) - default: - return fmt.Errorf("invalid config-mode '%v'", o.configMode) - } -} - -// cleanupHook removes the prestart hook -func cleanupHook(o *options) error { - log.Infof("Removing prestart hook") - - hookPath := filepath.Join(o.hooksDir, o.hookFilename) - err := os.Remove(hookPath) - if err != nil { - return fmt.Errorf("error removing hook '%v': %v", hookPath, err) - } - - return nil -} - -// cleanupConfig removes the NVIDIA container runtime from the cri-o config -func cleanupConfig(o *options) error { - log.Infof("Reverting config file modifications") - - cfg, err := crio.New( - crio.WithPath(o.Config), - ) - if err != nil { - return fmt.Errorf("unable to load config: %v", err) - } - - err = o.Unconfigure(cfg) - if err != nil { - return fmt.Errorf("unable to unconfigure cri-o: %v", err) - } - - err = RestartCrio(o) - if err != nil { - return fmt.Errorf("unable to restart crio: %v", err) - } - - return nil -} - -// RestartCrio restarts crio depending on the value of restartModeFlag -func RestartCrio(o *options) error { - return o.Restart("crio", func(string) error { return fmt.Errorf("supporting crio via signal is unsupported") }) -} diff --git a/tools/container/docker/docker.go b/tools/container/docker/docker.go deleted file mode 100644 index 9ae92f867..000000000 --- a/tools/container/docker/docker.go +++ /dev/null @@ -1,212 +0,0 @@ -/** -# Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -*/ - -package main - -import ( - "fmt" - "os" - - log "github.com/sirupsen/logrus" - cli "github.com/urfave/cli/v2" - - "github.com/NVIDIA/nvidia-container-toolkit/internal/info" - "github.com/NVIDIA/nvidia-container-toolkit/pkg/config/engine/docker" - "github.com/NVIDIA/nvidia-container-toolkit/tools/container" -) - -const ( - defaultConfig = "/etc/docker/daemon.json" - defaultSocket = "/var/run/docker.sock" - defaultSetAsDefault = true - // defaultRuntimeName specifies the NVIDIA runtime to be use as the default runtime if setting the default runtime is enabled - defaultRuntimeName = "nvidia" - defaultRestartMode = "signal" - defaultHostRootMount = "/host" -) - -// options stores the configuration from the command line or environment variables -type options struct { - container.Options -} - -func main() { - options := options{} - - // Create the top-level CLI - c := cli.NewApp() - c.Name = "docker" - c.Usage = "Update docker config with the nvidia runtime" - c.Version = info.GetVersionString() - - // Create the 'setup' subcommand - setup := cli.Command{} - setup.Name = "setup" - setup.Usage = "Trigger docker config to be updated" - setup.ArgsUsage = "<runtime_dirname>" - setup.Action = func(c *cli.Context) error { - return Setup(c, &options) - } - setup.Before = func(c *cli.Context) error { - return container.ParseArgs(c, &options.Options) - } - - // Create the 'cleanup' subcommand - cleanup := cli.Command{} - cleanup.Name = "cleanup" - cleanup.Usage = "Trigger any updates made to docker config to be undone" - cleanup.ArgsUsage = "<runtime_dirname>" - cleanup.Action = func(c *cli.Context) error { - return Cleanup(c, &options) - } - cleanup.Before = func(c *cli.Context) error { - return container.ParseArgs(c, &options.Options) - } - - // Register the subcommands with the top-level CLI - c.Commands = []*cli.Command{ - &setup, - &cleanup, - } - - // Setup common flags across both subcommands. All subcommands get the same - // set of flags even if they don't use some of them. This is so that we - // only require the user to specify one set of flags for both 'startup' - // and 'cleanup' to simplify things. - commonFlags := []cli.Flag{ - &cli.StringFlag{ - Name: "config", - Usage: "Path to docker config file", - Value: defaultConfig, - Destination: &options.Config, - EnvVars: []string{"RUNTIME_CONFIG", "DOCKER_CONFIG"}, - }, - &cli.StringFlag{ - Name: "socket", - Usage: "Path to the docker socket file", - Value: defaultSocket, - Destination: &options.Socket, - EnvVars: []string{"RUNTIME_SOCKET", "DOCKER_SOCKET"}, - }, - &cli.StringFlag{ - Name: "restart-mode", - Usage: "Specify how docker should be restarted; If 'none' is selected it will not be restarted [signal | systemd | none ]", - Value: defaultRestartMode, - Destination: &options.RestartMode, - EnvVars: []string{"RUNTIME_RESTART_MODE", "DOCKER_RESTART_MODE"}, - }, - &cli.StringFlag{ - Name: "host-root", - Usage: "Specify the path to the host root to be used when restarting docker using systemd", - Value: defaultHostRootMount, - Destination: &options.HostRootMount, - EnvVars: []string{"HOST_ROOT_MOUNT"}, - // Restart using systemd is currently not supported. - // We hide this option for the time being. - Hidden: true, - }, - &cli.StringFlag{ - Name: "runtime-name", - Aliases: []string{"nvidia-runtime-name", "runtime-class"}, - Usage: "Specify the name of the `nvidia` runtime. If set-as-default is selected, the runtime is used as the default runtime.", - Value: defaultRuntimeName, - Destination: &options.RuntimeName, - EnvVars: []string{"NVIDIA_RUNTIME_NAME", "DOCKER_RUNTIME_NAME"}, - }, - &cli.StringFlag{ - Name: "nvidia-runtime-dir", - Aliases: []string{"runtime-dir"}, - Usage: "The path where the nvidia-container-runtime binaries are located. If this is not specified, the first argument will be used instead", - Destination: &options.RuntimeDir, - EnvVars: []string{"NVIDIA_RUNTIME_DIR"}, - }, - &cli.BoolFlag{ - Name: "set-as-default", - Usage: "Set the `nvidia` runtime as the default runtime.", - Value: defaultSetAsDefault, - Destination: &options.SetAsDefault, - EnvVars: []string{"NVIDIA_RUNTIME_SET_AS_DEFAULT", "DOCKER_SET_AS_DEFAULT"}, - Hidden: true, - }, - } - - // Update the subcommand flags with the common subcommand flags - setup.Flags = append([]cli.Flag{}, commonFlags...) - cleanup.Flags = append([]cli.Flag{}, commonFlags...) - - // Run the top-level CLI - if err := c.Run(os.Args); err != nil { - log.Errorf("Error running docker configuration: %v", err) - os.Exit(1) - } -} - -// Setup updates docker configuration to include the nvidia runtime and reloads it -func Setup(c *cli.Context, o *options) error { - log.Infof("Starting 'setup' for %v", c.App.Name) - - cfg, err := docker.New( - docker.WithPath(o.Config), - ) - if err != nil { - return fmt.Errorf("unable to load config: %v", err) - } - - err = o.Configure(cfg) - if err != nil { - return fmt.Errorf("unable to configure docker: %v", err) - } - - err = RestartDocker(o) - if err != nil { - return fmt.Errorf("unable to restart docker: %v", err) - } - - log.Infof("Completed 'setup' for %v", c.App.Name) - - return nil -} - -// Cleanup reverts docker configuration to remove the nvidia runtime and reloads it -func Cleanup(c *cli.Context, o *options) error { - log.Infof("Starting 'cleanup' for %v", c.App.Name) - - cfg, err := docker.New( - docker.WithPath(o.Config), - ) - if err != nil { - return fmt.Errorf("unable to load config: %v", err) - } - - err = o.Unconfigure(cfg) - if err != nil { - return fmt.Errorf("unable to unconfigure docker: %v", err) - } - - err = RestartDocker(o) - if err != nil { - return fmt.Errorf("unable to signal docker: %v", err) - } - - log.Infof("Completed 'cleanup' for %v", c.App.Name) - - return nil -} - -// RestartDocker restarts docker depending on the value of restartModeFlag -func RestartDocker(o *options) error { - return o.Restart("docker", SignalDocker) -} diff --git a/tools/container/nvidia-toolkit/run.go b/tools/container/nvidia-toolkit/run.go deleted file mode 100644 index 0eea1e684..000000000 --- a/tools/container/nvidia-toolkit/run.go +++ /dev/null @@ -1,322 +0,0 @@ -package main - -import ( - "fmt" - "os" - "os/exec" - "os/signal" - "path/filepath" - "strings" - "syscall" - - log "github.com/sirupsen/logrus" - cli "github.com/urfave/cli/v2" - unix "golang.org/x/sys/unix" -) - -const ( - toolkitPidFilename = "toolkit.pid" - defaultPidFile = "/run/nvidia/toolkit/" + toolkitPidFilename - toolkitCommand = "toolkit" - toolkitSubDir = "toolkit" - - defaultToolkitArgs = "" - defaultRuntime = "docker" - defaultRuntimeArgs = "" -) - -var availableRuntimes = map[string]struct{}{"docker": {}, "crio": {}, "containerd": {}} - -var waitingForSignal = make(chan bool, 1) -var signalReceived = make(chan bool, 1) - -// options stores the command line arguments -type options struct { - noDaemon bool - runtime string - runtimeArgs string - root string - pidFile string -} - -// Version defines the CLI version. This is set at build time using LD FLAGS -var Version = "development" - -func main() { - remainingArgs, root, err := ParseArgs(os.Args) - if err != nil { - log.Errorf("Error: unable to parse arguments: %v", err) - os.Exit(1) - } - - options := options{} - // Create the top-level CLI - c := cli.NewApp() - c.Name = "nvidia-toolkit" - c.Usage = "Install the nvidia-container-toolkit for use by a given runtime" - c.UsageText = "[DESTINATION] [-n | --no-daemon] [-r | --runtime] [-u | --runtime-args]" - c.Description = "DESTINATION points to the host path underneath which the nvidia-container-toolkit should be installed.\nIt will be installed at ${DESTINATION}/toolkit" - c.Version = Version - c.Before = func(ctx *cli.Context) error { - return validateFlags(ctx, &options) - } - c.Action = func(ctx *cli.Context) error { - return Run(ctx, &options) - } - - // Setup flags for the CLI - c.Flags = []cli.Flag{ - &cli.BoolFlag{ - Name: "no-daemon", - Aliases: []string{"n"}, - Usage: "terminate immediately after setting up the runtime. Note that no cleanup will be performed", - Destination: &options.noDaemon, - EnvVars: []string{"NO_DAEMON"}, - }, - &cli.StringFlag{ - Name: "runtime", - Aliases: []string{"r"}, - Usage: "the runtime to setup on this node. One of {'docker', 'crio', 'containerd'}", - Value: defaultRuntime, - Destination: &options.runtime, - EnvVars: []string{"RUNTIME"}, - }, - &cli.StringFlag{ - Name: "runtime-args", - Aliases: []string{"u"}, - Usage: "arguments to pass to 'docker', 'crio', or 'containerd' setup command", - Value: defaultRuntimeArgs, - Destination: &options.runtimeArgs, - EnvVars: []string{"RUNTIME_ARGS"}, - }, - &cli.StringFlag{ - Name: "root", - Value: root, - Usage: "the folder where the NVIDIA Container Toolkit is to be installed. It will be installed to `ROOT`/toolkit", - Destination: &options.root, - EnvVars: []string{"ROOT"}, - }, - &cli.StringFlag{ - Name: "pid-file", - Value: defaultPidFile, - Usage: "the path to a toolkit.pid file to ensure that only a single configuration instance is running", - Destination: &options.pidFile, - EnvVars: []string{"TOOLKIT_PID_FILE", "PID_FILE"}, - }, - } - - // Run the CLI - log.Infof("Starting %v", c.Name) - if err := c.Run(remainingArgs); err != nil { - log.Errorf("error running nvidia-toolkit: %v", err) - os.Exit(1) - } - - log.Infof("Completed %v", c.Name) -} - -func validateFlags(_ *cli.Context, o *options) error { - if filepath.Base(o.pidFile) != toolkitPidFilename { - return fmt.Errorf("invalid toolkit.pid path %v", o.pidFile) - } - - return nil -} - -// Run runs the core logic of the CLI -func Run(c *cli.Context, o *options) error { - err := verifyFlags(o) - if err != nil { - return fmt.Errorf("unable to verify flags: %v", err) - } - - err = initialize(o.pidFile) - if err != nil { - return fmt.Errorf("unable to initialize: %v", err) - } - defer shutdown(o.pidFile) - - err = installToolkit(o) - if err != nil { - return fmt.Errorf("unable to install toolkit: %v", err) - } - - err = setupRuntime(o) - if err != nil { - return fmt.Errorf("unable to setup runtime: %v", err) - } - - if !o.noDaemon { - err = waitForSignal() - if err != nil { - return fmt.Errorf("unable to wait for signal: %v", err) - } - - err = cleanupRuntime(o) - if err != nil { - return fmt.Errorf("unable to cleanup runtime: %v", err) - } - } - - return nil -} - -// ParseArgs checks if a single positional argument was defined and extracts this the root. -// If no positional arguments are defined, the it is assumed that the root is specified as a flag. -func ParseArgs(args []string) ([]string, string, error) { - log.Infof("Parsing arguments") - - if len(args) < 2 { - return args, "", nil - } - - var lastPositionalArg int - for i, arg := range args { - if strings.HasPrefix(arg, "-") { - break - } - lastPositionalArg = i - } - - if lastPositionalArg == 0 { - return args, "", nil - } - - if lastPositionalArg == 1 { - return append([]string{args[0]}, args[2:]...), args[1], nil - } - - return nil, "", fmt.Errorf("unexpected positional argument(s) %v", args[2:lastPositionalArg+1]) -} - -func verifyFlags(o *options) error { - log.Infof("Verifying Flags") - if o.root == "" { - return fmt.Errorf("the install root must be specified") - } - - if _, exists := availableRuntimes[o.runtime]; !exists { - return fmt.Errorf("unknown runtime: %v", o.runtime) - } - return nil -} - -func initialize(pidFile string) error { - log.Infof("Initializing") - - if dir := filepath.Dir(pidFile); dir != "" { - err := os.MkdirAll(dir, 0755) - if err != nil { - return fmt.Errorf("unable to create folder for pidfile: %w", err) - } - } - - f, err := os.Create(pidFile) - if err != nil { - return fmt.Errorf("unable to create pidfile: %v", err) - } - - err = unix.Flock(int(f.Fd()), unix.LOCK_EX|unix.LOCK_NB) - if err != nil { - log.Warningf("Unable to get exclusive lock on '%v'", pidFile) - log.Warningf("This normally means an instance of the NVIDIA toolkit Container is already running, aborting") - return fmt.Errorf("unable to get flock on pidfile: %v", err) - } - - _, err = f.WriteString(fmt.Sprintf("%v\n", os.Getpid())) - if err != nil { - return fmt.Errorf("unable to write PID to pidfile: %v", err) - } - - sigs := make(chan os.Signal, 1) - signal.Notify(sigs, syscall.SIGHUP, syscall.SIGINT, syscall.SIGQUIT, syscall.SIGPIPE, syscall.SIGTERM) - go func() { - <-sigs - select { - case <-waitingForSignal: - signalReceived <- true - default: - log.Infof("Signal received, exiting early") - shutdown(pidFile) - os.Exit(0) - } - }() - - return nil -} - -func installToolkit(o *options) error { - log.Infof("Installing toolkit") - - cmdline := []string{ - toolkitCommand, - "install", - "--toolkit-root", - filepath.Join(o.root, toolkitSubDir), - } - - //nolint:gosec // TODO: Can we harden this so that there is less risk of command injection - cmd := exec.Command("sh", "-c", strings.Join(cmdline, " ")) - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - err := cmd.Run() - if err != nil { - return fmt.Errorf("error running %v command: %v", cmdline, err) - } - - return nil -} - -func setupRuntime(o *options) error { - toolkitDir := filepath.Join(o.root, toolkitSubDir) - - log.Infof("Setting up runtime") - - cmdline := fmt.Sprintf("%v setup %v %v\n", o.runtime, o.runtimeArgs, toolkitDir) - - //nolint:gosec // TODO: Can we harden this so that there is less risk of command injection - cmd := exec.Command("sh", "-c", cmdline) - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - err := cmd.Run() - if err != nil { - return fmt.Errorf("error running %v command: %v", o.runtime, err) - } - - return nil -} - -func waitForSignal() error { - log.Infof("Waiting for signal") - waitingForSignal <- true - <-signalReceived - return nil -} - -func cleanupRuntime(o *options) error { - toolkitDir := filepath.Join(o.root, toolkitSubDir) - - log.Infof("Cleaning up Runtime") - - cmdline := fmt.Sprintf("%v cleanup %v %v\n", o.runtime, o.runtimeArgs, toolkitDir) - - //nolint:gosec // TODO: Can we harden this so that there is less risk of command injection - cmd := exec.Command("sh", "-c", cmdline) - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - err := cmd.Run() - if err != nil { - return fmt.Errorf("error running %v command: %v", o.runtime, err) - } - - return nil -} - -func shutdown(pidFile string) { - log.Infof("Shutting Down") - - err := os.Remove(pidFile) - if err != nil { - log.Warningf("Unable to remove pidfile: %v", err) - } -} diff --git a/tools/container/nvidia-toolkit/run_test.go b/tools/container/nvidia-toolkit/run_test.go deleted file mode 100644 index 8a0bb50e0..000000000 --- a/tools/container/nvidia-toolkit/run_test.go +++ /dev/null @@ -1,84 +0,0 @@ -/** -# Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -**/ - -package main - -import ( - "fmt" - "testing" - - "github.com/stretchr/testify/require" -) - -func TestParseArgs(t *testing.T) { - testCases := []struct { - args []string - expectedRemaining []string - expectedRoot string - expectedError error - }{ - { - args: []string{}, - expectedRemaining: []string{}, - expectedRoot: "", - expectedError: nil, - }, - { - args: []string{"app"}, - expectedRemaining: []string{"app"}, - }, - { - args: []string{"app", "root"}, - expectedRemaining: []string{"app"}, - expectedRoot: "root", - }, - { - args: []string{"app", "--flag"}, - expectedRemaining: []string{"app", "--flag"}, - }, - { - args: []string{"app", "root", "--flag"}, - expectedRemaining: []string{"app", "--flag"}, - expectedRoot: "root", - }, - { - args: []string{"app", "root", "not-root", "--flag"}, - expectedError: fmt.Errorf("unexpected positional argument(s) [not-root]"), - }, - { - args: []string{"app", "root", "not-root"}, - expectedError: fmt.Errorf("unexpected positional argument(s) [not-root]"), - }, - { - args: []string{"app", "root", "not-root", "also"}, - expectedError: fmt.Errorf("unexpected positional argument(s) [not-root also]"), - }, - } - - for i, tc := range testCases { - t.Run(fmt.Sprintf("%d", i), func(t *testing.T) { - remaining, root, err := ParseArgs(tc.args) - if tc.expectedError != nil { - require.EqualError(t, err, tc.expectedError.Error()) - } else { - require.NoError(t, err) - } - - require.ElementsMatch(t, tc.expectedRemaining, remaining) - require.Equal(t, tc.expectedRoot, root) - }) - } -} diff --git a/tools/container/toolkit/executable.go b/tools/container/toolkit/executable.go deleted file mode 100644 index 0d59e3756..000000000 --- a/tools/container/toolkit/executable.go +++ /dev/null @@ -1,153 +0,0 @@ -/** -# Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -*/ - -package main - -import ( - "fmt" - "io" - "os" - "path/filepath" - "sort" - "strings" - - log "github.com/sirupsen/logrus" -) - -type executableTarget struct { - dotfileName string - wrapperName string -} - -type executable struct { - source string - target executableTarget - env map[string]string - preLines []string - argLines []string -} - -// install installs an executable component of the NVIDIA container toolkit. The source executable -// is copied to a `.real` file and a wapper is created to set up the environment as required. -func (e executable) install(destFolder string) (string, error) { - log.Infof("Installing executable '%v' to %v", e.source, destFolder) - - dotfileName := e.dotfileName() - - installedDotfileName, err := installFileToFolderWithName(destFolder, dotfileName, e.source) - if err != nil { - return "", fmt.Errorf("error installing file '%v' as '%v': %v", e.source, dotfileName, err) - } - log.Infof("Installed '%v'", installedDotfileName) - - wrapperFilename, err := e.installWrapper(destFolder, installedDotfileName) - if err != nil { - return "", fmt.Errorf("error wrapping '%v': %v", installedDotfileName, err) - } - log.Infof("Installed wrapper '%v'", wrapperFilename) - - return wrapperFilename, nil -} - -func (e executable) dotfileName() string { - return e.target.dotfileName -} - -func (e executable) wrapperName() string { - return e.target.wrapperName -} - -func (e executable) installWrapper(destFolder string, dotfileName string) (string, error) { - wrapperPath := filepath.Join(destFolder, e.wrapperName()) - wrapper, err := os.Create(wrapperPath) - if err != nil { - return "", fmt.Errorf("error creating executable wrapper: %v", err) - } - defer wrapper.Close() - - err = e.writeWrapperTo(wrapper, destFolder, dotfileName) - if err != nil { - return "", fmt.Errorf("error writing wrapper contents: %v", err) - } - - err = ensureExecutable(wrapperPath) - if err != nil { - return "", fmt.Errorf("error making wrapper executable: %v", err) - } - return wrapperPath, nil -} - -func (e executable) writeWrapperTo(wrapper io.Writer, destFolder string, dotfileName string) error { - r := newReplacements(destDirPattern, destFolder) - - // Add the shebang - fmt.Fprintln(wrapper, "#! /bin/sh") - - // Add the preceding lines if any - for _, line := range e.preLines { - fmt.Fprintf(wrapper, "%s\n", r.apply(line)) - } - - // Update the path to include the destination folder - var env map[string]string - if e.env == nil { - env = make(map[string]string) - } else { - env = e.env - } - - path, specified := env["PATH"] - if !specified { - path = "$PATH" - } - env["PATH"] = strings.Join([]string{destFolder, path}, ":") - - var sortedEnvvars []string - for e := range env { - sortedEnvvars = append(sortedEnvvars, e) - } - sort.Strings(sortedEnvvars) - - for _, e := range sortedEnvvars { - v := env[e] - fmt.Fprintf(wrapper, "%s=%s \\\n", e, r.apply(v)) - } - // Add the call to the target executable - fmt.Fprintf(wrapper, "%s \\\n", dotfileName) - - // Insert additional lines in the `arg` list - for _, line := range e.argLines { - fmt.Fprintf(wrapper, "\t%s \\\n", r.apply(line)) - } - // Add the script arguments "$@" - fmt.Fprintln(wrapper, "\t\"$@\"") - - return nil -} - -// ensureExecutable is equivalent to running chmod +x on the specified file -func ensureExecutable(path string) error { - info, err := os.Stat(path) - if err != nil { - return fmt.Errorf("error getting file info for '%v': %v", path, err) - } - executableMode := info.Mode() | 0111 - err = os.Chmod(path, executableMode) - if err != nil { - return fmt.Errorf("error setting executable mode for '%v': %v", path, err) - } - return nil -} diff --git a/tools/container/toolkit/executable_test.go b/tools/container/toolkit/executable_test.go deleted file mode 100644 index 572ee2bba..000000000 --- a/tools/container/toolkit/executable_test.go +++ /dev/null @@ -1,152 +0,0 @@ -/** -# Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -*/ - -package main - -import ( - "bytes" - "os" - "path/filepath" - "strings" - "testing" - - "github.com/stretchr/testify/require" -) - -func TestWrapper(t *testing.T) { - const shebang = "#! /bin/sh" - const destFolder = "/dest/folder" - const dotfileName = "source.real" - - testCases := []struct { - e executable - expectedLines []string - }{ - { - e: executable{}, - expectedLines: []string{ - shebang, - "PATH=/dest/folder:$PATH \\", - "source.real \\", - "\t\"$@\"", - "", - }, - }, - { - e: executable{ - env: map[string]string{ - "PATH": "some-path", - }, - }, - expectedLines: []string{ - shebang, - "PATH=/dest/folder:some-path \\", - "source.real \\", - "\t\"$@\"", - "", - }, - }, - { - e: executable{ - preLines: []string{ - "preline1", - "preline2", - }, - }, - expectedLines: []string{ - shebang, - "preline1", - "preline2", - "PATH=/dest/folder:$PATH \\", - "source.real \\", - "\t\"$@\"", - "", - }, - }, - { - e: executable{ - argLines: []string{ - "argline1", - "argline2", - }, - }, - expectedLines: []string{ - shebang, - "PATH=/dest/folder:$PATH \\", - "source.real \\", - "\targline1 \\", - "\targline2 \\", - "\t\"$@\"", - "", - }, - }, - } - - for i, tc := range testCases { - buf := &bytes.Buffer{} - - err := tc.e.writeWrapperTo(buf, destFolder, dotfileName) - require.NoError(t, err) - - exepectedContents := strings.Join(tc.expectedLines, "\n") - require.Equal(t, exepectedContents, buf.String(), "%v: %v", i, tc) - } -} - -func TestInstallExecutable(t *testing.T) { - inputFolder, err := os.MkdirTemp("", "") - require.NoError(t, err) - defer os.RemoveAll(inputFolder) - - // Create the source file - source := filepath.Join(inputFolder, "input") - sourceFile, err := os.Create(source) - - base := filepath.Base(source) - - require.NoError(t, err) - require.NoError(t, sourceFile.Close()) - - e := executable{ - source: source, - target: executableTarget{ - dotfileName: "input.real", - wrapperName: "input", - }, - } - - destFolder, err := os.MkdirTemp("", "output-*") - require.NoError(t, err) - defer os.RemoveAll(destFolder) - - installed, err := e.install(destFolder) - - require.NoError(t, err) - require.Equal(t, filepath.Join(destFolder, base), installed) - - // Now check the post conditions: - sourceInfo, err := os.Stat(source) - require.NoError(t, err) - - destInfo, err := os.Stat(filepath.Join(destFolder, base+".real")) - require.NoError(t, err) - require.Equal(t, sourceInfo.Size(), destInfo.Size()) - require.Equal(t, sourceInfo.Mode(), destInfo.Mode()) - - wrapperInfo, err := os.Stat(installed) - require.NoError(t, err) - require.NotEqual(t, 0, wrapperInfo.Mode()&0111) -} diff --git a/tools/container/toolkit/runtime.go b/tools/container/toolkit/runtime.go deleted file mode 100644 index d2e0b69f8..000000000 --- a/tools/container/toolkit/runtime.go +++ /dev/null @@ -1,84 +0,0 @@ -/** -# Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -*/ - -package main - -import ( - "fmt" - "path/filepath" - - "github.com/NVIDIA/nvidia-container-toolkit/tools/container/operator" -) - -const ( - nvidiaContainerRuntimeSource = "/usr/bin/nvidia-container-runtime" -) - -// installContainerRuntimes sets up the NVIDIA container runtimes, copying the executables -// and implementing the required wrapper -func installContainerRuntimes(toolkitDir string, driverRoot string) error { - runtimes := operator.GetRuntimes() - for _, runtime := range runtimes { - r := newNvidiaContainerRuntimeInstaller(runtime.Path) - - _, err := r.install(toolkitDir) - if err != nil { - return fmt.Errorf("error installing NVIDIA container runtime: %v", err) - } - } - return nil -} - -// newNVidiaContainerRuntimeInstaller returns a new executable installer for the NVIDIA container runtime. -// This installer will copy the specified source executable to the toolkit directory. -// The executable is copied to a file with the same name as the source, but with a ".real" suffix and a wrapper is -// created to allow for the configuration of the runtime environment. -func newNvidiaContainerRuntimeInstaller(source string) *executable { - wrapperName := filepath.Base(source) - dotfileName := wrapperName + ".real" - target := executableTarget{ - dotfileName: dotfileName, - wrapperName: wrapperName, - } - return newRuntimeInstaller(source, target, nil) -} - -func newRuntimeInstaller(source string, target executableTarget, env map[string]string) *executable { - preLines := []string{ - "", - "cat /proc/modules | grep -e \"^nvidia \" >/dev/null 2>&1", - "if [ \"${?}\" != \"0\" ]; then", - " echo \"nvidia driver modules are not yet loaded, invoking runc directly\"", - " exec runc \"$@\"", - "fi", - "", - } - - runtimeEnv := make(map[string]string) - runtimeEnv["XDG_CONFIG_HOME"] = filepath.Join(destDirPattern, ".config") - for k, v := range env { - runtimeEnv[k] = v - } - - r := executable{ - source: source, - target: target, - env: runtimeEnv, - preLines: preLines, - } - - return &r -} diff --git a/tools/container/toolkit/runtime_test.go b/tools/container/toolkit/runtime_test.go deleted file mode 100644 index 61fa8b9e8..000000000 --- a/tools/container/toolkit/runtime_test.go +++ /dev/null @@ -1,57 +0,0 @@ -/** -# Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -*/ - -package main - -import ( - "bytes" - "strings" - "testing" - - "github.com/stretchr/testify/require" -) - -func TestNvidiaContainerRuntimeInstallerWrapper(t *testing.T) { - r := newNvidiaContainerRuntimeInstaller(nvidiaContainerRuntimeSource) - - const shebang = "#! /bin/sh" - const destFolder = "/dest/folder" - const dotfileName = "source.real" - - buf := &bytes.Buffer{} - - err := r.writeWrapperTo(buf, destFolder, dotfileName) - require.NoError(t, err) - - expectedLines := []string{ - shebang, - "", - "cat /proc/modules | grep -e \"^nvidia \" >/dev/null 2>&1", - "if [ \"${?}\" != \"0\" ]; then", - " echo \"nvidia driver modules are not yet loaded, invoking runc directly\"", - " exec runc \"$@\"", - "fi", - "", - "PATH=/dest/folder:$PATH \\", - "XDG_CONFIG_HOME=/dest/folder/.config \\", - "source.real \\", - "\t\"$@\"", - "", - } - - exepectedContents := strings.Join(expectedLines, "\n") - require.Equal(t, exepectedContents, buf.String()) -} diff --git a/tools/container/toolkit/toolkit.go b/tools/container/toolkit/toolkit.go deleted file mode 100644 index 8175ed4e8..000000000 --- a/tools/container/toolkit/toolkit.go +++ /dev/null @@ -1,849 +0,0 @@ -/** -# Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -*/ - -package main - -import ( - "errors" - "fmt" - "io" - "os" - "path/filepath" - "strings" - - toml "github.com/pelletier/go-toml" - log "github.com/sirupsen/logrus" - "github.com/urfave/cli/v2" - "tags.cncf.io/container-device-interface/pkg/cdi" - "tags.cncf.io/container-device-interface/pkg/parser" - - "github.com/NVIDIA/nvidia-container-toolkit/internal/config" - "github.com/NVIDIA/nvidia-container-toolkit/internal/system/nvdevices" - "github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi" - transformroot "github.com/NVIDIA/nvidia-container-toolkit/pkg/nvcdi/transform/root" -) - -const ( - // DefaultNvidiaDriverRoot specifies the default NVIDIA driver run directory - DefaultNvidiaDriverRoot = "/run/nvidia/driver" - - nvidiaContainerCliSource = "/usr/bin/nvidia-container-cli" - nvidiaContainerRuntimeHookSource = "/usr/bin/nvidia-container-runtime-hook" - - nvidiaContainerToolkitConfigSource = "/etc/nvidia-container-runtime/config.toml" - configFilename = "config.toml" - - toolkitPidFilename = "toolkit.pid" -) - -type options struct { - DriverRoot string - DevRoot string - DriverRootCtrPath string - DevRootCtrPath string - - ContainerRuntimeMode string - ContainerRuntimeDebug string - ContainerRuntimeLogLevel string - - ContainerRuntimeModesCdiDefaultKind string - ContainerRuntimeModesCDIAnnotationPrefixes cli.StringSlice - - ContainerRuntimeRuntimes cli.StringSlice - - ContainerRuntimeHookSkipModeDetection bool - - ContainerCLIDebug string - toolkitRoot string - - cdiEnabled bool - cdiOutputDir string - cdiKind string - cdiVendor string - cdiClass string - - createDeviceNodes cli.StringSlice - - acceptNVIDIAVisibleDevicesWhenUnprivileged bool - acceptNVIDIAVisibleDevicesAsVolumeMounts bool - - ignoreErrors bool -} - -func main() { - - opts := options{} - - // Create the top-level CLI - c := cli.NewApp() - c.Name = "toolkit" - c.Usage = "Manage the NVIDIA container toolkit" - c.Version = "0.1.0" - - // Create the 'install' subcommand - install := cli.Command{} - install.Name = "install" - install.Usage = "Install the components of the NVIDIA container toolkit" - install.ArgsUsage = "<toolkit_directory>" - install.Before = func(c *cli.Context) error { - return validateOptions(c, &opts) - } - install.Action = func(c *cli.Context) error { - return Install(c, &opts) - } - - // Create the 'delete' command - delete := cli.Command{} - delete.Name = "delete" - delete.Usage = "Delete the NVIDIA container toolkit" - delete.ArgsUsage = "<toolkit_directory>" - delete.Before = func(c *cli.Context) error { - return validateOptions(c, &opts) - } - delete.Action = func(c *cli.Context) error { - return TryDelete(c, &opts) - } - - // Register the subcommand with the top-level CLI - c.Commands = []*cli.Command{ - &install, - &delete, - } - - flags := []cli.Flag{ - &cli.StringFlag{ - Name: "driver-root", - Aliases: []string{"nvidia-driver-root"}, - Value: DefaultNvidiaDriverRoot, - Destination: &opts.DriverRoot, - EnvVars: []string{"NVIDIA_DRIVER_ROOT", "DRIVER_ROOT"}, - }, - &cli.StringFlag{ - Name: "driver-root-ctr-path", - Value: DefaultNvidiaDriverRoot, - Destination: &opts.DriverRootCtrPath, - EnvVars: []string{"DRIVER_ROOT_CTR_PATH"}, - }, - &cli.StringFlag{ - Name: "dev-root", - Usage: "Specify the root where `/dev` is located. If this is not specified, the driver-root is assumed.", - Destination: &opts.DevRoot, - EnvVars: []string{"NVIDIA_DEV_ROOT", "DEV_ROOT"}, - }, - &cli.StringFlag{ - Name: "dev-root-ctr-path", - Usage: "Specify the root where `/dev` is located in the container. If this is not specified, the driver-root-ctr-path is assumed.", - Destination: &opts.DevRootCtrPath, - EnvVars: []string{"DEV_ROOT_CTR_PATH"}, - }, - &cli.StringFlag{ - Name: "nvidia-container-runtime.debug", - Aliases: []string{"nvidia-container-runtime-debug"}, - Usage: "Specify the location of the debug log file for the NVIDIA Container Runtime", - Destination: &opts.ContainerRuntimeDebug, - EnvVars: []string{"NVIDIA_CONTAINER_RUNTIME_DEBUG"}, - }, - &cli.StringFlag{ - Name: "nvidia-container-runtime.log-level", - Aliases: []string{"nvidia-container-runtime-debug-log-level"}, - Destination: &opts.ContainerRuntimeLogLevel, - EnvVars: []string{"NVIDIA_CONTAINER_RUNTIME_LOG_LEVEL"}, - }, - &cli.StringFlag{ - Name: "nvidia-container-runtime.mode", - Aliases: []string{"nvidia-container-runtime-mode"}, - Destination: &opts.ContainerRuntimeMode, - EnvVars: []string{"NVIDIA_CONTAINER_RUNTIME_MODE"}, - }, - &cli.StringFlag{ - Name: "nvidia-container-runtime.modes.cdi.default-kind", - Destination: &opts.ContainerRuntimeModesCdiDefaultKind, - EnvVars: []string{"NVIDIA_CONTAINER_RUNTIME_MODES_CDI_DEFAULT_KIND"}, - }, - &cli.StringSliceFlag{ - Name: "nvidia-container-runtime.modes.cdi.annotation-prefixes", - Destination: &opts.ContainerRuntimeModesCDIAnnotationPrefixes, - EnvVars: []string{"NVIDIA_CONTAINER_RUNTIME_MODES_CDI_ANNOTATION_PREFIXES"}, - }, - &cli.StringSliceFlag{ - Name: "nvidia-container-runtime.runtimes", - Destination: &opts.ContainerRuntimeRuntimes, - EnvVars: []string{"NVIDIA_CONTAINER_RUNTIME_RUNTIMES"}, - }, - &cli.BoolFlag{ - Name: "nvidia-container-runtime-hook.skip-mode-detection", - Value: true, - Destination: &opts.ContainerRuntimeHookSkipModeDetection, - EnvVars: []string{"NVIDIA_CONTAINER_RUNTIME_HOOK_SKIP_MODE_DETECTION"}, - }, - &cli.StringFlag{ - Name: "nvidia-container-cli.debug", - Aliases: []string{"nvidia-container-cli-debug"}, - Usage: "Specify the location of the debug log file for the NVIDIA Container CLI", - Destination: &opts.ContainerCLIDebug, - EnvVars: []string{"NVIDIA_CONTAINER_CLI_DEBUG"}, - }, - &cli.BoolFlag{ - Name: "accept-nvidia-visible-devices-envvar-when-unprivileged", - Usage: "Set the accept-nvidia-visible-devices-envvar-when-unprivileged config option", - Value: true, - Destination: &opts.acceptNVIDIAVisibleDevicesWhenUnprivileged, - EnvVars: []string{"ACCEPT_NVIDIA_VISIBLE_DEVICES_ENVVAR_WHEN_UNPRIVILEGED"}, - }, - &cli.BoolFlag{ - Name: "accept-nvidia-visible-devices-as-volume-mounts", - Usage: "Set the accept-nvidia-visible-devices-as-volume-mounts config option", - Destination: &opts.acceptNVIDIAVisibleDevicesAsVolumeMounts, - EnvVars: []string{"ACCEPT_NVIDIA_VISIBLE_DEVICES_AS_VOLUME_MOUNTS"}, - }, - &cli.StringFlag{ - Name: "toolkit-root", - Usage: "The directory where the NVIDIA Container toolkit is to be installed", - Required: true, - Destination: &opts.toolkitRoot, - EnvVars: []string{"TOOLKIT_ROOT"}, - }, - &cli.BoolFlag{ - Name: "cdi-enabled", - Aliases: []string{"enable-cdi"}, - Usage: "enable the generation of a CDI specification", - Destination: &opts.cdiEnabled, - EnvVars: []string{"CDI_ENABLED", "ENABLE_CDI"}, - }, - &cli.StringFlag{ - Name: "cdi-output-dir", - Usage: "the directory where the CDI output files are to be written. If this is set to '', no CDI specification is generated.", - Value: "/var/run/cdi", - Destination: &opts.cdiOutputDir, - EnvVars: []string{"CDI_OUTPUT_DIR"}, - }, - &cli.StringFlag{ - Name: "cdi-kind", - Usage: "the vendor string to use for the generated CDI specification", - Value: "management.nvidia.com/gpu", - Destination: &opts.cdiKind, - EnvVars: []string{"CDI_KIND"}, - }, - &cli.BoolFlag{ - Name: "ignore-errors", - Usage: "ignore errors when installing the NVIDIA Container toolkit. This is used for testing purposes only.", - Hidden: true, - Destination: &opts.ignoreErrors, - }, - &cli.StringSliceFlag{ - Name: "create-device-nodes", - Usage: "(Only applicable with --cdi-enabled) specifies which device nodes should be created. If any one of the options is set to '' or 'none', no device nodes will be created.", - Value: cli.NewStringSlice("control"), - Destination: &opts.createDeviceNodes, - EnvVars: []string{"CREATE_DEVICE_NODES"}, - }, - } - - // Update the subcommand flags with the common subcommand flags - install.Flags = append([]cli.Flag{}, flags...) - delete.Flags = append([]cli.Flag{}, flags...) - - // Run the top-level CLI - if err := c.Run(os.Args); err != nil { - log.Fatal(fmt.Errorf("error: %v", err)) - } -} - -// validateOptions checks whether the specified options are valid -func validateOptions(c *cli.Context, opts *options) error { - if opts.toolkitRoot == "" { - return fmt.Errorf("invalid --toolkit-root option: %v", opts.toolkitRoot) - } - - vendor, class := parser.ParseQualifier(opts.cdiKind) - if err := parser.ValidateVendorName(vendor); err != nil { - return fmt.Errorf("invalid CDI vendor name: %v", err) - } - if err := parser.ValidateClassName(class); err != nil { - return fmt.Errorf("invalid CDI class name: %v", err) - } - opts.cdiVendor = vendor - opts.cdiClass = class - - if opts.cdiEnabled && opts.cdiOutputDir == "" { - log.Warning("Skipping CDI spec generation (no output directory specified)") - opts.cdiEnabled = false - } - - isDisabled := false - for _, mode := range opts.createDeviceNodes.Value() { - if mode != "" && mode != "none" && mode != "control" { - return fmt.Errorf("invalid --create-device-nodes value: %v", mode) - } - if mode == "" || mode == "none" { - isDisabled = true - break - } - } - if !opts.cdiEnabled && !isDisabled { - log.Info("disabling device node creation since --cdi-enabled=false") - isDisabled = true - } - if isDisabled { - opts.createDeviceNodes = *cli.NewStringSlice() - } - - return nil -} - -// TryDelete attempts to remove the specified toolkit folder. -// A toolkit.pid file -- if present -- is skipped. -func TryDelete(cli *cli.Context, opts *options) error { - log.Infof("Attempting to delete NVIDIA container toolkit from '%v'", opts.toolkitRoot) - - contents, err := os.ReadDir(opts.toolkitRoot) - if err != nil && errors.Is(err, os.ErrNotExist) { - return nil - } else if err != nil { - return fmt.Errorf("failed to read the contents of %v: %w", opts.toolkitRoot, err) - } - - for _, content := range contents { - if content.Name() == toolkitPidFilename { - continue - } - name := filepath.Join(opts.toolkitRoot, content.Name()) - if err := os.RemoveAll(name); err != nil { - log.Warningf("could not remove %v: %v", name, err) - } - } - if err := os.RemoveAll(opts.toolkitRoot); err != nil { - log.Warningf("could not remove %v: %v", opts.toolkitRoot, err) - } - return nil -} - -// Install installs the components of the NVIDIA container toolkit. -// Any existing installation is removed. -func Install(cli *cli.Context, opts *options) error { - log.Infof("Installing NVIDIA container toolkit to '%v'", opts.toolkitRoot) - - log.Infof("Removing existing NVIDIA container toolkit installation") - err := os.RemoveAll(opts.toolkitRoot) - if err != nil && !opts.ignoreErrors { - return fmt.Errorf("error removing toolkit directory: %v", err) - } else if err != nil { - log.Errorf("Ignoring error: %v", fmt.Errorf("error removing toolkit directory: %v", err)) - } - - toolkitConfigDir := filepath.Join(opts.toolkitRoot, ".config", "nvidia-container-runtime") - toolkitConfigPath := filepath.Join(toolkitConfigDir, configFilename) - - err = createDirectories(opts.toolkitRoot, toolkitConfigDir) - if err != nil && !opts.ignoreErrors { - return fmt.Errorf("could not create required directories: %v", err) - } else if err != nil { - log.Errorf("Ignoring error: %v", fmt.Errorf("could not create required directories: %v", err)) - } - - err = installContainerLibraries(opts.toolkitRoot) - if err != nil && !opts.ignoreErrors { - return fmt.Errorf("error installing NVIDIA container library: %v", err) - } else if err != nil { - log.Errorf("Ignoring error: %v", fmt.Errorf("error installing NVIDIA container library: %v", err)) - } - - err = installContainerRuntimes(opts.toolkitRoot, opts.DriverRoot) - if err != nil && !opts.ignoreErrors { - return fmt.Errorf("error installing NVIDIA container runtime: %v", err) - } else if err != nil { - log.Errorf("Ignoring error: %v", fmt.Errorf("error installing NVIDIA container runtime: %v", err)) - } - - nvidiaContainerCliExecutable, err := installContainerCLI(opts.toolkitRoot) - if err != nil && !opts.ignoreErrors { - return fmt.Errorf("error installing NVIDIA container CLI: %v", err) - } else if err != nil { - log.Errorf("Ignoring error: %v", fmt.Errorf("error installing NVIDIA container CLI: %v", err)) - } - - nvidiaContainerRuntimeHookPath, err := installRuntimeHook(opts.toolkitRoot, toolkitConfigPath) - if err != nil && !opts.ignoreErrors { - return fmt.Errorf("error installing NVIDIA container runtime hook: %v", err) - } else if err != nil { - log.Errorf("Ignoring error: %v", fmt.Errorf("error installing NVIDIA container runtime hook: %v", err)) - } - - nvidiaCTKPath, err := installContainerToolkitCLI(opts.toolkitRoot) - if err != nil && !opts.ignoreErrors { - return fmt.Errorf("error installing NVIDIA Container Toolkit CLI: %v", err) - } else if err != nil { - log.Errorf("Ignoring error: %v", fmt.Errorf("error installing NVIDIA Container Toolkit CLI: %v", err)) - } - - nvidiaCDIHookPath, err := installContainerCDIHookCLI(opts.toolkitRoot) - if err != nil && !opts.ignoreErrors { - return fmt.Errorf("error installing NVIDIA Container CDI Hook CLI: %v", err) - } else if err != nil { - log.Errorf("Ignoring error: %v", fmt.Errorf("error installing NVIDIA Container CDI Hook CLI: %v", err)) - } - - err = installToolkitConfig(cli, toolkitConfigPath, nvidiaContainerCliExecutable, nvidiaCTKPath, nvidiaContainerRuntimeHookPath, opts) - if err != nil && !opts.ignoreErrors { - return fmt.Errorf("error installing NVIDIA container toolkit config: %v", err) - } else if err != nil { - log.Errorf("Ignoring error: %v", fmt.Errorf("error installing NVIDIA container toolkit config: %v", err)) - } - - err = createDeviceNodes(opts) - if err != nil && !opts.ignoreErrors { - return fmt.Errorf("error creating device nodes: %v", err) - } else if err != nil { - log.Errorf("Ignoring error: %v", fmt.Errorf("error creating device nodes: %v", err)) - } - - err = generateCDISpec(opts, nvidiaCDIHookPath) - if err != nil && !opts.ignoreErrors { - return fmt.Errorf("error generating CDI specification: %v", err) - } else if err != nil { - log.Errorf("Ignoring error: %v", fmt.Errorf("error generating CDI specification: %v", err)) - } - - return nil -} - -// installContainerLibraries locates and installs the libraries that are part of -// the nvidia-container-toolkit. -// A predefined set of library candidates are considered, with the first one -// resulting in success being installed to the toolkit folder. The install process -// resolves the symlink for the library and copies the versioned library itself. -func installContainerLibraries(toolkitRoot string) error { - log.Infof("Installing NVIDIA container library to '%v'", toolkitRoot) - - libs := []string{ - "libnvidia-container.so.1", - "libnvidia-container-go.so.1", - } - - for _, l := range libs { - err := installLibrary(l, toolkitRoot) - if err != nil { - return fmt.Errorf("failed to install %s: %v", l, err) - } - } - - return nil -} - -// installLibrary installs the specified library to the toolkit directory. -func installLibrary(libName string, toolkitRoot string) error { - libraryPath, err := findLibrary("", libName) - if err != nil { - return fmt.Errorf("error locating NVIDIA container library: %v", err) - } - - installedLibPath, err := installFileToFolder(toolkitRoot, libraryPath) - if err != nil { - return fmt.Errorf("error installing %v to %v: %v", libraryPath, toolkitRoot, err) - } - log.Infof("Installed '%v' to '%v'", libraryPath, installedLibPath) - - if filepath.Base(installedLibPath) == libName { - return nil - } - - err = installSymlink(toolkitRoot, libName, installedLibPath) - if err != nil { - return fmt.Errorf("error installing symlink for NVIDIA container library: %v", err) - } - - return nil -} - -// installToolkitConfig installs the config file for the NVIDIA container toolkit ensuring -// that the settings are updated to match the desired install and nvidia driver directories. -func installToolkitConfig(c *cli.Context, toolkitConfigPath string, nvidiaContainerCliExecutablePath string, nvidiaCTKPath string, nvidaContainerRuntimeHookPath string, opts *options) error { - log.Infof("Installing NVIDIA container toolkit config '%v'", toolkitConfigPath) - - cfg, err := loadConfig(nvidiaContainerToolkitConfigSource) - if err != nil { - return fmt.Errorf("could not open source config file: %v", err) - } - - targetConfig, err := os.Create(toolkitConfigPath) - if err != nil { - return fmt.Errorf("could not create target config file: %v", err) - } - defer targetConfig.Close() - - // Read the ldconfig path from the config as this may differ per platform - // On ubuntu-based systems this ends in `.real` - ldconfigPath := fmt.Sprintf("%s", cfg.GetDefault("nvidia-container-cli.ldconfig", "/sbin/ldconfig")) - // Use the driver run root as the root: - driverLdconfigPath := config.NormalizeLDConfigPath("@" + filepath.Join(opts.DriverRoot, strings.TrimPrefix(ldconfigPath, "@/"))) - - configValues := map[string]interface{}{ - // Set the options in the root toml table - "accept-nvidia-visible-devices-envvar-when-unprivileged": opts.acceptNVIDIAVisibleDevicesWhenUnprivileged, - "accept-nvidia-visible-devices-as-volume-mounts": opts.acceptNVIDIAVisibleDevicesAsVolumeMounts, - // Set the nvidia-container-cli options - "nvidia-container-cli.root": opts.DriverRoot, - "nvidia-container-cli.path": nvidiaContainerCliExecutablePath, - "nvidia-container-cli.ldconfig": driverLdconfigPath, - // Set nvidia-ctk options - "nvidia-ctk.path": nvidiaCTKPath, - // Set the nvidia-container-runtime-hook options - "nvidia-container-runtime-hook.path": nvidaContainerRuntimeHookPath, - "nvidia-container-runtime-hook.skip-mode-detection": opts.ContainerRuntimeHookSkipModeDetection, - } - for key, value := range configValues { - cfg.Set(key, value) - } - - // Set the optional config options - optionalConfigValues := map[string]interface{}{ - "nvidia-container-runtime.debug": opts.ContainerRuntimeDebug, - "nvidia-container-runtime.log-level": opts.ContainerRuntimeLogLevel, - "nvidia-container-runtime.mode": opts.ContainerRuntimeMode, - "nvidia-container-runtime.modes.cdi.annotation-prefixes": opts.ContainerRuntimeModesCDIAnnotationPrefixes, - "nvidia-container-runtime.modes.cdi.default-kind": opts.ContainerRuntimeModesCdiDefaultKind, - "nvidia-container-runtime.runtimes": opts.ContainerRuntimeRuntimes, - "nvidia-container-cli.debug": opts.ContainerCLIDebug, - } - for key, value := range optionalConfigValues { - if !c.IsSet(key) { - log.Infof("Skipping unset option: %v", key) - continue - } - if value == nil { - log.Infof("Skipping option with nil value: %v", key) - continue - } - - switch v := value.(type) { - case string: - if v == "" { - continue - } - case cli.StringSlice: - if len(v.Value()) == 0 { - continue - } - value = v.Value() - default: - log.Warningf("Unexpected type for option %v=%v: %T", key, value, v) - } - - cfg.Set(key, value) - } - - if _, err := cfg.WriteTo(targetConfig); err != nil { - return fmt.Errorf("error writing config: %v", err) - } - - os.Stdout.WriteString("Using config:\n") - if _, err = cfg.WriteTo(os.Stdout); err != nil { - log.Warningf("Failed to output config to STDOUT: %v", err) - } - - return nil -} - -func loadConfig(path string) (*toml.Tree, error) { - _, err := os.Stat(path) - if err == nil { - return toml.LoadFile(path) - } else if os.IsNotExist(err) { - return toml.TreeFromMap(nil) - } - return nil, err -} - -// installContainerToolkitCLI installs the nvidia-ctk CLI executable and wrapper. -func installContainerToolkitCLI(toolkitDir string) (string, error) { - e := executable{ - source: "/usr/bin/nvidia-ctk", - target: executableTarget{ - dotfileName: "nvidia-ctk.real", - wrapperName: "nvidia-ctk", - }, - } - - return e.install(toolkitDir) -} - -// installContainerCDIHookCLI installs the nvidia-cdi-hook CLI executable and wrapper. -func installContainerCDIHookCLI(toolkitDir string) (string, error) { - e := executable{ - source: "/usr/bin/nvidia-cdi-hook", - target: executableTarget{ - dotfileName: "nvidia-cdi-hook.real", - wrapperName: "nvidia-cdi-hook", - }, - } - - return e.install(toolkitDir) -} - -// installContainerCLI sets up the NVIDIA container CLI executable, copying the executable -// and implementing the required wrapper -func installContainerCLI(toolkitRoot string) (string, error) { - log.Infof("Installing NVIDIA container CLI from '%v'", nvidiaContainerCliSource) - - env := map[string]string{ - "LD_LIBRARY_PATH": toolkitRoot, - } - - e := executable{ - source: nvidiaContainerCliSource, - target: executableTarget{ - dotfileName: "nvidia-container-cli.real", - wrapperName: "nvidia-container-cli", - }, - env: env, - } - - installedPath, err := e.install(toolkitRoot) - if err != nil { - return "", fmt.Errorf("error installing NVIDIA container CLI: %v", err) - } - return installedPath, nil -} - -// installRuntimeHook sets up the NVIDIA runtime hook, copying the executable -// and implementing the required wrapper -func installRuntimeHook(toolkitRoot string, configFilePath string) (string, error) { - log.Infof("Installing NVIDIA container runtime hook from '%v'", nvidiaContainerRuntimeHookSource) - - argLines := []string{ - fmt.Sprintf("-config \"%s\"", configFilePath), - } - - e := executable{ - source: nvidiaContainerRuntimeHookSource, - target: executableTarget{ - dotfileName: "nvidia-container-runtime-hook.real", - wrapperName: "nvidia-container-runtime-hook", - }, - argLines: argLines, - } - - installedPath, err := e.install(toolkitRoot) - if err != nil { - return "", fmt.Errorf("error installing NVIDIA container runtime hook: %v", err) - } - - err = installSymlink(toolkitRoot, "nvidia-container-toolkit", installedPath) - if err != nil { - return "", fmt.Errorf("error installing symlink to NVIDIA container runtime hook: %v", err) - } - - return installedPath, nil -} - -// installSymlink creates a symlink in the toolkitDirectory that points to the specified target. -// Note: The target is assumed to be local to the toolkit directory -func installSymlink(toolkitRoot string, link string, target string) error { - symlinkPath := filepath.Join(toolkitRoot, link) - targetPath := filepath.Base(target) - log.Infof("Creating symlink '%v' -> '%v'", symlinkPath, targetPath) - - err := os.Symlink(targetPath, symlinkPath) - if err != nil { - return fmt.Errorf("error creating symlink '%v' => '%v': %v", symlinkPath, targetPath, err) - } - return nil -} - -// installFileToFolder copies a source file to a destination folder. -// The path of the input file is ignored. -// e.g. installFileToFolder("/some/path/file.txt", "/output/path") -// will result in a file "/output/path/file.txt" being generated -func installFileToFolder(destFolder string, src string) (string, error) { - name := filepath.Base(src) - return installFileToFolderWithName(destFolder, name, src) -} - -// cp src destFolder/name -func installFileToFolderWithName(destFolder string, name, src string) (string, error) { - dest := filepath.Join(destFolder, name) - err := installFile(dest, src) - if err != nil { - return "", fmt.Errorf("error copying '%v' to '%v': %v", src, dest, err) - } - return dest, nil -} - -// installFile copies a file from src to dest and maintains -// file modes -func installFile(dest string, src string) error { - log.Infof("Installing '%v' to '%v'", src, dest) - - source, err := os.Open(src) - if err != nil { - return fmt.Errorf("error opening source: %v", err) - } - defer source.Close() - - destination, err := os.Create(dest) - if err != nil { - return fmt.Errorf("error creating destination: %v", err) - } - defer destination.Close() - - _, err = io.Copy(destination, source) - if err != nil { - return fmt.Errorf("error copying file: %v", err) - } - - err = applyModeFromSource(dest, src) - if err != nil { - return fmt.Errorf("error setting destination file mode: %v", err) - } - return nil -} - -// applyModeFromSource sets the file mode for a destination file -// to match that of a specified source file -func applyModeFromSource(dest string, src string) error { - sourceInfo, err := os.Stat(src) - if err != nil { - return fmt.Errorf("error getting file info for '%v': %v", src, err) - } - err = os.Chmod(dest, sourceInfo.Mode()) - if err != nil { - return fmt.Errorf("error setting mode for '%v': %v", dest, err) - } - return nil -} - -// findLibrary searches a set of candidate libraries in the specified root for -// a given library name -func findLibrary(root string, libName string) (string, error) { - log.Infof("Finding library %v (root=%v)", libName, root) - - candidateDirs := []string{ - "/usr/lib64", - "/usr/lib/x86_64-linux-gnu", - "/usr/lib/aarch64-linux-gnu", - } - - for _, d := range candidateDirs { - l := filepath.Join(root, d, libName) - log.Infof("Checking library candidate '%v'", l) - - libraryCandidate, err := resolveLink(l) - if err != nil { - log.Infof("Skipping library candidate '%v': %v", l, err) - continue - } - - return libraryCandidate, nil - } - - return "", fmt.Errorf("error locating library '%v'", libName) -} - -// resolveLink finds the target of a symlink or the file itself in the -// case of a regular file. -// This is equivalent to running `readlink -f ${l}` -func resolveLink(l string) (string, error) { - resolved, err := filepath.EvalSymlinks(l) - if err != nil { - return "", fmt.Errorf("error resolving link '%v': %v", l, err) - } - if l != resolved { - log.Infof("Resolved link: '%v' => '%v'", l, resolved) - } - return resolved, nil -} - -func createDirectories(dir ...string) error { - for _, d := range dir { - log.Infof("Creating directory '%v'", d) - err := os.MkdirAll(d, 0755) - if err != nil { - return fmt.Errorf("error creating directory: %v", err) - } - } - return nil -} - -func createDeviceNodes(opts *options) error { - modes := opts.createDeviceNodes.Value() - if len(modes) == 0 { - return nil - } - - devices, err := nvdevices.New( - nvdevices.WithDevRoot(opts.DevRootCtrPath), - ) - if err != nil { - return fmt.Errorf("failed to create library: %v", err) - } - - for _, mode := range modes { - log.Infof("Creating %v device nodes at %v", mode, opts.DevRootCtrPath) - if mode != "control" { - log.Warningf("Unrecognised device mode: %v", mode) - continue - } - if err := devices.CreateNVIDIAControlDevices(); err != nil { - return fmt.Errorf("failed to create control device nodes: %v", err) - } - } - return nil -} - -// generateCDISpec generates a CDI spec for use in management containers -func generateCDISpec(opts *options, nvidiaCDIHookPath string) error { - if !opts.cdiEnabled { - return nil - } - log.Info("Generating CDI spec for management containers") - cdilib, err := nvcdi.New( - nvcdi.WithMode(nvcdi.ModeManagement), - nvcdi.WithDriverRoot(opts.DriverRootCtrPath), - nvcdi.WithDevRoot(opts.DevRootCtrPath), - nvcdi.WithNVIDIACDIHookPath(nvidiaCDIHookPath), - nvcdi.WithVendor(opts.cdiVendor), - nvcdi.WithClass(opts.cdiClass), - ) - if err != nil { - return fmt.Errorf("failed to create CDI library for management containers: %v", err) - } - - spec, err := cdilib.GetSpec() - if err != nil { - return fmt.Errorf("failed to genereate CDI spec for management containers: %v", err) - } - - transformer := transformroot.NewDriverTransformer( - transformroot.WithDriverRoot(opts.DriverRootCtrPath), - transformroot.WithTargetDriverRoot(opts.DriverRoot), - transformroot.WithDevRoot(opts.DevRootCtrPath), - transformroot.WithTargetDevRoot(opts.DevRoot), - ) - if err := transformer.Transform(spec.Raw()); err != nil { - return fmt.Errorf("failed to transform driver root in CDI spec: %v", err) - } - - name, err := cdi.GenerateNameForSpec(spec.Raw()) - if err != nil { - return fmt.Errorf("failed to generate CDI name for management containers: %v", err) - } - err = spec.Save(filepath.Join(opts.cdiOutputDir, name)) - if err != nil { - return fmt.Errorf("failed to save CDI spec for management containers: %v", err) - } - - return nil -} diff --git a/vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/device/device.go b/vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/device/device.go index 5b21fc13d..f00d1ac65 100644 --- a/vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/device/device.go +++ b/vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/device/device.go @@ -32,6 +32,7 @@ type Device interface { GetMigDevices() ([]MigDevice, error) GetMigProfiles() ([]MigProfile, error) GetPCIBusID() (string, error) + IsFabricAttached() (bool, error) IsMigCapable() (bool, error) IsMigEnabled() (bool, error) VisitMigDevices(func(j int, m MigDevice) error) error @@ -85,9 +86,13 @@ func (d *device) GetArchitectureAsString() (string, error) { case nvml.DEVICE_ARCH_AMPERE: return "Ampere", nil case nvml.DEVICE_ARCH_ADA: - return "Ada", nil + return "Ada Lovelace", nil case nvml.DEVICE_ARCH_HOPPER: return "Hopper", nil + case nvml.DEVICE_ARCH_BLACKWELL: + return "Blackwell", nil + case nvml.DEVICE_ARCH_T23X: + return "Orin", nil case nvml.DEVICE_ARCH_UNKNOWN: return "Unknown", nil } @@ -124,7 +129,7 @@ func (d *device) GetBrandAsString() (string, error) { case nvml.BRAND_NVIDIA_VWS: return "NvidiaVWS", nil // Deprecated in favor of nvml.BRAND_NVIDIA_CLOUD_GAMING - //case nvml.BRAND_NVIDIA_VGAMING: + // case nvml.BRAND_NVIDIA_VGAMING: // return "VGaming", nil case nvml.BRAND_NVIDIA_CLOUD_GAMING: return "NvidiaCloudGaming", nil @@ -208,6 +213,53 @@ func (d *device) IsMigEnabled() (bool, error) { return (mode == nvml.DEVICE_MIG_ENABLE), nil } +// IsFabricAttached checks if a device is attached to a GPU fabric. +func (d *device) IsFabricAttached() (bool, error) { + if d.lib.hasSymbol("nvmlDeviceGetGpuFabricInfo") { + info, ret := d.GetGpuFabricInfo() + if ret == nvml.ERROR_NOT_SUPPORTED { + return false, nil + } + if ret != nvml.SUCCESS { + return false, fmt.Errorf("error getting GPU Fabric Info: %v", ret) + } + if info.State != nvml.GPU_FABRIC_STATE_COMPLETED { + return false, nil + } + if info.ClusterUuid == [16]uint8{} { + return false, nil + } + if nvml.Return(info.Status) != nvml.SUCCESS { + return false, nil + } + + return true, nil + } + + if d.lib.hasSymbol("nvmlDeviceGetGpuFabricInfoV") { + info, ret := d.GetGpuFabricInfoV().V2() + if ret == nvml.ERROR_NOT_SUPPORTED { + return false, nil + } + if ret != nvml.SUCCESS { + return false, fmt.Errorf("error getting GPU Fabric Info: %v", ret) + } + if info.State != nvml.GPU_FABRIC_STATE_COMPLETED { + return false, nil + } + if info.ClusterUuid == [16]uint8{} { + return false, nil + } + if nvml.Return(info.Status) != nvml.SUCCESS { + return false, nil + } + + return true, nil + } + + return false, nil +} + // VisitMigDevices walks a top-level device and invokes a callback function for each MIG device configured on it. func (d *device) VisitMigDevices(visit func(int, MigDevice) error) error { capable, err := d.IsMigCapable() diff --git a/vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/device/mig_device.go b/vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/device/mig_device.go index 7145a06bc..cf485a4b4 100644 --- a/vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/device/mig_device.go +++ b/vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/device/mig_device.go @@ -63,7 +63,7 @@ func (m *migdevice) GetProfile() (MigProfile, error) { return m.profile, nil } - parent, ret := m.Device.GetDeviceHandleFromMigDeviceHandle() + parent, ret := m.GetDeviceHandleFromMigDeviceHandle() if ret != nvml.SUCCESS { return nil, fmt.Errorf("error getting parent device handle: %v", ret) } @@ -73,17 +73,17 @@ func (m *migdevice) GetProfile() (MigProfile, error) { return nil, fmt.Errorf("error getting parent memory info: %v", ret) } - attributes, ret := m.Device.GetAttributes() + attributes, ret := m.GetAttributes() if ret != nvml.SUCCESS { return nil, fmt.Errorf("error getting MIG device attributes: %v", ret) } - giID, ret := m.Device.GetGpuInstanceId() + giID, ret := m.GetGpuInstanceId() if ret != nvml.SUCCESS { return nil, fmt.Errorf("error getting MIG device GPU Instance ID: %v", ret) } - ciID, ret := m.Device.GetComputeInstanceId() + ciID, ret := m.GetComputeInstanceId() if ret != nvml.SUCCESS { return nil, fmt.Errorf("error getting MIG device Compute Instance ID: %v", ret) } diff --git a/vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/info/api.go b/vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/info/api.go index 1c62d636e..bcc9cb69c 100644 --- a/vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/info/api.go +++ b/vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/info/api.go @@ -30,12 +30,14 @@ type PlatformResolver interface { // PropertyExtractor provides a set of functions to query capabilities of the // system. // -//go:generate moq -rm -out property-extractor_mock.go . PropertyExtractor +//go:generate moq -rm -fmt=goimports -out property-extractor_mock.go . PropertyExtractor type PropertyExtractor interface { HasDXCore() (bool, string) HasNvml() (bool, string) HasTegraFiles() (bool, string) // Deprecated: Use HasTegraFiles instead. IsTegraSystem() (bool, string) + // Deprecated: Use HasOnlyIntegratedGPUs UsesOnlyNVGPUModule() (bool, string) + HasOnlyIntegratedGPUs() (bool, string) } diff --git a/vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/info/property-extractor.go b/vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/info/property-extractor.go index 5d5d97cd2..202047133 100644 --- a/vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/info/property-extractor.go +++ b/vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/info/property-extractor.go @@ -90,16 +90,24 @@ func (i *propertyExtractor) HasTegraFiles() (bool, string) { } // UsesOnlyNVGPUModule checks whether the only the nvgpu module is used. -// This kernel module is used on Tegra-based systems when using the iGPU. -// Since some of these systems also support NVML, we use the device name -// reported by NVML to determine whether the system is an iGPU system. // -// Devices that use the nvgpu module have their device names as: +// Deprecated: UsesOnlyNVGPUModule is deprecated, use HasOnlyIntegratedGPUs instead. +func (i *propertyExtractor) UsesOnlyNVGPUModule() (uses bool, reason string) { + return i.HasOnlyIntegratedGPUs() +} + +// HasOnlyIntegratedGPUs checks whether all GPUs are iGPUs that use NVML. +// +// As of Orin-based systems iGPUs also support limited NVML queries. +// In the absence of a robust API, we rely on heuristics to make this decision. +// +// The following device names are checked: // // GPU 0: Orin (nvgpu) (UUID: 54d0709b-558d-5a59-9c65-0c5fc14a21a4) +// GPU 0: NVIDIA Thor (UUID: 54d0709b-558d-5a59-9c65-0c5fc14a21a4) // -// This function returns true if ALL devices use the nvgpu module. -func (i *propertyExtractor) UsesOnlyNVGPUModule() (uses bool, reason string) { +// This function returns true if ALL devices are detected as iGPUs. +func (i *propertyExtractor) HasOnlyIntegratedGPUs() (uses bool, reason string) { // We ensure that this function never panics defer func() { if err := recover(); err != nil { @@ -135,9 +143,19 @@ func (i *propertyExtractor) UsesOnlyNVGPUModule() (uses bool, reason string) { } for _, name := range names { - if !strings.Contains(name, "(nvgpu)") { + if !isIntegratedGPUName(name) { return false, fmt.Sprintf("device %q does not use nvgpu module", name) } } return true, "all devices use nvgpu module" } + +func isIntegratedGPUName(name string) bool { + if strings.Contains(name, "(nvgpu)") { + return true + } + if strings.Contains(name, "NVIDIA Thor") { + return true + } + return false +} diff --git a/vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/info/property-extractor_mock.go b/vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/info/property-extractor_mock.go index f2b057e6c..bd7d41353 100644 --- a/vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/info/property-extractor_mock.go +++ b/vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/info/property-extractor_mock.go @@ -23,6 +23,9 @@ var _ PropertyExtractor = &PropertyExtractorMock{} // HasNvmlFunc: func() (bool, string) { // panic("mock out the HasNvml method") // }, +// HasOnlyIntegratedGPUsFunc: func() (bool, string) { +// panic("mock out the HasOnlyIntegratedGPUs method") +// }, // HasTegraFilesFunc: func() (bool, string) { // panic("mock out the HasTegraFiles method") // }, @@ -45,6 +48,9 @@ type PropertyExtractorMock struct { // HasNvmlFunc mocks the HasNvml method. HasNvmlFunc func() (bool, string) + // HasOnlyIntegratedGPUsFunc mocks the HasOnlyIntegratedGPUs method. + HasOnlyIntegratedGPUsFunc func() (bool, string) + // HasTegraFilesFunc mocks the HasTegraFiles method. HasTegraFilesFunc func() (bool, string) @@ -62,6 +68,9 @@ type PropertyExtractorMock struct { // HasNvml holds details about calls to the HasNvml method. HasNvml []struct { } + // HasOnlyIntegratedGPUs holds details about calls to the HasOnlyIntegratedGPUs method. + HasOnlyIntegratedGPUs []struct { + } // HasTegraFiles holds details about calls to the HasTegraFiles method. HasTegraFiles []struct { } @@ -72,11 +81,12 @@ type PropertyExtractorMock struct { UsesOnlyNVGPUModule []struct { } } - lockHasDXCore sync.RWMutex - lockHasNvml sync.RWMutex - lockHasTegraFiles sync.RWMutex - lockIsTegraSystem sync.RWMutex - lockUsesOnlyNVGPUModule sync.RWMutex + lockHasDXCore sync.RWMutex + lockHasNvml sync.RWMutex + lockHasOnlyIntegratedGPUs sync.RWMutex + lockHasTegraFiles sync.RWMutex + lockIsTegraSystem sync.RWMutex + lockUsesOnlyNVGPUModule sync.RWMutex } // HasDXCore calls HasDXCoreFunc. @@ -133,6 +143,33 @@ func (mock *PropertyExtractorMock) HasNvmlCalls() []struct { return calls } +// HasOnlyIntegratedGPUs calls HasOnlyIntegratedGPUsFunc. +func (mock *PropertyExtractorMock) HasOnlyIntegratedGPUs() (bool, string) { + if mock.HasOnlyIntegratedGPUsFunc == nil { + panic("PropertyExtractorMock.HasOnlyIntegratedGPUsFunc: method is nil but PropertyExtractor.HasOnlyIntegratedGPUs was just called") + } + callInfo := struct { + }{} + mock.lockHasOnlyIntegratedGPUs.Lock() + mock.calls.HasOnlyIntegratedGPUs = append(mock.calls.HasOnlyIntegratedGPUs, callInfo) + mock.lockHasOnlyIntegratedGPUs.Unlock() + return mock.HasOnlyIntegratedGPUsFunc() +} + +// HasOnlyIntegratedGPUsCalls gets all the calls that were made to HasOnlyIntegratedGPUs. +// Check the length with: +// +// len(mockedPropertyExtractor.HasOnlyIntegratedGPUsCalls()) +func (mock *PropertyExtractorMock) HasOnlyIntegratedGPUsCalls() []struct { +} { + var calls []struct { + } + mock.lockHasOnlyIntegratedGPUs.RLock() + calls = mock.calls.HasOnlyIntegratedGPUs + mock.lockHasOnlyIntegratedGPUs.RUnlock() + return calls +} + // HasTegraFiles calls HasTegraFilesFunc. func (mock *PropertyExtractorMock) HasTegraFiles() (bool, string) { if mock.HasTegraFilesFunc == nil { diff --git a/vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/info/resolver.go b/vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/info/resolver.go index 1aeb04c0a..0454d8a6b 100644 --- a/vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/info/resolver.go +++ b/vendor/github.com/NVIDIA/go-nvlib/pkg/nvlib/info/resolver.go @@ -48,13 +48,13 @@ func (p platformResolver) ResolvePlatform() Platform { hasNVML, reason := p.propertyExtractor.HasNvml() p.logger.Debugf("Is NVML-based system? %v: %v", hasNVML, reason) - usesOnlyNVGPUModule, reason := p.propertyExtractor.UsesOnlyNVGPUModule() - p.logger.Debugf("Uses nvgpu kernel module? %v: %v", usesOnlyNVGPUModule, reason) + hasOnlyIntegratedGPUs, reason := p.propertyExtractor.HasOnlyIntegratedGPUs() + p.logger.Debugf("Has only integrated GPUs? %v: %v", hasOnlyIntegratedGPUs, reason) switch { case hasDXCore: return PlatformWSL - case (hasTegraFiles && !hasNVML), usesOnlyNVGPUModule: + case (hasTegraFiles && !hasNVML), hasOnlyIntegratedGPUs: return PlatformTegra case hasNVML: return PlatformNVML diff --git a/vendor/github.com/NVIDIA/go-nvlib/pkg/nvpci/mmio/mmio.go b/vendor/github.com/NVIDIA/go-nvlib/pkg/nvpci/mmio/mmio.go index 88dd7ddf5..7162101e1 100644 --- a/vendor/github.com/NVIDIA/go-nvlib/pkg/nvpci/mmio/mmio.go +++ b/vendor/github.com/NVIDIA/go-nvlib/pkg/nvpci/mmio/mmio.go @@ -107,7 +107,7 @@ func (m *mmio) BigEndian() Mmio { } func (m *mmio) Close() error { - err := syscall.Munmap(*m.Bytes.Raw()) + err := syscall.Munmap(*m.Raw()) if err != nil { return fmt.Errorf("failed to munmap file: %v", err) } @@ -117,7 +117,7 @@ func (m *mmio) Close() error { func (m *mmio) Sync() error { _, _, errno := syscall.Syscall( syscall.SYS_MSYNC, - uintptr(unsafe.Pointer(&(*m.Bytes.Raw())[0])), + uintptr(unsafe.Pointer(&(*m.Raw())[0])), uintptr(m.Len()), uintptr(syscall.MS_SYNC|syscall.MS_INVALIDATE)) if errno != 0 { diff --git a/vendor/github.com/NVIDIA/go-nvlib/pkg/nvpci/mmio/mock.go b/vendor/github.com/NVIDIA/go-nvlib/pkg/nvpci/mmio/mock.go index da3074c17..c10192e74 100644 --- a/vendor/github.com/NVIDIA/go-nvlib/pkg/nvpci/mmio/mock.go +++ b/vendor/github.com/NVIDIA/go-nvlib/pkg/nvpci/mmio/mock.go @@ -70,8 +70,8 @@ func (m *mockMmio) Sync() error { if !m.rw { return fmt.Errorf("opened read-only") } - for i := range *m.Bytes.Raw() { - (*m.source)[m.offset+i] = (*m.Bytes.Raw())[i] + for i := range *m.Raw() { + (*m.source)[m.offset+i] = (*m.Raw())[i] } return nil } diff --git a/vendor/github.com/NVIDIA/go-nvlib/pkg/nvpci/mock.go b/vendor/github.com/NVIDIA/go-nvlib/pkg/nvpci/mock.go index 9b3d6e2aa..f7b4bb186 100644 --- a/vendor/github.com/NVIDIA/go-nvlib/pkg/nvpci/mock.go +++ b/vendor/github.com/NVIDIA/go-nvlib/pkg/nvpci/mock.go @@ -98,7 +98,7 @@ func (m *MockNvpci) AddMockA100(address string, numaNode int, sriov *SriovInfo) if err != nil { return err } - _, err = numa.WriteString(fmt.Sprintf("%v", numaNode)) + _, err = fmt.Fprintf(numa, "%v", numaNode) if err != nil { return err } @@ -137,7 +137,7 @@ func createNVIDIAgpuFiles(deviceDir string) error { if err != nil { return err } - _, err = vendor.WriteString(fmt.Sprintf("0x%x", PCINvidiaVendorID)) + _, err = fmt.Fprintf(vendor, "0x%x", PCINvidiaVendorID) if err != nil { return err } @@ -146,7 +146,7 @@ func createNVIDIAgpuFiles(deviceDir string) error { if err != nil { return err } - _, err = class.WriteString(fmt.Sprintf("0x%x", PCI3dControllerClass)) + _, err = fmt.Fprintf(class, "0x%x", PCI3dControllerClass) if err != nil { return err } @@ -188,7 +188,7 @@ func createNVIDIAgpuFiles(deviceDir string) error { if err != nil { return err } - _, err = resource.WriteString(fmt.Sprintf("0x%x 0x%x 0x%x", bar0[0], bar0[1], bar0[2])) + _, err = fmt.Fprintf(resource, "0x%x 0x%x 0x%x", bar0[0], bar0[1], bar0[2]) if err != nil { return err } @@ -246,7 +246,7 @@ func (m *MockNvpci) createVf(pfAddress string, id, iommu_group, numaNode int) er if err != nil { return err } - _, err = numa.WriteString(fmt.Sprintf("%v", numaNode)) + _, err = fmt.Fprintf(numa, "%v", numaNode) if err != nil { return err } diff --git a/vendor/github.com/NVIDIA/go-nvlib/pkg/nvpci/nvpci.go b/vendor/github.com/NVIDIA/go-nvlib/pkg/nvpci/nvpci.go index 6ff197b15..5caf03435 100644 --- a/vendor/github.com/NVIDIA/go-nvlib/pkg/nvpci/nvpci.go +++ b/vendor/github.com/NVIDIA/go-nvlib/pkg/nvpci/nvpci.go @@ -280,27 +280,14 @@ func (p *nvpci) getGPUByPciBusID(address string, cache map[string]*NvidiaPCIDevi return nil, fmt.Errorf("unable to convert device string to uint16: %v", deviceStr) } - driver, err := filepath.EvalSymlinks(path.Join(devicePath, "driver")) - if err == nil { - driver = filepath.Base(driver) - } else if os.IsNotExist(err) { - driver = "" - } else { - return nil, fmt.Errorf("unable to detect driver for %s: %v", address, err) + driver, err := getDriver(devicePath) + if err != nil { + return nil, fmt.Errorf("unable to detect driver for %s: %w", address, err) } - var iommuGroup int64 - iommu, err := filepath.EvalSymlinks(path.Join(devicePath, "iommu_group")) - if err == nil { - iommuGroupStr := strings.TrimSpace(filepath.Base(iommu)) - iommuGroup, err = strconv.ParseInt(iommuGroupStr, 0, 64) - if err != nil { - return nil, fmt.Errorf("unable to convert iommu_group string to int64: %v", iommuGroupStr) - } - } else if os.IsNotExist(err) { - iommuGroup = -1 - } else { - return nil, fmt.Errorf("unable to detect iommu_group for %s: %v", address, err) + iommuGroup, err := getIOMMUGroup(devicePath) + if err != nil { + return nil, fmt.Errorf("unable to detect IOMMU group for %s: %w", address, err) } numa, err := os.ReadFile(path.Join(devicePath, "numa_node")) @@ -359,7 +346,8 @@ func (p *nvpci) getGPUByPciBusID(address string, cache map[string]*NvidiaPCIDevi var sriovInfo SriovInfo // Device is a virtual function (VF) if "physfn" symlink exists. physFnAddress, err := filepath.EvalSymlinks(path.Join(devicePath, "physfn")) - if err == nil { + switch { + case err == nil: physFn, err := p.getGPUByPciBusID(filepath.Base(physFnAddress), cache) if err != nil { return nil, fmt.Errorf("unable to detect physfn for %s: %v", address, err) @@ -369,12 +357,12 @@ func (p *nvpci) getGPUByPciBusID(address string, cache map[string]*NvidiaPCIDevi PhysicalFunction: physFn, }, } - } else if os.IsNotExist(err) { + case os.IsNotExist(err): sriovInfo, err = p.getSriovInfoForPhysicalFunction(devicePath) if err != nil { return nil, fmt.Errorf("unable to read SRIOV physical function details for %s: %v", devicePath, err) } - } else { + default: return nil, fmt.Errorf("unable to read %s: %v", path.Join(devicePath, "physfn"), err) } @@ -521,3 +509,31 @@ func (p *nvpci) getSriovInfoForPhysicalFunction(devicePath string) (sriovInfo Sr } return sriovInfo, nil } + +func getDriver(devicePath string) (string, error) { + driver, err := filepath.EvalSymlinks(path.Join(devicePath, "driver")) + switch { + case os.IsNotExist(err): + return "", nil + case err == nil: + return filepath.Base(driver), nil + } + return "", err +} + +func getIOMMUGroup(devicePath string) (int64, error) { + var iommuGroup int64 + iommu, err := filepath.EvalSymlinks(path.Join(devicePath, "iommu_group")) + switch { + case os.IsNotExist(err): + return -1, nil + case err == nil: + iommuGroupStr := strings.TrimSpace(filepath.Base(iommu)) + iommuGroup, err = strconv.ParseInt(iommuGroupStr, 0, 64) + if err != nil { + return 0, fmt.Errorf("unable to convert iommu_group string to int64: %v", iommuGroupStr) + } + return iommuGroup, nil + } + return 0, err +} diff --git a/vendor/github.com/NVIDIA/go-nvlib/pkg/nvpci/resources.go b/vendor/github.com/NVIDIA/go-nvlib/pkg/nvpci/resources.go index b3b7d3155..3d799aece 100644 --- a/vendor/github.com/NVIDIA/go-nvlib/pkg/nvpci/resources.go +++ b/vendor/github.com/NVIDIA/go-nvlib/pkg/nvpci/resources.go @@ -112,7 +112,7 @@ func (mrs MemoryResources) GetTotalAddressableMemory(roundUp bool) (uint64, uint if key >= pciIOVNumBAR || numBAR == pciIOVNumBAR { break } - numBAR = numBAR + 1 + numBAR++ region := mrs[key] @@ -123,10 +123,10 @@ func (mrs MemoryResources) GetTotalAddressableMemory(roundUp bool) (uint64, uint memSize := (region.End - region.Start) + 1 if memType32bit { - memSize32bit = memSize32bit + uint64(memSize) + memSize32bit += uint64(memSize) } if memType64bit { - memSize64bit = memSize64bit + uint64(memSize) + memSize64bit += uint64(memSize) } } diff --git a/vendor/github.com/NVIDIA/go-nvlib/pkg/pciids/default_pci.ids b/vendor/github.com/NVIDIA/go-nvlib/pkg/pciids/default_pci.ids index f16867890..16c25f2e8 100644 --- a/vendor/github.com/NVIDIA/go-nvlib/pkg/pciids/default_pci.ids +++ b/vendor/github.com/NVIDIA/go-nvlib/pkg/pciids/default_pci.ids @@ -1,8 +1,8 @@ # # List of PCI ID's # -# Version: 2024.06.23 -# Date: 2024-06-23 03:15:02 +# Version: 2025.03.04 +# Date: 2025-03-04 03:15:02 # # Maintained by Albert Pool, Martin Mares, and other volunteers from # the PCI ID Project at https://pci-ids.ucw.cz/. @@ -44,15 +44,24 @@ 7a0f DMA (Direct Memory Access) Controller # Found on some boards with two sockets 7a10 Hyper Transport Bridge Controller + 7a13 7A2000 PCH Gigabit Ethernet Controller 7a14 EHCI USB Controller 7a15 Vivante GPU (Graphics Processing Unit) + 7a18 SATA 3 AHCI Controller 7a19 PCI-to-PCI Bridge + 7a1b SPI Controller 7a24 OHCI USB Controller # Found on 7A2000 PCH 7a25 LG100 GPU + 7a27 7A2000 PCH I2S Controller 7a29 PCI-to-PCI Bridge + 7a34 xHCI USB Controller # Found on 7A2000 PCH 7a36 Display Controller + 7a39 PCIe x1 Root Port + 7a49 PCIe x4 Root Port + 7a59 PCIe x8 Root Port + 7a69 PCIe x16 Root Port 0018 Fn-Link Technology Limited 6252 6252CPUB 802.11ax PCIe Wireless Network Adapter 001c PEAK-System Technik GmbH @@ -138,6 +147,11 @@ 1702 IS64PH ISDN Adapter 1703 ISDN Adapter (PCI Bus, DV, W) 1704 ISDN Adapter (PCI Bus, D, C) +0709 LJMicro Co., Ltd + 0101 GP101 + 0102 GP102 + 0201 GP201 + 0202 GP202 0721 Sapphire, Inc. 0731 Jingjia Microelectronics Co Ltd 7200 JM7200 Series GPU @@ -183,6 +197,7 @@ 6666 MediaPress (MPEG2 encoder board) 07d1 D-Link System Inc 0824 T1042 [Freescale] +0911 Hantick 0925 VIA Technologies, Inc. (Wrong ID) 0a89 BREA Technologies Inc 0b0b Rhino Equipment Corp. @@ -1099,8 +1114,13 @@ 1000 04db 3808N iMR ROMB 1000 04dc 3808N iMR ROMB 1000 04dd 3808N iMR ROMB +# String pulled from Broadcom storcli "Product Name" + 1000 40d5 MegaRAID 9540-8i +# String pulled from Broadcom storcli "Product Name" + 1000 40d6 MegaRAID 9520-8i 1000 40d8 MegaRAID 9524-8i 1000 40e0 MegaRAID 9540-2M2 + 1028 1a3d BOSS-MR1 1028 2172 PERC H355 Adapter 1028 2173 PERC H355 Front 1028 2174 PERC H350 Mini @@ -1201,6 +1221,7 @@ 9100 INI-9100/9100W SCSI Host # nee ATI Technologies, Inc. 1002 Advanced Micro Devices, Inc. [AMD/ATI] + 1114 Krackan [Radeon 840M / 860M Graphics] 1304 Kaveri 1305 Kaveri 1306 Kaveri @@ -1228,6 +1249,7 @@ 131b Kaveri [Radeon R4 Graphics] 131c Kaveri [Radeon R7 Graphics] 131d Kaveri [Radeon R6 Graphics] + 13c0 Granite Ridge [Radeon Graphics] 13e9 Ariel/Navi10Lite 13f9 Oberon/Navi12Lite 13fe Cyan Skillfish [BC-250] @@ -1237,12 +1259,14 @@ 1478 Navi 10 XL Upstream Port of PCI Express Switch 1479 Navi 10 XL Downstream Port of PCI Express Switch 1506 Mendocino + 150e Strix [Radeon 880M / 890M] 154c Kryptos [Radeon RX 350] 1462 7c28 MS-7C28 Motherboard 154e Garfield 1551 Arlene 1552 Pooky 1561 Anubis + 1586 Strix Halo [Radeon Graphics / Radeon 8050S Graphics / Radeon 8060S Graphics] 15bf Phoenix1 15c8 Phoenix2 15d8 Picasso/Raven 2 [Radeon Vega Series / Radeon Vega Mobile Series] @@ -3963,10 +3987,11 @@ 1458 231d Radeon RX 5600 XT/REV 2.0 [Windforce 6GB OC] 148c 2398 AXRX 5700 XT 8GBD6-3DHE/OC [PowerColor Red Devil Radeon RX 5700 XT] 1682 5701 RX 5700 XT RAW II + 1849 5102 RX5700 CLD 8GO [ASRock Challenger D RX 5700 OC] 1849 5120 Radeon RX 5600 XT 1da2 e409 Sapphire Technology Limited Navi 10 [Radeon RX 5600 OEM/5600 XT / 5700/5700 XT] 1da2 e410 Sapphire NITRO+ RX 5700 XT - 1da2 e411 Radeon RX 5600 XT + 1da2 e411 Navi 10 [Radeon RX 5600 OEM/5600 XT / 5700/5700 XT]Navi 10 [Radeon RX 5600 OEM/5600 XT / 5700/5700 XT] 7340 Navi 14 [Radeon RX 5500/5500M / Pro 5500M] 7341 Navi 14 [Radeon Pro W5500] 7347 Navi 14 [Radeon Pro W5500M] @@ -3984,6 +4009,7 @@ # Reference 1002 0e3a Radeon RX 6950 XT 1849 5230 Navi 21 [ASRock OC Forumla Radeon RX 6950XT] + 1849 5238 Navi 21 [ASRock Radeon RX 6950 XT Phantom Gaming OC] 1da2 441d Navi 21 [Sapphire Nitro+ Radeon RX 6950 XT] 1eae 6950 Navi 21 [XFX Speedster MERC319 Radeon RX 6950 XT] 73ab Navi 21 Pro-XLA [Radeon Pro W6800X/Radeon Pro W6800X Duo] @@ -4022,6 +4048,8 @@ 73e4 Navi 23 USB 73ef Navi 23 [Radeon RX 6650 XT / 6700S / 6800S] 1458 2405 Navi 23 [Radeon RX 6650 XT] +# This is the refreshed MSI MECH series card equipped with the same Navi 23 GPU as ID 5021 + 1462 5027 RX 6650XT MECH 2X 1849 5236 RX 6650 XT Challenger D OC 73f0 Navi 33 [Radeon RX 7600M XT] 73ff Navi 23 [Radeon RX 6600/6600 XT/6600M] @@ -4041,24 +4069,38 @@ 1da2 e457 PULSE AMD Radeon RX 6500 XT 7446 Navi 31 USB 7448 Navi 31 [Radeon Pro W7900] - 744c Navi 31 [Radeon RX 7900 XT/7900 XTX/7900M] - 1002 0e3b RX 7900 GRE [XFX] + 744a Navi 31 [Radeon Pro W7900 Dual Slot] + 744c Navi 31 [Radeon RX 7900 XT/7900 XTX/7900 GRE/7900M] + 1002 0e3b RX 7900 XTX / RX 7900 GRE [XFX] 1043 0506 TUF Gaming Radeon RX 7900 XTX OC + 148c 2425 HELLHOUND RX 7900 GRE 1849 5304 Radeon RX 7900 XTX 1da2 471e PULSE RX 7900 XTX 1da2 475e PULSE RX 7900 GRE 1da2 e471 NITRO+ RX 7900 XTX Vapor-X 1eae 7901 RX-79XMERCB9 [SPEEDSTER MERC 310 RX 7900 XTX] + 1eae 790a RX-79GMERCBR [XFX RX 7900 GRE] 745e Navi 31 [Radeon Pro W7800] - 7460 7460 Navi32 GL-XL [AMD Radeon PRO V710] + 7460 Navi32 GL-XL [AMD Radeon PRO V710] + 7461 Navi 32 [AMD Radeon PRO V710] 7470 Navi 32 [Radeon PRO W7700] 747e Navi 32 [Radeon RX 7700 XT / 7800 XT] 7480 Navi 33 [Radeon RX 7600/7600 XT/7600M XT/7600S/7700S / PRO W7600] 1849 5313 RX 7600 Challenger OC + 7481 Navi 33 [Radeon Graphics] 7483 Navi 33 [Radeon RX 7600M/7600M XT] + 7487 Navi 33 [Radeon Graphics] 7489 Navi 33 [Radeon Pro W7500] + 748b Navi 33 [Radeon Graphics] + 7499 Navi 33 [Radeon RX 7400/7300/Pro W7400] 74a0 Aqua Vanjaram [Instinct MI300A] 74a1 Aqua Vanjaram [Instinct MI300X] + 74a2 Aqua Vanjaram [Instinct MI308X] + 74a5 Aqua Vanjaram [Instinct MI325X] + 74a9 Aqua Vanjaram [Instinct MI300X HF] + 74b5 Aqua Vanjaram [Instinct MI300X VF] + 74bd Aqua Vanjaram [Instinct MI300X HF] + 7550 Navi 48 [RX 9070/9070 XT] 7833 RS350 Host Bridge 7834 RS350 [Radeon 9100 PRO/XT IGP] 7835 RS350M [Mobility Radeon 9000 IGP] @@ -4330,7 +4372,7 @@ 9840 Kabini HDMI/DP Audio 1043 8623 AM1I-A Motherboard 1849 9840 QC5000-ITX/PH - 9850 Mullins [Radeon R3 Graphics] + 9850 Mullins [Radeon R2/R3 Graphics] 9851 Mullins [Radeon R4/R5 Graphics] 1179 f928 Beema [Radeon R5 Graphics] 9852 Mullins [Radeon R2 Graphics] @@ -4417,7 +4459,6 @@ 99a2 Trinity 2 [Radeon HD 7420G] 99a4 Trinity 2 [Radeon HD 7400G] aa00 R600 HDMI Audio [Radeon HD 2900 GT/PRO/XT] - aa01 RV635 HDMI Audio [Radeon HD 3650/3730/3750] aa08 RV630 HDMI Audio [Radeon HD 2600 PRO/XT / HD 3610] aa10 RV610 HDMI Audio [Radeon HD 2350 PRO / 2400 PRO/XT / HD 3410] 174b aa10 Radeon HD 2400 PRO @@ -4907,6 +4948,8 @@ 1014 04fc PCIe3 x8 12Gb Quad SAS RAID+ Adapter(580A) 04ed Internal Shared Memory (ISM) virtual PCI device 0611 4769 Cryptographic Adapter + 06a7 Spyre Accelerator + 06a8 Spyre Accelerator Virtual Function 3022 QLA3022 Network Adapter 4022 QLA3022 Network Adapter ffff MPIC-2 interrupt controller @@ -4985,11 +5028,43 @@ 1101 K8 [Athlon64/Opteron] Address Map 1102 K8 [Athlon64/Opteron] DRAM Controller 1103 K8 [Athlon64/Opteron] Miscellaneous Control + 1110 Krackan Internal PCIe GPP Bridge 0 to Bus A + 1111 Krackan Internal PCIe GPP Bridge 0 to Bus B + 1112 Krackan Internal PCIe GPP Bridge 0 to Bus C + 1113 Krackan PCIe Dummy Function + 1116 Krackan PCIe Dummy Function + 1117 Krackan PCIe Dummy Function + 1122 Krackan Root Complex + 1123 Krackan IOMMU 1200 Family 10h Processor HyperTransport Configuration 1201 Family 10h Processor Address Map 1202 Family 10h Processor DRAM Controller 1203 Family 10h Processor Miscellaneous Control 1204 Family 10h Processor Link Control + 1248 Krackan Data Fabric; Function 0 + 1249 Krackan Data Fabric; Function 1 + 124a Krackan Data Fabric; Function 2 + 124b Krackan Data Fabric; Function 3 + 124c Krackan Data Fabric; Function 4 + 124d Krackan Data Fabric; Function 5 + 124e Krackan Data Fabric; Function 6 + 124f Krackan Data Fabric; Function 7 + 12b8 Strix Halo Data Fabric; Function 0 + 12b9 Strix Halo Data Fabric; Function 1 + 12ba Strix Halo Data Fabric; Function 2 + 12bb Strix Halo Data Fabric; Function 3 + 12bc Strix Halo Data Fabric; Function 4 + 12bd Strix Halo Data Fabric; Function 5 + 12be Strix Halo Data Fabric; Function 6 + 12bf Strix Halo Data Fabric; Function 7 + 12c0 Turin Data Fabric; Function 0 + 12c1 Turin Data Fabric; Function 1 + 12c2 Turin Data Fabric; Function 2 + 12c3 Turin Data Fabric; Function 3 + 12c4 Turin Data Fabric; Function 4 + 12c5 Turin Data Fabric; Function 5 + 12c6 Turin Data Fabric; Function 6 + 12c7 Turin Data Fabric; Function 7 1300 Family 11h Processor HyperTransport Configuration 1301 Family 11h Processor Address Map 1302 Family 11h Processor DRAM Controller @@ -5113,6 +5188,7 @@ 1480 Starship/Matisse Root Complex 1462 7c37 X570-A PRO motherboard 15d9 1b95 H12SSL-i + 1849 1480 ROME2D32LM3 1481 Starship/Matisse IOMMU 1482 Starship/Matisse PCIe Dummy Host Bridge 1483 Starship/Matisse GPP Bridge @@ -5146,18 +5222,72 @@ 149c Matisse USB 3.0 Host Controller 1462 7c37 X570-A PRO motherboard 149d Vangogh CVIP + 149e Genoa/Bergamo IOMMU + 149f Genoa/Bergamo Dummy Host Bridge + 14a4 Genoa/Bergamo Root Complex + 14a5 Genoa/Bergamo GPP Bridge + 14a6 Genoa/Bergamo RCEC + 14a7 Genoa/Bergamo Internal PCIe GPP Bridge to Bus [D:B] + 14aa Genoa/Bergamo GPP Bridge + 14ab Genoa/Bergamo GPP Bridge + 14ac Genoa/Bergamo Dummy Function + 14ad Genoa/Bergamo Data Fabric; Function 0 + 14ae Genoa/Bergamo Data Fabric; Function 1 + 14af Genoa/Bergamo Data Fabric; Function 2 + 14b0 Genoa/Bergamo Data Fabric; Function 3 + 14b1 Genoa/Bergamo Data Fabric; Function 4 + 14b2 Genoa/Bergamo Data Fabric; Function 5 + 14b3 Genoa/Bergamo Data Fabric; Function 6 + 14b4 Genoa/Bergamo Data Fabric; Function 7 14b5 Family 17h-19h PCIe Root Complex 14b6 Family 17h-19h IOMMU 14b7 Family 17h-19h PCIe Dummy Host Bridge 14b8 Family 17h-19h PCIe GPP Bridge 14b9 Family 17h-19h Internal PCIe GPP Bridge 14ba Family 17h-19h PCIe GPP Bridge + 14c1 Secondary vNTB # Server device 14ca Genoa CCP/PSP 4.0 Device 14cd Family 19h USB4/Thunderbolt PCIe tunnel - 14de Phoenix PCIe Dummy Function + 14d8 Raphael/Granite Ridge Root Complex + 14d9 Raphael/Granite Ridge IOMMU + 14da Raphael/Granite Ridge Dummy Host Bridge + 14db Raphael/Granite Ridge GPP Bridge + 14dc SDXI + 14dd Raphael/Granite Ridge Internal GPP Bridge to Bus [C:A] + 14de Raphael/Granite Ridge PCIe Dummy Function + 14e0 Raphael/Granite Ridge Data Fabric; Function 0 + 14e1 Raphael/Granite Ridge Data Fabric; Function 1 + 14e2 Raphael/Granite Ridge Data Fabric; Function 2 + 14e3 Raphael/Granite Ridge Data Fabric; Function 3 + 14e4 Raphael/Granite Ridge Data Fabric; Function 4 + 14e5 Raphael/Granite Ridge Data Fabric; Function 5 + 14e6 Raphael/Granite Ridge Data Fabric; Function 6 + 14e7 Raphael/Granite Ridge Data Fabric; Function 7 + 14e8 Phoenix Root Complex + 14e9 Phoenix IOMMU + 14ea Phoenix Dummy Host Bridge + 14eb Phoenix Internal GPP Bridge to Bus [C:A] + 14ec Phoenix Dummy Function + 14ed Phoenix GPP Bridge + 14ee Phoenix GPP Bridge 14ef Family 19h USB4/Thunderbolt PCIe tunnel + 14f0 Phoenix Data Fabric; Function 0 + 14f1 Phoenix Data Fabric; Function 1 + 14f2 Phoenix Data Fabric; Function 2 + 14f3 Phoenix Data Fabric; Function 3 + 14f4 Phoenix Data Fabric; Function 4 + 14f5 Phoenix Data Fabric; Function 5 + 14f6 Phoenix Data Fabric; Function 6 + 14f7 Phoenix Data Fabric; Function 7 1502 AMD IPU Device + 1507 Strix/Strix Halo Root Complex + 1508 Strix/Strix Halo IOMMU + 1509 Strix/Strix Halo Dummy Host Bridge + 150a Strix/Strix Halo PCIe USB4 Bridge + 150b Strix/Strix Halo GPP Bridge + 150c Strix/Strix Halo Internal GPP Bridge to Bus [C:A] + 150d Strix/Strix Halo PCIe Dummy Function 1510 Family 14h Processor Root Complex 174b 1001 PURE Fusion Mini 1512 Family 14h Processor Root Port @@ -5177,6 +5307,11 @@ 1537 Kabini/Mullins PSP-Platform Security Processor 1538 Family 16h Processor Function 0 1539 Kabini P2P Bridge for PCIe Ports[4:0] + 153a Turin Root Complex + 153b Turin IOMMU + 153c Turin RCEC + 153d Turin PCIe Dummy Host Bridge + 153e Turin GPP Bridge 1540 Kryptos/Cato/Garfield/Garfield+/Arlene/Pooky HT Configuration 1541 Kryptos/Cato/Garfield/Garfield+/Arlene/Pooky Address Maps 1542 Kryptos/Cato/Garfield/Garfield+/Arlene/Pooky DRAM Configuration @@ -5193,6 +5328,11 @@ 154f Anubis Audio Processor 1550 Garfield+/Arlene/Pooky/Anubis SPLL Configuration 1553 Arlene/Pooky P2P Bridge for PCIE (3:0) + 1554 Turin GPP Bridge + 1555 Turin Internal PCIe GPP Bridge to Bus [D:C] + 1556 Turin PCIe Dummy Function + 1557 Turin USB 3.1 xHCI + 1559 Turin Secondary PCIe Dummy Function 155b Anubis Root Complex 155c Anubis IOMMU 155d Anubis UMI PCIe Dummy Bridge @@ -5201,6 +5341,7 @@ 1566 Family 16h (Models 30h-3fh) Processor Root Complex 1567 Mullins IOMMU 156b Family 16h (Models 30h-3fh) Host Bridge + 156e Turin CCP/ASP 1570 Family 15h (Models 60h-6fh) Processor Function 0 1571 Family 15h (Models 60h-6fh) Processor Function 1 1572 Family 15h (Models 60h-6fh) Processor Function 2 @@ -5239,11 +5380,14 @@ 15b3 Stoney Miscellaneous Configuration 15b4 Stoney PM Configuration 15b5 Stoney NB Performance Monitor + 15b6 Raphael/Granite Ridge USB 3.1 xHCI + 15b7 Raphael/Granite Ridge USB 3.1 xHCI + 15b8 Raphael/Granite Ridge USB 2.0 xHCI 15bc Stoney PCIe [GFX,GPP] Bridge [4:0] 15be Stoney Audio Processor 15c4 Phoenix USB4/Thunderbolt NHI controller #1 15c5 Phoenix USB4/Thunderbolt NHI controller #2 - 15c7 Family 19h (Model 74h) CCP/PSP 3.0 Device + 15c7 Phoenix CCP/PSP 3.0 Device 15d0 Raven/Raven2 Root Complex 103c 8615 Pavilion Laptop 15-cw1xxx 1043 876b PRIME B450M-A Motherboard @@ -5282,7 +5426,7 @@ 15e2 ACP/ACP3X/ACP6x Audio Coprocessor 17aa 5124 ThinkPad E595 ea50 ce19 mCOM10-L1900 - 15e3 Family 17h/19h HD Audio Controller + 15e3 Family 17h/19h/1ah HD Audio Controller 103c 8615 Pavilion Laptop 15-cw1xxx 103c 8b17 ProBook 445 G9/455 G9 1043 86c7 PRIME B450M-A Motherboard @@ -5375,6 +5519,8 @@ 1647 VanGogh PCIe GPP Bridge 1648 VanGogh Internal PCIe GPP Bridge to Bus 1649 Family 19h PSP/CCP + 164a Sensor Fusion Hub + 164b Non-Sensor Fusion Hub 164f Milan IOMMU 1650 Milan Data Fabric; Function 0 1651 Milan Data Fabric; Function 1 @@ -5410,6 +5556,14 @@ 167e Rembrandt Data Fabric: Device 18h; Function 5 167f Rembrandt Data Fabric: Device 18h; Function 6 1680 Rembrandt Data Fabric: Device 18h; Function 7 + 16f8 Strix Data Fabric; Function 0 + 16f9 Strix Data Fabric; Function 1 + 16fa Strix Data Fabric; Function 2 + 16fb Strix Data Fabric; Function 3 + 16fc Strix Data Fabric; Function 4 + 16fd Strix Data Fabric; Function 5 + 16fe Strix Data Fabric; Function 6 + 16ff Strix Data Fabric; Function 7 1700 Family 12h/14h Processor Function 0 1701 Family 12h/14h Processor Function 1 1702 Family 12h/14h Processor Function 2 @@ -5427,6 +5581,8 @@ 1716 Family 12h/14h Processor Function 5 1718 Family 12h/14h Processor Function 6 1719 Family 12h/14h Processor Function 7 + 17e0 Strix/Krackan/Strix Halo CCP/ASP + 17f0 Strix/Krackan/Strix Halo Neural Processing Unit 2000 79C97x [PCnet32 LANCE] 1014 2000 NetFinity 10/100 Fast Ethernet 1022 2000 PCnet - Fast 79C971 @@ -5506,6 +5662,7 @@ 43f5 600 Series Chipset PCIe Switch Downstream Port 43f6 600 Series Chipset SATA Controller 43f7 600 Series Chipset USB 3.2 Controller + 43fd 800 Series Chipset USB 3.x XHCI Controller 57a3 Matisse PCIe GPP Bridge 57a4 Matisse PCIe GPP Bridge 57ad Matisse Switch Upstream @@ -5781,7 +5938,8 @@ 5225 M5225 5229 M5229 5235 M5235 - 5237 M5237 PCI USB Host Controller + 5237 OHCI USB Controller + 5239 EHCI USB Controller 5240 EIDE Controller 5241 PCMCIA Bridge 5242 General Purpose Controller @@ -6704,28 +6862,28 @@ c066 3010S Ultra3 Dual Channel 1045 OPTi Inc. a0f8 82C750 [Vendetta] USB Controller - c101 92C264 + c101 82C264 GUI Accelerator c178 92C178 c556 82X556 [Viper] c557 82C557 [Viper-M] c558 82C558 [Viper-M ISA+IDE] - c567 82C750 [Vendetta], device 0 - c568 82C750 [Vendetta], device 1 + c567 82C750 [Vendetta] Host Bridge + c568 82C750 [Vendetta] ISA Bridge c569 82C579 [Viper XPress+ Chipset] - c621 82C621 [Viper-M/N+] + c621 82C621A PCI IDE Contoller c700 82C700 [FireStar] - c701 82C701 [FireStar Plus] - c814 82C814 [Firebridge 1] + c701 82C700 [FireStar] Host Bridge + c814 82C814 [FireBridge II] Docking Stration Controller c822 82C822 - c824 82C824 - c825 82C825 [Firebridge 2] + c824 82C824 [FireFox] 32-Bit PC Card Controller + c825 82C825 [FireBridge II] Docking Stration Controller c832 82C832 - c861 82C861 OHCI USB Host + c861 82C861/2/3 [FireLink] PCI-USB Host Bridge c881 82C881 [FireLink] 1394 OHCI Link Controller c895 82C895 - c935 EV1935 ECTIVA MachOne PCIAudio - d568 82C825 [Firebridge 2] - d721 IDE [FireStar] + c935 82С935 [MachOne] Integrated PCI Audio Processor + d568 82C700 [FireStar] PCI IDE Controller + d721 82C700 [FireStar] PCI IDE Controller 1046 IPC Corporation, Ltd. 1047 Genoa Systems Corp 1048 Elsa AG @@ -7124,12 +7282,13 @@ 0001 W83769F 0033 W89C33D 802.11 a/b/g BB/MAC 0105 W82C105 + 0628 W83628F/W83629D PCI to ISA Bridge Set 0840 W89C840 1050 0001 W89C840 Ethernet Adapter 1050 0840 W89C840 Ethernet Adapter 0940 W89C940 - 5a5a W89C940F - 6692 W6692 + 5a5a W89C940 Twisted-pair Ether-LAN Controller With PCI Interface [ELANC-PCI] + 6692 W6692 PCI ISDN S/T-Controller 1043 1702 ISDN Adapter (PCI Bus, D, W) 1043 1703 ISDN Adapter (PCI Bus, DV, W) 1043 1707 ISDN Adapter (PCI Bus, DV, W) @@ -7138,6 +7297,7 @@ 144f 1707 ISDN Adapter (PCI Bus, DV, W) 9921 W99200F MPEG-1 Video Encoder 9922 W99200F/W9922PF MPEG-1/2 Video Encoder + 9960 W9960CF Video Codec 9970 W9970CF 1051 Anigma, Inc. 1052 ?Young Micro Systems @@ -7162,6 +7322,7 @@ 1055 Microchip Technology / SMSC 7430 LAN7430 7431 LAN7431 + 1059 01a0 RD10055 M.2 Dual 1GbE-T1 40m 9130 SLC90E66 [Victory66] IDE 9460 SLC90E66 [Victory66] ISA 9462 SLC90E66 [Victory66] USB @@ -8597,6 +8758,7 @@ 1093 72f7 PXIe-6535 1093 72f8 PXIe-6536 1093 72f9 PXIe-6537 + 1093 730a PXIe-5142 1093 7326 PCIe-6509 1093 736c PXIe-4140 1093 738b PXIe-5622 @@ -8666,6 +8828,7 @@ 1093 762e PXIe-5606 1093 7644 PXIe-4841 1093 764a PCIe-8237R-S + 1093 7652 PXIe-4080 1093 7658 PXIe-5162 (4CH) 1093 76ab PXIe-4322 1093 76ad PXIe-4112 @@ -8682,6 +8845,8 @@ 1093 76ce CVS-1459 1093 76d0 PXIe-5160 (2CH) 1093 76d1 PXIe-5160 (4CH) + 1093 76d8 PXIe-4081 + 1093 76d9 PXIe-4082 1093 76dc PXIe-4610 1093 76ec PXIe-2524 1093 76ed PXIe-2525 @@ -8719,6 +8884,8 @@ 1093 7790 PXIe-5170R (4CH) 1093 7791 PXIe-5170R (8CH) 1093 7793 PXIe-5171R (8CH) + 1093 7794 PXIe-5172 (4CH - 325T) + 1093 7795 PXIe-5172 (8CH - 410T) 1093 77a5 PXIe-6345 1093 77a6 PXIe-6355 1093 77a7 PXIe-6365 @@ -8742,18 +8909,44 @@ 1093 7802 PXIe-4302 1093 7803 PXIe-4303 1093 7805 PXIe-4305 + 1093 781e PXIe-4135 + 1093 7820 PXIe-5164 + 1093 783d PXIe-6570 + 1093 7851 PXIe-5172 (8CH - 325T) 1093 786f PXIe-4163 + 1093 7881 PXIe-5163 1093 788e PXIe-4304 + 1093 78d5 PXIe-5413 (1CH) + 1093 78d6 PXIe-5413 (2CH) + 1093 78d7 PXIe-5423 (1CH) + 1093 78d8 PXIe-5423 (2CH) + 1093 78d9 PXIe-5433 (1CH) + 1093 78da NI PXIe-5433 (2CH) 1093 78f8 NI FlexRIO Module (KU035) 1093 78f9 NI FlexRIO Module (KU040) 1093 78fa NI FlexRIO Module (KU060) 1093 78ff PXIe-4162 + 1093 792f PXIe-4190 + 1093 7935 PXIe-5111 + 1093 7936 PXIe-5110 1093 7995 PXIe-7911R 1093 7996 PXIe-7912R 1093 7997 PXIe-7915R + 1093 79cd PXIe-5113 1093 79d3 NI FlexRIO PCIe Module (KU035) 1093 79d4 NI FlexRIO PCIe Module (KU040) 1093 79d5 NI FlexRIO PCIe Module (KU060) + 1093 79f8 PXIe-6571 + 1093 7a16 PXIe-4147 + 1093 7a9a PXIe-4137 (40W) + 1093 7aa4 PXIe-4135 (40W) + 1093 7aca PXIe-4051 + 1093 7acb PXIe-4150 + 1093 7acc PXIe-4151 + 1093 7ae0 PXIe-4163 (10 pA) + 1093 7ae1 PXIe-4162 (10 pA) + 1093 7aef PXIe-4190 (500 kHz) + 1093 7b1f PXIe-6571 (8CH) c801 PCI-GPIB c811 PCI-GPIB+ c821 PXI-GPIB @@ -9104,13 +9297,13 @@ 5842 2051 ISA bridge 10ab Digicom 10ac Honeywell IAC -10ad Symphony Labs +10ad Winbond Electronics Corp / Symphony Labs 0001 W83769F 0003 SL82C103 0005 SL82C105 0103 SL82c103 - 0105 SL82c105 - 0565 W83C553F/W83C554F + 0105 SL82C105/W83C55xF Bus Master IDE + 0565 W83C553F/554F ISA bridge 10ae Cornerstone Technology 10af Micro Computer Systems Inc 10b0 CardExpert Technology @@ -12988,17 +13181,22 @@ 223f GA102GL 228b GA104 High Definition Audio Controller 228e GA106 High Definition Audio Controller + 2291 GA107 High Definition Audio Controller 2296 Tegra PCIe Endpoint Virtual Network 22a3 GH100 [H100 NVSwitch] 22ba AD102 High Definition Audio Controller 22bc AD104 High Definition Audio Controller 22bd AD106M High Definition Audio Controller + 22be AD107 High Definition Audio Controller 2302 GH100 + 230e GH100 [H20 NVL16] 2313 GH100 [H100 CNX] 2321 GH100 [H100L 94GB] 2322 GH100 [H800 PCIe] 2324 GH100 [H800] + 2328 GH100 [H20B] 2329 GH100 [H20] + 232c GH100 [H20 HBM3e] 2330 GH100 [H100 SXM5 80GB] 2331 GH100 [H100 PCIe] 2335 GH100 [H200 SXM 141GB] @@ -13007,10 +13205,12 @@ 2338 GH100 [H100 SXM5 96GB] 2339 GH100 [H100 SXM5 94GB] 233a GH100 [H800L 94GB] + 233b GH100 [H200 NVL] 233d GH100 [H100 96GB] 2342 GH100 [GH200 120GB / 480GB] 2343 GH100 2345 GH100 [GH100-88K-A1] + 2348 GH100 [GH200 144G HBM3e] 237f GH100 [Skinny Joe] 23b0 GH100 23f0 GH100 @@ -13089,7 +13289,7 @@ 25a9 GA107M [GeForce RTX 2050] 25aa GA107M [GeForce MX570 A] 25ab GA107M [GeForce RTX 3050 4GB Laptop GPU] - 25ac GN20-P0-R-K2 [GeForce RTX 3050 6GB Laptop GPU] + 25ac GA107BM / GN20-P0-R-K2 [GeForce RTX 3050 6GB Laptop GPU] 25ad GA107 [GeForce RTX 2050] 25af GA107 [GeForce RTX 3050 Engineering Sample] 25b0 GA107GL [RTX A1000] @@ -13106,7 +13306,7 @@ 25e0 GA107BM [GeForce RTX 3050 Ti Mobile] 25e2 GA107BM [GeForce RTX 3050 Mobile] 25e5 GA107BM [GeForce RTX 3050 Mobile] - 25ec GN20-P0-R-K2 [GeForce RTX 3050 6GB Laptop GPU] + 25ec GA107BM / GN20-P0-R-K2 [GeForce RTX 3050 6GB Laptop GPU] 25ed GA107 [GeForce RTX 2050] 25f9 GA107 [RTX A1000 Embedded GPU ] 25fa GA107 [RTX A2000 Embedded GPU] @@ -13115,6 +13315,7 @@ 2684 AD102 [GeForce RTX 4090] 2685 AD102 [GeForce RTX 4090 D] 2689 AD102 [GeForce RTX 4070 Ti SUPER] + 26af AD102 [PG137] 26b1 AD102GL [RTX 6000 Ada Generation] 26b2 AD102GL [RTX 5000 Ada Generation] 26b3 AD102GL [RTX 5880 Ada Generation] @@ -13123,15 +13324,16 @@ 26b8 AD102GL [L40G] 26b9 AD102GL [L40S] 26ba AD102GL [L20] + 26bb AD102GL [L30] 26f5 AD102GL [L40 CNX] 2702 AD103 [GeForce RTX 4080 SUPER] 2703 AD103 [GeForce RTX 4080 SUPER] 2704 AD103 [GeForce RTX 4080] 2705 AD103 [GeForce RTX 4070 Ti SUPER] 2709 AD103 [GeForce RTX 4070] - 2717 GN21-X11 [GeForce RTX 4090 Laptop GPU] + 2717 AD103M / GN21-X11 [GeForce RTX 4090 Laptop GPU] 2730 AD103GLM [RTX 5000 Ada Generation Laptop GPU] - 2757 GN21-X11 + 2757 AD103M / GN21-X11 [GeForce RTX 4090 Laptop GPU] 2770 AD103GLM [RTX 5000 Ada Generation Embedded GPU] 2782 AD104 [GeForce RTX 4070 Ti] 2783 AD104 [GeForce RTX 4070 SUPER] @@ -13154,12 +13356,14 @@ 2805 AD106 [GeForce RTX 4060 Ti 16GB] 2808 AD106 [GeForce RTX 4060] 2820 AD106M [GeForce RTX 4070 Max-Q / Mobile] + 2822 AD106M [GeForce RTX 3050 A Laptop GPU] 2838 AD106GLM [RTX 3000 Ada Generation Laptop GPU] 2860 AD106M [GeForce RTX 4070 Max-Q / Mobile] 2878 AD106GLM [RTX 3000 Ada Generation Embedded GPU] 2882 AD107 [GeForce RTX 4060] 28a0 AD107M [GeForce RTX 4060 Max-Q / Mobile] 28a1 AD107M [GeForce RTX 4050 Max-Q / Mobile] + 28a3 AD107M [GeForce RTX 3050 A Laptop GPU] 28b0 AD107GL [RTX 2000 / 2000E Ada Generation] 28b8 AD107GLM [RTX 2000 Ada Generation Laptop GPU] 28b9 AD107GLM [RTX 1000 Ada Generation Laptop GPU] @@ -13167,7 +13371,37 @@ 28bb AD107GLM [RTX 500 Ada Generation Laptop GPU] 28e0 AD107M [GeForce RTX 4060 Max-Q / Mobile] 28e1 AD107M [GeForce RTX 4050 Max-Q / Mobile] + 28e3 AD107M [GeForce RTX 3050 A Laptop GPU] 28f8 AD107GLM [RTX 2000 Ada Generation Embedded GPU] + 2900 GB100 [Reserved Dev ID A] + 2901 GB100 [B200] + 2920 GB100 [TS4] + 2940 GB100 [Reserved Dev ID B] + 2941 GB100 [HGX GB200] + 2980 GB102 [Reserved Dev ID A] + 29bc GB102 [B100] + 29c0 GB102 [Reserved Dev ID B] + 2b85 GB202 [GeForce RTX 5090] + 2b87 GB202 [GeForce RTX 5090 D] + 2c02 GB203 [GeForce RTX 5080] + 2c05 GB203 [GeForce RTX 5070 Ti] + 2c18 GB203M / GN22 [GeForce RTX 5090 Max-Q / Mobile] + 2c19 GB203M / GN22 [GeForce RTX 5080 Max-Q / Mobile] + 2c2c GB6-256(N22W-ES-A1) + 2c58 GB203M / GN22-X11 [GeForce RTX 5090 Max-Q / Mobile] + 2c59 GB203M / GN22-X9 [GeForce RTX 5080 Max-Q / Mobile] + 2d18 AD108M [GeForce RTX 5070 Max-Q / Mobile] + 2d19 AD108M [GeForce RTX 5060 Max-Q / Mobile] + 2d2c GB6-128 (N22Y-ES-A1) + 2d58 AD108M [GeForce RTX 5070 Max-Q / Mobile] + 2d59 AD108M [GeForce RTX 5060 Max-Q / Mobile] + 2d98 AD108M [GeForce RTX 5050 Max-Q / Mobile] + 2dd8 AD108M [GeForce RTX 5050 Max-Q / Mobile] + 2f04 GN22 [GeForce RTX 5070] + 2f18 AD108M [GeForce RTX 5070 Ti Max-Q / Mobile] + 2f58 AD108M [GeForce RTX 5070 Ti Max-Q / Mobile] + 31c0 GB110 + 3340 GB120 10df Emulex Corporation 0720 OneConnect NIC (Skyhawk) 103c 1934 FlexFabric 20Gb 2-port 650M Adapter @@ -13269,6 +13503,8 @@ f500 LPe37000/LPe38000 Series 32Gb/64Gb Fibre Channel Adapter 1014 06c1 PCIe4 4-Port 32Gb Fibre Channel Adapter for POWER (FC EN1L/EN1M; CCIN 2CFC) 1014 06c2 PCIe4 2-Port 64Gb Fibre Channel Adapter for POWER (FC EN1N/EN1P; CCIN 2CFD) + 1590 0454 Synergy 5331C 32Gb Fibre Channel Host Bus Adapter + f600 LPe37100S/LPe38100S Series 32Gb/64Gb Fibre Channel Adapter f700 LP7000 Fibre Channel Host Adapter f701 LP7000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2) f800 LP8000 Fibre Channel Host Adapter @@ -13431,6 +13667,7 @@ 1af4 1100 QEMU Virtual Machine 8125 RTL8125 2.5GbE Controller 4c52 2022 LRES2022PT Single-port 2.5Gb Ethernet Network Adapter + 8126 RTL8126 5GbE Controller 8129 RTL-8129 10ec 8129 RT8129 Fast Ethernet Adapter 11ec 8129 RTL8111/8168 PCIe Gigabit Ethernet (misconfigured) @@ -13525,7 +13762,7 @@ 1043 16d5 U6V/U31J laptop 1043 81aa P5B 1043 82c6 M3A78 Series Motherboard - 1043 83a3 M4A785/P7P55 Motherboard + 1043 83a3 M4A785/P7P55/AT3IONT-I Motherboard 1043 8432 P8P67 and other motherboards 1043 8505 P8 series motherboard 1043 8554 H81M-C Motherboard @@ -13607,7 +13844,9 @@ 8813 RTL8813AE 802.11ac PCIe Wireless Network Adapter 8821 RTL8821AE 802.11ac PCIe Wireless Network Adapter 8852 RTL8852AE 802.11ax PCIe Wireless Network Adapter + 8922 RTL8922AE 802.11be PCIe Wireless Network Adapter a85a RTL8852AE WiFi 6 802.11ax PCIe Adapter + b520 RTL8852BE-VT PCIe 802.11ax Wireless Network Controller b723 RTL8723BE PCIe Wireless Network Adapter 10ec 8739 Dell Wireless 1801 17aa b736 Z50-75 @@ -13644,11 +13883,16 @@ 3fc5 RME Hammerfall DSP 3fc6 RME Hammerfall DSP MADI 5000 Alveo U200 XDMA Platform + 10ee 000e Alveo card 5004 Alveo U250 XDMA Platform + 10ee 000e Alveo card 5005 Alveo U250 500c Alveo U280 XDMA Platform + 10ee 000e Alveo card 5020 Alveo U50 XMDA Platform + 10ee 000e Alveo card 505c Alveo U55C + 10ee 000e Alveo card 5074 Alveo X3522, Quad Port, 10/25GbE Adaptable Accelerator Card 5084 Alveo X3522, Quad Port, 10/25GbE Low Latency Network Adapter 6987 SmartSSD @@ -13664,9 +13908,13 @@ 9234 SmartSSD 9434 SmartSSD d000 Alveo U200 Golden Image + 10ee 000e Alveo card d004 Alveo U250 Golden Image + 10ee 000e Alveo card d00c Alveo U280 Golden Image + 10ee 000e Alveo card d020 Alveo U50 Golden Image + 10ee 000e Alveo card d154 Copley Controls CAN card (PCI-CAN-02) # SED is assigned Xilinx PCI device IDs ebf0 through ebff ebf0 SED Systems Modulator/Demodulator @@ -13972,6 +14220,7 @@ 0410 VX900 Series Host Bridge: Host Control 0415 VT6415 PATA IDE Host Controller 1043 838f Motherboard + 0419 VN1000 Host Bridge 0501 VT8501 [Apollo MVP4] 0505 VT82C505 # Shares chip with :0576. The VT82C576M has :1571 instead of :0561. @@ -14063,6 +14312,7 @@ 1364 CN896/VN896/P4M900 Host Bridge 1409 VX855/VX875 Error Reporting 1410 VX900 Series Error Reporting + 1419 VN1000 Host Bridge 1571 VT82C576M/VT82C586 1595 VT82C595/97 [Apollo VP2/97] 1732 VT1732 [Envy24 II] PCI Multi-Channel Audio Controller @@ -14088,11 +14338,12 @@ 2364 CN896/VN896/P4M900 Host Bridge 2409 VX855/VX875 Host Bus Control 2410 VX900 Series CPU Bus Controller + 2419 VN1000 Host Bridge 287a VT8251 PCI to PCI Bridge 287b VT8251 Host Bridge 287c VT8251 PCIE Root Port 287d VT8251 PCIE Root Port - 287e VT8237/8251 Ultra VLINK Controller + 287e VT8237/8251/8261 Ultra VLINK Controller 3022 CLE266 3038 VT82xx/62xx/VX700/8x0/900 UHCI USB 1.1 Controller 0925 1234 onboard UHCI USB 1.1 Controller @@ -14257,7 +14508,7 @@ 3116 VT8375 [KM266/KL266] Host Bridge 1297 f641 FX41 motherboard 3118 CN400/PM800/PM880/PN800/PN880 [S3 UniChrome Pro] - 3119 VT6120/VT6121/VT6122 Gigabit Ethernet Adapter + 3119 VT6120/VT6121/VT6122/VT6130 Gigabit Ethernet Adapter 3122 VT8623 [Apollo CLE266] integrated CastleRock graphics 3123 VT8623 [Apollo CLE266] 3128 VT8753 [P4X266 AGP] @@ -14358,12 +14609,14 @@ 3372 VT8237S PCI to ISA Bridge 337a VT8237A PCI to PCI Bridge 337b VT8237A Host Bridge + 3402 VT8261 PCI to ISA Bridge 3403 VT6315 Series Firewire Controller 1043 8374 M5A88-V EVO 1043 8384 P8P67 Deluxe Motherboard 3409 VX855/VX875 DRAM Bus Control 3410 VX900 Series DRAM Bus Control 19da a179 ZBOX nano VD01 + 3419 VN1000 Host Bridge 3432 VL800/801 xHCI USB 3.0 Controller 3456 VX11 Standard Host Bridge 345b VX11 Miscellaneous Bus @@ -14392,6 +14645,7 @@ 4409 VX855/VX875 Power Management Control 4410 VX900 Series Power Management and Chip Testing Control 19da a179 ZBOX nano VD01 + 4419 VN1000 Host Bridge 5030 VT82C596 ACPI [Apollo PRO] 5122 VX855/VX875 Chrome 9 HCM Integrated Graphics 5208 PT890 I/O APIC Interrupt Controller @@ -14409,6 +14663,7 @@ 5372 VT8237/8251 Serial ATA Controller 5409 VX855/VX875 APIC and Central Traffic Control 5410 VX900 Series APIC and Central Traffic Control + 5419 VN1000 I/O APIC Interrupt Controller 6100 VT85C100A [Rhine II] 6122 VN1000 Graphics [Chrome 520 IGP] 6287 SATA RAID Controller @@ -14419,6 +14674,7 @@ 6409 VX855/VX875 Scratch Registers 6410 VX900 Series Scratch Registers 19da a179 ZBOX nano VD01 + 6419 VN1000 Host Bridge 7122 VX900 Graphics [Chrome9 HD] 7204 K8M800 Host Bridge 7205 KM400/KN400/P4M800 [S3 UniChrome] @@ -14445,6 +14701,7 @@ 7409 VX855/VX875 North-South Module Interface Control 7410 VX900 Series North-South Module Interface Control 19da a179 ZBOX nano VD01 + 7419 VN1000 Host Bridge 8231 VT8231 [PCI-to-ISA Bridge] 8235 VT8235 ACPI 8305 VT8363/8365 [KT133/KM133 AGP] @@ -14469,12 +14726,14 @@ 8a26 KL133/KL133A/KM133/KM133A [S3 ProSavage] 8d01 PN133/PN133T [S3 Twister] 8d04 KM266/P4M266/P4M266A/P4N266 [S3 ProSavageDDR] + 9000 VT8261 IDE Controller [StorX IDE Controller - 9000] 9001 VX900 Series Serial-ATA Controller + 9040 VT8261 SATA Controller [StorX RAID Controller - 9040] 9082 Standard AHCI 1.0 SATA Controller 9140 HDMI Audio Device 9201 USB3.0 Controller 9380 Ncore Coprocessor for Centaur CNS - 9530 VX800/820/900 Series Secure Digital Memory Card Controller + 9530 VX800/820/900/VT8261 Series Secure Digital Memory Card Controller 95d0 VX800/820/900 Series SDIO Host Controller a208 PT890 PCI to PCI Bridge Controller a238 K8T890 PCI to PCI Bridge Controller @@ -14483,6 +14742,7 @@ a364 CN896/VN896/P4M900 PCI to PCI Bridge Controller a409 VX855/VX875/VX900 Series USB Device Controller a410 VX900 Series PCI Express Root Port 0 + a419 VN1000 PCI to PCI Bridge b091 VT8633 [Apollo Pro266 AGP] b099 VT8366/A/7 [Apollo KT266/A/333 AGP] b101 VT8653 AGP Bridge @@ -14498,6 +14758,7 @@ b213 VPX/VPX2 I/O APIC Interrupt Controller b353 VX855/VX875/VX900 PCI to PCI Bridge b410 VX900 Series PCI Express Root Port 1 + b419 VN1000 Host Bridge b999 [K8T890 North / VT8237 South] PCI Bridge c208 PT890 PCI to PCI Bridge Controller c238 K8T890 PCI to PCI Bridge Controller @@ -14507,22 +14768,26 @@ c364 CN896/VN896/P4M900 PCI to PCI Bridge Controller c409 VX855/VX875 EIDE Controller c410 VX900 Series PCI Express Root Port 2 + c419 VN1000 PCI to PCI Bridge d104 VT8237R USB UDCI Controller d208 PT890 PCI to PCI Bridge Controller d213 VPX/VPX2 PCI to PCI Bridge Controller d238 K8T890 PCI to PCI Bridge Controller d340 PT900 PCI to PCI Bridge Controller d410 VX900 Series PCI Express Root Port 3 + d419 VN1000 PCI to PCI Bridge e208 PT890 PCI to PCI Bridge Controller e238 K8T890 PCI to PCI Bridge Controller e340 PT900 PCI to PCI Bridge Controller e353 VX800/820-Series PCI-Express Root Port 0 e410 VX900 Series PCI Express Physical Layer Electrical Sub-block + e419 VN1000 PCI to PCI Bridge f208 PT890 PCI to PCI Bridge Controller f238 K8T890 PCI to PCI Bridge Controller f340 PT900 PCI to PCI Bridge Controller f353 VX800/820-Series PCI-Express Root Port 1 f410 VX900 Series PCI UART Port 0-3 + f419 VN1000 PCI to PCI Bridge 1107 Stratus Computers 0576 VIA VT82C570MV [Apollo] (Wrong vendor ID!) 1108 Proteon, Inc. @@ -15208,6 +15473,21 @@ 1137 021a VIC 1487 MLOM Ethernet NIC 1137 024a VIC 1495 PCIe Ethernet NIC 1137 024b VIC 1497 MLOM Ethernet NIC + 1137 02af VIC 1467 MLOM Ethernet NIC + 1137 02b0 VIC 1477 MLOM Ethernet NIC + 1137 02cf VIC 14425 MLOM Ethernet NIC + 1137 02d0 VIC 14825 Mezzanine Ethernet NIC + 1137 02db VIC 15231 MLOM Ethernet NIC + 1137 02dc VIC 15411 MLOM Ethernet NIC + 1137 02dd VIC 15428 MLOM Ethernet NIC + 1137 02de VIC 15420 MLOM Ethernet NIC + 1137 02df VIC 15230 MLOM Ethernet NIC + 1137 02e0 VIC 15427 MLOM Ethernet NIC + 1137 02e1 VIC 15422 Mezzanine Ethernet NIC + 1137 02e4 VIC 15235 PCIe Ethernet NIC + 1137 02e8 VIC 15238 MLOM Ethernet NIC + 1137 02f2 VIC 15425 PCIe Ethernet NIC + 1137 02f3 VIC 15237 MLOM Ethernet NIC 0044 VIC Ethernet NIC Dynamic 1137 0047 VIC P81E PCIe Ethernet NIC Dynamic 1137 0048 VIC M81KR Mezzanine Ethernet NIC Dynamic @@ -15254,6 +15534,7 @@ 1137 012e VIC 1227 PCIe Userspace NIC 1137 0137 VIC 1380 Mezzanine Userspace NIC 023e 1GigE I350 LOM + 02b7 VIC SR-IOV Ethernet VF 1138 Ziatech Corporation 8905 8905 [STD 32 Bridge] 1139 Dynamic Pictures, Inc @@ -15630,6 +15911,8 @@ 1170 Inventec Corporation 1171 Loughborough Sound Images Plc 1172 Altera Corporation +# Unknown card with Altera ACE EP1K50TC144-2 as the PCI interface and has 4 BNC inputs connected to 4 TL3016 Comparators and one TRS output connected to two LTC1650 DACs + 0004 PF5102 board 00a7 Stratix V 0530 Stratix IV 646c KT-500/KT-521 board @@ -15723,15 +16006,22 @@ 117c 00a2 Celerity FC-321E 117c 00a3 Celerity FC-322E 117c 00ac Celerity FC-324E + 117c 40a6 ThunderLink TLFC-3162 + 117c 40a7 ThunderLink TLFC-3322 + 00a5 ExpressSAS 24Gb/s SAS/SATA HBA + 117c 00d0 ExpressSAS H24F0 + 117c 00d1 ExpressSAS H240F + 117c 00d2 ExpressSAS H240N 00bb Celerity FC 32/64Gb/s Gen 7 Fibre Channel HBA 117c 00bc Celerity FC-321P 117c 00bd Celerity FC-322P 117c 00be Celerity FC-324P 117c 00c9 Celerity FC-641E 117c 00ca Celerity FC-642E + 117c 00d4 Celerity FC-644E 00c5 ExpressNVM PCIe Gen4 Switch 117c 00c6 ExpressNVM S48F PCIe Gen4 - 117c 00c7 ExpressNVM S468 PCIe Gen4 + 117c 00cb ExpressNVM S4FF PCIe Gen4 00e6 ExpressSAS GT 12Gb/s SAS/SATA HBA 117c 00c0 ExpressSAS H1280 GT 117c 00c1 ExpressSAS H1208 GT @@ -15745,9 +16035,11 @@ 117c 0070 ExpressSAS H1280 117c 0071 ExpressSAS H1208 117c 0080 ExpressSAS H1244 + 117c 40ae ThunderLink TLSH-3128 8072 ExpressSAS 12Gb/s SAS/SATA HBA 117c 0072 ExpressSAS H12F0 117c 0073 ExpressSAS H120F + 117c 0081 ExpressSAS H1248 117c 0082 ExpressSAS H1288 117d Becton & Dickinson 117e T/R Systems @@ -16579,6 +16871,12 @@ 11f2 Picture Tel Japan K.K. 11f3 Keithley Metrabyte 0011 KPCI-PIO24 + 4200 42x0-SMU + 4205 4205-VPU + 4215 4200-VPU + 4216 422x-PxU + 4220 4200-CVU + 4221 4210-CVU 11f4 Kinetic Systems Corporation 2915 CAMAC controller 11f5 Computing Devices International @@ -16592,7 +16890,20 @@ 11f6 2011 ReadyLink 100TX 9881 RL100TX Fast Ethernet 11f7 Scientific Atlanta -11f8 PMC-Sierra Inc. +# née PMC-Sierra Inc. +11f8 Microchip Technology + 5000 PM50100 Switchtec PFX 100xG5 Fanout PCIe Switch + 5028 PM50028 Switchtec PFX 28xG5 Fanout PCIe Switch + 5036 PM50036 Switchtec PFX 36xG5 Fanout PCIe Switch + 5052 PM50052 Switchtec PFX 52xG5 Fanout PCIe Switch + 5068 PM50068 Switchtec PFX 68xG5 Fanout PCIe Switch + 5084 PM50084 Switchtec PFX 84xG5 Fanout PCIe Switch + 5100 PM51100 Switchtec PSX 100xG5 Programmable PCIe Switch + 5128 PM51028 Switchtec PSX 28xG5 Programmable PCIe Switch + 5136 PM51036 Switchtec PSX 36xG5 Programmable PCIe Switch + 5152 PM51052 Switchtec PSX 52xG5 Programmable PCIe Switch + 5168 PM51068 Switchtec PSX 68xG5 Programmable PCIe Switch + 5184 PM51084 Switchtec PSX 84xG5 Programmable PCIe Switch 5220 BR522x [PMC-Sierra maxRAID SAS Controller] 7364 PM7364 [FREEDM - 32 Frame Engine & Datalink Mgr] 7375 PM7375 [LASAR-155 ATM SAR] @@ -16918,9 +17229,7 @@ 123b Seeq Technology, Inc. 123c Century Systems, Inc. 123d Engineering Design Team, Inc. - 0000 EasyConnect 8/32 - 0002 EasyConnect 8/64 - 0003 EasyIO + 0000 PCI 11W 0047 PCIe4 CDa 004b PCIe4 CDa 16 009d VisionLink F1 @@ -17034,7 +17343,9 @@ 1028 0085 ES1968 Maestro-2 PCI 1033 8051 ES1968 Maestro-2 Audiodrive 1969 ES1938/ES1946/ES1969 Solo-1 Audiodrive + 1014 0162 16 Bit PCI Audio Adapter (37L4457) 1014 0166 ES1969 SOLO-1 AudioDrive on IBM Aptiva Mainboard + 121f 8800 eDio Hi-Live SC1938 125d 8888 Solo-1 Audio Adapter 125d 8898 ES1938S TTSOLO1-SL [TerraTec 128i PCI] 153b 111b Terratec 128i PCI @@ -17053,6 +17364,8 @@ 125d 1999 Allegro-1 AudioDrive 1989 ESS Modem 125d 1989 ESS Modem + 1990 ES1990S Canyon3D 2LE + 1992 ES1992S Canyon3D 2 1998 ES1983S Maestro-3i PCI Audio Accelerator 1028 00b1 Latitude C600 1028 00e5 Latitude C810 @@ -18020,6 +18333,40 @@ 51b9 6500 ION NVMe SSD 1028 22e6 Ent NVMe 6500 RI 30.72TB 1028 22f6 Ent NVMe 6500 RI FIPS 30.72TB + 51bb 9550 PRO NVMe SSD + 1028 2318 MTFDLBQ30T7THA-1BK1JABDA + 1028 2319 MTFDLBQ15T3THA-1BK1JABDA + 1028 231a MTFDLBQ7T6THA-1BK1JABDA + 1028 231b MTFDLBQ3T8THA-1BK1JABDA + 1028 2320 MTFDLAL30T7THA-1BK1JABDA + 1028 2321 MTFDLAL15T3THA-1BK1JABDA + 1028 2322 MTFDLAL7T6THA-1BK1JABDA + 1028 2323 MTFDLAL3T8THA-1BK1JABDA + 1028 2328 MTFDLAL30T7THA-1BK1DFCDA + 1028 2329 MTFDLAL15T3THA-1BK1DFCDA + 1028 232a MTFDLAL7T6THA-1BK1DFCDA + 1028 232b MTFDLAL3T8THA-1BK1DFCDA + 1028 235c MTFDLBQ30T7THA-1BK1DFCDA + 1028 235d MTFDLBQ15T3THA-1BK1DFCDA + 1028 235e MTFDLBQ7T6THA-1BK1DFCDA + 1028 235f MTFDLBQ3T8THA-1BK1DFCDA + 51bd 9550 MAX NVMe SSD + 1028 231c MTFDLBQ25T6THB-1BK1JABDA + 1028 231d MTFDLBQ12T8THB-1BK1JABDA + 1028 231e MTFDLBQ6T4THB-1BK1JABDA + 1028 231f MTFDLBQ3T2THB-1BK1JABDA + 1028 2324 MTFDLAL25T6THB-1BK1JABDA + 1028 2325 MTFDLAL12T8THB-1BK1JABDA + 1028 2326 MTFDLAL6T4THB-1BK1JABDA + 1028 2327 MTFDLAL3T2THB-1BK1JABDA + 1028 232c MTFDLAL25T6THB-1BK1DFCDA + 1028 232d MTFDLAL12T8THB-1BK1DFCDA + 1028 232e MTFDLAL6T4THB-1BK1DFCDA + 1028 232f MTFDLAL3T2THB-1BK1DFCDA + 1028 2360 MTFDLBQ25T6THB-1BK1DFCDA + 1028 2361 MTFDLBQ12T8THB-1BK1DFCDA + 1028 2362 MTFDLBQ6T4THB-1BK1DFCDA + 1028 2363 MTFDLBQ3T2THB-1BK1DFCDA 51c0 7400 PRO NVMe SSD 1028 2162 EC NVMe OPAL 7400 RI M.2 480GB 1028 2163 EC NVMe OPAL 7400 RI M.2 960GB @@ -18090,6 +18437,11 @@ 1028 2293 DC NVMe SED 7450 MU U.2 12.8TB 1028 2294 DC NVMe ISE 7450 MU U.2 12.8TB 1344 3000 U.3 1600GB [MTFDKCB1T6TFS/MTFDKCC1T6TFS] + 51cb 6550 ION NVMe SSD + 1028 2379 MTFDLBQ61T4THL-1BK1JABDA + 1028 23a6 MTFDLBQ30T7THL-1BK1JABDA + 1028 23a7 MTFDLAL61T4THL-1BK1JABDA + 1028 23a8 MTFDLAL30T7THL-1BK1JABDA 5404 2210 NVMe SSD [Cobain] 5405 2300 NVMe SSD [Santana] 5407 3400 NVMe SSD [Hendrix] @@ -18099,6 +18451,9 @@ 5414 3460 NVMe SSD 5415 3500 NVMe SSD 5416 2550 NVMe SSD (DRAM-less) + 5425 2500 NVMe SSD (DRAM-less) + 5427 2650 NVMe SSD (DRAM-less) + 5429 2600 NVMe SSD (DRAM-less) 6001 2100AI NVMe SSD [Nitro] 1345 Arescom Inc 1347 Odetics @@ -18278,7 +18633,9 @@ 0206 GPS180PEX GPS Receiver (PCI Express) 0207 GLN180PEX GPS/GLONASS receiver (PCI Express) 0208 GPS180AMC GPS Receiver (PCI Express / MicroTCA / AdvancedMC) - 0209 GNS181PEX GPS/Galileo/GLONASS/BEIDOU receiver (PCI Express) + 0209 GNS181PEX GNSS receiver (PCI Express) + 020a GPS183PEX GPS Receiver (PCI Express) + 020b GNS183PEX GNSS receiver (PCI Express) 0301 TCR510PCI IRIG Timecode Reader 0302 TCR167PCI IRIG Timecode Reader 0303 TCR511PCI IRIG Timecode Reader @@ -18552,6 +18909,7 @@ 0254 XR17V254 Quad UART PCI controller 0258 XR17V258 Octal UART PCI controller 0352 XR17V3521 Dual PCIe UART + 4c52 9252 LRUS9252H 2-Port RS232 Serial Adapter 13a9 Siemens Medical Systems, Ultrasound Group 13aa Broadband Networks Inc 13ab Arcom Control Systems Ltd @@ -19917,6 +20275,7 @@ 1028 215a DC NVMe PM9A3 RI U.2 960GB 1028 215b DC NVMe PM9A3 RI U.2 1.92TB 1028 215c DC NVMe PM9A3 RI U.2 3.84TB + 1028 215d Dell DC NVMe PM9A3 RI U.2 7.68TB 1028 2166 DC NVMe PM9A3 RI 110M.2 960GB 1028 2167 DC NVMe PM9A3 RI 110M.2 1.92TB 1028 2168 DC NVMe PM9A3 RI 80M.2 480GB @@ -19930,6 +20289,8 @@ a80b NVMe SSD Controller PM9B1 (DRAM-less) a80c NVMe SSD Controller S4LV008[Pascal] a80d NVMe SSD Controller PM9C1a (DRAM-less) + a80e NVMe SSD Controller PM9D3a + a80f BM9C1 QLC NVME SSD (DRAM-less) a820 NVMe SSD Controller 171X 1028 1f95 Express Flash NVMe XS1715 SSD 400GB 1028 1f96 Express Flash NVMe XS1715 SSD 800GB @@ -20053,6 +20414,45 @@ 1028 225e NVMe FIPS PM1745 MU U.2 12.8TB 1028 225f NVMe PM1745 MU U.2 12.8TB a900 NVMe SSD Controller PM9DXa + 1028 230f DC NVMe PM9D3a RI 80M.2 480GB ISE + 1028 2310 DC NVMe PM9D3a RI 80M.2 960GB ISE + 1028 2311 DC NVMe PM9D3a RI 80M.2 1.92TB ISE + 1028 2341 DC NVMe PM9D3a RI U.2 960GB  + 1028 2342 DC NVMe PM9D3a RI U.2 1.92TB + 1028 2343 DC NVMe PM9D3a RI U.2 3.84TB + 1028 2344 DC NVMe PM9D3a RI U.2 7.68GTB + 1028 2345 DC NVMe PM9D3a RI U.2 15.36TB + 1028 2346 DC NVMe FIPS PM9D3a RI U.2 960GB + 1028 2347 DC NVMe FIPS PM9D3a RI U.2 1.92TB + 1028 2348 DC NVMe FIPS PM9D3a RI U.2 3.84TB + 1028 2349 DC NVMe FIPS PM9D3a RI U.2 7.68TB + 1028 234a DC NVMe FIPS PM9D3a RI U.2 15.36TB  + 1028 234d DC NVMe PM9D3a RI E3s 1.92TB + 1028 234e DC NVMe PM9D3a RI E3s 3.84TB  + 1028 234f DC NVMe PM9D3a RI E3s 7.68GTB + 1028 2350 DC NVMe PM9D3a RI E3s 15.36TB + 1028 2351 DC NVMe FIPS PM9D3a RI E3s 1.92TB + 1028 2352 DC NVMe FIPS PM9D3a RI E3s 3.84TB + 1028 2353 DC NVMe FIPS PM9D3a RI E3s 7.68TB + 1028 2354 DC NVMe FIPS PM9D3a RI E3s 15.36TB + 1028 2355 DC NVMe PM9D5a MU U.2 800GB + 1028 2356 DC NVMe PM9D5a MU U.2 1.6TB + 1028 2357 DC NVMe PM9D5a MU U.2 3.2TB + 1028 2358 DC NVMe PM9D5a MU U.2 6.4TB + 1028 2359 DC NVMe PM9D5a MU E3.s 1.6TB + 1028 235a DC NVMe PM9D5a MU E3.s 3.2TB + 1028 235b DC NVMe PM9D5a MU E3.s 6.4TB + aa00 NVMe SSD Controller BM1743 + 1028 2312 NVMe FIPS BM1743 QLC U.2 15.36TB + 1028 2313 NVMe FIPS BM1743 QLC U.2 30.72TB + 1028 2314 NVMe FIPS BM1743 QLC U.2 61.44TB + 1028 2315 NVMe BM1743 QLC U.2 15.36TB + 1028 2316 NVMe BM1743 QLC U.2 30.72TB + 1028 2317 NVMe BM1743 QLC U.2 61.44TB + 1028 2364 NVMe BM1743 QLC U.2 122.88TB + 1028 2366 MZ3MO15THCLCAD3 + 1028 2367 MZ3MO30THCLFAD3 + ac00 NVMe SSD Controller PM175x ecec Exynos 8895 PCIe Root Complex 144e OLITEC 144f Askey Computer Corp. @@ -20084,6 +20484,8 @@ f436 AVerTV Hybrid+FM 1462 Micro-Star International Co., Ltd. [MSI] 3483 MSI USB 3.0 (VIA VL80x-based xHCI USB Controller) +# This is MSI refreshed variant of their MECH series Navi 23 GPU card (73EF) + 5027 RX 6650XT MECH 2X 7c56 Realtek Ethernet controller RTL8111H aaf0 Radeon RX 580 Gaming X 8G 1463 Fast Corporation @@ -20174,6 +20576,7 @@ 14a3 Maverick Networks 14a4 Lite-On Technology Corporation 2100 CA1-8D128 NVMe SSD + 21f1 Plextor NVMe SSD 2200 CX2-8B256, CX2-8B512 NVMe SSD 22a0 EP2-KB960 NVMe SSD 22f1 M8Pe Series NVMe SSD @@ -20181,6 +20584,7 @@ 23f1 M9PeG, M9PeGN, M9PeY NVMe SSD 2f00 CAZ-82512 NVMe SSD 3500 CA5-8D512 NVMe SSD + 35f1 PLEXTOR PX-256M9PGN+ NVMe SSD # Wrong vendor ID used 4318 Broadcom BCM4318 [AirForce One 54g] 802.11g WLAN Controller 5100 CB1-SD256, CB1-SD512 NVMe SSD @@ -20250,6 +20654,7 @@ 14c3 MEDIATEK Corp. 0608 MT7921K (RZ608) Wi-Fi 6E 80MHz 0616 MT7922 802.11ax PCI Express Wireless Network Adapter + 4d75 T700 5G Modem [5G Solution 5000] 7603 MT7603E 802.11bgn PCI Express Wireless Network Adapter 7612 MT7612E 802.11acbgn PCI Express Wireless Network Adapter 7615 MT7615E 802.11ac PCI Express Wireless Network Adapter @@ -20257,12 +20662,16 @@ 7650 MT7650 802.11ac # MT7612E too? 7662 MT7662E 802.11ac PCI Express Wireless Network Adapter + 7663 MT7663 802.11ac PCI Express Wireless Network Adapter 7915 MT7915E 802.11ax PCI Express Wireless Network Adapter 7916 MT7905D/MT7975 # WiFi 6E capable 7922 MT7922 802.11ax PCI Express Wireless Network Adapter 1a3b 5300 ASUS PCE-AXE59BT 7961 MT7921 802.11ax PCI Express Wireless Network Adapter + 7988 MT7988 PCI Express Host Bridge [Filogic 880] + 7990 MT7996 802.11be PCI Express Wireless Network Adapter (Port 0) + 7991 MT7996 802.11be PCI Express Wireless Network Adapter (Port 1) 8650 MT7650 Bluetooth 14c4 IWASAKI Information Systems Co Ltd 14c5 Automation Products AB @@ -20788,6 +21197,7 @@ 16d4 BCM57402 NetXtreme-E Ethernet Partition 16d5 BCM57407 NetXtreme-E 10GBase-T Ethernet Controller 16d6 BCM57412 NetXtreme-E 10Gb RDMA Ethernet Controller + 1059 01b0 RD10057 10GbE interface 117c 00cd FastFrame N4S2 Dual-port 10Gb Ethernet Adapter 14e4 1202 BCM957412M4122C OCP 1x25G Type1 wRoCE 14e4 4120 NetXtreme E-Series Advanced Dual-port 10Gb SFP+ Ethernet Network Daughter Card @@ -20871,15 +21281,17 @@ 17aa 3a23 IdeaPad S10e 1750 BCM57508 NetXtreme-E 10Gb/25Gb/40Gb/50Gb/100Gb/200Gb Ethernet 117c 00cf FastFrame N412 Dual-port 100Gb Ethernet Adapter + 117c 40d6 ThunderLink TLNS-5102 Dual-port 100Gb Ethernet Adapter 14e4 2100 NetXtreme-E Dual-port 100G QSFP56 Ethernet PCIe4.0 x16 Adapter (BCM957508-P2100G) 14e4 5208 NetXtreme-E Dual-port 100G QSFP56 Ethernet OCP 3.0 Adapter (BCM957508-N2100G) 14e4 520a NetXtreme-E Dual-port 100G DSFP Ethernet OCP 3.0 Adapter (BCM957508-N2100GD) 14e4 d124 NetXtreme-E P2100D BCM57508 2x100G QSFP PCIE 14e4 d324 NetXtreme-E N2100D BCM57508 2x100G QSFP OCP3.0 Ethernet 14e4 df24 NetXtreme-E NGM2100D BCM57508 2x100G KR Mezz Ethernet - 1751 BCM57504 NetXtreme-E 10Gb/25Gb/40Gb/50Gb/100Gb/200Gb Ethernet + 1751 BCM57504 NetXtreme-E 10Gb/25Gb/40Gb/50Gb/100Gb Ethernet 1028 09d4 PowerEdge XR11/XR12 LOM 1028 0b1b PowerEdge XR5610 LOM + 117c 00da FastFrame N424 Quad-port 25Gb Ethernet Adapter 14e4 4250 NetXtreme-E Quad-port 25G SFP28 Ethernet PCIe4.0 x16 Adapter (BCM957504-P425G) 14e4 5045 NetXtreme-E BCM57504 4x25G OCP3.0 14e4 5100 NetXtreme-E Single-port 100G QSFP56 Ethernet OCP 3.0 Adapter (BCM957504-N1100G) @@ -20889,24 +21301,42 @@ 14e4 d142 NetXtreme-E P425D BCM57504 4x25G SFP28 PCIE 1590 0420 HPE Ethernet 25/50Gb 2-port 6310C Adapter 1752 BCM57502 NetXtreme-E 10Gb/25Gb/40Gb/50Gb Ethernet - 1760 BCM57608 10Gb/25Gb/50Gb/100Gb/200Gb/400Gb Ethernet + 1760 BCM57608 25Gb/50Gb/100Gb/200Gb/400Gb Ethernet + 14e4 9110 BCM57608 1x400G PCIe Ethernet NIC + 14e4 9120 BCM57608 2x200G PCIe Ethernet NIC + 14e4 9121 BCM57608 2x100G PCIe Ethernet NIC + 14e4 9125 BCM57608 2x200G PCIe Ethernet NIC + 14e4 9126 BCM57608 2x100G PCIe Ethernet NIC + 14e4 9140 BCM57608 1x400G QSFP-DD PCIe Ethernet NIC + 14e4 9310 BCM57608 1x400G QSFP-DD OCP Ethernet NIC + 14e4 9311 BCM57608 1x400G OCP Ethernet NIC + 14e4 9312 BCM57608 1x200G OCP Ethernet NIC + 14e4 9320 BCM57608 2x200G OCP Ethernet NIC + 14e4 9325 BCM57608 2x200G OCP Ethernet NIC + 14e4 9326 BCM57608 2x100G OCP Ethernet NIC + 14e4 9340 BCM57608 4x100G OCP Ethernet NIC 14e4 d125 BCM57608 2x200G PCIe Ethernet NIC 1800 BCM57502 NetXtreme-E Ethernet Partition 1801 BCM57504 NetXtreme-E Ethernet Partition + 1590 0420 Ethernet NPAR 6310C Adapter 1802 BCM57508 NetXtreme-E Ethernet Partition 14e4 df24 BCM57508 NetXtreme-E NGM2100D 2x100G KR Mezz Ethernet Partition 1803 BCM57502 NetXtreme-E RDMA Partition 1804 BCM57504 NetXtreme-E RDMA Partition + 1590 0420 Ethernet NPAR RoCE 6310C Adapter 1805 BCM57508 NetXtreme-E RDMA Partition 14e4 df24 NetXtreme-E NGM2100D BCM57508 2x100G KR Mezz RDMA Partition 1806 BCM5750X NetXtreme-E Ethernet Virtual Function 14e4 df24 BCM57508 NetXtreme-E NGM2100D 2x100G KR Mezz Ethernet Virtual Function + 1590 0420 Ethernet SRIOV 6310C Adapter 1807 BCM5750X NetXtreme-E RDMA Virtual Function 14e4 df24 BCM57508 NetXtreme-E NGM2100D 2x100G KR Mezz RDMA Virtual Function + 1590 0420 Ethernet SRIOV RoCE 6310C Adapter 1808 BCM5750X NetXtreme-E Ethernet Virtual Function 14e4 df24 BCM57508 NetXtreme-E NGM2100D 2x100G KR Mezz Ethernet Virtual Function 1809 BCM5750X NetXtreme-E RDMA Virtual Function 14e4 df24 BCM57508 NetXtreme-E NGM2100D 2x100G KR Mezz RDMA Virtual Function + 1819 BCM5760X Ethernet Virtual Function 2711 BCM2711 PCIe Bridge 2712 BCM2712 PCIe Bridge 3352 BCM3352 @@ -21144,9 +21574,11 @@ 4717 BCM47xx Sentry5 USB Device Controller 4718 Sentry5 Crypto Accelerator 4719 BCM47xx/53xx RoboSwitch Core + 471a BCM47xx EHCI Host Controller 4720 BCM4712 MIPS CPU 4727 BCM4313 802.11bgn Wireless Network Adapter 1028 0010 Inspiron M5010 / XPS 8300 + 472a BCM47xx xHCI Host Controller 5365 BCM5365P Sentry5 Host Bridge 5600 BCM5600 StrataSwitch 24+2 Ethernet Switch Controller 5605 BCM5605 StrataSwitch 24+2 Ethernet Switch Controller @@ -21176,6 +21608,7 @@ 5f71 BRCM4387 Bluetooth Controller # Bluetooth PCI function of the BRCM4377 Wireless Network Adapter 5fa0 BRCM4377 Bluetooth Controller + 8411 BCM47xx PCIe Bridge 8602 BCM7400/BCM7405 Serial ATA Controller 9026 CN99xx [ThunderX2] Integrated USB 3.0 xHCI Host Controller 9027 CN99xx [ThunderX2] Integrated AHCI/SATA 3 Host Controller @@ -21880,6 +22313,7 @@ 6893 3U OpenVPX Multi-function I/O Board [Model 68C3] 15ad VMware 0405 SVGA II Adapter + 0406 SVGA II Adapter (Fusion) 0710 SVGA Adapter 0720 VMXNET Ethernet Controller 0740 Virtual Machine Communication Interface @@ -21933,6 +22367,10 @@ 0223 CX8 PCIe Switch Family [ConnectX-8 PCIe Switch Secure Flash Recovery-RMA] 0224 CX9 Family [ConnectX-9 Flash Recovery] 0225 CX9 Family [ConnectX-9 Secure Flash Recovery-RMA] + 0226 CX10 Family [ConnectX-10 Flash Recovery] + 0227 CX10 Family [ConnectX-10 Secure Flash Recovery-RMA] + 0228 CX9 PCIe Switch Family [ConnectX-9 PCIe Switch Flash Recovery] + 0229 CX9 PCIe Switch Family [ConnectX-9 PCIe Switch Secure Flash Recovery-RMA] 024e MT53100 [Spectrum-2, Flash recovery mode] 024f MT53100 [Spectrum-2, Secure Flash recovery mode] 0250 Spectrum-3, Flash recovery mode @@ -21953,12 +22391,15 @@ 0263 MT27710 [ConnectX-4 Lx Programmable Virtual Function] EN 0264 Innova-2 Flex Burn image 0270 Spectrum-5 in Flash Recovery Mode - 0271 Spectrum-4L, RMA + 0271 Spectrum-5 RMA 0274 Spectrum-6 in Flash Recovery Mode - 0275 Spectrum-4C RMA - 0277 Spectrum-4TOR RMA + 0275 Spectrum-6 RMA + 0277 Spectrum-6 Tile 0278 Quantum-4 in Flash Recovery Mode 0279 Quantum-4 RMA + 027a Eros Chiplet + 027c Quantum-5 in Flash Recovery Mode + 027d Quantum-5 RMA 0281 NPS-600 Flash Recovery 0282 ArcusE Flash recovery 0283 ArcusE RMA @@ -21969,6 +22410,11 @@ # Flash recovery 0288 Arcus2 0289 Arcus2 RMA + 0290 SagittaZ + 02a0 Quantum-6 in Flash Recovery Mode + 02a1 Quantum-6 RMA + 02a2 Spectrum-7 in Flash Recovery Mode + 02a3 Spectrum-7 RMA 1002 MT25400 Family [ConnectX-2 Virtual Function] 1003 MT27500 Family [ConnectX-3] 1014 04b5 PCIe3 40GbE RoCE Converged Host Bus Adapter for Power @@ -22020,6 +22466,8 @@ 1012 MT27600 Family [Connect-IB Virtual Function] 1013 MT27700 Family [ConnectX-4] 1014 04f7 PCIe3 2-port 100 GbE (NIC and RoCE) QSFP28 Adapter for Power + 117c 00af FastFrame N351 Single-port 50Gb Ethernet Adapter + 117c 00b0 FastFrame N352 Dual-port 50Gb Ethernet Adapter 15b3 0003 Mellanox Technologies ConnectX-4 Stand-up single-port 40GbE MCX413A-BCAT 15b3 0005 Mellanox Technologies ConnectX-4 Stand-up single-port 40GbE MCX415A-BCAT 15b3 0006 MCX416A-BCAT, ConnectX-4 EN, 40/56GbE 2P, PCIe3.0 x16 @@ -22030,6 +22478,9 @@ 15b3 0050 ConnectX-4 100 GbE Dual Port QSFP28 Adapter 1014 MT27700 Family [ConnectX-4 Virtual Function] 1015 MT27710 Family [ConnectX-4 Lx] + 117c 00b4 FastFrame N322 Dual-port 25Gb Ethernet Adapter + 117c 40b7 ThunderLink TLN3-3252 Dual-port 25Gb Ethernet Adapter + 117c 40b8 ThunderLink TLN3-3102 Dual-port 10Gb Ethernet Adapter 15b3 0001 ConnectX-4 Lx EN network interface card, 25GbE single-port SFP28, PCIe3.0 x8, tall bracket, ROHS R6 15b3 0003 Stand-up ConnectX-4 Lx EN, 25GbE dual-port SFP28, PCIe3.0 x8, MCX4121A-ACAT 15b3 0004 ConnectX-4 Lx Stand-up dual-port 10GbE MCX4121A-XCAT @@ -22045,8 +22496,11 @@ 193d 1083 NIC-ETH640F-3S-2P # NIC-ETH540F-3S-2P OCP3.0 2x10G Card 193d 1084 NIC-ETH540F-3S-2P + 1e81 0c10 25GbE dual-port SFP28, PCIe3.0 x8 [3SC10] 1016 MT27710 Family [ConnectX-4 Lx Virtual Function] 1017 MT27800 Family [ConnectX-5] + 117c 00b1 FastFrame N311 Single-port 10Gb Ethernet Adapter + 117c 00b2 FastFrame N312 Dual-port 10Gb Ethernet Adapter 15b3 0006 ConnectX-5 EN network interface card, 100GbE single-port QSFP28, PCIe3.0 x16, tall bracket; MCX515A-CCAT 15b3 0007 Mellanox ConnectX-5 MCX516A-CCAT 15b3 0020 ConnectX-5 EN network interface card, 10/25GbE dual-port SFP28, PCIe3.0 x8, tall bracket ; MCX512A-ACAT @@ -22063,14 +22517,20 @@ 101b MT28908 Family [ConnectX-6] 101c MT28908 Family [ConnectX-6 Virtual Function] 101d MT2892 Family [ConnectX-6 Dx] + 193d 1055 NIC-ETH1040F-LP-2P QSFP56 2x100GbE PCIe Network Adapter 101e ConnectX Family mlx5Gen Virtual Function 101f MT2894 Family [ConnectX-6 Lx] 193d 1035 NIC-ETH641F-LP-2P SFP28 2x25GbE PCIe Network Adapter + 1bd4 00ac O252MCX6Lx + 1bd4 00ae S252MCX6Lx + 1ff9 00ad ENFM6251-SP2 + 1ff9 00af ENPM6251-SP2 1020 MT28860 1021 MT2910 Family [ConnectX-7] 1023 CX8 Family [ConnectX-8] 1024 CX8 PCIe Switch Family [ConnectX-8 PCIe Switch] 1025 CX9 Family [ConnectX-9] + 1027 CX10 Family [ConnectX-10] 1974 MT28800 Family [ConnectX-5 PCIe Bridge] 1975 MT416842 Family [BlueField SoC PCIe Bridge] 1976 MT28908 Family [ConnectX-6 PCIe Bridge] @@ -22082,6 +22542,7 @@ 197c ConnectX/BlueField Family mlx5Gen PCIe Bridge [PCIe Bridge] 197d CX8 Family [ConnectX-8 PCIe Bridge] 197e CX9 Family [ConnectX-9 PCIe Bridge] + 197f CX10 Family [ConnectX-10 PCIe Bridge] 2020 MT2892 Family [ConnectX-6 Dx Emulated PCIe Bridge] 2021 MT42822 Family [BlueField-2 SoC Emulated PCIe Bridge] 2023 MT2910 Family [ConnectX-7 Emulated PCIe Bridge] @@ -22172,13 +22633,16 @@ cf6c MT53100 [Spectrum-2] cf70 Spectrum-3 cf80 Spectrum-4 - cf82 Spectrum-4L - cf84 Spectrum-4C + cf82 Spectrum-5 + cf84 Spectrum-6 + cf86 Spectrum-7 d2f0 Quantum HDR (200Gbps) switch d2f2 Quantum-2 NDR (400Gbps) switch d2f4 Quantum-3 d2f6 Quantum-3CPO d2f8 Quantum-4 + d2fa Quantum-5 + d2fc Quantum-6 15b4 CCI/TRIAD 15b5 Cimetrics Inc 15b6 Texas Memory Systems Inc @@ -22208,7 +22672,7 @@ 5006 SanDisk Extreme Pro / WD Black SN750 / PC SN730 / Red SN700 NVMe SSD 5007 IX SN530 NVMe SSD (DRAM-less) 5008 PC SN530 NVMe SSD (DRAM-less) - 5009 SanDisk Ultra 3D / WD Blue SN550 NVMe SSD + 5009 SanDisk Ultra 3D / WD PC SN530, IX SN530, Blue SN550 NVMe SSD (DRAM-less) 15b7 5009 WD Blue SN550 NVMe SSD 500b PC SN530 NVMe SSD 1414 500b Xbox Series X @@ -22231,6 +22695,9 @@ 5036 WD PC SN5000S M.2 2280 NVMe SSD (DRAM-less) 5041 WD Blue SN580 NVMe SSD (DRAM-less) 5042 WD Black SN770M NVMe SSD (DRAM-less) + 5045 WD_BLACK SN7100 NVMe SSD (DRAM-less) + 5046 SanDisk Extreme NVMe SSD (DRAM-less) + 5049 SN8000S NVMe SSD 15b8 ADDI-DATA GmbH 1001 APCI1516 SP controller (16 digi outputs) 1003 APCI1032 SP controller (32 digi inputs w/ opto coupler) @@ -23328,6 +23795,7 @@ 8084 GL880 USB 2.0 EHCI controller 9750 GL9750 SD Host Controller 9755 GL9755 SD Host Controller + 9767 GL9767 SD Host Controller e763 GL9763E eMMC Controller 17aa Lenovo 0003 LENSE20256GMSP34MEAT2TA @@ -23335,7 +23803,6 @@ # 250GB nvme ssd from lenovo, can be found in Thinkpad x380 yoga 0005 LENSE30256GMSP34MEAT3TA 0006 LENSE30512GMSP34MEAT3TA - 3181 ThinkCentre M75n IoT 402b Intel 82599ES 10Gb 2-port Server Adapter X520-2 9602 RS780/RS880 PCI to PCI bridge (int gfx) 17ab Phillips Components @@ -23616,6 +24083,7 @@ 0404 DOMINO Melody 0407 DOMINO Symphony 0408 DOMINO Symphony PCIe + 0814 Coaxlink Quad CXP-12 1809 Lumanate, Inc. 180c IEI Integration Corp 1813 Ambient Technologies Inc @@ -23821,6 +24289,8 @@ # Sitecom HFC-S based ISDN controller card DC-105v2 3069 DC-105v2 ISDN controller 18d4 Celestica +# OCP-TAP + 1007 Time Card 18d8 Dialogue Technology Corp. 18dd Artimi Inc 4c6f Artimi RTMI-100 UWB adapter @@ -23913,6 +24383,7 @@ 01e5 NT100A01 Network Adapter 0215 NT400D11 Network Adapter 0225 NT40A11 Network Adapter + 0295 NT400D13 Network Adapter 18f6 NextIO 1000 [Nexsis] Switch Virtual P2P PCIe Bridge 1001 [Texsis] Switch Virtual P2P PCIe Bridge @@ -23966,7 +24437,8 @@ 2031 SC92031 PCI Fast Ethernet Adapter 8139 RTL8139D [Realtek] PCI 10/100BaseTX ethernet adaptor 1905 Micronas USA, Inc. -1912 Renesas Technology Corp. +# since the merger with NEC Electronics in 2010 +1912 Renesas Electronics Corp. 0002 SH7780 PCI Controller (PCIC) 0011 SH7757 PCIe End-Point [PBI] 0012 SH7757 PCIe-PCI Bridge [PPB] @@ -24092,12 +24564,20 @@ 1924 802b XtremeScale X2552 OCP 2.0 Dual Port SFP28 1924 802c XtremeScale X2522-25G PCIe Dual Port SFP28 1924 802d XtremeScale X2562 OCP 3.0 Dual Port SFP28 + 0c03 NS9480 1/10/25/40/50/100Gb Ethernet Controller PLUS + 1924 8031 X4522 Express and Enterprise Ethernet Adapter + 1924 8032 X4542 Express and Enterprise Ethernet Adapter 1803 SFC9020 10G Ethernet Controller (Virtual Function) 1813 SFL9021 10GBASE-T Ethernet Controller (Virtual Function) 1903 SFC9120 10G Ethernet Controller (Virtual Function) 1923 SFC9140 10/40G Ethernet Controller (Virtual Function) 1a03 SFC9220 10/40G Ethernet Controller (Virtual Function) 1b03 XtremeScale SFC9250 10/25/40/50/100G Ethernet Controller (Virtual Function) + 1c03 NS9480 1/10/25/40/50/100Gb Ethernet Controller PLUS (Virtual Function) + 2c03 NS9480 1/10/25/40/50/100Gb Ethernet Controller + 1924 8031 X4522 Enterprise Ethernet Adapter + 1924 8032 X4542 Enterprise Ethernet Adapter + 3c03 NS9480 1/10/25/40/50/100Gb Ethernet Controller (Virtual Function) 6703 SFC4000 rev A iSCSI/Onload [Solarstorm] 10b8 0102 SMC10GPCIe-10BT (A2) [TigerCard] 10b8 0103 SMC10GPCIe-10BT (A3) [TigerCard] @@ -24367,6 +24847,7 @@ 5021 PS5021-E21 PCIe4 NVMe Controller (DRAM-less) 5026 PS5026-E26 PCIe5 NVMe Controller 5027 PS5027-E27T PCIe4 NVMe Controller (DRAM-less) + 5031 PS5031-E31T PCIe5 NVMe Controller 1989 Montilio Inc. 0001 RapidFile Bridge 8001 RapidFile @@ -24460,12 +24941,17 @@ 19e5 d148 Hi1822 SP527 (2*16G FC) 19e5 d301 Hi1822 SP520 (2*16G FC) 19e5 d305 Hi1822 SP525 (2*16G FC) + 0204 Hi1822 Family (4*10GE) 0205 Hi1822 Family (2*100GE) 19e5 df27 Hi1822 MZ731 MEZZ (2*100GE) 0206 Hi1822 Family (2*25GE) 19e5 d138 Hi1822 SP582 (2*25GE) 19e5 d13a Hi1822 SC381 (2*25GE) 19e5 d145 Hi1822 SP586 (2*25GE) + 0208 Hi1822 Family (2*100GE) + 020b Hi1822 Family (4*25GE) + 020c Hi1822 Family (4*32G FC) + 020d Hi1822 Family (2*40GE) 0210 Hi1822 Family (4*25GE) 19e5 df2e Hi1822 MZ532 MEZZ (4*25GE) 0211 Hi1822 Family (4*25GE) @@ -24499,10 +24985,21 @@ 19e5 6213 NVMe SSD ES3500P V6 3840GB 2.5" U.2 19e5 6214 NVMe SSD ES3500P V6 7680GB 2.5" U.2 19e5 6215 NVMe SSD ES3500P V6 15360GB 2.5" U.2 + 3758 SP686C RAID Controller Card + 19e5 0185 RAID SP686C-M-16i 2G + 19e5 01a1 RAID SP686C-M-40i 2G + 19e5 01a4 RAID SP686C-M-16i 4G + 19e5 01a8 RAID SP686C-MH-32i 4G + 19e5 01ad RAID SP686C-M-40i 4G 375e Hi1822 Family Virtual Function 375f Hi1822 Family Virtual Function 379e Hi1822 Family Virtual Function 379f Hi1822 Family Virtual Function + 3858 SP186 HBA Controller Card + 19e5 0120 HBA SP186-M-32i + 19e5 0125 HBA SP186-M-40i + 19e5 0180 HBA SP186-M-16i + 19e5 0188 HBA SP186-M-8i a120 HiSilicon PCIe Root Port with Gen4 a121 HiSilicon PCI-PCI Bridge a122 HiSilicon Embedded DMA Engine @@ -24549,6 +25046,7 @@ 1a03 ASPEED Technology, Inc. 1150 AST1150 PCI-to-PCI Bridge 2000 ASPEED Graphics Family + 15d9 0821 X10DRW-i 15d9 0832 X10SRL-F 15d9 1b95 H12SSL-i 1a05 deltaww @@ -24596,6 +25094,7 @@ 1a32 Quanta Microsystems, Inc 1a3b AzureWave 1112 AR9285 Wireless Network Adapter (PCI-Express) +1a3e Micro-Research Finland Oy 1a41 Tilera Corp. 0001 TILE64 processor 0002 TILEPro processor @@ -24698,6 +25197,7 @@ 1ad7 Spectracom Corporation 8000 TSync-PCIe Time Code Processor 9100 TPRO-PCI-66U Timecode Reader/Generator + a000 OCP-TAP [ARTCard] 1ade Spin Master Ltd. 1501 Swipetech barcode scanner 3038 PCIe Video Bridge @@ -24879,6 +25379,10 @@ 1824 ASM1824 12-Port PCIe x8 Gen2 Packet Switch 2142 ASM2142/ASM3142 USB 3.1 Host Controller 1462 7a72 H270 PC MATE + 2421 ASM4242 PCIe Switch Upstream Port + 2423 ASM4242 PCIe Switch Downstream Port + 2425 ASM4242 USB 4 / Thunderbolt 3 Host Router + 2426 ASM4242 USB 3.2 xHCI Controller 2806 ASM2806 4-Port PCIe x2 Gen3 Packet Switch 2812 ASM2812 6-Port PCIe x4 Gen3 Packet Switch 2824 ASM2824 PCIe Gen3 Packet Switch @@ -24963,7 +25467,7 @@ 1028 2151 BOSS-N1 Modular ET 1028 2196 ROR-N1 1028 2286 BOSS-N1 DC-MHS - 1028 2287 BOSS-N1 Modular + 1028 2287 BOSS-N1 Modular DC-MHS 1b4b 2241 Santa Cruz NVMe Host Adapter 1b96 4000 WD_BLACK AN1500 NVMe SSD 1d49 0306 ThinkSystem M.2 NVMe 2-Bay RAID Enablement Kit @@ -25081,6 +25585,7 @@ 2720 Ultrastar DC SN650 NVMe SSD 2721 Ultrastar DC SN650 NVMe SSD 2722 Ultrastar DC SN655 NVMe SSD + 2751 Ultrastar DC SN861 NVMe SSD 3001 RapidFlex C2000 NVMe Initiator 3714 PC SN730 NVMe SSD 3734 PC SN730 NVMe SSD @@ -25199,10 +25704,11 @@ # Nytro 5060H (Rocinante High Performance) non-SED 1bb1 0181 Nytro 5060H 1bb1 01a1 Nytro XP7102 + 0155 Nytro 5x50 NVMe SSD 5012 FireCuda/IronWolf 510 SSD 5013 BarraCuda Q5 NVMe SSD (DRAM-less) 5016 FireCuda 520/IronWolf 525 SSD - 5018 FireCuda 530 SSD + 5018 E18 PCIe SSD 5019 BarraCuda PCIe SSD (DRAM-less) # 2TB 5021 FireCuda 520 SSD @@ -25234,6 +25740,8 @@ 5236 PCIe 4TG2-P Controller 1bcd Apacer Technology 0120 NVMe SSD Drive 960GB + 0180 PB4480 NVMe PCIe SSD (DRAM-less) + 0310 NVMe SSD Drive 480GB 1bcf NEC Corporation 001c Vector Engine 1.0 1bd0 Astronics Corporation @@ -25254,7 +25762,7 @@ 1201 NG3 Series ARINC 429 Interface 1202 NG3 Series Avionics Discrete & Serial Interface 1203 NG3 Series Avionics Discrete Interface -1bd4 Inspur Electronic Information Industry Co., Ltd. +1bd4 IEIT SYSTEMS Co., Ltd 0911 Arria10_PCIe_F10A1150 1000 NS8600G1U160 NVME SSD 1001 NS8600G1U320 NVME SSD @@ -25328,6 +25836,8 @@ 0021 FD722 0022 FD788 0023 FD722-M2 + 0024 FD722 with bypass + 0025 FD922 1c28 Lite-On IT Corp. / Plextor 0122 M6e PCI Express SSD [Marvell 88SS9183] # previously Fiberblaze @@ -25407,7 +25917,9 @@ 1739 BC701 NVMe Solid State Drive 174a Gold P31/BC711/PC711 NVMe Solid State Drive 1959 Platinum P41/PC801 NVMe Solid State Drive + 1969 PC811 NVMe Solid State Drive 1d59 BC901 NVMe Solid State Drive (DRAM-less) + 1f69 PVC10 NVMe Solid State Drive (DRAM-less) 2204 960GB TLC PCIe Gen3 x4 NVMe M.2 22110 2427 PE6010 NVMe Solid State Drive 2429 PE6011 NVMe Solid State Drive @@ -25437,7 +25949,39 @@ 284a PE8110 Series NVMe Solid State Drive 2a49 PE9110 Series NVMe Solid State Drive 2a59 PE9010 Series NVMe Solid State Drives - 2b59 PS10x0 Series NVMe Solid State Drives + 2b59 Px10x0 Series NVMe Solid State Drives + 1028 2295 NVMe ISE PS1010 RI U.2 1.92TB + 1028 2296 NVMe ISE PS1010 RI U.2 3.84TB + 1028 2297 NVMe ISE PS1010 RI U.2 7.68TB + 1028 2298 NVMe ISE PS1010 RI U.2 15.36TB + 1028 2299 NVMe ISE PS1030 MU U.2 1.6TB + 1028 229a NVMe ISE PS1030 MU U.2 3.2TB + 1028 229b NVMe ISE PS1030 MU U.2 6.4TB + 1028 229c NVMe ISE PS1030 MU U.2 12.8TB + 1028 22a7 NVMe ISE PS1010 RI E3.S 1.92TB + 1028 22a8 NVMe ISE PS1010 RI E3.S 3.84TB + 1028 22a9 NVMe ISE PS1010 RI E3.S 7.68TB + 1028 22aa NVMe ISE PS1010 RI E3.S 15.36TB + 1028 22ab NVMe ISE PS1030 MU E3.S 1.6TB + 1028 22ac NVMe ISE PS1030 MU E3.S 3.2TB + 1028 22ad NVMe ISE PS1030 MU E3.S 6.4TB + 1028 22ae NVMe ISE PS1030 MU E3.S 12.8TB + 1028 22dc NVMe FIPS PS1010 RI E3.S 1.92TB + 1028 22dd NVMe FIPS PS1010 RI E3.S 3.84TB + 1028 22de NVMe FIPS PS1010 RI E3.S 7.68TB + 1028 22df NVMe FIPS PS1010 RI E3.S 15.36TB + 1028 22e0 NVMe FIPS PS1030 MU E3.S 1.6TB + 1028 22e1 NVMe FIPS PS1030 MU E3.S 3.2TB + 1028 22e2 NVMe FIPS PS1030 MU E3.S 6.4TB + 1028 22e3 NVMe FIPS PS1030 MU E3.S 12.8TB + 1028 22f8 NVMe ISE PE1010 RI E3.S 1.92TB + 1028 22f9 NVMe ISE PE1010 RI E3.S 3.84TB + 1028 22fa NVMe ISE PE1010 RI E3.S 7.68TB + 1028 22fb NVMe ISE PE1010 RI E3.S 15.36TB + 1028 22fc NVMe ISE PE1030 MU E3.S 1.6TB + 1028 22fd NVMe ISE PE1030 MU E3.S 3.2TB + 1028 22fe NVMe ISE PE1030 MU E3.S 6.4TB + 1028 22ff NVMe ISE PE1030 MU E3.S 12.8TB 1c5f Beijing Memblaze Technology Co. Ltd. 000d PBlaze5 520/526 1c5f 0220 NVMe SSD PBlaze5 520 1920G AIC @@ -25495,6 +26039,12 @@ 1c5f 5437 NVMe SSD PBlaze6 6647 3200G 2.5" U.2(dual port) 1c5f 5441 NVMe SSD PBlaze6 6547 6400G 2.5" U.2 1c5f 5447 NVMe SSD PBlaze6 6647 6400G 2.5" U.2(dual port) + 0027 PBlaze7 7A40/7A46 NVMe SSD + 1c5f 1421 NVMe SSD PBlaze7 7A40 1920G 2.5" U.2 + 1c5f 1431 NVMe SSD PBlaze7 7A40 3840G 2.5" U.2 + 1c5f 1441 NVMe SSD PBlaze7 7A40 7680G 2.5" U.2 + 1c5f 5431 NVMe SSD PBlaze7 7A46 3200G 2.5" U.2 + 1c5f 5441 NVMe SSD PBlaze7 7A46 6400G 2.5" U.2 003d PBlaze5 920/926 1c5f 0a30 NVMe SSD PBlaze5 920 3840G AIC 1c5f 0a31 NVMe SSD PBlaze5 920 3840G 2.5" U.2 @@ -25518,9 +26068,12 @@ 1c5f 4b61 NVMe SSD PBlaze6 6936 25600GB 2.5" U.3 003f PBlaze7 7940/7946 NVMe SSD 1c5f 0431 NVMe SSD PBlaze7 7940 3840G 2.5" U.2 + 1c5f 0441 NVMe SSD PBlaze7 7940 7680G 2.5" U.2 + 1c5f 0451 NVMe SSD PBlaze7 7940 15360G 2.5" U.2 1c5f 0c31 NVMe SSD PBlaze7 7940 3840G 2.5" U.2 1c5f 0c41 NVMe SSD PBlaze7 7940 7680G 2.5" U.2 1c5f 0c51 NVMe SSD PBlaze7 7940 15360G 2.5" U.2 + 1c5f 0c61 NVMe SSD PBlaze7 7940 30720G 2.5" U.2 1c5f 1430 NVMe SSD PBlaze7 7940 3840G AIC 1c5f 1431 NVMe SSD PBlaze7 7940 3840G 2.5" U.2 1c5f 1435 NVMe SSD PBlaze7 7940 3840G E1.S @@ -25529,6 +26082,9 @@ 1c5f 1445 NVMe SSD PBlaze7 7940 7680G E1.S 1c5f 1450 NVMe SSD PBlaze7 7940 15360G AIC 1c5f 1451 NVMe SSD PBlaze7 7940 15360G 2.5" U.2 + 1c5f 4431 NVMe SSD PBlaze7 7946 3200G 2.5" U.2 + 1c5f 4441 NVMe SSD PBlaze7 7946 6400G 2.5" U.2 + 1c5f 4451 NVMe SSD PBlaze7 7946 12800G 2.5" U.2 1c5f 4c31 NVMe SSD PBlaze7 7946 3200G 2.5" U.2 1c5f 4c41 NVMe SSD PBlaze7 7946 6400G 2.5" U.2 1c5f 4c51 NVMe SSD PBlaze7 7946 12800G 2.5" U.2 @@ -25548,16 +26104,24 @@ 1ea0 2201 TP2511 Series U.2 NVMe Datacenter SSD(7.68TB) 1ea0 2210 TP2510 Series E3.S NVMe Datacenter SSD(7.68TB) 1ea0 2211 TP2511 Series E3.S NVMe Datacenter SSD(7.68TB) + 1ea0 2301 TP2511 Series U.2 NVMe Datacenter SSD (15.36TB) 0540 PBlaze4 NVMe SSD 0550 PBlaze5 700/900 0555 PBlaze5 510/516 0557 PBlaze5 910/916 1c63 Science and Research Centre of Computer Technology (JSC "NICEVT") 0008 K1927BB1Ya [EC8430] Angara Interconnection Network Adapter +# Other World Computing +1c7a OWC 1c7e TTTech Computertechnik AG 0200 zFAS Debug Port 1c7f Elektrobit Austria GmbH + 0300 EBX3 5100 EB5100 + 7200 EB 7200 Automotive logging and replay card +# This is a EB7200 card compatibly with a EB PCIe driver + 7201 EB7200 with EB PCIe Driver Interface + 7211 EB7210 1c8a TSF5 Corporation 0001 Hunter PCI Express 1c8c Mobiveil, Inc. @@ -25589,6 +26153,7 @@ 1cb8 Dawning Information Industry Co., Ltd. 1cc1 ADATA Technology Co., Ltd. 1202 IM2P32A8 NVMe SSD (DRAM-less) + 1602 LEGEND 900 NVMe SSD (DRAM-less) # SX6000LNP 2263 XPG SX6000 Lite NVMe SSD (DRAM-less) 32a8 SM2P32A8 NVMe SSD (DRAM-less) @@ -25610,10 +26175,13 @@ 621a LEGEND 850 NVMe SSD (DRAM-less) 622a LEGEND 960 NVMe SSD 624a LEGEND 700, XPG GAMMIX S20 NVMe SSD (DRAM-less) + 625a LEGEND 850 LITE NVMe SSD (DRAM-less) # 1TB 627a LEGEND 800 NVMe SSD (DRAM-less) # 500GB 628a LEGEND 800 NVMe SSD (DRAM-less) + 633a LEGEND 900 NVMe SSD (DRAM-less) + 642a XPG GAMMIX S50 CORE NVMe SSD (DRAM-less) 8201 XPG SX8200 Pro PCIe Gen3x4 M.2 2280 Solid State Drive 1cc4 Shenzhen Unionmemory Information System Ltd. 1203 NVMe SSD Controller UHXXXa series @@ -25634,7 +26202,7 @@ 17ab AH631 PCIe 3.0 NVMe SSD 256GB 2263 AM611 PCIe 3.0 x2 NVMe SSD 256GB 5008 AM610 PCIe 3.0 x2 NVMe SSD 128GB, 256GB - 5012 RPITJ512PED2OWX NVMe SSD 512GB + 5012 AH530 PCIe 3.0 NVMe SSD 512GB 5212 AM521 PCIe 3.0 NVMe SSD 256GB 6201 AM620 PCIe 3.0 NVMe SSD 128GB 6202 AM620 PCIe 3.0 NVMe SSD 256GB @@ -25643,10 +26211,16 @@ 6302 AM630 PCIe 4.0 NVMe SSD 256GB 6303 AM630 PCIe 4.0 x4 NVMe SSD Controller 6304 AM630 PCIe 4.0 NVMe SSD 1024GB + 660c RPETJ1T24MHP2QDQ PCIe 4.0 NVMe SSD 1024GB + 6a01 AM620 PCIe 3.0 NVMe SSD 128GB 6a02 AM6A0 PCIe 4.0 NVMe SSD 256GB 6a03 RPETJ512MKP1QDQ PCIe 4.0 NVMe SSD 512GB (DRAM-less) + 6a04 RPETJ1T24MKP2QDQ PCIe 4.0 NVMe SSD 1024GB (DRAM-less) 6a13 RPJYJ512MKN1QWQ PCIe 4.0 NVMe SSD 512GB (DRAM-less) 6a14 RPEYJ1T24MKN2QWY PCIe 4.0 NVMe SSD 1024GB (DRAM-less) + 6b04 AM6B0 PCIe 4.0 NVMe SSD + 6b13 RPJYJ512MLR1QWY PCIe 4.0 NVMe SSD 512GB (DRAM-less) + 6b14 RPJYJ1T24MLR1HWY PCIe 4.0 NVMe SSD 1024GB (DRAM-less) 8030 NVMe SSD Controller UH8X2X/UH7X2X series 1cc4 1122 NVMe SSD UH812a U.2 1.92TB 1cc4 1123 NVMe SSD UH812a U.2 3.84TB @@ -25668,6 +26242,10 @@ 1cc4 3123 NVMe SSD UH712a U.2 3.84TB 1cc4 3124 NVMe SSD UH712a U.2 7.68TB 1cc4 3125 NVMe SSD UH712a U.2 15.36TB + 1ea0 4124 NVMe SSD TP3511 U.2 7.68TB + 1ea0 4125 NVMe SSD TP3511 U.2 15.36TB + 1ea0 4224 NVMe SSD TP3511 E3.S 7.68TB + 1ea0 4225 NVMe SSD TP3511 E3.S 15.36TB 1cc5 Embedded Intelligence, Inc. 0100 PCIe-CAN-02 Dual CAN bus (9-pin male). PCI Express x1. 0101 PCIe-CAN-01 Single CAN bus (9-pin male). PCI Express x1. @@ -25676,7 +26254,7 @@ 0250 RMS-250 U.2 NVMe SSD 1ccf Zoom Corporation 0001 TAC-2 Thunderbolt Audio Converter -1cd2 SesKion GmbH +1cd2 Seskion GmbH 0301 Simulyzer-RT CompactPCI Serial DIO-1 card 0302 Simulyzer-RT CompactPCI Serial PSI5-ECU-1 card 0303 Simulyzer-RT CompactPCI Serial PSI5-SIM-1 card @@ -25685,6 +26263,9 @@ # supports 8x CAN (-FD) interfaces 0306 Simulyzer-RT CompactPCI Serial CAN-2 card (CAN-FD) 0307 Simulyzer-RT CompactPCI Serial DIO-2 card [Xilinx Zynq UltraScale+] + 0308 Simulyzer-RT CompactPCI Serial SENT-DIO-2 card +# 8-Channel ADC + 0309 Simulyzer-RT CompactPCI Serial SN-ADC card 1cd7 Nanjing Magewell Electronics Co., Ltd. 0002 Pro Capture AIO 0010 Pro Capture Endpoint @@ -25715,7 +26296,9 @@ 1cfd Mangstor 6300 MX6300 series PCIe x8 NVMe SSD 1d00 Pure Storage -1d05 Tongfang Hongkong Limited +1d05 AIstone Global Limited + 6027 B760-N2D5 motherboard + 7001 H610-N2 motherboard 1d0f Amazon.com, Inc. 7064 NeuronDevice (Inferentia) 7164 NeuronDevice (Trainium) @@ -25728,6 +26311,7 @@ efa0 Elastic Fabric Adapter (EFA) efa1 Elastic Fabric Adapter (EFA) efa2 Elastic Fabric Adapter (EFA) + efa3 Elastic Fabric Adapter (EFA) 1d17 Zhaoxin 070f ZX-100 PCI Express Root Port 0710 ZX-100/ZX-200 PCI Express Root Port @@ -25843,6 +26427,8 @@ 00c0 Turbocard3 Accelerator 0140 Open Network Interface Card 40G e004 AB01/EMB01 Development Board +1d2a KAYA Instruments + 1000 Frame grabber 1d37 NovaSparks 0013 PM3 0014 PM4 @@ -25861,13 +26447,17 @@ 1d62 Nebbiolo Technologies 1d65 Imagine Communications Corp. 04de Taurus/McKinley -1d69 Celeno Communications +# nee Celeno Communications +1d69 Renesas Electronics Corp. 2432 CL2432 2440 CL2440 + 8000 CL80x0 Wireless Network Adapter + 8046 CL8046 Wireless Network Adapter 1d6a Aquantia Corp. 0001 AQC107 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] 4c52 6880 LREC6880BT Single-port 10Gb Ethernet Network Adapter 00b1 AQtion AQC100 NBase-T/IEEE 802.3an Ethernet Controller [Atlantic 10G] + 1043 874a XG-C100F 10GbE SFP+ Ethernet Adapter 00c0 Antigua NBase-T/IEEE 802.3an Ethernet Controller - Engineering Sample 04c0 AQtion AQC113 NBase-T/IEEE 802.3an Ethernet Controller [Antigua 10G] 4c52 1053 LRES1053PT Quad-port 10Gb Ethernet Network Adapter @@ -25885,9 +26475,11 @@ 14c0 AQC113C NBase-T/IEEE 802.3an Ethernet Controller [Marvell Scalable mGig] 80b1 AQtion AQC100S NBase-T/IEEE 802.3an Ethernet Controller [Atlantic 10G] 87b1 AQtion AQC107S NBase-T/IEEE 802.3an Ethernet Controller [Atlantic 10G] + 1c7a de2b Thunderbolt 10G Ethernet Adapter 93c0 AQtion AQC114CS NBase-T/IEEE 802.3bz Ethernet Controller [Antigua 5G] 94c0 AQtion AQC113CS NBase-T/IEEE 802.3an Ethernet Controller [Antigua 10G] 1043 87f5 ProArt X570-CREATOR WIFI + 1043 8812 ASUS XG-C100C 10G PCI-E Network Adapter d107 AQtion AQC107 NBase-T/IEEE 802.3an Ethernet Controller [Atlantic 10G] 1043 8741 XG-C100C d108 AQC108 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] @@ -25935,6 +26527,9 @@ 1027 AR-P2P-DBG [P2P Debug Function] 1028 AR-P2P-ATR [P2P Actor Function] 1029 AR-P2P-UTL [P2P Utility Function] + 102a AR-TK242-FX2 [4x100GbE Gen5 Packet Capture-Replay Device] + 102b AR-ARKV-FX1 [Arkville 128B DPDK Data Mover for Versal/CPM5] + 102c AR-TK242-V80 [Gen5 PCAP Processor] 4200 A5PL-E1-10GETI [10 GbE Ethernet Traffic Instrument] 1d72 Xiaomi 1d78 DERA Storage @@ -25996,6 +26591,14 @@ 1d78 7108 D7436 U.2 15mm 7.68TB NVMe SSD 1d78 7109 D7456 U.2 15mm 12.8TB NVMe SSD 1d78 710a D7436 U.2 15mm 15.36TB NVMe SSD + 1d78 7143 D7556 U.2 15mm 1.6TB dual port NVMe SSD + 1d78 7144 D7536 U.2 15mm 1.92TB dual port NVMe SSD + 1d78 7145 D7556 U.2 15mm 3.2TB dual port NVMe SSD + 1d78 7146 D7536 U.2 15mm 3.84TB dual port NVMe SSD + 1d78 7147 D7556 U.2 15mm 6.4TB dual port NVMe SSD + 1d78 7148 D7536 U.2 15mm 7.68TB dual port NVMe SSD + 1d78 7149 D7556 U.2 15mm 12.8TB dual port NVMe SSD + 1d78 714a D7536 U.2 15mm 15.36TB dual port NVMe SSD 1d78 7202 Aliflash V2 U.2 15mm 1.92TB NVMe SSD 1d78 7204 Aliflash V2 U.2 15mm 3.84TB NVMe SSD 1d78 7208 Aliflash V2 U.2 15mm 7.68TB NVMe SSD @@ -26013,6 +26616,7 @@ 0102 Codensity D408 PCIe Gen4 NVMe SSD 0202 Codensity T408 Video Encoding-Decoding Accelerator 0401 Quadra Video Processing Unit (VPU) + 0411 Quadra Video Processing Unit (VPU) Virtual Function # nee Fuzhou Rockchip Electronics Co., Ltd 1d87 Rockchip Electronics Co., Ltd 0100 RK3399 PCI Express Root Port @@ -26023,7 +26627,7 @@ 3588 RK3588 1d89 YEESTOR Microelectronics Co., Ltd 0280 PCIe NVMe SSD -1d8f Enyx +1d8f Exegy 1d92 Abaco Systems Inc. 1d93 YADRO 1d94 Chengdu Haiguang IC Design Co., Ltd. @@ -26075,8 +26679,11 @@ 1d9b Meta Platforms, Inc. 0010 Networking DOM Engine 0011 IO Bridge + 0013 Host Network Interface + 0400 Time Card 1da1 Teko Telecom S.r.l. 1da2 Sapphire Technology Limited + 475d Radeon RX 7800 XT [PULSE] e26a Radeon R7 250 e445 Sapphire Radeon RX 6700 1da3 Habana Labs Ltd. @@ -26089,6 +26696,9 @@ 1010 HL-2000 AI Training Accelerator [Gaudi secured] # PCIe accelerator card for Deep Learning training tasks 1020 Gaudi2 AI Training Accelerator + 1060 Gaudi3 AI Training Accelerator + 1063 Gaudi3 AI Training Accelerator Add-In Family + 1da3 1063 HL-338 Gaudi3 AI Accelerator PCIe Add-In Card 1da8 Corigine, Inc. 3800 Network Flow Processor 3800 3803 Network Flow Processor 3800 Virtual Function @@ -26117,12 +26727,16 @@ dc36 LDMA Controller [X100 Series] dc38 LSD_CFG Controller [X100 Series] dc3a SWITCH Controller [X100 Series] + dc3b MAC Controller [D3000M Series] dc3c GPU_DMA Controller [X100 Series] + dc3e DCController [E2000 Series] + dc3f SATA Controller [D3000M Series] 1dbb NGD Systems, Inc. 1dbe INNOGRIT Corporation - 5216 NVMe SSD Controller IG5216 (DRAM-less) - 5220 NVMe SSD Controller IG5220 (DRAM-less) - 5236 NVMe SSD Controller IG5236 + 5208 NVMe SSD Controller IG5208 [Shasta] (DRAM-less) + 5216 NVMe SSD Controller IG5216 [Shasta+] (DRAM-less) + 5220 NVMe SSD Controller IG5220 [RainierQX] (DRAM-less) + 5236 NVMe SSD Controller IG5236 [RainierPC] 1dbe 4001 Dongting-B1 DC SSD M.2 480GB 1dbe 4002 Dongting-B1 DC SSD M.2 960GB 5636 NVMe DC SSD IG5636 @@ -26144,7 +26758,15 @@ 1dbe 3001 Donghu-Z2 DC ZNS SSD U.2 4000GB 1dbe 3002 Donghu-Z2 DC ZNS SSD U.2 8000GB 5666 NVMe SSD Controller IG5666 - 5668 NVMe SSD Controller IG5668 + 5668 NVMe PCIe 5.0 DC SSD + 1dbe 5003 Dongting-N3 DC SSD U.2 3200GB + 1dbe 5004 Dongting-N3 DC SSD U.2 3840GB + 1dbe 5005 Dongting-N3 DC SSD U.2 6400GB + 1dbe 5006 Dongting-N3 DC SSD U.2 7680GB + 1dbe 5007 Dongting-N3 DC SSD U.2 12800GB + 1dbe 5008 Dongting-N3 DC SSD U.2 15360GB + 1dbe 5009 Dongting-N3 DC SSD U.2 25600GB + 1dbe 5010 Dongting-N3 DC SSD U.2 30720GB 5669 NVMe SSD Controller IG5669 [Tacoma] 1dbf Guizhou Huaxintong Semiconductor Technology Co., Ltd 0401 StarDragon4800 PCI Express Root Port @@ -26159,6 +26781,15 @@ 0010 N-10m2 NVMe SSD 0016 N-16 0020 EN-20 BGA NVMe SSD (DRAM-less) + 0030 N-30m2 NVMe SSD + 0036 N-36m2 NVMe SSD + 1200 D1200 NVMe SSD + 3000 N3000 NVMe SSD + 3002 N3002 NVMe SSD + 3602 N3602 NVMe SSD + 4131 A1x NVMe SSD Series + 4432 D2x NVMe SSD Series + 5200 N5200 NVMe SSD 1dd8 AMD Pensando Systems 0002 DSC2 Elba Upstream Port 1dd8 100e Distributed Services Card @@ -26172,6 +26803,10 @@ 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T + 0008 DSC3 Salina Upstream Port + 1dd8 100e Distributed Services Card + 1dd8 5200 DSC3-2Q400 100/200/400G 2-port DDR5 128G eMMC G3 Services Card + 1dd8 5201 POLLARA-1Q400 100/200/400G 1-port Card 1000 DSC Capri Upstream Port 1dd8 4000 Naples 100Gb 2-port QSFP28 x16 8GB 1dd8 4001 Naples 100Gb 2-port QSFP28 x16 4GB @@ -26205,6 +26840,8 @@ 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T + 1dd8 5200 DSC3-2Q400 100/200/400G 2-port DDR5 128G eMMC G3 Services Card + 1dd8 5201 POLLARA-1Q400 100/200/400G 1-port Card 1002 DSC Ethernet Controller 1dd8 100e Distributed Services Card 1dd8 4000 Naples 100Gb 2-port QSFP28 x16 8GB @@ -26227,6 +26864,8 @@ 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T + 1dd8 5200 DSC3-2Q400 100/200/400G 2-port DDR5 128G eMMC G3 Services Card + 1dd8 5201 POLLARA-1Q400 100/200/400G 1-port Card 1003 DSC Ethernet Controller VF 1dd8 100e Distributed Services Card 1dd8 4000 Naples 100Gb 2-port QSFP28 x16 8GB @@ -26249,6 +26888,8 @@ 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T + 1dd8 5200 DSC3-2Q400 100/200/400G 2-port DDR5 128G eMMC G3 Services Card + 1dd8 5201 POLLARA-1Q400 100/200/400G 1-port Card 1004 DSC Management Controller 1dd8 100e Distributed Services Card 1dd8 4000 Naples 100Gb 2-port QSFP28 x16 8GB @@ -26271,6 +26912,8 @@ 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T + 1dd8 5200 DSC3-2Q400 100/200/400G 2-port DDR5 128G eMMC G3 Services Card + 1dd8 5201 POLLARA-1Q400 100/200/400G 1-port Card 1005 DSC NVMe Controller 1dd8 100e Distributed Services Card 1dd8 5001 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card @@ -26283,6 +26926,7 @@ 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T + 1dd8 5200 DSC3-2Q400 100/200/400G 2-port DDR5 128G eMMC G3 Services Card 1006 DSC NVMe Controller VF 1dd8 100e Distributed Services Card 1dd8 5001 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card @@ -26295,6 +26939,7 @@ 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T + 1dd8 5200 DSC3-2Q400 100/200/400G 2-port DDR5 128G eMMC G3 Services Card 1007 DSC Storage Accelerator 1dd8 100e Distributed Services Card 1dd8 4000 Naples 100Gb 2-port QSFP28 x16 8GB @@ -26365,6 +27010,8 @@ 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T + 1dd8 5200 DSC3-2Q400 100/200/400G 2-port DDR5 128G eMMC G3 Services Card + 1dd8 5201 POLLARA-1Q400 100/200/400G 1-port Card 100d DSC Virtio Network Device VF 1dd8 100e Distributed Services Card 1dd8 5001 DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 Services Card @@ -26377,6 +27024,7 @@ 1dd8 500d DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T + 1dd8 5200 DSC3-2Q400 100/200/400G 2-port DDR5 128G eMMC G3 Services Card 1ddd Thorlabs 1de0 Groq 0000 TSP [GroqChip] @@ -26407,7 +27055,18 @@ 1dee Biwin Storage Technology Co., Ltd. 2262 HP EX950 NVMe SSD 2263 HP EX900 NVMe SSD (DRAM-less) + 4121 PCIe 4.0 SP406/416 NVMe SSD + 1dee 0000 NVMe SSD SP416 800G 2.5" U.2 + 1dee 0001 NVMe SSD SP416 1.6T 2.5" U.2 + 1dee 0002 NVMe SSD SP416 3.2T 2.5" U.2 + 1dee 0003 NVMe SSD SP416 6.4T 2.5" U.2 + 1dee 0010 NVMe SSD SP406 960G 2.5" U.2 + 1dee 0011 NVMe SSD SP406 1.92T 2.5" U.2 + 1dee 0012 NVMe SSD SP406 3.84T 2.5" U.2 + 1dee 0013 NVMe SSD SP406 7.68T 2.5" U.2 + 5161 BIWIN NVMe SSD SP506/SP516 5216 KingSpec NX series NVMe SSD (DRAM-less) + 7700 BIWIN NVMe SSD SP50Y/SP51Y 1def Ampere Computing, LLC e005 eMAG PCI Express Root Port 0 e006 eMAG PCI Express Root Port 1 @@ -26595,6 +27254,7 @@ 1028 223d Ent NVMe CM7 U.2 MU 3.2TB 1028 223e Ent NVMe CM7 U.2 MU 1.6TB 002a Exceria Plus G3 NVMe SSD (DRAM-less) + 002b NVMe SSD Controller CD8P 002c NVMe SSD Controller CD8P EDSFF 1028 22bf DC NVMe CD8P E3.S 15.36TB 1028 22c0 DC NVMe CD8P E3.S 7.68TB @@ -26618,6 +27278,10 @@ # JungleCat VU35P Module 1635 JCM35 1e26 Fujitsu Client Computing Limited +# nee Bitmain Technologies Ltd. +1e30 Sophgo + 1684 BM1684 [Sophon Series Deep Learning Accelerator] + 2042 SG2042 Root Complex 1e36 Shanghai Enflame Technology Co. Ltd 0001 T10 [CloudBlazer] 0002 T11 [CloudBlazer] @@ -26649,9 +27313,15 @@ 2263 270PM6, 270PM7 series NVMe SSD 1e3b DapuStor Corporation 0600 NVMe SSD Controller DP600 - 1e3b 0006 Enterprise NVMe SSD U.2 ODP 7.68TB (J5001) + 1e3b 0006 Enterprise NVMe SSD U.2 7.68TB (J5000) + 1e3b 000c Enterprise NVMe SSD U.2 30.72TB (J5060) + 1e3b 000d Enterprise NVMe SSD U.2 61.44TB (J5060) + 1e3b 000e Enterprise NVMe SSD U.2 30.72TB (J5060D) + 1e3b 000f Enterprise NVMe SSD U.2 61.44TB (J5060D) 1e3b 0010 Enterprise NVMe SSD U.2 3.84TB (R5102) 1e3b 0013 Enterprise NVMe SSD U.2 3.20TB (R5302) + 1e3b 0027 Enterprise NVMe SSD U.2 61.44TB (J5060) + 1e3b 0028 Enterprise NVMe SSD U.2 61.44TB (J5060D) 1e3b 0030 Enterprise NVMe SSD U.2 3.84TB (J5100) 1e3b 0031 Enterprise NVMe SSD U.2 7.68TB (J5100) 1e3b 0032 Enterprise NVMe SSD U.2 15.36TB (J5100) @@ -26684,49 +27354,50 @@ 1e3b 0069 Enterprise NVMe SSD U.2 3.20TB (R5301D) 1e3b 006c Enterprise NVMe SSD U.2 1.92TB (R5101) 1e3b 006d Enterprise NVMe SSD U.2 1.60TB (J5301) - 1e3b 00b9 Enterprise NVMe SSD U.2 ODP 25.60TB (R5301)/(J5301) - 1e3b 00be Enterprise NVMe SSD U.2 ODP 30.72TB (R5101)/(J5101) - 1e3b 00c1 Enterprise NVMe SSD U.2 ODP 25.60TB (R5301D)/(J5301D) - 1e3b 00c4 Enterprise NVMe SSD U.2 ODP 30.72TB (R5101D)/(J5101D) - 1e3b 00c7 Enterprise NVMe SSD U.2 ODP 25.60TB (J5300) - 1e3b 00c8 Enterprise NVMe SSD U.2 ODP 30.72TB (J5100) - 1e3b 00c9 Enterprise NVMe SSD U.2 ODP 15.36TB (J5001) - 1e3b 00ca Enterprise NVMe SSD U.2 ODP 3.84TB (J5102) - 1e3b 00cb Enterprise NVMe SSD U.2 ODP 7.68TB (J5102) - 1e3b 00cc Enterprise NVMe SSD U.2 QDP 3.84TB (J5101) - 1e3b 00cd Enterprise NVMe SSD U.2 ODP 7.68TB (J5101) - 1e3b 00ce Enterprise NVMe SSD U.2 QDP 3.84TB (J5101D) - 1e3b 00cf Enterprise NVMe SSD U.2 ODP 7.68TB (J5101D) - 1e3b 00dc Enterprise NVMe SSD U.2 ODP 30.72TB with SAMSUNG 32GB DRAM (J5001) - 1e3b 00dd Enterprise NVMe SSD U.2 ODP 30.72TB with MT 32GB DRAM(J5001) - 1e3b 00de Enterprise NVMe SSD U.2 ODP 15.36TB with SK 16GB DRAM(J5001D) - 1e3b 00df Enterprise NVMe SSD U.2 ODP 30.72TB with SAMSUNG 32GB DRAM(J5001) - 1e3b 00e7 Enterprise NVMe SSD U.2 ODP 30.72TB with MT 32GB DRAM(J5001D) - 1e3b 00e8 Enterprise NVMe SSD U.2 QDP 3.20TB (J5301) - 1e3b 00e9 Enterprise NVMe SSD U.2 ODP 6.40TB (J5301) - 1e3b 00ea Enterprise NVMe SSD U.2 QDP 3.20TB (J5301D) - 1e3b 00eb Enterprise NVMe SSD U.2 ODP 6.40TB (J5301D) - 1e3b 00ec Enterprise NVMe SSD U.2 ODP 30.72TB with MT 32GB DRAM(J5101) - 1e3b 00ed Enterprise NVMe SSD U.2 ODP 30.72TB with MT 32GB DRAM(R5101) - 1e3b 00ee Enterprise NVMe SSD U.2 ODP 15.36B with SK 16GB DRAM(J5101) - 1e3b 00ef Enterprise NVMe SSD U.2 ODP 12.80TB with SK 16GB DRAM(J5301) + 1e3b 00b9 Enterprise NVMe SSD U.2 25.60TB + 1e3b 00be Enterprise NVMe SSD U.2 30.72TB + 1e3b 00c1 Enterprise NVMe SSD U.2 25.60TB + 1e3b 00c4 Enterprise NVMe SSD U.2 30.72TB + 1e3b 00c7 Enterprise NVMe SSD U.2 25.60TB (J5301) + 1e3b 00c8 Enterprise NVMe SSD U.2 30.72TB (J5000) + 1e3b 00c9 Enterprise NVMe SSD U.2 15.36TB (J5000) + 1e3b 00ca Enterprise NVMe SSD U.2 3.84TB (J5102) + 1e3b 00cb Enterprise NVMe SSD U.2 7.68TB (J5102) + 1e3b 00cc Enterprise NVMe SSD U.2 3.84TB (J5101) + 1e3b 00cd Enterprise NVMe SSD U.2 7.68TB (J5101) + 1e3b 00ce Enterprise NVMe SSD U.2 3.84TB (J5101D) + 1e3b 00cf Enterprise NVMe SSD U.2 7.68TB (J5101D) + 1e3b 00dc Enterprise NVMe SSD U.2 30.72TB (J5000) + 1e3b 00dd Enterprise NVMe SSD U.2 30.72TB(J5000) + 1e3b 00de Enterprise NVMe SSD U.2 15.36TB (J5000D) + 1e3b 00df Enterprise NVMe SSD U.2 30.72TB (J5000) + 1e3b 00e7 Enterprise NVMe SSD U.2 30.72TB (J5000D) + 1e3b 00e8 Enterprise NVMe SSD U.2 3.20TB (J5301) + 1e3b 00e9 Enterprise NVMe SSD U.2 6.40TB (J5301) + 1e3b 00ea Enterprise NVMe SSD U.2 3.20TB (J5301D) + 1e3b 00eb Enterprise NVMe SSD U.2 6.40TB (J5301D) + 1e3b 00ec Enterprise NVMe SSD U.2 30.72TB (J5101) + 1e3b 00ed Enterprise NVMe SSD U.2 30.72TB (R5101) + 1e3b 00ee Enterprise NVMe SSD U.2 15.36B (J5101) + 1e3b 00ef Enterprise NVMe SSD U.2 12.80TB (J5301) 1e3b 00f0 Enterprise NVMe SSD U.2 0.40TB (X2900) 1e3b 00f1 Enterprise NVMe SSD U.2 0.80TB (X2900) 1e3b 00f2 Enterprise NVMe SSD U.2 1.60TB (X2900) 1e3b 00f3 Enterprise NVMe SSD U.2 3.20TB (X2900) 1e3b 00f5 Enterprise NVMe SSD U.2 0.40TB (X2900P) 1e3b 00f6 Enterprise NVMe SSD U.2 0.80TB (X2900P) - 0800 DP800 - 1e3b 0001 Enterprise NVMe SSD U.2 QDP 3.84TB(R6100) - 1e3b 0007 Enterprise NVMe SSD U.2 ODP 15.36TB (R6100) + 0800 NVMe SSD Controller DP800 + 1e3b 0001 Enterprise NVMe SSD U.2 3.84TB(R6100) + 1e3b 0007 Enterprise NVMe SSD U.2 15.36TB (R6100) 1e3b 000a Enterprise NVMe SSD U.2 3.20TB (R6300) 1e3b 000d Enterprise NVMe SSD U.2 6.40TB (R6300) 1e3b 0010 Enterprise NVMe SSD U.2 12.80TB (R6300) - 1e3b 0018 Enterprise NVMe SSD U.2 QDP 3.84TB (R6100C) - 1e3b 0019 Enterprise NVMe SSD U.2 ODP 7.68TB (R6100C) + 1e3b 0018 Enterprise NVMe SSD U.2 3.84TB (R6100C) + 1e3b 0019 Enterprise NVMe SSD U.2 7.68TB (R6100C) 1e3b 001a Enterprise NVMe SSD U.2 3.20TB (R6300C) 1e3b 001b Enterprise NVMe SSD U.2 6.40TB (R6300C) - 1e3b 001c Enterprise NVMe SSD U.2 ODP 7.68TB (R6100) + 1e3b 001c Enterprise NVMe SSD U.2 7.68TB (R6100) + 1e3b 001d Enterprise NVMe SSD U.2 3.84TB (R6101) 1098 Haishen3 NVMe SSD 1e3b 0001 Enterprise NVMe SSD U.2 0.8TB (H2100) 1e3b 0002 Enterprise NVMe SSD U.2 0.96TB (H2200) @@ -26759,16 +27430,62 @@ 1e3b 008b Enterprise NVMe SSD HHHL 1.6TB (H3900) 1e3b 0091 Enterprise NVMe SSD HHHL 0.75TB (H3900) 1333 Haishen5 NVMe SSD + 1e3b 001a Enterprise NVMe SSD E3.S 1T 3.84TB (H5100) + 1e3b 001b Enterprise NVMe SSD E3.S 1T 7.68TB (H5100) + 1e3b 001d Enterprise NVMe SSD E3.S 1T 3.2TB (H5300) + 1e3b 001e Enterprise NVMe SSD E3.S 1T 6.4TB (H5300) + 1e3b 0031 Enterprise NVMe SSD U2 3.84TB (H5100) + 1e3b 0032 Enterprise NVMe SSD U2 7.68TB (H5100) + 1e3b 0033 Enterprise NVMe SSD U2 15.36TB (H5100) + 1e3b 0034 Enterprise NVMe SSD U2 3.2TB (H5300) + 1e3b 0035 Enterprise NVMe SSD U2 6.4TB (H5300) + 1e3b 0036 Enterprise NVMe SSD U2 12.8TB (H5300) + 1e3b 004a Enterprise NVMe SSD E3.S 1T 7.68TB (H5100) + 1e3b 004b Enterprise NVMe SSD E3.S 1T 15.36TB (H5100) + 1e3b 004c Enterprise NVMe SSD E3.S 1T 6.4TB (H5300) + 1e3b 004d Enterprise NVMe SSD E3.S 1T 12.8TB (H5300) 1e3b 0081 Enterprise NVMe SSD U.2 3.84TB (H5100) 1e3b 0082 Enterprise NVMe SSD U.2 7.68TB (H5100) 1e3b 0084 Enterprise NVMe SSD U.2 3.2TB (H5300) 1e3b 0085 Enterprise NVMe SSD U.2 6.4TB (H5300) + 1e3b 008a Enterprise NVMe SSD U.2 7.68TB (H5100) + 1e3b 008b Enterprise NVMe SSD U.2 15.36TB (H5100) + 1e3b 008c Enterprise NVMe SSD U.2 30.72TB (H5100) + 1e3b 008d Enterprise NVMe SSD U.2 6.4TB (H5300) + 1e3b 008e Enterprise NVMe SSD U.2 12.8TB (H5300) + 1e3b 008f Enterprise NVMe SSD U.2 25.6TB (H5300) + 1e3b 0090 Enterprise NVMe SSD E1.S 9.5mm 3.84TB (H5100) + 1e3b 0091 Enterprise NVMe SSD E1.S 9.5mm 7.68TB (H5100) + 1e3b 0092 Enterprise NVMe SSD E1.S 9.5mm 3.2TB (H5300) + 1e3b 0093 Enterprise NVMe SSD E1.S 9.5mm 6.4TB (H5300) + 1e3b 0094 Enterprise NVMe SSD E1.S 9.5mm 3.84TB (H5100) + 1e3b 0096 Enterprise NVMe SSD E1.S 9.5mm 3.2TB (H5300) + 1e3b 0098 Enterprise NVMe SSD E1.S 9.5mm 7.68TB (H5100) + 1e3b 0099 Enterprise NVMe SSD E1.S 9.5mm 6.4TB (H5300) + 1e3b 00f0 Enterprise NVMe SSD U2 Mold + 3001 Ethernet Controller DN200 for 10GbE SFP+ + 1e3b 3001 Ethernet Network Adapter DN200-X1V for 10GbE SFP+ 2-port + 3002 Ethernet Controller DN200 Series Virtual Function + 300c Ethernet RAID Combo Controller DN200C for 1GbE + 1e3b 300c Ethernet RAID Combo Adapter DN200C-G2V for 1GbE 4-port + 300d Ethernet RAID Combo Controller DN200C Series Virtual Function + 5001 RAID Controller DP808A + 5002 RAID Controller DP808AL + 50b0 Flexraid6 BootRaid - Type I + 50b1 Flexraid6 BootRaid - Type II + 1e3b 0001 Flexraid6 BootRAID F6100 + 50c1 Combo Card of BootRaid and Ethernet - Type I + 50c2 Combo Card of BootRaid and Ethernet - Type II + 50d0 NVME RAID Card DP800 + 50d1 Flexraid6 NVMeRAID 1e3d Burlywood, Inc 1e43 MaxLinear Inc 8904 MxL8904 8906 MxL8906 8908 MxL8908 1e44 Valve Software +# the actual PCI-SIG member is Elektrobit, a daughter company of Continental +1e48 Continental 1e49 Yangtze Memory Technologies Co.,Ltd 0001 ZHITAI PC005 NVMe SSD 0021 ZHITAI TiPro5000 NVMe SSD @@ -26776,11 +27493,12 @@ 0071 ZHITAI TiPlus7100 # YMTC 1001 PC005 NVMe SSD - 1011 PC210 NVMe SSD - 1013 PC210 NVMe SSD - 1031 PC300 NVMe SSD (DRAM-less) - 1033 PC300 NVMe SSD (DRAM-less) - 1071 PC411 NVMe SSD (DRAM-less) + 1011 PC210 M.2 2280 NVMe SSD + 1013 PC210 M.2 2242 NVMe SSD + 1031 PC300 M.2 2280 NVMe SSD (DRAM-less) + 1033 PC300 M.2 2242 NVMe SSD (DRAM-less) + 1071 PC411 M.2 2280 NVMe SSD (DRAM-less) + 1073 PC411 M.2 2242 NVMe SSD (DRAM-less) 1e4b MAXIO Technology (Hangzhou) Ltd. 1001 NVMe SSD Controller MAP1001 1002 NVMe SSD Controller MAP1002 (DRAM-less) @@ -26793,6 +27511,7 @@ 1e4c GSI Technology 0010 Associative Processing Unit [Leda] 1e4c 0120 SE120 + 0020 Associative Processing Unit [Leda-2] 1e50 IP3 Tech (HK) Limited 1e52 Tenstorrent Inc 401e Wormhole @@ -26815,9 +27534,13 @@ 2864 Hailo-8 AI Processor 1e67 Untether AI 0002 runAI200 AI Inference Accelerator + 0004 speedAI240 AI Inference Accelerator 1e68 Jiangsu Xinsheng Intelligent Technology Co., Ltd 8111 EP2000Pro PCIe 3 NVMe SSD (DRAM-less) 1e6b Axiado Corp. +1e6c Xsight Labs Ltd. + 0001 XLX1A256A Switch ASIC + 0002 XLX2B128A Switch ASIC 1e7b Dataland 1e7c Brainchip Inc bca1 AKD1000 Neural Network Coprocessor [Akida] @@ -26867,6 +27590,7 @@ 2a18 Video Transcode Controller 2a20 Cloud Intelligent Inference and Training Controller 2a22 Cloud Intelligent Inference Controller + 2a30 Cloud Video Transcode Controller 1ea7 Intelliprop, Inc 223a Typhon+ PCIe to Gen-Z Bridge 224a IPA-PE224A CXL to Gen-Z Bridge [Sphinx] @@ -26876,7 +27600,10 @@ 1eac Quectel Wireless Solutions Co., Ltd. 1001 EM120R-GL LTE Modem 1002 EM160R-GL LTE Modem + 2001 EM120R-GL 1eae XFX Limited +1eb0 Shenzhen Electrical Appliances CO. + 1901 NVMe SSD Controller (DRAM-less) 1eb1 VeriSilicon Inc 1001 Video Accelerator 1eb4 Quantum Nebula Microelectronics Technology Co.,Ltd. @@ -26908,7 +27635,8 @@ 1ec6 0062 VG1800 1ec6 0063 VG1000 020f SG100 vGPU -1ec8 Innosilicon Co Ltd +# nee Innosilicon Co Ltd +1ec8 Beijing Fantasy Technology Co., Ltd. 8800 Fantasy I 1ec8 12a2 Fantasy I Device 8810 Fantasy I @@ -26928,10 +27656,7 @@ 2283 Patriot P300 NVMe SSD (DRAM-less) 1ed2 FuriosaAI, Inc. 0000 Warboy - 1111 RNGD - 0000 1111 RNGD-S - 0000 2222 RNGD VF - 0000 3333 RNGD-S VF + 0001 RNGD 2222 RNGD-S 1ed3 Yeston 1ed5 Moore Threads Technology Co.,Ltd @@ -26954,12 +27679,16 @@ 0222 MTT S3000 1ed5 0001 C3150 0223 G2S4 + 0225 MTT S3000E + 1ed5 0001 C3150 0251 G2N10 02ff MTT HDMI/DP Audio 0300 MTT S90 Engineering Sample 0301 MTT S90 + 0313 MTT X500 0323 MTT S4000 0327 MTT S4000 + 0328 MTT S4000 03ff MTT HDMI/DP Audio 1ed8 Digiteq Automotive 0101 FG4 PCIe Frame Grabber (T100) @@ -26972,7 +27701,106 @@ 1ee1 000b Airglow A430 NVMe SSD U.2 4.8TB 1ee1 0012 Airglow Z400 NVMe ZNS SSD U.2 5.76TB 1ee4 PETAIO INC - 1180 P8118 U.2 Single Port SSD + 1180 PETA8118 NVMe SSD Series + 1ee4 0015 NVMe SSD U.2 1.92TB (P8118E) + 1ee4 0016 NVMe SSD U.2 3.84TB (P8118E) + 1ee4 0017 NVMe SSD U.2 7.68TB (P8118E) + 1ee4 0025 NVMe SSD U.2 1.6TB (P8118E) + 1ee4 0026 NVMe SSD U.2 3.2TB (P8118E) + 1ee4 0027 NVMe SSD U.2 6.4TB (P8118E) + 1ee4 0115 NVMe SSD U.2 1.92TB (P8118Z) + 1ee4 0116 NVMe SSD U.2 3.84TB (P8118Z) + 1ee4 0117 NVMe SSD U.2 7.68TB (P8118Z) + 1ee4 0125 NVMe SSD U.2 1.6TB (P8118Z) + 1ee4 0126 NVMe SSD U.2 3.2TB (P8118Z) + 1ee4 0127 NVMe SSD U.2 6.4TB (P8118Z) + 1ee4 0215 NVMe SSD U.2 1.92TB (P8118X) + 1ee4 0216 NVMe SSD U.2 3.84TB (P8118X) + 1ee4 0217 NVMe SSD U.2 7.68TB (P8118X) + 1ee4 0225 NVMe SSD U.2 1.6TB (P8118X) + 1ee4 0226 NVMe SSD U.2 3.2TB (P8118X) + 1ee4 0227 NVMe SSD U.2 6.4TB (P8118X) + 1ee4 0315 NVMe SSD U.2 1.92TB (P8118E4) + 1ee4 0316 NVMe SSD U.2 3.84TB (P8118E4) + 1ee4 0317 NVMe SSD U.2 7.68TB (P8118E4) + 1ee4 0325 NVMe SSD U.2 1.6TB (P8118E4) + 1ee4 0326 NVMe SSD U.2 3.2TB (P8118E4) + 1ee4 0327 NVMe SSD U.2 6.4TB (P8118E4) + 1ee4 0415 NVMe SSD U.2 1.92TB (P8118Z3) + 1ee4 0416 NVMe SSD U.2 3.84TB (P8118Z3) + 1ee4 0417 NVMe SSD U.2 7.68TB (P8118Z3) + 1ee4 0425 NVMe SSD U.2 1.6TB (P8118Z3) + 1ee4 0426 NVMe SSD U.2 3.2TB (P8118Z3) + 1ee4 0427 NVMe SSD U.2 6.4TB (P8118Z3) + 1ee4 3013 NVMe SSD AIC 480GB (P8118E) + 1ee4 3014 NVMe SSD AIC 960GB (P8118E) + 1ee4 3015 NVMe SSD AIC 1.92TB (P8118E) + 1ee4 3016 NVMe SSD AIC 3.84TB (P8118E) + 1ee4 3017 NVMe SSD AIC 7.68TB (P8118E) + 1ee4 3025 NVMe SSD AIC 1.6TB (P8118E) + 1ee4 3026 NVMe SSD AIC 3.2TB (P8118E) + 1ee4 3027 NVMe SSD AIC 6.4TB (P8118E) + 1ee4 3113 NVMe SSD AIC 480GB (P8118Z) + 1ee4 3114 NVMe SSD AIC 960GB (P8118Z) + 1ee4 3115 NVMe SSD AIC 1.92TB (P8118Z) + 1ee4 3116 NVMe SSD AIC 3.84TB (P8118Z) + 1ee4 3117 NVMe SSD AIC 7.68TB (P8118Z) + 1ee4 3125 NVMe SSD AIC 1.6TB (P8118Z) + 1ee4 3126 NVMe SSD AIC 3.2TB (P8118Z) + 1ee4 3127 NVMe SSD AIC 6.4TB (P8118Z) + 1ee4 3213 NVMe SSD AIC 480GB (P8118X) + 1ee4 3214 NVMe SSD AIC 960GB (P8118X) + 1ee4 3215 NVMe SSD AIC 1.92TB (P8118X) + 1ee4 3216 NVMe SSD AIC 3.84TB (P8118X) + 1ee4 3217 NVMe SSD AIC 7.68TB (P8118X) + 1ee4 3225 NVMe SSD AIC 1.6TB (P8118X) + 1ee4 3226 NVMe SSD AIC 3.2TB (P8118X) + 1ee4 3227 NVMe SSD AIC 6.4TB (P8118X) + 1ee4 abcd NVMe SSD U.2 + 1181 PETA8118 NVMe E1S Series + 1ee4 2015 NVMe SSD E1.S 1.92TB (P8118E) + 1ee4 2016 NVMe SSD E1.S 3.84TB (P8118E) + 1ee4 2017 NVMe SSD E1.S 7.68TB (P8118E) + 1ee4 2025 NVMe SSD E1.S 1.6TB (P8118E) + 1ee4 2026 NVMe SSD E1.S 3.2TB (P8118E) + 1ee4 2027 NVMe SSD E1.S 6.4TB (P8118E) + 1ee4 2115 NVMe SSD E1.S 1.92TB (P8118Z) + 1ee4 2116 NVMe SSD E1.S 3.84TB (P8118Z) + 1ee4 2117 NVMe SSD E1.S 7.68TB (P8118Z) + 1ee4 2125 NVMe SSD E1.S 1.6TB (P8118Z) + 1ee4 2126 NVMe SSD E1.S 3.2TB (P8118Z) + 1ee4 2127 NVMe SSD E1.S 6.4TB (P8118Z) + 1ee4 2215 NVMe SSD E1.S 1.92TB (P8118X) + 1ee4 2216 NVMe SSD E1.S 3.84TB (P8118X) + 1ee4 2217 NVMe SSD E1.S 7.68TB (P8118X) + 1ee4 2225 NVMe SSD E1.S 1.6TB (P8118X) + 1ee4 2226 NVMe SSD E1.S 3.2TB (P8118X) + 1ee4 2227 NVMe SSD E1.S 6.4TB (P8118X) + 1182 PETA8118 NVMe M2 Series + 1ee4 1013 NVMe SSD M.2 480GB (P8118E) + 1ee4 1014 NVMe SSD M.2 960GB (P8118E) + 1ee4 1015 NVMe SSD M.2 1.92TB (P8118E) + 1ee4 1016 NVMe SSD M.2 3.84TB (P8118E) + 1ee4 1023 NVMe SSD M.2 400GB (P8118E) + 1ee4 1024 NVMe SSD M.2 800GB (P8118E) + 1ee4 1025 NVMe SSD M.2 1.6TB (P8118E) + 1ee4 1026 NVMe SSD M.2 3.2TB (P8118E) + 1ee4 1113 NVMe SSD M.2 480GB (P8118Z) + 1ee4 1114 NVMe SSD M.2 960GB (P8118Z) + 1ee4 1115 NVMe SSD M.2 1.92TB (P8118Z) + 1ee4 1116 NVMe SSD M.2 3.84TB (P8118Z) + 1ee4 1123 NVMe SSD M.2 400GB (P8118Z) + 1ee4 1124 NVMe SSD M.2 800GB (P8118Z) + 1ee4 1125 NVMe SSD M.2 1.6TB (P8118Z) + 1ee4 1126 NVMe SSD M.2 3.2TB (P8118Z) + 1ee4 1213 NVMe SSD M.2 480GB (P8118X) + 1ee4 1214 NVMe SSD M.2 960GB (P8118X) + 1ee4 1215 NVMe SSD M.2 1.92TB (P8118X) + 1ee4 1216 NVMe SSD M.2 3.84TB (P8118X) + 1ee4 1223 NVMe SSD M.2 400GB (P8118X) + 1ee4 1224 NVMe SSD M.2 800GB (P8118X) + 1ee4 1225 NVMe SSD M.2 1.6TB (P8118X) + 1ee4 1226 NVMe SSD M.2 3.2TB (P8118X) 1ee9 SUSE LLC 1eec Viscore Technologies Ltd 0102 VSE250231S Dual-port 10Gb/25Gb Ethernet PCIe @@ -27017,6 +27845,16 @@ 1ef7 Shenzhen Gunnir Technology Development Co., Ltd 1efb Flexxon Pte Ltd 1eff Rebellions Inc. + 1020 RBLN-CA2 (PF) + 1021 RBLN-CA2 (VF) + 1110 RBLN-CA11 (PF) + 1111 RBLN-CA11 (VF) + 1120 RBLN-CA12 (PF) + 1121 RBLN-CA12 (VF) + 1220 RBLN-CA22 (PF) + 1221 RBLN-CA22 (VF) + 1250 RBLN-CA25 (PF) + 1251 RBLN-CA25 (VF) 1f02 Beijing Dayu Technology 1f03 Shenzhen Shichuangyi Electronics Co., Ltd 1202 MAP1202-Based NVMe SSD (DRAM-less) @@ -27028,6 +27866,8 @@ 5636 IG5636-Based NVMe SSD 1f0a Motorcomm Microelectronics. 6801 YT6801 Gigabit Ethernet Controller +1f0d DeGirum Corp. + 0100 AI Accelerator [ORCA] 1f0f NebulaMatrix Technology 1041 D1055AS vDPA Ethernet Controller 1f0f 0001 D1055AS vDPA Ethernet Controller @@ -27068,10 +27908,21 @@ # XConn XC50256 CXL2.0/PCIe5.0 switch c500 XC50256 1f17 Zettastone Technology +1f18 c-payne GmbH + 0001 PCIe gen4 Switch Backplane 5x x16 - 4W + 0002 PCIe gen4 Switch Backplane 4x x16 - 5W + 0101 PCIe gen5 MCIO Switch 100-Lane + 0102 PCIe gen5 MCIO Switch 52-Lane +1f1c Sophgo Technologies Inc. + 1686 BM1684X [Sophon Series Deep Learning Accelerator] 1f24 xFusion Digital Technologies Co., Ltd. 1058 EP500/EP600 NVMe SSD 1f24 1114 EP500 NVMe SSD(RI) 1f24 1115 EP600 NVMe SSD(MU) +1f2e AzurEngine Technologies + 00a1 [AE] AzureBlade Accelerator + 00b1 [AE] AzureBlade Accelerator + 00c1 [AE] AzureBlade Accelerator 1f2f China Mobile (Hangzhou) Information Technology Co.Ltd. 1513 DERA MENG NVMe Controller 1f2f 6113 KM660 U.2 1.6TB NVMe SSD @@ -27129,14 +27980,29 @@ 5236 PCIe 4 INNOGRIT based NVMe SSD 5765 PCIe 3 NVMe SSD (DRAM-less) 1f44 VVDN Technologies Private Limited -# YUSUR Technology Co., Ltd. -1f47 YUSUR Tech +1f47 YUSUR Technology Co., Ltd. + 1001 FLEXFLOW-2200T Ethernet Controller + 1f47 0001 FLEXFLOW-2200T Ethernet 10G 2P + 1f47 0002 FLEXFLOW-2200T Ethernet 25G 2P + 1f47 0003 FLEXFLOW-2200T Ethernet 40G 2P + 1f47 0004 FLEXFLOW-2200T Ethernet 100G 1P + 1f47 0005 FLEXFLOW-2200T Ethernet 100G 2P + 1f47 0006 FLEXFLOW-2200T Ethernet 10G 2P + 1f47 0007 FLEXFLOW-2200T Ethernet 25G 2P + 1f47 0008 FLEXFLOW-2200T Ethernet 40G 2P + 1f47 0009 FLEXFLOW-2200T Ethernet 100G 1P + 1f47 000a FLEXFLOW-2200T Ethernet 100G 2P + 1003 FLEXFLOW-2200T Ethernet Controller MGMT Function # Network Accelerating Card 2018 DPU Card # Network Accelerating Card 2020 DPU 1f4b Axera Semiconductor Co., Ltd 1f52 MangoBoost Inc. + 1008 Mango GPUBoost - RDMA + 1020 Mango NetworkBoost - TCP + 1022 Mango StorageBoost - NTI + 1023 Mango StorageBoost - NTT 1f56 SAPEON Inc. 1f60 Accelecom 0001 XELE-NIC 25K5 @@ -27147,13 +28013,28 @@ 1051 metaFusion DPU Physical Function 1052 metaFusion DPU Virtual Function 1059 metaFusion DPU SoC Network Interface - 1111 metaScale SmartNIC Physical Function + 1111 YSA-100 RDMA Ethernet Network Controller + 1bd4 00b2 O1E2YYSA100 + 1ff9 00b1 ENFY1102-QP2 1112 metaScale SmartNIC Virtual Function 1151 metaVisor DPU Physical Function 1152 metaVisor DPU Virtual Function +1f6c CIX Technology Group Co., Ltd. + 0001 CIX P1 CD8180 PCI Express Root Port +1f73 Shenzhen Quanxing Tech Co., Ltd. +1f7a Efinix, Inc. + 0100 Default ID for Titanium FPGA PCIe Interface (AXI) +1f82 d-Matrix + 0011 Corsair [DMX 1000 Series] +1f99 Shenzhen Techwinsemi Technology Co., Ltd. +1f9d Axelera AI + 1100 Metis AIPU (rev 02) + 11aa Metis AIPU (rev 01) 1faa Hexaflake (Shanghai) Information Technology Co., Ltd. 0c10 Compass C10 PF 0c11 Compass C10 VF + 0c80 Compass2 C80 PF + 0c81 Compass2 C80 VF 1fab Unifabrix Ltd. 0000 Nexus Alpha IVPU 0100 NoX Gamma @@ -27253,6 +28134,9 @@ 1fd4 SUNIX Co., Ltd. 0001 Matrix multiport serial adapter 1999 Multiport serial controller +1fdd Wuqi Microelectronics Co., Ltd. + 0001 WQ9201 802.11ax PCIe Wireless Network Adapter + 1001 WQ9301 802.11ax PCIe Wireless Access Points 1fde Kratos Defense & Security Solutions, Inc. 1125 OpenEdge 1125P 2500 OpenEdge 2500P @@ -27260,6 +28144,8 @@ 1010 AWM 1 2000 AWM 2 2010 AWM 2-M +1fe1 Beijing ESWIN Computing Technology Co., Ltd. + 2030 EIC7700 Root Complex 1fe4 HippStor Technology 1600 HP600 Series NVMe SSD 1fe4 0075 Enterprise NVMe SSD U.2 3.84TB(HP610) @@ -27267,7 +28153,8 @@ 1fe4 0077 Enterprise NVMe SSD U.2 6.40TB(HP630) 1fe4 0078 Enterprise NVMe SSD U.2 3.20TB(HP630) 1fe9 MemryX -# LinkData Technology (Tianjin) Co., LTD + 0100 MX3 +# Linkdata Technology (Tianjin) Co., LTD 1ff2 Linkdata 10a1 NIC1160 Ethernet Controller Family 1ff2 0c11 10GE Ethernet Adapter 1160-2X @@ -27304,9 +28191,49 @@ 5818 A5818 2036 Netforward Microelectronics Co., Ltd. 1618 NF1618 PCI Express Ethernet Controller + 2036 0860 NF1618 Family NX860 (2*25GE) + 2036 0861 NF1618 Family NX861 (4*25GE) + 2036 0862 NF1618 Family NX862 (2*50GE) + 2036 0863 NF1618 Family NX863 (2*100GE) + 2036 0864 NF1618 Family NX864 (1*200GE) 1619 NF1618 Family Virtual Function 2046 GXMICRO Technology (Shanghai) Co., Ltd. 2048 Beijing SpaceControl Technology Co.Ltd +205c Zhejiang VMing Semiconductor Co., Ltd. + 1515 EP9410 U.2 3.84TB NVME SSD + 1516 EP9410 U.2 7.68TB NVME SSD +2061 Unis Flash Memory + 4000 E4000 controller + 4100 E4100 controller +2063 Hubei Yangtze Mason Semiconductor Technology Co., Ltd. + 1406 ME7000 NVMe SSD +206d GigaIO Networks, Inc. +207d HRDT + 0612 SATA BootRAID Controller +208a MICIUS Laboratory +2094 Shenzhen Wodposit Electronics Co., Ltd. + 1281 WPBSNM8-256GTP + 1282 WPSBNM8-512GTP + 1283 WPBSNM8-1TTP + 1284 WPBSNM8-256GMP + 1285 WPBSNM8-512GMP + 1286 WPBSNM8-2TMP + 1287 WPBSNM8-1TMP + 1661 WPBSN4M8-512GMP + 1662 WPBSN4M8-1TMP + 1663 WPBSN4M8-2TMP +2096 Kaitian Information Technology Co., Ltd. + 5401 KCP54(01) 2280 PCIe G4 x4 TLCKCP54(01) 2280 PCIe G4 x4 TLC + 5402 KCP54(02) 2280 PCIe G4 x4 TLC + 5403 KCP54(03) 2280 PCIe G4 x4 TLC + 5404 KCP54(04) 2280 PCIe G4 x4 TLC +209b BitIntelligence Technology + 1000 TCU Family - TCU-1 +209f Mobilint, Inc. +20a7 EEVengers Inc. +20a9 LDA Technologies Ltd. + 1008 NEOTAPX FPGA Accelerator Card + 1104 NEOTAPX FPGA Timing Synchronization Card 20f4 TRENDnet 2116 ZyDAS Technology Corp. 21b4 Hunan Goke Microelectronics Co., Ltd @@ -27317,38 +28244,46 @@ 1200 NVMe Streamer EP ERD 2304 Colorgraphic Communications Corp. 2321 Bruker AXS Inc. + 0002 Hi-Star PCI Interface 2348 Racore 2010 8142 100VG/AnyLAN 256c Graphics Technology (HK) Co., Ltd. 006d HS610 2646 Kingston Technology Company, Inc. 0010 HyperX Predator PCIe AHCI SSD - 2262 KC2000/KC2500 NVMe SSD SM2262EN - 2263 A2000 NVMe SSD SM2263EN - 5008 A1000/U-SNS8154P3 x2 NVMe SSD - 500a DC1000B NVMe SSD E12DC - 500b DC1000M NVMe SSD SM2270 + 2262 KC2000/KC2500 NVMe SSD [SM2262EN] + 2263 A2000 NVMe SSD [SM2263EN] + 5008 A1000/U-SNS8154P3 x2 NVMe SSD [E8] + 500a DC1000B NVMe SSD [E12DC] + 500b DC1000M NVMe SSD [SM2270] 500c OM8PCP Design-In PCIe 3 NVMe SSD (DRAM-less) 500d OM3PDP3 NVMe SSD - 500e NV1 NVMe SSD E13T (DRAM-less) - 500f NV1 NVMe SSD SM2263XT (DRAM-less) + 500e NV1 NVMe SSD [E13T] (DRAM-less) + 500f NV1 NVMe SSD [SM2263XT] (DRAM-less) 5010 OM8SBP NVMe PCIe SSD (DRAM-less) - 5012 DC1500M NVMe SSD SM2270 - 5013 KC3000/FURY Renegade NVMe SSD E18 + 5012 DC1500M NVMe SSD [SM2270] + 5013 KC3000/FURY Renegade NVMe SSD [E18] 5014 OM8SEP4 Design-In PCIe 4 NVMe SSD (TLC) (DRAM-less) - 5016 OM3PGP4 NVMe SSD - 5017 NV2 NVMe SSD SM2267XT (DRAM-less) - 5019 NV2 NVMe SSD E21T (DRAM-less) + 5016 OM3PGP4 NVMe SSD (DRAM-less) + 5017 NV2 NVMe SSD [SM2267XT] (DRAM-less) + 5018 OM8SFP4 PCIe 4 NVMe SSD (DRAM-less) + 5019 NV2 NVMe SSD [E21T] (DRAM-less) # 128GB 501a OM8PGP4 Design-In PCIe 4 NVMe SSD (TLC) (DRAM-less) 501b OM8PGP4 NVMe PCIe SSD (DRAM-less) - 501c NV2 NVMe SSD E19T (DRAM-less) - 501d NV2 NVMe SSD TC2200 (DRAM-less) - 501f FURY Renegade NVMe SSD with heatsink + 501c NV2 NVMe SSD [E19T] (DRAM-less) + 501d NV2 NVMe SSD [TC2200] (DRAM-less) + 501e OM3PGP4 NVMe SSD (DRAM-less) + 501f FURY Renegade NVMe SSD + Heatsink [E18] 5021 OM8SEP4 Design-In PCIe 4 NVMe SSD (QLC) (DRAM-less) 5022 OM8PGP4 Design-In PCIe 4 NVMe SSD (QLC) (DRAM-less) - 5023 NV2 NVMe SSD SM2269XT (DRAM-less) - 5024 DC2000B NVMe SSD E18DC + 5023 NV2 NVMe SSD [SM2269XT] (DRAM-less) + 5024 DC2000B NVMe SSD [E18DC] + 5025 NV3 NVMe SSD [TC2201] (DRAM-less) + 5026 NV3 NVMe SSD [E21T] (DRAM-less) + 5027 NV3 NVMe SSD [E27T] (DRAM-less) + 5028 NV3 NVMe SSD [SM2268XT2] (DRAM-less) + 502c DC3000ME NVMe SSD [SC5] 270b Xantel Corporation 270f Chaintech Computer Co. Ltd 2711 AVID Technology Inc. @@ -27357,8 +28292,10 @@ 6e61 OHCI USB 1.1 controller 2a15 3D Vision(???) 2a18 Video Transcode Controller + 2a22 Video Transcode Controller 2bd8 ROPEX Industrie-Elektronik GmbH 3000 Hansol Electronics Inc. +30c9 Luxvisions Innovation Technology Ltd. 3100 Dynabook Inc. 3112 Satelco Ingenieria S.A. 3130 AUDIOTRAK @@ -27523,6 +28460,13 @@ 7073 CH356 PCI Quad Serial and Parallel Ports Controller 7173 CH355 PCI Quad Serial Port Controller 434e Cornelis Networks + 0001 CN5000 HFI Silicon, Dual Port, BGA [discrete] + 434e 0001 CN5000 HFI Adapter, Single Port, QSFP, x16 PCIe Gen 5, Air-Cooled + 434e 0002 CN5000 HFI Adapter, Dual Port, QSFP-DD, x16 PCIe Gen 5, Air-Cooled + 434e 0003 CN5000 HFI Adapter, Single Port, QSFP, x16 PCIe Gen 5, Air-Cooled, Thermally Enhanced + 434e 0004 CN5000 HFI Adapter, Single Port, QSFP, x16 PCIe Gen 5, Conduction-Cooled + 0002 CN6000 HFI Silicon, Dual Port, BGA [discrete] + 8001 CN5000 Switch Silicon, 48 Port, BGA 4444 Internext Compression Inc 0016 iTVC16 (CX23416) Video Decoder 0070 0003 WinTV PVR 250 @@ -27947,9 +28891,10 @@ 8e40 2300E Graphics Processor 8e48 Matrix [Chrome S25 / S27] 5333 0130 Chrome S27 256M DDR2 + 9020 86C920 [Chrome 460 ESV] 9043 Chrome 430 GT 9045 Chrome 430 ULP / 435 ULP / 440 GTX - 9060 Chrome 530 GT + 9060 Chrome 530 GT / 5400E # Found in VIA Embedded uH4 graphics card 9070 Chrome 5400EW 9102 86C410 [Savage 2000] @@ -28080,6 +29025,8 @@ 0000 HTLv-1 / HTLv-2 / HTLv-13 / HTLv-23 0011 HTLv-53 7bde MIDAC Corporation +7f70 Arrow Lake-S PCH CNVi WiFi + 0094 WiFi 6E AX211 160MHz 7fed PowerTV 8008 Quancom Electronic GmbH 0010 WDOG1 [PCI-Watchdog 1] @@ -28087,6 +29034,8 @@ 0015 Clock77/PCI & Clock77/PCIe (DCF-77 receiver) # Wrong ID used in subsystem ID of AsusTek PCI-USB2 PCI card. 807d Asustek Computer, Inc. +8080 Chengdu Storeswift Technology Co., Ltd. + 4016 CX4016A NVMe SSD Controller 8086 Intel Corporation 0007 82379AB 0008 Extended Express System Support Controller @@ -28387,6 +29336,7 @@ 0685 Z490 Chipset LPC/eSPI Controller 0687 Q470 Chipset LPC/eSPI Controller 068d Comet Lake LPC Controller + 068e WM490 Chipset LPC/eSPI Controller 06a3 Comet Lake PCH SMBus Controller 06a4 Comet Lake PCH SPI Controller 06a8 Comet Lake PCH Serial IO UART Host Controller #0 @@ -28395,9 +29345,11 @@ 06ab Comet Lake PCH Serial IO SPI Controller #1 06ac Comet Lake PCI Express Root Port #21 06b0 Comet Lake PCI Express Root Port #9 + 06b8 Comet Lake PCIe Root Port #1 06ba Comet Lake PCI Express Root Port #1 06bb Comet Lake PCI Express Root Port #4 06bd Comet Lake PCIe Port #6 + 06be Comet Lake PCIe Root Port #7 06bf Comet Lake PCIe Port #8 06c0 Comet Lake PCI Express Root Port #17 06c8 Comet Lake PCH cAVS @@ -28421,6 +29373,7 @@ 8086 42a4 Dual Band Wi-Fi 5(802.11ac) Wireless-AC 9462 80MHz 1x1 [Jefferson Peak] 06f9 Comet Lake PCH Thermal Controller 06fb Comet Lake PCH Serial IO SPI Controller #2 + 06fc Comet Lake PCH Integrated Sensor Solution 0700 CE Media Processor A/V Bridge 0701 CE Media Processor NAND Flash Controller 0703 CE Media Processor Media Control Unit 1 @@ -29459,6 +30412,7 @@ 8086 10a6 PRO/1000 PF Quad Port Server Adapter 10a6 82599EB 10-Gigabit Dummy Function 10a7 82575EB Gigabit Network Connection + 15d9 10a7 X10DRW-i 8086 10a8 82575EB Gigabit Riser Card 10a9 82575EB Gigabit Backplane Connection 10b0 82573L PRO/1000 PL Network Connection @@ -29621,6 +30575,8 @@ 1bd4 002f 10G SFP+ DP EP102Fi4A Adapter 1bd4 0032 10G SFP+ DP EP102Fi4 Adapter 1bd4 0067 F102I82599 + 1f3f 0a00 Dual-port 10-Gigabit SFI/SFP+ Network Connection + 4c52 1022 LRES1022PF Dual-port 10Gb Ethernet Bypass Network Adapter 4c52 1024 LR-LINK LRES9804BF Quad-port 10Gb Ethernet Server Adapter 4c52 3002 LRES3002PF Dual-port 10Gb Ethernet Server Adapter for OCP 4c52 3012 LRES3012PF Dual-port 10Gb Ethernet Server Adapter for OCP @@ -29877,7 +30833,9 @@ 125d Ethernet Controller I226-IT 12d1 Ethernet Controller E830-CC for backplane 12d2 Ethernet Controller E830-CC for QSFP + 8086 0001 Ethernet Network Adapter E830-C-Q2 8086 0002 Ethernet Network Adapter E830-C-Q2 for OCP 3.0 + 8086 0003 Ethernet Network Adapter E830-CC-Q1 8086 0004 Ethernet Network Adapter E830-CC-Q1 for OCP 3.0 12d3 Ethernet Controller E830-CC for SFP 8086 0001 Ethernet Network Adapter E830-XXV-2 for OCP 3.0 @@ -29887,14 +30845,17 @@ 12d5 Ethernet Controller E830-C for backplane 12d8 Ethernet Controller E830-C for QSFP 12da Ethernet Controller E830-C for SFP - 12dc Ethernet Controller E830-XXV for backplane - 12dd Ethernet Controller E830-XXV for QSFP - 12de Ethernet Controller E830-XXV for SFP + 12dc Ethernet Controller E830-L for backplane + 12dd Ethernet Controller E830-L for QSFP + 12de Ethernet Controller E830-L for SFP + 8086 0001 Ethernet Network Adapter E830-XXV-2 for OCP 3.0 + 8086 0003 Ethernet Network Adapter E830-XXV-2 1360 82806AA PCI64 Hub PCI Bridge 1361 82806AA PCI64 Hub Controller (HRes) 8086 1361 82806AA PCI64 Hub Controller (HRes) 8086 8000 82806AA PCI64 Hub Controller (HRes) 1452 Infrastructure Data Path Function + 1457 NVMe Data Path Function 145c Infrastructure Data Path Function 1460 82870P2 P64H2 Hub PCI Bridge 1461 82870P2 P64H2 I/OxAPIC @@ -29975,6 +30936,7 @@ 1137 023e 1GigE I350 LOM 15d9 0000 AOC-SGP-i4 15d9 0652 Dual Port i350 GbE MicroLP [AOC-CGP-i2] + 15d9 1521 X10DRW-i 17aa 1074 ThinkServer I350-T4 AnyFabric 17aa 4005 I350 Gigabit Network Connection 18d4 0c07 I350 1Gb 2-port RJ45 OCP Mezz Card MOP41-I-1GT2 @@ -30000,7 +30962,8 @@ 4c52 3023 LRES3023PT Quad-port 1Gb Ethernet Server Adapter for OCP 4c52 3041 LRES3041PT Dual-port 1Gb Ethernet Server Adapter for OCP 4c52 4006 LRES4006MT Quad-port 1Gb Ethernet Netwaork Adapter - 4c52 9712 LREC9712HT Dual-port 10Gb Ethernet Network Adapter + 4c52 8001 LRES8001PT Quad-port 1Gb Ethernet Bypass Network Adapter + 4c52 9712 LREC9712HT Dual-port 1Gb Ethernet Bypass Network Adapter 8086 0001 Ethernet Server Adapter I350-T4 8086 0002 Ethernet Server Adapter I350-T2 8086 0003 Ethernet Network Adapter I350-T4 for OCP NIC 3.0 @@ -30017,6 +30980,7 @@ 108e 7b19 Dual Port GbE PCIe 2.0 Low Profile Adapter, MMF 4c52 1006 LRES1006PF Six-port 1Gb Ethernet Network Adapter 4c52 2203 LRES2203PF Dual-port 1Gb Ethernet Network Adapter + 4c52 8030 LRES8030PF Dual-port 1Gb Ethernet Bypass Network Adapter 4c52 9710 LREC9710HF Single-port 1Gb Ethernet Network Adapter 4c52 9712 LREC9712HF Dual-port 1Gb Ethernet Network Adapter 4c52 9714 LREC9714HF Quad-port 1Gb Ethernet Network Adapter @@ -30075,6 +31039,8 @@ 1530 X540 Virtual Function 1531 I210 Gigabit Unprogrammed 1533 I210 Gigabit Network Connection + 1028 0758 I210 PCIe 1Gb 1-Port RJ45 LOM + 1028 0759 I210 PCIe 1Gb 1-Port RJ45 LOM 1028 0b35 I210 Gigabit Network Connection 103c 0003 Ethernet I210-T1 GbE NIC 1059 0180 RD10019 1GbE interface @@ -30111,6 +31077,7 @@ 1059 0150 RD-01068 1GbE interface 1059 0170 RD-01213 10GbE interface 1538 I210 Gigabit Network Connection + 1059 0190 RD20057 M.2 Dual 1GbE-T1 15m 1539 I211 Gigabit Network Connection 153a Ethernet Connection I217-LM 103c 1909 ZBook 15 @@ -30212,6 +31179,7 @@ 4c52 3003 LRES3003PF Quad-port 10Gb Ethernet Server Adapter for OCP 4c52 3007 LRES3007PF Quad-port 10Gb Ethernet Server Adapter for OCP 4c52 3039 LRES3039PF Dual-port 10Gb Ethernet Server Adapter for OCP + 4c52 8003 LRES8003PT Quad-port 10Gb Ethernet Bypass Network Adapter 4c52 9804 LREC9804BF Quad-port 10Gb Ethernet Server Adapter 4c52 9812 LREC9812BF Dual-port 10Gb Ethernet Server Adapter 8086 0000 Ethernet Converged Network Adapter X710 @@ -30333,6 +31301,7 @@ 1590 0000 Ethernet Network Adapter XXV710-2 1590 0253 Ethernet 10/25/Gb 2-port 661SFP28 Adapter 4c52 3017 LRES3017PF Dual-port 25Gb Ethernet Server Adapter for OCP + 4c52 8004 LRES8004PT Quad-port 25Gb Ethernet Bypass Network Adapter 8086 0000 Ethernet Network Adapter XXV710 8086 0001 Ethernet Network Adapter XXV710-2 8086 0002 Ethernet Network Adapter XXV710-2 @@ -30389,6 +31358,7 @@ 8086 000e Ethernet Network Adapter E810-XXV-4T 8086 000f Ethernet 25G 4P E810-XXV-stg Adapter 8086 0010 Ethernet 25G 4P E810-XXV-st Adapter + 8086 0012 Ethernet 25G 4P E810-XXV Adapter 8086 4010 Ethernet Network Adapter E810-XXV-4 8086 4013 Ethernet Network Adapter E810-XXV-4 for OCP 3.0 8086 401c Ethernet Network Adapter E810-XXV-4 for OCP 3.0 @@ -30494,8 +31464,8 @@ 1028 09be Latitude 7410 15ec JHL7540 Thunderbolt 3 USB Controller [Titan Ridge 4C 2018] 1028 09be Latitude 7410 - 15ef JHL7540 Thunderbolt 3 Bridge [Titan Ridge DD 2018] - 15f0 JHL7540 Thunderbolt 3 USB Controller [Titan Ridge DD 2018] + 15ef JHL7440 Thunderbolt 3 Bridge [Titan Ridge DD 2018] + 15f0 JHL7440 Thunderbolt 3 USB Controller [Titan Ridge DD 2018] 15f2 Ethernet Controller I225-LM 4c52 2031 LRES2031PT Single-port 2.5Gb Ethernet Network Adapter 8086 0001 Ethernet Network Adapter I225-T1 @@ -30512,6 +31482,7 @@ 15fc Ethernet Connection (13) I219-V 15ff Ethernet Controller X710 for 10GBASE-T 1014 0000 PCIe3 4-port 10GbE Base-T Adapter + 108e 0000 Quad Port 10GBase-T Adapter - CP 108e 7b1f Quad Port 10GBase-T Adapter - CP 1137 0000 X710TLG GbE RJ45 PCIe NIC 1137 02c1 X710T2LG 2x10 GbE RJ45 PCIe NIC @@ -30744,6 +31715,7 @@ 19d5 Atom Processor C3000 Series ME KT Controller 19d6 Atom Processor C3000 Series ME HECI 3 19d8 Atom Processor C3000 Series HSUART Controller + 19db Atom Processor C3000 Series SD Host Controller 19dc Atom Processor C3000 Series LPC or eSPI 19dd Atom Processor C3000 Series Primary to Side Band (P2SB) Bridge 19de Atom Processor C3000 Series Power Management Controller @@ -30751,6 +31723,7 @@ 19e0 Atom Processor C3000 Series SPI Controller 19e2 Atom Processor C3000 Series QuickAssist Technology 19e3 Atom Processor C3000 Series QuickAssist Technology Virtual Function + 1a12 Timna CPU Graphics 1a1c Ethernet Connection (17) I219-LM 1a1d Ethernet Connection (17) I219-V 1a1e Ethernet Connection (16) I219-LM @@ -33914,6 +34887,7 @@ 2e95 4 Series Chipset HECI Controller 2e96 4 Series Chipset PT IDER Controller 2f00 Xeon E7 v3/Xeon E5 v3/Core i7 DMI2 + 15d9 0821 X10DRW-i 2f01 Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 0 2f02 Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 1 2f03 Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 1 @@ -33942,28 +34916,48 @@ 2f1b Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug 2f1c Xeon E7 v3/Xeon E5 v3/Core i7 IIO Debug 2f1d Xeon E7 v3/Xeon E5 v3/Core i7 PCIe Ring Interface + 15d9 0821 X10DRW-i 2f1e Xeon E7 v3/Xeon E5 v3/Core i7 Scratchpad & Semaphore Registers + 15d9 0821 X10DRW-i 2f1f Xeon E7 v3/Xeon E5 v3/Core i7 Scratchpad & Semaphore Registers + 15d9 0821 X10DRW-i 2f20 Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 0 + 15d9 0821 X10DRW-i 2f21 Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 1 + 15d9 0821 X10DRW-i 2f22 Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 2 + 15d9 0821 X10DRW-i 2f23 Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 3 + 15d9 0821 X10DRW-i 2f24 Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 4 + 15d9 0821 X10DRW-i 2f25 Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 5 + 15d9 0821 X10DRW-i 2f26 Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 6 + 15d9 0821 X10DRW-i 2f27 Xeon E7 v3/Xeon E5 v3/Core i7 DMA Channel 7 + 15d9 0821 X10DRW-i 2f28 Xeon E7 v3/Xeon E5 v3/Core i7 Address Map, VTd_Misc, System Management + 15d9 0821 X10DRW-i 2f29 Xeon E7 v3/Xeon E5 v3/Core i7 Hot Plug + 15d9 0821 X10DRW-i 2f2a Xeon E7 v3/Xeon E5 v3/Core i7 RAS, Control Status and Global Errors + 15d9 0821 X10DRW-i 2f2c Xeon E7 v3/Xeon E5 v3/Core i7 I/O APIC + 15d9 0821 X10DRW-i 2f2e Xeon E7 v3/Xeon E5 v3/Core i7 RAID 5/6 2f2f Xeon E7 v3/Xeon E5 v3/Core i7 RAID 5/6 2f30 Xeon E7 v3/Xeon E5 v3/Core i7 Home Agent 0 + 15d9 0821 X10DRW-i 2f32 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 0 + 15d9 0821 X10DRW-i 2f33 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 1 2f34 Xeon E7 v3/Xeon E5 v3/Core i7 PCIe Ring Interface + 15d9 0821 X10DRW-i 2f36 Xeon E7 v3/Xeon E5 v3/Core i7 R3 QPI Link 0 & 1 Monitoring + 15d9 0821 X10DRW-i 2f37 Xeon E7 v3/Xeon E5 v3/Core i7 R3 QPI Link 0 & 1 Monitoring + 15d9 0821 X10DRW-i 2f38 Xeon E7 v3/Xeon E5 v3/Core i7 Home Agent 1 2f39 Xeon E7 v3/Xeon E5 v3/Core i7 I/O Performance Monitoring 2f3a Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 2 @@ -33989,10 +34983,14 @@ 2f78 Xeon E7 v3/Xeon E5 v3/Core i7 Home Agent 1 Debug 2f79 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Target Address, Thermal & RAS Registers 2f7d Xeon E7 v3/Xeon E5 v3/Core i7 Scratchpad & Semaphore Registers + 15d9 0821 X10DRW-i 2f7e Xeon E7 v3/Xeon E5 v3/Core i7 E3 QPI Link Debug 2f80 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 0 + 15d9 0821 X10DRW-i 2f81 Xeon E7 v3/Xeon E5 v3/Core i7 R3 QPI Link 0 & 1 Monitoring + 15d9 0821 X10DRW-i 2f83 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 0 + 15d9 0821 X10DRW-i 2f85 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 0 Debug 2f86 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 0 Debug 2f87 Xeon E7 v3/Xeon E5 v3/Core i7 QPI Link 0 Debug @@ -34007,11 +35005,16 @@ 2f9a Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit 2f9c Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit 2fa0 Xeon E7 v3/Xeon E5 v3/Core i7 Home Agent 0 + 15d9 0821 X10DRW-i 2fa8 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Target Address, Thermal & RAS Registers 2faa Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder + 15d9 0821 X10DRW-i 2fab Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder + 15d9 0821 X10DRW-i 2fac Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder + 15d9 0821 X10DRW-i 2fad Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder + 15d9 0821 X10DRW-i 2fae Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO Channel 0/1 Broadcast 2faf Xeon E7 v3/Xeon E5 v3/Core i7 DDRIO Global Broadcast 2fb0 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 0 Channel 0 Thermal Control @@ -34045,13 +35048,21 @@ 2fd6 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 2 ERROR Registers 2fd7 Xeon E7 v3/Xeon E5 v3/Core i7 Integrated Memory Controller 1 Channel 3 ERROR Registers 2fe0 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers + 15d9 0821 X10DRW-i 2fe1 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers + 15d9 0821 X10DRW-i 2fe2 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers + 15d9 0821 X10DRW-i 2fe3 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers + 15d9 0821 X10DRW-i 2fe4 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers + 15d9 0821 X10DRW-i 2fe5 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers + 15d9 0821 X10DRW-i 2fe6 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers + 15d9 0821 X10DRW-i 2fe7 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers + 15d9 0821 X10DRW-i 2fe8 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers 2fe9 Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers 2fea Xeon E7 v3/Xeon E5 v3/Core i7 Unicast Registers @@ -34073,8 +35084,11 @@ 2ffa Xeon E7 v3/Xeon E5 v3/Core i7 Buffered Ring Agent 2ffb Xeon E7 v3/Xeon E5 v3/Core i7 Buffered Ring Agent 2ffc Xeon E7 v3/Xeon E5 v3/Core i7 System Address Decoder & Broadcast Registers + 15d9 0821 X10DRW-i 2ffd Xeon E7 v3/Xeon E5 v3/Core i7 System Address Decoder & Broadcast Registers + 15d9 0821 X10DRW-i 2ffe Xeon E7 v3/Xeon E5 v3/Core i7 System Address Decoder & Broadcast Registers + 15d9 0821 X10DRW-i 3101 Killer E3100X 2.5 Gigabit Ethernet Controller 3140 Easel/Monette Hill Image Processor [Pixel Visual Core] 3165 Wireless 3165 @@ -34088,6 +35102,7 @@ 318e Celeron/Pentium Silver Processor NorthPeak 3190 Celeron/Pentium Silver Processor Gaussian Mixture Model 3192 Gemini Lake P2SB + 3196 Unknown P2SB serial controller 3197 Celeron/Pentium Silver Processor PCI-default ISA-bridge 3198 Celeron/Pentium Silver Processor High Definition Audio 17aa 380b V130-15IGM Laptop (Lenovo) - Type 81HL @@ -35034,11 +36049,13 @@ 43ba Tiger Lake-H PCIe Root Port #3 43bb Tiger Lake-H PCIe Root Port #4 43bc Tiger Lake-H PCI Express Root Port #5 + 43be 11th Gen Core Processor PCIe Root Port #7 43c0 Tiger Lake-H PCIe Root Port #17 43c7 Tiger Lake-H PCIe Root Port #24 43c8 Tiger Lake-H HD Audio Controller 43d3 Tiger Lake SATA AHCI Controller 43e0 Tiger Lake-H Management Engine Interface + 43e3 Tiger Lake AMT SOL Redirection 43e8 Tiger Lake-H Serial IO I2C Controller #0 43e9 Tiger Lake-H Serial IO I2C Controller #1 43ed Tiger Lake-H USB 3.2 Gen 2x1 xHCI Host Controller @@ -35058,6 +36075,9 @@ 4601 Alder Lake-U15 Host and DRAM Controller 4602 Alder Lake Host and DRAM Controller 460d 12th Gen Core Processor PCI Express x16 Controller #1 + 4619 Core i9/i7/i5/i3 Host Bridge/DRAM Registers + 461b Alder Lake-N Processor Host Bridge/DRAM Registers + 461c Alder Lake-N Processor Host Bridge/DRAM Registers 461d Alder Lake Innovation Platform Framework Processor Participant 1028 0b10 Precision 3571 461e Alder Lake-P Thunderbolt 4 USB Controller @@ -35088,6 +36108,7 @@ 466d Alder Lake-P Thunderbolt 4 NHI #1 466e Alder Lake-P Thunderbolt 4 PCI Express Root Port #0 467d Platform Monitoring Technology + 467e GNA Scoring Accelerator 467f Volume Management Device NVMe RAID Controller 4680 AlderLake-S GT1 4682 Alder Lake-S GT1 [UHD Graphics 730] @@ -35172,10 +36193,13 @@ 4deb Jasper Lake Serial IO I2C Host Controller #3 4ded Jasper Lake USB 3.1 xHCI Host Controller 4def Jasper Lake Shared SRAM - 4df0 Wi-Fi 6 AX201 160MHz + 4df0 Jasper Lake PCH CNVi WiFi + 8086 4030 Wireless-AC 9560 160MHz 4df8 Jasper Lake SD Controller 4e03 Dynamic Tuning service + 4e11 Gaussian Mixture Model and Neural Network Accelerator (GNA) 4e19 JasperLake IPU + 4e22 Processor Transaction Router SKU 2 Core 4e55 JasperLake [UHD Graphics] 4e61 JasperLake [UHD Graphics] 4e71 JasperLake [UHD Graphics] @@ -35258,7 +36282,10 @@ 51ab Alder Lake SPI Controller 51b0 Alder Lake PCI Express Root Port #9 51b1 Alder Lake PCI Express x1 Root Port #10 + 51b2 Alder Lake PCI Express x1 Root Port #11 + 51b3 Alder Lake PCI Express Root Port #12 51bb Alder Lake-P PCH PCIe Root Port #4 + 51bc Alder Lake PCI Express x4 Root Port #5 51bd Alder Lake-P PCH PCIe Root Port #6 51bf Alder Lake PCH-P PCI Express Root Port #9 51c5 Alder Lake-P Serial IO I2C Controller #0 @@ -35326,6 +36353,11 @@ 54b1 Alder Lake-N PCI Express Root Port #10 54b2 Alder Lake-N PCI Express Root Port #11 54b3 Alder Lake-N PCI Express Root Port #12 + 54b8 Alder Lake-N PCI Express Root Port #1 + 54b9 Alder Lake-N PCI Express Root Port #2 + 54ba Alder Lake-N PCI Express Root Port #3 + 54bb Alder Lake-N PCI Express Root Port #4 + 54be Alder Lake-N PCI Express Root Port #7 54c8 Alder Lake-N PCH High Definition Audio Controller 54d3 Alder Lake-N SATA AHCI Controller 54e0 Alder Lake-N PCH HECI Controller @@ -35334,6 +36366,8 @@ 54f0 CNVi: Wi-Fi 8086 0244 Wi-Fi 6 AX101NGW 5502 Ethernet Controller (2) I225-LMvP + 103c 87b9 Thunderbolt Dock G4 PCIe NIC + 17aa 2303 ThinkPad Universal Thunderbolt 4 Dock PCIe NIC 1ab6 0225 TS4 On-Board 2.5GbE Ethernet Adaptor 5690 DG2 [Arc A770M] 5691 DG2 [Arc A730M] @@ -35358,12 +36392,12 @@ 56b1 DG2 [Arc Pro A40/A50] 56b2 DG2 [Arc Pro A60M] 56b3 DG2 [Arc Pro A60] - 56ba DG2 [Intel Graphics] - 56bb DG2 [Intel Graphics] - 56bc DG2 [Intel Graphics] - 56bd DG2 [Intel Graphics] - 56be DG2 [Arc Graphics A750E] - 56bf DG2 [Arc Graphics A580E] + 56ba DG2 [Arc A380E] + 56bb DG2 [Arc A310E] + 56bc DG2 [Arc A370E] + 56bd DG2 [Arc A350E] + 56be DG2 [Arc A750E] + 56bf DG2 [Arc A580E] 56c0 ATS-M [Data Center GPU Flex 170] 56c1 ATS-M [Data Center GPU Flex 140] 56c2 ATS-M [Data Center GPU Flex 170V] @@ -35375,16 +36409,25 @@ 5785 Thunderbolt USB Controller [Barlow Ridge Host 40G 2023] 5786 Thunderbolt 80/120G Bridge [Barlow Ridge Hub 80G 2023] 5787 Thunderbolt 80/120G USB Controller [Barlow Ridge Hub 80G 2023] + 5795 Granite Rapids Chipset LPC Controller 579c Ethernet Connection E825-C for backplane 579d Ethernet Connection E825-C for QSFP 579e Ethernet Connection E825-C for SFP + 579f Ethernet Connection E825-C 10GbE 57a4 Thunderbolt Bridge [Barlow Ridge Hub 40G 2023] 57a5 Thunderbolt USB Controller [Barlow Ridge Hub 40G 2023] + 57ad E610 Virtual Function 57ae Ethernet Controller E610 Backplane 57af Ethernet Controller E610 SFP 57b0 Ethernet Controller E610 10GBASE T + 8086 0001 Ethernet Network Adapter E610-XT4 + 8086 0002 Ethernet Network Adapter E610-XT2 + 8086 0003 Ethernet Network Adapter E610-XT4 for OCP 3.0 + 8086 0004 Ethernet Network Adapter E610-XT2 for OCP 3.0 57b1 Ethernet Controller E610 2.5GBASE T 8086 0000 Ethernet Converged Network Adapter E610 + 8086 0002 Ethernet Network Adapter E610-IT4 + 8086 0003 Ethernet Network Adapter E610-IT4 for OCP 3.0 57b2 Ethernet Controller E610 SGMII 5845 QEMU NVM Express Controller 1af4 1100 QEMU Virtual Machine @@ -35418,6 +36461,7 @@ 17aa 2248 ThinkPad T570 17aa 224f ThinkPad X1 Carbon 5th Gen 5917 UHD Graphics 620 + 17aa 225d ThinkPad T480 (20L5) 17aa 225e ThinkPad T480 5918 Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers 591b HD Graphics 630 @@ -35467,7 +36511,7 @@ 5af0 Celeron N3350/Pentium N4200/Atom E3900 Series Host Bridge 6420 Lunar Lake [Intel Graphics] 643e Lunar Lake NPU - 64a0 Lunar Lake [Intel Graphics] + 64a0 Lunar Lake [Intel Arc Graphics 130V / 140V] 64b0 Lunar Lake [Intel Graphics] 65c0 5100 Chipset Memory Controller Hub 65e2 5100 Chipset PCI Express x4 Port 2 @@ -35750,6 +36794,18 @@ 7601 82372FB PIIX5 IDE 7602 82372FB PIIX5 USB 7603 82372FB PIIX5 SMBus + 7725 Arrow Lake-H [PCH Serial IO UART Host Controller] + 7726 Arrow Lake-H PCH Serial IO UART Host Controller] + 7727 Arrow Lake-H [LPC/eSPI Controller] + 7730 Arrow Lake-H [LPC/eSPI Controller] + 7746 Arrow Lake-H [LPC/eSPI Controller] + 7750 Arrow Lake-H [Serial IO I2C Host Controller] + 7751 Arrow Lake-H [Serial IO I2C Host Controller] + 7752 Arrow Lake-H [PCH Serial IO UART Host Controller] + 7778 Arrow Lake-H [Serial IO I2C Host Controller] + 7779 Arrow Lake-H [Serial IO I2C Host Controller] + 777a Arrow Lake-H [Serial IO I2C Host Controller] + 777b Arrow Lake-H [Serial IO I2C Host Controller] 7800 82740 (i740) AGP Graphics Accelerator 003d 0008 Starfighter AGP 003d 000b Starfighter AGP @@ -35781,7 +36837,7 @@ 8086 0090 WiFi 6E AX211 160MHz # Unlike other PCH components. The eSPI controller is specific to each chipset model 7a84 Z690 Chipset LPC/eSPI Controller - 7a85 Alder Lake-S PCH PCI Express Root Port #????? + 7a85 LPC Controller/eSPI Controller (H670) 7aa3 Alder Lake-S PCH SMBus Controller 7aa4 Alder Lake-S PCH SPI Controller 7aa7 Alder Lake-S PCH Shared SRAM @@ -35803,12 +36859,15 @@ 7acf Alder Lake-S PCH Serial IO I2C Controller #3 7ad0 Alder Lake-S HD Audio Controller 7ae0 Alder Lake-S PCH USB 3.2 Gen 2x2 XHCI Controller + 7ae1 Alder Lake-S PCH USB 3.2 Gen 1x1 xDCI Controller 7ae2 Alder Lake-S PCH SATA Controller [AHCI Mode] 7ae8 Alder Lake-S PCH HECI Controller #1 + 7aeb Alder Lake-S Keyboard and Text (KT) Redirection 7af0 Alder Lake-S PCH CNVi WiFi 8086 0034 Wireless-AC 9560 8086 0070 Wi-Fi 6 AX201 160MHz 8086 0094 Wi-Fi 6 AX201 160MHz + 7af8 Alder Lake-S Integrated Sensor Hub 7afc Alder Lake-S PCH Serial IO I2C Controller #4 7afd Alder Lake-S PCH Serial IO I2C Controller #5 7d03 Meteor Lake-P Dynamic Tuning Technology @@ -35822,7 +36881,7 @@ 7d51 Arrow Lake-P [Intel Graphics] 7d55 Meteor Lake-P [Intel Arc Graphics] 7d60 Meteor Lake-M [Intel Graphics] - 7d67 Arrow Lake-U [Intel Graphics] + 7d67 Arrow Lake-S [Intel Graphics] 7dd1 Arrow Lake-P [Intel Graphics] 7dd5 Meteor Lake-P [Intel Graphics] 7e01 Meteor Lake-P LPC/eSPI Controller @@ -35858,6 +36917,8 @@ 7ec5 Meteor Lake-P Thunderbolt 4 PCI Express Root Port #1 7ec6 Meteor Lake-P Thunderbolt 4 PCI Express Root Port #2 7ec7 Meteor Lake-P Thunderbolt 4 PCI Express Root Port #3 + 7f70 Arrow Lake-S PCH CNVi WiFi + 8086 0094 WiFi 6E AX211 160MHz 8002 Trusted Execution Technology Registers 8003 Trusted Execution Technology Registers 8100 US15W/US15X SCH [Poulsbo] Host Bridge @@ -36117,6 +37178,7 @@ 8cc6 H97 Chipset LPC Controller 8d00 C610/X99 series chipset 4-port SATA Controller [IDE mode] 8d02 C610/X99 series chipset 6-Port SATA Controller [AHCI mode] + 15d9 0821 X10DRW-i 8d04 C610/X99 series chipset SATA Controller [RAID mode] 8d06 C610/X99 series chipset SATA Controller [RAID mode] 17aa 1031 ThinkServer RAID 110i @@ -36141,19 +37203,26 @@ 8d20 C610/X99 series chipset HD Audio Controller 8d21 C610/X99 series chipset HD Audio Controller 8d22 C610/X99 series chipset SMBus Controller + 15d9 0821 X10DRW-i 15d9 0832 X10SRL-F 8d24 C610/X99 series chipset Thermal Subsystem + 15d9 0821 X10DRW-i 8d26 C610/X99 series chipset USB Enhanced Host Controller #1 + 15d9 0821 X10DRW-i 15d9 0832 X10SRL-F 8d2d C610/X99 series chipset USB Enhanced Host Controller #2 + 15d9 0821 X10DRW-i 15d9 0832 X10SRL-F 8d31 C610/X99 series chipset USB xHCI Host Controller + 15d9 0821 X10DRW-i 15d9 0832 X10SRL-F 8d33 C610/X99 series chipset LAN Controller 8d34 C610/X99 series chipset NAND Controller 8d3a C610/X99 series chipset MEI Controller #1 + 15d9 0821 X10DRW-i 15d9 0832 X10SRL-F 8d3b C610/X99 series chipset MEI Controller #2 + 15d9 0821 X10DRW-i 15d9 0832 X10SRL-F 8d3c C610/X99 series chipset IDE-r Controller 8d3d C610/X99 series chipset KT Controller @@ -36162,6 +37231,7 @@ 8d42 C610/X99 series chipset LPC Controller 8d43 C610/X99 series chipset LPC Controller 8d44 C610/X99 series chipset LPC Controller + 15d9 0821 X10DRW-i 15d9 0832 X10SRL-F 8d45 C610/X99 series chipset LPC Controller 8d46 C610/X99 series chipset LPC Controller @@ -36176,11 +37246,13 @@ 8d4f C610/X99 series chipset LPC Controller 8d60 C610/X99 series chipset sSATA Controller [IDE mode] 8d62 C610/X99 series chipset sSATA Controller [AHCI mode] + 15d9 0821 X10DRW-i 8d64 C610/X99 series chipset sSATA Controller [RAID mode] 8d66 C610/X99 series chipset sSATA Controller [RAID mode] 8d68 C610/X99 series chipset sSATA Controller [IDE mode] 8d6e C610/X99 series chipset sSATA Controller [RAID mode] 8d7c C610/X99 series chipset SPSR + 15d9 0821 X10DRW-i 15d9 0832 X10SRL-F 8d7d C610/X99 series chipset MS SMBus 0 8d7e C610/X99 series chipset MS SMBus 1 @@ -36196,22 +37268,29 @@ 9840 Lakefield GT2 [UHD Graphics] 9841 Lakefield GT1.5 [UHD Graphics] 9a01 11th Gen Core Processor PCIe Controller #1 + 9a02 Tiger Lake-UP4 2 cores Host Bridge/DRAM Registers 9a03 TigerLake-LP Dynamic Tuning Processor Participant + 9a04 Tiger Lake-UP3 2 cores Host Bridge/DRAM Registers + 9a05 11th Gen Core Processor PCIe Controller #2 + 9a07 11th Gen Core Processor PCIe Controller #3 9a09 11th Gen Core Processor PCIe Controller 9a0b Volume Management Device NVMe RAID Controller 9a0d Tigerlake Telemetry Aggregator Driver 9a0f 11th Gen Core Processor PCIe Controller #0 9a11 GNA Scoring Accelerator module + 9a12 Tiger Lake-UP4 4 cores Host Bridge/DRAM Registers 9a13 Tiger Lake-LP Thunderbolt 4 USB Controller - 9a14 11th Gen Core Processor Host Bridge/DRAM Registers + 9a14 Tiger Lake-UP3/H35 4 cores Host Bridge/DRAM Registers + 9a15 Tiger Lake xDCI Controller 9a17 Tiger Lake-H Thunderbolt 4 USB Controller + 9a19 Tiger Lake IPU6 9a1b Tiger Lake-LP Thunderbolt 4 NHI #0 9a1d Tiger Lake-LP Thunderbolt 4 NHI #1 9a1f Tiger Lake-H Thunderbolt 4 NHI #0 9a21 Tiger Lake-H Thunderbolt 4 NHI #1 9a23 Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #0 9a25 Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #1 - 9a26 11th Gen Core Processor Host Bridge/DRAM Registers + 9a26 Tiger Lake-H 6 cores Host Bridge/DRAM Registers 9a27 Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #2 9a29 Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #3 9a2b Tiger Lake-H Thunderbolt 4 PCI Express Root Port #0 @@ -36219,7 +37298,8 @@ 9a2f Tiger Lake-H Thunderbolt 4 PCI Express Root Port #2 9a31 Tiger Lake-H Thunderbolt 4 PCI Express Root Port #3 9a33 Tiger Lake Trace Hub - 9a36 11th Gen Core Processor Host Bridge/DRAM Registers + 9a36 Tiger Lake-H 8 cores Host Bridge/DRAM Registers + 9a39 Tiger Lake H IPU6-Slim 9a40 Tiger Lake-UP4 GT2 [Iris Xe Graphics] 9a49 TigerLake-LP GT2 [Iris Xe Graphics] 9a60 TigerLake-H GT1 [UHD Graphics] @@ -36926,6 +38006,7 @@ 1028 0c06 Precision 3580 a71e Raptor Lake-P Thunderbolt 4 USB Controller 1028 0c06 Precision 3580 + a71f Raptor Lake-P Thunderbolt 4 PCI Express Root Port #1 a720 Raptor Lake-P [UHD Graphics] a721 Raptor Lake-P [UHD Graphics] a72f Raptor Lake-P Thunderbolt 4 PCI Express Root Port #2 @@ -36935,6 +38016,7 @@ a74d Raptor Lake PCIe 4.0 Graphics Port a74f GNA Scoring Accelerator module 1028 0c06 Precision 3580 + a75d Raptor Lake IPU a76d Raptor Lake-P Thunderbolt 4 NHI #1 a76e Raptor Lake-P Thunderbolt 4 PCI Express Root Port #0 a77d Raptor Lake Crashlog and Telemetry @@ -36975,6 +38057,7 @@ a83b Lunar Lake-M PCI Express Root Port #4 a83c Lunar Lake-M PCI Express Root Port #5 a83d Lunar Lake-M PCI Express Root Port #6 + a840 BE201 320MHz a845 Lunar Lake-M Integrated Sensor Hub a847 Lunar Lake-M UFS Controller a84e Lunar Lake-M Thunderbolt 4 PCI Express Root Port #0 @@ -36989,6 +38072,14 @@ ad0b Volume Management Device NVMe RAID Controller Intel Corporation ad1d Arrow Lake NPU b03e Panther Lake NPU + b080 Panther Lake [Intel Graphics] + b081 Panther Lake [Intel Graphics] + b082 Panther Lake [Intel Graphics] + b083 Panther Lake [Intel Graphics] + b08f Panther Lake [Intel Graphics] + b090 Panther Lake [Intel Graphics] + b0a0 Panther Lake [Intel Graphics] + b0b0 Panther Lake [Intel Graphics] b152 21152 PCI-to-PCI Bridge 8086 b152 21152 PCI-to-PCI Bridge # observed, and documented in Intel revision note; new mask of 1011:0026 @@ -37000,6 +38091,7 @@ 4c53 1050 CT7 mainboard 4c53 1051 CE7 mainboard e4bf 1000 CC8-1-BLUES + b640 Arrow Lake-H [Intel Graphics] d130 Core Processor DMI 15d9 0605 X8SIL d131 Core Processor DMI @@ -37026,10 +38118,13 @@ d157 Core Processor System Control and Status Registers d158 Core Processor Miscellaneous Registers e202 Battlemage G21 [Intel Graphics] - e20b Battlemage G21 [Intel Graphics] - e20c Battlemage G21 [Intel Graphics] + e20b Battlemage G21 [Arc B580] + e20c Battlemage G21 [Arc B570] e20d Battlemage G21 [Intel Graphics] + e210 Battlemage G21 [Intel Graphics] e212 Battlemage G21 [Intel Graphics] + e215 Battlemage G21 [Intel Graphics] + e216 Battlemage G21 [Intel Graphics] f1a5 SSD 600P Series 8086 390a SSDPEKKW256G7 256GB f1a6 SSD DC P4101/Pro 7600p/760p/E 6100p Series @@ -37107,6 +38202,7 @@ 4c52 1002 LRES1002PF Dual-port 10Gb Ethernet Server Adapter 4c52 1003 LRES1003PF Single-port 10Gb Ethernet Server Adapter 4c52 3001 LRES3001PF Dual-port 10Gb Ethernet Server Adapter for OCP + 4c52 8005 LRES8005PF Dual-port 10Gb Ethernet Bypass Network Adapter 8088 0000 Ethernet Network Adaptor RP1000 for 10GbE SFP+ 8088 0300 Ethernet Network Adaptor RP1000-A03 for 10GbE SFP+ 8088 0400 Ethernet Network Adaptor RP1000-A04 for 10GbE SFP+ @@ -37115,6 +38211,10 @@ 8088 2000 Ethernet Network Adaptor RP2000 for 10GbE SFP+ 8088 2300 Ethernet Network Adaptor RP2000-A03 for 10GbE SFP+ 8088 2400 Ethernet Network Adaptor RP2000-A04 for 10GbE SFP+ + 5025 Ethernet Controller WX5025 for 25GbE SFP28 + 8088 1000 Dual-Port Ethernet Network Adapter FF5025-DDATACXX + 5125 Ethernet Controller WX5025AL for 25GbE SFP28 + 8088 3000 Dual-Port Ethernet Network Adapter FF5025-DDATAIXX 80ee InnoTek Systemberatung GmbH beef VirtualBox Graphics Adapter cafe VirtualBox Guest Service @@ -37131,6 +38231,7 @@ 8510 0007 GB2062-PCIe-C40 8510 0008 CQ2040-MXM-M60 8510 0009 GB2062-PCIe-C20 + 8510 000b GB2062-PCIe-HIEILP42 8510 000c CQ2040-PUB 8510 0201 GB2062-PUB-DDR # nee ScaleMP @@ -37181,6 +38282,7 @@ 8e0e Computone Corporation 8e2e KTI 3000 ET32P2 +9000 C*Core Technology Co., Ltd. 9004 Adaptec 0078 AHA-2940U_CN 1078 AIC-7810 @@ -37565,6 +38667,9 @@ 1d49 0621 ThinkSystem RAID 9350-8i 2GB Flash PCIe 12Gb Internal Adapter 1d49 0622 ThinkSystem RAID 9350-16i 4GB Flash PCIe 12Gb Adapter 1d49 0623 ThinkSystem RAID 9350-16i 4GB Flash PCIe 12Gb Internal Adapter + 1f3f 0610 3S610-8i, SAS/SATA 12Gb HBA + 207d 4140 TrustRAID D3152s-8i + 207d 4240 TrustRAID D3154s-8i 9005 0608 SmartRAID 3162-8i /e 9005 0800 SmartRAID 3154-8i 9005 0801 SmartRAID 3152-8i @@ -37750,6 +38855,8 @@ 1501 STAR1500C NVMe SSD 1502 STAR1500E NVMe SSD 1504 STAR1500L NVMe SSD +# NVMe Gen5 Controller 16ch + 1516 STAR1516 PCIe NVMe SSD Controller 2000 STAR2000 NVMe Controller 2001 STAR2000E NVMe SSD 2002 STAR2000C NVMe SSD @@ -37806,6 +38913,7 @@ b100 OpenVox Communication Co. Ltd. b10b Uakron PCI Project b1b3 Shiva Europe Limited b1d9 ATCOM Technology co., LTD. +b390 TD3-X3+ # Pinnacle should be 11bd, but they got it wrong several times --mj bd11 Pinnacle Systems, Inc. (Wrong ID) bdbd Blackmagic Design @@ -37854,7 +38962,10 @@ c0a9 Micron/Crucial Technology 5412 P5 NVMe PCIe SSD[SlashP5] 5415 T500 NVMe PCIe SSD 5419 T700 NVMe PCIe SSD + 5420 P3 NVMe PCIe SSD (DRAM-less) 5421 P3 Plus NVMe PCIe SSD (DRAM-less) + 5426 P310 NVMe PCIe SSD (DRAM-less) + 542b T705 NVMe PCIe SSD c0de Motorola c0fe Motion Engineering, Inc. ca01 I-TEK OptoElectronics Co., LTD. @@ -37868,7 +38979,8 @@ cace CACE Technologies, Inc. 0002 TurboCap Port B 0023 AirPcap N caed Canny Edge -cafe Chrysalis-ITS +# nee Chrysalis-ITS +cafe Thales 0003 Luna K3 Hardware Security Module 0006 Luna PCI-e 3000 Hardware Security Module 0007 Luna K6 Hardware Security Module @@ -37929,25 +39041,19 @@ d209 Ultimarc 15a2 SpinTrak 1601 AimTrak d20c Chengdu BeiZhongWangXin Technology Co., Ltd. - 5010 NE5000 Ethernet Controller 5011 NE5000 Ethernet Controller + d20c e120 N5 Series 2-port 10GbE Network Adapter + d20c e140 N5 Series 4-port 10GbE Network Adapter d20c e220 N5 Series 2-port 25GbE Network Adapter d20c e221 N5S Series 2-port 25GbE Network Adapter d20c e22c N5 Series 2-port 25GbE Network Adapter for OCP - d20c e22d N5S Series 2-port 25GbE Network Adapter for OCP - 6010 NE6000 Ethernet Controller 6011 NE6000 Ethernet Controller - d20c a141 N6S Series 4-port 10GbE Network Adapter - d20c a221 N6S Series 2-port 25GbE Network Adapter - d20c a241 N6S Series 4-port 25GbE Network Adapter - d20c a421 N6S Series 2-port 40GbE Network Adapter - d20c aa21 N6S Series 2-port 100GbE Network Adapter - d20c d221 N6S Series 2-port 25GbE Network Adapter with DPI - d20c da21 N6S Series 2-port 100GbE Network Adapter with DPI - d20c ea20 N6 Series 2-port 100GbE Network Adapter + d20c a001 N6S Series Network Adapter + d20c e221 N6S Series 2-port 25GbE Network Adapter + d20c e281 N6S Series 8-port 25GbE Network Adapter + d20c e421 N6S Series 2-port 40GbE Network Adapter d20c ea21 N6S Series 2-port 100GbE Network Adapter - d20c ea2c N6 Series 2-port 100GbE Network Adapter for OCP - d20c ea2d N6S Series 2-port 100GbE Network Adapter for OCP +d405 LeapIO d4d4 Dy4 Systems Inc 0601 PCI Mezzanine Card d531 I+ME ACTIA GmbH @@ -37998,6 +39104,7 @@ dd01 Digital Devices GmbH 0011 Octopus CI DVB Adapter dd01 0040 Octopus CI dd01 0041 Octopus CI Single + 0012 Octopus Duo CI 0201 Resi DVB-C Modulator dd01 0001 Resi DVB-C Modulator dead Indigita Corporation @@ -38165,6 +39272,9 @@ f1d0 AJA Video eb25 Corvid 44 12g eb26 T-Tap Pro eb27 IoX3 + eb28 Kona XM + eb29 Kona X + eb30 Kona IP 25G efac Xena SD-MM/SD-22-MM facd Xena HD-MM f5f5 F5 Networks, Inc. diff --git a/vendor/github.com/NVIDIA/go-nvlib/pkg/pciids/pciids.go b/vendor/github.com/NVIDIA/go-nvlib/pkg/pciids/pciids.go index 343df08d4..79cb227c8 100644 --- a/vendor/github.com/NVIDIA/go-nvlib/pkg/pciids/pciids.go +++ b/vendor/github.com/NVIDIA/go-nvlib/pkg/pciids/pciids.go @@ -396,7 +396,7 @@ func (p *parser) parse() Interface { hkClass = db.classes[uint32(id)] hkFullID = uint32(id) << 16 - hkFullID = hkFullID & 0xFFFF0000 + hkFullID &= 0xFFFF0000 hkFullName[0] = fmt.Sprintf("%s (%02x)", lit.name, id) } @@ -408,11 +408,11 @@ func (p *parser) parse() Interface { } hkSubClass = hkClass.subClasses[uint32(id)] - // Clear the last detected sub class. - hkFullID = hkFullID & 0xFFFF0000 - hkFullID = hkFullID | uint32(id)<<8 + // Clear the last detected subclass. + hkFullID &= 0xFFFF0000 + hkFullID |= uint32(id) << 8 // Clear the last detected prog iface. - hkFullID = hkFullID & 0xFFFFFF00 + hkFullID &= 0xFFFFFF00 hkFullName[1] = fmt.Sprintf("%s (%02x)", lit.name, id) db.classes[uint32(hkFullID)] = class{ diff --git a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/const.go b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/const.go index 1ccb5016b..09e82fc6b 100644 --- a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/const.go +++ b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/const.go @@ -52,6 +52,10 @@ const ( MAX_PHYSICAL_BRIDGE = 128 // MAX_THERMAL_SENSORS_PER_GPU as defined in nvml/nvml.h MAX_THERMAL_SENSORS_PER_GPU = 3 + // DEVICE_UUID_ASCII_LEN as defined in nvml/nvml.h + DEVICE_UUID_ASCII_LEN = 41 + // DEVICE_UUID_BINARY_LEN as defined in nvml/nvml.h + DEVICE_UUID_BINARY_LEN = 16 // FlagDefault as defined in nvml/nvml.h FlagDefault = 0 // FlagForce as defined in nvml/nvml.h @@ -62,54 +66,8 @@ const ( DOUBLE_BIT_ECC = 0 // MAX_GPU_PERF_PSTATES as defined in nvml/nvml.h MAX_GPU_PERF_PSTATES = 16 - // GRID_LICENSE_EXPIRY_NOT_AVAILABLE as defined in nvml/nvml.h - GRID_LICENSE_EXPIRY_NOT_AVAILABLE = 0 - // GRID_LICENSE_EXPIRY_INVALID as defined in nvml/nvml.h - GRID_LICENSE_EXPIRY_INVALID = 1 - // GRID_LICENSE_EXPIRY_VALID as defined in nvml/nvml.h - GRID_LICENSE_EXPIRY_VALID = 2 - // GRID_LICENSE_EXPIRY_NOT_APPLICABLE as defined in nvml/nvml.h - GRID_LICENSE_EXPIRY_NOT_APPLICABLE = 3 - // GRID_LICENSE_EXPIRY_PERMANENT as defined in nvml/nvml.h - GRID_LICENSE_EXPIRY_PERMANENT = 4 - // GRID_LICENSE_BUFFER_SIZE as defined in nvml/nvml.h - GRID_LICENSE_BUFFER_SIZE = 128 - // VGPU_NAME_BUFFER_SIZE as defined in nvml/nvml.h - VGPU_NAME_BUFFER_SIZE = 64 - // GRID_LICENSE_FEATURE_MAX_COUNT as defined in nvml/nvml.h - GRID_LICENSE_FEATURE_MAX_COUNT = 3 - // INVALID_VGPU_PLACEMENT_ID as defined in nvml/nvml.h - INVALID_VGPU_PLACEMENT_ID = 65535 - // VGPU_SCHEDULER_POLICY_UNKNOWN as defined in nvml/nvml.h - VGPU_SCHEDULER_POLICY_UNKNOWN = 0 - // VGPU_SCHEDULER_POLICY_BEST_EFFORT as defined in nvml/nvml.h - VGPU_SCHEDULER_POLICY_BEST_EFFORT = 1 - // VGPU_SCHEDULER_POLICY_EQUAL_SHARE as defined in nvml/nvml.h - VGPU_SCHEDULER_POLICY_EQUAL_SHARE = 2 - // VGPU_SCHEDULER_POLICY_FIXED_SHARE as defined in nvml/nvml.h - VGPU_SCHEDULER_POLICY_FIXED_SHARE = 3 - // SUPPORTED_VGPU_SCHEDULER_POLICY_COUNT as defined in nvml/nvml.h - SUPPORTED_VGPU_SCHEDULER_POLICY_COUNT = 3 - // SCHEDULER_SW_MAX_LOG_ENTRIES as defined in nvml/nvml.h - SCHEDULER_SW_MAX_LOG_ENTRIES = 200 - // VGPU_SCHEDULER_ARR_DEFAULT as defined in nvml/nvml.h - VGPU_SCHEDULER_ARR_DEFAULT = 0 - // VGPU_SCHEDULER_ARR_DISABLE as defined in nvml/nvml.h - VGPU_SCHEDULER_ARR_DISABLE = 1 - // VGPU_SCHEDULER_ARR_ENABLE as defined in nvml/nvml.h - VGPU_SCHEDULER_ARR_ENABLE = 2 - // GRID_LICENSE_STATE_UNKNOWN as defined in nvml/nvml.h - GRID_LICENSE_STATE_UNKNOWN = 0 - // GRID_LICENSE_STATE_UNINITIALIZED as defined in nvml/nvml.h - GRID_LICENSE_STATE_UNINITIALIZED = 1 - // GRID_LICENSE_STATE_UNLICENSED_UNRESTRICTED as defined in nvml/nvml.h - GRID_LICENSE_STATE_UNLICENSED_UNRESTRICTED = 2 - // GRID_LICENSE_STATE_UNLICENSED_RESTRICTED as defined in nvml/nvml.h - GRID_LICENSE_STATE_UNLICENSED_RESTRICTED = 3 - // GRID_LICENSE_STATE_UNLICENSED as defined in nvml/nvml.h - GRID_LICENSE_STATE_UNLICENSED = 4 - // GRID_LICENSE_STATE_LICENSED as defined in nvml/nvml.h - GRID_LICENSE_STATE_LICENSED = 5 + // PERF_MODES_BUFFER_SIZE as defined in nvml/nvml.h + PERF_MODES_BUFFER_SIZE = 2048 // GSP_FIRMWARE_VERSION_BUF_SIZE as defined in nvml/nvml.h GSP_FIRMWARE_VERSION_BUF_SIZE = 64 // DEVICE_ARCH_KEPLER as defined in nvml/nvml.h @@ -128,6 +86,10 @@ const ( DEVICE_ARCH_ADA = 8 // DEVICE_ARCH_HOPPER as defined in nvml/nvml.h DEVICE_ARCH_HOPPER = 9 + // DEVICE_ARCH_BLACKWELL as defined in nvml/nvml.h + DEVICE_ARCH_BLACKWELL = 10 + // DEVICE_ARCH_T23X as defined in nvml/nvml.h + DEVICE_ARCH_T23X = 11 // DEVICE_ARCH_UNKNOWN as defined in nvml/nvml.h DEVICE_ARCH_UNKNOWN = 4294967295 // BUS_TYPE_UNKNOWN as defined in nvml/nvml.h @@ -170,6 +132,82 @@ const ( ADAPTIVE_CLOCKING_INFO_STATUS_ENABLED = 1 // MAX_GPU_UTILIZATIONS as defined in nvml/nvml.h MAX_GPU_UTILIZATIONS = 8 + // PCIE_ATOMICS_CAP_FETCHADD32 as defined in nvml/nvml.h + PCIE_ATOMICS_CAP_FETCHADD32 = 1 + // PCIE_ATOMICS_CAP_FETCHADD64 as defined in nvml/nvml.h + PCIE_ATOMICS_CAP_FETCHADD64 = 2 + // PCIE_ATOMICS_CAP_SWAP32 as defined in nvml/nvml.h + PCIE_ATOMICS_CAP_SWAP32 = 4 + // PCIE_ATOMICS_CAP_SWAP64 as defined in nvml/nvml.h + PCIE_ATOMICS_CAP_SWAP64 = 8 + // PCIE_ATOMICS_CAP_CAS32 as defined in nvml/nvml.h + PCIE_ATOMICS_CAP_CAS32 = 16 + // PCIE_ATOMICS_CAP_CAS64 as defined in nvml/nvml.h + PCIE_ATOMICS_CAP_CAS64 = 32 + // PCIE_ATOMICS_CAP_CAS128 as defined in nvml/nvml.h + PCIE_ATOMICS_CAP_CAS128 = 64 + // PCIE_ATOMICS_OPS_MAX as defined in nvml/nvml.h + PCIE_ATOMICS_OPS_MAX = 7 + // POWER_SCOPE_GPU as defined in nvml/nvml.h + POWER_SCOPE_GPU = 0 + // POWER_SCOPE_MODULE as defined in nvml/nvml.h + POWER_SCOPE_MODULE = 1 + // POWER_SCOPE_MEMORY as defined in nvml/nvml.h + POWER_SCOPE_MEMORY = 2 + // GRID_LICENSE_EXPIRY_NOT_AVAILABLE as defined in nvml/nvml.h + GRID_LICENSE_EXPIRY_NOT_AVAILABLE = 0 + // GRID_LICENSE_EXPIRY_INVALID as defined in nvml/nvml.h + GRID_LICENSE_EXPIRY_INVALID = 1 + // GRID_LICENSE_EXPIRY_VALID as defined in nvml/nvml.h + GRID_LICENSE_EXPIRY_VALID = 2 + // GRID_LICENSE_EXPIRY_NOT_APPLICABLE as defined in nvml/nvml.h + GRID_LICENSE_EXPIRY_NOT_APPLICABLE = 3 + // GRID_LICENSE_EXPIRY_PERMANENT as defined in nvml/nvml.h + GRID_LICENSE_EXPIRY_PERMANENT = 4 + // GRID_LICENSE_BUFFER_SIZE as defined in nvml/nvml.h + GRID_LICENSE_BUFFER_SIZE = 128 + // VGPU_NAME_BUFFER_SIZE as defined in nvml/nvml.h + VGPU_NAME_BUFFER_SIZE = 64 + // GRID_LICENSE_FEATURE_MAX_COUNT as defined in nvml/nvml.h + GRID_LICENSE_FEATURE_MAX_COUNT = 3 + // INVALID_VGPU_PLACEMENT_ID as defined in nvml/nvml.h + INVALID_VGPU_PLACEMENT_ID = 65535 + // VGPU_PGPU_HETEROGENEOUS_MODE as defined in nvml/nvml.h + VGPU_PGPU_HETEROGENEOUS_MODE = 0 + // VGPU_PGPU_HOMOGENEOUS_MODE as defined in nvml/nvml.h + VGPU_PGPU_HOMOGENEOUS_MODE = 1 + // VGPU_SCHEDULER_POLICY_UNKNOWN as defined in nvml/nvml.h + VGPU_SCHEDULER_POLICY_UNKNOWN = 0 + // VGPU_SCHEDULER_POLICY_BEST_EFFORT as defined in nvml/nvml.h + VGPU_SCHEDULER_POLICY_BEST_EFFORT = 1 + // VGPU_SCHEDULER_POLICY_EQUAL_SHARE as defined in nvml/nvml.h + VGPU_SCHEDULER_POLICY_EQUAL_SHARE = 2 + // VGPU_SCHEDULER_POLICY_FIXED_SHARE as defined in nvml/nvml.h + VGPU_SCHEDULER_POLICY_FIXED_SHARE = 3 + // SUPPORTED_VGPU_SCHEDULER_POLICY_COUNT as defined in nvml/nvml.h + SUPPORTED_VGPU_SCHEDULER_POLICY_COUNT = 3 + // SCHEDULER_SW_MAX_LOG_ENTRIES as defined in nvml/nvml.h + SCHEDULER_SW_MAX_LOG_ENTRIES = 200 + // VGPU_SCHEDULER_ARR_DEFAULT as defined in nvml/nvml.h + VGPU_SCHEDULER_ARR_DEFAULT = 0 + // VGPU_SCHEDULER_ARR_DISABLE as defined in nvml/nvml.h + VGPU_SCHEDULER_ARR_DISABLE = 1 + // VGPU_SCHEDULER_ARR_ENABLE as defined in nvml/nvml.h + VGPU_SCHEDULER_ARR_ENABLE = 2 + // VGPU_SCHEDULER_ENGINE_TYPE_GRAPHICS as defined in nvml/nvml.h + VGPU_SCHEDULER_ENGINE_TYPE_GRAPHICS = 1 + // GRID_LICENSE_STATE_UNKNOWN as defined in nvml/nvml.h + GRID_LICENSE_STATE_UNKNOWN = 0 + // GRID_LICENSE_STATE_UNINITIALIZED as defined in nvml/nvml.h + GRID_LICENSE_STATE_UNINITIALIZED = 1 + // GRID_LICENSE_STATE_UNLICENSED_UNRESTRICTED as defined in nvml/nvml.h + GRID_LICENSE_STATE_UNLICENSED_UNRESTRICTED = 2 + // GRID_LICENSE_STATE_UNLICENSED_RESTRICTED as defined in nvml/nvml.h + GRID_LICENSE_STATE_UNLICENSED_RESTRICTED = 3 + // GRID_LICENSE_STATE_UNLICENSED as defined in nvml/nvml.h + GRID_LICENSE_STATE_UNLICENSED = 4 + // GRID_LICENSE_STATE_LICENSED as defined in nvml/nvml.h + GRID_LICENSE_STATE_LICENSED = 5 // FI_DEV_ECC_CURRENT as defined in nvml/nvml.h FI_DEV_ECC_CURRENT = 1 // FI_DEV_ECC_PENDING as defined in nvml/nvml.h @@ -562,10 +600,188 @@ const ( FI_DEV_TEMPERATURE_MEM_MAX_TLIMIT = 195 // FI_DEV_TEMPERATURE_GPU_MAX_TLIMIT as defined in nvml/nvml.h FI_DEV_TEMPERATURE_GPU_MAX_TLIMIT = 196 + // FI_DEV_PCIE_COUNT_TX_BYTES as defined in nvml/nvml.h + FI_DEV_PCIE_COUNT_TX_BYTES = 197 + // FI_DEV_PCIE_COUNT_RX_BYTES as defined in nvml/nvml.h + FI_DEV_PCIE_COUNT_RX_BYTES = 198 // FI_DEV_IS_MIG_MODE_INDEPENDENT_MIG_QUERY_CAPABLE as defined in nvml/nvml.h FI_DEV_IS_MIG_MODE_INDEPENDENT_MIG_QUERY_CAPABLE = 199 + // FI_DEV_NVLINK_GET_POWER_THRESHOLD_MAX as defined in nvml/nvml.h + FI_DEV_NVLINK_GET_POWER_THRESHOLD_MAX = 200 + // FI_DEV_NVLINK_COUNT_XMIT_PACKETS as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_XMIT_PACKETS = 201 + // FI_DEV_NVLINK_COUNT_XMIT_BYTES as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_XMIT_BYTES = 202 + // FI_DEV_NVLINK_COUNT_RCV_PACKETS as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_RCV_PACKETS = 203 + // FI_DEV_NVLINK_COUNT_RCV_BYTES as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_RCV_BYTES = 204 + // FI_DEV_NVLINK_COUNT_VL15_DROPPED as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_VL15_DROPPED = 205 + // FI_DEV_NVLINK_COUNT_MALFORMED_PACKET_ERRORS as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_MALFORMED_PACKET_ERRORS = 206 + // FI_DEV_NVLINK_COUNT_BUFFER_OVERRUN_ERRORS as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_BUFFER_OVERRUN_ERRORS = 207 + // FI_DEV_NVLINK_COUNT_RCV_ERRORS as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_RCV_ERRORS = 208 + // FI_DEV_NVLINK_COUNT_RCV_REMOTE_ERRORS as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_RCV_REMOTE_ERRORS = 209 + // FI_DEV_NVLINK_COUNT_RCV_GENERAL_ERRORS as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_RCV_GENERAL_ERRORS = 210 + // FI_DEV_NVLINK_COUNT_LOCAL_LINK_INTEGRITY_ERRORS as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_LOCAL_LINK_INTEGRITY_ERRORS = 211 + // FI_DEV_NVLINK_COUNT_XMIT_DISCARDS as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_XMIT_DISCARDS = 212 + // FI_DEV_NVLINK_COUNT_LINK_RECOVERY_SUCCESSFUL_EVENTS as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_LINK_RECOVERY_SUCCESSFUL_EVENTS = 213 + // FI_DEV_NVLINK_COUNT_LINK_RECOVERY_FAILED_EVENTS as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_LINK_RECOVERY_FAILED_EVENTS = 214 + // FI_DEV_NVLINK_COUNT_LINK_RECOVERY_EVENTS as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_LINK_RECOVERY_EVENTS = 215 + // FI_DEV_NVLINK_COUNT_RAW_BER_LANE0 as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_RAW_BER_LANE0 = 216 + // FI_DEV_NVLINK_COUNT_RAW_BER_LANE1 as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_RAW_BER_LANE1 = 217 + // FI_DEV_NVLINK_COUNT_RAW_BER as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_RAW_BER = 218 + // FI_DEV_NVLINK_COUNT_EFFECTIVE_ERRORS as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_EFFECTIVE_ERRORS = 219 + // FI_DEV_NVLINK_COUNT_EFFECTIVE_BER as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_EFFECTIVE_BER = 220 + // FI_DEV_NVLINK_COUNT_SYMBOL_ERRORS as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_SYMBOL_ERRORS = 221 + // FI_DEV_NVLINK_COUNT_SYMBOL_BER as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_SYMBOL_BER = 222 + // FI_DEV_NVLINK_GET_POWER_THRESHOLD_MIN as defined in nvml/nvml.h + FI_DEV_NVLINK_GET_POWER_THRESHOLD_MIN = 223 + // FI_DEV_NVLINK_GET_POWER_THRESHOLD_UNITS as defined in nvml/nvml.h + FI_DEV_NVLINK_GET_POWER_THRESHOLD_UNITS = 224 + // FI_DEV_NVLINK_GET_POWER_THRESHOLD_SUPPORTED as defined in nvml/nvml.h + FI_DEV_NVLINK_GET_POWER_THRESHOLD_SUPPORTED = 225 + // FI_DEV_RESET_STATUS as defined in nvml/nvml.h + FI_DEV_RESET_STATUS = 226 + // FI_DEV_DRAIN_AND_RESET_STATUS as defined in nvml/nvml.h + FI_DEV_DRAIN_AND_RESET_STATUS = 227 + // FI_DEV_PCIE_OUTBOUND_ATOMICS_MASK as defined in nvml/nvml.h + FI_DEV_PCIE_OUTBOUND_ATOMICS_MASK = 228 + // FI_DEV_PCIE_INBOUND_ATOMICS_MASK as defined in nvml/nvml.h + FI_DEV_PCIE_INBOUND_ATOMICS_MASK = 229 + // FI_DEV_GET_GPU_RECOVERY_ACTION as defined in nvml/nvml.h + FI_DEV_GET_GPU_RECOVERY_ACTION = 230 + // FI_DEV_C2C_LINK_ERROR_INTR as defined in nvml/nvml.h + FI_DEV_C2C_LINK_ERROR_INTR = 231 + // FI_DEV_C2C_LINK_ERROR_REPLAY as defined in nvml/nvml.h + FI_DEV_C2C_LINK_ERROR_REPLAY = 232 + // FI_DEV_C2C_LINK_ERROR_REPLAY_B2B as defined in nvml/nvml.h + FI_DEV_C2C_LINK_ERROR_REPLAY_B2B = 233 + // FI_DEV_C2C_LINK_POWER_STATE as defined in nvml/nvml.h + FI_DEV_C2C_LINK_POWER_STATE = 234 + // FI_DEV_NVLINK_COUNT_FEC_HISTORY_0 as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_FEC_HISTORY_0 = 235 + // FI_DEV_NVLINK_COUNT_FEC_HISTORY_1 as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_FEC_HISTORY_1 = 236 + // FI_DEV_NVLINK_COUNT_FEC_HISTORY_2 as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_FEC_HISTORY_2 = 237 + // FI_DEV_NVLINK_COUNT_FEC_HISTORY_3 as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_FEC_HISTORY_3 = 238 + // FI_DEV_NVLINK_COUNT_FEC_HISTORY_4 as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_FEC_HISTORY_4 = 239 + // FI_DEV_NVLINK_COUNT_FEC_HISTORY_5 as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_FEC_HISTORY_5 = 240 + // FI_DEV_NVLINK_COUNT_FEC_HISTORY_6 as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_FEC_HISTORY_6 = 241 + // FI_DEV_NVLINK_COUNT_FEC_HISTORY_7 as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_FEC_HISTORY_7 = 242 + // FI_DEV_NVLINK_COUNT_FEC_HISTORY_8 as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_FEC_HISTORY_8 = 243 + // FI_DEV_NVLINK_COUNT_FEC_HISTORY_9 as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_FEC_HISTORY_9 = 244 + // FI_DEV_NVLINK_COUNT_FEC_HISTORY_10 as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_FEC_HISTORY_10 = 245 + // FI_DEV_NVLINK_COUNT_FEC_HISTORY_11 as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_FEC_HISTORY_11 = 246 + // FI_DEV_NVLINK_COUNT_FEC_HISTORY_12 as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_FEC_HISTORY_12 = 247 + // FI_DEV_NVLINK_COUNT_FEC_HISTORY_13 as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_FEC_HISTORY_13 = 248 + // FI_DEV_NVLINK_COUNT_FEC_HISTORY_14 as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_FEC_HISTORY_14 = 249 + // FI_DEV_NVLINK_COUNT_FEC_HISTORY_15 as defined in nvml/nvml.h + FI_DEV_NVLINK_COUNT_FEC_HISTORY_15 = 250 + // FI_DEV_CLOCKS_EVENT_REASON_SW_POWER_CAP as defined in nvml/nvml.h + FI_DEV_CLOCKS_EVENT_REASON_SW_POWER_CAP = 74 + // FI_DEV_CLOCKS_EVENT_REASON_SYNC_BOOST as defined in nvml/nvml.h + FI_DEV_CLOCKS_EVENT_REASON_SYNC_BOOST = 76 + // FI_DEV_CLOCKS_EVENT_REASON_SW_THERM_SLOWDOWN as defined in nvml/nvml.h + FI_DEV_CLOCKS_EVENT_REASON_SW_THERM_SLOWDOWN = 251 + // FI_DEV_CLOCKS_EVENT_REASON_HW_THERM_SLOWDOWN as defined in nvml/nvml.h + FI_DEV_CLOCKS_EVENT_REASON_HW_THERM_SLOWDOWN = 252 + // FI_DEV_CLOCKS_EVENT_REASON_HW_POWER_BRAKE_SLOWDOWN as defined in nvml/nvml.h + FI_DEV_CLOCKS_EVENT_REASON_HW_POWER_BRAKE_SLOWDOWN = 253 + // FI_DEV_POWER_SYNC_BALANCING_FREQ as defined in nvml/nvml.h + FI_DEV_POWER_SYNC_BALANCING_FREQ = 254 + // FI_DEV_POWER_SYNC_BALANCING_AF as defined in nvml/nvml.h + FI_DEV_POWER_SYNC_BALANCING_AF = 255 + // FI_PWR_SMOOTHING_ENABLED as defined in nvml/nvml.h + FI_PWR_SMOOTHING_ENABLED = 256 + // FI_PWR_SMOOTHING_PRIV_LVL as defined in nvml/nvml.h + FI_PWR_SMOOTHING_PRIV_LVL = 257 + // FI_PWR_SMOOTHING_IMM_RAMP_DOWN_ENABLED as defined in nvml/nvml.h + FI_PWR_SMOOTHING_IMM_RAMP_DOWN_ENABLED = 258 + // FI_PWR_SMOOTHING_APPLIED_TMP_CEIL as defined in nvml/nvml.h + FI_PWR_SMOOTHING_APPLIED_TMP_CEIL = 259 + // FI_PWR_SMOOTHING_APPLIED_TMP_FLOOR as defined in nvml/nvml.h + FI_PWR_SMOOTHING_APPLIED_TMP_FLOOR = 260 + // FI_PWR_SMOOTHING_MAX_PERCENT_TMP_FLOOR_SETTING as defined in nvml/nvml.h + FI_PWR_SMOOTHING_MAX_PERCENT_TMP_FLOOR_SETTING = 261 + // FI_PWR_SMOOTHING_MIN_PERCENT_TMP_FLOOR_SETTING as defined in nvml/nvml.h + FI_PWR_SMOOTHING_MIN_PERCENT_TMP_FLOOR_SETTING = 262 + // FI_PWR_SMOOTHING_HW_CIRCUITRY_PERCENT_LIFETIME_REMAINING as defined in nvml/nvml.h + FI_PWR_SMOOTHING_HW_CIRCUITRY_PERCENT_LIFETIME_REMAINING = 263 + // FI_PWR_SMOOTHING_MAX_NUM_PRESET_PROFILES as defined in nvml/nvml.h + FI_PWR_SMOOTHING_MAX_NUM_PRESET_PROFILES = 264 + // FI_PWR_SMOOTHING_PROFILE_PERCENT_TMP_FLOOR as defined in nvml/nvml.h + FI_PWR_SMOOTHING_PROFILE_PERCENT_TMP_FLOOR = 265 + // FI_PWR_SMOOTHING_PROFILE_RAMP_UP_RATE as defined in nvml/nvml.h + FI_PWR_SMOOTHING_PROFILE_RAMP_UP_RATE = 266 + // FI_PWR_SMOOTHING_PROFILE_RAMP_DOWN_RATE as defined in nvml/nvml.h + FI_PWR_SMOOTHING_PROFILE_RAMP_DOWN_RATE = 267 + // FI_PWR_SMOOTHING_PROFILE_RAMP_DOWN_HYST_VAL as defined in nvml/nvml.h + FI_PWR_SMOOTHING_PROFILE_RAMP_DOWN_HYST_VAL = 268 + // FI_PWR_SMOOTHING_ACTIVE_PRESET_PROFILE as defined in nvml/nvml.h + FI_PWR_SMOOTHING_ACTIVE_PRESET_PROFILE = 269 + // FI_PWR_SMOOTHING_ADMIN_OVERRIDE_PERCENT_TMP_FLOOR as defined in nvml/nvml.h + FI_PWR_SMOOTHING_ADMIN_OVERRIDE_PERCENT_TMP_FLOOR = 270 + // FI_PWR_SMOOTHING_ADMIN_OVERRIDE_RAMP_UP_RATE as defined in nvml/nvml.h + FI_PWR_SMOOTHING_ADMIN_OVERRIDE_RAMP_UP_RATE = 271 + // FI_PWR_SMOOTHING_ADMIN_OVERRIDE_RAMP_DOWN_RATE as defined in nvml/nvml.h + FI_PWR_SMOOTHING_ADMIN_OVERRIDE_RAMP_DOWN_RATE = 272 + // FI_PWR_SMOOTHING_ADMIN_OVERRIDE_RAMP_DOWN_HYST_VAL as defined in nvml/nvml.h + FI_PWR_SMOOTHING_ADMIN_OVERRIDE_RAMP_DOWN_HYST_VAL = 273 // FI_MAX as defined in nvml/nvml.h - FI_MAX = 200 + FI_MAX = 274 + // NVLINK_LOW_POWER_THRESHOLD_UNIT_100US as defined in nvml/nvml.h + NVLINK_LOW_POWER_THRESHOLD_UNIT_100US = 0 + // NVLINK_LOW_POWER_THRESHOLD_UNIT_50US as defined in nvml/nvml.h + NVLINK_LOW_POWER_THRESHOLD_UNIT_50US = 1 + // NVLINK_POWER_STATE_HIGH_SPEED as defined in nvml/nvml.h + NVLINK_POWER_STATE_HIGH_SPEED = 0 + // NVLINK_POWER_STATE_LOW as defined in nvml/nvml.h + NVLINK_POWER_STATE_LOW = 1 + // NVLINK_LOW_POWER_THRESHOLD_MIN as defined in nvml/nvml.h + NVLINK_LOW_POWER_THRESHOLD_MIN = 1 + // NVLINK_LOW_POWER_THRESHOLD_MAX as defined in nvml/nvml.h + NVLINK_LOW_POWER_THRESHOLD_MAX = 8191 + // NVLINK_LOW_POWER_THRESHOLD_RESET as defined in nvml/nvml.h + NVLINK_LOW_POWER_THRESHOLD_RESET = 4294967295 + // NVLINK_LOW_POWER_THRESHOLD_DEFAULT as defined in nvml/nvml.h + NVLINK_LOW_POWER_THRESHOLD_DEFAULT = 4294967295 + // C2C_POWER_STATE_FULL_POWER as defined in nvml/nvml.h + C2C_POWER_STATE_FULL_POWER = 0 + // C2C_POWER_STATE_LOW_POWER as defined in nvml/nvml.h + C2C_POWER_STATE_LOW_POWER = 1 + // EventTypeNone as defined in nvml/nvml.h + EventTypeNone = 0 // EventTypeSingleBitEccError as defined in nvml/nvml.h EventTypeSingleBitEccError = 1 // EventTypeDoubleBitEccError as defined in nvml/nvml.h @@ -580,10 +796,28 @@ const ( EventTypePowerSourceChange = 128 // EventMigConfigChange as defined in nvml/nvml.h EventMigConfigChange = 256 - // EventTypeNone as defined in nvml/nvml.h - EventTypeNone = 0 + // EventTypeSingleBitEccErrorStorm as defined in nvml/nvml.h + EventTypeSingleBitEccErrorStorm = 512 + // EventTypeDramRetirementEvent as defined in nvml/nvml.h + EventTypeDramRetirementEvent = 1024 + // EventTypeDramRetirementFailure as defined in nvml/nvml.h + EventTypeDramRetirementFailure = 2048 + // EventTypeNonFatalPoisonError as defined in nvml/nvml.h + EventTypeNonFatalPoisonError = 4096 + // EventTypeFatalPoisonError as defined in nvml/nvml.h + EventTypeFatalPoisonError = 8192 + // EventTypeGpuUnavailableError as defined in nvml/nvml.h + EventTypeGpuUnavailableError = 16384 + // EventTypeGpuRecoveryAction as defined in nvml/nvml.h + EventTypeGpuRecoveryAction = 32768 // EventTypeAll as defined in nvml/nvml.h - EventTypeAll = 415 + EventTypeAll = 65439 + // SystemEventTypeGpuDriverUnbind as defined in nvml/nvml.h + SystemEventTypeGpuDriverUnbind = 1 + // SystemEventTypeGpuDriverBind as defined in nvml/nvml.h + SystemEventTypeGpuDriverBind = 2 + // SystemEventTypeCount as defined in nvml/nvml.h + SystemEventTypeCount = 2 // ClocksEventReasonGpuIdle as defined in nvml/nvml.h ClocksEventReasonGpuIdle = 1 // ClocksEventReasonApplicationsClocksSetting as defined in nvml/nvml.h @@ -640,6 +874,10 @@ const ( CC_SYSTEM_CPU_CAPS_AMD_SEV = 1 // CC_SYSTEM_CPU_CAPS_INTEL_TDX as defined in nvml/nvml.h CC_SYSTEM_CPU_CAPS_INTEL_TDX = 2 + // CC_SYSTEM_CPU_CAPS_AMD_SEV_SNP as defined in nvml/nvml.h + CC_SYSTEM_CPU_CAPS_AMD_SEV_SNP = 3 + // CC_SYSTEM_CPU_CAPS_AMD_SNP_VTOM as defined in nvml/nvml.h + CC_SYSTEM_CPU_CAPS_AMD_SNP_VTOM = 4 // CC_SYSTEM_GPUS_CC_NOT_CAPABLE as defined in nvml/nvml.h CC_SYSTEM_GPUS_CC_NOT_CAPABLE = 0 // CC_SYSTEM_GPUS_CC_CAPABLE as defined in nvml/nvml.h @@ -683,7 +921,7 @@ const ( // CC_KEY_ROTATION_THRESHOLD_ATTACKER_ADVANTAGE_MIN as defined in nvml/nvml.h CC_KEY_ROTATION_THRESHOLD_ATTACKER_ADVANTAGE_MIN = 50 // CC_KEY_ROTATION_THRESHOLD_ATTACKER_ADVANTAGE_MAX as defined in nvml/nvml.h - CC_KEY_ROTATION_THRESHOLD_ATTACKER_ADVANTAGE_MAX = 75 + CC_KEY_ROTATION_THRESHOLD_ATTACKER_ADVANTAGE_MAX = 65 // GPU_FABRIC_UUID_LEN as defined in nvml/nvml.h GPU_FABRIC_UUID_LEN = 16 // GPU_FABRIC_STATE_NOT_SUPPORTED as defined in nvml/nvml.h @@ -703,13 +941,37 @@ const ( // GPU_FABRIC_HEALTH_MASK_SHIFT_DEGRADED_BW as defined in nvml/nvml.h GPU_FABRIC_HEALTH_MASK_SHIFT_DEGRADED_BW = 0 // GPU_FABRIC_HEALTH_MASK_WIDTH_DEGRADED_BW as defined in nvml/nvml.h - GPU_FABRIC_HEALTH_MASK_WIDTH_DEGRADED_BW = 17 - // POWER_SCOPE_GPU as defined in nvml/nvml.h - POWER_SCOPE_GPU = 0 - // POWER_SCOPE_MODULE as defined in nvml/nvml.h - POWER_SCOPE_MODULE = 1 - // POWER_SCOPE_MEMORY as defined in nvml/nvml.h - POWER_SCOPE_MEMORY = 2 + GPU_FABRIC_HEALTH_MASK_WIDTH_DEGRADED_BW = 3 + // GPU_FABRIC_HEALTH_MASK_ROUTE_RECOVERY_NOT_SUPPORTED as defined in nvml/nvml.h + GPU_FABRIC_HEALTH_MASK_ROUTE_RECOVERY_NOT_SUPPORTED = 0 + // GPU_FABRIC_HEALTH_MASK_ROUTE_RECOVERY_TRUE as defined in nvml/nvml.h + GPU_FABRIC_HEALTH_MASK_ROUTE_RECOVERY_TRUE = 1 + // GPU_FABRIC_HEALTH_MASK_ROUTE_RECOVERY_FALSE as defined in nvml/nvml.h + GPU_FABRIC_HEALTH_MASK_ROUTE_RECOVERY_FALSE = 2 + // GPU_FABRIC_HEALTH_MASK_SHIFT_ROUTE_RECOVERY as defined in nvml/nvml.h + GPU_FABRIC_HEALTH_MASK_SHIFT_ROUTE_RECOVERY = 2 + // GPU_FABRIC_HEALTH_MASK_WIDTH_ROUTE_RECOVERY as defined in nvml/nvml.h + GPU_FABRIC_HEALTH_MASK_WIDTH_ROUTE_RECOVERY = 3 + // GPU_FABRIC_HEALTH_MASK_ROUTE_UNHEALTHY_NOT_SUPPORTED as defined in nvml/nvml.h + GPU_FABRIC_HEALTH_MASK_ROUTE_UNHEALTHY_NOT_SUPPORTED = 0 + // GPU_FABRIC_HEALTH_MASK_ROUTE_UNHEALTHY_TRUE as defined in nvml/nvml.h + GPU_FABRIC_HEALTH_MASK_ROUTE_UNHEALTHY_TRUE = 1 + // GPU_FABRIC_HEALTH_MASK_ROUTE_UNHEALTHY_FALSE as defined in nvml/nvml.h + GPU_FABRIC_HEALTH_MASK_ROUTE_UNHEALTHY_FALSE = 2 + // GPU_FABRIC_HEALTH_MASK_SHIFT_ROUTE_UNHEALTHY as defined in nvml/nvml.h + GPU_FABRIC_HEALTH_MASK_SHIFT_ROUTE_UNHEALTHY = 4 + // GPU_FABRIC_HEALTH_MASK_WIDTH_ROUTE_UNHEALTHY as defined in nvml/nvml.h + GPU_FABRIC_HEALTH_MASK_WIDTH_ROUTE_UNHEALTHY = 3 + // GPU_FABRIC_HEALTH_MASK_ACCESS_TIMEOUT_RECOVERY_NOT_SUPPORTED as defined in nvml/nvml.h + GPU_FABRIC_HEALTH_MASK_ACCESS_TIMEOUT_RECOVERY_NOT_SUPPORTED = 0 + // GPU_FABRIC_HEALTH_MASK_ACCESS_TIMEOUT_RECOVERY_TRUE as defined in nvml/nvml.h + GPU_FABRIC_HEALTH_MASK_ACCESS_TIMEOUT_RECOVERY_TRUE = 1 + // GPU_FABRIC_HEALTH_MASK_ACCESS_TIMEOUT_RECOVERY_FALSE as defined in nvml/nvml.h + GPU_FABRIC_HEALTH_MASK_ACCESS_TIMEOUT_RECOVERY_FALSE = 2 + // GPU_FABRIC_HEALTH_MASK_SHIFT_ACCESS_TIMEOUT_RECOVERY as defined in nvml/nvml.h + GPU_FABRIC_HEALTH_MASK_SHIFT_ACCESS_TIMEOUT_RECOVERY = 6 + // GPU_FABRIC_HEALTH_MASK_WIDTH_ACCESS_TIMEOUT_RECOVERY as defined in nvml/nvml.h + GPU_FABRIC_HEALTH_MASK_WIDTH_ACCESS_TIMEOUT_RECOVERY = 3 // INIT_FLAG_NO_GPUS as defined in nvml/nvml.h INIT_FLAG_NO_GPUS = 1 // INIT_FLAG_NO_ATTACH as defined in nvml/nvml.h @@ -738,6 +1000,22 @@ const ( AFFINITY_SCOPE_NODE = 0 // AFFINITY_SCOPE_SOCKET as defined in nvml/nvml.h AFFINITY_SCOPE_SOCKET = 1 + // NVLINK_BER_MANTISSA_SHIFT as defined in nvml/nvml.h + NVLINK_BER_MANTISSA_SHIFT = 8 + // NVLINK_BER_MANTISSA_WIDTH as defined in nvml/nvml.h + NVLINK_BER_MANTISSA_WIDTH = 15 + // NVLINK_BER_EXP_SHIFT as defined in nvml/nvml.h + NVLINK_BER_EXP_SHIFT = 0 + // NVLINK_BER_EXP_WIDTH as defined in nvml/nvml.h + NVLINK_BER_EXP_WIDTH = 255 + // NVLINK_STATE_INACTIVE as defined in nvml/nvml.h + NVLINK_STATE_INACTIVE = 0 + // NVLINK_STATE_ACTIVE as defined in nvml/nvml.h + NVLINK_STATE_ACTIVE = 1 + // NVLINK_STATE_SLEEP as defined in nvml/nvml.h + NVLINK_STATE_SLEEP = 2 + // NVLINK_TOTAL_SUPPORTED_BW_MODES as defined in nvml/nvml.h + NVLINK_TOTAL_SUPPORTED_BW_MODES = 23 // DEVICE_MIG_DISABLE as defined in nvml/nvml.h DEVICE_MIG_DISABLE = 0 // DEVICE_MIG_ENABLE as defined in nvml/nvml.h @@ -762,10 +1040,30 @@ const ( GPU_INSTANCE_PROFILE_2_SLICE_REV1 = 8 // GPU_INSTANCE_PROFILE_1_SLICE_REV2 as defined in nvml/nvml.h GPU_INSTANCE_PROFILE_1_SLICE_REV2 = 9 + // GPU_INSTANCE_PROFILE_1_SLICE_GFX as defined in nvml/nvml.h + GPU_INSTANCE_PROFILE_1_SLICE_GFX = 10 + // GPU_INSTANCE_PROFILE_2_SLICE_GFX as defined in nvml/nvml.h + GPU_INSTANCE_PROFILE_2_SLICE_GFX = 11 + // GPU_INSTANCE_PROFILE_4_SLICE_GFX as defined in nvml/nvml.h + GPU_INSTANCE_PROFILE_4_SLICE_GFX = 12 + // GPU_INSTANCE_PROFILE_1_SLICE_NO_ME as defined in nvml/nvml.h + GPU_INSTANCE_PROFILE_1_SLICE_NO_ME = 13 + // GPU_INSTANCE_PROFILE_2_SLICE_NO_ME as defined in nvml/nvml.h + GPU_INSTANCE_PROFILE_2_SLICE_NO_ME = 14 + // GPU_INSTANCE_PROFILE_1_SLICE_ALL_ME as defined in nvml/nvml.h + GPU_INSTANCE_PROFILE_1_SLICE_ALL_ME = 15 + // GPU_INSTANCE_PROFILE_2_SLICE_ALL_ME as defined in nvml/nvml.h + GPU_INSTANCE_PROFILE_2_SLICE_ALL_ME = 16 // GPU_INSTANCE_PROFILE_COUNT as defined in nvml/nvml.h - GPU_INSTANCE_PROFILE_COUNT = 10 + GPU_INSTANCE_PROFILE_COUNT = 17 + // GPU_INSTANCE_PROFILE_CAPS_P2P as defined in nvml/nvml.h + GPU_INSTANCE_PROFILE_CAPS_P2P = 1 // GPU_INTSTANCE_PROFILE_CAPS_P2P as defined in nvml/nvml.h GPU_INTSTANCE_PROFILE_CAPS_P2P = 1 + // GPU_INSTANCE_PROFILE_CAPS_GFX as defined in nvml/nvml.h + GPU_INSTANCE_PROFILE_CAPS_GFX = 2 + // COMPUTE_INSTANCE_PROFILE_CAPS_GFX as defined in nvml/nvml.h + COMPUTE_INSTANCE_PROFILE_CAPS_GFX = 1 // COMPUTE_INSTANCE_PROFILE_1_SLICE as defined in nvml/nvml.h COMPUTE_INSTANCE_PROFILE_1_SLICE = 0 // COMPUTE_INSTANCE_PROFILE_2_SLICE as defined in nvml/nvml.h @@ -792,16 +1090,24 @@ const ( GPM_METRICS_GET_VERSION = 1 // GPM_SUPPORT_VERSION as defined in nvml/nvml.h GPM_SUPPORT_VERSION = 1 - // NVLINK_POWER_STATE_HIGH_SPEED as defined in nvml/nvml.h - NVLINK_POWER_STATE_HIGH_SPEED = 0 - // NVLINK_POWER_STATE_LOW as defined in nvml/nvml.h - NVLINK_POWER_STATE_LOW = 1 - // NVLINK_LOW_POWER_THRESHOLD_MIN as defined in nvml/nvml.h - NVLINK_LOW_POWER_THRESHOLD_MIN = 1 - // NVLINK_LOW_POWER_THRESHOLD_MAX as defined in nvml/nvml.h - NVLINK_LOW_POWER_THRESHOLD_MAX = 8191 - // NVLINK_LOW_POWER_THRESHOLD_RESET as defined in nvml/nvml.h - NVLINK_LOW_POWER_THRESHOLD_RESET = 4294967295 + // DEV_CAP_EGM as defined in nvml/nvml.h + DEV_CAP_EGM = 1 + // WORKLOAD_POWER_MAX_PROFILES as defined in nvml/nvml.h + WORKLOAD_POWER_MAX_PROFILES = 255 + // POWER_SMOOTHING_MAX_NUM_PROFILES as defined in nvml/nvml.h + POWER_SMOOTHING_MAX_NUM_PROFILES = 5 + // POWER_SMOOTHING_NUM_PROFILE_PARAMS as defined in nvml/nvml.h + POWER_SMOOTHING_NUM_PROFILE_PARAMS = 4 + // POWER_SMOOTHING_ADMIN_OVERRIDE_NOT_SET as defined in nvml/nvml.h + POWER_SMOOTHING_ADMIN_OVERRIDE_NOT_SET = 4294967295 + // POWER_SMOOTHING_PROFILE_PARAM_PERCENT_TMP_FLOOR as defined in nvml/nvml.h + POWER_SMOOTHING_PROFILE_PARAM_PERCENT_TMP_FLOOR = 0 + // POWER_SMOOTHING_PROFILE_PARAM_RAMP_UP_RATE as defined in nvml/nvml.h + POWER_SMOOTHING_PROFILE_PARAM_RAMP_UP_RATE = 1 + // POWER_SMOOTHING_PROFILE_PARAM_RAMP_DOWN_RATE as defined in nvml/nvml.h + POWER_SMOOTHING_PROFILE_PARAM_RAMP_DOWN_RATE = 2 + // POWER_SMOOTHING_PROFILE_PARAM_RAMP_DOWN_HYSTERESIS as defined in nvml/nvml.h + POWER_SMOOTHING_PROFILE_PARAM_RAMP_DOWN_HYSTERESIS = 3 ) // BridgeChipType as declared in nvml/nvml.h @@ -960,7 +1266,8 @@ const ( VALUE_TYPE_UNSIGNED_LONG_LONG ValueType = 3 VALUE_TYPE_SIGNED_LONG_LONG ValueType = 4 VALUE_TYPE_SIGNED_INT ValueType = 5 - VALUE_TYPE_COUNT ValueType = 6 + VALUE_TYPE_UNSIGNED_SHORT ValueType = 6 + VALUE_TYPE_COUNT ValueType = 7 ) // PerfPolicyType as declared in nvml/nvml.h @@ -979,6 +1286,29 @@ const ( PERF_POLICY_COUNT PerfPolicyType = 12 ) +// CoolerControl as declared in nvml/nvml.h +type CoolerControl int32 + +// CoolerControl enumeration from nvml/nvml.h +const ( + THERMAL_COOLER_SIGNAL_NONE CoolerControl = iota + THERMAL_COOLER_SIGNAL_TOGGLE CoolerControl = 1 + THERMAL_COOLER_SIGNAL_VARIABLE CoolerControl = 2 + THERMAL_COOLER_SIGNAL_COUNT CoolerControl = 3 +) + +// CoolerTarget as declared in nvml/nvml.h +type CoolerTarget int32 + +// CoolerTarget enumeration from nvml/nvml.h +const ( + THERMAL_COOLER_TARGET_NONE CoolerTarget = 1 + THERMAL_COOLER_TARGET_GPU CoolerTarget = 2 + THERMAL_COOLER_TARGET_MEMORY CoolerTarget = 4 + THERMAL_COOLER_TARGET_POWER_SUPPLY CoolerTarget = 8 + THERMAL_COOLER_TARGET_GPU_RELATED CoolerTarget = 14 +) + // EnableState as declared in nvml/nvml.h type EnableState int32 @@ -1026,7 +1356,8 @@ const ( TEMPERATURE_THRESHOLD_ACOUSTIC_MIN TemperatureThresholds = 4 TEMPERATURE_THRESHOLD_ACOUSTIC_CURR TemperatureThresholds = 5 TEMPERATURE_THRESHOLD_ACOUSTIC_MAX TemperatureThresholds = 6 - TEMPERATURE_THRESHOLD_COUNT TemperatureThresholds = 7 + TEMPERATURE_THRESHOLD_GPS_CURR TemperatureThresholds = 7 + TEMPERATURE_THRESHOLD_COUNT TemperatureThresholds = 8 ) // TemperatureSensors as declared in nvml/nvml.h @@ -1060,6 +1391,21 @@ const ( MEMORY_ERROR_TYPE_COUNT MemoryErrorType = 2 ) +// NvlinkVersion as declared in nvml/nvml.h +type NvlinkVersion int32 + +// NvlinkVersion enumeration from nvml/nvml.h +const ( + NVLINK_VERSION_INVALID NvlinkVersion = iota + NVLINK_VERSION_1_0 NvlinkVersion = 1 + NVLINK_VERSION_2_0 NvlinkVersion = 2 + NVLINK_VERSION_2_2 NvlinkVersion = 3 + NVLINK_VERSION_3_0 NvlinkVersion = 4 + NVLINK_VERSION_3_1 NvlinkVersion = 5 + NVLINK_VERSION_4_0 NvlinkVersion = 6 + NVLINK_VERSION_5_0 NvlinkVersion = 7 +) + // EccCounterType as declared in nvml/nvml.h type EccCounterType int32 @@ -1101,6 +1447,7 @@ type DriverModel int32 const ( DRIVER_WDDM DriverModel = iota DRIVER_WDM DriverModel = 1 + DRIVER_MCDM DriverModel = 2 ) // Pstates as declared in nvml/nvml.h @@ -1145,7 +1492,8 @@ const ( INFOROM_OEM InforomObject = iota INFOROM_ECC InforomObject = 1 INFOROM_POWER InforomObject = 2 - INFOROM_COUNT InforomObject = 3 + INFOROM_DEN InforomObject = 3 + INFOROM_COUNT InforomObject = 4 ) // Return as declared in nvml/nvml.h @@ -1223,6 +1571,17 @@ const ( RESTRICTED_API_COUNT RestrictedAPI = 2 ) +// GpuUtilizationDomainId as declared in nvml/nvml.h +type GpuUtilizationDomainId int32 + +// GpuUtilizationDomainId enumeration from nvml/nvml.h +const ( + GPU_UTILIZATION_DOMAIN_GPU GpuUtilizationDomainId = iota + GPU_UTILIZATION_DOMAIN_FB GpuUtilizationDomainId = 1 + GPU_UTILIZATION_DOMAIN_VID GpuUtilizationDomainId = 2 + GPU_UTILIZATION_DOMAIN_BUS GpuUtilizationDomainId = 3 +) + // GpuVirtualizationMode as declared in nvml/nvml.h type GpuVirtualizationMode int32 @@ -1281,7 +1640,8 @@ type VgpuDriverCapability int32 // VgpuDriverCapability enumeration from nvml/nvml.h const ( VGPU_DRIVER_CAP_HETEROGENEOUS_MULTI_VGPU VgpuDriverCapability = iota - VGPU_DRIVER_CAP_COUNT VgpuDriverCapability = 1 + VGPU_DRIVER_CAP_WARM_UPDATE VgpuDriverCapability = 1 + VGPU_DRIVER_CAP_COUNT VgpuDriverCapability = 2 ) // DeviceVgpuCapability as declared in nvml/nvml.h @@ -1297,18 +1657,23 @@ const ( DEVICE_VGPU_CAP_DEVICE_STREAMING DeviceVgpuCapability = 5 DEVICE_VGPU_CAP_MINI_QUARTER_GPU DeviceVgpuCapability = 6 DEVICE_VGPU_CAP_COMPUTE_MEDIA_ENGINE_GPU DeviceVgpuCapability = 7 - DEVICE_VGPU_CAP_COUNT DeviceVgpuCapability = 8 + DEVICE_VGPU_CAP_WARM_UPDATE DeviceVgpuCapability = 8 + DEVICE_VGPU_CAP_HOMOGENEOUS_PLACEMENTS DeviceVgpuCapability = 9 + DEVICE_VGPU_CAP_MIG_TIMESLICING_SUPPORTED DeviceVgpuCapability = 10 + DEVICE_VGPU_CAP_MIG_TIMESLICING_ENABLED DeviceVgpuCapability = 11 + DEVICE_VGPU_CAP_COUNT DeviceVgpuCapability = 12 ) -// GpuUtilizationDomainId as declared in nvml/nvml.h -type GpuUtilizationDomainId int32 +// DeviceGpuRecoveryAction as declared in nvml/nvml.h +type DeviceGpuRecoveryAction int32 -// GpuUtilizationDomainId enumeration from nvml/nvml.h +// DeviceGpuRecoveryAction enumeration from nvml/nvml.h const ( - GPU_UTILIZATION_DOMAIN_GPU GpuUtilizationDomainId = iota - GPU_UTILIZATION_DOMAIN_FB GpuUtilizationDomainId = 1 - GPU_UTILIZATION_DOMAIN_VID GpuUtilizationDomainId = 2 - GPU_UTILIZATION_DOMAIN_BUS GpuUtilizationDomainId = 3 + GPU_RECOVERY_ACTION_NONE DeviceGpuRecoveryAction = iota + GPU_RECOVERY_ACTION_GPU_RESET DeviceGpuRecoveryAction = 1 + GPU_RECOVERY_ACTION_NODE_REBOOT DeviceGpuRecoveryAction = 2 + GPU_RECOVERY_ACTION_DRAIN_P2P DeviceGpuRecoveryAction = 3 + GPU_RECOVERY_ACTION_DRAIN_AND_RESET DeviceGpuRecoveryAction = 4 ) // FanState as declared in nvml/nvml.h @@ -1447,6 +1812,16 @@ const ( THERMAL_CONTROLLER_UNKNOWN ThermalController = -1 ) +// UUIDType as declared in nvml/nvml.h +type UUIDType int32 + +// UUIDType enumeration from nvml/nvml.h +const ( + UUID_TYPE_NONE UUIDType = iota + UUID_TYPE_ASCII UUIDType = 1 + UUID_TYPE_BINARY UUIDType = 2 +) + // GridLicenseFeatureCode as declared in nvml/nvml.h type GridLicenseFeatureCode int32 @@ -1465,74 +1840,208 @@ type GpmMetricId int32 // GpmMetricId enumeration from nvml/nvml.h const ( - GPM_METRIC_GRAPHICS_UTIL GpmMetricId = 1 - GPM_METRIC_SM_UTIL GpmMetricId = 2 - GPM_METRIC_SM_OCCUPANCY GpmMetricId = 3 - GPM_METRIC_INTEGER_UTIL GpmMetricId = 4 - GPM_METRIC_ANY_TENSOR_UTIL GpmMetricId = 5 - GPM_METRIC_DFMA_TENSOR_UTIL GpmMetricId = 6 - GPM_METRIC_HMMA_TENSOR_UTIL GpmMetricId = 7 - GPM_METRIC_IMMA_TENSOR_UTIL GpmMetricId = 9 - GPM_METRIC_DRAM_BW_UTIL GpmMetricId = 10 - GPM_METRIC_FP64_UTIL GpmMetricId = 11 - GPM_METRIC_FP32_UTIL GpmMetricId = 12 - GPM_METRIC_FP16_UTIL GpmMetricId = 13 - GPM_METRIC_PCIE_TX_PER_SEC GpmMetricId = 20 - GPM_METRIC_PCIE_RX_PER_SEC GpmMetricId = 21 - GPM_METRIC_NVDEC_0_UTIL GpmMetricId = 30 - GPM_METRIC_NVDEC_1_UTIL GpmMetricId = 31 - GPM_METRIC_NVDEC_2_UTIL GpmMetricId = 32 - GPM_METRIC_NVDEC_3_UTIL GpmMetricId = 33 - GPM_METRIC_NVDEC_4_UTIL GpmMetricId = 34 - GPM_METRIC_NVDEC_5_UTIL GpmMetricId = 35 - GPM_METRIC_NVDEC_6_UTIL GpmMetricId = 36 - GPM_METRIC_NVDEC_7_UTIL GpmMetricId = 37 - GPM_METRIC_NVJPG_0_UTIL GpmMetricId = 40 - GPM_METRIC_NVJPG_1_UTIL GpmMetricId = 41 - GPM_METRIC_NVJPG_2_UTIL GpmMetricId = 42 - GPM_METRIC_NVJPG_3_UTIL GpmMetricId = 43 - GPM_METRIC_NVJPG_4_UTIL GpmMetricId = 44 - GPM_METRIC_NVJPG_5_UTIL GpmMetricId = 45 - GPM_METRIC_NVJPG_6_UTIL GpmMetricId = 46 - GPM_METRIC_NVJPG_7_UTIL GpmMetricId = 47 - GPM_METRIC_NVOFA_0_UTIL GpmMetricId = 50 - GPM_METRIC_NVLINK_TOTAL_RX_PER_SEC GpmMetricId = 60 - GPM_METRIC_NVLINK_TOTAL_TX_PER_SEC GpmMetricId = 61 - GPM_METRIC_NVLINK_L0_RX_PER_SEC GpmMetricId = 62 - GPM_METRIC_NVLINK_L0_TX_PER_SEC GpmMetricId = 63 - GPM_METRIC_NVLINK_L1_RX_PER_SEC GpmMetricId = 64 - GPM_METRIC_NVLINK_L1_TX_PER_SEC GpmMetricId = 65 - GPM_METRIC_NVLINK_L2_RX_PER_SEC GpmMetricId = 66 - GPM_METRIC_NVLINK_L2_TX_PER_SEC GpmMetricId = 67 - GPM_METRIC_NVLINK_L3_RX_PER_SEC GpmMetricId = 68 - GPM_METRIC_NVLINK_L3_TX_PER_SEC GpmMetricId = 69 - GPM_METRIC_NVLINK_L4_RX_PER_SEC GpmMetricId = 70 - GPM_METRIC_NVLINK_L4_TX_PER_SEC GpmMetricId = 71 - GPM_METRIC_NVLINK_L5_RX_PER_SEC GpmMetricId = 72 - GPM_METRIC_NVLINK_L5_TX_PER_SEC GpmMetricId = 73 - GPM_METRIC_NVLINK_L6_RX_PER_SEC GpmMetricId = 74 - GPM_METRIC_NVLINK_L6_TX_PER_SEC GpmMetricId = 75 - GPM_METRIC_NVLINK_L7_RX_PER_SEC GpmMetricId = 76 - GPM_METRIC_NVLINK_L7_TX_PER_SEC GpmMetricId = 77 - GPM_METRIC_NVLINK_L8_RX_PER_SEC GpmMetricId = 78 - GPM_METRIC_NVLINK_L8_TX_PER_SEC GpmMetricId = 79 - GPM_METRIC_NVLINK_L9_RX_PER_SEC GpmMetricId = 80 - GPM_METRIC_NVLINK_L9_TX_PER_SEC GpmMetricId = 81 - GPM_METRIC_NVLINK_L10_RX_PER_SEC GpmMetricId = 82 - GPM_METRIC_NVLINK_L10_TX_PER_SEC GpmMetricId = 83 - GPM_METRIC_NVLINK_L11_RX_PER_SEC GpmMetricId = 84 - GPM_METRIC_NVLINK_L11_TX_PER_SEC GpmMetricId = 85 - GPM_METRIC_NVLINK_L12_RX_PER_SEC GpmMetricId = 86 - GPM_METRIC_NVLINK_L12_TX_PER_SEC GpmMetricId = 87 - GPM_METRIC_NVLINK_L13_RX_PER_SEC GpmMetricId = 88 - GPM_METRIC_NVLINK_L13_TX_PER_SEC GpmMetricId = 89 - GPM_METRIC_NVLINK_L14_RX_PER_SEC GpmMetricId = 90 - GPM_METRIC_NVLINK_L14_TX_PER_SEC GpmMetricId = 91 - GPM_METRIC_NVLINK_L15_RX_PER_SEC GpmMetricId = 92 - GPM_METRIC_NVLINK_L15_TX_PER_SEC GpmMetricId = 93 - GPM_METRIC_NVLINK_L16_RX_PER_SEC GpmMetricId = 94 - GPM_METRIC_NVLINK_L16_TX_PER_SEC GpmMetricId = 95 - GPM_METRIC_NVLINK_L17_RX_PER_SEC GpmMetricId = 96 - GPM_METRIC_NVLINK_L17_TX_PER_SEC GpmMetricId = 97 - GPM_METRIC_MAX GpmMetricId = 98 + GPM_METRIC_GRAPHICS_UTIL GpmMetricId = 1 + GPM_METRIC_SM_UTIL GpmMetricId = 2 + GPM_METRIC_SM_OCCUPANCY GpmMetricId = 3 + GPM_METRIC_INTEGER_UTIL GpmMetricId = 4 + GPM_METRIC_ANY_TENSOR_UTIL GpmMetricId = 5 + GPM_METRIC_DFMA_TENSOR_UTIL GpmMetricId = 6 + GPM_METRIC_HMMA_TENSOR_UTIL GpmMetricId = 7 + GPM_METRIC_IMMA_TENSOR_UTIL GpmMetricId = 9 + GPM_METRIC_DRAM_BW_UTIL GpmMetricId = 10 + GPM_METRIC_FP64_UTIL GpmMetricId = 11 + GPM_METRIC_FP32_UTIL GpmMetricId = 12 + GPM_METRIC_FP16_UTIL GpmMetricId = 13 + GPM_METRIC_PCIE_TX_PER_SEC GpmMetricId = 20 + GPM_METRIC_PCIE_RX_PER_SEC GpmMetricId = 21 + GPM_METRIC_NVDEC_0_UTIL GpmMetricId = 30 + GPM_METRIC_NVDEC_1_UTIL GpmMetricId = 31 + GPM_METRIC_NVDEC_2_UTIL GpmMetricId = 32 + GPM_METRIC_NVDEC_3_UTIL GpmMetricId = 33 + GPM_METRIC_NVDEC_4_UTIL GpmMetricId = 34 + GPM_METRIC_NVDEC_5_UTIL GpmMetricId = 35 + GPM_METRIC_NVDEC_6_UTIL GpmMetricId = 36 + GPM_METRIC_NVDEC_7_UTIL GpmMetricId = 37 + GPM_METRIC_NVJPG_0_UTIL GpmMetricId = 40 + GPM_METRIC_NVJPG_1_UTIL GpmMetricId = 41 + GPM_METRIC_NVJPG_2_UTIL GpmMetricId = 42 + GPM_METRIC_NVJPG_3_UTIL GpmMetricId = 43 + GPM_METRIC_NVJPG_4_UTIL GpmMetricId = 44 + GPM_METRIC_NVJPG_5_UTIL GpmMetricId = 45 + GPM_METRIC_NVJPG_6_UTIL GpmMetricId = 46 + GPM_METRIC_NVJPG_7_UTIL GpmMetricId = 47 + GPM_METRIC_NVOFA_0_UTIL GpmMetricId = 50 + GPM_METRIC_NVOFA_1_UTIL GpmMetricId = 51 + GPM_METRIC_NVLINK_TOTAL_RX_PER_SEC GpmMetricId = 60 + GPM_METRIC_NVLINK_TOTAL_TX_PER_SEC GpmMetricId = 61 + GPM_METRIC_NVLINK_L0_RX_PER_SEC GpmMetricId = 62 + GPM_METRIC_NVLINK_L0_TX_PER_SEC GpmMetricId = 63 + GPM_METRIC_NVLINK_L1_RX_PER_SEC GpmMetricId = 64 + GPM_METRIC_NVLINK_L1_TX_PER_SEC GpmMetricId = 65 + GPM_METRIC_NVLINK_L2_RX_PER_SEC GpmMetricId = 66 + GPM_METRIC_NVLINK_L2_TX_PER_SEC GpmMetricId = 67 + GPM_METRIC_NVLINK_L3_RX_PER_SEC GpmMetricId = 68 + GPM_METRIC_NVLINK_L3_TX_PER_SEC GpmMetricId = 69 + GPM_METRIC_NVLINK_L4_RX_PER_SEC GpmMetricId = 70 + GPM_METRIC_NVLINK_L4_TX_PER_SEC GpmMetricId = 71 + GPM_METRIC_NVLINK_L5_RX_PER_SEC GpmMetricId = 72 + GPM_METRIC_NVLINK_L5_TX_PER_SEC GpmMetricId = 73 + GPM_METRIC_NVLINK_L6_RX_PER_SEC GpmMetricId = 74 + GPM_METRIC_NVLINK_L6_TX_PER_SEC GpmMetricId = 75 + GPM_METRIC_NVLINK_L7_RX_PER_SEC GpmMetricId = 76 + GPM_METRIC_NVLINK_L7_TX_PER_SEC GpmMetricId = 77 + GPM_METRIC_NVLINK_L8_RX_PER_SEC GpmMetricId = 78 + GPM_METRIC_NVLINK_L8_TX_PER_SEC GpmMetricId = 79 + GPM_METRIC_NVLINK_L9_RX_PER_SEC GpmMetricId = 80 + GPM_METRIC_NVLINK_L9_TX_PER_SEC GpmMetricId = 81 + GPM_METRIC_NVLINK_L10_RX_PER_SEC GpmMetricId = 82 + GPM_METRIC_NVLINK_L10_TX_PER_SEC GpmMetricId = 83 + GPM_METRIC_NVLINK_L11_RX_PER_SEC GpmMetricId = 84 + GPM_METRIC_NVLINK_L11_TX_PER_SEC GpmMetricId = 85 + GPM_METRIC_NVLINK_L12_RX_PER_SEC GpmMetricId = 86 + GPM_METRIC_NVLINK_L12_TX_PER_SEC GpmMetricId = 87 + GPM_METRIC_NVLINK_L13_RX_PER_SEC GpmMetricId = 88 + GPM_METRIC_NVLINK_L13_TX_PER_SEC GpmMetricId = 89 + GPM_METRIC_NVLINK_L14_RX_PER_SEC GpmMetricId = 90 + GPM_METRIC_NVLINK_L14_TX_PER_SEC GpmMetricId = 91 + GPM_METRIC_NVLINK_L15_RX_PER_SEC GpmMetricId = 92 + GPM_METRIC_NVLINK_L15_TX_PER_SEC GpmMetricId = 93 + GPM_METRIC_NVLINK_L16_RX_PER_SEC GpmMetricId = 94 + GPM_METRIC_NVLINK_L16_TX_PER_SEC GpmMetricId = 95 + GPM_METRIC_NVLINK_L17_RX_PER_SEC GpmMetricId = 96 + GPM_METRIC_NVLINK_L17_TX_PER_SEC GpmMetricId = 97 + GPM_METRIC_C2C_TOTAL_TX_PER_SEC GpmMetricId = 100 + GPM_METRIC_C2C_TOTAL_RX_PER_SEC GpmMetricId = 101 + GPM_METRIC_C2C_DATA_TX_PER_SEC GpmMetricId = 102 + GPM_METRIC_C2C_DATA_RX_PER_SEC GpmMetricId = 103 + GPM_METRIC_C2C_LINK0_TOTAL_TX_PER_SEC GpmMetricId = 104 + GPM_METRIC_C2C_LINK0_TOTAL_RX_PER_SEC GpmMetricId = 105 + GPM_METRIC_C2C_LINK0_DATA_TX_PER_SEC GpmMetricId = 106 + GPM_METRIC_C2C_LINK0_DATA_RX_PER_SEC GpmMetricId = 107 + GPM_METRIC_C2C_LINK1_TOTAL_TX_PER_SEC GpmMetricId = 108 + GPM_METRIC_C2C_LINK1_TOTAL_RX_PER_SEC GpmMetricId = 109 + GPM_METRIC_C2C_LINK1_DATA_TX_PER_SEC GpmMetricId = 110 + GPM_METRIC_C2C_LINK1_DATA_RX_PER_SEC GpmMetricId = 111 + GPM_METRIC_C2C_LINK2_TOTAL_TX_PER_SEC GpmMetricId = 112 + GPM_METRIC_C2C_LINK2_TOTAL_RX_PER_SEC GpmMetricId = 113 + GPM_METRIC_C2C_LINK2_DATA_TX_PER_SEC GpmMetricId = 114 + GPM_METRIC_C2C_LINK2_DATA_RX_PER_SEC GpmMetricId = 115 + GPM_METRIC_C2C_LINK3_TOTAL_TX_PER_SEC GpmMetricId = 116 + GPM_METRIC_C2C_LINK3_TOTAL_RX_PER_SEC GpmMetricId = 117 + GPM_METRIC_C2C_LINK3_DATA_TX_PER_SEC GpmMetricId = 118 + GPM_METRIC_C2C_LINK3_DATA_RX_PER_SEC GpmMetricId = 119 + GPM_METRIC_C2C_LINK4_TOTAL_TX_PER_SEC GpmMetricId = 120 + GPM_METRIC_C2C_LINK4_TOTAL_RX_PER_SEC GpmMetricId = 121 + GPM_METRIC_C2C_LINK4_DATA_TX_PER_SEC GpmMetricId = 122 + GPM_METRIC_C2C_LINK4_DATA_RX_PER_SEC GpmMetricId = 123 + GPM_METRIC_C2C_LINK5_TOTAL_TX_PER_SEC GpmMetricId = 124 + GPM_METRIC_C2C_LINK5_TOTAL_RX_PER_SEC GpmMetricId = 125 + GPM_METRIC_C2C_LINK5_DATA_TX_PER_SEC GpmMetricId = 126 + GPM_METRIC_C2C_LINK5_DATA_RX_PER_SEC GpmMetricId = 127 + GPM_METRIC_C2C_LINK6_TOTAL_TX_PER_SEC GpmMetricId = 128 + GPM_METRIC_C2C_LINK6_TOTAL_RX_PER_SEC GpmMetricId = 129 + GPM_METRIC_C2C_LINK6_DATA_TX_PER_SEC GpmMetricId = 130 + GPM_METRIC_C2C_LINK6_DATA_RX_PER_SEC GpmMetricId = 131 + GPM_METRIC_C2C_LINK7_TOTAL_TX_PER_SEC GpmMetricId = 132 + GPM_METRIC_C2C_LINK7_TOTAL_RX_PER_SEC GpmMetricId = 133 + GPM_METRIC_C2C_LINK7_DATA_TX_PER_SEC GpmMetricId = 134 + GPM_METRIC_C2C_LINK7_DATA_RX_PER_SEC GpmMetricId = 135 + GPM_METRIC_C2C_LINK8_TOTAL_TX_PER_SEC GpmMetricId = 136 + GPM_METRIC_C2C_LINK8_TOTAL_RX_PER_SEC GpmMetricId = 137 + GPM_METRIC_C2C_LINK8_DATA_TX_PER_SEC GpmMetricId = 138 + GPM_METRIC_C2C_LINK8_DATA_RX_PER_SEC GpmMetricId = 139 + GPM_METRIC_C2C_LINK9_TOTAL_TX_PER_SEC GpmMetricId = 140 + GPM_METRIC_C2C_LINK9_TOTAL_RX_PER_SEC GpmMetricId = 141 + GPM_METRIC_C2C_LINK9_DATA_TX_PER_SEC GpmMetricId = 142 + GPM_METRIC_C2C_LINK9_DATA_RX_PER_SEC GpmMetricId = 143 + GPM_METRIC_C2C_LINK10_TOTAL_TX_PER_SEC GpmMetricId = 144 + GPM_METRIC_C2C_LINK10_TOTAL_RX_PER_SEC GpmMetricId = 145 + GPM_METRIC_C2C_LINK10_DATA_TX_PER_SEC GpmMetricId = 146 + GPM_METRIC_C2C_LINK10_DATA_RX_PER_SEC GpmMetricId = 147 + GPM_METRIC_C2C_LINK11_TOTAL_TX_PER_SEC GpmMetricId = 148 + GPM_METRIC_C2C_LINK11_TOTAL_RX_PER_SEC GpmMetricId = 149 + GPM_METRIC_C2C_LINK11_DATA_TX_PER_SEC GpmMetricId = 150 + GPM_METRIC_C2C_LINK11_DATA_RX_PER_SEC GpmMetricId = 151 + GPM_METRIC_C2C_LINK12_TOTAL_TX_PER_SEC GpmMetricId = 152 + GPM_METRIC_C2C_LINK12_TOTAL_RX_PER_SEC GpmMetricId = 153 + GPM_METRIC_C2C_LINK12_DATA_TX_PER_SEC GpmMetricId = 154 + GPM_METRIC_C2C_LINK12_DATA_RX_PER_SEC GpmMetricId = 155 + GPM_METRIC_C2C_LINK13_TOTAL_TX_PER_SEC GpmMetricId = 156 + GPM_METRIC_C2C_LINK13_TOTAL_RX_PER_SEC GpmMetricId = 157 + GPM_METRIC_C2C_LINK13_DATA_TX_PER_SEC GpmMetricId = 158 + GPM_METRIC_C2C_LINK13_DATA_RX_PER_SEC GpmMetricId = 159 + GPM_METRIC_HOSTMEM_CACHE_HIT GpmMetricId = 160 + GPM_METRIC_HOSTMEM_CACHE_MISS GpmMetricId = 161 + GPM_METRIC_PEERMEM_CACHE_HIT GpmMetricId = 162 + GPM_METRIC_PEERMEM_CACHE_MISS GpmMetricId = 163 + GPM_METRIC_DRAM_CACHE_HIT GpmMetricId = 164 + GPM_METRIC_DRAM_CACHE_MISS GpmMetricId = 165 + GPM_METRIC_NVENC_0_UTIL GpmMetricId = 166 + GPM_METRIC_NVENC_1_UTIL GpmMetricId = 167 + GPM_METRIC_NVENC_2_UTIL GpmMetricId = 168 + GPM_METRIC_NVENC_3_UTIL GpmMetricId = 169 + GPM_METRIC_GR0_CTXSW_CYCLES_ELAPSED GpmMetricId = 170 + GPM_METRIC_GR0_CTXSW_CYCLES_ACTIVE GpmMetricId = 171 + GPM_METRIC_GR0_CTXSW_REQUESTS GpmMetricId = 172 + GPM_METRIC_GR0_CTXSW_CYCLES_PER_REQ GpmMetricId = 173 + GPM_METRIC_GR0_CTXSW_ACTIVE_PCT GpmMetricId = 174 + GPM_METRIC_GR1_CTXSW_CYCLES_ELAPSED GpmMetricId = 175 + GPM_METRIC_GR1_CTXSW_CYCLES_ACTIVE GpmMetricId = 176 + GPM_METRIC_GR1_CTXSW_REQUESTS GpmMetricId = 177 + GPM_METRIC_GR1_CTXSW_CYCLES_PER_REQ GpmMetricId = 178 + GPM_METRIC_GR1_CTXSW_ACTIVE_PCT GpmMetricId = 179 + GPM_METRIC_GR2_CTXSW_CYCLES_ELAPSED GpmMetricId = 180 + GPM_METRIC_GR2_CTXSW_CYCLES_ACTIVE GpmMetricId = 181 + GPM_METRIC_GR2_CTXSW_REQUESTS GpmMetricId = 182 + GPM_METRIC_GR2_CTXSW_CYCLES_PER_REQ GpmMetricId = 183 + GPM_METRIC_GR2_CTXSW_ACTIVE_PCT GpmMetricId = 184 + GPM_METRIC_GR3_CTXSW_CYCLES_ELAPSED GpmMetricId = 185 + GPM_METRIC_GR3_CTXSW_CYCLES_ACTIVE GpmMetricId = 186 + GPM_METRIC_GR3_CTXSW_REQUESTS GpmMetricId = 187 + GPM_METRIC_GR3_CTXSW_CYCLES_PER_REQ GpmMetricId = 188 + GPM_METRIC_GR3_CTXSW_ACTIVE_PCT GpmMetricId = 189 + GPM_METRIC_GR4_CTXSW_CYCLES_ELAPSED GpmMetricId = 190 + GPM_METRIC_GR4_CTXSW_CYCLES_ACTIVE GpmMetricId = 191 + GPM_METRIC_GR4_CTXSW_REQUESTS GpmMetricId = 192 + GPM_METRIC_GR4_CTXSW_CYCLES_PER_REQ GpmMetricId = 193 + GPM_METRIC_GR4_CTXSW_ACTIVE_PCT GpmMetricId = 194 + GPM_METRIC_GR5_CTXSW_CYCLES_ELAPSED GpmMetricId = 195 + GPM_METRIC_GR5_CTXSW_CYCLES_ACTIVE GpmMetricId = 196 + GPM_METRIC_GR5_CTXSW_REQUESTS GpmMetricId = 197 + GPM_METRIC_GR5_CTXSW_CYCLES_PER_REQ GpmMetricId = 198 + GPM_METRIC_GR5_CTXSW_ACTIVE_PCT GpmMetricId = 199 + GPM_METRIC_GR6_CTXSW_CYCLES_ELAPSED GpmMetricId = 200 + GPM_METRIC_GR6_CTXSW_CYCLES_ACTIVE GpmMetricId = 201 + GPM_METRIC_GR6_CTXSW_REQUESTS GpmMetricId = 202 + GPM_METRIC_GR6_CTXSW_CYCLES_PER_REQ GpmMetricId = 203 + GPM_METRIC_GR6_CTXSW_ACTIVE_PCT GpmMetricId = 204 + GPM_METRIC_GR7_CTXSW_CYCLES_ELAPSED GpmMetricId = 205 + GPM_METRIC_GR7_CTXSW_CYCLES_ACTIVE GpmMetricId = 206 + GPM_METRIC_GR7_CTXSW_REQUESTS GpmMetricId = 207 + GPM_METRIC_GR7_CTXSW_CYCLES_PER_REQ GpmMetricId = 208 + GPM_METRIC_GR7_CTXSW_ACTIVE_PCT GpmMetricId = 209 + GPM_METRIC_MAX GpmMetricId = 210 +) + +// PowerProfileType as declared in nvml/nvml.h +type PowerProfileType int32 + +// PowerProfileType enumeration from nvml/nvml.h +const ( + POWER_PROFILE_MAX_P PowerProfileType = iota + POWER_PROFILE_MAX_Q PowerProfileType = 1 + POWER_PROFILE_COMPUTE PowerProfileType = 2 + POWER_PROFILE_MEMORY_BOUND PowerProfileType = 3 + POWER_PROFILE_NETWORK PowerProfileType = 4 + POWER_PROFILE_BALANCED PowerProfileType = 5 + POWER_PROFILE_LLM_INFERENCE PowerProfileType = 6 + POWER_PROFILE_LLM_TRAINING PowerProfileType = 7 + POWER_PROFILE_RBM PowerProfileType = 8 + POWER_PROFILE_DCPCIE PowerProfileType = 9 + POWER_PROFILE_HMMA_SPARSE PowerProfileType = 10 + POWER_PROFILE_HMMA_DENSE PowerProfileType = 11 + POWER_PROFILE_SYNC_BALANCED PowerProfileType = 12 + POWER_PROFILE_HPC PowerProfileType = 13 + POWER_PROFILE_MIG PowerProfileType = 14 + POWER_PROFILE_MAX PowerProfileType = 15 ) diff --git a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/device.go b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/device.go index ac778e5ab..4784cd433 100644 --- a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/device.go +++ b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/device.go @@ -68,16 +68,6 @@ type GpuInstanceInfo struct { Placement GpuInstancePlacement } -func (g GpuInstanceInfo) convert() nvmlGpuInstanceInfo { - out := nvmlGpuInstanceInfo{ - Device: g.Device.(nvmlDevice), - Id: g.Id, - ProfileId: g.ProfileId, - Placement: g.Placement, - } - return out -} - func (g nvmlGpuInstanceInfo) convert() GpuInstanceInfo { out := GpuInstanceInfo{ Device: g.Device, @@ -97,17 +87,6 @@ type ComputeInstanceInfo struct { Placement ComputeInstancePlacement } -func (c ComputeInstanceInfo) convert() nvmlComputeInstanceInfo { - out := nvmlComputeInstanceInfo{ - Device: c.Device.(nvmlDevice), - GpuInstance: c.GpuInstance.(nvmlGpuInstance), - Id: c.Id, - ProfileId: c.ProfileId, - Placement: c.Placement, - } - return out -} - func (c nvmlComputeInstanceInfo) convert() ComputeInstanceInfo { out := ComputeInstanceInfo{ Device: c.Device, @@ -147,6 +126,13 @@ func (l *library) DeviceGetHandleByUUID(uuid string) (Device, Return) { return device, ret } +// nvml.DeviceGetHandleByUUIDV() +func (l *library) DeviceGetHandleByUUIDV(uuid *UUID) (Device, Return) { + var device nvmlDevice + ret := nvmlDeviceGetHandleByUUIDV(uuid, &device) + return device, ret +} + // nvml.DeviceGetHandleByPciBusId() func (l *library) DeviceGetHandleByPciBusId(pciBusId string) (Device, Return) { var device nvmlDevice @@ -2101,6 +2087,13 @@ func (handler GpuInstanceProfileInfoHandler) V2() (GpuInstanceProfileInfo_v2, Re return info, ret } +func (handler GpuInstanceProfileInfoHandler) V3() (GpuInstanceProfileInfo_v3, Return) { + var info GpuInstanceProfileInfo_v3 + info.Version = STRUCT_VERSION(info, 3) + ret := nvmlDeviceGetGpuInstanceProfileInfoV(handler.device, uint32(handler.profile), (*GpuInstanceProfileInfo_v2)(unsafe.Pointer(&info))) + return info, ret +} + func (l *library) DeviceGetGpuInstanceProfileInfoV(device Device, profile int) GpuInstanceProfileInfoHandler { return device.GetGpuInstanceProfileInfoV(profile) } @@ -2191,7 +2184,7 @@ func (device nvmlDevice) GetGpuInstances(info *GpuInstanceProfileInfo) ([]GpuIns if info == nil { return nil, ERROR_INVALID_ARGUMENT } - var count uint32 = info.InstanceCount + var count = info.InstanceCount gpuInstances := make([]nvmlGpuInstance, count) ret := nvmlDeviceGetGpuInstances(device, info.Id, &gpuInstances[0], &count) return convertSlice[nvmlGpuInstance, GpuInstance](gpuInstances[:count]), ret @@ -2248,6 +2241,13 @@ func (handler ComputeInstanceProfileInfoHandler) V2() (ComputeInstanceProfileInf return info, ret } +func (handler ComputeInstanceProfileInfoHandler) V3() (ComputeInstanceProfileInfo_v3, Return) { + var info ComputeInstanceProfileInfo_v3 + info.Version = STRUCT_VERSION(info, 3) + ret := nvmlGpuInstanceGetComputeInstanceProfileInfoV(handler.gpuInstance, uint32(handler.profile), uint32(handler.engProfile), (*ComputeInstanceProfileInfo_v2)(unsafe.Pointer(&info))) + return info, ret +} + func (l *library) GpuInstanceGetComputeInstanceProfileInfoV(gpuInstance GpuInstance, profile int, engProfile int) ComputeInstanceProfileInfoHandler { return gpuInstance.GetComputeInstanceProfileInfoV(profile, engProfile) } @@ -2302,7 +2302,7 @@ func (gpuInstance nvmlGpuInstance) GetComputeInstances(info *ComputeInstanceProf if info == nil { return nil, ERROR_INVALID_ARGUMENT } - var count uint32 = info.InstanceCount + var count = info.InstanceCount computeInstances := make([]nvmlComputeInstance, count) ret := nvmlGpuInstanceGetComputeInstances(gpuInstance, info.Id, &computeInstances[0], &count) return convertSlice[nvmlComputeInstance, ComputeInstance](computeInstances[:count]), ret @@ -2808,6 +2808,7 @@ func (l *library) DeviceGetRunningProcessDetailList(device Device) (ProcessDetai func (device nvmlDevice) GetRunningProcessDetailList() (ProcessDetailList, Return) { var plist ProcessDetailList + plist.Version = STRUCT_VERSION(plist, 1) ret := nvmlDeviceGetRunningProcessDetailList(device, &plist) return plist, ret } @@ -2923,6 +2924,7 @@ func (l *library) DeviceGetPciInfoExt(device Device) (PciInfoExt, Return) { func (device nvmlDevice) GetPciInfoExt() (PciInfoExt, Return) { var pciInfo PciInfoExt + pciInfo.Version = STRUCT_VERSION(pciInfo, 1) ret := nvmlDeviceGetPciInfoExt(device, &pciInfo) return pciInfo, ret } @@ -2969,6 +2971,7 @@ func (l *library) DeviceGetVgpuHeterogeneousMode(device Device) (VgpuHeterogeneo func (device nvmlDevice) GetVgpuHeterogeneousMode() (VgpuHeterogeneousMode, Return) { var heterogeneousMode VgpuHeterogeneousMode + heterogeneousMode.Version = STRUCT_VERSION(heterogeneousMode, 1) ret := nvmlDeviceGetVgpuHeterogeneousMode(device, &heterogeneousMode) return heterogeneousMode, ret } @@ -2994,6 +2997,7 @@ func (device nvmlDevice) GetVgpuTypeSupportedPlacements(vgpuTypeId VgpuTypeId) ( func (vgpuTypeId nvmlVgpuTypeId) GetSupportedPlacements(device Device) (VgpuPlacementList, Return) { var placementList VgpuPlacementList + placementList.Version = STRUCT_VERSION(placementList, 1) ret := nvmlDeviceGetVgpuTypeSupportedPlacements(nvmlDeviceHandle(device), vgpuTypeId, &placementList) return placementList, ret } @@ -3009,6 +3013,7 @@ func (device nvmlDevice) GetVgpuTypeCreatablePlacements(vgpuTypeId VgpuTypeId) ( func (vgpuTypeId nvmlVgpuTypeId) GetCreatablePlacements(device Device) (VgpuPlacementList, Return) { var placementList VgpuPlacementList + placementList.Version = STRUCT_VERSION(placementList, 1) ret := nvmlDeviceGetVgpuTypeCreatablePlacements(nvmlDeviceHandle(device), vgpuTypeId, &placementList) return placementList, ret } @@ -3041,6 +3046,7 @@ func (l *library) DeviceGetVgpuProcessesUtilizationInfo(device Device) (VgpuProc func (device nvmlDevice) GetVgpuProcessesUtilizationInfo() (VgpuProcessesUtilizationInfo, Return) { var vgpuProcUtilInfo VgpuProcessesUtilizationInfo + vgpuProcUtilInfo.Version = STRUCT_VERSION(vgpuProcUtilInfo, 1) ret := nvmlDeviceGetVgpuProcessesUtilizationInfo(device, &vgpuProcUtilInfo) return vgpuProcUtilInfo, ret } @@ -3052,6 +3058,357 @@ func (l *library) DeviceGetSramEccErrorStatus(device Device) (EccSramErrorStatus func (device nvmlDevice) GetSramEccErrorStatus() (EccSramErrorStatus, Return) { var status EccSramErrorStatus + status.Version = STRUCT_VERSION(status, 1) ret := nvmlDeviceGetSramEccErrorStatus(device, &status) return status, ret } + +// nvml.DeviceGetClockOffsets() +func (l *library) DeviceGetClockOffsets(device Device) (ClockOffset, Return) { + return device.GetClockOffsets() +} + +func (device nvmlDevice) GetClockOffsets() (ClockOffset, Return) { + var info ClockOffset + info.Version = STRUCT_VERSION(info, 1) + ret := nvmlDeviceGetClockOffsets(device, &info) + return info, ret +} + +// nvml.DeviceSetClockOffsets() +func (l *library) DeviceSetClockOffsets(device Device, info ClockOffset) Return { + return device.SetClockOffsets(info) +} + +func (device nvmlDevice) SetClockOffsets(info ClockOffset) Return { + return nvmlDeviceSetClockOffsets(device, &info) +} + +// nvml.DeviceGetDriverModel_v2() +func (l *library) DeviceGetDriverModel_v2(device Device) (DriverModel, DriverModel, Return) { + return device.GetDriverModel_v2() +} + +func (device nvmlDevice) GetDriverModel_v2() (DriverModel, DriverModel, Return) { + var current, pending DriverModel + ret := nvmlDeviceGetDriverModel_v2(device, &current, &pending) + return current, pending, ret +} + +// nvml.DeviceGetCapabilities() +func (l *library) DeviceGetCapabilities(device Device) (DeviceCapabilities, Return) { + return device.GetCapabilities() +} + +func (device nvmlDevice) GetCapabilities() (DeviceCapabilities, Return) { + var caps DeviceCapabilities + caps.Version = STRUCT_VERSION(caps, 1) + ret := nvmlDeviceGetCapabilities(device, &caps) + return caps, ret +} + +// nvml.DeviceGetFanSpeedRPM() +func (l *library) DeviceGetFanSpeedRPM(device Device) (FanSpeedInfo, Return) { + return device.GetFanSpeedRPM() +} + +func (device nvmlDevice) GetFanSpeedRPM() (FanSpeedInfo, Return) { + var fanSpeed FanSpeedInfo + fanSpeed.Version = STRUCT_VERSION(fanSpeed, 1) + ret := nvmlDeviceGetFanSpeedRPM(device, &fanSpeed) + return fanSpeed, ret +} + +// nvml.DeviceGetCoolerInfo() +func (l *library) DeviceGetCoolerInfo(device Device) (CoolerInfo, Return) { + return device.GetCoolerInfo() +} + +func (device nvmlDevice) GetCoolerInfo() (CoolerInfo, Return) { + var coolerInfo CoolerInfo + coolerInfo.Version = STRUCT_VERSION(coolerInfo, 1) + ret := nvmlDeviceGetCoolerInfo(device, &coolerInfo) + return coolerInfo, ret +} + +// nvml.DeviceGetTemperatureV() +type TemperatureHandler struct { + device nvmlDevice +} + +func (handler TemperatureHandler) V1() (Temperature, Return) { + var temperature Temperature + temperature.Version = STRUCT_VERSION(temperature, 1) + ret := nvmlDeviceGetTemperatureV(handler.device, &temperature) + return temperature, ret +} + +func (l *library) DeviceGetTemperatureV(device Device) TemperatureHandler { + return device.GetTemperatureV() +} + +func (device nvmlDevice) GetTemperatureV() TemperatureHandler { + return TemperatureHandler{device} +} + +// nvml.DeviceGetMarginTemperature() +func (l *library) DeviceGetMarginTemperature(device Device) (MarginTemperature, Return) { + return device.GetMarginTemperature() +} + +func (device nvmlDevice) GetMarginTemperature() (MarginTemperature, Return) { + var marginTemp MarginTemperature + marginTemp.Version = STRUCT_VERSION(marginTemp, 1) + ret := nvmlDeviceGetMarginTemperature(device, &marginTemp) + return marginTemp, ret +} + +// nvml.DeviceGetPerformanceModes() +func (l *library) DeviceGetPerformanceModes(device Device) (DevicePerfModes, Return) { + return device.GetPerformanceModes() +} + +func (device nvmlDevice) GetPerformanceModes() (DevicePerfModes, Return) { + var perfModes DevicePerfModes + perfModes.Version = STRUCT_VERSION(perfModes, 1) + ret := nvmlDeviceGetPerformanceModes(device, &perfModes) + return perfModes, ret +} + +// nvml.DeviceGetCurrentClockFreqs() +func (l *library) DeviceGetCurrentClockFreqs(device Device) (DeviceCurrentClockFreqs, Return) { + return device.GetCurrentClockFreqs() +} + +func (device nvmlDevice) GetCurrentClockFreqs() (DeviceCurrentClockFreqs, Return) { + var currentClockFreqs DeviceCurrentClockFreqs + currentClockFreqs.Version = STRUCT_VERSION(currentClockFreqs, 1) + ret := nvmlDeviceGetCurrentClockFreqs(device, &currentClockFreqs) + return currentClockFreqs, ret +} + +// nvml.DeviceGetDramEncryptionMode() +func (l *library) DeviceGetDramEncryptionMode(device Device) (DramEncryptionInfo, DramEncryptionInfo, Return) { + return device.GetDramEncryptionMode() +} + +func (device nvmlDevice) GetDramEncryptionMode() (DramEncryptionInfo, DramEncryptionInfo, Return) { + var current, pending DramEncryptionInfo + current.Version = STRUCT_VERSION(current, 1) + pending.Version = STRUCT_VERSION(pending, 1) + ret := nvmlDeviceGetDramEncryptionMode(device, &current, &pending) + return current, pending, ret +} + +// nvml.DeviceSetDramEncryptionMode() +func (l *library) DeviceSetDramEncryptionMode(device Device, dramEncryption *DramEncryptionInfo) Return { + return device.SetDramEncryptionMode(dramEncryption) +} + +func (device nvmlDevice) SetDramEncryptionMode(dramEncryption *DramEncryptionInfo) Return { + return nvmlDeviceSetDramEncryptionMode(device, dramEncryption) +} + +// nvml.DeviceGetPlatformInfo() +func (l *library) DeviceGetPlatformInfo(device Device) (PlatformInfo, Return) { + return device.GetPlatformInfo() +} + +func (device nvmlDevice) GetPlatformInfo() (PlatformInfo, Return) { + var platformInfo PlatformInfo + platformInfo.Version = STRUCT_VERSION(platformInfo, 1) + ret := nvmlDeviceGetPlatformInfo(device, &platformInfo) + return platformInfo, ret +} + +// nvml.DeviceGetNvlinkSupportedBwModes() +func (l *library) DeviceGetNvlinkSupportedBwModes(device Device) (NvlinkSupportedBwModes, Return) { + return device.GetNvlinkSupportedBwModes() +} + +func (device nvmlDevice) GetNvlinkSupportedBwModes() (NvlinkSupportedBwModes, Return) { + var supportedBwMode NvlinkSupportedBwModes + supportedBwMode.Version = STRUCT_VERSION(supportedBwMode, 1) + ret := nvmlDeviceGetNvlinkSupportedBwModes(device, &supportedBwMode) + return supportedBwMode, ret +} + +// nvml.DeviceGetNvlinkBwMode() +func (l *library) DeviceGetNvlinkBwMode(device Device) (NvlinkGetBwMode, Return) { + return device.GetNvlinkBwMode() +} + +func (device nvmlDevice) GetNvlinkBwMode() (NvlinkGetBwMode, Return) { + var getBwMode NvlinkGetBwMode + getBwMode.Version = STRUCT_VERSION(getBwMode, 1) + ret := nvmlDeviceGetNvlinkBwMode(device, &getBwMode) + return getBwMode, ret +} + +// nvml.DeviceSetNvlinkBwMode() +func (l *library) DeviceSetNvlinkBwMode(device Device, setBwMode *NvlinkSetBwMode) Return { + return device.SetNvlinkBwMode(setBwMode) +} + +func (device nvmlDevice) SetNvlinkBwMode(setBwMode *NvlinkSetBwMode) Return { + return nvmlDeviceSetNvlinkBwMode(device, setBwMode) +} + +// nvml.DeviceWorkloadPowerProfileGetProfilesInfo() +func (l *library) DeviceWorkloadPowerProfileGetProfilesInfo(device Device) (WorkloadPowerProfileProfilesInfo, Return) { + return device.WorkloadPowerProfileGetProfilesInfo() +} + +func (device nvmlDevice) WorkloadPowerProfileGetProfilesInfo() (WorkloadPowerProfileProfilesInfo, Return) { + var profilesInfo WorkloadPowerProfileProfilesInfo + profilesInfo.Version = STRUCT_VERSION(profilesInfo, 1) + ret := nvmlDeviceWorkloadPowerProfileGetProfilesInfo(device, &profilesInfo) + return profilesInfo, ret +} + +// nvml.DeviceWorkloadPowerProfileGetCurrentProfiles() +func (l *library) DeviceWorkloadPowerProfileGetCurrentProfiles(device Device) (WorkloadPowerProfileCurrentProfiles, Return) { + return device.WorkloadPowerProfileGetCurrentProfiles() +} + +func (device nvmlDevice) WorkloadPowerProfileGetCurrentProfiles() (WorkloadPowerProfileCurrentProfiles, Return) { + var currentProfiles WorkloadPowerProfileCurrentProfiles + currentProfiles.Version = STRUCT_VERSION(currentProfiles, 1) + ret := nvmlDeviceWorkloadPowerProfileGetCurrentProfiles(device, &currentProfiles) + return currentProfiles, ret +} + +// nvml.DeviceWorkloadPowerProfileSetRequestedProfiles() +func (l *library) DeviceWorkloadPowerProfileSetRequestedProfiles(device Device, requestedProfiles *WorkloadPowerProfileRequestedProfiles) Return { + return device.WorkloadPowerProfileSetRequestedProfiles(requestedProfiles) +} + +func (device nvmlDevice) WorkloadPowerProfileSetRequestedProfiles(requestedProfiles *WorkloadPowerProfileRequestedProfiles) Return { + return nvmlDeviceWorkloadPowerProfileSetRequestedProfiles(device, requestedProfiles) +} + +// nvml.DeviceWorkloadPowerProfileClearRequestedProfiles() +func (l *library) DeviceWorkloadPowerProfileClearRequestedProfiles(device Device, requestedProfiles *WorkloadPowerProfileRequestedProfiles) Return { + return device.WorkloadPowerProfileClearRequestedProfiles(requestedProfiles) +} + +func (device nvmlDevice) WorkloadPowerProfileClearRequestedProfiles(requestedProfiles *WorkloadPowerProfileRequestedProfiles) Return { + return nvmlDeviceWorkloadPowerProfileClearRequestedProfiles(device, requestedProfiles) +} + +// nvml.DevicePowerSmoothingActivatePresetProfile() +func (l *library) DevicePowerSmoothingActivatePresetProfile(device Device, profile *PowerSmoothingProfile) Return { + return device.PowerSmoothingActivatePresetProfile(profile) +} + +func (device nvmlDevice) PowerSmoothingActivatePresetProfile(profile *PowerSmoothingProfile) Return { + return nvmlDevicePowerSmoothingActivatePresetProfile(device, profile) +} + +// nvml.DevicePowerSmoothingUpdatePresetProfileParam() +func (l *library) DevicePowerSmoothingUpdatePresetProfileParam(device Device, profile *PowerSmoothingProfile) Return { + return device.PowerSmoothingUpdatePresetProfileParam(profile) +} + +func (device nvmlDevice) PowerSmoothingUpdatePresetProfileParam(profile *PowerSmoothingProfile) Return { + return nvmlDevicePowerSmoothingUpdatePresetProfileParam(device, profile) +} + +// nvml.DevicePowerSmoothingSetState() +func (l *library) DevicePowerSmoothingSetState(device Device, state *PowerSmoothingState) Return { + return device.PowerSmoothingSetState(state) +} + +func (device nvmlDevice) PowerSmoothingSetState(state *PowerSmoothingState) Return { + return nvmlDevicePowerSmoothingSetState(device, state) +} + +// nvml.GpuInstanceGetCreatableVgpus() +func (l *library) GpuInstanceGetCreatableVgpus(gpuInstance GpuInstance) (VgpuTypeIdInfo, Return) { + return gpuInstance.GetCreatableVgpus() +} + +func (gpuInstance nvmlGpuInstance) GetCreatableVgpus() (VgpuTypeIdInfo, Return) { + var vgpuTypeIdInfo VgpuTypeIdInfo + vgpuTypeIdInfo.Version = STRUCT_VERSION(vgpuTypeIdInfo, 1) + ret := nvmlGpuInstanceGetCreatableVgpus(gpuInstance, &vgpuTypeIdInfo) + return vgpuTypeIdInfo, ret +} + +// nvml.GpuInstanceGetActiveVgpus() +func (l *library) GpuInstanceGetActiveVgpus(gpuInstance GpuInstance) (ActiveVgpuInstanceInfo, Return) { + return gpuInstance.GetActiveVgpus() +} + +func (gpuInstance nvmlGpuInstance) GetActiveVgpus() (ActiveVgpuInstanceInfo, Return) { + var activeVgpuInstanceInfo ActiveVgpuInstanceInfo + activeVgpuInstanceInfo.Version = STRUCT_VERSION(activeVgpuInstanceInfo, 1) + ret := nvmlGpuInstanceGetActiveVgpus(gpuInstance, &activeVgpuInstanceInfo) + return activeVgpuInstanceInfo, ret +} + +// nvml.GpuInstanceSetVgpuSchedulerState() +func (l *library) GpuInstanceSetVgpuSchedulerState(gpuInstance GpuInstance, scheduler *VgpuSchedulerState) Return { + return gpuInstance.SetVgpuSchedulerState(scheduler) +} + +func (gpuInstance nvmlGpuInstance) SetVgpuSchedulerState(scheduler *VgpuSchedulerState) Return { + return nvmlGpuInstanceSetVgpuSchedulerState(gpuInstance, scheduler) +} + +// nvml.GpuInstanceGetVgpuSchedulerState() +func (l *library) GpuInstanceGetVgpuSchedulerState(gpuInstance GpuInstance) (VgpuSchedulerStateInfo, Return) { + return gpuInstance.GetVgpuSchedulerState() +} + +func (gpuInstance nvmlGpuInstance) GetVgpuSchedulerState() (VgpuSchedulerStateInfo, Return) { + var schedulerStateInfo VgpuSchedulerStateInfo + schedulerStateInfo.Version = STRUCT_VERSION(schedulerStateInfo, 1) + ret := nvmlGpuInstanceGetVgpuSchedulerState(gpuInstance, &schedulerStateInfo) + return schedulerStateInfo, ret +} + +// nvml.GpuInstanceGetVgpuSchedulerLog() +func (l *library) GpuInstanceGetVgpuSchedulerLog(gpuInstance GpuInstance) (VgpuSchedulerLogInfo, Return) { + return gpuInstance.GetVgpuSchedulerLog() +} + +func (gpuInstance nvmlGpuInstance) GetVgpuSchedulerLog() (VgpuSchedulerLogInfo, Return) { + var schedulerLogInfo VgpuSchedulerLogInfo + schedulerLogInfo.Version = STRUCT_VERSION(schedulerLogInfo, 1) + ret := nvmlGpuInstanceGetVgpuSchedulerLog(gpuInstance, &schedulerLogInfo) + return schedulerLogInfo, ret +} + +// nvml.GpuInstanceGetVgpuTypeCreatablePlacements() +func (l *library) GpuInstanceGetVgpuTypeCreatablePlacements(gpuInstance GpuInstance) (VgpuCreatablePlacementInfo, Return) { + return gpuInstance.GetVgpuTypeCreatablePlacements() +} + +func (gpuInstance nvmlGpuInstance) GetVgpuTypeCreatablePlacements() (VgpuCreatablePlacementInfo, Return) { + var creatablePlacementInfo VgpuCreatablePlacementInfo + creatablePlacementInfo.Version = STRUCT_VERSION(creatablePlacementInfo, 1) + ret := nvmlGpuInstanceGetVgpuTypeCreatablePlacements(gpuInstance, &creatablePlacementInfo) + return creatablePlacementInfo, ret +} + +// nvml.GpuInstanceGetVgpuHeterogeneousMode() +func (l *library) GpuInstanceGetVgpuHeterogeneousMode(gpuInstance GpuInstance) (VgpuHeterogeneousMode, Return) { + return gpuInstance.GetVgpuHeterogeneousMode() +} + +func (gpuInstance nvmlGpuInstance) GetVgpuHeterogeneousMode() (VgpuHeterogeneousMode, Return) { + var heterogeneousMode VgpuHeterogeneousMode + heterogeneousMode.Version = STRUCT_VERSION(heterogeneousMode, 1) + ret := nvmlGpuInstanceGetVgpuHeterogeneousMode(gpuInstance, &heterogeneousMode) + return heterogeneousMode, ret +} + +// nvml.GpuInstanceSetVgpuHeterogeneousMode() +func (l *library) GpuInstanceSetVgpuHeterogeneousMode(gpuInstance GpuInstance, heterogeneousMode *VgpuHeterogeneousMode) Return { + return gpuInstance.SetVgpuHeterogeneousMode(heterogeneousMode) +} + +func (gpuInstance nvmlGpuInstance) SetVgpuHeterogeneousMode(heterogeneousMode *VgpuHeterogeneousMode) Return { + return nvmlGpuInstanceSetVgpuHeterogeneousMode(gpuInstance, heterogeneousMode) +} diff --git a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/event_set.go b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/event_set.go index 933b4dead..b772d57fc 100644 --- a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/event_set.go +++ b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/event_set.go @@ -23,17 +23,6 @@ type EventData struct { ComputeInstanceId uint32 } -func (e EventData) convert() nvmlEventData { - out := nvmlEventData{ - Device: e.Device.(nvmlDevice), - EventType: e.EventType, - EventData: e.EventData, - GpuInstanceId: e.GpuInstanceId, - ComputeInstanceId: e.ComputeInstanceId, - } - return out -} - func (e nvmlEventData) convert() EventData { out := EventData{ Device: e.Device, @@ -71,3 +60,23 @@ func (l *library) EventSetFree(set EventSet) Return { func (set nvmlEventSet) Free() Return { return nvmlEventSetFree(set) } + +// nvml.SystemEventSetCreate() +func (l *library) SystemEventSetCreate(request *SystemEventSetCreateRequest) Return { + return nvmlSystemEventSetCreate(request) +} + +// nvml.SystemEventSetFree() +func (l *library) SystemEventSetFree(request *SystemEventSetFreeRequest) Return { + return nvmlSystemEventSetFree(request) +} + +// nvml.SystemRegisterEvents() +func (l *library) SystemRegisterEvents(request *SystemRegisterEventRequest) Return { + return nvmlSystemRegisterEvents(request) +} + +// nvml.SystemEventSetWait() +func (l *library) SystemEventSetWait(request *SystemEventSetWaitRequest) Return { + return nvmlSystemEventSetWait(request) +} diff --git a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/gpm.go b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/gpm.go index 7f8995cc7..563bc5939 100644 --- a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/gpm.go +++ b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/gpm.go @@ -20,7 +20,7 @@ type GpmMetricsGetType struct { NumMetrics uint32 Sample1 GpmSample Sample2 GpmSample - Metrics [98]GpmMetric + Metrics [210]GpmMetric } func (g *GpmMetricsGetType) convert() *nvmlGpmMetricsGetType { @@ -30,9 +30,8 @@ func (g *GpmMetricsGetType) convert() *nvmlGpmMetricsGetType { Sample1: g.Sample1.(nvmlGpmSample), Sample2: g.Sample2.(nvmlGpmSample), } - for i := range g.Metrics { - out.Metrics[i] = g.Metrics[i] - } + copy(out.Metrics[:], g.Metrics[:]) + return out } @@ -43,9 +42,8 @@ func (g *nvmlGpmMetricsGetType) convert() *GpmMetricsGetType { Sample1: g.Sample1, Sample2: g.Sample2, } - for i := range g.Metrics { - out.Metrics[i] = g.Metrics[i] - } + copy(out.Metrics[:], g.Metrics[:]) + return out } @@ -122,7 +120,7 @@ func (device nvmlDevice) GpmQueryDeviceSupportV() GpmSupportV { func (gpmSupportV GpmSupportV) V1() (GpmSupport, Return) { var gpmSupport GpmSupport - gpmSupport.Version = 1 + gpmSupport.Version = STRUCT_VERSION(gpmSupport, 1) ret := nvmlGpmQueryDeviceSupport(gpmSupportV.device, &gpmSupport) return gpmSupport, ret } @@ -133,7 +131,7 @@ func (l *library) GpmQueryDeviceSupport(device Device) (GpmSupport, Return) { func (device nvmlDevice) GpmQueryDeviceSupport() (GpmSupport, Return) { var gpmSupport GpmSupport - gpmSupport.Version = GPM_SUPPORT_VERSION + gpmSupport.Version = STRUCT_VERSION(gpmSupport, GPM_SUPPORT_VERSION) ret := nvmlGpmQueryDeviceSupport(device, &gpmSupport) return gpmSupport, ret } diff --git a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/lib.go b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/lib.go index bc4c3de5e..5a7e6882f 100644 --- a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/lib.go +++ b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/lib.go @@ -163,6 +163,7 @@ var GetBlacklistDeviceCount = GetExcludedDeviceCount var GetBlacklistDeviceInfoByIndex = GetExcludedDeviceInfoByIndex var nvmlDeviceGetGpuInstancePossiblePlacements = nvmlDeviceGetGpuInstancePossiblePlacements_v1 var nvmlVgpuInstanceGetLicenseInfo = nvmlVgpuInstanceGetLicenseInfo_v1 +var nvmlDeviceGetDriverModel = nvmlDeviceGetDriverModel_v1 // BlacklistDeviceInfo was replaced by ExcludedDeviceInfo type BlacklistDeviceInfo = ExcludedDeviceInfo @@ -288,4 +289,8 @@ func (l *library) updateVersionedSymbols() { if err == nil { nvmlVgpuInstanceGetLicenseInfo = nvmlVgpuInstanceGetLicenseInfo_v2 } + err = l.dl.Lookup("nvmlDeviceGetDriverModel_v2") + if err == nil { + nvmlDeviceGetDriverModel = nvmlDeviceGetDriverModel_v2 + } } diff --git a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/device.go b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/device.go index a1164ba26..27f22fb18 100644 --- a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/device.go +++ b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/device.go @@ -93,6 +93,9 @@ var _ nvml.Device = &Device{} // GetC2cModeInfoVFunc: func() nvml.C2cModeInfoHandler { // panic("mock out the GetC2cModeInfoV method") // }, +// GetCapabilitiesFunc: func() (nvml.DeviceCapabilities, nvml.Return) { +// panic("mock out the GetCapabilities method") +// }, // GetClkMonStatusFunc: func() (nvml.ClkMonStatus, nvml.Return) { // panic("mock out the GetClkMonStatus method") // }, @@ -102,6 +105,9 @@ var _ nvml.Device = &Device{} // GetClockInfoFunc: func(clockType nvml.ClockType) (uint32, nvml.Return) { // panic("mock out the GetClockInfo method") // }, +// GetClockOffsetsFunc: func() (nvml.ClockOffset, nvml.Return) { +// panic("mock out the GetClockOffsets method") +// }, // GetComputeInstanceIdFunc: func() (int, nvml.Return) { // panic("mock out the GetComputeInstanceId method") // }, @@ -123,6 +129,9 @@ var _ nvml.Device = &Device{} // GetConfComputeProtectedMemoryUsageFunc: func() (nvml.Memory, nvml.Return) { // panic("mock out the GetConfComputeProtectedMemoryUsage method") // }, +// GetCoolerInfoFunc: func() (nvml.CoolerInfo, nvml.Return) { +// panic("mock out the GetCoolerInfo method") +// }, // GetCpuAffinityFunc: func(n int) ([]uint, nvml.Return) { // panic("mock out the GetCpuAffinity method") // }, @@ -141,6 +150,9 @@ var _ nvml.Device = &Device{} // GetCurrPcieLinkWidthFunc: func() (int, nvml.Return) { // panic("mock out the GetCurrPcieLinkWidth method") // }, +// GetCurrentClockFreqsFunc: func() (nvml.DeviceCurrentClockFreqs, nvml.Return) { +// panic("mock out the GetCurrentClockFreqs method") +// }, // GetCurrentClocksEventReasonsFunc: func() (uint64, nvml.Return) { // panic("mock out the GetCurrentClocksEventReasons method") // }, @@ -168,9 +180,15 @@ var _ nvml.Device = &Device{} // GetDisplayModeFunc: func() (nvml.EnableState, nvml.Return) { // panic("mock out the GetDisplayMode method") // }, +// GetDramEncryptionModeFunc: func() (nvml.DramEncryptionInfo, nvml.DramEncryptionInfo, nvml.Return) { +// panic("mock out the GetDramEncryptionMode method") +// }, // GetDriverModelFunc: func() (nvml.DriverModel, nvml.DriverModel, nvml.Return) { // panic("mock out the GetDriverModel method") // }, +// GetDriverModel_v2Func: func() (nvml.DriverModel, nvml.DriverModel, nvml.Return) { +// panic("mock out the GetDriverModel_v2 method") +// }, // GetDynamicPstatesInfoFunc: func() (nvml.GpuDynamicPstatesInfo, nvml.Return) { // panic("mock out the GetDynamicPstatesInfo method") // }, @@ -204,6 +222,9 @@ var _ nvml.Device = &Device{} // GetFanSpeedFunc: func() (uint32, nvml.Return) { // panic("mock out the GetFanSpeed method") // }, +// GetFanSpeedRPMFunc: func() (nvml.FanSpeedInfo, nvml.Return) { +// panic("mock out the GetFanSpeedRPM method") +// }, // GetFanSpeed_v2Func: func(n int) (uint32, nvml.Return) { // panic("mock out the GetFanSpeed_v2 method") // }, @@ -288,6 +309,9 @@ var _ nvml.Device = &Device{} // GetMPSComputeRunningProcessesFunc: func() ([]nvml.ProcessInfo, nvml.Return) { // panic("mock out the GetMPSComputeRunningProcesses method") // }, +// GetMarginTemperatureFunc: func() (nvml.MarginTemperature, nvml.Return) { +// panic("mock out the GetMarginTemperature method") +// }, // GetMaxClockInfoFunc: func(clockType nvml.ClockType) (uint32, nvml.Return) { // panic("mock out the GetMaxClockInfo method") // }, @@ -381,6 +405,12 @@ var _ nvml.Device = &Device{} // GetNvLinkVersionFunc: func(n int) (uint32, nvml.Return) { // panic("mock out the GetNvLinkVersion method") // }, +// GetNvlinkBwModeFunc: func() (nvml.NvlinkGetBwMode, nvml.Return) { +// panic("mock out the GetNvlinkBwMode method") +// }, +// GetNvlinkSupportedBwModesFunc: func() (nvml.NvlinkSupportedBwModes, nvml.Return) { +// panic("mock out the GetNvlinkSupportedBwModes method") +// }, // GetOfaUtilizationFunc: func() (uint32, uint32, nvml.Return) { // panic("mock out the GetOfaUtilization method") // }, @@ -405,6 +435,9 @@ var _ nvml.Device = &Device{} // GetPcieThroughputFunc: func(pcieUtilCounter nvml.PcieUtilCounter) (uint32, nvml.Return) { // panic("mock out the GetPcieThroughput method") // }, +// GetPerformanceModesFunc: func() (nvml.DevicePerfModes, nvml.Return) { +// panic("mock out the GetPerformanceModes method") +// }, // GetPerformanceStateFunc: func() (nvml.Pstates, nvml.Return) { // panic("mock out the GetPerformanceState method") // }, @@ -414,6 +447,9 @@ var _ nvml.Device = &Device{} // GetPgpuMetadataStringFunc: func() (string, nvml.Return) { // panic("mock out the GetPgpuMetadataString method") // }, +// GetPlatformInfoFunc: func() (nvml.PlatformInfo, nvml.Return) { +// panic("mock out the GetPlatformInfo method") +// }, // GetPowerManagementDefaultLimitFunc: func() (uint32, nvml.Return) { // panic("mock out the GetPowerManagementDefaultLimit method") // }, @@ -498,6 +534,9 @@ var _ nvml.Device = &Device{} // GetTemperatureThresholdFunc: func(temperatureThresholds nvml.TemperatureThresholds) (uint32, nvml.Return) { // panic("mock out the GetTemperatureThreshold method") // }, +// GetTemperatureVFunc: func() nvml.TemperatureHandler { +// panic("mock out the GetTemperatureV method") +// }, // GetThermalSettingsFunc: func(v uint32) (nvml.GpuThermalSettings, nvml.Return) { // panic("mock out the GetThermalSettings method") // }, @@ -588,6 +627,15 @@ var _ nvml.Device = &Device{} // OnSameBoardFunc: func(device nvml.Device) (int, nvml.Return) { // panic("mock out the OnSameBoard method") // }, +// PowerSmoothingActivatePresetProfileFunc: func(powerSmoothingProfile *nvml.PowerSmoothingProfile) nvml.Return { +// panic("mock out the PowerSmoothingActivatePresetProfile method") +// }, +// PowerSmoothingSetStateFunc: func(powerSmoothingState *nvml.PowerSmoothingState) nvml.Return { +// panic("mock out the PowerSmoothingSetState method") +// }, +// PowerSmoothingUpdatePresetProfileParamFunc: func(powerSmoothingProfile *nvml.PowerSmoothingProfile) nvml.Return { +// panic("mock out the PowerSmoothingUpdatePresetProfileParam method") +// }, // RegisterEventsFunc: func(v uint64, eventSet nvml.EventSet) nvml.Return { // panic("mock out the RegisterEvents method") // }, @@ -618,6 +666,9 @@ var _ nvml.Device = &Device{} // SetAutoBoostedClocksEnabledFunc: func(enableState nvml.EnableState) nvml.Return { // panic("mock out the SetAutoBoostedClocksEnabled method") // }, +// SetClockOffsetsFunc: func(clockOffset nvml.ClockOffset) nvml.Return { +// panic("mock out the SetClockOffsets method") +// }, // SetComputeModeFunc: func(computeMode nvml.ComputeMode) nvml.Return { // panic("mock out the SetComputeMode method") // }, @@ -633,6 +684,9 @@ var _ nvml.Device = &Device{} // SetDefaultFanSpeed_v2Func: func(n int) nvml.Return { // panic("mock out the SetDefaultFanSpeed_v2 method") // }, +// SetDramEncryptionModeFunc: func(dramEncryptionInfo *nvml.DramEncryptionInfo) nvml.Return { +// panic("mock out the SetDramEncryptionMode method") +// }, // SetDriverModelFunc: func(driverModel nvml.DriverModel, v uint32) nvml.Return { // panic("mock out the SetDriverModel method") // }, @@ -669,6 +723,9 @@ var _ nvml.Device = &Device{} // SetNvLinkUtilizationControlFunc: func(n1 int, n2 int, nvLinkUtilizationControl *nvml.NvLinkUtilizationControl, b bool) nvml.Return { // panic("mock out the SetNvLinkUtilizationControl method") // }, +// SetNvlinkBwModeFunc: func(nvlinkSetBwMode *nvml.NvlinkSetBwMode) nvml.Return { +// panic("mock out the SetNvlinkBwMode method") +// }, // SetPersistenceModeFunc: func(enableState nvml.EnableState) nvml.Return { // panic("mock out the SetPersistenceMode method") // }, @@ -699,6 +756,18 @@ var _ nvml.Device = &Device{} // VgpuTypeGetMaxInstancesFunc: func(vgpuTypeId nvml.VgpuTypeId) (int, nvml.Return) { // panic("mock out the VgpuTypeGetMaxInstances method") // }, +// WorkloadPowerProfileClearRequestedProfilesFunc: func(workloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles) nvml.Return { +// panic("mock out the WorkloadPowerProfileClearRequestedProfiles method") +// }, +// WorkloadPowerProfileGetCurrentProfilesFunc: func() (nvml.WorkloadPowerProfileCurrentProfiles, nvml.Return) { +// panic("mock out the WorkloadPowerProfileGetCurrentProfiles method") +// }, +// WorkloadPowerProfileGetProfilesInfoFunc: func() (nvml.WorkloadPowerProfileProfilesInfo, nvml.Return) { +// panic("mock out the WorkloadPowerProfileGetProfilesInfo method") +// }, +// WorkloadPowerProfileSetRequestedProfilesFunc: func(workloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles) nvml.Return { +// panic("mock out the WorkloadPowerProfileSetRequestedProfiles method") +// }, // } // // // use mockedDevice in code that requires nvml.Device @@ -781,6 +850,9 @@ type Device struct { // GetC2cModeInfoVFunc mocks the GetC2cModeInfoV method. GetC2cModeInfoVFunc func() nvml.C2cModeInfoHandler + // GetCapabilitiesFunc mocks the GetCapabilities method. + GetCapabilitiesFunc func() (nvml.DeviceCapabilities, nvml.Return) + // GetClkMonStatusFunc mocks the GetClkMonStatus method. GetClkMonStatusFunc func() (nvml.ClkMonStatus, nvml.Return) @@ -790,6 +862,9 @@ type Device struct { // GetClockInfoFunc mocks the GetClockInfo method. GetClockInfoFunc func(clockType nvml.ClockType) (uint32, nvml.Return) + // GetClockOffsetsFunc mocks the GetClockOffsets method. + GetClockOffsetsFunc func() (nvml.ClockOffset, nvml.Return) + // GetComputeInstanceIdFunc mocks the GetComputeInstanceId method. GetComputeInstanceIdFunc func() (int, nvml.Return) @@ -811,6 +886,9 @@ type Device struct { // GetConfComputeProtectedMemoryUsageFunc mocks the GetConfComputeProtectedMemoryUsage method. GetConfComputeProtectedMemoryUsageFunc func() (nvml.Memory, nvml.Return) + // GetCoolerInfoFunc mocks the GetCoolerInfo method. + GetCoolerInfoFunc func() (nvml.CoolerInfo, nvml.Return) + // GetCpuAffinityFunc mocks the GetCpuAffinity method. GetCpuAffinityFunc func(n int) ([]uint, nvml.Return) @@ -829,6 +907,9 @@ type Device struct { // GetCurrPcieLinkWidthFunc mocks the GetCurrPcieLinkWidth method. GetCurrPcieLinkWidthFunc func() (int, nvml.Return) + // GetCurrentClockFreqsFunc mocks the GetCurrentClockFreqs method. + GetCurrentClockFreqsFunc func() (nvml.DeviceCurrentClockFreqs, nvml.Return) + // GetCurrentClocksEventReasonsFunc mocks the GetCurrentClocksEventReasons method. GetCurrentClocksEventReasonsFunc func() (uint64, nvml.Return) @@ -856,9 +937,15 @@ type Device struct { // GetDisplayModeFunc mocks the GetDisplayMode method. GetDisplayModeFunc func() (nvml.EnableState, nvml.Return) + // GetDramEncryptionModeFunc mocks the GetDramEncryptionMode method. + GetDramEncryptionModeFunc func() (nvml.DramEncryptionInfo, nvml.DramEncryptionInfo, nvml.Return) + // GetDriverModelFunc mocks the GetDriverModel method. GetDriverModelFunc func() (nvml.DriverModel, nvml.DriverModel, nvml.Return) + // GetDriverModel_v2Func mocks the GetDriverModel_v2 method. + GetDriverModel_v2Func func() (nvml.DriverModel, nvml.DriverModel, nvml.Return) + // GetDynamicPstatesInfoFunc mocks the GetDynamicPstatesInfo method. GetDynamicPstatesInfoFunc func() (nvml.GpuDynamicPstatesInfo, nvml.Return) @@ -892,6 +979,9 @@ type Device struct { // GetFanSpeedFunc mocks the GetFanSpeed method. GetFanSpeedFunc func() (uint32, nvml.Return) + // GetFanSpeedRPMFunc mocks the GetFanSpeedRPM method. + GetFanSpeedRPMFunc func() (nvml.FanSpeedInfo, nvml.Return) + // GetFanSpeed_v2Func mocks the GetFanSpeed_v2 method. GetFanSpeed_v2Func func(n int) (uint32, nvml.Return) @@ -976,6 +1066,9 @@ type Device struct { // GetMPSComputeRunningProcessesFunc mocks the GetMPSComputeRunningProcesses method. GetMPSComputeRunningProcessesFunc func() ([]nvml.ProcessInfo, nvml.Return) + // GetMarginTemperatureFunc mocks the GetMarginTemperature method. + GetMarginTemperatureFunc func() (nvml.MarginTemperature, nvml.Return) + // GetMaxClockInfoFunc mocks the GetMaxClockInfo method. GetMaxClockInfoFunc func(clockType nvml.ClockType) (uint32, nvml.Return) @@ -1069,6 +1162,12 @@ type Device struct { // GetNvLinkVersionFunc mocks the GetNvLinkVersion method. GetNvLinkVersionFunc func(n int) (uint32, nvml.Return) + // GetNvlinkBwModeFunc mocks the GetNvlinkBwMode method. + GetNvlinkBwModeFunc func() (nvml.NvlinkGetBwMode, nvml.Return) + + // GetNvlinkSupportedBwModesFunc mocks the GetNvlinkSupportedBwModes method. + GetNvlinkSupportedBwModesFunc func() (nvml.NvlinkSupportedBwModes, nvml.Return) + // GetOfaUtilizationFunc mocks the GetOfaUtilization method. GetOfaUtilizationFunc func() (uint32, uint32, nvml.Return) @@ -1093,6 +1192,9 @@ type Device struct { // GetPcieThroughputFunc mocks the GetPcieThroughput method. GetPcieThroughputFunc func(pcieUtilCounter nvml.PcieUtilCounter) (uint32, nvml.Return) + // GetPerformanceModesFunc mocks the GetPerformanceModes method. + GetPerformanceModesFunc func() (nvml.DevicePerfModes, nvml.Return) + // GetPerformanceStateFunc mocks the GetPerformanceState method. GetPerformanceStateFunc func() (nvml.Pstates, nvml.Return) @@ -1102,6 +1204,9 @@ type Device struct { // GetPgpuMetadataStringFunc mocks the GetPgpuMetadataString method. GetPgpuMetadataStringFunc func() (string, nvml.Return) + // GetPlatformInfoFunc mocks the GetPlatformInfo method. + GetPlatformInfoFunc func() (nvml.PlatformInfo, nvml.Return) + // GetPowerManagementDefaultLimitFunc mocks the GetPowerManagementDefaultLimit method. GetPowerManagementDefaultLimitFunc func() (uint32, nvml.Return) @@ -1186,6 +1291,9 @@ type Device struct { // GetTemperatureThresholdFunc mocks the GetTemperatureThreshold method. GetTemperatureThresholdFunc func(temperatureThresholds nvml.TemperatureThresholds) (uint32, nvml.Return) + // GetTemperatureVFunc mocks the GetTemperatureV method. + GetTemperatureVFunc func() nvml.TemperatureHandler + // GetThermalSettingsFunc mocks the GetThermalSettings method. GetThermalSettingsFunc func(v uint32) (nvml.GpuThermalSettings, nvml.Return) @@ -1276,6 +1384,15 @@ type Device struct { // OnSameBoardFunc mocks the OnSameBoard method. OnSameBoardFunc func(device nvml.Device) (int, nvml.Return) + // PowerSmoothingActivatePresetProfileFunc mocks the PowerSmoothingActivatePresetProfile method. + PowerSmoothingActivatePresetProfileFunc func(powerSmoothingProfile *nvml.PowerSmoothingProfile) nvml.Return + + // PowerSmoothingSetStateFunc mocks the PowerSmoothingSetState method. + PowerSmoothingSetStateFunc func(powerSmoothingState *nvml.PowerSmoothingState) nvml.Return + + // PowerSmoothingUpdatePresetProfileParamFunc mocks the PowerSmoothingUpdatePresetProfileParam method. + PowerSmoothingUpdatePresetProfileParamFunc func(powerSmoothingProfile *nvml.PowerSmoothingProfile) nvml.Return + // RegisterEventsFunc mocks the RegisterEvents method. RegisterEventsFunc func(v uint64, eventSet nvml.EventSet) nvml.Return @@ -1306,6 +1423,9 @@ type Device struct { // SetAutoBoostedClocksEnabledFunc mocks the SetAutoBoostedClocksEnabled method. SetAutoBoostedClocksEnabledFunc func(enableState nvml.EnableState) nvml.Return + // SetClockOffsetsFunc mocks the SetClockOffsets method. + SetClockOffsetsFunc func(clockOffset nvml.ClockOffset) nvml.Return + // SetComputeModeFunc mocks the SetComputeMode method. SetComputeModeFunc func(computeMode nvml.ComputeMode) nvml.Return @@ -1321,6 +1441,9 @@ type Device struct { // SetDefaultFanSpeed_v2Func mocks the SetDefaultFanSpeed_v2 method. SetDefaultFanSpeed_v2Func func(n int) nvml.Return + // SetDramEncryptionModeFunc mocks the SetDramEncryptionMode method. + SetDramEncryptionModeFunc func(dramEncryptionInfo *nvml.DramEncryptionInfo) nvml.Return + // SetDriverModelFunc mocks the SetDriverModel method. SetDriverModelFunc func(driverModel nvml.DriverModel, v uint32) nvml.Return @@ -1357,6 +1480,9 @@ type Device struct { // SetNvLinkUtilizationControlFunc mocks the SetNvLinkUtilizationControl method. SetNvLinkUtilizationControlFunc func(n1 int, n2 int, nvLinkUtilizationControl *nvml.NvLinkUtilizationControl, b bool) nvml.Return + // SetNvlinkBwModeFunc mocks the SetNvlinkBwMode method. + SetNvlinkBwModeFunc func(nvlinkSetBwMode *nvml.NvlinkSetBwMode) nvml.Return + // SetPersistenceModeFunc mocks the SetPersistenceMode method. SetPersistenceModeFunc func(enableState nvml.EnableState) nvml.Return @@ -1387,6 +1513,18 @@ type Device struct { // VgpuTypeGetMaxInstancesFunc mocks the VgpuTypeGetMaxInstances method. VgpuTypeGetMaxInstancesFunc func(vgpuTypeId nvml.VgpuTypeId) (int, nvml.Return) + // WorkloadPowerProfileClearRequestedProfilesFunc mocks the WorkloadPowerProfileClearRequestedProfiles method. + WorkloadPowerProfileClearRequestedProfilesFunc func(workloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles) nvml.Return + + // WorkloadPowerProfileGetCurrentProfilesFunc mocks the WorkloadPowerProfileGetCurrentProfiles method. + WorkloadPowerProfileGetCurrentProfilesFunc func() (nvml.WorkloadPowerProfileCurrentProfiles, nvml.Return) + + // WorkloadPowerProfileGetProfilesInfoFunc mocks the WorkloadPowerProfileGetProfilesInfo method. + WorkloadPowerProfileGetProfilesInfoFunc func() (nvml.WorkloadPowerProfileProfilesInfo, nvml.Return) + + // WorkloadPowerProfileSetRequestedProfilesFunc mocks the WorkloadPowerProfileSetRequestedProfiles method. + WorkloadPowerProfileSetRequestedProfilesFunc func(workloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles) nvml.Return + // calls tracks calls to the methods. calls struct { // ClearAccountingPids holds details about calls to the ClearAccountingPids method. @@ -1486,6 +1624,9 @@ type Device struct { // GetC2cModeInfoV holds details about calls to the GetC2cModeInfoV method. GetC2cModeInfoV []struct { } + // GetCapabilities holds details about calls to the GetCapabilities method. + GetCapabilities []struct { + } // GetClkMonStatus holds details about calls to the GetClkMonStatus method. GetClkMonStatus []struct { } @@ -1501,6 +1642,9 @@ type Device struct { // ClockType is the clockType argument value. ClockType nvml.ClockType } + // GetClockOffsets holds details about calls to the GetClockOffsets method. + GetClockOffsets []struct { + } // GetComputeInstanceId holds details about calls to the GetComputeInstanceId method. GetComputeInstanceId []struct { } @@ -1522,6 +1666,9 @@ type Device struct { // GetConfComputeProtectedMemoryUsage holds details about calls to the GetConfComputeProtectedMemoryUsage method. GetConfComputeProtectedMemoryUsage []struct { } + // GetCoolerInfo holds details about calls to the GetCoolerInfo method. + GetCoolerInfo []struct { + } // GetCpuAffinity holds details about calls to the GetCpuAffinity method. GetCpuAffinity []struct { // N is the n argument value. @@ -1546,6 +1693,9 @@ type Device struct { // GetCurrPcieLinkWidth holds details about calls to the GetCurrPcieLinkWidth method. GetCurrPcieLinkWidth []struct { } + // GetCurrentClockFreqs holds details about calls to the GetCurrentClockFreqs method. + GetCurrentClockFreqs []struct { + } // GetCurrentClocksEventReasons holds details about calls to the GetCurrentClocksEventReasons method. GetCurrentClocksEventReasons []struct { } @@ -1579,9 +1729,15 @@ type Device struct { // GetDisplayMode holds details about calls to the GetDisplayMode method. GetDisplayMode []struct { } + // GetDramEncryptionMode holds details about calls to the GetDramEncryptionMode method. + GetDramEncryptionMode []struct { + } // GetDriverModel holds details about calls to the GetDriverModel method. GetDriverModel []struct { } + // GetDriverModel_v2 holds details about calls to the GetDriverModel_v2 method. + GetDriverModel_v2 []struct { + } // GetDynamicPstatesInfo holds details about calls to the GetDynamicPstatesInfo method. GetDynamicPstatesInfo []struct { } @@ -1619,6 +1775,9 @@ type Device struct { // GetFanSpeed holds details about calls to the GetFanSpeed method. GetFanSpeed []struct { } + // GetFanSpeedRPM holds details about calls to the GetFanSpeedRPM method. + GetFanSpeedRPM []struct { + } // GetFanSpeed_v2 holds details about calls to the GetFanSpeed_v2 method. GetFanSpeed_v2 []struct { // N is the n argument value. @@ -1721,6 +1880,9 @@ type Device struct { // GetMPSComputeRunningProcesses holds details about calls to the GetMPSComputeRunningProcesses method. GetMPSComputeRunningProcesses []struct { } + // GetMarginTemperature holds details about calls to the GetMarginTemperature method. + GetMarginTemperature []struct { + } // GetMaxClockInfo holds details about calls to the GetMaxClockInfo method. GetMaxClockInfo []struct { // ClockType is the clockType argument value. @@ -1858,6 +2020,12 @@ type Device struct { // N is the n argument value. N int } + // GetNvlinkBwMode holds details about calls to the GetNvlinkBwMode method. + GetNvlinkBwMode []struct { + } + // GetNvlinkSupportedBwModes holds details about calls to the GetNvlinkSupportedBwModes method. + GetNvlinkSupportedBwModes []struct { + } // GetOfaUtilization holds details about calls to the GetOfaUtilization method. GetOfaUtilization []struct { } @@ -1888,6 +2056,9 @@ type Device struct { // PcieUtilCounter is the pcieUtilCounter argument value. PcieUtilCounter nvml.PcieUtilCounter } + // GetPerformanceModes holds details about calls to the GetPerformanceModes method. + GetPerformanceModes []struct { + } // GetPerformanceState holds details about calls to the GetPerformanceState method. GetPerformanceState []struct { } @@ -1897,6 +2068,9 @@ type Device struct { // GetPgpuMetadataString holds details about calls to the GetPgpuMetadataString method. GetPgpuMetadataString []struct { } + // GetPlatformInfo holds details about calls to the GetPlatformInfo method. + GetPlatformInfo []struct { + } // GetPowerManagementDefaultLimit holds details about calls to the GetPowerManagementDefaultLimit method. GetPowerManagementDefaultLimit []struct { } @@ -1999,6 +2173,9 @@ type Device struct { // TemperatureThresholds is the temperatureThresholds argument value. TemperatureThresholds nvml.TemperatureThresholds } + // GetTemperatureV holds details about calls to the GetTemperatureV method. + GetTemperatureV []struct { + } // GetThermalSettings holds details about calls to the GetThermalSettings method. GetThermalSettings []struct { // V is the v argument value. @@ -2121,6 +2298,21 @@ type Device struct { // Device is the device argument value. Device nvml.Device } + // PowerSmoothingActivatePresetProfile holds details about calls to the PowerSmoothingActivatePresetProfile method. + PowerSmoothingActivatePresetProfile []struct { + // PowerSmoothingProfile is the powerSmoothingProfile argument value. + PowerSmoothingProfile *nvml.PowerSmoothingProfile + } + // PowerSmoothingSetState holds details about calls to the PowerSmoothingSetState method. + PowerSmoothingSetState []struct { + // PowerSmoothingState is the powerSmoothingState argument value. + PowerSmoothingState *nvml.PowerSmoothingState + } + // PowerSmoothingUpdatePresetProfileParam holds details about calls to the PowerSmoothingUpdatePresetProfileParam method. + PowerSmoothingUpdatePresetProfileParam []struct { + // PowerSmoothingProfile is the powerSmoothingProfile argument value. + PowerSmoothingProfile *nvml.PowerSmoothingProfile + } // RegisterEvents holds details about calls to the RegisterEvents method. RegisterEvents []struct { // V is the v argument value. @@ -2173,6 +2365,11 @@ type Device struct { // EnableState is the enableState argument value. EnableState nvml.EnableState } + // SetClockOffsets holds details about calls to the SetClockOffsets method. + SetClockOffsets []struct { + // ClockOffset is the clockOffset argument value. + ClockOffset nvml.ClockOffset + } // SetComputeMode holds details about calls to the SetComputeMode method. SetComputeMode []struct { // ComputeMode is the computeMode argument value. @@ -2198,6 +2395,11 @@ type Device struct { // N is the n argument value. N int } + // SetDramEncryptionMode holds details about calls to the SetDramEncryptionMode method. + SetDramEncryptionMode []struct { + // DramEncryptionInfo is the dramEncryptionInfo argument value. + DramEncryptionInfo *nvml.DramEncryptionInfo + } // SetDriverModel holds details about calls to the SetDriverModel method. SetDriverModel []struct { // DriverModel is the driverModel argument value. @@ -2274,6 +2476,11 @@ type Device struct { // B is the b argument value. B bool } + // SetNvlinkBwMode holds details about calls to the SetNvlinkBwMode method. + SetNvlinkBwMode []struct { + // NvlinkSetBwMode is the nvlinkSetBwMode argument value. + NvlinkSetBwMode *nvml.NvlinkSetBwMode + } // SetPersistenceMode holds details about calls to the SetPersistenceMode method. SetPersistenceMode []struct { // EnableState is the enableState argument value. @@ -2326,234 +2533,273 @@ type Device struct { // VgpuTypeId is the vgpuTypeId argument value. VgpuTypeId nvml.VgpuTypeId } - } - lockClearAccountingPids sync.RWMutex - lockClearCpuAffinity sync.RWMutex - lockClearEccErrorCounts sync.RWMutex - lockClearFieldValues sync.RWMutex - lockCreateGpuInstance sync.RWMutex - lockCreateGpuInstanceWithPlacement sync.RWMutex - lockFreezeNvLinkUtilizationCounter sync.RWMutex - lockGetAPIRestriction sync.RWMutex - lockGetAccountingBufferSize sync.RWMutex - lockGetAccountingMode sync.RWMutex - lockGetAccountingPids sync.RWMutex - lockGetAccountingStats sync.RWMutex - lockGetActiveVgpus sync.RWMutex - lockGetAdaptiveClockInfoStatus sync.RWMutex - lockGetApplicationsClock sync.RWMutex - lockGetArchitecture sync.RWMutex - lockGetAttributes sync.RWMutex - lockGetAutoBoostedClocksEnabled sync.RWMutex - lockGetBAR1MemoryInfo sync.RWMutex - lockGetBoardId sync.RWMutex - lockGetBoardPartNumber sync.RWMutex - lockGetBrand sync.RWMutex - lockGetBridgeChipInfo sync.RWMutex - lockGetBusType sync.RWMutex - lockGetC2cModeInfoV sync.RWMutex - lockGetClkMonStatus sync.RWMutex - lockGetClock sync.RWMutex - lockGetClockInfo sync.RWMutex - lockGetComputeInstanceId sync.RWMutex - lockGetComputeMode sync.RWMutex - lockGetComputeRunningProcesses sync.RWMutex - lockGetConfComputeGpuAttestationReport sync.RWMutex - lockGetConfComputeGpuCertificate sync.RWMutex - lockGetConfComputeMemSizeInfo sync.RWMutex - lockGetConfComputeProtectedMemoryUsage sync.RWMutex - lockGetCpuAffinity sync.RWMutex - lockGetCpuAffinityWithinScope sync.RWMutex - lockGetCreatableVgpus sync.RWMutex - lockGetCudaComputeCapability sync.RWMutex - lockGetCurrPcieLinkGeneration sync.RWMutex - lockGetCurrPcieLinkWidth sync.RWMutex - lockGetCurrentClocksEventReasons sync.RWMutex - lockGetCurrentClocksThrottleReasons sync.RWMutex - lockGetDecoderUtilization sync.RWMutex - lockGetDefaultApplicationsClock sync.RWMutex - lockGetDefaultEccMode sync.RWMutex - lockGetDetailedEccErrors sync.RWMutex - lockGetDeviceHandleFromMigDeviceHandle sync.RWMutex - lockGetDisplayActive sync.RWMutex - lockGetDisplayMode sync.RWMutex - lockGetDriverModel sync.RWMutex - lockGetDynamicPstatesInfo sync.RWMutex - lockGetEccMode sync.RWMutex - lockGetEncoderCapacity sync.RWMutex - lockGetEncoderSessions sync.RWMutex - lockGetEncoderStats sync.RWMutex - lockGetEncoderUtilization sync.RWMutex - lockGetEnforcedPowerLimit sync.RWMutex - lockGetFBCSessions sync.RWMutex - lockGetFBCStats sync.RWMutex - lockGetFanControlPolicy_v2 sync.RWMutex - lockGetFanSpeed sync.RWMutex - lockGetFanSpeed_v2 sync.RWMutex - lockGetFieldValues sync.RWMutex - lockGetGpcClkMinMaxVfOffset sync.RWMutex - lockGetGpcClkVfOffset sync.RWMutex - lockGetGpuFabricInfo sync.RWMutex - lockGetGpuFabricInfoV sync.RWMutex - lockGetGpuInstanceById sync.RWMutex - lockGetGpuInstanceId sync.RWMutex - lockGetGpuInstancePossiblePlacements sync.RWMutex - lockGetGpuInstanceProfileInfo sync.RWMutex - lockGetGpuInstanceProfileInfoV sync.RWMutex - lockGetGpuInstanceRemainingCapacity sync.RWMutex - lockGetGpuInstances sync.RWMutex - lockGetGpuMaxPcieLinkGeneration sync.RWMutex - lockGetGpuOperationMode sync.RWMutex - lockGetGraphicsRunningProcesses sync.RWMutex - lockGetGridLicensableFeatures sync.RWMutex - lockGetGspFirmwareMode sync.RWMutex - lockGetGspFirmwareVersion sync.RWMutex - lockGetHostVgpuMode sync.RWMutex - lockGetIndex sync.RWMutex - lockGetInforomConfigurationChecksum sync.RWMutex - lockGetInforomImageVersion sync.RWMutex - lockGetInforomVersion sync.RWMutex - lockGetIrqNum sync.RWMutex - lockGetJpgUtilization sync.RWMutex - lockGetLastBBXFlushTime sync.RWMutex - lockGetMPSComputeRunningProcesses sync.RWMutex - lockGetMaxClockInfo sync.RWMutex - lockGetMaxCustomerBoostClock sync.RWMutex - lockGetMaxMigDeviceCount sync.RWMutex - lockGetMaxPcieLinkGeneration sync.RWMutex - lockGetMaxPcieLinkWidth sync.RWMutex - lockGetMemClkMinMaxVfOffset sync.RWMutex - lockGetMemClkVfOffset sync.RWMutex - lockGetMemoryAffinity sync.RWMutex - lockGetMemoryBusWidth sync.RWMutex - lockGetMemoryErrorCounter sync.RWMutex - lockGetMemoryInfo sync.RWMutex - lockGetMemoryInfo_v2 sync.RWMutex - lockGetMigDeviceHandleByIndex sync.RWMutex - lockGetMigMode sync.RWMutex - lockGetMinMaxClockOfPState sync.RWMutex - lockGetMinMaxFanSpeed sync.RWMutex - lockGetMinorNumber sync.RWMutex - lockGetModuleId sync.RWMutex - lockGetMultiGpuBoard sync.RWMutex - lockGetName sync.RWMutex - lockGetNumFans sync.RWMutex - lockGetNumGpuCores sync.RWMutex - lockGetNumaNodeId sync.RWMutex - lockGetNvLinkCapability sync.RWMutex - lockGetNvLinkErrorCounter sync.RWMutex - lockGetNvLinkRemoteDeviceType sync.RWMutex - lockGetNvLinkRemotePciInfo sync.RWMutex - lockGetNvLinkState sync.RWMutex - lockGetNvLinkUtilizationControl sync.RWMutex - lockGetNvLinkUtilizationCounter sync.RWMutex - lockGetNvLinkVersion sync.RWMutex - lockGetOfaUtilization sync.RWMutex - lockGetP2PStatus sync.RWMutex - lockGetPciInfo sync.RWMutex - lockGetPciInfoExt sync.RWMutex - lockGetPcieLinkMaxSpeed sync.RWMutex - lockGetPcieReplayCounter sync.RWMutex - lockGetPcieSpeed sync.RWMutex - lockGetPcieThroughput sync.RWMutex - lockGetPerformanceState sync.RWMutex - lockGetPersistenceMode sync.RWMutex - lockGetPgpuMetadataString sync.RWMutex - lockGetPowerManagementDefaultLimit sync.RWMutex - lockGetPowerManagementLimit sync.RWMutex - lockGetPowerManagementLimitConstraints sync.RWMutex - lockGetPowerManagementMode sync.RWMutex - lockGetPowerSource sync.RWMutex - lockGetPowerState sync.RWMutex - lockGetPowerUsage sync.RWMutex - lockGetProcessUtilization sync.RWMutex - lockGetProcessesUtilizationInfo sync.RWMutex - lockGetRemappedRows sync.RWMutex - lockGetRetiredPages sync.RWMutex - lockGetRetiredPagesPendingStatus sync.RWMutex - lockGetRetiredPages_v2 sync.RWMutex - lockGetRowRemapperHistogram sync.RWMutex - lockGetRunningProcessDetailList sync.RWMutex - lockGetSamples sync.RWMutex - lockGetSerial sync.RWMutex - lockGetSramEccErrorStatus sync.RWMutex - lockGetSupportedClocksEventReasons sync.RWMutex - lockGetSupportedClocksThrottleReasons sync.RWMutex - lockGetSupportedEventTypes sync.RWMutex - lockGetSupportedGraphicsClocks sync.RWMutex - lockGetSupportedMemoryClocks sync.RWMutex - lockGetSupportedPerformanceStates sync.RWMutex - lockGetSupportedVgpus sync.RWMutex - lockGetTargetFanSpeed sync.RWMutex - lockGetTemperature sync.RWMutex - lockGetTemperatureThreshold sync.RWMutex - lockGetThermalSettings sync.RWMutex - lockGetTopologyCommonAncestor sync.RWMutex - lockGetTopologyNearestGpus sync.RWMutex - lockGetTotalEccErrors sync.RWMutex - lockGetTotalEnergyConsumption sync.RWMutex - lockGetUUID sync.RWMutex - lockGetUtilizationRates sync.RWMutex - lockGetVbiosVersion sync.RWMutex - lockGetVgpuCapabilities sync.RWMutex - lockGetVgpuHeterogeneousMode sync.RWMutex - lockGetVgpuInstancesUtilizationInfo sync.RWMutex - lockGetVgpuMetadata sync.RWMutex - lockGetVgpuProcessUtilization sync.RWMutex - lockGetVgpuProcessesUtilizationInfo sync.RWMutex - lockGetVgpuSchedulerCapabilities sync.RWMutex - lockGetVgpuSchedulerLog sync.RWMutex - lockGetVgpuSchedulerState sync.RWMutex - lockGetVgpuTypeCreatablePlacements sync.RWMutex - lockGetVgpuTypeSupportedPlacements sync.RWMutex - lockGetVgpuUtilization sync.RWMutex - lockGetViolationStatus sync.RWMutex - lockGetVirtualizationMode sync.RWMutex - lockGpmMigSampleGet sync.RWMutex - lockGpmQueryDeviceSupport sync.RWMutex - lockGpmQueryDeviceSupportV sync.RWMutex - lockGpmQueryIfStreamingEnabled sync.RWMutex - lockGpmSampleGet sync.RWMutex - lockGpmSetStreamingEnabled sync.RWMutex - lockIsMigDeviceHandle sync.RWMutex - lockOnSameBoard sync.RWMutex - lockRegisterEvents sync.RWMutex - lockResetApplicationsClocks sync.RWMutex - lockResetGpuLockedClocks sync.RWMutex - lockResetMemoryLockedClocks sync.RWMutex - lockResetNvLinkErrorCounters sync.RWMutex - lockResetNvLinkUtilizationCounter sync.RWMutex - lockSetAPIRestriction sync.RWMutex - lockSetAccountingMode sync.RWMutex - lockSetApplicationsClocks sync.RWMutex - lockSetAutoBoostedClocksEnabled sync.RWMutex - lockSetComputeMode sync.RWMutex - lockSetConfComputeUnprotectedMemSize sync.RWMutex - lockSetCpuAffinity sync.RWMutex - lockSetDefaultAutoBoostedClocksEnabled sync.RWMutex - lockSetDefaultFanSpeed_v2 sync.RWMutex - lockSetDriverModel sync.RWMutex - lockSetEccMode sync.RWMutex - lockSetFanControlPolicy sync.RWMutex - lockSetFanSpeed_v2 sync.RWMutex - lockSetGpcClkVfOffset sync.RWMutex - lockSetGpuLockedClocks sync.RWMutex - lockSetGpuOperationMode sync.RWMutex - lockSetMemClkVfOffset sync.RWMutex - lockSetMemoryLockedClocks sync.RWMutex - lockSetMigMode sync.RWMutex - lockSetNvLinkDeviceLowPowerThreshold sync.RWMutex - lockSetNvLinkUtilizationControl sync.RWMutex - lockSetPersistenceMode sync.RWMutex - lockSetPowerManagementLimit sync.RWMutex - lockSetPowerManagementLimit_v2 sync.RWMutex - lockSetTemperatureThreshold sync.RWMutex - lockSetVgpuCapabilities sync.RWMutex - lockSetVgpuHeterogeneousMode sync.RWMutex - lockSetVgpuSchedulerState sync.RWMutex - lockSetVirtualizationMode sync.RWMutex - lockValidateInforom sync.RWMutex - lockVgpuTypeGetMaxInstances sync.RWMutex + // WorkloadPowerProfileClearRequestedProfiles holds details about calls to the WorkloadPowerProfileClearRequestedProfiles method. + WorkloadPowerProfileClearRequestedProfiles []struct { + // WorkloadPowerProfileRequestedProfiles is the workloadPowerProfileRequestedProfiles argument value. + WorkloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles + } + // WorkloadPowerProfileGetCurrentProfiles holds details about calls to the WorkloadPowerProfileGetCurrentProfiles method. + WorkloadPowerProfileGetCurrentProfiles []struct { + } + // WorkloadPowerProfileGetProfilesInfo holds details about calls to the WorkloadPowerProfileGetProfilesInfo method. + WorkloadPowerProfileGetProfilesInfo []struct { + } + // WorkloadPowerProfileSetRequestedProfiles holds details about calls to the WorkloadPowerProfileSetRequestedProfiles method. + WorkloadPowerProfileSetRequestedProfiles []struct { + // WorkloadPowerProfileRequestedProfiles is the workloadPowerProfileRequestedProfiles argument value. + WorkloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles + } + } + lockClearAccountingPids sync.RWMutex + lockClearCpuAffinity sync.RWMutex + lockClearEccErrorCounts sync.RWMutex + lockClearFieldValues sync.RWMutex + lockCreateGpuInstance sync.RWMutex + lockCreateGpuInstanceWithPlacement sync.RWMutex + lockFreezeNvLinkUtilizationCounter sync.RWMutex + lockGetAPIRestriction sync.RWMutex + lockGetAccountingBufferSize sync.RWMutex + lockGetAccountingMode sync.RWMutex + lockGetAccountingPids sync.RWMutex + lockGetAccountingStats sync.RWMutex + lockGetActiveVgpus sync.RWMutex + lockGetAdaptiveClockInfoStatus sync.RWMutex + lockGetApplicationsClock sync.RWMutex + lockGetArchitecture sync.RWMutex + lockGetAttributes sync.RWMutex + lockGetAutoBoostedClocksEnabled sync.RWMutex + lockGetBAR1MemoryInfo sync.RWMutex + lockGetBoardId sync.RWMutex + lockGetBoardPartNumber sync.RWMutex + lockGetBrand sync.RWMutex + lockGetBridgeChipInfo sync.RWMutex + lockGetBusType sync.RWMutex + lockGetC2cModeInfoV sync.RWMutex + lockGetCapabilities sync.RWMutex + lockGetClkMonStatus sync.RWMutex + lockGetClock sync.RWMutex + lockGetClockInfo sync.RWMutex + lockGetClockOffsets sync.RWMutex + lockGetComputeInstanceId sync.RWMutex + lockGetComputeMode sync.RWMutex + lockGetComputeRunningProcesses sync.RWMutex + lockGetConfComputeGpuAttestationReport sync.RWMutex + lockGetConfComputeGpuCertificate sync.RWMutex + lockGetConfComputeMemSizeInfo sync.RWMutex + lockGetConfComputeProtectedMemoryUsage sync.RWMutex + lockGetCoolerInfo sync.RWMutex + lockGetCpuAffinity sync.RWMutex + lockGetCpuAffinityWithinScope sync.RWMutex + lockGetCreatableVgpus sync.RWMutex + lockGetCudaComputeCapability sync.RWMutex + lockGetCurrPcieLinkGeneration sync.RWMutex + lockGetCurrPcieLinkWidth sync.RWMutex + lockGetCurrentClockFreqs sync.RWMutex + lockGetCurrentClocksEventReasons sync.RWMutex + lockGetCurrentClocksThrottleReasons sync.RWMutex + lockGetDecoderUtilization sync.RWMutex + lockGetDefaultApplicationsClock sync.RWMutex + lockGetDefaultEccMode sync.RWMutex + lockGetDetailedEccErrors sync.RWMutex + lockGetDeviceHandleFromMigDeviceHandle sync.RWMutex + lockGetDisplayActive sync.RWMutex + lockGetDisplayMode sync.RWMutex + lockGetDramEncryptionMode sync.RWMutex + lockGetDriverModel sync.RWMutex + lockGetDriverModel_v2 sync.RWMutex + lockGetDynamicPstatesInfo sync.RWMutex + lockGetEccMode sync.RWMutex + lockGetEncoderCapacity sync.RWMutex + lockGetEncoderSessions sync.RWMutex + lockGetEncoderStats sync.RWMutex + lockGetEncoderUtilization sync.RWMutex + lockGetEnforcedPowerLimit sync.RWMutex + lockGetFBCSessions sync.RWMutex + lockGetFBCStats sync.RWMutex + lockGetFanControlPolicy_v2 sync.RWMutex + lockGetFanSpeed sync.RWMutex + lockGetFanSpeedRPM sync.RWMutex + lockGetFanSpeed_v2 sync.RWMutex + lockGetFieldValues sync.RWMutex + lockGetGpcClkMinMaxVfOffset sync.RWMutex + lockGetGpcClkVfOffset sync.RWMutex + lockGetGpuFabricInfo sync.RWMutex + lockGetGpuFabricInfoV sync.RWMutex + lockGetGpuInstanceById sync.RWMutex + lockGetGpuInstanceId sync.RWMutex + lockGetGpuInstancePossiblePlacements sync.RWMutex + lockGetGpuInstanceProfileInfo sync.RWMutex + lockGetGpuInstanceProfileInfoV sync.RWMutex + lockGetGpuInstanceRemainingCapacity sync.RWMutex + lockGetGpuInstances sync.RWMutex + lockGetGpuMaxPcieLinkGeneration sync.RWMutex + lockGetGpuOperationMode sync.RWMutex + lockGetGraphicsRunningProcesses sync.RWMutex + lockGetGridLicensableFeatures sync.RWMutex + lockGetGspFirmwareMode sync.RWMutex + lockGetGspFirmwareVersion sync.RWMutex + lockGetHostVgpuMode sync.RWMutex + lockGetIndex sync.RWMutex + lockGetInforomConfigurationChecksum sync.RWMutex + lockGetInforomImageVersion sync.RWMutex + lockGetInforomVersion sync.RWMutex + lockGetIrqNum sync.RWMutex + lockGetJpgUtilization sync.RWMutex + lockGetLastBBXFlushTime sync.RWMutex + lockGetMPSComputeRunningProcesses sync.RWMutex + lockGetMarginTemperature sync.RWMutex + lockGetMaxClockInfo sync.RWMutex + lockGetMaxCustomerBoostClock sync.RWMutex + lockGetMaxMigDeviceCount sync.RWMutex + lockGetMaxPcieLinkGeneration sync.RWMutex + lockGetMaxPcieLinkWidth sync.RWMutex + lockGetMemClkMinMaxVfOffset sync.RWMutex + lockGetMemClkVfOffset sync.RWMutex + lockGetMemoryAffinity sync.RWMutex + lockGetMemoryBusWidth sync.RWMutex + lockGetMemoryErrorCounter sync.RWMutex + lockGetMemoryInfo sync.RWMutex + lockGetMemoryInfo_v2 sync.RWMutex + lockGetMigDeviceHandleByIndex sync.RWMutex + lockGetMigMode sync.RWMutex + lockGetMinMaxClockOfPState sync.RWMutex + lockGetMinMaxFanSpeed sync.RWMutex + lockGetMinorNumber sync.RWMutex + lockGetModuleId sync.RWMutex + lockGetMultiGpuBoard sync.RWMutex + lockGetName sync.RWMutex + lockGetNumFans sync.RWMutex + lockGetNumGpuCores sync.RWMutex + lockGetNumaNodeId sync.RWMutex + lockGetNvLinkCapability sync.RWMutex + lockGetNvLinkErrorCounter sync.RWMutex + lockGetNvLinkRemoteDeviceType sync.RWMutex + lockGetNvLinkRemotePciInfo sync.RWMutex + lockGetNvLinkState sync.RWMutex + lockGetNvLinkUtilizationControl sync.RWMutex + lockGetNvLinkUtilizationCounter sync.RWMutex + lockGetNvLinkVersion sync.RWMutex + lockGetNvlinkBwMode sync.RWMutex + lockGetNvlinkSupportedBwModes sync.RWMutex + lockGetOfaUtilization sync.RWMutex + lockGetP2PStatus sync.RWMutex + lockGetPciInfo sync.RWMutex + lockGetPciInfoExt sync.RWMutex + lockGetPcieLinkMaxSpeed sync.RWMutex + lockGetPcieReplayCounter sync.RWMutex + lockGetPcieSpeed sync.RWMutex + lockGetPcieThroughput sync.RWMutex + lockGetPerformanceModes sync.RWMutex + lockGetPerformanceState sync.RWMutex + lockGetPersistenceMode sync.RWMutex + lockGetPgpuMetadataString sync.RWMutex + lockGetPlatformInfo sync.RWMutex + lockGetPowerManagementDefaultLimit sync.RWMutex + lockGetPowerManagementLimit sync.RWMutex + lockGetPowerManagementLimitConstraints sync.RWMutex + lockGetPowerManagementMode sync.RWMutex + lockGetPowerSource sync.RWMutex + lockGetPowerState sync.RWMutex + lockGetPowerUsage sync.RWMutex + lockGetProcessUtilization sync.RWMutex + lockGetProcessesUtilizationInfo sync.RWMutex + lockGetRemappedRows sync.RWMutex + lockGetRetiredPages sync.RWMutex + lockGetRetiredPagesPendingStatus sync.RWMutex + lockGetRetiredPages_v2 sync.RWMutex + lockGetRowRemapperHistogram sync.RWMutex + lockGetRunningProcessDetailList sync.RWMutex + lockGetSamples sync.RWMutex + lockGetSerial sync.RWMutex + lockGetSramEccErrorStatus sync.RWMutex + lockGetSupportedClocksEventReasons sync.RWMutex + lockGetSupportedClocksThrottleReasons sync.RWMutex + lockGetSupportedEventTypes sync.RWMutex + lockGetSupportedGraphicsClocks sync.RWMutex + lockGetSupportedMemoryClocks sync.RWMutex + lockGetSupportedPerformanceStates sync.RWMutex + lockGetSupportedVgpus sync.RWMutex + lockGetTargetFanSpeed sync.RWMutex + lockGetTemperature sync.RWMutex + lockGetTemperatureThreshold sync.RWMutex + lockGetTemperatureV sync.RWMutex + lockGetThermalSettings sync.RWMutex + lockGetTopologyCommonAncestor sync.RWMutex + lockGetTopologyNearestGpus sync.RWMutex + lockGetTotalEccErrors sync.RWMutex + lockGetTotalEnergyConsumption sync.RWMutex + lockGetUUID sync.RWMutex + lockGetUtilizationRates sync.RWMutex + lockGetVbiosVersion sync.RWMutex + lockGetVgpuCapabilities sync.RWMutex + lockGetVgpuHeterogeneousMode sync.RWMutex + lockGetVgpuInstancesUtilizationInfo sync.RWMutex + lockGetVgpuMetadata sync.RWMutex + lockGetVgpuProcessUtilization sync.RWMutex + lockGetVgpuProcessesUtilizationInfo sync.RWMutex + lockGetVgpuSchedulerCapabilities sync.RWMutex + lockGetVgpuSchedulerLog sync.RWMutex + lockGetVgpuSchedulerState sync.RWMutex + lockGetVgpuTypeCreatablePlacements sync.RWMutex + lockGetVgpuTypeSupportedPlacements sync.RWMutex + lockGetVgpuUtilization sync.RWMutex + lockGetViolationStatus sync.RWMutex + lockGetVirtualizationMode sync.RWMutex + lockGpmMigSampleGet sync.RWMutex + lockGpmQueryDeviceSupport sync.RWMutex + lockGpmQueryDeviceSupportV sync.RWMutex + lockGpmQueryIfStreamingEnabled sync.RWMutex + lockGpmSampleGet sync.RWMutex + lockGpmSetStreamingEnabled sync.RWMutex + lockIsMigDeviceHandle sync.RWMutex + lockOnSameBoard sync.RWMutex + lockPowerSmoothingActivatePresetProfile sync.RWMutex + lockPowerSmoothingSetState sync.RWMutex + lockPowerSmoothingUpdatePresetProfileParam sync.RWMutex + lockRegisterEvents sync.RWMutex + lockResetApplicationsClocks sync.RWMutex + lockResetGpuLockedClocks sync.RWMutex + lockResetMemoryLockedClocks sync.RWMutex + lockResetNvLinkErrorCounters sync.RWMutex + lockResetNvLinkUtilizationCounter sync.RWMutex + lockSetAPIRestriction sync.RWMutex + lockSetAccountingMode sync.RWMutex + lockSetApplicationsClocks sync.RWMutex + lockSetAutoBoostedClocksEnabled sync.RWMutex + lockSetClockOffsets sync.RWMutex + lockSetComputeMode sync.RWMutex + lockSetConfComputeUnprotectedMemSize sync.RWMutex + lockSetCpuAffinity sync.RWMutex + lockSetDefaultAutoBoostedClocksEnabled sync.RWMutex + lockSetDefaultFanSpeed_v2 sync.RWMutex + lockSetDramEncryptionMode sync.RWMutex + lockSetDriverModel sync.RWMutex + lockSetEccMode sync.RWMutex + lockSetFanControlPolicy sync.RWMutex + lockSetFanSpeed_v2 sync.RWMutex + lockSetGpcClkVfOffset sync.RWMutex + lockSetGpuLockedClocks sync.RWMutex + lockSetGpuOperationMode sync.RWMutex + lockSetMemClkVfOffset sync.RWMutex + lockSetMemoryLockedClocks sync.RWMutex + lockSetMigMode sync.RWMutex + lockSetNvLinkDeviceLowPowerThreshold sync.RWMutex + lockSetNvLinkUtilizationControl sync.RWMutex + lockSetNvlinkBwMode sync.RWMutex + lockSetPersistenceMode sync.RWMutex + lockSetPowerManagementLimit sync.RWMutex + lockSetPowerManagementLimit_v2 sync.RWMutex + lockSetTemperatureThreshold sync.RWMutex + lockSetVgpuCapabilities sync.RWMutex + lockSetVgpuHeterogeneousMode sync.RWMutex + lockSetVgpuSchedulerState sync.RWMutex + lockSetVirtualizationMode sync.RWMutex + lockValidateInforom sync.RWMutex + lockVgpuTypeGetMaxInstances sync.RWMutex + lockWorkloadPowerProfileClearRequestedProfiles sync.RWMutex + lockWorkloadPowerProfileGetCurrentProfiles sync.RWMutex + lockWorkloadPowerProfileGetProfilesInfo sync.RWMutex + lockWorkloadPowerProfileSetRequestedProfiles sync.RWMutex } // ClearAccountingPids calls ClearAccountingPidsFunc. @@ -3283,6 +3529,33 @@ func (mock *Device) GetC2cModeInfoVCalls() []struct { return calls } +// GetCapabilities calls GetCapabilitiesFunc. +func (mock *Device) GetCapabilities() (nvml.DeviceCapabilities, nvml.Return) { + if mock.GetCapabilitiesFunc == nil { + panic("Device.GetCapabilitiesFunc: method is nil but Device.GetCapabilities was just called") + } + callInfo := struct { + }{} + mock.lockGetCapabilities.Lock() + mock.calls.GetCapabilities = append(mock.calls.GetCapabilities, callInfo) + mock.lockGetCapabilities.Unlock() + return mock.GetCapabilitiesFunc() +} + +// GetCapabilitiesCalls gets all the calls that were made to GetCapabilities. +// Check the length with: +// +// len(mockedDevice.GetCapabilitiesCalls()) +func (mock *Device) GetCapabilitiesCalls() []struct { +} { + var calls []struct { + } + mock.lockGetCapabilities.RLock() + calls = mock.calls.GetCapabilities + mock.lockGetCapabilities.RUnlock() + return calls +} + // GetClkMonStatus calls GetClkMonStatusFunc. func (mock *Device) GetClkMonStatus() (nvml.ClkMonStatus, nvml.Return) { if mock.GetClkMonStatusFunc == nil { @@ -3378,6 +3651,33 @@ func (mock *Device) GetClockInfoCalls() []struct { return calls } +// GetClockOffsets calls GetClockOffsetsFunc. +func (mock *Device) GetClockOffsets() (nvml.ClockOffset, nvml.Return) { + if mock.GetClockOffsetsFunc == nil { + panic("Device.GetClockOffsetsFunc: method is nil but Device.GetClockOffsets was just called") + } + callInfo := struct { + }{} + mock.lockGetClockOffsets.Lock() + mock.calls.GetClockOffsets = append(mock.calls.GetClockOffsets, callInfo) + mock.lockGetClockOffsets.Unlock() + return mock.GetClockOffsetsFunc() +} + +// GetClockOffsetsCalls gets all the calls that were made to GetClockOffsets. +// Check the length with: +// +// len(mockedDevice.GetClockOffsetsCalls()) +func (mock *Device) GetClockOffsetsCalls() []struct { +} { + var calls []struct { + } + mock.lockGetClockOffsets.RLock() + calls = mock.calls.GetClockOffsets + mock.lockGetClockOffsets.RUnlock() + return calls +} + // GetComputeInstanceId calls GetComputeInstanceIdFunc. func (mock *Device) GetComputeInstanceId() (int, nvml.Return) { if mock.GetComputeInstanceIdFunc == nil { @@ -3567,6 +3867,33 @@ func (mock *Device) GetConfComputeProtectedMemoryUsageCalls() []struct { return calls } +// GetCoolerInfo calls GetCoolerInfoFunc. +func (mock *Device) GetCoolerInfo() (nvml.CoolerInfo, nvml.Return) { + if mock.GetCoolerInfoFunc == nil { + panic("Device.GetCoolerInfoFunc: method is nil but Device.GetCoolerInfo was just called") + } + callInfo := struct { + }{} + mock.lockGetCoolerInfo.Lock() + mock.calls.GetCoolerInfo = append(mock.calls.GetCoolerInfo, callInfo) + mock.lockGetCoolerInfo.Unlock() + return mock.GetCoolerInfoFunc() +} + +// GetCoolerInfoCalls gets all the calls that were made to GetCoolerInfo. +// Check the length with: +// +// len(mockedDevice.GetCoolerInfoCalls()) +func (mock *Device) GetCoolerInfoCalls() []struct { +} { + var calls []struct { + } + mock.lockGetCoolerInfo.RLock() + calls = mock.calls.GetCoolerInfo + mock.lockGetCoolerInfo.RUnlock() + return calls +} + // GetCpuAffinity calls GetCpuAffinityFunc. func (mock *Device) GetCpuAffinity(n int) ([]uint, nvml.Return) { if mock.GetCpuAffinityFunc == nil { @@ -3743,6 +4070,33 @@ func (mock *Device) GetCurrPcieLinkWidthCalls() []struct { return calls } +// GetCurrentClockFreqs calls GetCurrentClockFreqsFunc. +func (mock *Device) GetCurrentClockFreqs() (nvml.DeviceCurrentClockFreqs, nvml.Return) { + if mock.GetCurrentClockFreqsFunc == nil { + panic("Device.GetCurrentClockFreqsFunc: method is nil but Device.GetCurrentClockFreqs was just called") + } + callInfo := struct { + }{} + mock.lockGetCurrentClockFreqs.Lock() + mock.calls.GetCurrentClockFreqs = append(mock.calls.GetCurrentClockFreqs, callInfo) + mock.lockGetCurrentClockFreqs.Unlock() + return mock.GetCurrentClockFreqsFunc() +} + +// GetCurrentClockFreqsCalls gets all the calls that were made to GetCurrentClockFreqs. +// Check the length with: +// +// len(mockedDevice.GetCurrentClockFreqsCalls()) +func (mock *Device) GetCurrentClockFreqsCalls() []struct { +} { + var calls []struct { + } + mock.lockGetCurrentClockFreqs.RLock() + calls = mock.calls.GetCurrentClockFreqs + mock.lockGetCurrentClockFreqs.RUnlock() + return calls +} + // GetCurrentClocksEventReasons calls GetCurrentClocksEventReasonsFunc. func (mock *Device) GetCurrentClocksEventReasons() (uint64, nvml.Return) { if mock.GetCurrentClocksEventReasonsFunc == nil { @@ -4000,6 +4354,33 @@ func (mock *Device) GetDisplayModeCalls() []struct { return calls } +// GetDramEncryptionMode calls GetDramEncryptionModeFunc. +func (mock *Device) GetDramEncryptionMode() (nvml.DramEncryptionInfo, nvml.DramEncryptionInfo, nvml.Return) { + if mock.GetDramEncryptionModeFunc == nil { + panic("Device.GetDramEncryptionModeFunc: method is nil but Device.GetDramEncryptionMode was just called") + } + callInfo := struct { + }{} + mock.lockGetDramEncryptionMode.Lock() + mock.calls.GetDramEncryptionMode = append(mock.calls.GetDramEncryptionMode, callInfo) + mock.lockGetDramEncryptionMode.Unlock() + return mock.GetDramEncryptionModeFunc() +} + +// GetDramEncryptionModeCalls gets all the calls that were made to GetDramEncryptionMode. +// Check the length with: +// +// len(mockedDevice.GetDramEncryptionModeCalls()) +func (mock *Device) GetDramEncryptionModeCalls() []struct { +} { + var calls []struct { + } + mock.lockGetDramEncryptionMode.RLock() + calls = mock.calls.GetDramEncryptionMode + mock.lockGetDramEncryptionMode.RUnlock() + return calls +} + // GetDriverModel calls GetDriverModelFunc. func (mock *Device) GetDriverModel() (nvml.DriverModel, nvml.DriverModel, nvml.Return) { if mock.GetDriverModelFunc == nil { @@ -4027,6 +4408,33 @@ func (mock *Device) GetDriverModelCalls() []struct { return calls } +// GetDriverModel_v2 calls GetDriverModel_v2Func. +func (mock *Device) GetDriverModel_v2() (nvml.DriverModel, nvml.DriverModel, nvml.Return) { + if mock.GetDriverModel_v2Func == nil { + panic("Device.GetDriverModel_v2Func: method is nil but Device.GetDriverModel_v2 was just called") + } + callInfo := struct { + }{} + mock.lockGetDriverModel_v2.Lock() + mock.calls.GetDriverModel_v2 = append(mock.calls.GetDriverModel_v2, callInfo) + mock.lockGetDriverModel_v2.Unlock() + return mock.GetDriverModel_v2Func() +} + +// GetDriverModel_v2Calls gets all the calls that were made to GetDriverModel_v2. +// Check the length with: +// +// len(mockedDevice.GetDriverModel_v2Calls()) +func (mock *Device) GetDriverModel_v2Calls() []struct { +} { + var calls []struct { + } + mock.lockGetDriverModel_v2.RLock() + calls = mock.calls.GetDriverModel_v2 + mock.lockGetDriverModel_v2.RUnlock() + return calls +} + // GetDynamicPstatesInfo calls GetDynamicPstatesInfoFunc. func (mock *Device) GetDynamicPstatesInfo() (nvml.GpuDynamicPstatesInfo, nvml.Return) { if mock.GetDynamicPstatesInfoFunc == nil { @@ -4334,6 +4742,33 @@ func (mock *Device) GetFanSpeedCalls() []struct { return calls } +// GetFanSpeedRPM calls GetFanSpeedRPMFunc. +func (mock *Device) GetFanSpeedRPM() (nvml.FanSpeedInfo, nvml.Return) { + if mock.GetFanSpeedRPMFunc == nil { + panic("Device.GetFanSpeedRPMFunc: method is nil but Device.GetFanSpeedRPM was just called") + } + callInfo := struct { + }{} + mock.lockGetFanSpeedRPM.Lock() + mock.calls.GetFanSpeedRPM = append(mock.calls.GetFanSpeedRPM, callInfo) + mock.lockGetFanSpeedRPM.Unlock() + return mock.GetFanSpeedRPMFunc() +} + +// GetFanSpeedRPMCalls gets all the calls that were made to GetFanSpeedRPM. +// Check the length with: +// +// len(mockedDevice.GetFanSpeedRPMCalls()) +func (mock *Device) GetFanSpeedRPMCalls() []struct { +} { + var calls []struct { + } + mock.lockGetFanSpeedRPM.RLock() + calls = mock.calls.GetFanSpeedRPM + mock.lockGetFanSpeedRPM.RUnlock() + return calls +} + // GetFanSpeed_v2 calls GetFanSpeed_v2Func. func (mock *Device) GetFanSpeed_v2(n int) (uint32, nvml.Return) { if mock.GetFanSpeed_v2Func == nil { @@ -5135,6 +5570,33 @@ func (mock *Device) GetMPSComputeRunningProcessesCalls() []struct { return calls } +// GetMarginTemperature calls GetMarginTemperatureFunc. +func (mock *Device) GetMarginTemperature() (nvml.MarginTemperature, nvml.Return) { + if mock.GetMarginTemperatureFunc == nil { + panic("Device.GetMarginTemperatureFunc: method is nil but Device.GetMarginTemperature was just called") + } + callInfo := struct { + }{} + mock.lockGetMarginTemperature.Lock() + mock.calls.GetMarginTemperature = append(mock.calls.GetMarginTemperature, callInfo) + mock.lockGetMarginTemperature.Unlock() + return mock.GetMarginTemperatureFunc() +} + +// GetMarginTemperatureCalls gets all the calls that were made to GetMarginTemperature. +// Check the length with: +// +// len(mockedDevice.GetMarginTemperatureCalls()) +func (mock *Device) GetMarginTemperatureCalls() []struct { +} { + var calls []struct { + } + mock.lockGetMarginTemperature.RLock() + calls = mock.calls.GetMarginTemperature + mock.lockGetMarginTemperature.RUnlock() + return calls +} + // GetMaxClockInfo calls GetMaxClockInfoFunc. func (mock *Device) GetMaxClockInfo(clockType nvml.ClockType) (uint32, nvml.Return) { if mock.GetMaxClockInfoFunc == nil { @@ -6074,6 +6536,60 @@ func (mock *Device) GetNvLinkVersionCalls() []struct { return calls } +// GetNvlinkBwMode calls GetNvlinkBwModeFunc. +func (mock *Device) GetNvlinkBwMode() (nvml.NvlinkGetBwMode, nvml.Return) { + if mock.GetNvlinkBwModeFunc == nil { + panic("Device.GetNvlinkBwModeFunc: method is nil but Device.GetNvlinkBwMode was just called") + } + callInfo := struct { + }{} + mock.lockGetNvlinkBwMode.Lock() + mock.calls.GetNvlinkBwMode = append(mock.calls.GetNvlinkBwMode, callInfo) + mock.lockGetNvlinkBwMode.Unlock() + return mock.GetNvlinkBwModeFunc() +} + +// GetNvlinkBwModeCalls gets all the calls that were made to GetNvlinkBwMode. +// Check the length with: +// +// len(mockedDevice.GetNvlinkBwModeCalls()) +func (mock *Device) GetNvlinkBwModeCalls() []struct { +} { + var calls []struct { + } + mock.lockGetNvlinkBwMode.RLock() + calls = mock.calls.GetNvlinkBwMode + mock.lockGetNvlinkBwMode.RUnlock() + return calls +} + +// GetNvlinkSupportedBwModes calls GetNvlinkSupportedBwModesFunc. +func (mock *Device) GetNvlinkSupportedBwModes() (nvml.NvlinkSupportedBwModes, nvml.Return) { + if mock.GetNvlinkSupportedBwModesFunc == nil { + panic("Device.GetNvlinkSupportedBwModesFunc: method is nil but Device.GetNvlinkSupportedBwModes was just called") + } + callInfo := struct { + }{} + mock.lockGetNvlinkSupportedBwModes.Lock() + mock.calls.GetNvlinkSupportedBwModes = append(mock.calls.GetNvlinkSupportedBwModes, callInfo) + mock.lockGetNvlinkSupportedBwModes.Unlock() + return mock.GetNvlinkSupportedBwModesFunc() +} + +// GetNvlinkSupportedBwModesCalls gets all the calls that were made to GetNvlinkSupportedBwModes. +// Check the length with: +// +// len(mockedDevice.GetNvlinkSupportedBwModesCalls()) +func (mock *Device) GetNvlinkSupportedBwModesCalls() []struct { +} { + var calls []struct { + } + mock.lockGetNvlinkSupportedBwModes.RLock() + calls = mock.calls.GetNvlinkSupportedBwModes + mock.lockGetNvlinkSupportedBwModes.RUnlock() + return calls +} + // GetOfaUtilization calls GetOfaUtilizationFunc. func (mock *Device) GetOfaUtilization() (uint32, uint32, nvml.Return) { if mock.GetOfaUtilizationFunc == nil { @@ -6304,6 +6820,33 @@ func (mock *Device) GetPcieThroughputCalls() []struct { return calls } +// GetPerformanceModes calls GetPerformanceModesFunc. +func (mock *Device) GetPerformanceModes() (nvml.DevicePerfModes, nvml.Return) { + if mock.GetPerformanceModesFunc == nil { + panic("Device.GetPerformanceModesFunc: method is nil but Device.GetPerformanceModes was just called") + } + callInfo := struct { + }{} + mock.lockGetPerformanceModes.Lock() + mock.calls.GetPerformanceModes = append(mock.calls.GetPerformanceModes, callInfo) + mock.lockGetPerformanceModes.Unlock() + return mock.GetPerformanceModesFunc() +} + +// GetPerformanceModesCalls gets all the calls that were made to GetPerformanceModes. +// Check the length with: +// +// len(mockedDevice.GetPerformanceModesCalls()) +func (mock *Device) GetPerformanceModesCalls() []struct { +} { + var calls []struct { + } + mock.lockGetPerformanceModes.RLock() + calls = mock.calls.GetPerformanceModes + mock.lockGetPerformanceModes.RUnlock() + return calls +} + // GetPerformanceState calls GetPerformanceStateFunc. func (mock *Device) GetPerformanceState() (nvml.Pstates, nvml.Return) { if mock.GetPerformanceStateFunc == nil { @@ -6385,6 +6928,33 @@ func (mock *Device) GetPgpuMetadataStringCalls() []struct { return calls } +// GetPlatformInfo calls GetPlatformInfoFunc. +func (mock *Device) GetPlatformInfo() (nvml.PlatformInfo, nvml.Return) { + if mock.GetPlatformInfoFunc == nil { + panic("Device.GetPlatformInfoFunc: method is nil but Device.GetPlatformInfo was just called") + } + callInfo := struct { + }{} + mock.lockGetPlatformInfo.Lock() + mock.calls.GetPlatformInfo = append(mock.calls.GetPlatformInfo, callInfo) + mock.lockGetPlatformInfo.Unlock() + return mock.GetPlatformInfoFunc() +} + +// GetPlatformInfoCalls gets all the calls that were made to GetPlatformInfo. +// Check the length with: +// +// len(mockedDevice.GetPlatformInfoCalls()) +func (mock *Device) GetPlatformInfoCalls() []struct { +} { + var calls []struct { + } + mock.lockGetPlatformInfo.RLock() + calls = mock.calls.GetPlatformInfo + mock.lockGetPlatformInfo.RUnlock() + return calls +} + // GetPowerManagementDefaultLimit calls GetPowerManagementDefaultLimitFunc. func (mock *Device) GetPowerManagementDefaultLimit() (uint32, nvml.Return) { if mock.GetPowerManagementDefaultLimitFunc == nil { @@ -7185,6 +7755,33 @@ func (mock *Device) GetTemperatureThresholdCalls() []struct { return calls } +// GetTemperatureV calls GetTemperatureVFunc. +func (mock *Device) GetTemperatureV() nvml.TemperatureHandler { + if mock.GetTemperatureVFunc == nil { + panic("Device.GetTemperatureVFunc: method is nil but Device.GetTemperatureV was just called") + } + callInfo := struct { + }{} + mock.lockGetTemperatureV.Lock() + mock.calls.GetTemperatureV = append(mock.calls.GetTemperatureV, callInfo) + mock.lockGetTemperatureV.Unlock() + return mock.GetTemperatureVFunc() +} + +// GetTemperatureVCalls gets all the calls that were made to GetTemperatureV. +// Check the length with: +// +// len(mockedDevice.GetTemperatureVCalls()) +func (mock *Device) GetTemperatureVCalls() []struct { +} { + var calls []struct { + } + mock.lockGetTemperatureV.RLock() + calls = mock.calls.GetTemperatureV + mock.lockGetTemperatureV.RUnlock() + return calls +} + // GetThermalSettings calls GetThermalSettingsFunc. func (mock *Device) GetThermalSettings(v uint32) (nvml.GpuThermalSettings, nvml.Return) { if mock.GetThermalSettingsFunc == nil { @@ -8073,6 +8670,102 @@ func (mock *Device) OnSameBoardCalls() []struct { return calls } +// PowerSmoothingActivatePresetProfile calls PowerSmoothingActivatePresetProfileFunc. +func (mock *Device) PowerSmoothingActivatePresetProfile(powerSmoothingProfile *nvml.PowerSmoothingProfile) nvml.Return { + if mock.PowerSmoothingActivatePresetProfileFunc == nil { + panic("Device.PowerSmoothingActivatePresetProfileFunc: method is nil but Device.PowerSmoothingActivatePresetProfile was just called") + } + callInfo := struct { + PowerSmoothingProfile *nvml.PowerSmoothingProfile + }{ + PowerSmoothingProfile: powerSmoothingProfile, + } + mock.lockPowerSmoothingActivatePresetProfile.Lock() + mock.calls.PowerSmoothingActivatePresetProfile = append(mock.calls.PowerSmoothingActivatePresetProfile, callInfo) + mock.lockPowerSmoothingActivatePresetProfile.Unlock() + return mock.PowerSmoothingActivatePresetProfileFunc(powerSmoothingProfile) +} + +// PowerSmoothingActivatePresetProfileCalls gets all the calls that were made to PowerSmoothingActivatePresetProfile. +// Check the length with: +// +// len(mockedDevice.PowerSmoothingActivatePresetProfileCalls()) +func (mock *Device) PowerSmoothingActivatePresetProfileCalls() []struct { + PowerSmoothingProfile *nvml.PowerSmoothingProfile +} { + var calls []struct { + PowerSmoothingProfile *nvml.PowerSmoothingProfile + } + mock.lockPowerSmoothingActivatePresetProfile.RLock() + calls = mock.calls.PowerSmoothingActivatePresetProfile + mock.lockPowerSmoothingActivatePresetProfile.RUnlock() + return calls +} + +// PowerSmoothingSetState calls PowerSmoothingSetStateFunc. +func (mock *Device) PowerSmoothingSetState(powerSmoothingState *nvml.PowerSmoothingState) nvml.Return { + if mock.PowerSmoothingSetStateFunc == nil { + panic("Device.PowerSmoothingSetStateFunc: method is nil but Device.PowerSmoothingSetState was just called") + } + callInfo := struct { + PowerSmoothingState *nvml.PowerSmoothingState + }{ + PowerSmoothingState: powerSmoothingState, + } + mock.lockPowerSmoothingSetState.Lock() + mock.calls.PowerSmoothingSetState = append(mock.calls.PowerSmoothingSetState, callInfo) + mock.lockPowerSmoothingSetState.Unlock() + return mock.PowerSmoothingSetStateFunc(powerSmoothingState) +} + +// PowerSmoothingSetStateCalls gets all the calls that were made to PowerSmoothingSetState. +// Check the length with: +// +// len(mockedDevice.PowerSmoothingSetStateCalls()) +func (mock *Device) PowerSmoothingSetStateCalls() []struct { + PowerSmoothingState *nvml.PowerSmoothingState +} { + var calls []struct { + PowerSmoothingState *nvml.PowerSmoothingState + } + mock.lockPowerSmoothingSetState.RLock() + calls = mock.calls.PowerSmoothingSetState + mock.lockPowerSmoothingSetState.RUnlock() + return calls +} + +// PowerSmoothingUpdatePresetProfileParam calls PowerSmoothingUpdatePresetProfileParamFunc. +func (mock *Device) PowerSmoothingUpdatePresetProfileParam(powerSmoothingProfile *nvml.PowerSmoothingProfile) nvml.Return { + if mock.PowerSmoothingUpdatePresetProfileParamFunc == nil { + panic("Device.PowerSmoothingUpdatePresetProfileParamFunc: method is nil but Device.PowerSmoothingUpdatePresetProfileParam was just called") + } + callInfo := struct { + PowerSmoothingProfile *nvml.PowerSmoothingProfile + }{ + PowerSmoothingProfile: powerSmoothingProfile, + } + mock.lockPowerSmoothingUpdatePresetProfileParam.Lock() + mock.calls.PowerSmoothingUpdatePresetProfileParam = append(mock.calls.PowerSmoothingUpdatePresetProfileParam, callInfo) + mock.lockPowerSmoothingUpdatePresetProfileParam.Unlock() + return mock.PowerSmoothingUpdatePresetProfileParamFunc(powerSmoothingProfile) +} + +// PowerSmoothingUpdatePresetProfileParamCalls gets all the calls that were made to PowerSmoothingUpdatePresetProfileParam. +// Check the length with: +// +// len(mockedDevice.PowerSmoothingUpdatePresetProfileParamCalls()) +func (mock *Device) PowerSmoothingUpdatePresetProfileParamCalls() []struct { + PowerSmoothingProfile *nvml.PowerSmoothingProfile +} { + var calls []struct { + PowerSmoothingProfile *nvml.PowerSmoothingProfile + } + mock.lockPowerSmoothingUpdatePresetProfileParam.RLock() + calls = mock.calls.PowerSmoothingUpdatePresetProfileParam + mock.lockPowerSmoothingUpdatePresetProfileParam.RUnlock() + return calls +} + // RegisterEvents calls RegisterEventsFunc. func (mock *Device) RegisterEvents(v uint64, eventSet nvml.EventSet) nvml.Return { if mock.RegisterEventsFunc == nil { @@ -8394,6 +9087,38 @@ func (mock *Device) SetAutoBoostedClocksEnabledCalls() []struct { return calls } +// SetClockOffsets calls SetClockOffsetsFunc. +func (mock *Device) SetClockOffsets(clockOffset nvml.ClockOffset) nvml.Return { + if mock.SetClockOffsetsFunc == nil { + panic("Device.SetClockOffsetsFunc: method is nil but Device.SetClockOffsets was just called") + } + callInfo := struct { + ClockOffset nvml.ClockOffset + }{ + ClockOffset: clockOffset, + } + mock.lockSetClockOffsets.Lock() + mock.calls.SetClockOffsets = append(mock.calls.SetClockOffsets, callInfo) + mock.lockSetClockOffsets.Unlock() + return mock.SetClockOffsetsFunc(clockOffset) +} + +// SetClockOffsetsCalls gets all the calls that were made to SetClockOffsets. +// Check the length with: +// +// len(mockedDevice.SetClockOffsetsCalls()) +func (mock *Device) SetClockOffsetsCalls() []struct { + ClockOffset nvml.ClockOffset +} { + var calls []struct { + ClockOffset nvml.ClockOffset + } + mock.lockSetClockOffsets.RLock() + calls = mock.calls.SetClockOffsets + mock.lockSetClockOffsets.RUnlock() + return calls +} + // SetComputeMode calls SetComputeModeFunc. func (mock *Device) SetComputeMode(computeMode nvml.ComputeMode) nvml.Return { if mock.SetComputeModeFunc == nil { @@ -8553,6 +9278,38 @@ func (mock *Device) SetDefaultFanSpeed_v2Calls() []struct { return calls } +// SetDramEncryptionMode calls SetDramEncryptionModeFunc. +func (mock *Device) SetDramEncryptionMode(dramEncryptionInfo *nvml.DramEncryptionInfo) nvml.Return { + if mock.SetDramEncryptionModeFunc == nil { + panic("Device.SetDramEncryptionModeFunc: method is nil but Device.SetDramEncryptionMode was just called") + } + callInfo := struct { + DramEncryptionInfo *nvml.DramEncryptionInfo + }{ + DramEncryptionInfo: dramEncryptionInfo, + } + mock.lockSetDramEncryptionMode.Lock() + mock.calls.SetDramEncryptionMode = append(mock.calls.SetDramEncryptionMode, callInfo) + mock.lockSetDramEncryptionMode.Unlock() + return mock.SetDramEncryptionModeFunc(dramEncryptionInfo) +} + +// SetDramEncryptionModeCalls gets all the calls that were made to SetDramEncryptionMode. +// Check the length with: +// +// len(mockedDevice.SetDramEncryptionModeCalls()) +func (mock *Device) SetDramEncryptionModeCalls() []struct { + DramEncryptionInfo *nvml.DramEncryptionInfo +} { + var calls []struct { + DramEncryptionInfo *nvml.DramEncryptionInfo + } + mock.lockSetDramEncryptionMode.RLock() + calls = mock.calls.SetDramEncryptionMode + mock.lockSetDramEncryptionMode.RUnlock() + return calls +} + // SetDriverModel calls SetDriverModelFunc. func (mock *Device) SetDriverModel(driverModel nvml.DriverModel, v uint32) nvml.Return { if mock.SetDriverModelFunc == nil { @@ -8969,6 +9726,38 @@ func (mock *Device) SetNvLinkUtilizationControlCalls() []struct { return calls } +// SetNvlinkBwMode calls SetNvlinkBwModeFunc. +func (mock *Device) SetNvlinkBwMode(nvlinkSetBwMode *nvml.NvlinkSetBwMode) nvml.Return { + if mock.SetNvlinkBwModeFunc == nil { + panic("Device.SetNvlinkBwModeFunc: method is nil but Device.SetNvlinkBwMode was just called") + } + callInfo := struct { + NvlinkSetBwMode *nvml.NvlinkSetBwMode + }{ + NvlinkSetBwMode: nvlinkSetBwMode, + } + mock.lockSetNvlinkBwMode.Lock() + mock.calls.SetNvlinkBwMode = append(mock.calls.SetNvlinkBwMode, callInfo) + mock.lockSetNvlinkBwMode.Unlock() + return mock.SetNvlinkBwModeFunc(nvlinkSetBwMode) +} + +// SetNvlinkBwModeCalls gets all the calls that were made to SetNvlinkBwMode. +// Check the length with: +// +// len(mockedDevice.SetNvlinkBwModeCalls()) +func (mock *Device) SetNvlinkBwModeCalls() []struct { + NvlinkSetBwMode *nvml.NvlinkSetBwMode +} { + var calls []struct { + NvlinkSetBwMode *nvml.NvlinkSetBwMode + } + mock.lockSetNvlinkBwMode.RLock() + calls = mock.calls.SetNvlinkBwMode + mock.lockSetNvlinkBwMode.RUnlock() + return calls +} + // SetPersistenceMode calls SetPersistenceModeFunc. func (mock *Device) SetPersistenceMode(enableState nvml.EnableState) nvml.Return { if mock.SetPersistenceModeFunc == nil { @@ -9291,3 +10080,121 @@ func (mock *Device) VgpuTypeGetMaxInstancesCalls() []struct { mock.lockVgpuTypeGetMaxInstances.RUnlock() return calls } + +// WorkloadPowerProfileClearRequestedProfiles calls WorkloadPowerProfileClearRequestedProfilesFunc. +func (mock *Device) WorkloadPowerProfileClearRequestedProfiles(workloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles) nvml.Return { + if mock.WorkloadPowerProfileClearRequestedProfilesFunc == nil { + panic("Device.WorkloadPowerProfileClearRequestedProfilesFunc: method is nil but Device.WorkloadPowerProfileClearRequestedProfiles was just called") + } + callInfo := struct { + WorkloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles + }{ + WorkloadPowerProfileRequestedProfiles: workloadPowerProfileRequestedProfiles, + } + mock.lockWorkloadPowerProfileClearRequestedProfiles.Lock() + mock.calls.WorkloadPowerProfileClearRequestedProfiles = append(mock.calls.WorkloadPowerProfileClearRequestedProfiles, callInfo) + mock.lockWorkloadPowerProfileClearRequestedProfiles.Unlock() + return mock.WorkloadPowerProfileClearRequestedProfilesFunc(workloadPowerProfileRequestedProfiles) +} + +// WorkloadPowerProfileClearRequestedProfilesCalls gets all the calls that were made to WorkloadPowerProfileClearRequestedProfiles. +// Check the length with: +// +// len(mockedDevice.WorkloadPowerProfileClearRequestedProfilesCalls()) +func (mock *Device) WorkloadPowerProfileClearRequestedProfilesCalls() []struct { + WorkloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles +} { + var calls []struct { + WorkloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles + } + mock.lockWorkloadPowerProfileClearRequestedProfiles.RLock() + calls = mock.calls.WorkloadPowerProfileClearRequestedProfiles + mock.lockWorkloadPowerProfileClearRequestedProfiles.RUnlock() + return calls +} + +// WorkloadPowerProfileGetCurrentProfiles calls WorkloadPowerProfileGetCurrentProfilesFunc. +func (mock *Device) WorkloadPowerProfileGetCurrentProfiles() (nvml.WorkloadPowerProfileCurrentProfiles, nvml.Return) { + if mock.WorkloadPowerProfileGetCurrentProfilesFunc == nil { + panic("Device.WorkloadPowerProfileGetCurrentProfilesFunc: method is nil but Device.WorkloadPowerProfileGetCurrentProfiles was just called") + } + callInfo := struct { + }{} + mock.lockWorkloadPowerProfileGetCurrentProfiles.Lock() + mock.calls.WorkloadPowerProfileGetCurrentProfiles = append(mock.calls.WorkloadPowerProfileGetCurrentProfiles, callInfo) + mock.lockWorkloadPowerProfileGetCurrentProfiles.Unlock() + return mock.WorkloadPowerProfileGetCurrentProfilesFunc() +} + +// WorkloadPowerProfileGetCurrentProfilesCalls gets all the calls that were made to WorkloadPowerProfileGetCurrentProfiles. +// Check the length with: +// +// len(mockedDevice.WorkloadPowerProfileGetCurrentProfilesCalls()) +func (mock *Device) WorkloadPowerProfileGetCurrentProfilesCalls() []struct { +} { + var calls []struct { + } + mock.lockWorkloadPowerProfileGetCurrentProfiles.RLock() + calls = mock.calls.WorkloadPowerProfileGetCurrentProfiles + mock.lockWorkloadPowerProfileGetCurrentProfiles.RUnlock() + return calls +} + +// WorkloadPowerProfileGetProfilesInfo calls WorkloadPowerProfileGetProfilesInfoFunc. +func (mock *Device) WorkloadPowerProfileGetProfilesInfo() (nvml.WorkloadPowerProfileProfilesInfo, nvml.Return) { + if mock.WorkloadPowerProfileGetProfilesInfoFunc == nil { + panic("Device.WorkloadPowerProfileGetProfilesInfoFunc: method is nil but Device.WorkloadPowerProfileGetProfilesInfo was just called") + } + callInfo := struct { + }{} + mock.lockWorkloadPowerProfileGetProfilesInfo.Lock() + mock.calls.WorkloadPowerProfileGetProfilesInfo = append(mock.calls.WorkloadPowerProfileGetProfilesInfo, callInfo) + mock.lockWorkloadPowerProfileGetProfilesInfo.Unlock() + return mock.WorkloadPowerProfileGetProfilesInfoFunc() +} + +// WorkloadPowerProfileGetProfilesInfoCalls gets all the calls that were made to WorkloadPowerProfileGetProfilesInfo. +// Check the length with: +// +// len(mockedDevice.WorkloadPowerProfileGetProfilesInfoCalls()) +func (mock *Device) WorkloadPowerProfileGetProfilesInfoCalls() []struct { +} { + var calls []struct { + } + mock.lockWorkloadPowerProfileGetProfilesInfo.RLock() + calls = mock.calls.WorkloadPowerProfileGetProfilesInfo + mock.lockWorkloadPowerProfileGetProfilesInfo.RUnlock() + return calls +} + +// WorkloadPowerProfileSetRequestedProfiles calls WorkloadPowerProfileSetRequestedProfilesFunc. +func (mock *Device) WorkloadPowerProfileSetRequestedProfiles(workloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles) nvml.Return { + if mock.WorkloadPowerProfileSetRequestedProfilesFunc == nil { + panic("Device.WorkloadPowerProfileSetRequestedProfilesFunc: method is nil but Device.WorkloadPowerProfileSetRequestedProfiles was just called") + } + callInfo := struct { + WorkloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles + }{ + WorkloadPowerProfileRequestedProfiles: workloadPowerProfileRequestedProfiles, + } + mock.lockWorkloadPowerProfileSetRequestedProfiles.Lock() + mock.calls.WorkloadPowerProfileSetRequestedProfiles = append(mock.calls.WorkloadPowerProfileSetRequestedProfiles, callInfo) + mock.lockWorkloadPowerProfileSetRequestedProfiles.Unlock() + return mock.WorkloadPowerProfileSetRequestedProfilesFunc(workloadPowerProfileRequestedProfiles) +} + +// WorkloadPowerProfileSetRequestedProfilesCalls gets all the calls that were made to WorkloadPowerProfileSetRequestedProfiles. +// Check the length with: +// +// len(mockedDevice.WorkloadPowerProfileSetRequestedProfilesCalls()) +func (mock *Device) WorkloadPowerProfileSetRequestedProfilesCalls() []struct { + WorkloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles +} { + var calls []struct { + WorkloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles + } + mock.lockWorkloadPowerProfileSetRequestedProfiles.RLock() + calls = mock.calls.WorkloadPowerProfileSetRequestedProfiles + mock.lockWorkloadPowerProfileSetRequestedProfiles.RUnlock() + return calls +} diff --git a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/dgxa100/dgxa100.go b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/dgxa100/dgxa100.go new file mode 100644 index 000000000..af6503702 --- /dev/null +++ b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/dgxa100/dgxa100.go @@ -0,0 +1,381 @@ +/* + * Copyright (c) 2024, NVIDIA CORPORATION. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package dgxa100 + +import ( + "fmt" + "sync" + + "github.com/google/uuid" + + "github.com/NVIDIA/go-nvml/pkg/nvml" + "github.com/NVIDIA/go-nvml/pkg/nvml/mock" +) + +type Server struct { + mock.Interface + mock.ExtendedInterface + Devices [8]nvml.Device + DriverVersion string + NvmlVersion string + CudaDriverVersion int +} +type Device struct { + mock.Device + sync.RWMutex + UUID string + Name string + Brand nvml.BrandType + Architecture nvml.DeviceArchitecture + PciBusID string + Minor int + Index int + CudaComputeCapability CudaComputeCapability + MigMode int + GpuInstances map[*GpuInstance]struct{} + GpuInstanceCounter uint32 + MemoryInfo nvml.Memory +} + +type GpuInstance struct { + mock.GpuInstance + sync.RWMutex + Info nvml.GpuInstanceInfo + ComputeInstances map[*ComputeInstance]struct{} + ComputeInstanceCounter uint32 +} + +type ComputeInstance struct { + mock.ComputeInstance + Info nvml.ComputeInstanceInfo +} + +type CudaComputeCapability struct { + Major int + Minor int +} + +var _ nvml.Interface = (*Server)(nil) +var _ nvml.Device = (*Device)(nil) +var _ nvml.GpuInstance = (*GpuInstance)(nil) +var _ nvml.ComputeInstance = (*ComputeInstance)(nil) + +func New() *Server { + server := &Server{ + Devices: [8]nvml.Device{ + NewDevice(0), + NewDevice(1), + NewDevice(2), + NewDevice(3), + NewDevice(4), + NewDevice(5), + NewDevice(6), + NewDevice(7), + }, + DriverVersion: "550.54.15", + NvmlVersion: "12.550.54.15", + CudaDriverVersion: 12040, + } + server.setMockFuncs() + return server +} + +func NewDevice(index int) *Device { + device := &Device{ + UUID: "GPU-" + uuid.New().String(), + Name: "Mock NVIDIA A100-SXM4-40GB", + Brand: nvml.BRAND_NVIDIA, + Architecture: nvml.DEVICE_ARCH_AMPERE, + PciBusID: fmt.Sprintf("0000:%02x:00.0", index), + Minor: index, + Index: index, + CudaComputeCapability: CudaComputeCapability{ + Major: 8, + Minor: 0, + }, + GpuInstances: make(map[*GpuInstance]struct{}), + GpuInstanceCounter: 0, + MemoryInfo: nvml.Memory{Total: 42949672960, Free: 0, Used: 0}, + } + device.setMockFuncs() + return device +} + +func NewGpuInstance(info nvml.GpuInstanceInfo) *GpuInstance { + gi := &GpuInstance{ + Info: info, + ComputeInstances: make(map[*ComputeInstance]struct{}), + ComputeInstanceCounter: 0, + } + gi.setMockFuncs() + return gi +} + +func NewComputeInstance(info nvml.ComputeInstanceInfo) *ComputeInstance { + ci := &ComputeInstance{ + Info: info, + } + ci.setMockFuncs() + return ci +} + +func (s *Server) setMockFuncs() { + s.ExtensionsFunc = func() nvml.ExtendedInterface { + return s + } + + s.LookupSymbolFunc = func(symbol string) error { + return nil + } + + s.InitFunc = func() nvml.Return { + return nvml.SUCCESS + } + + s.ShutdownFunc = func() nvml.Return { + return nvml.SUCCESS + } + + s.SystemGetDriverVersionFunc = func() (string, nvml.Return) { + return s.DriverVersion, nvml.SUCCESS + } + + s.SystemGetNVMLVersionFunc = func() (string, nvml.Return) { + return s.NvmlVersion, nvml.SUCCESS + } + + s.SystemGetCudaDriverVersionFunc = func() (int, nvml.Return) { + return s.CudaDriverVersion, nvml.SUCCESS + } + + s.DeviceGetCountFunc = func() (int, nvml.Return) { + return len(s.Devices), nvml.SUCCESS + } + + s.DeviceGetHandleByIndexFunc = func(index int) (nvml.Device, nvml.Return) { + if index < 0 || index >= len(s.Devices) { + return nil, nvml.ERROR_INVALID_ARGUMENT + } + return s.Devices[index], nvml.SUCCESS + } + + s.DeviceGetHandleByUUIDFunc = func(uuid string) (nvml.Device, nvml.Return) { + for _, d := range s.Devices { + if uuid == d.(*Device).UUID { + return d, nvml.SUCCESS + } + } + return nil, nvml.ERROR_INVALID_ARGUMENT + } + + s.DeviceGetHandleByPciBusIdFunc = func(busID string) (nvml.Device, nvml.Return) { + for _, d := range s.Devices { + if busID == d.(*Device).PciBusID { + return d, nvml.SUCCESS + } + } + return nil, nvml.ERROR_INVALID_ARGUMENT + } +} + +func (d *Device) setMockFuncs() { + d.GetMinorNumberFunc = func() (int, nvml.Return) { + return d.Minor, nvml.SUCCESS + } + + d.GetIndexFunc = func() (int, nvml.Return) { + return d.Index, nvml.SUCCESS + } + + d.GetCudaComputeCapabilityFunc = func() (int, int, nvml.Return) { + return d.CudaComputeCapability.Major, d.CudaComputeCapability.Minor, nvml.SUCCESS + } + + d.GetUUIDFunc = func() (string, nvml.Return) { + return d.UUID, nvml.SUCCESS + } + + d.GetNameFunc = func() (string, nvml.Return) { + return d.Name, nvml.SUCCESS + } + + d.GetBrandFunc = func() (nvml.BrandType, nvml.Return) { + return d.Brand, nvml.SUCCESS + } + + d.GetArchitectureFunc = func() (nvml.DeviceArchitecture, nvml.Return) { + return d.Architecture, nvml.SUCCESS + } + + d.GetMemoryInfoFunc = func() (nvml.Memory, nvml.Return) { + return d.MemoryInfo, nvml.SUCCESS + } + + d.GetPciInfoFunc = func() (nvml.PciInfo, nvml.Return) { + p := nvml.PciInfo{ + PciDeviceId: 0x20B010DE, + } + return p, nvml.SUCCESS + } + + d.SetMigModeFunc = func(mode int) (nvml.Return, nvml.Return) { + d.MigMode = mode + return nvml.SUCCESS, nvml.SUCCESS + } + + d.GetMigModeFunc = func() (int, int, nvml.Return) { + return d.MigMode, d.MigMode, nvml.SUCCESS + } + + d.GetGpuInstanceProfileInfoFunc = func(giProfileId int) (nvml.GpuInstanceProfileInfo, nvml.Return) { + if giProfileId < 0 || giProfileId >= nvml.GPU_INSTANCE_PROFILE_COUNT { + return nvml.GpuInstanceProfileInfo{}, nvml.ERROR_INVALID_ARGUMENT + } + + if _, exists := MIGProfiles.GpuInstanceProfiles[giProfileId]; !exists { + return nvml.GpuInstanceProfileInfo{}, nvml.ERROR_NOT_SUPPORTED + } + + return MIGProfiles.GpuInstanceProfiles[giProfileId], nvml.SUCCESS + } + + d.GetGpuInstancePossiblePlacementsFunc = func(info *nvml.GpuInstanceProfileInfo) ([]nvml.GpuInstancePlacement, nvml.Return) { + return MIGPlacements.GpuInstancePossiblePlacements[int(info.Id)], nvml.SUCCESS + } + + d.CreateGpuInstanceFunc = func(info *nvml.GpuInstanceProfileInfo) (nvml.GpuInstance, nvml.Return) { + d.Lock() + defer d.Unlock() + giInfo := nvml.GpuInstanceInfo{ + Device: d, + Id: d.GpuInstanceCounter, + ProfileId: info.Id, + } + d.GpuInstanceCounter++ + gi := NewGpuInstance(giInfo) + d.GpuInstances[gi] = struct{}{} + return gi, nvml.SUCCESS + } + + d.CreateGpuInstanceWithPlacementFunc = func(info *nvml.GpuInstanceProfileInfo, placement *nvml.GpuInstancePlacement) (nvml.GpuInstance, nvml.Return) { + d.Lock() + defer d.Unlock() + giInfo := nvml.GpuInstanceInfo{ + Device: d, + Id: d.GpuInstanceCounter, + ProfileId: info.Id, + Placement: *placement, + } + d.GpuInstanceCounter++ + gi := NewGpuInstance(giInfo) + d.GpuInstances[gi] = struct{}{} + return gi, nvml.SUCCESS + } + + d.GetGpuInstancesFunc = func(info *nvml.GpuInstanceProfileInfo) ([]nvml.GpuInstance, nvml.Return) { + d.RLock() + defer d.RUnlock() + var gis []nvml.GpuInstance + for gi := range d.GpuInstances { + if gi.Info.ProfileId == info.Id { + gis = append(gis, gi) + } + } + return gis, nvml.SUCCESS + } +} + +func (gi *GpuInstance) setMockFuncs() { + gi.GetInfoFunc = func() (nvml.GpuInstanceInfo, nvml.Return) { + return gi.Info, nvml.SUCCESS + } + + gi.GetComputeInstanceProfileInfoFunc = func(ciProfileId int, ciEngProfileId int) (nvml.ComputeInstanceProfileInfo, nvml.Return) { + if ciProfileId < 0 || ciProfileId >= nvml.COMPUTE_INSTANCE_PROFILE_COUNT { + return nvml.ComputeInstanceProfileInfo{}, nvml.ERROR_INVALID_ARGUMENT + } + + if ciEngProfileId != nvml.COMPUTE_INSTANCE_ENGINE_PROFILE_SHARED { + return nvml.ComputeInstanceProfileInfo{}, nvml.ERROR_NOT_SUPPORTED + } + + giProfileId := int(gi.Info.ProfileId) + + if _, exists := MIGProfiles.ComputeInstanceProfiles[giProfileId]; !exists { + return nvml.ComputeInstanceProfileInfo{}, nvml.ERROR_NOT_SUPPORTED + } + + if _, exists := MIGProfiles.ComputeInstanceProfiles[giProfileId][ciProfileId]; !exists { + return nvml.ComputeInstanceProfileInfo{}, nvml.ERROR_NOT_SUPPORTED + } + + return MIGProfiles.ComputeInstanceProfiles[giProfileId][ciProfileId], nvml.SUCCESS + } + + gi.GetComputeInstancePossiblePlacementsFunc = func(info *nvml.ComputeInstanceProfileInfo) ([]nvml.ComputeInstancePlacement, nvml.Return) { + return MIGPlacements.ComputeInstancePossiblePlacements[int(gi.Info.Id)][int(info.Id)], nvml.SUCCESS + } + + gi.CreateComputeInstanceFunc = func(info *nvml.ComputeInstanceProfileInfo) (nvml.ComputeInstance, nvml.Return) { + gi.Lock() + defer gi.Unlock() + ciInfo := nvml.ComputeInstanceInfo{ + Device: gi.Info.Device, + GpuInstance: gi, + Id: gi.ComputeInstanceCounter, + ProfileId: info.Id, + } + gi.ComputeInstanceCounter++ + ci := NewComputeInstance(ciInfo) + gi.ComputeInstances[ci] = struct{}{} + return ci, nvml.SUCCESS + } + + gi.GetComputeInstancesFunc = func(info *nvml.ComputeInstanceProfileInfo) ([]nvml.ComputeInstance, nvml.Return) { + gi.RLock() + defer gi.RUnlock() + var cis []nvml.ComputeInstance + for ci := range gi.ComputeInstances { + if ci.Info.ProfileId == info.Id { + cis = append(cis, ci) + } + } + return cis, nvml.SUCCESS + } + + gi.DestroyFunc = func() nvml.Return { + d := gi.Info.Device.(*Device) + d.Lock() + defer d.Unlock() + delete(d.GpuInstances, gi) + return nvml.SUCCESS + } +} + +func (ci *ComputeInstance) setMockFuncs() { + ci.GetInfoFunc = func() (nvml.ComputeInstanceInfo, nvml.Return) { + return ci.Info, nvml.SUCCESS + } + + ci.DestroyFunc = func() nvml.Return { + gi := ci.Info.GpuInstance.(*GpuInstance) + gi.Lock() + defer gi.Unlock() + delete(gi.ComputeInstances, ci) + return nvml.SUCCESS + } +} diff --git a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/dgxa100/mig-profile.go b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/dgxa100/mig-profile.go new file mode 100644 index 000000000..c4df4c833 --- /dev/null +++ b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/dgxa100/mig-profile.go @@ -0,0 +1,471 @@ +/* + * Copyright (c) 2024, NVIDIA CORPORATION. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package dgxa100 + +import ( + "github.com/NVIDIA/go-nvml/pkg/nvml" +) + +// MIGProfiles holds the profile information for GIs and CIs in this mock server. +// We should consider auto-generating this object in the future. +var MIGProfiles = struct { + GpuInstanceProfiles map[int]nvml.GpuInstanceProfileInfo + ComputeInstanceProfiles map[int]map[int]nvml.ComputeInstanceProfileInfo +}{ + GpuInstanceProfiles: map[int]nvml.GpuInstanceProfileInfo{ + nvml.GPU_INSTANCE_PROFILE_1_SLICE: { + Id: nvml.GPU_INSTANCE_PROFILE_1_SLICE, + IsP2pSupported: 0, + SliceCount: 1, + InstanceCount: 7, + MultiprocessorCount: 14, + CopyEngineCount: 1, + DecoderCount: 0, + EncoderCount: 0, + JpegCount: 0, + OfaCount: 0, + MemorySizeMB: 4864, + }, + nvml.GPU_INSTANCE_PROFILE_1_SLICE_REV1: { + Id: nvml.GPU_INSTANCE_PROFILE_1_SLICE_REV1, + IsP2pSupported: 0, + SliceCount: 1, + InstanceCount: 1, + MultiprocessorCount: 14, + CopyEngineCount: 1, + DecoderCount: 1, + EncoderCount: 0, + JpegCount: 1, + OfaCount: 1, + MemorySizeMB: 4864, + }, + nvml.GPU_INSTANCE_PROFILE_1_SLICE_REV2: { + Id: nvml.GPU_INSTANCE_PROFILE_1_SLICE_REV2, + IsP2pSupported: 0, + SliceCount: 1, + InstanceCount: 4, + MultiprocessorCount: 14, + CopyEngineCount: 1, + DecoderCount: 1, + EncoderCount: 0, + JpegCount: 0, + OfaCount: 0, + MemorySizeMB: 9856, + }, + nvml.GPU_INSTANCE_PROFILE_2_SLICE: { + Id: nvml.GPU_INSTANCE_PROFILE_2_SLICE, + IsP2pSupported: 0, + SliceCount: 2, + InstanceCount: 3, + MultiprocessorCount: 28, + CopyEngineCount: 2, + DecoderCount: 1, + EncoderCount: 0, + JpegCount: 0, + OfaCount: 0, + MemorySizeMB: 9856, + }, + nvml.GPU_INSTANCE_PROFILE_3_SLICE: { + Id: nvml.GPU_INSTANCE_PROFILE_3_SLICE, + IsP2pSupported: 0, + SliceCount: 3, + InstanceCount: 2, + MultiprocessorCount: 42, + CopyEngineCount: 3, + DecoderCount: 2, + EncoderCount: 0, + JpegCount: 0, + OfaCount: 0, + MemorySizeMB: 19968, + }, + nvml.GPU_INSTANCE_PROFILE_4_SLICE: { + Id: nvml.GPU_INSTANCE_PROFILE_4_SLICE, + IsP2pSupported: 0, + SliceCount: 4, + InstanceCount: 1, + MultiprocessorCount: 56, + CopyEngineCount: 4, + DecoderCount: 2, + EncoderCount: 0, + JpegCount: 0, + OfaCount: 0, + MemorySizeMB: 19968, + }, + nvml.GPU_INSTANCE_PROFILE_7_SLICE: { + Id: nvml.GPU_INSTANCE_PROFILE_7_SLICE, + IsP2pSupported: 0, + SliceCount: 7, + InstanceCount: 1, + MultiprocessorCount: 98, + CopyEngineCount: 7, + DecoderCount: 5, + EncoderCount: 0, + JpegCount: 1, + OfaCount: 1, + MemorySizeMB: 40192, + }, + }, + ComputeInstanceProfiles: map[int]map[int]nvml.ComputeInstanceProfileInfo{ + nvml.GPU_INSTANCE_PROFILE_1_SLICE: { + nvml.COMPUTE_INSTANCE_PROFILE_1_SLICE: { + Id: nvml.COMPUTE_INSTANCE_PROFILE_1_SLICE, + SliceCount: 1, + InstanceCount: 1, + MultiprocessorCount: 14, + SharedCopyEngineCount: 1, + SharedDecoderCount: 0, + SharedEncoderCount: 0, + SharedJpegCount: 0, + SharedOfaCount: 0, + }, + }, + nvml.GPU_INSTANCE_PROFILE_1_SLICE_REV1: { + nvml.COMPUTE_INSTANCE_PROFILE_1_SLICE: { + Id: nvml.COMPUTE_INSTANCE_PROFILE_1_SLICE, + SliceCount: 1, + InstanceCount: 1, + MultiprocessorCount: 14, + SharedCopyEngineCount: 1, + SharedDecoderCount: 1, + SharedEncoderCount: 0, + SharedJpegCount: 1, + SharedOfaCount: 1, + }, + }, + nvml.GPU_INSTANCE_PROFILE_1_SLICE_REV2: { + nvml.COMPUTE_INSTANCE_PROFILE_1_SLICE: { + Id: nvml.COMPUTE_INSTANCE_PROFILE_1_SLICE, + SliceCount: 1, + InstanceCount: 1, + MultiprocessorCount: 14, + SharedCopyEngineCount: 1, + SharedDecoderCount: 1, + SharedEncoderCount: 0, + SharedJpegCount: 0, + SharedOfaCount: 0, + }, + }, + nvml.GPU_INSTANCE_PROFILE_2_SLICE: { + nvml.COMPUTE_INSTANCE_PROFILE_1_SLICE: { + Id: nvml.COMPUTE_INSTANCE_PROFILE_1_SLICE, + SliceCount: 1, + InstanceCount: 2, + MultiprocessorCount: 14, + SharedCopyEngineCount: 2, + SharedDecoderCount: 1, + SharedEncoderCount: 0, + SharedJpegCount: 0, + SharedOfaCount: 0, + }, + nvml.COMPUTE_INSTANCE_PROFILE_2_SLICE: { + Id: nvml.COMPUTE_INSTANCE_PROFILE_2_SLICE, + SliceCount: 2, + InstanceCount: 1, + MultiprocessorCount: 28, + SharedCopyEngineCount: 2, + SharedDecoderCount: 1, + SharedEncoderCount: 0, + SharedJpegCount: 0, + SharedOfaCount: 0, + }, + }, + nvml.GPU_INSTANCE_PROFILE_3_SLICE: { + nvml.COMPUTE_INSTANCE_PROFILE_1_SLICE: { + Id: nvml.COMPUTE_INSTANCE_PROFILE_1_SLICE, + SliceCount: 1, + InstanceCount: 3, + MultiprocessorCount: 14, + SharedCopyEngineCount: 3, + SharedDecoderCount: 2, + SharedEncoderCount: 0, + SharedJpegCount: 0, + SharedOfaCount: 0, + }, + nvml.COMPUTE_INSTANCE_PROFILE_2_SLICE: { + Id: nvml.COMPUTE_INSTANCE_PROFILE_2_SLICE, + SliceCount: 2, + InstanceCount: 1, + MultiprocessorCount: 28, + SharedCopyEngineCount: 3, + SharedDecoderCount: 2, + SharedEncoderCount: 0, + SharedJpegCount: 0, + SharedOfaCount: 0, + }, + nvml.COMPUTE_INSTANCE_PROFILE_3_SLICE: { + Id: nvml.COMPUTE_INSTANCE_PROFILE_3_SLICE, + SliceCount: 3, + InstanceCount: 1, + MultiprocessorCount: 42, + SharedCopyEngineCount: 3, + SharedDecoderCount: 2, + SharedEncoderCount: 0, + SharedJpegCount: 0, + SharedOfaCount: 0, + }, + }, + nvml.GPU_INSTANCE_PROFILE_4_SLICE: { + nvml.COMPUTE_INSTANCE_PROFILE_1_SLICE: { + Id: nvml.COMPUTE_INSTANCE_PROFILE_1_SLICE, + SliceCount: 1, + InstanceCount: 4, + MultiprocessorCount: 14, + SharedCopyEngineCount: 4, + SharedDecoderCount: 2, + SharedEncoderCount: 0, + SharedJpegCount: 0, + SharedOfaCount: 0, + }, + nvml.COMPUTE_INSTANCE_PROFILE_2_SLICE: { + Id: nvml.COMPUTE_INSTANCE_PROFILE_2_SLICE, + SliceCount: 2, + InstanceCount: 2, + MultiprocessorCount: 28, + SharedCopyEngineCount: 4, + SharedDecoderCount: 2, + SharedEncoderCount: 0, + SharedJpegCount: 0, + SharedOfaCount: 0, + }, + nvml.COMPUTE_INSTANCE_PROFILE_4_SLICE: { + Id: nvml.COMPUTE_INSTANCE_PROFILE_4_SLICE, + SliceCount: 4, + InstanceCount: 1, + MultiprocessorCount: 56, + SharedCopyEngineCount: 4, + SharedDecoderCount: 2, + SharedEncoderCount: 0, + SharedJpegCount: 0, + SharedOfaCount: 0, + }, + }, + nvml.GPU_INSTANCE_PROFILE_7_SLICE: { + nvml.COMPUTE_INSTANCE_PROFILE_1_SLICE: { + Id: nvml.COMPUTE_INSTANCE_PROFILE_1_SLICE, + SliceCount: 1, + InstanceCount: 7, + MultiprocessorCount: 14, + SharedCopyEngineCount: 7, + SharedDecoderCount: 5, + SharedEncoderCount: 0, + SharedJpegCount: 1, + SharedOfaCount: 1, + }, + nvml.COMPUTE_INSTANCE_PROFILE_2_SLICE: { + Id: nvml.COMPUTE_INSTANCE_PROFILE_2_SLICE, + SliceCount: 2, + InstanceCount: 3, + MultiprocessorCount: 28, + SharedCopyEngineCount: 7, + SharedDecoderCount: 5, + SharedEncoderCount: 0, + SharedJpegCount: 1, + SharedOfaCount: 1, + }, + nvml.COMPUTE_INSTANCE_PROFILE_3_SLICE: { + Id: nvml.COMPUTE_INSTANCE_PROFILE_3_SLICE, + SliceCount: 3, + InstanceCount: 2, + MultiprocessorCount: 42, + SharedCopyEngineCount: 7, + SharedDecoderCount: 5, + SharedEncoderCount: 0, + SharedJpegCount: 1, + SharedOfaCount: 1, + }, + nvml.COMPUTE_INSTANCE_PROFILE_4_SLICE: { + Id: nvml.COMPUTE_INSTANCE_PROFILE_4_SLICE, + SliceCount: 4, + InstanceCount: 1, + MultiprocessorCount: 56, + SharedCopyEngineCount: 7, + SharedDecoderCount: 5, + SharedEncoderCount: 0, + SharedJpegCount: 1, + SharedOfaCount: 1, + }, + nvml.COMPUTE_INSTANCE_PROFILE_7_SLICE: { + Id: nvml.COMPUTE_INSTANCE_PROFILE_7_SLICE, + SliceCount: 7, + InstanceCount: 1, + MultiprocessorCount: 98, + SharedCopyEngineCount: 7, + SharedDecoderCount: 5, + SharedEncoderCount: 0, + SharedJpegCount: 1, + SharedOfaCount: 1, + }, + }, + }, +} + +// MIGPlacements holds the placement information for GIs and CIs in this mock server. +// We should consider auto-generating this object in the future. +var MIGPlacements = struct { + GpuInstancePossiblePlacements map[int][]nvml.GpuInstancePlacement + ComputeInstancePossiblePlacements map[int]map[int][]nvml.ComputeInstancePlacement +}{ + GpuInstancePossiblePlacements: map[int][]nvml.GpuInstancePlacement{ + nvml.GPU_INSTANCE_PROFILE_1_SLICE: { + { + Start: 0, + Size: 1, + }, + { + Start: 1, + Size: 1, + }, + { + Start: 2, + Size: 1, + }, + { + Start: 3, + Size: 1, + }, + { + Start: 4, + Size: 1, + }, + { + Start: 5, + Size: 1, + }, + { + Start: 6, + Size: 1, + }, + }, + nvml.GPU_INSTANCE_PROFILE_1_SLICE_REV1: { + { + Start: 0, + Size: 1, + }, + { + Start: 1, + Size: 1, + }, + { + Start: 2, + Size: 1, + }, + { + Start: 3, + Size: 1, + }, + { + Start: 4, + Size: 1, + }, + { + Start: 5, + Size: 1, + }, + { + Start: 6, + Size: 1, + }, + }, + nvml.GPU_INSTANCE_PROFILE_1_SLICE_REV2: { + { + Start: 0, + Size: 2, + }, + { + Start: 2, + Size: 2, + }, + { + Start: 4, + Size: 2, + }, + { + Start: 6, + Size: 2, + }, + }, + nvml.GPU_INSTANCE_PROFILE_2_SLICE: { + { + Start: 0, + Size: 2, + }, + { + Start: 2, + Size: 2, + }, + { + Start: 4, + Size: 2, + }, + }, + nvml.GPU_INSTANCE_PROFILE_3_SLICE: { + { + Start: 0, + Size: 4, + }, + { + Start: 4, + Size: 4, + }, + }, + nvml.GPU_INSTANCE_PROFILE_4_SLICE: { + { + Start: 0, + Size: 4, + }, + }, + nvml.GPU_INSTANCE_PROFILE_7_SLICE: { + { + Start: 0, + Size: 8, + }, + }, + }, + // TODO: Fill out ComputeInstancePossiblePlacements + ComputeInstancePossiblePlacements: map[int]map[int][]nvml.ComputeInstancePlacement{ + nvml.GPU_INSTANCE_PROFILE_1_SLICE: { + nvml.COMPUTE_INSTANCE_PROFILE_1_SLICE: {}, + }, + nvml.GPU_INSTANCE_PROFILE_1_SLICE_REV1: { + nvml.COMPUTE_INSTANCE_PROFILE_1_SLICE: {}, + }, + nvml.GPU_INSTANCE_PROFILE_1_SLICE_REV2: { + nvml.COMPUTE_INSTANCE_PROFILE_1_SLICE: {}, + }, + nvml.GPU_INSTANCE_PROFILE_2_SLICE: { + nvml.COMPUTE_INSTANCE_PROFILE_1_SLICE: {}, + nvml.COMPUTE_INSTANCE_PROFILE_2_SLICE: {}, + }, + nvml.GPU_INSTANCE_PROFILE_3_SLICE: { + nvml.COMPUTE_INSTANCE_PROFILE_1_SLICE: {}, + nvml.COMPUTE_INSTANCE_PROFILE_2_SLICE: {}, + nvml.COMPUTE_INSTANCE_PROFILE_3_SLICE: {}, + }, + nvml.GPU_INSTANCE_PROFILE_4_SLICE: { + nvml.COMPUTE_INSTANCE_PROFILE_1_SLICE: {}, + nvml.COMPUTE_INSTANCE_PROFILE_2_SLICE: {}, + nvml.COMPUTE_INSTANCE_PROFILE_4_SLICE: {}, + }, + nvml.GPU_INSTANCE_PROFILE_7_SLICE: { + nvml.COMPUTE_INSTANCE_PROFILE_1_SLICE: {}, + nvml.COMPUTE_INSTANCE_PROFILE_2_SLICE: {}, + nvml.COMPUTE_INSTANCE_PROFILE_3_SLICE: {}, + nvml.COMPUTE_INSTANCE_PROFILE_4_SLICE: {}, + nvml.COMPUTE_INSTANCE_PROFILE_7_SLICE: {}, + }, + }, +} diff --git a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/gpuinstance.go b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/gpuinstance.go index 63ba6831a..d05bc3487 100644 --- a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/gpuinstance.go +++ b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/gpuinstance.go @@ -27,6 +27,9 @@ var _ nvml.GpuInstance = &GpuInstance{} // DestroyFunc: func() nvml.Return { // panic("mock out the Destroy method") // }, +// GetActiveVgpusFunc: func() (nvml.ActiveVgpuInstanceInfo, nvml.Return) { +// panic("mock out the GetActiveVgpus method") +// }, // GetComputeInstanceByIdFunc: func(n int) (nvml.ComputeInstance, nvml.Return) { // panic("mock out the GetComputeInstanceById method") // }, @@ -45,9 +48,30 @@ var _ nvml.GpuInstance = &GpuInstance{} // GetComputeInstancesFunc: func(computeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo) ([]nvml.ComputeInstance, nvml.Return) { // panic("mock out the GetComputeInstances method") // }, +// GetCreatableVgpusFunc: func() (nvml.VgpuTypeIdInfo, nvml.Return) { +// panic("mock out the GetCreatableVgpus method") +// }, // GetInfoFunc: func() (nvml.GpuInstanceInfo, nvml.Return) { // panic("mock out the GetInfo method") // }, +// GetVgpuHeterogeneousModeFunc: func() (nvml.VgpuHeterogeneousMode, nvml.Return) { +// panic("mock out the GetVgpuHeterogeneousMode method") +// }, +// GetVgpuSchedulerLogFunc: func() (nvml.VgpuSchedulerLogInfo, nvml.Return) { +// panic("mock out the GetVgpuSchedulerLog method") +// }, +// GetVgpuSchedulerStateFunc: func() (nvml.VgpuSchedulerStateInfo, nvml.Return) { +// panic("mock out the GetVgpuSchedulerState method") +// }, +// GetVgpuTypeCreatablePlacementsFunc: func() (nvml.VgpuCreatablePlacementInfo, nvml.Return) { +// panic("mock out the GetVgpuTypeCreatablePlacements method") +// }, +// SetVgpuHeterogeneousModeFunc: func(vgpuHeterogeneousMode *nvml.VgpuHeterogeneousMode) nvml.Return { +// panic("mock out the SetVgpuHeterogeneousMode method") +// }, +// SetVgpuSchedulerStateFunc: func(vgpuSchedulerState *nvml.VgpuSchedulerState) nvml.Return { +// panic("mock out the SetVgpuSchedulerState method") +// }, // } // // // use mockedGpuInstance in code that requires nvml.GpuInstance @@ -64,6 +88,9 @@ type GpuInstance struct { // DestroyFunc mocks the Destroy method. DestroyFunc func() nvml.Return + // GetActiveVgpusFunc mocks the GetActiveVgpus method. + GetActiveVgpusFunc func() (nvml.ActiveVgpuInstanceInfo, nvml.Return) + // GetComputeInstanceByIdFunc mocks the GetComputeInstanceById method. GetComputeInstanceByIdFunc func(n int) (nvml.ComputeInstance, nvml.Return) @@ -82,9 +109,30 @@ type GpuInstance struct { // GetComputeInstancesFunc mocks the GetComputeInstances method. GetComputeInstancesFunc func(computeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo) ([]nvml.ComputeInstance, nvml.Return) + // GetCreatableVgpusFunc mocks the GetCreatableVgpus method. + GetCreatableVgpusFunc func() (nvml.VgpuTypeIdInfo, nvml.Return) + // GetInfoFunc mocks the GetInfo method. GetInfoFunc func() (nvml.GpuInstanceInfo, nvml.Return) + // GetVgpuHeterogeneousModeFunc mocks the GetVgpuHeterogeneousMode method. + GetVgpuHeterogeneousModeFunc func() (nvml.VgpuHeterogeneousMode, nvml.Return) + + // GetVgpuSchedulerLogFunc mocks the GetVgpuSchedulerLog method. + GetVgpuSchedulerLogFunc func() (nvml.VgpuSchedulerLogInfo, nvml.Return) + + // GetVgpuSchedulerStateFunc mocks the GetVgpuSchedulerState method. + GetVgpuSchedulerStateFunc func() (nvml.VgpuSchedulerStateInfo, nvml.Return) + + // GetVgpuTypeCreatablePlacementsFunc mocks the GetVgpuTypeCreatablePlacements method. + GetVgpuTypeCreatablePlacementsFunc func() (nvml.VgpuCreatablePlacementInfo, nvml.Return) + + // SetVgpuHeterogeneousModeFunc mocks the SetVgpuHeterogeneousMode method. + SetVgpuHeterogeneousModeFunc func(vgpuHeterogeneousMode *nvml.VgpuHeterogeneousMode) nvml.Return + + // SetVgpuSchedulerStateFunc mocks the SetVgpuSchedulerState method. + SetVgpuSchedulerStateFunc func(vgpuSchedulerState *nvml.VgpuSchedulerState) nvml.Return + // calls tracks calls to the methods. calls struct { // CreateComputeInstance holds details about calls to the CreateComputeInstance method. @@ -102,6 +150,9 @@ type GpuInstance struct { // Destroy holds details about calls to the Destroy method. Destroy []struct { } + // GetActiveVgpus holds details about calls to the GetActiveVgpus method. + GetActiveVgpus []struct { + } // GetComputeInstanceById holds details about calls to the GetComputeInstanceById method. GetComputeInstanceById []struct { // N is the n argument value. @@ -136,20 +187,53 @@ type GpuInstance struct { // ComputeInstanceProfileInfo is the computeInstanceProfileInfo argument value. ComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo } + // GetCreatableVgpus holds details about calls to the GetCreatableVgpus method. + GetCreatableVgpus []struct { + } // GetInfo holds details about calls to the GetInfo method. GetInfo []struct { } + // GetVgpuHeterogeneousMode holds details about calls to the GetVgpuHeterogeneousMode method. + GetVgpuHeterogeneousMode []struct { + } + // GetVgpuSchedulerLog holds details about calls to the GetVgpuSchedulerLog method. + GetVgpuSchedulerLog []struct { + } + // GetVgpuSchedulerState holds details about calls to the GetVgpuSchedulerState method. + GetVgpuSchedulerState []struct { + } + // GetVgpuTypeCreatablePlacements holds details about calls to the GetVgpuTypeCreatablePlacements method. + GetVgpuTypeCreatablePlacements []struct { + } + // SetVgpuHeterogeneousMode holds details about calls to the SetVgpuHeterogeneousMode method. + SetVgpuHeterogeneousMode []struct { + // VgpuHeterogeneousMode is the vgpuHeterogeneousMode argument value. + VgpuHeterogeneousMode *nvml.VgpuHeterogeneousMode + } + // SetVgpuSchedulerState holds details about calls to the SetVgpuSchedulerState method. + SetVgpuSchedulerState []struct { + // VgpuSchedulerState is the vgpuSchedulerState argument value. + VgpuSchedulerState *nvml.VgpuSchedulerState + } } lockCreateComputeInstance sync.RWMutex lockCreateComputeInstanceWithPlacement sync.RWMutex lockDestroy sync.RWMutex + lockGetActiveVgpus sync.RWMutex lockGetComputeInstanceById sync.RWMutex lockGetComputeInstancePossiblePlacements sync.RWMutex lockGetComputeInstanceProfileInfo sync.RWMutex lockGetComputeInstanceProfileInfoV sync.RWMutex lockGetComputeInstanceRemainingCapacity sync.RWMutex lockGetComputeInstances sync.RWMutex + lockGetCreatableVgpus sync.RWMutex lockGetInfo sync.RWMutex + lockGetVgpuHeterogeneousMode sync.RWMutex + lockGetVgpuSchedulerLog sync.RWMutex + lockGetVgpuSchedulerState sync.RWMutex + lockGetVgpuTypeCreatablePlacements sync.RWMutex + lockSetVgpuHeterogeneousMode sync.RWMutex + lockSetVgpuSchedulerState sync.RWMutex } // CreateComputeInstance calls CreateComputeInstanceFunc. @@ -247,6 +331,33 @@ func (mock *GpuInstance) DestroyCalls() []struct { return calls } +// GetActiveVgpus calls GetActiveVgpusFunc. +func (mock *GpuInstance) GetActiveVgpus() (nvml.ActiveVgpuInstanceInfo, nvml.Return) { + if mock.GetActiveVgpusFunc == nil { + panic("GpuInstance.GetActiveVgpusFunc: method is nil but GpuInstance.GetActiveVgpus was just called") + } + callInfo := struct { + }{} + mock.lockGetActiveVgpus.Lock() + mock.calls.GetActiveVgpus = append(mock.calls.GetActiveVgpus, callInfo) + mock.lockGetActiveVgpus.Unlock() + return mock.GetActiveVgpusFunc() +} + +// GetActiveVgpusCalls gets all the calls that were made to GetActiveVgpus. +// Check the length with: +// +// len(mockedGpuInstance.GetActiveVgpusCalls()) +func (mock *GpuInstance) GetActiveVgpusCalls() []struct { +} { + var calls []struct { + } + mock.lockGetActiveVgpus.RLock() + calls = mock.calls.GetActiveVgpus + mock.lockGetActiveVgpus.RUnlock() + return calls +} + // GetComputeInstanceById calls GetComputeInstanceByIdFunc. func (mock *GpuInstance) GetComputeInstanceById(n int) (nvml.ComputeInstance, nvml.Return) { if mock.GetComputeInstanceByIdFunc == nil { @@ -447,6 +558,33 @@ func (mock *GpuInstance) GetComputeInstancesCalls() []struct { return calls } +// GetCreatableVgpus calls GetCreatableVgpusFunc. +func (mock *GpuInstance) GetCreatableVgpus() (nvml.VgpuTypeIdInfo, nvml.Return) { + if mock.GetCreatableVgpusFunc == nil { + panic("GpuInstance.GetCreatableVgpusFunc: method is nil but GpuInstance.GetCreatableVgpus was just called") + } + callInfo := struct { + }{} + mock.lockGetCreatableVgpus.Lock() + mock.calls.GetCreatableVgpus = append(mock.calls.GetCreatableVgpus, callInfo) + mock.lockGetCreatableVgpus.Unlock() + return mock.GetCreatableVgpusFunc() +} + +// GetCreatableVgpusCalls gets all the calls that were made to GetCreatableVgpus. +// Check the length with: +// +// len(mockedGpuInstance.GetCreatableVgpusCalls()) +func (mock *GpuInstance) GetCreatableVgpusCalls() []struct { +} { + var calls []struct { + } + mock.lockGetCreatableVgpus.RLock() + calls = mock.calls.GetCreatableVgpus + mock.lockGetCreatableVgpus.RUnlock() + return calls +} + // GetInfo calls GetInfoFunc. func (mock *GpuInstance) GetInfo() (nvml.GpuInstanceInfo, nvml.Return) { if mock.GetInfoFunc == nil { @@ -473,3 +611,175 @@ func (mock *GpuInstance) GetInfoCalls() []struct { mock.lockGetInfo.RUnlock() return calls } + +// GetVgpuHeterogeneousMode calls GetVgpuHeterogeneousModeFunc. +func (mock *GpuInstance) GetVgpuHeterogeneousMode() (nvml.VgpuHeterogeneousMode, nvml.Return) { + if mock.GetVgpuHeterogeneousModeFunc == nil { + panic("GpuInstance.GetVgpuHeterogeneousModeFunc: method is nil but GpuInstance.GetVgpuHeterogeneousMode was just called") + } + callInfo := struct { + }{} + mock.lockGetVgpuHeterogeneousMode.Lock() + mock.calls.GetVgpuHeterogeneousMode = append(mock.calls.GetVgpuHeterogeneousMode, callInfo) + mock.lockGetVgpuHeterogeneousMode.Unlock() + return mock.GetVgpuHeterogeneousModeFunc() +} + +// GetVgpuHeterogeneousModeCalls gets all the calls that were made to GetVgpuHeterogeneousMode. +// Check the length with: +// +// len(mockedGpuInstance.GetVgpuHeterogeneousModeCalls()) +func (mock *GpuInstance) GetVgpuHeterogeneousModeCalls() []struct { +} { + var calls []struct { + } + mock.lockGetVgpuHeterogeneousMode.RLock() + calls = mock.calls.GetVgpuHeterogeneousMode + mock.lockGetVgpuHeterogeneousMode.RUnlock() + return calls +} + +// GetVgpuSchedulerLog calls GetVgpuSchedulerLogFunc. +func (mock *GpuInstance) GetVgpuSchedulerLog() (nvml.VgpuSchedulerLogInfo, nvml.Return) { + if mock.GetVgpuSchedulerLogFunc == nil { + panic("GpuInstance.GetVgpuSchedulerLogFunc: method is nil but GpuInstance.GetVgpuSchedulerLog was just called") + } + callInfo := struct { + }{} + mock.lockGetVgpuSchedulerLog.Lock() + mock.calls.GetVgpuSchedulerLog = append(mock.calls.GetVgpuSchedulerLog, callInfo) + mock.lockGetVgpuSchedulerLog.Unlock() + return mock.GetVgpuSchedulerLogFunc() +} + +// GetVgpuSchedulerLogCalls gets all the calls that were made to GetVgpuSchedulerLog. +// Check the length with: +// +// len(mockedGpuInstance.GetVgpuSchedulerLogCalls()) +func (mock *GpuInstance) GetVgpuSchedulerLogCalls() []struct { +} { + var calls []struct { + } + mock.lockGetVgpuSchedulerLog.RLock() + calls = mock.calls.GetVgpuSchedulerLog + mock.lockGetVgpuSchedulerLog.RUnlock() + return calls +} + +// GetVgpuSchedulerState calls GetVgpuSchedulerStateFunc. +func (mock *GpuInstance) GetVgpuSchedulerState() (nvml.VgpuSchedulerStateInfo, nvml.Return) { + if mock.GetVgpuSchedulerStateFunc == nil { + panic("GpuInstance.GetVgpuSchedulerStateFunc: method is nil but GpuInstance.GetVgpuSchedulerState was just called") + } + callInfo := struct { + }{} + mock.lockGetVgpuSchedulerState.Lock() + mock.calls.GetVgpuSchedulerState = append(mock.calls.GetVgpuSchedulerState, callInfo) + mock.lockGetVgpuSchedulerState.Unlock() + return mock.GetVgpuSchedulerStateFunc() +} + +// GetVgpuSchedulerStateCalls gets all the calls that were made to GetVgpuSchedulerState. +// Check the length with: +// +// len(mockedGpuInstance.GetVgpuSchedulerStateCalls()) +func (mock *GpuInstance) GetVgpuSchedulerStateCalls() []struct { +} { + var calls []struct { + } + mock.lockGetVgpuSchedulerState.RLock() + calls = mock.calls.GetVgpuSchedulerState + mock.lockGetVgpuSchedulerState.RUnlock() + return calls +} + +// GetVgpuTypeCreatablePlacements calls GetVgpuTypeCreatablePlacementsFunc. +func (mock *GpuInstance) GetVgpuTypeCreatablePlacements() (nvml.VgpuCreatablePlacementInfo, nvml.Return) { + if mock.GetVgpuTypeCreatablePlacementsFunc == nil { + panic("GpuInstance.GetVgpuTypeCreatablePlacementsFunc: method is nil but GpuInstance.GetVgpuTypeCreatablePlacements was just called") + } + callInfo := struct { + }{} + mock.lockGetVgpuTypeCreatablePlacements.Lock() + mock.calls.GetVgpuTypeCreatablePlacements = append(mock.calls.GetVgpuTypeCreatablePlacements, callInfo) + mock.lockGetVgpuTypeCreatablePlacements.Unlock() + return mock.GetVgpuTypeCreatablePlacementsFunc() +} + +// GetVgpuTypeCreatablePlacementsCalls gets all the calls that were made to GetVgpuTypeCreatablePlacements. +// Check the length with: +// +// len(mockedGpuInstance.GetVgpuTypeCreatablePlacementsCalls()) +func (mock *GpuInstance) GetVgpuTypeCreatablePlacementsCalls() []struct { +} { + var calls []struct { + } + mock.lockGetVgpuTypeCreatablePlacements.RLock() + calls = mock.calls.GetVgpuTypeCreatablePlacements + mock.lockGetVgpuTypeCreatablePlacements.RUnlock() + return calls +} + +// SetVgpuHeterogeneousMode calls SetVgpuHeterogeneousModeFunc. +func (mock *GpuInstance) SetVgpuHeterogeneousMode(vgpuHeterogeneousMode *nvml.VgpuHeterogeneousMode) nvml.Return { + if mock.SetVgpuHeterogeneousModeFunc == nil { + panic("GpuInstance.SetVgpuHeterogeneousModeFunc: method is nil but GpuInstance.SetVgpuHeterogeneousMode was just called") + } + callInfo := struct { + VgpuHeterogeneousMode *nvml.VgpuHeterogeneousMode + }{ + VgpuHeterogeneousMode: vgpuHeterogeneousMode, + } + mock.lockSetVgpuHeterogeneousMode.Lock() + mock.calls.SetVgpuHeterogeneousMode = append(mock.calls.SetVgpuHeterogeneousMode, callInfo) + mock.lockSetVgpuHeterogeneousMode.Unlock() + return mock.SetVgpuHeterogeneousModeFunc(vgpuHeterogeneousMode) +} + +// SetVgpuHeterogeneousModeCalls gets all the calls that were made to SetVgpuHeterogeneousMode. +// Check the length with: +// +// len(mockedGpuInstance.SetVgpuHeterogeneousModeCalls()) +func (mock *GpuInstance) SetVgpuHeterogeneousModeCalls() []struct { + VgpuHeterogeneousMode *nvml.VgpuHeterogeneousMode +} { + var calls []struct { + VgpuHeterogeneousMode *nvml.VgpuHeterogeneousMode + } + mock.lockSetVgpuHeterogeneousMode.RLock() + calls = mock.calls.SetVgpuHeterogeneousMode + mock.lockSetVgpuHeterogeneousMode.RUnlock() + return calls +} + +// SetVgpuSchedulerState calls SetVgpuSchedulerStateFunc. +func (mock *GpuInstance) SetVgpuSchedulerState(vgpuSchedulerState *nvml.VgpuSchedulerState) nvml.Return { + if mock.SetVgpuSchedulerStateFunc == nil { + panic("GpuInstance.SetVgpuSchedulerStateFunc: method is nil but GpuInstance.SetVgpuSchedulerState was just called") + } + callInfo := struct { + VgpuSchedulerState *nvml.VgpuSchedulerState + }{ + VgpuSchedulerState: vgpuSchedulerState, + } + mock.lockSetVgpuSchedulerState.Lock() + mock.calls.SetVgpuSchedulerState = append(mock.calls.SetVgpuSchedulerState, callInfo) + mock.lockSetVgpuSchedulerState.Unlock() + return mock.SetVgpuSchedulerStateFunc(vgpuSchedulerState) +} + +// SetVgpuSchedulerStateCalls gets all the calls that were made to SetVgpuSchedulerState. +// Check the length with: +// +// len(mockedGpuInstance.SetVgpuSchedulerStateCalls()) +func (mock *GpuInstance) SetVgpuSchedulerStateCalls() []struct { + VgpuSchedulerState *nvml.VgpuSchedulerState +} { + var calls []struct { + VgpuSchedulerState *nvml.VgpuSchedulerState + } + mock.lockSetVgpuSchedulerState.RLock() + calls = mock.calls.SetVgpuSchedulerState + mock.lockSetVgpuSchedulerState.RUnlock() + return calls +} diff --git a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/interface.go b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/interface.go index c39a16ea6..ecaaf6c5c 100644 --- a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/interface.go +++ b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/interface.go @@ -102,6 +102,9 @@ var _ nvml.Interface = &Interface{} // DeviceGetC2cModeInfoVFunc: func(device nvml.Device) nvml.C2cModeInfoHandler { // panic("mock out the DeviceGetC2cModeInfoV method") // }, +// DeviceGetCapabilitiesFunc: func(device nvml.Device) (nvml.DeviceCapabilities, nvml.Return) { +// panic("mock out the DeviceGetCapabilities method") +// }, // DeviceGetClkMonStatusFunc: func(device nvml.Device) (nvml.ClkMonStatus, nvml.Return) { // panic("mock out the DeviceGetClkMonStatus method") // }, @@ -111,6 +114,9 @@ var _ nvml.Interface = &Interface{} // DeviceGetClockInfoFunc: func(device nvml.Device, clockType nvml.ClockType) (uint32, nvml.Return) { // panic("mock out the DeviceGetClockInfo method") // }, +// DeviceGetClockOffsetsFunc: func(device nvml.Device) (nvml.ClockOffset, nvml.Return) { +// panic("mock out the DeviceGetClockOffsets method") +// }, // DeviceGetComputeInstanceIdFunc: func(device nvml.Device) (int, nvml.Return) { // panic("mock out the DeviceGetComputeInstanceId method") // }, @@ -132,6 +138,9 @@ var _ nvml.Interface = &Interface{} // DeviceGetConfComputeProtectedMemoryUsageFunc: func(device nvml.Device) (nvml.Memory, nvml.Return) { // panic("mock out the DeviceGetConfComputeProtectedMemoryUsage method") // }, +// DeviceGetCoolerInfoFunc: func(device nvml.Device) (nvml.CoolerInfo, nvml.Return) { +// panic("mock out the DeviceGetCoolerInfo method") +// }, // DeviceGetCountFunc: func() (int, nvml.Return) { // panic("mock out the DeviceGetCount method") // }, @@ -153,6 +162,9 @@ var _ nvml.Interface = &Interface{} // DeviceGetCurrPcieLinkWidthFunc: func(device nvml.Device) (int, nvml.Return) { // panic("mock out the DeviceGetCurrPcieLinkWidth method") // }, +// DeviceGetCurrentClockFreqsFunc: func(device nvml.Device) (nvml.DeviceCurrentClockFreqs, nvml.Return) { +// panic("mock out the DeviceGetCurrentClockFreqs method") +// }, // DeviceGetCurrentClocksEventReasonsFunc: func(device nvml.Device) (uint64, nvml.Return) { // panic("mock out the DeviceGetCurrentClocksEventReasons method") // }, @@ -180,9 +192,15 @@ var _ nvml.Interface = &Interface{} // DeviceGetDisplayModeFunc: func(device nvml.Device) (nvml.EnableState, nvml.Return) { // panic("mock out the DeviceGetDisplayMode method") // }, +// DeviceGetDramEncryptionModeFunc: func(device nvml.Device) (nvml.DramEncryptionInfo, nvml.DramEncryptionInfo, nvml.Return) { +// panic("mock out the DeviceGetDramEncryptionMode method") +// }, // DeviceGetDriverModelFunc: func(device nvml.Device) (nvml.DriverModel, nvml.DriverModel, nvml.Return) { // panic("mock out the DeviceGetDriverModel method") // }, +// DeviceGetDriverModel_v2Func: func(device nvml.Device) (nvml.DriverModel, nvml.DriverModel, nvml.Return) { +// panic("mock out the DeviceGetDriverModel_v2 method") +// }, // DeviceGetDynamicPstatesInfoFunc: func(device nvml.Device) (nvml.GpuDynamicPstatesInfo, nvml.Return) { // panic("mock out the DeviceGetDynamicPstatesInfo method") // }, @@ -216,6 +234,9 @@ var _ nvml.Interface = &Interface{} // DeviceGetFanSpeedFunc: func(device nvml.Device) (uint32, nvml.Return) { // panic("mock out the DeviceGetFanSpeed method") // }, +// DeviceGetFanSpeedRPMFunc: func(device nvml.Device) (nvml.FanSpeedInfo, nvml.Return) { +// panic("mock out the DeviceGetFanSpeedRPM method") +// }, // DeviceGetFanSpeed_v2Func: func(device nvml.Device, n int) (uint32, nvml.Return) { // panic("mock out the DeviceGetFanSpeed_v2 method") // }, @@ -285,6 +306,9 @@ var _ nvml.Interface = &Interface{} // DeviceGetHandleByUUIDFunc: func(s string) (nvml.Device, nvml.Return) { // panic("mock out the DeviceGetHandleByUUID method") // }, +// DeviceGetHandleByUUIDVFunc: func(uUID *nvml.UUID) (nvml.Device, nvml.Return) { +// panic("mock out the DeviceGetHandleByUUIDV method") +// }, // DeviceGetHostVgpuModeFunc: func(device nvml.Device) (nvml.HostVgpuMode, nvml.Return) { // panic("mock out the DeviceGetHostVgpuMode method") // }, @@ -312,6 +336,9 @@ var _ nvml.Interface = &Interface{} // DeviceGetMPSComputeRunningProcessesFunc: func(device nvml.Device) ([]nvml.ProcessInfo, nvml.Return) { // panic("mock out the DeviceGetMPSComputeRunningProcesses method") // }, +// DeviceGetMarginTemperatureFunc: func(device nvml.Device) (nvml.MarginTemperature, nvml.Return) { +// panic("mock out the DeviceGetMarginTemperature method") +// }, // DeviceGetMaxClockInfoFunc: func(device nvml.Device, clockType nvml.ClockType) (uint32, nvml.Return) { // panic("mock out the DeviceGetMaxClockInfo method") // }, @@ -405,6 +432,12 @@ var _ nvml.Interface = &Interface{} // DeviceGetNvLinkVersionFunc: func(device nvml.Device, n int) (uint32, nvml.Return) { // panic("mock out the DeviceGetNvLinkVersion method") // }, +// DeviceGetNvlinkBwModeFunc: func(device nvml.Device) (nvml.NvlinkGetBwMode, nvml.Return) { +// panic("mock out the DeviceGetNvlinkBwMode method") +// }, +// DeviceGetNvlinkSupportedBwModesFunc: func(device nvml.Device) (nvml.NvlinkSupportedBwModes, nvml.Return) { +// panic("mock out the DeviceGetNvlinkSupportedBwModes method") +// }, // DeviceGetOfaUtilizationFunc: func(device nvml.Device) (uint32, uint32, nvml.Return) { // panic("mock out the DeviceGetOfaUtilization method") // }, @@ -429,6 +462,9 @@ var _ nvml.Interface = &Interface{} // DeviceGetPcieThroughputFunc: func(device nvml.Device, pcieUtilCounter nvml.PcieUtilCounter) (uint32, nvml.Return) { // panic("mock out the DeviceGetPcieThroughput method") // }, +// DeviceGetPerformanceModesFunc: func(device nvml.Device) (nvml.DevicePerfModes, nvml.Return) { +// panic("mock out the DeviceGetPerformanceModes method") +// }, // DeviceGetPerformanceStateFunc: func(device nvml.Device) (nvml.Pstates, nvml.Return) { // panic("mock out the DeviceGetPerformanceState method") // }, @@ -438,6 +474,9 @@ var _ nvml.Interface = &Interface{} // DeviceGetPgpuMetadataStringFunc: func(device nvml.Device) (string, nvml.Return) { // panic("mock out the DeviceGetPgpuMetadataString method") // }, +// DeviceGetPlatformInfoFunc: func(device nvml.Device) (nvml.PlatformInfo, nvml.Return) { +// panic("mock out the DeviceGetPlatformInfo method") +// }, // DeviceGetPowerManagementDefaultLimitFunc: func(device nvml.Device) (uint32, nvml.Return) { // panic("mock out the DeviceGetPowerManagementDefaultLimit method") // }, @@ -522,6 +561,9 @@ var _ nvml.Interface = &Interface{} // DeviceGetTemperatureThresholdFunc: func(device nvml.Device, temperatureThresholds nvml.TemperatureThresholds) (uint32, nvml.Return) { // panic("mock out the DeviceGetTemperatureThreshold method") // }, +// DeviceGetTemperatureVFunc: func(device nvml.Device) nvml.TemperatureHandler { +// panic("mock out the DeviceGetTemperatureV method") +// }, // DeviceGetThermalSettingsFunc: func(device nvml.Device, v uint32) (nvml.GpuThermalSettings, nvml.Return) { // panic("mock out the DeviceGetThermalSettings method") // }, @@ -597,6 +639,15 @@ var _ nvml.Interface = &Interface{} // DeviceOnSameBoardFunc: func(device1 nvml.Device, device2 nvml.Device) (int, nvml.Return) { // panic("mock out the DeviceOnSameBoard method") // }, +// DevicePowerSmoothingActivatePresetProfileFunc: func(device nvml.Device, powerSmoothingProfile *nvml.PowerSmoothingProfile) nvml.Return { +// panic("mock out the DevicePowerSmoothingActivatePresetProfile method") +// }, +// DevicePowerSmoothingSetStateFunc: func(device nvml.Device, powerSmoothingState *nvml.PowerSmoothingState) nvml.Return { +// panic("mock out the DevicePowerSmoothingSetState method") +// }, +// DevicePowerSmoothingUpdatePresetProfileParamFunc: func(device nvml.Device, powerSmoothingProfile *nvml.PowerSmoothingProfile) nvml.Return { +// panic("mock out the DevicePowerSmoothingUpdatePresetProfileParam method") +// }, // DeviceQueryDrainStateFunc: func(pciInfo *nvml.PciInfo) (nvml.EnableState, nvml.Return) { // panic("mock out the DeviceQueryDrainState method") // }, @@ -636,6 +687,9 @@ var _ nvml.Interface = &Interface{} // DeviceSetAutoBoostedClocksEnabledFunc: func(device nvml.Device, enableState nvml.EnableState) nvml.Return { // panic("mock out the DeviceSetAutoBoostedClocksEnabled method") // }, +// DeviceSetClockOffsetsFunc: func(device nvml.Device, clockOffset nvml.ClockOffset) nvml.Return { +// panic("mock out the DeviceSetClockOffsets method") +// }, // DeviceSetComputeModeFunc: func(device nvml.Device, computeMode nvml.ComputeMode) nvml.Return { // panic("mock out the DeviceSetComputeMode method") // }, @@ -651,6 +705,9 @@ var _ nvml.Interface = &Interface{} // DeviceSetDefaultFanSpeed_v2Func: func(device nvml.Device, n int) nvml.Return { // panic("mock out the DeviceSetDefaultFanSpeed_v2 method") // }, +// DeviceSetDramEncryptionModeFunc: func(device nvml.Device, dramEncryptionInfo *nvml.DramEncryptionInfo) nvml.Return { +// panic("mock out the DeviceSetDramEncryptionMode method") +// }, // DeviceSetDriverModelFunc: func(device nvml.Device, driverModel nvml.DriverModel, v uint32) nvml.Return { // panic("mock out the DeviceSetDriverModel method") // }, @@ -687,6 +744,9 @@ var _ nvml.Interface = &Interface{} // DeviceSetNvLinkUtilizationControlFunc: func(device nvml.Device, n1 int, n2 int, nvLinkUtilizationControl *nvml.NvLinkUtilizationControl, b bool) nvml.Return { // panic("mock out the DeviceSetNvLinkUtilizationControl method") // }, +// DeviceSetNvlinkBwModeFunc: func(device nvml.Device, nvlinkSetBwMode *nvml.NvlinkSetBwMode) nvml.Return { +// panic("mock out the DeviceSetNvlinkBwMode method") +// }, // DeviceSetPersistenceModeFunc: func(device nvml.Device, enableState nvml.EnableState) nvml.Return { // panic("mock out the DeviceSetPersistenceMode method") // }, @@ -714,6 +774,18 @@ var _ nvml.Interface = &Interface{} // DeviceValidateInforomFunc: func(device nvml.Device) nvml.Return { // panic("mock out the DeviceValidateInforom method") // }, +// DeviceWorkloadPowerProfileClearRequestedProfilesFunc: func(device nvml.Device, workloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles) nvml.Return { +// panic("mock out the DeviceWorkloadPowerProfileClearRequestedProfiles method") +// }, +// DeviceWorkloadPowerProfileGetCurrentProfilesFunc: func(device nvml.Device) (nvml.WorkloadPowerProfileCurrentProfiles, nvml.Return) { +// panic("mock out the DeviceWorkloadPowerProfileGetCurrentProfiles method") +// }, +// DeviceWorkloadPowerProfileGetProfilesInfoFunc: func(device nvml.Device) (nvml.WorkloadPowerProfileProfilesInfo, nvml.Return) { +// panic("mock out the DeviceWorkloadPowerProfileGetProfilesInfo method") +// }, +// DeviceWorkloadPowerProfileSetRequestedProfilesFunc: func(device nvml.Device, workloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles) nvml.Return { +// panic("mock out the DeviceWorkloadPowerProfileSetRequestedProfiles method") +// }, // ErrorStringFunc: func(returnMoqParam nvml.Return) string { // panic("mock out the ErrorString method") // }, @@ -783,6 +855,9 @@ var _ nvml.Interface = &Interface{} // GpuInstanceDestroyFunc: func(gpuInstance nvml.GpuInstance) nvml.Return { // panic("mock out the GpuInstanceDestroy method") // }, +// GpuInstanceGetActiveVgpusFunc: func(gpuInstance nvml.GpuInstance) (nvml.ActiveVgpuInstanceInfo, nvml.Return) { +// panic("mock out the GpuInstanceGetActiveVgpus method") +// }, // GpuInstanceGetComputeInstanceByIdFunc: func(gpuInstance nvml.GpuInstance, n int) (nvml.ComputeInstance, nvml.Return) { // panic("mock out the GpuInstanceGetComputeInstanceById method") // }, @@ -801,9 +876,30 @@ var _ nvml.Interface = &Interface{} // GpuInstanceGetComputeInstancesFunc: func(gpuInstance nvml.GpuInstance, computeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo) ([]nvml.ComputeInstance, nvml.Return) { // panic("mock out the GpuInstanceGetComputeInstances method") // }, +// GpuInstanceGetCreatableVgpusFunc: func(gpuInstance nvml.GpuInstance) (nvml.VgpuTypeIdInfo, nvml.Return) { +// panic("mock out the GpuInstanceGetCreatableVgpus method") +// }, // GpuInstanceGetInfoFunc: func(gpuInstance nvml.GpuInstance) (nvml.GpuInstanceInfo, nvml.Return) { // panic("mock out the GpuInstanceGetInfo method") // }, +// GpuInstanceGetVgpuHeterogeneousModeFunc: func(gpuInstance nvml.GpuInstance) (nvml.VgpuHeterogeneousMode, nvml.Return) { +// panic("mock out the GpuInstanceGetVgpuHeterogeneousMode method") +// }, +// GpuInstanceGetVgpuSchedulerLogFunc: func(gpuInstance nvml.GpuInstance) (nvml.VgpuSchedulerLogInfo, nvml.Return) { +// panic("mock out the GpuInstanceGetVgpuSchedulerLog method") +// }, +// GpuInstanceGetVgpuSchedulerStateFunc: func(gpuInstance nvml.GpuInstance) (nvml.VgpuSchedulerStateInfo, nvml.Return) { +// panic("mock out the GpuInstanceGetVgpuSchedulerState method") +// }, +// GpuInstanceGetVgpuTypeCreatablePlacementsFunc: func(gpuInstance nvml.GpuInstance) (nvml.VgpuCreatablePlacementInfo, nvml.Return) { +// panic("mock out the GpuInstanceGetVgpuTypeCreatablePlacements method") +// }, +// GpuInstanceSetVgpuHeterogeneousModeFunc: func(gpuInstance nvml.GpuInstance, vgpuHeterogeneousMode *nvml.VgpuHeterogeneousMode) nvml.Return { +// panic("mock out the GpuInstanceSetVgpuHeterogeneousMode method") +// }, +// GpuInstanceSetVgpuSchedulerStateFunc: func(gpuInstance nvml.GpuInstance, vgpuSchedulerState *nvml.VgpuSchedulerState) nvml.Return { +// panic("mock out the GpuInstanceSetVgpuSchedulerState method") +// }, // InitFunc: func() nvml.Return { // panic("mock out the Init method") // }, @@ -816,21 +912,39 @@ var _ nvml.Interface = &Interface{} // ShutdownFunc: func() nvml.Return { // panic("mock out the Shutdown method") // }, +// SystemEventSetCreateFunc: func(systemEventSetCreateRequest *nvml.SystemEventSetCreateRequest) nvml.Return { +// panic("mock out the SystemEventSetCreate method") +// }, +// SystemEventSetFreeFunc: func(systemEventSetFreeRequest *nvml.SystemEventSetFreeRequest) nvml.Return { +// panic("mock out the SystemEventSetFree method") +// }, +// SystemEventSetWaitFunc: func(systemEventSetWaitRequest *nvml.SystemEventSetWaitRequest) nvml.Return { +// panic("mock out the SystemEventSetWait method") +// }, // SystemGetConfComputeCapabilitiesFunc: func() (nvml.ConfComputeSystemCaps, nvml.Return) { // panic("mock out the SystemGetConfComputeCapabilities method") // }, +// SystemGetConfComputeGpusReadyStateFunc: func() (uint32, nvml.Return) { +// panic("mock out the SystemGetConfComputeGpusReadyState method") +// }, // SystemGetConfComputeKeyRotationThresholdInfoFunc: func() (nvml.ConfComputeGetKeyRotationThresholdInfo, nvml.Return) { // panic("mock out the SystemGetConfComputeKeyRotationThresholdInfo method") // }, // SystemGetConfComputeSettingsFunc: func() (nvml.SystemConfComputeSettings, nvml.Return) { // panic("mock out the SystemGetConfComputeSettings method") // }, +// SystemGetConfComputeStateFunc: func() (nvml.ConfComputeSystemState, nvml.Return) { +// panic("mock out the SystemGetConfComputeState method") +// }, // SystemGetCudaDriverVersionFunc: func() (int, nvml.Return) { // panic("mock out the SystemGetCudaDriverVersion method") // }, // SystemGetCudaDriverVersion_v2Func: func() (int, nvml.Return) { // panic("mock out the SystemGetCudaDriverVersion_v2 method") // }, +// SystemGetDriverBranchFunc: func() (nvml.SystemDriverBranchInfo, nvml.Return) { +// panic("mock out the SystemGetDriverBranch method") +// }, // SystemGetDriverVersionFunc: func() (string, nvml.Return) { // panic("mock out the SystemGetDriverVersion method") // }, @@ -840,15 +954,27 @@ var _ nvml.Interface = &Interface{} // SystemGetNVMLVersionFunc: func() (string, nvml.Return) { // panic("mock out the SystemGetNVMLVersion method") // }, +// SystemGetNvlinkBwModeFunc: func() (uint32, nvml.Return) { +// panic("mock out the SystemGetNvlinkBwMode method") +// }, // SystemGetProcessNameFunc: func(n int) (string, nvml.Return) { // panic("mock out the SystemGetProcessName method") // }, // SystemGetTopologyGpuSetFunc: func(n int) ([]nvml.Device, nvml.Return) { // panic("mock out the SystemGetTopologyGpuSet method") // }, +// SystemRegisterEventsFunc: func(systemRegisterEventRequest *nvml.SystemRegisterEventRequest) nvml.Return { +// panic("mock out the SystemRegisterEvents method") +// }, +// SystemSetConfComputeGpusReadyStateFunc: func(v uint32) nvml.Return { +// panic("mock out the SystemSetConfComputeGpusReadyState method") +// }, // SystemSetConfComputeKeyRotationThresholdInfoFunc: func(confComputeSetKeyRotationThresholdInfo nvml.ConfComputeSetKeyRotationThresholdInfo) nvml.Return { // panic("mock out the SystemSetConfComputeKeyRotationThresholdInfo method") // }, +// SystemSetNvlinkBwModeFunc: func(v uint32) nvml.Return { +// panic("mock out the SystemSetNvlinkBwMode method") +// }, // UnitGetCountFunc: func() (int, nvml.Return) { // panic("mock out the UnitGetCount method") // }, @@ -930,6 +1056,9 @@ var _ nvml.Interface = &Interface{} // VgpuInstanceGetMetadataFunc: func(vgpuInstance nvml.VgpuInstance) (nvml.VgpuMetadata, nvml.Return) { // panic("mock out the VgpuInstanceGetMetadata method") // }, +// VgpuInstanceGetRuntimeStateSizeFunc: func(vgpuInstance nvml.VgpuInstance) (nvml.VgpuRuntimeState, nvml.Return) { +// panic("mock out the VgpuInstanceGetRuntimeStateSize method") +// }, // VgpuInstanceGetTypeFunc: func(vgpuInstance nvml.VgpuInstance) (nvml.VgpuTypeId, nvml.Return) { // panic("mock out the VgpuInstanceGetType method") // }, @@ -945,6 +1074,9 @@ var _ nvml.Interface = &Interface{} // VgpuInstanceSetEncoderCapacityFunc: func(vgpuInstance nvml.VgpuInstance, n int) nvml.Return { // panic("mock out the VgpuInstanceSetEncoderCapacity method") // }, +// VgpuTypeGetBAR1InfoFunc: func(vgpuTypeId nvml.VgpuTypeId) (nvml.VgpuTypeBar1Info, nvml.Return) { +// panic("mock out the VgpuTypeGetBAR1Info method") +// }, // VgpuTypeGetCapabilitiesFunc: func(vgpuTypeId nvml.VgpuTypeId, vgpuCapability nvml.VgpuCapability) (bool, nvml.Return) { // panic("mock out the VgpuTypeGetCapabilities method") // }, @@ -969,6 +1101,9 @@ var _ nvml.Interface = &Interface{} // VgpuTypeGetMaxInstancesFunc: func(device nvml.Device, vgpuTypeId nvml.VgpuTypeId) (int, nvml.Return) { // panic("mock out the VgpuTypeGetMaxInstances method") // }, +// VgpuTypeGetMaxInstancesPerGpuInstanceFunc: func(vgpuTypeMaxInstance *nvml.VgpuTypeMaxInstance) nvml.Return { +// panic("mock out the VgpuTypeGetMaxInstancesPerGpuInstance method") +// }, // VgpuTypeGetMaxInstancesPerVmFunc: func(vgpuTypeId nvml.VgpuTypeId) (int, nvml.Return) { // panic("mock out the VgpuTypeGetMaxInstancesPerVm method") // }, @@ -1072,6 +1207,9 @@ type Interface struct { // DeviceGetC2cModeInfoVFunc mocks the DeviceGetC2cModeInfoV method. DeviceGetC2cModeInfoVFunc func(device nvml.Device) nvml.C2cModeInfoHandler + // DeviceGetCapabilitiesFunc mocks the DeviceGetCapabilities method. + DeviceGetCapabilitiesFunc func(device nvml.Device) (nvml.DeviceCapabilities, nvml.Return) + // DeviceGetClkMonStatusFunc mocks the DeviceGetClkMonStatus method. DeviceGetClkMonStatusFunc func(device nvml.Device) (nvml.ClkMonStatus, nvml.Return) @@ -1081,6 +1219,9 @@ type Interface struct { // DeviceGetClockInfoFunc mocks the DeviceGetClockInfo method. DeviceGetClockInfoFunc func(device nvml.Device, clockType nvml.ClockType) (uint32, nvml.Return) + // DeviceGetClockOffsetsFunc mocks the DeviceGetClockOffsets method. + DeviceGetClockOffsetsFunc func(device nvml.Device) (nvml.ClockOffset, nvml.Return) + // DeviceGetComputeInstanceIdFunc mocks the DeviceGetComputeInstanceId method. DeviceGetComputeInstanceIdFunc func(device nvml.Device) (int, nvml.Return) @@ -1102,6 +1243,9 @@ type Interface struct { // DeviceGetConfComputeProtectedMemoryUsageFunc mocks the DeviceGetConfComputeProtectedMemoryUsage method. DeviceGetConfComputeProtectedMemoryUsageFunc func(device nvml.Device) (nvml.Memory, nvml.Return) + // DeviceGetCoolerInfoFunc mocks the DeviceGetCoolerInfo method. + DeviceGetCoolerInfoFunc func(device nvml.Device) (nvml.CoolerInfo, nvml.Return) + // DeviceGetCountFunc mocks the DeviceGetCount method. DeviceGetCountFunc func() (int, nvml.Return) @@ -1123,6 +1267,9 @@ type Interface struct { // DeviceGetCurrPcieLinkWidthFunc mocks the DeviceGetCurrPcieLinkWidth method. DeviceGetCurrPcieLinkWidthFunc func(device nvml.Device) (int, nvml.Return) + // DeviceGetCurrentClockFreqsFunc mocks the DeviceGetCurrentClockFreqs method. + DeviceGetCurrentClockFreqsFunc func(device nvml.Device) (nvml.DeviceCurrentClockFreqs, nvml.Return) + // DeviceGetCurrentClocksEventReasonsFunc mocks the DeviceGetCurrentClocksEventReasons method. DeviceGetCurrentClocksEventReasonsFunc func(device nvml.Device) (uint64, nvml.Return) @@ -1150,9 +1297,15 @@ type Interface struct { // DeviceGetDisplayModeFunc mocks the DeviceGetDisplayMode method. DeviceGetDisplayModeFunc func(device nvml.Device) (nvml.EnableState, nvml.Return) + // DeviceGetDramEncryptionModeFunc mocks the DeviceGetDramEncryptionMode method. + DeviceGetDramEncryptionModeFunc func(device nvml.Device) (nvml.DramEncryptionInfo, nvml.DramEncryptionInfo, nvml.Return) + // DeviceGetDriverModelFunc mocks the DeviceGetDriverModel method. DeviceGetDriverModelFunc func(device nvml.Device) (nvml.DriverModel, nvml.DriverModel, nvml.Return) + // DeviceGetDriverModel_v2Func mocks the DeviceGetDriverModel_v2 method. + DeviceGetDriverModel_v2Func func(device nvml.Device) (nvml.DriverModel, nvml.DriverModel, nvml.Return) + // DeviceGetDynamicPstatesInfoFunc mocks the DeviceGetDynamicPstatesInfo method. DeviceGetDynamicPstatesInfoFunc func(device nvml.Device) (nvml.GpuDynamicPstatesInfo, nvml.Return) @@ -1186,6 +1339,9 @@ type Interface struct { // DeviceGetFanSpeedFunc mocks the DeviceGetFanSpeed method. DeviceGetFanSpeedFunc func(device nvml.Device) (uint32, nvml.Return) + // DeviceGetFanSpeedRPMFunc mocks the DeviceGetFanSpeedRPM method. + DeviceGetFanSpeedRPMFunc func(device nvml.Device) (nvml.FanSpeedInfo, nvml.Return) + // DeviceGetFanSpeed_v2Func mocks the DeviceGetFanSpeed_v2 method. DeviceGetFanSpeed_v2Func func(device nvml.Device, n int) (uint32, nvml.Return) @@ -1255,6 +1411,9 @@ type Interface struct { // DeviceGetHandleByUUIDFunc mocks the DeviceGetHandleByUUID method. DeviceGetHandleByUUIDFunc func(s string) (nvml.Device, nvml.Return) + // DeviceGetHandleByUUIDVFunc mocks the DeviceGetHandleByUUIDV method. + DeviceGetHandleByUUIDVFunc func(uUID *nvml.UUID) (nvml.Device, nvml.Return) + // DeviceGetHostVgpuModeFunc mocks the DeviceGetHostVgpuMode method. DeviceGetHostVgpuModeFunc func(device nvml.Device) (nvml.HostVgpuMode, nvml.Return) @@ -1282,6 +1441,9 @@ type Interface struct { // DeviceGetMPSComputeRunningProcessesFunc mocks the DeviceGetMPSComputeRunningProcesses method. DeviceGetMPSComputeRunningProcessesFunc func(device nvml.Device) ([]nvml.ProcessInfo, nvml.Return) + // DeviceGetMarginTemperatureFunc mocks the DeviceGetMarginTemperature method. + DeviceGetMarginTemperatureFunc func(device nvml.Device) (nvml.MarginTemperature, nvml.Return) + // DeviceGetMaxClockInfoFunc mocks the DeviceGetMaxClockInfo method. DeviceGetMaxClockInfoFunc func(device nvml.Device, clockType nvml.ClockType) (uint32, nvml.Return) @@ -1375,6 +1537,12 @@ type Interface struct { // DeviceGetNvLinkVersionFunc mocks the DeviceGetNvLinkVersion method. DeviceGetNvLinkVersionFunc func(device nvml.Device, n int) (uint32, nvml.Return) + // DeviceGetNvlinkBwModeFunc mocks the DeviceGetNvlinkBwMode method. + DeviceGetNvlinkBwModeFunc func(device nvml.Device) (nvml.NvlinkGetBwMode, nvml.Return) + + // DeviceGetNvlinkSupportedBwModesFunc mocks the DeviceGetNvlinkSupportedBwModes method. + DeviceGetNvlinkSupportedBwModesFunc func(device nvml.Device) (nvml.NvlinkSupportedBwModes, nvml.Return) + // DeviceGetOfaUtilizationFunc mocks the DeviceGetOfaUtilization method. DeviceGetOfaUtilizationFunc func(device nvml.Device) (uint32, uint32, nvml.Return) @@ -1399,6 +1567,9 @@ type Interface struct { // DeviceGetPcieThroughputFunc mocks the DeviceGetPcieThroughput method. DeviceGetPcieThroughputFunc func(device nvml.Device, pcieUtilCounter nvml.PcieUtilCounter) (uint32, nvml.Return) + // DeviceGetPerformanceModesFunc mocks the DeviceGetPerformanceModes method. + DeviceGetPerformanceModesFunc func(device nvml.Device) (nvml.DevicePerfModes, nvml.Return) + // DeviceGetPerformanceStateFunc mocks the DeviceGetPerformanceState method. DeviceGetPerformanceStateFunc func(device nvml.Device) (nvml.Pstates, nvml.Return) @@ -1408,6 +1579,9 @@ type Interface struct { // DeviceGetPgpuMetadataStringFunc mocks the DeviceGetPgpuMetadataString method. DeviceGetPgpuMetadataStringFunc func(device nvml.Device) (string, nvml.Return) + // DeviceGetPlatformInfoFunc mocks the DeviceGetPlatformInfo method. + DeviceGetPlatformInfoFunc func(device nvml.Device) (nvml.PlatformInfo, nvml.Return) + // DeviceGetPowerManagementDefaultLimitFunc mocks the DeviceGetPowerManagementDefaultLimit method. DeviceGetPowerManagementDefaultLimitFunc func(device nvml.Device) (uint32, nvml.Return) @@ -1492,6 +1666,9 @@ type Interface struct { // DeviceGetTemperatureThresholdFunc mocks the DeviceGetTemperatureThreshold method. DeviceGetTemperatureThresholdFunc func(device nvml.Device, temperatureThresholds nvml.TemperatureThresholds) (uint32, nvml.Return) + // DeviceGetTemperatureVFunc mocks the DeviceGetTemperatureV method. + DeviceGetTemperatureVFunc func(device nvml.Device) nvml.TemperatureHandler + // DeviceGetThermalSettingsFunc mocks the DeviceGetThermalSettings method. DeviceGetThermalSettingsFunc func(device nvml.Device, v uint32) (nvml.GpuThermalSettings, nvml.Return) @@ -1567,6 +1744,15 @@ type Interface struct { // DeviceOnSameBoardFunc mocks the DeviceOnSameBoard method. DeviceOnSameBoardFunc func(device1 nvml.Device, device2 nvml.Device) (int, nvml.Return) + // DevicePowerSmoothingActivatePresetProfileFunc mocks the DevicePowerSmoothingActivatePresetProfile method. + DevicePowerSmoothingActivatePresetProfileFunc func(device nvml.Device, powerSmoothingProfile *nvml.PowerSmoothingProfile) nvml.Return + + // DevicePowerSmoothingSetStateFunc mocks the DevicePowerSmoothingSetState method. + DevicePowerSmoothingSetStateFunc func(device nvml.Device, powerSmoothingState *nvml.PowerSmoothingState) nvml.Return + + // DevicePowerSmoothingUpdatePresetProfileParamFunc mocks the DevicePowerSmoothingUpdatePresetProfileParam method. + DevicePowerSmoothingUpdatePresetProfileParamFunc func(device nvml.Device, powerSmoothingProfile *nvml.PowerSmoothingProfile) nvml.Return + // DeviceQueryDrainStateFunc mocks the DeviceQueryDrainState method. DeviceQueryDrainStateFunc func(pciInfo *nvml.PciInfo) (nvml.EnableState, nvml.Return) @@ -1606,6 +1792,9 @@ type Interface struct { // DeviceSetAutoBoostedClocksEnabledFunc mocks the DeviceSetAutoBoostedClocksEnabled method. DeviceSetAutoBoostedClocksEnabledFunc func(device nvml.Device, enableState nvml.EnableState) nvml.Return + // DeviceSetClockOffsetsFunc mocks the DeviceSetClockOffsets method. + DeviceSetClockOffsetsFunc func(device nvml.Device, clockOffset nvml.ClockOffset) nvml.Return + // DeviceSetComputeModeFunc mocks the DeviceSetComputeMode method. DeviceSetComputeModeFunc func(device nvml.Device, computeMode nvml.ComputeMode) nvml.Return @@ -1621,6 +1810,9 @@ type Interface struct { // DeviceSetDefaultFanSpeed_v2Func mocks the DeviceSetDefaultFanSpeed_v2 method. DeviceSetDefaultFanSpeed_v2Func func(device nvml.Device, n int) nvml.Return + // DeviceSetDramEncryptionModeFunc mocks the DeviceSetDramEncryptionMode method. + DeviceSetDramEncryptionModeFunc func(device nvml.Device, dramEncryptionInfo *nvml.DramEncryptionInfo) nvml.Return + // DeviceSetDriverModelFunc mocks the DeviceSetDriverModel method. DeviceSetDriverModelFunc func(device nvml.Device, driverModel nvml.DriverModel, v uint32) nvml.Return @@ -1657,6 +1849,9 @@ type Interface struct { // DeviceSetNvLinkUtilizationControlFunc mocks the DeviceSetNvLinkUtilizationControl method. DeviceSetNvLinkUtilizationControlFunc func(device nvml.Device, n1 int, n2 int, nvLinkUtilizationControl *nvml.NvLinkUtilizationControl, b bool) nvml.Return + // DeviceSetNvlinkBwModeFunc mocks the DeviceSetNvlinkBwMode method. + DeviceSetNvlinkBwModeFunc func(device nvml.Device, nvlinkSetBwMode *nvml.NvlinkSetBwMode) nvml.Return + // DeviceSetPersistenceModeFunc mocks the DeviceSetPersistenceMode method. DeviceSetPersistenceModeFunc func(device nvml.Device, enableState nvml.EnableState) nvml.Return @@ -1684,6 +1879,18 @@ type Interface struct { // DeviceValidateInforomFunc mocks the DeviceValidateInforom method. DeviceValidateInforomFunc func(device nvml.Device) nvml.Return + // DeviceWorkloadPowerProfileClearRequestedProfilesFunc mocks the DeviceWorkloadPowerProfileClearRequestedProfiles method. + DeviceWorkloadPowerProfileClearRequestedProfilesFunc func(device nvml.Device, workloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles) nvml.Return + + // DeviceWorkloadPowerProfileGetCurrentProfilesFunc mocks the DeviceWorkloadPowerProfileGetCurrentProfiles method. + DeviceWorkloadPowerProfileGetCurrentProfilesFunc func(device nvml.Device) (nvml.WorkloadPowerProfileCurrentProfiles, nvml.Return) + + // DeviceWorkloadPowerProfileGetProfilesInfoFunc mocks the DeviceWorkloadPowerProfileGetProfilesInfo method. + DeviceWorkloadPowerProfileGetProfilesInfoFunc func(device nvml.Device) (nvml.WorkloadPowerProfileProfilesInfo, nvml.Return) + + // DeviceWorkloadPowerProfileSetRequestedProfilesFunc mocks the DeviceWorkloadPowerProfileSetRequestedProfiles method. + DeviceWorkloadPowerProfileSetRequestedProfilesFunc func(device nvml.Device, workloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles) nvml.Return + // ErrorStringFunc mocks the ErrorString method. ErrorStringFunc func(returnMoqParam nvml.Return) string @@ -1753,6 +1960,9 @@ type Interface struct { // GpuInstanceDestroyFunc mocks the GpuInstanceDestroy method. GpuInstanceDestroyFunc func(gpuInstance nvml.GpuInstance) nvml.Return + // GpuInstanceGetActiveVgpusFunc mocks the GpuInstanceGetActiveVgpus method. + GpuInstanceGetActiveVgpusFunc func(gpuInstance nvml.GpuInstance) (nvml.ActiveVgpuInstanceInfo, nvml.Return) + // GpuInstanceGetComputeInstanceByIdFunc mocks the GpuInstanceGetComputeInstanceById method. GpuInstanceGetComputeInstanceByIdFunc func(gpuInstance nvml.GpuInstance, n int) (nvml.ComputeInstance, nvml.Return) @@ -1771,9 +1981,30 @@ type Interface struct { // GpuInstanceGetComputeInstancesFunc mocks the GpuInstanceGetComputeInstances method. GpuInstanceGetComputeInstancesFunc func(gpuInstance nvml.GpuInstance, computeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo) ([]nvml.ComputeInstance, nvml.Return) + // GpuInstanceGetCreatableVgpusFunc mocks the GpuInstanceGetCreatableVgpus method. + GpuInstanceGetCreatableVgpusFunc func(gpuInstance nvml.GpuInstance) (nvml.VgpuTypeIdInfo, nvml.Return) + // GpuInstanceGetInfoFunc mocks the GpuInstanceGetInfo method. GpuInstanceGetInfoFunc func(gpuInstance nvml.GpuInstance) (nvml.GpuInstanceInfo, nvml.Return) + // GpuInstanceGetVgpuHeterogeneousModeFunc mocks the GpuInstanceGetVgpuHeterogeneousMode method. + GpuInstanceGetVgpuHeterogeneousModeFunc func(gpuInstance nvml.GpuInstance) (nvml.VgpuHeterogeneousMode, nvml.Return) + + // GpuInstanceGetVgpuSchedulerLogFunc mocks the GpuInstanceGetVgpuSchedulerLog method. + GpuInstanceGetVgpuSchedulerLogFunc func(gpuInstance nvml.GpuInstance) (nvml.VgpuSchedulerLogInfo, nvml.Return) + + // GpuInstanceGetVgpuSchedulerStateFunc mocks the GpuInstanceGetVgpuSchedulerState method. + GpuInstanceGetVgpuSchedulerStateFunc func(gpuInstance nvml.GpuInstance) (nvml.VgpuSchedulerStateInfo, nvml.Return) + + // GpuInstanceGetVgpuTypeCreatablePlacementsFunc mocks the GpuInstanceGetVgpuTypeCreatablePlacements method. + GpuInstanceGetVgpuTypeCreatablePlacementsFunc func(gpuInstance nvml.GpuInstance) (nvml.VgpuCreatablePlacementInfo, nvml.Return) + + // GpuInstanceSetVgpuHeterogeneousModeFunc mocks the GpuInstanceSetVgpuHeterogeneousMode method. + GpuInstanceSetVgpuHeterogeneousModeFunc func(gpuInstance nvml.GpuInstance, vgpuHeterogeneousMode *nvml.VgpuHeterogeneousMode) nvml.Return + + // GpuInstanceSetVgpuSchedulerStateFunc mocks the GpuInstanceSetVgpuSchedulerState method. + GpuInstanceSetVgpuSchedulerStateFunc func(gpuInstance nvml.GpuInstance, vgpuSchedulerState *nvml.VgpuSchedulerState) nvml.Return + // InitFunc mocks the Init method. InitFunc func() nvml.Return @@ -1786,21 +2017,39 @@ type Interface struct { // ShutdownFunc mocks the Shutdown method. ShutdownFunc func() nvml.Return + // SystemEventSetCreateFunc mocks the SystemEventSetCreate method. + SystemEventSetCreateFunc func(systemEventSetCreateRequest *nvml.SystemEventSetCreateRequest) nvml.Return + + // SystemEventSetFreeFunc mocks the SystemEventSetFree method. + SystemEventSetFreeFunc func(systemEventSetFreeRequest *nvml.SystemEventSetFreeRequest) nvml.Return + + // SystemEventSetWaitFunc mocks the SystemEventSetWait method. + SystemEventSetWaitFunc func(systemEventSetWaitRequest *nvml.SystemEventSetWaitRequest) nvml.Return + // SystemGetConfComputeCapabilitiesFunc mocks the SystemGetConfComputeCapabilities method. SystemGetConfComputeCapabilitiesFunc func() (nvml.ConfComputeSystemCaps, nvml.Return) + // SystemGetConfComputeGpusReadyStateFunc mocks the SystemGetConfComputeGpusReadyState method. + SystemGetConfComputeGpusReadyStateFunc func() (uint32, nvml.Return) + // SystemGetConfComputeKeyRotationThresholdInfoFunc mocks the SystemGetConfComputeKeyRotationThresholdInfo method. SystemGetConfComputeKeyRotationThresholdInfoFunc func() (nvml.ConfComputeGetKeyRotationThresholdInfo, nvml.Return) // SystemGetConfComputeSettingsFunc mocks the SystemGetConfComputeSettings method. SystemGetConfComputeSettingsFunc func() (nvml.SystemConfComputeSettings, nvml.Return) + // SystemGetConfComputeStateFunc mocks the SystemGetConfComputeState method. + SystemGetConfComputeStateFunc func() (nvml.ConfComputeSystemState, nvml.Return) + // SystemGetCudaDriverVersionFunc mocks the SystemGetCudaDriverVersion method. SystemGetCudaDriverVersionFunc func() (int, nvml.Return) // SystemGetCudaDriverVersion_v2Func mocks the SystemGetCudaDriverVersion_v2 method. SystemGetCudaDriverVersion_v2Func func() (int, nvml.Return) + // SystemGetDriverBranchFunc mocks the SystemGetDriverBranch method. + SystemGetDriverBranchFunc func() (nvml.SystemDriverBranchInfo, nvml.Return) + // SystemGetDriverVersionFunc mocks the SystemGetDriverVersion method. SystemGetDriverVersionFunc func() (string, nvml.Return) @@ -1810,15 +2059,27 @@ type Interface struct { // SystemGetNVMLVersionFunc mocks the SystemGetNVMLVersion method. SystemGetNVMLVersionFunc func() (string, nvml.Return) + // SystemGetNvlinkBwModeFunc mocks the SystemGetNvlinkBwMode method. + SystemGetNvlinkBwModeFunc func() (uint32, nvml.Return) + // SystemGetProcessNameFunc mocks the SystemGetProcessName method. SystemGetProcessNameFunc func(n int) (string, nvml.Return) // SystemGetTopologyGpuSetFunc mocks the SystemGetTopologyGpuSet method. SystemGetTopologyGpuSetFunc func(n int) ([]nvml.Device, nvml.Return) + // SystemRegisterEventsFunc mocks the SystemRegisterEvents method. + SystemRegisterEventsFunc func(systemRegisterEventRequest *nvml.SystemRegisterEventRequest) nvml.Return + + // SystemSetConfComputeGpusReadyStateFunc mocks the SystemSetConfComputeGpusReadyState method. + SystemSetConfComputeGpusReadyStateFunc func(v uint32) nvml.Return + // SystemSetConfComputeKeyRotationThresholdInfoFunc mocks the SystemSetConfComputeKeyRotationThresholdInfo method. SystemSetConfComputeKeyRotationThresholdInfoFunc func(confComputeSetKeyRotationThresholdInfo nvml.ConfComputeSetKeyRotationThresholdInfo) nvml.Return + // SystemSetNvlinkBwModeFunc mocks the SystemSetNvlinkBwMode method. + SystemSetNvlinkBwModeFunc func(v uint32) nvml.Return + // UnitGetCountFunc mocks the UnitGetCount method. UnitGetCountFunc func() (int, nvml.Return) @@ -1900,6 +2161,9 @@ type Interface struct { // VgpuInstanceGetMetadataFunc mocks the VgpuInstanceGetMetadata method. VgpuInstanceGetMetadataFunc func(vgpuInstance nvml.VgpuInstance) (nvml.VgpuMetadata, nvml.Return) + // VgpuInstanceGetRuntimeStateSizeFunc mocks the VgpuInstanceGetRuntimeStateSize method. + VgpuInstanceGetRuntimeStateSizeFunc func(vgpuInstance nvml.VgpuInstance) (nvml.VgpuRuntimeState, nvml.Return) + // VgpuInstanceGetTypeFunc mocks the VgpuInstanceGetType method. VgpuInstanceGetTypeFunc func(vgpuInstance nvml.VgpuInstance) (nvml.VgpuTypeId, nvml.Return) @@ -1915,6 +2179,9 @@ type Interface struct { // VgpuInstanceSetEncoderCapacityFunc mocks the VgpuInstanceSetEncoderCapacity method. VgpuInstanceSetEncoderCapacityFunc func(vgpuInstance nvml.VgpuInstance, n int) nvml.Return + // VgpuTypeGetBAR1InfoFunc mocks the VgpuTypeGetBAR1Info method. + VgpuTypeGetBAR1InfoFunc func(vgpuTypeId nvml.VgpuTypeId) (nvml.VgpuTypeBar1Info, nvml.Return) + // VgpuTypeGetCapabilitiesFunc mocks the VgpuTypeGetCapabilities method. VgpuTypeGetCapabilitiesFunc func(vgpuTypeId nvml.VgpuTypeId, vgpuCapability nvml.VgpuCapability) (bool, nvml.Return) @@ -1939,6 +2206,9 @@ type Interface struct { // VgpuTypeGetMaxInstancesFunc mocks the VgpuTypeGetMaxInstances method. VgpuTypeGetMaxInstancesFunc func(device nvml.Device, vgpuTypeId nvml.VgpuTypeId) (int, nvml.Return) + // VgpuTypeGetMaxInstancesPerGpuInstanceFunc mocks the VgpuTypeGetMaxInstancesPerGpuInstance method. + VgpuTypeGetMaxInstancesPerGpuInstanceFunc func(vgpuTypeMaxInstance *nvml.VgpuTypeMaxInstance) nvml.Return + // VgpuTypeGetMaxInstancesPerVmFunc mocks the VgpuTypeGetMaxInstancesPerVm method. VgpuTypeGetMaxInstancesPerVmFunc func(vgpuTypeId nvml.VgpuTypeId) (int, nvml.Return) @@ -2113,6 +2383,11 @@ type Interface struct { // Device is the device argument value. Device nvml.Device } + // DeviceGetCapabilities holds details about calls to the DeviceGetCapabilities method. + DeviceGetCapabilities []struct { + // Device is the device argument value. + Device nvml.Device + } // DeviceGetClkMonStatus holds details about calls to the DeviceGetClkMonStatus method. DeviceGetClkMonStatus []struct { // Device is the device argument value. @@ -2134,6 +2409,11 @@ type Interface struct { // ClockType is the clockType argument value. ClockType nvml.ClockType } + // DeviceGetClockOffsets holds details about calls to the DeviceGetClockOffsets method. + DeviceGetClockOffsets []struct { + // Device is the device argument value. + Device nvml.Device + } // DeviceGetComputeInstanceId holds details about calls to the DeviceGetComputeInstanceId method. DeviceGetComputeInstanceId []struct { // Device is the device argument value. @@ -2169,6 +2449,11 @@ type Interface struct { // Device is the device argument value. Device nvml.Device } + // DeviceGetCoolerInfo holds details about calls to the DeviceGetCoolerInfo method. + DeviceGetCoolerInfo []struct { + // Device is the device argument value. + Device nvml.Device + } // DeviceGetCount holds details about calls to the DeviceGetCount method. DeviceGetCount []struct { } @@ -2208,6 +2493,11 @@ type Interface struct { // Device is the device argument value. Device nvml.Device } + // DeviceGetCurrentClockFreqs holds details about calls to the DeviceGetCurrentClockFreqs method. + DeviceGetCurrentClockFreqs []struct { + // Device is the device argument value. + Device nvml.Device + } // DeviceGetCurrentClocksEventReasons holds details about calls to the DeviceGetCurrentClocksEventReasons method. DeviceGetCurrentClocksEventReasons []struct { // Device is the device argument value. @@ -2259,11 +2549,21 @@ type Interface struct { // Device is the device argument value. Device nvml.Device } + // DeviceGetDramEncryptionMode holds details about calls to the DeviceGetDramEncryptionMode method. + DeviceGetDramEncryptionMode []struct { + // Device is the device argument value. + Device nvml.Device + } // DeviceGetDriverModel holds details about calls to the DeviceGetDriverModel method. DeviceGetDriverModel []struct { // Device is the device argument value. Device nvml.Device } + // DeviceGetDriverModel_v2 holds details about calls to the DeviceGetDriverModel_v2 method. + DeviceGetDriverModel_v2 []struct { + // Device is the device argument value. + Device nvml.Device + } // DeviceGetDynamicPstatesInfo holds details about calls to the DeviceGetDynamicPstatesInfo method. DeviceGetDynamicPstatesInfo []struct { // Device is the device argument value. @@ -2323,6 +2623,11 @@ type Interface struct { // Device is the device argument value. Device nvml.Device } + // DeviceGetFanSpeedRPM holds details about calls to the DeviceGetFanSpeedRPM method. + DeviceGetFanSpeedRPM []struct { + // Device is the device argument value. + Device nvml.Device + } // DeviceGetFanSpeed_v2 holds details about calls to the DeviceGetFanSpeed_v2 method. DeviceGetFanSpeed_v2 []struct { // Device is the device argument value. @@ -2454,6 +2759,11 @@ type Interface struct { // S is the s argument value. S string } + // DeviceGetHandleByUUIDV holds details about calls to the DeviceGetHandleByUUIDV method. + DeviceGetHandleByUUIDV []struct { + // UUID is the uUID argument value. + UUID *nvml.UUID + } // DeviceGetHostVgpuMode holds details about calls to the DeviceGetHostVgpuMode method. DeviceGetHostVgpuMode []struct { // Device is the device argument value. @@ -2501,6 +2811,11 @@ type Interface struct { // Device is the device argument value. Device nvml.Device } + // DeviceGetMarginTemperature holds details about calls to the DeviceGetMarginTemperature method. + DeviceGetMarginTemperature []struct { + // Device is the device argument value. + Device nvml.Device + } // DeviceGetMaxClockInfo holds details about calls to the DeviceGetMaxClockInfo method. DeviceGetMaxClockInfo []struct { // Device is the device argument value. @@ -2700,6 +3015,16 @@ type Interface struct { // N is the n argument value. N int } + // DeviceGetNvlinkBwMode holds details about calls to the DeviceGetNvlinkBwMode method. + DeviceGetNvlinkBwMode []struct { + // Device is the device argument value. + Device nvml.Device + } + // DeviceGetNvlinkSupportedBwModes holds details about calls to the DeviceGetNvlinkSupportedBwModes method. + DeviceGetNvlinkSupportedBwModes []struct { + // Device is the device argument value. + Device nvml.Device + } // DeviceGetOfaUtilization holds details about calls to the DeviceGetOfaUtilization method. DeviceGetOfaUtilization []struct { // Device is the device argument value. @@ -2746,6 +3071,11 @@ type Interface struct { // PcieUtilCounter is the pcieUtilCounter argument value. PcieUtilCounter nvml.PcieUtilCounter } + // DeviceGetPerformanceModes holds details about calls to the DeviceGetPerformanceModes method. + DeviceGetPerformanceModes []struct { + // Device is the device argument value. + Device nvml.Device + } // DeviceGetPerformanceState holds details about calls to the DeviceGetPerformanceState method. DeviceGetPerformanceState []struct { // Device is the device argument value. @@ -2761,6 +3091,11 @@ type Interface struct { // Device is the device argument value. Device nvml.Device } + // DeviceGetPlatformInfo holds details about calls to the DeviceGetPlatformInfo method. + DeviceGetPlatformInfo []struct { + // Device is the device argument value. + Device nvml.Device + } // DeviceGetPowerManagementDefaultLimit holds details about calls to the DeviceGetPowerManagementDefaultLimit method. DeviceGetPowerManagementDefaultLimit []struct { // Device is the device argument value. @@ -2919,6 +3254,11 @@ type Interface struct { // TemperatureThresholds is the temperatureThresholds argument value. TemperatureThresholds nvml.TemperatureThresholds } + // DeviceGetTemperatureV holds details about calls to the DeviceGetTemperatureV method. + DeviceGetTemperatureV []struct { + // Device is the device argument value. + Device nvml.Device + } // DeviceGetThermalSettings holds details about calls to the DeviceGetThermalSettings method. DeviceGetThermalSettings []struct { // Device is the device argument value. @@ -3070,6 +3410,27 @@ type Interface struct { // Device2 is the device2 argument value. Device2 nvml.Device } + // DevicePowerSmoothingActivatePresetProfile holds details about calls to the DevicePowerSmoothingActivatePresetProfile method. + DevicePowerSmoothingActivatePresetProfile []struct { + // Device is the device argument value. + Device nvml.Device + // PowerSmoothingProfile is the powerSmoothingProfile argument value. + PowerSmoothingProfile *nvml.PowerSmoothingProfile + } + // DevicePowerSmoothingSetState holds details about calls to the DevicePowerSmoothingSetState method. + DevicePowerSmoothingSetState []struct { + // Device is the device argument value. + Device nvml.Device + // PowerSmoothingState is the powerSmoothingState argument value. + PowerSmoothingState *nvml.PowerSmoothingState + } + // DevicePowerSmoothingUpdatePresetProfileParam holds details about calls to the DevicePowerSmoothingUpdatePresetProfileParam method. + DevicePowerSmoothingUpdatePresetProfileParam []struct { + // Device is the device argument value. + Device nvml.Device + // PowerSmoothingProfile is the powerSmoothingProfile argument value. + PowerSmoothingProfile *nvml.PowerSmoothingProfile + } // DeviceQueryDrainState holds details about calls to the DeviceQueryDrainState method. DeviceQueryDrainState []struct { // PciInfo is the pciInfo argument value. @@ -3161,6 +3522,13 @@ type Interface struct { // EnableState is the enableState argument value. EnableState nvml.EnableState } + // DeviceSetClockOffsets holds details about calls to the DeviceSetClockOffsets method. + DeviceSetClockOffsets []struct { + // Device is the device argument value. + Device nvml.Device + // ClockOffset is the clockOffset argument value. + ClockOffset nvml.ClockOffset + } // DeviceSetComputeMode holds details about calls to the DeviceSetComputeMode method. DeviceSetComputeMode []struct { // Device is the device argument value. @@ -3196,6 +3564,13 @@ type Interface struct { // N is the n argument value. N int } + // DeviceSetDramEncryptionMode holds details about calls to the DeviceSetDramEncryptionMode method. + DeviceSetDramEncryptionMode []struct { + // Device is the device argument value. + Device nvml.Device + // DramEncryptionInfo is the dramEncryptionInfo argument value. + DramEncryptionInfo *nvml.DramEncryptionInfo + } // DeviceSetDriverModel holds details about calls to the DeviceSetDriverModel method. DeviceSetDriverModel []struct { // Device is the device argument value. @@ -3296,6 +3671,13 @@ type Interface struct { // B is the b argument value. B bool } + // DeviceSetNvlinkBwMode holds details about calls to the DeviceSetNvlinkBwMode method. + DeviceSetNvlinkBwMode []struct { + // Device is the device argument value. + Device nvml.Device + // NvlinkSetBwMode is the nvlinkSetBwMode argument value. + NvlinkSetBwMode *nvml.NvlinkSetBwMode + } // DeviceSetPersistenceMode holds details about calls to the DeviceSetPersistenceMode method. DeviceSetPersistenceMode []struct { // Device is the device argument value. @@ -3361,6 +3743,30 @@ type Interface struct { // Device is the device argument value. Device nvml.Device } + // DeviceWorkloadPowerProfileClearRequestedProfiles holds details about calls to the DeviceWorkloadPowerProfileClearRequestedProfiles method. + DeviceWorkloadPowerProfileClearRequestedProfiles []struct { + // Device is the device argument value. + Device nvml.Device + // WorkloadPowerProfileRequestedProfiles is the workloadPowerProfileRequestedProfiles argument value. + WorkloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles + } + // DeviceWorkloadPowerProfileGetCurrentProfiles holds details about calls to the DeviceWorkloadPowerProfileGetCurrentProfiles method. + DeviceWorkloadPowerProfileGetCurrentProfiles []struct { + // Device is the device argument value. + Device nvml.Device + } + // DeviceWorkloadPowerProfileGetProfilesInfo holds details about calls to the DeviceWorkloadPowerProfileGetProfilesInfo method. + DeviceWorkloadPowerProfileGetProfilesInfo []struct { + // Device is the device argument value. + Device nvml.Device + } + // DeviceWorkloadPowerProfileSetRequestedProfiles holds details about calls to the DeviceWorkloadPowerProfileSetRequestedProfiles method. + DeviceWorkloadPowerProfileSetRequestedProfiles []struct { + // Device is the device argument value. + Device nvml.Device + // WorkloadPowerProfileRequestedProfiles is the workloadPowerProfileRequestedProfiles argument value. + WorkloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles + } // ErrorString holds details about calls to the ErrorString method. ErrorString []struct { // ReturnMoqParam is the returnMoqParam argument value. @@ -3484,6 +3890,11 @@ type Interface struct { // GpuInstance is the gpuInstance argument value. GpuInstance nvml.GpuInstance } + // GpuInstanceGetActiveVgpus holds details about calls to the GpuInstanceGetActiveVgpus method. + GpuInstanceGetActiveVgpus []struct { + // GpuInstance is the gpuInstance argument value. + GpuInstance nvml.GpuInstance + } // GpuInstanceGetComputeInstanceById holds details about calls to the GpuInstanceGetComputeInstanceById method. GpuInstanceGetComputeInstanceById []struct { // GpuInstance is the gpuInstance argument value. @@ -3530,11 +3941,50 @@ type Interface struct { // ComputeInstanceProfileInfo is the computeInstanceProfileInfo argument value. ComputeInstanceProfileInfo *nvml.ComputeInstanceProfileInfo } + // GpuInstanceGetCreatableVgpus holds details about calls to the GpuInstanceGetCreatableVgpus method. + GpuInstanceGetCreatableVgpus []struct { + // GpuInstance is the gpuInstance argument value. + GpuInstance nvml.GpuInstance + } // GpuInstanceGetInfo holds details about calls to the GpuInstanceGetInfo method. GpuInstanceGetInfo []struct { // GpuInstance is the gpuInstance argument value. GpuInstance nvml.GpuInstance } + // GpuInstanceGetVgpuHeterogeneousMode holds details about calls to the GpuInstanceGetVgpuHeterogeneousMode method. + GpuInstanceGetVgpuHeterogeneousMode []struct { + // GpuInstance is the gpuInstance argument value. + GpuInstance nvml.GpuInstance + } + // GpuInstanceGetVgpuSchedulerLog holds details about calls to the GpuInstanceGetVgpuSchedulerLog method. + GpuInstanceGetVgpuSchedulerLog []struct { + // GpuInstance is the gpuInstance argument value. + GpuInstance nvml.GpuInstance + } + // GpuInstanceGetVgpuSchedulerState holds details about calls to the GpuInstanceGetVgpuSchedulerState method. + GpuInstanceGetVgpuSchedulerState []struct { + // GpuInstance is the gpuInstance argument value. + GpuInstance nvml.GpuInstance + } + // GpuInstanceGetVgpuTypeCreatablePlacements holds details about calls to the GpuInstanceGetVgpuTypeCreatablePlacements method. + GpuInstanceGetVgpuTypeCreatablePlacements []struct { + // GpuInstance is the gpuInstance argument value. + GpuInstance nvml.GpuInstance + } + // GpuInstanceSetVgpuHeterogeneousMode holds details about calls to the GpuInstanceSetVgpuHeterogeneousMode method. + GpuInstanceSetVgpuHeterogeneousMode []struct { + // GpuInstance is the gpuInstance argument value. + GpuInstance nvml.GpuInstance + // VgpuHeterogeneousMode is the vgpuHeterogeneousMode argument value. + VgpuHeterogeneousMode *nvml.VgpuHeterogeneousMode + } + // GpuInstanceSetVgpuSchedulerState holds details about calls to the GpuInstanceSetVgpuSchedulerState method. + GpuInstanceSetVgpuSchedulerState []struct { + // GpuInstance is the gpuInstance argument value. + GpuInstance nvml.GpuInstance + // VgpuSchedulerState is the vgpuSchedulerState argument value. + VgpuSchedulerState *nvml.VgpuSchedulerState + } // Init holds details about calls to the Init method. Init []struct { } @@ -3551,21 +4001,45 @@ type Interface struct { // Shutdown holds details about calls to the Shutdown method. Shutdown []struct { } + // SystemEventSetCreate holds details about calls to the SystemEventSetCreate method. + SystemEventSetCreate []struct { + // SystemEventSetCreateRequest is the systemEventSetCreateRequest argument value. + SystemEventSetCreateRequest *nvml.SystemEventSetCreateRequest + } + // SystemEventSetFree holds details about calls to the SystemEventSetFree method. + SystemEventSetFree []struct { + // SystemEventSetFreeRequest is the systemEventSetFreeRequest argument value. + SystemEventSetFreeRequest *nvml.SystemEventSetFreeRequest + } + // SystemEventSetWait holds details about calls to the SystemEventSetWait method. + SystemEventSetWait []struct { + // SystemEventSetWaitRequest is the systemEventSetWaitRequest argument value. + SystemEventSetWaitRequest *nvml.SystemEventSetWaitRequest + } // SystemGetConfComputeCapabilities holds details about calls to the SystemGetConfComputeCapabilities method. SystemGetConfComputeCapabilities []struct { } + // SystemGetConfComputeGpusReadyState holds details about calls to the SystemGetConfComputeGpusReadyState method. + SystemGetConfComputeGpusReadyState []struct { + } // SystemGetConfComputeKeyRotationThresholdInfo holds details about calls to the SystemGetConfComputeKeyRotationThresholdInfo method. SystemGetConfComputeKeyRotationThresholdInfo []struct { } // SystemGetConfComputeSettings holds details about calls to the SystemGetConfComputeSettings method. SystemGetConfComputeSettings []struct { } + // SystemGetConfComputeState holds details about calls to the SystemGetConfComputeState method. + SystemGetConfComputeState []struct { + } // SystemGetCudaDriverVersion holds details about calls to the SystemGetCudaDriverVersion method. SystemGetCudaDriverVersion []struct { } // SystemGetCudaDriverVersion_v2 holds details about calls to the SystemGetCudaDriverVersion_v2 method. SystemGetCudaDriverVersion_v2 []struct { } + // SystemGetDriverBranch holds details about calls to the SystemGetDriverBranch method. + SystemGetDriverBranch []struct { + } // SystemGetDriverVersion holds details about calls to the SystemGetDriverVersion method. SystemGetDriverVersion []struct { } @@ -3575,6 +4049,9 @@ type Interface struct { // SystemGetNVMLVersion holds details about calls to the SystemGetNVMLVersion method. SystemGetNVMLVersion []struct { } + // SystemGetNvlinkBwMode holds details about calls to the SystemGetNvlinkBwMode method. + SystemGetNvlinkBwMode []struct { + } // SystemGetProcessName holds details about calls to the SystemGetProcessName method. SystemGetProcessName []struct { // N is the n argument value. @@ -3585,11 +4062,26 @@ type Interface struct { // N is the n argument value. N int } + // SystemRegisterEvents holds details about calls to the SystemRegisterEvents method. + SystemRegisterEvents []struct { + // SystemRegisterEventRequest is the systemRegisterEventRequest argument value. + SystemRegisterEventRequest *nvml.SystemRegisterEventRequest + } + // SystemSetConfComputeGpusReadyState holds details about calls to the SystemSetConfComputeGpusReadyState method. + SystemSetConfComputeGpusReadyState []struct { + // V is the v argument value. + V uint32 + } // SystemSetConfComputeKeyRotationThresholdInfo holds details about calls to the SystemSetConfComputeKeyRotationThresholdInfo method. SystemSetConfComputeKeyRotationThresholdInfo []struct { // ConfComputeSetKeyRotationThresholdInfo is the confComputeSetKeyRotationThresholdInfo argument value. ConfComputeSetKeyRotationThresholdInfo nvml.ConfComputeSetKeyRotationThresholdInfo } + // SystemSetNvlinkBwMode holds details about calls to the SystemSetNvlinkBwMode method. + SystemSetNvlinkBwMode []struct { + // V is the v argument value. + V uint32 + } // UnitGetCount holds details about calls to the UnitGetCount method. UnitGetCount []struct { } @@ -3729,6 +4221,11 @@ type Interface struct { // VgpuInstance is the vgpuInstance argument value. VgpuInstance nvml.VgpuInstance } + // VgpuInstanceGetRuntimeStateSize holds details about calls to the VgpuInstanceGetRuntimeStateSize method. + VgpuInstanceGetRuntimeStateSize []struct { + // VgpuInstance is the vgpuInstance argument value. + VgpuInstance nvml.VgpuInstance + } // VgpuInstanceGetType holds details about calls to the VgpuInstanceGetType method. VgpuInstanceGetType []struct { // VgpuInstance is the vgpuInstance argument value. @@ -3756,6 +4253,11 @@ type Interface struct { // N is the n argument value. N int } + // VgpuTypeGetBAR1Info holds details about calls to the VgpuTypeGetBAR1Info method. + VgpuTypeGetBAR1Info []struct { + // VgpuTypeId is the vgpuTypeId argument value. + VgpuTypeId nvml.VgpuTypeId + } // VgpuTypeGetCapabilities holds details about calls to the VgpuTypeGetCapabilities method. VgpuTypeGetCapabilities []struct { // VgpuTypeId is the vgpuTypeId argument value. @@ -3800,6 +4302,11 @@ type Interface struct { // VgpuTypeId is the vgpuTypeId argument value. VgpuTypeId nvml.VgpuTypeId } + // VgpuTypeGetMaxInstancesPerGpuInstance holds details about calls to the VgpuTypeGetMaxInstancesPerGpuInstance method. + VgpuTypeGetMaxInstancesPerGpuInstance []struct { + // VgpuTypeMaxInstance is the vgpuTypeMaxInstance argument value. + VgpuTypeMaxInstance *nvml.VgpuTypeMaxInstance + } // VgpuTypeGetMaxInstancesPerVm holds details about calls to the VgpuTypeGetMaxInstancesPerVm method. VgpuTypeGetMaxInstancesPerVm []struct { // VgpuTypeId is the vgpuTypeId argument value. @@ -3823,327 +4330,372 @@ type Interface struct { N int } } - lockComputeInstanceDestroy sync.RWMutex - lockComputeInstanceGetInfo sync.RWMutex - lockDeviceClearAccountingPids sync.RWMutex - lockDeviceClearCpuAffinity sync.RWMutex - lockDeviceClearEccErrorCounts sync.RWMutex - lockDeviceClearFieldValues sync.RWMutex - lockDeviceCreateGpuInstance sync.RWMutex - lockDeviceCreateGpuInstanceWithPlacement sync.RWMutex - lockDeviceDiscoverGpus sync.RWMutex - lockDeviceFreezeNvLinkUtilizationCounter sync.RWMutex - lockDeviceGetAPIRestriction sync.RWMutex - lockDeviceGetAccountingBufferSize sync.RWMutex - lockDeviceGetAccountingMode sync.RWMutex - lockDeviceGetAccountingPids sync.RWMutex - lockDeviceGetAccountingStats sync.RWMutex - lockDeviceGetActiveVgpus sync.RWMutex - lockDeviceGetAdaptiveClockInfoStatus sync.RWMutex - lockDeviceGetApplicationsClock sync.RWMutex - lockDeviceGetArchitecture sync.RWMutex - lockDeviceGetAttributes sync.RWMutex - lockDeviceGetAutoBoostedClocksEnabled sync.RWMutex - lockDeviceGetBAR1MemoryInfo sync.RWMutex - lockDeviceGetBoardId sync.RWMutex - lockDeviceGetBoardPartNumber sync.RWMutex - lockDeviceGetBrand sync.RWMutex - lockDeviceGetBridgeChipInfo sync.RWMutex - lockDeviceGetBusType sync.RWMutex - lockDeviceGetC2cModeInfoV sync.RWMutex - lockDeviceGetClkMonStatus sync.RWMutex - lockDeviceGetClock sync.RWMutex - lockDeviceGetClockInfo sync.RWMutex - lockDeviceGetComputeInstanceId sync.RWMutex - lockDeviceGetComputeMode sync.RWMutex - lockDeviceGetComputeRunningProcesses sync.RWMutex - lockDeviceGetConfComputeGpuAttestationReport sync.RWMutex - lockDeviceGetConfComputeGpuCertificate sync.RWMutex - lockDeviceGetConfComputeMemSizeInfo sync.RWMutex - lockDeviceGetConfComputeProtectedMemoryUsage sync.RWMutex - lockDeviceGetCount sync.RWMutex - lockDeviceGetCpuAffinity sync.RWMutex - lockDeviceGetCpuAffinityWithinScope sync.RWMutex - lockDeviceGetCreatableVgpus sync.RWMutex - lockDeviceGetCudaComputeCapability sync.RWMutex - lockDeviceGetCurrPcieLinkGeneration sync.RWMutex - lockDeviceGetCurrPcieLinkWidth sync.RWMutex - lockDeviceGetCurrentClocksEventReasons sync.RWMutex - lockDeviceGetCurrentClocksThrottleReasons sync.RWMutex - lockDeviceGetDecoderUtilization sync.RWMutex - lockDeviceGetDefaultApplicationsClock sync.RWMutex - lockDeviceGetDefaultEccMode sync.RWMutex - lockDeviceGetDetailedEccErrors sync.RWMutex - lockDeviceGetDeviceHandleFromMigDeviceHandle sync.RWMutex - lockDeviceGetDisplayActive sync.RWMutex - lockDeviceGetDisplayMode sync.RWMutex - lockDeviceGetDriverModel sync.RWMutex - lockDeviceGetDynamicPstatesInfo sync.RWMutex - lockDeviceGetEccMode sync.RWMutex - lockDeviceGetEncoderCapacity sync.RWMutex - lockDeviceGetEncoderSessions sync.RWMutex - lockDeviceGetEncoderStats sync.RWMutex - lockDeviceGetEncoderUtilization sync.RWMutex - lockDeviceGetEnforcedPowerLimit sync.RWMutex - lockDeviceGetFBCSessions sync.RWMutex - lockDeviceGetFBCStats sync.RWMutex - lockDeviceGetFanControlPolicy_v2 sync.RWMutex - lockDeviceGetFanSpeed sync.RWMutex - lockDeviceGetFanSpeed_v2 sync.RWMutex - lockDeviceGetFieldValues sync.RWMutex - lockDeviceGetGpcClkMinMaxVfOffset sync.RWMutex - lockDeviceGetGpcClkVfOffset sync.RWMutex - lockDeviceGetGpuFabricInfo sync.RWMutex - lockDeviceGetGpuFabricInfoV sync.RWMutex - lockDeviceGetGpuInstanceById sync.RWMutex - lockDeviceGetGpuInstanceId sync.RWMutex - lockDeviceGetGpuInstancePossiblePlacements sync.RWMutex - lockDeviceGetGpuInstanceProfileInfo sync.RWMutex - lockDeviceGetGpuInstanceProfileInfoV sync.RWMutex - lockDeviceGetGpuInstanceRemainingCapacity sync.RWMutex - lockDeviceGetGpuInstances sync.RWMutex - lockDeviceGetGpuMaxPcieLinkGeneration sync.RWMutex - lockDeviceGetGpuOperationMode sync.RWMutex - lockDeviceGetGraphicsRunningProcesses sync.RWMutex - lockDeviceGetGridLicensableFeatures sync.RWMutex - lockDeviceGetGspFirmwareMode sync.RWMutex - lockDeviceGetGspFirmwareVersion sync.RWMutex - lockDeviceGetHandleByIndex sync.RWMutex - lockDeviceGetHandleByPciBusId sync.RWMutex - lockDeviceGetHandleBySerial sync.RWMutex - lockDeviceGetHandleByUUID sync.RWMutex - lockDeviceGetHostVgpuMode sync.RWMutex - lockDeviceGetIndex sync.RWMutex - lockDeviceGetInforomConfigurationChecksum sync.RWMutex - lockDeviceGetInforomImageVersion sync.RWMutex - lockDeviceGetInforomVersion sync.RWMutex - lockDeviceGetIrqNum sync.RWMutex - lockDeviceGetJpgUtilization sync.RWMutex - lockDeviceGetLastBBXFlushTime sync.RWMutex - lockDeviceGetMPSComputeRunningProcesses sync.RWMutex - lockDeviceGetMaxClockInfo sync.RWMutex - lockDeviceGetMaxCustomerBoostClock sync.RWMutex - lockDeviceGetMaxMigDeviceCount sync.RWMutex - lockDeviceGetMaxPcieLinkGeneration sync.RWMutex - lockDeviceGetMaxPcieLinkWidth sync.RWMutex - lockDeviceGetMemClkMinMaxVfOffset sync.RWMutex - lockDeviceGetMemClkVfOffset sync.RWMutex - lockDeviceGetMemoryAffinity sync.RWMutex - lockDeviceGetMemoryBusWidth sync.RWMutex - lockDeviceGetMemoryErrorCounter sync.RWMutex - lockDeviceGetMemoryInfo sync.RWMutex - lockDeviceGetMemoryInfo_v2 sync.RWMutex - lockDeviceGetMigDeviceHandleByIndex sync.RWMutex - lockDeviceGetMigMode sync.RWMutex - lockDeviceGetMinMaxClockOfPState sync.RWMutex - lockDeviceGetMinMaxFanSpeed sync.RWMutex - lockDeviceGetMinorNumber sync.RWMutex - lockDeviceGetModuleId sync.RWMutex - lockDeviceGetMultiGpuBoard sync.RWMutex - lockDeviceGetName sync.RWMutex - lockDeviceGetNumFans sync.RWMutex - lockDeviceGetNumGpuCores sync.RWMutex - lockDeviceGetNumaNodeId sync.RWMutex - lockDeviceGetNvLinkCapability sync.RWMutex - lockDeviceGetNvLinkErrorCounter sync.RWMutex - lockDeviceGetNvLinkRemoteDeviceType sync.RWMutex - lockDeviceGetNvLinkRemotePciInfo sync.RWMutex - lockDeviceGetNvLinkState sync.RWMutex - lockDeviceGetNvLinkUtilizationControl sync.RWMutex - lockDeviceGetNvLinkUtilizationCounter sync.RWMutex - lockDeviceGetNvLinkVersion sync.RWMutex - lockDeviceGetOfaUtilization sync.RWMutex - lockDeviceGetP2PStatus sync.RWMutex - lockDeviceGetPciInfo sync.RWMutex - lockDeviceGetPciInfoExt sync.RWMutex - lockDeviceGetPcieLinkMaxSpeed sync.RWMutex - lockDeviceGetPcieReplayCounter sync.RWMutex - lockDeviceGetPcieSpeed sync.RWMutex - lockDeviceGetPcieThroughput sync.RWMutex - lockDeviceGetPerformanceState sync.RWMutex - lockDeviceGetPersistenceMode sync.RWMutex - lockDeviceGetPgpuMetadataString sync.RWMutex - lockDeviceGetPowerManagementDefaultLimit sync.RWMutex - lockDeviceGetPowerManagementLimit sync.RWMutex - lockDeviceGetPowerManagementLimitConstraints sync.RWMutex - lockDeviceGetPowerManagementMode sync.RWMutex - lockDeviceGetPowerSource sync.RWMutex - lockDeviceGetPowerState sync.RWMutex - lockDeviceGetPowerUsage sync.RWMutex - lockDeviceGetProcessUtilization sync.RWMutex - lockDeviceGetProcessesUtilizationInfo sync.RWMutex - lockDeviceGetRemappedRows sync.RWMutex - lockDeviceGetRetiredPages sync.RWMutex - lockDeviceGetRetiredPagesPendingStatus sync.RWMutex - lockDeviceGetRetiredPages_v2 sync.RWMutex - lockDeviceGetRowRemapperHistogram sync.RWMutex - lockDeviceGetRunningProcessDetailList sync.RWMutex - lockDeviceGetSamples sync.RWMutex - lockDeviceGetSerial sync.RWMutex - lockDeviceGetSramEccErrorStatus sync.RWMutex - lockDeviceGetSupportedClocksEventReasons sync.RWMutex - lockDeviceGetSupportedClocksThrottleReasons sync.RWMutex - lockDeviceGetSupportedEventTypes sync.RWMutex - lockDeviceGetSupportedGraphicsClocks sync.RWMutex - lockDeviceGetSupportedMemoryClocks sync.RWMutex - lockDeviceGetSupportedPerformanceStates sync.RWMutex - lockDeviceGetSupportedVgpus sync.RWMutex - lockDeviceGetTargetFanSpeed sync.RWMutex - lockDeviceGetTemperature sync.RWMutex - lockDeviceGetTemperatureThreshold sync.RWMutex - lockDeviceGetThermalSettings sync.RWMutex - lockDeviceGetTopologyCommonAncestor sync.RWMutex - lockDeviceGetTopologyNearestGpus sync.RWMutex - lockDeviceGetTotalEccErrors sync.RWMutex - lockDeviceGetTotalEnergyConsumption sync.RWMutex - lockDeviceGetUUID sync.RWMutex - lockDeviceGetUtilizationRates sync.RWMutex - lockDeviceGetVbiosVersion sync.RWMutex - lockDeviceGetVgpuCapabilities sync.RWMutex - lockDeviceGetVgpuHeterogeneousMode sync.RWMutex - lockDeviceGetVgpuInstancesUtilizationInfo sync.RWMutex - lockDeviceGetVgpuMetadata sync.RWMutex - lockDeviceGetVgpuProcessUtilization sync.RWMutex - lockDeviceGetVgpuProcessesUtilizationInfo sync.RWMutex - lockDeviceGetVgpuSchedulerCapabilities sync.RWMutex - lockDeviceGetVgpuSchedulerLog sync.RWMutex - lockDeviceGetVgpuSchedulerState sync.RWMutex - lockDeviceGetVgpuTypeCreatablePlacements sync.RWMutex - lockDeviceGetVgpuTypeSupportedPlacements sync.RWMutex - lockDeviceGetVgpuUtilization sync.RWMutex - lockDeviceGetViolationStatus sync.RWMutex - lockDeviceGetVirtualizationMode sync.RWMutex - lockDeviceIsMigDeviceHandle sync.RWMutex - lockDeviceModifyDrainState sync.RWMutex - lockDeviceOnSameBoard sync.RWMutex - lockDeviceQueryDrainState sync.RWMutex - lockDeviceRegisterEvents sync.RWMutex - lockDeviceRemoveGpu sync.RWMutex - lockDeviceRemoveGpu_v2 sync.RWMutex - lockDeviceResetApplicationsClocks sync.RWMutex - lockDeviceResetGpuLockedClocks sync.RWMutex - lockDeviceResetMemoryLockedClocks sync.RWMutex - lockDeviceResetNvLinkErrorCounters sync.RWMutex - lockDeviceResetNvLinkUtilizationCounter sync.RWMutex - lockDeviceSetAPIRestriction sync.RWMutex - lockDeviceSetAccountingMode sync.RWMutex - lockDeviceSetApplicationsClocks sync.RWMutex - lockDeviceSetAutoBoostedClocksEnabled sync.RWMutex - lockDeviceSetComputeMode sync.RWMutex - lockDeviceSetConfComputeUnprotectedMemSize sync.RWMutex - lockDeviceSetCpuAffinity sync.RWMutex - lockDeviceSetDefaultAutoBoostedClocksEnabled sync.RWMutex - lockDeviceSetDefaultFanSpeed_v2 sync.RWMutex - lockDeviceSetDriverModel sync.RWMutex - lockDeviceSetEccMode sync.RWMutex - lockDeviceSetFanControlPolicy sync.RWMutex - lockDeviceSetFanSpeed_v2 sync.RWMutex - lockDeviceSetGpcClkVfOffset sync.RWMutex - lockDeviceSetGpuLockedClocks sync.RWMutex - lockDeviceSetGpuOperationMode sync.RWMutex - lockDeviceSetMemClkVfOffset sync.RWMutex - lockDeviceSetMemoryLockedClocks sync.RWMutex - lockDeviceSetMigMode sync.RWMutex - lockDeviceSetNvLinkDeviceLowPowerThreshold sync.RWMutex - lockDeviceSetNvLinkUtilizationControl sync.RWMutex - lockDeviceSetPersistenceMode sync.RWMutex - lockDeviceSetPowerManagementLimit sync.RWMutex - lockDeviceSetPowerManagementLimit_v2 sync.RWMutex - lockDeviceSetTemperatureThreshold sync.RWMutex - lockDeviceSetVgpuCapabilities sync.RWMutex - lockDeviceSetVgpuHeterogeneousMode sync.RWMutex - lockDeviceSetVgpuSchedulerState sync.RWMutex - lockDeviceSetVirtualizationMode sync.RWMutex - lockDeviceValidateInforom sync.RWMutex - lockErrorString sync.RWMutex - lockEventSetCreate sync.RWMutex - lockEventSetFree sync.RWMutex - lockEventSetWait sync.RWMutex - lockExtensions sync.RWMutex - lockGetExcludedDeviceCount sync.RWMutex - lockGetExcludedDeviceInfoByIndex sync.RWMutex - lockGetVgpuCompatibility sync.RWMutex - lockGetVgpuDriverCapabilities sync.RWMutex - lockGetVgpuVersion sync.RWMutex - lockGpmMetricsGet sync.RWMutex - lockGpmMetricsGetV sync.RWMutex - lockGpmMigSampleGet sync.RWMutex - lockGpmQueryDeviceSupport sync.RWMutex - lockGpmQueryDeviceSupportV sync.RWMutex - lockGpmQueryIfStreamingEnabled sync.RWMutex - lockGpmSampleAlloc sync.RWMutex - lockGpmSampleFree sync.RWMutex - lockGpmSampleGet sync.RWMutex - lockGpmSetStreamingEnabled sync.RWMutex - lockGpuInstanceCreateComputeInstance sync.RWMutex - lockGpuInstanceCreateComputeInstanceWithPlacement sync.RWMutex - lockGpuInstanceDestroy sync.RWMutex - lockGpuInstanceGetComputeInstanceById sync.RWMutex - lockGpuInstanceGetComputeInstancePossiblePlacements sync.RWMutex - lockGpuInstanceGetComputeInstanceProfileInfo sync.RWMutex - lockGpuInstanceGetComputeInstanceProfileInfoV sync.RWMutex - lockGpuInstanceGetComputeInstanceRemainingCapacity sync.RWMutex - lockGpuInstanceGetComputeInstances sync.RWMutex - lockGpuInstanceGetInfo sync.RWMutex - lockInit sync.RWMutex - lockInitWithFlags sync.RWMutex - lockSetVgpuVersion sync.RWMutex - lockShutdown sync.RWMutex - lockSystemGetConfComputeCapabilities sync.RWMutex - lockSystemGetConfComputeKeyRotationThresholdInfo sync.RWMutex - lockSystemGetConfComputeSettings sync.RWMutex - lockSystemGetCudaDriverVersion sync.RWMutex - lockSystemGetCudaDriverVersion_v2 sync.RWMutex - lockSystemGetDriverVersion sync.RWMutex - lockSystemGetHicVersion sync.RWMutex - lockSystemGetNVMLVersion sync.RWMutex - lockSystemGetProcessName sync.RWMutex - lockSystemGetTopologyGpuSet sync.RWMutex - lockSystemSetConfComputeKeyRotationThresholdInfo sync.RWMutex - lockUnitGetCount sync.RWMutex - lockUnitGetDevices sync.RWMutex - lockUnitGetFanSpeedInfo sync.RWMutex - lockUnitGetHandleByIndex sync.RWMutex - lockUnitGetLedState sync.RWMutex - lockUnitGetPsuInfo sync.RWMutex - lockUnitGetTemperature sync.RWMutex - lockUnitGetUnitInfo sync.RWMutex - lockUnitSetLedState sync.RWMutex - lockVgpuInstanceClearAccountingPids sync.RWMutex - lockVgpuInstanceGetAccountingMode sync.RWMutex - lockVgpuInstanceGetAccountingPids sync.RWMutex - lockVgpuInstanceGetAccountingStats sync.RWMutex - lockVgpuInstanceGetEccMode sync.RWMutex - lockVgpuInstanceGetEncoderCapacity sync.RWMutex - lockVgpuInstanceGetEncoderSessions sync.RWMutex - lockVgpuInstanceGetEncoderStats sync.RWMutex - lockVgpuInstanceGetFBCSessions sync.RWMutex - lockVgpuInstanceGetFBCStats sync.RWMutex - lockVgpuInstanceGetFbUsage sync.RWMutex - lockVgpuInstanceGetFrameRateLimit sync.RWMutex - lockVgpuInstanceGetGpuInstanceId sync.RWMutex - lockVgpuInstanceGetGpuPciId sync.RWMutex - lockVgpuInstanceGetLicenseInfo sync.RWMutex - lockVgpuInstanceGetLicenseStatus sync.RWMutex - lockVgpuInstanceGetMdevUUID sync.RWMutex - lockVgpuInstanceGetMetadata sync.RWMutex - lockVgpuInstanceGetType sync.RWMutex - lockVgpuInstanceGetUUID sync.RWMutex - lockVgpuInstanceGetVmDriverVersion sync.RWMutex - lockVgpuInstanceGetVmID sync.RWMutex - lockVgpuInstanceSetEncoderCapacity sync.RWMutex - lockVgpuTypeGetCapabilities sync.RWMutex - lockVgpuTypeGetClass sync.RWMutex - lockVgpuTypeGetDeviceID sync.RWMutex - lockVgpuTypeGetFrameRateLimit sync.RWMutex - lockVgpuTypeGetFramebufferSize sync.RWMutex - lockVgpuTypeGetGpuInstanceProfileId sync.RWMutex - lockVgpuTypeGetLicense sync.RWMutex - lockVgpuTypeGetMaxInstances sync.RWMutex - lockVgpuTypeGetMaxInstancesPerVm sync.RWMutex - lockVgpuTypeGetName sync.RWMutex - lockVgpuTypeGetNumDisplayHeads sync.RWMutex - lockVgpuTypeGetResolution sync.RWMutex + lockComputeInstanceDestroy sync.RWMutex + lockComputeInstanceGetInfo sync.RWMutex + lockDeviceClearAccountingPids sync.RWMutex + lockDeviceClearCpuAffinity sync.RWMutex + lockDeviceClearEccErrorCounts sync.RWMutex + lockDeviceClearFieldValues sync.RWMutex + lockDeviceCreateGpuInstance sync.RWMutex + lockDeviceCreateGpuInstanceWithPlacement sync.RWMutex + lockDeviceDiscoverGpus sync.RWMutex + lockDeviceFreezeNvLinkUtilizationCounter sync.RWMutex + lockDeviceGetAPIRestriction sync.RWMutex + lockDeviceGetAccountingBufferSize sync.RWMutex + lockDeviceGetAccountingMode sync.RWMutex + lockDeviceGetAccountingPids sync.RWMutex + lockDeviceGetAccountingStats sync.RWMutex + lockDeviceGetActiveVgpus sync.RWMutex + lockDeviceGetAdaptiveClockInfoStatus sync.RWMutex + lockDeviceGetApplicationsClock sync.RWMutex + lockDeviceGetArchitecture sync.RWMutex + lockDeviceGetAttributes sync.RWMutex + lockDeviceGetAutoBoostedClocksEnabled sync.RWMutex + lockDeviceGetBAR1MemoryInfo sync.RWMutex + lockDeviceGetBoardId sync.RWMutex + lockDeviceGetBoardPartNumber sync.RWMutex + lockDeviceGetBrand sync.RWMutex + lockDeviceGetBridgeChipInfo sync.RWMutex + lockDeviceGetBusType sync.RWMutex + lockDeviceGetC2cModeInfoV sync.RWMutex + lockDeviceGetCapabilities sync.RWMutex + lockDeviceGetClkMonStatus sync.RWMutex + lockDeviceGetClock sync.RWMutex + lockDeviceGetClockInfo sync.RWMutex + lockDeviceGetClockOffsets sync.RWMutex + lockDeviceGetComputeInstanceId sync.RWMutex + lockDeviceGetComputeMode sync.RWMutex + lockDeviceGetComputeRunningProcesses sync.RWMutex + lockDeviceGetConfComputeGpuAttestationReport sync.RWMutex + lockDeviceGetConfComputeGpuCertificate sync.RWMutex + lockDeviceGetConfComputeMemSizeInfo sync.RWMutex + lockDeviceGetConfComputeProtectedMemoryUsage sync.RWMutex + lockDeviceGetCoolerInfo sync.RWMutex + lockDeviceGetCount sync.RWMutex + lockDeviceGetCpuAffinity sync.RWMutex + lockDeviceGetCpuAffinityWithinScope sync.RWMutex + lockDeviceGetCreatableVgpus sync.RWMutex + lockDeviceGetCudaComputeCapability sync.RWMutex + lockDeviceGetCurrPcieLinkGeneration sync.RWMutex + lockDeviceGetCurrPcieLinkWidth sync.RWMutex + lockDeviceGetCurrentClockFreqs sync.RWMutex + lockDeviceGetCurrentClocksEventReasons sync.RWMutex + lockDeviceGetCurrentClocksThrottleReasons sync.RWMutex + lockDeviceGetDecoderUtilization sync.RWMutex + lockDeviceGetDefaultApplicationsClock sync.RWMutex + lockDeviceGetDefaultEccMode sync.RWMutex + lockDeviceGetDetailedEccErrors sync.RWMutex + lockDeviceGetDeviceHandleFromMigDeviceHandle sync.RWMutex + lockDeviceGetDisplayActive sync.RWMutex + lockDeviceGetDisplayMode sync.RWMutex + lockDeviceGetDramEncryptionMode sync.RWMutex + lockDeviceGetDriverModel sync.RWMutex + lockDeviceGetDriverModel_v2 sync.RWMutex + lockDeviceGetDynamicPstatesInfo sync.RWMutex + lockDeviceGetEccMode sync.RWMutex + lockDeviceGetEncoderCapacity sync.RWMutex + lockDeviceGetEncoderSessions sync.RWMutex + lockDeviceGetEncoderStats sync.RWMutex + lockDeviceGetEncoderUtilization sync.RWMutex + lockDeviceGetEnforcedPowerLimit sync.RWMutex + lockDeviceGetFBCSessions sync.RWMutex + lockDeviceGetFBCStats sync.RWMutex + lockDeviceGetFanControlPolicy_v2 sync.RWMutex + lockDeviceGetFanSpeed sync.RWMutex + lockDeviceGetFanSpeedRPM sync.RWMutex + lockDeviceGetFanSpeed_v2 sync.RWMutex + lockDeviceGetFieldValues sync.RWMutex + lockDeviceGetGpcClkMinMaxVfOffset sync.RWMutex + lockDeviceGetGpcClkVfOffset sync.RWMutex + lockDeviceGetGpuFabricInfo sync.RWMutex + lockDeviceGetGpuFabricInfoV sync.RWMutex + lockDeviceGetGpuInstanceById sync.RWMutex + lockDeviceGetGpuInstanceId sync.RWMutex + lockDeviceGetGpuInstancePossiblePlacements sync.RWMutex + lockDeviceGetGpuInstanceProfileInfo sync.RWMutex + lockDeviceGetGpuInstanceProfileInfoV sync.RWMutex + lockDeviceGetGpuInstanceRemainingCapacity sync.RWMutex + lockDeviceGetGpuInstances sync.RWMutex + lockDeviceGetGpuMaxPcieLinkGeneration sync.RWMutex + lockDeviceGetGpuOperationMode sync.RWMutex + lockDeviceGetGraphicsRunningProcesses sync.RWMutex + lockDeviceGetGridLicensableFeatures sync.RWMutex + lockDeviceGetGspFirmwareMode sync.RWMutex + lockDeviceGetGspFirmwareVersion sync.RWMutex + lockDeviceGetHandleByIndex sync.RWMutex + lockDeviceGetHandleByPciBusId sync.RWMutex + lockDeviceGetHandleBySerial sync.RWMutex + lockDeviceGetHandleByUUID sync.RWMutex + lockDeviceGetHandleByUUIDV sync.RWMutex + lockDeviceGetHostVgpuMode sync.RWMutex + lockDeviceGetIndex sync.RWMutex + lockDeviceGetInforomConfigurationChecksum sync.RWMutex + lockDeviceGetInforomImageVersion sync.RWMutex + lockDeviceGetInforomVersion sync.RWMutex + lockDeviceGetIrqNum sync.RWMutex + lockDeviceGetJpgUtilization sync.RWMutex + lockDeviceGetLastBBXFlushTime sync.RWMutex + lockDeviceGetMPSComputeRunningProcesses sync.RWMutex + lockDeviceGetMarginTemperature sync.RWMutex + lockDeviceGetMaxClockInfo sync.RWMutex + lockDeviceGetMaxCustomerBoostClock sync.RWMutex + lockDeviceGetMaxMigDeviceCount sync.RWMutex + lockDeviceGetMaxPcieLinkGeneration sync.RWMutex + lockDeviceGetMaxPcieLinkWidth sync.RWMutex + lockDeviceGetMemClkMinMaxVfOffset sync.RWMutex + lockDeviceGetMemClkVfOffset sync.RWMutex + lockDeviceGetMemoryAffinity sync.RWMutex + lockDeviceGetMemoryBusWidth sync.RWMutex + lockDeviceGetMemoryErrorCounter sync.RWMutex + lockDeviceGetMemoryInfo sync.RWMutex + lockDeviceGetMemoryInfo_v2 sync.RWMutex + lockDeviceGetMigDeviceHandleByIndex sync.RWMutex + lockDeviceGetMigMode sync.RWMutex + lockDeviceGetMinMaxClockOfPState sync.RWMutex + lockDeviceGetMinMaxFanSpeed sync.RWMutex + lockDeviceGetMinorNumber sync.RWMutex + lockDeviceGetModuleId sync.RWMutex + lockDeviceGetMultiGpuBoard sync.RWMutex + lockDeviceGetName sync.RWMutex + lockDeviceGetNumFans sync.RWMutex + lockDeviceGetNumGpuCores sync.RWMutex + lockDeviceGetNumaNodeId sync.RWMutex + lockDeviceGetNvLinkCapability sync.RWMutex + lockDeviceGetNvLinkErrorCounter sync.RWMutex + lockDeviceGetNvLinkRemoteDeviceType sync.RWMutex + lockDeviceGetNvLinkRemotePciInfo sync.RWMutex + lockDeviceGetNvLinkState sync.RWMutex + lockDeviceGetNvLinkUtilizationControl sync.RWMutex + lockDeviceGetNvLinkUtilizationCounter sync.RWMutex + lockDeviceGetNvLinkVersion sync.RWMutex + lockDeviceGetNvlinkBwMode sync.RWMutex + lockDeviceGetNvlinkSupportedBwModes sync.RWMutex + lockDeviceGetOfaUtilization sync.RWMutex + lockDeviceGetP2PStatus sync.RWMutex + lockDeviceGetPciInfo sync.RWMutex + lockDeviceGetPciInfoExt sync.RWMutex + lockDeviceGetPcieLinkMaxSpeed sync.RWMutex + lockDeviceGetPcieReplayCounter sync.RWMutex + lockDeviceGetPcieSpeed sync.RWMutex + lockDeviceGetPcieThroughput sync.RWMutex + lockDeviceGetPerformanceModes sync.RWMutex + lockDeviceGetPerformanceState sync.RWMutex + lockDeviceGetPersistenceMode sync.RWMutex + lockDeviceGetPgpuMetadataString sync.RWMutex + lockDeviceGetPlatformInfo sync.RWMutex + lockDeviceGetPowerManagementDefaultLimit sync.RWMutex + lockDeviceGetPowerManagementLimit sync.RWMutex + lockDeviceGetPowerManagementLimitConstraints sync.RWMutex + lockDeviceGetPowerManagementMode sync.RWMutex + lockDeviceGetPowerSource sync.RWMutex + lockDeviceGetPowerState sync.RWMutex + lockDeviceGetPowerUsage sync.RWMutex + lockDeviceGetProcessUtilization sync.RWMutex + lockDeviceGetProcessesUtilizationInfo sync.RWMutex + lockDeviceGetRemappedRows sync.RWMutex + lockDeviceGetRetiredPages sync.RWMutex + lockDeviceGetRetiredPagesPendingStatus sync.RWMutex + lockDeviceGetRetiredPages_v2 sync.RWMutex + lockDeviceGetRowRemapperHistogram sync.RWMutex + lockDeviceGetRunningProcessDetailList sync.RWMutex + lockDeviceGetSamples sync.RWMutex + lockDeviceGetSerial sync.RWMutex + lockDeviceGetSramEccErrorStatus sync.RWMutex + lockDeviceGetSupportedClocksEventReasons sync.RWMutex + lockDeviceGetSupportedClocksThrottleReasons sync.RWMutex + lockDeviceGetSupportedEventTypes sync.RWMutex + lockDeviceGetSupportedGraphicsClocks sync.RWMutex + lockDeviceGetSupportedMemoryClocks sync.RWMutex + lockDeviceGetSupportedPerformanceStates sync.RWMutex + lockDeviceGetSupportedVgpus sync.RWMutex + lockDeviceGetTargetFanSpeed sync.RWMutex + lockDeviceGetTemperature sync.RWMutex + lockDeviceGetTemperatureThreshold sync.RWMutex + lockDeviceGetTemperatureV sync.RWMutex + lockDeviceGetThermalSettings sync.RWMutex + lockDeviceGetTopologyCommonAncestor sync.RWMutex + lockDeviceGetTopologyNearestGpus sync.RWMutex + lockDeviceGetTotalEccErrors sync.RWMutex + lockDeviceGetTotalEnergyConsumption sync.RWMutex + lockDeviceGetUUID sync.RWMutex + lockDeviceGetUtilizationRates sync.RWMutex + lockDeviceGetVbiosVersion sync.RWMutex + lockDeviceGetVgpuCapabilities sync.RWMutex + lockDeviceGetVgpuHeterogeneousMode sync.RWMutex + lockDeviceGetVgpuInstancesUtilizationInfo sync.RWMutex + lockDeviceGetVgpuMetadata sync.RWMutex + lockDeviceGetVgpuProcessUtilization sync.RWMutex + lockDeviceGetVgpuProcessesUtilizationInfo sync.RWMutex + lockDeviceGetVgpuSchedulerCapabilities sync.RWMutex + lockDeviceGetVgpuSchedulerLog sync.RWMutex + lockDeviceGetVgpuSchedulerState sync.RWMutex + lockDeviceGetVgpuTypeCreatablePlacements sync.RWMutex + lockDeviceGetVgpuTypeSupportedPlacements sync.RWMutex + lockDeviceGetVgpuUtilization sync.RWMutex + lockDeviceGetViolationStatus sync.RWMutex + lockDeviceGetVirtualizationMode sync.RWMutex + lockDeviceIsMigDeviceHandle sync.RWMutex + lockDeviceModifyDrainState sync.RWMutex + lockDeviceOnSameBoard sync.RWMutex + lockDevicePowerSmoothingActivatePresetProfile sync.RWMutex + lockDevicePowerSmoothingSetState sync.RWMutex + lockDevicePowerSmoothingUpdatePresetProfileParam sync.RWMutex + lockDeviceQueryDrainState sync.RWMutex + lockDeviceRegisterEvents sync.RWMutex + lockDeviceRemoveGpu sync.RWMutex + lockDeviceRemoveGpu_v2 sync.RWMutex + lockDeviceResetApplicationsClocks sync.RWMutex + lockDeviceResetGpuLockedClocks sync.RWMutex + lockDeviceResetMemoryLockedClocks sync.RWMutex + lockDeviceResetNvLinkErrorCounters sync.RWMutex + lockDeviceResetNvLinkUtilizationCounter sync.RWMutex + lockDeviceSetAPIRestriction sync.RWMutex + lockDeviceSetAccountingMode sync.RWMutex + lockDeviceSetApplicationsClocks sync.RWMutex + lockDeviceSetAutoBoostedClocksEnabled sync.RWMutex + lockDeviceSetClockOffsets sync.RWMutex + lockDeviceSetComputeMode sync.RWMutex + lockDeviceSetConfComputeUnprotectedMemSize sync.RWMutex + lockDeviceSetCpuAffinity sync.RWMutex + lockDeviceSetDefaultAutoBoostedClocksEnabled sync.RWMutex + lockDeviceSetDefaultFanSpeed_v2 sync.RWMutex + lockDeviceSetDramEncryptionMode sync.RWMutex + lockDeviceSetDriverModel sync.RWMutex + lockDeviceSetEccMode sync.RWMutex + lockDeviceSetFanControlPolicy sync.RWMutex + lockDeviceSetFanSpeed_v2 sync.RWMutex + lockDeviceSetGpcClkVfOffset sync.RWMutex + lockDeviceSetGpuLockedClocks sync.RWMutex + lockDeviceSetGpuOperationMode sync.RWMutex + lockDeviceSetMemClkVfOffset sync.RWMutex + lockDeviceSetMemoryLockedClocks sync.RWMutex + lockDeviceSetMigMode sync.RWMutex + lockDeviceSetNvLinkDeviceLowPowerThreshold sync.RWMutex + lockDeviceSetNvLinkUtilizationControl sync.RWMutex + lockDeviceSetNvlinkBwMode sync.RWMutex + lockDeviceSetPersistenceMode sync.RWMutex + lockDeviceSetPowerManagementLimit sync.RWMutex + lockDeviceSetPowerManagementLimit_v2 sync.RWMutex + lockDeviceSetTemperatureThreshold sync.RWMutex + lockDeviceSetVgpuCapabilities sync.RWMutex + lockDeviceSetVgpuHeterogeneousMode sync.RWMutex + lockDeviceSetVgpuSchedulerState sync.RWMutex + lockDeviceSetVirtualizationMode sync.RWMutex + lockDeviceValidateInforom sync.RWMutex + lockDeviceWorkloadPowerProfileClearRequestedProfiles sync.RWMutex + lockDeviceWorkloadPowerProfileGetCurrentProfiles sync.RWMutex + lockDeviceWorkloadPowerProfileGetProfilesInfo sync.RWMutex + lockDeviceWorkloadPowerProfileSetRequestedProfiles sync.RWMutex + lockErrorString sync.RWMutex + lockEventSetCreate sync.RWMutex + lockEventSetFree sync.RWMutex + lockEventSetWait sync.RWMutex + lockExtensions sync.RWMutex + lockGetExcludedDeviceCount sync.RWMutex + lockGetExcludedDeviceInfoByIndex sync.RWMutex + lockGetVgpuCompatibility sync.RWMutex + lockGetVgpuDriverCapabilities sync.RWMutex + lockGetVgpuVersion sync.RWMutex + lockGpmMetricsGet sync.RWMutex + lockGpmMetricsGetV sync.RWMutex + lockGpmMigSampleGet sync.RWMutex + lockGpmQueryDeviceSupport sync.RWMutex + lockGpmQueryDeviceSupportV sync.RWMutex + lockGpmQueryIfStreamingEnabled sync.RWMutex + lockGpmSampleAlloc sync.RWMutex + lockGpmSampleFree sync.RWMutex + lockGpmSampleGet sync.RWMutex + lockGpmSetStreamingEnabled sync.RWMutex + lockGpuInstanceCreateComputeInstance sync.RWMutex + lockGpuInstanceCreateComputeInstanceWithPlacement sync.RWMutex + lockGpuInstanceDestroy sync.RWMutex + lockGpuInstanceGetActiveVgpus sync.RWMutex + lockGpuInstanceGetComputeInstanceById sync.RWMutex + lockGpuInstanceGetComputeInstancePossiblePlacements sync.RWMutex + lockGpuInstanceGetComputeInstanceProfileInfo sync.RWMutex + lockGpuInstanceGetComputeInstanceProfileInfoV sync.RWMutex + lockGpuInstanceGetComputeInstanceRemainingCapacity sync.RWMutex + lockGpuInstanceGetComputeInstances sync.RWMutex + lockGpuInstanceGetCreatableVgpus sync.RWMutex + lockGpuInstanceGetInfo sync.RWMutex + lockGpuInstanceGetVgpuHeterogeneousMode sync.RWMutex + lockGpuInstanceGetVgpuSchedulerLog sync.RWMutex + lockGpuInstanceGetVgpuSchedulerState sync.RWMutex + lockGpuInstanceGetVgpuTypeCreatablePlacements sync.RWMutex + lockGpuInstanceSetVgpuHeterogeneousMode sync.RWMutex + lockGpuInstanceSetVgpuSchedulerState sync.RWMutex + lockInit sync.RWMutex + lockInitWithFlags sync.RWMutex + lockSetVgpuVersion sync.RWMutex + lockShutdown sync.RWMutex + lockSystemEventSetCreate sync.RWMutex + lockSystemEventSetFree sync.RWMutex + lockSystemEventSetWait sync.RWMutex + lockSystemGetConfComputeCapabilities sync.RWMutex + lockSystemGetConfComputeGpusReadyState sync.RWMutex + lockSystemGetConfComputeKeyRotationThresholdInfo sync.RWMutex + lockSystemGetConfComputeSettings sync.RWMutex + lockSystemGetConfComputeState sync.RWMutex + lockSystemGetCudaDriverVersion sync.RWMutex + lockSystemGetCudaDriverVersion_v2 sync.RWMutex + lockSystemGetDriverBranch sync.RWMutex + lockSystemGetDriverVersion sync.RWMutex + lockSystemGetHicVersion sync.RWMutex + lockSystemGetNVMLVersion sync.RWMutex + lockSystemGetNvlinkBwMode sync.RWMutex + lockSystemGetProcessName sync.RWMutex + lockSystemGetTopologyGpuSet sync.RWMutex + lockSystemRegisterEvents sync.RWMutex + lockSystemSetConfComputeGpusReadyState sync.RWMutex + lockSystemSetConfComputeKeyRotationThresholdInfo sync.RWMutex + lockSystemSetNvlinkBwMode sync.RWMutex + lockUnitGetCount sync.RWMutex + lockUnitGetDevices sync.RWMutex + lockUnitGetFanSpeedInfo sync.RWMutex + lockUnitGetHandleByIndex sync.RWMutex + lockUnitGetLedState sync.RWMutex + lockUnitGetPsuInfo sync.RWMutex + lockUnitGetTemperature sync.RWMutex + lockUnitGetUnitInfo sync.RWMutex + lockUnitSetLedState sync.RWMutex + lockVgpuInstanceClearAccountingPids sync.RWMutex + lockVgpuInstanceGetAccountingMode sync.RWMutex + lockVgpuInstanceGetAccountingPids sync.RWMutex + lockVgpuInstanceGetAccountingStats sync.RWMutex + lockVgpuInstanceGetEccMode sync.RWMutex + lockVgpuInstanceGetEncoderCapacity sync.RWMutex + lockVgpuInstanceGetEncoderSessions sync.RWMutex + lockVgpuInstanceGetEncoderStats sync.RWMutex + lockVgpuInstanceGetFBCSessions sync.RWMutex + lockVgpuInstanceGetFBCStats sync.RWMutex + lockVgpuInstanceGetFbUsage sync.RWMutex + lockVgpuInstanceGetFrameRateLimit sync.RWMutex + lockVgpuInstanceGetGpuInstanceId sync.RWMutex + lockVgpuInstanceGetGpuPciId sync.RWMutex + lockVgpuInstanceGetLicenseInfo sync.RWMutex + lockVgpuInstanceGetLicenseStatus sync.RWMutex + lockVgpuInstanceGetMdevUUID sync.RWMutex + lockVgpuInstanceGetMetadata sync.RWMutex + lockVgpuInstanceGetRuntimeStateSize sync.RWMutex + lockVgpuInstanceGetType sync.RWMutex + lockVgpuInstanceGetUUID sync.RWMutex + lockVgpuInstanceGetVmDriverVersion sync.RWMutex + lockVgpuInstanceGetVmID sync.RWMutex + lockVgpuInstanceSetEncoderCapacity sync.RWMutex + lockVgpuTypeGetBAR1Info sync.RWMutex + lockVgpuTypeGetCapabilities sync.RWMutex + lockVgpuTypeGetClass sync.RWMutex + lockVgpuTypeGetDeviceID sync.RWMutex + lockVgpuTypeGetFrameRateLimit sync.RWMutex + lockVgpuTypeGetFramebufferSize sync.RWMutex + lockVgpuTypeGetGpuInstanceProfileId sync.RWMutex + lockVgpuTypeGetLicense sync.RWMutex + lockVgpuTypeGetMaxInstances sync.RWMutex + lockVgpuTypeGetMaxInstancesPerGpuInstance sync.RWMutex + lockVgpuTypeGetMaxInstancesPerVm sync.RWMutex + lockVgpuTypeGetName sync.RWMutex + lockVgpuTypeGetNumDisplayHeads sync.RWMutex + lockVgpuTypeGetResolution sync.RWMutex } // ComputeInstanceDestroy calls ComputeInstanceDestroyFunc. @@ -5081,6 +5633,38 @@ func (mock *Interface) DeviceGetC2cModeInfoVCalls() []struct { return calls } +// DeviceGetCapabilities calls DeviceGetCapabilitiesFunc. +func (mock *Interface) DeviceGetCapabilities(device nvml.Device) (nvml.DeviceCapabilities, nvml.Return) { + if mock.DeviceGetCapabilitiesFunc == nil { + panic("Interface.DeviceGetCapabilitiesFunc: method is nil but Interface.DeviceGetCapabilities was just called") + } + callInfo := struct { + Device nvml.Device + }{ + Device: device, + } + mock.lockDeviceGetCapabilities.Lock() + mock.calls.DeviceGetCapabilities = append(mock.calls.DeviceGetCapabilities, callInfo) + mock.lockDeviceGetCapabilities.Unlock() + return mock.DeviceGetCapabilitiesFunc(device) +} + +// DeviceGetCapabilitiesCalls gets all the calls that were made to DeviceGetCapabilities. +// Check the length with: +// +// len(mockedInterface.DeviceGetCapabilitiesCalls()) +func (mock *Interface) DeviceGetCapabilitiesCalls() []struct { + Device nvml.Device +} { + var calls []struct { + Device nvml.Device + } + mock.lockDeviceGetCapabilities.RLock() + calls = mock.calls.DeviceGetCapabilities + mock.lockDeviceGetCapabilities.RUnlock() + return calls +} + // DeviceGetClkMonStatus calls DeviceGetClkMonStatusFunc. func (mock *Interface) DeviceGetClkMonStatus(device nvml.Device) (nvml.ClkMonStatus, nvml.Return) { if mock.DeviceGetClkMonStatusFunc == nil { @@ -5189,6 +5773,38 @@ func (mock *Interface) DeviceGetClockInfoCalls() []struct { return calls } +// DeviceGetClockOffsets calls DeviceGetClockOffsetsFunc. +func (mock *Interface) DeviceGetClockOffsets(device nvml.Device) (nvml.ClockOffset, nvml.Return) { + if mock.DeviceGetClockOffsetsFunc == nil { + panic("Interface.DeviceGetClockOffsetsFunc: method is nil but Interface.DeviceGetClockOffsets was just called") + } + callInfo := struct { + Device nvml.Device + }{ + Device: device, + } + mock.lockDeviceGetClockOffsets.Lock() + mock.calls.DeviceGetClockOffsets = append(mock.calls.DeviceGetClockOffsets, callInfo) + mock.lockDeviceGetClockOffsets.Unlock() + return mock.DeviceGetClockOffsetsFunc(device) +} + +// DeviceGetClockOffsetsCalls gets all the calls that were made to DeviceGetClockOffsets. +// Check the length with: +// +// len(mockedInterface.DeviceGetClockOffsetsCalls()) +func (mock *Interface) DeviceGetClockOffsetsCalls() []struct { + Device nvml.Device +} { + var calls []struct { + Device nvml.Device + } + mock.lockDeviceGetClockOffsets.RLock() + calls = mock.calls.DeviceGetClockOffsets + mock.lockDeviceGetClockOffsets.RUnlock() + return calls +} + // DeviceGetComputeInstanceId calls DeviceGetComputeInstanceIdFunc. func (mock *Interface) DeviceGetComputeInstanceId(device nvml.Device) (int, nvml.Return) { if mock.DeviceGetComputeInstanceIdFunc == nil { @@ -5413,20 +6029,52 @@ func (mock *Interface) DeviceGetConfComputeProtectedMemoryUsageCalls() []struct return calls } -// DeviceGetCount calls DeviceGetCountFunc. -func (mock *Interface) DeviceGetCount() (int, nvml.Return) { - if mock.DeviceGetCountFunc == nil { - panic("Interface.DeviceGetCountFunc: method is nil but Interface.DeviceGetCount was just called") +// DeviceGetCoolerInfo calls DeviceGetCoolerInfoFunc. +func (mock *Interface) DeviceGetCoolerInfo(device nvml.Device) (nvml.CoolerInfo, nvml.Return) { + if mock.DeviceGetCoolerInfoFunc == nil { + panic("Interface.DeviceGetCoolerInfoFunc: method is nil but Interface.DeviceGetCoolerInfo was just called") } callInfo := struct { - }{} - mock.lockDeviceGetCount.Lock() - mock.calls.DeviceGetCount = append(mock.calls.DeviceGetCount, callInfo) - mock.lockDeviceGetCount.Unlock() - return mock.DeviceGetCountFunc() + Device nvml.Device + }{ + Device: device, + } + mock.lockDeviceGetCoolerInfo.Lock() + mock.calls.DeviceGetCoolerInfo = append(mock.calls.DeviceGetCoolerInfo, callInfo) + mock.lockDeviceGetCoolerInfo.Unlock() + return mock.DeviceGetCoolerInfoFunc(device) } -// DeviceGetCountCalls gets all the calls that were made to DeviceGetCount. +// DeviceGetCoolerInfoCalls gets all the calls that were made to DeviceGetCoolerInfo. +// Check the length with: +// +// len(mockedInterface.DeviceGetCoolerInfoCalls()) +func (mock *Interface) DeviceGetCoolerInfoCalls() []struct { + Device nvml.Device +} { + var calls []struct { + Device nvml.Device + } + mock.lockDeviceGetCoolerInfo.RLock() + calls = mock.calls.DeviceGetCoolerInfo + mock.lockDeviceGetCoolerInfo.RUnlock() + return calls +} + +// DeviceGetCount calls DeviceGetCountFunc. +func (mock *Interface) DeviceGetCount() (int, nvml.Return) { + if mock.DeviceGetCountFunc == nil { + panic("Interface.DeviceGetCountFunc: method is nil but Interface.DeviceGetCount was just called") + } + callInfo := struct { + }{} + mock.lockDeviceGetCount.Lock() + mock.calls.DeviceGetCount = append(mock.calls.DeviceGetCount, callInfo) + mock.lockDeviceGetCount.Unlock() + return mock.DeviceGetCountFunc() +} + +// DeviceGetCountCalls gets all the calls that were made to DeviceGetCount. // Check the length with: // // len(mockedInterface.DeviceGetCountCalls()) @@ -5644,6 +6292,38 @@ func (mock *Interface) DeviceGetCurrPcieLinkWidthCalls() []struct { return calls } +// DeviceGetCurrentClockFreqs calls DeviceGetCurrentClockFreqsFunc. +func (mock *Interface) DeviceGetCurrentClockFreqs(device nvml.Device) (nvml.DeviceCurrentClockFreqs, nvml.Return) { + if mock.DeviceGetCurrentClockFreqsFunc == nil { + panic("Interface.DeviceGetCurrentClockFreqsFunc: method is nil but Interface.DeviceGetCurrentClockFreqs was just called") + } + callInfo := struct { + Device nvml.Device + }{ + Device: device, + } + mock.lockDeviceGetCurrentClockFreqs.Lock() + mock.calls.DeviceGetCurrentClockFreqs = append(mock.calls.DeviceGetCurrentClockFreqs, callInfo) + mock.lockDeviceGetCurrentClockFreqs.Unlock() + return mock.DeviceGetCurrentClockFreqsFunc(device) +} + +// DeviceGetCurrentClockFreqsCalls gets all the calls that were made to DeviceGetCurrentClockFreqs. +// Check the length with: +// +// len(mockedInterface.DeviceGetCurrentClockFreqsCalls()) +func (mock *Interface) DeviceGetCurrentClockFreqsCalls() []struct { + Device nvml.Device +} { + var calls []struct { + Device nvml.Device + } + mock.lockDeviceGetCurrentClockFreqs.RLock() + calls = mock.calls.DeviceGetCurrentClockFreqs + mock.lockDeviceGetCurrentClockFreqs.RUnlock() + return calls +} + // DeviceGetCurrentClocksEventReasons calls DeviceGetCurrentClocksEventReasonsFunc. func (mock *Interface) DeviceGetCurrentClocksEventReasons(device nvml.Device) (uint64, nvml.Return) { if mock.DeviceGetCurrentClocksEventReasonsFunc == nil { @@ -5944,6 +6624,38 @@ func (mock *Interface) DeviceGetDisplayModeCalls() []struct { return calls } +// DeviceGetDramEncryptionMode calls DeviceGetDramEncryptionModeFunc. +func (mock *Interface) DeviceGetDramEncryptionMode(device nvml.Device) (nvml.DramEncryptionInfo, nvml.DramEncryptionInfo, nvml.Return) { + if mock.DeviceGetDramEncryptionModeFunc == nil { + panic("Interface.DeviceGetDramEncryptionModeFunc: method is nil but Interface.DeviceGetDramEncryptionMode was just called") + } + callInfo := struct { + Device nvml.Device + }{ + Device: device, + } + mock.lockDeviceGetDramEncryptionMode.Lock() + mock.calls.DeviceGetDramEncryptionMode = append(mock.calls.DeviceGetDramEncryptionMode, callInfo) + mock.lockDeviceGetDramEncryptionMode.Unlock() + return mock.DeviceGetDramEncryptionModeFunc(device) +} + +// DeviceGetDramEncryptionModeCalls gets all the calls that were made to DeviceGetDramEncryptionMode. +// Check the length with: +// +// len(mockedInterface.DeviceGetDramEncryptionModeCalls()) +func (mock *Interface) DeviceGetDramEncryptionModeCalls() []struct { + Device nvml.Device +} { + var calls []struct { + Device nvml.Device + } + mock.lockDeviceGetDramEncryptionMode.RLock() + calls = mock.calls.DeviceGetDramEncryptionMode + mock.lockDeviceGetDramEncryptionMode.RUnlock() + return calls +} + // DeviceGetDriverModel calls DeviceGetDriverModelFunc. func (mock *Interface) DeviceGetDriverModel(device nvml.Device) (nvml.DriverModel, nvml.DriverModel, nvml.Return) { if mock.DeviceGetDriverModelFunc == nil { @@ -5976,6 +6688,38 @@ func (mock *Interface) DeviceGetDriverModelCalls() []struct { return calls } +// DeviceGetDriverModel_v2 calls DeviceGetDriverModel_v2Func. +func (mock *Interface) DeviceGetDriverModel_v2(device nvml.Device) (nvml.DriverModel, nvml.DriverModel, nvml.Return) { + if mock.DeviceGetDriverModel_v2Func == nil { + panic("Interface.DeviceGetDriverModel_v2Func: method is nil but Interface.DeviceGetDriverModel_v2 was just called") + } + callInfo := struct { + Device nvml.Device + }{ + Device: device, + } + mock.lockDeviceGetDriverModel_v2.Lock() + mock.calls.DeviceGetDriverModel_v2 = append(mock.calls.DeviceGetDriverModel_v2, callInfo) + mock.lockDeviceGetDriverModel_v2.Unlock() + return mock.DeviceGetDriverModel_v2Func(device) +} + +// DeviceGetDriverModel_v2Calls gets all the calls that were made to DeviceGetDriverModel_v2. +// Check the length with: +// +// len(mockedInterface.DeviceGetDriverModel_v2Calls()) +func (mock *Interface) DeviceGetDriverModel_v2Calls() []struct { + Device nvml.Device +} { + var calls []struct { + Device nvml.Device + } + mock.lockDeviceGetDriverModel_v2.RLock() + calls = mock.calls.DeviceGetDriverModel_v2 + mock.lockDeviceGetDriverModel_v2.RUnlock() + return calls +} + // DeviceGetDynamicPstatesInfo calls DeviceGetDynamicPstatesInfoFunc. func (mock *Interface) DeviceGetDynamicPstatesInfo(device nvml.Device) (nvml.GpuDynamicPstatesInfo, nvml.Return) { if mock.DeviceGetDynamicPstatesInfoFunc == nil { @@ -6336,6 +7080,38 @@ func (mock *Interface) DeviceGetFanSpeedCalls() []struct { return calls } +// DeviceGetFanSpeedRPM calls DeviceGetFanSpeedRPMFunc. +func (mock *Interface) DeviceGetFanSpeedRPM(device nvml.Device) (nvml.FanSpeedInfo, nvml.Return) { + if mock.DeviceGetFanSpeedRPMFunc == nil { + panic("Interface.DeviceGetFanSpeedRPMFunc: method is nil but Interface.DeviceGetFanSpeedRPM was just called") + } + callInfo := struct { + Device nvml.Device + }{ + Device: device, + } + mock.lockDeviceGetFanSpeedRPM.Lock() + mock.calls.DeviceGetFanSpeedRPM = append(mock.calls.DeviceGetFanSpeedRPM, callInfo) + mock.lockDeviceGetFanSpeedRPM.Unlock() + return mock.DeviceGetFanSpeedRPMFunc(device) +} + +// DeviceGetFanSpeedRPMCalls gets all the calls that were made to DeviceGetFanSpeedRPM. +// Check the length with: +// +// len(mockedInterface.DeviceGetFanSpeedRPMCalls()) +func (mock *Interface) DeviceGetFanSpeedRPMCalls() []struct { + Device nvml.Device +} { + var calls []struct { + Device nvml.Device + } + mock.lockDeviceGetFanSpeedRPM.RLock() + calls = mock.calls.DeviceGetFanSpeedRPM + mock.lockDeviceGetFanSpeedRPM.RUnlock() + return calls +} + // DeviceGetFanSpeed_v2 calls DeviceGetFanSpeed_v2Func. func (mock *Interface) DeviceGetFanSpeed_v2(device nvml.Device, n int) (uint32, nvml.Return) { if mock.DeviceGetFanSpeed_v2Func == nil { @@ -7104,6 +7880,38 @@ func (mock *Interface) DeviceGetHandleByUUIDCalls() []struct { return calls } +// DeviceGetHandleByUUIDV calls DeviceGetHandleByUUIDVFunc. +func (mock *Interface) DeviceGetHandleByUUIDV(uUID *nvml.UUID) (nvml.Device, nvml.Return) { + if mock.DeviceGetHandleByUUIDVFunc == nil { + panic("Interface.DeviceGetHandleByUUIDVFunc: method is nil but Interface.DeviceGetHandleByUUIDV was just called") + } + callInfo := struct { + UUID *nvml.UUID + }{ + UUID: uUID, + } + mock.lockDeviceGetHandleByUUIDV.Lock() + mock.calls.DeviceGetHandleByUUIDV = append(mock.calls.DeviceGetHandleByUUIDV, callInfo) + mock.lockDeviceGetHandleByUUIDV.Unlock() + return mock.DeviceGetHandleByUUIDVFunc(uUID) +} + +// DeviceGetHandleByUUIDVCalls gets all the calls that were made to DeviceGetHandleByUUIDV. +// Check the length with: +// +// len(mockedInterface.DeviceGetHandleByUUIDVCalls()) +func (mock *Interface) DeviceGetHandleByUUIDVCalls() []struct { + UUID *nvml.UUID +} { + var calls []struct { + UUID *nvml.UUID + } + mock.lockDeviceGetHandleByUUIDV.RLock() + calls = mock.calls.DeviceGetHandleByUUIDV + mock.lockDeviceGetHandleByUUIDV.RUnlock() + return calls +} + // DeviceGetHostVgpuMode calls DeviceGetHostVgpuModeFunc. func (mock *Interface) DeviceGetHostVgpuMode(device nvml.Device) (nvml.HostVgpuMode, nvml.Return) { if mock.DeviceGetHostVgpuModeFunc == nil { @@ -7396,6 +8204,38 @@ func (mock *Interface) DeviceGetMPSComputeRunningProcessesCalls() []struct { return calls } +// DeviceGetMarginTemperature calls DeviceGetMarginTemperatureFunc. +func (mock *Interface) DeviceGetMarginTemperature(device nvml.Device) (nvml.MarginTemperature, nvml.Return) { + if mock.DeviceGetMarginTemperatureFunc == nil { + panic("Interface.DeviceGetMarginTemperatureFunc: method is nil but Interface.DeviceGetMarginTemperature was just called") + } + callInfo := struct { + Device nvml.Device + }{ + Device: device, + } + mock.lockDeviceGetMarginTemperature.Lock() + mock.calls.DeviceGetMarginTemperature = append(mock.calls.DeviceGetMarginTemperature, callInfo) + mock.lockDeviceGetMarginTemperature.Unlock() + return mock.DeviceGetMarginTemperatureFunc(device) +} + +// DeviceGetMarginTemperatureCalls gets all the calls that were made to DeviceGetMarginTemperature. +// Check the length with: +// +// len(mockedInterface.DeviceGetMarginTemperatureCalls()) +func (mock *Interface) DeviceGetMarginTemperatureCalls() []struct { + Device nvml.Device +} { + var calls []struct { + Device nvml.Device + } + mock.lockDeviceGetMarginTemperature.RLock() + calls = mock.calls.DeviceGetMarginTemperature + mock.lockDeviceGetMarginTemperature.RUnlock() + return calls +} + // DeviceGetMaxClockInfo calls DeviceGetMaxClockInfoFunc. func (mock *Interface) DeviceGetMaxClockInfo(device nvml.Device, clockType nvml.ClockType) (uint32, nvml.Return) { if mock.DeviceGetMaxClockInfoFunc == nil { @@ -8476,6 +9316,70 @@ func (mock *Interface) DeviceGetNvLinkVersionCalls() []struct { return calls } +// DeviceGetNvlinkBwMode calls DeviceGetNvlinkBwModeFunc. +func (mock *Interface) DeviceGetNvlinkBwMode(device nvml.Device) (nvml.NvlinkGetBwMode, nvml.Return) { + if mock.DeviceGetNvlinkBwModeFunc == nil { + panic("Interface.DeviceGetNvlinkBwModeFunc: method is nil but Interface.DeviceGetNvlinkBwMode was just called") + } + callInfo := struct { + Device nvml.Device + }{ + Device: device, + } + mock.lockDeviceGetNvlinkBwMode.Lock() + mock.calls.DeviceGetNvlinkBwMode = append(mock.calls.DeviceGetNvlinkBwMode, callInfo) + mock.lockDeviceGetNvlinkBwMode.Unlock() + return mock.DeviceGetNvlinkBwModeFunc(device) +} + +// DeviceGetNvlinkBwModeCalls gets all the calls that were made to DeviceGetNvlinkBwMode. +// Check the length with: +// +// len(mockedInterface.DeviceGetNvlinkBwModeCalls()) +func (mock *Interface) DeviceGetNvlinkBwModeCalls() []struct { + Device nvml.Device +} { + var calls []struct { + Device nvml.Device + } + mock.lockDeviceGetNvlinkBwMode.RLock() + calls = mock.calls.DeviceGetNvlinkBwMode + mock.lockDeviceGetNvlinkBwMode.RUnlock() + return calls +} + +// DeviceGetNvlinkSupportedBwModes calls DeviceGetNvlinkSupportedBwModesFunc. +func (mock *Interface) DeviceGetNvlinkSupportedBwModes(device nvml.Device) (nvml.NvlinkSupportedBwModes, nvml.Return) { + if mock.DeviceGetNvlinkSupportedBwModesFunc == nil { + panic("Interface.DeviceGetNvlinkSupportedBwModesFunc: method is nil but Interface.DeviceGetNvlinkSupportedBwModes was just called") + } + callInfo := struct { + Device nvml.Device + }{ + Device: device, + } + mock.lockDeviceGetNvlinkSupportedBwModes.Lock() + mock.calls.DeviceGetNvlinkSupportedBwModes = append(mock.calls.DeviceGetNvlinkSupportedBwModes, callInfo) + mock.lockDeviceGetNvlinkSupportedBwModes.Unlock() + return mock.DeviceGetNvlinkSupportedBwModesFunc(device) +} + +// DeviceGetNvlinkSupportedBwModesCalls gets all the calls that were made to DeviceGetNvlinkSupportedBwModes. +// Check the length with: +// +// len(mockedInterface.DeviceGetNvlinkSupportedBwModesCalls()) +func (mock *Interface) DeviceGetNvlinkSupportedBwModesCalls() []struct { + Device nvml.Device +} { + var calls []struct { + Device nvml.Device + } + mock.lockDeviceGetNvlinkSupportedBwModes.RLock() + calls = mock.calls.DeviceGetNvlinkSupportedBwModes + mock.lockDeviceGetNvlinkSupportedBwModes.RUnlock() + return calls +} + // DeviceGetOfaUtilization calls DeviceGetOfaUtilizationFunc. func (mock *Interface) DeviceGetOfaUtilization(device nvml.Device) (uint32, uint32, nvml.Return) { if mock.DeviceGetOfaUtilizationFunc == nil { @@ -8744,6 +9648,38 @@ func (mock *Interface) DeviceGetPcieThroughputCalls() []struct { return calls } +// DeviceGetPerformanceModes calls DeviceGetPerformanceModesFunc. +func (mock *Interface) DeviceGetPerformanceModes(device nvml.Device) (nvml.DevicePerfModes, nvml.Return) { + if mock.DeviceGetPerformanceModesFunc == nil { + panic("Interface.DeviceGetPerformanceModesFunc: method is nil but Interface.DeviceGetPerformanceModes was just called") + } + callInfo := struct { + Device nvml.Device + }{ + Device: device, + } + mock.lockDeviceGetPerformanceModes.Lock() + mock.calls.DeviceGetPerformanceModes = append(mock.calls.DeviceGetPerformanceModes, callInfo) + mock.lockDeviceGetPerformanceModes.Unlock() + return mock.DeviceGetPerformanceModesFunc(device) +} + +// DeviceGetPerformanceModesCalls gets all the calls that were made to DeviceGetPerformanceModes. +// Check the length with: +// +// len(mockedInterface.DeviceGetPerformanceModesCalls()) +func (mock *Interface) DeviceGetPerformanceModesCalls() []struct { + Device nvml.Device +} { + var calls []struct { + Device nvml.Device + } + mock.lockDeviceGetPerformanceModes.RLock() + calls = mock.calls.DeviceGetPerformanceModes + mock.lockDeviceGetPerformanceModes.RUnlock() + return calls +} + // DeviceGetPerformanceState calls DeviceGetPerformanceStateFunc. func (mock *Interface) DeviceGetPerformanceState(device nvml.Device) (nvml.Pstates, nvml.Return) { if mock.DeviceGetPerformanceStateFunc == nil { @@ -8840,6 +9776,38 @@ func (mock *Interface) DeviceGetPgpuMetadataStringCalls() []struct { return calls } +// DeviceGetPlatformInfo calls DeviceGetPlatformInfoFunc. +func (mock *Interface) DeviceGetPlatformInfo(device nvml.Device) (nvml.PlatformInfo, nvml.Return) { + if mock.DeviceGetPlatformInfoFunc == nil { + panic("Interface.DeviceGetPlatformInfoFunc: method is nil but Interface.DeviceGetPlatformInfo was just called") + } + callInfo := struct { + Device nvml.Device + }{ + Device: device, + } + mock.lockDeviceGetPlatformInfo.Lock() + mock.calls.DeviceGetPlatformInfo = append(mock.calls.DeviceGetPlatformInfo, callInfo) + mock.lockDeviceGetPlatformInfo.Unlock() + return mock.DeviceGetPlatformInfoFunc(device) +} + +// DeviceGetPlatformInfoCalls gets all the calls that were made to DeviceGetPlatformInfo. +// Check the length with: +// +// len(mockedInterface.DeviceGetPlatformInfoCalls()) +func (mock *Interface) DeviceGetPlatformInfoCalls() []struct { + Device nvml.Device +} { + var calls []struct { + Device nvml.Device + } + mock.lockDeviceGetPlatformInfo.RLock() + calls = mock.calls.DeviceGetPlatformInfo + mock.lockDeviceGetPlatformInfo.RUnlock() + return calls +} + // DeviceGetPowerManagementDefaultLimit calls DeviceGetPowerManagementDefaultLimitFunc. func (mock *Interface) DeviceGetPowerManagementDefaultLimit(device nvml.Device) (uint32, nvml.Return) { if mock.DeviceGetPowerManagementDefaultLimitFunc == nil { @@ -9772,6 +10740,38 @@ func (mock *Interface) DeviceGetTemperatureThresholdCalls() []struct { return calls } +// DeviceGetTemperatureV calls DeviceGetTemperatureVFunc. +func (mock *Interface) DeviceGetTemperatureV(device nvml.Device) nvml.TemperatureHandler { + if mock.DeviceGetTemperatureVFunc == nil { + panic("Interface.DeviceGetTemperatureVFunc: method is nil but Interface.DeviceGetTemperatureV was just called") + } + callInfo := struct { + Device nvml.Device + }{ + Device: device, + } + mock.lockDeviceGetTemperatureV.Lock() + mock.calls.DeviceGetTemperatureV = append(mock.calls.DeviceGetTemperatureV, callInfo) + mock.lockDeviceGetTemperatureV.Unlock() + return mock.DeviceGetTemperatureVFunc(device) +} + +// DeviceGetTemperatureVCalls gets all the calls that were made to DeviceGetTemperatureV. +// Check the length with: +// +// len(mockedInterface.DeviceGetTemperatureVCalls()) +func (mock *Interface) DeviceGetTemperatureVCalls() []struct { + Device nvml.Device +} { + var calls []struct { + Device nvml.Device + } + mock.lockDeviceGetTemperatureV.RLock() + calls = mock.calls.DeviceGetTemperatureV + mock.lockDeviceGetTemperatureV.RUnlock() + return calls +} + // DeviceGetThermalSettings calls DeviceGetThermalSettingsFunc. func (mock *Interface) DeviceGetThermalSettings(device nvml.Device, v uint32) (nvml.GpuThermalSettings, nvml.Return) { if mock.DeviceGetThermalSettingsFunc == nil { @@ -10624,56 +11624,164 @@ func (mock *Interface) DeviceOnSameBoardCalls() []struct { return calls } -// DeviceQueryDrainState calls DeviceQueryDrainStateFunc. -func (mock *Interface) DeviceQueryDrainState(pciInfo *nvml.PciInfo) (nvml.EnableState, nvml.Return) { - if mock.DeviceQueryDrainStateFunc == nil { - panic("Interface.DeviceQueryDrainStateFunc: method is nil but Interface.DeviceQueryDrainState was just called") +// DevicePowerSmoothingActivatePresetProfile calls DevicePowerSmoothingActivatePresetProfileFunc. +func (mock *Interface) DevicePowerSmoothingActivatePresetProfile(device nvml.Device, powerSmoothingProfile *nvml.PowerSmoothingProfile) nvml.Return { + if mock.DevicePowerSmoothingActivatePresetProfileFunc == nil { + panic("Interface.DevicePowerSmoothingActivatePresetProfileFunc: method is nil but Interface.DevicePowerSmoothingActivatePresetProfile was just called") } callInfo := struct { - PciInfo *nvml.PciInfo + Device nvml.Device + PowerSmoothingProfile *nvml.PowerSmoothingProfile }{ - PciInfo: pciInfo, + Device: device, + PowerSmoothingProfile: powerSmoothingProfile, } - mock.lockDeviceQueryDrainState.Lock() - mock.calls.DeviceQueryDrainState = append(mock.calls.DeviceQueryDrainState, callInfo) - mock.lockDeviceQueryDrainState.Unlock() - return mock.DeviceQueryDrainStateFunc(pciInfo) + mock.lockDevicePowerSmoothingActivatePresetProfile.Lock() + mock.calls.DevicePowerSmoothingActivatePresetProfile = append(mock.calls.DevicePowerSmoothingActivatePresetProfile, callInfo) + mock.lockDevicePowerSmoothingActivatePresetProfile.Unlock() + return mock.DevicePowerSmoothingActivatePresetProfileFunc(device, powerSmoothingProfile) } -// DeviceQueryDrainStateCalls gets all the calls that were made to DeviceQueryDrainState. +// DevicePowerSmoothingActivatePresetProfileCalls gets all the calls that were made to DevicePowerSmoothingActivatePresetProfile. // Check the length with: // -// len(mockedInterface.DeviceQueryDrainStateCalls()) -func (mock *Interface) DeviceQueryDrainStateCalls() []struct { - PciInfo *nvml.PciInfo +// len(mockedInterface.DevicePowerSmoothingActivatePresetProfileCalls()) +func (mock *Interface) DevicePowerSmoothingActivatePresetProfileCalls() []struct { + Device nvml.Device + PowerSmoothingProfile *nvml.PowerSmoothingProfile } { var calls []struct { - PciInfo *nvml.PciInfo + Device nvml.Device + PowerSmoothingProfile *nvml.PowerSmoothingProfile } - mock.lockDeviceQueryDrainState.RLock() - calls = mock.calls.DeviceQueryDrainState - mock.lockDeviceQueryDrainState.RUnlock() + mock.lockDevicePowerSmoothingActivatePresetProfile.RLock() + calls = mock.calls.DevicePowerSmoothingActivatePresetProfile + mock.lockDevicePowerSmoothingActivatePresetProfile.RUnlock() return calls } -// DeviceRegisterEvents calls DeviceRegisterEventsFunc. -func (mock *Interface) DeviceRegisterEvents(device nvml.Device, v uint64, eventSet nvml.EventSet) nvml.Return { - if mock.DeviceRegisterEventsFunc == nil { - panic("Interface.DeviceRegisterEventsFunc: method is nil but Interface.DeviceRegisterEvents was just called") +// DevicePowerSmoothingSetState calls DevicePowerSmoothingSetStateFunc. +func (mock *Interface) DevicePowerSmoothingSetState(device nvml.Device, powerSmoothingState *nvml.PowerSmoothingState) nvml.Return { + if mock.DevicePowerSmoothingSetStateFunc == nil { + panic("Interface.DevicePowerSmoothingSetStateFunc: method is nil but Interface.DevicePowerSmoothingSetState was just called") } callInfo := struct { - Device nvml.Device - V uint64 - EventSet nvml.EventSet + Device nvml.Device + PowerSmoothingState *nvml.PowerSmoothingState }{ - Device: device, - V: v, - EventSet: eventSet, + Device: device, + PowerSmoothingState: powerSmoothingState, } - mock.lockDeviceRegisterEvents.Lock() - mock.calls.DeviceRegisterEvents = append(mock.calls.DeviceRegisterEvents, callInfo) - mock.lockDeviceRegisterEvents.Unlock() - return mock.DeviceRegisterEventsFunc(device, v, eventSet) + mock.lockDevicePowerSmoothingSetState.Lock() + mock.calls.DevicePowerSmoothingSetState = append(mock.calls.DevicePowerSmoothingSetState, callInfo) + mock.lockDevicePowerSmoothingSetState.Unlock() + return mock.DevicePowerSmoothingSetStateFunc(device, powerSmoothingState) +} + +// DevicePowerSmoothingSetStateCalls gets all the calls that were made to DevicePowerSmoothingSetState. +// Check the length with: +// +// len(mockedInterface.DevicePowerSmoothingSetStateCalls()) +func (mock *Interface) DevicePowerSmoothingSetStateCalls() []struct { + Device nvml.Device + PowerSmoothingState *nvml.PowerSmoothingState +} { + var calls []struct { + Device nvml.Device + PowerSmoothingState *nvml.PowerSmoothingState + } + mock.lockDevicePowerSmoothingSetState.RLock() + calls = mock.calls.DevicePowerSmoothingSetState + mock.lockDevicePowerSmoothingSetState.RUnlock() + return calls +} + +// DevicePowerSmoothingUpdatePresetProfileParam calls DevicePowerSmoothingUpdatePresetProfileParamFunc. +func (mock *Interface) DevicePowerSmoothingUpdatePresetProfileParam(device nvml.Device, powerSmoothingProfile *nvml.PowerSmoothingProfile) nvml.Return { + if mock.DevicePowerSmoothingUpdatePresetProfileParamFunc == nil { + panic("Interface.DevicePowerSmoothingUpdatePresetProfileParamFunc: method is nil but Interface.DevicePowerSmoothingUpdatePresetProfileParam was just called") + } + callInfo := struct { + Device nvml.Device + PowerSmoothingProfile *nvml.PowerSmoothingProfile + }{ + Device: device, + PowerSmoothingProfile: powerSmoothingProfile, + } + mock.lockDevicePowerSmoothingUpdatePresetProfileParam.Lock() + mock.calls.DevicePowerSmoothingUpdatePresetProfileParam = append(mock.calls.DevicePowerSmoothingUpdatePresetProfileParam, callInfo) + mock.lockDevicePowerSmoothingUpdatePresetProfileParam.Unlock() + return mock.DevicePowerSmoothingUpdatePresetProfileParamFunc(device, powerSmoothingProfile) +} + +// DevicePowerSmoothingUpdatePresetProfileParamCalls gets all the calls that were made to DevicePowerSmoothingUpdatePresetProfileParam. +// Check the length with: +// +// len(mockedInterface.DevicePowerSmoothingUpdatePresetProfileParamCalls()) +func (mock *Interface) DevicePowerSmoothingUpdatePresetProfileParamCalls() []struct { + Device nvml.Device + PowerSmoothingProfile *nvml.PowerSmoothingProfile +} { + var calls []struct { + Device nvml.Device + PowerSmoothingProfile *nvml.PowerSmoothingProfile + } + mock.lockDevicePowerSmoothingUpdatePresetProfileParam.RLock() + calls = mock.calls.DevicePowerSmoothingUpdatePresetProfileParam + mock.lockDevicePowerSmoothingUpdatePresetProfileParam.RUnlock() + return calls +} + +// DeviceQueryDrainState calls DeviceQueryDrainStateFunc. +func (mock *Interface) DeviceQueryDrainState(pciInfo *nvml.PciInfo) (nvml.EnableState, nvml.Return) { + if mock.DeviceQueryDrainStateFunc == nil { + panic("Interface.DeviceQueryDrainStateFunc: method is nil but Interface.DeviceQueryDrainState was just called") + } + callInfo := struct { + PciInfo *nvml.PciInfo + }{ + PciInfo: pciInfo, + } + mock.lockDeviceQueryDrainState.Lock() + mock.calls.DeviceQueryDrainState = append(mock.calls.DeviceQueryDrainState, callInfo) + mock.lockDeviceQueryDrainState.Unlock() + return mock.DeviceQueryDrainStateFunc(pciInfo) +} + +// DeviceQueryDrainStateCalls gets all the calls that were made to DeviceQueryDrainState. +// Check the length with: +// +// len(mockedInterface.DeviceQueryDrainStateCalls()) +func (mock *Interface) DeviceQueryDrainStateCalls() []struct { + PciInfo *nvml.PciInfo +} { + var calls []struct { + PciInfo *nvml.PciInfo + } + mock.lockDeviceQueryDrainState.RLock() + calls = mock.calls.DeviceQueryDrainState + mock.lockDeviceQueryDrainState.RUnlock() + return calls +} + +// DeviceRegisterEvents calls DeviceRegisterEventsFunc. +func (mock *Interface) DeviceRegisterEvents(device nvml.Device, v uint64, eventSet nvml.EventSet) nvml.Return { + if mock.DeviceRegisterEventsFunc == nil { + panic("Interface.DeviceRegisterEventsFunc: method is nil but Interface.DeviceRegisterEvents was just called") + } + callInfo := struct { + Device nvml.Device + V uint64 + EventSet nvml.EventSet + }{ + Device: device, + V: v, + EventSet: eventSet, + } + mock.lockDeviceRegisterEvents.Lock() + mock.calls.DeviceRegisterEvents = append(mock.calls.DeviceRegisterEvents, callInfo) + mock.lockDeviceRegisterEvents.Unlock() + return mock.DeviceRegisterEventsFunc(device, v, eventSet) } // DeviceRegisterEventsCalls gets all the calls that were made to DeviceRegisterEvents. @@ -11092,6 +12200,42 @@ func (mock *Interface) DeviceSetAutoBoostedClocksEnabledCalls() []struct { return calls } +// DeviceSetClockOffsets calls DeviceSetClockOffsetsFunc. +func (mock *Interface) DeviceSetClockOffsets(device nvml.Device, clockOffset nvml.ClockOffset) nvml.Return { + if mock.DeviceSetClockOffsetsFunc == nil { + panic("Interface.DeviceSetClockOffsetsFunc: method is nil but Interface.DeviceSetClockOffsets was just called") + } + callInfo := struct { + Device nvml.Device + ClockOffset nvml.ClockOffset + }{ + Device: device, + ClockOffset: clockOffset, + } + mock.lockDeviceSetClockOffsets.Lock() + mock.calls.DeviceSetClockOffsets = append(mock.calls.DeviceSetClockOffsets, callInfo) + mock.lockDeviceSetClockOffsets.Unlock() + return mock.DeviceSetClockOffsetsFunc(device, clockOffset) +} + +// DeviceSetClockOffsetsCalls gets all the calls that were made to DeviceSetClockOffsets. +// Check the length with: +// +// len(mockedInterface.DeviceSetClockOffsetsCalls()) +func (mock *Interface) DeviceSetClockOffsetsCalls() []struct { + Device nvml.Device + ClockOffset nvml.ClockOffset +} { + var calls []struct { + Device nvml.Device + ClockOffset nvml.ClockOffset + } + mock.lockDeviceSetClockOffsets.RLock() + calls = mock.calls.DeviceSetClockOffsets + mock.lockDeviceSetClockOffsets.RUnlock() + return calls +} + // DeviceSetComputeMode calls DeviceSetComputeModeFunc. func (mock *Interface) DeviceSetComputeMode(device nvml.Device, computeMode nvml.ComputeMode) nvml.Return { if mock.DeviceSetComputeModeFunc == nil { @@ -11272,6 +12416,42 @@ func (mock *Interface) DeviceSetDefaultFanSpeed_v2Calls() []struct { return calls } +// DeviceSetDramEncryptionMode calls DeviceSetDramEncryptionModeFunc. +func (mock *Interface) DeviceSetDramEncryptionMode(device nvml.Device, dramEncryptionInfo *nvml.DramEncryptionInfo) nvml.Return { + if mock.DeviceSetDramEncryptionModeFunc == nil { + panic("Interface.DeviceSetDramEncryptionModeFunc: method is nil but Interface.DeviceSetDramEncryptionMode was just called") + } + callInfo := struct { + Device nvml.Device + DramEncryptionInfo *nvml.DramEncryptionInfo + }{ + Device: device, + DramEncryptionInfo: dramEncryptionInfo, + } + mock.lockDeviceSetDramEncryptionMode.Lock() + mock.calls.DeviceSetDramEncryptionMode = append(mock.calls.DeviceSetDramEncryptionMode, callInfo) + mock.lockDeviceSetDramEncryptionMode.Unlock() + return mock.DeviceSetDramEncryptionModeFunc(device, dramEncryptionInfo) +} + +// DeviceSetDramEncryptionModeCalls gets all the calls that were made to DeviceSetDramEncryptionMode. +// Check the length with: +// +// len(mockedInterface.DeviceSetDramEncryptionModeCalls()) +func (mock *Interface) DeviceSetDramEncryptionModeCalls() []struct { + Device nvml.Device + DramEncryptionInfo *nvml.DramEncryptionInfo +} { + var calls []struct { + Device nvml.Device + DramEncryptionInfo *nvml.DramEncryptionInfo + } + mock.lockDeviceSetDramEncryptionMode.RLock() + calls = mock.calls.DeviceSetDramEncryptionMode + mock.lockDeviceSetDramEncryptionMode.RUnlock() + return calls +} + // DeviceSetDriverModel calls DeviceSetDriverModelFunc. func (mock *Interface) DeviceSetDriverModel(device nvml.Device, driverModel nvml.DriverModel, v uint32) nvml.Return { if mock.DeviceSetDriverModelFunc == nil { @@ -11736,6 +12916,42 @@ func (mock *Interface) DeviceSetNvLinkUtilizationControlCalls() []struct { return calls } +// DeviceSetNvlinkBwMode calls DeviceSetNvlinkBwModeFunc. +func (mock *Interface) DeviceSetNvlinkBwMode(device nvml.Device, nvlinkSetBwMode *nvml.NvlinkSetBwMode) nvml.Return { + if mock.DeviceSetNvlinkBwModeFunc == nil { + panic("Interface.DeviceSetNvlinkBwModeFunc: method is nil but Interface.DeviceSetNvlinkBwMode was just called") + } + callInfo := struct { + Device nvml.Device + NvlinkSetBwMode *nvml.NvlinkSetBwMode + }{ + Device: device, + NvlinkSetBwMode: nvlinkSetBwMode, + } + mock.lockDeviceSetNvlinkBwMode.Lock() + mock.calls.DeviceSetNvlinkBwMode = append(mock.calls.DeviceSetNvlinkBwMode, callInfo) + mock.lockDeviceSetNvlinkBwMode.Unlock() + return mock.DeviceSetNvlinkBwModeFunc(device, nvlinkSetBwMode) +} + +// DeviceSetNvlinkBwModeCalls gets all the calls that were made to DeviceSetNvlinkBwMode. +// Check the length with: +// +// len(mockedInterface.DeviceSetNvlinkBwModeCalls()) +func (mock *Interface) DeviceSetNvlinkBwModeCalls() []struct { + Device nvml.Device + NvlinkSetBwMode *nvml.NvlinkSetBwMode +} { + var calls []struct { + Device nvml.Device + NvlinkSetBwMode *nvml.NvlinkSetBwMode + } + mock.lockDeviceSetNvlinkBwMode.RLock() + calls = mock.calls.DeviceSetNvlinkBwMode + mock.lockDeviceSetNvlinkBwMode.RUnlock() + return calls +} + // DeviceSetPersistenceMode calls DeviceSetPersistenceModeFunc. func (mock *Interface) DeviceSetPersistenceMode(device nvml.Device, enableState nvml.EnableState) nvml.Return { if mock.DeviceSetPersistenceModeFunc == nil { @@ -12064,6 +13280,142 @@ func (mock *Interface) DeviceValidateInforomCalls() []struct { return calls } +// DeviceWorkloadPowerProfileClearRequestedProfiles calls DeviceWorkloadPowerProfileClearRequestedProfilesFunc. +func (mock *Interface) DeviceWorkloadPowerProfileClearRequestedProfiles(device nvml.Device, workloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles) nvml.Return { + if mock.DeviceWorkloadPowerProfileClearRequestedProfilesFunc == nil { + panic("Interface.DeviceWorkloadPowerProfileClearRequestedProfilesFunc: method is nil but Interface.DeviceWorkloadPowerProfileClearRequestedProfiles was just called") + } + callInfo := struct { + Device nvml.Device + WorkloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles + }{ + Device: device, + WorkloadPowerProfileRequestedProfiles: workloadPowerProfileRequestedProfiles, + } + mock.lockDeviceWorkloadPowerProfileClearRequestedProfiles.Lock() + mock.calls.DeviceWorkloadPowerProfileClearRequestedProfiles = append(mock.calls.DeviceWorkloadPowerProfileClearRequestedProfiles, callInfo) + mock.lockDeviceWorkloadPowerProfileClearRequestedProfiles.Unlock() + return mock.DeviceWorkloadPowerProfileClearRequestedProfilesFunc(device, workloadPowerProfileRequestedProfiles) +} + +// DeviceWorkloadPowerProfileClearRequestedProfilesCalls gets all the calls that were made to DeviceWorkloadPowerProfileClearRequestedProfiles. +// Check the length with: +// +// len(mockedInterface.DeviceWorkloadPowerProfileClearRequestedProfilesCalls()) +func (mock *Interface) DeviceWorkloadPowerProfileClearRequestedProfilesCalls() []struct { + Device nvml.Device + WorkloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles +} { + var calls []struct { + Device nvml.Device + WorkloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles + } + mock.lockDeviceWorkloadPowerProfileClearRequestedProfiles.RLock() + calls = mock.calls.DeviceWorkloadPowerProfileClearRequestedProfiles + mock.lockDeviceWorkloadPowerProfileClearRequestedProfiles.RUnlock() + return calls +} + +// DeviceWorkloadPowerProfileGetCurrentProfiles calls DeviceWorkloadPowerProfileGetCurrentProfilesFunc. +func (mock *Interface) DeviceWorkloadPowerProfileGetCurrentProfiles(device nvml.Device) (nvml.WorkloadPowerProfileCurrentProfiles, nvml.Return) { + if mock.DeviceWorkloadPowerProfileGetCurrentProfilesFunc == nil { + panic("Interface.DeviceWorkloadPowerProfileGetCurrentProfilesFunc: method is nil but Interface.DeviceWorkloadPowerProfileGetCurrentProfiles was just called") + } + callInfo := struct { + Device nvml.Device + }{ + Device: device, + } + mock.lockDeviceWorkloadPowerProfileGetCurrentProfiles.Lock() + mock.calls.DeviceWorkloadPowerProfileGetCurrentProfiles = append(mock.calls.DeviceWorkloadPowerProfileGetCurrentProfiles, callInfo) + mock.lockDeviceWorkloadPowerProfileGetCurrentProfiles.Unlock() + return mock.DeviceWorkloadPowerProfileGetCurrentProfilesFunc(device) +} + +// DeviceWorkloadPowerProfileGetCurrentProfilesCalls gets all the calls that were made to DeviceWorkloadPowerProfileGetCurrentProfiles. +// Check the length with: +// +// len(mockedInterface.DeviceWorkloadPowerProfileGetCurrentProfilesCalls()) +func (mock *Interface) DeviceWorkloadPowerProfileGetCurrentProfilesCalls() []struct { + Device nvml.Device +} { + var calls []struct { + Device nvml.Device + } + mock.lockDeviceWorkloadPowerProfileGetCurrentProfiles.RLock() + calls = mock.calls.DeviceWorkloadPowerProfileGetCurrentProfiles + mock.lockDeviceWorkloadPowerProfileGetCurrentProfiles.RUnlock() + return calls +} + +// DeviceWorkloadPowerProfileGetProfilesInfo calls DeviceWorkloadPowerProfileGetProfilesInfoFunc. +func (mock *Interface) DeviceWorkloadPowerProfileGetProfilesInfo(device nvml.Device) (nvml.WorkloadPowerProfileProfilesInfo, nvml.Return) { + if mock.DeviceWorkloadPowerProfileGetProfilesInfoFunc == nil { + panic("Interface.DeviceWorkloadPowerProfileGetProfilesInfoFunc: method is nil but Interface.DeviceWorkloadPowerProfileGetProfilesInfo was just called") + } + callInfo := struct { + Device nvml.Device + }{ + Device: device, + } + mock.lockDeviceWorkloadPowerProfileGetProfilesInfo.Lock() + mock.calls.DeviceWorkloadPowerProfileGetProfilesInfo = append(mock.calls.DeviceWorkloadPowerProfileGetProfilesInfo, callInfo) + mock.lockDeviceWorkloadPowerProfileGetProfilesInfo.Unlock() + return mock.DeviceWorkloadPowerProfileGetProfilesInfoFunc(device) +} + +// DeviceWorkloadPowerProfileGetProfilesInfoCalls gets all the calls that were made to DeviceWorkloadPowerProfileGetProfilesInfo. +// Check the length with: +// +// len(mockedInterface.DeviceWorkloadPowerProfileGetProfilesInfoCalls()) +func (mock *Interface) DeviceWorkloadPowerProfileGetProfilesInfoCalls() []struct { + Device nvml.Device +} { + var calls []struct { + Device nvml.Device + } + mock.lockDeviceWorkloadPowerProfileGetProfilesInfo.RLock() + calls = mock.calls.DeviceWorkloadPowerProfileGetProfilesInfo + mock.lockDeviceWorkloadPowerProfileGetProfilesInfo.RUnlock() + return calls +} + +// DeviceWorkloadPowerProfileSetRequestedProfiles calls DeviceWorkloadPowerProfileSetRequestedProfilesFunc. +func (mock *Interface) DeviceWorkloadPowerProfileSetRequestedProfiles(device nvml.Device, workloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles) nvml.Return { + if mock.DeviceWorkloadPowerProfileSetRequestedProfilesFunc == nil { + panic("Interface.DeviceWorkloadPowerProfileSetRequestedProfilesFunc: method is nil but Interface.DeviceWorkloadPowerProfileSetRequestedProfiles was just called") + } + callInfo := struct { + Device nvml.Device + WorkloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles + }{ + Device: device, + WorkloadPowerProfileRequestedProfiles: workloadPowerProfileRequestedProfiles, + } + mock.lockDeviceWorkloadPowerProfileSetRequestedProfiles.Lock() + mock.calls.DeviceWorkloadPowerProfileSetRequestedProfiles = append(mock.calls.DeviceWorkloadPowerProfileSetRequestedProfiles, callInfo) + mock.lockDeviceWorkloadPowerProfileSetRequestedProfiles.Unlock() + return mock.DeviceWorkloadPowerProfileSetRequestedProfilesFunc(device, workloadPowerProfileRequestedProfiles) +} + +// DeviceWorkloadPowerProfileSetRequestedProfilesCalls gets all the calls that were made to DeviceWorkloadPowerProfileSetRequestedProfiles. +// Check the length with: +// +// len(mockedInterface.DeviceWorkloadPowerProfileSetRequestedProfilesCalls()) +func (mock *Interface) DeviceWorkloadPowerProfileSetRequestedProfilesCalls() []struct { + Device nvml.Device + WorkloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles +} { + var calls []struct { + Device nvml.Device + WorkloadPowerProfileRequestedProfiles *nvml.WorkloadPowerProfileRequestedProfiles + } + mock.lockDeviceWorkloadPowerProfileSetRequestedProfiles.RLock() + calls = mock.calls.DeviceWorkloadPowerProfileSetRequestedProfiles + mock.lockDeviceWorkloadPowerProfileSetRequestedProfiles.RUnlock() + return calls +} + // ErrorString calls ErrorStringFunc. func (mock *Interface) ErrorString(returnMoqParam nvml.Return) string { if mock.ErrorStringFunc == nil { @@ -12811,6 +14163,38 @@ func (mock *Interface) GpuInstanceDestroyCalls() []struct { return calls } +// GpuInstanceGetActiveVgpus calls GpuInstanceGetActiveVgpusFunc. +func (mock *Interface) GpuInstanceGetActiveVgpus(gpuInstance nvml.GpuInstance) (nvml.ActiveVgpuInstanceInfo, nvml.Return) { + if mock.GpuInstanceGetActiveVgpusFunc == nil { + panic("Interface.GpuInstanceGetActiveVgpusFunc: method is nil but Interface.GpuInstanceGetActiveVgpus was just called") + } + callInfo := struct { + GpuInstance nvml.GpuInstance + }{ + GpuInstance: gpuInstance, + } + mock.lockGpuInstanceGetActiveVgpus.Lock() + mock.calls.GpuInstanceGetActiveVgpus = append(mock.calls.GpuInstanceGetActiveVgpus, callInfo) + mock.lockGpuInstanceGetActiveVgpus.Unlock() + return mock.GpuInstanceGetActiveVgpusFunc(gpuInstance) +} + +// GpuInstanceGetActiveVgpusCalls gets all the calls that were made to GpuInstanceGetActiveVgpus. +// Check the length with: +// +// len(mockedInterface.GpuInstanceGetActiveVgpusCalls()) +func (mock *Interface) GpuInstanceGetActiveVgpusCalls() []struct { + GpuInstance nvml.GpuInstance +} { + var calls []struct { + GpuInstance nvml.GpuInstance + } + mock.lockGpuInstanceGetActiveVgpus.RLock() + calls = mock.calls.GpuInstanceGetActiveVgpus + mock.lockGpuInstanceGetActiveVgpus.RUnlock() + return calls +} + // GpuInstanceGetComputeInstanceById calls GpuInstanceGetComputeInstanceByIdFunc. func (mock *Interface) GpuInstanceGetComputeInstanceById(gpuInstance nvml.GpuInstance, n int) (nvml.ComputeInstance, nvml.Return) { if mock.GpuInstanceGetComputeInstanceByIdFunc == nil { @@ -13035,6 +14419,38 @@ func (mock *Interface) GpuInstanceGetComputeInstancesCalls() []struct { return calls } +// GpuInstanceGetCreatableVgpus calls GpuInstanceGetCreatableVgpusFunc. +func (mock *Interface) GpuInstanceGetCreatableVgpus(gpuInstance nvml.GpuInstance) (nvml.VgpuTypeIdInfo, nvml.Return) { + if mock.GpuInstanceGetCreatableVgpusFunc == nil { + panic("Interface.GpuInstanceGetCreatableVgpusFunc: method is nil but Interface.GpuInstanceGetCreatableVgpus was just called") + } + callInfo := struct { + GpuInstance nvml.GpuInstance + }{ + GpuInstance: gpuInstance, + } + mock.lockGpuInstanceGetCreatableVgpus.Lock() + mock.calls.GpuInstanceGetCreatableVgpus = append(mock.calls.GpuInstanceGetCreatableVgpus, callInfo) + mock.lockGpuInstanceGetCreatableVgpus.Unlock() + return mock.GpuInstanceGetCreatableVgpusFunc(gpuInstance) +} + +// GpuInstanceGetCreatableVgpusCalls gets all the calls that were made to GpuInstanceGetCreatableVgpus. +// Check the length with: +// +// len(mockedInterface.GpuInstanceGetCreatableVgpusCalls()) +func (mock *Interface) GpuInstanceGetCreatableVgpusCalls() []struct { + GpuInstance nvml.GpuInstance +} { + var calls []struct { + GpuInstance nvml.GpuInstance + } + mock.lockGpuInstanceGetCreatableVgpus.RLock() + calls = mock.calls.GpuInstanceGetCreatableVgpus + mock.lockGpuInstanceGetCreatableVgpus.RUnlock() + return calls +} + // GpuInstanceGetInfo calls GpuInstanceGetInfoFunc. func (mock *Interface) GpuInstanceGetInfo(gpuInstance nvml.GpuInstance) (nvml.GpuInstanceInfo, nvml.Return) { if mock.GpuInstanceGetInfoFunc == nil { @@ -13067,34 +14483,234 @@ func (mock *Interface) GpuInstanceGetInfoCalls() []struct { return calls } -// Init calls InitFunc. -func (mock *Interface) Init() nvml.Return { - if mock.InitFunc == nil { - panic("Interface.InitFunc: method is nil but Interface.Init was just called") +// GpuInstanceGetVgpuHeterogeneousMode calls GpuInstanceGetVgpuHeterogeneousModeFunc. +func (mock *Interface) GpuInstanceGetVgpuHeterogeneousMode(gpuInstance nvml.GpuInstance) (nvml.VgpuHeterogeneousMode, nvml.Return) { + if mock.GpuInstanceGetVgpuHeterogeneousModeFunc == nil { + panic("Interface.GpuInstanceGetVgpuHeterogeneousModeFunc: method is nil but Interface.GpuInstanceGetVgpuHeterogeneousMode was just called") } callInfo := struct { - }{} - mock.lockInit.Lock() - mock.calls.Init = append(mock.calls.Init, callInfo) - mock.lockInit.Unlock() - return mock.InitFunc() + GpuInstance nvml.GpuInstance + }{ + GpuInstance: gpuInstance, + } + mock.lockGpuInstanceGetVgpuHeterogeneousMode.Lock() + mock.calls.GpuInstanceGetVgpuHeterogeneousMode = append(mock.calls.GpuInstanceGetVgpuHeterogeneousMode, callInfo) + mock.lockGpuInstanceGetVgpuHeterogeneousMode.Unlock() + return mock.GpuInstanceGetVgpuHeterogeneousModeFunc(gpuInstance) } -// InitCalls gets all the calls that were made to Init. +// GpuInstanceGetVgpuHeterogeneousModeCalls gets all the calls that were made to GpuInstanceGetVgpuHeterogeneousMode. // Check the length with: // -// len(mockedInterface.InitCalls()) -func (mock *Interface) InitCalls() []struct { +// len(mockedInterface.GpuInstanceGetVgpuHeterogeneousModeCalls()) +func (mock *Interface) GpuInstanceGetVgpuHeterogeneousModeCalls() []struct { + GpuInstance nvml.GpuInstance } { var calls []struct { + GpuInstance nvml.GpuInstance } - mock.lockInit.RLock() - calls = mock.calls.Init - mock.lockInit.RUnlock() + mock.lockGpuInstanceGetVgpuHeterogeneousMode.RLock() + calls = mock.calls.GpuInstanceGetVgpuHeterogeneousMode + mock.lockGpuInstanceGetVgpuHeterogeneousMode.RUnlock() return calls } -// InitWithFlags calls InitWithFlagsFunc. +// GpuInstanceGetVgpuSchedulerLog calls GpuInstanceGetVgpuSchedulerLogFunc. +func (mock *Interface) GpuInstanceGetVgpuSchedulerLog(gpuInstance nvml.GpuInstance) (nvml.VgpuSchedulerLogInfo, nvml.Return) { + if mock.GpuInstanceGetVgpuSchedulerLogFunc == nil { + panic("Interface.GpuInstanceGetVgpuSchedulerLogFunc: method is nil but Interface.GpuInstanceGetVgpuSchedulerLog was just called") + } + callInfo := struct { + GpuInstance nvml.GpuInstance + }{ + GpuInstance: gpuInstance, + } + mock.lockGpuInstanceGetVgpuSchedulerLog.Lock() + mock.calls.GpuInstanceGetVgpuSchedulerLog = append(mock.calls.GpuInstanceGetVgpuSchedulerLog, callInfo) + mock.lockGpuInstanceGetVgpuSchedulerLog.Unlock() + return mock.GpuInstanceGetVgpuSchedulerLogFunc(gpuInstance) +} + +// GpuInstanceGetVgpuSchedulerLogCalls gets all the calls that were made to GpuInstanceGetVgpuSchedulerLog. +// Check the length with: +// +// len(mockedInterface.GpuInstanceGetVgpuSchedulerLogCalls()) +func (mock *Interface) GpuInstanceGetVgpuSchedulerLogCalls() []struct { + GpuInstance nvml.GpuInstance +} { + var calls []struct { + GpuInstance nvml.GpuInstance + } + mock.lockGpuInstanceGetVgpuSchedulerLog.RLock() + calls = mock.calls.GpuInstanceGetVgpuSchedulerLog + mock.lockGpuInstanceGetVgpuSchedulerLog.RUnlock() + return calls +} + +// GpuInstanceGetVgpuSchedulerState calls GpuInstanceGetVgpuSchedulerStateFunc. +func (mock *Interface) GpuInstanceGetVgpuSchedulerState(gpuInstance nvml.GpuInstance) (nvml.VgpuSchedulerStateInfo, nvml.Return) { + if mock.GpuInstanceGetVgpuSchedulerStateFunc == nil { + panic("Interface.GpuInstanceGetVgpuSchedulerStateFunc: method is nil but Interface.GpuInstanceGetVgpuSchedulerState was just called") + } + callInfo := struct { + GpuInstance nvml.GpuInstance + }{ + GpuInstance: gpuInstance, + } + mock.lockGpuInstanceGetVgpuSchedulerState.Lock() + mock.calls.GpuInstanceGetVgpuSchedulerState = append(mock.calls.GpuInstanceGetVgpuSchedulerState, callInfo) + mock.lockGpuInstanceGetVgpuSchedulerState.Unlock() + return mock.GpuInstanceGetVgpuSchedulerStateFunc(gpuInstance) +} + +// GpuInstanceGetVgpuSchedulerStateCalls gets all the calls that were made to GpuInstanceGetVgpuSchedulerState. +// Check the length with: +// +// len(mockedInterface.GpuInstanceGetVgpuSchedulerStateCalls()) +func (mock *Interface) GpuInstanceGetVgpuSchedulerStateCalls() []struct { + GpuInstance nvml.GpuInstance +} { + var calls []struct { + GpuInstance nvml.GpuInstance + } + mock.lockGpuInstanceGetVgpuSchedulerState.RLock() + calls = mock.calls.GpuInstanceGetVgpuSchedulerState + mock.lockGpuInstanceGetVgpuSchedulerState.RUnlock() + return calls +} + +// GpuInstanceGetVgpuTypeCreatablePlacements calls GpuInstanceGetVgpuTypeCreatablePlacementsFunc. +func (mock *Interface) GpuInstanceGetVgpuTypeCreatablePlacements(gpuInstance nvml.GpuInstance) (nvml.VgpuCreatablePlacementInfo, nvml.Return) { + if mock.GpuInstanceGetVgpuTypeCreatablePlacementsFunc == nil { + panic("Interface.GpuInstanceGetVgpuTypeCreatablePlacementsFunc: method is nil but Interface.GpuInstanceGetVgpuTypeCreatablePlacements was just called") + } + callInfo := struct { + GpuInstance nvml.GpuInstance + }{ + GpuInstance: gpuInstance, + } + mock.lockGpuInstanceGetVgpuTypeCreatablePlacements.Lock() + mock.calls.GpuInstanceGetVgpuTypeCreatablePlacements = append(mock.calls.GpuInstanceGetVgpuTypeCreatablePlacements, callInfo) + mock.lockGpuInstanceGetVgpuTypeCreatablePlacements.Unlock() + return mock.GpuInstanceGetVgpuTypeCreatablePlacementsFunc(gpuInstance) +} + +// GpuInstanceGetVgpuTypeCreatablePlacementsCalls gets all the calls that were made to GpuInstanceGetVgpuTypeCreatablePlacements. +// Check the length with: +// +// len(mockedInterface.GpuInstanceGetVgpuTypeCreatablePlacementsCalls()) +func (mock *Interface) GpuInstanceGetVgpuTypeCreatablePlacementsCalls() []struct { + GpuInstance nvml.GpuInstance +} { + var calls []struct { + GpuInstance nvml.GpuInstance + } + mock.lockGpuInstanceGetVgpuTypeCreatablePlacements.RLock() + calls = mock.calls.GpuInstanceGetVgpuTypeCreatablePlacements + mock.lockGpuInstanceGetVgpuTypeCreatablePlacements.RUnlock() + return calls +} + +// GpuInstanceSetVgpuHeterogeneousMode calls GpuInstanceSetVgpuHeterogeneousModeFunc. +func (mock *Interface) GpuInstanceSetVgpuHeterogeneousMode(gpuInstance nvml.GpuInstance, vgpuHeterogeneousMode *nvml.VgpuHeterogeneousMode) nvml.Return { + if mock.GpuInstanceSetVgpuHeterogeneousModeFunc == nil { + panic("Interface.GpuInstanceSetVgpuHeterogeneousModeFunc: method is nil but Interface.GpuInstanceSetVgpuHeterogeneousMode was just called") + } + callInfo := struct { + GpuInstance nvml.GpuInstance + VgpuHeterogeneousMode *nvml.VgpuHeterogeneousMode + }{ + GpuInstance: gpuInstance, + VgpuHeterogeneousMode: vgpuHeterogeneousMode, + } + mock.lockGpuInstanceSetVgpuHeterogeneousMode.Lock() + mock.calls.GpuInstanceSetVgpuHeterogeneousMode = append(mock.calls.GpuInstanceSetVgpuHeterogeneousMode, callInfo) + mock.lockGpuInstanceSetVgpuHeterogeneousMode.Unlock() + return mock.GpuInstanceSetVgpuHeterogeneousModeFunc(gpuInstance, vgpuHeterogeneousMode) +} + +// GpuInstanceSetVgpuHeterogeneousModeCalls gets all the calls that were made to GpuInstanceSetVgpuHeterogeneousMode. +// Check the length with: +// +// len(mockedInterface.GpuInstanceSetVgpuHeterogeneousModeCalls()) +func (mock *Interface) GpuInstanceSetVgpuHeterogeneousModeCalls() []struct { + GpuInstance nvml.GpuInstance + VgpuHeterogeneousMode *nvml.VgpuHeterogeneousMode +} { + var calls []struct { + GpuInstance nvml.GpuInstance + VgpuHeterogeneousMode *nvml.VgpuHeterogeneousMode + } + mock.lockGpuInstanceSetVgpuHeterogeneousMode.RLock() + calls = mock.calls.GpuInstanceSetVgpuHeterogeneousMode + mock.lockGpuInstanceSetVgpuHeterogeneousMode.RUnlock() + return calls +} + +// GpuInstanceSetVgpuSchedulerState calls GpuInstanceSetVgpuSchedulerStateFunc. +func (mock *Interface) GpuInstanceSetVgpuSchedulerState(gpuInstance nvml.GpuInstance, vgpuSchedulerState *nvml.VgpuSchedulerState) nvml.Return { + if mock.GpuInstanceSetVgpuSchedulerStateFunc == nil { + panic("Interface.GpuInstanceSetVgpuSchedulerStateFunc: method is nil but Interface.GpuInstanceSetVgpuSchedulerState was just called") + } + callInfo := struct { + GpuInstance nvml.GpuInstance + VgpuSchedulerState *nvml.VgpuSchedulerState + }{ + GpuInstance: gpuInstance, + VgpuSchedulerState: vgpuSchedulerState, + } + mock.lockGpuInstanceSetVgpuSchedulerState.Lock() + mock.calls.GpuInstanceSetVgpuSchedulerState = append(mock.calls.GpuInstanceSetVgpuSchedulerState, callInfo) + mock.lockGpuInstanceSetVgpuSchedulerState.Unlock() + return mock.GpuInstanceSetVgpuSchedulerStateFunc(gpuInstance, vgpuSchedulerState) +} + +// GpuInstanceSetVgpuSchedulerStateCalls gets all the calls that were made to GpuInstanceSetVgpuSchedulerState. +// Check the length with: +// +// len(mockedInterface.GpuInstanceSetVgpuSchedulerStateCalls()) +func (mock *Interface) GpuInstanceSetVgpuSchedulerStateCalls() []struct { + GpuInstance nvml.GpuInstance + VgpuSchedulerState *nvml.VgpuSchedulerState +} { + var calls []struct { + GpuInstance nvml.GpuInstance + VgpuSchedulerState *nvml.VgpuSchedulerState + } + mock.lockGpuInstanceSetVgpuSchedulerState.RLock() + calls = mock.calls.GpuInstanceSetVgpuSchedulerState + mock.lockGpuInstanceSetVgpuSchedulerState.RUnlock() + return calls +} + +// Init calls InitFunc. +func (mock *Interface) Init() nvml.Return { + if mock.InitFunc == nil { + panic("Interface.InitFunc: method is nil but Interface.Init was just called") + } + callInfo := struct { + }{} + mock.lockInit.Lock() + mock.calls.Init = append(mock.calls.Init, callInfo) + mock.lockInit.Unlock() + return mock.InitFunc() +} + +// InitCalls gets all the calls that were made to Init. +// Check the length with: +// +// len(mockedInterface.InitCalls()) +func (mock *Interface) InitCalls() []struct { +} { + var calls []struct { + } + mock.lockInit.RLock() + calls = mock.calls.Init + mock.lockInit.RUnlock() + return calls +} + +// InitWithFlags calls InitWithFlagsFunc. func (mock *Interface) InitWithFlags(v uint32) nvml.Return { if mock.InitWithFlagsFunc == nil { panic("Interface.InitWithFlagsFunc: method is nil but Interface.InitWithFlags was just called") @@ -13185,6 +14801,102 @@ func (mock *Interface) ShutdownCalls() []struct { return calls } +// SystemEventSetCreate calls SystemEventSetCreateFunc. +func (mock *Interface) SystemEventSetCreate(systemEventSetCreateRequest *nvml.SystemEventSetCreateRequest) nvml.Return { + if mock.SystemEventSetCreateFunc == nil { + panic("Interface.SystemEventSetCreateFunc: method is nil but Interface.SystemEventSetCreate was just called") + } + callInfo := struct { + SystemEventSetCreateRequest *nvml.SystemEventSetCreateRequest + }{ + SystemEventSetCreateRequest: systemEventSetCreateRequest, + } + mock.lockSystemEventSetCreate.Lock() + mock.calls.SystemEventSetCreate = append(mock.calls.SystemEventSetCreate, callInfo) + mock.lockSystemEventSetCreate.Unlock() + return mock.SystemEventSetCreateFunc(systemEventSetCreateRequest) +} + +// SystemEventSetCreateCalls gets all the calls that were made to SystemEventSetCreate. +// Check the length with: +// +// len(mockedInterface.SystemEventSetCreateCalls()) +func (mock *Interface) SystemEventSetCreateCalls() []struct { + SystemEventSetCreateRequest *nvml.SystemEventSetCreateRequest +} { + var calls []struct { + SystemEventSetCreateRequest *nvml.SystemEventSetCreateRequest + } + mock.lockSystemEventSetCreate.RLock() + calls = mock.calls.SystemEventSetCreate + mock.lockSystemEventSetCreate.RUnlock() + return calls +} + +// SystemEventSetFree calls SystemEventSetFreeFunc. +func (mock *Interface) SystemEventSetFree(systemEventSetFreeRequest *nvml.SystemEventSetFreeRequest) nvml.Return { + if mock.SystemEventSetFreeFunc == nil { + panic("Interface.SystemEventSetFreeFunc: method is nil but Interface.SystemEventSetFree was just called") + } + callInfo := struct { + SystemEventSetFreeRequest *nvml.SystemEventSetFreeRequest + }{ + SystemEventSetFreeRequest: systemEventSetFreeRequest, + } + mock.lockSystemEventSetFree.Lock() + mock.calls.SystemEventSetFree = append(mock.calls.SystemEventSetFree, callInfo) + mock.lockSystemEventSetFree.Unlock() + return mock.SystemEventSetFreeFunc(systemEventSetFreeRequest) +} + +// SystemEventSetFreeCalls gets all the calls that were made to SystemEventSetFree. +// Check the length with: +// +// len(mockedInterface.SystemEventSetFreeCalls()) +func (mock *Interface) SystemEventSetFreeCalls() []struct { + SystemEventSetFreeRequest *nvml.SystemEventSetFreeRequest +} { + var calls []struct { + SystemEventSetFreeRequest *nvml.SystemEventSetFreeRequest + } + mock.lockSystemEventSetFree.RLock() + calls = mock.calls.SystemEventSetFree + mock.lockSystemEventSetFree.RUnlock() + return calls +} + +// SystemEventSetWait calls SystemEventSetWaitFunc. +func (mock *Interface) SystemEventSetWait(systemEventSetWaitRequest *nvml.SystemEventSetWaitRequest) nvml.Return { + if mock.SystemEventSetWaitFunc == nil { + panic("Interface.SystemEventSetWaitFunc: method is nil but Interface.SystemEventSetWait was just called") + } + callInfo := struct { + SystemEventSetWaitRequest *nvml.SystemEventSetWaitRequest + }{ + SystemEventSetWaitRequest: systemEventSetWaitRequest, + } + mock.lockSystemEventSetWait.Lock() + mock.calls.SystemEventSetWait = append(mock.calls.SystemEventSetWait, callInfo) + mock.lockSystemEventSetWait.Unlock() + return mock.SystemEventSetWaitFunc(systemEventSetWaitRequest) +} + +// SystemEventSetWaitCalls gets all the calls that were made to SystemEventSetWait. +// Check the length with: +// +// len(mockedInterface.SystemEventSetWaitCalls()) +func (mock *Interface) SystemEventSetWaitCalls() []struct { + SystemEventSetWaitRequest *nvml.SystemEventSetWaitRequest +} { + var calls []struct { + SystemEventSetWaitRequest *nvml.SystemEventSetWaitRequest + } + mock.lockSystemEventSetWait.RLock() + calls = mock.calls.SystemEventSetWait + mock.lockSystemEventSetWait.RUnlock() + return calls +} + // SystemGetConfComputeCapabilities calls SystemGetConfComputeCapabilitiesFunc. func (mock *Interface) SystemGetConfComputeCapabilities() (nvml.ConfComputeSystemCaps, nvml.Return) { if mock.SystemGetConfComputeCapabilitiesFunc == nil { @@ -13212,6 +14924,33 @@ func (mock *Interface) SystemGetConfComputeCapabilitiesCalls() []struct { return calls } +// SystemGetConfComputeGpusReadyState calls SystemGetConfComputeGpusReadyStateFunc. +func (mock *Interface) SystemGetConfComputeGpusReadyState() (uint32, nvml.Return) { + if mock.SystemGetConfComputeGpusReadyStateFunc == nil { + panic("Interface.SystemGetConfComputeGpusReadyStateFunc: method is nil but Interface.SystemGetConfComputeGpusReadyState was just called") + } + callInfo := struct { + }{} + mock.lockSystemGetConfComputeGpusReadyState.Lock() + mock.calls.SystemGetConfComputeGpusReadyState = append(mock.calls.SystemGetConfComputeGpusReadyState, callInfo) + mock.lockSystemGetConfComputeGpusReadyState.Unlock() + return mock.SystemGetConfComputeGpusReadyStateFunc() +} + +// SystemGetConfComputeGpusReadyStateCalls gets all the calls that were made to SystemGetConfComputeGpusReadyState. +// Check the length with: +// +// len(mockedInterface.SystemGetConfComputeGpusReadyStateCalls()) +func (mock *Interface) SystemGetConfComputeGpusReadyStateCalls() []struct { +} { + var calls []struct { + } + mock.lockSystemGetConfComputeGpusReadyState.RLock() + calls = mock.calls.SystemGetConfComputeGpusReadyState + mock.lockSystemGetConfComputeGpusReadyState.RUnlock() + return calls +} + // SystemGetConfComputeKeyRotationThresholdInfo calls SystemGetConfComputeKeyRotationThresholdInfoFunc. func (mock *Interface) SystemGetConfComputeKeyRotationThresholdInfo() (nvml.ConfComputeGetKeyRotationThresholdInfo, nvml.Return) { if mock.SystemGetConfComputeKeyRotationThresholdInfoFunc == nil { @@ -13266,6 +15005,33 @@ func (mock *Interface) SystemGetConfComputeSettingsCalls() []struct { return calls } +// SystemGetConfComputeState calls SystemGetConfComputeStateFunc. +func (mock *Interface) SystemGetConfComputeState() (nvml.ConfComputeSystemState, nvml.Return) { + if mock.SystemGetConfComputeStateFunc == nil { + panic("Interface.SystemGetConfComputeStateFunc: method is nil but Interface.SystemGetConfComputeState was just called") + } + callInfo := struct { + }{} + mock.lockSystemGetConfComputeState.Lock() + mock.calls.SystemGetConfComputeState = append(mock.calls.SystemGetConfComputeState, callInfo) + mock.lockSystemGetConfComputeState.Unlock() + return mock.SystemGetConfComputeStateFunc() +} + +// SystemGetConfComputeStateCalls gets all the calls that were made to SystemGetConfComputeState. +// Check the length with: +// +// len(mockedInterface.SystemGetConfComputeStateCalls()) +func (mock *Interface) SystemGetConfComputeStateCalls() []struct { +} { + var calls []struct { + } + mock.lockSystemGetConfComputeState.RLock() + calls = mock.calls.SystemGetConfComputeState + mock.lockSystemGetConfComputeState.RUnlock() + return calls +} + // SystemGetCudaDriverVersion calls SystemGetCudaDriverVersionFunc. func (mock *Interface) SystemGetCudaDriverVersion() (int, nvml.Return) { if mock.SystemGetCudaDriverVersionFunc == nil { @@ -13320,6 +15086,33 @@ func (mock *Interface) SystemGetCudaDriverVersion_v2Calls() []struct { return calls } +// SystemGetDriverBranch calls SystemGetDriverBranchFunc. +func (mock *Interface) SystemGetDriverBranch() (nvml.SystemDriverBranchInfo, nvml.Return) { + if mock.SystemGetDriverBranchFunc == nil { + panic("Interface.SystemGetDriverBranchFunc: method is nil but Interface.SystemGetDriverBranch was just called") + } + callInfo := struct { + }{} + mock.lockSystemGetDriverBranch.Lock() + mock.calls.SystemGetDriverBranch = append(mock.calls.SystemGetDriverBranch, callInfo) + mock.lockSystemGetDriverBranch.Unlock() + return mock.SystemGetDriverBranchFunc() +} + +// SystemGetDriverBranchCalls gets all the calls that were made to SystemGetDriverBranch. +// Check the length with: +// +// len(mockedInterface.SystemGetDriverBranchCalls()) +func (mock *Interface) SystemGetDriverBranchCalls() []struct { +} { + var calls []struct { + } + mock.lockSystemGetDriverBranch.RLock() + calls = mock.calls.SystemGetDriverBranch + mock.lockSystemGetDriverBranch.RUnlock() + return calls +} + // SystemGetDriverVersion calls SystemGetDriverVersionFunc. func (mock *Interface) SystemGetDriverVersion() (string, nvml.Return) { if mock.SystemGetDriverVersionFunc == nil { @@ -13401,6 +15194,33 @@ func (mock *Interface) SystemGetNVMLVersionCalls() []struct { return calls } +// SystemGetNvlinkBwMode calls SystemGetNvlinkBwModeFunc. +func (mock *Interface) SystemGetNvlinkBwMode() (uint32, nvml.Return) { + if mock.SystemGetNvlinkBwModeFunc == nil { + panic("Interface.SystemGetNvlinkBwModeFunc: method is nil but Interface.SystemGetNvlinkBwMode was just called") + } + callInfo := struct { + }{} + mock.lockSystemGetNvlinkBwMode.Lock() + mock.calls.SystemGetNvlinkBwMode = append(mock.calls.SystemGetNvlinkBwMode, callInfo) + mock.lockSystemGetNvlinkBwMode.Unlock() + return mock.SystemGetNvlinkBwModeFunc() +} + +// SystemGetNvlinkBwModeCalls gets all the calls that were made to SystemGetNvlinkBwMode. +// Check the length with: +// +// len(mockedInterface.SystemGetNvlinkBwModeCalls()) +func (mock *Interface) SystemGetNvlinkBwModeCalls() []struct { +} { + var calls []struct { + } + mock.lockSystemGetNvlinkBwMode.RLock() + calls = mock.calls.SystemGetNvlinkBwMode + mock.lockSystemGetNvlinkBwMode.RUnlock() + return calls +} + // SystemGetProcessName calls SystemGetProcessNameFunc. func (mock *Interface) SystemGetProcessName(n int) (string, nvml.Return) { if mock.SystemGetProcessNameFunc == nil { @@ -13465,6 +15285,70 @@ func (mock *Interface) SystemGetTopologyGpuSetCalls() []struct { return calls } +// SystemRegisterEvents calls SystemRegisterEventsFunc. +func (mock *Interface) SystemRegisterEvents(systemRegisterEventRequest *nvml.SystemRegisterEventRequest) nvml.Return { + if mock.SystemRegisterEventsFunc == nil { + panic("Interface.SystemRegisterEventsFunc: method is nil but Interface.SystemRegisterEvents was just called") + } + callInfo := struct { + SystemRegisterEventRequest *nvml.SystemRegisterEventRequest + }{ + SystemRegisterEventRequest: systemRegisterEventRequest, + } + mock.lockSystemRegisterEvents.Lock() + mock.calls.SystemRegisterEvents = append(mock.calls.SystemRegisterEvents, callInfo) + mock.lockSystemRegisterEvents.Unlock() + return mock.SystemRegisterEventsFunc(systemRegisterEventRequest) +} + +// SystemRegisterEventsCalls gets all the calls that were made to SystemRegisterEvents. +// Check the length with: +// +// len(mockedInterface.SystemRegisterEventsCalls()) +func (mock *Interface) SystemRegisterEventsCalls() []struct { + SystemRegisterEventRequest *nvml.SystemRegisterEventRequest +} { + var calls []struct { + SystemRegisterEventRequest *nvml.SystemRegisterEventRequest + } + mock.lockSystemRegisterEvents.RLock() + calls = mock.calls.SystemRegisterEvents + mock.lockSystemRegisterEvents.RUnlock() + return calls +} + +// SystemSetConfComputeGpusReadyState calls SystemSetConfComputeGpusReadyStateFunc. +func (mock *Interface) SystemSetConfComputeGpusReadyState(v uint32) nvml.Return { + if mock.SystemSetConfComputeGpusReadyStateFunc == nil { + panic("Interface.SystemSetConfComputeGpusReadyStateFunc: method is nil but Interface.SystemSetConfComputeGpusReadyState was just called") + } + callInfo := struct { + V uint32 + }{ + V: v, + } + mock.lockSystemSetConfComputeGpusReadyState.Lock() + mock.calls.SystemSetConfComputeGpusReadyState = append(mock.calls.SystemSetConfComputeGpusReadyState, callInfo) + mock.lockSystemSetConfComputeGpusReadyState.Unlock() + return mock.SystemSetConfComputeGpusReadyStateFunc(v) +} + +// SystemSetConfComputeGpusReadyStateCalls gets all the calls that were made to SystemSetConfComputeGpusReadyState. +// Check the length with: +// +// len(mockedInterface.SystemSetConfComputeGpusReadyStateCalls()) +func (mock *Interface) SystemSetConfComputeGpusReadyStateCalls() []struct { + V uint32 +} { + var calls []struct { + V uint32 + } + mock.lockSystemSetConfComputeGpusReadyState.RLock() + calls = mock.calls.SystemSetConfComputeGpusReadyState + mock.lockSystemSetConfComputeGpusReadyState.RUnlock() + return calls +} + // SystemSetConfComputeKeyRotationThresholdInfo calls SystemSetConfComputeKeyRotationThresholdInfoFunc. func (mock *Interface) SystemSetConfComputeKeyRotationThresholdInfo(confComputeSetKeyRotationThresholdInfo nvml.ConfComputeSetKeyRotationThresholdInfo) nvml.Return { if mock.SystemSetConfComputeKeyRotationThresholdInfoFunc == nil { @@ -13497,6 +15381,38 @@ func (mock *Interface) SystemSetConfComputeKeyRotationThresholdInfoCalls() []str return calls } +// SystemSetNvlinkBwMode calls SystemSetNvlinkBwModeFunc. +func (mock *Interface) SystemSetNvlinkBwMode(v uint32) nvml.Return { + if mock.SystemSetNvlinkBwModeFunc == nil { + panic("Interface.SystemSetNvlinkBwModeFunc: method is nil but Interface.SystemSetNvlinkBwMode was just called") + } + callInfo := struct { + V uint32 + }{ + V: v, + } + mock.lockSystemSetNvlinkBwMode.Lock() + mock.calls.SystemSetNvlinkBwMode = append(mock.calls.SystemSetNvlinkBwMode, callInfo) + mock.lockSystemSetNvlinkBwMode.Unlock() + return mock.SystemSetNvlinkBwModeFunc(v) +} + +// SystemSetNvlinkBwModeCalls gets all the calls that were made to SystemSetNvlinkBwMode. +// Check the length with: +// +// len(mockedInterface.SystemSetNvlinkBwModeCalls()) +func (mock *Interface) SystemSetNvlinkBwModeCalls() []struct { + V uint32 +} { + var calls []struct { + V uint32 + } + mock.lockSystemSetNvlinkBwMode.RLock() + calls = mock.calls.SystemSetNvlinkBwMode + mock.lockSystemSetNvlinkBwMode.RUnlock() + return calls +} + // UnitGetCount calls UnitGetCountFunc. func (mock *Interface) UnitGetCount() (int, nvml.Return) { if mock.UnitGetCountFunc == nil { @@ -14368,6 +16284,38 @@ func (mock *Interface) VgpuInstanceGetMetadataCalls() []struct { return calls } +// VgpuInstanceGetRuntimeStateSize calls VgpuInstanceGetRuntimeStateSizeFunc. +func (mock *Interface) VgpuInstanceGetRuntimeStateSize(vgpuInstance nvml.VgpuInstance) (nvml.VgpuRuntimeState, nvml.Return) { + if mock.VgpuInstanceGetRuntimeStateSizeFunc == nil { + panic("Interface.VgpuInstanceGetRuntimeStateSizeFunc: method is nil but Interface.VgpuInstanceGetRuntimeStateSize was just called") + } + callInfo := struct { + VgpuInstance nvml.VgpuInstance + }{ + VgpuInstance: vgpuInstance, + } + mock.lockVgpuInstanceGetRuntimeStateSize.Lock() + mock.calls.VgpuInstanceGetRuntimeStateSize = append(mock.calls.VgpuInstanceGetRuntimeStateSize, callInfo) + mock.lockVgpuInstanceGetRuntimeStateSize.Unlock() + return mock.VgpuInstanceGetRuntimeStateSizeFunc(vgpuInstance) +} + +// VgpuInstanceGetRuntimeStateSizeCalls gets all the calls that were made to VgpuInstanceGetRuntimeStateSize. +// Check the length with: +// +// len(mockedInterface.VgpuInstanceGetRuntimeStateSizeCalls()) +func (mock *Interface) VgpuInstanceGetRuntimeStateSizeCalls() []struct { + VgpuInstance nvml.VgpuInstance +} { + var calls []struct { + VgpuInstance nvml.VgpuInstance + } + mock.lockVgpuInstanceGetRuntimeStateSize.RLock() + calls = mock.calls.VgpuInstanceGetRuntimeStateSize + mock.lockVgpuInstanceGetRuntimeStateSize.RUnlock() + return calls +} + // VgpuInstanceGetType calls VgpuInstanceGetTypeFunc. func (mock *Interface) VgpuInstanceGetType(vgpuInstance nvml.VgpuInstance) (nvml.VgpuTypeId, nvml.Return) { if mock.VgpuInstanceGetTypeFunc == nil { @@ -14532,6 +16480,38 @@ func (mock *Interface) VgpuInstanceSetEncoderCapacityCalls() []struct { return calls } +// VgpuTypeGetBAR1Info calls VgpuTypeGetBAR1InfoFunc. +func (mock *Interface) VgpuTypeGetBAR1Info(vgpuTypeId nvml.VgpuTypeId) (nvml.VgpuTypeBar1Info, nvml.Return) { + if mock.VgpuTypeGetBAR1InfoFunc == nil { + panic("Interface.VgpuTypeGetBAR1InfoFunc: method is nil but Interface.VgpuTypeGetBAR1Info was just called") + } + callInfo := struct { + VgpuTypeId nvml.VgpuTypeId + }{ + VgpuTypeId: vgpuTypeId, + } + mock.lockVgpuTypeGetBAR1Info.Lock() + mock.calls.VgpuTypeGetBAR1Info = append(mock.calls.VgpuTypeGetBAR1Info, callInfo) + mock.lockVgpuTypeGetBAR1Info.Unlock() + return mock.VgpuTypeGetBAR1InfoFunc(vgpuTypeId) +} + +// VgpuTypeGetBAR1InfoCalls gets all the calls that were made to VgpuTypeGetBAR1Info. +// Check the length with: +// +// len(mockedInterface.VgpuTypeGetBAR1InfoCalls()) +func (mock *Interface) VgpuTypeGetBAR1InfoCalls() []struct { + VgpuTypeId nvml.VgpuTypeId +} { + var calls []struct { + VgpuTypeId nvml.VgpuTypeId + } + mock.lockVgpuTypeGetBAR1Info.RLock() + calls = mock.calls.VgpuTypeGetBAR1Info + mock.lockVgpuTypeGetBAR1Info.RUnlock() + return calls +} + // VgpuTypeGetCapabilities calls VgpuTypeGetCapabilitiesFunc. func (mock *Interface) VgpuTypeGetCapabilities(vgpuTypeId nvml.VgpuTypeId, vgpuCapability nvml.VgpuCapability) (bool, nvml.Return) { if mock.VgpuTypeGetCapabilitiesFunc == nil { @@ -14796,6 +16776,38 @@ func (mock *Interface) VgpuTypeGetMaxInstancesCalls() []struct { return calls } +// VgpuTypeGetMaxInstancesPerGpuInstance calls VgpuTypeGetMaxInstancesPerGpuInstanceFunc. +func (mock *Interface) VgpuTypeGetMaxInstancesPerGpuInstance(vgpuTypeMaxInstance *nvml.VgpuTypeMaxInstance) nvml.Return { + if mock.VgpuTypeGetMaxInstancesPerGpuInstanceFunc == nil { + panic("Interface.VgpuTypeGetMaxInstancesPerGpuInstanceFunc: method is nil but Interface.VgpuTypeGetMaxInstancesPerGpuInstance was just called") + } + callInfo := struct { + VgpuTypeMaxInstance *nvml.VgpuTypeMaxInstance + }{ + VgpuTypeMaxInstance: vgpuTypeMaxInstance, + } + mock.lockVgpuTypeGetMaxInstancesPerGpuInstance.Lock() + mock.calls.VgpuTypeGetMaxInstancesPerGpuInstance = append(mock.calls.VgpuTypeGetMaxInstancesPerGpuInstance, callInfo) + mock.lockVgpuTypeGetMaxInstancesPerGpuInstance.Unlock() + return mock.VgpuTypeGetMaxInstancesPerGpuInstanceFunc(vgpuTypeMaxInstance) +} + +// VgpuTypeGetMaxInstancesPerGpuInstanceCalls gets all the calls that were made to VgpuTypeGetMaxInstancesPerGpuInstance. +// Check the length with: +// +// len(mockedInterface.VgpuTypeGetMaxInstancesPerGpuInstanceCalls()) +func (mock *Interface) VgpuTypeGetMaxInstancesPerGpuInstanceCalls() []struct { + VgpuTypeMaxInstance *nvml.VgpuTypeMaxInstance +} { + var calls []struct { + VgpuTypeMaxInstance *nvml.VgpuTypeMaxInstance + } + mock.lockVgpuTypeGetMaxInstancesPerGpuInstance.RLock() + calls = mock.calls.VgpuTypeGetMaxInstancesPerGpuInstance + mock.lockVgpuTypeGetMaxInstancesPerGpuInstance.RUnlock() + return calls +} + // VgpuTypeGetMaxInstancesPerVm calls VgpuTypeGetMaxInstancesPerVmFunc. func (mock *Interface) VgpuTypeGetMaxInstancesPerVm(vgpuTypeId nvml.VgpuTypeId) (int, nvml.Return) { if mock.VgpuTypeGetMaxInstancesPerVmFunc == nil { diff --git a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/vgpuinstance.go b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/vgpuinstance.go index e0af01381..828f4233f 100644 --- a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/vgpuinstance.go +++ b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/vgpuinstance.go @@ -72,6 +72,9 @@ var _ nvml.VgpuInstance = &VgpuInstance{} // GetMetadataFunc: func() (nvml.VgpuMetadata, nvml.Return) { // panic("mock out the GetMetadata method") // }, +// GetRuntimeStateSizeFunc: func() (nvml.VgpuRuntimeState, nvml.Return) { +// panic("mock out the GetRuntimeStateSize method") +// }, // GetTypeFunc: func() (nvml.VgpuTypeId, nvml.Return) { // panic("mock out the GetType method") // }, @@ -148,6 +151,9 @@ type VgpuInstance struct { // GetMetadataFunc mocks the GetMetadata method. GetMetadataFunc func() (nvml.VgpuMetadata, nvml.Return) + // GetRuntimeStateSizeFunc mocks the GetRuntimeStateSize method. + GetRuntimeStateSizeFunc func() (nvml.VgpuRuntimeState, nvml.Return) + // GetTypeFunc mocks the GetType method. GetTypeFunc func() (nvml.VgpuTypeId, nvml.Return) @@ -221,6 +227,9 @@ type VgpuInstance struct { // GetMetadata holds details about calls to the GetMetadata method. GetMetadata []struct { } + // GetRuntimeStateSize holds details about calls to the GetRuntimeStateSize method. + GetRuntimeStateSize []struct { + } // GetType holds details about calls to the GetType method. GetType []struct { } @@ -257,6 +266,7 @@ type VgpuInstance struct { lockGetLicenseStatus sync.RWMutex lockGetMdevUUID sync.RWMutex lockGetMetadata sync.RWMutex + lockGetRuntimeStateSize sync.RWMutex lockGetType sync.RWMutex lockGetUUID sync.RWMutex lockGetVmDriverVersion sync.RWMutex @@ -755,6 +765,33 @@ func (mock *VgpuInstance) GetMetadataCalls() []struct { return calls } +// GetRuntimeStateSize calls GetRuntimeStateSizeFunc. +func (mock *VgpuInstance) GetRuntimeStateSize() (nvml.VgpuRuntimeState, nvml.Return) { + if mock.GetRuntimeStateSizeFunc == nil { + panic("VgpuInstance.GetRuntimeStateSizeFunc: method is nil but VgpuInstance.GetRuntimeStateSize was just called") + } + callInfo := struct { + }{} + mock.lockGetRuntimeStateSize.Lock() + mock.calls.GetRuntimeStateSize = append(mock.calls.GetRuntimeStateSize, callInfo) + mock.lockGetRuntimeStateSize.Unlock() + return mock.GetRuntimeStateSizeFunc() +} + +// GetRuntimeStateSizeCalls gets all the calls that were made to GetRuntimeStateSize. +// Check the length with: +// +// len(mockedVgpuInstance.GetRuntimeStateSizeCalls()) +func (mock *VgpuInstance) GetRuntimeStateSizeCalls() []struct { +} { + var calls []struct { + } + mock.lockGetRuntimeStateSize.RLock() + calls = mock.calls.GetRuntimeStateSize + mock.lockGetRuntimeStateSize.RUnlock() + return calls +} + // GetType calls GetTypeFunc. func (mock *VgpuInstance) GetType() (nvml.VgpuTypeId, nvml.Return) { if mock.GetTypeFunc == nil { diff --git a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/vgputypeid.go b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/vgputypeid.go index 00246e85f..467d7468b 100644 --- a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/vgputypeid.go +++ b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/mock/vgputypeid.go @@ -18,6 +18,9 @@ var _ nvml.VgpuTypeId = &VgpuTypeId{} // // // make and configure a mocked nvml.VgpuTypeId // mockedVgpuTypeId := &VgpuTypeId{ +// GetBAR1InfoFunc: func() (nvml.VgpuTypeBar1Info, nvml.Return) { +// panic("mock out the GetBAR1Info method") +// }, // GetCapabilitiesFunc: func(vgpuCapability nvml.VgpuCapability) (bool, nvml.Return) { // panic("mock out the GetCapabilities method") // }, @@ -67,6 +70,9 @@ var _ nvml.VgpuTypeId = &VgpuTypeId{} // // } type VgpuTypeId struct { + // GetBAR1InfoFunc mocks the GetBAR1Info method. + GetBAR1InfoFunc func() (nvml.VgpuTypeBar1Info, nvml.Return) + // GetCapabilitiesFunc mocks the GetCapabilities method. GetCapabilitiesFunc func(vgpuCapability nvml.VgpuCapability) (bool, nvml.Return) @@ -111,6 +117,9 @@ type VgpuTypeId struct { // calls tracks calls to the methods. calls struct { + // GetBAR1Info holds details about calls to the GetBAR1Info method. + GetBAR1Info []struct { + } // GetCapabilities holds details about calls to the GetCapabilities method. GetCapabilities []struct { // VgpuCapability is the vgpuCapability argument value. @@ -164,6 +173,7 @@ type VgpuTypeId struct { Device nvml.Device } } + lockGetBAR1Info sync.RWMutex lockGetCapabilities sync.RWMutex lockGetClass sync.RWMutex lockGetCreatablePlacements sync.RWMutex @@ -180,6 +190,33 @@ type VgpuTypeId struct { lockGetSupportedPlacements sync.RWMutex } +// GetBAR1Info calls GetBAR1InfoFunc. +func (mock *VgpuTypeId) GetBAR1Info() (nvml.VgpuTypeBar1Info, nvml.Return) { + if mock.GetBAR1InfoFunc == nil { + panic("VgpuTypeId.GetBAR1InfoFunc: method is nil but VgpuTypeId.GetBAR1Info was just called") + } + callInfo := struct { + }{} + mock.lockGetBAR1Info.Lock() + mock.calls.GetBAR1Info = append(mock.calls.GetBAR1Info, callInfo) + mock.lockGetBAR1Info.Unlock() + return mock.GetBAR1InfoFunc() +} + +// GetBAR1InfoCalls gets all the calls that were made to GetBAR1Info. +// Check the length with: +// +// len(mockedVgpuTypeId.GetBAR1InfoCalls()) +func (mock *VgpuTypeId) GetBAR1InfoCalls() []struct { +} { + var calls []struct { + } + mock.lockGetBAR1Info.RLock() + calls = mock.calls.GetBAR1Info + mock.lockGetBAR1Info.RUnlock() + return calls +} + // GetCapabilities calls GetCapabilitiesFunc. func (mock *VgpuTypeId) GetCapabilities(vgpuCapability nvml.VgpuCapability) (bool, nvml.Return) { if mock.GetCapabilitiesFunc == nil { diff --git a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/nvml.go b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/nvml.go index 6ba290c5f..95d67d6da 100644 --- a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/nvml.go +++ b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/nvml.go @@ -121,6 +121,15 @@ func nvmlSystemGetTopologyGpuSet(CpuNumber uint32, Count *uint32, DeviceArray *n return __v } +// nvmlSystemGetDriverBranch function as declared in nvml/nvml.h +func nvmlSystemGetDriverBranch(BranchInfo *SystemDriverBranchInfo, Length uint32) Return { + cBranchInfo, _ := (*C.nvmlSystemDriverBranchInfo_t)(unsafe.Pointer(BranchInfo)), cgoAllocsUnknown + cLength, _ := (C.uint)(Length), cgoAllocsUnknown + __ret := C.nvmlSystemGetDriverBranch(cBranchInfo, cLength) + __v := (Return)(__ret) + return __v +} + // nvmlUnitGetCount function as declared in nvml/nvml.h func nvmlUnitGetCount(UnitCount *uint32) Return { cUnitCount, _ := (*C.uint)(unsafe.Pointer(UnitCount)), cgoAllocsUnknown @@ -238,6 +247,15 @@ func nvmlDeviceGetHandleByUUID(Uuid string, nvmlDevice *nvmlDevice) Return { return __v } +// nvmlDeviceGetHandleByUUIDV function as declared in nvml/nvml.h +func nvmlDeviceGetHandleByUUIDV(Uuid *UUID, nvmlDevice *nvmlDevice) Return { + cUuid, _ := (*C.nvmlUUID_t)(unsafe.Pointer(Uuid)), cgoAllocsUnknown + cnvmlDevice, _ := (*C.nvmlDevice_t)(unsafe.Pointer(nvmlDevice)), cgoAllocsUnknown + __ret := C.nvmlDeviceGetHandleByUUIDV(cUuid, cnvmlDevice) + __v := (Return)(__ret) + return __v +} + // nvmlDeviceGetHandleByPciBusId_v2 function as declared in nvml/nvml.h func nvmlDeviceGetHandleByPciBusId_v2(PciBusId string, nvmlDevice *nvmlDevice) Return { cPciBusId, _ := unpackPCharString(PciBusId) @@ -698,6 +716,15 @@ func nvmlDeviceGetFanSpeed_v2(nvmlDevice nvmlDevice, Fan uint32, Speed *uint32) return __v } +// nvmlDeviceGetFanSpeedRPM function as declared in nvml/nvml.h +func nvmlDeviceGetFanSpeedRPM(nvmlDevice nvmlDevice, FanSpeed *FanSpeedInfo) Return { + cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown + cFanSpeed, _ := (*C.nvmlFanSpeedInfo_t)(unsafe.Pointer(FanSpeed)), cgoAllocsUnknown + __ret := C.nvmlDeviceGetFanSpeedRPM(cnvmlDevice, cFanSpeed) + __v := (Return)(__ret) + return __v +} + // nvmlDeviceGetTargetFanSpeed function as declared in nvml/nvml.h func nvmlDeviceGetTargetFanSpeed(nvmlDevice nvmlDevice, Fan uint32, TargetSpeed *uint32) Return { cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown @@ -747,6 +774,24 @@ func nvmlDeviceGetTemperature(nvmlDevice nvmlDevice, SensorType TemperatureSenso return __v } +// nvmlDeviceGetCoolerInfo function as declared in nvml/nvml.h +func nvmlDeviceGetCoolerInfo(nvmlDevice nvmlDevice, CoolerInfo *CoolerInfo) Return { + cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown + cCoolerInfo, _ := (*C.nvmlCoolerInfo_t)(unsafe.Pointer(CoolerInfo)), cgoAllocsUnknown + __ret := C.nvmlDeviceGetCoolerInfo(cnvmlDevice, cCoolerInfo) + __v := (Return)(__ret) + return __v +} + +// nvmlDeviceGetTemperatureV function as declared in nvml/nvml.h +func nvmlDeviceGetTemperatureV(nvmlDevice nvmlDevice, Temperature *Temperature) Return { + cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown + cTemperature, _ := (*C.nvmlTemperature_t)(unsafe.Pointer(Temperature)), cgoAllocsUnknown + __ret := C.nvmlDeviceGetTemperatureV(cnvmlDevice, cTemperature) + __v := (Return)(__ret) + return __v +} + // nvmlDeviceGetTemperatureThreshold function as declared in nvml/nvml.h func nvmlDeviceGetTemperatureThreshold(nvmlDevice nvmlDevice, ThresholdType TemperatureThresholds, Temp *uint32) Return { cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown @@ -757,6 +802,15 @@ func nvmlDeviceGetTemperatureThreshold(nvmlDevice nvmlDevice, ThresholdType Temp return __v } +// nvmlDeviceGetMarginTemperature function as declared in nvml/nvml.h +func nvmlDeviceGetMarginTemperature(nvmlDevice nvmlDevice, MarginTempInfo *MarginTemperature) Return { + cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown + cMarginTempInfo, _ := (*C.nvmlMarginTemperature_t)(unsafe.Pointer(MarginTempInfo)), cgoAllocsUnknown + __ret := C.nvmlDeviceGetMarginTemperature(cnvmlDevice, cMarginTempInfo) + __v := (Return)(__ret) + return __v +} + // nvmlDeviceGetThermalSettings function as declared in nvml/nvml.h func nvmlDeviceGetThermalSettings(nvmlDevice nvmlDevice, SensorIndex uint32, PThermalSettings *GpuThermalSettings) Return { cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown @@ -881,6 +935,42 @@ func nvmlDeviceGetMemClkMinMaxVfOffset(nvmlDevice nvmlDevice, MinOffset *int32, return __v } +// nvmlDeviceGetClockOffsets function as declared in nvml/nvml.h +func nvmlDeviceGetClockOffsets(nvmlDevice nvmlDevice, Info *ClockOffset) Return { + cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown + cInfo, _ := (*C.nvmlClockOffset_t)(unsafe.Pointer(Info)), cgoAllocsUnknown + __ret := C.nvmlDeviceGetClockOffsets(cnvmlDevice, cInfo) + __v := (Return)(__ret) + return __v +} + +// nvmlDeviceSetClockOffsets function as declared in nvml/nvml.h +func nvmlDeviceSetClockOffsets(nvmlDevice nvmlDevice, Info *ClockOffset) Return { + cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown + cInfo, _ := (*C.nvmlClockOffset_t)(unsafe.Pointer(Info)), cgoAllocsUnknown + __ret := C.nvmlDeviceSetClockOffsets(cnvmlDevice, cInfo) + __v := (Return)(__ret) + return __v +} + +// nvmlDeviceGetPerformanceModes function as declared in nvml/nvml.h +func nvmlDeviceGetPerformanceModes(nvmlDevice nvmlDevice, PerfModes *DevicePerfModes) Return { + cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown + cPerfModes, _ := (*C.nvmlDevicePerfModes_t)(unsafe.Pointer(PerfModes)), cgoAllocsUnknown + __ret := C.nvmlDeviceGetPerformanceModes(cnvmlDevice, cPerfModes) + __v := (Return)(__ret) + return __v +} + +// nvmlDeviceGetCurrentClockFreqs function as declared in nvml/nvml.h +func nvmlDeviceGetCurrentClockFreqs(nvmlDevice nvmlDevice, CurrentClockFreqs *DeviceCurrentClockFreqs) Return { + cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown + cCurrentClockFreqs, _ := (*C.nvmlDeviceCurrentClockFreqs_t)(unsafe.Pointer(CurrentClockFreqs)), cgoAllocsUnknown + __ret := C.nvmlDeviceGetCurrentClockFreqs(cnvmlDevice, cCurrentClockFreqs) + __v := (Return)(__ret) + return __v +} + // nvmlDeviceGetPowerManagementMode function as declared in nvml/nvml.h func nvmlDeviceGetPowerManagementMode(nvmlDevice nvmlDevice, Mode *EnableState) Return { cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown @@ -992,6 +1082,25 @@ func nvmlDeviceGetCudaComputeCapability(nvmlDevice nvmlDevice, Major *int32, Min return __v } +// nvmlDeviceGetDramEncryptionMode function as declared in nvml/nvml.h +func nvmlDeviceGetDramEncryptionMode(nvmlDevice nvmlDevice, Current *DramEncryptionInfo, Pending *DramEncryptionInfo) Return { + cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown + cCurrent, _ := (*C.nvmlDramEncryptionInfo_t)(unsafe.Pointer(Current)), cgoAllocsUnknown + cPending, _ := (*C.nvmlDramEncryptionInfo_t)(unsafe.Pointer(Pending)), cgoAllocsUnknown + __ret := C.nvmlDeviceGetDramEncryptionMode(cnvmlDevice, cCurrent, cPending) + __v := (Return)(__ret) + return __v +} + +// nvmlDeviceSetDramEncryptionMode function as declared in nvml/nvml.h +func nvmlDeviceSetDramEncryptionMode(nvmlDevice nvmlDevice, DramEncryption *DramEncryptionInfo) Return { + cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown + cDramEncryption, _ := (*C.nvmlDramEncryptionInfo_t)(unsafe.Pointer(DramEncryption)), cgoAllocsUnknown + __ret := C.nvmlDeviceSetDramEncryptionMode(cnvmlDevice, cDramEncryption) + __v := (Return)(__ret) + return __v +} + // nvmlDeviceGetEccMode function as declared in nvml/nvml.h func nvmlDeviceGetEccMode(nvmlDevice nvmlDevice, Current *EnableState, Pending *EnableState) Return { cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown @@ -1162,12 +1271,12 @@ func nvmlDeviceGetFBCSessions(nvmlDevice nvmlDevice, SessionCount *uint32, Sessi return __v } -// nvmlDeviceGetDriverModel function as declared in nvml/nvml.h -func nvmlDeviceGetDriverModel(nvmlDevice nvmlDevice, Current *DriverModel, Pending *DriverModel) Return { +// nvmlDeviceGetDriverModel_v2 function as declared in nvml/nvml.h +func nvmlDeviceGetDriverModel_v2(nvmlDevice nvmlDevice, Current *DriverModel, Pending *DriverModel) Return { cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown cCurrent, _ := (*C.nvmlDriverModel_t)(unsafe.Pointer(Current)), cgoAllocsUnknown cPending, _ := (*C.nvmlDriverModel_t)(unsafe.Pointer(Pending)), cgoAllocsUnknown - __ret := C.nvmlDeviceGetDriverModel(cnvmlDevice, cCurrent, cPending) + __ret := C.nvmlDeviceGetDriverModel_v2(cnvmlDevice, cCurrent, cPending) __v := (Return)(__ret) return __v } @@ -1440,6 +1549,31 @@ func nvmlSystemGetConfComputeKeyRotationThresholdInfo(PKeyRotationThrInfo *ConfC return __v } +// nvmlDeviceSetConfComputeUnprotectedMemSize function as declared in nvml/nvml.h +func nvmlDeviceSetConfComputeUnprotectedMemSize(nvmlDevice nvmlDevice, SizeKiB uint64) Return { + cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown + cSizeKiB, _ := (C.ulonglong)(SizeKiB), cgoAllocsUnknown + __ret := C.nvmlDeviceSetConfComputeUnprotectedMemSize(cnvmlDevice, cSizeKiB) + __v := (Return)(__ret) + return __v +} + +// nvmlSystemSetConfComputeGpusReadyState function as declared in nvml/nvml.h +func nvmlSystemSetConfComputeGpusReadyState(IsAcceptingWork uint32) Return { + cIsAcceptingWork, _ := (C.uint)(IsAcceptingWork), cgoAllocsUnknown + __ret := C.nvmlSystemSetConfComputeGpusReadyState(cIsAcceptingWork) + __v := (Return)(__ret) + return __v +} + +// nvmlSystemSetConfComputeKeyRotationThresholdInfo function as declared in nvml/nvml.h +func nvmlSystemSetConfComputeKeyRotationThresholdInfo(PKeyRotationThrInfo *ConfComputeSetKeyRotationThresholdInfo) Return { + cPKeyRotationThrInfo, _ := (*C.nvmlConfComputeSetKeyRotationThresholdInfo_t)(unsafe.Pointer(PKeyRotationThrInfo)), cgoAllocsUnknown + __ret := C.nvmlSystemSetConfComputeKeyRotationThresholdInfo(cPKeyRotationThrInfo) + __v := (Return)(__ret) + return __v +} + // nvmlSystemGetConfComputeSettings function as declared in nvml/nvml.h func nvmlSystemGetConfComputeSettings(Settings *SystemConfComputeSettings) Return { cSettings, _ := (*C.nvmlSystemConfComputeSettings_t)(unsafe.Pointer(Settings)), cgoAllocsUnknown @@ -1467,6 +1601,15 @@ func nvmlDeviceGetGspFirmwareMode(nvmlDevice nvmlDevice, IsEnabled *uint32, Defa return __v } +// nvmlDeviceGetSramEccErrorStatus function as declared in nvml/nvml.h +func nvmlDeviceGetSramEccErrorStatus(nvmlDevice nvmlDevice, Status *EccSramErrorStatus) Return { + cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown + cStatus, _ := (*C.nvmlEccSramErrorStatus_t)(unsafe.Pointer(Status)), cgoAllocsUnknown + __ret := C.nvmlDeviceGetSramEccErrorStatus(cnvmlDevice, cStatus) + __v := (Return)(__ret) + return __v +} + // nvmlDeviceGetAccountingMode function as declared in nvml/nvml.h func nvmlDeviceGetAccountingMode(nvmlDevice nvmlDevice, Mode *EnableState) Return { cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown @@ -1596,6 +1739,15 @@ func nvmlDeviceGetProcessesUtilizationInfo(nvmlDevice nvmlDevice, ProcesesUtilIn return __v } +// nvmlDeviceGetPlatformInfo function as declared in nvml/nvml.h +func nvmlDeviceGetPlatformInfo(nvmlDevice nvmlDevice, PlatformInfo *PlatformInfo) Return { + cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown + cPlatformInfo, _ := (*C.nvmlPlatformInfo_t)(unsafe.Pointer(PlatformInfo)), cgoAllocsUnknown + __ret := C.nvmlDeviceGetPlatformInfo(cnvmlDevice, cPlatformInfo) + __v := (Return)(__ret) + return __v +} + // nvmlUnitSetLedState function as declared in nvml/nvml.h func nvmlUnitSetLedState(nvmlUnit nvmlUnit, Color LedColor) Return { cnvmlUnit, _ := *(*C.nvmlUnit_t)(unsafe.Pointer(&nvmlUnit)), cgoAllocsUnknown @@ -1809,31 +1961,6 @@ func nvmlDeviceSetMemClkVfOffset(nvmlDevice nvmlDevice, Offset int32) Return { return __v } -// nvmlDeviceSetConfComputeUnprotectedMemSize function as declared in nvml/nvml.h -func nvmlDeviceSetConfComputeUnprotectedMemSize(nvmlDevice nvmlDevice, SizeKiB uint64) Return { - cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown - cSizeKiB, _ := (C.ulonglong)(SizeKiB), cgoAllocsUnknown - __ret := C.nvmlDeviceSetConfComputeUnprotectedMemSize(cnvmlDevice, cSizeKiB) - __v := (Return)(__ret) - return __v -} - -// nvmlSystemSetConfComputeGpusReadyState function as declared in nvml/nvml.h -func nvmlSystemSetConfComputeGpusReadyState(IsAcceptingWork uint32) Return { - cIsAcceptingWork, _ := (C.uint)(IsAcceptingWork), cgoAllocsUnknown - __ret := C.nvmlSystemSetConfComputeGpusReadyState(cIsAcceptingWork) - __v := (Return)(__ret) - return __v -} - -// nvmlSystemSetConfComputeKeyRotationThresholdInfo function as declared in nvml/nvml.h -func nvmlSystemSetConfComputeKeyRotationThresholdInfo(PKeyRotationThrInfo *ConfComputeSetKeyRotationThresholdInfo) Return { - cPKeyRotationThrInfo, _ := (*C.nvmlConfComputeSetKeyRotationThresholdInfo_t)(unsafe.Pointer(PKeyRotationThrInfo)), cgoAllocsUnknown - __ret := C.nvmlSystemSetConfComputeKeyRotationThresholdInfo(cPKeyRotationThrInfo) - __v := (Return)(__ret) - return __v -} - // nvmlDeviceSetAccountingMode function as declared in nvml/nvml.h func nvmlDeviceSetAccountingMode(nvmlDevice nvmlDevice, Mode EnableState) Return { cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown @@ -1851,6 +1978,15 @@ func nvmlDeviceClearAccountingPids(nvmlDevice nvmlDevice) Return { return __v } +// nvmlDeviceSetPowerManagementLimit_v2 function as declared in nvml/nvml.h +func nvmlDeviceSetPowerManagementLimit_v2(nvmlDevice nvmlDevice, PowerValue *PowerValue_v2) Return { + cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown + cPowerValue, _ := (*C.nvmlPowerValue_v2_t)(unsafe.Pointer(PowerValue)), cgoAllocsUnknown + __ret := C.nvmlDeviceSetPowerManagementLimit_v2(cnvmlDevice, cPowerValue) + __v := (Return)(__ret) + return __v +} + // nvmlDeviceGetNvLinkState function as declared in nvml/nvml.h func nvmlDeviceGetNvLinkState(nvmlDevice nvmlDevice, Link uint32, IsActive *EnableState) Return { cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown @@ -1978,6 +2114,58 @@ func nvmlDeviceGetNvLinkRemoteDeviceType(nvmlDevice nvmlDevice, Link uint32, PNv return __v } +// nvmlDeviceSetNvLinkDeviceLowPowerThreshold function as declared in nvml/nvml.h +func nvmlDeviceSetNvLinkDeviceLowPowerThreshold(nvmlDevice nvmlDevice, Info *NvLinkPowerThres) Return { + cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown + cInfo, _ := (*C.nvmlNvLinkPowerThres_t)(unsafe.Pointer(Info)), cgoAllocsUnknown + __ret := C.nvmlDeviceSetNvLinkDeviceLowPowerThreshold(cnvmlDevice, cInfo) + __v := (Return)(__ret) + return __v +} + +// nvmlSystemSetNvlinkBwMode function as declared in nvml/nvml.h +func nvmlSystemSetNvlinkBwMode(NvlinkBwMode uint32) Return { + cNvlinkBwMode, _ := (C.uint)(NvlinkBwMode), cgoAllocsUnknown + __ret := C.nvmlSystemSetNvlinkBwMode(cNvlinkBwMode) + __v := (Return)(__ret) + return __v +} + +// nvmlSystemGetNvlinkBwMode function as declared in nvml/nvml.h +func nvmlSystemGetNvlinkBwMode(NvlinkBwMode *uint32) Return { + cNvlinkBwMode, _ := (*C.uint)(unsafe.Pointer(NvlinkBwMode)), cgoAllocsUnknown + __ret := C.nvmlSystemGetNvlinkBwMode(cNvlinkBwMode) + __v := (Return)(__ret) + return __v +} + +// nvmlDeviceGetNvlinkSupportedBwModes function as declared in nvml/nvml.h +func nvmlDeviceGetNvlinkSupportedBwModes(nvmlDevice nvmlDevice, SupportedBwMode *NvlinkSupportedBwModes) Return { + cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown + cSupportedBwMode, _ := (*C.nvmlNvlinkSupportedBwModes_t)(unsafe.Pointer(SupportedBwMode)), cgoAllocsUnknown + __ret := C.nvmlDeviceGetNvlinkSupportedBwModes(cnvmlDevice, cSupportedBwMode) + __v := (Return)(__ret) + return __v +} + +// nvmlDeviceGetNvlinkBwMode function as declared in nvml/nvml.h +func nvmlDeviceGetNvlinkBwMode(nvmlDevice nvmlDevice, GetBwMode *NvlinkGetBwMode) Return { + cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown + cGetBwMode, _ := (*C.nvmlNvlinkGetBwMode_t)(unsafe.Pointer(GetBwMode)), cgoAllocsUnknown + __ret := C.nvmlDeviceGetNvlinkBwMode(cnvmlDevice, cGetBwMode) + __v := (Return)(__ret) + return __v +} + +// nvmlDeviceSetNvlinkBwMode function as declared in nvml/nvml.h +func nvmlDeviceSetNvlinkBwMode(nvmlDevice nvmlDevice, SetBwMode *NvlinkSetBwMode) Return { + cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown + cSetBwMode, _ := (*C.nvmlNvlinkSetBwMode_t)(unsafe.Pointer(SetBwMode)), cgoAllocsUnknown + __ret := C.nvmlDeviceSetNvlinkBwMode(cnvmlDevice, cSetBwMode) + __v := (Return)(__ret) + return __v +} + // nvmlEventSetCreate function as declared in nvml/nvml.h func nvmlEventSetCreate(Set *nvmlEventSet) Return { cSet, _ := (*C.nvmlEventSet_t)(unsafe.Pointer(Set)), cgoAllocsUnknown @@ -2023,6 +2211,38 @@ func nvmlEventSetFree(Set nvmlEventSet) Return { return __v } +// nvmlSystemEventSetCreate function as declared in nvml/nvml.h +func nvmlSystemEventSetCreate(Request *SystemEventSetCreateRequest) Return { + cRequest, _ := (*C.nvmlSystemEventSetCreateRequest_t)(unsafe.Pointer(Request)), cgoAllocsUnknown + __ret := C.nvmlSystemEventSetCreate(cRequest) + __v := (Return)(__ret) + return __v +} + +// nvmlSystemEventSetFree function as declared in nvml/nvml.h +func nvmlSystemEventSetFree(Request *SystemEventSetFreeRequest) Return { + cRequest, _ := (*C.nvmlSystemEventSetFreeRequest_t)(unsafe.Pointer(Request)), cgoAllocsUnknown + __ret := C.nvmlSystemEventSetFree(cRequest) + __v := (Return)(__ret) + return __v +} + +// nvmlSystemRegisterEvents function as declared in nvml/nvml.h +func nvmlSystemRegisterEvents(Request *SystemRegisterEventRequest) Return { + cRequest, _ := (*C.nvmlSystemRegisterEventRequest_t)(unsafe.Pointer(Request)), cgoAllocsUnknown + __ret := C.nvmlSystemRegisterEvents(cRequest) + __v := (Return)(__ret) + return __v +} + +// nvmlSystemEventSetWait function as declared in nvml/nvml.h +func nvmlSystemEventSetWait(Request *SystemEventSetWaitRequest) Return { + cRequest, _ := (*C.nvmlSystemEventSetWaitRequest_t)(unsafe.Pointer(Request)), cgoAllocsUnknown + __ret := C.nvmlSystemEventSetWait(cRequest) + __v := (Return)(__ret) + return __v +} + // nvmlDeviceModifyDrainState function as declared in nvml/nvml.h func nvmlDeviceModifyDrainState(PciInfo *PciInfo, NewState EnableState) Return { cPciInfo, _ := (*C.nvmlPciInfo_t)(unsafe.Pointer(PciInfo)), cgoAllocsUnknown @@ -2171,6 +2391,15 @@ func nvmlVgpuTypeGetFbReservation(nvmlVgpuTypeId nvmlVgpuTypeId, FbReservation * return __v } +// nvmlVgpuInstanceGetRuntimeStateSize function as declared in nvml/nvml.h +func nvmlVgpuInstanceGetRuntimeStateSize(nvmlVgpuInstance nvmlVgpuInstance, PState *VgpuRuntimeState) Return { + cnvmlVgpuInstance, _ := (C.nvmlVgpuInstance_t)(nvmlVgpuInstance), cgoAllocsUnknown + cPState, _ := (*C.nvmlVgpuRuntimeState_t)(unsafe.Pointer(PState)), cgoAllocsUnknown + __ret := C.nvmlVgpuInstanceGetRuntimeStateSize(cnvmlVgpuInstance, cPState) + __v := (Return)(__ret) + return __v +} + // nvmlDeviceSetVgpuCapabilities function as declared in nvml/nvml.h func nvmlDeviceSetVgpuCapabilities(nvmlDevice nvmlDevice, Capability DeviceVgpuCapability, State EnableState) Return { cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown @@ -2335,6 +2564,15 @@ func nvmlVgpuTypeGetMaxInstancesPerVm(nvmlVgpuTypeId nvmlVgpuTypeId, VgpuInstanc return __v } +// nvmlVgpuTypeGetBAR1Info function as declared in nvml/nvml.h +func nvmlVgpuTypeGetBAR1Info(nvmlVgpuTypeId nvmlVgpuTypeId, Bar1Info *VgpuTypeBar1Info) Return { + cnvmlVgpuTypeId, _ := (C.nvmlVgpuTypeId_t)(nvmlVgpuTypeId), cgoAllocsUnknown + cBar1Info, _ := (*C.nvmlVgpuTypeBar1Info_t)(unsafe.Pointer(Bar1Info)), cgoAllocsUnknown + __ret := C.nvmlVgpuTypeGetBAR1Info(cnvmlVgpuTypeId, cBar1Info) + __v := (Return)(__ret) + return __v +} + // nvmlDeviceGetActiveVgpus function as declared in nvml/nvml.h func nvmlDeviceGetActiveVgpus(nvmlDevice nvmlDevice, VgpuCount *uint32, VgpuInstances *nvmlVgpuInstance) Return { cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown @@ -2518,6 +2756,86 @@ func nvmlVgpuInstanceGetMdevUUID(nvmlVgpuInstance nvmlVgpuInstance, MdevUuid *by return __v } +// nvmlGpuInstanceGetCreatableVgpus function as declared in nvml/nvml.h +func nvmlGpuInstanceGetCreatableVgpus(nvmlGpuInstance nvmlGpuInstance, PVgpus *VgpuTypeIdInfo) Return { + cnvmlGpuInstance, _ := *(*C.nvmlGpuInstance_t)(unsafe.Pointer(&nvmlGpuInstance)), cgoAllocsUnknown + cPVgpus, _ := (*C.nvmlVgpuTypeIdInfo_t)(unsafe.Pointer(PVgpus)), cgoAllocsUnknown + __ret := C.nvmlGpuInstanceGetCreatableVgpus(cnvmlGpuInstance, cPVgpus) + __v := (Return)(__ret) + return __v +} + +// nvmlVgpuTypeGetMaxInstancesPerGpuInstance function as declared in nvml/nvml.h +func nvmlVgpuTypeGetMaxInstancesPerGpuInstance(PMaxInstance *VgpuTypeMaxInstance) Return { + cPMaxInstance, _ := (*C.nvmlVgpuTypeMaxInstance_t)(unsafe.Pointer(PMaxInstance)), cgoAllocsUnknown + __ret := C.nvmlVgpuTypeGetMaxInstancesPerGpuInstance(cPMaxInstance) + __v := (Return)(__ret) + return __v +} + +// nvmlGpuInstanceGetActiveVgpus function as declared in nvml/nvml.h +func nvmlGpuInstanceGetActiveVgpus(nvmlGpuInstance nvmlGpuInstance, PVgpuInstanceInfo *ActiveVgpuInstanceInfo) Return { + cnvmlGpuInstance, _ := *(*C.nvmlGpuInstance_t)(unsafe.Pointer(&nvmlGpuInstance)), cgoAllocsUnknown + cPVgpuInstanceInfo, _ := (*C.nvmlActiveVgpuInstanceInfo_t)(unsafe.Pointer(PVgpuInstanceInfo)), cgoAllocsUnknown + __ret := C.nvmlGpuInstanceGetActiveVgpus(cnvmlGpuInstance, cPVgpuInstanceInfo) + __v := (Return)(__ret) + return __v +} + +// nvmlGpuInstanceSetVgpuSchedulerState function as declared in nvml/nvml.h +func nvmlGpuInstanceSetVgpuSchedulerState(nvmlGpuInstance nvmlGpuInstance, PScheduler *VgpuSchedulerState) Return { + cnvmlGpuInstance, _ := *(*C.nvmlGpuInstance_t)(unsafe.Pointer(&nvmlGpuInstance)), cgoAllocsUnknown + cPScheduler, _ := (*C.nvmlVgpuSchedulerState_t)(unsafe.Pointer(PScheduler)), cgoAllocsUnknown + __ret := C.nvmlGpuInstanceSetVgpuSchedulerState(cnvmlGpuInstance, cPScheduler) + __v := (Return)(__ret) + return __v +} + +// nvmlGpuInstanceGetVgpuSchedulerState function as declared in nvml/nvml.h +func nvmlGpuInstanceGetVgpuSchedulerState(nvmlGpuInstance nvmlGpuInstance, PSchedulerStateInfo *VgpuSchedulerStateInfo) Return { + cnvmlGpuInstance, _ := *(*C.nvmlGpuInstance_t)(unsafe.Pointer(&nvmlGpuInstance)), cgoAllocsUnknown + cPSchedulerStateInfo, _ := (*C.nvmlVgpuSchedulerStateInfo_t)(unsafe.Pointer(PSchedulerStateInfo)), cgoAllocsUnknown + __ret := C.nvmlGpuInstanceGetVgpuSchedulerState(cnvmlGpuInstance, cPSchedulerStateInfo) + __v := (Return)(__ret) + return __v +} + +// nvmlGpuInstanceGetVgpuSchedulerLog function as declared in nvml/nvml.h +func nvmlGpuInstanceGetVgpuSchedulerLog(nvmlGpuInstance nvmlGpuInstance, PSchedulerLogInfo *VgpuSchedulerLogInfo) Return { + cnvmlGpuInstance, _ := *(*C.nvmlGpuInstance_t)(unsafe.Pointer(&nvmlGpuInstance)), cgoAllocsUnknown + cPSchedulerLogInfo, _ := (*C.nvmlVgpuSchedulerLogInfo_t)(unsafe.Pointer(PSchedulerLogInfo)), cgoAllocsUnknown + __ret := C.nvmlGpuInstanceGetVgpuSchedulerLog(cnvmlGpuInstance, cPSchedulerLogInfo) + __v := (Return)(__ret) + return __v +} + +// nvmlGpuInstanceGetVgpuTypeCreatablePlacements function as declared in nvml/nvml.h +func nvmlGpuInstanceGetVgpuTypeCreatablePlacements(nvmlGpuInstance nvmlGpuInstance, PCreatablePlacementInfo *VgpuCreatablePlacementInfo) Return { + cnvmlGpuInstance, _ := *(*C.nvmlGpuInstance_t)(unsafe.Pointer(&nvmlGpuInstance)), cgoAllocsUnknown + cPCreatablePlacementInfo, _ := (*C.nvmlVgpuCreatablePlacementInfo_t)(unsafe.Pointer(PCreatablePlacementInfo)), cgoAllocsUnknown + __ret := C.nvmlGpuInstanceGetVgpuTypeCreatablePlacements(cnvmlGpuInstance, cPCreatablePlacementInfo) + __v := (Return)(__ret) + return __v +} + +// nvmlGpuInstanceGetVgpuHeterogeneousMode function as declared in nvml/nvml.h +func nvmlGpuInstanceGetVgpuHeterogeneousMode(nvmlGpuInstance nvmlGpuInstance, PHeterogeneousMode *VgpuHeterogeneousMode) Return { + cnvmlGpuInstance, _ := *(*C.nvmlGpuInstance_t)(unsafe.Pointer(&nvmlGpuInstance)), cgoAllocsUnknown + cPHeterogeneousMode, _ := (*C.nvmlVgpuHeterogeneousMode_t)(unsafe.Pointer(PHeterogeneousMode)), cgoAllocsUnknown + __ret := C.nvmlGpuInstanceGetVgpuHeterogeneousMode(cnvmlGpuInstance, cPHeterogeneousMode) + __v := (Return)(__ret) + return __v +} + +// nvmlGpuInstanceSetVgpuHeterogeneousMode function as declared in nvml/nvml.h +func nvmlGpuInstanceSetVgpuHeterogeneousMode(nvmlGpuInstance nvmlGpuInstance, PHeterogeneousMode *VgpuHeterogeneousMode) Return { + cnvmlGpuInstance, _ := *(*C.nvmlGpuInstance_t)(unsafe.Pointer(&nvmlGpuInstance)), cgoAllocsUnknown + cPHeterogeneousMode, _ := (*C.nvmlVgpuHeterogeneousMode_t)(unsafe.Pointer(PHeterogeneousMode)), cgoAllocsUnknown + __ret := C.nvmlGpuInstanceSetVgpuHeterogeneousMode(cnvmlGpuInstance, cPHeterogeneousMode) + __v := (Return)(__ret) + return __v +} + // nvmlVgpuInstanceGetMetadata function as declared in nvml/nvml.h func nvmlVgpuInstanceGetMetadata(nvmlVgpuInstance nvmlVgpuInstance, nvmlVgpuMetadata *nvmlVgpuMetadata, BufferSize *uint32) Return { cnvmlVgpuInstance, _ := (C.nvmlVgpuInstance_t)(nvmlVgpuInstance), cgoAllocsUnknown @@ -3062,45 +3380,74 @@ func nvmlGpmSetStreamingEnabled(nvmlDevice nvmlDevice, State uint32) Return { return __v } -// nvmlDeviceSetNvLinkDeviceLowPowerThreshold function as declared in nvml/nvml.h -func nvmlDeviceSetNvLinkDeviceLowPowerThreshold(nvmlDevice nvmlDevice, Info *NvLinkPowerThres) Return { +// nvmlDeviceGetCapabilities function as declared in nvml/nvml.h +func nvmlDeviceGetCapabilities(nvmlDevice nvmlDevice, Caps *DeviceCapabilities) Return { cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown - cInfo, _ := (*C.nvmlNvLinkPowerThres_t)(unsafe.Pointer(Info)), cgoAllocsUnknown - __ret := C.nvmlDeviceSetNvLinkDeviceLowPowerThreshold(cnvmlDevice, cInfo) + cCaps, _ := (*C.nvmlDeviceCapabilities_t)(unsafe.Pointer(Caps)), cgoAllocsUnknown + __ret := C.nvmlDeviceGetCapabilities(cnvmlDevice, cCaps) __v := (Return)(__ret) return __v } -// nvmlSystemSetNvlinkBwMode function as declared in nvml/nvml.h -func nvmlSystemSetNvlinkBwMode(NvlinkBwMode uint32) Return { - cNvlinkBwMode, _ := (C.uint)(NvlinkBwMode), cgoAllocsUnknown - __ret := C.nvmlSystemSetNvlinkBwMode(cNvlinkBwMode) +// nvmlDeviceWorkloadPowerProfileGetProfilesInfo function as declared in nvml/nvml.h +func nvmlDeviceWorkloadPowerProfileGetProfilesInfo(nvmlDevice nvmlDevice, ProfilesInfo *WorkloadPowerProfileProfilesInfo) Return { + cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown + cProfilesInfo, _ := (*C.nvmlWorkloadPowerProfileProfilesInfo_t)(unsafe.Pointer(ProfilesInfo)), cgoAllocsUnknown + __ret := C.nvmlDeviceWorkloadPowerProfileGetProfilesInfo(cnvmlDevice, cProfilesInfo) __v := (Return)(__ret) return __v } -// nvmlSystemGetNvlinkBwMode function as declared in nvml/nvml.h -func nvmlSystemGetNvlinkBwMode(NvlinkBwMode *uint32) Return { - cNvlinkBwMode, _ := (*C.uint)(unsafe.Pointer(NvlinkBwMode)), cgoAllocsUnknown - __ret := C.nvmlSystemGetNvlinkBwMode(cNvlinkBwMode) +// nvmlDeviceWorkloadPowerProfileGetCurrentProfiles function as declared in nvml/nvml.h +func nvmlDeviceWorkloadPowerProfileGetCurrentProfiles(nvmlDevice nvmlDevice, CurrentProfiles *WorkloadPowerProfileCurrentProfiles) Return { + cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown + cCurrentProfiles, _ := (*C.nvmlWorkloadPowerProfileCurrentProfiles_t)(unsafe.Pointer(CurrentProfiles)), cgoAllocsUnknown + __ret := C.nvmlDeviceWorkloadPowerProfileGetCurrentProfiles(cnvmlDevice, cCurrentProfiles) __v := (Return)(__ret) return __v } -// nvmlDeviceSetPowerManagementLimit_v2 function as declared in nvml/nvml.h -func nvmlDeviceSetPowerManagementLimit_v2(nvmlDevice nvmlDevice, PowerValue *PowerValue_v2) Return { +// nvmlDeviceWorkloadPowerProfileSetRequestedProfiles function as declared in nvml/nvml.h +func nvmlDeviceWorkloadPowerProfileSetRequestedProfiles(nvmlDevice nvmlDevice, RequestedProfiles *WorkloadPowerProfileRequestedProfiles) Return { cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown - cPowerValue, _ := (*C.nvmlPowerValue_v2_t)(unsafe.Pointer(PowerValue)), cgoAllocsUnknown - __ret := C.nvmlDeviceSetPowerManagementLimit_v2(cnvmlDevice, cPowerValue) + cRequestedProfiles, _ := (*C.nvmlWorkloadPowerProfileRequestedProfiles_t)(unsafe.Pointer(RequestedProfiles)), cgoAllocsUnknown + __ret := C.nvmlDeviceWorkloadPowerProfileSetRequestedProfiles(cnvmlDevice, cRequestedProfiles) __v := (Return)(__ret) return __v } -// nvmlDeviceGetSramEccErrorStatus function as declared in nvml/nvml.h -func nvmlDeviceGetSramEccErrorStatus(nvmlDevice nvmlDevice, Status *EccSramErrorStatus) Return { +// nvmlDeviceWorkloadPowerProfileClearRequestedProfiles function as declared in nvml/nvml.h +func nvmlDeviceWorkloadPowerProfileClearRequestedProfiles(nvmlDevice nvmlDevice, RequestedProfiles *WorkloadPowerProfileRequestedProfiles) Return { cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown - cStatus, _ := (*C.nvmlEccSramErrorStatus_t)(unsafe.Pointer(Status)), cgoAllocsUnknown - __ret := C.nvmlDeviceGetSramEccErrorStatus(cnvmlDevice, cStatus) + cRequestedProfiles, _ := (*C.nvmlWorkloadPowerProfileRequestedProfiles_t)(unsafe.Pointer(RequestedProfiles)), cgoAllocsUnknown + __ret := C.nvmlDeviceWorkloadPowerProfileClearRequestedProfiles(cnvmlDevice, cRequestedProfiles) + __v := (Return)(__ret) + return __v +} + +// nvmlDevicePowerSmoothingActivatePresetProfile function as declared in nvml/nvml.h +func nvmlDevicePowerSmoothingActivatePresetProfile(nvmlDevice nvmlDevice, Profile *PowerSmoothingProfile) Return { + cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown + cProfile, _ := (*C.nvmlPowerSmoothingProfile_t)(unsafe.Pointer(Profile)), cgoAllocsUnknown + __ret := C.nvmlDevicePowerSmoothingActivatePresetProfile(cnvmlDevice, cProfile) + __v := (Return)(__ret) + return __v +} + +// nvmlDevicePowerSmoothingUpdatePresetProfileParam function as declared in nvml/nvml.h +func nvmlDevicePowerSmoothingUpdatePresetProfileParam(nvmlDevice nvmlDevice, Profile *PowerSmoothingProfile) Return { + cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown + cProfile, _ := (*C.nvmlPowerSmoothingProfile_t)(unsafe.Pointer(Profile)), cgoAllocsUnknown + __ret := C.nvmlDevicePowerSmoothingUpdatePresetProfileParam(cnvmlDevice, cProfile) + __v := (Return)(__ret) + return __v +} + +// nvmlDevicePowerSmoothingSetState function as declared in nvml/nvml.h +func nvmlDevicePowerSmoothingSetState(nvmlDevice nvmlDevice, State *PowerSmoothingState) Return { + cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown + cState, _ := (*C.nvmlPowerSmoothingState_t)(unsafe.Pointer(State)), cgoAllocsUnknown + __ret := C.nvmlDevicePowerSmoothingSetState(cnvmlDevice, cState) __v := (Return)(__ret) return __v } @@ -3308,3 +3655,13 @@ func nvmlVgpuInstanceGetLicenseInfo_v1(nvmlVgpuInstance nvmlVgpuInstance, Licens __v := (Return)(__ret) return __v } + +// nvmlDeviceGetDriverModel_v1 function as declared in nvml/nvml.h +func nvmlDeviceGetDriverModel_v1(nvmlDevice nvmlDevice, Current *DriverModel, Pending *DriverModel) Return { + cnvmlDevice, _ := *(*C.nvmlDevice_t)(unsafe.Pointer(&nvmlDevice)), cgoAllocsUnknown + cCurrent, _ := (*C.nvmlDriverModel_t)(unsafe.Pointer(Current)), cgoAllocsUnknown + cPending, _ := (*C.nvmlDriverModel_t)(unsafe.Pointer(Pending)), cgoAllocsUnknown + __ret := C.nvmlDeviceGetDriverModel(cnvmlDevice, cCurrent, cPending) + __v := (Return)(__ret) + return __v +} diff --git a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/nvml.h b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/nvml.h index 1e4eb12dc..28a654756 100644 --- a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/nvml.h +++ b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/nvml.h @@ -1,7 +1,7 @@ -/*** NVML VERSION: 12.4.127 ***/ -/*** From https://api.anaconda.org/download/nvidia/cuda-nvml-dev/12.4.127/linux-64/cuda-nvml-dev-12.4.127-0.tar.bz2 ***/ +/*** NVML VERSION: 12.9.40 ***/ +/*** From https://gitlab.com/nvidia/headers/cuda-individual/nvml_dev/-/raw/v12.9.40/nvml.h ***/ /* - * Copyright 1993-2023 NVIDIA Corporation. All rights reserved. + * Copyright 1993-2025 NVIDIA Corporation. All rights reserved. * * NOTICE TO USER: * @@ -94,6 +94,8 @@ extern "C" { #define DECLDIR #endif + #define NVML_MCDM_SUPPORT + /** * NVML API versioning support */ @@ -124,6 +126,7 @@ extern "C" { #define nvmlGetBlacklistDeviceInfoByIndex nvmlGetExcludedDeviceInfoByIndex #define nvmlDeviceGetGpuInstancePossiblePlacements nvmlDeviceGetGpuInstancePossiblePlacements_v2 #define nvmlVgpuInstanceGetLicenseInfo nvmlVgpuInstanceGetLicenseInfo_v2 + #define nvmlDeviceGetDriverModel nvmlDeviceGetDriverModel_v2 #endif // #ifndef NVML_NO_UNVERSIONED_FUNC_DEFS #define NVML_STRUCT_VERSION(data, ver) (unsigned int)(sizeof(nvml ## data ## _v ## ver ## _t) | \ @@ -148,6 +151,11 @@ typedef struct struct nvmlDevice_st* handle; } nvmlDevice_t; +typedef struct +{ + struct nvmlGpuInstance_st* handle; +} nvmlGpuInstance_t; + /** * Buffer size guaranteed to be large enough for pci bus id */ @@ -587,12 +595,12 @@ typedef enum nvmlValueType_enum NVML_VALUE_TYPE_UNSIGNED_LONG_LONG = 3, NVML_VALUE_TYPE_SIGNED_LONG_LONG = 4, NVML_VALUE_TYPE_SIGNED_INT = 5, + NVML_VALUE_TYPE_UNSIGNED_SHORT = 6, // Keep this last NVML_VALUE_TYPE_COUNT }nvmlValueType_t; - /** * Union to represent different types of Value */ @@ -604,6 +612,7 @@ typedef union nvmlValue_st unsigned long ulVal; //!< If the value is unsigned long unsigned long long ullVal; //!< If the value is unsigned long long signed long long sllVal; //!< If the value is signed long long + unsigned short usVal; //!< If the value is unsigned short }nvmlValue_t; /** @@ -645,6 +654,9 @@ typedef struct nvmlViolationTime_st #define NVML_MAX_THERMAL_SENSORS_PER_GPU 3 +/** + * Represents the thermal sensor targets + */ typedef enum { NVML_THERMAL_TARGET_NONE = 0, @@ -660,6 +672,9 @@ typedef enum NVML_THERMAL_TARGET_UNKNOWN = -1, } nvmlThermalTarget_t; +/** + * Represents the thermal sensor controllers + */ typedef enum { NVML_THERMAL_CONTROLLER_NONE = 0, @@ -691,6 +706,9 @@ typedef struct { nvmlThermalTarget_t target; } nvmlGpuThermalSettingsSensor_t; +/** + * Struct to hold the thermal sensor settings + */ typedef struct { unsigned int count; @@ -698,6 +716,84 @@ typedef struct } nvmlGpuThermalSettings_t; +/** + * Cooler control type + */ +typedef enum nvmlCoolerControl_enum +{ + NVML_THERMAL_COOLER_SIGNAL_NONE = 0, //!< This cooler has no control signal. + NVML_THERMAL_COOLER_SIGNAL_TOGGLE = 1, //!< This cooler can only be toggled either ON or OFF (eg a switch). + NVML_THERMAL_COOLER_SIGNAL_VARIABLE = 2, //!< This cooler's level can be adjusted from some minimum to some maximum (eg a knob). + + // Keep this last + NVML_THERMAL_COOLER_SIGNAL_COUNT +} nvmlCoolerControl_t; + +/** + * Cooler's target + */ +typedef enum nvmlCoolerTarget_enum +{ + NVML_THERMAL_COOLER_TARGET_NONE = 1 << 0, //!< This cooler cools nothing. + NVML_THERMAL_COOLER_TARGET_GPU = 1 << 1, //!< This cooler can cool the GPU. + NVML_THERMAL_COOLER_TARGET_MEMORY = 1 << 2, //!< This cooler can cool the memory. + NVML_THERMAL_COOLER_TARGET_POWER_SUPPLY = 1 << 3, //!< This cooler can cool the power supply. + NVML_THERMAL_COOLER_TARGET_GPU_RELATED = (NVML_THERMAL_COOLER_TARGET_GPU | NVML_THERMAL_COOLER_TARGET_MEMORY | NVML_THERMAL_COOLER_TARGET_POWER_SUPPLY) //!< This cooler cools all of the components related to its target gpu. GPU_RELATED = GPU | MEMORY | POWER_SUPPLY +} nvmlCoolerTarget_t; + +typedef struct +{ + unsigned int version; //!< the API version number + unsigned int index; //!< the cooler index + nvmlCoolerControl_t signalType; //!< OUT: the cooler's control signal characteristics + nvmlCoolerTarget_t target; //!< OUT: the target that cooler cools +} nvmlCoolerInfo_v1_t; +typedef nvmlCoolerInfo_v1_t nvmlCoolerInfo_t; + +#define nvmlCoolerInfo_v1 NVML_STRUCT_VERSION(CoolerInfo, 1) + +/** + * UUID length in ASCII format + */ +#define NVML_DEVICE_UUID_ASCII_LEN 41 + +/** + * UUID length in binary format + */ +#define NVML_DEVICE_UUID_BINARY_LEN 16 + +/** + * Enum to represent different UUID types + */ +typedef enum +{ + NVML_UUID_TYPE_NONE = 0, //!< Undefined type + NVML_UUID_TYPE_ASCII = 1, //!< ASCII format type + NVML_UUID_TYPE_BINARY = 2, //!< Binary format type +} nvmlUUIDType_t; + +/** + * Union to represent different UUID values + */ +typedef union +{ + char str[NVML_DEVICE_UUID_ASCII_LEN]; //!< ASCII format value + unsigned char bytes[NVML_DEVICE_UUID_BINARY_LEN]; //!< Binary format value +} nvmlUUIDValue_t; + +/** + * Struct to represent NVML UUID information + */ +typedef struct +{ + unsigned int version; //!< API version number + unsigned int type; //!< One of \p nvmlUUIDType_t + nvmlUUIDValue_t value; //!< One of \p nvmlUUIDValue_t, to be set based on the UUID format +} nvmlUUID_v1_t; +typedef nvmlUUID_v1_t nvmlUUID_t; + +#define nvmlUUID_v1 NVML_STRUCT_VERSION(UUID, 1) + /** @} */ /***************************************************************************************************/ @@ -720,6 +816,18 @@ typedef enum nvmlEnableState_enum //! Generic flag used to force some behavior. See description of particular functions for details. #define nvmlFlagForce 0x01 +/** + * DRAM Encryption Info + */ +typedef struct +{ + unsigned int version; //!< IN - the API version number + nvmlEnableState_t encryptionState; //!< IN/OUT - DRAM Encryption state +} nvmlDramEncryptionInfo_v1_t; +typedef nvmlDramEncryptionInfo_v1_t nvmlDramEncryptionInfo_t; + +#define nvmlDramEncryptionInfo_v1 NVML_STRUCT_VERSION(DramEncryptionInfo, 1) + /** * * The Brand of the GPU * */ @@ -767,6 +875,8 @@ typedef enum nvmlTemperatureThresholds_enum // acoustic threshold. NVML_TEMPERATURE_THRESHOLD_ACOUSTIC_MAX = 6, // Maximum GPU temperature that can be // set as acoustic threshold. + NVML_TEMPERATURE_THRESHOLD_GPS_CURR = 7, // Current temperature that is set as + // gps threshold. // Keep this last NVML_TEMPERATURE_THRESHOLD_COUNT } nvmlTemperatureThresholds_t; @@ -782,6 +892,19 @@ typedef enum nvmlTemperatureSensors_enum NVML_TEMPERATURE_COUNT } nvmlTemperatureSensors_t; +/** + * Margin temperature values + */ +typedef struct +{ + unsigned int version; //!< The version number of this struct + int marginTemperature; //!< The margin temperature value +} nvmlMarginTemperature_v1_t; + +typedef nvmlMarginTemperature_v1_t nvmlMarginTemperature_t; + +#define nvmlMarginTemperature_v1 NVML_STRUCT_VERSION(MarginTemperature, 1) + /** * Compute mode. * @@ -803,7 +926,7 @@ typedef enum nvmlComputeMode_enum /** * Max Clock Monitors available */ -#define MAX_CLK_DOMAINS 32 +#define MAX_CLK_DOMAINS 32 /** * Clock Monitor error types @@ -881,12 +1004,26 @@ typedef enum nvmlMemoryErrorType_enum */ NVML_MEMORY_ERROR_TYPE_UNCORRECTED = 1, - // Keep this last NVML_MEMORY_ERROR_TYPE_COUNT //!< Count of memory error types } nvmlMemoryErrorType_t; +/** + * Represents Nvlink Version + */ +typedef enum nvmlNvlinkVersion_enum +{ + NVML_NVLINK_VERSION_INVALID = 0, + NVML_NVLINK_VERSION_1_0 = 1, + NVML_NVLINK_VERSION_2_0 = 2, + NVML_NVLINK_VERSION_2_2 = 3, + NVML_NVLINK_VERSION_3_0 = 4, + NVML_NVLINK_VERSION_3_1 = 5, + NVML_NVLINK_VERSION_4_0 = 6, + NVML_NVLINK_VERSION_5_0 = 7, +}nvmlNvlinkVersion_t; + /** * ECC counter types. * @@ -943,8 +1080,9 @@ typedef enum nvmlClockId_enum typedef enum nvmlDriverModel_enum { - NVML_DRIVER_WDDM = 0, //!< WDDM driver model -- GPU treated as a display device - NVML_DRIVER_WDM = 1 //!< WDM (TCC) model (recommended) -- GPU treated as a generic device + NVML_DRIVER_WDDM = 0, //!< WDDM driver model -- GPU treated as a display device + NVML_DRIVER_WDM = 1, //!< WDM (TCC) model (deprecated) -- GPU treated as a generic compute device + NVML_DRIVER_MCDM = 2 //!< MCDM driver model -- GPU treated as a Microsoft compute device } nvmlDriverModel_t; #define NVML_MAX_GPU_PERF_PSTATES 16 @@ -973,6 +1111,62 @@ typedef enum nvmlPStates_enum NVML_PSTATE_UNKNOWN = 32 //!< Unknown performance state } nvmlPstates_t; +/** + * Clock offset info. + */ +typedef struct +{ + unsigned int version; //!< The version number of this struct + nvmlClockType_t type; + nvmlPstates_t pstate; + int clockOffsetMHz; + int minClockOffsetMHz; + int maxClockOffsetMHz; +} nvmlClockOffset_v1_t; + +typedef nvmlClockOffset_v1_t nvmlClockOffset_t; + +#define nvmlClockOffset_v1 NVML_STRUCT_VERSION(ClockOffset, 1) + +/** + * Fan speed info. + */ +typedef struct +{ + unsigned int version; //!< the API version number + unsigned int fan; //!< the fan index + unsigned int speed; //!< OUT: the fan speed in RPM +} nvmlFanSpeedInfo_v1_t; +typedef nvmlFanSpeedInfo_v1_t nvmlFanSpeedInfo_t; + +#define nvmlFanSpeedInfo_v1 NVML_STRUCT_VERSION(FanSpeedInfo, 1) + +#define NVML_PERF_MODES_BUFFER_SIZE 2048 + +/** + * Device performance modes string + */ +typedef struct +{ + unsigned int version; //!< the API version number + char str[NVML_PERF_MODES_BUFFER_SIZE]; //!< OUT: the performance modes string. +} nvmlDevicePerfModes_v1_t; +typedef nvmlDevicePerfModes_v1_t nvmlDevicePerfModes_t; + +#define nvmlDevicePerfModes_v1 NVML_STRUCT_VERSION(DevicePerfModes, 1) + +/** + * Device current clocks string + */ +typedef struct +{ + unsigned int version; //!< the API version number + char str[NVML_PERF_MODES_BUFFER_SIZE]; //!< OUT: the current clock frequency string. +} nvmlDeviceCurrentClockFreqs_v1_t; +typedef nvmlDeviceCurrentClockFreqs_v1_t nvmlDeviceCurrentClockFreqs_t; + +#define nvmlDeviceCurrentClockFreqs_v1 NVML_STRUCT_VERSION(DeviceCurrentClockFreqs, 1) + /** * GPU Operation Mode * @@ -999,7 +1193,7 @@ typedef enum nvmlInforomObject_enum NVML_INFOROM_OEM = 0, //!< An object defined by OEM NVML_INFOROM_ECC = 1, //!< The ECC object determining the level of ECC support NVML_INFOROM_POWER = 2, //!< The power management object - + NVML_INFOROM_DEN = 3, //!< DRAM Encryption object // Keep this last NVML_INFOROM_COUNT //!< This counts the number of infoROM objects the driver knows about } nvmlInforomObject_t; @@ -1086,10 +1280,244 @@ typedef enum nvmlRestrictedAPI_enum NVML_RESTRICTED_API_COUNT } nvmlRestrictedAPI_t; +/** + * Structure to store utilization value and process Id + */ +typedef struct nvmlProcessUtilizationSample_st +{ + unsigned int pid; //!< PID of process + unsigned long long timeStamp; //!< CPU Timestamp in microseconds + unsigned int smUtil; //!< SM (3D/Compute) Util Value + unsigned int memUtil; //!< Frame Buffer Memory Util Value + unsigned int encUtil; //!< Encoder Util Value + unsigned int decUtil; //!< Decoder Util Value +} nvmlProcessUtilizationSample_t; + +/** + * Structure to store utilization value and process Id -- version 1 + */ +typedef struct +{ + unsigned long long timeStamp; //!< CPU Timestamp in microseconds + unsigned int pid; //!< PID of process + unsigned int smUtil; //!< SM (3D/Compute) Util Value + unsigned int memUtil; //!< Frame Buffer Memory Util Value + unsigned int encUtil; //!< Encoder Util Value + unsigned int decUtil; //!< Decoder Util Value + unsigned int jpgUtil; //!< Jpeg Util Value + unsigned int ofaUtil; //!< Ofa Util Value +} nvmlProcessUtilizationInfo_v1_t; + +/** + * Structure to store utilization and process ID for each running process -- version 1 + */ +typedef struct +{ + unsigned int version; //!< The version number of this struct + unsigned int processSamplesCount; //!< Caller-supplied array size, and returns number of processes running + unsigned long long lastSeenTimeStamp; //!< Return only samples with timestamp greater than lastSeenTimeStamp + nvmlProcessUtilizationInfo_v1_t *procUtilArray; //!< The array (allocated by caller) of the utilization of GPU SM, framebuffer, video encoder, video decoder, JPEG, and OFA +} nvmlProcessesUtilizationInfo_v1_t; +typedef nvmlProcessesUtilizationInfo_v1_t nvmlProcessesUtilizationInfo_t; +#define nvmlProcessesUtilizationInfo_v1 NVML_STRUCT_VERSION(ProcessesUtilizationInfo, 1) + +/** + * Structure to store SRAM uncorrectable error counters + */ +typedef struct +{ + unsigned int version; //!< the API version number + unsigned long long aggregateUncParity; //!< aggregate uncorrectable parity error count + unsigned long long aggregateUncSecDed; //!< aggregate uncorrectable SEC-DED error count + unsigned long long aggregateCor; //!< aggregate correctable error count + unsigned long long volatileUncParity; //!< volatile uncorrectable parity error count + unsigned long long volatileUncSecDed; //!< volatile uncorrectable SEC-DED error count + unsigned long long volatileCor; //!< volatile correctable error count + unsigned long long aggregateUncBucketL2; //!< aggregate uncorrectable error count for L2 cache bucket + unsigned long long aggregateUncBucketSm; //!< aggregate uncorrectable error count for SM bucket + unsigned long long aggregateUncBucketPcie; //!< aggregate uncorrectable error count for PCIE bucket + unsigned long long aggregateUncBucketMcu; //!< aggregate uncorrectable error count for Microcontroller bucket + unsigned long long aggregateUncBucketOther; //!< aggregate uncorrectable error count for Other bucket + unsigned int bThresholdExceeded; //!< if the error threshold of field diag is exceeded +} nvmlEccSramErrorStatus_v1_t; + +typedef nvmlEccSramErrorStatus_v1_t nvmlEccSramErrorStatus_t; +#define nvmlEccSramErrorStatus_v1 NVML_STRUCT_VERSION(EccSramErrorStatus, 1) + +/** + * Structure to store platform information + * + * @deprecated The nvmlPlatformInfo_v1_t will be deprecated in the subsequent releases. + * Use nvmlPlatformInfo_v2_t + */ +typedef struct +{ + unsigned int version; //!< the API version number + unsigned char ibGuid[16]; //!< Infiniband GUID reported by platform (for Blackwell, ibGuid is 8 bytes so indices 8-15 are zero) + unsigned char rackGuid[16]; //!< GUID of the rack containing this GPU (for Blackwell rackGuid is 13 bytes so indices 13-15 are zero) + unsigned char chassisPhysicalSlotNumber; //!< The slot number in the rack containing this GPU (includes switches) + unsigned char computeSlotIndex; //!< The index within the compute slots in the rack containing this GPU (does not include switches) + unsigned char nodeIndex; //!< Index of the node within the slot containing this GPU + unsigned char peerType; //!< Platform indicated NVLink-peer type (e.g. switch present or not) + unsigned char moduleId; //!< ID of this GPU within the node +} nvmlPlatformInfo_v1_t; +#define nvmlPlatformInfo_v1 NVML_STRUCT_VERSION(PlatformInfo, 1) + +/** + * Structure to store platform information (v2) + */ +typedef struct +{ + unsigned int version; //!< the API version number + unsigned char ibGuid[16]; //!< Infiniband GUID reported by platform (for Blackwell, ibGuid is 8 bytes so indices 8-15 are zero) + unsigned char chassisSerialNumber[16]; //!< Serial number of the chassis containing this GPU (for Blackwell it is 13 bytes so indices 13-15 are zero) + unsigned char slotNumber; //!< The slot number in the chassis containing this GPU (includes switches) + unsigned char trayIndex; //!< The tray index within the compute slots in the chassis containing this GPU (does not include switches) + unsigned char hostId; //!< Index of the node within the slot containing this GPU + unsigned char peerType; //!< Platform indicated NVLink-peer type (e.g. switch present or not) + unsigned char moduleId; //!< ID of this GPU within the node +} nvmlPlatformInfo_v2_t; + +typedef nvmlPlatformInfo_v2_t nvmlPlatformInfo_t; +#define nvmlPlatformInfo_v2 NVML_STRUCT_VERSION(PlatformInfo, 2) + +/** + * GSP firmware + */ +#define NVML_GSP_FIRMWARE_VERSION_BUF_SIZE 0x40 + +/** + * Simplified chip architecture + */ +#define NVML_DEVICE_ARCH_KEPLER 2 // Devices based on the NVIDIA Kepler architecture +#define NVML_DEVICE_ARCH_MAXWELL 3 // Devices based on the NVIDIA Maxwell architecture +#define NVML_DEVICE_ARCH_PASCAL 4 // Devices based on the NVIDIA Pascal architecture +#define NVML_DEVICE_ARCH_VOLTA 5 // Devices based on the NVIDIA Volta architecture +#define NVML_DEVICE_ARCH_TURING 6 // Devices based on the NVIDIA Turing architecture +#define NVML_DEVICE_ARCH_AMPERE 7 // Devices based on the NVIDIA Ampere architecture +#define NVML_DEVICE_ARCH_ADA 8 // Devices based on the NVIDIA Ada architecture +#define NVML_DEVICE_ARCH_HOPPER 9 // Devices based on the NVIDIA Hopper architecture + +#define NVML_DEVICE_ARCH_BLACKWELL 10 // Devices based on the NVIDIA Blackwell architecture + +#define NVML_DEVICE_ARCH_T23X 11 // Devices based on NVIDIA Orin architecture + +#define NVML_DEVICE_ARCH_UNKNOWN 0xffffffff // Anything else, presumably something newer + +typedef unsigned int nvmlDeviceArchitecture_t; + +/** + * PCI bus types + */ +#define NVML_BUS_TYPE_UNKNOWN 0 +#define NVML_BUS_TYPE_PCI 1 +#define NVML_BUS_TYPE_PCIE 2 +#define NVML_BUS_TYPE_FPCI 3 +#define NVML_BUS_TYPE_AGP 4 + +typedef unsigned int nvmlBusType_t; + +/** + * Device Power Modes + */ + +/** + * Device Fan control policy + */ +#define NVML_FAN_POLICY_TEMPERATURE_CONTINOUS_SW 0 +#define NVML_FAN_POLICY_MANUAL 1 + +typedef unsigned int nvmlFanControlPolicy_t; + +/** + * Device Power Source + */ +#define NVML_POWER_SOURCE_AC 0x00000000 +#define NVML_POWER_SOURCE_BATTERY 0x00000001 +#define NVML_POWER_SOURCE_UNDERSIZED 0x00000002 + +typedef unsigned int nvmlPowerSource_t; + +/** + * Device PCIE link Max Speed + */ +#define NVML_PCIE_LINK_MAX_SPEED_INVALID 0x00000000 +#define NVML_PCIE_LINK_MAX_SPEED_2500MBPS 0x00000001 +#define NVML_PCIE_LINK_MAX_SPEED_5000MBPS 0x00000002 +#define NVML_PCIE_LINK_MAX_SPEED_8000MBPS 0x00000003 +#define NVML_PCIE_LINK_MAX_SPEED_16000MBPS 0x00000004 +#define NVML_PCIE_LINK_MAX_SPEED_32000MBPS 0x00000005 +#define NVML_PCIE_LINK_MAX_SPEED_64000MBPS 0x00000006 + +/** + * Adaptive clocking status + */ +#define NVML_ADAPTIVE_CLOCKING_INFO_STATUS_DISABLED 0x00000000 +#define NVML_ADAPTIVE_CLOCKING_INFO_STATUS_ENABLED 0x00000001 + +#define NVML_MAX_GPU_UTILIZATIONS 8 + +/** + * Represents the GPU utilization domains + */ +typedef enum nvmlGpuUtilizationDomainId_t +{ + NVML_GPU_UTILIZATION_DOMAIN_GPU = 0, //!< Graphics engine domain + NVML_GPU_UTILIZATION_DOMAIN_FB = 1, //!< Frame buffer domain + NVML_GPU_UTILIZATION_DOMAIN_VID = 2, //!< Video engine domain + NVML_GPU_UTILIZATION_DOMAIN_BUS = 3, //!< Bus interface domain +} nvmlGpuUtilizationDomainId_t; + +typedef struct { + unsigned int bIsPresent; + unsigned int percentage; + unsigned int incThreshold; + unsigned int decThreshold; +} nvmlGpuDynamicPstatesInfoUtilization_t; + +typedef struct nvmlGpuDynamicPstatesInfo_st +{ + unsigned int flags; //!< Reserved for future use + nvmlGpuDynamicPstatesInfoUtilization_t utilization[NVML_MAX_GPU_UTILIZATIONS]; +} nvmlGpuDynamicPstatesInfo_t; + +/* + * PCIe outbound/inbound atomic operations capability + */ +#define NVML_PCIE_ATOMICS_CAP_FETCHADD32 0x01 +#define NVML_PCIE_ATOMICS_CAP_FETCHADD64 0x02 +#define NVML_PCIE_ATOMICS_CAP_SWAP32 0x04 +#define NVML_PCIE_ATOMICS_CAP_SWAP64 0x08 +#define NVML_PCIE_ATOMICS_CAP_CAS32 0x10 +#define NVML_PCIE_ATOMICS_CAP_CAS64 0x20 +#define NVML_PCIE_ATOMICS_CAP_CAS128 0x40 +#define NVML_PCIE_ATOMICS_OPS_MAX 7 + +/** + * Device Scope - This is useful to retrieve the telemetry at GPU and module (e.g. GPU + CPU) level + */ +#define NVML_POWER_SCOPE_GPU 0U //!< Targets only GPU +#define NVML_POWER_SCOPE_MODULE 1U //!< Targets the whole module +#define NVML_POWER_SCOPE_MEMORY 2U //!< Targets the GPU Memory + +typedef unsigned char nvmlPowerScopeType_t; + +/** + * Contains the power management limit + */ +typedef struct +{ + unsigned int version; //!< Structure format version (must be 1) + nvmlPowerScopeType_t powerScope; //!< [in] Device type: GPU or Total Module + unsigned int powerValueMw; //!< [out] Power value to retrieve or set in milliwatts +} nvmlPowerValue_v2_t; + +#define nvmlPowerValue_v2 NVML_STRUCT_VERSION(PowerValue, 2) + /** @} */ /***************************************************************************************************/ -/** @addtogroup virtualGPU +/** @addtogroup virtualGPU vGPU Enums, Constants, Structs * @{ */ /***************************************************************************************************/ @@ -1176,6 +1604,7 @@ typedef enum nvmlVgpuCapability_enum typedef enum nvmlVgpuDriverCapability_enum { NVML_VGPU_DRIVER_CAP_HETEROGENEOUS_MULTI_VGPU = 0, //!< Supports mixing of different vGPU profiles within one guest VM + NVML_VGPU_DRIVER_CAP_WARM_UPDATE = 1, //!< Supports FSR and warm update of vGPU host driver without terminating the running guest VM // Keep this last NVML_VGPU_DRIVER_CAP_COUNT } nvmlVgpuDriverCapability_t; @@ -1185,14 +1614,18 @@ typedef enum nvmlVgpuDriverCapability_enum */ typedef enum nvmlDeviceVgpuCapability_enum { - NVML_DEVICE_VGPU_CAP_FRACTIONAL_MULTI_VGPU = 0, //!< Query if the fractional vGPU profiles on this GPU can be used in multi-vGPU configurations - NVML_DEVICE_VGPU_CAP_HETEROGENEOUS_TIMESLICE_PROFILES = 1, //!< Query if the GPU support concurrent execution of timesliced vGPU profiles of differing types - NVML_DEVICE_VGPU_CAP_HETEROGENEOUS_TIMESLICE_SIZES = 2, //!< Query if the GPU support concurrent execution of timesliced vGPU profiles of differing framebuffer sizes + NVML_DEVICE_VGPU_CAP_FRACTIONAL_MULTI_VGPU = 0, //!< Query whether the fractional vGPU profiles on this GPU can be used in multi-vGPU configurations + NVML_DEVICE_VGPU_CAP_HETEROGENEOUS_TIMESLICE_PROFILES = 1, //!< Query whether the GPU support concurrent execution of timesliced vGPU profiles of differing types + NVML_DEVICE_VGPU_CAP_HETEROGENEOUS_TIMESLICE_SIZES = 2, //!< Query whether the GPU support concurrent execution of timesliced vGPU profiles of differing framebuffer sizes NVML_DEVICE_VGPU_CAP_READ_DEVICE_BUFFER_BW = 3, //!< Query the GPU's read_device_buffer expected bandwidth capacity in megabytes per second NVML_DEVICE_VGPU_CAP_WRITE_DEVICE_BUFFER_BW = 4, //!< Query the GPU's write_device_buffer expected bandwidth capacity in megabytes per second - NVML_DEVICE_VGPU_CAP_DEVICE_STREAMING = 5, //!< Query if vGPU profiles on the GPU supports migration data streaming + NVML_DEVICE_VGPU_CAP_DEVICE_STREAMING = 5, //!< Query whether the vGPU profiles on the GPU supports migration data streaming NVML_DEVICE_VGPU_CAP_MINI_QUARTER_GPU = 6, //!< Set/Get support for mini-quarter vGPU profiles NVML_DEVICE_VGPU_CAP_COMPUTE_MEDIA_ENGINE_GPU = 7, //!< Set/Get support for compute media engine vGPU profiles + NVML_DEVICE_VGPU_CAP_WARM_UPDATE = 8, //!< Query whether the GPU supports FSR and warm update + NVML_DEVICE_VGPU_CAP_HOMOGENEOUS_PLACEMENTS = 9, //!< Query whether the GPU supports reporting of placements of timesliced vGPU profiles with identical framebuffer sizes + NVML_DEVICE_VGPU_CAP_MIG_TIMESLICING_SUPPORTED = 10, //!< Query whether the GPU supports timesliced vGPU on MIG + NVML_DEVICE_VGPU_CAP_MIG_TIMESLICING_ENABLED = 11, //!< Set/Get MIG timesliced mode reporting, without impacting the underlying functionality // Keep this last NVML_DEVICE_VGPU_CAP_COUNT } nvmlDeviceVgpuCapability_t; @@ -1235,6 +1668,12 @@ typedef enum nvmlDeviceVgpuCapability_enum #define NVML_VGPU_PGPU_VIRTUALIZATION_CAP_MIGRATION_NO 0x0 #define NVML_VGPU_PGPU_VIRTUALIZATION_CAP_MIGRATION_YES 0x1 +/** + * Macros to indicate the vGPU mode of the GPU. + */ +#define NVML_VGPU_PGPU_HETEROGENEOUS_MODE 0 +#define NVML_VGPU_PGPU_HOMOGENEOUS_MODE 1 + /** @} */ /***************************************************************************************************/ @@ -1279,9 +1718,33 @@ typedef struct unsigned int count; //!< Count of placement IDs fetched unsigned int *placementIds; //!< Placement IDs for the vGPU type } nvmlVgpuPlacementList_v1_t; -typedef nvmlVgpuPlacementList_v1_t nvmlVgpuPlacementList_t; #define nvmlVgpuPlacementList_v1 NVML_STRUCT_VERSION(VgpuPlacementList, 1) +/** + * Structure to store the list of vGPU placements -- version 2 + */ +typedef struct +{ + unsigned int version; //!< IN: The version number of this struct + unsigned int placementSize; //!< OUT: The number of slots occupied by the vGPU type + unsigned int count; //!< IN/OUT: Count of the placement IDs + unsigned int *placementIds; //!< IN/OUT: Placement IDs for the vGPU type + unsigned int mode; //!< IN: The vGPU mode. Either NVML_VGPU_PGPU_HETEROGENEOUS_MODE or NVML_VGPU_PGPU_HOMOGENEOUS_MODE +} nvmlVgpuPlacementList_v2_t; +typedef nvmlVgpuPlacementList_v2_t nvmlVgpuPlacementList_t; +#define nvmlVgpuPlacementList_v2 NVML_STRUCT_VERSION(VgpuPlacementList, 2) + +/** + * Structure to store BAR1 size information of vGPU type -- Version 1 + */ +typedef struct +{ + unsigned int version; //!< The version number of this struct + unsigned long long bar1Size; //!< BAR1 size in megabytes +} nvmlVgpuTypeBar1Info_v1_t; +typedef nvmlVgpuTypeBar1Info_v1_t nvmlVgpuTypeBar1Info_t; +#define nvmlVgpuTypeBar1Info_v1 NVML_STRUCT_VERSION(VgpuTypeBar1Info, 1) + /** * Structure to store Utilization Value and vgpuInstance */ @@ -1369,6 +1832,17 @@ typedef struct typedef nvmlVgpuProcessesUtilizationInfo_v1_t nvmlVgpuProcessesUtilizationInfo_t; #define nvmlVgpuProcessesUtilizationInfo_v1 NVML_STRUCT_VERSION(VgpuProcessesUtilizationInfo, 1) +/** + * Structure to store the information of vGPU runtime state -- version 1 + */ +typedef struct +{ + unsigned int version; //!< IN: The version number of this struct + unsigned long long size; //!< OUT: The runtime state size of the vGPU instance +} nvmlVgpuRuntimeState_v1_t; +typedef nvmlVgpuRuntimeState_v1_t nvmlVgpuRuntimeState_t; +#define nvmlVgpuRuntimeState_v1 NVML_STRUCT_VERSION(VgpuRuntimeState, 1) + /** * vGPU scheduler policies */ @@ -1385,6 +1859,11 @@ typedef nvmlVgpuProcessesUtilizationInfo_v1_t nvmlVgpuProcessesUtilizationInfo_t #define NVML_VGPU_SCHEDULER_ARR_DISABLE 1 #define NVML_VGPU_SCHEDULER_ARR_ENABLE 2 +/** + * vGPU scheduler engine types + */ +#define NVML_VGPU_SCHEDULER_ENGINE_TYPE_GRAPHICS 1 + typedef struct { unsigned int avgFactor; unsigned int timeslice; @@ -1517,47 +1996,6 @@ typedef struct nvmlVgpuLicenseInfo_st unsigned int currentState; //!< Current license state } nvmlVgpuLicenseInfo_t; -/** - * Structure to store utilization value and process Id - */ -typedef struct nvmlProcessUtilizationSample_st -{ - unsigned int pid; //!< PID of process - unsigned long long timeStamp; //!< CPU Timestamp in microseconds - unsigned int smUtil; //!< SM (3D/Compute) Util Value - unsigned int memUtil; //!< Frame Buffer Memory Util Value - unsigned int encUtil; //!< Encoder Util Value - unsigned int decUtil; //!< Decoder Util Value -} nvmlProcessUtilizationSample_t; - -/** - * Structure to store utilization value and process Id -- version 1 - */ -typedef struct -{ - unsigned long long timeStamp; //!< CPU Timestamp in microseconds - unsigned int pid; //!< PID of process - unsigned int smUtil; //!< SM (3D/Compute) Util Value - unsigned int memUtil; //!< Frame Buffer Memory Util Value - unsigned int encUtil; //!< Encoder Util Value - unsigned int decUtil; //!< Decoder Util Value - unsigned int jpgUtil; //!< Jpeg Util Value - unsigned int ofaUtil; //!< Ofa Util Value -} nvmlProcessUtilizationInfo_v1_t; - -/** - * Structure to store utilization and process ID for each running process -- version 1 - */ -typedef struct -{ - unsigned int version; //!< The version number of this struct - unsigned int processSamplesCount; //!< Caller-supplied array size, and returns number of processes running - unsigned long long lastSeenTimeStamp; //!< Return only samples with timestamp greater than lastSeenTimeStamp - nvmlProcessUtilizationInfo_v1_t *procUtilArray; //!< The array (allocated by caller) of the utilization of GPU SM, framebuffer, video encoder, video decoder, JPEG, and OFA -} nvmlProcessesUtilizationInfo_v1_t; -typedef nvmlProcessesUtilizationInfo_v1_t nvmlProcessesUtilizationInfo_t; -#define nvmlProcessesUtilizationInfo_v1 NVML_STRUCT_VERSION(ProcessesUtilizationInfo, 1) - /** * Structure to store license expiry date and time values */ @@ -1596,119 +2034,109 @@ typedef struct nvmlGridLicensableFeatures_st } nvmlGridLicensableFeatures_t; /** - * Structure to store SRAM uncorrectable error counters + * Enum describing the GPU Recovery Action */ -typedef struct -{ - unsigned int version; //!< the API version number - unsigned long long aggregateUncParity; //!< aggregate uncorrectable parity error count - unsigned long long aggregateUncSecDed; //!< aggregate uncorrectable SEC-DED error count - unsigned long long aggregateCor; //!< aggregate correctable error count - unsigned long long volatileUncParity; //!< volatile uncorrectable parity error count - unsigned long long volatileUncSecDed; //!< volatile uncorrectable SEC-DED error count - unsigned long long volatileCor; //!< volatile correctable error count - unsigned long long aggregateUncBucketL2; //!< aggregate uncorrectable error count for L2 cache bucket - unsigned long long aggregateUncBucketSm; //!< aggregate uncorrectable error count for SM bucket - unsigned long long aggregateUncBucketPcie; //!< aggregate uncorrectable error count for PCIE bucket - unsigned long long aggregateUncBucketMcu; //!< aggregate uncorrectable error count for Microcontroller bucket - unsigned long long aggregateUncBucketOther; //!< aggregate uncorrectable error count for Other bucket - unsigned int bThresholdExceeded; //!< if the error threshold of field diag is exceeded -} nvmlEccSramErrorStatus_v1_t; - -typedef nvmlEccSramErrorStatus_v1_t nvmlEccSramErrorStatus_t; -#define nvmlEccSramErrorStatus_v1 NVML_STRUCT_VERSION(EccSramErrorStatus, 1) - -/** - * GSP firmware - */ -#define NVML_GSP_FIRMWARE_VERSION_BUF_SIZE 0x40 +typedef enum nvmlDeviceGpuRecoveryAction_s { + NVML_GPU_RECOVERY_ACTION_NONE = 0, + NVML_GPU_RECOVERY_ACTION_GPU_RESET = 1, + NVML_GPU_RECOVERY_ACTION_NODE_REBOOT = 2, + NVML_GPU_RECOVERY_ACTION_DRAIN_P2P = 3, + NVML_GPU_RECOVERY_ACTION_DRAIN_AND_RESET = 4, +} nvmlDeviceGpuRecoveryAction_t; /** - * Simplified chip architecture - */ -#define NVML_DEVICE_ARCH_KEPLER 2 // Devices based on the NVIDIA Kepler architecture -#define NVML_DEVICE_ARCH_MAXWELL 3 // Devices based on the NVIDIA Maxwell architecture -#define NVML_DEVICE_ARCH_PASCAL 4 // Devices based on the NVIDIA Pascal architecture -#define NVML_DEVICE_ARCH_VOLTA 5 // Devices based on the NVIDIA Volta architecture -#define NVML_DEVICE_ARCH_TURING 6 // Devices based on the NVIDIA Turing architecture -#define NVML_DEVICE_ARCH_AMPERE 7 // Devices based on the NVIDIA Ampere architecture -#define NVML_DEVICE_ARCH_ADA 8 // Devices based on the NVIDIA Ada architecture -#define NVML_DEVICE_ARCH_HOPPER 9 // Devices based on the NVIDIA Hopper architecture - -#define NVML_DEVICE_ARCH_UNKNOWN 0xffffffff // Anything else, presumably something newer - -typedef unsigned int nvmlDeviceArchitecture_t; - -/** - * PCI bus types - */ -#define NVML_BUS_TYPE_UNKNOWN 0 -#define NVML_BUS_TYPE_PCI 1 -#define NVML_BUS_TYPE_PCIE 2 -#define NVML_BUS_TYPE_FPCI 3 -#define NVML_BUS_TYPE_AGP 4 - -typedef unsigned int nvmlBusType_t; - -/** - * Device Power Modes + * Structure to store the vGPU type IDs -- version 1 */ +typedef struct +{ + unsigned int version; //!< IN: The version number of this struct + unsigned int vgpuCount; //!< IN/OUT: Number of vGPU types + nvmlVgpuTypeId_t *vgpuTypeIds; //!< OUT: List of vGPU type IDs +} nvmlVgpuTypeIdInfo_v1_t; +typedef nvmlVgpuTypeIdInfo_v1_t nvmlVgpuTypeIdInfo_t; +#define nvmlVgpuTypeIdInfo_v1 NVML_STRUCT_VERSION(VgpuTypeIdInfo, 1) /** - * Device Fan control policy + * Structure to store the maximum number of possible vGPU type IDs -- version 1 */ -#define NVML_FAN_POLICY_TEMPERATURE_CONTINOUS_SW 0 -#define NVML_FAN_POLICY_MANUAL 1 - -typedef unsigned int nvmlFanControlPolicy_t; +typedef struct +{ + unsigned int version; //!< IN: The version number of this struct + nvmlVgpuTypeId_t vgpuTypeId; //!< IN: Handle to vGPU type + unsigned int maxInstancePerGI; //!< OUT: Maximum number of vGPU instances per GPU instance +} nvmlVgpuTypeMaxInstance_v1_t; +typedef nvmlVgpuTypeMaxInstance_v1_t nvmlVgpuTypeMaxInstance_t; +#define nvmlVgpuTypeMaxInstance_v1 NVML_STRUCT_VERSION(VgpuTypeMaxInstance, 1) /** - * Device Power Source + * Structure to store active vGPU instance information -- Version 1 */ -#define NVML_POWER_SOURCE_AC 0x00000000 -#define NVML_POWER_SOURCE_BATTERY 0x00000001 -#define NVML_POWER_SOURCE_UNDERSIZED 0x00000002 - -typedef unsigned int nvmlPowerSource_t; +typedef struct +{ + unsigned int version; //!< IN: The version number of this struct + unsigned int vgpuCount; //!< IN/OUT: Count of the active vGPU instances + nvmlVgpuInstance_t *vgpuInstances; //!< IN/OUT: list of active vGPU instances +} nvmlActiveVgpuInstanceInfo_v1_t; +typedef nvmlActiveVgpuInstanceInfo_v1_t nvmlActiveVgpuInstanceInfo_t; +#define nvmlActiveVgpuInstanceInfo_v1 NVML_STRUCT_VERSION(ActiveVgpuInstanceInfo, 1) -/* - * Device PCIE link Max Speed +/** + * Structure to set vGPU scheduler state information -- version 1 */ -#define NVML_PCIE_LINK_MAX_SPEED_INVALID 0x00000000 -#define NVML_PCIE_LINK_MAX_SPEED_2500MBPS 0x00000001 -#define NVML_PCIE_LINK_MAX_SPEED_5000MBPS 0x00000002 -#define NVML_PCIE_LINK_MAX_SPEED_8000MBPS 0x00000003 -#define NVML_PCIE_LINK_MAX_SPEED_16000MBPS 0x00000004 -#define NVML_PCIE_LINK_MAX_SPEED_32000MBPS 0x00000005 -#define NVML_PCIE_LINK_MAX_SPEED_64000MBPS 0x00000006 +typedef struct +{ + unsigned int version; //!< IN: The version number of this struct + unsigned int engineId; //!< IN: One of NVML_VGPU_SCHEDULER_ENGINE_TYPE_*. + unsigned int schedulerPolicy; //!< IN: Scheduler policy + unsigned int enableARRMode; //!< IN: Adaptive Round Robin scheduler + nvmlVgpuSchedulerSetParams_t schedulerParams; //!< IN: vGPU Scheduler Parameters +} nvmlVgpuSchedulerState_v1_t; +typedef nvmlVgpuSchedulerState_v1_t nvmlVgpuSchedulerState_t; +#define nvmlVgpuSchedulerState_v1 NVML_STRUCT_VERSION(VgpuSchedulerState, 1) -/* - * Adaptive clocking status +/** + * Structure to store vGPU scheduler state information -- Version 1 */ -#define NVML_ADAPTIVE_CLOCKING_INFO_STATUS_DISABLED 0x00000000 -#define NVML_ADAPTIVE_CLOCKING_INFO_STATUS_ENABLED 0x00000001 - -#define NVML_MAX_GPU_UTILIZATIONS 8 -typedef enum nvmlGpuUtilizationDomainId_t +typedef struct { - NVML_GPU_UTILIZATION_DOMAIN_GPU = 0, //!< Graphics engine domain - NVML_GPU_UTILIZATION_DOMAIN_FB = 1, //!< Frame buffer domain - NVML_GPU_UTILIZATION_DOMAIN_VID = 2, //!< Video engine domain - NVML_GPU_UTILIZATION_DOMAIN_BUS = 3, //!< Bus interface domain -} nvmlGpuUtilizationDomainId_t; + unsigned int version; //!< IN: The version number of this struct + unsigned int engineId; //!< IN: Engine whose software scheduler state info is fetched. One of NVML_VGPU_SCHEDULER_ENGINE_TYPE_*. + unsigned int schedulerPolicy; //!< OUT: Scheduler policy + unsigned int arrMode; //!< OUT: Adaptive Round Robin scheduler mode. One of the NVML_VGPU_SCHEDULER_ARR_*. + nvmlVgpuSchedulerParams_t schedulerParams; //!< OUT: vGPU Scheduler Parameters +} nvmlVgpuSchedulerStateInfo_v1_t; +typedef nvmlVgpuSchedulerStateInfo_v1_t nvmlVgpuSchedulerStateInfo_t; +#define nvmlVgpuSchedulerStateInfo_v1 NVML_STRUCT_VERSION(VgpuSchedulerStateInfo, 1) -typedef struct { - unsigned int bIsPresent; - unsigned int percentage; - unsigned int incThreshold; - unsigned int decThreshold; -} nvmlGpuDynamicPstatesInfoUtilization_t; +/** + * Structure to store vGPU scheduler log information -- Version 1 + */ +typedef struct +{ + unsigned int version; //!< IN: The version number of this struct + unsigned int engineId; //!< IN: Engine whose software runlist log entries are fetched. One of One of NVML_VGPU_SCHEDULER_ENGINE_TYPE_*. + unsigned int schedulerPolicy; //!< OUT: Scheduler policy + unsigned int arrMode; //!< OUT: Adaptive Round Robin scheduler mode. One of the NVML_VGPU_SCHEDULER_ARR_*. + nvmlVgpuSchedulerParams_t schedulerParams; //!< OUT: vGPU Scheduler Parameters + unsigned int entriesCount; //!< OUT: Count of log entries fetched + nvmlVgpuSchedulerLogEntry_t logEntries[NVML_SCHEDULER_SW_MAX_LOG_ENTRIES]; //!< OUT: Structure to store the state and logs of a software runlist +} nvmlVgpuSchedulerLogInfo_v1_t; +typedef nvmlVgpuSchedulerLogInfo_v1_t nvmlVgpuSchedulerLogInfo_t; +#define nvmlVgpuSchedulerLogInfo_v1 NVML_STRUCT_VERSION(VgpuSchedulerLogInfo, 1) -typedef struct nvmlGpuDynamicPstatesInfo_st +/** + * Structure to store creatable vGPU placement information -- version 1 + */ +typedef struct { - unsigned int flags; //!< Reserved for future use - nvmlGpuDynamicPstatesInfoUtilization_t utilization[NVML_MAX_GPU_UTILIZATIONS]; -} nvmlGpuDynamicPstatesInfo_t; + unsigned int version; //!< IN: The version number of this struct + nvmlVgpuTypeId_t vgpuTypeId; //!< IN: Handle to vGPU type + unsigned int count; //!< IN/OUT: Count of the placement IDs + unsigned int *placementIds; //!< IN/OUT: Placement IDs for the vGPU type + unsigned int placementSize; //!< OUT: The number of slots occupied by the vGPU type +} nvmlVgpuCreatablePlacementInfo_v1_t; +typedef nvmlVgpuCreatablePlacementInfo_v1_t nvmlVgpuCreatablePlacementInfo_t; +#define nvmlVgpuCreatablePlacementInfo_v1 NVML_STRUCT_VERSION(VgpuCreatablePlacementInfo, 1) /** @} */ /** @} */ @@ -1760,7 +2188,11 @@ typedef struct nvmlGpuDynamicPstatesInfo_st #define NVML_FI_DEV_RETIRED_DBE 30 //!< Number of retired pages because of double bit errors #define NVML_FI_DEV_RETIRED_PENDING 31 //!< If any pages are pending retirement. 1=yes. 0=no. -/* NvLink Flit Error Counters */ +/** + * NVLink Flit Error Counters + * + * Link ID needs to be specified in the scopeId field in nvmlFieldValue_t. + */ #define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L0 32 //!< NVLink flow control CRC Error Counter for Lane 0 #define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L1 33 //!< NVLink flow control CRC Error Counter for Lane 1 #define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L2 34 //!< NVLink flow control CRC Error Counter for Lane 2 @@ -1769,7 +2201,11 @@ typedef struct nvmlGpuDynamicPstatesInfo_st #define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L5 37 //!< NVLink flow control CRC Error Counter for Lane 5 #define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_TOTAL 38 //!< NVLink flow control CRC Error Counter total for all Lanes -/* NvLink CRC Data Error Counters */ +/** + * NVLink CRC Data Error Counters + * + * Link ID needs to be specified in the scopeId field in nvmlFieldValue_t. + */ #define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L0 39 //!< NVLink data CRC Error Counter for Lane 0 #define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L1 40 //!< NVLink data CRC Error Counter for Lane 1 #define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L2 41 //!< NVLink data CRC Error Counter for Lane 2 @@ -1778,7 +2214,11 @@ typedef struct nvmlGpuDynamicPstatesInfo_st #define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L5 44 //!< NVLink data CRC Error Counter for Lane 5 #define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_TOTAL 45 //!< NvLink data CRC Error Counter total for all Lanes -/* NvLink Replay Error Counters */ +/** + * NVLink Replay Error Counters + * + * Link ID needs to be specified in the scopeId field in nvmlFieldValue_t. + */ #define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L0 46 //!< NVLink Replay Error Counter for Lane 0 #define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L1 47 //!< NVLink Replay Error Counter for Lane 1 #define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L2 48 //!< NVLink Replay Error Counter for Lane 2 @@ -1787,7 +2227,11 @@ typedef struct nvmlGpuDynamicPstatesInfo_st #define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L5 51 //!< NVLink Replay Error Counter for Lane 5 #define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_TOTAL 52 //!< NVLink Replay Error Counter total for all Lanes -/* NvLink Recovery Error Counters */ +/** + * NVLink Recovery Error Counters + * + * Link ID needs to be specified in the scopeId field in nvmlFieldValue_t. + */ #define NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L0 53 //!< NVLink Recovery Error Counter for Lane 0 #define NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L1 54 //!< NVLink Recovery Error Counter for Lane 1 #define NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L2 55 //!< NVLink Recovery Error Counter for Lane 2 @@ -1838,7 +2282,11 @@ typedef struct nvmlGpuDynamicPstatesInfo_st /* Energy Counter */ #define NVML_FI_DEV_TOTAL_ENERGY_CONSUMPTION 83 //!< Total energy consumption for the GPU in mJ since the driver was last reloaded -/* NVLink Speed */ +/** + * NVLink Speed + * + * Link ID needs to be specified in the scopeId field in nvmlFieldValue_t. + */ #define NVML_FI_DEV_NVLINK_SPEED_MBPS_L0 84 //!< NVLink Speed in MBps for Link 0 #define NVML_FI_DEV_NVLINK_SPEED_MBPS_L1 85 //!< NVLink Speed in MBps for Link 1 #define NVML_FI_DEV_NVLINK_SPEED_MBPS_L2 86 //!< NVLink Speed in MBps for Link 2 @@ -1855,7 +2303,11 @@ typedef struct nvmlGpuDynamicPstatesInfo_st #define NVML_FI_DEV_PCIE_REPLAY_COUNTER 94 //!< PCIe replay counter #define NVML_FI_DEV_PCIE_REPLAY_ROLLOVER_COUNTER 95 //!< PCIe replay rollover counter -/* NvLink Flit Error Counters */ +/** + * NVLink Flit Error Counters + * + * Link ID needs to be specified in the scopeId field in nvmlFieldValue_t. + */ #define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L6 96 //!< NVLink flow control CRC Error Counter for Lane 6 #define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L7 97 //!< NVLink flow control CRC Error Counter for Lane 7 #define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L8 98 //!< NVLink flow control CRC Error Counter for Lane 8 @@ -1863,7 +2315,11 @@ typedef struct nvmlGpuDynamicPstatesInfo_st #define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L10 100 //!< NVLink flow control CRC Error Counter for Lane 10 #define NVML_FI_DEV_NVLINK_CRC_FLIT_ERROR_COUNT_L11 101 //!< NVLink flow control CRC Error Counter for Lane 11 -/* NvLink CRC Data Error Counters */ +/** + * NVLink CRC Data Error Counters + * + * Link ID needs to be specified in the scopeId field in nvmlFieldValue_t. + */ #define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L6 102 //!< NVLink data CRC Error Counter for Lane 6 #define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L7 103 //!< NVLink data CRC Error Counter for Lane 7 #define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L8 104 //!< NVLink data CRC Error Counter for Lane 8 @@ -1871,7 +2327,11 @@ typedef struct nvmlGpuDynamicPstatesInfo_st #define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L10 106 //!< NVLink data CRC Error Counter for Lane 10 #define NVML_FI_DEV_NVLINK_CRC_DATA_ERROR_COUNT_L11 107 //!< NVLink data CRC Error Counter for Lane 11 -/* NvLink Replay Error Counters */ +/** + * NVLink Replay Error Counters + * + * Link ID needs to be specified in the scopeId field in nvmlFieldValue_t. + */ #define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L6 108 //!< NVLink Replay Error Counter for Lane 6 #define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L7 109 //!< NVLink Replay Error Counter for Lane 7 #define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L8 110 //!< NVLink Replay Error Counter for Lane 8 @@ -1879,7 +2339,11 @@ typedef struct nvmlGpuDynamicPstatesInfo_st #define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L10 112 //!< NVLink Replay Error Counter for Lane 10 #define NVML_FI_DEV_NVLINK_REPLAY_ERROR_COUNT_L11 113 //!< NVLink Replay Error Counter for Lane 11 -/* NvLink Recovery Error Counters */ +/** + * NVLink Recovery Error Counters + * + * Link ID needs to be specified in the scopeId field in nvmlFieldValue_t. + */ #define NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L6 114 //!< NVLink Recovery Error Counter for Lane 6 #define NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L7 115 //!< NVLink Recovery Error Counter for Lane 7 #define NVML_FI_DEV_NVLINK_RECOVERY_ERROR_COUNT_L8 116 //!< NVLink Recovery Error Counter for Lane 8 @@ -1911,7 +2375,11 @@ typedef struct nvmlGpuDynamicPstatesInfo_st #define NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L10 130 //!< NVLink Bandwidth Counter for Counter Set 1, Lane 10 #define NVML_FI_DEV_NVLINK_BANDWIDTH_C1_L11 131 //!< NVLink Bandwidth Counter for Counter Set 1, Lane 11 -/* NVLink Speed */ +/** + * NVLink Speed + * + * Link ID needs to be specified in the scopeId field in nvmlFieldValue_t. + */ #define NVML_FI_DEV_NVLINK_SPEED_MBPS_L6 132 //!< NVLink Speed in MBps for Link 6 #define NVML_FI_DEV_NVLINK_SPEED_MBPS_L7 133 //!< NVLink Speed in MBps for Link 7 #define NVML_FI_DEV_NVLINK_SPEED_MBPS_L8 134 //!< NVLink Speed in MBps for Link 8 @@ -1968,15 +2436,45 @@ typedef struct nvmlGpuDynamicPstatesInfo_st #define NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_L11 159 //!< NVLink data ECC Error Counter for Link 11 #define NVML_FI_DEV_NVLINK_ECC_DATA_ERROR_COUNT_TOTAL 160 //!< NVLink data ECC Error Counter total for all Links +/** + * NVLink Error Replay + * + * Link ID needs to be specified in the scopeId field in nvmlFieldValue_t. + */ #define NVML_FI_DEV_NVLINK_ERROR_DL_REPLAY 161 //!< NVLink Replay Error Counter + //!< This is unsupported for Blackwell+. + //!< Please use NVML_FI_DEV_NVLINK_COUNT_LINK_RECOVERY_* +/** + * NVLink Recovery Error Counter + * + * Link ID needs to be specified in the scopeId field in nvmlFieldValue_t. + */ #define NVML_FI_DEV_NVLINK_ERROR_DL_RECOVERY 162 //!< NVLink Recovery Error Counter + //!< This is unsupported for Blackwell+ + //!< Please use NVML_FI_DEV_NVLINK_COUNT_LINK_RECOVERY_* + +/** + * NVLink Recovery Error CRC Counter + * + * Link ID needs to be specified in the scopeId field in nvmlFieldValue_t. + */ #define NVML_FI_DEV_NVLINK_ERROR_DL_CRC 163 //!< NVLink CRC Error Counter + //!< This is unsupported for Blackwell+ + //!< Please use NVML_FI_DEV_NVLINK_COUNT_LINK_RECOVERY_* + +/** + * NVLink Speed, State and Version field id 164, 165, and 166 + * + * Link ID needs to be specified in the scopeId field in nvmlFieldValue_t. + */ #define NVML_FI_DEV_NVLINK_GET_SPEED 164 //!< NVLink Speed in MBps #define NVML_FI_DEV_NVLINK_GET_STATE 165 //!< NVLink State - Active,Inactive #define NVML_FI_DEV_NVLINK_GET_VERSION 166 //!< NVLink Version #define NVML_FI_DEV_NVLINK_GET_POWER_STATE 167 //!< NVLink Power state. 0=HIGH_SPEED 1=LOW_SPEED -#define NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD 168 //!< NVLink length of idle period (in units of 100us) before transitioning links to sleep state +#define NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD 168 //!< NVLink length of idle period (units can be found from + //!< NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD_UNITS) before + //!< transitioning links to sleep state #define NVML_FI_DEV_PCIE_L0_TO_RECOVERY_COUNTER 169 //!< Device PEX error recovery counter @@ -1984,19 +2482,19 @@ typedef struct nvmlGpuDynamicPstatesInfo_st #define NVML_FI_DEV_C2C_LINK_GET_STATUS 171 //!< C2C Link Status 0=INACTIVE 1=ACTIVE #define NVML_FI_DEV_C2C_LINK_GET_MAX_BW 172 //!< C2C Link Speed in MBps for active links -#define NVML_FI_DEV_PCIE_COUNT_CORRECTABLE_ERRORS 173 -#define NVML_FI_DEV_PCIE_COUNT_NAKS_RECEIVED 174 -#define NVML_FI_DEV_PCIE_COUNT_RECEIVER_ERROR 175 -#define NVML_FI_DEV_PCIE_COUNT_BAD_TLP 176 -#define NVML_FI_DEV_PCIE_COUNT_NAKS_SENT 177 -#define NVML_FI_DEV_PCIE_COUNT_BAD_DLLP 178 -#define NVML_FI_DEV_PCIE_COUNT_NON_FATAL_ERROR 179 -#define NVML_FI_DEV_PCIE_COUNT_FATAL_ERROR 180 -#define NVML_FI_DEV_PCIE_COUNT_UNSUPPORTED_REQ 181 -#define NVML_FI_DEV_PCIE_COUNT_LCRC_ERROR 182 -#define NVML_FI_DEV_PCIE_COUNT_LANE_ERROR 183 +#define NVML_FI_DEV_PCIE_COUNT_CORRECTABLE_ERRORS 173 //!< PCIe Correctable Errors Counter +#define NVML_FI_DEV_PCIE_COUNT_NAKS_RECEIVED 174 //!< PCIe NAK Receive Counter +#define NVML_FI_DEV_PCIE_COUNT_RECEIVER_ERROR 175 //!< PCIe Receiver Error Counter +#define NVML_FI_DEV_PCIE_COUNT_BAD_TLP 176 //!< PCIe Bad TLP Counter +#define NVML_FI_DEV_PCIE_COUNT_NAKS_SENT 177 //!< PCIe NAK Send Counter +#define NVML_FI_DEV_PCIE_COUNT_BAD_DLLP 178 //!< PCIe Bad DLLP Counter +#define NVML_FI_DEV_PCIE_COUNT_NON_FATAL_ERROR 179 //!< PCIe Non Fatal Error Counter +#define NVML_FI_DEV_PCIE_COUNT_FATAL_ERROR 180 //!< PCIe Fatal Error Counter +#define NVML_FI_DEV_PCIE_COUNT_UNSUPPORTED_REQ 181 //!< PCIe Unsupported Request Counter +#define NVML_FI_DEV_PCIE_COUNT_LCRC_ERROR 182 //!< PCIe LCRC Error Counter +#define NVML_FI_DEV_PCIE_COUNT_LANE_ERROR 183 //!< PCIe Per Lane Error Counter. -#define NVML_FI_DEV_IS_RESETLESS_MIG_SUPPORTED 184 +#define NVML_FI_DEV_IS_RESETLESS_MIG_SUPPORTED 184 //!< Device's Restless MIG Capability /** * Retrieves power usage for this GPU in milliwatts. @@ -2027,9 +2525,165 @@ typedef struct nvmlGpuDynamicPstatesInfo_st #define NVML_FI_DEV_TEMPERATURE_MEM_MAX_TLIMIT 195 //!< T.Limit temperature after which GPU may begin SW slowdown due to memory temperature #define NVML_FI_DEV_TEMPERATURE_GPU_MAX_TLIMIT 196 //!< T.Limit temperature after which GPU may be throttled below base clock +#define NVML_FI_DEV_PCIE_COUNT_TX_BYTES 197 //!< PCIe transmit bytes. Value can be wrapped. +#define NVML_FI_DEV_PCIE_COUNT_RX_BYTES 198 //!< PCIe receive bytes. Value can be wrapped. + #define NVML_FI_DEV_IS_MIG_MODE_INDEPENDENT_MIG_QUERY_CAPABLE 199 //!< MIG mode independent, MIG query capable device. 1=yes. 0=no. -#define NVML_FI_MAX 200 //!< One greater than the largest field ID defined above +#define NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD_MAX 200 //!< Max Nvlink Power Threshold. See NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD + +/** + * NVLink counter field id 201-225 + * + * Link ID needs to be specified in the scopeId field in nvmlFieldValue_t. + */ +#define NVML_FI_DEV_NVLINK_COUNT_XMIT_PACKETS 201 //!<Total Tx packets on the link in NVLink5 +#define NVML_FI_DEV_NVLINK_COUNT_XMIT_BYTES 202 //!<Total Tx bytes on the link in NVLink5 +#define NVML_FI_DEV_NVLINK_COUNT_RCV_PACKETS 203 //!<Total Rx packets on the link in NVLink5 +#define NVML_FI_DEV_NVLINK_COUNT_RCV_BYTES 204 //!<Total Rx bytes on the link in NVLink5 +#define NVML_FI_DEV_NVLINK_COUNT_VL15_DROPPED 205 //!<Deprecated, do not use +#define NVML_FI_DEV_NVLINK_COUNT_MALFORMED_PACKET_ERRORS 206 //!<Number of packets Rx on a link where packets are malformed +#define NVML_FI_DEV_NVLINK_COUNT_BUFFER_OVERRUN_ERRORS 207 //!<Number of packets that were discarded on Rx due to buffer overrun +#define NVML_FI_DEV_NVLINK_COUNT_RCV_ERRORS 208 //!<Total number of packets with errors Rx on a link +#define NVML_FI_DEV_NVLINK_COUNT_RCV_REMOTE_ERRORS 209 //!<Total number of packets Rx - stomp/EBP marker +#define NVML_FI_DEV_NVLINK_COUNT_RCV_GENERAL_ERRORS 210 //!<Total number of packets Rx with header mismatch +#define NVML_FI_DEV_NVLINK_COUNT_LOCAL_LINK_INTEGRITY_ERRORS 211 //!<Total number of times that the count of local errors exceeded a threshold +#define NVML_FI_DEV_NVLINK_COUNT_XMIT_DISCARDS 212 //!<Total number of tx error packets that were discarded + +#define NVML_FI_DEV_NVLINK_COUNT_LINK_RECOVERY_SUCCESSFUL_EVENTS 213 //!<Number of times link went from Up to recovery, succeeded and link came back up +#define NVML_FI_DEV_NVLINK_COUNT_LINK_RECOVERY_FAILED_EVENTS 214 //!<Number of times link went from Up to recovery, failed and link was declared down +#define NVML_FI_DEV_NVLINK_COUNT_LINK_RECOVERY_EVENTS 215 //!<Number of times link went from Up to recovery, irrespective of the result + +#define NVML_FI_DEV_NVLINK_COUNT_RAW_BER_LANE0 216 //!<Deprecated, do not use +#define NVML_FI_DEV_NVLINK_COUNT_RAW_BER_LANE1 217 //!<Deprecated, do not use +#define NVML_FI_DEV_NVLINK_COUNT_RAW_BER 218 //!<Deprecated, do not use +#define NVML_FI_DEV_NVLINK_COUNT_EFFECTIVE_ERRORS 219 //!<Sum of the number of errors in each Nvlink packet + +/** + * NVLink Effective BER + * + * Bit [0:7]: BER Exponent value + * Bit [8:11]: BER MANTISSA value + * Use macro NVML_NVLINK_ERROR_COUNTER_BER_GET to extract the two fields + */ +#define NVML_FI_DEV_NVLINK_COUNT_EFFECTIVE_BER 220 //!<Effective BER for effective errors +#define NVML_FI_DEV_NVLINK_COUNT_SYMBOL_ERRORS 221 //!<Number of errors in rx symbols + +/** + * NVLink Symbol BER + * + * Bit [0:7]: BER Exponent value + * Bit [8:11]: BER MANTISSA value + * Use macro NVML_NVLINK_ERROR_COUNTER_BER_GET to extract the two fields + */ +#define NVML_FI_DEV_NVLINK_COUNT_SYMBOL_BER 222 //!<BER for symbol errors + +#define NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD_MIN 223 //!< Min Nvlink Power Threshold. See NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD +#define NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD_UNITS 224 //!< Values are in the form NVML_NVLINK_LOW_POWER_THRESHOLD_UNIT_* +#define NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD_SUPPORTED 225 //!< Determine if Nvlink Power Threshold feature is supported + +#define NVML_FI_DEV_RESET_STATUS 226 //!< Depracated, do not use (use NVML_FI_DEV_GET_GPU_RECOVERY_ACTION instead) +#define NVML_FI_DEV_DRAIN_AND_RESET_STATUS 227 //!< Deprecated, do not use (use NVML_FI_DEV_GET_GPU_RECOVERY_ACTION instead) +#define NVML_FI_DEV_PCIE_OUTBOUND_ATOMICS_MASK 228 +#define NVML_FI_DEV_PCIE_INBOUND_ATOMICS_MASK 229 +#define NVML_FI_DEV_GET_GPU_RECOVERY_ACTION 230 //!< GPU Recovery action - None/Reset/Reboot/Drain P2P/Drain and Reset +#define NVML_FI_DEV_C2C_LINK_ERROR_INTR 231 //!< C2C Link CRC Error Counter +#define NVML_FI_DEV_C2C_LINK_ERROR_REPLAY 232 //!< C2C Link Replay Error Counter +#define NVML_FI_DEV_C2C_LINK_ERROR_REPLAY_B2B 233 //!< C2C Link Back to Back Replay Error Counter +#define NVML_FI_DEV_C2C_LINK_POWER_STATE 234 //!< C2C Link Power state. See NVML_C2C_POWER_STATE_* +/** + * NVLink counter field id 235-250 + * + * Link ID needs to be specified in the scopeId field in nvmlFieldValue_t. + */ +#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_0 235 //!< Count of symbol errors that are corrected - bin 0 +#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_1 236 //!< Count of symbol errors that are corrected - bin 1 +#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_2 237 //!< Count of symbol errors that are corrected - bin 2 +#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_3 238 //!< Count of symbol errors that are corrected - bin 3 +#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_4 239 //!< Count of symbol errors that are corrected - bin 4 +#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_5 240 //!< Count of symbol errors that are corrected - bin 5 +#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_6 241 //!< Count of symbol errors that are corrected - bin 6 +#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_7 242 //!< Count of symbol errors that are corrected - bin 7 +#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_8 243 //!< Count of symbol errors that are corrected - bin 8 +#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_9 244 //!< Count of symbol errors that are corrected - bin 9 +#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_10 245 //!< Count of symbol errors that are corrected - bin 10 +#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_11 246 //!< Count of symbol errors that are corrected - bin 11 +#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_12 247 //!< Count of symbol errors that are corrected - bin 12 +#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_13 248 //!< Count of symbol errors that are corrected - bin 13 +#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_14 249 //!< Count of symbol errors that are corrected - bin 14 +#define NVML_FI_DEV_NVLINK_COUNT_FEC_HISTORY_15 250 //!< Count of symbol errors that are corrected - bin 15 +/** + * Field values for Clock Throttle Reason Counters + * All counters are in nanoseconds + */ +#define NVML_FI_DEV_CLOCKS_EVENT_REASON_SW_POWER_CAP NVML_FI_DEV_PERF_POLICY_POWER //!< Throttling to not exceed currently set power limits in ns +#define NVML_FI_DEV_CLOCKS_EVENT_REASON_SYNC_BOOST NVML_FI_DEV_PERF_POLICY_SYNC_BOOST //!< Throttling to match minimum possible clock across Sync Boost Group in ns +#define NVML_FI_DEV_CLOCKS_EVENT_REASON_SW_THERM_SLOWDOWN 251 //!< Throttling to ensure ((GPU temp < GPU Max Operating Temp) && (Memory Temp < Memory Max Operating Temp)) in ns +#define NVML_FI_DEV_CLOCKS_EVENT_REASON_HW_THERM_SLOWDOWN 252 //!< Throttling due to temperature being too high (reducing core clocks by a factor of 2 or more) in ns +#define NVML_FI_DEV_CLOCKS_EVENT_REASON_HW_POWER_BRAKE_SLOWDOWN 253 //!< Throttling due to external power brake assertion trigger (reducing core clocks by a factor of 2 or more) in ns +#define NVML_FI_DEV_POWER_SYNC_BALANCING_FREQ 254 //!< Accumulated frequency of the GPU to be used for averaging +#define NVML_FI_DEV_POWER_SYNC_BALANCING_AF 255 //!< Accumulated activity factor of the GPU to be used for averaging +/* Power Smoothing */ +#define NVML_FI_PWR_SMOOTHING_ENABLED 256 //!< Enablement (0/DISABLED or 1/ENABLED) +#define NVML_FI_PWR_SMOOTHING_PRIV_LVL 257 //!< Current privilege level +#define NVML_FI_PWR_SMOOTHING_IMM_RAMP_DOWN_ENABLED 258 //!< Immediate ramp down enablement (0/DISABLED or 1/ENABLED) +#define NVML_FI_PWR_SMOOTHING_APPLIED_TMP_CEIL 259 //!< Applied TMP ceiling value in Watts +#define NVML_FI_PWR_SMOOTHING_APPLIED_TMP_FLOOR 260 //!< Applied TMP floor value in Watts +#define NVML_FI_PWR_SMOOTHING_MAX_PERCENT_TMP_FLOOR_SETTING 261 //!< Max % TMP Floor value +#define NVML_FI_PWR_SMOOTHING_MIN_PERCENT_TMP_FLOOR_SETTING 262 //!< Min % TMP Floor value +#define NVML_FI_PWR_SMOOTHING_HW_CIRCUITRY_PERCENT_LIFETIME_REMAINING 263 //!< HW Circuitry % lifetime remaining +#define NVML_FI_PWR_SMOOTHING_MAX_NUM_PRESET_PROFILES 264 //!< Max number of preset profiles +#define NVML_FI_PWR_SMOOTHING_PROFILE_PERCENT_TMP_FLOOR 265 //!< % TMP floor for a given profile +#define NVML_FI_PWR_SMOOTHING_PROFILE_RAMP_UP_RATE 266 //!< Ramp up rate in mW/s for a given profile +#define NVML_FI_PWR_SMOOTHING_PROFILE_RAMP_DOWN_RATE 267 //!< Ramp down rate in mW/s for a given profile +#define NVML_FI_PWR_SMOOTHING_PROFILE_RAMP_DOWN_HYST_VAL 268 //!< Ramp down hysteresis value in ms for a given profile +#define NVML_FI_PWR_SMOOTHING_ACTIVE_PRESET_PROFILE 269 //!< Active preset profile number +#define NVML_FI_PWR_SMOOTHING_ADMIN_OVERRIDE_PERCENT_TMP_FLOOR 270 //!< % TMP floor for a given profile +#define NVML_FI_PWR_SMOOTHING_ADMIN_OVERRIDE_RAMP_UP_RATE 271 //!< Ramp up rate in mW/s for a given profile +#define NVML_FI_PWR_SMOOTHING_ADMIN_OVERRIDE_RAMP_DOWN_RATE 272 //!< Ramp down rate in mW/s for a given profile +#define NVML_FI_PWR_SMOOTHING_ADMIN_OVERRIDE_RAMP_DOWN_HYST_VAL 273 //!< Ramp down hysteresis value in ms for a given profile +#define NVML_FI_MAX 274 //!< One greater than the largest field ID defined above + +/** + * NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD_UNITS + */ +#define NVML_NVLINK_LOW_POWER_THRESHOLD_UNIT_100US 0x0 +#define NVML_NVLINK_LOW_POWER_THRESHOLD_UNIT_50US 0x1 + +/** + * NVML_NVLINK_POWER_STATES + */ +#define NVML_NVLINK_POWER_STATE_HIGH_SPEED 0x0 +#define NVML_NVLINK_POWER_STATE_LOW 0x1 + +/* + * NVML_NVLINK_LOW_POWER_THRESHOLD_MIN will be deprecated. + * Use the NVML Field Value NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD_MIN + * to get the correct Min Low Power Threshold. + */ +#define NVML_NVLINK_LOW_POWER_THRESHOLD_MIN 0x1 +/* + * NVML_NVLINK_LOW_POWER_THRESHOLD_MAX will be deprecated. + * Use the NVML Field Value NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD_MAX + * to get the correct Max Low Power Threshold. + */ +#define NVML_NVLINK_LOW_POWER_THRESHOLD_MAX 0x1FFF +#define NVML_NVLINK_LOW_POWER_THRESHOLD_RESET 0xFFFFFFFF +#define NVML_NVLINK_LOW_POWER_THRESHOLD_DEFAULT NVML_NVLINK_LOW_POWER_THRESHOLD_RESET + +/* Structure containing Low Power parameters */ +typedef struct nvmlNvLinkPowerThres_st +{ + unsigned int lowPwrThreshold; //!< Low power threshold + // Units can be obtained from + // NVML_FI_DEV_NVLINK_GET_POWER_THRESHOLD_UNITS +} nvmlNvLinkPowerThres_t; + +/* + * NVML_FI_DEV_C2C_LINK_POWER_STATE + */ +#define NVML_C2C_POWER_STATE_FULL_POWER 0 +#define NVML_C2C_POWER_STATE_LOW_POWER 1 /** * Information for a Field Value Sample @@ -2174,17 +2828,20 @@ typedef struct * * Types can be combined with bitwise or operator '|' when passed to \ref nvmlDeviceRegisterEvents */ +//! Mask with no events +#define nvmlEventTypeNone 0x0000000000000000LL + //! Event about single bit ECC errors /** * \note A corrected texture memory error is not an ECC error, so it does not generate a single bit event */ -#define nvmlEventTypeSingleBitEccError 0x0000000000000001LL +#define nvmlEventTypeSingleBitEccError 0x0000000000000001LL //! Event about double bit ECC errors /** * \note An uncorrected texture memory error is not an ECC error, so it does not generate a double bit event */ -#define nvmlEventTypeDoubleBitEccError 0x0000000000000002LL +#define nvmlEventTypeDoubleBitEccError 0x0000000000000002LL //! Event about PState changes /** @@ -2192,25 +2849,43 @@ typedef struct * no work being executed on the GPU, power capping or thermal capping. In a typical situation, * Fermi-based GPU should stay in P0 for the duration of the execution of the compute process. */ -#define nvmlEventTypePState 0x0000000000000004LL +#define nvmlEventTypePState 0x0000000000000004LL //! Event that Xid critical error occurred -#define nvmlEventTypeXidCriticalError 0x0000000000000008LL +#define nvmlEventTypeXidCriticalError 0x0000000000000008LL //! Event about clock changes /** * Kepler only */ -#define nvmlEventTypeClock 0x0000000000000010LL +#define nvmlEventTypeClock 0x0000000000000010LL //! Event about AC/Battery power source changes -#define nvmlEventTypePowerSourceChange 0x0000000000000080LL +#define nvmlEventTypePowerSourceChange 0x0000000000000080LL //! Event about MIG configuration changes -#define nvmlEventMigConfigChange 0x0000000000000100LL +#define nvmlEventMigConfigChange 0x0000000000000100LL -//! Mask with no events -#define nvmlEventTypeNone 0x0000000000000000LL +//! Event about single bit ECC error storm +#define nvmlEventTypeSingleBitEccErrorStorm 0x0000000000000200LL + +//! Event about DRAM retirement event +#define nvmlEventTypeDramRetirementEvent 0x0000000000000400LL + +//! Event about DRAM retirement failure +#define nvmlEventTypeDramRetirementFailure 0x0000000000000800LL + +//! Event for Non Fatal Poison +#define nvmlEventTypeNonFatalPoisonError 0x0000000000001000LL + +//! Event for Fatal Poison +#define nvmlEventTypeFatalPoisonError 0x0000000000002000LL + +//! Event for GPU Unavailable +#define nvmlEventTypeGpuUnavailableError 0x0000000000004000LL + +//! Event for GPU Recovery Action +#define nvmlEventTypeGpuRecoveryAction 0x0000000000008000LL //! Mask of all events #define nvmlEventTypeAll (nvmlEventTypeNone \ @@ -2221,7 +2896,14 @@ typedef struct | nvmlEventTypeXidCriticalError \ | nvmlEventTypePowerSourceChange \ | nvmlEventMigConfigChange \ - ) + | nvmlEventTypeSingleBitEccErrorStorm \ + | nvmlEventTypeDramRetirementEvent \ + | nvmlEventTypeDramRetirementFailure \ + | nvmlEventTypeNonFatalPoisonError \ + | nvmlEventTypeFatalPoisonError \ + | nvmlEventTypeGpuUnavailableError \ + | nvmlEventTypeGpuRecoveryAction) + /** @} */ /** @@ -2231,8 +2913,8 @@ typedef struct nvmlEventData_st { nvmlDevice_t device; //!< Specific device where the event occurred unsigned long long eventType; //!< Information about what specific event occurred - unsigned long long eventData; //!< Stores XID error for the device in the event of nvmlEventTypeXidCriticalError, - // eventData is 0 for any other event. eventData is set as 999 for unknown xid error. + unsigned long long eventData; //!< Stores Xid error for the device in the event of nvmlEventTypeXidCriticalError, + // eventData is 0 for any other event. eventData is set as 999 for unknown Xid error. unsigned int gpuInstanceId; //!< If MIG is enabled and nvmlEventTypeXidCriticalError event is attributable to a GPU // instance, stores a valid GPU instance ID. gpuInstanceId is set to 0xFFFFFFFF // otherwise. @@ -2243,6 +2925,80 @@ typedef struct nvmlEventData_st /** @} */ +typedef struct +{ + struct nvmlSystemEventSet_st* handle; +} nvmlSystemEventSet_t; + +//! System Event for GPU Driver Unbind +#define nvmlSystemEventTypeGpuDriverUnbind 0x0000000000000001LL //!< Bitmask value of Driver Unbind System Event +#define nvmlSystemEventTypeGpuDriverBind 0x0000000000000002LL //!< Bitmask value of Driver Bind System Event + +#define nvmlSystemEventTypeCount 2 + +/** + * nvmlSystemEventSetCreateRequest + */ +typedef struct +{ + unsigned int version; //!< the API version number + nvmlSystemEventSet_t set; //!< system event set +} nvmlSystemEventSetCreateRequest_v1_t; +typedef nvmlSystemEventSetCreateRequest_v1_t nvmlSystemEventSetCreateRequest_t; +#define nvmlSystemEventSetCreateRequest_v1 NVML_STRUCT_VERSION(SystemEventSetCreateRequest, 1) + +/** + * nvmlSystemEventSetFreeRequest + */ +typedef struct +{ + unsigned int version; //!< the API version number + nvmlSystemEventSet_t set; //!< system event set +} nvmlSystemEventSetFreeRequest_v1_t; +typedef nvmlSystemEventSetFreeRequest_v1_t nvmlSystemEventSetFreeRequest_t; +#define nvmlSystemEventSetFreeRequest_v1 NVML_STRUCT_VERSION(SystemEventSetFreeRequest, 1) + +/** + * nvmlSystemRegisterEventRequest + */ +typedef struct +{ + unsigned int version; //!< the API version number + unsigned long long eventTypes; //!< Bitmask of \ref nvmlEventType to record + //!< For example eventTypes = (nvmlEventTypeBind | nvmlEventTypeUnbind) + //!< to listen to both Bind and Unbind events. + nvmlSystemEventSet_t set; //!< Set to which add new event types +} nvmlSystemRegisterEventRequest_v1_t; +typedef nvmlSystemRegisterEventRequest_v1_t nvmlSystemRegisterEventRequest_t; +#define nvmlSystemRegisterEventRequest_v1 NVML_STRUCT_VERSION(SystemRegisterEventRequest, 1) + +/** + * nvmlSystemEventData_v1_t + */ +typedef struct +{ + unsigned long long eventType; //!< Information about what specific system event occurred + unsigned int gpuId; //!< gpuId in PCI format +} nvmlSystemEventData_v1_t; + +/** + * nvmlSystemEventSetWait + */ +typedef struct +{ + unsigned int version; //!< input/output: the API version number + unsigned int timeoutms; //!< input: time to sleep waiting for event. + //!< If timeoutms is zero, skip waiting for event. + nvmlSystemEventSet_t set; //!< input: system event set + nvmlSystemEventData_v1_t *data; //!< input/output: array of event data, owned by caller + unsigned int dataSize; //!< input: the size of data array + unsigned int numEvent; //!< output: number of event collected. +} nvmlSystemEventSetWaitRequest_v1_t; +typedef nvmlSystemEventSetWaitRequest_v1_t nvmlSystemEventSetWaitRequest_t; +#define nvmlSystemEventSetWaitRequest_v1 NVML_STRUCT_VERSION(SystemEventSetWaitRequest, 1) + +/** @} */ + /***************************************************************************************************/ /** @addtogroup nvmlClocksEventReasons * @{ @@ -2525,7 +3281,7 @@ typedef struct nvmlFBCSessionInfo_st /** @} */ /***************************************************************************************************/ -/** @defgroup nvmlDrainDefs definitions related to the drain state +/** @defgroup nvmlDrainDefs Drain State definitions * @{ */ /***************************************************************************************************/ @@ -2551,16 +3307,18 @@ typedef enum nvmlPcieLinkState_enum /** @} */ /***************************************************************************************************/ -/** @defgroup nvmlSystem/nvmlDevice definitions related to Confidential Computing +/** @defgroup nvmlConfidentialComputingDefs Confidential Computing definitions * @{ */ /***************************************************************************************************/ /** * Confidential Compute CPU Capabilities values */ -#define NVML_CC_SYSTEM_CPU_CAPS_NONE 0 -#define NVML_CC_SYSTEM_CPU_CAPS_AMD_SEV 1 -#define NVML_CC_SYSTEM_CPU_CAPS_INTEL_TDX 2 +#define NVML_CC_SYSTEM_CPU_CAPS_NONE 0 +#define NVML_CC_SYSTEM_CPU_CAPS_AMD_SEV 1 +#define NVML_CC_SYSTEM_CPU_CAPS_INTEL_TDX 2 +#define NVML_CC_SYSTEM_CPU_CAPS_AMD_SEV_SNP 3 +#define NVML_CC_SYSTEM_CPU_CAPS_AMD_SNP_VTOM 4 /** * Confidenial Compute GPU Capabilities values @@ -2656,15 +3414,15 @@ typedef struct nvmlConfComputeGpuCertificate_st { #define NVML_CC_CEC_ATTESTATION_REPORT_NOT_PRESENT 0 #define NVML_CC_CEC_ATTESTATION_REPORT_PRESENT 1 #define NVML_CC_KEY_ROTATION_THRESHOLD_ATTACKER_ADVANTAGE_MIN 50 -#define NVML_CC_KEY_ROTATION_THRESHOLD_ATTACKER_ADVANTAGE_MAX 75 +#define NVML_CC_KEY_ROTATION_THRESHOLD_ATTACKER_ADVANTAGE_MAX 65 typedef struct nvmlConfComputeGpuAttestationReport_st { - unsigned int isCecAttestationReportPresent; - unsigned int attestationReportSize; - unsigned int cecAttestationReportSize; - unsigned char nonce[NVML_CC_GPU_CEC_NONCE_SIZE]; - unsigned char attestationReport[NVML_CC_GPU_ATTESTATION_REPORT_SIZE]; - unsigned char cecAttestationReport[NVML_CC_GPU_CEC_ATTESTATION_REPORT_SIZE]; + unsigned int isCecAttestationReportPresent; //!< output + unsigned int attestationReportSize; //!< output + unsigned int cecAttestationReportSize; //!< output + unsigned char nonce[NVML_CC_GPU_CEC_NONCE_SIZE]; //!< input: spdm supports 32 bytes on nonce + unsigned char attestationReport[NVML_CC_GPU_ATTESTATION_REPORT_SIZE]; //!< output + unsigned char cecAttestationReport[NVML_CC_GPU_CEC_ATTESTATION_REPORT_SIZE]; //!< output } nvmlConfComputeGpuAttestationReport_t; typedef struct nvmlConfComputeSetKeyRotationThresholdInfo_st { @@ -2687,6 +3445,12 @@ typedef nvmlConfComputeGetKeyRotationThresholdInfo_v1_t nvmlConfComputeGetKeyRot /** @} */ +/***************************************************************************************************/ +/** @defgroup nvmlFabricDefs Fabric definitions + * @{ + */ +/***************************************************************************************************/ + #define NVML_GPU_FABRIC_UUID_LEN 16 #define NVML_GPU_FABRIC_STATE_NOT_SUPPORTED 0 @@ -2696,6 +3460,9 @@ typedef nvmlConfComputeGetKeyRotationThresholdInfo_v1_t nvmlConfComputeGetKeyRot typedef unsigned char nvmlGpuFabricState_t; +/** + * Contains the device fabric information + */ typedef struct { unsigned char clusterUuid[NVML_GPU_FABRIC_UUID_LEN]; //!< Uuid of the cluster to which this GPU belongs nvmlReturn_t status; //!< Error status, if any. Must be checked only if state returns "complete". @@ -2703,12 +3470,45 @@ typedef struct { nvmlGpuFabricState_t state; //!< Current state of GPU registration process } nvmlGpuFabricInfo_t; +/* + * Fabric Degraded BW + */ #define NVML_GPU_FABRIC_HEALTH_MASK_DEGRADED_BW_NOT_SUPPORTED 0 #define NVML_GPU_FABRIC_HEALTH_MASK_DEGRADED_BW_TRUE 1 #define NVML_GPU_FABRIC_HEALTH_MASK_DEGRADED_BW_FALSE 2 #define NVML_GPU_FABRIC_HEALTH_MASK_SHIFT_DEGRADED_BW 0 -#define NVML_GPU_FABRIC_HEALTH_MASK_WIDTH_DEGRADED_BW 0x11 +#define NVML_GPU_FABRIC_HEALTH_MASK_WIDTH_DEGRADED_BW 0x3 + +/* + * Fabric Route Recovery + */ +#define NVML_GPU_FABRIC_HEALTH_MASK_ROUTE_RECOVERY_NOT_SUPPORTED 0 +#define NVML_GPU_FABRIC_HEALTH_MASK_ROUTE_RECOVERY_TRUE 1 +#define NVML_GPU_FABRIC_HEALTH_MASK_ROUTE_RECOVERY_FALSE 2 + +#define NVML_GPU_FABRIC_HEALTH_MASK_SHIFT_ROUTE_RECOVERY 2 +#define NVML_GPU_FABRIC_HEALTH_MASK_WIDTH_ROUTE_RECOVERY 0x3 + +/* + * Nvlink Fabric Route Unhealthy + */ +#define NVML_GPU_FABRIC_HEALTH_MASK_ROUTE_UNHEALTHY_NOT_SUPPORTED 0 +#define NVML_GPU_FABRIC_HEALTH_MASK_ROUTE_UNHEALTHY_TRUE 1 +#define NVML_GPU_FABRIC_HEALTH_MASK_ROUTE_UNHEALTHY_FALSE 2 + +#define NVML_GPU_FABRIC_HEALTH_MASK_SHIFT_ROUTE_UNHEALTHY 4 +#define NVML_GPU_FABRIC_HEALTH_MASK_WIDTH_ROUTE_UNHEALTHY 0x3 + +/* + * Fabric Access Timeout Recovery + */ +#define NVML_GPU_FABRIC_HEALTH_MASK_ACCESS_TIMEOUT_RECOVERY_NOT_SUPPORTED 0 +#define NVML_GPU_FABRIC_HEALTH_MASK_ACCESS_TIMEOUT_RECOVERY_TRUE 1 +#define NVML_GPU_FABRIC_HEALTH_MASK_ACCESS_TIMEOUT_RECOVERY_FALSE 2 + +#define NVML_GPU_FABRIC_HEALTH_MASK_SHIFT_ACCESS_TIMEOUT_RECOVERY 6 +#define NVML_GPU_FABRIC_HEALTH_MASK_WIDTH_ACCESS_TIMEOUT_RECOVERY 0x3 /** * GPU Fabric Health Status Mask for various fields can be obtained @@ -2737,7 +3537,7 @@ typedef struct { * \ref nvmlGpuFabricInfo_t. */ typedef struct { - unsigned int version; //!< Structure version identifier (set to \ref nvmlGpuFabricInfo_v2) + unsigned int version; //!< Structure version identifier (set to nvmlGpuFabricInfo_v2) unsigned char clusterUuid[NVML_GPU_FABRIC_UUID_LEN]; //!< Uuid of the cluster to which this GPU belongs nvmlReturn_t status; //!< Error status, if any. Must be checked only if state returns "complete". unsigned int cliqueId; //!< ID of the fabric clique to which this GPU belongs @@ -2752,24 +3552,6 @@ typedef nvmlGpuFabricInfo_v2_t nvmlGpuFabricInfoV_t; */ #define nvmlGpuFabricInfo_v2 NVML_STRUCT_VERSION(GpuFabricInfo, 2) -/** - * Device Scope - This is useful to retrieve the telemetry at GPU and module (e.g. GPU + CPU) level - */ -#define NVML_POWER_SCOPE_GPU 0U //!< Targets only GPU -#define NVML_POWER_SCOPE_MODULE 1U //!< Targets the whole module -#define NVML_POWER_SCOPE_MEMORY 2U //!< Targets the GPU Memory - -typedef unsigned char nvmlPowerScopeType_t; - -typedef struct -{ - unsigned int version; //!< Structure format version (must be 1) - nvmlPowerScopeType_t powerScope; //!< [in] Device type: GPU or Total Module - unsigned int powerValueMw; //!< [out] Power value to retrieve or set in milliwatts -} nvmlPowerValue_v2_t; - -#define nvmlPowerValue_v2 NVML_STRUCT_VERSION(PowerValue, 2) - /** @} */ /***************************************************************************************************/ @@ -3058,19 +3840,50 @@ nvmlReturn_t DECLDIR nvmlSystemGetHicVersion(unsigned int *hwbcCount, nvmlHwbcEn * For all products. * Supported on Linux only. * - * @param cpuNumber The CPU number - * @param count When zero, is set to the number of matching GPUs such that \a deviceArray - * can be malloc'd. When non-zero, \a deviceArray will be filled with \a count - * number of device handles. - * @param deviceArray An array of device handles for GPUs found with affinity to \a cpuNumber + * @param cpuNumber The CPU number + * @param count When zero, is set to the number of matching GPUs such that \a deviceArray + * can be malloc'd. When non-zero, \a deviceArray will be filled with \a count + * number of device handles. + * @param deviceArray An array of device handles for GPUs found with affinity to \a cpuNumber + * + * @return + * - \ref NVML_SUCCESS if \a deviceArray or \a count (if initially zero) has been set + * - \ref NVML_ERROR_INVALID_ARGUMENT if \a cpuNumber, or \a count is invalid, or \a deviceArray is NULL with a non-zero \a count + * - \ref NVML_ERROR_NOT_SUPPORTED if the device or OS does not support this feature + * - \ref NVML_ERROR_UNKNOWN an error has occurred in underlying topology discovery + */ +nvmlReturn_t DECLDIR nvmlSystemGetTopologyGpuSet(unsigned int cpuNumber, unsigned int *count, nvmlDevice_t *deviceArray); + +/** + * Structure to store Driver branch information + */ +typedef struct +{ + unsigned int version; //!< The version number of this struct + char branch[NVML_SYSTEM_DRIVER_VERSION_BUFFER_SIZE]; //!< driver branch +} nvmlSystemDriverBranchInfo_v1_t; +typedef nvmlSystemDriverBranchInfo_v1_t nvmlSystemDriverBranchInfo_t; +#define nvmlSystemDriverBranchInfo_v1 NVML_STRUCT_VERSION(SystemDriverBranchInfo, 1) + +/** + * Retrieves the driver branch of the NVIDIA driver installed on the system. + * + * For all products. + * + * The branch identifier is an alphanumeric string. It will not exceed 80 characters in length + * (including the NULL terminator). See \ref nvmlConstants::NVML_SYSTEM_DRIVER_VERSION_BUFFER_SIZE. + * + * @param branchInfo Pointer to the driver branch information structure \a nvmlSystemDriverBranchInfo_t + * @param length The maximum allowed length of the driver branch string * * @return - * - \ref NVML_SUCCESS if \a deviceArray or \a count (if initially zero) has been set - * - \ref NVML_ERROR_INVALID_ARGUMENT if \a cpuNumber, or \a count is invalid, or \a deviceArray is NULL with a non-zero \a count - * - \ref NVML_ERROR_NOT_SUPPORTED if the device or OS does not support this feature - * - \ref NVML_ERROR_UNKNOWN an error has occurred in underlying topology discovery + * - \ref NVML_SUCCESS successful completion + * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT if \a branchInfo is NULL + * - \ref NVML_ERROR_INSUFFICIENT_SIZE if \a length is too small + * - \ref NVML_ERROR_UNKNOWN on any unexpected error */ -nvmlReturn_t DECLDIR nvmlSystemGetTopologyGpuSet(unsigned int cpuNumber, unsigned int *count, nvmlDevice_t *deviceArray); +nvmlReturn_t DECLDIR nvmlSystemGetDriverBranch(nvmlSystemDriverBranchInfo_t *branchInfo, unsigned int length); /** @} */ @@ -3375,7 +4188,7 @@ nvmlReturn_t DECLDIR nvmlDeviceGetHandleByIndex_v2(unsigned int index, nvmlDevic nvmlReturn_t DECLDIR nvmlDeviceGetHandleBySerial(const char *serial, nvmlDevice_t *device); /** - * Acquire the handle for a particular device, based on its globally unique immutable UUID associated with each device. + * Acquire the handle for a particular device, based on its globally unique immutable UUID (in ASCII format) associated with each device. * * For all products. * @@ -3399,6 +4212,29 @@ nvmlReturn_t DECLDIR nvmlDeviceGetHandleBySerial(const char *serial, nvmlDevice_ */ nvmlReturn_t DECLDIR nvmlDeviceGetHandleByUUID(const char *uuid, nvmlDevice_t *device); +/** + * Acquire the handle for a particular device, based on its globally unique immutable UUID (in either ASCII or binary format) associated with each device. + * See \ref nvmlUUID_v1_t for more information on the UUID struct. The caller must set the appropriate version prior to calling this API. + * + * For all products. + * + * @param[in] uuid The UUID of the target GPU or MIG instance + * @param[out] device Reference in which to return the device handle or MIG device handle + * + * This API causes NVML to initialize the target GPU + * NVML may initialize additional GPUs as it searches for the target GPU + * + * @return + * - \ref NVML_SUCCESS if \a device has been set + * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT if \a uuid is invalid, \a device is null or \a uuid->type is invalid + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH if the provided version is invalid/unsupported + * - \ref NVML_ERROR_NOT_FOUND if \a uuid does not match a valid device on the system + * - \ref NVML_ERROR_GPU_IS_LOST if any GPU has fallen off the bus or is otherwise inaccessible + * - \ref NVML_ERROR_UNKNOWN on any unexpected error + */ +nvmlReturn_t DECLDIR nvmlDeviceGetHandleByUUIDV(const nvmlUUID_t *uuid, nvmlDevice_t *device); + /** * Acquire the handle for a particular device, based on its PCI bus id. * @@ -3414,6 +4250,11 @@ nvmlReturn_t DECLDIR nvmlDeviceGetHandleByUUID(const char *uuid, nvmlDevice_t *d * instead of NVML_ERROR_NO_PERMISSION. * * @param pciBusId The PCI bus id of the target GPU + * Accept the following formats (all numbers in hexadecimal): + * domain:bus:device.function in format %x:%x:%x.%x + * domain:bus:device in format %x:%x:%x + * bus:device.function in format %x:%x.%x + * * @param device Reference in which to return the device handle * * @return @@ -3532,21 +4373,21 @@ nvmlReturn_t DECLDIR nvmlDeviceGetIndex(nvmlDevice_t device, unsigned int *index */ nvmlReturn_t DECLDIR nvmlDeviceGetSerial(nvmlDevice_t device, char *serial, unsigned int length); -/* -* Get a unique identifier for the device module on the baseboard -* -* This API retrieves a unique identifier for each GPU module that exists on a given baseboard. -* For non-baseboard products, this ID would always be 0. -* -* @param device The identifier of the target device -* @param moduleId Unique identifier for the GPU module -* -* @return -* - \ref NVML_SUCCESS if \a moduleId has been successfully retrieved -* - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized -* - \ref NVML_ERROR_INVALID_ARGUMENT if \a device or \a moduleId is invalid -* - \ref NVML_ERROR_UNKNOWN on any unexpected error -*/ +/** + * Get a unique identifier for the device module on the baseboard + * + * This API retrieves a unique identifier for each GPU module that exists on a given baseboard. + * For non-baseboard products, this ID would always be 0. + * + * @param device The identifier of the target device + * @param moduleId Unique identifier for the GPU module + * + * @return + * - \ref NVML_SUCCESS if \a moduleId has been successfully retrieved + * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT if \a device or \a moduleId is invalid + * - \ref NVML_ERROR_UNKNOWN on any unexpected error + */ nvmlReturn_t DECLDIR nvmlDeviceGetModuleId(nvmlDevice_t device, unsigned int *moduleId); /** @@ -4032,7 +4873,7 @@ nvmlReturn_t DECLDIR nvmlDeviceGetPersistenceMode(nvmlDevice_t device, nvmlEnabl * * For all products. * - * See \ref nvmlPciInfoExt_t for details on the available PCI info. + * See \ref nvmlPciInfoExt_v1_t for details on the available PCI info. * * @param device The identifier of the target device * @param pci Reference in which to return the PCI info @@ -4471,6 +5312,30 @@ nvmlReturn_t DECLDIR nvmlDeviceGetFanSpeed(nvmlDevice_t device, unsigned int *sp */ nvmlReturn_t DECLDIR nvmlDeviceGetFanSpeed_v2(nvmlDevice_t device, unsigned int fan, unsigned int * speed); +/** + * Retrieves the intended operating speed in rotations per minute (RPM) of the device's specified fan. + * + * For Maxwell &tm; or newer fully supported devices. + * + * For all discrete products with dedicated fans. + * + * Note: The reported speed is the intended fan speed. If the fan is physically blocked and unable to spin, the + * output will not match the actual fan speed. + * + * @param device The identifier of the target device + * @param fanSpeed Structure specifying the index of the target fan (input) and + * retrieved fan speed value (output) + * + * @return + * - \ref NVML_SUCCESS If everything worked + * - \ref NVML_ERROR_UNINITIALIZED If the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a device is invalid, \a fan is not an acceptable + * index, or \a speed is NULL + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the provided version is invalid/unsupported + * - \ref NVML_ERROR_NOT_SUPPORTED If the \a device does not support this feature + */ +nvmlReturn_t DECLDIR nvmlDeviceGetFanSpeedRPM(nvmlDevice_t device, nvmlFanSpeedInfo_t *fanSpeed); + /** * Retrieves the intended target speed of the device's specified fan. * @@ -4559,25 +5424,67 @@ nvmlReturn_t DECLDIR nvmlDeviceGetFanControlPolicy_v2(nvmlDevice_t device, unsig nvmlReturn_t DECLDIR nvmlDeviceGetNumFans(nvmlDevice_t device, unsigned int *numFans); /** - * Retrieves the current temperature readings for the device, in degrees C. + * @deprecated Use \ref nvmlDeviceGetTemperatureV instead + */ +nvmlReturn_t DECLDIR nvmlDeviceGetTemperature(nvmlDevice_t device, nvmlTemperatureSensors_t sensorType, unsigned int *temp); + +/** + * Retrieves the cooler's information. + * Returns a cooler's control signal characteristics. The possible types are restricted, Variable and Toggle. + * See \ref nvmlCoolerControl_t for details on available signal types. + * Returns objects that cooler cools. Targets may be GPU, Memory, Power Supply or All of these. + * See \ref nvmlCoolerTarget_t for details on available targets. * - * For all products. + * For Maxwell &tm; or newer fully supported devices. * - * See \ref nvmlTemperatureSensors_t for details on available temperature sensors. + * For all discrete products with dedicated fans. * - * @param device The identifier of the target device - * @param sensorType Flag that indicates which sensor reading to retrieve - * @param temp Reference in which to return the temperature reading + * @param[in] device The identifier of the target device + * @param[out] coolerInfo Structure specifying the cooler's control signal characteristics (out) + * and the target that cooler cools (out) * * @return - * - \ref NVML_SUCCESS if \a temp has been set - * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized - * - \ref NVML_ERROR_INVALID_ARGUMENT if \a device is invalid, \a sensorType is invalid or \a temp is NULL - * - \ref NVML_ERROR_NOT_SUPPORTED if the device does not have the specified sensor - * - \ref NVML_ERROR_GPU_IS_LOST if the target GPU has fallen off the bus or is otherwise inaccessible - * - \ref NVML_ERROR_UNKNOWN on any unexpected error + * - \ref NVML_SUCCESS If everything worked + * - \ref NVML_ERROR_UNINITIALIZED If the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a device is invalid, \a signalType or \a target is NULL + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the provided version is invalid/unsupported + * - \ref NVML_ERROR_NOT_SUPPORTED If the \a device does not support this feature */ -nvmlReturn_t DECLDIR nvmlDeviceGetTemperature(nvmlDevice_t device, nvmlTemperatureSensors_t sensorType, unsigned int *temp); +nvmlReturn_t DECLDIR nvmlDeviceGetCoolerInfo(nvmlDevice_t device, nvmlCoolerInfo_t *coolerInfo); + +/** + * Structure used to encapsulate temperature info + */ +typedef struct +{ + unsigned int version; + nvmlTemperatureSensors_t sensorType; + int temperature; +} nvmlTemperature_v1_t; + +typedef nvmlTemperature_v1_t nvmlTemperature_t; + +#define nvmlTemperature_v1 NVML_STRUCT_VERSION(Temperature, 1) + +/** + * Retrieves the current temperature readings (in degrees C) for the given device. + * + * For all products. + * + * @param[in] device Target device identifier. + * @param[in,out] temperature Structure specifying the sensor type (input) and retrieved + * temperature value (output). + * + * @return + * - \ref NVML_SUCCESS if \a temp has been set + * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT if \a device is invalid, \a sensorType is invalid or \a temp is NULL + * - \ref NVML_ERROR_NOT_SUPPORTED if the device does not have the specified sensor + * - \ref NVML_ERROR_GPU_IS_LOST if the target GPU has fallen off the bus or is otherwise inaccessible + * - \ref NVML_ERROR_UNKNOWN on any unexpected error + */ +nvmlReturn_t DECLDIR nvmlDeviceGetTemperatureV(nvmlDevice_t device, nvmlTemperature_t *temperature); + /** * Retrieves the temperature threshold for the GPU with the specified threshold type in degrees C. @@ -4607,6 +5514,22 @@ nvmlReturn_t DECLDIR nvmlDeviceGetTemperature(nvmlDevice_t device, nvmlTemperatu */ nvmlReturn_t DECLDIR nvmlDeviceGetTemperatureThreshold(nvmlDevice_t device, nvmlTemperatureThresholds_t thresholdType, unsigned int *temp); +/** + * Retrieves the thermal margin temperature (distance to nearest slowdown threshold). + * + * @param[in] device The identifier of the target device + * @param[in,out] marginTempInfo Versioned structure in which to return the temperature reading + * + * @returns + * - \ref NVML_SUCCESS if the margin temperature was retrieved successfully + * - \ref NVML_ERROR_NOT_SUPPORTED if request is not supported on the current platform + * - \ref NVML_ERROR_INVALID_ARGUMENT if \a device is invalid or \a temperature is NULL + * - \ref NVML_ERROR_GPU_IS_LOST if the target GPU has fallen off the bus or is otherwise inaccessible + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH if the right versioned structure is not used + * - \ref NVML_ERROR_UNKNOWN on any unexpected error + */ +nvmlReturn_t DECLDIR nvmlDeviceGetMarginTemperature(nvmlDevice_t device, nvmlMarginTemperature_t *marginTempInfo); + /** * Used to execute a list of thermal system instructions. * @@ -4831,6 +5754,159 @@ nvmlReturn_t DECLDIR nvmlDeviceGetGpcClkMinMaxVfOffset(nvmlDevice_t device, nvmlReturn_t DECLDIR nvmlDeviceGetMemClkMinMaxVfOffset(nvmlDevice_t device, int *minOffset, int *maxOffset); +/** + * Retrieve min, max and current clock offset of some clock domain for a given PState + * + * For Maxwell &tm; or newer fully supported devices. + * + * Note: \ref nvmlDeviceGetGpcClkVfOffset, \ref nvmlDeviceGetMemClkVfOffset, \ref nvmlDeviceGetGpcClkMinMaxVfOffset and + * \ref nvmlDeviceGetMemClkMinMaxVfOffset will be deprecated in a future release. + Use \ref nvmlDeviceGetClockOffsets instead. + * + * @param device The identifier of the target device + * @param info Structure specifying the clock type (input) and the pstate (input) + * retrieved clock offset value (output), min clock offset (output) + * and max clock offset (output) + * + * @return + * - \ref NVML_SUCCESS If everything worked + * - \ref NVML_ERROR_UNINITIALIZED If the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a device, \a type or \a pstate are invalid or both + * \a minClockOffsetMHz and \a maxClockOffsetMHz are NULL + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the provided version is invalid/unsupported + * - \ref NVML_ERROR_NOT_SUPPORTED If the device does not support this feature + */ +nvmlReturn_t DECLDIR nvmlDeviceGetClockOffsets(nvmlDevice_t device, nvmlClockOffset_t *info); + +/** + * Control current clock offset of some clock domain for a given PState + * + * For Maxwell &tm; or newer fully supported devices. + * + * Requires privileged user. + * + * @param device The identifier of the target device + * @param info Structure specifying the clock type (input), the pstate (input) + * and clock offset value (input) + * + * @return + * - \ref NVML_SUCCESS If everything worked + * - \ref NVML_ERROR_UNINITIALIZED If the library has not been successfully initialized + * - \ref NVML_ERROR_NO_PERMISSION If the user doesn't have permission to perform this operation + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a device, \a type or \a pstate are invalid or both + * \a clockOffsetMHz is out of allowed range. + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the provided version is invalid/unsupported + * - \ref NVML_ERROR_NOT_SUPPORTED If the device does not support this feature + */ +nvmlReturn_t DECLDIR nvmlDeviceSetClockOffsets(nvmlDevice_t device, nvmlClockOffset_t *info); + +/** + * Retrieves a performance mode string with all the + * performance modes defined for this device along with their associated + * GPU Clock and Memory Clock values. + * Not all tokens will be reported on all GPUs, and additional tokens + * may be added in the future. + * For backwards compatibility we still provide nvclock and memclock; + * those are the same as nvclockmin and memclockmin. + * + * Note: These clock values take into account the offset + * set by clients through /ref nvmlDeviceSetClockOffsets. + * + * Maximum available Pstate (P15) shows the minimum performance level (0) and vice versa. + * + * Each performance modes are returned as a comma-separated list of + * "token=value" pairs. Each set of performance mode tokens are separated + * by a ";". Valid tokens: + * + * Token Value + * "perf" unsigned int - the Performance level + * "nvclock" unsigned int - the GPU clocks (in MHz) for the perf level + * "nvclockmin" unsigned int - the GPU clocks min (in MHz) for the perf level + * "nvclockmax" unsigned int - the GPU clocks max (in MHz) for the perf level + * "nvclockeditable" unsigned int - if the GPU clock domain is editable for the perf level + * "memclock" unsigned int - the memory clocks (in MHz) for the perf level + * "memclockmin" unsigned int - the memory clocks min (in MHz) for the perf level + * "memclockmax" unsigned int - the memory clocks max (in MHz) for the perf level + * "memclockeditable" unsigned int - if the memory clock domain is editable for the perf level + * "memtransferrate" unsigned int - the memory transfer rate (in MHz) for the perf level + * "memtransferratemin" unsigned int - the memory transfer rate min (in MHz) for the perf level + * "memtransferratemax" unsigned int - the memory transfer rate max (in MHz) for the perf level + * "memtransferrateeditable" unsigned int - if the memory transfer rate is editable for the perf level + * + * Example: + * + * perf=0, nvclock=324, nvclockmin=324, nvclockmax=324, nvclockeditable=0, + * memclock=324, memclockmin=324, memclockmax=324, memclockeditable=0, + * memtransferrate=648, memtransferratemin=648, memtransferratemax=648, + * memtransferrateeditable=0 ; + * perf=1, nvclock=324, nvclockmin=324, nvclockmax=640, nvclockeditable=0, + * memclock=810, memclockmin=810, memclockmax=810, memclockeditable=0, + * memtransferrate=1620, memtransferrate=1620, memtransferrate=1620, + * memtransferrateeditable=0 ; + * + * + * @param device The identifier of the target device + * @param perfModes Reference in which to return the performance level string + * + * @return + * - \ref NVML_SUCCESS if \a perfModes has been set + * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT if \a device is invalid, or \a name is NULL + * - \ref NVML_ERROR_INSUFFICIENT_SIZE if \a length is too small + * - \ref NVML_ERROR_GPU_IS_LOST if the target GPU has fallen off the bus or is otherwise inaccessible + * - \ref NVML_ERROR_UNKNOWN on any unexpected error + */ +nvmlReturn_t DECLDIR nvmlDeviceGetPerformanceModes(nvmlDevice_t device, nvmlDevicePerfModes_t *perfModes); + +/** + * Retrieves a string with the associated current GPU Clock and Memory Clock values. + * + * Not all tokens will be reported on all GPUs, and additional tokens + * may be added in the future. + * + * Note: These clock values take into account the offset + * set by clients through /ref nvmlDeviceSetClockOffsets. + * + * Clock values are returned as a comma-separated list of + * "token=value" pairs. + * Valid tokens: + * + * Token Value + * "perf" unsigned int - the Performance level + * "nvclock" unsigned int - the GPU clocks (in MHz) for the perf level + * "nvclockmin" unsigned int - the GPU clocks min (in MHz) for the perf level + * "nvclockmax" unsigned int - the GPU clocks max (in MHz) for the perf level + * "nvclockeditable" unsigned int - if the GPU clock domain is editable for the perf level + * "memclock" unsigned int - the memory clocks (in MHz) for the perf level + * "memclockmin" unsigned int - the memory clocks min (in MHz) for the perf level + * "memclockmax" unsigned int - the memory clocks max (in MHz) for the perf level + * "memclockeditable" unsigned int - if the memory clock domain is editable for the perf level + * "memtransferrate" unsigned int - the memory transfer rate (in MHz) for the perf level + * "memtransferratemin" unsigned int - the memory transfer rate min (in MHz) for the perf level + * "memtransferratemax" unsigned int - the memory transfer rate max (in MHz) for the perf level + * "memtransferrateeditable" unsigned int - if the memory transfer rate is editable for the perf level + * + * Example: + * + * nvclock=324, nvclockmin=324, nvclockmax=324, nvclockeditable=0, + * memclock=324, memclockmin=324, memclockmax=324, memclockeditable=0, + * memtransferrate=648, memtransferratemin=648, memtransferratemax=648, + * memtransferrateeditable=0 ; + * + * + * @param device The identifier of the target device + * @param currentClockFreqs Reference in which to return the performance level string + * + * @return + * - \ref NVML_SUCCESS if \a currentClockFreqs has been set + * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT if \a device is invalid, or \a name is NULL + * - \ref NVML_ERROR_INSUFFICIENT_SIZE if \a length is too small + * - \ref NVML_ERROR_GPU_IS_LOST if the target GPU has fallen off the bus or is otherwise inaccessible + * - \ref NVML_ERROR_UNKNOWN on any unexpected error + */ +nvmlReturn_t DECLDIR nvmlDeviceGetCurrentClockFreqs(nvmlDevice_t device, nvmlDeviceCurrentClockFreqs_t *currentClockFreqs); + /** * This API has been deprecated. * @@ -5055,6 +6131,10 @@ nvmlReturn_t DECLDIR nvmlDeviceGetGpuOperationMode(nvmlDevice_t device, nvmlGpuO * - \ref NVML_ERROR_UNKNOWN on any unexpected error */ nvmlReturn_t DECLDIR nvmlDeviceGetMemoryInfo(nvmlDevice_t device, nvmlMemory_t *memory); + +/** + * nvmlDeviceGetMemoryInfo_v2 accounts separately for reserved memory and includes it in the used memory amount. + */ nvmlReturn_t DECLDIR nvmlDeviceGetMemoryInfo_v2(nvmlDevice_t device, nvmlMemory_v2_t *memory); /** @@ -5103,6 +6183,66 @@ nvmlReturn_t DECLDIR nvmlDeviceGetComputeMode(nvmlDevice_t device, nvmlComputeMo */ nvmlReturn_t DECLDIR nvmlDeviceGetCudaComputeCapability(nvmlDevice_t device, int *major, int *minor); +/** + * Retrieves the current and pending DRAM Encryption modes for the device. + * + * %BLACKWELL_OR_NEWER% + * Only applicable to devices that support DRAM Encryption + * Requires \a NVML_INFOROM_DEN version 1.0 or higher. + * + * Changing DRAM Encryption modes requires a reboot. The "pending" DRAM Encryption mode refers to the target mode following + * the next reboot. + * + * See \ref nvmlEnableState_t for details on allowed modes. + * + * @param device The identifier of the target device + * @param current Reference in which to return the current DRAM Encryption mode + * @param pending Reference in which to return the pending DRAM Encryption mode + * + * @return + * - \ref NVML_SUCCESS if \a current and \a pending have been set + * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT if \a device is invalid or either \a current or \a pending is NULL + * - \ref NVML_ERROR_NOT_SUPPORTED if the device does not support this feature + * - \ref NVML_ERROR_GPU_IS_LOST if the target GPU has fallen off the bus or is otherwise inaccessible + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH if the argument version is not supported + * - \ref NVML_ERROR_UNKNOWN on any unexpected error + * + * @see nvmlDeviceSetDramEncryptionMode() + */ +nvmlReturn_t DECLDIR nvmlDeviceGetDramEncryptionMode(nvmlDevice_t device, nvmlDramEncryptionInfo_t *current, nvmlDramEncryptionInfo_t *pending); + +/** + * Set the DRAM Encryption mode for the device. + * + * For Kepler &tm; or newer fully supported devices. + * Only applicable to devices that support DRAM Encryption. + * Requires \a NVML_INFOROM_DEN version 1.0 or higher. + * Requires root/admin permissions. + * + * The DRAM Encryption mode determines whether the GPU enables its DRAM Encryption support. + * + * This operation takes effect after the next reboot. + * + * See \ref nvmlEnableState_t for details on available modes. + * + * @param device The identifier of the target device + * @param dramEncryption The target DRAM Encryption mode + * + * @return + * - \ref NVML_SUCCESS if the DRAM Encryption mode was set + * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT if \a device is invalid or \a DRAM Encryption is invalid + * - \ref NVML_ERROR_NOT_SUPPORTED if the device does not support this feature + * - \ref NVML_ERROR_NO_PERMISSION if the user doesn't have permission to perform this operation + * - \ref NVML_ERROR_GPU_IS_LOST if the target GPU has fallen off the bus or is otherwise inaccessible + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH if the argument version is not supported + * - \ref NVML_ERROR_UNKNOWN on any unexpected error + * + * @see nvmlDeviceGetDramEncryptionMode() + */ +nvmlReturn_t DECLDIR nvmlDeviceSetDramEncryptionMode(nvmlDevice_t device, const nvmlDramEncryptionInfo_t *dramEncryption); + /** * Retrieves the current and pending ECC modes for the device. * @@ -5538,11 +6678,11 @@ nvmlReturn_t DECLDIR nvmlDeviceGetFBCSessions(nvmlDevice_t device, unsigned int /** * Retrieves the current and pending driver model for the device. * - * For Fermi &tm; or newer fully supported devices. + * For Kepler &tm; or newer fully supported devices. * For windows only. * - * On Windows platforms the device driver can run in either WDDM or WDM (TCC) mode. If a display is attached - * to the device it must run in WDDM mode. TCC mode is preferred if a display is not attached. + * On Windows platforms the device driver can run in either WDDM, MCDM or WDM (TCC) modes. If a display is attached + * to the device it must run in WDDM mode. MCDM mode is preferred if a display is not attached. TCC mode is deprecated. * * See \ref nvmlDriverModel_t for details on available driver models. * @@ -5558,9 +6698,9 @@ nvmlReturn_t DECLDIR nvmlDeviceGetFBCSessions(nvmlDevice_t device, unsigned int * - \ref NVML_ERROR_GPU_IS_LOST if the target GPU has fallen off the bus or is otherwise inaccessible * - \ref NVML_ERROR_UNKNOWN on any unexpected error * - * @see nvmlDeviceSetDriverModel() + * @see nvmlDeviceSetDriverModel_v2() */ -nvmlReturn_t DECLDIR nvmlDeviceGetDriverModel(nvmlDevice_t device, nvmlDriverModel_t *current, nvmlDriverModel_t *pending); +nvmlReturn_t DECLDIR nvmlDeviceGetDriverModel_v2(nvmlDevice_t device, nvmlDriverModel_t *current, nvmlDriverModel_t *pending); /** * Get VBIOS version of the device. @@ -5691,7 +6831,7 @@ nvmlReturn_t DECLDIR nvmlDeviceGetComputeRunningProcesses_v3(nvmlDevice_t device nvmlReturn_t DECLDIR nvmlDeviceGetGraphicsRunningProcesses_v3(nvmlDevice_t device, unsigned int *infoCount, nvmlProcessInfo_t *infos); /** - * Get information about processes with a MPS compute context on a device + * Get information about processes with a Multi-Process Service (MPS) compute context on a device * * For Volta &tm; or newer fully supported devices. * @@ -5736,17 +6876,17 @@ nvmlReturn_t DECLDIR nvmlDeviceGetMPSComputeRunningProcesses_v3(nvmlDevice_t dev /** * Get information about running processes on a device for input context * - * %HOPPER_OR_NEWER% + * For Hopper &tm; or newer fully supported devices. * * This function returns information only about running processes (e.g. CUDA application which have * active context). * - * To determine the size of the @ref plist->procArray array to allocate, call the function with - * @ref plist->numProcArrayEntries set to zero and @ref plist->procArray set to NULL. The return + * To determine the size of the \a plist->procArray array to allocate, call the function with + * \a plist->numProcArrayEntries set to zero and \a plist->procArray set to NULL. The return * code will be either NVML_ERROR_INSUFFICIENT_SIZE (if there are valid processes of type - * @ref plist->mode to report on, in which case the @ref plist->numProcArrayEntries field will + * \a plist->mode to report on, in which case the \a plist->numProcArrayEntries field will * indicate the required number of entries in the array) or NVML_SUCCESS (if no processes of type - * @ref plist->mode exist). + * \a plist->mode exist). * * The usedGpuMemory field returned is all of the memory used by the application. * The usedGpuCcProtectedMemory field returned is all of the protected memory used by the application. @@ -5763,10 +6903,10 @@ nvmlReturn_t DECLDIR nvmlDeviceGetMPSComputeRunningProcesses_v3(nvmlDevice_t dev * * @param device The device handle or MIG device handle * @param plist Reference in which to process detail list - * @param plist->version The api version - * @param plist->mode The process mode - * @param plist->procArray Reference in which to return the process information - * @param plist->numProcArrayEntries Proc array size of returned entries + * \a plist->version The api version + * \a plist->mode The process mode + * \a plist->procArray Reference in which to return the process information + * \a plist->numProcArrayEntries Proc array size of returned entries * * @return * - \ref NVML_SUCCESS if \a plist->numprocArrayEntries and \a plist->procArray have been populated @@ -5951,7 +7091,7 @@ nvmlReturn_t DECLDIR nvmlDeviceGetIrqNum(nvmlDevice_t device, unsigned int *irqN * @param numCores The number of cores for the specified device * * @return - * - \ref NVML_SUCCESS if Gpu core count is successfully retrieved + * - \ref NVML_SUCCESS if GPU core count is successfully retrieved * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized * - \ref NVML_ERROR_INVALID_ARGUMENT if \a device is invalid, or \a numCores is NULL * - \ref NVML_ERROR_NOT_SUPPORTED if this query is not supported by the device @@ -5999,7 +7139,7 @@ nvmlReturn_t DECLDIR nvmlDeviceGetMemoryBusWidth(nvmlDevice_t device, unsigned i * @param maxSpeed The devices's PCIE Max Link speed in MBPS * * @return - * - \ref NVML_SUCCESS if Pcie Max Link Speed is successfully retrieved + * - \ref NVML_SUCCESS if PCIe Max Link Speed is successfully retrieved * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized * - \ref NVML_ERROR_INVALID_ARGUMENT if \a device is invalid, or \a maxSpeed is NULL * - \ref NVML_ERROR_NOT_SUPPORTED if this query is not supported by the device @@ -6028,8 +7168,8 @@ nvmlReturn_t DECLDIR nvmlDeviceGetPcieSpeed(nvmlDevice_t device, unsigned int *p * * @param device The identifier of the target device * @param adaptiveClockStatus The current adaptive clocking status, either - * @ref NVML_ADAPTIVE_CLOCKING_INFO_STATUS_DISABLED - * or @ref NVML_ADAPTIVE_CLOCKING_INFO_STATUS_ENABLED + * NVML_ADAPTIVE_CLOCKING_INFO_STATUS_DISABLED + * or NVML_ADAPTIVE_CLOCKING_INFO_STATUS_ENABLED * * @return * - \ref NVML_SUCCESS if the current adaptive clocking status is successfully retrieved @@ -6050,7 +7190,7 @@ nvmlReturn_t DECLDIR nvmlDeviceGetAdaptiveClockInfoStatus(nvmlDevice_t device, u * return * - \ref NVML_SUCCESS if the bus \a type is successfully retreived * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized - * - \ref NVML_ERROR_INVALID_ARGUMENT if \device is invalid or \type is NULL + * - \ref NVML_ERROR_INVALID_ARGUMENT if \a device is invalid or \a type is NULL * - \ref NVML_ERROR_UNKNOWN on any unexpected error */ nvmlReturn_t DECLDIR nvmlDeviceGetBusType(nvmlDevice_t device, nvmlBusType_t *type); @@ -6061,7 +7201,7 @@ nvmlReturn_t DECLDIR nvmlDeviceGetBusType(nvmlDevice_t device, nvmlBusType_t *ty * * Get fabric information associated with the device. * - * %HOPPER_OR_NEWER% + * For Hopper &tm; or newer fully supported devices. * * On Hopper + NVSwitch systems, GPU is registered with the NVIDIA Fabric Manager * Upon successful registration, the GPU is added to the NVLink fabric to enable @@ -6091,7 +7231,7 @@ nvmlReturn_t DECLDIR nvmlDeviceGetGpuFabricInfo(nvmlDevice_t device, nvmlGpuFabr * nvmlReturn_t result = nvmlDeviceGetGpuFabricInfoV(device,&fabricInfo); * \endcode * -* %HOPPER_OR_NEWER% +* For Hopper &tm; or newer fully supported devices. * * @param device The identifier of the target device * @param gpuFabricInfo Information about GPU fabric state @@ -6189,7 +7329,7 @@ nvmlReturn_t DECLDIR nvmlSystemGetConfComputeGpusReadyState(unsigned int *isAcce nvmlReturn_t DECLDIR nvmlDeviceGetConfComputeProtectedMemoryUsage(nvmlDevice_t device, nvmlMemory_t *memory); /** - * Get Conf Computing Gpu certificate details. + * Get Conf Computing GPU certificate details. * * For Ampere &tm; or newer fully supported devices. * Supported on Linux, Windows TCC. @@ -6208,7 +7348,7 @@ nvmlReturn_t DECLDIR nvmlDeviceGetConfComputeGpuCertificate(nvmlDevice_t device, nvmlConfComputeGpuCertificate_t *gpuCert); /** - * Get Conf Computing Gpu attestation report. + * Get Conf Computing GPU attestation report. * * For Ampere &tm; or newer fully supported devices. * Supported on Linux, Windows TCC. @@ -6223,42 +7363,100 @@ nvmlReturn_t DECLDIR nvmlDeviceGetConfComputeGpuCertificate(nvmlDevice_t device, * - \ref NVML_ERROR_NOT_SUPPORTED if this query is not supported by the device * - \ref NVML_ERROR_UNKNOWN on any unexpected error */ -nvmlReturn_t DECLDIR nvmlDeviceGetConfComputeGpuAttestationReport(nvmlDevice_t device, - nvmlConfComputeGpuAttestationReport_t *gpuAtstReport); +nvmlReturn_t DECLDIR nvmlDeviceGetConfComputeGpuAttestationReport(nvmlDevice_t device, + nvmlConfComputeGpuAttestationReport_t *gpuAtstReport); +/** + * Get Conf Computing key rotation threshold detail. + * + * For Hopper &tm; or newer fully supported devices. + * Supported on Linux, Windows TCC. + * + * @param pKeyRotationThrInfo Reference in which to return the key rotation threshold data + * + * @return + * - \ref NVML_SUCCESS if \a gpu key rotation threshold info has been populated + * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT if \a device is invalid or \a memory is NULL + * - \ref NVML_ERROR_NOT_SUPPORTED if this query is not supported by the device + * - \ref NVML_ERROR_UNKNOWN on any unexpected error + */ +nvmlReturn_t DECLDIR nvmlSystemGetConfComputeKeyRotationThresholdInfo( + nvmlConfComputeGetKeyRotationThresholdInfo_t *pKeyRotationThrInfo); + +/** + * Set Conf Computing Unprotected Memory Size. + * + * For Ampere &tm; or newer fully supported devices. + * Supported on Linux, Windows TCC. + * + * @param device Device Handle + * @param sizeKiB Unprotected Memory size to be set in KiB + * + * @return + * - \ref NVML_SUCCESS if \a sizeKiB successfully set + * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT if \a device is invalid + * - \ref NVML_ERROR_NOT_SUPPORTED if this query is not supported by the device + */ +nvmlReturn_t DECLDIR nvmlDeviceSetConfComputeUnprotectedMemSize(nvmlDevice_t device, unsigned long long sizeKiB); + +/** + * Set Conf Computing GPUs ready state. + * + * For Ampere &tm; or newer fully supported devices. + * Supported on Linux, Windows TCC. + * + * @param isAcceptingWork GPU accepting new work, NVML_CC_ACCEPTING_CLIENT_REQUESTS_TRUE or + * NVML_CC_ACCEPTING_CLIENT_REQUESTS_FALSE + * + * return + * - \ref NVML_SUCCESS if \a current GPUs ready state is successfully set + * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT if \a isAcceptingWork is invalid + * - \ref NVML_ERROR_NOT_SUPPORTED if this query is not supported by the device + */ +nvmlReturn_t DECLDIR nvmlSystemSetConfComputeGpusReadyState(unsigned int isAcceptingWork); + /** - * Get Conf Computing key rotation threshold detail. + * Set Conf Computing key rotation threshold. * - * %HOPPER_OR_NEWER% + * For Hopper &tm; or newer fully supported devices. * Supported on Linux, Windows TCC. * - * @param pKeyRotationThrInfo Reference in which to return the key rotation threshold data + * This function is to set the confidential compute key rotation threshold parameters. + * \a pKeyRotationThrInfo->maxAttackerAdvantage should be in the range from + * NVML_CC_KEY_ROTATION_THRESHOLD_ATTACKER_ADVANTAGE_MIN to NVML_CC_KEY_ROTATION_THRESHOLD_ATTACKER_ADVANTAGE_MAX. + * Default value is 60. + * + * @param pKeyRotationThrInfo Reference to the key rotation threshold data * * @return - * - \ref NVML_SUCCESS if \a gpu key rotation threshold info has been populated + * - \ref NVML_SUCCESS if \a key rotation threashold max attacker advantage has been set * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized * - \ref NVML_ERROR_INVALID_ARGUMENT if \a device is invalid or \a memory is NULL + * - \ref NVML_ERROR_INVALID_STATE if confidential compute GPU ready state is enabled * - \ref NVML_ERROR_NOT_SUPPORTED if this query is not supported by the device * - \ref NVML_ERROR_UNKNOWN on any unexpected error */ -nvmlReturn_t DECLDIR nvmlSystemGetConfComputeKeyRotationThresholdInfo( - nvmlConfComputeGetKeyRotationThresholdInfo_t *pKeyRotationThrInfo); +nvmlReturn_t DECLDIR nvmlSystemSetConfComputeKeyRotationThresholdInfo( + nvmlConfComputeSetKeyRotationThresholdInfo_t *pKeyRotationThrInfo); /** * Get Conf Computing System Settings. * - * %HOPPER_OR_NEWER% + * For Hopper &tm; or newer fully supported devices. * Supported on Linux, Windows TCC. * * @param settings System CC settings * * @return - * - \ref NVML_SUCCESS if the query is success - * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized - * - \ref NVML_ERROR_INVALID_ARGUMENT if \a device is invalid or \a counters is NULL - * - \ref NVML_ERROR_NOT_SUPPORTED if the device does not support this feature - * - \ref NVML_ERROR_GPU_IS_LOST if the target GPU has fallen off the bus or is otherwise inaccessible - * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH if the provided version is invalid/unsupported - * - \ref NVML_ERROR_UNKNOWN on any unexpected error + * - \ref NVML_SUCCESS If the query is success + * - \ref NVML_ERROR_UNINITIALIZED If the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a device is invalid or \a counters is NULL + * - \ref NVML_ERROR_NOT_SUPPORTED If the device does not support this feature + * - \ref NVML_ERROR_GPU_IS_LOST If the target GPU has fallen off the bus or is otherwise inaccessible + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the provided version is invalid/unsupported + * - \ref NVML_ERROR_UNKNOWN On any unexpected error */ nvmlReturn_t DECLDIR nvmlSystemGetConfComputeSettings(nvmlSystemConfComputeSettings_t *settings); @@ -6292,10 +7490,34 @@ nvmlReturn_t DECLDIR nvmlDeviceGetGspFirmwareVersion(nvmlDevice_t device, char * * @return * - \ref NVML_SUCCESS if GSP firmware mode is sucessfully retrieved * - \ref NVML_ERROR_INVALID_ARGUMENT if \a device is invalid or any of \a isEnabled or \a defaultMode is NULL + * - \ref NVML_ERROR_NOT_SUPPORTED if GSP firmware is not enabled for GPU * - \ref NVML_ERROR_UNKNOWN on any unexpected error */ nvmlReturn_t DECLDIR nvmlDeviceGetGspFirmwareMode(nvmlDevice_t device, unsigned int *isEnabled, unsigned int *defaultMode); +/** + * Get SRAM ECC error status of this device. + * + * For Ampere &tm; or newer fully supported devices. + * Requires root/admin permissions. + * + * See \ref nvmlEccSramErrorStatus_v1_t for more information on the struct. + * + * @param device The identifier of the target device + * @param status Returns SRAM ECC error status + * + * @return + * - \ref NVML_SUCCESS If \a limit has been set + * - \ref NVML_ERROR_UNINITIALIZED If the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a device is invalid or \a counters is NULL + * - \ref NVML_ERROR_NOT_SUPPORTED If the device does not support this feature + * - \ref NVML_ERROR_GPU_IS_LOST If the target GPU has fallen off the bus or is otherwise inaccessible + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the version of \a nvmlEccSramErrorStatus_t is invalid + * - \ref NVML_ERROR_UNKNOWN On any unexpected error + */ +nvmlReturn_t DECLDIR nvmlDeviceGetSramEccErrorStatus(nvmlDevice_t device, + nvmlEccSramErrorStatus_t *status); + /** * @} */ @@ -6369,8 +7591,8 @@ nvmlReturn_t DECLDIR nvmlDeviceGetAccountingStats(nvmlDevice_t device, unsigned * * For Kepler &tm; or newer fully supported devices. * - * To just query the number of processes ready to be queried, call this function with *count = 0 and - * pids=NULL. The return code will be NVML_ERROR_INSUFFICIENT_SIZE, or NVML_SUCCESS if list is empty. + * To query the number of processes under Accounting Mode, call this function with *count = 0 and pids=NULL. + * The return code will be NVML_ERROR_INSUFFICIENT_SIZE with an updated count value indicating the number of processes. * * For more details see \ref nvmlDeviceGetAccountingStats. * @@ -6428,7 +7650,7 @@ nvmlReturn_t DECLDIR nvmlDeviceGetAccountingBufferSize(nvmlDevice_t device, unsi /** * Returns the list of retired pages by source, including pages that are pending retirement * The address information provided from this API is the hardware address of the page that was retired. Note - * that this does not match the virtual address used in CUDA, but will match the address information in XID 63 + * that this does not match the virtual address used in CUDA, but will match the address information in Xid 63 * * For Kepler &tm; or newer fully supported devices. * @@ -6456,7 +7678,7 @@ nvmlReturn_t DECLDIR nvmlDeviceGetRetiredPages(nvmlDevice_t device, nvmlPageReti /** * Returns the list of retired pages by source, including pages that are pending retirement * The address information provided from this API is the hardware address of the page that was retired. Note - * that this does not match the virtual address used in CUDA, but will match the address information in XID 63 + * that this does not match the virtual address used in CUDA, but will match the address information in Xid 63 * * \note nvmlDeviceGetRetiredPages_v2 adds an additional timestamps parameter to return the time of each page's * retirement. @@ -6657,20 +7879,40 @@ nvmlReturn_t DECLDIR nvmlDeviceGetProcessUtilization(nvmlDevice_t device, nvmlPr * @param procesesUtilInfo Pointer to the caller-provided structure of nvmlProcessesUtilizationInfo_t. * @return - * - \ref NVML_SUCCESS if \a procesesUtilInfo->procUtilArray has been populated - * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized - * - \ref NVML_ERROR_INVALID_ARGUMENT if \a device is invalid, or \a procesesUtilInfo is NULL - * - \ref NVML_ERROR_NOT_SUPPORTED if the device does not support this feature - * - \ref NVML_ERROR_NOT_FOUND if sample entries are not found - * - \ref NVML_ERROR_GPU_IS_LOST if the target GPU has fallen off the bus or is otherwise inaccessible - * - \ref NVML_ERROR_VERSION_MISMATCH if the version of \a procesesUtilInfo is invalid - * - \ref NVML_ERROR_INSUFFICIENT_SIZE if \a procesesUtilInfo->procUtilArray is NULL, or the buffer size of procesesUtilInfo->procUtilArray is too small. - * The caller should check the minimul array size from the returned procesesUtilInfo->processSamplesCount, and call - * the function again with a buffer no smaller than procesesUtilInfo->processSamplesCount * sizeof(nvmlProcessUtilizationInfo_t) - * - \ref NVML_ERROR_UNKNOWN on any unexpected error + * - \ref NVML_SUCCESS If \a procesesUtilInfo->procUtilArray has been populated + * - \ref NVML_ERROR_UNINITIALIZED If the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a device is invalid, or \a procesesUtilInfo is NULL + * - \ref NVML_ERROR_NOT_SUPPORTED If the device does not support this feature + * - \ref NVML_ERROR_NOT_FOUND If sample entries are not found + * - \ref NVML_ERROR_GPU_IS_LOST If the target GPU has fallen off the bus or is otherwise inaccessible + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the version of \a procesesUtilInfo is invalid + * - \ref NVML_ERROR_INSUFFICIENT_SIZE If \a procesesUtilInfo->procUtilArray is NULL, or the buffer size of procesesUtilInfo->procUtilArray is too small. + * The caller should check the minimul array size from the returned procesesUtilInfo->processSamplesCount, and call + * the function again with a buffer no smaller than procesesUtilInfo->processSamplesCount * sizeof(nvmlProcessUtilizationInfo_t) + * - \ref NVML_ERROR_UNKNOWN On any unexpected error */ nvmlReturn_t DECLDIR nvmlDeviceGetProcessesUtilizationInfo(nvmlDevice_t device, nvmlProcessesUtilizationInfo_t *procesesUtilInfo); +/** + * Get platform information of this device. + * + * %BLACKWELL_OR_NEWER% + * + * See \ref nvmlPlatformInfo_v2_t for more information on the struct. + * + * @param device The identifier of the target device + * @param platformInfo Pointer to the caller-provided structure of nvmlPlatformInfo_t. + * + * @return + * - \ref NVML_SUCCESS If \a platformInfo has been retrieved + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a device is invalid or \a platformInfo is NULL + * - \ref NVML_ERROR_NOT_SUPPORTED If the device does not support this feature + * - \ref NVML_ERROR_MEMORY if system memory is insufficient + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the version of \a nvmlPlatformInfo_t is invalid + * - \ref NVML_ERROR_UNKNOWN On any unexpected error + */ +nvmlReturn_t DECLDIR nvmlDeviceGetPlatformInfo(nvmlDevice_t device, nvmlPlatformInfo_t *platformInfo); + /** @} */ /***************************************************************************************************/ @@ -7327,6 +8569,9 @@ nvmlReturn_t DECLDIR nvmlDeviceSetAPIRestriction(nvmlDevice_t device, nvmlRestri nvmlReturn_t DECLDIR nvmlDeviceSetFanSpeed_v2(nvmlDevice_t device, unsigned int fan, unsigned int speed); /** + * Deprecated: Will be deprecated in a future release. Use \ref nvmlDeviceSetClockOffsets instead. It works + * on Maxwell onwards GPU architectures. + * * Set the GPCCLK VF offset value * @param[in] device The identifier of the target device * @param[in] offset The GPCCLK VF offset value to set @@ -7342,6 +8587,9 @@ nvmlReturn_t DECLDIR nvmlDeviceSetFanSpeed_v2(nvmlDevice_t device, unsigned int nvmlReturn_t DECLDIR nvmlDeviceSetGpcClkVfOffset(nvmlDevice_t device, int offset); /** + * Deprecated: Will be deprecated in a future release. Use \ref nvmlDeviceSetClockOffsets instead. It works + * on Maxwell onwards GPU architectures. + * * Set the MemClk (Memory Clock) VF offset value. It requires elevated privileges. * @param[in] device The identifier of the target device * @param[in] offset The MemClk VF offset value to set @@ -7356,64 +8604,6 @@ nvmlReturn_t DECLDIR nvmlDeviceSetGpcClkVfOffset(nvmlDevice_t device, int offset */ nvmlReturn_t DECLDIR nvmlDeviceSetMemClkVfOffset(nvmlDevice_t device, int offset); -/** - * Set Conf Computing Unprotected Memory Size. - * - * For Ampere &tm; or newer fully supported devices. - * Supported on Linux, Windows TCC. - * - * @param device Device Handle - * @param sizeKiB Unprotected Memory size to be set in KiB - * - * @return - * - \ref NVML_SUCCESS if \a sizeKiB successfully set - * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized - * - \ref NVML_ERROR_INVALID_ARGUMENT if \a device is invalid - * - \ref NVML_ERROR_NOT_SUPPORTED if this query is not supported by the device - */ -nvmlReturn_t DECLDIR nvmlDeviceSetConfComputeUnprotectedMemSize(nvmlDevice_t device, unsigned long long sizeKiB); - -/** - * Set Conf Computing GPUs ready state. - * - * For Ampere &tm; or newer fully supported devices. - * Supported on Linux, Windows TCC. - * - * @param isAcceptingWork GPU accepting new work, NVML_CC_ACCEPTING_CLIENT_REQUESTS_TRUE or - * NVML_CC_ACCEPTING_CLIENT_REQUESTS_FALSE - * - * return - * - \ref NVML_SUCCESS if \a current GPUs ready state is successfully set - * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized - * - \ref NVML_ERROR_INVALID_ARGUMENT if \a isAcceptingWork is invalid - * - \ref NVML_ERROR_NOT_SUPPORTED if this query is not supported by the device - */ -nvmlReturn_t DECLDIR nvmlSystemSetConfComputeGpusReadyState(unsigned int isAcceptingWork); - -/** - * Set Conf Computing key rotation threshold. - * - * %HOPPER_OR_NEWER% - * Supported on Linux, Windows TCC. - * - * This function is to set the confidential compute key rotation threshold parameters. - * @ref pKeyRotationThrInfo->maxAttackerAdvantage should be in the range from - * NVML_CC_KEY_ROTATION_THRESHOLD_ATTACKER_ADVANTAGE_MIN to NVML_CC_KEY_ROTATION_THRESHOLD_ATTACKER_ADVANTAGE_MAX. - * Default value is 60. - * - * @param pKeyRotationThrInfo Reference to the key rotation threshold data - * - * @return - * - \ref NVML_SUCCESS if \a key rotation threashold max attacker advantage has been set - * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized - * - \ref NVML_ERROR_INVALID_ARGUMENT if \a device is invalid or \a memory is NULL - * - \ref NVML_ERROR_INVALID_STATE if confidential compute GPU ready state is enabled - * - \ref NVML_ERROR_NOT_SUPPORTED if this query is not supported by the device - * - \ref NVML_ERROR_UNKNOWN on any unexpected error - */ -nvmlReturn_t DECLDIR nvmlSystemSetConfComputeKeyRotationThresholdInfo( - nvmlConfComputeSetKeyRotationThresholdInfo_t *pKeyRotationThrInfo); - /** * @} */ @@ -7476,6 +8666,99 @@ nvmlReturn_t DECLDIR nvmlDeviceSetAccountingMode(nvmlDevice_t device, nvmlEnable */ nvmlReturn_t DECLDIR nvmlDeviceClearAccountingPids(nvmlDevice_t device); +/** + * Set new power limit of this device. + * + * For Kepler &tm; or newer fully supported devices. + * Requires root/admin permissions. + * + * See \ref nvmlDeviceGetPowerManagementLimitConstraints to check the allowed ranges of values. + * + * See \ref nvmlPowerValue_v2_t for more information on the struct. + * + * \note Limit is not persistent across reboots or driver unloads. + * Enable persistent mode to prevent driver from unloading when no application is using the device. + * + * This API replaces nvmlDeviceSetPowerManagementLimit. It can be used as a drop-in replacement for the older version. + * + * @param device The identifier of the target device + * @param powerValue Power management limit in milliwatts to set + * + * @return + * - \ref NVML_SUCCESS if \a limit has been set + * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT if \a device is invalid or \a powerValue is NULL or contains invalid values + * - \ref NVML_ERROR_NOT_SUPPORTED if the device does not support this feature + * - \ref NVML_ERROR_GPU_IS_LOST if the target GPU has fallen off the bus or is otherwise inaccessible + * - \ref NVML_ERROR_UNKNOWN on any unexpected error + * + * @see NVML_FI_DEV_POWER_AVERAGE + * @see NVML_FI_DEV_POWER_INSTANT + * @see NVML_FI_DEV_POWER_MIN_LIMIT + * @see NVML_FI_DEV_POWER_MAX_LIMIT + * @see NVML_FI_DEV_POWER_CURRENT_LIMIT + */ +nvmlReturn_t DECLDIR nvmlDeviceSetPowerManagementLimit_v2(nvmlDevice_t device, nvmlPowerValue_v2_t *powerValue); + +/***************************************************************************************************/ +/** @defgroup NVML NVLink + * @{ + */ +/***************************************************************************************************/ + +#define NVML_NVLINK_BER_MANTISSA_SHIFT 8 +#define NVML_NVLINK_BER_MANTISSA_WIDTH 0xf + +#define NVML_NVLINK_BER_EXP_SHIFT 0 +#define NVML_NVLINK_BER_EXP_WIDTH 0xff + +/** + * Nvlink Error counter BER can be obtained using the below macros + * Ex - NVML_NVLINK_ERROR_COUNTER_BER_GET(var, BER_MANTISSA) + */ +#define NVML_NVLINK_ERROR_COUNTER_BER_GET(var, type) \ + (((var) >> NVML_NVLINK_##type##_SHIFT) & \ + (NVML_NVLINK_##type##_WIDTH)) \ + +/* + * NVML_FI_DEV_NVLINK_GET_STATE state enums + */ +#define NVML_NVLINK_STATE_INACTIVE 0x0 +#define NVML_NVLINK_STATE_ACTIVE 0x1 +#define NVML_NVLINK_STATE_SLEEP 0x2 + +#define NVML_NVLINK_TOTAL_SUPPORTED_BW_MODES 23 + +typedef struct +{ + unsigned int version; + unsigned char bwModes[NVML_NVLINK_TOTAL_SUPPORTED_BW_MODES]; + unsigned char totalBwModes; +} nvmlNvlinkSupportedBwModes_v1_t; +typedef nvmlNvlinkSupportedBwModes_v1_t nvmlNvlinkSupportedBwModes_t; +#define nvmlNvlinkSupportedBwModes_v1 NVML_STRUCT_VERSION(NvlinkSupportedBwModes, 1) + +typedef struct +{ + unsigned int version; + unsigned int bIsBest; + unsigned char bwMode; +} nvmlNvlinkGetBwMode_v1_t; +typedef nvmlNvlinkGetBwMode_v1_t nvmlNvlinkGetBwMode_t; +#define nvmlNvlinkGetBwMode_v1 NVML_STRUCT_VERSION(NvlinkGetBwMode, 1) + +typedef struct +{ + unsigned int version; + unsigned int bSetBest; + unsigned char bwMode; +} nvmlNvlinkSetBwMode_v1_t; +typedef nvmlNvlinkSetBwMode_v1_t nvmlNvlinkSetBwMode_t; +#define nvmlNvlinkSetBwMode_v1 NVML_STRUCT_VERSION(NvlinkSetBwMode, 1) + +/** @} */ // @defgroup NVML NVLink + + /** @} */ /***************************************************************************************************/ @@ -7512,7 +8795,7 @@ nvmlReturn_t DECLDIR nvmlDeviceGetNvLinkState(nvmlDevice_t device, unsigned int * * @param device The identifier of the target device * @param link Specifies the NvLink link to be queried - * @param version Requested NvLink version + * @param version Requested NvLink version from nvmlNvlinkVersion_t * * @return * - \ref NVML_SUCCESS if \a version has been set @@ -7698,48 +8981,144 @@ nvmlReturn_t DECLDIR nvmlDeviceGetNvLinkUtilizationCounter(nvmlDevice_t device, * - \ref NVML_ERROR_NOT_SUPPORTED if the device doesn't support this feature * - \ref NVML_ERROR_UNKNOWN on any unexpected error */ -nvmlReturn_t DECLDIR nvmlDeviceFreezeNvLinkUtilizationCounter (nvmlDevice_t device, unsigned int link, - unsigned int counter, nvmlEnableState_t freeze); +nvmlReturn_t DECLDIR nvmlDeviceFreezeNvLinkUtilizationCounter (nvmlDevice_t device, unsigned int link, + unsigned int counter, nvmlEnableState_t freeze); + +/** + * Deprecated: Resetting NVLINK utilization counters is no longer supported. + * + * Reset the NVLINK utilization counters + * Both the receive and transmit counters are operated on by this function + * + * For Pascal &tm; or newer fully supported devices. + * + * @param device The identifier of the target device + * @param link Specifies the NvLink link to be reset + * @param counter Specifies the counter that should be reset (0 or 1) + * + * @return + * - \ref NVML_SUCCESS if counters were successfully reset + * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT if \a device, \a link, or \a counter is invalid + * - \ref NVML_ERROR_NOT_SUPPORTED if the device doesn't support this feature + * - \ref NVML_ERROR_UNKNOWN on any unexpected error + */ +nvmlReturn_t DECLDIR nvmlDeviceResetNvLinkUtilizationCounter (nvmlDevice_t device, unsigned int link, unsigned int counter); + +/** +* Get the NVLink device type of the remote device connected over the given link. +* +* @param device The device handle of the target GPU +* @param link The NVLink link index on the target GPU +* @param pNvLinkDeviceType Pointer in which the output remote device type is returned +* +* @return +* - \ref NVML_SUCCESS if \a pNvLinkDeviceType has been set +* - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized +* - \ref NVML_ERROR_NOT_SUPPORTED if NVLink is not supported +* - \ref NVML_ERROR_INVALID_ARGUMENT if \a device or \a link is invalid, or +* \a pNvLinkDeviceType is NULL +* - \ref NVML_ERROR_GPU_IS_LOST if the target GPU has fallen off the bus or is +* otherwise inaccessible +* - \ref NVML_ERROR_UNKNOWN on any unexpected error +*/ +nvmlReturn_t DECLDIR nvmlDeviceGetNvLinkRemoteDeviceType(nvmlDevice_t device, unsigned int link, nvmlIntNvLinkDeviceType_t *pNvLinkDeviceType); + +/** + * Set NvLink Low Power Threshold for device. + * + * For Hopper &tm; or newer fully supported devices. + * + * @param device The identifier of the target device + * @param info Reference to \a nvmlNvLinkPowerThres_t struct + * input parameters + * + * @return + * - \ref NVML_SUCCESS if the \a Threshold is successfully set + * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT if \a device is invalid or \a Threshold is not within range + * - \ref NVML_ERROR_NOT_READY if an internal driver setting prevents the threshold from being used + * - \ref NVML_ERROR_NOT_SUPPORTED if this query is not supported by the device + * + **/ +nvmlReturn_t DECLDIR nvmlDeviceSetNvLinkDeviceLowPowerThreshold(nvmlDevice_t device, nvmlNvLinkPowerThres_t *info); + +/** + * Set the global nvlink bandwith mode + * + * @param nvlinkBwMode nvlink bandwidth mode + * @return + * - \ref NVML_SUCCESS on success + * - \ref NVML_ERROR_INVALID_ARGUMENT if an invalid argument is provided + * - \ref NVML_ERROR_IN_USE if P2P object exists + * - \ref NVML_ERROR_NOT_SUPPORTED if GPU is not Hopper or newer architecture. + * - \ref NVML_ERROR_NO_PERMISSION if not root user + */ +nvmlReturn_t DECLDIR nvmlSystemSetNvlinkBwMode(unsigned int nvlinkBwMode); + +/** + * Get the global nvlink bandwith mode + * + * @param nvlinkBwMode reference of nvlink bandwidth mode + * @return + * - \ref NVML_SUCCESS on success + * - \ref NVML_ERROR_INVALID_ARGUMENT if an invalid pointer is provided + * - \ref NVML_ERROR_NOT_SUPPORTED if GPU is not Hopper or newer architecture. + * - \ref NVML_ERROR_NO_PERMISSION if not root user + */ +nvmlReturn_t DECLDIR nvmlSystemGetNvlinkBwMode(unsigned int *nvlinkBwMode); /** - * Deprecated: Resetting NVLINK utilization counters is no longer supported. + * Get the supported NvLink Reduced Bandwidth Modes of the device * - * Reset the NVLINK utilization counters - * Both the receive and transmit counters are operated on by this function + * %BLACKWELL_OR_NEWER% * - * For Pascal &tm; or newer fully supported devices. + * @param device The identifier of the target device + * @param supportedBwMode Reference to \a nvmlNvlinkSupportedBwModes_t * - * @param device The identifier of the target device - * @param link Specifies the NvLink link to be reset - * @param counter Specifies the counter that should be reset (0 or 1) + * @return + * - \ref NVML_SUCCESS if the query was successful + * - \ref NVML_ERROR_INVALID_ARGUMENT if device is invalid or supportedBwMode is NULL + * - \ref NVML_ERROR_NOT_SUPPORTED if this feature is not supported by the device + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH if the version specified is not supported + **/ +nvmlReturn_t DECLDIR nvmlDeviceGetNvlinkSupportedBwModes(nvmlDevice_t device, + nvmlNvlinkSupportedBwModes_t *supportedBwMode); + +/** + * Get the NvLink Reduced Bandwidth Mode for the device + * + * %BLACKWELL_OR_NEWER% + * + * @param device The identifier of the target device + * @param getBwMode Reference to \a nvmlNvlinkGetBwMode_t * * @return - * - \ref NVML_SUCCESS if counters were successfully reset - * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized - * - \ref NVML_ERROR_INVALID_ARGUMENT if \a device, \a link, or \a counter is invalid - * - \ref NVML_ERROR_NOT_SUPPORTED if the device doesn't support this feature - * - \ref NVML_ERROR_UNKNOWN on any unexpected error - */ -nvmlReturn_t DECLDIR nvmlDeviceResetNvLinkUtilizationCounter (nvmlDevice_t device, unsigned int link, unsigned int counter); + * - \ref NVML_SUCCESS if the query was successful + * - \ref NVML_ERROR_INVALID_ARGUMENT if device is invalid or getBwMode is NULL + * - \ref NVML_ERROR_NOT_SUPPORTED if this feature is not supported by the device + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH if the version specified is not supported + **/ +nvmlReturn_t DECLDIR nvmlDeviceGetNvlinkBwMode(nvmlDevice_t device, + nvmlNvlinkGetBwMode_t *getBwMode); /** -* Get the NVLink device type of the remote device connected over the given link. -* -* @param device The device handle of the target GPU -* @param link The NVLink link index on the target GPU -* @param pNvLinkDeviceType Pointer in which the output remote device type is returned -* -* @return -* - \ref NVML_SUCCESS if \a pNvLinkDeviceType has been set -* - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized -* - \ref NVML_ERROR_NOT_SUPPORTED if NVLink is not supported -* - \ref NVML_ERROR_INVALID_ARGUMENT if \a device or \a link is invalid, or -* \a pNvLinkDeviceType is NULL -* - \ref NVML_ERROR_GPU_IS_LOST if the target GPU has fallen off the bus or is -* otherwise inaccessible -* - \ref NVML_ERROR_UNKNOWN on any unexpected error -*/ -nvmlReturn_t DECLDIR nvmlDeviceGetNvLinkRemoteDeviceType(nvmlDevice_t device, unsigned int link, nvmlIntNvLinkDeviceType_t *pNvLinkDeviceType); + * Set the NvLink Reduced Bandwidth Mode for the device + * + * %BLACKWELL_OR_NEWER% + * + * @param device The identifier of the target device + * @param setBwMode Reference to \a nvmlNvlinkSetBwMode_t + * + * @return + * - \ref NVML_SUCCESS if the Bandwidth mode was successfully set + * - \ref NVML_ERROR_INVALID_ARGUMENT if device is invalid or setBwMode is NULL + * - \ref NVML_ERROR_NO_PERMISSION if user does not have permission to change Bandwidth mode + * - \ref NVML_ERROR_NOT_SUPPORTED if this feature is not supported by the device + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH if the version specified is not supported + **/ +nvmlReturn_t DECLDIR nvmlDeviceSetNvlinkBwMode(nvmlDevice_t device, + nvmlNvlinkSetBwMode_t *setBwMode); /** @} */ @@ -7772,13 +9151,11 @@ nvmlReturn_t DECLDIR nvmlEventSetCreate(nvmlEventSet_t *set); * Starts recording of events on a specified devices and add the events to specified \ref nvmlEventSet_t * * For Fermi &tm; or newer fully supported devices. - * Ecc events are available only on ECC enabled devices (see \ref nvmlDeviceGetTotalEccErrors) + * ECC events are available only on ECC-enabled devices (see \ref nvmlDeviceGetTotalEccErrors) * Power capping events are available only on Power Management enabled devices (see \ref nvmlDeviceGetPowerManagementMode) * * For Linux only. * - * \b IMPORTANT: Operations on \a set are not thread safe - * * This call starts recording of events on specific device. * All events that occurred before this call are not recorded. * Checking if some event occurred can be done with \ref nvmlEventSetWait_v2 @@ -7838,11 +9215,11 @@ nvmlReturn_t DECLDIR nvmlDeviceGetSupportedEventTypes(nvmlDevice_t device, unsig * but not longer than specified timeout. This function in certain conditions can return before * specified timeout passes (e.g. when interrupt arrives) * - * On Windows, in case of xid error, the function returns the most recent xid error type seen by the system. - * If there are multiple xid errors generated before nvmlEventSetWait is invoked then the last seen xid error - * type is returned for all xid error events. + * On Windows, in case of Xid error, the function returns the most recent Xid error type seen by the system. + * If there are multiple Xid errors generated before nvmlEventSetWait is invoked then the last seen Xid error + * type is returned for all Xid error events. * - * On Linux, every xid error event would return the associated event data and other information if applicable. + * On Linux, every Xid error event would return the associated event data and other information if applicable. * * In MIG mode, if device handle is provided, the API reports all the events for the available instances, * only if the caller has appropriate privileges. In absence of required privileges, only the events which @@ -7883,6 +9260,98 @@ nvmlReturn_t DECLDIR nvmlEventSetWait_v2(nvmlEventSet_t set, nvmlEventData_t * d */ nvmlReturn_t DECLDIR nvmlEventSetFree(nvmlEventSet_t set); +/* + * Create an empty set of system events. + * Event set should be freed by \ref nvmlSystemEventSetFree + * + * For Fermi &tm; or newer fully supported devices. + * @param request Reference to nvmlSystemEventSetCreateRequest_t + * + * @return + * - \ref NVML_SUCCESS if the event has been set + * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT if request is NULL + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH for unsupported version + * - \ref NVML_ERROR_UNKNOWN on any unexpected error + * + * @see nvmlSystemEventSetFree + */ +nvmlReturn_t DECLDIR nvmlSystemEventSetCreate(nvmlSystemEventSetCreateRequest_t *request); + +/** + * Releases system event set + * + * For Fermi &tm; or newer fully supported devices. + * + * @param set Reference to nvmlSystemEventSetFreeRequest_t + * + * @return + * - \ref NVML_SUCCESS if the event has been set + * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT if request is NULL + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH for unsupported version + * - \ref NVML_ERROR_UNKNOWN on any unexpected error + * + * @see nvmlDeviceRegisterEvents + */ +nvmlReturn_t DECLDIR nvmlSystemEventSetFree(nvmlSystemEventSetFreeRequest_t *request); + +/** + * Starts recording of events on system and add the events to specified \ref nvmlSystemEventSet_t + * + * For Linux only. + * + * This call starts recording of events on specific device. + * All events that occurred before this call are not recorded. + * Checking if some event occurred can be done with \ref nvmlSystemEventSetWait + * + * If function reports NVML_ERROR_UNKNOWN, event set is in undefined state and should be freed. + * If function reports NVML_ERROR_NOT_SUPPORTED, event set can still be used. None of the requested eventTypes + * are registered in that case. + * + * @param request Reference to the struct nvmlSystemRegisterEventRequest_t + * + * @return + * - \ref NVML_SUCCESS if the event has been set + * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT if request is NULL + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH for unsupported version + * - \ref NVML_ERROR_UNKNOWN on any unexpected error + * + * @see nvmlSystemEventType + * @see nvmlSystemEventSetWait + * @see nvmlEventSetFree + */ +nvmlReturn_t DECLDIR nvmlSystemRegisterEvents(nvmlSystemRegisterEventRequest_t *request); + +/** + * Waits on system events and delivers events + * + * For Fermi &tm; or newer fully supported devices. + * + * If some events are ready to be delivered at the time of the call, function returns immediately. + * If there are no events ready to be delivered, function sleeps till event arrives + * but not longer than specified timeout. This function in certain conditions can return before + * specified timeout passes (e.g. when interrupt arrives) + * + * if the return request->numEvent equals to request->dataSize, there might be outstanding + * event, it is recommended to call nvmlSystemEventSetWait again to query all the events. + * + * @param request Reference in which to nvmlSystemEventSetWaitRequest_t + * + * @return + * - \ref NVML_SUCCESS if the event has been set + * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT if request is NULL + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH for unsupported version + * - \ref NVML_ERROR_TIMEOUT if no event notification after timeoutms + * - \ref NVML_ERROR_UNKNOWN on any unexpected error + * + * @see nvmlSystemEventType + * @see nvmlSystemRegisterEvents + */ +nvmlReturn_t DECLDIR nvmlSystemEventSetWait(nvmlSystemEventSetWaitRequest_t *request); + /** @} */ /***************************************************************************************************/ @@ -8044,13 +9513,6 @@ nvmlReturn_t DECLDIR nvmlDeviceClearFieldValues(nvmlDevice_t device, int valuesC /** @} */ -/***************************************************************************************************/ -/** @defgroup vGPU Enums, Constants and Structs - * @{ - */ -/** @} */ -/***************************************************************************************************/ - /***************************************************************************************************/ /** @defgroup nvmlVirtualGpuQueries vGPU APIs * This chapter describes operations that are associated with NVIDIA vGPU Software products. @@ -8125,12 +9587,12 @@ nvmlReturn_t DECLDIR nvmlDeviceSetVirtualizationMode(nvmlDevice_t device, nvmlGp * @param pHeterogeneousMode Pointer to the caller-provided structure of nvmlVgpuHeterogeneousMode_t * * @return - * - \ref NVML_SUCCESS Upon success - * - \ref NVML_ERROR_UNINITIALIZED If library has not been successfully initialized - * - \ref NVML_ERROR_INVALID_ARGUMENT If \a device is invalid or \a pHeterogeneousMode is NULL - * - \ref NVML_ERROR_NOT_SUPPORTED If \a device doesn't support this feature - * - \ref NVML_ERROR_VERSION_MISMATCH If the version of \a pHeterogeneousMode is invalid - * - \ref NVML_ERROR_UNKNOWN On any unexpected error + * - \ref NVML_SUCCESS Upon success + * - \ref NVML_ERROR_UNINITIALIZED If library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a device is invalid or \a pHeterogeneousMode is NULL + * - \ref NVML_ERROR_NOT_SUPPORTED If MIG is enabled or \a device doesn't support this feature + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the version of \a pHeterogeneousMode is invalid + * - \ref NVML_ERROR_UNKNOWN On any unexpected error */ nvmlReturn_t DECLDIR nvmlDeviceGetVgpuHeterogeneousMode(nvmlDevice_t device, nvmlVgpuHeterogeneousMode_t *pHeterogeneousMode); @@ -8142,6 +9604,8 @@ nvmlReturn_t DECLDIR nvmlDeviceGetVgpuHeterogeneousMode(nvmlDevice_t device, nvm * API would return an appropriate error code upon unsuccessful activation. For example, the heterogeneous mode * set will fail with error \ref NVML_ERROR_IN_USE if any vGPU instance is active on the device. The caller of this API * is expected to shutdown the vGPU VMs and retry setting the \a mode. + * On KVM platform, setting heterogeneous mode is allowed, if no MDEV device is created on the device, else will fail + * with same error \ref NVML_ERROR_IN_USE. * On successful return, the function updates the vGPU heterogeneous mode with the user provided \a pHeterogeneousMode->mode. * \a pHeterogeneousMode->version is the version number of the structure nvmlVgpuHeterogeneousMode_t, the caller should * set the correct version number to set the vGPU heterogeneous mode. @@ -8150,14 +9614,14 @@ nvmlReturn_t DECLDIR nvmlDeviceGetVgpuHeterogeneousMode(nvmlDevice_t device, nvm * @param pHeterogeneousMode Pointer to the caller-provided structure of nvmlVgpuHeterogeneousMode_t * * @return - * - \ref NVML_SUCCESS Upon success - * - \ref NVML_ERROR_UNINITIALIZED If library has not been successfully initialized - * - \ref NVML_ERROR_INVALID_ARGUMENT If \a device or \a pHeterogeneousMode is NULL or \a pHeterogeneousMode->mode is invalid - * - \ref NVML_ERROR_IN_USE If the \a device is in use - * - \ref NVML_ERROR_NO_PERMISSION If user doesn't have permission to perform the operation - * - \ref NVML_ERROR_NOT_SUPPORTED If MIG is enabled or \a device doesn't support this feature - * - \ref NVML_ERROR_VERSION_MISMATCH If the version of \a pHeterogeneousMode is invalid - * - \ref NVML_ERROR_UNKNOWN On any unexpected error + * - \ref NVML_SUCCESS Upon success + * - \ref NVML_ERROR_UNINITIALIZED If library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a device or \a pHeterogeneousMode is NULL or \a pHeterogeneousMode->mode is invalid + * - \ref NVML_ERROR_IN_USE If the \a device is in use + * - \ref NVML_ERROR_NO_PERMISSION If user doesn't have permission to perform the operation + * - \ref NVML_ERROR_NOT_SUPPORTED If MIG is enabled or \a device doesn't support this feature + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the version of \a pHeterogeneousMode is invalid + * - \ref NVML_ERROR_UNKNOWN On any unexpected error */ nvmlReturn_t DECLDIR nvmlDeviceSetVgpuHeterogeneousMode(nvmlDevice_t device, const nvmlVgpuHeterogeneousMode_t *pHeterogeneousMode); @@ -8173,35 +9637,41 @@ nvmlReturn_t DECLDIR nvmlDeviceSetVgpuHeterogeneousMode(nvmlDevice_t device, con * @param pPlacement Pointer to vGPU placement ID structure \a nvmlVgpuPlacementId_t * * @return - * - \ref NVML_SUCCESS If information is successfully retrieved - * - \ref NVML_ERROR_NOT_FOUND If \a vgpuInstance does not match a valid active vGPU instance - * - \ref NVML_ERROR_INVALID_ARGUMENT If \a vgpuInstance is invalid or \a pPlacement is NULL - * - \ref NVML_ERROR_VERSION_MISMATCH If the version of \a pPlacement is invalid - * - \ref NVML_ERROR_UNKNOWN On any unexpected error + * - \ref NVML_SUCCESS If information is successfully retrieved + * - \ref NVML_ERROR_NOT_FOUND If \a vgpuInstance does not match a valid active vGPU instance + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a vgpuInstance is invalid or \a pPlacement is NULL + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the version of \a pPlacement is invalid + * - \ref NVML_ERROR_UNKNOWN On any unexpected error */ nvmlReturn_t DECLDIR nvmlVgpuInstanceGetPlacementId(nvmlVgpuInstance_t vgpuInstance, nvmlVgpuPlacementId_t *pPlacement); /** * Query the supported vGPU placement ID of the vGPU type. * - * An array of supported vGPU placement IDs for the vGPU type ID indicated by \a vgpuTypeId is returned in the - * caller-supplied buffer of \a pPlacementList->placementIds. Memory needed for the placementIds array should be - * allocated based on maximum instances of a vGPU type which can be queried via \ref nvmlVgpuTypeGetMaxInstances(). + * The function returns an array of supported vGPU placement IDs for the specified vGPU type ID in the buffer provided + * by the caller at \a pPlacementList->placementIds. The required memory for the placementIds array must be allocated + * based on the maximum number of vGPU type instances, which is retrievable through \ref nvmlVgpuTypeGetMaxInstances(). + * If the provided count by the caller is insufficient, the function will return NVML_ERROR_INSUFFICIENT_SIZE along with + * the number of required entries in \a pPlacementList->count. The caller should then reallocate a buffer with the size + * of pPlacementList->count * sizeof(pPlacementList->placementIds) and invoke the function again. * - * This function will return supported placement IDs even if GPU is not in vGPU heterogeneous mode. + * To obtain a list of homogeneous placement IDs, the caller needs to set \a pPlacementList->mode to NVML_VGPU_PGPU_HOMOGENEOUS_MODE. + * For heterogeneous placement IDs, \a pPlacementList->mode should be set to NVML_VGPU_PGPU_HETEROGENEOUS_MODE. + * By default, a list of heterogeneous placement IDs is returned. * * @param device Identifier of the target device * @param vgpuTypeId Handle to vGPU type. The vGPU type ID * @param pPlacementList Pointer to the vGPU placement structure \a nvmlVgpuPlacementList_t * * @return - * - \ref NVML_SUCCESS Upon success - * - \ref NVML_ERROR_UNINITIALIZED If library has not been successfully initialized - * - \ref NVML_ERROR_INVALID_ARGUMENT If \a device or \a vgpuTypeId is invalid or \a pPlacementList is NULL - * - \ref NVML_ERROR_NOT_SUPPORTED If \a device or \a vgpuTypeId isn't supported - * - \ref NVML_ERROR_NO_PERMISSION If user doesn't have permission to perform the operation - * - \ref NVML_ERROR_VERSION_MISMATCH If the version of \a pPlacementList is invalid - * - \ref NVML_ERROR_UNKNOWN On any unexpected error + * - \ref NVML_SUCCESS Upon success + * - \ref NVML_ERROR_UNINITIALIZED If library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a device or \a vgpuTypeId is invalid or \a pPlacementList is NULL + * - \ref NVML_ERROR_NOT_SUPPORTED If \a device or \a vgpuTypeId isn't supported + * - \ref NVML_ERROR_NO_PERMISSION If user doesn't have permission to perform the operation + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the version of \a pPlacementList is invalid + * - \ref NVML_ERROR_INSUFFICIENT_SIZE If the buffer is small, element count is returned in \a pPlacementList->count + * - \ref NVML_ERROR_UNKNOWN On any unexpected error */ nvmlReturn_t DECLDIR nvmlDeviceGetVgpuTypeSupportedPlacements(nvmlDevice_t device, nvmlVgpuTypeId_t vgpuTypeId, nvmlVgpuPlacementList_t *pPlacementList); @@ -8211,23 +9681,25 @@ nvmlReturn_t DECLDIR nvmlDeviceGetVgpuTypeSupportedPlacements(nvmlDevice_t devic * An array of creatable vGPU placement IDs for the vGPU type ID indicated by \a vgpuTypeId is returned in the * caller-supplied buffer of \a pPlacementList->placementIds. Memory needed for the placementIds array should be * allocated based on maximum instances of a vGPU type which can be queried via \ref nvmlVgpuTypeGetMaxInstances(). + * If the provided count by the caller is insufficient, the function will return NVML_ERROR_INSUFFICIENT_SIZE along with + * the number of required entries in \a pPlacementList->count. The caller should then reallocate a buffer with the size + * of pPlacementList->count * sizeof(pPlacementList->placementIds) and invoke the function again. + * * The creatable vGPU placement IDs may differ over time, as there may be restrictions on what type of vGPU the * vGPU instance is running. * - * The function will return \ref NVML_ERROR_NOT_SUPPORTED if the \a device is not in vGPU heterogeneous mode. - * * @param device The identifier of the target device * @param vgpuTypeId Handle to vGPU type. The vGPU type ID * @param pPlacementList Pointer to the list of vGPU placement structure \a nvmlVgpuPlacementList_t * * @return - * - \ref NVML_SUCCESS Upon success - * - \ref NVML_ERROR_UNINITIALIZED If library has not been successfully initialized - * - \ref NVML_ERROR_INVALID_ARGUMENT If \a device or \a vgpuTypeId is invalid or \a pPlacementList is NULL - * - \ref NVML_ERROR_NOT_SUPPORTED If \a device or \a vgpuTypeId isn't supported - * - \ref NVML_ERROR_NO_PERMISSION If user doesn't have permission to perform the operation - * - \ref NVML_ERROR_VERSION_MISMATCH If the version of \a pPlacementList is invalid - * - \ref NVML_ERROR_UNKNOWN On any unexpected error + * - \ref NVML_SUCCESS Upon success + * - \ref NVML_ERROR_UNINITIALIZED If library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a device or \a vgpuTypeId is invalid or \a pPlacementList is NULL + * - \ref NVML_ERROR_NOT_SUPPORTED If MIG is enabled or \a device or \a vgpuTypeId isn't supported + * - \ref NVML_ERROR_NO_PERMISSION If user doesn't have permission to perform the operation + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the version of \a pPlacementList is invalid + * - \ref NVML_ERROR_UNKNOWN On any unexpected error */ nvmlReturn_t DECLDIR nvmlDeviceGetVgpuTypeCreatablePlacements(nvmlDevice_t device, nvmlVgpuTypeId_t vgpuTypeId, nvmlVgpuPlacementList_t *pPlacementList); @@ -8257,6 +9729,27 @@ nvmlReturn_t DECLDIR nvmlVgpuTypeGetGspHeapSize(nvmlVgpuTypeId_t vgpuTypeId, uns */ nvmlReturn_t DECLDIR nvmlVgpuTypeGetFbReservation(nvmlVgpuTypeId_t vgpuTypeId, unsigned long long *fbReservation); +/** + * Retrieve the currently used runtime state size of the vGPU instance + * + * This size represents the maximum in-memory data size utilized by a vGPU instance during standard operation. + * This measurement is exclusive of frame buffer (FB) data size assigned to the vGPU instance. + * + * For Maxwell &tm; or newer fully supported devices. + * + * @param vgpuInstance Identifier of the target vGPU instance + * @param pState Pointer to the vGPU runtime state's structure \a nvmlVgpuRuntimeState_t + * + * @return + * - \ref NVML_SUCCESS If information is successfully retrieved + * - \ref NVML_ERROR_UNINITIALIZED If the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a vgpuInstance is invalid, or \a pState is NULL + * - \ref NVML_ERROR_NOT_FOUND If \a vgpuInstance does not match a valid active vGPU instance on the system + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the version of \a pState is invalid + * - \ref NVML_ERROR_UNKNOWN On any unexpected error + */ +nvmlReturn_t DECLDIR nvmlVgpuInstanceGetRuntimeStateSize(nvmlVgpuInstance_t vgpuInstance, nvmlVgpuRuntimeState_t *pState); + /** * Set the desirable vGPU capability of a device * @@ -8598,6 +10091,22 @@ nvmlReturn_t DECLDIR nvmlVgpuTypeGetMaxInstances(nvmlDevice_t device, nvmlVgpuTy */ nvmlReturn_t DECLDIR nvmlVgpuTypeGetMaxInstancesPerVm(nvmlVgpuTypeId_t vgpuTypeId, unsigned int *vgpuInstanceCountPerVm); +/** + * Retrieve the BAR1 info for given vGPU type. + * + * For Maxwell &tm; or newer fully supported devices. + * + * @param vgpuTypeId Handle to vGPU type + * @param bar1Info Pointer to the vGPU type BAR1 information structure \a nvmlVgpuTypeBar1Info_t + * + * @return + * - \ref NVML_SUCCESS successful completion + * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT if \a vgpuTypeId is invalid, or \a bar1Info is NULL + * - \ref NVML_ERROR_UNKNOWN on any unexpected error + */ +nvmlReturn_t DECLDIR nvmlVgpuTypeGetBAR1Info(nvmlVgpuTypeId_t vgpuTypeId, nvmlVgpuTypeBar1Info_t *bar1Info); + /** * Retrieve the active vGPU instances on a device. * @@ -8970,48 +10479,279 @@ nvmlReturn_t DECLDIR nvmlVgpuInstanceGetGpuInstanceId(nvmlVgpuInstance_t vgpuIns nvmlReturn_t DECLDIR nvmlVgpuInstanceGetGpuPciId(nvmlVgpuInstance_t vgpuInstance, char *vgpuPciId, unsigned int *length); /** -* Retrieve the requested capability for a given vGPU type. Refer to the \a nvmlVgpuCapability_t structure -* for the specific capabilities that can be queried. The return value in \a capResult should be treated as -* a boolean, with a non-zero value indicating that the capability is supported. -* -* For Maxwell &tm; or newer fully supported devices. -* -* @param vgpuTypeId Handle to vGPU type -* @param capability Specifies the \a nvmlVgpuCapability_t to be queried -* @param capResult A boolean for the queried capability indicating that feature is supported -* -* @return -* - \ref NVML_SUCCESS successful completion -* - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized -* - \ref NVML_ERROR_INVALID_ARGUMENT if \a vgpuTypeId is invalid, or \a capability is invalid, or \a capResult is NULL -* - \ref NVML_ERROR_UNKNOWN on any unexpected error -*/ -nvmlReturn_t DECLDIR nvmlVgpuTypeGetCapabilities(nvmlVgpuTypeId_t vgpuTypeId, nvmlVgpuCapability_t capability, unsigned int *capResult); +* Retrieve the requested capability for a given vGPU type. Refer to the \a nvmlVgpuCapability_t structure +* for the specific capabilities that can be queried. The return value in \a capResult should be treated as +* a boolean, with a non-zero value indicating that the capability is supported. +* +* For Maxwell &tm; or newer fully supported devices. +* +* @param vgpuTypeId Handle to vGPU type +* @param capability Specifies the \a nvmlVgpuCapability_t to be queried +* @param capResult A boolean for the queried capability indicating that feature is supported +* +* @return +* - \ref NVML_SUCCESS successful completion +* - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized +* - \ref NVML_ERROR_INVALID_ARGUMENT if \a vgpuTypeId is invalid, or \a capability is invalid, or \a capResult is NULL +* - \ref NVML_ERROR_UNKNOWN on any unexpected error +*/ +nvmlReturn_t DECLDIR nvmlVgpuTypeGetCapabilities(nvmlVgpuTypeId_t vgpuTypeId, nvmlVgpuCapability_t capability, unsigned int *capResult); + +/** + * Retrieve the MDEV UUID of a vGPU instance. + * + * The MDEV UUID is a globally unique identifier of the mdev device assigned to the VM, and is returned as a 5-part hexadecimal string, + * not exceeding 80 characters in length (including the NULL terminator). + * MDEV UUID is displayed only on KVM platform. + * See \ref nvmlConstants::NVML_DEVICE_UUID_BUFFER_SIZE. + * + * For Maxwell &tm; or newer fully supported devices. + * + * @param vgpuInstance Identifier of the target vGPU instance + * @param mdevUuid Pointer to caller-supplied buffer to hold MDEV UUID + * @param size Size of buffer in bytes + * + * @return + * - \ref NVML_SUCCESS successful completion + * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized + * - \ref NVML_ERROR_NOT_SUPPORTED on any hypervisor other than KVM + * - \ref NVML_ERROR_INVALID_ARGUMENT if \a vgpuInstance is 0, or \a mdevUuid is NULL + * - \ref NVML_ERROR_NOT_FOUND if \a vgpuInstance does not match a valid active vGPU instance on the system + * - \ref NVML_ERROR_INSUFFICIENT_SIZE if \a size is too small + * - \ref NVML_ERROR_UNKNOWN on any unexpected error + */ +nvmlReturn_t DECLDIR nvmlVgpuInstanceGetMdevUUID(nvmlVgpuInstance_t vgpuInstance, char *mdevUuid, unsigned int size); + +/** + * Query the currently creatable vGPU types on a specific GPU Instance. + * + * The function returns an array of vGPU types that can be created for a specified GPU instance. This array is stored + * in a caller-supplied buffer, with the buffer's element count passed through \a pVgpus->vgpuCount. The number of + * vGPU types written to the buffer is indicated by \a pVgpus->vgpuCount. If the buffer is too small to hold the vGPU + * type array, the function returns NVML_ERROR_INSUFFICIENT_SIZE and updates \a pVgpus->vgpuCount with the required + * element count. + * + * To determine the creatable vGPUs for a GPU Instance, invoke this function with \a pVgpus->vgpuCount set to 0 and + * \a pVgpus->vgpuTypeIds as NULL. This will result in NVML_ERROR_INSUFFICIENT_SIZE being returned, along with the + * count value in \a pVgpus->vgpuCount. + * + * The creatable vGPU types may differ over time, as there may be restrictions on what type of vGPUs can concurrently + * run on the device. + * + * @param gpuInstance The GPU instance handle + * @param pVgpus Pointer to the caller-provided structure of nvmlVgpuTypeIdInfo_t + * + * @return + * - \ref NVML_SUCCESS Upon success + * - \ref NVML_ERROR_UNINITIALIZED If library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a gpuInstance is NULL or invalid, or \a pVgpus is NULL + * or GPU Instance Id is invalid + * - \ref NVML_ERROR_NOT_SUPPORTED If not on a vGPU host or an unsupported GPU + * - \ref NVML_ERROR_INSUFFICIENT_SIZE If \a pVgpus->vgpuTypeIds buffer is small + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the version of \a pVgpus is invalid + * - \ref NVML_ERROR_UNKNOWN On any unexpected error + */ +nvmlReturn_t DECLDIR nvmlGpuInstanceGetCreatableVgpus(nvmlGpuInstance_t gpuInstance, nvmlVgpuTypeIdInfo_t *pVgpus); + +/** + * Retrieve the maximum number of vGPU instances per GPU instance for given vGPU type + * + * @param pMaxInstance Pointer to the caller-provided structure of nvmlVgpuTypeMaxInstance_t + * + * @return + * - \ref NVML_SUCCESS Upon success + * - \ref NVML_ERROR_UNINITIALIZED If library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a pMaxInstance is NULL or \a pMaxInstance->vgpuTypeId is invalid + * - \ref NVML_ERROR_NOT_SUPPORTED If not on a vGPU host or an unsupported GPU or non-MIG vGPU type + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the version of \a pMaxInstance is invalid + * - \ref NVML_ERROR_UNKNOWN On any unexpected error + */ +nvmlReturn_t DECLDIR nvmlVgpuTypeGetMaxInstancesPerGpuInstance(nvmlVgpuTypeMaxInstance_t *pMaxInstance); + +/** + * Retrieve the active vGPU instances within a GPU instance. + * + * An array of active vGPU instances is returned in the caller-supplied buffer pointed + * at by \a pVgpuInstanceInfo->vgpuInstances. The array element count is passed in + * \a pVgpuInstanceInfo->vgpuCount, and \a pVgpuInstanceInfo->vgpuCount is used to return + * the number of vGPU instances written to the buffer. + * + * If the supplied buffer is not large enough to accommodate the vGPU instance array, + * the function returns NVML_ERROR_INSUFFICIENT_SIZE, with the element count of + * nvmlVgpuInstance_t array required in \a pVgpuInstanceInfo->vgpuCount. To query the + * number of active vGPU instances, call this function with pVgpuInstanceInfo->vgpuCount = 0 + * and pVgpuInstanceInfo->vgpuTypeIds = NULL. The code will return NVML_ERROR_INSUFFICIENT_SIZE, + * or NVML_SUCCESS if no vGPU Types are active. + * + * @param gpuInstance The GPU instance handle + * @param pVgpuInstanceInfo Pointer to the vGPU instance information structure \a nvmlActiveVgpuInstanceInfo_t + * + * @return + * - \ref NVML_SUCCESS Successful completion + * - \ref NVML_ERROR_UNINITIALIZED If the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a gpuInstance is NULL or invalid, or \a pVgpuInstanceInfo is NULL + * or GPU Instance Id is invalid + * - \ref NVML_ERROR_INSUFFICIENT_SIZE \a pVgpuInstanceInfo->vgpuTypeIds buffer is too small, + * array element count is returned in \a pVgpuInstanceInfo->vgpuCount + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the version of \a pVgpuInstanceInfo is invalid + * - \ref NVML_ERROR_NOT_SUPPORTED If not on a vGPU host or an unsupported GPU + * - \ref NVML_ERROR_UNKNOWN On any unexpected error + */ +nvmlReturn_t DECLDIR nvmlGpuInstanceGetActiveVgpus(nvmlGpuInstance_t gpuInstance, nvmlActiveVgpuInstanceInfo_t *pVgpuInstanceInfo); + +/** + * Set vGPU scheduler state for the given GPU instance + * + * %GB20X_OR_NEWER% + * + * Scheduler state and params will be allowed to set only when no VM is running within the GPU instance. + * In \a nvmlVgpuSchedulerState_t, IFF enableARRMode is enabled then provide the avgFactor and frequency + * as input. If enableARRMode is disabled then provide timeslice as input. + * + * The scheduler state change won't persist across module load/unload and GPU Instance creation/deletion. + * + * @param gpuInstance The GPU instance handle + * @param pScheduler Pointer to the caller-provided structure of nvmlVgpuSchedulerState_t + * + * @return + * - \ref NVML_SUCCESS Upon success + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a gpuInstance is NULL or invalid, or \a pScheduler is NULL + * or GPU Instance Id is invalid + * - \ref NVML_ERROR_RESET_REQUIRED If setting the state failed with fatal error, reboot is required + * - \ref NVML_ERROR_NOT_SUPPORTED If not on a vGPU host or an unsupported GPU or if any vGPU instance exists + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the version of \a pScheduler is invalid + * - \ref NVML_ERROR_UNKNOWN On any unexpected error + */ +nvmlReturn_t DECLDIR nvmlGpuInstanceSetVgpuSchedulerState(nvmlGpuInstance_t gpuInstance, nvmlVgpuSchedulerState_t *pScheduler); + +/** + * Returns the vGPU scheduler state for the given GPU instance. + * The information returned in \a nvmlVgpuSchedulerStateInfo_t is not relevant if the BEST EFFORT policy is set. + * + * %GB20X_OR_NEWER% + * + * @param gpuInstance The GPU instance handle + * @param pSchedulerStateInfo Reference in which \a pSchedulerStateInfo is returned + * + * @return + * - \ref NVML_SUCCESS vGPU scheduler state is successfully obtained + * - \ref NVML_ERROR_UNINITIALIZED If library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a gpuInstance is NULL or invalid, or \a pSchedulerStateInfo is NULL + * or GPU Instance Id is invalid + * - \ref NVML_ERROR_NOT_SUPPORTED If not on a vGPU host or an unsupported GPU + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the version of \a pSchedulerStateInfo is invalid + * - \ref NVML_ERROR_UNKNOWN on any unexpected error + */ +nvmlReturn_t DECLDIR nvmlGpuInstanceGetVgpuSchedulerState(nvmlGpuInstance_t gpuInstance, nvmlVgpuSchedulerStateInfo_t *pSchedulerStateInfo); + +/** + * Returns the vGPU scheduler logs for the given GPU instance. + * \a pSchedulerLogInfo points to a caller-allocated structure to contain the logs. The number of elements returned will + * never exceed \a NVML_SCHEDULER_SW_MAX_LOG_ENTRIES. + * + * To get the entire logs, call the function atleast 5 times a second. + * + * %GB20X_OR_NEWER% + * + * @param gpuInstance The GPU instance handle + * @param pSchedulerLogInfo Reference in which \a pSchedulerLogInfo is written + * + * @return + * - \ref NVML_SUCCESS vGPU scheduler logs are successfully obtained + * - \ref NVML_ERROR_UNINITIALIZED If library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a gpuInstance is NULL or invalid, or \a pSchedulerLogInfo is NULL + * or GPU Instance Id is invalid + * - \ref NVML_ERROR_NOT_SUPPORTED If not on a vGPU host or an unsupported GPU + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the version of \a pSchedulerLogInfo is invalid + * - \ref NVML_ERROR_UNKNOWN on any unexpected error + */ +nvmlReturn_t DECLDIR nvmlGpuInstanceGetVgpuSchedulerLog(nvmlGpuInstance_t gpuInstance, nvmlVgpuSchedulerLogInfo_t *pSchedulerLogInfo); + +/** + * Query the creatable vGPU placement ID of the vGPU type within a GPU instance. + * + * %GB20X_OR_NEWER% + * + * An array of creatable vGPU placement IDs for the vGPU type ID indicated by \a pCreatablePlacementInfo->vgpuTypeId + * is returned in the caller-supplied buffer of \a pCreatablePlacementInfo->placementIds. Memory needed for the + * placementIds array should be allocated based on maximum instances of a vGPU type per GPU instance which can be + * queried via \ref nvmlVgpuTypeGetMaxInstancesPerGpuInstance(). + * If the provided count by the caller is insufficient, the function will return NVML_ERROR_INSUFFICIENT_SIZE along with + * the number of required entries in \a pCreatablePlacementInfo->count. The caller should then reallocate a buffer with the size + * of pCreatablePlacementInfo->count * sizeof(pCreatablePlacementInfo->placementIds) and invoke the function again. + * The creatable vGPU placement IDs may differ over time, as there may be restrictions on what type of vGPU the + * vGPU instance is running. + * + * @param gpuInstance The GPU instance handle + * @param pCreatablePlacementInfo Pointer to the list of vGPU creatable placement structure \a nvmlVgpuCreatablePlacementInfo_t + * + * @return + * - \ref NVML_SUCCESS Successful completion + * - \ref NVML_ERROR_UNINITIALIZED If the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a gpuInstance is NULL or invalid, or \a pCreatablePlacementInfo is NULL + * or GPU Instance Id is invalid + * - \ref NVML_ERROR_INSUFFICIENT_SIZE If the buffer is small, element count is returned in \a pCreatablePlacementInfo->count + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the version of \a pCreatablePlacementInfo is invalid + * - \ref NVML_ERROR_NOT_SUPPORTED If not on a vGPU host or an unsupported GPU or vGPU heterogeneous mode is not enabled + * - \ref NVML_ERROR_UNKNOWN On any unexpected error + */ +nvmlReturn_t DECLDIR nvmlGpuInstanceGetVgpuTypeCreatablePlacements(nvmlGpuInstance_t gpuInstance, nvmlVgpuCreatablePlacementInfo_t *pCreatablePlacementInfo); + +/** + * Get the vGPU heterogeneous mode for the GPU instance. + * + * When in heterogeneous mode, a vGPU can concurrently host timesliced vGPUs with differing framebuffer sizes. + * + * On successful return, the function returns \a pHeterogeneousMode->mode with the current vGPU heterogeneous mode. + * \a pHeterogeneousMode->version is the version number of the structure nvmlVgpuHeterogeneousMode_t, the caller should + * set the correct version number to retrieve the vGPU heterogeneous mode. + * \a pHeterogeneousMode->mode can either be \ref NVML_FEATURE_ENABLED or \ref NVML_FEATURE_DISABLED. + * + * %GB20X_OR_NEWER% + * + * @param gpuInstance The GPU instance handle + * @param pHeterogeneousMode Pointer to the caller-provided structure of nvmlVgpuHeterogeneousMode_t + * + * @return + * - \ref NVML_SUCCESS Upon success + * - \ref NVML_ERROR_UNINITIALIZED If library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a gpuInstance is NULL or invalid, or \a pHeterogeneousMode is NULL + * or GPU Instance Id is invalid + * - \ref NVML_ERROR_NOT_SUPPORTED If not on a vGPU host or an unsupported GPU or not in MIG mode + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the version of \a pHeterogeneousMode is invalid + * - \ref NVML_ERROR_UNKNOWN On any unexpected error + */ +nvmlReturn_t DECLDIR nvmlGpuInstanceGetVgpuHeterogeneousMode(nvmlGpuInstance_t gpuInstance, nvmlVgpuHeterogeneousMode_t *pHeterogeneousMode); /** - * Retrieve the MDEV UUID of a vGPU instance. + * Enable or disable vGPU heterogeneous mode for the GPU instance. * - * The MDEV UUID is a globally unique identifier of the mdev device assigned to the VM, and is returned as a 5-part hexadecimal string, - * not exceeding 80 characters in length (including the NULL terminator). - * MDEV UUID is displayed only on KVM platform. - * See \ref nvmlConstants::NVML_DEVICE_UUID_BUFFER_SIZE. + * When in heterogeneous mode, a vGPU can concurrently host timesliced vGPUs with differing framebuffer sizes. * - * For Maxwell &tm; or newer fully supported devices. + * API would return an appropriate error code upon unsuccessful activation. For example, the heterogeneous mode + * set will fail with error \ref NVML_ERROR_IN_USE if any vGPU instance is active within the GPU instance. + * The caller of this API is expected to shutdown the vGPU VMs and retry setting the \a mode. + * On successful return, the function updates the vGPU heterogeneous mode with the user provided \a pHeterogeneousMode->mode. + * \a pHeterogeneousMode->version is the version number of the structure nvmlVgpuHeterogeneousMode_t, the caller should + * set the correct version number to set the vGPU heterogeneous mode. * - * @param vgpuInstance Identifier of the target vGPU instance - * @param mdevUuid Pointer to caller-supplied buffer to hold MDEV UUID - * @param size Size of buffer in bytes + * %GB20X_OR_NEWER% + * + * @param gpuInstance The GPU instance handle + * @param pHeterogeneousMode Pointer to the caller-provided structure of nvmlVgpuHeterogeneousMode_t * * @return - * - \ref NVML_SUCCESS successful completion - * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized - * - \ref NVML_ERROR_NOT_SUPPORTED on any hypervisor other than KVM - * - \ref NVML_ERROR_INVALID_ARGUMENT if \a vgpuInstance is 0, or \a mdevUuid is NULL - * - \ref NVML_ERROR_NOT_FOUND if \a vgpuInstance does not match a valid active vGPU instance on the system - * - \ref NVML_ERROR_INSUFFICIENT_SIZE if \a size is too small - * - \ref NVML_ERROR_UNKNOWN on any unexpected error + * - \ref NVML_SUCCESS Upon success + * - \ref NVML_ERROR_UNINITIALIZED If library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a gpuInstance is NULL or invalid, + * or \a pHeterogeneousMode is NULL or \a pHeterogeneousMode->mode is invalid + * or GPU Instance Id is invalid + * - \ref NVML_ERROR_IN_USE If the \a gpuInstance is in use + * - \ref NVML_ERROR_NOT_SUPPORTED If not on a vGPU host or an unsupported GPU + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the version of \a pHeterogeneousMode is invalid + * - \ref NVML_ERROR_UNKNOWN On any unexpected error */ -nvmlReturn_t DECLDIR nvmlVgpuInstanceGetMdevUUID(nvmlVgpuInstance_t vgpuInstance, char *mdevUuid, unsigned int size); +nvmlReturn_t DECLDIR nvmlGpuInstanceSetVgpuHeterogeneousMode(nvmlGpuInstance_t gpuInstance, const nvmlVgpuHeterogeneousMode_t *pHeterogeneousMode); /** @} */ @@ -9166,8 +10906,8 @@ nvmlReturn_t DECLDIR nvmlDeviceGetVgpuMetadata(nvmlDevice_t device, nvmlVgpuPgpu * * @return * - \ref NVML_SUCCESS vGPU metadata structure was successfully returned - * - \ref NVML_ERROR_INVALID_ARGUMENT if \a vgpuMetadata or \a pgpuMetadata or \a bufferSize are NULL - * - \ref NVML_ERROR_UNKNOWN on any unexpected error + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a vgpuMetadata or \a pgpuMetadata or \a bufferSize are NULL + * - \ref NVML_ERROR_UNKNOWN On any unexpected error */ nvmlReturn_t DECLDIR nvmlGetVgpuCompatibility(nvmlVgpuMetadata_t *vgpuMetadata, nvmlVgpuPgpuMetadata_t *pgpuMetadata, nvmlVgpuPgpuCompatibility_t *compatibilityInfo); @@ -9185,9 +10925,9 @@ nvmlReturn_t DECLDIR nvmlGetVgpuCompatibility(nvmlVgpuMetadata_t *vgpuMetadata, * @return * - \ref NVML_SUCCESS GPU metadata structure was successfully returned * - \ref NVML_ERROR_INSUFFICIENT_SIZE \a pgpuMetadata buffer is too small, required size is returned in \a bufferSize - * - \ref NVML_ERROR_INVALID_ARGUMENT if \a bufferSize is NULL or \a device is invalid; if \a pgpuMetadata is NULL and the value of \a bufferSize is not 0. - * - \ref NVML_ERROR_NOT_SUPPORTED if vGPU is not supported by the system - * - \ref NVML_ERROR_UNKNOWN on any unexpected error + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a bufferSize is NULL or \a device is invalid; if \a pgpuMetadata is NULL and the value of \a bufferSize is not 0. + * - \ref NVML_ERROR_NOT_SUPPORTED If vGPU is not supported by the system + * - \ref NVML_ERROR_UNKNOWN On any unexpected error */ nvmlReturn_t DECLDIR nvmlDeviceGetPgpuMetadataString(nvmlDevice_t device, char *pgpuMetadata, unsigned int *bufferSize); @@ -9205,9 +10945,9 @@ nvmlReturn_t DECLDIR nvmlDeviceGetPgpuMetadataString(nvmlDevice_t device, char * * * @return * - \ref NVML_SUCCESS vGPU scheduler logs were successfully obtained - * - \ref NVML_ERROR_INVALID_ARGUMENT if \a pSchedulerLog is NULL or \a device is invalid - * - \ref NVML_ERROR_NOT_SUPPORTED The API is not supported in current state or \a device not in vGPU host mode - * - \ref NVML_ERROR_UNKNOWN on any unexpected error + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a pSchedulerLog is NULL or \a device is invalid + * - \ref NVML_ERROR_NOT_SUPPORTED If MIG is enabled or \a device not in vGPU host mode + * - \ref NVML_ERROR_UNKNOWN On any unexpected error */ nvmlReturn_t DECLDIR nvmlDeviceGetVgpuSchedulerLog(nvmlDevice_t device, nvmlVgpuSchedulerLog_t *pSchedulerLog); @@ -9222,9 +10962,9 @@ nvmlReturn_t DECLDIR nvmlDeviceGetVgpuSchedulerLog(nvmlDevice_t device, nvmlVgpu * * @return * - \ref NVML_SUCCESS vGPU scheduler state is successfully obtained - * - \ref NVML_ERROR_INVALID_ARGUMENT if \a pSchedulerState is NULL or \a device is invalid - * - \ref NVML_ERROR_NOT_SUPPORTED The API is not supported in current state or \a device not in vGPU host mode - * - \ref NVML_ERROR_UNKNOWN on any unexpected error + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a pSchedulerState is NULL or \a device is invalid + * - \ref NVML_ERROR_NOT_SUPPORTED If MIG is enabled or \a device not in vGPU host mode + * - \ref NVML_ERROR_UNKNOWN On any unexpected error */ nvmlReturn_t DECLDIR nvmlDeviceGetVgpuSchedulerState(nvmlDevice_t device, nvmlVgpuSchedulerGetState_t *pSchedulerState); @@ -9245,9 +10985,9 @@ nvmlReturn_t DECLDIR nvmlDeviceGetVgpuSchedulerState(nvmlDevice_t device, nvmlVg * * @return * - \ref NVML_SUCCESS vGPU scheduler capabilities were successfully obtained - * - \ref NVML_ERROR_INVALID_ARGUMENT if \a pCapabilities is NULL or \a device is invalid + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a pCapabilities is NULL or \a device is invalid * - \ref NVML_ERROR_NOT_SUPPORTED The API is not supported in current state or \a device not in vGPU host mode - * - \ref NVML_ERROR_UNKNOWN on any unexpected error + * - \ref NVML_ERROR_UNKNOWN On any unexpected error */ nvmlReturn_t DECLDIR nvmlDeviceGetVgpuSchedulerCapabilities(nvmlDevice_t device, nvmlVgpuSchedulerCapabilities_t *pCapabilities); @@ -9267,12 +11007,12 @@ nvmlReturn_t DECLDIR nvmlDeviceGetVgpuSchedulerCapabilities(nvmlDevice_t device, * * @return * - \ref NVML_SUCCESS vGPU scheduler state has been successfully set - * - \ref NVML_ERROR_INVALID_ARGUMENT if \a pSchedulerState is NULL or \a device is invalid - * - \ref NVML_ERROR_RESET_REQUIRED if setting \a pSchedulerState failed with fatal error, + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a pSchedulerState is NULL or \a device is invalid + * - \ref NVML_ERROR_RESET_REQUIRED If setting \a pSchedulerState failed with fatal error, * reboot is required to overcome from this error. - * - \ref NVML_ERROR_NOT_SUPPORTED The API is not supported in current state or \a device not in vGPU host mode + * - \ref NVML_ERROR_NOT_SUPPORTED If MIG is enabled or \a device not in vGPU host mode * or if any vGPU instance currently exists on the \a device - * - \ref NVML_ERROR_UNKNOWN on any unexpected error + * - \ref NVML_ERROR_UNKNOWN On any unexpected error */ nvmlReturn_t DECLDIR nvmlDeviceSetVgpuSchedulerState(nvmlDevice_t device, nvmlVgpuSchedulerSetState_t *pSchedulerState); @@ -9424,17 +11164,17 @@ nvmlReturn_t DECLDIR nvmlDeviceGetVgpuUtilization(nvmlDevice_t device, unsigned * @param vgpuUtilInfo Pointer to the caller-provided structure of nvmlVgpuInstancesUtilizationInfo_t * @return - * - \ref NVML_SUCCESS if utilization samples are successfully retrieved - * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized - * - \ref NVML_ERROR_INVALID_ARGUMENT if \a device is invalid, \a vgpuUtilInfo is NULL, or \a vgpuUtilInfo->vgpuInstanceCount is 0 - * - \ref NVML_ERROR_NOT_SUPPORTED if vGPU is not supported by the device - * - \ref NVML_ERROR_GPU_IS_LOST if the target GPU has fallen off the bus or is otherwise inaccessible - * - \ref NVML_ERROR_VERSION_MISMATCH if the version of \a vgpuUtilInfo is invalid - * - \ref NVML_ERROR_INSUFFICIENT_SIZE if \a vgpuUtilInfo->vgpuUtilArray is NULL, or the buffer size of vgpuUtilInfo->vgpuInstanceCount is too small. - * The caller should check the current vGPU instance count from the returned vgpuUtilInfo->vgpuInstanceCount, and call - * the function again with a buffer of size vgpuUtilInfo->vgpuInstanceCount * sizeof(nvmlVgpuInstanceUtilizationInfo_t) - * - \ref NVML_ERROR_NOT_FOUND if sample entries are not found - * - \ref NVML_ERROR_UNKNOWN on any unexpected error + * - \ref NVML_SUCCESS If utilization samples are successfully retrieved + * - \ref NVML_ERROR_UNINITIALIZED If the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a device is invalid, \a vgpuUtilInfo is NULL, or \a vgpuUtilInfo->vgpuInstanceCount is 0 + * - \ref NVML_ERROR_NOT_SUPPORTED If vGPU is not supported by the device + * - \ref NVML_ERROR_GPU_IS_LOST If the target GPU has fallen off the bus or is otherwise inaccessible + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the version of \a vgpuUtilInfo is invalid + * - \ref NVML_ERROR_INSUFFICIENT_SIZE If \a vgpuUtilInfo->vgpuUtilArray is NULL, or the buffer size of vgpuUtilInfo->vgpuInstanceCount is too small. + * The caller should check the current vGPU instance count from the returned vgpuUtilInfo->vgpuInstanceCount, and call + * the function again with a buffer of size vgpuUtilInfo->vgpuInstanceCount * sizeof(nvmlVgpuInstanceUtilizationInfo_t) + * - \ref NVML_ERROR_NOT_FOUND If sample entries are not found + * - \ref NVML_ERROR_UNKNOWN On any unexpected error */ nvmlReturn_t DECLDIR nvmlDeviceGetVgpuInstancesUtilizationInfo(nvmlDevice_t device, nvmlVgpuInstancesUtilizationInfo_t *vgpuUtilInfo); @@ -9515,19 +11255,19 @@ nvmlReturn_t DECLDIR nvmlDeviceGetVgpuProcessUtilization(nvmlDevice_t device, un * @param vgpuProcUtilInfo Pointer to the caller-provided structure of nvmlVgpuProcessesUtilizationInfo_t * @return - * - \ref NVML_SUCCESS if utilization samples are successfully retrieved - * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized - * - \ref NVML_ERROR_INVALID_ARGUMENT if \a device is invalid, or \a vgpuProcUtilInfo is null - * - \ref NVML_ERROR_VERSION_MISMATCH if the version of \a vgpuProcUtilInfo is invalid - * - \ref NVML_ERROR_INSUFFICIENT_SIZE if \a vgpuProcUtilInfo->vgpuProcUtilArray is null, or supplied \a vgpuProcUtilInfo->vgpuProcessCount - * is too small to return samples for all processes on vGPU instances currently executing on the device. - * The caller should check the current processes count from the returned \a vgpuProcUtilInfo->vgpuProcessCount, - * and call the function again with a buffer of size - * vgpuProcUtilInfo->vgpuProcessCount * sizeof(nvmlVgpuProcessUtilizationSample_t) - * - \ref NVML_ERROR_NOT_SUPPORTED if vGPU is not supported by the device - * - \ref NVML_ERROR_GPU_IS_LOST if the target GPU has fallen off the bus or is otherwise inaccessible - * - \ref NVML_ERROR_NOT_FOUND if sample entries are not found - * - \ref NVML_ERROR_UNKNOWN on any unexpected error + * - \ref NVML_SUCCESS If utilization samples are successfully retrieved + * - \ref NVML_ERROR_UNINITIALIZED If the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a device is invalid, or \a vgpuProcUtilInfo is null + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the version of \a vgpuProcUtilInfo is invalid + * - \ref NVML_ERROR_INSUFFICIENT_SIZE If \a vgpuProcUtilInfo->vgpuProcUtilArray is null, or supplied \a vgpuProcUtilInfo->vgpuProcessCount + * is too small to return samples for all processes on vGPU instances currently executing on the device. + * The caller should check the current processes count from the returned \a vgpuProcUtilInfo->vgpuProcessCount, + * and call the function again with a buffer of size + * vgpuProcUtilInfo->vgpuProcessCount * sizeof(nvmlVgpuProcessUtilizationSample_t) + * - \ref NVML_ERROR_NOT_SUPPORTED If vGPU is not supported by the device + * - \ref NVML_ERROR_GPU_IS_LOST If the target GPU has fallen off the bus or is otherwise inaccessible + * - \ref NVML_ERROR_NOT_FOUND If sample entries are not found + * - \ref NVML_ERROR_UNKNOWN On any unexpected error */ nvmlReturn_t DECLDIR nvmlDeviceGetVgpuProcessesUtilizationInfo(nvmlDevice_t device, nvmlVgpuProcessesUtilizationInfo_t *vgpuProcUtilInfo); @@ -9737,10 +11477,31 @@ nvmlReturn_t DECLDIR nvmlGetExcludedDeviceInfoByIndex(unsigned int index, nvmlEx #define NVML_GPU_INSTANCE_PROFILE_7_SLICE 0x4 #define NVML_GPU_INSTANCE_PROFILE_8_SLICE 0x5 #define NVML_GPU_INSTANCE_PROFILE_6_SLICE 0x6 +// 1_SLICE profile with at least one (if supported at all) of Decoder, Encoder, JPEG, OFA engines. #define NVML_GPU_INSTANCE_PROFILE_1_SLICE_REV1 0x7 +// 2_SLICE profile with at least one (if supported at all) of Decoder, Encoder, JPEG, OFA engines. #define NVML_GPU_INSTANCE_PROFILE_2_SLICE_REV1 0x8 +// 1_SLICE profile with twice the amount of memory resources. #define NVML_GPU_INSTANCE_PROFILE_1_SLICE_REV2 0x9 -#define NVML_GPU_INSTANCE_PROFILE_COUNT 0xA +// 1_SLICE gfx capable profile +#define NVML_GPU_INSTANCE_PROFILE_1_SLICE_GFX 0x0A +// 2_SLICE gfx capable profile +#define NVML_GPU_INSTANCE_PROFILE_2_SLICE_GFX 0x0B +// 4_SLICE gfx capable profile +#define NVML_GPU_INSTANCE_PROFILE_4_SLICE_GFX 0x0C +// 1_SLICE profile with none of Decode, Encoder, JPEG, OFA engines. +#define NVML_GPU_INSTANCE_PROFILE_1_SLICE_NO_ME 0x0D +// 2_SLICE profile with none of Decode, Encoder, JPEG, OFA engines. +#define NVML_GPU_INSTANCE_PROFILE_2_SLICE_NO_ME 0x0E +// 1_SLICE profile with all of GPU Decode, Encoder, JPEG, OFA engines. +// Allocation of instance of this profile prevents allocation of +// all but _NO_ME profiles. +#define NVML_GPU_INSTANCE_PROFILE_1_SLICE_ALL_ME 0x0F +// 2_SLICE profile with all of GPU Decode, Encoder, JPEG, OFA engines. +// Allocation of instance of this profile prevents allocation of +// all but _NO_ME profiles. +#define NVML_GPU_INSTANCE_PROFILE_2_SLICE_ALL_ME 0x10 +#define NVML_GPU_INSTANCE_PROFILE_COUNT 0x11 /** * MIG GPU instance profile capability. @@ -9748,7 +11509,9 @@ nvmlReturn_t DECLDIR nvmlGetExcludedDeviceInfoByIndex(unsigned int index, nvmlEx * Bit field values representing MIG profile capabilities * \ref nvmlGpuInstanceProfileInfo_v3_t.capabilities */ -#define NVML_GPU_INTSTANCE_PROFILE_CAPS_P2P 0x1 +#define NVML_GPU_INSTANCE_PROFILE_CAPS_P2P 0x1 +#define NVML_GPU_INTSTANCE_PROFILE_CAPS_P2P 0x1 //!< Deprecated, do not use +#define NVML_GPU_INSTANCE_PROFILE_CAPS_GFX 0x2 /** * MIG compute instance profile capability. @@ -9756,7 +11519,7 @@ nvmlReturn_t DECLDIR nvmlGetExcludedDeviceInfoByIndex(unsigned int index, nvmlEx * Bit field values representing MIG profile capabilities * \ref nvmlComputeInstanceProfileInfo_v3_t.capabilities */ -/* No capabilities for compute profiles currently exposed */ +#define NVML_COMPUTE_INSTANCE_PROFILE_CAPS_GFX 0x1 typedef struct nvmlGpuInstancePlacement_st { @@ -9848,11 +11611,6 @@ typedef struct nvmlGpuInstanceInfo_st nvmlGpuInstancePlacement_t placement; //!< Placement for this instance } nvmlGpuInstanceInfo_t; -typedef struct -{ - struct nvmlGpuInstance_st* handle; -} nvmlGpuInstance_t; - /** * Compute instance profiles. * @@ -10025,6 +11783,9 @@ nvmlReturn_t DECLDIR nvmlDeviceGetMigMode(nvmlDevice_t device, unsigned int *cur * * Information provided by this API is immutable throughout the lifetime of a MIG mode. * + * @note This API can be used to enumerate all MIG profiles supported by NVML in a forward compatible + * way by invoking it on \a profile values starting from 0, until the API returns \ref NVML_ERROR_INVALID_ARGUMENT. + * * For Ampere &tm; or newer fully supported devices. * Supported on Linux only. * @@ -10264,6 +12025,9 @@ nvmlReturn_t DECLDIR nvmlGpuInstanceGetInfo(nvmlGpuInstance_t gpuInstance, nvmlG * * Information provided by this API is immutable throughout the lifetime of a MIG mode. * + * @note This API can be used to enumerate all MIG profiles supported by NVML in a forward compatible + * way by invoking it on \a profile values starting from 0, until the API returns \ref NVML_ERROR_INVALID_ARGUMENT. + * * For Ampere &tm; or newer fully supported devices. * Supported on Linux only. * @@ -10657,76 +12421,188 @@ nvmlReturn_t DECLDIR nvmlDeviceGetDeviceHandleFromMigDeviceHandle(nvmlDevice_t m */ typedef enum { - NVML_GPM_METRIC_GRAPHICS_UTIL = 1, //!< Percentage of time any compute/graphics app was active on the GPU. 0.0 - 100.0 - NVML_GPM_METRIC_SM_UTIL = 2, //!< Percentage of SMs that were busy. 0.0 - 100.0 - NVML_GPM_METRIC_SM_OCCUPANCY = 3, //!< Percentage of warps that were active vs theoretical maximum. 0.0 - 100.0 - NVML_GPM_METRIC_INTEGER_UTIL = 4, //!< Percentage of time the GPU's SMs were doing integer operations. 0.0 - 100.0 - NVML_GPM_METRIC_ANY_TENSOR_UTIL = 5, //!< Percentage of time the GPU's SMs were doing ANY tensor operations. 0.0 - 100.0 - NVML_GPM_METRIC_DFMA_TENSOR_UTIL = 6, //!< Percentage of time the GPU's SMs were doing DFMA tensor operations. 0.0 - 100.0 - NVML_GPM_METRIC_HMMA_TENSOR_UTIL = 7, //!< Percentage of time the GPU's SMs were doing HMMA tensor operations. 0.0 - 100.0 - NVML_GPM_METRIC_IMMA_TENSOR_UTIL = 9, //!< Percentage of time the GPU's SMs were doing IMMA tensor operations. 0.0 - 100.0 - NVML_GPM_METRIC_DRAM_BW_UTIL = 10, //!< Percentage of DRAM bw used vs theoretical maximum. 0.0 - 100.0 */ - NVML_GPM_METRIC_FP64_UTIL = 11, //!< Percentage of time the GPU's SMs were doing non-tensor FP64 math. 0.0 - 100.0 - NVML_GPM_METRIC_FP32_UTIL = 12, //!< Percentage of time the GPU's SMs were doing non-tensor FP32 math. 0.0 - 100.0 - NVML_GPM_METRIC_FP16_UTIL = 13, //!< Percentage of time the GPU's SMs were doing non-tensor FP16 math. 0.0 - 100.0 - NVML_GPM_METRIC_PCIE_TX_PER_SEC = 20, //!< PCIe traffic from this GPU in MiB/sec - NVML_GPM_METRIC_PCIE_RX_PER_SEC = 21, //!< PCIe traffic to this GPU in MiB/sec - NVML_GPM_METRIC_NVDEC_0_UTIL = 30, //!< Percent utilization of NVDEC 0. 0.0 - 100.0 - NVML_GPM_METRIC_NVDEC_1_UTIL = 31, //!< Percent utilization of NVDEC 1. 0.0 - 100.0 - NVML_GPM_METRIC_NVDEC_2_UTIL = 32, //!< Percent utilization of NVDEC 2. 0.0 - 100.0 - NVML_GPM_METRIC_NVDEC_3_UTIL = 33, //!< Percent utilization of NVDEC 3. 0.0 - 100.0 - NVML_GPM_METRIC_NVDEC_4_UTIL = 34, //!< Percent utilization of NVDEC 4. 0.0 - 100.0 - NVML_GPM_METRIC_NVDEC_5_UTIL = 35, //!< Percent utilization of NVDEC 5. 0.0 - 100.0 - NVML_GPM_METRIC_NVDEC_6_UTIL = 36, //!< Percent utilization of NVDEC 6. 0.0 - 100.0 - NVML_GPM_METRIC_NVDEC_7_UTIL = 37, //!< Percent utilization of NVDEC 7. 0.0 - 100.0 - NVML_GPM_METRIC_NVJPG_0_UTIL = 40, //!< Percent utilization of NVJPG 0. 0.0 - 100.0 - NVML_GPM_METRIC_NVJPG_1_UTIL = 41, //!< Percent utilization of NVJPG 1. 0.0 - 100.0 - NVML_GPM_METRIC_NVJPG_2_UTIL = 42, //!< Percent utilization of NVJPG 2. 0.0 - 100.0 - NVML_GPM_METRIC_NVJPG_3_UTIL = 43, //!< Percent utilization of NVJPG 3. 0.0 - 100.0 - NVML_GPM_METRIC_NVJPG_4_UTIL = 44, //!< Percent utilization of NVJPG 4. 0.0 - 100.0 - NVML_GPM_METRIC_NVJPG_5_UTIL = 45, //!< Percent utilization of NVJPG 5. 0.0 - 100.0 - NVML_GPM_METRIC_NVJPG_6_UTIL = 46, //!< Percent utilization of NVJPG 6. 0.0 - 100.0 - NVML_GPM_METRIC_NVJPG_7_UTIL = 47, //!< Percent utilization of NVJPG 7. 0.0 - 100.0 - NVML_GPM_METRIC_NVOFA_0_UTIL = 50, //!< Percent utilization of NVOFA 0. 0.0 - 100.0 - NVML_GPM_METRIC_NVLINK_TOTAL_RX_PER_SEC = 60, //!< NvLink read bandwidth for all links in MiB/sec - NVML_GPM_METRIC_NVLINK_TOTAL_TX_PER_SEC = 61, //!< NvLink write bandwidth for all links in MiB/sec - NVML_GPM_METRIC_NVLINK_L0_RX_PER_SEC = 62, //!< NvLink read bandwidth for link 0 in MiB/sec - NVML_GPM_METRIC_NVLINK_L0_TX_PER_SEC = 63, //!< NvLink write bandwidth for link 0 in MiB/sec - NVML_GPM_METRIC_NVLINK_L1_RX_PER_SEC = 64, //!< NvLink read bandwidth for link 1 in MiB/sec - NVML_GPM_METRIC_NVLINK_L1_TX_PER_SEC = 65, //!< NvLink write bandwidth for link 1 in MiB/sec - NVML_GPM_METRIC_NVLINK_L2_RX_PER_SEC = 66, //!< NvLink read bandwidth for link 2 in MiB/sec - NVML_GPM_METRIC_NVLINK_L2_TX_PER_SEC = 67, //!< NvLink write bandwidth for link 2 in MiB/sec - NVML_GPM_METRIC_NVLINK_L3_RX_PER_SEC = 68, //!< NvLink read bandwidth for link 3 in MiB/sec - NVML_GPM_METRIC_NVLINK_L3_TX_PER_SEC = 69, //!< NvLink write bandwidth for link 3 in MiB/sec - NVML_GPM_METRIC_NVLINK_L4_RX_PER_SEC = 70, //!< NvLink read bandwidth for link 4 in MiB/sec - NVML_GPM_METRIC_NVLINK_L4_TX_PER_SEC = 71, //!< NvLink write bandwidth for link 4 in MiB/sec - NVML_GPM_METRIC_NVLINK_L5_RX_PER_SEC = 72, //!< NvLink read bandwidth for link 5 in MiB/sec - NVML_GPM_METRIC_NVLINK_L5_TX_PER_SEC = 73, //!< NvLink write bandwidth for link 5 in MiB/sec - NVML_GPM_METRIC_NVLINK_L6_RX_PER_SEC = 74, //!< NvLink read bandwidth for link 6 in MiB/sec - NVML_GPM_METRIC_NVLINK_L6_TX_PER_SEC = 75, //!< NvLink write bandwidth for link 6 in MiB/sec - NVML_GPM_METRIC_NVLINK_L7_RX_PER_SEC = 76, //!< NvLink read bandwidth for link 7 in MiB/sec - NVML_GPM_METRIC_NVLINK_L7_TX_PER_SEC = 77, //!< NvLink write bandwidth for link 7 in MiB/sec - NVML_GPM_METRIC_NVLINK_L8_RX_PER_SEC = 78, //!< NvLink read bandwidth for link 8 in MiB/sec - NVML_GPM_METRIC_NVLINK_L8_TX_PER_SEC = 79, //!< NvLink write bandwidth for link 8 in MiB/sec - NVML_GPM_METRIC_NVLINK_L9_RX_PER_SEC = 80, //!< NvLink read bandwidth for link 9 in MiB/sec - NVML_GPM_METRIC_NVLINK_L9_TX_PER_SEC = 81, //!< NvLink write bandwidth for link 9 in MiB/sec - NVML_GPM_METRIC_NVLINK_L10_RX_PER_SEC = 82, //!< NvLink read bandwidth for link 10 in MiB/sec - NVML_GPM_METRIC_NVLINK_L10_TX_PER_SEC = 83, //!< NvLink write bandwidth for link 10 in MiB/sec - NVML_GPM_METRIC_NVLINK_L11_RX_PER_SEC = 84, //!< NvLink read bandwidth for link 11 in MiB/sec - NVML_GPM_METRIC_NVLINK_L11_TX_PER_SEC = 85, //!< NvLink write bandwidth for link 11 in MiB/sec - NVML_GPM_METRIC_NVLINK_L12_RX_PER_SEC = 86, //!< NvLink read bandwidth for link 12 in MiB/sec - NVML_GPM_METRIC_NVLINK_L12_TX_PER_SEC = 87, //!< NvLink write bandwidth for link 12 in MiB/sec - NVML_GPM_METRIC_NVLINK_L13_RX_PER_SEC = 88, //!< NvLink read bandwidth for link 13 in MiB/sec - NVML_GPM_METRIC_NVLINK_L13_TX_PER_SEC = 89, //!< NvLink write bandwidth for link 13 in MiB/sec - NVML_GPM_METRIC_NVLINK_L14_RX_PER_SEC = 90, //!< NvLink read bandwidth for link 14 in MiB/sec - NVML_GPM_METRIC_NVLINK_L14_TX_PER_SEC = 91, //!< NvLink write bandwidth for link 14 in MiB/sec - NVML_GPM_METRIC_NVLINK_L15_RX_PER_SEC = 92, //!< NvLink read bandwidth for link 15 in MiB/sec - NVML_GPM_METRIC_NVLINK_L15_TX_PER_SEC = 93, //!< NvLink write bandwidth for link 15 in MiB/sec - NVML_GPM_METRIC_NVLINK_L16_RX_PER_SEC = 94, //!< NvLink read bandwidth for link 16 in MiB/sec - NVML_GPM_METRIC_NVLINK_L16_TX_PER_SEC = 95, //!< NvLink write bandwidth for link 16 in MiB/sec - NVML_GPM_METRIC_NVLINK_L17_RX_PER_SEC = 96, //!< NvLink read bandwidth for link 17 in MiB/sec - NVML_GPM_METRIC_NVLINK_L17_TX_PER_SEC = 97, //!< NvLink write bandwidth for link 17 in MiB/sec - NVML_GPM_METRIC_MAX = 98, //!< Maximum value above +1. Note that changing this should also change NVML_GPM_METRICS_GET_VERSION due to struct size change + NVML_GPM_METRIC_GRAPHICS_UTIL = 1, //!< Percentage of time any compute/graphics app was active on the GPU. 0.0 - 100.0 + NVML_GPM_METRIC_SM_UTIL = 2, //!< Percentage of SMs that were busy. 0.0 - 100.0 + NVML_GPM_METRIC_SM_OCCUPANCY = 3, //!< Percentage of warps that were active vs theoretical maximum. 0.0 - 100.0 + NVML_GPM_METRIC_INTEGER_UTIL = 4, //!< Percentage of time the GPU's SMs were doing integer operations. 0.0 - 100.0 + NVML_GPM_METRIC_ANY_TENSOR_UTIL = 5, //!< Percentage of time the GPU's SMs were doing ANY tensor operations. 0.0 - 100.0 + NVML_GPM_METRIC_DFMA_TENSOR_UTIL = 6, //!< Percentage of time the GPU's SMs were doing DFMA tensor operations. 0.0 - 100.0 + NVML_GPM_METRIC_HMMA_TENSOR_UTIL = 7, //!< Percentage of time the GPU's SMs were doing HMMA tensor operations. 0.0 - 100.0 + NVML_GPM_METRIC_IMMA_TENSOR_UTIL = 9, //!< Percentage of time the GPU's SMs were doing IMMA tensor operations. 0.0 - 100.0 + NVML_GPM_METRIC_DRAM_BW_UTIL = 10, //!< Percentage of DRAM bw used vs theoretical maximum. 0.0 - 100.0 */ + NVML_GPM_METRIC_FP64_UTIL = 11, //!< Percentage of time the GPU's SMs were doing non-tensor FP64 math. 0.0 - 100.0 + NVML_GPM_METRIC_FP32_UTIL = 12, //!< Percentage of time the GPU's SMs were doing non-tensor FP32 math. 0.0 - 100.0 + NVML_GPM_METRIC_FP16_UTIL = 13, //!< Percentage of time the GPU's SMs were doing non-tensor FP16 math. 0.0 - 100.0 + NVML_GPM_METRIC_PCIE_TX_PER_SEC = 20, //!< PCIe traffic from this GPU in MiB/sec + NVML_GPM_METRIC_PCIE_RX_PER_SEC = 21, //!< PCIe traffic to this GPU in MiB/sec + NVML_GPM_METRIC_NVDEC_0_UTIL = 30, //!< Percent utilization of NVDEC 0. 0.0 - 100.0 + NVML_GPM_METRIC_NVDEC_1_UTIL = 31, //!< Percent utilization of NVDEC 1. 0.0 - 100.0 + NVML_GPM_METRIC_NVDEC_2_UTIL = 32, //!< Percent utilization of NVDEC 2. 0.0 - 100.0 + NVML_GPM_METRIC_NVDEC_3_UTIL = 33, //!< Percent utilization of NVDEC 3. 0.0 - 100.0 + NVML_GPM_METRIC_NVDEC_4_UTIL = 34, //!< Percent utilization of NVDEC 4. 0.0 - 100.0 + NVML_GPM_METRIC_NVDEC_5_UTIL = 35, //!< Percent utilization of NVDEC 5. 0.0 - 100.0 + NVML_GPM_METRIC_NVDEC_6_UTIL = 36, //!< Percent utilization of NVDEC 6. 0.0 - 100.0 + NVML_GPM_METRIC_NVDEC_7_UTIL = 37, //!< Percent utilization of NVDEC 7. 0.0 - 100.0 + NVML_GPM_METRIC_NVJPG_0_UTIL = 40, //!< Percent utilization of NVJPG 0. 0.0 - 100.0 + NVML_GPM_METRIC_NVJPG_1_UTIL = 41, //!< Percent utilization of NVJPG 1. 0.0 - 100.0 + NVML_GPM_METRIC_NVJPG_2_UTIL = 42, //!< Percent utilization of NVJPG 2. 0.0 - 100.0 + NVML_GPM_METRIC_NVJPG_3_UTIL = 43, //!< Percent utilization of NVJPG 3. 0.0 - 100.0 + NVML_GPM_METRIC_NVJPG_4_UTIL = 44, //!< Percent utilization of NVJPG 4. 0.0 - 100.0 + NVML_GPM_METRIC_NVJPG_5_UTIL = 45, //!< Percent utilization of NVJPG 5. 0.0 - 100.0 + NVML_GPM_METRIC_NVJPG_6_UTIL = 46, //!< Percent utilization of NVJPG 6. 0.0 - 100.0 + NVML_GPM_METRIC_NVJPG_7_UTIL = 47, //!< Percent utilization of NVJPG 7. 0.0 - 100.0 + NVML_GPM_METRIC_NVOFA_0_UTIL = 50, //!< Percent utilization of NVOFA 0. 0.0 - 100.0 + NVML_GPM_METRIC_NVOFA_1_UTIL = 51, //!< Percent utilization of NVOFA 1. 0.0 - 100.0 + NVML_GPM_METRIC_NVLINK_TOTAL_RX_PER_SEC = 60, //!< NvLink read bandwidth for all links in MiB/sec + NVML_GPM_METRIC_NVLINK_TOTAL_TX_PER_SEC = 61, //!< NvLink write bandwidth for all links in MiB/sec + NVML_GPM_METRIC_NVLINK_L0_RX_PER_SEC = 62, //!< NvLink read bandwidth for link 0 in MiB/sec + NVML_GPM_METRIC_NVLINK_L0_TX_PER_SEC = 63, //!< NvLink write bandwidth for link 0 in MiB/sec + NVML_GPM_METRIC_NVLINK_L1_RX_PER_SEC = 64, //!< NvLink read bandwidth for link 1 in MiB/sec + NVML_GPM_METRIC_NVLINK_L1_TX_PER_SEC = 65, //!< NvLink write bandwidth for link 1 in MiB/sec + NVML_GPM_METRIC_NVLINK_L2_RX_PER_SEC = 66, //!< NvLink read bandwidth for link 2 in MiB/sec + NVML_GPM_METRIC_NVLINK_L2_TX_PER_SEC = 67, //!< NvLink write bandwidth for link 2 in MiB/sec + NVML_GPM_METRIC_NVLINK_L3_RX_PER_SEC = 68, //!< NvLink read bandwidth for link 3 in MiB/sec + NVML_GPM_METRIC_NVLINK_L3_TX_PER_SEC = 69, //!< NvLink write bandwidth for link 3 in MiB/sec + NVML_GPM_METRIC_NVLINK_L4_RX_PER_SEC = 70, //!< NvLink read bandwidth for link 4 in MiB/sec + NVML_GPM_METRIC_NVLINK_L4_TX_PER_SEC = 71, //!< NvLink write bandwidth for link 4 in MiB/sec + NVML_GPM_METRIC_NVLINK_L5_RX_PER_SEC = 72, //!< NvLink read bandwidth for link 5 in MiB/sec + NVML_GPM_METRIC_NVLINK_L5_TX_PER_SEC = 73, //!< NvLink write bandwidth for link 5 in MiB/sec + NVML_GPM_METRIC_NVLINK_L6_RX_PER_SEC = 74, //!< NvLink read bandwidth for link 6 in MiB/sec + NVML_GPM_METRIC_NVLINK_L6_TX_PER_SEC = 75, //!< NvLink write bandwidth for link 6 in MiB/sec + NVML_GPM_METRIC_NVLINK_L7_RX_PER_SEC = 76, //!< NvLink read bandwidth for link 7 in MiB/sec + NVML_GPM_METRIC_NVLINK_L7_TX_PER_SEC = 77, //!< NvLink write bandwidth for link 7 in MiB/sec + NVML_GPM_METRIC_NVLINK_L8_RX_PER_SEC = 78, //!< NvLink read bandwidth for link 8 in MiB/sec + NVML_GPM_METRIC_NVLINK_L8_TX_PER_SEC = 79, //!< NvLink write bandwidth for link 8 in MiB/sec + NVML_GPM_METRIC_NVLINK_L9_RX_PER_SEC = 80, //!< NvLink read bandwidth for link 9 in MiB/sec + NVML_GPM_METRIC_NVLINK_L9_TX_PER_SEC = 81, //!< NvLink write bandwidth for link 9 in MiB/sec + NVML_GPM_METRIC_NVLINK_L10_RX_PER_SEC = 82, //!< NvLink read bandwidth for link 10 in MiB/sec + NVML_GPM_METRIC_NVLINK_L10_TX_PER_SEC = 83, //!< NvLink write bandwidth for link 10 in MiB/sec + NVML_GPM_METRIC_NVLINK_L11_RX_PER_SEC = 84, //!< NvLink read bandwidth for link 11 in MiB/sec + NVML_GPM_METRIC_NVLINK_L11_TX_PER_SEC = 85, //!< NvLink write bandwidth for link 11 in MiB/sec + NVML_GPM_METRIC_NVLINK_L12_RX_PER_SEC = 86, //!< NvLink read bandwidth for link 12 in MiB/sec + NVML_GPM_METRIC_NVLINK_L12_TX_PER_SEC = 87, //!< NvLink write bandwidth for link 12 in MiB/sec + NVML_GPM_METRIC_NVLINK_L13_RX_PER_SEC = 88, //!< NvLink read bandwidth for link 13 in MiB/sec + NVML_GPM_METRIC_NVLINK_L13_TX_PER_SEC = 89, //!< NvLink write bandwidth for link 13 in MiB/sec + NVML_GPM_METRIC_NVLINK_L14_RX_PER_SEC = 90, //!< NvLink read bandwidth for link 14 in MiB/sec + NVML_GPM_METRIC_NVLINK_L14_TX_PER_SEC = 91, //!< NvLink write bandwidth for link 14 in MiB/sec + NVML_GPM_METRIC_NVLINK_L15_RX_PER_SEC = 92, //!< NvLink read bandwidth for link 15 in MiB/sec + NVML_GPM_METRIC_NVLINK_L15_TX_PER_SEC = 93, //!< NvLink write bandwidth for link 15 in MiB/sec + NVML_GPM_METRIC_NVLINK_L16_RX_PER_SEC = 94, //!< NvLink read bandwidth for link 16 in MiB/sec + NVML_GPM_METRIC_NVLINK_L16_TX_PER_SEC = 95, //!< NvLink write bandwidth for link 16 in MiB/sec + NVML_GPM_METRIC_NVLINK_L17_RX_PER_SEC = 96, //!< NvLink read bandwidth for link 17 in MiB/sec + NVML_GPM_METRIC_NVLINK_L17_TX_PER_SEC = 97, //!< NvLink write bandwidth for link 17 in MiB/sec + //Put new metrics for BLACKWELL here... + NVML_GPM_METRIC_C2C_TOTAL_TX_PER_SEC = 100, + NVML_GPM_METRIC_C2C_TOTAL_RX_PER_SEC = 101, + NVML_GPM_METRIC_C2C_DATA_TX_PER_SEC = 102, + NVML_GPM_METRIC_C2C_DATA_RX_PER_SEC = 103, + NVML_GPM_METRIC_C2C_LINK0_TOTAL_TX_PER_SEC = 104, + NVML_GPM_METRIC_C2C_LINK0_TOTAL_RX_PER_SEC = 105, + NVML_GPM_METRIC_C2C_LINK0_DATA_TX_PER_SEC = 106, + NVML_GPM_METRIC_C2C_LINK0_DATA_RX_PER_SEC = 107, + NVML_GPM_METRIC_C2C_LINK1_TOTAL_TX_PER_SEC = 108, + NVML_GPM_METRIC_C2C_LINK1_TOTAL_RX_PER_SEC = 109, + NVML_GPM_METRIC_C2C_LINK1_DATA_TX_PER_SEC = 110, + NVML_GPM_METRIC_C2C_LINK1_DATA_RX_PER_SEC = 111, + NVML_GPM_METRIC_C2C_LINK2_TOTAL_TX_PER_SEC = 112, + NVML_GPM_METRIC_C2C_LINK2_TOTAL_RX_PER_SEC = 113, + NVML_GPM_METRIC_C2C_LINK2_DATA_TX_PER_SEC = 114, + NVML_GPM_METRIC_C2C_LINK2_DATA_RX_PER_SEC = 115, + NVML_GPM_METRIC_C2C_LINK3_TOTAL_TX_PER_SEC = 116, + NVML_GPM_METRIC_C2C_LINK3_TOTAL_RX_PER_SEC = 117, + NVML_GPM_METRIC_C2C_LINK3_DATA_TX_PER_SEC = 118, + NVML_GPM_METRIC_C2C_LINK3_DATA_RX_PER_SEC = 119, + NVML_GPM_METRIC_C2C_LINK4_TOTAL_TX_PER_SEC = 120, + NVML_GPM_METRIC_C2C_LINK4_TOTAL_RX_PER_SEC = 121, + NVML_GPM_METRIC_C2C_LINK4_DATA_TX_PER_SEC = 122, + NVML_GPM_METRIC_C2C_LINK4_DATA_RX_PER_SEC = 123, + NVML_GPM_METRIC_C2C_LINK5_TOTAL_TX_PER_SEC = 124, + NVML_GPM_METRIC_C2C_LINK5_TOTAL_RX_PER_SEC = 125, + NVML_GPM_METRIC_C2C_LINK5_DATA_TX_PER_SEC = 126, + NVML_GPM_METRIC_C2C_LINK5_DATA_RX_PER_SEC = 127, + NVML_GPM_METRIC_C2C_LINK6_TOTAL_TX_PER_SEC = 128, + NVML_GPM_METRIC_C2C_LINK6_TOTAL_RX_PER_SEC = 129, + NVML_GPM_METRIC_C2C_LINK6_DATA_TX_PER_SEC = 130, + NVML_GPM_METRIC_C2C_LINK6_DATA_RX_PER_SEC = 131, + NVML_GPM_METRIC_C2C_LINK7_TOTAL_TX_PER_SEC = 132, + NVML_GPM_METRIC_C2C_LINK7_TOTAL_RX_PER_SEC = 133, + NVML_GPM_METRIC_C2C_LINK7_DATA_TX_PER_SEC = 134, + NVML_GPM_METRIC_C2C_LINK7_DATA_RX_PER_SEC = 135, + NVML_GPM_METRIC_C2C_LINK8_TOTAL_TX_PER_SEC = 136, + NVML_GPM_METRIC_C2C_LINK8_TOTAL_RX_PER_SEC = 137, + NVML_GPM_METRIC_C2C_LINK8_DATA_TX_PER_SEC = 138, + NVML_GPM_METRIC_C2C_LINK8_DATA_RX_PER_SEC = 139, + NVML_GPM_METRIC_C2C_LINK9_TOTAL_TX_PER_SEC = 140, + NVML_GPM_METRIC_C2C_LINK9_TOTAL_RX_PER_SEC = 141, + NVML_GPM_METRIC_C2C_LINK9_DATA_TX_PER_SEC = 142, + NVML_GPM_METRIC_C2C_LINK9_DATA_RX_PER_SEC = 143, + NVML_GPM_METRIC_C2C_LINK10_TOTAL_TX_PER_SEC = 144, + NVML_GPM_METRIC_C2C_LINK10_TOTAL_RX_PER_SEC = 145, + NVML_GPM_METRIC_C2C_LINK10_DATA_TX_PER_SEC = 146, + NVML_GPM_METRIC_C2C_LINK10_DATA_RX_PER_SEC = 147, + NVML_GPM_METRIC_C2C_LINK11_TOTAL_TX_PER_SEC = 148, + NVML_GPM_METRIC_C2C_LINK11_TOTAL_RX_PER_SEC = 149, + NVML_GPM_METRIC_C2C_LINK11_DATA_TX_PER_SEC = 150, + NVML_GPM_METRIC_C2C_LINK11_DATA_RX_PER_SEC = 151, + NVML_GPM_METRIC_C2C_LINK12_TOTAL_TX_PER_SEC = 152, + NVML_GPM_METRIC_C2C_LINK12_TOTAL_RX_PER_SEC = 153, + NVML_GPM_METRIC_C2C_LINK12_DATA_TX_PER_SEC = 154, + NVML_GPM_METRIC_C2C_LINK12_DATA_RX_PER_SEC = 155, + NVML_GPM_METRIC_C2C_LINK13_TOTAL_TX_PER_SEC = 156, + NVML_GPM_METRIC_C2C_LINK13_TOTAL_RX_PER_SEC = 157, + NVML_GPM_METRIC_C2C_LINK13_DATA_TX_PER_SEC = 158, + NVML_GPM_METRIC_C2C_LINK13_DATA_RX_PER_SEC = 159, + NVML_GPM_METRIC_HOSTMEM_CACHE_HIT = 160, + NVML_GPM_METRIC_HOSTMEM_CACHE_MISS = 161, + NVML_GPM_METRIC_PEERMEM_CACHE_HIT = 162, + NVML_GPM_METRIC_PEERMEM_CACHE_MISS = 163, + NVML_GPM_METRIC_DRAM_CACHE_HIT = 164, + NVML_GPM_METRIC_DRAM_CACHE_MISS = 165, + NVML_GPM_METRIC_NVENC_0_UTIL = 166, + NVML_GPM_METRIC_NVENC_1_UTIL = 167, + NVML_GPM_METRIC_NVENC_2_UTIL = 168, + NVML_GPM_METRIC_NVENC_3_UTIL = 169, + NVML_GPM_METRIC_GR0_CTXSW_CYCLES_ELAPSED = 170, + NVML_GPM_METRIC_GR0_CTXSW_CYCLES_ACTIVE = 171, + NVML_GPM_METRIC_GR0_CTXSW_REQUESTS = 172, + NVML_GPM_METRIC_GR0_CTXSW_CYCLES_PER_REQ = 173, + NVML_GPM_METRIC_GR0_CTXSW_ACTIVE_PCT = 174, + NVML_GPM_METRIC_GR1_CTXSW_CYCLES_ELAPSED = 175, + NVML_GPM_METRIC_GR1_CTXSW_CYCLES_ACTIVE = 176, + NVML_GPM_METRIC_GR1_CTXSW_REQUESTS = 177, + NVML_GPM_METRIC_GR1_CTXSW_CYCLES_PER_REQ = 178, + NVML_GPM_METRIC_GR1_CTXSW_ACTIVE_PCT = 179, + NVML_GPM_METRIC_GR2_CTXSW_CYCLES_ELAPSED = 180, + NVML_GPM_METRIC_GR2_CTXSW_CYCLES_ACTIVE = 181, + NVML_GPM_METRIC_GR2_CTXSW_REQUESTS = 182, + NVML_GPM_METRIC_GR2_CTXSW_CYCLES_PER_REQ = 183, + NVML_GPM_METRIC_GR2_CTXSW_ACTIVE_PCT = 184, + NVML_GPM_METRIC_GR3_CTXSW_CYCLES_ELAPSED = 185, + NVML_GPM_METRIC_GR3_CTXSW_CYCLES_ACTIVE = 186, + NVML_GPM_METRIC_GR3_CTXSW_REQUESTS = 187, + NVML_GPM_METRIC_GR3_CTXSW_CYCLES_PER_REQ = 188, + NVML_GPM_METRIC_GR3_CTXSW_ACTIVE_PCT = 189, + NVML_GPM_METRIC_GR4_CTXSW_CYCLES_ELAPSED = 190, + NVML_GPM_METRIC_GR4_CTXSW_CYCLES_ACTIVE = 191, + NVML_GPM_METRIC_GR4_CTXSW_REQUESTS = 192, + NVML_GPM_METRIC_GR4_CTXSW_CYCLES_PER_REQ = 193, + NVML_GPM_METRIC_GR4_CTXSW_ACTIVE_PCT = 194, + NVML_GPM_METRIC_GR5_CTXSW_CYCLES_ELAPSED = 195, + NVML_GPM_METRIC_GR5_CTXSW_CYCLES_ACTIVE = 196, + NVML_GPM_METRIC_GR5_CTXSW_REQUESTS = 197, + NVML_GPM_METRIC_GR5_CTXSW_CYCLES_PER_REQ = 198, + NVML_GPM_METRIC_GR5_CTXSW_ACTIVE_PCT = 199, + NVML_GPM_METRIC_GR6_CTXSW_CYCLES_ELAPSED = 200, + NVML_GPM_METRIC_GR6_CTXSW_CYCLES_ACTIVE = 201, + NVML_GPM_METRIC_GR6_CTXSW_REQUESTS = 202, + NVML_GPM_METRIC_GR6_CTXSW_CYCLES_PER_REQ = 203, + NVML_GPM_METRIC_GR6_CTXSW_ACTIVE_PCT = 204, + NVML_GPM_METRIC_GR7_CTXSW_CYCLES_ELAPSED = 205, + NVML_GPM_METRIC_GR7_CTXSW_CYCLES_ACTIVE = 206, + NVML_GPM_METRIC_GR7_CTXSW_REQUESTS = 207, + NVML_GPM_METRIC_GR7_CTXSW_CYCLES_PER_REQ = 208, + NVML_GPM_METRIC_GR7_CTXSW_ACTIVE_PCT = 209, + NVML_GPM_METRIC_MAX = 210, //!< Maximum value above +1. Note that changing this should also change NVML_GPM_METRICS_GET_VERSION due to struct size change } nvmlGpmMetricId_t; /** @} */ // @defgroup nvmlGpmEnums @@ -10757,7 +12633,7 @@ typedef struct { */ typedef struct { - unsigned int metricId; //!< IN: NVML_GPM_METRIC_? #define of which metric to retrieve + unsigned int metricId; //!< IN: NVML_GPM_METRIC_? define of which metric to retrieve nvmlReturn_t nvmlReturn; //!< OUT: Status of this metric. If this is nonzero, then value is not valid double value; //!< OUT: Value of this metric. Is only valid if nvmlReturn is 0 (NVML_SUCCESS) nvmlGpmMetricMetricInfo_t metricInfo; //!< OUT: Metric name and unit. Those can be NULL if not defined @@ -10801,6 +12677,14 @@ typedef struct * * For Hopper &tm; or newer fully supported devices. * + * To retrieve metrics, the user must first allocate the two sample buffers at \a metricsGet->sample1 + * and \a metricsGet->sample2 by calling \a nvmlGpmSampleAlloc(). Next, the user should fill in the ID of each metric + * in \a metricsGet->metrics[i].metricId and specify the total number of metrics to retrieve in \a metricsGet->numMetrics, + * The version should be set to NVML_GPM_METRICS_GET_VERSION in \a metricsGet->version. The user then calls the + * \a nvmlGpmSampleGet() API twice to obtain 2 samples of counters. \note that the interval between these + * two \a nvmlGpmSampleGet() calls should be greater than 100ms due to the internal sample refresh rate. + * Finally, the user calls \a nvmlGpmMetricsGet to retrieve the metrics, which will be stored at \a metricsGet->metrics + * * @param metricsGet IN/OUT: populated \a nvmlGpmMetricsGet_t struct * * @return @@ -10846,6 +12730,9 @@ nvmlReturn_t DECLDIR nvmlGpmSampleAlloc(nvmlGpmSample_t *gpmSample); * * For Hopper &tm; or newer fully supported devices. * + * @note The interval between two \a nvmlGpmSampleGet() calls should be greater than 100ms due to + * the internal sample refresh rate. + * * @param device Device to get samples for * @param gpmSample Buffer to read samples into * @@ -10863,6 +12750,9 @@ nvmlReturn_t DECLDIR nvmlGpmSampleGet(nvmlDevice_t device, nvmlGpmSample_t gpmSa * * For Hopper &tm; or newer fully supported devices. * + * @note The interval between two \a nvmlGpmMigSampleGet() calls should be greater than 100ms due to + * the internal sample refresh rate. + * * @param device Device to get samples for * @param gpuInstanceId MIG GPU Instance ID * @param gpmSample Buffer to read samples into @@ -10876,6 +12766,8 @@ nvmlReturn_t DECLDIR nvmlGpmMigSampleGet(nvmlDevice_t device, unsigned int gpuIn /** * Indicate whether the supplied device supports GPM * + * For Hopper &tm; or newer fully supported devices. + * * @param device NVML device to query for * @param gpmSupport Structure to indicate GPM support \a nvmlGpmSupport_t. Indicates * GPM support per system for the supplied device @@ -10890,7 +12782,7 @@ nvmlReturn_t DECLDIR nvmlGpmQueryDeviceSupport(nvmlDevice_t device, nvmlGpmSuppo /** * Get GPM stream state. * - * %HOPPER_OR_NEWER% + * For Hopper &tm; or newer fully supported devices. * Supported on Linux, Windows TCC. * * @param device The identifier of the target device @@ -10908,7 +12800,7 @@ nvmlReturn_t DECLDIR nvmlGpmQueryIfStreamingEnabled(nvmlDevice_t device, unsigne /** * Set GPM stream state. * - * %HOPPER_OR_NEWER% + * For Hopper &tm; or newer fully supported devices. * Supported on Linux, Windows TCC. * * @param device The identifier of the target device @@ -10926,118 +12818,348 @@ nvmlReturn_t DECLDIR nvmlGpmSetStreamingEnabled(nvmlDevice_t device, unsigned in /** @} */ // @defgroup nvmlGpmFunctions /** @} */ // @defgroup GPM -#define NVML_NVLINK_POWER_STATE_HIGH_SPEED 0x0 -#define NVML_NVLINK_POWER_STATE_LOW 0x1 - -#define NVML_NVLINK_LOW_POWER_THRESHOLD_MIN 0x1 -#define NVML_NVLINK_LOW_POWER_THRESHOLD_MAX 0x1FFF -#define NVML_NVLINK_LOW_POWER_THRESHOLD_RESET 0xFFFFFFFF - -/* Structure containing Low Power parameters */ -typedef struct nvmlNvLinkPowerThres_st +#define NVML_DEV_CAP_EGM (1 << 0) // Extended GPU memory +/** + * Device capabilities + */ +typedef struct { - unsigned int lowPwrThreshold; //!< Low power threshold (in units of 100us) -} nvmlNvLinkPowerThres_t; + unsigned int version; //!< the API version number + unsigned int capMask; //!< OUT: Bit mask of capabilities. +} nvmlDeviceCapabilities_v1_t; +typedef nvmlDeviceCapabilities_v1_t nvmlDeviceCapabilities_t; +#define nvmlDeviceCapabilities_v1 NVML_STRUCT_VERSION(DeviceCapabilities, 1) /** - * Set NvLink Low Power Threshold for device. + * Get device capabilities * - * %HOPPER_OR_NEWER% + * See \ref nvmlDeviceCapabilities_v1_t for more information on the struct. * * @param device The identifier of the target device - * @param info Reference to \a nvmlNvLinkPowerThres_t struct - * input parameters + * @param caps Returns GPU's capabilities * * @return - * - \ref NVML_SUCCESS if the \a Threshold is successfully set - * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized - * - \ref NVML_ERROR_INVALID_ARGUMENT if \a device is invalid or \a Threshold is not within range - * - \ref NVML_ERROR_NOT_SUPPORTED if this query is not supported by the device - * - **/ -nvmlReturn_t DECLDIR nvmlDeviceSetNvLinkDeviceLowPowerThreshold(nvmlDevice_t device, nvmlNvLinkPowerThres_t *info); + * - \ref NVML_SUCCESS If the query is success + * - \ref NVML_ERROR_UNINITIALIZED If the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a device is invalid or \a counters is NULL + * - \ref NVML_ERROR_NOT_SUPPORTED If the device does not support this feature + * - \ref NVML_ERROR_GPU_IS_LOST If the target GPU has fallen off the bus or is otherwise inaccessible + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the provided version is invalid/unsupported + * - \ref NVML_ERROR_UNKNOWN On any unexpected error + */ +nvmlReturn_t DECLDIR nvmlDeviceGetCapabilities(nvmlDevice_t device, + nvmlDeviceCapabilities_t *caps); + +/* + * Generic bitmask to hold 255 bits, represented by 8 elements of 32 bits + */ +#define NVML_255_MASK_BITS_PER_ELEM 32 +#define NVML_255_MASK_NUM_ELEMS 8 +#define NVML_255_MASK_BIT_SET(index, nvmlMask) \ + nvmlMask.mask[index / NVML_255_MASK_BITS_PER_ELEM] |= (1 << (index % NVML_255_MASK_BITS_PER_ELEM)) + +#define NVML_255_MASK_BIT_GET(index, nvmlMask) \ + nvmlMask.mask[index / NVML_255_MASK_BITS_PER_ELEM] & (1 << (index % NVML_255_MASK_BITS_PER_ELEM)) + +#define NVML_255_MASK_BIT_SET_PTR(index, nvmlMask) \ + nvmlMask->mask[index / NVML_255_MASK_BITS_PER_ELEM] |= (1 << (index % NVML_255_MASK_BITS_PER_ELEM)) + +#define NVML_255_MASK_BIT_GET_PTR(index, nvmlMask) \ + nvmlMask->mask[index / NVML_255_MASK_BITS_PER_ELEM] & (1 << (index % NVML_255_MASK_BITS_PER_ELEM)) + +typedef struct +{ + unsigned int mask[NVML_255_MASK_NUM_ELEMS]; //<! Array to hold 255 bits +} nvmlMask255_t; + +/***************************************************************************************************/ +/** @defgroup nvmlPowerProfiles Power Profile Information + * @{ + */ +/***************************************************************************************************/ +#define NVML_WORKLOAD_POWER_MAX_PROFILES (255) +typedef enum +{ + NVML_POWER_PROFILE_MAX_P = 0, + NVML_POWER_PROFILE_MAX_Q = 1, + NVML_POWER_PROFILE_COMPUTE = 2, + NVML_POWER_PROFILE_MEMORY_BOUND = 3, + NVML_POWER_PROFILE_NETWORK = 4, + NVML_POWER_PROFILE_BALANCED = 5, + NVML_POWER_PROFILE_LLM_INFERENCE = 6, + NVML_POWER_PROFILE_LLM_TRAINING = 7, + NVML_POWER_PROFILE_RBM = 8, + NVML_POWER_PROFILE_DCPCIE = 9, + NVML_POWER_PROFILE_HMMA_SPARSE = 10, + NVML_POWER_PROFILE_HMMA_DENSE = 11, + NVML_POWER_PROFILE_SYNC_BALANCED = 12, + NVML_POWER_PROFILE_HPC = 13, + NVML_POWER_PROFILE_MIG = 14, + + NVML_POWER_PROFILE_MAX = 15, +} nvmlPowerProfileType_t; /** - * Set the global nvlink bandwith mode + * Profile Metadata + */ +typedef struct +{ + unsigned int version; //!< the API version number + unsigned int profileId; //!< Performance Profile Id to provide semantic name such as compute, Memory, Max-Q... + unsigned int priority; //!< Priority of the profile + nvmlMask255_t conflictingMask; //!< Mask of conflicting performance profiles +} nvmlWorkloadPowerProfileInfo_v1_t; +typedef nvmlWorkloadPowerProfileInfo_v1_t nvmlWorkloadPowerProfileInfo_t; +#define nvmlWorkloadPowerProfileInfo_v1 NVML_STRUCT_VERSION(WorkloadPowerProfileInfo, 1) + +/** + * Profiles Info + */ +typedef struct +{ + unsigned int version; //!< the API version number + nvmlMask255_t perfProfilesMask; //!< Mask bit set to true for each valid performance profile + nvmlWorkloadPowerProfileInfo_t perfProfile[NVML_WORKLOAD_POWER_MAX_PROFILES]; //!< Array of performance profile info parameters +} nvmlWorkloadPowerProfileProfilesInfo_v1_t; +typedef nvmlWorkloadPowerProfileProfilesInfo_v1_t nvmlWorkloadPowerProfileProfilesInfo_t; +#define nvmlWorkloadPowerProfileProfilesInfo_v1 NVML_STRUCT_VERSION(WorkloadPowerProfileProfilesInfo, 1) + +/** + * Current Profiles + */ +typedef struct +{ + unsigned int version; + nvmlMask255_t perfProfilesMask; //!< Mask bit set to true for each valid performance profile + nvmlMask255_t requestedProfilesMask; //!< Mask of currently requested performance profiles + nvmlMask255_t enforcedProfilesMask; //!< Mask of currently enforced performance profiles post all arbitrations among the requested profiles. +} nvmlWorkloadPowerProfileCurrentProfiles_v1_t; +typedef nvmlWorkloadPowerProfileCurrentProfiles_v1_t nvmlWorkloadPowerProfileCurrentProfiles_t; +#define nvmlWorkloadPowerProfileCurrentProfiles_v1 NVML_STRUCT_VERSION(WorkloadPowerProfileCurrentProfiles, 1) + +/** + * Requested Profiles + */ +typedef struct +{ + unsigned int version; //!< the API version number + nvmlMask255_t requestedProfilesMask; //!< Mask of 255 bits, each bit representing index of respective perf profile +} nvmlWorkloadPowerProfileRequestedProfiles_v1_t; +typedef nvmlWorkloadPowerProfileRequestedProfiles_v1_t nvmlWorkloadPowerProfileRequestedProfiles_t; +#define nvmlWorkloadPowerProfileRequestedProfiles_v1 NVML_STRUCT_VERSION(WorkloadPowerProfileRequestedProfiles, 1) + +/** + * Get Performance Profiles Information + * + * %BLACKWELL_OR_NEWER% + * See \ref nvmlWorkloadPowerProfileProfilesInfo_v1_t for more information on the struct. + * The mask \a perfProfilesMask is bitmask of all supported mode indices where the + * mode is supported if the index is 1. Each supported mode will have a corresponding + * entry in the \a perfProfile array which will contain the \a profileId, the + * \a priority of this mode, where the lower the value, the higher the priority, + * and a \a conflictingMask, where each bit set in the mask corresponds to a different + * profile which cannot be used in conjunction with the given profile. + * + * @param device The identifier of the target device + * @param profilesInfo Reference to struct \a nvmlWorkloadPowerProfileProfilesInfo_t * - * @param nvlinkBwMode nvlink bandwidth mode * @return - * - \ref NVML_SUCCESS on success - * - \ref NVML_ERROR_INVALID_ARGUMENT if an invalid argument is provided - * - \ref NVML_ERROR_IN_USE if P2P object exists - * - \ref NVML_ERROR_NOT_SUPPORTED if GPU is not Hopper or newer architecture. - * - \ref NVML_ERROR_NO_PERMISSION if not root user + * - \ref NVML_SUCCESS If the query is successful + * - \ref NVML_ERROR_INSUFFICIENT_SIZE If struct is fully allocated + * - \ref NVML_ERROR_UNINITIALIZED If the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a device is invalid or \a pointer to struct is NULL + * - \ref NVML_ERROR_NOT_SUPPORTED If the device does not support this feature + * - \ref NVML_ERROR_GPU_IS_LOST If the target GPU has fallen off the bus or is otherwise inaccessible + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the provided version is invalid/unsupported + * - \ref NVML_ERROR_UNKNOWN On any unexpected error */ -nvmlReturn_t DECLDIR nvmlSystemSetNvlinkBwMode(unsigned int nvlinkBwMode); - +nvmlReturn_t DECLDIR nvmlDeviceWorkloadPowerProfileGetProfilesInfo(nvmlDevice_t device, + nvmlWorkloadPowerProfileProfilesInfo_t *profilesInfo); /** - * Get the global nvlink bandwith mode + * Get Current Performance Profiles + * + * %BLACKWELL_OR_NEWER% + * See \ref nvmlWorkloadPowerProfileCurrentProfiles_v1_t for more information on the struct. + * This API returns a stuct which contains the current \a perfProfilesMask, + * \a requestedProfilesMask and \a enforcedProfilesMask. Each bit set in each + * bitmasks indicates the profile is supported, currently requested or currently + * engaged, respectively. + * + * @param device The identifier of the target device + * @param currentProfiles Reference to struct \a nvmlWorkloadPowerProfileCurrentProfiles_v1_t * - * @param nvlinkBwMode reference of nvlink bandwidth mode * @return - * - \ref NVML_SUCCESS on success - * - \ref NVML_ERROR_INVALID_ARGUMENT if an invalid pointer is provided - * - \ref NVML_ERROR_NOT_SUPPORTED if GPU is not Hopper or newer architecture. - * - \ref NVML_ERROR_NO_PERMISSION if not root user + * - \ref NVML_SUCCESS If the query is successful + * - \ref NVML_ERROR_UNINITIALIZED If the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a device is invalid or the pointer to struct is NULL + * - \ref NVML_ERROR_NOT_SUPPORTED If the device does not support this feature + * - \ref NVML_ERROR_GPU_IS_LOST If the target GPU has fallen off the bus or is otherwise inaccessible + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the provided version is invalid/unsupported + * - \ref NVML_ERROR_UNKNOWN On any unexpected error */ -nvmlReturn_t DECLDIR nvmlSystemGetNvlinkBwMode(unsigned int *nvlinkBwMode); - +nvmlReturn_t DECLDIR nvmlDeviceWorkloadPowerProfileGetCurrentProfiles(nvmlDevice_t device, + nvmlWorkloadPowerProfileCurrentProfiles_t *currentProfiles); /** - * Set new power limit of this device. + * Set Requested Performance Profiles * - * For Kepler &tm; or newer fully supported devices. + * %BLACKWELL_OR_NEWER% + * See \ref nvmlWorkloadPowerProfileRequestedProfiles_v1_t for more information on the struct. + * Reuqest one or more performance profiles be activated using the input bitmask + * \a requestedProfilesMask, where each bit set corresponds to a supported bit from + * the \a perfProfilesMask. These profiles will be added to existing list of + * currently requested profiles. * Requires root/admin permissions. * - * See \ref nvmlDeviceGetPowerManagementLimitConstraints to check the allowed ranges of values. + * @param device The identifier of the target device + * @param requestedProfiles Reference to struct \a nvmlWorkloadPowerProfileRequestedProfiles_v1_t * - * See \ref nvmlPowerValue_v2_t for more information on the struct. + * @return + * - \ref NVML_SUCCESS If the query is successful + * - \ref NVML_ERROR_UNINITIALIZED If the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a device is invalid or \a pointer to struct is NULL + * - \ref NVML_ERROR_NOT_SUPPORTED If the device does not support this feature + * - \ref NVML_ERROR_GPU_IS_LOST If the target GPU has fallen off the bus or is otherwise inaccessible + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the provided version is invalid/unsupported + * - \ref NVML_ERROR_UNKNOWN On any unexpected error + */ +nvmlReturn_t DECLDIR nvmlDeviceWorkloadPowerProfileSetRequestedProfiles(nvmlDevice_t device, + nvmlWorkloadPowerProfileRequestedProfiles_t *requestedProfiles); +/** + * Clear Requested Performance Profiles * - * \note Limit is not persistent across reboots or driver unloads. - * Enable persistent mode to prevent driver from unloading when no application is using the device. + * %BLACKWELL_OR_NEWER% + * See \ref nvmlWorkloadPowerProfileRequestedProfiles_v1_t for more information on the struct. + * Clear one or more performance profiles be using the input bitmask + * \a requestedProfilesMask, where each bit set corresponds to a supported bit from + * the \a perfProfilesMask. These profiles will be removed from the existing list of + * currently requested profiles. + * Requires root/admin permissions. * - * This API replaces nvmlDeviceSetPowerManagementLimit. It can be used as a drop-in replacement for the older version. + * @param device The identifier of the target device + * @param requestedProfiles Reference to struct \a nvmlWorkloadPowerProfileRequestedProfiles_v1_t * - * @param device The identifier of the target device - * @param powerValue Power management limit in milliwatts to set + * @return + * - \ref NVML_SUCCESS If the query is successful + * - \ref NVML_ERROR_UNINITIALIZED If the library has not been successfully initialized + * - \ref NVML_ERROR_INVALID_ARGUMENT If \a device is invalid or \a pointer to struct is NULL + * - \ref NVML_ERROR_NOT_SUPPORTED If the device does not support this feature + * - \ref NVML_ERROR_GPU_IS_LOST If the target GPU has fallen off the bus or is otherwise inaccessible + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH If the provided version is invalid/unsupported + * - \ref NVML_ERROR_UNKNOWN On any unexpected error + */ +nvmlReturn_t DECLDIR nvmlDeviceWorkloadPowerProfileClearRequestedProfiles(nvmlDevice_t device, + nvmlWorkloadPowerProfileRequestedProfiles_t *requestedProfiles); +/** @} */ // @defgroup + +/***************************************************************************************************/ +/** @defgroup nvmlPowerSmoothing Power Smoothing Information + * @{ + */ +/***************************************************************************************************/ +#define NVML_POWER_SMOOTHING_IDX_FROM_FIELD_VAL(field_val) \ + (field_val - NVML_FI_PWR_SMOOTHING_ENABLED) + +#define NVML_POWER_SMOOTHING_MAX_NUM_PROFILES 5 +#define NVML_POWER_SMOOTHING_NUM_PROFILE_PARAMS 4 +#define NVML_POWER_SMOOTHING_ADMIN_OVERRIDE_NOT_SET 0xFFFFFFFFU +#define NVML_POWER_SMOOTHING_PROFILE_PARAM_PERCENT_TMP_FLOOR 0 +#define NVML_POWER_SMOOTHING_PROFILE_PARAM_RAMP_UP_RATE 1 +#define NVML_POWER_SMOOTHING_PROFILE_PARAM_RAMP_DOWN_RATE 2 +#define NVML_POWER_SMOOTHING_PROFILE_PARAM_RAMP_DOWN_HYSTERESIS 3 + +/** + * Power Smoothing Structure for Profile information + */ +typedef struct +{ + unsigned int version; //!< the API version number + + unsigned int profileId; //!< The requested profile ID + unsigned int paramId; //!< The requested paramater ID + double value; //!< The requested value for the given parameter +} nvmlPowerSmoothingProfile_v1_t; +typedef nvmlPowerSmoothingProfile_v1_t nvmlPowerSmoothingProfile_t; +#define nvmlPowerSmoothingProfile_v1 NVML_STRUCT_VERSION(PowerSmoothingProfile, 1) + +/** + * Power Smoothing Structure for Feature Enablement + */ +typedef struct +{ + unsigned int version; //!< the API version number + nvmlEnableState_t state; //!< 0/Disabled or 1/Enabled +} nvmlPowerSmoothingState_v1_t; +typedef nvmlPowerSmoothingState_v1_t nvmlPowerSmoothingState_t; +#define nvmlPowerSmoothingState_v1 NVML_STRUCT_VERSION(PowerSmoothingState, 1) + +/** + * Activiate a specific preset profile for datacenter power smoothing. + * The API only sets the active preset profile based on the input profileId, + * and ignores the other parameters of the structure. + * Requires root/admin permissions. + * + * %BLACKWELL_OR_NEWER% + * + * @param device The identifier of the target device + * @param profile Reference to \ref nvmlPowerSmoothingProfile_v1_t. + * Note that only \a profile->profileId is used and + * the rest of the structure is ignored. * * @return - * - \ref NVML_SUCCESS if \a limit has been set - * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized - * - \ref NVML_ERROR_INVALID_ARGUMENT if \a device is invalid or \a powerValue is NULL or contains invalid values - * - \ref NVML_ERROR_NOT_SUPPORTED if the device does not support this feature - * - \ref NVML_ERROR_GPU_IS_LOST if the target GPU has fallen off the bus or is otherwise inaccessible - * - \ref NVML_ERROR_UNKNOWN on any unexpected error + * - \ref NVML_SUCCESS if the Desired Profile was successfully set + * - \ref NVML_ERROR_INVALID_ARGUMENT if device is invalid or structure was NULL + * - \ref NVML_ERROR_NO_PERMISSION if user does not have permission to change the profile number + * - \ref NVML_ERROR_NOT_SUPPORTED if this feature is not supported by the device * - * @see NVML_FI_DEV_POWER_AVERAGE - * @see NVML_FI_DEV_POWER_INSTANT - * @see NVML_FI_DEV_POWER_MIN_LIMIT - * @see NVML_FI_DEV_POWER_MAX_LIMIT - * @see NVML_FI_DEV_POWER_CURRENT_LIMIT - */ -nvmlReturn_t DECLDIR nvmlDeviceSetPowerManagementLimit_v2(nvmlDevice_t device, nvmlPowerValue_v2_t *powerValue); + **/ +nvmlReturn_t DECLDIR nvmlDevicePowerSmoothingActivatePresetProfile(nvmlDevice_t device, + nvmlPowerSmoothingProfile_t *profile); /** - * Get SRAM ECC error status of this device. + * Update the value of a specific profile parameter contained within \ref nvmlPowerSmoothingProfile_v1_t. + * Requires root/admin permissions. * - * For Ampere &tm; or newer fully supported devices. + * %BLACKWELL_OR_NEWER% + * + * NVML_POWER_SMOOTHING_PROFILE_PARAM_PERCENT_TMP_FLOOR expects a value as a percentage from 00.00-100.00% + * NVML_POWER_SMOOTHING_PROFILE_PARAM_RAMP_UP_RATE expects a value in W/s + * NVML_POWER_SMOOTHING_PROFILE_PARAM_RAMP_DOWN_RATE expects a value in W/s + * NVML_POWER_SMOOTHING_PROFILE_PARAM_RAMP_DOWN_HYSTERESIS expects a value in ms + * + * @param device The identifier of the target device + * @param profile Reference to \ref nvmlPowerSmoothingProfile_v1_t struct + * + * @return + * - \ref NVML_SUCCESS if the Active Profile was successfully set + * - \ref NVML_ERROR_INVALID_ARGUMENT if device is invalid or profile parameter/value was invalid + * - \ref NVML_ERROR_NO_PERMISSION if user does not have permission to change any profile parameters + * - \ref NVML_ERROR_ARGUMENT_VERSION_MISMATCH if the structure version is not supported + * + **/ +nvmlReturn_t DECLDIR nvmlDevicePowerSmoothingUpdatePresetProfileParam(nvmlDevice_t device, + nvmlPowerSmoothingProfile_t *profile); +/** + * Enable or disable the Power Smoothing Feature. * Requires root/admin permissions. * - * See \ref nvmlEccSramErrorStatus_v1_t for more information on the struct. + * %BLACKWELL_OR_NEWER% * - * @param device The identifier of the target device - * @param status Returns SRAM ECC error status + * See \ref nvmlEnableState_t for details on allowed states + * + * @param device The identifier of the target device + * @param state Reference to \ref nvmlPowerSmoothingState_v1_t * * @return - * - \ref NVML_SUCCESS if \a limit has been set - * - \ref NVML_ERROR_UNINITIALIZED if the library has not been successfully initialized - * - \ref NVML_ERROR_INVALID_ARGUMENT if \a device is invalid or \a counters is NULL - * - \ref NVML_ERROR_NOT_SUPPORTED if the device does not support this feature - * - \ref NVML_ERROR_GPU_IS_LOST if the target GPU has fallen off the bus or is otherwise inaccessible - * - \ref NVML_ERROR_VERSION_MISMATCH if the version of \a nvmlEccSramErrorStatus_t is invalid - * - \ref NVML_ERROR_UNKNOWN on any unexpected error - */ -nvmlReturn_t DECLDIR nvmlDeviceGetSramEccErrorStatus(nvmlDevice_t device, - nvmlEccSramErrorStatus_t *status); + * - \ref NVML_SUCCESS if the feature state was successfully set + * - \ref NVML_ERROR_INVALID_ARGUMENT if device is invalid or state is NULL + * - \ref NVML_ERROR_NO_PERMISSION if user does not have permission to change feature state + * - \ref NVML_ERROR_NOT_SUPPORTED if this feature is not supported by the device + * + **/ +nvmlReturn_t DECLDIR nvmlDevicePowerSmoothingSetState(nvmlDevice_t device, + nvmlPowerSmoothingState_t *state); +/** @} */ // @defgroup + /** * NVML API versioning support */ @@ -11065,6 +13187,7 @@ nvmlReturn_t DECLDIR nvmlDeviceGetMPSComputeRunningProcesses(nvmlDevice_t device nvmlReturn_t DECLDIR nvmlDeviceGetMPSComputeRunningProcesses_v2(nvmlDevice_t device, unsigned int *infoCount, nvmlProcessInfo_v2_t *infos); nvmlReturn_t DECLDIR nvmlDeviceGetGpuInstancePossiblePlacements(nvmlDevice_t device, unsigned int profileId, nvmlGpuInstancePlacement_t *placements, unsigned int *count); nvmlReturn_t DECLDIR nvmlVgpuInstanceGetLicenseInfo(nvmlVgpuInstance_t vgpuInstance, nvmlVgpuLicenseInfo_t *licenseInfo); +nvmlReturn_t DECLDIR nvmlDeviceGetDriverModel(nvmlDevice_t device, nvmlDriverModel_t *current, nvmlDriverModel_t *pending); #endif // #ifdef NVML_NO_UNVERSIONED_FUNC_DEFS #if defined(NVML_NO_UNVERSIONED_FUNC_DEFS) @@ -11090,6 +13213,7 @@ nvmlReturn_t DECLDIR nvmlVgpuInstanceGetLicenseInfo(nvmlVgpuInstance_t vgpuInsta #undef nvmlGetBlacklistDeviceInfoByIndex #undef nvmlDeviceGetGpuInstancePossiblePlacements #undef nvmlVgpuInstanceGetLicenseInfo +#undef nvmlDeviceGetDriverModel #undef nvmlDeviceSetPowerManagementLimit #endif diff --git a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/system.go b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/system.go index bee396415..f82471024 100644 --- a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/system.go +++ b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/system.go @@ -88,31 +88,31 @@ func (l *library) SystemGetConfComputeCapabilities() (ConfComputeSystemCaps, Ret } // nvml.SystemGetConfComputeState() -func SystemGetConfComputeState() (ConfComputeSystemState, Return) { +func (l *library) SystemGetConfComputeState() (ConfComputeSystemState, Return) { var state ConfComputeSystemState ret := nvmlSystemGetConfComputeState(&state) return state, ret } // nvml.SystemGetConfComputeGpusReadyState() -func SystemGetConfComputeGpusReadyState() (uint32, Return) { +func (l *library) SystemGetConfComputeGpusReadyState() (uint32, Return) { var isAcceptingWork uint32 ret := nvmlSystemGetConfComputeGpusReadyState(&isAcceptingWork) return isAcceptingWork, ret } // nvml.SystemSetConfComputeGpusReadyState() -func SystemSetConfComputeGpusReadyState(isAcceptingWork uint32) Return { +func (l *library) SystemSetConfComputeGpusReadyState(isAcceptingWork uint32) Return { return nvmlSystemSetConfComputeGpusReadyState(isAcceptingWork) } // nvml.SystemSetNvlinkBwMode() -func SystemSetNvlinkBwMode(nvlinkBwMode uint32) Return { +func (l *library) SystemSetNvlinkBwMode(nvlinkBwMode uint32) Return { return nvmlSystemSetNvlinkBwMode(nvlinkBwMode) } // nvml.SystemGetNvlinkBwMode() -func SystemGetNvlinkBwMode() (uint32, Return) { +func (l *library) SystemGetNvlinkBwMode() (uint32, Return) { var nvlinkBwMode uint32 ret := nvmlSystemGetNvlinkBwMode(&nvlinkBwMode) return nvlinkBwMode, ret @@ -121,6 +121,7 @@ func SystemGetNvlinkBwMode() (uint32, Return) { // nvml.SystemGetConfComputeKeyRotationThresholdInfo() func (l *library) SystemGetConfComputeKeyRotationThresholdInfo() (ConfComputeGetKeyRotationThresholdInfo, Return) { var keyRotationThresholdInfo ConfComputeGetKeyRotationThresholdInfo + keyRotationThresholdInfo.Version = STRUCT_VERSION(keyRotationThresholdInfo, 1) ret := nvmlSystemGetConfComputeKeyRotationThresholdInfo(&keyRotationThresholdInfo) return keyRotationThresholdInfo, ret } @@ -128,6 +129,7 @@ func (l *library) SystemGetConfComputeKeyRotationThresholdInfo() (ConfComputeGet // nvml.SystemGetConfComputeSettings() func (l *library) SystemGetConfComputeSettings() (SystemConfComputeSettings, Return) { var settings SystemConfComputeSettings + settings.Version = STRUCT_VERSION(settings, 1) ret := nvmlSystemGetConfComputeSettings(&settings) return settings, ret } @@ -136,3 +138,11 @@ func (l *library) SystemGetConfComputeSettings() (SystemConfComputeSettings, Ret func (l *library) SystemSetConfComputeKeyRotationThresholdInfo(keyRotationThresholdInfo ConfComputeSetKeyRotationThresholdInfo) Return { return nvmlSystemSetConfComputeKeyRotationThresholdInfo(&keyRotationThresholdInfo) } + +// nvml.SystemGetDriverBranch() +func (l *library) SystemGetDriverBranch() (SystemDriverBranchInfo, Return) { + var branchInfo SystemDriverBranchInfo + branchInfo.Version = STRUCT_VERSION(branchInfo, 1) + ret := nvmlSystemGetDriverBranch(&branchInfo, SYSTEM_DRIVER_VERSION_BUFFER_SIZE) + return branchInfo, ret +} diff --git a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/types_gen.go b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/types_gen.go index 6ee33a6ab..3be17966c 100644 --- a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/types_gen.go +++ b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/types_gen.go @@ -9,6 +9,10 @@ type nvmlDevice struct { Handle *_Ctype_struct_nvmlDevice_st } +type nvmlGpuInstance struct { + Handle *_Ctype_struct_nvmlGpuInstance_st +} + type PciInfoExt_v1 struct { Version uint32 Domain uint32 @@ -182,6 +186,58 @@ type GpuThermalSettings struct { Sensor [3]GpuThermalSettingsSensor } +type CoolerInfo_v1 struct { + Version uint32 + Index uint32 + SignalType uint32 + Target uint32 +} + +type CoolerInfo struct { + Version uint32 + Index uint32 + SignalType uint32 + Target uint32 +} + +const sizeofUUIDValue = unsafe.Sizeof([41]byte{}) + +type UUIDValue [sizeofUUIDValue]byte + +type UUID_v1 struct { + Version uint32 + Type uint32 + Value [41]byte + Pad_cgo_0 [3]byte +} + +type UUID struct { + Version uint32 + Type uint32 + Value [41]byte + Pad_cgo_0 [3]byte +} + +type DramEncryptionInfo_v1 struct { + Version uint32 + EncryptionState uint32 +} + +type DramEncryptionInfo struct { + Version uint32 + EncryptionState uint32 +} + +type MarginTemperature_v1 struct { + Version uint32 + MarginTemperature int32 +} + +type MarginTemperature struct { + Version uint32 + MarginTemperature int32 +} + type ClkMonFaultInfo struct { ClkApiDomain uint32 ClkDomainFaultMask uint32 @@ -193,6 +249,189 @@ type ClkMonStatus struct { ClkMonList [32]ClkMonFaultInfo } +type ClockOffset_v1 struct { + Version uint32 + Type uint32 + Pstate uint32 + ClockOffsetMHz int32 + MinClockOffsetMHz int32 + MaxClockOffsetMHz int32 +} + +type ClockOffset struct { + Version uint32 + Type uint32 + Pstate uint32 + ClockOffsetMHz int32 + MinClockOffsetMHz int32 + MaxClockOffsetMHz int32 +} + +type FanSpeedInfo_v1 struct { + Version uint32 + Fan uint32 + Speed uint32 +} + +type FanSpeedInfo struct { + Version uint32 + Fan uint32 + Speed uint32 +} + +type DevicePerfModes_v1 struct { + Version uint32 + Str [2048]int8 +} + +type DevicePerfModes struct { + Version uint32 + Str [2048]int8 +} + +type DeviceCurrentClockFreqs_v1 struct { + Version uint32 + Str [2048]int8 +} + +type DeviceCurrentClockFreqs struct { + Version uint32 + Str [2048]int8 +} + +type ProcessUtilizationSample struct { + Pid uint32 + TimeStamp uint64 + SmUtil uint32 + MemUtil uint32 + EncUtil uint32 + DecUtil uint32 +} + +type ProcessUtilizationInfo_v1 struct { + TimeStamp uint64 + Pid uint32 + SmUtil uint32 + MemUtil uint32 + EncUtil uint32 + DecUtil uint32 + JpgUtil uint32 + OfaUtil uint32 + Pad_cgo_0 [4]byte +} + +type ProcessesUtilizationInfo_v1 struct { + Version uint32 + ProcessSamplesCount uint32 + LastSeenTimeStamp uint64 + ProcUtilArray *ProcessUtilizationInfo_v1 +} + +type ProcessesUtilizationInfo struct { + Version uint32 + ProcessSamplesCount uint32 + LastSeenTimeStamp uint64 + ProcUtilArray *ProcessUtilizationInfo_v1 +} + +type EccSramErrorStatus_v1 struct { + Version uint32 + AggregateUncParity uint64 + AggregateUncSecDed uint64 + AggregateCor uint64 + VolatileUncParity uint64 + VolatileUncSecDed uint64 + VolatileCor uint64 + AggregateUncBucketL2 uint64 + AggregateUncBucketSm uint64 + AggregateUncBucketPcie uint64 + AggregateUncBucketMcu uint64 + AggregateUncBucketOther uint64 + BThresholdExceeded uint32 + Pad_cgo_0 [4]byte +} + +type EccSramErrorStatus struct { + Version uint32 + AggregateUncParity uint64 + AggregateUncSecDed uint64 + AggregateCor uint64 + VolatileUncParity uint64 + VolatileUncSecDed uint64 + VolatileCor uint64 + AggregateUncBucketL2 uint64 + AggregateUncBucketSm uint64 + AggregateUncBucketPcie uint64 + AggregateUncBucketMcu uint64 + AggregateUncBucketOther uint64 + BThresholdExceeded uint32 + Pad_cgo_0 [4]byte +} + +type PlatformInfo_v1 struct { + Version uint32 + IbGuid [16]uint8 + RackGuid [16]uint8 + ChassisPhysicalSlotNumber uint8 + ComputeSlotIndex uint8 + NodeIndex uint8 + PeerType uint8 + ModuleId uint8 + Pad_cgo_0 [3]byte +} + +type PlatformInfo_v2 struct { + Version uint32 + IbGuid [16]uint8 + ChassisSerialNumber [16]uint8 + SlotNumber uint8 + TrayIndex uint8 + HostId uint8 + PeerType uint8 + ModuleId uint8 + Pad_cgo_0 [3]byte +} + +type PlatformInfo struct { + Version uint32 + IbGuid [16]uint8 + ChassisSerialNumber [16]uint8 + SlotNumber uint8 + TrayIndex uint8 + HostId uint8 + PeerType uint8 + ModuleId uint8 + Pad_cgo_0 [3]byte +} + +type DeviceArchitecture uint32 + +type BusType uint32 + +type FanControlPolicy uint32 + +type PowerSource uint32 + +type GpuDynamicPstatesInfoUtilization struct { + BIsPresent uint32 + Percentage uint32 + IncThreshold uint32 + DecThreshold uint32 +} + +type GpuDynamicPstatesInfo struct { + Flags uint32 + Utilization [8]GpuDynamicPstatesInfoUtilization +} + +type PowerScopeType byte + +type PowerValue_v2 struct { + Version uint32 + PowerScope uint8 + PowerValueMw uint32 +} + type nvmlVgpuTypeId uint32 type nvmlVgpuInstance uint32 @@ -224,11 +463,32 @@ type VgpuPlacementList_v1 struct { PlacementIds *uint32 } +type VgpuPlacementList_v2 struct { + Version uint32 + PlacementSize uint32 + Count uint32 + PlacementIds *uint32 + Mode uint32 + Pad_cgo_0 [4]byte +} + type VgpuPlacementList struct { Version uint32 PlacementSize uint32 Count uint32 PlacementIds *uint32 + Mode uint32 + Pad_cgo_0 [4]byte +} + +type VgpuTypeBar1Info_v1 struct { + Version uint32 + Bar1Size uint64 +} + +type VgpuTypeBar1Info struct { + Version uint32 + Bar1Size uint64 } type VgpuInstanceUtilizationSample struct { @@ -306,6 +566,16 @@ type VgpuProcessesUtilizationInfo struct { VgpuProcUtilArray *VgpuProcessUtilizationInfo_v1 } +type VgpuRuntimeState_v1 struct { + Version uint32 + Size uint64 +} + +type VgpuRuntimeState struct { + Version uint32 + Size uint64 +} + type VgpuSchedulerParamsVgpuSchedDataWithARR struct { AvgFactor uint32 Timeslice uint32 @@ -390,41 +660,6 @@ type VgpuLicenseInfo struct { CurrentState uint32 } -type ProcessUtilizationSample struct { - Pid uint32 - TimeStamp uint64 - SmUtil uint32 - MemUtil uint32 - EncUtil uint32 - DecUtil uint32 -} - -type ProcessUtilizationInfo_v1 struct { - TimeStamp uint64 - Pid uint32 - SmUtil uint32 - MemUtil uint32 - EncUtil uint32 - DecUtil uint32 - JpgUtil uint32 - OfaUtil uint32 - Pad_cgo_0 [4]byte -} - -type ProcessesUtilizationInfo_v1 struct { - Version uint32 - ProcessSamplesCount uint32 - LastSeenTimeStamp uint64 - ProcUtilArray *ProcessUtilizationInfo_v1 -} - -type ProcessesUtilizationInfo struct { - Version uint32 - ProcessSamplesCount uint32 - LastSeenTimeStamp uint64 - ProcUtilArray *ProcessUtilizationInfo_v1 -} - type GridLicenseExpiry struct { Year uint32 Month uint16 @@ -451,58 +686,114 @@ type GridLicensableFeatures struct { GridLicensableFeatures [3]GridLicensableFeature } -type EccSramErrorStatus_v1 struct { - Version uint32 - AggregateUncParity uint64 - AggregateUncSecDed uint64 - AggregateCor uint64 - VolatileUncParity uint64 - VolatileUncSecDed uint64 - VolatileCor uint64 - AggregateUncBucketL2 uint64 - AggregateUncBucketSm uint64 - AggregateUncBucketPcie uint64 - AggregateUncBucketMcu uint64 - AggregateUncBucketOther uint64 - BThresholdExceeded uint32 - Pad_cgo_0 [4]byte +type VgpuTypeIdInfo_v1 struct { + Version uint32 + VgpuCount uint32 + VgpuTypeIds *uint32 } -type EccSramErrorStatus struct { - Version uint32 - AggregateUncParity uint64 - AggregateUncSecDed uint64 - AggregateCor uint64 - VolatileUncParity uint64 - VolatileUncSecDed uint64 - VolatileCor uint64 - AggregateUncBucketL2 uint64 - AggregateUncBucketSm uint64 - AggregateUncBucketPcie uint64 - AggregateUncBucketMcu uint64 - AggregateUncBucketOther uint64 - BThresholdExceeded uint32 - Pad_cgo_0 [4]byte +type VgpuTypeIdInfo struct { + Version uint32 + VgpuCount uint32 + VgpuTypeIds *uint32 } -type DeviceArchitecture uint32 +type VgpuTypeMaxInstance_v1 struct { + Version uint32 + VgpuTypeId uint32 + MaxInstancePerGI uint32 +} -type BusType uint32 +type VgpuTypeMaxInstance struct { + Version uint32 + VgpuTypeId uint32 + MaxInstancePerGI uint32 +} -type FanControlPolicy uint32 +type ActiveVgpuInstanceInfo_v1 struct { + Version uint32 + VgpuCount uint32 + VgpuInstances *uint32 +} -type PowerSource uint32 +type ActiveVgpuInstanceInfo struct { + Version uint32 + VgpuCount uint32 + VgpuInstances *uint32 +} -type GpuDynamicPstatesInfoUtilization struct { - BIsPresent uint32 - Percentage uint32 - IncThreshold uint32 - DecThreshold uint32 +type VgpuSchedulerState_v1 struct { + Version uint32 + EngineId uint32 + SchedulerPolicy uint32 + EnableARRMode uint32 + SchedulerParams [8]byte } -type GpuDynamicPstatesInfo struct { - Flags uint32 - Utilization [8]GpuDynamicPstatesInfoUtilization +type VgpuSchedulerState struct { + Version uint32 + EngineId uint32 + SchedulerPolicy uint32 + EnableARRMode uint32 + SchedulerParams [8]byte +} + +type VgpuSchedulerStateInfo_v1 struct { + Version uint32 + EngineId uint32 + SchedulerPolicy uint32 + ArrMode uint32 + SchedulerParams [8]byte +} + +type VgpuSchedulerStateInfo struct { + Version uint32 + EngineId uint32 + SchedulerPolicy uint32 + ArrMode uint32 + SchedulerParams [8]byte +} + +type VgpuSchedulerLogInfo_v1 struct { + Version uint32 + EngineId uint32 + SchedulerPolicy uint32 + ArrMode uint32 + SchedulerParams [8]byte + EntriesCount uint32 + LogEntries [200]VgpuSchedulerLogEntry +} + +type VgpuSchedulerLogInfo struct { + Version uint32 + EngineId uint32 + SchedulerPolicy uint32 + ArrMode uint32 + SchedulerParams [8]byte + EntriesCount uint32 + LogEntries [200]VgpuSchedulerLogEntry +} + +type VgpuCreatablePlacementInfo_v1 struct { + Version uint32 + VgpuTypeId uint32 + Count uint32 + PlacementIds *uint32 + PlacementSize uint32 + Pad_cgo_0 [4]byte +} + +type VgpuCreatablePlacementInfo struct { + Version uint32 + VgpuTypeId uint32 + Count uint32 + PlacementIds *uint32 + PlacementSize uint32 + Pad_cgo_0 [4]byte +} + +type NvLinkPowerThres struct { + LowPwrThreshold uint32 } type FieldValue struct { @@ -565,6 +856,66 @@ type nvmlEventData struct { ComputeInstanceId uint32 } +type SystemEventSet struct { + Handle *_Ctype_struct_nvmlSystemEventSet_st +} + +type SystemEventSetCreateRequest_v1 struct { + Version uint32 + Set SystemEventSet +} + +type SystemEventSetCreateRequest struct { + Version uint32 + Set SystemEventSet +} + +type SystemEventSetFreeRequest_v1 struct { + Version uint32 + Set SystemEventSet +} + +type SystemEventSetFreeRequest struct { + Version uint32 + Set SystemEventSet +} + +type SystemRegisterEventRequest_v1 struct { + Version uint32 + EventTypes uint64 + Set SystemEventSet +} + +type SystemRegisterEventRequest struct { + Version uint32 + EventTypes uint64 + Set SystemEventSet +} + +type SystemEventData_v1 struct { + EventType uint64 + GpuId uint32 + Pad_cgo_0 [4]byte +} + +type SystemEventSetWaitRequest_v1 struct { + Version uint32 + Timeoutms uint32 + Set SystemEventSet + Data *SystemEventData_v1 + DataSize uint32 + NumEvent uint32 +} + +type SystemEventSetWaitRequest struct { + Version uint32 + Timeoutms uint32 + Set SystemEventSet + Data *SystemEventData_v1 + DataSize uint32 + NumEvent uint32 +} + type AccountingStats struct { GpuUtilization uint32 MemoryUtilization uint32 @@ -703,16 +1054,70 @@ type GpuFabricInfoV struct { HealthMask uint32 } -type PowerScopeType byte +type SystemDriverBranchInfo_v1 struct { + Version uint32 + Branch [80]int8 +} -type PowerValue_v2 struct { - Version uint32 - PowerScope uint8 - PowerValueMw uint32 +type SystemDriverBranchInfo struct { + Version uint32 + Branch [80]int8 } type AffinityScope uint32 +type Temperature_v1 struct { + Version uint32 + SensorType uint32 + Temperature int32 +} + +type Temperature struct { + Version uint32 + SensorType uint32 + Temperature int32 +} + +type NvlinkSupportedBwModes_v1 struct { + Version uint32 + BwModes [23]uint8 + TotalBwModes uint8 +} + +type NvlinkSupportedBwModes struct { + Version uint32 + BwModes [23]uint8 + TotalBwModes uint8 +} + +type NvlinkGetBwMode_v1 struct { + Version uint32 + BIsBest uint32 + BwMode uint8 + Pad_cgo_0 [3]byte +} + +type NvlinkGetBwMode struct { + Version uint32 + BIsBest uint32 + BwMode uint8 + Pad_cgo_0 [3]byte +} + +type NvlinkSetBwMode_v1 struct { + Version uint32 + BSetBest uint32 + BwMode uint8 + Pad_cgo_0 [3]byte +} + +type NvlinkSetBwMode struct { + Version uint32 + BSetBest uint32 + BwMode uint8 + Pad_cgo_0 [3]byte +} + type VgpuVersion struct { MinVersion uint32 MaxVersion uint32 @@ -811,10 +1216,6 @@ type nvmlGpuInstanceInfo struct { Placement GpuInstancePlacement } -type nvmlGpuInstance struct { - Handle *_Ctype_struct_nvmlGpuInstance_st -} - type ComputeInstancePlacement struct { Start uint32 Size uint32 @@ -895,7 +1296,7 @@ type nvmlGpmMetricsGetType struct { NumMetrics uint32 Sample1 nvmlGpmSample Sample2 nvmlGpmSample - Metrics [98]GpmMetric + Metrics [210]GpmMetric } type GpmSupport struct { @@ -903,6 +1304,90 @@ type GpmSupport struct { IsSupportedDevice uint32 } -type NvLinkPowerThres struct { - LowPwrThreshold uint32 +type DeviceCapabilities_v1 struct { + Version uint32 + CapMask uint32 +} + +type DeviceCapabilities struct { + Version uint32 + CapMask uint32 +} + +type Mask255 struct { + Mask [8]uint32 +} + +type WorkloadPowerProfileInfo_v1 struct { + Version uint32 + ProfileId uint32 + Priority uint32 + ConflictingMask Mask255 +} + +type WorkloadPowerProfileInfo struct { + Version uint32 + ProfileId uint32 + Priority uint32 + ConflictingMask Mask255 +} + +type WorkloadPowerProfileProfilesInfo_v1 struct { + Version uint32 + PerfProfilesMask Mask255 + PerfProfile [255]WorkloadPowerProfileInfo +} + +type WorkloadPowerProfileProfilesInfo struct { + Version uint32 + PerfProfilesMask Mask255 + PerfProfile [255]WorkloadPowerProfileInfo +} + +type WorkloadPowerProfileCurrentProfiles_v1 struct { + Version uint32 + PerfProfilesMask Mask255 + RequestedProfilesMask Mask255 + EnforcedProfilesMask Mask255 +} + +type WorkloadPowerProfileCurrentProfiles struct { + Version uint32 + PerfProfilesMask Mask255 + RequestedProfilesMask Mask255 + EnforcedProfilesMask Mask255 +} + +type WorkloadPowerProfileRequestedProfiles_v1 struct { + Version uint32 + RequestedProfilesMask Mask255 +} + +type WorkloadPowerProfileRequestedProfiles struct { + Version uint32 + RequestedProfilesMask Mask255 +} + +type PowerSmoothingProfile_v1 struct { + Version uint32 + ProfileId uint32 + ParamId uint32 + Value float64 +} + +type PowerSmoothingProfile struct { + Version uint32 + ProfileId uint32 + ParamId uint32 + Value float64 +} + +type PowerSmoothingState_v1 struct { + Version uint32 + State uint32 +} + +type PowerSmoothingState struct { + Version uint32 + State uint32 } diff --git a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/vgpu.go b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/vgpu.go index da4952422..b1e0fa7c6 100644 --- a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/vgpu.go +++ b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/vgpu.go @@ -478,3 +478,32 @@ func (l *library) GetVgpuDriverCapabilities(capability VgpuDriverCapability) (bo ret := nvmlGetVgpuDriverCapabilities(capability, &capResult) return (capResult != 0), ret } + +// nvml.VgpuTypeGetBAR1Info() +func (l *library) VgpuTypeGetBAR1Info(vgpuTypeId VgpuTypeId) (VgpuTypeBar1Info, Return) { + return vgpuTypeId.GetBAR1Info() +} + +func (vgpuTypeId nvmlVgpuTypeId) GetBAR1Info() (VgpuTypeBar1Info, Return) { + var bar1Info VgpuTypeBar1Info + bar1Info.Version = STRUCT_VERSION(bar1Info, 1) + ret := nvmlVgpuTypeGetBAR1Info(vgpuTypeId, &bar1Info) + return bar1Info, ret +} + +// nvml.VgpuInstanceGetRuntimeStateSize() +func (l *library) VgpuInstanceGetRuntimeStateSize(vgpuInstance VgpuInstance) (VgpuRuntimeState, Return) { + return vgpuInstance.GetRuntimeStateSize() +} + +func (vgpuInstance nvmlVgpuInstance) GetRuntimeStateSize() (VgpuRuntimeState, Return) { + var pState VgpuRuntimeState + pState.Version = STRUCT_VERSION(pState, 1) + ret := nvmlVgpuInstanceGetRuntimeStateSize(vgpuInstance, &pState) + return pState, ret +} + +// nvml.VgpuTypeGetMaxInstancesPerGpuInstance() +func (l *library) VgpuTypeGetMaxInstancesPerGpuInstance(maxInstance *VgpuTypeMaxInstance) Return { + return nvmlVgpuTypeGetMaxInstancesPerGpuInstance(maxInstance) +} diff --git a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/zz_generated.api.go b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/zz_generated.api.go index c1ecb2d0e..bfe4d0790 100644 --- a/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/zz_generated.api.go +++ b/vendor/github.com/NVIDIA/go-nvml/pkg/nvml/zz_generated.api.go @@ -20,327 +20,372 @@ package nvml // The variables below represent package level methods from the library type. var ( - ComputeInstanceDestroy = libnvml.ComputeInstanceDestroy - ComputeInstanceGetInfo = libnvml.ComputeInstanceGetInfo - DeviceClearAccountingPids = libnvml.DeviceClearAccountingPids - DeviceClearCpuAffinity = libnvml.DeviceClearCpuAffinity - DeviceClearEccErrorCounts = libnvml.DeviceClearEccErrorCounts - DeviceClearFieldValues = libnvml.DeviceClearFieldValues - DeviceCreateGpuInstance = libnvml.DeviceCreateGpuInstance - DeviceCreateGpuInstanceWithPlacement = libnvml.DeviceCreateGpuInstanceWithPlacement - DeviceDiscoverGpus = libnvml.DeviceDiscoverGpus - DeviceFreezeNvLinkUtilizationCounter = libnvml.DeviceFreezeNvLinkUtilizationCounter - DeviceGetAPIRestriction = libnvml.DeviceGetAPIRestriction - DeviceGetAccountingBufferSize = libnvml.DeviceGetAccountingBufferSize - DeviceGetAccountingMode = libnvml.DeviceGetAccountingMode - DeviceGetAccountingPids = libnvml.DeviceGetAccountingPids - DeviceGetAccountingStats = libnvml.DeviceGetAccountingStats - DeviceGetActiveVgpus = libnvml.DeviceGetActiveVgpus - DeviceGetAdaptiveClockInfoStatus = libnvml.DeviceGetAdaptiveClockInfoStatus - DeviceGetApplicationsClock = libnvml.DeviceGetApplicationsClock - DeviceGetArchitecture = libnvml.DeviceGetArchitecture - DeviceGetAttributes = libnvml.DeviceGetAttributes - DeviceGetAutoBoostedClocksEnabled = libnvml.DeviceGetAutoBoostedClocksEnabled - DeviceGetBAR1MemoryInfo = libnvml.DeviceGetBAR1MemoryInfo - DeviceGetBoardId = libnvml.DeviceGetBoardId - DeviceGetBoardPartNumber = libnvml.DeviceGetBoardPartNumber - DeviceGetBrand = libnvml.DeviceGetBrand - DeviceGetBridgeChipInfo = libnvml.DeviceGetBridgeChipInfo - DeviceGetBusType = libnvml.DeviceGetBusType - DeviceGetC2cModeInfoV = libnvml.DeviceGetC2cModeInfoV - DeviceGetClkMonStatus = libnvml.DeviceGetClkMonStatus - DeviceGetClock = libnvml.DeviceGetClock - DeviceGetClockInfo = libnvml.DeviceGetClockInfo - DeviceGetComputeInstanceId = libnvml.DeviceGetComputeInstanceId - DeviceGetComputeMode = libnvml.DeviceGetComputeMode - DeviceGetComputeRunningProcesses = libnvml.DeviceGetComputeRunningProcesses - DeviceGetConfComputeGpuAttestationReport = libnvml.DeviceGetConfComputeGpuAttestationReport - DeviceGetConfComputeGpuCertificate = libnvml.DeviceGetConfComputeGpuCertificate - DeviceGetConfComputeMemSizeInfo = libnvml.DeviceGetConfComputeMemSizeInfo - DeviceGetConfComputeProtectedMemoryUsage = libnvml.DeviceGetConfComputeProtectedMemoryUsage - DeviceGetCount = libnvml.DeviceGetCount - DeviceGetCpuAffinity = libnvml.DeviceGetCpuAffinity - DeviceGetCpuAffinityWithinScope = libnvml.DeviceGetCpuAffinityWithinScope - DeviceGetCreatableVgpus = libnvml.DeviceGetCreatableVgpus - DeviceGetCudaComputeCapability = libnvml.DeviceGetCudaComputeCapability - DeviceGetCurrPcieLinkGeneration = libnvml.DeviceGetCurrPcieLinkGeneration - DeviceGetCurrPcieLinkWidth = libnvml.DeviceGetCurrPcieLinkWidth - DeviceGetCurrentClocksEventReasons = libnvml.DeviceGetCurrentClocksEventReasons - DeviceGetCurrentClocksThrottleReasons = libnvml.DeviceGetCurrentClocksThrottleReasons - DeviceGetDecoderUtilization = libnvml.DeviceGetDecoderUtilization - DeviceGetDefaultApplicationsClock = libnvml.DeviceGetDefaultApplicationsClock - DeviceGetDefaultEccMode = libnvml.DeviceGetDefaultEccMode - DeviceGetDetailedEccErrors = libnvml.DeviceGetDetailedEccErrors - DeviceGetDeviceHandleFromMigDeviceHandle = libnvml.DeviceGetDeviceHandleFromMigDeviceHandle - DeviceGetDisplayActive = libnvml.DeviceGetDisplayActive - DeviceGetDisplayMode = libnvml.DeviceGetDisplayMode - DeviceGetDriverModel = libnvml.DeviceGetDriverModel - DeviceGetDynamicPstatesInfo = libnvml.DeviceGetDynamicPstatesInfo - DeviceGetEccMode = libnvml.DeviceGetEccMode - DeviceGetEncoderCapacity = libnvml.DeviceGetEncoderCapacity - DeviceGetEncoderSessions = libnvml.DeviceGetEncoderSessions - DeviceGetEncoderStats = libnvml.DeviceGetEncoderStats - DeviceGetEncoderUtilization = libnvml.DeviceGetEncoderUtilization - DeviceGetEnforcedPowerLimit = libnvml.DeviceGetEnforcedPowerLimit - DeviceGetFBCSessions = libnvml.DeviceGetFBCSessions - DeviceGetFBCStats = libnvml.DeviceGetFBCStats - DeviceGetFanControlPolicy_v2 = libnvml.DeviceGetFanControlPolicy_v2 - DeviceGetFanSpeed = libnvml.DeviceGetFanSpeed - DeviceGetFanSpeed_v2 = libnvml.DeviceGetFanSpeed_v2 - DeviceGetFieldValues = libnvml.DeviceGetFieldValues - DeviceGetGpcClkMinMaxVfOffset = libnvml.DeviceGetGpcClkMinMaxVfOffset - DeviceGetGpcClkVfOffset = libnvml.DeviceGetGpcClkVfOffset - DeviceGetGpuFabricInfo = libnvml.DeviceGetGpuFabricInfo - DeviceGetGpuFabricInfoV = libnvml.DeviceGetGpuFabricInfoV - DeviceGetGpuInstanceById = libnvml.DeviceGetGpuInstanceById - DeviceGetGpuInstanceId = libnvml.DeviceGetGpuInstanceId - DeviceGetGpuInstancePossiblePlacements = libnvml.DeviceGetGpuInstancePossiblePlacements - DeviceGetGpuInstanceProfileInfo = libnvml.DeviceGetGpuInstanceProfileInfo - DeviceGetGpuInstanceProfileInfoV = libnvml.DeviceGetGpuInstanceProfileInfoV - DeviceGetGpuInstanceRemainingCapacity = libnvml.DeviceGetGpuInstanceRemainingCapacity - DeviceGetGpuInstances = libnvml.DeviceGetGpuInstances - DeviceGetGpuMaxPcieLinkGeneration = libnvml.DeviceGetGpuMaxPcieLinkGeneration - DeviceGetGpuOperationMode = libnvml.DeviceGetGpuOperationMode - DeviceGetGraphicsRunningProcesses = libnvml.DeviceGetGraphicsRunningProcesses - DeviceGetGridLicensableFeatures = libnvml.DeviceGetGridLicensableFeatures - DeviceGetGspFirmwareMode = libnvml.DeviceGetGspFirmwareMode - DeviceGetGspFirmwareVersion = libnvml.DeviceGetGspFirmwareVersion - DeviceGetHandleByIndex = libnvml.DeviceGetHandleByIndex - DeviceGetHandleByPciBusId = libnvml.DeviceGetHandleByPciBusId - DeviceGetHandleBySerial = libnvml.DeviceGetHandleBySerial - DeviceGetHandleByUUID = libnvml.DeviceGetHandleByUUID - DeviceGetHostVgpuMode = libnvml.DeviceGetHostVgpuMode - DeviceGetIndex = libnvml.DeviceGetIndex - DeviceGetInforomConfigurationChecksum = libnvml.DeviceGetInforomConfigurationChecksum - DeviceGetInforomImageVersion = libnvml.DeviceGetInforomImageVersion - DeviceGetInforomVersion = libnvml.DeviceGetInforomVersion - DeviceGetIrqNum = libnvml.DeviceGetIrqNum - DeviceGetJpgUtilization = libnvml.DeviceGetJpgUtilization - DeviceGetLastBBXFlushTime = libnvml.DeviceGetLastBBXFlushTime - DeviceGetMPSComputeRunningProcesses = libnvml.DeviceGetMPSComputeRunningProcesses - DeviceGetMaxClockInfo = libnvml.DeviceGetMaxClockInfo - DeviceGetMaxCustomerBoostClock = libnvml.DeviceGetMaxCustomerBoostClock - DeviceGetMaxMigDeviceCount = libnvml.DeviceGetMaxMigDeviceCount - DeviceGetMaxPcieLinkGeneration = libnvml.DeviceGetMaxPcieLinkGeneration - DeviceGetMaxPcieLinkWidth = libnvml.DeviceGetMaxPcieLinkWidth - DeviceGetMemClkMinMaxVfOffset = libnvml.DeviceGetMemClkMinMaxVfOffset - DeviceGetMemClkVfOffset = libnvml.DeviceGetMemClkVfOffset - DeviceGetMemoryAffinity = libnvml.DeviceGetMemoryAffinity - DeviceGetMemoryBusWidth = libnvml.DeviceGetMemoryBusWidth - DeviceGetMemoryErrorCounter = libnvml.DeviceGetMemoryErrorCounter - DeviceGetMemoryInfo = libnvml.DeviceGetMemoryInfo - DeviceGetMemoryInfo_v2 = libnvml.DeviceGetMemoryInfo_v2 - DeviceGetMigDeviceHandleByIndex = libnvml.DeviceGetMigDeviceHandleByIndex - DeviceGetMigMode = libnvml.DeviceGetMigMode - DeviceGetMinMaxClockOfPState = libnvml.DeviceGetMinMaxClockOfPState - DeviceGetMinMaxFanSpeed = libnvml.DeviceGetMinMaxFanSpeed - DeviceGetMinorNumber = libnvml.DeviceGetMinorNumber - DeviceGetModuleId = libnvml.DeviceGetModuleId - DeviceGetMultiGpuBoard = libnvml.DeviceGetMultiGpuBoard - DeviceGetName = libnvml.DeviceGetName - DeviceGetNumFans = libnvml.DeviceGetNumFans - DeviceGetNumGpuCores = libnvml.DeviceGetNumGpuCores - DeviceGetNumaNodeId = libnvml.DeviceGetNumaNodeId - DeviceGetNvLinkCapability = libnvml.DeviceGetNvLinkCapability - DeviceGetNvLinkErrorCounter = libnvml.DeviceGetNvLinkErrorCounter - DeviceGetNvLinkRemoteDeviceType = libnvml.DeviceGetNvLinkRemoteDeviceType - DeviceGetNvLinkRemotePciInfo = libnvml.DeviceGetNvLinkRemotePciInfo - DeviceGetNvLinkState = libnvml.DeviceGetNvLinkState - DeviceGetNvLinkUtilizationControl = libnvml.DeviceGetNvLinkUtilizationControl - DeviceGetNvLinkUtilizationCounter = libnvml.DeviceGetNvLinkUtilizationCounter - DeviceGetNvLinkVersion = libnvml.DeviceGetNvLinkVersion - DeviceGetOfaUtilization = libnvml.DeviceGetOfaUtilization - DeviceGetP2PStatus = libnvml.DeviceGetP2PStatus - DeviceGetPciInfo = libnvml.DeviceGetPciInfo - DeviceGetPciInfoExt = libnvml.DeviceGetPciInfoExt - DeviceGetPcieLinkMaxSpeed = libnvml.DeviceGetPcieLinkMaxSpeed - DeviceGetPcieReplayCounter = libnvml.DeviceGetPcieReplayCounter - DeviceGetPcieSpeed = libnvml.DeviceGetPcieSpeed - DeviceGetPcieThroughput = libnvml.DeviceGetPcieThroughput - DeviceGetPerformanceState = libnvml.DeviceGetPerformanceState - DeviceGetPersistenceMode = libnvml.DeviceGetPersistenceMode - DeviceGetPgpuMetadataString = libnvml.DeviceGetPgpuMetadataString - DeviceGetPowerManagementDefaultLimit = libnvml.DeviceGetPowerManagementDefaultLimit - DeviceGetPowerManagementLimit = libnvml.DeviceGetPowerManagementLimit - DeviceGetPowerManagementLimitConstraints = libnvml.DeviceGetPowerManagementLimitConstraints - DeviceGetPowerManagementMode = libnvml.DeviceGetPowerManagementMode - DeviceGetPowerSource = libnvml.DeviceGetPowerSource - DeviceGetPowerState = libnvml.DeviceGetPowerState - DeviceGetPowerUsage = libnvml.DeviceGetPowerUsage - DeviceGetProcessUtilization = libnvml.DeviceGetProcessUtilization - DeviceGetProcessesUtilizationInfo = libnvml.DeviceGetProcessesUtilizationInfo - DeviceGetRemappedRows = libnvml.DeviceGetRemappedRows - DeviceGetRetiredPages = libnvml.DeviceGetRetiredPages - DeviceGetRetiredPagesPendingStatus = libnvml.DeviceGetRetiredPagesPendingStatus - DeviceGetRetiredPages_v2 = libnvml.DeviceGetRetiredPages_v2 - DeviceGetRowRemapperHistogram = libnvml.DeviceGetRowRemapperHistogram - DeviceGetRunningProcessDetailList = libnvml.DeviceGetRunningProcessDetailList - DeviceGetSamples = libnvml.DeviceGetSamples - DeviceGetSerial = libnvml.DeviceGetSerial - DeviceGetSramEccErrorStatus = libnvml.DeviceGetSramEccErrorStatus - DeviceGetSupportedClocksEventReasons = libnvml.DeviceGetSupportedClocksEventReasons - DeviceGetSupportedClocksThrottleReasons = libnvml.DeviceGetSupportedClocksThrottleReasons - DeviceGetSupportedEventTypes = libnvml.DeviceGetSupportedEventTypes - DeviceGetSupportedGraphicsClocks = libnvml.DeviceGetSupportedGraphicsClocks - DeviceGetSupportedMemoryClocks = libnvml.DeviceGetSupportedMemoryClocks - DeviceGetSupportedPerformanceStates = libnvml.DeviceGetSupportedPerformanceStates - DeviceGetSupportedVgpus = libnvml.DeviceGetSupportedVgpus - DeviceGetTargetFanSpeed = libnvml.DeviceGetTargetFanSpeed - DeviceGetTemperature = libnvml.DeviceGetTemperature - DeviceGetTemperatureThreshold = libnvml.DeviceGetTemperatureThreshold - DeviceGetThermalSettings = libnvml.DeviceGetThermalSettings - DeviceGetTopologyCommonAncestor = libnvml.DeviceGetTopologyCommonAncestor - DeviceGetTopologyNearestGpus = libnvml.DeviceGetTopologyNearestGpus - DeviceGetTotalEccErrors = libnvml.DeviceGetTotalEccErrors - DeviceGetTotalEnergyConsumption = libnvml.DeviceGetTotalEnergyConsumption - DeviceGetUUID = libnvml.DeviceGetUUID - DeviceGetUtilizationRates = libnvml.DeviceGetUtilizationRates - DeviceGetVbiosVersion = libnvml.DeviceGetVbiosVersion - DeviceGetVgpuCapabilities = libnvml.DeviceGetVgpuCapabilities - DeviceGetVgpuHeterogeneousMode = libnvml.DeviceGetVgpuHeterogeneousMode - DeviceGetVgpuInstancesUtilizationInfo = libnvml.DeviceGetVgpuInstancesUtilizationInfo - DeviceGetVgpuMetadata = libnvml.DeviceGetVgpuMetadata - DeviceGetVgpuProcessUtilization = libnvml.DeviceGetVgpuProcessUtilization - DeviceGetVgpuProcessesUtilizationInfo = libnvml.DeviceGetVgpuProcessesUtilizationInfo - DeviceGetVgpuSchedulerCapabilities = libnvml.DeviceGetVgpuSchedulerCapabilities - DeviceGetVgpuSchedulerLog = libnvml.DeviceGetVgpuSchedulerLog - DeviceGetVgpuSchedulerState = libnvml.DeviceGetVgpuSchedulerState - DeviceGetVgpuTypeCreatablePlacements = libnvml.DeviceGetVgpuTypeCreatablePlacements - DeviceGetVgpuTypeSupportedPlacements = libnvml.DeviceGetVgpuTypeSupportedPlacements - DeviceGetVgpuUtilization = libnvml.DeviceGetVgpuUtilization - DeviceGetViolationStatus = libnvml.DeviceGetViolationStatus - DeviceGetVirtualizationMode = libnvml.DeviceGetVirtualizationMode - DeviceIsMigDeviceHandle = libnvml.DeviceIsMigDeviceHandle - DeviceModifyDrainState = libnvml.DeviceModifyDrainState - DeviceOnSameBoard = libnvml.DeviceOnSameBoard - DeviceQueryDrainState = libnvml.DeviceQueryDrainState - DeviceRegisterEvents = libnvml.DeviceRegisterEvents - DeviceRemoveGpu = libnvml.DeviceRemoveGpu - DeviceRemoveGpu_v2 = libnvml.DeviceRemoveGpu_v2 - DeviceResetApplicationsClocks = libnvml.DeviceResetApplicationsClocks - DeviceResetGpuLockedClocks = libnvml.DeviceResetGpuLockedClocks - DeviceResetMemoryLockedClocks = libnvml.DeviceResetMemoryLockedClocks - DeviceResetNvLinkErrorCounters = libnvml.DeviceResetNvLinkErrorCounters - DeviceResetNvLinkUtilizationCounter = libnvml.DeviceResetNvLinkUtilizationCounter - DeviceSetAPIRestriction = libnvml.DeviceSetAPIRestriction - DeviceSetAccountingMode = libnvml.DeviceSetAccountingMode - DeviceSetApplicationsClocks = libnvml.DeviceSetApplicationsClocks - DeviceSetAutoBoostedClocksEnabled = libnvml.DeviceSetAutoBoostedClocksEnabled - DeviceSetComputeMode = libnvml.DeviceSetComputeMode - DeviceSetConfComputeUnprotectedMemSize = libnvml.DeviceSetConfComputeUnprotectedMemSize - DeviceSetCpuAffinity = libnvml.DeviceSetCpuAffinity - DeviceSetDefaultAutoBoostedClocksEnabled = libnvml.DeviceSetDefaultAutoBoostedClocksEnabled - DeviceSetDefaultFanSpeed_v2 = libnvml.DeviceSetDefaultFanSpeed_v2 - DeviceSetDriverModel = libnvml.DeviceSetDriverModel - DeviceSetEccMode = libnvml.DeviceSetEccMode - DeviceSetFanControlPolicy = libnvml.DeviceSetFanControlPolicy - DeviceSetFanSpeed_v2 = libnvml.DeviceSetFanSpeed_v2 - DeviceSetGpcClkVfOffset = libnvml.DeviceSetGpcClkVfOffset - DeviceSetGpuLockedClocks = libnvml.DeviceSetGpuLockedClocks - DeviceSetGpuOperationMode = libnvml.DeviceSetGpuOperationMode - DeviceSetMemClkVfOffset = libnvml.DeviceSetMemClkVfOffset - DeviceSetMemoryLockedClocks = libnvml.DeviceSetMemoryLockedClocks - DeviceSetMigMode = libnvml.DeviceSetMigMode - DeviceSetNvLinkDeviceLowPowerThreshold = libnvml.DeviceSetNvLinkDeviceLowPowerThreshold - DeviceSetNvLinkUtilizationControl = libnvml.DeviceSetNvLinkUtilizationControl - DeviceSetPersistenceMode = libnvml.DeviceSetPersistenceMode - DeviceSetPowerManagementLimit = libnvml.DeviceSetPowerManagementLimit - DeviceSetPowerManagementLimit_v2 = libnvml.DeviceSetPowerManagementLimit_v2 - DeviceSetTemperatureThreshold = libnvml.DeviceSetTemperatureThreshold - DeviceSetVgpuCapabilities = libnvml.DeviceSetVgpuCapabilities - DeviceSetVgpuHeterogeneousMode = libnvml.DeviceSetVgpuHeterogeneousMode - DeviceSetVgpuSchedulerState = libnvml.DeviceSetVgpuSchedulerState - DeviceSetVirtualizationMode = libnvml.DeviceSetVirtualizationMode - DeviceValidateInforom = libnvml.DeviceValidateInforom - ErrorString = libnvml.ErrorString - EventSetCreate = libnvml.EventSetCreate - EventSetFree = libnvml.EventSetFree - EventSetWait = libnvml.EventSetWait - Extensions = libnvml.Extensions - GetExcludedDeviceCount = libnvml.GetExcludedDeviceCount - GetExcludedDeviceInfoByIndex = libnvml.GetExcludedDeviceInfoByIndex - GetVgpuCompatibility = libnvml.GetVgpuCompatibility - GetVgpuDriverCapabilities = libnvml.GetVgpuDriverCapabilities - GetVgpuVersion = libnvml.GetVgpuVersion - GpmMetricsGet = libnvml.GpmMetricsGet - GpmMetricsGetV = libnvml.GpmMetricsGetV - GpmMigSampleGet = libnvml.GpmMigSampleGet - GpmQueryDeviceSupport = libnvml.GpmQueryDeviceSupport - GpmQueryDeviceSupportV = libnvml.GpmQueryDeviceSupportV - GpmQueryIfStreamingEnabled = libnvml.GpmQueryIfStreamingEnabled - GpmSampleAlloc = libnvml.GpmSampleAlloc - GpmSampleFree = libnvml.GpmSampleFree - GpmSampleGet = libnvml.GpmSampleGet - GpmSetStreamingEnabled = libnvml.GpmSetStreamingEnabled - GpuInstanceCreateComputeInstance = libnvml.GpuInstanceCreateComputeInstance - GpuInstanceCreateComputeInstanceWithPlacement = libnvml.GpuInstanceCreateComputeInstanceWithPlacement - GpuInstanceDestroy = libnvml.GpuInstanceDestroy - GpuInstanceGetComputeInstanceById = libnvml.GpuInstanceGetComputeInstanceById - GpuInstanceGetComputeInstancePossiblePlacements = libnvml.GpuInstanceGetComputeInstancePossiblePlacements - GpuInstanceGetComputeInstanceProfileInfo = libnvml.GpuInstanceGetComputeInstanceProfileInfo - GpuInstanceGetComputeInstanceProfileInfoV = libnvml.GpuInstanceGetComputeInstanceProfileInfoV - GpuInstanceGetComputeInstanceRemainingCapacity = libnvml.GpuInstanceGetComputeInstanceRemainingCapacity - GpuInstanceGetComputeInstances = libnvml.GpuInstanceGetComputeInstances - GpuInstanceGetInfo = libnvml.GpuInstanceGetInfo - Init = libnvml.Init - InitWithFlags = libnvml.InitWithFlags - SetVgpuVersion = libnvml.SetVgpuVersion - Shutdown = libnvml.Shutdown - SystemGetConfComputeCapabilities = libnvml.SystemGetConfComputeCapabilities - SystemGetConfComputeKeyRotationThresholdInfo = libnvml.SystemGetConfComputeKeyRotationThresholdInfo - SystemGetConfComputeSettings = libnvml.SystemGetConfComputeSettings - SystemGetCudaDriverVersion = libnvml.SystemGetCudaDriverVersion - SystemGetCudaDriverVersion_v2 = libnvml.SystemGetCudaDriverVersion_v2 - SystemGetDriverVersion = libnvml.SystemGetDriverVersion - SystemGetHicVersion = libnvml.SystemGetHicVersion - SystemGetNVMLVersion = libnvml.SystemGetNVMLVersion - SystemGetProcessName = libnvml.SystemGetProcessName - SystemGetTopologyGpuSet = libnvml.SystemGetTopologyGpuSet - SystemSetConfComputeKeyRotationThresholdInfo = libnvml.SystemSetConfComputeKeyRotationThresholdInfo - UnitGetCount = libnvml.UnitGetCount - UnitGetDevices = libnvml.UnitGetDevices - UnitGetFanSpeedInfo = libnvml.UnitGetFanSpeedInfo - UnitGetHandleByIndex = libnvml.UnitGetHandleByIndex - UnitGetLedState = libnvml.UnitGetLedState - UnitGetPsuInfo = libnvml.UnitGetPsuInfo - UnitGetTemperature = libnvml.UnitGetTemperature - UnitGetUnitInfo = libnvml.UnitGetUnitInfo - UnitSetLedState = libnvml.UnitSetLedState - VgpuInstanceClearAccountingPids = libnvml.VgpuInstanceClearAccountingPids - VgpuInstanceGetAccountingMode = libnvml.VgpuInstanceGetAccountingMode - VgpuInstanceGetAccountingPids = libnvml.VgpuInstanceGetAccountingPids - VgpuInstanceGetAccountingStats = libnvml.VgpuInstanceGetAccountingStats - VgpuInstanceGetEccMode = libnvml.VgpuInstanceGetEccMode - VgpuInstanceGetEncoderCapacity = libnvml.VgpuInstanceGetEncoderCapacity - VgpuInstanceGetEncoderSessions = libnvml.VgpuInstanceGetEncoderSessions - VgpuInstanceGetEncoderStats = libnvml.VgpuInstanceGetEncoderStats - VgpuInstanceGetFBCSessions = libnvml.VgpuInstanceGetFBCSessions - VgpuInstanceGetFBCStats = libnvml.VgpuInstanceGetFBCStats - VgpuInstanceGetFbUsage = libnvml.VgpuInstanceGetFbUsage - VgpuInstanceGetFrameRateLimit = libnvml.VgpuInstanceGetFrameRateLimit - VgpuInstanceGetGpuInstanceId = libnvml.VgpuInstanceGetGpuInstanceId - VgpuInstanceGetGpuPciId = libnvml.VgpuInstanceGetGpuPciId - VgpuInstanceGetLicenseInfo = libnvml.VgpuInstanceGetLicenseInfo - VgpuInstanceGetLicenseStatus = libnvml.VgpuInstanceGetLicenseStatus - VgpuInstanceGetMdevUUID = libnvml.VgpuInstanceGetMdevUUID - VgpuInstanceGetMetadata = libnvml.VgpuInstanceGetMetadata - VgpuInstanceGetType = libnvml.VgpuInstanceGetType - VgpuInstanceGetUUID = libnvml.VgpuInstanceGetUUID - VgpuInstanceGetVmDriverVersion = libnvml.VgpuInstanceGetVmDriverVersion - VgpuInstanceGetVmID = libnvml.VgpuInstanceGetVmID - VgpuInstanceSetEncoderCapacity = libnvml.VgpuInstanceSetEncoderCapacity - VgpuTypeGetCapabilities = libnvml.VgpuTypeGetCapabilities - VgpuTypeGetClass = libnvml.VgpuTypeGetClass - VgpuTypeGetDeviceID = libnvml.VgpuTypeGetDeviceID - VgpuTypeGetFrameRateLimit = libnvml.VgpuTypeGetFrameRateLimit - VgpuTypeGetFramebufferSize = libnvml.VgpuTypeGetFramebufferSize - VgpuTypeGetGpuInstanceProfileId = libnvml.VgpuTypeGetGpuInstanceProfileId - VgpuTypeGetLicense = libnvml.VgpuTypeGetLicense - VgpuTypeGetMaxInstances = libnvml.VgpuTypeGetMaxInstances - VgpuTypeGetMaxInstancesPerVm = libnvml.VgpuTypeGetMaxInstancesPerVm - VgpuTypeGetName = libnvml.VgpuTypeGetName - VgpuTypeGetNumDisplayHeads = libnvml.VgpuTypeGetNumDisplayHeads - VgpuTypeGetResolution = libnvml.VgpuTypeGetResolution + ComputeInstanceDestroy = libnvml.ComputeInstanceDestroy + ComputeInstanceGetInfo = libnvml.ComputeInstanceGetInfo + DeviceClearAccountingPids = libnvml.DeviceClearAccountingPids + DeviceClearCpuAffinity = libnvml.DeviceClearCpuAffinity + DeviceClearEccErrorCounts = libnvml.DeviceClearEccErrorCounts + DeviceClearFieldValues = libnvml.DeviceClearFieldValues + DeviceCreateGpuInstance = libnvml.DeviceCreateGpuInstance + DeviceCreateGpuInstanceWithPlacement = libnvml.DeviceCreateGpuInstanceWithPlacement + DeviceDiscoverGpus = libnvml.DeviceDiscoverGpus + DeviceFreezeNvLinkUtilizationCounter = libnvml.DeviceFreezeNvLinkUtilizationCounter + DeviceGetAPIRestriction = libnvml.DeviceGetAPIRestriction + DeviceGetAccountingBufferSize = libnvml.DeviceGetAccountingBufferSize + DeviceGetAccountingMode = libnvml.DeviceGetAccountingMode + DeviceGetAccountingPids = libnvml.DeviceGetAccountingPids + DeviceGetAccountingStats = libnvml.DeviceGetAccountingStats + DeviceGetActiveVgpus = libnvml.DeviceGetActiveVgpus + DeviceGetAdaptiveClockInfoStatus = libnvml.DeviceGetAdaptiveClockInfoStatus + DeviceGetApplicationsClock = libnvml.DeviceGetApplicationsClock + DeviceGetArchitecture = libnvml.DeviceGetArchitecture + DeviceGetAttributes = libnvml.DeviceGetAttributes + DeviceGetAutoBoostedClocksEnabled = libnvml.DeviceGetAutoBoostedClocksEnabled + DeviceGetBAR1MemoryInfo = libnvml.DeviceGetBAR1MemoryInfo + DeviceGetBoardId = libnvml.DeviceGetBoardId + DeviceGetBoardPartNumber = libnvml.DeviceGetBoardPartNumber + DeviceGetBrand = libnvml.DeviceGetBrand + DeviceGetBridgeChipInfo = libnvml.DeviceGetBridgeChipInfo + DeviceGetBusType = libnvml.DeviceGetBusType + DeviceGetC2cModeInfoV = libnvml.DeviceGetC2cModeInfoV + DeviceGetCapabilities = libnvml.DeviceGetCapabilities + DeviceGetClkMonStatus = libnvml.DeviceGetClkMonStatus + DeviceGetClock = libnvml.DeviceGetClock + DeviceGetClockInfo = libnvml.DeviceGetClockInfo + DeviceGetClockOffsets = libnvml.DeviceGetClockOffsets + DeviceGetComputeInstanceId = libnvml.DeviceGetComputeInstanceId + DeviceGetComputeMode = libnvml.DeviceGetComputeMode + DeviceGetComputeRunningProcesses = libnvml.DeviceGetComputeRunningProcesses + DeviceGetConfComputeGpuAttestationReport = libnvml.DeviceGetConfComputeGpuAttestationReport + DeviceGetConfComputeGpuCertificate = libnvml.DeviceGetConfComputeGpuCertificate + DeviceGetConfComputeMemSizeInfo = libnvml.DeviceGetConfComputeMemSizeInfo + DeviceGetConfComputeProtectedMemoryUsage = libnvml.DeviceGetConfComputeProtectedMemoryUsage + DeviceGetCoolerInfo = libnvml.DeviceGetCoolerInfo + DeviceGetCount = libnvml.DeviceGetCount + DeviceGetCpuAffinity = libnvml.DeviceGetCpuAffinity + DeviceGetCpuAffinityWithinScope = libnvml.DeviceGetCpuAffinityWithinScope + DeviceGetCreatableVgpus = libnvml.DeviceGetCreatableVgpus + DeviceGetCudaComputeCapability = libnvml.DeviceGetCudaComputeCapability + DeviceGetCurrPcieLinkGeneration = libnvml.DeviceGetCurrPcieLinkGeneration + DeviceGetCurrPcieLinkWidth = libnvml.DeviceGetCurrPcieLinkWidth + DeviceGetCurrentClockFreqs = libnvml.DeviceGetCurrentClockFreqs + DeviceGetCurrentClocksEventReasons = libnvml.DeviceGetCurrentClocksEventReasons + DeviceGetCurrentClocksThrottleReasons = libnvml.DeviceGetCurrentClocksThrottleReasons + DeviceGetDecoderUtilization = libnvml.DeviceGetDecoderUtilization + DeviceGetDefaultApplicationsClock = libnvml.DeviceGetDefaultApplicationsClock + DeviceGetDefaultEccMode = libnvml.DeviceGetDefaultEccMode + DeviceGetDetailedEccErrors = libnvml.DeviceGetDetailedEccErrors + DeviceGetDeviceHandleFromMigDeviceHandle = libnvml.DeviceGetDeviceHandleFromMigDeviceHandle + DeviceGetDisplayActive = libnvml.DeviceGetDisplayActive + DeviceGetDisplayMode = libnvml.DeviceGetDisplayMode + DeviceGetDramEncryptionMode = libnvml.DeviceGetDramEncryptionMode + DeviceGetDriverModel = libnvml.DeviceGetDriverModel + DeviceGetDriverModel_v2 = libnvml.DeviceGetDriverModel_v2 + DeviceGetDynamicPstatesInfo = libnvml.DeviceGetDynamicPstatesInfo + DeviceGetEccMode = libnvml.DeviceGetEccMode + DeviceGetEncoderCapacity = libnvml.DeviceGetEncoderCapacity + DeviceGetEncoderSessions = libnvml.DeviceGetEncoderSessions + DeviceGetEncoderStats = libnvml.DeviceGetEncoderStats + DeviceGetEncoderUtilization = libnvml.DeviceGetEncoderUtilization + DeviceGetEnforcedPowerLimit = libnvml.DeviceGetEnforcedPowerLimit + DeviceGetFBCSessions = libnvml.DeviceGetFBCSessions + DeviceGetFBCStats = libnvml.DeviceGetFBCStats + DeviceGetFanControlPolicy_v2 = libnvml.DeviceGetFanControlPolicy_v2 + DeviceGetFanSpeed = libnvml.DeviceGetFanSpeed + DeviceGetFanSpeedRPM = libnvml.DeviceGetFanSpeedRPM + DeviceGetFanSpeed_v2 = libnvml.DeviceGetFanSpeed_v2 + DeviceGetFieldValues = libnvml.DeviceGetFieldValues + DeviceGetGpcClkMinMaxVfOffset = libnvml.DeviceGetGpcClkMinMaxVfOffset + DeviceGetGpcClkVfOffset = libnvml.DeviceGetGpcClkVfOffset + DeviceGetGpuFabricInfo = libnvml.DeviceGetGpuFabricInfo + DeviceGetGpuFabricInfoV = libnvml.DeviceGetGpuFabricInfoV + DeviceGetGpuInstanceById = libnvml.DeviceGetGpuInstanceById + DeviceGetGpuInstanceId = libnvml.DeviceGetGpuInstanceId + DeviceGetGpuInstancePossiblePlacements = libnvml.DeviceGetGpuInstancePossiblePlacements + DeviceGetGpuInstanceProfileInfo = libnvml.DeviceGetGpuInstanceProfileInfo + DeviceGetGpuInstanceProfileInfoV = libnvml.DeviceGetGpuInstanceProfileInfoV + DeviceGetGpuInstanceRemainingCapacity = libnvml.DeviceGetGpuInstanceRemainingCapacity + DeviceGetGpuInstances = libnvml.DeviceGetGpuInstances + DeviceGetGpuMaxPcieLinkGeneration = libnvml.DeviceGetGpuMaxPcieLinkGeneration + DeviceGetGpuOperationMode = libnvml.DeviceGetGpuOperationMode + DeviceGetGraphicsRunningProcesses = libnvml.DeviceGetGraphicsRunningProcesses + DeviceGetGridLicensableFeatures = libnvml.DeviceGetGridLicensableFeatures + DeviceGetGspFirmwareMode = libnvml.DeviceGetGspFirmwareMode + DeviceGetGspFirmwareVersion = libnvml.DeviceGetGspFirmwareVersion + DeviceGetHandleByIndex = libnvml.DeviceGetHandleByIndex + DeviceGetHandleByPciBusId = libnvml.DeviceGetHandleByPciBusId + DeviceGetHandleBySerial = libnvml.DeviceGetHandleBySerial + DeviceGetHandleByUUID = libnvml.DeviceGetHandleByUUID + DeviceGetHandleByUUIDV = libnvml.DeviceGetHandleByUUIDV + DeviceGetHostVgpuMode = libnvml.DeviceGetHostVgpuMode + DeviceGetIndex = libnvml.DeviceGetIndex + DeviceGetInforomConfigurationChecksum = libnvml.DeviceGetInforomConfigurationChecksum + DeviceGetInforomImageVersion = libnvml.DeviceGetInforomImageVersion + DeviceGetInforomVersion = libnvml.DeviceGetInforomVersion + DeviceGetIrqNum = libnvml.DeviceGetIrqNum + DeviceGetJpgUtilization = libnvml.DeviceGetJpgUtilization + DeviceGetLastBBXFlushTime = libnvml.DeviceGetLastBBXFlushTime + DeviceGetMPSComputeRunningProcesses = libnvml.DeviceGetMPSComputeRunningProcesses + DeviceGetMarginTemperature = libnvml.DeviceGetMarginTemperature + DeviceGetMaxClockInfo = libnvml.DeviceGetMaxClockInfo + DeviceGetMaxCustomerBoostClock = libnvml.DeviceGetMaxCustomerBoostClock + DeviceGetMaxMigDeviceCount = libnvml.DeviceGetMaxMigDeviceCount + DeviceGetMaxPcieLinkGeneration = libnvml.DeviceGetMaxPcieLinkGeneration + DeviceGetMaxPcieLinkWidth = libnvml.DeviceGetMaxPcieLinkWidth + DeviceGetMemClkMinMaxVfOffset = libnvml.DeviceGetMemClkMinMaxVfOffset + DeviceGetMemClkVfOffset = libnvml.DeviceGetMemClkVfOffset + DeviceGetMemoryAffinity = libnvml.DeviceGetMemoryAffinity + DeviceGetMemoryBusWidth = libnvml.DeviceGetMemoryBusWidth + DeviceGetMemoryErrorCounter = libnvml.DeviceGetMemoryErrorCounter + DeviceGetMemoryInfo = libnvml.DeviceGetMemoryInfo + DeviceGetMemoryInfo_v2 = libnvml.DeviceGetMemoryInfo_v2 + DeviceGetMigDeviceHandleByIndex = libnvml.DeviceGetMigDeviceHandleByIndex + DeviceGetMigMode = libnvml.DeviceGetMigMode + DeviceGetMinMaxClockOfPState = libnvml.DeviceGetMinMaxClockOfPState + DeviceGetMinMaxFanSpeed = libnvml.DeviceGetMinMaxFanSpeed + DeviceGetMinorNumber = libnvml.DeviceGetMinorNumber + DeviceGetModuleId = libnvml.DeviceGetModuleId + DeviceGetMultiGpuBoard = libnvml.DeviceGetMultiGpuBoard + DeviceGetName = libnvml.DeviceGetName + DeviceGetNumFans = libnvml.DeviceGetNumFans + DeviceGetNumGpuCores = libnvml.DeviceGetNumGpuCores + DeviceGetNumaNodeId = libnvml.DeviceGetNumaNodeId + DeviceGetNvLinkCapability = libnvml.DeviceGetNvLinkCapability + DeviceGetNvLinkErrorCounter = libnvml.DeviceGetNvLinkErrorCounter + DeviceGetNvLinkRemoteDeviceType = libnvml.DeviceGetNvLinkRemoteDeviceType + DeviceGetNvLinkRemotePciInfo = libnvml.DeviceGetNvLinkRemotePciInfo + DeviceGetNvLinkState = libnvml.DeviceGetNvLinkState + DeviceGetNvLinkUtilizationControl = libnvml.DeviceGetNvLinkUtilizationControl + DeviceGetNvLinkUtilizationCounter = libnvml.DeviceGetNvLinkUtilizationCounter + DeviceGetNvLinkVersion = libnvml.DeviceGetNvLinkVersion + DeviceGetNvlinkBwMode = libnvml.DeviceGetNvlinkBwMode + DeviceGetNvlinkSupportedBwModes = libnvml.DeviceGetNvlinkSupportedBwModes + DeviceGetOfaUtilization = libnvml.DeviceGetOfaUtilization + DeviceGetP2PStatus = libnvml.DeviceGetP2PStatus + DeviceGetPciInfo = libnvml.DeviceGetPciInfo + DeviceGetPciInfoExt = libnvml.DeviceGetPciInfoExt + DeviceGetPcieLinkMaxSpeed = libnvml.DeviceGetPcieLinkMaxSpeed + DeviceGetPcieReplayCounter = libnvml.DeviceGetPcieReplayCounter + DeviceGetPcieSpeed = libnvml.DeviceGetPcieSpeed + DeviceGetPcieThroughput = libnvml.DeviceGetPcieThroughput + DeviceGetPerformanceModes = libnvml.DeviceGetPerformanceModes + DeviceGetPerformanceState = libnvml.DeviceGetPerformanceState + DeviceGetPersistenceMode = libnvml.DeviceGetPersistenceMode + DeviceGetPgpuMetadataString = libnvml.DeviceGetPgpuMetadataString + DeviceGetPlatformInfo = libnvml.DeviceGetPlatformInfo + DeviceGetPowerManagementDefaultLimit = libnvml.DeviceGetPowerManagementDefaultLimit + DeviceGetPowerManagementLimit = libnvml.DeviceGetPowerManagementLimit + DeviceGetPowerManagementLimitConstraints = libnvml.DeviceGetPowerManagementLimitConstraints + DeviceGetPowerManagementMode = libnvml.DeviceGetPowerManagementMode + DeviceGetPowerSource = libnvml.DeviceGetPowerSource + DeviceGetPowerState = libnvml.DeviceGetPowerState + DeviceGetPowerUsage = libnvml.DeviceGetPowerUsage + DeviceGetProcessUtilization = libnvml.DeviceGetProcessUtilization + DeviceGetProcessesUtilizationInfo = libnvml.DeviceGetProcessesUtilizationInfo + DeviceGetRemappedRows = libnvml.DeviceGetRemappedRows + DeviceGetRetiredPages = libnvml.DeviceGetRetiredPages + DeviceGetRetiredPagesPendingStatus = libnvml.DeviceGetRetiredPagesPendingStatus + DeviceGetRetiredPages_v2 = libnvml.DeviceGetRetiredPages_v2 + DeviceGetRowRemapperHistogram = libnvml.DeviceGetRowRemapperHistogram + DeviceGetRunningProcessDetailList = libnvml.DeviceGetRunningProcessDetailList + DeviceGetSamples = libnvml.DeviceGetSamples + DeviceGetSerial = libnvml.DeviceGetSerial + DeviceGetSramEccErrorStatus = libnvml.DeviceGetSramEccErrorStatus + DeviceGetSupportedClocksEventReasons = libnvml.DeviceGetSupportedClocksEventReasons + DeviceGetSupportedClocksThrottleReasons = libnvml.DeviceGetSupportedClocksThrottleReasons + DeviceGetSupportedEventTypes = libnvml.DeviceGetSupportedEventTypes + DeviceGetSupportedGraphicsClocks = libnvml.DeviceGetSupportedGraphicsClocks + DeviceGetSupportedMemoryClocks = libnvml.DeviceGetSupportedMemoryClocks + DeviceGetSupportedPerformanceStates = libnvml.DeviceGetSupportedPerformanceStates + DeviceGetSupportedVgpus = libnvml.DeviceGetSupportedVgpus + DeviceGetTargetFanSpeed = libnvml.DeviceGetTargetFanSpeed + DeviceGetTemperature = libnvml.DeviceGetTemperature + DeviceGetTemperatureThreshold = libnvml.DeviceGetTemperatureThreshold + DeviceGetTemperatureV = libnvml.DeviceGetTemperatureV + DeviceGetThermalSettings = libnvml.DeviceGetThermalSettings + DeviceGetTopologyCommonAncestor = libnvml.DeviceGetTopologyCommonAncestor + DeviceGetTopologyNearestGpus = libnvml.DeviceGetTopologyNearestGpus + DeviceGetTotalEccErrors = libnvml.DeviceGetTotalEccErrors + DeviceGetTotalEnergyConsumption = libnvml.DeviceGetTotalEnergyConsumption + DeviceGetUUID = libnvml.DeviceGetUUID + DeviceGetUtilizationRates = libnvml.DeviceGetUtilizationRates + DeviceGetVbiosVersion = libnvml.DeviceGetVbiosVersion + DeviceGetVgpuCapabilities = libnvml.DeviceGetVgpuCapabilities + DeviceGetVgpuHeterogeneousMode = libnvml.DeviceGetVgpuHeterogeneousMode + DeviceGetVgpuInstancesUtilizationInfo = libnvml.DeviceGetVgpuInstancesUtilizationInfo + DeviceGetVgpuMetadata = libnvml.DeviceGetVgpuMetadata + DeviceGetVgpuProcessUtilization = libnvml.DeviceGetVgpuProcessUtilization + DeviceGetVgpuProcessesUtilizationInfo = libnvml.DeviceGetVgpuProcessesUtilizationInfo + DeviceGetVgpuSchedulerCapabilities = libnvml.DeviceGetVgpuSchedulerCapabilities + DeviceGetVgpuSchedulerLog = libnvml.DeviceGetVgpuSchedulerLog + DeviceGetVgpuSchedulerState = libnvml.DeviceGetVgpuSchedulerState + DeviceGetVgpuTypeCreatablePlacements = libnvml.DeviceGetVgpuTypeCreatablePlacements + DeviceGetVgpuTypeSupportedPlacements = libnvml.DeviceGetVgpuTypeSupportedPlacements + DeviceGetVgpuUtilization = libnvml.DeviceGetVgpuUtilization + DeviceGetViolationStatus = libnvml.DeviceGetViolationStatus + DeviceGetVirtualizationMode = libnvml.DeviceGetVirtualizationMode + DeviceIsMigDeviceHandle = libnvml.DeviceIsMigDeviceHandle + DeviceModifyDrainState = libnvml.DeviceModifyDrainState + DeviceOnSameBoard = libnvml.DeviceOnSameBoard + DevicePowerSmoothingActivatePresetProfile = libnvml.DevicePowerSmoothingActivatePresetProfile + DevicePowerSmoothingSetState = libnvml.DevicePowerSmoothingSetState + DevicePowerSmoothingUpdatePresetProfileParam = libnvml.DevicePowerSmoothingUpdatePresetProfileParam + DeviceQueryDrainState = libnvml.DeviceQueryDrainState + DeviceRegisterEvents = libnvml.DeviceRegisterEvents + DeviceRemoveGpu = libnvml.DeviceRemoveGpu + DeviceRemoveGpu_v2 = libnvml.DeviceRemoveGpu_v2 + DeviceResetApplicationsClocks = libnvml.DeviceResetApplicationsClocks + DeviceResetGpuLockedClocks = libnvml.DeviceResetGpuLockedClocks + DeviceResetMemoryLockedClocks = libnvml.DeviceResetMemoryLockedClocks + DeviceResetNvLinkErrorCounters = libnvml.DeviceResetNvLinkErrorCounters + DeviceResetNvLinkUtilizationCounter = libnvml.DeviceResetNvLinkUtilizationCounter + DeviceSetAPIRestriction = libnvml.DeviceSetAPIRestriction + DeviceSetAccountingMode = libnvml.DeviceSetAccountingMode + DeviceSetApplicationsClocks = libnvml.DeviceSetApplicationsClocks + DeviceSetAutoBoostedClocksEnabled = libnvml.DeviceSetAutoBoostedClocksEnabled + DeviceSetClockOffsets = libnvml.DeviceSetClockOffsets + DeviceSetComputeMode = libnvml.DeviceSetComputeMode + DeviceSetConfComputeUnprotectedMemSize = libnvml.DeviceSetConfComputeUnprotectedMemSize + DeviceSetCpuAffinity = libnvml.DeviceSetCpuAffinity + DeviceSetDefaultAutoBoostedClocksEnabled = libnvml.DeviceSetDefaultAutoBoostedClocksEnabled + DeviceSetDefaultFanSpeed_v2 = libnvml.DeviceSetDefaultFanSpeed_v2 + DeviceSetDramEncryptionMode = libnvml.DeviceSetDramEncryptionMode + DeviceSetDriverModel = libnvml.DeviceSetDriverModel + DeviceSetEccMode = libnvml.DeviceSetEccMode + DeviceSetFanControlPolicy = libnvml.DeviceSetFanControlPolicy + DeviceSetFanSpeed_v2 = libnvml.DeviceSetFanSpeed_v2 + DeviceSetGpcClkVfOffset = libnvml.DeviceSetGpcClkVfOffset + DeviceSetGpuLockedClocks = libnvml.DeviceSetGpuLockedClocks + DeviceSetGpuOperationMode = libnvml.DeviceSetGpuOperationMode + DeviceSetMemClkVfOffset = libnvml.DeviceSetMemClkVfOffset + DeviceSetMemoryLockedClocks = libnvml.DeviceSetMemoryLockedClocks + DeviceSetMigMode = libnvml.DeviceSetMigMode + DeviceSetNvLinkDeviceLowPowerThreshold = libnvml.DeviceSetNvLinkDeviceLowPowerThreshold + DeviceSetNvLinkUtilizationControl = libnvml.DeviceSetNvLinkUtilizationControl + DeviceSetNvlinkBwMode = libnvml.DeviceSetNvlinkBwMode + DeviceSetPersistenceMode = libnvml.DeviceSetPersistenceMode + DeviceSetPowerManagementLimit = libnvml.DeviceSetPowerManagementLimit + DeviceSetPowerManagementLimit_v2 = libnvml.DeviceSetPowerManagementLimit_v2 + DeviceSetTemperatureThreshold = libnvml.DeviceSetTemperatureThreshold + DeviceSetVgpuCapabilities = libnvml.DeviceSetVgpuCapabilities + DeviceSetVgpuHeterogeneousMode = libnvml.DeviceSetVgpuHeterogeneousMode + DeviceSetVgpuSchedulerState = libnvml.DeviceSetVgpuSchedulerState + DeviceSetVirtualizationMode = libnvml.DeviceSetVirtualizationMode + DeviceValidateInforom = libnvml.DeviceValidateInforom + DeviceWorkloadPowerProfileClearRequestedProfiles = libnvml.DeviceWorkloadPowerProfileClearRequestedProfiles + DeviceWorkloadPowerProfileGetCurrentProfiles = libnvml.DeviceWorkloadPowerProfileGetCurrentProfiles + DeviceWorkloadPowerProfileGetProfilesInfo = libnvml.DeviceWorkloadPowerProfileGetProfilesInfo + DeviceWorkloadPowerProfileSetRequestedProfiles = libnvml.DeviceWorkloadPowerProfileSetRequestedProfiles + ErrorString = libnvml.ErrorString + EventSetCreate = libnvml.EventSetCreate + EventSetFree = libnvml.EventSetFree + EventSetWait = libnvml.EventSetWait + Extensions = libnvml.Extensions + GetExcludedDeviceCount = libnvml.GetExcludedDeviceCount + GetExcludedDeviceInfoByIndex = libnvml.GetExcludedDeviceInfoByIndex + GetVgpuCompatibility = libnvml.GetVgpuCompatibility + GetVgpuDriverCapabilities = libnvml.GetVgpuDriverCapabilities + GetVgpuVersion = libnvml.GetVgpuVersion + GpmMetricsGet = libnvml.GpmMetricsGet + GpmMetricsGetV = libnvml.GpmMetricsGetV + GpmMigSampleGet = libnvml.GpmMigSampleGet + GpmQueryDeviceSupport = libnvml.GpmQueryDeviceSupport + GpmQueryDeviceSupportV = libnvml.GpmQueryDeviceSupportV + GpmQueryIfStreamingEnabled = libnvml.GpmQueryIfStreamingEnabled + GpmSampleAlloc = libnvml.GpmSampleAlloc + GpmSampleFree = libnvml.GpmSampleFree + GpmSampleGet = libnvml.GpmSampleGet + GpmSetStreamingEnabled = libnvml.GpmSetStreamingEnabled + GpuInstanceCreateComputeInstance = libnvml.GpuInstanceCreateComputeInstance + GpuInstanceCreateComputeInstanceWithPlacement = libnvml.GpuInstanceCreateComputeInstanceWithPlacement + GpuInstanceDestroy = libnvml.GpuInstanceDestroy + GpuInstanceGetActiveVgpus = libnvml.GpuInstanceGetActiveVgpus + GpuInstanceGetComputeInstanceById = libnvml.GpuInstanceGetComputeInstanceById + GpuInstanceGetComputeInstancePossiblePlacements = libnvml.GpuInstanceGetComputeInstancePossiblePlacements + GpuInstanceGetComputeInstanceProfileInfo = libnvml.GpuInstanceGetComputeInstanceProfileInfo + GpuInstanceGetComputeInstanceProfileInfoV = libnvml.GpuInstanceGetComputeInstanceProfileInfoV + GpuInstanceGetComputeInstanceRemainingCapacity = libnvml.GpuInstanceGetComputeInstanceRemainingCapacity + GpuInstanceGetComputeInstances = libnvml.GpuInstanceGetComputeInstances + GpuInstanceGetCreatableVgpus = libnvml.GpuInstanceGetCreatableVgpus + GpuInstanceGetInfo = libnvml.GpuInstanceGetInfo + GpuInstanceGetVgpuHeterogeneousMode = libnvml.GpuInstanceGetVgpuHeterogeneousMode + GpuInstanceGetVgpuSchedulerLog = libnvml.GpuInstanceGetVgpuSchedulerLog + GpuInstanceGetVgpuSchedulerState = libnvml.GpuInstanceGetVgpuSchedulerState + GpuInstanceGetVgpuTypeCreatablePlacements = libnvml.GpuInstanceGetVgpuTypeCreatablePlacements + GpuInstanceSetVgpuHeterogeneousMode = libnvml.GpuInstanceSetVgpuHeterogeneousMode + GpuInstanceSetVgpuSchedulerState = libnvml.GpuInstanceSetVgpuSchedulerState + Init = libnvml.Init + InitWithFlags = libnvml.InitWithFlags + SetVgpuVersion = libnvml.SetVgpuVersion + Shutdown = libnvml.Shutdown + SystemEventSetCreate = libnvml.SystemEventSetCreate + SystemEventSetFree = libnvml.SystemEventSetFree + SystemEventSetWait = libnvml.SystemEventSetWait + SystemGetConfComputeCapabilities = libnvml.SystemGetConfComputeCapabilities + SystemGetConfComputeGpusReadyState = libnvml.SystemGetConfComputeGpusReadyState + SystemGetConfComputeKeyRotationThresholdInfo = libnvml.SystemGetConfComputeKeyRotationThresholdInfo + SystemGetConfComputeSettings = libnvml.SystemGetConfComputeSettings + SystemGetConfComputeState = libnvml.SystemGetConfComputeState + SystemGetCudaDriverVersion = libnvml.SystemGetCudaDriverVersion + SystemGetCudaDriverVersion_v2 = libnvml.SystemGetCudaDriverVersion_v2 + SystemGetDriverBranch = libnvml.SystemGetDriverBranch + SystemGetDriverVersion = libnvml.SystemGetDriverVersion + SystemGetHicVersion = libnvml.SystemGetHicVersion + SystemGetNVMLVersion = libnvml.SystemGetNVMLVersion + SystemGetNvlinkBwMode = libnvml.SystemGetNvlinkBwMode + SystemGetProcessName = libnvml.SystemGetProcessName + SystemGetTopologyGpuSet = libnvml.SystemGetTopologyGpuSet + SystemRegisterEvents = libnvml.SystemRegisterEvents + SystemSetConfComputeGpusReadyState = libnvml.SystemSetConfComputeGpusReadyState + SystemSetConfComputeKeyRotationThresholdInfo = libnvml.SystemSetConfComputeKeyRotationThresholdInfo + SystemSetNvlinkBwMode = libnvml.SystemSetNvlinkBwMode + UnitGetCount = libnvml.UnitGetCount + UnitGetDevices = libnvml.UnitGetDevices + UnitGetFanSpeedInfo = libnvml.UnitGetFanSpeedInfo + UnitGetHandleByIndex = libnvml.UnitGetHandleByIndex + UnitGetLedState = libnvml.UnitGetLedState + UnitGetPsuInfo = libnvml.UnitGetPsuInfo + UnitGetTemperature = libnvml.UnitGetTemperature + UnitGetUnitInfo = libnvml.UnitGetUnitInfo + UnitSetLedState = libnvml.UnitSetLedState + VgpuInstanceClearAccountingPids = libnvml.VgpuInstanceClearAccountingPids + VgpuInstanceGetAccountingMode = libnvml.VgpuInstanceGetAccountingMode + VgpuInstanceGetAccountingPids = libnvml.VgpuInstanceGetAccountingPids + VgpuInstanceGetAccountingStats = libnvml.VgpuInstanceGetAccountingStats + VgpuInstanceGetEccMode = libnvml.VgpuInstanceGetEccMode + VgpuInstanceGetEncoderCapacity = libnvml.VgpuInstanceGetEncoderCapacity + VgpuInstanceGetEncoderSessions = libnvml.VgpuInstanceGetEncoderSessions + VgpuInstanceGetEncoderStats = libnvml.VgpuInstanceGetEncoderStats + VgpuInstanceGetFBCSessions = libnvml.VgpuInstanceGetFBCSessions + VgpuInstanceGetFBCStats = libnvml.VgpuInstanceGetFBCStats + VgpuInstanceGetFbUsage = libnvml.VgpuInstanceGetFbUsage + VgpuInstanceGetFrameRateLimit = libnvml.VgpuInstanceGetFrameRateLimit + VgpuInstanceGetGpuInstanceId = libnvml.VgpuInstanceGetGpuInstanceId + VgpuInstanceGetGpuPciId = libnvml.VgpuInstanceGetGpuPciId + VgpuInstanceGetLicenseInfo = libnvml.VgpuInstanceGetLicenseInfo + VgpuInstanceGetLicenseStatus = libnvml.VgpuInstanceGetLicenseStatus + VgpuInstanceGetMdevUUID = libnvml.VgpuInstanceGetMdevUUID + VgpuInstanceGetMetadata = libnvml.VgpuInstanceGetMetadata + VgpuInstanceGetRuntimeStateSize = libnvml.VgpuInstanceGetRuntimeStateSize + VgpuInstanceGetType = libnvml.VgpuInstanceGetType + VgpuInstanceGetUUID = libnvml.VgpuInstanceGetUUID + VgpuInstanceGetVmDriverVersion = libnvml.VgpuInstanceGetVmDriverVersion + VgpuInstanceGetVmID = libnvml.VgpuInstanceGetVmID + VgpuInstanceSetEncoderCapacity = libnvml.VgpuInstanceSetEncoderCapacity + VgpuTypeGetBAR1Info = libnvml.VgpuTypeGetBAR1Info + VgpuTypeGetCapabilities = libnvml.VgpuTypeGetCapabilities + VgpuTypeGetClass = libnvml.VgpuTypeGetClass + VgpuTypeGetDeviceID = libnvml.VgpuTypeGetDeviceID + VgpuTypeGetFrameRateLimit = libnvml.VgpuTypeGetFrameRateLimit + VgpuTypeGetFramebufferSize = libnvml.VgpuTypeGetFramebufferSize + VgpuTypeGetGpuInstanceProfileId = libnvml.VgpuTypeGetGpuInstanceProfileId + VgpuTypeGetLicense = libnvml.VgpuTypeGetLicense + VgpuTypeGetMaxInstances = libnvml.VgpuTypeGetMaxInstances + VgpuTypeGetMaxInstancesPerGpuInstance = libnvml.VgpuTypeGetMaxInstancesPerGpuInstance + VgpuTypeGetMaxInstancesPerVm = libnvml.VgpuTypeGetMaxInstancesPerVm + VgpuTypeGetName = libnvml.VgpuTypeGetName + VgpuTypeGetNumDisplayHeads = libnvml.VgpuTypeGetNumDisplayHeads + VgpuTypeGetResolution = libnvml.VgpuTypeGetResolution ) // Interface represents the interface for the library type. @@ -375,9 +420,11 @@ type Interface interface { DeviceGetBridgeChipInfo(Device) (BridgeChipHierarchy, Return) DeviceGetBusType(Device) (BusType, Return) DeviceGetC2cModeInfoV(Device) C2cModeInfoHandler + DeviceGetCapabilities(Device) (DeviceCapabilities, Return) DeviceGetClkMonStatus(Device) (ClkMonStatus, Return) DeviceGetClock(Device, ClockType, ClockId) (uint32, Return) DeviceGetClockInfo(Device, ClockType) (uint32, Return) + DeviceGetClockOffsets(Device) (ClockOffset, Return) DeviceGetComputeInstanceId(Device) (int, Return) DeviceGetComputeMode(Device) (ComputeMode, Return) DeviceGetComputeRunningProcesses(Device) ([]ProcessInfo, Return) @@ -385,6 +432,7 @@ type Interface interface { DeviceGetConfComputeGpuCertificate(Device) (ConfComputeGpuCertificate, Return) DeviceGetConfComputeMemSizeInfo(Device) (ConfComputeMemSizeInfo, Return) DeviceGetConfComputeProtectedMemoryUsage(Device) (Memory, Return) + DeviceGetCoolerInfo(Device) (CoolerInfo, Return) DeviceGetCount() (int, Return) DeviceGetCpuAffinity(Device, int) ([]uint, Return) DeviceGetCpuAffinityWithinScope(Device, int, AffinityScope) ([]uint, Return) @@ -392,6 +440,7 @@ type Interface interface { DeviceGetCudaComputeCapability(Device) (int, int, Return) DeviceGetCurrPcieLinkGeneration(Device) (int, Return) DeviceGetCurrPcieLinkWidth(Device) (int, Return) + DeviceGetCurrentClockFreqs(Device) (DeviceCurrentClockFreqs, Return) DeviceGetCurrentClocksEventReasons(Device) (uint64, Return) DeviceGetCurrentClocksThrottleReasons(Device) (uint64, Return) DeviceGetDecoderUtilization(Device) (uint32, uint32, Return) @@ -401,7 +450,9 @@ type Interface interface { DeviceGetDeviceHandleFromMigDeviceHandle(Device) (Device, Return) DeviceGetDisplayActive(Device) (EnableState, Return) DeviceGetDisplayMode(Device) (EnableState, Return) + DeviceGetDramEncryptionMode(Device) (DramEncryptionInfo, DramEncryptionInfo, Return) DeviceGetDriverModel(Device) (DriverModel, DriverModel, Return) + DeviceGetDriverModel_v2(Device) (DriverModel, DriverModel, Return) DeviceGetDynamicPstatesInfo(Device) (GpuDynamicPstatesInfo, Return) DeviceGetEccMode(Device) (EnableState, EnableState, Return) DeviceGetEncoderCapacity(Device, EncoderType) (int, Return) @@ -413,6 +464,7 @@ type Interface interface { DeviceGetFBCStats(Device) (FBCStats, Return) DeviceGetFanControlPolicy_v2(Device, int) (FanControlPolicy, Return) DeviceGetFanSpeed(Device) (uint32, Return) + DeviceGetFanSpeedRPM(Device) (FanSpeedInfo, Return) DeviceGetFanSpeed_v2(Device, int) (uint32, Return) DeviceGetFieldValues(Device, []FieldValue) Return DeviceGetGpcClkMinMaxVfOffset(Device) (int, int, Return) @@ -436,6 +488,7 @@ type Interface interface { DeviceGetHandleByPciBusId(string) (Device, Return) DeviceGetHandleBySerial(string) (Device, Return) DeviceGetHandleByUUID(string) (Device, Return) + DeviceGetHandleByUUIDV(*UUID) (Device, Return) DeviceGetHostVgpuMode(Device) (HostVgpuMode, Return) DeviceGetIndex(Device) (int, Return) DeviceGetInforomConfigurationChecksum(Device) (uint32, Return) @@ -445,6 +498,7 @@ type Interface interface { DeviceGetJpgUtilization(Device) (uint32, uint32, Return) DeviceGetLastBBXFlushTime(Device) (uint64, uint, Return) DeviceGetMPSComputeRunningProcesses(Device) ([]ProcessInfo, Return) + DeviceGetMarginTemperature(Device) (MarginTemperature, Return) DeviceGetMaxClockInfo(Device, ClockType) (uint32, Return) DeviceGetMaxCustomerBoostClock(Device, ClockType) (uint32, Return) DeviceGetMaxMigDeviceCount(Device) (int, Return) @@ -476,6 +530,8 @@ type Interface interface { DeviceGetNvLinkUtilizationControl(Device, int, int) (NvLinkUtilizationControl, Return) DeviceGetNvLinkUtilizationCounter(Device, int, int) (uint64, uint64, Return) DeviceGetNvLinkVersion(Device, int) (uint32, Return) + DeviceGetNvlinkBwMode(Device) (NvlinkGetBwMode, Return) + DeviceGetNvlinkSupportedBwModes(Device) (NvlinkSupportedBwModes, Return) DeviceGetOfaUtilization(Device) (uint32, uint32, Return) DeviceGetP2PStatus(Device, Device, GpuP2PCapsIndex) (GpuP2PStatus, Return) DeviceGetPciInfo(Device) (PciInfo, Return) @@ -484,9 +540,11 @@ type Interface interface { DeviceGetPcieReplayCounter(Device) (int, Return) DeviceGetPcieSpeed(Device) (int, Return) DeviceGetPcieThroughput(Device, PcieUtilCounter) (uint32, Return) + DeviceGetPerformanceModes(Device) (DevicePerfModes, Return) DeviceGetPerformanceState(Device) (Pstates, Return) DeviceGetPersistenceMode(Device) (EnableState, Return) DeviceGetPgpuMetadataString(Device) (string, Return) + DeviceGetPlatformInfo(Device) (PlatformInfo, Return) DeviceGetPowerManagementDefaultLimit(Device) (uint32, Return) DeviceGetPowerManagementLimit(Device) (uint32, Return) DeviceGetPowerManagementLimitConstraints(Device) (uint32, uint32, Return) @@ -515,6 +573,7 @@ type Interface interface { DeviceGetTargetFanSpeed(Device, int) (int, Return) DeviceGetTemperature(Device, TemperatureSensors) (uint32, Return) DeviceGetTemperatureThreshold(Device, TemperatureThresholds) (uint32, Return) + DeviceGetTemperatureV(Device) TemperatureHandler DeviceGetThermalSettings(Device, uint32) (GpuThermalSettings, Return) DeviceGetTopologyCommonAncestor(Device, Device) (GpuTopologyLevel, Return) DeviceGetTopologyNearestGpus(Device, GpuTopologyLevel) ([]Device, Return) @@ -540,6 +599,9 @@ type Interface interface { DeviceIsMigDeviceHandle(Device) (bool, Return) DeviceModifyDrainState(*PciInfo, EnableState) Return DeviceOnSameBoard(Device, Device) (int, Return) + DevicePowerSmoothingActivatePresetProfile(Device, *PowerSmoothingProfile) Return + DevicePowerSmoothingSetState(Device, *PowerSmoothingState) Return + DevicePowerSmoothingUpdatePresetProfileParam(Device, *PowerSmoothingProfile) Return DeviceQueryDrainState(*PciInfo) (EnableState, Return) DeviceRegisterEvents(Device, uint64, EventSet) Return DeviceRemoveGpu(*PciInfo) Return @@ -553,11 +615,13 @@ type Interface interface { DeviceSetAccountingMode(Device, EnableState) Return DeviceSetApplicationsClocks(Device, uint32, uint32) Return DeviceSetAutoBoostedClocksEnabled(Device, EnableState) Return + DeviceSetClockOffsets(Device, ClockOffset) Return DeviceSetComputeMode(Device, ComputeMode) Return DeviceSetConfComputeUnprotectedMemSize(Device, uint64) Return DeviceSetCpuAffinity(Device) Return DeviceSetDefaultAutoBoostedClocksEnabled(Device, EnableState, uint32) Return DeviceSetDefaultFanSpeed_v2(Device, int) Return + DeviceSetDramEncryptionMode(Device, *DramEncryptionInfo) Return DeviceSetDriverModel(Device, DriverModel, uint32) Return DeviceSetEccMode(Device, EnableState) Return DeviceSetFanControlPolicy(Device, int, FanControlPolicy) Return @@ -570,6 +634,7 @@ type Interface interface { DeviceSetMigMode(Device, int) (Return, Return) DeviceSetNvLinkDeviceLowPowerThreshold(Device, *NvLinkPowerThres) Return DeviceSetNvLinkUtilizationControl(Device, int, int, *NvLinkUtilizationControl, bool) Return + DeviceSetNvlinkBwMode(Device, *NvlinkSetBwMode) Return DeviceSetPersistenceMode(Device, EnableState) Return DeviceSetPowerManagementLimit(Device, uint32) Return DeviceSetPowerManagementLimit_v2(Device, *PowerValue_v2) Return @@ -579,6 +644,10 @@ type Interface interface { DeviceSetVgpuSchedulerState(Device, *VgpuSchedulerSetState) Return DeviceSetVirtualizationMode(Device, GpuVirtualizationMode) Return DeviceValidateInforom(Device) Return + DeviceWorkloadPowerProfileClearRequestedProfiles(Device, *WorkloadPowerProfileRequestedProfiles) Return + DeviceWorkloadPowerProfileGetCurrentProfiles(Device) (WorkloadPowerProfileCurrentProfiles, Return) + DeviceWorkloadPowerProfileGetProfilesInfo(Device) (WorkloadPowerProfileProfilesInfo, Return) + DeviceWorkloadPowerProfileSetRequestedProfiles(Device, *WorkloadPowerProfileRequestedProfiles) Return ErrorString(Return) string EventSetCreate() (EventSet, Return) EventSetFree(EventSet) Return @@ -602,28 +671,46 @@ type Interface interface { GpuInstanceCreateComputeInstance(GpuInstance, *ComputeInstanceProfileInfo) (ComputeInstance, Return) GpuInstanceCreateComputeInstanceWithPlacement(GpuInstance, *ComputeInstanceProfileInfo, *ComputeInstancePlacement) (ComputeInstance, Return) GpuInstanceDestroy(GpuInstance) Return + GpuInstanceGetActiveVgpus(GpuInstance) (ActiveVgpuInstanceInfo, Return) GpuInstanceGetComputeInstanceById(GpuInstance, int) (ComputeInstance, Return) GpuInstanceGetComputeInstancePossiblePlacements(GpuInstance, *ComputeInstanceProfileInfo) ([]ComputeInstancePlacement, Return) GpuInstanceGetComputeInstanceProfileInfo(GpuInstance, int, int) (ComputeInstanceProfileInfo, Return) GpuInstanceGetComputeInstanceProfileInfoV(GpuInstance, int, int) ComputeInstanceProfileInfoHandler GpuInstanceGetComputeInstanceRemainingCapacity(GpuInstance, *ComputeInstanceProfileInfo) (int, Return) GpuInstanceGetComputeInstances(GpuInstance, *ComputeInstanceProfileInfo) ([]ComputeInstance, Return) + GpuInstanceGetCreatableVgpus(GpuInstance) (VgpuTypeIdInfo, Return) GpuInstanceGetInfo(GpuInstance) (GpuInstanceInfo, Return) + GpuInstanceGetVgpuHeterogeneousMode(GpuInstance) (VgpuHeterogeneousMode, Return) + GpuInstanceGetVgpuSchedulerLog(GpuInstance) (VgpuSchedulerLogInfo, Return) + GpuInstanceGetVgpuSchedulerState(GpuInstance) (VgpuSchedulerStateInfo, Return) + GpuInstanceGetVgpuTypeCreatablePlacements(GpuInstance) (VgpuCreatablePlacementInfo, Return) + GpuInstanceSetVgpuHeterogeneousMode(GpuInstance, *VgpuHeterogeneousMode) Return + GpuInstanceSetVgpuSchedulerState(GpuInstance, *VgpuSchedulerState) Return Init() Return InitWithFlags(uint32) Return SetVgpuVersion(*VgpuVersion) Return Shutdown() Return + SystemEventSetCreate(*SystemEventSetCreateRequest) Return + SystemEventSetFree(*SystemEventSetFreeRequest) Return + SystemEventSetWait(*SystemEventSetWaitRequest) Return SystemGetConfComputeCapabilities() (ConfComputeSystemCaps, Return) + SystemGetConfComputeGpusReadyState() (uint32, Return) SystemGetConfComputeKeyRotationThresholdInfo() (ConfComputeGetKeyRotationThresholdInfo, Return) SystemGetConfComputeSettings() (SystemConfComputeSettings, Return) + SystemGetConfComputeState() (ConfComputeSystemState, Return) SystemGetCudaDriverVersion() (int, Return) SystemGetCudaDriverVersion_v2() (int, Return) + SystemGetDriverBranch() (SystemDriverBranchInfo, Return) SystemGetDriverVersion() (string, Return) SystemGetHicVersion() ([]HwbcEntry, Return) SystemGetNVMLVersion() (string, Return) + SystemGetNvlinkBwMode() (uint32, Return) SystemGetProcessName(int) (string, Return) SystemGetTopologyGpuSet(int) ([]Device, Return) + SystemRegisterEvents(*SystemRegisterEventRequest) Return + SystemSetConfComputeGpusReadyState(uint32) Return SystemSetConfComputeKeyRotationThresholdInfo(ConfComputeSetKeyRotationThresholdInfo) Return + SystemSetNvlinkBwMode(uint32) Return UnitGetCount() (int, Return) UnitGetDevices(Unit) ([]Device, Return) UnitGetFanSpeedInfo(Unit) (UnitFanSpeeds, Return) @@ -651,11 +738,13 @@ type Interface interface { VgpuInstanceGetLicenseStatus(VgpuInstance) (int, Return) VgpuInstanceGetMdevUUID(VgpuInstance) (string, Return) VgpuInstanceGetMetadata(VgpuInstance) (VgpuMetadata, Return) + VgpuInstanceGetRuntimeStateSize(VgpuInstance) (VgpuRuntimeState, Return) VgpuInstanceGetType(VgpuInstance) (VgpuTypeId, Return) VgpuInstanceGetUUID(VgpuInstance) (string, Return) VgpuInstanceGetVmDriverVersion(VgpuInstance) (string, Return) VgpuInstanceGetVmID(VgpuInstance) (string, VgpuVmIdType, Return) VgpuInstanceSetEncoderCapacity(VgpuInstance, int) Return + VgpuTypeGetBAR1Info(VgpuTypeId) (VgpuTypeBar1Info, Return) VgpuTypeGetCapabilities(VgpuTypeId, VgpuCapability) (bool, Return) VgpuTypeGetClass(VgpuTypeId) (string, Return) VgpuTypeGetDeviceID(VgpuTypeId) (uint64, uint64, Return) @@ -664,6 +753,7 @@ type Interface interface { VgpuTypeGetGpuInstanceProfileId(VgpuTypeId) (uint32, Return) VgpuTypeGetLicense(VgpuTypeId) (string, Return) VgpuTypeGetMaxInstances(Device, VgpuTypeId) (int, Return) + VgpuTypeGetMaxInstancesPerGpuInstance(*VgpuTypeMaxInstance) Return VgpuTypeGetMaxInstancesPerVm(VgpuTypeId) (int, Return) VgpuTypeGetName(VgpuTypeId) (string, Return) VgpuTypeGetNumDisplayHeads(VgpuTypeId) (int, Return) @@ -699,9 +789,11 @@ type Device interface { GetBridgeChipInfo() (BridgeChipHierarchy, Return) GetBusType() (BusType, Return) GetC2cModeInfoV() C2cModeInfoHandler + GetCapabilities() (DeviceCapabilities, Return) GetClkMonStatus() (ClkMonStatus, Return) GetClock(ClockType, ClockId) (uint32, Return) GetClockInfo(ClockType) (uint32, Return) + GetClockOffsets() (ClockOffset, Return) GetComputeInstanceId() (int, Return) GetComputeMode() (ComputeMode, Return) GetComputeRunningProcesses() ([]ProcessInfo, Return) @@ -709,12 +801,14 @@ type Device interface { GetConfComputeGpuCertificate() (ConfComputeGpuCertificate, Return) GetConfComputeMemSizeInfo() (ConfComputeMemSizeInfo, Return) GetConfComputeProtectedMemoryUsage() (Memory, Return) + GetCoolerInfo() (CoolerInfo, Return) GetCpuAffinity(int) ([]uint, Return) GetCpuAffinityWithinScope(int, AffinityScope) ([]uint, Return) GetCreatableVgpus() ([]VgpuTypeId, Return) GetCudaComputeCapability() (int, int, Return) GetCurrPcieLinkGeneration() (int, Return) GetCurrPcieLinkWidth() (int, Return) + GetCurrentClockFreqs() (DeviceCurrentClockFreqs, Return) GetCurrentClocksEventReasons() (uint64, Return) GetCurrentClocksThrottleReasons() (uint64, Return) GetDecoderUtilization() (uint32, uint32, Return) @@ -724,7 +818,9 @@ type Device interface { GetDeviceHandleFromMigDeviceHandle() (Device, Return) GetDisplayActive() (EnableState, Return) GetDisplayMode() (EnableState, Return) + GetDramEncryptionMode() (DramEncryptionInfo, DramEncryptionInfo, Return) GetDriverModel() (DriverModel, DriverModel, Return) + GetDriverModel_v2() (DriverModel, DriverModel, Return) GetDynamicPstatesInfo() (GpuDynamicPstatesInfo, Return) GetEccMode() (EnableState, EnableState, Return) GetEncoderCapacity(EncoderType) (int, Return) @@ -736,6 +832,7 @@ type Device interface { GetFBCStats() (FBCStats, Return) GetFanControlPolicy_v2(int) (FanControlPolicy, Return) GetFanSpeed() (uint32, Return) + GetFanSpeedRPM() (FanSpeedInfo, Return) GetFanSpeed_v2(int) (uint32, Return) GetFieldValues([]FieldValue) Return GetGpcClkMinMaxVfOffset() (int, int, Return) @@ -764,6 +861,7 @@ type Device interface { GetJpgUtilization() (uint32, uint32, Return) GetLastBBXFlushTime() (uint64, uint, Return) GetMPSComputeRunningProcesses() ([]ProcessInfo, Return) + GetMarginTemperature() (MarginTemperature, Return) GetMaxClockInfo(ClockType) (uint32, Return) GetMaxCustomerBoostClock(ClockType) (uint32, Return) GetMaxMigDeviceCount() (int, Return) @@ -795,6 +893,8 @@ type Device interface { GetNvLinkUtilizationControl(int, int) (NvLinkUtilizationControl, Return) GetNvLinkUtilizationCounter(int, int) (uint64, uint64, Return) GetNvLinkVersion(int) (uint32, Return) + GetNvlinkBwMode() (NvlinkGetBwMode, Return) + GetNvlinkSupportedBwModes() (NvlinkSupportedBwModes, Return) GetOfaUtilization() (uint32, uint32, Return) GetP2PStatus(Device, GpuP2PCapsIndex) (GpuP2PStatus, Return) GetPciInfo() (PciInfo, Return) @@ -803,9 +903,11 @@ type Device interface { GetPcieReplayCounter() (int, Return) GetPcieSpeed() (int, Return) GetPcieThroughput(PcieUtilCounter) (uint32, Return) + GetPerformanceModes() (DevicePerfModes, Return) GetPerformanceState() (Pstates, Return) GetPersistenceMode() (EnableState, Return) GetPgpuMetadataString() (string, Return) + GetPlatformInfo() (PlatformInfo, Return) GetPowerManagementDefaultLimit() (uint32, Return) GetPowerManagementLimit() (uint32, Return) GetPowerManagementLimitConstraints() (uint32, uint32, Return) @@ -834,6 +936,7 @@ type Device interface { GetTargetFanSpeed(int) (int, Return) GetTemperature(TemperatureSensors) (uint32, Return) GetTemperatureThreshold(TemperatureThresholds) (uint32, Return) + GetTemperatureV() TemperatureHandler GetThermalSettings(uint32) (GpuThermalSettings, Return) GetTopologyCommonAncestor(Device) (GpuTopologyLevel, Return) GetTopologyNearestGpus(GpuTopologyLevel) ([]Device, Return) @@ -864,6 +967,9 @@ type Device interface { GpmSetStreamingEnabled(uint32) Return IsMigDeviceHandle() (bool, Return) OnSameBoard(Device) (int, Return) + PowerSmoothingActivatePresetProfile(*PowerSmoothingProfile) Return + PowerSmoothingSetState(*PowerSmoothingState) Return + PowerSmoothingUpdatePresetProfileParam(*PowerSmoothingProfile) Return RegisterEvents(uint64, EventSet) Return ResetApplicationsClocks() Return ResetGpuLockedClocks() Return @@ -874,11 +980,13 @@ type Device interface { SetAccountingMode(EnableState) Return SetApplicationsClocks(uint32, uint32) Return SetAutoBoostedClocksEnabled(EnableState) Return + SetClockOffsets(ClockOffset) Return SetComputeMode(ComputeMode) Return SetConfComputeUnprotectedMemSize(uint64) Return SetCpuAffinity() Return SetDefaultAutoBoostedClocksEnabled(EnableState, uint32) Return SetDefaultFanSpeed_v2(int) Return + SetDramEncryptionMode(*DramEncryptionInfo) Return SetDriverModel(DriverModel, uint32) Return SetEccMode(EnableState) Return SetFanControlPolicy(int, FanControlPolicy) Return @@ -891,6 +999,7 @@ type Device interface { SetMigMode(int) (Return, Return) SetNvLinkDeviceLowPowerThreshold(*NvLinkPowerThres) Return SetNvLinkUtilizationControl(int, int, *NvLinkUtilizationControl, bool) Return + SetNvlinkBwMode(*NvlinkSetBwMode) Return SetPersistenceMode(EnableState) Return SetPowerManagementLimit(uint32) Return SetPowerManagementLimit_v2(*PowerValue_v2) Return @@ -901,6 +1010,10 @@ type Device interface { SetVirtualizationMode(GpuVirtualizationMode) Return ValidateInforom() Return VgpuTypeGetMaxInstances(VgpuTypeId) (int, Return) + WorkloadPowerProfileClearRequestedProfiles(*WorkloadPowerProfileRequestedProfiles) Return + WorkloadPowerProfileGetCurrentProfiles() (WorkloadPowerProfileCurrentProfiles, Return) + WorkloadPowerProfileGetProfilesInfo() (WorkloadPowerProfileProfilesInfo, Return) + WorkloadPowerProfileSetRequestedProfiles(*WorkloadPowerProfileRequestedProfiles) Return } // GpuInstance represents the interface for the nvmlGpuInstance type. @@ -910,13 +1023,21 @@ type GpuInstance interface { CreateComputeInstance(*ComputeInstanceProfileInfo) (ComputeInstance, Return) CreateComputeInstanceWithPlacement(*ComputeInstanceProfileInfo, *ComputeInstancePlacement) (ComputeInstance, Return) Destroy() Return + GetActiveVgpus() (ActiveVgpuInstanceInfo, Return) GetComputeInstanceById(int) (ComputeInstance, Return) GetComputeInstancePossiblePlacements(*ComputeInstanceProfileInfo) ([]ComputeInstancePlacement, Return) GetComputeInstanceProfileInfo(int, int) (ComputeInstanceProfileInfo, Return) GetComputeInstanceProfileInfoV(int, int) ComputeInstanceProfileInfoHandler GetComputeInstanceRemainingCapacity(*ComputeInstanceProfileInfo) (int, Return) GetComputeInstances(*ComputeInstanceProfileInfo) ([]ComputeInstance, Return) + GetCreatableVgpus() (VgpuTypeIdInfo, Return) GetInfo() (GpuInstanceInfo, Return) + GetVgpuHeterogeneousMode() (VgpuHeterogeneousMode, Return) + GetVgpuSchedulerLog() (VgpuSchedulerLogInfo, Return) + GetVgpuSchedulerState() (VgpuSchedulerStateInfo, Return) + GetVgpuTypeCreatablePlacements() (VgpuCreatablePlacementInfo, Return) + SetVgpuHeterogeneousMode(*VgpuHeterogeneousMode) Return + SetVgpuSchedulerState(*VgpuSchedulerState) Return } // ComputeInstance represents the interface for the nvmlComputeInstance type. @@ -979,6 +1100,7 @@ type VgpuInstance interface { GetLicenseStatus() (int, Return) GetMdevUUID() (string, Return) GetMetadata() (VgpuMetadata, Return) + GetRuntimeStateSize() (VgpuRuntimeState, Return) GetType() (VgpuTypeId, Return) GetUUID() (string, Return) GetVmDriverVersion() (string, Return) @@ -990,6 +1112,7 @@ type VgpuInstance interface { // //go:generate moq -out mock/vgputypeid.go -pkg mock . VgpuTypeId:VgpuTypeId type VgpuTypeId interface { + GetBAR1Info() (VgpuTypeBar1Info, Return) GetCapabilities(VgpuCapability) (bool, Return) GetClass() (string, Return) GetCreatablePlacements(Device) (VgpuPlacementList, Return) diff --git a/vendor/github.com/cpuguy83/go-md2man/v2/md2man/md2man.go b/vendor/github.com/cpuguy83/go-md2man/v2/md2man/md2man.go deleted file mode 100644 index 42bf32aab..000000000 --- a/vendor/github.com/cpuguy83/go-md2man/v2/md2man/md2man.go +++ /dev/null @@ -1,16 +0,0 @@ -package md2man - -import ( - "github.com/russross/blackfriday/v2" -) - -// Render converts a markdown document into a roff formatted document. -func Render(doc []byte) []byte { - renderer := NewRoffRenderer() - - return blackfriday.Run(doc, - []blackfriday.Option{ - blackfriday.WithRenderer(renderer), - blackfriday.WithExtensions(renderer.GetExtensions()), - }...) -} diff --git a/vendor/github.com/cpuguy83/go-md2man/v2/md2man/roff.go b/vendor/github.com/cpuguy83/go-md2man/v2/md2man/roff.go deleted file mode 100644 index 8a290f197..000000000 --- a/vendor/github.com/cpuguy83/go-md2man/v2/md2man/roff.go +++ /dev/null @@ -1,382 +0,0 @@ -package md2man - -import ( - "bufio" - "bytes" - "fmt" - "io" - "os" - "strings" - - "github.com/russross/blackfriday/v2" -) - -// roffRenderer implements the blackfriday.Renderer interface for creating -// roff format (manpages) from markdown text -type roffRenderer struct { - extensions blackfriday.Extensions - listCounters []int - firstHeader bool - firstDD bool - listDepth int -} - -const ( - titleHeader = ".TH " - topLevelHeader = "\n\n.SH " - secondLevelHdr = "\n.SH " - otherHeader = "\n.SS " - crTag = "\n" - emphTag = "\\fI" - emphCloseTag = "\\fP" - strongTag = "\\fB" - strongCloseTag = "\\fP" - breakTag = "\n.br\n" - paraTag = "\n.PP\n" - hruleTag = "\n.ti 0\n\\l'\\n(.lu'\n" - linkTag = "\n\\[la]" - linkCloseTag = "\\[ra]" - codespanTag = "\\fB" - codespanCloseTag = "\\fR" - codeTag = "\n.EX\n" - codeCloseTag = ".EE\n" // Do not prepend a newline character since code blocks, by definition, include a newline already (or at least as how blackfriday gives us on). - quoteTag = "\n.PP\n.RS\n" - quoteCloseTag = "\n.RE\n" - listTag = "\n.RS\n" - listCloseTag = "\n.RE\n" - dtTag = "\n.TP\n" - dd2Tag = "\n" - tableStart = "\n.TS\nallbox;\n" - tableEnd = ".TE\n" - tableCellStart = "T{\n" - tableCellEnd = "\nT}\n" - tablePreprocessor = `'\" t` -) - -// NewRoffRenderer creates a new blackfriday Renderer for generating roff documents -// from markdown -func NewRoffRenderer() *roffRenderer { // nolint: golint - var extensions blackfriday.Extensions - - extensions |= blackfriday.NoIntraEmphasis - extensions |= blackfriday.Tables - extensions |= blackfriday.FencedCode - extensions |= blackfriday.SpaceHeadings - extensions |= blackfriday.Footnotes - extensions |= blackfriday.Titleblock - extensions |= blackfriday.DefinitionLists - return &roffRenderer{ - extensions: extensions, - } -} - -// GetExtensions returns the list of extensions used by this renderer implementation -func (r *roffRenderer) GetExtensions() blackfriday.Extensions { - return r.extensions -} - -// RenderHeader handles outputting the header at document start -func (r *roffRenderer) RenderHeader(w io.Writer, ast *blackfriday.Node) { - // We need to walk the tree to check if there are any tables. - // If there are, we need to enable the roff table preprocessor. - ast.Walk(func(node *blackfriday.Node, entering bool) blackfriday.WalkStatus { - if node.Type == blackfriday.Table { - out(w, tablePreprocessor+"\n") - return blackfriday.Terminate - } - return blackfriday.GoToNext - }) - - // disable hyphenation - out(w, ".nh\n") -} - -// RenderFooter handles outputting the footer at the document end; the roff -// renderer has no footer information -func (r *roffRenderer) RenderFooter(w io.Writer, ast *blackfriday.Node) { -} - -// RenderNode is called for each node in a markdown document; based on the node -// type the equivalent roff output is sent to the writer -func (r *roffRenderer) RenderNode(w io.Writer, node *blackfriday.Node, entering bool) blackfriday.WalkStatus { - walkAction := blackfriday.GoToNext - - switch node.Type { - case blackfriday.Text: - escapeSpecialChars(w, node.Literal) - case blackfriday.Softbreak: - out(w, crTag) - case blackfriday.Hardbreak: - out(w, breakTag) - case blackfriday.Emph: - if entering { - out(w, emphTag) - } else { - out(w, emphCloseTag) - } - case blackfriday.Strong: - if entering { - out(w, strongTag) - } else { - out(w, strongCloseTag) - } - case blackfriday.Link: - // Don't render the link text for automatic links, because this - // will only duplicate the URL in the roff output. - // See https://daringfireball.net/projects/markdown/syntax#autolink - if !bytes.Equal(node.LinkData.Destination, node.FirstChild.Literal) { - out(w, string(node.FirstChild.Literal)) - } - // Hyphens in a link must be escaped to avoid word-wrap in the rendered man page. - escapedLink := strings.ReplaceAll(string(node.LinkData.Destination), "-", "\\-") - out(w, linkTag+escapedLink+linkCloseTag) - walkAction = blackfriday.SkipChildren - case blackfriday.Image: - // ignore images - walkAction = blackfriday.SkipChildren - case blackfriday.Code: - out(w, codespanTag) - escapeSpecialChars(w, node.Literal) - out(w, codespanCloseTag) - case blackfriday.Document: - break - case blackfriday.Paragraph: - // roff .PP markers break lists - if r.listDepth > 0 { - return blackfriday.GoToNext - } - if entering { - out(w, paraTag) - } else { - out(w, crTag) - } - case blackfriday.BlockQuote: - if entering { - out(w, quoteTag) - } else { - out(w, quoteCloseTag) - } - case blackfriday.Heading: - r.handleHeading(w, node, entering) - case blackfriday.HorizontalRule: - out(w, hruleTag) - case blackfriday.List: - r.handleList(w, node, entering) - case blackfriday.Item: - r.handleItem(w, node, entering) - case blackfriday.CodeBlock: - out(w, codeTag) - escapeSpecialChars(w, node.Literal) - out(w, codeCloseTag) - case blackfriday.Table: - r.handleTable(w, node, entering) - case blackfriday.TableHead: - case blackfriday.TableBody: - case blackfriday.TableRow: - // no action as cell entries do all the nroff formatting - return blackfriday.GoToNext - case blackfriday.TableCell: - r.handleTableCell(w, node, entering) - case blackfriday.HTMLSpan: - // ignore other HTML tags - case blackfriday.HTMLBlock: - if bytes.HasPrefix(node.Literal, []byte("<!--")) { - break // ignore comments, no warning - } - fmt.Fprintln(os.Stderr, "WARNING: go-md2man does not handle node type "+node.Type.String()) - default: - fmt.Fprintln(os.Stderr, "WARNING: go-md2man does not handle node type "+node.Type.String()) - } - return walkAction -} - -func (r *roffRenderer) handleHeading(w io.Writer, node *blackfriday.Node, entering bool) { - if entering { - switch node.Level { - case 1: - if !r.firstHeader { - out(w, titleHeader) - r.firstHeader = true - break - } - out(w, topLevelHeader) - case 2: - out(w, secondLevelHdr) - default: - out(w, otherHeader) - } - } -} - -func (r *roffRenderer) handleList(w io.Writer, node *blackfriday.Node, entering bool) { - openTag := listTag - closeTag := listCloseTag - if node.ListFlags&blackfriday.ListTypeDefinition != 0 { - // tags for definition lists handled within Item node - openTag = "" - closeTag = "" - } - if entering { - r.listDepth++ - if node.ListFlags&blackfriday.ListTypeOrdered != 0 { - r.listCounters = append(r.listCounters, 1) - } - out(w, openTag) - } else { - if node.ListFlags&blackfriday.ListTypeOrdered != 0 { - r.listCounters = r.listCounters[:len(r.listCounters)-1] - } - out(w, closeTag) - r.listDepth-- - } -} - -func (r *roffRenderer) handleItem(w io.Writer, node *blackfriday.Node, entering bool) { - if entering { - if node.ListFlags&blackfriday.ListTypeOrdered != 0 { - out(w, fmt.Sprintf(".IP \"%3d.\" 5\n", r.listCounters[len(r.listCounters)-1])) - r.listCounters[len(r.listCounters)-1]++ - } else if node.ListFlags&blackfriday.ListTypeTerm != 0 { - // DT (definition term): line just before DD (see below). - out(w, dtTag) - r.firstDD = true - } else if node.ListFlags&blackfriday.ListTypeDefinition != 0 { - // DD (definition description): line that starts with ": ". - // - // We have to distinguish between the first DD and the - // subsequent ones, as there should be no vertical - // whitespace between the DT and the first DD. - if r.firstDD { - r.firstDD = false - } else { - out(w, dd2Tag) - } - } else { - out(w, ".IP \\(bu 2\n") - } - } else { - out(w, "\n") - } -} - -func (r *roffRenderer) handleTable(w io.Writer, node *blackfriday.Node, entering bool) { - if entering { - out(w, tableStart) - // call walker to count cells (and rows?) so format section can be produced - columns := countColumns(node) - out(w, strings.Repeat("l ", columns)+"\n") - out(w, strings.Repeat("l ", columns)+".\n") - } else { - out(w, tableEnd) - } -} - -func (r *roffRenderer) handleTableCell(w io.Writer, node *blackfriday.Node, entering bool) { - if entering { - var start string - if node.Prev != nil && node.Prev.Type == blackfriday.TableCell { - start = "\t" - } - if node.IsHeader { - start += strongTag - } else if nodeLiteralSize(node) > 30 { - start += tableCellStart - } - out(w, start) - } else { - var end string - if node.IsHeader { - end = strongCloseTag - } else if nodeLiteralSize(node) > 30 { - end = tableCellEnd - } - if node.Next == nil && end != tableCellEnd { - // Last cell: need to carriage return if we are at the end of the - // header row and content isn't wrapped in a "tablecell" - end += crTag - } - out(w, end) - } -} - -func nodeLiteralSize(node *blackfriday.Node) int { - total := 0 - for n := node.FirstChild; n != nil; n = n.FirstChild { - total += len(n.Literal) - } - return total -} - -// because roff format requires knowing the column count before outputting any table -// data we need to walk a table tree and count the columns -func countColumns(node *blackfriday.Node) int { - var columns int - - node.Walk(func(node *blackfriday.Node, entering bool) blackfriday.WalkStatus { - switch node.Type { - case blackfriday.TableRow: - if !entering { - return blackfriday.Terminate - } - case blackfriday.TableCell: - if entering { - columns++ - } - default: - } - return blackfriday.GoToNext - }) - return columns -} - -func out(w io.Writer, output string) { - io.WriteString(w, output) // nolint: errcheck -} - -func escapeSpecialChars(w io.Writer, text []byte) { - scanner := bufio.NewScanner(bytes.NewReader(text)) - - // count the number of lines in the text - // we need to know this to avoid adding a newline after the last line - n := bytes.Count(text, []byte{'\n'}) - idx := 0 - - for scanner.Scan() { - dt := scanner.Bytes() - if idx < n { - idx++ - dt = append(dt, '\n') - } - escapeSpecialCharsLine(w, dt) - } - - if err := scanner.Err(); err != nil { - panic(err) - } -} - -func escapeSpecialCharsLine(w io.Writer, text []byte) { - for i := 0; i < len(text); i++ { - // escape initial apostrophe or period - if len(text) >= 1 && (text[0] == '\'' || text[0] == '.') { - out(w, "\\&") - } - - // directly copy normal characters - org := i - - for i < len(text) && text[i] != '\\' { - i++ - } - if i > org { - w.Write(text[org:i]) // nolint: errcheck - } - - // escape a character - if i >= len(text) { - break - } - - w.Write([]byte{'\\', text[i]}) // nolint: errcheck - } -} diff --git a/vendor/github.com/cyphar/filepath-securejoin/CHANGELOG.md b/vendor/github.com/cyphar/filepath-securejoin/CHANGELOG.md new file mode 100644 index 000000000..ca0e3c62c --- /dev/null +++ b/vendor/github.com/cyphar/filepath-securejoin/CHANGELOG.md @@ -0,0 +1,256 @@ +# Changelog # +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](http://keepachangelog.com/) +and this project adheres to [Semantic Versioning](http://semver.org/). + +## [Unreleased] ## + +## [0.4.1] - 2025-01-28 ## + +### Fixed ### +- The restrictions added for `root` paths passed to `SecureJoin` in 0.4.0 was + found to be too strict and caused some regressions when folks tried to + update, so this restriction has been relaxed to only return an error if the + path contains a `..` component. We still recommend users use `filepath.Clean` + (and even `filepath.EvalSymlinks`) on the `root` path they are using, but at + least you will no longer be punished for "trivial" unclean paths. + +## [0.4.0] - 2025-01-13 ## + +### Breaking #### +- `SecureJoin(VFS)` will now return an error if the provided `root` is not a + `filepath.Clean`'d path. + + While it is ultimately the responsibility of the caller to ensure the root is + a safe path to use, passing a path like `/symlink/..` as a root would result + in the `SecureJoin`'d path being placed in `/` even though `/symlink/..` + might be a different directory, and so we should more strongly discourage + such usage. + + All major users of `securejoin.SecureJoin` already ensure that the paths they + provide are safe (and this is ultimately a question of user error), but + removing this foot-gun is probably a good idea. Of course, this is + necessarily a breaking API change (though we expect no real users to be + affected by it). + + Thanks to [Erik Sjölund](https://github.com/eriksjolund), who initially + reported this issue as a possible security issue. + +- `MkdirAll` and `MkdirHandle` now take an `os.FileMode`-style mode argument + instead of a raw `unix.S_*`-style mode argument, which may cause compile-time + type errors depending on how you use `filepath-securejoin`. For most users, + there will be no change in behaviour aside from the type change (as the + bottom `0o777` bits are the same in both formats, and most users are probably + only using those bits). + + However, if you were using `unix.S_ISVTX` to set the sticky bit with + `MkdirAll(Handle)` you will need to switch to `os.ModeSticky` otherwise you + will get a runtime error with this update. In addition, the error message you + will get from passing `unix.S_ISUID` and `unix.S_ISGID` will be different as + they are treated as invalid bits now (note that previously passing said bits + was also an error). + +## [0.3.6] - 2024-12-17 ## + +### Compatibility ### +- The minimum Go version requirement for `filepath-securejoin` is now Go 1.18 + (we use generics internally). + + For reference, `filepath-securejoin@v0.3.0` somewhat-arbitrarily bumped the + Go version requirement to 1.21. + + While we did make some use of Go 1.21 stdlib features (and in principle Go + versions <= 1.21 are no longer even supported by upstream anymore), some + downstreams have complained that the version bump has meant that they have to + do workarounds when backporting fixes that use the new `filepath-securejoin` + API onto old branches. This is not an ideal situation, but since using this + library is probably better for most downstreams than a hand-rolled + workaround, we now have compatibility shims that allow us to build on older + Go versions. +- Lower minimum version requirement for `golang.org/x/sys` to `v0.18.0` (we + need the wrappers for `fsconfig(2)`), which should also make backporting + patches to older branches easier. + +## [0.3.5] - 2024-12-06 ## + +### Fixed ### +- `MkdirAll` will now no longer return an `EEXIST` error if two racing + processes are creating the same directory. We will still verify that the path + is a directory, but this will avoid spurious errors when multiple threads or + programs are trying to `MkdirAll` the same path. opencontainers/runc#4543 + +## [0.3.4] - 2024-10-09 ## + +### Fixed ### +- Previously, some testing mocks we had resulted in us doing `import "testing"` + in non-`_test.go` code, which made some downstreams like Kubernetes unhappy. + This has been fixed. (#32) + +## [0.3.3] - 2024-09-30 ## + +### Fixed ### +- The mode and owner verification logic in `MkdirAll` has been removed. This + was originally intended to protect against some theoretical attacks but upon + further consideration these protections don't actually buy us anything and + they were causing spurious errors with more complicated filesystem setups. +- The "is the created directory empty" logic in `MkdirAll` has also been + removed. This was not causing us issues yet, but some pseudofilesystems (such + as `cgroup`) create non-empty directories and so this logic would've been + wrong for such cases. + +## [0.3.2] - 2024-09-13 ## + +### Changed ### +- Passing the `S_ISUID` or `S_ISGID` modes to `MkdirAllInRoot` will now return + an explicit error saying that those bits are ignored by `mkdirat(2)`. In the + past a different error was returned, but since the silent ignoring behaviour + is codified in the man pages a more explicit error seems apt. While silently + ignoring these bits would be the most compatible option, it could lead to + users thinking their code sets these bits when it doesn't. Programs that need + to deal with compatibility can mask the bits themselves. (#23, #25) + +### Fixed ### +- If a directory has `S_ISGID` set, then all child directories will have + `S_ISGID` set when created and a different gid will be used for any inode + created under the directory. Previously, the "expected owner and mode" + validation in `securejoin.MkdirAll` did not correctly handle this. We now + correctly handle this case. (#24, #25) + +## [0.3.1] - 2024-07-23 ## + +### Changed ### +- By allowing `Open(at)InRoot` to opt-out of the extra work done by `MkdirAll` + to do the necessary "partial lookups", `Open(at)InRoot` now does less work + for both implementations (resulting in a many-fold decrease in the number of + operations for `openat2`, and a modest improvement for non-`openat2`) and is + far more guaranteed to match the correct `openat2(RESOLVE_IN_ROOT)` + behaviour. +- We now use `readlinkat(fd, "")` where possible. For `Open(at)InRoot` this + effectively just means that we no longer risk getting spurious errors during + rename races. However, for our hardened procfs handler, this in theory should + prevent mount attacks from tricking us when doing magic-link readlinks (even + when using the unsafe host `/proc` handle). Unfortunately `Reopen` is still + potentially vulnerable to those kinds of somewhat-esoteric attacks. + + Technically this [will only work on post-2.6.39 kernels][linux-readlinkat-emptypath] + but it seems incredibly unlikely anyone is using `filepath-securejoin` on a + pre-2011 kernel. + +### Fixed ### +- Several improvements were made to the errors returned by `Open(at)InRoot` and + `MkdirAll` when dealing with invalid paths under the emulated (ie. + non-`openat2`) implementation. Previously, some paths would return the wrong + error (`ENOENT` when the last component was a non-directory), and other paths + would be returned as though they were acceptable (trailing-slash components + after a non-directory would be ignored by `Open(at)InRoot`). + + These changes were done to match `openat2`'s behaviour and purely is a + consistency fix (most users are going to be using `openat2` anyway). + +[linux-readlinkat-emptypath]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=65cfc6722361570bfe255698d9cd4dccaf47570d + +## [0.3.0] - 2024-07-11 ## + +### Added ### +- A new set of `*os.File`-based APIs have been added. These are adapted from + [libpathrs][] and we strongly suggest using them if possible (as they provide + far more protection against attacks than `SecureJoin`): + + - `Open(at)InRoot` resolves a path inside a rootfs and returns an `*os.File` + handle to the path. Note that the handle returned is an `O_PATH` handle, + which cannot be used for reading or writing (as well as some other + operations -- [see open(2) for more details][open.2]) + + - `Reopen` takes an `O_PATH` file handle and safely re-opens it to upgrade + it to a regular handle. This can also be used with non-`O_PATH` handles, + but `O_PATH` is the most obvious application. + + - `MkdirAll` is an implementation of `os.MkdirAll` that is safe to use to + create a directory tree within a rootfs. + + As these are new APIs, they may change in the future. However, they should be + safe to start migrating to as we have extensive tests ensuring they behave + correctly and are safe against various races and other attacks. + +[libpathrs]: https://github.com/openSUSE/libpathrs +[open.2]: https://www.man7.org/linux/man-pages/man2/open.2.html + +## [0.2.5] - 2024-05-03 ## + +### Changed ### +- Some minor changes were made to how lexical components (like `..` and `.`) + are handled during path generation in `SecureJoin`. There is no behaviour + change as a result of this fix (the resulting paths are the same). + +### Fixed ### +- The error returned when we hit a symlink loop now references the correct + path. (#10) + +## [0.2.4] - 2023-09-06 ## + +### Security ### +- This release fixes a potential security issue in filepath-securejoin when + used on Windows ([GHSA-6xv5-86q9-7xr8][], which could be used to generate + paths outside of the provided rootfs in certain cases), as well as improving + the overall behaviour of filepath-securejoin when dealing with Windows paths + that contain volume names. Thanks to Paulo Gomes for discovering and fixing + these issues. + +### Fixed ### +- Switch to GitHub Actions for CI so we can test on Windows as well as Linux + and MacOS. + +[GHSA-6xv5-86q9-7xr8]: https://github.com/advisories/GHSA-6xv5-86q9-7xr8 + +## [0.2.3] - 2021-06-04 ## + +### Changed ### +- Switch to Go 1.13-style `%w` error wrapping, letting us drop the dependency + on `github.com/pkg/errors`. + +## [0.2.2] - 2018-09-05 ## + +### Changed ### +- Use `syscall.ELOOP` as the base error for symlink loops, rather than our own + (internal) error. This allows callers to more easily use `errors.Is` to check + for this case. + +## [0.2.1] - 2018-09-05 ## + +### Fixed ### +- Use our own `IsNotExist` implementation, which lets us handle `ENOTDIR` + properly within `SecureJoin`. + +## [0.2.0] - 2017-07-19 ## + +We now have 100% test coverage! + +### Added ### +- Add a `SecureJoinVFS` API that can be used for mocking (as we do in our new + tests) or for implementing custom handling of lookup operations (such as for + rootless containers, where work is necessary to access directories with weird + modes because we don't have `CAP_DAC_READ_SEARCH` or `CAP_DAC_OVERRIDE`). + +## 0.1.0 - 2017-07-19 + +This is our first release of `github.com/cyphar/filepath-securejoin`, +containing a full implementation with a coverage of 93.5% (the only missing +cases are the error cases, which are hard to mocktest at the moment). + +[Unreleased]: https://github.com/cyphar/filepath-securejoin/compare/v0.4.1...HEAD +[0.4.1]: https://github.com/cyphar/filepath-securejoin/compare/v0.4.0...v0.4.1 +[0.4.0]: https://github.com/cyphar/filepath-securejoin/compare/v0.3.6...v0.4.0 +[0.3.6]: https://github.com/cyphar/filepath-securejoin/compare/v0.3.5...v0.3.6 +[0.3.5]: https://github.com/cyphar/filepath-securejoin/compare/v0.3.4...v0.3.5 +[0.3.4]: https://github.com/cyphar/filepath-securejoin/compare/v0.3.3...v0.3.4 +[0.3.3]: https://github.com/cyphar/filepath-securejoin/compare/v0.3.2...v0.3.3 +[0.3.2]: https://github.com/cyphar/filepath-securejoin/compare/v0.3.1...v0.3.2 +[0.3.1]: https://github.com/cyphar/filepath-securejoin/compare/v0.3.0...v0.3.1 +[0.3.0]: https://github.com/cyphar/filepath-securejoin/compare/v0.2.5...v0.3.0 +[0.2.5]: https://github.com/cyphar/filepath-securejoin/compare/v0.2.4...v0.2.5 +[0.2.4]: https://github.com/cyphar/filepath-securejoin/compare/v0.2.3...v0.2.4 +[0.2.3]: https://github.com/cyphar/filepath-securejoin/compare/v0.2.2...v0.2.3 +[0.2.2]: https://github.com/cyphar/filepath-securejoin/compare/v0.2.1...v0.2.2 +[0.2.1]: https://github.com/cyphar/filepath-securejoin/compare/v0.2.0...v0.2.1 +[0.2.0]: https://github.com/cyphar/filepath-securejoin/compare/v0.1.0...v0.2.0 diff --git a/vendor/github.com/cyphar/filepath-securejoin/LICENSE b/vendor/github.com/cyphar/filepath-securejoin/LICENSE new file mode 100644 index 000000000..cb1ab88da --- /dev/null +++ b/vendor/github.com/cyphar/filepath-securejoin/LICENSE @@ -0,0 +1,28 @@ +Copyright (C) 2014-2015 Docker Inc & Go Authors. All rights reserved. +Copyright (C) 2017-2024 SUSE LLC. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/cyphar/filepath-securejoin/README.md b/vendor/github.com/cyphar/filepath-securejoin/README.md new file mode 100644 index 000000000..eaeb53fcd --- /dev/null +++ b/vendor/github.com/cyphar/filepath-securejoin/README.md @@ -0,0 +1,169 @@ +## `filepath-securejoin` ## + +[![Go Documentation](https://pkg.go.dev/badge/github.com/cyphar/filepath-securejoin.svg)](https://pkg.go.dev/github.com/cyphar/filepath-securejoin) +[![Build Status](https://github.com/cyphar/filepath-securejoin/actions/workflows/ci.yml/badge.svg)](https://github.com/cyphar/filepath-securejoin/actions/workflows/ci.yml) + +### Old API ### + +This library was originally just an implementation of `SecureJoin` which was +[intended to be included in the Go standard library][go#20126] as a safer +`filepath.Join` that would restrict the path lookup to be inside a root +directory. + +The implementation was based on code that existed in several container +runtimes. Unfortunately, this API is **fundamentally unsafe** against attackers +that can modify path components after `SecureJoin` returns and before the +caller uses the path, allowing for some fairly trivial TOCTOU attacks. + +`SecureJoin` (and `SecureJoinVFS`) are still provided by this library to +support legacy users, but new users are strongly suggested to avoid using +`SecureJoin` and instead use the [new api](#new-api) or switch to +[libpathrs][libpathrs]. + +With the above limitations in mind, this library guarantees the following: + +* If no error is set, the resulting string **must** be a child path of + `root` and will not contain any symlink path components (they will all be + expanded). + +* When expanding symlinks, all symlink path components **must** be resolved + relative to the provided root. In particular, this can be considered a + userspace implementation of how `chroot(2)` operates on file paths. Note that + these symlinks will **not** be expanded lexically (`filepath.Clean` is not + called on the input before processing). + +* Non-existent path components are unaffected by `SecureJoin` (similar to + `filepath.EvalSymlinks`'s semantics). + +* The returned path will always be `filepath.Clean`ed and thus not contain any + `..` components. + +A (trivial) implementation of this function on GNU/Linux systems could be done +with the following (note that this requires root privileges and is far more +opaque than the implementation in this library, and also requires that +`readlink` is inside the `root` path and is trustworthy): + +```go +package securejoin + +import ( + "os/exec" + "path/filepath" +) + +func SecureJoin(root, unsafePath string) (string, error) { + unsafePath = string(filepath.Separator) + unsafePath + cmd := exec.Command("chroot", root, + "readlink", "--canonicalize-missing", "--no-newline", unsafePath) + output, err := cmd.CombinedOutput() + if err != nil { + return "", err + } + expanded := string(output) + return filepath.Join(root, expanded), nil +} +``` + +[libpathrs]: https://github.com/openSUSE/libpathrs +[go#20126]: https://github.com/golang/go/issues/20126 + +### New API ### + +While we recommend users switch to [libpathrs][libpathrs] as soon as it has a +stable release, some methods implemented by libpathrs have been ported to this +library to ease the transition. These APIs are only supported on Linux. + +These APIs are implemented such that `filepath-securejoin` will +opportunistically use certain newer kernel APIs that make these operations far +more secure. In particular: + +* All of the lookup operations will use [`openat2`][openat2.2] on new enough + kernels (Linux 5.6 or later) to restrict lookups through magic-links and + bind-mounts (for certain operations) and to make use of `RESOLVE_IN_ROOT` to + efficiently resolve symlinks within a rootfs. + +* The APIs provide hardening against a malicious `/proc` mount to either detect + or avoid being tricked by a `/proc` that is not legitimate. This is done + using [`openat2`][openat2.2] for all users, and privileged users will also be + further protected by using [`fsopen`][fsopen.2] and [`open_tree`][open_tree.2] + (Linux 5.2 or later). + +[openat2.2]: https://www.man7.org/linux/man-pages/man2/openat2.2.html +[fsopen.2]: https://github.com/brauner/man-pages-md/blob/main/fsopen.md +[open_tree.2]: https://github.com/brauner/man-pages-md/blob/main/open_tree.md + +#### `OpenInRoot` #### + +```go +func OpenInRoot(root, unsafePath string) (*os.File, error) +func OpenatInRoot(root *os.File, unsafePath string) (*os.File, error) +func Reopen(handle *os.File, flags int) (*os.File, error) +``` + +`OpenInRoot` is a much safer version of + +```go +path, err := securejoin.SecureJoin(root, unsafePath) +file, err := os.OpenFile(path, unix.O_PATH|unix.O_CLOEXEC) +``` + +that protects against various race attacks that could lead to serious security +issues, depending on the application. Note that the returned `*os.File` is an +`O_PATH` file descriptor, which is quite restricted. Callers will probably need +to use `Reopen` to get a more usable handle (this split is done to provide +useful features like PTY spawning and to avoid users accidentally opening bad +inodes that could cause a DoS). + +Callers need to be careful in how they use the returned `*os.File`. Usually it +is only safe to operate on the handle directly, and it is very easy to create a +security issue. [libpathrs][libpathrs] provides far more helpers to make using +these handles safer -- there is currently no plan to port them to +`filepath-securejoin`. + +`OpenatInRoot` is like `OpenInRoot` except that the root is provided using an +`*os.File`. This allows you to ensure that multiple `OpenatInRoot` (or +`MkdirAllHandle`) calls are operating on the same rootfs. + +> **NOTE**: Unlike `SecureJoin`, `OpenInRoot` will error out as soon as it hits +> a dangling symlink or non-existent path. This is in contrast to `SecureJoin` +> which treated non-existent components as though they were real directories, +> and would allow for partial resolution of dangling symlinks. These behaviours +> are at odds with how Linux treats non-existent paths and dangling symlinks, +> and so these are no longer allowed. + +#### `MkdirAll` #### + +```go +func MkdirAll(root, unsafePath string, mode int) error +func MkdirAllHandle(root *os.File, unsafePath string, mode int) (*os.File, error) +``` + +`MkdirAll` is a much safer version of + +```go +path, err := securejoin.SecureJoin(root, unsafePath) +err = os.MkdirAll(path, mode) +``` + +that protects against the same kinds of races that `OpenInRoot` protects +against. + +`MkdirAllHandle` is like `MkdirAll` except that the root is provided using an +`*os.File` (the reason for this is the same as with `OpenatInRoot`) and an +`*os.File` of the final created directory is returned (this directory is +guaranteed to be effectively identical to the directory created by +`MkdirAllHandle`, which is not possible to ensure by just using `OpenatInRoot` +after `MkdirAll`). + +> **NOTE**: Unlike `SecureJoin`, `MkdirAll` will error out as soon as it hits +> a dangling symlink or non-existent path. This is in contrast to `SecureJoin` +> which treated non-existent components as though they were real directories, +> and would allow for partial resolution of dangling symlinks. These behaviours +> are at odds with how Linux treats non-existent paths and dangling symlinks, +> and so these are no longer allowed. This means that `MkdirAll` will not +> create non-existent directories referenced by a dangling symlink. + +### License ### + +The license of this project is the same as Go, which is a BSD 3-clause license +available in the `LICENSE` file. diff --git a/vendor/github.com/cyphar/filepath-securejoin/VERSION b/vendor/github.com/cyphar/filepath-securejoin/VERSION new file mode 100644 index 000000000..267577d47 --- /dev/null +++ b/vendor/github.com/cyphar/filepath-securejoin/VERSION @@ -0,0 +1 @@ +0.4.1 diff --git a/vendor/github.com/cyphar/filepath-securejoin/doc.go b/vendor/github.com/cyphar/filepath-securejoin/doc.go new file mode 100644 index 000000000..1ec7d065e --- /dev/null +++ b/vendor/github.com/cyphar/filepath-securejoin/doc.go @@ -0,0 +1,39 @@ +// Copyright (C) 2014-2015 Docker Inc & Go Authors. All rights reserved. +// Copyright (C) 2017-2024 SUSE LLC. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package securejoin implements a set of helpers to make it easier to write Go +// code that is safe against symlink-related escape attacks. The primary idea +// is to let you resolve a path within a rootfs directory as if the rootfs was +// a chroot. +// +// securejoin has two APIs, a "legacy" API and a "modern" API. +// +// The legacy API is [SecureJoin] and [SecureJoinVFS]. These methods are +// **not** safe against race conditions where an attacker changes the +// filesystem after (or during) the [SecureJoin] operation. +// +// The new API is made up of [OpenInRoot] and [MkdirAll] (and derived +// functions). These are safe against racing attackers and have several other +// protections that are not provided by the legacy API. There are many more +// operations that most programs expect to be able to do safely, but we do not +// provide explicit support for them because we want to encourage users to +// switch to [libpathrs](https://github.com/openSUSE/libpathrs) which is a +// cross-language next-generation library that is entirely designed around +// operating on paths safely. +// +// securejoin has been used by several container runtimes (Docker, runc, +// Kubernetes, etc) for quite a few years as a de-facto standard for operating +// on container filesystem paths "safely". However, most users still use the +// legacy API which is unsafe against various attacks (there is a fairly long +// history of CVEs in dependent as a result). Users should switch to the modern +// API as soon as possible (or even better, switch to libpathrs). +// +// This project was initially intended to be included in the Go standard +// library, but [it was rejected](https://go.dev/issue/20126). There is now a +// [new Go proposal](https://go.dev/issue/67002) for a safe path resolution API +// that shares some of the goals of filepath-securejoin. However, that design +// is intended to work like `openat2(RESOLVE_BENEATH)` which does not fit the +// usecase of container runtimes and most system tools. +package securejoin diff --git a/vendor/github.com/cyphar/filepath-securejoin/gocompat_errors_go120.go b/vendor/github.com/cyphar/filepath-securejoin/gocompat_errors_go120.go new file mode 100644 index 000000000..42452bbf9 --- /dev/null +++ b/vendor/github.com/cyphar/filepath-securejoin/gocompat_errors_go120.go @@ -0,0 +1,18 @@ +//go:build linux && go1.20 + +// Copyright (C) 2024 SUSE LLC. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package securejoin + +import ( + "fmt" +) + +// wrapBaseError is a helper that is equivalent to fmt.Errorf("%w: %w"), except +// that on pre-1.20 Go versions only errors.Is() works properly (errors.Unwrap) +// is only guaranteed to give you baseErr. +func wrapBaseError(baseErr, extraErr error) error { + return fmt.Errorf("%w: %w", extraErr, baseErr) +} diff --git a/vendor/github.com/cyphar/filepath-securejoin/gocompat_errors_unsupported.go b/vendor/github.com/cyphar/filepath-securejoin/gocompat_errors_unsupported.go new file mode 100644 index 000000000..e7adca3fd --- /dev/null +++ b/vendor/github.com/cyphar/filepath-securejoin/gocompat_errors_unsupported.go @@ -0,0 +1,38 @@ +//go:build linux && !go1.20 + +// Copyright (C) 2024 SUSE LLC. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package securejoin + +import ( + "fmt" +) + +type wrappedError struct { + inner error + isError error +} + +func (err wrappedError) Is(target error) bool { + return err.isError == target +} + +func (err wrappedError) Unwrap() error { + return err.inner +} + +func (err wrappedError) Error() string { + return fmt.Sprintf("%v: %v", err.isError, err.inner) +} + +// wrapBaseError is a helper that is equivalent to fmt.Errorf("%w: %w"), except +// that on pre-1.20 Go versions only errors.Is() works properly (errors.Unwrap) +// is only guaranteed to give you baseErr. +func wrapBaseError(baseErr, extraErr error) error { + return wrappedError{ + inner: baseErr, + isError: extraErr, + } +} diff --git a/vendor/github.com/cyphar/filepath-securejoin/gocompat_generics_go121.go b/vendor/github.com/cyphar/filepath-securejoin/gocompat_generics_go121.go new file mode 100644 index 000000000..ddd6fa9a4 --- /dev/null +++ b/vendor/github.com/cyphar/filepath-securejoin/gocompat_generics_go121.go @@ -0,0 +1,32 @@ +//go:build linux && go1.21 + +// Copyright (C) 2024 SUSE LLC. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package securejoin + +import ( + "slices" + "sync" +) + +func slices_DeleteFunc[S ~[]E, E any](slice S, delFn func(E) bool) S { + return slices.DeleteFunc(slice, delFn) +} + +func slices_Contains[S ~[]E, E comparable](slice S, val E) bool { + return slices.Contains(slice, val) +} + +func slices_Clone[S ~[]E, E any](slice S) S { + return slices.Clone(slice) +} + +func sync_OnceValue[T any](f func() T) func() T { + return sync.OnceValue(f) +} + +func sync_OnceValues[T1, T2 any](f func() (T1, T2)) func() (T1, T2) { + return sync.OnceValues(f) +} diff --git a/vendor/github.com/cyphar/filepath-securejoin/gocompat_generics_unsupported.go b/vendor/github.com/cyphar/filepath-securejoin/gocompat_generics_unsupported.go new file mode 100644 index 000000000..f1e6fe7e7 --- /dev/null +++ b/vendor/github.com/cyphar/filepath-securejoin/gocompat_generics_unsupported.go @@ -0,0 +1,124 @@ +//go:build linux && !go1.21 + +// Copyright (C) 2024 SUSE LLC. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package securejoin + +import ( + "sync" +) + +// These are very minimal implementations of functions that appear in Go 1.21's +// stdlib, included so that we can build on older Go versions. Most are +// borrowed directly from the stdlib, and a few are modified to be "obviously +// correct" without needing to copy too many other helpers. + +// clearSlice is equivalent to the builtin clear from Go 1.21. +// Copied from the Go 1.24 stdlib implementation. +func clearSlice[S ~[]E, E any](slice S) { + var zero E + for i := range slice { + slice[i] = zero + } +} + +// Copied from the Go 1.24 stdlib implementation. +func slices_IndexFunc[S ~[]E, E any](s S, f func(E) bool) int { + for i := range s { + if f(s[i]) { + return i + } + } + return -1 +} + +// Copied from the Go 1.24 stdlib implementation. +func slices_DeleteFunc[S ~[]E, E any](s S, del func(E) bool) S { + i := slices_IndexFunc(s, del) + if i == -1 { + return s + } + // Don't start copying elements until we find one to delete. + for j := i + 1; j < len(s); j++ { + if v := s[j]; !del(v) { + s[i] = v + i++ + } + } + clearSlice(s[i:]) // zero/nil out the obsolete elements, for GC + return s[:i] +} + +// Similar to the stdlib slices.Contains, except that we don't have +// slices.Index so we need to use slices.IndexFunc for this non-Func helper. +func slices_Contains[S ~[]E, E comparable](s S, v E) bool { + return slices_IndexFunc(s, func(e E) bool { return e == v }) >= 0 +} + +// Copied from the Go 1.24 stdlib implementation. +func slices_Clone[S ~[]E, E any](s S) S { + // Preserve nil in case it matters. + if s == nil { + return nil + } + return append(S([]E{}), s...) +} + +// Copied from the Go 1.24 stdlib implementation. +func sync_OnceValue[T any](f func() T) func() T { + var ( + once sync.Once + valid bool + p any + result T + ) + g := func() { + defer func() { + p = recover() + if !valid { + panic(p) + } + }() + result = f() + f = nil + valid = true + } + return func() T { + once.Do(g) + if !valid { + panic(p) + } + return result + } +} + +// Copied from the Go 1.24 stdlib implementation. +func sync_OnceValues[T1, T2 any](f func() (T1, T2)) func() (T1, T2) { + var ( + once sync.Once + valid bool + p any + r1 T1 + r2 T2 + ) + g := func() { + defer func() { + p = recover() + if !valid { + panic(p) + } + }() + r1, r2 = f() + f = nil + valid = true + } + return func() (T1, T2) { + once.Do(g) + if !valid { + panic(p) + } + return r1, r2 + } +} diff --git a/vendor/github.com/cyphar/filepath-securejoin/join.go b/vendor/github.com/cyphar/filepath-securejoin/join.go new file mode 100644 index 000000000..e6634d477 --- /dev/null +++ b/vendor/github.com/cyphar/filepath-securejoin/join.go @@ -0,0 +1,166 @@ +// Copyright (C) 2014-2015 Docker Inc & Go Authors. All rights reserved. +// Copyright (C) 2017-2025 SUSE LLC. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package securejoin + +import ( + "errors" + "os" + "path/filepath" + "strings" + "syscall" +) + +const maxSymlinkLimit = 255 + +// IsNotExist tells you if err is an error that implies that either the path +// accessed does not exist (or path components don't exist). This is +// effectively a more broad version of [os.IsNotExist]. +func IsNotExist(err error) bool { + // Check that it's not actually an ENOTDIR, which in some cases is a more + // convoluted case of ENOENT (usually involving weird paths). + return errors.Is(err, os.ErrNotExist) || errors.Is(err, syscall.ENOTDIR) || errors.Is(err, syscall.ENOENT) +} + +// errUnsafeRoot is returned if the user provides SecureJoinVFS with a path +// that contains ".." components. +var errUnsafeRoot = errors.New("root path provided to SecureJoin contains '..' components") + +// stripVolume just gets rid of the Windows volume included in a path. Based on +// some godbolt tests, the Go compiler is smart enough to make this a no-op on +// Linux. +func stripVolume(path string) string { + return path[len(filepath.VolumeName(path)):] +} + +// hasDotDot checks if the path contains ".." components in a platform-agnostic +// way. +func hasDotDot(path string) bool { + // If we are on Windows, strip any volume letters. It turns out that + // C:..\foo may (or may not) be a valid pathname and we need to handle that + // leading "..". + path = stripVolume(path) + // Look for "/../" in the path, but we need to handle leading and trailing + // ".."s by adding separators. Doing this with filepath.Separator is ugly + // so just convert to Unix-style "/" first. + path = filepath.ToSlash(path) + return strings.Contains("/"+path+"/", "/../") +} + +// SecureJoinVFS joins the two given path components (similar to [filepath.Join]) except +// that the returned path is guaranteed to be scoped inside the provided root +// path (when evaluated). Any symbolic links in the path are evaluated with the +// given root treated as the root of the filesystem, similar to a chroot. The +// filesystem state is evaluated through the given [VFS] interface (if nil, the +// standard [os].* family of functions are used). +// +// Note that the guarantees provided by this function only apply if the path +// components in the returned string are not modified (in other words are not +// replaced with symlinks on the filesystem) after this function has returned. +// Such a symlink race is necessarily out-of-scope of SecureJoinVFS. +// +// NOTE: Due to the above limitation, Linux users are strongly encouraged to +// use [OpenInRoot] instead, which does safely protect against these kinds of +// attacks. There is no way to solve this problem with SecureJoinVFS because +// the API is fundamentally wrong (you cannot return a "safe" path string and +// guarantee it won't be modified afterwards). +// +// Volume names in unsafePath are always discarded, regardless if they are +// provided via direct input or when evaluating symlinks. Therefore: +// +// "C:\Temp" + "D:\path\to\file.txt" results in "C:\Temp\path\to\file.txt" +// +// If the provided root is not [filepath.Clean] then an error will be returned, +// as such root paths are bordering on somewhat unsafe and using such paths is +// not best practice. We also strongly suggest that any root path is first +// fully resolved using [filepath.EvalSymlinks] or otherwise constructed to +// avoid containing symlink components. Of course, the root also *must not* be +// attacker-controlled. +func SecureJoinVFS(root, unsafePath string, vfs VFS) (string, error) { + // The root path must not contain ".." components, otherwise when we join + // the subpath we will end up with a weird path. We could work around this + // in other ways but users shouldn't be giving us non-lexical root paths in + // the first place. + if hasDotDot(root) { + return "", errUnsafeRoot + } + + // Use the os.* VFS implementation if none was specified. + if vfs == nil { + vfs = osVFS{} + } + + unsafePath = filepath.FromSlash(unsafePath) + var ( + currentPath string + remainingPath = unsafePath + linksWalked int + ) + for remainingPath != "" { + // On Windows, if we managed to end up at a path referencing a volume, + // drop the volume to make sure we don't end up with broken paths or + // escaping the root volume. + remainingPath = stripVolume(remainingPath) + + // Get the next path component. + var part string + if i := strings.IndexRune(remainingPath, filepath.Separator); i == -1 { + part, remainingPath = remainingPath, "" + } else { + part, remainingPath = remainingPath[:i], remainingPath[i+1:] + } + + // Apply the component lexically to the path we are building. + // currentPath does not contain any symlinks, and we are lexically + // dealing with a single component, so it's okay to do a filepath.Clean + // here. + nextPath := filepath.Join(string(filepath.Separator), currentPath, part) + if nextPath == string(filepath.Separator) { + currentPath = "" + continue + } + fullPath := root + string(filepath.Separator) + nextPath + + // Figure out whether the path is a symlink. + fi, err := vfs.Lstat(fullPath) + if err != nil && !IsNotExist(err) { + return "", err + } + // Treat non-existent path components the same as non-symlinks (we + // can't do any better here). + if IsNotExist(err) || fi.Mode()&os.ModeSymlink == 0 { + currentPath = nextPath + continue + } + + // It's a symlink, so get its contents and expand it by prepending it + // to the yet-unparsed path. + linksWalked++ + if linksWalked > maxSymlinkLimit { + return "", &os.PathError{Op: "SecureJoin", Path: root + string(filepath.Separator) + unsafePath, Err: syscall.ELOOP} + } + + dest, err := vfs.Readlink(fullPath) + if err != nil { + return "", err + } + remainingPath = dest + string(filepath.Separator) + remainingPath + // Absolute symlinks reset any work we've already done. + if filepath.IsAbs(dest) { + currentPath = "" + } + } + + // There should be no lexical components like ".." left in the path here, + // but for safety clean up the path before joining it to the root. + finalPath := filepath.Join(string(filepath.Separator), currentPath) + return filepath.Join(root, finalPath), nil +} + +// SecureJoin is a wrapper around [SecureJoinVFS] that just uses the [os].* library +// of functions as the [VFS]. If in doubt, use this function over [SecureJoinVFS]. +func SecureJoin(root, unsafePath string) (string, error) { + return SecureJoinVFS(root, unsafePath, nil) +} diff --git a/vendor/github.com/cyphar/filepath-securejoin/lookup_linux.go b/vendor/github.com/cyphar/filepath-securejoin/lookup_linux.go new file mode 100644 index 000000000..be81e498d --- /dev/null +++ b/vendor/github.com/cyphar/filepath-securejoin/lookup_linux.go @@ -0,0 +1,388 @@ +//go:build linux + +// Copyright (C) 2024 SUSE LLC. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package securejoin + +import ( + "errors" + "fmt" + "os" + "path" + "path/filepath" + "strings" + + "golang.org/x/sys/unix" +) + +type symlinkStackEntry struct { + // (dir, remainingPath) is what we would've returned if the link didn't + // exist. This matches what openat2(RESOLVE_IN_ROOT) would return in + // this case. + dir *os.File + remainingPath string + // linkUnwalked is the remaining path components from the original + // Readlink which we have yet to walk. When this slice is empty, we + // drop the link from the stack. + linkUnwalked []string +} + +func (se symlinkStackEntry) String() string { + return fmt.Sprintf("<%s>/%s [->%s]", se.dir.Name(), se.remainingPath, strings.Join(se.linkUnwalked, "/")) +} + +func (se symlinkStackEntry) Close() { + _ = se.dir.Close() +} + +type symlinkStack []*symlinkStackEntry + +func (s *symlinkStack) IsEmpty() bool { + return s == nil || len(*s) == 0 +} + +func (s *symlinkStack) Close() { + if s != nil { + for _, link := range *s { + link.Close() + } + // TODO: Switch to clear once we switch to Go 1.21. + *s = nil + } +} + +var ( + errEmptyStack = errors.New("[internal] stack is empty") + errBrokenSymlinkStack = errors.New("[internal error] broken symlink stack") +) + +func (s *symlinkStack) popPart(part string) error { + if s == nil || s.IsEmpty() { + // If there is nothing in the symlink stack, then the part was from the + // real path provided by the user, and this is a no-op. + return errEmptyStack + } + if part == "." { + // "." components are no-ops -- we drop them when doing SwapLink. + return nil + } + + tailEntry := (*s)[len(*s)-1] + + // Double-check that we are popping the component we expect. + if len(tailEntry.linkUnwalked) == 0 { + return fmt.Errorf("%w: trying to pop component %q of empty stack entry %s", errBrokenSymlinkStack, part, tailEntry) + } + headPart := tailEntry.linkUnwalked[0] + if headPart != part { + return fmt.Errorf("%w: trying to pop component %q but the last stack entry is %s (%q)", errBrokenSymlinkStack, part, tailEntry, headPart) + } + + // Drop the component, but keep the entry around in case we are dealing + // with a "tail-chained" symlink. + tailEntry.linkUnwalked = tailEntry.linkUnwalked[1:] + return nil +} + +func (s *symlinkStack) PopPart(part string) error { + if err := s.popPart(part); err != nil { + if errors.Is(err, errEmptyStack) { + // Skip empty stacks. + err = nil + } + return err + } + + // Clean up any of the trailing stack entries that are empty. + for lastGood := len(*s) - 1; lastGood >= 0; lastGood-- { + entry := (*s)[lastGood] + if len(entry.linkUnwalked) > 0 { + break + } + entry.Close() + (*s) = (*s)[:lastGood] + } + return nil +} + +func (s *symlinkStack) push(dir *os.File, remainingPath, linkTarget string) error { + if s == nil { + return nil + } + // Split the link target and clean up any "" parts. + linkTargetParts := slices_DeleteFunc( + strings.Split(linkTarget, "/"), + func(part string) bool { return part == "" || part == "." }) + + // Copy the directory so the caller doesn't close our copy. + dirCopy, err := dupFile(dir) + if err != nil { + return err + } + + // Add to the stack. + *s = append(*s, &symlinkStackEntry{ + dir: dirCopy, + remainingPath: remainingPath, + linkUnwalked: linkTargetParts, + }) + return nil +} + +func (s *symlinkStack) SwapLink(linkPart string, dir *os.File, remainingPath, linkTarget string) error { + // If we are currently inside a symlink resolution, remove the symlink + // component from the last symlink entry, but don't remove the entry even + // if it's empty. If we are a "tail-chained" symlink (a trailing symlink we + // hit during a symlink resolution) we need to keep the old symlink until + // we finish the resolution. + if err := s.popPart(linkPart); err != nil { + if !errors.Is(err, errEmptyStack) { + return err + } + // Push the component regardless of whether the stack was empty. + } + return s.push(dir, remainingPath, linkTarget) +} + +func (s *symlinkStack) PopTopSymlink() (*os.File, string, bool) { + if s == nil || s.IsEmpty() { + return nil, "", false + } + tailEntry := (*s)[0] + *s = (*s)[1:] + return tailEntry.dir, tailEntry.remainingPath, true +} + +// partialLookupInRoot tries to lookup as much of the request path as possible +// within the provided root (a-la RESOLVE_IN_ROOT) and opens the final existing +// component of the requested path, returning a file handle to the final +// existing component and a string containing the remaining path components. +func partialLookupInRoot(root *os.File, unsafePath string) (*os.File, string, error) { + return lookupInRoot(root, unsafePath, true) +} + +func completeLookupInRoot(root *os.File, unsafePath string) (*os.File, error) { + handle, remainingPath, err := lookupInRoot(root, unsafePath, false) + if remainingPath != "" && err == nil { + // should never happen + err = fmt.Errorf("[bug] non-empty remaining path when doing a non-partial lookup: %q", remainingPath) + } + // lookupInRoot(partial=false) will always close the handle if an error is + // returned, so no need to double-check here. + return handle, err +} + +func lookupInRoot(root *os.File, unsafePath string, partial bool) (Handle *os.File, _ string, _ error) { + unsafePath = filepath.ToSlash(unsafePath) // noop + + // This is very similar to SecureJoin, except that we operate on the + // components using file descriptors. We then return the last component we + // managed open, along with the remaining path components not opened. + + // Try to use openat2 if possible. + if hasOpenat2() { + return lookupOpenat2(root, unsafePath, partial) + } + + // Get the "actual" root path from /proc/self/fd. This is necessary if the + // root is some magic-link like /proc/$pid/root, in which case we want to + // make sure when we do checkProcSelfFdPath that we are using the correct + // root path. + logicalRootPath, err := procSelfFdReadlink(root) + if err != nil { + return nil, "", fmt.Errorf("get real root path: %w", err) + } + + currentDir, err := dupFile(root) + if err != nil { + return nil, "", fmt.Errorf("clone root fd: %w", err) + } + defer func() { + // If a handle is not returned, close the internal handle. + if Handle == nil { + _ = currentDir.Close() + } + }() + + // symlinkStack is used to emulate how openat2(RESOLVE_IN_ROOT) treats + // dangling symlinks. If we hit a non-existent path while resolving a + // symlink, we need to return the (dir, remainingPath) that we had when we + // hit the symlink (treating the symlink as though it were a regular file). + // The set of (dir, remainingPath) sets is stored within the symlinkStack + // and we add and remove parts when we hit symlink and non-symlink + // components respectively. We need a stack because of recursive symlinks + // (symlinks that contain symlink components in their target). + // + // Note that the stack is ONLY used for book-keeping. All of the actual + // path walking logic is still based on currentPath/remainingPath and + // currentDir (as in SecureJoin). + var symStack *symlinkStack + if partial { + symStack = new(symlinkStack) + defer symStack.Close() + } + + var ( + linksWalked int + currentPath string + remainingPath = unsafePath + ) + for remainingPath != "" { + // Save the current remaining path so if the part is not real we can + // return the path including the component. + oldRemainingPath := remainingPath + + // Get the next path component. + var part string + if i := strings.IndexByte(remainingPath, '/'); i == -1 { + part, remainingPath = remainingPath, "" + } else { + part, remainingPath = remainingPath[:i], remainingPath[i+1:] + } + // If we hit an empty component, we need to treat it as though it is + // "." so that trailing "/" and "//" components on a non-directory + // correctly return the right error code. + if part == "" { + part = "." + } + + // Apply the component lexically to the path we are building. + // currentPath does not contain any symlinks, and we are lexically + // dealing with a single component, so it's okay to do a filepath.Clean + // here. + nextPath := path.Join("/", currentPath, part) + // If we logically hit the root, just clone the root rather than + // opening the part and doing all of the other checks. + if nextPath == "/" { + if err := symStack.PopPart(part); err != nil { + return nil, "", fmt.Errorf("walking into root with part %q failed: %w", part, err) + } + // Jump to root. + rootClone, err := dupFile(root) + if err != nil { + return nil, "", fmt.Errorf("clone root fd: %w", err) + } + _ = currentDir.Close() + currentDir = rootClone + currentPath = nextPath + continue + } + + // Try to open the next component. + nextDir, err := openatFile(currentDir, part, unix.O_PATH|unix.O_NOFOLLOW|unix.O_CLOEXEC, 0) + switch { + case err == nil: + st, err := nextDir.Stat() + if err != nil { + _ = nextDir.Close() + return nil, "", fmt.Errorf("stat component %q: %w", part, err) + } + + switch st.Mode() & os.ModeType { + case os.ModeSymlink: + // readlinkat implies AT_EMPTY_PATH since Linux 2.6.39. See + // Linux commit 65cfc6722361 ("readlinkat(), fchownat() and + // fstatat() with empty relative pathnames"). + linkDest, err := readlinkatFile(nextDir, "") + // We don't need the handle anymore. + _ = nextDir.Close() + if err != nil { + return nil, "", err + } + + linksWalked++ + if linksWalked > maxSymlinkLimit { + return nil, "", &os.PathError{Op: "securejoin.lookupInRoot", Path: logicalRootPath + "/" + unsafePath, Err: unix.ELOOP} + } + + // Swap out the symlink's component for the link entry itself. + if err := symStack.SwapLink(part, currentDir, oldRemainingPath, linkDest); err != nil { + return nil, "", fmt.Errorf("walking into symlink %q failed: push symlink: %w", part, err) + } + + // Update our logical remaining path. + remainingPath = linkDest + "/" + remainingPath + // Absolute symlinks reset any work we've already done. + if path.IsAbs(linkDest) { + // Jump to root. + rootClone, err := dupFile(root) + if err != nil { + return nil, "", fmt.Errorf("clone root fd: %w", err) + } + _ = currentDir.Close() + currentDir = rootClone + currentPath = "/" + } + + default: + // If we are dealing with a directory, simply walk into it. + _ = currentDir.Close() + currentDir = nextDir + currentPath = nextPath + + // The part was real, so drop it from the symlink stack. + if err := symStack.PopPart(part); err != nil { + return nil, "", fmt.Errorf("walking into directory %q failed: %w", part, err) + } + + // If we are operating on a .., make sure we haven't escaped. + // We only have to check for ".." here because walking down + // into a regular component component cannot cause you to + // escape. This mirrors the logic in RESOLVE_IN_ROOT, except we + // have to check every ".." rather than only checking after a + // rename or mount on the system. + if part == ".." { + // Make sure the root hasn't moved. + if err := checkProcSelfFdPath(logicalRootPath, root); err != nil { + return nil, "", fmt.Errorf("root path moved during lookup: %w", err) + } + // Make sure the path is what we expect. + fullPath := logicalRootPath + nextPath + if err := checkProcSelfFdPath(fullPath, currentDir); err != nil { + return nil, "", fmt.Errorf("walking into %q had unexpected result: %w", part, err) + } + } + } + + default: + if !partial { + return nil, "", err + } + // If there are any remaining components in the symlink stack, we + // are still within a symlink resolution and thus we hit a dangling + // symlink. So pretend that the first symlink in the stack we hit + // was an ENOENT (to match openat2). + if oldDir, remainingPath, ok := symStack.PopTopSymlink(); ok { + _ = currentDir.Close() + return oldDir, remainingPath, err + } + // We have hit a final component that doesn't exist, so we have our + // partial open result. Note that we have to use the OLD remaining + // path, since the lookup failed. + return currentDir, oldRemainingPath, err + } + } + + // If the unsafePath had a trailing slash, we need to make sure we try to + // do a relative "." open so that we will correctly return an error when + // the final component is a non-directory (to match openat2). In the + // context of openat2, a trailing slash and a trailing "/." are completely + // equivalent. + if strings.HasSuffix(unsafePath, "/") { + nextDir, err := openatFile(currentDir, ".", unix.O_PATH|unix.O_NOFOLLOW|unix.O_CLOEXEC, 0) + if err != nil { + if !partial { + _ = currentDir.Close() + currentDir = nil + } + return currentDir, "", err + } + _ = currentDir.Close() + currentDir = nextDir + } + + // All of the components existed! + return currentDir, "", nil +} diff --git a/vendor/github.com/cyphar/filepath-securejoin/mkdir_linux.go b/vendor/github.com/cyphar/filepath-securejoin/mkdir_linux.go new file mode 100644 index 000000000..a17ae3b03 --- /dev/null +++ b/vendor/github.com/cyphar/filepath-securejoin/mkdir_linux.go @@ -0,0 +1,236 @@ +//go:build linux + +// Copyright (C) 2024 SUSE LLC. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package securejoin + +import ( + "errors" + "fmt" + "os" + "path/filepath" + "strings" + + "golang.org/x/sys/unix" +) + +var ( + errInvalidMode = errors.New("invalid permission mode") + errPossibleAttack = errors.New("possible attack detected") +) + +// modePermExt is like os.ModePerm except that it also includes the set[ug]id +// and sticky bits. +const modePermExt = os.ModePerm | os.ModeSetuid | os.ModeSetgid | os.ModeSticky + +//nolint:cyclop // this function needs to handle a lot of cases +func toUnixMode(mode os.FileMode) (uint32, error) { + sysMode := uint32(mode.Perm()) + if mode&os.ModeSetuid != 0 { + sysMode |= unix.S_ISUID + } + if mode&os.ModeSetgid != 0 { + sysMode |= unix.S_ISGID + } + if mode&os.ModeSticky != 0 { + sysMode |= unix.S_ISVTX + } + // We don't allow file type bits. + if mode&os.ModeType != 0 { + return 0, fmt.Errorf("%w %+.3o (%s): type bits not permitted", errInvalidMode, mode, mode) + } + // We don't allow other unknown modes. + if mode&^modePermExt != 0 || sysMode&unix.S_IFMT != 0 { + return 0, fmt.Errorf("%w %+.3o (%s): unknown mode bits", errInvalidMode, mode, mode) + } + return sysMode, nil +} + +// MkdirAllHandle is equivalent to [MkdirAll], except that it is safer to use +// in two respects: +// +// - The caller provides the root directory as an *[os.File] (preferably O_PATH) +// handle. This means that the caller can be sure which root directory is +// being used. Note that this can be emulated by using /proc/self/fd/... as +// the root path with [os.MkdirAll]. +// +// - Once all of the directories have been created, an *[os.File] O_PATH handle +// to the directory at unsafePath is returned to the caller. This is done in +// an effectively-race-free way (an attacker would only be able to swap the +// final directory component), which is not possible to emulate with +// [MkdirAll]. +// +// In addition, the returned handle is obtained far more efficiently than doing +// a brand new lookup of unsafePath (such as with [SecureJoin] or openat2) after +// doing [MkdirAll]. If you intend to open the directory after creating it, you +// should use MkdirAllHandle. +func MkdirAllHandle(root *os.File, unsafePath string, mode os.FileMode) (_ *os.File, Err error) { + unixMode, err := toUnixMode(mode) + if err != nil { + return nil, err + } + // On Linux, mkdirat(2) (and os.Mkdir) silently ignore the suid and sgid + // bits. We could also silently ignore them but since we have very few + // users it seems more prudent to return an error so users notice that + // these bits will not be set. + if unixMode&^0o1777 != 0 { + return nil, fmt.Errorf("%w for mkdir %+.3o: suid and sgid are ignored by mkdir", errInvalidMode, mode) + } + + // Try to open as much of the path as possible. + currentDir, remainingPath, err := partialLookupInRoot(root, unsafePath) + defer func() { + if Err != nil { + _ = currentDir.Close() + } + }() + if err != nil && !errors.Is(err, unix.ENOENT) { + return nil, fmt.Errorf("find existing subpath of %q: %w", unsafePath, err) + } + + // If there is an attacker deleting directories as we walk into them, + // detect this proactively. Note this is guaranteed to detect if the + // attacker deleted any part of the tree up to currentDir. + // + // Once we walk into a dead directory, partialLookupInRoot would not be + // able to walk further down the tree (directories must be empty before + // they are deleted), and if the attacker has removed the entire tree we + // can be sure that anything that was originally inside a dead directory + // must also be deleted and thus is a dead directory in its own right. + // + // This is mostly a quality-of-life check, because mkdir will simply fail + // later if the attacker deletes the tree after this check. + if err := isDeadInode(currentDir); err != nil { + return nil, fmt.Errorf("finding existing subpath of %q: %w", unsafePath, err) + } + + // Re-open the path to match the O_DIRECTORY reopen loop later (so that we + // always return a non-O_PATH handle). We also check that we actually got a + // directory. + if reopenDir, err := Reopen(currentDir, unix.O_DIRECTORY|unix.O_CLOEXEC); errors.Is(err, unix.ENOTDIR) { + return nil, fmt.Errorf("cannot create subdirectories in %q: %w", currentDir.Name(), unix.ENOTDIR) + } else if err != nil { + return nil, fmt.Errorf("re-opening handle to %q: %w", currentDir.Name(), err) + } else { + _ = currentDir.Close() + currentDir = reopenDir + } + + remainingParts := strings.Split(remainingPath, string(filepath.Separator)) + if slices_Contains(remainingParts, "..") { + // The path contained ".." components after the end of the "real" + // components. We could try to safely resolve ".." here but that would + // add a bunch of extra logic for something that it's not clear even + // needs to be supported. So just return an error. + // + // If we do filepath.Clean(remainingPath) then we end up with the + // problem that ".." can erase a trailing dangling symlink and produce + // a path that doesn't quite match what the user asked for. + return nil, fmt.Errorf("%w: yet-to-be-created path %q contains '..' components", unix.ENOENT, remainingPath) + } + + // Create the remaining components. + for _, part := range remainingParts { + switch part { + case "", ".": + // Skip over no-op paths. + continue + } + + // NOTE: mkdir(2) will not follow trailing symlinks, so we can safely + // create the final component without worrying about symlink-exchange + // attacks. + // + // If we get -EEXIST, it's possible that another program created the + // directory at the same time as us. In that case, just continue on as + // if we created it (if the created inode is not a directory, the + // following open call will fail). + if err := unix.Mkdirat(int(currentDir.Fd()), part, unixMode); err != nil && !errors.Is(err, unix.EEXIST) { + err = &os.PathError{Op: "mkdirat", Path: currentDir.Name() + "/" + part, Err: err} + // Make the error a bit nicer if the directory is dead. + if deadErr := isDeadInode(currentDir); deadErr != nil { + // TODO: Once we bump the minimum Go version to 1.20, we can use + // multiple %w verbs for this wrapping. For now we need to use a + // compatibility shim for older Go versions. + //err = fmt.Errorf("%w (%w)", err, deadErr) + err = wrapBaseError(err, deadErr) + } + return nil, err + } + + // Get a handle to the next component. O_DIRECTORY means we don't need + // to use O_PATH. + var nextDir *os.File + if hasOpenat2() { + nextDir, err = openat2File(currentDir, part, &unix.OpenHow{ + Flags: unix.O_NOFOLLOW | unix.O_DIRECTORY | unix.O_CLOEXEC, + Resolve: unix.RESOLVE_BENEATH | unix.RESOLVE_NO_SYMLINKS | unix.RESOLVE_NO_XDEV, + }) + } else { + nextDir, err = openatFile(currentDir, part, unix.O_NOFOLLOW|unix.O_DIRECTORY|unix.O_CLOEXEC, 0) + } + if err != nil { + return nil, err + } + _ = currentDir.Close() + currentDir = nextDir + + // It's possible that the directory we just opened was swapped by an + // attacker. Unfortunately there isn't much we can do to protect + // against this, and MkdirAll's behaviour is that we will reuse + // existing directories anyway so the need to protect against this is + // incredibly limited (and arguably doesn't even deserve mention here). + // + // Ideally we might want to check that the owner and mode match what we + // would've created -- unfortunately, it is non-trivial to verify that + // the owner and mode of the created directory match. While plain Unix + // DAC rules seem simple enough to emulate, there are a bunch of other + // factors that can change the mode or owner of created directories + // (default POSIX ACLs, mount options like uid=1,gid=2,umask=0 on + // filesystems like vfat, etc etc). We used to try to verify this but + // it just lead to a series of spurious errors. + // + // We could also check that the directory is non-empty, but + // unfortunately some pseduofilesystems (like cgroupfs) create + // non-empty directories, which would result in different spurious + // errors. + } + return currentDir, nil +} + +// MkdirAll is a race-safe alternative to the [os.MkdirAll] function, +// where the new directory is guaranteed to be within the root directory (if an +// attacker can move directories from inside the root to outside the root, the +// created directory tree might be outside of the root but the key constraint +// is that at no point will we walk outside of the directory tree we are +// creating). +// +// Effectively, MkdirAll(root, unsafePath, mode) is equivalent to +// +// path, _ := securejoin.SecureJoin(root, unsafePath) +// err := os.MkdirAll(path, mode) +// +// But is much safer. The above implementation is unsafe because if an attacker +// can modify the filesystem tree between [SecureJoin] and [os.MkdirAll], it is +// possible for MkdirAll to resolve unsafe symlink components and create +// directories outside of the root. +// +// If you plan to open the directory after you have created it or want to use +// an open directory handle as the root, you should use [MkdirAllHandle] instead. +// This function is a wrapper around [MkdirAllHandle]. +func MkdirAll(root, unsafePath string, mode os.FileMode) error { + rootDir, err := os.OpenFile(root, unix.O_PATH|unix.O_DIRECTORY|unix.O_CLOEXEC, 0) + if err != nil { + return err + } + defer rootDir.Close() + + f, err := MkdirAllHandle(rootDir, unsafePath, mode) + if err != nil { + return err + } + _ = f.Close() + return nil +} diff --git a/vendor/github.com/cyphar/filepath-securejoin/open_linux.go b/vendor/github.com/cyphar/filepath-securejoin/open_linux.go new file mode 100644 index 000000000..230be73f0 --- /dev/null +++ b/vendor/github.com/cyphar/filepath-securejoin/open_linux.go @@ -0,0 +1,103 @@ +//go:build linux + +// Copyright (C) 2024 SUSE LLC. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package securejoin + +import ( + "fmt" + "os" + "strconv" + + "golang.org/x/sys/unix" +) + +// OpenatInRoot is equivalent to [OpenInRoot], except that the root is provided +// using an *[os.File] handle, to ensure that the correct root directory is used. +func OpenatInRoot(root *os.File, unsafePath string) (*os.File, error) { + handle, err := completeLookupInRoot(root, unsafePath) + if err != nil { + return nil, &os.PathError{Op: "securejoin.OpenInRoot", Path: unsafePath, Err: err} + } + return handle, nil +} + +// OpenInRoot safely opens the provided unsafePath within the root. +// Effectively, OpenInRoot(root, unsafePath) is equivalent to +// +// path, _ := securejoin.SecureJoin(root, unsafePath) +// handle, err := os.OpenFile(path, unix.O_PATH|unix.O_CLOEXEC) +// +// But is much safer. The above implementation is unsafe because if an attacker +// can modify the filesystem tree between [SecureJoin] and [os.OpenFile], it is +// possible for the returned file to be outside of the root. +// +// Note that the returned handle is an O_PATH handle, meaning that only a very +// limited set of operations will work on the handle. This is done to avoid +// accidentally opening an untrusted file that could cause issues (such as a +// disconnected TTY that could cause a DoS, or some other issue). In order to +// use the returned handle, you can "upgrade" it to a proper handle using +// [Reopen]. +func OpenInRoot(root, unsafePath string) (*os.File, error) { + rootDir, err := os.OpenFile(root, unix.O_PATH|unix.O_DIRECTORY|unix.O_CLOEXEC, 0) + if err != nil { + return nil, err + } + defer rootDir.Close() + return OpenatInRoot(rootDir, unsafePath) +} + +// Reopen takes an *[os.File] handle and re-opens it through /proc/self/fd. +// Reopen(file, flags) is effectively equivalent to +// +// fdPath := fmt.Sprintf("/proc/self/fd/%d", file.Fd()) +// os.OpenFile(fdPath, flags|unix.O_CLOEXEC) +// +// But with some extra hardenings to ensure that we are not tricked by a +// maliciously-configured /proc mount. While this attack scenario is not +// common, in container runtimes it is possible for higher-level runtimes to be +// tricked into configuring an unsafe /proc that can be used to attack file +// operations. See [CVE-2019-19921] for more details. +// +// [CVE-2019-19921]: https://github.com/advisories/GHSA-fh74-hm69-rqjw +func Reopen(handle *os.File, flags int) (*os.File, error) { + procRoot, err := getProcRoot() + if err != nil { + return nil, err + } + + // We can't operate on /proc/thread-self/fd/$n directly when doing a + // re-open, so we need to open /proc/thread-self/fd and then open a single + // final component. + procFdDir, closer, err := procThreadSelf(procRoot, "fd/") + if err != nil { + return nil, fmt.Errorf("get safe /proc/thread-self/fd handle: %w", err) + } + defer procFdDir.Close() + defer closer() + + // Try to detect if there is a mount on top of the magic-link we are about + // to open. If we are using unsafeHostProcRoot(), this could change after + // we check it (and there's nothing we can do about that) but for + // privateProcRoot() this should be guaranteed to be safe (at least since + // Linux 5.12[1], when anonymous mount namespaces were completely isolated + // from external mounts including mount propagation events). + // + // [1]: Linux commit ee2e3f50629f ("mount: fix mounting of detached mounts + // onto targets that reside on shared mounts"). + fdStr := strconv.Itoa(int(handle.Fd())) + if err := checkSymlinkOvermount(procRoot, procFdDir, fdStr); err != nil { + return nil, fmt.Errorf("check safety of /proc/thread-self/fd/%s magiclink: %w", fdStr, err) + } + + flags |= unix.O_CLOEXEC + // Rather than just wrapping openatFile, open-code it so we can copy + // handle.Name(). + reopenFd, err := unix.Openat(int(procFdDir.Fd()), fdStr, flags, 0) + if err != nil { + return nil, fmt.Errorf("reopen fd %d: %w", handle.Fd(), err) + } + return os.NewFile(uintptr(reopenFd), handle.Name()), nil +} diff --git a/vendor/github.com/cyphar/filepath-securejoin/openat2_linux.go b/vendor/github.com/cyphar/filepath-securejoin/openat2_linux.go new file mode 100644 index 000000000..f7a13e69c --- /dev/null +++ b/vendor/github.com/cyphar/filepath-securejoin/openat2_linux.go @@ -0,0 +1,127 @@ +//go:build linux + +// Copyright (C) 2024 SUSE LLC. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package securejoin + +import ( + "errors" + "fmt" + "os" + "path/filepath" + "strings" + + "golang.org/x/sys/unix" +) + +var hasOpenat2 = sync_OnceValue(func() bool { + fd, err := unix.Openat2(unix.AT_FDCWD, ".", &unix.OpenHow{ + Flags: unix.O_PATH | unix.O_CLOEXEC, + Resolve: unix.RESOLVE_NO_SYMLINKS | unix.RESOLVE_IN_ROOT, + }) + if err != nil { + return false + } + _ = unix.Close(fd) + return true +}) + +func scopedLookupShouldRetry(how *unix.OpenHow, err error) bool { + // RESOLVE_IN_ROOT (and RESOLVE_BENEATH) can return -EAGAIN if we resolve + // ".." while a mount or rename occurs anywhere on the system. This could + // happen spuriously, or as the result of an attacker trying to mess with + // us during lookup. + // + // In addition, scoped lookups have a "safety check" at the end of + // complete_walk which will return -EXDEV if the final path is not in the + // root. + return how.Resolve&(unix.RESOLVE_IN_ROOT|unix.RESOLVE_BENEATH) != 0 && + (errors.Is(err, unix.EAGAIN) || errors.Is(err, unix.EXDEV)) +} + +const scopedLookupMaxRetries = 10 + +func openat2File(dir *os.File, path string, how *unix.OpenHow) (*os.File, error) { + fullPath := dir.Name() + "/" + path + // Make sure we always set O_CLOEXEC. + how.Flags |= unix.O_CLOEXEC + var tries int + for tries < scopedLookupMaxRetries { + fd, err := unix.Openat2(int(dir.Fd()), path, how) + if err != nil { + if scopedLookupShouldRetry(how, err) { + // We retry a couple of times to avoid the spurious errors, and + // if we are being attacked then returning -EAGAIN is the best + // we can do. + tries++ + continue + } + return nil, &os.PathError{Op: "openat2", Path: fullPath, Err: err} + } + // If we are using RESOLVE_IN_ROOT, the name we generated may be wrong. + // NOTE: The procRoot code MUST NOT use RESOLVE_IN_ROOT, otherwise + // you'll get infinite recursion here. + if how.Resolve&unix.RESOLVE_IN_ROOT == unix.RESOLVE_IN_ROOT { + if actualPath, err := rawProcSelfFdReadlink(fd); err == nil { + fullPath = actualPath + } + } + return os.NewFile(uintptr(fd), fullPath), nil + } + return nil, &os.PathError{Op: "openat2", Path: fullPath, Err: errPossibleAttack} +} + +func lookupOpenat2(root *os.File, unsafePath string, partial bool) (*os.File, string, error) { + if !partial { + file, err := openat2File(root, unsafePath, &unix.OpenHow{ + Flags: unix.O_PATH | unix.O_CLOEXEC, + Resolve: unix.RESOLVE_IN_ROOT | unix.RESOLVE_NO_MAGICLINKS, + }) + return file, "", err + } + return partialLookupOpenat2(root, unsafePath) +} + +// partialLookupOpenat2 is an alternative implementation of +// partialLookupInRoot, using openat2(RESOLVE_IN_ROOT) to more safely get a +// handle to the deepest existing child of the requested path within the root. +func partialLookupOpenat2(root *os.File, unsafePath string) (*os.File, string, error) { + // TODO: Implement this as a git-bisect-like binary search. + + unsafePath = filepath.ToSlash(unsafePath) // noop + endIdx := len(unsafePath) + var lastError error + for endIdx > 0 { + subpath := unsafePath[:endIdx] + + handle, err := openat2File(root, subpath, &unix.OpenHow{ + Flags: unix.O_PATH | unix.O_CLOEXEC, + Resolve: unix.RESOLVE_IN_ROOT | unix.RESOLVE_NO_MAGICLINKS, + }) + if err == nil { + // Jump over the slash if we have a non-"" remainingPath. + if endIdx < len(unsafePath) { + endIdx += 1 + } + // We found a subpath! + return handle, unsafePath[endIdx:], lastError + } + if errors.Is(err, unix.ENOENT) || errors.Is(err, unix.ENOTDIR) { + // That path doesn't exist, let's try the next directory up. + endIdx = strings.LastIndexByte(subpath, '/') + lastError = err + continue + } + return nil, "", fmt.Errorf("open subpath: %w", err) + } + // If we couldn't open anything, the whole subpath is missing. Return a + // copy of the root fd so that the caller doesn't close this one by + // accident. + rootClone, err := dupFile(root) + if err != nil { + return nil, "", err + } + return rootClone, unsafePath, lastError +} diff --git a/vendor/github.com/cyphar/filepath-securejoin/openat_linux.go b/vendor/github.com/cyphar/filepath-securejoin/openat_linux.go new file mode 100644 index 000000000..949fb5f2d --- /dev/null +++ b/vendor/github.com/cyphar/filepath-securejoin/openat_linux.go @@ -0,0 +1,59 @@ +//go:build linux + +// Copyright (C) 2024 SUSE LLC. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package securejoin + +import ( + "os" + "path/filepath" + + "golang.org/x/sys/unix" +) + +func dupFile(f *os.File) (*os.File, error) { + fd, err := unix.FcntlInt(f.Fd(), unix.F_DUPFD_CLOEXEC, 0) + if err != nil { + return nil, os.NewSyscallError("fcntl(F_DUPFD_CLOEXEC)", err) + } + return os.NewFile(uintptr(fd), f.Name()), nil +} + +func openatFile(dir *os.File, path string, flags int, mode int) (*os.File, error) { + // Make sure we always set O_CLOEXEC. + flags |= unix.O_CLOEXEC + fd, err := unix.Openat(int(dir.Fd()), path, flags, uint32(mode)) + if err != nil { + return nil, &os.PathError{Op: "openat", Path: dir.Name() + "/" + path, Err: err} + } + // All of the paths we use with openatFile(2) are guaranteed to be + // lexically safe, so we can use path.Join here. + fullPath := filepath.Join(dir.Name(), path) + return os.NewFile(uintptr(fd), fullPath), nil +} + +func fstatatFile(dir *os.File, path string, flags int) (unix.Stat_t, error) { + var stat unix.Stat_t + if err := unix.Fstatat(int(dir.Fd()), path, &stat, flags); err != nil { + return stat, &os.PathError{Op: "fstatat", Path: dir.Name() + "/" + path, Err: err} + } + return stat, nil +} + +func readlinkatFile(dir *os.File, path string) (string, error) { + size := 4096 + for { + linkBuf := make([]byte, size) + n, err := unix.Readlinkat(int(dir.Fd()), path, linkBuf) + if err != nil { + return "", &os.PathError{Op: "readlinkat", Path: dir.Name() + "/" + path, Err: err} + } + if n != size { + return string(linkBuf[:n]), nil + } + // Possible truncation, resize the buffer. + size *= 2 + } +} diff --git a/vendor/github.com/cyphar/filepath-securejoin/procfs_linux.go b/vendor/github.com/cyphar/filepath-securejoin/procfs_linux.go new file mode 100644 index 000000000..809a579cb --- /dev/null +++ b/vendor/github.com/cyphar/filepath-securejoin/procfs_linux.go @@ -0,0 +1,452 @@ +//go:build linux + +// Copyright (C) 2024 SUSE LLC. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package securejoin + +import ( + "errors" + "fmt" + "os" + "runtime" + "strconv" + + "golang.org/x/sys/unix" +) + +func fstat(f *os.File) (unix.Stat_t, error) { + var stat unix.Stat_t + if err := unix.Fstat(int(f.Fd()), &stat); err != nil { + return stat, &os.PathError{Op: "fstat", Path: f.Name(), Err: err} + } + return stat, nil +} + +func fstatfs(f *os.File) (unix.Statfs_t, error) { + var statfs unix.Statfs_t + if err := unix.Fstatfs(int(f.Fd()), &statfs); err != nil { + return statfs, &os.PathError{Op: "fstatfs", Path: f.Name(), Err: err} + } + return statfs, nil +} + +// The kernel guarantees that the root inode of a procfs mount has an +// f_type of PROC_SUPER_MAGIC and st_ino of PROC_ROOT_INO. +const ( + procSuperMagic = 0x9fa0 // PROC_SUPER_MAGIC + procRootIno = 1 // PROC_ROOT_INO +) + +func verifyProcRoot(procRoot *os.File) error { + if statfs, err := fstatfs(procRoot); err != nil { + return err + } else if statfs.Type != procSuperMagic { + return fmt.Errorf("%w: incorrect procfs root filesystem type 0x%x", errUnsafeProcfs, statfs.Type) + } + if stat, err := fstat(procRoot); err != nil { + return err + } else if stat.Ino != procRootIno { + return fmt.Errorf("%w: incorrect procfs root inode number %d", errUnsafeProcfs, stat.Ino) + } + return nil +} + +var hasNewMountApi = sync_OnceValue(func() bool { + // All of the pieces of the new mount API we use (fsopen, fsconfig, + // fsmount, open_tree) were added together in Linux 5.1[1,2], so we can + // just check for one of the syscalls and the others should also be + // available. + // + // Just try to use open_tree(2) to open a file without OPEN_TREE_CLONE. + // This is equivalent to openat(2), but tells us if open_tree is + // available (and thus all of the other basic new mount API syscalls). + // open_tree(2) is most light-weight syscall to test here. + // + // [1]: merge commit 400913252d09 + // [2]: <https://lore.kernel.org/lkml/153754740781.17872.7869536526927736855.stgit@warthog.procyon.org.uk/> + fd, err := unix.OpenTree(-int(unix.EBADF), "/", unix.OPEN_TREE_CLOEXEC) + if err != nil { + return false + } + _ = unix.Close(fd) + return true +}) + +func fsopen(fsName string, flags int) (*os.File, error) { + // Make sure we always set O_CLOEXEC. + flags |= unix.FSOPEN_CLOEXEC + fd, err := unix.Fsopen(fsName, flags) + if err != nil { + return nil, os.NewSyscallError("fsopen "+fsName, err) + } + return os.NewFile(uintptr(fd), "fscontext:"+fsName), nil +} + +func fsmount(ctx *os.File, flags, mountAttrs int) (*os.File, error) { + // Make sure we always set O_CLOEXEC. + flags |= unix.FSMOUNT_CLOEXEC + fd, err := unix.Fsmount(int(ctx.Fd()), flags, mountAttrs) + if err != nil { + return nil, os.NewSyscallError("fsmount "+ctx.Name(), err) + } + return os.NewFile(uintptr(fd), "fsmount:"+ctx.Name()), nil +} + +func newPrivateProcMount() (*os.File, error) { + procfsCtx, err := fsopen("proc", unix.FSOPEN_CLOEXEC) + if err != nil { + return nil, err + } + defer procfsCtx.Close() + + // Try to configure hidepid=ptraceable,subset=pid if possible, but ignore errors. + _ = unix.FsconfigSetString(int(procfsCtx.Fd()), "hidepid", "ptraceable") + _ = unix.FsconfigSetString(int(procfsCtx.Fd()), "subset", "pid") + + // Get an actual handle. + if err := unix.FsconfigCreate(int(procfsCtx.Fd())); err != nil { + return nil, os.NewSyscallError("fsconfig create procfs", err) + } + return fsmount(procfsCtx, unix.FSMOUNT_CLOEXEC, unix.MS_RDONLY|unix.MS_NODEV|unix.MS_NOEXEC|unix.MS_NOSUID) +} + +func openTree(dir *os.File, path string, flags uint) (*os.File, error) { + dirFd := -int(unix.EBADF) + dirName := "." + if dir != nil { + dirFd = int(dir.Fd()) + dirName = dir.Name() + } + // Make sure we always set O_CLOEXEC. + flags |= unix.OPEN_TREE_CLOEXEC + fd, err := unix.OpenTree(dirFd, path, flags) + if err != nil { + return nil, &os.PathError{Op: "open_tree", Path: path, Err: err} + } + return os.NewFile(uintptr(fd), dirName+"/"+path), nil +} + +func clonePrivateProcMount() (_ *os.File, Err error) { + // Try to make a clone without using AT_RECURSIVE if we can. If this works, + // we can be sure there are no over-mounts and so if the root is valid then + // we're golden. Otherwise, we have to deal with over-mounts. + procfsHandle, err := openTree(nil, "/proc", unix.OPEN_TREE_CLONE) + if err != nil || hookForcePrivateProcRootOpenTreeAtRecursive(procfsHandle) { + procfsHandle, err = openTree(nil, "/proc", unix.OPEN_TREE_CLONE|unix.AT_RECURSIVE) + } + if err != nil { + return nil, fmt.Errorf("creating a detached procfs clone: %w", err) + } + defer func() { + if Err != nil { + _ = procfsHandle.Close() + } + }() + if err := verifyProcRoot(procfsHandle); err != nil { + return nil, err + } + return procfsHandle, nil +} + +func privateProcRoot() (*os.File, error) { + if !hasNewMountApi() || hookForceGetProcRootUnsafe() { + return nil, fmt.Errorf("new mount api: %w", unix.ENOTSUP) + } + // Try to create a new procfs mount from scratch if we can. This ensures we + // can get a procfs mount even if /proc is fake (for whatever reason). + procRoot, err := newPrivateProcMount() + if err != nil || hookForcePrivateProcRootOpenTree(procRoot) { + // Try to clone /proc then... + procRoot, err = clonePrivateProcMount() + } + return procRoot, err +} + +func unsafeHostProcRoot() (_ *os.File, Err error) { + procRoot, err := os.OpenFile("/proc", unix.O_PATH|unix.O_NOFOLLOW|unix.O_DIRECTORY|unix.O_CLOEXEC, 0) + if err != nil { + return nil, err + } + defer func() { + if Err != nil { + _ = procRoot.Close() + } + }() + if err := verifyProcRoot(procRoot); err != nil { + return nil, err + } + return procRoot, nil +} + +func doGetProcRoot() (*os.File, error) { + procRoot, err := privateProcRoot() + if err != nil { + // Fall back to using a /proc handle if making a private mount failed. + // If we have openat2, at least we can avoid some kinds of over-mount + // attacks, but without openat2 there's not much we can do. + procRoot, err = unsafeHostProcRoot() + } + return procRoot, err +} + +var getProcRoot = sync_OnceValues(func() (*os.File, error) { + return doGetProcRoot() +}) + +var hasProcThreadSelf = sync_OnceValue(func() bool { + return unix.Access("/proc/thread-self/", unix.F_OK) == nil +}) + +var errUnsafeProcfs = errors.New("unsafe procfs detected") + +type procThreadSelfCloser func() + +// procThreadSelf returns a handle to /proc/thread-self/<subpath> (or an +// equivalent handle on older kernels where /proc/thread-self doesn't exist). +// Once finished with the handle, you must call the returned closer function +// (runtime.UnlockOSThread). You must not pass the returned *os.File to other +// Go threads or use the handle after calling the closer. +// +// This is similar to ProcThreadSelf from runc, but with extra hardening +// applied and using *os.File. +func procThreadSelf(procRoot *os.File, subpath string) (_ *os.File, _ procThreadSelfCloser, Err error) { + // We need to lock our thread until the caller is done with the handle + // because between getting the handle and using it we could get interrupted + // by the Go runtime and hit the case where the underlying thread is + // swapped out and the original thread is killed, resulting in + // pull-your-hair-out-hard-to-debug issues in the caller. + runtime.LockOSThread() + defer func() { + if Err != nil { + runtime.UnlockOSThread() + } + }() + + // Figure out what prefix we want to use. + threadSelf := "thread-self/" + if !hasProcThreadSelf() || hookForceProcSelfTask() { + /// Pre-3.17 kernels don't have /proc/thread-self, so do it manually. + threadSelf = "self/task/" + strconv.Itoa(unix.Gettid()) + "/" + if _, err := fstatatFile(procRoot, threadSelf, unix.AT_SYMLINK_NOFOLLOW); err != nil || hookForceProcSelf() { + // In this case, we running in a pid namespace that doesn't match + // the /proc mount we have. This can happen inside runc. + // + // Unfortunately, there is no nice way to get the correct TID to + // use here because of the age of the kernel, so we have to just + // use /proc/self and hope that it works. + threadSelf = "self/" + } + } + + // Grab the handle. + var ( + handle *os.File + err error + ) + if hasOpenat2() { + // We prefer being able to use RESOLVE_NO_XDEV if we can, to be + // absolutely sure we are operating on a clean /proc handle that + // doesn't have any cheeky overmounts that could trick us (including + // symlink mounts on top of /proc/thread-self). RESOLVE_BENEATH isn't + // strictly needed, but just use it since we have it. + // + // NOTE: /proc/self is technically a magic-link (the contents of the + // symlink are generated dynamically), but it doesn't use + // nd_jump_link() so RESOLVE_NO_MAGICLINKS allows it. + // + // NOTE: We MUST NOT use RESOLVE_IN_ROOT here, as openat2File uses + // procSelfFdReadlink to clean up the returned f.Name() if we use + // RESOLVE_IN_ROOT (which would lead to an infinite recursion). + handle, err = openat2File(procRoot, threadSelf+subpath, &unix.OpenHow{ + Flags: unix.O_PATH | unix.O_NOFOLLOW | unix.O_CLOEXEC, + Resolve: unix.RESOLVE_BENEATH | unix.RESOLVE_NO_XDEV | unix.RESOLVE_NO_MAGICLINKS, + }) + if err != nil { + // TODO: Once we bump the minimum Go version to 1.20, we can use + // multiple %w verbs for this wrapping. For now we need to use a + // compatibility shim for older Go versions. + //err = fmt.Errorf("%w: %w", errUnsafeProcfs, err) + return nil, nil, wrapBaseError(err, errUnsafeProcfs) + } + } else { + handle, err = openatFile(procRoot, threadSelf+subpath, unix.O_PATH|unix.O_NOFOLLOW|unix.O_CLOEXEC, 0) + if err != nil { + // TODO: Once we bump the minimum Go version to 1.20, we can use + // multiple %w verbs for this wrapping. For now we need to use a + // compatibility shim for older Go versions. + //err = fmt.Errorf("%w: %w", errUnsafeProcfs, err) + return nil, nil, wrapBaseError(err, errUnsafeProcfs) + } + defer func() { + if Err != nil { + _ = handle.Close() + } + }() + // We can't detect bind-mounts of different parts of procfs on top of + // /proc (a-la RESOLVE_NO_XDEV), but we can at least be sure that we + // aren't on the wrong filesystem here. + if statfs, err := fstatfs(handle); err != nil { + return nil, nil, err + } else if statfs.Type != procSuperMagic { + return nil, nil, fmt.Errorf("%w: incorrect /proc/self/fd filesystem type 0x%x", errUnsafeProcfs, statfs.Type) + } + } + return handle, runtime.UnlockOSThread, nil +} + +// STATX_MNT_ID_UNIQUE is provided in golang.org/x/sys@v0.20.0, but in order to +// avoid bumping the requirement for a single constant we can just define it +// ourselves. +const STATX_MNT_ID_UNIQUE = 0x4000 + +var hasStatxMountId = sync_OnceValue(func() bool { + var ( + stx unix.Statx_t + // We don't care which mount ID we get. The kernel will give us the + // unique one if it is supported. + wantStxMask uint32 = STATX_MNT_ID_UNIQUE | unix.STATX_MNT_ID + ) + err := unix.Statx(-int(unix.EBADF), "/", 0, int(wantStxMask), &stx) + return err == nil && stx.Mask&wantStxMask != 0 +}) + +func getMountId(dir *os.File, path string) (uint64, error) { + // If we don't have statx(STATX_MNT_ID*) support, we can't do anything. + if !hasStatxMountId() { + return 0, nil + } + + var ( + stx unix.Statx_t + // We don't care which mount ID we get. The kernel will give us the + // unique one if it is supported. + wantStxMask uint32 = STATX_MNT_ID_UNIQUE | unix.STATX_MNT_ID + ) + + err := unix.Statx(int(dir.Fd()), path, unix.AT_EMPTY_PATH|unix.AT_SYMLINK_NOFOLLOW, int(wantStxMask), &stx) + if stx.Mask&wantStxMask == 0 { + // It's not a kernel limitation, for some reason we couldn't get a + // mount ID. Assume it's some kind of attack. + err = fmt.Errorf("%w: could not get mount id", errUnsafeProcfs) + } + if err != nil { + return 0, &os.PathError{Op: "statx(STATX_MNT_ID_...)", Path: dir.Name() + "/" + path, Err: err} + } + return stx.Mnt_id, nil +} + +func checkSymlinkOvermount(procRoot *os.File, dir *os.File, path string) error { + // Get the mntId of our procfs handle. + expectedMountId, err := getMountId(procRoot, "") + if err != nil { + return err + } + // Get the mntId of the target magic-link. + gotMountId, err := getMountId(dir, path) + if err != nil { + return err + } + // As long as the directory mount is alive, even with wrapping mount IDs, + // we would expect to see a different mount ID here. (Of course, if we're + // using unsafeHostProcRoot() then an attaker could change this after we + // did this check.) + if expectedMountId != gotMountId { + return fmt.Errorf("%w: symlink %s/%s has an overmount obscuring the real link (mount ids do not match %d != %d)", errUnsafeProcfs, dir.Name(), path, expectedMountId, gotMountId) + } + return nil +} + +func doRawProcSelfFdReadlink(procRoot *os.File, fd int) (string, error) { + fdPath := fmt.Sprintf("fd/%d", fd) + procFdLink, closer, err := procThreadSelf(procRoot, fdPath) + if err != nil { + return "", fmt.Errorf("get safe /proc/thread-self/%s handle: %w", fdPath, err) + } + defer procFdLink.Close() + defer closer() + + // Try to detect if there is a mount on top of the magic-link. Since we use the handle directly + // provide to the closure. If the closure uses the handle directly, this + // should be safe in general (a mount on top of the path afterwards would + // not affect the handle itself) and will definitely be safe if we are + // using privateProcRoot() (at least since Linux 5.12[1], when anonymous + // mount namespaces were completely isolated from external mounts including + // mount propagation events). + // + // [1]: Linux commit ee2e3f50629f ("mount: fix mounting of detached mounts + // onto targets that reside on shared mounts"). + if err := checkSymlinkOvermount(procRoot, procFdLink, ""); err != nil { + return "", fmt.Errorf("check safety of /proc/thread-self/fd/%d magiclink: %w", fd, err) + } + + // readlinkat implies AT_EMPTY_PATH since Linux 2.6.39. See Linux commit + // 65cfc6722361 ("readlinkat(), fchownat() and fstatat() with empty + // relative pathnames"). + return readlinkatFile(procFdLink, "") +} + +func rawProcSelfFdReadlink(fd int) (string, error) { + procRoot, err := getProcRoot() + if err != nil { + return "", err + } + return doRawProcSelfFdReadlink(procRoot, fd) +} + +func procSelfFdReadlink(f *os.File) (string, error) { + return rawProcSelfFdReadlink(int(f.Fd())) +} + +var ( + errPossibleBreakout = errors.New("possible breakout detected") + errInvalidDirectory = errors.New("wandered into deleted directory") + errDeletedInode = errors.New("cannot verify path of deleted inode") +) + +func isDeadInode(file *os.File) error { + // If the nlink of a file drops to 0, there is an attacker deleting + // directories during our walk, which could result in weird /proc values. + // It's better to error out in this case. + stat, err := fstat(file) + if err != nil { + return fmt.Errorf("check for dead inode: %w", err) + } + if stat.Nlink == 0 { + err := errDeletedInode + if stat.Mode&unix.S_IFMT == unix.S_IFDIR { + err = errInvalidDirectory + } + return fmt.Errorf("%w %q", err, file.Name()) + } + return nil +} + +func checkProcSelfFdPath(path string, file *os.File) error { + if err := isDeadInode(file); err != nil { + return err + } + actualPath, err := procSelfFdReadlink(file) + if err != nil { + return fmt.Errorf("get path of handle: %w", err) + } + if actualPath != path { + return fmt.Errorf("%w: handle path %q doesn't match expected path %q", errPossibleBreakout, actualPath, path) + } + return nil +} + +// Test hooks used in the procfs tests to verify that the fallback logic works. +// See testing_mocks_linux_test.go and procfs_linux_test.go for more details. +var ( + hookForcePrivateProcRootOpenTree = hookDummyFile + hookForcePrivateProcRootOpenTreeAtRecursive = hookDummyFile + hookForceGetProcRootUnsafe = hookDummy + + hookForceProcSelfTask = hookDummy + hookForceProcSelf = hookDummy +) + +func hookDummy() bool { return false } +func hookDummyFile(_ *os.File) bool { return false } diff --git a/vendor/github.com/cyphar/filepath-securejoin/vfs.go b/vendor/github.com/cyphar/filepath-securejoin/vfs.go new file mode 100644 index 000000000..36373f8c5 --- /dev/null +++ b/vendor/github.com/cyphar/filepath-securejoin/vfs.go @@ -0,0 +1,35 @@ +// Copyright (C) 2017-2024 SUSE LLC. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package securejoin + +import "os" + +// In future this should be moved into a separate package, because now there +// are several projects (umoci and go-mtree) that are using this sort of +// interface. + +// VFS is the minimal interface necessary to use [SecureJoinVFS]. A nil VFS is +// equivalent to using the standard [os].* family of functions. This is mainly +// used for the purposes of mock testing, but also can be used to otherwise use +// [SecureJoinVFS] with VFS-like system. +type VFS interface { + // Lstat returns an [os.FileInfo] describing the named file. If the + // file is a symbolic link, the returned [os.FileInfo] describes the + // symbolic link. Lstat makes no attempt to follow the link. + // The semantics are identical to [os.Lstat]. + Lstat(name string) (os.FileInfo, error) + + // Readlink returns the destination of the named symbolic link. + // The semantics are identical to [os.Readlink]. + Readlink(name string) (string, error) +} + +// osVFS is the "nil" VFS, in that it just passes everything through to the os +// module. +type osVFS struct{} + +func (o osVFS) Lstat(name string) (os.FileInfo, error) { return os.Lstat(name) } + +func (o osVFS) Readlink(name string) (string, error) { return os.Readlink(name) } diff --git a/vendor/github.com/moby/sys/reexec/LICENSE b/vendor/github.com/moby/sys/reexec/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/vendor/github.com/moby/sys/reexec/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/moby/sys/reexec/reexec.go b/vendor/github.com/moby/sys/reexec/reexec.go new file mode 100644 index 000000000..c3a0c925e --- /dev/null +++ b/vendor/github.com/moby/sys/reexec/reexec.go @@ -0,0 +1,83 @@ +// Package reexec facilitates the busybox style reexec of a binary. +// +// Handlers can be registered with a name and the argv 0 of the exec of +// the binary will be used to find and execute custom init paths. +// +// It is used to work around forking limitations when using Go. +package reexec + +import ( + "fmt" + "os" + "os/exec" + "path/filepath" + "runtime" +) + +var registeredInitializers = make(map[string]func()) + +// Register adds an initialization func under the specified name. It panics +// if the given name is already registered. +func Register(name string, initializer func()) { + if _, exists := registeredInitializers[name]; exists { + panic(fmt.Sprintf("reexec func already registered under name %q", name)) + } + + registeredInitializers[name] = initializer +} + +// Init is called as the first part of the exec process and returns true if an +// initialization function was called. +func Init() bool { + if initializer, ok := registeredInitializers[os.Args[0]]; ok { + initializer() + return true + } + return false +} + +// Command returns an [*exec.Cmd] with its Path set to the path of the current +// binary using the result of [Self]. +// +// On Linux, the Pdeathsig of [*exec.Cmd.SysProcAttr] is set to SIGTERM. +// This signal is sent to the process when the OS thread that created +// the process dies. +// +// It is the caller's responsibility to ensure that the creating thread is +// not terminated prematurely. See https://go.dev/issue/27505 for more details. +func Command(args ...string) *exec.Cmd { + return command(args...) +} + +// Self returns the path to the current process's binary. +// +// On Linux, it returns "/proc/self/exe", which provides the in-memory version +// of the current binary. This makes it safe to delete or replace the on-disk +// binary (os.Args[0]). +// +// On Other platforms, it attempts to look up the absolute path for os.Args[0], +// or otherwise returns os.Args[0] as-is. For example if current binary is +// "my-binary" at "/usr/bin/" (or "my-binary.exe" at "C:\" on Windows), +// then it returns "/usr/bin/my-binary" and "C:\my-binary.exe" respectively. +func Self() string { + if runtime.GOOS == "linux" { + return "/proc/self/exe" + } + return naiveSelf() +} + +func naiveSelf() string { + name := os.Args[0] + if filepath.Base(name) == name { + if lp, err := exec.LookPath(name); err == nil { + return lp + } + } + // handle conversion of relative paths to absolute + if absName, err := filepath.Abs(name); err == nil { + return absName + } + // if we couldn't get absolute name, return original + // (NOTE: Go only errors on Abs() if os.Getwd fails) + return name +} diff --git a/vendor/github.com/moby/sys/reexec/reexec_linux.go b/vendor/github.com/moby/sys/reexec/reexec_linux.go new file mode 100644 index 000000000..03f600e04 --- /dev/null +++ b/vendor/github.com/moby/sys/reexec/reexec_linux.go @@ -0,0 +1,16 @@ +package reexec + +import ( + "os/exec" + "syscall" +) + +func command(args ...string) *exec.Cmd { + return &exec.Cmd{ + Path: Self(), + Args: args, + SysProcAttr: &syscall.SysProcAttr{ + Pdeathsig: syscall.SIGTERM, + }, + } +} diff --git a/vendor/github.com/moby/sys/reexec/reexec_other.go b/vendor/github.com/moby/sys/reexec/reexec_other.go new file mode 100644 index 000000000..498d28bc4 --- /dev/null +++ b/vendor/github.com/moby/sys/reexec/reexec_other.go @@ -0,0 +1,14 @@ +//go:build !linux + +package reexec + +import ( + "os/exec" +) + +func command(args ...string) *exec.Cmd { + return &exec.Cmd{ + Path: Self(), + Args: args, + } +} diff --git a/vendor/github.com/moby/sys/symlink/LICENSE b/vendor/github.com/moby/sys/symlink/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/vendor/github.com/moby/sys/symlink/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/moby/sys/symlink/LICENSE.APACHE b/vendor/github.com/moby/sys/symlink/LICENSE.APACHE new file mode 100644 index 000000000..5d80670bc --- /dev/null +++ b/vendor/github.com/moby/sys/symlink/LICENSE.APACHE @@ -0,0 +1,191 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright 2014-2018 Docker, Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/moby/sys/symlink/LICENSE.BSD b/vendor/github.com/moby/sys/symlink/LICENSE.BSD new file mode 100644 index 000000000..2ee8768d3 --- /dev/null +++ b/vendor/github.com/moby/sys/symlink/LICENSE.BSD @@ -0,0 +1,27 @@ +Copyright (c) 2014-2018 The Docker & Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/moby/sys/symlink/doc.go b/vendor/github.com/moby/sys/symlink/doc.go new file mode 100644 index 000000000..7c22ca275 --- /dev/null +++ b/vendor/github.com/moby/sys/symlink/doc.go @@ -0,0 +1,11 @@ +// Package symlink implements [FollowSymlinkInScope] which is an extension +// of [path/filepath.EvalSymlinks], as well as a Windows long-path aware +// version of [path/filepath.EvalSymlinks] from the Go standard library. +// +// The code from [path/filepath.EvalSymlinks] has been adapted in fs.go. +// Read the [LICENSE.BSD] file that governs fs.go and [LICENSE.APACHE] for +// fs_unix_test.go. +// +// [LICENSE.APACHE]: https://github.com/moby/sys/blob/symlink/v0.2.0/symlink/LICENSE.APACHE +// [LICENSE.BSD]: https://github.com/moby/sys/blob/symlink/v0.2.0/symlink/LICENSE.APACHE +package symlink diff --git a/vendor/github.com/moby/sys/symlink/fs.go b/vendor/github.com/moby/sys/symlink/fs.go new file mode 100644 index 000000000..6b8266138 --- /dev/null +++ b/vendor/github.com/moby/sys/symlink/fs.go @@ -0,0 +1,164 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.BSD file. + +// This code is a modified version of path/filepath/symlink.go from the Go +// standard library in [docker@fa3ec89], which was based on [go1.3.3], +// with Windows implementatinos being added in [docker@9b648df]. +// +// [docker@fa3ec89]: https://github.com/moby/moby/commit/fa3ec89515431ce425f924c8a9a804d5cb18382f +// [go1.3.3]: https://github.com/golang/go/blob/go1.3.3/src/pkg/path/filepath/symlink.go +// [docker@9b648df]: https://github.com/moby/moby/commit/9b648dfac6453de5944ee4bb749115d85a253a05 + +package symlink + +import ( + "bytes" + "errors" + "os" + "path/filepath" + "strings" +) + +// FollowSymlinkInScope evaluates symbolic links in "path" within a scope "root" +// and returns a result guaranteed to be contained within the scope "root" at +// the time of the call. It returns an error of either "path" or "root" cannot +// be converted to an absolute path. +// +// Symbolic links in "root" are not evaluated and left as-is. Errors encountered +// while attempting to evaluate symlinks in path are returned, but non-existing +// paths are valid and do not constitute an error. "path" must contain "root" +// as a prefix, or else an error is returned. Trying to break out from "root" +// does not constitute an error, instead resolves the path within "root". +// +// Example: +// +// // If "/foo/bar" is a symbolic link to "/outside": +// FollowSymlinkInScope("/foo/bar", "/foo") // Returns "/foo/outside" instead of "/outside" +// +// IMPORTANT: It is the caller's responsibility to call FollowSymlinkInScope +// after relevant symbolic links are created to avoid Time-of-check Time-of-use +// (TOCTOU) race conditions ([CWE-367]). No additional symbolic links must be +// created after evaluating, as those could potentially make a previously-safe +// path unsafe. +// +// For example, if "/foo/bar" does not exist, FollowSymlinkInScope("/foo/bar", "/foo") +// evaluates the path to "/foo/bar". If one makes "/foo/bar" a symbolic link to +// "/baz" subsequently, then "/foo/bar" should no longer be considered safely +// contained in "/foo". +// +// [CWE-367]: https://cwe.mitre.org/data/definitions/367.html +func FollowSymlinkInScope(path, root string) (string, error) { + path, err := filepath.Abs(filepath.FromSlash(path)) + if err != nil { + return "", err + } + root, err = filepath.Abs(filepath.FromSlash(root)) + if err != nil { + return "", err + } + return evalSymlinksInScope(path, root) +} + +// evalSymlinksInScope evaluates symbolic links in "path" within a scope "root" +// and returns a result guaranteed to be contained within the scope "root" at +// the time of the call. Refer to [FollowSymlinkInScope] for details. +func evalSymlinksInScope(path, root string) (string, error) { + root = filepath.Clean(root) + if path == root { + return path, nil + } + if !strings.HasPrefix(path, root) { + return "", errors.New("evalSymlinksInScope: " + path + " is not in " + root) + } + const maxIter = 255 + originalPath := path + // given root of "/a" and path of "/a/b/../../c" we want path to be "/b/../../c" + path = path[len(root):] + if root == string(filepath.Separator) { + path = string(filepath.Separator) + path + } + if !strings.HasPrefix(path, string(filepath.Separator)) { + return "", errors.New("evalSymlinksInScope: " + path + " is not in " + root) + } + path = filepath.Clean(path) + // consume path by taking each frontmost path element, + // expanding it if it's a symlink, and appending it to b + var b bytes.Buffer + // b here will always be considered to be the "current absolute path inside + // root" when we append paths to it, we also append a slash and use + // filepath.Clean after the loop to trim the trailing slash + for n := 0; path != ""; n++ { + if n > maxIter { + return "", errors.New("evalSymlinksInScope: too many links in " + originalPath) + } + + // find next path component, p + i := strings.IndexRune(path, filepath.Separator) + var p string + if i == -1 { + p, path = path, "" + } else { + p, path = path[:i], path[i+1:] + } + + if p == "" { + continue + } + + // this takes a b.String() like "b/../" and a p like "c" and turns it + // into "/b/../c" which then gets filepath.Cleaned into "/c" and then + // root gets prepended and we Clean again (to remove any trailing slash + // if the first Clean gave us just "/") + cleanP := filepath.Clean(string(filepath.Separator) + b.String() + p) + if isDriveOrRoot(cleanP) { + // never Lstat "/" itself, or drive letters on Windows + b.Reset() + continue + } + fullP := filepath.Clean(root + cleanP) + + fi, err := os.Lstat(fullP) + if os.IsNotExist(err) { + // if p does not exist, accept it + b.WriteString(p) + b.WriteRune(filepath.Separator) + continue + } + if err != nil { + return "", err + } + if fi.Mode()&os.ModeSymlink == 0 { + b.WriteString(p) + b.WriteRune(filepath.Separator) + continue + } + + // it's a symlink, put it at the front of path + dest, err := os.Readlink(fullP) + if err != nil { + return "", err + } + if isAbs(dest) { + b.Reset() + } + path = dest + string(filepath.Separator) + path + } + + // see note above on "fullP := ..." for why this is double-cleaned and + // what's happening here + return filepath.Clean(root + filepath.Clean(string(filepath.Separator)+b.String())), nil +} + +// EvalSymlinks is a modified version of [path/filepath.EvalSymlinks] from +// the Go standard library with support for Windows long paths (paths prepended +// with "\\?\"). On non-Windows platforms, it's an alias for [path/filepath.EvalSymlinks]. +// +// EvalSymlinks returns the path name after the evaluation of any symbolic +// links. If path is relative, the result will be relative to the current +// directory, unless one of the components is an absolute symbolic link. +// +// EvalSymlinks calls [path/filepath.Clean] on the result. +func EvalSymlinks(path string) (string, error) { + return evalSymlinks(path) +} diff --git a/vendor/github.com/moby/sys/symlink/fs_unix.go b/vendor/github.com/moby/sys/symlink/fs_unix.go new file mode 100644 index 000000000..13ce82511 --- /dev/null +++ b/vendor/github.com/moby/sys/symlink/fs_unix.go @@ -0,0 +1,18 @@ +//go:build !windows +// +build !windows + +package symlink + +import ( + "path/filepath" +) + +func evalSymlinks(path string) (string, error) { + return filepath.EvalSymlinks(path) +} + +func isDriveOrRoot(p string) bool { + return p == string(filepath.Separator) +} + +var isAbs = filepath.IsAbs diff --git a/vendor/github.com/moby/sys/symlink/fs_windows.go b/vendor/github.com/moby/sys/symlink/fs_windows.go new file mode 100644 index 000000000..819b72894 --- /dev/null +++ b/vendor/github.com/moby/sys/symlink/fs_windows.go @@ -0,0 +1,197 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.BSD file. + +// This code is a modified version of [path/filepath/symlink_windows.go] +// and [path/filepath/symlink.go] from the Go 1.4.2 standard library, and +// added in [docker@9b648df]. +// +// [path/filepath/symlink_windows.go]: https://github.com/golang/go/blob/go1.4.2/src/path/filepath/symlink_windows.go +// [path/filepath/symlink.go]: https://github.com/golang/go/blob/go1.4.2/src/path/filepath/symlink.go +// [docker@9b648df]: https://github.com/moby/moby/commit/9b648dfac6453de5944ee4bb749115d85a253a05 + +package symlink + +import ( + "bytes" + "errors" + "os" + "path/filepath" + "strings" + + "golang.org/x/sys/windows" +) + +func toShort(path string) (string, error) { + p, err := windows.UTF16FromString(path) + if err != nil { + return "", err + } + b := p // GetShortPathName says we can reuse buffer + n, err := windows.GetShortPathName(&p[0], &b[0], uint32(len(b))) + if err != nil { + return "", err + } + if n > uint32(len(b)) { + b = make([]uint16, n) + if _, err = windows.GetShortPathName(&p[0], &b[0], uint32(len(b))); err != nil { + return "", err + } + } + return windows.UTF16ToString(b), nil +} + +func toLong(path string) (string, error) { + p, err := windows.UTF16FromString(path) + if err != nil { + return "", err + } + b := p // GetLongPathName says we can reuse buffer + n, err := windows.GetLongPathName(&p[0], &b[0], uint32(len(b))) + if err != nil { + return "", err + } + if n > uint32(len(b)) { + b = make([]uint16, n) + n, err = windows.GetLongPathName(&p[0], &b[0], uint32(len(b))) + if err != nil { + return "", err + } + } + b = b[:n] + return windows.UTF16ToString(b), nil +} + +func evalSymlinks(path string) (string, error) { + path, err := walkSymlinks(path) + if err != nil { + return "", err + } + + p, err := toShort(path) + if err != nil { + return "", err + } + p, err = toLong(p) + if err != nil { + return "", err + } + // windows.GetLongPathName does not change the case of the drive letter, + // but the result of EvalSymlinks must be unique, so we have + // EvalSymlinks(`c:\a`) == EvalSymlinks(`C:\a`). + // Make drive letter upper case. + if len(p) >= 2 && p[1] == ':' && 'a' <= p[0] && p[0] <= 'z' { + p = string(p[0]+'A'-'a') + p[1:] + } else if len(p) >= 6 && p[5] == ':' && 'a' <= p[4] && p[4] <= 'z' { + p = p[:3] + string(p[4]+'A'-'a') + p[5:] + } + return filepath.Clean(p), nil +} + +const ( + utf8RuneSelf = 0x80 + longPathPrefix = `\\?\` +) + +func walkSymlinks(path string) (string, error) { + const maxIter = 255 + originalPath := path + // consume path by taking each frontmost path element, + // expanding it if it's a symlink, and appending it to b + var b bytes.Buffer + for n := 0; path != ""; n++ { + if n > maxIter { + return "", errors.New("too many links in " + originalPath) + } + + // A path beginning with `\\?\` represents the root, so automatically + // skip that part and begin processing the next segment. + if strings.HasPrefix(path, longPathPrefix) { + b.WriteString(longPathPrefix) + path = path[4:] + continue + } + + // find next path component, p + i := -1 + for j, c := range path { + if c < utf8RuneSelf && os.IsPathSeparator(uint8(c)) { + i = j + break + } + } + var p string + if i == -1 { + p, path = path, "" + } else { + p, path = path[:i], path[i+1:] + } + + if p == "" { + if b.Len() == 0 { + // must be absolute path + b.WriteRune(filepath.Separator) + } + continue + } + + // If this is the first segment after the long path prefix, accept the + // current segment as a volume root or UNC share and move on to the next. + if b.String() == longPathPrefix { + b.WriteString(p) + b.WriteRune(filepath.Separator) + continue + } + + fi, err := os.Lstat(b.String() + p) + if err != nil { + return "", err + } + if fi.Mode()&os.ModeSymlink == 0 { + b.WriteString(p) + if path != "" || (b.Len() == 2 && len(p) == 2 && p[1] == ':') { + b.WriteRune(filepath.Separator) + } + continue + } + + // it's a symlink, put it at the front of path + dest, err := os.Readlink(b.String() + p) + if err != nil { + return "", err + } + if isAbs(dest) { + b.Reset() + } + path = dest + string(filepath.Separator) + path + } + return filepath.Clean(b.String()), nil +} + +func isDriveOrRoot(p string) bool { + if p == string(filepath.Separator) { + return true + } + + length := len(p) + if length >= 2 { + if p[length-1] == ':' && (('a' <= p[length-2] && p[length-2] <= 'z') || ('A' <= p[length-2] && p[length-2] <= 'Z')) { + return true + } + } + return false +} + +// isAbs is a platform-specific wrapper for filepath.IsAbs. On Windows, +// golang filepath.IsAbs does not consider a path \windows\system32 as absolute +// as it doesn't start with a drive-letter/colon combination. However, in +// docker we need to verify things such as WORKDIR /windows/system32 in +// a Dockerfile (which gets translated to \windows\system32 when being processed +// by the daemon. This SHOULD be treated as absolute from a docker processing +// perspective. +func isAbs(path string) bool { + if filepath.IsAbs(path) || strings.HasPrefix(path, string(os.PathSeparator)) { + return true + } + return false +} diff --git a/vendor/github.com/opencontainers/runc/LICENSE b/vendor/github.com/opencontainers/runc/LICENSE new file mode 100644 index 000000000..27448585a --- /dev/null +++ b/vendor/github.com/opencontainers/runc/LICENSE @@ -0,0 +1,191 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright 2014 Docker, Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/opencontainers/runc/NOTICE b/vendor/github.com/opencontainers/runc/NOTICE new file mode 100644 index 000000000..c29775c0d --- /dev/null +++ b/vendor/github.com/opencontainers/runc/NOTICE @@ -0,0 +1,17 @@ +runc + +Copyright 2012-2015 Docker, Inc. + +This product includes software developed at Docker, Inc. (http://www.docker.com). + +The following is courtesy of our legal counsel: + + +Use and transfer of Docker may be subject to certain restrictions by the +United States and other governments. +It is your responsibility to ensure that your use and/or transfer does not +violate applicable laws. + +For more information, please see http://www.bis.doc.gov + +See also http://www.apache.org/dev/crypto.html and/or seek legal counsel. diff --git a/vendor/github.com/opencontainers/runc/libcontainer/exeseal/cloned_binary_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/exeseal/cloned_binary_linux.go new file mode 100644 index 000000000..3bafc96a6 --- /dev/null +++ b/vendor/github.com/opencontainers/runc/libcontainer/exeseal/cloned_binary_linux.go @@ -0,0 +1,262 @@ +package exeseal + +import ( + "errors" + "fmt" + "io" + "os" + "strconv" + + "github.com/sirupsen/logrus" + "golang.org/x/sys/unix" + + "github.com/opencontainers/runc/libcontainer/system" +) + +type SealFunc func(**os.File) error + +var ( + _ SealFunc = sealMemfd + _ SealFunc = sealFile +) + +func isExecutable(f *os.File) bool { + if err := unix.Faccessat(int(f.Fd()), "", unix.X_OK, unix.AT_EACCESS|unix.AT_EMPTY_PATH); err == nil { + return true + } else if err == unix.EACCES { + return false + } + path := "/proc/self/fd/" + strconv.Itoa(int(f.Fd())) + if err := unix.Access(path, unix.X_OK); err == nil { + return true + } else if err == unix.EACCES { + return false + } + // Cannot check -- assume it's executable (if not, exec will fail). + logrus.Debugf("cannot do X_OK check on binary %s -- assuming it's executable", f.Name()) + return true +} + +const baseMemfdSeals = unix.F_SEAL_SEAL | unix.F_SEAL_SHRINK | unix.F_SEAL_GROW | unix.F_SEAL_WRITE + +func sealMemfd(f **os.File) error { + if err := (*f).Chmod(0o511); err != nil { + return err + } + // Try to set the newer memfd sealing flags, but we ignore + // errors because they are not needed and we want to continue + // to work on older kernels. + fd := (*f).Fd() + + // Skip F_SEAL_FUTURE_WRITE, it is not needed because we alreadu use the + // stronger F_SEAL_WRITE (and is buggy on Linux <5.5 -- see kernel commit + // 05d351102dbe and <https://github.com/opencontainers/runc/pull/4640>). + + // F_SEAL_EXEC -- Linux 6.3 + const F_SEAL_EXEC = 0x20 //nolint:revive // this matches the unix.* name + _, _ = unix.FcntlInt(fd, unix.F_ADD_SEALS, F_SEAL_EXEC) + + // Apply all original memfd seals. + _, err := unix.FcntlInt(fd, unix.F_ADD_SEALS, baseMemfdSeals) + return os.NewSyscallError("fcntl(F_ADD_SEALS)", err) +} + +// Memfd creates a sealable executable memfd (supported since Linux 3.17). +func Memfd(comment string) (*os.File, SealFunc, error) { + file, err := system.ExecutableMemfd("runc_cloned:"+comment, unix.MFD_ALLOW_SEALING|unix.MFD_CLOEXEC) + return file, sealMemfd, err +} + +func sealFile(f **os.File) error { + // When sealing an O_TMPFILE-style descriptor we need to + // re-open the path as O_PATH to clear the existing write + // handle we have. + opath, err := os.OpenFile(fmt.Sprintf("/proc/self/fd/%d", (*f).Fd()), unix.O_PATH|unix.O_CLOEXEC, 0) + if err != nil { + return fmt.Errorf("reopen tmpfile: %w", err) + } + _ = (*f).Close() + *f = opath + return nil +} + +// otmpfile creates an open(O_TMPFILE) file in the given directory (supported +// since Linux 3.11). +func otmpfile(dir string) (*os.File, SealFunc, error) { + file, err := os.OpenFile(dir, unix.O_TMPFILE|unix.O_RDWR|unix.O_EXCL|unix.O_CLOEXEC, 0o700) + if err != nil { + return nil, nil, fmt.Errorf("O_TMPFILE creation failed: %w", err) + } + // Make sure we actually got an unlinked O_TMPFILE descriptor. + var stat unix.Stat_t + if err := unix.Fstat(int(file.Fd()), &stat); err != nil { + file.Close() + return nil, nil, fmt.Errorf("cannot fstat O_TMPFILE fd: %w", err) + } else if stat.Nlink != 0 { + file.Close() + return nil, nil, errors.New("O_TMPFILE has non-zero nlink") + } + return file, sealFile, err +} + +// mktemp creates a classic unlinked file in the given directory. +func mktemp(dir string) (*os.File, SealFunc, error) { + file, err := os.CreateTemp(dir, "runc.") + if err != nil { + return nil, nil, err + } + // Unlink the file and verify it was unlinked. + if err := os.Remove(file.Name()); err != nil { + return nil, nil, fmt.Errorf("unlinking classic tmpfile: %w", err) + } + if err := file.Chmod(0o511); err != nil { + return nil, nil, fmt.Errorf("chmod classic tmpfile: %w", err) + } + var stat unix.Stat_t + if err := unix.Fstat(int(file.Fd()), &stat); err != nil { + return nil, nil, fmt.Errorf("cannot fstat classic tmpfile: %w", err) + } else if stat.Nlink != 0 { + return nil, nil, fmt.Errorf("classic tmpfile %s has non-zero nlink after unlink", file.Name()) + } + return file, sealFile, err +} + +func getSealableFile(comment, tmpDir string) (file *os.File, sealFn SealFunc, err error) { + // First, try an executable memfd (supported since Linux 3.17). + file, sealFn, err = Memfd(comment) + if err == nil { + return + } + logrus.Debugf("memfd cloned binary failed, falling back to O_TMPFILE: %v", err) + + // The tmpDir here (c.root) might be mounted noexec, so we need a couple of + // fallbacks to try. It's possible that none of these are writable and + // executable, in which case there's nothing we can practically do (other + // than mounting our own executable tmpfs, which would have its own + // issues). + tmpDirs := []string{ + tmpDir, + os.TempDir(), + "/tmp", + ".", + "/bin", + "/", + } + + // Try to fallback to O_TMPFILE (supported since Linux 3.11). + for _, dir := range tmpDirs { + file, sealFn, err = otmpfile(dir) + if err != nil { + continue + } + if !isExecutable(file) { + logrus.Debugf("tmpdir %s is noexec -- trying a different tmpdir", dir) + file.Close() + continue + } + return + } + logrus.Debugf("O_TMPFILE cloned binary failed, falling back to mktemp(): %v", err) + // Finally, try a classic unlinked temporary file. + for _, dir := range tmpDirs { + file, sealFn, err = mktemp(dir) + if err != nil { + continue + } + if !isExecutable(file) { + logrus.Debugf("tmpdir %s is noexec -- trying a different tmpdir", dir) + file.Close() + continue + } + return + } + return nil, nil, fmt.Errorf("could not create sealable file for cloned binary: %w", err) +} + +// CloneBinary creates a "sealed" clone of a given binary, which can be used to +// thwart attempts by the container process to gain access to host binaries +// through procfs magic-link shenanigans. For more details on why this is +// necessary, see CVE-2019-5736. +func CloneBinary(src io.Reader, size int64, name, tmpDir string) (*os.File, error) { + logrus.Debugf("cloning %s binary (%d bytes)", name, size) + file, sealFn, err := getSealableFile(name, tmpDir) + if err != nil { + return nil, err + } + copied, err := system.Copy(file, src) + if err != nil { + file.Close() + return nil, fmt.Errorf("copy binary: %w", err) + } else if copied != size { + file.Close() + return nil, fmt.Errorf("copied binary size mismatch: %d != %d", copied, size) + } + if err := sealFn(&file); err != nil { + file.Close() + return nil, fmt.Errorf("could not seal fd: %w", err) + } + return file, nil +} + +// IsCloned returns whether the given file can be guaranteed to be a safe exe. +func IsCloned(exe *os.File) bool { + seals, err := unix.FcntlInt(exe.Fd(), unix.F_GET_SEALS, 0) + if err != nil { + // /proc/self/exe is probably not a memfd + logrus.Debugf("F_GET_SEALS on %s failed: %v", exe.Name(), err) + return false + } + // The memfd must have all of the base seals applied. + logrus.Debugf("checking %s memfd seals: 0x%x", exe.Name(), seals) + return seals&baseMemfdSeals == baseMemfdSeals +} + +// CloneSelfExe makes a clone of the current process's binary (through +// /proc/self/exe). This binary can then be used for "runc init" in order to +// make sure the container process can never resolve the original runc binary. +// For more details on why this is necessary, see CVE-2019-5736. +func CloneSelfExe(tmpDir string) (*os.File, error) { + // Try to create a temporary overlayfs to produce a readonly version of + // /proc/self/exe that cannot be "unwrapped" by the container. In contrast + // to CloneBinary, this technique does not require any extra memory usage + // and does not have the (fairly noticeable) performance impact of copying + // a large binary file into a memfd. + // + // Based on some basic performance testing, the overlayfs approach has + // effectively no performance overhead (it is on par with both + // MS_BIND+MS_RDONLY and no binary cloning at all) while memfd copying adds + // around ~60% overhead during container startup. + overlayFile, err := sealedOverlayfs("/proc/self/exe", tmpDir) + if err == nil { + logrus.Debug("runc exeseal: using overlayfs for sealed /proc/self/exe") // used for tests + return overlayFile, nil + } + logrus.WithError(err).Debugf("could not use overlayfs for /proc/self/exe sealing -- falling back to making a temporary copy") + + selfExe, err := os.Open("/proc/self/exe") + if err != nil { + return nil, fmt.Errorf("opening current binary: %w", err) + } + defer selfExe.Close() + + stat, err := selfExe.Stat() + if err != nil { + return nil, fmt.Errorf("checking /proc/self/exe size: %w", err) + } + size := stat.Size() + + return CloneBinary(selfExe, size, "/proc/self/exe", tmpDir) +} + +// IsSelfExeCloned returns whether /proc/self/exe is a cloned binary that can +// be guaranteed to be safe. This means that it must be a sealed memfd. Other +// types of clones cannot be completely verified as safe. +func IsSelfExeCloned() bool { + selfExe, err := os.Open("/proc/self/exe") + if err != nil { + logrus.Debugf("open /proc/self/exe failed: %v", err) + return false + } + defer selfExe.Close() + return IsCloned(selfExe) +} diff --git a/vendor/github.com/opencontainers/runc/libcontainer/exeseal/overlayfs_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/exeseal/overlayfs_linux.go new file mode 100644 index 000000000..f585566b6 --- /dev/null +++ b/vendor/github.com/opencontainers/runc/libcontainer/exeseal/overlayfs_linux.go @@ -0,0 +1,122 @@ +package exeseal + +import ( + "fmt" + "os" + "path/filepath" + "runtime" + "strings" + + "golang.org/x/sys/unix" + + "github.com/opencontainers/runc/libcontainer/utils" +) + +func fsopen(fsName string, flags int) (*os.File, error) { + // Make sure we always set O_CLOEXEC. + flags |= unix.FSOPEN_CLOEXEC + fd, err := unix.Fsopen(fsName, flags) + if err != nil { + return nil, os.NewSyscallError("fsopen "+fsName, err) + } + return os.NewFile(uintptr(fd), "fscontext:"+fsName), nil +} + +func fsmount(ctx *os.File, flags, mountAttrs int) (*os.File, error) { + // Make sure we always set O_CLOEXEC. + flags |= unix.FSMOUNT_CLOEXEC + fd, err := unix.Fsmount(int(ctx.Fd()), flags, mountAttrs) + if err != nil { + return nil, os.NewSyscallError("fsmount "+ctx.Name(), err) + } + runtime.KeepAlive(ctx) // make sure fd is kept alive while it's used + return os.NewFile(uintptr(fd), "fsmount:"+ctx.Name()), nil +} + +func escapeOverlayLowerDir(path string) string { + // If the lowerdir path contains ":" we need to escape them, and if there + // were any escape characters already (\) we need to escape those first. + return strings.ReplaceAll(strings.ReplaceAll(path, `\`, `\\`), `:`, `\:`) +} + +// sealedOverlayfs will create an internal overlayfs mount using fsopen() that +// uses the directory containing the binary as a lowerdir and a temporary tmpfs +// as an upperdir. There is no way to "unwrap" this (unlike MS_BIND+MS_RDONLY) +// and so we can create a safe zero-copy sealed version of /proc/self/exe. +// This only works for privileged users and on kernels with overlayfs and +// fsopen() enabled. +// +// TODO: Since Linux 5.11, overlayfs can be created inside user namespaces so +// it is technically possible to create an overlayfs even for rootless +// containers. Unfortunately, this would require some ugly manual CGo+fork +// magic so we can do this later if we feel it's really needed. +func sealedOverlayfs(binPath, tmpDir string) (_ *os.File, Err error) { + // Try to do the superblock creation first to bail out early if we can't + // use this method. + overlayCtx, err := fsopen("overlay", unix.FSOPEN_CLOEXEC) + if err != nil { + return nil, err + } + defer overlayCtx.Close() + + // binPath is going to be /proc/self/exe, so do a readlink to get the real + // path. overlayfs needs the real underlying directory for this protection + // mode to work properly. + if realPath, err := os.Readlink(binPath); err == nil { + binPath = realPath + } + binLowerDirPath, binName := filepath.Split(binPath) + // Escape any ":"s or "\"s in the path. + binLowerDirPath = escapeOverlayLowerDir(binLowerDirPath) + + // Overlayfs requires two lowerdirs in order to run in "lower-only" mode, + // where writes are completely blocked. Ideally we would create a dummy + // tmpfs for this, but it turns out that overlayfs doesn't allow for + // anonymous mountns paths. + // NOTE: I'm working on a patch to fix this but it won't be backported. + dummyLowerDirPath := escapeOverlayLowerDir(tmpDir) + + // Configure the lowerdirs. The binary lowerdir needs to be on the top to + // ensure that a file called "runc" (binName) in the dummy lowerdir doesn't + // mask the binary. + lowerDirStr := binLowerDirPath + ":" + dummyLowerDirPath + if err := unix.FsconfigSetString(int(overlayCtx.Fd()), "lowerdir", lowerDirStr); err != nil { + return nil, fmt.Errorf("fsconfig set overlayfs lowerdir=%s: %w", lowerDirStr, err) + } + + // We don't care about xino (Linux 4.17) but it will be auto-enabled on + // some systems (if /run/runc and /usr/bin are on different filesystems) + // and this produces spurious dmesg log entries. We can safely ignore + // errors when disabling this because we don't actually care about the + // setting and we're just opportunistically disabling it. + _ = unix.FsconfigSetString(int(overlayCtx.Fd()), "xino", "off") + + // Get an actual handle to the overlayfs. + if err := unix.FsconfigCreate(int(overlayCtx.Fd())); err != nil { + return nil, os.NewSyscallError("fsconfig create overlayfs", err) + } + overlayFd, err := fsmount(overlayCtx, unix.FSMOUNT_CLOEXEC, unix.MS_RDONLY|unix.MS_NODEV|unix.MS_NOSUID) + if err != nil { + return nil, err + } + defer overlayFd.Close() + + // Grab a handle to the binary through overlayfs. + exeFile, err := utils.Openat(overlayFd, binName, unix.O_PATH|unix.O_NOFOLLOW|unix.O_CLOEXEC, 0) + if err != nil { + return nil, fmt.Errorf("open %s from overlayfs (lowerdir=%s): %w", binName, lowerDirStr, err) + } + // NOTE: We would like to check that exeFile is the same as /proc/self/exe, + // except this is a little difficult. Depending on what filesystems the + // layers are on, overlayfs can remap the inode numbers (and it always + // creates its own device numbers -- see ovl_map_dev_ino) so we can't do a + // basic stat-based check. The only reasonable option would be to hash both + // files and compare them, but this would require fully reading both files + // which would produce a similar performance overhead to memfd cloning. + // + // Ultimately, there isn't a real attack to be worried about here. An + // attacker would need to be able to modify files in /usr/sbin (or wherever + // runc lives), at which point they could just replace the runc binary with + // something malicious anyway. + return exeFile, nil +} diff --git a/vendor/github.com/opencontainers/runc/libcontainer/system/linux.go b/vendor/github.com/opencontainers/runc/libcontainer/system/linux.go new file mode 100644 index 000000000..e8ce0ecac --- /dev/null +++ b/vendor/github.com/opencontainers/runc/libcontainer/system/linux.go @@ -0,0 +1,171 @@ +//go:build linux + +package system + +import ( + "fmt" + "io" + "os" + "unsafe" + + "github.com/sirupsen/logrus" + "golang.org/x/sys/unix" +) + +type ParentDeathSignal int + +func (p ParentDeathSignal) Restore() error { + if p == 0 { + return nil + } + current, err := GetParentDeathSignal() + if err != nil { + return err + } + if p == current { + return nil + } + return p.Set() +} + +func (p ParentDeathSignal) Set() error { + return SetParentDeathSignal(uintptr(p)) +} + +func Exec(cmd string, args []string, env []string) error { + for { + err := unix.Exec(cmd, args, env) + if err != unix.EINTR { + return &os.PathError{Op: "exec", Path: cmd, Err: err} + } + } +} + +func SetParentDeathSignal(sig uintptr) error { + if err := unix.Prctl(unix.PR_SET_PDEATHSIG, sig, 0, 0, 0); err != nil { + return err + } + return nil +} + +func GetParentDeathSignal() (ParentDeathSignal, error) { + var sig int + if err := unix.Prctl(unix.PR_GET_PDEATHSIG, uintptr(unsafe.Pointer(&sig)), 0, 0, 0); err != nil { + return -1, err + } + return ParentDeathSignal(sig), nil +} + +func SetKeepCaps() error { + if err := unix.Prctl(unix.PR_SET_KEEPCAPS, 1, 0, 0, 0); err != nil { + return err + } + + return nil +} + +func ClearKeepCaps() error { + if err := unix.Prctl(unix.PR_SET_KEEPCAPS, 0, 0, 0, 0); err != nil { + return err + } + + return nil +} + +func Setctty() error { + if err := unix.IoctlSetInt(0, unix.TIOCSCTTY, 0); err != nil { + return err + } + return nil +} + +// SetSubreaper sets the value i as the subreaper setting for the calling process +func SetSubreaper(i int) error { + return unix.Prctl(unix.PR_SET_CHILD_SUBREAPER, uintptr(i), 0, 0, 0) +} + +// GetSubreaper returns the subreaper setting for the calling process +func GetSubreaper() (int, error) { + var i uintptr + + if err := unix.Prctl(unix.PR_GET_CHILD_SUBREAPER, uintptr(unsafe.Pointer(&i)), 0, 0, 0); err != nil { + return -1, err + } + + return int(i), nil +} + +func ExecutableMemfd(comment string, flags int) (*os.File, error) { + // Try to use MFD_EXEC first. On pre-6.3 kernels we get -EINVAL for this + // flag. On post-6.3 kernels, with vm.memfd_noexec=1 this ensures we get an + // executable memfd. For vm.memfd_noexec=2 this is a bit more complicated. + // The original vm.memfd_noexec=2 implementation incorrectly silently + // allowed MFD_EXEC[1] -- this should be fixed in 6.6. On 6.6 and newer + // kernels, we will get -EACCES if we try to use MFD_EXEC with + // vm.memfd_noexec=2 (for 6.3-6.5, -EINVAL was the intended return value). + // + // The upshot is we only need to retry without MFD_EXEC on -EINVAL because + // it just so happens that passing MFD_EXEC bypasses vm.memfd_noexec=2 on + // kernels where -EINVAL is actually a security denial. + memfd, err := unix.MemfdCreate(comment, flags|unix.MFD_EXEC) + if err == unix.EINVAL { + memfd, err = unix.MemfdCreate(comment, flags) + } + if err != nil { + if err == unix.EACCES { + logrus.Info("memfd_create(MFD_EXEC) failed, possibly due to vm.memfd_noexec=2 -- falling back to less secure O_TMPFILE") + } + err := os.NewSyscallError("memfd_create", err) + return nil, fmt.Errorf("failed to create executable memfd: %w", err) + } + return os.NewFile(uintptr(memfd), "/memfd:"+comment), nil +} + +// Copy is like io.Copy except it uses sendfile(2) if the source and sink are +// both (*os.File) as an optimisation to make copies faster. +func Copy(dst io.Writer, src io.Reader) (copied int64, err error) { + dstFile, _ := dst.(*os.File) + srcFile, _ := src.(*os.File) + + if dstFile != nil && srcFile != nil { + fi, err := srcFile.Stat() + if err != nil { + goto fallback + } + size := fi.Size() + for size > 0 { + n, err := unix.Sendfile(int(dstFile.Fd()), int(srcFile.Fd()), nil, int(size)) + if n > 0 { + size -= int64(n) + copied += int64(n) + } + if err == unix.EINTR { + continue + } + if err != nil { + if copied == 0 { + // If we haven't copied anything so far, we can safely just + // fallback to io.Copy. We could always do the fallback but + // it's safer to error out in the case of a partial copy + // followed by an error (which should never happen). + goto fallback + } + return copied, fmt.Errorf("partial sendfile copy: %w", err) + } + } + return copied, nil + } + +fallback: + return io.Copy(dst, src) +} + +// SetLinuxPersonality sets the Linux execution personality. For more information see the personality syscall documentation. +// checkout getLinuxPersonalityFromStr() from libcontainer/specconv/spec_linux.go for type conversion. +func SetLinuxPersonality(personality int) error { + _, _, errno := unix.Syscall(unix.SYS_PERSONALITY, uintptr(personality), 0, 0) + if errno != 0 { + return &os.SyscallError{Syscall: "set_personality", Err: errno} + } + return nil +} diff --git a/vendor/github.com/opencontainers/runc/libcontainer/system/proc.go b/vendor/github.com/opencontainers/runc/libcontainer/system/proc.go new file mode 100644 index 000000000..774443ec9 --- /dev/null +++ b/vendor/github.com/opencontainers/runc/libcontainer/system/proc.go @@ -0,0 +1,127 @@ +package system + +import ( + "fmt" + "os" + "path/filepath" + "strconv" + "strings" +) + +// State is the status of a process. +type State rune + +const ( // Only values for Linux 3.14 and later are listed here + Dead State = 'X' + DiskSleep State = 'D' + Running State = 'R' + Sleeping State = 'S' + Stopped State = 'T' + TracingStop State = 't' + Zombie State = 'Z' + Parked State = 'P' + Idle State = 'I' +) + +// String forms of the state from proc(5)'s documentation for +// /proc/[pid]/status' "State" field. +func (s State) String() string { + switch s { + case Dead: + return "dead" + case DiskSleep: + return "disk sleep" + case Running: + return "running" + case Sleeping: + return "sleeping" + case Stopped: + return "stopped" + case TracingStop: + return "tracing stop" + case Zombie: + return "zombie" + case Parked: + return "parked" + case Idle: + return "idle" // kernel thread + default: + return fmt.Sprintf("unknown (%c)", s) + } +} + +// Stat_t represents the information from /proc/[pid]/stat, as +// described in proc(5) with names based on the /proc/[pid]/status +// fields. +type Stat_t struct { + // Name is the command run by the process. + Name string + + // State is the state of the process. + State State + + // StartTime is the number of clock ticks after system boot (since + // Linux 2.6). + StartTime uint64 +} + +// Stat returns a Stat_t instance for the specified process. +func Stat(pid int) (stat Stat_t, err error) { + bytes, err := os.ReadFile(filepath.Join("/proc", strconv.Itoa(pid), "stat")) + if err != nil { + return stat, err + } + return parseStat(string(bytes)) +} + +func parseStat(data string) (stat Stat_t, err error) { + // Example: + // 89653 (gunicorn: maste) S 89630 89653 89653 0 -1 4194560 29689 28896 0 3 146 32 76 19 20 0 1 0 2971844 52965376 3920 18446744073709551615 1 1 0 0 0 0 0 16781312 137447943 0 0 0 17 1 0 0 0 0 0 0 0 0 0 0 0 0 0 + // The fields are space-separated, see full description in proc(5). + // + // We are only interested in: + // * field 2: process name. It is the only field enclosed into + // parenthesis, as it can contain spaces (and parenthesis) inside. + // * field 3: process state, a single character (%c) + // * field 22: process start time, a long unsigned integer (%llu). + + // 1. Look for the first '(' and the last ')' first, what's in between is Name. + // We expect at least 20 fields and a space after the last one. + + const minAfterName = 20*2 + 1 // the min field is '0 '. + + first := strings.IndexByte(data, '(') + if first < 0 || first+minAfterName >= len(data) { + return stat, fmt.Errorf("invalid stat data (no comm or too short): %q", data) + } + + last := strings.LastIndexByte(data, ')') + if last <= first || last+minAfterName >= len(data) { + return stat, fmt.Errorf("invalid stat data (no comm or too short): %q", data) + } + + stat.Name = data[first+1 : last] + + // 2. Remove fields 1 and 2 and a space after. State is right after. + data = data[last+2:] + stat.State = State(data[0]) + + // 3. StartTime is field 22, data is at field 3 now, so we need to skip 19 spaces. + skipSpaces := 22 - 3 + for first = 0; skipSpaces > 0 && first < len(data); first++ { + if data[first] == ' ' { + skipSpaces-- + } + } + // Now first points to StartTime; look for space right after. + i := strings.IndexByte(data[first:], ' ') + if i < 0 { + return stat, fmt.Errorf("invalid stat data (too short): %q", data) + } + stat.StartTime, err = strconv.ParseUint(data[first:first+i], 10, 64) + if err != nil { + return stat, fmt.Errorf("invalid stat data (bad start time): %w", err) + } + + return stat, nil +} diff --git a/vendor/github.com/opencontainers/runc/libcontainer/system/rlimit_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/system/rlimit_linux.go new file mode 100644 index 000000000..4595fa82a --- /dev/null +++ b/vendor/github.com/opencontainers/runc/libcontainer/system/rlimit_linux.go @@ -0,0 +1,15 @@ +//go:build go1.23 + +package system + +import ( + "syscall" +) + +// ClearRlimitNofileCache clears go runtime's nofile rlimit cache. The argument +// is process RLIMIT_NOFILE values. Relies on go.dev/cl/588076. +func ClearRlimitNofileCache(lim *syscall.Rlimit) { + // Ignore the return values since we only need to clean the cache, + // the limit is going to be set via unix.Prlimit elsewhere. + _ = syscall.Setrlimit(syscall.RLIMIT_NOFILE, lim) +} diff --git a/vendor/github.com/opencontainers/runc/libcontainer/utils/cmsg.go b/vendor/github.com/opencontainers/runc/libcontainer/utils/cmsg.go new file mode 100644 index 000000000..3aca5bdac --- /dev/null +++ b/vendor/github.com/opencontainers/runc/libcontainer/utils/cmsg.go @@ -0,0 +1,135 @@ +package utils + +/* + * Copyright 2016, 2017 SUSE LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import ( + "fmt" + "os" + "runtime" + + "golang.org/x/sys/unix" +) + +// MaxNameLen is the maximum length of the name of a file descriptor being sent +// using SendFile. The name of the file handle returned by RecvFile will never be +// larger than this value. +const MaxNameLen = 4096 + +// oobSpace is the size of the oob slice required to store a single FD. Note +// that unix.UnixRights appears to make the assumption that fd is always int32, +// so sizeof(fd) = 4. +var oobSpace = unix.CmsgSpace(4) + +// RecvFile waits for a file descriptor to be sent over the given AF_UNIX +// socket. The file name of the remote file descriptor will be recreated +// locally (it is sent as non-auxiliary data in the same payload). +func RecvFile(socket *os.File) (_ *os.File, Err error) { + name := make([]byte, MaxNameLen) + oob := make([]byte, oobSpace) + + sockfd := socket.Fd() + var ( + n, oobn int + err error + ) + + for { + n, oobn, _, _, err = unix.Recvmsg(int(sockfd), name, oob, unix.MSG_CMSG_CLOEXEC) + if err != unix.EINTR { //nolint:errorlint // unix errors are bare + break + } + } + + if err != nil { + return nil, os.NewSyscallError("recvmsg", err) + } + if n >= MaxNameLen || oobn != oobSpace { + return nil, fmt.Errorf("recvfile: incorrect number of bytes read (n=%d oobn=%d)", n, oobn) + } + // Truncate. + name = name[:n] + oob = oob[:oobn] + + scms, err := unix.ParseSocketControlMessage(oob) + if err != nil { + return nil, err + } + + // We cannot control how many SCM_RIGHTS we receive, and upon receiving + // them all of the descriptors are installed in our fd table, so we need to + // parse all of the SCM_RIGHTS we received in order to close all of the + // descriptors on error. + var fds []int + defer func() { + for i, fd := range fds { + if i == 0 && Err == nil { + // Only close the first one on error. + continue + } + // Always close extra ones. + _ = unix.Close(fd) + } + }() + var lastErr error + for _, scm := range scms { + if scm.Header.Type == unix.SCM_RIGHTS { + scmFds, err := unix.ParseUnixRights(&scm) + if err != nil { + lastErr = err + } else { + fds = append(fds, scmFds...) + } + } + } + if lastErr != nil { + return nil, lastErr + } + + // We do this after collecting the fds to make sure we close them all when + // returning an error here. + if len(scms) != 1 { + return nil, fmt.Errorf("recvfd: number of SCMs is not 1: %d", len(scms)) + } + if len(fds) != 1 { + return nil, fmt.Errorf("recvfd: number of fds is not 1: %d", len(fds)) + } + return os.NewFile(uintptr(fds[0]), string(name)), nil +} + +// SendFile sends a file over the given AF_UNIX socket. file.Name() is also +// included so that if the other end uses RecvFile, the file will have the same +// name information. +func SendFile(socket *os.File, file *os.File) error { + name := file.Name() + if len(name) >= MaxNameLen { + return fmt.Errorf("sendfd: filename too long: %s", name) + } + err := SendRawFd(socket, name, file.Fd()) + runtime.KeepAlive(file) + return err +} + +// SendRawFd sends a specific file descriptor over the given AF_UNIX socket. +func SendRawFd(socket *os.File, msg string, fd uintptr) error { + oob := unix.UnixRights(int(fd)) + for { + err := unix.Sendmsg(int(socket.Fd()), []byte(msg), oob, nil, 0) + if err != unix.EINTR { //nolint:errorlint // unix errors are bare + return os.NewSyscallError("sendmsg", err) + } + } +} diff --git a/vendor/github.com/opencontainers/runc/libcontainer/utils/utils.go b/vendor/github.com/opencontainers/runc/libcontainer/utils/utils.go new file mode 100644 index 000000000..23003e177 --- /dev/null +++ b/vendor/github.com/opencontainers/runc/libcontainer/utils/utils.go @@ -0,0 +1,115 @@ +package utils + +import ( + "encoding/json" + "io" + "os" + "path/filepath" + "strings" + + "golang.org/x/sys/unix" +) + +const ( + exitSignalOffset = 128 +) + +// ExitStatus returns the correct exit status for a process based on if it +// was signaled or exited cleanly +func ExitStatus(status unix.WaitStatus) int { + if status.Signaled() { + return exitSignalOffset + int(status.Signal()) + } + return status.ExitStatus() +} + +// WriteJSON writes the provided struct v to w using standard json marshaling +// without a trailing newline. This is used instead of json.Encoder because +// there might be a problem in json decoder in some cases, see: +// https://github.com/docker/docker/issues/14203#issuecomment-174177790 +func WriteJSON(w io.Writer, v interface{}) error { + data, err := json.Marshal(v) + if err != nil { + return err + } + _, err = w.Write(data) + return err +} + +// CleanPath makes a path safe for use with filepath.Join. This is done by not +// only cleaning the path, but also (if the path is relative) adding a leading +// '/' and cleaning it (then removing the leading '/'). This ensures that a +// path resulting from prepending another path will always resolve to lexically +// be a subdirectory of the prefixed path. This is all done lexically, so paths +// that include symlinks won't be safe as a result of using CleanPath. +func CleanPath(path string) string { + // Deal with empty strings nicely. + if path == "" { + return "" + } + + // Ensure that all paths are cleaned (especially problematic ones like + // "/../../../../../" which can cause lots of issues). + + if filepath.IsAbs(path) { + return filepath.Clean(path) + } + + // If the path isn't absolute, we need to do more processing to fix paths + // such as "../../../../<etc>/some/path". We also shouldn't convert absolute + // paths to relative ones. + path = filepath.Clean(string(os.PathSeparator) + path) + // This can't fail, as (by definition) all paths are relative to root. + path, _ = filepath.Rel(string(os.PathSeparator), path) + + return path +} + +// stripRoot returns the passed path, stripping the root path if it was +// (lexicially) inside it. Note that both passed paths will always be treated +// as absolute, and the returned path will also always be absolute. In +// addition, the paths are cleaned before stripping the root. +func stripRoot(root, path string) string { + // Make the paths clean and absolute. + root, path = CleanPath("/"+root), CleanPath("/"+path) + switch { + case path == root: + path = "/" + case root == "/": + // do nothing + default: + path = strings.TrimPrefix(path, root+"/") + } + return CleanPath("/" + path) +} + +// SearchLabels searches through a list of key=value pairs for a given key, +// returning its value, and the binary flag telling whether the key exist. +func SearchLabels(labels []string, key string) (string, bool) { + key += "=" + for _, s := range labels { + if val, ok := strings.CutPrefix(s, key); ok { + return val, true + } + } + return "", false +} + +// Annotations returns the bundle path and user defined annotations from the +// libcontainer state. We need to remove the bundle because that is a label +// added by libcontainer. +func Annotations(labels []string) (bundle string, userAnnotations map[string]string) { + userAnnotations = make(map[string]string) + for _, l := range labels { + name, value, ok := strings.Cut(l, "=") + if !ok { + continue + } + if name == "bundle" { + bundle = value + } else { + userAnnotations[name] = value + } + } + return +} diff --git a/vendor/github.com/opencontainers/runc/libcontainer/utils/utils_unix.go b/vendor/github.com/opencontainers/runc/libcontainer/utils/utils_unix.go new file mode 100644 index 000000000..f6b3fefb1 --- /dev/null +++ b/vendor/github.com/opencontainers/runc/libcontainer/utils/utils_unix.go @@ -0,0 +1,366 @@ +//go:build !windows + +package utils + +import ( + "fmt" + "math" + "os" + "path/filepath" + "runtime" + "strconv" + "strings" + "sync" + _ "unsafe" // for go:linkname + + securejoin "github.com/cyphar/filepath-securejoin" + "github.com/sirupsen/logrus" + "golang.org/x/sys/unix" +) + +// EnsureProcHandle returns whether or not the given file handle is on procfs. +func EnsureProcHandle(fh *os.File) error { + var buf unix.Statfs_t + if err := unix.Fstatfs(int(fh.Fd()), &buf); err != nil { + return fmt.Errorf("ensure %s is on procfs: %w", fh.Name(), err) + } + if buf.Type != unix.PROC_SUPER_MAGIC { + return fmt.Errorf("%s is not on procfs", fh.Name()) + } + return nil +} + +var ( + haveCloseRangeCloexecBool bool + haveCloseRangeCloexecOnce sync.Once +) + +func haveCloseRangeCloexec() bool { + haveCloseRangeCloexecOnce.Do(func() { + // Make sure we're not closing a random file descriptor. + tmpFd, err := unix.FcntlInt(0, unix.F_DUPFD_CLOEXEC, 0) + if err != nil { + return + } + defer unix.Close(tmpFd) + + err = unix.CloseRange(uint(tmpFd), uint(tmpFd), unix.CLOSE_RANGE_CLOEXEC) + // Any error means we cannot use close_range(CLOSE_RANGE_CLOEXEC). + // -ENOSYS and -EINVAL ultimately mean we don't have support, but any + // other potential error would imply that even the most basic close + // operation wouldn't work. + haveCloseRangeCloexecBool = err == nil + }) + return haveCloseRangeCloexecBool +} + +type fdFunc func(fd int) + +// fdRangeFrom calls the passed fdFunc for each file descriptor that is open in +// the current process. +func fdRangeFrom(minFd int, fn fdFunc) error { + procSelfFd, closer := ProcThreadSelf("fd") + defer closer() + + fdDir, err := os.Open(procSelfFd) + if err != nil { + return err + } + defer fdDir.Close() + + if err := EnsureProcHandle(fdDir); err != nil { + return err + } + + fdList, err := fdDir.Readdirnames(-1) + if err != nil { + return err + } + for _, fdStr := range fdList { + fd, err := strconv.Atoi(fdStr) + // Ignore non-numeric file names. + if err != nil { + continue + } + // Ignore descriptors lower than our specified minimum. + if fd < minFd { + continue + } + // Ignore the file descriptor we used for readdir, as it will be closed + // when we return. + if uintptr(fd) == fdDir.Fd() { + continue + } + // Run the closure. + fn(fd) + } + return nil +} + +// CloseExecFrom sets the O_CLOEXEC flag on all file descriptors greater or +// equal to minFd in the current process. +func CloseExecFrom(minFd int) error { + // Use close_range(CLOSE_RANGE_CLOEXEC) if possible. + if haveCloseRangeCloexec() { + err := unix.CloseRange(uint(minFd), math.MaxInt32, unix.CLOSE_RANGE_CLOEXEC) + if err == nil { + return nil + } + + logrus.Debugf("close_range failed, closing range one at a time (error: %v)", err) + + // If close_range fails, we fall back to the standard loop. + } + // Otherwise, fall back to the standard loop. + return fdRangeFrom(minFd, unix.CloseOnExec) +} + +//go:linkname runtime_IsPollDescriptor internal/poll.IsPollDescriptor + +// In order to make sure we do not close the internal epoll descriptors the Go +// runtime uses, we need to ensure that we skip descriptors that match +// "internal/poll".IsPollDescriptor. Yes, this is a Go runtime internal thing, +// unfortunately there's no other way to be sure we're only keeping the file +// descriptors the Go runtime needs. Hopefully nothing blows up doing this... +func runtime_IsPollDescriptor(fd uintptr) bool //nolint:revive + +// UnsafeCloseFrom closes all file descriptors greater or equal to minFd in the +// current process, except for those critical to Go's runtime (such as the +// netpoll management descriptors). +// +// NOTE: That this function is incredibly dangerous to use in most Go code, as +// closing file descriptors from underneath *os.File handles can lead to very +// bad behaviour (the closed file descriptor can be re-used and then any +// *os.File operations would apply to the wrong file). This function is only +// intended to be called from the last stage of runc init. +func UnsafeCloseFrom(minFd int) error { + // We cannot use close_range(2) even if it is available, because we must + // not close some file descriptors. + return fdRangeFrom(minFd, func(fd int) { + if runtime_IsPollDescriptor(uintptr(fd)) { + // These are the Go runtimes internal netpoll file descriptors. + // These file descriptors are operated on deep in the Go scheduler, + // and closing those files from underneath Go can result in panics. + // There is no issue with keeping them because they are not + // executable and are not useful to an attacker anyway. Also we + // don't have any choice. + return + } + // There's nothing we can do about errors from close(2), and the + // only likely error to be seen is EBADF which indicates the fd was + // already closed (in which case, we got what we wanted). + _ = unix.Close(fd) + }) +} + +// NewSockPair returns a new SOCK_STREAM unix socket pair. +func NewSockPair(name string) (parent, child *os.File, err error) { + fds, err := unix.Socketpair(unix.AF_LOCAL, unix.SOCK_STREAM|unix.SOCK_CLOEXEC, 0) + if err != nil { + return nil, nil, err + } + return os.NewFile(uintptr(fds[1]), name+"-p"), os.NewFile(uintptr(fds[0]), name+"-c"), nil +} + +// WithProcfd runs the passed closure with a procfd path (/proc/self/fd/...) +// corresponding to the unsafePath resolved within the root. Before passing the +// fd, this path is verified to have been inside the root -- so operating on it +// through the passed fdpath should be safe. Do not access this path through +// the original path strings, and do not attempt to use the pathname outside of +// the passed closure (the file handle will be freed once the closure returns). +func WithProcfd(root, unsafePath string, fn func(procfd string) error) error { + // Remove the root then forcefully resolve inside the root. + unsafePath = stripRoot(root, unsafePath) + path, err := securejoin.SecureJoin(root, unsafePath) + if err != nil { + return fmt.Errorf("resolving path inside rootfs failed: %w", err) + } + + procSelfFd, closer := ProcThreadSelf("fd/") + defer closer() + + // Open the target path. + fh, err := os.OpenFile(path, unix.O_PATH|unix.O_CLOEXEC, 0) + if err != nil { + return fmt.Errorf("open o_path procfd: %w", err) + } + defer fh.Close() + + procfd := filepath.Join(procSelfFd, strconv.Itoa(int(fh.Fd()))) + // Double-check the path is the one we expected. + if realpath, err := os.Readlink(procfd); err != nil { + return fmt.Errorf("procfd verification failed: %w", err) + } else if realpath != path { + return fmt.Errorf("possibly malicious path detected -- refusing to operate on %s", realpath) + } + + return fn(procfd) +} + +type ProcThreadSelfCloser func() + +var ( + haveProcThreadSelf bool + haveProcThreadSelfOnce sync.Once +) + +// ProcThreadSelf returns a string that is equivalent to +// /proc/thread-self/<subpath>, with a graceful fallback on older kernels where +// /proc/thread-self doesn't exist. This method DOES NOT use SecureJoin, +// meaning that the passed string needs to be trusted. The caller _must_ call +// the returned procThreadSelfCloser function (which is runtime.UnlockOSThread) +// *only once* after it has finished using the returned path string. +func ProcThreadSelf(subpath string) (string, ProcThreadSelfCloser) { + haveProcThreadSelfOnce.Do(func() { + if _, err := os.Stat("/proc/thread-self/"); err == nil { + haveProcThreadSelf = true + } else { + logrus.Debugf("cannot stat /proc/thread-self (%v), falling back to /proc/self/task/<tid>", err) + } + }) + + // We need to lock our thread until the caller is done with the path string + // because any non-atomic operation on the path (such as opening a file, + // then reading it) could be interrupted by the Go runtime where the + // underlying thread is swapped out and the original thread is killed, + // resulting in pull-your-hair-out-hard-to-debug issues in the caller. In + // addition, the pre-3.17 fallback makes everything non-atomic because the + // same thing could happen between unix.Gettid() and the path operations. + // + // In theory, we don't need to lock in the atomic user case when using + // /proc/thread-self/, but it's better to be safe than sorry (and there are + // only one or two truly atomic users of /proc/thread-self/). + runtime.LockOSThread() + + threadSelf := "/proc/thread-self/" + if !haveProcThreadSelf { + // Pre-3.17 kernels did not have /proc/thread-self, so do it manually. + threadSelf = "/proc/self/task/" + strconv.Itoa(unix.Gettid()) + "/" + if _, err := os.Stat(threadSelf); err != nil { + // Unfortunately, this code is called from rootfs_linux.go where we + // are running inside the pid namespace of the container but /proc + // is the host's procfs. Unfortunately there is no real way to get + // the correct tid to use here (the kernel age means we cannot do + // things like set up a private fsopen("proc") -- even scanning + // NSpid in all of the tasks in /proc/self/task/*/status requires + // Linux 4.1). + // + // So, we just have to assume that /proc/self is acceptable in this + // one specific case. + if os.Getpid() == 1 { + logrus.Debugf("/proc/thread-self (tid=%d) cannot be emulated inside the initial container setup -- using /proc/self instead: %v", unix.Gettid(), err) + } else { + // This should never happen, but the fallback should work in most cases... + logrus.Warnf("/proc/thread-self could not be emulated for pid=%d (tid=%d) -- using more buggy /proc/self fallback instead: %v", os.Getpid(), unix.Gettid(), err) + } + threadSelf = "/proc/self/" + } + } + return threadSelf + subpath, runtime.UnlockOSThread +} + +// ProcThreadSelfFd is small wrapper around ProcThreadSelf to make it easier to +// create a /proc/thread-self handle for given file descriptor. +// +// It is basically equivalent to ProcThreadSelf(fmt.Sprintf("fd/%d", fd)), but +// without using fmt.Sprintf to avoid unneeded overhead. +func ProcThreadSelfFd(fd uintptr) (string, ProcThreadSelfCloser) { + return ProcThreadSelf("fd/" + strconv.FormatUint(uint64(fd), 10)) +} + +// IsLexicallyInRoot is shorthand for strings.HasPrefix(path+"/", root+"/"), +// but properly handling the case where path or root are "/". +// +// NOTE: The return value only make sense if the path doesn't contain "..". +func IsLexicallyInRoot(root, path string) bool { + if root != "/" { + root += "/" + } + if path != "/" { + path += "/" + } + return strings.HasPrefix(path, root) +} + +// MkdirAllInRootOpen attempts to make +// +// path, _ := securejoin.SecureJoin(root, unsafePath) +// os.MkdirAll(path, mode) +// os.Open(path) +// +// safer against attacks where components in the path are changed between +// SecureJoin returning and MkdirAll (or Open) being called. In particular, we +// try to detect any symlink components in the path while we are doing the +// MkdirAll. +// +// NOTE: If unsafePath is a subpath of root, we assume that you have already +// called SecureJoin and so we use the provided path verbatim without resolving +// any symlinks (this is done in a way that avoids symlink-exchange races). +// This means that the path also must not contain ".." elements, otherwise an +// error will occur. +// +// This uses securejoin.MkdirAllHandle under the hood, but it has special +// handling if unsafePath has already been scoped within the rootfs (this is +// needed for a lot of runc callers and fixing this would require reworking a +// lot of path logic). +func MkdirAllInRootOpen(root, unsafePath string, mode os.FileMode) (_ *os.File, Err error) { + // If the path is already "within" the root, get the path relative to the + // root and use that as the unsafe path. This is necessary because a lot of + // MkdirAllInRootOpen callers have already done SecureJoin, and refactoring + // all of them to stop using these SecureJoin'd paths would require a fair + // amount of work. + // TODO(cyphar): Do the refactor to libpathrs once it's ready. + if IsLexicallyInRoot(root, unsafePath) { + subPath, err := filepath.Rel(root, unsafePath) + if err != nil { + return nil, err + } + unsafePath = subPath + } + + // Check for any silly mode bits. + if mode&^0o7777 != 0 { + return nil, fmt.Errorf("tried to include non-mode bits in MkdirAll mode: 0o%.3o", mode) + } + // Linux (and thus os.MkdirAll) silently ignores the suid and sgid bits if + // passed. While it would make sense to return an error in that case (since + // the user has asked for a mode that won't be applied), for compatibility + // reasons we have to ignore these bits. + if ignoredBits := mode &^ 0o1777; ignoredBits != 0 { + logrus.Warnf("MkdirAll called with no-op mode bits that are ignored by Linux: 0o%.3o", ignoredBits) + mode &= 0o1777 + } + + rootDir, err := os.OpenFile(root, unix.O_DIRECTORY|unix.O_CLOEXEC, 0) + if err != nil { + return nil, fmt.Errorf("open root handle: %w", err) + } + defer rootDir.Close() + + return securejoin.MkdirAllHandle(rootDir, unsafePath, mode) +} + +// MkdirAllInRoot is a wrapper around MkdirAllInRootOpen which closes the +// returned handle, for callers that don't need to use it. +func MkdirAllInRoot(root, unsafePath string, mode os.FileMode) error { + f, err := MkdirAllInRootOpen(root, unsafePath, mode) + if err == nil { + _ = f.Close() + } + return err +} + +// Openat is a Go-friendly openat(2) wrapper. +func Openat(dir *os.File, path string, flags int, mode uint32) (*os.File, error) { + dirFd := unix.AT_FDCWD + if dir != nil { + dirFd = int(dir.Fd()) + } + flags |= unix.O_CLOEXEC + + fd, err := unix.Openat(dirFd, path, flags, mode) + if err != nil { + return nil, &os.PathError{Op: "openat", Path: path, Err: err} + } + return os.NewFile(uintptr(fd), dir.Name()+"/"+path), nil +} diff --git a/vendor/github.com/opencontainers/runtime-spec/specs-go/config.go b/vendor/github.com/opencontainers/runtime-spec/specs-go/config.go index d1236ba72..1aa0693b5 100644 --- a/vendor/github.com/opencontainers/runtime-spec/specs-go/config.go +++ b/vendor/github.com/opencontainers/runtime-spec/specs-go/config.go @@ -83,7 +83,7 @@ type Process struct { // Rlimits specifies rlimit options to apply to the process. Rlimits []POSIXRlimit `json:"rlimits,omitempty" platform:"linux,solaris,zos"` // NoNewPrivileges controls whether additional privileges could be gained by processes in the container. - NoNewPrivileges bool `json:"noNewPrivileges,omitempty" platform:"linux"` + NoNewPrivileges bool `json:"noNewPrivileges,omitempty" platform:"linux,zos"` // ApparmorProfile specifies the apparmor profile for the container. ApparmorProfile string `json:"apparmorProfile,omitempty" platform:"linux"` // Specify an oom_score_adj for the container. @@ -94,10 +94,12 @@ type Process struct { SelinuxLabel string `json:"selinuxLabel,omitempty" platform:"linux"` // IOPriority contains the I/O priority settings for the cgroup. IOPriority *LinuxIOPriority `json:"ioPriority,omitempty" platform:"linux"` + // ExecCPUAffinity specifies CPU affinity for exec processes. + ExecCPUAffinity *CPUAffinity `json:"execCPUAffinity,omitempty" platform:"linux"` } // LinuxCapabilities specifies the list of allowed capabilities that are kept for a process. -// http://man7.org/linux/man-pages/man7/capabilities.7.html +// https://man7.org/linux/man-pages/man7/capabilities.7.html type LinuxCapabilities struct { // Bounding is the set of capabilities checked by the kernel. Bounding []string `json:"bounding,omitempty" platform:"linux"` @@ -127,6 +129,12 @@ const ( IOPRIO_CLASS_IDLE IOPriorityClass = "IOPRIO_CLASS_IDLE" ) +// CPUAffinity specifies process' CPU affinity. +type CPUAffinity struct { + Initial string `json:"initial,omitempty"` + Final string `json:"final,omitempty"` +} + // Box specifies dimensions of a rectangle. Used for specifying the size of a console. type Box struct { // Height is the vertical dimension of a box. @@ -627,6 +635,17 @@ type WindowsCPUResources struct { // cycles per 10,000 cycles. Set processor `maximum` to a percentage times // 100. Maximum *uint16 `json:"maximum,omitempty"` + // Set of CPUs to affinitize for this container. + Affinity []WindowsCPUGroupAffinity `json:"affinity,omitempty"` +} + +// Similar to _GROUP_AFFINITY struct defined in +// https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/miniport/ns-miniport-_group_affinity +type WindowsCPUGroupAffinity struct { + // CPU mask relative to this CPU group. + Mask uint64 `json:"mask,omitempty"` + // Processor group the mask refers to, as returned by GetLogicalProcessorInformationEx. + Group uint32 `json:"group,omitempty"` } // WindowsStorageResources contains storage resource management settings. @@ -751,6 +770,10 @@ const ( ArchPARISC Arch = "SCMP_ARCH_PARISC" ArchPARISC64 Arch = "SCMP_ARCH_PARISC64" ArchRISCV64 Arch = "SCMP_ARCH_RISCV64" + ArchLOONGARCH64 Arch = "SCMP_ARCH_LOONGARCH64" + ArchM68K Arch = "SCMP_ARCH_M68K" + ArchSH Arch = "SCMP_ARCH_SH" + ArchSHEB Arch = "SCMP_ARCH_SHEB" ) // LinuxSeccompAction taken upon Seccomp rule match @@ -826,28 +849,33 @@ type LinuxIntelRdt struct { // ZOS contains platform-specific configuration for z/OS based containers. type ZOS struct { - // Devices are a list of device nodes that are created for the container - Devices []ZOSDevice `json:"devices,omitempty"` + // Namespaces contains the namespaces that are created and/or joined by the container + Namespaces []ZOSNamespace `json:"namespaces,omitempty"` } -// ZOSDevice represents the mknod information for a z/OS special device file -type ZOSDevice struct { - // Path to the device. - Path string `json:"path"` - // Device type, block, char, etc. - Type string `json:"type"` - // Major is the device's major number. - Major int64 `json:"major"` - // Minor is the device's minor number. - Minor int64 `json:"minor"` - // FileMode permission bits for the device. - FileMode *os.FileMode `json:"fileMode,omitempty"` - // UID of the device. - UID *uint32 `json:"uid,omitempty"` - // Gid of the device. - GID *uint32 `json:"gid,omitempty"` +// ZOSNamespace is the configuration for a z/OS namespace +type ZOSNamespace struct { + // Type is the type of namespace + Type ZOSNamespaceType `json:"type"` + // Path is a path to an existing namespace persisted on disk that can be joined + // and is of the same type + Path string `json:"path,omitempty"` } +// ZOSNamespaceType is one of the z/OS namespaces +type ZOSNamespaceType string + +const ( + // PIDNamespace for isolating process IDs + ZOSPIDNamespace ZOSNamespaceType = "pid" + // MountNamespace for isolating mount points + ZOSMountNamespace ZOSNamespaceType = "mount" + // IPCNamespace for isolating System V IPC, POSIX message queues + ZOSIPCNamespace ZOSNamespaceType = "ipc" + // UTSNamespace for isolating hostname and NIS domain name + ZOSUTSNamespace ZOSNamespaceType = "uts" +) + // LinuxSchedulerPolicy represents different scheduling policies used with the Linux Scheduler type LinuxSchedulerPolicy string diff --git a/vendor/github.com/opencontainers/runtime-spec/specs-go/version.go b/vendor/github.com/opencontainers/runtime-spec/specs-go/version.go index 503971e05..23234a9c5 100644 --- a/vendor/github.com/opencontainers/runtime-spec/specs-go/version.go +++ b/vendor/github.com/opencontainers/runtime-spec/specs-go/version.go @@ -8,7 +8,7 @@ const ( // VersionMinor is for functionality in a backwards-compatible manner VersionMinor = 2 // VersionPatch is for backwards-compatible bug fixes - VersionPatch = 0 + VersionPatch = 1 // VersionDev indicates development branch. Releases will be empty string. VersionDev = "" diff --git a/vendor/github.com/russross/blackfriday/v2/.gitignore b/vendor/github.com/russross/blackfriday/v2/.gitignore deleted file mode 100644 index 75623dccc..000000000 --- a/vendor/github.com/russross/blackfriday/v2/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -*.out -*.swp -*.8 -*.6 -_obj -_test* -markdown -tags diff --git a/vendor/github.com/russross/blackfriday/v2/.travis.yml b/vendor/github.com/russross/blackfriday/v2/.travis.yml deleted file mode 100644 index b0b525a5a..000000000 --- a/vendor/github.com/russross/blackfriday/v2/.travis.yml +++ /dev/null @@ -1,17 +0,0 @@ -sudo: false -language: go -go: - - "1.10.x" - - "1.11.x" - - tip -matrix: - fast_finish: true - allow_failures: - - go: tip -install: - - # Do nothing. This is needed to prevent default install action "go get -t -v ./..." from happening here (we want it to happen inside script step). -script: - - go get -t -v ./... - - diff -u <(echo -n) <(gofmt -d -s .) - - go tool vet . - - go test -v ./... diff --git a/vendor/github.com/russross/blackfriday/v2/LICENSE.txt b/vendor/github.com/russross/blackfriday/v2/LICENSE.txt deleted file mode 100644 index 2885af360..000000000 --- a/vendor/github.com/russross/blackfriday/v2/LICENSE.txt +++ /dev/null @@ -1,29 +0,0 @@ -Blackfriday is distributed under the Simplified BSD License: - -> Copyright © 2011 Russ Ross -> All rights reserved. -> -> Redistribution and use in source and binary forms, with or without -> modification, are permitted provided that the following conditions -> are met: -> -> 1. Redistributions of source code must retain the above copyright -> notice, this list of conditions and the following disclaimer. -> -> 2. Redistributions in binary form must reproduce the above -> copyright notice, this list of conditions and the following -> disclaimer in the documentation and/or other materials provided with -> the distribution. -> -> THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -> "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -> LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -> FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -> COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -> INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -> BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -> LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -> CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -> LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -> ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -> POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/russross/blackfriday/v2/README.md b/vendor/github.com/russross/blackfriday/v2/README.md deleted file mode 100644 index d9c08a22f..000000000 --- a/vendor/github.com/russross/blackfriday/v2/README.md +++ /dev/null @@ -1,335 +0,0 @@ -Blackfriday -[![Build Status][BuildV2SVG]][BuildV2URL] -[![PkgGoDev][PkgGoDevV2SVG]][PkgGoDevV2URL] -=========== - -Blackfriday is a [Markdown][1] processor implemented in [Go][2]. It -is paranoid about its input (so you can safely feed it user-supplied -data), it is fast, it supports common extensions (tables, smart -punctuation substitutions, etc.), and it is safe for all utf-8 -(unicode) input. - -HTML output is currently supported, along with Smartypants -extensions. - -It started as a translation from C of [Sundown][3]. - - -Installation ------------- - -Blackfriday is compatible with modern Go releases in module mode. -With Go installed: - - go get github.com/russross/blackfriday/v2 - -will resolve and add the package to the current development module, -then build and install it. Alternatively, you can achieve the same -if you import it in a package: - - import "github.com/russross/blackfriday/v2" - -and `go get` without parameters. - -Legacy GOPATH mode is unsupported. - - -Versions --------- - -Currently maintained and recommended version of Blackfriday is `v2`. It's being -developed on its own branch: https://github.com/russross/blackfriday/tree/v2 and the -documentation is available at -https://pkg.go.dev/github.com/russross/blackfriday/v2. - -It is `go get`-able in module mode at `github.com/russross/blackfriday/v2`. - -Version 2 offers a number of improvements over v1: - -* Cleaned up API -* A separate call to [`Parse`][4], which produces an abstract syntax tree for - the document -* Latest bug fixes -* Flexibility to easily add your own rendering extensions - -Potential drawbacks: - -* Our benchmarks show v2 to be slightly slower than v1. Currently in the - ballpark of around 15%. -* API breakage. If you can't afford modifying your code to adhere to the new API - and don't care too much about the new features, v2 is probably not for you. -* Several bug fixes are trailing behind and still need to be forward-ported to - v2. See issue [#348](https://github.com/russross/blackfriday/issues/348) for - tracking. - -If you are still interested in the legacy `v1`, you can import it from -`github.com/russross/blackfriday`. Documentation for the legacy v1 can be found -here: https://pkg.go.dev/github.com/russross/blackfriday. - - -Usage ------ - -For the most sensible markdown processing, it is as simple as getting your input -into a byte slice and calling: - -```go -output := blackfriday.Run(input) -``` - -Your input will be parsed and the output rendered with a set of most popular -extensions enabled. If you want the most basic feature set, corresponding with -the bare Markdown specification, use: - -```go -output := blackfriday.Run(input, blackfriday.WithNoExtensions()) -``` - -### Sanitize untrusted content - -Blackfriday itself does nothing to protect against malicious content. If you are -dealing with user-supplied markdown, we recommend running Blackfriday's output -through HTML sanitizer such as [Bluemonday][5]. - -Here's an example of simple usage of Blackfriday together with Bluemonday: - -```go -import ( - "github.com/microcosm-cc/bluemonday" - "github.com/russross/blackfriday/v2" -) - -// ... -unsafe := blackfriday.Run(input) -html := bluemonday.UGCPolicy().SanitizeBytes(unsafe) -``` - -### Custom options - -If you want to customize the set of options, use `blackfriday.WithExtensions`, -`blackfriday.WithRenderer` and `blackfriday.WithRefOverride`. - -### `blackfriday-tool` - -You can also check out `blackfriday-tool` for a more complete example -of how to use it. Download and install it using: - - go get github.com/russross/blackfriday-tool - -This is a simple command-line tool that allows you to process a -markdown file using a standalone program. You can also browse the -source directly on github if you are just looking for some example -code: - -* <https://github.com/russross/blackfriday-tool> - -Note that if you have not already done so, installing -`blackfriday-tool` will be sufficient to download and install -blackfriday in addition to the tool itself. The tool binary will be -installed in `$GOPATH/bin`. This is a statically-linked binary that -can be copied to wherever you need it without worrying about -dependencies and library versions. - -### Sanitized anchor names - -Blackfriday includes an algorithm for creating sanitized anchor names -corresponding to a given input text. This algorithm is used to create -anchors for headings when `AutoHeadingIDs` extension is enabled. The -algorithm has a specification, so that other packages can create -compatible anchor names and links to those anchors. - -The specification is located at https://pkg.go.dev/github.com/russross/blackfriday/v2#hdr-Sanitized_Anchor_Names. - -[`SanitizedAnchorName`](https://pkg.go.dev/github.com/russross/blackfriday/v2#SanitizedAnchorName) exposes this functionality, and can be used to -create compatible links to the anchor names generated by blackfriday. -This algorithm is also implemented in a small standalone package at -[`github.com/shurcooL/sanitized_anchor_name`](https://pkg.go.dev/github.com/shurcooL/sanitized_anchor_name). It can be useful for clients -that want a small package and don't need full functionality of blackfriday. - - -Features --------- - -All features of Sundown are supported, including: - -* **Compatibility**. The Markdown v1.0.3 test suite passes with - the `--tidy` option. Without `--tidy`, the differences are - mostly in whitespace and entity escaping, where blackfriday is - more consistent and cleaner. - -* **Common extensions**, including table support, fenced code - blocks, autolinks, strikethroughs, non-strict emphasis, etc. - -* **Safety**. Blackfriday is paranoid when parsing, making it safe - to feed untrusted user input without fear of bad things - happening. The test suite stress tests this and there are no - known inputs that make it crash. If you find one, please let me - know and send me the input that does it. - - NOTE: "safety" in this context means *runtime safety only*. In order to - protect yourself against JavaScript injection in untrusted content, see - [this example](https://github.com/russross/blackfriday#sanitize-untrusted-content). - -* **Fast processing**. It is fast enough to render on-demand in - most web applications without having to cache the output. - -* **Thread safety**. You can run multiple parsers in different - goroutines without ill effect. There is no dependence on global - shared state. - -* **Minimal dependencies**. Blackfriday only depends on standard - library packages in Go. The source code is pretty - self-contained, so it is easy to add to any project, including - Google App Engine projects. - -* **Standards compliant**. Output successfully validates using the - W3C validation tool for HTML 4.01 and XHTML 1.0 Transitional. - - -Extensions ----------- - -In addition to the standard markdown syntax, this package -implements the following extensions: - -* **Intra-word emphasis supression**. The `_` character is - commonly used inside words when discussing code, so having - markdown interpret it as an emphasis command is usually the - wrong thing. Blackfriday lets you treat all emphasis markers as - normal characters when they occur inside a word. - -* **Tables**. Tables can be created by drawing them in the input - using a simple syntax: - - ``` - Name | Age - --------|------ - Bob | 27 - Alice | 23 - ``` - -* **Fenced code blocks**. In addition to the normal 4-space - indentation to mark code blocks, you can explicitly mark them - and supply a language (to make syntax highlighting simple). Just - mark it like this: - - ```go - func getTrue() bool { - return true - } - ``` - - You can use 3 or more backticks to mark the beginning of the - block, and the same number to mark the end of the block. - - To preserve classes of fenced code blocks while using the bluemonday - HTML sanitizer, use the following policy: - - ```go - p := bluemonday.UGCPolicy() - p.AllowAttrs("class").Matching(regexp.MustCompile("^language-[a-zA-Z0-9]+$")).OnElements("code") - html := p.SanitizeBytes(unsafe) - ``` - -* **Definition lists**. A simple definition list is made of a single-line - term followed by a colon and the definition for that term. - - Cat - : Fluffy animal everyone likes - - Internet - : Vector of transmission for pictures of cats - - Terms must be separated from the previous definition by a blank line. - -* **Footnotes**. A marker in the text that will become a superscript number; - a footnote definition that will be placed in a list of footnotes at the - end of the document. A footnote looks like this: - - This is a footnote.[^1] - - [^1]: the footnote text. - -* **Autolinking**. Blackfriday can find URLs that have not been - explicitly marked as links and turn them into links. - -* **Strikethrough**. Use two tildes (`~~`) to mark text that - should be crossed out. - -* **Hard line breaks**. With this extension enabled newlines in the input - translate into line breaks in the output. This extension is off by default. - -* **Smart quotes**. Smartypants-style punctuation substitution is - supported, turning normal double- and single-quote marks into - curly quotes, etc. - -* **LaTeX-style dash parsing** is an additional option, where `--` - is translated into `&ndash;`, and `---` is translated into - `&mdash;`. This differs from most smartypants processors, which - turn a single hyphen into an ndash and a double hyphen into an - mdash. - -* **Smart fractions**, where anything that looks like a fraction - is translated into suitable HTML (instead of just a few special - cases like most smartypant processors). For example, `4/5` - becomes `<sup>4</sup>&frasl;<sub>5</sub>`, which renders as - <sup>4</sup>&frasl;<sub>5</sub>. - - -Other renderers ---------------- - -Blackfriday is structured to allow alternative rendering engines. Here -are a few of note: - -* [github_flavored_markdown](https://pkg.go.dev/github.com/shurcooL/github_flavored_markdown): - provides a GitHub Flavored Markdown renderer with fenced code block - highlighting, clickable heading anchor links. - - It's not customizable, and its goal is to produce HTML output - equivalent to the [GitHub Markdown API endpoint](https://developer.github.com/v3/markdown/#render-a-markdown-document-in-raw-mode), - except the rendering is performed locally. - -* [markdownfmt](https://github.com/shurcooL/markdownfmt): like gofmt, - but for markdown. - -* [LaTeX output](https://gitlab.com/ambrevar/blackfriday-latex): - renders output as LaTeX. - -* [bfchroma](https://github.com/Depado/bfchroma/): provides convenience - integration with the [Chroma](https://github.com/alecthomas/chroma) code - highlighting library. bfchroma is only compatible with v2 of Blackfriday and - provides a drop-in renderer ready to use with Blackfriday, as well as - options and means for further customization. - -* [Blackfriday-Confluence](https://github.com/kentaro-m/blackfriday-confluence): provides a [Confluence Wiki Markup](https://confluence.atlassian.com/doc/confluence-wiki-markup-251003035.html) renderer. - -* [Blackfriday-Slack](https://github.com/karriereat/blackfriday-slack): converts markdown to slack message style - - -TODO ----- - -* More unit testing -* Improve Unicode support. It does not understand all Unicode - rules (about what constitutes a letter, a punctuation symbol, - etc.), so it may fail to detect word boundaries correctly in - some instances. It is safe on all UTF-8 input. - - -License -------- - -[Blackfriday is distributed under the Simplified BSD License](LICENSE.txt) - - - [1]: https://daringfireball.net/projects/markdown/ "Markdown" - [2]: https://golang.org/ "Go Language" - [3]: https://github.com/vmg/sundown "Sundown" - [4]: https://pkg.go.dev/github.com/russross/blackfriday/v2#Parse "Parse func" - [5]: https://github.com/microcosm-cc/bluemonday "Bluemonday" - - [BuildV2SVG]: https://travis-ci.org/russross/blackfriday.svg?branch=v2 - [BuildV2URL]: https://travis-ci.org/russross/blackfriday - [PkgGoDevV2SVG]: https://pkg.go.dev/badge/github.com/russross/blackfriday/v2 - [PkgGoDevV2URL]: https://pkg.go.dev/github.com/russross/blackfriday/v2 diff --git a/vendor/github.com/russross/blackfriday/v2/block.go b/vendor/github.com/russross/blackfriday/v2/block.go deleted file mode 100644 index dcd61e6e3..000000000 --- a/vendor/github.com/russross/blackfriday/v2/block.go +++ /dev/null @@ -1,1612 +0,0 @@ -// -// Blackfriday Markdown Processor -// Available at http://github.com/russross/blackfriday -// -// Copyright © 2011 Russ Ross <russ@russross.com>. -// Distributed under the Simplified BSD License. -// See README.md for details. -// - -// -// Functions to parse block-level elements. -// - -package blackfriday - -import ( - "bytes" - "html" - "regexp" - "strings" - "unicode" -) - -const ( - charEntity = "&(?:#x[a-f0-9]{1,8}|#[0-9]{1,8}|[a-z][a-z0-9]{1,31});" - escapable = "[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^_`{|}~-]" -) - -var ( - reBackslashOrAmp = regexp.MustCompile("[\\&]") - reEntityOrEscapedChar = regexp.MustCompile("(?i)\\\\" + escapable + "|" + charEntity) -) - -// Parse block-level data. -// Note: this function and many that it calls assume that -// the input buffer ends with a newline. -func (p *Markdown) block(data []byte) { - // this is called recursively: enforce a maximum depth - if p.nesting >= p.maxNesting { - return - } - p.nesting++ - - // parse out one block-level construct at a time - for len(data) > 0 { - // prefixed heading: - // - // # Heading 1 - // ## Heading 2 - // ... - // ###### Heading 6 - if p.isPrefixHeading(data) { - data = data[p.prefixHeading(data):] - continue - } - - // block of preformatted HTML: - // - // <div> - // ... - // </div> - if data[0] == '<' { - if i := p.html(data, true); i > 0 { - data = data[i:] - continue - } - } - - // title block - // - // % stuff - // % more stuff - // % even more stuff - if p.extensions&Titleblock != 0 { - if data[0] == '%' { - if i := p.titleBlock(data, true); i > 0 { - data = data[i:] - continue - } - } - } - - // blank lines. note: returns the # of bytes to skip - if i := p.isEmpty(data); i > 0 { - data = data[i:] - continue - } - - // indented code block: - // - // func max(a, b int) int { - // if a > b { - // return a - // } - // return b - // } - if p.codePrefix(data) > 0 { - data = data[p.code(data):] - continue - } - - // fenced code block: - // - // ``` go - // func fact(n int) int { - // if n <= 1 { - // return n - // } - // return n * fact(n-1) - // } - // ``` - if p.extensions&FencedCode != 0 { - if i := p.fencedCodeBlock(data, true); i > 0 { - data = data[i:] - continue - } - } - - // horizontal rule: - // - // ------ - // or - // ****** - // or - // ______ - if p.isHRule(data) { - p.addBlock(HorizontalRule, nil) - var i int - for i = 0; i < len(data) && data[i] != '\n'; i++ { - } - data = data[i:] - continue - } - - // block quote: - // - // > A big quote I found somewhere - // > on the web - if p.quotePrefix(data) > 0 { - data = data[p.quote(data):] - continue - } - - // table: - // - // Name | Age | Phone - // ------|-----|--------- - // Bob | 31 | 555-1234 - // Alice | 27 | 555-4321 - if p.extensions&Tables != 0 { - if i := p.table(data); i > 0 { - data = data[i:] - continue - } - } - - // an itemized/unordered list: - // - // * Item 1 - // * Item 2 - // - // also works with + or - - if p.uliPrefix(data) > 0 { - data = data[p.list(data, 0):] - continue - } - - // a numbered/ordered list: - // - // 1. Item 1 - // 2. Item 2 - if p.oliPrefix(data) > 0 { - data = data[p.list(data, ListTypeOrdered):] - continue - } - - // definition lists: - // - // Term 1 - // : Definition a - // : Definition b - // - // Term 2 - // : Definition c - if p.extensions&DefinitionLists != 0 { - if p.dliPrefix(data) > 0 { - data = data[p.list(data, ListTypeDefinition):] - continue - } - } - - // anything else must look like a normal paragraph - // note: this finds underlined headings, too - data = data[p.paragraph(data):] - } - - p.nesting-- -} - -func (p *Markdown) addBlock(typ NodeType, content []byte) *Node { - p.closeUnmatchedBlocks() - container := p.addChild(typ, 0) - container.content = content - return container -} - -func (p *Markdown) isPrefixHeading(data []byte) bool { - if data[0] != '#' { - return false - } - - if p.extensions&SpaceHeadings != 0 { - level := 0 - for level < 6 && level < len(data) && data[level] == '#' { - level++ - } - if level == len(data) || data[level] != ' ' { - return false - } - } - return true -} - -func (p *Markdown) prefixHeading(data []byte) int { - level := 0 - for level < 6 && level < len(data) && data[level] == '#' { - level++ - } - i := skipChar(data, level, ' ') - end := skipUntilChar(data, i, '\n') - skip := end - id := "" - if p.extensions&HeadingIDs != 0 { - j, k := 0, 0 - // find start/end of heading id - for j = i; j < end-1 && (data[j] != '{' || data[j+1] != '#'); j++ { - } - for k = j + 1; k < end && data[k] != '}'; k++ { - } - // extract heading id iff found - if j < end && k < end { - id = string(data[j+2 : k]) - end = j - skip = k + 1 - for end > 0 && data[end-1] == ' ' { - end-- - } - } - } - for end > 0 && data[end-1] == '#' { - if isBackslashEscaped(data, end-1) { - break - } - end-- - } - for end > 0 && data[end-1] == ' ' { - end-- - } - if end > i { - if id == "" && p.extensions&AutoHeadingIDs != 0 { - id = SanitizedAnchorName(string(data[i:end])) - } - block := p.addBlock(Heading, data[i:end]) - block.HeadingID = id - block.Level = level - } - return skip -} - -func (p *Markdown) isUnderlinedHeading(data []byte) int { - // test of level 1 heading - if data[0] == '=' { - i := skipChar(data, 1, '=') - i = skipChar(data, i, ' ') - if i < len(data) && data[i] == '\n' { - return 1 - } - return 0 - } - - // test of level 2 heading - if data[0] == '-' { - i := skipChar(data, 1, '-') - i = skipChar(data, i, ' ') - if i < len(data) && data[i] == '\n' { - return 2 - } - return 0 - } - - return 0 -} - -func (p *Markdown) titleBlock(data []byte, doRender bool) int { - if data[0] != '%' { - return 0 - } - splitData := bytes.Split(data, []byte("\n")) - var i int - for idx, b := range splitData { - if !bytes.HasPrefix(b, []byte("%")) { - i = idx // - 1 - break - } - } - - data = bytes.Join(splitData[0:i], []byte("\n")) - consumed := len(data) - data = bytes.TrimPrefix(data, []byte("% ")) - data = bytes.Replace(data, []byte("\n% "), []byte("\n"), -1) - block := p.addBlock(Heading, data) - block.Level = 1 - block.IsTitleblock = true - - return consumed -} - -func (p *Markdown) html(data []byte, doRender bool) int { - var i, j int - - // identify the opening tag - if data[0] != '<' { - return 0 - } - curtag, tagfound := p.htmlFindTag(data[1:]) - - // handle special cases - if !tagfound { - // check for an HTML comment - if size := p.htmlComment(data, doRender); size > 0 { - return size - } - - // check for an <hr> tag - if size := p.htmlHr(data, doRender); size > 0 { - return size - } - - // no special case recognized - return 0 - } - - // look for an unindented matching closing tag - // followed by a blank line - found := false - /* - closetag := []byte("\n</" + curtag + ">") - j = len(curtag) + 1 - for !found { - // scan for a closing tag at the beginning of a line - if skip := bytes.Index(data[j:], closetag); skip >= 0 { - j += skip + len(closetag) - } else { - break - } - - // see if it is the only thing on the line - if skip := p.isEmpty(data[j:]); skip > 0 { - // see if it is followed by a blank line/eof - j += skip - if j >= len(data) { - found = true - i = j - } else { - if skip := p.isEmpty(data[j:]); skip > 0 { - j += skip - found = true - i = j - } - } - } - } - */ - - // if not found, try a second pass looking for indented match - // but not if tag is "ins" or "del" (following original Markdown.pl) - if !found && curtag != "ins" && curtag != "del" { - i = 1 - for i < len(data) { - i++ - for i < len(data) && !(data[i-1] == '<' && data[i] == '/') { - i++ - } - - if i+2+len(curtag) >= len(data) { - break - } - - j = p.htmlFindEnd(curtag, data[i-1:]) - - if j > 0 { - i += j - 1 - found = true - break - } - } - } - - if !found { - return 0 - } - - // the end of the block has been found - if doRender { - // trim newlines - end := i - for end > 0 && data[end-1] == '\n' { - end-- - } - finalizeHTMLBlock(p.addBlock(HTMLBlock, data[:end])) - } - - return i -} - -func finalizeHTMLBlock(block *Node) { - block.Literal = block.content - block.content = nil -} - -// HTML comment, lax form -func (p *Markdown) htmlComment(data []byte, doRender bool) int { - i := p.inlineHTMLComment(data) - // needs to end with a blank line - if j := p.isEmpty(data[i:]); j > 0 { - size := i + j - if doRender { - // trim trailing newlines - end := size - for end > 0 && data[end-1] == '\n' { - end-- - } - block := p.addBlock(HTMLBlock, data[:end]) - finalizeHTMLBlock(block) - } - return size - } - return 0 -} - -// HR, which is the only self-closing block tag considered -func (p *Markdown) htmlHr(data []byte, doRender bool) int { - if len(data) < 4 { - return 0 - } - if data[0] != '<' || (data[1] != 'h' && data[1] != 'H') || (data[2] != 'r' && data[2] != 'R') { - return 0 - } - if data[3] != ' ' && data[3] != '/' && data[3] != '>' { - // not an <hr> tag after all; at least not a valid one - return 0 - } - i := 3 - for i < len(data) && data[i] != '>' && data[i] != '\n' { - i++ - } - if i < len(data) && data[i] == '>' { - i++ - if j := p.isEmpty(data[i:]); j > 0 { - size := i + j - if doRender { - // trim newlines - end := size - for end > 0 && data[end-1] == '\n' { - end-- - } - finalizeHTMLBlock(p.addBlock(HTMLBlock, data[:end])) - } - return size - } - } - return 0 -} - -func (p *Markdown) htmlFindTag(data []byte) (string, bool) { - i := 0 - for i < len(data) && isalnum(data[i]) { - i++ - } - key := string(data[:i]) - if _, ok := blockTags[key]; ok { - return key, true - } - return "", false -} - -func (p *Markdown) htmlFindEnd(tag string, data []byte) int { - // assume data[0] == '<' && data[1] == '/' already tested - if tag == "hr" { - return 2 - } - // check if tag is a match - closetag := []byte("</" + tag + ">") - if !bytes.HasPrefix(data, closetag) { - return 0 - } - i := len(closetag) - - // check that the rest of the line is blank - skip := 0 - if skip = p.isEmpty(data[i:]); skip == 0 { - return 0 - } - i += skip - skip = 0 - - if i >= len(data) { - return i - } - - if p.extensions&LaxHTMLBlocks != 0 { - return i - } - if skip = p.isEmpty(data[i:]); skip == 0 { - // following line must be blank - return 0 - } - - return i + skip -} - -func (*Markdown) isEmpty(data []byte) int { - // it is okay to call isEmpty on an empty buffer - if len(data) == 0 { - return 0 - } - - var i int - for i = 0; i < len(data) && data[i] != '\n'; i++ { - if data[i] != ' ' && data[i] != '\t' { - return 0 - } - } - if i < len(data) && data[i] == '\n' { - i++ - } - return i -} - -func (*Markdown) isHRule(data []byte) bool { - i := 0 - - // skip up to three spaces - for i < 3 && data[i] == ' ' { - i++ - } - - // look at the hrule char - if data[i] != '*' && data[i] != '-' && data[i] != '_' { - return false - } - c := data[i] - - // the whole line must be the char or whitespace - n := 0 - for i < len(data) && data[i] != '\n' { - switch { - case data[i] == c: - n++ - case data[i] != ' ': - return false - } - i++ - } - - return n >= 3 -} - -// isFenceLine checks if there's a fence line (e.g., ``` or ``` go) at the beginning of data, -// and returns the end index if so, or 0 otherwise. It also returns the marker found. -// If info is not nil, it gets set to the syntax specified in the fence line. -func isFenceLine(data []byte, info *string, oldmarker string) (end int, marker string) { - i, size := 0, 0 - - // skip up to three spaces - for i < len(data) && i < 3 && data[i] == ' ' { - i++ - } - - // check for the marker characters: ~ or ` - if i >= len(data) { - return 0, "" - } - if data[i] != '~' && data[i] != '`' { - return 0, "" - } - - c := data[i] - - // the whole line must be the same char or whitespace - for i < len(data) && data[i] == c { - size++ - i++ - } - - // the marker char must occur at least 3 times - if size < 3 { - return 0, "" - } - marker = string(data[i-size : i]) - - // if this is the end marker, it must match the beginning marker - if oldmarker != "" && marker != oldmarker { - return 0, "" - } - - // TODO(shurcooL): It's probably a good idea to simplify the 2 code paths here - // into one, always get the info string, and discard it if the caller doesn't care. - if info != nil { - infoLength := 0 - i = skipChar(data, i, ' ') - - if i >= len(data) { - if i == len(data) { - return i, marker - } - return 0, "" - } - - infoStart := i - - if data[i] == '{' { - i++ - infoStart++ - - for i < len(data) && data[i] != '}' && data[i] != '\n' { - infoLength++ - i++ - } - - if i >= len(data) || data[i] != '}' { - return 0, "" - } - - // strip all whitespace at the beginning and the end - // of the {} block - for infoLength > 0 && isspace(data[infoStart]) { - infoStart++ - infoLength-- - } - - for infoLength > 0 && isspace(data[infoStart+infoLength-1]) { - infoLength-- - } - i++ - i = skipChar(data, i, ' ') - } else { - for i < len(data) && !isverticalspace(data[i]) { - infoLength++ - i++ - } - } - - *info = strings.TrimSpace(string(data[infoStart : infoStart+infoLength])) - } - - if i == len(data) { - return i, marker - } - if i > len(data) || data[i] != '\n' { - return 0, "" - } - return i + 1, marker // Take newline into account. -} - -// fencedCodeBlock returns the end index if data contains a fenced code block at the beginning, -// or 0 otherwise. It writes to out if doRender is true, otherwise it has no side effects. -// If doRender is true, a final newline is mandatory to recognize the fenced code block. -func (p *Markdown) fencedCodeBlock(data []byte, doRender bool) int { - var info string - beg, marker := isFenceLine(data, &info, "") - if beg == 0 || beg >= len(data) { - return 0 - } - fenceLength := beg - 1 - - var work bytes.Buffer - work.Write([]byte(info)) - work.WriteByte('\n') - - for { - // safe to assume beg < len(data) - - // check for the end of the code block - fenceEnd, _ := isFenceLine(data[beg:], nil, marker) - if fenceEnd != 0 { - beg += fenceEnd - break - } - - // copy the current line - end := skipUntilChar(data, beg, '\n') + 1 - - // did we reach the end of the buffer without a closing marker? - if end >= len(data) { - return 0 - } - - // verbatim copy to the working buffer - if doRender { - work.Write(data[beg:end]) - } - beg = end - } - - if doRender { - block := p.addBlock(CodeBlock, work.Bytes()) // TODO: get rid of temp buffer - block.IsFenced = true - block.FenceLength = fenceLength - finalizeCodeBlock(block) - } - - return beg -} - -func unescapeChar(str []byte) []byte { - if str[0] == '\\' { - return []byte{str[1]} - } - return []byte(html.UnescapeString(string(str))) -} - -func unescapeString(str []byte) []byte { - if reBackslashOrAmp.Match(str) { - return reEntityOrEscapedChar.ReplaceAllFunc(str, unescapeChar) - } - return str -} - -func finalizeCodeBlock(block *Node) { - if block.IsFenced { - newlinePos := bytes.IndexByte(block.content, '\n') - firstLine := block.content[:newlinePos] - rest := block.content[newlinePos+1:] - block.Info = unescapeString(bytes.Trim(firstLine, "\n")) - block.Literal = rest - } else { - block.Literal = block.content - } - block.content = nil -} - -func (p *Markdown) table(data []byte) int { - table := p.addBlock(Table, nil) - i, columns := p.tableHeader(data) - if i == 0 { - p.tip = table.Parent - table.Unlink() - return 0 - } - - p.addBlock(TableBody, nil) - - for i < len(data) { - pipes, rowStart := 0, i - for ; i < len(data) && data[i] != '\n'; i++ { - if data[i] == '|' { - pipes++ - } - } - - if pipes == 0 { - i = rowStart - break - } - - // include the newline in data sent to tableRow - if i < len(data) && data[i] == '\n' { - i++ - } - p.tableRow(data[rowStart:i], columns, false) - } - - return i -} - -// check if the specified position is preceded by an odd number of backslashes -func isBackslashEscaped(data []byte, i int) bool { - backslashes := 0 - for i-backslashes-1 >= 0 && data[i-backslashes-1] == '\\' { - backslashes++ - } - return backslashes&1 == 1 -} - -func (p *Markdown) tableHeader(data []byte) (size int, columns []CellAlignFlags) { - i := 0 - colCount := 1 - for i = 0; i < len(data) && data[i] != '\n'; i++ { - if data[i] == '|' && !isBackslashEscaped(data, i) { - colCount++ - } - } - - // doesn't look like a table header - if colCount == 1 { - return - } - - // include the newline in the data sent to tableRow - j := i - if j < len(data) && data[j] == '\n' { - j++ - } - header := data[:j] - - // column count ignores pipes at beginning or end of line - if data[0] == '|' { - colCount-- - } - if i > 2 && data[i-1] == '|' && !isBackslashEscaped(data, i-1) { - colCount-- - } - - columns = make([]CellAlignFlags, colCount) - - // move on to the header underline - i++ - if i >= len(data) { - return - } - - if data[i] == '|' && !isBackslashEscaped(data, i) { - i++ - } - i = skipChar(data, i, ' ') - - // each column header is of form: / *:?-+:? *|/ with # dashes + # colons >= 3 - // and trailing | optional on last column - col := 0 - for i < len(data) && data[i] != '\n' { - dashes := 0 - - if data[i] == ':' { - i++ - columns[col] |= TableAlignmentLeft - dashes++ - } - for i < len(data) && data[i] == '-' { - i++ - dashes++ - } - if i < len(data) && data[i] == ':' { - i++ - columns[col] |= TableAlignmentRight - dashes++ - } - for i < len(data) && data[i] == ' ' { - i++ - } - if i == len(data) { - return - } - // end of column test is messy - switch { - case dashes < 3: - // not a valid column - return - - case data[i] == '|' && !isBackslashEscaped(data, i): - // marker found, now skip past trailing whitespace - col++ - i++ - for i < len(data) && data[i] == ' ' { - i++ - } - - // trailing junk found after last column - if col >= colCount && i < len(data) && data[i] != '\n' { - return - } - - case (data[i] != '|' || isBackslashEscaped(data, i)) && col+1 < colCount: - // something else found where marker was required - return - - case data[i] == '\n': - // marker is optional for the last column - col++ - - default: - // trailing junk found after last column - return - } - } - if col != colCount { - return - } - - p.addBlock(TableHead, nil) - p.tableRow(header, columns, true) - size = i - if size < len(data) && data[size] == '\n' { - size++ - } - return -} - -func (p *Markdown) tableRow(data []byte, columns []CellAlignFlags, header bool) { - p.addBlock(TableRow, nil) - i, col := 0, 0 - - if data[i] == '|' && !isBackslashEscaped(data, i) { - i++ - } - - for col = 0; col < len(columns) && i < len(data); col++ { - for i < len(data) && data[i] == ' ' { - i++ - } - - cellStart := i - - for i < len(data) && (data[i] != '|' || isBackslashEscaped(data, i)) && data[i] != '\n' { - i++ - } - - cellEnd := i - - // skip the end-of-cell marker, possibly taking us past end of buffer - i++ - - for cellEnd > cellStart && cellEnd-1 < len(data) && data[cellEnd-1] == ' ' { - cellEnd-- - } - - cell := p.addBlock(TableCell, data[cellStart:cellEnd]) - cell.IsHeader = header - cell.Align = columns[col] - } - - // pad it out with empty columns to get the right number - for ; col < len(columns); col++ { - cell := p.addBlock(TableCell, nil) - cell.IsHeader = header - cell.Align = columns[col] - } - - // silently ignore rows with too many cells -} - -// returns blockquote prefix length -func (p *Markdown) quotePrefix(data []byte) int { - i := 0 - for i < 3 && i < len(data) && data[i] == ' ' { - i++ - } - if i < len(data) && data[i] == '>' { - if i+1 < len(data) && data[i+1] == ' ' { - return i + 2 - } - return i + 1 - } - return 0 -} - -// blockquote ends with at least one blank line -// followed by something without a blockquote prefix -func (p *Markdown) terminateBlockquote(data []byte, beg, end int) bool { - if p.isEmpty(data[beg:]) <= 0 { - return false - } - if end >= len(data) { - return true - } - return p.quotePrefix(data[end:]) == 0 && p.isEmpty(data[end:]) == 0 -} - -// parse a blockquote fragment -func (p *Markdown) quote(data []byte) int { - block := p.addBlock(BlockQuote, nil) - var raw bytes.Buffer - beg, end := 0, 0 - for beg < len(data) { - end = beg - // Step over whole lines, collecting them. While doing that, check for - // fenced code and if one's found, incorporate it altogether, - // irregardless of any contents inside it - for end < len(data) && data[end] != '\n' { - if p.extensions&FencedCode != 0 { - if i := p.fencedCodeBlock(data[end:], false); i > 0 { - // -1 to compensate for the extra end++ after the loop: - end += i - 1 - break - } - } - end++ - } - if end < len(data) && data[end] == '\n' { - end++ - } - if pre := p.quotePrefix(data[beg:]); pre > 0 { - // skip the prefix - beg += pre - } else if p.terminateBlockquote(data, beg, end) { - break - } - // this line is part of the blockquote - raw.Write(data[beg:end]) - beg = end - } - p.block(raw.Bytes()) - p.finalize(block) - return end -} - -// returns prefix length for block code -func (p *Markdown) codePrefix(data []byte) int { - if len(data) >= 1 && data[0] == '\t' { - return 1 - } - if len(data) >= 4 && data[0] == ' ' && data[1] == ' ' && data[2] == ' ' && data[3] == ' ' { - return 4 - } - return 0 -} - -func (p *Markdown) code(data []byte) int { - var work bytes.Buffer - - i := 0 - for i < len(data) { - beg := i - for i < len(data) && data[i] != '\n' { - i++ - } - if i < len(data) && data[i] == '\n' { - i++ - } - - blankline := p.isEmpty(data[beg:i]) > 0 - if pre := p.codePrefix(data[beg:i]); pre > 0 { - beg += pre - } else if !blankline { - // non-empty, non-prefixed line breaks the pre - i = beg - break - } - - // verbatim copy to the working buffer - if blankline { - work.WriteByte('\n') - } else { - work.Write(data[beg:i]) - } - } - - // trim all the \n off the end of work - workbytes := work.Bytes() - eol := len(workbytes) - for eol > 0 && workbytes[eol-1] == '\n' { - eol-- - } - if eol != len(workbytes) { - work.Truncate(eol) - } - - work.WriteByte('\n') - - block := p.addBlock(CodeBlock, work.Bytes()) // TODO: get rid of temp buffer - block.IsFenced = false - finalizeCodeBlock(block) - - return i -} - -// returns unordered list item prefix -func (p *Markdown) uliPrefix(data []byte) int { - i := 0 - // start with up to 3 spaces - for i < len(data) && i < 3 && data[i] == ' ' { - i++ - } - if i >= len(data)-1 { - return 0 - } - // need one of {'*', '+', '-'} followed by a space or a tab - if (data[i] != '*' && data[i] != '+' && data[i] != '-') || - (data[i+1] != ' ' && data[i+1] != '\t') { - return 0 - } - return i + 2 -} - -// returns ordered list item prefix -func (p *Markdown) oliPrefix(data []byte) int { - i := 0 - - // start with up to 3 spaces - for i < 3 && i < len(data) && data[i] == ' ' { - i++ - } - - // count the digits - start := i - for i < len(data) && data[i] >= '0' && data[i] <= '9' { - i++ - } - if start == i || i >= len(data)-1 { - return 0 - } - - // we need >= 1 digits followed by a dot and a space or a tab - if data[i] != '.' || !(data[i+1] == ' ' || data[i+1] == '\t') { - return 0 - } - return i + 2 -} - -// returns definition list item prefix -func (p *Markdown) dliPrefix(data []byte) int { - if len(data) < 2 { - return 0 - } - i := 0 - // need a ':' followed by a space or a tab - if data[i] != ':' || !(data[i+1] == ' ' || data[i+1] == '\t') { - return 0 - } - for i < len(data) && data[i] == ' ' { - i++ - } - return i + 2 -} - -// parse ordered or unordered list block -func (p *Markdown) list(data []byte, flags ListType) int { - i := 0 - flags |= ListItemBeginningOfList - block := p.addBlock(List, nil) - block.ListFlags = flags - block.Tight = true - - for i < len(data) { - skip := p.listItem(data[i:], &flags) - if flags&ListItemContainsBlock != 0 { - block.ListData.Tight = false - } - i += skip - if skip == 0 || flags&ListItemEndOfList != 0 { - break - } - flags &= ^ListItemBeginningOfList - } - - above := block.Parent - finalizeList(block) - p.tip = above - return i -} - -// Returns true if the list item is not the same type as its parent list -func (p *Markdown) listTypeChanged(data []byte, flags *ListType) bool { - if p.dliPrefix(data) > 0 && *flags&ListTypeDefinition == 0 { - return true - } else if p.oliPrefix(data) > 0 && *flags&ListTypeOrdered == 0 { - return true - } else if p.uliPrefix(data) > 0 && (*flags&ListTypeOrdered != 0 || *flags&ListTypeDefinition != 0) { - return true - } - return false -} - -// Returns true if block ends with a blank line, descending if needed -// into lists and sublists. -func endsWithBlankLine(block *Node) bool { - // TODO: figure this out. Always false now. - for block != nil { - //if block.lastLineBlank { - //return true - //} - t := block.Type - if t == List || t == Item { - block = block.LastChild - } else { - break - } - } - return false -} - -func finalizeList(block *Node) { - block.open = false - item := block.FirstChild - for item != nil { - // check for non-final list item ending with blank line: - if endsWithBlankLine(item) && item.Next != nil { - block.ListData.Tight = false - break - } - // recurse into children of list item, to see if there are spaces - // between any of them: - subItem := item.FirstChild - for subItem != nil { - if endsWithBlankLine(subItem) && (item.Next != nil || subItem.Next != nil) { - block.ListData.Tight = false - break - } - subItem = subItem.Next - } - item = item.Next - } -} - -// Parse a single list item. -// Assumes initial prefix is already removed if this is a sublist. -func (p *Markdown) listItem(data []byte, flags *ListType) int { - // keep track of the indentation of the first line - itemIndent := 0 - if data[0] == '\t' { - itemIndent += 4 - } else { - for itemIndent < 3 && data[itemIndent] == ' ' { - itemIndent++ - } - } - - var bulletChar byte = '*' - i := p.uliPrefix(data) - if i == 0 { - i = p.oliPrefix(data) - } else { - bulletChar = data[i-2] - } - if i == 0 { - i = p.dliPrefix(data) - // reset definition term flag - if i > 0 { - *flags &= ^ListTypeTerm - } - } - if i == 0 { - // if in definition list, set term flag and continue - if *flags&ListTypeDefinition != 0 { - *flags |= ListTypeTerm - } else { - return 0 - } - } - - // skip leading whitespace on first line - for i < len(data) && data[i] == ' ' { - i++ - } - - // find the end of the line - line := i - for i > 0 && i < len(data) && data[i-1] != '\n' { - i++ - } - - // get working buffer - var raw bytes.Buffer - - // put the first line into the working buffer - raw.Write(data[line:i]) - line = i - - // process the following lines - containsBlankLine := false - sublist := 0 - codeBlockMarker := "" - -gatherlines: - for line < len(data) { - i++ - - // find the end of this line - for i < len(data) && data[i-1] != '\n' { - i++ - } - - // if it is an empty line, guess that it is part of this item - // and move on to the next line - if p.isEmpty(data[line:i]) > 0 { - containsBlankLine = true - line = i - continue - } - - // calculate the indentation - indent := 0 - indentIndex := 0 - if data[line] == '\t' { - indentIndex++ - indent += 4 - } else { - for indent < 4 && line+indent < i && data[line+indent] == ' ' { - indent++ - indentIndex++ - } - } - - chunk := data[line+indentIndex : i] - - if p.extensions&FencedCode != 0 { - // determine if in or out of codeblock - // if in codeblock, ignore normal list processing - _, marker := isFenceLine(chunk, nil, codeBlockMarker) - if marker != "" { - if codeBlockMarker == "" { - // start of codeblock - codeBlockMarker = marker - } else { - // end of codeblock. - codeBlockMarker = "" - } - } - // we are in a codeblock, write line, and continue - if codeBlockMarker != "" || marker != "" { - raw.Write(data[line+indentIndex : i]) - line = i - continue gatherlines - } - } - - // evaluate how this line fits in - switch { - // is this a nested list item? - case (p.uliPrefix(chunk) > 0 && !p.isHRule(chunk)) || - p.oliPrefix(chunk) > 0 || - p.dliPrefix(chunk) > 0: - - // to be a nested list, it must be indented more - // if not, it is either a different kind of list - // or the next item in the same list - if indent <= itemIndent { - if p.listTypeChanged(chunk, flags) { - *flags |= ListItemEndOfList - } else if containsBlankLine { - *flags |= ListItemContainsBlock - } - - break gatherlines - } - - if containsBlankLine { - *flags |= ListItemContainsBlock - } - - // is this the first item in the nested list? - if sublist == 0 { - sublist = raw.Len() - } - - // is this a nested prefix heading? - case p.isPrefixHeading(chunk): - // if the heading is not indented, it is not nested in the list - // and thus ends the list - if containsBlankLine && indent < 4 { - *flags |= ListItemEndOfList - break gatherlines - } - *flags |= ListItemContainsBlock - - // anything following an empty line is only part - // of this item if it is indented 4 spaces - // (regardless of the indentation of the beginning of the item) - case containsBlankLine && indent < 4: - if *flags&ListTypeDefinition != 0 && i < len(data)-1 { - // is the next item still a part of this list? - next := i - for next < len(data) && data[next] != '\n' { - next++ - } - for next < len(data)-1 && data[next] == '\n' { - next++ - } - if i < len(data)-1 && data[i] != ':' && data[next] != ':' { - *flags |= ListItemEndOfList - } - } else { - *flags |= ListItemEndOfList - } - break gatherlines - - // a blank line means this should be parsed as a block - case containsBlankLine: - raw.WriteByte('\n') - *flags |= ListItemContainsBlock - } - - // if this line was preceded by one or more blanks, - // re-introduce the blank into the buffer - if containsBlankLine { - containsBlankLine = false - raw.WriteByte('\n') - } - - // add the line into the working buffer without prefix - raw.Write(data[line+indentIndex : i]) - - line = i - } - - rawBytes := raw.Bytes() - - block := p.addBlock(Item, nil) - block.ListFlags = *flags - block.Tight = false - block.BulletChar = bulletChar - block.Delimiter = '.' // Only '.' is possible in Markdown, but ')' will also be possible in CommonMark - - // render the contents of the list item - if *flags&ListItemContainsBlock != 0 && *flags&ListTypeTerm == 0 { - // intermediate render of block item, except for definition term - if sublist > 0 { - p.block(rawBytes[:sublist]) - p.block(rawBytes[sublist:]) - } else { - p.block(rawBytes) - } - } else { - // intermediate render of inline item - if sublist > 0 { - child := p.addChild(Paragraph, 0) - child.content = rawBytes[:sublist] - p.block(rawBytes[sublist:]) - } else { - child := p.addChild(Paragraph, 0) - child.content = rawBytes - } - } - return line -} - -// render a single paragraph that has already been parsed out -func (p *Markdown) renderParagraph(data []byte) { - if len(data) == 0 { - return - } - - // trim leading spaces - beg := 0 - for data[beg] == ' ' { - beg++ - } - - end := len(data) - // trim trailing newline - if data[len(data)-1] == '\n' { - end-- - } - - // trim trailing spaces - for end > beg && data[end-1] == ' ' { - end-- - } - - p.addBlock(Paragraph, data[beg:end]) -} - -func (p *Markdown) paragraph(data []byte) int { - // prev: index of 1st char of previous line - // line: index of 1st char of current line - // i: index of cursor/end of current line - var prev, line, i int - tabSize := TabSizeDefault - if p.extensions&TabSizeEight != 0 { - tabSize = TabSizeDouble - } - // keep going until we find something to mark the end of the paragraph - for i < len(data) { - // mark the beginning of the current line - prev = line - current := data[i:] - line = i - - // did we find a reference or a footnote? If so, end a paragraph - // preceding it and report that we have consumed up to the end of that - // reference: - if refEnd := isReference(p, current, tabSize); refEnd > 0 { - p.renderParagraph(data[:i]) - return i + refEnd - } - - // did we find a blank line marking the end of the paragraph? - if n := p.isEmpty(current); n > 0 { - // did this blank line followed by a definition list item? - if p.extensions&DefinitionLists != 0 { - if i < len(data)-1 && data[i+1] == ':' { - return p.list(data[prev:], ListTypeDefinition) - } - } - - p.renderParagraph(data[:i]) - return i + n - } - - // an underline under some text marks a heading, so our paragraph ended on prev line - if i > 0 { - if level := p.isUnderlinedHeading(current); level > 0 { - // render the paragraph - p.renderParagraph(data[:prev]) - - // ignore leading and trailing whitespace - eol := i - 1 - for prev < eol && data[prev] == ' ' { - prev++ - } - for eol > prev && data[eol-1] == ' ' { - eol-- - } - - id := "" - if p.extensions&AutoHeadingIDs != 0 { - id = SanitizedAnchorName(string(data[prev:eol])) - } - - block := p.addBlock(Heading, data[prev:eol]) - block.Level = level - block.HeadingID = id - - // find the end of the underline - for i < len(data) && data[i] != '\n' { - i++ - } - return i - } - } - - // if the next line starts a block of HTML, then the paragraph ends here - if p.extensions&LaxHTMLBlocks != 0 { - if data[i] == '<' && p.html(current, false) > 0 { - // rewind to before the HTML block - p.renderParagraph(data[:i]) - return i - } - } - - // if there's a prefixed heading or a horizontal rule after this, paragraph is over - if p.isPrefixHeading(current) || p.isHRule(current) { - p.renderParagraph(data[:i]) - return i - } - - // if there's a fenced code block, paragraph is over - if p.extensions&FencedCode != 0 { - if p.fencedCodeBlock(current, false) > 0 { - p.renderParagraph(data[:i]) - return i - } - } - - // if there's a definition list item, prev line is a definition term - if p.extensions&DefinitionLists != 0 { - if p.dliPrefix(current) != 0 { - ret := p.list(data[prev:], ListTypeDefinition) - return ret - } - } - - // if there's a list after this, paragraph is over - if p.extensions&NoEmptyLineBeforeBlock != 0 { - if p.uliPrefix(current) != 0 || - p.oliPrefix(current) != 0 || - p.quotePrefix(current) != 0 || - p.codePrefix(current) != 0 { - p.renderParagraph(data[:i]) - return i - } - } - - // otherwise, scan to the beginning of the next line - nl := bytes.IndexByte(data[i:], '\n') - if nl >= 0 { - i += nl + 1 - } else { - i += len(data[i:]) - } - } - - p.renderParagraph(data[:i]) - return i -} - -func skipChar(data []byte, start int, char byte) int { - i := start - for i < len(data) && data[i] == char { - i++ - } - return i -} - -func skipUntilChar(text []byte, start int, char byte) int { - i := start - for i < len(text) && text[i] != char { - i++ - } - return i -} - -// SanitizedAnchorName returns a sanitized anchor name for the given text. -// -// It implements the algorithm specified in the package comment. -func SanitizedAnchorName(text string) string { - var anchorName []rune - futureDash := false - for _, r := range text { - switch { - case unicode.IsLetter(r) || unicode.IsNumber(r): - if futureDash && len(anchorName) > 0 { - anchorName = append(anchorName, '-') - } - futureDash = false - anchorName = append(anchorName, unicode.ToLower(r)) - default: - futureDash = true - } - } - return string(anchorName) -} diff --git a/vendor/github.com/russross/blackfriday/v2/doc.go b/vendor/github.com/russross/blackfriday/v2/doc.go deleted file mode 100644 index 57ff152a0..000000000 --- a/vendor/github.com/russross/blackfriday/v2/doc.go +++ /dev/null @@ -1,46 +0,0 @@ -// Package blackfriday is a markdown processor. -// -// It translates plain text with simple formatting rules into an AST, which can -// then be further processed to HTML (provided by Blackfriday itself) or other -// formats (provided by the community). -// -// The simplest way to invoke Blackfriday is to call the Run function. It will -// take a text input and produce a text output in HTML (or other format). -// -// A slightly more sophisticated way to use Blackfriday is to create a Markdown -// processor and to call Parse, which returns a syntax tree for the input -// document. You can leverage Blackfriday's parsing for content extraction from -// markdown documents. You can assign a custom renderer and set various options -// to the Markdown processor. -// -// If you're interested in calling Blackfriday from command line, see -// https://github.com/russross/blackfriday-tool. -// -// Sanitized Anchor Names -// -// Blackfriday includes an algorithm for creating sanitized anchor names -// corresponding to a given input text. This algorithm is used to create -// anchors for headings when AutoHeadingIDs extension is enabled. The -// algorithm is specified below, so that other packages can create -// compatible anchor names and links to those anchors. -// -// The algorithm iterates over the input text, interpreted as UTF-8, -// one Unicode code point (rune) at a time. All runes that are letters (category L) -// or numbers (category N) are considered valid characters. They are mapped to -// lower case, and included in the output. All other runes are considered -// invalid characters. Invalid characters that precede the first valid character, -// as well as invalid character that follow the last valid character -// are dropped completely. All other sequences of invalid characters -// between two valid characters are replaced with a single dash character '-'. -// -// SanitizedAnchorName exposes this functionality, and can be used to -// create compatible links to the anchor names generated by blackfriday. -// This algorithm is also implemented in a small standalone package at -// github.com/shurcooL/sanitized_anchor_name. It can be useful for clients -// that want a small package and don't need full functionality of blackfriday. -package blackfriday - -// NOTE: Keep Sanitized Anchor Name algorithm in sync with package -// github.com/shurcooL/sanitized_anchor_name. -// Otherwise, users of sanitized_anchor_name will get anchor names -// that are incompatible with those generated by blackfriday. diff --git a/vendor/github.com/russross/blackfriday/v2/entities.go b/vendor/github.com/russross/blackfriday/v2/entities.go deleted file mode 100644 index a2c3edb69..000000000 --- a/vendor/github.com/russross/blackfriday/v2/entities.go +++ /dev/null @@ -1,2236 +0,0 @@ -package blackfriday - -// Extracted from https://html.spec.whatwg.org/multipage/entities.json -var entities = map[string]bool{ - "&AElig": true, - "&AElig;": true, - "&AMP": true, - "&AMP;": true, - "&Aacute": true, - "&Aacute;": true, - "&Abreve;": true, - "&Acirc": true, - "&Acirc;": true, - "&Acy;": true, - "&Afr;": true, - "&Agrave": true, - "&Agrave;": true, - "&Alpha;": true, - "&Amacr;": true, - "&And;": true, - "&Aogon;": true, - "&Aopf;": true, - "&ApplyFunction;": true, - "&Aring": true, - "&Aring;": true, - "&Ascr;": true, - "&Assign;": true, - "&Atilde": true, - "&Atilde;": true, - "&Auml": true, - "&Auml;": true, - "&Backslash;": true, - "&Barv;": true, - "&Barwed;": true, - "&Bcy;": true, - "&Because;": true, - "&Bernoullis;": true, - "&Beta;": true, - "&Bfr;": true, - "&Bopf;": true, - "&Breve;": true, - "&Bscr;": true, - "&Bumpeq;": true, - "&CHcy;": true, - "&COPY": true, - "&COPY;": true, - "&Cacute;": true, - "&Cap;": true, - "&CapitalDifferentialD;": true, - "&Cayleys;": true, - "&Ccaron;": true, - "&Ccedil": true, - "&Ccedil;": true, - "&Ccirc;": true, - "&Cconint;": true, - "&Cdot;": true, - "&Cedilla;": true, - "&CenterDot;": true, - "&Cfr;": true, - "&Chi;": true, - "&CircleDot;": true, - "&CircleMinus;": true, - "&CirclePlus;": true, - "&CircleTimes;": true, - "&ClockwiseContourIntegral;": true, - "&CloseCurlyDoubleQuote;": true, - "&CloseCurlyQuote;": true, - "&Colon;": true, - "&Colone;": true, - "&Congruent;": true, - "&Conint;": true, - "&ContourIntegral;": true, - "&Copf;": true, - "&Coproduct;": true, - "&CounterClockwiseContourIntegral;": true, - "&Cross;": true, - "&Cscr;": true, - "&Cup;": true, - "&CupCap;": true, - "&DD;": true, - "&DDotrahd;": true, - "&DJcy;": true, - "&DScy;": true, - "&DZcy;": true, - "&Dagger;": true, - "&Darr;": true, - "&Dashv;": true, - "&Dcaron;": true, - "&Dcy;": true, - "&Del;": true, - "&Delta;": true, - "&Dfr;": true, - "&DiacriticalAcute;": true, - "&DiacriticalDot;": true, - "&DiacriticalDoubleAcute;": true, - "&DiacriticalGrave;": true, - "&DiacriticalTilde;": true, - "&Diamond;": true, - "&DifferentialD;": true, - "&Dopf;": true, - "&Dot;": true, - "&DotDot;": true, - "&DotEqual;": true, - "&DoubleContourIntegral;": true, - "&DoubleDot;": true, - "&DoubleDownArrow;": true, - "&DoubleLeftArrow;": true, - "&DoubleLeftRightArrow;": true, - "&DoubleLeftTee;": true, - "&DoubleLongLeftArrow;": true, - "&DoubleLongLeftRightArrow;": true, - "&DoubleLongRightArrow;": true, - "&DoubleRightArrow;": true, - "&DoubleRightTee;": true, - "&DoubleUpArrow;": true, - "&DoubleUpDownArrow;": true, - "&DoubleVerticalBar;": true, - "&DownArrow;": true, - "&DownArrowBar;": true, - "&DownArrowUpArrow;": true, - "&DownBreve;": true, - "&DownLeftRightVector;": true, - "&DownLeftTeeVector;": true, - "&DownLeftVector;": true, - "&DownLeftVectorBar;": true, - "&DownRightTeeVector;": true, - "&DownRightVector;": true, - "&DownRightVectorBar;": true, - "&DownTee;": true, - "&DownTeeArrow;": true, - "&Downarrow;": true, - "&Dscr;": true, - "&Dstrok;": true, - "&ENG;": true, - "&ETH": true, - "&ETH;": true, - "&Eacute": true, - "&Eacute;": true, - "&Ecaron;": true, - "&Ecirc": true, - "&Ecirc;": true, - "&Ecy;": true, - "&Edot;": true, - "&Efr;": true, - "&Egrave": true, - "&Egrave;": true, - "&Element;": true, - "&Emacr;": true, - "&EmptySmallSquare;": true, - "&EmptyVerySmallSquare;": true, - "&Eogon;": true, - "&Eopf;": true, - "&Epsilon;": true, - "&Equal;": true, - "&EqualTilde;": true, - "&Equilibrium;": true, - "&Escr;": true, - "&Esim;": true, - "&Eta;": true, - "&Euml": true, - "&Euml;": true, - "&Exists;": true, - "&ExponentialE;": true, - "&Fcy;": true, - "&Ffr;": true, - "&FilledSmallSquare;": true, - "&FilledVerySmallSquare;": true, - "&Fopf;": true, - "&ForAll;": true, - "&Fouriertrf;": true, - "&Fscr;": true, - "&GJcy;": true, - "&GT": true, - "&GT;": true, - "&Gamma;": true, - "&Gammad;": true, - "&Gbreve;": true, - "&Gcedil;": true, - "&Gcirc;": true, - "&Gcy;": true, - "&Gdot;": true, - "&Gfr;": true, - "&Gg;": true, - "&Gopf;": true, - "&GreaterEqual;": true, - "&GreaterEqualLess;": true, - "&GreaterFullEqual;": true, - "&GreaterGreater;": true, - "&GreaterLess;": true, - "&GreaterSlantEqual;": true, - "&GreaterTilde;": true, - "&Gscr;": true, - "&Gt;": true, - "&HARDcy;": true, - "&Hacek;": true, - "&Hat;": true, - "&Hcirc;": true, - "&Hfr;": true, - "&HilbertSpace;": true, - "&Hopf;": true, - "&HorizontalLine;": true, - "&Hscr;": true, - "&Hstrok;": true, - "&HumpDownHump;": true, - "&HumpEqual;": true, - "&IEcy;": true, - "&IJlig;": true, - "&IOcy;": true, - "&Iacute": true, - "&Iacute;": true, - "&Icirc": true, - "&Icirc;": true, - "&Icy;": true, - "&Idot;": true, - "&Ifr;": true, - "&Igrave": true, - "&Igrave;": true, - "&Im;": true, - "&Imacr;": true, - "&ImaginaryI;": true, - "&Implies;": true, - "&Int;": true, - "&Integral;": true, - "&Intersection;": true, - "&InvisibleComma;": true, - "&InvisibleTimes;": true, - "&Iogon;": true, - "&Iopf;": true, - "&Iota;": true, - "&Iscr;": true, - "&Itilde;": true, - "&Iukcy;": true, - "&Iuml": true, - "&Iuml;": true, - "&Jcirc;": true, - "&Jcy;": true, - "&Jfr;": true, - "&Jopf;": true, - "&Jscr;": true, - "&Jsercy;": true, - "&Jukcy;": true, - "&KHcy;": true, - "&KJcy;": true, - "&Kappa;": true, - "&Kcedil;": true, - "&Kcy;": true, - "&Kfr;": true, - "&Kopf;": true, - "&Kscr;": true, - "&LJcy;": true, - "&LT": true, - "&LT;": true, - "&Lacute;": true, - "&Lambda;": true, - "&Lang;": true, - "&Laplacetrf;": true, - "&Larr;": true, - "&Lcaron;": true, - "&Lcedil;": true, - "&Lcy;": true, - "&LeftAngleBracket;": true, - "&LeftArrow;": true, - "&LeftArrowBar;": true, - "&LeftArrowRightArrow;": true, - "&LeftCeiling;": true, - "&LeftDoubleBracket;": true, - "&LeftDownTeeVector;": true, - "&LeftDownVector;": true, - "&LeftDownVectorBar;": true, - "&LeftFloor;": true, - "&LeftRightArrow;": true, - "&LeftRightVector;": true, - "&LeftTee;": true, - "&LeftTeeArrow;": true, - "&LeftTeeVector;": true, - "&LeftTriangle;": true, - "&LeftTriangleBar;": true, - "&LeftTriangleEqual;": true, - "&LeftUpDownVector;": true, - "&LeftUpTeeVector;": true, - "&LeftUpVector;": true, - "&LeftUpVectorBar;": true, - "&LeftVector;": true, - "&LeftVectorBar;": true, - "&Leftarrow;": true, - "&Leftrightarrow;": true, - "&LessEqualGreater;": true, - "&LessFullEqual;": true, - "&LessGreater;": true, - "&LessLess;": true, - "&LessSlantEqual;": true, - "&LessTilde;": true, - "&Lfr;": true, - "&Ll;": true, - "&Lleftarrow;": true, - "&Lmidot;": true, - "&LongLeftArrow;": true, - "&LongLeftRightArrow;": true, - "&LongRightArrow;": true, - "&Longleftarrow;": true, - "&Longleftrightarrow;": true, - "&Longrightarrow;": true, - "&Lopf;": true, - "&LowerLeftArrow;": true, - "&LowerRightArrow;": true, - "&Lscr;": true, - "&Lsh;": true, - "&Lstrok;": true, - "&Lt;": true, - "&Map;": true, - "&Mcy;": true, - "&MediumSpace;": true, - "&Mellintrf;": true, - "&Mfr;": true, - "&MinusPlus;": true, - "&Mopf;": true, - "&Mscr;": true, - "&Mu;": true, - "&NJcy;": true, - "&Nacute;": true, - "&Ncaron;": true, - "&Ncedil;": true, - "&Ncy;": true, - "&NegativeMediumSpace;": true, - "&NegativeThickSpace;": true, - "&NegativeThinSpace;": true, - "&NegativeVeryThinSpace;": true, - "&NestedGreaterGreater;": true, - "&NestedLessLess;": true, - "&NewLine;": true, - "&Nfr;": true, - "&NoBreak;": true, - "&NonBreakingSpace;": true, - "&Nopf;": true, - "&Not;": true, - "&NotCongruent;": true, - "&NotCupCap;": true, - "&NotDoubleVerticalBar;": true, - "&NotElement;": true, - "&NotEqual;": true, - "&NotEqualTilde;": true, - "&NotExists;": true, - "&NotGreater;": true, - "&NotGreaterEqual;": true, - "&NotGreaterFullEqual;": true, - "&NotGreaterGreater;": true, - "&NotGreaterLess;": true, - "&NotGreaterSlantEqual;": true, - "&NotGreaterTilde;": true, - "&NotHumpDownHump;": true, - "&NotHumpEqual;": true, - "&NotLeftTriangle;": true, - "&NotLeftTriangleBar;": true, - "&NotLeftTriangleEqual;": true, - "&NotLess;": true, - "&NotLessEqual;": true, - "&NotLessGreater;": true, - "&NotLessLess;": true, - "&NotLessSlantEqual;": true, - "&NotLessTilde;": true, - "&NotNestedGreaterGreater;": true, - "&NotNestedLessLess;": true, - "&NotPrecedes;": true, - "&NotPrecedesEqual;": true, - "&NotPrecedesSlantEqual;": true, - "&NotReverseElement;": true, - "&NotRightTriangle;": true, - "&NotRightTriangleBar;": true, - "&NotRightTriangleEqual;": true, - "&NotSquareSubset;": true, - "&NotSquareSubsetEqual;": true, - "&NotSquareSuperset;": true, - "&NotSquareSupersetEqual;": true, - "&NotSubset;": true, - "&NotSubsetEqual;": true, - "&NotSucceeds;": true, - "&NotSucceedsEqual;": true, - "&NotSucceedsSlantEqual;": true, - "&NotSucceedsTilde;": true, - "&NotSuperset;": true, - "&NotSupersetEqual;": true, - "&NotTilde;": true, - "&NotTildeEqual;": true, - "&NotTildeFullEqual;": true, - "&NotTildeTilde;": true, - "&NotVerticalBar;": true, - "&Nscr;": true, - "&Ntilde": true, - "&Ntilde;": true, - "&Nu;": true, - "&OElig;": true, - "&Oacute": true, - "&Oacute;": true, - "&Ocirc": true, - "&Ocirc;": true, - "&Ocy;": true, - "&Odblac;": true, - "&Ofr;": true, - "&Ograve": true, - "&Ograve;": true, - "&Omacr;": true, - "&Omega;": true, - "&Omicron;": true, - "&Oopf;": true, - "&OpenCurlyDoubleQuote;": true, - "&OpenCurlyQuote;": true, - "&Or;": true, - "&Oscr;": true, - "&Oslash": true, - "&Oslash;": true, - "&Otilde": true, - "&Otilde;": true, - "&Otimes;": true, - "&Ouml": true, - "&Ouml;": true, - "&OverBar;": true, - "&OverBrace;": true, - "&OverBracket;": true, - "&OverParenthesis;": true, - "&PartialD;": true, - "&Pcy;": true, - "&Pfr;": true, - "&Phi;": true, - "&Pi;": true, - "&PlusMinus;": true, - "&Poincareplane;": true, - "&Popf;": true, - "&Pr;": true, - "&Precedes;": true, - "&PrecedesEqual;": true, - "&PrecedesSlantEqual;": true, - "&PrecedesTilde;": true, - "&Prime;": true, - "&Product;": true, - "&Proportion;": true, - "&Proportional;": true, - "&Pscr;": true, - "&Psi;": true, - "&QUOT": true, - "&QUOT;": true, - "&Qfr;": true, - "&Qopf;": true, - "&Qscr;": true, - "&RBarr;": true, - "&REG": true, - "&REG;": true, - "&Racute;": true, - "&Rang;": true, - "&Rarr;": true, - "&Rarrtl;": true, - "&Rcaron;": true, - "&Rcedil;": true, - "&Rcy;": true, - "&Re;": true, - "&ReverseElement;": true, - "&ReverseEquilibrium;": true, - "&ReverseUpEquilibrium;": true, - "&Rfr;": true, - "&Rho;": true, - "&RightAngleBracket;": true, - "&RightArrow;": true, - "&RightArrowBar;": true, - "&RightArrowLeftArrow;": true, - "&RightCeiling;": true, - "&RightDoubleBracket;": true, - "&RightDownTeeVector;": true, - "&RightDownVector;": true, - "&RightDownVectorBar;": true, - "&RightFloor;": true, - "&RightTee;": true, - "&RightTeeArrow;": true, - "&RightTeeVector;": true, - "&RightTriangle;": true, - "&RightTriangleBar;": true, - "&RightTriangleEqual;": true, - "&RightUpDownVector;": true, - "&RightUpTeeVector;": true, - "&RightUpVector;": true, - "&RightUpVectorBar;": true, - "&RightVector;": true, - "&RightVectorBar;": true, - "&Rightarrow;": true, - "&Ropf;": true, - "&RoundImplies;": true, - "&Rrightarrow;": true, - "&Rscr;": true, - "&Rsh;": true, - "&RuleDelayed;": true, - "&SHCHcy;": true, - "&SHcy;": true, - "&SOFTcy;": true, - "&Sacute;": true, - "&Sc;": true, - "&Scaron;": true, - "&Scedil;": true, - "&Scirc;": true, - "&Scy;": true, - "&Sfr;": true, - "&ShortDownArrow;": true, - "&ShortLeftArrow;": true, - "&ShortRightArrow;": true, - "&ShortUpArrow;": true, - "&Sigma;": true, - "&SmallCircle;": true, - "&Sopf;": true, - "&Sqrt;": true, - "&Square;": true, - "&SquareIntersection;": true, - "&SquareSubset;": true, - "&SquareSubsetEqual;": true, - "&SquareSuperset;": true, - "&SquareSupersetEqual;": true, - "&SquareUnion;": true, - "&Sscr;": true, - "&Star;": true, - "&Sub;": true, - "&Subset;": true, - "&SubsetEqual;": true, - "&Succeeds;": true, - "&SucceedsEqual;": true, - "&SucceedsSlantEqual;": true, - "&SucceedsTilde;": true, - "&SuchThat;": true, - "&Sum;": true, - "&Sup;": true, - "&Superset;": true, - "&SupersetEqual;": true, - "&Supset;": true, - "&THORN": true, - "&THORN;": true, - "&TRADE;": true, - "&TSHcy;": true, - "&TScy;": true, - "&Tab;": true, - "&Tau;": true, - "&Tcaron;": true, - "&Tcedil;": true, - "&Tcy;": true, - "&Tfr;": true, - "&Therefore;": true, - "&Theta;": true, - "&ThickSpace;": true, - "&ThinSpace;": true, - "&Tilde;": true, - "&TildeEqual;": true, - "&TildeFullEqual;": true, - "&TildeTilde;": true, - "&Topf;": true, - "&TripleDot;": true, - "&Tscr;": true, - "&Tstrok;": true, - "&Uacute": true, - "&Uacute;": true, - "&Uarr;": true, - "&Uarrocir;": true, - "&Ubrcy;": true, - "&Ubreve;": true, - "&Ucirc": true, - "&Ucirc;": true, - "&Ucy;": true, - "&Udblac;": true, - "&Ufr;": true, - "&Ugrave": true, - "&Ugrave;": true, - "&Umacr;": true, - "&UnderBar;": true, - "&UnderBrace;": true, - "&UnderBracket;": true, - "&UnderParenthesis;": true, - "&Union;": true, - "&UnionPlus;": true, - "&Uogon;": true, - "&Uopf;": true, - "&UpArrow;": true, - "&UpArrowBar;": true, - "&UpArrowDownArrow;": true, - "&UpDownArrow;": true, - "&UpEquilibrium;": true, - "&UpTee;": true, - "&UpTeeArrow;": true, - "&Uparrow;": true, - "&Updownarrow;": true, - "&UpperLeftArrow;": true, - "&UpperRightArrow;": true, - "&Upsi;": true, - "&Upsilon;": true, - "&Uring;": true, - "&Uscr;": true, - "&Utilde;": true, - "&Uuml": true, - "&Uuml;": true, - "&VDash;": true, - "&Vbar;": true, - "&Vcy;": true, - "&Vdash;": true, - "&Vdashl;": true, - "&Vee;": true, - "&Verbar;": true, - "&Vert;": true, - "&VerticalBar;": true, - "&VerticalLine;": true, - "&VerticalSeparator;": true, - "&VerticalTilde;": true, - "&VeryThinSpace;": true, - "&Vfr;": true, - "&Vopf;": true, - "&Vscr;": true, - "&Vvdash;": true, - "&Wcirc;": true, - "&Wedge;": true, - "&Wfr;": true, - "&Wopf;": true, - "&Wscr;": true, - "&Xfr;": true, - "&Xi;": true, - "&Xopf;": true, - "&Xscr;": true, - "&YAcy;": true, - "&YIcy;": true, - "&YUcy;": true, - "&Yacute": true, - "&Yacute;": true, - "&Ycirc;": true, - "&Ycy;": true, - "&Yfr;": true, - "&Yopf;": true, - "&Yscr;": true, - "&Yuml;": true, - "&ZHcy;": true, - "&Zacute;": true, - "&Zcaron;": true, - "&Zcy;": true, - "&Zdot;": true, - "&ZeroWidthSpace;": true, - "&Zeta;": true, - "&Zfr;": true, - "&Zopf;": true, - "&Zscr;": true, - "&aacute": true, - "&aacute;": true, - "&abreve;": true, - "&ac;": true, - "&acE;": true, - "&acd;": true, - "&acirc": true, - "&acirc;": true, - "&acute": true, - "&acute;": true, - "&acy;": true, - "&aelig": true, - "&aelig;": true, - "&af;": true, - "&afr;": true, - "&agrave": true, - "&agrave;": true, - "&alefsym;": true, - "&aleph;": true, - "&alpha;": true, - "&amacr;": true, - "&amalg;": true, - "&amp": true, - "&amp;": true, - "&and;": true, - "&andand;": true, - "&andd;": true, - "&andslope;": true, - "&andv;": true, - "&ang;": true, - "&ange;": true, - "&angle;": true, - "&angmsd;": true, - "&angmsdaa;": true, - "&angmsdab;": true, - "&angmsdac;": true, - "&angmsdad;": true, - "&angmsdae;": true, - "&angmsdaf;": true, - "&angmsdag;": true, - "&angmsdah;": true, - "&angrt;": true, - "&angrtvb;": true, - "&angrtvbd;": true, - "&angsph;": true, - "&angst;": true, - "&angzarr;": true, - "&aogon;": true, - "&aopf;": true, - "&ap;": true, - "&apE;": true, - "&apacir;": true, - "&ape;": true, - "&apid;": true, - "&apos;": true, - "&approx;": true, - "&approxeq;": true, - "&aring": true, - "&aring;": true, - "&ascr;": true, - "&ast;": true, - "&asymp;": true, - "&asympeq;": true, - "&atilde": true, - "&atilde;": true, - "&auml": true, - "&auml;": true, - "&awconint;": true, - "&awint;": true, - "&bNot;": true, - "&backcong;": true, - "&backepsilon;": true, - "&backprime;": true, - "&backsim;": true, - "&backsimeq;": true, - "&barvee;": true, - "&barwed;": true, - "&barwedge;": true, - "&bbrk;": true, - "&bbrktbrk;": true, - "&bcong;": true, - "&bcy;": true, - "&bdquo;": true, - "&becaus;": true, - "&because;": true, - "&bemptyv;": true, - "&bepsi;": true, - "&bernou;": true, - "&beta;": true, - "&beth;": true, - "&between;": true, - "&bfr;": true, - "&bigcap;": true, - "&bigcirc;": true, - "&bigcup;": true, - "&bigodot;": true, - "&bigoplus;": true, - "&bigotimes;": true, - "&bigsqcup;": true, - "&bigstar;": true, - "&bigtriangledown;": true, - "&bigtriangleup;": true, - "&biguplus;": true, - "&bigvee;": true, - "&bigwedge;": true, - "&bkarow;": true, - "&blacklozenge;": true, - "&blacksquare;": true, - "&blacktriangle;": true, - "&blacktriangledown;": true, - "&blacktriangleleft;": true, - "&blacktriangleright;": true, - "&blank;": true, - "&blk12;": true, - "&blk14;": true, - "&blk34;": true, - "&block;": true, - "&bne;": true, - "&bnequiv;": true, - "&bnot;": true, - "&bopf;": true, - "&bot;": true, - "&bottom;": true, - "&bowtie;": true, - "&boxDL;": true, - "&boxDR;": true, - "&boxDl;": true, - "&boxDr;": true, - "&boxH;": true, - "&boxHD;": true, - "&boxHU;": true, - "&boxHd;": true, - "&boxHu;": true, - "&boxUL;": true, - "&boxUR;": true, - "&boxUl;": true, - "&boxUr;": true, - "&boxV;": true, - "&boxVH;": true, - "&boxVL;": true, - "&boxVR;": true, - "&boxVh;": true, - "&boxVl;": true, - "&boxVr;": true, - "&boxbox;": true, - "&boxdL;": true, - "&boxdR;": true, - "&boxdl;": true, - "&boxdr;": true, - "&boxh;": true, - "&boxhD;": true, - "&boxhU;": true, - "&boxhd;": true, - "&boxhu;": true, - "&boxminus;": true, - "&boxplus;": true, - "&boxtimes;": true, - "&boxuL;": true, - "&boxuR;": true, - "&boxul;": true, - "&boxur;": true, - "&boxv;": true, - "&boxvH;": true, - "&boxvL;": true, - "&boxvR;": true, - "&boxvh;": true, - "&boxvl;": true, - "&boxvr;": true, - "&bprime;": true, - "&breve;": true, - "&brvbar": true, - "&brvbar;": true, - "&bscr;": true, - "&bsemi;": true, - "&bsim;": true, - "&bsime;": true, - "&bsol;": true, - "&bsolb;": true, - "&bsolhsub;": true, - "&bull;": true, - "&bullet;": true, - "&bump;": true, - "&bumpE;": true, - "&bumpe;": true, - "&bumpeq;": true, - "&cacute;": true, - "&cap;": true, - "&capand;": true, - "&capbrcup;": true, - "&capcap;": true, - "&capcup;": true, - "&capdot;": true, - "&caps;": true, - "&caret;": true, - "&caron;": true, - "&ccaps;": true, - "&ccaron;": true, - "&ccedil": true, - "&ccedil;": true, - "&ccirc;": true, - "&ccups;": true, - "&ccupssm;": true, - "&cdot;": true, - "&cedil": true, - "&cedil;": true, - "&cemptyv;": true, - "&cent": true, - "&cent;": true, - "&centerdot;": true, - "&cfr;": true, - "&chcy;": true, - "&check;": true, - "&checkmark;": true, - "&chi;": true, - "&cir;": true, - "&cirE;": true, - "&circ;": true, - "&circeq;": true, - "&circlearrowleft;": true, - "&circlearrowright;": true, - "&circledR;": true, - "&circledS;": true, - "&circledast;": true, - "&circledcirc;": true, - "&circleddash;": true, - "&cire;": true, - "&cirfnint;": true, - "&cirmid;": true, - "&cirscir;": true, - "&clubs;": true, - "&clubsuit;": true, - "&colon;": true, - "&colone;": true, - "&coloneq;": true, - "&comma;": true, - "&commat;": true, - "&comp;": true, - "&compfn;": true, - "&complement;": true, - "&complexes;": true, - "&cong;": true, - "&congdot;": true, - "&conint;": true, - "&copf;": true, - "&coprod;": true, - "&copy": true, - "&copy;": true, - "&copysr;": true, - "&crarr;": true, - "&cross;": true, - "&cscr;": true, - "&csub;": true, - "&csube;": true, - "&csup;": true, - "&csupe;": true, - "&ctdot;": true, - "&cudarrl;": true, - "&cudarrr;": true, - "&cuepr;": true, - "&cuesc;": true, - "&cularr;": true, - "&cularrp;": true, - "&cup;": true, - "&cupbrcap;": true, - "&cupcap;": true, - "&cupcup;": true, - "&cupdot;": true, - "&cupor;": true, - "&cups;": true, - "&curarr;": true, - "&curarrm;": true, - "&curlyeqprec;": true, - "&curlyeqsucc;": true, - "&curlyvee;": true, - "&curlywedge;": true, - "&curren": true, - "&curren;": true, - "&curvearrowleft;": true, - "&curvearrowright;": true, - "&cuvee;": true, - "&cuwed;": true, - "&cwconint;": true, - "&cwint;": true, - "&cylcty;": true, - "&dArr;": true, - "&dHar;": true, - "&dagger;": true, - "&daleth;": true, - "&darr;": true, - "&dash;": true, - "&dashv;": true, - "&dbkarow;": true, - "&dblac;": true, - "&dcaron;": true, - "&dcy;": true, - "&dd;": true, - "&ddagger;": true, - "&ddarr;": true, - "&ddotseq;": true, - "&deg": true, - "&deg;": true, - "&delta;": true, - "&demptyv;": true, - "&dfisht;": true, - "&dfr;": true, - "&dharl;": true, - "&dharr;": true, - "&diam;": true, - "&diamond;": true, - "&diamondsuit;": true, - "&diams;": true, - "&die;": true, - "&digamma;": true, - "&disin;": true, - "&div;": true, - "&divide": true, - "&divide;": true, - "&divideontimes;": true, - "&divonx;": true, - "&djcy;": true, - "&dlcorn;": true, - "&dlcrop;": true, - "&dollar;": true, - "&dopf;": true, - "&dot;": true, - "&doteq;": true, - "&doteqdot;": true, - "&dotminus;": true, - "&dotplus;": true, - "&dotsquare;": true, - "&doublebarwedge;": true, - "&downarrow;": true, - "&downdownarrows;": true, - "&downharpoonleft;": true, - "&downharpoonright;": true, - "&drbkarow;": true, - "&drcorn;": true, - "&drcrop;": true, - "&dscr;": true, - "&dscy;": true, - "&dsol;": true, - "&dstrok;": true, - "&dtdot;": true, - "&dtri;": true, - "&dtrif;": true, - "&duarr;": true, - "&duhar;": true, - "&dwangle;": true, - "&dzcy;": true, - "&dzigrarr;": true, - "&eDDot;": true, - "&eDot;": true, - "&eacute": true, - "&eacute;": true, - "&easter;": true, - "&ecaron;": true, - "&ecir;": true, - "&ecirc": true, - "&ecirc;": true, - "&ecolon;": true, - "&ecy;": true, - "&edot;": true, - "&ee;": true, - "&efDot;": true, - "&efr;": true, - "&eg;": true, - "&egrave": true, - "&egrave;": true, - "&egs;": true, - "&egsdot;": true, - "&el;": true, - "&elinters;": true, - "&ell;": true, - "&els;": true, - "&elsdot;": true, - "&emacr;": true, - "&empty;": true, - "&emptyset;": true, - "&emptyv;": true, - "&emsp13;": true, - "&emsp14;": true, - "&emsp;": true, - "&eng;": true, - "&ensp;": true, - "&eogon;": true, - "&eopf;": true, - "&epar;": true, - "&eparsl;": true, - "&eplus;": true, - "&epsi;": true, - "&epsilon;": true, - "&epsiv;": true, - "&eqcirc;": true, - "&eqcolon;": true, - "&eqsim;": true, - "&eqslantgtr;": true, - "&eqslantless;": true, - "&equals;": true, - "&equest;": true, - "&equiv;": true, - "&equivDD;": true, - "&eqvparsl;": true, - "&erDot;": true, - "&erarr;": true, - "&escr;": true, - "&esdot;": true, - "&esim;": true, - "&eta;": true, - "&eth": true, - "&eth;": true, - "&euml": true, - "&euml;": true, - "&euro;": true, - "&excl;": true, - "&exist;": true, - "&expectation;": true, - "&exponentiale;": true, - "&fallingdotseq;": true, - "&fcy;": true, - "&female;": true, - "&ffilig;": true, - "&fflig;": true, - "&ffllig;": true, - "&ffr;": true, - "&filig;": true, - "&fjlig;": true, - "&flat;": true, - "&fllig;": true, - "&fltns;": true, - "&fnof;": true, - "&fopf;": true, - "&forall;": true, - "&fork;": true, - "&forkv;": true, - "&fpartint;": true, - "&frac12": true, - "&frac12;": true, - "&frac13;": true, - "&frac14": true, - "&frac14;": true, - "&frac15;": true, - "&frac16;": true, - "&frac18;": true, - "&frac23;": true, - "&frac25;": true, - "&frac34": true, - "&frac34;": true, - "&frac35;": true, - "&frac38;": true, - "&frac45;": true, - "&frac56;": true, - "&frac58;": true, - "&frac78;": true, - "&frasl;": true, - "&frown;": true, - "&fscr;": true, - "&gE;": true, - "&gEl;": true, - "&gacute;": true, - "&gamma;": true, - "&gammad;": true, - "&gap;": true, - "&gbreve;": true, - "&gcirc;": true, - "&gcy;": true, - "&gdot;": true, - "&ge;": true, - "&gel;": true, - "&geq;": true, - "&geqq;": true, - "&geqslant;": true, - "&ges;": true, - "&gescc;": true, - "&gesdot;": true, - "&gesdoto;": true, - "&gesdotol;": true, - "&gesl;": true, - "&gesles;": true, - "&gfr;": true, - "&gg;": true, - "&ggg;": true, - "&gimel;": true, - "&gjcy;": true, - "&gl;": true, - "&glE;": true, - "&gla;": true, - "&glj;": true, - "&gnE;": true, - "&gnap;": true, - "&gnapprox;": true, - "&gne;": true, - "&gneq;": true, - "&gneqq;": true, - "&gnsim;": true, - "&gopf;": true, - "&grave;": true, - "&gscr;": true, - "&gsim;": true, - "&gsime;": true, - "&gsiml;": true, - "&gt": true, - "&gt;": true, - "&gtcc;": true, - "&gtcir;": true, - "&gtdot;": true, - "&gtlPar;": true, - "&gtquest;": true, - "&gtrapprox;": true, - "&gtrarr;": true, - "&gtrdot;": true, - "&gtreqless;": true, - "&gtreqqless;": true, - "&gtrless;": true, - "&gtrsim;": true, - "&gvertneqq;": true, - "&gvnE;": true, - "&hArr;": true, - "&hairsp;": true, - "&half;": true, - "&hamilt;": true, - "&hardcy;": true, - "&harr;": true, - "&harrcir;": true, - "&harrw;": true, - "&hbar;": true, - "&hcirc;": true, - "&hearts;": true, - "&heartsuit;": true, - "&hellip;": true, - "&hercon;": true, - "&hfr;": true, - "&hksearow;": true, - "&hkswarow;": true, - "&hoarr;": true, - "&homtht;": true, - "&hookleftarrow;": true, - "&hookrightarrow;": true, - "&hopf;": true, - "&horbar;": true, - "&hscr;": true, - "&hslash;": true, - "&hstrok;": true, - "&hybull;": true, - "&hyphen;": true, - "&iacute": true, - "&iacute;": true, - "&ic;": true, - "&icirc": true, - "&icirc;": true, - "&icy;": true, - "&iecy;": true, - "&iexcl": true, - "&iexcl;": true, - "&iff;": true, - "&ifr;": true, - "&igrave": true, - "&igrave;": true, - "&ii;": true, - "&iiiint;": true, - "&iiint;": true, - "&iinfin;": true, - "&iiota;": true, - "&ijlig;": true, - "&imacr;": true, - "&image;": true, - "&imagline;": true, - "&imagpart;": true, - "&imath;": true, - "&imof;": true, - "&imped;": true, - "&in;": true, - "&incare;": true, - "&infin;": true, - "&infintie;": true, - "&inodot;": true, - "&int;": true, - "&intcal;": true, - "&integers;": true, - "&intercal;": true, - "&intlarhk;": true, - "&intprod;": true, - "&iocy;": true, - "&iogon;": true, - "&iopf;": true, - "&iota;": true, - "&iprod;": true, - "&iquest": true, - "&iquest;": true, - "&iscr;": true, - "&isin;": true, - "&isinE;": true, - "&isindot;": true, - "&isins;": true, - "&isinsv;": true, - "&isinv;": true, - "&it;": true, - "&itilde;": true, - "&iukcy;": true, - "&iuml": true, - "&iuml;": true, - "&jcirc;": true, - "&jcy;": true, - "&jfr;": true, - "&jmath;": true, - "&jopf;": true, - "&jscr;": true, - "&jsercy;": true, - "&jukcy;": true, - "&kappa;": true, - "&kappav;": true, - "&kcedil;": true, - "&kcy;": true, - "&kfr;": true, - "&kgreen;": true, - "&khcy;": true, - "&kjcy;": true, - "&kopf;": true, - "&kscr;": true, - "&lAarr;": true, - "&lArr;": true, - "&lAtail;": true, - "&lBarr;": true, - "&lE;": true, - "&lEg;": true, - "&lHar;": true, - "&lacute;": true, - "&laemptyv;": true, - "&lagran;": true, - "&lambda;": true, - "&lang;": true, - "&langd;": true, - "&langle;": true, - "&lap;": true, - "&laquo": true, - "&laquo;": true, - "&larr;": true, - "&larrb;": true, - "&larrbfs;": true, - "&larrfs;": true, - "&larrhk;": true, - "&larrlp;": true, - "&larrpl;": true, - "&larrsim;": true, - "&larrtl;": true, - "&lat;": true, - "&latail;": true, - "&late;": true, - "&lates;": true, - "&lbarr;": true, - "&lbbrk;": true, - "&lbrace;": true, - "&lbrack;": true, - "&lbrke;": true, - "&lbrksld;": true, - "&lbrkslu;": true, - "&lcaron;": true, - "&lcedil;": true, - "&lceil;": true, - "&lcub;": true, - "&lcy;": true, - "&ldca;": true, - "&ldquo;": true, - "&ldquor;": true, - "&ldrdhar;": true, - "&ldrushar;": true, - "&ldsh;": true, - "&le;": true, - "&leftarrow;": true, - "&leftarrowtail;": true, - "&leftharpoondown;": true, - "&leftharpoonup;": true, - "&leftleftarrows;": true, - "&leftrightarrow;": true, - "&leftrightarrows;": true, - "&leftrightharpoons;": true, - "&leftrightsquigarrow;": true, - "&leftthreetimes;": true, - "&leg;": true, - "&leq;": true, - "&leqq;": true, - "&leqslant;": true, - "&les;": true, - "&lescc;": true, - "&lesdot;": true, - "&lesdoto;": true, - "&lesdotor;": true, - "&lesg;": true, - "&lesges;": true, - "&lessapprox;": true, - "&lessdot;": true, - "&lesseqgtr;": true, - "&lesseqqgtr;": true, - "&lessgtr;": true, - "&lesssim;": true, - "&lfisht;": true, - "&lfloor;": true, - "&lfr;": true, - "&lg;": true, - "&lgE;": true, - "&lhard;": true, - "&lharu;": true, - "&lharul;": true, - "&lhblk;": true, - "&ljcy;": true, - "&ll;": true, - "&llarr;": true, - "&llcorner;": true, - "&llhard;": true, - "&lltri;": true, - "&lmidot;": true, - "&lmoust;": true, - "&lmoustache;": true, - "&lnE;": true, - "&lnap;": true, - "&lnapprox;": true, - "&lne;": true, - "&lneq;": true, - "&lneqq;": true, - "&lnsim;": true, - "&loang;": true, - "&loarr;": true, - "&lobrk;": true, - "&longleftarrow;": true, - "&longleftrightarrow;": true, - "&longmapsto;": true, - "&longrightarrow;": true, - "&looparrowleft;": true, - "&looparrowright;": true, - "&lopar;": true, - "&lopf;": true, - "&loplus;": true, - "&lotimes;": true, - "&lowast;": true, - "&lowbar;": true, - "&loz;": true, - "&lozenge;": true, - "&lozf;": true, - "&lpar;": true, - "&lparlt;": true, - "&lrarr;": true, - "&lrcorner;": true, - "&lrhar;": true, - "&lrhard;": true, - "&lrm;": true, - "&lrtri;": true, - "&lsaquo;": true, - "&lscr;": true, - "&lsh;": true, - "&lsim;": true, - "&lsime;": true, - "&lsimg;": true, - "&lsqb;": true, - "&lsquo;": true, - "&lsquor;": true, - "&lstrok;": true, - "&lt": true, - "&lt;": true, - "&ltcc;": true, - "&ltcir;": true, - "&ltdot;": true, - "&lthree;": true, - "&ltimes;": true, - "&ltlarr;": true, - "&ltquest;": true, - "&ltrPar;": true, - "&ltri;": true, - "&ltrie;": true, - "&ltrif;": true, - "&lurdshar;": true, - "&luruhar;": true, - "&lvertneqq;": true, - "&lvnE;": true, - "&mDDot;": true, - "&macr": true, - "&macr;": true, - "&male;": true, - "&malt;": true, - "&maltese;": true, - "&map;": true, - "&mapsto;": true, - "&mapstodown;": true, - "&mapstoleft;": true, - "&mapstoup;": true, - "&marker;": true, - "&mcomma;": true, - "&mcy;": true, - "&mdash;": true, - "&measuredangle;": true, - "&mfr;": true, - "&mho;": true, - "&micro": true, - "&micro;": true, - "&mid;": true, - "&midast;": true, - "&midcir;": true, - "&middot": true, - "&middot;": true, - "&minus;": true, - "&minusb;": true, - "&minusd;": true, - "&minusdu;": true, - "&mlcp;": true, - "&mldr;": true, - "&mnplus;": true, - "&models;": true, - "&mopf;": true, - "&mp;": true, - "&mscr;": true, - "&mstpos;": true, - "&mu;": true, - "&multimap;": true, - "&mumap;": true, - "&nGg;": true, - "&nGt;": true, - "&nGtv;": true, - "&nLeftarrow;": true, - "&nLeftrightarrow;": true, - "&nLl;": true, - "&nLt;": true, - "&nLtv;": true, - "&nRightarrow;": true, - "&nVDash;": true, - "&nVdash;": true, - "&nabla;": true, - "&nacute;": true, - "&nang;": true, - "&nap;": true, - "&napE;": true, - "&napid;": true, - "&napos;": true, - "&napprox;": true, - "&natur;": true, - "&natural;": true, - "&naturals;": true, - "&nbsp": true, - "&nbsp;": true, - "&nbump;": true, - "&nbumpe;": true, - "&ncap;": true, - "&ncaron;": true, - "&ncedil;": true, - "&ncong;": true, - "&ncongdot;": true, - "&ncup;": true, - "&ncy;": true, - "&ndash;": true, - "&ne;": true, - "&neArr;": true, - "&nearhk;": true, - "&nearr;": true, - "&nearrow;": true, - "&nedot;": true, - "&nequiv;": true, - "&nesear;": true, - "&nesim;": true, - "&nexist;": true, - "&nexists;": true, - "&nfr;": true, - "&ngE;": true, - "&nge;": true, - "&ngeq;": true, - "&ngeqq;": true, - "&ngeqslant;": true, - "&nges;": true, - "&ngsim;": true, - "&ngt;": true, - "&ngtr;": true, - "&nhArr;": true, - "&nharr;": true, - "&nhpar;": true, - "&ni;": true, - "&nis;": true, - "&nisd;": true, - "&niv;": true, - "&njcy;": true, - "&nlArr;": true, - "&nlE;": true, - "&nlarr;": true, - "&nldr;": true, - "&nle;": true, - "&nleftarrow;": true, - "&nleftrightarrow;": true, - "&nleq;": true, - "&nleqq;": true, - "&nleqslant;": true, - "&nles;": true, - "&nless;": true, - "&nlsim;": true, - "&nlt;": true, - "&nltri;": true, - "&nltrie;": true, - "&nmid;": true, - "&nopf;": true, - "&not": true, - "&not;": true, - "&notin;": true, - "&notinE;": true, - "&notindot;": true, - "&notinva;": true, - "&notinvb;": true, - "&notinvc;": true, - "&notni;": true, - "&notniva;": true, - "&notnivb;": true, - "&notnivc;": true, - "&npar;": true, - "&nparallel;": true, - "&nparsl;": true, - "&npart;": true, - "&npolint;": true, - "&npr;": true, - "&nprcue;": true, - "&npre;": true, - "&nprec;": true, - "&npreceq;": true, - "&nrArr;": true, - "&nrarr;": true, - "&nrarrc;": true, - "&nrarrw;": true, - "&nrightarrow;": true, - "&nrtri;": true, - "&nrtrie;": true, - "&nsc;": true, - "&nsccue;": true, - "&nsce;": true, - "&nscr;": true, - "&nshortmid;": true, - "&nshortparallel;": true, - "&nsim;": true, - "&nsime;": true, - "&nsimeq;": true, - "&nsmid;": true, - "&nspar;": true, - "&nsqsube;": true, - "&nsqsupe;": true, - "&nsub;": true, - "&nsubE;": true, - "&nsube;": true, - "&nsubset;": true, - "&nsubseteq;": true, - "&nsubseteqq;": true, - "&nsucc;": true, - "&nsucceq;": true, - "&nsup;": true, - "&nsupE;": true, - "&nsupe;": true, - "&nsupset;": true, - "&nsupseteq;": true, - "&nsupseteqq;": true, - "&ntgl;": true, - "&ntilde": true, - "&ntilde;": true, - "&ntlg;": true, - "&ntriangleleft;": true, - "&ntrianglelefteq;": true, - "&ntriangleright;": true, - "&ntrianglerighteq;": true, - "&nu;": true, - "&num;": true, - "&numero;": true, - "&numsp;": true, - "&nvDash;": true, - "&nvHarr;": true, - "&nvap;": true, - "&nvdash;": true, - "&nvge;": true, - "&nvgt;": true, - "&nvinfin;": true, - "&nvlArr;": true, - "&nvle;": true, - "&nvlt;": true, - "&nvltrie;": true, - "&nvrArr;": true, - "&nvrtrie;": true, - "&nvsim;": true, - "&nwArr;": true, - "&nwarhk;": true, - "&nwarr;": true, - "&nwarrow;": true, - "&nwnear;": true, - "&oS;": true, - "&oacute": true, - "&oacute;": true, - "&oast;": true, - "&ocir;": true, - "&ocirc": true, - "&ocirc;": true, - "&ocy;": true, - "&odash;": true, - "&odblac;": true, - "&odiv;": true, - "&odot;": true, - "&odsold;": true, - "&oelig;": true, - "&ofcir;": true, - "&ofr;": true, - "&ogon;": true, - "&ograve": true, - "&ograve;": true, - "&ogt;": true, - "&ohbar;": true, - "&ohm;": true, - "&oint;": true, - "&olarr;": true, - "&olcir;": true, - "&olcross;": true, - "&oline;": true, - "&olt;": true, - "&omacr;": true, - "&omega;": true, - "&omicron;": true, - "&omid;": true, - "&ominus;": true, - "&oopf;": true, - "&opar;": true, - "&operp;": true, - "&oplus;": true, - "&or;": true, - "&orarr;": true, - "&ord;": true, - "&order;": true, - "&orderof;": true, - "&ordf": true, - "&ordf;": true, - "&ordm": true, - "&ordm;": true, - "&origof;": true, - "&oror;": true, - "&orslope;": true, - "&orv;": true, - "&oscr;": true, - "&oslash": true, - "&oslash;": true, - "&osol;": true, - "&otilde": true, - "&otilde;": true, - "&otimes;": true, - "&otimesas;": true, - "&ouml": true, - "&ouml;": true, - "&ovbar;": true, - "&par;": true, - "&para": true, - "&para;": true, - "&parallel;": true, - "&parsim;": true, - "&parsl;": true, - "&part;": true, - "&pcy;": true, - "&percnt;": true, - "&period;": true, - "&permil;": true, - "&perp;": true, - "&pertenk;": true, - "&pfr;": true, - "&phi;": true, - "&phiv;": true, - "&phmmat;": true, - "&phone;": true, - "&pi;": true, - "&pitchfork;": true, - "&piv;": true, - "&planck;": true, - "&planckh;": true, - "&plankv;": true, - "&plus;": true, - "&plusacir;": true, - "&plusb;": true, - "&pluscir;": true, - "&plusdo;": true, - "&plusdu;": true, - "&pluse;": true, - "&plusmn": true, - "&plusmn;": true, - "&plussim;": true, - "&plustwo;": true, - "&pm;": true, - "&pointint;": true, - "&popf;": true, - "&pound": true, - "&pound;": true, - "&pr;": true, - "&prE;": true, - "&prap;": true, - "&prcue;": true, - "&pre;": true, - "&prec;": true, - "&precapprox;": true, - "&preccurlyeq;": true, - "&preceq;": true, - "&precnapprox;": true, - "&precneqq;": true, - "&precnsim;": true, - "&precsim;": true, - "&prime;": true, - "&primes;": true, - "&prnE;": true, - "&prnap;": true, - "&prnsim;": true, - "&prod;": true, - "&profalar;": true, - "&profline;": true, - "&profsurf;": true, - "&prop;": true, - "&propto;": true, - "&prsim;": true, - "&prurel;": true, - "&pscr;": true, - "&psi;": true, - "&puncsp;": true, - "&qfr;": true, - "&qint;": true, - "&qopf;": true, - "&qprime;": true, - "&qscr;": true, - "&quaternions;": true, - "&quatint;": true, - "&quest;": true, - "&questeq;": true, - "&quot": true, - "&quot;": true, - "&rAarr;": true, - "&rArr;": true, - "&rAtail;": true, - "&rBarr;": true, - "&rHar;": true, - "&race;": true, - "&racute;": true, - "&radic;": true, - "&raemptyv;": true, - "&rang;": true, - "&rangd;": true, - "&range;": true, - "&rangle;": true, - "&raquo": true, - "&raquo;": true, - "&rarr;": true, - "&rarrap;": true, - "&rarrb;": true, - "&rarrbfs;": true, - "&rarrc;": true, - "&rarrfs;": true, - "&rarrhk;": true, - "&rarrlp;": true, - "&rarrpl;": true, - "&rarrsim;": true, - "&rarrtl;": true, - "&rarrw;": true, - "&ratail;": true, - "&ratio;": true, - "&rationals;": true, - "&rbarr;": true, - "&rbbrk;": true, - "&rbrace;": true, - "&rbrack;": true, - "&rbrke;": true, - "&rbrksld;": true, - "&rbrkslu;": true, - "&rcaron;": true, - "&rcedil;": true, - "&rceil;": true, - "&rcub;": true, - "&rcy;": true, - "&rdca;": true, - "&rdldhar;": true, - "&rdquo;": true, - "&rdquor;": true, - "&rdsh;": true, - "&real;": true, - "&realine;": true, - "&realpart;": true, - "&reals;": true, - "&rect;": true, - "&reg": true, - "&reg;": true, - "&rfisht;": true, - "&rfloor;": true, - "&rfr;": true, - "&rhard;": true, - "&rharu;": true, - "&rharul;": true, - "&rho;": true, - "&rhov;": true, - "&rightarrow;": true, - "&rightarrowtail;": true, - "&rightharpoondown;": true, - "&rightharpoonup;": true, - "&rightleftarrows;": true, - "&rightleftharpoons;": true, - "&rightrightarrows;": true, - "&rightsquigarrow;": true, - "&rightthreetimes;": true, - "&ring;": true, - "&risingdotseq;": true, - "&rlarr;": true, - "&rlhar;": true, - "&rlm;": true, - "&rmoust;": true, - "&rmoustache;": true, - "&rnmid;": true, - "&roang;": true, - "&roarr;": true, - "&robrk;": true, - "&ropar;": true, - "&ropf;": true, - "&roplus;": true, - "&rotimes;": true, - "&rpar;": true, - "&rpargt;": true, - "&rppolint;": true, - "&rrarr;": true, - "&rsaquo;": true, - "&rscr;": true, - "&rsh;": true, - "&rsqb;": true, - "&rsquo;": true, - "&rsquor;": true, - "&rthree;": true, - "&rtimes;": true, - "&rtri;": true, - "&rtrie;": true, - "&rtrif;": true, - "&rtriltri;": true, - "&ruluhar;": true, - "&rx;": true, - "&sacute;": true, - "&sbquo;": true, - "&sc;": true, - "&scE;": true, - "&scap;": true, - "&scaron;": true, - "&sccue;": true, - "&sce;": true, - "&scedil;": true, - "&scirc;": true, - "&scnE;": true, - "&scnap;": true, - "&scnsim;": true, - "&scpolint;": true, - "&scsim;": true, - "&scy;": true, - "&sdot;": true, - "&sdotb;": true, - "&sdote;": true, - "&seArr;": true, - "&searhk;": true, - "&searr;": true, - "&searrow;": true, - "&sect": true, - "&sect;": true, - "&semi;": true, - "&seswar;": true, - "&setminus;": true, - "&setmn;": true, - "&sext;": true, - "&sfr;": true, - "&sfrown;": true, - "&sharp;": true, - "&shchcy;": true, - "&shcy;": true, - "&shortmid;": true, - "&shortparallel;": true, - "&shy": true, - "&shy;": true, - "&sigma;": true, - "&sigmaf;": true, - "&sigmav;": true, - "&sim;": true, - "&simdot;": true, - "&sime;": true, - "&simeq;": true, - "&simg;": true, - "&simgE;": true, - "&siml;": true, - "&simlE;": true, - "&simne;": true, - "&simplus;": true, - "&simrarr;": true, - "&slarr;": true, - "&smallsetminus;": true, - "&smashp;": true, - "&smeparsl;": true, - "&smid;": true, - "&smile;": true, - "&smt;": true, - "&smte;": true, - "&smtes;": true, - "&softcy;": true, - "&sol;": true, - "&solb;": true, - "&solbar;": true, - "&sopf;": true, - "&spades;": true, - "&spadesuit;": true, - "&spar;": true, - "&sqcap;": true, - "&sqcaps;": true, - "&sqcup;": true, - "&sqcups;": true, - "&sqsub;": true, - "&sqsube;": true, - "&sqsubset;": true, - "&sqsubseteq;": true, - "&sqsup;": true, - "&sqsupe;": true, - "&sqsupset;": true, - "&sqsupseteq;": true, - "&squ;": true, - "&square;": true, - "&squarf;": true, - "&squf;": true, - "&srarr;": true, - "&sscr;": true, - "&ssetmn;": true, - "&ssmile;": true, - "&sstarf;": true, - "&star;": true, - "&starf;": true, - "&straightepsilon;": true, - "&straightphi;": true, - "&strns;": true, - "&sub;": true, - "&subE;": true, - "&subdot;": true, - "&sube;": true, - "&subedot;": true, - "&submult;": true, - "&subnE;": true, - "&subne;": true, - "&subplus;": true, - "&subrarr;": true, - "&subset;": true, - "&subseteq;": true, - "&subseteqq;": true, - "&subsetneq;": true, - "&subsetneqq;": true, - "&subsim;": true, - "&subsub;": true, - "&subsup;": true, - "&succ;": true, - "&succapprox;": true, - "&succcurlyeq;": true, - "&succeq;": true, - "&succnapprox;": true, - "&succneqq;": true, - "&succnsim;": true, - "&succsim;": true, - "&sum;": true, - "&sung;": true, - "&sup1": true, - "&sup1;": true, - "&sup2": true, - "&sup2;": true, - "&sup3": true, - "&sup3;": true, - "&sup;": true, - "&supE;": true, - "&supdot;": true, - "&supdsub;": true, - "&supe;": true, - "&supedot;": true, - "&suphsol;": true, - "&suphsub;": true, - "&suplarr;": true, - "&supmult;": true, - "&supnE;": true, - "&supne;": true, - "&supplus;": true, - "&supset;": true, - "&supseteq;": true, - "&supseteqq;": true, - "&supsetneq;": true, - "&supsetneqq;": true, - "&supsim;": true, - "&supsub;": true, - "&supsup;": true, - "&swArr;": true, - "&swarhk;": true, - "&swarr;": true, - "&swarrow;": true, - "&swnwar;": true, - "&szlig": true, - "&szlig;": true, - "&target;": true, - "&tau;": true, - "&tbrk;": true, - "&tcaron;": true, - "&tcedil;": true, - "&tcy;": true, - "&tdot;": true, - "&telrec;": true, - "&tfr;": true, - "&there4;": true, - "&therefore;": true, - "&theta;": true, - "&thetasym;": true, - "&thetav;": true, - "&thickapprox;": true, - "&thicksim;": true, - "&thinsp;": true, - "&thkap;": true, - "&thksim;": true, - "&thorn": true, - "&thorn;": true, - "&tilde;": true, - "&times": true, - "&times;": true, - "&timesb;": true, - "&timesbar;": true, - "&timesd;": true, - "&tint;": true, - "&toea;": true, - "&top;": true, - "&topbot;": true, - "&topcir;": true, - "&topf;": true, - "&topfork;": true, - "&tosa;": true, - "&tprime;": true, - "&trade;": true, - "&triangle;": true, - "&triangledown;": true, - "&triangleleft;": true, - "&trianglelefteq;": true, - "&triangleq;": true, - "&triangleright;": true, - "&trianglerighteq;": true, - "&tridot;": true, - "&trie;": true, - "&triminus;": true, - "&triplus;": true, - "&trisb;": true, - "&tritime;": true, - "&trpezium;": true, - "&tscr;": true, - "&tscy;": true, - "&tshcy;": true, - "&tstrok;": true, - "&twixt;": true, - "&twoheadleftarrow;": true, - "&twoheadrightarrow;": true, - "&uArr;": true, - "&uHar;": true, - "&uacute": true, - "&uacute;": true, - "&uarr;": true, - "&ubrcy;": true, - "&ubreve;": true, - "&ucirc": true, - "&ucirc;": true, - "&ucy;": true, - "&udarr;": true, - "&udblac;": true, - "&udhar;": true, - "&ufisht;": true, - "&ufr;": true, - "&ugrave": true, - "&ugrave;": true, - "&uharl;": true, - "&uharr;": true, - "&uhblk;": true, - "&ulcorn;": true, - "&ulcorner;": true, - "&ulcrop;": true, - "&ultri;": true, - "&umacr;": true, - "&uml": true, - "&uml;": true, - "&uogon;": true, - "&uopf;": true, - "&uparrow;": true, - "&updownarrow;": true, - "&upharpoonleft;": true, - "&upharpoonright;": true, - "&uplus;": true, - "&upsi;": true, - "&upsih;": true, - "&upsilon;": true, - "&upuparrows;": true, - "&urcorn;": true, - "&urcorner;": true, - "&urcrop;": true, - "&uring;": true, - "&urtri;": true, - "&uscr;": true, - "&utdot;": true, - "&utilde;": true, - "&utri;": true, - "&utrif;": true, - "&uuarr;": true, - "&uuml": true, - "&uuml;": true, - "&uwangle;": true, - "&vArr;": true, - "&vBar;": true, - "&vBarv;": true, - "&vDash;": true, - "&vangrt;": true, - "&varepsilon;": true, - "&varkappa;": true, - "&varnothing;": true, - "&varphi;": true, - "&varpi;": true, - "&varpropto;": true, - "&varr;": true, - "&varrho;": true, - "&varsigma;": true, - "&varsubsetneq;": true, - "&varsubsetneqq;": true, - "&varsupsetneq;": true, - "&varsupsetneqq;": true, - "&vartheta;": true, - "&vartriangleleft;": true, - "&vartriangleright;": true, - "&vcy;": true, - "&vdash;": true, - "&vee;": true, - "&veebar;": true, - "&veeeq;": true, - "&vellip;": true, - "&verbar;": true, - "&vert;": true, - "&vfr;": true, - "&vltri;": true, - "&vnsub;": true, - "&vnsup;": true, - "&vopf;": true, - "&vprop;": true, - "&vrtri;": true, - "&vscr;": true, - "&vsubnE;": true, - "&vsubne;": true, - "&vsupnE;": true, - "&vsupne;": true, - "&vzigzag;": true, - "&wcirc;": true, - "&wedbar;": true, - "&wedge;": true, - "&wedgeq;": true, - "&weierp;": true, - "&wfr;": true, - "&wopf;": true, - "&wp;": true, - "&wr;": true, - "&wreath;": true, - "&wscr;": true, - "&xcap;": true, - "&xcirc;": true, - "&xcup;": true, - "&xdtri;": true, - "&xfr;": true, - "&xhArr;": true, - "&xharr;": true, - "&xi;": true, - "&xlArr;": true, - "&xlarr;": true, - "&xmap;": true, - "&xnis;": true, - "&xodot;": true, - "&xopf;": true, - "&xoplus;": true, - "&xotime;": true, - "&xrArr;": true, - "&xrarr;": true, - "&xscr;": true, - "&xsqcup;": true, - "&xuplus;": true, - "&xutri;": true, - "&xvee;": true, - "&xwedge;": true, - "&yacute": true, - "&yacute;": true, - "&yacy;": true, - "&ycirc;": true, - "&ycy;": true, - "&yen": true, - "&yen;": true, - "&yfr;": true, - "&yicy;": true, - "&yopf;": true, - "&yscr;": true, - "&yucy;": true, - "&yuml": true, - "&yuml;": true, - "&zacute;": true, - "&zcaron;": true, - "&zcy;": true, - "&zdot;": true, - "&zeetrf;": true, - "&zeta;": true, - "&zfr;": true, - "&zhcy;": true, - "&zigrarr;": true, - "&zopf;": true, - "&zscr;": true, - "&zwj;": true, - "&zwnj;": true, -} diff --git a/vendor/github.com/russross/blackfriday/v2/esc.go b/vendor/github.com/russross/blackfriday/v2/esc.go deleted file mode 100644 index 6ab60102c..000000000 --- a/vendor/github.com/russross/blackfriday/v2/esc.go +++ /dev/null @@ -1,70 +0,0 @@ -package blackfriday - -import ( - "html" - "io" -) - -var htmlEscaper = [256][]byte{ - '&': []byte("&amp;"), - '<': []byte("&lt;"), - '>': []byte("&gt;"), - '"': []byte("&quot;"), -} - -func escapeHTML(w io.Writer, s []byte) { - escapeEntities(w, s, false) -} - -func escapeAllHTML(w io.Writer, s []byte) { - escapeEntities(w, s, true) -} - -func escapeEntities(w io.Writer, s []byte, escapeValidEntities bool) { - var start, end int - for end < len(s) { - escSeq := htmlEscaper[s[end]] - if escSeq != nil { - isEntity, entityEnd := nodeIsEntity(s, end) - if isEntity && !escapeValidEntities { - w.Write(s[start : entityEnd+1]) - start = entityEnd + 1 - } else { - w.Write(s[start:end]) - w.Write(escSeq) - start = end + 1 - } - } - end++ - } - if start < len(s) && end <= len(s) { - w.Write(s[start:end]) - } -} - -func nodeIsEntity(s []byte, end int) (isEntity bool, endEntityPos int) { - isEntity = false - endEntityPos = end + 1 - - if s[end] == '&' { - for endEntityPos < len(s) { - if s[endEntityPos] == ';' { - if entities[string(s[end:endEntityPos+1])] { - isEntity = true - break - } - } - if !isalnum(s[endEntityPos]) && s[endEntityPos] != '&' && s[endEntityPos] != '#' { - break - } - endEntityPos++ - } - } - - return isEntity, endEntityPos -} - -func escLink(w io.Writer, text []byte) { - unesc := html.UnescapeString(string(text)) - escapeHTML(w, []byte(unesc)) -} diff --git a/vendor/github.com/russross/blackfriday/v2/html.go b/vendor/github.com/russross/blackfriday/v2/html.go deleted file mode 100644 index cb4f26e30..000000000 --- a/vendor/github.com/russross/blackfriday/v2/html.go +++ /dev/null @@ -1,952 +0,0 @@ -// -// Blackfriday Markdown Processor -// Available at http://github.com/russross/blackfriday -// -// Copyright © 2011 Russ Ross <russ@russross.com>. -// Distributed under the Simplified BSD License. -// See README.md for details. -// - -// -// -// HTML rendering backend -// -// - -package blackfriday - -import ( - "bytes" - "fmt" - "io" - "regexp" - "strings" -) - -// HTMLFlags control optional behavior of HTML renderer. -type HTMLFlags int - -// HTML renderer configuration options. -const ( - HTMLFlagsNone HTMLFlags = 0 - SkipHTML HTMLFlags = 1 << iota // Skip preformatted HTML blocks - SkipImages // Skip embedded images - SkipLinks // Skip all links - Safelink // Only link to trusted protocols - NofollowLinks // Only link with rel="nofollow" - NoreferrerLinks // Only link with rel="noreferrer" - NoopenerLinks // Only link with rel="noopener" - HrefTargetBlank // Add a blank target - CompletePage // Generate a complete HTML page - UseXHTML // Generate XHTML output instead of HTML - FootnoteReturnLinks // Generate a link at the end of a footnote to return to the source - Smartypants // Enable smart punctuation substitutions - SmartypantsFractions // Enable smart fractions (with Smartypants) - SmartypantsDashes // Enable smart dashes (with Smartypants) - SmartypantsLatexDashes // Enable LaTeX-style dashes (with Smartypants) - SmartypantsAngledQuotes // Enable angled double quotes (with Smartypants) for double quotes rendering - SmartypantsQuotesNBSP // Enable « French guillemets » (with Smartypants) - TOC // Generate a table of contents -) - -var ( - htmlTagRe = regexp.MustCompile("(?i)^" + htmlTag) -) - -const ( - htmlTag = "(?:" + openTag + "|" + closeTag + "|" + htmlComment + "|" + - processingInstruction + "|" + declaration + "|" + cdata + ")" - closeTag = "</" + tagName + "\\s*[>]" - openTag = "<" + tagName + attribute + "*" + "\\s*/?>" - attribute = "(?:" + "\\s+" + attributeName + attributeValueSpec + "?)" - attributeValue = "(?:" + unquotedValue + "|" + singleQuotedValue + "|" + doubleQuotedValue + ")" - attributeValueSpec = "(?:" + "\\s*=" + "\\s*" + attributeValue + ")" - attributeName = "[a-zA-Z_:][a-zA-Z0-9:._-]*" - cdata = "<!\\[CDATA\\[[\\s\\S]*?\\]\\]>" - declaration = "<![A-Z]+" + "\\s+[^>]*>" - doubleQuotedValue = "\"[^\"]*\"" - htmlComment = "<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->" - processingInstruction = "[<][?].*?[?][>]" - singleQuotedValue = "'[^']*'" - tagName = "[A-Za-z][A-Za-z0-9-]*" - unquotedValue = "[^\"'=<>`\\x00-\\x20]+" -) - -// HTMLRendererParameters is a collection of supplementary parameters tweaking -// the behavior of various parts of HTML renderer. -type HTMLRendererParameters struct { - // Prepend this text to each relative URL. - AbsolutePrefix string - // Add this text to each footnote anchor, to ensure uniqueness. - FootnoteAnchorPrefix string - // Show this text inside the <a> tag for a footnote return link, if the - // HTML_FOOTNOTE_RETURN_LINKS flag is enabled. If blank, the string - // <sup>[return]</sup> is used. - FootnoteReturnLinkContents string - // If set, add this text to the front of each Heading ID, to ensure - // uniqueness. - HeadingIDPrefix string - // If set, add this text to the back of each Heading ID, to ensure uniqueness. - HeadingIDSuffix string - // Increase heading levels: if the offset is 1, <h1> becomes <h2> etc. - // Negative offset is also valid. - // Resulting levels are clipped between 1 and 6. - HeadingLevelOffset int - - Title string // Document title (used if CompletePage is set) - CSS string // Optional CSS file URL (used if CompletePage is set) - Icon string // Optional icon file URL (used if CompletePage is set) - - Flags HTMLFlags // Flags allow customizing this renderer's behavior -} - -// HTMLRenderer is a type that implements the Renderer interface for HTML output. -// -// Do not create this directly, instead use the NewHTMLRenderer function. -type HTMLRenderer struct { - HTMLRendererParameters - - closeTag string // how to end singleton tags: either " />" or ">" - - // Track heading IDs to prevent ID collision in a single generation. - headingIDs map[string]int - - lastOutputLen int - disableTags int - - sr *SPRenderer -} - -const ( - xhtmlClose = " />" - htmlClose = ">" -) - -// NewHTMLRenderer creates and configures an HTMLRenderer object, which -// satisfies the Renderer interface. -func NewHTMLRenderer(params HTMLRendererParameters) *HTMLRenderer { - // configure the rendering engine - closeTag := htmlClose - if params.Flags&UseXHTML != 0 { - closeTag = xhtmlClose - } - - if params.FootnoteReturnLinkContents == "" { - // U+FE0E is VARIATION SELECTOR-15. - // It suppresses automatic emoji presentation of the preceding - // U+21A9 LEFTWARDS ARROW WITH HOOK on iOS and iPadOS. - params.FootnoteReturnLinkContents = "<span aria-label='Return'>↩\ufe0e</span>" - } - - return &HTMLRenderer{ - HTMLRendererParameters: params, - - closeTag: closeTag, - headingIDs: make(map[string]int), - - sr: NewSmartypantsRenderer(params.Flags), - } -} - -func isHTMLTag(tag []byte, tagname string) bool { - found, _ := findHTMLTagPos(tag, tagname) - return found -} - -// Look for a character, but ignore it when it's in any kind of quotes, it -// might be JavaScript -func skipUntilCharIgnoreQuotes(html []byte, start int, char byte) int { - inSingleQuote := false - inDoubleQuote := false - inGraveQuote := false - i := start - for i < len(html) { - switch { - case html[i] == char && !inSingleQuote && !inDoubleQuote && !inGraveQuote: - return i - case html[i] == '\'': - inSingleQuote = !inSingleQuote - case html[i] == '"': - inDoubleQuote = !inDoubleQuote - case html[i] == '`': - inGraveQuote = !inGraveQuote - } - i++ - } - return start -} - -func findHTMLTagPos(tag []byte, tagname string) (bool, int) { - i := 0 - if i < len(tag) && tag[0] != '<' { - return false, -1 - } - i++ - i = skipSpace(tag, i) - - if i < len(tag) && tag[i] == '/' { - i++ - } - - i = skipSpace(tag, i) - j := 0 - for ; i < len(tag); i, j = i+1, j+1 { - if j >= len(tagname) { - break - } - - if strings.ToLower(string(tag[i]))[0] != tagname[j] { - return false, -1 - } - } - - if i == len(tag) { - return false, -1 - } - - rightAngle := skipUntilCharIgnoreQuotes(tag, i, '>') - if rightAngle >= i { - return true, rightAngle - } - - return false, -1 -} - -func skipSpace(tag []byte, i int) int { - for i < len(tag) && isspace(tag[i]) { - i++ - } - return i -} - -func isRelativeLink(link []byte) (yes bool) { - // a tag begin with '#' - if link[0] == '#' { - return true - } - - // link begin with '/' but not '//', the second maybe a protocol relative link - if len(link) >= 2 && link[0] == '/' && link[1] != '/' { - return true - } - - // only the root '/' - if len(link) == 1 && link[0] == '/' { - return true - } - - // current directory : begin with "./" - if bytes.HasPrefix(link, []byte("./")) { - return true - } - - // parent directory : begin with "../" - if bytes.HasPrefix(link, []byte("../")) { - return true - } - - return false -} - -func (r *HTMLRenderer) ensureUniqueHeadingID(id string) string { - for count, found := r.headingIDs[id]; found; count, found = r.headingIDs[id] { - tmp := fmt.Sprintf("%s-%d", id, count+1) - - if _, tmpFound := r.headingIDs[tmp]; !tmpFound { - r.headingIDs[id] = count + 1 - id = tmp - } else { - id = id + "-1" - } - } - - if _, found := r.headingIDs[id]; !found { - r.headingIDs[id] = 0 - } - - return id -} - -func (r *HTMLRenderer) addAbsPrefix(link []byte) []byte { - if r.AbsolutePrefix != "" && isRelativeLink(link) && link[0] != '.' { - newDest := r.AbsolutePrefix - if link[0] != '/' { - newDest += "/" - } - newDest += string(link) - return []byte(newDest) - } - return link -} - -func appendLinkAttrs(attrs []string, flags HTMLFlags, link []byte) []string { - if isRelativeLink(link) { - return attrs - } - val := []string{} - if flags&NofollowLinks != 0 { - val = append(val, "nofollow") - } - if flags&NoreferrerLinks != 0 { - val = append(val, "noreferrer") - } - if flags&NoopenerLinks != 0 { - val = append(val, "noopener") - } - if flags&HrefTargetBlank != 0 { - attrs = append(attrs, "target=\"_blank\"") - } - if len(val) == 0 { - return attrs - } - attr := fmt.Sprintf("rel=%q", strings.Join(val, " ")) - return append(attrs, attr) -} - -func isMailto(link []byte) bool { - return bytes.HasPrefix(link, []byte("mailto:")) -} - -func needSkipLink(flags HTMLFlags, dest []byte) bool { - if flags&SkipLinks != 0 { - return true - } - return flags&Safelink != 0 && !isSafeLink(dest) && !isMailto(dest) -} - -func isSmartypantable(node *Node) bool { - pt := node.Parent.Type - return pt != Link && pt != CodeBlock && pt != Code -} - -func appendLanguageAttr(attrs []string, info []byte) []string { - if len(info) == 0 { - return attrs - } - endOfLang := bytes.IndexAny(info, "\t ") - if endOfLang < 0 { - endOfLang = len(info) - } - return append(attrs, fmt.Sprintf("class=\"language-%s\"", info[:endOfLang])) -} - -func (r *HTMLRenderer) tag(w io.Writer, name []byte, attrs []string) { - w.Write(name) - if len(attrs) > 0 { - w.Write(spaceBytes) - w.Write([]byte(strings.Join(attrs, " "))) - } - w.Write(gtBytes) - r.lastOutputLen = 1 -} - -func footnoteRef(prefix string, node *Node) []byte { - urlFrag := prefix + string(slugify(node.Destination)) - anchor := fmt.Sprintf(`<a href="#fn:%s">%d</a>`, urlFrag, node.NoteID) - return []byte(fmt.Sprintf(`<sup class="footnote-ref" id="fnref:%s">%s</sup>`, urlFrag, anchor)) -} - -func footnoteItem(prefix string, slug []byte) []byte { - return []byte(fmt.Sprintf(`<li id="fn:%s%s">`, prefix, slug)) -} - -func footnoteReturnLink(prefix, returnLink string, slug []byte) []byte { - const format = ` <a class="footnote-return" href="#fnref:%s%s">%s</a>` - return []byte(fmt.Sprintf(format, prefix, slug, returnLink)) -} - -func itemOpenCR(node *Node) bool { - if node.Prev == nil { - return false - } - ld := node.Parent.ListData - return !ld.Tight && ld.ListFlags&ListTypeDefinition == 0 -} - -func skipParagraphTags(node *Node) bool { - grandparent := node.Parent.Parent - if grandparent == nil || grandparent.Type != List { - return false - } - tightOrTerm := grandparent.Tight || node.Parent.ListFlags&ListTypeTerm != 0 - return grandparent.Type == List && tightOrTerm -} - -func cellAlignment(align CellAlignFlags) string { - switch align { - case TableAlignmentLeft: - return "left" - case TableAlignmentRight: - return "right" - case TableAlignmentCenter: - return "center" - default: - return "" - } -} - -func (r *HTMLRenderer) out(w io.Writer, text []byte) { - if r.disableTags > 0 { - w.Write(htmlTagRe.ReplaceAll(text, []byte{})) - } else { - w.Write(text) - } - r.lastOutputLen = len(text) -} - -func (r *HTMLRenderer) cr(w io.Writer) { - if r.lastOutputLen > 0 { - r.out(w, nlBytes) - } -} - -var ( - nlBytes = []byte{'\n'} - gtBytes = []byte{'>'} - spaceBytes = []byte{' '} -) - -var ( - brTag = []byte("<br>") - brXHTMLTag = []byte("<br />") - emTag = []byte("<em>") - emCloseTag = []byte("</em>") - strongTag = []byte("<strong>") - strongCloseTag = []byte("</strong>") - delTag = []byte("<del>") - delCloseTag = []byte("</del>") - ttTag = []byte("<tt>") - ttCloseTag = []byte("</tt>") - aTag = []byte("<a") - aCloseTag = []byte("</a>") - preTag = []byte("<pre>") - preCloseTag = []byte("</pre>") - codeTag = []byte("<code>") - codeCloseTag = []byte("</code>") - pTag = []byte("<p>") - pCloseTag = []byte("</p>") - blockquoteTag = []byte("<blockquote>") - blockquoteCloseTag = []byte("</blockquote>") - hrTag = []byte("<hr>") - hrXHTMLTag = []byte("<hr />") - ulTag = []byte("<ul>") - ulCloseTag = []byte("</ul>") - olTag = []byte("<ol>") - olCloseTag = []byte("</ol>") - dlTag = []byte("<dl>") - dlCloseTag = []byte("</dl>") - liTag = []byte("<li>") - liCloseTag = []byte("</li>") - ddTag = []byte("<dd>") - ddCloseTag = []byte("</dd>") - dtTag = []byte("<dt>") - dtCloseTag = []byte("</dt>") - tableTag = []byte("<table>") - tableCloseTag = []byte("</table>") - tdTag = []byte("<td") - tdCloseTag = []byte("</td>") - thTag = []byte("<th") - thCloseTag = []byte("</th>") - theadTag = []byte("<thead>") - theadCloseTag = []byte("</thead>") - tbodyTag = []byte("<tbody>") - tbodyCloseTag = []byte("</tbody>") - trTag = []byte("<tr>") - trCloseTag = []byte("</tr>") - h1Tag = []byte("<h1") - h1CloseTag = []byte("</h1>") - h2Tag = []byte("<h2") - h2CloseTag = []byte("</h2>") - h3Tag = []byte("<h3") - h3CloseTag = []byte("</h3>") - h4Tag = []byte("<h4") - h4CloseTag = []byte("</h4>") - h5Tag = []byte("<h5") - h5CloseTag = []byte("</h5>") - h6Tag = []byte("<h6") - h6CloseTag = []byte("</h6>") - - footnotesDivBytes = []byte("\n<div class=\"footnotes\">\n\n") - footnotesCloseDivBytes = []byte("\n</div>\n") -) - -func headingTagsFromLevel(level int) ([]byte, []byte) { - if level <= 1 { - return h1Tag, h1CloseTag - } - switch level { - case 2: - return h2Tag, h2CloseTag - case 3: - return h3Tag, h3CloseTag - case 4: - return h4Tag, h4CloseTag - case 5: - return h5Tag, h5CloseTag - } - return h6Tag, h6CloseTag -} - -func (r *HTMLRenderer) outHRTag(w io.Writer) { - if r.Flags&UseXHTML == 0 { - r.out(w, hrTag) - } else { - r.out(w, hrXHTMLTag) - } -} - -// RenderNode is a default renderer of a single node of a syntax tree. For -// block nodes it will be called twice: first time with entering=true, second -// time with entering=false, so that it could know when it's working on an open -// tag and when on close. It writes the result to w. -// -// The return value is a way to tell the calling walker to adjust its walk -// pattern: e.g. it can terminate the traversal by returning Terminate. Or it -// can ask the walker to skip a subtree of this node by returning SkipChildren. -// The typical behavior is to return GoToNext, which asks for the usual -// traversal to the next node. -func (r *HTMLRenderer) RenderNode(w io.Writer, node *Node, entering bool) WalkStatus { - attrs := []string{} - switch node.Type { - case Text: - if r.Flags&Smartypants != 0 { - var tmp bytes.Buffer - escapeHTML(&tmp, node.Literal) - r.sr.Process(w, tmp.Bytes()) - } else { - if node.Parent.Type == Link { - escLink(w, node.Literal) - } else { - escapeHTML(w, node.Literal) - } - } - case Softbreak: - r.cr(w) - // TODO: make it configurable via out(renderer.softbreak) - case Hardbreak: - if r.Flags&UseXHTML == 0 { - r.out(w, brTag) - } else { - r.out(w, brXHTMLTag) - } - r.cr(w) - case Emph: - if entering { - r.out(w, emTag) - } else { - r.out(w, emCloseTag) - } - case Strong: - if entering { - r.out(w, strongTag) - } else { - r.out(w, strongCloseTag) - } - case Del: - if entering { - r.out(w, delTag) - } else { - r.out(w, delCloseTag) - } - case HTMLSpan: - if r.Flags&SkipHTML != 0 { - break - } - r.out(w, node.Literal) - case Link: - // mark it but don't link it if it is not a safe link: no smartypants - dest := node.LinkData.Destination - if needSkipLink(r.Flags, dest) { - if entering { - r.out(w, ttTag) - } else { - r.out(w, ttCloseTag) - } - } else { - if entering { - dest = r.addAbsPrefix(dest) - var hrefBuf bytes.Buffer - hrefBuf.WriteString("href=\"") - escLink(&hrefBuf, dest) - hrefBuf.WriteByte('"') - attrs = append(attrs, hrefBuf.String()) - if node.NoteID != 0 { - r.out(w, footnoteRef(r.FootnoteAnchorPrefix, node)) - break - } - attrs = appendLinkAttrs(attrs, r.Flags, dest) - if len(node.LinkData.Title) > 0 { - var titleBuff bytes.Buffer - titleBuff.WriteString("title=\"") - escapeHTML(&titleBuff, node.LinkData.Title) - titleBuff.WriteByte('"') - attrs = append(attrs, titleBuff.String()) - } - r.tag(w, aTag, attrs) - } else { - if node.NoteID != 0 { - break - } - r.out(w, aCloseTag) - } - } - case Image: - if r.Flags&SkipImages != 0 { - return SkipChildren - } - if entering { - dest := node.LinkData.Destination - dest = r.addAbsPrefix(dest) - if r.disableTags == 0 { - //if options.safe && potentiallyUnsafe(dest) { - //out(w, `<img src="" alt="`) - //} else { - r.out(w, []byte(`<img src="`)) - escLink(w, dest) - r.out(w, []byte(`" alt="`)) - //} - } - r.disableTags++ - } else { - r.disableTags-- - if r.disableTags == 0 { - if node.LinkData.Title != nil { - r.out(w, []byte(`" title="`)) - escapeHTML(w, node.LinkData.Title) - } - r.out(w, []byte(`" />`)) - } - } - case Code: - r.out(w, codeTag) - escapeAllHTML(w, node.Literal) - r.out(w, codeCloseTag) - case Document: - break - case Paragraph: - if skipParagraphTags(node) { - break - } - if entering { - // TODO: untangle this clusterfuck about when the newlines need - // to be added and when not. - if node.Prev != nil { - switch node.Prev.Type { - case HTMLBlock, List, Paragraph, Heading, CodeBlock, BlockQuote, HorizontalRule: - r.cr(w) - } - } - if node.Parent.Type == BlockQuote && node.Prev == nil { - r.cr(w) - } - r.out(w, pTag) - } else { - r.out(w, pCloseTag) - if !(node.Parent.Type == Item && node.Next == nil) { - r.cr(w) - } - } - case BlockQuote: - if entering { - r.cr(w) - r.out(w, blockquoteTag) - } else { - r.out(w, blockquoteCloseTag) - r.cr(w) - } - case HTMLBlock: - if r.Flags&SkipHTML != 0 { - break - } - r.cr(w) - r.out(w, node.Literal) - r.cr(w) - case Heading: - headingLevel := r.HTMLRendererParameters.HeadingLevelOffset + node.Level - openTag, closeTag := headingTagsFromLevel(headingLevel) - if entering { - if node.IsTitleblock { - attrs = append(attrs, `class="title"`) - } - if node.HeadingID != "" { - id := r.ensureUniqueHeadingID(node.HeadingID) - if r.HeadingIDPrefix != "" { - id = r.HeadingIDPrefix + id - } - if r.HeadingIDSuffix != "" { - id = id + r.HeadingIDSuffix - } - attrs = append(attrs, fmt.Sprintf(`id="%s"`, id)) - } - r.cr(w) - r.tag(w, openTag, attrs) - } else { - r.out(w, closeTag) - if !(node.Parent.Type == Item && node.Next == nil) { - r.cr(w) - } - } - case HorizontalRule: - r.cr(w) - r.outHRTag(w) - r.cr(w) - case List: - openTag := ulTag - closeTag := ulCloseTag - if node.ListFlags&ListTypeOrdered != 0 { - openTag = olTag - closeTag = olCloseTag - } - if node.ListFlags&ListTypeDefinition != 0 { - openTag = dlTag - closeTag = dlCloseTag - } - if entering { - if node.IsFootnotesList { - r.out(w, footnotesDivBytes) - r.outHRTag(w) - r.cr(w) - } - r.cr(w) - if node.Parent.Type == Item && node.Parent.Parent.Tight { - r.cr(w) - } - r.tag(w, openTag[:len(openTag)-1], attrs) - r.cr(w) - } else { - r.out(w, closeTag) - //cr(w) - //if node.parent.Type != Item { - // cr(w) - //} - if node.Parent.Type == Item && node.Next != nil { - r.cr(w) - } - if node.Parent.Type == Document || node.Parent.Type == BlockQuote { - r.cr(w) - } - if node.IsFootnotesList { - r.out(w, footnotesCloseDivBytes) - } - } - case Item: - openTag := liTag - closeTag := liCloseTag - if node.ListFlags&ListTypeDefinition != 0 { - openTag = ddTag - closeTag = ddCloseTag - } - if node.ListFlags&ListTypeTerm != 0 { - openTag = dtTag - closeTag = dtCloseTag - } - if entering { - if itemOpenCR(node) { - r.cr(w) - } - if node.ListData.RefLink != nil { - slug := slugify(node.ListData.RefLink) - r.out(w, footnoteItem(r.FootnoteAnchorPrefix, slug)) - break - } - r.out(w, openTag) - } else { - if node.ListData.RefLink != nil { - slug := slugify(node.ListData.RefLink) - if r.Flags&FootnoteReturnLinks != 0 { - r.out(w, footnoteReturnLink(r.FootnoteAnchorPrefix, r.FootnoteReturnLinkContents, slug)) - } - } - r.out(w, closeTag) - r.cr(w) - } - case CodeBlock: - attrs = appendLanguageAttr(attrs, node.Info) - r.cr(w) - r.out(w, preTag) - r.tag(w, codeTag[:len(codeTag)-1], attrs) - escapeAllHTML(w, node.Literal) - r.out(w, codeCloseTag) - r.out(w, preCloseTag) - if node.Parent.Type != Item { - r.cr(w) - } - case Table: - if entering { - r.cr(w) - r.out(w, tableTag) - } else { - r.out(w, tableCloseTag) - r.cr(w) - } - case TableCell: - openTag := tdTag - closeTag := tdCloseTag - if node.IsHeader { - openTag = thTag - closeTag = thCloseTag - } - if entering { - align := cellAlignment(node.Align) - if align != "" { - attrs = append(attrs, fmt.Sprintf(`align="%s"`, align)) - } - if node.Prev == nil { - r.cr(w) - } - r.tag(w, openTag, attrs) - } else { - r.out(w, closeTag) - r.cr(w) - } - case TableHead: - if entering { - r.cr(w) - r.out(w, theadTag) - } else { - r.out(w, theadCloseTag) - r.cr(w) - } - case TableBody: - if entering { - r.cr(w) - r.out(w, tbodyTag) - // XXX: this is to adhere to a rather silly test. Should fix test. - if node.FirstChild == nil { - r.cr(w) - } - } else { - r.out(w, tbodyCloseTag) - r.cr(w) - } - case TableRow: - if entering { - r.cr(w) - r.out(w, trTag) - } else { - r.out(w, trCloseTag) - r.cr(w) - } - default: - panic("Unknown node type " + node.Type.String()) - } - return GoToNext -} - -// RenderHeader writes HTML document preamble and TOC if requested. -func (r *HTMLRenderer) RenderHeader(w io.Writer, ast *Node) { - r.writeDocumentHeader(w) - if r.Flags&TOC != 0 { - r.writeTOC(w, ast) - } -} - -// RenderFooter writes HTML document footer. -func (r *HTMLRenderer) RenderFooter(w io.Writer, ast *Node) { - if r.Flags&CompletePage == 0 { - return - } - io.WriteString(w, "\n</body>\n</html>\n") -} - -func (r *HTMLRenderer) writeDocumentHeader(w io.Writer) { - if r.Flags&CompletePage == 0 { - return - } - ending := "" - if r.Flags&UseXHTML != 0 { - io.WriteString(w, "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" ") - io.WriteString(w, "\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n") - io.WriteString(w, "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n") - ending = " /" - } else { - io.WriteString(w, "<!DOCTYPE html>\n") - io.WriteString(w, "<html>\n") - } - io.WriteString(w, "<head>\n") - io.WriteString(w, " <title>") - if r.Flags&Smartypants != 0 { - r.sr.Process(w, []byte(r.Title)) - } else { - escapeHTML(w, []byte(r.Title)) - } - io.WriteString(w, "</title>\n") - io.WriteString(w, " <meta name=\"GENERATOR\" content=\"Blackfriday Markdown Processor v") - io.WriteString(w, Version) - io.WriteString(w, "\"") - io.WriteString(w, ending) - io.WriteString(w, ">\n") - io.WriteString(w, " <meta charset=\"utf-8\"") - io.WriteString(w, ending) - io.WriteString(w, ">\n") - if r.CSS != "" { - io.WriteString(w, " <link rel=\"stylesheet\" type=\"text/css\" href=\"") - escapeHTML(w, []byte(r.CSS)) - io.WriteString(w, "\"") - io.WriteString(w, ending) - io.WriteString(w, ">\n") - } - if r.Icon != "" { - io.WriteString(w, " <link rel=\"icon\" type=\"image/x-icon\" href=\"") - escapeHTML(w, []byte(r.Icon)) - io.WriteString(w, "\"") - io.WriteString(w, ending) - io.WriteString(w, ">\n") - } - io.WriteString(w, "</head>\n") - io.WriteString(w, "<body>\n\n") -} - -func (r *HTMLRenderer) writeTOC(w io.Writer, ast *Node) { - buf := bytes.Buffer{} - - inHeading := false - tocLevel := 0 - headingCount := 0 - - ast.Walk(func(node *Node, entering bool) WalkStatus { - if node.Type == Heading && !node.HeadingData.IsTitleblock { - inHeading = entering - if entering { - node.HeadingID = fmt.Sprintf("toc_%d", headingCount) - if node.Level == tocLevel { - buf.WriteString("</li>\n\n<li>") - } else if node.Level < tocLevel { - for node.Level < tocLevel { - tocLevel-- - buf.WriteString("</li>\n</ul>") - } - buf.WriteString("</li>\n\n<li>") - } else { - for node.Level > tocLevel { - tocLevel++ - buf.WriteString("\n<ul>\n<li>") - } - } - - fmt.Fprintf(&buf, `<a href="#toc_%d">`, headingCount) - headingCount++ - } else { - buf.WriteString("</a>") - } - return GoToNext - } - - if inHeading { - return r.RenderNode(&buf, node, entering) - } - - return GoToNext - }) - - for ; tocLevel > 0; tocLevel-- { - buf.WriteString("</li>\n</ul>") - } - - if buf.Len() > 0 { - io.WriteString(w, "<nav>\n") - w.Write(buf.Bytes()) - io.WriteString(w, "\n\n</nav>\n") - } - r.lastOutputLen = buf.Len() -} diff --git a/vendor/github.com/russross/blackfriday/v2/inline.go b/vendor/github.com/russross/blackfriday/v2/inline.go deleted file mode 100644 index d45bd9417..000000000 --- a/vendor/github.com/russross/blackfriday/v2/inline.go +++ /dev/null @@ -1,1228 +0,0 @@ -// -// Blackfriday Markdown Processor -// Available at http://github.com/russross/blackfriday -// -// Copyright © 2011 Russ Ross <russ@russross.com>. -// Distributed under the Simplified BSD License. -// See README.md for details. -// - -// -// Functions to parse inline elements. -// - -package blackfriday - -import ( - "bytes" - "regexp" - "strconv" -) - -var ( - urlRe = `((https?|ftp):\/\/|\/)[-A-Za-z0-9+&@#\/%?=~_|!:,.;\(\)]+` - anchorRe = regexp.MustCompile(`^(<a\shref="` + urlRe + `"(\stitle="[^"<>]+")?\s?>` + urlRe + `<\/a>)`) - - // https://www.w3.org/TR/html5/syntax.html#character-references - // highest unicode code point in 17 planes (2^20): 1,114,112d = - // 7 dec digits or 6 hex digits - // named entity references can be 2-31 characters with stuff like &lt; - // at one end and &CounterClockwiseContourIntegral; at the other. There - // are also sometimes numbers at the end, although this isn't inherent - // in the specification; there are never numbers anywhere else in - // current character references, though; see &frac34; and &blk12;, etc. - // https://www.w3.org/TR/html5/syntax.html#named-character-references - // - // entity := "&" (named group | number ref) ";" - // named group := [a-zA-Z]{2,31}[0-9]{0,2} - // number ref := "#" (dec ref | hex ref) - // dec ref := [0-9]{1,7} - // hex ref := ("x" | "X") [0-9a-fA-F]{1,6} - htmlEntityRe = regexp.MustCompile(`&([a-zA-Z]{2,31}[0-9]{0,2}|#([0-9]{1,7}|[xX][0-9a-fA-F]{1,6}));`) -) - -// Functions to parse text within a block -// Each function returns the number of chars taken care of -// data is the complete block being rendered -// offset is the number of valid chars before the current cursor - -func (p *Markdown) inline(currBlock *Node, data []byte) { - // handlers might call us recursively: enforce a maximum depth - if p.nesting >= p.maxNesting || len(data) == 0 { - return - } - p.nesting++ - beg, end := 0, 0 - for end < len(data) { - handler := p.inlineCallback[data[end]] - if handler != nil { - if consumed, node := handler(p, data, end); consumed == 0 { - // No action from the callback. - end++ - } else { - // Copy inactive chars into the output. - currBlock.AppendChild(text(data[beg:end])) - if node != nil { - currBlock.AppendChild(node) - } - // Skip past whatever the callback used. - beg = end + consumed - end = beg - } - } else { - end++ - } - } - if beg < len(data) { - if data[end-1] == '\n' { - end-- - } - currBlock.AppendChild(text(data[beg:end])) - } - p.nesting-- -} - -// single and double emphasis parsing -func emphasis(p *Markdown, data []byte, offset int) (int, *Node) { - data = data[offset:] - c := data[0] - - if len(data) > 2 && data[1] != c { - // whitespace cannot follow an opening emphasis; - // strikethrough only takes two characters '~~' - if c == '~' || isspace(data[1]) { - return 0, nil - } - ret, node := helperEmphasis(p, data[1:], c) - if ret == 0 { - return 0, nil - } - - return ret + 1, node - } - - if len(data) > 3 && data[1] == c && data[2] != c { - if isspace(data[2]) { - return 0, nil - } - ret, node := helperDoubleEmphasis(p, data[2:], c) - if ret == 0 { - return 0, nil - } - - return ret + 2, node - } - - if len(data) > 4 && data[1] == c && data[2] == c && data[3] != c { - if c == '~' || isspace(data[3]) { - return 0, nil - } - ret, node := helperTripleEmphasis(p, data, 3, c) - if ret == 0 { - return 0, nil - } - - return ret + 3, node - } - - return 0, nil -} - -func codeSpan(p *Markdown, data []byte, offset int) (int, *Node) { - data = data[offset:] - - nb := 0 - - // count the number of backticks in the delimiter - for nb < len(data) && data[nb] == '`' { - nb++ - } - - // find the next delimiter - i, end := 0, 0 - for end = nb; end < len(data) && i < nb; end++ { - if data[end] == '`' { - i++ - } else { - i = 0 - } - } - - // no matching delimiter? - if i < nb && end >= len(data) { - return 0, nil - } - - // trim outside whitespace - fBegin := nb - for fBegin < end && data[fBegin] == ' ' { - fBegin++ - } - - fEnd := end - nb - for fEnd > fBegin && data[fEnd-1] == ' ' { - fEnd-- - } - - // render the code span - if fBegin != fEnd { - code := NewNode(Code) - code.Literal = data[fBegin:fEnd] - return end, code - } - - return end, nil -} - -// newline preceded by two spaces becomes <br> -func maybeLineBreak(p *Markdown, data []byte, offset int) (int, *Node) { - origOffset := offset - for offset < len(data) && data[offset] == ' ' { - offset++ - } - - if offset < len(data) && data[offset] == '\n' { - if offset-origOffset >= 2 { - return offset - origOffset + 1, NewNode(Hardbreak) - } - return offset - origOffset, nil - } - return 0, nil -} - -// newline without two spaces works when HardLineBreak is enabled -func lineBreak(p *Markdown, data []byte, offset int) (int, *Node) { - if p.extensions&HardLineBreak != 0 { - return 1, NewNode(Hardbreak) - } - return 0, nil -} - -type linkType int - -const ( - linkNormal linkType = iota - linkImg - linkDeferredFootnote - linkInlineFootnote -) - -func isReferenceStyleLink(data []byte, pos int, t linkType) bool { - if t == linkDeferredFootnote { - return false - } - return pos < len(data)-1 && data[pos] == '[' && data[pos+1] != '^' -} - -func maybeImage(p *Markdown, data []byte, offset int) (int, *Node) { - if offset < len(data)-1 && data[offset+1] == '[' { - return link(p, data, offset) - } - return 0, nil -} - -func maybeInlineFootnote(p *Markdown, data []byte, offset int) (int, *Node) { - if offset < len(data)-1 && data[offset+1] == '[' { - return link(p, data, offset) - } - return 0, nil -} - -// '[': parse a link or an image or a footnote -func link(p *Markdown, data []byte, offset int) (int, *Node) { - // no links allowed inside regular links, footnote, and deferred footnotes - if p.insideLink && (offset > 0 && data[offset-1] == '[' || len(data)-1 > offset && data[offset+1] == '^') { - return 0, nil - } - - var t linkType - switch { - // special case: ![^text] == deferred footnote (that follows something with - // an exclamation point) - case p.extensions&Footnotes != 0 && len(data)-1 > offset && data[offset+1] == '^': - t = linkDeferredFootnote - // ![alt] == image - case offset >= 0 && data[offset] == '!': - t = linkImg - offset++ - // ^[text] == inline footnote - // [^refId] == deferred footnote - case p.extensions&Footnotes != 0: - if offset >= 0 && data[offset] == '^' { - t = linkInlineFootnote - offset++ - } else if len(data)-1 > offset && data[offset+1] == '^' { - t = linkDeferredFootnote - } - // [text] == regular link - default: - t = linkNormal - } - - data = data[offset:] - - var ( - i = 1 - noteID int - title, link, altContent []byte - textHasNl = false - ) - - if t == linkDeferredFootnote { - i++ - } - - // look for the matching closing bracket - for level := 1; level > 0 && i < len(data); i++ { - switch { - case data[i] == '\n': - textHasNl = true - - case isBackslashEscaped(data, i): - continue - - case data[i] == '[': - level++ - - case data[i] == ']': - level-- - if level <= 0 { - i-- // compensate for extra i++ in for loop - } - } - } - - if i >= len(data) { - return 0, nil - } - - txtE := i - i++ - var footnoteNode *Node - - // skip any amount of whitespace or newline - // (this is much more lax than original markdown syntax) - for i < len(data) && isspace(data[i]) { - i++ - } - - // inline style link - switch { - case i < len(data) && data[i] == '(': - // skip initial whitespace - i++ - - for i < len(data) && isspace(data[i]) { - i++ - } - - linkB := i - - // look for link end: ' " ) - findlinkend: - for i < len(data) { - switch { - case data[i] == '\\': - i += 2 - - case data[i] == ')' || data[i] == '\'' || data[i] == '"': - break findlinkend - - default: - i++ - } - } - - if i >= len(data) { - return 0, nil - } - linkE := i - - // look for title end if present - titleB, titleE := 0, 0 - if data[i] == '\'' || data[i] == '"' { - i++ - titleB = i - - findtitleend: - for i < len(data) { - switch { - case data[i] == '\\': - i += 2 - - case data[i] == ')': - break findtitleend - - default: - i++ - } - } - - if i >= len(data) { - return 0, nil - } - - // skip whitespace after title - titleE = i - 1 - for titleE > titleB && isspace(data[titleE]) { - titleE-- - } - - // check for closing quote presence - if data[titleE] != '\'' && data[titleE] != '"' { - titleB, titleE = 0, 0 - linkE = i - } - } - - // remove whitespace at the end of the link - for linkE > linkB && isspace(data[linkE-1]) { - linkE-- - } - - // remove optional angle brackets around the link - if data[linkB] == '<' { - linkB++ - } - if data[linkE-1] == '>' { - linkE-- - } - - // build escaped link and title - if linkE > linkB { - link = data[linkB:linkE] - } - - if titleE > titleB { - title = data[titleB:titleE] - } - - i++ - - // reference style link - case isReferenceStyleLink(data, i, t): - var id []byte - altContentConsidered := false - - // look for the id - i++ - linkB := i - for i < len(data) && data[i] != ']' { - i++ - } - if i >= len(data) { - return 0, nil - } - linkE := i - - // find the reference - if linkB == linkE { - if textHasNl { - var b bytes.Buffer - - for j := 1; j < txtE; j++ { - switch { - case data[j] != '\n': - b.WriteByte(data[j]) - case data[j-1] != ' ': - b.WriteByte(' ') - } - } - - id = b.Bytes() - } else { - id = data[1:txtE] - altContentConsidered = true - } - } else { - id = data[linkB:linkE] - } - - // find the reference with matching id - lr, ok := p.getRef(string(id)) - if !ok { - return 0, nil - } - - // keep link and title from reference - link = lr.link - title = lr.title - if altContentConsidered { - altContent = lr.text - } - i++ - - // shortcut reference style link or reference or inline footnote - default: - var id []byte - - // craft the id - if textHasNl { - var b bytes.Buffer - - for j := 1; j < txtE; j++ { - switch { - case data[j] != '\n': - b.WriteByte(data[j]) - case data[j-1] != ' ': - b.WriteByte(' ') - } - } - - id = b.Bytes() - } else { - if t == linkDeferredFootnote { - id = data[2:txtE] // get rid of the ^ - } else { - id = data[1:txtE] - } - } - - footnoteNode = NewNode(Item) - if t == linkInlineFootnote { - // create a new reference - noteID = len(p.notes) + 1 - - var fragment []byte - if len(id) > 0 { - if len(id) < 16 { - fragment = make([]byte, len(id)) - } else { - fragment = make([]byte, 16) - } - copy(fragment, slugify(id)) - } else { - fragment = append([]byte("footnote-"), []byte(strconv.Itoa(noteID))...) - } - - ref := &reference{ - noteID: noteID, - hasBlock: false, - link: fragment, - title: id, - footnote: footnoteNode, - } - - p.notes = append(p.notes, ref) - - link = ref.link - title = ref.title - } else { - // find the reference with matching id - lr, ok := p.getRef(string(id)) - if !ok { - return 0, nil - } - - if t == linkDeferredFootnote { - lr.noteID = len(p.notes) + 1 - lr.footnote = footnoteNode - p.notes = append(p.notes, lr) - } - - // keep link and title from reference - link = lr.link - // if inline footnote, title == footnote contents - title = lr.title - noteID = lr.noteID - } - - // rewind the whitespace - i = txtE + 1 - } - - var uLink []byte - if t == linkNormal || t == linkImg { - if len(link) > 0 { - var uLinkBuf bytes.Buffer - unescapeText(&uLinkBuf, link) - uLink = uLinkBuf.Bytes() - } - - // links need something to click on and somewhere to go - if len(uLink) == 0 || (t == linkNormal && txtE <= 1) { - return 0, nil - } - } - - // call the relevant rendering function - var linkNode *Node - switch t { - case linkNormal: - linkNode = NewNode(Link) - linkNode.Destination = normalizeURI(uLink) - linkNode.Title = title - if len(altContent) > 0 { - linkNode.AppendChild(text(altContent)) - } else { - // links cannot contain other links, so turn off link parsing - // temporarily and recurse - insideLink := p.insideLink - p.insideLink = true - p.inline(linkNode, data[1:txtE]) - p.insideLink = insideLink - } - - case linkImg: - linkNode = NewNode(Image) - linkNode.Destination = uLink - linkNode.Title = title - linkNode.AppendChild(text(data[1:txtE])) - i++ - - case linkInlineFootnote, linkDeferredFootnote: - linkNode = NewNode(Link) - linkNode.Destination = link - linkNode.Title = title - linkNode.NoteID = noteID - linkNode.Footnote = footnoteNode - if t == linkInlineFootnote { - i++ - } - - default: - return 0, nil - } - - return i, linkNode -} - -func (p *Markdown) inlineHTMLComment(data []byte) int { - if len(data) < 5 { - return 0 - } - if data[0] != '<' || data[1] != '!' || data[2] != '-' || data[3] != '-' { - return 0 - } - i := 5 - // scan for an end-of-comment marker, across lines if necessary - for i < len(data) && !(data[i-2] == '-' && data[i-1] == '-' && data[i] == '>') { - i++ - } - // no end-of-comment marker - if i >= len(data) { - return 0 - } - return i + 1 -} - -func stripMailto(link []byte) []byte { - if bytes.HasPrefix(link, []byte("mailto://")) { - return link[9:] - } else if bytes.HasPrefix(link, []byte("mailto:")) { - return link[7:] - } else { - return link - } -} - -// autolinkType specifies a kind of autolink that gets detected. -type autolinkType int - -// These are the possible flag values for the autolink renderer. -const ( - notAutolink autolinkType = iota - normalAutolink - emailAutolink -) - -// '<' when tags or autolinks are allowed -func leftAngle(p *Markdown, data []byte, offset int) (int, *Node) { - data = data[offset:] - altype, end := tagLength(data) - if size := p.inlineHTMLComment(data); size > 0 { - end = size - } - if end > 2 { - if altype != notAutolink { - var uLink bytes.Buffer - unescapeText(&uLink, data[1:end+1-2]) - if uLink.Len() > 0 { - link := uLink.Bytes() - node := NewNode(Link) - node.Destination = link - if altype == emailAutolink { - node.Destination = append([]byte("mailto:"), link...) - } - node.AppendChild(text(stripMailto(link))) - return end, node - } - } else { - htmlTag := NewNode(HTMLSpan) - htmlTag.Literal = data[:end] - return end, htmlTag - } - } - - return end, nil -} - -// '\\' backslash escape -var escapeChars = []byte("\\`*_{}[]()#+-.!:|&<>~") - -func escape(p *Markdown, data []byte, offset int) (int, *Node) { - data = data[offset:] - - if len(data) > 1 { - if p.extensions&BackslashLineBreak != 0 && data[1] == '\n' { - return 2, NewNode(Hardbreak) - } - if bytes.IndexByte(escapeChars, data[1]) < 0 { - return 0, nil - } - - return 2, text(data[1:2]) - } - - return 2, nil -} - -func unescapeText(ob *bytes.Buffer, src []byte) { - i := 0 - for i < len(src) { - org := i - for i < len(src) && src[i] != '\\' { - i++ - } - - if i > org { - ob.Write(src[org:i]) - } - - if i+1 >= len(src) { - break - } - - ob.WriteByte(src[i+1]) - i += 2 - } -} - -// '&' escaped when it doesn't belong to an entity -// valid entities are assumed to be anything matching &#?[A-Za-z0-9]+; -func entity(p *Markdown, data []byte, offset int) (int, *Node) { - data = data[offset:] - - end := 1 - - if end < len(data) && data[end] == '#' { - end++ - } - - for end < len(data) && isalnum(data[end]) { - end++ - } - - if end < len(data) && data[end] == ';' { - end++ // real entity - } else { - return 0, nil // lone '&' - } - - ent := data[:end] - // undo &amp; escaping or it will be converted to &amp;amp; by another - // escaper in the renderer - if bytes.Equal(ent, []byte("&amp;")) { - ent = []byte{'&'} - } - - return end, text(ent) -} - -func linkEndsWithEntity(data []byte, linkEnd int) bool { - entityRanges := htmlEntityRe.FindAllIndex(data[:linkEnd], -1) - return entityRanges != nil && entityRanges[len(entityRanges)-1][1] == linkEnd -} - -// hasPrefixCaseInsensitive is a custom implementation of -// strings.HasPrefix(strings.ToLower(s), prefix) -// we rolled our own because ToLower pulls in a huge machinery of lowercasing -// anything from Unicode and that's very slow. Since this func will only be -// used on ASCII protocol prefixes, we can take shortcuts. -func hasPrefixCaseInsensitive(s, prefix []byte) bool { - if len(s) < len(prefix) { - return false - } - delta := byte('a' - 'A') - for i, b := range prefix { - if b != s[i] && b != s[i]+delta { - return false - } - } - return true -} - -var protocolPrefixes = [][]byte{ - []byte("http://"), - []byte("https://"), - []byte("ftp://"), - []byte("file://"), - []byte("mailto:"), -} - -const shortestPrefix = 6 // len("ftp://"), the shortest of the above - -func maybeAutoLink(p *Markdown, data []byte, offset int) (int, *Node) { - // quick check to rule out most false hits - if p.insideLink || len(data) < offset+shortestPrefix { - return 0, nil - } - for _, prefix := range protocolPrefixes { - endOfHead := offset + 8 // 8 is the len() of the longest prefix - if endOfHead > len(data) { - endOfHead = len(data) - } - if hasPrefixCaseInsensitive(data[offset:endOfHead], prefix) { - return autoLink(p, data, offset) - } - } - return 0, nil -} - -func autoLink(p *Markdown, data []byte, offset int) (int, *Node) { - // Now a more expensive check to see if we're not inside an anchor element - anchorStart := offset - offsetFromAnchor := 0 - for anchorStart > 0 && data[anchorStart] != '<' { - anchorStart-- - offsetFromAnchor++ - } - - anchorStr := anchorRe.Find(data[anchorStart:]) - if anchorStr != nil { - anchorClose := NewNode(HTMLSpan) - anchorClose.Literal = anchorStr[offsetFromAnchor:] - return len(anchorStr) - offsetFromAnchor, anchorClose - } - - // scan backward for a word boundary - rewind := 0 - for offset-rewind > 0 && rewind <= 7 && isletter(data[offset-rewind-1]) { - rewind++ - } - if rewind > 6 { // longest supported protocol is "mailto" which has 6 letters - return 0, nil - } - - origData := data - data = data[offset-rewind:] - - if !isSafeLink(data) { - return 0, nil - } - - linkEnd := 0 - for linkEnd < len(data) && !isEndOfLink(data[linkEnd]) { - linkEnd++ - } - - // Skip punctuation at the end of the link - if (data[linkEnd-1] == '.' || data[linkEnd-1] == ',') && data[linkEnd-2] != '\\' { - linkEnd-- - } - - // But don't skip semicolon if it's a part of escaped entity: - if data[linkEnd-1] == ';' && data[linkEnd-2] != '\\' && !linkEndsWithEntity(data, linkEnd) { - linkEnd-- - } - - // See if the link finishes with a punctuation sign that can be closed. - var copen byte - switch data[linkEnd-1] { - case '"': - copen = '"' - case '\'': - copen = '\'' - case ')': - copen = '(' - case ']': - copen = '[' - case '}': - copen = '{' - default: - copen = 0 - } - - if copen != 0 { - bufEnd := offset - rewind + linkEnd - 2 - - openDelim := 1 - - /* Try to close the final punctuation sign in this same line; - * if we managed to close it outside of the URL, that means that it's - * not part of the URL. If it closes inside the URL, that means it - * is part of the URL. - * - * Examples: - * - * foo http://www.pokemon.com/Pikachu_(Electric) bar - * => http://www.pokemon.com/Pikachu_(Electric) - * - * foo (http://www.pokemon.com/Pikachu_(Electric)) bar - * => http://www.pokemon.com/Pikachu_(Electric) - * - * foo http://www.pokemon.com/Pikachu_(Electric)) bar - * => http://www.pokemon.com/Pikachu_(Electric)) - * - * (foo http://www.pokemon.com/Pikachu_(Electric)) bar - * => foo http://www.pokemon.com/Pikachu_(Electric) - */ - - for bufEnd >= 0 && origData[bufEnd] != '\n' && openDelim != 0 { - if origData[bufEnd] == data[linkEnd-1] { - openDelim++ - } - - if origData[bufEnd] == copen { - openDelim-- - } - - bufEnd-- - } - - if openDelim == 0 { - linkEnd-- - } - } - - var uLink bytes.Buffer - unescapeText(&uLink, data[:linkEnd]) - - if uLink.Len() > 0 { - node := NewNode(Link) - node.Destination = uLink.Bytes() - node.AppendChild(text(uLink.Bytes())) - return linkEnd, node - } - - return linkEnd, nil -} - -func isEndOfLink(char byte) bool { - return isspace(char) || char == '<' -} - -var validUris = [][]byte{[]byte("http://"), []byte("https://"), []byte("ftp://"), []byte("mailto://")} -var validPaths = [][]byte{[]byte("/"), []byte("./"), []byte("../")} - -func isSafeLink(link []byte) bool { - for _, path := range validPaths { - if len(link) >= len(path) && bytes.Equal(link[:len(path)], path) { - if len(link) == len(path) { - return true - } else if isalnum(link[len(path)]) { - return true - } - } - } - - for _, prefix := range validUris { - // TODO: handle unicode here - // case-insensitive prefix test - if len(link) > len(prefix) && bytes.Equal(bytes.ToLower(link[:len(prefix)]), prefix) && isalnum(link[len(prefix)]) { - return true - } - } - - return false -} - -// return the length of the given tag, or 0 is it's not valid -func tagLength(data []byte) (autolink autolinkType, end int) { - var i, j int - - // a valid tag can't be shorter than 3 chars - if len(data) < 3 { - return notAutolink, 0 - } - - // begins with a '<' optionally followed by '/', followed by letter or number - if data[0] != '<' { - return notAutolink, 0 - } - if data[1] == '/' { - i = 2 - } else { - i = 1 - } - - if !isalnum(data[i]) { - return notAutolink, 0 - } - - // scheme test - autolink = notAutolink - - // try to find the beginning of an URI - for i < len(data) && (isalnum(data[i]) || data[i] == '.' || data[i] == '+' || data[i] == '-') { - i++ - } - - if i > 1 && i < len(data) && data[i] == '@' { - if j = isMailtoAutoLink(data[i:]); j != 0 { - return emailAutolink, i + j - } - } - - if i > 2 && i < len(data) && data[i] == ':' { - autolink = normalAutolink - i++ - } - - // complete autolink test: no whitespace or ' or " - switch { - case i >= len(data): - autolink = notAutolink - case autolink != notAutolink: - j = i - - for i < len(data) { - if data[i] == '\\' { - i += 2 - } else if data[i] == '>' || data[i] == '\'' || data[i] == '"' || isspace(data[i]) { - break - } else { - i++ - } - - } - - if i >= len(data) { - return autolink, 0 - } - if i > j && data[i] == '>' { - return autolink, i + 1 - } - - // one of the forbidden chars has been found - autolink = notAutolink - } - i += bytes.IndexByte(data[i:], '>') - if i < 0 { - return autolink, 0 - } - return autolink, i + 1 -} - -// look for the address part of a mail autolink and '>' -// this is less strict than the original markdown e-mail address matching -func isMailtoAutoLink(data []byte) int { - nb := 0 - - // address is assumed to be: [-@._a-zA-Z0-9]+ with exactly one '@' - for i := 0; i < len(data); i++ { - if isalnum(data[i]) { - continue - } - - switch data[i] { - case '@': - nb++ - - case '-', '.', '_': - break - - case '>': - if nb == 1 { - return i + 1 - } - return 0 - default: - return 0 - } - } - - return 0 -} - -// look for the next emph char, skipping other constructs -func helperFindEmphChar(data []byte, c byte) int { - i := 0 - - for i < len(data) { - for i < len(data) && data[i] != c && data[i] != '`' && data[i] != '[' { - i++ - } - if i >= len(data) { - return 0 - } - // do not count escaped chars - if i != 0 && data[i-1] == '\\' { - i++ - continue - } - if data[i] == c { - return i - } - - if data[i] == '`' { - // skip a code span - tmpI := 0 - i++ - for i < len(data) && data[i] != '`' { - if tmpI == 0 && data[i] == c { - tmpI = i - } - i++ - } - if i >= len(data) { - return tmpI - } - i++ - } else if data[i] == '[' { - // skip a link - tmpI := 0 - i++ - for i < len(data) && data[i] != ']' { - if tmpI == 0 && data[i] == c { - tmpI = i - } - i++ - } - i++ - for i < len(data) && (data[i] == ' ' || data[i] == '\n') { - i++ - } - if i >= len(data) { - return tmpI - } - if data[i] != '[' && data[i] != '(' { // not a link - if tmpI > 0 { - return tmpI - } - continue - } - cc := data[i] - i++ - for i < len(data) && data[i] != cc { - if tmpI == 0 && data[i] == c { - return i - } - i++ - } - if i >= len(data) { - return tmpI - } - i++ - } - } - return 0 -} - -func helperEmphasis(p *Markdown, data []byte, c byte) (int, *Node) { - i := 0 - - // skip one symbol if coming from emph3 - if len(data) > 1 && data[0] == c && data[1] == c { - i = 1 - } - - for i < len(data) { - length := helperFindEmphChar(data[i:], c) - if length == 0 { - return 0, nil - } - i += length - if i >= len(data) { - return 0, nil - } - - if i+1 < len(data) && data[i+1] == c { - i++ - continue - } - - if data[i] == c && !isspace(data[i-1]) { - - if p.extensions&NoIntraEmphasis != 0 { - if !(i+1 == len(data) || isspace(data[i+1]) || ispunct(data[i+1])) { - continue - } - } - - emph := NewNode(Emph) - p.inline(emph, data[:i]) - return i + 1, emph - } - } - - return 0, nil -} - -func helperDoubleEmphasis(p *Markdown, data []byte, c byte) (int, *Node) { - i := 0 - - for i < len(data) { - length := helperFindEmphChar(data[i:], c) - if length == 0 { - return 0, nil - } - i += length - - if i+1 < len(data) && data[i] == c && data[i+1] == c && i > 0 && !isspace(data[i-1]) { - nodeType := Strong - if c == '~' { - nodeType = Del - } - node := NewNode(nodeType) - p.inline(node, data[:i]) - return i + 2, node - } - i++ - } - return 0, nil -} - -func helperTripleEmphasis(p *Markdown, data []byte, offset int, c byte) (int, *Node) { - i := 0 - origData := data - data = data[offset:] - - for i < len(data) { - length := helperFindEmphChar(data[i:], c) - if length == 0 { - return 0, nil - } - i += length - - // skip whitespace preceded symbols - if data[i] != c || isspace(data[i-1]) { - continue - } - - switch { - case i+2 < len(data) && data[i+1] == c && data[i+2] == c: - // triple symbol found - strong := NewNode(Strong) - em := NewNode(Emph) - strong.AppendChild(em) - p.inline(em, data[:i]) - return i + 3, strong - case (i+1 < len(data) && data[i+1] == c): - // double symbol found, hand over to emph1 - length, node := helperEmphasis(p, origData[offset-2:], c) - if length == 0 { - return 0, nil - } - return length - 2, node - default: - // single symbol found, hand over to emph2 - length, node := helperDoubleEmphasis(p, origData[offset-1:], c) - if length == 0 { - return 0, nil - } - return length - 1, node - } - } - return 0, nil -} - -func text(s []byte) *Node { - node := NewNode(Text) - node.Literal = s - return node -} - -func normalizeURI(s []byte) []byte { - return s // TODO: implement -} diff --git a/vendor/github.com/russross/blackfriday/v2/markdown.go b/vendor/github.com/russross/blackfriday/v2/markdown.go deleted file mode 100644 index 58d2e4538..000000000 --- a/vendor/github.com/russross/blackfriday/v2/markdown.go +++ /dev/null @@ -1,950 +0,0 @@ -// Blackfriday Markdown Processor -// Available at http://github.com/russross/blackfriday -// -// Copyright © 2011 Russ Ross <russ@russross.com>. -// Distributed under the Simplified BSD License. -// See README.md for details. - -package blackfriday - -import ( - "bytes" - "fmt" - "io" - "strings" - "unicode/utf8" -) - -// -// Markdown parsing and processing -// - -// Version string of the package. Appears in the rendered document when -// CompletePage flag is on. -const Version = "2.0" - -// Extensions is a bitwise or'ed collection of enabled Blackfriday's -// extensions. -type Extensions int - -// These are the supported markdown parsing extensions. -// OR these values together to select multiple extensions. -const ( - NoExtensions Extensions = 0 - NoIntraEmphasis Extensions = 1 << iota // Ignore emphasis markers inside words - Tables // Render tables - FencedCode // Render fenced code blocks - Autolink // Detect embedded URLs that are not explicitly marked - Strikethrough // Strikethrough text using ~~test~~ - LaxHTMLBlocks // Loosen up HTML block parsing rules - SpaceHeadings // Be strict about prefix heading rules - HardLineBreak // Translate newlines into line breaks - TabSizeEight // Expand tabs to eight spaces instead of four - Footnotes // Pandoc-style footnotes - NoEmptyLineBeforeBlock // No need to insert an empty line to start a (code, quote, ordered list, unordered list) block - HeadingIDs // specify heading IDs with {#id} - Titleblock // Titleblock ala pandoc - AutoHeadingIDs // Create the heading ID from the text - BackslashLineBreak // Translate trailing backslashes into line breaks - DefinitionLists // Render definition lists - - CommonHTMLFlags HTMLFlags = UseXHTML | Smartypants | - SmartypantsFractions | SmartypantsDashes | SmartypantsLatexDashes - - CommonExtensions Extensions = NoIntraEmphasis | Tables | FencedCode | - Autolink | Strikethrough | SpaceHeadings | HeadingIDs | - BackslashLineBreak | DefinitionLists -) - -// ListType contains bitwise or'ed flags for list and list item objects. -type ListType int - -// These are the possible flag values for the ListItem renderer. -// Multiple flag values may be ORed together. -// These are mostly of interest if you are writing a new output format. -const ( - ListTypeOrdered ListType = 1 << iota - ListTypeDefinition - ListTypeTerm - - ListItemContainsBlock - ListItemBeginningOfList // TODO: figure out if this is of any use now - ListItemEndOfList -) - -// CellAlignFlags holds a type of alignment in a table cell. -type CellAlignFlags int - -// These are the possible flag values for the table cell renderer. -// Only a single one of these values will be used; they are not ORed together. -// These are mostly of interest if you are writing a new output format. -const ( - TableAlignmentLeft CellAlignFlags = 1 << iota - TableAlignmentRight - TableAlignmentCenter = (TableAlignmentLeft | TableAlignmentRight) -) - -// The size of a tab stop. -const ( - TabSizeDefault = 4 - TabSizeDouble = 8 -) - -// blockTags is a set of tags that are recognized as HTML block tags. -// Any of these can be included in markdown text without special escaping. -var blockTags = map[string]struct{}{ - "blockquote": {}, - "del": {}, - "div": {}, - "dl": {}, - "fieldset": {}, - "form": {}, - "h1": {}, - "h2": {}, - "h3": {}, - "h4": {}, - "h5": {}, - "h6": {}, - "iframe": {}, - "ins": {}, - "math": {}, - "noscript": {}, - "ol": {}, - "pre": {}, - "p": {}, - "script": {}, - "style": {}, - "table": {}, - "ul": {}, - - // HTML5 - "address": {}, - "article": {}, - "aside": {}, - "canvas": {}, - "figcaption": {}, - "figure": {}, - "footer": {}, - "header": {}, - "hgroup": {}, - "main": {}, - "nav": {}, - "output": {}, - "progress": {}, - "section": {}, - "video": {}, -} - -// Renderer is the rendering interface. This is mostly of interest if you are -// implementing a new rendering format. -// -// Only an HTML implementation is provided in this repository, see the README -// for external implementations. -type Renderer interface { - // RenderNode is the main rendering method. It will be called once for - // every leaf node and twice for every non-leaf node (first with - // entering=true, then with entering=false). The method should write its - // rendition of the node to the supplied writer w. - RenderNode(w io.Writer, node *Node, entering bool) WalkStatus - - // RenderHeader is a method that allows the renderer to produce some - // content preceding the main body of the output document. The header is - // understood in the broad sense here. For example, the default HTML - // renderer will write not only the HTML document preamble, but also the - // table of contents if it was requested. - // - // The method will be passed an entire document tree, in case a particular - // implementation needs to inspect it to produce output. - // - // The output should be written to the supplied writer w. If your - // implementation has no header to write, supply an empty implementation. - RenderHeader(w io.Writer, ast *Node) - - // RenderFooter is a symmetric counterpart of RenderHeader. - RenderFooter(w io.Writer, ast *Node) -} - -// Callback functions for inline parsing. One such function is defined -// for each character that triggers a response when parsing inline data. -type inlineParser func(p *Markdown, data []byte, offset int) (int, *Node) - -// Markdown is a type that holds extensions and the runtime state used by -// Parse, and the renderer. You can not use it directly, construct it with New. -type Markdown struct { - renderer Renderer - referenceOverride ReferenceOverrideFunc - refs map[string]*reference - inlineCallback [256]inlineParser - extensions Extensions - nesting int - maxNesting int - insideLink bool - - // Footnotes need to be ordered as well as available to quickly check for - // presence. If a ref is also a footnote, it's stored both in refs and here - // in notes. Slice is nil if footnotes not enabled. - notes []*reference - - doc *Node - tip *Node // = doc - oldTip *Node - lastMatchedContainer *Node // = doc - allClosed bool -} - -func (p *Markdown) getRef(refid string) (ref *reference, found bool) { - if p.referenceOverride != nil { - r, overridden := p.referenceOverride(refid) - if overridden { - if r == nil { - return nil, false - } - return &reference{ - link: []byte(r.Link), - title: []byte(r.Title), - noteID: 0, - hasBlock: false, - text: []byte(r.Text)}, true - } - } - // refs are case insensitive - ref, found = p.refs[strings.ToLower(refid)] - return ref, found -} - -func (p *Markdown) finalize(block *Node) { - above := block.Parent - block.open = false - p.tip = above -} - -func (p *Markdown) addChild(node NodeType, offset uint32) *Node { - return p.addExistingChild(NewNode(node), offset) -} - -func (p *Markdown) addExistingChild(node *Node, offset uint32) *Node { - for !p.tip.canContain(node.Type) { - p.finalize(p.tip) - } - p.tip.AppendChild(node) - p.tip = node - return node -} - -func (p *Markdown) closeUnmatchedBlocks() { - if !p.allClosed { - for p.oldTip != p.lastMatchedContainer { - parent := p.oldTip.Parent - p.finalize(p.oldTip) - p.oldTip = parent - } - p.allClosed = true - } -} - -// -// -// Public interface -// -// - -// Reference represents the details of a link. -// See the documentation in Options for more details on use-case. -type Reference struct { - // Link is usually the URL the reference points to. - Link string - // Title is the alternate text describing the link in more detail. - Title string - // Text is the optional text to override the ref with if the syntax used was - // [refid][] - Text string -} - -// ReferenceOverrideFunc is expected to be called with a reference string and -// return either a valid Reference type that the reference string maps to or -// nil. If overridden is false, the default reference logic will be executed. -// See the documentation in Options for more details on use-case. -type ReferenceOverrideFunc func(reference string) (ref *Reference, overridden bool) - -// New constructs a Markdown processor. You can use the same With* functions as -// for Run() to customize parser's behavior and the renderer. -func New(opts ...Option) *Markdown { - var p Markdown - for _, opt := range opts { - opt(&p) - } - p.refs = make(map[string]*reference) - p.maxNesting = 16 - p.insideLink = false - docNode := NewNode(Document) - p.doc = docNode - p.tip = docNode - p.oldTip = docNode - p.lastMatchedContainer = docNode - p.allClosed = true - // register inline parsers - p.inlineCallback[' '] = maybeLineBreak - p.inlineCallback['*'] = emphasis - p.inlineCallback['_'] = emphasis - if p.extensions&Strikethrough != 0 { - p.inlineCallback['~'] = emphasis - } - p.inlineCallback['`'] = codeSpan - p.inlineCallback['\n'] = lineBreak - p.inlineCallback['['] = link - p.inlineCallback['<'] = leftAngle - p.inlineCallback['\\'] = escape - p.inlineCallback['&'] = entity - p.inlineCallback['!'] = maybeImage - p.inlineCallback['^'] = maybeInlineFootnote - if p.extensions&Autolink != 0 { - p.inlineCallback['h'] = maybeAutoLink - p.inlineCallback['m'] = maybeAutoLink - p.inlineCallback['f'] = maybeAutoLink - p.inlineCallback['H'] = maybeAutoLink - p.inlineCallback['M'] = maybeAutoLink - p.inlineCallback['F'] = maybeAutoLink - } - if p.extensions&Footnotes != 0 { - p.notes = make([]*reference, 0) - } - return &p -} - -// Option customizes the Markdown processor's default behavior. -type Option func(*Markdown) - -// WithRenderer allows you to override the default renderer. -func WithRenderer(r Renderer) Option { - return func(p *Markdown) { - p.renderer = r - } -} - -// WithExtensions allows you to pick some of the many extensions provided by -// Blackfriday. You can bitwise OR them. -func WithExtensions(e Extensions) Option { - return func(p *Markdown) { - p.extensions = e - } -} - -// WithNoExtensions turns off all extensions and custom behavior. -func WithNoExtensions() Option { - return func(p *Markdown) { - p.extensions = NoExtensions - p.renderer = NewHTMLRenderer(HTMLRendererParameters{ - Flags: HTMLFlagsNone, - }) - } -} - -// WithRefOverride sets an optional function callback that is called every -// time a reference is resolved. -// -// In Markdown, the link reference syntax can be made to resolve a link to -// a reference instead of an inline URL, in one of the following ways: -// -// * [link text][refid] -// * [refid][] -// -// Usually, the refid is defined at the bottom of the Markdown document. If -// this override function is provided, the refid is passed to the override -// function first, before consulting the defined refids at the bottom. If -// the override function indicates an override did not occur, the refids at -// the bottom will be used to fill in the link details. -func WithRefOverride(o ReferenceOverrideFunc) Option { - return func(p *Markdown) { - p.referenceOverride = o - } -} - -// Run is the main entry point to Blackfriday. It parses and renders a -// block of markdown-encoded text. -// -// The simplest invocation of Run takes one argument, input: -// output := Run(input) -// This will parse the input with CommonExtensions enabled and render it with -// the default HTMLRenderer (with CommonHTMLFlags). -// -// Variadic arguments opts can customize the default behavior. Since Markdown -// type does not contain exported fields, you can not use it directly. Instead, -// use the With* functions. For example, this will call the most basic -// functionality, with no extensions: -// output := Run(input, WithNoExtensions()) -// -// You can use any number of With* arguments, even contradicting ones. They -// will be applied in order of appearance and the latter will override the -// former: -// output := Run(input, WithNoExtensions(), WithExtensions(exts), -// WithRenderer(yourRenderer)) -func Run(input []byte, opts ...Option) []byte { - r := NewHTMLRenderer(HTMLRendererParameters{ - Flags: CommonHTMLFlags, - }) - optList := []Option{WithRenderer(r), WithExtensions(CommonExtensions)} - optList = append(optList, opts...) - parser := New(optList...) - ast := parser.Parse(input) - var buf bytes.Buffer - parser.renderer.RenderHeader(&buf, ast) - ast.Walk(func(node *Node, entering bool) WalkStatus { - return parser.renderer.RenderNode(&buf, node, entering) - }) - parser.renderer.RenderFooter(&buf, ast) - return buf.Bytes() -} - -// Parse is an entry point to the parsing part of Blackfriday. It takes an -// input markdown document and produces a syntax tree for its contents. This -// tree can then be rendered with a default or custom renderer, or -// analyzed/transformed by the caller to whatever non-standard needs they have. -// The return value is the root node of the syntax tree. -func (p *Markdown) Parse(input []byte) *Node { - p.block(input) - // Walk the tree and finish up some of unfinished blocks - for p.tip != nil { - p.finalize(p.tip) - } - // Walk the tree again and process inline markdown in each block - p.doc.Walk(func(node *Node, entering bool) WalkStatus { - if node.Type == Paragraph || node.Type == Heading || node.Type == TableCell { - p.inline(node, node.content) - node.content = nil - } - return GoToNext - }) - p.parseRefsToAST() - return p.doc -} - -func (p *Markdown) parseRefsToAST() { - if p.extensions&Footnotes == 0 || len(p.notes) == 0 { - return - } - p.tip = p.doc - block := p.addBlock(List, nil) - block.IsFootnotesList = true - block.ListFlags = ListTypeOrdered - flags := ListItemBeginningOfList - // Note: this loop is intentionally explicit, not range-form. This is - // because the body of the loop will append nested footnotes to p.notes and - // we need to process those late additions. Range form would only walk over - // the fixed initial set. - for i := 0; i < len(p.notes); i++ { - ref := p.notes[i] - p.addExistingChild(ref.footnote, 0) - block := ref.footnote - block.ListFlags = flags | ListTypeOrdered - block.RefLink = ref.link - if ref.hasBlock { - flags |= ListItemContainsBlock - p.block(ref.title) - } else { - p.inline(block, ref.title) - } - flags &^= ListItemBeginningOfList | ListItemContainsBlock - } - above := block.Parent - finalizeList(block) - p.tip = above - block.Walk(func(node *Node, entering bool) WalkStatus { - if node.Type == Paragraph || node.Type == Heading { - p.inline(node, node.content) - node.content = nil - } - return GoToNext - }) -} - -// -// Link references -// -// This section implements support for references that (usually) appear -// as footnotes in a document, and can be referenced anywhere in the document. -// The basic format is: -// -// [1]: http://www.google.com/ "Google" -// [2]: http://www.github.com/ "Github" -// -// Anywhere in the document, the reference can be linked by referring to its -// label, i.e., 1 and 2 in this example, as in: -// -// This library is hosted on [Github][2], a git hosting site. -// -// Actual footnotes as specified in Pandoc and supported by some other Markdown -// libraries such as php-markdown are also taken care of. They look like this: -// -// This sentence needs a bit of further explanation.[^note] -// -// [^note]: This is the explanation. -// -// Footnotes should be placed at the end of the document in an ordered list. -// Finally, there are inline footnotes such as: -// -// Inline footnotes^[Also supported.] provide a quick inline explanation, -// but are rendered at the bottom of the document. -// - -// reference holds all information necessary for a reference-style links or -// footnotes. -// -// Consider this markdown with reference-style links: -// -// [link][ref] -// -// [ref]: /url/ "tooltip title" -// -// It will be ultimately converted to this HTML: -// -// <p><a href=\"/url/\" title=\"title\">link</a></p> -// -// And a reference structure will be populated as follows: -// -// p.refs["ref"] = &reference{ -// link: "/url/", -// title: "tooltip title", -// } -// -// Alternatively, reference can contain information about a footnote. Consider -// this markdown: -// -// Text needing a footnote.[^a] -// -// [^a]: This is the note -// -// A reference structure will be populated as follows: -// -// p.refs["a"] = &reference{ -// link: "a", -// title: "This is the note", -// noteID: <some positive int>, -// } -// -// TODO: As you can see, it begs for splitting into two dedicated structures -// for refs and for footnotes. -type reference struct { - link []byte - title []byte - noteID int // 0 if not a footnote ref - hasBlock bool - footnote *Node // a link to the Item node within a list of footnotes - - text []byte // only gets populated by refOverride feature with Reference.Text -} - -func (r *reference) String() string { - return fmt.Sprintf("{link: %q, title: %q, text: %q, noteID: %d, hasBlock: %v}", - r.link, r.title, r.text, r.noteID, r.hasBlock) -} - -// Check whether or not data starts with a reference link. -// If so, it is parsed and stored in the list of references -// (in the render struct). -// Returns the number of bytes to skip to move past it, -// or zero if the first line is not a reference. -func isReference(p *Markdown, data []byte, tabSize int) int { - // up to 3 optional leading spaces - if len(data) < 4 { - return 0 - } - i := 0 - for i < 3 && data[i] == ' ' { - i++ - } - - noteID := 0 - - // id part: anything but a newline between brackets - if data[i] != '[' { - return 0 - } - i++ - if p.extensions&Footnotes != 0 { - if i < len(data) && data[i] == '^' { - // we can set it to anything here because the proper noteIds will - // be assigned later during the second pass. It just has to be != 0 - noteID = 1 - i++ - } - } - idOffset := i - for i < len(data) && data[i] != '\n' && data[i] != '\r' && data[i] != ']' { - i++ - } - if i >= len(data) || data[i] != ']' { - return 0 - } - idEnd := i - // footnotes can have empty ID, like this: [^], but a reference can not be - // empty like this: []. Break early if it's not a footnote and there's no ID - if noteID == 0 && idOffset == idEnd { - return 0 - } - // spacer: colon (space | tab)* newline? (space | tab)* - i++ - if i >= len(data) || data[i] != ':' { - return 0 - } - i++ - for i < len(data) && (data[i] == ' ' || data[i] == '\t') { - i++ - } - if i < len(data) && (data[i] == '\n' || data[i] == '\r') { - i++ - if i < len(data) && data[i] == '\n' && data[i-1] == '\r' { - i++ - } - } - for i < len(data) && (data[i] == ' ' || data[i] == '\t') { - i++ - } - if i >= len(data) { - return 0 - } - - var ( - linkOffset, linkEnd int - titleOffset, titleEnd int - lineEnd int - raw []byte - hasBlock bool - ) - - if p.extensions&Footnotes != 0 && noteID != 0 { - linkOffset, linkEnd, raw, hasBlock = scanFootnote(p, data, i, tabSize) - lineEnd = linkEnd - } else { - linkOffset, linkEnd, titleOffset, titleEnd, lineEnd = scanLinkRef(p, data, i) - } - if lineEnd == 0 { - return 0 - } - - // a valid ref has been found - - ref := &reference{ - noteID: noteID, - hasBlock: hasBlock, - } - - if noteID > 0 { - // reusing the link field for the id since footnotes don't have links - ref.link = data[idOffset:idEnd] - // if footnote, it's not really a title, it's the contained text - ref.title = raw - } else { - ref.link = data[linkOffset:linkEnd] - ref.title = data[titleOffset:titleEnd] - } - - // id matches are case-insensitive - id := string(bytes.ToLower(data[idOffset:idEnd])) - - p.refs[id] = ref - - return lineEnd -} - -func scanLinkRef(p *Markdown, data []byte, i int) (linkOffset, linkEnd, titleOffset, titleEnd, lineEnd int) { - // link: whitespace-free sequence, optionally between angle brackets - if data[i] == '<' { - i++ - } - linkOffset = i - for i < len(data) && data[i] != ' ' && data[i] != '\t' && data[i] != '\n' && data[i] != '\r' { - i++ - } - linkEnd = i - if data[linkOffset] == '<' && data[linkEnd-1] == '>' { - linkOffset++ - linkEnd-- - } - - // optional spacer: (space | tab)* (newline | '\'' | '"' | '(' ) - for i < len(data) && (data[i] == ' ' || data[i] == '\t') { - i++ - } - if i < len(data) && data[i] != '\n' && data[i] != '\r' && data[i] != '\'' && data[i] != '"' && data[i] != '(' { - return - } - - // compute end-of-line - if i >= len(data) || data[i] == '\r' || data[i] == '\n' { - lineEnd = i - } - if i+1 < len(data) && data[i] == '\r' && data[i+1] == '\n' { - lineEnd++ - } - - // optional (space|tab)* spacer after a newline - if lineEnd > 0 { - i = lineEnd + 1 - for i < len(data) && (data[i] == ' ' || data[i] == '\t') { - i++ - } - } - - // optional title: any non-newline sequence enclosed in '"() alone on its line - if i+1 < len(data) && (data[i] == '\'' || data[i] == '"' || data[i] == '(') { - i++ - titleOffset = i - - // look for EOL - for i < len(data) && data[i] != '\n' && data[i] != '\r' { - i++ - } - if i+1 < len(data) && data[i] == '\n' && data[i+1] == '\r' { - titleEnd = i + 1 - } else { - titleEnd = i - } - - // step back - i-- - for i > titleOffset && (data[i] == ' ' || data[i] == '\t') { - i-- - } - if i > titleOffset && (data[i] == '\'' || data[i] == '"' || data[i] == ')') { - lineEnd = titleEnd - titleEnd = i - } - } - - return -} - -// The first bit of this logic is the same as Parser.listItem, but the rest -// is much simpler. This function simply finds the entire block and shifts it -// over by one tab if it is indeed a block (just returns the line if it's not). -// blockEnd is the end of the section in the input buffer, and contents is the -// extracted text that was shifted over one tab. It will need to be rendered at -// the end of the document. -func scanFootnote(p *Markdown, data []byte, i, indentSize int) (blockStart, blockEnd int, contents []byte, hasBlock bool) { - if i == 0 || len(data) == 0 { - return - } - - // skip leading whitespace on first line - for i < len(data) && data[i] == ' ' { - i++ - } - - blockStart = i - - // find the end of the line - blockEnd = i - for i < len(data) && data[i-1] != '\n' { - i++ - } - - // get working buffer - var raw bytes.Buffer - - // put the first line into the working buffer - raw.Write(data[blockEnd:i]) - blockEnd = i - - // process the following lines - containsBlankLine := false - -gatherLines: - for blockEnd < len(data) { - i++ - - // find the end of this line - for i < len(data) && data[i-1] != '\n' { - i++ - } - - // if it is an empty line, guess that it is part of this item - // and move on to the next line - if p.isEmpty(data[blockEnd:i]) > 0 { - containsBlankLine = true - blockEnd = i - continue - } - - n := 0 - if n = isIndented(data[blockEnd:i], indentSize); n == 0 { - // this is the end of the block. - // we don't want to include this last line in the index. - break gatherLines - } - - // if there were blank lines before this one, insert a new one now - if containsBlankLine { - raw.WriteByte('\n') - containsBlankLine = false - } - - // get rid of that first tab, write to buffer - raw.Write(data[blockEnd+n : i]) - hasBlock = true - - blockEnd = i - } - - if data[blockEnd-1] != '\n' { - raw.WriteByte('\n') - } - - contents = raw.Bytes() - - return -} - -// -// -// Miscellaneous helper functions -// -// - -// Test if a character is a punctuation symbol. -// Taken from a private function in regexp in the stdlib. -func ispunct(c byte) bool { - for _, r := range []byte("!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~") { - if c == r { - return true - } - } - return false -} - -// Test if a character is a whitespace character. -func isspace(c byte) bool { - return ishorizontalspace(c) || isverticalspace(c) -} - -// Test if a character is a horizontal whitespace character. -func ishorizontalspace(c byte) bool { - return c == ' ' || c == '\t' -} - -// Test if a character is a vertical character. -func isverticalspace(c byte) bool { - return c == '\n' || c == '\r' || c == '\f' || c == '\v' -} - -// Test if a character is letter. -func isletter(c byte) bool { - return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') -} - -// Test if a character is a letter or a digit. -// TODO: check when this is looking for ASCII alnum and when it should use unicode -func isalnum(c byte) bool { - return (c >= '0' && c <= '9') || isletter(c) -} - -// Replace tab characters with spaces, aligning to the next TAB_SIZE column. -// always ends output with a newline -func expandTabs(out *bytes.Buffer, line []byte, tabSize int) { - // first, check for common cases: no tabs, or only tabs at beginning of line - i, prefix := 0, 0 - slowcase := false - for i = 0; i < len(line); i++ { - if line[i] == '\t' { - if prefix == i { - prefix++ - } else { - slowcase = true - break - } - } - } - - // no need to decode runes if all tabs are at the beginning of the line - if !slowcase { - for i = 0; i < prefix*tabSize; i++ { - out.WriteByte(' ') - } - out.Write(line[prefix:]) - return - } - - // the slow case: we need to count runes to figure out how - // many spaces to insert for each tab - column := 0 - i = 0 - for i < len(line) { - start := i - for i < len(line) && line[i] != '\t' { - _, size := utf8.DecodeRune(line[i:]) - i += size - column++ - } - - if i > start { - out.Write(line[start:i]) - } - - if i >= len(line) { - break - } - - for { - out.WriteByte(' ') - column++ - if column%tabSize == 0 { - break - } - } - - i++ - } -} - -// Find if a line counts as indented or not. -// Returns number of characters the indent is (0 = not indented). -func isIndented(data []byte, indentSize int) int { - if len(data) == 0 { - return 0 - } - if data[0] == '\t' { - return 1 - } - if len(data) < indentSize { - return 0 - } - for i := 0; i < indentSize; i++ { - if data[i] != ' ' { - return 0 - } - } - return indentSize -} - -// Create a url-safe slug for fragments -func slugify(in []byte) []byte { - if len(in) == 0 { - return in - } - out := make([]byte, 0, len(in)) - sym := false - - for _, ch := range in { - if isalnum(ch) { - sym = false - out = append(out, ch) - } else if sym { - continue - } else { - out = append(out, '-') - sym = true - } - } - var a, b int - var ch byte - for a, ch = range out { - if ch != '-' { - break - } - } - for b = len(out) - 1; b > 0; b-- { - if out[b] != '-' { - break - } - } - return out[a : b+1] -} diff --git a/vendor/github.com/russross/blackfriday/v2/node.go b/vendor/github.com/russross/blackfriday/v2/node.go deleted file mode 100644 index 04e6050ce..000000000 --- a/vendor/github.com/russross/blackfriday/v2/node.go +++ /dev/null @@ -1,360 +0,0 @@ -package blackfriday - -import ( - "bytes" - "fmt" -) - -// NodeType specifies a type of a single node of a syntax tree. Usually one -// node (and its type) corresponds to a single markdown feature, e.g. emphasis -// or code block. -type NodeType int - -// Constants for identifying different types of nodes. See NodeType. -const ( - Document NodeType = iota - BlockQuote - List - Item - Paragraph - Heading - HorizontalRule - Emph - Strong - Del - Link - Image - Text - HTMLBlock - CodeBlock - Softbreak - Hardbreak - Code - HTMLSpan - Table - TableCell - TableHead - TableBody - TableRow -) - -var nodeTypeNames = []string{ - Document: "Document", - BlockQuote: "BlockQuote", - List: "List", - Item: "Item", - Paragraph: "Paragraph", - Heading: "Heading", - HorizontalRule: "HorizontalRule", - Emph: "Emph", - Strong: "Strong", - Del: "Del", - Link: "Link", - Image: "Image", - Text: "Text", - HTMLBlock: "HTMLBlock", - CodeBlock: "CodeBlock", - Softbreak: "Softbreak", - Hardbreak: "Hardbreak", - Code: "Code", - HTMLSpan: "HTMLSpan", - Table: "Table", - TableCell: "TableCell", - TableHead: "TableHead", - TableBody: "TableBody", - TableRow: "TableRow", -} - -func (t NodeType) String() string { - return nodeTypeNames[t] -} - -// ListData contains fields relevant to a List and Item node type. -type ListData struct { - ListFlags ListType - Tight bool // Skip <p>s around list item data if true - BulletChar byte // '*', '+' or '-' in bullet lists - Delimiter byte // '.' or ')' after the number in ordered lists - RefLink []byte // If not nil, turns this list item into a footnote item and triggers different rendering - IsFootnotesList bool // This is a list of footnotes -} - -// LinkData contains fields relevant to a Link node type. -type LinkData struct { - Destination []byte // Destination is what goes into a href - Title []byte // Title is the tooltip thing that goes in a title attribute - NoteID int // NoteID contains a serial number of a footnote, zero if it's not a footnote - Footnote *Node // If it's a footnote, this is a direct link to the footnote Node. Otherwise nil. -} - -// CodeBlockData contains fields relevant to a CodeBlock node type. -type CodeBlockData struct { - IsFenced bool // Specifies whether it's a fenced code block or an indented one - Info []byte // This holds the info string - FenceChar byte - FenceLength int - FenceOffset int -} - -// TableCellData contains fields relevant to a TableCell node type. -type TableCellData struct { - IsHeader bool // This tells if it's under the header row - Align CellAlignFlags // This holds the value for align attribute -} - -// HeadingData contains fields relevant to a Heading node type. -type HeadingData struct { - Level int // This holds the heading level number - HeadingID string // This might hold heading ID, if present - IsTitleblock bool // Specifies whether it's a title block -} - -// Node is a single element in the abstract syntax tree of the parsed document. -// It holds connections to the structurally neighboring nodes and, for certain -// types of nodes, additional information that might be needed when rendering. -type Node struct { - Type NodeType // Determines the type of the node - Parent *Node // Points to the parent - FirstChild *Node // Points to the first child, if any - LastChild *Node // Points to the last child, if any - Prev *Node // Previous sibling; nil if it's the first child - Next *Node // Next sibling; nil if it's the last child - - Literal []byte // Text contents of the leaf nodes - - HeadingData // Populated if Type is Heading - ListData // Populated if Type is List - CodeBlockData // Populated if Type is CodeBlock - LinkData // Populated if Type is Link - TableCellData // Populated if Type is TableCell - - content []byte // Markdown content of the block nodes - open bool // Specifies an open block node that has not been finished to process yet -} - -// NewNode allocates a node of a specified type. -func NewNode(typ NodeType) *Node { - return &Node{ - Type: typ, - open: true, - } -} - -func (n *Node) String() string { - ellipsis := "" - snippet := n.Literal - if len(snippet) > 16 { - snippet = snippet[:16] - ellipsis = "..." - } - return fmt.Sprintf("%s: '%s%s'", n.Type, snippet, ellipsis) -} - -// Unlink removes node 'n' from the tree. -// It panics if the node is nil. -func (n *Node) Unlink() { - if n.Prev != nil { - n.Prev.Next = n.Next - } else if n.Parent != nil { - n.Parent.FirstChild = n.Next - } - if n.Next != nil { - n.Next.Prev = n.Prev - } else if n.Parent != nil { - n.Parent.LastChild = n.Prev - } - n.Parent = nil - n.Next = nil - n.Prev = nil -} - -// AppendChild adds a node 'child' as a child of 'n'. -// It panics if either node is nil. -func (n *Node) AppendChild(child *Node) { - child.Unlink() - child.Parent = n - if n.LastChild != nil { - n.LastChild.Next = child - child.Prev = n.LastChild - n.LastChild = child - } else { - n.FirstChild = child - n.LastChild = child - } -} - -// InsertBefore inserts 'sibling' immediately before 'n'. -// It panics if either node is nil. -func (n *Node) InsertBefore(sibling *Node) { - sibling.Unlink() - sibling.Prev = n.Prev - if sibling.Prev != nil { - sibling.Prev.Next = sibling - } - sibling.Next = n - n.Prev = sibling - sibling.Parent = n.Parent - if sibling.Prev == nil { - sibling.Parent.FirstChild = sibling - } -} - -// IsContainer returns true if 'n' can contain children. -func (n *Node) IsContainer() bool { - switch n.Type { - case Document: - fallthrough - case BlockQuote: - fallthrough - case List: - fallthrough - case Item: - fallthrough - case Paragraph: - fallthrough - case Heading: - fallthrough - case Emph: - fallthrough - case Strong: - fallthrough - case Del: - fallthrough - case Link: - fallthrough - case Image: - fallthrough - case Table: - fallthrough - case TableHead: - fallthrough - case TableBody: - fallthrough - case TableRow: - fallthrough - case TableCell: - return true - default: - return false - } -} - -// IsLeaf returns true if 'n' is a leaf node. -func (n *Node) IsLeaf() bool { - return !n.IsContainer() -} - -func (n *Node) canContain(t NodeType) bool { - if n.Type == List { - return t == Item - } - if n.Type == Document || n.Type == BlockQuote || n.Type == Item { - return t != Item - } - if n.Type == Table { - return t == TableHead || t == TableBody - } - if n.Type == TableHead || n.Type == TableBody { - return t == TableRow - } - if n.Type == TableRow { - return t == TableCell - } - return false -} - -// WalkStatus allows NodeVisitor to have some control over the tree traversal. -// It is returned from NodeVisitor and different values allow Node.Walk to -// decide which node to go to next. -type WalkStatus int - -const ( - // GoToNext is the default traversal of every node. - GoToNext WalkStatus = iota - // SkipChildren tells walker to skip all children of current node. - SkipChildren - // Terminate tells walker to terminate the traversal. - Terminate -) - -// NodeVisitor is a callback to be called when traversing the syntax tree. -// Called twice for every node: once with entering=true when the branch is -// first visited, then with entering=false after all the children are done. -type NodeVisitor func(node *Node, entering bool) WalkStatus - -// Walk is a convenience method that instantiates a walker and starts a -// traversal of subtree rooted at n. -func (n *Node) Walk(visitor NodeVisitor) { - w := newNodeWalker(n) - for w.current != nil { - status := visitor(w.current, w.entering) - switch status { - case GoToNext: - w.next() - case SkipChildren: - w.entering = false - w.next() - case Terminate: - return - } - } -} - -type nodeWalker struct { - current *Node - root *Node - entering bool -} - -func newNodeWalker(root *Node) *nodeWalker { - return &nodeWalker{ - current: root, - root: root, - entering: true, - } -} - -func (nw *nodeWalker) next() { - if (!nw.current.IsContainer() || !nw.entering) && nw.current == nw.root { - nw.current = nil - return - } - if nw.entering && nw.current.IsContainer() { - if nw.current.FirstChild != nil { - nw.current = nw.current.FirstChild - nw.entering = true - } else { - nw.entering = false - } - } else if nw.current.Next == nil { - nw.current = nw.current.Parent - nw.entering = false - } else { - nw.current = nw.current.Next - nw.entering = true - } -} - -func dump(ast *Node) { - fmt.Println(dumpString(ast)) -} - -func dumpR(ast *Node, depth int) string { - if ast == nil { - return "" - } - indent := bytes.Repeat([]byte("\t"), depth) - content := ast.Literal - if content == nil { - content = ast.content - } - result := fmt.Sprintf("%s%s(%q)\n", indent, ast.Type, content) - for n := ast.FirstChild; n != nil; n = n.Next { - result += dumpR(n, depth+1) - } - return result -} - -func dumpString(ast *Node) string { - return dumpR(ast, 0) -} diff --git a/vendor/github.com/russross/blackfriday/v2/smartypants.go b/vendor/github.com/russross/blackfriday/v2/smartypants.go deleted file mode 100644 index 3a220e942..000000000 --- a/vendor/github.com/russross/blackfriday/v2/smartypants.go +++ /dev/null @@ -1,457 +0,0 @@ -// -// Blackfriday Markdown Processor -// Available at http://github.com/russross/blackfriday -// -// Copyright © 2011 Russ Ross <russ@russross.com>. -// Distributed under the Simplified BSD License. -// See README.md for details. -// - -// -// -// SmartyPants rendering -// -// - -package blackfriday - -import ( - "bytes" - "io" -) - -// SPRenderer is a struct containing state of a Smartypants renderer. -type SPRenderer struct { - inSingleQuote bool - inDoubleQuote bool - callbacks [256]smartCallback -} - -func wordBoundary(c byte) bool { - return c == 0 || isspace(c) || ispunct(c) -} - -func tolower(c byte) byte { - if c >= 'A' && c <= 'Z' { - return c - 'A' + 'a' - } - return c -} - -func isdigit(c byte) bool { - return c >= '0' && c <= '9' -} - -func smartQuoteHelper(out *bytes.Buffer, previousChar byte, nextChar byte, quote byte, isOpen *bool, addNBSP bool) bool { - // edge of the buffer is likely to be a tag that we don't get to see, - // so we treat it like text sometimes - - // enumerate all sixteen possibilities for (previousChar, nextChar) - // each can be one of {0, space, punct, other} - switch { - case previousChar == 0 && nextChar == 0: - // context is not any help here, so toggle - *isOpen = !*isOpen - case isspace(previousChar) && nextChar == 0: - // [ "] might be [ "<code>foo...] - *isOpen = true - case ispunct(previousChar) && nextChar == 0: - // [!"] hmm... could be [Run!"] or [("<code>...] - *isOpen = false - case /* isnormal(previousChar) && */ nextChar == 0: - // [a"] is probably a close - *isOpen = false - case previousChar == 0 && isspace(nextChar): - // [" ] might be [...foo</code>" ] - *isOpen = false - case isspace(previousChar) && isspace(nextChar): - // [ " ] context is not any help here, so toggle - *isOpen = !*isOpen - case ispunct(previousChar) && isspace(nextChar): - // [!" ] is probably a close - *isOpen = false - case /* isnormal(previousChar) && */ isspace(nextChar): - // [a" ] this is one of the easy cases - *isOpen = false - case previousChar == 0 && ispunct(nextChar): - // ["!] hmm... could be ["$1.95] or [</code>"!...] - *isOpen = false - case isspace(previousChar) && ispunct(nextChar): - // [ "!] looks more like [ "$1.95] - *isOpen = true - case ispunct(previousChar) && ispunct(nextChar): - // [!"!] context is not any help here, so toggle - *isOpen = !*isOpen - case /* isnormal(previousChar) && */ ispunct(nextChar): - // [a"!] is probably a close - *isOpen = false - case previousChar == 0 /* && isnormal(nextChar) */ : - // ["a] is probably an open - *isOpen = true - case isspace(previousChar) /* && isnormal(nextChar) */ : - // [ "a] this is one of the easy cases - *isOpen = true - case ispunct(previousChar) /* && isnormal(nextChar) */ : - // [!"a] is probably an open - *isOpen = true - default: - // [a'b] maybe a contraction? - *isOpen = false - } - - // Note that with the limited lookahead, this non-breaking - // space will also be appended to single double quotes. - if addNBSP && !*isOpen { - out.WriteString("&nbsp;") - } - - out.WriteByte('&') - if *isOpen { - out.WriteByte('l') - } else { - out.WriteByte('r') - } - out.WriteByte(quote) - out.WriteString("quo;") - - if addNBSP && *isOpen { - out.WriteString("&nbsp;") - } - - return true -} - -func (r *SPRenderer) smartSingleQuote(out *bytes.Buffer, previousChar byte, text []byte) int { - if len(text) >= 2 { - t1 := tolower(text[1]) - - if t1 == '\'' { - nextChar := byte(0) - if len(text) >= 3 { - nextChar = text[2] - } - if smartQuoteHelper(out, previousChar, nextChar, 'd', &r.inDoubleQuote, false) { - return 1 - } - } - - if (t1 == 's' || t1 == 't' || t1 == 'm' || t1 == 'd') && (len(text) < 3 || wordBoundary(text[2])) { - out.WriteString("&rsquo;") - return 0 - } - - if len(text) >= 3 { - t2 := tolower(text[2]) - - if ((t1 == 'r' && t2 == 'e') || (t1 == 'l' && t2 == 'l') || (t1 == 'v' && t2 == 'e')) && - (len(text) < 4 || wordBoundary(text[3])) { - out.WriteString("&rsquo;") - return 0 - } - } - } - - nextChar := byte(0) - if len(text) > 1 { - nextChar = text[1] - } - if smartQuoteHelper(out, previousChar, nextChar, 's', &r.inSingleQuote, false) { - return 0 - } - - out.WriteByte(text[0]) - return 0 -} - -func (r *SPRenderer) smartParens(out *bytes.Buffer, previousChar byte, text []byte) int { - if len(text) >= 3 { - t1 := tolower(text[1]) - t2 := tolower(text[2]) - - if t1 == 'c' && t2 == ')' { - out.WriteString("&copy;") - return 2 - } - - if t1 == 'r' && t2 == ')' { - out.WriteString("&reg;") - return 2 - } - - if len(text) >= 4 && t1 == 't' && t2 == 'm' && text[3] == ')' { - out.WriteString("&trade;") - return 3 - } - } - - out.WriteByte(text[0]) - return 0 -} - -func (r *SPRenderer) smartDash(out *bytes.Buffer, previousChar byte, text []byte) int { - if len(text) >= 2 { - if text[1] == '-' { - out.WriteString("&mdash;") - return 1 - } - - if wordBoundary(previousChar) && wordBoundary(text[1]) { - out.WriteString("&ndash;") - return 0 - } - } - - out.WriteByte(text[0]) - return 0 -} - -func (r *SPRenderer) smartDashLatex(out *bytes.Buffer, previousChar byte, text []byte) int { - if len(text) >= 3 && text[1] == '-' && text[2] == '-' { - out.WriteString("&mdash;") - return 2 - } - if len(text) >= 2 && text[1] == '-' { - out.WriteString("&ndash;") - return 1 - } - - out.WriteByte(text[0]) - return 0 -} - -func (r *SPRenderer) smartAmpVariant(out *bytes.Buffer, previousChar byte, text []byte, quote byte, addNBSP bool) int { - if bytes.HasPrefix(text, []byte("&quot;")) { - nextChar := byte(0) - if len(text) >= 7 { - nextChar = text[6] - } - if smartQuoteHelper(out, previousChar, nextChar, quote, &r.inDoubleQuote, addNBSP) { - return 5 - } - } - - if bytes.HasPrefix(text, []byte("&#0;")) { - return 3 - } - - out.WriteByte('&') - return 0 -} - -func (r *SPRenderer) smartAmp(angledQuotes, addNBSP bool) func(*bytes.Buffer, byte, []byte) int { - var quote byte = 'd' - if angledQuotes { - quote = 'a' - } - - return func(out *bytes.Buffer, previousChar byte, text []byte) int { - return r.smartAmpVariant(out, previousChar, text, quote, addNBSP) - } -} - -func (r *SPRenderer) smartPeriod(out *bytes.Buffer, previousChar byte, text []byte) int { - if len(text) >= 3 && text[1] == '.' && text[2] == '.' { - out.WriteString("&hellip;") - return 2 - } - - if len(text) >= 5 && text[1] == ' ' && text[2] == '.' && text[3] == ' ' && text[4] == '.' { - out.WriteString("&hellip;") - return 4 - } - - out.WriteByte(text[0]) - return 0 -} - -func (r *SPRenderer) smartBacktick(out *bytes.Buffer, previousChar byte, text []byte) int { - if len(text) >= 2 && text[1] == '`' { - nextChar := byte(0) - if len(text) >= 3 { - nextChar = text[2] - } - if smartQuoteHelper(out, previousChar, nextChar, 'd', &r.inDoubleQuote, false) { - return 1 - } - } - - out.WriteByte(text[0]) - return 0 -} - -func (r *SPRenderer) smartNumberGeneric(out *bytes.Buffer, previousChar byte, text []byte) int { - if wordBoundary(previousChar) && previousChar != '/' && len(text) >= 3 { - // is it of the form digits/digits(word boundary)?, i.e., \d+/\d+\b - // note: check for regular slash (/) or fraction slash (⁄, 0x2044, or 0xe2 81 84 in utf-8) - // and avoid changing dates like 1/23/2005 into fractions. - numEnd := 0 - for len(text) > numEnd && isdigit(text[numEnd]) { - numEnd++ - } - if numEnd == 0 { - out.WriteByte(text[0]) - return 0 - } - denStart := numEnd + 1 - if len(text) > numEnd+3 && text[numEnd] == 0xe2 && text[numEnd+1] == 0x81 && text[numEnd+2] == 0x84 { - denStart = numEnd + 3 - } else if len(text) < numEnd+2 || text[numEnd] != '/' { - out.WriteByte(text[0]) - return 0 - } - denEnd := denStart - for len(text) > denEnd && isdigit(text[denEnd]) { - denEnd++ - } - if denEnd == denStart { - out.WriteByte(text[0]) - return 0 - } - if len(text) == denEnd || wordBoundary(text[denEnd]) && text[denEnd] != '/' { - out.WriteString("<sup>") - out.Write(text[:numEnd]) - out.WriteString("</sup>&frasl;<sub>") - out.Write(text[denStart:denEnd]) - out.WriteString("</sub>") - return denEnd - 1 - } - } - - out.WriteByte(text[0]) - return 0 -} - -func (r *SPRenderer) smartNumber(out *bytes.Buffer, previousChar byte, text []byte) int { - if wordBoundary(previousChar) && previousChar != '/' && len(text) >= 3 { - if text[0] == '1' && text[1] == '/' && text[2] == '2' { - if len(text) < 4 || wordBoundary(text[3]) && text[3] != '/' { - out.WriteString("&frac12;") - return 2 - } - } - - if text[0] == '1' && text[1] == '/' && text[2] == '4' { - if len(text) < 4 || wordBoundary(text[3]) && text[3] != '/' || (len(text) >= 5 && tolower(text[3]) == 't' && tolower(text[4]) == 'h') { - out.WriteString("&frac14;") - return 2 - } - } - - if text[0] == '3' && text[1] == '/' && text[2] == '4' { - if len(text) < 4 || wordBoundary(text[3]) && text[3] != '/' || (len(text) >= 6 && tolower(text[3]) == 't' && tolower(text[4]) == 'h' && tolower(text[5]) == 's') { - out.WriteString("&frac34;") - return 2 - } - } - } - - out.WriteByte(text[0]) - return 0 -} - -func (r *SPRenderer) smartDoubleQuoteVariant(out *bytes.Buffer, previousChar byte, text []byte, quote byte) int { - nextChar := byte(0) - if len(text) > 1 { - nextChar = text[1] - } - if !smartQuoteHelper(out, previousChar, nextChar, quote, &r.inDoubleQuote, false) { - out.WriteString("&quot;") - } - - return 0 -} - -func (r *SPRenderer) smartDoubleQuote(out *bytes.Buffer, previousChar byte, text []byte) int { - return r.smartDoubleQuoteVariant(out, previousChar, text, 'd') -} - -func (r *SPRenderer) smartAngledDoubleQuote(out *bytes.Buffer, previousChar byte, text []byte) int { - return r.smartDoubleQuoteVariant(out, previousChar, text, 'a') -} - -func (r *SPRenderer) smartLeftAngle(out *bytes.Buffer, previousChar byte, text []byte) int { - i := 0 - - for i < len(text) && text[i] != '>' { - i++ - } - - out.Write(text[:i+1]) - return i -} - -type smartCallback func(out *bytes.Buffer, previousChar byte, text []byte) int - -// NewSmartypantsRenderer constructs a Smartypants renderer object. -func NewSmartypantsRenderer(flags HTMLFlags) *SPRenderer { - var ( - r SPRenderer - - smartAmpAngled = r.smartAmp(true, false) - smartAmpAngledNBSP = r.smartAmp(true, true) - smartAmpRegular = r.smartAmp(false, false) - smartAmpRegularNBSP = r.smartAmp(false, true) - - addNBSP = flags&SmartypantsQuotesNBSP != 0 - ) - - if flags&SmartypantsAngledQuotes == 0 { - r.callbacks['"'] = r.smartDoubleQuote - if !addNBSP { - r.callbacks['&'] = smartAmpRegular - } else { - r.callbacks['&'] = smartAmpRegularNBSP - } - } else { - r.callbacks['"'] = r.smartAngledDoubleQuote - if !addNBSP { - r.callbacks['&'] = smartAmpAngled - } else { - r.callbacks['&'] = smartAmpAngledNBSP - } - } - r.callbacks['\''] = r.smartSingleQuote - r.callbacks['('] = r.smartParens - if flags&SmartypantsDashes != 0 { - if flags&SmartypantsLatexDashes == 0 { - r.callbacks['-'] = r.smartDash - } else { - r.callbacks['-'] = r.smartDashLatex - } - } - r.callbacks['.'] = r.smartPeriod - if flags&SmartypantsFractions == 0 { - r.callbacks['1'] = r.smartNumber - r.callbacks['3'] = r.smartNumber - } else { - for ch := '1'; ch <= '9'; ch++ { - r.callbacks[ch] = r.smartNumberGeneric - } - } - r.callbacks['<'] = r.smartLeftAngle - r.callbacks['`'] = r.smartBacktick - return &r -} - -// Process is the entry point of the Smartypants renderer. -func (r *SPRenderer) Process(w io.Writer, text []byte) { - mark := 0 - for i := 0; i < len(text); i++ { - if action := r.callbacks[text[i]]; action != nil { - if i > mark { - w.Write(text[mark:i]) - } - previousChar := byte(0) - if i > 0 { - previousChar = text[i-1] - } - var tmp bytes.Buffer - i += action(&tmp, previousChar, text[i:]) - w.Write(tmp.Bytes()) - mark = i + 1 - } - } - if mark < len(text) { - w.Write(text[mark:]) - } -} diff --git a/vendor/github.com/stretchr/testify/assert/assertion_compare.go b/vendor/github.com/stretchr/testify/assert/assertion_compare.go index 4d4b4aad6..7e19eba09 100644 --- a/vendor/github.com/stretchr/testify/assert/assertion_compare.go +++ b/vendor/github.com/stretchr/testify/assert/assertion_compare.go @@ -7,10 +7,13 @@ import ( "time" ) -type CompareType int +// Deprecated: CompareType has only ever been for internal use and has accidentally been published since v1.6.0. Do not use it. +type CompareType = compareResult + +type compareResult int const ( - compareLess CompareType = iota - 1 + compareLess compareResult = iota - 1 compareEqual compareGreater ) @@ -39,7 +42,7 @@ var ( bytesType = reflect.TypeOf([]byte{}) ) -func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) { +func compare(obj1, obj2 interface{}, kind reflect.Kind) (compareResult, bool) { obj1Value := reflect.ValueOf(obj1) obj2Value := reflect.ValueOf(obj2) @@ -325,7 +328,13 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) { timeObj2 = obj2Value.Convert(timeType).Interface().(time.Time) } - return compare(timeObj1.UnixNano(), timeObj2.UnixNano(), reflect.Int64) + if timeObj1.Before(timeObj2) { + return compareLess, true + } + if timeObj1.Equal(timeObj2) { + return compareEqual, true + } + return compareGreater, true } case reflect.Slice: { @@ -345,7 +354,7 @@ func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bool) { bytesObj2 = obj2Value.Convert(bytesType).Interface().([]byte) } - return CompareType(bytes.Compare(bytesObj1, bytesObj2)), true + return compareResult(bytes.Compare(bytesObj1, bytesObj2)), true } case reflect.Uintptr: { @@ -381,7 +390,7 @@ func Greater(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface if h, ok := t.(tHelper); ok { h.Helper() } - return compareTwoValues(t, e1, e2, []CompareType{compareGreater}, "\"%v\" is not greater than \"%v\"", msgAndArgs...) + return compareTwoValues(t, e1, e2, []compareResult{compareGreater}, "\"%v\" is not greater than \"%v\"", msgAndArgs...) } // GreaterOrEqual asserts that the first element is greater than or equal to the second @@ -394,7 +403,7 @@ func GreaterOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...in if h, ok := t.(tHelper); ok { h.Helper() } - return compareTwoValues(t, e1, e2, []CompareType{compareGreater, compareEqual}, "\"%v\" is not greater than or equal to \"%v\"", msgAndArgs...) + return compareTwoValues(t, e1, e2, []compareResult{compareGreater, compareEqual}, "\"%v\" is not greater than or equal to \"%v\"", msgAndArgs...) } // Less asserts that the first element is less than the second @@ -406,7 +415,7 @@ func Less(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) if h, ok := t.(tHelper); ok { h.Helper() } - return compareTwoValues(t, e1, e2, []CompareType{compareLess}, "\"%v\" is not less than \"%v\"", msgAndArgs...) + return compareTwoValues(t, e1, e2, []compareResult{compareLess}, "\"%v\" is not less than \"%v\"", msgAndArgs...) } // LessOrEqual asserts that the first element is less than or equal to the second @@ -419,7 +428,7 @@ func LessOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...inter if h, ok := t.(tHelper); ok { h.Helper() } - return compareTwoValues(t, e1, e2, []CompareType{compareLess, compareEqual}, "\"%v\" is not less than or equal to \"%v\"", msgAndArgs...) + return compareTwoValues(t, e1, e2, []compareResult{compareLess, compareEqual}, "\"%v\" is not less than or equal to \"%v\"", msgAndArgs...) } // Positive asserts that the specified element is positive @@ -431,7 +440,7 @@ func Positive(t TestingT, e interface{}, msgAndArgs ...interface{}) bool { h.Helper() } zero := reflect.Zero(reflect.TypeOf(e)) - return compareTwoValues(t, e, zero.Interface(), []CompareType{compareGreater}, "\"%v\" is not positive", msgAndArgs...) + return compareTwoValues(t, e, zero.Interface(), []compareResult{compareGreater}, "\"%v\" is not positive", msgAndArgs...) } // Negative asserts that the specified element is negative @@ -443,10 +452,10 @@ func Negative(t TestingT, e interface{}, msgAndArgs ...interface{}) bool { h.Helper() } zero := reflect.Zero(reflect.TypeOf(e)) - return compareTwoValues(t, e, zero.Interface(), []CompareType{compareLess}, "\"%v\" is not negative", msgAndArgs...) + return compareTwoValues(t, e, zero.Interface(), []compareResult{compareLess}, "\"%v\" is not negative", msgAndArgs...) } -func compareTwoValues(t TestingT, e1 interface{}, e2 interface{}, allowedComparesResults []CompareType, failMessage string, msgAndArgs ...interface{}) bool { +func compareTwoValues(t TestingT, e1 interface{}, e2 interface{}, allowedComparesResults []compareResult, failMessage string, msgAndArgs ...interface{}) bool { if h, ok := t.(tHelper); ok { h.Helper() } @@ -469,7 +478,7 @@ func compareTwoValues(t TestingT, e1 interface{}, e2 interface{}, allowedCompare return true } -func containsValue(values []CompareType, value CompareType) bool { +func containsValue(values []compareResult, value compareResult) bool { for _, v := range values { if v == value { return true diff --git a/vendor/github.com/stretchr/testify/assert/assertion_format.go b/vendor/github.com/stretchr/testify/assert/assertion_format.go index 3ddab109a..190634165 100644 --- a/vendor/github.com/stretchr/testify/assert/assertion_format.go +++ b/vendor/github.com/stretchr/testify/assert/assertion_format.go @@ -104,8 +104,8 @@ func EqualExportedValuesf(t TestingT, expected interface{}, actual interface{}, return EqualExportedValues(t, expected, actual, append([]interface{}{msg}, args...)...) } -// EqualValuesf asserts that two objects are equal or convertible to the same types -// and equal. +// EqualValuesf asserts that two objects are equal or convertible to the larger +// type and equal. // // assert.EqualValuesf(t, uint32(123), int32(123), "error message %s", "formatted") func EqualValuesf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) bool { @@ -186,7 +186,7 @@ func Eventuallyf(t TestingT, condition func() bool, waitFor time.Duration, tick // assert.EventuallyWithTf(t, func(c *assert.CollectT, "error message %s", "formatted") { // // add assertions as needed; any assertion failure will fail the current tick // assert.True(c, externalValue, "expected 'externalValue' to be true") -// }, 1*time.Second, 10*time.Second, "external state has not changed to 'true'; still false") +// }, 10*time.Second, 1*time.Second, "external state has not changed to 'true'; still false") func EventuallyWithTf(t TestingT, condition func(collect *CollectT), waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) bool { if h, ok := t.(tHelper); ok { h.Helper() @@ -568,6 +568,23 @@ func NotContainsf(t TestingT, s interface{}, contains interface{}, msg string, a return NotContains(t, s, contains, append([]interface{}{msg}, args...)...) } +// NotElementsMatchf asserts that the specified listA(array, slice...) is NOT equal to specified +// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements, +// the number of appearances of each of them in both lists should not match. +// This is an inverse of ElementsMatch. +// +// assert.NotElementsMatchf(t, [1, 1, 2, 3], [1, 1, 2, 3], "error message %s", "formatted") -> false +// +// assert.NotElementsMatchf(t, [1, 1, 2, 3], [1, 2, 3], "error message %s", "formatted") -> true +// +// assert.NotElementsMatchf(t, [1, 2, 3], [1, 2, 4], "error message %s", "formatted") -> true +func NotElementsMatchf(t TestingT, listA interface{}, listB interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return NotElementsMatch(t, listA, listB, append([]interface{}{msg}, args...)...) +} + // NotEmptyf asserts that the specified object is NOT empty. I.e. not nil, "", false, 0 or either // a slice or a channel with len == 0. // @@ -604,7 +621,16 @@ func NotEqualValuesf(t TestingT, expected interface{}, actual interface{}, msg s return NotEqualValues(t, expected, actual, append([]interface{}{msg}, args...)...) } -// NotErrorIsf asserts that at none of the errors in err's chain matches target. +// NotErrorAsf asserts that none of the errors in err's chain matches target, +// but if so, sets target to that error value. +func NotErrorAsf(t TestingT, err error, target interface{}, msg string, args ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + return NotErrorAs(t, err, target, append([]interface{}{msg}, args...)...) +} + +// NotErrorIsf asserts that none of the errors in err's chain matches target. // This is a wrapper for errors.Is. func NotErrorIsf(t TestingT, err error, target error, msg string, args ...interface{}) bool { if h, ok := t.(tHelper); ok { diff --git a/vendor/github.com/stretchr/testify/assert/assertion_forward.go b/vendor/github.com/stretchr/testify/assert/assertion_forward.go index a84e09bd4..21629087b 100644 --- a/vendor/github.com/stretchr/testify/assert/assertion_forward.go +++ b/vendor/github.com/stretchr/testify/assert/assertion_forward.go @@ -186,8 +186,8 @@ func (a *Assertions) EqualExportedValuesf(expected interface{}, actual interface return EqualExportedValuesf(a.t, expected, actual, msg, args...) } -// EqualValues asserts that two objects are equal or convertible to the same types -// and equal. +// EqualValues asserts that two objects are equal or convertible to the larger +// type and equal. // // a.EqualValues(uint32(123), int32(123)) func (a *Assertions) EqualValues(expected interface{}, actual interface{}, msgAndArgs ...interface{}) bool { @@ -197,8 +197,8 @@ func (a *Assertions) EqualValues(expected interface{}, actual interface{}, msgAn return EqualValues(a.t, expected, actual, msgAndArgs...) } -// EqualValuesf asserts that two objects are equal or convertible to the same types -// and equal. +// EqualValuesf asserts that two objects are equal or convertible to the larger +// type and equal. // // a.EqualValuesf(uint32(123), int32(123), "error message %s", "formatted") func (a *Assertions) EqualValuesf(expected interface{}, actual interface{}, msg string, args ...interface{}) bool { @@ -336,7 +336,7 @@ func (a *Assertions) Eventually(condition func() bool, waitFor time.Duration, ti // a.EventuallyWithT(func(c *assert.CollectT) { // // add assertions as needed; any assertion failure will fail the current tick // assert.True(c, externalValue, "expected 'externalValue' to be true") -// }, 1*time.Second, 10*time.Second, "external state has not changed to 'true'; still false") +// }, 10*time.Second, 1*time.Second, "external state has not changed to 'true'; still false") func (a *Assertions) EventuallyWithT(condition func(collect *CollectT), waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) bool { if h, ok := a.t.(tHelper); ok { h.Helper() @@ -361,7 +361,7 @@ func (a *Assertions) EventuallyWithT(condition func(collect *CollectT), waitFor // a.EventuallyWithTf(func(c *assert.CollectT, "error message %s", "formatted") { // // add assertions as needed; any assertion failure will fail the current tick // assert.True(c, externalValue, "expected 'externalValue' to be true") -// }, 1*time.Second, 10*time.Second, "external state has not changed to 'true'; still false") +// }, 10*time.Second, 1*time.Second, "external state has not changed to 'true'; still false") func (a *Assertions) EventuallyWithTf(condition func(collect *CollectT), waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) bool { if h, ok := a.t.(tHelper); ok { h.Helper() @@ -1128,6 +1128,40 @@ func (a *Assertions) NotContainsf(s interface{}, contains interface{}, msg strin return NotContainsf(a.t, s, contains, msg, args...) } +// NotElementsMatch asserts that the specified listA(array, slice...) is NOT equal to specified +// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements, +// the number of appearances of each of them in both lists should not match. +// This is an inverse of ElementsMatch. +// +// a.NotElementsMatch([1, 1, 2, 3], [1, 1, 2, 3]) -> false +// +// a.NotElementsMatch([1, 1, 2, 3], [1, 2, 3]) -> true +// +// a.NotElementsMatch([1, 2, 3], [1, 2, 4]) -> true +func (a *Assertions) NotElementsMatch(listA interface{}, listB interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NotElementsMatch(a.t, listA, listB, msgAndArgs...) +} + +// NotElementsMatchf asserts that the specified listA(array, slice...) is NOT equal to specified +// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements, +// the number of appearances of each of them in both lists should not match. +// This is an inverse of ElementsMatch. +// +// a.NotElementsMatchf([1, 1, 2, 3], [1, 1, 2, 3], "error message %s", "formatted") -> false +// +// a.NotElementsMatchf([1, 1, 2, 3], [1, 2, 3], "error message %s", "formatted") -> true +// +// a.NotElementsMatchf([1, 2, 3], [1, 2, 4], "error message %s", "formatted") -> true +func (a *Assertions) NotElementsMatchf(listA interface{}, listB interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NotElementsMatchf(a.t, listA, listB, msg, args...) +} + // NotEmpty asserts that the specified object is NOT empty. I.e. not nil, "", false, 0 or either // a slice or a channel with len == 0. // @@ -1200,7 +1234,25 @@ func (a *Assertions) NotEqualf(expected interface{}, actual interface{}, msg str return NotEqualf(a.t, expected, actual, msg, args...) } -// NotErrorIs asserts that at none of the errors in err's chain matches target. +// NotErrorAs asserts that none of the errors in err's chain matches target, +// but if so, sets target to that error value. +func (a *Assertions) NotErrorAs(err error, target interface{}, msgAndArgs ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NotErrorAs(a.t, err, target, msgAndArgs...) +} + +// NotErrorAsf asserts that none of the errors in err's chain matches target, +// but if so, sets target to that error value. +func (a *Assertions) NotErrorAsf(err error, target interface{}, msg string, args ...interface{}) bool { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + return NotErrorAsf(a.t, err, target, msg, args...) +} + +// NotErrorIs asserts that none of the errors in err's chain matches target. // This is a wrapper for errors.Is. func (a *Assertions) NotErrorIs(err error, target error, msgAndArgs ...interface{}) bool { if h, ok := a.t.(tHelper); ok { @@ -1209,7 +1261,7 @@ func (a *Assertions) NotErrorIs(err error, target error, msgAndArgs ...interface return NotErrorIs(a.t, err, target, msgAndArgs...) } -// NotErrorIsf asserts that at none of the errors in err's chain matches target. +// NotErrorIsf asserts that none of the errors in err's chain matches target. // This is a wrapper for errors.Is. func (a *Assertions) NotErrorIsf(err error, target error, msg string, args ...interface{}) bool { if h, ok := a.t.(tHelper); ok { diff --git a/vendor/github.com/stretchr/testify/assert/assertion_order.go b/vendor/github.com/stretchr/testify/assert/assertion_order.go index 00df62a05..1d2f71824 100644 --- a/vendor/github.com/stretchr/testify/assert/assertion_order.go +++ b/vendor/github.com/stretchr/testify/assert/assertion_order.go @@ -6,7 +6,7 @@ import ( ) // isOrdered checks that collection contains orderable elements. -func isOrdered(t TestingT, object interface{}, allowedComparesResults []CompareType, failMessage string, msgAndArgs ...interface{}) bool { +func isOrdered(t TestingT, object interface{}, allowedComparesResults []compareResult, failMessage string, msgAndArgs ...interface{}) bool { objKind := reflect.TypeOf(object).Kind() if objKind != reflect.Slice && objKind != reflect.Array { return false @@ -50,7 +50,7 @@ func isOrdered(t TestingT, object interface{}, allowedComparesResults []CompareT // assert.IsIncreasing(t, []float{1, 2}) // assert.IsIncreasing(t, []string{"a", "b"}) func IsIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) bool { - return isOrdered(t, object, []CompareType{compareLess}, "\"%v\" is not less than \"%v\"", msgAndArgs...) + return isOrdered(t, object, []compareResult{compareLess}, "\"%v\" is not less than \"%v\"", msgAndArgs...) } // IsNonIncreasing asserts that the collection is not increasing @@ -59,7 +59,7 @@ func IsIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) boo // assert.IsNonIncreasing(t, []float{2, 1}) // assert.IsNonIncreasing(t, []string{"b", "a"}) func IsNonIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) bool { - return isOrdered(t, object, []CompareType{compareEqual, compareGreater}, "\"%v\" is not greater than or equal to \"%v\"", msgAndArgs...) + return isOrdered(t, object, []compareResult{compareEqual, compareGreater}, "\"%v\" is not greater than or equal to \"%v\"", msgAndArgs...) } // IsDecreasing asserts that the collection is decreasing @@ -68,7 +68,7 @@ func IsNonIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) // assert.IsDecreasing(t, []float{2, 1}) // assert.IsDecreasing(t, []string{"b", "a"}) func IsDecreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) bool { - return isOrdered(t, object, []CompareType{compareGreater}, "\"%v\" is not greater than \"%v\"", msgAndArgs...) + return isOrdered(t, object, []compareResult{compareGreater}, "\"%v\" is not greater than \"%v\"", msgAndArgs...) } // IsNonDecreasing asserts that the collection is not decreasing @@ -77,5 +77,5 @@ func IsDecreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) boo // assert.IsNonDecreasing(t, []float{1, 2}) // assert.IsNonDecreasing(t, []string{"a", "b"}) func IsNonDecreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) bool { - return isOrdered(t, object, []CompareType{compareLess, compareEqual}, "\"%v\" is not less than or equal to \"%v\"", msgAndArgs...) + return isOrdered(t, object, []compareResult{compareLess, compareEqual}, "\"%v\" is not less than or equal to \"%v\"", msgAndArgs...) } diff --git a/vendor/github.com/stretchr/testify/assert/assertions.go b/vendor/github.com/stretchr/testify/assert/assertions.go index 0b7570f21..4e91332bb 100644 --- a/vendor/github.com/stretchr/testify/assert/assertions.go +++ b/vendor/github.com/stretchr/testify/assert/assertions.go @@ -19,7 +19,9 @@ import ( "github.com/davecgh/go-spew/spew" "github.com/pmezard/go-difflib/difflib" - "gopkg.in/yaml.v3" + + // Wrapper around gopkg.in/yaml.v3 + "github.com/stretchr/testify/assert/yaml" ) //go:generate sh -c "cd ../_codegen && go build && cd - && ../_codegen/_codegen -output-package=assert -template=assertion_format.go.tmpl" @@ -45,6 +47,10 @@ type BoolAssertionFunc func(TestingT, bool, ...interface{}) bool // for table driven tests. type ErrorAssertionFunc func(TestingT, error, ...interface{}) bool +// PanicAssertionFunc is a common function prototype when validating a panic value. Can be useful +// for table driven tests. +type PanicAssertionFunc = func(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool + // Comparison is a custom function that returns true on success and false on failure type Comparison func() (success bool) @@ -496,7 +502,13 @@ func Same(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) b h.Helper() } - if !samePointers(expected, actual) { + same, ok := samePointers(expected, actual) + if !ok { + return Fail(t, "Both arguments must be pointers", msgAndArgs...) + } + + if !same { + // both are pointers but not the same type & pointing to the same address return Fail(t, fmt.Sprintf("Not same: \n"+ "expected: %p %#v\n"+ "actual : %p %#v", expected, expected, actual, actual), msgAndArgs...) @@ -516,7 +528,13 @@ func NotSame(t TestingT, expected, actual interface{}, msgAndArgs ...interface{} h.Helper() } - if samePointers(expected, actual) { + same, ok := samePointers(expected, actual) + if !ok { + //fails when the arguments are not pointers + return !(Fail(t, "Both arguments must be pointers", msgAndArgs...)) + } + + if same { return Fail(t, fmt.Sprintf( "Expected and actual point to the same object: %p %#v", expected, expected), msgAndArgs...) @@ -524,21 +542,23 @@ func NotSame(t TestingT, expected, actual interface{}, msgAndArgs ...interface{} return true } -// samePointers compares two generic interface objects and returns whether -// they point to the same object -func samePointers(first, second interface{}) bool { +// samePointers checks if two generic interface objects are pointers of the same +// type pointing to the same object. It returns two values: same indicating if +// they are the same type and point to the same object, and ok indicating that +// both inputs are pointers. +func samePointers(first, second interface{}) (same bool, ok bool) { firstPtr, secondPtr := reflect.ValueOf(first), reflect.ValueOf(second) if firstPtr.Kind() != reflect.Ptr || secondPtr.Kind() != reflect.Ptr { - return false + return false, false //not both are pointers } firstType, secondType := reflect.TypeOf(first), reflect.TypeOf(second) if firstType != secondType { - return false + return false, true // both are pointers, but of different types } // compare pointer addresses - return first == second + return first == second, true } // formatUnequalValues takes two values of arbitrary types and returns string @@ -572,8 +592,8 @@ func truncatingFormat(data interface{}) string { return value } -// EqualValues asserts that two objects are equal or convertible to the same types -// and equal. +// EqualValues asserts that two objects are equal or convertible to the larger +// type and equal. // // assert.EqualValues(t, uint32(123), int32(123)) func EqualValues(t TestingT, expected, actual interface{}, msgAndArgs ...interface{}) bool { @@ -615,21 +635,6 @@ func EqualExportedValues(t TestingT, expected, actual interface{}, msgAndArgs .. return Fail(t, fmt.Sprintf("Types expected to match exactly\n\t%v != %v", aType, bType), msgAndArgs...) } - if aType.Kind() == reflect.Ptr { - aType = aType.Elem() - } - if bType.Kind() == reflect.Ptr { - bType = bType.Elem() - } - - if aType.Kind() != reflect.Struct { - return Fail(t, fmt.Sprintf("Types expected to both be struct or pointer to struct \n\t%v != %v", aType.Kind(), reflect.Struct), msgAndArgs...) - } - - if bType.Kind() != reflect.Struct { - return Fail(t, fmt.Sprintf("Types expected to both be struct or pointer to struct \n\t%v != %v", bType.Kind(), reflect.Struct), msgAndArgs...) - } - expected = copyExportedFields(expected) actual = copyExportedFields(actual) @@ -1170,6 +1175,39 @@ func formatListDiff(listA, listB interface{}, extraA, extraB []interface{}) stri return msg.String() } +// NotElementsMatch asserts that the specified listA(array, slice...) is NOT equal to specified +// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements, +// the number of appearances of each of them in both lists should not match. +// This is an inverse of ElementsMatch. +// +// assert.NotElementsMatch(t, [1, 1, 2, 3], [1, 1, 2, 3]) -> false +// +// assert.NotElementsMatch(t, [1, 1, 2, 3], [1, 2, 3]) -> true +// +// assert.NotElementsMatch(t, [1, 2, 3], [1, 2, 4]) -> true +func NotElementsMatch(t TestingT, listA, listB interface{}, msgAndArgs ...interface{}) (ok bool) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if isEmpty(listA) && isEmpty(listB) { + return Fail(t, "listA and listB contain the same elements", msgAndArgs) + } + + if !isList(t, listA, msgAndArgs...) { + return Fail(t, "listA is not a list type", msgAndArgs...) + } + if !isList(t, listB, msgAndArgs...) { + return Fail(t, "listB is not a list type", msgAndArgs...) + } + + extraA, extraB := diffLists(listA, listB) + if len(extraA) == 0 && len(extraB) == 0 { + return Fail(t, "listA and listB contain the same elements", msgAndArgs) + } + + return true +} + // Condition uses a Comparison to assert a complex condition. func Condition(t TestingT, comp Comparison, msgAndArgs ...interface{}) bool { if h, ok := t.(tHelper); ok { @@ -1488,6 +1526,9 @@ func InEpsilon(t TestingT, expected, actual interface{}, epsilon float64, msgAnd if err != nil { return Fail(t, err.Error(), msgAndArgs...) } + if math.IsNaN(actualEpsilon) { + return Fail(t, "relative error is NaN", msgAndArgs...) + } if actualEpsilon > epsilon { return Fail(t, fmt.Sprintf("Relative error is too high: %#v (expected)\n"+ " < %#v (actual)", epsilon, actualEpsilon), msgAndArgs...) @@ -1611,7 +1652,6 @@ func ErrorContains(t TestingT, theError error, contains string, msgAndArgs ...in // matchRegexp return true if a specified regexp matches a string. func matchRegexp(rx interface{}, str interface{}) bool { - var r *regexp.Regexp if rr, ok := rx.(*regexp.Regexp); ok { r = rr @@ -1619,7 +1659,14 @@ func matchRegexp(rx interface{}, str interface{}) bool { r = regexp.MustCompile(fmt.Sprint(rx)) } - return (r.FindStringIndex(fmt.Sprint(str)) != nil) + switch v := str.(type) { + case []byte: + return r.Match(v) + case string: + return r.MatchString(v) + default: + return r.MatchString(fmt.Sprint(v)) + } } @@ -1872,7 +1919,7 @@ var spewConfigStringerEnabled = spew.ConfigState{ MaxDepth: 10, } -type tHelper interface { +type tHelper = interface { Helper() } @@ -1911,6 +1958,9 @@ func Eventually(t TestingT, condition func() bool, waitFor time.Duration, tick t // CollectT implements the TestingT interface and collects all errors. type CollectT struct { + // A slice of errors. Non-nil slice denotes a failure. + // If it's non-nil but len(c.errors) == 0, this is also a failure + // obtained by direct c.FailNow() call. errors []error } @@ -1919,9 +1969,10 @@ func (c *CollectT) Errorf(format string, args ...interface{}) { c.errors = append(c.errors, fmt.Errorf(format, args...)) } -// FailNow panics. -func (*CollectT) FailNow() { - panic("Assertion failed") +// FailNow stops execution by calling runtime.Goexit. +func (c *CollectT) FailNow() { + c.fail() + runtime.Goexit() } // Deprecated: That was a method for internal usage that should not have been published. Now just panics. @@ -1934,6 +1985,16 @@ func (*CollectT) Copy(TestingT) { panic("Copy() is deprecated") } +func (c *CollectT) fail() { + if !c.failed() { + c.errors = []error{} // Make it non-nil to mark a failure. + } +} + +func (c *CollectT) failed() bool { + return c.errors != nil +} + // EventuallyWithT asserts that given condition will be met in waitFor time, // periodically checking target function each tick. In contrast to Eventually, // it supplies a CollectT to the condition function, so that the condition @@ -1951,14 +2012,14 @@ func (*CollectT) Copy(TestingT) { // assert.EventuallyWithT(t, func(c *assert.CollectT) { // // add assertions as needed; any assertion failure will fail the current tick // assert.True(c, externalValue, "expected 'externalValue' to be true") -// }, 1*time.Second, 10*time.Second, "external state has not changed to 'true'; still false") +// }, 10*time.Second, 1*time.Second, "external state has not changed to 'true'; still false") func EventuallyWithT(t TestingT, condition func(collect *CollectT), waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) bool { if h, ok := t.(tHelper); ok { h.Helper() } var lastFinishedTickErrs []error - ch := make(chan []error, 1) + ch := make(chan *CollectT, 1) timer := time.NewTimer(waitFor) defer timer.Stop() @@ -1978,16 +2039,16 @@ func EventuallyWithT(t TestingT, condition func(collect *CollectT), waitFor time go func() { collect := new(CollectT) defer func() { - ch <- collect.errors + ch <- collect }() condition(collect) }() - case errs := <-ch: - if len(errs) == 0 { + case collect := <-ch: + if !collect.failed() { return true } // Keep the errors from the last ended condition, so that they can be copied to t if timeout is reached. - lastFinishedTickErrs = errs + lastFinishedTickErrs = collect.errors tick = ticker.C } } @@ -2049,7 +2110,7 @@ func ErrorIs(t TestingT, err, target error, msgAndArgs ...interface{}) bool { ), msgAndArgs...) } -// NotErrorIs asserts that at none of the errors in err's chain matches target. +// NotErrorIs asserts that none of the errors in err's chain matches target. // This is a wrapper for errors.Is. func NotErrorIs(t TestingT, err, target error, msgAndArgs ...interface{}) bool { if h, ok := t.(tHelper); ok { @@ -2090,6 +2151,24 @@ func ErrorAs(t TestingT, err error, target interface{}, msgAndArgs ...interface{ ), msgAndArgs...) } +// NotErrorAs asserts that none of the errors in err's chain matches target, +// but if so, sets target to that error value. +func NotErrorAs(t TestingT, err error, target interface{}, msgAndArgs ...interface{}) bool { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if !errors.As(err, target) { + return true + } + + chain := buildErrorChainString(err) + + return Fail(t, fmt.Sprintf("Target error should not be in err chain:\n"+ + "found: %q\n"+ + "in chain: %s", target, chain, + ), msgAndArgs...) +} + func buildErrorChainString(err error) string { if err == nil { return "" diff --git a/vendor/github.com/stretchr/testify/assert/yaml/yaml_custom.go b/vendor/github.com/stretchr/testify/assert/yaml/yaml_custom.go new file mode 100644 index 000000000..baa0cc7d7 --- /dev/null +++ b/vendor/github.com/stretchr/testify/assert/yaml/yaml_custom.go @@ -0,0 +1,25 @@ +//go:build testify_yaml_custom && !testify_yaml_fail && !testify_yaml_default +// +build testify_yaml_custom,!testify_yaml_fail,!testify_yaml_default + +// Package yaml is an implementation of YAML functions that calls a pluggable implementation. +// +// This implementation is selected with the testify_yaml_custom build tag. +// +// go test -tags testify_yaml_custom +// +// This implementation can be used at build time to replace the default implementation +// to avoid linking with [gopkg.in/yaml.v3]. +// +// In your test package: +// +// import assertYaml "github.com/stretchr/testify/assert/yaml" +// +// func init() { +// assertYaml.Unmarshal = func (in []byte, out interface{}) error { +// // ... +// return nil +// } +// } +package yaml + +var Unmarshal func(in []byte, out interface{}) error diff --git a/vendor/github.com/stretchr/testify/assert/yaml/yaml_default.go b/vendor/github.com/stretchr/testify/assert/yaml/yaml_default.go new file mode 100644 index 000000000..b83c6cf64 --- /dev/null +++ b/vendor/github.com/stretchr/testify/assert/yaml/yaml_default.go @@ -0,0 +1,37 @@ +//go:build !testify_yaml_fail && !testify_yaml_custom +// +build !testify_yaml_fail,!testify_yaml_custom + +// Package yaml is just an indirection to handle YAML deserialization. +// +// This package is just an indirection that allows the builder to override the +// indirection with an alternative implementation of this package that uses +// another implementation of YAML deserialization. This allows to not either not +// use YAML deserialization at all, or to use another implementation than +// [gopkg.in/yaml.v3] (for example for license compatibility reasons, see [PR #1120]). +// +// Alternative implementations are selected using build tags: +// +// - testify_yaml_fail: [Unmarshal] always fails with an error +// - testify_yaml_custom: [Unmarshal] is a variable. Caller must initialize it +// before calling any of [github.com/stretchr/testify/assert.YAMLEq] or +// [github.com/stretchr/testify/assert.YAMLEqf]. +// +// Usage: +// +// go test -tags testify_yaml_fail +// +// You can check with "go list" which implementation is linked: +// +// go list -f '{{.Imports}}' github.com/stretchr/testify/assert/yaml +// go list -tags testify_yaml_fail -f '{{.Imports}}' github.com/stretchr/testify/assert/yaml +// go list -tags testify_yaml_custom -f '{{.Imports}}' github.com/stretchr/testify/assert/yaml +// +// [PR #1120]: https://github.com/stretchr/testify/pull/1120 +package yaml + +import goyaml "gopkg.in/yaml.v3" + +// Unmarshal is just a wrapper of [gopkg.in/yaml.v3.Unmarshal]. +func Unmarshal(in []byte, out interface{}) error { + return goyaml.Unmarshal(in, out) +} diff --git a/vendor/github.com/stretchr/testify/assert/yaml/yaml_fail.go b/vendor/github.com/stretchr/testify/assert/yaml/yaml_fail.go new file mode 100644 index 000000000..e78f7dfe6 --- /dev/null +++ b/vendor/github.com/stretchr/testify/assert/yaml/yaml_fail.go @@ -0,0 +1,18 @@ +//go:build testify_yaml_fail && !testify_yaml_custom && !testify_yaml_default +// +build testify_yaml_fail,!testify_yaml_custom,!testify_yaml_default + +// Package yaml is an implementation of YAML functions that always fail. +// +// This implementation can be used at build time to replace the default implementation +// to avoid linking with [gopkg.in/yaml.v3]: +// +// go test -tags testify_yaml_fail +package yaml + +import "errors" + +var errNotImplemented = errors.New("YAML functions are not available (see https://pkg.go.dev/github.com/stretchr/testify/assert/yaml)") + +func Unmarshal([]byte, interface{}) error { + return errNotImplemented +} diff --git a/vendor/github.com/stretchr/testify/require/require.go b/vendor/github.com/stretchr/testify/require/require.go index 506a82f80..d8921950d 100644 --- a/vendor/github.com/stretchr/testify/require/require.go +++ b/vendor/github.com/stretchr/testify/require/require.go @@ -34,9 +34,9 @@ func Conditionf(t TestingT, comp assert.Comparison, msg string, args ...interfac // Contains asserts that the specified string, list(array, slice...) or map contains the // specified substring or element. // -// assert.Contains(t, "Hello World", "World") -// assert.Contains(t, ["Hello", "World"], "World") -// assert.Contains(t, {"Hello": "World"}, "Hello") +// require.Contains(t, "Hello World", "World") +// require.Contains(t, ["Hello", "World"], "World") +// require.Contains(t, {"Hello": "World"}, "Hello") func Contains(t TestingT, s interface{}, contains interface{}, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -50,9 +50,9 @@ func Contains(t TestingT, s interface{}, contains interface{}, msgAndArgs ...int // Containsf asserts that the specified string, list(array, slice...) or map contains the // specified substring or element. // -// assert.Containsf(t, "Hello World", "World", "error message %s", "formatted") -// assert.Containsf(t, ["Hello", "World"], "World", "error message %s", "formatted") -// assert.Containsf(t, {"Hello": "World"}, "Hello", "error message %s", "formatted") +// require.Containsf(t, "Hello World", "World", "error message %s", "formatted") +// require.Containsf(t, ["Hello", "World"], "World", "error message %s", "formatted") +// require.Containsf(t, {"Hello": "World"}, "Hello", "error message %s", "formatted") func Containsf(t TestingT, s interface{}, contains interface{}, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -91,7 +91,7 @@ func DirExistsf(t TestingT, path string, msg string, args ...interface{}) { // listB(array, slice...) ignoring the order of the elements. If there are duplicate elements, // the number of appearances of each of them in both lists should match. // -// assert.ElementsMatch(t, [1, 3, 2, 3], [1, 3, 3, 2]) +// require.ElementsMatch(t, [1, 3, 2, 3], [1, 3, 3, 2]) func ElementsMatch(t TestingT, listA interface{}, listB interface{}, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -106,7 +106,7 @@ func ElementsMatch(t TestingT, listA interface{}, listB interface{}, msgAndArgs // listB(array, slice...) ignoring the order of the elements. If there are duplicate elements, // the number of appearances of each of them in both lists should match. // -// assert.ElementsMatchf(t, [1, 3, 2, 3], [1, 3, 3, 2], "error message %s", "formatted") +// require.ElementsMatchf(t, [1, 3, 2, 3], [1, 3, 3, 2], "error message %s", "formatted") func ElementsMatchf(t TestingT, listA interface{}, listB interface{}, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -120,7 +120,7 @@ func ElementsMatchf(t TestingT, listA interface{}, listB interface{}, msg string // Empty asserts that the specified object is empty. I.e. nil, "", false, 0 or either // a slice or a channel with len == 0. // -// assert.Empty(t, obj) +// require.Empty(t, obj) func Empty(t TestingT, object interface{}, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -134,7 +134,7 @@ func Empty(t TestingT, object interface{}, msgAndArgs ...interface{}) { // Emptyf asserts that the specified object is empty. I.e. nil, "", false, 0 or either // a slice or a channel with len == 0. // -// assert.Emptyf(t, obj, "error message %s", "formatted") +// require.Emptyf(t, obj, "error message %s", "formatted") func Emptyf(t TestingT, object interface{}, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -147,7 +147,7 @@ func Emptyf(t TestingT, object interface{}, msg string, args ...interface{}) { // Equal asserts that two objects are equal. // -// assert.Equal(t, 123, 123) +// require.Equal(t, 123, 123) // // Pointer variable equality is determined based on the equality of the // referenced values (as opposed to the memory addresses). Function equality @@ -166,7 +166,7 @@ func Equal(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...i // and that it is equal to the provided error. // // actualObj, err := SomeFunction() -// assert.EqualError(t, err, expectedErrorString) +// require.EqualError(t, err, expectedErrorString) func EqualError(t TestingT, theError error, errString string, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -181,7 +181,7 @@ func EqualError(t TestingT, theError error, errString string, msgAndArgs ...inte // and that it is equal to the provided error. // // actualObj, err := SomeFunction() -// assert.EqualErrorf(t, err, expectedErrorString, "error message %s", "formatted") +// require.EqualErrorf(t, err, expectedErrorString, "error message %s", "formatted") func EqualErrorf(t TestingT, theError error, errString string, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -200,8 +200,8 @@ func EqualErrorf(t TestingT, theError error, errString string, msg string, args // Exported int // notExported int // } -// assert.EqualExportedValues(t, S{1, 2}, S{1, 3}) => true -// assert.EqualExportedValues(t, S{1, 2}, S{2, 3}) => false +// require.EqualExportedValues(t, S{1, 2}, S{1, 3}) => true +// require.EqualExportedValues(t, S{1, 2}, S{2, 3}) => false func EqualExportedValues(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -220,8 +220,8 @@ func EqualExportedValues(t TestingT, expected interface{}, actual interface{}, m // Exported int // notExported int // } -// assert.EqualExportedValuesf(t, S{1, 2}, S{1, 3}, "error message %s", "formatted") => true -// assert.EqualExportedValuesf(t, S{1, 2}, S{2, 3}, "error message %s", "formatted") => false +// require.EqualExportedValuesf(t, S{1, 2}, S{1, 3}, "error message %s", "formatted") => true +// require.EqualExportedValuesf(t, S{1, 2}, S{2, 3}, "error message %s", "formatted") => false func EqualExportedValuesf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -232,10 +232,10 @@ func EqualExportedValuesf(t TestingT, expected interface{}, actual interface{}, t.FailNow() } -// EqualValues asserts that two objects are equal or convertible to the same types -// and equal. +// EqualValues asserts that two objects are equal or convertible to the larger +// type and equal. // -// assert.EqualValues(t, uint32(123), int32(123)) +// require.EqualValues(t, uint32(123), int32(123)) func EqualValues(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -246,10 +246,10 @@ func EqualValues(t TestingT, expected interface{}, actual interface{}, msgAndArg t.FailNow() } -// EqualValuesf asserts that two objects are equal or convertible to the same types -// and equal. +// EqualValuesf asserts that two objects are equal or convertible to the larger +// type and equal. // -// assert.EqualValuesf(t, uint32(123), int32(123), "error message %s", "formatted") +// require.EqualValuesf(t, uint32(123), int32(123), "error message %s", "formatted") func EqualValuesf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -262,7 +262,7 @@ func EqualValuesf(t TestingT, expected interface{}, actual interface{}, msg stri // Equalf asserts that two objects are equal. // -// assert.Equalf(t, 123, 123, "error message %s", "formatted") +// require.Equalf(t, 123, 123, "error message %s", "formatted") // // Pointer variable equality is determined based on the equality of the // referenced values (as opposed to the memory addresses). Function equality @@ -280,8 +280,8 @@ func Equalf(t TestingT, expected interface{}, actual interface{}, msg string, ar // Error asserts that a function returned an error (i.e. not `nil`). // // actualObj, err := SomeFunction() -// if assert.Error(t, err) { -// assert.Equal(t, expectedError, err) +// if require.Error(t, err) { +// require.Equal(t, expectedError, err) // } func Error(t TestingT, err error, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { @@ -321,7 +321,7 @@ func ErrorAsf(t TestingT, err error, target interface{}, msg string, args ...int // and that the error contains the specified substring. // // actualObj, err := SomeFunction() -// assert.ErrorContains(t, err, expectedErrorSubString) +// require.ErrorContains(t, err, expectedErrorSubString) func ErrorContains(t TestingT, theError error, contains string, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -336,7 +336,7 @@ func ErrorContains(t TestingT, theError error, contains string, msgAndArgs ...in // and that the error contains the specified substring. // // actualObj, err := SomeFunction() -// assert.ErrorContainsf(t, err, expectedErrorSubString, "error message %s", "formatted") +// require.ErrorContainsf(t, err, expectedErrorSubString, "error message %s", "formatted") func ErrorContainsf(t TestingT, theError error, contains string, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -374,8 +374,8 @@ func ErrorIsf(t TestingT, err error, target error, msg string, args ...interface // Errorf asserts that a function returned an error (i.e. not `nil`). // // actualObj, err := SomeFunction() -// if assert.Errorf(t, err, "error message %s", "formatted") { -// assert.Equal(t, expectedErrorf, err) +// if require.Errorf(t, err, "error message %s", "formatted") { +// require.Equal(t, expectedErrorf, err) // } func Errorf(t TestingT, err error, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { @@ -390,7 +390,7 @@ func Errorf(t TestingT, err error, msg string, args ...interface{}) { // Eventually asserts that given condition will be met in waitFor time, // periodically checking target function each tick. // -// assert.Eventually(t, func() bool { return true; }, time.Second, 10*time.Millisecond) +// require.Eventually(t, func() bool { return true; }, time.Second, 10*time.Millisecond) func Eventually(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -415,10 +415,10 @@ func Eventually(t TestingT, condition func() bool, waitFor time.Duration, tick t // time.Sleep(8*time.Second) // externalValue = true // }() -// assert.EventuallyWithT(t, func(c *assert.CollectT) { +// require.EventuallyWithT(t, func(c *require.CollectT) { // // add assertions as needed; any assertion failure will fail the current tick -// assert.True(c, externalValue, "expected 'externalValue' to be true") -// }, 1*time.Second, 10*time.Second, "external state has not changed to 'true'; still false") +// require.True(c, externalValue, "expected 'externalValue' to be true") +// }, 10*time.Second, 1*time.Second, "external state has not changed to 'true'; still false") func EventuallyWithT(t TestingT, condition func(collect *assert.CollectT), waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -443,10 +443,10 @@ func EventuallyWithT(t TestingT, condition func(collect *assert.CollectT), waitF // time.Sleep(8*time.Second) // externalValue = true // }() -// assert.EventuallyWithTf(t, func(c *assert.CollectT, "error message %s", "formatted") { +// require.EventuallyWithTf(t, func(c *require.CollectT, "error message %s", "formatted") { // // add assertions as needed; any assertion failure will fail the current tick -// assert.True(c, externalValue, "expected 'externalValue' to be true") -// }, 1*time.Second, 10*time.Second, "external state has not changed to 'true'; still false") +// require.True(c, externalValue, "expected 'externalValue' to be true") +// }, 10*time.Second, 1*time.Second, "external state has not changed to 'true'; still false") func EventuallyWithTf(t TestingT, condition func(collect *assert.CollectT), waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -460,7 +460,7 @@ func EventuallyWithTf(t TestingT, condition func(collect *assert.CollectT), wait // Eventuallyf asserts that given condition will be met in waitFor time, // periodically checking target function each tick. // -// assert.Eventuallyf(t, func() bool { return true; }, time.Second, 10*time.Millisecond, "error message %s", "formatted") +// require.Eventuallyf(t, func() bool { return true; }, time.Second, 10*time.Millisecond, "error message %s", "formatted") func Eventuallyf(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -473,7 +473,7 @@ func Eventuallyf(t TestingT, condition func() bool, waitFor time.Duration, tick // Exactly asserts that two objects are equal in value and type. // -// assert.Exactly(t, int32(123), int64(123)) +// require.Exactly(t, int32(123), int64(123)) func Exactly(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -486,7 +486,7 @@ func Exactly(t TestingT, expected interface{}, actual interface{}, msgAndArgs .. // Exactlyf asserts that two objects are equal in value and type. // -// assert.Exactlyf(t, int32(123), int64(123), "error message %s", "formatted") +// require.Exactlyf(t, int32(123), int64(123), "error message %s", "formatted") func Exactlyf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -543,7 +543,7 @@ func Failf(t TestingT, failureMessage string, msg string, args ...interface{}) { // False asserts that the specified value is false. // -// assert.False(t, myBool) +// require.False(t, myBool) func False(t TestingT, value bool, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -556,7 +556,7 @@ func False(t TestingT, value bool, msgAndArgs ...interface{}) { // Falsef asserts that the specified value is false. // -// assert.Falsef(t, myBool, "error message %s", "formatted") +// require.Falsef(t, myBool, "error message %s", "formatted") func Falsef(t TestingT, value bool, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -593,9 +593,9 @@ func FileExistsf(t TestingT, path string, msg string, args ...interface{}) { // Greater asserts that the first element is greater than the second // -// assert.Greater(t, 2, 1) -// assert.Greater(t, float64(2), float64(1)) -// assert.Greater(t, "b", "a") +// require.Greater(t, 2, 1) +// require.Greater(t, float64(2), float64(1)) +// require.Greater(t, "b", "a") func Greater(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -608,10 +608,10 @@ func Greater(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface // GreaterOrEqual asserts that the first element is greater than or equal to the second // -// assert.GreaterOrEqual(t, 2, 1) -// assert.GreaterOrEqual(t, 2, 2) -// assert.GreaterOrEqual(t, "b", "a") -// assert.GreaterOrEqual(t, "b", "b") +// require.GreaterOrEqual(t, 2, 1) +// require.GreaterOrEqual(t, 2, 2) +// require.GreaterOrEqual(t, "b", "a") +// require.GreaterOrEqual(t, "b", "b") func GreaterOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -624,10 +624,10 @@ func GreaterOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...in // GreaterOrEqualf asserts that the first element is greater than or equal to the second // -// assert.GreaterOrEqualf(t, 2, 1, "error message %s", "formatted") -// assert.GreaterOrEqualf(t, 2, 2, "error message %s", "formatted") -// assert.GreaterOrEqualf(t, "b", "a", "error message %s", "formatted") -// assert.GreaterOrEqualf(t, "b", "b", "error message %s", "formatted") +// require.GreaterOrEqualf(t, 2, 1, "error message %s", "formatted") +// require.GreaterOrEqualf(t, 2, 2, "error message %s", "formatted") +// require.GreaterOrEqualf(t, "b", "a", "error message %s", "formatted") +// require.GreaterOrEqualf(t, "b", "b", "error message %s", "formatted") func GreaterOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -640,9 +640,9 @@ func GreaterOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg string, arg // Greaterf asserts that the first element is greater than the second // -// assert.Greaterf(t, 2, 1, "error message %s", "formatted") -// assert.Greaterf(t, float64(2), float64(1), "error message %s", "formatted") -// assert.Greaterf(t, "b", "a", "error message %s", "formatted") +// require.Greaterf(t, 2, 1, "error message %s", "formatted") +// require.Greaterf(t, float64(2), float64(1), "error message %s", "formatted") +// require.Greaterf(t, "b", "a", "error message %s", "formatted") func Greaterf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -656,7 +656,7 @@ func Greaterf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...in // HTTPBodyContains asserts that a specified handler returns a // body that contains a string. // -// assert.HTTPBodyContains(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky") +// require.HTTPBodyContains(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky") // // Returns whether the assertion was successful (true) or not (false). func HTTPBodyContains(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) { @@ -672,7 +672,7 @@ func HTTPBodyContains(t TestingT, handler http.HandlerFunc, method string, url s // HTTPBodyContainsf asserts that a specified handler returns a // body that contains a string. // -// assert.HTTPBodyContainsf(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted") +// require.HTTPBodyContainsf(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted") // // Returns whether the assertion was successful (true) or not (false). func HTTPBodyContainsf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) { @@ -688,7 +688,7 @@ func HTTPBodyContainsf(t TestingT, handler http.HandlerFunc, method string, url // HTTPBodyNotContains asserts that a specified handler returns a // body that does not contain a string. // -// assert.HTTPBodyNotContains(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky") +// require.HTTPBodyNotContains(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky") // // Returns whether the assertion was successful (true) or not (false). func HTTPBodyNotContains(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msgAndArgs ...interface{}) { @@ -704,7 +704,7 @@ func HTTPBodyNotContains(t TestingT, handler http.HandlerFunc, method string, ur // HTTPBodyNotContainsf asserts that a specified handler returns a // body that does not contain a string. // -// assert.HTTPBodyNotContainsf(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted") +// require.HTTPBodyNotContainsf(t, myHandler, "GET", "www.google.com", nil, "I'm Feeling Lucky", "error message %s", "formatted") // // Returns whether the assertion was successful (true) or not (false). func HTTPBodyNotContainsf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, str interface{}, msg string, args ...interface{}) { @@ -719,7 +719,7 @@ func HTTPBodyNotContainsf(t TestingT, handler http.HandlerFunc, method string, u // HTTPError asserts that a specified handler returns an error status code. // -// assert.HTTPError(t, myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}} +// require.HTTPError(t, myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}} // // Returns whether the assertion was successful (true) or not (false). func HTTPError(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) { @@ -734,7 +734,7 @@ func HTTPError(t TestingT, handler http.HandlerFunc, method string, url string, // HTTPErrorf asserts that a specified handler returns an error status code. // -// assert.HTTPErrorf(t, myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}} +// require.HTTPErrorf(t, myHandler, "POST", "/a/b/c", url.Values{"a": []string{"b", "c"}} // // Returns whether the assertion was successful (true) or not (false). func HTTPErrorf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) { @@ -749,7 +749,7 @@ func HTTPErrorf(t TestingT, handler http.HandlerFunc, method string, url string, // HTTPRedirect asserts that a specified handler returns a redirect status code. // -// assert.HTTPRedirect(t, myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}} +// require.HTTPRedirect(t, myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}} // // Returns whether the assertion was successful (true) or not (false). func HTTPRedirect(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) { @@ -764,7 +764,7 @@ func HTTPRedirect(t TestingT, handler http.HandlerFunc, method string, url strin // HTTPRedirectf asserts that a specified handler returns a redirect status code. // -// assert.HTTPRedirectf(t, myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}} +// require.HTTPRedirectf(t, myHandler, "GET", "/a/b/c", url.Values{"a": []string{"b", "c"}} // // Returns whether the assertion was successful (true) or not (false). func HTTPRedirectf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) { @@ -779,7 +779,7 @@ func HTTPRedirectf(t TestingT, handler http.HandlerFunc, method string, url stri // HTTPStatusCode asserts that a specified handler returns a specified status code. // -// assert.HTTPStatusCode(t, myHandler, "GET", "/notImplemented", nil, 501) +// require.HTTPStatusCode(t, myHandler, "GET", "/notImplemented", nil, 501) // // Returns whether the assertion was successful (true) or not (false). func HTTPStatusCode(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, statuscode int, msgAndArgs ...interface{}) { @@ -794,7 +794,7 @@ func HTTPStatusCode(t TestingT, handler http.HandlerFunc, method string, url str // HTTPStatusCodef asserts that a specified handler returns a specified status code. // -// assert.HTTPStatusCodef(t, myHandler, "GET", "/notImplemented", nil, 501, "error message %s", "formatted") +// require.HTTPStatusCodef(t, myHandler, "GET", "/notImplemented", nil, 501, "error message %s", "formatted") // // Returns whether the assertion was successful (true) or not (false). func HTTPStatusCodef(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, statuscode int, msg string, args ...interface{}) { @@ -809,7 +809,7 @@ func HTTPStatusCodef(t TestingT, handler http.HandlerFunc, method string, url st // HTTPSuccess asserts that a specified handler returns a success status code. // -// assert.HTTPSuccess(t, myHandler, "POST", "http://www.google.com", nil) +// require.HTTPSuccess(t, myHandler, "POST", "http://www.google.com", nil) // // Returns whether the assertion was successful (true) or not (false). func HTTPSuccess(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msgAndArgs ...interface{}) { @@ -824,7 +824,7 @@ func HTTPSuccess(t TestingT, handler http.HandlerFunc, method string, url string // HTTPSuccessf asserts that a specified handler returns a success status code. // -// assert.HTTPSuccessf(t, myHandler, "POST", "http://www.google.com", nil, "error message %s", "formatted") +// require.HTTPSuccessf(t, myHandler, "POST", "http://www.google.com", nil, "error message %s", "formatted") // // Returns whether the assertion was successful (true) or not (false). func HTTPSuccessf(t TestingT, handler http.HandlerFunc, method string, url string, values url.Values, msg string, args ...interface{}) { @@ -839,7 +839,7 @@ func HTTPSuccessf(t TestingT, handler http.HandlerFunc, method string, url strin // Implements asserts that an object is implemented by the specified interface. // -// assert.Implements(t, (*MyInterface)(nil), new(MyObject)) +// require.Implements(t, (*MyInterface)(nil), new(MyObject)) func Implements(t TestingT, interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -852,7 +852,7 @@ func Implements(t TestingT, interfaceObject interface{}, object interface{}, msg // Implementsf asserts that an object is implemented by the specified interface. // -// assert.Implementsf(t, (*MyInterface)(nil), new(MyObject), "error message %s", "formatted") +// require.Implementsf(t, (*MyInterface)(nil), new(MyObject), "error message %s", "formatted") func Implementsf(t TestingT, interfaceObject interface{}, object interface{}, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -865,7 +865,7 @@ func Implementsf(t TestingT, interfaceObject interface{}, object interface{}, ms // InDelta asserts that the two numerals are within delta of each other. // -// assert.InDelta(t, math.Pi, 22/7.0, 0.01) +// require.InDelta(t, math.Pi, 22/7.0, 0.01) func InDelta(t TestingT, expected interface{}, actual interface{}, delta float64, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -922,7 +922,7 @@ func InDeltaSlicef(t TestingT, expected interface{}, actual interface{}, delta f // InDeltaf asserts that the two numerals are within delta of each other. // -// assert.InDeltaf(t, math.Pi, 22/7.0, 0.01, "error message %s", "formatted") +// require.InDeltaf(t, math.Pi, 22/7.0, 0.01, "error message %s", "formatted") func InDeltaf(t TestingT, expected interface{}, actual interface{}, delta float64, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -979,9 +979,9 @@ func InEpsilonf(t TestingT, expected interface{}, actual interface{}, epsilon fl // IsDecreasing asserts that the collection is decreasing // -// assert.IsDecreasing(t, []int{2, 1, 0}) -// assert.IsDecreasing(t, []float{2, 1}) -// assert.IsDecreasing(t, []string{"b", "a"}) +// require.IsDecreasing(t, []int{2, 1, 0}) +// require.IsDecreasing(t, []float{2, 1}) +// require.IsDecreasing(t, []string{"b", "a"}) func IsDecreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -994,9 +994,9 @@ func IsDecreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) { // IsDecreasingf asserts that the collection is decreasing // -// assert.IsDecreasingf(t, []int{2, 1, 0}, "error message %s", "formatted") -// assert.IsDecreasingf(t, []float{2, 1}, "error message %s", "formatted") -// assert.IsDecreasingf(t, []string{"b", "a"}, "error message %s", "formatted") +// require.IsDecreasingf(t, []int{2, 1, 0}, "error message %s", "formatted") +// require.IsDecreasingf(t, []float{2, 1}, "error message %s", "formatted") +// require.IsDecreasingf(t, []string{"b", "a"}, "error message %s", "formatted") func IsDecreasingf(t TestingT, object interface{}, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1009,9 +1009,9 @@ func IsDecreasingf(t TestingT, object interface{}, msg string, args ...interface // IsIncreasing asserts that the collection is increasing // -// assert.IsIncreasing(t, []int{1, 2, 3}) -// assert.IsIncreasing(t, []float{1, 2}) -// assert.IsIncreasing(t, []string{"a", "b"}) +// require.IsIncreasing(t, []int{1, 2, 3}) +// require.IsIncreasing(t, []float{1, 2}) +// require.IsIncreasing(t, []string{"a", "b"}) func IsIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1024,9 +1024,9 @@ func IsIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) { // IsIncreasingf asserts that the collection is increasing // -// assert.IsIncreasingf(t, []int{1, 2, 3}, "error message %s", "formatted") -// assert.IsIncreasingf(t, []float{1, 2}, "error message %s", "formatted") -// assert.IsIncreasingf(t, []string{"a", "b"}, "error message %s", "formatted") +// require.IsIncreasingf(t, []int{1, 2, 3}, "error message %s", "formatted") +// require.IsIncreasingf(t, []float{1, 2}, "error message %s", "formatted") +// require.IsIncreasingf(t, []string{"a", "b"}, "error message %s", "formatted") func IsIncreasingf(t TestingT, object interface{}, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1039,9 +1039,9 @@ func IsIncreasingf(t TestingT, object interface{}, msg string, args ...interface // IsNonDecreasing asserts that the collection is not decreasing // -// assert.IsNonDecreasing(t, []int{1, 1, 2}) -// assert.IsNonDecreasing(t, []float{1, 2}) -// assert.IsNonDecreasing(t, []string{"a", "b"}) +// require.IsNonDecreasing(t, []int{1, 1, 2}) +// require.IsNonDecreasing(t, []float{1, 2}) +// require.IsNonDecreasing(t, []string{"a", "b"}) func IsNonDecreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1054,9 +1054,9 @@ func IsNonDecreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) // IsNonDecreasingf asserts that the collection is not decreasing // -// assert.IsNonDecreasingf(t, []int{1, 1, 2}, "error message %s", "formatted") -// assert.IsNonDecreasingf(t, []float{1, 2}, "error message %s", "formatted") -// assert.IsNonDecreasingf(t, []string{"a", "b"}, "error message %s", "formatted") +// require.IsNonDecreasingf(t, []int{1, 1, 2}, "error message %s", "formatted") +// require.IsNonDecreasingf(t, []float{1, 2}, "error message %s", "formatted") +// require.IsNonDecreasingf(t, []string{"a", "b"}, "error message %s", "formatted") func IsNonDecreasingf(t TestingT, object interface{}, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1069,9 +1069,9 @@ func IsNonDecreasingf(t TestingT, object interface{}, msg string, args ...interf // IsNonIncreasing asserts that the collection is not increasing // -// assert.IsNonIncreasing(t, []int{2, 1, 1}) -// assert.IsNonIncreasing(t, []float{2, 1}) -// assert.IsNonIncreasing(t, []string{"b", "a"}) +// require.IsNonIncreasing(t, []int{2, 1, 1}) +// require.IsNonIncreasing(t, []float{2, 1}) +// require.IsNonIncreasing(t, []string{"b", "a"}) func IsNonIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1084,9 +1084,9 @@ func IsNonIncreasing(t TestingT, object interface{}, msgAndArgs ...interface{}) // IsNonIncreasingf asserts that the collection is not increasing // -// assert.IsNonIncreasingf(t, []int{2, 1, 1}, "error message %s", "formatted") -// assert.IsNonIncreasingf(t, []float{2, 1}, "error message %s", "formatted") -// assert.IsNonIncreasingf(t, []string{"b", "a"}, "error message %s", "formatted") +// require.IsNonIncreasingf(t, []int{2, 1, 1}, "error message %s", "formatted") +// require.IsNonIncreasingf(t, []float{2, 1}, "error message %s", "formatted") +// require.IsNonIncreasingf(t, []string{"b", "a"}, "error message %s", "formatted") func IsNonIncreasingf(t TestingT, object interface{}, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1121,7 +1121,7 @@ func IsTypef(t TestingT, expectedType interface{}, object interface{}, msg strin // JSONEq asserts that two JSON strings are equivalent. // -// assert.JSONEq(t, `{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`) +// require.JSONEq(t, `{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`) func JSONEq(t TestingT, expected string, actual string, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1134,7 +1134,7 @@ func JSONEq(t TestingT, expected string, actual string, msgAndArgs ...interface{ // JSONEqf asserts that two JSON strings are equivalent. // -// assert.JSONEqf(t, `{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`, "error message %s", "formatted") +// require.JSONEqf(t, `{"hello": "world", "foo": "bar"}`, `{"foo": "bar", "hello": "world"}`, "error message %s", "formatted") func JSONEqf(t TestingT, expected string, actual string, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1148,7 +1148,7 @@ func JSONEqf(t TestingT, expected string, actual string, msg string, args ...int // Len asserts that the specified object has specific length. // Len also fails if the object has a type that len() not accept. // -// assert.Len(t, mySlice, 3) +// require.Len(t, mySlice, 3) func Len(t TestingT, object interface{}, length int, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1162,7 +1162,7 @@ func Len(t TestingT, object interface{}, length int, msgAndArgs ...interface{}) // Lenf asserts that the specified object has specific length. // Lenf also fails if the object has a type that len() not accept. // -// assert.Lenf(t, mySlice, 3, "error message %s", "formatted") +// require.Lenf(t, mySlice, 3, "error message %s", "formatted") func Lenf(t TestingT, object interface{}, length int, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1175,9 +1175,9 @@ func Lenf(t TestingT, object interface{}, length int, msg string, args ...interf // Less asserts that the first element is less than the second // -// assert.Less(t, 1, 2) -// assert.Less(t, float64(1), float64(2)) -// assert.Less(t, "a", "b") +// require.Less(t, 1, 2) +// require.Less(t, float64(1), float64(2)) +// require.Less(t, "a", "b") func Less(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1190,10 +1190,10 @@ func Less(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) // LessOrEqual asserts that the first element is less than or equal to the second // -// assert.LessOrEqual(t, 1, 2) -// assert.LessOrEqual(t, 2, 2) -// assert.LessOrEqual(t, "a", "b") -// assert.LessOrEqual(t, "b", "b") +// require.LessOrEqual(t, 1, 2) +// require.LessOrEqual(t, 2, 2) +// require.LessOrEqual(t, "a", "b") +// require.LessOrEqual(t, "b", "b") func LessOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1206,10 +1206,10 @@ func LessOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...inter // LessOrEqualf asserts that the first element is less than or equal to the second // -// assert.LessOrEqualf(t, 1, 2, "error message %s", "formatted") -// assert.LessOrEqualf(t, 2, 2, "error message %s", "formatted") -// assert.LessOrEqualf(t, "a", "b", "error message %s", "formatted") -// assert.LessOrEqualf(t, "b", "b", "error message %s", "formatted") +// require.LessOrEqualf(t, 1, 2, "error message %s", "formatted") +// require.LessOrEqualf(t, 2, 2, "error message %s", "formatted") +// require.LessOrEqualf(t, "a", "b", "error message %s", "formatted") +// require.LessOrEqualf(t, "b", "b", "error message %s", "formatted") func LessOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1222,9 +1222,9 @@ func LessOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg string, args . // Lessf asserts that the first element is less than the second // -// assert.Lessf(t, 1, 2, "error message %s", "formatted") -// assert.Lessf(t, float64(1), float64(2), "error message %s", "formatted") -// assert.Lessf(t, "a", "b", "error message %s", "formatted") +// require.Lessf(t, 1, 2, "error message %s", "formatted") +// require.Lessf(t, float64(1), float64(2), "error message %s", "formatted") +// require.Lessf(t, "a", "b", "error message %s", "formatted") func Lessf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1237,8 +1237,8 @@ func Lessf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...inter // Negative asserts that the specified element is negative // -// assert.Negative(t, -1) -// assert.Negative(t, -1.23) +// require.Negative(t, -1) +// require.Negative(t, -1.23) func Negative(t TestingT, e interface{}, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1251,8 +1251,8 @@ func Negative(t TestingT, e interface{}, msgAndArgs ...interface{}) { // Negativef asserts that the specified element is negative // -// assert.Negativef(t, -1, "error message %s", "formatted") -// assert.Negativef(t, -1.23, "error message %s", "formatted") +// require.Negativef(t, -1, "error message %s", "formatted") +// require.Negativef(t, -1.23, "error message %s", "formatted") func Negativef(t TestingT, e interface{}, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1266,7 +1266,7 @@ func Negativef(t TestingT, e interface{}, msg string, args ...interface{}) { // Never asserts that the given condition doesn't satisfy in waitFor time, // periodically checking the target function each tick. // -// assert.Never(t, func() bool { return false; }, time.Second, 10*time.Millisecond) +// require.Never(t, func() bool { return false; }, time.Second, 10*time.Millisecond) func Never(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1280,7 +1280,7 @@ func Never(t TestingT, condition func() bool, waitFor time.Duration, tick time.D // Neverf asserts that the given condition doesn't satisfy in waitFor time, // periodically checking the target function each tick. // -// assert.Neverf(t, func() bool { return false; }, time.Second, 10*time.Millisecond, "error message %s", "formatted") +// require.Neverf(t, func() bool { return false; }, time.Second, 10*time.Millisecond, "error message %s", "formatted") func Neverf(t TestingT, condition func() bool, waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1293,7 +1293,7 @@ func Neverf(t TestingT, condition func() bool, waitFor time.Duration, tick time. // Nil asserts that the specified object is nil. // -// assert.Nil(t, err) +// require.Nil(t, err) func Nil(t TestingT, object interface{}, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1306,7 +1306,7 @@ func Nil(t TestingT, object interface{}, msgAndArgs ...interface{}) { // Nilf asserts that the specified object is nil. // -// assert.Nilf(t, err, "error message %s", "formatted") +// require.Nilf(t, err, "error message %s", "formatted") func Nilf(t TestingT, object interface{}, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1344,8 +1344,8 @@ func NoDirExistsf(t TestingT, path string, msg string, args ...interface{}) { // NoError asserts that a function returned no error (i.e. `nil`). // // actualObj, err := SomeFunction() -// if assert.NoError(t, err) { -// assert.Equal(t, expectedObj, actualObj) +// if require.NoError(t, err) { +// require.Equal(t, expectedObj, actualObj) // } func NoError(t TestingT, err error, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { @@ -1360,8 +1360,8 @@ func NoError(t TestingT, err error, msgAndArgs ...interface{}) { // NoErrorf asserts that a function returned no error (i.e. `nil`). // // actualObj, err := SomeFunction() -// if assert.NoErrorf(t, err, "error message %s", "formatted") { -// assert.Equal(t, expectedObj, actualObj) +// if require.NoErrorf(t, err, "error message %s", "formatted") { +// require.Equal(t, expectedObj, actualObj) // } func NoErrorf(t TestingT, err error, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { @@ -1400,9 +1400,9 @@ func NoFileExistsf(t TestingT, path string, msg string, args ...interface{}) { // NotContains asserts that the specified string, list(array, slice...) or map does NOT contain the // specified substring or element. // -// assert.NotContains(t, "Hello World", "Earth") -// assert.NotContains(t, ["Hello", "World"], "Earth") -// assert.NotContains(t, {"Hello": "World"}, "Earth") +// require.NotContains(t, "Hello World", "Earth") +// require.NotContains(t, ["Hello", "World"], "Earth") +// require.NotContains(t, {"Hello": "World"}, "Earth") func NotContains(t TestingT, s interface{}, contains interface{}, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1416,9 +1416,9 @@ func NotContains(t TestingT, s interface{}, contains interface{}, msgAndArgs ... // NotContainsf asserts that the specified string, list(array, slice...) or map does NOT contain the // specified substring or element. // -// assert.NotContainsf(t, "Hello World", "Earth", "error message %s", "formatted") -// assert.NotContainsf(t, ["Hello", "World"], "Earth", "error message %s", "formatted") -// assert.NotContainsf(t, {"Hello": "World"}, "Earth", "error message %s", "formatted") +// require.NotContainsf(t, "Hello World", "Earth", "error message %s", "formatted") +// require.NotContainsf(t, ["Hello", "World"], "Earth", "error message %s", "formatted") +// require.NotContainsf(t, {"Hello": "World"}, "Earth", "error message %s", "formatted") func NotContainsf(t TestingT, s interface{}, contains interface{}, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1429,11 +1429,51 @@ func NotContainsf(t TestingT, s interface{}, contains interface{}, msg string, a t.FailNow() } +// NotElementsMatch asserts that the specified listA(array, slice...) is NOT equal to specified +// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements, +// the number of appearances of each of them in both lists should not match. +// This is an inverse of ElementsMatch. +// +// require.NotElementsMatch(t, [1, 1, 2, 3], [1, 1, 2, 3]) -> false +// +// require.NotElementsMatch(t, [1, 1, 2, 3], [1, 2, 3]) -> true +// +// require.NotElementsMatch(t, [1, 2, 3], [1, 2, 4]) -> true +func NotElementsMatch(t TestingT, listA interface{}, listB interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.NotElementsMatch(t, listA, listB, msgAndArgs...) { + return + } + t.FailNow() +} + +// NotElementsMatchf asserts that the specified listA(array, slice...) is NOT equal to specified +// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements, +// the number of appearances of each of them in both lists should not match. +// This is an inverse of ElementsMatch. +// +// require.NotElementsMatchf(t, [1, 1, 2, 3], [1, 1, 2, 3], "error message %s", "formatted") -> false +// +// require.NotElementsMatchf(t, [1, 1, 2, 3], [1, 2, 3], "error message %s", "formatted") -> true +// +// require.NotElementsMatchf(t, [1, 2, 3], [1, 2, 4], "error message %s", "formatted") -> true +func NotElementsMatchf(t TestingT, listA interface{}, listB interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.NotElementsMatchf(t, listA, listB, msg, args...) { + return + } + t.FailNow() +} + // NotEmpty asserts that the specified object is NOT empty. I.e. not nil, "", false, 0 or either // a slice or a channel with len == 0. // -// if assert.NotEmpty(t, obj) { -// assert.Equal(t, "two", obj[1]) +// if require.NotEmpty(t, obj) { +// require.Equal(t, "two", obj[1]) // } func NotEmpty(t TestingT, object interface{}, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { @@ -1448,8 +1488,8 @@ func NotEmpty(t TestingT, object interface{}, msgAndArgs ...interface{}) { // NotEmptyf asserts that the specified object is NOT empty. I.e. not nil, "", false, 0 or either // a slice or a channel with len == 0. // -// if assert.NotEmptyf(t, obj, "error message %s", "formatted") { -// assert.Equal(t, "two", obj[1]) +// if require.NotEmptyf(t, obj, "error message %s", "formatted") { +// require.Equal(t, "two", obj[1]) // } func NotEmptyf(t TestingT, object interface{}, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { @@ -1463,7 +1503,7 @@ func NotEmptyf(t TestingT, object interface{}, msg string, args ...interface{}) // NotEqual asserts that the specified values are NOT equal. // -// assert.NotEqual(t, obj1, obj2) +// require.NotEqual(t, obj1, obj2) // // Pointer variable equality is determined based on the equality of the // referenced values (as opposed to the memory addresses). @@ -1479,7 +1519,7 @@ func NotEqual(t TestingT, expected interface{}, actual interface{}, msgAndArgs . // NotEqualValues asserts that two objects are not equal even when converted to the same type // -// assert.NotEqualValues(t, obj1, obj2) +// require.NotEqualValues(t, obj1, obj2) func NotEqualValues(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1492,7 +1532,7 @@ func NotEqualValues(t TestingT, expected interface{}, actual interface{}, msgAnd // NotEqualValuesf asserts that two objects are not equal even when converted to the same type // -// assert.NotEqualValuesf(t, obj1, obj2, "error message %s", "formatted") +// require.NotEqualValuesf(t, obj1, obj2, "error message %s", "formatted") func NotEqualValuesf(t TestingT, expected interface{}, actual interface{}, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1505,7 +1545,7 @@ func NotEqualValuesf(t TestingT, expected interface{}, actual interface{}, msg s // NotEqualf asserts that the specified values are NOT equal. // -// assert.NotEqualf(t, obj1, obj2, "error message %s", "formatted") +// require.NotEqualf(t, obj1, obj2, "error message %s", "formatted") // // Pointer variable equality is determined based on the equality of the // referenced values (as opposed to the memory addresses). @@ -1519,7 +1559,31 @@ func NotEqualf(t TestingT, expected interface{}, actual interface{}, msg string, t.FailNow() } -// NotErrorIs asserts that at none of the errors in err's chain matches target. +// NotErrorAs asserts that none of the errors in err's chain matches target, +// but if so, sets target to that error value. +func NotErrorAs(t TestingT, err error, target interface{}, msgAndArgs ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.NotErrorAs(t, err, target, msgAndArgs...) { + return + } + t.FailNow() +} + +// NotErrorAsf asserts that none of the errors in err's chain matches target, +// but if so, sets target to that error value. +func NotErrorAsf(t TestingT, err error, target interface{}, msg string, args ...interface{}) { + if h, ok := t.(tHelper); ok { + h.Helper() + } + if assert.NotErrorAsf(t, err, target, msg, args...) { + return + } + t.FailNow() +} + +// NotErrorIs asserts that none of the errors in err's chain matches target. // This is a wrapper for errors.Is. func NotErrorIs(t TestingT, err error, target error, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { @@ -1531,7 +1595,7 @@ func NotErrorIs(t TestingT, err error, target error, msgAndArgs ...interface{}) t.FailNow() } -// NotErrorIsf asserts that at none of the errors in err's chain matches target. +// NotErrorIsf asserts that none of the errors in err's chain matches target. // This is a wrapper for errors.Is. func NotErrorIsf(t TestingT, err error, target error, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { @@ -1545,7 +1609,7 @@ func NotErrorIsf(t TestingT, err error, target error, msg string, args ...interf // NotImplements asserts that an object does not implement the specified interface. // -// assert.NotImplements(t, (*MyInterface)(nil), new(MyObject)) +// require.NotImplements(t, (*MyInterface)(nil), new(MyObject)) func NotImplements(t TestingT, interfaceObject interface{}, object interface{}, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1558,7 +1622,7 @@ func NotImplements(t TestingT, interfaceObject interface{}, object interface{}, // NotImplementsf asserts that an object does not implement the specified interface. // -// assert.NotImplementsf(t, (*MyInterface)(nil), new(MyObject), "error message %s", "formatted") +// require.NotImplementsf(t, (*MyInterface)(nil), new(MyObject), "error message %s", "formatted") func NotImplementsf(t TestingT, interfaceObject interface{}, object interface{}, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1571,7 +1635,7 @@ func NotImplementsf(t TestingT, interfaceObject interface{}, object interface{}, // NotNil asserts that the specified object is not nil. // -// assert.NotNil(t, err) +// require.NotNil(t, err) func NotNil(t TestingT, object interface{}, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1584,7 +1648,7 @@ func NotNil(t TestingT, object interface{}, msgAndArgs ...interface{}) { // NotNilf asserts that the specified object is not nil. // -// assert.NotNilf(t, err, "error message %s", "formatted") +// require.NotNilf(t, err, "error message %s", "formatted") func NotNilf(t TestingT, object interface{}, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1597,7 +1661,7 @@ func NotNilf(t TestingT, object interface{}, msg string, args ...interface{}) { // NotPanics asserts that the code inside the specified PanicTestFunc does NOT panic. // -// assert.NotPanics(t, func(){ RemainCalm() }) +// require.NotPanics(t, func(){ RemainCalm() }) func NotPanics(t TestingT, f assert.PanicTestFunc, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1610,7 +1674,7 @@ func NotPanics(t TestingT, f assert.PanicTestFunc, msgAndArgs ...interface{}) { // NotPanicsf asserts that the code inside the specified PanicTestFunc does NOT panic. // -// assert.NotPanicsf(t, func(){ RemainCalm() }, "error message %s", "formatted") +// require.NotPanicsf(t, func(){ RemainCalm() }, "error message %s", "formatted") func NotPanicsf(t TestingT, f assert.PanicTestFunc, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1623,8 +1687,8 @@ func NotPanicsf(t TestingT, f assert.PanicTestFunc, msg string, args ...interfac // NotRegexp asserts that a specified regexp does not match a string. // -// assert.NotRegexp(t, regexp.MustCompile("starts"), "it's starting") -// assert.NotRegexp(t, "^start", "it's not starting") +// require.NotRegexp(t, regexp.MustCompile("starts"), "it's starting") +// require.NotRegexp(t, "^start", "it's not starting") func NotRegexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1637,8 +1701,8 @@ func NotRegexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interf // NotRegexpf asserts that a specified regexp does not match a string. // -// assert.NotRegexpf(t, regexp.MustCompile("starts"), "it's starting", "error message %s", "formatted") -// assert.NotRegexpf(t, "^start", "it's not starting", "error message %s", "formatted") +// require.NotRegexpf(t, regexp.MustCompile("starts"), "it's starting", "error message %s", "formatted") +// require.NotRegexpf(t, "^start", "it's not starting", "error message %s", "formatted") func NotRegexpf(t TestingT, rx interface{}, str interface{}, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1651,7 +1715,7 @@ func NotRegexpf(t TestingT, rx interface{}, str interface{}, msg string, args .. // NotSame asserts that two pointers do not reference the same object. // -// assert.NotSame(t, ptr1, ptr2) +// require.NotSame(t, ptr1, ptr2) // // Both arguments must be pointer variables. Pointer variable sameness is // determined based on the equality of both type and value. @@ -1667,7 +1731,7 @@ func NotSame(t TestingT, expected interface{}, actual interface{}, msgAndArgs .. // NotSamef asserts that two pointers do not reference the same object. // -// assert.NotSamef(t, ptr1, ptr2, "error message %s", "formatted") +// require.NotSamef(t, ptr1, ptr2, "error message %s", "formatted") // // Both arguments must be pointer variables. Pointer variable sameness is // determined based on the equality of both type and value. @@ -1685,8 +1749,8 @@ func NotSamef(t TestingT, expected interface{}, actual interface{}, msg string, // contain all elements given in the specified subset list(array, slice...) or // map. // -// assert.NotSubset(t, [1, 3, 4], [1, 2]) -// assert.NotSubset(t, {"x": 1, "y": 2}, {"z": 3}) +// require.NotSubset(t, [1, 3, 4], [1, 2]) +// require.NotSubset(t, {"x": 1, "y": 2}, {"z": 3}) func NotSubset(t TestingT, list interface{}, subset interface{}, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1701,8 +1765,8 @@ func NotSubset(t TestingT, list interface{}, subset interface{}, msgAndArgs ...i // contain all elements given in the specified subset list(array, slice...) or // map. // -// assert.NotSubsetf(t, [1, 3, 4], [1, 2], "error message %s", "formatted") -// assert.NotSubsetf(t, {"x": 1, "y": 2}, {"z": 3}, "error message %s", "formatted") +// require.NotSubsetf(t, [1, 3, 4], [1, 2], "error message %s", "formatted") +// require.NotSubsetf(t, {"x": 1, "y": 2}, {"z": 3}, "error message %s", "formatted") func NotSubsetf(t TestingT, list interface{}, subset interface{}, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1737,7 +1801,7 @@ func NotZerof(t TestingT, i interface{}, msg string, args ...interface{}) { // Panics asserts that the code inside the specified PanicTestFunc panics. // -// assert.Panics(t, func(){ GoCrazy() }) +// require.Panics(t, func(){ GoCrazy() }) func Panics(t TestingT, f assert.PanicTestFunc, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1752,7 +1816,7 @@ func Panics(t TestingT, f assert.PanicTestFunc, msgAndArgs ...interface{}) { // panics, and that the recovered panic value is an error that satisfies the // EqualError comparison. // -// assert.PanicsWithError(t, "crazy error", func(){ GoCrazy() }) +// require.PanicsWithError(t, "crazy error", func(){ GoCrazy() }) func PanicsWithError(t TestingT, errString string, f assert.PanicTestFunc, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1767,7 +1831,7 @@ func PanicsWithError(t TestingT, errString string, f assert.PanicTestFunc, msgAn // panics, and that the recovered panic value is an error that satisfies the // EqualError comparison. // -// assert.PanicsWithErrorf(t, "crazy error", func(){ GoCrazy() }, "error message %s", "formatted") +// require.PanicsWithErrorf(t, "crazy error", func(){ GoCrazy() }, "error message %s", "formatted") func PanicsWithErrorf(t TestingT, errString string, f assert.PanicTestFunc, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1781,7 +1845,7 @@ func PanicsWithErrorf(t TestingT, errString string, f assert.PanicTestFunc, msg // PanicsWithValue asserts that the code inside the specified PanicTestFunc panics, and that // the recovered panic value equals the expected panic value. // -// assert.PanicsWithValue(t, "crazy error", func(){ GoCrazy() }) +// require.PanicsWithValue(t, "crazy error", func(){ GoCrazy() }) func PanicsWithValue(t TestingT, expected interface{}, f assert.PanicTestFunc, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1795,7 +1859,7 @@ func PanicsWithValue(t TestingT, expected interface{}, f assert.PanicTestFunc, m // PanicsWithValuef asserts that the code inside the specified PanicTestFunc panics, and that // the recovered panic value equals the expected panic value. // -// assert.PanicsWithValuef(t, "crazy error", func(){ GoCrazy() }, "error message %s", "formatted") +// require.PanicsWithValuef(t, "crazy error", func(){ GoCrazy() }, "error message %s", "formatted") func PanicsWithValuef(t TestingT, expected interface{}, f assert.PanicTestFunc, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1808,7 +1872,7 @@ func PanicsWithValuef(t TestingT, expected interface{}, f assert.PanicTestFunc, // Panicsf asserts that the code inside the specified PanicTestFunc panics. // -// assert.Panicsf(t, func(){ GoCrazy() }, "error message %s", "formatted") +// require.Panicsf(t, func(){ GoCrazy() }, "error message %s", "formatted") func Panicsf(t TestingT, f assert.PanicTestFunc, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1821,8 +1885,8 @@ func Panicsf(t TestingT, f assert.PanicTestFunc, msg string, args ...interface{} // Positive asserts that the specified element is positive // -// assert.Positive(t, 1) -// assert.Positive(t, 1.23) +// require.Positive(t, 1) +// require.Positive(t, 1.23) func Positive(t TestingT, e interface{}, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1835,8 +1899,8 @@ func Positive(t TestingT, e interface{}, msgAndArgs ...interface{}) { // Positivef asserts that the specified element is positive // -// assert.Positivef(t, 1, "error message %s", "formatted") -// assert.Positivef(t, 1.23, "error message %s", "formatted") +// require.Positivef(t, 1, "error message %s", "formatted") +// require.Positivef(t, 1.23, "error message %s", "formatted") func Positivef(t TestingT, e interface{}, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1849,8 +1913,8 @@ func Positivef(t TestingT, e interface{}, msg string, args ...interface{}) { // Regexp asserts that a specified regexp matches a string. // -// assert.Regexp(t, regexp.MustCompile("start"), "it's starting") -// assert.Regexp(t, "start...$", "it's not starting") +// require.Regexp(t, regexp.MustCompile("start"), "it's starting") +// require.Regexp(t, "start...$", "it's not starting") func Regexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1863,8 +1927,8 @@ func Regexp(t TestingT, rx interface{}, str interface{}, msgAndArgs ...interface // Regexpf asserts that a specified regexp matches a string. // -// assert.Regexpf(t, regexp.MustCompile("start"), "it's starting", "error message %s", "formatted") -// assert.Regexpf(t, "start...$", "it's not starting", "error message %s", "formatted") +// require.Regexpf(t, regexp.MustCompile("start"), "it's starting", "error message %s", "formatted") +// require.Regexpf(t, "start...$", "it's not starting", "error message %s", "formatted") func Regexpf(t TestingT, rx interface{}, str interface{}, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1877,7 +1941,7 @@ func Regexpf(t TestingT, rx interface{}, str interface{}, msg string, args ...in // Same asserts that two pointers reference the same object. // -// assert.Same(t, ptr1, ptr2) +// require.Same(t, ptr1, ptr2) // // Both arguments must be pointer variables. Pointer variable sameness is // determined based on the equality of both type and value. @@ -1893,7 +1957,7 @@ func Same(t TestingT, expected interface{}, actual interface{}, msgAndArgs ...in // Samef asserts that two pointers reference the same object. // -// assert.Samef(t, ptr1, ptr2, "error message %s", "formatted") +// require.Samef(t, ptr1, ptr2, "error message %s", "formatted") // // Both arguments must be pointer variables. Pointer variable sameness is // determined based on the equality of both type and value. @@ -1910,8 +1974,8 @@ func Samef(t TestingT, expected interface{}, actual interface{}, msg string, arg // Subset asserts that the specified list(array, slice...) or map contains all // elements given in the specified subset list(array, slice...) or map. // -// assert.Subset(t, [1, 2, 3], [1, 2]) -// assert.Subset(t, {"x": 1, "y": 2}, {"x": 1}) +// require.Subset(t, [1, 2, 3], [1, 2]) +// require.Subset(t, {"x": 1, "y": 2}, {"x": 1}) func Subset(t TestingT, list interface{}, subset interface{}, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1925,8 +1989,8 @@ func Subset(t TestingT, list interface{}, subset interface{}, msgAndArgs ...inte // Subsetf asserts that the specified list(array, slice...) or map contains all // elements given in the specified subset list(array, slice...) or map. // -// assert.Subsetf(t, [1, 2, 3], [1, 2], "error message %s", "formatted") -// assert.Subsetf(t, {"x": 1, "y": 2}, {"x": 1}, "error message %s", "formatted") +// require.Subsetf(t, [1, 2, 3], [1, 2], "error message %s", "formatted") +// require.Subsetf(t, {"x": 1, "y": 2}, {"x": 1}, "error message %s", "formatted") func Subsetf(t TestingT, list interface{}, subset interface{}, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1939,7 +2003,7 @@ func Subsetf(t TestingT, list interface{}, subset interface{}, msg string, args // True asserts that the specified value is true. // -// assert.True(t, myBool) +// require.True(t, myBool) func True(t TestingT, value bool, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1952,7 +2016,7 @@ func True(t TestingT, value bool, msgAndArgs ...interface{}) { // Truef asserts that the specified value is true. // -// assert.Truef(t, myBool, "error message %s", "formatted") +// require.Truef(t, myBool, "error message %s", "formatted") func Truef(t TestingT, value bool, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1965,7 +2029,7 @@ func Truef(t TestingT, value bool, msg string, args ...interface{}) { // WithinDuration asserts that the two times are within duration delta of each other. // -// assert.WithinDuration(t, time.Now(), time.Now(), 10*time.Second) +// require.WithinDuration(t, time.Now(), time.Now(), 10*time.Second) func WithinDuration(t TestingT, expected time.Time, actual time.Time, delta time.Duration, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1978,7 +2042,7 @@ func WithinDuration(t TestingT, expected time.Time, actual time.Time, delta time // WithinDurationf asserts that the two times are within duration delta of each other. // -// assert.WithinDurationf(t, time.Now(), time.Now(), 10*time.Second, "error message %s", "formatted") +// require.WithinDurationf(t, time.Now(), time.Now(), 10*time.Second, "error message %s", "formatted") func WithinDurationf(t TestingT, expected time.Time, actual time.Time, delta time.Duration, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -1991,7 +2055,7 @@ func WithinDurationf(t TestingT, expected time.Time, actual time.Time, delta tim // WithinRange asserts that a time is within a time range (inclusive). // -// assert.WithinRange(t, time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second)) +// require.WithinRange(t, time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second)) func WithinRange(t TestingT, actual time.Time, start time.Time, end time.Time, msgAndArgs ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() @@ -2004,7 +2068,7 @@ func WithinRange(t TestingT, actual time.Time, start time.Time, end time.Time, m // WithinRangef asserts that a time is within a time range (inclusive). // -// assert.WithinRangef(t, time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second), "error message %s", "formatted") +// require.WithinRangef(t, time.Now(), time.Now().Add(-time.Second), time.Now().Add(time.Second), "error message %s", "formatted") func WithinRangef(t TestingT, actual time.Time, start time.Time, end time.Time, msg string, args ...interface{}) { if h, ok := t.(tHelper); ok { h.Helper() diff --git a/vendor/github.com/stretchr/testify/require/require.go.tmpl b/vendor/github.com/stretchr/testify/require/require.go.tmpl index 55e42ddeb..8b3283685 100644 --- a/vendor/github.com/stretchr/testify/require/require.go.tmpl +++ b/vendor/github.com/stretchr/testify/require/require.go.tmpl @@ -1,4 +1,4 @@ -{{.Comment}} +{{ replace .Comment "assert." "require."}} func {{.DocInfo.Name}}(t TestingT, {{.Params}}) { if h, ok := t.(tHelper); ok { h.Helper() } if assert.{{.DocInfo.Name}}(t, {{.ForwardedParams}}) { return } diff --git a/vendor/github.com/stretchr/testify/require/require_forward.go b/vendor/github.com/stretchr/testify/require/require_forward.go index eee8310a5..1bd87304f 100644 --- a/vendor/github.com/stretchr/testify/require/require_forward.go +++ b/vendor/github.com/stretchr/testify/require/require_forward.go @@ -187,8 +187,8 @@ func (a *Assertions) EqualExportedValuesf(expected interface{}, actual interface EqualExportedValuesf(a.t, expected, actual, msg, args...) } -// EqualValues asserts that two objects are equal or convertible to the same types -// and equal. +// EqualValues asserts that two objects are equal or convertible to the larger +// type and equal. // // a.EqualValues(uint32(123), int32(123)) func (a *Assertions) EqualValues(expected interface{}, actual interface{}, msgAndArgs ...interface{}) { @@ -198,8 +198,8 @@ func (a *Assertions) EqualValues(expected interface{}, actual interface{}, msgAn EqualValues(a.t, expected, actual, msgAndArgs...) } -// EqualValuesf asserts that two objects are equal or convertible to the same types -// and equal. +// EqualValuesf asserts that two objects are equal or convertible to the larger +// type and equal. // // a.EqualValuesf(uint32(123), int32(123), "error message %s", "formatted") func (a *Assertions) EqualValuesf(expected interface{}, actual interface{}, msg string, args ...interface{}) { @@ -337,7 +337,7 @@ func (a *Assertions) Eventually(condition func() bool, waitFor time.Duration, ti // a.EventuallyWithT(func(c *assert.CollectT) { // // add assertions as needed; any assertion failure will fail the current tick // assert.True(c, externalValue, "expected 'externalValue' to be true") -// }, 1*time.Second, 10*time.Second, "external state has not changed to 'true'; still false") +// }, 10*time.Second, 1*time.Second, "external state has not changed to 'true'; still false") func (a *Assertions) EventuallyWithT(condition func(collect *assert.CollectT), waitFor time.Duration, tick time.Duration, msgAndArgs ...interface{}) { if h, ok := a.t.(tHelper); ok { h.Helper() @@ -362,7 +362,7 @@ func (a *Assertions) EventuallyWithT(condition func(collect *assert.CollectT), w // a.EventuallyWithTf(func(c *assert.CollectT, "error message %s", "formatted") { // // add assertions as needed; any assertion failure will fail the current tick // assert.True(c, externalValue, "expected 'externalValue' to be true") -// }, 1*time.Second, 10*time.Second, "external state has not changed to 'true'; still false") +// }, 10*time.Second, 1*time.Second, "external state has not changed to 'true'; still false") func (a *Assertions) EventuallyWithTf(condition func(collect *assert.CollectT), waitFor time.Duration, tick time.Duration, msg string, args ...interface{}) { if h, ok := a.t.(tHelper); ok { h.Helper() @@ -1129,6 +1129,40 @@ func (a *Assertions) NotContainsf(s interface{}, contains interface{}, msg strin NotContainsf(a.t, s, contains, msg, args...) } +// NotElementsMatch asserts that the specified listA(array, slice...) is NOT equal to specified +// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements, +// the number of appearances of each of them in both lists should not match. +// This is an inverse of ElementsMatch. +// +// a.NotElementsMatch([1, 1, 2, 3], [1, 1, 2, 3]) -> false +// +// a.NotElementsMatch([1, 1, 2, 3], [1, 2, 3]) -> true +// +// a.NotElementsMatch([1, 2, 3], [1, 2, 4]) -> true +func (a *Assertions) NotElementsMatch(listA interface{}, listB interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + NotElementsMatch(a.t, listA, listB, msgAndArgs...) +} + +// NotElementsMatchf asserts that the specified listA(array, slice...) is NOT equal to specified +// listB(array, slice...) ignoring the order of the elements. If there are duplicate elements, +// the number of appearances of each of them in both lists should not match. +// This is an inverse of ElementsMatch. +// +// a.NotElementsMatchf([1, 1, 2, 3], [1, 1, 2, 3], "error message %s", "formatted") -> false +// +// a.NotElementsMatchf([1, 1, 2, 3], [1, 2, 3], "error message %s", "formatted") -> true +// +// a.NotElementsMatchf([1, 2, 3], [1, 2, 4], "error message %s", "formatted") -> true +func (a *Assertions) NotElementsMatchf(listA interface{}, listB interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + NotElementsMatchf(a.t, listA, listB, msg, args...) +} + // NotEmpty asserts that the specified object is NOT empty. I.e. not nil, "", false, 0 or either // a slice or a channel with len == 0. // @@ -1201,7 +1235,25 @@ func (a *Assertions) NotEqualf(expected interface{}, actual interface{}, msg str NotEqualf(a.t, expected, actual, msg, args...) } -// NotErrorIs asserts that at none of the errors in err's chain matches target. +// NotErrorAs asserts that none of the errors in err's chain matches target, +// but if so, sets target to that error value. +func (a *Assertions) NotErrorAs(err error, target interface{}, msgAndArgs ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + NotErrorAs(a.t, err, target, msgAndArgs...) +} + +// NotErrorAsf asserts that none of the errors in err's chain matches target, +// but if so, sets target to that error value. +func (a *Assertions) NotErrorAsf(err error, target interface{}, msg string, args ...interface{}) { + if h, ok := a.t.(tHelper); ok { + h.Helper() + } + NotErrorAsf(a.t, err, target, msg, args...) +} + +// NotErrorIs asserts that none of the errors in err's chain matches target. // This is a wrapper for errors.Is. func (a *Assertions) NotErrorIs(err error, target error, msgAndArgs ...interface{}) { if h, ok := a.t.(tHelper); ok { @@ -1210,7 +1262,7 @@ func (a *Assertions) NotErrorIs(err error, target error, msgAndArgs ...interface NotErrorIs(a.t, err, target, msgAndArgs...) } -// NotErrorIsf asserts that at none of the errors in err's chain matches target. +// NotErrorIsf asserts that none of the errors in err's chain matches target. // This is a wrapper for errors.Is. func (a *Assertions) NotErrorIsf(err error, target error, msg string, args ...interface{}) { if h, ok := a.t.(tHelper); ok { diff --git a/vendor/github.com/stretchr/testify/require/requirements.go b/vendor/github.com/stretchr/testify/require/requirements.go index 91772dfeb..6b7ce929e 100644 --- a/vendor/github.com/stretchr/testify/require/requirements.go +++ b/vendor/github.com/stretchr/testify/require/requirements.go @@ -6,7 +6,7 @@ type TestingT interface { FailNow() } -type tHelper interface { +type tHelper = interface { Helper() } diff --git a/vendor/github.com/urfave/cli-altsrc/v3/.gitignore b/vendor/github.com/urfave/cli-altsrc/v3/.gitignore new file mode 100644 index 000000000..c1ee176da --- /dev/null +++ b/vendor/github.com/urfave/cli-altsrc/v3/.gitignore @@ -0,0 +1,10 @@ +*.coverprofile +*.exe +*.orig +.*envrc +.envrc +.idea +/.local/ +/site/ +coverage.txt +vendor diff --git a/vendor/github.com/urfave/cli/v2/CODE_OF_CONDUCT.md b/vendor/github.com/urfave/cli-altsrc/v3/CODE_OF_CONDUCT.md similarity index 100% rename from vendor/github.com/urfave/cli/v2/CODE_OF_CONDUCT.md rename to vendor/github.com/urfave/cli-altsrc/v3/CODE_OF_CONDUCT.md diff --git a/vendor/github.com/urfave/cli/v2/LICENSE b/vendor/github.com/urfave/cli-altsrc/v3/LICENSE similarity index 96% rename from vendor/github.com/urfave/cli/v2/LICENSE rename to vendor/github.com/urfave/cli-altsrc/v3/LICENSE index 2c84c78a1..7e65e545f 100644 --- a/vendor/github.com/urfave/cli/v2/LICENSE +++ b/vendor/github.com/urfave/cli-altsrc/v3/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2022 urfave/cli maintainers +Copyright (c) 2023 urfave contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/vendor/github.com/urfave/cli-altsrc/v3/Makefile b/vendor/github.com/urfave/cli-altsrc/v3/Makefile new file mode 100644 index 000000000..753d6d188 --- /dev/null +++ b/vendor/github.com/urfave/cli-altsrc/v3/Makefile @@ -0,0 +1,14 @@ +.PHONY: all +all: vet test show-cover + +.PHONY: vet +vet: + go vet -v ./... + +.PHONY: test +test: + go test -v -cover -coverprofile=coverage.txt ./... + +.PHONY: show-cover +show-cover: + go tool cover -func=coverage.txt diff --git a/vendor/github.com/urfave/cli-altsrc/v3/README.md b/vendor/github.com/urfave/cli-altsrc/v3/README.md new file mode 100644 index 000000000..14ebd93f5 --- /dev/null +++ b/vendor/github.com/urfave/cli-altsrc/v3/README.md @@ -0,0 +1,55 @@ +# Welcome to `urfave/cli-altsrc/v3` + +[![Run Tests](https://github.com/urfave/cli-altsrc/actions/workflows/main.yml/badge.svg)](https://github.com/urfave/cli-altsrc/actions/workflows/main.yml) +[![Go Reference](https://pkg.go.dev/badge/github.com/urfave/cli-altsrc/v3.svg)](https://pkg.go.dev/github.com/urfave/cli-altsrc/v3) +[![Go Report Card](https://goreportcard.com/badge/github.com/urfave/cli-altsrc/v3)](https://goreportcard.com/report/github.com/urfave/cli-altsrc/v3) + +[`urfave/cli-altsrc/v3`](https://pkg.go.dev/github.com/urfave/cli-altsrc/v3) is an extension for [`urfave/cli/v3`] to read +flag values from JSON, YAML, and TOML. The extension keeps third-party libraries for these features away from [`urfave/cli/v3`]. + +[`urfave/cli/v3`]: https://github.com/urfave/cli + +### Example + +```go + configFiles := []string{ + filepath.Join(testdataDir, "config.yaml"), + filepath.Join(testdataDir, "alt-config.yaml"), + } + + app := &cli.Command{ + Name: "greet", + Flags: []cli.Flag{ + &cli.StringFlag{ + Name: "name", + Aliases: []string{"n"}, + Sources: yaml.YAML("greet.name", configFiles...), + }, + &cli.IntFlag{ + Name: "enthusiasm", + Aliases: []string{"!"}, + Sources: yaml.YAML("greet.enthusiasm", configFiles...), + }, + }, + Action: func(ctx context.Context, cmd *cli.Command) error { + punct := "" + if cmd.Int("enthusiasm") > 9000 { + punct = "!" + } + + fmt.Fprintf(os.Stdout, "Hello, %[1]v%[2]v\n", cmd.String("name"), punct) + + return nil + }, + } + + // Simulating os.Args + os.Args = []string{"greet"} + + if err := app.Run(context.Background(), os.Args); err != nil { + fmt.Fprintf(os.Stdout, "OH NO: %[1]v\n", err) + } + + // Output: + // Hello, Berry! +``` diff --git a/vendor/github.com/urfave/cli-altsrc/v3/altsrc.go b/vendor/github.com/urfave/cli-altsrc/v3/altsrc.go new file mode 100644 index 000000000..3482e8067 --- /dev/null +++ b/vendor/github.com/urfave/cli-altsrc/v3/altsrc.go @@ -0,0 +1,139 @@ +package altsrc + +import ( + "errors" + "fmt" + "os" + "runtime" + "strings" +) + +var ( + Err = errors.New("urfave/cli-altsrc error") + + isTracingOn = os.Getenv("URFAVE_CLI_TRACING") == "on" +) + +func tracef(format string, a ...any) { + if !isTracingOn { + return + } + + if !strings.HasSuffix(format, "\n") { + format = format + "\n" + } + + pc, file, line, _ := runtime.Caller(1) + cf := runtime.FuncForPC(pc) + + fmt.Fprintf( + os.Stderr, + strings.Join([]string{ + "## URFAVE CLI TRACE ", + file, + ":", + fmt.Sprintf("%v", line), + " ", + fmt.Sprintf("(%s)", cf.Name()), + " ", + format, + }, ""), + a..., + ) +} + +// NestedVal returns a value from the given map. The lookup name may be a dot-separated path into the map. +// If that is the case, it will recursively traverse the map based on the '.' delimited sections to find +// a nested value for the key. +func NestedVal(name string, tree map[any]any) (any, bool) { + sections := strings.Split(name, ".") + if name == "" || len(sections) == 0 { + return nil, false + } + + node := tree + + // traverse into the map based on the dot-separated sections + if len(sections) >= 2 { // the last section is the value we want, we will return it directly at the end + for _, section := range sections[:len(sections)-1] { + child, ok := node[section] + if !ok { + return nil, false + } + + switch child := child.(type) { + case map[string]any: + node = make(map[any]any, len(child)) + for k, v := range child { + node[k] = v + } + case map[any]any: + node = child + default: + return nil, false + } + } + } + + if val, ok := node[sections[len(sections)-1]]; ok { + return val, true + } + return nil, false +} + +type Sourcer interface { + SourceURI() string +} + +type StringSourcer string + +func (s StringSourcer) SourceURI() string { + return string(s) +} + +type StringPtrSourcer struct { + ptr *string +} + +func NewStringPtrSourcer(p *string) StringPtrSourcer { + return StringPtrSourcer{ + ptr: p, + } +} + +func (s StringPtrSourcer) SourceURI() string { + return *s.ptr +} + +type ValueSource struct { + key string + desc string + sourcer Sourcer + um func([]byte, any) error +} + +func (vs *ValueSource) Lookup() (string, bool) { + maafsc := NewMapAnyAnyURISourceCache(vs.sourcer.SourceURI(), vs.um) + if v, ok := NestedVal(vs.key, maafsc.Get()); ok { + return fmt.Sprintf("%[1]v", v), ok + } + + return "", false +} + +func (vs *ValueSource) String() string { + return fmt.Sprintf("%s file %[2]q at key %[3]q", vs.desc, vs.sourcer.SourceURI(), vs.key) +} + +func (vs *ValueSource) GoString() string { + return fmt.Sprintf("%sValueSource{file:%[2]q,keyPath:%[3]q}", vs.desc, vs.sourcer.SourceURI(), vs.key) +} + +func NewValueSource(f func([]byte, any) error, desc string, key string, uriSrc Sourcer) *ValueSource { + return &ValueSource{ + sourcer: uriSrc, + key: key, + desc: desc, + um: f, + } +} diff --git a/vendor/github.com/urfave/cli-altsrc/v3/testutl.go b/vendor/github.com/urfave/cli-altsrc/v3/testutl.go new file mode 100644 index 000000000..6cc8200b0 --- /dev/null +++ b/vendor/github.com/urfave/cli-altsrc/v3/testutl.go @@ -0,0 +1,26 @@ +package altsrc + +import ( + "context" + "os/exec" + "path/filepath" + "strings" +) + +func MustTestdataDir(ctx context.Context) string { + testdataDir, err := TestdataDir(ctx) + if err != nil { + panic(err) + } + + return testdataDir +} + +func TestdataDir(ctx context.Context) (string, error) { + topBytes, err := exec.CommandContext(ctx, "git", "rev-parse", "--show-toplevel").Output() + if err != nil { + return "", err + } + + return filepath.Join(strings.TrimSpace(string(topBytes)), ".testdata"), nil +} diff --git a/vendor/github.com/urfave/cli-altsrc/v3/uri_source_cache.go b/vendor/github.com/urfave/cli-altsrc/v3/uri_source_cache.go new file mode 100644 index 000000000..d45f84192 --- /dev/null +++ b/vendor/github.com/urfave/cli-altsrc/v3/uri_source_cache.go @@ -0,0 +1,79 @@ +package altsrc + +import ( + "fmt" + "io" + "net/http" + "net/url" + "os" + "runtime" + "strings" +) + +func readURI(uriString string) ([]byte, error) { + u, err := url.Parse(uriString) + if err != nil { + return nil, err + } + + if u.Host != "" { // i have a host, now do i support the scheme? + switch u.Scheme { + case "http", "https": + res, err := http.Get(uriString) + if err != nil { + return nil, err + } + return io.ReadAll(res.Body) + default: + return nil, fmt.Errorf("%[1]w: scheme of %[2]q is unsupported", Err, uriString) + } + } else if u.Path != "" || + (runtime.GOOS == "windows" && strings.Contains(u.String(), "\\")) { + if _, notFoundFileErr := os.Stat(uriString); notFoundFileErr != nil { + return nil, fmt.Errorf("%[1]w: cannot read from %[2]q because it does not exist", Err, uriString) + } + return os.ReadFile(uriString) + } + + return nil, fmt.Errorf("%[1]w: unable to determine how to load from %[2]q", Err, uriString) +} + +type URISourceCache[T any] struct { + uri string + m *T + unmarshaller func([]byte, any) error +} + +func NewURISourceCache[T any](uri string, f func([]byte, any) error) *URISourceCache[T] { + return &URISourceCache[T]{ + uri: uri, + unmarshaller: f, + } +} + +func (fsc *URISourceCache[T]) Get() T { + if fsc.m == nil { + res := new(T) + if b, err := readURI(fsc.uri); err != nil { + tracef("failed to read uri %[1]q: %[2]v", fsc.uri, err) + } else if err := fsc.unmarshaller(b, res); err != nil { + tracef("failed to unmarshal from file %[1]q: %[2]v", fsc.uri, err) + } else { + fsc.m = res + } + } + + if fsc.m == nil { + tracef("returning empty") + + return *(new(T)) + } + + return *fsc.m +} + +type MapAnyAnyURISourceCache = URISourceCache[map[any]any] + +func NewMapAnyAnyURISourceCache(file string, f func([]byte, any) error) *MapAnyAnyURISourceCache { + return NewURISourceCache[map[any]any](file, f) +} diff --git a/vendor/github.com/urfave/cli/v2/.flake8 b/vendor/github.com/urfave/cli/v2/.flake8 deleted file mode 100644 index 6deafc261..000000000 --- a/vendor/github.com/urfave/cli/v2/.flake8 +++ /dev/null @@ -1,2 +0,0 @@ -[flake8] -max-line-length = 120 diff --git a/vendor/github.com/urfave/cli/v2/.gitignore b/vendor/github.com/urfave/cli/v2/.gitignore deleted file mode 100644 index 1ef91a60b..000000000 --- a/vendor/github.com/urfave/cli/v2/.gitignore +++ /dev/null @@ -1,14 +0,0 @@ -*.coverprofile -*.exe -*.orig -.*envrc -.envrc -.idea -# goimports is installed here if not available -/.local/ -/site/ -coverage.txt -internal/*/built-example -vendor -/cmd/urfave-cli-genflags/urfave-cli-genflags -*.exe diff --git a/vendor/github.com/urfave/cli/v2/.golangci.yaml b/vendor/github.com/urfave/cli/v2/.golangci.yaml deleted file mode 100644 index 89b6e8661..000000000 --- a/vendor/github.com/urfave/cli/v2/.golangci.yaml +++ /dev/null @@ -1,4 +0,0 @@ -# https://golangci-lint.run/usage/configuration/ -linters: - enable: - - misspell diff --git a/vendor/github.com/urfave/cli/v2/README.md b/vendor/github.com/urfave/cli/v2/README.md deleted file mode 100644 index 9080aee41..000000000 --- a/vendor/github.com/urfave/cli/v2/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# cli - -[![Run Tests](https://github.com/urfave/cli/actions/workflows/cli.yml/badge.svg?branch=v2-maint)](https://github.com/urfave/cli/actions/workflows/cli.yml) -[![Go Reference](https://pkg.go.dev/badge/github.com/urfave/cli/v2.svg)](https://pkg.go.dev/github.com/urfave/cli/v2) -[![Go Report Card](https://goreportcard.com/badge/github.com/urfave/cli/v2)](https://goreportcard.com/report/github.com/urfave/cli/v2) -[![codecov](https://codecov.io/gh/urfave/cli/branch/v2-maint/graph/badge.svg?token=t9YGWLh05g)](https://app.codecov.io/gh/urfave/cli/tree/v2-maint) - -cli is a simple, fast, and fun package for building command line apps in Go. The -goal is to enable developers to write fast and distributable command line -applications in an expressive way. - -## Documentation - -More documentation is available in [`./docs`](./docs) or the hosted -documentation site at <https://cli.urfave.org>. - -## License - -See [`LICENSE`](./LICENSE) diff --git a/vendor/github.com/urfave/cli/v2/app.go b/vendor/github.com/urfave/cli/v2/app.go deleted file mode 100644 index af072e769..000000000 --- a/vendor/github.com/urfave/cli/v2/app.go +++ /dev/null @@ -1,536 +0,0 @@ -package cli - -import ( - "context" - "flag" - "fmt" - "io" - "os" - "path/filepath" - "sort" - "strings" - "time" -) - -const suggestDidYouMeanTemplate = "Did you mean %q?" - -var ( - changeLogURL = "https://github.com/urfave/cli/blob/main/docs/CHANGELOG.md" - appActionDeprecationURL = fmt.Sprintf("%s#deprecated-cli-app-action-signature", changeLogURL) - contactSysadmin = "This is an error in the application. Please contact the distributor of this application if this is not you." - errInvalidActionType = NewExitError("ERROR invalid Action type. "+ - fmt.Sprintf("Must be `func(*Context`)` or `func(*Context) error). %s", contactSysadmin)+ - fmt.Sprintf("See %s", appActionDeprecationURL), 2) - ignoreFlagPrefix = "test." // this is to ignore test flags when adding flags from other packages - - SuggestFlag SuggestFlagFunc = nil // initialized in suggestions.go unless built with urfave_cli_no_suggest - SuggestCommand SuggestCommandFunc = nil // initialized in suggestions.go unless built with urfave_cli_no_suggest - SuggestDidYouMeanTemplate string = suggestDidYouMeanTemplate -) - -// App is the main structure of a cli application. It is recommended that -// an app be created with the cli.NewApp() function -type App struct { - // The name of the program. Defaults to path.Base(os.Args[0]) - Name string - // Full name of command for help, defaults to Name - HelpName string - // Description of the program. - Usage string - // Text to override the USAGE section of help - UsageText string - // Whether this command supports arguments - Args bool - // Description of the program argument format. - ArgsUsage string - // Version of the program - Version string - // Description of the program - Description string - // DefaultCommand is the (optional) name of a command - // to run if no command names are passed as CLI arguments. - DefaultCommand string - // List of commands to execute - Commands []*Command - // List of flags to parse - Flags []Flag - // Boolean to enable bash completion commands - EnableBashCompletion bool - // Boolean to hide built-in help command and help flag - HideHelp bool - // Boolean to hide built-in help command but keep help flag. - // Ignored if HideHelp is true. - HideHelpCommand bool - // Boolean to hide built-in version flag and the VERSION section of help - HideVersion bool - // categories contains the categorized commands and is populated on app startup - categories CommandCategories - // flagCategories contains the categorized flags and is populated on app startup - flagCategories FlagCategories - // An action to execute when the shell completion flag is set - BashComplete BashCompleteFunc - // An action to execute before any subcommands are run, but after the context is ready - // If a non-nil error is returned, no subcommands are run - Before BeforeFunc - // An action to execute after any subcommands are run, but after the subcommand has finished - // It is run even if Action() panics - After AfterFunc - // The action to execute when no subcommands are specified - Action ActionFunc - // Execute this function if the proper command cannot be found - CommandNotFound CommandNotFoundFunc - // Execute this function if a usage error occurs - OnUsageError OnUsageErrorFunc - // Execute this function when an invalid flag is accessed from the context - InvalidFlagAccessHandler InvalidFlagAccessFunc - // Compilation date - Compiled time.Time - // List of all authors who contributed - Authors []*Author - // Copyright of the binary if any - Copyright string - // Reader reader to write input to (useful for tests) - Reader io.Reader - // Writer writer to write output to - Writer io.Writer - // ErrWriter writes error output - ErrWriter io.Writer - // ExitErrHandler processes any error encountered while running an App before - // it is returned to the caller. If no function is provided, HandleExitCoder - // is used as the default behavior. - ExitErrHandler ExitErrHandlerFunc - // Other custom info - Metadata map[string]interface{} - // Carries a function which returns app specific info. - ExtraInfo func() map[string]string - // CustomAppHelpTemplate the text template for app help topic. - // cli.go uses text/template to render templates. You can - // render custom help text by setting this variable. - CustomAppHelpTemplate string - // SliceFlagSeparator is used to customize the separator for SliceFlag, the default is "," - SliceFlagSeparator string - // DisableSliceFlagSeparator is used to disable SliceFlagSeparator, the default is false - DisableSliceFlagSeparator bool - // Boolean to enable short-option handling so user can combine several - // single-character bool arguments into one - // i.e. foobar -o -v -> foobar -ov - UseShortOptionHandling bool - // Enable suggestions for commands and flags - Suggest bool - // Allows global flags set by libraries which use flag.XXXVar(...) directly - // to be parsed through this library - AllowExtFlags bool - // Treat all flags as normal arguments if true - SkipFlagParsing bool - - didSetup bool - separator separatorSpec - - rootCommand *Command -} - -type SuggestFlagFunc func(flags []Flag, provided string, hideHelp bool) string - -type SuggestCommandFunc func(commands []*Command, provided string) string - -// Tries to find out when this binary was compiled. -// Returns the current time if it fails to find it. -func compileTime() time.Time { - info, err := os.Stat(os.Args[0]) - if err != nil { - return time.Now() - } - return info.ModTime() -} - -// NewApp creates a new cli Application with some reasonable defaults for Name, -// Usage, Version and Action. -func NewApp() *App { - return &App{ - Name: filepath.Base(os.Args[0]), - Usage: "A new cli application", - UsageText: "", - BashComplete: DefaultAppComplete, - Action: helpCommand.Action, - Compiled: compileTime(), - Reader: os.Stdin, - Writer: os.Stdout, - ErrWriter: os.Stderr, - } -} - -// Setup runs initialization code to ensure all data structures are ready for -// `Run` or inspection prior to `Run`. It is internally called by `Run`, but -// will return early if setup has already happened. -func (a *App) Setup() { - if a.didSetup { - return - } - - a.didSetup = true - - if a.Name == "" { - a.Name = filepath.Base(os.Args[0]) - } - - if a.HelpName == "" { - a.HelpName = a.Name - } - - if a.Usage == "" { - a.Usage = "A new cli application" - } - - if a.Version == "" { - a.HideVersion = true - } - - if a.BashComplete == nil { - a.BashComplete = DefaultAppComplete - } - - if a.Action == nil { - a.Action = helpCommand.Action - } - - if a.Compiled == (time.Time{}) { - a.Compiled = compileTime() - } - - if a.Reader == nil { - a.Reader = os.Stdin - } - - if a.Writer == nil { - a.Writer = os.Stdout - } - - if a.ErrWriter == nil { - a.ErrWriter = os.Stderr - } - - if a.AllowExtFlags { - // add global flags added by other packages - flag.VisitAll(func(f *flag.Flag) { - // skip test flags - if !strings.HasPrefix(f.Name, ignoreFlagPrefix) { - a.Flags = append(a.Flags, &extFlag{f}) - } - }) - } - - if len(a.SliceFlagSeparator) != 0 { - a.separator.customized = true - a.separator.sep = a.SliceFlagSeparator - } - - if a.DisableSliceFlagSeparator { - a.separator.customized = true - a.separator.disabled = true - } - - for _, c := range a.Commands { - cname := c.Name - if c.HelpName != "" { - cname = c.HelpName - } - c.separator = a.separator - c.HelpName = fmt.Sprintf("%s %s", a.HelpName, cname) - c.flagCategories = newFlagCategoriesFromFlags(c.Flags) - } - - if a.Command(helpCommand.Name) == nil && !a.HideHelp { - if !a.HideHelpCommand { - a.appendCommand(helpCommand) - } - - if HelpFlag != nil { - a.appendFlag(HelpFlag) - } - } - - if !a.HideVersion { - a.appendFlag(VersionFlag) - } - - a.categories = newCommandCategories() - for _, command := range a.Commands { - a.categories.AddCommand(command.Category, command) - } - sort.Sort(a.categories.(*commandCategories)) - - a.flagCategories = newFlagCategoriesFromFlags(a.Flags) - - if a.Metadata == nil { - a.Metadata = make(map[string]interface{}) - } -} - -func (a *App) newRootCommand() *Command { - return &Command{ - Name: a.Name, - Usage: a.Usage, - UsageText: a.UsageText, - Description: a.Description, - ArgsUsage: a.ArgsUsage, - BashComplete: a.BashComplete, - Before: a.Before, - After: a.After, - Action: a.Action, - OnUsageError: a.OnUsageError, - Subcommands: a.Commands, - Flags: a.Flags, - flagCategories: a.flagCategories, - HideHelp: a.HideHelp, - HideHelpCommand: a.HideHelpCommand, - UseShortOptionHandling: a.UseShortOptionHandling, - HelpName: a.HelpName, - CustomHelpTemplate: a.CustomAppHelpTemplate, - categories: a.categories, - SkipFlagParsing: a.SkipFlagParsing, - isRoot: true, - separator: a.separator, - } -} - -func (a *App) newFlagSet() (*flag.FlagSet, error) { - return flagSet(a.Name, a.Flags, a.separator) -} - -func (a *App) useShortOptionHandling() bool { - return a.UseShortOptionHandling -} - -// Run is the entry point to the cli app. Parses the arguments slice and routes -// to the proper flag/args combination -func (a *App) Run(arguments []string) (err error) { - return a.RunContext(context.Background(), arguments) -} - -// RunContext is like Run except it takes a Context that will be -// passed to its commands and sub-commands. Through this, you can -// propagate timeouts and cancellation requests -func (a *App) RunContext(ctx context.Context, arguments []string) (err error) { - a.Setup() - - // handle the completion flag separately from the flagset since - // completion could be attempted after a flag, but before its value was put - // on the command line. this causes the flagset to interpret the completion - // flag name as the value of the flag before it which is undesirable - // note that we can only do this because the shell autocomplete function - // always appends the completion flag at the end of the command - shellComplete, arguments := checkShellCompleteFlag(a, arguments) - - cCtx := NewContext(a, nil, &Context{Context: ctx}) - cCtx.shellComplete = shellComplete - - a.rootCommand = a.newRootCommand() - cCtx.Command = a.rootCommand - - if err := checkDuplicatedCmds(a.rootCommand); err != nil { - return err - } - return a.rootCommand.Run(cCtx, arguments...) -} - -// RunAsSubcommand is for legacy/compatibility purposes only. New code should only -// use App.RunContext. This function is slated to be removed in v3. -func (a *App) RunAsSubcommand(ctx *Context) (err error) { - a.Setup() - - cCtx := NewContext(a, nil, ctx) - cCtx.shellComplete = ctx.shellComplete - - a.rootCommand = a.newRootCommand() - cCtx.Command = a.rootCommand - - return a.rootCommand.Run(cCtx, ctx.Args().Slice()...) -} - -func (a *App) suggestFlagFromError(err error, command string) (string, error) { - flag, parseErr := flagFromError(err) - if parseErr != nil { - return "", err - } - - flags := a.Flags - hideHelp := a.HideHelp - if command != "" { - cmd := a.Command(command) - if cmd == nil { - return "", err - } - flags = cmd.Flags - hideHelp = hideHelp || cmd.HideHelp - } - - if SuggestFlag == nil { - return "", err - } - suggestion := SuggestFlag(flags, flag, hideHelp) - if len(suggestion) == 0 { - return "", err - } - - return fmt.Sprintf(SuggestDidYouMeanTemplate+"\n\n", suggestion), nil -} - -// RunAndExitOnError calls .Run() and exits non-zero if an error was returned -// -// Deprecated: instead you should return an error that fulfills cli.ExitCoder -// to cli.App.Run. This will cause the application to exit with the given error -// code in the cli.ExitCoder -func (a *App) RunAndExitOnError() { - if err := a.Run(os.Args); err != nil { - _, _ = fmt.Fprintln(a.ErrWriter, err) - OsExiter(1) - } -} - -// Command returns the named command on App. Returns nil if the command does not exist -func (a *App) Command(name string) *Command { - for _, c := range a.Commands { - if c.HasName(name) { - return c - } - } - - return nil -} - -// VisibleCategories returns a slice of categories and commands that are -// Hidden=false -func (a *App) VisibleCategories() []CommandCategory { - ret := []CommandCategory{} - for _, category := range a.categories.Categories() { - if visible := func() CommandCategory { - if len(category.VisibleCommands()) > 0 { - return category - } - return nil - }(); visible != nil { - ret = append(ret, visible) - } - } - return ret -} - -// VisibleCommands returns a slice of the Commands with Hidden=false -func (a *App) VisibleCommands() []*Command { - var ret []*Command - for _, command := range a.Commands { - if !command.Hidden { - ret = append(ret, command) - } - } - return ret -} - -// VisibleFlagCategories returns a slice containing all the categories with the flags they contain -func (a *App) VisibleFlagCategories() []VisibleFlagCategory { - if a.flagCategories == nil { - return []VisibleFlagCategory{} - } - return a.flagCategories.VisibleCategories() -} - -// VisibleFlags returns a slice of the Flags with Hidden=false -func (a *App) VisibleFlags() []Flag { - return visibleFlags(a.Flags) -} - -func (a *App) appendFlag(fl Flag) { - if !hasFlag(a.Flags, fl) { - a.Flags = append(a.Flags, fl) - } -} - -func (a *App) appendCommand(c *Command) { - if !hasCommand(a.Commands, c) { - a.Commands = append(a.Commands, c) - } -} - -func (a *App) handleExitCoder(cCtx *Context, err error) { - if a.ExitErrHandler != nil { - a.ExitErrHandler(cCtx, err) - } else { - HandleExitCoder(err) - } -} - -func (a *App) argsWithDefaultCommand(oldArgs Args) Args { - if a.DefaultCommand != "" { - rawArgs := append([]string{a.DefaultCommand}, oldArgs.Slice()...) - newArgs := args(rawArgs) - - return &newArgs - } - - return oldArgs -} - -func runFlagActions(c *Context, fs []Flag) error { - for _, f := range fs { - isSet := false - for _, name := range f.Names() { - if c.IsSet(name) { - isSet = true - break - } - } - if isSet { - if af, ok := f.(ActionableFlag); ok { - if err := af.RunAction(c); err != nil { - return err - } - } - } - } - return nil -} - -// Author represents someone who has contributed to a cli project. -type Author struct { - Name string // The Authors name - Email string // The Authors email -} - -// String makes Author comply to the Stringer interface, to allow an easy print in the templating process -func (a *Author) String() string { - e := "" - if a.Email != "" { - e = " <" + a.Email + ">" - } - - return fmt.Sprintf("%v%v", a.Name, e) -} - -// HandleAction attempts to figure out which Action signature was used. If -// it's an ActionFunc or a func with the legacy signature for Action, the func -// is run! -func HandleAction(action interface{}, cCtx *Context) (err error) { - switch a := action.(type) { - case ActionFunc: - return a(cCtx) - case func(*Context) error: - return a(cCtx) - case func(*Context): // deprecated function signature - a(cCtx) - return nil - } - - return errInvalidActionType -} - -func checkStringSliceIncludes(want string, sSlice []string) bool { - found := false - for _, s := range sSlice { - if want == s { - found = true - break - } - } - - return found -} diff --git a/vendor/github.com/urfave/cli/v2/args.go b/vendor/github.com/urfave/cli/v2/args.go deleted file mode 100644 index bd65c17bd..000000000 --- a/vendor/github.com/urfave/cli/v2/args.go +++ /dev/null @@ -1,54 +0,0 @@ -package cli - -type Args interface { - // Get returns the nth argument, or else a blank string - Get(n int) string - // First returns the first argument, or else a blank string - First() string - // Tail returns the rest of the arguments (not the first one) - // or else an empty string slice - Tail() []string - // Len returns the length of the wrapped slice - Len() int - // Present checks if there are any arguments present - Present() bool - // Slice returns a copy of the internal slice - Slice() []string -} - -type args []string - -func (a *args) Get(n int) string { - if len(*a) > n { - return (*a)[n] - } - return "" -} - -func (a *args) First() string { - return a.Get(0) -} - -func (a *args) Tail() []string { - if a.Len() >= 2 { - tail := []string((*a)[1:]) - ret := make([]string, len(tail)) - copy(ret, tail) - return ret - } - return []string{} -} - -func (a *args) Len() int { - return len(*a) -} - -func (a *args) Present() bool { - return a.Len() != 0 -} - -func (a *args) Slice() []string { - ret := make([]string, len(*a)) - copy(ret, *a) - return ret -} diff --git a/vendor/github.com/urfave/cli/v2/cli.go b/vendor/github.com/urfave/cli/v2/cli.go deleted file mode 100644 index 28ad0582b..000000000 --- a/vendor/github.com/urfave/cli/v2/cli.go +++ /dev/null @@ -1,25 +0,0 @@ -// Package cli provides a minimal framework for creating and organizing command line -// Go applications. cli is designed to be easy to understand and write, the most simple -// cli application can be written as follows: -// -// func main() { -// (&cli.App{}).Run(os.Args) -// } -// -// Of course this application does not do much, so let's make this an actual application: -// -// func main() { -// app := &cli.App{ -// Name: "greet", -// Usage: "say a greeting", -// Action: func(c *cli.Context) error { -// fmt.Println("Greetings") -// return nil -// }, -// } -// -// app.Run(os.Args) -// } -package cli - -//go:generate make -C cmd/urfave-cli-genflags run diff --git a/vendor/github.com/urfave/cli/v2/command.go b/vendor/github.com/urfave/cli/v2/command.go deleted file mode 100644 index 472c1ff44..000000000 --- a/vendor/github.com/urfave/cli/v2/command.go +++ /dev/null @@ -1,421 +0,0 @@ -package cli - -import ( - "flag" - "fmt" - "reflect" - "sort" - "strings" -) - -// Command is a subcommand for a cli.App. -type Command struct { - // The name of the command - Name string - // A list of aliases for the command - Aliases []string - // A short description of the usage of this command - Usage string - // Custom text to show on USAGE section of help - UsageText string - // A longer explanation of how the command works - Description string - // Whether this command supports arguments - Args bool - // A short description of the arguments of this command - ArgsUsage string - // The category the command is part of - Category string - // The function to call when checking for bash command completions - BashComplete BashCompleteFunc - // An action to execute before any sub-subcommands are run, but after the context is ready - // If a non-nil error is returned, no sub-subcommands are run - Before BeforeFunc - // An action to execute after any subcommands are run, but after the subcommand has finished - // It is run even if Action() panics - After AfterFunc - // The function to call when this command is invoked - Action ActionFunc - // Execute this function if a usage error occurs. - OnUsageError OnUsageErrorFunc - // List of child commands - Subcommands []*Command - // List of flags to parse - Flags []Flag - flagCategories FlagCategories - // Treat all flags as normal arguments if true - SkipFlagParsing bool - // Boolean to hide built-in help command and help flag - HideHelp bool - // Boolean to hide built-in help command but keep help flag - // Ignored if HideHelp is true. - HideHelpCommand bool - // Boolean to hide this command from help or completion - Hidden bool - // Boolean to enable short-option handling so user can combine several - // single-character bool arguments into one - // i.e. foobar -o -v -> foobar -ov - UseShortOptionHandling bool - - // Full name of command for help, defaults to full command name, including parent commands. - HelpName string - commandNamePath []string - - // CustomHelpTemplate the text template for the command help topic. - // cli.go uses text/template to render templates. You can - // render custom help text by setting this variable. - CustomHelpTemplate string - - // categories contains the categorized commands and is populated on app startup - categories CommandCategories - - // if this is a root "special" command - isRoot bool - - separator separatorSpec -} - -type Commands []*Command - -type CommandsByName []*Command - -func (c CommandsByName) Len() int { - return len(c) -} - -func (c CommandsByName) Less(i, j int) bool { - return lexicographicLess(c[i].Name, c[j].Name) -} - -func (c CommandsByName) Swap(i, j int) { - c[i], c[j] = c[j], c[i] -} - -// FullName returns the full name of the command. -// For subcommands this ensures that parent commands are part of the command path -func (c *Command) FullName() string { - if c.commandNamePath == nil { - return c.Name - } - return strings.Join(c.commandNamePath, " ") -} - -func (cmd *Command) Command(name string) *Command { - for _, c := range cmd.Subcommands { - if c.HasName(name) { - return c - } - } - - return nil -} - -func (c *Command) setup(ctx *Context) { - if c.Command(helpCommand.Name) == nil && !c.HideHelp { - if !c.HideHelpCommand { - c.Subcommands = append(c.Subcommands, helpCommand) - } - } - - if !c.HideHelp && HelpFlag != nil { - // append help to flags - c.appendFlag(HelpFlag) - } - - if ctx.App.UseShortOptionHandling { - c.UseShortOptionHandling = true - } - - c.categories = newCommandCategories() - for _, command := range c.Subcommands { - c.categories.AddCommand(command.Category, command) - } - sort.Sort(c.categories.(*commandCategories)) - - for _, scmd := range c.Subcommands { - if scmd.HelpName == "" { - scmd.HelpName = fmt.Sprintf("%s %s", c.HelpName, scmd.Name) - } - scmd.separator = c.separator - } - - if c.BashComplete == nil { - c.BashComplete = DefaultCompleteWithFlags(c) - } -} - -func (c *Command) Run(cCtx *Context, arguments ...string) (err error) { - - if !c.isRoot { - c.setup(cCtx) - if err := checkDuplicatedCmds(c); err != nil { - return err - } - } - - a := args(arguments) - set, err := c.parseFlags(&a, cCtx.shellComplete) - cCtx.flagSet = set - - if checkCompletions(cCtx) { - return nil - } - - if err != nil { - if c.OnUsageError != nil { - err = c.OnUsageError(cCtx, err, !c.isRoot) - cCtx.App.handleExitCoder(cCtx, err) - return err - } - _, _ = fmt.Fprintf(cCtx.App.Writer, "%s %s\n\n", "Incorrect Usage:", err.Error()) - if cCtx.App.Suggest { - if suggestion, err := c.suggestFlagFromError(err, ""); err == nil { - fmt.Fprintf(cCtx.App.Writer, "%s", suggestion) - } - } - if !c.HideHelp { - if c.isRoot { - _ = ShowAppHelp(cCtx) - } else { - _ = ShowCommandHelp(cCtx.parentContext, c.Name) - } - } - return err - } - - if checkHelp(cCtx) { - return helpCommand.Action(cCtx) - } - - if c.isRoot && !cCtx.App.HideVersion && checkVersion(cCtx) { - ShowVersion(cCtx) - return nil - } - - if c.After != nil && !cCtx.shellComplete { - defer func() { - afterErr := c.After(cCtx) - if afterErr != nil { - cCtx.App.handleExitCoder(cCtx, err) - if err != nil { - err = newMultiError(err, afterErr) - } else { - err = afterErr - } - } - }() - } - - cerr := cCtx.checkRequiredFlags(c.Flags) - if cerr != nil { - _ = helpCommand.Action(cCtx) - return cerr - } - - if c.Before != nil && !cCtx.shellComplete { - beforeErr := c.Before(cCtx) - if beforeErr != nil { - cCtx.App.handleExitCoder(cCtx, beforeErr) - err = beforeErr - return err - } - } - - if err = runFlagActions(cCtx, c.Flags); err != nil { - return err - } - - var cmd *Command - args := cCtx.Args() - if args.Present() { - name := args.First() - cmd = c.Command(name) - if cmd == nil { - hasDefault := cCtx.App.DefaultCommand != "" - isFlagName := checkStringSliceIncludes(name, cCtx.FlagNames()) - - var ( - isDefaultSubcommand = false - defaultHasSubcommands = false - ) - - if hasDefault { - dc := cCtx.App.Command(cCtx.App.DefaultCommand) - defaultHasSubcommands = len(dc.Subcommands) > 0 - for _, dcSub := range dc.Subcommands { - if checkStringSliceIncludes(name, dcSub.Names()) { - isDefaultSubcommand = true - break - } - } - } - - if isFlagName || (hasDefault && (defaultHasSubcommands && isDefaultSubcommand)) { - argsWithDefault := cCtx.App.argsWithDefaultCommand(args) - if !reflect.DeepEqual(args, argsWithDefault) { - cmd = cCtx.App.rootCommand.Command(argsWithDefault.First()) - } - } - } - } else if c.isRoot && cCtx.App.DefaultCommand != "" { - if dc := cCtx.App.Command(cCtx.App.DefaultCommand); dc != c { - cmd = dc - } - } - - if cmd != nil { - newcCtx := NewContext(cCtx.App, nil, cCtx) - newcCtx.Command = cmd - return cmd.Run(newcCtx, cCtx.Args().Slice()...) - } - - if c.Action == nil { - c.Action = helpCommand.Action - } - - err = c.Action(cCtx) - - cCtx.App.handleExitCoder(cCtx, err) - return err -} - -func (c *Command) newFlagSet() (*flag.FlagSet, error) { - return flagSet(c.Name, c.Flags, c.separator) -} - -func (c *Command) useShortOptionHandling() bool { - return c.UseShortOptionHandling -} - -func (c *Command) suggestFlagFromError(err error, command string) (string, error) { - flag, parseErr := flagFromError(err) - if parseErr != nil { - return "", err - } - - flags := c.Flags - hideHelp := c.HideHelp - if command != "" { - cmd := c.Command(command) - if cmd == nil { - return "", err - } - flags = cmd.Flags - hideHelp = hideHelp || cmd.HideHelp - } - - suggestion := SuggestFlag(flags, flag, hideHelp) - if len(suggestion) == 0 { - return "", err - } - - return fmt.Sprintf(SuggestDidYouMeanTemplate, suggestion) + "\n\n", nil -} - -func (c *Command) parseFlags(args Args, shellComplete bool) (*flag.FlagSet, error) { - set, err := c.newFlagSet() - if err != nil { - return nil, err - } - - if c.SkipFlagParsing { - return set, set.Parse(append([]string{"--"}, args.Tail()...)) - } - - err = parseIter(set, c, args.Tail(), shellComplete) - if err != nil { - return nil, err - } - - err = normalizeFlags(c.Flags, set) - if err != nil { - return nil, err - } - - return set, nil -} - -// Names returns the names including short names and aliases. -func (c *Command) Names() []string { - return append([]string{c.Name}, c.Aliases...) -} - -// HasName returns true if Command.Name matches given name -func (c *Command) HasName(name string) bool { - for _, n := range c.Names() { - if n == name { - return true - } - } - return false -} - -// VisibleCategories returns a slice of categories and commands that are -// Hidden=false -func (c *Command) VisibleCategories() []CommandCategory { - ret := []CommandCategory{} - for _, category := range c.categories.Categories() { - if visible := func() CommandCategory { - if len(category.VisibleCommands()) > 0 { - return category - } - return nil - }(); visible != nil { - ret = append(ret, visible) - } - } - return ret -} - -// VisibleCommands returns a slice of the Commands with Hidden=false -func (c *Command) VisibleCommands() []*Command { - var ret []*Command - for _, command := range c.Subcommands { - if !command.Hidden { - ret = append(ret, command) - } - } - return ret -} - -// VisibleFlagCategories returns a slice containing all the visible flag categories with the flags they contain -func (c *Command) VisibleFlagCategories() []VisibleFlagCategory { - if c.flagCategories == nil { - c.flagCategories = newFlagCategoriesFromFlags(c.Flags) - } - return c.flagCategories.VisibleCategories() -} - -// VisibleFlags returns a slice of the Flags with Hidden=false -func (c *Command) VisibleFlags() []Flag { - return visibleFlags(c.Flags) -} - -func (c *Command) appendFlag(fl Flag) { - if !hasFlag(c.Flags, fl) { - c.Flags = append(c.Flags, fl) - } -} - -func hasCommand(commands []*Command, command *Command) bool { - for _, existing := range commands { - if command == existing { - return true - } - } - - return false -} - -func checkDuplicatedCmds(parent *Command) error { - seen := make(map[string]struct{}) - for _, c := range parent.Subcommands { - for _, name := range c.Names() { - if _, exists := seen[name]; exists { - return fmt.Errorf("parent command [%s] has duplicated subcommand name or alias: %s", parent.Name, name) - } - seen[name] = struct{}{} - } - } - return nil -} diff --git a/vendor/github.com/urfave/cli/v2/context.go b/vendor/github.com/urfave/cli/v2/context.go deleted file mode 100644 index 8dd476521..000000000 --- a/vendor/github.com/urfave/cli/v2/context.go +++ /dev/null @@ -1,272 +0,0 @@ -package cli - -import ( - "context" - "flag" - "fmt" - "strings" -) - -// Context is a type that is passed through to -// each Handler action in a cli application. Context -// can be used to retrieve context-specific args and -// parsed command-line options. -type Context struct { - context.Context - App *App - Command *Command - shellComplete bool - flagSet *flag.FlagSet - parentContext *Context -} - -// NewContext creates a new context. For use in when invoking an App or Command action. -func NewContext(app *App, set *flag.FlagSet, parentCtx *Context) *Context { - c := &Context{App: app, flagSet: set, parentContext: parentCtx} - if parentCtx != nil { - c.Context = parentCtx.Context - c.shellComplete = parentCtx.shellComplete - if parentCtx.flagSet == nil { - parentCtx.flagSet = &flag.FlagSet{} - } - } - - c.Command = &Command{} - - if c.Context == nil { - c.Context = context.Background() - } - - return c -} - -// NumFlags returns the number of flags set -func (cCtx *Context) NumFlags() int { - return cCtx.flagSet.NFlag() -} - -// Set sets a context flag to a value. -func (cCtx *Context) Set(name, value string) error { - if fs := cCtx.lookupFlagSet(name); fs != nil { - return fs.Set(name, value) - } - - return fmt.Errorf("no such flag -%s", name) -} - -// IsSet determines if the flag was actually set -func (cCtx *Context) IsSet(name string) bool { - - if fs := cCtx.lookupFlagSet(name); fs != nil { - isSet := false - fs.Visit(func(f *flag.Flag) { - if f.Name == name { - isSet = true - } - }) - if isSet { - return true - } - - f := cCtx.lookupFlag(name) - if f == nil { - return false - } - - if f.IsSet() { - return true - } - - // now redo flagset search on aliases - aliases := f.Names() - fs.Visit(func(f *flag.Flag) { - for _, alias := range aliases { - if f.Name == alias { - isSet = true - } - } - }) - - if isSet { - return true - } - } - - return false -} - -// LocalFlagNames returns a slice of flag names used in this context. -func (cCtx *Context) LocalFlagNames() []string { - var names []string - cCtx.flagSet.Visit(makeFlagNameVisitor(&names)) - // Check the flags which have been set via env or file - if cCtx.Command != nil && cCtx.Command.Flags != nil { - for _, f := range cCtx.Command.Flags { - if f.IsSet() { - names = append(names, f.Names()...) - } - } - } - - // Sort out the duplicates since flag could be set via multiple - // paths - m := map[string]struct{}{} - var unames []string - for _, name := range names { - if _, ok := m[name]; !ok { - m[name] = struct{}{} - unames = append(unames, name) - } - } - - return unames -} - -// FlagNames returns a slice of flag names used by the this context and all of -// its parent contexts. -func (cCtx *Context) FlagNames() []string { - var names []string - for _, pCtx := range cCtx.Lineage() { - names = append(names, pCtx.LocalFlagNames()...) - } - return names -} - -// Lineage returns *this* context and all of its ancestor contexts in order from -// child to parent -func (cCtx *Context) Lineage() []*Context { - var lineage []*Context - - for cur := cCtx; cur != nil; cur = cur.parentContext { - lineage = append(lineage, cur) - } - - return lineage -} - -// Count returns the num of occurrences of this flag -func (cCtx *Context) Count(name string) int { - if fs := cCtx.lookupFlagSet(name); fs != nil { - if cf, ok := fs.Lookup(name).Value.(Countable); ok { - return cf.Count() - } - } - return 0 -} - -// Value returns the value of the flag corresponding to `name` -func (cCtx *Context) Value(name string) interface{} { - if fs := cCtx.lookupFlagSet(name); fs != nil { - return fs.Lookup(name).Value.(flag.Getter).Get() - } - return nil -} - -// Args returns the command line arguments associated with the context. -func (cCtx *Context) Args() Args { - ret := args(cCtx.flagSet.Args()) - return &ret -} - -// NArg returns the number of the command line arguments. -func (cCtx *Context) NArg() int { - return cCtx.Args().Len() -} - -func (cCtx *Context) lookupFlag(name string) Flag { - for _, c := range cCtx.Lineage() { - if c.Command == nil { - continue - } - - for _, f := range c.Command.Flags { - for _, n := range f.Names() { - if n == name { - return f - } - } - } - } - - if cCtx.App != nil { - for _, f := range cCtx.App.Flags { - for _, n := range f.Names() { - if n == name { - return f - } - } - } - } - - return nil -} - -func (cCtx *Context) lookupFlagSet(name string) *flag.FlagSet { - for _, c := range cCtx.Lineage() { - if c.flagSet == nil { - continue - } - if f := c.flagSet.Lookup(name); f != nil { - return c.flagSet - } - } - cCtx.onInvalidFlag(name) - return nil -} - -func (cCtx *Context) checkRequiredFlags(flags []Flag) requiredFlagsErr { - var missingFlags []string - for _, f := range flags { - if rf, ok := f.(RequiredFlag); ok && rf.IsRequired() { - var flagPresent bool - var flagName string - - flagNames := f.Names() - flagName = flagNames[0] - - for _, key := range flagNames { - if cCtx.IsSet(strings.TrimSpace(key)) { - flagPresent = true - } - } - - if !flagPresent && flagName != "" { - missingFlags = append(missingFlags, flagName) - } - } - } - - if len(missingFlags) != 0 { - return &errRequiredFlags{missingFlags: missingFlags} - } - - return nil -} - -func (cCtx *Context) onInvalidFlag(name string) { - for cCtx != nil { - if cCtx.App != nil && cCtx.App.InvalidFlagAccessHandler != nil { - cCtx.App.InvalidFlagAccessHandler(cCtx, name) - break - } - cCtx = cCtx.parentContext - } -} - -func makeFlagNameVisitor(names *[]string) func(*flag.Flag) { - return func(f *flag.Flag) { - nameParts := strings.Split(f.Name, ",") - name := strings.TrimSpace(nameParts[0]) - - for _, part := range nameParts { - part = strings.TrimSpace(part) - if len(part) > len(name) { - name = part - } - } - - if name != "" { - *names = append(*names, name) - } - } -} diff --git a/vendor/github.com/urfave/cli/v2/docs.go b/vendor/github.com/urfave/cli/v2/docs.go deleted file mode 100644 index 6cd0624ae..000000000 --- a/vendor/github.com/urfave/cli/v2/docs.go +++ /dev/null @@ -1,203 +0,0 @@ -//go:build !urfave_cli_no_docs -// +build !urfave_cli_no_docs - -package cli - -import ( - "bytes" - "fmt" - "io" - "sort" - "strings" - "text/template" - - "github.com/cpuguy83/go-md2man/v2/md2man" -) - -// ToMarkdown creates a markdown string for the `*App` -// The function errors if either parsing or writing of the string fails. -func (a *App) ToMarkdown() (string, error) { - var w bytes.Buffer - if err := a.writeDocTemplate(&w, 0); err != nil { - return "", err - } - return w.String(), nil -} - -// ToMan creates a man page string with section number for the `*App` -// The function errors if either parsing or writing of the string fails. -func (a *App) ToManWithSection(sectionNumber int) (string, error) { - var w bytes.Buffer - if err := a.writeDocTemplate(&w, sectionNumber); err != nil { - return "", err - } - man := md2man.Render(w.Bytes()) - return string(man), nil -} - -// ToMan creates a man page string for the `*App` -// The function errors if either parsing or writing of the string fails. -func (a *App) ToMan() (string, error) { - man, err := a.ToManWithSection(8) - return man, err -} - -type cliTemplate struct { - App *App - SectionNum int - Commands []string - GlobalArgs []string - SynopsisArgs []string -} - -func (a *App) writeDocTemplate(w io.Writer, sectionNum int) error { - const name = "cli" - t, err := template.New(name).Parse(MarkdownDocTemplate) - if err != nil { - return err - } - return t.ExecuteTemplate(w, name, &cliTemplate{ - App: a, - SectionNum: sectionNum, - Commands: prepareCommands(a.Commands, 0), - GlobalArgs: prepareArgsWithValues(a.VisibleFlags()), - SynopsisArgs: prepareArgsSynopsis(a.VisibleFlags()), - }) -} - -func prepareCommands(commands []*Command, level int) []string { - var coms []string - for _, command := range commands { - if command.Hidden { - continue - } - - usageText := prepareUsageText(command) - - usage := prepareUsage(command, usageText) - - prepared := fmt.Sprintf("%s %s\n\n%s%s", - strings.Repeat("#", level+2), - strings.Join(command.Names(), ", "), - usage, - usageText, - ) - - flags := prepareArgsWithValues(command.VisibleFlags()) - if len(flags) > 0 { - prepared += fmt.Sprintf("\n%s", strings.Join(flags, "\n")) - } - - coms = append(coms, prepared) - - // recursively iterate subcommands - if len(command.Subcommands) > 0 { - coms = append( - coms, - prepareCommands(command.Subcommands, level+1)..., - ) - } - } - - return coms -} - -func prepareArgsWithValues(flags []Flag) []string { - return prepareFlags(flags, ", ", "**", "**", `""`, true) -} - -func prepareArgsSynopsis(flags []Flag) []string { - return prepareFlags(flags, "|", "[", "]", "[value]", false) -} - -func prepareFlags( - flags []Flag, - sep, opener, closer, value string, - addDetails bool, -) []string { - args := []string{} - for _, f := range flags { - flag, ok := f.(DocGenerationFlag) - if !ok { - continue - } - modifiedArg := opener - - for _, s := range flag.Names() { - trimmed := strings.TrimSpace(s) - if len(modifiedArg) > len(opener) { - modifiedArg += sep - } - if len(trimmed) > 1 { - modifiedArg += fmt.Sprintf("--%s", trimmed) - } else { - modifiedArg += fmt.Sprintf("-%s", trimmed) - } - } - modifiedArg += closer - if flag.TakesValue() { - modifiedArg += fmt.Sprintf("=%s", value) - } - - if addDetails { - modifiedArg += flagDetails(flag) - } - - args = append(args, modifiedArg+"\n") - - } - sort.Strings(args) - return args -} - -// flagDetails returns a string containing the flags metadata -func flagDetails(flag DocGenerationFlag) string { - description := flag.GetUsage() - if flag.TakesValue() { - defaultText := flag.GetDefaultText() - if defaultText == "" { - defaultText = flag.GetValue() - } - if defaultText != "" { - description += " (default: " + defaultText + ")" - } - } - return ": " + description -} - -func prepareUsageText(command *Command) string { - if command.UsageText == "" { - return "" - } - - // Remove leading and trailing newlines - preparedUsageText := strings.Trim(command.UsageText, "\n") - - var usageText string - if strings.Contains(preparedUsageText, "\n") { - // Format multi-line string as a code block using the 4 space schema to allow for embedded markdown such - // that it will not break the continuous code block. - for _, ln := range strings.Split(preparedUsageText, "\n") { - usageText += fmt.Sprintf(" %s\n", ln) - } - } else { - // Style a single line as a note - usageText = fmt.Sprintf(">%s\n", preparedUsageText) - } - - return usageText -} - -func prepareUsage(command *Command, usageText string) string { - if command.Usage == "" { - return "" - } - - usage := command.Usage + "\n" - // Add a newline to the Usage IFF there is a UsageText - if usageText != "" { - usage += "\n" - } - - return usage -} diff --git a/vendor/github.com/urfave/cli/v2/fish.go b/vendor/github.com/urfave/cli/v2/fish.go deleted file mode 100644 index 909dfc5a2..000000000 --- a/vendor/github.com/urfave/cli/v2/fish.go +++ /dev/null @@ -1,196 +0,0 @@ -package cli - -import ( - "bytes" - "fmt" - "io" - "strings" - "text/template" -) - -// ToFishCompletion creates a fish completion string for the `*App` -// The function errors if either parsing or writing of the string fails. -func (a *App) ToFishCompletion() (string, error) { - var w bytes.Buffer - if err := a.writeFishCompletionTemplate(&w); err != nil { - return "", err - } - return w.String(), nil -} - -type fishCompletionTemplate struct { - App *App - Completions []string - AllCommands []string -} - -func (a *App) writeFishCompletionTemplate(w io.Writer) error { - const name = "cli" - t, err := template.New(name).Parse(FishCompletionTemplate) - if err != nil { - return err - } - allCommands := []string{} - - // Add global flags - completions := a.prepareFishFlags(a.VisibleFlags(), allCommands) - - // Add help flag - if !a.HideHelp { - completions = append( - completions, - a.prepareFishFlags([]Flag{HelpFlag}, allCommands)..., - ) - } - - // Add version flag - if !a.HideVersion { - completions = append( - completions, - a.prepareFishFlags([]Flag{VersionFlag}, allCommands)..., - ) - } - - // Add commands and their flags - completions = append( - completions, - a.prepareFishCommands(a.VisibleCommands(), &allCommands, []string{})..., - ) - - return t.ExecuteTemplate(w, name, &fishCompletionTemplate{ - App: a, - Completions: completions, - AllCommands: allCommands, - }) -} - -func (a *App) prepareFishCommands(commands []*Command, allCommands *[]string, previousCommands []string) []string { - completions := []string{} - for _, command := range commands { - if command.Hidden { - continue - } - - var completion strings.Builder - completion.WriteString(fmt.Sprintf( - "complete -r -c %s -n '%s' -a '%s'", - a.Name, - a.fishSubcommandHelper(previousCommands), - strings.Join(command.Names(), " "), - )) - - if command.Usage != "" { - completion.WriteString(fmt.Sprintf(" -d '%s'", - escapeSingleQuotes(command.Usage))) - } - - if !command.HideHelp { - completions = append( - completions, - a.prepareFishFlags([]Flag{HelpFlag}, command.Names())..., - ) - } - - *allCommands = append(*allCommands, command.Names()...) - completions = append(completions, completion.String()) - completions = append( - completions, - a.prepareFishFlags(command.VisibleFlags(), command.Names())..., - ) - - // recursively iterate subcommands - if len(command.Subcommands) > 0 { - completions = append( - completions, - a.prepareFishCommands( - command.Subcommands, allCommands, command.Names(), - )..., - ) - } - } - - return completions -} - -func (a *App) prepareFishFlags(flags []Flag, previousCommands []string) []string { - completions := []string{} - for _, f := range flags { - flag, ok := f.(DocGenerationFlag) - if !ok { - continue - } - - completion := &strings.Builder{} - completion.WriteString(fmt.Sprintf( - "complete -c %s -n '%s'", - a.Name, - a.fishSubcommandHelper(previousCommands), - )) - - fishAddFileFlag(f, completion) - - for idx, opt := range flag.Names() { - if idx == 0 { - completion.WriteString(fmt.Sprintf( - " -l %s", strings.TrimSpace(opt), - )) - } else { - completion.WriteString(fmt.Sprintf( - " -s %s", strings.TrimSpace(opt), - )) - - } - } - - if flag.TakesValue() { - completion.WriteString(" -r") - } - - if flag.GetUsage() != "" { - completion.WriteString(fmt.Sprintf(" -d '%s'", - escapeSingleQuotes(flag.GetUsage()))) - } - - completions = append(completions, completion.String()) - } - - return completions -} - -func fishAddFileFlag(flag Flag, completion *strings.Builder) { - switch f := flag.(type) { - case *GenericFlag: - if f.TakesFile { - return - } - case *StringFlag: - if f.TakesFile { - return - } - case *StringSliceFlag: - if f.TakesFile { - return - } - case *PathFlag: - if f.TakesFile { - return - } - } - completion.WriteString(" -f") -} - -func (a *App) fishSubcommandHelper(allCommands []string) string { - fishHelper := fmt.Sprintf("__fish_%s_no_subcommand", a.Name) - if len(allCommands) > 0 { - fishHelper = fmt.Sprintf( - "__fish_seen_subcommand_from %s", - strings.Join(allCommands, " "), - ) - } - return fishHelper - -} - -func escapeSingleQuotes(input string) string { - return strings.Replace(input, `'`, `\'`, -1) -} diff --git a/vendor/github.com/urfave/cli/v2/flag-spec.yaml b/vendor/github.com/urfave/cli/v2/flag-spec.yaml deleted file mode 100644 index 03d82e701..000000000 --- a/vendor/github.com/urfave/cli/v2/flag-spec.yaml +++ /dev/null @@ -1,131 +0,0 @@ -# NOTE: this file is used by the tool defined in -# ./cmd/urfave-cli-genflags/main.go which uses the -# `Spec` type that maps to this file structure. -flag_types: - bool: - struct_fields: - - name: Count - type: int - pointer: true - - name: DisableDefaultText - type: bool - - name: Action - type: "func(*Context, bool) error" - float64: - struct_fields: - - name: Action - type: "func(*Context, float64) error" - Float64Slice: - value_pointer: true - skip_interfaces: - - fmt.Stringer - struct_fields: - - name: separator - type: separatorSpec - - name: Action - type: "func(*Context, []float64) error" - int: - struct_fields: - - name: Base - type: int - - name: Action - type: "func(*Context, int) error" - IntSlice: - value_pointer: true - skip_interfaces: - - fmt.Stringer - struct_fields: - - name: separator - type: separatorSpec - - name: Action - type: "func(*Context, []int) error" - int64: - struct_fields: - - name: Base - type: int - - name: Action - type: "func(*Context, int64) error" - Int64Slice: - value_pointer: true - skip_interfaces: - - fmt.Stringer - struct_fields: - - name: separator - type: separatorSpec - - name: Action - type: "func(*Context, []int64) error" - uint: - struct_fields: - - name: Base - type: int - - name: Action - type: "func(*Context, uint) error" - UintSlice: - value_pointer: true - skip_interfaces: - - fmt.Stringer - struct_fields: - - name: separator - type: separatorSpec - - name: Action - type: "func(*Context, []uint) error" - uint64: - struct_fields: - - name: Base - type: int - - name: Action - type: "func(*Context, uint64) error" - Uint64Slice: - value_pointer: true - skip_interfaces: - - fmt.Stringer - struct_fields: - - name: separator - type: separatorSpec - - name: Action - type: "func(*Context, []uint64) error" - string: - struct_fields: - - name: TakesFile - type: bool - - name: Action - type: "func(*Context, string) error" - StringSlice: - value_pointer: true - skip_interfaces: - - fmt.Stringer - struct_fields: - - name: separator - type: separatorSpec - - name: TakesFile - type: bool - - name: Action - type: "func(*Context, []string) error" - - name: KeepSpace - type: bool - time.Duration: - struct_fields: - - name: Action - type: "func(*Context, time.Duration) error" - Timestamp: - value_pointer: true - struct_fields: - - name: Layout - type: string - - name: Timezone - type: "*time.Location" - - name: Action - type: "func(*Context, *time.Time) error" - Generic: - no_destination_pointer: true - struct_fields: - - name: TakesFile - type: bool - - name: Action - type: "func(*Context, interface{}) error" - Path: - struct_fields: - - name: TakesFile - type: bool - - name: Action - type: "func(*Context, Path) error" diff --git a/vendor/github.com/urfave/cli/v2/flag.go b/vendor/github.com/urfave/cli/v2/flag.go deleted file mode 100644 index 4d04de3da..000000000 --- a/vendor/github.com/urfave/cli/v2/flag.go +++ /dev/null @@ -1,419 +0,0 @@ -package cli - -import ( - "errors" - "flag" - "fmt" - "io" - "os" - "regexp" - "runtime" - "strings" - "syscall" - "time" -) - -const defaultPlaceholder = "value" - -const ( - defaultSliceFlagSeparator = "," - disableSliceFlagSeparator = false -) - -var ( - slPfx = fmt.Sprintf("sl:::%d:::", time.Now().UTC().UnixNano()) - - commaWhitespace = regexp.MustCompile("[, ]+.*") -) - -// BashCompletionFlag enables bash-completion for all commands and subcommands -var BashCompletionFlag Flag = &BoolFlag{ - Name: "generate-bash-completion", - Hidden: true, -} - -// VersionFlag prints the version for the application -var VersionFlag Flag = &BoolFlag{ - Name: "version", - Aliases: []string{"v"}, - Usage: "print the version", - DisableDefaultText: true, -} - -// HelpFlag prints the help for all commands and subcommands. -// Set to nil to disable the flag. The subcommand -// will still be added unless HideHelp or HideHelpCommand is set to true. -var HelpFlag Flag = &BoolFlag{ - Name: "help", - Aliases: []string{"h"}, - Usage: "show help", - DisableDefaultText: true, -} - -// FlagStringer converts a flag definition to a string. This is used by help -// to display a flag. -var FlagStringer FlagStringFunc = stringifyFlag - -// Serializer is used to circumvent the limitations of flag.FlagSet.Set -type Serializer interface { - Serialize() string -} - -// FlagNamePrefixer converts a full flag name and its placeholder into the help -// message flag prefix. This is used by the default FlagStringer. -var FlagNamePrefixer FlagNamePrefixFunc = prefixedNames - -// FlagEnvHinter annotates flag help message with the environment variable -// details. This is used by the default FlagStringer. -var FlagEnvHinter FlagEnvHintFunc = withEnvHint - -// FlagFileHinter annotates flag help message with the environment variable -// details. This is used by the default FlagStringer. -var FlagFileHinter FlagFileHintFunc = withFileHint - -// FlagsByName is a slice of Flag. -type FlagsByName []Flag - -func (f FlagsByName) Len() int { - return len(f) -} - -func (f FlagsByName) Less(i, j int) bool { - if len(f[j].Names()) == 0 { - return false - } else if len(f[i].Names()) == 0 { - return true - } - return lexicographicLess(f[i].Names()[0], f[j].Names()[0]) -} - -func (f FlagsByName) Swap(i, j int) { - f[i], f[j] = f[j], f[i] -} - -// ActionableFlag is an interface that wraps Flag interface and RunAction operation. -type ActionableFlag interface { - Flag - RunAction(*Context) error -} - -// Flag is a common interface related to parsing flags in cli. -// For more advanced flag parsing techniques, it is recommended that -// this interface be implemented. -type Flag interface { - fmt.Stringer - // Apply Flag settings to the given flag set - Apply(*flag.FlagSet) error - Names() []string - IsSet() bool -} - -// RequiredFlag is an interface that allows us to mark flags as required -// it allows flags required flags to be backwards compatible with the Flag interface -type RequiredFlag interface { - Flag - - IsRequired() bool -} - -// DocGenerationFlag is an interface that allows documentation generation for the flag -type DocGenerationFlag interface { - Flag - - // TakesValue returns true if the flag takes a value, otherwise false - TakesValue() bool - - // GetUsage returns the usage string for the flag - GetUsage() string - - // GetValue returns the flags value as string representation and an empty - // string if the flag takes no value at all. - GetValue() string - - // GetDefaultText returns the default text for this flag - GetDefaultText() string - - // GetEnvVars returns the env vars for this flag - GetEnvVars() []string -} - -// DocGenerationSliceFlag extends DocGenerationFlag for slice-based flags. -type DocGenerationSliceFlag interface { - DocGenerationFlag - - // IsSliceFlag returns true for flags that can be given multiple times. - IsSliceFlag() bool -} - -// VisibleFlag is an interface that allows to check if a flag is visible -type VisibleFlag interface { - Flag - - // IsVisible returns true if the flag is not hidden, otherwise false - IsVisible() bool -} - -// CategorizableFlag is an interface that allows us to potentially -// use a flag in a categorized representation. -type CategorizableFlag interface { - VisibleFlag - - GetCategory() string -} - -// Countable is an interface to enable detection of flag values which support -// repetitive flags -type Countable interface { - Count() int -} - -func flagSet(name string, flags []Flag, spec separatorSpec) (*flag.FlagSet, error) { - set := flag.NewFlagSet(name, flag.ContinueOnError) - - for _, f := range flags { - if c, ok := f.(customizedSeparator); ok { - c.WithSeparatorSpec(spec) - } - if err := f.Apply(set); err != nil { - return nil, err - } - } - set.SetOutput(io.Discard) - return set, nil -} - -func copyFlag(name string, ff *flag.Flag, set *flag.FlagSet) { - switch ff.Value.(type) { - case Serializer: - _ = set.Set(name, ff.Value.(Serializer).Serialize()) - default: - _ = set.Set(name, ff.Value.String()) - } -} - -func normalizeFlags(flags []Flag, set *flag.FlagSet) error { - visited := make(map[string]bool) - set.Visit(func(f *flag.Flag) { - visited[f.Name] = true - }) - for _, f := range flags { - parts := f.Names() - if len(parts) == 1 { - continue - } - var ff *flag.Flag - for _, name := range parts { - name = strings.Trim(name, " ") - if visited[name] { - if ff != nil { - return errors.New("Cannot use two forms of the same flag: " + name + " " + ff.Name) - } - ff = set.Lookup(name) - } - } - if ff == nil { - continue - } - for _, name := range parts { - name = strings.Trim(name, " ") - if !visited[name] { - copyFlag(name, ff, set) - } - } - } - return nil -} - -func visibleFlags(fl []Flag) []Flag { - var visible []Flag - for _, f := range fl { - if vf, ok := f.(VisibleFlag); ok && vf.IsVisible() { - visible = append(visible, f) - } - } - return visible -} - -func prefixFor(name string) (prefix string) { - if len(name) == 1 { - prefix = "-" - } else { - prefix = "--" - } - - return -} - -// Returns the placeholder, if any, and the unquoted usage string. -func unquoteUsage(usage string) (string, string) { - for i := 0; i < len(usage); i++ { - if usage[i] == '`' { - for j := i + 1; j < len(usage); j++ { - if usage[j] == '`' { - name := usage[i+1 : j] - usage = usage[:i] + name + usage[j+1:] - return name, usage - } - } - break - } - } - return "", usage -} - -func prefixedNames(names []string, placeholder string) string { - var prefixed string - for i, name := range names { - if name == "" { - continue - } - - prefixed += prefixFor(name) + name - if placeholder != "" { - prefixed += " " + placeholder - } - if i < len(names)-1 { - prefixed += ", " - } - } - return prefixed -} - -func envFormat(envVars []string, prefix, sep, suffix string) string { - if len(envVars) > 0 { - return fmt.Sprintf(" [%s%s%s]", prefix, strings.Join(envVars, sep), suffix) - } - return "" -} - -func defaultEnvFormat(envVars []string) string { - return envFormat(envVars, "$", ", $", "") -} - -func withEnvHint(envVars []string, str string) string { - envText := "" - if runtime.GOOS != "windows" || os.Getenv("PSHOME") != "" { - envText = defaultEnvFormat(envVars) - } else { - envText = envFormat(envVars, "%", "%, %", "%") - } - return str + envText -} - -func FlagNames(name string, aliases []string) []string { - var ret []string - - for _, part := range append([]string{name}, aliases...) { - // v1 -> v2 migration warning zone: - // Strip off anything after the first found comma or space, which - // *hopefully* makes it a tiny bit more obvious that unexpected behavior is - // caused by using the v1 form of stringly typed "Name". - ret = append(ret, commaWhitespace.ReplaceAllString(part, "")) - } - - return ret -} - -func withFileHint(filePath, str string) string { - fileText := "" - if filePath != "" { - fileText = fmt.Sprintf(" [%s]", filePath) - } - return str + fileText -} - -func formatDefault(format string) string { - return " (default: " + format + ")" -} - -func stringifyFlag(f Flag) string { - // enforce DocGeneration interface on flags to avoid reflection - df, ok := f.(DocGenerationFlag) - if !ok { - return "" - } - - placeholder, usage := unquoteUsage(df.GetUsage()) - needsPlaceholder := df.TakesValue() - - if needsPlaceholder && placeholder == "" { - placeholder = defaultPlaceholder - } - - defaultValueString := "" - - // set default text for all flags except bool flags - // for bool flags display default text if DisableDefaultText is not - // set - if bf, ok := f.(*BoolFlag); !ok || !bf.DisableDefaultText { - if s := df.GetDefaultText(); s != "" { - defaultValueString = fmt.Sprintf(formatDefault("%s"), s) - } - } - - usageWithDefault := strings.TrimSpace(usage + defaultValueString) - - pn := prefixedNames(df.Names(), placeholder) - sliceFlag, ok := f.(DocGenerationSliceFlag) - if ok && sliceFlag.IsSliceFlag() { - pn = pn + " [ " + pn + " ]" - } - - return withEnvHint(df.GetEnvVars(), fmt.Sprintf("%s\t%s", pn, usageWithDefault)) -} - -func hasFlag(flags []Flag, fl Flag) bool { - for _, existing := range flags { - if fl == existing { - return true - } - } - - return false -} - -// Return the first value from a list of environment variables and files -// (which may or may not exist), a description of where the value was found, -// and a boolean which is true if a value was found. -func flagFromEnvOrFile(envVars []string, filePath string) (value string, fromWhere string, found bool) { - for _, envVar := range envVars { - envVar = strings.TrimSpace(envVar) - if value, found := syscall.Getenv(envVar); found { - return value, fmt.Sprintf("environment variable %q", envVar), true - } - } - for _, fileVar := range strings.Split(filePath, ",") { - if fileVar != "" { - if data, err := os.ReadFile(fileVar); err == nil { - return string(data), fmt.Sprintf("file %q", filePath), true - } - } - } - return "", "", false -} - -type customizedSeparator interface { - WithSeparatorSpec(separatorSpec) -} - -type separatorSpec struct { - sep string - disabled bool - customized bool -} - -func (s separatorSpec) flagSplitMultiValues(val string) []string { - var ( - disabled bool = s.disabled - sep string = s.sep - ) - if !s.customized { - disabled = disableSliceFlagSeparator - sep = defaultSliceFlagSeparator - } - if disabled { - return []string{val} - } - - return strings.Split(val, sep) -} diff --git a/vendor/github.com/urfave/cli/v2/flag_bool.go b/vendor/github.com/urfave/cli/v2/flag_bool.go deleted file mode 100644 index 01862ea76..000000000 --- a/vendor/github.com/urfave/cli/v2/flag_bool.go +++ /dev/null @@ -1,178 +0,0 @@ -package cli - -import ( - "errors" - "flag" - "fmt" - "strconv" -) - -// boolValue needs to implement the boolFlag internal interface in flag -// to be able to capture bool fields and values -// -// type boolFlag interface { -// Value -// IsBoolFlag() bool -// } -type boolValue struct { - destination *bool - count *int -} - -func newBoolValue(val bool, p *bool, count *int) *boolValue { - *p = val - return &boolValue{ - destination: p, - count: count, - } -} - -func (b *boolValue) Set(s string) error { - v, err := strconv.ParseBool(s) - if err != nil { - err = errors.New("parse error") - return err - } - *b.destination = v - if b.count != nil { - *b.count = *b.count + 1 - } - return err -} - -func (b *boolValue) Get() interface{} { return *b.destination } - -func (b *boolValue) String() string { - if b.destination != nil { - return strconv.FormatBool(*b.destination) - } - return strconv.FormatBool(false) -} - -func (b *boolValue) IsBoolFlag() bool { return true } - -func (b *boolValue) Count() int { - if b.count != nil && *b.count > 0 { - return *b.count - } - return 0 -} - -// TakesValue returns true of the flag takes a value, otherwise false -func (f *BoolFlag) TakesValue() bool { - return false -} - -// GetUsage returns the usage string for the flag -func (f *BoolFlag) GetUsage() string { - return f.Usage -} - -// GetCategory returns the category for the flag -func (f *BoolFlag) GetCategory() string { - return f.Category -} - -// GetValue returns the flags value as string representation and an empty -// string if the flag takes no value at all. -func (f *BoolFlag) GetValue() string { - return "" -} - -// GetDefaultText returns the default text for this flag -func (f *BoolFlag) GetDefaultText() string { - if f.DefaultText != "" { - return f.DefaultText - } - if f.defaultValueSet { - return fmt.Sprintf("%v", f.defaultValue) - } - return fmt.Sprintf("%v", f.Value) -} - -// GetEnvVars returns the env vars for this flag -func (f *BoolFlag) GetEnvVars() []string { - return f.EnvVars -} - -// RunAction executes flag action if set -func (f *BoolFlag) RunAction(c *Context) error { - if f.Action != nil { - return f.Action(c, c.Bool(f.Name)) - } - - return nil -} - -// Apply populates the flag given the flag set and environment -func (f *BoolFlag) Apply(set *flag.FlagSet) error { - // set default value so that environment wont be able to overwrite it - f.defaultValue = f.Value - f.defaultValueSet = true - - if val, source, found := flagFromEnvOrFile(f.EnvVars, f.FilePath); found { - if val != "" { - valBool, err := strconv.ParseBool(val) - - if err != nil { - return fmt.Errorf("could not parse %q as bool value from %s for flag %s: %s", val, source, f.Name, err) - } - - f.Value = valBool - } else { - // empty value implies that the env is defined but set to empty string, we have to assume that this is - // what the user wants. If user doesnt want this then the env needs to be deleted or the flag removed from - // file - f.Value = false - } - f.HasBeenSet = true - } - - count := f.Count - dest := f.Destination - - if count == nil { - count = new(int) - } - - // since count will be incremented for each alias as well - // subtract number of aliases from overall count - *count -= len(f.Aliases) - - if dest == nil { - dest = new(bool) - } - - for _, name := range f.Names() { - value := newBoolValue(f.Value, dest, count) - set.Var(value, name, f.Usage) - } - - return nil -} - -// Get returns the flag’s value in the given Context. -func (f *BoolFlag) Get(ctx *Context) bool { - return ctx.Bool(f.Name) -} - -// Bool looks up the value of a local BoolFlag, returns -// false if not found -func (cCtx *Context) Bool(name string) bool { - if fs := cCtx.lookupFlagSet(name); fs != nil { - return lookupBool(name, fs) - } - return false -} - -func lookupBool(name string, set *flag.FlagSet) bool { - f := set.Lookup(name) - if f != nil { - parsed, err := strconv.ParseBool(f.Value.String()) - if err != nil { - return false - } - return parsed - } - return false -} diff --git a/vendor/github.com/urfave/cli/v2/flag_duration.go b/vendor/github.com/urfave/cli/v2/flag_duration.go deleted file mode 100644 index e600cc30a..000000000 --- a/vendor/github.com/urfave/cli/v2/flag_duration.go +++ /dev/null @@ -1,108 +0,0 @@ -package cli - -import ( - "flag" - "fmt" - "time" -) - -// TakesValue returns true of the flag takes a value, otherwise false -func (f *DurationFlag) TakesValue() bool { - return true -} - -// GetUsage returns the usage string for the flag -func (f *DurationFlag) GetUsage() string { - return f.Usage -} - -// GetCategory returns the category for the flag -func (f *DurationFlag) GetCategory() string { - return f.Category -} - -// GetValue returns the flags value as string representation and an empty -// string if the flag takes no value at all. -func (f *DurationFlag) GetValue() string { - return f.Value.String() -} - -// GetDefaultText returns the default text for this flag -func (f *DurationFlag) GetDefaultText() string { - if f.DefaultText != "" { - return f.DefaultText - } - if f.defaultValueSet { - return f.defaultValue.String() - } - return f.Value.String() -} - -// GetEnvVars returns the env vars for this flag -func (f *DurationFlag) GetEnvVars() []string { - return f.EnvVars -} - -// Apply populates the flag given the flag set and environment -func (f *DurationFlag) Apply(set *flag.FlagSet) error { - // set default value so that environment wont be able to overwrite it - f.defaultValue = f.Value - f.defaultValueSet = true - - if val, source, found := flagFromEnvOrFile(f.EnvVars, f.FilePath); found { - if val != "" { - valDuration, err := time.ParseDuration(val) - - if err != nil { - return fmt.Errorf("could not parse %q as duration value from %s for flag %s: %s", val, source, f.Name, err) - } - - f.Value = valDuration - f.HasBeenSet = true - } - } - - for _, name := range f.Names() { - if f.Destination != nil { - set.DurationVar(f.Destination, name, f.Value, f.Usage) - continue - } - set.Duration(name, f.Value, f.Usage) - } - return nil -} - -// Get returns the flag’s value in the given Context. -func (f *DurationFlag) Get(ctx *Context) time.Duration { - return ctx.Duration(f.Name) -} - -// RunAction executes flag action if set -func (f *DurationFlag) RunAction(c *Context) error { - if f.Action != nil { - return f.Action(c, c.Duration(f.Name)) - } - - return nil -} - -// Duration looks up the value of a local DurationFlag, returns -// 0 if not found -func (cCtx *Context) Duration(name string) time.Duration { - if fs := cCtx.lookupFlagSet(name); fs != nil { - return lookupDuration(name, fs) - } - return 0 -} - -func lookupDuration(name string, set *flag.FlagSet) time.Duration { - f := set.Lookup(name) - if f != nil { - parsed, err := time.ParseDuration(f.Value.String()) - if err != nil { - return 0 - } - return parsed - } - return 0 -} diff --git a/vendor/github.com/urfave/cli/v2/flag_float64.go b/vendor/github.com/urfave/cli/v2/flag_float64.go deleted file mode 100644 index 6a4de5c88..000000000 --- a/vendor/github.com/urfave/cli/v2/flag_float64.go +++ /dev/null @@ -1,107 +0,0 @@ -package cli - -import ( - "flag" - "fmt" - "strconv" -) - -// TakesValue returns true of the flag takes a value, otherwise false -func (f *Float64Flag) TakesValue() bool { - return true -} - -// GetUsage returns the usage string for the flag -func (f *Float64Flag) GetUsage() string { - return f.Usage -} - -// GetCategory returns the category for the flag -func (f *Float64Flag) GetCategory() string { - return f.Category -} - -// GetValue returns the flags value as string representation and an empty -// string if the flag takes no value at all. -func (f *Float64Flag) GetValue() string { - return fmt.Sprintf("%v", f.Value) -} - -// GetDefaultText returns the default text for this flag -func (f *Float64Flag) GetDefaultText() string { - if f.DefaultText != "" { - return f.DefaultText - } - if f.defaultValueSet { - return fmt.Sprintf("%v", f.defaultValue) - } - return fmt.Sprintf("%v", f.Value) -} - -// GetEnvVars returns the env vars for this flag -func (f *Float64Flag) GetEnvVars() []string { - return f.EnvVars -} - -// Apply populates the flag given the flag set and environment -func (f *Float64Flag) Apply(set *flag.FlagSet) error { - f.defaultValue = f.Value - f.defaultValueSet = true - - if val, source, found := flagFromEnvOrFile(f.EnvVars, f.FilePath); found { - if val != "" { - valFloat, err := strconv.ParseFloat(val, 64) - if err != nil { - return fmt.Errorf("could not parse %q as float64 value from %s for flag %s: %s", val, source, f.Name, err) - } - - f.Value = valFloat - f.HasBeenSet = true - } - } - - for _, name := range f.Names() { - if f.Destination != nil { - set.Float64Var(f.Destination, name, f.Value, f.Usage) - continue - } - set.Float64(name, f.Value, f.Usage) - } - - return nil -} - -// Get returns the flag’s value in the given Context. -func (f *Float64Flag) Get(ctx *Context) float64 { - return ctx.Float64(f.Name) -} - -// RunAction executes flag action if set -func (f *Float64Flag) RunAction(c *Context) error { - if f.Action != nil { - return f.Action(c, c.Float64(f.Name)) - } - - return nil -} - -// Float64 looks up the value of a local Float64Flag, returns -// 0 if not found -func (cCtx *Context) Float64(name string) float64 { - if fs := cCtx.lookupFlagSet(name); fs != nil { - return lookupFloat64(name, fs) - } - return 0 -} - -func lookupFloat64(name string, set *flag.FlagSet) float64 { - f := set.Lookup(name) - if f != nil { - parsed, err := strconv.ParseFloat(f.Value.String(), 64) - if err != nil { - return 0 - } - return parsed - } - return 0 -} diff --git a/vendor/github.com/urfave/cli/v2/flag_float64_slice.go b/vendor/github.com/urfave/cli/v2/flag_float64_slice.go deleted file mode 100644 index 0bc4612c8..000000000 --- a/vendor/github.com/urfave/cli/v2/flag_float64_slice.go +++ /dev/null @@ -1,216 +0,0 @@ -package cli - -import ( - "encoding/json" - "flag" - "fmt" - "strconv" - "strings" -) - -// Float64Slice wraps []float64 to satisfy flag.Value -type Float64Slice struct { - slice []float64 - separator separatorSpec - hasBeenSet bool -} - -// NewFloat64Slice makes a *Float64Slice with default values -func NewFloat64Slice(defaults ...float64) *Float64Slice { - return &Float64Slice{slice: append([]float64{}, defaults...)} -} - -// clone allocate a copy of self object -func (f *Float64Slice) clone() *Float64Slice { - n := &Float64Slice{ - slice: make([]float64, len(f.slice)), - hasBeenSet: f.hasBeenSet, - } - copy(n.slice, f.slice) - return n -} - -func (f *Float64Slice) WithSeparatorSpec(spec separatorSpec) { - f.separator = spec -} - -// Set parses the value into a float64 and appends it to the list of values -func (f *Float64Slice) Set(value string) error { - if !f.hasBeenSet { - f.slice = []float64{} - f.hasBeenSet = true - } - - if strings.HasPrefix(value, slPfx) { - // Deserializing assumes overwrite - _ = json.Unmarshal([]byte(strings.Replace(value, slPfx, "", 1)), &f.slice) - f.hasBeenSet = true - return nil - } - - for _, s := range f.separator.flagSplitMultiValues(value) { - tmp, err := strconv.ParseFloat(strings.TrimSpace(s), 64) - if err != nil { - return err - } - - f.slice = append(f.slice, tmp) - } - return nil -} - -// String returns a readable representation of this value (for usage defaults) -func (f *Float64Slice) String() string { - v := f.slice - if v == nil { - // treat nil the same as zero length non-nil - v = make([]float64, 0) - } - return fmt.Sprintf("%#v", v) -} - -// Serialize allows Float64Slice to fulfill Serializer -func (f *Float64Slice) Serialize() string { - jsonBytes, _ := json.Marshal(f.slice) - return fmt.Sprintf("%s%s", slPfx, string(jsonBytes)) -} - -// Value returns the slice of float64s set by this flag -func (f *Float64Slice) Value() []float64 { - return f.slice -} - -// Get returns the slice of float64s set by this flag -func (f *Float64Slice) Get() interface{} { - return *f -} - -// String returns a readable representation of this value -// (for usage defaults) -func (f *Float64SliceFlag) String() string { - return FlagStringer(f) -} - -// TakesValue returns true if the flag takes a value, otherwise false -func (f *Float64SliceFlag) TakesValue() bool { - return true -} - -// GetUsage returns the usage string for the flag -func (f *Float64SliceFlag) GetUsage() string { - return f.Usage -} - -// GetCategory returns the category for the flag -func (f *Float64SliceFlag) GetCategory() string { - return f.Category -} - -// GetValue returns the flags value as string representation and an empty -// string if the flag takes no value at all. -func (f *Float64SliceFlag) GetValue() string { - var defaultVals []string - if f.Value != nil && len(f.Value.Value()) > 0 { - for _, i := range f.Value.Value() { - defaultVals = append(defaultVals, strings.TrimRight(strings.TrimRight(fmt.Sprintf("%f", i), "0"), ".")) - } - } - return strings.Join(defaultVals, ", ") -} - -// GetDefaultText returns the default text for this flag -func (f *Float64SliceFlag) GetDefaultText() string { - if f.DefaultText != "" { - return f.DefaultText - } - return f.GetValue() -} - -// GetEnvVars returns the env vars for this flag -func (f *Float64SliceFlag) GetEnvVars() []string { - return f.EnvVars -} - -// IsSliceFlag implements DocGenerationSliceFlag. -func (f *Float64SliceFlag) IsSliceFlag() bool { - return true -} - -// Apply populates the flag given the flag set and environment -func (f *Float64SliceFlag) Apply(set *flag.FlagSet) error { - // apply any default - if f.Destination != nil && f.Value != nil { - f.Destination.slice = make([]float64, len(f.Value.slice)) - copy(f.Destination.slice, f.Value.slice) - } - - // resolve setValue (what we will assign to the set) - var setValue *Float64Slice - switch { - case f.Destination != nil: - setValue = f.Destination - case f.Value != nil: - setValue = f.Value.clone() - default: - setValue = new(Float64Slice) - setValue.WithSeparatorSpec(f.separator) - } - - if val, source, found := flagFromEnvOrFile(f.EnvVars, f.FilePath); found { - if val != "" { - for _, s := range f.separator.flagSplitMultiValues(val) { - if err := setValue.Set(strings.TrimSpace(s)); err != nil { - return fmt.Errorf("could not parse %q as float64 slice value from %s for flag %s: %s", val, source, f.Name, err) - } - } - - // Set this to false so that we reset the slice if we then set values from - // flags that have already been set by the environment. - setValue.hasBeenSet = false - f.HasBeenSet = true - } - } - - for _, name := range f.Names() { - set.Var(setValue, name, f.Usage) - } - - return nil -} - -func (f *Float64SliceFlag) WithSeparatorSpec(spec separatorSpec) { - f.separator = spec -} - -// Get returns the flag’s value in the given Context. -func (f *Float64SliceFlag) Get(ctx *Context) []float64 { - return ctx.Float64Slice(f.Name) -} - -// RunAction executes flag action if set -func (f *Float64SliceFlag) RunAction(c *Context) error { - if f.Action != nil { - return f.Action(c, c.Float64Slice(f.Name)) - } - - return nil -} - -// Float64Slice looks up the value of a local Float64SliceFlag, returns -// nil if not found -func (cCtx *Context) Float64Slice(name string) []float64 { - if fs := cCtx.lookupFlagSet(name); fs != nil { - return lookupFloat64Slice(name, fs) - } - return nil -} - -func lookupFloat64Slice(name string, set *flag.FlagSet) []float64 { - f := set.Lookup(name) - if f != nil { - if slice, ok := unwrapFlagValue(f.Value).(*Float64Slice); ok { - return slice.Value() - } - } - return nil -} diff --git a/vendor/github.com/urfave/cli/v2/flag_generic.go b/vendor/github.com/urfave/cli/v2/flag_generic.go deleted file mode 100644 index 7528c934c..000000000 --- a/vendor/github.com/urfave/cli/v2/flag_generic.go +++ /dev/null @@ -1,131 +0,0 @@ -package cli - -import ( - "flag" - "fmt" -) - -// Generic is a generic parseable type identified by a specific flag -type Generic interface { - Set(value string) error - String() string -} - -type stringGeneric struct { - value string -} - -func (s *stringGeneric) Set(value string) error { - s.value = value - return nil -} - -func (s *stringGeneric) String() string { - return s.value -} - -// TakesValue returns true of the flag takes a value, otherwise false -func (f *GenericFlag) TakesValue() bool { - return true -} - -// GetUsage returns the usage string for the flag -func (f *GenericFlag) GetUsage() string { - return f.Usage -} - -// GetCategory returns the category for the flag -func (f *GenericFlag) GetCategory() string { - return f.Category -} - -// GetValue returns the flags value as string representation and an empty -// string if the flag takes no value at all. -func (f *GenericFlag) GetValue() string { - if f.Value != nil { - return f.Value.String() - } - return "" -} - -// GetDefaultText returns the default text for this flag -func (f *GenericFlag) GetDefaultText() string { - if f.DefaultText != "" { - return f.DefaultText - } - val := f.Value - if f.defaultValueSet { - val = f.defaultValue - } - - if val != nil { - return val.String() - } - - return "" -} - -// GetEnvVars returns the env vars for this flag -func (f *GenericFlag) GetEnvVars() []string { - return f.EnvVars -} - -// Apply takes the flagset and calls Set on the generic flag with the value -// provided by the user for parsing by the flag -func (f *GenericFlag) Apply(set *flag.FlagSet) error { - // set default value so that environment wont be able to overwrite it - if f.Value != nil { - f.defaultValue = &stringGeneric{value: f.Value.String()} - f.defaultValueSet = true - } - - if val, source, found := flagFromEnvOrFile(f.EnvVars, f.FilePath); found { - if val != "" { - if err := f.Value.Set(val); err != nil { - return fmt.Errorf("could not parse %q from %s as value for flag %s: %s", val, source, f.Name, err) - } - - f.HasBeenSet = true - } - } - - for _, name := range f.Names() { - if f.Destination != nil { - set.Var(f.Destination, name, f.Usage) - continue - } - set.Var(f.Value, name, f.Usage) - } - - return nil -} - -// Get returns the flag’s value in the given Context. -func (f *GenericFlag) Get(ctx *Context) interface{} { - return ctx.Generic(f.Name) -} - -// RunAction executes flag action if set -func (f *GenericFlag) RunAction(c *Context) error { - if f.Action != nil { - return f.Action(c, c.Generic(f.Name)) - } - - return nil -} - -// Generic looks up the value of a local GenericFlag, returns -// nil if not found -func (cCtx *Context) Generic(name string) interface{} { - if fs := cCtx.lookupFlagSet(name); fs != nil { - return lookupGeneric(name, fs) - } - return nil -} - -func lookupGeneric(name string, set *flag.FlagSet) interface{} { - if f := set.Lookup(name); f != nil { - return f.Value - } - return nil -} diff --git a/vendor/github.com/urfave/cli/v2/flag_int.go b/vendor/github.com/urfave/cli/v2/flag_int.go deleted file mode 100644 index 750e7ebfc..000000000 --- a/vendor/github.com/urfave/cli/v2/flag_int.go +++ /dev/null @@ -1,109 +0,0 @@ -package cli - -import ( - "flag" - "fmt" - "strconv" -) - -// TakesValue returns true of the flag takes a value, otherwise false -func (f *IntFlag) TakesValue() bool { - return true -} - -// GetUsage returns the usage string for the flag -func (f *IntFlag) GetUsage() string { - return f.Usage -} - -// GetCategory returns the category for the flag -func (f *IntFlag) GetCategory() string { - return f.Category -} - -// GetValue returns the flags value as string representation and an empty -// string if the flag takes no value at all. -func (f *IntFlag) GetValue() string { - return fmt.Sprintf("%d", f.Value) -} - -// GetDefaultText returns the default text for this flag -func (f *IntFlag) GetDefaultText() string { - if f.DefaultText != "" { - return f.DefaultText - } - if f.defaultValueSet { - return fmt.Sprintf("%d", f.defaultValue) - } - return fmt.Sprintf("%d", f.Value) -} - -// GetEnvVars returns the env vars for this flag -func (f *IntFlag) GetEnvVars() []string { - return f.EnvVars -} - -// Apply populates the flag given the flag set and environment -func (f *IntFlag) Apply(set *flag.FlagSet) error { - // set default value so that environment wont be able to overwrite it - f.defaultValue = f.Value - f.defaultValueSet = true - - if val, source, found := flagFromEnvOrFile(f.EnvVars, f.FilePath); found { - if val != "" { - valInt, err := strconv.ParseInt(val, f.Base, 64) - - if err != nil { - return fmt.Errorf("could not parse %q as int value from %s for flag %s: %s", val, source, f.Name, err) - } - - f.Value = int(valInt) - f.HasBeenSet = true - } - } - - for _, name := range f.Names() { - if f.Destination != nil { - set.IntVar(f.Destination, name, f.Value, f.Usage) - continue - } - set.Int(name, f.Value, f.Usage) - } - - return nil -} - -// Get returns the flag’s value in the given Context. -func (f *IntFlag) Get(ctx *Context) int { - return ctx.Int(f.Name) -} - -// RunAction executes flag action if set -func (f *IntFlag) RunAction(c *Context) error { - if f.Action != nil { - return f.Action(c, c.Int(f.Name)) - } - - return nil -} - -// Int looks up the value of a local IntFlag, returns -// 0 if not found -func (cCtx *Context) Int(name string) int { - if fs := cCtx.lookupFlagSet(name); fs != nil { - return lookupInt(name, fs) - } - return 0 -} - -func lookupInt(name string, set *flag.FlagSet) int { - f := set.Lookup(name) - if f != nil { - parsed, err := strconv.ParseInt(f.Value.String(), 0, 64) - if err != nil { - return 0 - } - return int(parsed) - } - return 0 -} diff --git a/vendor/github.com/urfave/cli/v2/flag_int64.go b/vendor/github.com/urfave/cli/v2/flag_int64.go deleted file mode 100644 index 688c26716..000000000 --- a/vendor/github.com/urfave/cli/v2/flag_int64.go +++ /dev/null @@ -1,108 +0,0 @@ -package cli - -import ( - "flag" - "fmt" - "strconv" -) - -// TakesValue returns true of the flag takes a value, otherwise false -func (f *Int64Flag) TakesValue() bool { - return true -} - -// GetUsage returns the usage string for the flag -func (f *Int64Flag) GetUsage() string { - return f.Usage -} - -// GetCategory returns the category for the flag -func (f *Int64Flag) GetCategory() string { - return f.Category -} - -// GetValue returns the flags value as string representation and an empty -// string if the flag takes no value at all. -func (f *Int64Flag) GetValue() string { - return fmt.Sprintf("%d", f.Value) -} - -// GetDefaultText returns the default text for this flag -func (f *Int64Flag) GetDefaultText() string { - if f.DefaultText != "" { - return f.DefaultText - } - if f.defaultValueSet { - return fmt.Sprintf("%d", f.defaultValue) - } - return fmt.Sprintf("%d", f.Value) -} - -// GetEnvVars returns the env vars for this flag -func (f *Int64Flag) GetEnvVars() []string { - return f.EnvVars -} - -// Apply populates the flag given the flag set and environment -func (f *Int64Flag) Apply(set *flag.FlagSet) error { - // set default value so that environment wont be able to overwrite it - f.defaultValue = f.Value - f.defaultValueSet = true - - if val, source, found := flagFromEnvOrFile(f.EnvVars, f.FilePath); found { - if val != "" { - valInt, err := strconv.ParseInt(val, f.Base, 64) - - if err != nil { - return fmt.Errorf("could not parse %q as int value from %s for flag %s: %s", val, source, f.Name, err) - } - - f.Value = valInt - f.HasBeenSet = true - } - } - - for _, name := range f.Names() { - if f.Destination != nil { - set.Int64Var(f.Destination, name, f.Value, f.Usage) - continue - } - set.Int64(name, f.Value, f.Usage) - } - return nil -} - -// Get returns the flag’s value in the given Context. -func (f *Int64Flag) Get(ctx *Context) int64 { - return ctx.Int64(f.Name) -} - -// RunAction executes flag action if set -func (f *Int64Flag) RunAction(c *Context) error { - if f.Action != nil { - return f.Action(c, c.Int64(f.Name)) - } - - return nil -} - -// Int64 looks up the value of a local Int64Flag, returns -// 0 if not found -func (cCtx *Context) Int64(name string) int64 { - if fs := cCtx.lookupFlagSet(name); fs != nil { - return lookupInt64(name, fs) - } - return 0 -} - -func lookupInt64(name string, set *flag.FlagSet) int64 { - f := set.Lookup(name) - if f != nil { - parsed, err := strconv.ParseInt(f.Value.String(), 0, 64) - if err != nil { - return 0 - } - return parsed - } - return 0 -} diff --git a/vendor/github.com/urfave/cli/v2/flag_int64_slice.go b/vendor/github.com/urfave/cli/v2/flag_int64_slice.go deleted file mode 100644 index d45c2dd44..000000000 --- a/vendor/github.com/urfave/cli/v2/flag_int64_slice.go +++ /dev/null @@ -1,215 +0,0 @@ -package cli - -import ( - "encoding/json" - "flag" - "fmt" - "strconv" - "strings" -) - -// Int64Slice wraps []int64 to satisfy flag.Value -type Int64Slice struct { - slice []int64 - separator separatorSpec - hasBeenSet bool -} - -// NewInt64Slice makes an *Int64Slice with default values -func NewInt64Slice(defaults ...int64) *Int64Slice { - return &Int64Slice{slice: append([]int64{}, defaults...)} -} - -// clone allocate a copy of self object -func (i *Int64Slice) clone() *Int64Slice { - n := &Int64Slice{ - slice: make([]int64, len(i.slice)), - hasBeenSet: i.hasBeenSet, - } - copy(n.slice, i.slice) - return n -} - -func (i *Int64Slice) WithSeparatorSpec(spec separatorSpec) { - i.separator = spec -} - -// Set parses the value into an integer and appends it to the list of values -func (i *Int64Slice) Set(value string) error { - if !i.hasBeenSet { - i.slice = []int64{} - i.hasBeenSet = true - } - - if strings.HasPrefix(value, slPfx) { - // Deserializing assumes overwrite - _ = json.Unmarshal([]byte(strings.Replace(value, slPfx, "", 1)), &i.slice) - i.hasBeenSet = true - return nil - } - - for _, s := range i.separator.flagSplitMultiValues(value) { - tmp, err := strconv.ParseInt(strings.TrimSpace(s), 0, 64) - if err != nil { - return err - } - - i.slice = append(i.slice, tmp) - } - - return nil -} - -// String returns a readable representation of this value (for usage defaults) -func (i *Int64Slice) String() string { - v := i.slice - if v == nil { - // treat nil the same as zero length non-nil - v = make([]int64, 0) - } - return fmt.Sprintf("%#v", v) -} - -// Serialize allows Int64Slice to fulfill Serializer -func (i *Int64Slice) Serialize() string { - jsonBytes, _ := json.Marshal(i.slice) - return fmt.Sprintf("%s%s", slPfx, string(jsonBytes)) -} - -// Value returns the slice of ints set by this flag -func (i *Int64Slice) Value() []int64 { - return i.slice -} - -// Get returns the slice of ints set by this flag -func (i *Int64Slice) Get() interface{} { - return *i -} - -// String returns a readable representation of this value -// (for usage defaults) -func (f *Int64SliceFlag) String() string { - return FlagStringer(f) -} - -// TakesValue returns true of the flag takes a value, otherwise false -func (f *Int64SliceFlag) TakesValue() bool { - return true -} - -// GetUsage returns the usage string for the flag -func (f *Int64SliceFlag) GetUsage() string { - return f.Usage -} - -// GetCategory returns the category for the flag -func (f *Int64SliceFlag) GetCategory() string { - return f.Category -} - -// GetValue returns the flags value as string representation and an empty -// string if the flag takes no value at all. -func (f *Int64SliceFlag) GetValue() string { - var defaultVals []string - if f.Value != nil && len(f.Value.Value()) > 0 { - for _, i := range f.Value.Value() { - defaultVals = append(defaultVals, strconv.FormatInt(i, 10)) - } - } - return strings.Join(defaultVals, ", ") -} - -// GetDefaultText returns the default text for this flag -func (f *Int64SliceFlag) GetDefaultText() string { - if f.DefaultText != "" { - return f.DefaultText - } - return f.GetValue() -} - -// GetEnvVars returns the env vars for this flag -func (f *Int64SliceFlag) GetEnvVars() []string { - return f.EnvVars -} - -// IsSliceFlag implements DocGenerationSliceFlag. -func (f *Int64SliceFlag) IsSliceFlag() bool { - return true -} - -// Apply populates the flag given the flag set and environment -func (f *Int64SliceFlag) Apply(set *flag.FlagSet) error { - // apply any default - if f.Destination != nil && f.Value != nil { - f.Destination.slice = make([]int64, len(f.Value.slice)) - copy(f.Destination.slice, f.Value.slice) - } - - // resolve setValue (what we will assign to the set) - var setValue *Int64Slice - switch { - case f.Destination != nil: - setValue = f.Destination - case f.Value != nil: - setValue = f.Value.clone() - default: - setValue = new(Int64Slice) - setValue.WithSeparatorSpec(f.separator) - } - - if val, source, ok := flagFromEnvOrFile(f.EnvVars, f.FilePath); ok && val != "" { - for _, s := range f.separator.flagSplitMultiValues(val) { - if err := setValue.Set(strings.TrimSpace(s)); err != nil { - return fmt.Errorf("could not parse %q as int64 slice value from %s for flag %s: %s", val, source, f.Name, err) - } - } - - // Set this to false so that we reset the slice if we then set values from - // flags that have already been set by the environment. - setValue.hasBeenSet = false - f.HasBeenSet = true - } - - for _, name := range f.Names() { - set.Var(setValue, name, f.Usage) - } - - return nil -} - -func (f *Int64SliceFlag) WithSeparatorSpec(spec separatorSpec) { - f.separator = spec -} - -// Get returns the flag’s value in the given Context. -func (f *Int64SliceFlag) Get(ctx *Context) []int64 { - return ctx.Int64Slice(f.Name) -} - -// RunAction executes flag action if set -func (f *Int64SliceFlag) RunAction(c *Context) error { - if f.Action != nil { - return f.Action(c, c.Int64Slice(f.Name)) - } - - return nil -} - -// Int64Slice looks up the value of a local Int64SliceFlag, returns -// nil if not found -func (cCtx *Context) Int64Slice(name string) []int64 { - if fs := cCtx.lookupFlagSet(name); fs != nil { - return lookupInt64Slice(name, fs) - } - return nil -} - -func lookupInt64Slice(name string, set *flag.FlagSet) []int64 { - f := set.Lookup(name) - if f != nil { - if slice, ok := unwrapFlagValue(f.Value).(*Int64Slice); ok { - return slice.Value() - } - } - return nil -} diff --git a/vendor/github.com/urfave/cli/v2/flag_int_slice.go b/vendor/github.com/urfave/cli/v2/flag_int_slice.go deleted file mode 100644 index da9c09bc7..000000000 --- a/vendor/github.com/urfave/cli/v2/flag_int_slice.go +++ /dev/null @@ -1,226 +0,0 @@ -package cli - -import ( - "encoding/json" - "flag" - "fmt" - "strconv" - "strings" -) - -// IntSlice wraps []int to satisfy flag.Value -type IntSlice struct { - slice []int - separator separatorSpec - hasBeenSet bool -} - -// NewIntSlice makes an *IntSlice with default values -func NewIntSlice(defaults ...int) *IntSlice { - return &IntSlice{slice: append([]int{}, defaults...)} -} - -// clone allocate a copy of self object -func (i *IntSlice) clone() *IntSlice { - n := &IntSlice{ - slice: make([]int, len(i.slice)), - hasBeenSet: i.hasBeenSet, - } - copy(n.slice, i.slice) - return n -} - -// TODO: Consistently have specific Set function for Int64 and Float64 ? -// SetInt directly adds an integer to the list of values -func (i *IntSlice) SetInt(value int) { - if !i.hasBeenSet { - i.slice = []int{} - i.hasBeenSet = true - } - - i.slice = append(i.slice, value) -} - -func (i *IntSlice) WithSeparatorSpec(spec separatorSpec) { - i.separator = spec -} - -// Set parses the value into an integer and appends it to the list of values -func (i *IntSlice) Set(value string) error { - if !i.hasBeenSet { - i.slice = []int{} - i.hasBeenSet = true - } - - if strings.HasPrefix(value, slPfx) { - // Deserializing assumes overwrite - _ = json.Unmarshal([]byte(strings.Replace(value, slPfx, "", 1)), &i.slice) - i.hasBeenSet = true - return nil - } - - for _, s := range i.separator.flagSplitMultiValues(value) { - tmp, err := strconv.ParseInt(strings.TrimSpace(s), 0, 64) - if err != nil { - return err - } - - i.slice = append(i.slice, int(tmp)) - } - - return nil -} - -// String returns a readable representation of this value (for usage defaults) -func (i *IntSlice) String() string { - v := i.slice - if v == nil { - // treat nil the same as zero length non-nil - v = make([]int, 0) - } - return fmt.Sprintf("%#v", v) -} - -// Serialize allows IntSlice to fulfill Serializer -func (i *IntSlice) Serialize() string { - jsonBytes, _ := json.Marshal(i.slice) - return fmt.Sprintf("%s%s", slPfx, string(jsonBytes)) -} - -// Value returns the slice of ints set by this flag -func (i *IntSlice) Value() []int { - return i.slice -} - -// Get returns the slice of ints set by this flag -func (i *IntSlice) Get() interface{} { - return *i -} - -// String returns a readable representation of this value -// (for usage defaults) -func (f *IntSliceFlag) String() string { - return FlagStringer(f) -} - -// TakesValue returns true of the flag takes a value, otherwise false -func (f *IntSliceFlag) TakesValue() bool { - return true -} - -// GetUsage returns the usage string for the flag -func (f *IntSliceFlag) GetUsage() string { - return f.Usage -} - -// GetCategory returns the category for the flag -func (f *IntSliceFlag) GetCategory() string { - return f.Category -} - -// GetValue returns the flags value as string representation and an empty -// string if the flag takes no value at all. -func (f *IntSliceFlag) GetValue() string { - var defaultVals []string - if f.Value != nil && len(f.Value.Value()) > 0 { - for _, i := range f.Value.Value() { - defaultVals = append(defaultVals, strconv.Itoa(i)) - } - } - return strings.Join(defaultVals, ", ") -} - -// GetDefaultText returns the default text for this flag -func (f *IntSliceFlag) GetDefaultText() string { - if f.DefaultText != "" { - return f.DefaultText - } - return f.GetValue() -} - -// GetEnvVars returns the env vars for this flag -func (f *IntSliceFlag) GetEnvVars() []string { - return f.EnvVars -} - -// IsSliceFlag implements DocGenerationSliceFlag. -func (f *IntSliceFlag) IsSliceFlag() bool { - return true -} - -// Apply populates the flag given the flag set and environment -func (f *IntSliceFlag) Apply(set *flag.FlagSet) error { - // apply any default - if f.Destination != nil && f.Value != nil { - f.Destination.slice = make([]int, len(f.Value.slice)) - copy(f.Destination.slice, f.Value.slice) - } - - // resolve setValue (what we will assign to the set) - var setValue *IntSlice - switch { - case f.Destination != nil: - setValue = f.Destination - case f.Value != nil: - setValue = f.Value.clone() - default: - setValue = new(IntSlice) - setValue.WithSeparatorSpec(f.separator) - } - - if val, source, ok := flagFromEnvOrFile(f.EnvVars, f.FilePath); ok && val != "" { - for _, s := range f.separator.flagSplitMultiValues(val) { - if err := setValue.Set(strings.TrimSpace(s)); err != nil { - return fmt.Errorf("could not parse %q as int slice value from %s for flag %s: %s", val, source, f.Name, err) - } - } - - // Set this to false so that we reset the slice if we then set values from - // flags that have already been set by the environment. - setValue.hasBeenSet = false - f.HasBeenSet = true - } - - for _, name := range f.Names() { - set.Var(setValue, name, f.Usage) - } - - return nil -} - -func (f *IntSliceFlag) WithSeparatorSpec(spec separatorSpec) { - f.separator = spec -} - -// Get returns the flag’s value in the given Context. -func (f *IntSliceFlag) Get(ctx *Context) []int { - return ctx.IntSlice(f.Name) -} - -// RunAction executes flag action if set -func (f *IntSliceFlag) RunAction(c *Context) error { - if f.Action != nil { - return f.Action(c, c.IntSlice(f.Name)) - } - - return nil -} - -// IntSlice looks up the value of a local IntSliceFlag, returns -// nil if not found -func (cCtx *Context) IntSlice(name string) []int { - if fs := cCtx.lookupFlagSet(name); fs != nil { - return lookupIntSlice(name, fs) - } - return nil -} - -func lookupIntSlice(name string, set *flag.FlagSet) []int { - f := set.Lookup(name) - if f != nil { - if slice, ok := unwrapFlagValue(f.Value).(*IntSlice); ok { - return slice.Value() - } - } - return nil -} diff --git a/vendor/github.com/urfave/cli/v2/flag_path.go b/vendor/github.com/urfave/cli/v2/flag_path.go deleted file mode 100644 index 76cb35248..000000000 --- a/vendor/github.com/urfave/cli/v2/flag_path.go +++ /dev/null @@ -1,102 +0,0 @@ -package cli - -import ( - "flag" - "fmt" -) - -type Path = string - -// TakesValue returns true of the flag takes a value, otherwise false -func (f *PathFlag) TakesValue() bool { - return true -} - -// GetUsage returns the usage string for the flag -func (f *PathFlag) GetUsage() string { - return f.Usage -} - -// GetCategory returns the category for the flag -func (f *PathFlag) GetCategory() string { - return f.Category -} - -// GetValue returns the flags value as string representation and an empty -// string if the flag takes no value at all. -func (f *PathFlag) GetValue() string { - return f.Value -} - -// GetDefaultText returns the default text for this flag -func (f *PathFlag) GetDefaultText() string { - if f.DefaultText != "" { - return f.DefaultText - } - val := f.Value - if f.defaultValueSet { - val = f.defaultValue - } - if val == "" { - return val - } - return fmt.Sprintf("%q", val) -} - -// GetEnvVars returns the env vars for this flag -func (f *PathFlag) GetEnvVars() []string { - return f.EnvVars -} - -// Apply populates the flag given the flag set and environment -func (f *PathFlag) Apply(set *flag.FlagSet) error { - // set default value so that environment wont be able to overwrite it - f.defaultValue = f.Value - f.defaultValueSet = true - - if val, _, found := flagFromEnvOrFile(f.EnvVars, f.FilePath); found { - f.Value = val - f.HasBeenSet = true - } - - for _, name := range f.Names() { - if f.Destination != nil { - set.StringVar(f.Destination, name, f.Value, f.Usage) - continue - } - set.String(name, f.Value, f.Usage) - } - - return nil -} - -// Get returns the flag’s value in the given Context. -func (f *PathFlag) Get(ctx *Context) string { - return ctx.Path(f.Name) -} - -// RunAction executes flag action if set -func (f *PathFlag) RunAction(c *Context) error { - if f.Action != nil { - return f.Action(c, c.Path(f.Name)) - } - - return nil -} - -// Path looks up the value of a local PathFlag, returns -// "" if not found -func (cCtx *Context) Path(name string) string { - if fs := cCtx.lookupFlagSet(name); fs != nil { - return lookupPath(name, fs) - } - - return "" -} - -func lookupPath(name string, set *flag.FlagSet) string { - if f := set.Lookup(name); f != nil { - return f.Value.String() - } - return "" -} diff --git a/vendor/github.com/urfave/cli/v2/flag_string.go b/vendor/github.com/urfave/cli/v2/flag_string.go deleted file mode 100644 index 0f73e0621..000000000 --- a/vendor/github.com/urfave/cli/v2/flag_string.go +++ /dev/null @@ -1,100 +0,0 @@ -package cli - -import ( - "flag" - "fmt" -) - -// TakesValue returns true of the flag takes a value, otherwise false -func (f *StringFlag) TakesValue() bool { - return true -} - -// GetUsage returns the usage string for the flag -func (f *StringFlag) GetUsage() string { - return f.Usage -} - -// GetCategory returns the category for the flag -func (f *StringFlag) GetCategory() string { - return f.Category -} - -// GetValue returns the flags value as string representation and an empty -// string if the flag takes no value at all. -func (f *StringFlag) GetValue() string { - return f.Value -} - -// GetDefaultText returns the default text for this flag -func (f *StringFlag) GetDefaultText() string { - if f.DefaultText != "" { - return f.DefaultText - } - val := f.Value - if f.defaultValueSet { - val = f.defaultValue - } - - if val == "" { - return val - } - return fmt.Sprintf("%q", val) -} - -// GetEnvVars returns the env vars for this flag -func (f *StringFlag) GetEnvVars() []string { - return f.EnvVars -} - -// Apply populates the flag given the flag set and environment -func (f *StringFlag) Apply(set *flag.FlagSet) error { - // set default value so that environment wont be able to overwrite it - f.defaultValue = f.Value - f.defaultValueSet = true - - if val, _, found := flagFromEnvOrFile(f.EnvVars, f.FilePath); found { - f.Value = val - f.HasBeenSet = true - } - - for _, name := range f.Names() { - if f.Destination != nil { - set.StringVar(f.Destination, name, f.Value, f.Usage) - continue - } - set.String(name, f.Value, f.Usage) - } - - return nil -} - -// Get returns the flag’s value in the given Context. -func (f *StringFlag) Get(ctx *Context) string { - return ctx.String(f.Name) -} - -// RunAction executes flag action if set -func (f *StringFlag) RunAction(c *Context) error { - if f.Action != nil { - return f.Action(c, c.String(f.Name)) - } - - return nil -} - -// String looks up the value of a local StringFlag, returns -// "" if not found -func (cCtx *Context) String(name string) string { - if fs := cCtx.lookupFlagSet(name); fs != nil { - return lookupString(name, fs) - } - return "" -} - -func lookupString(name string, set *flag.FlagSet) string { - if f := set.Lookup(name); f != nil { - return f.Value.String() - } - return "" -} diff --git a/vendor/github.com/urfave/cli/v2/flag_string_slice.go b/vendor/github.com/urfave/cli/v2/flag_string_slice.go deleted file mode 100644 index 28f4798f5..000000000 --- a/vendor/github.com/urfave/cli/v2/flag_string_slice.go +++ /dev/null @@ -1,216 +0,0 @@ -package cli - -import ( - "encoding/json" - "flag" - "fmt" - "strconv" - "strings" -) - -// StringSlice wraps a []string to satisfy flag.Value -type StringSlice struct { - slice []string - separator separatorSpec - hasBeenSet bool - keepSpace bool -} - -// NewStringSlice creates a *StringSlice with default values -func NewStringSlice(defaults ...string) *StringSlice { - return &StringSlice{slice: append([]string{}, defaults...)} -} - -// clone allocate a copy of self object -func (s *StringSlice) clone() *StringSlice { - n := &StringSlice{ - slice: make([]string, len(s.slice)), - hasBeenSet: s.hasBeenSet, - } - copy(n.slice, s.slice) - return n -} - -// Set appends the string value to the list of values -func (s *StringSlice) Set(value string) error { - if !s.hasBeenSet { - s.slice = []string{} - s.hasBeenSet = true - } - - if strings.HasPrefix(value, slPfx) { - // Deserializing assumes overwrite - _ = json.Unmarshal([]byte(strings.Replace(value, slPfx, "", 1)), &s.slice) - s.hasBeenSet = true - return nil - } - - for _, t := range s.separator.flagSplitMultiValues(value) { - if !s.keepSpace { - t = strings.TrimSpace(t) - } - s.slice = append(s.slice, t) - } - - return nil -} - -func (s *StringSlice) WithSeparatorSpec(spec separatorSpec) { - s.separator = spec -} - -// String returns a readable representation of this value (for usage defaults) -func (s *StringSlice) String() string { - return fmt.Sprintf("%s", s.slice) -} - -// Serialize allows StringSlice to fulfill Serializer -func (s *StringSlice) Serialize() string { - jsonBytes, _ := json.Marshal(s.slice) - return fmt.Sprintf("%s%s", slPfx, string(jsonBytes)) -} - -// Value returns the slice of strings set by this flag -func (s *StringSlice) Value() []string { - return s.slice -} - -// Get returns the slice of strings set by this flag -func (s *StringSlice) Get() interface{} { - return *s -} - -// String returns a readable representation of this value -// (for usage defaults) -func (f *StringSliceFlag) String() string { - return FlagStringer(f) -} - -// TakesValue returns true of the flag takes a value, otherwise false -func (f *StringSliceFlag) TakesValue() bool { - return true -} - -// GetUsage returns the usage string for the flag -func (f *StringSliceFlag) GetUsage() string { - return f.Usage -} - -// GetCategory returns the category for the flag -func (f *StringSliceFlag) GetCategory() string { - return f.Category -} - -// GetValue returns the flags value as string representation and an empty -// string if the flag takes no value at all. -func (f *StringSliceFlag) GetValue() string { - var defaultVals []string - if f.Value != nil && len(f.Value.Value()) > 0 { - for _, s := range f.Value.Value() { - if len(s) > 0 { - defaultVals = append(defaultVals, strconv.Quote(s)) - } - } - } - return strings.Join(defaultVals, ", ") -} - -// GetDefaultText returns the default text for this flag -func (f *StringSliceFlag) GetDefaultText() string { - if f.DefaultText != "" { - return f.DefaultText - } - return f.GetValue() -} - -// GetEnvVars returns the env vars for this flag -func (f *StringSliceFlag) GetEnvVars() []string { - return f.EnvVars -} - -// IsSliceFlag implements DocGenerationSliceFlag. -func (f *StringSliceFlag) IsSliceFlag() bool { - return true -} - -// Apply populates the flag given the flag set and environment -func (f *StringSliceFlag) Apply(set *flag.FlagSet) error { - // apply any default - if f.Destination != nil && f.Value != nil { - f.Destination.slice = make([]string, len(f.Value.slice)) - copy(f.Destination.slice, f.Value.slice) - } - - // resolve setValue (what we will assign to the set) - var setValue *StringSlice - switch { - case f.Destination != nil: - setValue = f.Destination - case f.Value != nil: - setValue = f.Value.clone() - default: - setValue = new(StringSlice) - setValue.WithSeparatorSpec(f.separator) - } - - setValue.keepSpace = f.KeepSpace - - if val, source, found := flagFromEnvOrFile(f.EnvVars, f.FilePath); found { - for _, s := range f.separator.flagSplitMultiValues(val) { - if !f.KeepSpace { - s = strings.TrimSpace(s) - } - if err := setValue.Set(s); err != nil { - return fmt.Errorf("could not parse %q as string value from %s for flag %s: %s", val, source, f.Name, err) - } - } - - // Set this to false so that we reset the slice if we then set values from - // flags that have already been set by the environment. - setValue.hasBeenSet = false - f.HasBeenSet = true - } - - for _, name := range f.Names() { - set.Var(setValue, name, f.Usage) - } - - return nil -} - -func (f *StringSliceFlag) WithSeparatorSpec(spec separatorSpec) { - f.separator = spec -} - -// Get returns the flag’s value in the given Context. -func (f *StringSliceFlag) Get(ctx *Context) []string { - return ctx.StringSlice(f.Name) -} - -// RunAction executes flag action if set -func (f *StringSliceFlag) RunAction(c *Context) error { - if f.Action != nil { - return f.Action(c, c.StringSlice(f.Name)) - } - - return nil -} - -// StringSlice looks up the value of a local StringSliceFlag, returns -// nil if not found -func (cCtx *Context) StringSlice(name string) []string { - if fs := cCtx.lookupFlagSet(name); fs != nil { - return lookupStringSlice(name, fs) - } - return nil -} - -func lookupStringSlice(name string, set *flag.FlagSet) []string { - f := set.Lookup(name) - if f != nil { - if slice, ok := unwrapFlagValue(f.Value).(*StringSlice); ok { - return slice.Value() - } - } - return nil -} diff --git a/vendor/github.com/urfave/cli/v2/flag_timestamp.go b/vendor/github.com/urfave/cli/v2/flag_timestamp.go deleted file mode 100644 index b90123087..000000000 --- a/vendor/github.com/urfave/cli/v2/flag_timestamp.go +++ /dev/null @@ -1,205 +0,0 @@ -package cli - -import ( - "flag" - "fmt" - "time" -) - -// Timestamp wrap to satisfy golang's flag interface. -type Timestamp struct { - timestamp *time.Time - hasBeenSet bool - layout string - location *time.Location -} - -// Timestamp constructor -func NewTimestamp(timestamp time.Time) *Timestamp { - return &Timestamp{timestamp: &timestamp} -} - -// Set the timestamp value directly -func (t *Timestamp) SetTimestamp(value time.Time) { - if !t.hasBeenSet { - t.timestamp = &value - t.hasBeenSet = true - } -} - -// Set the timestamp string layout for future parsing -func (t *Timestamp) SetLayout(layout string) { - t.layout = layout -} - -// Set perceived timezone of the to-be parsed time string -func (t *Timestamp) SetLocation(loc *time.Location) { - t.location = loc -} - -// Parses the string value to timestamp -func (t *Timestamp) Set(value string) error { - var timestamp time.Time - var err error - - if t.location != nil { - timestamp, err = time.ParseInLocation(t.layout, value, t.location) - } else { - timestamp, err = time.Parse(t.layout, value) - } - - if err != nil { - return err - } - - t.timestamp = &timestamp - t.hasBeenSet = true - return nil -} - -// String returns a readable representation of this value (for usage defaults) -func (t *Timestamp) String() string { - return fmt.Sprintf("%#v", t.timestamp) -} - -// Value returns the timestamp value stored in the flag -func (t *Timestamp) Value() *time.Time { - return t.timestamp -} - -// Get returns the flag structure -func (t *Timestamp) Get() interface{} { - return *t -} - -// clone timestamp -func (t *Timestamp) clone() *Timestamp { - tc := &Timestamp{ - timestamp: nil, - hasBeenSet: t.hasBeenSet, - layout: t.layout, - location: nil, - } - if t.timestamp != nil { - tts := *t.timestamp - tc.timestamp = &tts - } - if t.location != nil { - loc := *t.location - tc.location = &loc - } - return tc -} - -// TakesValue returns true of the flag takes a value, otherwise false -func (f *TimestampFlag) TakesValue() bool { - return true -} - -// GetUsage returns the usage string for the flag -func (f *TimestampFlag) GetUsage() string { - return f.Usage -} - -// GetCategory returns the category for the flag -func (f *TimestampFlag) GetCategory() string { - return f.Category -} - -// GetValue returns the flags value as string representation and an empty -// string if the flag takes no value at all. -func (f *TimestampFlag) GetValue() string { - if f.Value != nil && f.Value.timestamp != nil { - return f.Value.timestamp.String() - } - return "" -} - -// GetDefaultText returns the default text for this flag -func (f *TimestampFlag) GetDefaultText() string { - if f.DefaultText != "" { - return f.DefaultText - } - val := f.Value - if f.defaultValueSet { - val = f.defaultValue - } - - if val != nil && val.timestamp != nil { - return val.timestamp.String() - } - - return "" -} - -// GetEnvVars returns the env vars for this flag -func (f *TimestampFlag) GetEnvVars() []string { - return f.EnvVars -} - -// Apply populates the flag given the flag set and environment -func (f *TimestampFlag) Apply(set *flag.FlagSet) error { - if f.Layout == "" { - return fmt.Errorf("timestamp Layout is required") - } - if f.Value == nil { - f.Value = &Timestamp{} - } - f.Value.SetLayout(f.Layout) - f.Value.SetLocation(f.Timezone) - - f.defaultValue = f.Value.clone() - f.defaultValueSet = true - - if val, source, found := flagFromEnvOrFile(f.EnvVars, f.FilePath); found { - if err := f.Value.Set(val); err != nil { - return fmt.Errorf("could not parse %q as timestamp value from %s for flag %s: %s", val, source, f.Name, err) - } - f.HasBeenSet = true - } - - if f.Destination != nil { - *f.Destination = *f.Value - } - - for _, name := range f.Names() { - if f.Destination != nil { - set.Var(f.Destination, name, f.Usage) - continue - } - - set.Var(f.Value, name, f.Usage) - } - return nil -} - -// Get returns the flag’s value in the given Context. -func (f *TimestampFlag) Get(ctx *Context) *time.Time { - return ctx.Timestamp(f.Name) -} - -// RunAction executes flag action if set -func (f *TimestampFlag) RunAction(c *Context) error { - if f.Action != nil { - return f.Action(c, c.Timestamp(f.Name)) - } - - return nil -} - -// Timestamp gets the timestamp from a flag name -func (cCtx *Context) Timestamp(name string) *time.Time { - if fs := cCtx.lookupFlagSet(name); fs != nil { - return lookupTimestamp(name, fs) - } - return nil -} - -// Fetches the timestamp value from the local timestampWrap -func lookupTimestamp(name string, set *flag.FlagSet) *time.Time { - f := set.Lookup(name) - if f != nil { - return (f.Value.(*Timestamp)).Value() - } - return nil -} diff --git a/vendor/github.com/urfave/cli/v2/flag_uint.go b/vendor/github.com/urfave/cli/v2/flag_uint.go deleted file mode 100644 index 8d5b85458..000000000 --- a/vendor/github.com/urfave/cli/v2/flag_uint.go +++ /dev/null @@ -1,108 +0,0 @@ -package cli - -import ( - "flag" - "fmt" - "strconv" -) - -// TakesValue returns true of the flag takes a value, otherwise false -func (f *UintFlag) TakesValue() bool { - return true -} - -// GetUsage returns the usage string for the flag -func (f *UintFlag) GetUsage() string { - return f.Usage -} - -// GetCategory returns the category for the flag -func (f *UintFlag) GetCategory() string { - return f.Category -} - -// Apply populates the flag given the flag set and environment -func (f *UintFlag) Apply(set *flag.FlagSet) error { - // set default value so that environment wont be able to overwrite it - f.defaultValue = f.Value - f.defaultValueSet = true - - if val, source, found := flagFromEnvOrFile(f.EnvVars, f.FilePath); found { - if val != "" { - valInt, err := strconv.ParseUint(val, f.Base, 64) - if err != nil { - return fmt.Errorf("could not parse %q as uint value from %s for flag %s: %s", val, source, f.Name, err) - } - - f.Value = uint(valInt) - f.HasBeenSet = true - } - } - - for _, name := range f.Names() { - if f.Destination != nil { - set.UintVar(f.Destination, name, f.Value, f.Usage) - continue - } - set.Uint(name, f.Value, f.Usage) - } - - return nil -} - -// RunAction executes flag action if set -func (f *UintFlag) RunAction(c *Context) error { - if f.Action != nil { - return f.Action(c, c.Uint(f.Name)) - } - - return nil -} - -// GetValue returns the flags value as string representation and an empty -// string if the flag takes no value at all. -func (f *UintFlag) GetValue() string { - return fmt.Sprintf("%d", f.Value) -} - -// GetDefaultText returns the default text for this flag -func (f *UintFlag) GetDefaultText() string { - if f.DefaultText != "" { - return f.DefaultText - } - if f.defaultValueSet { - return fmt.Sprintf("%d", f.defaultValue) - } - return fmt.Sprintf("%d", f.Value) -} - -// GetEnvVars returns the env vars for this flag -func (f *UintFlag) GetEnvVars() []string { - return f.EnvVars -} - -// Get returns the flag’s value in the given Context. -func (f *UintFlag) Get(ctx *Context) uint { - return ctx.Uint(f.Name) -} - -// Uint looks up the value of a local UintFlag, returns -// 0 if not found -func (cCtx *Context) Uint(name string) uint { - if fs := cCtx.lookupFlagSet(name); fs != nil { - return lookupUint(name, fs) - } - return 0 -} - -func lookupUint(name string, set *flag.FlagSet) uint { - f := set.Lookup(name) - if f != nil { - parsed, err := strconv.ParseUint(f.Value.String(), 0, 64) - if err != nil { - return 0 - } - return uint(parsed) - } - return 0 -} diff --git a/vendor/github.com/urfave/cli/v2/flag_uint64.go b/vendor/github.com/urfave/cli/v2/flag_uint64.go deleted file mode 100644 index c356e533b..000000000 --- a/vendor/github.com/urfave/cli/v2/flag_uint64.go +++ /dev/null @@ -1,108 +0,0 @@ -package cli - -import ( - "flag" - "fmt" - "strconv" -) - -// TakesValue returns true of the flag takes a value, otherwise false -func (f *Uint64Flag) TakesValue() bool { - return true -} - -// GetUsage returns the usage string for the flag -func (f *Uint64Flag) GetUsage() string { - return f.Usage -} - -// GetCategory returns the category for the flag -func (f *Uint64Flag) GetCategory() string { - return f.Category -} - -// Apply populates the flag given the flag set and environment -func (f *Uint64Flag) Apply(set *flag.FlagSet) error { - // set default value so that environment wont be able to overwrite it - f.defaultValue = f.Value - f.defaultValueSet = true - - if val, source, found := flagFromEnvOrFile(f.EnvVars, f.FilePath); found { - if val != "" { - valInt, err := strconv.ParseUint(val, f.Base, 64) - if err != nil { - return fmt.Errorf("could not parse %q as uint64 value from %s for flag %s: %s", val, source, f.Name, err) - } - - f.Value = valInt - f.HasBeenSet = true - } - } - - for _, name := range f.Names() { - if f.Destination != nil { - set.Uint64Var(f.Destination, name, f.Value, f.Usage) - continue - } - set.Uint64(name, f.Value, f.Usage) - } - - return nil -} - -// RunAction executes flag action if set -func (f *Uint64Flag) RunAction(c *Context) error { - if f.Action != nil { - return f.Action(c, c.Uint64(f.Name)) - } - - return nil -} - -// GetValue returns the flags value as string representation and an empty -// string if the flag takes no value at all. -func (f *Uint64Flag) GetValue() string { - return fmt.Sprintf("%d", f.Value) -} - -// GetDefaultText returns the default text for this flag -func (f *Uint64Flag) GetDefaultText() string { - if f.DefaultText != "" { - return f.DefaultText - } - if f.defaultValueSet { - return fmt.Sprintf("%d", f.defaultValue) - } - return fmt.Sprintf("%d", f.Value) -} - -// GetEnvVars returns the env vars for this flag -func (f *Uint64Flag) GetEnvVars() []string { - return f.EnvVars -} - -// Get returns the flag’s value in the given Context. -func (f *Uint64Flag) Get(ctx *Context) uint64 { - return ctx.Uint64(f.Name) -} - -// Uint64 looks up the value of a local Uint64Flag, returns -// 0 if not found -func (cCtx *Context) Uint64(name string) uint64 { - if fs := cCtx.lookupFlagSet(name); fs != nil { - return lookupUint64(name, fs) - } - return 0 -} - -func lookupUint64(name string, set *flag.FlagSet) uint64 { - f := set.Lookup(name) - if f != nil { - parsed, err := strconv.ParseUint(f.Value.String(), 0, 64) - if err != nil { - return 0 - } - return parsed - } - return 0 -} diff --git a/vendor/github.com/urfave/cli/v2/flag_uint64_slice.go b/vendor/github.com/urfave/cli/v2/flag_uint64_slice.go deleted file mode 100644 index d34201868..000000000 --- a/vendor/github.com/urfave/cli/v2/flag_uint64_slice.go +++ /dev/null @@ -1,219 +0,0 @@ -package cli - -import ( - "encoding/json" - "flag" - "fmt" - "strconv" - "strings" -) - -// Uint64Slice wraps []int64 to satisfy flag.Value -type Uint64Slice struct { - slice []uint64 - separator separatorSpec - hasBeenSet bool -} - -// NewUint64Slice makes an *Uint64Slice with default values -func NewUint64Slice(defaults ...uint64) *Uint64Slice { - return &Uint64Slice{slice: append([]uint64{}, defaults...)} -} - -// clone allocate a copy of self object -func (i *Uint64Slice) clone() *Uint64Slice { - n := &Uint64Slice{ - slice: make([]uint64, len(i.slice)), - hasBeenSet: i.hasBeenSet, - } - copy(n.slice, i.slice) - return n -} - -// Set parses the value into an integer and appends it to the list of values -func (i *Uint64Slice) Set(value string) error { - if !i.hasBeenSet { - i.slice = []uint64{} - i.hasBeenSet = true - } - - if strings.HasPrefix(value, slPfx) { - // Deserializing assumes overwrite - _ = json.Unmarshal([]byte(strings.Replace(value, slPfx, "", 1)), &i.slice) - i.hasBeenSet = true - return nil - } - - for _, s := range i.separator.flagSplitMultiValues(value) { - tmp, err := strconv.ParseUint(strings.TrimSpace(s), 0, 64) - if err != nil { - return err - } - - i.slice = append(i.slice, tmp) - } - - return nil -} - -func (i *Uint64Slice) WithSeparatorSpec(spec separatorSpec) { - i.separator = spec -} - -// String returns a readable representation of this value (for usage defaults) -func (i *Uint64Slice) String() string { - v := i.slice - if v == nil { - // treat nil the same as zero length non-nil - v = make([]uint64, 0) - } - str := fmt.Sprintf("%d", v) - str = strings.Replace(str, " ", ", ", -1) - str = strings.Replace(str, "[", "{", -1) - str = strings.Replace(str, "]", "}", -1) - return fmt.Sprintf("[]uint64%s", str) -} - -// Serialize allows Uint64Slice to fulfill Serializer -func (i *Uint64Slice) Serialize() string { - jsonBytes, _ := json.Marshal(i.slice) - return fmt.Sprintf("%s%s", slPfx, string(jsonBytes)) -} - -// Value returns the slice of ints set by this flag -func (i *Uint64Slice) Value() []uint64 { - return i.slice -} - -// Get returns the slice of ints set by this flag -func (i *Uint64Slice) Get() interface{} { - return *i -} - -// String returns a readable representation of this value -// (for usage defaults) -func (f *Uint64SliceFlag) String() string { - return FlagStringer(f) -} - -// TakesValue returns true of the flag takes a value, otherwise false -func (f *Uint64SliceFlag) TakesValue() bool { - return true -} - -// GetUsage returns the usage string for the flag -func (f *Uint64SliceFlag) GetUsage() string { - return f.Usage -} - -// GetCategory returns the category for the flag -func (f *Uint64SliceFlag) GetCategory() string { - return f.Category -} - -// GetValue returns the flags value as string representation and an empty -// string if the flag takes no value at all. -func (f *Uint64SliceFlag) GetValue() string { - var defaultVals []string - if f.Value != nil && len(f.Value.Value()) > 0 { - for _, i := range f.Value.Value() { - defaultVals = append(defaultVals, strconv.FormatUint(i, 10)) - } - } - return strings.Join(defaultVals, ", ") -} - -// GetDefaultText returns the default text for this flag -func (f *Uint64SliceFlag) GetDefaultText() string { - if f.DefaultText != "" { - return f.DefaultText - } - return f.GetValue() -} - -// GetEnvVars returns the env vars for this flag -func (f *Uint64SliceFlag) GetEnvVars() []string { - return f.EnvVars -} - -// IsSliceFlag implements DocGenerationSliceFlag. -func (f *Uint64SliceFlag) IsSliceFlag() bool { - return true -} - -// Apply populates the flag given the flag set and environment -func (f *Uint64SliceFlag) Apply(set *flag.FlagSet) error { - // apply any default - if f.Destination != nil && f.Value != nil { - f.Destination.slice = make([]uint64, len(f.Value.slice)) - copy(f.Destination.slice, f.Value.slice) - } - - // resolve setValue (what we will assign to the set) - var setValue *Uint64Slice - switch { - case f.Destination != nil: - setValue = f.Destination - case f.Value != nil: - setValue = f.Value.clone() - default: - setValue = new(Uint64Slice) - setValue.WithSeparatorSpec(f.separator) - } - - if val, source, ok := flagFromEnvOrFile(f.EnvVars, f.FilePath); ok && val != "" { - for _, s := range f.separator.flagSplitMultiValues(val) { - if err := setValue.Set(strings.TrimSpace(s)); err != nil { - return fmt.Errorf("could not parse %q as uint64 slice value from %s for flag %s: %s", val, source, f.Name, err) - } - } - - // Set this to false so that we reset the slice if we then set values from - // flags that have already been set by the environment. - setValue.hasBeenSet = false - f.HasBeenSet = true - } - - for _, name := range f.Names() { - set.Var(setValue, name, f.Usage) - } - - return nil -} - -func (f *Uint64SliceFlag) WithSeparatorSpec(spec separatorSpec) { - f.separator = spec -} - -// Get returns the flag’s value in the given Context. -func (f *Uint64SliceFlag) Get(ctx *Context) []uint64 { - return ctx.Uint64Slice(f.Name) -} - -// RunAction executes flag action if set -func (f *Uint64SliceFlag) RunAction(c *Context) error { - if f.Action != nil { - return f.Action(c, c.Uint64Slice(f.Name)) - } - - return nil -} - -// Uint64Slice looks up the value of a local Uint64SliceFlag, returns -// nil if not found -func (cCtx *Context) Uint64Slice(name string) []uint64 { - if fs := cCtx.lookupFlagSet(name); fs != nil { - return lookupUint64Slice(name, fs) - } - return nil -} - -func lookupUint64Slice(name string, set *flag.FlagSet) []uint64 { - f := set.Lookup(name) - if f != nil { - if slice, ok := unwrapFlagValue(f.Value).(*Uint64Slice); ok { - return slice.Value() - } - } - return nil -} diff --git a/vendor/github.com/urfave/cli/v2/flag_uint_slice.go b/vendor/github.com/urfave/cli/v2/flag_uint_slice.go deleted file mode 100644 index 4dc13e126..000000000 --- a/vendor/github.com/urfave/cli/v2/flag_uint_slice.go +++ /dev/null @@ -1,230 +0,0 @@ -package cli - -import ( - "encoding/json" - "flag" - "fmt" - "strconv" - "strings" -) - -// UintSlice wraps []int to satisfy flag.Value -type UintSlice struct { - slice []uint - separator separatorSpec - hasBeenSet bool -} - -// NewUintSlice makes an *UintSlice with default values -func NewUintSlice(defaults ...uint) *UintSlice { - return &UintSlice{slice: append([]uint{}, defaults...)} -} - -// clone allocate a copy of self object -func (i *UintSlice) clone() *UintSlice { - n := &UintSlice{ - slice: make([]uint, len(i.slice)), - hasBeenSet: i.hasBeenSet, - } - copy(n.slice, i.slice) - return n -} - -// TODO: Consistently have specific Set function for Int64 and Float64 ? -// SetInt directly adds an integer to the list of values -func (i *UintSlice) SetUint(value uint) { - if !i.hasBeenSet { - i.slice = []uint{} - i.hasBeenSet = true - } - - i.slice = append(i.slice, value) -} - -// Set parses the value into an integer and appends it to the list of values -func (i *UintSlice) Set(value string) error { - if !i.hasBeenSet { - i.slice = []uint{} - i.hasBeenSet = true - } - - if strings.HasPrefix(value, slPfx) { - // Deserializing assumes overwrite - _ = json.Unmarshal([]byte(strings.Replace(value, slPfx, "", 1)), &i.slice) - i.hasBeenSet = true - return nil - } - - for _, s := range i.separator.flagSplitMultiValues(value) { - tmp, err := strconv.ParseUint(strings.TrimSpace(s), 0, 32) - if err != nil { - return err - } - - i.slice = append(i.slice, uint(tmp)) - } - - return nil -} - -func (i *UintSlice) WithSeparatorSpec(spec separatorSpec) { - i.separator = spec -} - -// String returns a readable representation of this value (for usage defaults) -func (i *UintSlice) String() string { - v := i.slice - if v == nil { - // treat nil the same as zero length non-nil - v = make([]uint, 0) - } - str := fmt.Sprintf("%d", v) - str = strings.Replace(str, " ", ", ", -1) - str = strings.Replace(str, "[", "{", -1) - str = strings.Replace(str, "]", "}", -1) - return fmt.Sprintf("[]uint%s", str) -} - -// Serialize allows UintSlice to fulfill Serializer -func (i *UintSlice) Serialize() string { - jsonBytes, _ := json.Marshal(i.slice) - return fmt.Sprintf("%s%s", slPfx, string(jsonBytes)) -} - -// Value returns the slice of ints set by this flag -func (i *UintSlice) Value() []uint { - return i.slice -} - -// Get returns the slice of ints set by this flag -func (i *UintSlice) Get() interface{} { - return *i -} - -// String returns a readable representation of this value -// (for usage defaults) -func (f *UintSliceFlag) String() string { - return FlagStringer(f) -} - -// TakesValue returns true of the flag takes a value, otherwise false -func (f *UintSliceFlag) TakesValue() bool { - return true -} - -// GetUsage returns the usage string for the flag -func (f *UintSliceFlag) GetUsage() string { - return f.Usage -} - -// GetCategory returns the category for the flag -func (f *UintSliceFlag) GetCategory() string { - return f.Category -} - -// GetValue returns the flags value as string representation and an empty -// string if the flag takes no value at all. -func (f *UintSliceFlag) GetValue() string { - var defaultVals []string - if f.Value != nil && len(f.Value.Value()) > 0 { - for _, i := range f.Value.Value() { - defaultVals = append(defaultVals, strconv.FormatUint(uint64(i), 10)) - } - } - return strings.Join(defaultVals, ", ") -} - -// GetDefaultText returns the default text for this flag -func (f *UintSliceFlag) GetDefaultText() string { - if f.DefaultText != "" { - return f.DefaultText - } - return f.GetValue() -} - -// GetEnvVars returns the env vars for this flag -func (f *UintSliceFlag) GetEnvVars() []string { - return f.EnvVars -} - -// IsSliceFlag implements DocGenerationSliceFlag. -func (f *UintSliceFlag) IsSliceFlag() bool { - return true -} - -// Apply populates the flag given the flag set and environment -func (f *UintSliceFlag) Apply(set *flag.FlagSet) error { - // apply any default - if f.Destination != nil && f.Value != nil { - f.Destination.slice = make([]uint, len(f.Value.slice)) - copy(f.Destination.slice, f.Value.slice) - } - - // resolve setValue (what we will assign to the set) - var setValue *UintSlice - switch { - case f.Destination != nil: - setValue = f.Destination - case f.Value != nil: - setValue = f.Value.clone() - default: - setValue = new(UintSlice) - setValue.WithSeparatorSpec(f.separator) - } - - if val, source, ok := flagFromEnvOrFile(f.EnvVars, f.FilePath); ok && val != "" { - for _, s := range f.separator.flagSplitMultiValues(val) { - if err := setValue.Set(strings.TrimSpace(s)); err != nil { - return fmt.Errorf("could not parse %q as uint slice value from %s for flag %s: %s", val, source, f.Name, err) - } - } - - // Set this to false so that we reset the slice if we then set values from - // flags that have already been set by the environment. - setValue.hasBeenSet = false - f.HasBeenSet = true - } - - for _, name := range f.Names() { - set.Var(setValue, name, f.Usage) - } - - return nil -} - -func (f *UintSliceFlag) WithSeparatorSpec(spec separatorSpec) { - f.separator = spec -} - -// Get returns the flag’s value in the given Context. -func (f *UintSliceFlag) Get(ctx *Context) []uint { - return ctx.UintSlice(f.Name) -} - -// RunAction executes flag action if set -func (f *UintSliceFlag) RunAction(c *Context) error { - if f.Action != nil { - return f.Action(c, c.UintSlice(f.Name)) - } - - return nil -} - -// UintSlice looks up the value of a local UintSliceFlag, returns -// nil if not found -func (cCtx *Context) UintSlice(name string) []uint { - if fs := cCtx.lookupFlagSet(name); fs != nil { - return lookupUintSlice(name, fs) - } - return nil -} - -func lookupUintSlice(name string, set *flag.FlagSet) []uint { - f := set.Lookup(name) - if f != nil { - if slice, ok := unwrapFlagValue(f.Value).(*UintSlice); ok { - return slice.Value() - } - } - return nil -} diff --git a/vendor/github.com/urfave/cli/v2/godoc-current.txt b/vendor/github.com/urfave/cli/v2/godoc-current.txt deleted file mode 100644 index 3e29faaba..000000000 --- a/vendor/github.com/urfave/cli/v2/godoc-current.txt +++ /dev/null @@ -1,2724 +0,0 @@ -package cli // import "github.com/urfave/cli/v2" - -Package cli provides a minimal framework for creating and organizing command -line Go applications. cli is designed to be easy to understand and write, -the most simple cli application can be written as follows: - - func main() { - (&cli.App{}).Run(os.Args) - } - -Of course this application does not do much, so let's make this an actual -application: - - func main() { - app := &cli.App{ - Name: "greet", - Usage: "say a greeting", - Action: func(c *cli.Context) error { - fmt.Println("Greetings") - return nil - }, - } - - app.Run(os.Args) - } - -VARIABLES - -var ( - SuggestFlag SuggestFlagFunc = nil // initialized in suggestions.go unless built with urfave_cli_no_suggest - SuggestCommand SuggestCommandFunc = nil // initialized in suggestions.go unless built with urfave_cli_no_suggest - SuggestDidYouMeanTemplate string = suggestDidYouMeanTemplate -) -var AppHelpTemplate = `NAME: - {{template "helpNameTemplate" .}} - -USAGE: - {{if .UsageText}}{{wrap .UsageText 3}}{{else}}{{.HelpName}} {{if .VisibleFlags}}[global options]{{end}}{{if .Commands}} command [command options]{{end}}{{if .ArgsUsage}} {{.ArgsUsage}}{{else}}{{if .Args}} [arguments...]{{end}}{{end}}{{end}}{{if .Version}}{{if not .HideVersion}} - -VERSION: - {{.Version}}{{end}}{{end}}{{if .Description}} - -DESCRIPTION: - {{template "descriptionTemplate" .}}{{end}} -{{- if len .Authors}} - -AUTHOR{{template "authorsTemplate" .}}{{end}}{{if .VisibleCommands}} - -COMMANDS:{{template "visibleCommandCategoryTemplate" .}}{{end}}{{if .VisibleFlagCategories}} - -GLOBAL OPTIONS:{{template "visibleFlagCategoryTemplate" .}}{{else if .VisibleFlags}} - -GLOBAL OPTIONS:{{template "visibleFlagTemplate" .}}{{end}}{{if .Copyright}} - -COPYRIGHT: - {{template "copyrightTemplate" .}}{{end}} -` - AppHelpTemplate is the text template for the Default help topic. cli.go - uses text/template to render templates. You can render custom help text by - setting this variable. - -var CommandHelpTemplate = `NAME: - {{template "helpNameTemplate" .}} - -USAGE: - {{template "usageTemplate" .}}{{if .Category}} - -CATEGORY: - {{.Category}}{{end}}{{if .Description}} - -DESCRIPTION: - {{template "descriptionTemplate" .}}{{end}}{{if .VisibleFlagCategories}} - -OPTIONS:{{template "visibleFlagCategoryTemplate" .}}{{else if .VisibleFlags}} - -OPTIONS:{{template "visibleFlagTemplate" .}}{{end}} -` - CommandHelpTemplate is the text template for the command help topic. cli.go - uses text/template to render templates. You can render custom help text by - setting this variable. - -var ErrWriter io.Writer = os.Stderr - ErrWriter is used to write errors to the user. This can be anything - implementing the io.Writer interface and defaults to os.Stderr. - -var FishCompletionTemplate = `# {{ .App.Name }} fish shell completion - -function __fish_{{ .App.Name }}_no_subcommand --description 'Test if there has been any subcommand yet' - for i in (commandline -opc) - if contains -- $i{{ range $v := .AllCommands }} {{ $v }}{{ end }} - return 1 - end - end - return 0 -end - -{{ range $v := .Completions }}{{ $v }} -{{ end }}` -var MarkdownDocTemplate = `{{if gt .SectionNum 0}}% {{ .App.Name }} {{ .SectionNum }} - -{{end}}# NAME - -{{ .App.Name }}{{ if .App.Usage }} - {{ .App.Usage }}{{ end }} - -# SYNOPSIS - -{{ .App.Name }} -{{ if .SynopsisArgs }} -` + "```" + ` -{{ range $v := .SynopsisArgs }}{{ $v }}{{ end }}` + "```" + ` -{{ end }}{{ if .App.Description }} -# DESCRIPTION - -{{ .App.Description }} -{{ end }} -**Usage**: - -` + "```" + `{{ if .App.UsageText }} -{{ .App.UsageText }} -{{ else }} -{{ .App.Name }} [GLOBAL OPTIONS] command [COMMAND OPTIONS] [ARGUMENTS...] -{{ end }}` + "```" + ` -{{ if .GlobalArgs }} -# GLOBAL OPTIONS -{{ range $v := .GlobalArgs }} -{{ $v }}{{ end }} -{{ end }}{{ if .Commands }} -# COMMANDS -{{ range $v := .Commands }} -{{ $v }}{{ end }}{{ end }}` -var OsExiter = os.Exit - OsExiter is the function used when the app exits. If not set defaults to - os.Exit. - -var SubcommandHelpTemplate = `NAME: - {{template "helpNameTemplate" .}} - -USAGE: - {{if .UsageText}}{{wrap .UsageText 3}}{{else}}{{.HelpName}} {{if .VisibleFlags}}command [command options]{{end}}{{if .ArgsUsage}} {{.ArgsUsage}}{{else}}{{if .Args}} [arguments...]{{end}}{{end}}{{end}}{{if .Description}} - -DESCRIPTION: - {{template "descriptionTemplate" .}}{{end}}{{if .VisibleCommands}} - -COMMANDS:{{template "visibleCommandCategoryTemplate" .}}{{end}}{{if .VisibleFlagCategories}} - -OPTIONS:{{template "visibleFlagCategoryTemplate" .}}{{else if .VisibleFlags}} - -OPTIONS:{{template "visibleFlagTemplate" .}}{{end}} -` - SubcommandHelpTemplate is the text template for the subcommand help topic. - cli.go uses text/template to render templates. You can render custom help - text by setting this variable. - -var VersionPrinter = printVersion - VersionPrinter prints the version for the App - -var HelpPrinter helpPrinter = printHelp - HelpPrinter is a function that writes the help output. If not set - explicitly, this calls HelpPrinterCustom using only the default template - functions. - - If custom logic for printing help is required, this function can be - overridden. If the ExtraInfo field is defined on an App, this function - should not be modified, as HelpPrinterCustom will be used directly in order - to capture the extra information. - -var HelpPrinterCustom helpPrinterCustom = printHelpCustom - HelpPrinterCustom is a function that writes the help output. It is used as - the default implementation of HelpPrinter, and may be called directly if the - ExtraInfo field is set on an App. - - In the default implementation, if the customFuncs argument contains a - "wrapAt" key, which is a function which takes no arguments and returns an - int, this int value will be used to produce a "wrap" function used by the - default template to wrap long lines. - - -FUNCTIONS - -func DefaultAppComplete(cCtx *Context) - DefaultAppComplete prints the list of subcommands as the default app - completion method - -func DefaultCompleteWithFlags(cmd *Command) func(cCtx *Context) -func FlagNames(name string, aliases []string) []string -func HandleAction(action interface{}, cCtx *Context) (err error) - HandleAction attempts to figure out which Action signature was used. - If it's an ActionFunc or a func with the legacy signature for Action, - the func is run! - -func HandleExitCoder(err error) - HandleExitCoder handles errors implementing ExitCoder by printing their - message and calling OsExiter with the given exit code. - - If the given error instead implements MultiError, each error will be checked - for the ExitCoder interface, and OsExiter will be called with the last exit - code found, or exit code 1 if no ExitCoder is found. - - This function is the default error-handling behavior for an App. - -func ShowAppHelp(cCtx *Context) error - ShowAppHelp is an action that displays the help. - -func ShowAppHelpAndExit(c *Context, exitCode int) - ShowAppHelpAndExit - Prints the list of subcommands for the app and exits - with exit code. - -func ShowCommandCompletions(ctx *Context, command string) - ShowCommandCompletions prints the custom completions for a given command - -func ShowCommandHelp(ctx *Context, command string) error - ShowCommandHelp prints help for the given command - -func ShowCommandHelpAndExit(c *Context, command string, code int) - ShowCommandHelpAndExit - exits with code after showing help - -func ShowCompletions(cCtx *Context) - ShowCompletions prints the lists of commands within a given context - -func ShowSubcommandHelp(cCtx *Context) error - ShowSubcommandHelp prints help for the given subcommand - -func ShowSubcommandHelpAndExit(c *Context, exitCode int) - ShowSubcommandHelpAndExit - Prints help for the given subcommand and exits - with exit code. - -func ShowVersion(cCtx *Context) - ShowVersion prints the version number of the App - - -TYPES - -type ActionFunc func(*Context) error - ActionFunc is the action to execute when no subcommands are specified - -type ActionableFlag interface { - Flag - RunAction(*Context) error -} - ActionableFlag is an interface that wraps Flag interface and RunAction - operation. - -type AfterFunc func(*Context) error - AfterFunc is an action to execute after any subcommands are run, but after - the subcommand has finished it is run even if Action() panics - -type App struct { - // The name of the program. Defaults to path.Base(os.Args[0]) - Name string - // Full name of command for help, defaults to Name - HelpName string - // Description of the program. - Usage string - // Text to override the USAGE section of help - UsageText string - // Whether this command supports arguments - Args bool - // Description of the program argument format. - ArgsUsage string - // Version of the program - Version string - // Description of the program - Description string - // DefaultCommand is the (optional) name of a command - // to run if no command names are passed as CLI arguments. - DefaultCommand string - // List of commands to execute - Commands []*Command - // List of flags to parse - Flags []Flag - // Boolean to enable bash completion commands - EnableBashCompletion bool - // Boolean to hide built-in help command and help flag - HideHelp bool - // Boolean to hide built-in help command but keep help flag. - // Ignored if HideHelp is true. - HideHelpCommand bool - // Boolean to hide built-in version flag and the VERSION section of help - HideVersion bool - - // An action to execute when the shell completion flag is set - BashComplete BashCompleteFunc - // An action to execute before any subcommands are run, but after the context is ready - // If a non-nil error is returned, no subcommands are run - Before BeforeFunc - // An action to execute after any subcommands are run, but after the subcommand has finished - // It is run even if Action() panics - After AfterFunc - // The action to execute when no subcommands are specified - Action ActionFunc - // Execute this function if the proper command cannot be found - CommandNotFound CommandNotFoundFunc - // Execute this function if a usage error occurs - OnUsageError OnUsageErrorFunc - // Execute this function when an invalid flag is accessed from the context - InvalidFlagAccessHandler InvalidFlagAccessFunc - // Compilation date - Compiled time.Time - // List of all authors who contributed - Authors []*Author - // Copyright of the binary if any - Copyright string - // Reader reader to write input to (useful for tests) - Reader io.Reader - // Writer writer to write output to - Writer io.Writer - // ErrWriter writes error output - ErrWriter io.Writer - // ExitErrHandler processes any error encountered while running an App before - // it is returned to the caller. If no function is provided, HandleExitCoder - // is used as the default behavior. - ExitErrHandler ExitErrHandlerFunc - // Other custom info - Metadata map[string]interface{} - // Carries a function which returns app specific info. - ExtraInfo func() map[string]string - // CustomAppHelpTemplate the text template for app help topic. - // cli.go uses text/template to render templates. You can - // render custom help text by setting this variable. - CustomAppHelpTemplate string - // SliceFlagSeparator is used to customize the separator for SliceFlag, the default is "," - SliceFlagSeparator string - // DisableSliceFlagSeparator is used to disable SliceFlagSeparator, the default is false - DisableSliceFlagSeparator bool - // Boolean to enable short-option handling so user can combine several - // single-character bool arguments into one - // i.e. foobar -o -v -> foobar -ov - UseShortOptionHandling bool - // Enable suggestions for commands and flags - Suggest bool - // Allows global flags set by libraries which use flag.XXXVar(...) directly - // to be parsed through this library - AllowExtFlags bool - // Treat all flags as normal arguments if true - SkipFlagParsing bool - - // Has unexported fields. -} - App is the main structure of a cli application. It is recommended that an - app be created with the cli.NewApp() function - -func NewApp() *App - NewApp creates a new cli Application with some reasonable defaults for Name, - Usage, Version and Action. - -func (a *App) Command(name string) *Command - Command returns the named command on App. Returns nil if the command does - not exist - -func (a *App) Run(arguments []string) (err error) - Run is the entry point to the cli app. Parses the arguments slice and routes - to the proper flag/args combination - -func (a *App) RunAndExitOnError() - RunAndExitOnError calls .Run() and exits non-zero if an error was returned - - Deprecated: instead you should return an error that fulfills cli.ExitCoder - to cli.App.Run. This will cause the application to exit with the given error - code in the cli.ExitCoder - -func (a *App) RunAsSubcommand(ctx *Context) (err error) - RunAsSubcommand is for legacy/compatibility purposes only. New code should - only use App.RunContext. This function is slated to be removed in v3. - -func (a *App) RunContext(ctx context.Context, arguments []string) (err error) - RunContext is like Run except it takes a Context that will be passed to - its commands and sub-commands. Through this, you can propagate timeouts and - cancellation requests - -func (a *App) Setup() - Setup runs initialization code to ensure all data structures are ready - for `Run` or inspection prior to `Run`. It is internally called by `Run`, - but will return early if setup has already happened. - -func (a *App) ToFishCompletion() (string, error) - ToFishCompletion creates a fish completion string for the `*App` The - function errors if either parsing or writing of the string fails. - -func (a *App) ToMan() (string, error) - ToMan creates a man page string for the `*App` The function errors if either - parsing or writing of the string fails. - -func (a *App) ToManWithSection(sectionNumber int) (string, error) - ToMan creates a man page string with section number for the `*App` The - function errors if either parsing or writing of the string fails. - -func (a *App) ToMarkdown() (string, error) - ToMarkdown creates a markdown string for the `*App` The function errors if - either parsing or writing of the string fails. - -func (a *App) VisibleCategories() []CommandCategory - VisibleCategories returns a slice of categories and commands that are - Hidden=false - -func (a *App) VisibleCommands() []*Command - VisibleCommands returns a slice of the Commands with Hidden=false - -func (a *App) VisibleFlagCategories() []VisibleFlagCategory - VisibleFlagCategories returns a slice containing all the categories with the - flags they contain - -func (a *App) VisibleFlags() []Flag - VisibleFlags returns a slice of the Flags with Hidden=false - -type Args interface { - // Get returns the nth argument, or else a blank string - Get(n int) string - // First returns the first argument, or else a blank string - First() string - // Tail returns the rest of the arguments (not the first one) - // or else an empty string slice - Tail() []string - // Len returns the length of the wrapped slice - Len() int - // Present checks if there are any arguments present - Present() bool - // Slice returns a copy of the internal slice - Slice() []string -} - -type Author struct { - Name string // The Authors name - Email string // The Authors email -} - Author represents someone who has contributed to a cli project. - -func (a *Author) String() string - String makes Author comply to the Stringer interface, to allow an easy print - in the templating process - -type BashCompleteFunc func(*Context) - BashCompleteFunc is an action to execute when the shell completion flag is - set - -type BeforeFunc func(*Context) error - BeforeFunc is an action to execute before any subcommands are run, but after - the context is ready if a non-nil error is returned, no subcommands are run - -type BoolFlag struct { - Name string - - Category string - DefaultText string - FilePath string - Usage string - - Required bool - Hidden bool - HasBeenSet bool - - Value bool - Destination *bool - - Aliases []string - EnvVars []string - - Count *int - - DisableDefaultText bool - - Action func(*Context, bool) error - // Has unexported fields. -} - BoolFlag is a flag with type bool - -func (f *BoolFlag) Apply(set *flag.FlagSet) error - Apply populates the flag given the flag set and environment - -func (f *BoolFlag) Get(ctx *Context) bool - Get returns the flag’s value in the given Context. - -func (f *BoolFlag) GetCategory() string - GetCategory returns the category for the flag - -func (f *BoolFlag) GetDefaultText() string - GetDefaultText returns the default text for this flag - -func (f *BoolFlag) GetEnvVars() []string - GetEnvVars returns the env vars for this flag - -func (f *BoolFlag) GetUsage() string - GetUsage returns the usage string for the flag - -func (f *BoolFlag) GetValue() string - GetValue returns the flags value as string representation and an empty - string if the flag takes no value at all. - -func (f *BoolFlag) IsRequired() bool - IsRequired returns whether or not the flag is required - -func (f *BoolFlag) IsSet() bool - IsSet returns whether or not the flag has been set through env or file - -func (f *BoolFlag) IsVisible() bool - IsVisible returns true if the flag is not hidden, otherwise false - -func (f *BoolFlag) Names() []string - Names returns the names of the flag - -func (f *BoolFlag) RunAction(c *Context) error - RunAction executes flag action if set - -func (f *BoolFlag) String() string - String returns a readable representation of this value (for usage defaults) - -func (f *BoolFlag) TakesValue() bool - TakesValue returns true of the flag takes a value, otherwise false - -type CategorizableFlag interface { - VisibleFlag - - GetCategory() string -} - CategorizableFlag is an interface that allows us to potentially use a flag - in a categorized representation. - -type Command struct { - // The name of the command - Name string - // A list of aliases for the command - Aliases []string - // A short description of the usage of this command - Usage string - // Custom text to show on USAGE section of help - UsageText string - // A longer explanation of how the command works - Description string - // Whether this command supports arguments - Args bool - // A short description of the arguments of this command - ArgsUsage string - // The category the command is part of - Category string - // The function to call when checking for bash command completions - BashComplete BashCompleteFunc - // An action to execute before any sub-subcommands are run, but after the context is ready - // If a non-nil error is returned, no sub-subcommands are run - Before BeforeFunc - // An action to execute after any subcommands are run, but after the subcommand has finished - // It is run even if Action() panics - After AfterFunc - // The function to call when this command is invoked - Action ActionFunc - // Execute this function if a usage error occurs. - OnUsageError OnUsageErrorFunc - // List of child commands - Subcommands []*Command - // List of flags to parse - Flags []Flag - - // Treat all flags as normal arguments if true - SkipFlagParsing bool - // Boolean to hide built-in help command and help flag - HideHelp bool - // Boolean to hide built-in help command but keep help flag - // Ignored if HideHelp is true. - HideHelpCommand bool - // Boolean to hide this command from help or completion - Hidden bool - // Boolean to enable short-option handling so user can combine several - // single-character bool arguments into one - // i.e. foobar -o -v -> foobar -ov - UseShortOptionHandling bool - - // Full name of command for help, defaults to full command name, including parent commands. - HelpName string - - // CustomHelpTemplate the text template for the command help topic. - // cli.go uses text/template to render templates. You can - // render custom help text by setting this variable. - CustomHelpTemplate string - - // Has unexported fields. -} - Command is a subcommand for a cli.App. - -func (cmd *Command) Command(name string) *Command - -func (c *Command) FullName() string - FullName returns the full name of the command. For subcommands this ensures - that parent commands are part of the command path - -func (c *Command) HasName(name string) bool - HasName returns true if Command.Name matches given name - -func (c *Command) Names() []string - Names returns the names including short names and aliases. - -func (c *Command) Run(cCtx *Context, arguments ...string) (err error) - -func (c *Command) VisibleCategories() []CommandCategory - VisibleCategories returns a slice of categories and commands that are - Hidden=false - -func (c *Command) VisibleCommands() []*Command - VisibleCommands returns a slice of the Commands with Hidden=false - -func (c *Command) VisibleFlagCategories() []VisibleFlagCategory - VisibleFlagCategories returns a slice containing all the visible flag - categories with the flags they contain - -func (c *Command) VisibleFlags() []Flag - VisibleFlags returns a slice of the Flags with Hidden=false - -type CommandCategories interface { - // AddCommand adds a command to a category, creating a new category if necessary. - AddCommand(category string, command *Command) - // Categories returns a slice of categories sorted by name - Categories() []CommandCategory -} - CommandCategories interface allows for category manipulation - -type CommandCategory interface { - // Name returns the category name string - Name() string - // VisibleCommands returns a slice of the Commands with Hidden=false - VisibleCommands() []*Command -} - CommandCategory is a category containing commands. - -type CommandNotFoundFunc func(*Context, string) - CommandNotFoundFunc is executed if the proper command cannot be found - -type Commands []*Command - -type CommandsByName []*Command - -func (c CommandsByName) Len() int - -func (c CommandsByName) Less(i, j int) bool - -func (c CommandsByName) Swap(i, j int) - -type Context struct { - context.Context - App *App - Command *Command - - // Has unexported fields. -} - Context is a type that is passed through to each Handler action in a cli - application. Context can be used to retrieve context-specific args and - parsed command-line options. - -func NewContext(app *App, set *flag.FlagSet, parentCtx *Context) *Context - NewContext creates a new context. For use in when invoking an App or Command - action. - -func (cCtx *Context) Args() Args - Args returns the command line arguments associated with the context. - -func (cCtx *Context) Bool(name string) bool - Bool looks up the value of a local BoolFlag, returns false if not found - -func (cCtx *Context) Count(name string) int - Count returns the num of occurrences of this flag - -func (cCtx *Context) Duration(name string) time.Duration - Duration looks up the value of a local DurationFlag, returns 0 if not found - -func (cCtx *Context) FlagNames() []string - FlagNames returns a slice of flag names used by the this context and all of - its parent contexts. - -func (cCtx *Context) Float64(name string) float64 - Float64 looks up the value of a local Float64Flag, returns 0 if not found - -func (cCtx *Context) Float64Slice(name string) []float64 - Float64Slice looks up the value of a local Float64SliceFlag, returns nil if - not found - -func (cCtx *Context) Generic(name string) interface{} - Generic looks up the value of a local GenericFlag, returns nil if not found - -func (cCtx *Context) Int(name string) int - Int looks up the value of a local IntFlag, returns 0 if not found - -func (cCtx *Context) Int64(name string) int64 - Int64 looks up the value of a local Int64Flag, returns 0 if not found - -func (cCtx *Context) Int64Slice(name string) []int64 - Int64Slice looks up the value of a local Int64SliceFlag, returns nil if not - found - -func (cCtx *Context) IntSlice(name string) []int - IntSlice looks up the value of a local IntSliceFlag, returns nil if not - found - -func (cCtx *Context) IsSet(name string) bool - IsSet determines if the flag was actually set - -func (cCtx *Context) Lineage() []*Context - Lineage returns *this* context and all of its ancestor contexts in order - from child to parent - -func (cCtx *Context) LocalFlagNames() []string - LocalFlagNames returns a slice of flag names used in this context. - -func (cCtx *Context) NArg() int - NArg returns the number of the command line arguments. - -func (cCtx *Context) NumFlags() int - NumFlags returns the number of flags set - -func (cCtx *Context) Path(name string) string - Path looks up the value of a local PathFlag, returns "" if not found - -func (cCtx *Context) Set(name, value string) error - Set sets a context flag to a value. - -func (cCtx *Context) String(name string) string - String looks up the value of a local StringFlag, returns "" if not found - -func (cCtx *Context) StringSlice(name string) []string - StringSlice looks up the value of a local StringSliceFlag, returns nil if - not found - -func (cCtx *Context) Timestamp(name string) *time.Time - Timestamp gets the timestamp from a flag name - -func (cCtx *Context) Uint(name string) uint - Uint looks up the value of a local UintFlag, returns 0 if not found - -func (cCtx *Context) Uint64(name string) uint64 - Uint64 looks up the value of a local Uint64Flag, returns 0 if not found - -func (cCtx *Context) Uint64Slice(name string) []uint64 - Uint64Slice looks up the value of a local Uint64SliceFlag, returns nil if - not found - -func (cCtx *Context) UintSlice(name string) []uint - UintSlice looks up the value of a local UintSliceFlag, returns nil if not - found - -func (cCtx *Context) Value(name string) interface{} - Value returns the value of the flag corresponding to `name` - -type Countable interface { - Count() int -} - Countable is an interface to enable detection of flag values which support - repetitive flags - -type DocGenerationFlag interface { - Flag - - // TakesValue returns true if the flag takes a value, otherwise false - TakesValue() bool - - // GetUsage returns the usage string for the flag - GetUsage() string - - // GetValue returns the flags value as string representation and an empty - // string if the flag takes no value at all. - GetValue() string - - // GetDefaultText returns the default text for this flag - GetDefaultText() string - - // GetEnvVars returns the env vars for this flag - GetEnvVars() []string -} - DocGenerationFlag is an interface that allows documentation generation for - the flag - -type DocGenerationSliceFlag interface { - DocGenerationFlag - - // IsSliceFlag returns true for flags that can be given multiple times. - IsSliceFlag() bool -} - DocGenerationSliceFlag extends DocGenerationFlag for slice-based flags. - -type DurationFlag struct { - Name string - - Category string - DefaultText string - FilePath string - Usage string - - Required bool - Hidden bool - HasBeenSet bool - - Value time.Duration - Destination *time.Duration - - Aliases []string - EnvVars []string - - Action func(*Context, time.Duration) error - // Has unexported fields. -} - DurationFlag is a flag with type time.Duration - -func (f *DurationFlag) Apply(set *flag.FlagSet) error - Apply populates the flag given the flag set and environment - -func (f *DurationFlag) Get(ctx *Context) time.Duration - Get returns the flag’s value in the given Context. - -func (f *DurationFlag) GetCategory() string - GetCategory returns the category for the flag - -func (f *DurationFlag) GetDefaultText() string - GetDefaultText returns the default text for this flag - -func (f *DurationFlag) GetEnvVars() []string - GetEnvVars returns the env vars for this flag - -func (f *DurationFlag) GetUsage() string - GetUsage returns the usage string for the flag - -func (f *DurationFlag) GetValue() string - GetValue returns the flags value as string representation and an empty - string if the flag takes no value at all. - -func (f *DurationFlag) IsRequired() bool - IsRequired returns whether or not the flag is required - -func (f *DurationFlag) IsSet() bool - IsSet returns whether or not the flag has been set through env or file - -func (f *DurationFlag) IsVisible() bool - IsVisible returns true if the flag is not hidden, otherwise false - -func (f *DurationFlag) Names() []string - Names returns the names of the flag - -func (f *DurationFlag) RunAction(c *Context) error - RunAction executes flag action if set - -func (f *DurationFlag) String() string - String returns a readable representation of this value (for usage defaults) - -func (f *DurationFlag) TakesValue() bool - TakesValue returns true of the flag takes a value, otherwise false - -type ErrorFormatter interface { - Format(s fmt.State, verb rune) -} - ErrorFormatter is the interface that will suitably format the error output - -type ExitCoder interface { - error - ExitCode() int -} - ExitCoder is the interface checked by `App` and `Command` for a custom exit - code - -func Exit(message interface{}, exitCode int) ExitCoder - Exit wraps a message and exit code into an error, which by default is - handled with a call to os.Exit during default error handling. - - This is the simplest way to trigger a non-zero exit code for an App - without having to call os.Exit manually. During testing, this behavior - can be avoided by overriding the ExitErrHandler function on an App or the - package-global OsExiter function. - -func NewExitError(message interface{}, exitCode int) ExitCoder - NewExitError calls Exit to create a new ExitCoder. - - Deprecated: This function is a duplicate of Exit and will eventually be - removed. - -type ExitErrHandlerFunc func(cCtx *Context, err error) - ExitErrHandlerFunc is executed if provided in order to handle exitError - values returned by Actions and Before/After functions. - -type Flag interface { - fmt.Stringer - // Apply Flag settings to the given flag set - Apply(*flag.FlagSet) error - Names() []string - IsSet() bool -} - Flag is a common interface related to parsing flags in cli. For more - advanced flag parsing techniques, it is recommended that this interface be - implemented. - -var BashCompletionFlag Flag = &BoolFlag{ - Name: "generate-bash-completion", - Hidden: true, -} - BashCompletionFlag enables bash-completion for all commands and subcommands - -var HelpFlag Flag = &BoolFlag{ - Name: "help", - Aliases: []string{"h"}, - Usage: "show help", - DisableDefaultText: true, -} - HelpFlag prints the help for all commands and subcommands. Set to nil to - disable the flag. The subcommand will still be added unless HideHelp or - HideHelpCommand is set to true. - -var VersionFlag Flag = &BoolFlag{ - Name: "version", - Aliases: []string{"v"}, - Usage: "print the version", - DisableDefaultText: true, -} - VersionFlag prints the version for the application - -type FlagCategories interface { - // AddFlags adds a flag to a category, creating a new category if necessary. - AddFlag(category string, fl Flag) - // VisibleCategories returns a slice of visible flag categories sorted by name - VisibleCategories() []VisibleFlagCategory -} - FlagCategories interface allows for category manipulation - -type FlagEnvHintFunc func(envVars []string, str string) string - FlagEnvHintFunc is used by the default FlagStringFunc to annotate flag help - with the environment variable details. - -var FlagEnvHinter FlagEnvHintFunc = withEnvHint - FlagEnvHinter annotates flag help message with the environment variable - details. This is used by the default FlagStringer. - -type FlagFileHintFunc func(filePath, str string) string - FlagFileHintFunc is used by the default FlagStringFunc to annotate flag help - with the file path details. - -var FlagFileHinter FlagFileHintFunc = withFileHint - FlagFileHinter annotates flag help message with the environment variable - details. This is used by the default FlagStringer. - -type FlagNamePrefixFunc func(fullName []string, placeholder string) string - FlagNamePrefixFunc is used by the default FlagStringFunc to create prefix - text for a flag's full name. - -var FlagNamePrefixer FlagNamePrefixFunc = prefixedNames - FlagNamePrefixer converts a full flag name and its placeholder into the help - message flag prefix. This is used by the default FlagStringer. - -type FlagStringFunc func(Flag) string - FlagStringFunc is used by the help generation to display a flag, which is - expected to be a single line. - -var FlagStringer FlagStringFunc = stringifyFlag - FlagStringer converts a flag definition to a string. This is used by help to - display a flag. - -type FlagsByName []Flag - FlagsByName is a slice of Flag. - -func (f FlagsByName) Len() int - -func (f FlagsByName) Less(i, j int) bool - -func (f FlagsByName) Swap(i, j int) - -type Float64Flag struct { - Name string - - Category string - DefaultText string - FilePath string - Usage string - - Required bool - Hidden bool - HasBeenSet bool - - Value float64 - Destination *float64 - - Aliases []string - EnvVars []string - - Action func(*Context, float64) error - // Has unexported fields. -} - Float64Flag is a flag with type float64 - -func (f *Float64Flag) Apply(set *flag.FlagSet) error - Apply populates the flag given the flag set and environment - -func (f *Float64Flag) Get(ctx *Context) float64 - Get returns the flag’s value in the given Context. - -func (f *Float64Flag) GetCategory() string - GetCategory returns the category for the flag - -func (f *Float64Flag) GetDefaultText() string - GetDefaultText returns the default text for this flag - -func (f *Float64Flag) GetEnvVars() []string - GetEnvVars returns the env vars for this flag - -func (f *Float64Flag) GetUsage() string - GetUsage returns the usage string for the flag - -func (f *Float64Flag) GetValue() string - GetValue returns the flags value as string representation and an empty - string if the flag takes no value at all. - -func (f *Float64Flag) IsRequired() bool - IsRequired returns whether or not the flag is required - -func (f *Float64Flag) IsSet() bool - IsSet returns whether or not the flag has been set through env or file - -func (f *Float64Flag) IsVisible() bool - IsVisible returns true if the flag is not hidden, otherwise false - -func (f *Float64Flag) Names() []string - Names returns the names of the flag - -func (f *Float64Flag) RunAction(c *Context) error - RunAction executes flag action if set - -func (f *Float64Flag) String() string - String returns a readable representation of this value (for usage defaults) - -func (f *Float64Flag) TakesValue() bool - TakesValue returns true of the flag takes a value, otherwise false - -type Float64Slice struct { - // Has unexported fields. -} - Float64Slice wraps []float64 to satisfy flag.Value - -func NewFloat64Slice(defaults ...float64) *Float64Slice - NewFloat64Slice makes a *Float64Slice with default values - -func (f *Float64Slice) Get() interface{} - Get returns the slice of float64s set by this flag - -func (f *Float64Slice) Serialize() string - Serialize allows Float64Slice to fulfill Serializer - -func (f *Float64Slice) Set(value string) error - Set parses the value into a float64 and appends it to the list of values - -func (f *Float64Slice) String() string - String returns a readable representation of this value (for usage defaults) - -func (f *Float64Slice) Value() []float64 - Value returns the slice of float64s set by this flag - -func (f *Float64Slice) WithSeparatorSpec(spec separatorSpec) - -type Float64SliceFlag struct { - Name string - - Category string - DefaultText string - FilePath string - Usage string - - Required bool - Hidden bool - HasBeenSet bool - - Value *Float64Slice - Destination *Float64Slice - - Aliases []string - EnvVars []string - - Action func(*Context, []float64) error - // Has unexported fields. -} - Float64SliceFlag is a flag with type *Float64Slice - -func (f *Float64SliceFlag) Apply(set *flag.FlagSet) error - Apply populates the flag given the flag set and environment - -func (f *Float64SliceFlag) Get(ctx *Context) []float64 - Get returns the flag’s value in the given Context. - -func (f *Float64SliceFlag) GetCategory() string - GetCategory returns the category for the flag - -func (f *Float64SliceFlag) GetDefaultText() string - GetDefaultText returns the default text for this flag - -func (f *Float64SliceFlag) GetDestination() []float64 - -func (f *Float64SliceFlag) GetEnvVars() []string - GetEnvVars returns the env vars for this flag - -func (f *Float64SliceFlag) GetUsage() string - GetUsage returns the usage string for the flag - -func (f *Float64SliceFlag) GetValue() string - GetValue returns the flags value as string representation and an empty - string if the flag takes no value at all. - -func (f *Float64SliceFlag) IsRequired() bool - IsRequired returns whether or not the flag is required - -func (f *Float64SliceFlag) IsSet() bool - IsSet returns whether or not the flag has been set through env or file - -func (f *Float64SliceFlag) IsSliceFlag() bool - IsSliceFlag implements DocGenerationSliceFlag. - -func (f *Float64SliceFlag) IsVisible() bool - IsVisible returns true if the flag is not hidden, otherwise false - -func (f *Float64SliceFlag) Names() []string - Names returns the names of the flag - -func (f *Float64SliceFlag) RunAction(c *Context) error - RunAction executes flag action if set - -func (f *Float64SliceFlag) SetDestination(slice []float64) - -func (f *Float64SliceFlag) SetValue(slice []float64) - -func (f *Float64SliceFlag) String() string - String returns a readable representation of this value (for usage defaults) - -func (f *Float64SliceFlag) TakesValue() bool - TakesValue returns true if the flag takes a value, otherwise false - -func (f *Float64SliceFlag) WithSeparatorSpec(spec separatorSpec) - -type Generic interface { - Set(value string) error - String() string -} - Generic is a generic parseable type identified by a specific flag - -type GenericFlag struct { - Name string - - Category string - DefaultText string - FilePath string - Usage string - - Required bool - Hidden bool - HasBeenSet bool - - Value Generic - Destination Generic - - Aliases []string - EnvVars []string - - TakesFile bool - - Action func(*Context, interface{}) error - // Has unexported fields. -} - GenericFlag is a flag with type Generic - -func (f *GenericFlag) Apply(set *flag.FlagSet) error - Apply takes the flagset and calls Set on the generic flag with the value - provided by the user for parsing by the flag - -func (f *GenericFlag) Get(ctx *Context) interface{} - Get returns the flag’s value in the given Context. - -func (f *GenericFlag) GetCategory() string - GetCategory returns the category for the flag - -func (f *GenericFlag) GetDefaultText() string - GetDefaultText returns the default text for this flag - -func (f *GenericFlag) GetEnvVars() []string - GetEnvVars returns the env vars for this flag - -func (f *GenericFlag) GetUsage() string - GetUsage returns the usage string for the flag - -func (f *GenericFlag) GetValue() string - GetValue returns the flags value as string representation and an empty - string if the flag takes no value at all. - -func (f *GenericFlag) IsRequired() bool - IsRequired returns whether or not the flag is required - -func (f *GenericFlag) IsSet() bool - IsSet returns whether or not the flag has been set through env or file - -func (f *GenericFlag) IsVisible() bool - IsVisible returns true if the flag is not hidden, otherwise false - -func (f *GenericFlag) Names() []string - Names returns the names of the flag - -func (f *GenericFlag) RunAction(c *Context) error - RunAction executes flag action if set - -func (f *GenericFlag) String() string - String returns a readable representation of this value (for usage defaults) - -func (f *GenericFlag) TakesValue() bool - TakesValue returns true of the flag takes a value, otherwise false - -type Int64Flag struct { - Name string - - Category string - DefaultText string - FilePath string - Usage string - - Required bool - Hidden bool - HasBeenSet bool - - Value int64 - Destination *int64 - - Aliases []string - EnvVars []string - - Base int - - Action func(*Context, int64) error - // Has unexported fields. -} - Int64Flag is a flag with type int64 - -func (f *Int64Flag) Apply(set *flag.FlagSet) error - Apply populates the flag given the flag set and environment - -func (f *Int64Flag) Get(ctx *Context) int64 - Get returns the flag’s value in the given Context. - -func (f *Int64Flag) GetCategory() string - GetCategory returns the category for the flag - -func (f *Int64Flag) GetDefaultText() string - GetDefaultText returns the default text for this flag - -func (f *Int64Flag) GetEnvVars() []string - GetEnvVars returns the env vars for this flag - -func (f *Int64Flag) GetUsage() string - GetUsage returns the usage string for the flag - -func (f *Int64Flag) GetValue() string - GetValue returns the flags value as string representation and an empty - string if the flag takes no value at all. - -func (f *Int64Flag) IsRequired() bool - IsRequired returns whether or not the flag is required - -func (f *Int64Flag) IsSet() bool - IsSet returns whether or not the flag has been set through env or file - -func (f *Int64Flag) IsVisible() bool - IsVisible returns true if the flag is not hidden, otherwise false - -func (f *Int64Flag) Names() []string - Names returns the names of the flag - -func (f *Int64Flag) RunAction(c *Context) error - RunAction executes flag action if set - -func (f *Int64Flag) String() string - String returns a readable representation of this value (for usage defaults) - -func (f *Int64Flag) TakesValue() bool - TakesValue returns true of the flag takes a value, otherwise false - -type Int64Slice struct { - // Has unexported fields. -} - Int64Slice wraps []int64 to satisfy flag.Value - -func NewInt64Slice(defaults ...int64) *Int64Slice - NewInt64Slice makes an *Int64Slice with default values - -func (i *Int64Slice) Get() interface{} - Get returns the slice of ints set by this flag - -func (i *Int64Slice) Serialize() string - Serialize allows Int64Slice to fulfill Serializer - -func (i *Int64Slice) Set(value string) error - Set parses the value into an integer and appends it to the list of values - -func (i *Int64Slice) String() string - String returns a readable representation of this value (for usage defaults) - -func (i *Int64Slice) Value() []int64 - Value returns the slice of ints set by this flag - -func (i *Int64Slice) WithSeparatorSpec(spec separatorSpec) - -type Int64SliceFlag struct { - Name string - - Category string - DefaultText string - FilePath string - Usage string - - Required bool - Hidden bool - HasBeenSet bool - - Value *Int64Slice - Destination *Int64Slice - - Aliases []string - EnvVars []string - - Action func(*Context, []int64) error - // Has unexported fields. -} - Int64SliceFlag is a flag with type *Int64Slice - -func (f *Int64SliceFlag) Apply(set *flag.FlagSet) error - Apply populates the flag given the flag set and environment - -func (f *Int64SliceFlag) Get(ctx *Context) []int64 - Get returns the flag’s value in the given Context. - -func (f *Int64SliceFlag) GetCategory() string - GetCategory returns the category for the flag - -func (f *Int64SliceFlag) GetDefaultText() string - GetDefaultText returns the default text for this flag - -func (f *Int64SliceFlag) GetDestination() []int64 - -func (f *Int64SliceFlag) GetEnvVars() []string - GetEnvVars returns the env vars for this flag - -func (f *Int64SliceFlag) GetUsage() string - GetUsage returns the usage string for the flag - -func (f *Int64SliceFlag) GetValue() string - GetValue returns the flags value as string representation and an empty - string if the flag takes no value at all. - -func (f *Int64SliceFlag) IsRequired() bool - IsRequired returns whether or not the flag is required - -func (f *Int64SliceFlag) IsSet() bool - IsSet returns whether or not the flag has been set through env or file - -func (f *Int64SliceFlag) IsSliceFlag() bool - IsSliceFlag implements DocGenerationSliceFlag. - -func (f *Int64SliceFlag) IsVisible() bool - IsVisible returns true if the flag is not hidden, otherwise false - -func (f *Int64SliceFlag) Names() []string - Names returns the names of the flag - -func (f *Int64SliceFlag) RunAction(c *Context) error - RunAction executes flag action if set - -func (f *Int64SliceFlag) SetDestination(slice []int64) - -func (f *Int64SliceFlag) SetValue(slice []int64) - -func (f *Int64SliceFlag) String() string - String returns a readable representation of this value (for usage defaults) - -func (f *Int64SliceFlag) TakesValue() bool - TakesValue returns true of the flag takes a value, otherwise false - -func (f *Int64SliceFlag) WithSeparatorSpec(spec separatorSpec) - -type IntFlag struct { - Name string - - Category string - DefaultText string - FilePath string - Usage string - - Required bool - Hidden bool - HasBeenSet bool - - Value int - Destination *int - - Aliases []string - EnvVars []string - - Base int - - Action func(*Context, int) error - // Has unexported fields. -} - IntFlag is a flag with type int - -func (f *IntFlag) Apply(set *flag.FlagSet) error - Apply populates the flag given the flag set and environment - -func (f *IntFlag) Get(ctx *Context) int - Get returns the flag’s value in the given Context. - -func (f *IntFlag) GetCategory() string - GetCategory returns the category for the flag - -func (f *IntFlag) GetDefaultText() string - GetDefaultText returns the default text for this flag - -func (f *IntFlag) GetEnvVars() []string - GetEnvVars returns the env vars for this flag - -func (f *IntFlag) GetUsage() string - GetUsage returns the usage string for the flag - -func (f *IntFlag) GetValue() string - GetValue returns the flags value as string representation and an empty - string if the flag takes no value at all. - -func (f *IntFlag) IsRequired() bool - IsRequired returns whether or not the flag is required - -func (f *IntFlag) IsSet() bool - IsSet returns whether or not the flag has been set through env or file - -func (f *IntFlag) IsVisible() bool - IsVisible returns true if the flag is not hidden, otherwise false - -func (f *IntFlag) Names() []string - Names returns the names of the flag - -func (f *IntFlag) RunAction(c *Context) error - RunAction executes flag action if set - -func (f *IntFlag) String() string - String returns a readable representation of this value (for usage defaults) - -func (f *IntFlag) TakesValue() bool - TakesValue returns true of the flag takes a value, otherwise false - -type IntSlice struct { - // Has unexported fields. -} - IntSlice wraps []int to satisfy flag.Value - -func NewIntSlice(defaults ...int) *IntSlice - NewIntSlice makes an *IntSlice with default values - -func (i *IntSlice) Get() interface{} - Get returns the slice of ints set by this flag - -func (i *IntSlice) Serialize() string - Serialize allows IntSlice to fulfill Serializer - -func (i *IntSlice) Set(value string) error - Set parses the value into an integer and appends it to the list of values - -func (i *IntSlice) SetInt(value int) - TODO: Consistently have specific Set function for Int64 and Float64 ? SetInt - directly adds an integer to the list of values - -func (i *IntSlice) String() string - String returns a readable representation of this value (for usage defaults) - -func (i *IntSlice) Value() []int - Value returns the slice of ints set by this flag - -func (i *IntSlice) WithSeparatorSpec(spec separatorSpec) - -type IntSliceFlag struct { - Name string - - Category string - DefaultText string - FilePath string - Usage string - - Required bool - Hidden bool - HasBeenSet bool - - Value *IntSlice - Destination *IntSlice - - Aliases []string - EnvVars []string - - Action func(*Context, []int) error - // Has unexported fields. -} - IntSliceFlag is a flag with type *IntSlice - -func (f *IntSliceFlag) Apply(set *flag.FlagSet) error - Apply populates the flag given the flag set and environment - -func (f *IntSliceFlag) Get(ctx *Context) []int - Get returns the flag’s value in the given Context. - -func (f *IntSliceFlag) GetCategory() string - GetCategory returns the category for the flag - -func (f *IntSliceFlag) GetDefaultText() string - GetDefaultText returns the default text for this flag - -func (f *IntSliceFlag) GetDestination() []int - -func (f *IntSliceFlag) GetEnvVars() []string - GetEnvVars returns the env vars for this flag - -func (f *IntSliceFlag) GetUsage() string - GetUsage returns the usage string for the flag - -func (f *IntSliceFlag) GetValue() string - GetValue returns the flags value as string representation and an empty - string if the flag takes no value at all. - -func (f *IntSliceFlag) IsRequired() bool - IsRequired returns whether or not the flag is required - -func (f *IntSliceFlag) IsSet() bool - IsSet returns whether or not the flag has been set through env or file - -func (f *IntSliceFlag) IsSliceFlag() bool - IsSliceFlag implements DocGenerationSliceFlag. - -func (f *IntSliceFlag) IsVisible() bool - IsVisible returns true if the flag is not hidden, otherwise false - -func (f *IntSliceFlag) Names() []string - Names returns the names of the flag - -func (f *IntSliceFlag) RunAction(c *Context) error - RunAction executes flag action if set - -func (f *IntSliceFlag) SetDestination(slice []int) - -func (f *IntSliceFlag) SetValue(slice []int) - -func (f *IntSliceFlag) String() string - String returns a readable representation of this value (for usage defaults) - -func (f *IntSliceFlag) TakesValue() bool - TakesValue returns true of the flag takes a value, otherwise false - -func (f *IntSliceFlag) WithSeparatorSpec(spec separatorSpec) - -type InvalidFlagAccessFunc func(*Context, string) - InvalidFlagAccessFunc is executed when an invalid flag is accessed from the - context. - -type MultiError interface { - error - Errors() []error -} - MultiError is an error that wraps multiple errors. - -type MultiFloat64Flag = SliceFlag[*Float64SliceFlag, []float64, float64] - MultiFloat64Flag extends Float64SliceFlag with support for using slices - directly, as Value and/or Destination. See also SliceFlag. - -type MultiInt64Flag = SliceFlag[*Int64SliceFlag, []int64, int64] - MultiInt64Flag extends Int64SliceFlag with support for using slices - directly, as Value and/or Destination. See also SliceFlag. - -type MultiIntFlag = SliceFlag[*IntSliceFlag, []int, int] - MultiIntFlag extends IntSliceFlag with support for using slices directly, - as Value and/or Destination. See also SliceFlag. - -type MultiStringFlag = SliceFlag[*StringSliceFlag, []string, string] - MultiStringFlag extends StringSliceFlag with support for using slices - directly, as Value and/or Destination. See also SliceFlag. - -type OnUsageErrorFunc func(cCtx *Context, err error, isSubcommand bool) error - OnUsageErrorFunc is executed if a usage error occurs. This is useful for - displaying customized usage error messages. This function is able to replace - the original error messages. If this function is not set, the "Incorrect - usage" is displayed and the execution is interrupted. - -type Path = string - -type PathFlag struct { - Name string - - Category string - DefaultText string - FilePath string - Usage string - - Required bool - Hidden bool - HasBeenSet bool - - Value Path - Destination *Path - - Aliases []string - EnvVars []string - - TakesFile bool - - Action func(*Context, Path) error - // Has unexported fields. -} - PathFlag is a flag with type Path - -func (f *PathFlag) Apply(set *flag.FlagSet) error - Apply populates the flag given the flag set and environment - -func (f *PathFlag) Get(ctx *Context) string - Get returns the flag’s value in the given Context. - -func (f *PathFlag) GetCategory() string - GetCategory returns the category for the flag - -func (f *PathFlag) GetDefaultText() string - GetDefaultText returns the default text for this flag - -func (f *PathFlag) GetEnvVars() []string - GetEnvVars returns the env vars for this flag - -func (f *PathFlag) GetUsage() string - GetUsage returns the usage string for the flag - -func (f *PathFlag) GetValue() string - GetValue returns the flags value as string representation and an empty - string if the flag takes no value at all. - -func (f *PathFlag) IsRequired() bool - IsRequired returns whether or not the flag is required - -func (f *PathFlag) IsSet() bool - IsSet returns whether or not the flag has been set through env or file - -func (f *PathFlag) IsVisible() bool - IsVisible returns true if the flag is not hidden, otherwise false - -func (f *PathFlag) Names() []string - Names returns the names of the flag - -func (f *PathFlag) RunAction(c *Context) error - RunAction executes flag action if set - -func (f *PathFlag) String() string - String returns a readable representation of this value (for usage defaults) - -func (f *PathFlag) TakesValue() bool - TakesValue returns true of the flag takes a value, otherwise false - -type RequiredFlag interface { - Flag - - IsRequired() bool -} - RequiredFlag is an interface that allows us to mark flags as required - it allows flags required flags to be backwards compatible with the Flag - interface - -type Serializer interface { - Serialize() string -} - Serializer is used to circumvent the limitations of flag.FlagSet.Set - -type SliceFlag[T SliceFlagTarget[E], S ~[]E, E any] struct { - Target T - Value S - Destination *S -} - SliceFlag extends implementations like StringSliceFlag and IntSliceFlag - with support for using slices directly, as Value and/or Destination. - See also SliceFlagTarget, MultiStringFlag, MultiFloat64Flag, MultiInt64Flag, - MultiIntFlag. - -func (x *SliceFlag[T, S, E]) Apply(set *flag.FlagSet) error - -func (x *SliceFlag[T, S, E]) GetCategory() string - -func (x *SliceFlag[T, S, E]) GetDefaultText() string - -func (x *SliceFlag[T, S, E]) GetDestination() S - -func (x *SliceFlag[T, S, E]) GetEnvVars() []string - -func (x *SliceFlag[T, S, E]) GetUsage() string - -func (x *SliceFlag[T, S, E]) GetValue() string - -func (x *SliceFlag[T, S, E]) IsRequired() bool - -func (x *SliceFlag[T, S, E]) IsSet() bool - -func (x *SliceFlag[T, S, E]) IsVisible() bool - -func (x *SliceFlag[T, S, E]) Names() []string - -func (x *SliceFlag[T, S, E]) SetDestination(slice S) - -func (x *SliceFlag[T, S, E]) SetValue(slice S) - -func (x *SliceFlag[T, S, E]) String() string - -func (x *SliceFlag[T, S, E]) TakesValue() bool - -type SliceFlagTarget[E any] interface { - Flag - RequiredFlag - DocGenerationFlag - VisibleFlag - CategorizableFlag - - // SetValue should propagate the given slice to the target, ideally as a new value. - // Note that a nil slice should nil/clear any existing value (modelled as ~[]E). - SetValue(slice []E) - // SetDestination should propagate the given slice to the target, ideally as a new value. - // Note that a nil slice should nil/clear any existing value (modelled as ~*[]E). - SetDestination(slice []E) - // GetDestination should return the current value referenced by any destination, or nil if nil/unset. - GetDestination() []E -} - SliceFlagTarget models a target implementation for use with SliceFlag. The - three methods, SetValue, SetDestination, and GetDestination, are necessary - to propagate Value and Destination, where Value is propagated inwards - (initially), and Destination is propagated outwards (on every update). - -type StringFlag struct { - Name string - - Category string - DefaultText string - FilePath string - Usage string - - Required bool - Hidden bool - HasBeenSet bool - - Value string - Destination *string - - Aliases []string - EnvVars []string - - TakesFile bool - - Action func(*Context, string) error - // Has unexported fields. -} - StringFlag is a flag with type string - -func (f *StringFlag) Apply(set *flag.FlagSet) error - Apply populates the flag given the flag set and environment - -func (f *StringFlag) Get(ctx *Context) string - Get returns the flag’s value in the given Context. - -func (f *StringFlag) GetCategory() string - GetCategory returns the category for the flag - -func (f *StringFlag) GetDefaultText() string - GetDefaultText returns the default text for this flag - -func (f *StringFlag) GetEnvVars() []string - GetEnvVars returns the env vars for this flag - -func (f *StringFlag) GetUsage() string - GetUsage returns the usage string for the flag - -func (f *StringFlag) GetValue() string - GetValue returns the flags value as string representation and an empty - string if the flag takes no value at all. - -func (f *StringFlag) IsRequired() bool - IsRequired returns whether or not the flag is required - -func (f *StringFlag) IsSet() bool - IsSet returns whether or not the flag has been set through env or file - -func (f *StringFlag) IsVisible() bool - IsVisible returns true if the flag is not hidden, otherwise false - -func (f *StringFlag) Names() []string - Names returns the names of the flag - -func (f *StringFlag) RunAction(c *Context) error - RunAction executes flag action if set - -func (f *StringFlag) String() string - String returns a readable representation of this value (for usage defaults) - -func (f *StringFlag) TakesValue() bool - TakesValue returns true of the flag takes a value, otherwise false - -type StringSlice struct { - // Has unexported fields. -} - StringSlice wraps a []string to satisfy flag.Value - -func NewStringSlice(defaults ...string) *StringSlice - NewStringSlice creates a *StringSlice with default values - -func (s *StringSlice) Get() interface{} - Get returns the slice of strings set by this flag - -func (s *StringSlice) Serialize() string - Serialize allows StringSlice to fulfill Serializer - -func (s *StringSlice) Set(value string) error - Set appends the string value to the list of values - -func (s *StringSlice) String() string - String returns a readable representation of this value (for usage defaults) - -func (s *StringSlice) Value() []string - Value returns the slice of strings set by this flag - -func (s *StringSlice) WithSeparatorSpec(spec separatorSpec) - -type StringSliceFlag struct { - Name string - - Category string - DefaultText string - FilePath string - Usage string - - Required bool - Hidden bool - HasBeenSet bool - - Value *StringSlice - Destination *StringSlice - - Aliases []string - EnvVars []string - - TakesFile bool - - Action func(*Context, []string) error - - KeepSpace bool - // Has unexported fields. -} - StringSliceFlag is a flag with type *StringSlice - -func (f *StringSliceFlag) Apply(set *flag.FlagSet) error - Apply populates the flag given the flag set and environment - -func (f *StringSliceFlag) Get(ctx *Context) []string - Get returns the flag’s value in the given Context. - -func (f *StringSliceFlag) GetCategory() string - GetCategory returns the category for the flag - -func (f *StringSliceFlag) GetDefaultText() string - GetDefaultText returns the default text for this flag - -func (f *StringSliceFlag) GetDestination() []string - -func (f *StringSliceFlag) GetEnvVars() []string - GetEnvVars returns the env vars for this flag - -func (f *StringSliceFlag) GetUsage() string - GetUsage returns the usage string for the flag - -func (f *StringSliceFlag) GetValue() string - GetValue returns the flags value as string representation and an empty - string if the flag takes no value at all. - -func (f *StringSliceFlag) IsRequired() bool - IsRequired returns whether or not the flag is required - -func (f *StringSliceFlag) IsSet() bool - IsSet returns whether or not the flag has been set through env or file - -func (f *StringSliceFlag) IsSliceFlag() bool - IsSliceFlag implements DocGenerationSliceFlag. - -func (f *StringSliceFlag) IsVisible() bool - IsVisible returns true if the flag is not hidden, otherwise false - -func (f *StringSliceFlag) Names() []string - Names returns the names of the flag - -func (f *StringSliceFlag) RunAction(c *Context) error - RunAction executes flag action if set - -func (f *StringSliceFlag) SetDestination(slice []string) - -func (f *StringSliceFlag) SetValue(slice []string) - -func (f *StringSliceFlag) String() string - String returns a readable representation of this value (for usage defaults) - -func (f *StringSliceFlag) TakesValue() bool - TakesValue returns true of the flag takes a value, otherwise false - -func (f *StringSliceFlag) WithSeparatorSpec(spec separatorSpec) - -type SuggestCommandFunc func(commands []*Command, provided string) string - -type SuggestFlagFunc func(flags []Flag, provided string, hideHelp bool) string - -type Timestamp struct { - // Has unexported fields. -} - Timestamp wrap to satisfy golang's flag interface. - -func NewTimestamp(timestamp time.Time) *Timestamp - Timestamp constructor - -func (t *Timestamp) Get() interface{} - Get returns the flag structure - -func (t *Timestamp) Set(value string) error - Parses the string value to timestamp - -func (t *Timestamp) SetLayout(layout string) - Set the timestamp string layout for future parsing - -func (t *Timestamp) SetLocation(loc *time.Location) - Set perceived timezone of the to-be parsed time string - -func (t *Timestamp) SetTimestamp(value time.Time) - Set the timestamp value directly - -func (t *Timestamp) String() string - String returns a readable representation of this value (for usage defaults) - -func (t *Timestamp) Value() *time.Time - Value returns the timestamp value stored in the flag - -type TimestampFlag struct { - Name string - - Category string - DefaultText string - FilePath string - Usage string - - Required bool - Hidden bool - HasBeenSet bool - - Value *Timestamp - Destination *Timestamp - - Aliases []string - EnvVars []string - - Layout string - - Timezone *time.Location - - Action func(*Context, *time.Time) error - // Has unexported fields. -} - TimestampFlag is a flag with type *Timestamp - -func (f *TimestampFlag) Apply(set *flag.FlagSet) error - Apply populates the flag given the flag set and environment - -func (f *TimestampFlag) Get(ctx *Context) *time.Time - Get returns the flag’s value in the given Context. - -func (f *TimestampFlag) GetCategory() string - GetCategory returns the category for the flag - -func (f *TimestampFlag) GetDefaultText() string - GetDefaultText returns the default text for this flag - -func (f *TimestampFlag) GetEnvVars() []string - GetEnvVars returns the env vars for this flag - -func (f *TimestampFlag) GetUsage() string - GetUsage returns the usage string for the flag - -func (f *TimestampFlag) GetValue() string - GetValue returns the flags value as string representation and an empty - string if the flag takes no value at all. - -func (f *TimestampFlag) IsRequired() bool - IsRequired returns whether or not the flag is required - -func (f *TimestampFlag) IsSet() bool - IsSet returns whether or not the flag has been set through env or file - -func (f *TimestampFlag) IsVisible() bool - IsVisible returns true if the flag is not hidden, otherwise false - -func (f *TimestampFlag) Names() []string - Names returns the names of the flag - -func (f *TimestampFlag) RunAction(c *Context) error - RunAction executes flag action if set - -func (f *TimestampFlag) String() string - String returns a readable representation of this value (for usage defaults) - -func (f *TimestampFlag) TakesValue() bool - TakesValue returns true of the flag takes a value, otherwise false - -type Uint64Flag struct { - Name string - - Category string - DefaultText string - FilePath string - Usage string - - Required bool - Hidden bool - HasBeenSet bool - - Value uint64 - Destination *uint64 - - Aliases []string - EnvVars []string - - Base int - - Action func(*Context, uint64) error - // Has unexported fields. -} - Uint64Flag is a flag with type uint64 - -func (f *Uint64Flag) Apply(set *flag.FlagSet) error - Apply populates the flag given the flag set and environment - -func (f *Uint64Flag) Get(ctx *Context) uint64 - Get returns the flag’s value in the given Context. - -func (f *Uint64Flag) GetCategory() string - GetCategory returns the category for the flag - -func (f *Uint64Flag) GetDefaultText() string - GetDefaultText returns the default text for this flag - -func (f *Uint64Flag) GetEnvVars() []string - GetEnvVars returns the env vars for this flag - -func (f *Uint64Flag) GetUsage() string - GetUsage returns the usage string for the flag - -func (f *Uint64Flag) GetValue() string - GetValue returns the flags value as string representation and an empty - string if the flag takes no value at all. - -func (f *Uint64Flag) IsRequired() bool - IsRequired returns whether or not the flag is required - -func (f *Uint64Flag) IsSet() bool - IsSet returns whether or not the flag has been set through env or file - -func (f *Uint64Flag) IsVisible() bool - IsVisible returns true if the flag is not hidden, otherwise false - -func (f *Uint64Flag) Names() []string - Names returns the names of the flag - -func (f *Uint64Flag) RunAction(c *Context) error - RunAction executes flag action if set - -func (f *Uint64Flag) String() string - String returns a readable representation of this value (for usage defaults) - -func (f *Uint64Flag) TakesValue() bool - TakesValue returns true of the flag takes a value, otherwise false - -type Uint64Slice struct { - // Has unexported fields. -} - Uint64Slice wraps []int64 to satisfy flag.Value - -func NewUint64Slice(defaults ...uint64) *Uint64Slice - NewUint64Slice makes an *Uint64Slice with default values - -func (i *Uint64Slice) Get() interface{} - Get returns the slice of ints set by this flag - -func (i *Uint64Slice) Serialize() string - Serialize allows Uint64Slice to fulfill Serializer - -func (i *Uint64Slice) Set(value string) error - Set parses the value into an integer and appends it to the list of values - -func (i *Uint64Slice) String() string - String returns a readable representation of this value (for usage defaults) - -func (i *Uint64Slice) Value() []uint64 - Value returns the slice of ints set by this flag - -func (i *Uint64Slice) WithSeparatorSpec(spec separatorSpec) - -type Uint64SliceFlag struct { - Name string - - Category string - DefaultText string - FilePath string - Usage string - - Required bool - Hidden bool - HasBeenSet bool - - Value *Uint64Slice - Destination *Uint64Slice - - Aliases []string - EnvVars []string - - Action func(*Context, []uint64) error - // Has unexported fields. -} - Uint64SliceFlag is a flag with type *Uint64Slice - -func (f *Uint64SliceFlag) Apply(set *flag.FlagSet) error - Apply populates the flag given the flag set and environment - -func (f *Uint64SliceFlag) Get(ctx *Context) []uint64 - Get returns the flag’s value in the given Context. - -func (f *Uint64SliceFlag) GetCategory() string - GetCategory returns the category for the flag - -func (f *Uint64SliceFlag) GetDefaultText() string - GetDefaultText returns the default text for this flag - -func (f *Uint64SliceFlag) GetEnvVars() []string - GetEnvVars returns the env vars for this flag - -func (f *Uint64SliceFlag) GetUsage() string - GetUsage returns the usage string for the flag - -func (f *Uint64SliceFlag) GetValue() string - GetValue returns the flags value as string representation and an empty - string if the flag takes no value at all. - -func (f *Uint64SliceFlag) IsRequired() bool - IsRequired returns whether or not the flag is required - -func (f *Uint64SliceFlag) IsSet() bool - IsSet returns whether or not the flag has been set through env or file - -func (f *Uint64SliceFlag) IsSliceFlag() bool - IsSliceFlag implements DocGenerationSliceFlag. - -func (f *Uint64SliceFlag) IsVisible() bool - IsVisible returns true if the flag is not hidden, otherwise false - -func (f *Uint64SliceFlag) Names() []string - Names returns the names of the flag - -func (f *Uint64SliceFlag) RunAction(c *Context) error - RunAction executes flag action if set - -func (f *Uint64SliceFlag) String() string - String returns a readable representation of this value (for usage defaults) - -func (f *Uint64SliceFlag) TakesValue() bool - TakesValue returns true of the flag takes a value, otherwise false - -func (f *Uint64SliceFlag) WithSeparatorSpec(spec separatorSpec) - -type UintFlag struct { - Name string - - Category string - DefaultText string - FilePath string - Usage string - - Required bool - Hidden bool - HasBeenSet bool - - Value uint - Destination *uint - - Aliases []string - EnvVars []string - - Base int - - Action func(*Context, uint) error - // Has unexported fields. -} - UintFlag is a flag with type uint - -func (f *UintFlag) Apply(set *flag.FlagSet) error - Apply populates the flag given the flag set and environment - -func (f *UintFlag) Get(ctx *Context) uint - Get returns the flag’s value in the given Context. - -func (f *UintFlag) GetCategory() string - GetCategory returns the category for the flag - -func (f *UintFlag) GetDefaultText() string - GetDefaultText returns the default text for this flag - -func (f *UintFlag) GetEnvVars() []string - GetEnvVars returns the env vars for this flag - -func (f *UintFlag) GetUsage() string - GetUsage returns the usage string for the flag - -func (f *UintFlag) GetValue() string - GetValue returns the flags value as string representation and an empty - string if the flag takes no value at all. - -func (f *UintFlag) IsRequired() bool - IsRequired returns whether or not the flag is required - -func (f *UintFlag) IsSet() bool - IsSet returns whether or not the flag has been set through env or file - -func (f *UintFlag) IsVisible() bool - IsVisible returns true if the flag is not hidden, otherwise false - -func (f *UintFlag) Names() []string - Names returns the names of the flag - -func (f *UintFlag) RunAction(c *Context) error - RunAction executes flag action if set - -func (f *UintFlag) String() string - String returns a readable representation of this value (for usage defaults) - -func (f *UintFlag) TakesValue() bool - TakesValue returns true of the flag takes a value, otherwise false - -type UintSlice struct { - // Has unexported fields. -} - UintSlice wraps []int to satisfy flag.Value - -func NewUintSlice(defaults ...uint) *UintSlice - NewUintSlice makes an *UintSlice with default values - -func (i *UintSlice) Get() interface{} - Get returns the slice of ints set by this flag - -func (i *UintSlice) Serialize() string - Serialize allows UintSlice to fulfill Serializer - -func (i *UintSlice) Set(value string) error - Set parses the value into an integer and appends it to the list of values - -func (i *UintSlice) SetUint(value uint) - TODO: Consistently have specific Set function for Int64 and Float64 ? SetInt - directly adds an integer to the list of values - -func (i *UintSlice) String() string - String returns a readable representation of this value (for usage defaults) - -func (i *UintSlice) Value() []uint - Value returns the slice of ints set by this flag - -func (i *UintSlice) WithSeparatorSpec(spec separatorSpec) - -type UintSliceFlag struct { - Name string - - Category string - DefaultText string - FilePath string - Usage string - - Required bool - Hidden bool - HasBeenSet bool - - Value *UintSlice - Destination *UintSlice - - Aliases []string - EnvVars []string - - Action func(*Context, []uint) error - // Has unexported fields. -} - UintSliceFlag is a flag with type *UintSlice - -func (f *UintSliceFlag) Apply(set *flag.FlagSet) error - Apply populates the flag given the flag set and environment - -func (f *UintSliceFlag) Get(ctx *Context) []uint - Get returns the flag’s value in the given Context. - -func (f *UintSliceFlag) GetCategory() string - GetCategory returns the category for the flag - -func (f *UintSliceFlag) GetDefaultText() string - GetDefaultText returns the default text for this flag - -func (f *UintSliceFlag) GetEnvVars() []string - GetEnvVars returns the env vars for this flag - -func (f *UintSliceFlag) GetUsage() string - GetUsage returns the usage string for the flag - -func (f *UintSliceFlag) GetValue() string - GetValue returns the flags value as string representation and an empty - string if the flag takes no value at all. - -func (f *UintSliceFlag) IsRequired() bool - IsRequired returns whether or not the flag is required - -func (f *UintSliceFlag) IsSet() bool - IsSet returns whether or not the flag has been set through env or file - -func (f *UintSliceFlag) IsSliceFlag() bool - IsSliceFlag implements DocGenerationSliceFlag. - -func (f *UintSliceFlag) IsVisible() bool - IsVisible returns true if the flag is not hidden, otherwise false - -func (f *UintSliceFlag) Names() []string - Names returns the names of the flag - -func (f *UintSliceFlag) RunAction(c *Context) error - RunAction executes flag action if set - -func (f *UintSliceFlag) String() string - String returns a readable representation of this value (for usage defaults) - -func (f *UintSliceFlag) TakesValue() bool - TakesValue returns true of the flag takes a value, otherwise false - -func (f *UintSliceFlag) WithSeparatorSpec(spec separatorSpec) - -type VisibleFlag interface { - Flag - - // IsVisible returns true if the flag is not hidden, otherwise false - IsVisible() bool -} - VisibleFlag is an interface that allows to check if a flag is visible - -type VisibleFlagCategory interface { - // Name returns the category name string - Name() string - // Flags returns a slice of VisibleFlag sorted by name - Flags() []VisibleFlag -} - VisibleFlagCategory is a category containing flags. - -package altsrc // import "github.com/urfave/cli/v2/altsrc" - - -FUNCTIONS - -func ApplyInputSourceValues(cCtx *cli.Context, inputSourceContext InputSourceContext, flags []cli.Flag) error - ApplyInputSourceValues iterates over all provided flags and executes - ApplyInputSourceValue on flags implementing the FlagInputSourceExtension - interface to initialize these flags to an alternate input source. - -func InitInputSource(flags []cli.Flag, createInputSource func() (InputSourceContext, error)) cli.BeforeFunc - InitInputSource is used to to setup an InputSourceContext on a cli.Command - Before method. It will create a new input source based on the func provided. - If there is no error it will then apply the new input source to any flags - that are supported by the input source - -func InitInputSourceWithContext(flags []cli.Flag, createInputSource func(cCtx *cli.Context) (InputSourceContext, error)) cli.BeforeFunc - InitInputSourceWithContext is used to to setup an InputSourceContext on - a cli.Command Before method. It will create a new input source based on - the func provided with potentially using existing cli.Context values to - initialize itself. If there is no error it will then apply the new input - source to any flags that are supported by the input source - -func NewJSONSourceFromFlagFunc(flag string) func(c *cli.Context) (InputSourceContext, error) - NewJSONSourceFromFlagFunc returns a func that takes a cli.Context and - returns an InputSourceContext suitable for retrieving config variables from - a file containing JSON data with the file name defined by the given flag. - -func NewTomlSourceFromFlagFunc(flagFileName string) func(cCtx *cli.Context) (InputSourceContext, error) - NewTomlSourceFromFlagFunc creates a new TOML InputSourceContext from a - provided flag name and source context. - -func NewYamlSourceFromFlagFunc(flagFileName string) func(cCtx *cli.Context) (InputSourceContext, error) - NewYamlSourceFromFlagFunc creates a new Yaml InputSourceContext from a - provided flag name and source context. - - -TYPES - -type BoolFlag struct { - *cli.BoolFlag - // Has unexported fields. -} - BoolFlag is the flag type that wraps cli.BoolFlag to allow for other values - to be specified - -func NewBoolFlag(fl *cli.BoolFlag) *BoolFlag - NewBoolFlag creates a new BoolFlag - -func (f *BoolFlag) Apply(set *flag.FlagSet) error - Apply saves the flagSet for later usage calls, then calls the wrapped - BoolFlag.Apply - -func (f *BoolFlag) ApplyInputSourceValue(cCtx *cli.Context, isc InputSourceContext) error - ApplyInputSourceValue applies a Bool value to the flagSet if required - -type DurationFlag struct { - *cli.DurationFlag - // Has unexported fields. -} - DurationFlag is the flag type that wraps cli.DurationFlag to allow for other - values to be specified - -func NewDurationFlag(fl *cli.DurationFlag) *DurationFlag - NewDurationFlag creates a new DurationFlag - -func (f *DurationFlag) Apply(set *flag.FlagSet) error - Apply saves the flagSet for later usage calls, then calls the wrapped - DurationFlag.Apply - -func (f *DurationFlag) ApplyInputSourceValue(cCtx *cli.Context, isc InputSourceContext) error - ApplyInputSourceValue applies a Duration value to the flagSet if required - -type FlagInputSourceExtension interface { - cli.Flag - ApplyInputSourceValue(cCtx *cli.Context, isc InputSourceContext) error -} - FlagInputSourceExtension is an extension interface of cli.Flag that allows a - value to be set on the existing parsed flags. - -type Float64Flag struct { - *cli.Float64Flag - // Has unexported fields. -} - Float64Flag is the flag type that wraps cli.Float64Flag to allow for other - values to be specified - -func NewFloat64Flag(fl *cli.Float64Flag) *Float64Flag - NewFloat64Flag creates a new Float64Flag - -func (f *Float64Flag) Apply(set *flag.FlagSet) error - Apply saves the flagSet for later usage calls, then calls the wrapped - Float64Flag.Apply - -func (f *Float64Flag) ApplyInputSourceValue(cCtx *cli.Context, isc InputSourceContext) error - ApplyInputSourceValue applies a Float64 value to the flagSet if required - -type Float64SliceFlag struct { - *cli.Float64SliceFlag - // Has unexported fields. -} - Float64SliceFlag is the flag type that wraps cli.Float64SliceFlag to allow - for other values to be specified - -func NewFloat64SliceFlag(fl *cli.Float64SliceFlag) *Float64SliceFlag - NewFloat64SliceFlag creates a new Float64SliceFlag - -func (f *Float64SliceFlag) Apply(set *flag.FlagSet) error - Apply saves the flagSet for later usage calls, then calls the wrapped - Float64SliceFlag.Apply - -func (f *Float64SliceFlag) ApplyInputSourceValue(cCtx *cli.Context, isc InputSourceContext) error - ApplyInputSourceValue applies a Float64Slice value if required - -type GenericFlag struct { - *cli.GenericFlag - // Has unexported fields. -} - GenericFlag is the flag type that wraps cli.GenericFlag to allow for other - values to be specified - -func NewGenericFlag(fl *cli.GenericFlag) *GenericFlag - NewGenericFlag creates a new GenericFlag - -func (f *GenericFlag) Apply(set *flag.FlagSet) error - Apply saves the flagSet for later usage calls, then calls the wrapped - GenericFlag.Apply - -func (f *GenericFlag) ApplyInputSourceValue(cCtx *cli.Context, isc InputSourceContext) error - ApplyInputSourceValue applies a generic value to the flagSet if required - -type InputSourceContext interface { - Source() string - - Int(name string) (int, error) - Int64(name string) (int64, error) - Uint(name string) (uint, error) - Uint64(name string) (uint64, error) - Duration(name string) (time.Duration, error) - Float64(name string) (float64, error) - String(name string) (string, error) - StringSlice(name string) ([]string, error) - IntSlice(name string) ([]int, error) - Int64Slice(name string) ([]int64, error) - Float64Slice(name string) ([]float64, error) - Generic(name string) (cli.Generic, error) - Bool(name string) (bool, error) - - // Has unexported methods. -} - InputSourceContext is an interface used to allow other input sources to be - implemented as needed. - - Source returns an identifier for the input source. In case of file source it - should return path to the file. - -func NewJSONSource(data []byte) (InputSourceContext, error) - NewJSONSource returns an InputSourceContext suitable for retrieving config - variables from raw JSON data. - -func NewJSONSourceFromFile(f string) (InputSourceContext, error) - NewJSONSourceFromFile returns an InputSourceContext suitable for retrieving - config variables from a file (or url) containing JSON data. - -func NewJSONSourceFromReader(r io.Reader) (InputSourceContext, error) - NewJSONSourceFromReader returns an InputSourceContext suitable for - retrieving config variables from an io.Reader that returns JSON data. - -func NewTomlSourceFromFile(file string) (InputSourceContext, error) - NewTomlSourceFromFile creates a new TOML InputSourceContext from a filepath. - -func NewYamlSourceFromFile(file string) (InputSourceContext, error) - NewYamlSourceFromFile creates a new Yaml InputSourceContext from a filepath. - -type Int64Flag struct { - *cli.Int64Flag - // Has unexported fields. -} - Int64Flag is the flag type that wraps cli.Int64Flag to allow for other - values to be specified - -func NewInt64Flag(fl *cli.Int64Flag) *Int64Flag - NewInt64Flag creates a new Int64Flag - -func (f *Int64Flag) Apply(set *flag.FlagSet) error - Apply saves the flagSet for later usage calls, then calls the wrapped - Int64Flag.Apply - -func (f *Int64Flag) ApplyInputSourceValue(cCtx *cli.Context, isc InputSourceContext) error - -type Int64SliceFlag struct { - *cli.Int64SliceFlag - // Has unexported fields. -} - Int64SliceFlag is the flag type that wraps cli.Int64SliceFlag to allow for - other values to be specified - -func NewInt64SliceFlag(fl *cli.Int64SliceFlag) *Int64SliceFlag - NewInt64SliceFlag creates a new Int64SliceFlag - -func (f *Int64SliceFlag) Apply(set *flag.FlagSet) error - Apply saves the flagSet for later usage calls, then calls the wrapped - Int64SliceFlag.Apply - -func (f *Int64SliceFlag) ApplyInputSourceValue(cCtx *cli.Context, isc InputSourceContext) error - ApplyInputSourceValue applies a Int64Slice value if required - -type IntFlag struct { - *cli.IntFlag - // Has unexported fields. -} - IntFlag is the flag type that wraps cli.IntFlag to allow for other values to - be specified - -func NewIntFlag(fl *cli.IntFlag) *IntFlag - NewIntFlag creates a new IntFlag - -func (f *IntFlag) Apply(set *flag.FlagSet) error - Apply saves the flagSet for later usage calls, then calls the wrapped - IntFlag.Apply - -func (f *IntFlag) ApplyInputSourceValue(cCtx *cli.Context, isc InputSourceContext) error - ApplyInputSourceValue applies a int value to the flagSet if required - -type IntSliceFlag struct { - *cli.IntSliceFlag - // Has unexported fields. -} - IntSliceFlag is the flag type that wraps cli.IntSliceFlag to allow for other - values to be specified - -func NewIntSliceFlag(fl *cli.IntSliceFlag) *IntSliceFlag - NewIntSliceFlag creates a new IntSliceFlag - -func (f *IntSliceFlag) Apply(set *flag.FlagSet) error - Apply saves the flagSet for later usage calls, then calls the wrapped - IntSliceFlag.Apply - -func (f *IntSliceFlag) ApplyInputSourceValue(cCtx *cli.Context, isc InputSourceContext) error - ApplyInputSourceValue applies a IntSlice value if required - -type MapInputSource struct { - // Has unexported fields. -} - MapInputSource implements InputSourceContext to return data from the map - that is loaded. - -func NewMapInputSource(file string, valueMap map[interface{}]interface{}) *MapInputSource - NewMapInputSource creates a new MapInputSource for implementing custom input - sources. - -func (fsm *MapInputSource) Bool(name string) (bool, error) - Bool returns an bool from the map otherwise returns false - -func (fsm *MapInputSource) Duration(name string) (time.Duration, error) - Duration returns a duration from the map if it exists otherwise returns 0 - -func (fsm *MapInputSource) Float64(name string) (float64, error) - Float64 returns an float64 from the map if it exists otherwise returns 0 - -func (fsm *MapInputSource) Float64Slice(name string) ([]float64, error) - Float64Slice returns an []float64 from the map if it exists otherwise - returns nil - -func (fsm *MapInputSource) Generic(name string) (cli.Generic, error) - Generic returns an cli.Generic from the map if it exists otherwise returns - nil - -func (fsm *MapInputSource) Int(name string) (int, error) - Int returns an int from the map if it exists otherwise returns 0 - -func (fsm *MapInputSource) Int64(name string) (int64, error) - Int64 returns an int64 from the map if it exists otherwise returns 0 - -func (fsm *MapInputSource) Int64Slice(name string) ([]int64, error) - Int64Slice returns an []int64 from the map if it exists otherwise returns - nil - -func (fsm *MapInputSource) IntSlice(name string) ([]int, error) - IntSlice returns an []int from the map if it exists otherwise returns nil - -func (fsm *MapInputSource) Source() string - Source returns the path of the source file - -func (fsm *MapInputSource) String(name string) (string, error) - String returns a string from the map if it exists otherwise returns an empty - string - -func (fsm *MapInputSource) StringSlice(name string) ([]string, error) - StringSlice returns an []string from the map if it exists otherwise returns - nil - -func (fsm *MapInputSource) Uint(name string) (uint, error) - Int64 returns an int64 from the map if it exists otherwise returns 0 - -func (fsm *MapInputSource) Uint64(name string) (uint64, error) - UInt64 returns an uint64 from the map if it exists otherwise returns 0 - -type PathFlag struct { - *cli.PathFlag - // Has unexported fields. -} - PathFlag is the flag type that wraps cli.PathFlag to allow for other values - to be specified - -func NewPathFlag(fl *cli.PathFlag) *PathFlag - NewPathFlag creates a new PathFlag - -func (f *PathFlag) Apply(set *flag.FlagSet) error - Apply saves the flagSet for later usage calls, then calls the wrapped - PathFlag.Apply - -func (f *PathFlag) ApplyInputSourceValue(cCtx *cli.Context, isc InputSourceContext) error - ApplyInputSourceValue applies a Path value to the flagSet if required - -type StringFlag struct { - *cli.StringFlag - // Has unexported fields. -} - StringFlag is the flag type that wraps cli.StringFlag to allow for other - values to be specified - -func NewStringFlag(fl *cli.StringFlag) *StringFlag - NewStringFlag creates a new StringFlag - -func (f *StringFlag) Apply(set *flag.FlagSet) error - Apply saves the flagSet for later usage calls, then calls the wrapped - StringFlag.Apply - -func (f *StringFlag) ApplyInputSourceValue(cCtx *cli.Context, isc InputSourceContext) error - ApplyInputSourceValue applies a String value to the flagSet if required - -type StringSliceFlag struct { - *cli.StringSliceFlag - // Has unexported fields. -} - StringSliceFlag is the flag type that wraps cli.StringSliceFlag to allow for - other values to be specified - -func NewStringSliceFlag(fl *cli.StringSliceFlag) *StringSliceFlag - NewStringSliceFlag creates a new StringSliceFlag - -func (f *StringSliceFlag) Apply(set *flag.FlagSet) error - Apply saves the flagSet for later usage calls, then calls the wrapped - StringSliceFlag.Apply - -func (f *StringSliceFlag) ApplyInputSourceValue(cCtx *cli.Context, isc InputSourceContext) error - ApplyInputSourceValue applies a StringSlice value to the flagSet if required - -type Uint64Flag struct { - *cli.Uint64Flag - // Has unexported fields. -} - Uint64Flag is the flag type that wraps cli.Uint64Flag to allow for other - values to be specified - -func NewUint64Flag(fl *cli.Uint64Flag) *Uint64Flag - NewUint64Flag creates a new Uint64Flag - -func (f *Uint64Flag) Apply(set *flag.FlagSet) error - Apply saves the flagSet for later usage calls, then calls the wrapped - Uint64Flag.Apply - -func (f *Uint64Flag) ApplyInputSourceValue(cCtx *cli.Context, isc InputSourceContext) error - -type UintFlag struct { - *cli.UintFlag - // Has unexported fields. -} - UintFlag is the flag type that wraps cli.UintFlag to allow for other values - to be specified - -func NewUintFlag(fl *cli.UintFlag) *UintFlag - NewUintFlag creates a new UintFlag - -func (f *UintFlag) Apply(set *flag.FlagSet) error - Apply saves the flagSet for later usage calls, then calls the wrapped - UintFlag.Apply - -func (f *UintFlag) ApplyInputSourceValue(cCtx *cli.Context, isc InputSourceContext) error - diff --git a/vendor/github.com/urfave/cli/v2/help.go b/vendor/github.com/urfave/cli/v2/help.go deleted file mode 100644 index 874be941c..000000000 --- a/vendor/github.com/urfave/cli/v2/help.go +++ /dev/null @@ -1,569 +0,0 @@ -package cli - -import ( - "fmt" - "io" - "os" - "strings" - "text/tabwriter" - "text/template" - "unicode/utf8" -) - -const ( - helpName = "help" - helpAlias = "h" -) - -// this instance is to avoid recursion in the ShowCommandHelp which can -// add a help command again -var helpCommandDontUse = &Command{ - Name: helpName, - Aliases: []string{helpAlias}, - Usage: "Shows a list of commands or help for one command", - ArgsUsage: "[command]", -} - -var helpCommand = &Command{ - Name: helpName, - Aliases: []string{helpAlias}, - Usage: "Shows a list of commands or help for one command", - ArgsUsage: "[command]", - Action: func(cCtx *Context) error { - args := cCtx.Args() - argsPresent := args.First() != "" - firstArg := args.First() - - // This action can be triggered by a "default" action of a command - // or via cmd.Run when cmd == helpCmd. So we have following possibilities - // - // 1 $ app - // 2 $ app help - // 3 $ app foo - // 4 $ app help foo - // 5 $ app foo help - // 6 $ app foo -h (with no other sub-commands nor flags defined) - - // Case 4. when executing a help command set the context to parent - // to allow resolution of subsequent args. This will transform - // $ app help foo - // to - // $ app foo - // which will then be handled as case 3 - if cCtx.Command.Name == helpName || cCtx.Command.Name == helpAlias { - cCtx = cCtx.parentContext - } - - // Case 4. $ app hello foo - // foo is the command for which help needs to be shown - if argsPresent { - return ShowCommandHelp(cCtx, firstArg) - } - - // Case 1 & 2 - // Special case when running help on main app itself as opposed to individual - // commands/subcommands - if cCtx.parentContext.App == nil { - _ = ShowAppHelp(cCtx) - return nil - } - - // Case 3, 5 - if (len(cCtx.Command.Subcommands) == 1 && !cCtx.Command.HideHelp && !cCtx.Command.HideHelpCommand) || - (len(cCtx.Command.Subcommands) == 0 && cCtx.Command.HideHelp) { - templ := cCtx.Command.CustomHelpTemplate - if templ == "" { - templ = CommandHelpTemplate - } - HelpPrinter(cCtx.App.Writer, templ, cCtx.Command) - return nil - } - - // Case 6, handling incorporated in the callee itself - return ShowSubcommandHelp(cCtx) - }, -} - -// Prints help for the App or Command -type helpPrinter func(w io.Writer, templ string, data interface{}) - -// Prints help for the App or Command with custom template function. -type helpPrinterCustom func(w io.Writer, templ string, data interface{}, customFunc map[string]interface{}) - -// HelpPrinter is a function that writes the help output. If not set explicitly, -// this calls HelpPrinterCustom using only the default template functions. -// -// If custom logic for printing help is required, this function can be -// overridden. If the ExtraInfo field is defined on an App, this function -// should not be modified, as HelpPrinterCustom will be used directly in order -// to capture the extra information. -var HelpPrinter helpPrinter = printHelp - -// HelpPrinterCustom is a function that writes the help output. It is used as -// the default implementation of HelpPrinter, and may be called directly if -// the ExtraInfo field is set on an App. -// -// In the default implementation, if the customFuncs argument contains a -// "wrapAt" key, which is a function which takes no arguments and returns -// an int, this int value will be used to produce a "wrap" function used -// by the default template to wrap long lines. -var HelpPrinterCustom helpPrinterCustom = printHelpCustom - -// VersionPrinter prints the version for the App -var VersionPrinter = printVersion - -// ShowAppHelpAndExit - Prints the list of subcommands for the app and exits with exit code. -func ShowAppHelpAndExit(c *Context, exitCode int) { - _ = ShowAppHelp(c) - os.Exit(exitCode) -} - -// ShowAppHelp is an action that displays the help. -func ShowAppHelp(cCtx *Context) error { - tpl := cCtx.App.CustomAppHelpTemplate - if tpl == "" { - tpl = AppHelpTemplate - } - - if cCtx.App.ExtraInfo == nil { - HelpPrinter(cCtx.App.Writer, tpl, cCtx.App) - return nil - } - - customAppData := func() map[string]interface{} { - return map[string]interface{}{ - "ExtraInfo": cCtx.App.ExtraInfo, - } - } - HelpPrinterCustom(cCtx.App.Writer, tpl, cCtx.App, customAppData()) - - return nil -} - -// DefaultAppComplete prints the list of subcommands as the default app completion method -func DefaultAppComplete(cCtx *Context) { - DefaultCompleteWithFlags(nil)(cCtx) -} - -func printCommandSuggestions(commands []*Command, writer io.Writer) { - for _, command := range commands { - if command.Hidden { - continue - } - if strings.HasSuffix(os.Getenv("SHELL"), "zsh") { - for _, name := range command.Names() { - _, _ = fmt.Fprintf(writer, "%s:%s\n", name, command.Usage) - } - } else { - for _, name := range command.Names() { - _, _ = fmt.Fprintf(writer, "%s\n", name) - } - } - } -} - -func cliArgContains(flagName string) bool { - for _, name := range strings.Split(flagName, ",") { - name = strings.TrimSpace(name) - count := utf8.RuneCountInString(name) - if count > 2 { - count = 2 - } - flag := fmt.Sprintf("%s%s", strings.Repeat("-", count), name) - for _, a := range os.Args { - if a == flag { - return true - } - } - } - return false -} - -func printFlagSuggestions(lastArg string, flags []Flag, writer io.Writer) { - cur := strings.TrimPrefix(lastArg, "-") - cur = strings.TrimPrefix(cur, "-") - for _, flag := range flags { - if bflag, ok := flag.(*BoolFlag); ok && bflag.Hidden { - continue - } - for _, name := range flag.Names() { - name = strings.TrimSpace(name) - // this will get total count utf8 letters in flag name - count := utf8.RuneCountInString(name) - if count > 2 { - count = 2 // reuse this count to generate single - or -- in flag completion - } - // if flag name has more than one utf8 letter and last argument in cli has -- prefix then - // skip flag completion for short flags example -v or -x - if strings.HasPrefix(lastArg, "--") && count == 1 { - continue - } - // match if last argument matches this flag and it is not repeated - if strings.HasPrefix(name, cur) && cur != name && !cliArgContains(name) { - flagCompletion := fmt.Sprintf("%s%s", strings.Repeat("-", count), name) - _, _ = fmt.Fprintln(writer, flagCompletion) - } - } - } -} - -func DefaultCompleteWithFlags(cmd *Command) func(cCtx *Context) { - return func(cCtx *Context) { - var lastArg string - - // TODO: This shouldnt depend on os.Args rather it should - // depend on root arguments passed to App - if len(os.Args) > 2 { - lastArg = os.Args[len(os.Args)-2] - } - - if lastArg != "" { - if strings.HasPrefix(lastArg, "-") { - if cmd != nil { - printFlagSuggestions(lastArg, cmd.Flags, cCtx.App.Writer) - - return - } - - printFlagSuggestions(lastArg, cCtx.App.Flags, cCtx.App.Writer) - - return - } - } - - if cmd != nil { - printCommandSuggestions(cmd.Subcommands, cCtx.App.Writer) - return - } - - printCommandSuggestions(cCtx.Command.Subcommands, cCtx.App.Writer) - } -} - -// ShowCommandHelpAndExit - exits with code after showing help -func ShowCommandHelpAndExit(c *Context, command string, code int) { - _ = ShowCommandHelp(c, command) - os.Exit(code) -} - -// ShowCommandHelp prints help for the given command -func ShowCommandHelp(ctx *Context, command string) error { - commands := ctx.App.Commands - if ctx.Command.Subcommands != nil { - commands = ctx.Command.Subcommands - } - for _, c := range commands { - if c.HasName(command) { - if !ctx.App.HideHelpCommand && !c.HasName(helpName) && len(c.Subcommands) != 0 && c.Command(helpName) == nil { - c.Subcommands = append(c.Subcommands, helpCommandDontUse) - } - if !ctx.App.HideHelp && HelpFlag != nil { - c.appendFlag(HelpFlag) - } - templ := c.CustomHelpTemplate - if templ == "" { - if len(c.Subcommands) == 0 { - templ = CommandHelpTemplate - } else { - templ = SubcommandHelpTemplate - } - } - - HelpPrinter(ctx.App.Writer, templ, c) - - return nil - } - } - - if ctx.App.CommandNotFound == nil { - errMsg := fmt.Sprintf("No help topic for '%v'", command) - if ctx.App.Suggest && SuggestCommand != nil { - if suggestion := SuggestCommand(ctx.Command.Subcommands, command); suggestion != "" { - errMsg += ". " + suggestion - } - } - return Exit(errMsg, 3) - } - - ctx.App.CommandNotFound(ctx, command) - return nil -} - -// ShowSubcommandHelpAndExit - Prints help for the given subcommand and exits with exit code. -func ShowSubcommandHelpAndExit(c *Context, exitCode int) { - _ = ShowSubcommandHelp(c) - os.Exit(exitCode) -} - -// ShowSubcommandHelp prints help for the given subcommand -func ShowSubcommandHelp(cCtx *Context) error { - if cCtx == nil { - return nil - } - // use custom template when provided (fixes #1703) - templ := SubcommandHelpTemplate - if cCtx.Command != nil && cCtx.Command.CustomHelpTemplate != "" { - templ = cCtx.Command.CustomHelpTemplate - } - HelpPrinter(cCtx.App.Writer, templ, cCtx.Command) - return nil -} - -// ShowVersion prints the version number of the App -func ShowVersion(cCtx *Context) { - VersionPrinter(cCtx) -} - -func printVersion(cCtx *Context) { - _, _ = fmt.Fprintf(cCtx.App.Writer, "%v version %v\n", cCtx.App.Name, cCtx.App.Version) -} - -// ShowCompletions prints the lists of commands within a given context -func ShowCompletions(cCtx *Context) { - c := cCtx.Command - if c != nil && c.BashComplete != nil { - c.BashComplete(cCtx) - } -} - -// ShowCommandCompletions prints the custom completions for a given command -func ShowCommandCompletions(ctx *Context, command string) { - c := ctx.Command.Command(command) - if c != nil { - if c.BashComplete != nil { - c.BashComplete(ctx) - } else { - DefaultCompleteWithFlags(c)(ctx) - } - } -} - -// printHelpCustom is the default implementation of HelpPrinterCustom. -// -// The customFuncs map will be combined with a default template.FuncMap to -// allow using arbitrary functions in template rendering. -func printHelpCustom(out io.Writer, templ string, data interface{}, customFuncs map[string]interface{}) { - const maxLineLength = 10000 - - funcMap := template.FuncMap{ - "join": strings.Join, - "subtract": subtract, - "indent": indent, - "nindent": nindent, - "trim": strings.TrimSpace, - "wrap": func(input string, offset int) string { return wrap(input, offset, maxLineLength) }, - "offset": offset, - "offsetCommands": offsetCommands, - } - - if customFuncs["wrapAt"] != nil { - if wa, ok := customFuncs["wrapAt"]; ok { - if waf, ok := wa.(func() int); ok { - wrapAt := waf() - customFuncs["wrap"] = func(input string, offset int) string { - return wrap(input, offset, wrapAt) - } - } - } - } - - for key, value := range customFuncs { - funcMap[key] = value - } - - w := tabwriter.NewWriter(out, 1, 8, 2, ' ', 0) - t := template.Must(template.New("help").Funcs(funcMap).Parse(templ)) - templates := map[string]string{ - "helpNameTemplate": helpNameTemplate, - "usageTemplate": usageTemplate, - "descriptionTemplate": descriptionTemplate, - "visibleCommandTemplate": visibleCommandTemplate, - "copyrightTemplate": copyrightTemplate, - "versionTemplate": versionTemplate, - "visibleFlagCategoryTemplate": visibleFlagCategoryTemplate, - "visibleFlagTemplate": visibleFlagTemplate, - "visibleGlobalFlagCategoryTemplate": strings.Replace(visibleFlagCategoryTemplate, "OPTIONS", "GLOBAL OPTIONS", -1), - "authorsTemplate": authorsTemplate, - "visibleCommandCategoryTemplate": visibleCommandCategoryTemplate, - } - for name, value := range templates { - if _, err := t.New(name).Parse(value); err != nil { - if os.Getenv("CLI_TEMPLATE_ERROR_DEBUG") != "" { - _, _ = fmt.Fprintf(ErrWriter, "CLI TEMPLATE ERROR: %#v\n", err) - } - } - } - - err := t.Execute(w, data) - if err != nil { - // If the writer is closed, t.Execute will fail, and there's nothing - // we can do to recover. - if os.Getenv("CLI_TEMPLATE_ERROR_DEBUG") != "" { - _, _ = fmt.Fprintf(ErrWriter, "CLI TEMPLATE ERROR: %#v\n", err) - } - return - } - _ = w.Flush() -} - -func printHelp(out io.Writer, templ string, data interface{}) { - HelpPrinterCustom(out, templ, data, nil) -} - -func checkVersion(cCtx *Context) bool { - found := false - for _, name := range VersionFlag.Names() { - if cCtx.Bool(name) { - found = true - } - } - return found -} - -func checkHelp(cCtx *Context) bool { - if HelpFlag == nil { - return false - } - found := false - for _, name := range HelpFlag.Names() { - if cCtx.Bool(name) { - found = true - break - } - } - - return found -} - -func checkShellCompleteFlag(a *App, arguments []string) (bool, []string) { - if !a.EnableBashCompletion { - return false, arguments - } - - pos := len(arguments) - 1 - lastArg := arguments[pos] - - if lastArg != "--generate-bash-completion" { - return false, arguments - } - - for _, arg := range arguments { - // If arguments include "--", shell completion is disabled - // because after "--" only positional arguments are accepted. - // https://unix.stackexchange.com/a/11382 - if arg == "--" { - return false, arguments - } - } - - return true, arguments[:pos] -} - -func checkCompletions(cCtx *Context) bool { - if !cCtx.shellComplete { - return false - } - - if args := cCtx.Args(); args.Present() { - name := args.First() - if cmd := cCtx.Command.Command(name); cmd != nil { - // let the command handle the completion - return false - } - } - - ShowCompletions(cCtx) - return true -} - -func subtract(a, b int) int { - return a - b -} - -func indent(spaces int, v string) string { - pad := strings.Repeat(" ", spaces) - return pad + strings.Replace(v, "\n", "\n"+pad, -1) -} - -func nindent(spaces int, v string) string { - return "\n" + indent(spaces, v) -} - -func wrap(input string, offset int, wrapAt int) string { - var ss []string - - lines := strings.Split(input, "\n") - - padding := strings.Repeat(" ", offset) - - for i, line := range lines { - if line == "" { - ss = append(ss, line) - } else { - wrapped := wrapLine(line, offset, wrapAt, padding) - if i == 0 { - ss = append(ss, wrapped) - } else { - ss = append(ss, padding+wrapped) - } - - } - } - - return strings.Join(ss, "\n") -} - -func wrapLine(input string, offset int, wrapAt int, padding string) string { - if wrapAt <= offset || len(input) <= wrapAt-offset { - return input - } - - lineWidth := wrapAt - offset - words := strings.Fields(input) - if len(words) == 0 { - return input - } - - wrapped := words[0] - spaceLeft := lineWidth - len(wrapped) - for _, word := range words[1:] { - if len(word)+1 > spaceLeft { - wrapped += "\n" + padding + word - spaceLeft = lineWidth - len(word) - } else { - wrapped += " " + word - spaceLeft -= 1 + len(word) - } - } - - return wrapped -} - -func offset(input string, fixed int) int { - return len(input) + fixed -} - -// this function tries to find the max width of the names column -// so say we have the following rows for help -// -// foo1, foo2, foo3 some string here -// bar1, b2 some other string here -// -// We want to offset the 2nd row usage by some amount so that everything -// is aligned -// -// foo1, foo2, foo3 some string here -// bar1, b2 some other string here -// -// to find that offset we find the length of all the rows and use the max -// to calculate the offset -func offsetCommands(cmds []*Command, fixed int) int { - var max int = 0 - for _, cmd := range cmds { - s := strings.Join(cmd.Names(), ", ") - if len(s) > max { - max = len(s) - } - } - return max + fixed -} diff --git a/vendor/github.com/urfave/cli/v2/mkdocs-reqs.txt b/vendor/github.com/urfave/cli/v2/mkdocs-reqs.txt deleted file mode 100644 index 482ad0622..000000000 --- a/vendor/github.com/urfave/cli/v2/mkdocs-reqs.txt +++ /dev/null @@ -1,5 +0,0 @@ -mkdocs-git-revision-date-localized-plugin~=1.0 -mkdocs-material-extensions~=1.0 -mkdocs-material~=8.2 -mkdocs~=1.3 -pygments~=2.12 diff --git a/vendor/github.com/urfave/cli/v2/parse.go b/vendor/github.com/urfave/cli/v2/parse.go deleted file mode 100644 index d79f15a18..000000000 --- a/vendor/github.com/urfave/cli/v2/parse.go +++ /dev/null @@ -1,102 +0,0 @@ -package cli - -import ( - "flag" - "strings" -) - -type iterativeParser interface { - newFlagSet() (*flag.FlagSet, error) - useShortOptionHandling() bool -} - -// To enable short-option handling (e.g., "-it" vs "-i -t") we have to -// iteratively catch parsing errors. This way we achieve LR parsing without -// transforming any arguments. Otherwise, there is no way we can discriminate -// combined short options from common arguments that should be left untouched. -// Pass `shellComplete` to continue parsing options on failure during shell -// completion when, the user-supplied options may be incomplete. -func parseIter(set *flag.FlagSet, ip iterativeParser, args []string, shellComplete bool) error { - for { - err := set.Parse(args) - if !ip.useShortOptionHandling() || err == nil { - if shellComplete { - return nil - } - return err - } - - trimmed, trimErr := flagFromError(err) - if trimErr != nil { - return err - } - - // regenerate the initial args with the split short opts - argsWereSplit := false - for i, arg := range args { - // skip args that are not part of the error message - if name := strings.TrimLeft(arg, "-"); name != trimmed { - continue - } - - // if we can't split, the error was accurate - shortOpts := splitShortOptions(set, arg) - if len(shortOpts) == 1 { - return err - } - - // swap current argument with the split version - // do not include args that parsed correctly so far as it would - // trigger Value.Set() on those args and would result in - // duplicates for slice type flags - args = append(shortOpts, args[i+1:]...) - argsWereSplit = true - break - } - - // This should be an impossible to reach code path, but in case the arg - // splitting failed to happen, this will prevent infinite loops - if !argsWereSplit { - return err - } - } -} - -const providedButNotDefinedErrMsg = "flag provided but not defined: -" - -// flagFromError tries to parse a provided flag from an error message. If the -// parsing fials, it returns the input error and an empty string -func flagFromError(err error) (string, error) { - errStr := err.Error() - trimmed := strings.TrimPrefix(errStr, providedButNotDefinedErrMsg) - if errStr == trimmed { - return "", err - } - return trimmed, nil -} - -func splitShortOptions(set *flag.FlagSet, arg string) []string { - shortFlagsExist := func(s string) bool { - for _, c := range s[1:] { - if f := set.Lookup(string(c)); f == nil { - return false - } - } - return true - } - - if !isSplittable(arg) || !shortFlagsExist(arg) { - return []string{arg} - } - - separated := make([]string, 0, len(arg)-1) - for _, flagChar := range arg[1:] { - separated = append(separated, "-"+string(flagChar)) - } - - return separated -} - -func isSplittable(flagArg string) bool { - return strings.HasPrefix(flagArg, "-") && !strings.HasPrefix(flagArg, "--") && len(flagArg) > 2 -} diff --git a/vendor/github.com/urfave/cli/v2/sliceflag.go b/vendor/github.com/urfave/cli/v2/sliceflag.go deleted file mode 100644 index b2ca59041..000000000 --- a/vendor/github.com/urfave/cli/v2/sliceflag.go +++ /dev/null @@ -1,290 +0,0 @@ -package cli - -import ( - "flag" - "reflect" -) - -type ( - // SliceFlag extends implementations like StringSliceFlag and IntSliceFlag with support for using slices directly, - // as Value and/or Destination. - // See also SliceFlagTarget, MultiStringFlag, MultiFloat64Flag, MultiInt64Flag, MultiIntFlag. - SliceFlag[T SliceFlagTarget[E], S ~[]E, E any] struct { - Target T - Value S - Destination *S - } - - // SliceFlagTarget models a target implementation for use with SliceFlag. - // The three methods, SetValue, SetDestination, and GetDestination, are necessary to propagate Value and - // Destination, where Value is propagated inwards (initially), and Destination is propagated outwards (on every - // update). - SliceFlagTarget[E any] interface { - Flag - RequiredFlag - DocGenerationFlag - VisibleFlag - CategorizableFlag - - // SetValue should propagate the given slice to the target, ideally as a new value. - // Note that a nil slice should nil/clear any existing value (modelled as ~[]E). - SetValue(slice []E) - // SetDestination should propagate the given slice to the target, ideally as a new value. - // Note that a nil slice should nil/clear any existing value (modelled as ~*[]E). - SetDestination(slice []E) - // GetDestination should return the current value referenced by any destination, or nil if nil/unset. - GetDestination() []E - } - - // MultiStringFlag extends StringSliceFlag with support for using slices directly, as Value and/or Destination. - // See also SliceFlag. - MultiStringFlag = SliceFlag[*StringSliceFlag, []string, string] - - // MultiFloat64Flag extends Float64SliceFlag with support for using slices directly, as Value and/or Destination. - // See also SliceFlag. - MultiFloat64Flag = SliceFlag[*Float64SliceFlag, []float64, float64] - - // MultiInt64Flag extends Int64SliceFlag with support for using slices directly, as Value and/or Destination. - // See also SliceFlag. - MultiInt64Flag = SliceFlag[*Int64SliceFlag, []int64, int64] - - // MultiIntFlag extends IntSliceFlag with support for using slices directly, as Value and/or Destination. - // See also SliceFlag. - MultiIntFlag = SliceFlag[*IntSliceFlag, []int, int] - - flagValueHook struct { - value Generic - hook func() - } -) - -var ( - // compile time assertions - - _ SliceFlagTarget[string] = (*StringSliceFlag)(nil) - _ SliceFlagTarget[string] = (*SliceFlag[*StringSliceFlag, []string, string])(nil) - _ SliceFlagTarget[string] = (*MultiStringFlag)(nil) - _ SliceFlagTarget[float64] = (*MultiFloat64Flag)(nil) - _ SliceFlagTarget[int64] = (*MultiInt64Flag)(nil) - _ SliceFlagTarget[int] = (*MultiIntFlag)(nil) - - _ Generic = (*flagValueHook)(nil) - _ Serializer = (*flagValueHook)(nil) -) - -func (x *SliceFlag[T, S, E]) Apply(set *flag.FlagSet) error { - x.Target.SetValue(x.convertSlice(x.Value)) - - destination := x.Destination - if destination == nil { - x.Target.SetDestination(nil) - - return x.Target.Apply(set) - } - - x.Target.SetDestination(x.convertSlice(*destination)) - - return applyFlagValueHook(set, x.Target.Apply, func() { - *destination = x.Target.GetDestination() - }) -} - -func (x *SliceFlag[T, S, E]) convertSlice(slice S) []E { - result := make([]E, len(slice)) - copy(result, slice) - return result -} - -func (x *SliceFlag[T, S, E]) SetValue(slice S) { - x.Value = slice -} - -func (x *SliceFlag[T, S, E]) SetDestination(slice S) { - if slice != nil { - x.Destination = &slice - } else { - x.Destination = nil - } -} - -func (x *SliceFlag[T, S, E]) GetDestination() S { - if destination := x.Destination; destination != nil { - return *destination - } - return nil -} - -func (x *SliceFlag[T, S, E]) String() string { return x.Target.String() } -func (x *SliceFlag[T, S, E]) Names() []string { return x.Target.Names() } -func (x *SliceFlag[T, S, E]) IsSet() bool { return x.Target.IsSet() } -func (x *SliceFlag[T, S, E]) IsRequired() bool { return x.Target.IsRequired() } -func (x *SliceFlag[T, S, E]) TakesValue() bool { return x.Target.TakesValue() } -func (x *SliceFlag[T, S, E]) GetUsage() string { return x.Target.GetUsage() } -func (x *SliceFlag[T, S, E]) GetValue() string { return x.Target.GetValue() } -func (x *SliceFlag[T, S, E]) GetDefaultText() string { return x.Target.GetDefaultText() } -func (x *SliceFlag[T, S, E]) GetEnvVars() []string { return x.Target.GetEnvVars() } -func (x *SliceFlag[T, S, E]) IsVisible() bool { return x.Target.IsVisible() } -func (x *SliceFlag[T, S, E]) GetCategory() string { return x.Target.GetCategory() } - -func (x *flagValueHook) Set(value string) error { - if err := x.value.Set(value); err != nil { - return err - } - x.hook() - return nil -} - -func (x *flagValueHook) String() string { - // note: this is necessary due to the way Go's flag package handles defaults - isZeroValue := func(f flag.Value, v string) bool { - /* - https://cs.opensource.google/go/go/+/refs/tags/go1.18.3:src/flag/flag.go;drc=2580d0e08d5e9f979b943758d3c49877fb2324cb;l=453 - - Copyright (c) 2009 The Go Authors. All rights reserved. - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following disclaimer - in the documentation and/or other materials provided with the - distribution. - * Neither the name of Google Inc. nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - // Build a zero value of the flag's Value type, and see if the - // result of calling its String method equals the value passed in. - // This works unless the Value type is itself an interface type. - typ := reflect.TypeOf(f) - var z reflect.Value - if typ.Kind() == reflect.Pointer { - z = reflect.New(typ.Elem()) - } else { - z = reflect.Zero(typ) - } - return v == z.Interface().(flag.Value).String() - } - if x.value != nil { - // only return non-empty if not the same string as returned by the zero value - if s := x.value.String(); !isZeroValue(x.value, s) { - return s - } - } - return `` -} - -func (x *flagValueHook) Serialize() string { - if value, ok := x.value.(Serializer); ok { - return value.Serialize() - } - return x.String() -} - -// applyFlagValueHook wraps calls apply then wraps flags to call a hook function on update and after initial apply. -func applyFlagValueHook(set *flag.FlagSet, apply func(set *flag.FlagSet) error, hook func()) error { - if apply == nil || set == nil || hook == nil { - panic(`invalid input`) - } - var tmp flag.FlagSet - if err := apply(&tmp); err != nil { - return err - } - tmp.VisitAll(func(f *flag.Flag) { set.Var(&flagValueHook{value: f.Value, hook: hook}, f.Name, f.Usage) }) - hook() - return nil -} - -// newSliceFlagValue is for implementing SliceFlagTarget.SetValue and SliceFlagTarget.SetDestination. -// It's e.g. as part of StringSliceFlag.SetValue, using the factory NewStringSlice. -func newSliceFlagValue[R any, S ~[]E, E any](factory func(defaults ...E) *R, defaults S) *R { - if defaults == nil { - return nil - } - return factory(defaults...) -} - -// unwrapFlagValue strips any/all *flagValueHook wrappers. -func unwrapFlagValue(v flag.Value) flag.Value { - for { - h, ok := v.(*flagValueHook) - if !ok { - return v - } - v = h.value - } -} - -// NOTE: the methods below are in this file to make use of the build constraint - -func (f *Float64SliceFlag) SetValue(slice []float64) { - f.Value = newSliceFlagValue(NewFloat64Slice, slice) -} - -func (f *Float64SliceFlag) SetDestination(slice []float64) { - f.Destination = newSliceFlagValue(NewFloat64Slice, slice) -} - -func (f *Float64SliceFlag) GetDestination() []float64 { - if destination := f.Destination; destination != nil { - return destination.Value() - } - return nil -} - -func (f *Int64SliceFlag) SetValue(slice []int64) { - f.Value = newSliceFlagValue(NewInt64Slice, slice) -} - -func (f *Int64SliceFlag) SetDestination(slice []int64) { - f.Destination = newSliceFlagValue(NewInt64Slice, slice) -} - -func (f *Int64SliceFlag) GetDestination() []int64 { - if destination := f.Destination; destination != nil { - return destination.Value() - } - return nil -} - -func (f *IntSliceFlag) SetValue(slice []int) { - f.Value = newSliceFlagValue(NewIntSlice, slice) -} - -func (f *IntSliceFlag) SetDestination(slice []int) { - f.Destination = newSliceFlagValue(NewIntSlice, slice) -} - -func (f *IntSliceFlag) GetDestination() []int { - if destination := f.Destination; destination != nil { - return destination.Value() - } - return nil -} - -func (f *StringSliceFlag) SetValue(slice []string) { - f.Value = newSliceFlagValue(NewStringSlice, slice) -} - -func (f *StringSliceFlag) SetDestination(slice []string) { - f.Destination = newSliceFlagValue(NewStringSlice, slice) -} - -func (f *StringSliceFlag) GetDestination() []string { - if destination := f.Destination; destination != nil { - return destination.Value() - } - return nil -} diff --git a/vendor/github.com/urfave/cli/v2/suggestions.go b/vendor/github.com/urfave/cli/v2/suggestions.go deleted file mode 100644 index 9d2b7a81e..000000000 --- a/vendor/github.com/urfave/cli/v2/suggestions.go +++ /dev/null @@ -1,68 +0,0 @@ -//go:build !urfave_cli_no_suggest -// +build !urfave_cli_no_suggest - -package cli - -import ( - "fmt" - - "github.com/xrash/smetrics" -) - -func init() { - SuggestFlag = suggestFlag - SuggestCommand = suggestCommand -} - -func jaroWinkler(a, b string) float64 { - // magic values are from https://github.com/xrash/smetrics/blob/039620a656736e6ad994090895784a7af15e0b80/jaro-winkler.go#L8 - const ( - boostThreshold = 0.7 - prefixSize = 4 - ) - return smetrics.JaroWinkler(a, b, boostThreshold, prefixSize) -} - -func suggestFlag(flags []Flag, provided string, hideHelp bool) string { - distance := 0.0 - suggestion := "" - - for _, flag := range flags { - flagNames := flag.Names() - if !hideHelp && HelpFlag != nil { - flagNames = append(flagNames, HelpFlag.Names()...) - } - for _, name := range flagNames { - newDistance := jaroWinkler(name, provided) - if newDistance > distance { - distance = newDistance - suggestion = name - } - } - } - - if len(suggestion) == 1 { - suggestion = "-" + suggestion - } else if len(suggestion) > 1 { - suggestion = "--" + suggestion - } - - return suggestion -} - -// suggestCommand takes a list of commands and a provided string to suggest a -// command name -func suggestCommand(commands []*Command, provided string) (suggestion string) { - distance := 0.0 - for _, command := range commands { - for _, name := range append(command.Names(), helpName, helpAlias) { - newDistance := jaroWinkler(name, provided) - if newDistance > distance { - distance = newDistance - suggestion = name - } - } - } - - return fmt.Sprintf(SuggestDidYouMeanTemplate, suggestion) -} diff --git a/vendor/github.com/urfave/cli/v2/zz_generated.flags.go b/vendor/github.com/urfave/cli/v2/zz_generated.flags.go deleted file mode 100644 index f2fc8c88b..000000000 --- a/vendor/github.com/urfave/cli/v2/zz_generated.flags.go +++ /dev/null @@ -1,865 +0,0 @@ -// WARNING: this file is generated. DO NOT EDIT - -package cli - -import "time" - -// Float64SliceFlag is a flag with type *Float64Slice -type Float64SliceFlag struct { - Name string - - Category string - DefaultText string - FilePath string - Usage string - - Required bool - Hidden bool - HasBeenSet bool - - Value *Float64Slice - Destination *Float64Slice - - Aliases []string - EnvVars []string - - defaultValue *Float64Slice - defaultValueSet bool - - separator separatorSpec - - Action func(*Context, []float64) error -} - -// IsSet returns whether or not the flag has been set through env or file -func (f *Float64SliceFlag) IsSet() bool { - return f.HasBeenSet -} - -// Names returns the names of the flag -func (f *Float64SliceFlag) Names() []string { - return FlagNames(f.Name, f.Aliases) -} - -// IsRequired returns whether or not the flag is required -func (f *Float64SliceFlag) IsRequired() bool { - return f.Required -} - -// IsVisible returns true if the flag is not hidden, otherwise false -func (f *Float64SliceFlag) IsVisible() bool { - return !f.Hidden -} - -// GenericFlag is a flag with type Generic -type GenericFlag struct { - Name string - - Category string - DefaultText string - FilePath string - Usage string - - Required bool - Hidden bool - HasBeenSet bool - - Value Generic - Destination Generic - - Aliases []string - EnvVars []string - - defaultValue Generic - defaultValueSet bool - - TakesFile bool - - Action func(*Context, interface{}) error -} - -// String returns a readable representation of this value (for usage defaults) -func (f *GenericFlag) String() string { - return FlagStringer(f) -} - -// IsSet returns whether or not the flag has been set through env or file -func (f *GenericFlag) IsSet() bool { - return f.HasBeenSet -} - -// Names returns the names of the flag -func (f *GenericFlag) Names() []string { - return FlagNames(f.Name, f.Aliases) -} - -// IsRequired returns whether or not the flag is required -func (f *GenericFlag) IsRequired() bool { - return f.Required -} - -// IsVisible returns true if the flag is not hidden, otherwise false -func (f *GenericFlag) IsVisible() bool { - return !f.Hidden -} - -// Int64SliceFlag is a flag with type *Int64Slice -type Int64SliceFlag struct { - Name string - - Category string - DefaultText string - FilePath string - Usage string - - Required bool - Hidden bool - HasBeenSet bool - - Value *Int64Slice - Destination *Int64Slice - - Aliases []string - EnvVars []string - - defaultValue *Int64Slice - defaultValueSet bool - - separator separatorSpec - - Action func(*Context, []int64) error -} - -// IsSet returns whether or not the flag has been set through env or file -func (f *Int64SliceFlag) IsSet() bool { - return f.HasBeenSet -} - -// Names returns the names of the flag -func (f *Int64SliceFlag) Names() []string { - return FlagNames(f.Name, f.Aliases) -} - -// IsRequired returns whether or not the flag is required -func (f *Int64SliceFlag) IsRequired() bool { - return f.Required -} - -// IsVisible returns true if the flag is not hidden, otherwise false -func (f *Int64SliceFlag) IsVisible() bool { - return !f.Hidden -} - -// IntSliceFlag is a flag with type *IntSlice -type IntSliceFlag struct { - Name string - - Category string - DefaultText string - FilePath string - Usage string - - Required bool - Hidden bool - HasBeenSet bool - - Value *IntSlice - Destination *IntSlice - - Aliases []string - EnvVars []string - - defaultValue *IntSlice - defaultValueSet bool - - separator separatorSpec - - Action func(*Context, []int) error -} - -// IsSet returns whether or not the flag has been set through env or file -func (f *IntSliceFlag) IsSet() bool { - return f.HasBeenSet -} - -// Names returns the names of the flag -func (f *IntSliceFlag) Names() []string { - return FlagNames(f.Name, f.Aliases) -} - -// IsRequired returns whether or not the flag is required -func (f *IntSliceFlag) IsRequired() bool { - return f.Required -} - -// IsVisible returns true if the flag is not hidden, otherwise false -func (f *IntSliceFlag) IsVisible() bool { - return !f.Hidden -} - -// PathFlag is a flag with type Path -type PathFlag struct { - Name string - - Category string - DefaultText string - FilePath string - Usage string - - Required bool - Hidden bool - HasBeenSet bool - - Value Path - Destination *Path - - Aliases []string - EnvVars []string - - defaultValue Path - defaultValueSet bool - - TakesFile bool - - Action func(*Context, Path) error -} - -// String returns a readable representation of this value (for usage defaults) -func (f *PathFlag) String() string { - return FlagStringer(f) -} - -// IsSet returns whether or not the flag has been set through env or file -func (f *PathFlag) IsSet() bool { - return f.HasBeenSet -} - -// Names returns the names of the flag -func (f *PathFlag) Names() []string { - return FlagNames(f.Name, f.Aliases) -} - -// IsRequired returns whether or not the flag is required -func (f *PathFlag) IsRequired() bool { - return f.Required -} - -// IsVisible returns true if the flag is not hidden, otherwise false -func (f *PathFlag) IsVisible() bool { - return !f.Hidden -} - -// StringSliceFlag is a flag with type *StringSlice -type StringSliceFlag struct { - Name string - - Category string - DefaultText string - FilePath string - Usage string - - Required bool - Hidden bool - HasBeenSet bool - - Value *StringSlice - Destination *StringSlice - - Aliases []string - EnvVars []string - - defaultValue *StringSlice - defaultValueSet bool - - separator separatorSpec - - TakesFile bool - - Action func(*Context, []string) error - - KeepSpace bool -} - -// IsSet returns whether or not the flag has been set through env or file -func (f *StringSliceFlag) IsSet() bool { - return f.HasBeenSet -} - -// Names returns the names of the flag -func (f *StringSliceFlag) Names() []string { - return FlagNames(f.Name, f.Aliases) -} - -// IsRequired returns whether or not the flag is required -func (f *StringSliceFlag) IsRequired() bool { - return f.Required -} - -// IsVisible returns true if the flag is not hidden, otherwise false -func (f *StringSliceFlag) IsVisible() bool { - return !f.Hidden -} - -// TimestampFlag is a flag with type *Timestamp -type TimestampFlag struct { - Name string - - Category string - DefaultText string - FilePath string - Usage string - - Required bool - Hidden bool - HasBeenSet bool - - Value *Timestamp - Destination *Timestamp - - Aliases []string - EnvVars []string - - defaultValue *Timestamp - defaultValueSet bool - - Layout string - - Timezone *time.Location - - Action func(*Context, *time.Time) error -} - -// String returns a readable representation of this value (for usage defaults) -func (f *TimestampFlag) String() string { - return FlagStringer(f) -} - -// IsSet returns whether or not the flag has been set through env or file -func (f *TimestampFlag) IsSet() bool { - return f.HasBeenSet -} - -// Names returns the names of the flag -func (f *TimestampFlag) Names() []string { - return FlagNames(f.Name, f.Aliases) -} - -// IsRequired returns whether or not the flag is required -func (f *TimestampFlag) IsRequired() bool { - return f.Required -} - -// IsVisible returns true if the flag is not hidden, otherwise false -func (f *TimestampFlag) IsVisible() bool { - return !f.Hidden -} - -// Uint64SliceFlag is a flag with type *Uint64Slice -type Uint64SliceFlag struct { - Name string - - Category string - DefaultText string - FilePath string - Usage string - - Required bool - Hidden bool - HasBeenSet bool - - Value *Uint64Slice - Destination *Uint64Slice - - Aliases []string - EnvVars []string - - defaultValue *Uint64Slice - defaultValueSet bool - - separator separatorSpec - - Action func(*Context, []uint64) error -} - -// IsSet returns whether or not the flag has been set through env or file -func (f *Uint64SliceFlag) IsSet() bool { - return f.HasBeenSet -} - -// Names returns the names of the flag -func (f *Uint64SliceFlag) Names() []string { - return FlagNames(f.Name, f.Aliases) -} - -// IsRequired returns whether or not the flag is required -func (f *Uint64SliceFlag) IsRequired() bool { - return f.Required -} - -// IsVisible returns true if the flag is not hidden, otherwise false -func (f *Uint64SliceFlag) IsVisible() bool { - return !f.Hidden -} - -// UintSliceFlag is a flag with type *UintSlice -type UintSliceFlag struct { - Name string - - Category string - DefaultText string - FilePath string - Usage string - - Required bool - Hidden bool - HasBeenSet bool - - Value *UintSlice - Destination *UintSlice - - Aliases []string - EnvVars []string - - defaultValue *UintSlice - defaultValueSet bool - - separator separatorSpec - - Action func(*Context, []uint) error -} - -// IsSet returns whether or not the flag has been set through env or file -func (f *UintSliceFlag) IsSet() bool { - return f.HasBeenSet -} - -// Names returns the names of the flag -func (f *UintSliceFlag) Names() []string { - return FlagNames(f.Name, f.Aliases) -} - -// IsRequired returns whether or not the flag is required -func (f *UintSliceFlag) IsRequired() bool { - return f.Required -} - -// IsVisible returns true if the flag is not hidden, otherwise false -func (f *UintSliceFlag) IsVisible() bool { - return !f.Hidden -} - -// BoolFlag is a flag with type bool -type BoolFlag struct { - Name string - - Category string - DefaultText string - FilePath string - Usage string - - Required bool - Hidden bool - HasBeenSet bool - - Value bool - Destination *bool - - Aliases []string - EnvVars []string - - defaultValue bool - defaultValueSet bool - - Count *int - - DisableDefaultText bool - - Action func(*Context, bool) error -} - -// String returns a readable representation of this value (for usage defaults) -func (f *BoolFlag) String() string { - return FlagStringer(f) -} - -// IsSet returns whether or not the flag has been set through env or file -func (f *BoolFlag) IsSet() bool { - return f.HasBeenSet -} - -// Names returns the names of the flag -func (f *BoolFlag) Names() []string { - return FlagNames(f.Name, f.Aliases) -} - -// IsRequired returns whether or not the flag is required -func (f *BoolFlag) IsRequired() bool { - return f.Required -} - -// IsVisible returns true if the flag is not hidden, otherwise false -func (f *BoolFlag) IsVisible() bool { - return !f.Hidden -} - -// Float64Flag is a flag with type float64 -type Float64Flag struct { - Name string - - Category string - DefaultText string - FilePath string - Usage string - - Required bool - Hidden bool - HasBeenSet bool - - Value float64 - Destination *float64 - - Aliases []string - EnvVars []string - - defaultValue float64 - defaultValueSet bool - - Action func(*Context, float64) error -} - -// String returns a readable representation of this value (for usage defaults) -func (f *Float64Flag) String() string { - return FlagStringer(f) -} - -// IsSet returns whether or not the flag has been set through env or file -func (f *Float64Flag) IsSet() bool { - return f.HasBeenSet -} - -// Names returns the names of the flag -func (f *Float64Flag) Names() []string { - return FlagNames(f.Name, f.Aliases) -} - -// IsRequired returns whether or not the flag is required -func (f *Float64Flag) IsRequired() bool { - return f.Required -} - -// IsVisible returns true if the flag is not hidden, otherwise false -func (f *Float64Flag) IsVisible() bool { - return !f.Hidden -} - -// IntFlag is a flag with type int -type IntFlag struct { - Name string - - Category string - DefaultText string - FilePath string - Usage string - - Required bool - Hidden bool - HasBeenSet bool - - Value int - Destination *int - - Aliases []string - EnvVars []string - - defaultValue int - defaultValueSet bool - - Base int - - Action func(*Context, int) error -} - -// String returns a readable representation of this value (for usage defaults) -func (f *IntFlag) String() string { - return FlagStringer(f) -} - -// IsSet returns whether or not the flag has been set through env or file -func (f *IntFlag) IsSet() bool { - return f.HasBeenSet -} - -// Names returns the names of the flag -func (f *IntFlag) Names() []string { - return FlagNames(f.Name, f.Aliases) -} - -// IsRequired returns whether or not the flag is required -func (f *IntFlag) IsRequired() bool { - return f.Required -} - -// IsVisible returns true if the flag is not hidden, otherwise false -func (f *IntFlag) IsVisible() bool { - return !f.Hidden -} - -// Int64Flag is a flag with type int64 -type Int64Flag struct { - Name string - - Category string - DefaultText string - FilePath string - Usage string - - Required bool - Hidden bool - HasBeenSet bool - - Value int64 - Destination *int64 - - Aliases []string - EnvVars []string - - defaultValue int64 - defaultValueSet bool - - Base int - - Action func(*Context, int64) error -} - -// String returns a readable representation of this value (for usage defaults) -func (f *Int64Flag) String() string { - return FlagStringer(f) -} - -// IsSet returns whether or not the flag has been set through env or file -func (f *Int64Flag) IsSet() bool { - return f.HasBeenSet -} - -// Names returns the names of the flag -func (f *Int64Flag) Names() []string { - return FlagNames(f.Name, f.Aliases) -} - -// IsRequired returns whether or not the flag is required -func (f *Int64Flag) IsRequired() bool { - return f.Required -} - -// IsVisible returns true if the flag is not hidden, otherwise false -func (f *Int64Flag) IsVisible() bool { - return !f.Hidden -} - -// StringFlag is a flag with type string -type StringFlag struct { - Name string - - Category string - DefaultText string - FilePath string - Usage string - - Required bool - Hidden bool - HasBeenSet bool - - Value string - Destination *string - - Aliases []string - EnvVars []string - - defaultValue string - defaultValueSet bool - - TakesFile bool - - Action func(*Context, string) error -} - -// String returns a readable representation of this value (for usage defaults) -func (f *StringFlag) String() string { - return FlagStringer(f) -} - -// IsSet returns whether or not the flag has been set through env or file -func (f *StringFlag) IsSet() bool { - return f.HasBeenSet -} - -// Names returns the names of the flag -func (f *StringFlag) Names() []string { - return FlagNames(f.Name, f.Aliases) -} - -// IsRequired returns whether or not the flag is required -func (f *StringFlag) IsRequired() bool { - return f.Required -} - -// IsVisible returns true if the flag is not hidden, otherwise false -func (f *StringFlag) IsVisible() bool { - return !f.Hidden -} - -// DurationFlag is a flag with type time.Duration -type DurationFlag struct { - Name string - - Category string - DefaultText string - FilePath string - Usage string - - Required bool - Hidden bool - HasBeenSet bool - - Value time.Duration - Destination *time.Duration - - Aliases []string - EnvVars []string - - defaultValue time.Duration - defaultValueSet bool - - Action func(*Context, time.Duration) error -} - -// String returns a readable representation of this value (for usage defaults) -func (f *DurationFlag) String() string { - return FlagStringer(f) -} - -// IsSet returns whether or not the flag has been set through env or file -func (f *DurationFlag) IsSet() bool { - return f.HasBeenSet -} - -// Names returns the names of the flag -func (f *DurationFlag) Names() []string { - return FlagNames(f.Name, f.Aliases) -} - -// IsRequired returns whether or not the flag is required -func (f *DurationFlag) IsRequired() bool { - return f.Required -} - -// IsVisible returns true if the flag is not hidden, otherwise false -func (f *DurationFlag) IsVisible() bool { - return !f.Hidden -} - -// UintFlag is a flag with type uint -type UintFlag struct { - Name string - - Category string - DefaultText string - FilePath string - Usage string - - Required bool - Hidden bool - HasBeenSet bool - - Value uint - Destination *uint - - Aliases []string - EnvVars []string - - defaultValue uint - defaultValueSet bool - - Base int - - Action func(*Context, uint) error -} - -// String returns a readable representation of this value (for usage defaults) -func (f *UintFlag) String() string { - return FlagStringer(f) -} - -// IsSet returns whether or not the flag has been set through env or file -func (f *UintFlag) IsSet() bool { - return f.HasBeenSet -} - -// Names returns the names of the flag -func (f *UintFlag) Names() []string { - return FlagNames(f.Name, f.Aliases) -} - -// IsRequired returns whether or not the flag is required -func (f *UintFlag) IsRequired() bool { - return f.Required -} - -// IsVisible returns true if the flag is not hidden, otherwise false -func (f *UintFlag) IsVisible() bool { - return !f.Hidden -} - -// Uint64Flag is a flag with type uint64 -type Uint64Flag struct { - Name string - - Category string - DefaultText string - FilePath string - Usage string - - Required bool - Hidden bool - HasBeenSet bool - - Value uint64 - Destination *uint64 - - Aliases []string - EnvVars []string - - defaultValue uint64 - defaultValueSet bool - - Base int - - Action func(*Context, uint64) error -} - -// String returns a readable representation of this value (for usage defaults) -func (f *Uint64Flag) String() string { - return FlagStringer(f) -} - -// IsSet returns whether or not the flag has been set through env or file -func (f *Uint64Flag) IsSet() bool { - return f.HasBeenSet -} - -// Names returns the names of the flag -func (f *Uint64Flag) Names() []string { - return FlagNames(f.Name, f.Aliases) -} - -// IsRequired returns whether or not the flag is required -func (f *Uint64Flag) IsRequired() bool { - return f.Required -} - -// IsVisible returns true if the flag is not hidden, otherwise false -func (f *Uint64Flag) IsVisible() bool { - return !f.Hidden -} - -// vim:ro diff --git a/vendor/github.com/urfave/cli/v3/.gitignore b/vendor/github.com/urfave/cli/v3/.gitignore new file mode 100644 index 000000000..6b1914904 --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/.gitignore @@ -0,0 +1,11 @@ +*.coverprofile +*.exe +*.orig +.*envrc +.envrc +.idea +/.local/ +/site/ +coverage.txt +examples/*/built-example +vendor diff --git a/vendor/github.com/urfave/cli/v3/.golangci.yaml b/vendor/github.com/urfave/cli/v3/.golangci.yaml new file mode 100644 index 000000000..473a221ab --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/.golangci.yaml @@ -0,0 +1,13 @@ +version: "2" + +formatters: + enable: + - gofumpt + +linters: + enable: + - makezero + - misspell + exclusions: + presets: + - std-error-handling diff --git a/vendor/github.com/urfave/cli/v3/CODE_OF_CONDUCT.md b/vendor/github.com/urfave/cli/v3/CODE_OF_CONDUCT.md new file mode 100644 index 000000000..9fee14807 --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/CODE_OF_CONDUCT.md @@ -0,0 +1,75 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, gender identity and expression, level of experience, +education, socio-economic status, nationality, personal appearance, race, +religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or + advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting urfave-governance@googlegroups.com, a members-only group +that is world-postable. All complaints will be reviewed and investigated and +will result in a response that is deemed necessary and appropriate to the +circumstances. The project team is obligated to maintain confidentiality with +regard to the reporter of an incident. Further details of specific enforcement +policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +[homepage]: https://www.contributor-covenant.org + diff --git a/vendor/github.com/cpuguy83/go-md2man/v2/LICENSE.md b/vendor/github.com/urfave/cli/v3/LICENSE similarity index 94% rename from vendor/github.com/cpuguy83/go-md2man/v2/LICENSE.md rename to vendor/github.com/urfave/cli/v3/LICENSE index 1cade6cef..a23fc53de 100644 --- a/vendor/github.com/cpuguy83/go-md2man/v2/LICENSE.md +++ b/vendor/github.com/urfave/cli/v3/LICENSE @@ -1,6 +1,6 @@ -The MIT License (MIT) +MIT License -Copyright (c) 2014 Brian Goff +Copyright (c) 2023 urfave/cli maintainers Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/vendor/github.com/urfave/cli/v2/Makefile b/vendor/github.com/urfave/cli/v3/Makefile similarity index 79% rename from vendor/github.com/urfave/cli/v2/Makefile rename to vendor/github.com/urfave/cli/v3/Makefile index f0d41905e..2e4af3067 100644 --- a/vendor/github.com/urfave/cli/v2/Makefile +++ b/vendor/github.com/urfave/cli/v3/Makefile @@ -4,13 +4,13 @@ # are very important so that maintainers and contributors can focus their # attention on files that are primarily Go. -GO_RUN_BUILD := go run internal/build/build.go +GO_RUN_BUILD := go run scripts/build.go .PHONY: all -all: generate vet test check-binary-size gfmrun yamlfmt v2diff +all: generate vet test check-binary-size gfmrun # NOTE: this is a special catch-all rule to run any of the commands -# defined in internal/build/build.go with optional arguments passed +# defined in scripts/build.go with optional arguments passed # via GFLAGS (global flags) and FLAGS (command-specific flags), e.g.: # # $ make test GFLAGS='--packages cli' diff --git a/vendor/github.com/urfave/cli/v3/README.md b/vendor/github.com/urfave/cli/v3/README.md new file mode 100644 index 000000000..e04c7295b --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/README.md @@ -0,0 +1,56 @@ +# Welcome to urfave/cli + +[![Go Reference][goreference_badge]][goreference_link] +[![Go Report Card][goreportcard_badge]][goreportcard_link] +[![codecov][codecov_badge]][codecov_link] +[![Tests status][test_badge]][test_link] + +urfave/cli is a **declarative**, simple, fast, and fun package for building +command line tools in Go featuring: + +- commands and subcommands with alias and prefix match support +- flexible and permissive help system +- dynamic shell completion for `bash`, `zsh`, `fish`, and `powershell` +- no dependencies except Go standard library +- input flags for simple types, slices of simple types, time, duration, and + others +- compound short flag support (`-a` `-b` `-c` can be shortened to `-abc`) +- documentation generation in `man` and Markdown (supported via the + [`urfave/cli-docs`][urfave/cli-docs] module) +- input lookup from: + - environment variables + - plain text files + - structured file formats (supported via the + [`urfave/cli-altsrc`][urfave/cli-altsrc] module) + +## Documentation + +See the hosted documentation website at <https://cli.urfave.org>. Contents of +this website are built from the [`./docs`](./docs) directory. + +## Support + +Check the [Q&A discussions]. If you don't find answer to your question, [create +a new discussion]. + +If you found a bug or have a feature request, [create a new issue]. + +Please keep in mind that this project is run by unpaid volunteers. + +### License + +See [`LICENSE`](./LICENSE). + +[test_badge]: https://github.com/urfave/cli/actions/workflows/test.yml/badge.svg +[test_link]: https://github.com/urfave/cli/actions/workflows/test.yml +[goreference_badge]: https://pkg.go.dev/badge/github.com/urfave/cli/v3.svg +[goreference_link]: https://pkg.go.dev/github.com/urfave/cli/v3 +[goreportcard_badge]: https://goreportcard.com/badge/github.com/urfave/cli/v3 +[goreportcard_link]: https://goreportcard.com/report/github.com/urfave/cli/v3 +[codecov_badge]: https://codecov.io/gh/urfave/cli/branch/main/graph/badge.svg?token=t9YGWLh05g +[codecov_link]: https://codecov.io/gh/urfave/cli +[Q&A discussions]: https://github.com/urfave/cli/discussions/categories/q-a +[create a new discussion]: https://github.com/urfave/cli/discussions/new?category=q-a +[urfave/cli-docs]: https://github.com/urfave/cli-docs +[urfave/cli-altsrc]: https://github.com/urfave/cli-altsrc +[create a new issue]: https://github.com/urfave/cli/issues/new/choose diff --git a/vendor/github.com/urfave/cli/v3/args.go b/vendor/github.com/urfave/cli/v3/args.go new file mode 100644 index 000000000..918afb2ed --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/args.go @@ -0,0 +1,402 @@ +package cli + +import ( + "fmt" + "time" +) + +type Args interface { + // Get returns the nth argument, or else a blank string + Get(n int) string + // First returns the first argument, or else a blank string + First() string + // Tail returns the rest of the arguments (not the first one) + // or else an empty string slice + Tail() []string + // Len returns the length of the wrapped slice + Len() int + // Present checks if there are any arguments present + Present() bool + // Slice returns a copy of the internal slice + Slice() []string +} + +type stringSliceArgs struct { + v []string +} + +func (a *stringSliceArgs) Get(n int) string { + if len(a.v) > n { + return a.v[n] + } + return "" +} + +func (a *stringSliceArgs) First() string { + return a.Get(0) +} + +func (a *stringSliceArgs) Tail() []string { + if a.Len() >= 2 { + tail := a.v[1:] + ret := make([]string, len(tail)) + copy(ret, tail) + return ret + } + + return []string{} +} + +func (a *stringSliceArgs) Len() int { + return len(a.v) +} + +func (a *stringSliceArgs) Present() bool { + return a.Len() != 0 +} + +func (a *stringSliceArgs) Slice() []string { + ret := make([]string, len(a.v)) + copy(ret, a.v) + return ret +} + +// Argument captures a positional argument that can +// be parsed +type Argument interface { + // which this argument can be accessed using the given name + HasName(string) bool + + // Parse the given args and return unparsed args and/or error + Parse([]string) ([]string, error) + + // The usage template for this argument to use in help + Usage() string + + // The Value of this Arg + Get() any +} + +// AnyArguments to differentiate between no arguments(nil) vs aleast one +var AnyArguments = []Argument{ + &StringArgs{ + Max: -1, + }, +} + +type ArgumentBase[T any, C any, VC ValueCreator[T, C]] struct { + Name string `json:"name"` // the name of this argument + Value T `json:"value"` // the default value of this argument + Destination *T `json:"-"` // the destination point for this argument + UsageText string `json:"usageText"` // the usage text to show + Config C `json:"config"` // config for this argument similar to Flag Config + + value *T +} + +func (a *ArgumentBase[T, C, VC]) HasName(s string) bool { + return s == a.Name +} + +func (a *ArgumentBase[T, C, VC]) Usage() string { + if a.UsageText != "" { + return a.UsageText + } + + usageFormat := "%[1]s" + return fmt.Sprintf(usageFormat, a.Name) +} + +func (a *ArgumentBase[T, C, VC]) Parse(s []string) ([]string, error) { + tracef("calling arg%[1] parse with args %[2]", a.Name, s) + + var vc VC + var t T + value := vc.Create(a.Value, &t, a.Config) + a.value = &t + + tracef("attempting arg%[1] parse", &a.Name) + if len(s) > 0 { + if err := value.Set(s[0]); err != nil { + return s, err + } + *a.value = value.Get().(T) + tracef("set arg%[1] one value", a.Name, *a.value) + } + + if a.Destination != nil { + tracef("setting destination") + *a.Destination = *a.value + } + + if len(s) > 0 { + return s[1:], nil + } + return s, nil +} + +func (a *ArgumentBase[T, C, VC]) Get() any { + if a.value != nil { + return *a.value + } + return a.Value +} + +// ArgumentsBase is a base type for slice arguments +type ArgumentsBase[T any, C any, VC ValueCreator[T, C]] struct { + Name string `json:"name"` // the name of this argument + Value T `json:"value"` // the default value of this argument + Destination *[]T `json:"-"` // the destination point for this argument + UsageText string `json:"usageText"` // the usage text to show + Min int `json:"minTimes"` // the min num of occurrences of this argument + Max int `json:"maxTimes"` // the max num of occurrences of this argument, set to -1 for unlimited + Config C `json:"config"` // config for this argument similar to Flag Config + + values []T +} + +func (a *ArgumentsBase[T, C, VC]) HasName(s string) bool { + return s == a.Name +} + +func (a *ArgumentsBase[T, C, VC]) Usage() string { + if a.UsageText != "" { + return a.UsageText + } + + usageFormat := "" + if a.Min == 0 { + if a.Max == 1 { + usageFormat = "[%[1]s]" + } else { + usageFormat = "[%[1]s ...]" + } + } else { + usageFormat = "%[1]s [%[1]s ...]" + } + return fmt.Sprintf(usageFormat, a.Name) +} + +func (a *ArgumentsBase[T, C, VC]) Parse(s []string) ([]string, error) { + tracef("calling arg%[1] parse with args %[2]", &a.Name, s) + if a.Max == 0 { + fmt.Printf("WARNING args %s has max 0, not parsing argument\n", a.Name) + return s, nil + } + if a.Max != -1 && a.Min > a.Max { + fmt.Printf("WARNING args %s has min[%d] > max[%d], not parsing argument\n", a.Name, a.Min, a.Max) + return s, nil + } + + count := 0 + var vc VC + var t T + value := vc.Create(a.Value, &t, a.Config) + a.values = []T{} + + tracef("attempting arg%[1] parse", &a.Name) + for _, arg := range s { + if err := value.Set(arg); err != nil { + return s, err + } + tracef("set arg%[1] one value", &a.Name, value.Get().(T)) + a.values = append(a.values, value.Get().(T)) + count++ + if count >= a.Max && a.Max > -1 { + break + } + } + if count < a.Min { + return s, fmt.Errorf("sufficient count of arg %s not provided, given %d expected %d", a.Name, count, a.Min) + } + + if a.Destination != nil { + tracef("appending destination") + *a.Destination = a.values // append(*a.Destination, a.values...) + } + + return s[count:], nil +} + +func (a *ArgumentsBase[T, C, VC]) Get() any { + if a.values != nil { + return a.values + } + return []T{} +} + +type ( + FloatArg = ArgumentBase[float64, NoConfig, floatValue[float64]] + Float32Arg = ArgumentBase[float32, NoConfig, floatValue[float32]] + Float64Arg = ArgumentBase[float64, NoConfig, floatValue[float64]] + IntArg = ArgumentBase[int, IntegerConfig, intValue[int]] + Int8Arg = ArgumentBase[int8, IntegerConfig, intValue[int8]] + Int16Arg = ArgumentBase[int16, IntegerConfig, intValue[int16]] + Int32Arg = ArgumentBase[int32, IntegerConfig, intValue[int32]] + Int64Arg = ArgumentBase[int64, IntegerConfig, intValue[int64]] + StringArg = ArgumentBase[string, StringConfig, stringValue] + StringMapArgs = ArgumentBase[map[string]string, StringConfig, StringMap] + TimestampArg = ArgumentBase[time.Time, TimestampConfig, timestampValue] + UintArg = ArgumentBase[uint, IntegerConfig, uintValue[uint]] + Uint8Arg = ArgumentBase[uint8, IntegerConfig, uintValue[uint8]] + Uint16Arg = ArgumentBase[uint16, IntegerConfig, uintValue[uint16]] + Uint32Arg = ArgumentBase[uint32, IntegerConfig, uintValue[uint32]] + Uint64Arg = ArgumentBase[uint64, IntegerConfig, uintValue[uint64]] + + FloatArgs = ArgumentsBase[float64, NoConfig, floatValue[float64]] + Float32Args = ArgumentsBase[float32, NoConfig, floatValue[float32]] + Float64Args = ArgumentsBase[float64, NoConfig, floatValue[float64]] + IntArgs = ArgumentsBase[int, IntegerConfig, intValue[int]] + Int8Args = ArgumentsBase[int8, IntegerConfig, intValue[int8]] + Int16Args = ArgumentsBase[int16, IntegerConfig, intValue[int16]] + Int32Args = ArgumentsBase[int32, IntegerConfig, intValue[int32]] + Int64Args = ArgumentsBase[int64, IntegerConfig, intValue[int64]] + StringArgs = ArgumentsBase[string, StringConfig, stringValue] + TimestampArgs = ArgumentsBase[time.Time, TimestampConfig, timestampValue] + UintArgs = ArgumentsBase[uint, IntegerConfig, uintValue[uint]] + Uint8Args = ArgumentsBase[uint8, IntegerConfig, uintValue[uint8]] + Uint16Args = ArgumentsBase[uint16, IntegerConfig, uintValue[uint16]] + Uint32Args = ArgumentsBase[uint32, IntegerConfig, uintValue[uint32]] + Uint64Args = ArgumentsBase[uint64, IntegerConfig, uintValue[uint64]] +) + +func (c *Command) getArgValue(name string) any { + tracef("command %s looking for args %s", c.Name, name) + for _, arg := range c.Arguments { + if arg.HasName(name) { + tracef("command %s found args %s", c.Name, name) + return arg.Get() + } + } + tracef("command %s did not find args %s", c.Name, name) + return nil +} + +func arg[T any](name string, c *Command) T { + val := c.getArgValue(name) + if a, ok := val.(T); ok { + return a + } + var zero T + return zero +} + +func (c *Command) StringArg(name string) string { + return arg[string](name, c) +} + +func (c *Command) StringArgs(name string) []string { + return arg[[]string](name, c) +} + +func (c *Command) FloatArg(name string) float64 { + return arg[float64](name, c) +} + +func (c *Command) FloatArgs(name string) []float64 { + return arg[[]float64](name, c) +} + +func (c *Command) Float32Arg(name string) float32 { + return arg[float32](name, c) +} + +func (c *Command) Float32Args(name string) []float32 { + return arg[[]float32](name, c) +} + +func (c *Command) Float64Arg(name string) float64 { + return arg[float64](name, c) +} + +func (c *Command) Float64Args(name string) []float64 { + return arg[[]float64](name, c) +} + +func (c *Command) IntArg(name string) int { + return arg[int](name, c) +} + +func (c *Command) IntArgs(name string) []int { + return arg[[]int](name, c) +} + +func (c *Command) Int8Arg(name string) int8 { + return arg[int8](name, c) +} + +func (c *Command) Int8Args(name string) []int8 { + return arg[[]int8](name, c) +} + +func (c *Command) Int16Arg(name string) int16 { + return arg[int16](name, c) +} + +func (c *Command) Int16Args(name string) []int16 { + return arg[[]int16](name, c) +} + +func (c *Command) Int32Arg(name string) int32 { + return arg[int32](name, c) +} + +func (c *Command) Int32Args(name string) []int32 { + return arg[[]int32](name, c) +} + +func (c *Command) Int64Arg(name string) int64 { + return arg[int64](name, c) +} + +func (c *Command) Int64Args(name string) []int64 { + return arg[[]int64](name, c) +} + +func (c *Command) UintArg(name string) uint { + return arg[uint](name, c) +} + +func (c *Command) Uint8Arg(name string) uint8 { + return arg[uint8](name, c) +} + +func (c *Command) Uint16Arg(name string) uint16 { + return arg[uint16](name, c) +} + +func (c *Command) Uint32Arg(name string) uint32 { + return arg[uint32](name, c) +} + +func (c *Command) Uint64Arg(name string) uint64 { + return arg[uint64](name, c) +} + +func (c *Command) UintArgs(name string) []uint { + return arg[[]uint](name, c) +} + +func (c *Command) Uint8Args(name string) []uint8 { + return arg[[]uint8](name, c) +} + +func (c *Command) Uint16Args(name string) []uint16 { + return arg[[]uint16](name, c) +} + +func (c *Command) Uint32Args(name string) []uint32 { + return arg[[]uint32](name, c) +} + +func (c *Command) Uint64Args(name string) []uint64 { + return arg[[]uint64](name, c) +} + +func (c *Command) TimestampArg(name string) time.Time { + return arg[time.Time](name, c) +} + +func (c *Command) TimestampArgs(name string) []time.Time { + return arg[[]time.Time](name, c) +} diff --git a/vendor/github.com/urfave/cli/v3/autocomplete/bash_autocomplete b/vendor/github.com/urfave/cli/v3/autocomplete/bash_autocomplete new file mode 100644 index 000000000..d63937d97 --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/autocomplete/bash_autocomplete @@ -0,0 +1,34 @@ +#!/bin/bash + +# This is a shell completion script auto-generated by https://github.com/urfave/cli for bash. + +# Macs have bash3 for which the bash-completion package doesn't include +# _init_completion. This is a minimal version of that function. +__%[1]s_init_completion() { + COMPREPLY=() + _get_comp_words_by_ref "$@" cur prev words cword +} + +__%[1]s_bash_autocomplete() { + if [[ "${COMP_WORDS[0]}" != "source" ]]; then + local cur opts base words + COMPREPLY=() + cur="${COMP_WORDS[COMP_CWORD]}" + if declare -F _init_completion >/dev/null 2>&1; then + _init_completion -n "=:" || return + else + __%[1]s_init_completion -n "=:" || return + fi + words=("${words[@]:0:$cword}") + if [[ "$cur" == "-"* ]]; then + requestComp="${words[*]} ${cur} --generate-shell-completion" + else + requestComp="${words[*]} --generate-shell-completion" + fi + opts=$(eval "${requestComp}" 2>/dev/null) + COMPREPLY=($(compgen -W "${opts}" -- ${cur})) + return 0 + fi +} + +complete -o bashdefault -o default -o nospace -F __%[1]s_bash_autocomplete %[1]s diff --git a/vendor/github.com/urfave/cli/v3/autocomplete/powershell_autocomplete.ps1 b/vendor/github.com/urfave/cli/v3/autocomplete/powershell_autocomplete.ps1 new file mode 100644 index 000000000..6e0c422e2 --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/autocomplete/powershell_autocomplete.ps1 @@ -0,0 +1,9 @@ +$fn = $($MyInvocation.MyCommand.Name) +$name = $fn -replace "(.*)\.ps1$", '$1' +Register-ArgumentCompleter -Native -CommandName $name -ScriptBlock { + param($commandName, $wordToComplete, $cursorPosition) + $other = "$wordToComplete --generate-shell-completion" + Invoke-Expression $other | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_) + } + } diff --git a/vendor/github.com/urfave/cli/v3/autocomplete/zsh_autocomplete b/vendor/github.com/urfave/cli/v3/autocomplete/zsh_autocomplete new file mode 100644 index 000000000..d24049a72 --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/autocomplete/zsh_autocomplete @@ -0,0 +1,29 @@ +#compdef %[1]s +compdef _%[1]s %[1]s + +# This is a shell completion script auto-generated by https://github.com/urfave/cli for zsh. + +_%[1]s() { + local -a opts # Declare a local array + local current + current=${words[-1]} # -1 means "the last element" + if [[ "$current" == "-"* ]]; then + # Current word starts with a hyphen, so complete flags/options + opts=("${(@f)$(${words[@]:0:#words[@]-1} ${current} --generate-shell-completion)}") + else + # Current word does not start with a hyphen, so complete subcommands + opts=("${(@f)$(${words[@]:0:#words[@]-1} --generate-shell-completion)}") + fi + + if [[ "${opts[1]}" != "" ]]; then + _describe 'values' opts + else + _files + fi +} + +# Don't run the completion function when being source-ed or eval-ed. +# See https://github.com/urfave/cli/issues/1874 for discussion. +if [ "$funcstack[1]" = "_%[1]s" ]; then + _%[1]s +fi diff --git a/vendor/github.com/urfave/cli/v2/category.go b/vendor/github.com/urfave/cli/v3/category.go similarity index 89% rename from vendor/github.com/urfave/cli/v2/category.go rename to vendor/github.com/urfave/cli/v3/category.go index 0986fffca..14e3649ca 100644 --- a/vendor/github.com/urfave/cli/v2/category.go +++ b/vendor/github.com/urfave/cli/v3/category.go @@ -102,10 +102,15 @@ func newFlagCategoriesFromFlags(fs []Flag) FlagCategories { fc := newFlagCategories() var categorized bool + for _, fl := range fs { if cf, ok := fl.(CategorizableFlag); ok { - if cat := cf.GetCategory(); cat != "" && cf.IsVisible() { - fc.AddFlag(cat, cf) + visible := false + if vf, ok := fl.(VisibleFlag); ok { + visible = vf.IsVisible() + } + if cat := cf.GetCategory(); cat != "" && visible { + fc.AddFlag(cat, fl) categorized = true } } @@ -114,7 +119,11 @@ func newFlagCategoriesFromFlags(fs []Flag) FlagCategories { if categorized { for _, fl := range fs { if cf, ok := fl.(CategorizableFlag); ok { - if cf.GetCategory() == "" && cf.IsVisible() { + visible := false + if vf, ok := fl.(VisibleFlag); ok { + visible = vf.IsVisible() + } + if cf.GetCategory() == "" && visible { fc.AddFlag("", fl) } } @@ -153,7 +162,7 @@ type VisibleFlagCategory interface { // Name returns the category name string Name() string // Flags returns a slice of VisibleFlag sorted by name - Flags() []VisibleFlag + Flags() []Flag } type defaultVisibleFlagCategory struct { @@ -165,7 +174,7 @@ func (fc *defaultVisibleFlagCategory) Name() string { return fc.name } -func (fc *defaultVisibleFlagCategory) Flags() []VisibleFlag { +func (fc *defaultVisibleFlagCategory) Flags() []Flag { vfNames := []string{} for flName, fl := range fc.m { if vf, ok := fl.(VisibleFlag); ok { @@ -177,9 +186,9 @@ func (fc *defaultVisibleFlagCategory) Flags() []VisibleFlag { sort.Strings(vfNames) - ret := make([]VisibleFlag, len(vfNames)) + ret := make([]Flag, len(vfNames)) for i, flName := range vfNames { - ret[i] = fc.m[flName].(VisibleFlag) + ret[i] = fc.m[flName] } return ret diff --git a/vendor/github.com/urfave/cli/v3/cli.go b/vendor/github.com/urfave/cli/v3/cli.go new file mode 100644 index 000000000..d833aff51 --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/cli.go @@ -0,0 +1,60 @@ +// Package cli provides a minimal framework for creating and organizing command line +// Go applications. cli is designed to be easy to understand and write, the most simple +// cli application can be written as follows: +// +// func main() { +// (&cli.Command{}).Run(context.Background(), os.Args) +// } +// +// Of course this application does not do much, so let's make this an actual application: +// +// func main() { +// cmd := &cli.Command{ +// Name: "greet", +// Usage: "say a greeting", +// Action: func(c *cli.Context) error { +// fmt.Println("Greetings") +// return nil +// }, +// } +// +// cmd.Run(context.Background(), os.Args) +// } +package cli + +import ( + "fmt" + "os" + "runtime" + "strings" +) + +var isTracingOn = os.Getenv("URFAVE_CLI_TRACING") == "on" + +func tracef(format string, a ...any) { + if !isTracingOn { + return + } + + if !strings.HasSuffix(format, "\n") { + format = format + "\n" + } + + pc, file, line, _ := runtime.Caller(1) + cf := runtime.FuncForPC(pc) + + fmt.Fprintf( + os.Stderr, + strings.Join([]string{ + "## URFAVE CLI TRACE ", + file, + ":", + fmt.Sprintf("%v", line), + " ", + fmt.Sprintf("(%s)", cf.Name()), + " ", + format, + }, ""), + a..., + ) +} diff --git a/vendor/github.com/urfave/cli/v3/command.go b/vendor/github.com/urfave/cli/v3/command.go new file mode 100644 index 000000000..541081a59 --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/command.go @@ -0,0 +1,563 @@ +package cli + +import ( + "context" + "fmt" + "io" + "slices" + "strings" +) + +const ( + // ignoreFlagPrefix is to ignore test flags when adding flags from other packages + ignoreFlagPrefix = "test." + + commandContextKey = contextKey("cli.context") +) + +type contextKey string + +// Command contains everything needed to run an application that +// accepts a string slice of arguments such as os.Args. A given +// Command may contain Flags and sub-commands in Commands. +type Command struct { + // The name of the command + Name string `json:"name"` + // A list of aliases for the command + Aliases []string `json:"aliases"` + // A short description of the usage of this command + Usage string `json:"usage"` + // Text to override the USAGE section of help + UsageText string `json:"usageText"` + // A short description of the arguments of this command + ArgsUsage string `json:"argsUsage"` + // Version of the command + Version string `json:"version"` + // Longer explanation of how the command works + Description string `json:"description"` + // DefaultCommand is the (optional) name of a command + // to run if no command names are passed as CLI arguments. + DefaultCommand string `json:"defaultCommand"` + // The category the command is part of + Category string `json:"category"` + // List of child commands + Commands []*Command `json:"commands"` + // List of flags to parse + Flags []Flag `json:"flags"` + // Boolean to hide built-in help command and help flag + HideHelp bool `json:"hideHelp"` + // Ignored if HideHelp is true. + HideHelpCommand bool `json:"hideHelpCommand"` + // Boolean to hide built-in version flag and the VERSION section of help + HideVersion bool `json:"hideVersion"` + // Boolean to enable shell completion commands + EnableShellCompletion bool `json:"-"` + // Shell Completion generation command name + ShellCompletionCommandName string `json:"-"` + // The function to call when checking for shell command completions + ShellComplete ShellCompleteFunc `json:"-"` + // The function to configure a shell completion command + ConfigureShellCompletionCommand ConfigureShellCompletionCommand `json:"-"` + // An action to execute before any subcommands are run, but after the context is ready + // If a non-nil error is returned, no subcommands are run + Before BeforeFunc `json:"-"` + // An action to execute after any subcommands are run, but after the subcommand has finished + // It is run even if Action() panics + After AfterFunc `json:"-"` + // The function to call when this command is invoked + Action ActionFunc `json:"-"` + // Execute this function if the proper command cannot be found + CommandNotFound CommandNotFoundFunc `json:"-"` + // Execute this function if a usage error occurs. + OnUsageError OnUsageErrorFunc `json:"-"` + // Execute this function when an invalid flag is accessed from the context + InvalidFlagAccessHandler InvalidFlagAccessFunc `json:"-"` + // Boolean to hide this command from help or completion + Hidden bool `json:"hidden"` + // List of all authors who contributed (string or fmt.Stringer) + // TODO: ~string | fmt.Stringer when interface unions are available + Authors []any `json:"authors"` + // Copyright of the binary if any + Copyright string `json:"copyright"` + // Reader reader to write input to (useful for tests) + Reader io.Reader `json:"-"` + // Writer writer to write output to + Writer io.Writer `json:"-"` + // ErrWriter writes error output + ErrWriter io.Writer `json:"-"` + // ExitErrHandler processes any error encountered while running an App before + // it is returned to the caller. If no function is provided, HandleExitCoder + // is used as the default behavior. + ExitErrHandler ExitErrHandlerFunc `json:"-"` + // Other custom info + Metadata map[string]interface{} `json:"metadata"` + // Carries a function which returns app specific info. + ExtraInfo func() map[string]string `json:"-"` + // CustomRootCommandHelpTemplate the text template for app help topic. + // cli.go uses text/template to render templates. You can + // render custom help text by setting this variable. + CustomRootCommandHelpTemplate string `json:"-"` + // SliceFlagSeparator is used to customize the separator for SliceFlag, the default is "," + SliceFlagSeparator string `json:"sliceFlagSeparator"` + // DisableSliceFlagSeparator is used to disable SliceFlagSeparator, the default is false + DisableSliceFlagSeparator bool `json:"disableSliceFlagSeparator"` + // Boolean to enable short-option handling so user can combine several + // single-character bool arguments into one + // i.e. foobar -o -v -> foobar -ov + UseShortOptionHandling bool `json:"useShortOptionHandling"` + // Enable suggestions for commands and flags + Suggest bool `json:"suggest"` + // Allows global flags set by libraries which use flag.XXXVar(...) directly + // to be parsed through this library + AllowExtFlags bool `json:"allowExtFlags"` + // Treat all flags as normal arguments if true + SkipFlagParsing bool `json:"skipFlagParsing"` + // CustomHelpTemplate the text template for the command help topic. + // cli.go uses text/template to render templates. You can + // render custom help text by setting this variable. + CustomHelpTemplate string `json:"-"` + // Use longest prefix match for commands + PrefixMatchCommands bool `json:"prefixMatchCommands"` + // Custom suggest command for matching + SuggestCommandFunc SuggestCommandFunc `json:"-"` + // Flag exclusion group + MutuallyExclusiveFlags []MutuallyExclusiveFlags `json:"mutuallyExclusiveFlags"` + // Arguments to parse for this command + Arguments []Argument `json:"arguments"` + // Whether to read arguments from stdin + // applicable to root command only + ReadArgsFromStdin bool `json:"readArgsFromStdin"` + + // categories contains the categorized commands and is populated on app startup + categories CommandCategories + // flagCategories contains the categorized flags and is populated on app startup + flagCategories FlagCategories + // flags that have been applied in current parse + appliedFlags []Flag + // flags that have been set + setFlags map[Flag]struct{} + // The parent of this command. This value will be nil for the + // command at the root of the graph. + parent *Command + // parsed args + parsedArgs Args + // track state of error handling + isInError bool + // track state of defaults + didSetupDefaults bool + // whether in shell completion mode + shellCompletion bool +} + +// FullName returns the full name of the command. +// For commands with parents this ensures that the parent commands +// are part of the command path. +func (cmd *Command) FullName() string { + namePath := []string{} + + if cmd.parent != nil { + namePath = append(namePath, cmd.parent.FullName()) + } + + return strings.Join(append(namePath, cmd.Name), " ") +} + +func (cmd *Command) Command(name string) *Command { + for _, subCmd := range cmd.Commands { + if subCmd.HasName(name) { + return subCmd + } + } + + return nil +} + +func (cmd *Command) checkHelp() bool { + tracef("checking if help is wanted (cmd=%[1]q)", cmd.Name) + + return HelpFlag != nil && slices.ContainsFunc(HelpFlag.Names(), cmd.Bool) +} + +func (cmd *Command) allFlags() []Flag { + var flags []Flag + flags = append(flags, cmd.Flags...) + for _, grpf := range cmd.MutuallyExclusiveFlags { + for _, f1 := range grpf.Flags { + flags = append(flags, f1...) + } + } + return flags +} + +// useShortOptionHandling traverses Lineage() for *any* ancestors +// with UseShortOptionHandling +func (cmd *Command) useShortOptionHandling() bool { + for _, pCmd := range cmd.Lineage() { + if pCmd.UseShortOptionHandling { + return true + } + } + + return false +} + +func (cmd *Command) suggestFlagFromError(err error, commandName string) (string, error) { + fl, parseErr := flagFromError(err) + if parseErr != nil { + return "", err + } + + flags := cmd.Flags + hideHelp := cmd.hideHelp() + + if commandName != "" { + subCmd := cmd.Command(commandName) + if subCmd == nil { + return "", err + } + flags = subCmd.Flags + hideHelp = hideHelp || subCmd.HideHelp + } + + suggestion := SuggestFlag(flags, fl, hideHelp) + if len(suggestion) == 0 { + return "", err + } + + return fmt.Sprintf(SuggestDidYouMeanTemplate, suggestion) + "\n\n", nil +} + +// Names returns the names including short names and aliases. +func (cmd *Command) Names() []string { + return append([]string{cmd.Name}, cmd.Aliases...) +} + +// HasName returns true if Command.Name matches given name +func (cmd *Command) HasName(name string) bool { + return slices.Contains(cmd.Names(), name) +} + +// VisibleCategories returns a slice of categories and commands that are +// Hidden=false +func (cmd *Command) VisibleCategories() []CommandCategory { + ret := []CommandCategory{} + for _, category := range cmd.categories.Categories() { + if visible := func() CommandCategory { + if len(category.VisibleCommands()) > 0 { + return category + } + return nil + }(); visible != nil { + ret = append(ret, visible) + } + } + return ret +} + +// VisibleCommands returns a slice of the Commands with Hidden=false +func (cmd *Command) VisibleCommands() []*Command { + var ret []*Command + for _, command := range cmd.Commands { + if command.Hidden || command.Name == helpName { + continue + } + ret = append(ret, command) + } + return ret +} + +// VisibleFlagCategories returns a slice containing all the visible flag categories with the flags they contain +func (cmd *Command) VisibleFlagCategories() []VisibleFlagCategory { + if cmd.flagCategories == nil { + cmd.flagCategories = newFlagCategoriesFromFlags(cmd.allFlags()) + } + return cmd.flagCategories.VisibleCategories() +} + +// VisibleFlags returns a slice of the Flags with Hidden=false +func (cmd *Command) VisibleFlags() []Flag { + return visibleFlags(cmd.allFlags()) +} + +func (cmd *Command) appendFlag(fl Flag) { + if !hasFlag(cmd.Flags, fl) { + cmd.Flags = append(cmd.Flags, fl) + } +} + +// VisiblePersistentFlags returns a slice of [LocalFlag] with Persistent=true and Hidden=false. +func (cmd *Command) VisiblePersistentFlags() []Flag { + var flags []Flag + for _, fl := range cmd.Root().Flags { + pfl, ok := fl.(LocalFlag) + if !ok || pfl.IsLocal() { + continue + } + flags = append(flags, fl) + } + return visibleFlags(flags) +} + +func (cmd *Command) appendCommand(aCmd *Command) { + if !slices.Contains(cmd.Commands, aCmd) { + aCmd.parent = cmd + cmd.Commands = append(cmd.Commands, aCmd) + } +} + +func (cmd *Command) handleExitCoder(ctx context.Context, err error) error { + if cmd.parent != nil { + return cmd.parent.handleExitCoder(ctx, err) + } + + if cmd.ExitErrHandler != nil { + cmd.ExitErrHandler(ctx, cmd, err) + return err + } + + HandleExitCoder(err) + return err +} + +func (cmd *Command) argsWithDefaultCommand(oldArgs Args) Args { + if cmd.DefaultCommand != "" { + rawArgs := append([]string{cmd.DefaultCommand}, oldArgs.Slice()...) + newArgs := &stringSliceArgs{v: rawArgs} + + return newArgs + } + + return oldArgs +} + +// Root returns the Command at the root of the graph +func (cmd *Command) Root() *Command { + if cmd.parent == nil { + return cmd + } + + return cmd.parent.Root() +} + +func (cmd *Command) set(fName string, f Flag, val string) error { + cmd.setFlags[f] = struct{}{} + if err := f.Set(fName, val); err != nil { + return fmt.Errorf("invalid value %q for flag -%s: %v", val, fName, err) + } + return nil +} + +func (cmd *Command) lFlag(name string) Flag { + for _, f := range cmd.allFlags() { + if slices.Contains(f.Names(), name) { + tracef("flag found for name %[1]q (cmd=%[2]q)", name, cmd.Name) + return f + } + } + return nil +} + +func (cmd *Command) lookupFlag(name string) Flag { + for _, pCmd := range cmd.Lineage() { + if f := pCmd.lFlag(name); f != nil { + return f + } + } + + tracef("flag NOT found for name %[1]q (cmd=%[2]q)", name, cmd.Name) + cmd.onInvalidFlag(context.TODO(), name) + return nil +} + +func (cmd *Command) checkRequiredFlag(f Flag) (bool, string) { + if rf, ok := f.(RequiredFlag); ok && rf.IsRequired() { + flagName := f.Names()[0] + if !f.IsSet() { + return false, flagName + } + } + return true, "" +} + +func (cmd *Command) checkAllRequiredFlags() requiredFlagsErr { + for pCmd := cmd; pCmd != nil; pCmd = pCmd.parent { + if err := pCmd.checkRequiredFlags(); err != nil { + return err + } + } + return nil +} + +func (cmd *Command) checkRequiredFlags() requiredFlagsErr { + tracef("checking for required flags (cmd=%[1]q)", cmd.Name) + + missingFlags := []string{} + + for _, f := range cmd.appliedFlags { + if ok, name := cmd.checkRequiredFlag(f); !ok { + missingFlags = append(missingFlags, name) + } + } + + if len(missingFlags) != 0 { + tracef("found missing required flags %[1]q (cmd=%[2]q)", missingFlags, cmd.Name) + + return &errRequiredFlags{missingFlags: missingFlags} + } + + tracef("all required flags set (cmd=%[1]q)", cmd.Name) + + return nil +} + +func (cmd *Command) onInvalidFlag(ctx context.Context, name string) { + for cmd != nil { + if cmd.InvalidFlagAccessHandler != nil { + cmd.InvalidFlagAccessHandler(ctx, cmd, name) + break + } + cmd = cmd.parent + } +} + +// NumFlags returns the number of flags set +func (cmd *Command) NumFlags() int { + tracef("numFlags numAppliedFlags %d", len(cmd.appliedFlags)) + count := 0 + for _, f := range cmd.appliedFlags { + if f.IsSet() { + count++ + } + } + return count // cmd.flagSet.NFlag() +} + +// Set sets a context flag to a value. +func (cmd *Command) Set(name, value string) error { + if f := cmd.lookupFlag(name); f != nil { + return f.Set(name, value) + } + + return fmt.Errorf("no such flag -%s", name) +} + +// IsSet determines if the flag was actually set +func (cmd *Command) IsSet(name string) bool { + fl := cmd.lookupFlag(name) + if fl == nil { + tracef("flag with name %[1]q NOT found; assuming not set (cmd=%[2]q)", name, cmd.Name) + return false + } + + isSet := fl.IsSet() + if isSet { + tracef("flag with name %[1]q is set (cmd=%[2]q)", name, cmd.Name) + } else { + tracef("flag with name %[1]q is no set (cmd=%[2]q)", name, cmd.Name) + } + + return isSet +} + +// LocalFlagNames returns a slice of flag names used in this +// command. +func (cmd *Command) LocalFlagNames() []string { + names := []string{} + + // Check the flags which have been set via env or file + for _, f := range cmd.allFlags() { + if f.IsSet() { + names = append(names, f.Names()...) + } + } + + // Sort out the duplicates since flag could be set via multiple + // paths + m := map[string]struct{}{} + uniqNames := []string{} + + for _, name := range names { + if _, ok := m[name]; !ok { + m[name] = struct{}{} + uniqNames = append(uniqNames, name) + } + } + + return uniqNames +} + +// FlagNames returns a slice of flag names used by the this command +// and all of its parent commands. +func (cmd *Command) FlagNames() []string { + names := cmd.LocalFlagNames() + + if cmd.parent != nil { + names = append(cmd.parent.FlagNames(), names...) + } + + return names +} + +// Lineage returns *this* command and all of its ancestor commands +// in order from child to parent +func (cmd *Command) Lineage() []*Command { + lineage := []*Command{cmd} + + if cmd.parent != nil { + lineage = append(lineage, cmd.parent.Lineage()...) + } + + return lineage +} + +// Count returns the num of occurrences of this flag +func (cmd *Command) Count(name string) int { + if cf, ok := cmd.lookupFlag(name).(Countable); ok { + return cf.Count() + } + return 0 +} + +// Value returns the value of the flag corresponding to `name` +func (cmd *Command) Value(name string) interface{} { + if fs := cmd.lookupFlag(name); fs != nil { + tracef("value found for name %[1]q (cmd=%[2]q)", name, cmd.Name) + return fs.Get() + } + + tracef("value NOT found for name %[1]q (cmd=%[2]q)", name, cmd.Name) + return nil +} + +// Args returns the command line arguments associated with the +// command. +func (cmd *Command) Args() Args { + return cmd.parsedArgs +} + +// NArg returns the number of the command line arguments. +func (cmd *Command) NArg() int { + return cmd.Args().Len() +} + +func (cmd *Command) runFlagActions(ctx context.Context) error { + tracef("runFlagActions") + for fl := range cmd.setFlags { + /*tracef("checking %v:%v", fl.Names(), fl.IsSet()) + if !fl.IsSet() { + continue + }*/ + + //if pf, ok := fl.(LocalFlag); ok && !pf.IsLocal() { + // continue + //} + + if af, ok := fl.(ActionableFlag); ok { + if err := af.RunAction(ctx, cmd); err != nil { + return err + } + } + } + + return nil +} diff --git a/vendor/github.com/urfave/cli/v3/command_parse.go b/vendor/github.com/urfave/cli/v3/command_parse.go new file mode 100644 index 000000000..113065800 --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/command_parse.go @@ -0,0 +1,213 @@ +package cli + +import ( + "fmt" + "strings" + "unicode" +) + +const ( + providedButNotDefinedErrMsg = "flag provided but not defined: -" + argumentNotProvidedErrMsg = "flag needs an argument: " +) + +// flagFromError tries to parse a provided flag from an error message. If the +// parsing fails, it returns the input error and an empty string +func flagFromError(err error) (string, error) { + errStr := err.Error() + trimmed := strings.TrimPrefix(errStr, providedButNotDefinedErrMsg) + if errStr == trimmed { + return "", err + } + return trimmed, nil +} + +func (cmd *Command) parseFlags(args Args) (Args, error) { + tracef("parsing flags from arguments %[1]q (cmd=%[2]q)", args, cmd.Name) + + cmd.setFlags = map[Flag]struct{}{} + cmd.appliedFlags = cmd.allFlags() + + tracef("walking command lineage for persistent flags (cmd=%[1]q)", cmd.Name) + + for pCmd := cmd.parent; pCmd != nil; pCmd = pCmd.parent { + tracef( + "checking ancestor command=%[1]q for persistent flags (cmd=%[2]q)", + pCmd.Name, cmd.Name, + ) + + for _, fl := range pCmd.Flags { + flNames := fl.Names() + + pfl, ok := fl.(LocalFlag) + if !ok || pfl.IsLocal() { + tracef("skipping non-persistent flag %[1]q (cmd=%[2]q)", flNames, cmd.Name) + continue + } + + tracef( + "checking for applying persistent flag=%[1]q pCmd=%[2]q (cmd=%[3]q)", + flNames, pCmd.Name, cmd.Name, + ) + + applyPersistentFlag := true + + for _, name := range flNames { + if cmd.lFlag(name) != nil { + applyPersistentFlag = false + break + } + } + + if !applyPersistentFlag { + tracef("not applying as persistent flag=%[1]q (cmd=%[2]q)", flNames, cmd.Name) + continue + } + + tracef("applying as persistent flag=%[1]q (cmd=%[2]q)", flNames, cmd.Name) + + tracef("appending to applied flags flag=%[1]q (cmd=%[2]q)", flNames, cmd.Name) + cmd.appliedFlags = append(cmd.appliedFlags, fl) + } + } + + tracef("parsing flags iteratively tail=%[1]q (cmd=%[2]q)", args.Tail(), cmd.Name) + defer tracef("done parsing flags (cmd=%[1]q)", cmd.Name) + + posArgs := []string{} + for rargs := args.Slice(); len(rargs) > 0; rargs = rargs[1:] { + tracef("rearrange:1 (cmd=%[1]q) %[2]q", cmd.Name, rargs) + + firstArg := strings.TrimSpace(rargs[0]) + if len(firstArg) == 0 { + break + } + + // stop parsing once we see a "--" + if firstArg == "--" { + posArgs = append(posArgs, rargs[1:]...) + return &stringSliceArgs{posArgs}, nil + } + + // handle positional args + if firstArg[0] != '-' { + // positional argument probably + tracef("rearrange-3 (cmd=%[1]q) check %[2]q", cmd.Name, firstArg) + + // if there is a command by that name let the command handle the + // rest of the parsing + if cmd.Command(firstArg) != nil { + posArgs = append(posArgs, rargs...) + return &stringSliceArgs{posArgs}, nil + } + + posArgs = append(posArgs, firstArg) + continue + } + + numMinuses := 1 + // this is same as firstArg == "-" + if len(firstArg) == 1 { + posArgs = append(posArgs, firstArg) + break + } + + shortOptionHandling := cmd.useShortOptionHandling() + + // stop parsing -- as short flags + if firstArg[1] == '-' { + numMinuses++ + shortOptionHandling = false + } else if !unicode.IsLetter(rune(firstArg[1])) { + // this is not a flag + tracef("parseFlags not a unicode letter. Stop parsing") + posArgs = append(posArgs, rargs...) + return &stringSliceArgs{posArgs}, nil + } + + tracef("parseFlags (shortOptionHandling=%[1]q)", shortOptionHandling) + + flagName := firstArg[numMinuses:] + flagVal := "" + tracef("flagName:1 (fName=%[1]q)", flagName) + if index := strings.Index(flagName, "="); index != -1 { + flagVal = flagName[index+1:] + flagName = flagName[:index] + } + + tracef("flagName:2 (fName=%[1]q) (fVal=%[2]q)", flagName, flagVal) + + f := cmd.lookupFlag(flagName) + // found a flag matching given flagName + if f != nil { + tracef("Trying flag type (fName=%[1]q) (type=%[2]T)", flagName, f) + if fb, ok := f.(boolFlag); ok && fb.IsBoolFlag() { + if flagVal == "" { + flagVal = "true" + } + tracef("parse Apply bool flag (fName=%[1]q) (fVal=%[2]q)", flagName, flagVal) + if err := cmd.set(flagName, f, flagVal); err != nil { + return &stringSliceArgs{posArgs}, err + } + continue + } + + tracef("processing non bool flag (fName=%[1]q)", flagName) + // not a bool flag so need to get the next arg + if flagVal == "" { + if len(rargs) == 1 { + return &stringSliceArgs{posArgs}, fmt.Errorf("%s%s", argumentNotProvidedErrMsg, firstArg) + } + flagVal = rargs[1] + rargs = rargs[1:] + } + + tracef("setting non bool flag (fName=%[1]q) (fVal=%[2]q)", flagName, flagVal) + if err := cmd.set(flagName, f, flagVal); err != nil { + return &stringSliceArgs{posArgs}, err + } + + continue + } + + // no flag lookup found and short handling is disabled + if !shortOptionHandling { + return &stringSliceArgs{posArgs}, fmt.Errorf("%s%s", providedButNotDefinedErrMsg, flagName) + } + + // try to split the flags + for index, c := range flagName { + tracef("processing flag (fName=%[1]q)", string(c)) + if sf := cmd.lookupFlag(string(c)); sf == nil { + return &stringSliceArgs{posArgs}, fmt.Errorf("%s%s", providedButNotDefinedErrMsg, flagName) + } else if fb, ok := sf.(boolFlag); ok && fb.IsBoolFlag() { + fv := flagVal + if index == (len(flagName)-1) && flagVal == "" { + fv = "true" + } + if fv == "" { + fv = "true" + } + if err := cmd.set(flagName, sf, fv); err != nil { + tracef("processing flag.2 (fName=%[1]q)", string(c)) + return &stringSliceArgs{posArgs}, err + } + } else if index == len(flagName)-1 { // last flag can take an arg + if flagVal == "" { + if len(rargs) == 1 { + return &stringSliceArgs{posArgs}, fmt.Errorf("%s%s", argumentNotProvidedErrMsg, string(c)) + } + flagVal = rargs[1] + } + tracef("parseFlags (flagName %[1]q) (flagVal %[2]q)", flagName, flagVal) + if err := cmd.set(flagName, sf, flagVal); err != nil { + tracef("processing flag.4 (fName=%[1]q)", string(c)) + return &stringSliceArgs{posArgs}, err + } + } + } + } + + tracef("returning-2 (cmd=%[1]q) args %[2]q", cmd.Name, posArgs) + return &stringSliceArgs{posArgs}, nil +} diff --git a/vendor/github.com/urfave/cli/v3/command_run.go b/vendor/github.com/urfave/cli/v3/command_run.go new file mode 100644 index 000000000..24b793516 --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/command_run.go @@ -0,0 +1,347 @@ +package cli + +import ( + "bufio" + "context" + "fmt" + "io" + "reflect" + "slices" + "unicode" +) + +func (cmd *Command) parseArgsFromStdin() ([]string, error) { + type state int + const ( + stateSearchForToken state = -1 + stateSearchForString state = 0 + ) + + st := stateSearchForToken + linenum := 1 + token := "" + args := []string{} + + breader := bufio.NewReader(cmd.Reader) + +outer: + for { + ch, _, err := breader.ReadRune() + if err == io.EOF { + switch st { + case stateSearchForToken: + if token != "--" { + args = append(args, token) + } + case stateSearchForString: + // make sure string is not empty + for _, t := range token { + if !unicode.IsSpace(t) { + args = append(args, token) + } + } + } + break outer + } + if err != nil { + return nil, err + } + switch st { + case stateSearchForToken: + if unicode.IsSpace(ch) || ch == '"' { + if ch == '\n' { + linenum++ + } + if token != "" { + // end the processing here + if token == "--" { + break outer + } + args = append(args, token) + token = "" + } + if ch == '"' { + st = stateSearchForString + } + continue + } + token += string(ch) + case stateSearchForString: + if ch != '"' { + token += string(ch) + } else { + if token != "" { + args = append(args, token) + token = "" + } + /*else { + //TODO. Should we pass in empty strings ? + }*/ + st = stateSearchForToken + } + } + } + + tracef("parsed stdin args as %v (cmd=%[2]q)", args, cmd.Name) + + return args, nil +} + +// Run is the entry point to the command graph. The positional +// arguments are parsed according to the Flag and Command +// definitions and the matching Action functions are run. +func (cmd *Command) Run(ctx context.Context, osArgs []string) (deferErr error) { + _, deferErr = cmd.run(ctx, osArgs) + return +} + +func (cmd *Command) run(ctx context.Context, osArgs []string) (_ context.Context, deferErr error) { + tracef("running with arguments %[1]q (cmd=%[2]q)", osArgs, cmd.Name) + cmd.setupDefaults(osArgs) + + if v, ok := ctx.Value(commandContextKey).(*Command); ok { + tracef("setting parent (cmd=%[1]q) command from context.Context value (cmd=%[2]q)", v.Name, cmd.Name) + cmd.parent = v + } + + if cmd.parent == nil { + if cmd.ReadArgsFromStdin { + if args, err := cmd.parseArgsFromStdin(); err != nil { + return ctx, err + } else { + osArgs = append(osArgs, args...) + } + } + // handle the completion flag separately from the flagset since + // completion could be attempted after a flag, but before its value was put + // on the command line. this causes the flagset to interpret the completion + // flag name as the value of the flag before it which is undesirable + // note that we can only do this because the shell autocomplete function + // always appends the completion flag at the end of the command + tracef("checking osArgs %v (cmd=%[2]q)", osArgs, cmd.Name) + cmd.shellCompletion, osArgs = checkShellCompleteFlag(cmd, osArgs) + + tracef("setting cmd.shellCompletion=%[1]v from checkShellCompleteFlag (cmd=%[2]q)", cmd.shellCompletion && cmd.EnableShellCompletion, cmd.Name) + cmd.shellCompletion = cmd.EnableShellCompletion && cmd.shellCompletion + } + + tracef("using post-checkShellCompleteFlag arguments %[1]q (cmd=%[2]q)", osArgs, cmd.Name) + + tracef("setting self as cmd in context (cmd=%[1]q)", cmd.Name) + ctx = context.WithValue(ctx, commandContextKey, cmd) + + if cmd.parent == nil { + cmd.setupCommandGraph() + } + + var rargs Args = &stringSliceArgs{v: osArgs} + for _, f := range cmd.allFlags() { + if err := f.PreParse(); err != nil { + return ctx, err + } + } + + var args Args = &stringSliceArgs{rargs.Tail()} + var err error + + if cmd.SkipFlagParsing { + tracef("skipping flag parsing (cmd=%[1]q)", cmd.Name) + cmd.parsedArgs = args + } else { + cmd.parsedArgs, err = cmd.parseFlags(args) + } + + tracef("using post-parse arguments %[1]q (cmd=%[2]q)", args, cmd.Name) + + if checkCompletions(ctx, cmd) { + return ctx, nil + } + + if err != nil { + tracef("setting deferErr from %[1]q (cmd=%[2]q)", err, cmd.Name) + deferErr = err + + cmd.isInError = true + if cmd.OnUsageError != nil { + err = cmd.OnUsageError(ctx, cmd, err, cmd.parent != nil) + err = cmd.handleExitCoder(ctx, err) + return ctx, err + } + fmt.Fprintf(cmd.Root().ErrWriter, "Incorrect Usage: %s\n\n", err.Error()) + if cmd.Suggest { + if suggestion, err := cmd.suggestFlagFromError(err, ""); err == nil { + fmt.Fprintf(cmd.Root().ErrWriter, "%s", suggestion) + } + } + if !cmd.hideHelp() { + if cmd.parent == nil { + tracef("running ShowAppHelp") + if err := ShowAppHelp(cmd); err != nil { + tracef("SILENTLY IGNORING ERROR running ShowAppHelp %[1]v (cmd=%[2]q)", err, cmd.Name) + } + } else { + tracef("running ShowCommandHelp with %[1]q", cmd.Name) + if err := ShowCommandHelp(ctx, cmd, cmd.Name); err != nil { + tracef("SILENTLY IGNORING ERROR running ShowCommandHelp with %[1]q %[2]v", cmd.Name, err) + } + } + } + + return ctx, err + } + + if cmd.checkHelp() { + return ctx, helpCommandAction(ctx, cmd) + } else { + tracef("no help is wanted (cmd=%[1]q)", cmd.Name) + } + + if cmd.parent == nil && !cmd.HideVersion && checkVersion(cmd) { + ShowVersion(cmd) + return ctx, nil + } + + for _, flag := range cmd.allFlags() { + if err := flag.PostParse(); err != nil { + return ctx, err + } + } + + if cmd.After != nil && !cmd.Root().shellCompletion { + defer func() { + if err := cmd.After(ctx, cmd); err != nil { + err = cmd.handleExitCoder(ctx, err) + + if deferErr != nil { + deferErr = newMultiError(deferErr, err) + } else { + deferErr = err + } + } + }() + } + + for _, grp := range cmd.MutuallyExclusiveFlags { + if err := grp.check(cmd); err != nil { + if cmd.OnUsageError != nil { + err = cmd.OnUsageError(ctx, cmd, err, cmd.parent != nil) + } else { + _ = ShowSubcommandHelp(cmd) + } + return ctx, err + } + } + + var subCmd *Command + if cmd.parsedArgs.Present() { + tracef("checking positional args %[1]q (cmd=%[2]q)", cmd.parsedArgs, cmd.Name) + + name := cmd.parsedArgs.First() + + tracef("using first positional argument as sub-command name=%[1]q (cmd=%[2]q)", name, cmd.Name) + + if cmd.SuggestCommandFunc != nil && name != "--" { + name = cmd.SuggestCommandFunc(cmd.Commands, name) + } + subCmd = cmd.Command(name) + if subCmd == nil { + hasDefault := cmd.DefaultCommand != "" + isFlagName := slices.Contains(cmd.FlagNames(), name) + + if hasDefault { + tracef("using default command=%[1]q (cmd=%[2]q)", cmd.DefaultCommand, cmd.Name) + } + + if isFlagName || hasDefault { + argsWithDefault := cmd.argsWithDefaultCommand(args) + tracef("using default command args=%[1]q (cmd=%[2]q)", argsWithDefault, cmd.Name) + if !reflect.DeepEqual(args, argsWithDefault) { + subCmd = cmd.Command(argsWithDefault.First()) + } + } + } + } else if cmd.parent == nil && cmd.DefaultCommand != "" { + tracef("no positional args present; checking default command %[1]q (cmd=%[2]q)", cmd.DefaultCommand, cmd.Name) + + if dc := cmd.Command(cmd.DefaultCommand); dc != cmd { + subCmd = dc + } + } + + // If a subcommand has been resolved, let it handle the remaining execution. + if subCmd != nil { + tracef("running sub-command %[1]q with arguments %[2]q (cmd=%[3]q)", subCmd.Name, cmd.Args(), cmd.Name) + + // It is important that we overwrite the ctx variable in the current + // function so any defer'd functions use the new context returned + // from the sub command. + ctx, err = subCmd.run(ctx, cmd.Args().Slice()) + return ctx, err + } + + // This code path is the innermost command execution. Here we actually + // perform the command action. + // + // First, resolve the chain of nested commands up to the parent. + var cmdChain []*Command + for p := cmd; p != nil; p = p.parent { + cmdChain = append(cmdChain, p) + } + slices.Reverse(cmdChain) + + // Run Before actions in order. + for _, cmd := range cmdChain { + if cmd.Before == nil { + continue + } + if bctx, err := cmd.Before(ctx, cmd); err != nil { + deferErr = cmd.handleExitCoder(ctx, err) + return ctx, deferErr + } else if bctx != nil { + ctx = bctx + } + } + + // Run flag actions in order. + // These take a context, so this has to happen after Before actions. + for _, cmd := range cmdChain { + tracef("running flag actions (cmd=%[1]q)", cmd.Name) + if err := cmd.runFlagActions(ctx); err != nil { + deferErr = cmd.handleExitCoder(ctx, err) + return ctx, deferErr + } + } + + if err := cmd.checkAllRequiredFlags(); err != nil { + cmd.isInError = true + _ = ShowSubcommandHelp(cmd) + return ctx, err + } + + // Run the command action. + if len(cmd.Arguments) > 0 { + rargs := cmd.Args().Slice() + tracef("calling argparse with %[1]v", rargs) + for _, arg := range cmd.Arguments { + var err error + rargs, err = arg.Parse(rargs) + if err != nil { + tracef("calling with %[1]v (cmd=%[2]q)", err, cmd.Name) + if cmd.OnUsageError != nil { + err = cmd.OnUsageError(ctx, cmd, err, cmd.parent != nil) + } + err = cmd.handleExitCoder(ctx, err) + return ctx, err + } + } + cmd.parsedArgs = &stringSliceArgs{v: rargs} + } + + if err := cmd.Action(ctx, cmd); err != nil { + tracef("calling handleExitCoder with %[1]v (cmd=%[2]q)", err, cmd.Name) + deferErr = cmd.handleExitCoder(ctx, err) + } + + tracef("returning deferErr (cmd=%[1]q) %[2]q", cmd.Name, deferErr) + return ctx, deferErr +} diff --git a/vendor/github.com/urfave/cli/v3/command_setup.go b/vendor/github.com/urfave/cli/v3/command_setup.go new file mode 100644 index 000000000..09df4a308 --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/command_setup.go @@ -0,0 +1,214 @@ +package cli + +import ( + "flag" + "os" + "path/filepath" + "sort" + "strings" +) + +func (cmd *Command) setupDefaults(osArgs []string) { + if cmd.didSetupDefaults { + tracef("already did setup (cmd=%[1]q)", cmd.Name) + return + } + + cmd.didSetupDefaults = true + + isRoot := cmd.parent == nil + tracef("isRoot? %[1]v (cmd=%[2]q)", isRoot, cmd.Name) + + if cmd.ShellComplete == nil { + tracef("setting default ShellComplete (cmd=%[1]q)", cmd.Name) + cmd.ShellComplete = DefaultCompleteWithFlags + } + + if cmd.Name == "" && isRoot { + name := filepath.Base(osArgs[0]) + tracef("setting cmd.Name from first arg basename (cmd=%[1]q)", name) + cmd.Name = name + } + + if cmd.Usage == "" && isRoot { + tracef("setting default Usage (cmd=%[1]q)", cmd.Name) + cmd.Usage = "A new cli application" + } + + if cmd.Version == "" { + tracef("setting HideVersion=true due to empty Version (cmd=%[1]q)", cmd.Name) + cmd.HideVersion = true + } + + if cmd.Action == nil { + tracef("setting default Action as help command action (cmd=%[1]q)", cmd.Name) + cmd.Action = helpCommandAction + } + + if cmd.Reader == nil { + tracef("setting default Reader as os.Stdin (cmd=%[1]q)", cmd.Name) + cmd.Reader = os.Stdin + } + + if cmd.Writer == nil { + tracef("setting default Writer as os.Stdout (cmd=%[1]q)", cmd.Name) + cmd.Writer = os.Stdout + } + + if cmd.ErrWriter == nil { + tracef("setting default ErrWriter as os.Stderr (cmd=%[1]q)", cmd.Name) + cmd.ErrWriter = os.Stderr + } + + if cmd.AllowExtFlags { + tracef("visiting all flags given AllowExtFlags=true (cmd=%[1]q)", cmd.Name) + // add global flags added by other packages + flag.VisitAll(func(f *flag.Flag) { + // skip test flags + if !strings.HasPrefix(f.Name, ignoreFlagPrefix) { + cmd.Flags = append(cmd.Flags, &extFlag{f}) + } + }) + } + + for _, subCmd := range cmd.Commands { + tracef("setting sub-command (cmd=%[1]q) parent as self (cmd=%[2]q)", subCmd.Name, cmd.Name) + subCmd.parent = cmd + } + + cmd.ensureHelp() + + if !cmd.HideVersion && isRoot { + tracef("appending version flag (cmd=%[1]q)", cmd.Name) + cmd.appendFlag(VersionFlag) + } + + if cmd.PrefixMatchCommands && cmd.SuggestCommandFunc == nil { + tracef("setting default SuggestCommandFunc (cmd=%[1]q)", cmd.Name) + cmd.SuggestCommandFunc = suggestCommand + } + + if isRoot && cmd.EnableShellCompletion || cmd.ConfigureShellCompletionCommand != nil { + completionCommand := buildCompletionCommand(cmd.Name) + + if cmd.ShellCompletionCommandName != "" { + tracef( + "setting completion command name (%[1]q) from "+ + "cmd.ShellCompletionCommandName (cmd=%[2]q)", + cmd.ShellCompletionCommandName, cmd.Name, + ) + completionCommand.Name = cmd.ShellCompletionCommandName + } + + tracef("appending completionCommand (cmd=%[1]q)", cmd.Name) + cmd.appendCommand(completionCommand) + if cmd.ConfigureShellCompletionCommand != nil { + cmd.ConfigureShellCompletionCommand(completionCommand) + } + } + + tracef("setting command categories (cmd=%[1]q)", cmd.Name) + cmd.categories = newCommandCategories() + + for _, subCmd := range cmd.Commands { + cmd.categories.AddCommand(subCmd.Category, subCmd) + } + + tracef("sorting command categories (cmd=%[1]q)", cmd.Name) + sort.Sort(cmd.categories.(*commandCategories)) + + tracef("setting category on mutually exclusive flags (cmd=%[1]q)", cmd.Name) + for _, grp := range cmd.MutuallyExclusiveFlags { + grp.propagateCategory() + } + + tracef("setting flag categories (cmd=%[1]q)", cmd.Name) + cmd.flagCategories = newFlagCategoriesFromFlags(cmd.allFlags()) + + if cmd.Metadata == nil { + tracef("setting default Metadata (cmd=%[1]q)", cmd.Name) + cmd.Metadata = map[string]any{} + } + + if len(cmd.SliceFlagSeparator) != 0 { + tracef("setting defaultSliceFlagSeparator from cmd.SliceFlagSeparator (cmd=%[1]q)", cmd.Name) + defaultSliceFlagSeparator = cmd.SliceFlagSeparator + } + + tracef("setting disableSliceFlagSeparator from cmd.DisableSliceFlagSeparator (cmd=%[1]q)", cmd.Name) + disableSliceFlagSeparator = cmd.DisableSliceFlagSeparator + + cmd.setFlags = map[Flag]struct{}{} +} + +func (cmd *Command) setupCommandGraph() { + tracef("setting up command graph (cmd=%[1]q)", cmd.Name) + + for _, subCmd := range cmd.Commands { + subCmd.parent = cmd + subCmd.setupSubcommand() + subCmd.setupCommandGraph() + } +} + +func (cmd *Command) setupSubcommand() { + tracef("setting up self as sub-command (cmd=%[1]q)", cmd.Name) + + cmd.ensureHelp() + + tracef("setting command categories (cmd=%[1]q)", cmd.Name) + cmd.categories = newCommandCategories() + + for _, subCmd := range cmd.Commands { + cmd.categories.AddCommand(subCmd.Category, subCmd) + } + + tracef("sorting command categories (cmd=%[1]q)", cmd.Name) + sort.Sort(cmd.categories.(*commandCategories)) + + tracef("setting category on mutually exclusive flags (cmd=%[1]q)", cmd.Name) + for _, grp := range cmd.MutuallyExclusiveFlags { + grp.propagateCategory() + } + + tracef("setting flag categories (cmd=%[1]q)", cmd.Name) + cmd.flagCategories = newFlagCategoriesFromFlags(cmd.allFlags()) +} + +func (cmd *Command) hideHelp() bool { + tracef("hide help (cmd=%[1]q)", cmd.Name) + for c := cmd; c != nil; c = c.parent { + if c.HideHelp { + return true + } + } + + return false +} + +func (cmd *Command) ensureHelp() { + tracef("ensuring help (cmd=%[1]q)", cmd.Name) + + helpCommand := buildHelpCommand(true) + + if !cmd.hideHelp() { + if cmd.Command(helpCommand.Name) == nil { + if !cmd.HideHelpCommand { + tracef("appending helpCommand (cmd=%[1]q)", cmd.Name) + cmd.appendCommand(helpCommand) + } + } + + if HelpFlag != nil { + // TODO need to remove hack + if hf, ok := HelpFlag.(*BoolFlag); ok { + hf.applied = false + hf.hasBeenSet = false + hf.Value = false + hf.value = nil + } + tracef("appending HelpFlag (cmd=%[1]q)", cmd.Name) + cmd.appendFlag(HelpFlag) + } + } +} diff --git a/vendor/github.com/urfave/cli/v3/completion.go b/vendor/github.com/urfave/cli/v3/completion.go new file mode 100644 index 000000000..d97ade6e4 --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/completion.go @@ -0,0 +1,100 @@ +package cli + +import ( + "context" + "embed" + "fmt" + "sort" + "strings" +) + +const ( + completionCommandName = "completion" + + // This flag is supposed to only be used by the completion script itself to generate completions on the fly. + completionFlag = "--generate-shell-completion" +) + +type renderCompletion func(cmd *Command, appName string) (string, error) + +var ( + //go:embed autocomplete + autoCompleteFS embed.FS + + shellCompletions = map[string]renderCompletion{ + "bash": func(c *Command, appName string) (string, error) { + b, err := autoCompleteFS.ReadFile("autocomplete/bash_autocomplete") + return fmt.Sprintf(string(b), appName), err + }, + "zsh": func(c *Command, appName string) (string, error) { + b, err := autoCompleteFS.ReadFile("autocomplete/zsh_autocomplete") + return fmt.Sprintf(string(b), appName), err + }, + "fish": func(c *Command, appName string) (string, error) { + return c.Root().ToFishCompletion() + }, + "pwsh": func(c *Command, appName string) (string, error) { + b, err := autoCompleteFS.ReadFile("autocomplete/powershell_autocomplete.ps1") + return string(b), err + }, + } +) + +const completionDescription = `Output shell completion script for bash, zsh, fish, or Powershell. +Source the output to enable completion. + +# .bashrc +source <($COMMAND completion bash) + +# .zshrc +source <($COMMAND completion zsh) + +# fish +$COMMAND completion fish > ~/.config/fish/completions/$COMMAND.fish + +# Powershell +Output the script to path/to/autocomplete/$COMMAND.ps1 an run it. +` + +func buildCompletionCommand(appName string) *Command { + return &Command{ + Name: completionCommandName, + Hidden: true, + Usage: "Output shell completion script for bash, zsh, fish, or Powershell", + Description: strings.ReplaceAll(completionDescription, "$COMMAND", appName), + Action: func(ctx context.Context, cmd *Command) error { + return printShellCompletion(ctx, cmd, appName) + }, + } +} + +func printShellCompletion(_ context.Context, cmd *Command, appName string) error { + var shells []string + for k := range shellCompletions { + shells = append(shells, k) + } + + sort.Strings(shells) + + if cmd.Args().Len() == 0 { + return Exit(fmt.Sprintf("no shell provided for completion command. available shells are %+v", shells), 1) + } + s := cmd.Args().First() + + renderCompletion, ok := shellCompletions[s] + if !ok { + return Exit(fmt.Sprintf("unknown shell %s, available shells are %+v", s, shells), 1) + } + + completionScript, err := renderCompletion(cmd, appName) + if err != nil { + return Exit(err, 1) + } + + _, err = cmd.Writer.Write([]byte(completionScript)) + if err != nil { + return Exit(err, 1) + } + + return nil +} diff --git a/vendor/github.com/urfave/cli/v3/docs.go b/vendor/github.com/urfave/cli/v3/docs.go new file mode 100644 index 000000000..42cad718b --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/docs.go @@ -0,0 +1,125 @@ +package cli + +import ( + "fmt" + "os" + "runtime" + "strings" +) + +func prefixFor(name string) (prefix string) { + if len(name) == 1 { + prefix = "-" + } else { + prefix = "--" + } + + return +} + +// Returns the placeholder, if any, and the unquoted usage string. +func unquoteUsage(usage string) (string, string) { + for i := 0; i < len(usage); i++ { + if usage[i] == '`' { + for j := i + 1; j < len(usage); j++ { + if usage[j] == '`' { + name := usage[i+1 : j] + usage = usage[:i] + name + usage[j+1:] + return name, usage + } + } + break + } + } + return "", usage +} + +func prefixedNames(names []string, placeholder string) string { + var prefixed string + for i, name := range names { + if name == "" { + continue + } + + prefixed += prefixFor(name) + name + if placeholder != "" { + prefixed += " " + placeholder + } + if i < len(names)-1 { + prefixed += ", " + } + } + return prefixed +} + +func envFormat(envVars []string, prefix, sep, suffix string) string { + if len(envVars) > 0 { + return fmt.Sprintf(" [%s%s%s]", prefix, strings.Join(envVars, sep), suffix) + } + return "" +} + +func defaultEnvFormat(envVars []string) string { + return envFormat(envVars, "$", ", $", "") +} + +func withEnvHint(envVars []string, str string) string { + envText := "" + if runtime.GOOS != "windows" || os.Getenv("PSHOME") != "" { + envText = defaultEnvFormat(envVars) + } else { + envText = envFormat(envVars, "%", "%, %", "%") + } + return str + envText +} + +func withFileHint(filePath, str string) string { + fileText := "" + if filePath != "" { + fileText = fmt.Sprintf(" [%s]", filePath) + } + return str + fileText +} + +func formatDefault(format string) string { + return " (default: " + format + ")" +} + +func stringifyFlag(f Flag) string { + // enforce DocGeneration interface on flags to avoid reflection + df, ok := f.(DocGenerationFlag) + if !ok { + return "" + } + placeholder, usage := unquoteUsage(df.GetUsage()) + needsPlaceholder := df.TakesValue() + // if needsPlaceholder is true, placeholder is empty + if needsPlaceholder && placeholder == "" { + // try to get type from flag + if tname := df.TypeName(); tname != "" { + placeholder = tname + } else { + placeholder = defaultPlaceholder + } + } + + defaultValueString := "" + + // don't print default text for required flags + if rf, ok := f.(RequiredFlag); !ok || !rf.IsRequired() { + isVisible := df.IsDefaultVisible() + if s := df.GetDefaultText(); isVisible && s != "" { + defaultValueString = fmt.Sprintf(formatDefault("%s"), s) + } + } + + usageWithDefault := strings.TrimSpace(usage + defaultValueString) + + pn := prefixedNames(f.Names(), placeholder) + sliceFlag, ok := f.(DocGenerationMultiValueFlag) + if ok && sliceFlag.IsMultiValueFlag() { + pn = pn + " [ " + pn + " ]" + } + + return withEnvHint(df.GetEnvVars(), fmt.Sprintf("%s\t%s", pn, usageWithDefault)) +} diff --git a/vendor/github.com/urfave/cli/v2/errors.go b/vendor/github.com/urfave/cli/v3/errors.go similarity index 83% rename from vendor/github.com/urfave/cli/v2/errors.go rename to vendor/github.com/urfave/cli/v3/errors.go index a818727db..6b377f109 100644 --- a/vendor/github.com/urfave/cli/v2/errors.go +++ b/vendor/github.com/urfave/cli/v3/errors.go @@ -41,15 +41,12 @@ func (m *multiError) Error() string { // Errors returns a copy of the errors slice func (m *multiError) Errors() []error { errs := make([]error, len(*m)) - for _, err := range *m { - errs = append(errs, err) - } + copy(errs, *m) return errs } type requiredFlagsErr interface { error - getMissingFlags() []string } type errRequiredFlags struct { @@ -57,16 +54,37 @@ type errRequiredFlags struct { } func (e *errRequiredFlags) Error() string { - numberOfMissingFlags := len(e.missingFlags) - if numberOfMissingFlags == 1 { + if len(e.missingFlags) == 1 { return fmt.Sprintf("Required flag %q not set", e.missingFlags[0]) } joinedMissingFlags := strings.Join(e.missingFlags, ", ") return fmt.Sprintf("Required flags %q not set", joinedMissingFlags) } -func (e *errRequiredFlags) getMissingFlags() []string { - return e.missingFlags +type mutuallyExclusiveGroup struct { + flag1Name string + flag2Name string +} + +func (e *mutuallyExclusiveGroup) Error() string { + return fmt.Sprintf("option %s cannot be set along with option %s", e.flag1Name, e.flag2Name) +} + +type mutuallyExclusiveGroupRequiredFlag struct { + flags *MutuallyExclusiveFlags +} + +func (e *mutuallyExclusiveGroupRequiredFlag) Error() string { + var missingFlags []string + for _, grpf := range e.flags.Flags { + var grpString []string + for _, f := range grpf { + grpString = append(grpString, f.Names()...) + } + missingFlags = append(missingFlags, strings.Join(grpString, " ")) + } + + return fmt.Sprintf("one of these flags needs to be provided: %s", strings.Join(missingFlags, ", ")) } // ErrorFormatter is the interface that will suitably format the error output @@ -86,13 +104,6 @@ type exitError struct { err error } -// NewExitError calls Exit to create a new ExitCoder. -// -// Deprecated: This function is a duplicate of Exit and will eventually be removed. -func NewExitError(message interface{}, exitCode int) ExitCoder { - return Exit(message, exitCode) -} - // Exit wraps a message and exit code into an error, which by default is // handled with a call to os.Exit during default error handling. // @@ -126,10 +137,6 @@ func (ee *exitError) ExitCode() int { return ee.exitCode } -func (ee *exitError) Unwrap() error { - return ee.err -} - // HandleExitCoder handles errors implementing ExitCoder by printing their // message and calling OsExiter with the given exit code. // diff --git a/vendor/github.com/urfave/cli/v3/fish.go b/vendor/github.com/urfave/cli/v3/fish.go new file mode 100644 index 000000000..320dfc6c6 --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/fish.go @@ -0,0 +1,189 @@ +package cli + +import ( + "bytes" + "fmt" + "io" + "strings" + "text/template" +) + +// ToFishCompletion creates a fish completion string for the `*App` +// The function errors if either parsing or writing of the string fails. +func (cmd *Command) ToFishCompletion() (string, error) { + var w bytes.Buffer + if err := cmd.writeFishCompletionTemplate(&w); err != nil { + return "", err + } + return w.String(), nil +} + +type fishCommandCompletionTemplate struct { + Command *Command + Completions []string + AllCommands []string +} + +func (cmd *Command) writeFishCompletionTemplate(w io.Writer) error { + const name = "cli" + t, err := template.New(name).Parse(FishCompletionTemplate) + if err != nil { + return err + } + + // Add global flags + completions := prepareFishFlags(cmd.Name, cmd) + + // Add commands and their flags + completions = append( + completions, + prepareFishCommands(cmd.Name, cmd)..., + ) + + toplevelCommandNames := []string{} + for _, child := range cmd.Commands { + toplevelCommandNames = append(toplevelCommandNames, child.Names()...) + } + + return t.ExecuteTemplate(w, name, &fishCommandCompletionTemplate{ + Command: cmd, + Completions: completions, + AllCommands: toplevelCommandNames, + }) +} + +func prepareFishCommands(binary string, parent *Command) []string { + commands := parent.Commands + completions := []string{} + for _, command := range commands { + if !command.Hidden { + var completion strings.Builder + fmt.Fprintf(&completion, + "complete -x -c %s -n '%s' -a '%s'", + binary, + fishSubcommandHelper(binary, parent, commands), + command.Name, + ) + + if command.Usage != "" { + fmt.Fprintf(&completion, + " -d '%s'", + escapeSingleQuotes(command.Usage)) + } + completions = append(completions, completion.String()) + } + completions = append( + completions, + prepareFishFlags(binary, command)..., + ) + + // recursively iterate subcommands + completions = append( + completions, + prepareFishCommands(binary, command)..., + ) + } + + return completions +} + +func prepareFishFlags(binary string, owner *Command) []string { + flags := owner.VisibleFlags() + completions := []string{} + for _, f := range flags { + completion := &strings.Builder{} + fmt.Fprintf(completion, + "complete -c %s -n '%s'", + binary, + fishFlagHelper(binary, owner), + ) + + fishAddFileFlag(f, completion) + + for idx, opt := range f.Names() { + if idx == 0 { + fmt.Fprintf(completion, + " -l %s", strings.TrimSpace(opt), + ) + } else { + fmt.Fprintf(completion, + " -s %s", strings.TrimSpace(opt), + ) + } + } + + if flag, ok := f.(DocGenerationFlag); ok { + if flag.TakesValue() { + completion.WriteString(" -r") + } + + if flag.GetUsage() != "" { + fmt.Fprintf(completion, + " -d '%s'", + escapeSingleQuotes(flag.GetUsage())) + } + } + + completions = append(completions, completion.String()) + } + + return completions +} + +func fishAddFileFlag(flag Flag, completion *strings.Builder) { + switch f := flag.(type) { + case *StringFlag: + if f.TakesFile { + return + } + case *StringSliceFlag: + if f.TakesFile { + return + } + } + completion.WriteString(" -f") +} + +func fishSubcommandHelper(binary string, command *Command, siblings []*Command) string { + fishHelper := fmt.Sprintf("__fish_%s_no_subcommand", binary) + if len(command.Lineage()) > 1 { + var siblingNames []string + for _, sibling := range siblings { + siblingNames = append(siblingNames, sibling.Names()...) + } + ancestry := commandAncestry(command) + fishHelper = fmt.Sprintf( + "%s; and not __fish_seen_subcommand_from %s", + ancestry, + strings.Join(siblingNames, " "), + ) + } + return fishHelper +} + +func fishFlagHelper(binary string, command *Command) string { + fishHelper := fmt.Sprintf("__fish_%s_no_subcommand", binary) + if len(command.Lineage()) > 1 { + fishHelper = commandAncestry(command) + } + return fishHelper +} + +func commandAncestry(command *Command) string { + var ancestry []string + ancestors := command.Lineage() + for i := len(ancestors) - 2; i >= 0; i-- { + ancestry = append( + ancestry, + fmt.Sprintf( + "__fish_seen_subcommand_from %s", + strings.Join(ancestors[i].Names(), " "), + ), + ) + } + return strings.Join(ancestry, "; and ") +} + +func escapeSingleQuotes(input string) string { + return strings.ReplaceAll(input, `'`, `\'`) +} diff --git a/vendor/github.com/urfave/cli/v3/flag.go b/vendor/github.com/urfave/cli/v3/flag.go new file mode 100644 index 000000000..a5bd54748 --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/flag.go @@ -0,0 +1,231 @@ +package cli + +import ( + "context" + "fmt" + "regexp" + "strings" + "time" +) + +const defaultPlaceholder = "value" + +var ( + defaultSliceFlagSeparator = "," + defaultMapFlagKeyValueSeparator = "=" + disableSliceFlagSeparator = false +) + +var ( + slPfx = fmt.Sprintf("sl:::%d:::", time.Now().UTC().UnixNano()) + + commaWhitespace = regexp.MustCompile("[, ]+.*") +) + +// GenerateShellCompletionFlag enables shell completion +var GenerateShellCompletionFlag Flag = &BoolFlag{ + Name: "generate-shell-completion", + Hidden: true, +} + +// VersionFlag prints the version for the application +var VersionFlag Flag = &BoolFlag{ + Name: "version", + Aliases: []string{"v"}, + Usage: "print the version", + HideDefault: true, + Local: true, +} + +// HelpFlag prints the help for all commands and subcommands. +// Set to nil to disable the flag. The subcommand +// will still be added unless HideHelp or HideHelpCommand is set to true. +var HelpFlag Flag = &BoolFlag{ + Name: "help", + Aliases: []string{"h"}, + Usage: "show help", + HideDefault: true, + Local: true, +} + +// FlagStringer converts a flag definition to a string. This is used by help +// to display a flag. +var FlagStringer FlagStringFunc = stringifyFlag + +// Serializer is used to circumvent the limitations of flag.FlagSet.Set +type Serializer interface { + Serialize() string +} + +// FlagNamePrefixer converts a full flag name and its placeholder into the help +// message flag prefix. This is used by the default FlagStringer. +var FlagNamePrefixer FlagNamePrefixFunc = prefixedNames + +// FlagEnvHinter annotates flag help message with the environment variable +// details. This is used by the default FlagStringer. +var FlagEnvHinter FlagEnvHintFunc = withEnvHint + +// FlagFileHinter annotates flag help message with the environment variable +// details. This is used by the default FlagStringer. +var FlagFileHinter FlagFileHintFunc = withFileHint + +// FlagsByName is a slice of Flag. +type FlagsByName []Flag + +func (f FlagsByName) Len() int { + return len(f) +} + +func (f FlagsByName) Less(i, j int) bool { + if len(f[j].Names()) == 0 { + return false + } else if len(f[i].Names()) == 0 { + return true + } + return lexicographicLess(f[i].Names()[0], f[j].Names()[0]) +} + +func (f FlagsByName) Swap(i, j int) { + f[i], f[j] = f[j], f[i] +} + +// ActionableFlag is an interface that wraps Flag interface and RunAction operation. +type ActionableFlag interface { + RunAction(context.Context, *Command) error +} + +// Flag is a common interface related to parsing flags in cli. +// For more advanced flag parsing techniques, it is recommended that +// this interface be implemented. +type Flag interface { + fmt.Stringer + + // Retrieve the value of the Flag + Get() any + + // Lifecycle methods. + // flag callback prior to parsing + PreParse() error + + // flag callback post parsing + PostParse() error + + // Apply Flag settings to the given flag set + Set(string, string) error + + // All possible names for this flag + Names() []string + + // Whether the flag has been set or not + IsSet() bool +} + +// RequiredFlag is an interface that allows us to mark flags as required +// it allows flags required flags to be backwards compatible with the Flag interface +type RequiredFlag interface { + // whether the flag is a required flag or not + IsRequired() bool +} + +// DocGenerationFlag is an interface that allows documentation generation for the flag +type DocGenerationFlag interface { + // TakesValue returns true if the flag takes a value, otherwise false + TakesValue() bool + + // GetUsage returns the usage string for the flag + GetUsage() string + + // GetValue returns the flags value as string representation and an empty + // string if the flag takes no value at all. + GetValue() string + + // GetDefaultText returns the default text for this flag + GetDefaultText() string + + // GetEnvVars returns the env vars for this flag + GetEnvVars() []string + + // IsDefaultVisible returns whether the default value should be shown in + // help text + IsDefaultVisible() bool + // TypeName to detect if a flag is a string, bool, etc. + TypeName() string +} + +// DocGenerationMultiValueFlag extends DocGenerationFlag for slice/map based flags. +type DocGenerationMultiValueFlag interface { + DocGenerationFlag + + // IsMultiValueFlag returns true for flags that can be given multiple times. + IsMultiValueFlag() bool +} + +// Countable is an interface to enable detection of flag values which support +// repetitive flags +type Countable interface { + Count() int +} + +// VisibleFlag is an interface that allows to check if a flag is visible +type VisibleFlag interface { + // IsVisible returns true if the flag is not hidden, otherwise false + IsVisible() bool +} + +// CategorizableFlag is an interface that allows us to potentially +// use a flag in a categorized representation. +type CategorizableFlag interface { + // Returns the category of the flag + GetCategory() string + + // Sets the category of the flag + SetCategory(string) +} + +// LocalFlag is an interface to enable detection of flags which are local +// to current command +type LocalFlag interface { + IsLocal() bool +} + +func visibleFlags(fl []Flag) []Flag { + var visible []Flag + for _, f := range fl { + if vf, ok := f.(VisibleFlag); ok && vf.IsVisible() { + visible = append(visible, f) + } + } + return visible +} + +func FlagNames(name string, aliases []string) []string { + var ret []string + + for _, part := range append([]string{name}, aliases...) { + // v1 -> v2 migration warning zone: + // Strip off anything after the first found comma or space, which + // *hopefully* makes it a tiny bit more obvious that unexpected behavior is + // caused by using the v1 form of stringly typed "Name". + ret = append(ret, commaWhitespace.ReplaceAllString(part, "")) + } + + return ret +} + +func hasFlag(flags []Flag, fl Flag) bool { + for _, existing := range flags { + if fl == existing { + return true + } + } + + return false +} + +func flagSplitMultiValues(val string) []string { + if disableSliceFlagSeparator { + return []string{val} + } + + return strings.Split(val, defaultSliceFlagSeparator) +} diff --git a/vendor/github.com/urfave/cli/v3/flag_bool.go b/vendor/github.com/urfave/cli/v3/flag_bool.go new file mode 100644 index 000000000..d57644824 --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/flag_bool.go @@ -0,0 +1,81 @@ +package cli + +import ( + "errors" + "strconv" +) + +type BoolFlag = FlagBase[bool, BoolConfig, boolValue] + +// BoolConfig defines the configuration for bool flags +type BoolConfig struct { + Count *int +} + +// boolValue needs to implement the boolFlag internal interface in flag +// to be able to capture bool fields and values +// +// type boolFlag interface { +// Value +// IsBoolFlag() bool +// } +type boolValue struct { + destination *bool + count *int +} + +func (cmd *Command) Bool(name string) bool { + if v, ok := cmd.Value(name).(bool); ok { + tracef("bool available for flag name %[1]q with value=%[2]v (cmd=%[3]q)", name, v, cmd.Name) + return v + } + + tracef("bool NOT available for flag name %[1]q (cmd=%[2]q)", name, cmd.Name) + return false +} + +// Below functions are to satisfy the ValueCreator interface + +// Create creates the bool value +func (b boolValue) Create(val bool, p *bool, c BoolConfig) Value { + *p = val + if c.Count == nil { + c.Count = new(int) + } + return &boolValue{ + destination: p, + count: c.Count, + } +} + +// ToString formats the bool value +func (b boolValue) ToString(value bool) string { + return strconv.FormatBool(value) +} + +// Below functions are to satisfy the flag.Value interface + +func (b *boolValue) Set(s string) error { + v, err := strconv.ParseBool(s) + if err != nil { + err = errors.New("parse error") + return err + } + *b.destination = v + if b.count != nil { + *b.count = *b.count + 1 + } + return err +} + +func (b *boolValue) Get() interface{} { return *b.destination } + +func (b *boolValue) String() string { + return strconv.FormatBool(*b.destination) +} + +func (b *boolValue) IsBoolFlag() bool { return true } + +func (b *boolValue) Count() int { + return *b.count +} diff --git a/vendor/github.com/urfave/cli/v3/flag_bool_with_inverse.go b/vendor/github.com/urfave/cli/v3/flag_bool_with_inverse.go new file mode 100644 index 000000000..272dd98fe --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/flag_bool_with_inverse.go @@ -0,0 +1,240 @@ +package cli + +import ( + "context" + "fmt" + "slices" + "strings" +) + +var DefaultInverseBoolPrefix = "no-" + +type BoolWithInverseFlag struct { + Name string `json:"name"` // name of the flag + Category string `json:"category"` // category of the flag, if any + DefaultText string `json:"defaultText"` // default text of the flag for usage purposes + HideDefault bool `json:"hideDefault"` // whether to hide the default value in output + Usage string `json:"usage"` // usage string for help output + Sources ValueSourceChain `json:"-"` // sources to load flag value from + Required bool `json:"required"` // whether the flag is required or not + Hidden bool `json:"hidden"` // whether to hide the flag in help output + Local bool `json:"local"` // whether the flag needs to be applied to subcommands as well + Value bool `json:"defaultValue"` // default value for this flag if not set by from any source + Destination *bool `json:"-"` // destination pointer for value when set + Aliases []string `json:"aliases"` // Aliases that are allowed for this flag + TakesFile bool `json:"takesFileArg"` // whether this flag takes a file argument, mainly for shell completion purposes + Action func(context.Context, *Command, bool) error `json:"-"` // Action callback to be called when flag is set + OnlyOnce bool `json:"onlyOnce"` // whether this flag can be duplicated on the command line + Validator func(bool) error `json:"-"` // custom function to validate this flag value + ValidateDefaults bool `json:"validateDefaults"` // whether to validate defaults or not + Config BoolConfig `json:"config"` // Additional/Custom configuration associated with this flag type + InversePrefix string `json:"invPrefix"` // The prefix used to indicate a negative value. Default: `env` becomes `no-env` + + // unexported fields for internal use + count int // number of times the flag has been set + hasBeenSet bool // whether the flag has been set from env or file + applied bool // whether the flag has been applied to a flag set already + value Value // value representing this flag's value + pset bool + nset bool +} + +func (bif *BoolWithInverseFlag) IsSet() bool { + return bif.hasBeenSet +} + +func (bif *BoolWithInverseFlag) Get() any { + return bif.value.Get() +} + +func (bif *BoolWithInverseFlag) RunAction(ctx context.Context, cmd *Command) error { + if bif.Action != nil { + return bif.Action(ctx, cmd, bif.Get().(bool)) + } + + return nil +} + +func (bif *BoolWithInverseFlag) IsLocal() bool { + return bif.Local +} + +func (bif *BoolWithInverseFlag) inversePrefix() string { + if bif.InversePrefix == "" { + bif.InversePrefix = DefaultInverseBoolPrefix + } + + return bif.InversePrefix +} + +func (bif *BoolWithInverseFlag) PreParse() error { + count := bif.Config.Count + if count == nil { + count = &bif.count + } + dest := bif.Destination + if dest == nil { + dest = new(bool) + } + *dest = bif.Value + bif.value = &boolValue{ + destination: dest, + count: count, + } + + // Validate the given default or values set from external sources as well + if bif.Validator != nil && bif.ValidateDefaults { + if err := bif.Validator(bif.value.Get().(bool)); err != nil { + return err + } + } + bif.applied = true + return nil +} + +func (bif *BoolWithInverseFlag) PostParse() error { + tracef("postparse (flag=%[1]q)", bif.Name) + + if !bif.hasBeenSet { + if val, source, found := bif.Sources.LookupWithSource(); found { + if val == "" { + val = "false" + } + if err := bif.Set(bif.Name, val); err != nil { + return fmt.Errorf( + "could not parse %[1]q as %[2]T value from %[3]s for flag %[4]s: %[5]s", + val, bif.Value, source, bif.Name, err, + ) + } + + bif.hasBeenSet = true + } + } + + return nil +} + +func (bif *BoolWithInverseFlag) Set(name, val string) error { + if bif.count > 0 && bif.OnlyOnce { + return fmt.Errorf("cant duplicate this flag") + } + + bif.hasBeenSet = true + + if slices.Contains(append([]string{bif.Name}, bif.Aliases...), name) { + if bif.nset { + return fmt.Errorf("cannot set both flags `--%s` and `--%s`", bif.Name, bif.inversePrefix()+bif.Name) + } + if err := bif.value.Set(val); err != nil { + return err + } + bif.pset = true + } else { + if bif.pset { + return fmt.Errorf("cannot set both flags `--%s` and `--%s`", bif.Name, bif.inversePrefix()+bif.Name) + } + if err := bif.value.Set("false"); err != nil { + return err + } + bif.nset = true + } + + if bif.Validator != nil { + return bif.Validator(bif.value.Get().(bool)) + } + return nil +} + +func (bif *BoolWithInverseFlag) Names() []string { + names := append([]string{bif.Name}, bif.Aliases...) + + for _, name := range names { + names = append(names, bif.inversePrefix()+name) + } + + return names +} + +func (bif *BoolWithInverseFlag) IsRequired() bool { + return bif.Required +} + +func (bif *BoolWithInverseFlag) IsVisible() bool { + return !bif.Hidden +} + +// String implements the standard Stringer interface. +// +// Example for BoolFlag{Name: "env"} +// --[no-]env (default: false) +func (bif *BoolWithInverseFlag) String() string { + out := FlagStringer(bif) + + i := strings.Index(out, "\t") + + prefix := "--" + + // single character flags are prefixed with `-` instead of `--` + if len(bif.Name) == 1 { + prefix = "-" + } + + return fmt.Sprintf("%s[%s]%s%s", prefix, bif.inversePrefix(), bif.Name, out[i:]) +} + +// IsBoolFlag returns whether the flag doesnt need to accept args +func (bif *BoolWithInverseFlag) IsBoolFlag() bool { + return true +} + +// Count returns the number of times this flag has been invoked +func (bif *BoolWithInverseFlag) Count() int { + return bif.count +} + +// GetDefaultText returns the default text for this flag +func (bif *BoolWithInverseFlag) GetDefaultText() string { + if bif.Required { + return bif.DefaultText + } + return boolValue{}.ToString(bif.Value) +} + +// GetCategory returns the category of the flag +func (bif *BoolWithInverseFlag) GetCategory() string { + return bif.Category +} + +func (bif *BoolWithInverseFlag) SetCategory(c string) { + bif.Category = c +} + +// GetUsage returns the usage string for the flag +func (bif *BoolWithInverseFlag) GetUsage() string { + return bif.Usage +} + +// GetEnvVars returns the env vars for this flag +func (bif *BoolWithInverseFlag) GetEnvVars() []string { + return bif.Sources.EnvKeys() +} + +// GetValue returns the flags value as string representation and an empty +// string if the flag takes no value at all. +func (bif *BoolWithInverseFlag) GetValue() string { + return "" +} + +func (bif *BoolWithInverseFlag) TakesValue() bool { + return false +} + +// IsDefaultVisible returns true if the flag is not hidden, otherwise false +func (bif *BoolWithInverseFlag) IsDefaultVisible() bool { + return !bif.HideDefault +} + +// TypeName is used for stringify/docs. For bool its a no-op +func (bif *BoolWithInverseFlag) TypeName() string { + return "bool" +} diff --git a/vendor/github.com/urfave/cli/v3/flag_duration.go b/vendor/github.com/urfave/cli/v3/flag_duration.go new file mode 100644 index 000000000..37b4cb642 --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/flag_duration.go @@ -0,0 +1,47 @@ +package cli + +import ( + "fmt" + "time" +) + +type DurationFlag = FlagBase[time.Duration, NoConfig, durationValue] + +// -- time.Duration Value +type durationValue time.Duration + +// Below functions are to satisfy the ValueCreator interface + +func (d durationValue) Create(val time.Duration, p *time.Duration, c NoConfig) Value { + *p = val + return (*durationValue)(p) +} + +func (d durationValue) ToString(val time.Duration) string { + return fmt.Sprintf("%v", val) +} + +// Below functions are to satisfy the flag.Value interface + +func (d *durationValue) Set(s string) error { + v, err := time.ParseDuration(s) + if err != nil { + return err + } + *d = durationValue(v) + return err +} + +func (d *durationValue) Get() any { return time.Duration(*d) } + +func (d *durationValue) String() string { return (*time.Duration)(d).String() } + +func (cmd *Command) Duration(name string) time.Duration { + if v, ok := cmd.Value(name).(time.Duration); ok { + tracef("duration available for flag name %[1]q with value=%[2]v (cmd=%[3]q)", name, v, cmd.Name) + return v + } + + tracef("bool NOT available for flag name %[1]q (cmd=%[2]q)", name, cmd.Name) + return 0 +} diff --git a/vendor/github.com/urfave/cli/v2/flag_ext.go b/vendor/github.com/urfave/cli/v3/flag_ext.go similarity index 67% rename from vendor/github.com/urfave/cli/v2/flag_ext.go rename to vendor/github.com/urfave/cli/v3/flag_ext.go index 64da59ea9..9972af7c5 100644 --- a/vendor/github.com/urfave/cli/v2/flag_ext.go +++ b/vendor/github.com/urfave/cli/v3/flag_ext.go @@ -6,11 +6,26 @@ type extFlag struct { f *flag.Flag } -func (e *extFlag) Apply(fs *flag.FlagSet) error { - fs.Var(e.f.Value, e.f.Name, e.f.Usage) +func (e *extFlag) PreParse() error { + if e.f.DefValue != "" { + return e.Set("", e.f.DefValue) + } + + return nil +} + +func (e *extFlag) PostParse() error { return nil } +func (e *extFlag) Set(_ string, val string) error { + return e.f.Value.Set(val) +} + +func (e *extFlag) Get() any { + return e.f.Value.(flag.Getter).Get() +} + func (e *extFlag) Names() []string { return []string{e.f.Name} } diff --git a/vendor/github.com/urfave/cli/v3/flag_float.go b/vendor/github.com/urfave/cli/v3/flag_float.go new file mode 100644 index 000000000..71aa0c27b --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/flag_float.go @@ -0,0 +1,75 @@ +package cli + +import ( + "strconv" + "unsafe" +) + +type ( + FloatFlag = FlagBase[float64, NoConfig, floatValue[float64]] + Float32Flag = FlagBase[float32, NoConfig, floatValue[float32]] + Float64Flag = FlagBase[float64, NoConfig, floatValue[float64]] +) + +// -- float Value +type floatValue[T float32 | float64] struct { + val *T +} + +// Below functions are to satisfy the ValueCreator interface + +func (f floatValue[T]) Create(val T, p *T, c NoConfig) Value { + *p = val + + return &floatValue[T]{val: p} +} + +func (f floatValue[T]) ToString(b T) string { + return strconv.FormatFloat(float64(b), 'g', -1, int(unsafe.Sizeof(T(0))*8)) +} + +// Below functions are to satisfy the flag.Value interface + +func (f *floatValue[T]) Set(s string) error { + v, err := strconv.ParseFloat(s, int(unsafe.Sizeof(T(0))*8)) + if err != nil { + return err + } + *f.val = T(v) + return nil +} + +func (f *floatValue[T]) Get() any { return *f.val } + +func (f *floatValue[T]) String() string { + return strconv.FormatFloat(float64(*f.val), 'g', -1, int(unsafe.Sizeof(T(0))*8)) +} + +// Float looks up the value of a local FloatFlag, returns +// 0 if not found +func (cmd *Command) Float(name string) float64 { + return getFloat[float64](cmd, name) +} + +// Float32 looks up the value of a local Float32Flag, returns +// 0 if not found +func (cmd *Command) Float32(name string) float32 { + return getFloat[float32](cmd, name) +} + +// Float64 looks up the value of a local Float64Flag, returns +// 0 if not found +func (cmd *Command) Float64(name string) float64 { + return getFloat[float64](cmd, name) +} + +func getFloat[T float32 | float64](cmd *Command, name string) T { + if v, ok := cmd.Value(name).(T); ok { + tracef("float available for flag name %[1]q with value=%[2]v (cmd=%[3]q)", name, v, cmd.Name) + + return v + } + + tracef("float NOT available for flag name %[1]q (cmd=%[2]q)", name, cmd.Name) + return 0 +} diff --git a/vendor/github.com/urfave/cli/v3/flag_float_slice.go b/vendor/github.com/urfave/cli/v3/flag_float_slice.go new file mode 100644 index 000000000..9a6a46d8a --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/flag_float_slice.go @@ -0,0 +1,34 @@ +package cli + +type ( + FloatSlice = SliceBase[float64, NoConfig, floatValue[float64]] + Float32Slice = SliceBase[float32, NoConfig, floatValue[float32]] + Float64Slice = SliceBase[float64, NoConfig, floatValue[float64]] + FloatSliceFlag = FlagBase[[]float64, NoConfig, FloatSlice] + Float32SliceFlag = FlagBase[[]float32, NoConfig, Float32Slice] + Float64SliceFlag = FlagBase[[]float64, NoConfig, Float64Slice] +) + +var ( + NewFloatSlice = NewSliceBase[float64, NoConfig, floatValue[float64]] + NewFloat32Slice = NewSliceBase[float32, NoConfig, floatValue[float32]] + NewFloat64Slice = NewSliceBase[float64, NoConfig, floatValue[float64]] +) + +// FloatSlice looks up the value of a local FloatSliceFlag, returns +// nil if not found +func (cmd *Command) FloatSlice(name string) []float64 { + return getNumberSlice[float64](cmd, name) +} + +// Float32Slice looks up the value of a local Float32Slice, returns +// nil if not found +func (cmd *Command) Float32Slice(name string) []float32 { + return getNumberSlice[float32](cmd, name) +} + +// Float64Slice looks up the value of a local Float64SliceFlag, returns +// nil if not found +func (cmd *Command) Float64Slice(name string) []float64 { + return getNumberSlice[float64](cmd, name) +} diff --git a/vendor/github.com/urfave/cli/v3/flag_generic.go b/vendor/github.com/urfave/cli/v3/flag_generic.go new file mode 100644 index 000000000..9618409ee --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/flag_generic.go @@ -0,0 +1,67 @@ +package cli + +type GenericFlag = FlagBase[Value, NoConfig, genericValue] + +// -- Value Value +type genericValue struct { + val Value +} + +// Below functions are to satisfy the ValueCreator interface + +func (f genericValue) Create(val Value, p *Value, c NoConfig) Value { + *p = val + return &genericValue{ + val: *p, + } +} + +func (f genericValue) ToString(b Value) string { + if b != nil { + return b.String() + } + return "" +} + +// Below functions are to satisfy the flag.Value interface + +func (f *genericValue) Set(s string) error { + if f.val != nil { + return f.val.Set(s) + } + return nil +} + +func (f *genericValue) Get() any { + if f.val != nil { + return f.val.Get() + } + return nil +} + +func (f *genericValue) String() string { + if f.val != nil { + return f.val.String() + } + return "" +} + +func (f *genericValue) IsBoolFlag() bool { + if f.val == nil { + return false + } + bf, ok := f.val.(boolFlag) + return ok && bf.IsBoolFlag() +} + +// Generic looks up the value of a local GenericFlag, returns +// nil if not found +func (cmd *Command) Generic(name string) Value { + if v, ok := cmd.Value(name).(Value); ok { + tracef("generic available for flag name %[1]q with value=%[2]v (cmd=%[3]q)", name, v, cmd.Name) + return v + } + + tracef("generic NOT available for flag name %[1]q (cmd=%[2]q)", name, cmd.Name) + return nil +} diff --git a/vendor/github.com/urfave/cli/v3/flag_impl.go b/vendor/github.com/urfave/cli/v3/flag_impl.go new file mode 100644 index 000000000..2495b6efa --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/flag_impl.go @@ -0,0 +1,297 @@ +package cli + +import ( + "context" + "flag" + "fmt" + "reflect" + "strings" +) + +// Value represents a value as used by cli. +// For now it implements the golang flag.Value interface +type Value interface { + flag.Value + flag.Getter +} + +type boolFlag interface { + IsBoolFlag() bool +} + +// ValueCreator is responsible for creating a flag.Value emulation +// as well as custom formatting +// +// T specifies the type +// C specifies the config for the type +type ValueCreator[T any, C any] interface { + Create(T, *T, C) Value + ToString(T) string +} + +// NoConfig is for flags which dont need a custom configuration +type NoConfig struct{} + +// FlagBase [T,C,VC] is a generic flag base which can be used +// as a boilerplate to implement the most common interfaces +// used by urfave/cli. +// +// T specifies the type +// C specifies the configuration required(if any for that flag type) +// VC specifies the value creator which creates the flag.Value emulation +type FlagBase[T any, C any, VC ValueCreator[T, C]] struct { + Name string `json:"name"` // name of the flag + Category string `json:"category"` // category of the flag, if any + DefaultText string `json:"defaultText"` // default text of the flag for usage purposes + HideDefault bool `json:"hideDefault"` // whether to hide the default value in output + Usage string `json:"usage"` // usage string for help output + Sources ValueSourceChain `json:"-"` // sources to load flag value from + Required bool `json:"required"` // whether the flag is required or not + Hidden bool `json:"hidden"` // whether to hide the flag in help output + Local bool `json:"local"` // whether the flag needs to be applied to subcommands as well + Value T `json:"defaultValue"` // default value for this flag if not set by from any source + Destination *T `json:"-"` // destination pointer for value when set + Aliases []string `json:"aliases"` // Aliases that are allowed for this flag + TakesFile bool `json:"takesFileArg"` // whether this flag takes a file argument, mainly for shell completion purposes + Action func(context.Context, *Command, T) error `json:"-"` // Action callback to be called when flag is set + Config C `json:"config"` // Additional/Custom configuration associated with this flag type + OnlyOnce bool `json:"onlyOnce"` // whether this flag can be duplicated on the command line + Validator func(T) error `json:"-"` // custom function to validate this flag value + ValidateDefaults bool `json:"validateDefaults"` // whether to validate defaults or not + + // unexported fields for internal use + count int // number of times the flag has been set + hasBeenSet bool // whether the flag has been set from env or file + applied bool // whether the flag has been applied to a flag set already + creator VC // value creator for this flag type + value Value // value representing this flag's value +} + +// GetValue returns the flags value as string representation and an empty +// string if the flag takes no value at all. +func (f *FlagBase[T, C, V]) GetValue() string { + if !f.TakesValue() { + return "" + } + return fmt.Sprintf("%v", f.Value) +} + +// TypeName returns the type of the flag. +func (f *FlagBase[T, C, V]) TypeName() string { + ty := reflect.TypeOf(f.Value) + if ty == nil { + return "" + } + // convert the typename to generic type + convertToGenericType := func(name string) string { + prefixMap := map[string]string{ + "float": "float", + "int": "int", + "uint": "uint", + } + for prefix, genericType := range prefixMap { + if strings.HasPrefix(name, prefix) { + return genericType + } + } + return strings.ToLower(name) + } + + switch ty.Kind() { + // if it is a Slice, then return the slice's inner type. Will nested slices be used in the future? + case reflect.Slice: + elemType := ty.Elem() + return convertToGenericType(elemType.Name()) + // if it is a Map, then return the map's key and value types. + case reflect.Map: + keyType := ty.Key() + valueType := ty.Elem() + return fmt.Sprintf("%s=%s", convertToGenericType(keyType.Name()), convertToGenericType(valueType.Name())) + default: + return convertToGenericType(ty.Name()) + } +} + +// PostParse populates the flag given the flag set and environment +func (f *FlagBase[T, C, V]) PostParse() error { + tracef("postparse (flag=%[1]q)", f.Name) + + if !f.hasBeenSet { + if val, source, found := f.Sources.LookupWithSource(); found { + if val != "" || reflect.TypeOf(f.Value).Kind() == reflect.String { + if err := f.Set(f.Name, val); err != nil { + return fmt.Errorf( + "could not parse %[1]q as %[2]T value from %[3]s for flag %[4]s: %[5]s", + val, f.Value, source, f.Name, err, + ) + } + } else if val == "" && reflect.TypeOf(f.Value).Kind() == reflect.Bool { + _ = f.Set(f.Name, "false") + } + + f.hasBeenSet = true + } + } + + return nil +} + +func (f *FlagBase[T, C, V]) PreParse() error { + newVal := f.Value + + if f.Destination == nil { + f.value = f.creator.Create(newVal, new(T), f.Config) + } else { + f.value = f.creator.Create(newVal, f.Destination, f.Config) + } + + // Validate the given default or values set from external sources as well + if f.Validator != nil && f.ValidateDefaults { + if err := f.Validator(f.value.Get().(T)); err != nil { + return err + } + } + f.applied = true + return nil +} + +// Set applies given value from string +func (f *FlagBase[T, C, V]) Set(_ string, val string) error { + tracef("apply (flag=%[1]q)", f.Name) + + // TODO move this phase into a separate flag initialization function + // if flag has been applied previously then it would have already been set + // from env or file. So no need to apply the env set again. However + // lots of units tests prior to persistent flags assumed that the + // flag can be applied to different flag sets multiple times while still + // keeping the env set. + if !f.applied || f.Local { + if err := f.PreParse(); err != nil { + return err + } + f.applied = true + } + + if f.count == 1 && f.OnlyOnce { + return fmt.Errorf("cant duplicate this flag") + } + + f.count++ + if err := f.value.Set(val); err != nil { + return err + } + f.hasBeenSet = true + if f.Validator != nil { + if err := f.Validator(f.value.Get().(T)); err != nil { + return err + } + } + return nil +} + +func (f *FlagBase[T, C, V]) Get() any { + if f.value != nil { + return f.value.Get() + } + return f.Value +} + +// IsDefaultVisible returns true if the flag is not hidden, otherwise false +func (f *FlagBase[T, C, V]) IsDefaultVisible() bool { + return !f.HideDefault +} + +// String returns a readable representation of this value (for usage defaults) +func (f *FlagBase[T, C, V]) String() string { + return FlagStringer(f) +} + +// IsSet returns whether or not the flag has been set through env or file +func (f *FlagBase[T, C, V]) IsSet() bool { + return f.hasBeenSet +} + +// Names returns the names of the flag +func (f *FlagBase[T, C, V]) Names() []string { + return FlagNames(f.Name, f.Aliases) +} + +// IsRequired returns whether or not the flag is required +func (f *FlagBase[T, C, V]) IsRequired() bool { + return f.Required +} + +// IsVisible returns true if the flag is not hidden, otherwise false +func (f *FlagBase[T, C, V]) IsVisible() bool { + return !f.Hidden +} + +// GetCategory returns the category of the flag +func (f *FlagBase[T, C, V]) GetCategory() string { + return f.Category +} + +func (f *FlagBase[T, C, V]) SetCategory(c string) { + f.Category = c +} + +// GetUsage returns the usage string for the flag +func (f *FlagBase[T, C, V]) GetUsage() string { + return f.Usage +} + +// GetEnvVars returns the env vars for this flag +func (f *FlagBase[T, C, V]) GetEnvVars() []string { + return f.Sources.EnvKeys() +} + +// TakesValue returns true if the flag takes a value, otherwise false +func (f *FlagBase[T, C, V]) TakesValue() bool { + var t T + return reflect.TypeOf(t) == nil || reflect.TypeOf(t).Kind() != reflect.Bool +} + +// GetDefaultText returns the default text for this flag +func (f *FlagBase[T, C, V]) GetDefaultText() string { + if f.DefaultText != "" { + return f.DefaultText + } + var v V + return v.ToString(f.Value) +} + +// RunAction executes flag action if set +func (f *FlagBase[T, C, V]) RunAction(ctx context.Context, cmd *Command) error { + if f.Action != nil { + return f.Action(ctx, cmd, f.value.Get().(T)) + } + + return nil +} + +// IsMultiValueFlag returns true if the value type T can take multiple +// values from cmd line. This is true for slice and map type flags +func (f *FlagBase[T, C, VC]) IsMultiValueFlag() bool { + // TBD how to specify + if reflect.TypeOf(f.Value) == nil { + return false + } + kind := reflect.TypeOf(f.Value).Kind() + return kind == reflect.Slice || kind == reflect.Map +} + +// IsLocal returns false if flag needs to be persistent across subcommands +func (f *FlagBase[T, C, VC]) IsLocal() bool { + return f.Local +} + +// IsBoolFlag returns whether the flag doesnt need to accept args +func (f *FlagBase[T, C, VC]) IsBoolFlag() bool { + bf, ok := f.value.(boolFlag) + return ok && bf.IsBoolFlag() +} + +// Count returns the number of times this flag has been invoked +func (f *FlagBase[T, C, VC]) Count() int { + return f.count +} diff --git a/vendor/github.com/urfave/cli/v3/flag_int.go b/vendor/github.com/urfave/cli/v3/flag_int.go new file mode 100644 index 000000000..0e082221e --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/flag_int.go @@ -0,0 +1,107 @@ +package cli + +import ( + "strconv" + "unsafe" +) + +type ( + IntFlag = FlagBase[int, IntegerConfig, intValue[int]] + Int8Flag = FlagBase[int8, IntegerConfig, intValue[int8]] + Int16Flag = FlagBase[int16, IntegerConfig, intValue[int16]] + Int32Flag = FlagBase[int32, IntegerConfig, intValue[int32]] + Int64Flag = FlagBase[int64, IntegerConfig, intValue[int64]] +) + +// IntegerConfig is the configuration for all integer type flags +type IntegerConfig struct { + Base int +} + +// -- int Value +type intValue[T int | int8 | int16 | int32 | int64] struct { + val *T + base int +} + +// Below functions are to satisfy the ValueCreator interface + +func (i intValue[T]) Create(val T, p *T, c IntegerConfig) Value { + *p = val + + return &intValue[T]{ + val: p, + base: c.Base, + } +} + +func (i intValue[T]) ToString(b T) string { + if i.base == 0 { + i.base = 10 + } + + return strconv.FormatInt(int64(b), i.base) +} + +// Below functions are to satisfy the flag.Value interface + +func (i *intValue[T]) Set(s string) error { + v, err := strconv.ParseInt(s, i.base, int(unsafe.Sizeof(T(0))*8)) + if err != nil { + return err + } + *i.val = T(v) + return err +} + +func (i *intValue[T]) Get() any { return *i.val } + +func (i *intValue[T]) String() string { + base := i.base + if base == 0 { + base = 10 + } + + return strconv.FormatInt(int64(*i.val), base) +} + +// Int looks up the value of a local Int64Flag, returns +// 0 if not found +func (cmd *Command) Int(name string) int { + return getInt[int](cmd, name) +} + +// Int8 looks up the value of a local Int8Flag, returns +// 0 if not found +func (cmd *Command) Int8(name string) int8 { + return getInt[int8](cmd, name) +} + +// Int16 looks up the value of a local Int16Flag, returns +// 0 if not found +func (cmd *Command) Int16(name string) int16 { + return getInt[int16](cmd, name) +} + +// Int32 looks up the value of a local Int32Flag, returns +// 0 if not found +func (cmd *Command) Int32(name string) int32 { + return getInt[int32](cmd, name) +} + +// Int64 looks up the value of a local Int64Flag, returns +// 0 if not found +func (cmd *Command) Int64(name string) int64 { + return getInt[int64](cmd, name) +} + +func getInt[T int | int8 | int16 | int32 | int64](cmd *Command, name string) T { + if v, ok := cmd.Value(name).(T); ok { + tracef("int available for flag name %[1]q with value=%[2]v (cmd=%[3]q)", name, v, cmd.Name) + + return v + } + + tracef("int NOT available for flag name %[1]q (cmd=%[2]q)", name, cmd.Name) + return 0 +} diff --git a/vendor/github.com/urfave/cli/v3/flag_int_slice.go b/vendor/github.com/urfave/cli/v3/flag_int_slice.go new file mode 100644 index 000000000..22dcb5a24 --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/flag_int_slice.go @@ -0,0 +1,52 @@ +package cli + +type ( + IntSlice = SliceBase[int, IntegerConfig, intValue[int]] + Int8Slice = SliceBase[int8, IntegerConfig, intValue[int8]] + Int16Slice = SliceBase[int16, IntegerConfig, intValue[int16]] + Int32Slice = SliceBase[int32, IntegerConfig, intValue[int32]] + Int64Slice = SliceBase[int64, IntegerConfig, intValue[int64]] + IntSliceFlag = FlagBase[[]int, IntegerConfig, IntSlice] + Int8SliceFlag = FlagBase[[]int8, IntegerConfig, Int8Slice] + Int16SliceFlag = FlagBase[[]int16, IntegerConfig, Int16Slice] + Int32SliceFlag = FlagBase[[]int32, IntegerConfig, Int32Slice] + Int64SliceFlag = FlagBase[[]int64, IntegerConfig, Int64Slice] +) + +var ( + NewIntSlice = NewSliceBase[int, IntegerConfig, intValue[int]] + NewInt8Slice = NewSliceBase[int8, IntegerConfig, intValue[int8]] + NewInt16Slice = NewSliceBase[int16, IntegerConfig, intValue[int16]] + NewInt32Slice = NewSliceBase[int32, IntegerConfig, intValue[int32]] + NewInt64Slice = NewSliceBase[int64, IntegerConfig, intValue[int64]] +) + +// IntSlice looks up the value of a local IntSliceFlag, returns +// nil if not found +func (cmd *Command) IntSlice(name string) []int { + return getNumberSlice[int](cmd, name) +} + +// Int8Slice looks up the value of a local Int8SliceFlag, returns +// nil if not found +func (cmd *Command) Int8Slice(name string) []int8 { + return getNumberSlice[int8](cmd, name) +} + +// Int16Slice looks up the value of a local Int16SliceFlag, returns +// nil if not found +func (cmd *Command) Int16Slice(name string) []int16 { + return getNumberSlice[int16](cmd, name) +} + +// Int32Slice looks up the value of a local Int32SliceFlag, returns +// nil if not found +func (cmd *Command) Int32Slice(name string) []int32 { + return getNumberSlice[int32](cmd, name) +} + +// Int64Slice looks up the value of a local Int64SliceFlag, returns +// nil if not found +func (cmd *Command) Int64Slice(name string) []int64 { + return getNumberSlice[int64](cmd, name) +} diff --git a/vendor/github.com/urfave/cli/v3/flag_map_impl.go b/vendor/github.com/urfave/cli/v3/flag_map_impl.go new file mode 100644 index 000000000..b03514b7d --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/flag_map_impl.go @@ -0,0 +1,112 @@ +package cli + +import ( + "encoding/json" + "fmt" + "reflect" + "sort" + "strings" +) + +// MapBase wraps map[string]T to satisfy flag.Value +type MapBase[T any, C any, VC ValueCreator[T, C]] struct { + dict *map[string]T + hasBeenSet bool + value Value +} + +func (i MapBase[T, C, VC]) Create(val map[string]T, p *map[string]T, c C) Value { + *p = map[string]T{} + for k, v := range val { + (*p)[k] = v + } + var t T + np := new(T) + var vc VC + return &MapBase[T, C, VC]{ + dict: p, + value: vc.Create(t, np, c), + } +} + +// NewMapBase makes a *MapBase with default values +func NewMapBase[T any, C any, VC ValueCreator[T, C]](defaults map[string]T) *MapBase[T, C, VC] { + return &MapBase[T, C, VC]{ + dict: &defaults, + } +} + +// Set parses the value and appends it to the list of values +func (i *MapBase[T, C, VC]) Set(value string) error { + if !i.hasBeenSet { + *i.dict = map[string]T{} + i.hasBeenSet = true + } + + if strings.HasPrefix(value, slPfx) { + // Deserializing assumes overwrite + _ = json.Unmarshal([]byte(strings.Replace(value, slPfx, "", 1)), &i.dict) + i.hasBeenSet = true + return nil + } + + for _, item := range flagSplitMultiValues(value) { + key, value, ok := strings.Cut(item, defaultMapFlagKeyValueSeparator) + if !ok { + return fmt.Errorf("item %q is missing separator %q", item, defaultMapFlagKeyValueSeparator) + } + if err := i.value.Set(value); err != nil { + return err + } + (*i.dict)[key] = i.value.Get().(T) + } + + return nil +} + +// String returns a readable representation of this value (for usage defaults) +func (i *MapBase[T, C, VC]) String() string { + v := i.Value() + var t T + if reflect.TypeOf(t).Kind() == reflect.String { + return fmt.Sprintf("%v", v) + } + return fmt.Sprintf("%T{%s}", v, i.ToString(v)) +} + +// Serialize allows MapBase to fulfill Serializer +func (i *MapBase[T, C, VC]) Serialize() string { + jsonBytes, _ := json.Marshal(i.dict) + return fmt.Sprintf("%s%s", slPfx, string(jsonBytes)) +} + +// Value returns the mapping of values set by this flag +func (i *MapBase[T, C, VC]) Value() map[string]T { + if i.dict == nil { + return map[string]T{} + } + return *i.dict +} + +// Get returns the mapping of values set by this flag +func (i *MapBase[T, C, VC]) Get() interface{} { + return *i.dict +} + +func (i MapBase[T, C, VC]) ToString(t map[string]T) string { + var defaultVals []string + var vc VC + for _, k := range sortedKeys(t) { + defaultVals = append(defaultVals, k+defaultMapFlagKeyValueSeparator+vc.ToString(t[k])) + } + return strings.Join(defaultVals, ", ") +} + +func sortedKeys[T any](dict map[string]T) []string { + keys := make([]string, 0, len(dict)) + for k := range dict { + keys = append(keys, k) + } + sort.Strings(keys) + return keys +} diff --git a/vendor/github.com/urfave/cli/v3/flag_mutex.go b/vendor/github.com/urfave/cli/v3/flag_mutex.go new file mode 100644 index 000000000..247bcb569 --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/flag_mutex.go @@ -0,0 +1,54 @@ +package cli + +// MutuallyExclusiveFlags defines a mutually exclusive flag group +// Multiple option paths can be provided out of which +// only one can be defined on cmdline +// So for example +// [ --foo | [ --bar something --darth somethingelse ] ] +type MutuallyExclusiveFlags struct { + // Flag list + Flags [][]Flag + + // whether this group is required + Required bool + + // Category to apply to all flags within group + Category string +} + +func (grp MutuallyExclusiveFlags) check(_ *Command) error { + oneSet := false + e := &mutuallyExclusiveGroup{} + + for _, grpf := range grp.Flags { + for _, f := range grpf { + if f.IsSet() { + if oneSet { + e.flag2Name = f.Names()[0] + return e + } + e.flag1Name = f.Names()[0] + oneSet = true + break + } + if oneSet { + break + } + } + } + + if !oneSet && grp.Required { + return &mutuallyExclusiveGroupRequiredFlag{flags: &grp} + } + return nil +} + +func (grp MutuallyExclusiveFlags) propagateCategory() { + for _, grpf := range grp.Flags { + for _, f := range grpf { + if cf, ok := f.(CategorizableFlag); ok { + cf.SetCategory(grp.Category) + } + } + } +} diff --git a/vendor/github.com/urfave/cli/v3/flag_number_slice.go b/vendor/github.com/urfave/cli/v3/flag_number_slice.go new file mode 100644 index 000000000..77e317020 --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/flag_number_slice.go @@ -0,0 +1,15 @@ +package cli + +type numberType interface { + int | int8 | int16 | int32 | int64 | float32 | float64 +} + +func getNumberSlice[T numberType](cmd *Command, name string) []T { + if v, ok := cmd.Value(name).([]T); ok { + tracef("%T slice available for flag name %[1]q with value=%[2]v (cmd=%[3]q)", *new(T), name, v, cmd.Name) + return v + } + + tracef("%T slice NOT available for flag name %[1]q (cmd=%[2]q)", *new(T), name, cmd.Name) + return nil +} diff --git a/vendor/github.com/urfave/cli/v3/flag_slice_base.go b/vendor/github.com/urfave/cli/v3/flag_slice_base.go new file mode 100644 index 000000000..b97c4ff4f --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/flag_slice_base.go @@ -0,0 +1,96 @@ +package cli + +import ( + "encoding/json" + "fmt" + "reflect" + "strings" +) + +// SliceBase wraps []T to satisfy flag.Value +type SliceBase[T any, C any, VC ValueCreator[T, C]] struct { + slice *[]T + hasBeenSet bool + value Value +} + +func (i SliceBase[T, C, VC]) Create(val []T, p *[]T, c C) Value { + *p = []T{} + *p = append(*p, val...) + var t T + np := new(T) + var vc VC + return &SliceBase[T, C, VC]{ + slice: p, + value: vc.Create(t, np, c), + } +} + +// NewSliceBase makes a *SliceBase with default values +func NewSliceBase[T any, C any, VC ValueCreator[T, C]](defaults ...T) *SliceBase[T, C, VC] { + return &SliceBase[T, C, VC]{ + slice: &defaults, + } +} + +// Set parses the value and appends it to the list of values +func (i *SliceBase[T, C, VC]) Set(value string) error { + if !i.hasBeenSet { + *i.slice = []T{} + i.hasBeenSet = true + } + + if strings.HasPrefix(value, slPfx) { + // Deserializing assumes overwrite + _ = json.Unmarshal([]byte(strings.Replace(value, slPfx, "", 1)), &i.slice) + i.hasBeenSet = true + return nil + } + + for _, s := range flagSplitMultiValues(value) { + if err := i.value.Set(strings.TrimSpace(s)); err != nil { + return err + } + *i.slice = append(*i.slice, i.value.Get().(T)) + } + + return nil +} + +// String returns a readable representation of this value (for usage defaults) +func (i *SliceBase[T, C, VC]) String() string { + v := i.Value() + var t T + if reflect.TypeOf(t).Kind() == reflect.String { + return fmt.Sprintf("%v", v) + } + return fmt.Sprintf("%T{%s}", v, i.ToString(v)) +} + +// Serialize allows SliceBase to fulfill Serializer +func (i *SliceBase[T, C, VC]) Serialize() string { + jsonBytes, _ := json.Marshal(i.slice) + return fmt.Sprintf("%s%s", slPfx, string(jsonBytes)) +} + +// Value returns the slice of values set by this flag +func (i *SliceBase[T, C, VC]) Value() []T { + if i.slice == nil { + return nil + } + return *i.slice +} + +// Get returns the slice of values set by this flag +func (i *SliceBase[T, C, VC]) Get() interface{} { + return *i.slice +} + +func (i SliceBase[T, C, VC]) ToString(t []T) string { + var defaultVals []string + var v VC + for _, s := range t { + defaultVals = append(defaultVals, v.ToString(s)) + } + return strings.Join(defaultVals, ", ") +} diff --git a/vendor/github.com/urfave/cli/v3/flag_string.go b/vendor/github.com/urfave/cli/v3/flag_string.go new file mode 100644 index 000000000..bdc1ec65f --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/flag_string.go @@ -0,0 +1,66 @@ +package cli + +import ( + "fmt" + "strings" +) + +type StringFlag = FlagBase[string, StringConfig, stringValue] + +// StringConfig defines the configuration for string flags +type StringConfig struct { + // Whether to trim whitespace of parsed value + TrimSpace bool +} + +// -- string Value +type stringValue struct { + destination *string + trimSpace bool +} + +// Below functions are to satisfy the ValueCreator interface + +func (s stringValue) Create(val string, p *string, c StringConfig) Value { + *p = val + return &stringValue{ + destination: p, + trimSpace: c.TrimSpace, + } +} + +func (s stringValue) ToString(val string) string { + if val == "" { + return val + } + return fmt.Sprintf("%q", val) +} + +// Below functions are to satisfy the flag.Value interface + +func (s *stringValue) Set(val string) error { + if s.trimSpace { + val = strings.TrimSpace(val) + } + *s.destination = val + return nil +} + +func (s *stringValue) Get() any { return *s.destination } + +func (s *stringValue) String() string { + if s.destination != nil { + return *s.destination + } + return "" +} + +func (cmd *Command) String(name string) string { + if v, ok := cmd.Value(name).(string); ok { + tracef("string available for flag name %[1]q with value=%[2]v (cmd=%[3]q)", name, v, cmd.Name) + return v + } + + tracef("string NOT available for flag name %[1]q (cmd=%[2]q)", name, cmd.Name) + return "" +} diff --git a/vendor/github.com/urfave/cli/v3/flag_string_map.go b/vendor/github.com/urfave/cli/v3/flag_string_map.go new file mode 100644 index 000000000..52fd7362a --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/flag_string_map.go @@ -0,0 +1,20 @@ +package cli + +type ( + StringMap = MapBase[string, StringConfig, stringValue] + StringMapFlag = FlagBase[map[string]string, StringConfig, StringMap] +) + +var NewStringMap = NewMapBase[string, StringConfig, stringValue] + +// StringMap looks up the value of a local StringMapFlag, returns +// nil if not found +func (cmd *Command) StringMap(name string) map[string]string { + if v, ok := cmd.Value(name).(map[string]string); ok { + tracef("string map available for flag name %[1]q with value=%[2]v (cmd=%[3]q)", name, v, cmd.Name) + return v + } + + tracef("string map NOT available for flag name %[1]q (cmd=%[2]q)", name, cmd.Name) + return nil +} diff --git a/vendor/github.com/urfave/cli/v3/flag_string_slice.go b/vendor/github.com/urfave/cli/v3/flag_string_slice.go new file mode 100644 index 000000000..4cb6c5a06 --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/flag_string_slice.go @@ -0,0 +1,20 @@ +package cli + +type ( + StringSlice = SliceBase[string, StringConfig, stringValue] + StringSliceFlag = FlagBase[[]string, StringConfig, StringSlice] +) + +var NewStringSlice = NewSliceBase[string, StringConfig, stringValue] + +// StringSlice looks up the value of a local StringSliceFlag, returns +// nil if not found +func (cmd *Command) StringSlice(name string) []string { + if v, ok := cmd.Value(name).([]string); ok { + tracef("string slice available for flag name %[1]q with value=%[2]v (cmd=%[3]q)", name, v, cmd.Name) + return v + } + + tracef("string slice NOT available for flag name %[1]q (cmd=%[2]q)", name, cmd.Name) + return nil +} diff --git a/vendor/github.com/urfave/cli/v3/flag_timestamp.go b/vendor/github.com/urfave/cli/v3/flag_timestamp.go new file mode 100644 index 000000000..413a2f0e4 --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/flag_timestamp.go @@ -0,0 +1,142 @@ +package cli + +import ( + "errors" + "fmt" + "time" +) + +type TimestampFlag = FlagBase[time.Time, TimestampConfig, timestampValue] + +// TimestampConfig defines the config for timestamp flags +type TimestampConfig struct { + Timezone *time.Location + // Available layouts for flag value. + // + // Note that value for formats with missing year/date will be interpreted as current year/date respectively. + // + // Read more about time layouts: https://pkg.go.dev/time#pkg-constants + Layouts []string +} + +// timestampValue wrap to satisfy golang's flag interface. +type timestampValue struct { + timestamp *time.Time + hasBeenSet bool + layouts []string + location *time.Location +} + +var _ ValueCreator[time.Time, TimestampConfig] = timestampValue{} + +// Below functions are to satisfy the ValueCreator interface + +func (t timestampValue) Create(val time.Time, p *time.Time, c TimestampConfig) Value { + *p = val + return &timestampValue{ + timestamp: p, + layouts: c.Layouts, + location: c.Timezone, + } +} + +func (t timestampValue) ToString(b time.Time) string { + if b.IsZero() { + return "" + } + return fmt.Sprintf("%v", b) +} + +// Below functions are to satisfy the Value interface + +// Parses the string value to timestamp +func (t *timestampValue) Set(value string) error { + var timestamp time.Time + var err error + + if t.location == nil { + t.location = time.UTC + } + + if len(t.layouts) == 0 { + return errors.New("got nil/empty layouts slice") + } + + for _, layout := range t.layouts { + var locErr error + + timestamp, locErr = time.ParseInLocation(layout, value, t.location) + if locErr != nil { + if err == nil { + err = locErr + continue + } + + err = newMultiError(err, locErr) + continue + } + + err = nil + break + } + + if err != nil { + return err + } + + defaultTS, _ := time.ParseInLocation(time.TimeOnly, time.TimeOnly, timestamp.Location()) + + n := time.Now().In(timestamp.Location()) + + // If format is missing date (or year only), set it explicitly to current + if timestamp.Truncate(time.Hour*24).UnixNano() == defaultTS.Truncate(time.Hour*24).UnixNano() { + timestamp = time.Date( + n.Year(), + n.Month(), + n.Day(), + timestamp.Hour(), + timestamp.Minute(), + timestamp.Second(), + timestamp.Nanosecond(), + timestamp.Location(), + ) + } else if timestamp.Year() == 0 { + timestamp = time.Date( + n.Year(), + timestamp.Month(), + timestamp.Day(), + timestamp.Hour(), + timestamp.Minute(), + timestamp.Second(), + timestamp.Nanosecond(), + timestamp.Location(), + ) + } + + if t.timestamp != nil { + *t.timestamp = timestamp + } + t.hasBeenSet = true + return nil +} + +// String returns a readable representation of this value (for usage defaults) +func (t *timestampValue) String() string { + return fmt.Sprintf("%#v", t.timestamp) +} + +// Get returns the flag structure +func (t *timestampValue) Get() any { + return *t.timestamp +} + +// Timestamp gets the timestamp from a flag name +func (cmd *Command) Timestamp(name string) time.Time { + if v, ok := cmd.Value(name).(time.Time); ok { + tracef("time.Time available for flag name %[1]q with value=%[2]v (cmd=%[3]q)", name, v, cmd.Name) + return v + } + + tracef("time.Time NOT available for flag name %[1]q (cmd=%[2]q)", name, cmd.Name) + return time.Time{} +} diff --git a/vendor/github.com/urfave/cli/v3/flag_uint.go b/vendor/github.com/urfave/cli/v3/flag_uint.go new file mode 100644 index 000000000..64ee23192 --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/flag_uint.go @@ -0,0 +1,103 @@ +package cli + +import ( + "strconv" + "unsafe" +) + +type ( + UintFlag = FlagBase[uint, IntegerConfig, uintValue[uint]] + Uint8Flag = FlagBase[uint8, IntegerConfig, uintValue[uint8]] + Uint16Flag = FlagBase[uint16, IntegerConfig, uintValue[uint16]] + Uint32Flag = FlagBase[uint32, IntegerConfig, uintValue[uint32]] + Uint64Flag = FlagBase[uint64, IntegerConfig, uintValue[uint64]] +) + +// -- uint Value +type uintValue[T uint | uint8 | uint16 | uint32 | uint64] struct { + val *T + base int +} + +// Below functions are to satisfy the ValueCreator interface + +func (i uintValue[T]) Create(val T, p *T, c IntegerConfig) Value { + *p = val + + return &uintValue[T]{ + val: p, + base: c.Base, + } +} + +func (i uintValue[T]) ToString(b T) string { + base := i.base + if base == 0 { + base = 10 + } + + return strconv.FormatUint(uint64(b), base) +} + +// Below functions are to satisfy the flag.Value interface + +func (i *uintValue[T]) Set(s string) error { + v, err := strconv.ParseUint(s, i.base, int(unsafe.Sizeof(T(0))*8)) + if err != nil { + return err + } + *i.val = T(v) + return err +} + +func (i *uintValue[T]) Get() any { return *i.val } + +func (i *uintValue[T]) String() string { + base := i.base + if base == 0 { + base = 10 + } + + return strconv.FormatUint(uint64(*i.val), base) +} + +// Uint looks up the value of a local Uint64Flag, returns +// 0 if not found +func (cmd *Command) Uint(name string) uint { + return getUint[uint](cmd, name) +} + +// Uint8 looks up the value of a local Uint8Flag, returns +// 0 if not found +func (cmd *Command) Uint8(name string) uint8 { + return getUint[uint8](cmd, name) +} + +// Uint16 looks up the value of a local Uint16Flag, returns +// 0 if not found +func (cmd *Command) Uint16(name string) uint16 { + return getUint[uint16](cmd, name) +} + +// Uint32 looks up the value of a local Uint32Flag, returns +// 0 if not found +func (cmd *Command) Uint32(name string) uint32 { + return getUint[uint32](cmd, name) +} + +// Uint64 looks up the value of a local Uint64Flag, returns +// 0 if not found +func (cmd *Command) Uint64(name string) uint64 { + return getUint[uint64](cmd, name) +} + +func getUint[T uint | uint8 | uint16 | uint32 | uint64](cmd *Command, name string) T { + if v, ok := cmd.Value(name).(T); ok { + tracef("uint available for flag name %[1]q with value=%[2]v (cmd=%[3]q)", name, v, cmd.Name) + + return v + } + + tracef("uint NOT available for flag name %[1]q (cmd=%[2]q)", name, cmd.Name) + return 0 +} diff --git a/vendor/github.com/urfave/cli/v3/flag_uint_slice.go b/vendor/github.com/urfave/cli/v3/flag_uint_slice.go new file mode 100644 index 000000000..18c5b4d23 --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/flag_uint_slice.go @@ -0,0 +1,63 @@ +package cli + +type ( + UintSlice = SliceBase[uint, IntegerConfig, uintValue[uint]] + Uint8Slice = SliceBase[uint8, IntegerConfig, uintValue[uint8]] + Uint16Slice = SliceBase[uint16, IntegerConfig, uintValue[uint16]] + Uint32Slice = SliceBase[uint32, IntegerConfig, uintValue[uint32]] + Uint64Slice = SliceBase[uint64, IntegerConfig, uintValue[uint64]] + UintSliceFlag = FlagBase[[]uint, IntegerConfig, UintSlice] + Uint8SliceFlag = FlagBase[[]uint8, IntegerConfig, Uint8Slice] + Uint16SliceFlag = FlagBase[[]uint16, IntegerConfig, Uint16Slice] + Uint32SliceFlag = FlagBase[[]uint32, IntegerConfig, Uint32Slice] + Uint64SliceFlag = FlagBase[[]uint64, IntegerConfig, Uint64Slice] +) + +var ( + NewUintSlice = NewSliceBase[uint, IntegerConfig, uintValue[uint]] + NewUint8Slice = NewSliceBase[uint8, IntegerConfig, uintValue[uint8]] + NewUint16Slice = NewSliceBase[uint16, IntegerConfig, uintValue[uint16]] + NewUint32Slice = NewSliceBase[uint32, IntegerConfig, uintValue[uint32]] + NewUint64Slice = NewSliceBase[uint64, IntegerConfig, uintValue[uint64]] +) + +// UintSlice looks up the value of a local UintSliceFlag, returns +// nil if not found +func (cmd *Command) UintSlice(name string) []uint { + return getUintSlice[uint](cmd, name) +} + +// Uint8Slice looks up the value of a local Uint8SliceFlag, returns +// nil if not found +func (cmd *Command) Uint8Slice(name string) []uint8 { + return getUintSlice[uint8](cmd, name) +} + +// Uint16Slice looks up the value of a local Uint16SliceFlag, returns +// nil if not found +func (cmd *Command) Uint16Slice(name string) []uint16 { + return getUintSlice[uint16](cmd, name) +} + +// Uint32Slice looks up the value of a local Uint32SliceFlag, returns +// nil if not found +func (cmd *Command) Uint32Slice(name string) []uint32 { + return getUintSlice[uint32](cmd, name) +} + +// Uint64Slice looks up the value of a local Uint64SliceFlag, returns +// nil if not found +func (cmd *Command) Uint64Slice(name string) []uint64 { + return getUintSlice[uint64](cmd, name) +} + +func getUintSlice[T uint | uint8 | uint16 | uint32 | uint64](cmd *Command, name string) []T { + if v, ok := cmd.Value(name).([]T); ok { + tracef("uint slice available for flag name %[1]q with value=%[2]v (cmd=%[3]q)", name, v, cmd.Name) + + return v + } + + tracef("uint slice NOT available for flag name %[1]q (cmd=%[2]q)", name, cmd.Name) + return nil +} diff --git a/vendor/github.com/urfave/cli/v2/funcs.go b/vendor/github.com/urfave/cli/v3/funcs.go similarity index 55% rename from vendor/github.com/urfave/cli/v2/funcs.go rename to vendor/github.com/urfave/cli/v3/funcs.go index e77b0d0a1..fe1224c44 100644 --- a/vendor/github.com/urfave/cli/v2/funcs.go +++ b/vendor/github.com/urfave/cli/v3/funcs.go @@ -1,34 +1,40 @@ package cli -// BashCompleteFunc is an action to execute when the shell completion flag is set -type BashCompleteFunc func(*Context) +import "context" -// BeforeFunc is an action to execute before any subcommands are run, but after -// the context is ready if a non-nil error is returned, no subcommands are run -type BeforeFunc func(*Context) error +// ShellCompleteFunc is an action to execute when the shell completion flag is set +type ShellCompleteFunc func(context.Context, *Command) -// AfterFunc is an action to execute after any subcommands are run, but after the -// subcommand has finished it is run even if Action() panics -type AfterFunc func(*Context) error +// BeforeFunc is an action that executes prior to any subcommands being run once +// the context is ready. If a non-nil error is returned, no subcommands are +// run. +type BeforeFunc func(context.Context, *Command) (context.Context, error) + +// AfterFunc is an action that executes after any subcommands are run and have +// finished. The AfterFunc is run even if Action() panics. +type AfterFunc func(context.Context, *Command) error // ActionFunc is the action to execute when no subcommands are specified -type ActionFunc func(*Context) error +type ActionFunc func(context.Context, *Command) error // CommandNotFoundFunc is executed if the proper command cannot be found -type CommandNotFoundFunc func(*Context, string) +type CommandNotFoundFunc func(context.Context, *Command, string) + +// ConfigureShellCompletionCommand is a function to configure a shell completion command +type ConfigureShellCompletionCommand func(*Command) // OnUsageErrorFunc is executed if a usage error occurs. This is useful for displaying // customized usage error messages. This function is able to replace the // original error messages. If this function is not set, the "Incorrect usage" // is displayed and the execution is interrupted. -type OnUsageErrorFunc func(cCtx *Context, err error, isSubcommand bool) error +type OnUsageErrorFunc func(ctx context.Context, cmd *Command, err error, isSubcommand bool) error // InvalidFlagAccessFunc is executed when an invalid flag is accessed from the context. -type InvalidFlagAccessFunc func(*Context, string) +type InvalidFlagAccessFunc func(context.Context, *Command, string) // ExitErrHandlerFunc is executed if provided in order to handle exitError values // returned by Actions and Before/After functions. -type ExitErrHandlerFunc func(cCtx *Context, err error) +type ExitErrHandlerFunc func(context.Context, *Command, error) // FlagStringFunc is used by the help generation to display a flag, which is // expected to be a single line. diff --git a/vendor/github.com/urfave/cli/v3/godoc-current.txt b/vendor/github.com/urfave/cli/v3/godoc-current.txt new file mode 100644 index 000000000..edd42feb8 --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/godoc-current.txt @@ -0,0 +1,1443 @@ +package cli // import "github.com/urfave/cli/v3" + +Package cli provides a minimal framework for creating and organizing command +line Go applications. cli is designed to be easy to understand and write, +the most simple cli application can be written as follows: + + func main() { + (&cli.Command{}).Run(context.Background(), os.Args) + } + +Of course this application does not do much, so let's make this an actual +application: + + func main() { + cmd := &cli.Command{ + Name: "greet", + Usage: "say a greeting", + Action: func(c *cli.Context) error { + fmt.Println("Greetings") + return nil + }, + } + + cmd.Run(context.Background(), os.Args) + } + +VARIABLES + +var ( + NewFloatSlice = NewSliceBase[float64, NoConfig, floatValue[float64]] + NewFloat32Slice = NewSliceBase[float32, NoConfig, floatValue[float32]] + NewFloat64Slice = NewSliceBase[float64, NoConfig, floatValue[float64]] +) +var ( + NewIntSlice = NewSliceBase[int, IntegerConfig, intValue[int]] + NewInt8Slice = NewSliceBase[int8, IntegerConfig, intValue[int8]] + NewInt16Slice = NewSliceBase[int16, IntegerConfig, intValue[int16]] + NewInt32Slice = NewSliceBase[int32, IntegerConfig, intValue[int32]] + NewInt64Slice = NewSliceBase[int64, IntegerConfig, intValue[int64]] +) +var ( + NewUintSlice = NewSliceBase[uint, IntegerConfig, uintValue[uint]] + NewUint8Slice = NewSliceBase[uint8, IntegerConfig, uintValue[uint8]] + NewUint16Slice = NewSliceBase[uint16, IntegerConfig, uintValue[uint16]] + NewUint32Slice = NewSliceBase[uint32, IntegerConfig, uintValue[uint32]] + NewUint64Slice = NewSliceBase[uint64, IntegerConfig, uintValue[uint64]] +) +var ( + SuggestFlag SuggestFlagFunc = suggestFlag + SuggestCommand SuggestCommandFunc = suggestCommand + SuggestDidYouMeanTemplate string = suggestDidYouMeanTemplate +) +var AnyArguments = []Argument{ + &StringArgs{ + Max: -1, + }, +} + AnyArguments to differentiate between no arguments(nil) vs aleast one + +var CommandHelpTemplate = `NAME: + {{template "helpNameTemplate" .}} + +USAGE: + {{template "usageTemplate" .}}{{if .Category}} + +CATEGORY: + {{.Category}}{{end}}{{if .Description}} + +DESCRIPTION: + {{template "descriptionTemplate" .}}{{end}}{{if .VisibleFlagCategories}} + +OPTIONS:{{template "visibleFlagCategoryTemplate" .}}{{else if .VisibleFlags}} + +OPTIONS:{{template "visibleFlagTemplate" .}}{{end}}{{if .VisiblePersistentFlags}} + +GLOBAL OPTIONS:{{template "visiblePersistentFlagTemplate" .}}{{end}} +` + CommandHelpTemplate is the text template for the command help topic. cli.go + uses text/template to render templates. You can render custom help text by + setting this variable. + +var DefaultInverseBoolPrefix = "no-" +var ErrWriter io.Writer = os.Stderr + ErrWriter is used to write errors to the user. This can be anything + implementing the io.Writer interface and defaults to os.Stderr. + +var FishCompletionTemplate = `# {{ .Command.Name }} fish shell completion + +function __fish_{{ .Command.Name }}_no_subcommand --description 'Test if there has been any subcommand yet' + for i in (commandline -opc) + if contains -- $i{{ range $v := .AllCommands }} {{ $v }}{{ end }} + return 1 + end + end + return 0 +end + +{{ range $v := .Completions }}{{ $v }} +{{ end }}` +var NewStringMap = NewMapBase[string, StringConfig, stringValue] +var NewStringSlice = NewSliceBase[string, StringConfig, stringValue] +var OsExiter = os.Exit + OsExiter is the function used when the app exits. If not set defaults to + os.Exit. + +var RootCommandHelpTemplate = `NAME: + {{template "helpNameTemplate" .}} + +USAGE: + {{if .UsageText}}{{wrap .UsageText 3}}{{else}}{{.FullName}} {{if .VisibleFlags}}[global options]{{end}}{{if .VisibleCommands}} [command [command options]]{{end}}{{if .ArgsUsage}} {{.ArgsUsage}}{{else}}{{if .Arguments}} [arguments...]{{end}}{{end}}{{end}}{{if .Version}}{{if not .HideVersion}} + +VERSION: + {{.Version}}{{end}}{{end}}{{if .Description}} + +DESCRIPTION: + {{template "descriptionTemplate" .}}{{end}} +{{- if len .Authors}} + +AUTHOR{{template "authorsTemplate" .}}{{end}}{{if .VisibleCommands}} + +COMMANDS:{{template "visibleCommandCategoryTemplate" .}}{{end}}{{if .VisibleFlagCategories}} + +GLOBAL OPTIONS:{{template "visibleFlagCategoryTemplate" .}}{{else if .VisibleFlags}} + +GLOBAL OPTIONS:{{template "visibleFlagTemplate" .}}{{end}}{{if .Copyright}} + +COPYRIGHT: + {{template "copyrightTemplate" .}}{{end}} +` + RootCommandHelpTemplate is the text template for the Default help topic. + cli.go uses text/template to render templates. You can render custom help + text by setting this variable. + +var SubcommandHelpTemplate = `NAME: + {{template "helpNameTemplate" .}} + +USAGE: + {{if .UsageText}}{{wrap .UsageText 3}}{{else}}{{.FullName}}{{if .VisibleCommands}} [command [command options]]{{end}}{{if .ArgsUsage}} {{.ArgsUsage}}{{else}}{{if .Arguments}} [arguments...]{{end}}{{end}}{{end}}{{if .Category}} + +CATEGORY: + {{.Category}}{{end}}{{if .Description}} + +DESCRIPTION: + {{template "descriptionTemplate" .}}{{end}}{{if .VisibleCommands}} + +COMMANDS:{{template "visibleCommandTemplate" .}}{{end}}{{if .VisibleFlagCategories}} + +OPTIONS:{{template "visibleFlagCategoryTemplate" .}}{{else if .VisibleFlags}} + +OPTIONS:{{template "visibleFlagTemplate" .}}{{end}} +` + SubcommandHelpTemplate is the text template for the subcommand help topic. + cli.go uses text/template to render templates. You can render custom help + text by setting this variable. + +var VersionPrinter = printVersion + VersionPrinter prints the version for the App + +var HelpPrinter helpPrinter = printHelp + HelpPrinter is a function that writes the help output. If not set + explicitly, this calls HelpPrinterCustom using only the default template + functions. + + If custom logic for printing help is required, this function can be + overridden. If the ExtraInfo field is defined on an App, this function + should not be modified, as HelpPrinterCustom will be used directly in order + to capture the extra information. + +var HelpPrinterCustom helpPrinterCustom = printHelpCustom + HelpPrinterCustom is a function that writes the help output. It is used as + the default implementation of HelpPrinter, and may be called directly if the + ExtraInfo field is set on an App. + + In the default implementation, if the customFuncs argument contains a + "wrapAt" key, which is a function which takes no arguments and returns an + int, this int value will be used to produce a "wrap" function used by the + default template to wrap long lines. + + +FUNCTIONS + +func DefaultAppComplete(ctx context.Context, cmd *Command) + DefaultAppComplete prints the list of subcommands as the default app + completion method + +func DefaultCompleteWithFlags(ctx context.Context, cmd *Command) +func FlagNames(name string, aliases []string) []string +func HandleExitCoder(err error) + HandleExitCoder handles errors implementing ExitCoder by printing their + message and calling OsExiter with the given exit code. + + If the given error instead implements MultiError, each error will be checked + for the ExitCoder interface, and OsExiter will be called with the last exit + code found, or exit code 1 if no ExitCoder is found. + + This function is the default error-handling behavior for an App. + +func ShowAppHelp(cmd *Command) error + ShowAppHelp is an action that displays the help. + +func ShowAppHelpAndExit(cmd *Command, exitCode int) + ShowAppHelpAndExit - Prints the list of subcommands for the app and exits + with exit code. + +func ShowCommandHelp(ctx context.Context, cmd *Command, commandName string) error + ShowCommandHelp prints help for the given command + +func ShowCommandHelpAndExit(ctx context.Context, cmd *Command, command string, code int) + ShowCommandHelpAndExit - exits with code after showing help + +func ShowSubcommandHelp(cmd *Command) error + ShowSubcommandHelp prints help for the given subcommand + +func ShowSubcommandHelpAndExit(cmd *Command, exitCode int) + ShowSubcommandHelpAndExit - Prints help for the given subcommand and exits + with exit code. + +func ShowVersion(cmd *Command) + ShowVersion prints the version number of the App + + +TYPES + +type ActionFunc func(context.Context, *Command) error + ActionFunc is the action to execute when no subcommands are specified + +type ActionableFlag interface { + RunAction(context.Context, *Command) error +} + ActionableFlag is an interface that wraps Flag interface and RunAction + operation. + +type AfterFunc func(context.Context, *Command) error + AfterFunc is an action that executes after any subcommands are run and have + finished. The AfterFunc is run even if Action() panics. + +type Args interface { + // Get returns the nth argument, or else a blank string + Get(n int) string + // First returns the first argument, or else a blank string + First() string + // Tail returns the rest of the arguments (not the first one) + // or else an empty string slice + Tail() []string + // Len returns the length of the wrapped slice + Len() int + // Present checks if there are any arguments present + Present() bool + // Slice returns a copy of the internal slice + Slice() []string +} + +type Argument interface { + // which this argument can be accessed using the given name + HasName(string) bool + + // Parse the given args and return unparsed args and/or error + Parse([]string) ([]string, error) + + // The usage template for this argument to use in help + Usage() string + + // The Value of this Arg + Get() any +} + Argument captures a positional argument that can be parsed + +type ArgumentBase[T any, C any, VC ValueCreator[T, C]] struct { + Name string `json:"name"` // the name of this argument + Value T `json:"value"` // the default value of this argument + Destination *T `json:"-"` // the destination point for this argument + UsageText string `json:"usageText"` // the usage text to show + Config C `json:"config"` // config for this argument similar to Flag Config + + // Has unexported fields. +} + +func (a *ArgumentBase[T, C, VC]) Get() any + +func (a *ArgumentBase[T, C, VC]) HasName(s string) bool + +func (a *ArgumentBase[T, C, VC]) Parse(s []string) ([]string, error) + +func (a *ArgumentBase[T, C, VC]) Usage() string + +type ArgumentsBase[T any, C any, VC ValueCreator[T, C]] struct { + Name string `json:"name"` // the name of this argument + Value T `json:"value"` // the default value of this argument + Destination *[]T `json:"-"` // the destination point for this argument + UsageText string `json:"usageText"` // the usage text to show + Min int `json:"minTimes"` // the min num of occurrences of this argument + Max int `json:"maxTimes"` // the max num of occurrences of this argument, set to -1 for unlimited + Config C `json:"config"` // config for this argument similar to Flag Config + + // Has unexported fields. +} + ArgumentsBase is a base type for slice arguments + +func (a *ArgumentsBase[T, C, VC]) Get() any + +func (a *ArgumentsBase[T, C, VC]) HasName(s string) bool + +func (a *ArgumentsBase[T, C, VC]) Parse(s []string) ([]string, error) + +func (a *ArgumentsBase[T, C, VC]) Usage() string + +type BeforeFunc func(context.Context, *Command) (context.Context, error) + BeforeFunc is an action that executes prior to any subcommands being run + once the context is ready. If a non-nil error is returned, no subcommands + are run. + +type BoolConfig struct { + Count *int +} + BoolConfig defines the configuration for bool flags + +type BoolFlag = FlagBase[bool, BoolConfig, boolValue] + +type BoolWithInverseFlag struct { + Name string `json:"name"` // name of the flag + Category string `json:"category"` // category of the flag, if any + DefaultText string `json:"defaultText"` // default text of the flag for usage purposes + HideDefault bool `json:"hideDefault"` // whether to hide the default value in output + Usage string `json:"usage"` // usage string for help output + Sources ValueSourceChain `json:"-"` // sources to load flag value from + Required bool `json:"required"` // whether the flag is required or not + Hidden bool `json:"hidden"` // whether to hide the flag in help output + Local bool `json:"local"` // whether the flag needs to be applied to subcommands as well + Value bool `json:"defaultValue"` // default value for this flag if not set by from any source + Destination *bool `json:"-"` // destination pointer for value when set + Aliases []string `json:"aliases"` // Aliases that are allowed for this flag + TakesFile bool `json:"takesFileArg"` // whether this flag takes a file argument, mainly for shell completion purposes + Action func(context.Context, *Command, bool) error `json:"-"` // Action callback to be called when flag is set + OnlyOnce bool `json:"onlyOnce"` // whether this flag can be duplicated on the command line + Validator func(bool) error `json:"-"` // custom function to validate this flag value + ValidateDefaults bool `json:"validateDefaults"` // whether to validate defaults or not + Config BoolConfig `json:"config"` // Additional/Custom configuration associated with this flag type + InversePrefix string `json:"invPrefix"` // The prefix used to indicate a negative value. Default: `env` becomes `no-env` + + // Has unexported fields. +} + +func (bif *BoolWithInverseFlag) Count() int + Count returns the number of times this flag has been invoked + +func (bif *BoolWithInverseFlag) Get() any + +func (bif *BoolWithInverseFlag) GetCategory() string + GetCategory returns the category of the flag + +func (bif *BoolWithInverseFlag) GetDefaultText() string + GetDefaultText returns the default text for this flag + +func (bif *BoolWithInverseFlag) GetEnvVars() []string + GetEnvVars returns the env vars for this flag + +func (bif *BoolWithInverseFlag) GetUsage() string + GetUsage returns the usage string for the flag + +func (bif *BoolWithInverseFlag) GetValue() string + GetValue returns the flags value as string representation and an empty + string if the flag takes no value at all. + +func (bif *BoolWithInverseFlag) IsBoolFlag() bool + IsBoolFlag returns whether the flag doesnt need to accept args + +func (bif *BoolWithInverseFlag) IsDefaultVisible() bool + IsDefaultVisible returns true if the flag is not hidden, otherwise false + +func (bif *BoolWithInverseFlag) IsLocal() bool + +func (bif *BoolWithInverseFlag) IsRequired() bool + +func (bif *BoolWithInverseFlag) IsSet() bool + +func (bif *BoolWithInverseFlag) IsVisible() bool + +func (bif *BoolWithInverseFlag) Names() []string + +func (bif *BoolWithInverseFlag) PostParse() error + +func (bif *BoolWithInverseFlag) PreParse() error + +func (bif *BoolWithInverseFlag) RunAction(ctx context.Context, cmd *Command) error + +func (bif *BoolWithInverseFlag) Set(name, val string) error + +func (bif *BoolWithInverseFlag) SetCategory(c string) + +func (bif *BoolWithInverseFlag) String() string + String implements the standard Stringer interface. + + Example for BoolFlag{Name: "env"} --[no-]env (default: false) + +func (bif *BoolWithInverseFlag) TakesValue() bool + +func (bif *BoolWithInverseFlag) TypeName() string + TypeName is used for stringify/docs. For bool its a no-op + +type CategorizableFlag interface { + // Returns the category of the flag + GetCategory() string + + // Sets the category of the flag + SetCategory(string) +} + CategorizableFlag is an interface that allows us to potentially use a flag + in a categorized representation. + +type Command struct { + // The name of the command + Name string `json:"name"` + // A list of aliases for the command + Aliases []string `json:"aliases"` + // A short description of the usage of this command + Usage string `json:"usage"` + // Text to override the USAGE section of help + UsageText string `json:"usageText"` + // A short description of the arguments of this command + ArgsUsage string `json:"argsUsage"` + // Version of the command + Version string `json:"version"` + // Longer explanation of how the command works + Description string `json:"description"` + // DefaultCommand is the (optional) name of a command + // to run if no command names are passed as CLI arguments. + DefaultCommand string `json:"defaultCommand"` + // The category the command is part of + Category string `json:"category"` + // List of child commands + Commands []*Command `json:"commands"` + // List of flags to parse + Flags []Flag `json:"flags"` + // Boolean to hide built-in help command and help flag + HideHelp bool `json:"hideHelp"` + // Ignored if HideHelp is true. + HideHelpCommand bool `json:"hideHelpCommand"` + // Boolean to hide built-in version flag and the VERSION section of help + HideVersion bool `json:"hideVersion"` + // Boolean to enable shell completion commands + EnableShellCompletion bool `json:"-"` + // Shell Completion generation command name + ShellCompletionCommandName string `json:"-"` + // The function to call when checking for shell command completions + ShellComplete ShellCompleteFunc `json:"-"` + // The function to configure a shell completion command + ConfigureShellCompletionCommand ConfigureShellCompletionCommand `json:"-"` + // An action to execute before any subcommands are run, but after the context is ready + // If a non-nil error is returned, no subcommands are run + Before BeforeFunc `json:"-"` + // An action to execute after any subcommands are run, but after the subcommand has finished + // It is run even if Action() panics + After AfterFunc `json:"-"` + // The function to call when this command is invoked + Action ActionFunc `json:"-"` + // Execute this function if the proper command cannot be found + CommandNotFound CommandNotFoundFunc `json:"-"` + // Execute this function if a usage error occurs. + OnUsageError OnUsageErrorFunc `json:"-"` + // Execute this function when an invalid flag is accessed from the context + InvalidFlagAccessHandler InvalidFlagAccessFunc `json:"-"` + // Boolean to hide this command from help or completion + Hidden bool `json:"hidden"` + // List of all authors who contributed (string or fmt.Stringer) + // TODO: ~string | fmt.Stringer when interface unions are available + Authors []any `json:"authors"` + // Copyright of the binary if any + Copyright string `json:"copyright"` + // Reader reader to write input to (useful for tests) + Reader io.Reader `json:"-"` + // Writer writer to write output to + Writer io.Writer `json:"-"` + // ErrWriter writes error output + ErrWriter io.Writer `json:"-"` + // ExitErrHandler processes any error encountered while running an App before + // it is returned to the caller. If no function is provided, HandleExitCoder + // is used as the default behavior. + ExitErrHandler ExitErrHandlerFunc `json:"-"` + // Other custom info + Metadata map[string]interface{} `json:"metadata"` + // Carries a function which returns app specific info. + ExtraInfo func() map[string]string `json:"-"` + // CustomRootCommandHelpTemplate the text template for app help topic. + // cli.go uses text/template to render templates. You can + // render custom help text by setting this variable. + CustomRootCommandHelpTemplate string `json:"-"` + // SliceFlagSeparator is used to customize the separator for SliceFlag, the default is "," + SliceFlagSeparator string `json:"sliceFlagSeparator"` + // DisableSliceFlagSeparator is used to disable SliceFlagSeparator, the default is false + DisableSliceFlagSeparator bool `json:"disableSliceFlagSeparator"` + // Boolean to enable short-option handling so user can combine several + // single-character bool arguments into one + // i.e. foobar -o -v -> foobar -ov + UseShortOptionHandling bool `json:"useShortOptionHandling"` + // Enable suggestions for commands and flags + Suggest bool `json:"suggest"` + // Allows global flags set by libraries which use flag.XXXVar(...) directly + // to be parsed through this library + AllowExtFlags bool `json:"allowExtFlags"` + // Treat all flags as normal arguments if true + SkipFlagParsing bool `json:"skipFlagParsing"` + // CustomHelpTemplate the text template for the command help topic. + // cli.go uses text/template to render templates. You can + // render custom help text by setting this variable. + CustomHelpTemplate string `json:"-"` + // Use longest prefix match for commands + PrefixMatchCommands bool `json:"prefixMatchCommands"` + // Custom suggest command for matching + SuggestCommandFunc SuggestCommandFunc `json:"-"` + // Flag exclusion group + MutuallyExclusiveFlags []MutuallyExclusiveFlags `json:"mutuallyExclusiveFlags"` + // Arguments to parse for this command + Arguments []Argument `json:"arguments"` + // Whether to read arguments from stdin + // applicable to root command only + ReadArgsFromStdin bool `json:"readArgsFromStdin"` + + // Has unexported fields. +} + Command contains everything needed to run an application that accepts a + string slice of arguments such as os.Args. A given Command may contain Flags + and sub-commands in Commands. + +func (cmd *Command) Args() Args + Args returns the command line arguments associated with the command. + +func (cmd *Command) Bool(name string) bool + +func (cmd *Command) Command(name string) *Command + +func (cmd *Command) Count(name string) int + Count returns the num of occurrences of this flag + +func (cmd *Command) Duration(name string) time.Duration + +func (cmd *Command) FlagNames() []string + FlagNames returns a slice of flag names used by the this command and all of + its parent commands. + +func (cmd *Command) Float(name string) float64 + Float looks up the value of a local FloatFlag, returns 0 if not found + +func (cmd *Command) Float32(name string) float32 + Float32 looks up the value of a local Float32Flag, returns 0 if not found + +func (c *Command) Float32Arg(name string) float32 + +func (c *Command) Float32Args(name string) []float32 + +func (cmd *Command) Float32Slice(name string) []float32 + Float32Slice looks up the value of a local Float32Slice, returns nil if not + found + +func (cmd *Command) Float64(name string) float64 + Float64 looks up the value of a local Float64Flag, returns 0 if not found + +func (c *Command) Float64Arg(name string) float64 + +func (c *Command) Float64Args(name string) []float64 + +func (cmd *Command) Float64Slice(name string) []float64 + Float64Slice looks up the value of a local Float64SliceFlag, returns nil if + not found + +func (c *Command) FloatArg(name string) float64 + +func (c *Command) FloatArgs(name string) []float64 + +func (cmd *Command) FloatSlice(name string) []float64 + FloatSlice looks up the value of a local FloatSliceFlag, returns nil if not + found + +func (cmd *Command) FullName() string + FullName returns the full name of the command. For commands with parents + this ensures that the parent commands are part of the command path. + +func (cmd *Command) Generic(name string) Value + Generic looks up the value of a local GenericFlag, returns nil if not found + +func (cmd *Command) HasName(name string) bool + HasName returns true if Command.Name matches given name + +func (cmd *Command) Int(name string) int + Int looks up the value of a local Int64Flag, returns 0 if not found + +func (cmd *Command) Int16(name string) int16 + Int16 looks up the value of a local Int16Flag, returns 0 if not found + +func (c *Command) Int16Arg(name string) int16 + +func (c *Command) Int16Args(name string) []int16 + +func (cmd *Command) Int16Slice(name string) []int16 + Int16Slice looks up the value of a local Int16SliceFlag, returns nil if not + found + +func (cmd *Command) Int32(name string) int32 + Int32 looks up the value of a local Int32Flag, returns 0 if not found + +func (c *Command) Int32Arg(name string) int32 + +func (c *Command) Int32Args(name string) []int32 + +func (cmd *Command) Int32Slice(name string) []int32 + Int32Slice looks up the value of a local Int32SliceFlag, returns nil if not + found + +func (cmd *Command) Int64(name string) int64 + Int64 looks up the value of a local Int64Flag, returns 0 if not found + +func (c *Command) Int64Arg(name string) int64 + +func (c *Command) Int64Args(name string) []int64 + +func (cmd *Command) Int64Slice(name string) []int64 + Int64Slice looks up the value of a local Int64SliceFlag, returns nil if not + found + +func (cmd *Command) Int8(name string) int8 + Int8 looks up the value of a local Int8Flag, returns 0 if not found + +func (c *Command) Int8Arg(name string) int8 + +func (c *Command) Int8Args(name string) []int8 + +func (cmd *Command) Int8Slice(name string) []int8 + Int8Slice looks up the value of a local Int8SliceFlag, returns nil if not + found + +func (c *Command) IntArg(name string) int + +func (c *Command) IntArgs(name string) []int + +func (cmd *Command) IntSlice(name string) []int + IntSlice looks up the value of a local IntSliceFlag, returns nil if not + found + +func (cmd *Command) IsSet(name string) bool + IsSet determines if the flag was actually set + +func (cmd *Command) Lineage() []*Command + Lineage returns *this* command and all of its ancestor commands in order + from child to parent + +func (cmd *Command) LocalFlagNames() []string + LocalFlagNames returns a slice of flag names used in this command. + +func (cmd *Command) NArg() int + NArg returns the number of the command line arguments. + +func (cmd *Command) Names() []string + Names returns the names including short names and aliases. + +func (cmd *Command) NumFlags() int + NumFlags returns the number of flags set + +func (cmd *Command) Root() *Command + Root returns the Command at the root of the graph + +func (cmd *Command) Run(ctx context.Context, osArgs []string) (deferErr error) + Run is the entry point to the command graph. The positional arguments are + parsed according to the Flag and Command definitions and the matching Action + functions are run. + +func (cmd *Command) Set(name, value string) error + Set sets a context flag to a value. + +func (cmd *Command) String(name string) string + +func (c *Command) StringArg(name string) string + +func (c *Command) StringArgs(name string) []string + +func (cmd *Command) StringMap(name string) map[string]string + StringMap looks up the value of a local StringMapFlag, returns nil if not + found + +func (cmd *Command) StringSlice(name string) []string + StringSlice looks up the value of a local StringSliceFlag, returns nil if + not found + +func (cmd *Command) Timestamp(name string) time.Time + Timestamp gets the timestamp from a flag name + +func (c *Command) TimestampArg(name string) time.Time + +func (c *Command) TimestampArgs(name string) []time.Time + +func (cmd *Command) ToFishCompletion() (string, error) + ToFishCompletion creates a fish completion string for the `*App` The + function errors if either parsing or writing of the string fails. + +func (cmd *Command) Uint(name string) uint + Uint looks up the value of a local Uint64Flag, returns 0 if not found + +func (cmd *Command) Uint16(name string) uint16 + Uint16 looks up the value of a local Uint16Flag, returns 0 if not found + +func (c *Command) Uint16Arg(name string) uint16 + +func (c *Command) Uint16Args(name string) []uint16 + +func (cmd *Command) Uint16Slice(name string) []uint16 + Uint16Slice looks up the value of a local Uint16SliceFlag, returns nil if + not found + +func (cmd *Command) Uint32(name string) uint32 + Uint32 looks up the value of a local Uint32Flag, returns 0 if not found + +func (c *Command) Uint32Arg(name string) uint32 + +func (c *Command) Uint32Args(name string) []uint32 + +func (cmd *Command) Uint32Slice(name string) []uint32 + Uint32Slice looks up the value of a local Uint32SliceFlag, returns nil if + not found + +func (cmd *Command) Uint64(name string) uint64 + Uint64 looks up the value of a local Uint64Flag, returns 0 if not found + +func (c *Command) Uint64Arg(name string) uint64 + +func (c *Command) Uint64Args(name string) []uint64 + +func (cmd *Command) Uint64Slice(name string) []uint64 + Uint64Slice looks up the value of a local Uint64SliceFlag, returns nil if + not found + +func (cmd *Command) Uint8(name string) uint8 + Uint8 looks up the value of a local Uint8Flag, returns 0 if not found + +func (c *Command) Uint8Arg(name string) uint8 + +func (c *Command) Uint8Args(name string) []uint8 + +func (cmd *Command) Uint8Slice(name string) []uint8 + Uint8Slice looks up the value of a local Uint8SliceFlag, returns nil if not + found + +func (c *Command) UintArg(name string) uint + +func (c *Command) UintArgs(name string) []uint + +func (cmd *Command) UintSlice(name string) []uint + UintSlice looks up the value of a local UintSliceFlag, returns nil if not + found + +func (cmd *Command) Value(name string) interface{} + Value returns the value of the flag corresponding to `name` + +func (cmd *Command) VisibleCategories() []CommandCategory + VisibleCategories returns a slice of categories and commands that are + Hidden=false + +func (cmd *Command) VisibleCommands() []*Command + VisibleCommands returns a slice of the Commands with Hidden=false + +func (cmd *Command) VisibleFlagCategories() []VisibleFlagCategory + VisibleFlagCategories returns a slice containing all the visible flag + categories with the flags they contain + +func (cmd *Command) VisibleFlags() []Flag + VisibleFlags returns a slice of the Flags with Hidden=false + +func (cmd *Command) VisiblePersistentFlags() []Flag + VisiblePersistentFlags returns a slice of LocalFlag with Persistent=true and + Hidden=false. + +type CommandCategories interface { + // AddCommand adds a command to a category, creating a new category if necessary. + AddCommand(category string, command *Command) + // Categories returns a slice of categories sorted by name + Categories() []CommandCategory +} + CommandCategories interface allows for category manipulation + +type CommandCategory interface { + // Name returns the category name string + Name() string + // VisibleCommands returns a slice of the Commands with Hidden=false + VisibleCommands() []*Command +} + CommandCategory is a category containing commands. + +type CommandNotFoundFunc func(context.Context, *Command, string) + CommandNotFoundFunc is executed if the proper command cannot be found + +type ConfigureShellCompletionCommand func(*Command) + ConfigureShellCompletionCommand is a function to configure a shell + completion command + +type Countable interface { + Count() int +} + Countable is an interface to enable detection of flag values which support + repetitive flags + +type DocGenerationFlag interface { + // TakesValue returns true if the flag takes a value, otherwise false + TakesValue() bool + + // GetUsage returns the usage string for the flag + GetUsage() string + + // GetValue returns the flags value as string representation and an empty + // string if the flag takes no value at all. + GetValue() string + + // GetDefaultText returns the default text for this flag + GetDefaultText() string + + // GetEnvVars returns the env vars for this flag + GetEnvVars() []string + + // IsDefaultVisible returns whether the default value should be shown in + // help text + IsDefaultVisible() bool + // TypeName to detect if a flag is a string, bool, etc. + TypeName() string +} + DocGenerationFlag is an interface that allows documentation generation for + the flag + +type DocGenerationMultiValueFlag interface { + DocGenerationFlag + + // IsMultiValueFlag returns true for flags that can be given multiple times. + IsMultiValueFlag() bool +} + DocGenerationMultiValueFlag extends DocGenerationFlag for slice/map based + flags. + +type DurationFlag = FlagBase[time.Duration, NoConfig, durationValue] + +type EnvValueSource interface { + IsFromEnv() bool + Key() string +} + EnvValueSource is to specifically detect env sources when printing help text + +type ErrorFormatter interface { + Format(s fmt.State, verb rune) +} + ErrorFormatter is the interface that will suitably format the error output + +type ExitCoder interface { + error + ExitCode() int +} + ExitCoder is the interface checked by `App` and `Command` for a custom exit + code + +func Exit(message interface{}, exitCode int) ExitCoder + Exit wraps a message and exit code into an error, which by default is + handled with a call to os.Exit during default error handling. + + This is the simplest way to trigger a non-zero exit code for an App + without having to call os.Exit manually. During testing, this behavior + can be avoided by overriding the ExitErrHandler function on an App or the + package-global OsExiter function. + +type ExitErrHandlerFunc func(context.Context, *Command, error) + ExitErrHandlerFunc is executed if provided in order to handle exitError + values returned by Actions and Before/After functions. + +type Flag interface { + fmt.Stringer + + // Retrieve the value of the Flag + Get() any + + // Lifecycle methods. + // flag callback prior to parsing + PreParse() error + + // flag callback post parsing + PostParse() error + + // Apply Flag settings to the given flag set + Set(string, string) error + + // All possible names for this flag + Names() []string + + // Whether the flag has been set or not + IsSet() bool +} + Flag is a common interface related to parsing flags in cli. For more + advanced flag parsing techniques, it is recommended that this interface be + implemented. + +var GenerateShellCompletionFlag Flag = &BoolFlag{ + Name: "generate-shell-completion", + Hidden: true, +} + GenerateShellCompletionFlag enables shell completion + +var HelpFlag Flag = &BoolFlag{ + Name: "help", + Aliases: []string{"h"}, + Usage: "show help", + HideDefault: true, + Local: true, +} + HelpFlag prints the help for all commands and subcommands. Set to nil to + disable the flag. The subcommand will still be added unless HideHelp or + HideHelpCommand is set to true. + +var VersionFlag Flag = &BoolFlag{ + Name: "version", + Aliases: []string{"v"}, + Usage: "print the version", + HideDefault: true, + Local: true, +} + VersionFlag prints the version for the application + +type FlagBase[T any, C any, VC ValueCreator[T, C]] struct { + Name string `json:"name"` // name of the flag + Category string `json:"category"` // category of the flag, if any + DefaultText string `json:"defaultText"` // default text of the flag for usage purposes + HideDefault bool `json:"hideDefault"` // whether to hide the default value in output + Usage string `json:"usage"` // usage string for help output + Sources ValueSourceChain `json:"-"` // sources to load flag value from + Required bool `json:"required"` // whether the flag is required or not + Hidden bool `json:"hidden"` // whether to hide the flag in help output + Local bool `json:"local"` // whether the flag needs to be applied to subcommands as well + Value T `json:"defaultValue"` // default value for this flag if not set by from any source + Destination *T `json:"-"` // destination pointer for value when set + Aliases []string `json:"aliases"` // Aliases that are allowed for this flag + TakesFile bool `json:"takesFileArg"` // whether this flag takes a file argument, mainly for shell completion purposes + Action func(context.Context, *Command, T) error `json:"-"` // Action callback to be called when flag is set + Config C `json:"config"` // Additional/Custom configuration associated with this flag type + OnlyOnce bool `json:"onlyOnce"` // whether this flag can be duplicated on the command line + Validator func(T) error `json:"-"` // custom function to validate this flag value + ValidateDefaults bool `json:"validateDefaults"` // whether to validate defaults or not + + // Has unexported fields. +} + FlagBase [T,C,VC] is a generic flag base which can be used as a boilerplate + to implement the most common interfaces used by urfave/cli. + + T specifies the type + C specifies the configuration required(if any for that flag type) + VC specifies the value creator which creates the flag.Value emulation + +func (f *FlagBase[T, C, VC]) Count() int + Count returns the number of times this flag has been invoked + +func (f *FlagBase[T, C, V]) Get() any + +func (f *FlagBase[T, C, V]) GetCategory() string + GetCategory returns the category of the flag + +func (f *FlagBase[T, C, V]) GetDefaultText() string + GetDefaultText returns the default text for this flag + +func (f *FlagBase[T, C, V]) GetEnvVars() []string + GetEnvVars returns the env vars for this flag + +func (f *FlagBase[T, C, V]) GetUsage() string + GetUsage returns the usage string for the flag + +func (f *FlagBase[T, C, V]) GetValue() string + GetValue returns the flags value as string representation and an empty + string if the flag takes no value at all. + +func (f *FlagBase[T, C, VC]) IsBoolFlag() bool + IsBoolFlag returns whether the flag doesnt need to accept args + +func (f *FlagBase[T, C, V]) IsDefaultVisible() bool + IsDefaultVisible returns true if the flag is not hidden, otherwise false + +func (f *FlagBase[T, C, VC]) IsLocal() bool + IsLocal returns false if flag needs to be persistent across subcommands + +func (f *FlagBase[T, C, VC]) IsMultiValueFlag() bool + IsMultiValueFlag returns true if the value type T can take multiple values + from cmd line. This is true for slice and map type flags + +func (f *FlagBase[T, C, V]) IsRequired() bool + IsRequired returns whether or not the flag is required + +func (f *FlagBase[T, C, V]) IsSet() bool + IsSet returns whether or not the flag has been set through env or file + +func (f *FlagBase[T, C, V]) IsVisible() bool + IsVisible returns true if the flag is not hidden, otherwise false + +func (f *FlagBase[T, C, V]) Names() []string + Names returns the names of the flag + +func (f *FlagBase[T, C, V]) PostParse() error + PostParse populates the flag given the flag set and environment + +func (f *FlagBase[T, C, V]) PreParse() error + +func (f *FlagBase[T, C, V]) RunAction(ctx context.Context, cmd *Command) error + RunAction executes flag action if set + +func (f *FlagBase[T, C, V]) Set(_ string, val string) error + Set applies given value from string + +func (f *FlagBase[T, C, V]) SetCategory(c string) + +func (f *FlagBase[T, C, V]) String() string + String returns a readable representation of this value (for usage defaults) + +func (f *FlagBase[T, C, V]) TakesValue() bool + TakesValue returns true if the flag takes a value, otherwise false + +func (f *FlagBase[T, C, V]) TypeName() string + TypeName returns the type of the flag. + +type FlagCategories interface { + // AddFlags adds a flag to a category, creating a new category if necessary. + AddFlag(category string, fl Flag) + // VisibleCategories returns a slice of visible flag categories sorted by name + VisibleCategories() []VisibleFlagCategory +} + FlagCategories interface allows for category manipulation + +type FlagEnvHintFunc func(envVars []string, str string) string + FlagEnvHintFunc is used by the default FlagStringFunc to annotate flag help + with the environment variable details. + +var FlagEnvHinter FlagEnvHintFunc = withEnvHint + FlagEnvHinter annotates flag help message with the environment variable + details. This is used by the default FlagStringer. + +type FlagFileHintFunc func(filePath, str string) string + FlagFileHintFunc is used by the default FlagStringFunc to annotate flag help + with the file path details. + +var FlagFileHinter FlagFileHintFunc = withFileHint + FlagFileHinter annotates flag help message with the environment variable + details. This is used by the default FlagStringer. + +type FlagNamePrefixFunc func(fullName []string, placeholder string) string + FlagNamePrefixFunc is used by the default FlagStringFunc to create prefix + text for a flag's full name. + +var FlagNamePrefixer FlagNamePrefixFunc = prefixedNames + FlagNamePrefixer converts a full flag name and its placeholder into the help + message flag prefix. This is used by the default FlagStringer. + +type FlagStringFunc func(Flag) string + FlagStringFunc is used by the help generation to display a flag, which is + expected to be a single line. + +var FlagStringer FlagStringFunc = stringifyFlag + FlagStringer converts a flag definition to a string. This is used by help to + display a flag. + +type FlagsByName []Flag + FlagsByName is a slice of Flag. + +func (f FlagsByName) Len() int + +func (f FlagsByName) Less(i, j int) bool + +func (f FlagsByName) Swap(i, j int) + +type Float32Arg = ArgumentBase[float32, NoConfig, floatValue[float32]] + +type Float32Args = ArgumentsBase[float32, NoConfig, floatValue[float32]] + +type Float32Flag = FlagBase[float32, NoConfig, floatValue[float32]] + +type Float32Slice = SliceBase[float32, NoConfig, floatValue[float32]] + +type Float32SliceFlag = FlagBase[[]float32, NoConfig, Float32Slice] + +type Float64Arg = ArgumentBase[float64, NoConfig, floatValue[float64]] + +type Float64Args = ArgumentsBase[float64, NoConfig, floatValue[float64]] + +type Float64Flag = FlagBase[float64, NoConfig, floatValue[float64]] + +type Float64Slice = SliceBase[float64, NoConfig, floatValue[float64]] + +type Float64SliceFlag = FlagBase[[]float64, NoConfig, Float64Slice] + +type FloatArg = ArgumentBase[float64, NoConfig, floatValue[float64]] + +type FloatArgs = ArgumentsBase[float64, NoConfig, floatValue[float64]] + +type FloatFlag = FlagBase[float64, NoConfig, floatValue[float64]] + +type FloatSlice = SliceBase[float64, NoConfig, floatValue[float64]] + +type FloatSliceFlag = FlagBase[[]float64, NoConfig, FloatSlice] + +type GenericFlag = FlagBase[Value, NoConfig, genericValue] + +type Int16Arg = ArgumentBase[int16, IntegerConfig, intValue[int16]] + +type Int16Args = ArgumentsBase[int16, IntegerConfig, intValue[int16]] + +type Int16Flag = FlagBase[int16, IntegerConfig, intValue[int16]] + +type Int16Slice = SliceBase[int16, IntegerConfig, intValue[int16]] + +type Int16SliceFlag = FlagBase[[]int16, IntegerConfig, Int16Slice] + +type Int32Arg = ArgumentBase[int32, IntegerConfig, intValue[int32]] + +type Int32Args = ArgumentsBase[int32, IntegerConfig, intValue[int32]] + +type Int32Flag = FlagBase[int32, IntegerConfig, intValue[int32]] + +type Int32Slice = SliceBase[int32, IntegerConfig, intValue[int32]] + +type Int32SliceFlag = FlagBase[[]int32, IntegerConfig, Int32Slice] + +type Int64Arg = ArgumentBase[int64, IntegerConfig, intValue[int64]] + +type Int64Args = ArgumentsBase[int64, IntegerConfig, intValue[int64]] + +type Int64Flag = FlagBase[int64, IntegerConfig, intValue[int64]] + +type Int64Slice = SliceBase[int64, IntegerConfig, intValue[int64]] + +type Int64SliceFlag = FlagBase[[]int64, IntegerConfig, Int64Slice] + +type Int8Arg = ArgumentBase[int8, IntegerConfig, intValue[int8]] + +type Int8Args = ArgumentsBase[int8, IntegerConfig, intValue[int8]] + +type Int8Flag = FlagBase[int8, IntegerConfig, intValue[int8]] + +type Int8Slice = SliceBase[int8, IntegerConfig, intValue[int8]] + +type Int8SliceFlag = FlagBase[[]int8, IntegerConfig, Int8Slice] + +type IntArg = ArgumentBase[int, IntegerConfig, intValue[int]] + +type IntArgs = ArgumentsBase[int, IntegerConfig, intValue[int]] + +type IntFlag = FlagBase[int, IntegerConfig, intValue[int]] + +type IntSlice = SliceBase[int, IntegerConfig, intValue[int]] + +type IntSliceFlag = FlagBase[[]int, IntegerConfig, IntSlice] + +type IntegerConfig struct { + Base int +} + IntegerConfig is the configuration for all integer type flags + +type InvalidFlagAccessFunc func(context.Context, *Command, string) + InvalidFlagAccessFunc is executed when an invalid flag is accessed from the + context. + +type LocalFlag interface { + IsLocal() bool +} + LocalFlag is an interface to enable detection of flags which are local to + current command + +type MapBase[T any, C any, VC ValueCreator[T, C]] struct { + // Has unexported fields. +} + MapBase wraps map[string]T to satisfy flag.Value + +func NewMapBase[T any, C any, VC ValueCreator[T, C]](defaults map[string]T) *MapBase[T, C, VC] + NewMapBase makes a *MapBase with default values + +func (i MapBase[T, C, VC]) Create(val map[string]T, p *map[string]T, c C) Value + +func (i *MapBase[T, C, VC]) Get() interface{} + Get returns the mapping of values set by this flag + +func (i *MapBase[T, C, VC]) Serialize() string + Serialize allows MapBase to fulfill Serializer + +func (i *MapBase[T, C, VC]) Set(value string) error + Set parses the value and appends it to the list of values + +func (i *MapBase[T, C, VC]) String() string + String returns a readable representation of this value (for usage defaults) + +func (i MapBase[T, C, VC]) ToString(t map[string]T) string + +func (i *MapBase[T, C, VC]) Value() map[string]T + Value returns the mapping of values set by this flag + +type MapSource interface { + fmt.Stringer + fmt.GoStringer + + // Lookup returns the value from the source based on key + // and if it was found + // or returns an empty string and false + Lookup(string) (any, bool) +} + MapSource is a source which can be used to look up a value based on a key + typically for use with a cli.Flag + +func NewMapSource(name string, m map[any]any) MapSource + +type MultiError interface { + error + Errors() []error +} + MultiError is an error that wraps multiple errors. + +type MutuallyExclusiveFlags struct { + // Flag list + Flags [][]Flag + + // whether this group is required + Required bool + + // Category to apply to all flags within group + Category string +} + MutuallyExclusiveFlags defines a mutually exclusive flag group Multiple + option paths can be provided out of which only one can be defined on cmdline + So for example [ --foo | [ --bar something --darth somethingelse ] ] + +type NoConfig struct{} + NoConfig is for flags which dont need a custom configuration + +type OnUsageErrorFunc func(ctx context.Context, cmd *Command, err error, isSubcommand bool) error + OnUsageErrorFunc is executed if a usage error occurs. This is useful for + displaying customized usage error messages. This function is able to replace + the original error messages. If this function is not set, the "Incorrect + usage" is displayed and the execution is interrupted. + +type RequiredFlag interface { + // whether the flag is a required flag or not + IsRequired() bool +} + RequiredFlag is an interface that allows us to mark flags as required + it allows flags required flags to be backwards compatible with the Flag + interface + +type Serializer interface { + Serialize() string +} + Serializer is used to circumvent the limitations of flag.FlagSet.Set + +type ShellCompleteFunc func(context.Context, *Command) + ShellCompleteFunc is an action to execute when the shell completion flag is + set + +type SliceBase[T any, C any, VC ValueCreator[T, C]] struct { + // Has unexported fields. +} + SliceBase wraps []T to satisfy flag.Value + +func NewSliceBase[T any, C any, VC ValueCreator[T, C]](defaults ...T) *SliceBase[T, C, VC] + NewSliceBase makes a *SliceBase with default values + +func (i SliceBase[T, C, VC]) Create(val []T, p *[]T, c C) Value + +func (i *SliceBase[T, C, VC]) Get() interface{} + Get returns the slice of values set by this flag + +func (i *SliceBase[T, C, VC]) Serialize() string + Serialize allows SliceBase to fulfill Serializer + +func (i *SliceBase[T, C, VC]) Set(value string) error + Set parses the value and appends it to the list of values + +func (i *SliceBase[T, C, VC]) String() string + String returns a readable representation of this value (for usage defaults) + +func (i SliceBase[T, C, VC]) ToString(t []T) string + +func (i *SliceBase[T, C, VC]) Value() []T + Value returns the slice of values set by this flag + +type StringArg = ArgumentBase[string, StringConfig, stringValue] + +type StringArgs = ArgumentsBase[string, StringConfig, stringValue] + +type StringConfig struct { + // Whether to trim whitespace of parsed value + TrimSpace bool +} + StringConfig defines the configuration for string flags + +type StringFlag = FlagBase[string, StringConfig, stringValue] + +type StringMap = MapBase[string, StringConfig, stringValue] + +type StringMapArgs = ArgumentBase[map[string]string, StringConfig, StringMap] + +type StringMapFlag = FlagBase[map[string]string, StringConfig, StringMap] + +type StringSlice = SliceBase[string, StringConfig, stringValue] + +type StringSliceFlag = FlagBase[[]string, StringConfig, StringSlice] + +type SuggestCommandFunc func(commands []*Command, provided string) string + +type SuggestFlagFunc func(flags []Flag, provided string, hideHelp bool) string + +type TimestampArg = ArgumentBase[time.Time, TimestampConfig, timestampValue] + +type TimestampArgs = ArgumentsBase[time.Time, TimestampConfig, timestampValue] + +type TimestampConfig struct { + Timezone *time.Location + // Available layouts for flag value. + // + // Note that value for formats with missing year/date will be interpreted as current year/date respectively. + // + // Read more about time layouts: https://pkg.go.dev/time#pkg-constants + Layouts []string +} + TimestampConfig defines the config for timestamp flags + +type TimestampFlag = FlagBase[time.Time, TimestampConfig, timestampValue] + +type Uint16Arg = ArgumentBase[uint16, IntegerConfig, uintValue[uint16]] + +type Uint16Args = ArgumentsBase[uint16, IntegerConfig, uintValue[uint16]] + +type Uint16Flag = FlagBase[uint16, IntegerConfig, uintValue[uint16]] + +type Uint16Slice = SliceBase[uint16, IntegerConfig, uintValue[uint16]] + +type Uint16SliceFlag = FlagBase[[]uint16, IntegerConfig, Uint16Slice] + +type Uint32Arg = ArgumentBase[uint32, IntegerConfig, uintValue[uint32]] + +type Uint32Args = ArgumentsBase[uint32, IntegerConfig, uintValue[uint32]] + +type Uint32Flag = FlagBase[uint32, IntegerConfig, uintValue[uint32]] + +type Uint32Slice = SliceBase[uint32, IntegerConfig, uintValue[uint32]] + +type Uint32SliceFlag = FlagBase[[]uint32, IntegerConfig, Uint32Slice] + +type Uint64Arg = ArgumentBase[uint64, IntegerConfig, uintValue[uint64]] + +type Uint64Args = ArgumentsBase[uint64, IntegerConfig, uintValue[uint64]] + +type Uint64Flag = FlagBase[uint64, IntegerConfig, uintValue[uint64]] + +type Uint64Slice = SliceBase[uint64, IntegerConfig, uintValue[uint64]] + +type Uint64SliceFlag = FlagBase[[]uint64, IntegerConfig, Uint64Slice] + +type Uint8Arg = ArgumentBase[uint8, IntegerConfig, uintValue[uint8]] + +type Uint8Args = ArgumentsBase[uint8, IntegerConfig, uintValue[uint8]] + +type Uint8Flag = FlagBase[uint8, IntegerConfig, uintValue[uint8]] + +type Uint8Slice = SliceBase[uint8, IntegerConfig, uintValue[uint8]] + +type Uint8SliceFlag = FlagBase[[]uint8, IntegerConfig, Uint8Slice] + +type UintArg = ArgumentBase[uint, IntegerConfig, uintValue[uint]] + +type UintArgs = ArgumentsBase[uint, IntegerConfig, uintValue[uint]] + +type UintFlag = FlagBase[uint, IntegerConfig, uintValue[uint]] + +type UintSlice = SliceBase[uint, IntegerConfig, uintValue[uint]] + +type UintSliceFlag = FlagBase[[]uint, IntegerConfig, UintSlice] + +type Value interface { + flag.Value + flag.Getter +} + Value represents a value as used by cli. For now it implements the golang + flag.Value interface + +type ValueCreator[T any, C any] interface { + Create(T, *T, C) Value + ToString(T) string +} + ValueCreator is responsible for creating a flag.Value emulation as well as + custom formatting + + T specifies the type + C specifies the config for the type + +type ValueSource interface { + fmt.Stringer + fmt.GoStringer + + // Lookup returns the value from the source and if it was found + // or returns an empty string and false + Lookup() (string, bool) +} + ValueSource is a source which can be used to look up a value, typically for + use with a cli.Flag + +func EnvVar(key string) ValueSource + +func File(path string) ValueSource + +func NewMapValueSource(key string, ms MapSource) ValueSource + +type ValueSourceChain struct { + Chain []ValueSource +} + ValueSourceChain contains an ordered series of ValueSource that allows for + lookup where the first ValueSource to resolve is returned + +func EnvVars(keys ...string) ValueSourceChain + EnvVars is a helper function to encapsulate a number of envVarValueSource + together as a ValueSourceChain + +func Files(paths ...string) ValueSourceChain + Files is a helper function to encapsulate a number of fileValueSource + together as a ValueSourceChain + +func NewValueSourceChain(src ...ValueSource) ValueSourceChain + +func (vsc *ValueSourceChain) Append(other ValueSourceChain) + +func (vsc *ValueSourceChain) EnvKeys() []string + +func (vsc *ValueSourceChain) GoString() string + +func (vsc *ValueSourceChain) Lookup() (string, bool) + +func (vsc *ValueSourceChain) LookupWithSource() (string, ValueSource, bool) + +func (vsc *ValueSourceChain) String() string + +type VisibleFlag interface { + // IsVisible returns true if the flag is not hidden, otherwise false + IsVisible() bool +} + VisibleFlag is an interface that allows to check if a flag is visible + +type VisibleFlagCategory interface { + // Name returns the category name string + Name() string + // Flags returns a slice of VisibleFlag sorted by name + Flags() []Flag +} + VisibleFlagCategory is a category containing flags. + diff --git a/vendor/github.com/urfave/cli/v3/help.go b/vendor/github.com/urfave/cli/v3/help.go new file mode 100644 index 000000000..c039a5d02 --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/help.go @@ -0,0 +1,600 @@ +package cli + +import ( + "context" + "fmt" + "io" + "os" + "strings" + "text/tabwriter" + "text/template" + "unicode/utf8" +) + +const ( + helpName = "help" + helpAlias = "h" +) + +// Prints help for the App or Command +type helpPrinter func(w io.Writer, templ string, data interface{}) + +// Prints help for the App or Command with custom template function. +type helpPrinterCustom func(w io.Writer, templ string, data interface{}, customFunc map[string]interface{}) + +// HelpPrinter is a function that writes the help output. If not set explicitly, +// this calls HelpPrinterCustom using only the default template functions. +// +// If custom logic for printing help is required, this function can be +// overridden. If the ExtraInfo field is defined on an App, this function +// should not be modified, as HelpPrinterCustom will be used directly in order +// to capture the extra information. +var HelpPrinter helpPrinter = printHelp + +// HelpPrinterCustom is a function that writes the help output. It is used as +// the default implementation of HelpPrinter, and may be called directly if +// the ExtraInfo field is set on an App. +// +// In the default implementation, if the customFuncs argument contains a +// "wrapAt" key, which is a function which takes no arguments and returns +// an int, this int value will be used to produce a "wrap" function used +// by the default template to wrap long lines. +var HelpPrinterCustom helpPrinterCustom = printHelpCustom + +// VersionPrinter prints the version for the App +var VersionPrinter = printVersion + +func buildHelpCommand(withAction bool) *Command { + cmd := &Command{ + Name: helpName, + Aliases: []string{helpAlias}, + Usage: "Shows a list of commands or help for one command", + ArgsUsage: "[command]", + HideHelp: true, + } + + if withAction { + cmd.Action = helpCommandAction + } + + return cmd +} + +func helpCommandAction(ctx context.Context, cmd *Command) error { + args := cmd.Args() + firstArg := args.First() + + tracef("doing help for cmd %[1]q with args %[2]q", cmd, args) + + // This action can be triggered by a "default" action of a command + // or via cmd.Run when cmd == helpCmd. So we have following possibilities + // + // 1 $ app + // 2 $ app help + // 3 $ app foo + // 4 $ app help foo + // 5 $ app foo help + + // Case 4. when executing a help command set the context to parent + // to allow resolution of subsequent args. This will transform + // $ app help foo + // to + // $ app foo + // which will then be handled as case 3 + if cmd.parent != nil && (cmd.HasName(helpName) || cmd.HasName(helpAlias)) { + tracef("setting cmd to cmd.parent") + cmd = cmd.parent + } + + // Case 4. $ app help foo + // foo is the command for which help needs to be shown + if firstArg != "" { + /* if firstArg == "--" { + return nil + }*/ + tracef("returning ShowCommandHelp with %[1]q", firstArg) + return ShowCommandHelp(ctx, cmd, firstArg) + } + + // Case 1 & 2 + // Special case when running help on main app itself as opposed to individual + // commands/subcommands + if cmd.parent == nil { + tracef("returning ShowAppHelp") + _ = ShowAppHelp(cmd) + return nil + } + + // Case 3, 5 + if (len(cmd.Commands) == 1 && !cmd.HideHelp) || + (len(cmd.Commands) == 0 && cmd.HideHelp) { + + tmpl := cmd.CustomHelpTemplate + if tmpl == "" { + tmpl = CommandHelpTemplate + } + + tracef("running HelpPrinter with command %[1]q", cmd.Name) + HelpPrinter(cmd.Root().Writer, tmpl, cmd) + + return nil + } + + tracef("running ShowSubcommandHelp") + return ShowSubcommandHelp(cmd) +} + +// ShowAppHelpAndExit - Prints the list of subcommands for the app and exits with exit code. +func ShowAppHelpAndExit(cmd *Command, exitCode int) { + _ = ShowAppHelp(cmd) + os.Exit(exitCode) +} + +// ShowAppHelp is an action that displays the help. +func ShowAppHelp(cmd *Command) error { + tmpl := cmd.CustomRootCommandHelpTemplate + if tmpl == "" { + tracef("using RootCommandHelpTemplate") + tmpl = RootCommandHelpTemplate + } + + if cmd.ExtraInfo == nil { + HelpPrinter(cmd.Root().Writer, tmpl, cmd.Root()) + return nil + } + + tracef("setting ExtraInfo in customAppData") + customAppData := func() map[string]any { + return map[string]any{ + "ExtraInfo": cmd.ExtraInfo, + } + } + HelpPrinterCustom(cmd.Root().Writer, tmpl, cmd.Root(), customAppData()) + + return nil +} + +// DefaultAppComplete prints the list of subcommands as the default app completion method +func DefaultAppComplete(ctx context.Context, cmd *Command) { + DefaultCompleteWithFlags(ctx, cmd) +} + +func printCommandSuggestions(commands []*Command, writer io.Writer) { + for _, command := range commands { + if command.Hidden { + continue + } + if strings.HasSuffix(os.Getenv("SHELL"), "zsh") { + _, _ = fmt.Fprintf(writer, "%s:%s\n", command.Name, command.Usage) + } else { + _, _ = fmt.Fprintf(writer, "%s\n", command.Name) + } + } +} + +func cliArgContains(flagName string, args []string) bool { + for _, name := range strings.Split(flagName, ",") { + name = strings.TrimSpace(name) + count := utf8.RuneCountInString(name) + if count > 2 { + count = 2 + } + flag := fmt.Sprintf("%s%s", strings.Repeat("-", count), name) + for _, a := range args { + if a == flag { + return true + } + } + } + return false +} + +func printFlagSuggestions(lastArg string, flags []Flag, writer io.Writer) { + // Trim to handle both "-short" and "--long" flags. + cur := strings.TrimLeft(lastArg, "-") + for _, flag := range flags { + if bflag, ok := flag.(*BoolFlag); ok && bflag.Hidden { + continue + } + + usage := "" + if docFlag, ok := flag.(DocGenerationFlag); ok { + usage = docFlag.GetUsage() + } + + name := strings.TrimSpace(flag.Names()[0]) + // this will get total count utf8 letters in flag name + count := utf8.RuneCountInString(name) + if count > 2 { + count = 2 // reuse this count to generate single - or -- in flag completion + } + // if flag name has more than one utf8 letter and last argument in cli has -- prefix then + // skip flag completion for short flags example -v or -x + if strings.HasPrefix(lastArg, "--") && count == 1 { + continue + } + // match if last argument matches this flag and it is not repeated + if strings.HasPrefix(name, cur) && cur != name /* && !cliArgContains(name, os.Args)*/ { + flagCompletion := fmt.Sprintf("%s%s", strings.Repeat("-", count), name) + if usage != "" && strings.HasSuffix(os.Getenv("SHELL"), "zsh") { + flagCompletion = fmt.Sprintf("%s:%s", flagCompletion, usage) + } + fmt.Fprintln(writer, flagCompletion) + } + } +} + +func DefaultCompleteWithFlags(ctx context.Context, cmd *Command) { + args := os.Args + if cmd != nil && cmd.parent != nil { + args = cmd.Args().Slice() + tracef("running default complete with flags[%v] on command %[2]q", args, cmd.Name) + } else { + tracef("running default complete with os.Args flags[%v]", args) + } + argsLen := len(args) + lastArg := "" + // parent command will have --generate-shell-completion so we need + // to account for that + if argsLen > 1 { + lastArg = args[argsLen-2] + } else if argsLen > 0 { + lastArg = args[argsLen-1] + } + + if lastArg == "--" { + tracef("No completions due to termination") + return + } + + if lastArg == completionFlag { + lastArg = "" + } + + if strings.HasPrefix(lastArg, "-") { + tracef("printing flag suggestion for flag[%v] on command %[1]q", lastArg, cmd.Name) + printFlagSuggestions(lastArg, cmd.Flags, cmd.Root().Writer) + return + } + + if cmd != nil { + tracef("printing command suggestions on command %[1]q", cmd.Name) + printCommandSuggestions(cmd.Commands, cmd.Root().Writer) + return + } +} + +// ShowCommandHelpAndExit - exits with code after showing help +func ShowCommandHelpAndExit(ctx context.Context, cmd *Command, command string, code int) { + _ = ShowCommandHelp(ctx, cmd, command) + os.Exit(code) +} + +// ShowCommandHelp prints help for the given command +func ShowCommandHelp(ctx context.Context, cmd *Command, commandName string) error { + for _, subCmd := range cmd.Commands { + if !subCmd.HasName(commandName) { + continue + } + + tmpl := subCmd.CustomHelpTemplate + if tmpl == "" { + if len(subCmd.Commands) == 0 { + tracef("using CommandHelpTemplate") + tmpl = CommandHelpTemplate + } else { + tracef("using SubcommandHelpTemplate") + tmpl = SubcommandHelpTemplate + } + } + + tracef("running HelpPrinter") + HelpPrinter(cmd.Root().Writer, tmpl, subCmd) + + tracef("returning nil after printing help") + return nil + } + + tracef("no matching command found") + + if cmd.CommandNotFound == nil { + errMsg := fmt.Sprintf("No help topic for '%v'", commandName) + + if cmd.Suggest { + if suggestion := SuggestCommand(cmd.Commands, commandName); suggestion != "" { + errMsg += ". " + suggestion + } + } + + tracef("exiting 3 with errMsg %[1]q", errMsg) + return Exit(errMsg, 3) + } + + tracef("running CommandNotFound func for %[1]q", commandName) + cmd.CommandNotFound(ctx, cmd, commandName) + + return nil +} + +// ShowSubcommandHelpAndExit - Prints help for the given subcommand and exits with exit code. +func ShowSubcommandHelpAndExit(cmd *Command, exitCode int) { + _ = ShowSubcommandHelp(cmd) + os.Exit(exitCode) +} + +// ShowSubcommandHelp prints help for the given subcommand +func ShowSubcommandHelp(cmd *Command) error { + HelpPrinter(cmd.Root().Writer, SubcommandHelpTemplate, cmd) + return nil +} + +// ShowVersion prints the version number of the App +func ShowVersion(cmd *Command) { + tracef("showing version via VersionPrinter (cmd=%[1]q)", cmd.Name) + VersionPrinter(cmd) +} + +func printVersion(cmd *Command) { + _, _ = fmt.Fprintf(cmd.Root().Writer, "%v version %v\n", cmd.Name, cmd.Version) +} + +func handleTemplateError(err error) { + if err != nil { + tracef("error encountered during template parse: %[1]v", err) + // If the writer is closed, t.Execute will fail, and there's nothing + // we can do to recover. + if os.Getenv("CLI_TEMPLATE_ERROR_DEBUG") != "" { + _, _ = fmt.Fprintf(ErrWriter, "CLI TEMPLATE ERROR: %#v\n", err) + } + return + } +} + +// printHelpCustom is the default implementation of HelpPrinterCustom. +// +// The customFuncs map will be combined with a default template.FuncMap to +// allow using arbitrary functions in template rendering. +func printHelpCustom(out io.Writer, templ string, data interface{}, customFuncs map[string]interface{}) { + const maxLineLength = 10000 + + tracef("building default funcMap") + funcMap := template.FuncMap{ + "join": strings.Join, + "subtract": subtract, + "indent": indent, + "nindent": nindent, + "trim": strings.TrimSpace, + "wrap": func(input string, offset int) string { return wrap(input, offset, maxLineLength) }, + "offset": offset, + "offsetCommands": offsetCommands, + } + + if wa, ok := customFuncs["wrapAt"]; ok { + if wrapAtFunc, ok := wa.(func() int); ok { + wrapAt := wrapAtFunc() + customFuncs["wrap"] = func(input string, offset int) string { + return wrap(input, offset, wrapAt) + } + } + } + + for key, value := range customFuncs { + funcMap[key] = value + } + + w := tabwriter.NewWriter(out, 1, 8, 2, ' ', 0) + t := template.Must(template.New("help").Funcs(funcMap).Parse(templ)) + + if _, err := t.New("helpNameTemplate").Parse(helpNameTemplate); err != nil { + handleTemplateError(err) + } + + if _, err := t.New("argsTemplate").Parse(argsTemplate); err != nil { + handleTemplateError(err) + } + + if _, err := t.New("usageTemplate").Parse(usageTemplate); err != nil { + handleTemplateError(err) + } + + if _, err := t.New("descriptionTemplate").Parse(descriptionTemplate); err != nil { + handleTemplateError(err) + } + + if _, err := t.New("visibleCommandTemplate").Parse(visibleCommandTemplate); err != nil { + handleTemplateError(err) + } + + if _, err := t.New("copyrightTemplate").Parse(copyrightTemplate); err != nil { + handleTemplateError(err) + } + + if _, err := t.New("versionTemplate").Parse(versionTemplate); err != nil { + handleTemplateError(err) + } + + if _, err := t.New("visibleFlagCategoryTemplate").Parse(visibleFlagCategoryTemplate); err != nil { + handleTemplateError(err) + } + + if _, err := t.New("visibleFlagTemplate").Parse(visibleFlagTemplate); err != nil { + handleTemplateError(err) + } + + if _, err := t.New("visiblePersistentFlagTemplate").Parse(visiblePersistentFlagTemplate); err != nil { + handleTemplateError(err) + } + + if _, err := t.New("visibleGlobalFlagCategoryTemplate").Parse(strings.ReplaceAll(visibleFlagCategoryTemplate, "OPTIONS", "GLOBAL OPTIONS")); err != nil { + handleTemplateError(err) + } + + if _, err := t.New("authorsTemplate").Parse(authorsTemplate); err != nil { + handleTemplateError(err) + } + + if _, err := t.New("visibleCommandCategoryTemplate").Parse(visibleCommandCategoryTemplate); err != nil { + handleTemplateError(err) + } + + tracef("executing template") + handleTemplateError(t.Execute(w, data)) + + _ = w.Flush() +} + +func printHelp(out io.Writer, templ string, data interface{}) { + HelpPrinterCustom(out, templ, data, nil) +} + +func checkVersion(cmd *Command) bool { + found := false + for _, name := range VersionFlag.Names() { + if cmd.Bool(name) { + found = true + } + } + return found +} + +func checkShellCompleteFlag(c *Command, arguments []string) (bool, []string) { + if (c.parent == nil && !c.EnableShellCompletion) || (c.parent != nil && !c.Root().shellCompletion) { + return false, arguments + } + + pos := len(arguments) - 1 + lastArg := arguments[pos] + + if lastArg != completionFlag { + return false, arguments + } + + for _, arg := range arguments { + // If arguments include "--", shell completion is disabled + // because after "--" only positional arguments are accepted. + // https://unix.stackexchange.com/a/11382 + if arg == "--" { + return false, arguments[:pos] + } + } + + return true, arguments[:pos] +} + +func checkCompletions(ctx context.Context, cmd *Command) bool { + tracef("checking completions on command %[1]q", cmd.Name) + + if !cmd.Root().shellCompletion { + tracef("completion not enabled skipping %[1]q", cmd.Name) + return false + } + + if argsArguments := cmd.Args(); argsArguments.Present() { + name := argsArguments.First() + if cmd := cmd.Command(name); cmd != nil { + // let the command handle the completion + return false + } + } + + tracef("no subcommand found for completion %[1]q", cmd.Name) + + if cmd.ShellComplete != nil { + tracef("running shell completion func for command %[1]q", cmd.Name) + cmd.ShellComplete(ctx, cmd) + } + + return true +} + +func subtract(a, b int) int { + return a - b +} + +func indent(spaces int, v string) string { + pad := strings.Repeat(" ", spaces) + return pad + strings.ReplaceAll(v, "\n", "\n"+pad) +} + +func nindent(spaces int, v string) string { + return "\n" + indent(spaces, v) +} + +func wrap(input string, offset int, wrapAt int) string { + var ss []string + + lines := strings.Split(input, "\n") + + padding := strings.Repeat(" ", offset) + + for i, line := range lines { + if line == "" { + ss = append(ss, line) + } else { + wrapped := wrapLine(line, offset, wrapAt, padding) + if i == 0 { + ss = append(ss, wrapped) + } else { + ss = append(ss, padding+wrapped) + } + + } + } + + return strings.Join(ss, "\n") +} + +func wrapLine(input string, offset int, wrapAt int, padding string) string { + if wrapAt <= offset || len(input) <= wrapAt-offset { + return input + } + + lineWidth := wrapAt - offset + words := strings.Fields(input) + if len(words) == 0 { + return input + } + + wrapped := words[0] + spaceLeft := lineWidth - len(wrapped) + for _, word := range words[1:] { + if len(word)+1 > spaceLeft { + wrapped += "\n" + padding + word + spaceLeft = lineWidth - len(word) + } else { + wrapped += " " + word + spaceLeft -= 1 + len(word) + } + } + + return wrapped +} + +func offset(input string, fixed int) int { + return len(input) + fixed +} + +// this function tries to find the max width of the names column +// so say we have the following rows for help +// +// foo1, foo2, foo3 some string here +// bar1, b2 some other string here +// +// We want to offset the 2nd row usage by some amount so that everything +// is aligned +// +// foo1, foo2, foo3 some string here +// bar1, b2 some other string here +// +// to find that offset we find the length of all the rows and use the max +// to calculate the offset +func offsetCommands(cmds []*Command, fixed int) int { + max := 0 + for _, cmd := range cmds { + s := strings.Join(cmd.Names(), ", ") + if len(s) > max { + max = len(s) + } + } + return max + fixed +} diff --git a/vendor/github.com/urfave/cli/v3/mkdocs-reqs.txt b/vendor/github.com/urfave/cli/v3/mkdocs-reqs.txt new file mode 100644 index 000000000..365d864c7 --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/mkdocs-reqs.txt @@ -0,0 +1,5 @@ +mkdocs-git-revision-date-localized-plugin~=1.2 +mkdocs-material~=9.5 +mkdocs~=1.6 +mkdocs-redirects~=1.2 +pygments~=2.18 diff --git a/vendor/github.com/urfave/cli/v2/mkdocs.yml b/vendor/github.com/urfave/cli/v3/mkdocs.yml similarity index 67% rename from vendor/github.com/urfave/cli/v2/mkdocs.yml rename to vendor/github.com/urfave/cli/v3/mkdocs.yml index f7bfd419e..97bc4ad58 100644 --- a/vendor/github.com/urfave/cli/v2/mkdocs.yml +++ b/vendor/github.com/urfave/cli/v3/mkdocs.yml @@ -15,9 +15,36 @@ nav: - Code of Conduct: CODE_OF_CONDUCT.md - Releasing: RELEASING.md - Security: SECURITY.md + - Migrate v2 to v3: migrate-v2-to-v3.md - Migrate v1 to v2: migrate-v1-to-v2.md + - v3 Manual: + - Getting Started: v3/getting-started.md + - Migrating From Older Releases: v3/migrating-from-older-releases.md + - Examples: + - Greet: v3/examples/greet.md + - Flags: + - Basics: v3/examples/flags/basics.md + - Value Sources: v3/examples/flags/value-sources.md + - Short Options: v3/examples/flags/short-options.md + - Advanced: v3/examples/flags/advanced.md + - Arguments: + - Basics: v3/examples/arguments/basics.md + - Advanced: v3/examples/arguments/advanced.md + - Subcommands: + - Basics: v3/examples/subcommands/basics.md + - Categories: v3/examples/subcommands/categories.md + - Completions: + - Shell Completions: v3/examples/completions/shell-completions.md + - Customizations: v3/examples/completions/customizations.md + - Help Text: + - Generated Help Text: v3/examples/help/generated-help-text.md + - Suggestions: v3/examples/help/suggestions.md + - Error Handling: + - Exit Codes: v3/examples/exit-codes.md + - Full API Example: v3/examples/full-api-example.md - v2 Manual: - Getting Started: v2/getting-started.md + - Migrating to v3: v2/migrating-to-v3.md - Migrating From Older Releases: v2/migrating-from-older-releases.md - Examples: - Greet: v2/examples/greet.md @@ -69,10 +96,15 @@ theme: - navigation.sections - navigation.tabs - navigation.tabs.sticky + plugins: - git-revision-date-localized - search + - redirects: + redirect_maps: + 'v3/examples/bash-completions.md': 'v3/examples/completions/shell-completions.md' - tags + # NOTE: this is the recommended configuration from # https://squidfunk.github.io/mkdocs-material/setup/extensions/#recommended-configuration markdown_extensions: @@ -92,8 +124,8 @@ markdown_extensions: - pymdownx.caret - pymdownx.details - pymdownx.emoji: - emoji_index: !!python/name:materialx.emoji.twemoji - emoji_generator: !!python/name:materialx.emoji.to_svg + emoji_index: !!python/name:material.extensions.emoji.twemoji + emoji_generator: !!python/name:material.extensions.emoji.to_svg - pymdownx.highlight - pymdownx.inlinehilite - pymdownx.keys diff --git a/vendor/github.com/urfave/cli/v2/sort.go b/vendor/github.com/urfave/cli/v3/sort.go similarity index 100% rename from vendor/github.com/urfave/cli/v2/sort.go rename to vendor/github.com/urfave/cli/v3/sort.go diff --git a/vendor/github.com/urfave/cli/v3/staticcheck.conf b/vendor/github.com/urfave/cli/v3/staticcheck.conf new file mode 100644 index 000000000..233d9e73a --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/staticcheck.conf @@ -0,0 +1 @@ +checks=["all"] diff --git a/vendor/github.com/urfave/cli/v3/suggestions.go b/vendor/github.com/urfave/cli/v3/suggestions.go new file mode 100644 index 000000000..6f29f1221 --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/suggestions.go @@ -0,0 +1,147 @@ +package cli + +import ( + "math" +) + +const suggestDidYouMeanTemplate = "Did you mean %q?" + +var ( + SuggestFlag SuggestFlagFunc = suggestFlag + SuggestCommand SuggestCommandFunc = suggestCommand + SuggestDidYouMeanTemplate string = suggestDidYouMeanTemplate +) + +type SuggestFlagFunc func(flags []Flag, provided string, hideHelp bool) string + +type SuggestCommandFunc func(commands []*Command, provided string) string + +// jaroDistance is the measure of similarity between two strings. It returns a +// value between 0 and 1, where 1 indicates identical strings and 0 indicates +// completely different strings. +// +// Adapted from https://github.com/xrash/smetrics/blob/5f08fbb34913bc8ab95bb4f2a89a0637ca922666/jaro.go. +func jaroDistance(a, b string) float64 { + if len(a) == 0 && len(b) == 0 { + return 1 + } + if len(a) == 0 || len(b) == 0 { + return 0 + } + + lenA := float64(len(a)) + lenB := float64(len(b)) + hashA := make([]bool, len(a)) + hashB := make([]bool, len(b)) + maxDistance := int(math.Max(0, math.Floor(math.Max(lenA, lenB)/2.0)-1)) + + var matches float64 + for i := 0; i < len(a); i++ { + start := int(math.Max(0, float64(i-maxDistance))) + end := int(math.Min(lenB-1, float64(i+maxDistance))) + + for j := start; j <= end; j++ { + if hashB[j] { + continue + } + if a[i] == b[j] { + hashA[i] = true + hashB[j] = true + matches++ + break + } + } + } + if matches == 0 { + return 0 + } + + var transpositions float64 + var j int + for i := 0; i < len(a); i++ { + if !hashA[i] { + continue + } + for !hashB[j] { + j++ + } + if a[i] != b[j] { + transpositions++ + } + j++ + } + + transpositions /= 2 + return ((matches / lenA) + (matches / lenB) + ((matches - transpositions) / matches)) / 3.0 +} + +// jaroWinkler is more accurate when strings have a common prefix up to a +// defined maximum length. +// +// Adapted from https://github.com/xrash/smetrics/blob/5f08fbb34913bc8ab95bb4f2a89a0637ca922666/jaro-winkler.go. +func jaroWinkler(a, b string) float64 { + const ( + boostThreshold = 0.7 + prefixSize = 4 + ) + jaroDist := jaroDistance(a, b) + if jaroDist <= boostThreshold { + return jaroDist + } + + prefix := int(math.Min(float64(len(a)), math.Min(float64(prefixSize), float64(len(b))))) + + var prefixMatch float64 + for i := 0; i < prefix; i++ { + if a[i] == b[i] { + prefixMatch++ + } else { + break + } + } + return jaroDist + 0.1*prefixMatch*(1.0-jaroDist) +} + +func suggestFlag(flags []Flag, provided string, hideHelp bool) string { + distance := 0.0 + suggestion := "" + + for _, flag := range flags { + flagNames := flag.Names() + if !hideHelp && HelpFlag != nil { + flagNames = append(flagNames, HelpFlag.Names()...) + } + for _, name := range flagNames { + newDistance := jaroWinkler(name, provided) + if newDistance > distance { + distance = newDistance + suggestion = name + } + } + } + + if len(suggestion) == 1 { + suggestion = "-" + suggestion + } else if len(suggestion) > 1 { + suggestion = "--" + suggestion + } + + return suggestion +} + +// suggestCommand takes a list of commands and a provided string to suggest a +// command name +func suggestCommand(commands []*Command, provided string) (suggestion string) { + distance := 0.0 + for _, command := range commands { + for _, name := range append(command.Names(), helpName, helpAlias) { + newDistance := jaroWinkler(name, provided) + if newDistance > distance { + distance = newDistance + suggestion = name + } + } + } + + return suggestion +} diff --git a/vendor/github.com/urfave/cli/v2/template.go b/vendor/github.com/urfave/cli/v3/template.go similarity index 59% rename from vendor/github.com/urfave/cli/v2/template.go rename to vendor/github.com/urfave/cli/v3/template.go index 8abc5ba42..29c8e8c71 100644 --- a/vendor/github.com/urfave/cli/v2/template.go +++ b/vendor/github.com/urfave/cli/v3/template.go @@ -1,16 +1,23 @@ package cli -var helpNameTemplate = `{{$v := offset .HelpName 6}}{{wrap .HelpName 3}}{{if .Usage}} - {{wrap .Usage $v}}{{end}}` -var usageTemplate = `{{if .UsageText}}{{wrap .UsageText 3}}{{else}}{{.HelpName}}{{if .VisibleFlags}} [command options]{{end}}{{if .ArgsUsage}} {{.ArgsUsage}}{{else}}{{if .Args}} [arguments...]{{end}}{{end}}{{end}}` -var descriptionTemplate = `{{wrap .Description 3}}` -var authorsTemplate = `{{with $length := len .Authors}}{{if ne 1 $length}}S{{end}}{{end}}: +var ( + helpNameTemplate = `{{$v := offset .FullName 6}}{{wrap .FullName 3}}{{if .Usage}} - {{wrap .Usage $v}}{{end}}` + argsTemplate = `{{if .Arguments}}{{range .Arguments}}{{.Usage}}{{end}}{{end}}` + usageTemplate = `{{if .UsageText}}{{wrap .UsageText 3}}{{else}}{{.FullName}}{{if .VisibleFlags}} [options]{{end}}{{if .VisibleCommands}} [command [command options]]{{end}}{{if .ArgsUsage}} {{.ArgsUsage}}{{else}}{{if .Arguments}} {{template "argsTemplate" .}}{{end}}{{end}}{{end}}` + descriptionTemplate = `{{wrap .Description 3}}` + authorsTemplate = `{{with $length := len .Authors}}{{if ne 1 $length}}S{{end}}{{end}}: {{range $index, $author := .Authors}}{{if $index}} {{end}}{{$author}}{{end}}` +) + var visibleCommandTemplate = `{{ $cv := offsetCommands .VisibleCommands 5}}{{range .VisibleCommands}} {{$s := join .Names ", "}}{{$s}}{{ $sp := subtract $cv (offset $s 3) }}{{ indent $sp ""}}{{wrap .Usage $cv}}{{end}}` + var visibleCommandCategoryTemplate = `{{range .VisibleCategories}}{{if .Name}} + {{.Name}}:{{range .VisibleCommands}} {{join .Names ", "}}{{"\t"}}{{.Usage}}{{end}}{{else}}{{template "visibleCommandTemplate" .}}{{end}}{{end}}` + var visibleFlagCategoryTemplate = `{{range .VisibleFlagCategories}} {{if .Name}}{{.Name}} @@ -21,6 +28,9 @@ var visibleFlagCategoryTemplate = `{{range .VisibleFlagCategories}} var visibleFlagTemplate = `{{range $i, $e := .VisibleFlags}} {{wrap $e.String 6}}{{end}}` +var visiblePersistentFlagTemplate = `{{range $i, $e := .VisiblePersistentFlags}} + {{wrap $e.String 6}}{{end}}` + var versionTemplate = `{{if .Version}}{{if not .HideVersion}} VERSION: @@ -28,14 +38,14 @@ VERSION: var copyrightTemplate = `{{wrap .Copyright 3}}` -// AppHelpTemplate is the text template for the Default help topic. +// RootCommandHelpTemplate is the text template for the Default help topic. // cli.go uses text/template to render templates. You can // render custom help text by setting this variable. -var AppHelpTemplate = `NAME: +var RootCommandHelpTemplate = `NAME: {{template "helpNameTemplate" .}} USAGE: - {{if .UsageText}}{{wrap .UsageText 3}}{{else}}{{.HelpName}} {{if .VisibleFlags}}[global options]{{end}}{{if .Commands}} command [command options]{{end}}{{if .ArgsUsage}} {{.ArgsUsage}}{{else}}{{if .Args}} [arguments...]{{end}}{{end}}{{end}}{{if .Version}}{{if not .HideVersion}} + {{if .UsageText}}{{wrap .UsageText 3}}{{else}}{{.FullName}} {{if .VisibleFlags}}[global options]{{end}}{{if .VisibleCommands}} [command [command options]]{{end}}{{if .ArgsUsage}} {{.ArgsUsage}}{{else}}{{if .Arguments}} [arguments...]{{end}}{{end}}{{end}}{{if .Version}}{{if not .HideVersion}} VERSION: {{.Version}}{{end}}{{end}}{{if .Description}} @@ -73,7 +83,9 @@ DESCRIPTION: OPTIONS:{{template "visibleFlagCategoryTemplate" .}}{{else if .VisibleFlags}} -OPTIONS:{{template "visibleFlagTemplate" .}}{{end}} +OPTIONS:{{template "visibleFlagTemplate" .}}{{end}}{{if .VisiblePersistentFlags}} + +GLOBAL OPTIONS:{{template "visiblePersistentFlagTemplate" .}}{{end}} ` // SubcommandHelpTemplate is the text template for the subcommand help topic. @@ -83,54 +95,24 @@ var SubcommandHelpTemplate = `NAME: {{template "helpNameTemplate" .}} USAGE: - {{if .UsageText}}{{wrap .UsageText 3}}{{else}}{{.HelpName}} {{if .VisibleFlags}}command [command options]{{end}}{{if .ArgsUsage}} {{.ArgsUsage}}{{else}}{{if .Args}} [arguments...]{{end}}{{end}}{{end}}{{if .Description}} + {{if .UsageText}}{{wrap .UsageText 3}}{{else}}{{.FullName}}{{if .VisibleCommands}} [command [command options]]{{end}}{{if .ArgsUsage}} {{.ArgsUsage}}{{else}}{{if .Arguments}} [arguments...]{{end}}{{end}}{{end}}{{if .Category}} + +CATEGORY: + {{.Category}}{{end}}{{if .Description}} DESCRIPTION: {{template "descriptionTemplate" .}}{{end}}{{if .VisibleCommands}} -COMMANDS:{{template "visibleCommandCategoryTemplate" .}}{{end}}{{if .VisibleFlagCategories}} +COMMANDS:{{template "visibleCommandTemplate" .}}{{end}}{{if .VisibleFlagCategories}} OPTIONS:{{template "visibleFlagCategoryTemplate" .}}{{else if .VisibleFlags}} OPTIONS:{{template "visibleFlagTemplate" .}}{{end}} ` -var MarkdownDocTemplate = `{{if gt .SectionNum 0}}% {{ .App.Name }} {{ .SectionNum }} - -{{end}}# NAME - -{{ .App.Name }}{{ if .App.Usage }} - {{ .App.Usage }}{{ end }} - -# SYNOPSIS - -{{ .App.Name }} -{{ if .SynopsisArgs }} -` + "```" + ` -{{ range $v := .SynopsisArgs }}{{ $v }}{{ end }}` + "```" + ` -{{ end }}{{ if .App.Description }} -# DESCRIPTION - -{{ .App.Description }} -{{ end }} -**Usage**: - -` + "```" + `{{ if .App.UsageText }} -{{ .App.UsageText }} -{{ else }} -{{ .App.Name }} [GLOBAL OPTIONS] command [COMMAND OPTIONS] [ARGUMENTS...] -{{ end }}` + "```" + ` -{{ if .GlobalArgs }} -# GLOBAL OPTIONS -{{ range $v := .GlobalArgs }} -{{ $v }}{{ end }} -{{ end }}{{ if .Commands }} -# COMMANDS -{{ range $v := .Commands }} -{{ $v }}{{ end }}{{ end }}` - -var FishCompletionTemplate = `# {{ .App.Name }} fish shell completion +var FishCompletionTemplate = `# {{ .Command.Name }} fish shell completion -function __fish_{{ .App.Name }}_no_subcommand --description 'Test if there has been any subcommand yet' +function __fish_{{ .Command.Name }}_no_subcommand --description 'Test if there has been any subcommand yet' for i in (commandline -opc) if contains -- $i{{ range $v := .AllCommands }} {{ $v }}{{ end }} return 1 diff --git a/vendor/github.com/urfave/cli/v3/value_source.go b/vendor/github.com/urfave/cli/v3/value_source.go new file mode 100644 index 000000000..44b0173b4 --- /dev/null +++ b/vendor/github.com/urfave/cli/v3/value_source.go @@ -0,0 +1,257 @@ +package cli + +import ( + "fmt" + "os" + "strings" +) + +// ValueSource is a source which can be used to look up a value, +// typically for use with a cli.Flag +type ValueSource interface { + fmt.Stringer + fmt.GoStringer + + // Lookup returns the value from the source and if it was found + // or returns an empty string and false + Lookup() (string, bool) +} + +// EnvValueSource is to specifically detect env sources when +// printing help text +type EnvValueSource interface { + IsFromEnv() bool + Key() string +} + +// MapSource is a source which can be used to look up a value +// based on a key +// typically for use with a cli.Flag +type MapSource interface { + fmt.Stringer + fmt.GoStringer + + // Lookup returns the value from the source based on key + // and if it was found + // or returns an empty string and false + Lookup(string) (any, bool) +} + +// ValueSourceChain contains an ordered series of ValueSource that +// allows for lookup where the first ValueSource to resolve is +// returned +type ValueSourceChain struct { + Chain []ValueSource +} + +func NewValueSourceChain(src ...ValueSource) ValueSourceChain { + return ValueSourceChain{ + Chain: src, + } +} + +func (vsc *ValueSourceChain) Append(other ValueSourceChain) { + vsc.Chain = append(vsc.Chain, other.Chain...) +} + +func (vsc *ValueSourceChain) EnvKeys() []string { + vals := []string{} + + for _, src := range vsc.Chain { + if v, ok := src.(EnvValueSource); ok && v.IsFromEnv() { + vals = append(vals, v.Key()) + } + } + + return vals +} + +func (vsc *ValueSourceChain) String() string { + s := []string{} + + for _, vs := range vsc.Chain { + s = append(s, vs.String()) + } + + return strings.Join(s, ",") +} + +func (vsc *ValueSourceChain) GoString() string { + s := []string{} + + for _, vs := range vsc.Chain { + s = append(s, vs.GoString()) + } + + return fmt.Sprintf("&ValueSourceChain{Chain:{%[1]s}}", strings.Join(s, ",")) +} + +func (vsc *ValueSourceChain) Lookup() (string, bool) { + s, _, ok := vsc.LookupWithSource() + return s, ok +} + +func (vsc *ValueSourceChain) LookupWithSource() (string, ValueSource, bool) { + for _, src := range vsc.Chain { + if value, found := src.Lookup(); found { + return value, src, true + } + } + + return "", nil, false +} + +// envVarValueSource encapsulates a ValueSource from an environment variable +type envVarValueSource struct { + key string +} + +func (e *envVarValueSource) Lookup() (string, bool) { + return os.LookupEnv(strings.TrimSpace(string(e.key))) +} + +func (e *envVarValueSource) IsFromEnv() bool { + return true +} + +func (e *envVarValueSource) Key() string { + return e.key +} + +func (e *envVarValueSource) String() string { return fmt.Sprintf("environment variable %[1]q", e.key) } +func (e *envVarValueSource) GoString() string { + return fmt.Sprintf("&envVarValueSource{Key:%[1]q}", e.key) +} + +func EnvVar(key string) ValueSource { + return &envVarValueSource{ + key: key, + } +} + +// EnvVars is a helper function to encapsulate a number of +// envVarValueSource together as a ValueSourceChain +func EnvVars(keys ...string) ValueSourceChain { + vsc := ValueSourceChain{Chain: []ValueSource{}} + + for _, key := range keys { + vsc.Chain = append(vsc.Chain, EnvVar(key)) + } + + return vsc +} + +// fileValueSource encapsulates a ValueSource from a file +type fileValueSource struct { + Path string +} + +func (f *fileValueSource) Lookup() (string, bool) { + data, err := os.ReadFile(f.Path) + return string(data), err == nil +} + +func (f *fileValueSource) String() string { return fmt.Sprintf("file %[1]q", f.Path) } +func (f *fileValueSource) GoString() string { + return fmt.Sprintf("&fileValueSource{Path:%[1]q}", f.Path) +} + +func File(path string) ValueSource { + return &fileValueSource{Path: path} +} + +// Files is a helper function to encapsulate a number of +// fileValueSource together as a ValueSourceChain +func Files(paths ...string) ValueSourceChain { + vsc := ValueSourceChain{Chain: []ValueSource{}} + + for _, path := range paths { + vsc.Chain = append(vsc.Chain, File(path)) + } + + return vsc +} + +type mapSource struct { + name string + m map[any]any +} + +func NewMapSource(name string, m map[any]any) MapSource { + return &mapSource{ + name: name, + m: m, + } +} + +func (ms *mapSource) String() string { return fmt.Sprintf("map source %[1]q", ms.name) } +func (ms *mapSource) GoString() string { + return fmt.Sprintf("&mapSource{name:%[1]q}", ms.name) +} + +// Lookup returns a value from the map source. The lookup name may be a dot-separated path into the map. +// If that is the case, it will recursively traverse the map based on the '.' delimited sections to find +// a nested value for the key. +func (ms *mapSource) Lookup(name string) (any, bool) { + sections := strings.Split(name, ".") + if name == "" || len(sections) == 0 { + return nil, false + } + + node := ms.m + + // traverse into the map based on the dot-separated sections + if len(sections) >= 2 { // the last section is the value we want, we will return it directly at the end + for _, section := range sections[:len(sections)-1] { + child, ok := node[section] + if !ok { + return nil, false + } + + switch child := child.(type) { + case map[string]any: + node = make(map[any]any, len(child)) + for k, v := range child { + node[k] = v + } + case map[any]any: + node = child + default: + return nil, false + } + } + } + + if val, ok := node[sections[len(sections)-1]]; ok { + return val, true + } + return nil, false +} + +type mapValueSource struct { + key string + ms MapSource +} + +func NewMapValueSource(key string, ms MapSource) ValueSource { + return &mapValueSource{ + key: key, + ms: ms, + } +} + +func (mvs *mapValueSource) String() string { + return fmt.Sprintf("key %[1]q from %[2]s", mvs.key, mvs.ms.String()) +} + +func (mvs *mapValueSource) GoString() string { + return fmt.Sprintf("&mapValueSource{key:%[1]q, src:%[2]s}", mvs.key, mvs.ms.GoString()) +} + +func (mvs *mapValueSource) Lookup() (string, bool) { + if v, ok := mvs.ms.Lookup(mvs.key); !ok { + return "", false + } else { + return fmt.Sprintf("%+v", v), true + } +} diff --git a/vendor/github.com/xrash/smetrics/.travis.yml b/vendor/github.com/xrash/smetrics/.travis.yml deleted file mode 100644 index d1cd67ff9..000000000 --- a/vendor/github.com/xrash/smetrics/.travis.yml +++ /dev/null @@ -1,9 +0,0 @@ -language: go -go: - - 1.11 - - 1.12 - - 1.13 - - 1.14.x - - master -script: - - cd tests && make diff --git a/vendor/github.com/xrash/smetrics/LICENSE b/vendor/github.com/xrash/smetrics/LICENSE deleted file mode 100644 index 80445682f..000000000 --- a/vendor/github.com/xrash/smetrics/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -Copyright (C) 2016 Felipe da Cunha Gonçalves -All Rights Reserved. - -MIT LICENSE - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/github.com/xrash/smetrics/README.md b/vendor/github.com/xrash/smetrics/README.md deleted file mode 100644 index 5e0c1a463..000000000 --- a/vendor/github.com/xrash/smetrics/README.md +++ /dev/null @@ -1,49 +0,0 @@ -[![Build Status](https://travis-ci.org/xrash/smetrics.svg?branch=master)](http://travis-ci.org/xrash/smetrics) - -# smetrics - -`smetrics` is "string metrics". - -Package smetrics provides a bunch of algorithms for calculating the distance between strings. - -There are implementations for calculating the popular Levenshtein distance (aka Edit Distance or Wagner-Fischer), as well as the Jaro distance, the Jaro-Winkler distance, and more. - -# How to import - -```go -import "github.com/xrash/smetrics" -``` - -# Documentation - -Go to [https://pkg.go.dev/github.com/xrash/smetrics](https://pkg.go.dev/github.com/xrash/smetrics) for complete documentation. - -# Example - -```go -package main - -import ( - "github.com/xrash/smetrics" -) - -func main() { - smetrics.WagnerFischer("POTATO", "POTATTO", 1, 1, 2) - smetrics.WagnerFischer("MOUSE", "HOUSE", 2, 2, 4) - - smetrics.Ukkonen("POTATO", "POTATTO", 1, 1, 2) - smetrics.Ukkonen("MOUSE", "HOUSE", 2, 2, 4) - - smetrics.Jaro("AL", "AL") - smetrics.Jaro("MARTHA", "MARHTA") - - smetrics.JaroWinkler("AL", "AL", 0.7, 4) - smetrics.JaroWinkler("MARTHA", "MARHTA", 0.7, 4) - - smetrics.Soundex("Euler") - smetrics.Soundex("Ellery") - - smetrics.Hamming("aaa", "aaa") - smetrics.Hamming("aaa", "aab") -} -``` diff --git a/vendor/github.com/xrash/smetrics/doc.go b/vendor/github.com/xrash/smetrics/doc.go deleted file mode 100644 index 21bc986c9..000000000 --- a/vendor/github.com/xrash/smetrics/doc.go +++ /dev/null @@ -1,19 +0,0 @@ -/* -Package smetrics provides a bunch of algorithms for calculating -the distance between strings. - -There are implementations for calculating the popular Levenshtein -distance (aka Edit Distance or Wagner-Fischer), as well as the Jaro -distance, the Jaro-Winkler distance, and more. - -For the Levenshtein distance, you can use the functions WagnerFischer() -and Ukkonen(). Read the documentation on these functions. - -For the Jaro and Jaro-Winkler algorithms, check the functions -Jaro() and JaroWinkler(). Read the documentation on these functions. - -For the Soundex algorithm, check the function Soundex(). - -For the Hamming distance algorithm, check the function Hamming(). -*/ -package smetrics diff --git a/vendor/github.com/xrash/smetrics/hamming.go b/vendor/github.com/xrash/smetrics/hamming.go deleted file mode 100644 index 505d3e5da..000000000 --- a/vendor/github.com/xrash/smetrics/hamming.go +++ /dev/null @@ -1,25 +0,0 @@ -package smetrics - -import ( - "fmt" -) - -// The Hamming distance is the minimum number of substitutions required to change string A into string B. Both strings must have the same size. If the strings have different sizes, the function returns an error. -func Hamming(a, b string) (int, error) { - al := len(a) - bl := len(b) - - if al != bl { - return -1, fmt.Errorf("strings are not equal (len(a)=%d, len(b)=%d)", al, bl) - } - - var difference = 0 - - for i := range a { - if a[i] != b[i] { - difference = difference + 1 - } - } - - return difference, nil -} diff --git a/vendor/github.com/xrash/smetrics/jaro-winkler.go b/vendor/github.com/xrash/smetrics/jaro-winkler.go deleted file mode 100644 index abdb28883..000000000 --- a/vendor/github.com/xrash/smetrics/jaro-winkler.go +++ /dev/null @@ -1,28 +0,0 @@ -package smetrics - -import ( - "math" -) - -// The Jaro-Winkler distance. The result is 1 for equal strings, and 0 for completely different strings. It is commonly used on Record Linkage stuff, thus it tries to be accurate for common typos when writing real names such as person names and street names. -// Jaro-Winkler is a modification of the Jaro algorithm. It works by first running Jaro, then boosting the score of exact matches at the beginning of the strings. Because of that, it introduces two more parameters: the boostThreshold and the prefixSize. These are commonly set to 0.7 and 4, respectively. -func JaroWinkler(a, b string, boostThreshold float64, prefixSize int) float64 { - j := Jaro(a, b) - - if j <= boostThreshold { - return j - } - - prefixSize = int(math.Min(float64(len(a)), math.Min(float64(prefixSize), float64(len(b))))) - - var prefixMatch float64 - for i := 0; i < prefixSize; i++ { - if a[i] == b[i] { - prefixMatch++ - } else { - break - } - } - - return j + 0.1*prefixMatch*(1.0-j) -} diff --git a/vendor/github.com/xrash/smetrics/jaro.go b/vendor/github.com/xrash/smetrics/jaro.go deleted file mode 100644 index 75f924e11..000000000 --- a/vendor/github.com/xrash/smetrics/jaro.go +++ /dev/null @@ -1,86 +0,0 @@ -package smetrics - -import ( - "math" -) - -// The Jaro distance. The result is 1 for equal strings, and 0 for completely different strings. -func Jaro(a, b string) float64 { - // If both strings are zero-length, they are completely equal, - // therefore return 1. - if len(a) == 0 && len(b) == 0 { - return 1 - } - - // If one string is zero-length, strings are completely different, - // therefore return 0. - if len(a) == 0 || len(b) == 0 { - return 0 - } - - // Define the necessary variables for the algorithm. - la := float64(len(a)) - lb := float64(len(b)) - matchRange := int(math.Max(0, math.Floor(math.Max(la, lb)/2.0)-1)) - matchesA := make([]bool, len(a)) - matchesB := make([]bool, len(b)) - var matches float64 = 0 - - // Step 1: Matches - // Loop through each character of the first string, - // looking for a matching character in the second string. - for i := 0; i < len(a); i++ { - start := int(math.Max(0, float64(i-matchRange))) - end := int(math.Min(lb-1, float64(i+matchRange))) - - for j := start; j <= end; j++ { - if matchesB[j] { - continue - } - - if a[i] == b[j] { - matchesA[i] = true - matchesB[j] = true - matches++ - break - } - } - } - - // If there are no matches, strings are completely different, - // therefore return 0. - if matches == 0 { - return 0 - } - - // Step 2: Transpositions - // Loop through the matches' arrays, looking for - // unaligned matches. Count the number of unaligned matches. - unaligned := 0 - j := 0 - for i := 0; i < len(a); i++ { - if !matchesA[i] { - continue - } - - for !matchesB[j] { - j++ - } - - if a[i] != b[j] { - unaligned++ - } - - j++ - } - - // The number of unaligned matches divided by two, is the number of _transpositions_. - transpositions := math.Floor(float64(unaligned / 2)) - - // Jaro distance is the average between these three numbers: - // 1. matches / length of string A - // 2. matches / length of string B - // 3. (matches - transpositions/matches) - // So, all that divided by three is the final result. - return ((matches / la) + (matches / lb) + ((matches - transpositions) / matches)) / 3.0 -} diff --git a/vendor/github.com/xrash/smetrics/soundex.go b/vendor/github.com/xrash/smetrics/soundex.go deleted file mode 100644 index 18c3aef72..000000000 --- a/vendor/github.com/xrash/smetrics/soundex.go +++ /dev/null @@ -1,63 +0,0 @@ -package smetrics - -import ( - "strings" -) - -// The Soundex encoding. It is a phonetic algorithm that considers how the words sound in English. Soundex maps a string to a 4-byte code consisting of the first letter of the original string and three numbers. Strings that sound similar should map to the same code. -func Soundex(s string) string { - b := strings.Builder{} - b.Grow(4) - - p := s[0] - if p <= 'z' && p >= 'a' { - p -= 32 // convert to uppercase - } - b.WriteByte(p) - - n := 0 - for i := 1; i < len(s); i++ { - c := s[i] - - if c <= 'z' && c >= 'a' { - c -= 32 // convert to uppercase - } else if c < 'A' || c > 'Z' { - continue - } - - if c == p { - continue - } - - p = c - - switch c { - case 'B', 'P', 'F', 'V': - c = '1' - case 'C', 'S', 'K', 'G', 'J', 'Q', 'X', 'Z': - c = '2' - case 'D', 'T': - c = '3' - case 'L': - c = '4' - case 'M', 'N': - c = '5' - case 'R': - c = '6' - default: - continue - } - - b.WriteByte(c) - n++ - if n == 3 { - break - } - } - - for i := n; i < 3; i++ { - b.WriteByte('0') - } - - return b.String() -} diff --git a/vendor/github.com/xrash/smetrics/ukkonen.go b/vendor/github.com/xrash/smetrics/ukkonen.go deleted file mode 100644 index 3c5579cd9..000000000 --- a/vendor/github.com/xrash/smetrics/ukkonen.go +++ /dev/null @@ -1,94 +0,0 @@ -package smetrics - -import ( - "math" -) - -// The Ukkonen algorithm for calculating the Levenshtein distance. The algorithm is described in http://www.cs.helsinki.fi/u/ukkonen/InfCont85.PDF, or in docs/InfCont85.PDF. It runs on O(t . min(m, n)) where t is the actual distance between strings a and b. It needs O(min(t, m, n)) space. This function might be preferred over WagnerFischer() for *very* similar strings. But test it out yourself. -// The first two parameters are the two strings to be compared. The last three parameters are the insertion cost, the deletion cost and the substitution cost. These are normally defined as 1, 1 and 2 respectively. -func Ukkonen(a, b string, icost, dcost, scost int) int { - var lowerCost int - - if icost < dcost && icost < scost { - lowerCost = icost - } else if dcost < scost { - lowerCost = dcost - } else { - lowerCost = scost - } - - infinite := math.MaxInt32 / 2 - - var r []int - var k, kprime, p, t int - var ins, del, sub int - - if len(a) > len(b) { - t = (len(a) - len(b) + 1) * lowerCost - } else { - t = (len(b) - len(a) + 1) * lowerCost - } - - for { - if (t / lowerCost) < (len(b) - len(a)) { - continue - } - - // This is the right damn thing since the original Ukkonen - // paper minimizes the expression result only, but the uncommented version - // doesn't need to deal with floats so it's faster. - // p = int(math.Floor(0.5*((float64(t)/float64(lowerCost)) - float64(len(b) - len(a))))) - p = ((t / lowerCost) - (len(b) - len(a))) / 2 - - k = -p - kprime = k - - rowlength := (len(b) - len(a)) + (2 * p) - - r = make([]int, rowlength+2) - - for i := 0; i < rowlength+2; i++ { - r[i] = infinite - } - - for i := 0; i <= len(a); i++ { - for j := 0; j <= rowlength; j++ { - if i == j+k && i == 0 { - r[j] = 0 - } else { - if j-1 < 0 { - ins = infinite - } else { - ins = r[j-1] + icost - } - - del = r[j+1] + dcost - sub = r[j] + scost - - if i-1 < 0 || i-1 >= len(a) || j+k-1 >= len(b) || j+k-1 < 0 { - sub = infinite - } else if a[i-1] == b[j+k-1] { - sub = r[j] - } - - if ins < del && ins < sub { - r[j] = ins - } else if del < sub { - r[j] = del - } else { - r[j] = sub - } - } - } - k++ - } - - if r[(len(b)-len(a))+(2*p)+kprime] <= t { - break - } else { - t *= 2 - } - } - - return r[(len(b)-len(a))+(2*p)+kprime] -} diff --git a/vendor/github.com/xrash/smetrics/wagner-fischer.go b/vendor/github.com/xrash/smetrics/wagner-fischer.go deleted file mode 100644 index 9883aea04..000000000 --- a/vendor/github.com/xrash/smetrics/wagner-fischer.go +++ /dev/null @@ -1,48 +0,0 @@ -package smetrics - -// The Wagner-Fischer algorithm for calculating the Levenshtein distance. -// The first two parameters are the two strings to be compared. The last three parameters are the insertion cost, the deletion cost and the substitution cost. These are normally defined as 1, 1 and 2 respectively. -func WagnerFischer(a, b string, icost, dcost, scost int) int { - - // Allocate both rows. - row1 := make([]int, len(b)+1) - row2 := make([]int, len(b)+1) - var tmp []int - - // Initialize the first row. - for i := 1; i <= len(b); i++ { - row1[i] = i * icost - } - - // For each row... - for i := 1; i <= len(a); i++ { - row2[0] = i * dcost - - // For each column... - for j := 1; j <= len(b); j++ { - if a[i-1] == b[j-1] { - row2[j] = row1[j-1] - } else { - ins := row2[j-1] + icost - del := row1[j] + dcost - sub := row1[j-1] + scost - - if ins < del && ins < sub { - row2[j] = ins - } else if del < sub { - row2[j] = del - } else { - row2[j] = sub - } - } - } - - // Swap the rows at the end of each row. - tmp = row1 - row1 = row2 - row2 = tmp - } - - // Because we swapped the rows, the final result is in row1 instead of row2. - return row1[len(row1)-1] -} diff --git a/vendor/golang.org/x/mod/LICENSE b/vendor/golang.org/x/mod/LICENSE index 6a66aea5e..2a7cf70da 100644 --- a/vendor/golang.org/x/mod/LICENSE +++ b/vendor/golang.org/x/mod/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. +Copyright 2009 The Go Authors. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -10,7 +10,7 @@ notice, this list of conditions and the following disclaimer. copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - * Neither the name of Google Inc. nor the names of its + * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. diff --git a/vendor/golang.org/x/mod/semver/semver.go b/vendor/golang.org/x/mod/semver/semver.go index 9a2dfd33a..628f8fd68 100644 --- a/vendor/golang.org/x/mod/semver/semver.go +++ b/vendor/golang.org/x/mod/semver/semver.go @@ -22,7 +22,10 @@ // as shorthands for vMAJOR.0.0 and vMAJOR.MINOR.0. package semver -import "sort" +import ( + "slices" + "strings" +) // parsed returns the parsed form of a semantic version string. type parsed struct { @@ -154,19 +157,22 @@ func Max(v, w string) string { // ByVersion implements [sort.Interface] for sorting semantic version strings. type ByVersion []string -func (vs ByVersion) Len() int { return len(vs) } -func (vs ByVersion) Swap(i, j int) { vs[i], vs[j] = vs[j], vs[i] } -func (vs ByVersion) Less(i, j int) bool { - cmp := Compare(vs[i], vs[j]) - if cmp != 0 { - return cmp < 0 - } - return vs[i] < vs[j] -} +func (vs ByVersion) Len() int { return len(vs) } +func (vs ByVersion) Swap(i, j int) { vs[i], vs[j] = vs[j], vs[i] } +func (vs ByVersion) Less(i, j int) bool { return compareVersion(vs[i], vs[j]) < 0 } -// Sort sorts a list of semantic version strings using [ByVersion]. +// Sort sorts a list of semantic version strings using [Compare] and falls back +// to use [strings.Compare] if both versions are considered equal. func Sort(list []string) { - sort.Sort(ByVersion(list)) + slices.SortFunc(list, compareVersion) +} + +func compareVersion(a, b string) int { + cmp := Compare(a, b) + if cmp != 0 { + return cmp + } + return strings.Compare(a, b) } func parse(v string) (p parsed, ok bool) { diff --git a/vendor/golang.org/x/sys/LICENSE b/vendor/golang.org/x/sys/LICENSE index 6a66aea5e..2a7cf70da 100644 --- a/vendor/golang.org/x/sys/LICENSE +++ b/vendor/golang.org/x/sys/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. +Copyright 2009 The Go Authors. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -10,7 +10,7 @@ notice, this list of conditions and the following disclaimer. copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - * Neither the name of Google Inc. nor the names of its + * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. diff --git a/vendor/golang.org/x/sys/unix/README.md b/vendor/golang.org/x/sys/unix/README.md index 7d3c060e1..6e08a76a7 100644 --- a/vendor/golang.org/x/sys/unix/README.md +++ b/vendor/golang.org/x/sys/unix/README.md @@ -156,7 +156,7 @@ from the generated architecture-specific files listed below, and merge these into a common file for each OS. The merge is performed in the following steps: -1. Construct the set of common code that is idential in all architecture-specific files. +1. Construct the set of common code that is identical in all architecture-specific files. 2. Write this common code to the merged file. 3. Remove the common code from all architecture-specific files. diff --git a/vendor/golang.org/x/sys/unix/auxv.go b/vendor/golang.org/x/sys/unix/auxv.go new file mode 100644 index 000000000..37a82528f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/auxv.go @@ -0,0 +1,36 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build go1.21 && (aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos) + +package unix + +import ( + "syscall" + "unsafe" +) + +//go:linkname runtime_getAuxv runtime.getAuxv +func runtime_getAuxv() []uintptr + +// Auxv returns the ELF auxiliary vector as a sequence of key/value pairs. +// The returned slice is always a fresh copy, owned by the caller. +// It returns an error on non-ELF platforms, or if the auxiliary vector cannot be accessed, +// which happens in some locked-down environments and build modes. +func Auxv() ([][2]uintptr, error) { + vec := runtime_getAuxv() + vecLen := len(vec) + + if vecLen == 0 { + return nil, syscall.ENOENT + } + + if vecLen%2 != 0 { + return nil, syscall.EINVAL + } + + result := make([]uintptr, vecLen) + copy(result, vec) + return unsafe.Slice((*[2]uintptr)(unsafe.Pointer(&result[0])), vecLen/2), nil +} diff --git a/vendor/golang.org/x/sys/unix/auxv_unsupported.go b/vendor/golang.org/x/sys/unix/auxv_unsupported.go new file mode 100644 index 000000000..1200487f2 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/auxv_unsupported.go @@ -0,0 +1,13 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !go1.21 && (aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos) + +package unix + +import "syscall" + +func Auxv() ([][2]uintptr, error) { + return nil, syscall.ENOTSUP +} diff --git a/vendor/golang.org/x/sys/unix/ioctl_linux.go b/vendor/golang.org/x/sys/unix/ioctl_linux.go index dbe680eab..7ca4fa12a 100644 --- a/vendor/golang.org/x/sys/unix/ioctl_linux.go +++ b/vendor/golang.org/x/sys/unix/ioctl_linux.go @@ -58,6 +58,102 @@ func IoctlGetEthtoolDrvinfo(fd int, ifname string) (*EthtoolDrvinfo, error) { return &value, err } +// IoctlGetEthtoolTsInfo fetches ethtool timestamping and PHC +// association for the network device specified by ifname. +func IoctlGetEthtoolTsInfo(fd int, ifname string) (*EthtoolTsInfo, error) { + ifr, err := NewIfreq(ifname) + if err != nil { + return nil, err + } + + value := EthtoolTsInfo{Cmd: ETHTOOL_GET_TS_INFO} + ifrd := ifr.withData(unsafe.Pointer(&value)) + + err = ioctlIfreqData(fd, SIOCETHTOOL, &ifrd) + return &value, err +} + +// IoctlGetHwTstamp retrieves the hardware timestamping configuration +// for the network device specified by ifname. +func IoctlGetHwTstamp(fd int, ifname string) (*HwTstampConfig, error) { + ifr, err := NewIfreq(ifname) + if err != nil { + return nil, err + } + + value := HwTstampConfig{} + ifrd := ifr.withData(unsafe.Pointer(&value)) + + err = ioctlIfreqData(fd, SIOCGHWTSTAMP, &ifrd) + return &value, err +} + +// IoctlSetHwTstamp updates the hardware timestamping configuration for +// the network device specified by ifname. +func IoctlSetHwTstamp(fd int, ifname string, cfg *HwTstampConfig) error { + ifr, err := NewIfreq(ifname) + if err != nil { + return err + } + ifrd := ifr.withData(unsafe.Pointer(cfg)) + return ioctlIfreqData(fd, SIOCSHWTSTAMP, &ifrd) +} + +// FdToClockID derives the clock ID from the file descriptor number +// - see clock_gettime(3), FD_TO_CLOCKID macros. The resulting ID is +// suitable for system calls like ClockGettime. +func FdToClockID(fd int) int32 { return int32((int(^fd) << 3) | 3) } + +// IoctlPtpClockGetcaps returns the description of a given PTP device. +func IoctlPtpClockGetcaps(fd int) (*PtpClockCaps, error) { + var value PtpClockCaps + err := ioctlPtr(fd, PTP_CLOCK_GETCAPS2, unsafe.Pointer(&value)) + return &value, err +} + +// IoctlPtpSysOffsetPrecise returns a description of the clock +// offset compared to the system clock. +func IoctlPtpSysOffsetPrecise(fd int) (*PtpSysOffsetPrecise, error) { + var value PtpSysOffsetPrecise + err := ioctlPtr(fd, PTP_SYS_OFFSET_PRECISE2, unsafe.Pointer(&value)) + return &value, err +} + +// IoctlPtpSysOffsetExtended returns an extended description of the +// clock offset compared to the system clock. The samples parameter +// specifies the desired number of measurements. +func IoctlPtpSysOffsetExtended(fd int, samples uint) (*PtpSysOffsetExtended, error) { + value := PtpSysOffsetExtended{Samples: uint32(samples)} + err := ioctlPtr(fd, PTP_SYS_OFFSET_EXTENDED2, unsafe.Pointer(&value)) + return &value, err +} + +// IoctlPtpPinGetfunc returns the configuration of the specified +// I/O pin on given PTP device. +func IoctlPtpPinGetfunc(fd int, index uint) (*PtpPinDesc, error) { + value := PtpPinDesc{Index: uint32(index)} + err := ioctlPtr(fd, PTP_PIN_GETFUNC2, unsafe.Pointer(&value)) + return &value, err +} + +// IoctlPtpPinSetfunc updates configuration of the specified PTP +// I/O pin. +func IoctlPtpPinSetfunc(fd int, pd *PtpPinDesc) error { + return ioctlPtr(fd, PTP_PIN_SETFUNC2, unsafe.Pointer(pd)) +} + +// IoctlPtpPeroutRequest configures the periodic output mode of the +// PTP I/O pins. +func IoctlPtpPeroutRequest(fd int, r *PtpPeroutRequest) error { + return ioctlPtr(fd, PTP_PEROUT_REQUEST2, unsafe.Pointer(r)) +} + +// IoctlPtpExttsRequest configures the external timestamping mode +// of the PTP I/O pins. +func IoctlPtpExttsRequest(fd int, r *PtpExttsRequest) error { + return ioctlPtr(fd, PTP_EXTTS_REQUEST2, unsafe.Pointer(r)) +} + // IoctlGetWatchdogInfo fetches information about a watchdog device from the // Linux watchdog API. For more information, see: // https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html. diff --git a/vendor/golang.org/x/sys/unix/mkerrors.sh b/vendor/golang.org/x/sys/unix/mkerrors.sh index 4ed2e488b..6ab02b6c3 100644 --- a/vendor/golang.org/x/sys/unix/mkerrors.sh +++ b/vendor/golang.org/x/sys/unix/mkerrors.sh @@ -58,6 +58,7 @@ includes_Darwin=' #define _DARWIN_USE_64_BIT_INODE #define __APPLE_USE_RFC_3542 #include <stdint.h> +#include <sys/stdio.h> #include <sys/attr.h> #include <sys/clonefile.h> #include <sys/kern_control.h> @@ -157,6 +158,16 @@ includes_Linux=' #endif #define _GNU_SOURCE +// See the description in unix/linux/types.go +#if defined(__ARM_EABI__) || \ + (defined(__mips__) && (_MIPS_SIM == _ABIO32)) || \ + (defined(__powerpc__) && (!defined(__powerpc64__))) +# ifdef _TIME_BITS +# undef _TIME_BITS +# endif +# define _TIME_BITS 32 +#endif + // <sys/ioctl.h> is broken on powerpc64, as it fails to include definitions of // these structures. We just include them copied from <bits/termios.h>. #if defined(__powerpc__) @@ -255,6 +266,7 @@ struct ltchars { #include <linux/nsfs.h> #include <linux/perf_event.h> #include <linux/pps.h> +#include <linux/ptp_clock.h> #include <linux/ptrace.h> #include <linux/random.h> #include <linux/reboot.h> @@ -526,6 +538,7 @@ ccflags="$@" $2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|TCP|MCAST|EVFILT|NOTE|SHUT|PROT|MAP|MREMAP|MFD|T?PACKET|MSG|SCM|MCL|DT|MADV|PR|LOCAL|TCPOPT|UDP)_/ || $2 ~ /^NFC_(GENL|PROTO|COMM|RF|SE|DIRECTION|LLCP|SOCKPROTO)_/ || $2 ~ /^NFC_.*_(MAX)?SIZE$/ || + $2 ~ /^PTP_/ || $2 ~ /^RAW_PAYLOAD_/ || $2 ~ /^[US]F_/ || $2 ~ /^TP_STATUS_/ || @@ -551,6 +564,7 @@ ccflags="$@" $2 !~ /^RTC_VL_(ACCURACY|BACKUP|DATA)/ && $2 ~ /^(NETLINK|NLM|NLMSG|NLA|IFA|IFAN|RT|RTC|RTCF|RTN|RTPROT|RTNH|ARPHRD|ETH_P|NETNSA)_/ || $2 ~ /^SOCK_|SK_DIAG_|SKNLGRP_$/ || + $2 ~ /^(CONNECT|SAE)_/ || $2 ~ /^FIORDCHK$/ || $2 ~ /^SIOC/ || $2 ~ /^TIOC/ || @@ -654,7 +668,7 @@ errors=$( signals=$( echo '#include <signal.h>' | $CC -x c - -E -dM $ccflags | awk '$1=="#define" && $2 ~ /^SIG[A-Z0-9]+$/ { print $2 }' | - grep -v 'SIGSTKSIZE\|SIGSTKSZ\|SIGRT\|SIGMAX64' | + grep -E -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT|SIGMAX64)' | sort ) @@ -664,7 +678,7 @@ echo '#include <errno.h>' | $CC -x c - -E -dM $ccflags | sort >_error.grep echo '#include <signal.h>' | $CC -x c - -E -dM $ccflags | awk '$1=="#define" && $2 ~ /^SIG[A-Z0-9]+$/ { print "^\t" $2 "[ \t]*=" }' | - grep -v 'SIGSTKSIZE\|SIGSTKSZ\|SIGRT\|SIGMAX64' | + grep -E -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT|SIGMAX64)' | sort >_signal.grep echo '// mkerrors.sh' "$@" diff --git a/vendor/golang.org/x/sys/unix/syscall_aix.go b/vendor/golang.org/x/sys/unix/syscall_aix.go index 67ce6cef2..6f15ba1ea 100644 --- a/vendor/golang.org/x/sys/unix/syscall_aix.go +++ b/vendor/golang.org/x/sys/unix/syscall_aix.go @@ -360,7 +360,7 @@ func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, var status _C_int var r Pid_t err = ERESTART - // AIX wait4 may return with ERESTART errno, while the processus is still + // AIX wait4 may return with ERESTART errno, while the process is still // active. for err == ERESTART { r, err = wait4(Pid_t(pid), &status, options, rusage) diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.go b/vendor/golang.org/x/sys/unix/syscall_darwin.go index 4cc7b0059..798f61ad3 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin.go @@ -402,6 +402,18 @@ func IoctlSetIfreqMTU(fd int, ifreq *IfreqMTU) error { return ioctlPtr(fd, SIOCSIFMTU, unsafe.Pointer(ifreq)) } +//sys renamexNp(from string, to string, flag uint32) (err error) + +func RenamexNp(from string, to string, flag uint32) (err error) { + return renamexNp(from, to, flag) +} + +//sys renameatxNp(fromfd int, from string, tofd int, to string, flag uint32) (err error) + +func RenameatxNp(fromfd int, from string, tofd int, to string, flag uint32) (err error) { + return renameatxNp(fromfd, from, tofd, to, flag) +} + //sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS_SYSCTL func Uname(uname *Utsname) error { @@ -554,6 +566,186 @@ func PthreadFchdir(fd int) (err error) { return pthread_fchdir_np(fd) } +// Connectx calls connectx(2) to initiate a connection on a socket. +// +// srcIf, srcAddr, and dstAddr are filled into a [SaEndpoints] struct and passed as the endpoints argument. +// +// - srcIf is the optional source interface index. 0 means unspecified. +// - srcAddr is the optional source address. nil means unspecified. +// - dstAddr is the destination address. +// +// On success, Connectx returns the number of bytes enqueued for transmission. +func Connectx(fd int, srcIf uint32, srcAddr, dstAddr Sockaddr, associd SaeAssocID, flags uint32, iov []Iovec, connid *SaeConnID) (n uintptr, err error) { + endpoints := SaEndpoints{ + Srcif: srcIf, + } + + if srcAddr != nil { + addrp, addrlen, err := srcAddr.sockaddr() + if err != nil { + return 0, err + } + endpoints.Srcaddr = (*RawSockaddr)(addrp) + endpoints.Srcaddrlen = uint32(addrlen) + } + + if dstAddr != nil { + addrp, addrlen, err := dstAddr.sockaddr() + if err != nil { + return 0, err + } + endpoints.Dstaddr = (*RawSockaddr)(addrp) + endpoints.Dstaddrlen = uint32(addrlen) + } + + err = connectx(fd, &endpoints, associd, flags, iov, &n, connid) + return +} + +// sys connectx(fd int, endpoints *SaEndpoints, associd SaeAssocID, flags uint32, iov []Iovec, n *uintptr, connid *SaeConnID) (err error) +const minIovec = 8 + +func Readv(fd int, iovs [][]byte) (n int, err error) { + if !darwinKernelVersionMin(11, 0, 0) { + return 0, ENOSYS + } + + iovecs := make([]Iovec, 0, minIovec) + iovecs = appendBytes(iovecs, iovs) + n, err = readv(fd, iovecs) + readvRacedetect(iovecs, n, err) + return n, err +} + +func Preadv(fd int, iovs [][]byte, offset int64) (n int, err error) { + if !darwinKernelVersionMin(11, 0, 0) { + return 0, ENOSYS + } + iovecs := make([]Iovec, 0, minIovec) + iovecs = appendBytes(iovecs, iovs) + n, err = preadv(fd, iovecs, offset) + readvRacedetect(iovecs, n, err) + return n, err +} + +func Writev(fd int, iovs [][]byte) (n int, err error) { + if !darwinKernelVersionMin(11, 0, 0) { + return 0, ENOSYS + } + + iovecs := make([]Iovec, 0, minIovec) + iovecs = appendBytes(iovecs, iovs) + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + n, err = writev(fd, iovecs) + writevRacedetect(iovecs, n) + return n, err +} + +func Pwritev(fd int, iovs [][]byte, offset int64) (n int, err error) { + if !darwinKernelVersionMin(11, 0, 0) { + return 0, ENOSYS + } + + iovecs := make([]Iovec, 0, minIovec) + iovecs = appendBytes(iovecs, iovs) + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + n, err = pwritev(fd, iovecs, offset) + writevRacedetect(iovecs, n) + return n, err +} + +func appendBytes(vecs []Iovec, bs [][]byte) []Iovec { + for _, b := range bs { + var v Iovec + v.SetLen(len(b)) + if len(b) > 0 { + v.Base = &b[0] + } else { + v.Base = (*byte)(unsafe.Pointer(&_zero)) + } + vecs = append(vecs, v) + } + return vecs +} + +func writevRacedetect(iovecs []Iovec, n int) { + if !raceenabled { + return + } + for i := 0; n > 0 && i < len(iovecs); i++ { + m := int(iovecs[i].Len) + if m > n { + m = n + } + n -= m + if m > 0 { + raceReadRange(unsafe.Pointer(iovecs[i].Base), m) + } + } +} + +func readvRacedetect(iovecs []Iovec, n int, err error) { + if !raceenabled { + return + } + for i := 0; n > 0 && i < len(iovecs); i++ { + m := int(iovecs[i].Len) + if m > n { + m = n + } + n -= m + if m > 0 { + raceWriteRange(unsafe.Pointer(iovecs[i].Base), m) + } + } + if err == nil { + raceAcquire(unsafe.Pointer(&ioSync)) + } +} + +func darwinMajorMinPatch() (maj, min, patch int, err error) { + var un Utsname + err = Uname(&un) + if err != nil { + return + } + + var mmp [3]int + c := 0 +Loop: + for _, b := range un.Release[:] { + switch { + case b >= '0' && b <= '9': + mmp[c] = 10*mmp[c] + int(b-'0') + case b == '.': + c++ + if c > 2 { + return 0, 0, 0, ENOTSUP + } + case b == 0: + break Loop + default: + return 0, 0, 0, ENOTSUP + } + } + if c != 2 { + return 0, 0, 0, ENOTSUP + } + return mmp[0], mmp[1], mmp[2], nil +} + +func darwinKernelVersionMin(maj, min, patch int) bool { + actualMaj, actualMin, actualPatch, err := darwinMajorMinPatch() + if err != nil { + return false + } + return actualMaj > maj || actualMaj == maj && (actualMin > min || actualMin == min && actualPatch >= patch) +} + //sys sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) //sys shmat(id int, addr uintptr, flag int) (ret uintptr, err error) @@ -656,3 +848,7 @@ func PthreadFchdir(fd int) (err error) { //sys write(fd int, p []byte) (n int, err error) //sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) //sys munmap(addr uintptr, length uintptr) (err error) +//sys readv(fd int, iovecs []Iovec) (n int, err error) +//sys preadv(fd int, iovecs []Iovec, offset int64) (n int, err error) +//sys writev(fd int, iovecs []Iovec) (n int, err error) +//sys pwritev(fd int, iovecs []Iovec, offset int64) (n int, err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go index 97cb916f2..be8c00207 100644 --- a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go +++ b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go @@ -246,6 +246,18 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e return sendfile(outfd, infd, offset, count) } +func Dup3(oldfd, newfd, flags int) error { + if oldfd == newfd || flags&^O_CLOEXEC != 0 { + return EINVAL + } + how := F_DUP2FD + if flags&O_CLOEXEC != 0 { + how = F_DUP2FD_CLOEXEC + } + _, err := fcntl(oldfd, how, newfd) + return err +} + /* * Exposed directly */ diff --git a/vendor/golang.org/x/sys/unix/syscall_hurd.go b/vendor/golang.org/x/sys/unix/syscall_hurd.go index ba46651f8..a6a2d2fc2 100644 --- a/vendor/golang.org/x/sys/unix/syscall_hurd.go +++ b/vendor/golang.org/x/sys/unix/syscall_hurd.go @@ -11,6 +11,7 @@ package unix int ioctl(int, unsigned long int, uintptr_t); */ import "C" +import "unsafe" func ioctl(fd int, req uint, arg uintptr) (err error) { r0, er := C.ioctl(C.int(fd), C.ulong(req), C.uintptr_t(arg)) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux.go b/vendor/golang.org/x/sys/unix/syscall_linux.go index 5682e2628..4958a6570 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux.go @@ -13,6 +13,7 @@ package unix import ( "encoding/binary" + "slices" "strconv" "syscall" "time" @@ -417,7 +418,7 @@ func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) { return nil, 0, EINVAL } sa.raw.Family = AF_UNIX - for i := 0; i < n; i++ { + for i := range n { sa.raw.Path[i] = int8(name[i]) } // length is family (uint16), name, NUL. @@ -507,7 +508,7 @@ func (sa *SockaddrL2) sockaddr() (unsafe.Pointer, _Socklen, error) { psm := (*[2]byte)(unsafe.Pointer(&sa.raw.Psm)) psm[0] = byte(sa.PSM) psm[1] = byte(sa.PSM >> 8) - for i := 0; i < len(sa.Addr); i++ { + for i := range len(sa.Addr) { sa.raw.Bdaddr[i] = sa.Addr[len(sa.Addr)-1-i] } cid := (*[2]byte)(unsafe.Pointer(&sa.raw.Cid)) @@ -589,11 +590,11 @@ func (sa *SockaddrCAN) sockaddr() (unsafe.Pointer, _Socklen, error) { sa.raw.Family = AF_CAN sa.raw.Ifindex = int32(sa.Ifindex) rx := (*[4]byte)(unsafe.Pointer(&sa.RxID)) - for i := 0; i < 4; i++ { + for i := range 4 { sa.raw.Addr[i] = rx[i] } tx := (*[4]byte)(unsafe.Pointer(&sa.TxID)) - for i := 0; i < 4; i++ { + for i := range 4 { sa.raw.Addr[i+4] = tx[i] } return unsafe.Pointer(&sa.raw), SizeofSockaddrCAN, nil @@ -618,11 +619,11 @@ func (sa *SockaddrCANJ1939) sockaddr() (unsafe.Pointer, _Socklen, error) { sa.raw.Family = AF_CAN sa.raw.Ifindex = int32(sa.Ifindex) n := (*[8]byte)(unsafe.Pointer(&sa.Name)) - for i := 0; i < 8; i++ { + for i := range 8 { sa.raw.Addr[i] = n[i] } p := (*[4]byte)(unsafe.Pointer(&sa.PGN)) - for i := 0; i < 4; i++ { + for i := range 4 { sa.raw.Addr[i+8] = p[i] } sa.raw.Addr[12] = sa.Addr @@ -911,7 +912,7 @@ func (sa *SockaddrIUCV) sockaddr() (unsafe.Pointer, _Socklen, error) { // These are EBCDIC encoded by the kernel, but we still need to pad them // with blanks. Initializing with blanks allows the caller to feed in either // a padded or an unpadded string. - for i := 0; i < 8; i++ { + for i := range 8 { sa.raw.Nodeid[i] = ' ' sa.raw.User_id[i] = ' ' sa.raw.Name[i] = ' ' @@ -1148,7 +1149,7 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { var user [8]byte var name [8]byte - for i := 0; i < 8; i++ { + for i := range 8 { user[i] = byte(pp.User_id[i]) name[i] = byte(pp.Name[i]) } @@ -1173,11 +1174,11 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { Ifindex: int(pp.Ifindex), } name := (*[8]byte)(unsafe.Pointer(&sa.Name)) - for i := 0; i < 8; i++ { + for i := range 8 { name[i] = pp.Addr[i] } pgn := (*[4]byte)(unsafe.Pointer(&sa.PGN)) - for i := 0; i < 4; i++ { + for i := range 4 { pgn[i] = pp.Addr[i+8] } addr := (*[1]byte)(unsafe.Pointer(&sa.Addr)) @@ -1188,11 +1189,11 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { Ifindex: int(pp.Ifindex), } rx := (*[4]byte)(unsafe.Pointer(&sa.RxID)) - for i := 0; i < 4; i++ { + for i := range 4 { rx[i] = pp.Addr[i] } tx := (*[4]byte)(unsafe.Pointer(&sa.TxID)) - for i := 0; i < 4; i++ { + for i := range 4 { tx[i] = pp.Addr[i+4] } return sa, nil @@ -1295,6 +1296,48 @@ func GetsockoptTCPInfo(fd, level, opt int) (*TCPInfo, error) { return &value, err } +// GetsockoptTCPCCVegasInfo returns algorithm specific congestion control information for a socket using the "vegas" +// algorithm. +// +// The socket's congestion control algorighm can be retrieved via [GetsockoptString] with the [TCP_CONGESTION] option: +// +// algo, err := unix.GetsockoptString(fd, unix.IPPROTO_TCP, unix.TCP_CONGESTION) +func GetsockoptTCPCCVegasInfo(fd, level, opt int) (*TCPVegasInfo, error) { + var value [SizeofTCPCCInfo / 4]uint32 // ensure proper alignment + vallen := _Socklen(SizeofTCPCCInfo) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen) + out := (*TCPVegasInfo)(unsafe.Pointer(&value[0])) + return out, err +} + +// GetsockoptTCPCCDCTCPInfo returns algorithm specific congestion control information for a socket using the "dctp" +// algorithm. +// +// The socket's congestion control algorighm can be retrieved via [GetsockoptString] with the [TCP_CONGESTION] option: +// +// algo, err := unix.GetsockoptString(fd, unix.IPPROTO_TCP, unix.TCP_CONGESTION) +func GetsockoptTCPCCDCTCPInfo(fd, level, opt int) (*TCPDCTCPInfo, error) { + var value [SizeofTCPCCInfo / 4]uint32 // ensure proper alignment + vallen := _Socklen(SizeofTCPCCInfo) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen) + out := (*TCPDCTCPInfo)(unsafe.Pointer(&value[0])) + return out, err +} + +// GetsockoptTCPCCBBRInfo returns algorithm specific congestion control information for a socket using the "bbr" +// algorithm. +// +// The socket's congestion control algorighm can be retrieved via [GetsockoptString] with the [TCP_CONGESTION] option: +// +// algo, err := unix.GetsockoptString(fd, unix.IPPROTO_TCP, unix.TCP_CONGESTION) +func GetsockoptTCPCCBBRInfo(fd, level, opt int) (*TCPBBRInfo, error) { + var value [SizeofTCPCCInfo / 4]uint32 // ensure proper alignment + vallen := _Socklen(SizeofTCPCCInfo) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen) + out := (*TCPBBRInfo)(unsafe.Pointer(&value[0])) + return out, err +} + // GetsockoptString returns the string value of the socket option opt for the // socket associated with fd at the given socket level. func GetsockoptString(fd, level, opt int) (string, error) { @@ -1818,6 +1861,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys ClockAdjtime(clockid int32, buf *Timex) (state int, err error) //sys ClockGetres(clockid int32, res *Timespec) (err error) //sys ClockGettime(clockid int32, time *Timespec) (err error) +//sys ClockSettime(clockid int32, time *Timespec) (err error) //sys ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) //sys Close(fd int) (err error) //sys CloseRange(first uint, last uint, flags uint) (err error) @@ -1959,7 +2003,26 @@ func Getpgrp() (pid int) { //sysnb Getpid() (pid int) //sysnb Getppid() (ppid int) //sys Getpriority(which int, who int) (prio int, err error) -//sys Getrandom(buf []byte, flags int) (n int, err error) + +func Getrandom(buf []byte, flags int) (n int, err error) { + vdsoRet, supported := vgetrandom(buf, uint32(flags)) + if supported { + if vdsoRet < 0 { + return 0, errnoErr(syscall.Errno(-vdsoRet)) + } + return vdsoRet, nil + } + var p *byte + if len(buf) > 0 { + p = &buf[0] + } + r, _, e := Syscall(SYS_GETRANDOM, uintptr(unsafe.Pointer(p)), uintptr(len(buf)), uintptr(flags)) + if e != 0 { + return 0, errnoErr(e) + } + return int(r), nil +} + //sysnb Getrusage(who int, rusage *Rusage) (err error) //sysnb Getsid(pid int) (sid int, err error) //sysnb Gettid() (tid int) @@ -2154,10 +2217,7 @@ func readvRacedetect(iovecs []Iovec, n int, err error) { return } for i := 0; n > 0 && i < len(iovecs); i++ { - m := int(iovecs[i].Len) - if m > n { - m = n - } + m := min(int(iovecs[i].Len), n) n -= m if m > 0 { raceWriteRange(unsafe.Pointer(iovecs[i].Base), m) @@ -2208,10 +2268,7 @@ func writevRacedetect(iovecs []Iovec, n int) { return } for i := 0; n > 0 && i < len(iovecs); i++ { - m := int(iovecs[i].Len) - if m > n { - m = n - } + m := min(int(iovecs[i].Len), n) n -= m if m > 0 { raceReadRange(unsafe.Pointer(iovecs[i].Base), m) @@ -2258,12 +2315,7 @@ func isGroupMember(gid int) bool { return false } - for _, g := range groups { - if g == gid { - return true - } - } - return false + return slices.Contains(groups, gid) } func isCapDacOverrideSet() bool { @@ -2592,3 +2644,4 @@ func SchedGetAttr(pid int, flags uint) (*SchedAttr, error) { } //sys Cachestat(fd uint, crange *CachestatRange, cstat *Cachestat_t, flags uint) (err error) +//sys Mseal(b []byte, flags uint) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go index cf2ee6c75..745e5c7e6 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go @@ -182,3 +182,5 @@ func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error } return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) } + +const SYS_FSTATAT = SYS_NEWFSTATAT diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go b/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go index 3d0e98451..dd2262a40 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go @@ -214,3 +214,5 @@ func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error } return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) } + +const SYS_FSTATAT = SYS_NEWFSTATAT diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go index 6f5a28894..8cf3670bd 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go @@ -187,3 +187,5 @@ func RISCVHWProbe(pairs []RISCVHWProbePairs, set *CPUSet, flags uint) (err error } return riscvHWProbe(pairs, setSize, set, flags) } + +const SYS_FSTATAT = SYS_NEWFSTATAT diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd.go b/vendor/golang.org/x/sys/unix/syscall_openbsd.go index b25343c71..b86ded549 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd.go @@ -293,6 +293,7 @@ func Uname(uname *Utsname) error { //sys Mkfifoat(dirfd int, path string, mode uint32) (err error) //sys Mknod(path string, mode uint32, dev int) (err error) //sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) +//sys Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) //sys Nanosleep(time *Timespec, leftover *Timespec) (err error) //sys Open(path string, mode int, perm uint32) (fd int, err error) //sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris.go b/vendor/golang.org/x/sys/unix/syscall_solaris.go index 21974af06..abc395547 100644 --- a/vendor/golang.org/x/sys/unix/syscall_solaris.go +++ b/vendor/golang.org/x/sys/unix/syscall_solaris.go @@ -1102,3 +1102,90 @@ func (s *Strioctl) SetInt(i int) { func IoctlSetStrioctlRetInt(fd int, req int, s *Strioctl) (int, error) { return ioctlPtrRet(fd, req, unsafe.Pointer(s)) } + +// Ucred Helpers +// See ucred(3c) and getpeerucred(3c) + +//sys getpeerucred(fd uintptr, ucred *uintptr) (err error) +//sys ucredFree(ucred uintptr) = ucred_free +//sys ucredGet(pid int) (ucred uintptr, err error) = ucred_get +//sys ucredGeteuid(ucred uintptr) (uid int) = ucred_geteuid +//sys ucredGetegid(ucred uintptr) (gid int) = ucred_getegid +//sys ucredGetruid(ucred uintptr) (uid int) = ucred_getruid +//sys ucredGetrgid(ucred uintptr) (gid int) = ucred_getrgid +//sys ucredGetsuid(ucred uintptr) (uid int) = ucred_getsuid +//sys ucredGetsgid(ucred uintptr) (gid int) = ucred_getsgid +//sys ucredGetpid(ucred uintptr) (pid int) = ucred_getpid + +// Ucred is an opaque struct that holds user credentials. +type Ucred struct { + ucred uintptr +} + +// We need to ensure that ucredFree is called on the underlying ucred +// when the Ucred is garbage collected. +func ucredFinalizer(u *Ucred) { + ucredFree(u.ucred) +} + +func GetPeerUcred(fd uintptr) (*Ucred, error) { + var ucred uintptr + err := getpeerucred(fd, &ucred) + if err != nil { + return nil, err + } + result := &Ucred{ + ucred: ucred, + } + // set the finalizer on the result so that the ucred will be freed + runtime.SetFinalizer(result, ucredFinalizer) + return result, nil +} + +func UcredGet(pid int) (*Ucred, error) { + ucred, err := ucredGet(pid) + if err != nil { + return nil, err + } + result := &Ucred{ + ucred: ucred, + } + // set the finalizer on the result so that the ucred will be freed + runtime.SetFinalizer(result, ucredFinalizer) + return result, nil +} + +func (u *Ucred) Geteuid() int { + defer runtime.KeepAlive(u) + return ucredGeteuid(u.ucred) +} + +func (u *Ucred) Getruid() int { + defer runtime.KeepAlive(u) + return ucredGetruid(u.ucred) +} + +func (u *Ucred) Getsuid() int { + defer runtime.KeepAlive(u) + return ucredGetsuid(u.ucred) +} + +func (u *Ucred) Getegid() int { + defer runtime.KeepAlive(u) + return ucredGetegid(u.ucred) +} + +func (u *Ucred) Getrgid() int { + defer runtime.KeepAlive(u) + return ucredGetrgid(u.ucred) +} + +func (u *Ucred) Getsgid() int { + defer runtime.KeepAlive(u) + return ucredGetsgid(u.ucred) +} + +func (u *Ucred) Getpid() int { + defer runtime.KeepAlive(u) + return ucredGetpid(u.ucred) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go b/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go index 312ae6ac1..7bf5c04bb 100644 --- a/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go +++ b/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go @@ -768,6 +768,15 @@ func Munmap(b []byte) (err error) { return mapper.Munmap(b) } +func MmapPtr(fd int, offset int64, addr unsafe.Pointer, length uintptr, prot int, flags int) (ret unsafe.Pointer, err error) { + xaddr, err := mapper.mmap(uintptr(addr), length, prot, flags, fd, offset) + return unsafe.Pointer(xaddr), err +} + +func MunmapPtr(addr unsafe.Pointer, length uintptr) (err error) { + return mapper.munmap(uintptr(addr), length) +} + //sys Gethostname(buf []byte) (err error) = SYS___GETHOSTNAME_A //sysnb Getgid() (gid int) //sysnb Getpid() (pid int) @@ -816,10 +825,10 @@ func Lstat(path string, stat *Stat_t) (err error) { // for checking symlinks begins with $VERSION/ $SYSNAME/ $SYSSYMR/ $SYSSYMA/ func isSpecialPath(path []byte) (v bool) { var special = [4][8]byte{ - [8]byte{'V', 'E', 'R', 'S', 'I', 'O', 'N', '/'}, - [8]byte{'S', 'Y', 'S', 'N', 'A', 'M', 'E', '/'}, - [8]byte{'S', 'Y', 'S', 'S', 'Y', 'M', 'R', '/'}, - [8]byte{'S', 'Y', 'S', 'S', 'Y', 'M', 'A', '/'}} + {'V', 'E', 'R', 'S', 'I', 'O', 'N', '/'}, + {'S', 'Y', 'S', 'N', 'A', 'M', 'E', '/'}, + {'S', 'Y', 'S', 'S', 'Y', 'M', 'R', '/'}, + {'S', 'Y', 'S', 'S', 'Y', 'M', 'A', '/'}} var i, j int for i = 0; i < len(special); i++ { @@ -3115,3 +3124,90 @@ func legacy_Mkfifoat(dirfd int, path string, mode uint32) (err error) { //sys Posix_openpt(oflag int) (fd int, err error) = SYS_POSIX_OPENPT //sys Grantpt(fildes int) (rc int, err error) = SYS_GRANTPT //sys Unlockpt(fildes int) (rc int, err error) = SYS_UNLOCKPT + +func fcntlAsIs(fd uintptr, cmd int, arg uintptr) (val int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCNTL<<4, uintptr(fd), uintptr(cmd), arg) + runtime.ExitSyscall() + val = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +func Fcntl(fd uintptr, cmd int, op interface{}) (ret int, err error) { + switch op.(type) { + case *Flock_t: + err = FcntlFlock(fd, cmd, op.(*Flock_t)) + if err != nil { + ret = -1 + } + return + case int: + return FcntlInt(fd, cmd, op.(int)) + case *F_cnvrt: + return fcntlAsIs(fd, cmd, uintptr(unsafe.Pointer(op.(*F_cnvrt)))) + case unsafe.Pointer: + return fcntlAsIs(fd, cmd, uintptr(op.(unsafe.Pointer))) + default: + return -1, EINVAL + } + return +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + // TODO: use LE call instead if the call is implemented + originalOffset, err := Seek(infd, 0, SEEK_CUR) + if err != nil { + return -1, err + } + //start reading data from in_fd + if offset != nil { + _, err := Seek(infd, *offset, SEEK_SET) + if err != nil { + return -1, err + } + } + + buf := make([]byte, count) + readBuf := make([]byte, 0) + var n int = 0 + for i := 0; i < count; i += n { + n, err := Read(infd, buf) + if n == 0 { + if err != nil { + return -1, err + } else { // EOF + break + } + } + readBuf = append(readBuf, buf...) + buf = buf[0:0] + } + + n2, err := Write(outfd, readBuf) + if err != nil { + return -1, err + } + + //When sendfile() returns, this variable will be set to the + // offset of the byte following the last byte that was read. + if offset != nil { + *offset = *offset + int64(n) + // If offset is not NULL, then sendfile() does not modify the file + // offset of in_fd + _, err := Seek(infd, originalOffset, SEEK_SET) + if err != nil { + return -1, err + } + } + return n2, nil +} diff --git a/vendor/golang.org/x/sys/unix/vgetrandom_linux.go b/vendor/golang.org/x/sys/unix/vgetrandom_linux.go new file mode 100644 index 000000000..07ac8e09d --- /dev/null +++ b/vendor/golang.org/x/sys/unix/vgetrandom_linux.go @@ -0,0 +1,13 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && go1.24 + +package unix + +import _ "unsafe" + +//go:linkname vgetrandom runtime.vgetrandom +//go:noescape +func vgetrandom(p []byte, flags uint32) (ret int, supported bool) diff --git a/vendor/golang.org/x/sys/unix/vgetrandom_unsupported.go b/vendor/golang.org/x/sys/unix/vgetrandom_unsupported.go new file mode 100644 index 000000000..297e97bce --- /dev/null +++ b/vendor/golang.org/x/sys/unix/vgetrandom_unsupported.go @@ -0,0 +1,11 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !linux || !go1.24 + +package unix + +func vgetrandom(p []byte, flags uint32) (ret int, supported bool) { + return -1, false +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go index e40fa8524..d73c4652e 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go @@ -237,6 +237,9 @@ const ( CLOCK_UPTIME_RAW_APPROX = 0x9 CLONE_NOFOLLOW = 0x1 CLONE_NOOWNERCOPY = 0x2 + CONNECT_DATA_AUTHENTICATED = 0x4 + CONNECT_DATA_IDEMPOTENT = 0x2 + CONNECT_RESUME_ON_READ_WRITE = 0x1 CR0 = 0x0 CR1 = 0x1000 CR2 = 0x2000 @@ -1169,6 +1172,11 @@ const ( PT_WRITE_D = 0x5 PT_WRITE_I = 0x4 PT_WRITE_U = 0x6 + RENAME_EXCL = 0x4 + RENAME_NOFOLLOW_ANY = 0x10 + RENAME_RESERVED1 = 0x8 + RENAME_SECLUDE = 0x1 + RENAME_SWAP = 0x2 RLIMIT_AS = 0x5 RLIMIT_CORE = 0x4 RLIMIT_CPU = 0x0 @@ -1260,6 +1268,10 @@ const ( RTV_SSTHRESH = 0x20 RUSAGE_CHILDREN = -0x1 RUSAGE_SELF = 0x0 + SAE_ASSOCID_ALL = 0xffffffff + SAE_ASSOCID_ANY = 0x0 + SAE_CONNID_ALL = 0xffffffff + SAE_CONNID_ANY = 0x0 SCM_CREDS = 0x3 SCM_RIGHTS = 0x1 SCM_TIMESTAMP = 0x2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go index bb02aa6c0..4a55a4005 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go @@ -237,6 +237,9 @@ const ( CLOCK_UPTIME_RAW_APPROX = 0x9 CLONE_NOFOLLOW = 0x1 CLONE_NOOWNERCOPY = 0x2 + CONNECT_DATA_AUTHENTICATED = 0x4 + CONNECT_DATA_IDEMPOTENT = 0x2 + CONNECT_RESUME_ON_READ_WRITE = 0x1 CR0 = 0x0 CR1 = 0x1000 CR2 = 0x2000 @@ -1169,6 +1172,11 @@ const ( PT_WRITE_D = 0x5 PT_WRITE_I = 0x4 PT_WRITE_U = 0x6 + RENAME_EXCL = 0x4 + RENAME_NOFOLLOW_ANY = 0x10 + RENAME_RESERVED1 = 0x8 + RENAME_SECLUDE = 0x1 + RENAME_SWAP = 0x2 RLIMIT_AS = 0x5 RLIMIT_CORE = 0x4 RLIMIT_CPU = 0x0 @@ -1260,6 +1268,10 @@ const ( RTV_SSTHRESH = 0x20 RUSAGE_CHILDREN = -0x1 RUSAGE_SELF = 0x0 + SAE_ASSOCID_ALL = 0xffffffff + SAE_ASSOCID_ANY = 0x0 + SAE_CONNID_ALL = 0xffffffff + SAE_CONNID_ANY = 0x0 SCM_CREDS = 0x3 SCM_RIGHTS = 0x1 SCM_TIMESTAMP = 0x2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux.go b/vendor/golang.org/x/sys/unix/zerrors_linux.go index 877a62b47..9e7a6c5a4 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux.go @@ -319,8 +319,12 @@ const ( AUDIT_INTEGRITY_POLICY_RULE = 0x70f AUDIT_INTEGRITY_RULE = 0x70d AUDIT_INTEGRITY_STATUS = 0x70a + AUDIT_INTEGRITY_USERSPACE = 0x710 AUDIT_IPC = 0x517 AUDIT_IPC_SET_PERM = 0x51f + AUDIT_IPE_ACCESS = 0x58c + AUDIT_IPE_CONFIG_CHANGE = 0x58d + AUDIT_IPE_POLICY_LOAD = 0x58e AUDIT_KERNEL = 0x7d0 AUDIT_KERNEL_OTHER = 0x524 AUDIT_KERN_MODULE = 0x532 @@ -457,6 +461,7 @@ const ( B600 = 0x8 B75 = 0x2 B9600 = 0xd + BCACHEFS_SUPER_MAGIC = 0xca451a4e BDEVFS_MAGIC = 0x62646576 BINDERFS_SUPER_MAGIC = 0x6c6f6f70 BINFMTFS_MAGIC = 0x42494e4d @@ -488,12 +493,14 @@ const ( BPF_F_ID = 0x20 BPF_F_NETFILTER_IP_DEFRAG = 0x1 BPF_F_QUERY_EFFECTIVE = 0x1 + BPF_F_REDIRECT_FLAGS = 0x19 BPF_F_REPLACE = 0x4 BPF_F_SLEEPABLE = 0x10 BPF_F_STRICT_ALIGNMENT = 0x1 BPF_F_TEST_REG_INVARIANTS = 0x80 BPF_F_TEST_RND_HI32 = 0x4 BPF_F_TEST_RUN_ON_CPU = 0x1 + BPF_F_TEST_SKB_CHECKSUM_COMPLETE = 0x4 BPF_F_TEST_STATE_FREQ = 0x8 BPF_F_TEST_XDP_LIVE_FRAMES = 0x2 BPF_F_XDP_DEV_BOUND_ONLY = 0x40 @@ -837,9 +844,9 @@ const ( DM_UUID_FLAG = 0x4000 DM_UUID_LEN = 0x81 DM_VERSION = 0xc138fd00 - DM_VERSION_EXTRA = "-ioctl (2023-03-01)" + DM_VERSION_EXTRA = "-ioctl (2025-01-17)" DM_VERSION_MAJOR = 0x4 - DM_VERSION_MINOR = 0x30 + DM_VERSION_MINOR = 0x31 DM_VERSION_PATCHLEVEL = 0x0 DT_BLK = 0x6 DT_CHR = 0x2 @@ -928,12 +935,15 @@ const ( EPOLL_CTL_ADD = 0x1 EPOLL_CTL_DEL = 0x2 EPOLL_CTL_MOD = 0x3 + EPOLL_IOC_TYPE = 0x8a EROFS_SUPER_MAGIC_V1 = 0xe0f5e1e2 ESP_V4_FLOW = 0xa ESP_V6_FLOW = 0xc ETHER_FLOW = 0x12 ETHTOOL_BUSINFO_LEN = 0x20 ETHTOOL_EROMVERS_LEN = 0x20 + ETHTOOL_FAMILY_NAME = "ethtool" + ETHTOOL_FAMILY_VERSION = 0x1 ETHTOOL_FEC_AUTO = 0x2 ETHTOOL_FEC_BASER = 0x10 ETHTOOL_FEC_LLRS = 0x20 @@ -941,9 +951,6 @@ const ( ETHTOOL_FEC_OFF = 0x4 ETHTOOL_FEC_RS = 0x8 ETHTOOL_FLAG_ALL = 0x7 - ETHTOOL_FLAG_COMPACT_BITSETS = 0x1 - ETHTOOL_FLAG_OMIT_REPLY = 0x2 - ETHTOOL_FLAG_STATS = 0x4 ETHTOOL_FLASHDEV = 0x33 ETHTOOL_FLASH_MAX_FILENAME = 0x80 ETHTOOL_FWVERS_LEN = 0x20 @@ -1166,6 +1173,7 @@ const ( EXTA = 0xe EXTB = 0xf F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_ALLOCATE_RANGE = 0x0 FALLOC_FL_COLLAPSE_RANGE = 0x8 FALLOC_FL_INSERT_RANGE = 0x20 FALLOC_FL_KEEP_SIZE = 0x1 @@ -1198,6 +1206,9 @@ const ( FAN_DENY = 0x2 FAN_ENABLE_AUDIT = 0x40 FAN_EPIDFD = -0x2 + FAN_ERRNO_BITS = 0x8 + FAN_ERRNO_MASK = 0xff + FAN_ERRNO_SHIFT = 0x18 FAN_EVENT_INFO_TYPE_DFID = 0x3 FAN_EVENT_INFO_TYPE_DFID_NAME = 0x2 FAN_EVENT_INFO_TYPE_ERROR = 0x5 @@ -1205,6 +1216,7 @@ const ( FAN_EVENT_INFO_TYPE_NEW_DFID_NAME = 0xc FAN_EVENT_INFO_TYPE_OLD_DFID_NAME = 0xa FAN_EVENT_INFO_TYPE_PIDFD = 0x4 + FAN_EVENT_INFO_TYPE_RANGE = 0x6 FAN_EVENT_METADATA_LEN = 0x18 FAN_EVENT_ON_CHILD = 0x8000000 FAN_FS_ERROR = 0x8000 @@ -1235,11 +1247,13 @@ const ( FAN_OPEN_EXEC = 0x1000 FAN_OPEN_EXEC_PERM = 0x40000 FAN_OPEN_PERM = 0x10000 + FAN_PRE_ACCESS = 0x100000 FAN_Q_OVERFLOW = 0x4000 FAN_RENAME = 0x10000000 FAN_REPORT_DFID_NAME = 0xc00 FAN_REPORT_DFID_NAME_TARGET = 0x1e00 FAN_REPORT_DIR_FID = 0x400 + FAN_REPORT_FD_ERROR = 0x2000 FAN_REPORT_FID = 0x200 FAN_REPORT_NAME = 0x800 FAN_REPORT_PIDFD = 0x80 @@ -1325,8 +1339,10 @@ const ( FUSE_SUPER_MAGIC = 0x65735546 FUTEXFS_SUPER_MAGIC = 0xbad1dea F_ADD_SEALS = 0x409 + F_CREATED_QUERY = 0x404 F_DUPFD = 0x0 F_DUPFD_CLOEXEC = 0x406 + F_DUPFD_QUERY = 0x403 F_EXLCK = 0x4 F_GETFD = 0x1 F_GETFL = 0x3 @@ -1546,6 +1562,7 @@ const ( IPPROTO_ROUTING = 0x2b IPPROTO_RSVP = 0x2e IPPROTO_SCTP = 0x84 + IPPROTO_SMC = 0x100 IPPROTO_TCP = 0x6 IPPROTO_TP = 0x1d IPPROTO_UDP = 0x11 @@ -1618,6 +1635,8 @@ const ( IPV6_UNICAST_IF = 0x4c IPV6_USER_FLOW = 0xe IPV6_V6ONLY = 0x1a + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 IPV6_XFRM_POLICY = 0x23 IP_ADD_MEMBERSHIP = 0x23 IP_ADD_SOURCE_MEMBERSHIP = 0x27 @@ -1705,6 +1724,7 @@ const ( KEXEC_ARCH_S390 = 0x160000 KEXEC_ARCH_SH = 0x2a0000 KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_CRASH_HOTPLUG_SUPPORT = 0x8 KEXEC_FILE_DEBUG = 0x8 KEXEC_FILE_NO_INITRAMFS = 0x4 KEXEC_FILE_ON_CRASH = 0x2 @@ -1780,6 +1800,7 @@ const ( KEY_SPEC_USER_KEYRING = -0x4 KEY_SPEC_USER_SESSION_KEYRING = -0x5 LANDLOCK_ACCESS_FS_EXECUTE = 0x1 + LANDLOCK_ACCESS_FS_IOCTL_DEV = 0x8000 LANDLOCK_ACCESS_FS_MAKE_BLOCK = 0x800 LANDLOCK_ACCESS_FS_MAKE_CHAR = 0x40 LANDLOCK_ACCESS_FS_MAKE_DIR = 0x80 @@ -1797,6 +1818,8 @@ const ( LANDLOCK_ACCESS_NET_BIND_TCP = 0x1 LANDLOCK_ACCESS_NET_CONNECT_TCP = 0x2 LANDLOCK_CREATE_RULESET_VERSION = 0x1 + LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET = 0x1 + LANDLOCK_SCOPE_SIGNAL = 0x2 LINUX_REBOOT_CMD_CAD_OFF = 0x0 LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef LINUX_REBOOT_CMD_HALT = 0xcdef0123 @@ -1858,9 +1881,23 @@ const ( MADV_UNMERGEABLE = 0xd MADV_WILLNEED = 0x3 MADV_WIPEONFORK = 0x12 + MAP_DROPPABLE = 0x8 MAP_FILE = 0x0 MAP_FIXED = 0x10 MAP_FIXED_NOREPLACE = 0x100000 + MAP_HUGE_16GB = 0x88000000 + MAP_HUGE_16KB = 0x38000000 + MAP_HUGE_16MB = 0x60000000 + MAP_HUGE_1GB = 0x78000000 + MAP_HUGE_1MB = 0x50000000 + MAP_HUGE_256MB = 0x70000000 + MAP_HUGE_2GB = 0x7c000000 + MAP_HUGE_2MB = 0x54000000 + MAP_HUGE_32MB = 0x64000000 + MAP_HUGE_512KB = 0x4c000000 + MAP_HUGE_512MB = 0x74000000 + MAP_HUGE_64KB = 0x40000000 + MAP_HUGE_8MB = 0x5c000000 MAP_HUGE_MASK = 0x3f MAP_HUGE_SHIFT = 0x1a MAP_PRIVATE = 0x2 @@ -1908,6 +1945,8 @@ const ( MNT_EXPIRE = 0x4 MNT_FORCE = 0x1 MNT_ID_REQ_SIZE_VER0 = 0x18 + MNT_ID_REQ_SIZE_VER1 = 0x20 + MNT_NS_INFO_SIZE_VER0 = 0x10 MODULE_INIT_COMPRESSED_FILE = 0x4 MODULE_INIT_IGNORE_MODVERSIONS = 0x1 MODULE_INIT_IGNORE_VERMAGIC = 0x2 @@ -1943,6 +1982,7 @@ const ( MSG_PEEK = 0x2 MSG_PROXY = 0x10 MSG_RST = 0x1000 + MSG_SOCK_DEVMEM = 0x2000000 MSG_SYN = 0x400 MSG_TRUNC = 0x20 MSG_TRYHARD = 0x4 @@ -2059,6 +2099,7 @@ const ( NFC_ATR_REQ_MAXSIZE = 0x40 NFC_ATR_RES_GB_MAXSIZE = 0x2f NFC_ATR_RES_MAXSIZE = 0x40 + NFC_ATS_MAXSIZE = 0x14 NFC_COMM_ACTIVE = 0x0 NFC_COMM_PASSIVE = 0x1 NFC_DEVICE_NAME_MAXSIZE = 0x8 @@ -2139,6 +2180,7 @@ const ( NFNL_SUBSYS_QUEUE = 0x3 NFNL_SUBSYS_ULOG = 0x4 NFS_SUPER_MAGIC = 0x6969 + NFT_BITWISE_BOOL = 0x0 NFT_CHAIN_FLAGS = 0x7 NFT_CHAIN_MAXNAMELEN = 0x100 NFT_CT_MAX = 0x17 @@ -2173,7 +2215,7 @@ const ( NFT_REG_SIZE = 0x10 NFT_REJECT_ICMPX_MAX = 0x3 NFT_RT_MAX = 0x4 - NFT_SECMARK_CTX_MAXLEN = 0x100 + NFT_SECMARK_CTX_MAXLEN = 0x1000 NFT_SET_MAXNAMELEN = 0x100 NFT_SOCKET_MAX = 0x3 NFT_TABLE_F_MASK = 0x7 @@ -2342,9 +2384,11 @@ const ( PERF_MEM_LVLNUM_IO = 0xa PERF_MEM_LVLNUM_L1 = 0x1 PERF_MEM_LVLNUM_L2 = 0x2 + PERF_MEM_LVLNUM_L2_MHB = 0x5 PERF_MEM_LVLNUM_L3 = 0x3 PERF_MEM_LVLNUM_L4 = 0x4 PERF_MEM_LVLNUM_LFB = 0xc + PERF_MEM_LVLNUM_MSC = 0x6 PERF_MEM_LVLNUM_NA = 0xf PERF_MEM_LVLNUM_PMEM = 0xe PERF_MEM_LVLNUM_RAM = 0xd @@ -2417,6 +2461,7 @@ const ( PRIO_PGRP = 0x1 PRIO_PROCESS = 0x0 PRIO_USER = 0x2 + PROCFS_IOCTL_MAGIC = 'f' PROC_SUPER_MAGIC = 0x9fa0 PROT_EXEC = 0x4 PROT_GROWSDOWN = 0x1000000 @@ -2464,6 +2509,7 @@ const ( PR_GET_PDEATHSIG = 0x2 PR_GET_SECCOMP = 0x15 PR_GET_SECUREBITS = 0x1b + PR_GET_SHADOW_STACK_STATUS = 0x4a PR_GET_SPECULATION_CTRL = 0x34 PR_GET_TAGGED_ADDR_CTRL = 0x38 PR_GET_THP_DISABLE = 0x2a @@ -2472,6 +2518,7 @@ const ( PR_GET_TIMING = 0xd PR_GET_TSC = 0x19 PR_GET_UNALIGN = 0x5 + PR_LOCK_SHADOW_STACK_STATUS = 0x4c PR_MCE_KILL = 0x21 PR_MCE_KILL_CLEAR = 0x0 PR_MCE_KILL_DEFAULT = 0x2 @@ -2498,6 +2545,25 @@ const ( PR_PAC_GET_ENABLED_KEYS = 0x3d PR_PAC_RESET_KEYS = 0x36 PR_PAC_SET_ENABLED_KEYS = 0x3c + PR_PMLEN_MASK = 0x7f000000 + PR_PMLEN_SHIFT = 0x18 + PR_PPC_DEXCR_CTRL_CLEAR = 0x4 + PR_PPC_DEXCR_CTRL_CLEAR_ONEXEC = 0x10 + PR_PPC_DEXCR_CTRL_EDITABLE = 0x1 + PR_PPC_DEXCR_CTRL_MASK = 0x1f + PR_PPC_DEXCR_CTRL_SET = 0x2 + PR_PPC_DEXCR_CTRL_SET_ONEXEC = 0x8 + PR_PPC_DEXCR_IBRTPD = 0x1 + PR_PPC_DEXCR_NPHIE = 0x3 + PR_PPC_DEXCR_SBHE = 0x0 + PR_PPC_DEXCR_SRAPD = 0x2 + PR_PPC_GET_DEXCR = 0x48 + PR_PPC_SET_DEXCR = 0x49 + PR_RISCV_CTX_SW_FENCEI_OFF = 0x1 + PR_RISCV_CTX_SW_FENCEI_ON = 0x0 + PR_RISCV_SCOPE_PER_PROCESS = 0x0 + PR_RISCV_SCOPE_PER_THREAD = 0x1 + PR_RISCV_SET_ICACHE_FLUSH_CTX = 0x47 PR_RISCV_V_GET_CONTROL = 0x46 PR_RISCV_V_SET_CONTROL = 0x45 PR_RISCV_V_VSTATE_CTRL_CUR_MASK = 0x3 @@ -2548,6 +2614,7 @@ const ( PR_SET_PTRACER = 0x59616d61 PR_SET_SECCOMP = 0x16 PR_SET_SECUREBITS = 0x1c + PR_SET_SHADOW_STACK_STATUS = 0x4b PR_SET_SPECULATION_CTRL = 0x35 PR_SET_SYSCALL_USER_DISPATCH = 0x3b PR_SET_TAGGED_ADDR_CTRL = 0x37 @@ -2558,6 +2625,9 @@ const ( PR_SET_UNALIGN = 0x6 PR_SET_VMA = 0x53564d41 PR_SET_VMA_ANON_NAME = 0x0 + PR_SHADOW_STACK_ENABLE = 0x1 + PR_SHADOW_STACK_PUSH = 0x4 + PR_SHADOW_STACK_WRITE = 0x2 PR_SME_GET_VL = 0x40 PR_SME_SET_VL = 0x3f PR_SME_SET_VL_ONEXEC = 0x40000 @@ -2589,6 +2659,28 @@ const ( PR_UNALIGN_NOPRINT = 0x1 PR_UNALIGN_SIGBUS = 0x2 PSTOREFS_MAGIC = 0x6165676c + PTP_CLK_MAGIC = '=' + PTP_ENABLE_FEATURE = 0x1 + PTP_EXTTS_EDGES = 0x6 + PTP_EXTTS_EVENT_VALID = 0x1 + PTP_EXTTS_V1_VALID_FLAGS = 0x7 + PTP_EXTTS_VALID_FLAGS = 0x1f + PTP_EXT_OFFSET = 0x10 + PTP_FALLING_EDGE = 0x4 + PTP_MAX_SAMPLES = 0x19 + PTP_PEROUT_DUTY_CYCLE = 0x2 + PTP_PEROUT_ONE_SHOT = 0x1 + PTP_PEROUT_PHASE = 0x4 + PTP_PEROUT_V1_VALID_FLAGS = 0x0 + PTP_PEROUT_VALID_FLAGS = 0x7 + PTP_PIN_GETFUNC = 0xc0603d06 + PTP_PIN_GETFUNC2 = 0xc0603d0f + PTP_RISING_EDGE = 0x2 + PTP_STRICT_FLAGS = 0x8 + PTP_SYS_OFFSET_EXTENDED = 0xc4c03d09 + PTP_SYS_OFFSET_EXTENDED2 = 0xc4c03d12 + PTP_SYS_OFFSET_PRECISE = 0xc0403d08 + PTP_SYS_OFFSET_PRECISE2 = 0xc0403d11 PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 @@ -2703,7 +2795,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1e + RTA_MAX = 0x1f RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -2780,10 +2872,12 @@ const ( RTM_DELACTION = 0x31 RTM_DELADDR = 0x15 RTM_DELADDRLABEL = 0x49 + RTM_DELANYCAST = 0x3d RTM_DELCHAIN = 0x65 RTM_DELLINK = 0x11 RTM_DELLINKPROP = 0x6d RTM_DELMDB = 0x55 + RTM_DELMULTICAST = 0x39 RTM_DELNEIGH = 0x1d RTM_DELNETCONF = 0x51 RTM_DELNEXTHOP = 0x69 @@ -2833,11 +2927,13 @@ const ( RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 + RTM_NEWANYCAST = 0x3c RTM_NEWCACHEREPORT = 0x60 RTM_NEWCHAIN = 0x64 RTM_NEWLINK = 0x10 RTM_NEWLINKPROP = 0x6c RTM_NEWMDB = 0x54 + RTM_NEWMULTICAST = 0x38 RTM_NEWNDUSEROPT = 0x44 RTM_NEWNEIGH = 0x1c RTM_NEWNEIGHTBL = 0x40 @@ -2845,7 +2941,6 @@ const ( RTM_NEWNEXTHOP = 0x68 RTM_NEWNEXTHOPBUCKET = 0x74 RTM_NEWNSID = 0x58 - RTM_NEWNVLAN = 0x70 RTM_NEWPREFIX = 0x34 RTM_NEWQDISC = 0x24 RTM_NEWROUTE = 0x18 @@ -2854,6 +2949,7 @@ const ( RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c RTM_NEWTUNNEL = 0x78 + RTM_NEWVLAN = 0x70 RTM_NR_FAMILIES = 0x1b RTM_NR_MSGTYPES = 0x6c RTM_SETDCB = 0x4f @@ -2902,15 +2998,18 @@ const ( RUSAGE_SELF = 0x0 RUSAGE_THREAD = 0x1 RWF_APPEND = 0x10 + RWF_ATOMIC = 0x40 + RWF_DONTCACHE = 0x80 RWF_DSYNC = 0x2 RWF_HIPRI = 0x1 RWF_NOAPPEND = 0x20 RWF_NOWAIT = 0x8 - RWF_SUPPORTED = 0x3f + RWF_SUPPORTED = 0xff RWF_SYNC = 0x4 RWF_WRITE_LIFE_NOT_SET = 0x0 SCHED_BATCH = 0x3 SCHED_DEADLINE = 0x6 + SCHED_EXT = 0x7 SCHED_FIFO = 0x1 SCHED_FLAG_ALL = 0x7f SCHED_FLAG_DL_OVERRUN = 0x4 @@ -3179,11 +3278,13 @@ const ( STATX_ATTR_MOUNT_ROOT = 0x2000 STATX_ATTR_NODUMP = 0x40 STATX_ATTR_VERITY = 0x100000 + STATX_ATTR_WRITE_ATOMIC = 0x400000 STATX_BASIC_STATS = 0x7ff STATX_BLOCKS = 0x400 STATX_BTIME = 0x800 STATX_CTIME = 0x80 STATX_DIOALIGN = 0x2000 + STATX_DIO_READ_ALIGN = 0x20000 STATX_GID = 0x10 STATX_INO = 0x100 STATX_MNT_ID = 0x1000 @@ -3192,8 +3293,10 @@ const ( STATX_MTIME = 0x40 STATX_NLINK = 0x4 STATX_SIZE = 0x200 + STATX_SUBVOL = 0x8000 STATX_TYPE = 0x1 STATX_UID = 0x8 + STATX_WRITE_ATOMIC = 0x10000 STATX__RESERVED = 0x80000000 SYNC_FILE_RANGE_WAIT_AFTER = 0x4 SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 @@ -3233,7 +3336,7 @@ const ( TASKSTATS_GENL_NAME = "TASKSTATS" TASKSTATS_GENL_VERSION = 0x1 TASKSTATS_TYPE_MAX = 0x6 - TASKSTATS_VERSION = 0xe + TASKSTATS_VERSION = 0xf TCIFLUSH = 0x0 TCIOFF = 0x2 TCIOFLUSH = 0x2 @@ -3414,6 +3517,7 @@ const ( TP_STATUS_WRONG_FORMAT = 0x4 TRACEFS_MAGIC = 0x74726163 TS_COMM_LEN = 0x20 + UBI_IOCECNFO = 0xc01c6f06 UDF_SUPER_MAGIC = 0x15013346 UDP_CORK = 0x1 UDP_ENCAP = 0x64 @@ -3592,6 +3696,7 @@ const ( XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 XDP_UMEM_PGOFF_FILL_RING = 0x100000000 XDP_UMEM_REG = 0x4 + XDP_UMEM_TX_METADATA_LEN = 0x4 XDP_UMEM_TX_SW_CSUM = 0x2 XDP_UMEM_UNALIGNED_CHUNK_FLAG = 0x1 XDP_USE_NEED_WAKEUP = 0x8 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go index e4bc0bd57..a8c421e29 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go @@ -78,6 +78,8 @@ const ( ECHOPRT = 0x400 EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x80088a02 + EPIOCSPARAMS = 0x40088a01 EPOLL_CLOEXEC = 0x80000 EXTPROC = 0x10000 FF1 = 0x8000 @@ -107,12 +109,15 @@ const ( HIDIOCGRAWINFO = 0x80084803 HIDIOCGRDESC = 0x90044802 HIDIOCGRDESCSIZE = 0x80044801 + HIDIOCREVOKE = 0x4004480d HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x8000 IN_CLOEXEC = 0x80000 IN_NONBLOCK = 0x800 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 ISIG = 0x1 IUCLC = 0x200 IXOFF = 0x1000 @@ -151,9 +156,14 @@ const ( NFDBITS = 0x20 NLDLY = 0x100 NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x8008b705 NS_GET_NSTYPE = 0xb703 NS_GET_OWNER_UID = 0xb704 NS_GET_PARENT = 0xb702 + NS_GET_PID_FROM_PIDNS = 0x8004b706 + NS_GET_PID_IN_PIDNS = 0x8004b708 + NS_GET_TGID_FROM_PIDNS = 0x8004b707 + NS_GET_TGID_IN_PIDNS = 0x8004b709 NS_GET_USERNS = 0xb701 OLCUC = 0x2 ONLCR = 0x4 @@ -230,6 +240,20 @@ const ( PPPIOCUNBRIDGECHAN = 0x7434 PPPIOCXFERUNIT = 0x744e PR_SET_PTRACER_ANY = 0xffffffff + PTP_CLOCK_GETCAPS = 0x80503d01 + PTP_CLOCK_GETCAPS2 = 0x80503d0a + PTP_ENABLE_PPS = 0x40043d04 + PTP_ENABLE_PPS2 = 0x40043d0d + PTP_EXTTS_REQUEST = 0x40103d02 + PTP_EXTTS_REQUEST2 = 0x40103d0b + PTP_MASK_CLEAR_ALL = 0x3d13 + PTP_MASK_EN_SINGLE = 0x40043d14 + PTP_PEROUT_REQUEST = 0x40383d03 + PTP_PEROUT_REQUEST2 = 0x40383d0c + PTP_PIN_SETFUNC = 0x40603d07 + PTP_PIN_SETFUNC2 = 0x40603d10 + PTP_SYS_OFFSET = 0x43403d05 + PTP_SYS_OFFSET2 = 0x43403d0e PTRACE_GETFPREGS = 0xe PTRACE_GETFPXREGS = 0x12 PTRACE_GET_THREAD_AREA = 0x19 @@ -276,10 +300,13 @@ const ( RTC_WIE_ON = 0x700f RTC_WKALM_RD = 0x80287010 RTC_WKALM_SET = 0x4028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 @@ -314,6 +341,9 @@ const ( SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_ERROR = 0x4 @@ -342,6 +372,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x14 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x14 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go index 689317afd..9a88d1813 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go @@ -78,6 +78,8 @@ const ( ECHOPRT = 0x400 EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x80088a02 + EPIOCSPARAMS = 0x40088a01 EPOLL_CLOEXEC = 0x80000 EXTPROC = 0x10000 FF1 = 0x8000 @@ -107,12 +109,15 @@ const ( HIDIOCGRAWINFO = 0x80084803 HIDIOCGRDESC = 0x90044802 HIDIOCGRDESCSIZE = 0x80044801 + HIDIOCREVOKE = 0x4004480d HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x8000 IN_CLOEXEC = 0x80000 IN_NONBLOCK = 0x800 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 ISIG = 0x1 IUCLC = 0x200 IXOFF = 0x1000 @@ -151,9 +156,14 @@ const ( NFDBITS = 0x40 NLDLY = 0x100 NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x8008b705 NS_GET_NSTYPE = 0xb703 NS_GET_OWNER_UID = 0xb704 NS_GET_PARENT = 0xb702 + NS_GET_PID_FROM_PIDNS = 0x8004b706 + NS_GET_PID_IN_PIDNS = 0x8004b708 + NS_GET_TGID_FROM_PIDNS = 0x8004b707 + NS_GET_TGID_IN_PIDNS = 0x8004b709 NS_GET_USERNS = 0xb701 OLCUC = 0x2 ONLCR = 0x4 @@ -230,6 +240,20 @@ const ( PPPIOCUNBRIDGECHAN = 0x7434 PPPIOCXFERUNIT = 0x744e PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x80503d01 + PTP_CLOCK_GETCAPS2 = 0x80503d0a + PTP_ENABLE_PPS = 0x40043d04 + PTP_ENABLE_PPS2 = 0x40043d0d + PTP_EXTTS_REQUEST = 0x40103d02 + PTP_EXTTS_REQUEST2 = 0x40103d0b + PTP_MASK_CLEAR_ALL = 0x3d13 + PTP_MASK_EN_SINGLE = 0x40043d14 + PTP_PEROUT_REQUEST = 0x40383d03 + PTP_PEROUT_REQUEST2 = 0x40383d0c + PTP_PIN_SETFUNC = 0x40603d07 + PTP_PIN_SETFUNC2 = 0x40603d10 + PTP_SYS_OFFSET = 0x43403d05 + PTP_SYS_OFFSET2 = 0x43403d0e PTRACE_ARCH_PRCTL = 0x1e PTRACE_GETFPREGS = 0xe PTRACE_GETFPXREGS = 0x12 @@ -277,10 +301,13 @@ const ( RTC_WIE_ON = 0x700f RTC_WKALM_RD = 0x80287010 RTC_WKALM_SET = 0x4028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 @@ -315,6 +342,9 @@ const ( SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_ERROR = 0x4 @@ -343,6 +373,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x14 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x14 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go index 5cca668ac..7cb6a867e 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go @@ -78,6 +78,8 @@ const ( ECHOPRT = 0x400 EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x80088a02 + EPIOCSPARAMS = 0x40088a01 EPOLL_CLOEXEC = 0x80000 EXTPROC = 0x10000 FF1 = 0x8000 @@ -106,12 +108,15 @@ const ( HIDIOCGRAWINFO = 0x80084803 HIDIOCGRDESC = 0x90044802 HIDIOCGRDESCSIZE = 0x80044801 + HIDIOCREVOKE = 0x4004480d HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x8000 IN_CLOEXEC = 0x80000 IN_NONBLOCK = 0x800 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 ISIG = 0x1 IUCLC = 0x200 IXOFF = 0x1000 @@ -148,9 +153,14 @@ const ( NFDBITS = 0x20 NLDLY = 0x100 NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x8008b705 NS_GET_NSTYPE = 0xb703 NS_GET_OWNER_UID = 0xb704 NS_GET_PARENT = 0xb702 + NS_GET_PID_FROM_PIDNS = 0x8004b706 + NS_GET_PID_IN_PIDNS = 0x8004b708 + NS_GET_TGID_FROM_PIDNS = 0x8004b707 + NS_GET_TGID_IN_PIDNS = 0x8004b709 NS_GET_USERNS = 0xb701 OLCUC = 0x2 ONLCR = 0x4 @@ -227,6 +237,20 @@ const ( PPPIOCUNBRIDGECHAN = 0x7434 PPPIOCXFERUNIT = 0x744e PR_SET_PTRACER_ANY = 0xffffffff + PTP_CLOCK_GETCAPS = 0x80503d01 + PTP_CLOCK_GETCAPS2 = 0x80503d0a + PTP_ENABLE_PPS = 0x40043d04 + PTP_ENABLE_PPS2 = 0x40043d0d + PTP_EXTTS_REQUEST = 0x40103d02 + PTP_EXTTS_REQUEST2 = 0x40103d0b + PTP_MASK_CLEAR_ALL = 0x3d13 + PTP_MASK_EN_SINGLE = 0x40043d14 + PTP_PEROUT_REQUEST = 0x40383d03 + PTP_PEROUT_REQUEST2 = 0x40383d0c + PTP_PIN_SETFUNC = 0x40603d07 + PTP_PIN_SETFUNC2 = 0x40603d10 + PTP_SYS_OFFSET = 0x43403d05 + PTP_SYS_OFFSET2 = 0x43403d0e PTRACE_GETCRUNCHREGS = 0x19 PTRACE_GETFDPIC = 0x1f PTRACE_GETFDPIC_EXEC = 0x0 @@ -282,10 +306,13 @@ const ( RTC_WIE_ON = 0x700f RTC_WKALM_RD = 0x80287010 RTC_WKALM_SET = 0x4028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 @@ -320,6 +347,9 @@ const ( SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_ERROR = 0x4 @@ -348,6 +378,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x14 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x14 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go index 14270508b..d0ecd2c58 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go @@ -78,6 +78,8 @@ const ( ECHOPRT = 0x400 EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x80088a02 + EPIOCSPARAMS = 0x40088a01 EPOLL_CLOEXEC = 0x80000 ESR_MAGIC = 0x45535201 EXTPROC = 0x10000 @@ -107,15 +109,19 @@ const ( F_SETOWN = 0x8 F_UNLCK = 0x2 F_WRLCK = 0x1 + GCS_MAGIC = 0x47435300 HIDIOCGRAWINFO = 0x80084803 HIDIOCGRDESC = 0x90044802 HIDIOCGRDESCSIZE = 0x80044801 + HIDIOCREVOKE = 0x4004480d HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x8000 IN_CLOEXEC = 0x80000 IN_NONBLOCK = 0x800 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 ISIG = 0x1 IUCLC = 0x200 IXOFF = 0x1000 @@ -152,9 +158,14 @@ const ( NFDBITS = 0x40 NLDLY = 0x100 NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x8008b705 NS_GET_NSTYPE = 0xb703 NS_GET_OWNER_UID = 0xb704 NS_GET_PARENT = 0xb702 + NS_GET_PID_FROM_PIDNS = 0x8004b706 + NS_GET_PID_IN_PIDNS = 0x8004b708 + NS_GET_TGID_FROM_PIDNS = 0x8004b707 + NS_GET_TGID_IN_PIDNS = 0x8004b709 NS_GET_USERNS = 0xb701 OLCUC = 0x2 ONLCR = 0x4 @@ -198,6 +209,7 @@ const ( PERF_EVENT_IOC_SET_BPF = 0x40042408 PERF_EVENT_IOC_SET_FILTER = 0x40082406 PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + POE_MAGIC = 0x504f4530 PPPIOCATTACH = 0x4004743d PPPIOCATTCHAN = 0x40047438 PPPIOCBRIDGECHAN = 0x40047435 @@ -233,6 +245,20 @@ const ( PROT_BTI = 0x10 PROT_MTE = 0x20 PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x80503d01 + PTP_CLOCK_GETCAPS2 = 0x80503d0a + PTP_ENABLE_PPS = 0x40043d04 + PTP_ENABLE_PPS2 = 0x40043d0d + PTP_EXTTS_REQUEST = 0x40103d02 + PTP_EXTTS_REQUEST2 = 0x40103d0b + PTP_MASK_CLEAR_ALL = 0x3d13 + PTP_MASK_EN_SINGLE = 0x40043d14 + PTP_PEROUT_REQUEST = 0x40383d03 + PTP_PEROUT_REQUEST2 = 0x40383d0c + PTP_PIN_SETFUNC = 0x40603d07 + PTP_PIN_SETFUNC2 = 0x40603d10 + PTP_SYS_OFFSET = 0x43403d05 + PTP_SYS_OFFSET2 = 0x43403d0e PTRACE_PEEKMTETAGS = 0x21 PTRACE_POKEMTETAGS = 0x22 PTRACE_SYSEMU = 0x1f @@ -273,10 +299,13 @@ const ( RTC_WIE_ON = 0x700f RTC_WKALM_RD = 0x80287010 RTC_WKALM_SET = 0x4028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 @@ -311,6 +340,9 @@ const ( SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_ERROR = 0x4 @@ -339,6 +371,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x14 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x14 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go index 28e39afdc..7a2940ae0 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go @@ -78,6 +78,8 @@ const ( ECHOPRT = 0x400 EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x80088a02 + EPIOCSPARAMS = 0x40088a01 EPOLL_CLOEXEC = 0x80000 EXTPROC = 0x10000 FF1 = 0x8000 @@ -107,12 +109,15 @@ const ( HIDIOCGRAWINFO = 0x80084803 HIDIOCGRDESC = 0x90044802 HIDIOCGRDESCSIZE = 0x80044801 + HIDIOCREVOKE = 0x4004480d HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x8000 IN_CLOEXEC = 0x80000 IN_NONBLOCK = 0x800 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 ISIG = 0x1 IUCLC = 0x200 IXOFF = 0x1000 @@ -152,9 +157,14 @@ const ( NFDBITS = 0x40 NLDLY = 0x100 NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x8008b705 NS_GET_NSTYPE = 0xb703 NS_GET_OWNER_UID = 0xb704 NS_GET_PARENT = 0xb702 + NS_GET_PID_FROM_PIDNS = 0x8004b706 + NS_GET_PID_IN_PIDNS = 0x8004b708 + NS_GET_TGID_FROM_PIDNS = 0x8004b707 + NS_GET_TGID_IN_PIDNS = 0x8004b709 NS_GET_USERNS = 0xb701 OLCUC = 0x2 ONLCR = 0x4 @@ -231,6 +241,20 @@ const ( PPPIOCUNBRIDGECHAN = 0x7434 PPPIOCXFERUNIT = 0x744e PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x80503d01 + PTP_CLOCK_GETCAPS2 = 0x80503d0a + PTP_ENABLE_PPS = 0x40043d04 + PTP_ENABLE_PPS2 = 0x40043d0d + PTP_EXTTS_REQUEST = 0x40103d02 + PTP_EXTTS_REQUEST2 = 0x40103d0b + PTP_MASK_CLEAR_ALL = 0x3d13 + PTP_MASK_EN_SINGLE = 0x40043d14 + PTP_PEROUT_REQUEST = 0x40383d03 + PTP_PEROUT_REQUEST2 = 0x40383d0c + PTP_PIN_SETFUNC = 0x40603d07 + PTP_PIN_SETFUNC2 = 0x40603d10 + PTP_SYS_OFFSET = 0x43403d05 + PTP_SYS_OFFSET2 = 0x43403d0e PTRACE_SYSEMU = 0x1f PTRACE_SYSEMU_SINGLESTEP = 0x20 RLIMIT_AS = 0x9 @@ -269,10 +293,13 @@ const ( RTC_WIE_ON = 0x700f RTC_WKALM_RD = 0x80287010 RTC_WKALM_SET = 0x4028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 @@ -307,6 +334,9 @@ const ( SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_ERROR = 0x4 @@ -335,6 +365,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x14 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x14 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go index cd66e92cb..d14ca8f2e 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go @@ -78,6 +78,8 @@ const ( ECHOPRT = 0x400 EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x80 + EPIOCGPARAMS = 0x40088a02 + EPIOCSPARAMS = 0x80088a01 EPOLL_CLOEXEC = 0x80000 EXTPROC = 0x10000 FF1 = 0x8000 @@ -106,12 +108,15 @@ const ( HIDIOCGRAWINFO = 0x40084803 HIDIOCGRDESC = 0x50044802 HIDIOCGRDESCSIZE = 0x40044801 + HIDIOCREVOKE = 0x8004480d HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x100 IN_CLOEXEC = 0x80000 IN_NONBLOCK = 0x80 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPV6_FLOWINFO_MASK = 0xfffffff + IPV6_FLOWLABEL_MASK = 0xfffff ISIG = 0x1 IUCLC = 0x200 IXOFF = 0x1000 @@ -148,9 +153,14 @@ const ( NFDBITS = 0x20 NLDLY = 0x100 NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x4008b705 NS_GET_NSTYPE = 0x2000b703 NS_GET_OWNER_UID = 0x2000b704 NS_GET_PARENT = 0x2000b702 + NS_GET_PID_FROM_PIDNS = 0x4004b706 + NS_GET_PID_IN_PIDNS = 0x4004b708 + NS_GET_TGID_FROM_PIDNS = 0x4004b707 + NS_GET_TGID_IN_PIDNS = 0x4004b709 NS_GET_USERNS = 0x2000b701 OLCUC = 0x2 ONLCR = 0x4 @@ -227,6 +237,20 @@ const ( PPPIOCUNBRIDGECHAN = 0x20007434 PPPIOCXFERUNIT = 0x2000744e PR_SET_PTRACER_ANY = 0xffffffff + PTP_CLOCK_GETCAPS = 0x40503d01 + PTP_CLOCK_GETCAPS2 = 0x40503d0a + PTP_ENABLE_PPS = 0x80043d04 + PTP_ENABLE_PPS2 = 0x80043d0d + PTP_EXTTS_REQUEST = 0x80103d02 + PTP_EXTTS_REQUEST2 = 0x80103d0b + PTP_MASK_CLEAR_ALL = 0x20003d13 + PTP_MASK_EN_SINGLE = 0x80043d14 + PTP_PEROUT_REQUEST = 0x80383d03 + PTP_PEROUT_REQUEST2 = 0x80383d0c + PTP_PIN_SETFUNC = 0x80603d07 + PTP_PIN_SETFUNC2 = 0x80603d10 + PTP_SYS_OFFSET = 0x83403d05 + PTP_SYS_OFFSET2 = 0x83403d0e PTRACE_GETFPREGS = 0xe PTRACE_GET_THREAD_AREA = 0x19 PTRACE_GET_THREAD_AREA_3264 = 0xc4 @@ -275,10 +299,13 @@ const ( RTC_WIE_ON = 0x2000700f RTC_WKALM_RD = 0x40287010 RTC_WKALM_SET = 0x8028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 @@ -313,6 +340,9 @@ const ( SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e SO_DOMAIN = 0x1029 SO_DONTROUTE = 0x10 SO_ERROR = 0x1007 @@ -341,6 +371,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x1004 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x1006 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x1006 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go index c1595eba7..2da1bac1e 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go @@ -78,6 +78,8 @@ const ( ECHOPRT = 0x400 EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x80 + EPIOCGPARAMS = 0x40088a02 + EPIOCSPARAMS = 0x80088a01 EPOLL_CLOEXEC = 0x80000 EXTPROC = 0x10000 FF1 = 0x8000 @@ -106,12 +108,15 @@ const ( HIDIOCGRAWINFO = 0x40084803 HIDIOCGRDESC = 0x50044802 HIDIOCGRDESCSIZE = 0x40044801 + HIDIOCREVOKE = 0x8004480d HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x100 IN_CLOEXEC = 0x80000 IN_NONBLOCK = 0x80 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPV6_FLOWINFO_MASK = 0xfffffff + IPV6_FLOWLABEL_MASK = 0xfffff ISIG = 0x1 IUCLC = 0x200 IXOFF = 0x1000 @@ -148,9 +153,14 @@ const ( NFDBITS = 0x40 NLDLY = 0x100 NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x4008b705 NS_GET_NSTYPE = 0x2000b703 NS_GET_OWNER_UID = 0x2000b704 NS_GET_PARENT = 0x2000b702 + NS_GET_PID_FROM_PIDNS = 0x4004b706 + NS_GET_PID_IN_PIDNS = 0x4004b708 + NS_GET_TGID_FROM_PIDNS = 0x4004b707 + NS_GET_TGID_IN_PIDNS = 0x4004b709 NS_GET_USERNS = 0x2000b701 OLCUC = 0x2 ONLCR = 0x4 @@ -227,6 +237,20 @@ const ( PPPIOCUNBRIDGECHAN = 0x20007434 PPPIOCXFERUNIT = 0x2000744e PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x40503d01 + PTP_CLOCK_GETCAPS2 = 0x40503d0a + PTP_ENABLE_PPS = 0x80043d04 + PTP_ENABLE_PPS2 = 0x80043d0d + PTP_EXTTS_REQUEST = 0x80103d02 + PTP_EXTTS_REQUEST2 = 0x80103d0b + PTP_MASK_CLEAR_ALL = 0x20003d13 + PTP_MASK_EN_SINGLE = 0x80043d14 + PTP_PEROUT_REQUEST = 0x80383d03 + PTP_PEROUT_REQUEST2 = 0x80383d0c + PTP_PIN_SETFUNC = 0x80603d07 + PTP_PIN_SETFUNC2 = 0x80603d10 + PTP_SYS_OFFSET = 0x83403d05 + PTP_SYS_OFFSET2 = 0x83403d0e PTRACE_GETFPREGS = 0xe PTRACE_GET_THREAD_AREA = 0x19 PTRACE_GET_THREAD_AREA_3264 = 0xc4 @@ -275,10 +299,13 @@ const ( RTC_WIE_ON = 0x2000700f RTC_WKALM_RD = 0x40287010 RTC_WKALM_SET = 0x8028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 @@ -313,6 +340,9 @@ const ( SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e SO_DOMAIN = 0x1029 SO_DONTROUTE = 0x10 SO_ERROR = 0x1007 @@ -341,6 +371,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x1004 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x1006 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x1006 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go index ee9456b0d..28727514b 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go @@ -78,6 +78,8 @@ const ( ECHOPRT = 0x400 EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x80 + EPIOCGPARAMS = 0x40088a02 + EPIOCSPARAMS = 0x80088a01 EPOLL_CLOEXEC = 0x80000 EXTPROC = 0x10000 FF1 = 0x8000 @@ -106,12 +108,15 @@ const ( HIDIOCGRAWINFO = 0x40084803 HIDIOCGRDESC = 0x50044802 HIDIOCGRDESCSIZE = 0x40044801 + HIDIOCREVOKE = 0x8004480d HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x100 IN_CLOEXEC = 0x80000 IN_NONBLOCK = 0x80 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 ISIG = 0x1 IUCLC = 0x200 IXOFF = 0x1000 @@ -148,9 +153,14 @@ const ( NFDBITS = 0x40 NLDLY = 0x100 NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x4008b705 NS_GET_NSTYPE = 0x2000b703 NS_GET_OWNER_UID = 0x2000b704 NS_GET_PARENT = 0x2000b702 + NS_GET_PID_FROM_PIDNS = 0x4004b706 + NS_GET_PID_IN_PIDNS = 0x4004b708 + NS_GET_TGID_FROM_PIDNS = 0x4004b707 + NS_GET_TGID_IN_PIDNS = 0x4004b709 NS_GET_USERNS = 0x2000b701 OLCUC = 0x2 ONLCR = 0x4 @@ -227,6 +237,20 @@ const ( PPPIOCUNBRIDGECHAN = 0x20007434 PPPIOCXFERUNIT = 0x2000744e PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x40503d01 + PTP_CLOCK_GETCAPS2 = 0x40503d0a + PTP_ENABLE_PPS = 0x80043d04 + PTP_ENABLE_PPS2 = 0x80043d0d + PTP_EXTTS_REQUEST = 0x80103d02 + PTP_EXTTS_REQUEST2 = 0x80103d0b + PTP_MASK_CLEAR_ALL = 0x20003d13 + PTP_MASK_EN_SINGLE = 0x80043d14 + PTP_PEROUT_REQUEST = 0x80383d03 + PTP_PEROUT_REQUEST2 = 0x80383d0c + PTP_PIN_SETFUNC = 0x80603d07 + PTP_PIN_SETFUNC2 = 0x80603d10 + PTP_SYS_OFFSET = 0x83403d05 + PTP_SYS_OFFSET2 = 0x83403d0e PTRACE_GETFPREGS = 0xe PTRACE_GET_THREAD_AREA = 0x19 PTRACE_GET_THREAD_AREA_3264 = 0xc4 @@ -275,10 +299,13 @@ const ( RTC_WIE_ON = 0x2000700f RTC_WKALM_RD = 0x40287010 RTC_WKALM_SET = 0x8028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 @@ -313,6 +340,9 @@ const ( SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e SO_DOMAIN = 0x1029 SO_DONTROUTE = 0x10 SO_ERROR = 0x1007 @@ -341,6 +371,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x1004 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x1006 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x1006 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go index 8cfca81e1..7f287b54b 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go @@ -78,6 +78,8 @@ const ( ECHOPRT = 0x400 EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x80 + EPIOCGPARAMS = 0x40088a02 + EPIOCSPARAMS = 0x80088a01 EPOLL_CLOEXEC = 0x80000 EXTPROC = 0x10000 FF1 = 0x8000 @@ -106,12 +108,15 @@ const ( HIDIOCGRAWINFO = 0x40084803 HIDIOCGRDESC = 0x50044802 HIDIOCGRDESCSIZE = 0x40044801 + HIDIOCREVOKE = 0x8004480d HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x100 IN_CLOEXEC = 0x80000 IN_NONBLOCK = 0x80 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 ISIG = 0x1 IUCLC = 0x200 IXOFF = 0x1000 @@ -148,9 +153,14 @@ const ( NFDBITS = 0x20 NLDLY = 0x100 NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x4008b705 NS_GET_NSTYPE = 0x2000b703 NS_GET_OWNER_UID = 0x2000b704 NS_GET_PARENT = 0x2000b702 + NS_GET_PID_FROM_PIDNS = 0x4004b706 + NS_GET_PID_IN_PIDNS = 0x4004b708 + NS_GET_TGID_FROM_PIDNS = 0x4004b707 + NS_GET_TGID_IN_PIDNS = 0x4004b709 NS_GET_USERNS = 0x2000b701 OLCUC = 0x2 ONLCR = 0x4 @@ -227,6 +237,20 @@ const ( PPPIOCUNBRIDGECHAN = 0x20007434 PPPIOCXFERUNIT = 0x2000744e PR_SET_PTRACER_ANY = 0xffffffff + PTP_CLOCK_GETCAPS = 0x40503d01 + PTP_CLOCK_GETCAPS2 = 0x40503d0a + PTP_ENABLE_PPS = 0x80043d04 + PTP_ENABLE_PPS2 = 0x80043d0d + PTP_EXTTS_REQUEST = 0x80103d02 + PTP_EXTTS_REQUEST2 = 0x80103d0b + PTP_MASK_CLEAR_ALL = 0x20003d13 + PTP_MASK_EN_SINGLE = 0x80043d14 + PTP_PEROUT_REQUEST = 0x80383d03 + PTP_PEROUT_REQUEST2 = 0x80383d0c + PTP_PIN_SETFUNC = 0x80603d07 + PTP_PIN_SETFUNC2 = 0x80603d10 + PTP_SYS_OFFSET = 0x83403d05 + PTP_SYS_OFFSET2 = 0x83403d0e PTRACE_GETFPREGS = 0xe PTRACE_GET_THREAD_AREA = 0x19 PTRACE_GET_THREAD_AREA_3264 = 0xc4 @@ -275,10 +299,13 @@ const ( RTC_WIE_ON = 0x2000700f RTC_WKALM_RD = 0x40287010 RTC_WKALM_SET = 0x8028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 @@ -313,6 +340,9 @@ const ( SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e SO_DOMAIN = 0x1029 SO_DONTROUTE = 0x10 SO_ERROR = 0x1007 @@ -341,6 +371,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x1004 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x1006 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x1006 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go index 60b0deb3a..7e5f9e6aa 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go @@ -78,6 +78,8 @@ const ( ECHOPRT = 0x20 EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x40088a02 + EPIOCSPARAMS = 0x80088a01 EPOLL_CLOEXEC = 0x80000 EXTPROC = 0x10000000 FF1 = 0x4000 @@ -106,12 +108,15 @@ const ( HIDIOCGRAWINFO = 0x40084803 HIDIOCGRDESC = 0x50044802 HIDIOCGRDESCSIZE = 0x40044801 + HIDIOCREVOKE = 0x8004480d HUPCL = 0x4000 ICANON = 0x100 IEXTEN = 0x400 IN_CLOEXEC = 0x80000 IN_NONBLOCK = 0x800 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPV6_FLOWINFO_MASK = 0xfffffff + IPV6_FLOWLABEL_MASK = 0xfffff ISIG = 0x80 IUCLC = 0x1000 IXOFF = 0x400 @@ -150,9 +155,14 @@ const ( NL3 = 0x300 NLDLY = 0x300 NOFLSH = 0x80000000 + NS_GET_MNTNS_ID = 0x4008b705 NS_GET_NSTYPE = 0x2000b703 NS_GET_OWNER_UID = 0x2000b704 NS_GET_PARENT = 0x2000b702 + NS_GET_PID_FROM_PIDNS = 0x4004b706 + NS_GET_PID_IN_PIDNS = 0x4004b708 + NS_GET_TGID_FROM_PIDNS = 0x4004b707 + NS_GET_TGID_IN_PIDNS = 0x4004b709 NS_GET_USERNS = 0x2000b701 OLCUC = 0x4 ONLCR = 0x2 @@ -230,6 +240,20 @@ const ( PPPIOCXFERUNIT = 0x2000744e PROT_SAO = 0x10 PR_SET_PTRACER_ANY = 0xffffffff + PTP_CLOCK_GETCAPS = 0x40503d01 + PTP_CLOCK_GETCAPS2 = 0x40503d0a + PTP_ENABLE_PPS = 0x80043d04 + PTP_ENABLE_PPS2 = 0x80043d0d + PTP_EXTTS_REQUEST = 0x80103d02 + PTP_EXTTS_REQUEST2 = 0x80103d0b + PTP_MASK_CLEAR_ALL = 0x20003d13 + PTP_MASK_EN_SINGLE = 0x80043d14 + PTP_PEROUT_REQUEST = 0x80383d03 + PTP_PEROUT_REQUEST2 = 0x80383d0c + PTP_PIN_SETFUNC = 0x80603d07 + PTP_PIN_SETFUNC2 = 0x80603d10 + PTP_SYS_OFFSET = 0x83403d05 + PTP_SYS_OFFSET2 = 0x83403d0e PTRACE_GETEVRREGS = 0x14 PTRACE_GETFPREGS = 0xe PTRACE_GETREGS64 = 0x16 @@ -330,10 +354,13 @@ const ( RTC_WIE_ON = 0x2000700f RTC_WKALM_RD = 0x40287010 RTC_WKALM_SET = 0x8028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 @@ -368,6 +395,9 @@ const ( SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_ERROR = 0x4 @@ -396,6 +426,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x10 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x12 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x12 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go index f90aa7281..37c87952f 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go @@ -78,6 +78,8 @@ const ( ECHOPRT = 0x20 EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x40088a02 + EPIOCSPARAMS = 0x80088a01 EPOLL_CLOEXEC = 0x80000 EXTPROC = 0x10000000 FF1 = 0x4000 @@ -106,12 +108,15 @@ const ( HIDIOCGRAWINFO = 0x40084803 HIDIOCGRDESC = 0x50044802 HIDIOCGRDESCSIZE = 0x40044801 + HIDIOCREVOKE = 0x8004480d HUPCL = 0x4000 ICANON = 0x100 IEXTEN = 0x400 IN_CLOEXEC = 0x80000 IN_NONBLOCK = 0x800 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPV6_FLOWINFO_MASK = 0xfffffff + IPV6_FLOWLABEL_MASK = 0xfffff ISIG = 0x80 IUCLC = 0x1000 IXOFF = 0x400 @@ -150,9 +155,14 @@ const ( NL3 = 0x300 NLDLY = 0x300 NOFLSH = 0x80000000 + NS_GET_MNTNS_ID = 0x4008b705 NS_GET_NSTYPE = 0x2000b703 NS_GET_OWNER_UID = 0x2000b704 NS_GET_PARENT = 0x2000b702 + NS_GET_PID_FROM_PIDNS = 0x4004b706 + NS_GET_PID_IN_PIDNS = 0x4004b708 + NS_GET_TGID_FROM_PIDNS = 0x4004b707 + NS_GET_TGID_IN_PIDNS = 0x4004b709 NS_GET_USERNS = 0x2000b701 OLCUC = 0x4 ONLCR = 0x2 @@ -230,6 +240,20 @@ const ( PPPIOCXFERUNIT = 0x2000744e PROT_SAO = 0x10 PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x40503d01 + PTP_CLOCK_GETCAPS2 = 0x40503d0a + PTP_ENABLE_PPS = 0x80043d04 + PTP_ENABLE_PPS2 = 0x80043d0d + PTP_EXTTS_REQUEST = 0x80103d02 + PTP_EXTTS_REQUEST2 = 0x80103d0b + PTP_MASK_CLEAR_ALL = 0x20003d13 + PTP_MASK_EN_SINGLE = 0x80043d14 + PTP_PEROUT_REQUEST = 0x80383d03 + PTP_PEROUT_REQUEST2 = 0x80383d0c + PTP_PIN_SETFUNC = 0x80603d07 + PTP_PIN_SETFUNC2 = 0x80603d10 + PTP_SYS_OFFSET = 0x83403d05 + PTP_SYS_OFFSET2 = 0x83403d0e PTRACE_GETEVRREGS = 0x14 PTRACE_GETFPREGS = 0xe PTRACE_GETREGS64 = 0x16 @@ -334,10 +358,13 @@ const ( RTC_WIE_ON = 0x2000700f RTC_WKALM_RD = 0x40287010 RTC_WKALM_SET = 0x8028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 @@ -372,6 +399,9 @@ const ( SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_ERROR = 0x4 @@ -400,6 +430,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x10 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x12 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x12 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go index ba9e01503..522013361 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go @@ -78,6 +78,8 @@ const ( ECHOPRT = 0x20 EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x40088a02 + EPIOCSPARAMS = 0x80088a01 EPOLL_CLOEXEC = 0x80000 EXTPROC = 0x10000000 FF1 = 0x4000 @@ -106,12 +108,15 @@ const ( HIDIOCGRAWINFO = 0x40084803 HIDIOCGRDESC = 0x50044802 HIDIOCGRDESCSIZE = 0x40044801 + HIDIOCREVOKE = 0x8004480d HUPCL = 0x4000 ICANON = 0x100 IEXTEN = 0x400 IN_CLOEXEC = 0x80000 IN_NONBLOCK = 0x800 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 ISIG = 0x80 IUCLC = 0x1000 IXOFF = 0x400 @@ -150,9 +155,14 @@ const ( NL3 = 0x300 NLDLY = 0x300 NOFLSH = 0x80000000 + NS_GET_MNTNS_ID = 0x4008b705 NS_GET_NSTYPE = 0x2000b703 NS_GET_OWNER_UID = 0x2000b704 NS_GET_PARENT = 0x2000b702 + NS_GET_PID_FROM_PIDNS = 0x4004b706 + NS_GET_PID_IN_PIDNS = 0x4004b708 + NS_GET_TGID_FROM_PIDNS = 0x4004b707 + NS_GET_TGID_IN_PIDNS = 0x4004b709 NS_GET_USERNS = 0x2000b701 OLCUC = 0x4 ONLCR = 0x2 @@ -230,6 +240,20 @@ const ( PPPIOCXFERUNIT = 0x2000744e PROT_SAO = 0x10 PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x40503d01 + PTP_CLOCK_GETCAPS2 = 0x40503d0a + PTP_ENABLE_PPS = 0x80043d04 + PTP_ENABLE_PPS2 = 0x80043d0d + PTP_EXTTS_REQUEST = 0x80103d02 + PTP_EXTTS_REQUEST2 = 0x80103d0b + PTP_MASK_CLEAR_ALL = 0x20003d13 + PTP_MASK_EN_SINGLE = 0x80043d14 + PTP_PEROUT_REQUEST = 0x80383d03 + PTP_PEROUT_REQUEST2 = 0x80383d0c + PTP_PIN_SETFUNC = 0x80603d07 + PTP_PIN_SETFUNC2 = 0x80603d10 + PTP_SYS_OFFSET = 0x83403d05 + PTP_SYS_OFFSET2 = 0x83403d0e PTRACE_GETEVRREGS = 0x14 PTRACE_GETFPREGS = 0xe PTRACE_GETREGS64 = 0x16 @@ -334,10 +358,13 @@ const ( RTC_WIE_ON = 0x2000700f RTC_WKALM_RD = 0x40287010 RTC_WKALM_SET = 0x8028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 @@ -372,6 +399,9 @@ const ( SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_ERROR = 0x4 @@ -400,6 +430,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x10 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x12 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x12 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go index 07cdfd6e9..4bfe2b5b6 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go @@ -78,6 +78,8 @@ const ( ECHOPRT = 0x400 EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x80088a02 + EPIOCSPARAMS = 0x40088a01 EPOLL_CLOEXEC = 0x80000 EXTPROC = 0x10000 FF1 = 0x8000 @@ -106,12 +108,15 @@ const ( HIDIOCGRAWINFO = 0x80084803 HIDIOCGRDESC = 0x90044802 HIDIOCGRDESCSIZE = 0x80044801 + HIDIOCREVOKE = 0x4004480d HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x8000 IN_CLOEXEC = 0x80000 IN_NONBLOCK = 0x800 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 ISIG = 0x1 IUCLC = 0x200 IXOFF = 0x1000 @@ -148,9 +153,14 @@ const ( NFDBITS = 0x40 NLDLY = 0x100 NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x8008b705 NS_GET_NSTYPE = 0xb703 NS_GET_OWNER_UID = 0xb704 NS_GET_PARENT = 0xb702 + NS_GET_PID_FROM_PIDNS = 0x8004b706 + NS_GET_PID_IN_PIDNS = 0x8004b708 + NS_GET_TGID_FROM_PIDNS = 0x8004b707 + NS_GET_TGID_IN_PIDNS = 0x8004b709 NS_GET_USERNS = 0xb701 OLCUC = 0x2 ONLCR = 0x4 @@ -227,6 +237,20 @@ const ( PPPIOCUNBRIDGECHAN = 0x7434 PPPIOCXFERUNIT = 0x744e PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x80503d01 + PTP_CLOCK_GETCAPS2 = 0x80503d0a + PTP_ENABLE_PPS = 0x40043d04 + PTP_ENABLE_PPS2 = 0x40043d0d + PTP_EXTTS_REQUEST = 0x40103d02 + PTP_EXTTS_REQUEST2 = 0x40103d0b + PTP_MASK_CLEAR_ALL = 0x3d13 + PTP_MASK_EN_SINGLE = 0x40043d14 + PTP_PEROUT_REQUEST = 0x40383d03 + PTP_PEROUT_REQUEST2 = 0x40383d0c + PTP_PIN_SETFUNC = 0x40603d07 + PTP_PIN_SETFUNC2 = 0x40603d10 + PTP_SYS_OFFSET = 0x43403d05 + PTP_SYS_OFFSET2 = 0x43403d0e PTRACE_GETFDPIC = 0x21 PTRACE_GETFDPIC_EXEC = 0x0 PTRACE_GETFDPIC_INTERP = 0x1 @@ -266,10 +290,13 @@ const ( RTC_WIE_ON = 0x700f RTC_WKALM_RD = 0x80287010 RTC_WKALM_SET = 0x4028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 @@ -304,6 +331,9 @@ const ( SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_ERROR = 0x4 @@ -332,6 +362,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x14 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x14 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go index 2f1dd214a..e3cffb869 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go @@ -78,6 +78,8 @@ const ( ECHOPRT = 0x400 EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x80088a02 + EPIOCSPARAMS = 0x40088a01 EPOLL_CLOEXEC = 0x80000 EXTPROC = 0x10000 FF1 = 0x8000 @@ -106,12 +108,15 @@ const ( HIDIOCGRAWINFO = 0x80084803 HIDIOCGRDESC = 0x90044802 HIDIOCGRDESCSIZE = 0x80044801 + HIDIOCREVOKE = 0x4004480d HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x8000 IN_CLOEXEC = 0x80000 IN_NONBLOCK = 0x800 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPV6_FLOWINFO_MASK = 0xfffffff + IPV6_FLOWLABEL_MASK = 0xfffff ISIG = 0x1 IUCLC = 0x200 IXOFF = 0x1000 @@ -148,9 +153,14 @@ const ( NFDBITS = 0x40 NLDLY = 0x100 NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x8008b705 NS_GET_NSTYPE = 0xb703 NS_GET_OWNER_UID = 0xb704 NS_GET_PARENT = 0xb702 + NS_GET_PID_FROM_PIDNS = 0x8004b706 + NS_GET_PID_IN_PIDNS = 0x8004b708 + NS_GET_TGID_FROM_PIDNS = 0x8004b707 + NS_GET_TGID_IN_PIDNS = 0x8004b709 NS_GET_USERNS = 0xb701 OLCUC = 0x2 ONLCR = 0x4 @@ -227,6 +237,20 @@ const ( PPPIOCUNBRIDGECHAN = 0x7434 PPPIOCXFERUNIT = 0x744e PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x80503d01 + PTP_CLOCK_GETCAPS2 = 0x80503d0a + PTP_ENABLE_PPS = 0x40043d04 + PTP_ENABLE_PPS2 = 0x40043d0d + PTP_EXTTS_REQUEST = 0x40103d02 + PTP_EXTTS_REQUEST2 = 0x40103d0b + PTP_MASK_CLEAR_ALL = 0x3d13 + PTP_MASK_EN_SINGLE = 0x40043d14 + PTP_PEROUT_REQUEST = 0x40383d03 + PTP_PEROUT_REQUEST2 = 0x40383d0c + PTP_PIN_SETFUNC = 0x40603d07 + PTP_PIN_SETFUNC2 = 0x40603d10 + PTP_SYS_OFFSET = 0x43403d05 + PTP_SYS_OFFSET2 = 0x43403d0e PTRACE_DISABLE_TE = 0x5010 PTRACE_ENABLE_TE = 0x5009 PTRACE_GET_LAST_BREAK = 0x5006 @@ -338,10 +362,13 @@ const ( RTC_WIE_ON = 0x700f RTC_WKALM_RD = 0x80287010 RTC_WKALM_SET = 0x4028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 SCM_TXTIME = 0x3d SCM_WIFI_STATUS = 0x29 SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 @@ -376,6 +403,9 @@ const ( SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_ERROR = 0x4 @@ -404,6 +434,7 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 SO_RCVTIMEO = 0x14 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x14 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go index f40519d90..c219c8db3 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go @@ -82,6 +82,8 @@ const ( EFD_CLOEXEC = 0x400000 EFD_NONBLOCK = 0x4000 EMT_TAGOVF = 0x1 + EPIOCGPARAMS = 0x40088a02 + EPIOCSPARAMS = 0x80088a01 EPOLL_CLOEXEC = 0x400000 EXTPROC = 0x10000 FF1 = 0x8000 @@ -110,12 +112,15 @@ const ( HIDIOCGRAWINFO = 0x40084803 HIDIOCGRDESC = 0x50044802 HIDIOCGRDESCSIZE = 0x40044801 + HIDIOCREVOKE = 0x8004480d HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x8000 IN_CLOEXEC = 0x400000 IN_NONBLOCK = 0x4000 IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPV6_FLOWINFO_MASK = 0xfffffff + IPV6_FLOWLABEL_MASK = 0xfffff ISIG = 0x1 IUCLC = 0x200 IXOFF = 0x1000 @@ -153,9 +158,14 @@ const ( NFDBITS = 0x40 NLDLY = 0x100 NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x4008b705 NS_GET_NSTYPE = 0x2000b703 NS_GET_OWNER_UID = 0x2000b704 NS_GET_PARENT = 0x2000b702 + NS_GET_PID_FROM_PIDNS = 0x4004b706 + NS_GET_PID_IN_PIDNS = 0x4004b708 + NS_GET_TGID_FROM_PIDNS = 0x4004b707 + NS_GET_TGID_IN_PIDNS = 0x4004b709 NS_GET_USERNS = 0x2000b701 OLCUC = 0x2 ONLCR = 0x4 @@ -232,6 +242,20 @@ const ( PPPIOCUNBRIDGECHAN = 0x20007434 PPPIOCXFERUNIT = 0x2000744e PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x40503d01 + PTP_CLOCK_GETCAPS2 = 0x40503d0a + PTP_ENABLE_PPS = 0x80043d04 + PTP_ENABLE_PPS2 = 0x80043d0d + PTP_EXTTS_REQUEST = 0x80103d02 + PTP_EXTTS_REQUEST2 = 0x80103d0b + PTP_MASK_CLEAR_ALL = 0x20003d13 + PTP_MASK_EN_SINGLE = 0x80043d14 + PTP_PEROUT_REQUEST = 0x80383d03 + PTP_PEROUT_REQUEST2 = 0x80383d0c + PTP_PIN_SETFUNC = 0x80603d07 + PTP_PIN_SETFUNC2 = 0x80603d10 + PTP_SYS_OFFSET = 0x83403d05 + PTP_SYS_OFFSET2 = 0x83403d0e PTRACE_GETFPAREGS = 0x14 PTRACE_GETFPREGS = 0xe PTRACE_GETFPREGS64 = 0x19 @@ -329,10 +353,13 @@ const ( RTC_WIE_ON = 0x2000700f RTC_WKALM_RD = 0x40287010 RTC_WKALM_SET = 0x8028700f + SCM_DEVMEM_DMABUF = 0x58 + SCM_DEVMEM_LINEAR = 0x57 SCM_TIMESTAMPING = 0x23 SCM_TIMESTAMPING_OPT_STATS = 0x38 SCM_TIMESTAMPING_PKTINFO = 0x3c SCM_TIMESTAMPNS = 0x21 + SCM_TS_OPT_ID = 0x5a SCM_TXTIME = 0x3f SCM_WIFI_STATUS = 0x25 SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 @@ -415,6 +442,9 @@ const ( SO_CNX_ADVICE = 0x37 SO_COOKIE = 0x3b SO_DETACH_REUSEPORT_BPF = 0x47 + SO_DEVMEM_DMABUF = 0x58 + SO_DEVMEM_DONTNEED = 0x59 + SO_DEVMEM_LINEAR = 0x57 SO_DOMAIN = 0x1029 SO_DONTROUTE = 0x10 SO_ERROR = 0x1007 @@ -443,6 +473,7 @@ const ( SO_RCVBUFFORCE = 0x100b SO_RCVLOWAT = 0x800 SO_RCVMARK = 0x54 + SO_RCVPRIORITY = 0x5b SO_RCVTIMEO = 0x2000 SO_RCVTIMEO_NEW = 0x44 SO_RCVTIMEO_OLD = 0x2000 diff --git a/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go index da08b2ab3..1ec2b1407 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go +++ b/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go @@ -581,6 +581,8 @@ const ( AT_EMPTY_PATH = 0x1000 AT_REMOVEDIR = 0x200 RENAME_NOREPLACE = 1 << 0 + ST_RDONLY = 1 + ST_NOSUID = 2 ) const ( diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go index 07642c308..813c05b66 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go @@ -740,6 +740,54 @@ func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func renamexNp(from string, to string, flag uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_renamex_np_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flag)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_renamex_np_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renamex_np renamex_np "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func renameatxNp(fromfd int, from string, tofd int, to string, flag uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_renameatx_np_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), uintptr(flag), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_renameatx_np_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renameatx_np renameatx_np "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { var _p0 unsafe.Pointer if len(mib) > 0 { @@ -793,6 +841,26 @@ var libc_pthread_fchdir_np_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func connectx(fd int, endpoints *SaEndpoints, associd SaeAssocID, flags uint32, iov []Iovec, n *uintptr, connid *SaeConnID) (err error) { + var _p0 unsafe.Pointer + if len(iov) > 0 { + _p0 = unsafe.Pointer(&iov[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall9(libc_connectx_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(endpoints)), uintptr(associd), uintptr(flags), uintptr(_p0), uintptr(len(iov)), uintptr(unsafe.Pointer(n)), uintptr(unsafe.Pointer(connid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_connectx_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_connectx connectx "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) { _, _, e1 := syscall_syscall6(libc_sendfile_trampoline_addr, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags)) if e1 != 0 { @@ -2444,6 +2512,90 @@ var libc_munmap_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func readv(fd int, iovecs []Iovec) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovecs) > 0 { + _p0 = unsafe.Pointer(&iovecs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_readv_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readv_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readv readv "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func preadv(fd int, iovecs []Iovec, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovecs) > 0 { + _p0 = unsafe.Pointer(&iovecs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_preadv_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_preadv_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_preadv preadv "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writev(fd int, iovecs []Iovec) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovecs) > 0 { + _p0 = unsafe.Pointer(&iovecs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_writev_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_writev_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_writev writev "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwritev(fd int, iovecs []Iovec, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovecs) > 0 { + _p0 = unsafe.Pointer(&iovecs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pwritev_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pwritev_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pwritev pwritev "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fstat(fd int, stat *Stat_t) (err error) { _, _, e1 := syscall_syscall(libc_fstat64_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s index 923e08cb7..fda328582 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s @@ -223,6 +223,16 @@ TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $8 DATA ·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB) +TEXT libc_renamex_np_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renamex_np(SB) +GLOBL ·libc_renamex_np_trampoline_addr(SB), RODATA, $8 +DATA ·libc_renamex_np_trampoline_addr(SB)/8, $libc_renamex_np_trampoline<>(SB) + +TEXT libc_renameatx_np_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renameatx_np(SB) +GLOBL ·libc_renameatx_np_trampoline_addr(SB), RODATA, $8 +DATA ·libc_renameatx_np_trampoline_addr(SB)/8, $libc_renameatx_np_trampoline<>(SB) + TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_sysctl(SB) GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 @@ -238,6 +248,11 @@ TEXT libc_pthread_fchdir_np_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_pthread_fchdir_np_trampoline_addr(SB), RODATA, $8 DATA ·libc_pthread_fchdir_np_trampoline_addr(SB)/8, $libc_pthread_fchdir_np_trampoline<>(SB) +TEXT libc_connectx_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_connectx(SB) +GLOBL ·libc_connectx_trampoline_addr(SB), RODATA, $8 +DATA ·libc_connectx_trampoline_addr(SB)/8, $libc_connectx_trampoline<>(SB) + TEXT libc_sendfile_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_sendfile(SB) GLOBL ·libc_sendfile_trampoline_addr(SB), RODATA, $8 @@ -723,6 +738,26 @@ TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) +TEXT libc_readv_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readv(SB) +GLOBL ·libc_readv_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readv_trampoline_addr(SB)/8, $libc_readv_trampoline<>(SB) + +TEXT libc_preadv_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_preadv(SB) +GLOBL ·libc_preadv_trampoline_addr(SB), RODATA, $8 +DATA ·libc_preadv_trampoline_addr(SB)/8, $libc_preadv_trampoline<>(SB) + +TEXT libc_writev_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_writev(SB) +GLOBL ·libc_writev_trampoline_addr(SB), RODATA, $8 +DATA ·libc_writev_trampoline_addr(SB)/8, $libc_writev_trampoline<>(SB) + +TEXT libc_pwritev_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pwritev(SB) +GLOBL ·libc_pwritev_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pwritev_trampoline_addr(SB)/8, $libc_pwritev_trampoline<>(SB) + TEXT libc_fstat64_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fstat64(SB) GLOBL ·libc_fstat64_trampoline_addr(SB), RODATA, $8 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go index 7d73dda64..e6f58f3c6 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go @@ -740,6 +740,54 @@ func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func renamexNp(from string, to string, flag uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_renamex_np_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flag)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_renamex_np_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renamex_np renamex_np "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func renameatxNp(fromfd int, from string, tofd int, to string, flag uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_renameatx_np_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), uintptr(flag), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_renameatx_np_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renameatx_np renameatx_np "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { var _p0 unsafe.Pointer if len(mib) > 0 { @@ -793,6 +841,26 @@ var libc_pthread_fchdir_np_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func connectx(fd int, endpoints *SaEndpoints, associd SaeAssocID, flags uint32, iov []Iovec, n *uintptr, connid *SaeConnID) (err error) { + var _p0 unsafe.Pointer + if len(iov) > 0 { + _p0 = unsafe.Pointer(&iov[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall9(libc_connectx_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(endpoints)), uintptr(associd), uintptr(flags), uintptr(_p0), uintptr(len(iov)), uintptr(unsafe.Pointer(n)), uintptr(unsafe.Pointer(connid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_connectx_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_connectx connectx "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) { _, _, e1 := syscall_syscall6(libc_sendfile_trampoline_addr, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags)) if e1 != 0 { @@ -2444,6 +2512,90 @@ var libc_munmap_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func readv(fd int, iovecs []Iovec) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovecs) > 0 { + _p0 = unsafe.Pointer(&iovecs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_readv_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readv_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readv readv "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func preadv(fd int, iovecs []Iovec, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovecs) > 0 { + _p0 = unsafe.Pointer(&iovecs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_preadv_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_preadv_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_preadv preadv "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writev(fd int, iovecs []Iovec) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovecs) > 0 { + _p0 = unsafe.Pointer(&iovecs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_writev_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_writev_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_writev writev "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwritev(fd int, iovecs []Iovec, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovecs) > 0 { + _p0 = unsafe.Pointer(&iovecs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pwritev_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pwritev_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pwritev pwritev "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Fstat(fd int, stat *Stat_t) (err error) { _, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s index 057700111..7f8998b90 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s @@ -223,6 +223,16 @@ TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $8 DATA ·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB) +TEXT libc_renamex_np_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renamex_np(SB) +GLOBL ·libc_renamex_np_trampoline_addr(SB), RODATA, $8 +DATA ·libc_renamex_np_trampoline_addr(SB)/8, $libc_renamex_np_trampoline<>(SB) + +TEXT libc_renameatx_np_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renameatx_np(SB) +GLOBL ·libc_renameatx_np_trampoline_addr(SB), RODATA, $8 +DATA ·libc_renameatx_np_trampoline_addr(SB)/8, $libc_renameatx_np_trampoline<>(SB) + TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_sysctl(SB) GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 @@ -238,6 +248,11 @@ TEXT libc_pthread_fchdir_np_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_pthread_fchdir_np_trampoline_addr(SB), RODATA, $8 DATA ·libc_pthread_fchdir_np_trampoline_addr(SB)/8, $libc_pthread_fchdir_np_trampoline<>(SB) +TEXT libc_connectx_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_connectx(SB) +GLOBL ·libc_connectx_trampoline_addr(SB), RODATA, $8 +DATA ·libc_connectx_trampoline_addr(SB)/8, $libc_connectx_trampoline<>(SB) + TEXT libc_sendfile_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_sendfile(SB) GLOBL ·libc_sendfile_trampoline_addr(SB), RODATA, $8 @@ -723,6 +738,26 @@ TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) +TEXT libc_readv_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readv(SB) +GLOBL ·libc_readv_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readv_trampoline_addr(SB)/8, $libc_readv_trampoline<>(SB) + +TEXT libc_preadv_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_preadv(SB) +GLOBL ·libc_preadv_trampoline_addr(SB), RODATA, $8 +DATA ·libc_preadv_trampoline_addr(SB)/8, $libc_preadv_trampoline<>(SB) + +TEXT libc_writev_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_writev(SB) +GLOBL ·libc_writev_trampoline_addr(SB), RODATA, $8 +DATA ·libc_writev_trampoline_addr(SB)/8, $libc_writev_trampoline<>(SB) + +TEXT libc_pwritev_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pwritev(SB) +GLOBL ·libc_pwritev_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pwritev_trampoline_addr(SB)/8, $libc_pwritev_trampoline<>(SB) + TEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_fstat(SB) GLOBL ·libc_fstat_trampoline_addr(SB), RODATA, $8 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux.go b/vendor/golang.org/x/sys/unix/zsyscall_linux.go index 87d8612a1..5cc1e8eb2 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux.go @@ -592,6 +592,16 @@ func ClockGettime(clockid int32, time *Timespec) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ClockSettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_SETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) if e1 != 0 { @@ -971,23 +981,6 @@ func Getpriority(which int, who int) (prio int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Getrandom(buf []byte, flags int) (n int, err error) { - var _p0 unsafe.Pointer - if len(buf) > 0 { - _p0 = unsafe.Pointer(&buf[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Getrusage(who int, rusage *Rusage) (err error) { _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) if e1 != 0 { @@ -2229,3 +2222,19 @@ func Cachestat(fd uint, crange *CachestatRange, cstat *Cachestat_t, flags uint) } return } + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mseal(b []byte, flags uint) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSEAL, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go index 9dc42410b..1851df14e 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go @@ -1493,6 +1493,30 @@ var libc_mknodat_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Nanosleep(time *Timespec, leftover *Timespec) (err error) { _, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s index 41b561731..0b43c6936 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s @@ -463,6 +463,11 @@ TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $4 DATA ·libc_mknodat_trampoline_addr(SB)/4, $libc_mknodat_trampoline<>(SB) +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mount(SB) +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mount_trampoline_addr(SB)/4, $libc_mount_trampoline<>(SB) + TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_nanosleep(SB) GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $4 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go index 0d3a0751c..e1ec0dbe4 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go @@ -1493,6 +1493,30 @@ var libc_mknodat_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Nanosleep(time *Timespec, leftover *Timespec) (err error) { _, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s index 4019a656f..880c6d6e3 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s @@ -463,6 +463,11 @@ TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $8 DATA ·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB) +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mount(SB) +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB) + TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_nanosleep(SB) GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $8 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go index c39f7776d..7c8452a63 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go @@ -1493,6 +1493,30 @@ var libc_mknodat_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Nanosleep(time *Timespec, leftover *Timespec) (err error) { _, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s index ac4af24f9..b8ef95b0f 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s @@ -463,6 +463,11 @@ TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $4 DATA ·libc_mknodat_trampoline_addr(SB)/4, $libc_mknodat_trampoline<>(SB) +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mount(SB) +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mount_trampoline_addr(SB)/4, $libc_mount_trampoline<>(SB) + TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_nanosleep(SB) GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $4 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go index 57571d072..2ffdf861f 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go @@ -1493,6 +1493,30 @@ var libc_mknodat_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Nanosleep(time *Timespec, leftover *Timespec) (err error) { _, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s index f77d53212..2af3b5c76 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s @@ -463,6 +463,11 @@ TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $8 DATA ·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB) +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mount(SB) +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB) + TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_nanosleep(SB) GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $8 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go index e62963e67..1da08d526 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go @@ -1493,6 +1493,30 @@ var libc_mknodat_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Nanosleep(time *Timespec, leftover *Timespec) (err error) { _, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s index fae140b62..b7a251353 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s @@ -463,6 +463,11 @@ TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $8 DATA ·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB) +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mount(SB) +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB) + TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_nanosleep(SB) GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $8 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go index 00831354c..6e85b0aac 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go @@ -1493,6 +1493,30 @@ var libc_mknodat_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Nanosleep(time *Timespec, leftover *Timespec) (err error) { _, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s index 9d1e0ff06..f15dadf05 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s @@ -555,6 +555,12 @@ TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $8 DATA ·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB) +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_mount(SB) + RET +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB) + TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 CALL libc_nanosleep(SB) RET diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go index 79029ed58..28b487df2 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go @@ -1493,6 +1493,30 @@ var libc_mknodat_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Nanosleep(time *Timespec, leftover *Timespec) (err error) { _, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s index da115f9a4..1e7f321e4 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s @@ -463,6 +463,11 @@ TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $8 DATA ·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB) +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mount(SB) +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB) + TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_nanosleep(SB) GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $8 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go index 829b87feb..c6545413c 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go @@ -141,6 +141,16 @@ import ( //go:cgo_import_dynamic libc_getpeername getpeername "libsocket.so" //go:cgo_import_dynamic libc_setsockopt setsockopt "libsocket.so" //go:cgo_import_dynamic libc_recvfrom recvfrom "libsocket.so" +//go:cgo_import_dynamic libc_getpeerucred getpeerucred "libc.so" +//go:cgo_import_dynamic libc_ucred_get ucred_get "libc.so" +//go:cgo_import_dynamic libc_ucred_geteuid ucred_geteuid "libc.so" +//go:cgo_import_dynamic libc_ucred_getegid ucred_getegid "libc.so" +//go:cgo_import_dynamic libc_ucred_getruid ucred_getruid "libc.so" +//go:cgo_import_dynamic libc_ucred_getrgid ucred_getrgid "libc.so" +//go:cgo_import_dynamic libc_ucred_getsuid ucred_getsuid "libc.so" +//go:cgo_import_dynamic libc_ucred_getsgid ucred_getsgid "libc.so" +//go:cgo_import_dynamic libc_ucred_getpid ucred_getpid "libc.so" +//go:cgo_import_dynamic libc_ucred_free ucred_free "libc.so" //go:cgo_import_dynamic libc_port_create port_create "libc.so" //go:cgo_import_dynamic libc_port_associate port_associate "libc.so" //go:cgo_import_dynamic libc_port_dissociate port_dissociate "libc.so" @@ -280,6 +290,16 @@ import ( //go:linkname procgetpeername libc_getpeername //go:linkname procsetsockopt libc_setsockopt //go:linkname procrecvfrom libc_recvfrom +//go:linkname procgetpeerucred libc_getpeerucred +//go:linkname procucred_get libc_ucred_get +//go:linkname procucred_geteuid libc_ucred_geteuid +//go:linkname procucred_getegid libc_ucred_getegid +//go:linkname procucred_getruid libc_ucred_getruid +//go:linkname procucred_getrgid libc_ucred_getrgid +//go:linkname procucred_getsuid libc_ucred_getsuid +//go:linkname procucred_getsgid libc_ucred_getsgid +//go:linkname procucred_getpid libc_ucred_getpid +//go:linkname procucred_free libc_ucred_free //go:linkname procport_create libc_port_create //go:linkname procport_associate libc_port_associate //go:linkname procport_dissociate libc_port_dissociate @@ -420,6 +440,16 @@ var ( procgetpeername, procsetsockopt, procrecvfrom, + procgetpeerucred, + procucred_get, + procucred_geteuid, + procucred_getegid, + procucred_getruid, + procucred_getrgid, + procucred_getsuid, + procucred_getsgid, + procucred_getpid, + procucred_free, procport_create, procport_associate, procport_dissociate, @@ -2029,6 +2059,90 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func getpeerucred(fd uintptr, ucred *uintptr) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetpeerucred)), 2, uintptr(fd), uintptr(unsafe.Pointer(ucred)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredGet(pid int) (ucred uintptr, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procucred_get)), 1, uintptr(pid), 0, 0, 0, 0, 0) + ucred = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredGeteuid(ucred uintptr) (uid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_geteuid)), 1, uintptr(ucred), 0, 0, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredGetegid(ucred uintptr) (gid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getegid)), 1, uintptr(ucred), 0, 0, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredGetruid(ucred uintptr) (uid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getruid)), 1, uintptr(ucred), 0, 0, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredGetrgid(ucred uintptr) (gid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getrgid)), 1, uintptr(ucred), 0, 0, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredGetsuid(ucred uintptr) (uid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getsuid)), 1, uintptr(ucred), 0, 0, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredGetsgid(ucred uintptr) (gid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getsgid)), 1, uintptr(ucred), 0, 0, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredGetpid(ucred uintptr) (pid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getpid)), 1, uintptr(ucred), 0, 0, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredFree(ucred uintptr) { + sysvicall6(uintptr(unsafe.Pointer(&procucred_free)), 1, uintptr(ucred), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func port_create() (n int, err error) { r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_create)), 0, 0, 0, 0, 0, 0, 0) n = int(r0) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go index 53aef5dc5..c79aaff30 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go @@ -457,4 +457,9 @@ const ( SYS_LSM_GET_SELF_ATTR = 459 SYS_LSM_SET_SELF_ATTR = 460 SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go index 71d524763..5eb450695 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go @@ -341,6 +341,7 @@ const ( SYS_STATX = 332 SYS_IO_PGETEVENTS = 333 SYS_RSEQ = 334 + SYS_URETPROBE = 335 SYS_PIDFD_SEND_SIGNAL = 424 SYS_IO_URING_SETUP = 425 SYS_IO_URING_ENTER = 426 @@ -379,4 +380,9 @@ const ( SYS_LSM_GET_SELF_ATTR = 459 SYS_LSM_SET_SELF_ATTR = 460 SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go index c74770613..05e502974 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go @@ -421,4 +421,9 @@ const ( SYS_LSM_GET_SELF_ATTR = 459 SYS_LSM_SET_SELF_ATTR = 460 SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go index f96e214f6..38c53ec51 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go @@ -85,7 +85,7 @@ const ( SYS_SPLICE = 76 SYS_TEE = 77 SYS_READLINKAT = 78 - SYS_FSTATAT = 79 + SYS_NEWFSTATAT = 79 SYS_FSTAT = 80 SYS_SYNC = 81 SYS_FSYNC = 82 @@ -324,4 +324,9 @@ const ( SYS_LSM_GET_SELF_ATTR = 459 SYS_LSM_SET_SELF_ATTR = 460 SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go index 28425346c..31d2e71a1 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go @@ -84,6 +84,8 @@ const ( SYS_SPLICE = 76 SYS_TEE = 77 SYS_READLINKAT = 78 + SYS_NEWFSTATAT = 79 + SYS_FSTAT = 80 SYS_SYNC = 81 SYS_FSYNC = 82 SYS_FDATASYNC = 83 @@ -318,4 +320,9 @@ const ( SYS_LSM_GET_SELF_ATTR = 459 SYS_LSM_SET_SELF_ATTR = 460 SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go index d0953018d..f4184a336 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go @@ -441,4 +441,9 @@ const ( SYS_LSM_GET_SELF_ATTR = 4459 SYS_LSM_SET_SELF_ATTR = 4460 SYS_LSM_LIST_MODULES = 4461 + SYS_MSEAL = 4462 + SYS_SETXATTRAT = 4463 + SYS_GETXATTRAT = 4464 + SYS_LISTXATTRAT = 4465 + SYS_REMOVEXATTRAT = 4466 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go index 295c7f4b8..05b996227 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go @@ -371,4 +371,9 @@ const ( SYS_LSM_GET_SELF_ATTR = 5459 SYS_LSM_SET_SELF_ATTR = 5460 SYS_LSM_LIST_MODULES = 5461 + SYS_MSEAL = 5462 + SYS_SETXATTRAT = 5463 + SYS_GETXATTRAT = 5464 + SYS_LISTXATTRAT = 5465 + SYS_REMOVEXATTRAT = 5466 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go index d1a9eaca7..43a256e9e 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go @@ -371,4 +371,9 @@ const ( SYS_LSM_GET_SELF_ATTR = 5459 SYS_LSM_SET_SELF_ATTR = 5460 SYS_LSM_LIST_MODULES = 5461 + SYS_MSEAL = 5462 + SYS_SETXATTRAT = 5463 + SYS_GETXATTRAT = 5464 + SYS_LISTXATTRAT = 5465 + SYS_REMOVEXATTRAT = 5466 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go index bec157c39..eea5ddfc2 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go @@ -441,4 +441,9 @@ const ( SYS_LSM_GET_SELF_ATTR = 4459 SYS_LSM_SET_SELF_ATTR = 4460 SYS_LSM_LIST_MODULES = 4461 + SYS_MSEAL = 4462 + SYS_SETXATTRAT = 4463 + SYS_GETXATTRAT = 4464 + SYS_LISTXATTRAT = 4465 + SYS_REMOVEXATTRAT = 4466 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go index 7ee7bdc43..0d777bfbb 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go @@ -448,4 +448,9 @@ const ( SYS_LSM_GET_SELF_ATTR = 459 SYS_LSM_SET_SELF_ATTR = 460 SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go index fad1f25b4..b44636502 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go @@ -420,4 +420,9 @@ const ( SYS_LSM_GET_SELF_ATTR = 459 SYS_LSM_SET_SELF_ATTR = 460 SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go index 7d3e16357..0c7d21c18 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go @@ -420,4 +420,9 @@ const ( SYS_LSM_GET_SELF_ATTR = 459 SYS_LSM_SET_SELF_ATTR = 460 SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go index 0ed53ad9f..840539169 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go @@ -84,7 +84,7 @@ const ( SYS_SPLICE = 76 SYS_TEE = 77 SYS_READLINKAT = 78 - SYS_FSTATAT = 79 + SYS_NEWFSTATAT = 79 SYS_FSTAT = 80 SYS_SYNC = 81 SYS_FSYNC = 82 @@ -325,4 +325,9 @@ const ( SYS_LSM_GET_SELF_ATTR = 459 SYS_LSM_SET_SELF_ATTR = 460 SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go index 2fba04ad5..fcf1b790d 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go @@ -386,4 +386,9 @@ const ( SYS_LSM_GET_SELF_ATTR = 459 SYS_LSM_SET_SELF_ATTR = 460 SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go index 621d00d74..52d15b5f9 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go @@ -399,4 +399,9 @@ const ( SYS_LSM_GET_SELF_ATTR = 459 SYS_LSM_SET_SELF_ATTR = 460 SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 ) diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go index 091d107f3..17c53bd9b 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go @@ -306,6 +306,19 @@ type XVSockPgen struct { type _Socklen uint32 +type SaeAssocID uint32 + +type SaeConnID uint32 + +type SaEndpoints struct { + Srcif uint32 + Srcaddr *RawSockaddr + Srcaddrlen uint32 + Dstaddr *RawSockaddr + Dstaddrlen uint32 + _ [4]byte +} + type Xucred struct { Version uint32 Uid uint32 @@ -449,11 +462,14 @@ type FdSet struct { const ( SizeofIfMsghdr = 0x70 + SizeofIfMsghdr2 = 0xa0 SizeofIfData = 0x60 + SizeofIfData64 = 0x80 SizeofIfaMsghdr = 0x14 SizeofIfmaMsghdr = 0x10 SizeofIfmaMsghdr2 = 0x14 SizeofRtMsghdr = 0x5c + SizeofRtMsghdr2 = 0x5c SizeofRtMetrics = 0x38 ) @@ -467,6 +483,20 @@ type IfMsghdr struct { Data IfData } +type IfMsghdr2 struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Snd_len int32 + Snd_maxlen int32 + Snd_drops int32 + Timer int32 + Data IfData64 +} + type IfData struct { Type uint8 Typelen uint8 @@ -499,6 +529,34 @@ type IfData struct { Reserved2 uint32 } +type IfData64 struct { + Type uint8 + Typelen uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Recvquota uint8 + Xmitquota uint8 + Unused1 uint8 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Recvtiming uint32 + Xmittiming uint32 + Lastchange Timeval32 +} + type IfaMsghdr struct { Msglen uint16 Version uint8 @@ -544,6 +602,21 @@ type RtMsghdr struct { Rmx RtMetrics } +type RtMsghdr2 struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Flags int32 + Addrs int32 + Refcnt int32 + Parentflags int32 + Reserved int32 + Use int32 + Inits uint32 + Rmx RtMetrics +} + type RtMetrics struct { Locks uint32 Mtu uint32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go index 28ff4ef74..2392226a7 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go @@ -306,6 +306,19 @@ type XVSockPgen struct { type _Socklen uint32 +type SaeAssocID uint32 + +type SaeConnID uint32 + +type SaEndpoints struct { + Srcif uint32 + Srcaddr *RawSockaddr + Srcaddrlen uint32 + Dstaddr *RawSockaddr + Dstaddrlen uint32 + _ [4]byte +} + type Xucred struct { Version uint32 Uid uint32 @@ -449,11 +462,14 @@ type FdSet struct { const ( SizeofIfMsghdr = 0x70 + SizeofIfMsghdr2 = 0xa0 SizeofIfData = 0x60 + SizeofIfData64 = 0x80 SizeofIfaMsghdr = 0x14 SizeofIfmaMsghdr = 0x10 SizeofIfmaMsghdr2 = 0x14 SizeofRtMsghdr = 0x5c + SizeofRtMsghdr2 = 0x5c SizeofRtMetrics = 0x38 ) @@ -467,6 +483,20 @@ type IfMsghdr struct { Data IfData } +type IfMsghdr2 struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Snd_len int32 + Snd_maxlen int32 + Snd_drops int32 + Timer int32 + Data IfData64 +} + type IfData struct { Type uint8 Typelen uint8 @@ -499,6 +529,34 @@ type IfData struct { Reserved2 uint32 } +type IfData64 struct { + Type uint8 + Typelen uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Recvquota uint8 + Xmitquota uint8 + Unused1 uint8 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Recvtiming uint32 + Xmittiming uint32 + Lastchange Timeval32 +} + type IfaMsghdr struct { Msglen uint16 Version uint8 @@ -544,6 +602,21 @@ type RtMsghdr struct { Rmx RtMetrics } +type RtMsghdr2 struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Flags int32 + Addrs int32 + Refcnt int32 + Parentflags int32 + Reserved int32 + Use int32 + Inits uint32 + Rmx RtMetrics +} + type RtMetrics struct { Locks uint32 Mtu uint32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go index 6cbd094a3..51e13eb05 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go @@ -625,6 +625,7 @@ const ( POLLRDNORM = 0x40 POLLWRBAND = 0x100 POLLWRNORM = 0x4 + POLLRDHUP = 0x4000 ) type CapRights struct { diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go index 7c03b6ee7..d002d8ef3 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go @@ -630,6 +630,7 @@ const ( POLLRDNORM = 0x40 POLLWRBAND = 0x100 POLLWRNORM = 0x4 + POLLRDHUP = 0x4000 ) type CapRights struct { diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go index 422107ee8..3f863d898 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go @@ -616,6 +616,7 @@ const ( POLLRDNORM = 0x40 POLLWRBAND = 0x100 POLLWRNORM = 0x4 + POLLRDHUP = 0x4000 ) type CapRights struct { diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go index 505a12acf..61c729310 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go @@ -610,6 +610,7 @@ const ( POLLRDNORM = 0x40 POLLWRBAND = 0x100 POLLWRNORM = 0x4 + POLLRDHUP = 0x4000 ) type CapRights struct { diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go index cc986c790..b5d17414f 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go @@ -612,6 +612,7 @@ const ( POLLRDNORM = 0x40 POLLWRBAND = 0x100 POLLWRNORM = 0x4 + POLLRDHUP = 0x4000 ) type CapRights struct { diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux.go b/vendor/golang.org/x/sys/unix/ztypes_linux.go index 4740b8348..8bcac2835 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux.go @@ -87,30 +87,35 @@ type StatxTimestamp struct { } type Statx_t struct { - Mask uint32 - Blksize uint32 - Attributes uint64 - Nlink uint32 - Uid uint32 - Gid uint32 - Mode uint16 - _ [1]uint16 - Ino uint64 - Size uint64 - Blocks uint64 - Attributes_mask uint64 - Atime StatxTimestamp - Btime StatxTimestamp - Ctime StatxTimestamp - Mtime StatxTimestamp - Rdev_major uint32 - Rdev_minor uint32 - Dev_major uint32 - Dev_minor uint32 - Mnt_id uint64 - Dio_mem_align uint32 - Dio_offset_align uint32 - _ [12]uint64 + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + Mnt_id uint64 + Dio_mem_align uint32 + Dio_offset_align uint32 + Subvol uint64 + Atomic_write_unit_min uint32 + Atomic_write_unit_max uint32 + Atomic_write_segments_max uint32 + Dio_read_offset_align uint32 + _ [9]uint64 } type Fsid struct { @@ -515,6 +520,29 @@ type TCPInfo struct { Total_rto_time uint32 } +type TCPVegasInfo struct { + Enabled uint32 + Rttcnt uint32 + Rtt uint32 + Minrtt uint32 +} + +type TCPDCTCPInfo struct { + Enabled uint16 + Ce_state uint16 + Alpha uint32 + Ab_ecn uint32 + Ab_tot uint32 +} + +type TCPBBRInfo struct { + Bw_lo uint32 + Bw_hi uint32 + Min_rtt uint32 + Pacing_gain uint32 + Cwnd_gain uint32 +} + type CanFilter struct { Id uint32 Mask uint32 @@ -556,6 +584,7 @@ const ( SizeofICMPv6Filter = 0x20 SizeofUcred = 0xc SizeofTCPInfo = 0xf8 + SizeofTCPCCInfo = 0x14 SizeofCanFilter = 0x8 SizeofTCPRepairOpt = 0x8 ) @@ -1723,12 +1752,6 @@ const ( IFLA_IPVLAN_UNSPEC = 0x0 IFLA_IPVLAN_MODE = 0x1 IFLA_IPVLAN_FLAGS = 0x2 - NETKIT_NEXT = -0x1 - NETKIT_PASS = 0x0 - NETKIT_DROP = 0x2 - NETKIT_REDIRECT = 0x7 - NETKIT_L2 = 0x0 - NETKIT_L3 = 0x1 IFLA_NETKIT_UNSPEC = 0x0 IFLA_NETKIT_PEER_INFO = 0x1 IFLA_NETKIT_PRIMARY = 0x2 @@ -1767,6 +1790,7 @@ const ( IFLA_VXLAN_DF = 0x1d IFLA_VXLAN_VNIFILTER = 0x1e IFLA_VXLAN_LOCALBYPASS = 0x1f + IFLA_VXLAN_LABEL_POLICY = 0x20 IFLA_GENEVE_UNSPEC = 0x0 IFLA_GENEVE_ID = 0x1 IFLA_GENEVE_REMOTE = 0x2 @@ -1796,6 +1820,8 @@ const ( IFLA_GTP_ROLE = 0x4 IFLA_GTP_CREATE_SOCKETS = 0x5 IFLA_GTP_RESTART_COUNT = 0x6 + IFLA_GTP_LOCAL = 0x7 + IFLA_GTP_LOCAL6 = 0x8 IFLA_BOND_UNSPEC = 0x0 IFLA_BOND_MODE = 0x1 IFLA_BOND_ACTIVE_SLAVE = 0x2 @@ -1828,6 +1854,7 @@ const ( IFLA_BOND_AD_LACP_ACTIVE = 0x1d IFLA_BOND_MISSED_MAX = 0x1e IFLA_BOND_NS_IP6_TARGET = 0x1f + IFLA_BOND_COUPLED_CONTROL = 0x20 IFLA_BOND_AD_INFO_UNSPEC = 0x0 IFLA_BOND_AD_INFO_AGGREGATOR = 0x1 IFLA_BOND_AD_INFO_NUM_PORTS = 0x2 @@ -1896,6 +1923,7 @@ const ( IFLA_HSR_SEQ_NR = 0x5 IFLA_HSR_VERSION = 0x6 IFLA_HSR_PROTOCOL = 0x7 + IFLA_HSR_INTERLINK = 0x8 IFLA_STATS_UNSPEC = 0x0 IFLA_STATS_LINK_64 = 0x1 IFLA_STATS_LINK_XSTATS = 0x2 @@ -1948,6 +1976,15 @@ const ( IFLA_DSA_MASTER = 0x1 ) +const ( + NETKIT_NEXT = -0x1 + NETKIT_PASS = 0x0 + NETKIT_DROP = 0x2 + NETKIT_REDIRECT = 0x7 + NETKIT_L2 = 0x0 + NETKIT_L3 = 0x1 +) + const ( NF_INET_PRE_ROUTING = 0x0 NF_INET_LOCAL_IN = 0x1 @@ -2189,8 +2226,11 @@ const ( NFT_PAYLOAD_LL_HEADER = 0x0 NFT_PAYLOAD_NETWORK_HEADER = 0x1 NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_INNER_HEADER = 0x3 + NFT_PAYLOAD_TUN_HEADER = 0x4 NFT_PAYLOAD_CSUM_NONE = 0x0 NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_CSUM_SCTP = 0x2 NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 NFTA_PAYLOAD_UNSPEC = 0x0 NFTA_PAYLOAD_DREG = 0x1 @@ -2485,7 +2525,7 @@ type XDPMmapOffsets struct { type XDPUmemReg struct { Addr uint64 Len uint64 - Chunk_size uint32 + Size uint32 Headroom uint32 Flags uint32 Tx_metadata_len uint32 @@ -2557,8 +2597,8 @@ const ( SOF_TIMESTAMPING_BIND_PHC = 0x8000 SOF_TIMESTAMPING_OPT_ID_TCP = 0x10000 - SOF_TIMESTAMPING_LAST = 0x10000 - SOF_TIMESTAMPING_MASK = 0x1ffff + SOF_TIMESTAMPING_LAST = 0x20000 + SOF_TIMESTAMPING_MASK = 0x3ffff SCM_TSTAMP_SND = 0x0 SCM_TSTAMP_SCHED = 0x1 @@ -3473,7 +3513,7 @@ const ( DEVLINK_PORT_FN_ATTR_STATE = 0x2 DEVLINK_PORT_FN_ATTR_OPSTATE = 0x3 DEVLINK_PORT_FN_ATTR_CAPS = 0x4 - DEVLINK_PORT_FUNCTION_ATTR_MAX = 0x5 + DEVLINK_PORT_FUNCTION_ATTR_MAX = 0x6 ) type FsverityDigest struct { @@ -3504,7 +3544,7 @@ type Nhmsg struct { type NexthopGrp struct { Id uint32 Weight uint8 - Resvd1 uint8 + High uint8 Resvd2 uint16 } @@ -3765,7 +3805,16 @@ const ( ETHTOOL_MSG_PSE_GET = 0x24 ETHTOOL_MSG_PSE_SET = 0x25 ETHTOOL_MSG_RSS_GET = 0x26 - ETHTOOL_MSG_USER_MAX = 0x2b + ETHTOOL_MSG_PLCA_GET_CFG = 0x27 + ETHTOOL_MSG_PLCA_SET_CFG = 0x28 + ETHTOOL_MSG_PLCA_GET_STATUS = 0x29 + ETHTOOL_MSG_MM_GET = 0x2a + ETHTOOL_MSG_MM_SET = 0x2b + ETHTOOL_MSG_MODULE_FW_FLASH_ACT = 0x2c + ETHTOOL_MSG_PHY_GET = 0x2d + ETHTOOL_MSG_TSCONFIG_GET = 0x2e + ETHTOOL_MSG_TSCONFIG_SET = 0x2f + ETHTOOL_MSG_USER_MAX = 0x2f ETHTOOL_MSG_KERNEL_NONE = 0x0 ETHTOOL_MSG_STRSET_GET_REPLY = 0x1 ETHTOOL_MSG_LINKINFO_GET_REPLY = 0x2 @@ -3805,12 +3854,25 @@ const ( ETHTOOL_MSG_MODULE_NTF = 0x24 ETHTOOL_MSG_PSE_GET_REPLY = 0x25 ETHTOOL_MSG_RSS_GET_REPLY = 0x26 - ETHTOOL_MSG_KERNEL_MAX = 0x2b + ETHTOOL_MSG_PLCA_GET_CFG_REPLY = 0x27 + ETHTOOL_MSG_PLCA_GET_STATUS_REPLY = 0x28 + ETHTOOL_MSG_PLCA_NTF = 0x29 + ETHTOOL_MSG_MM_GET_REPLY = 0x2a + ETHTOOL_MSG_MM_NTF = 0x2b + ETHTOOL_MSG_MODULE_FW_FLASH_NTF = 0x2c + ETHTOOL_MSG_PHY_GET_REPLY = 0x2d + ETHTOOL_MSG_PHY_NTF = 0x2e + ETHTOOL_MSG_TSCONFIG_GET_REPLY = 0x2f + ETHTOOL_MSG_TSCONFIG_SET_REPLY = 0x30 + ETHTOOL_MSG_KERNEL_MAX = 0x30 + ETHTOOL_FLAG_COMPACT_BITSETS = 0x1 + ETHTOOL_FLAG_OMIT_REPLY = 0x2 + ETHTOOL_FLAG_STATS = 0x4 ETHTOOL_A_HEADER_UNSPEC = 0x0 ETHTOOL_A_HEADER_DEV_INDEX = 0x1 ETHTOOL_A_HEADER_DEV_NAME = 0x2 ETHTOOL_A_HEADER_FLAGS = 0x3 - ETHTOOL_A_HEADER_MAX = 0x3 + ETHTOOL_A_HEADER_MAX = 0x4 ETHTOOL_A_BITSET_BIT_UNSPEC = 0x0 ETHTOOL_A_BITSET_BIT_INDEX = 0x1 ETHTOOL_A_BITSET_BIT_NAME = 0x2 @@ -3909,7 +3971,12 @@ const ( ETHTOOL_A_RINGS_TCP_DATA_SPLIT = 0xb ETHTOOL_A_RINGS_CQE_SIZE = 0xc ETHTOOL_A_RINGS_TX_PUSH = 0xd - ETHTOOL_A_RINGS_MAX = 0x10 + ETHTOOL_A_RINGS_RX_PUSH = 0xe + ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN = 0xf + ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN_MAX = 0x10 + ETHTOOL_A_RINGS_HDS_THRESH = 0x11 + ETHTOOL_A_RINGS_HDS_THRESH_MAX = 0x12 + ETHTOOL_A_RINGS_MAX = 0x12 ETHTOOL_A_CHANNELS_UNSPEC = 0x0 ETHTOOL_A_CHANNELS_HEADER = 0x1 ETHTOOL_A_CHANNELS_RX_MAX = 0x2 @@ -3947,7 +4014,7 @@ const ( ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL = 0x17 ETHTOOL_A_COALESCE_USE_CQE_MODE_TX = 0x18 ETHTOOL_A_COALESCE_USE_CQE_MODE_RX = 0x19 - ETHTOOL_A_COALESCE_MAX = 0x1c + ETHTOOL_A_COALESCE_MAX = 0x1e ETHTOOL_A_PAUSE_UNSPEC = 0x0 ETHTOOL_A_PAUSE_HEADER = 0x1 ETHTOOL_A_PAUSE_AUTONEG = 0x2 @@ -3975,7 +4042,9 @@ const ( ETHTOOL_A_TSINFO_TX_TYPES = 0x3 ETHTOOL_A_TSINFO_RX_FILTERS = 0x4 ETHTOOL_A_TSINFO_PHC_INDEX = 0x5 - ETHTOOL_A_TSINFO_MAX = 0x5 + ETHTOOL_A_TSINFO_STATS = 0x6 + ETHTOOL_A_TSINFO_HWTSTAMP_PROVIDER = 0x7 + ETHTOOL_A_TSINFO_MAX = 0x7 ETHTOOL_A_CABLE_TEST_UNSPEC = 0x0 ETHTOOL_A_CABLE_TEST_HEADER = 0x1 ETHTOOL_A_CABLE_TEST_MAX = 0x1 @@ -3991,11 +4060,11 @@ const ( ETHTOOL_A_CABLE_RESULT_UNSPEC = 0x0 ETHTOOL_A_CABLE_RESULT_PAIR = 0x1 ETHTOOL_A_CABLE_RESULT_CODE = 0x2 - ETHTOOL_A_CABLE_RESULT_MAX = 0x2 + ETHTOOL_A_CABLE_RESULT_MAX = 0x3 ETHTOOL_A_CABLE_FAULT_LENGTH_UNSPEC = 0x0 ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR = 0x1 ETHTOOL_A_CABLE_FAULT_LENGTH_CM = 0x2 - ETHTOOL_A_CABLE_FAULT_LENGTH_MAX = 0x2 + ETHTOOL_A_CABLE_FAULT_LENGTH_MAX = 0x3 ETHTOOL_A_CABLE_TEST_NTF_STATUS_UNSPEC = 0x0 ETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED = 0x1 ETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED = 0x2 @@ -4078,6 +4147,107 @@ type EthtoolDrvinfo struct { Regdump_len uint32 } +type EthtoolTsInfo struct { + Cmd uint32 + So_timestamping uint32 + Phc_index int32 + Tx_types uint32 + Tx_reserved [3]uint32 + Rx_filters uint32 + Rx_reserved [3]uint32 +} + +type HwTstampConfig struct { + Flags int32 + Tx_type int32 + Rx_filter int32 +} + +const ( + HWTSTAMP_FILTER_NONE = 0x0 + HWTSTAMP_FILTER_ALL = 0x1 + HWTSTAMP_FILTER_SOME = 0x2 + HWTSTAMP_FILTER_PTP_V1_L4_EVENT = 0x3 + HWTSTAMP_FILTER_PTP_V2_L4_EVENT = 0x6 + HWTSTAMP_FILTER_PTP_V2_L2_EVENT = 0x9 + HWTSTAMP_FILTER_PTP_V2_EVENT = 0xc +) + +const ( + HWTSTAMP_TX_OFF = 0x0 + HWTSTAMP_TX_ON = 0x1 + HWTSTAMP_TX_ONESTEP_SYNC = 0x2 +) + +type ( + PtpClockCaps struct { + Max_adj int32 + N_alarm int32 + N_ext_ts int32 + N_per_out int32 + Pps int32 + N_pins int32 + Cross_timestamping int32 + Adjust_phase int32 + Max_phase_adj int32 + Rsv [11]int32 + } + PtpClockTime struct { + Sec int64 + Nsec uint32 + Reserved uint32 + } + PtpExttsEvent struct { + T PtpClockTime + Index uint32 + Flags uint32 + Rsv [2]uint32 + } + PtpExttsRequest struct { + Index uint32 + Flags uint32 + Rsv [2]uint32 + } + PtpPeroutRequest struct { + StartOrPhase PtpClockTime + Period PtpClockTime + Index uint32 + Flags uint32 + On PtpClockTime + } + PtpPinDesc struct { + Name [64]byte + Index uint32 + Func uint32 + Chan uint32 + Rsv [5]uint32 + } + PtpSysOffset struct { + Samples uint32 + Rsv [3]uint32 + Ts [51]PtpClockTime + } + PtpSysOffsetExtended struct { + Samples uint32 + Clockid int32 + Rsv [2]uint32 + Ts [25][3]PtpClockTime + } + PtpSysOffsetPrecise struct { + Device PtpClockTime + Realtime PtpClockTime + Monoraw PtpClockTime + Rsv [4]uint32 + } +) + +const ( + PTP_PF_NONE = 0x0 + PTP_PF_EXTTS = 0x1 + PTP_PF_PEROUT = 0x2 + PTP_PF_PHYSYNC = 0x3 +) + type ( HIDRawReportDescriptor struct { Size uint32 @@ -4259,6 +4429,7 @@ const ( type LandlockRulesetAttr struct { Access_fs uint64 Access_net uint64 + Scoped uint64 } type LandlockPathBeneathAttr struct { @@ -4471,6 +4642,7 @@ const ( NL80211_ATTR_AKM_SUITES = 0x4c NL80211_ATTR_AP_ISOLATE = 0x60 NL80211_ATTR_AP_SETTINGS_FLAGS = 0x135 + NL80211_ATTR_ASSOC_SPP_AMSDU = 0x14a NL80211_ATTR_AUTH_DATA = 0x9c NL80211_ATTR_AUTH_TYPE = 0x35 NL80211_ATTR_BANDS = 0xef @@ -4481,6 +4653,7 @@ const ( NL80211_ATTR_BSS_BASIC_RATES = 0x24 NL80211_ATTR_BSS = 0x2f NL80211_ATTR_BSS_CTS_PROT = 0x1c + NL80211_ATTR_BSS_DUMP_INCLUDE_USE_DATA = 0x147 NL80211_ATTR_BSS_HT_OPMODE = 0x6d NL80211_ATTR_BSSID = 0xf5 NL80211_ATTR_BSS_SELECT = 0xe3 @@ -4540,6 +4713,7 @@ const ( NL80211_ATTR_DTIM_PERIOD = 0xd NL80211_ATTR_DURATION = 0x57 NL80211_ATTR_EHT_CAPABILITY = 0x136 + NL80211_ATTR_EMA_RNR_ELEMS = 0x145 NL80211_ATTR_EML_CAPABILITY = 0x13d NL80211_ATTR_EXT_CAPA = 0xa9 NL80211_ATTR_EXT_CAPA_MASK = 0xaa @@ -4575,6 +4749,7 @@ const ( NL80211_ATTR_HIDDEN_SSID = 0x7e NL80211_ATTR_HT_CAPABILITY = 0x1f NL80211_ATTR_HT_CAPABILITY_MASK = 0x94 + NL80211_ATTR_HW_TIMESTAMP_ENABLED = 0x144 NL80211_ATTR_IE_ASSOC_RESP = 0x80 NL80211_ATTR_IE = 0x2a NL80211_ATTR_IE_PROBE_RESP = 0x7f @@ -4605,9 +4780,10 @@ const ( NL80211_ATTR_MAC_HINT = 0xc8 NL80211_ATTR_MAC_MASK = 0xd7 NL80211_ATTR_MAX_AP_ASSOC_STA = 0xca - NL80211_ATTR_MAX = 0x14a + NL80211_ATTR_MAX = 0x150 NL80211_ATTR_MAX_CRIT_PROT_DURATION = 0xb4 NL80211_ATTR_MAX_CSA_COUNTERS = 0xce + NL80211_ATTR_MAX_HW_TIMESTAMP_PEERS = 0x143 NL80211_ATTR_MAX_MATCH_SETS = 0x85 NL80211_ATTR_MAX_NUM_AKM_SUITES = 0x13c NL80211_ATTR_MAX_NUM_PMKIDS = 0x56 @@ -4632,9 +4808,12 @@ const ( NL80211_ATTR_MGMT_SUBTYPE = 0x29 NL80211_ATTR_MLD_ADDR = 0x13a NL80211_ATTR_MLD_CAPA_AND_OPS = 0x13e + NL80211_ATTR_MLO_LINK_DISABLED = 0x146 NL80211_ATTR_MLO_LINK_ID = 0x139 NL80211_ATTR_MLO_LINKS = 0x138 NL80211_ATTR_MLO_SUPPORT = 0x13b + NL80211_ATTR_MLO_TTLM_DLINK = 0x148 + NL80211_ATTR_MLO_TTLM_ULINK = 0x149 NL80211_ATTR_MNTR_FLAGS = 0x17 NL80211_ATTR_MPATH_INFO = 0x1b NL80211_ATTR_MPATH_NEXT_HOP = 0x1a @@ -4667,12 +4846,14 @@ const ( NL80211_ATTR_PORT_AUTHORIZED = 0x103 NL80211_ATTR_POWER_RULE_MAX_ANT_GAIN = 0x5 NL80211_ATTR_POWER_RULE_MAX_EIRP = 0x6 + NL80211_ATTR_POWER_RULE_PSD = 0x8 NL80211_ATTR_PREV_BSSID = 0x4f NL80211_ATTR_PRIVACY = 0x46 NL80211_ATTR_PROBE_RESP = 0x91 NL80211_ATTR_PROBE_RESP_OFFLOAD = 0x90 NL80211_ATTR_PROTOCOL_FEATURES = 0xad NL80211_ATTR_PS_STATE = 0x5d + NL80211_ATTR_PUNCT_BITMAP = 0x142 NL80211_ATTR_QOS_MAP = 0xc7 NL80211_ATTR_RADAR_BACKGROUND = 0x134 NL80211_ATTR_RADAR_EVENT = 0xa8 @@ -4801,7 +4982,9 @@ const ( NL80211_ATTR_WIPHY_FREQ = 0x26 NL80211_ATTR_WIPHY_FREQ_HINT = 0xc9 NL80211_ATTR_WIPHY_FREQ_OFFSET = 0x122 + NL80211_ATTR_WIPHY_INTERFACE_COMBINATIONS = 0x14c NL80211_ATTR_WIPHY_NAME = 0x2 + NL80211_ATTR_WIPHY_RADIOS = 0x14b NL80211_ATTR_WIPHY_RETRY_LONG = 0x3e NL80211_ATTR_WIPHY_RETRY_SHORT = 0x3d NL80211_ATTR_WIPHY_RTS_THRESHOLD = 0x40 @@ -4836,6 +5019,8 @@ const ( NL80211_BAND_ATTR_IFTYPE_DATA = 0x9 NL80211_BAND_ATTR_MAX = 0xd NL80211_BAND_ATTR_RATES = 0x2 + NL80211_BAND_ATTR_S1G_CAPA = 0xd + NL80211_BAND_ATTR_S1G_MCS_NSS_SET = 0xc NL80211_BAND_ATTR_VHT_CAPA = 0x8 NL80211_BAND_ATTR_VHT_MCS_SET = 0x7 NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MAC = 0x8 @@ -4859,6 +5044,10 @@ const ( NL80211_BSS_BEACON_INTERVAL = 0x4 NL80211_BSS_BEACON_TSF = 0xd NL80211_BSS_BSSID = 0x1 + NL80211_BSS_CANNOT_USE_6GHZ_PWR_MISMATCH = 0x2 + NL80211_BSS_CANNOT_USE_NSTR_NONPRIMARY = 0x1 + NL80211_BSS_CANNOT_USE_REASONS = 0x18 + NL80211_BSS_CANNOT_USE_UHB_PWR_MISMATCH = 0x2 NL80211_BSS_CAPABILITY = 0x5 NL80211_BSS_CHAIN_SIGNAL = 0x13 NL80211_BSS_CHAN_WIDTH_10 = 0x1 @@ -4890,6 +5079,9 @@ const ( NL80211_BSS_STATUS = 0x9 NL80211_BSS_STATUS_IBSS_JOINED = 0x2 NL80211_BSS_TSF = 0x3 + NL80211_BSS_USE_FOR = 0x17 + NL80211_BSS_USE_FOR_MLD_LINK = 0x2 + NL80211_BSS_USE_FOR_NORMAL = 0x1 NL80211_CHAN_HT20 = 0x1 NL80211_CHAN_HT40MINUS = 0x2 NL80211_CHAN_HT40PLUS = 0x3 @@ -4975,7 +5167,8 @@ const ( NL80211_CMD_LEAVE_IBSS = 0x2c NL80211_CMD_LEAVE_MESH = 0x45 NL80211_CMD_LEAVE_OCB = 0x6d - NL80211_CMD_MAX = 0x9b + NL80211_CMD_LINKS_REMOVED = 0x9a + NL80211_CMD_MAX = 0x9d NL80211_CMD_MICHAEL_MIC_FAILURE = 0x29 NL80211_CMD_MODIFY_LINK_STA = 0x97 NL80211_CMD_NAN_MATCH = 0x78 @@ -5019,6 +5212,7 @@ const ( NL80211_CMD_SET_COALESCE = 0x65 NL80211_CMD_SET_CQM = 0x3f NL80211_CMD_SET_FILS_AAD = 0x92 + NL80211_CMD_SET_HW_TIMESTAMP = 0x99 NL80211_CMD_SET_INTERFACE = 0x6 NL80211_CMD_SET_KEY = 0xa NL80211_CMD_SET_MAC_ACL = 0x5d @@ -5038,6 +5232,7 @@ const ( NL80211_CMD_SET_SAR_SPECS = 0x8c NL80211_CMD_SET_STATION = 0x12 NL80211_CMD_SET_TID_CONFIG = 0x89 + NL80211_CMD_SET_TID_TO_LINK_MAPPING = 0x9b NL80211_CMD_SET_TX_BITRATE_MASK = 0x39 NL80211_CMD_SET_WDS_PEER = 0x42 NL80211_CMD_SET_WIPHY = 0x2 @@ -5105,6 +5300,7 @@ const ( NL80211_EXT_FEATURE_AIRTIME_FAIRNESS = 0x21 NL80211_EXT_FEATURE_AP_PMKSA_CACHING = 0x22 NL80211_EXT_FEATURE_AQL = 0x28 + NL80211_EXT_FEATURE_AUTH_AND_DEAUTH_RANDOM_TA = 0x40 NL80211_EXT_FEATURE_BEACON_PROTECTION_CLIENT = 0x2e NL80211_EXT_FEATURE_BEACON_PROTECTION = 0x29 NL80211_EXT_FEATURE_BEACON_RATE_HE = 0x36 @@ -5120,6 +5316,7 @@ const ( NL80211_EXT_FEATURE_CQM_RSSI_LIST = 0xd NL80211_EXT_FEATURE_DATA_ACK_SIGNAL_SUPPORT = 0x1b NL80211_EXT_FEATURE_DEL_IBSS_STA = 0x2c + NL80211_EXT_FEATURE_DFS_CONCURRENT = 0x43 NL80211_EXT_FEATURE_DFS_OFFLOAD = 0x19 NL80211_EXT_FEATURE_ENABLE_FTM_RESPONDER = 0x20 NL80211_EXT_FEATURE_EXT_KEY_ID = 0x24 @@ -5139,9 +5336,12 @@ const ( NL80211_EXT_FEATURE_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION = 0x14 NL80211_EXT_FEATURE_OCE_PROBE_REQ_HIGH_TX_RATE = 0x13 NL80211_EXT_FEATURE_OPERATING_CHANNEL_VALIDATION = 0x31 + NL80211_EXT_FEATURE_OWE_OFFLOAD_AP = 0x42 + NL80211_EXT_FEATURE_OWE_OFFLOAD = 0x41 NL80211_EXT_FEATURE_POWERED_ADDR_CHANGE = 0x3d NL80211_EXT_FEATURE_PROTECTED_TWT = 0x2b NL80211_EXT_FEATURE_PROT_RANGE_NEGO_AND_MEASURE = 0x39 + NL80211_EXT_FEATURE_PUNCT = 0x3e NL80211_EXT_FEATURE_RADAR_BACKGROUND = 0x3c NL80211_EXT_FEATURE_RRM = 0x1 NL80211_EXT_FEATURE_SAE_OFFLOAD_AP = 0x33 @@ -5153,8 +5353,10 @@ const ( NL80211_EXT_FEATURE_SCHED_SCAN_BAND_SPECIFIC_RSSI_THOLD = 0x23 NL80211_EXT_FEATURE_SCHED_SCAN_RELATIVE_RSSI = 0xc NL80211_EXT_FEATURE_SECURE_LTF = 0x37 + NL80211_EXT_FEATURE_SECURE_NAN = 0x3f NL80211_EXT_FEATURE_SECURE_RTT = 0x38 NL80211_EXT_FEATURE_SET_SCAN_DWELL = 0x5 + NL80211_EXT_FEATURE_SPP_AMSDU_SUPPORT = 0x44 NL80211_EXT_FEATURE_STA_TX_PWR = 0x25 NL80211_EXT_FEATURE_TXQS = 0x1c NL80211_EXT_FEATURE_UNSOL_BCAST_PROBE_RESP = 0x35 @@ -5201,7 +5403,10 @@ const ( NL80211_FREQUENCY_ATTR_2MHZ = 0x16 NL80211_FREQUENCY_ATTR_4MHZ = 0x17 NL80211_FREQUENCY_ATTR_8MHZ = 0x18 + NL80211_FREQUENCY_ATTR_ALLOW_6GHZ_VLP_AP = 0x21 + NL80211_FREQUENCY_ATTR_CAN_MONITOR = 0x20 NL80211_FREQUENCY_ATTR_DFS_CAC_TIME = 0xd + NL80211_FREQUENCY_ATTR_DFS_CONCURRENT = 0x1d NL80211_FREQUENCY_ATTR_DFS_STATE = 0x7 NL80211_FREQUENCY_ATTR_DFS_TIME = 0x8 NL80211_FREQUENCY_ATTR_DISABLED = 0x2 @@ -5209,12 +5414,14 @@ const ( NL80211_FREQUENCY_ATTR_GO_CONCURRENT = 0xf NL80211_FREQUENCY_ATTR_INDOOR_ONLY = 0xe NL80211_FREQUENCY_ATTR_IR_CONCURRENT = 0xf - NL80211_FREQUENCY_ATTR_MAX = 0x20 + NL80211_FREQUENCY_ATTR_MAX = 0x21 NL80211_FREQUENCY_ATTR_MAX_TX_POWER = 0x6 NL80211_FREQUENCY_ATTR_NO_10MHZ = 0x11 NL80211_FREQUENCY_ATTR_NO_160MHZ = 0xc NL80211_FREQUENCY_ATTR_NO_20MHZ = 0x10 NL80211_FREQUENCY_ATTR_NO_320MHZ = 0x1a + NL80211_FREQUENCY_ATTR_NO_6GHZ_AFC_CLIENT = 0x1f + NL80211_FREQUENCY_ATTR_NO_6GHZ_VLP_CLIENT = 0x1e NL80211_FREQUENCY_ATTR_NO_80MHZ = 0xb NL80211_FREQUENCY_ATTR_NO_EHT = 0x1b NL80211_FREQUENCY_ATTR_NO_HE = 0x13 @@ -5222,8 +5429,11 @@ const ( NL80211_FREQUENCY_ATTR_NO_HT40_PLUS = 0xa NL80211_FREQUENCY_ATTR_NO_IBSS = 0x3 NL80211_FREQUENCY_ATTR_NO_IR = 0x3 + NL80211_FREQUENCY_ATTR_NO_UHB_AFC_CLIENT = 0x1f + NL80211_FREQUENCY_ATTR_NO_UHB_VLP_CLIENT = 0x1e NL80211_FREQUENCY_ATTR_OFFSET = 0x14 NL80211_FREQUENCY_ATTR_PASSIVE_SCAN = 0x3 + NL80211_FREQUENCY_ATTR_PSD = 0x1c NL80211_FREQUENCY_ATTR_RADAR = 0x5 NL80211_FREQUENCY_ATTR_WMM = 0x12 NL80211_FTM_RESP_ATTR_CIVICLOC = 0x3 @@ -5288,6 +5498,7 @@ const ( NL80211_IFTYPE_STATION = 0x2 NL80211_IFTYPE_UNSPECIFIED = 0x0 NL80211_IFTYPE_WDS = 0x5 + NL80211_KCK_EXT_LEN_32 = 0x20 NL80211_KCK_EXT_LEN = 0x18 NL80211_KCK_LEN = 0x10 NL80211_KEK_EXT_LEN = 0x20 @@ -5316,6 +5527,7 @@ const ( NL80211_MAX_SUPP_HT_RATES = 0x4d NL80211_MAX_SUPP_RATES = 0x20 NL80211_MAX_SUPP_REG_RULES = 0x80 + NL80211_MAX_SUPP_SELECTORS = 0x80 NL80211_MBSSID_CONFIG_ATTR_EMA = 0x5 NL80211_MBSSID_CONFIG_ATTR_INDEX = 0x3 NL80211_MBSSID_CONFIG_ATTR_MAX = 0x5 @@ -5377,7 +5589,7 @@ const ( NL80211_MNTR_FLAG_CONTROL = 0x3 NL80211_MNTR_FLAG_COOK_FRAMES = 0x5 NL80211_MNTR_FLAG_FCSFAIL = 0x1 - NL80211_MNTR_FLAG_MAX = 0x6 + NL80211_MNTR_FLAG_MAX = 0x7 NL80211_MNTR_FLAG_OTHER_BSS = 0x4 NL80211_MNTR_FLAG_PLCPFAIL = 0x2 NL80211_MPATH_FLAG_ACTIVE = 0x1 @@ -5561,11 +5773,16 @@ const ( NL80211_RADAR_PRE_CAC_EXPIRED = 0x4 NL80211_RATE_INFO_10_MHZ_WIDTH = 0xb NL80211_RATE_INFO_160_MHZ_WIDTH = 0xa + NL80211_RATE_INFO_16_MHZ_WIDTH = 0x1d + NL80211_RATE_INFO_1_MHZ_WIDTH = 0x19 + NL80211_RATE_INFO_2_MHZ_WIDTH = 0x1a NL80211_RATE_INFO_320_MHZ_WIDTH = 0x12 NL80211_RATE_INFO_40_MHZ_WIDTH = 0x3 + NL80211_RATE_INFO_4_MHZ_WIDTH = 0x1b NL80211_RATE_INFO_5_MHZ_WIDTH = 0xc NL80211_RATE_INFO_80_MHZ_WIDTH = 0x8 NL80211_RATE_INFO_80P80_MHZ_WIDTH = 0x9 + NL80211_RATE_INFO_8_MHZ_WIDTH = 0x1c NL80211_RATE_INFO_BITRATE32 = 0x5 NL80211_RATE_INFO_BITRATE = 0x1 NL80211_RATE_INFO_EHT_GI_0_8 = 0x0 @@ -5611,6 +5828,8 @@ const ( NL80211_RATE_INFO_HE_RU_ALLOC = 0x11 NL80211_RATE_INFO_MAX = 0x1d NL80211_RATE_INFO_MCS = 0x2 + NL80211_RATE_INFO_S1G_MCS = 0x17 + NL80211_RATE_INFO_S1G_NSS = 0x18 NL80211_RATE_INFO_SHORT_GI = 0x4 NL80211_RATE_INFO_VHT_MCS = 0x6 NL80211_RATE_INFO_VHT_NSS = 0x7 @@ -5628,14 +5847,19 @@ const ( NL80211_REKEY_DATA_KEK = 0x1 NL80211_REKEY_DATA_REPLAY_CTR = 0x3 NL80211_REPLAY_CTR_LEN = 0x8 + NL80211_RRF_ALLOW_6GHZ_VLP_AP = 0x1000000 NL80211_RRF_AUTO_BW = 0x800 NL80211_RRF_DFS = 0x10 + NL80211_RRF_DFS_CONCURRENT = 0x200000 NL80211_RRF_GO_CONCURRENT = 0x1000 NL80211_RRF_IR_CONCURRENT = 0x1000 NL80211_RRF_NO_160MHZ = 0x10000 NL80211_RRF_NO_320MHZ = 0x40000 + NL80211_RRF_NO_6GHZ_AFC_CLIENT = 0x800000 + NL80211_RRF_NO_6GHZ_VLP_CLIENT = 0x400000 NL80211_RRF_NO_80MHZ = 0x8000 NL80211_RRF_NO_CCK = 0x2 + NL80211_RRF_NO_EHT = 0x80000 NL80211_RRF_NO_HE = 0x20000 NL80211_RRF_NO_HT40 = 0x6000 NL80211_RRF_NO_HT40MINUS = 0x2000 @@ -5646,7 +5870,10 @@ const ( NL80211_RRF_NO_IR = 0x80 NL80211_RRF_NO_OFDM = 0x1 NL80211_RRF_NO_OUTDOOR = 0x8 + NL80211_RRF_NO_UHB_AFC_CLIENT = 0x800000 + NL80211_RRF_NO_UHB_VLP_CLIENT = 0x400000 NL80211_RRF_PASSIVE_SCAN = 0x80 + NL80211_RRF_PSD = 0x100000 NL80211_RRF_PTMP_ONLY = 0x40 NL80211_RRF_PTP_ONLY = 0x20 NL80211_RXMGMT_FLAG_ANSWERED = 0x1 @@ -5707,6 +5934,7 @@ const ( NL80211_STA_FLAG_MAX_OLD_API = 0x6 NL80211_STA_FLAG_MFP = 0x4 NL80211_STA_FLAG_SHORT_PREAMBLE = 0x2 + NL80211_STA_FLAG_SPP_AMSDU = 0x8 NL80211_STA_FLAG_TDLS_PEER = 0x6 NL80211_STA_FLAG_WME = 0x3 NL80211_STA_INFO_ACK_SIGNAL_AVG = 0x23 @@ -5865,6 +6093,13 @@ const ( NL80211_VHT_CAPABILITY_LEN = 0xc NL80211_VHT_NSS_MAX = 0x8 NL80211_WIPHY_NAME_MAXLEN = 0x40 + NL80211_WIPHY_RADIO_ATTR_FREQ_RANGE = 0x2 + NL80211_WIPHY_RADIO_ATTR_INDEX = 0x1 + NL80211_WIPHY_RADIO_ATTR_INTERFACE_COMBINATION = 0x3 + NL80211_WIPHY_RADIO_ATTR_MAX = 0x4 + NL80211_WIPHY_RADIO_FREQ_ATTR_END = 0x2 + NL80211_WIPHY_RADIO_FREQ_ATTR_MAX = 0x2 + NL80211_WIPHY_RADIO_FREQ_ATTR_START = 0x1 NL80211_WMMR_AIFSN = 0x3 NL80211_WMMR_CW_MAX = 0x2 NL80211_WMMR_CW_MIN = 0x1 @@ -5896,6 +6131,7 @@ const ( NL80211_WOWLAN_TRIG_PKT_PATTERN = 0x4 NL80211_WOWLAN_TRIG_RFKILL_RELEASE = 0x9 NL80211_WOWLAN_TRIG_TCP_CONNECTION = 0xe + NL80211_WOWLAN_TRIG_UNPROTECTED_DEAUTH_DISASSOC = 0x14 NL80211_WOWLAN_TRIG_WAKEUP_PKT_80211 = 0xa NL80211_WOWLAN_TRIG_WAKEUP_PKT_80211_LEN = 0xb NL80211_WOWLAN_TRIG_WAKEUP_PKT_8023 = 0xc @@ -6032,3 +6268,5 @@ type SockDiagReq struct { Family uint8 Protocol uint8 } + +const RTM_NEWNVLAN = 0x70 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go index fd402da43..62db85f6c 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go @@ -285,10 +285,16 @@ type Taskstats struct { _ [4]byte Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]int8 @@ -324,11 +330,17 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 _ [4]byte Ac_tgetime uint64 @@ -336,8 +348,12 @@ type Taskstats struct { Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go index eb7a5e186..7d89d648d 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go @@ -300,10 +300,16 @@ type Taskstats struct { Ac_nice uint8 Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]int8 @@ -338,19 +344,29 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 Ac_tgetime uint64 Ac_exe_dev uint64 Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go index d78ac108b..9c0b39eec 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go @@ -276,10 +276,16 @@ type Taskstats struct { _ [4]byte Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]uint8 @@ -315,11 +321,17 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 _ [4]byte Ac_tgetime uint64 @@ -327,8 +339,12 @@ type Taskstats struct { Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go index cd06d47f1..de9c7ff36 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go @@ -279,10 +279,16 @@ type Taskstats struct { Ac_nice uint8 Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]int8 @@ -317,19 +323,29 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 Ac_tgetime uint64 Ac_exe_dev uint64 Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go index 2f28fe26c..2336bd2bf 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go @@ -280,10 +280,16 @@ type Taskstats struct { Ac_nice uint8 Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]int8 @@ -318,19 +324,29 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 Ac_tgetime uint64 Ac_exe_dev uint64 Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go index 71d6cac2f..4711f0be1 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go @@ -281,10 +281,16 @@ type Taskstats struct { _ [4]byte Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]int8 @@ -320,11 +326,17 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 _ [4]byte Ac_tgetime uint64 @@ -332,8 +344,12 @@ type Taskstats struct { Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go index 8596d4535..ab99a34b9 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go @@ -282,10 +282,16 @@ type Taskstats struct { Ac_nice uint8 Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]int8 @@ -320,19 +326,29 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 Ac_tgetime uint64 Ac_exe_dev uint64 Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go index cd60ea186..04c9866e3 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go @@ -282,10 +282,16 @@ type Taskstats struct { Ac_nice uint8 Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]int8 @@ -320,19 +326,29 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 Ac_tgetime uint64 Ac_exe_dev uint64 Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go index b0ae420c4..60aa69f61 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go @@ -281,10 +281,16 @@ type Taskstats struct { _ [4]byte Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]int8 @@ -320,11 +326,17 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 _ [4]byte Ac_tgetime uint64 @@ -332,8 +344,12 @@ type Taskstats struct { Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go index 835972875..cb4fad785 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go @@ -288,10 +288,16 @@ type Taskstats struct { _ [4]byte Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]uint8 @@ -327,11 +333,17 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 _ [4]byte Ac_tgetime uint64 @@ -339,8 +351,12 @@ type Taskstats struct { Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go index 69eb6a5c6..60272cfce 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go @@ -289,10 +289,16 @@ type Taskstats struct { Ac_nice uint8 Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]uint8 @@ -327,19 +333,29 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 Ac_tgetime uint64 Ac_exe_dev uint64 Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go index 5f583cb62..3f5b91bc0 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go @@ -289,10 +289,16 @@ type Taskstats struct { Ac_nice uint8 Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]uint8 @@ -327,19 +333,29 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 Ac_tgetime uint64 Ac_exe_dev uint64 Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go index 15adc0414..51550f15a 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go @@ -307,10 +307,16 @@ type Taskstats struct { Ac_nice uint8 Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]uint8 @@ -345,19 +351,29 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 Ac_tgetime uint64 Ac_exe_dev uint64 Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint64 @@ -727,6 +743,37 @@ const ( RISCV_HWPROBE_EXT_ZBA = 0x8 RISCV_HWPROBE_EXT_ZBB = 0x10 RISCV_HWPROBE_EXT_ZBS = 0x20 + RISCV_HWPROBE_EXT_ZICBOZ = 0x40 + RISCV_HWPROBE_EXT_ZBC = 0x80 + RISCV_HWPROBE_EXT_ZBKB = 0x100 + RISCV_HWPROBE_EXT_ZBKC = 0x200 + RISCV_HWPROBE_EXT_ZBKX = 0x400 + RISCV_HWPROBE_EXT_ZKND = 0x800 + RISCV_HWPROBE_EXT_ZKNE = 0x1000 + RISCV_HWPROBE_EXT_ZKNH = 0x2000 + RISCV_HWPROBE_EXT_ZKSED = 0x4000 + RISCV_HWPROBE_EXT_ZKSH = 0x8000 + RISCV_HWPROBE_EXT_ZKT = 0x10000 + RISCV_HWPROBE_EXT_ZVBB = 0x20000 + RISCV_HWPROBE_EXT_ZVBC = 0x40000 + RISCV_HWPROBE_EXT_ZVKB = 0x80000 + RISCV_HWPROBE_EXT_ZVKG = 0x100000 + RISCV_HWPROBE_EXT_ZVKNED = 0x200000 + RISCV_HWPROBE_EXT_ZVKNHA = 0x400000 + RISCV_HWPROBE_EXT_ZVKNHB = 0x800000 + RISCV_HWPROBE_EXT_ZVKSED = 0x1000000 + RISCV_HWPROBE_EXT_ZVKSH = 0x2000000 + RISCV_HWPROBE_EXT_ZVKT = 0x4000000 + RISCV_HWPROBE_EXT_ZFH = 0x8000000 + RISCV_HWPROBE_EXT_ZFHMIN = 0x10000000 + RISCV_HWPROBE_EXT_ZIHINTNTL = 0x20000000 + RISCV_HWPROBE_EXT_ZVFH = 0x40000000 + RISCV_HWPROBE_EXT_ZVFHMIN = 0x80000000 + RISCV_HWPROBE_EXT_ZFA = 0x100000000 + RISCV_HWPROBE_EXT_ZTSO = 0x200000000 + RISCV_HWPROBE_EXT_ZACAS = 0x400000000 + RISCV_HWPROBE_EXT_ZICOND = 0x800000000 + RISCV_HWPROBE_EXT_ZIHINTPAUSE = 0x1000000000 RISCV_HWPROBE_KEY_CPUPERF_0 = 0x5 RISCV_HWPROBE_MISALIGNED_UNKNOWN = 0x0 RISCV_HWPROBE_MISALIGNED_EMULATED = 0x1 @@ -734,4 +781,6 @@ const ( RISCV_HWPROBE_MISALIGNED_FAST = 0x3 RISCV_HWPROBE_MISALIGNED_UNSUPPORTED = 0x4 RISCV_HWPROBE_MISALIGNED_MASK = 0x7 + RISCV_HWPROBE_KEY_ZICBOZ_BLOCK_SIZE = 0x6 + RISCV_HWPROBE_WHICH_CPUS = 0x1 ) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go index cf3ce9003..3239e50e0 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go @@ -302,10 +302,16 @@ type Taskstats struct { Ac_nice uint8 Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]int8 @@ -340,19 +346,29 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 Ac_tgetime uint64 Ac_exe_dev uint64 Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go index 590b56739..faf200278 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go @@ -284,10 +284,16 @@ type Taskstats struct { Ac_nice uint8 Cpu_count uint64 Cpu_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 Blkio_count uint64 Blkio_delay_total uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 Swapin_count uint64 Swapin_delay_total uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 Cpu_run_real_total uint64 Cpu_run_virtual_total uint64 Ac_comm [32]int8 @@ -322,19 +328,29 @@ type Taskstats struct { Cpu_scaled_run_real_total uint64 Freepages_count uint64 Freepages_delay_total uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 Thrashing_count uint64 Thrashing_delay_total uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 Ac_tgid uint32 Ac_tgetime uint64 Ac_exe_dev uint64 Ac_exe_inode uint64 Wpcopy_count uint64 Wpcopy_delay_total uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 Irq_count uint64 Irq_delay_total uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go b/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go index d9a13af46..2e5d5a443 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go +++ b/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go @@ -377,6 +377,12 @@ type Flock_t struct { Pid int32 } +type F_cnvrt struct { + Cvtcmd int32 + Pccsid int16 + Fccsid int16 +} + type Termios struct { Cflag uint32 Iflag uint32 diff --git a/vendor/golang.org/x/sys/windows/dll_windows.go b/vendor/golang.org/x/sys/windows/dll_windows.go index 115341fba..3ca814f54 100644 --- a/vendor/golang.org/x/sys/windows/dll_windows.go +++ b/vendor/golang.org/x/sys/windows/dll_windows.go @@ -43,8 +43,8 @@ type DLL struct { // LoadDLL loads DLL file into memory. // // Warning: using LoadDLL without an absolute path name is subject to -// DLL preloading attacks. To safely load a system DLL, use LazyDLL -// with System set to true, or use LoadLibraryEx directly. +// DLL preloading attacks. To safely load a system DLL, use [NewLazySystemDLL], +// or use [LoadLibraryEx] directly. func LoadDLL(name string) (dll *DLL, err error) { namep, err := UTF16PtrFromString(name) if err != nil { @@ -65,7 +65,7 @@ func LoadDLL(name string) (dll *DLL, err error) { return d, nil } -// MustLoadDLL is like LoadDLL but panics if load operation failes. +// MustLoadDLL is like LoadDLL but panics if load operation fails. func MustLoadDLL(name string) *DLL { d, e := LoadDLL(name) if e != nil { @@ -271,6 +271,9 @@ func (d *LazyDLL) NewProc(name string) *LazyProc { } // NewLazyDLL creates new LazyDLL associated with DLL file. +// +// Warning: using NewLazyDLL without an absolute path name is subject to +// DLL preloading attacks. To safely load a system DLL, use [NewLazySystemDLL]. func NewLazyDLL(name string) *LazyDLL { return &LazyDLL{Name: name} } @@ -410,7 +413,3 @@ func loadLibraryEx(name string, system bool) (*DLL, error) { } return &DLL{Name: name, Handle: h}, nil } - -type errString string - -func (s errString) Error() string { return string(s) } diff --git a/vendor/golang.org/x/sys/windows/security_windows.go b/vendor/golang.org/x/sys/windows/security_windows.go index 97651b5bd..a8b0364c7 100644 --- a/vendor/golang.org/x/sys/windows/security_windows.go +++ b/vendor/golang.org/x/sys/windows/security_windows.go @@ -1179,7 +1179,7 @@ type OBJECTS_AND_NAME struct { //sys makeSelfRelativeSD(absoluteSD *SECURITY_DESCRIPTOR, selfRelativeSD *SECURITY_DESCRIPTOR, selfRelativeSDSize *uint32) (err error) = advapi32.MakeSelfRelativeSD //sys setEntriesInAcl(countExplicitEntries uint32, explicitEntries *EXPLICIT_ACCESS, oldACL *ACL, newACL **ACL) (ret error) = advapi32.SetEntriesInAclW -//sys GetAce(acl *ACL, aceIndex uint32, pAce **ACCESS_ALLOWED_ACE) (ret error) = advapi32.GetAce +//sys GetAce(acl *ACL, aceIndex uint32, pAce **ACCESS_ALLOWED_ACE) (err error) = advapi32.GetAce // Control returns the security descriptor control bits. func (sd *SECURITY_DESCRIPTOR) Control() (control SECURITY_DESCRIPTOR_CONTROL, revision uint32, err error) { @@ -1303,7 +1303,10 @@ func (selfRelativeSD *SECURITY_DESCRIPTOR) ToAbsolute() (absoluteSD *SECURITY_DE return nil, err } if absoluteSDSize > 0 { - absoluteSD = (*SECURITY_DESCRIPTOR)(unsafe.Pointer(&make([]byte, absoluteSDSize)[0])) + absoluteSD = new(SECURITY_DESCRIPTOR) + if unsafe.Sizeof(*absoluteSD) < uintptr(absoluteSDSize) { + panic("sizeof(SECURITY_DESCRIPTOR) too small") + } } var ( dacl *ACL @@ -1312,19 +1315,55 @@ func (selfRelativeSD *SECURITY_DESCRIPTOR) ToAbsolute() (absoluteSD *SECURITY_DE group *SID ) if daclSize > 0 { - dacl = (*ACL)(unsafe.Pointer(&make([]byte, daclSize)[0])) + dacl = (*ACL)(unsafe.Pointer(unsafe.SliceData(make([]byte, daclSize)))) } if saclSize > 0 { - sacl = (*ACL)(unsafe.Pointer(&make([]byte, saclSize)[0])) + sacl = (*ACL)(unsafe.Pointer(unsafe.SliceData(make([]byte, saclSize)))) } if ownerSize > 0 { - owner = (*SID)(unsafe.Pointer(&make([]byte, ownerSize)[0])) + owner = (*SID)(unsafe.Pointer(unsafe.SliceData(make([]byte, ownerSize)))) } if groupSize > 0 { - group = (*SID)(unsafe.Pointer(&make([]byte, groupSize)[0])) + group = (*SID)(unsafe.Pointer(unsafe.SliceData(make([]byte, groupSize)))) } + // We call into Windows via makeAbsoluteSD, which sets up + // pointers within absoluteSD that point to other chunks of memory + // we pass into makeAbsoluteSD, and that happens outside the view of the GC. + // We therefore take some care here to then verify the pointers are as we expect + // and set them explicitly in view of the GC. See https://go.dev/issue/73199. + // TODO: consider weak pointers once Go 1.24 is appropriate. See suggestion in https://go.dev/cl/663575. err = makeAbsoluteSD(selfRelativeSD, absoluteSD, &absoluteSDSize, dacl, &daclSize, sacl, &saclSize, owner, &ownerSize, group, &groupSize) + if err != nil { + // Don't return absoluteSD, which might be partially initialized. + return nil, err + } + // Before using any fields, verify absoluteSD is in the format we expect according to Windows. + // See https://learn.microsoft.com/en-us/windows/win32/secauthz/absolute-and-self-relative-security-descriptors + absControl, _, err := absoluteSD.Control() + if err != nil { + panic("absoluteSD: " + err.Error()) + } + if absControl&SE_SELF_RELATIVE != 0 { + panic("absoluteSD not in absolute format") + } + if absoluteSD.dacl != dacl { + panic("dacl pointer mismatch") + } + if absoluteSD.sacl != sacl { + panic("sacl pointer mismatch") + } + if absoluteSD.owner != owner { + panic("owner pointer mismatch") + } + if absoluteSD.group != group { + panic("group pointer mismatch") + } + absoluteSD.dacl = dacl + absoluteSD.sacl = sacl + absoluteSD.owner = owner + absoluteSD.group = group + return } diff --git a/vendor/golang.org/x/sys/windows/syscall_windows.go b/vendor/golang.org/x/sys/windows/syscall_windows.go index 6525c62f3..640f6b153 100644 --- a/vendor/golang.org/x/sys/windows/syscall_windows.go +++ b/vendor/golang.org/x/sys/windows/syscall_windows.go @@ -17,8 +17,10 @@ import ( "unsafe" ) -type Handle uintptr -type HWND uintptr +type ( + Handle uintptr + HWND uintptr +) const ( InvalidHandle = ^Handle(0) @@ -166,6 +168,8 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys CreateNamedPipe(name *uint16, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *SecurityAttributes) (handle Handle, err error) [failretval==InvalidHandle] = CreateNamedPipeW //sys ConnectNamedPipe(pipe Handle, overlapped *Overlapped) (err error) //sys DisconnectNamedPipe(pipe Handle) (err error) +//sys GetNamedPipeClientProcessId(pipe Handle, clientProcessID *uint32) (err error) +//sys GetNamedPipeServerProcessId(pipe Handle, serverProcessID *uint32) (err error) //sys GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error) //sys GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) = GetNamedPipeHandleStateW //sys SetNamedPipeHandleState(pipe Handle, state *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32) (err error) = SetNamedPipeHandleState @@ -211,6 +215,10 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error) //sys ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) [failretval<=32] = shell32.ShellExecuteW //sys GetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32, err error) = user32.GetWindowThreadProcessId +//sys LoadKeyboardLayout(name *uint16, flags uint32) (hkl Handle, err error) [failretval==0] = user32.LoadKeyboardLayoutW +//sys UnloadKeyboardLayout(hkl Handle) (err error) = user32.UnloadKeyboardLayout +//sys GetKeyboardLayout(tid uint32) (hkl Handle) = user32.GetKeyboardLayout +//sys ToUnicodeEx(vkey uint32, scancode uint32, keystate *byte, pwszBuff *uint16, cchBuff int32, flags uint32, hkl Handle) (ret int32) = user32.ToUnicodeEx //sys GetShellWindow() (shellWindow HWND) = user32.GetShellWindow //sys MessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) [failretval==0] = user32.MessageBoxW //sys ExitWindowsEx(flags uint32, reason uint32) (err error) = user32.ExitWindowsEx @@ -307,6 +315,10 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys SetConsoleMode(console Handle, mode uint32) (err error) = kernel32.SetConsoleMode //sys GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) = kernel32.GetConsoleScreenBufferInfo //sys setConsoleCursorPosition(console Handle, position uint32) (err error) = kernel32.SetConsoleCursorPosition +//sys GetConsoleCP() (cp uint32, err error) = kernel32.GetConsoleCP +//sys GetConsoleOutputCP() (cp uint32, err error) = kernel32.GetConsoleOutputCP +//sys SetConsoleCP(cp uint32) (err error) = kernel32.SetConsoleCP +//sys SetConsoleOutputCP(cp uint32) (err error) = kernel32.SetConsoleOutputCP //sys WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) = kernel32.WriteConsoleW //sys ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) = kernel32.ReadConsoleW //sys resizePseudoConsole(pconsole Handle, size uint32) (hr error) = kernel32.ResizePseudoConsole @@ -715,20 +727,12 @@ func DurationSinceBoot() time.Duration { } func Ftruncate(fd Handle, length int64) (err error) { - curoffset, e := Seek(fd, 0, 1) - if e != nil { - return e - } - defer Seek(fd, curoffset, 0) - _, e = Seek(fd, length, 0) - if e != nil { - return e - } - e = SetEndOfFile(fd) - if e != nil { - return e + type _FILE_END_OF_FILE_INFO struct { + EndOfFile int64 } - return nil + var info _FILE_END_OF_FILE_INFO + info.EndOfFile = length + return SetFileInformationByHandle(fd, FileEndOfFileInfo, (*byte)(unsafe.Pointer(&info)), uint32(unsafe.Sizeof(info))) } func Gettimeofday(tv *Timeval) (err error) { @@ -866,6 +870,7 @@ const socket_error = uintptr(^uint32(0)) //sys WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSARecvFrom //sys WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSASendTo //sys WSASocket(af int32, typ int32, protocol int32, protoInfo *WSAProtocolInfo, group uint32, flags uint32) (handle Handle, err error) [failretval==InvalidHandle] = ws2_32.WSASocketW +//sys WSADuplicateSocket(s Handle, processID uint32, info *WSAProtocolInfo) (err error) [failretval!=0] = ws2_32.WSADuplicateSocketW //sys GetHostByName(name string) (h *Hostent, err error) [failretval==nil] = ws2_32.gethostbyname //sys GetServByName(name string, proto string) (s *Servent, err error) [failretval==nil] = ws2_32.getservbyname //sys Ntohs(netshort uint16) (u uint16) = ws2_32.ntohs @@ -884,6 +889,11 @@ const socket_error = uintptr(^uint32(0)) //sys GetACP() (acp uint32) = kernel32.GetACP //sys MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) = kernel32.MultiByteToWideChar //sys getBestInterfaceEx(sockaddr unsafe.Pointer, pdwBestIfIndex *uint32) (errcode error) = iphlpapi.GetBestInterfaceEx +//sys GetIfEntry2Ex(level uint32, row *MibIfRow2) (errcode error) = iphlpapi.GetIfEntry2Ex +//sys GetUnicastIpAddressEntry(row *MibUnicastIpAddressRow) (errcode error) = iphlpapi.GetUnicastIpAddressEntry +//sys NotifyIpInterfaceChange(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) = iphlpapi.NotifyIpInterfaceChange +//sys NotifyUnicastIpAddressChange(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) = iphlpapi.NotifyUnicastIpAddressChange +//sys CancelMibChangeNotify2(notificationHandle Handle) (errcode error) = iphlpapi.CancelMibChangeNotify2 // For testing: clients can set this flag to force // creation of IPv6 sockets to return EAFNOSUPPORT. @@ -1368,9 +1378,11 @@ func SetsockoptLinger(fd Handle, level, opt int, l *Linger) (err error) { func SetsockoptInet4Addr(fd Handle, level, opt int, value [4]byte) (err error) { return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&value[0])), 4) } + func SetsockoptIPMreq(fd Handle, level, opt int, mreq *IPMreq) (err error) { return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(mreq)), int32(unsafe.Sizeof(*mreq))) } + func SetsockoptIPv6Mreq(fd Handle, level, opt int, mreq *IPv6Mreq) (err error) { return syscall.EWINDOWS } @@ -1673,19 +1685,23 @@ func (s NTStatus) Error() string { // do not use NTUnicodeString, and instead UTF16PtrFromString should be used for // the more common *uint16 string type. func NewNTUnicodeString(s string) (*NTUnicodeString, error) { - var u NTUnicodeString - s16, err := UTF16PtrFromString(s) + s16, err := UTF16FromString(s) if err != nil { return nil, err } - RtlInitUnicodeString(&u, s16) - return &u, nil + n := uint16(len(s16) * 2) + return &NTUnicodeString{ + Length: n - 2, // subtract 2 bytes for the NULL terminator + MaximumLength: n, + Buffer: &s16[0], + }, nil } // Slice returns a uint16 slice that aliases the data in the NTUnicodeString. func (s *NTUnicodeString) Slice() []uint16 { - slice := unsafe.Slice(s.Buffer, s.MaximumLength) - return slice[:s.Length] + // Note: this rounds the length down, if it happens + // to (incorrectly) be odd. Probably safer than rounding up. + return unsafe.Slice(s.Buffer, s.MaximumLength/2)[:s.Length/2] } func (s *NTUnicodeString) String() string { diff --git a/vendor/golang.org/x/sys/windows/types_windows.go b/vendor/golang.org/x/sys/windows/types_windows.go index d8cb71db0..958bcf47a 100644 --- a/vendor/golang.org/x/sys/windows/types_windows.go +++ b/vendor/golang.org/x/sys/windows/types_windows.go @@ -176,6 +176,7 @@ const ( WAIT_FAILED = 0xFFFFFFFF // Access rights for process. + PROCESS_ALL_ACCESS = 0xFFFF PROCESS_CREATE_PROCESS = 0x0080 PROCESS_CREATE_THREAD = 0x0002 PROCESS_DUP_HANDLE = 0x0040 @@ -1060,6 +1061,7 @@ const ( SIO_GET_EXTENSION_FUNCTION_POINTER = IOC_INOUT | IOC_WS2 | 6 SIO_KEEPALIVE_VALS = IOC_IN | IOC_VENDOR | 4 SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12 + SIO_UDP_NETRESET = IOC_IN | IOC_VENDOR | 15 // cf. http://support.microsoft.com/default.aspx?scid=kb;en-us;257460 @@ -1072,6 +1074,7 @@ const ( IP_ADD_MEMBERSHIP = 0xc IP_DROP_MEMBERSHIP = 0xd IP_PKTINFO = 0x13 + IP_MTU_DISCOVER = 0x47 IPV6_V6ONLY = 0x1b IPV6_UNICAST_HOPS = 0x4 @@ -1081,6 +1084,7 @@ const ( IPV6_JOIN_GROUP = 0xc IPV6_LEAVE_GROUP = 0xd IPV6_PKTINFO = 0x13 + IPV6_MTU_DISCOVER = 0x47 MSG_OOB = 0x1 MSG_PEEK = 0x2 @@ -1130,6 +1134,15 @@ const ( WSASYS_STATUS_LEN = 128 ) +// enum PMTUD_STATE from ws2ipdef.h +const ( + IP_PMTUDISC_NOT_SET = 0 + IP_PMTUDISC_DO = 1 + IP_PMTUDISC_DONT = 2 + IP_PMTUDISC_PROBE = 3 + IP_PMTUDISC_MAX = 4 +) + type WSABuf struct { Len uint32 Buf *byte @@ -1144,6 +1157,22 @@ type WSAMsg struct { Flags uint32 } +type WSACMSGHDR struct { + Len uintptr + Level int32 + Type int32 +} + +type IN_PKTINFO struct { + Addr [4]byte + Ifindex uint32 +} + +type IN6_PKTINFO struct { + Addr [16]byte + Ifindex uint32 +} + // Flags for WSASocket const ( WSA_FLAG_OVERLAPPED = 0x01 @@ -2003,7 +2032,21 @@ const ( MOVEFILE_FAIL_IF_NOT_TRACKABLE = 0x20 ) -const GAA_FLAG_INCLUDE_PREFIX = 0x00000010 +// Flags for GetAdaptersAddresses, see +// https://learn.microsoft.com/en-us/windows/win32/api/iphlpapi/nf-iphlpapi-getadaptersaddresses. +const ( + GAA_FLAG_SKIP_UNICAST = 0x1 + GAA_FLAG_SKIP_ANYCAST = 0x2 + GAA_FLAG_SKIP_MULTICAST = 0x4 + GAA_FLAG_SKIP_DNS_SERVER = 0x8 + GAA_FLAG_INCLUDE_PREFIX = 0x10 + GAA_FLAG_SKIP_FRIENDLY_NAME = 0x20 + GAA_FLAG_INCLUDE_WINS_INFO = 0x40 + GAA_FLAG_INCLUDE_GATEWAYS = 0x80 + GAA_FLAG_INCLUDE_ALL_INTERFACES = 0x100 + GAA_FLAG_INCLUDE_ALL_COMPARTMENTS = 0x200 + GAA_FLAG_INCLUDE_TUNNEL_BINDINGORDER = 0x400 +) const ( IF_TYPE_OTHER = 1 @@ -2017,6 +2060,50 @@ const ( IF_TYPE_IEEE1394 = 144 ) +// Enum NL_PREFIX_ORIGIN for [IpAdapterUnicastAddress], see +// https://learn.microsoft.com/en-us/windows/win32/api/nldef/ne-nldef-nl_prefix_origin +const ( + IpPrefixOriginOther = 0 + IpPrefixOriginManual = 1 + IpPrefixOriginWellKnown = 2 + IpPrefixOriginDhcp = 3 + IpPrefixOriginRouterAdvertisement = 4 + IpPrefixOriginUnchanged = 1 << 4 +) + +// Enum NL_SUFFIX_ORIGIN for [IpAdapterUnicastAddress], see +// https://learn.microsoft.com/en-us/windows/win32/api/nldef/ne-nldef-nl_suffix_origin +const ( + NlsoOther = 0 + NlsoManual = 1 + NlsoWellKnown = 2 + NlsoDhcp = 3 + NlsoLinkLayerAddress = 4 + NlsoRandom = 5 + IpSuffixOriginOther = 0 + IpSuffixOriginManual = 1 + IpSuffixOriginWellKnown = 2 + IpSuffixOriginDhcp = 3 + IpSuffixOriginLinkLayerAddress = 4 + IpSuffixOriginRandom = 5 + IpSuffixOriginUnchanged = 1 << 4 +) + +// Enum NL_DAD_STATE for [IpAdapterUnicastAddress], see +// https://learn.microsoft.com/en-us/windows/win32/api/nldef/ne-nldef-nl_dad_state +const ( + NldsInvalid = 0 + NldsTentative = 1 + NldsDuplicate = 2 + NldsDeprecated = 3 + NldsPreferred = 4 + IpDadStateInvalid = 0 + IpDadStateTentative = 1 + IpDadStateDuplicate = 2 + IpDadStateDeprecated = 3 + IpDadStatePreferred = 4 +) + type SocketAddress struct { Sockaddr *syscall.RawSockaddrAny SockaddrLength int32 @@ -2144,6 +2231,132 @@ const ( IfOperStatusLowerLayerDown = 7 ) +const ( + IF_MAX_PHYS_ADDRESS_LENGTH = 32 + IF_MAX_STRING_SIZE = 256 +) + +// MIB_IF_ENTRY_LEVEL enumeration from netioapi.h or +// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/nf-netioapi-getifentry2ex. +const ( + MibIfEntryNormal = 0 + MibIfEntryNormalWithoutStatistics = 2 +) + +// MIB_NOTIFICATION_TYPE enumeration from netioapi.h or +// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ne-netioapi-mib_notification_type. +const ( + MibParameterNotification = 0 + MibAddInstance = 1 + MibDeleteInstance = 2 + MibInitialNotification = 3 +) + +// MibIfRow2 stores information about a particular interface. See +// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_if_row2. +type MibIfRow2 struct { + InterfaceLuid uint64 + InterfaceIndex uint32 + InterfaceGuid GUID + Alias [IF_MAX_STRING_SIZE + 1]uint16 + Description [IF_MAX_STRING_SIZE + 1]uint16 + PhysicalAddressLength uint32 + PhysicalAddress [IF_MAX_PHYS_ADDRESS_LENGTH]uint8 + PermanentPhysicalAddress [IF_MAX_PHYS_ADDRESS_LENGTH]uint8 + Mtu uint32 + Type uint32 + TunnelType uint32 + MediaType uint32 + PhysicalMediumType uint32 + AccessType uint32 + DirectionType uint32 + InterfaceAndOperStatusFlags uint8 + OperStatus uint32 + AdminStatus uint32 + MediaConnectState uint32 + NetworkGuid GUID + ConnectionType uint32 + TransmitLinkSpeed uint64 + ReceiveLinkSpeed uint64 + InOctets uint64 + InUcastPkts uint64 + InNUcastPkts uint64 + InDiscards uint64 + InErrors uint64 + InUnknownProtos uint64 + InUcastOctets uint64 + InMulticastOctets uint64 + InBroadcastOctets uint64 + OutOctets uint64 + OutUcastPkts uint64 + OutNUcastPkts uint64 + OutDiscards uint64 + OutErrors uint64 + OutUcastOctets uint64 + OutMulticastOctets uint64 + OutBroadcastOctets uint64 + OutQLen uint64 +} + +// MIB_UNICASTIPADDRESS_ROW stores information about a unicast IP address. See +// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_unicastipaddress_row. +type MibUnicastIpAddressRow struct { + Address RawSockaddrInet6 // SOCKADDR_INET union + InterfaceLuid uint64 + InterfaceIndex uint32 + PrefixOrigin uint32 + SuffixOrigin uint32 + ValidLifetime uint32 + PreferredLifetime uint32 + OnLinkPrefixLength uint8 + SkipAsSource uint8 + DadState uint32 + ScopeId uint32 + CreationTimeStamp Filetime +} + +const ScopeLevelCount = 16 + +// MIB_IPINTERFACE_ROW stores interface management information for a particular IP address family on a network interface. +// See https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_ipinterface_row. +type MibIpInterfaceRow struct { + Family uint16 + InterfaceLuid uint64 + InterfaceIndex uint32 + MaxReassemblySize uint32 + InterfaceIdentifier uint64 + MinRouterAdvertisementInterval uint32 + MaxRouterAdvertisementInterval uint32 + AdvertisingEnabled uint8 + ForwardingEnabled uint8 + WeakHostSend uint8 + WeakHostReceive uint8 + UseAutomaticMetric uint8 + UseNeighborUnreachabilityDetection uint8 + ManagedAddressConfigurationSupported uint8 + OtherStatefulConfigurationSupported uint8 + AdvertiseDefaultRoute uint8 + RouterDiscoveryBehavior uint32 + DadTransmits uint32 + BaseReachableTime uint32 + RetransmitTime uint32 + PathMtuDiscoveryTimeout uint32 + LinkLocalAddressBehavior uint32 + LinkLocalAddressTimeout uint32 + ZoneIndices [ScopeLevelCount]uint32 + SitePrefixLength uint32 + Metric uint32 + NlMtu uint32 + Connected uint8 + SupportsWakeUpPatterns uint8 + SupportsNeighborDiscovery uint8 + SupportsRouterDiscovery uint8 + ReachableTime uint32 + TransmitOffload uint32 + ReceiveOffload uint32 + DisableDefaultRoutes uint8 +} + // Console related constants used for the mode parameter to SetConsoleMode. See // https://docs.microsoft.com/en-us/windows/console/setconsolemode for details. @@ -2487,6 +2700,8 @@ type CommTimeouts struct { // NTUnicodeString is a UTF-16 string for NT native APIs, corresponding to UNICODE_STRING. type NTUnicodeString struct { + // Note: Length and MaximumLength are in *bytes*, not uint16s. + // They should always be even. Length uint16 MaximumLength uint16 Buffer *uint16 @@ -3404,3 +3619,224 @@ type DCB struct { EvtChar byte wReserved1 uint16 } + +// Keyboard Layout Flags. +// See https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-loadkeyboardlayoutw +const ( + KLF_ACTIVATE = 0x00000001 + KLF_SUBSTITUTE_OK = 0x00000002 + KLF_REORDER = 0x00000008 + KLF_REPLACELANG = 0x00000010 + KLF_NOTELLSHELL = 0x00000080 + KLF_SETFORPROCESS = 0x00000100 +) + +// Virtual Key codes +// https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes +const ( + VK_LBUTTON = 0x01 + VK_RBUTTON = 0x02 + VK_CANCEL = 0x03 + VK_MBUTTON = 0x04 + VK_XBUTTON1 = 0x05 + VK_XBUTTON2 = 0x06 + VK_BACK = 0x08 + VK_TAB = 0x09 + VK_CLEAR = 0x0C + VK_RETURN = 0x0D + VK_SHIFT = 0x10 + VK_CONTROL = 0x11 + VK_MENU = 0x12 + VK_PAUSE = 0x13 + VK_CAPITAL = 0x14 + VK_KANA = 0x15 + VK_HANGEUL = 0x15 + VK_HANGUL = 0x15 + VK_IME_ON = 0x16 + VK_JUNJA = 0x17 + VK_FINAL = 0x18 + VK_HANJA = 0x19 + VK_KANJI = 0x19 + VK_IME_OFF = 0x1A + VK_ESCAPE = 0x1B + VK_CONVERT = 0x1C + VK_NONCONVERT = 0x1D + VK_ACCEPT = 0x1E + VK_MODECHANGE = 0x1F + VK_SPACE = 0x20 + VK_PRIOR = 0x21 + VK_NEXT = 0x22 + VK_END = 0x23 + VK_HOME = 0x24 + VK_LEFT = 0x25 + VK_UP = 0x26 + VK_RIGHT = 0x27 + VK_DOWN = 0x28 + VK_SELECT = 0x29 + VK_PRINT = 0x2A + VK_EXECUTE = 0x2B + VK_SNAPSHOT = 0x2C + VK_INSERT = 0x2D + VK_DELETE = 0x2E + VK_HELP = 0x2F + VK_LWIN = 0x5B + VK_RWIN = 0x5C + VK_APPS = 0x5D + VK_SLEEP = 0x5F + VK_NUMPAD0 = 0x60 + VK_NUMPAD1 = 0x61 + VK_NUMPAD2 = 0x62 + VK_NUMPAD3 = 0x63 + VK_NUMPAD4 = 0x64 + VK_NUMPAD5 = 0x65 + VK_NUMPAD6 = 0x66 + VK_NUMPAD7 = 0x67 + VK_NUMPAD8 = 0x68 + VK_NUMPAD9 = 0x69 + VK_MULTIPLY = 0x6A + VK_ADD = 0x6B + VK_SEPARATOR = 0x6C + VK_SUBTRACT = 0x6D + VK_DECIMAL = 0x6E + VK_DIVIDE = 0x6F + VK_F1 = 0x70 + VK_F2 = 0x71 + VK_F3 = 0x72 + VK_F4 = 0x73 + VK_F5 = 0x74 + VK_F6 = 0x75 + VK_F7 = 0x76 + VK_F8 = 0x77 + VK_F9 = 0x78 + VK_F10 = 0x79 + VK_F11 = 0x7A + VK_F12 = 0x7B + VK_F13 = 0x7C + VK_F14 = 0x7D + VK_F15 = 0x7E + VK_F16 = 0x7F + VK_F17 = 0x80 + VK_F18 = 0x81 + VK_F19 = 0x82 + VK_F20 = 0x83 + VK_F21 = 0x84 + VK_F22 = 0x85 + VK_F23 = 0x86 + VK_F24 = 0x87 + VK_NUMLOCK = 0x90 + VK_SCROLL = 0x91 + VK_OEM_NEC_EQUAL = 0x92 + VK_OEM_FJ_JISHO = 0x92 + VK_OEM_FJ_MASSHOU = 0x93 + VK_OEM_FJ_TOUROKU = 0x94 + VK_OEM_FJ_LOYA = 0x95 + VK_OEM_FJ_ROYA = 0x96 + VK_LSHIFT = 0xA0 + VK_RSHIFT = 0xA1 + VK_LCONTROL = 0xA2 + VK_RCONTROL = 0xA3 + VK_LMENU = 0xA4 + VK_RMENU = 0xA5 + VK_BROWSER_BACK = 0xA6 + VK_BROWSER_FORWARD = 0xA7 + VK_BROWSER_REFRESH = 0xA8 + VK_BROWSER_STOP = 0xA9 + VK_BROWSER_SEARCH = 0xAA + VK_BROWSER_FAVORITES = 0xAB + VK_BROWSER_HOME = 0xAC + VK_VOLUME_MUTE = 0xAD + VK_VOLUME_DOWN = 0xAE + VK_VOLUME_UP = 0xAF + VK_MEDIA_NEXT_TRACK = 0xB0 + VK_MEDIA_PREV_TRACK = 0xB1 + VK_MEDIA_STOP = 0xB2 + VK_MEDIA_PLAY_PAUSE = 0xB3 + VK_LAUNCH_MAIL = 0xB4 + VK_LAUNCH_MEDIA_SELECT = 0xB5 + VK_LAUNCH_APP1 = 0xB6 + VK_LAUNCH_APP2 = 0xB7 + VK_OEM_1 = 0xBA + VK_OEM_PLUS = 0xBB + VK_OEM_COMMA = 0xBC + VK_OEM_MINUS = 0xBD + VK_OEM_PERIOD = 0xBE + VK_OEM_2 = 0xBF + VK_OEM_3 = 0xC0 + VK_OEM_4 = 0xDB + VK_OEM_5 = 0xDC + VK_OEM_6 = 0xDD + VK_OEM_7 = 0xDE + VK_OEM_8 = 0xDF + VK_OEM_AX = 0xE1 + VK_OEM_102 = 0xE2 + VK_ICO_HELP = 0xE3 + VK_ICO_00 = 0xE4 + VK_PROCESSKEY = 0xE5 + VK_ICO_CLEAR = 0xE6 + VK_OEM_RESET = 0xE9 + VK_OEM_JUMP = 0xEA + VK_OEM_PA1 = 0xEB + VK_OEM_PA2 = 0xEC + VK_OEM_PA3 = 0xED + VK_OEM_WSCTRL = 0xEE + VK_OEM_CUSEL = 0xEF + VK_OEM_ATTN = 0xF0 + VK_OEM_FINISH = 0xF1 + VK_OEM_COPY = 0xF2 + VK_OEM_AUTO = 0xF3 + VK_OEM_ENLW = 0xF4 + VK_OEM_BACKTAB = 0xF5 + VK_ATTN = 0xF6 + VK_CRSEL = 0xF7 + VK_EXSEL = 0xF8 + VK_EREOF = 0xF9 + VK_PLAY = 0xFA + VK_ZOOM = 0xFB + VK_NONAME = 0xFC + VK_PA1 = 0xFD + VK_OEM_CLEAR = 0xFE +) + +// Mouse button constants. +// https://docs.microsoft.com/en-us/windows/console/mouse-event-record-str +const ( + FROM_LEFT_1ST_BUTTON_PRESSED = 0x0001 + RIGHTMOST_BUTTON_PRESSED = 0x0002 + FROM_LEFT_2ND_BUTTON_PRESSED = 0x0004 + FROM_LEFT_3RD_BUTTON_PRESSED = 0x0008 + FROM_LEFT_4TH_BUTTON_PRESSED = 0x0010 +) + +// Control key state constaints. +// https://docs.microsoft.com/en-us/windows/console/key-event-record-str +// https://docs.microsoft.com/en-us/windows/console/mouse-event-record-str +const ( + CAPSLOCK_ON = 0x0080 + ENHANCED_KEY = 0x0100 + LEFT_ALT_PRESSED = 0x0002 + LEFT_CTRL_PRESSED = 0x0008 + NUMLOCK_ON = 0x0020 + RIGHT_ALT_PRESSED = 0x0001 + RIGHT_CTRL_PRESSED = 0x0004 + SCROLLLOCK_ON = 0x0040 + SHIFT_PRESSED = 0x0010 +) + +// Mouse event record event flags. +// https://docs.microsoft.com/en-us/windows/console/mouse-event-record-str +const ( + MOUSE_MOVED = 0x0001 + DOUBLE_CLICK = 0x0002 + MOUSE_WHEELED = 0x0004 + MOUSE_HWHEELED = 0x0008 +) + +// Input Record Event Types +// https://learn.microsoft.com/en-us/windows/console/input-record-str +const ( + FOCUS_EVENT = 0x0010 + KEY_EVENT = 0x0001 + MENU_EVENT = 0x0008 + MOUSE_EVENT = 0x0002 + WINDOW_BUFFER_SIZE_EVENT = 0x0004 +) diff --git a/vendor/golang.org/x/sys/windows/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/zsyscall_windows.go index eba761018..a58bc48b8 100644 --- a/vendor/golang.org/x/sys/windows/zsyscall_windows.go +++ b/vendor/golang.org/x/sys/windows/zsyscall_windows.go @@ -181,10 +181,15 @@ var ( procDnsRecordListFree = moddnsapi.NewProc("DnsRecordListFree") procDwmGetWindowAttribute = moddwmapi.NewProc("DwmGetWindowAttribute") procDwmSetWindowAttribute = moddwmapi.NewProc("DwmSetWindowAttribute") + procCancelMibChangeNotify2 = modiphlpapi.NewProc("CancelMibChangeNotify2") procGetAdaptersAddresses = modiphlpapi.NewProc("GetAdaptersAddresses") procGetAdaptersInfo = modiphlpapi.NewProc("GetAdaptersInfo") procGetBestInterfaceEx = modiphlpapi.NewProc("GetBestInterfaceEx") procGetIfEntry = modiphlpapi.NewProc("GetIfEntry") + procGetIfEntry2Ex = modiphlpapi.NewProc("GetIfEntry2Ex") + procGetUnicastIpAddressEntry = modiphlpapi.NewProc("GetUnicastIpAddressEntry") + procNotifyIpInterfaceChange = modiphlpapi.NewProc("NotifyIpInterfaceChange") + procNotifyUnicastIpAddressChange = modiphlpapi.NewProc("NotifyUnicastIpAddressChange") procAddDllDirectory = modkernel32.NewProc("AddDllDirectory") procAssignProcessToJobObject = modkernel32.NewProc("AssignProcessToJobObject") procCancelIo = modkernel32.NewProc("CancelIo") @@ -247,7 +252,9 @@ var ( procGetCommandLineW = modkernel32.NewProc("GetCommandLineW") procGetComputerNameExW = modkernel32.NewProc("GetComputerNameExW") procGetComputerNameW = modkernel32.NewProc("GetComputerNameW") + procGetConsoleCP = modkernel32.NewProc("GetConsoleCP") procGetConsoleMode = modkernel32.NewProc("GetConsoleMode") + procGetConsoleOutputCP = modkernel32.NewProc("GetConsoleOutputCP") procGetConsoleScreenBufferInfo = modkernel32.NewProc("GetConsoleScreenBufferInfo") procGetCurrentDirectoryW = modkernel32.NewProc("GetCurrentDirectoryW") procGetCurrentProcessId = modkernel32.NewProc("GetCurrentProcessId") @@ -273,8 +280,10 @@ var ( procGetMaximumProcessorCount = modkernel32.NewProc("GetMaximumProcessorCount") procGetModuleFileNameW = modkernel32.NewProc("GetModuleFileNameW") procGetModuleHandleExW = modkernel32.NewProc("GetModuleHandleExW") + procGetNamedPipeClientProcessId = modkernel32.NewProc("GetNamedPipeClientProcessId") procGetNamedPipeHandleStateW = modkernel32.NewProc("GetNamedPipeHandleStateW") procGetNamedPipeInfo = modkernel32.NewProc("GetNamedPipeInfo") + procGetNamedPipeServerProcessId = modkernel32.NewProc("GetNamedPipeServerProcessId") procGetOverlappedResult = modkernel32.NewProc("GetOverlappedResult") procGetPriorityClass = modkernel32.NewProc("GetPriorityClass") procGetProcAddress = modkernel32.NewProc("GetProcAddress") @@ -347,8 +356,10 @@ var ( procSetCommMask = modkernel32.NewProc("SetCommMask") procSetCommState = modkernel32.NewProc("SetCommState") procSetCommTimeouts = modkernel32.NewProc("SetCommTimeouts") + procSetConsoleCP = modkernel32.NewProc("SetConsoleCP") procSetConsoleCursorPosition = modkernel32.NewProc("SetConsoleCursorPosition") procSetConsoleMode = modkernel32.NewProc("SetConsoleMode") + procSetConsoleOutputCP = modkernel32.NewProc("SetConsoleOutputCP") procSetCurrentDirectoryW = modkernel32.NewProc("SetCurrentDirectoryW") procSetDefaultDllDirectories = modkernel32.NewProc("SetDefaultDllDirectories") procSetDllDirectoryW = modkernel32.NewProc("SetDllDirectoryW") @@ -478,12 +489,16 @@ var ( procGetDesktopWindow = moduser32.NewProc("GetDesktopWindow") procGetForegroundWindow = moduser32.NewProc("GetForegroundWindow") procGetGUIThreadInfo = moduser32.NewProc("GetGUIThreadInfo") + procGetKeyboardLayout = moduser32.NewProc("GetKeyboardLayout") procGetShellWindow = moduser32.NewProc("GetShellWindow") procGetWindowThreadProcessId = moduser32.NewProc("GetWindowThreadProcessId") procIsWindow = moduser32.NewProc("IsWindow") procIsWindowUnicode = moduser32.NewProc("IsWindowUnicode") procIsWindowVisible = moduser32.NewProc("IsWindowVisible") + procLoadKeyboardLayoutW = moduser32.NewProc("LoadKeyboardLayoutW") procMessageBoxW = moduser32.NewProc("MessageBoxW") + procToUnicodeEx = moduser32.NewProc("ToUnicodeEx") + procUnloadKeyboardLayout = moduser32.NewProc("UnloadKeyboardLayout") procCreateEnvironmentBlock = moduserenv.NewProc("CreateEnvironmentBlock") procDestroyEnvironmentBlock = moduserenv.NewProc("DestroyEnvironmentBlock") procGetUserProfileDirectoryW = moduserenv.NewProc("GetUserProfileDirectoryW") @@ -496,6 +511,7 @@ var ( procFreeAddrInfoW = modws2_32.NewProc("FreeAddrInfoW") procGetAddrInfoW = modws2_32.NewProc("GetAddrInfoW") procWSACleanup = modws2_32.NewProc("WSACleanup") + procWSADuplicateSocketW = modws2_32.NewProc("WSADuplicateSocketW") procWSAEnumProtocolsW = modws2_32.NewProc("WSAEnumProtocolsW") procWSAGetOverlappedResult = modws2_32.NewProc("WSAGetOverlappedResult") procWSAIoctl = modws2_32.NewProc("WSAIoctl") @@ -789,6 +805,14 @@ func FreeSid(sid *SID) (err error) { return } +func GetAce(acl *ACL, aceIndex uint32, pAce **ACCESS_ALLOWED_ACE) (err error) { + r1, _, e1 := syscall.Syscall(procGetAce.Addr(), 3, uintptr(unsafe.Pointer(acl)), uintptr(aceIndex), uintptr(unsafe.Pointer(pAce))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + func GetLengthSid(sid *SID) (len uint32) { r0, _, _ := syscall.Syscall(procGetLengthSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0) len = uint32(r0) @@ -1225,14 +1249,6 @@ func setEntriesInAcl(countExplicitEntries uint32, explicitEntries *EXPLICIT_ACCE return } -func GetAce(acl *ACL, aceIndex uint32, pAce **ACCESS_ALLOWED_ACE) (ret error) { - r0, _, _ := syscall.Syscall(procGetAce.Addr(), 3, uintptr(unsafe.Pointer(acl)), uintptr(aceIndex), uintptr(unsafe.Pointer(pAce))) - if r0 == 0 { - ret = GetLastError() - } - return -} - func SetKernelObjectSecurity(handle Handle, securityInformation SECURITY_INFORMATION, securityDescriptor *SECURITY_DESCRIPTOR) (err error) { r1, _, e1 := syscall.Syscall(procSetKernelObjectSecurity.Addr(), 3, uintptr(handle), uintptr(securityInformation), uintptr(unsafe.Pointer(securityDescriptor))) if r1 == 0 { @@ -1598,6 +1614,14 @@ func DwmSetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, si return } +func CancelMibChangeNotify2(notificationHandle Handle) (errcode error) { + r0, _, _ := syscall.Syscall(procCancelMibChangeNotify2.Addr(), 1, uintptr(notificationHandle), 0, 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + func GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) { r0, _, _ := syscall.Syscall6(procGetAdaptersAddresses.Addr(), 5, uintptr(family), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(adapterAddresses)), uintptr(unsafe.Pointer(sizePointer)), 0) if r0 != 0 { @@ -1630,6 +1654,46 @@ func GetIfEntry(pIfRow *MibIfRow) (errcode error) { return } +func GetIfEntry2Ex(level uint32, row *MibIfRow2) (errcode error) { + r0, _, _ := syscall.Syscall(procGetIfEntry2Ex.Addr(), 2, uintptr(level), uintptr(unsafe.Pointer(row)), 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + +func GetUnicastIpAddressEntry(row *MibUnicastIpAddressRow) (errcode error) { + r0, _, _ := syscall.Syscall(procGetUnicastIpAddressEntry.Addr(), 1, uintptr(unsafe.Pointer(row)), 0, 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + +func NotifyIpInterfaceChange(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) { + var _p0 uint32 + if initialNotification { + _p0 = 1 + } + r0, _, _ := syscall.Syscall6(procNotifyIpInterfaceChange.Addr(), 5, uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle)), 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + +func NotifyUnicastIpAddressChange(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) { + var _p0 uint32 + if initialNotification { + _p0 = 1 + } + r0, _, _ := syscall.Syscall6(procNotifyUnicastIpAddressChange.Addr(), 5, uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle)), 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + func AddDllDirectory(path *uint16) (cookie uintptr, err error) { r0, _, e1 := syscall.Syscall(procAddDllDirectory.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0) cookie = uintptr(r0) @@ -2158,6 +2222,15 @@ func GetComputerName(buf *uint16, n *uint32) (err error) { return } +func GetConsoleCP() (cp uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetConsoleCP.Addr(), 0, 0, 0, 0) + cp = uint32(r0) + if cp == 0 { + err = errnoErr(e1) + } + return +} + func GetConsoleMode(console Handle, mode *uint32) (err error) { r1, _, e1 := syscall.Syscall(procGetConsoleMode.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(mode)), 0) if r1 == 0 { @@ -2166,6 +2239,15 @@ func GetConsoleMode(console Handle, mode *uint32) (err error) { return } +func GetConsoleOutputCP() (cp uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetConsoleOutputCP.Addr(), 0, 0, 0, 0) + cp = uint32(r0) + if cp == 0 { + err = errnoErr(e1) + } + return +} + func GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) { r1, _, e1 := syscall.Syscall(procGetConsoleScreenBufferInfo.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(info)), 0) if r1 == 0 { @@ -2367,6 +2449,14 @@ func GetModuleHandleEx(flags uint32, moduleName *uint16, module *Handle) (err er return } +func GetNamedPipeClientProcessId(pipe Handle, clientProcessID *uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetNamedPipeClientProcessId.Addr(), 2, uintptr(pipe), uintptr(unsafe.Pointer(clientProcessID)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + func GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) { r1, _, e1 := syscall.Syscall9(procGetNamedPipeHandleStateW.Addr(), 7, uintptr(pipe), uintptr(unsafe.Pointer(state)), uintptr(unsafe.Pointer(curInstances)), uintptr(unsafe.Pointer(maxCollectionCount)), uintptr(unsafe.Pointer(collectDataTimeout)), uintptr(unsafe.Pointer(userName)), uintptr(maxUserNameSize), 0, 0) if r1 == 0 { @@ -2383,6 +2473,14 @@ func GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint3 return } +func GetNamedPipeServerProcessId(pipe Handle, serverProcessID *uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetNamedPipeServerProcessId.Addr(), 2, uintptr(pipe), uintptr(unsafe.Pointer(serverProcessID)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + func GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error) { var _p0 uint32 if wait { @@ -3034,6 +3132,14 @@ func SetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) { return } +func SetConsoleCP(cp uint32) (err error) { + r1, _, e1 := syscall.Syscall(procSetConsoleCP.Addr(), 1, uintptr(cp), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + func setConsoleCursorPosition(console Handle, position uint32) (err error) { r1, _, e1 := syscall.Syscall(procSetConsoleCursorPosition.Addr(), 2, uintptr(console), uintptr(position), 0) if r1 == 0 { @@ -3050,6 +3156,14 @@ func SetConsoleMode(console Handle, mode uint32) (err error) { return } +func SetConsoleOutputCP(cp uint32) (err error) { + r1, _, e1 := syscall.Syscall(procSetConsoleOutputCP.Addr(), 1, uintptr(cp), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + func SetCurrentDirectory(path *uint16) (err error) { r1, _, e1 := syscall.Syscall(procSetCurrentDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0) if r1 == 0 { @@ -4082,6 +4196,12 @@ func GetGUIThreadInfo(thread uint32, info *GUIThreadInfo) (err error) { return } +func GetKeyboardLayout(tid uint32) (hkl Handle) { + r0, _, _ := syscall.Syscall(procGetKeyboardLayout.Addr(), 1, uintptr(tid), 0, 0) + hkl = Handle(r0) + return +} + func GetShellWindow() (shellWindow HWND) { r0, _, _ := syscall.Syscall(procGetShellWindow.Addr(), 0, 0, 0, 0) shellWindow = HWND(r0) @@ -4115,6 +4235,15 @@ func IsWindowVisible(hwnd HWND) (isVisible bool) { return } +func LoadKeyboardLayout(name *uint16, flags uint32) (hkl Handle, err error) { + r0, _, e1 := syscall.Syscall(procLoadKeyboardLayoutW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(flags), 0) + hkl = Handle(r0) + if hkl == 0 { + err = errnoErr(e1) + } + return +} + func MessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) { r0, _, e1 := syscall.Syscall6(procMessageBoxW.Addr(), 4, uintptr(hwnd), uintptr(unsafe.Pointer(text)), uintptr(unsafe.Pointer(caption)), uintptr(boxtype), 0, 0) ret = int32(r0) @@ -4124,6 +4253,20 @@ func MessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret i return } +func ToUnicodeEx(vkey uint32, scancode uint32, keystate *byte, pwszBuff *uint16, cchBuff int32, flags uint32, hkl Handle) (ret int32) { + r0, _, _ := syscall.Syscall9(procToUnicodeEx.Addr(), 7, uintptr(vkey), uintptr(scancode), uintptr(unsafe.Pointer(keystate)), uintptr(unsafe.Pointer(pwszBuff)), uintptr(cchBuff), uintptr(flags), uintptr(hkl), 0, 0) + ret = int32(r0) + return +} + +func UnloadKeyboardLayout(hkl Handle) (err error) { + r1, _, e1 := syscall.Syscall(procUnloadKeyboardLayout.Addr(), 1, uintptr(hkl), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + func CreateEnvironmentBlock(block **uint16, token Token, inheritExisting bool) (err error) { var _p0 uint32 if inheritExisting { @@ -4249,6 +4392,14 @@ func WSACleanup() (err error) { return } +func WSADuplicateSocket(s Handle, processID uint32, info *WSAProtocolInfo) (err error) { + r1, _, e1 := syscall.Syscall(procWSADuplicateSocketW.Addr(), 3, uintptr(s), uintptr(processID), uintptr(unsafe.Pointer(info))) + if r1 != 0 { + err = errnoErr(e1) + } + return +} + func WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) { r0, _, e1 := syscall.Syscall(procWSAEnumProtocolsW.Addr(), 3, uintptr(unsafe.Pointer(protocols)), uintptr(unsafe.Pointer(protocolBuffer)), uintptr(unsafe.Pointer(bufferLength))) n = int32(r0) diff --git a/vendor/gopkg.in/yaml.v2/.travis.yml b/vendor/gopkg.in/yaml.v2/.travis.yml deleted file mode 100644 index 7348c50c0..000000000 --- a/vendor/gopkg.in/yaml.v2/.travis.yml +++ /dev/null @@ -1,17 +0,0 @@ -language: go - -go: - - "1.4.x" - - "1.5.x" - - "1.6.x" - - "1.7.x" - - "1.8.x" - - "1.9.x" - - "1.10.x" - - "1.11.x" - - "1.12.x" - - "1.13.x" - - "1.14.x" - - "tip" - -go_import_path: gopkg.in/yaml.v2 diff --git a/vendor/modules.txt b/vendor/modules.txt index 160d6e1be..6d772ec21 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1,4 +1,4 @@ -# github.com/NVIDIA/go-nvlib v0.6.1 +# github.com/NVIDIA/go-nvlib v0.7.3 ## explicit; go 1.20 github.com/NVIDIA/go-nvlib/pkg/nvlib/device github.com/NVIDIA/go-nvlib/pkg/nvlib/info @@ -6,14 +6,15 @@ github.com/NVIDIA/go-nvlib/pkg/nvpci github.com/NVIDIA/go-nvlib/pkg/nvpci/bytes github.com/NVIDIA/go-nvlib/pkg/nvpci/mmio github.com/NVIDIA/go-nvlib/pkg/pciids -# github.com/NVIDIA/go-nvml v0.12.4-0 +# github.com/NVIDIA/go-nvml v0.12.9-0 ## explicit; go 1.20 github.com/NVIDIA/go-nvml/pkg/dl github.com/NVIDIA/go-nvml/pkg/nvml github.com/NVIDIA/go-nvml/pkg/nvml/mock -# github.com/cpuguy83/go-md2man/v2 v2.0.4 -## explicit; go 1.11 -github.com/cpuguy83/go-md2man/v2/md2man +github.com/NVIDIA/go-nvml/pkg/nvml/mock/dgxa100 +# github.com/cyphar/filepath-securejoin v0.4.1 +## explicit; go 1.18 +github.com/cyphar/filepath-securejoin # github.com/davecgh/go-spew v1.1.1 ## explicit github.com/davecgh/go-spew/spew @@ -27,7 +28,18 @@ github.com/google/uuid ## explicit # github.com/kr/pretty v0.3.1 ## explicit; go 1.12 -# github.com/opencontainers/runtime-spec v1.2.0 +# github.com/moby/sys/reexec v0.1.0 +## explicit; go 1.18 +github.com/moby/sys/reexec +# github.com/moby/sys/symlink v0.3.0 +## explicit; go 1.17 +github.com/moby/sys/symlink +# github.com/opencontainers/runc v1.3.0 +## explicit; go 1.23.0 +github.com/opencontainers/runc/libcontainer/exeseal +github.com/opencontainers/runc/libcontainer/system +github.com/opencontainers/runc/libcontainer/utils +# github.com/opencontainers/runtime-spec v1.2.1 ## explicit github.com/opencontainers/runtime-spec/specs-go # github.com/opencontainers/runtime-tools v0.9.1-0.20221107090550-2e043c6bd626 @@ -35,60 +47,56 @@ github.com/opencontainers/runtime-spec/specs-go github.com/opencontainers/runtime-tools/generate github.com/opencontainers/runtime-tools/generate/seccomp github.com/opencontainers/runtime-tools/validate/capabilities -# github.com/opencontainers/selinux v1.11.0 -## explicit; go 1.19 # github.com/pelletier/go-toml v1.9.5 ## explicit; go 1.12 github.com/pelletier/go-toml # github.com/pmezard/go-difflib v1.0.0 ## explicit github.com/pmezard/go-difflib/difflib -# github.com/russross/blackfriday/v2 v2.1.0 -## explicit -github.com/russross/blackfriday/v2 +# github.com/rogpeppe/go-internal v1.11.0 +## explicit; go 1.19 # github.com/sirupsen/logrus v1.9.3 ## explicit; go 1.13 github.com/sirupsen/logrus github.com/sirupsen/logrus/hooks/test -# github.com/stretchr/testify v1.9.0 +# github.com/stretchr/testify v1.10.0 ## explicit; go 1.17 github.com/stretchr/testify/assert +github.com/stretchr/testify/assert/yaml github.com/stretchr/testify/require # github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 ## explicit github.com/syndtr/gocapability/capability -# github.com/urfave/cli/v2 v2.27.3 -## explicit; go 1.18 -github.com/urfave/cli/v2 +# github.com/urfave/cli-altsrc/v3 v3.0.1 +## explicit; go 1.23.2 +github.com/urfave/cli-altsrc/v3 +# github.com/urfave/cli/v3 v3.3.8 +## explicit; go 1.22 +github.com/urfave/cli/v3 # github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb ## explicit -# github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 -## explicit; go 1.15 -github.com/xrash/smetrics -# golang.org/x/mod v0.19.0 -## explicit; go 1.18 +# golang.org/x/mod v0.26.0 +## explicit; go 1.23.0 golang.org/x/mod/semver -# golang.org/x/sys v0.22.0 -## explicit; go 1.18 +# golang.org/x/sys v0.34.0 +## explicit; go 1.23.0 golang.org/x/sys/unix golang.org/x/sys/windows # gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c ## explicit; go 1.11 -# gopkg.in/yaml.v2 v2.4.0 -## explicit; go 1.15 -gopkg.in/yaml.v2 # gopkg.in/yaml.v3 v3.0.1 ## explicit gopkg.in/yaml.v3 -# sigs.k8s.io/yaml v1.3.0 +# sigs.k8s.io/yaml v1.4.0 ## explicit; go 1.12 sigs.k8s.io/yaml -# tags.cncf.io/container-device-interface v0.8.0 +sigs.k8s.io/yaml/goyaml.v2 +# tags.cncf.io/container-device-interface v1.0.1 ## explicit; go 1.20 tags.cncf.io/container-device-interface/internal/validation tags.cncf.io/container-device-interface/internal/validation/k8s tags.cncf.io/container-device-interface/pkg/cdi tags.cncf.io/container-device-interface/pkg/parser -# tags.cncf.io/container-device-interface/specs-go v0.8.0 +# tags.cncf.io/container-device-interface/specs-go v1.0.0 ## explicit; go 1.19 tags.cncf.io/container-device-interface/specs-go diff --git a/vendor/sigs.k8s.io/yaml/LICENSE b/vendor/sigs.k8s.io/yaml/LICENSE index 7805d36de..093d6d3ed 100644 --- a/vendor/sigs.k8s.io/yaml/LICENSE +++ b/vendor/sigs.k8s.io/yaml/LICENSE @@ -48,3 +48,259 @@ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# The forked go-yaml.v3 library under this project is covered by two +different licenses (MIT and Apache): + +#### MIT License #### + +The following files were ported to Go from C files of libyaml, and thus +are still covered by their original MIT license, with the additional +copyright staring in 2011 when the project was ported over: + + apic.go emitterc.go parserc.go readerc.go scannerc.go + writerc.go yamlh.go yamlprivateh.go + +Copyright (c) 2006-2010 Kirill Simonov +Copyright (c) 2006-2011 Kirill Simonov + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +### Apache License ### + +All the remaining project files are covered by the Apache license: + +Copyright (c) 2011-2019 Canonical Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +# The forked go-yaml.v2 library under the project is covered by an +Apache license: + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/sigs.k8s.io/yaml/OWNERS b/vendor/sigs.k8s.io/yaml/OWNERS index 325b40b07..003a149e1 100644 --- a/vendor/sigs.k8s.io/yaml/OWNERS +++ b/vendor/sigs.k8s.io/yaml/OWNERS @@ -2,26 +2,22 @@ approvers: - dims -- lavalamp +- jpbetz - smarterclayton - deads2k - sttts - liggitt -- caesarxuchao reviewers: - dims - thockin -- lavalamp +- jpbetz - smarterclayton - wojtek-t - deads2k - derekwaynecarr -- caesarxuchao - mikedanese - liggitt -- gmarek - sttts -- ncdc - tallclair labels: - sig/api-machinery diff --git a/vendor/sigs.k8s.io/yaml/fields.go b/vendor/sigs.k8s.io/yaml/fields.go index 235b7f2cf..0ea28bd03 100644 --- a/vendor/sigs.k8s.io/yaml/fields.go +++ b/vendor/sigs.k8s.io/yaml/fields.go @@ -16,53 +16,53 @@ import ( "unicode/utf8" ) -// indirect walks down v allocating pointers as needed, +// indirect walks down 'value' allocating pointers as needed, // until it gets to a non-pointer. // if it encounters an Unmarshaler, indirect stops and returns that. // if decodingNull is true, indirect stops at the last pointer so it can be set to nil. -func indirect(v reflect.Value, decodingNull bool) (json.Unmarshaler, encoding.TextUnmarshaler, reflect.Value) { - // If v is a named type and is addressable, +func indirect(value reflect.Value, decodingNull bool) (json.Unmarshaler, encoding.TextUnmarshaler, reflect.Value) { + // If 'value' is a named type and is addressable, // start with its address, so that if the type has pointer methods, // we find them. - if v.Kind() != reflect.Ptr && v.Type().Name() != "" && v.CanAddr() { - v = v.Addr() + if value.Kind() != reflect.Ptr && value.Type().Name() != "" && value.CanAddr() { + value = value.Addr() } for { // Load value from interface, but only if the result will be // usefully addressable. - if v.Kind() == reflect.Interface && !v.IsNil() { - e := v.Elem() - if e.Kind() == reflect.Ptr && !e.IsNil() && (!decodingNull || e.Elem().Kind() == reflect.Ptr) { - v = e + if value.Kind() == reflect.Interface && !value.IsNil() { + element := value.Elem() + if element.Kind() == reflect.Ptr && !element.IsNil() && (!decodingNull || element.Elem().Kind() == reflect.Ptr) { + value = element continue } } - if v.Kind() != reflect.Ptr { + if value.Kind() != reflect.Ptr { break } - if v.Elem().Kind() != reflect.Ptr && decodingNull && v.CanSet() { + if value.Elem().Kind() != reflect.Ptr && decodingNull && value.CanSet() { break } - if v.IsNil() { - if v.CanSet() { - v.Set(reflect.New(v.Type().Elem())) + if value.IsNil() { + if value.CanSet() { + value.Set(reflect.New(value.Type().Elem())) } else { - v = reflect.New(v.Type().Elem()) + value = reflect.New(value.Type().Elem()) } } - if v.Type().NumMethod() > 0 { - if u, ok := v.Interface().(json.Unmarshaler); ok { + if value.Type().NumMethod() > 0 { + if u, ok := value.Interface().(json.Unmarshaler); ok { return u, nil, reflect.Value{} } - if u, ok := v.Interface().(encoding.TextUnmarshaler); ok { + if u, ok := value.Interface().(encoding.TextUnmarshaler); ok { return nil, u, reflect.Value{} } } - v = v.Elem() + value = value.Elem() } - return nil, nil, v + return nil, nil, value } // A field represents a single field found in a struct. @@ -134,8 +134,8 @@ func typeFields(t reflect.Type) []field { next := []field{{typ: t}} // Count of queued names for current level and the next. - count := map[reflect.Type]int{} - nextCount := map[reflect.Type]int{} + var count map[reflect.Type]int + var nextCount map[reflect.Type]int // Types already visited at an earlier level. visited := map[reflect.Type]bool{} @@ -348,8 +348,9 @@ const ( // 4) simpleLetterEqualFold, no specials, no non-letters. // // The letters S and K are special because they map to 3 runes, not just 2: -// * S maps to s and to U+017F 'ſ' Latin small letter long s -// * k maps to K and to U+212A 'K' Kelvin sign +// - S maps to s and to U+017F 'ſ' Latin small letter long s +// - k maps to K and to U+212A 'K' Kelvin sign +// // See http://play.golang.org/p/tTxjOc0OGo // // The returned function is specialized for matching against s and @@ -420,10 +421,8 @@ func equalFoldRight(s, t []byte) bool { t = t[size:] } - if len(t) > 0 { - return false - } - return true + + return len(t) <= 0 } // asciiEqualFold is a specialization of bytes.EqualFold for use when diff --git a/vendor/sigs.k8s.io/yaml/goyaml.v2/LICENSE b/vendor/sigs.k8s.io/yaml/goyaml.v2/LICENSE new file mode 100644 index 000000000..8dada3eda --- /dev/null +++ b/vendor/sigs.k8s.io/yaml/goyaml.v2/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/gopkg.in/yaml.v2/LICENSE.libyaml b/vendor/sigs.k8s.io/yaml/goyaml.v2/LICENSE.libyaml similarity index 100% rename from vendor/gopkg.in/yaml.v2/LICENSE.libyaml rename to vendor/sigs.k8s.io/yaml/goyaml.v2/LICENSE.libyaml diff --git a/vendor/sigs.k8s.io/yaml/goyaml.v2/NOTICE b/vendor/sigs.k8s.io/yaml/goyaml.v2/NOTICE new file mode 100644 index 000000000..866d74a7a --- /dev/null +++ b/vendor/sigs.k8s.io/yaml/goyaml.v2/NOTICE @@ -0,0 +1,13 @@ +Copyright 2011-2016 Canonical Ltd. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/vendor/sigs.k8s.io/yaml/goyaml.v2/OWNERS b/vendor/sigs.k8s.io/yaml/goyaml.v2/OWNERS new file mode 100644 index 000000000..73be0a3a9 --- /dev/null +++ b/vendor/sigs.k8s.io/yaml/goyaml.v2/OWNERS @@ -0,0 +1,24 @@ +# See the OWNERS docs at https://go.k8s.io/owners + +approvers: +- dims +- jpbetz +- smarterclayton +- deads2k +- sttts +- liggitt +- natasha41575 +- knverey +reviewers: +- dims +- thockin +- jpbetz +- smarterclayton +- deads2k +- derekwaynecarr +- mikedanese +- liggitt +- sttts +- tallclair +labels: +- sig/api-machinery diff --git a/vendor/gopkg.in/yaml.v2/README.md b/vendor/sigs.k8s.io/yaml/goyaml.v2/README.md similarity index 84% rename from vendor/gopkg.in/yaml.v2/README.md rename to vendor/sigs.k8s.io/yaml/goyaml.v2/README.md index b50c6e877..53f4139dc 100644 --- a/vendor/gopkg.in/yaml.v2/README.md +++ b/vendor/sigs.k8s.io/yaml/goyaml.v2/README.md @@ -1,3 +1,13 @@ +# go-yaml fork + +This package is a fork of the go-yaml library and is intended solely for consumption +by kubernetes projects. In this fork, we plan to support only critical changes required for +kubernetes, such as small bug fixes and regressions. Larger, general-purpose feature requests +should be made in the upstream go-yaml library, and we will reject such changes in this fork +unless we are pulling them from upstream. + +This fork is based on v2.4.0: https://github.com/go-yaml/yaml/releases/tag/v2.4.0 + # YAML support for the Go language Introduction diff --git a/vendor/gopkg.in/yaml.v2/apic.go b/vendor/sigs.k8s.io/yaml/goyaml.v2/apic.go similarity index 100% rename from vendor/gopkg.in/yaml.v2/apic.go rename to vendor/sigs.k8s.io/yaml/goyaml.v2/apic.go diff --git a/vendor/gopkg.in/yaml.v2/decode.go b/vendor/sigs.k8s.io/yaml/goyaml.v2/decode.go similarity index 100% rename from vendor/gopkg.in/yaml.v2/decode.go rename to vendor/sigs.k8s.io/yaml/goyaml.v2/decode.go diff --git a/vendor/gopkg.in/yaml.v2/emitterc.go b/vendor/sigs.k8s.io/yaml/goyaml.v2/emitterc.go similarity index 100% rename from vendor/gopkg.in/yaml.v2/emitterc.go rename to vendor/sigs.k8s.io/yaml/goyaml.v2/emitterc.go diff --git a/vendor/gopkg.in/yaml.v2/encode.go b/vendor/sigs.k8s.io/yaml/goyaml.v2/encode.go similarity index 100% rename from vendor/gopkg.in/yaml.v2/encode.go rename to vendor/sigs.k8s.io/yaml/goyaml.v2/encode.go diff --git a/vendor/gopkg.in/yaml.v2/parserc.go b/vendor/sigs.k8s.io/yaml/goyaml.v2/parserc.go similarity index 100% rename from vendor/gopkg.in/yaml.v2/parserc.go rename to vendor/sigs.k8s.io/yaml/goyaml.v2/parserc.go diff --git a/vendor/gopkg.in/yaml.v2/readerc.go b/vendor/sigs.k8s.io/yaml/goyaml.v2/readerc.go similarity index 100% rename from vendor/gopkg.in/yaml.v2/readerc.go rename to vendor/sigs.k8s.io/yaml/goyaml.v2/readerc.go diff --git a/vendor/gopkg.in/yaml.v2/resolve.go b/vendor/sigs.k8s.io/yaml/goyaml.v2/resolve.go similarity index 100% rename from vendor/gopkg.in/yaml.v2/resolve.go rename to vendor/sigs.k8s.io/yaml/goyaml.v2/resolve.go diff --git a/vendor/gopkg.in/yaml.v2/scannerc.go b/vendor/sigs.k8s.io/yaml/goyaml.v2/scannerc.go similarity index 100% rename from vendor/gopkg.in/yaml.v2/scannerc.go rename to vendor/sigs.k8s.io/yaml/goyaml.v2/scannerc.go diff --git a/vendor/gopkg.in/yaml.v2/sorter.go b/vendor/sigs.k8s.io/yaml/goyaml.v2/sorter.go similarity index 100% rename from vendor/gopkg.in/yaml.v2/sorter.go rename to vendor/sigs.k8s.io/yaml/goyaml.v2/sorter.go diff --git a/vendor/gopkg.in/yaml.v2/writerc.go b/vendor/sigs.k8s.io/yaml/goyaml.v2/writerc.go similarity index 100% rename from vendor/gopkg.in/yaml.v2/writerc.go rename to vendor/sigs.k8s.io/yaml/goyaml.v2/writerc.go diff --git a/vendor/gopkg.in/yaml.v2/yaml.go b/vendor/sigs.k8s.io/yaml/goyaml.v2/yaml.go similarity index 100% rename from vendor/gopkg.in/yaml.v2/yaml.go rename to vendor/sigs.k8s.io/yaml/goyaml.v2/yaml.go diff --git a/vendor/gopkg.in/yaml.v2/yamlh.go b/vendor/sigs.k8s.io/yaml/goyaml.v2/yamlh.go similarity index 100% rename from vendor/gopkg.in/yaml.v2/yamlh.go rename to vendor/sigs.k8s.io/yaml/goyaml.v2/yamlh.go diff --git a/vendor/gopkg.in/yaml.v2/yamlprivateh.go b/vendor/sigs.k8s.io/yaml/goyaml.v2/yamlprivateh.go similarity index 100% rename from vendor/gopkg.in/yaml.v2/yamlprivateh.go rename to vendor/sigs.k8s.io/yaml/goyaml.v2/yamlprivateh.go diff --git a/vendor/sigs.k8s.io/yaml/yaml.go b/vendor/sigs.k8s.io/yaml/yaml.go index efbc535d4..fc10246bd 100644 --- a/vendor/sigs.k8s.io/yaml/yaml.go +++ b/vendor/sigs.k8s.io/yaml/yaml.go @@ -1,3 +1,19 @@ +/* +Copyright 2021 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + package yaml import ( @@ -8,56 +24,59 @@ import ( "reflect" "strconv" - "gopkg.in/yaml.v2" + "sigs.k8s.io/yaml/goyaml.v2" ) -// Marshal marshals the object into JSON then converts JSON to YAML and returns the -// YAML. -func Marshal(o interface{}) ([]byte, error) { - j, err := json.Marshal(o) +// Marshal marshals obj into JSON using stdlib json.Marshal, and then converts JSON to YAML using JSONToYAML (see that method for more reference) +func Marshal(obj interface{}) ([]byte, error) { + jsonBytes, err := json.Marshal(obj) if err != nil { - return nil, fmt.Errorf("error marshaling into JSON: %v", err) + return nil, fmt.Errorf("error marshaling into JSON: %w", err) } - y, err := JSONToYAML(j) - if err != nil { - return nil, fmt.Errorf("error converting JSON to YAML: %v", err) - } - - return y, nil + return JSONToYAML(jsonBytes) } // JSONOpt is a decoding option for decoding from JSON format. type JSONOpt func(*json.Decoder) *json.Decoder -// Unmarshal converts YAML to JSON then uses JSON to unmarshal into an object, -// optionally configuring the behavior of the JSON unmarshal. -func Unmarshal(y []byte, o interface{}, opts ...JSONOpt) error { - return yamlUnmarshal(y, o, false, opts...) +// Unmarshal first converts the given YAML to JSON, and then unmarshals the JSON into obj. Options for the +// standard library json.Decoder can be optionally specified, e.g. to decode untyped numbers into json.Number instead of float64, or to disallow unknown fields (but for that purpose, see also UnmarshalStrict). obj must be a non-nil pointer. +// +// Important notes about the Unmarshal logic: +// +// - Decoding is case-insensitive, unlike the rest of Kubernetes API machinery, as this is using the stdlib json library. This might be confusing to users. +// - This decodes any number (although it is an integer) into a float64 if the type of obj is unknown, e.g. *map[string]interface{}, *interface{}, or *[]interface{}. This means integers above +/- 2^53 will lose precision when round-tripping. Make a JSONOpt that calls d.UseNumber() to avoid this. +// - Duplicate fields, including in-case-sensitive matches, are ignored in an undefined order. Note that the YAML specification forbids duplicate fields, so this logic is more permissive than it needs to. See UnmarshalStrict for an alternative. +// - Unknown fields, i.e. serialized data that do not map to a field in obj, are ignored. Use d.DisallowUnknownFields() or UnmarshalStrict to override. +// - As per the YAML 1.1 specification, which yaml.v2 used underneath implements, literal 'yes' and 'no' strings without quotation marks will be converted to true/false implicitly. +// - YAML non-string keys, e.g. ints, bools and floats, are converted to strings implicitly during the YAML to JSON conversion process. +// - There are no compatibility guarantees for returned error values. +func Unmarshal(yamlBytes []byte, obj interface{}, opts ...JSONOpt) error { + return unmarshal(yamlBytes, obj, yaml.Unmarshal, opts...) } -// UnmarshalStrict strictly converts YAML to JSON then uses JSON to unmarshal -// into an object, optionally configuring the behavior of the JSON unmarshal. -func UnmarshalStrict(y []byte, o interface{}, opts ...JSONOpt) error { - return yamlUnmarshal(y, o, true, append(opts, DisallowUnknownFields)...) +// UnmarshalStrict is similar to Unmarshal (please read its documentation for reference), with the following exceptions: +// +// - Duplicate fields in an object yield an error. This is according to the YAML specification. +// - If obj, or any of its recursive children, is a struct, presence of fields in the serialized data unknown to the struct will yield an error. +func UnmarshalStrict(yamlBytes []byte, obj interface{}, opts ...JSONOpt) error { + return unmarshal(yamlBytes, obj, yaml.UnmarshalStrict, append(opts, DisallowUnknownFields)...) } -// yamlUnmarshal unmarshals the given YAML byte stream into the given interface, +// unmarshal unmarshals the given YAML byte stream into the given interface, // optionally performing the unmarshalling strictly -func yamlUnmarshal(y []byte, o interface{}, strict bool, opts ...JSONOpt) error { - vo := reflect.ValueOf(o) - unmarshalFn := yaml.Unmarshal - if strict { - unmarshalFn = yaml.UnmarshalStrict - } - j, err := yamlToJSON(y, &vo, unmarshalFn) +func unmarshal(yamlBytes []byte, obj interface{}, unmarshalFn func([]byte, interface{}) error, opts ...JSONOpt) error { + jsonTarget := reflect.ValueOf(obj) + + jsonBytes, err := yamlToJSONTarget(yamlBytes, &jsonTarget, unmarshalFn) if err != nil { - return fmt.Errorf("error converting YAML to JSON: %v", err) + return fmt.Errorf("error converting YAML to JSON: %w", err) } - err = jsonUnmarshal(bytes.NewReader(j), o, opts...) + err = jsonUnmarshal(bytes.NewReader(jsonBytes), obj, opts...) if err != nil { - return fmt.Errorf("error unmarshaling JSON: %v", err) + return fmt.Errorf("error unmarshaling JSON: %w", err) } return nil @@ -67,21 +86,26 @@ func yamlUnmarshal(y []byte, o interface{}, strict bool, opts ...JSONOpt) error // object, optionally applying decoder options prior to decoding. We are not // using json.Unmarshal directly as we want the chance to pass in non-default // options. -func jsonUnmarshal(r io.Reader, o interface{}, opts ...JSONOpt) error { - d := json.NewDecoder(r) +func jsonUnmarshal(reader io.Reader, obj interface{}, opts ...JSONOpt) error { + d := json.NewDecoder(reader) for _, opt := range opts { d = opt(d) } - if err := d.Decode(&o); err != nil { + if err := d.Decode(&obj); err != nil { return fmt.Errorf("while decoding JSON: %v", err) } return nil } -// JSONToYAML Converts JSON to YAML. +// JSONToYAML converts JSON to YAML. Notable implementation details: +// +// - Duplicate fields, are case-sensitively ignored in an undefined order. +// - The sequence indentation style is compact, which means that the "- " marker for a YAML sequence will be on the same indentation level as the sequence field name. +// - Unlike Unmarshal, all integers, up to 64 bits, are preserved during this round-trip. func JSONToYAML(j []byte) ([]byte, error) { // Convert the JSON to an object. var jsonObj interface{} + // We are using yaml.Unmarshal here (instead of json.Unmarshal) because the // Go JSON library doesn't try to pick the right number type (int, float, // etc.) when unmarshalling to interface{}, it just picks float64 @@ -93,35 +117,46 @@ func JSONToYAML(j []byte) ([]byte, error) { } // Marshal this object into YAML. - return yaml.Marshal(jsonObj) + yamlBytes, err := yaml.Marshal(jsonObj) + if err != nil { + return nil, err + } + + return yamlBytes, nil } // YAMLToJSON converts YAML to JSON. Since JSON is a subset of YAML, // passing JSON through this method should be a no-op. // -// Things YAML can do that are not supported by JSON: -// * In YAML you can have binary and null keys in your maps. These are invalid -// in JSON. (int and float keys are converted to strings.) -// * Binary data in YAML with the !!binary tag is not supported. If you want to -// use binary data with this library, encode the data as base64 as usual but do -// not use the !!binary tag in your YAML. This will ensure the original base64 -// encoded data makes it all the way through to the JSON. +// Some things YAML can do that are not supported by JSON: +// - In YAML you can have binary and null keys in your maps. These are invalid +// in JSON, and therefore int, bool and float keys are converted to strings implicitly. +// - Binary data in YAML with the !!binary tag is not supported. If you want to +// use binary data with this library, encode the data as base64 as usual but do +// not use the !!binary tag in your YAML. This will ensure the original base64 +// encoded data makes it all the way through to the JSON. +// - And more... read the YAML specification for more details. +// +// Notable about the implementation: // -// For strict decoding of YAML, use YAMLToJSONStrict. +// - Duplicate fields are case-sensitively ignored in an undefined order. Note that the YAML specification forbids duplicate fields, so this logic is more permissive than it needs to. See YAMLToJSONStrict for an alternative. +// - As per the YAML 1.1 specification, which yaml.v2 used underneath implements, literal 'yes' and 'no' strings without quotation marks will be converted to true/false implicitly. +// - Unlike Unmarshal, all integers, up to 64 bits, are preserved during this round-trip. +// - There are no compatibility guarantees for returned error values. func YAMLToJSON(y []byte) ([]byte, error) { - return yamlToJSON(y, nil, yaml.Unmarshal) + return yamlToJSONTarget(y, nil, yaml.Unmarshal) } // YAMLToJSONStrict is like YAMLToJSON but enables strict YAML decoding, // returning an error on any duplicate field names. func YAMLToJSONStrict(y []byte) ([]byte, error) { - return yamlToJSON(y, nil, yaml.UnmarshalStrict) + return yamlToJSONTarget(y, nil, yaml.UnmarshalStrict) } -func yamlToJSON(y []byte, jsonTarget *reflect.Value, yamlUnmarshal func([]byte, interface{}) error) ([]byte, error) { +func yamlToJSONTarget(yamlBytes []byte, jsonTarget *reflect.Value, unmarshalFn func([]byte, interface{}) error) ([]byte, error) { // Convert the YAML to an object. var yamlObj interface{} - err := yamlUnmarshal(y, &yamlObj) + err := unmarshalFn(yamlBytes, &yamlObj) if err != nil { return nil, err } @@ -136,7 +171,11 @@ func yamlToJSON(y []byte, jsonTarget *reflect.Value, yamlUnmarshal func([]byte, } // Convert this object to JSON and return the data. - return json.Marshal(jsonObj) + jsonBytes, err := json.Marshal(jsonObj) + if err != nil { + return nil, err + } + return jsonBytes, nil } func convertToJSONableObject(yamlObj interface{}, jsonTarget *reflect.Value) (interface{}, error) { @@ -147,13 +186,13 @@ func convertToJSONableObject(yamlObj interface{}, jsonTarget *reflect.Value) (in // decoding into the value, we're just checking if the ultimate target is a // string. if jsonTarget != nil { - ju, tu, pv := indirect(*jsonTarget, false) + jsonUnmarshaler, textUnmarshaler, pointerValue := indirect(*jsonTarget, false) // We have a JSON or Text Umarshaler at this level, so we can't be trying // to decode into a string. - if ju != nil || tu != nil { + if jsonUnmarshaler != nil || textUnmarshaler != nil { jsonTarget = nil } else { - jsonTarget = &pv + jsonTarget = &pointerValue } } @@ -205,7 +244,7 @@ func convertToJSONableObject(yamlObj interface{}, jsonTarget *reflect.Value) (in keyString = "false" } default: - return nil, fmt.Errorf("Unsupported map key of type: %s, key: %+#v, value: %+#v", + return nil, fmt.Errorf("unsupported map key of type: %s, key: %+#v, value: %+#v", reflect.TypeOf(k), k, v) } diff --git a/vendor/sigs.k8s.io/yaml/yaml_go110.go b/vendor/sigs.k8s.io/yaml/yaml_go110.go index ab3e06a22..94abc1719 100644 --- a/vendor/sigs.k8s.io/yaml/yaml_go110.go +++ b/vendor/sigs.k8s.io/yaml/yaml_go110.go @@ -1,7 +1,24 @@ // This file contains changes that are only compatible with go 1.10 and onwards. +//go:build go1.10 // +build go1.10 +/* +Copyright 2021 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + package yaml import "encoding/json" diff --git a/vendor/tags.cncf.io/container-device-interface/pkg/cdi/annotations.go b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/annotations.go index a38b0f1bc..a596c610b 100644 --- a/vendor/tags.cncf.io/container-device-interface/pkg/cdi/annotations.go +++ b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/annotations.go @@ -71,7 +71,7 @@ func ParseAnnotations(annotations map[string]string) ([]string, []string, error) continue } for _, d := range strings.Split(value, ",") { - if !IsQualifiedName(d) { + if !parser.IsQualifiedName(d) { return nil, nil, fmt.Errorf("invalid CDI device name %q", d) } devices = append(devices, d) @@ -130,7 +130,7 @@ func AnnotationKey(pluginName, deviceID string) (string, error) { func AnnotationValue(devices []string) (string, error) { value, sep := "", "" for _, d := range devices { - if _, _, _, err := ParseQualifiedName(d); err != nil { + if _, _, _, err := parser.ParseQualifiedName(d); err != nil { return "", err } value += sep + d diff --git a/vendor/tags.cncf.io/container-device-interface/pkg/cdi/cache.go b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/cache.go index c2f7fe346..7095f27da 100644 --- a/vendor/tags.cncf.io/container-device-interface/pkg/cdi/cache.go +++ b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/cache.go @@ -22,6 +22,7 @@ import ( "io/fs" "os" "path/filepath" + "runtime" "sort" "strings" "sync" @@ -116,7 +117,7 @@ func (c *Cache) configure(options ...Option) { c.watch.setup(c.specDirs, c.dirErrors) c.watch.start(&c.Mutex, c.refresh, c.dirErrors) } - c.refresh() + _ = c.refresh() // we record but ignore errors } // Refresh rescans the CDI Spec directories and refreshes the Cache. @@ -222,7 +223,8 @@ func (c *Cache) refreshIfRequired(force bool) (bool, error) { // InjectDevices injects the given qualified devices to an OCI Spec. It // returns any unresolvable devices and an error if injection fails for -// any of the devices. +// any of the devices. Might trigger a cache refresh, in which case any +// errors encountered can be obtained using GetErrors(). func (c *Cache) InjectDevices(ociSpec *oci.Spec, devices ...string) ([]string, error) { var unresolved []string @@ -233,7 +235,7 @@ func (c *Cache) InjectDevices(ociSpec *oci.Spec, devices ...string) ([]string, e c.Lock() defer c.Unlock() - c.refreshIfRequired(false) + _, _ = c.refreshIfRequired(false) // we record but ignore errors edits := &ContainerEdits{} specs := map[*Spec]struct{}{} @@ -335,24 +337,27 @@ func (c *Cache) RemoveSpec(name string) error { return err } -// GetDevice returns the cached device for the given qualified name. +// GetDevice returns the cached device for the given qualified name. Might trigger +// a cache refresh, in which case any errors encountered can be obtained using +// GetErrors(). func (c *Cache) GetDevice(device string) *Device { c.Lock() defer c.Unlock() - c.refreshIfRequired(false) + _, _ = c.refreshIfRequired(false) // we record but ignore errors return c.devices[device] } -// ListDevices lists all cached devices by qualified name. +// ListDevices lists all cached devices by qualified name. Might trigger a cache +// refresh, in which case any errors encountered can be obtained using GetErrors(). func (c *Cache) ListDevices() []string { var devices []string c.Lock() defer c.Unlock() - c.refreshIfRequired(false) + _, _ = c.refreshIfRequired(false) // we record but ignore errors for name := range c.devices { devices = append(devices, name) @@ -362,14 +367,15 @@ func (c *Cache) ListDevices() []string { return devices } -// ListVendors lists all vendors known to the cache. +// ListVendors lists all vendors known to the cache. Might trigger a cache refresh, +// in which case any errors encountered can be obtained using GetErrors(). func (c *Cache) ListVendors() []string { var vendors []string c.Lock() defer c.Unlock() - c.refreshIfRequired(false) + _, _ = c.refreshIfRequired(false) // we record but ignore errors for vendor := range c.specs { vendors = append(vendors, vendor) @@ -379,7 +385,8 @@ func (c *Cache) ListVendors() []string { return vendors } -// ListClasses lists all device classes known to the cache. +// ListClasses lists all device classes known to the cache. Might trigger a cache +// refresh, in which case any errors encountered can be obtained using GetErrors(). func (c *Cache) ListClasses() []string { var ( cmap = map[string]struct{}{} @@ -389,7 +396,7 @@ func (c *Cache) ListClasses() []string { c.Lock() defer c.Unlock() - c.refreshIfRequired(false) + _, _ = c.refreshIfRequired(false) // we record but ignore errors for _, specs := range c.specs { for _, spec := range specs { @@ -404,12 +411,13 @@ func (c *Cache) ListClasses() []string { return classes } -// GetVendorSpecs returns all specs for the given vendor. +// GetVendorSpecs returns all specs for the given vendor. Might trigger a cache +// refresh, in which case any errors encountered can be obtained using GetErrors(). func (c *Cache) GetVendorSpecs(vendor string) []*Spec { c.Lock() defer c.Unlock() - c.refreshIfRequired(false) + _, _ = c.refreshIfRequired(false) // we record but ignore errors return c.specs[vendor] } @@ -522,6 +530,13 @@ func (w *watch) watch(fsw *fsnotify.Watcher, m *sync.Mutex, refresh func() error if watch == nil { return } + + eventMask := fsnotify.Rename | fsnotify.Remove | fsnotify.Write + // On macOS, we also need to watch for Create events. + if runtime.GOOS == "darwin" { + eventMask |= fsnotify.Create + } + for { select { case event, ok := <-watch.Events: @@ -529,10 +544,10 @@ func (w *watch) watch(fsw *fsnotify.Watcher, m *sync.Mutex, refresh func() error return } - if (event.Op & (fsnotify.Rename | fsnotify.Remove | fsnotify.Write)) == 0 { + if (event.Op & eventMask) == 0 { continue } - if event.Op == fsnotify.Write { + if event.Op == fsnotify.Write || event.Op == fsnotify.Create { if ext := filepath.Ext(event.Name); ext != ".json" && ext != ".yaml" { continue } @@ -544,7 +559,7 @@ func (w *watch) watch(fsw *fsnotify.Watcher, m *sync.Mutex, refresh func() error } else { w.update(dirErrors) } - refresh() + _ = refresh() m.Unlock() case _, ok := <-watch.Errors: @@ -564,6 +579,14 @@ func (w *watch) update(dirErrors map[string]error, removed ...string) bool { update bool ) + // If we failed to create an fsnotify.Watcher we have a nil watcher here + // (but with autoRefresh left on). One known case when this can happen is + // if we have too many open files. In that case we always return true and + // force a refresh. + if w.watcher == nil { + return true + } + for dir, ok = range w.tracked { if ok { continue diff --git a/vendor/tags.cncf.io/container-device-interface/pkg/cdi/cache_test_darwin.go b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/cache_test_darwin.go new file mode 100644 index 000000000..b09ea6ff9 --- /dev/null +++ b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/cache_test_darwin.go @@ -0,0 +1,26 @@ +//go:build darwin +// +build darwin + +/* + Copyright © 2021 The CDI Authors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +package cdi + +import "syscall" + +func osSync() { + _ = syscall.Sync() +} diff --git a/vendor/tags.cncf.io/container-device-interface/pkg/cdi/cache_test_unix.go b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/cache_test_unix.go index 0ee5fb86f..b7c44129f 100644 --- a/vendor/tags.cncf.io/container-device-interface/pkg/cdi/cache_test_unix.go +++ b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/cache_test_unix.go @@ -1,5 +1,5 @@ -//go:build !windows -// +build !windows +//go:build !windows && !darwin +// +build !windows,!darwin /* Copyright © 2021 The CDI Authors diff --git a/vendor/tags.cncf.io/container-device-interface/pkg/cdi/container-edits.go b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/container-edits.go index 70791666c..4744eff8f 100644 --- a/vendor/tags.cncf.io/container-device-interface/pkg/cdi/container-edits.go +++ b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/container-edits.go @@ -26,7 +26,7 @@ import ( oci "github.com/opencontainers/runtime-spec/specs-go" ocigen "github.com/opencontainers/runtime-tools/generate" - "tags.cncf.io/container-device-interface/specs-go" + cdi "tags.cncf.io/container-device-interface/specs-go" ) const ( @@ -64,7 +64,7 @@ var ( // to all OCI Specs where at least one devices from the CDI Spec // is injected. type ContainerEdits struct { - *specs.ContainerEdits + *cdi.ContainerEdits } // Apply edits to the given OCI Spec. Updates the OCI Spec in place. @@ -205,7 +205,7 @@ func (e *ContainerEdits) Append(o *ContainerEdits) *ContainerEdits { e = &ContainerEdits{} } if e.ContainerEdits == nil { - e.ContainerEdits = &specs.ContainerEdits{} + e.ContainerEdits = &cdi.ContainerEdits{} } e.Env = append(e.Env, o.Env...) @@ -259,7 +259,7 @@ func ValidateEnv(env []string) error { // DeviceNode is a CDI Spec DeviceNode wrapper, used for validating DeviceNodes. type DeviceNode struct { - *specs.DeviceNode + *cdi.DeviceNode } // Validate a CDI Spec DeviceNode. @@ -289,7 +289,7 @@ func (d *DeviceNode) Validate() error { // Hook is a CDI Spec Hook wrapper, used for validating hooks. type Hook struct { - *specs.Hook + *cdi.Hook } // Validate a hook. @@ -308,7 +308,7 @@ func (h *Hook) Validate() error { // Mount is a CDI Mount wrapper, used for validating mounts. type Mount struct { - *specs.Mount + *cdi.Mount } // Validate a mount. @@ -325,13 +325,13 @@ func (m *Mount) Validate() error { // IntelRdt is a CDI IntelRdt wrapper. // This is used for validation and conversion to OCI specifications. type IntelRdt struct { - *specs.IntelRdt + *cdi.IntelRdt } // ValidateIntelRdt validates the IntelRdt configuration. // // Deprecated: ValidateIntelRdt is deprecated use IntelRdt.Validate() instead. -func ValidateIntelRdt(i *specs.IntelRdt) error { +func ValidateIntelRdt(i *cdi.IntelRdt) error { return (&IntelRdt{i}).Validate() } @@ -355,7 +355,7 @@ func ensureOCIHooks(spec *oci.Spec) { func sortMounts(specgen *ocigen.Generator) { mounts := specgen.Mounts() specgen.ClearMounts() - sort.Sort(orderedMounts(mounts)) + sort.Stable(orderedMounts(mounts)) specgen.Config.Mounts = mounts } @@ -375,14 +375,7 @@ func (m orderedMounts) Len() int { // mount indexed by parameter 1 is less than that of the mount indexed by // parameter 2. Used in sorting. func (m orderedMounts) Less(i, j int) bool { - ip, jp := m.parts(i), m.parts(j) - if ip < jp { - return true - } - if jp < ip { - return false - } - return m[i].Destination < m[j].Destination + return m.parts(i) < m.parts(j) } // Swap swaps two items in an array of mounts. Used in sorting diff --git a/vendor/tags.cncf.io/container-device-interface/pkg/cdi/device.go b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/device.go index 00be48dd5..2e5fa57f4 100644 --- a/vendor/tags.cncf.io/container-device-interface/pkg/cdi/device.go +++ b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/device.go @@ -67,7 +67,7 @@ func (d *Device) edits() *ContainerEdits { // Validate the device. func (d *Device) validate() error { - if err := ValidateDeviceName(d.Name); err != nil { + if err := parser.ValidateDeviceName(d.Name); err != nil { return err } name := d.Name diff --git a/vendor/tags.cncf.io/container-device-interface/pkg/cdi/doc.go b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/doc.go index 0ea071455..d00e0d339 100644 --- a/vendor/tags.cncf.io/container-device-interface/pkg/cdi/doc.go +++ b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/doc.go @@ -35,25 +35,11 @@ // available and instantiated the first time it is referenced directly // or indirectly. The most frequently used cache functions are available // as identically named package level functions which operate on the -// default cache instance. Moreover, the registry also operates on the -// same default cache. We plan to deprecate the registry and eventually -// remove it in a future release. -// -// # CDI Registry -// -// Note: the Registry and its related interfaces are deprecated and will -// be removed in a future version. Please use the default cache and its -// related package-level function instead. -// -// The primary interface to interact with CDI devices is the Registry. It -// is essentially a cache of all Specs and devices discovered in standard -// CDI directories on the host. The registry has two main functionality, -// injecting devices into an OCI Spec and refreshing the cache of CDI -// Specs and devices. +// default cache instance. // // # Device Injection // -// Using the Registry one can inject CDI devices into a container with code +// Using the Cache one can inject CDI devices into a container with code // similar to the following snippet: // // import ( @@ -63,13 +49,14 @@ // log "github.com/sirupsen/logrus" // // "tags.cncf.io/container-device-interface/pkg/cdi" -// oci "github.com/opencontainers/runtime-spec/specs-go" +// "github.com/opencontainers/runtime-spec/specs-go" // ) // -// func injectCDIDevices(spec *oci.Spec, devices []string) error { +// func injectCDIDevices(spec *specs.Spec, devices []string) error { // log.Debug("pristine OCI Spec: %s", dumpSpec(spec)) // -// unresolved, err := cdi.GetRegistry().InjectDevices(spec, devices) +// cache := cdi.GetDefaultCache() +// unresolved, err := cache.InjectDevices(spec, devices) // if err != nil { // return fmt.Errorf("CDI device injection failed: %w", err) // } @@ -106,17 +93,17 @@ // log "github.com/sirupsen/logrus" // // "tags.cncf.io/container-device-interface/pkg/cdi" -// oci "github.com/opencontainers/runtime-spec/specs-go" +// "github.com/opencontainers/runtime-spec/specs-go" // ) // -// func injectCDIDevices(spec *oci.Spec, devices []string) error { -// registry := cdi.GetRegistry() +// func injectCDIDevices(spec *specs.Spec, devices []string) error { +// cache := cdi.GetDefaultCache() // -// if err := registry.Refresh(); err != nil { +// if err := cache.Refresh(); err != nil { // // Note: // // It is up to the implementation to decide whether // // to abort injection on errors. A failed Refresh() -// // does not necessarily render the registry unusable. +// // does not necessarily render the cache unusable. // // For instance, a parse error in a Spec file for // // vendor A does not have any effect on devices of // // vendor B... @@ -125,7 +112,7 @@ // // log.Debug("pristine OCI Spec: %s", dumpSpec(spec)) // -// unresolved, err := registry.InjectDevices(spec, devices) +// unresolved, err := cache.InjectDevices(spec, devices) // if err != nil { // return fmt.Errorf("CDI device injection failed: %w", err) // } @@ -192,7 +179,7 @@ // ) // // func generateDeviceSpecs() error { -// registry := cdi.GetRegistry() +// cache := specs.GetDefaultCache() // spec := &specs.Spec{ // Version: specs.CurrentVersion, // Kind: vendor+"/"+class, @@ -210,7 +197,7 @@ // return fmt.Errorf("failed to generate Spec name: %w", err) // } // -// return registry.SpecDB().WriteSpec(spec, specName) +// return cache.WriteSpec(spec, specName) // } // // Similarly, generating and later cleaning up transient Spec files can be @@ -229,7 +216,7 @@ // ) // // func generateTransientSpec(ctr Container) error { -// registry := cdi.GetRegistry() +// cache := specs.GetDefaultCache() // devices := getContainerDevs(ctr, vendor, class) // spec := &specs.Spec{ // Version: specs.CurrentVersion, @@ -257,21 +244,21 @@ // return fmt.Errorf("failed to generate Spec name: %w", err) // } // -// return registry.SpecDB().WriteSpec(spec, specName) +// return cache.WriteSpec(spec, specName) // } // // func removeTransientSpec(ctr Container) error { -// registry := cdi.GetRegistry() +// cache := specs.GetDefaultCache() // transientID := getSomeSufficientlyUniqueIDForContainer(ctr) // specName := cdi.GenerateNameForTransientSpec(vendor, class, transientID) // -// return registry.SpecDB().RemoveSpec(specName) +// return cache.RemoveSpec(specName) // } // // # CDI Spec Validation // // This package performs both syntactic and semantic validation of CDI -// Spec file data when a Spec file is loaded via the registry or using +// Spec file data when a Spec file is loaded via the cache or using // the ReadSpec API function. As part of the semantic verification, the // Spec file is verified against the CDI Spec JSON validation schema. // diff --git a/vendor/tags.cncf.io/container-device-interface/pkg/cdi/qualified-device.go b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/qualified-device.go deleted file mode 100644 index 0bdfdc166..000000000 --- a/vendor/tags.cncf.io/container-device-interface/pkg/cdi/qualified-device.go +++ /dev/null @@ -1,113 +0,0 @@ -/* - Copyright © 2021 The CDI Authors - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -package cdi - -import ( - "tags.cncf.io/container-device-interface/pkg/parser" -) - -// QualifiedName returns the qualified name for a device. -// The syntax for a qualified device names is -// -// "<vendor>/<class>=<name>". -// -// A valid vendor and class name may contain the following runes: -// -// 'A'-'Z', 'a'-'z', '0'-'9', '.', '-', '_'. -// -// A valid device name may contain the following runes: -// -// 'A'-'Z', 'a'-'z', '0'-'9', '-', '_', '.', ':' -// -// Deprecated: use parser.QualifiedName instead -func QualifiedName(vendor, class, name string) string { - return parser.QualifiedName(vendor, class, name) -} - -// IsQualifiedName tests if a device name is qualified. -// -// Deprecated: use parser.IsQualifiedName instead -func IsQualifiedName(device string) bool { - return parser.IsQualifiedName(device) -} - -// ParseQualifiedName splits a qualified name into device vendor, class, -// and name. If the device fails to parse as a qualified name, or if any -// of the split components fail to pass syntax validation, vendor and -// class are returned as empty, together with the verbatim input as the -// name and an error describing the reason for failure. -// -// Deprecated: use parser.ParseQualifiedName instead -func ParseQualifiedName(device string) (string, string, string, error) { - return parser.ParseQualifiedName(device) -} - -// ParseDevice tries to split a device name into vendor, class, and name. -// If this fails, for instance in the case of unqualified device names, -// ParseDevice returns an empty vendor and class together with name set -// to the verbatim input. -// -// Deprecated: use parser.ParseDevice instead -func ParseDevice(device string) (string, string, string) { - return parser.ParseDevice(device) -} - -// ParseQualifier splits a device qualifier into vendor and class. -// The syntax for a device qualifier is -// -// "<vendor>/<class>" -// -// If parsing fails, an empty vendor and the class set to the -// verbatim input is returned. -// -// Deprecated: use parser.ParseQualifier instead -func ParseQualifier(kind string) (string, string) { - return parser.ParseQualifier(kind) -} - -// ValidateVendorName checks the validity of a vendor name. -// A vendor name may contain the following ASCII characters: -// - upper- and lowercase letters ('A'-'Z', 'a'-'z') -// - digits ('0'-'9') -// - underscore, dash, and dot ('_', '-', and '.') -// -// Deprecated: use parser.ValidateVendorName instead -func ValidateVendorName(vendor string) error { - return parser.ValidateVendorName(vendor) -} - -// ValidateClassName checks the validity of class name. -// A class name may contain the following ASCII characters: -// - upper- and lowercase letters ('A'-'Z', 'a'-'z') -// - digits ('0'-'9') -// - underscore, dash, and dot ('_', '-', and '.') -// -// Deprecated: use parser.ValidateClassName instead -func ValidateClassName(class string) error { - return parser.ValidateClassName(class) -} - -// ValidateDeviceName checks the validity of a device name. -// A device name may contain the following ASCII characters: -// - upper- and lowercase letters ('A'-'Z', 'a'-'z') -// - digits ('0'-'9') -// - underscore, dash, dot, colon ('_', '-', '.', ':') -// -// Deprecated: use parser.ValidateDeviceName instead -func ValidateDeviceName(name string) error { - return parser.ValidateDeviceName(name) -} diff --git a/vendor/tags.cncf.io/container-device-interface/pkg/cdi/registry.go b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/registry.go deleted file mode 100644 index 3113a05a2..000000000 --- a/vendor/tags.cncf.io/container-device-interface/pkg/cdi/registry.go +++ /dev/null @@ -1,178 +0,0 @@ -/* - Copyright © 2021 The CDI Authors - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -package cdi - -import ( - "sync" - - oci "github.com/opencontainers/runtime-spec/specs-go" - cdi "tags.cncf.io/container-device-interface/specs-go" -) - -// Registry keeps a cache of all CDI Specs installed or generated on -// the host. Registry is the primary interface clients should use to -// interact with CDI. -// -// The most commonly used Registry functions are for refreshing the -// registry and injecting CDI devices into an OCI Spec. -// -// Deprecated: Registry is deprecated and will be removed in a future -// version. Please update your code to use the corresponding package- -// level functions Configure(), Refresh(), InjectDevices(), GetErrors(), -// and GetDefaultCache(). -type Registry interface { - RegistryResolver - RegistryRefresher - DeviceDB() RegistryDeviceDB - SpecDB() RegistrySpecDB -} - -// RegistryRefresher is the registry interface for refreshing the -// cache of CDI Specs and devices. -// -// Configure reconfigures the registry with the given options. -// -// Refresh rescans all CDI Spec directories and updates the -// state of the cache to reflect any changes. It returns any -// errors encountered during the refresh. -// -// GetErrors returns all errors encountered for any of the scanned -// Spec files during the last cache refresh. -// -// GetSpecDirectories returns the set up CDI Spec directories -// currently in use. The directories are returned in the scan -// order of Refresh(). -// -// GetSpecDirErrors returns any errors related to the configured -// Spec directories. -// -// Deprecated: RegistryRefresher is deprecated and will be removed -// in a future version. Please use the default cache and its related -// package-level functions instead. -type RegistryRefresher interface { - Configure(...Option) error - Refresh() error - GetErrors() map[string][]error - GetSpecDirectories() []string - GetSpecDirErrors() map[string]error -} - -// RegistryResolver is the registry interface for injecting CDI -// devices into an OCI Spec. -// -// InjectDevices takes an OCI Spec and injects into it a set of -// CDI devices given by qualified name. It returns the names of -// any unresolved devices and an error if injection fails. -// -// Deprecated: RegistryRefresher is deprecated and will be removed -// in a future version. Please use the default cache and its related -// package-level functions instead. -type RegistryResolver interface { - InjectDevices(spec *oci.Spec, device ...string) (unresolved []string, err error) -} - -// RegistryDeviceDB is the registry interface for querying devices. -// -// GetDevice returns the CDI device for the given qualified name. If -// the device is not GetDevice returns nil. -// -// ListDevices returns a slice with the names of qualified device -// known. The returned slice is sorted. -// -// Deprecated: RegistryDeviceDB is deprecated and will be removed -// in a future version. Please use the default cache and its related -// package-level functions instead. -// and will be removed in a future version. Please use the default -// cache and its related package-level functions instead. -type RegistryDeviceDB interface { - GetDevice(device string) *Device - ListDevices() []string -} - -// RegistrySpecDB is the registry interface for querying CDI Specs. -// -// ListVendors returns a slice with all vendors known. The returned -// slice is sorted. -// -// ListClasses returns a slice with all classes known. The returned -// slice is sorted. -// -// GetVendorSpecs returns a slice of all Specs for the vendor. -// -// GetSpecErrors returns any errors for the Spec encountered during -// the last cache refresh. -// -// WriteSpec writes the Spec with the given content and name to the -// last Spec directory. -// -// Deprecated: RegistrySpecDB is deprecated and will be removed -// in a future version. Please use the default cache and its related -// package-level functions instead. -type RegistrySpecDB interface { - ListVendors() []string - ListClasses() []string - GetVendorSpecs(vendor string) []*Spec - GetSpecErrors(*Spec) []error - WriteSpec(raw *cdi.Spec, name string) error - RemoveSpec(name string) error -} - -type registry struct { - *Cache -} - -var _ Registry = &registry{} - -var ( - reg *registry - initOnce sync.Once -) - -// GetRegistry returns the CDI registry. If any options are given, those -// are applied to the registry. -// -// Deprecated: GetRegistry is deprecated and will be removed in a future -// version. Please use the default cache and its related package-level -// functions instead. -func GetRegistry(options ...Option) Registry { - initOnce.Do(func() { - reg = &registry{GetDefaultCache()} - }) - if len(options) > 0 { - // We don't care about errors here - _ = reg.Configure(options...) - } - return reg -} - -// DeviceDB returns the registry interface for querying devices. -// -// Deprecated: DeviceDB is deprecated and will be removed in a future -// version. Please use the default cache and its related package-level -// functions instead. -func (r *registry) DeviceDB() RegistryDeviceDB { - return r -} - -// SpecDB returns the registry interface for querying Specs. -// -// Deprecated: SpecDB is deprecated and will be removed in a future -// version. Please use the default cache and its related package-level -// functions instead. -func (r *registry) SpecDB() RegistrySpecDB { - return r -} diff --git a/vendor/tags.cncf.io/container-device-interface/pkg/cdi/spec-dirs.go b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/spec-dirs.go index 09005d690..b192f962c 100644 --- a/vendor/tags.cncf.io/container-device-interface/pkg/cdi/spec-dirs.go +++ b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/spec-dirs.go @@ -35,8 +35,7 @@ var ( // While altering this variable changes the package defaults, // the preferred way of overriding the default directories is // to use a WithSpecDirs options. Otherwise the change is only - // effective if it takes place before creating the Registry or - // other Cache instances. + // effective if it takes place before creating the cache instance. DefaultSpecDirs = []string{DefaultStaticDir, DefaultDynamicDir} // ErrStopScan can be returned from a ScanSpecFunc to stop the scan. ErrStopScan = errors.New("stop Spec scan") diff --git a/vendor/tags.cncf.io/container-device-interface/pkg/cdi/spec.go b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/spec.go index 1a0a662b8..8d295a83f 100644 --- a/vendor/tags.cncf.io/container-device-interface/pkg/cdi/spec.go +++ b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/spec.go @@ -25,9 +25,11 @@ import ( "sync" oci "github.com/opencontainers/runtime-spec/specs-go" + orderedyaml "gopkg.in/yaml.v3" "sigs.k8s.io/yaml" "tags.cncf.io/container-device-interface/internal/validation" + "tags.cncf.io/container-device-interface/pkg/parser" cdi "tags.cncf.io/container-device-interface/specs-go" ) @@ -36,9 +38,13 @@ const ( defaultSpecExt = ".yaml" ) +type validator interface { + Validate(*cdi.Spec) error +} + var ( // Externally set CDI Spec validation function. - specValidator func(*cdi.Spec) error + specValidator validator validatorLock sync.RWMutex ) @@ -105,7 +111,7 @@ func newSpec(raw *cdi.Spec, path string, priority int) (*Spec, error) { spec.path += defaultSpecExt } - spec.vendor, spec.class = ParseQualifier(spec.Kind) + spec.vendor, spec.class = parser.ParseQualifier(spec.Kind) if spec.devices, err = spec.validate(); err != nil { return nil, fmt.Errorf("invalid CDI Spec: %w", err) @@ -130,7 +136,7 @@ func (s *Spec) write(overwrite bool) error { } if filepath.Ext(s.path) == ".yaml" { - data, err = yaml.Marshal(s.Spec) + data, err = orderedyaml.Marshal(s.Spec) data = append([]byte("---\n"), data...) } else { data, err = json.Marshal(s.Spec) @@ -200,24 +206,21 @@ func (s *Spec) edits() *ContainerEdits { return &ContainerEdits{&s.ContainerEdits} } +// MinimumRequiredVersion determines the minimum spec version for the input spec. +// Deprecated: use cdi.MinimumRequiredVersion instead +func MinimumRequiredVersion(spec *cdi.Spec) (string, error) { + return cdi.MinimumRequiredVersion(spec) +} + // Validate the Spec. func (s *Spec) validate() (map[string]*Device, error) { - if err := validateVersion(s.Version); err != nil { + if err := cdi.ValidateVersion(s.Spec); err != nil { return nil, err } - - minVersion, err := MinimumRequiredVersion(s.Spec) - if err != nil { - return nil, fmt.Errorf("could not determine minimum required version: %v", err) - } - if newVersion(minVersion).IsGreaterThan(newVersion(s.Version)) { - return nil, fmt.Errorf("the spec version must be at least v%v", minVersion) - } - - if err := ValidateVendorName(s.vendor); err != nil { + if err := parser.ValidateVendorName(s.vendor); err != nil { return nil, err } - if err := ValidateClassName(s.class); err != nil { + if err := parser.ValidateClassName(s.class); err != nil { return nil, err } if err := validation.ValidateSpecAnnotations(s.Kind, s.Annotations); err != nil { @@ -238,17 +241,11 @@ func (s *Spec) validate() (map[string]*Device, error) { } devices[d.Name] = dev } - - return devices, nil -} - -// validateVersion checks whether the specified spec version is supported. -func validateVersion(version string) error { - if !validSpecVersions.isValidVersion(version) { - return fmt.Errorf("invalid version %q", version) + if len(devices) == 0 { + return nil, fmt.Errorf("invalid spec, no devices") } - return nil + return devices, nil } // ParseSpec parses CDI Spec data into a raw CDI Spec. @@ -264,13 +261,13 @@ func ParseSpec(data []byte) (*cdi.Spec, error) { // SetSpecValidator sets a CDI Spec validator function. This function // is used for extra CDI Spec content validation whenever a Spec file // loaded (using ReadSpec() or written (using WriteSpec()). -func SetSpecValidator(fn func(*cdi.Spec) error) { +func SetSpecValidator(v validator) { validatorLock.Lock() defer validatorLock.Unlock() - specValidator = fn + specValidator = v } -// validateSpec validates the Spec using the extneral validator. +// validateSpec validates the Spec using the external validator. func validateSpec(raw *cdi.Spec) error { validatorLock.RLock() defer validatorLock.RUnlock() @@ -278,7 +275,7 @@ func validateSpec(raw *cdi.Spec) error { if specValidator == nil { return nil } - err := specValidator(raw) + err := specValidator.Validate(raw) if err != nil { return fmt.Errorf("Spec validation failed: %w", err) } @@ -328,7 +325,7 @@ func GenerateTransientSpecName(vendor, class, transientID string) string { // the Spec does not contain a valid vendor or class, it returns // an empty name and a non-nil error. func GenerateNameForSpec(raw *cdi.Spec) (string, error) { - vendor, class := ParseQualifier(raw.Kind) + vendor, class := parser.ParseQualifier(raw.Kind) if vendor == "" { return "", fmt.Errorf("invalid vendor/class %q in Spec", raw.Kind) } @@ -342,7 +339,7 @@ func GenerateNameForSpec(raw *cdi.Spec) (string, error) { // If the Spec does not contain a valid vendor or class, it returns an // an empty name and a non-nil error. func GenerateNameForTransientSpec(raw *cdi.Spec, transientID string) (string, error) { - vendor, class := ParseQualifier(raw.Kind) + vendor, class := parser.ParseQualifier(raw.Kind) if vendor == "" { return "", fmt.Errorf("invalid vendor/class %q in Spec", raw.Kind) } diff --git a/vendor/tags.cncf.io/container-device-interface/specs-go/config.go b/vendor/tags.cncf.io/container-device-interface/specs-go/config.go index d6d6302ff..f28657b86 100644 --- a/vendor/tags.cncf.io/container-device-interface/specs-go/config.go +++ b/vendor/tags.cncf.io/container-device-interface/specs-go/config.go @@ -2,72 +2,71 @@ package specs import "os" -// CurrentVersion is the current version of the Spec. -const CurrentVersion = "0.8.0" - // Spec is the base configuration for CDI type Spec struct { - Version string `json:"cdiVersion"` - Kind string `json:"kind"` + Version string `json:"cdiVersion" yaml:"cdiVersion"` + Kind string `json:"kind" yaml:"kind"` // Annotations add meta information per CDI spec. Note these are CDI-specific and do not affect container metadata. - Annotations map[string]string `json:"annotations,omitempty"` - Devices []Device `json:"devices"` - ContainerEdits ContainerEdits `json:"containerEdits,omitempty"` + // Added in v0.6.0. + Annotations map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"` + Devices []Device `json:"devices" yaml:"devices"` + ContainerEdits ContainerEdits `json:"containerEdits,omitempty" yaml:"containerEdits,omitempty"` } // Device is a "Device" a container runtime can add to a container type Device struct { - Name string `json:"name"` + Name string `json:"name" yaml:"name"` // Annotations add meta information per device. Note these are CDI-specific and do not affect container metadata. - Annotations map[string]string `json:"annotations,omitempty"` - ContainerEdits ContainerEdits `json:"containerEdits"` + // Added in v0.6.0. + Annotations map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"` + ContainerEdits ContainerEdits `json:"containerEdits" yaml:"containerEdits"` } // ContainerEdits are edits a container runtime must make to the OCI spec to expose the device. type ContainerEdits struct { - Env []string `json:"env,omitempty"` - DeviceNodes []*DeviceNode `json:"deviceNodes,omitempty"` - Hooks []*Hook `json:"hooks,omitempty"` - Mounts []*Mount `json:"mounts,omitempty"` - IntelRdt *IntelRdt `json:"intelRdt,omitempty"` - AdditionalGIDs []uint32 `json:"additionalGids,omitempty"` + Env []string `json:"env,omitempty" yaml:"env,omitempty"` + DeviceNodes []*DeviceNode `json:"deviceNodes,omitempty" yaml:"deviceNodes,omitempty"` + Hooks []*Hook `json:"hooks,omitempty" yaml:"hooks,omitempty"` + Mounts []*Mount `json:"mounts,omitempty" yaml:"mounts,omitempty"` + IntelRdt *IntelRdt `json:"intelRdt,omitempty" yaml:"intelRdt,omitempty"` // Added in v0.7.0 + AdditionalGIDs []uint32 `json:"additionalGids,omitempty" yaml:"additionalGids,omitempty"` // Added in v0.7.0 } // DeviceNode represents a device node that needs to be added to the OCI spec. type DeviceNode struct { - Path string `json:"path"` - HostPath string `json:"hostPath,omitempty"` - Type string `json:"type,omitempty"` - Major int64 `json:"major,omitempty"` - Minor int64 `json:"minor,omitempty"` - FileMode *os.FileMode `json:"fileMode,omitempty"` - Permissions string `json:"permissions,omitempty"` - UID *uint32 `json:"uid,omitempty"` - GID *uint32 `json:"gid,omitempty"` + Path string `json:"path" yaml:"path"` + HostPath string `json:"hostPath,omitempty" yaml:"hostPath,omitempty"` // Added in v0.5.0 + Type string `json:"type,omitempty" yaml:"type,omitempty"` + Major int64 `json:"major,omitempty" yaml:"major,omitempty"` + Minor int64 `json:"minor,omitempty" yaml:"minor,omitempty"` + FileMode *os.FileMode `json:"fileMode,omitempty" yaml:"fileMode,omitempty"` + Permissions string `json:"permissions,omitempty" yaml:"permissions,omitempty"` + UID *uint32 `json:"uid,omitempty" yaml:"uid,omitempty"` + GID *uint32 `json:"gid,omitempty" yaml:"gid,omitempty"` } // Mount represents a mount that needs to be added to the OCI spec. type Mount struct { - HostPath string `json:"hostPath"` - ContainerPath string `json:"containerPath"` - Options []string `json:"options,omitempty"` - Type string `json:"type,omitempty"` + HostPath string `json:"hostPath" yaml:"hostPath"` + ContainerPath string `json:"containerPath" yaml:"containerPath"` + Options []string `json:"options,omitempty" yaml:"options,omitempty"` + Type string `json:"type,omitempty" yaml:"type,omitempty"` // Added in v0.4.0 } // Hook represents a hook that needs to be added to the OCI spec. type Hook struct { - HookName string `json:"hookName"` - Path string `json:"path"` - Args []string `json:"args,omitempty"` - Env []string `json:"env,omitempty"` - Timeout *int `json:"timeout,omitempty"` + HookName string `json:"hookName" yaml:"hookName"` + Path string `json:"path" yaml:"path"` + Args []string `json:"args,omitempty" yaml:"args,omitempty"` + Env []string `json:"env,omitempty" yaml:"env,omitempty"` + Timeout *int `json:"timeout,omitempty" yaml:"timeout,omitempty"` } // IntelRdt describes the Linux IntelRdt parameters to set in the OCI spec. type IntelRdt struct { - ClosID string `json:"closID,omitempty"` - L3CacheSchema string `json:"l3CacheSchema,omitempty"` - MemBwSchema string `json:"memBwSchema,omitempty"` - EnableCMT bool `json:"enableCMT,omitempty"` - EnableMBM bool `json:"enableMBM,omitempty"` + ClosID string `json:"closID,omitempty" yaml:"closID,omitempty"` + L3CacheSchema string `json:"l3CacheSchema,omitempty" yaml:"l3CacheSchema,omitempty"` + MemBwSchema string `json:"memBwSchema,omitempty" yaml:"memBwSchema,omitempty"` + EnableCMT bool `json:"enableCMT,omitempty" yaml:"enableCMT,omitempty"` + EnableMBM bool `json:"enableMBM,omitempty" yaml:"enableMBM,omitempty"` } diff --git a/vendor/tags.cncf.io/container-device-interface/specs-go/oci.go b/vendor/tags.cncf.io/container-device-interface/specs-go/oci.go deleted file mode 100644 index ce485cb23..000000000 --- a/vendor/tags.cncf.io/container-device-interface/specs-go/oci.go +++ /dev/null @@ -1,56 +0,0 @@ -/* -Copyright © 2021 The CDI Authors - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package specs - -import "errors" - -// errDeprecated is returned for the ToOCI functions below. -// This should provide better guidance for user when migrating from the API -// below to the APIs provided in the cdi package. -var errDeprecated = errors.New("deprecated; Use cdi package functions instead") - -// ToOCI returns the opencontainers runtime Spec Hook for this Hook. -// -// Deprecated: This function has been moved to tags.cncf.io/container-device-interface/pkg/cdi.Hook.toOCI -// and made private. -func (h *Hook) ToOCI() error { - return errDeprecated -} - -// ToOCI returns the opencontainers runtime Spec Mount for this Mount. -// -// Deprecated: This function has been moved to tags.cncf.io/container-device-interface/pkg/cdi.Mount.toOCI -// and made private. -func (m *Mount) ToOCI() error { - return errDeprecated -} - -// ToOCI returns the opencontainers runtime Spec LinuxDevice for this DeviceNode. -// -// Deprecated: This function has been moved to tags.cncf.io/container-device-interface/pkg/cdi.DeviceNode.toOCI -// and made private. -func (d *DeviceNode) ToOCI() error { - return errDeprecated -} - -// ToOCI returns the opencontainers runtime Spec LinuxIntelRdt for this IntelRdt config. -// -// Deprecated: This function has been moved to tags.cncf.io/container-device-interface/pkg/cdi.IntelRdt.toOCI -// and made private. -func (i *IntelRdt) ToOCI() error { - return errDeprecated -} diff --git a/vendor/tags.cncf.io/container-device-interface/pkg/cdi/version.go b/vendor/tags.cncf.io/container-device-interface/specs-go/version.go similarity index 69% rename from vendor/tags.cncf.io/container-device-interface/pkg/cdi/version.go rename to vendor/tags.cncf.io/container-device-interface/specs-go/version.go index 9ca912671..002e03505 100644 --- a/vendor/tags.cncf.io/container-device-interface/pkg/cdi/version.go +++ b/vendor/tags.cncf.io/container-device-interface/specs-go/version.go @@ -14,20 +14,18 @@ limitations under the License. */ -package cdi +package specs import ( + "fmt" "strings" "golang.org/x/mod/semver" - - "tags.cncf.io/container-device-interface/pkg/parser" - cdi "tags.cncf.io/container-device-interface/specs-go" ) const ( - // CurrentVersion is the current version of the CDI Spec. - CurrentVersion = cdi.CurrentVersion + // CurrentVersion is the current version of the Spec. + CurrentVersion = "1.0.0" // vCurrent is the current version as a semver-comparable type vCurrent version = "v" + CurrentVersion @@ -41,6 +39,7 @@ const ( v060 version = "v0.6.0" v070 version = "v0.7.0" v080 version = "v0.8.0" + v100 version = "v1.0.0" // vEarliest is the earliest supported version of the CDI specification vEarliest version = v030 @@ -58,10 +57,29 @@ var validSpecVersions = requiredVersionMap{ v060: requiresV060, v070: requiresV070, v080: requiresV080, + v100: requiresV100, +} + +// ValidateVersion checks whether the specified spec version is valid. +// In addition to checking whether the spec version is in the set of known versions, +// the spec is inspected to determine whether the features used are available in specified +// version. +func ValidateVersion(spec *Spec) error { + if !validSpecVersions.isValidVersion(spec.Version) { + return fmt.Errorf("invalid version %q", spec.Version) + } + minVersion, err := MinimumRequiredVersion(spec) + if err != nil { + return fmt.Errorf("could not determine minimum required version: %w", err) + } + if newVersion(minVersion).isGreaterThan(newVersion(spec.Version)) { + return fmt.Errorf("the spec version must be at least v%v", minVersion) + } + return nil } // MinimumRequiredVersion determines the minimum spec version for the input spec. -func MinimumRequiredVersion(spec *cdi.Spec) (string, error) { +func MinimumRequiredVersion(spec *Spec) (string, error) { minVersion := validSpecVersions.requiredVersion(spec) return minVersion.String(), nil } @@ -80,17 +98,17 @@ func (v version) String() string { return strings.TrimPrefix(string(v), "v") } -// IsGreaterThan checks with a version is greater than the specified version. -func (v version) IsGreaterThan(o version) bool { +// isGreaterThan checks with a version is greater than the specified version. +func (v version) isGreaterThan(o version) bool { return semver.Compare(string(v), string(o)) > 0 } -// IsLatest checks whether the version is the latest supported version -func (v version) IsLatest() bool { +// isLatest checks whether the version is the latest supported version +func (v version) isLatest() bool { return v == vCurrent } -type requiredFunc func(*cdi.Spec) bool +type requiredFunc func(*Spec) bool type requiredVersionMap map[version]requiredFunc @@ -103,18 +121,18 @@ func (r requiredVersionMap) isValidVersion(specVersion string) bool { } // requiredVersion returns the minimum version required for the given spec -func (r requiredVersionMap) requiredVersion(spec *cdi.Spec) version { +func (r requiredVersionMap) requiredVersion(spec *Spec) version { minVersion := vEarliest for v, isRequired := range validSpecVersions { if isRequired == nil { continue } - if isRequired(spec) && v.IsGreaterThan(minVersion) { + if isRequired(spec) && v.isGreaterThan(minVersion) { minVersion = v } // If we have already detected the latest version then no later version could be detected - if minVersion.IsLatest() { + if minVersion.isLatest() { break } } @@ -122,15 +140,22 @@ func (r requiredVersionMap) requiredVersion(spec *cdi.Spec) version { return minVersion } +// requiresV100 returns true if the spec uses v1.0.0 features. +// Since the v1.0.0 spec bump was due to moving the minimum version checks to +// the spec package, there are no explicit spec changes. +func requiresV100(_ *Spec) bool { + return false +} + // requiresV080 returns true if the spec uses v0.8.0 features. // Since the v0.8.0 spec bump was due to the removed .ToOCI functions on the -// spec types, there are explicit spec changes. -func requiresV080(_ *cdi.Spec) bool { +// spec types, there are no explicit spec changes. +func requiresV080(_ *Spec) bool { return false } // requiresV070 returns true if the spec uses v0.7.0 features -func requiresV070(spec *cdi.Spec) bool { +func requiresV070(spec *Spec) bool { if spec.ContainerEdits.IntelRdt != nil { return true } @@ -153,7 +178,7 @@ func requiresV070(spec *cdi.Spec) bool { } // requiresV060 returns true if the spec uses v0.6.0 features -func requiresV060(spec *cdi.Spec) bool { +func requiresV060(spec *Spec) bool { // The v0.6.0 spec allows annotations to be specified at a spec level for range spec.Annotations { return true @@ -167,23 +192,20 @@ func requiresV060(spec *cdi.Spec) bool { } // The v0.6.0 spec allows dots "." in Kind name label (class) - vendor, class := parser.ParseQualifier(spec.Kind) - if vendor != "" { - if strings.ContainsRune(class, '.') { - return true - } + if !strings.Contains(spec.Kind, "/") { + return false } - - return false + class := strings.SplitN(spec.Kind, "/", 2)[1] + return strings.Contains(class, ".") } // requiresV050 returns true if the spec uses v0.5.0 features -func requiresV050(spec *cdi.Spec) bool { - var edits []*cdi.ContainerEdits +func requiresV050(spec *Spec) bool { + var edits []*ContainerEdits for _, d := range spec.Devices { - // The v0.5.0 spec allowed device names to start with a digit instead of requiring a letter - if len(d.Name) > 0 && !parser.IsLetter(rune(d.Name[0])) { + // The v0.5.0 spec allowed device name to start with a digit + if len(d.Name) > 0 && '0' <= d.Name[0] && d.Name[0] <= '9' { return true } edits = append(edits, &d.ContainerEdits) @@ -202,8 +224,8 @@ func requiresV050(spec *cdi.Spec) bool { } // requiresV040 returns true if the spec uses v0.4.0 features -func requiresV040(spec *cdi.Spec) bool { - var edits []*cdi.ContainerEdits +func requiresV040(spec *Spec) bool { + var edits []*ContainerEdits for _, d := range spec.Devices { edits = append(edits, &d.ContainerEdits) diff --git a/versions.mk b/versions.mk index b45626f5e..6c7045ec5 100644 --- a/versions.mk +++ b/versions.mk @@ -13,8 +13,8 @@ # limitations under the License. LIB_NAME := nvidia-container-toolkit -LIB_VERSION := 1.16.1 -LIB_TAG := +LIB_VERSION := 1.18.0 +LIB_TAG := rc.2 # The package version is the combination of the library version and tag. # If the tag is specified the two components are joined with a tilde (~). @@ -30,3 +30,10 @@ GIT_COMMIT ?= $(shell git describe --match="" --dirty --long --always --abbrev=4 GIT_COMMIT_SHORT ?= $(shell git rev-parse --short HEAD 2> /dev/null || echo "") GIT_BRANCH ?= $(shell git rev-parse --abbrev-ref HEAD 2> /dev/null || echo "${GIT_COMMIT}") SOURCE_DATE_EPOCH ?= $(shell git log -1 --format=%ct 2> /dev/null || echo "") + +ifeq ($(IMAGE_NAME),) +REGISTRY ?= nvidia +IMAGE_NAME := $(REGISTRY)/container-toolkit +endif + +VERSION ?= $(LIB_VERSION)$(if $(LIB_TAG),-$(LIB_TAG))